{"version":3,"file":"static/js/main.07958bb4.js","mappings":"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","sources":["../node_modules/@fortawesome/free-solid-svg-icons/faArrowUpRightFromSquare.js","../node_modules/@fortawesome/free-solid-svg-icons/faExternalLinkAlt.js","../node_modules/@fortawesome/free-solid-svg-icons/faUpRightFromSquare.js","../node_modules/@fortawesome/pro-regular-svg-icons/faTriangle.js","../node_modules/@hortplus/traplog-react/node_modules/highcharts/highcharts.src.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/mode_handler.js","../node_modules/@mapbox/mapbox-gl-draw/node_modules/@mapbox/geojson-area/index.js","../node_modules/@mapbox/mapbox-gl-draw/node_modules/wgs84/index.js","../node_modules/@mapbox/mapbox-gl-draw/src/constants.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/sort_features.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/map_event_to_bounding_box.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/string_set.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/features_at.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/get_features_and_set_cursor.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/euclidean_distance.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/is_click.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/is_tap.js","../node_modules/@mapbox/mapbox-gl-draw/node_modules/hat/index.js","../node_modules/@mapbox/mapbox-gl-draw/src/feature_types/feature.js","../node_modules/@mapbox/mapbox-gl-draw/src/feature_types/point.js","../node_modules/@mapbox/mapbox-gl-draw/src/feature_types/line_string.js","../node_modules/@mapbox/mapbox-gl-draw/src/feature_types/polygon.js","../node_modules/@mapbox/mapbox-gl-draw/src/feature_types/multi_feature.js","../node_modules/@mapbox/mapbox-gl-draw/src/modes/mode_interface_accessors.js","../node_modules/@mapbox/mapbox-gl-draw/src/modes/mode_interface.js","../node_modules/@mapbox/mapbox-gl-draw/src/modes/object_to_mode.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/to_dense_array.js","../node_modules/@mapbox/mapbox-gl-draw/src/render.js","../node_modules/@mapbox/mapbox-gl-draw/src/store.js","../node_modules/@mapbox/mapbox-gl-draw/node_modules/xtend/immutable.js","../node_modules/@mapbox/mapbox-gl-draw/src/ui.js","../node_modules/@mapbox/mapbox-gl-draw/src/setup.js","../node_modules/@mapbox/mapbox-gl-draw/src/events.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/theme.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/common_selectors.js","../node_modules/@mapbox/mapbox-gl-draw/node_modules/@mapbox/point-geometry/index.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/mouse_event_point.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/create_vertex.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/create_midpoint.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/create_supplementary_points.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/double_click_zoom.js","../node_modules/@mapbox/mapbox-gl-draw/node_modules/@mapbox/geojson-normalize/index.js","../node_modules/@mapbox/mapbox-gl-draw/node_modules/geojson-flatten/dist/index.es.js","../node_modules/@mapbox/mapbox-gl-draw/node_modules/@mapbox/geojson-coords/index.js","../node_modules/@mapbox/mapbox-gl-draw/node_modules/@mapbox/geojson-coords/flatten.js","../node_modules/@mapbox/mapbox-gl-draw/node_modules/traverse/index.js","../node_modules/@mapbox/mapbox-gl-draw/node_modules/@mapbox/extent/index.js","../node_modules/@mapbox/mapbox-gl-draw/node_modules/@mapbox/geojson-extent/index.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/constrain_feature_movement.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/move_features.js","../node_modules/@mapbox/mapbox-gl-draw/src/modes/simple_select.js","../node_modules/@mapbox/mapbox-gl-draw/src/modes/direct_select.js","../node_modules/@mapbox/mapbox-gl-draw/src/modes/draw_point.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/is_event_at_coordinates.js","../node_modules/@mapbox/mapbox-gl-draw/src/modes/draw_polygon.js","../node_modules/@mapbox/mapbox-gl-draw/src/modes/draw_line_string.js","../node_modules/@mapbox/mapbox-gl-draw/src/modes/index.js","../node_modules/@mapbox/mapbox-gl-draw/src/options.js","../node_modules/@mapbox/mapbox-gl-draw/node_modules/lodash.isequal/index.js","../node_modules/@mapbox/mapbox-gl-draw/src/lib/string_sets_are_equal.js","../node_modules/@mapbox/mapbox-gl-draw/src/api.js","../node_modules/@mapbox/mapbox-gl-draw/index.js","../node_modules/bowser/es5.js","../node_modules/classnames/index.js","../node_modules/deepmerge/dist/cjs.js","../node_modules/error-stack-parser/error-stack-parser.js","../node_modules/fast-xml-parser/src/fxp.js","../node_modules/fast-xml-parser/src/util.js","../node_modules/fast-xml-parser/src/validator.js","../node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","../node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","../node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","../node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","../node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","../node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","../node_modules/fast-xml-parser/src/xmlparser/node2json.js","../node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","../node_modules/file-saver/src/FileSaver.js","../node_modules/hammerjs/hammer.js","../../../../../../webpack/universalModuleDefinition","../../../../../../webpack/bootstrap 06abc0fd1cd6e6cc78b4","../../../../../../highcharts-react.min.js","../../../../../../src/HighchartsReact.js","../../../../../../external {\"root\":\"React\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\"}","../node_modules/highcharts/highcharts-more.src.js","../node_modules/highcharts/highcharts.src.js","../node_modules/highcharts/modules/pattern-fill.src.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/invariant/browser.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arrayReduce.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_asciiWords.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseHas.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_basePropertyOf.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_createCompounder.js","../node_modules/lodash/_deburrLetter.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_hasUnicodeWord.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/_unicodeWords.js","../node_modules/lodash/camelCase.js","../node_modules/lodash/capitalize.js","../node_modules/lodash/deburr.js","../node_modules/lodash/eq.js","../node_modules/lodash/get.js","../node_modules/lodash/has.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/identity.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/mapKeys.js","../node_modules/lodash/mapValues.js","../node_modules/lodash/memoize.js","../node_modules/lodash/property.js","../node_modules/lodash/snakeCase.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/toString.js","../node_modules/lodash/upperFirst.js","../node_modules/lodash/words.js","../node_modules/mapbox-gl/src/util/browser/window.js","../node_modules/mapbox-gl/node_modules/@mapbox/unitbezier/index.js","../node_modules/mapbox-gl/node_modules/@mapbox/point-geometry/index.js","../node_modules/mapbox-gl/src/util/util.js","../node_modules/mapbox-gl/src/util/performance.js","../node_modules/mapbox-gl/src/util/browser.js","../node_modules/mapbox-gl/src/util/config.js","../node_modules/mapbox-gl/src/util/webp_supported.js","../node_modules/mapbox-gl/src/util/sku_token.js","../node_modules/mapbox-gl/src/util/mapbox.js","../node_modules/mapbox-gl/src/util/tile_request_cache.js","../node_modules/mapbox-gl/src/util/ajax.js","../node_modules/mapbox-gl/src/util/evented.js","../node_modules/mapbox-gl/src/style-spec/util/extend.js","../node_modules/mapbox-gl/src/style-spec/util/unbundle_jsonlint.js","../node_modules/mapbox-gl/src/style-spec/expression/parsing_error.js","../node_modules/mapbox-gl/src/style-spec/expression/scope.js","../node_modules/mapbox-gl/src/style-spec/expression/types.js","../node_modules/mapbox-gl/node_modules/csscolorparser/csscolorparser.js","../node_modules/mapbox-gl/src/style-spec/util/color.js","../node_modules/mapbox-gl/src/style-spec/expression/types/collator.js","../node_modules/mapbox-gl/src/style-spec/expression/types/formatted.js","../node_modules/mapbox-gl/src/style-spec/expression/types/resolved_image.js","../node_modules/mapbox-gl/src/style-spec/expression/values.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/literal.js","../node_modules/mapbox-gl/src/style-spec/expression/runtime_error.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/assertion.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/format.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/image.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/coercion.js","../node_modules/mapbox-gl/src/style-spec/expression/evaluation_context.js","../node_modules/mapbox-gl/src/style-spec/expression/compound_expression.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/collator.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/within.js","../node_modules/mapbox-gl/src/style-spec/expression/is_constant.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/var.js","../node_modules/mapbox-gl/src/style-spec/expression/parsing_context.js","../node_modules/mapbox-gl/src/style-spec/expression/stops.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/step.js","../node_modules/mapbox-gl/src/style-spec/util/interpolate.js","../node_modules/mapbox-gl/src/style-spec/util/color_spaces.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/interpolate.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/coalesce.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/let.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/at.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/in.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/index_of.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/match.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/case.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/slice.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/comparison.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/number_format.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/length.js","../node_modules/mapbox-gl/src/style-spec/expression/definitions/index.js","../node_modules/mapbox-gl/src/style-spec/util/result.js","../node_modules/mapbox-gl/src/style-spec/util/properties.js","../node_modules/mapbox-gl/src/style-spec/util/get_type.js","../node_modules/mapbox-gl/src/style-spec/function/index.js","../node_modules/mapbox-gl/src/style-spec/expression/index.js","../node_modules/mapbox-gl/src/style-spec/error/validation_error.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_object.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_array.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_number.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_function.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_expression.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_enum.js","../node_modules/mapbox-gl/src/style-spec/feature_filter/index.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_filter.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_property.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_paint_property.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_layout_property.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_layer.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_string.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_source.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_light.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_terrain.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_fog.js","../node_modules/mapbox-gl/src/style-spec/validate/validate.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_boolean.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_color.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_formatted.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_image.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_projection.js","../node_modules/mapbox-gl/src/style-spec/validate/validate_glyphs_url.js","../node_modules/mapbox-gl/src/style-spec/validate_style.min.js","../node_modules/mapbox-gl/src/style/validate_style.js","../node_modules/mapbox-gl/node_modules/grid-index/grid-index.js","../node_modules/mapbox-gl/src/util/web_worker_transfer.js","../node_modules/mapbox-gl/src/style/zoom_history.js","../node_modules/mapbox-gl/src/util/is_char_in_unicode_block.js","../node_modules/mapbox-gl/src/util/script_detection.js","../node_modules/mapbox-gl/src/source/rtl_text_plugin.js","../node_modules/mapbox-gl/src/style/evaluation_parameters.js","../node_modules/mapbox-gl/src/style/properties.js","../node_modules/mapbox-gl/src/shaders/encode_attribute.js","../node_modules/mapbox-gl/src/util/struct_array.js","../node_modules/mapbox-gl/src/data/array_types.js","../node_modules/mapbox-gl/src/data/bucket/pattern_attributes.js","../node_modules/mapbox-gl/src/data/bucket/dash_attributes.js","../node_modules/mapbox-gl/node_modules/murmurhash-js/murmurhash3_gc.js","../node_modules/mapbox-gl/node_modules/murmurhash-js/murmurhash2_gc.js","../node_modules/mapbox-gl/node_modules/murmurhash-js/index.js","../node_modules/mapbox-gl/src/data/feature_position_map.js","../node_modules/mapbox-gl/src/render/uniform_binding.js","../node_modules/mapbox-gl/src/data/program_configuration.js","../node_modules/mapbox-gl/src/style/style_layer.js","../node_modules/mapbox-gl/src/data/bucket/circle_attributes.js","../node_modules/mapbox-gl/src/data/segment.js","../node_modules/mapbox-gl/src/data/extent.js","../node_modules/mapbox-gl/src/geo/lng_lat_bounds.js","../node_modules/mapbox-gl/src/geo/lng_lat.js","../node_modules/mapbox-gl/src/geo/mercator_coordinate.js","../node_modules/mapbox-gl/src/geo/projection/resample.js","../node_modules/mapbox-gl/src/data/load_geometry.js","../node_modules/mapbox-gl/src/data/evaluation_feature.js","../node_modules/mapbox-gl/src/data/bucket/circle_bucket.js","../node_modules/mapbox-gl/src/util/intersection_tests.js","../node_modules/mapbox-gl/src/style/query_utils.js","../node_modules/mapbox-gl/src/style/style_layer/circle_style_layer_properties.js","../node_modules/mapbox-gl/node_modules/gl-matrix/esm/common.js","../node_modules/mapbox-gl/node_modules/gl-matrix/esm/mat3.js","../node_modules/mapbox-gl/node_modules/gl-matrix/esm/mat4.js","../node_modules/mapbox-gl/node_modules/gl-matrix/esm/vec3.js","../node_modules/mapbox-gl/node_modules/gl-matrix/esm/vec4.js","../node_modules/mapbox-gl/node_modules/gl-matrix/esm/quat.js","../node_modules/mapbox-gl/src/util/primitives.js","../node_modules/mapbox-gl/src/style/style_layer/circle_style_layer.js","../node_modules/mapbox-gl/src/data/bucket/heatmap_bucket.js","../node_modules/mapbox-gl/src/util/image.js","../node_modules/mapbox-gl/src/style/style_layer/heatmap_style_layer_properties.js","../node_modules/mapbox-gl/src/util/color_ramp.js","../node_modules/mapbox-gl/src/style/style_layer/hillshade_style_layer_properties.js","../node_modules/mapbox-gl/src/data/bucket/fill_attributes.js","../node_modules/mapbox-gl/node_modules/earcut/src/earcut.js","../node_modules/mapbox-gl/node_modules/quickselect/index.js","../node_modules/mapbox-gl/src/util/classify_rings.js","../node_modules/mapbox-gl/src/data/bucket/pattern_bucket_features.js","../node_modules/mapbox-gl/src/data/bucket/fill_bucket.js","../node_modules/mapbox-gl/src/style/style_layer/fill_style_layer_properties.js","../node_modules/mapbox-gl/src/data/bucket/fill_extrusion_attributes.js","../node_modules/mapbox-gl/node_modules/@mapbox/vector-tile/lib/vectortilefeature.js","../node_modules/mapbox-gl/node_modules/@mapbox/vector-tile/lib/vectortilelayer.js","../node_modules/mapbox-gl/node_modules/@mapbox/vector-tile/lib/vectortile.js","../node_modules/mapbox-gl/node_modules/@mapbox/vector-tile/index.js","../node_modules/mapbox-gl/src/util/polygon_clipping.js","../node_modules/mapbox-gl/src/data/bucket/fill_extrusion_bucket.js","../node_modules/mapbox-gl/src/style/style_layer/fill_extrusion_style_layer_properties.js","../node_modules/mapbox-gl/node_modules/@mapbox/whoots-js/index.mjs","../node_modules/mapbox-gl/src/source/tile_id.js","../node_modules/mapbox-gl/src/style/style_layer/fill_extrusion_style_layer.js","../node_modules/mapbox-gl/src/data/bucket/line_attributes.js","../node_modules/mapbox-gl/src/data/bucket/line_attributes_ext.js","../node_modules/mapbox-gl/src/data/bucket/line_bucket.js","../node_modules/mapbox-gl/src/style/style_layer/line_style_layer_properties.js","../node_modules/mapbox-gl/src/style/style_layer/line_style_layer.js","../node_modules/mapbox-gl/src/data/bucket/symbol_attributes.js","../node_modules/mapbox-gl/src/symbol/one_em.js","../node_modules/mapbox-gl/src/symbol/symbol_size.js","../node_modules/mapbox-gl/src/symbol/transform_text.js","../node_modules/mapbox-gl/src/util/verticalize_punctuation.js","../node_modules/mapbox-gl/node_modules/ieee754/index.js","../node_modules/mapbox-gl/node_modules/pbf/index.js","../node_modules/mapbox-gl/src/style/parse_glyph_pbf.js","../node_modules/mapbox-gl/node_modules/potpack/index.mjs","../node_modules/mapbox-gl/src/render/image_atlas.js","../node_modules/mapbox-gl/src/symbol/shaping.js","../node_modules/mapbox-gl/src/symbol/anchor.js","../node_modules/mapbox-gl/src/symbol/check_max_angle.js","../node_modules/mapbox-gl/src/symbol/get_anchors.js","../node_modules/mapbox-gl/src/symbol/clip_line.js","../node_modules/mapbox-gl/node_modules/@mapbox/tiny-sdf/index.js","../node_modules/mapbox-gl/src/render/glyph_manager.js","../node_modules/mapbox-gl/src/symbol/quads.js","../node_modules/mapbox-gl/src/style/load_glyph_range.js","../node_modules/mapbox-gl/node_modules/tinyqueue/index.js","../node_modules/mapbox-gl/src/util/find_pole_of_inaccessibility.js","../node_modules/mapbox-gl/src/symbol/symbol_layout.js","../node_modules/mapbox-gl/src/terrain/globe_attributes.js","../node_modules/mapbox-gl/src/data/pos_attributes.js","../node_modules/mapbox-gl/src/geo/projection/globe_util.js","../node_modules/mapbox-gl/src/geo/projection/far_z.js","../node_modules/mapbox-gl/src/geo/projection/tile_transform.js","../node_modules/mapbox-gl/src/geo/projection/projection.js","../node_modules/mapbox-gl/src/geo/projection/albers.js","../node_modules/mapbox-gl/src/geo/projection/equal_earth.js","../node_modules/mapbox-gl/src/geo/projection/equirectangular.js","../node_modules/mapbox-gl/src/geo/projection/lambert.js","../node_modules/mapbox-gl/src/geo/projection/mercator.js","../node_modules/mapbox-gl/src/geo/projection/natural_earth.js","../node_modules/mapbox-gl/src/geo/projection/winkel_tripel.js","../node_modules/mapbox-gl/src/geo/projection/cylindrical_equal_area.js","../node_modules/mapbox-gl/src/geo/projection/globe.js","../node_modules/mapbox-gl/src/geo/projection/index.js","../node_modules/mapbox-gl/src/data/bucket/symbol_bucket.js","../node_modules/mapbox-gl/src/symbol/mergelines.js","../node_modules/mapbox-gl/src/style/style_layer/symbol_style_layer_properties.js","../node_modules/mapbox-gl/src/style/format_section_override.js","../node_modules/mapbox-gl/src/style/style_layer/symbol_style_layer.js","../node_modules/mapbox-gl/src/util/resolve_tokens.js","../node_modules/mapbox-gl/src/style/style_layer/background_style_layer_properties.js","../node_modules/mapbox-gl/src/style/style_layer/raster_style_layer_properties.js","../node_modules/mapbox-gl/src/style/style_layer/custom_style_layer.js","../node_modules/mapbox-gl/src/style/style_layer/sky_style_layer_properties.js","../node_modules/mapbox-gl/src/style/style_layer/sky_style_layer.js","../node_modules/mapbox-gl/src/style/create_style_layer.js","../node_modules/mapbox-gl/src/style/style_layer/heatmap_style_layer.js","../node_modules/mapbox-gl/src/style/style_layer/hillshade_style_layer.js","../node_modules/mapbox-gl/src/style/style_layer/fill_style_layer.js","../node_modules/mapbox-gl/src/style/style_layer/background_style_layer.js","../node_modules/mapbox-gl/src/style/style_layer/raster_style_layer.js","../node_modules/mapbox-gl/src/render/texture.js","../node_modules/mapbox-gl/src/render/line_atlas.js","../node_modules/mapbox-gl/src/util/throttled_invoker.js","../node_modules/mapbox-gl/src/util/scheduler.js","../node_modules/mapbox-gl/src/util/dictionary_coder.js","../node_modules/mapbox-gl/src/util/vectortile_to_geojson.js","../node_modules/mapbox-gl/src/source/tile_mesh.js","../node_modules/mapbox-gl/src/data/bounds_attributes.js","../node_modules/mapbox-gl/src/source/tile.js","../node_modules/mapbox-gl/src/data/bucket.js","../node_modules/mapbox-gl/src/source/source_state.js","../node_modules/mapbox-gl/src/data/dem_tree.js","../node_modules/mapbox-gl/src/data/dem_data.js","../node_modules/mapbox-gl/src/source/tile_cache.js","../node_modules/mapbox-gl/src/gl/depth_mode.js","../node_modules/mapbox-gl/src/gl/stencil_mode.js","../node_modules/mapbox-gl/src/gl/color_mode.js","../node_modules/mapbox-gl/src/gl/cull_face_mode.js","../node_modules/mapbox-gl/src/source/source_cache.js","../node_modules/mapbox-gl/src/terrain/elevation.js","../node_modules/mapbox-gl/src/data/feature_index.js","../node_modules/mapbox-gl/src/render/glyph_atlas.js","../node_modules/mapbox-gl/src/source/worker_tile.js","../node_modules/mapbox-gl/src/source/vector_tile_worker_source.js","../node_modules/mapbox-gl/src/util/actor.js","../node_modules/mapbox-gl/src/style-spec/util/ref_properties.js","../node_modules/mapbox-gl/src/style-spec/group_by_layout.js","../node_modules/mapbox-gl/src/style/style_layer_index.js","../node_modules/mapbox-gl/src/source/raster_dem_tile_worker_source.js","../node_modules/mapbox-gl/node_modules/@mapbox/geojson-rewind/index.js","../node_modules/mapbox-gl/src/source/geojson_wrapper.js","../node_modules/mapbox-gl/node_modules/vt-pbf/lib/geojson_wrapper.js","../node_modules/mapbox-gl/node_modules/vt-pbf/index.js","../node_modules/mapbox-gl/node_modules/kdbush/src/sort.js","../node_modules/mapbox-gl/node_modules/kdbush/src/within.js","../node_modules/mapbox-gl/node_modules/kdbush/src/index.js","../node_modules/mapbox-gl/node_modules/kdbush/src/range.js","../node_modules/mapbox-gl/node_modules/supercluster/index.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/simplify.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/feature.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/convert.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/clip.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/wrap.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/transform.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/tile.js","../node_modules/mapbox-gl/node_modules/geojson-vt/src/index.js","../node_modules/mapbox-gl/src/source/geojson_worker_source.js","../node_modules/mapbox-gl/src/source/worker.js","../node_modules/mapbox-gl/src/style-spec/util/deep_equal.js","../node_modules/mapbox-gl/node_modules/@mapbox/mapbox-gl-supported/index.js","../node_modules/mapbox-gl/src/util/dom.js","../node_modules/mapbox-gl/node_modules/gl-matrix/esm/mat2.js","../node_modules/mapbox-gl/src/style/style_image.js","../node_modules/mapbox-gl/src/render/image_manager.js","../node_modules/mapbox-gl/src/style/light.js","../node_modules/mapbox-gl/src/style/terrain.js","../node_modules/mapbox-gl/src/style/fog_helpers.js","../node_modules/mapbox-gl/src/style/fog.js","../node_modules/mapbox-gl/src/util/dispatcher.js","../node_modules/mapbox-gl/src/source/pixels_to_tile_units.js","../node_modules/mapbox-gl/src/style/query_geometry.js","../node_modules/mapbox-gl/src/source/load_tilejson.js","../node_modules/mapbox-gl/src/source/tile_bounds.js","../node_modules/mapbox-gl/src/gl/index_buffer.js","../node_modules/mapbox-gl/src/gl/vertex_buffer.js","../node_modules/mapbox-gl/src/gl/value.js","../node_modules/mapbox-gl/src/gl/framebuffer.js","../node_modules/mapbox-gl/src/gl/context.js","../node_modules/mapbox-gl/src/source/raster_tile_source.js","../node_modules/mapbox-gl/src/util/offscreen_canvas_supported.js","../node_modules/mapbox-gl/src/source/image_source.js","../node_modules/mapbox-gl/src/source/source.js","../node_modules/mapbox-gl/src/source/vector_tile_source.js","../node_modules/mapbox-gl/src/source/raster_dem_tile_source.js","../node_modules/mapbox-gl/src/source/geojson_source.js","../node_modules/mapbox-gl/src/source/video_source.js","../node_modules/mapbox-gl/src/source/canvas_source.js","../node_modules/mapbox-gl/src/source/custom_source.js","../node_modules/mapbox-gl/src/source/query_features.js","../node_modules/mapbox-gl/src/util/browser/web_worker.js","../node_modules/mapbox-gl/src/util/worker_pool.js","../node_modules/mapbox-gl/src/util/global_worker_pool.js","../node_modules/mapbox-gl/src/style-spec/deref.js","../node_modules/mapbox-gl/src/style-spec/diff.js","../node_modules/mapbox-gl/src/symbol/path_interpolator.js","../node_modules/mapbox-gl/src/symbol/grid_index.js","../node_modules/mapbox-gl/src/symbol/projection.js","../node_modules/mapbox-gl/src/symbol/collision_index.js","../node_modules/mapbox-gl/src/geo/projection/projection_util.js","../node_modules/mapbox-gl/src/symbol/placement.js","../node_modules/mapbox-gl/src/style/pauseable_placement.js","../node_modules/mapbox-gl/src/symbol/cross_tile_symbol_index.js","../node_modules/mapbox-gl/src/style/style.js","../node_modules/mapbox-gl/src/style-spec/empty.js","../node_modules/mapbox-gl/src/style/load_sprite.js","../node_modules/mapbox-gl/src/shaders/shaders.js","../node_modules/mapbox-gl/src/render/vertex_array_object.js","../node_modules/mapbox-gl/src/render/program/hillshade_program.js","../node_modules/mapbox-gl/src/render/draw_hillshade.js","../node_modules/mapbox-gl/src/terrain/terrain_raster_program.js","../node_modules/mapbox-gl/src/terrain/globe_raster_program.js","../node_modules/mapbox-gl/src/terrain/draw_terrain_raster.js","../node_modules/mapbox-gl/src/render/program/clipping_mask_program.js","../node_modules/mapbox-gl/src/render/raster_fade.js","../node_modules/mapbox-gl/src/terrain/terrain.js","../node_modules/mapbox-gl/src/render/program.js","../node_modules/mapbox-gl/src/render/fog.js","../node_modules/mapbox-gl/src/render/program/pattern.js","../node_modules/mapbox-gl/src/render/program/fill_extrusion_program.js","../node_modules/mapbox-gl/src/render/program/fill_program.js","../node_modules/mapbox-gl/src/render/program/circle_program.js","../node_modules/mapbox-gl/src/render/program/collision_program.js","../node_modules/mapbox-gl/src/render/program/debug_program.js","../node_modules/mapbox-gl/src/render/program/heatmap_program.js","../node_modules/mapbox-gl/src/render/program/line_program.js","../node_modules/mapbox-gl/src/render/program/raster_program.js","../node_modules/mapbox-gl/src/render/program/symbol_program.js","../node_modules/mapbox-gl/src/render/program/background_program.js","../node_modules/mapbox-gl/src/render/program/program_uniforms.js","../node_modules/mapbox-gl/src/render/program/skybox_program.js","../node_modules/mapbox-gl/src/render/program/skybox_capture_program.js","../node_modules/mapbox-gl/src/render/draw_collision_debug.js","../node_modules/mapbox-gl/src/render/draw_symbol.js","../node_modules/mapbox-gl/src/render/draw_fill.js","../node_modules/mapbox-gl/src/render/draw_fill_extrusion.js","../node_modules/mapbox-gl/src/render/draw_debug.js","../node_modules/mapbox-gl/src/render/skybox_attributes.js","../node_modules/mapbox-gl/src/render/skybox_geometry.js","../node_modules/mapbox-gl/src/render/draw_sky.js","../node_modules/mapbox-gl/src/render/atmosphere_attributes.js","../node_modules/mapbox-gl/src/render/atmosphere_buffer.js","../node_modules/mapbox-gl/src/render/painter.js","../node_modules/mapbox-gl/src/render/draw_circle.js","../node_modules/mapbox-gl/src/render/draw_heatmap.js","../node_modules/mapbox-gl/src/render/draw_line.js","../node_modules/mapbox-gl/src/render/draw_raster.js","../node_modules/mapbox-gl/src/render/draw_background.js","../node_modules/mapbox-gl/src/render/draw_custom.js","../node_modules/mapbox-gl/src/render/draw_atmosphere.js","../node_modules/mapbox-gl/src/geo/edge_insets.js","../node_modules/mapbox-gl/src/ui/free_camera.js","../node_modules/mapbox-gl/src/geo/projection/adjustments.js","../node_modules/mapbox-gl/src/geo/transform.js","../node_modules/mapbox-gl/src/util/throttle.js","../node_modules/mapbox-gl/src/ui/hash.js","../node_modules/mapbox-gl/src/ui/handler_inertia.js","../node_modules/mapbox-gl/src/ui/events.js","../node_modules/mapbox-gl/src/ui/handler/map_event.js","../node_modules/mapbox-gl/src/ui/handler/box_zoom.js","../node_modules/mapbox-gl/src/ui/handler/handler_util.js","../node_modules/mapbox-gl/src/ui/handler/tap_recognizer.js","../node_modules/mapbox-gl/src/ui/handler/tap_zoom.js","../node_modules/mapbox-gl/src/ui/handler/mouse.js","../node_modules/mapbox-gl/src/ui/handler/touch_pan.js","../node_modules/mapbox-gl/src/ui/handler/touch_zoom_rotate.js","../node_modules/mapbox-gl/src/ui/handler/keyboard.js","../node_modules/mapbox-gl/src/ui/handler/scroll_zoom.js","../node_modules/mapbox-gl/src/ui/handler/shim/dblclick_zoom.js","../node_modules/mapbox-gl/src/ui/handler/click_zoom.js","../node_modules/mapbox-gl/src/ui/handler/tap_drag_zoom.js","../node_modules/mapbox-gl/src/ui/handler/shim/drag_pan.js","../node_modules/mapbox-gl/src/ui/handler/shim/drag_rotate.js","../node_modules/mapbox-gl/src/ui/handler/shim/touch_zoom_rotate.js","../node_modules/mapbox-gl/src/ui/handler_manager.js","../node_modules/mapbox-gl/src/ui/camera.js","../node_modules/mapbox-gl/src/ui/control/attribution_control.js","../node_modules/mapbox-gl/src/ui/control/logo_control.js","../node_modules/mapbox-gl/src/util/task_queue.js","../node_modules/mapbox-gl/src/util/smart_wrap.js","../node_modules/mapbox-gl/src/ui/anchor.js","../node_modules/mapbox-gl/src/ui/marker.js","../node_modules/mapbox-gl/src/util/eased_variable.js","../node_modules/mapbox-gl/src/ui/default_locale.js","../node_modules/mapbox-gl/src/ui/map.js","../node_modules/mapbox-gl/src/ui/control/navigation_control.js","../node_modules/mapbox-gl/src/ui/control/geolocate_control.js","../node_modules/mapbox-gl/src/ui/control/scale_control.js","../node_modules/mapbox-gl/src/ui/popup.js","../node_modules/mapbox-gl/src/index.js","../node_modules/mapbox-gl/src/ui/control/fullscreen_control.js","../node_modules/mapbox-gl/rollup/mapboxgl.js","../node_modules/moment-timezone/index.js","../node_modules/moment-timezone/moment-timezone.js","../node_modules/moment/moment.js","../node_modules/object-assign/index.js","../node_modules/prop-types-extra/lib/all.js","../node_modules/prop-types-extra/lib/isRequiredForA11y.js","../node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/property-expr/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-router/node_modules/isarray/index.js","../node_modules/react-router/node_modules/path-to-regexp/index.js","../node_modules/react-table/src/publicUtils.js","../node_modules/react-table/src/utils.js","../node_modules/react-table/src/makeDefaultPluginHooks.js","../node_modules/react-table/src/hooks/useColumnVisibility.js","../node_modules/react-table/src/hooks/useTable.js","../node_modules/react-table/src/plugin-hooks/useExpanded.js","../node_modules/react-table/src/filterTypes.js","../node_modules/react-table/src/plugin-hooks/useFilters.js","../node_modules/react-table/src/plugin-hooks/useGlobalFilter.js","../node_modules/react-table/src/aggregations.js","../node_modules/react-table/src/plugin-hooks/useGroupBy.js","../node_modules/react-table/src/sortTypes.js","../node_modules/react-table/src/plugin-hooks/useSortBy.js","../node_modules/react-table/src/plugin-hooks/usePagination.js","../node_modules/react-table/src/plugin-hooks/_UNSTABLE_usePivotColumns.js","../node_modules/react-table/src/plugin-hooks/useRowSelect.js","../node_modules/react-table/src/plugin-hooks/useRowState.js","../node_modules/react-table/src/plugin-hooks/useColumnOrder.js","../node_modules/react-table/src/plugin-hooks/useResizeColumns.js","../node_modules/react-table/src/plugin-hooks/useAbsoluteLayout.js","../node_modules/react-table/src/plugin-hooks/useBlockLayout.js","../node_modules/react-table/src/plugin-hooks/useFlexLayout.js","../node_modules/react-table/src/plugin-hooks/useGridLayout.js","../node_modules/react-table/index.js","../node_modules/react-to-print/lib/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/stackframe/stackframe.js","../node_modules/strnum/strnum.js","../node_modules/toposort/index.js","../node_modules/urijs/src/IPv6.js","../node_modules/urijs/src/SecondLevelDomains.js","../node_modules/urijs/src/URI.js","../node_modules/urijs/src/punycode.js","../node_modules/warning/warning.js","webpack://fruition-portal/./src/components/layout/layout.scss?65b0","../node_modules/mapbox-gl/dist/mapbox-gl-csp-worker.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/history/esm/history.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-router/modules/createNameContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/mobx/src/errors.ts","../node_modules/mobx/src/utils/global.ts","../node_modules/mobx/src/utils/utils.ts","../node_modules/mobx/src/api/decorators.ts","../node_modules/mobx/src/types/overrideannotation.ts","../node_modules/mobx/src/core/atom.ts","../node_modules/mobx/src/api/become-observed.ts","../node_modules/mobx/src/utils/comparer.ts","../node_modules/mobx/src/types/modifiers.ts","../node_modules/mobx/src/types/actionannotation.ts","../node_modules/mobx/src/types/flowannotation.ts","../node_modules/mobx/src/types/computedannotation.ts","../node_modules/mobx/src/types/observableannotation.ts","../node_modules/mobx/src/types/autoannotation.ts","../node_modules/mobx/src/api/observable.ts","../node_modules/mobx/src/types/dynamicobject.ts","../node_modules/mobx/src/api/computed.ts","../node_modules/mobx/src/core/action.ts","../node_modules/mobx/src/types/observablevalue.ts","../node_modules/mobx/src/core/computedvalue.ts","../node_modules/mobx/src/core/derivation.ts","../node_modules/mobx/src/core/observable.ts","../node_modules/mobx/src/core/globalstate.ts","../node_modules/mobx/src/core/reaction.ts","../node_modules/mobx/src/api/trace.ts","../node_modules/mobx/src/api/action.ts","../node_modules/mobx/src/api/autorun.ts","../node_modules/mobx/src/api/configure.ts","../node_modules/mobx/src/api/extendobservable.ts","../node_modules/mobx/src/api/extras.ts","../node_modules/mobx/src/api/flow.ts","../node_modules/mobx/src/api/isobservable.ts","../node_modules/mobx/src/api/transaction.ts","../node_modules/mobx/src/types/intercept-utils.ts","../node_modules/mobx/src/types/listen-utils.ts","../node_modules/mobx/src/api/makeObservable.ts","../node_modules/mobx/src/types/observablearray.ts","../node_modules/mobx/src/core/spy.ts","../node_modules/mobx/src/types/observablemap.ts","../node_modules/mobx/src/types/observableset.ts","../node_modules/mobx/src/types/observableobject.ts","../node_modules/mobx/src/types/legacyobservablearray.ts","../node_modules/mobx/src/types/type-utils.ts","../node_modules/mobx/src/utils/eq.ts","../node_modules/mobx/src/utils/iterable.ts","../node_modules/mobx-react-lite/src/utils/assertEnvironment.ts","../node_modules/mobx/src/mobx.ts","../node_modules/mobx-react-lite/src/utils/observerBatching.ts","../node_modules/mobx-react-lite/src/utils/printDebugValue.ts","../node_modules/mobx-react-lite/src/utils/UniversalFinalizationRegistry.ts","../node_modules/mobx-react-lite/src/utils/observerFinalizationRegistry.ts","../node_modules/mobx-react-lite/src/staticRendering.ts","../node_modules/mobx-react-lite/src/useObserver.ts","../node_modules/mobx-react-lite/src/observer.ts","../node_modules/mobx-react-lite/src/index.ts","../node_modules/mobx-react/src/utils/utils.ts","../node_modules/mobx-react/src/observerClass.ts","../node_modules/mobx-react/src/observer.tsx","../node_modules/mobx-react/src/index.ts","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/react-bootstrap/esm/Row.js","../node_modules/react-bootstrap/esm/Col.js","../node_modules/react-bootstrap/esm/createChainedFunction.js","../node_modules/react-bootstrap/esm/SafeAnchor.js","../node_modules/react-bootstrap/esm/Button.js","../node_modules/dom-helpers/esm/camelize.js","../node_modules/react-bootstrap/esm/createWithBsPrefix.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/react-bootstrap/esm/CardContext.js","../node_modules/react-bootstrap/esm/CardImg.js","../node_modules/react-bootstrap/esm/Card.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@floating-ui/core/dist/floating-ui.core.browser.min.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs","../node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/react-select/dist/useStateManager-7e1e8489.esm.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/react-select/dist/react-select.esm.js","../node_modules/react-bootstrap/esm/Spinner.js","../node_modules/react-bootstrap/esm/Feedback.js","../node_modules/react-bootstrap/esm/FormContext.js","../node_modules/react-bootstrap/esm/FormCheckInput.js","../node_modules/react-bootstrap/esm/FormCheckLabel.js","../node_modules/react-bootstrap/esm/FormCheck.js","../node_modules/react-bootstrap/esm/FormFileInput.js","../node_modules/react-bootstrap/esm/FormFileLabel.js","../node_modules/react-bootstrap/esm/FormFile.js","../node_modules/react-bootstrap/esm/FormControl.js","../node_modules/react-bootstrap/esm/FormGroup.js","../node_modules/react-bootstrap/esm/FormLabel.js","../node_modules/react-bootstrap/esm/FormText.js","../node_modules/react-bootstrap/esm/Switch.js","../node_modules/react-bootstrap/esm/Form.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/react-bootstrap/esm/NavContext.js","../node_modules/react-bootstrap/esm/SelectableContext.js","../node_modules/react-bootstrap/esm/TabContext.js","../node_modules/react-bootstrap/esm/AbstractNav.js","../node_modules/react-bootstrap/esm/NavItem.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/react-bootstrap/esm/AbstractNavItem.js","../node_modules/react-bootstrap/esm/NavLink.js","../node_modules/react-bootstrap/esm/Nav.js","../node_modules/react-bootstrap/esm/TabContainer.js","../node_modules/react-bootstrap/esm/TabContent.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/TabPane.js","../node_modules/react-bootstrap/esm/ElementChildren.js","../node_modules/react-bootstrap/esm/Tabs.js","../node_modules/react-bootstrap/esm/Tab.js","../node_modules/react-bootstrap/esm/InputGroup.js","../node_modules/react-bootstrap/esm/Table.js","../node_modules/react-bootstrap/esm/ButtonGroup.js","../node_modules/dom-helpers/esm/contains.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/@restart/hooks/esm/useTimeout.js","../node_modules/react-overlays/esm/safeFindDOMNode.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@restart/hooks/esm/useSafeState.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/react-overlays/esm/popper.js","../node_modules/react-overlays/esm/usePopper.js","../node_modules/react-overlays/esm/useRootClose.js","../node_modules/react-overlays/esm/ownerDocument.js","../node_modules/react-overlays/esm/useWaitForDOMRef.js","../node_modules/react-overlays/esm/mergeOptionsWithPopperConfig.js","../node_modules/react-overlays/esm/Overlay.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/react-bootstrap/esm/usePopperMarginModifiers.js","../node_modules/react-bootstrap/esm/Overlay.js","../node_modules/react-bootstrap/esm/OverlayTrigger.js","../node_modules/react-bootstrap/esm/PopoverTitle.js","../node_modules/react-bootstrap/esm/PopoverContent.js","../node_modules/react-bootstrap/esm/Popover.js","../node_modules/dom-helpers/esm/scrollbarSize.js","../node_modules/dom-helpers/esm/activeElement.js","../node_modules/@restart/hooks/esm/usePrevious.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/dom-helpers/esm/isWindow.js","../node_modules/dom-helpers/esm/isDocument.js","../node_modules/react-overlays/esm/isOverflowing.js","../node_modules/react-overlays/esm/manageAriaHidden.js","../node_modules/react-overlays/esm/ModalManager.js","../node_modules/react-overlays/esm/Modal.js","../node_modules/react-bootstrap/esm/BootstrapModalManager.js","../node_modules/react-bootstrap/esm/ModalBody.js","../node_modules/react-bootstrap/esm/ModalContext.js","../node_modules/react-bootstrap/esm/ModalDialog.js","../node_modules/react-bootstrap/esm/ModalFooter.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/ModalHeader.js","../node_modules/react-bootstrap/esm/Modal.js","../node_modules/react-bootstrap/esm/ModalTitle.js","../node_modules/formik/node_modules/deepmerge/dist/es.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_defineProperty.js","../node_modules/lodash-es/_baseAssignValue.js","../node_modules/lodash-es/_assignValue.js","../node_modules/lodash-es/_copyObject.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/isBuffer.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/_baseAssign.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/_baseKeysIn.js","../node_modules/lodash-es/keysIn.js","../node_modules/lodash-es/_baseAssignIn.js","../node_modules/lodash-es/_cloneBuffer.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_copySymbols.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_getSymbolsIn.js","../node_modules/lodash-es/_copySymbolsIn.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_getAllKeysIn.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/_initCloneArray.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/lodash-es/_cloneDataView.js","../node_modules/lodash-es/_cloneRegExp.js","../node_modules/lodash-es/_cloneSymbol.js","../node_modules/lodash-es/_cloneTypedArray.js","../node_modules/lodash-es/_initCloneByTag.js","../node_modules/lodash-es/_baseCreate.js","../node_modules/lodash-es/_initCloneObject.js","../node_modules/lodash-es/_baseIsMap.js","../node_modules/lodash-es/isMap.js","../node_modules/lodash-es/_baseIsSet.js","../node_modules/lodash-es/isSet.js","../node_modules/lodash-es/_baseClone.js","../node_modules/lodash-es/clone.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/toPath.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/lodash-es/cloneDeep.js","../node_modules/formik/src/utils.ts","../node_modules/formik/src/FormikContext.tsx","../node_modules/formik/src/Formik.tsx","../node_modules/formik/src/Form.tsx","../node_modules/formik/src/FieldArray.tsx","../node_modules/formik/src/ErrorMessage.tsx","../node_modules/formik/src/FastField.tsx","../node_modules/@hortplus/properties-react/node_modules/@fortawesome/free-solid-svg-icons/index.es.js","../node_modules/@fortawesome/fontawesome-svg-core/index.es.js","../node_modules/@fortawesome/react-fontawesome/index.es.js","../node_modules/react-map-gl-7/src/components/use-map.tsx","../node_modules/react-map-gl-7/src/utils/transform.ts","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/react-map-gl-7/src/utils/style-utils.ts","../node_modules/react-map-gl-7/src/utils/deep-equal.ts","../node_modules/react-map-gl-7/src/mapbox/mapbox.ts","../node_modules/react-map-gl-7/src/mapbox/create-ref.ts","../node_modules/react-map-gl-7/src/utils/use-isomorphic-layout-effect.ts","../node_modules/react-map-gl-7/src/utils/set-globals.ts","../node_modules/react-map-gl-7/src/components/map.tsx","../node_modules/react-map-gl-7/src/utils/apply-react-style.ts","../node_modules/react-map-gl-7/src/components/marker.ts","../node_modules/react-map-gl-7/src/components/popup.ts","../node_modules/react-map-gl-7/src/components/use-control.ts","../node_modules/react-map-gl-7/src/components/attribution-control.ts","../node_modules/react-map-gl-7/src/components/fullscreen-control.ts","../node_modules/react-map-gl-7/src/components/geolocate-control.ts","../node_modules/react-map-gl-7/src/components/navigation-control.ts","../node_modules/react-map-gl-7/src/components/scale-control.ts","../node_modules/react-map-gl-7/src/utils/assert.ts","../node_modules/react-map-gl-7/src/components/source.ts","../node_modules/react-map-gl-7/src/components/layer.ts","../node_modules/@turf/meta/dist/es/index.js","../node_modules/@turf/bbox/dist/es/index.js","../node_modules/@hortplus/properties-react/src/stores/PropertiesStore.js","../node_modules/@hortplus/properties-react/src/GlobalPropertiesSelect.js","../node_modules/@hortplus/properties-react/src/LoadingOverlay.js","../node_modules/@hortplus/properties-react/src/properties/PropertyForm.js","../node_modules/@hortplus/properties-react/src/properties/AddProperty.js","../node_modules/@hortplus/properties-react/src/GlobalTableFilter.js","../node_modules/@hortplus/properties-react/src/TablePagination.js","../node_modules/@hortplus/properties-react/src/properties/PropertiesTable.js","../node_modules/@hortplus/properties-react/src/hooks/FirstRenderHook.js","../node_modules/@hortplus/properties-react/src/hooks/usePropertyGroupProperty.js","../node_modules/@hortplus/properties-react/src/hooks/useMapState.js","../node_modules/@hortplus/properties-react/src/properties/maps/PreviewButton.js","../node_modules/@hortplus/properties-react/src/properties/maps/PropertyMap.js","../node_modules/@hortplus/properties-react/src/properties/maps/DrawControl.js","../node_modules/@hortplus/properties-react/src/properties/maps/PropertyMapEditable.js","../node_modules/@hortplus/properties-react/src/properties/PropertyGroups.js","../node_modules/@hortplus/properties-react/src/properties/PropertyGroupUsers.jsx","../node_modules/@hortplus/properties-react/src/modals/AddAllStaffModal.js","../node_modules/@hortplus/properties-react/node_modules/babel-plugin-transform-async-to-promises/helpers.js","../node_modules/@hortplus/properties-react/src/modals/DeletePropertyUserModal.js","../node_modules/@hortplus/properties-react/src/properties/PropertyPermissions.js","../node_modules/@hortplus/properties-react/src/properties/Property.js","../node_modules/@hortplus/properties-react/src/properties/Properties.js","../node_modules/@hortplus/properties-react/src/properties/UserProperties.js","../node_modules/@hortplus/properties-react/src/properties/UserPropertyGroups.jsx","../node_modules/@hortplus/properties-react/src/property_groups/PropertyGroupForm.js","../node_modules/@hortplus/properties-react/src/property_groups/property_group/Details.js","../node_modules/@hortplus/properties-react/src/property_groups/UserPropertyGroupForm.js","../node_modules/@hortplus/properties-react/src/property_groups/property_group/Permissions.js","../node_modules/@hortplus/properties-react/src/property_groups/property_group/Properties/PropertySelect.jsx","../node_modules/@hortplus/properties-react/src/property_groups/property_group/Properties/Properties.js","../node_modules/@hortplus/properties-react/src/property_groups/PropertyGroup.js","../node_modules/@hortplus/properties-react/src/property_groups/PropertyGroups.js","../node_modules/@hortplus/properties-react/src/property_key_contacts/PropertyKeyContact.js","../node_modules/@hortplus/properties-react/src/property_key_contacts/PropertyKeyContacts.js","../node_modules/js-cookie/dist/js.cookie.mjs","../node_modules/jwt-decode/lib/atob.js","../node_modules/jwt-decode/lib/index.js","../node_modules/jwt-decode/lib/base64_url_decode.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/react-toastify/src/utils/propValidator.ts","../node_modules/react-toastify/src/utils/collapseToast.ts","../node_modules/react-toastify/src/utils/cssTransition.tsx","../node_modules/react-toastify/src/utils/mapper.ts","../node_modules/react-toastify/src/core/eventManager.ts","../node_modules/react-toastify/src/components/Icons.tsx","../node_modules/react-toastify/src/hooks/useToast.ts","../node_modules/react-toastify/src/components/CloseButton.tsx","../node_modules/react-toastify/src/components/ProgressBar.tsx","../node_modules/react-toastify/src/components/Toast.tsx","../node_modules/react-toastify/src/components/Transitions.tsx","../node_modules/react-toastify/src/components/ToastContainer.tsx","../node_modules/react-toastify/src/hooks/useToastContainer.ts","../node_modules/react-toastify/src/core/toast.ts","../node_modules/react-toastify/src/utils/constant.ts","components/helpers/toasts/ToastUtils.js","stores/BlockScanningStore.js","stores/UserStore.js","stores/storesContext.js","components/helpers/GlobalSeasonSelect.js","components/helpers/PageTitle.jsx","../node_modules/react-bootstrap/esm/Alert.js","../node_modules/@fortawesome/free-solid-svg-icons/index.mjs","components/LoadingOverlay.js","components/helpers/Validation.js","components/account/UserDetailsForm.js","components/account/UserDetails.js","components/account/Account.js","components/account/ChangePassword.js","../node_modules/react-bootstrap/esm/CardDeck.js","components/admin/User/ChangeUserPasswordForm.jsx","components/admin/User/ChangeUserPassword.jsx","components/admin/User/User.js","components/GlobalTableFilter.js","components/helpers/TablePagination.js","components/admin/UsersTable.js","components/admin/UserManager.js","../node_modules/ismobilejs/src/isMobile.ts","components/crop_scanning/GreenAtlasUrls.js","components/helpers/maps/PreviewButton.jsx","components/block_scanning/BlocksMap.jsx","components/block_scanning/GAPageTitle.jsx","components/crop_scanning/CropScanningUtils.js","../node_modules/react-bootstrap/esm/Tooltip.js","components/block_scanning/ReportTable.jsx","components/helpers/hooks/useDownloadScanningReport.js","components/block_scanning/ReportTables.jsx","components/block_scanning/ReportTypeSelect.jsx","components/block_scanning/BlockScanningReportsPage.jsx","components/block_scanning/upload/Files.jsx","components/helpers/PreviewButton.jsx","components/block_scanning/upload/ViewPolygonModal.jsx","components/block_scanning/upload/UnmatchedPolygons.jsx","components/block_scanning/upload/UploadStatus.jsx","components/block_scanning/upload/useTransactionPolling.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@smithy/protocol-http/dist-es/extensions/httpExtensionConfiguration.js","../node_modules/@smithy/types/dist-es/auth/auth.js","../node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js","../node_modules/@smithy/types/dist-es/endpoint.js","../node_modules/@smithy/types/dist-es/extensions/checksum.js","../node_modules/@smithy/types/dist-es/http.js","../node_modules/@smithy/types/dist-es/middleware.js","../node_modules/@smithy/types/dist-es/profile.js","../node_modules/@smithy/types/dist-es/transfer.js","../node_modules/@smithy/protocol-http/dist-es/Field.js","../node_modules/@smithy/protocol-http/dist-es/httpRequest.js","../node_modules/@smithy/protocol-http/dist-es/httpResponse.js","../node_modules/@aws-sdk/middleware-expect-continue/dist-es/index.js","../node_modules/@aws-sdk/middleware-host-header/dist-es/index.js","../node_modules/@aws-sdk/middleware-logger/dist-es/loggerMiddleware.js","../node_modules/@aws-sdk/middleware-recursion-detection/dist-es/index.js","../node_modules/@smithy/smithy-client/dist-es/NoOpLogger.js","../node_modules/@smithy/middleware-stack/dist-es/MiddlewareStack.js","../node_modules/@smithy/smithy-client/dist-es/client.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@smithy/util-base64/dist-es/constants.browser.js","../node_modules/@smithy/util-base64/dist-es/fromBase64.browser.js","../node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js","../node_modules/@smithy/util-base64/dist-es/toBase64.browser.js","../node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js","../node_modules/@smithy/util-stream/dist-es/blob/transforms.js","../node_modules/@smithy/util-stream/dist-es/blob/Uint8ArrayBlobAdapter.js","../node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.browser.js","../node_modules/@smithy/util-uri-escape/dist-es/escape-uri.js","../node_modules/@smithy/querystring-builder/dist-es/index.js","../node_modules/@smithy/fetch-http-handler/dist-es/request-timeout.js","../node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js","../node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js","../node_modules/@smithy/util-hex-encoding/dist-es/index.js","../node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.browser.js","../node_modules/@smithy/smithy-client/dist-es/collect-stream-body.js","../node_modules/@smithy/smithy-client/dist-es/command.js","../node_modules/@smithy/smithy-client/dist-es/constants.js","../node_modules/@smithy/smithy-client/dist-es/parse-utils.js","../node_modules/@smithy/smithy-client/dist-es/date-utils.js","../node_modules/@smithy/smithy-client/dist-es/exceptions.js","../node_modules/@smithy/smithy-client/dist-es/default-error-handler.js","../node_modules/@smithy/smithy-client/dist-es/defaults-mode.js","../node_modules/@smithy/smithy-client/dist-es/extensions/defaultExtensionConfiguration.js","../node_modules/@smithy/smithy-client/dist-es/extensions/checksum.js","../node_modules/@smithy/smithy-client/dist-es/extensions/retry.js","../node_modules/@smithy/smithy-client/dist-es/get-value-from-text-node.js","../node_modules/@smithy/smithy-client/dist-es/lazy-json.js","../node_modules/@smithy/smithy-client/dist-es/object-mapping.js","../node_modules/@smithy/smithy-client/dist-es/extended-encode-uri-component.js","../node_modules/@smithy/smithy-client/dist-es/resolve-path.js","../node_modules/@smithy/smithy-client/dist-es/ser-utils.js","../node_modules/@aws-sdk/middleware-sdk-s3/dist-es/check-content-length-header.js","../node_modules/@aws-sdk/middleware-sdk-s3/dist-es/region-redirect-endpoint-middleware.js","../node_modules/@aws-sdk/middleware-sdk-s3/dist-es/region-redirect-middleware.js","../node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityCache.js","../node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityCacheEntry.js","../node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityProviderImpl.js","../node_modules/@smithy/util-middleware/dist-es/getSmithyContext.js","../node_modules/@smithy/signature-v4/dist-es/HeaderFormatter.js","../node_modules/@smithy/util-middleware/dist-es/normalizeProvider.js","../node_modules/@smithy/util-utf8/dist-es/toUint8Array.js","../node_modules/@smithy/signature-v4/dist-es/constants.js","../node_modules/@smithy/signature-v4/dist-es/credentialDerivation.js","../node_modules/@smithy/signature-v4/dist-es/getCanonicalHeaders.js","../node_modules/@smithy/is-array-buffer/dist-es/index.js","../node_modules/@smithy/signature-v4/dist-es/getPayloadHash.js","../node_modules/@smithy/signature-v4/dist-es/headerUtil.js","../node_modules/@smithy/util-config-provider/dist-es/types.js","../node_modules/@smithy/signature-v4/dist-es/cloneRequest.js","../node_modules/@smithy/signature-v4/dist-es/moveHeadersToQuery.js","../node_modules/@smithy/signature-v4/dist-es/prepareRequest.js","../node_modules/@smithy/signature-v4/dist-es/utilDate.js","../node_modules/@smithy/signature-v4/dist-es/SignatureV4.js","../node_modules/@smithy/signature-v4/dist-es/getCanonicalQuery.js","../node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/constants.js","../node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/SignatureV4S3Express.js","../node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/s3ExpressMiddleware.js","../node_modules/@aws-sdk/util-arn-parser/dist-es/index.js","../node_modules/@aws-sdk/middleware-sdk-s3/dist-es/bucket-endpoint-middleware.js","../node_modules/@aws-sdk/middleware-sdk-s3/dist-es/validate-bucket-name.js","../node_modules/@smithy/property-provider/dist-es/memoize.js","../node_modules/@smithy/property-provider/dist-es/ProviderError.js","../node_modules/@aws-sdk/middleware-signing/dist-es/awsAuthConfiguration.js","../node_modules/@aws-sdk/middleware-signing/dist-es/utils/getSkewCorrectedDate.js","../node_modules/@aws-sdk/middleware-signing/dist-es/utils/getUpdatedSystemClockOffset.js","../node_modules/@aws-sdk/middleware-signing/dist-es/utils/isClockSkewed.js","../node_modules/@aws-sdk/middleware-signing/dist-es/awsAuthMiddleware.js","../node_modules/@smithy/util-endpoints/dist-es/lib/isIpAddress.js","../node_modules/@smithy/util-endpoints/dist-es/lib/isValidHostLabel.js","../node_modules/@smithy/util-endpoints/dist-es/utils/customEndpointFunctions.js","../node_modules/@smithy/util-endpoints/dist-es/debug/debugId.js","../node_modules/@smithy/util-endpoints/dist-es/debug/toDebugString.js","../node_modules/@smithy/util-endpoints/dist-es/types/EndpointError.js","../node_modules/@smithy/util-endpoints/dist-es/lib/getAttr.js","../node_modules/@smithy/util-endpoints/dist-es/lib/getAttrPathList.js","../node_modules/@smithy/util-endpoints/dist-es/lib/parseURL.js","../node_modules/@smithy/util-endpoints/dist-es/utils/endpointFunctions.js","../node_modules/@smithy/util-endpoints/dist-es/lib/booleanEquals.js","../node_modules/@smithy/util-endpoints/dist-es/lib/isSet.js","../node_modules/@smithy/util-endpoints/dist-es/lib/not.js","../node_modules/@smithy/util-endpoints/dist-es/lib/stringEquals.js","../node_modules/@smithy/util-endpoints/dist-es/lib/substring.js","../node_modules/@smithy/util-endpoints/dist-es/lib/uriEncode.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTemplate.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js","../node_modules/@smithy/util-endpoints/dist-es/utils/getReferenceValue.js","../node_modules/@smithy/util-endpoints/dist-es/utils/callFunction.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js","../node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js","../node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperty.js","../node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js","../node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointUrl.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTreeRule.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/parseArn.js","../node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partition.js","../node_modules/@aws-sdk/util-endpoints/dist-es/aws.js","../node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/isVirtualHostableS3Bucket.js","../node_modules/@aws-sdk/middleware-user-agent/dist-es/constants.js","../node_modules/@aws-sdk/middleware-user-agent/dist-es/user-agent-middleware.js","../node_modules/@smithy/config-resolver/dist-es/regionConfig/isFipsRegion.js","../node_modules/@smithy/config-resolver/dist-es/regionConfig/getRealRegion.js","../node_modules/@smithy/middleware-content-length/dist-es/index.js","../node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/s3.js","../node_modules/@smithy/middleware-endpoint/dist-es/adaptors/createConfigValueProvider.js","../node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.browser.js","../node_modules/@smithy/url-parser/dist-es/index.js","../node_modules/@smithy/querystring-parser/dist-es/index.js","../node_modules/@smithy/middleware-endpoint/dist-es/adaptors/toEndpointV1.js","../node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromInstructions.js","../node_modules/@smithy/middleware-serde/dist-es/serdePlugin.js","../node_modules/@smithy/middleware-serde/dist-es/deserializerMiddleware.js","../node_modules/@smithy/middleware-serde/dist-es/serializerMiddleware.js","../node_modules/@smithy/middleware-endpoint/dist-es/getEndpointPlugin.js","../node_modules/@smithy/util-retry/dist-es/config.js","../node_modules/@smithy/middleware-endpoint/dist-es/endpointMiddleware.js","../node_modules/@smithy/middleware-retry/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/@smithy/service-error-classification/dist-es/constants.js","../node_modules/@smithy/service-error-classification/dist-es/index.js","../node_modules/@smithy/util-retry/dist-es/DefaultRateLimiter.js","../node_modules/@smithy/util-retry/dist-es/defaultRetryToken.js","../node_modules/@smithy/util-retry/dist-es/constants.js","../node_modules/@smithy/util-retry/dist-es/StandardRetryStrategy.js","../node_modules/@smithy/util-retry/dist-es/defaultRetryBackoffStrategy.js","../node_modules/@smithy/util-retry/dist-es/AdaptiveRetryStrategy.js","../node_modules/@smithy/middleware-retry/node_modules/uuid/dist/esm-browser/native.js","../node_modules/@smithy/middleware-retry/node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/@smithy/middleware-retry/node_modules/uuid/dist/esm-browser/v4.js","../node_modules/@aws-sdk/client-s3/dist-es/models/models_0.js","../node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.browser.js","../node_modules/@smithy/middleware-retry/dist-es/retryMiddleware.js","../node_modules/@smithy/middleware-retry/dist-es/util.js","../node_modules/@aws-sdk/client-s3/dist-es/endpoint/EndpointParameters.js","../node_modules/@aws-sdk/client-s3/dist-es/models/S3ServiceException.js","../node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/parseXmlBody.js","../node_modules/@aws-sdk/core/dist-es/submodules/protocols/common.js","../node_modules/@smithy/core/dist-es/util-identity-and-auth/memoizeIdentityProvider.js","../node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js","../node_modules/@smithy/core/dist-es/protocols/requestBuilder.js","../node_modules/@babel/runtime/helpers/esm/OverloadYield.js","../node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js","../node_modules/@smithy/core/dist-es/pagination/createPaginator.js","../node_modules/@aws-sdk/client-s3/dist-es/models/models_1.js","../node_modules/@aws-sdk/client-s3/dist-es/protocols/Aws_restXml.js","../node_modules/@aws-sdk/client-s3/dist-es/commands/CreateSessionCommand.js","../node_modules/@aws-crypto/sha1-browser/src/isEmptyData.ts","../node_modules/@aws-crypto/sha1-browser/src/constants.ts","../node_modules/@aws-sdk/util-locate-window/dist-es/index.js","../node_modules/@aws-crypto/sha1-browser/src/webCryptoSha1.ts","../node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js","../node_modules/@aws-crypto/supports-web-crypto/src/supportsWebCrypto.ts","../node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js","../node_modules/@aws-crypto/util/src/convertToBuffer.ts","../node_modules/@aws-crypto/util/src/isEmptyData.ts","../node_modules/@aws-crypto/util/src/numToUint8.ts","../node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts","../node_modules/@aws-crypto/sha1-browser/src/crossPlatformSha1.ts","../node_modules/@aws-crypto/sha256-browser/src/constants.ts","../node_modules/@aws-crypto/sha256-browser/src/webCryptoSha256.ts","../node_modules/@aws-crypto/sha256-js/node_modules/tslib/tslib.es6.mjs","../node_modules/@aws-crypto/sha256-js/src/constants.ts","../node_modules/@aws-crypto/sha256-js/src/RawSha256.ts","../node_modules/@aws-crypto/sha256-js/src/jsSha256.ts","../node_modules/@aws-crypto/sha256-browser/src/crossPlatformSha256.ts","../node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.js","../node_modules/@aws-crypto/crc32/node_modules/tslib/tslib.es6.mjs","../node_modules/@aws-crypto/crc32/src/aws_crc32.ts","../node_modules/@aws-crypto/crc32/src/index.ts","../node_modules/@smithy/eventstream-codec/dist-es/Int64.js","../node_modules/@smithy/eventstream-codec/dist-es/HeaderMarshaller.js","../node_modules/@smithy/eventstream-codec/dist-es/EventStreamCodec.js","../node_modules/@smithy/eventstream-codec/dist-es/splitMessage.js","../node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/asyncIterator.js","../node_modules/@smithy/eventstream-codec/dist-es/MessageDecoderStream.js","../node_modules/@smithy/eventstream-codec/dist-es/MessageEncoderStream.js","../node_modules/@smithy/eventstream-codec/dist-es/SmithyMessageDecoderStream.js","../node_modules/@smithy/eventstream-codec/dist-es/SmithyMessageEncoderStream.js","../node_modules/@smithy/eventstream-serde-universal/dist-es/getUnmarshalledStream.js","../node_modules/@smithy/eventstream-serde-universal/dist-es/EventStreamMarshaller.js","../node_modules/@smithy/eventstream-serde-universal/dist-es/getChunkedStream.js","../node_modules/@smithy/eventstream-serde-browser/dist-es/EventStreamMarshaller.js","../node_modules/@smithy/eventstream-serde-browser/dist-es/utils.js","../node_modules/@smithy/eventstream-serde-browser/dist-es/provider.js","../node_modules/@smithy/chunked-blob-reader/dist-es/index.js","../node_modules/@smithy/hash-blob-browser/dist-es/index.js","../node_modules/@smithy/md5-js/dist-es/constants.js","../node_modules/@smithy/md5-js/dist-es/index.js","../node_modules/@smithy/util-body-length-browser/dist-es/calculateBodyLength.js","../node_modules/@aws-sdk/signature-v4-multi-region/dist-es/signature-v4-crt-container.js","../node_modules/@aws-sdk/signature-v4-multi-region/dist-es/SignatureV4MultiRegion.js","../node_modules/@aws-sdk/client-s3/dist-es/endpoint/ruleset.js","../node_modules/@aws-sdk/client-s3/dist-es/endpoint/endpointResolver.js","../node_modules/@smithy/util-endpoints/dist-es/resolveEndpoint.js","../node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.shared.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/constants.js","../node_modules/@smithy/util-defaults-mode-browser/dist-es/constants.js","../node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.js","../node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.browser.js","../node_modules/@smithy/invalid-dependency/dist-es/invalidProvider.js","../node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js","../node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseFipsEndpointConfigOptions.js","../node_modules/@aws-sdk/client-s3/dist-es/runtimeExtensions.js","../node_modules/@aws-sdk/region-config-resolver/dist-es/extensions/index.js","../node_modules/@aws-sdk/client-s3/dist-es/S3Client.js","../node_modules/@aws-sdk/middleware-user-agent/dist-es/configurations.js","../node_modules/@smithy/config-resolver/dist-es/regionConfig/resolveRegionConfig.js","../node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointConfig.js","../node_modules/@smithy/middleware-retry/dist-es/configurations.js","../node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3Configuration.js","../node_modules/@smithy/eventstream-serde-config-resolver/dist-es/EventStreamSerdeConfig.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/types.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumAlgorithmForRequest.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumLocationName.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/hasHeader.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/isStreaming.js","../node_modules/@aws-crypto/crc32c/node_modules/tslib/tslib.es6.mjs","../node_modules/@aws-crypto/crc32c/src/aws_crc32c.ts","../node_modules/@aws-crypto/crc32c/src/index.ts","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/selectChecksumAlgorithmFunction.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/stringHasher.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsMiddleware.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumAlgorithmListForResponse.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/isChecksumWithPartNumber.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/streams/create-read-stream-on-buffer.browser.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksum.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/validateChecksumFromResponse.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsResponseMiddleware.js","../node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getFlexibleChecksumsPlugin.js","../node_modules/@aws-sdk/middleware-ssec/dist-es/index.js","../node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectCommand.js","components/block_scanning/upload/util.js","components/block_scanning/upload/FileUpload.jsx","components/block_scanning/upload/BlockScanningUploadPage.jsx","components/crop_scanning/GreenAtlasAdvertisement.js","components/crop_scanning/AdvancedFilterModal.js","components/crop_scanning/ReportsTable.js","components/crop_scanning/CropScanningReports.js","components/crop_scanning/upload/GreenAtlasUploadPage.jsx","components/dashboard/utils.js","components/dashboard/AdminDashboard.js","../node_modules/@hortplus/traplog-react/node_modules/@fortawesome/free-solid-svg-icons/index.es.js","../node_modules/@fortawesome/pro-solid-svg-icons/index.mjs","../node_modules/react-bootstrap/esm/Badge.js","../node_modules/react-bootstrap/esm/Collapse.js","../node_modules/react-bootstrap/esm/Container.js","../node_modules/nanoclone/src/index.js","../node_modules/@turf/boolean-point-in-polygon/dist/es/index.js","../node_modules/@turf/invariant/dist/es/index.js","../node_modules/yup/es/util/printValue.js","../node_modules/yup/es/locale.js","../node_modules/yup/es/util/isSchema.js","../node_modules/yup/es/Condition.js","../node_modules/yup/es/util/toArray.js","../node_modules/yup/es/ValidationError.js","../node_modules/yup/es/util/runTests.js","../node_modules/yup/es/Reference.js","../node_modules/yup/es/util/createValidation.js","../node_modules/yup/es/util/reach.js","../node_modules/yup/es/util/ReferenceSet.js","../node_modules/yup/es/schema.js","../node_modules/yup/es/mixed.js","../node_modules/yup/es/util/isAbsent.js","../node_modules/yup/es/boolean.js","../node_modules/yup/es/string.js","../node_modules/yup/es/number.js","../node_modules/yup/es/util/isodate.js","../node_modules/yup/es/date.js","../node_modules/yup/es/util/sortByKeyOrder.js","../node_modules/yup/es/object.js","../node_modules/yup/es/util/sortFields.js","../node_modules/yup/es/array.js","../node_modules/@fortawesome/pro-regular-svg-icons/index.es.js","../node_modules/@hortplus/traplog-react/src/stores/AuthenticationStore.js","../node_modules/@hortplus/traplog-react/src/stores/TraplogStore.js","../node_modules/@hortplus/traplog-react/src/stores/storesContext.js","../node_modules/@hortplus/traplog-react/src/stores/useStores.js","../node_modules/@hortplus/traplog-react/src/InsectGroupSelect.js","../node_modules/@hortplus/traplog-react/src/TraplogLegend.js","../node_modules/@hortplus/traplog-react/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../node_modules/@hortplus/traplog-react/src/helpers/ConfirmationModal.js","../node_modules/@hortplus/traplog-react/src/helpers/ToastUtils.js","../node_modules/@hortplus/traplog-react/src/helpers/TrappingUtils.js","../node_modules/@hortplus/traplog-react/src/hooks/useCollapse.js","../node_modules/@hortplus/traplog-react/node_modules/mapbox-gl/dist/mapbox-gl.js","../node_modules/@hortplus/traplog-react/src/hooks/useBoundaryLayers.js","../node_modules/@hortplus/traplog-react/src/hooks/useMapState.js","../node_modules/@hortplus/traplog-react/src/maps/PreviewButton.js","../node_modules/@hortplus/traplog-react/src/maps/PropertyOverviewMap.js","../node_modules/@hortplus/traplog-react/src/LoadingOverlay.js","../node_modules/@hortplus/traplog-react/node_modules/@turf/helpers/dist/es/index.js","../node_modules/@hortplus/traplog-react/src/maps/DrawControl.js","../node_modules/@hortplus/traplog-react/src/maps/UpdateTrapsMap.js","../node_modules/@hortplus/traplog-react/src/admin/TrapForm.js","../node_modules/@hortplus/traplog-react/src/admin/TrapModalContent.js","../node_modules/@hortplus/traplog-react/src/admin/AddTrapModal.js","../node_modules/@hortplus/traplog-react/src/utils.js","../node_modules/@hortplus/traplog-react/src/admin/TrapMonitoringRecordsForm.js","../node_modules/@hortplus/traplog-react/src/admin/AddTrapMonitoringRecordsModal.js","../node_modules/@hortplus/traplog-react/src/maps/AddTrappingZonesMap.js","../node_modules/@hortplus/traplog-react/src/admin/AddTrappingZoneForm.js","../node_modules/@hortplus/traplog-react/src/admin/AddTrappingZoneModal.js","../node_modules/@hortplus/traplog-react/src/admin/EditTrapModal.js","../node_modules/@hortplus/traplog-react/src/maps/EditTrappingZoneMap.js","../node_modules/@hortplus/traplog-react/src/admin/EditTrappingZoneForm.js","../node_modules/@hortplus/traplog-react/src/admin/EditTrappingZoneModal.js","../node_modules/@hortplus/traplog-react/src/helpers/useLocalStorageState.js","../node_modules/@hortplus/traplog-react/src/hooks/useRelevantTraps.js","../node_modules/@hortplus/traplog-react/src/hooks/useTrappingZoneThresholds.js","../node_modules/@hortplus/traplog-react/src/hooks/useUpdateTrappingZoneHighPressure.js","../node_modules/@hortplus/traplog-react/src/admin/EditTrapMonitoringRecordsModal.js","../node_modules/@hortplus/traplog-react/src/admin/TrappingZoneSprayForm.js","../node_modules/@hortplus/traplog-react/src/admin/EditTrappingZoneSprayModal.js","../node_modules/@hortplus/traplog-react/src/admin/TrappingZoneResults.js","../node_modules/@hortplus/traplog-react/src/admin/TrapsTable.js","../node_modules/@hortplus/traplog-react/src/admin/add_trapping_zone_spray_modal/utils.js","../node_modules/@hortplus/traplog-react/src/admin/add_trapping_zone_spray_modal/AddTrappingZoneSprayModal.js","../node_modules/@hortplus/traplog-react/src/admin/SetupTrapsForm.js","../node_modules/@hortplus/traplog-react/src/admin/setup_traps_modal/utils.js","../node_modules/@hortplus/traplog-react/src/admin/setup_traps_modal/SetupTrapsModal.js","../node_modules/@hortplus/traplog-react/src/admin/AdminOverview.js","../node_modules/@hortplus/traplog-react/src/maps/HotTrapMap.js","../node_modules/@hortplus/traplog-react/src/admin/hot_trap_map/HotTrap.js","../node_modules/@hortplus/traplog-react/src/admin/missing_monitoring/MissingMonitoring.js","../node_modules/@hortplus/traplog-react/src/admin/season_overview_report/SeasonOverviewReportForm.js","../node_modules/@hortplus/traplog-react/src/admin/season_overview_report/SeasonOverviewReportPropertySummaryGraph.js","../node_modules/@hortplus/traplog-react/src/admin/season_overview_report/SeasonOverviewReportPropertySummary.js","../node_modules/@hortplus/traplog-react/src/hooks/useFetch.js","../node_modules/@hortplus/traplog-react/src/admin/season_overview_report/SeasonOverviewReportTable.js","../node_modules/@hortplus/traplog-react/src/admin/season_overview_report/SeasonalOverviewReportGraph.js","../node_modules/@hortplus/traplog-react/src/admin/season_overview_report/SeasonOverviewReport.js","../node_modules/@hortplus/traplog-react/src/admin/season_overview_report/AdminSeasonOverviewReport.js","../node_modules/@hortplus/traplog-react/src/admin/trapping_monitoring_report/TrappingMonitoringReport.js","../node_modules/@hortplus/traplog-react/src/admin/trapping_runs/TrappingRunForm.js","../node_modules/@hortplus/traplog-react/src/admin/trapping_runs/AddTrappingRunModal.js","../node_modules/@hortplus/traplog-react/src/admin/trapping_runs/Passcode.js","../node_modules/@hortplus/traplog-react/src/admin/trapping_runs/TrappingRun.js","../node_modules/@hortplus/traplog-react/src/hooks/FirstRenderHook.js","../node_modules/@hortplus/traplog-react/src/helpers/GlobalTableFilter.js","../node_modules/@hortplus/traplog-react/src/admin/trapping_runs/TrappingRunsTable.js","../node_modules/@hortplus/traplog-react/src/admin/trapping_runs/TrappingRuns.js","../node_modules/@hortplus/traplog-react/src/maps/SummaryMap.js","../node_modules/@hortplus/traplog-react/src/NZAPOverview.js","../node_modules/@hortplus/traplog-react/src/helpers/TrappingZoneStatusModal.js","../node_modules/@hortplus/traplog-react/src/Traplog.js","../node_modules/@hortplus/traplog-react/src/TraplogDashboard.js","../node_modules/@hortplus/traplog-react/src/TraplogDataProvider.js","components/helpers/hooks/useUserBlocks.js","components/helpers/hooks/useUserReports.js","components/block_scanning/dashboard/DashboardMap.jsx","components/block_scanning/dashboard/PropertiesReports.jsx","components/block_scanning/dashboard/BlockScanningDashboard.jsx","components/irrigation/IrrigationLegend.js","components/irrigation/helpers.js","components/irrigation/IrrigationProviders.js","../node_modules/gl-matrix/esm/common.js","../node_modules/gl-matrix/esm/vec4.js","../node_modules/@math.gl/web-mercator/src/math-utils.js","../node_modules/gl-matrix/esm/mat4.js","../node_modules/gl-matrix/esm/vec2.js","../node_modules/gl-matrix/esm/vec3.js","../node_modules/@math.gl/web-mercator/src/assert.js","../node_modules/@math.gl/web-mercator/src/web-mercator-utils.js","../node_modules/@math.gl/web-mercator/src/get-bounds.js","../node_modules/@math.gl/web-mercator/src/web-mercator-viewport.js","../node_modules/@math.gl/web-mercator/src/fit-bounds.js","../node_modules/@math.gl/web-mercator/src/fly-to-viewport.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/react-map-gl/src/utils/globals.js","../node_modules/react-map-gl/src/utils/style-utils.js","../node_modules/react-map-gl/src/mapbox/mapbox.js","../node_modules/react-map-gl/src/utils/math-utils.js","../node_modules/react-map-gl/src/utils/assert.js","../node_modules/react-map-gl/src/utils/map-state.js","../node_modules/@math.gl/web-mercator/src/normalize-viewport-props.js","../node_modules/react-map-gl/src/utils/map-constraints.js","../node_modules/react-map-gl/src/components/map-context.js","../node_modules/react-map-gl/src/utils/use-isomorphic-layout-effect.js","../node_modules/react-map-gl/src/utils/terrain.js","../node_modules/react-map-gl/src/components/static-map.js","../node_modules/react-map-gl/src/utils/transition/transition-interpolator.js","../node_modules/react-map-gl/src/utils/transition/transition-utils.js","../node_modules/react-map-gl/src/utils/transition/viewport-fly-to-interpolator.js","../node_modules/react-map-gl/src/utils/transition/linear-interpolator.js","../node_modules/react-map-gl/src/utils/transition-manager.js","../node_modules/mjolnir.js/src/utils/hammer-overrides.js","../node_modules/mjolnir.js/src/utils/hammer.browser.js","../node_modules/mjolnir.js/src/constants.js","../node_modules/mjolnir.js/src/utils/globals.js","../node_modules/mjolnir.js/src/inputs/wheel-input.js","../node_modules/mjolnir.js/src/inputs/move-input.js","../node_modules/mjolnir.js/src/inputs/key-input.js","../node_modules/mjolnir.js/src/inputs/contextmenu-input.js","../node_modules/mjolnir.js/src/utils/event-utils.js","../node_modules/mjolnir.js/src/utils/event-registrar.js","../node_modules/mjolnir.js/src/event-manager.js","../node_modules/react-map-gl/src/utils/map-controller.js","../node_modules/react-map-gl/src/components/interactive-map.js","../node_modules/react-map-gl/src/utils/deep-equal.js","../node_modules/react-map-gl/src/components/source.js","../node_modules/react-map-gl/src/components/layer.js","../node_modules/react-map-gl/src/components/use-map-control.js","../node_modules/react-map-gl/src/components/base-control.js","../node_modules/react-map-gl/src/components/draggable-control.js","../node_modules/react-map-gl/src/utils/crisp-pixel.js","../node_modules/react-map-gl/src/components/marker.js","../node_modules/react-map-gl/src/utils/dynamic-position.js","../node_modules/react-map-gl/src/components/popup.js","../node_modules/react-map-gl/src/components/attribution-control.js","../node_modules/react-map-gl/src/components/fullscreen-control.js","../node_modules/react-map-gl/src/utils/geolocate-utils.js","../node_modules/react-map-gl/src/components/geolocate-control.js","../node_modules/react-map-gl/src/components/navigation-control.js","../node_modules/react-map-gl/src/utils/version.js","../node_modules/react-map-gl/src/components/scale-control.js","../node_modules/react-map-gl/src/overlays/canvas-overlay.js","../node_modules/react-map-gl/src/overlays/html-overlay.js","../node_modules/react-map-gl/src/overlays/svg-overlay.js","../node_modules/react-map-gl/src/utils/set-rtl-text-plugin.js","components/irrigation/maps/PreviewButton.jsx","components/irrigation/maps/SummaryMap.js","components/irrigation/IrrigationDashboard.js","components/dashboard/ClientDashboard.js","components/dashboard/Dashboard.js","../node_modules/promise-polyfill/src/finally.js","../node_modules/promise-polyfill/src/allSettled.js","../node_modules/promise-polyfill/src/any.js","../node_modules/promise-polyfill/src/index.js","../node_modules/@elastic/apm-rum-core/dist/es/common/polyfills.js","../node_modules/@elastic/apm-rum-core/dist/es/common/utils.js","../node_modules/@elastic/apm-rum-core/dist/es/common/patching/patch-utils.js","../node_modules/@elastic/apm-rum-core/dist/es/common/constants.js","../node_modules/@elastic/apm-rum-core/dist/es/common/patching/xhr-patch.js","../node_modules/@elastic/apm-rum-core/dist/es/common/http/response-status.js","../node_modules/@elastic/apm-rum-core/dist/es/common/http/fetch.js","../node_modules/@elastic/apm-rum-core/dist/es/common/patching/fetch-patch.js","../node_modules/@elastic/apm-rum-core/dist/es/common/event-handler.js","../node_modules/@elastic/apm-rum-core/dist/es/common/patching/index.js","../node_modules/@elastic/apm-rum-core/dist/es/common/patching/history-patch.js","../node_modules/@elastic/apm-rum-core/dist/es/state.js","../node_modules/@elastic/apm-rum-core/dist/es/bootstrap.js","../node_modules/@elastic/apm-rum-core/dist/es/error-logging/stack-trace.js","../node_modules/@elastic/apm-rum-core/dist/es/common/url.js","../node_modules/@elastic/apm-rum-core/dist/es/common/context.js","../node_modules/@elastic/apm-rum-core/dist/es/common/truncate.js","../node_modules/@elastic/apm-rum-core/dist/es/error-logging/error-logging.js","../node_modules/@elastic/apm-rum-core/dist/es/common/queue.js","../node_modules/@elastic/apm-rum-core/dist/es/common/ndjson.js","../node_modules/@elastic/apm-rum-core/dist/es/performance-monitoring/span-base.js","../node_modules/@elastic/apm-rum-core/dist/es/performance-monitoring/span.js","../node_modules/@elastic/apm-rum-core/dist/es/performance-monitoring/capture-navigation.js","../node_modules/@elastic/apm-rum-core/dist/es/common/compress.js","../node_modules/@elastic/apm-rum-core/dist/es/common/http/xhr.js","../node_modules/@elastic/apm-rum-core/dist/es/common/apm-server.js","../node_modules/@elastic/apm-rum-core/dist/es/common/throttle.js","../node_modules/@elastic/apm-rum-core/dist/es/common/config-service.js","../node_modules/@elastic/apm-rum-core/dist/es/common/service-factory.js","../node_modules/@elastic/apm-rum-core/dist/es/common/logging-service.js","../node_modules/@elastic/apm-rum-core/dist/es/performance-monitoring/performance-monitoring.js","../node_modules/@elastic/apm-rum-core/dist/es/performance-monitoring/breakdown.js","../node_modules/@elastic/apm-rum-core/dist/es/performance-monitoring/transaction.js","../node_modules/@elastic/apm-rum-core/dist/es/performance-monitoring/metrics.js","../node_modules/@elastic/apm-rum-core/dist/es/performance-monitoring/transaction-service.js","../node_modules/@elastic/apm-rum-core/dist/es/index.js","../node_modules/@elastic/apm-rum-core/dist/es/performance-monitoring/index.js","../node_modules/@elastic/apm-rum-core/dist/es/error-logging/index.js","../node_modules/@elastic/apm-rum-core/dist/es/common/observers/page-visibility.js","../node_modules/@elastic/apm-rum-core/dist/es/common/observers/page-clicks.js","../node_modules/@elastic/apm-rum/dist/es/apm-base.js","../node_modules/@elastic/apm-rum-core/dist/es/common/instrument.js","../node_modules/@elastic/apm-rum/dist/es/index.js","rum.js","components/footer/Footer.js","components/header/Divider.jsx","components/header/MobileHeader.jsx","components/header/Header.jsx","../node_modules/dom-helpers/esm/matches.js","../node_modules/@restart/hooks/esm/useGlobalListener.js","../node_modules/@restart/hooks/esm/useEventListener.js","../node_modules/react-overlays/esm/DropdownContext.js","../node_modules/react-overlays/esm/DropdownMenu.js","../node_modules/react-overlays/esm/DropdownToggle.js","../node_modules/react-overlays/esm/Dropdown.js","../node_modules/react-bootstrap/esm/DropdownItem.js","../node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","../node_modules/react-bootstrap/esm/DropdownMenu.js","../node_modules/react-bootstrap/esm/DropdownToggle.js","../node_modules/react-bootstrap/esm/Dropdown.js","../node_modules/react-bootstrap/esm/NavDropdown.js","../node_modules/react-bootstrap/esm/NavbarBrand.js","../node_modules/react-bootstrap/esm/NavbarCollapse.js","../node_modules/react-bootstrap/esm/NavbarToggle.js","../node_modules/react-bootstrap/esm/Navbar.js","components/navbar/Navbar.js","components/helpers/ErrorBoundary.js","components/layout/Layout.js","components/login/Login.js","components/helpers/Route.js","../node_modules/react-bootstrap/esm/Image.js","components/irrigation/irrimax_site/IrrimaxSiteButton.jsx","components/irrigation/irrimax_site/IrrimaxSiteLayout.jsx","components/irrigation/irrimax_site/IrrimaxSite.jsx","components/irrigation/SiteButton.js","components/charts/Chart.js","components/charts/SeasonalStrategyChart.js","components/charts/WeeklySoilMoistureChart.js","components/irrigation/tables/LastWeekRain.js","components/irrigation/tables/LastWeekTable.js","components/irrigation/tables/RecommendationTable.js","components/irrigation/tables/SeasonToDateTable.js","components/irrigation/TerraprobeSite.jsx","components/irrigation/IrrigationGraphs.js","components/irrigation/ProgrammingGuide.js","components/irrigation/index.js","components/irrigation/reports/IrrigationSummary.js","components/login/ForgotPassword.js","components/login/ResetPassword.js","components/helpers/hooks/useQuery.js","components/properties/index.js","components/traplog/index.js","App.js","analytics.js","serviceWorker.js","index.js"],"sourcesContent":["'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'arrow-up-right-from-square';\nvar width = 512;\nvar height = 512;\nvar aliases = [\"external-link\"];\nvar unicode = 'f08e';\nvar svgPathData = 'M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l82.7 0L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3l0 82.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-17.7-14.3-32-32-32L320 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faArrowUpRightFromSquare = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar source = require('./faUpRightFromSquare');\nexports.definition = {\n prefix: source.prefix,\n iconName: source.iconName,\n icon: [\n source.width,\n source.height,\n source.aliases,\n source.unicode,\n source.svgPathData\n ]};\n\nexports.faExternalLinkAlt = exports.definition;\nexports.prefix = source.prefix;\nexports.iconName = source.iconName;\nexports.width = source.width;\nexports.height = source.height;\nexports.ligatures = source.aliases;\nexports.unicode = source.unicode;\nexports.svgPathData = source.svgPathData;\nexports.aliases = source.aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'up-right-from-square';\nvar width = 512;\nvar height = 512;\nvar aliases = [\"external-link-alt\"];\nvar unicode = 'f35d';\nvar svgPathData = 'M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-128c0-17.7-14.3-32-32-32L352 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faUpRightFromSquare = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'far';\nvar iconName = 'triangle';\nvar width = 576;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f2ec';\nvar svgPathData = 'M329.6 24c-18.4-32-64.7-32-83.2 0L6.5 440c-18.4 31.9 4.6 72 41.6 72H528c36.9 0 60-40 41.6-72l-240-416zM48 464L288 48l240 416H48z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faTriangle = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","/**\n * @license Highcharts JS v9.3.3 (2022-02-01)\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n'use strict';\n(function (root, factory) {\n if (typeof module === 'object' && module.exports) {\n factory['default'] = factory;\n module.exports = root.document ?\n factory(root) :\n factory;\n } else if (typeof define === 'function' && define.amd) {\n define('highcharts/highcharts', function () {\n return factory(root);\n });\n } else {\n if (root.Highcharts) {\n root.Highcharts.error(16, true);\n }\n root.Highcharts = factory(root);\n }\n}(typeof window !== 'undefined' ? window : this, function (win) {\n var _modules = {};\n function _registerModule(obj, path, args, fn) {\n if (!obj.hasOwnProperty(path)) {\n obj[path] = fn.apply(null, args);\n }\n }\n _registerModule(_modules, 'Core/Globals.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n /**\n * @private\n * @deprecated\n * @todo Rename UMD argument `win` to `window`; move code to `Globals.win`\n */\n var w = (typeof win !== 'undefined' ?\n win :\n typeof window !== 'undefined' ?\n window :\n {}\n // eslint-disable-next-line node/no-unsupported-features/es-builtins\n );\n /* *\n *\n * Namespace\n *\n * */\n /**\n * Shared Highcharts properties.\n */\n var Globals;\n (function (Globals) {\n /* *\n *\n * Constants\n *\n * */\n Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '9.3.3', Globals.win = w, Globals.doc = Globals.win.document, Globals.svg = (Globals.doc &&\n Globals.doc.createElementNS &&\n !!Globals.doc.createElementNS(Globals.SVG_NS, 'svg').createSVGRect), Globals.userAgent = (Globals.win.navigator && Globals.win.navigator.userAgent) || '', Globals.isChrome = Globals.userAgent.indexOf('Chrome') !== -1, Globals.isFirefox = Globals.userAgent.indexOf('Firefox') !== -1, Globals.isMS = /(edge|msie|trident)/i.test(Globals.userAgent) && !Globals.win.opera, Globals.isSafari = !Globals.isChrome && Globals.userAgent.indexOf('Safari') !== -1, Globals.isTouchDevice = /(Mobile|Android|Windows Phone)/.test(Globals.userAgent), Globals.isWebKit = Globals.userAgent.indexOf('AppleWebKit') !== -1, Globals.deg2rad = Math.PI * 2 / 360, Globals.hasBidiBug = (Globals.isFirefox &&\n parseInt(Globals.userAgent.split('Firefox/')[1], 10) < 4 // issue #38\n ), Globals.hasTouch = !!Globals.win.TouchEvent, Globals.marginNames = [\n 'plotTop',\n 'marginRight',\n 'marginBottom',\n 'plotLeft'\n ], Globals.noop = function () { }, Globals.supportsPassiveEvents = (function () {\n // Checks whether the browser supports passive events, (#11353).\n var supportsPassive = false;\n // Object.defineProperty doesn't work on IE as well as passive\n // events - instead of using polyfill, we can exclude IE totally.\n if (!Globals.isMS) {\n var opts = Object.defineProperty({}, 'passive', {\n get: function () {\n supportsPassive = true;\n }\n });\n if (Globals.win.addEventListener && Globals.win.removeEventListener) {\n Globals.win.addEventListener('testPassive', Globals.noop, opts);\n Globals.win.removeEventListener('testPassive', Globals.noop, opts);\n }\n }\n return supportsPassive;\n }());\n /**\n * An array containing the current chart objects in the page. A chart's\n * position in the array is preserved throughout the page's lifetime. When\n * a chart is destroyed, the array item becomes `undefined`.\n *\n * @name Highcharts.charts\n * @type {Array}\n */\n Globals.charts = [];\n /**\n * A hook for defining additional date format specifiers. New\n * specifiers are defined as key-value pairs by using the\n * specifier as key, and a function which takes the timestamp as\n * value. This function returns the formatted portion of the\n * date.\n *\n * @sample highcharts/global/dateformats/\n * Adding support for week number\n *\n * @name Highcharts.dateFormats\n * @type {Record}\n */\n Globals.dateFormats = {};\n /**\n * @private\n * @deprecated\n * @todo Use only `Core/Series/SeriesRegistry.seriesTypes`\n */\n Globals.seriesTypes = {};\n /**\n * @private\n */\n Globals.symbolSizes = {};\n /* *\n *\n * Properties\n *\n * */\n // eslint-disable-next-line prefer-const\n Globals.chartCount = 0;\n })(Globals || (Globals = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Theme options that should get applied to the chart. In module mode it\n * might not be possible to change this property because of read-only\n * restrictions, instead use {@link Highcharts.setOptions}.\n *\n * @deprecated\n * @name Highcharts.theme\n * @type {Highcharts.Options}\n */\n (''); // keeps doclets above in JS file\n\n return Globals;\n });\n _registerModule(_modules, 'Core/Utilities.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var charts = H.charts,\n doc = H.doc,\n win = H.win;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Provide error messages for debugging, with links to online explanation. This\n * function can be overridden to provide custom error handling.\n *\n * @sample highcharts/chart/highcharts-error/\n * Custom error handler\n *\n * @function Highcharts.error\n *\n * @param {number|string} code\n * The error code. See\n * [errors.xml](https://github.com/highcharts/highcharts/blob/master/errors/errors.xml)\n * for available codes. If it is a string, the error message is printed\n * directly in the console.\n *\n * @param {boolean} [stop=false]\n * Whether to throw an error or just log a warning in the console.\n *\n * @param {Highcharts.Chart} [chart]\n * Reference to the chart that causes the error. Used in 'debugger'\n * module to display errors directly on the chart.\n * Important note: This argument is undefined for errors that lack\n * access to the Chart instance. In such case, the error will be\n * displayed on the last created chart.\n *\n * @param {Highcharts.Dictionary} [params]\n * Additional parameters for the generated message.\n *\n * @return {void}\n */\n function error(code, stop, chart, params) {\n var severity = stop ? 'Highcharts error' : 'Highcharts warning';\n if (code === 32) {\n code = severity + \": Deprecated member\";\n }\n var isCode = isNumber(code);\n var message = isCode ?\n severity + \" #\" + code + \": www.highcharts.com/errors/\" + code + \"/\" :\n code.toString();\n var defaultHandler = function () {\n if (stop) {\n throw new Error(message);\n }\n // else ...\n if (win.console &&\n error.messages.indexOf(message) === -1 // prevent console flooting\n ) {\n console.warn(message); // eslint-disable-line no-console\n }\n };\n if (typeof params !== 'undefined') {\n var additionalMessages_1 = '';\n if (isCode) {\n message += '?';\n }\n objectEach(params, function (value, key) {\n additionalMessages_1 += \"\\n - \" + key + \": \" + value;\n if (isCode) {\n message += encodeURI(key) + '=' + encodeURI(value);\n }\n });\n message += additionalMessages_1;\n }\n fireEvent(H, 'displayError', { chart: chart, code: code, message: message, params: params }, defaultHandler);\n error.messages.push(message);\n }\n (function (error) {\n error.messages = [];\n })(error || (error = {}));\n /* eslint-disable valid-jsdoc */\n /**\n * Utility function to deep merge two or more objects and return a third object.\n * If the first argument is true, the contents of the second object is copied\n * into the first object. The merge function can also be used with a single\n * object argument to create a deep copy of an object.\n *\n * @function Highcharts.merge\n *\n * @param {boolean} extend\n * Whether to extend the left-side object (a) or return a whole new\n * object.\n *\n * @param {T|undefined} a\n * The first object to extend. When only this is given, the function\n * returns a deep copy.\n *\n * @param {...Array} [n]\n * An object to merge into the previous one.\n *\n * @return {T}\n * The merged object. If the first argument is true, the return is the\n * same as the second argument.\n */ /**\n * Utility function to deep merge two or more objects and return a third object.\n * The merge function can also be used with a single object argument to create a\n * deep copy of an object.\n *\n * @function Highcharts.merge\n *\n * @param {T|undefined} a\n * The first object to extend. When only this is given, the function\n * returns a deep copy.\n *\n * @param {...Array} [n]\n * An object to merge into the previous one.\n *\n * @return {T}\n * The merged object. If the first argument is true, the return is the\n * same as the second argument.\n */\n function merge() {\n /* eslint-enable valid-jsdoc */\n var i,\n args = arguments,\n ret = {};\n var doCopy = function (copy,\n original) {\n // An object is replacing a primitive\n if (typeof copy !== 'object') {\n copy = {};\n }\n objectEach(original, function (value, key) {\n // Prototype pollution (#14883)\n if (key === '__proto__' || key === 'constructor') {\n return;\n }\n // Copy the contents of objects, but not arrays or DOM nodes\n if (isObject(value, true) &&\n !isClass(value) &&\n !isDOMElement(value)) {\n copy[key] = doCopy(copy[key] || {}, value);\n // Primitives and arrays are copied over directly\n }\n else {\n copy[key] = original[key];\n }\n });\n return copy;\n };\n // If first argument is true, copy into the existing object. Used in\n // setOptions.\n if (args[0] === true) {\n ret = args[1];\n args = Array.prototype.slice.call(args, 2);\n }\n // For each argument, extend the return\n var len = args.length;\n for (i = 0; i < len; i++) {\n ret = doCopy(ret, args[i]);\n }\n return ret;\n }\n /**\n * Constrain a value to within a lower and upper threshold.\n *\n * @private\n * @param {number} value The initial value\n * @param {number} min The lower threshold\n * @param {number} max The upper threshold\n * @return {number} Returns a number value within min and max.\n */\n function clamp(value, min, max) {\n return value > min ? value < max ? value : max : min;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Remove settings that have not changed, to avoid unnecessary rendering or\n * computing (#9197).\n * @private\n */\n function cleanRecursively(newer, older) {\n var result = {};\n objectEach(newer, function (_val, key) {\n var ob;\n // Dive into objects (except DOM nodes)\n if (isObject(newer[key], true) &&\n !newer.nodeType && // #10044\n older[key]) {\n ob = cleanRecursively(newer[key], older[key]);\n if (Object.keys(ob).length) {\n result[key] = ob;\n }\n // Arrays, primitives and DOM nodes are copied directly\n }\n else if (isObject(newer[key]) ||\n newer[key] !== older[key]) {\n result[key] = newer[key];\n }\n });\n return result;\n }\n /**\n * Shortcut for parseInt\n *\n * @private\n * @function Highcharts.pInt\n *\n * @param {*} s\n * any\n *\n * @param {number} [mag]\n * Magnitude\n *\n * @return {number}\n * number\n */\n function pInt(s, mag) {\n return parseInt(s, mag || 10);\n }\n /**\n * Utility function to check for string type.\n *\n * @function Highcharts.isString\n *\n * @param {*} s\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a string.\n */\n function isString(s) {\n return typeof s === 'string';\n }\n /**\n * Utility function to check if an item is an array.\n *\n * @function Highcharts.isArray\n *\n * @param {*} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is an array.\n */\n function isArray(obj) {\n var str = Object.prototype.toString.call(obj);\n return str === '[object Array]' || str === '[object Array Iterator]';\n }\n /**\n * Utility function to check if an item is of type object.\n *\n * @function Highcharts.isObject\n *\n * @param {*} obj\n * The item to check.\n *\n * @param {boolean} [strict=false]\n * Also checks that the object is not an array.\n *\n * @return {boolean}\n * True if the argument is an object.\n */\n function isObject(obj, strict) {\n return (!!obj &&\n typeof obj === 'object' &&\n (!strict || !isArray(obj))); // eslint-disable-line @typescript-eslint/no-explicit-any\n }\n /**\n * Utility function to check if an Object is a HTML Element.\n *\n * @function Highcharts.isDOMElement\n *\n * @param {*} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a HTML Element.\n */\n function isDOMElement(obj) {\n return isObject(obj) && typeof obj.nodeType === 'number';\n }\n /**\n * Utility function to check if an Object is a class.\n *\n * @function Highcharts.isClass\n *\n * @param {object|undefined} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a class.\n */\n function isClass(obj) {\n var c = obj && obj.constructor;\n return !!(isObject(obj, true) &&\n !isDOMElement(obj) &&\n (c && c.name && c.name !== 'Object'));\n }\n /**\n * Utility function to check if an item is a number and it is finite (not NaN,\n * Infinity or -Infinity).\n *\n * @function Highcharts.isNumber\n *\n * @param {*} n\n * The item to check.\n *\n * @return {boolean}\n * True if the item is a finite number\n */\n function isNumber(n) {\n return typeof n === 'number' && !isNaN(n) && n < Infinity && n > -Infinity;\n }\n /**\n * Remove the last occurence of an item from an array.\n *\n * @function Highcharts.erase\n *\n * @param {Array<*>} arr\n * The array.\n *\n * @param {*} item\n * The item to remove.\n *\n * @return {void}\n */\n function erase(arr, item) {\n var i = arr.length;\n while (i--) {\n if (arr[i] === item) {\n arr.splice(i, 1);\n break;\n }\n }\n }\n /**\n * Check if an object is null or undefined.\n *\n * @function Highcharts.defined\n *\n * @param {*} obj\n * The object to check.\n *\n * @return {boolean}\n * False if the object is null or undefined, otherwise true.\n */\n function defined(obj) {\n return typeof obj !== 'undefined' && obj !== null;\n }\n /**\n * Set or get an attribute or an object of attributes.\n *\n * To use as a setter, pass a key and a value, or let the second argument be a\n * collection of keys and values. When using a collection, passing a value of\n * `null` or `undefined` will remove the attribute.\n *\n * To use as a getter, pass only a string as the second argument.\n *\n * @function Highcharts.attr\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} elem\n * The DOM element to receive the attribute(s).\n *\n * @param {string|Highcharts.HTMLAttributes|Highcharts.SVGAttributes} [prop]\n * The property or an object of key-value pairs.\n *\n * @param {number|string} [value]\n * The value if a single property is set.\n *\n * @return {string|null|undefined}\n * When used as a getter, return the value.\n */\n function attr(elem, prop, value) {\n var ret;\n // if the prop is a string\n if (isString(prop)) {\n // set the value\n if (defined(value)) {\n elem.setAttribute(prop, value);\n // get the value\n }\n else if (elem && elem.getAttribute) {\n ret = elem.getAttribute(prop);\n // IE7 and below cannot get class through getAttribute (#7850)\n if (!ret && prop === 'class') {\n ret = elem.getAttribute(prop + 'Name');\n }\n }\n // else if prop is defined, it is a hash of key/value pairs\n }\n else {\n objectEach(prop, function (val, key) {\n if (defined(val)) {\n elem.setAttribute(key, val);\n }\n else {\n elem.removeAttribute(key);\n }\n });\n }\n return ret;\n }\n /**\n * Check if an element is an array, and if not, make it into an array.\n *\n * @function Highcharts.splat\n *\n * @param {*} obj\n * The object to splat.\n *\n * @return {Array}\n * The produced or original array.\n */\n function splat(obj) {\n return isArray(obj) ? obj : [obj];\n }\n /**\n * Set a timeout if the delay is given, otherwise perform the function\n * synchronously.\n *\n * @function Highcharts.syncTimeout\n *\n * @param {Function} fn\n * The function callback.\n *\n * @param {number} delay\n * Delay in milliseconds.\n *\n * @param {*} [context]\n * An optional context to send to the function callback.\n *\n * @return {number}\n * An identifier for the timeout that can later be cleared with\n * Highcharts.clearTimeout. Returns -1 if there is no timeout.\n */\n function syncTimeout(fn, delay, context) {\n if (delay > 0) {\n return setTimeout(fn, delay, context);\n }\n fn.call(0, context);\n return -1;\n }\n /**\n * Internal clear timeout. The function checks that the `id` was not removed\n * (e.g. by `chart.destroy()`). For the details see\n * [issue #7901](https://github.com/highcharts/highcharts/issues/7901).\n *\n * @function Highcharts.clearTimeout\n *\n * @param {number} id\n * Id of a timeout.\n *\n * @return {void}\n */\n function internalClearTimeout(id) {\n if (defined(id)) {\n clearTimeout(id);\n }\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Utility function to extend an object with the members of another.\n *\n * @function Highcharts.extend\n *\n * @param {T|undefined} a\n * The object to be extended.\n *\n * @param {Partial} b\n * The object to add to the first one.\n *\n * @return {T}\n * Object a, the original object.\n */\n function extend(a, b) {\n /* eslint-enable valid-jsdoc */\n var n;\n if (!a) {\n a = {};\n }\n for (n in b) { // eslint-disable-line guard-for-in\n a[n] = b[n];\n }\n return a;\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Return the first value that is not null or undefined.\n *\n * @function Highcharts.pick\n *\n * @param {...Array} items\n * Variable number of arguments to inspect.\n *\n * @return {T}\n * The value of the first argument that is not null or undefined.\n */\n function pick() {\n var args = arguments;\n var length = args.length;\n for (var i = 0; i < length; i++) {\n var arg = args[i];\n if (typeof arg !== 'undefined' && arg !== null) {\n return arg;\n }\n }\n }\n /**\n * Set CSS on a given element.\n *\n * @function Highcharts.css\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} el\n * An HTML DOM element.\n *\n * @param {Highcharts.CSSObject} styles\n * Style object with camel case property names.\n *\n * @return {void}\n */\n function css(el, styles) {\n if (H.isMS && !H.svg) { // #2686\n if (styles && typeof styles.opacity !== 'undefined') {\n styles.filter =\n 'alpha(opacity=' + (styles.opacity * 100) + ')';\n }\n }\n extend(el.style, styles);\n }\n /**\n * Utility function to create an HTML element with attributes and styles.\n *\n * @function Highcharts.createElement\n *\n * @param {string} tag\n * The HTML tag.\n *\n * @param {Highcharts.HTMLAttributes} [attribs]\n * Attributes as an object of key-value pairs.\n *\n * @param {Highcharts.CSSObject} [styles]\n * Styles as an object of key-value pairs.\n *\n * @param {Highcharts.HTMLDOMElement} [parent]\n * The parent HTML object.\n *\n * @param {boolean} [nopad=false]\n * If true, remove all padding, border and margin.\n *\n * @return {Highcharts.HTMLDOMElement}\n * The created DOM element.\n */\n function createElement(tag, attribs, styles, parent, nopad) {\n var el = doc.createElement(tag);\n if (attribs) {\n extend(el, attribs);\n }\n if (nopad) {\n css(el, { padding: '0', border: 'none', margin: '0' });\n }\n if (styles) {\n css(el, styles);\n }\n if (parent) {\n parent.appendChild(el);\n }\n return el;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Extend a prototyped class by new members.\n *\n * @function Highcharts.extendClass\n *\n * @param {Highcharts.Class} parent\n * The parent prototype to inherit.\n *\n * @param {Highcharts.Dictionary<*>} members\n * A collection of prototype members to add or override compared to the\n * parent prototype.\n *\n * @return {Highcharts.Class}\n * A new prototype.\n */\n function extendClass(parent, members) {\n var obj = (function () { });\n obj.prototype = new parent(); // eslint-disable-line new-cap\n extend(obj.prototype, members);\n return obj;\n }\n /**\n * Left-pad a string to a given length by adding a character repetitively.\n *\n * @function Highcharts.pad\n *\n * @param {number} number\n * The input string or number.\n *\n * @param {number} [length]\n * The desired string length.\n *\n * @param {string} [padder=0]\n * The character to pad with.\n *\n * @return {string}\n * The padded string.\n */\n function pad(number, length, padder) {\n return new Array((length || 2) +\n 1 -\n String(number)\n .replace('-', '')\n .length).join(padder || '0') + number;\n }\n /**\n * Return a length based on either the integer value, or a percentage of a base.\n *\n * @function Highcharts.relativeLength\n *\n * @param {Highcharts.RelativeSize} value\n * A percentage string or a number.\n *\n * @param {number} base\n * The full length that represents 100%.\n *\n * @param {number} [offset=0]\n * A pixel offset to apply for percentage values. Used internally in\n * axis positioning.\n *\n * @return {number}\n * The computed length.\n */\n function relativeLength(value, base, offset) {\n return (/%$/).test(value) ?\n (base * parseFloat(value) / 100) + (offset || 0) :\n parseFloat(value);\n }\n /**\n * Wrap a method with extended functionality, preserving the original function.\n *\n * @function Highcharts.wrap\n *\n * @param {*} obj\n * The context object that the method belongs to. In real cases, this is\n * often a prototype.\n *\n * @param {string} method\n * The name of the method to extend.\n *\n * @param {Highcharts.WrapProceedFunction} func\n * A wrapper function callback. This function is called with the same\n * arguments as the original function, except that the original function\n * is unshifted and passed as the first argument.\n */\n function wrap(obj, method, func) {\n var proceed = obj[method];\n obj[method] = function () {\n var args = Array.prototype.slice.call(arguments),\n outerArgs = arguments,\n ctx = this;\n ctx.proceed = function () {\n proceed.apply(ctx, arguments.length ? arguments : outerArgs);\n };\n args.unshift(proceed);\n var ret = func.apply(this,\n args);\n ctx.proceed = null;\n return ret;\n };\n }\n /**\n * Get the magnitude of a number.\n *\n * @function Highcharts.getMagnitude\n *\n * @param {number} num\n * The number.\n *\n * @return {number}\n * The magnitude, where 1-9 are magnitude 1, 10-99 magnitude 2 etc.\n */\n function getMagnitude(num) {\n return Math.pow(10, Math.floor(Math.log(num) / Math.LN10));\n }\n /**\n * Take an interval and normalize it to multiples of round numbers.\n *\n * @deprecated\n * @function Highcharts.normalizeTickInterval\n *\n * @param {number} interval\n * The raw, un-rounded interval.\n *\n * @param {Array<*>} [multiples]\n * Allowed multiples.\n *\n * @param {number} [magnitude]\n * The magnitude of the number.\n *\n * @param {boolean} [allowDecimals]\n * Whether to allow decimals.\n *\n * @param {boolean} [hasTickAmount]\n * If it has tickAmount, avoid landing on tick intervals lower than\n * original.\n *\n * @return {number}\n * The normalized interval.\n *\n * @todo\n * Move this function to the Axis prototype. It is here only for historical\n * reasons.\n */\n function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {\n var i,\n retInterval = interval;\n // round to a tenfold of 1, 2, 2.5 or 5\n magnitude = pick(magnitude, 1);\n var normalized = interval / magnitude;\n // multiples for a linear scale\n if (!multiples) {\n multiples = hasTickAmount ?\n // Finer grained ticks when the tick amount is hard set, including\n // when alignTicks is true on multiple axes (#4580).\n [1, 1.2, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10] :\n // Else, let ticks fall on rounder numbers\n [1, 2, 2.5, 5, 10];\n // the allowDecimals option\n if (allowDecimals === false) {\n if (magnitude === 1) {\n multiples = multiples.filter(function (num) {\n return num % 1 === 0;\n });\n }\n else if (magnitude <= 0.1) {\n multiples = [1 / magnitude];\n }\n }\n }\n // normalize the interval to the nearest multiple\n for (i = 0; i < multiples.length; i++) {\n retInterval = multiples[i];\n // only allow tick amounts smaller than natural\n if ((hasTickAmount &&\n retInterval * magnitude >= interval) ||\n (!hasTickAmount &&\n (normalized <=\n (multiples[i] +\n (multiples[i + 1] || multiples[i])) / 2))) {\n break;\n }\n }\n // Multiply back to the correct magnitude. Correct floats to appropriate\n // precision (#6085).\n retInterval = correctFloat(retInterval * magnitude, -Math.round(Math.log(0.001) / Math.LN10));\n return retInterval;\n }\n /**\n * Sort an object array and keep the order of equal items. The ECMAScript\n * standard does not specify the behaviour when items are equal.\n *\n * @function Highcharts.stableSort\n *\n * @param {Array<*>} arr\n * The array to sort.\n *\n * @param {Function} sortFunction\n * The function to sort it with, like with regular Array.prototype.sort.\n */\n function stableSort(arr, sortFunction) {\n // @todo It seems like Chrome since v70 sorts in a stable way internally,\n // plus all other browsers do it, so over time we may be able to remove this\n // function\n var length = arr.length;\n var sortValue,\n i;\n // Add index to each item\n for (i = 0; i < length; i++) {\n arr[i].safeI = i; // stable sort index\n }\n arr.sort(function (a, b) {\n sortValue = sortFunction(a, b);\n return sortValue === 0 ? a.safeI - b.safeI : sortValue;\n });\n // Remove index from items\n for (i = 0; i < length; i++) {\n delete arr[i].safeI; // stable sort index\n }\n }\n /**\n * Non-recursive method to find the lowest member of an array. `Math.min` raises\n * a maximum call stack size exceeded error in Chrome when trying to apply more\n * than 150.000 points. This method is slightly slower, but safe.\n *\n * @function Highcharts.arrayMin\n *\n * @param {Array<*>} data\n * An array of numbers.\n *\n * @return {number}\n * The lowest number.\n */\n function arrayMin(data) {\n var i = data.length,\n min = data[0];\n while (i--) {\n if (data[i] < min) {\n min = data[i];\n }\n }\n return min;\n }\n /**\n * Non-recursive method to find the lowest member of an array. `Math.max` raises\n * a maximum call stack size exceeded error in Chrome when trying to apply more\n * than 150.000 points. This method is slightly slower, but safe.\n *\n * @function Highcharts.arrayMax\n *\n * @param {Array<*>} data\n * An array of numbers.\n *\n * @return {number}\n * The highest number.\n */\n function arrayMax(data) {\n var i = data.length,\n max = data[0];\n while (i--) {\n if (data[i] > max) {\n max = data[i];\n }\n }\n return max;\n }\n /**\n * Utility method that destroys any SVGElement instances that are properties on\n * the given object. It loops all properties and invokes destroy if there is a\n * destroy method. The property is then delete.\n *\n * @function Highcharts.destroyObjectProperties\n *\n * @param {*} obj\n * The object to destroy properties on.\n *\n * @param {*} [except]\n * Exception, do not destroy this property, only delete it.\n */\n function destroyObjectProperties(obj, except) {\n objectEach(obj, function (val, n) {\n // If the object is non-null and destroy is defined\n if (val && val !== except && val.destroy) {\n // Invoke the destroy\n val.destroy();\n }\n // Delete the property from the object.\n delete obj[n];\n });\n }\n /**\n * Discard a HTML element\n *\n * @function Highcharts.discardElement\n *\n * @param {Highcharts.HTMLDOMElement} element\n * The HTML node to discard.\n */\n function discardElement(element) {\n if (element && element.parentElement) {\n element.parentElement.removeChild(element);\n }\n }\n /**\n * Fix JS round off float errors.\n *\n * @function Highcharts.correctFloat\n *\n * @param {number} num\n * A float number to fix.\n *\n * @param {number} [prec=14]\n * The precision.\n *\n * @return {number}\n * The corrected float number.\n */\n function correctFloat(num, prec) {\n // When the number is higher than 1e14 use the number (#16275)\n return num > 1e14 ? num : parseFloat(num.toPrecision(prec || 14));\n }\n /**\n * The time unit lookup\n *\n * @ignore\n */\n var timeUnits = {\n millisecond: 1,\n second: 1000,\n minute: 60000,\n hour: 3600000,\n day: 24 * 3600000,\n week: 7 * 24 * 3600000,\n month: 28 * 24 * 3600000,\n year: 364 * 24 * 3600000\n };\n /**\n * Easing definition\n *\n * @private\n * @function Math.easeInOutSine\n *\n * @param {number} pos\n * Current position, ranging from 0 to 1.\n *\n * @return {number}\n * Ease result\n */\n Math.easeInOutSine = function (pos) {\n return -0.5 * (Math.cos(Math.PI * pos) - 1);\n };\n /**\n * Returns the value of a property path on a given object.\n *\n * @private\n * @function getNestedProperty\n *\n * @param {string} path\n * Path to the property, for example `custom.myValue`.\n *\n * @param {unknown} obj\n * Instance containing the property on the specific path.\n *\n * @return {unknown}\n * The unknown property value.\n */\n function getNestedProperty(path, parent) {\n var pathElements = path.split('.');\n while (pathElements.length && defined(parent)) {\n var pathElement = pathElements.shift();\n // Filter on the key\n if (typeof pathElement === 'undefined' ||\n pathElement === '__proto__') {\n return; // undefined\n }\n var child = parent[pathElement];\n // Filter on the child\n if (!defined(child) ||\n typeof child === 'function' ||\n typeof child.nodeType === 'number' ||\n child === win) {\n return; // undefined\n }\n // Else, proceed\n parent = child;\n }\n return parent;\n }\n /**\n * Get the computed CSS value for given element and property, only for numerical\n * properties. For width and height, the dimension of the inner box (excluding\n * padding) is returned. Used for fitting the chart within the container.\n *\n * @function Highcharts.getStyle\n *\n * @param {Highcharts.HTMLDOMElement} el\n * An HTML element.\n *\n * @param {string} prop\n * The property name.\n *\n * @param {boolean} [toInt=true]\n * Parse to integer.\n *\n * @return {number|string|undefined}\n * The style value.\n */\n function getStyle(el, prop, toInt) {\n var customGetStyle = (H.getStyle || // oldie getStyle\n getStyle);\n var style;\n // For width and height, return the actual inner pixel size (#4913)\n if (prop === 'width') {\n var offsetWidth = Math.min(el.offsetWidth,\n el.scrollWidth);\n // In flex boxes, we need to use getBoundingClientRect and floor it,\n // because scrollWidth doesn't support subpixel precision (#6427) ...\n var boundingClientRectWidth = el.getBoundingClientRect &&\n el.getBoundingClientRect().width;\n // ...unless if the containing div or its parents are transform-scaled\n // down, in which case the boundingClientRect can't be used as it is\n // also scaled down (#9871, #10498).\n if (boundingClientRectWidth < offsetWidth &&\n boundingClientRectWidth >= offsetWidth - 1) {\n offsetWidth = Math.floor(boundingClientRectWidth);\n }\n return Math.max(0, // #8377\n (offsetWidth -\n (customGetStyle(el, 'padding-left', true) || 0) -\n (customGetStyle(el, 'padding-right', true) || 0)));\n }\n if (prop === 'height') {\n return Math.max(0, // #8377\n (Math.min(el.offsetHeight, el.scrollHeight) -\n (customGetStyle(el, 'padding-top', true) || 0) -\n (customGetStyle(el, 'padding-bottom', true) || 0)));\n }\n if (!win.getComputedStyle) {\n // SVG not supported, forgot to load oldie.js?\n error(27, true);\n }\n // Otherwise, get the computed style\n var css = win.getComputedStyle(el,\n undefined); // eslint-disable-line no-undefined\n if (css) {\n style = css.getPropertyValue(prop);\n if (pick(toInt, prop !== 'opacity')) {\n style = pInt(style);\n }\n }\n return style;\n }\n /**\n * Search for an item in an array.\n *\n * @function Highcharts.inArray\n *\n * @deprecated\n *\n * @param {*} item\n * The item to search for.\n *\n * @param {Array<*>} arr\n * The array or node collection to search in.\n *\n * @param {number} [fromIndex=0]\n * The index to start searching from.\n *\n * @return {number}\n * The index within the array, or -1 if not found.\n */\n function inArray(item, arr, fromIndex) {\n error(32, false, void 0, { 'Highcharts.inArray': 'use Array.indexOf' });\n return arr.indexOf(item, fromIndex);\n }\n /**\n * Return the value of the first element in the array that satisfies the\n * provided testing function.\n *\n * @function Highcharts.find\n *\n * @param {Array} arr\n * The array to test.\n *\n * @param {Function} callback\n * The callback function. The function receives the item as the first\n * argument. Return `true` if this item satisfies the condition.\n *\n * @return {T|undefined}\n * The value of the element.\n */\n var find = Array.prototype.find ?\n function (arr,\n callback) {\n return arr.find(callback);\n } :\n // Legacy implementation. PhantomJS, IE <= 11 etc. #7223.\n function (arr, callback) {\n var i;\n var length = arr.length;\n for (i = 0; i < length; i++) {\n if (callback(arr[i], i)) { // eslint-disable-line node/callback-return\n return arr[i];\n }\n }\n };\n /**\n * Returns an array of a given object's own properties.\n *\n * @function Highcharts.keys\n * @deprecated\n *\n * @param {*} obj\n * The object of which the properties are to be returned.\n *\n * @return {Array}\n * An array of strings that represents all the properties.\n */\n function keys(obj) {\n error(32, false, void 0, { 'Highcharts.keys': 'use Object.keys' });\n return Object.keys(obj);\n }\n /**\n * Get the element's offset position, corrected for `overflow: auto`.\n *\n * @function Highcharts.offset\n *\n * @param {global.Element} el\n * The DOM element.\n *\n * @return {Highcharts.OffsetObject}\n * An object containing `left` and `top` properties for the position in\n * the page.\n */\n function offset(el) {\n var docElem = doc.documentElement,\n box = (el.parentElement || el.parentNode) ?\n el.getBoundingClientRect() :\n { top: 0,\n left: 0,\n width: 0,\n height: 0 };\n return {\n top: box.top + (win.pageYOffset || docElem.scrollTop) -\n (docElem.clientTop || 0),\n left: box.left + (win.pageXOffset || docElem.scrollLeft) -\n (docElem.clientLeft || 0),\n width: box.width,\n height: box.height\n };\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Iterate over object key pairs in an object.\n *\n * @function Highcharts.objectEach\n *\n * @param {*} obj\n * The object to iterate over.\n *\n * @param {Highcharts.ObjectEachCallbackFunction} fn\n * The iterator callback. It passes three arguments:\n * * value - The property value.\n * * key - The property key.\n * * obj - The object that objectEach is being applied to.\n *\n * @param {T} [ctx]\n * The context.\n *\n * @return {void}\n */\n function objectEach(obj, fn, ctx) {\n /* eslint-enable valid-jsdoc */\n for (var key in obj) {\n if (Object.hasOwnProperty.call(obj, key)) {\n fn.call(ctx || obj[key], obj[key], key, obj);\n }\n }\n }\n /**\n * Iterate over an array.\n *\n * @deprecated\n * @function Highcharts.each\n *\n * @param {Array<*>} arr\n * The array to iterate over.\n *\n * @param {Function} fn\n * The iterator callback. It passes three arguments:\n * - `item`: The array item.\n * - `index`: The item's index in the array.\n * - `arr`: The array that each is being applied to.\n *\n * @param {*} [ctx]\n * The context.\n *\n * @return {void}\n */\n /**\n * Filter an array by a callback.\n *\n * @deprecated\n * @function Highcharts.grep\n *\n * @param {Array<*>} arr\n * The array to filter.\n *\n * @param {Function} callback\n * The callback function. The function receives the item as the first\n * argument. Return `true` if the item is to be preserved.\n *\n * @return {Array<*>}\n * A new, filtered array.\n */\n /**\n * Map an array by a callback.\n *\n * @deprecated\n * @function Highcharts.map\n *\n * @param {Array<*>} arr\n * The array to map.\n *\n * @param {Function} fn\n * The callback function. Return the new value for the new array.\n *\n * @return {Array<*>}\n * A new array item with modified items.\n */\n /**\n * Reduce an array to a single value.\n *\n * @deprecated\n * @function Highcharts.reduce\n *\n * @param {Array<*>} arr\n * The array to reduce.\n *\n * @param {Function} fn\n * The callback function. Return the reduced value. Receives 4\n * arguments: Accumulated/reduced value, current value, current array\n * index, and the array.\n *\n * @param {*} initialValue\n * The initial value of the accumulator.\n *\n * @return {*}\n * The reduced value.\n */\n /**\n * Test whether at least one element in the array passes the test implemented by\n * the provided function.\n *\n * @deprecated\n * @function Highcharts.some\n *\n * @param {Array<*>} arr\n * The array to test\n *\n * @param {Function} fn\n * The function to run on each item. Return truty to pass the test.\n * Receives arguments `currentValue`, `index` and `array`.\n *\n * @param {*} ctx\n * The context.\n *\n * @return {boolean}\n */\n objectEach({\n map: 'map',\n each: 'forEach',\n grep: 'filter',\n reduce: 'reduce',\n some: 'some'\n }, function (val, key) {\n H[key] = function (arr) {\n var _a;\n error(32, false, void 0, (_a = {}, _a[\"Highcharts.\" + key] = \"use Array.\" + val, _a));\n return Array.prototype[val].apply(arr, [].slice.call(arguments, 1));\n };\n });\n /* eslint-disable valid-jsdoc */\n /**\n * Add an event listener.\n *\n * @function Highcharts.addEvent\n *\n * @param {Highcharts.Class|T} el\n * The element or object to add a listener to. It can be a\n * {@link HTMLDOMElement}, an {@link SVGElement} or any other object.\n *\n * @param {string} type\n * The event type.\n *\n * @param {Highcharts.EventCallbackFunction|Function} fn\n * The function callback to execute when the event is fired.\n *\n * @param {Highcharts.EventOptionsObject} [options]\n * Options for adding the event.\n *\n * @return {Function}\n * A callback function to remove the added event.\n */\n function addEvent(el, type, fn, options) {\n /* eslint-enable valid-jsdoc */\n if (options === void 0) { options = {}; }\n // Add hcEvents to either the prototype (in case we're running addEvent on a\n // class) or the instance. If hasOwnProperty('hcEvents') is false, it is\n // inherited down the prototype chain, in which case we need to set the\n // property on this instance (which may itself be a prototype).\n var owner = typeof el === 'function' && el.prototype || el;\n if (!Object.hasOwnProperty.call(owner, 'hcEvents')) {\n owner.hcEvents = {};\n }\n var events = owner.hcEvents;\n // Allow click events added to points, otherwise they will be prevented by\n // the TouchPointer.pinch function after a pinch zoom operation (#7091).\n if (H.Point && // without H a dependency loop occurs\n el instanceof H.Point &&\n el.series &&\n el.series.chart) {\n el.series.chart.runTrackerClick = true;\n }\n // Handle DOM events\n // If the browser supports passive events, add it to improve performance\n // on touch events (#11353).\n var addEventListener = (el.addEventListener || H.addEventListenerPolyfill);\n if (addEventListener) {\n addEventListener.call(el, type, fn, H.supportsPassiveEvents ? {\n passive: options.passive === void 0 ?\n type.indexOf('touch') !== -1 : options.passive,\n capture: false\n } : false);\n }\n if (!events[type]) {\n events[type] = [];\n }\n var eventObject = {\n fn: fn,\n order: typeof options.order === 'number' ? options.order : Infinity\n };\n events[type].push(eventObject);\n // Order the calls\n events[type].sort(function (a, b) { return a.order - b.order; });\n // Return a function that can be called to remove this event.\n return function () {\n removeEvent(el, type, fn);\n };\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Remove an event that was added with {@link Highcharts#addEvent}.\n *\n * @function Highcharts.removeEvent\n *\n * @param {Highcharts.Class|T} el\n * The element to remove events on.\n *\n * @param {string} [type]\n * The type of events to remove. If undefined, all events are removed\n * from the element.\n *\n * @param {Highcharts.EventCallbackFunction} [fn]\n * The specific callback to remove. If undefined, all events that match\n * the element and optionally the type are removed.\n *\n * @return {void}\n */\n function removeEvent(el, type, fn) {\n /* eslint-enable valid-jsdoc */\n /**\n * @private\n */\n function removeOneEvent(type, fn) {\n var removeEventListener = (el.removeEventListener || H.removeEventListenerPolyfill);\n if (removeEventListener) {\n removeEventListener.call(el, type, fn, false);\n }\n }\n /**\n * @private\n */\n function removeAllEvents(eventCollection) {\n var types,\n len;\n if (!el.nodeName) {\n return; // break on non-DOM events\n }\n if (type) {\n types = {};\n types[type] = true;\n }\n else {\n types = eventCollection;\n }\n objectEach(types, function (_val, n) {\n if (eventCollection[n]) {\n len = eventCollection[n].length;\n while (len--) {\n removeOneEvent(n, eventCollection[n][len].fn);\n }\n }\n });\n }\n var owner = typeof el === 'function' && el.prototype || el;\n if (Object.hasOwnProperty.call(owner, 'hcEvents')) {\n var events = owner.hcEvents;\n if (type) {\n var typeEvents = (events[type] || []);\n if (fn) {\n events[type] = typeEvents.filter(function (obj) {\n return fn !== obj.fn;\n });\n removeOneEvent(type, fn);\n }\n else {\n removeAllEvents(events);\n events[type] = [];\n }\n }\n else {\n removeAllEvents(events);\n delete owner.hcEvents;\n }\n }\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Fire an event that was registered with {@link Highcharts#addEvent}.\n *\n * @function Highcharts.fireEvent\n *\n * @param {T} el\n * The object to fire the event on. It can be a {@link HTMLDOMElement},\n * an {@link SVGElement} or any other object.\n *\n * @param {string} type\n * The type of event.\n *\n * @param {Highcharts.Dictionary<*>|Event} [eventArguments]\n * Custom event arguments that are passed on as an argument to the event\n * handler.\n *\n * @param {Highcharts.EventCallbackFunction|Function} [defaultFunction]\n * The default function to execute if the other listeners haven't\n * returned false.\n *\n * @return {void}\n */\n function fireEvent(el, type, eventArguments, defaultFunction) {\n /* eslint-enable valid-jsdoc */\n var e,\n i;\n eventArguments = eventArguments || {};\n if (doc.createEvent &&\n (el.dispatchEvent ||\n (el.fireEvent &&\n // Enable firing events on Highcharts instance.\n el !== H))) {\n e = doc.createEvent('Events');\n e.initEvent(type, true, true);\n eventArguments = extend(e, eventArguments);\n if (el.dispatchEvent) {\n el.dispatchEvent(eventArguments);\n }\n else {\n el.fireEvent(type, eventArguments);\n }\n }\n else if (el.hcEvents) {\n if (!eventArguments.target) {\n // We're running a custom event\n extend(eventArguments, {\n // Attach a simple preventDefault function to skip\n // default handler if called. The built-in\n // defaultPrevented property is not overwritable (#5112)\n preventDefault: function () {\n eventArguments.defaultPrevented = true;\n },\n // Setting target to native events fails with clicking\n // the zoom-out button in Chrome.\n target: el,\n // If the type is not set, we're running a custom event\n // (#2297). If it is set, we're running a browser event,\n // and setting it will cause en error in IE8 (#2465).\n type: type\n });\n }\n var events = [];\n var object = el;\n var multilevel = false;\n // Recurse up the inheritance chain and collect hcEvents set as own\n // objects on the prototypes.\n while (object.hcEvents) {\n if (Object.hasOwnProperty.call(object, 'hcEvents') &&\n object.hcEvents[type]) {\n if (events.length) {\n multilevel = true;\n }\n events.unshift.apply(events, object.hcEvents[type]);\n }\n object = Object.getPrototypeOf(object);\n }\n // For performance reasons, only sort the event handlers in case we are\n // dealing with multiple levels in the prototype chain. Otherwise, the\n // events are already sorted in the addEvent function.\n if (multilevel) {\n // Order the calls\n events.sort(function (a, b) { return a.order - b.order; });\n }\n // Call the collected event handlers\n events.forEach(function (obj) {\n // If the event handler returns false, prevent the default handler\n // from executing\n if (obj.fn.call(el, eventArguments) === false) {\n eventArguments.preventDefault();\n }\n });\n }\n // Run the default if not prevented\n if (defaultFunction && !eventArguments.defaultPrevented) {\n defaultFunction.call(el, eventArguments);\n }\n }\n var serialMode;\n /**\n * Get a unique key for using in internal element id's and pointers. The key is\n * composed of a random hash specific to this Highcharts instance, and a\n * counter.\n *\n * @example\n * let id = uniqueKey(); // => 'highcharts-x45f6hp-0'\n *\n * @function Highcharts.uniqueKey\n *\n * @return {string}\n * A unique key.\n */\n var uniqueKey = (function () {\n var hash = Math.random().toString(36).substring(2, 9) + '-';\n var id = 0;\n return function () {\n return 'highcharts-' + (serialMode ? '' : hash) + id++;\n };\n }());\n /**\n * Activates a serial mode for element IDs provided by\n * {@link Highcharts.uniqueKey}. This mode can be used in automated tests, where\n * a simple comparison of two rendered SVG graphics is needed.\n *\n * **Note:** This is only for testing purposes and will break functionality in\n * webpages with multiple charts.\n *\n * @example\n * if (\n * process &&\n * process.env.NODE_ENV === 'development'\n * ) {\n * Highcharts.useSerialIds(true);\n * }\n *\n * @function Highcharts.useSerialIds\n *\n * @param {boolean} [mode]\n * Changes the state of serial mode.\n *\n * @return {boolean|undefined}\n * State of the serial mode.\n */\n function useSerialIds(mode) {\n return (serialMode = pick(mode, serialMode));\n }\n function isFunction(obj) {\n return typeof obj === 'function';\n }\n // Register Highcharts as a plugin in jQuery\n if (win.jQuery) {\n /**\n * Highcharts-extended JQuery.\n *\n * @external JQuery\n */\n /**\n * Helper function to return the chart of the current JQuery selector\n * element.\n *\n * @function external:JQuery#highcharts\n *\n * @return {Highcharts.Chart}\n * The chart that is linked to the JQuery selector element.\n */ /**\n * Factory function to create a chart in the current JQuery selector\n * element.\n *\n * @function external:JQuery#highcharts\n *\n * @param {'Chart'|'Map'|'StockChart'|string} [className]\n * Name of the factory class in the Highcharts namespace.\n *\n * @param {Highcharts.Options} [options]\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external\n * images are loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n *\n * @return {JQuery}\n * The current JQuery selector.\n */\n win.jQuery.fn.highcharts = function () {\n var args = [].slice.call(arguments);\n if (this[0]) { // this[0] is the renderTo div\n // Create the chart\n if (args[0]) {\n new H[ // eslint-disable-line computed-property-spacing, no-new\n // Constructor defaults to Chart\n isString(args[0]) ? args.shift() : 'Chart'](this[0], args[0], args[1]);\n return this;\n }\n // When called without parameters or with the return argument,\n // return an existing chart\n return charts[attr(this[0], 'data-highcharts-chart')];\n }\n };\n }\n /* *\n *\n * Default Export\n *\n * */\n // TODO use named exports when supported.\n var Utilities = {\n addEvent: addEvent,\n arrayMax: arrayMax,\n arrayMin: arrayMin,\n attr: attr,\n clamp: clamp,\n cleanRecursively: cleanRecursively,\n clearTimeout: internalClearTimeout,\n correctFloat: correctFloat,\n createElement: createElement,\n css: css,\n defined: defined,\n destroyObjectProperties: destroyObjectProperties,\n discardElement: discardElement,\n erase: erase,\n error: error,\n extend: extend,\n extendClass: extendClass,\n find: find,\n fireEvent: fireEvent,\n getMagnitude: getMagnitude,\n getNestedProperty: getNestedProperty,\n getStyle: getStyle,\n inArray: inArray,\n isArray: isArray,\n isClass: isClass,\n isDOMElement: isDOMElement,\n isFunction: isFunction,\n isNumber: isNumber,\n isObject: isObject,\n isString: isString,\n keys: keys,\n merge: merge,\n normalizeTickInterval: normalizeTickInterval,\n objectEach: objectEach,\n offset: offset,\n pad: pad,\n pick: pick,\n pInt: pInt,\n relativeLength: relativeLength,\n removeEvent: removeEvent,\n splat: splat,\n stableSort: stableSort,\n syncTimeout: syncTimeout,\n timeUnits: timeUnits,\n uniqueKey: uniqueKey,\n useSerialIds: useSerialIds,\n wrap: wrap\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * An animation configuration. Animation configurations can also be defined as\n * booleans, where `false` turns off animation and `true` defaults to a duration\n * of 500ms and defer of 0ms.\n *\n * @interface Highcharts.AnimationOptionsObject\n */ /**\n * A callback function to exectute when the animation finishes.\n * @name Highcharts.AnimationOptionsObject#complete\n * @type {Function|undefined}\n */ /**\n * The animation defer in milliseconds.\n * @name Highcharts.AnimationOptionsObject#defer\n * @type {number|undefined}\n */ /**\n * The animation duration in milliseconds.\n * @name Highcharts.AnimationOptionsObject#duration\n * @type {number|undefined}\n */ /**\n * The name of an easing function as defined on the `Math` object.\n * @name Highcharts.AnimationOptionsObject#easing\n * @type {string|Function|undefined}\n */ /**\n * A callback function to execute on each step of each attribute or CSS property\n * that's being animated. The first argument contains information about the\n * animation and progress.\n * @name Highcharts.AnimationOptionsObject#step\n * @type {Function|undefined}\n */\n /**\n * Creates a frame for the animated SVG element.\n *\n * @callback Highcharts.AnimationStepCallbackFunction\n *\n * @param {Highcharts.SVGElement} this\n * The SVG element to animate.\n *\n * @return {void}\n */\n /**\n * Interface description for a class.\n *\n * @interface Highcharts.Class\n * @extends Function\n */ /**\n * Class costructor.\n * @function Highcharts.Class#new\n * @param {...Array<*>} args\n * Constructor arguments.\n * @return {T}\n * Class instance.\n */\n /**\n * A style object with camel case property names to define visual appearance of\n * a SVG element or HTML element. The properties can be whatever styles are\n * supported on the given SVG or HTML element.\n *\n * @example\n * {\n * fontFamily: 'monospace',\n * fontSize: '1.2em'\n * }\n *\n * @interface Highcharts.CSSObject\n */ /**\n * @name Highcharts.CSSObject#[key:string]\n * @type {boolean|number|string|undefined}\n */ /**\n * Background style for the element.\n * @name Highcharts.CSSObject#background\n * @type {string|undefined}\n */ /**\n * Background color of the element.\n * @name Highcharts.CSSObject#backgroundColor\n * @type {Highcharts.ColorString|undefined}\n */ /**\n * Border style for the element.\n * @name Highcharts.CSSObject#border\n * @type {string|undefined}\n */ /**\n * Radius of the element border.\n * @name Highcharts.CSSObject#borderRadius\n * @type {number|undefined}\n */ /**\n * Color used in the element. The 'contrast' option is a Highcharts custom\n * property that results in black or white, depending on the background of the\n * element.\n * @name Highcharts.CSSObject#color\n * @type {'contrast'|Highcharts.ColorString|undefined}\n */ /**\n * Style of the mouse cursor when resting over the element.\n * @name Highcharts.CSSObject#cursor\n * @type {Highcharts.CursorValue|undefined}\n */ /**\n * Font family of the element text. Multiple values have to be in decreasing\n * preference order and separated by comma.\n * @name Highcharts.CSSObject#fontFamily\n * @type {string|undefined}\n */ /**\n * Font size of the element text.\n * @name Highcharts.CSSObject#fontSize\n * @type {string|undefined}\n */ /**\n * Font weight of the element text.\n * @name Highcharts.CSSObject#fontWeight\n * @type {string|undefined}\n */ /**\n * Height of the element.\n * @name Highcharts.CSSObject#height\n * @type {number|undefined}\n */ /**\n * Width of the element border.\n * @name Highcharts.CSSObject#lineWidth\n * @type {number|undefined}\n */ /**\n * Opacity of the element.\n * @name Highcharts.CSSObject#opacity\n * @type {number|undefined}\n */ /**\n * Space around the element content.\n * @name Highcharts.CSSObject#padding\n * @type {string|undefined}\n */ /**\n * Behaviour of the element when the mouse cursor rests over it.\n * @name Highcharts.CSSObject#pointerEvents\n * @type {string|undefined}\n */ /**\n * Positioning of the element.\n * @name Highcharts.CSSObject#position\n * @type {string|undefined}\n */ /**\n * Alignment of the element text.\n * @name Highcharts.CSSObject#textAlign\n * @type {string|undefined}\n */ /**\n * Additional decoration of the element text.\n * @name Highcharts.CSSObject#textDecoration\n * @type {string|undefined}\n */ /**\n * Outline style of the element text.\n * @name Highcharts.CSSObject#textOutline\n * @type {string|undefined}\n */ /**\n * Line break style of the element text. Highcharts SVG elements support\n * `ellipsis` when a `width` is set.\n * @name Highcharts.CSSObject#textOverflow\n * @type {string|undefined}\n */ /**\n * Top spacing of the element relative to the parent element.\n * @name Highcharts.CSSObject#top\n * @type {string|undefined}\n */ /**\n * Animated transition of selected element properties.\n * @name Highcharts.CSSObject#transition\n * @type {string|undefined}\n */ /**\n * Line break style of the element text.\n * @name Highcharts.CSSObject#whiteSpace\n * @type {string|undefined}\n */ /**\n * Width of the element.\n * @name Highcharts.CSSObject#width\n * @type {number|undefined}\n */\n /**\n * All possible cursor styles.\n *\n * @typedef {'alias'|'all-scroll'|'auto'|'cell'|'col-resize'|'context-menu'|'copy'|'crosshair'|'default'|'e-resize'|'ew-resize'|'grab'|'grabbing'|'help'|'move'|'n-resize'|'ne-resize'|'nesw-resize'|'no-drop'|'none'|'not-allowed'|'ns-resize'|'nw-resize'|'nwse-resize'|'pointer'|'progress'|'row-resize'|'s-resize'|'se-resize'|'sw-resize'|'text'|'vertical-text'|'w-resize'|'wait'|'zoom-in'|'zoom-out'} Highcharts.CursorValue\n */\n /**\n * All possible dash styles.\n *\n * @typedef {'Dash'|'DashDot'|'Dot'|'LongDash'|'LongDashDot'|'LongDashDotDot'|'ShortDash'|'ShortDashDot'|'ShortDashDotDot'|'ShortDot'|'Solid'} Highcharts.DashStyleValue\n */\n /**\n * Generic dictionary in TypeScript notation.\n * Use the native `AnyRecord` instead.\n *\n * @deprecated\n * @interface Highcharts.Dictionary\n */ /**\n * @name Highcharts.Dictionary#[key:string]\n * @type {T}\n */\n /**\n * The function callback to execute when the event is fired. The `this` context\n * contains the instance, that fired the event.\n *\n * @callback Highcharts.EventCallbackFunction\n *\n * @param {T} this\n *\n * @param {Highcharts.Dictionary<*>|Event} [eventArguments]\n * Event arguments.\n *\n * @return {boolean|void}\n */\n /**\n * The event options for adding function callback.\n *\n * @interface Highcharts.EventOptionsObject\n */ /**\n * The order the event handler should be called. This opens for having one\n * handler be called before another, independent of in which order they were\n * added.\n * @name Highcharts.EventOptionsObject#order\n * @type {number}\n */ /**\n * Whether an event should be passive or not.\n * When set to `true`, the function specified by listener will never call\n * `preventDefault()`.\n * @name Highcharts.EventOptionsObject#passive\n * @type boolean\n */\n /**\n * Formats data as a string. Usually the data is accessible throught the `this`\n * keyword.\n *\n * @callback Highcharts.FormatterCallbackFunction\n *\n * @param {T} this\n * Context to format\n *\n * @return {string}\n * Formatted text\n */\n /**\n * An object of key-value pairs for HTML attributes.\n *\n * @typedef {Highcharts.Dictionary} Highcharts.HTMLAttributes\n */\n /**\n * An HTML DOM element. The type is a reference to the regular HTMLElement in\n * the global scope.\n *\n * @typedef {global.HTMLElement} Highcharts.HTMLDOMElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement\n */\n /**\n * The iterator callback.\n *\n * @callback Highcharts.ObjectEachCallbackFunction\n *\n * @param {T} this\n * The context.\n *\n * @param {*} value\n * The property value.\n *\n * @param {string} key\n * The property key.\n *\n * @param {*} obj\n * The object that objectEach is being applied to.\n */\n /**\n * An object containing `left` and `top` properties for the position in the\n * page.\n *\n * @interface Highcharts.OffsetObject\n */ /**\n * Left distance to the page border.\n * @name Highcharts.OffsetObject#left\n * @type {number}\n */ /**\n * Top distance to the page border.\n * @name Highcharts.OffsetObject#top\n * @type {number}\n */\n /**\n * Describes a range.\n *\n * @interface Highcharts.RangeObject\n */ /**\n * Maximum number of the range.\n * @name Highcharts.RangeObject#max\n * @type {number}\n */ /**\n * Minimum number of the range.\n * @name Highcharts.RangeObject#min\n * @type {number}\n */\n /**\n * If a number is given, it defines the pixel length. If a percentage string is\n * given, like for example `'50%'`, the setting defines a length relative to a\n * base size, for example the size of a container.\n *\n * @typedef {number|string} Highcharts.RelativeSize\n */\n /**\n * Proceed function to call original (wrapped) function.\n *\n * @callback Highcharts.WrapProceedFunction\n *\n * @param {*} [arg1]\n * Optional argument. Without any arguments defaults to first argument of\n * the wrapping function.\n *\n * @param {*} [arg2]\n * Optional argument. Without any arguments defaults to second argument\n * of the wrapping function.\n *\n * @param {*} [arg3]\n * Optional argument. Without any arguments defaults to third argument of\n * the wrapping function.\n *\n * @return {*}\n * Return value of the original function.\n */\n /**\n * The Highcharts object is the placeholder for all other members, and various\n * utility functions. The most important member of the namespace would be the\n * chart constructor.\n *\n * @example\n * let chart = Highcharts.chart('container', { ... });\n *\n * @namespace Highcharts\n */\n ''; // detach doclets above\n\n return Utilities;\n });\n _registerModule(_modules, 'Core/Chart/ChartDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * General options for the chart.\n *\n * @optionparent chart\n */\n var ChartDefaults = {\n /**\n * Default `mapData` for all series. If set to a string,\n it functions\n * as an index into the `Highcharts.maps` array. Otherwise it is\n * interpreted as map data.\n *\n * @see [mapData](#series.map.mapData)\n *\n * @sample maps/demo/geojson\n * Loading geoJSON data\n * @sample maps/chart/topojson\n * Loading topoJSON converted to geoJSON\n *\n * @type {string|Array<*>|Highcharts.GeoJSON}\n * @since 5.0.0\n * @product highmaps\n * @apioption chart.map\n */\n /**\n * Set lat/lon transformation definitions for the chart. If not defined,\n * these are extracted from the map data.\n *\n * @type {*}\n * @since 5.0.0\n * @product highmaps\n * @apioption chart.mapTransforms\n */\n /**\n * When using multiple axis,\n the ticks of two or more opposite axes\n * will automatically be aligned by adding ticks to the axis or axes\n * with the least ticks,\n as if `tickAmount` were specified.\n *\n * This can be prevented by setting `alignTicks` to false. If the grid\n * lines look messy,\n it's a good idea to hide them for the secondary\n * axis by setting `gridLineWidth` to 0.\n *\n * If `startOnTick` or `endOnTick` in an Axis options are set to false,\n * then the `alignTicks ` will be disabled for the Axis.\n *\n * Disabled for logarithmic axes.\n *\n * @sample {highcharts} highcharts/chart/alignticks-true/\n * True by default\n * @sample {highcharts} highcharts/chart/alignticks-false/\n * False\n * @sample {highstock} stock/chart/alignticks-true/\n * True by default\n * @sample {highstock} stock/chart/alignticks-false/\n * False\n *\n * @type {boolean}\n * @default true\n * @product highcharts highstock gantt\n * @apioption chart.alignTicks\n */\n /**\n * Set the overall animation for all chart updating. Animation can be\n * disabled throughout the chart by setting it to false here. It can\n * be overridden for each individual API method as a function parameter.\n * The only animation not affected by this option is the initial series\n * animation,\n see [plotOptions.series.animation](\n * #plotOptions.series.animation).\n *\n * The animation can either be set as a boolean or a configuration\n * object. If `true`,\n it will use the 'swing' jQuery easing and a\n * duration of 500 ms. If used as a configuration object,\n the following\n * properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * - `duration`: The duration of the animation in milliseconds.\n *\n * - `easing`: A string reference to an easing function set on the\n * `Math` object. See\n * [the easing demo](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/).\n *\n * When zooming on a series with less than 100 points,\n the chart redraw\n * will be done with animation,\n but in case of more data points,\n it is\n * necessary to set this option to ensure animation on zoom.\n *\n * @sample {highcharts} highcharts/chart/animation-none/\n * Updating with no animation\n * @sample {highcharts} highcharts/chart/animation-duration/\n * With a longer duration\n * @sample {highcharts} highcharts/chart/animation-easing/\n * With a jQuery UI easing\n * @sample {highmaps} maps/chart/animation-none/\n * Updating with no animation\n * @sample {highmaps} maps/chart/animation-duration/\n * With a longer duration\n *\n * @type {boolean|Partial}\n * @default undefined\n * @apioption chart.animation\n */\n /**\n * A CSS class name to apply to the charts container `div`,\n allowing\n * unique CSS styling for each chart.\n *\n * @type {string}\n * @apioption chart.className\n */\n /**\n * Event listeners for the chart.\n *\n * @apioption chart.events\n */\n /**\n * Fires when a series is added to the chart after load time,\n using the\n * `addSeries` method. One parameter,\n `event`,\n is passed to the\n * function,\n containing common event information. Through\n * `event.options` you can access the series options that were passed to\n * the `addSeries` method. Returning false prevents the series from\n * being added.\n *\n * @sample {highcharts} highcharts/chart/events-addseries/\n * Alert on add series\n * @sample {highstock} stock/chart/events-addseries/\n * Alert on add series\n *\n * @type {Highcharts.ChartAddSeriesCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.addSeries\n */\n /**\n * Fires when clicking on the plot background. One parameter,\n `event`,\n * is passed to the function,\n containing common event information.\n *\n * Information on the clicked spot can be found through `event.xAxis`\n * and `event.yAxis`,\n which are arrays containing the axes of each\n * dimension and each axis' value at the clicked spot. The primary axes\n * are `event.xAxis[0]` and `event.yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * ```js\n * click: function(e) {\n * console.log(\n * Highcharts.dateFormat('%Y-%m-%d %H:%M:%S',\n e.xAxis[0].value),\n * e.yAxis[0].value\n * )\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/events-click/\n * Alert coordinates on click\n * @sample {highcharts} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n * @sample {highstock} stock/chart/events-click/\n * Alert coordinates on click\n * @sample {highstock} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n * @sample {highmaps} maps/chart/events-click/\n * Record coordinates on click\n * @sample {highmaps} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n *\n * @type {Highcharts.ChartClickCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.click\n */\n /**\n * Fires when the chart is finished loading. Since v4.2.2,\n it also waits\n * for images to be loaded,\n for example from point markers. One\n * parameter,\n `event`,\n is passed to the function,\n containing common\n * event information.\n *\n * There is also a second parameter to the chart constructor where a\n * callback function can be passed to be executed on chart.load.\n *\n * @sample {highcharts} highcharts/chart/events-load/\n * Alert on chart load\n * @sample {highstock} stock/chart/events-load/\n * Alert on chart load\n * @sample {highmaps} maps/chart/events-load/\n * Add series on chart load\n *\n * @type {Highcharts.ChartLoadCallbackFunction}\n * @context Highcharts.Chart\n * @apioption chart.events.load\n */\n /**\n * Fires when the chart is redrawn,\n either after a call to\n * `chart.redraw()` or after an axis,\n series or point is modified with\n * the `redraw` option set to `true`. One parameter,\n `event`,\n is passed\n * to the function,\n containing common event information.\n *\n * @sample {highcharts} highcharts/chart/events-redraw/\n * Alert on chart redraw\n * @sample {highstock} stock/chart/events-redraw/\n * Alert on chart redraw when adding a series or moving the\n * zoomed range\n * @sample {highmaps} maps/chart/events-redraw/\n * Set subtitle on chart redraw\n *\n * @type {Highcharts.ChartRedrawCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.redraw\n */\n /**\n * Fires after initial load of the chart (directly after the `load`\n * event),\n and after each redraw (directly after the `redraw` event).\n *\n * @type {Highcharts.ChartRenderCallbackFunction}\n * @since 5.0.7\n * @context Highcharts.Chart\n * @apioption chart.events.render\n */\n /**\n * Fires when an area of the chart has been selected. Selection is\n * enabled by setting the chart's zoomType. One parameter,\n `event`,\n is\n * passed to the function,\n containing common event information. The\n * default action for the selection event is to zoom the chart to the\n * selected area. It can be prevented by calling\n * `event.preventDefault()` or return false.\n *\n * Information on the selected area can be found through `event.xAxis`\n * and `event.yAxis`,\n which are arrays containing the axes of each\n * dimension and each axis' min and max values. The primary axes are\n * `event.xAxis[0]` and `event.yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * ```js\n * selection: function(event) {\n * // log the min and max of the primary, datetime x-axis\n * console.log(\n * Highcharts.dateFormat(\n * '%Y-%m-%d %H:%M:%S',\n * event.xAxis[0].min\n * ),\n * Highcharts.dateFormat(\n * '%Y-%m-%d %H:%M:%S',\n * event.xAxis[0].max\n * )\n * );\n * // log the min and max of the y axis\n * console.log(event.yAxis[0].min, event.yAxis[0].max);\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/events-selection/\n * Report on selection and reset\n * @sample {highcharts} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample {highstock} stock/chart/events-selection/\n * Report on selection and reset\n * @sample {highstock} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * (Highcharts)\n *\n * @type {Highcharts.ChartSelectionCallbackFunction}\n * @apioption chart.events.selection\n */\n /**\n * The margin between the outer edge of the chart and the plot area.\n * The numbers in the array designate top, right, bottom and left\n * respectively. Use the options `marginTop`, `marginRight`,\n * `marginBottom` and `marginLeft` for shorthand setting of one option.\n *\n * By default there is no margin. The actual space is dynamically\n * calculated from the offset of axis labels, axis title, title,\n * subtitle and legend in addition to the `spacingTop`, `spacingRight`,\n * `spacingBottom` and `spacingLeft` options.\n *\n * @sample {highcharts} highcharts/chart/margins-zero/\n * Zero margins\n * @sample {highstock} stock/chart/margin-zero/\n * Zero margins\n *\n * @type {number|Array}\n * @apioption chart.margin\n */\n /**\n * The margin between the bottom outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingBottom`.\n *\n * @sample {highcharts} highcharts/chart/marginbottom/\n * 100px bottom margin\n * @sample {highstock} stock/chart/marginbottom/\n * 100px bottom margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginBottom\n */\n /**\n * The margin between the left outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingLeft`.\n *\n * @sample {highcharts} highcharts/chart/marginleft/\n * 150px left margin\n * @sample {highstock} stock/chart/marginleft/\n * 150px left margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginLeft\n */\n /**\n * The margin between the right outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingRight`.\n *\n * @sample {highcharts} highcharts/chart/marginright/\n * 100px right margin\n * @sample {highstock} stock/chart/marginright/\n * 100px right margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginRight\n */\n /**\n * The margin between the top outer edge of the chart and the plot area.\n * Use this to set a fixed pixel value for the margin as opposed to\n * the default dynamic margin. See also `spacingTop`.\n *\n * @sample {highcharts} highcharts/chart/margintop/ 100px top margin\n * @sample {highstock} stock/chart/margintop/\n * 100px top margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginTop\n */\n /**\n * Callback function to override the default function that formats all\n * the numbers in the chart. Returns a string with the formatted number.\n *\n * @sample highcharts/members/highcharts-numberformat\n * Arabic digits in Highcharts\n * @type {Highcharts.NumberFormatterCallbackFunction}\n * @since 8.0.0\n * @apioption chart.numberFormatter\n */\n /**\n * Allows setting a key to switch between zooming and panning. Can be\n * one of `alt`, `ctrl`, `meta` (the command key on Mac and Windows\n * key on Windows) or `shift`. The keys are mapped directly to the key\n * properties of the click event argument (`event.altKey`,\n * `event.ctrlKey`, `event.metaKey` and `event.shiftKey`).\n *\n * @type {string}\n * @since 4.0.3\n * @product highcharts gantt\n * @validvalue [\"alt\", \"ctrl\", \"meta\", \"shift\"]\n * @apioption chart.panKey\n */\n /**\n * Allow panning in a chart. Best used with [panKey](#chart.panKey)\n * to combine zooming and panning.\n *\n * On touch devices, when the [tooltip.followTouchMove](\n * #tooltip.followTouchMove) option is `true` (default), panning\n * requires two fingers. To allow panning with one finger, set\n * `followTouchMove` to `false`.\n *\n * @sample {highcharts} highcharts/chart/pankey/ Zooming and panning\n * @sample {highstock} stock/chart/panning/ Zooming and xy panning\n */\n panning: {\n /**\n * Enable or disable chart panning.\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock|highmaps} true\n */\n enabled: false,\n /**\n * Decides in what dimensions the user can pan the chart. Can be\n * one of `x`, `y`, or `xy`.\n *\n * @sample {highcharts} highcharts/chart/panning-type\n * Zooming and xy panning\n *\n * @type {string}\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @default {highcharts|highstock} x\n * @default {highmaps} xy\n */\n type: 'x'\n },\n /**\n * Equivalent to [zoomType](#chart.zoomType), but for multitouch\n * gestures only. By default, the `pinchType` is the same as the\n * `zoomType` setting. However, pinching can be enabled separately in\n * some cases, for example in stock charts where a mouse drag pans the\n * chart, while pinching is enabled. When [tooltip.followTouchMove](\n * #tooltip.followTouchMove) is true, pinchType only applies to\n * two-finger touches.\n *\n * @type {string}\n * @default {highcharts} undefined\n * @default {highstock} x\n * @since 3.0\n * @product highcharts highstock gantt\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.pinchType\n */\n /**\n * Whether to apply styled mode. When in styled mode, no presentational\n * attributes or CSS are applied to the chart SVG. Instead, CSS rules\n * are required to style the chart. The default style sheet is\n * available from `https://code.highcharts.com/css/highcharts.css`.\n *\n * @type {boolean}\n * @default false\n * @since 7.0\n * @apioption chart.styledMode\n */\n styledMode: false,\n /**\n * The corner radius of the outer chart border.\n *\n * @sample {highcharts} highcharts/chart/borderradius/\n * 20px radius\n * @sample {highstock} stock/chart/border/\n * 10px radius\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n */\n borderRadius: 0,\n /**\n * In styled mode, this sets how many colors the class names\n * should rotate between. With ten colors, series (or points) are\n * given class names like `highcharts-color-0`, `highcharts-color-0`\n * [...] `highcharts-color-9`. The equivalent in non-styled mode\n * is to set colors using the [colors](#colors) setting.\n *\n * @since 5.0.0\n */\n colorCount: 10,\n /**\n * Alias of `type`.\n *\n * @sample {highcharts} highcharts/chart/defaultseriestype/\n * Bar\n *\n * @deprecated\n *\n * @product highcharts\n */\n defaultSeriesType: 'line',\n /**\n * If true, the axes will scale to the remaining visible series once\n * one series is hidden. If false, hiding and showing a series will\n * not affect the axes or the other series. For stacks, once one series\n * within the stack is hidden, the rest of the stack will close in\n * around it even if the axis is not affected.\n *\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-true/\n * True by default\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-false/\n * False\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-true-stacked/\n * True with stack\n * @sample {highstock} stock/chart/ignorehiddenseries-true/\n * True by default\n * @sample {highstock} stock/chart/ignorehiddenseries-false/\n * False\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n ignoreHiddenSeries: true,\n /**\n * Whether to invert the axes so that the x axis is vertical and y axis\n * is horizontal. When `true`, the x axis is [reversed](#xAxis.reversed)\n * by default.\n *\n * @productdesc {highcharts}\n * If a bar series is present in the chart, it will be inverted\n * automatically. Inverting the chart doesn't have an effect if there\n * are no cartesian series in the chart, or if the chart is\n * [polar](#chart.polar).\n *\n * @sample {highcharts} highcharts/chart/inverted/\n * Inverted line\n * @sample {highstock} stock/navigator/inverted/\n * Inverted stock chart\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock gantt\n * @apioption chart.inverted\n */\n /**\n * The distance between the outer edge of the chart and the content,\n * like title or legend, or axis title and labels if present. The\n * numbers in the array designate top, right, bottom and left\n * respectively. Use the options spacingTop, spacingRight, spacingBottom\n * and spacingLeft options for shorthand setting of one option.\n *\n * @type {Array}\n * @see [chart.margin](#chart.margin)\n * @default [10, 10, 15, 10]\n * @since 3.0.6\n */\n spacing: [10, 10, 15, 10],\n /**\n * The button that appears after a selection zoom, allowing the user\n * to reset zoom.\n */\n resetZoomButton: {\n /**\n * What frame the button placement should be related to. Can be\n * either `plotBox` or `spacingBox`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n * @sample {highstock} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n *\n * @type {Highcharts.ButtonRelativeToValue}\n * @default plot\n * @since 2.2\n * @apioption chart.resetZoomButton.relativeTo\n */\n /**\n * A collection of attributes for the button. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width` or `r`, the\n * border radius. The theme also supports `style`, a collection of\n * CSS properties for the text. Equivalent attributes for the hover\n * state are given in `theme.states.hover`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n * @sample {highstock} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n *\n * @type {Highcharts.SVGAttributes}\n * @since 2.2\n */\n theme: {\n /** @internal */\n zIndex: 6\n },\n /**\n * The position of the button.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highstock} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highmaps} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n *\n * @type {Highcharts.AlignObject}\n * @since 2.2\n */\n position: {\n /**\n * The horizontal alignment of the button.\n */\n align: 'right',\n /**\n * The horizontal offset of the button.\n */\n x: -10,\n /**\n * The vertical alignment of the button.\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @apioption chart.resetZoomButton.position.verticalAlign\n */\n /**\n * The vertical offset of the button.\n */\n y: 10\n }\n },\n /**\n * The pixel width of the plot area border.\n *\n * @sample {highcharts} highcharts/chart/plotborderwidth/\n * 1px border\n * @sample {highstock} stock/chart/plotborder/\n * 2px border\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {number}\n * @default 0\n * @apioption chart.plotBorderWidth\n */\n /**\n * Whether to apply a drop shadow to the plot area. Requires that\n * plotBackgroundColor be set. The shadow can be an object configuration\n * containing `color`, `offsetX`, `offsetY`, `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/chart/plotshadow/\n * Plot shadow\n * @sample {highstock} stock/chart/plotshadow/\n * Plot shadow\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {boolean|Highcharts.CSSObject}\n * @default false\n * @apioption chart.plotShadow\n */\n /**\n * When true, cartesian charts like line, spline, area and column are\n * transformed into the polar coordinate system. This produces _polar\n * charts_, also known as _radar charts_.\n *\n * @sample {highcharts} highcharts/demo/polar/\n * Polar chart\n * @sample {highcharts} highcharts/demo/polar-wind-rose/\n * Wind rose, stacked polar column chart\n * @sample {highcharts} highcharts/demo/polar-spider/\n * Spider web chart\n * @sample {highcharts} highcharts/parallel-coordinates/polar/\n * Star plot, multivariate data in a polar chart\n *\n * @type {boolean}\n * @default false\n * @since 2.3.0\n * @product highcharts\n * @requires highcharts-more\n * @apioption chart.polar\n */\n /**\n * Whether to reflow the chart to fit the width of the container div\n * on resizing the window.\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * True by default\n * @sample {highcharts} highcharts/chart/reflow-false/\n * False\n * @sample {highstock} stock/chart/reflow-true/\n * True by default\n * @sample {highstock} stock/chart/reflow-false/\n * False\n * @sample {highmaps} maps/chart/reflow-true/\n * True by default\n * @sample {highmaps} maps/chart/reflow-false/\n * False\n *\n * @type {boolean}\n * @default true\n * @since 2.1\n * @apioption chart.reflow\n */\n /**\n * The HTML element where the chart will be rendered. If it is a string,\n * the element by that id is used. The HTML element can also be passed\n * by direct reference, or as the first argument of the chart\n * constructor, in which case the option is not needed.\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * String\n * @sample {highcharts} highcharts/chart/renderto-object/\n * Object reference\n * @sample {highstock} stock/chart/renderto-string/\n * String\n * @sample {highstock} stock/chart/renderto-object/\n * Object reference\n *\n * @type {string|Highcharts.HTMLDOMElement}\n * @apioption chart.renderTo\n */\n /**\n * The background color of the marker square when selecting (zooming\n * in on) an area of the chart.\n *\n * @see In styled mode, the selection marker fill is set with the\n * `.highcharts-selection-marker` class.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default rgba(51,92,173,0.25)\n * @since 2.1.7\n * @apioption chart.selectionMarkerFill\n */\n /**\n * Whether to apply a drop shadow to the outer chart area. Requires\n * that backgroundColor be set. The shadow can be an object\n * configuration containing `color`, `offsetX`, `offsetY`, `opacity` and\n * `width`.\n *\n * @sample {highcharts} highcharts/chart/shadow/\n * Shadow\n * @sample {highstock} stock/chart/shadow/\n * Shadow\n * @sample {highmaps} maps/chart/border/\n * Chart border and shadow\n *\n * @type {boolean|Highcharts.CSSObject}\n * @default false\n * @apioption chart.shadow\n */\n /**\n * Whether to show the axes initially. This only applies to empty charts\n * where series are added dynamically, as axes are automatically added\n * to cartesian series.\n *\n * @sample {highcharts} highcharts/chart/showaxes-false/\n * False by default\n * @sample {highcharts} highcharts/chart/showaxes-true/\n * True\n *\n * @type {boolean}\n * @since 1.2.5\n * @product highcharts gantt\n * @apioption chart.showAxes\n */\n /**\n * The space between the bottom edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingbottom/\n * Spacing bottom set to 100\n * @sample {highstock} stock/chart/spacingbottom/\n * Spacing bottom set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 15\n * @since 2.1\n * @apioption chart.spacingBottom\n */\n /**\n * The space between the left edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingleft/\n * Spacing left set to 100\n * @sample {highstock} stock/chart/spacingleft/\n * Spacing left set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingLeft\n */\n /**\n * The space between the right edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingright-100/\n * Spacing set to 100\n * @sample {highcharts} highcharts/chart/spacingright-legend/\n * Legend in right position with default spacing\n * @sample {highstock} stock/chart/spacingright/\n * Spacing set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingRight\n */\n /**\n * The space between the top edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingtop-100/\n * A top spacing of 100\n * @sample {highcharts} highcharts/chart/spacingtop-10/\n * Floating chart title makes the plot area align to the default\n * spacingTop of 10.\n * @sample {highstock} stock/chart/spacingtop/\n * A top spacing of 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingTop\n */\n /**\n * Additional CSS styles to apply inline to the container `div`. Note\n * that since the default font styles are applied in the renderer, it\n * is ignorant of the individual chart options and must be set globally.\n *\n * @see In styled mode, general chart styles can be set with the\n * `.highcharts-root` class.\n * @sample {highcharts} highcharts/chart/style-serif-font/\n * Using a serif type font\n * @sample {highcharts} highcharts/css/em/\n * Styled mode with relative font sizes\n * @sample {highstock} stock/chart/style/\n * Using a serif type font\n * @sample {highmaps} maps/chart/style-serif-font/\n * Using a serif type font\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontFamily\": \"\\\"Lucida Grande\\\", \\\"Lucida Sans Unicode\\\", Verdana, Arial, Helvetica, sans-serif\",\"fontSize\":\"12px\"}\n * @apioption chart.style\n */\n /**\n * The default series type for the chart. Can be any of the chart types\n * listed under [plotOptions](#plotOptions) and [series](#series) or can\n * be a series provided by an additional module.\n *\n * In TypeScript this option has no effect in sense of typing and\n * instead the `type` option must always be set in the series.\n *\n * @sample {highcharts} highcharts/chart/type-bar/\n * Bar\n * @sample {highstock} stock/chart/type/\n * Areaspline\n * @sample {highmaps} maps/chart/type-mapline/\n * Mapline\n *\n * @type {string}\n * @default {highcharts} line\n * @default {highstock} line\n * @default {highmaps} map\n * @since 2.1.0\n * @apioption chart.type\n */\n /**\n * Decides in what dimensions the user can zoom by dragging the mouse.\n * Can be one of `x`, `y` or `xy`.\n *\n * @see [panKey](#chart.panKey)\n *\n * @sample {highcharts} highcharts/chart/zoomtype-none/\n * None by default\n * @sample {highcharts} highcharts/chart/zoomtype-x/\n * X\n * @sample {highcharts} highcharts/chart/zoomtype-y/\n * Y\n * @sample {highcharts} highcharts/chart/zoomtype-xy/\n * Xy\n * @sample {highstock} stock/demo/basic-line/\n * None by default\n * @sample {highstock} stock/chart/zoomtype-x/\n * X\n * @sample {highstock} stock/chart/zoomtype-y/\n * Y\n * @sample {highstock} stock/chart/zoomtype-xy/\n * Xy\n *\n * @type {string}\n * @product highcharts highstock gantt\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.zoomType\n */\n /**\n * Enables zooming by a single touch, in combination with\n * [chart.zoomType](#chart.zoomType). When enabled, two-finger pinch\n * will still work as set up by [chart.pinchType](#chart.pinchType).\n * However, `zoomBySingleTouch` will interfere with touch-dragging the\n * chart to read the tooltip. And especially when vertical zooming is\n * enabled, it will make it hard to scroll vertically on the page.\n * @since 9.0.0\n * @sample highcharts/chart/zoombysingletouch\n * Zoom by single touch enabled, with buttons to toggle\n * @product highcharts highstock gantt\n */\n zoomBySingleTouch: false,\n /**\n * An explicit width for the chart. By default (when `null`) the width\n * is calculated from the offset width of the containing element.\n *\n * @sample {highcharts} highcharts/chart/width/\n * 800px wide\n * @sample {highstock} stock/chart/width/\n * 800px wide\n * @sample {highmaps} maps/chart/size/\n * Chart with explicit size\n *\n * @type {null|number|string}\n */\n width: null,\n /**\n * An explicit height for the chart. If a _number_, the height is\n * given in pixels. If given a _percentage string_ (for example\n * `'56%'`), the height is given as the percentage of the actual chart\n * width. This allows for preserving the aspect ratio across responsive\n * sizes.\n *\n * By default (when `null`) the height is calculated from the offset\n * height of the containing element, or 400 pixels if the containing\n * element's height is 0.\n *\n * @sample {highcharts} highcharts/chart/height/\n * 500px height\n * @sample {highstock} stock/chart/height/\n * 300px height\n * @sample {highmaps} maps/chart/size/\n * Chart with explicit size\n * @sample highcharts/chart/height-percent/\n * Highcharts with percentage height\n *\n * @type {null|number|string}\n */\n height: null,\n /**\n * The color of the outer chart border.\n *\n * @see In styled mode, the stroke is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/bordercolor/\n * Brown border\n * @sample {highstock} stock/chart/border/\n * Brown border\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#335cad\" /* highlightColor80 */,\n /**\n * The pixel width of the outer chart border.\n *\n * @see In styled mode, the stroke is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/borderwidth/\n * 5px border\n * @sample {highstock} stock/chart/border/\n * 2px border\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n * @type {number}\n * @default 0\n * @apioption chart.borderWidth\n */\n /**\n * The background color or gradient for the outer chart area.\n *\n * @see In styled mode, the background is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/backgroundcolor-color/\n * Color\n * @sample {highcharts} highcharts/chart/backgroundcolor-gradient/\n * Gradient\n * @sample {highstock} stock/chart/backgroundcolor-color/\n * Color\n * @sample {highstock} stock/chart/backgroundcolor-gradient/\n * Gradient\n * @sample {highmaps} maps/chart/backgroundcolor-color/\n * Color\n * @sample {highmaps} maps/chart/backgroundcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: \"#ffffff\" /* backgroundColor */,\n /**\n * The background color or gradient for the plot area.\n *\n * @see In styled mode, the plot background is set with the\n * `.highcharts-plot-background` class.\n *\n * @sample {highcharts} highcharts/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highcharts} highcharts/chart/plotbackgroundcolor-gradient/\n * Gradient\n * @sample {highstock} stock/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highstock} stock/chart/plotbackgroundcolor-gradient/\n * Gradient\n * @sample {highmaps} maps/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption chart.plotBackgroundColor\n */\n /**\n * The URL for an image to use as the plot background. To set an image\n * as the background for the entire chart, set a CSS background image\n * to the container element. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export server.\n *\n * @see In styled mode, a plot background image can be set with the\n * `.highcharts-plot-background` class and a [custom pattern](\n * https://www.highcharts.com/docs/chart-design-and-style/\n * gradients-shadows-and-patterns).\n *\n * @sample {highcharts} highcharts/chart/plotbackgroundimage/\n * Skies\n * @sample {highstock} stock/chart/plotbackgroundimage/\n * Skies\n *\n * @type {string}\n * @apioption chart.plotBackgroundImage\n */\n /**\n * The color of the inner chart or plot area border.\n *\n * @see In styled mode, a plot border stroke can be set with the\n * `.highcharts-plot-border` class.\n *\n * @sample {highcharts} highcharts/chart/plotbordercolor/\n * Blue border\n * @sample {highstock} stock/chart/plotborder/\n * Blue border\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n plotBorderColor: \"#cccccc\" /* neutralColor20 */\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return ChartDefaults;\n });\n _registerModule(_modules, 'Core/Color/Color.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var isNumber = U.isNumber,\n merge = U.merge,\n pInt = U.pInt;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Handle color operations. Some object methods are chainable.\n *\n * @class\n * @name Highcharts.Color\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n */\n var Color = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function Color(input) {\n this.rgba = [NaN, NaN, NaN, NaN];\n this.input = input;\n var GlobalColor = H.Color;\n // Backwards compatibility, allow class overwrite\n if (GlobalColor && GlobalColor !== Color) {\n return new GlobalColor(input);\n }\n // Backwards compatibility, allow instanciation without new (#13053)\n if (!(this instanceof Color)) {\n return new Color(input);\n }\n this.init(input);\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Creates a color instance out of a color string or object.\n *\n * @function Highcharts.Color.parse\n *\n * @param {Highcharts.ColorType} [input]\n * The input color in either rbga or hex format.\n *\n * @return {Highcharts.Color}\n * Color instance.\n */\n Color.parse = function (input) {\n return input ? new Color(input) : Color.None;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Parse the input color to rgba array\n *\n * @private\n * @function Highcharts.Color#init\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n */\n Color.prototype.init = function (input) {\n var result,\n rgba,\n i,\n parser;\n // Gradients\n if (typeof input === 'object' &&\n typeof input.stops !== 'undefined') {\n this.stops = input.stops.map(function (stop) { return new Color(stop[1]); });\n // Solid colors\n }\n else if (typeof input === 'string') {\n this.input = input = (Color.names[input.toLowerCase()] || input);\n // Bitmasking as input[0] is not working for legacy IE.\n if (input.charAt(0) === '#') {\n var len = input.length,\n col = parseInt(input.substr(1), 16);\n // Handle long-form, e.g. #AABBCC\n if (len === 7) {\n rgba = [\n (col & 0xFF0000) >> 16,\n (col & 0xFF00) >> 8,\n (col & 0xFF),\n 1\n ];\n // Handle short-form, e.g. #ABC\n // In short form, the value is assumed to be the same\n // for both nibbles for each component. e.g. #ABC = #AABBCC\n }\n else if (len === 4) {\n rgba = [\n (((col & 0xF00) >> 4) |\n (col & 0xF00) >> 8),\n (((col & 0xF0) >> 4) |\n (col & 0xF0)),\n ((col & 0xF) << 4) | (col & 0xF),\n 1\n ];\n }\n }\n // Otherwise, check regex parsers\n if (!rgba) {\n i = Color.parsers.length;\n while (i-- && !rgba) {\n parser = Color.parsers[i];\n result = parser.regex.exec(input);\n if (result) {\n rgba = parser.parse(result);\n }\n }\n }\n }\n if (rgba) {\n this.rgba = rgba;\n }\n };\n /**\n * Return the color or gradient stops in the specified format\n *\n * @function Highcharts.Color#get\n *\n * @param {string} [format]\n * Possible values are 'a', 'rgb', 'rgba' (default).\n *\n * @return {Highcharts.ColorType}\n * This color as a string or gradient stops.\n */\n Color.prototype.get = function (format) {\n var input = this.input,\n rgba = this.rgba;\n if (typeof input === 'object' &&\n typeof this.stops !== 'undefined') {\n var ret_1 = merge(input);\n ret_1.stops = [].slice.call(ret_1.stops);\n this.stops.forEach(function (stop, i) {\n ret_1.stops[i] = [\n ret_1.stops[i][0],\n stop.get(format)\n ];\n });\n return ret_1;\n }\n // it's NaN if gradient colors on a column chart\n if (rgba && isNumber(rgba[0])) {\n if (format === 'rgb' || (!format && rgba[3] === 1)) {\n return 'rgb(' + rgba[0] + ',' + rgba[1] + ',' + rgba[2] + ')';\n }\n if (format === 'a') {\n return \"\" + rgba[3];\n }\n return 'rgba(' + rgba.join(',') + ')';\n }\n return input;\n };\n /**\n * Brighten the color instance.\n *\n * @function Highcharts.Color#brighten\n *\n * @param {number} alpha\n * The alpha value.\n *\n * @return {Highcharts.Color}\n * This color with modifications.\n */\n Color.prototype.brighten = function (alpha) {\n var rgba = this.rgba;\n if (this.stops) {\n this.stops.forEach(function (stop) {\n stop.brighten(alpha);\n });\n }\n else if (isNumber(alpha) && alpha !== 0) {\n for (var i = 0; i < 3; i++) {\n rgba[i] += pInt(alpha * 255);\n if (rgba[i] < 0) {\n rgba[i] = 0;\n }\n if (rgba[i] > 255) {\n rgba[i] = 255;\n }\n }\n }\n return this;\n };\n /**\n * Set the color's opacity to a given alpha value.\n *\n * @function Highcharts.Color#setOpacity\n *\n * @param {number} alpha\n * Opacity between 0 and 1.\n *\n * @return {Highcharts.Color}\n * Color with modifications.\n */\n Color.prototype.setOpacity = function (alpha) {\n this.rgba[3] = alpha;\n return this;\n };\n /**\n * Return an intermediate color between two colors.\n *\n * @function Highcharts.Color#tweenTo\n *\n * @param {Highcharts.Color} to\n * The color object to tween to.\n *\n * @param {number} pos\n * The intermediate position, where 0 is the from color (current color\n * item), and 1 is the `to` color.\n *\n * @return {Highcharts.ColorType}\n * The intermediate color in rgba notation, or unsupported type.\n */\n Color.prototype.tweenTo = function (to, pos) {\n var fromRgba = this.rgba,\n toRgba = to.rgba;\n // Unsupported color, return to-color (#3920, #7034)\n if (!isNumber(fromRgba[0]) || !isNumber(toRgba[0])) {\n return to.input || 'none';\n }\n // Check for has alpha, because rgba colors perform worse due to\n // lack of support in WebKit.\n var hasAlpha = (toRgba[3] !== 1 || fromRgba[3] !== 1);\n return (hasAlpha ? 'rgba(' : 'rgb(') +\n Math.round(toRgba[0] + (fromRgba[0] - toRgba[0]) * (1 - pos)) +\n ',' +\n Math.round(toRgba[1] + (fromRgba[1] - toRgba[1]) * (1 - pos)) +\n ',' +\n Math.round(toRgba[2] + (fromRgba[2] - toRgba[2]) * (1 - pos)) +\n (hasAlpha ?\n (',' +\n (toRgba[3] + (fromRgba[3] - toRgba[3]) * (1 - pos))) :\n '') +\n ')';\n };\n /* *\n *\n * Static Properties\n *\n * */\n /**\n * Collection of named colors. Can be extended from the outside by adding\n * colors to Highcharts.Color.names.\n * @private\n */\n Color.names = {\n white: '#ffffff',\n black: '#000000'\n };\n /**\n * Collection of parsers. This can be extended from the outside by pushing\n * parsers to `Color.parsers`.\n */\n Color.parsers = [{\n // RGBA color\n // eslint-disable-next-line max-len\n regex: /rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]?(?:\\.[0-9]+)?)\\s*\\)/,\n parse: function (result) {\n return [\n pInt(result[1]),\n pInt(result[2]),\n pInt(result[3]),\n parseFloat(result[4], 10)\n ];\n }\n }, {\n // RGB color\n regex: /rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/,\n parse: function (result) {\n return [pInt(result[1]), pInt(result[2]), pInt(result[3]), 1];\n }\n }];\n // Must be last static member for init cycle\n Color.None = new Color('');\n return Color;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A valid color to be parsed and handled by Highcharts. Highcharts internally\n * supports hex colors like `#ffffff`, rgb colors like `rgb(255,255,255)` and\n * rgba colors like `rgba(255,255,255,1)`. Other colors may be supported by the\n * browsers and displayed correctly, but Highcharts is not able to process them\n * and apply concepts like opacity and brightening.\n *\n * @typedef {string} Highcharts.ColorString\n */\n /**\n * A valid color type than can be parsed and handled by Highcharts. It can be a\n * color string, a gradient object, or a pattern object.\n *\n * @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType\n */\n /**\n * Gradient options instead of a solid color.\n *\n * @example\n * // Linear gradient used as a color option\n * color: {\n * linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },\n * stops: [\n * [0, '#003399'], // start\n * [0.5, '#ffffff'], // middle\n * [1, '#3366AA'] // end\n * ]\n * }\n *\n * @interface Highcharts.GradientColorObject\n */ /**\n * Holds an object that defines the start position and the end position relative\n * to the shape.\n * @name Highcharts.GradientColorObject#linearGradient\n * @type {Highcharts.LinearGradientColorObject|undefined}\n */ /**\n * Holds an object that defines the center position and the radius.\n * @name Highcharts.GradientColorObject#radialGradient\n * @type {Highcharts.RadialGradientColorObject|undefined}\n */ /**\n * The first item in each tuple is the position in the gradient, where 0 is the\n * start of the gradient and 1 is the end of the gradient. Multiple stops can be\n * applied. The second item is the color for each stop. This color can also be\n * given in the rgba format.\n * @name Highcharts.GradientColorObject#stops\n * @type {Array}\n */\n /**\n * Color stop tuple.\n *\n * @see Highcharts.GradientColorObject\n *\n * @interface Highcharts.GradientColorStopObject\n */ /**\n * @name Highcharts.GradientColorStopObject#0\n * @type {number}\n */ /**\n * @name Highcharts.GradientColorStopObject#1\n * @type {Highcharts.ColorString}\n */ /**\n * @name Highcharts.GradientColorStopObject#color\n * @type {Highcharts.Color|undefined}\n */\n /**\n * Defines the start position and the end position for a gradient relative\n * to the shape. Start position (x1, y1) and end position (x2, y2) are relative\n * to the shape, where 0 means top/left and 1 is bottom/right.\n *\n * @interface Highcharts.LinearGradientColorObject\n */ /**\n * Start horizontal position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#x1\n * @type {number}\n */ /**\n * End horizontal position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#x2\n * @type {number}\n */ /**\n * Start vertical position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#y1\n * @type {number}\n */ /**\n * End vertical position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#y2\n * @type {number}\n */\n /**\n * Defines the center position and the radius for a gradient.\n *\n * @interface Highcharts.RadialGradientColorObject\n */ /**\n * Center horizontal position relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#cx\n * @type {number}\n */ /**\n * Center vertical position relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#cy\n * @type {number}\n */ /**\n * Radius relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#r\n * @type {number}\n */\n /**\n * Creates a color instance out of a color string.\n *\n * @function Highcharts.color\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n *\n * @return {Highcharts.Color}\n * Color instance\n */\n (''); // detach doclets above\n\n return Color;\n });\n _registerModule(_modules, 'Core/Color/Palettes.js', [], function () {\n /**\n * Series palettes for Highcharts. Series colors are defined in highcharts.scss.\n * **Do not edit this file!** This file is generated using the 'gulp palette' task.\n */\n var SeriesPalettes = {\n /**\n * Colors for data series and points.\n */\n colors: [\n '#7cb5ec',\n '#434348',\n '#90ed7d',\n '#f7a35c',\n '#8085e9',\n '#f15c80',\n '#e4d354',\n '#2b908f',\n '#f45b5b',\n '#91e8e1'\n ]\n };\n\n return SeriesPalettes;\n });\n _registerModule(_modules, 'Core/Time.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var win = H.win;\n var defined = U.defined,\n error = U.error,\n extend = U.extend,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pad = U.pad,\n pick = U.pick,\n splat = U.splat,\n timeUnits = U.timeUnits;\n /* *\n *\n * Constants\n *\n * */\n var hasNewSafariBug = H.isSafari &&\n win.Intl &&\n win.Intl.DateTimeFormat.prototype.formatRange;\n // To do: Remove this when we no longer need support for Safari < v14.1\n var hasOldSafariBug = H.isSafari &&\n win.Intl &&\n !win.Intl.DateTimeFormat.prototype.formatRange;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Time class. Time settings are applied in general for each page using\n * `Highcharts.setOptions`, or individually for each Chart item through the\n * [time](https://api.highcharts.com/highcharts/time) options set.\n *\n * The Time object is available from {@link Highcharts.Chart#time},\n * which refers to `Highcharts.time` if no individual time settings are\n * applied.\n *\n * @example\n * // Apply time settings globally\n * Highcharts.setOptions({\n * time: {\n * timezone: 'Europe/London'\n * }\n * });\n *\n * // Apply time settings by instance\n * let chart = Highcharts.chart('container', {\n * time: {\n * timezone: 'America/New_York'\n * },\n * series: [{\n * data: [1, 4, 3, 5]\n * }]\n * });\n *\n * // Use the Time object\n * console.log(\n * 'Current time in New York',\n * chart.time.dateFormat('%Y-%m-%d %H:%M:%S', Date.now())\n * );\n *\n * @since 6.0.5\n *\n * @class\n * @name Highcharts.Time\n *\n * @param {Highcharts.TimeOptions} options\n * Time options as defined in [chart.options.time](/highcharts/time).\n */\n var Time = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Time(options) {\n /* *\n *\n * Properties\n *\n * */\n this.options = {};\n this.useUTC = false;\n this.variableTimezone = false;\n this.Date = win.Date;\n /**\n * Get the time zone offset based on the current timezone information as\n * set in the global options.\n *\n * @function Highcharts.Time#getTimezoneOffset\n *\n * @param {number} timestamp\n * The JavaScript timestamp to inspect.\n *\n * @return {number}\n * The timezone offset in minutes compared to UTC.\n */\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n this.update(options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Time units used in `Time.get` and `Time.set`\n *\n * @typedef {\"Date\"|\"Day\"|\"FullYear\"|\"Hours\"|\"Milliseconds\"|\"Minutes\"|\"Month\"|\"Seconds\"} Highcharts.TimeUnitValue\n */\n /**\n * Get the value of a date object in given units, and subject to the Time\n * object's current timezone settings. This function corresponds directly to\n * JavaScripts `Date.getXXX / Date.getUTCXXX`, so instead of calling\n * `date.getHours()` or `date.getUTCHours()` we will call\n * `time.get('Hours')`.\n *\n * @function Highcharts.Time#get\n *\n * @param {Highcharts.TimeUnitValue} unit\n * @param {Date} date\n *\n * @return {number}\n * The given time unit\n */\n Time.prototype.get = function (unit, date) {\n if (this.variableTimezone || this.timezoneOffset) {\n var realMs = date.getTime();\n var ms = realMs - this.getTimezoneOffset(date);\n date.setTime(ms); // Temporary adjust to timezone\n var ret = date['getUTC' + unit]();\n date.setTime(realMs); // Reset\n return ret;\n }\n // UTC time with no timezone handling\n if (this.useUTC) {\n return date['getUTC' + unit]();\n }\n // Else, local time\n return date['get' + unit]();\n };\n /**\n * Set the value of a date object in given units, and subject to the Time\n * object's current timezone settings. This function corresponds directly to\n * JavaScripts `Date.setXXX / Date.setUTCXXX`, so instead of calling\n * `date.setHours(0)` or `date.setUTCHours(0)` we will call\n * `time.set('Hours', 0)`.\n *\n * @function Highcharts.Time#set\n *\n * @param {Highcharts.TimeUnitValue} unit\n * @param {Date} date\n * @param {number} value\n *\n * @return {number}\n * The epoch milliseconds of the updated date\n */\n Time.prototype.set = function (unit, date, value) {\n // UTC time with timezone handling\n if (this.variableTimezone || this.timezoneOffset) {\n // For lower order time units, just set it directly using UTC\n // time\n if (unit === 'Milliseconds' ||\n unit === 'Seconds' ||\n (unit === 'Minutes' &&\n this.getTimezoneOffset(date) % 3600000 === 0) // #13961\n ) {\n return date['setUTC' + unit](value);\n }\n // Higher order time units need to take the time zone into\n // account\n // Adjust by timezone\n var offset = this.getTimezoneOffset(date);\n var ms = date.getTime() - offset;\n date.setTime(ms);\n date['setUTC' + unit](value);\n var newOffset = this.getTimezoneOffset(date);\n ms = date.getTime() + newOffset;\n return date.setTime(ms);\n }\n // UTC time with no timezone handling\n if (this.useUTC ||\n // leap calculation in UTC only\n (hasNewSafariBug && unit === 'FullYear')) {\n return date['setUTC' + unit](value);\n }\n // Else, local time\n return date['set' + unit](value);\n };\n /**\n * Update the Time object with current options. It is called internally on\n * initializing Highcharts, after running `Highcharts.setOptions` and on\n * `Chart.update`.\n *\n * @private\n * @function Highcharts.Time#update\n *\n * @param {Highcharts.TimeOptions} options\n *\n */\n Time.prototype.update = function (options) {\n var useUTC = pick(options && options.useUTC,\n true),\n time = this;\n this.options = options = merge(true, this.options || {}, options);\n // Allow using a different Date class\n this.Date = options.Date || win.Date || Date;\n this.useUTC = useUTC;\n this.timezoneOffset = (useUTC && options.timezoneOffset);\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n /*\n * The time object has options allowing for variable time zones, meaning\n * the axis ticks or series data needs to consider this.\n */\n this.variableTimezone = useUTC && !!(options.getTimezoneOffset ||\n options.timezone);\n };\n /**\n * Make a time and returns milliseconds. Interprets the inputs as UTC time,\n * local time or a specific timezone time depending on the current time\n * settings.\n *\n * @function Highcharts.Time#makeTime\n *\n * @param {number} year\n * The year\n *\n * @param {number} month\n * The month. Zero-based, so January is 0.\n *\n * @param {number} [date=1]\n * The day of the month\n *\n * @param {number} [hours=0]\n * The hour of the day, 0-23.\n *\n * @param {number} [minutes=0]\n * The minutes\n *\n * @param {number} [seconds=0]\n * The seconds\n *\n * @return {number}\n * The time in milliseconds since January 1st 1970.\n */\n Time.prototype.makeTime = function (year, month, date, hours, minutes, seconds) {\n var d,\n offset,\n newOffset;\n if (this.useUTC) {\n d = this.Date.UTC.apply(0, arguments);\n offset = this.getTimezoneOffset(d);\n d += offset;\n newOffset = this.getTimezoneOffset(d);\n if (offset !== newOffset) {\n d += newOffset - offset;\n // A special case for transitioning from summer time to winter time.\n // When the clock is set back, the same time is repeated twice, i.e.\n // 02:30 am is repeated since the clock is set back from 3 am to\n // 2 am. We need to make the same time as local Date does.\n }\n else if (offset - 36e5 === this.getTimezoneOffset(d - 36e5) &&\n !hasOldSafariBug) {\n d -= 36e5;\n }\n }\n else {\n d = new this.Date(year, month, pick(date, 1), pick(hours, 0), pick(minutes, 0), pick(seconds, 0)).getTime();\n }\n return d;\n };\n /**\n * Sets the getTimezoneOffset function. If the `timezone` option is set, a\n * default getTimezoneOffset function with that timezone is returned. If\n * a `getTimezoneOffset` option is defined, it is returned. If neither are\n * specified, the function using the `timezoneOffset` option or 0 offset is\n * returned.\n *\n * @private\n * @function Highcharts.Time#timezoneOffsetFunction\n *\n * @return {Function}\n * A getTimezoneOffset function\n */\n Time.prototype.timezoneOffsetFunction = function () {\n var time = this,\n options = this.options,\n getTimezoneOffset = options.getTimezoneOffset,\n moment = options.moment || win.moment;\n if (!this.useUTC) {\n return function (timestamp) {\n return new Date(timestamp.toString()).getTimezoneOffset() * 60000;\n };\n }\n if (options.timezone) {\n if (!moment) {\n // getTimezoneOffset-function stays undefined because it depends\n // on Moment.js\n error(25);\n }\n else {\n return function (timestamp) {\n return -moment.tz(timestamp, options.timezone).utcOffset() * 60000;\n };\n }\n }\n // If not timezone is set, look for the getTimezoneOffset callback\n if (this.useUTC && getTimezoneOffset) {\n return function (timestamp) {\n return getTimezoneOffset(timestamp.valueOf()) * 60000;\n };\n }\n // Last, use the `timezoneOffset` option if set\n return function () {\n return (time.timezoneOffset || 0) * 60000;\n };\n };\n /**\n * Formats a JavaScript date timestamp (milliseconds since Jan 1st 1970)\n * into a human readable date string. The available format keys are listed\n * below. Additional formats can be given in the\n * {@link Highcharts.dateFormats} hook.\n *\n * Supported format keys:\n * - `%a`: Short weekday, like 'Mon'\n * - `%A`: Long weekday, like 'Monday'\n * - `%d`: Two digit day of the month, 01 to 31\n * - `%e`: Day of the month, 1 through 31\n * - `%w`: Day of the week, 0 through 6\n * - `%b`: Short month, like 'Jan'\n * - `%B`: Long month, like 'January'\n * - `%m`: Two digit month number, 01 through 12\n * - `%y`: Two digits year, like 09 for 2009\n * - `%Y`: Four digits year, like 2009\n * - `%H`: Two digits hours in 24h format, 00 through 23\n * - `%k`: Hours in 24h format, 0 through 23\n * - `%I`: Two digits hours in 12h format, 00 through 11\n * - `%l`: Hours in 12h format, 1 through 12\n * - `%M`: Two digits minutes, 00 through 59\n * - `%p`: Upper case AM or PM\n * - `%P`: Lower case AM or PM\n * - `%S`: Two digits seconds, 00 through 59\n * - `%L`: Milliseconds (naming from Ruby)\n *\n * @example\n * const time = new Highcharts.Time();\n * const s = time.dateFormat('%Y-%m-%d %H:%M:%S', Date.UTC(2020, 0, 1));\n * console.log(s); // => 2020-01-01 00:00:00\n *\n * @function Highcharts.Time#dateFormat\n *\n * @param {string} format\n * The desired format where various time representations are\n * prefixed with %.\n *\n * @param {number} [timestamp]\n * The JavaScript timestamp.\n *\n * @param {boolean} [capitalize=false]\n * Upper case first letter in the return.\n *\n * @return {string}\n * The formatted date.\n */\n Time.prototype.dateFormat = function (format, timestamp, capitalize) {\n if (!defined(timestamp) || isNaN(timestamp)) {\n return (H.defaultOptions.lang &&\n H.defaultOptions.lang.invalidDate ||\n '');\n }\n format = pick(format, '%Y-%m-%d %H:%M:%S');\n var time = this, date = new this.Date(timestamp), \n // get the basic time values\n hours = this.get('Hours', date), day = this.get('Day', date), dayOfMonth = this.get('Date', date), month = this.get('Month', date), fullYear = this.get('FullYear', date), lang = H.defaultOptions.lang, langWeekdays = (lang && lang.weekdays), shortWeekdays = (lang && lang.shortWeekdays), \n // List all format keys. Custom formats can be added from the\n // outside.\n replacements = extend({\n // Day\n // Short weekday, like 'Mon'\n a: shortWeekdays ?\n shortWeekdays[day] :\n langWeekdays[day].substr(0, 3),\n // Long weekday, like 'Monday'\n A: langWeekdays[day],\n // Two digit day of the month, 01 to 31\n d: pad(dayOfMonth),\n // Day of the month, 1 through 31\n e: pad(dayOfMonth, 2, ' '),\n // Day of the week, 0 through 6\n w: day,\n // Week (none implemented)\n // 'W': weekNumber(),\n // Month\n // Short month, like 'Jan'\n b: lang.shortMonths[month],\n // Long month, like 'January'\n B: lang.months[month],\n // Two digit month number, 01 through 12\n m: pad(month + 1),\n // Month number, 1 through 12 (#8150)\n o: month + 1,\n // Year\n // Two digits year, like 09 for 2009\n y: fullYear.toString().substr(2, 2),\n // Four digits year, like 2009\n Y: fullYear,\n // Time\n // Two digits hours in 24h format, 00 through 23\n H: pad(hours),\n // Hours in 24h format, 0 through 23\n k: hours,\n // Two digits hours in 12h format, 00 through 11\n I: pad((hours % 12) || 12),\n // Hours in 12h format, 1 through 12\n l: (hours % 12) || 12,\n // Two digits minutes, 00 through 59\n M: pad(this.get('Minutes', date)),\n // Upper case AM or PM\n p: hours < 12 ? 'AM' : 'PM',\n // Lower case AM or PM\n P: hours < 12 ? 'am' : 'pm',\n // Two digits seconds, 00 through 59\n S: pad(date.getSeconds()),\n // Milliseconds (naming from Ruby)\n L: pad(Math.floor(timestamp % 1000), 3)\n }, H.dateFormats);\n // Do the replaces\n objectEach(replacements, function (val, key) {\n // Regex would do it in one line, but this is faster\n while (format.indexOf('%' + key) !== -1) {\n format = format.replace('%' + key, typeof val === 'function' ? val.call(time, timestamp) : val);\n }\n });\n // Optionally capitalize the string and return\n return capitalize ?\n (format.substr(0, 1).toUpperCase() +\n format.substr(1)) :\n format;\n };\n /**\n * Resolve legacy formats of dateTimeLabelFormats (strings and arrays) into\n * an object.\n * @private\n * @param {string|Array|Highcharts.Dictionary} f\n * General format description\n * @return {Highcharts.Dictionary}\n * The object definition\n */\n Time.prototype.resolveDTLFormat = function (f) {\n if (!isObject(f, true)) { // check for string or array\n f = splat(f);\n return {\n main: f[0],\n from: f[1],\n to: f[2]\n };\n }\n return f;\n };\n /**\n * Return an array with time positions distributed on round time values\n * right and right after min and max. Used in datetime axes as well as for\n * grouping data on a datetime axis.\n *\n * @function Highcharts.Time#getTimeTicks\n *\n * @param {Highcharts.TimeNormalizedObject} normalizedInterval\n * The interval in axis values (ms) and the count\n *\n * @param {number} [min]\n * The minimum in axis values\n *\n * @param {number} [max]\n * The maximum in axis values\n *\n * @param {number} [startOfWeek=1]\n *\n * @return {Highcharts.AxisTickPositionsArray}\n * Time positions\n */\n Time.prototype.getTimeTicks = function (normalizedInterval, min, max, startOfWeek) {\n var time = this,\n Date = time.Date,\n tickPositions = [],\n higherRanks = {}, \n // When crossing DST, use the max. Resolves #6278.\n minDate = new Date(min),\n interval = normalizedInterval.unitRange,\n count = normalizedInterval.count || 1;\n var i,\n minYear, // used in months and years as a basis for Date.UTC()\n variableDayLength,\n minDay;\n startOfWeek = pick(startOfWeek, 1);\n if (defined(min)) { // #1300\n time.set('Milliseconds', minDate, interval >= timeUnits.second ?\n 0 : // #3935\n count * Math.floor(time.get('Milliseconds', minDate) / count)); // #3652, #3654\n if (interval >= timeUnits.second) { // second\n time.set('Seconds', minDate, interval >= timeUnits.minute ?\n 0 : // #3935\n count * Math.floor(time.get('Seconds', minDate) / count));\n }\n if (interval >= timeUnits.minute) { // minute\n time.set('Minutes', minDate, interval >= timeUnits.hour ?\n 0 :\n count * Math.floor(time.get('Minutes', minDate) / count));\n }\n if (interval >= timeUnits.hour) { // hour\n time.set('Hours', minDate, interval >= timeUnits.day ?\n 0 :\n count * Math.floor(time.get('Hours', minDate) / count));\n }\n if (interval >= timeUnits.day) { // day\n time.set('Date', minDate, interval >= timeUnits.month ?\n 1 :\n Math.max(1, count * Math.floor(time.get('Date', minDate) / count)));\n }\n if (interval >= timeUnits.month) { // month\n time.set('Month', minDate, interval >= timeUnits.year ? 0 :\n count * Math.floor(time.get('Month', minDate) / count));\n minYear = time.get('FullYear', minDate);\n }\n if (interval >= timeUnits.year) { // year\n minYear -= minYear % count;\n time.set('FullYear', minDate, minYear);\n }\n // week is a special case that runs outside the hierarchy\n if (interval === timeUnits.week) {\n // get start of current week, independent of count\n minDay = time.get('Day', minDate);\n time.set('Date', minDate, (time.get('Date', minDate) -\n minDay + startOfWeek +\n // We don't want to skip days that are before\n // startOfWeek (#7051)\n (minDay < startOfWeek ? -7 : 0)));\n }\n // Get basics for variable time spans\n minYear = time.get('FullYear', minDate);\n var minMonth = time.get('Month', minDate), minDateDate = time.get('Date', minDate), minHours = time.get('Hours', minDate);\n // Redefine min to the floored/rounded minimum time (#7432)\n min = minDate.getTime();\n // Handle local timezone offset\n if ((time.variableTimezone || !time.useUTC) && defined(max)) {\n // Detect whether we need to take the DST crossover into\n // consideration. If we're crossing over DST, the day length may\n // be 23h or 25h and we need to compute the exact clock time for\n // each tick instead of just adding hours. This comes at a cost,\n // so first we find out if it is needed (#4951).\n variableDayLength = (\n // Long range, assume we're crossing over.\n max - min > 4 * timeUnits.month ||\n // Short range, check if min and max are in different time\n // zones.\n time.getTimezoneOffset(min) !==\n time.getTimezoneOffset(max));\n }\n // Iterate and add tick positions at appropriate values\n var t = minDate.getTime();\n i = 1;\n while (t < max) {\n tickPositions.push(t);\n // if the interval is years, use Date.UTC to increase years\n if (interval === timeUnits.year) {\n t = time.makeTime(minYear + i * count, 0);\n // if the interval is months, use Date.UTC to increase months\n }\n else if (interval === timeUnits.month) {\n t = time.makeTime(minYear, minMonth + i * count);\n // if we're using global time, the interval is not fixed as it\n // jumps one hour at the DST crossover\n }\n else if (variableDayLength &&\n (interval === timeUnits.day || interval === timeUnits.week)) {\n t = time.makeTime(minYear, minMonth, minDateDate +\n i * count * (interval === timeUnits.day ? 1 : 7));\n }\n else if (variableDayLength &&\n interval === timeUnits.hour &&\n count > 1) {\n // make sure higher ranks are preserved across DST (#6797,\n // #7621)\n t = time.makeTime(minYear, minMonth, minDateDate, minHours + i * count);\n // else, the interval is fixed and we use simple addition\n }\n else {\n t += interval * count;\n }\n i++;\n }\n // push the last time\n tickPositions.push(t);\n // Handle higher ranks. Mark new days if the time is on midnight\n // (#950, #1649, #1760, #3349). Use a reasonable dropout threshold\n // to prevent looping over dense data grouping (#6156).\n if (interval <= timeUnits.hour && tickPositions.length < 10000) {\n tickPositions.forEach(function (t) {\n if (\n // Speed optimization, no need to run dateFormat unless\n // we're on a full or half hour\n t % 1800000 === 0 &&\n // Check for local or global midnight\n time.dateFormat('%H%M%S%L', t) === '000000000') {\n higherRanks[t] = 'day';\n }\n });\n }\n }\n // record information on the chosen unit - for dynamic label formatter\n tickPositions.info = extend(normalizedInterval, {\n higherRanks: higherRanks,\n totalRange: interval * count\n });\n return tickPositions;\n };\n /**\n * Get the optimal date format for a point, based on a range.\n *\n * @private\n * @function Highcharts.Time#getDateFormat\n *\n * @param {number} range\n * The time range\n *\n * @param {number} timestamp\n * The timestamp of the date\n *\n * @param {number} startOfWeek\n * An integer representing the first day of the week, where 0 is\n * Sunday.\n *\n * @param {Highcharts.Dictionary} dateTimeLabelFormats\n * A map of time units to formats.\n *\n * @return {string}\n * The optimal date format for a point.\n */\n Time.prototype.getDateFormat = function (range, timestamp, startOfWeek, dateTimeLabelFormats) {\n var dateStr = this.dateFormat('%m-%d %H:%M:%S.%L', timestamp), blank = '01-01 00:00:00.000', strpos = {\n millisecond: 15,\n second: 12,\n minute: 9,\n hour: 6,\n day: 3\n };\n var format,\n n,\n lastN = 'millisecond'; // for sub-millisecond data, #4223\n for (n in timeUnits) { // eslint-disable-line guard-for-in\n // If the range is exactly one week and we're looking at a\n // Sunday/Monday, go for the week format\n if (range === timeUnits.week &&\n +this.dateFormat('%w',\n timestamp) === startOfWeek &&\n dateStr.substr(6) === blank.substr(6)) {\n n = 'week';\n break;\n }\n // The first format that is too great for the range\n if (timeUnits[n] > range) {\n n = lastN;\n break;\n }\n // If the point is placed every day at 23:59, we need to show\n // the minutes as well. #2637.\n if (strpos[n] &&\n dateStr.substr(strpos[n]) !== blank.substr(strpos[n])) {\n break;\n }\n // Weeks are outside the hierarchy, only apply them on\n // Mondays/Sundays like in the first condition\n if (n !== 'week') {\n lastN = n;\n }\n }\n if (n) {\n format = this.resolveDTLFormat(dateTimeLabelFormats[n]).main;\n }\n return format;\n };\n return Time;\n }());\n /* *\n *\n * Default export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Normalized interval.\n *\n * @interface Highcharts.TimeNormalizedObject\n */ /**\n * The count.\n *\n * @name Highcharts.TimeNormalizedObject#count\n * @type {number}\n */ /**\n * The interval in axis values (ms).\n *\n * @name Highcharts.TimeNormalizedObject#unitRange\n * @type {number}\n */\n /**\n * Function of an additional date format specifier.\n *\n * @callback Highcharts.TimeFormatCallbackFunction\n *\n * @param {number} timestamp\n * The time to format.\n *\n * @return {string}\n * The formatted portion of the date.\n */\n /**\n * Time ticks.\n *\n * @interface Highcharts.AxisTickPositionsArray\n * @extends global.Array\n */ /**\n * @name Highcharts.AxisTickPositionsArray#info\n * @type {Highcharts.TimeTicksInfoObject|undefined}\n */\n /**\n * A callback to return the time zone offset for a given datetime. It\n * takes the timestamp in terms of milliseconds since January 1 1970,\n * and returns the timezone offset in minutes. This provides a hook\n * for drawing time based charts in specific time zones using their\n * local DST crossover dates, with the help of external libraries.\n *\n * @callback Highcharts.TimezoneOffsetCallbackFunction\n *\n * @param {number} timestamp\n * Timestamp in terms of milliseconds since January 1 1970.\n *\n * @return {number}\n * Timezone offset in minutes.\n */\n /**\n * Allows to manually load the `moment.js` library from Highcharts options\n * instead of the `window`.\n * In case of loading the library from a `script` tag,\n * this option is not needed, it will be loaded from there by default.\n *\n * @type {Function}\n * @since 8.2.0\n * @apioption time.moment\n */\n ''; // keeps doclets above in JS file\n\n return Time;\n });\n _registerModule(_modules, 'Core/DefaultOptions.js', [_modules['Core/Chart/ChartDefaults.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Color/Palettes.js'], _modules['Core/Time.js'], _modules['Core/Utilities.js']], function (ChartDefaults, Color, H, Palettes, Time, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var isTouchDevice = H.isTouchDevice,\n svg = H.svg;\n var merge = U.merge;\n /* *\n *\n * API Options\n *\n * */\n /**\n * Global default settings.\n *\n * @name Highcharts.defaultOptions\n * @type {Highcharts.Options}\n */ /**\n * @optionparent\n */\n var defaultOptions = {\n /**\n * An array containing the default colors for the chart's series. When\n * all colors are used, new colors are pulled from the start again.\n *\n * Default colors can also be set on a series or series.type basis,\n * see [column.colors](#plotOptions.column.colors),\n * [pie.colors](#plotOptions.pie.colors).\n *\n * In styled mode, the colors option doesn't exist. Instead, colors\n * are defined in CSS and applied either through series or point class\n * names, or through the [chart.colorCount](#chart.colorCount) option.\n *\n *\n * ### Legacy\n *\n * In Highcharts 3.x, the default colors were:\n * ```js\n * colors: ['#2f7ed8', '#0d233a', '#8bbc21', '#910000', '#1aadce',\n * '#492970', '#f28f43', '#77a1e5', '#c42525', '#a6c96a']\n * ```\n *\n * In Highcharts 2.x, the default colors were:\n * ```js\n * colors: ['#4572A7', '#AA4643', '#89A54E', '#80699B', '#3D96AE',\n * '#DB843D', '#92A8CD', '#A47D7C', '#B5CA92']\n * ```\n *\n * @sample {highcharts} highcharts/chart/colors/\n * Assign a global color theme\n *\n * @type {Array}\n * @default [\"#7cb5ec\", \"#434348\", \"#90ed7d\", \"#f7a35c\", \"#8085e9\",\n * \"#f15c80\", \"#e4d354\", \"#2b908f\", \"#f45b5b\", \"#91e8e1\"]\n */\n colors: Palettes.colors,\n /**\n * Styled mode only. Configuration object for adding SVG definitions for\n * reusable elements. See [gradients, shadows and\n * patterns](https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns)\n * for more information and code examples.\n *\n * @type {*}\n * @since 5.0.0\n * @apioption defs\n */\n /**\n * @ignore-option\n */\n symbols: ['circle', 'diamond', 'square', 'triangle', 'triangle-down'],\n /**\n * The language object is global and it can't be set on each chart\n * initialization. Instead, use `Highcharts.setOptions` to set it before any\n * chart is initialized.\n *\n * ```js\n * Highcharts.setOptions({\n * lang: {\n * months: [\n * 'Janvier', 'Février', 'Mars', 'Avril',\n * 'Mai', 'Juin', 'Juillet', 'Août',\n * 'Septembre', 'Octobre', 'Novembre', 'Décembre'\n * ],\n * weekdays: [\n * 'Dimanche', 'Lundi', 'Mardi', 'Mercredi',\n * 'Jeudi', 'Vendredi', 'Samedi'\n * ]\n * }\n * });\n * ```\n */\n lang: {\n /**\n * The loading text that appears when the chart is set into the loading\n * state following a call to `chart.showLoading`.\n */\n loading: 'Loading...',\n /**\n * An array containing the months names. Corresponds to the `%B` format\n * in `Highcharts.dateFormat()`.\n *\n * @type {Array}\n * @default [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n * \"July\", \"August\", \"September\", \"October\", \"November\",\n * \"December\"]\n */\n months: [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July',\n 'August', 'September', 'October', 'November', 'December'\n ],\n /**\n * An array containing the months names in abbreviated form. Corresponds\n * to the `%b` format in `Highcharts.dateFormat()`.\n *\n * @type {Array}\n * @default [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\n * \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n */\n shortMonths: [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul',\n 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ],\n /**\n * An array containing the weekday names.\n *\n * @type {Array}\n * @default [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\",\n * \"Friday\", \"Saturday\"]\n */\n weekdays: [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday',\n 'Thursday', 'Friday', 'Saturday'\n ],\n /**\n * Short week days, starting Sunday. If not specified, Highcharts uses\n * the first three letters of the `lang.weekdays` option.\n *\n * @sample highcharts/lang/shortweekdays/\n * Finnish two-letter abbreviations\n *\n * @type {Array}\n * @since 4.2.4\n * @apioption lang.shortWeekdays\n */\n /**\n * What to show in a date field for invalid dates. Defaults to an empty\n * string.\n *\n * @type {string}\n * @since 4.1.8\n * @product highcharts highstock\n * @apioption lang.invalidDate\n */\n /**\n * The title appearing on hovering the zoom in button. The text itself\n * defaults to \"+\" and can be changed in the button options.\n *\n * @type {string}\n * @default Zoom in\n * @product highmaps\n * @apioption lang.zoomIn\n */\n /**\n * The title appearing on hovering the zoom out button. The text itself\n * defaults to \"-\" and can be changed in the button options.\n *\n * @type {string}\n * @default Zoom out\n * @product highmaps\n * @apioption lang.zoomOut\n */\n /**\n * The default decimal point used in the `Highcharts.numberFormat`\n * method unless otherwise specified in the function arguments.\n *\n * @since 1.2.2\n */\n decimalPoint: '.',\n /**\n * [Metric prefixes](https://en.wikipedia.org/wiki/Metric_prefix) used\n * to shorten high numbers in axis labels. Replacing any of the\n * positions with `null` causes the full number to be written. Setting\n * `numericSymbols` to `null` disables shortening altogether.\n *\n * @sample {highcharts} highcharts/lang/numericsymbols/\n * Replacing the symbols with text\n * @sample {highstock} highcharts/lang/numericsymbols/\n * Replacing the symbols with text\n *\n * @type {Array}\n * @default [\"k\", \"M\", \"G\", \"T\", \"P\", \"E\"]\n * @since 2.3.0\n */\n numericSymbols: ['k', 'M', 'G', 'T', 'P', 'E'],\n /**\n * The magnitude of [numericSymbols](#lang.numericSymbol) replacements.\n * Use 10000 for Japanese, Korean and various Chinese locales, which\n * use symbols for 10^4, 10^8 and 10^12.\n *\n * @sample highcharts/lang/numericsymbolmagnitude/\n * 10000 magnitude for Japanese\n *\n * @type {number}\n * @default 1000\n * @since 5.0.3\n * @apioption lang.numericSymbolMagnitude\n */\n /**\n * The text for the label appearing when a chart is zoomed.\n *\n * @since 1.2.4\n */\n resetZoom: 'Reset zoom',\n /**\n * The tooltip title for the label appearing when a chart is zoomed.\n *\n * @since 1.2.4\n */\n resetZoomTitle: 'Reset zoom level 1:1',\n /**\n * The default thousands separator used in the `Highcharts.numberFormat`\n * method unless otherwise specified in the function arguments. Defaults\n * to a single space character, which is recommended in\n * [ISO 31-0](https://en.wikipedia.org/wiki/ISO_31-0#Numbers) and works\n * across Anglo-American and continental European languages.\n *\n * @default \\u0020\n * @since 1.2.2\n */\n thousandsSep: ' '\n },\n /**\n * Global options that don't apply to each chart. These options, like\n * the `lang` options, must be set using the `Highcharts.setOptions`\n * method.\n *\n * ```js\n * Highcharts.setOptions({\n * global: {\n * useUTC: false\n * }\n * });\n * ```\n */\n /**\n * _Canvg rendering for Android 2.x is removed as of Highcharts 5.0\\.\n * Use the [libURL](#exporting.libURL) option to configure exporting._\n *\n * The URL to the additional file to lazy load for Android 2.x devices.\n * These devices don't support SVG, so we download a helper file that\n * contains [canvg](https://github.com/canvg/canvg), its dependency\n * rbcolor, and our own CanVG Renderer class. To avoid hotlinking to\n * our site, you can install canvas-tools.js on your own server and\n * change this option accordingly.\n *\n * @deprecated\n *\n * @type {string}\n * @default https://code.highcharts.com/{version}/modules/canvas-tools.js\n * @product highcharts highmaps\n * @apioption global.canvasToolsURL\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.useUTC](#time.useUTC) that supports individual time settings\n * per chart.\n *\n * @deprecated\n *\n * @type {boolean}\n * @apioption global.useUTC\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.Date](#time.Date) that supports individual time settings\n * per chart.\n *\n * @deprecated\n *\n * @type {Function}\n * @product highcharts highstock\n * @apioption global.Date\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.getTimezoneOffset](#time.getTimezoneOffset) that supports\n * individual time settings per chart.\n *\n * @deprecated\n *\n * @type {Function}\n * @product highcharts highstock\n * @apioption global.getTimezoneOffset\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.timezone](#time.timezone) that supports individual time\n * settings per chart.\n *\n * @deprecated\n *\n * @type {string}\n * @product highcharts highstock\n * @apioption global.timezone\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.timezoneOffset](#time.timezoneOffset) that supports individual\n * time settings per chart.\n *\n * @deprecated\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption global.timezoneOffset\n */\n global: {},\n /**\n * Time options that can apply globally or to individual charts. These\n * settings affect how `datetime` axes are laid out, how tooltips are\n * formatted, how series\n * [pointIntervalUnit](#plotOptions.series.pointIntervalUnit) works and how\n * the Highcharts Stock range selector handles time.\n *\n * The common use case is that all charts in the same Highcharts object\n * share the same time settings, in which case the global settings are set\n * using `setOptions`.\n *\n * ```js\n * // Apply time settings globally\n * Highcharts.setOptions({\n * time: {\n * timezone: 'Europe/London'\n * }\n * });\n * // Apply time settings by instance\n * let chart = Highcharts.chart('container', {\n * time: {\n * timezone: 'America/New_York'\n * },\n * series: [{\n * data: [1, 4, 3, 5]\n * }]\n * });\n *\n * // Use the Time object\n * console.log(\n * 'Current time in New York',\n * chart.time.dateFormat('%Y-%m-%d %H:%M:%S', Date.now())\n * );\n * ```\n *\n * Since v6.0.5, the time options were moved from the `global` obect to the\n * `time` object, and time options can be set on each individual chart.\n *\n * @sample {highcharts|highstock}\n * highcharts/time/timezone/\n * Set the timezone globally\n * @sample {highcharts}\n * highcharts/time/individual/\n * Set the timezone per chart instance\n * @sample {highstock}\n * stock/time/individual/\n * Set the timezone per chart instance\n *\n * @since 6.0.5\n * @optionparent time\n */\n time: {\n /**\n * A custom `Date` class for advanced date handling. For example,\n * [JDate](https://github.com/tahajahangir/jdate) can be hooked in to\n * handle Jalali dates.\n *\n * @type {*}\n * @since 4.0.4\n * @product highcharts highstock gantt\n */\n Date: void 0,\n /**\n * A callback to return the time zone offset for a given datetime. It\n * takes the timestamp in terms of milliseconds since January 1 1970,\n * and returns the timezone offset in minutes. This provides a hook\n * for drawing time based charts in specific time zones using their\n * local DST crossover dates, with the help of external libraries.\n *\n * @see [global.timezoneOffset](#global.timezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/gettimezoneoffset/\n * Use moment.js to draw Oslo time regardless of browser locale\n *\n * @type {Highcharts.TimezoneOffsetCallbackFunction}\n * @since 4.1.0\n * @product highcharts highstock gantt\n */\n getTimezoneOffset: void 0,\n /**\n * Requires [moment.js](https://momentjs.com/). If the timezone option\n * is specified, it creates a default\n * [getTimezoneOffset](#time.getTimezoneOffset) function that looks\n * up the specified timezone in moment.js. If moment.js is not included,\n * this throws a Highcharts error in the console, but does not crash the\n * chart.\n *\n * @see [getTimezoneOffset](#time.getTimezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/timezone/\n * Europe/Oslo\n *\n * @type {string}\n * @since 5.0.7\n * @product highcharts highstock gantt\n */\n timezone: void 0,\n /**\n * The timezone offset in minutes. Positive values are west, negative\n * values are east of UTC, as in the ECMAScript\n * [getTimezoneOffset](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset)\n * method. Use this to display UTC based data in a predefined time zone.\n *\n * @see [time.getTimezoneOffset](#time.getTimezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/timezoneoffset/\n * Timezone offset\n *\n * @since 3.0.8\n * @product highcharts highstock gantt\n */\n timezoneOffset: 0,\n /**\n * Whether to use UTC time for axis scaling, tickmark placement and\n * time display in `Highcharts.dateFormat`. Advantages of using UTC\n * is that the time displays equally regardless of the user agent's\n * time zone settings. Local time can be used when the data is loaded\n * in real time or when correct Daylight Saving Time transitions are\n * required.\n *\n * @sample {highcharts} highcharts/time/useutc-true/\n * True by default\n * @sample {highcharts} highcharts/time/useutc-false/\n * False\n */\n useUTC: true\n },\n chart: ChartDefaults,\n /**\n * The chart's main title.\n *\n * @sample {highmaps} maps/title/title/\n * Title options demonstrated\n */\n title: {\n /**\n * When the title is floating, the plot area will not move to make space\n * for it.\n *\n * @sample {highcharts} highcharts/chart/zoomtype-none/\n * False by default\n * @sample {highcharts} highcharts/title/floating/\n * True - title on top of the plot area\n * @sample {highstock} stock/chart/title-floating/\n * True - title on top of the plot area\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption title.floating\n */\n /**\n * CSS styles for the title. Use this for font styling, but use `align`,\n * `x` and `y` for text alignment.\n *\n * In styled mode, the title style is given in the `.highcharts-title`\n * class.\n *\n * @sample {highcharts} highcharts/title/style/\n * Custom color and weight\n * @sample {highstock} stock/chart/title-style/\n * Custom color and weight\n * @sample highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {highcharts|highmaps} { \"color\": \"#333333\", \"fontSize\": \"18px\" }\n * @default {highstock} { \"color\": \"#333333\", \"fontSize\": \"16px\" }\n * @apioption title.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption title.useHTML\n */\n /**\n * The vertical alignment of the title. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When a value is given, the title behaves\n * as if [floating](#title.floating) were `true`.\n *\n * @sample {highcharts} highcharts/title/verticalalign/\n * Chart title in bottom right corner\n * @sample {highstock} stock/chart/title-verticalalign/\n * Chart title in bottom right corner\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1\n * @apioption title.verticalAlign\n */\n /**\n * The x position of the title relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @sample {highcharts} highcharts/title/align/\n * Aligned to the plot area (x = 70px = margin left - spacing\n * left)\n * @sample {highstock} stock/chart/title-align/\n * Aligned to the plot area (x = 50px = margin left - spacing\n * left)\n *\n * @type {number}\n * @default 0\n * @since 2.0\n * @apioption title.x\n */\n /**\n * The y position of the title relative to the alignment within\n * [chart.spacingTop](#chart.spacingTop) and [chart.spacingBottom](\n * #chart.spacingBottom). By default it depends on the font size.\n *\n * @sample {highcharts} highcharts/title/y/\n * Title inside the plot area\n * @sample {highstock} stock/chart/title-verticalalign/\n * Chart title in bottom right corner\n *\n * @type {number}\n * @since 2.0\n * @apioption title.y\n */\n /**\n * The title of the chart. To disable the title, set the `text` to\n * `undefined`.\n *\n * @sample {highcharts} highcharts/title/text/\n * Custom title\n * @sample {highstock} stock/chart/title-text/\n * Custom title\n *\n * @default {highcharts|highmaps} Chart title\n * @default {highstock} undefined\n */\n text: 'Chart title',\n /**\n * The horizontal alignment of the title. Can be one of \"left\", \"center\"\n * and \"right\".\n *\n * @sample {highcharts} highcharts/title/align/\n * Aligned to the plot area (x = 70px = margin left - spacing\n * left)\n * @sample {highstock} stock/chart/title-align/\n * Aligned to the plot area (x = 50px = margin left - spacing\n * left)\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * The margin between the title and the plot area, or if a subtitle\n * is present, the margin between the subtitle and the plot area.\n *\n * @sample {highcharts} highcharts/title/margin-50/\n * A chart title margin of 50\n * @sample {highcharts} highcharts/title/margin-subtitle/\n * The same margin applied with a subtitle\n * @sample {highstock} stock/chart/title-margin/\n * A chart title margin of 50\n *\n * @since 2.1\n */\n margin: 15,\n /**\n * Adjustment made to the title width, normally to reserve space for\n * the exporting burger menu.\n *\n * @sample highcharts/title/widthadjust/\n * Wider menu, greater padding\n *\n * @since 4.2.5\n */\n widthAdjust: -44\n },\n /**\n * The chart's subtitle. This can be used both to display a subtitle below\n * the main title, and to display random text anywhere in the chart. The\n * subtitle can be updated after chart initialization through the\n * `Chart.setTitle` method.\n *\n * @sample {highmaps} maps/title/subtitle/\n * Subtitle options demonstrated\n */\n subtitle: {\n /**\n * When the subtitle is floating, the plot area will not move to make\n * space for it.\n *\n * @sample {highcharts} highcharts/subtitle/floating/\n * Floating title and subtitle\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote floating at bottom right of plot area\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption subtitle.floating\n */\n /**\n * CSS styles for the title.\n *\n * In styled mode, the subtitle style is given in the\n * `.highcharts-subtitle` class.\n *\n * @sample {highcharts} highcharts/subtitle/style/\n * Custom color and weight\n * @sample {highcharts} highcharts/css/titles/\n * Styled mode\n * @sample {highstock} stock/chart/subtitle-style\n * Custom color and weight\n * @sample {highstock} highcharts/css/titles/\n * Styled mode\n * @sample {highmaps} highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#666666\"}\n * @apioption subtitle.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption subtitle.useHTML\n */\n /**\n * The vertical alignment of the title. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When middle, the subtitle behaves as\n * floating.\n *\n * @sample {highcharts} highcharts/subtitle/verticalalign/\n * Footnote at the bottom right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1\n * @apioption subtitle.verticalAlign\n */\n /**\n * The x position of the subtitle relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @sample {highcharts} highcharts/subtitle/align/\n * Footnote at right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {number}\n * @default 0\n * @since 2.0\n * @apioption subtitle.x\n */\n /**\n * The y position of the subtitle relative to the alignment within\n * `chart.spacingTop` and `chart.spacingBottom`. By default the subtitle\n * is laid out below the title unless the title is floating.\n *\n * @sample {highcharts} highcharts/subtitle/verticalalign/\n * Footnote at the bottom right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {number}\n * @since 2.0\n * @apioption subtitle.y\n */\n /**\n * The subtitle of the chart.\n *\n * @sample {highcharts|highstock} highcharts/subtitle/text/\n * Custom subtitle\n * @sample {highcharts|highstock} highcharts/subtitle/text-formatted/\n * Formatted and linked text.\n */\n text: '',\n /**\n * The horizontal alignment of the subtitle. Can be one of \"left\",\n * \"center\" and \"right\".\n *\n * @sample {highcharts} highcharts/subtitle/align/\n * Footnote at right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at bottom right of plot area\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * Adjustment made to the subtitle width, normally to reserve space\n * for the exporting burger menu.\n *\n * @see [title.widthAdjust](#title.widthAdjust)\n *\n * @sample highcharts/title/widthadjust/\n * Wider menu, greater padding\n *\n * @since 4.2.5\n */\n widthAdjust: -44\n },\n /**\n * The chart's caption, which will render below the chart and will be part\n * of exported charts. The caption can be updated after chart initialization\n * through the `Chart.update` or `Chart.caption.update` methods.\n *\n * @sample highcharts/caption/text/\n * A chart with a caption\n * @since 7.2.0\n */\n caption: {\n /**\n * When the caption is floating, the plot area will not move to make\n * space for it.\n *\n * @type {boolean}\n * @default false\n * @apioption caption.floating\n */\n /**\n * The margin between the caption and the plot area.\n */\n margin: 15,\n /**\n * CSS styles for the caption.\n *\n * In styled mode, the caption style is given in the\n * `.highcharts-caption` class.\n *\n * @sample {highcharts} highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#666666\"}\n * @apioption caption.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption caption.useHTML\n */\n /**\n * The x position of the caption relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @type {number}\n * @default 0\n * @apioption caption.x\n */\n /**\n * The y position of the caption relative to the alignment within\n * `chart.spacingTop` and `chart.spacingBottom`.\n *\n * @type {number}\n * @apioption caption.y\n */\n /**\n * The caption text of the chart.\n *\n * @sample {highcharts} highcharts/caption/text/\n * Custom caption\n */\n text: '',\n /**\n * The horizontal alignment of the caption. Can be one of \"left\",\n * \"center\" and \"right\".\n *\n * @type {Highcharts.AlignValue}\n */\n align: 'left',\n /**\n * The vertical alignment of the caption. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When middle, the caption behaves as\n * floating.\n *\n * @type {Highcharts.VerticalAlignValue}\n */\n verticalAlign: 'bottom'\n },\n /**\n * The plotOptions is a wrapper object for config objects for each series\n * type. The config objects for each series can also be overridden for\n * each series item as given in the series array.\n *\n * Configuration options for the series are given in three levels. Options\n * for all series in a chart are given in the [plotOptions.series](\n * #plotOptions.series) object. Then options for all series of a specific\n * type are given in the plotOptions of that type, for example\n * `plotOptions.line`. Next, options for one single series are given in\n * [the series array](#series).\n */\n plotOptions: {},\n /**\n * HTML labels that can be positioned anywhere in the chart area.\n *\n * This option is deprecated since v7.1.2. Instead, use\n * [annotations](#annotations) that support labels.\n *\n * @deprecated\n * @product highcharts highstock\n */\n labels: {\n /**\n * An HTML label that can be positioned anywhere in the chart area.\n *\n * @deprecated\n * @type {Array<*>}\n * @apioption labels.items\n */\n /**\n * Inner HTML or text for the label.\n *\n * @deprecated\n * @type {string}\n * @apioption labels.items.html\n */\n /**\n * CSS styles for each label. To position the label, use left and top\n * like this:\n * ```js\n * style: {\n * left: '100px',\n * top: '100px'\n * }\n * ```\n *\n * @deprecated\n * @type {Highcharts.CSSObject}\n * @apioption labels.items.style\n */\n /**\n * Shared CSS styles for all labels.\n *\n * @deprecated\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#333333\", \"position\": \"absolute\"}\n */\n style: {\n /**\n * @ignore-option\n */\n position: 'absolute',\n /**\n * @ignore-option\n */\n color: \"#333333\" /* neutralColor80 */\n }\n },\n /**\n * The legend is a box containing a symbol and name for each series\n * item or point item in the chart. Each series (or points in case\n * of pie charts) is represented by a symbol and its name in the legend.\n *\n * It is possible to override the symbol creator function and create\n * [custom legend symbols](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/studies/legend-custom-symbol/).\n *\n * @productdesc {highmaps}\n * A Highmaps legend by default contains one legend item per series, but if\n * a `colorAxis` is defined, the axis will be displayed in the legend.\n * Either as a gradient, or as multiple legend items for `dataClasses`.\n */\n legend: {\n /**\n * The background color of the legend.\n *\n * @see In styled mode, the legend background fill can be applied with\n * the `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/backgroundcolor/\n * Yellowish background\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption legend.backgroundColor\n */\n /**\n * The width of the drawn border around the legend.\n *\n * @see In styled mode, the legend border stroke width can be applied\n * with the `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/borderwidth/\n * 2px border width\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {number}\n * @default 0\n * @apioption legend.borderWidth\n */\n /**\n * Enable or disable the legend. There is also a series-specific option,\n * [showInLegend](#plotOptions.series.showInLegend), that can hide the\n * series from the legend. In some series types this is `false` by\n * default, so it must set to `true` in order to show the legend for the\n * series.\n *\n * @sample {highcharts} highcharts/legend/enabled-false/ Legend disabled\n * @sample {highstock} stock/legend/align/ Various legend options\n * @sample {highmaps} maps/legend/enabled-false/ Legend disabled\n *\n * @default {highstock} false\n * @default {highmaps} true\n * @default {gantt} false\n */\n enabled: true,\n /**\n * The horizontal alignment of the legend box within the chart area.\n * Valid values are `left`, `center` and `right`.\n *\n * In the case that the legend is aligned in a corner position, the\n * `layout` option will determine whether to place it above/below\n * or on the side of the plot area.\n *\n * @sample {highcharts} highcharts/legend/align/\n * Legend at the right of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * If the [layout](legend.layout) is `horizontal` and the legend items\n * span over two lines or more, whether to align the items into vertical\n * columns. Setting this to `false` makes room for more items, but will\n * look more messy.\n *\n * @since 6.1.0\n */\n alignColumns: true,\n /**\n * A CSS class name to apply to the legend group.\n */\n className: 'highcharts-no-tooltip',\n /**\n * When the legend is floating, the plot area ignores it and is allowed\n * to be placed below it.\n *\n * @sample {highcharts} highcharts/legend/floating-false/\n * False by default\n * @sample {highcharts} highcharts/legend/floating-true/\n * True\n * @sample {highmaps} maps/legend/alignment/\n * Floating legend\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption legend.floating\n */\n /**\n * The layout of the legend items. Can be one of `horizontal` or\n * `vertical` or `proximate`. When `proximate`, the legend items will be\n * placed as close as possible to the graphs they're representing,\n * except in inverted charts or when the legend position doesn't allow\n * it.\n *\n * @sample {highcharts} highcharts/legend/layout-horizontal/\n * Horizontal by default\n * @sample {highcharts} highcharts/legend/layout-vertical/\n * Vertical\n * @sample highcharts/legend/layout-proximate\n * Labels proximate to the data\n * @sample {highstock} stock/legend/layout-horizontal/\n * Horizontal by default\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Vertical with data classes\n * @sample {highmaps} maps/legend/layout-vertical/\n * Vertical with color axis gradient\n *\n * @validvalue [\"horizontal\", \"vertical\", \"proximate\"]\n */\n layout: 'horizontal',\n /**\n * In a legend with horizontal layout, the itemDistance defines the\n * pixel distance between each item.\n *\n * @sample {highcharts} highcharts/legend/layout-horizontal/\n * 50px item distance\n * @sample {highstock} highcharts/legend/layout-horizontal/\n * 50px item distance\n *\n * @type {number}\n * @default {highcharts} 20\n * @default {highstock} 20\n * @default {highmaps} 8\n * @since 3.0.3\n * @apioption legend.itemDistance\n */\n /**\n * The pixel bottom margin for each legend item.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 0\n * @since 2.2.0\n * @apioption legend.itemMarginBottom\n */\n /**\n * The pixel top margin for each legend item.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 0\n * @since 2.2.0\n * @apioption legend.itemMarginTop\n */\n /**\n * The width for each legend item. By default the items are laid out\n * successively. In a [horizontal layout](legend.layout), if the items\n * are laid out across two rows or more, they will be vertically aligned\n * depending on the [legend.alignColumns](legend.alignColumns) option.\n *\n * @sample {highcharts} highcharts/legend/itemwidth-default/\n * Undefined by default\n * @sample {highcharts} highcharts/legend/itemwidth-80/\n * 80 for aligned legend items\n *\n * @type {number}\n * @since 2.0\n * @apioption legend.itemWidth\n */\n /**\n * A [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for each legend label. Available variables relates to properties on\n * the series, or the point in case of pies.\n *\n * @type {string}\n * @default {name}\n * @since 1.3\n * @apioption legend.labelFormat\n */\n /* eslint-disable valid-jsdoc */\n /**\n * Callback function to format each of the series' labels. The `this`\n * keyword refers to the series object, or the point object in case of\n * pie charts. By default the series or point name is printed.\n *\n * @productdesc {highmaps}\n * In Highmaps the context can also be a data class in case of a\n * `colorAxis`.\n *\n * @sample {highcharts} highcharts/legend/labelformatter/\n * Add text\n * @sample {highmaps} maps/legend/labelformatter/\n * Data classes with label formatter\n *\n * @type {Highcharts.FormatterCallbackFunction}\n */\n labelFormatter: function () {\n /** eslint-enable valid-jsdoc */\n return this.name;\n },\n /**\n * Line height for the legend items. Deprecated as of 2.1\\. Instead,\n * the line height for each item can be set using\n * `itemStyle.lineHeight`, and the padding between items using\n * `itemMarginTop` and `itemMarginBottom`.\n *\n * @sample {highcharts} highcharts/legend/lineheight/\n * Setting padding\n *\n * @deprecated\n *\n * @type {number}\n * @default 16\n * @since 2.0\n * @product highcharts gantt\n * @apioption legend.lineHeight\n */\n /**\n * If the plot area sized is calculated automatically and the legend is\n * not floating, the legend margin is the space between the legend and\n * the axis labels or plot area.\n *\n * @sample {highcharts} highcharts/legend/margin-default/\n * 12 pixels by default\n * @sample {highcharts} highcharts/legend/margin-30/\n * 30 pixels\n *\n * @type {number}\n * @default 12\n * @since 2.1\n * @apioption legend.margin\n */\n /**\n * Maximum pixel height for the legend. When the maximum height is\n * extended, navigation will show.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption legend.maxHeight\n */\n /**\n * The color of the drawn border around the legend.\n *\n * @see In styled mode, the legend border stroke can be applied with the\n * `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/bordercolor/\n * Brown border\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#999999\" /* neutralColor40 */,\n /**\n * The border corner radius of the legend.\n *\n * @sample {highcharts} highcharts/legend/borderradius-default/\n * Square by default\n * @sample {highcharts} highcharts/legend/borderradius-round/\n * 5px rounded\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n */\n borderRadius: 0,\n /**\n * Options for the paging or navigation appearing when the legend is\n * overflown. Navigation works well on screen, but not in static\n * exported images. One way of working around that is to\n * [increase the chart height in\n * export](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/legend/navigation-enabled-false/).\n */\n navigation: {\n /**\n * How to animate the pages when navigating up or down. A value of\n * `true` applies the default navigation given in the\n * `chart.animation` option. Additional options can be given as an\n * object containing values for easing and duration.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {boolean|Partial}\n * @default true\n * @since 2.2.4\n * @apioption legend.navigation.animation\n */\n /**\n * The pixel size of the up and down arrows in the legend paging\n * navigation.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {number}\n * @default 12\n * @since 2.2.4\n * @apioption legend.navigation.arrowSize\n */\n /**\n * Whether to enable the legend navigation. In most cases, disabling\n * the navigation results in an unwanted overflow.\n *\n * See also the [adapt chart to legend](\n * https://www.highcharts.com/products/plugin-registry/single/8/Adapt-Chart-To-Legend)\n * plugin for a solution to extend the chart height to make room for\n * the legend, optionally in exported charts only.\n *\n * @type {boolean}\n * @default true\n * @since 4.2.4\n * @apioption legend.navigation.enabled\n */\n /**\n * Text styles for the legend page navigation.\n *\n * @see In styled mode, the navigation items are styled with the\n * `.highcharts-legend-navigation` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.CSSObject}\n * @since 2.2.4\n * @apioption legend.navigation.style\n */\n /**\n * The color for the active up or down arrow in the legend page\n * navigation.\n *\n * @see In styled mode, the active arrow be styled with the\n * `.highcharts-legend-nav-active` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.4\n */\n activeColor: \"#003399\" /* highlightColor100 */,\n /**\n * The color of the inactive up or down arrow in the legend page\n * navigation. .\n *\n * @see In styled mode, the inactive arrow be styled with the\n * `.highcharts-legend-nav-inactive` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.4\n */\n inactiveColor: \"#cccccc\" /* neutralColor20 */\n },\n /**\n * The inner padding of the legend box.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 8\n * @since 2.2.0\n * @apioption legend.padding\n */\n /**\n * Whether to reverse the order of the legend items compared to the\n * order of the series or points as defined in the configuration object.\n *\n * @see [yAxis.reversedStacks](#yAxis.reversedStacks),\n * [series.legendIndex](#series.legendIndex)\n *\n * @sample {highcharts} highcharts/legend/reversed/\n * Stacked bar with reversed legend\n *\n * @type {boolean}\n * @default false\n * @since 1.2.5\n * @apioption legend.reversed\n */\n /**\n * Whether to show the symbol on the right side of the text rather than\n * the left side. This is common in Arabic and Hebrew.\n *\n * @sample {highcharts} highcharts/legend/rtl/\n * Symbol to the right\n *\n * @type {boolean}\n * @default false\n * @since 2.2\n * @apioption legend.rtl\n */\n /**\n * CSS styles for the legend area. In the 1.x versions the position\n * of the legend area was determined by CSS. In 2.x, the position is\n * determined by properties like `align`, `verticalAlign`, `x` and `y`,\n * but the styles are still parsed for backwards compatibility.\n *\n * @deprecated\n *\n * @type {Highcharts.CSSObject}\n * @product highcharts highstock\n * @apioption legend.style\n */\n /**\n * CSS styles for each legend item. Only a subset of CSS is supported,\n * notably those options related to text. The default `textOverflow`\n * property makes long texts truncate. Set it to `undefined` to wrap\n * text instead. A `width` property can be added to control the text\n * width.\n *\n * @see In styled mode, the legend items can be styled with the\n * `.highcharts-legend-item` class.\n *\n * @sample {highcharts} highcharts/legend/itemstyle/\n * Bold black text\n * @sample {highmaps} maps/legend/itemstyle/\n * Item text styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#333333\", \"cursor\": \"pointer\", \"fontSize\": \"12px\", \"fontWeight\": \"bold\", \"textOverflow\": \"ellipsis\"}\n */\n itemStyle: {\n /**\n * @ignore\n */\n color: \"#333333\" /* neutralColor80 */,\n /**\n * @ignore\n */\n cursor: 'pointer',\n /**\n * @ignore\n */\n fontSize: '12px',\n /**\n * @ignore\n */\n fontWeight: 'bold',\n /**\n * @ignore\n */\n textOverflow: 'ellipsis'\n },\n /**\n * CSS styles for each legend item in hover mode. Only a subset of\n * CSS is supported, notably those options related to text. Properties\n * are inherited from `style` unless overridden here.\n *\n * @see In styled mode, the hovered legend items can be styled with\n * the `.highcharts-legend-item:hover` pesudo-class.\n *\n * @sample {highcharts} highcharts/legend/itemhoverstyle/\n * Red on hover\n * @sample {highmaps} maps/legend/itemstyle/\n * Item text styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#000000\"}\n */\n itemHoverStyle: {\n /**\n * @ignore\n */\n color: \"#000000\" /* neutralColor100 */\n },\n /**\n * CSS styles for each legend item when the corresponding series or\n * point is hidden. Only a subset of CSS is supported, notably those\n * options related to text. Properties are inherited from `style`\n * unless overridden here.\n *\n * @see In styled mode, the hidden legend items can be styled with\n * the `.highcharts-legend-item-hidden` class.\n *\n * @sample {highcharts} highcharts/legend/itemhiddenstyle/\n * Darker gray color\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#cccccc\"}\n */\n itemHiddenStyle: {\n /**\n * @ignore\n */\n color: \"#cccccc\" /* neutralColor20 */\n },\n /**\n * Whether to apply a drop shadow to the legend. A `backgroundColor`\n * also needs to be applied for this to take effect. The shadow can be\n * an object configuration containing `color`, `offsetX`, `offsetY`,\n * `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/legend/shadow/\n * White background and drop shadow\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {boolean|Highcharts.CSSObject}\n */\n shadow: false,\n /**\n * Default styling for the checkbox next to a legend item when\n * `showCheckbox` is true.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"width\": \"13px\", \"height\": \"13px\", \"position\":\"absolute\"}\n */\n itemCheckboxStyle: {\n /**\n * @ignore\n */\n position: 'absolute',\n /**\n * @ignore\n */\n width: '13px',\n /**\n * @ignore\n */\n height: '13px'\n },\n // itemWidth: undefined,\n /**\n * When this is true, the legend symbol width will be the same as\n * the symbol height, which in turn defaults to the font size of the\n * legend items.\n *\n * @since 5.0.0\n */\n squareSymbol: true,\n /**\n * The pixel height of the symbol for series types that use a rectangle\n * in the legend. Defaults to the font size of legend items.\n *\n * @productdesc {highmaps}\n * In Highmaps, when the symbol is the gradient of a vertical color\n * axis, the height defaults to 200.\n *\n * @sample {highmaps} maps/legend/layout-vertical-sized/\n * Sized vertical gradient\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * No distance between data classes\n *\n * @type {number}\n * @since 3.0.8\n * @apioption legend.symbolHeight\n */\n /**\n * The border radius of the symbol for series types that use a rectangle\n * in the legend. Defaults to half the `symbolHeight`.\n *\n * @sample {highcharts} highcharts/legend/symbolradius/\n * Round symbols\n * @sample {highstock} highcharts/legend/symbolradius/\n * Round symbols\n * @sample {highmaps} highcharts/legend/symbolradius/\n * Round symbols\n *\n * @type {number}\n * @since 3.0.8\n * @apioption legend.symbolRadius\n */\n /**\n * The pixel width of the legend item symbol. When the `squareSymbol`\n * option is set, this defaults to the `symbolHeight`, otherwise 16.\n *\n * @productdesc {highmaps}\n * In Highmaps, when the symbol is the gradient of a horizontal color\n * axis, the width defaults to 200.\n *\n * @sample {highcharts} highcharts/legend/symbolwidth/\n * Greater symbol width and padding\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/layout-vertical-sized/\n * Sized vertical gradient\n *\n * @type {number}\n * @apioption legend.symbolWidth\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the legend item texts.\n *\n * Prior to 4.1.7, when using HTML, [legend.navigation](\n * #legend.navigation) was disabled.\n *\n * @type {boolean}\n * @default false\n * @apioption legend.useHTML\n */\n /**\n * The width of the legend box. If a number is set, it translates to\n * pixels. Since v7.0.2 it allows setting a percent string of the full\n * chart width, for example `40%`.\n *\n * Defaults to the full chart width for legends below or above the\n * chart, half the chart width for legends to the left and right.\n *\n * @sample {highcharts} highcharts/legend/width/\n * Aligned to the plot area\n * @sample {highcharts} highcharts/legend/width-percent/\n * A percent of the chart width\n *\n * @type {number|string}\n * @since 2.0\n * @apioption legend.width\n */\n /**\n * The pixel padding between the legend item symbol and the legend\n * item text.\n *\n * @sample {highcharts} highcharts/legend/symbolpadding/\n * Greater symbol width and padding\n */\n symbolPadding: 5,\n /**\n * The vertical alignment of the legend box. Can be one of `top`,\n * `middle` or `bottom`. Vertical position can be further determined\n * by the `y` option.\n *\n * In the case that the legend is aligned in a corner position, the\n * `layout` option will determine whether to place it above/below\n * or on the side of the plot area.\n *\n * When the [layout](#legend.layout) option is `proximate`, the\n * `verticalAlign` option doesn't apply.\n *\n * @sample {highcharts} highcharts/legend/verticalalign/\n * Legend 100px from the top of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.0\n */\n verticalAlign: 'bottom',\n // width: undefined,\n /**\n * The x offset of the legend relative to its horizontal alignment\n * `align` within chart.spacingLeft and chart.spacingRight. Negative\n * x moves it to the left, positive x moves it to the right.\n *\n * @sample {highcharts} highcharts/legend/width/\n * Aligned to the plot area\n *\n * @since 2.0\n */\n x: 0,\n /**\n * The vertical offset of the legend relative to it's vertical alignment\n * `verticalAlign` within chart.spacingTop and chart.spacingBottom.\n * Negative y moves it up, positive y moves it down.\n *\n * @sample {highcharts} highcharts/legend/verticalalign/\n * Legend 100px from the top of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @since 2.0\n */\n y: 0,\n /**\n * A title to be added on top of the legend.\n *\n * @sample {highcharts} highcharts/legend/title/\n * Legend title\n * @sample {highmaps} maps/legend/alignment/\n * Legend with title\n *\n * @since 3.0\n */\n title: {\n /**\n * A text or HTML string for the title.\n *\n * @type {string}\n * @since 3.0\n * @apioption legend.title.text\n */\n /**\n * Generic CSS styles for the legend title.\n *\n * @see In styled mode, the legend title is styled with the\n * `.highcharts-legend-title` class.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontWeight\": \"bold\"}\n * @since 3.0\n */\n style: {\n /**\n * @ignore\n */\n fontWeight: 'bold'\n }\n }\n },\n /**\n * The loading options control the appearance of the loading screen\n * that covers the plot area on chart operations. This screen only\n * appears after an explicit call to `chart.showLoading()`. It is a\n * utility for developers to communicate to the end user that something\n * is going on, for example while retrieving new data via an XHR connection.\n * The \"Loading...\" text itself is not part of this configuration\n * object, but part of the `lang` object.\n */\n loading: {\n /**\n * The duration in milliseconds of the fade out effect.\n *\n * @sample highcharts/loading/hideduration/\n * Fade in and out over a second\n *\n * @type {number}\n * @default 100\n * @since 1.2.0\n * @apioption loading.hideDuration\n */\n /**\n * The duration in milliseconds of the fade in effect.\n *\n * @sample highcharts/loading/hideduration/\n * Fade in and out over a second\n *\n * @type {number}\n * @default 100\n * @since 1.2.0\n * @apioption loading.showDuration\n */\n /**\n * CSS styles for the loading label `span`.\n *\n * @see In styled mode, the loading label is styled with the\n * `.highcharts-loading-inner` class.\n *\n * @sample {highcharts|highmaps} highcharts/loading/labelstyle/\n * Vertically centered\n * @sample {highstock} stock/loading/general/\n * Label styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontWeight\": \"bold\", \"position\": \"relative\", \"top\": \"45%\"}\n * @since 1.2.0\n */\n labelStyle: {\n /**\n * @ignore\n */\n fontWeight: 'bold',\n /**\n * @ignore\n */\n position: 'relative',\n /**\n * @ignore\n */\n top: '45%'\n },\n /**\n * CSS styles for the loading screen that covers the plot area.\n *\n * In styled mode, the loading label is styled with the\n * `.highcharts-loading` class.\n *\n * @sample {highcharts|highmaps} highcharts/loading/style/\n * Gray plot area, white text\n * @sample {highstock} stock/loading/general/\n * Gray plot area, white text\n *\n * @type {Highcharts.CSSObject}\n * @default {\"position\": \"absolute\", \"backgroundColor\": \"#ffffff\", \"opacity\": 0.5, \"textAlign\": \"center\"}\n * @since 1.2.0\n */\n style: {\n /**\n * @ignore\n */\n position: 'absolute',\n /**\n * @ignore\n */\n backgroundColor: \"#ffffff\" /* backgroundColor */,\n /**\n * @ignore\n */\n opacity: 0.5,\n /**\n * @ignore\n */\n textAlign: 'center'\n }\n },\n /**\n * Options for the tooltip that appears when the user hovers over a\n * series or point.\n *\n * @declare Highcharts.TooltipOptions\n */\n tooltip: {\n /**\n * The color of the tooltip border. When `undefined`, the border takes\n * the color of the corresponding series or point.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * Follow series by default\n * @sample {highcharts} highcharts/tooltip/bordercolor-black/\n * Black border\n * @sample {highstock} stock/tooltip/general/\n * Styled tooltip\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption tooltip.borderColor\n */\n /**\n * A CSS class name to apply to the tooltip's container div,\n * allowing unique CSS styling for each chart.\n *\n * @type {string}\n * @apioption tooltip.className\n */\n /**\n * Since 4.1, the crosshair definitions are moved to the Axis object\n * in order for a better separation from the tooltip. See\n * [xAxis.crosshair](#xAxis.crosshair).\n *\n * @sample {highcharts} highcharts/tooltip/crosshairs-x/\n * Enable a crosshair for the x value\n *\n * @deprecated\n *\n * @type {*}\n * @default true\n * @apioption tooltip.crosshairs\n */\n /**\n * Distance from point to tooltip in pixels.\n *\n * @type {number}\n * @default 16\n * @apioption tooltip.distance\n */\n /**\n * Whether the tooltip should follow the mouse as it moves across\n * columns, pie slices and other point types with an extent.\n * By default it behaves this way for pie, polygon, map, sankey\n * and wordcloud series by override in the `plotOptions`\n * for those series types.\n *\n * Does not apply if [split](#tooltip.split) is `true`.\n *\n * For touch moves to behave the same way, [followTouchMove](\n * #tooltip.followTouchMove) must be `true` also.\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} false\n * @default {highmaps} true\n * @since 3.0\n * @apioption tooltip.followPointer\n */\n /**\n * Whether the tooltip should update as the finger moves on a touch\n * device. If this is `true` and [chart.panning](#chart.panning) is\n * set,`followTouchMove` will take over one-finger touches, so the user\n * needs to use two fingers for zooming and panning.\n *\n * Note the difference to [followPointer](#tooltip.followPointer) that\n * only defines the _position_ of the tooltip. If `followPointer` is\n * false in for example a column series, the tooltip will show above or\n * below the column, but as `followTouchMove` is true, the tooltip will\n * jump from column to column as the user swipes across the plot area.\n *\n * @type {boolean}\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n * @since 3.0.1\n * @apioption tooltip.followTouchMove\n */\n /**\n * Callback function to format the text of the tooltip from scratch. In\n * case of single or [shared](#tooltip.shared) tooltips, a string should\n * be returned. In case of [split](#tooltip.split) tooltips, it should\n * return an array where the first item is the header, and subsequent\n * items are mapped to the points. Return `false` to disable tooltip for\n * a specific point on series.\n *\n * A subset of HTML is supported. Unless `useHTML` is true, the HTML of\n * the tooltip is parsed and converted to SVG, therefore this isn't a\n * complete HTML renderer. The following HTML tags are supported: `b`,\n * `br`, `em`, `i`, `span`, `strong`. Spans can be styled with a `style`\n * attribute, but only text-related CSS, that is shared with SVG, is\n * handled.\n *\n * The available data in the formatter differ a bit depending on whether\n * the tooltip is shared or split, or belongs to a single point. In a\n * shared/split tooltip, all properties except `x`, which is common for\n * all points, are kept in an array, `this.points`.\n *\n * Available data are:\n *\n * - **this.percentage (not shared) /**\n * **this.points[i].percentage (shared)**:\n * Stacked series and pies only. The point's percentage of the total.\n *\n * - **this.point (not shared) / this.points[i].point (shared)**:\n * The point object. The point name, if defined, is available through\n * `this.point.name`.\n *\n * - **this.points**:\n * In a shared tooltip, this is an array containing all other\n * properties for each point.\n *\n * - **this.series (not shared) / this.points[i].series (shared)**:\n * The series object. The series name is available through\n * `this.series.name`.\n *\n * - **this.total (not shared) / this.points[i].total (shared)**:\n * Stacked series only. The total value at this point's x value.\n *\n * - **this.x**:\n * The x value. This property is the same regardless of the tooltip\n * being shared or not.\n *\n * - **this.y (not shared) / this.points[i].y (shared)**:\n * The y value.\n *\n * @sample {highcharts} highcharts/tooltip/formatter-simple/\n * Simple string formatting\n * @sample {highcharts} highcharts/tooltip/formatter-shared/\n * Formatting with shared tooltip\n * @sample {highcharts|highstock} highcharts/tooltip/formatter-split/\n * Formatting with split tooltip\n * @sample highcharts/tooltip/formatter-conditional-default/\n * Extending default formatter\n * @sample {highstock} stock/tooltip/formatter/\n * Formatting with shared tooltip\n * @sample {highmaps} maps/tooltip/formatter/\n * String formatting\n *\n * @type {Highcharts.TooltipFormatterCallbackFunction}\n * @apioption tooltip.formatter\n */\n /**\n * Callback function to format the text of the tooltip for\n * visible null points.\n * Works analogously to [formatter](#tooltip.formatter).\n *\n * @sample highcharts/plotoptions/series-nullformat\n * Format data label and tooltip for null point.\n *\n * @type {Highcharts.TooltipFormatterCallbackFunction}\n * @apioption tooltip.nullFormatter\n */\n /**\n * Whether to allow the tooltip to render outside the chart's SVG\n * element box. By default (`false`), the tooltip is rendered within the\n * chart's SVG element, which results in the tooltip being aligned\n * inside the chart area. For small charts, this may result in clipping\n * or overlapping. When `true`, a separate SVG element is created and\n * overlaid on the page, allowing the tooltip to be aligned inside the\n * page itself.\n *\n * Defaults to `true` if `chart.scrollablePlotArea` is activated,\n * otherwise `false`.\n *\n * @sample highcharts/tooltip/outside\n * Small charts with tooltips outside\n *\n * @type {boolean|undefined}\n * @default undefined\n * @since 6.1.1\n * @apioption tooltip.outside\n */\n /**\n * A callback function for formatting the HTML output for a single point\n * in the tooltip. Like the `pointFormat` string, but with more\n * flexibility.\n *\n * @type {Highcharts.FormatterCallbackFunction}\n * @since 4.1.0\n * @context Highcharts.Point\n * @apioption tooltip.pointFormatter\n */\n /**\n * A callback function to place the tooltip in a default position. The\n * callback receives three parameters: `labelWidth`, `labelHeight` and\n * `point`, where point contains values for `plotX` and `plotY` telling\n * where the reference point is in the plot area. Add `chart.plotLeft`\n * and `chart.plotTop` to get the full coordinates.\n *\n * Since v7, when [tooltip.split](#tooltip.split) option is enabled,\n * positioner is called for each of the boxes separately, including\n * xAxis header. xAxis header is not a point, instead `point` argument\n * contains info:\n * `{ plotX: Number, plotY: Number, isHeader: Boolean }`\n *\n *\n * The return should be an object containing x and y values, for example\n * `{ x: 100, y: 100 }`.\n *\n * @sample {highcharts} highcharts/tooltip/positioner/\n * A fixed tooltip position\n * @sample {highstock} stock/tooltip/positioner/\n * A fixed tooltip position on top of the chart\n * @sample {highmaps} maps/tooltip/positioner/\n * A fixed tooltip position\n * @sample {highstock} stock/tooltip/split-positioner/\n * Split tooltip with fixed positions\n * @sample {highstock} stock/tooltip/positioner-scrollable-plotarea/\n * Scrollable plot area combined with tooltip positioner\n *\n * @type {Highcharts.TooltipPositionerCallbackFunction}\n * @since 2.2.4\n * @apioption tooltip.positioner\n */\n /**\n * Split the tooltip into one label per series, with the header close\n * to the axis. This is recommended over [shared](#tooltip.shared)\n * tooltips for charts with multiple line series, generally making them\n * easier to read. This option takes precedence over `tooltip.shared`.\n *\n * @productdesc {highstock} In Highcharts Stock, tooltips are split\n * by default since v6.0.0. Stock charts typically contain\n * multi-dimension points and multiple panes, making split tooltips\n * the preferred layout over\n * the previous `shared` tooltip.\n *\n * @sample highcharts/tooltip/split/\n * Split tooltip\n * @sample {highcharts|highstock} highcharts/tooltip/formatter-split/\n * Split tooltip and custom formatter callback\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} true\n * @since 5.0.0\n * @product highcharts highstock\n * @apioption tooltip.split\n */\n /**\n * Prevents the tooltip from switching or closing, when touched or\n * pointed.\n *\n * @sample highcharts/tooltip/stickoncontact/\n * Tooltip sticks on pointer contact\n *\n * @type {boolean}\n * @since 8.0.1\n * @apioption tooltip.stickOnContact\n */\n /**\n * Use HTML to render the contents of the tooltip instead of SVG. Using\n * HTML allows advanced formatting like tables and images in the\n * tooltip. It is also recommended for rtl languages as it works around\n * rtl bugs in early Firefox.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highcharts|highstock} highcharts/tooltip/fullhtml/\n * Full HTML tooltip\n * @sample {highmaps} maps/tooltip/usehtml/\n * Pure HTML tooltip\n *\n * @type {boolean}\n * @default false\n * @since 2.2\n * @apioption tooltip.useHTML\n */\n /**\n * How many decimals to show in each series' y value. This is\n * overridable in each series' tooltip options object. The default is to\n * preserve all decimals.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {number|undefined}\n * @since 2.2\n * @apioption tooltip.valueDecimals\n */\n /**\n * A string to prepend to each series' y value. Overridable in each\n * series' tooltip options object.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.valuePrefix\n */\n /**\n * A string to append to each series' y value. Overridable in each\n * series' tooltip options object.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.valueSuffix\n */\n /**\n * The format for the date in the tooltip header if the X axis is a\n * datetime axis. The default is a best guess based on the smallest\n * distance between points in the chart.\n *\n * @sample {highcharts} highcharts/tooltip/xdateformat/\n * A different format\n *\n * @type {string}\n * @product highcharts highstock gantt\n * @apioption tooltip.xDateFormat\n */\n /**\n * How many decimals to show for the `point.change`\n * or the `point.cumulativeSum` value when the `series.compare`\n * or the `series.cumulative` option is set.\n * This is overridable in each series' tooltip options object.\n *\n * @type {number}\n * @default 2\n * @since 1.0.1\n * @product highstock\n * @apioption tooltip.changeDecimals\n */\n /**\n * Enable or disable the tooltip.\n *\n * @sample {highcharts} highcharts/tooltip/enabled/\n * Disabled\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Disable tooltip and show values on chart instead\n */\n enabled: true,\n /**\n * Enable or disable animation of the tooltip.\n *\n * @type {boolean}\n * @default true\n * @since 2.3.0\n */\n animation: svg,\n /**\n * The radius of the rounded border corners.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 5px by default\n * @sample {highcharts} highcharts/tooltip/borderradius-0/\n * Square borders\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n */\n borderRadius: 3,\n /**\n * For series on datetime axes, the date format in the tooltip's\n * header will by default be guessed based on the closest data points.\n * This member gives the default string representations used for\n * each unit. For an overview of the replacement codes, see\n * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n *\n * @see [xAxis.dateTimeLabelFormats](#xAxis.dateTimeLabelFormats)\n *\n * @type {Highcharts.Dictionary}\n * @product highcharts highstock gantt\n */\n dateTimeLabelFormats: {\n /** @internal */\n millisecond: '%A, %b %e, %H:%M:%S.%L',\n /** @internal */\n second: '%A, %b %e, %H:%M:%S',\n /** @internal */\n minute: '%A, %b %e, %H:%M',\n /** @internal */\n hour: '%A, %b %e, %H:%M',\n /** @internal */\n day: '%A, %b %e, %Y',\n /** @internal */\n week: 'Week from %A, %b %e, %Y',\n /** @internal */\n month: '%B %Y',\n /** @internal */\n year: '%Y'\n },\n /**\n * A string to append to the tooltip format.\n *\n * @sample {highcharts} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @since 2.2\n */\n footerFormat: '',\n /**\n * The name of a symbol to use for the border around the tooltip\n * header. Applies only when [tooltip.split](#tooltip.split) is\n * enabled.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols` the same way as for\n * [series.marker.symbol](plotOptions.line.marker.symbol).\n *\n * @see [tooltip.shape](#tooltip.shape)\n *\n * @sample {highstock} stock/tooltip/split-positioner/\n * Different shapes for header and split boxes\n *\n * @type {Highcharts.TooltipShapeValue}\n * @validvalue [\"callout\", \"square\"]\n * @since 7.0\n */\n headerShape: 'callout',\n /**\n * The number of milliseconds to wait until the tooltip is hidden when\n * mouse out from a point or chart.\n *\n * @since 3.0\n */\n hideDelay: 500,\n /**\n * Padding inside the tooltip, in pixels.\n *\n * @since 5.0.0\n */\n padding: 8,\n /**\n * The name of a symbol to use for the border around the tooltip. Can\n * be one of: `\"callout\"`, `\"circle\"` or `\"rect\"`. When\n * [tooltip.split](#tooltip.split)\n * option is enabled, shape is applied to all boxes except header, which\n * is controlled by\n * [tooltip.headerShape](#tooltip.headerShape).\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols` the same way as for\n * [series.marker.symbol](plotOptions.line.marker.symbol).\n *\n * @type {Highcharts.TooltipShapeValue}\n * @since 4.0\n */\n shape: 'callout',\n /**\n * When the tooltip is shared, the entire plot area will capture mouse\n * movement or touch events. Tooltip texts for series types with ordered\n * data (not pie, scatter, flags etc) will be shown in a single bubble.\n * This is recommended for single series charts and for tablet/mobile\n * optimized charts.\n *\n * See also [tooltip.split](#tooltip.split), that is better suited for\n * charts with many series, especially line-type series. The\n * `tooltip.split` option takes precedence over `tooltip.shared`.\n *\n * @sample {highcharts} highcharts/tooltip/shared-false/\n * False by default\n * @sample {highcharts} highcharts/tooltip/shared-true/\n * True\n * @sample {highcharts} highcharts/tooltip/shared-x-crosshair/\n * True with x axis crosshair\n * @sample {highcharts} highcharts/tooltip/shared-true-mixed-types/\n * True with mixed series types\n *\n * @since 2.1\n * @product highcharts highstock\n */\n shared: false,\n /**\n * Proximity snap for graphs or single points. It defaults to 10 for\n * mouse-powered devices and 25 for touch devices.\n *\n * Note that in most cases the whole plot area captures the mouse\n * movement, and in these cases `tooltip.snap` doesn't make sense. This\n * applies when [stickyTracking](#plotOptions.series.stickyTracking)\n * is `true` (default) and when the tooltip is [shared](#tooltip.shared)\n * or [split](#tooltip.split).\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 10 px by default\n * @sample {highcharts} highcharts/tooltip/snap-50/\n * 50 px on graph\n *\n * @type {number}\n * @default 10/25\n * @since 1.2.0\n * @product highcharts highstock\n */\n snap: isTouchDevice ? 25 : 10,\n /**\n * The HTML of the tooltip header line. Variables are enclosed by\n * curly brackets. Available variables are `point.key`, `series.name`,\n * `series.color` and other members from the `point` and `series`\n * objects. The `point.key` variable contains the category name, x\n * value or datetime string depending on the type of axis. For datetime\n * axes, the `point.key` date format can be set using\n * `tooltip.xDateFormat`.\n *\n * @sample {highcharts} highcharts/tooltip/footerformat/\n * An HTML table in the tooltip\n * @sample {highstock} highcharts/tooltip/footerformat/\n * An HTML table in the tooltip\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @type {string}\n * @apioption tooltip.headerFormat\n */\n headerFormat: '{point.key}
',\n /**\n * The HTML of the null point's line in the tooltip. Works analogously\n * to [pointFormat](#tooltip.pointFormat).\n *\n * @sample {highcharts} highcharts/plotoptions/series-nullformat\n * Format data label and tooltip for null point.\n *\n * @type {string}\n * @apioption tooltip.nullFormat\n */\n /**\n * The HTML of the point's line in the tooltip. Variables are enclosed\n * by curly brackets. Available variables are `point.x`, `point.y`,\n * `series.name` and `series.color` and other properties on the same\n * form. Furthermore, `point.y` can be extended by the\n * `tooltip.valuePrefix` and `tooltip.valueSuffix` variables. This can\n * also be overridden for each series, which makes it a good hook for\n * displaying units.\n *\n * In styled mode, the dot is colored by a class name rather\n * than the point color.\n *\n * @sample {highcharts} highcharts/tooltip/pointformat/\n * A different point format with value suffix\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.pointFormat\n */\n pointFormat: '\\u25CF {series.name}: {point.y}
',\n /**\n * The background color or gradient for the tooltip.\n *\n * In styled mode, the stroke width is set in the\n * `.highcharts-tooltip-box` class.\n *\n * @sample {highcharts} highcharts/tooltip/backgroundcolor-solid/\n * Yellowish background\n * @sample {highcharts} highcharts/tooltip/backgroundcolor-gradient/\n * Gradient\n * @sample {highcharts} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highstock} stock/tooltip/general/\n * Custom tooltip\n * @sample {highstock} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n * @sample {highmaps} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: color(\"#f7f7f7\" /* neutralColor3 */)\n // @todo: Disallow undefined as input for colors\n .setOpacity(0.85).get(),\n /**\n * The pixel width of the tooltip border.\n *\n * In styled mode, the stroke width is set in the\n * `.highcharts-tooltip-box` class.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 2px by default\n * @sample {highcharts} highcharts/tooltip/borderwidth/\n * No border (shadow only)\n * @sample {highcharts} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highstock} stock/tooltip/general/\n * Custom tooltip\n * @sample {highstock} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n * @sample {highmaps} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n */\n borderWidth: 1,\n /**\n * Whether to apply a drop shadow to the tooltip.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * True by default\n * @sample {highcharts} highcharts/tooltip/shadow/\n * False\n * @sample {highmaps} maps/tooltip/positioner/\n * Fixed tooltip position, border and shadow disabled\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n */\n shadow: true,\n /**\n * Prevents the tooltip from switching or closing when touched or\n * pointed.\n *\n * @sample highcharts/tooltip/stickoncontact/\n * Tooltip sticks on pointer contact\n *\n * @since 8.0.1\n */\n stickOnContact: false,\n /**\n * CSS styles for the tooltip. The tooltip can also be styled through\n * the CSS class `.highcharts-tooltip`.\n *\n * Note that the default `pointerEvents` style makes the tooltip ignore\n * mouse events, so in order to use clickable tooltips, this value must\n * be set to `auto`.\n *\n * @sample {highcharts} highcharts/tooltip/style/\n * Greater padding, bold text\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#333333\" /* neutralColor80 */,\n /** @internal */\n cursor: 'default',\n /** @internal */\n fontSize: '12px',\n /** @internal */\n whiteSpace: 'nowrap'\n },\n /**\n * Use HTML to render the contents of the tooltip instead of SVG. Using\n * HTML allows advanced formatting like tables and images in the\n * tooltip. It is also recommended for rtl languages as it works around\n * rtl bugs in early Firefox.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highcharts|highstock} highcharts/tooltip/fullhtml/\n * Full HTML tooltip\n * @sample {highmaps} maps/tooltip/usehtml/\n * Pure HTML tooltip\n *\n * @since 2.2\n */\n useHTML: false\n },\n /**\n * Highchart by default puts a credits label in the lower right corner\n * of the chart. This can be changed using these options.\n */\n credits: {\n /**\n * Credits for map source to be concatenated with conventional credit\n * text. By default this is a format string that collects copyright\n * information from the map if available.\n *\n * @see [mapTextFull](#credits.mapTextFull)\n * @see [text](#credits.text)\n *\n * @type {string}\n * @default \\u00a9 {geojson.copyrightShort}\n * @since 4.2.2\n * @product highmaps\n * @apioption credits.mapText\n */\n /**\n * Detailed credits for map source to be displayed on hover of credits\n * text. By default this is a format string that collects copyright\n * information from the map if available.\n *\n * @see [mapText](#credits.mapText)\n * @see [text](#credits.text)\n *\n * @type {string}\n * @default {geojson.copyright}\n * @since 4.2.2\n * @product highmaps\n * @apioption credits.mapTextFull\n */\n /**\n * Whether to show the credits text.\n *\n * @sample {highcharts} highcharts/credits/enabled-false/\n * Credits disabled\n * @sample {highstock} stock/credits/enabled/\n * Credits disabled\n * @sample {highmaps} maps/credits/enabled-false/\n * Credits disabled\n */\n enabled: true,\n /**\n * The URL for the credits label.\n *\n * @sample {highcharts} highcharts/credits/href/\n * Custom URL and text\n * @sample {highmaps} maps/credits/customized/\n * Custom URL and text\n */\n href: 'https://www.highcharts.com?credits',\n /**\n * Position configuration for the credits label.\n *\n * @sample {highcharts} highcharts/credits/position-left/\n * Left aligned\n * @sample {highcharts} highcharts/credits/position-left/\n * Left aligned\n * @sample {highmaps} maps/credits/customized/\n * Left aligned\n * @sample {highmaps} maps/credits/customized/\n * Left aligned\n *\n * @type {Highcharts.AlignObject}\n * @since 2.1\n */\n position: {\n /** @internal */\n align: 'right',\n /** @internal */\n x: -10,\n /** @internal */\n verticalAlign: 'bottom',\n /** @internal */\n y: -5\n },\n /**\n * CSS styles for the credits label.\n *\n * @see In styled mode, credits styles can be set with the\n * `.highcharts-credits` class.\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n cursor: 'pointer',\n /** @internal */\n color: \"#999999\" /* neutralColor40 */,\n /** @internal */\n fontSize: '9px'\n },\n /**\n * The text for the credits label.\n *\n * @productdesc {highmaps}\n * If a map is loaded as GeoJSON, the text defaults to\n * `Highcharts @ {map-credits}`. Otherwise, it defaults to\n * `Highcharts.com`.\n *\n * @sample {highcharts} highcharts/credits/href/\n * Custom URL and text\n * @sample {highmaps} maps/credits/customized/\n * Custom URL and text\n */\n text: 'Highcharts.com'\n }\n };\n /* eslint-disable spaced-comment */\n\n defaultOptions.chart.styledMode = false;\n\n '';\n var defaultTime = new Time(merge(defaultOptions.global,\n defaultOptions.time));\n /**\n * Get the updated default options. Until 3.0.7, merely exposing defaultOptions\n * for outside modules wasn't enough because the setOptions method created a new\n * object.\n *\n * @function Highcharts.getOptions\n *\n * @return {Highcharts.Options}\n * Default options.\n */\n function getOptions() {\n return defaultOptions;\n }\n /**\n * Merge the default options with custom options and return the new options\n * structure. Commonly used for defining reusable templates.\n *\n * @sample highcharts/global/useutc-false Setting a global option\n * @sample highcharts/members/setoptions Applying a global theme\n *\n * @function Highcharts.setOptions\n *\n * @param {Highcharts.Options} options\n * The new custom chart options.\n *\n * @return {Highcharts.Options}\n * Updated options.\n */\n function setOptions(options) {\n // Copy in the default options\n merge(true, defaultOptions, options);\n // Update the time object\n if (options.time || options.global) {\n if (H.time) {\n H.time.update(merge(defaultOptions.global, defaultOptions.time, options.global, options.time));\n }\n else {\n /**\n * Global `Time` object with default options. Since v6.0.5, time\n * settings can be applied individually for each chart. If no\n * individual settings apply, this `Time` object is shared by all\n * instances.\n *\n * @name Highcharts.time\n * @type {Highcharts.Time}\n */\n H.time = defaultTime;\n }\n }\n return defaultOptions;\n }\n /* *\n *\n * Default Export\n *\n * */\n var DefaultOptions = {\n defaultOptions: defaultOptions,\n defaultTime: defaultTime,\n getOptions: getOptions,\n setOptions: setOptions\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @typedef {\"plotBox\"|\"spacingBox\"} Highcharts.ButtonRelativeToValue\n */\n /**\n * Gets fired when a series is added to the chart after load time, using the\n * `addSeries` method. Returning `false` prevents the series from being added.\n *\n * @callback Highcharts.ChartAddSeriesCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.ChartAddSeriesEventObject} event\n * The event that occured.\n */\n /**\n * Contains common event information. Through the `options` property you can\n * access the series options that were passed to the `addSeries` method.\n *\n * @interface Highcharts.ChartAddSeriesEventObject\n */ /**\n * The series options that were passed to the `addSeries` method.\n * @name Highcharts.ChartAddSeriesEventObject#options\n * @type {Highcharts.SeriesOptionsType}\n */ /**\n * Prevents the default behaviour of the event.\n * @name Highcharts.ChartAddSeriesEventObject#preventDefault\n * @type {Function}\n */ /**\n * The event target.\n * @name Highcharts.ChartAddSeriesEventObject#target\n * @type {Highcharts.Chart}\n */ /**\n * The event type.\n * @name Highcharts.ChartAddSeriesEventObject#type\n * @type {\"addSeries\"}\n */\n /**\n * Gets fired when clicking on the plot background.\n *\n * @callback Highcharts.ChartClickCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.PointerEventObject} event\n * The event that occured.\n */\n /**\n * Contains an axes of the clicked spot.\n *\n * @interface Highcharts.ChartClickEventAxisObject\n */ /**\n * Axis at the clicked spot.\n * @name Highcharts.ChartClickEventAxisObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Axis value at the clicked spot.\n * @name Highcharts.ChartClickEventAxisObject#value\n * @type {number}\n */\n /**\n * Contains information about the clicked spot on the chart. Remember the unit\n * of a datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * @interface Highcharts.ChartClickEventObject\n * @extends Highcharts.PointerEventObject\n */ /**\n * Information about the x-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#xAxis\n * @type {Array}\n */ /**\n * Information about the y-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#yAxis\n * @type {Array}\n */ /**\n * Information about the z-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#zAxis\n * @type {Array|undefined}\n */\n /**\n * Gets fired when the chart is finished loading.\n *\n * @callback Highcharts.ChartLoadCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Fires when the chart is redrawn, either after a call to `chart.redraw()` or\n * after an axis, series or point is modified with the `redraw` option set to\n * `true`.\n *\n * @callback Highcharts.ChartRedrawCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Gets fired after initial load of the chart (directly after the `load` event),\n * and after each redraw (directly after the `redraw` event).\n *\n * @callback Highcharts.ChartRenderCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Gets fired when an area of the chart has been selected. The default action\n * for the selection event is to zoom the chart to the selected area. It can be\n * prevented by calling `event.preventDefault()` or return false.\n *\n * @callback Highcharts.ChartSelectionCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.ChartSelectionContextObject} event\n * Event informations\n *\n * @return {boolean|undefined}\n * Return false to prevent the default action, usually zoom.\n */\n /**\n * The primary axes are `xAxis[0]` and `yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * @interface Highcharts.ChartSelectionContextObject\n * @extends global.Event\n */ /**\n * Arrays containing the axes of each dimension and each axis' min and max\n * values.\n * @name Highcharts.ChartSelectionContextObject#xAxis\n * @type {Array}\n */ /**\n * Arrays containing the axes of each dimension and each axis' min and max\n * values.\n * @name Highcharts.ChartSelectionContextObject#yAxis\n * @type {Array}\n */\n /**\n * Axis context of the selection.\n *\n * @interface Highcharts.ChartSelectionAxisContextObject\n */ /**\n * The selected Axis.\n * @name Highcharts.ChartSelectionAxisContextObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * The maximum axis value, either automatic or set manually.\n * @name Highcharts.ChartSelectionAxisContextObject#max\n * @type {number}\n */ /**\n * The minimum axis value, either automatic or set manually.\n * @name Highcharts.ChartSelectionAxisContextObject#min\n * @type {number}\n */\n (''); // detach doclets above\n\n return DefaultOptions;\n });\n _registerModule(_modules, 'Core/Animation/Fx.js', [_modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (Color, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var win = H.win;\n var isNumber = U.isNumber,\n objectEach = U.objectEach;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /* *\n *\n * Class\n *\n * */\n /**\n * An animator object used internally. One instance applies to one property\n * (attribute or style prop) on one element. Animation is always initiated\n * through {@link SVGElement#animate}.\n *\n * @example\n * let rect = renderer.rect(0, 0, 10, 10).add();\n * rect.animate({ width: 100 });\n *\n * @private\n * @class\n * @name Highcharts.Fx\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} elem\n * The element to animate.\n *\n * @param {Partial} options\n * Animation options.\n *\n * @param {string} prop\n * The single attribute or CSS property to animate.\n */\n var Fx = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Fx(elem, options, prop) {\n this.pos = NaN;\n this.options = options;\n this.elem = elem;\n this.prop = prop;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the current step of a path definition on SVGElement.\n *\n * @function Highcharts.Fx#dSetter\n *\n */\n Fx.prototype.dSetter = function () {\n var paths = this.paths,\n start = paths && paths[0],\n end = paths && paths[1],\n now = this.now || 0;\n var path = [];\n // Land on the final path without adjustment points appended in the ends\n if (now === 1 || !start || !end) {\n path = this.toD || [];\n }\n else if (start.length === end.length && now < 1) {\n for (var i = 0; i < end.length; i++) {\n // Tween between the start segment and the end segment. Start\n // with a copy of the end segment and tween the appropriate\n // numerics\n var startSeg = start[i];\n var endSeg = end[i];\n var tweenSeg = [];\n for (var j = 0; j < endSeg.length; j++) {\n var startItem = startSeg[j];\n var endItem = endSeg[j];\n // Tween numbers\n if (isNumber(startItem) &&\n isNumber(endItem) &&\n // Arc boolean flags\n !(endSeg[0] === 'A' && (j === 4 || j === 5))) {\n tweenSeg[j] = startItem + now * (endItem - startItem);\n // Strings, take directly from the end segment\n }\n else {\n tweenSeg[j] = endItem;\n }\n }\n path.push(tweenSeg);\n }\n // If animation is finished or length not matching, land on right value\n }\n else {\n path = end;\n }\n this.elem.attr('d', path, void 0, true);\n };\n /**\n * Update the element with the current animation step.\n *\n * @function Highcharts.Fx#update\n *\n */\n Fx.prototype.update = function () {\n var elem = this.elem,\n prop = this.prop, // if destroyed, it is null\n now = this.now,\n step = this.options.step;\n // Animation setter defined from outside\n if (this[prop + 'Setter']) {\n this[prop + 'Setter']();\n // Other animations on SVGElement\n }\n else if (elem.attr) {\n if (elem.element) {\n elem.attr(prop, now, null, true);\n }\n // HTML styles, raw HTML content like container size\n }\n else {\n elem.style[prop] = now + this.unit;\n }\n if (step) {\n step.call(elem, now, this);\n }\n };\n /**\n * Run an animation.\n *\n * @function Highcharts.Fx#run\n *\n * @param {number} from\n * The current value, value to start from.\n *\n * @param {number} to\n * The end value, value to land on.\n *\n * @param {string} unit\n * The property unit, for example `px`.\n *\n */\n Fx.prototype.run = function (from, to, unit) {\n var self = this,\n options = self.options,\n timer = function (gotoEnd) {\n return timer.stopped ? false : self.step(gotoEnd);\n }, requestAnimationFrame = win.requestAnimationFrame ||\n function (step) {\n setTimeout(step, 13);\n }, step = function () {\n for (var i = 0; i < Fx.timers.length; i++) {\n if (!Fx.timers[i]()) {\n Fx.timers.splice(i--, 1);\n }\n }\n if (Fx.timers.length) {\n requestAnimationFrame(step);\n }\n };\n if (from === to && !this.elem['forceAnimate:' + this.prop]) {\n delete options.curAnim[this.prop];\n if (options.complete &&\n Object.keys(options.curAnim).length === 0) {\n options.complete.call(this.elem);\n }\n }\n else { // #7166\n this.startTime = +new Date();\n this.start = from;\n this.end = to;\n this.unit = unit;\n this.now = this.start;\n this.pos = 0;\n timer.elem = this.elem;\n timer.prop = this.prop;\n if (timer() && Fx.timers.push(timer) === 1) {\n requestAnimationFrame(step);\n }\n }\n };\n /**\n * Run a single step in the animation.\n *\n * @function Highcharts.Fx#step\n *\n * @param {boolean} [gotoEnd]\n * Whether to go to the endpoint of the animation after abort.\n *\n * @return {boolean}\n * Returns `true` if animation continues.\n */\n Fx.prototype.step = function (gotoEnd) {\n var t = +new Date(),\n options = this.options,\n elem = this.elem,\n complete = options.complete,\n duration = options.duration,\n curAnim = options.curAnim;\n var ret,\n done;\n if (elem.attr && !elem.element) { // #2616, element is destroyed\n ret = false;\n }\n else if (gotoEnd || t >= duration + this.startTime) {\n this.now = this.end;\n this.pos = 1;\n this.update();\n curAnim[this.prop] = true;\n done = true;\n objectEach(curAnim, function (val) {\n if (val !== true) {\n done = false;\n }\n });\n if (done && complete) {\n complete.call(elem);\n }\n ret = false;\n }\n else {\n this.pos = options.easing((t - this.startTime) / duration);\n this.now = this.start + ((this.end -\n this.start) * this.pos);\n this.update();\n ret = true;\n }\n return ret;\n };\n /**\n * Prepare start and end values so that the path can be animated one to one.\n *\n * @function Highcharts.Fx#initPath\n *\n * @param {Highcharts.SVGElement} elem\n * The SVGElement item.\n *\n * @param {Highcharts.SVGPathArray|undefined} fromD\n * Starting path definition.\n *\n * @param {Highcharts.SVGPathArray} toD\n * Ending path definition.\n *\n * @return {Array}\n * An array containing start and end paths in array form so that\n * they can be animated in parallel.\n */\n Fx.prototype.initPath = function (elem, fromD, toD) {\n var startX = elem.startX,\n endX = elem.endX,\n end = toD.slice(), // copy\n isArea = elem.isArea,\n positionFactor = isArea ? 2 : 1;\n var shift,\n fullLength,\n i,\n reverse,\n start = fromD && fromD.slice(); // copy\n if (!start) {\n return [end,\n end];\n }\n /**\n * If shifting points, prepend a dummy point to the end path.\n * @private\n */\n function prepend(arr, other) {\n while (arr.length < fullLength) {\n // Move to, line to or curve to?\n var moveSegment = arr[0],\n otherSegment = other[fullLength - arr.length];\n if (otherSegment && moveSegment[0] === 'M') {\n if (otherSegment[0] === 'C') {\n arr[0] = [\n 'C',\n moveSegment[1],\n moveSegment[2],\n moveSegment[1],\n moveSegment[2],\n moveSegment[1],\n moveSegment[2]\n ];\n }\n else {\n arr[0] = ['L', moveSegment[1], moveSegment[2]];\n }\n }\n // Prepend a copy of the first point\n arr.unshift(moveSegment);\n // For areas, the bottom path goes back again to the left, so we\n // need to append a copy of the last point.\n if (isArea) {\n var z = arr.pop();\n arr.push(arr[arr.length - 1], z); // append point and the Z\n }\n }\n }\n /**\n * Copy and append last point until the length matches the end length.\n * @private\n */\n function append(arr, other) {\n while (arr.length < fullLength) {\n // Pull out the slice that is going to be appended or inserted.\n // In a line graph, the positionFactor is 1, and the last point\n // is sliced out. In an area graph, the positionFactor is 2,\n // causing the middle two points to be sliced out, since an area\n // path starts at left, follows the upper path then turns and\n // follows the bottom back.\n var segmentToAdd = arr[Math.floor(arr.length / positionFactor) - 1].slice();\n // Disable the first control point of curve segments\n if (segmentToAdd[0] === 'C') {\n segmentToAdd[1] = segmentToAdd[5];\n segmentToAdd[2] = segmentToAdd[6];\n }\n if (!isArea) {\n arr.push(segmentToAdd);\n }\n else {\n var lowerSegmentToAdd = arr[Math.floor(arr.length / positionFactor)].slice();\n arr.splice(arr.length / 2, 0, segmentToAdd, lowerSegmentToAdd);\n }\n }\n }\n // For sideways animation, find out how much we need to shift to get the\n // start path Xs to match the end path Xs.\n if (startX && endX && endX.length) {\n for (i = 0; i < startX.length; i++) {\n // Moving left, new points coming in on right\n if (startX[i] === endX[0]) {\n shift = i;\n break;\n // Moving right\n }\n else if (startX[0] ===\n endX[endX.length - startX.length + i]) {\n shift = i;\n reverse = true;\n break;\n // Fixed from the right side, \"scaling\" left\n }\n else if (startX[startX.length - 1] ===\n endX[endX.length - startX.length + i]) {\n shift = startX.length - i;\n break;\n }\n }\n if (typeof shift === 'undefined') {\n start = [];\n }\n }\n if (start.length && isNumber(shift)) {\n // The common target length for the start and end array, where both\n // arrays are padded in opposite ends\n fullLength = end.length + shift * positionFactor;\n if (!reverse) {\n prepend(end, start);\n append(start, end);\n }\n else {\n prepend(start, end);\n append(end, start);\n }\n }\n return [start, end];\n };\n /**\n * Handle animation of the color attributes directly.\n *\n * @function Highcharts.Fx#fillSetter\n *\n */\n Fx.prototype.fillSetter = function () {\n Fx.prototype.strokeSetter.apply(this, arguments);\n };\n /**\n * Handle animation of the color attributes directly.\n *\n * @function Highcharts.Fx#strokeSetter\n *\n */\n Fx.prototype.strokeSetter = function () {\n this.elem.attr(this.prop, color(this.start).tweenTo(color(this.end), this.pos), void 0, true);\n };\n /* *\n *\n * Static Properties\n *\n * */\n Fx.timers = [];\n return Fx;\n }());\n /* *\n *\n * Default Export\n *\n * */\n\n return Fx;\n });\n _registerModule(_modules, 'Core/Animation/AnimationUtilities.js', [_modules['Core/Animation/Fx.js'], _modules['Core/Utilities.js']], function (Fx, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defined = U.defined,\n getStyle = U.getStyle,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the global animation to either a given value, or fall back to the given\n * chart's animation option.\n *\n * @function Highcharts.setAnimation\n *\n * @param {boolean|Partial|undefined} animation\n * The animation object.\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @todo\n * This function always relates to a chart, and sets a property on the renderer,\n * so it should be moved to the SVGRenderer.\n */\n function setAnimation(animation, chart) {\n chart.renderer.globalAnimation = pick(animation, chart.options.chart.animation, true);\n }\n /**\n * Get the animation in object form, where a disabled animation is always\n * returned as `{ duration: 0 }`.\n *\n * @function Highcharts.animObject\n *\n * @param {boolean|Highcharts.AnimationOptionsObject} [animation=0]\n * An animation setting. Can be an object with duration, complete and\n * easing properties, or a boolean to enable or disable.\n *\n * @return {Highcharts.AnimationOptionsObject}\n * An object with at least a duration property.\n */\n function animObject(animation) {\n return isObject(animation) ?\n merge({ duration: 500, defer: 0 }, animation) :\n { duration: animation ? 500 : 0, defer: 0 };\n }\n /**\n * Get the defer as a number value from series animation options.\n *\n * @function Highcharts.getDeferredAnimation\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {boolean|Highcharts.AnimationOptionsObject} animation\n * An animation setting. Can be an object with duration, complete and\n * easing properties, or a boolean to enable or disable.\n *\n * @param {Highcharts.Series} [series]\n * Series to defer animation.\n *\n * @return {number}\n * The numeric value.\n */\n function getDeferredAnimation(chart, animation, series) {\n var labelAnimation = animObject(animation),\n s = series ? [series] : chart.series;\n var defer = 0,\n duration = 0;\n s.forEach(function (series) {\n var seriesAnim = animObject(series.options.animation);\n defer = animation && defined(animation.defer) ?\n labelAnimation.defer :\n Math.max(defer, seriesAnim.duration + seriesAnim.defer);\n duration = Math.min(labelAnimation.duration, seriesAnim.duration);\n });\n // Disable defer for exporting\n if (chart.renderer.forExport) {\n defer = 0;\n }\n var anim = {\n defer: Math.max(0,\n defer - duration),\n duration: Math.min(defer,\n duration)\n };\n return anim;\n }\n /**\n * The global animate method, which uses Fx to create individual animators.\n *\n * @function Highcharts.animate\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} el\n * The element to animate.\n *\n * @param {Highcharts.CSSObject|Highcharts.SVGAttributes} params\n * An object containing key-value pairs of the properties to animate.\n * Supports numeric as pixel-based CSS properties for HTML objects and\n * attributes for SVGElements.\n *\n * @param {Partial} [opt]\n * Animation options.\n *\n * @return {void}\n */\n function animate(el, params, opt) {\n var start,\n unit = '',\n end,\n fx,\n args;\n if (!isObject(opt)) { // Number or undefined/null\n args = arguments;\n opt = {\n duration: args[2],\n easing: args[3],\n complete: args[4]\n };\n }\n if (!isNumber(opt.duration)) {\n opt.duration = 400;\n }\n opt.easing = typeof opt.easing === 'function' ?\n opt.easing :\n (Math[opt.easing] || Math.easeInOutSine);\n opt.curAnim = merge(params);\n objectEach(params, function (val, prop) {\n // Stop current running animation of this property\n stop(el, prop);\n fx = new Fx(el, opt, prop);\n end = void 0;\n if (prop === 'd' && isArray(params.d)) {\n fx.paths = fx.initPath(el, el.pathArray, params.d);\n fx.toD = params.d;\n start = 0;\n end = 1;\n }\n else if (el.attr) {\n start = el.attr(prop);\n }\n else {\n start = parseFloat(getStyle(el, prop)) || 0;\n if (prop !== 'opacity') {\n unit = 'px';\n }\n }\n if (!end) {\n end = val;\n }\n if (typeof end === 'string' && end.match('px')) {\n end = end.replace(/px/g, ''); // #4351\n }\n fx.run(start, end, unit);\n });\n }\n /**\n * Stop running animation.\n *\n * @function Highcharts.stop\n *\n * @param {Highcharts.SVGElement} el\n * The SVGElement to stop animation on.\n *\n * @param {string} [prop]\n * The property to stop animating. If given, the stop method will stop a\n * single property from animating, while others continue.\n *\n * @return {void}\n *\n * @todo\n * A possible extension to this would be to stop a single property, when\n * we want to continue animating others. Then assign the prop to the timer\n * in the Fx.run method, and check for the prop here. This would be an\n * improvement in all cases where we stop the animation from .attr. Instead of\n * stopping everything, we can just stop the actual attributes we're setting.\n */\n function stop(el, prop) {\n var i = Fx.timers.length;\n // Remove timers related to this element (#4519)\n while (i--) {\n if (Fx.timers[i].elem === el && (!prop || prop === Fx.timers[i].prop)) {\n Fx.timers[i].stopped = true; // #4667\n }\n }\n }\n var animationExports = {\n animate: animate,\n animObject: animObject,\n getDeferredAnimation: getDeferredAnimation,\n setAnimation: setAnimation,\n stop: stop\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return animationExports;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/AST.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2020 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var SVG_NS = H.SVG_NS,\n win = H.win;\n var attr = U.attr,\n createElement = U.createElement,\n error = U.error,\n isFunction = U.isFunction,\n isString = U.isString,\n objectEach = U.objectEach,\n splat = U.splat;\n var trustedTypes = win.trustedTypes;\n /* *\n *\n * Constants\n *\n * */\n // Create the trusted type policy. This should not be exposed.\n var trustedTypesPolicy = (trustedTypes &&\n isFunction(trustedTypes.createPolicy) &&\n trustedTypes.createPolicy('highcharts', {\n createHTML: function (s) { return s; }\n }));\n var emptyHTML = trustedTypesPolicy ?\n trustedTypesPolicy.createHTML('') :\n '';\n // In IE8, DOMParser is undefined. IE9 and PhantomJS are only able to parse XML.\n var hasValidDOMParser = (function () {\n try {\n return Boolean(new DOMParser().parseFromString(emptyHTML, 'text/html'));\n }\n catch (e) {\n return false;\n }\n }());\n /* *\n *\n * Class\n *\n * */\n /**\n * The AST class represents an abstract syntax tree of HTML or SVG content. It\n * can take HTML as an argument, parse it, optionally transform it to SVG, then\n * perform sanitation before inserting it into the DOM.\n *\n * @class\n * @name Highcharts.AST\n *\n * @param {string|Array} source\n * Either an HTML string or an ASTNode list to populate the tree.\n */\n var AST = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n // Construct an AST from HTML markup, or wrap an array of existing AST nodes\n function AST(source) {\n this.nodes = typeof source === 'string' ?\n this.parseMarkup(source) : source;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Filter an object of SVG or HTML attributes against the allow list.\n *\n * @static\n *\n * @function Highcharts.AST#filterUserAttributes\n *\n * @param {Highcharts.SVGAttributes} attributes The attributes to filter\n *\n * @return {Highcharts.SVGAttributes}\n * The filtered attributes\n */\n AST.filterUserAttributes = function (attributes) {\n objectEach(attributes, function (val, key) {\n var valid = true;\n if (AST.allowedAttributes.indexOf(key) === -1) {\n valid = false;\n }\n if (['background', 'dynsrc', 'href', 'lowsrc', 'src']\n .indexOf(key) !== -1) {\n valid = isString(val) && AST.allowedReferences.some(function (ref) { return val.indexOf(ref) === 0; });\n }\n if (!valid) {\n error(\"Highcharts warning: Invalid attribute '\" + key + \"' in config\");\n delete attributes[key];\n }\n });\n return attributes;\n };\n /**\n * Utility function to set html content for an element by passing in a\n * markup string. The markup is safely parsed by the AST class to avoid\n * XSS vulnerabilities. This function should be used instead of setting\n * `innerHTML` in all cases where the content is not fully trusted.\n *\n * @static\n * @function Highcharts.AST#setElementHTML\n *\n * @param {SVGDOMElement|HTMLDOMElement} el\n * Node to set content of.\n *\n * @param {string} html\n * Markup string\n */\n AST.setElementHTML = function (el, html) {\n el.innerHTML = AST.emptyHTML; // Clear previous\n if (html) {\n var ast = new AST(html);\n ast.addToDOM(el);\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Add the tree defined as a hierarchical JS structure to the DOM\n *\n * @function Highcharts.AST#addToDOM\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} parent\n * The node where it should be added\n *\n * @return {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement}\n * The inserted node.\n */\n AST.prototype.addToDOM = function (parent) {\n /**\n * @private\n * @param {Highcharts.ASTNode} subtree\n * HTML/SVG definition\n * @param {Element} [subParent]\n * parent node\n * @return {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement}\n * The inserted node.\n */\n function recurse(subtree, subParent) {\n var ret;\n splat(subtree).forEach(function (item) {\n var tagName = item.tagName;\n var textNode = item.textContent ?\n H.doc.createTextNode(item.textContent) :\n void 0;\n var node;\n if (tagName) {\n if (tagName === '#text') {\n node = textNode;\n }\n else if (AST.allowedTags.indexOf(tagName) !== -1) {\n var NS = tagName === 'svg' ?\n SVG_NS :\n (subParent.namespaceURI || SVG_NS);\n var element = H.doc.createElementNS(NS,\n tagName);\n var attributes_1 = item.attributes || {};\n // Apply attributes from root of AST node, legacy from\n // from before TextBuilder\n objectEach(item, function (val, key) {\n if (key !== 'tagName' &&\n key !== 'attributes' &&\n key !== 'children' &&\n key !== 'textContent') {\n attributes_1[key] = val;\n }\n });\n attr(element, AST.filterUserAttributes(attributes_1));\n // Add text content\n if (textNode) {\n element.appendChild(textNode);\n }\n // Recurse\n recurse(item.children || [], element);\n node = element;\n }\n else {\n error('Highcharts warning: Invalid tagName ' +\n tagName + ' in config');\n }\n }\n // Add to the tree\n if (node) {\n subParent.appendChild(node);\n }\n ret = node;\n });\n // Return last node added (on top level it's the only one)\n return ret;\n }\n return recurse(this.nodes, parent);\n };\n /**\n * Parse HTML/SVG markup into AST Node objects. Used internally from the\n * constructor.\n *\n * @private\n *\n * @function Highcharts.AST#getNodesFromMarkup\n *\n * @param {string} markup The markup string.\n *\n * @return {Array} The parsed nodes.\n */\n AST.prototype.parseMarkup = function (markup) {\n var nodes = [];\n markup = markup.trim();\n var doc;\n if (hasValidDOMParser) {\n doc = new DOMParser().parseFromString(trustedTypesPolicy ?\n trustedTypesPolicy.createHTML(markup) :\n markup, 'text/html');\n }\n else {\n var body = createElement('div');\n body.innerHTML = markup;\n doc = { body: body };\n }\n var appendChildNodes = function (node,\n addTo) {\n var tagName = node.nodeName.toLowerCase();\n // Add allowed tags\n var astNode = {\n tagName: tagName\n };\n if (tagName === '#text') {\n astNode.textContent = node.textContent || '';\n }\n var parsedAttributes = node.attributes;\n // Add attributes\n if (parsedAttributes) {\n var attributes_2 = {};\n [].forEach.call(parsedAttributes, function (attrib) {\n attributes_2[attrib.name] = attrib.value;\n });\n astNode.attributes = attributes_2;\n }\n // Handle children\n if (node.childNodes.length) {\n var children_1 = [];\n [].forEach.call(node.childNodes, function (childNode) {\n appendChildNodes(childNode, children_1);\n });\n if (children_1.length) {\n astNode.children = children_1;\n }\n }\n addTo.push(astNode);\n };\n [].forEach.call(doc.body.childNodes, function (childNode) { return appendChildNodes(childNode, nodes); });\n return nodes;\n };\n /* *\n *\n * Static Properties\n *\n * */\n /**\n * The list of allowed SVG or HTML attributes, used for sanitizing\n * potentially harmful content from the chart configuration before adding to\n * the DOM.\n *\n * @example\n * // Allow a custom, trusted attribute\n * Highcharts.AST.allowedAttributes.push('data-value');\n *\n * @name Highcharts.AST.allowedAttributes\n * @static\n */\n AST.allowedAttributes = [\n 'aria-controls',\n 'aria-describedby',\n 'aria-expanded',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-label',\n 'aria-labelledby',\n 'aria-live',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-roledescription',\n 'aria-selected',\n 'class',\n 'clip-path',\n 'color',\n 'colspan',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'disabled',\n 'fill',\n 'height',\n 'href',\n 'id',\n 'in',\n 'markerHeight',\n 'markerWidth',\n 'offset',\n 'opacity',\n 'orient',\n 'padding',\n 'paddingLeft',\n 'paddingRight',\n 'patternUnits',\n 'r',\n 'refX',\n 'refY',\n 'role',\n 'scope',\n 'slope',\n 'src',\n 'startOffset',\n 'stdDeviation',\n 'stroke',\n 'stroke-linecap',\n 'stroke-width',\n 'style',\n 'tableValues',\n 'result',\n 'rowspan',\n 'summary',\n 'target',\n 'tabindex',\n 'text-align',\n 'textAnchor',\n 'textLength',\n 'title',\n 'type',\n 'valign',\n 'width',\n 'x',\n 'x1',\n 'x2',\n 'y',\n 'y1',\n 'y2',\n 'zIndex'\n ];\n /**\n * The list of allowed references for referring attributes like `href` and\n * `src`. Attribute values will only be allowed if they start with one of\n * these strings.\n *\n * @example\n * // Allow tel:\n * Highcharts.AST.allowedReferences.push('tel:');\n *\n * @name Highcharts.AST.allowedReferences\n * @static\n */\n AST.allowedReferences = [\n 'https://',\n 'http://',\n 'mailto:',\n '/',\n '../',\n './',\n '#'\n ];\n /**\n * The list of allowed SVG or HTML tags, used for sanitizing potentially\n * harmful content from the chart configuration before adding to the DOM.\n *\n * @example\n * // Allow a custom, trusted tag\n * Highcharts.AST.allowedTags.push('blink'); // ;)\n *\n * @name Highcharts.AST.allowedTags\n * @static\n */\n AST.allowedTags = [\n 'a',\n 'abbr',\n 'b',\n 'br',\n 'button',\n 'caption',\n 'circle',\n 'clipPath',\n 'code',\n 'dd',\n 'defs',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'feComponentTransfer',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feOffset',\n 'feMerge',\n 'feMergeNode',\n 'filter',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'hr',\n 'i',\n 'img',\n 'li',\n 'linearGradient',\n 'marker',\n 'ol',\n 'p',\n 'path',\n 'pattern',\n 'pre',\n 'rect',\n 'small',\n 'span',\n 'stop',\n 'strong',\n 'style',\n 'sub',\n 'sup',\n 'svg',\n 'table',\n 'text',\n 'thead',\n 'tbody',\n 'tspan',\n 'td',\n 'th',\n 'tr',\n 'u',\n 'ul',\n '#text'\n ];\n AST.emptyHTML = emptyHTML;\n return AST;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Serialized form of an SVG/HTML definition, including children.\n *\n * @interface Highcharts.ASTNode\n */ /**\n * @name Highcharts.ASTNode#attributes\n * @type {Highcharts.SVGAttributes|undefined}\n */ /**\n * @name Highcharts.ASTNode#children\n * @type {Array|undefined}\n */ /**\n * @name Highcharts.ASTNode#tagName\n * @type {string|undefined}\n */ /**\n * @name Highcharts.ASTNode#textContent\n * @type {string|undefined}\n */\n (''); // keeps doclets above in file\n\n return AST;\n });\n _registerModule(_modules, 'Core/FormatUtilities.js', [_modules['Core/DefaultOptions.js'], _modules['Core/Utilities.js']], function (D, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions,\n defaultTime = D.defaultTime;\n var getNestedProperty = U.getNestedProperty,\n isNumber = U.isNumber,\n pick = U.pick,\n pInt = U.pInt;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Formats a JavaScript date timestamp (milliseconds since Jan 1st 1970) into a\n * human readable date string. The format is a subset of the formats for PHP's\n * [strftime](https://www.php.net/manual/en/function.strftime.php) function.\n * Additional formats can be given in the {@link Highcharts.dateFormats} hook.\n *\n * Since v6.0.5, all internal dates are formatted through the\n * {@link Highcharts.Chart#time} instance to respect chart-level time settings.\n * The `Highcharts.dateFormat` function only reflects global time settings set\n * with `setOptions`.\n *\n * Supported format keys:\n * - `%a`: Short weekday, like 'Mon'\n * - `%A`: Long weekday, like 'Monday'\n * - `%d`: Two digit day of the month, 01 to 31\n * - `%e`: Day of the month, 1 through 31\n * - `%w`: Day of the week, 0 through 6\n * - `%b`: Short month, like 'Jan'\n * - `%B`: Long month, like 'January'\n * - `%m`: Two digit month number, 01 through 12\n * - `%y`: Two digits year, like 09 for 2009\n * - `%Y`: Four digits year, like 2009\n * - `%H`: Two digits hours in 24h format, 00 through 23\n * - `%k`: Hours in 24h format, 0 through 23\n * - `%I`: Two digits hours in 12h format, 00 through 11\n * - `%l`: Hours in 12h format, 1 through 12\n * - `%M`: Two digits minutes, 00 through 59\n * - `%p`: Upper case AM or PM\n * - `%P`: Lower case AM or PM\n * - `%S`: Two digits seconds, 00 through 59\n * - `%L`: Milliseconds (naming from Ruby)\n *\n * @function Highcharts.dateFormat\n *\n * @param {string} format\n * The desired format where various time representations are prefixed\n * with `%`.\n *\n * @param {number} timestamp\n * The JavaScript timestamp.\n *\n * @param {boolean} [capitalize=false]\n * Upper case first letter in the return.\n *\n * @return {string}\n * The formatted date.\n */\n function dateFormat(format, timestamp, capitalize) {\n return defaultTime.dateFormat(format, timestamp, capitalize);\n }\n /**\n * Format a string according to a subset of the rules of Python's String.format\n * method.\n *\n * @example\n * let s = Highcharts.format(\n * 'The {color} fox was {len:.2f} feet long',\n * { color: 'red', len: Math.PI }\n * );\n * // => The red fox was 3.14 feet long\n *\n * @function Highcharts.format\n *\n * @param {string} str\n * The string to format.\n *\n * @param {Record} ctx\n * The context, a collection of key-value pairs where each key is\n * replaced by its value.\n *\n * @param {Highcharts.Chart} [chart]\n * A `Chart` instance used to get numberFormatter and time.\n *\n * @return {string}\n * The formatted string.\n */\n function format(str, ctx, chart) {\n var splitter = '{',\n isInside = false,\n segment,\n valueAndFormat,\n val,\n index;\n var floatRegex = /f$/;\n var decRegex = /\\.([0-9])/;\n var lang = defaultOptions.lang;\n var time = chart && chart.time || defaultTime;\n var numberFormatter = chart && chart.numberFormatter || numberFormat;\n var ret = [];\n while (str) {\n index = str.indexOf(splitter);\n if (index === -1) {\n break;\n }\n segment = str.slice(0, index);\n if (isInside) { // we're on the closing bracket looking back\n valueAndFormat = segment.split(':');\n val = getNestedProperty(valueAndFormat.shift() || '', ctx);\n // Format the replacement\n if (valueAndFormat.length && typeof val === 'number') {\n segment = valueAndFormat.join(':');\n if (floatRegex.test(segment)) { // float\n var decimals = parseInt((segment.match(decRegex) || ['', '-1'])[1], 10);\n if (val !== null) {\n val = numberFormatter(val, decimals, lang.decimalPoint, segment.indexOf(',') > -1 ? lang.thousandsSep : '');\n }\n }\n else {\n val = time.dateFormat(segment, val);\n }\n }\n // Push the result and advance the cursor\n ret.push(val);\n }\n else {\n ret.push(segment);\n }\n str = str.slice(index + 1); // the rest\n isInside = !isInside; // toggle\n splitter = isInside ? '}' : '{'; // now look for next matching bracket\n }\n ret.push(str);\n return ret.join('');\n }\n /**\n * Format a number and return a string based on input settings.\n *\n * @sample highcharts/members/highcharts-numberformat/\n * Custom number format\n *\n * @function Highcharts.numberFormat\n *\n * @param {number} number\n * The input number to format.\n *\n * @param {number} decimals\n * The amount of decimals. A value of -1 preserves the amount in the\n * input number.\n *\n * @param {string} [decimalPoint]\n * The decimal point, defaults to the one given in the lang options, or\n * a dot.\n *\n * @param {string} [thousandsSep]\n * The thousands separator, defaults to the one given in the lang\n * options, or a space character.\n *\n * @return {string}\n * The formatted number.\n */\n function numberFormat(number, decimals, decimalPoint, thousandsSep) {\n number = +number || 0;\n decimals = +decimals;\n var ret,\n fractionDigits;\n var lang = defaultOptions.lang, origDec = (number.toString().split('.')[1] || '').split('e')[0].length, exponent = number.toString().split('e'), firstDecimals = decimals;\n if (decimals === -1) {\n // Preserve decimals. Not huge numbers (#3793).\n decimals = Math.min(origDec, 20);\n }\n else if (!isNumber(decimals)) {\n decimals = 2;\n }\n else if (decimals && exponent[1] && exponent[1] < 0) {\n // Expose decimals from exponential notation (#7042)\n fractionDigits = decimals + +exponent[1];\n if (fractionDigits >= 0) {\n // remove too small part of the number while keeping the notation\n exponent[0] = (+exponent[0]).toExponential(fractionDigits)\n .split('e')[0];\n decimals = fractionDigits;\n }\n else {\n // fractionDigits < 0\n exponent[0] = exponent[0].split('.')[0] || 0;\n if (decimals < 20) {\n // use number instead of exponential notation (#7405)\n number = (exponent[0] * Math.pow(10, exponent[1]))\n .toFixed(decimals);\n }\n else {\n // or zero\n number = 0;\n }\n exponent[1] = 0;\n }\n }\n // Add another decimal to avoid rounding errors of float numbers. (#4573)\n // Then use toFixed to handle rounding.\n var roundedNumber = (Math.abs(exponent[1] ? exponent[0] : number) +\n Math.pow(10, -Math.max(decimals,\n origDec) - 1)).toFixed(decimals);\n // A string containing the positive integer component of the number\n var strinteger = String(pInt(roundedNumber));\n // Leftover after grouping into thousands. Can be 0, 1 or 2.\n var thousands = strinteger.length > 3 ? strinteger.length % 3 : 0;\n // Language\n decimalPoint = pick(decimalPoint, lang.decimalPoint);\n thousandsSep = pick(thousandsSep, lang.thousandsSep);\n // Start building the return\n ret = number < 0 ? '-' : '';\n // Add the leftover after grouping into thousands. For example, in the\n // number 42 000 000, this line adds 42.\n ret += thousands ? strinteger.substr(0, thousands) + thousandsSep : '';\n if (+exponent[1] < 0 && !firstDecimals) {\n ret = '0';\n }\n else {\n // Add the remaining thousands groups, joined by the thousands separator\n ret += strinteger\n .substr(thousands)\n .replace(/(\\d{3})(?=\\d)/g, '$1' + thousandsSep);\n }\n // Add the decimal point and the decimal component\n if (decimals) {\n // Get the decimal component\n ret += decimalPoint + roundedNumber.slice(-decimals);\n }\n if (exponent[1] && +ret !== 0) {\n ret += 'e' + exponent[1];\n }\n return ret;\n }\n /* *\n *\n * Default Export\n *\n * */\n var FormatUtilities = {\n dateFormat: dateFormat,\n format: format,\n numberFormat: numberFormat\n };\n\n return FormatUtilities;\n });\n _registerModule(_modules, 'Core/Renderer/RendererUtilities.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Imports\n *\n * */\n var clamp = U.clamp,\n pick = U.pick,\n stableSort = U.stableSort;\n /* *\n *\n * Namespace\n *\n * */\n var RendererUtilities;\n (function (RendererUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * General distribution algorithm for distributing labels of differing size\n * along a confined length in two dimensions. The algorithm takes an array\n * of objects containing a size, a target and a rank. It will place the\n * labels as close as possible to their targets, skipping the lowest ranked\n * labels if necessary.\n * @private\n */\n function distribute(boxes, len, maxDistance) {\n // Original array will be altered with added .pos\n var origBoxes = boxes,\n reducedLen = origBoxes.reducedLen || len,\n sortByRank = function (a,\n b) {\n return (b.rank || 0) - (a.rank || 0);\n }, sortByTarget = function (a, b) {\n return a.target - b.target;\n };\n var i,\n overlapping = true,\n restBoxes = [], // The outranked overshoot\n box,\n target,\n total = 0;\n // If the total size exceeds the len, remove those boxes with the lowest\n // rank\n i = boxes.length;\n while (i--) {\n total += boxes[i].size;\n }\n // Sort by rank, then slice away overshoot\n if (total > reducedLen) {\n stableSort(boxes, sortByRank);\n i = 0;\n total = 0;\n while (total <= reducedLen) {\n total += boxes[i].size;\n i++;\n }\n restBoxes = boxes.splice(i - 1, boxes.length);\n }\n // Order by target\n stableSort(boxes, sortByTarget);\n // So far we have been mutating the original array. Now\n // create a copy with target arrays\n boxes = boxes.map(function (box) { return ({\n size: box.size,\n targets: [box.target],\n align: pick(box.align, 0.5)\n }); });\n while (overlapping) {\n // Initial positions: target centered in box\n i = boxes.length;\n while (i--) {\n box = boxes[i];\n // Composite box, average of targets\n target = (Math.min.apply(0, box.targets) +\n Math.max.apply(0, box.targets)) / 2;\n box.pos = clamp(target - box.size * box.align, 0, len - box.size);\n }\n // Detect overlap and join boxes\n i = boxes.length;\n overlapping = false;\n while (i--) {\n // Overlap\n if (i > 0 &&\n boxes[i - 1].pos + boxes[i - 1].size >\n boxes[i].pos) {\n // Add this size to the previous box\n boxes[i - 1].size += boxes[i].size;\n boxes[i - 1].targets = boxes[i - 1]\n .targets\n .concat(boxes[i].targets);\n boxes[i - 1].align = 0.5;\n // Overlapping right, push left\n if (boxes[i - 1].pos + boxes[i - 1].size > len) {\n boxes[i - 1].pos = len - boxes[i - 1].size;\n }\n boxes.splice(i, 1); // Remove this item\n overlapping = true;\n }\n }\n }\n // Add the rest (hidden boxes)\n origBoxes.push.apply(origBoxes, restBoxes);\n // Now the composite boxes are placed, we need to put the original boxes\n // within them\n i = 0;\n boxes.some(function (box) {\n var posInCompositeBox = 0;\n // Exceeded maxDistance => abort\n return (box.targets || []).some(function () {\n origBoxes[i].pos = box.pos + posInCompositeBox;\n // If the distance between the position and the target exceeds\n // maxDistance, abort the loop and decrease the length in\n // increments of 10% to recursively reduce the number of\n // visible boxes by rank. Once all boxes are within the\n // maxDistance, we're good.\n if (typeof maxDistance !== 'undefined' &&\n Math.abs(origBoxes[i].pos - origBoxes[i].target) > maxDistance) {\n // Reset the positions that are already set\n origBoxes\n .slice(0, i + 1)\n .forEach(function (box) { return delete box.pos; });\n // Try with a smaller length\n origBoxes.reducedLen =\n (origBoxes.reducedLen || len) - (len * 0.1);\n // Recurse\n if (origBoxes.reducedLen > len * 0.1) {\n distribute(origBoxes, len, maxDistance);\n }\n // Exceeded maxDistance => abort\n return true;\n }\n posInCompositeBox += origBoxes[i].size;\n i++;\n return false;\n });\n });\n // Add the rest (hidden) boxes and sort by target\n stableSort(origBoxes, sortByTarget);\n return origBoxes;\n }\n RendererUtilities.distribute = distribute;\n })(RendererUtilities || (RendererUtilities = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return RendererUtilities;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGElement.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Renderer/HTML/AST.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (A, AST, Color, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animate = A.animate,\n animObject = A.animObject,\n stop = A.stop;\n var deg2rad = H.deg2rad,\n doc = H.doc,\n noop = H.noop,\n svg = H.svg,\n SVG_NS = H.SVG_NS,\n win = H.win;\n var addEvent = U.addEvent,\n attr = U.attr,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n erase = U.erase,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isFunction = U.isFunction,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n pInt = U.pInt,\n syncTimeout = U.syncTimeout,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The SVGElement prototype is a JavaScript wrapper for SVG elements used in the\n * rendering layer of Highcharts. Combined with the\n * {@link Highcharts.SVGRenderer}\n * object, these prototypes allow freeform annotation in the charts or even in\n * HTML pages without instanciating a chart. The SVGElement can also wrap HTML\n * labels, when `text` or `label` elements are created with the `useHTML`\n * parameter.\n *\n * The SVGElement instances are created through factory functions on the\n * {@link Highcharts.SVGRenderer}\n * object, like\n * {@link Highcharts.SVGRenderer#rect|rect},\n * {@link Highcharts.SVGRenderer#path|path},\n * {@link Highcharts.SVGRenderer#text|text},\n * {@link Highcharts.SVGRenderer#label|label},\n * {@link Highcharts.SVGRenderer#g|g}\n * and more.\n *\n * @class\n * @name Highcharts.SVGElement\n */\n var SVGElement = /** @class */ (function () {\n function SVGElement() {\n /* *\n *\n * Properties\n *\n * */\n this.element = void 0;\n this.onEvents = {};\n this.opacity = 1; // Default base for animation\n this.renderer = void 0;\n this.SVG_NS = SVG_NS;\n // Custom attributes used for symbols, these should be filtered out when\n // setting SVGElement attributes (#9375).\n this.symbolCustomAttribs = [\n 'x',\n 'y',\n 'width',\n 'height',\n 'r',\n 'start',\n 'end',\n 'innerR',\n 'anchorX',\n 'anchorY',\n 'rounded'\n ];\n }\n // @todo public zIndex?: number;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the current value of an attribute or pseudo attribute,\n * used mainly for animation. Called internally from\n * the {@link Highcharts.SVGRenderer#attr} function.\n *\n * @private\n * @function Highcharts.SVGElement#_defaultGetter\n *\n * @param {string} key\n * Property key.\n *\n * @return {number|string}\n * Property value.\n */\n SVGElement.prototype._defaultGetter = function (key) {\n var ret = pick(this[key + 'Value'], // align getter\n this[key],\n this.element ? this.element.getAttribute(key) : null, 0);\n if (/^[\\-0-9\\.]+$/.test(ret)) { // is numerical\n ret = parseFloat(ret);\n }\n return ret;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#_defaultSetter\n *\n * @param {string} value\n *\n * @param {string} key\n *\n * @param {Highcharts.SVGDOMElement} element\n *\n */\n SVGElement.prototype._defaultSetter = function (value, key, element) {\n element.setAttribute(key, value);\n };\n /**\n * Add the element to the DOM. All elements must be added this way.\n *\n * @sample highcharts/members/renderer-g\n * Elements added to a group\n *\n * @function Highcharts.SVGElement#add\n *\n * @param {Highcharts.SVGElement} [parent]\n * The parent item to add it to. If undefined, the element is added\n * to the {@link Highcharts.SVGRenderer.box}.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.add = function (parent) {\n var renderer = this.renderer,\n element = this.element;\n var inserted;\n if (parent) {\n this.parentGroup = parent;\n }\n // Mark as inverted\n this.parentInverted = parent && parent.inverted;\n // Build formatted text\n if (typeof this.textStr !== 'undefined' &&\n this.element.nodeName === 'text' // Not for SVGLabel instances\n ) {\n renderer.buildText(this);\n }\n // Mark as added\n this.added = true;\n // If we're adding to renderer root, or other elements in the group\n // have a z index, we need to handle it\n if (!parent || parent.handleZ || this.zIndex) {\n inserted = this.zIndexSetter();\n }\n // If zIndex is not handled, append at the end\n if (!inserted) {\n (parent ?\n parent.element :\n renderer.box).appendChild(element);\n }\n // fire an event for internal hooks\n if (this.onAdd) {\n this.onAdd();\n }\n return this;\n };\n /**\n * Add a class name to an element.\n *\n * @function Highcharts.SVGElement#addClass\n *\n * @param {string} className\n * The new class name to add.\n *\n * @param {boolean} [replace=false]\n * When true, the existing class name(s) will be overwritten with the new\n * one. When false, the new one is added.\n *\n * @return {Highcharts.SVGElement}\n * Return the SVG element for chainability.\n */\n SVGElement.prototype.addClass = function (className, replace) {\n var currentClassName = replace ? '' : (this.attr('class') || '');\n // Trim the string and remove duplicates\n className = (className || '')\n .split(/ /g)\n .reduce(function (newClassName, name) {\n if (currentClassName.indexOf(name) === -1) {\n newClassName.push(name);\n }\n return newClassName;\n }, (currentClassName ?\n [currentClassName] :\n []))\n .join(' ');\n if (className !== currentClassName) {\n this.attr('class', className);\n }\n return this;\n };\n /**\n * This method is executed in the end of `attr()`, after setting all\n * attributes in the hash. In can be used to efficiently consolidate\n * multiple attributes in one SVG property -- e.g., translate, rotate and\n * scale are merged in one \"transform\" attribute in the SVG node.\n *\n * @private\n * @function Highcharts.SVGElement#afterSetters\n */\n SVGElement.prototype.afterSetters = function () {\n // Update transform. Do this outside the loop to prevent redundant\n // updating for batch setting of attributes.\n if (this.doTransform) {\n this.updateTransform();\n this.doTransform = false;\n }\n };\n /**\n * Align the element relative to the chart or another box.\n *\n * @function Highcharts.SVGElement#align\n *\n * @param {Highcharts.AlignObject} [alignOptions]\n * The alignment options. The function can be called without this\n * parameter in order to re-align an element after the box has been\n * updated.\n *\n * @param {boolean} [alignByTranslate]\n * Align element by translation.\n *\n * @param {string|Highcharts.BBoxObject} [box]\n * The box to align to, needs a width and height. When the box is a\n * string, it refers to an object in the Renderer. For example, when\n * box is `spacingBox`, it refers to `Renderer.spacingBox` which\n * holds `width`, `height`, `x` and `y` properties.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n SVGElement.prototype.align = function (alignOptions, alignByTranslate, box) {\n var attribs = {},\n renderer = this.renderer,\n alignedObjects = renderer.alignedObjects;\n var x,\n y,\n alignTo,\n alignFactor,\n vAlignFactor;\n // First call on instanciate\n if (alignOptions) {\n this.alignOptions = alignOptions;\n this.alignByTranslate = alignByTranslate;\n if (!box || isString(box)) {\n this.alignTo = alignTo = box || 'renderer';\n // prevent duplicates, like legendGroup after resize\n erase(alignedObjects, this);\n alignedObjects.push(this);\n box = void 0; // reassign it below\n }\n // When called on resize, no arguments are supplied\n }\n else {\n alignOptions = this.alignOptions;\n alignByTranslate = this.alignByTranslate;\n alignTo = this.alignTo;\n }\n box = pick(box, renderer[alignTo], alignTo === 'scrollablePlotBox' ?\n renderer.plotBox : void 0, renderer);\n // Assign variables\n var align = alignOptions.align,\n vAlign = alignOptions.verticalAlign;\n // default: left align\n x = (box.x || 0) + (alignOptions.x || 0);\n // default: top align\n y = (box.y || 0) + (alignOptions.y || 0);\n // Align\n if (align === 'right') {\n alignFactor = 1;\n }\n else if (align === 'center') {\n alignFactor = 2;\n }\n if (alignFactor) {\n x += (box.width - (alignOptions.width || 0)) /\n alignFactor;\n }\n attribs[alignByTranslate ? 'translateX' : 'x'] = Math.round(x);\n // Vertical align\n if (vAlign === 'bottom') {\n vAlignFactor = 1;\n }\n else if (vAlign === 'middle') {\n vAlignFactor = 2;\n }\n if (vAlignFactor) {\n y += (box.height - (alignOptions.height || 0)) /\n vAlignFactor;\n }\n attribs[alignByTranslate ? 'translateY' : 'y'] = Math.round(y);\n // Animate only if already placed\n this[this.placed ? 'animate' : 'attr'](attribs);\n this.placed = true;\n this.alignAttr = attribs;\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#alignSetter\n * @param {\"left\"|\"center\"|\"right\"} value\n */\n SVGElement.prototype.alignSetter = function (value) {\n var convert = {\n left: 'start',\n center: 'middle',\n right: 'end'\n };\n if (convert[value]) {\n this.alignValue = value;\n this.element.setAttribute('text-anchor', convert[value]);\n }\n };\n /**\n * Animate to given attributes or CSS properties.\n *\n * @sample highcharts/members/element-on/\n * Setting some attributes by animation\n *\n * @function Highcharts.SVGElement#animate\n *\n * @param {Highcharts.SVGAttributes} params\n * SVG attributes or CSS to animate.\n *\n * @param {boolean|Partial} [options]\n * Animation options.\n *\n * @param {Function} [complete]\n * Function to perform at the end of animation.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.animate = function (params, options, complete) {\n var _this = this;\n var animOptions = animObject(pick(options,\n this.renderer.globalAnimation,\n true)),\n deferTime = animOptions.defer;\n // When the page is hidden save resources in the background by not\n // running animation at all (#9749).\n if (pick(doc.hidden, doc.msHidden, doc.webkitHidden, false)) {\n animOptions.duration = 0;\n }\n if (animOptions.duration !== 0) {\n // allows using a callback with the global animation without\n // overwriting it\n if (complete) {\n animOptions.complete = complete;\n }\n // If defer option is defined delay the animation #12901\n syncTimeout(function () {\n if (_this.element) {\n animate(_this, params, animOptions);\n }\n }, deferTime);\n }\n else {\n this.attr(params, void 0, complete);\n // Call the end step synchronously\n objectEach(params, function (val, prop) {\n if (animOptions.step) {\n animOptions.step.call(this, val, { prop: prop, pos: 1, elem: this });\n }\n }, this);\n }\n return this;\n };\n /**\n * Apply a text outline through a custom CSS property, by copying the text\n * element and apply stroke to the copy. Used internally. Contrast checks at\n * [example](https://jsfiddle.net/highcharts/43soe9m1/2/).\n *\n * @example\n * // Specific color\n * text.css({\n * textOutline: '1px black'\n * });\n * // Automatic contrast\n * text.css({\n * color: '#000000', // black text\n * textOutline: '1px contrast' // => white outline\n * });\n *\n * @private\n * @function Highcharts.SVGElement#applyTextOutline\n *\n * @param {string} textOutline\n * A custom CSS `text-outline` setting, defined by `width color`.\n */\n SVGElement.prototype.applyTextOutline = function (textOutline) {\n var elem = this.element,\n hasContrast = textOutline.indexOf('contrast') !== -1,\n styles = {};\n // When the text shadow is set to contrast, use dark stroke for light\n // text and vice versa.\n if (hasContrast) {\n styles.textOutline = textOutline = textOutline.replace(/contrast/g, this.renderer.getContrast(elem.style.fill));\n }\n // Extract the stroke width and color\n var parts = textOutline.split(' ');\n var color = parts[parts.length - 1];\n var strokeWidth = parts[0];\n if (strokeWidth && strokeWidth !== 'none' && H.svg) {\n this.fakeTS = true; // Fake text shadow\n // In order to get the right y position of the clone,\n // copy over the y setter\n this.ySetter = this.xSetter;\n // Since the stroke is applied on center of the actual outline, we\n // need to double it to get the correct stroke-width outside the\n // glyphs.\n strokeWidth = strokeWidth.replace(/(^[\\d\\.]+)(.*?)$/g, function (match, digit, unit) {\n return (2 * Number(digit)) + unit;\n });\n // Remove shadows from previous runs.\n this.removeTextOutline();\n var outline_1 = doc.createElementNS(SVG_NS, 'tspan');\n attr(outline_1, {\n 'class': 'highcharts-text-outline',\n fill: color,\n stroke: color,\n 'stroke-width': strokeWidth,\n 'stroke-linejoin': 'round'\n });\n // For each of the tspans and text nodes, create a copy in the\n // outline.\n [].forEach.call(elem.childNodes, function (childNode) {\n var clone = childNode.cloneNode(true);\n if (clone.removeAttribute) {\n ['fill', 'stroke', 'stroke-width', 'stroke'].forEach(function (prop) { return clone.removeAttribute(prop); });\n }\n outline_1.appendChild(clone);\n });\n // Insert an absolutely positioned break before the original text\n // to keep it in place\n var br_1 = doc.createElementNS(SVG_NS, 'tspan');\n br_1.textContent = '\\u200B';\n // Copy x and y if not null\n ['x', 'y'].forEach(function (key) {\n var value = elem.getAttribute(key);\n if (value) {\n br_1.setAttribute(key, value);\n }\n });\n // Insert the outline\n outline_1.appendChild(br_1);\n elem.insertBefore(outline_1, elem.firstChild);\n }\n };\n /**\n * @function Highcharts.SVGElement#attr\n * @param {string} key\n * @return {number|string}\n */ /**\n * Apply native and custom attributes to the SVG elements.\n *\n * In order to set the rotation center for rotation, set x and y to 0 and\n * use `translateX` and `translateY` attributes to position the element\n * instead.\n *\n * Attributes frequently used in Highcharts are `fill`, `stroke`,\n * `stroke-width`.\n *\n * @sample highcharts/members/renderer-rect/\n * Setting some attributes\n *\n * @example\n * // Set multiple attributes\n * element.attr({\n * stroke: 'red',\n * fill: 'blue',\n * x: 10,\n * y: 10\n * });\n *\n * // Set a single attribute\n * element.attr('stroke', 'red');\n *\n * // Get an attribute\n * element.attr('stroke'); // => 'red'\n *\n * @function Highcharts.SVGElement#attr\n *\n * @param {string|Highcharts.SVGAttributes} [hash]\n * The native and custom SVG attributes.\n *\n * @param {number|string|Highcharts.SVGPathArray} [val]\n * If the type of the first argument is `string`, the second can be a\n * value, which will serve as a single attribute setter. If the first\n * argument is a string and the second is undefined, the function\n * serves as a getter and the current value of the property is\n * returned.\n *\n * @param {Function} [complete]\n * A callback function to execute after setting the attributes. This\n * makes the function compliant and interchangeable with the\n * {@link SVGElement#animate} function.\n *\n * @param {boolean} [continueAnimation=true]\n * Used internally when `.attr` is called as part of an animation\n * step. Otherwise, calling `.attr` for an attribute will stop\n * animation for that attribute.\n *\n * @return {Highcharts.SVGElement}\n * If used as a setter, it returns the current\n * {@link Highcharts.SVGElement} so the calls can be chained. If\n * used as a getter, the current value of the attribute is returned.\n */\n SVGElement.prototype.attr = function (hash, val, complete, continueAnimation) {\n var element = this.element,\n symbolCustomAttribs = this.symbolCustomAttribs;\n var key,\n hasSetSymbolSize,\n ret = this,\n skipAttr,\n setter;\n // single key-value pair\n if (typeof hash === 'string' && typeof val !== 'undefined') {\n key = hash;\n hash = {};\n hash[key] = val;\n }\n // used as a getter: first argument is a string, second is undefined\n if (typeof hash === 'string') {\n ret = (this[hash + 'Getter'] ||\n this._defaultGetter).call(this, hash, element);\n // setter\n }\n else {\n objectEach(hash, function eachAttribute(val, key) {\n skipAttr = false;\n // Unless .attr is from the animator update, stop current\n // running animation of this property\n if (!continueAnimation) {\n stop(this, key);\n }\n // Special handling of symbol attributes\n if (this.symbolName &&\n symbolCustomAttribs.indexOf(key) !== -1) {\n if (!hasSetSymbolSize) {\n this.symbolAttr(hash);\n hasSetSymbolSize = true;\n }\n skipAttr = true;\n }\n if (this.rotation && (key === 'x' || key === 'y')) {\n this.doTransform = true;\n }\n if (!skipAttr) {\n setter = (this[key + 'Setter'] ||\n this._defaultSetter);\n setter.call(this, val, key, element);\n // Let the shadow follow the main element\n if (!this.styledMode &&\n this.shadows &&\n /^(width|height|visibility|x|y|d|transform|cx|cy|r)$/\n .test(key)) {\n this.updateShadows(key, val, setter);\n }\n }\n }, this);\n this.afterSetters();\n }\n // In accordance with animate, run a complete callback\n if (complete) {\n complete.call(this);\n }\n return ret;\n };\n /**\n * Apply a clipping rectangle to this element.\n *\n * @function Highcharts.SVGElement#clip\n *\n * @param {Highcharts.ClipRectElement} [clipRect]\n * The clipping rectangle. If skipped, the current clip is removed.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVG element to allow chaining.\n */\n SVGElement.prototype.clip = function (clipRect) {\n return this.attr('clip-path', clipRect ?\n 'url(' + this.renderer.url + '#' + clipRect.id + ')' :\n 'none');\n };\n /**\n * Calculate the coordinates needed for drawing a rectangle crisply and\n * return the calculated attributes.\n *\n * @function Highcharts.SVGElement#crisp\n *\n * @param {Highcharts.RectangleObject} rect\n * Rectangle to crisp.\n *\n * @param {number} [strokeWidth]\n * The stroke width to consider when computing crisp positioning. It can\n * also be set directly on the rect parameter.\n *\n * @return {Highcharts.RectangleObject}\n * The modified rectangle arguments.\n */\n SVGElement.prototype.crisp = function (rect, strokeWidth) {\n var wrapper = this;\n strokeWidth = strokeWidth || rect.strokeWidth || 0;\n // Math.round because strokeWidth can sometimes have roundoff errors\n var normalizer = Math.round(strokeWidth) % 2 / 2;\n // normalize for crisp edges\n rect.x = Math.floor(rect.x || wrapper.x || 0) + normalizer;\n rect.y = Math.floor(rect.y || wrapper.y || 0) + normalizer;\n rect.width = Math.floor((rect.width || wrapper.width || 0) - 2 * normalizer);\n rect.height = Math.floor((rect.height || wrapper.height || 0) - 2 * normalizer);\n if (defined(rect.strokeWidth)) {\n rect.strokeWidth = strokeWidth;\n }\n return rect;\n };\n /**\n * Build and apply an SVG gradient out of a common JavaScript configuration\n * object. This function is called from the attribute setters. An event\n * hook is added for supporting other complex color types.\n *\n * @private\n * @function Highcharts.SVGElement#complexColor\n *\n * @param {Highcharts.GradientColorObject|Highcharts.PatternObject} colorOptions\n * The gradient or pattern options structure.\n *\n * @param {string} prop\n * The property to apply, can either be `fill` or `stroke`.\n *\n * @param {Highcharts.SVGDOMElement} elem\n * SVG element to apply the gradient on.\n */\n SVGElement.prototype.complexColor = function (colorOptions, prop, elem) {\n var renderer = this.renderer;\n var colorObject,\n gradName,\n gradAttr,\n radAttr,\n gradients,\n stops,\n stopColor,\n stopOpacity,\n radialReference,\n id,\n key = [],\n value;\n fireEvent(this.renderer, 'complexColor', {\n args: arguments\n }, function () {\n // Apply linear or radial gradients\n if (colorOptions.radialGradient) {\n gradName = 'radialGradient';\n }\n else if (colorOptions.linearGradient) {\n gradName = 'linearGradient';\n }\n if (gradName) {\n gradAttr = colorOptions[gradName];\n gradients = renderer.gradients;\n stops = colorOptions.stops;\n radialReference = elem.radialReference;\n // Keep < 2.2 kompatibility\n if (isArray(gradAttr)) {\n colorOptions[gradName] = gradAttr = {\n x1: gradAttr[0],\n y1: gradAttr[1],\n x2: gradAttr[2],\n y2: gradAttr[3],\n gradientUnits: 'userSpaceOnUse'\n };\n }\n // Correct the radial gradient for the radial reference system\n if (gradName === 'radialGradient' &&\n radialReference &&\n !defined(gradAttr.gradientUnits)) {\n // Save the radial attributes for updating\n radAttr = gradAttr;\n gradAttr = merge(gradAttr, renderer.getRadialAttr(radialReference, radAttr), { gradientUnits: 'userSpaceOnUse' });\n }\n // Build the unique key to detect whether we need to create a\n // new element (#1282)\n objectEach(gradAttr, function (value, n) {\n if (n !== 'id') {\n key.push(n, value);\n }\n });\n objectEach(stops, function (val) {\n key.push(val);\n });\n key = key.join(',');\n // Check if a gradient object with the same config object is\n // created within this renderer\n if (gradients[key]) {\n id = gradients[key].attr('id');\n }\n else {\n // Set the id and create the element\n gradAttr.id = id = uniqueKey();\n var gradientObject_1 = gradients[key] =\n renderer.createElement(gradName)\n .attr(gradAttr)\n .add(renderer.defs);\n gradientObject_1.radAttr = radAttr;\n // The gradient needs to keep a list of stops to be able to\n // destroy them\n gradientObject_1.stops = [];\n stops.forEach(function (stop) {\n if (stop[1].indexOf('rgba') === 0) {\n colorObject = Color.parse(stop[1]);\n stopColor = colorObject.get('rgb');\n stopOpacity = colorObject.get('a');\n }\n else {\n stopColor = stop[1];\n stopOpacity = 1;\n }\n var stopObject = renderer.createElement('stop').attr({\n offset: stop[0],\n 'stop-color': stopColor,\n 'stop-opacity': stopOpacity\n }).add(gradientObject_1);\n // Add the stop element to the gradient\n gradientObject_1.stops.push(stopObject);\n });\n }\n // Set the reference to the gradient object\n value = 'url(' + renderer.url + '#' + id + ')';\n elem.setAttribute(prop, value);\n elem.gradient = key;\n // Allow the color to be concatenated into tooltips formatters\n // etc. (#2995)\n colorOptions.toString = function () {\n return value;\n };\n }\n });\n };\n /**\n * Set styles for the element. In addition to CSS styles supported by\n * native SVG and HTML elements, there are also some custom made for\n * Highcharts, like `width`, `ellipsis` and `textOverflow` for SVG text\n * elements.\n *\n * @sample highcharts/members/renderer-text-on-chart/\n * Styled text\n *\n * @function Highcharts.SVGElement#css\n *\n * @param {Highcharts.CSSObject} styles\n * The new CSS styles.\n *\n * @return {Highcharts.SVGElement}\n * Return the SVG element for chaining.\n */\n SVGElement.prototype.css = function (styles) {\n var oldStyles = this.styles, newStyles = {}, elem = this.element, \n // These CSS properties are interpreted internally by the SVG\n // renderer, but are not supported by SVG and should not be added to\n // the DOM. In styled mode, no CSS should find its way to the DOM\n // whatsoever (#6173, #6474).\n svgPseudoProps = ['textOutline', 'textOverflow', 'width'];\n var textWidth,\n serializedCss = '',\n hyphenate,\n hasNew = !oldStyles;\n // convert legacy\n if (styles && styles.color) {\n styles.fill = styles.color;\n }\n // Filter out existing styles to increase performance (#2640)\n if (oldStyles) {\n objectEach(styles, function (style, n) {\n if (oldStyles && oldStyles[n] !== style) {\n newStyles[n] = style;\n hasNew = true;\n }\n });\n }\n if (hasNew) {\n // Merge the new styles with the old ones\n if (oldStyles) {\n styles = extend(oldStyles, newStyles);\n }\n // Get the text width from style\n if (styles) {\n // Previously set, unset it (#8234)\n if (styles.width === null || styles.width === 'auto') {\n delete this.textWidth;\n // Apply new\n }\n else if (elem.nodeName.toLowerCase() === 'text' &&\n styles.width) {\n textWidth = this.textWidth = pInt(styles.width);\n }\n }\n // store object\n this.styles = styles;\n if (textWidth && (!svg && this.renderer.forExport)) {\n delete styles.width;\n }\n // Serialize and set style attribute\n if (elem.namespaceURI === this.SVG_NS) { // #7633\n hyphenate = function (a, b) {\n return '-' + b.toLowerCase();\n };\n objectEach(styles, function (style, n) {\n if (svgPseudoProps.indexOf(n) === -1) {\n serializedCss +=\n n.replace(/([A-Z])/g, hyphenate) + ':' +\n style + ';';\n }\n });\n if (serializedCss) {\n attr(elem, 'style', serializedCss); // #1881\n }\n }\n else {\n css(elem, styles);\n }\n if (this.added) {\n // Rebuild text after added. Cache mechanisms in the buildText\n // will prevent building if there are no significant changes.\n if (this.element.nodeName === 'text') {\n this.renderer.buildText(this);\n }\n // Apply text outline after added\n if (styles && styles.textOutline) {\n this.applyTextOutline(styles.textOutline);\n }\n }\n }\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#dashstyleSetter\n * @param {string} value\n */\n SVGElement.prototype.dashstyleSetter = function (value) {\n var i,\n strokeWidth = this['stroke-width'];\n // If \"inherit\", like maps in IE, assume 1 (#4981). With HC5 and the new\n // strokeWidth function, we should be able to use that instead.\n if (strokeWidth === 'inherit') {\n strokeWidth = 1;\n }\n value = value && value.toLowerCase();\n if (value) {\n var v = value\n .replace('shortdashdotdot', '3,1,1,1,1,1,')\n .replace('shortdashdot', '3,1,1,1')\n .replace('shortdot', '1,1,')\n .replace('shortdash', '3,1,')\n .replace('longdash', '8,3,')\n .replace(/dot/g, '1,3,')\n .replace('dash', '4,3,')\n .replace(/,$/, '')\n .split(','); // ending comma\n i = v.length;\n while (i--) {\n v[i] = '' + (pInt(v[i]) * pick(strokeWidth, NaN));\n }\n value = v.join(',').replace(/NaN/g, 'none'); // #3226\n this.element.setAttribute('stroke-dasharray', value);\n }\n };\n /**\n * Destroy the element and element wrapper and clear up the DOM and event\n * hooks.\n *\n * @function Highcharts.SVGElement#destroy\n */\n SVGElement.prototype.destroy = function () {\n var wrapper = this,\n element = wrapper.element || {},\n renderer = wrapper.renderer,\n ownerSVGElement = element.ownerSVGElement;\n var parentToClean = (renderer.isSVG &&\n element.nodeName === 'SPAN' &&\n wrapper.parentGroup ||\n void 0),\n grandParent,\n i;\n // remove events\n element.onclick = element.onmouseout = element.onmouseover =\n element.onmousemove = element.point = null;\n stop(wrapper); // stop running animations\n if (wrapper.clipPath && ownerSVGElement) {\n var clipPath_1 = wrapper.clipPath;\n // Look for existing references to this clipPath and remove them\n // before destroying the element (#6196).\n // The upper case version is for Edge\n [].forEach.call(ownerSVGElement.querySelectorAll('[clip-path],[CLIP-PATH]'), function (el) {\n if (el.getAttribute('clip-path').indexOf(clipPath_1.element.id) > -1) {\n el.removeAttribute('clip-path');\n }\n });\n wrapper.clipPath = clipPath_1.destroy();\n }\n // Destroy stops in case this is a gradient object @todo old code?\n if (wrapper.stops) {\n for (i = 0; i < wrapper.stops.length; i++) {\n wrapper.stops[i].destroy();\n }\n wrapper.stops.length = 0;\n wrapper.stops = void 0;\n }\n // remove element\n wrapper.safeRemoveChild(element);\n if (!renderer.styledMode) {\n wrapper.destroyShadows();\n }\n // In case of useHTML, clean up empty containers emulating SVG groups\n // (#1960, #2393, #2697).\n while (parentToClean &&\n parentToClean.div &&\n parentToClean.div.childNodes.length === 0) {\n grandParent = parentToClean.parentGroup;\n wrapper.safeRemoveChild(parentToClean.div);\n delete parentToClean.div;\n parentToClean = grandParent;\n }\n // remove from alignObjects\n if (wrapper.alignTo) {\n erase(renderer.alignedObjects, wrapper);\n }\n objectEach(wrapper, function (val, key) {\n // Destroy child elements of a group\n if (wrapper[key] &&\n wrapper[key].parentGroup === wrapper &&\n wrapper[key].destroy) {\n wrapper[key].destroy();\n }\n // Delete all properties\n delete wrapper[key];\n });\n return;\n };\n /**\n * Destroy shadows on the element.\n *\n * @private\n * @function Highcharts.SVGElement#destroyShadows\n *\n */\n SVGElement.prototype.destroyShadows = function () {\n (this.shadows || []).forEach(function (shadow) {\n this.safeRemoveChild(shadow);\n }, this);\n this.shadows = void 0;\n };\n /**\n * @private\n */\n SVGElement.prototype.destroyTextPath = function (elem, path) {\n var textElement = elem.getElementsByTagName('text')[0];\n var childNodes;\n if (textElement) {\n // Remove textPath attributes\n textElement.removeAttribute('dx');\n textElement.removeAttribute('dy');\n // Remove ID's:\n path.element.setAttribute('id', '');\n // Check if textElement includes textPath,\n if (this.textPathWrapper &&\n textElement.getElementsByTagName('textPath').length) {\n // Move nodes to \n childNodes = this.textPathWrapper.element.childNodes;\n // Now move all 's and text nodes to the node\n while (childNodes.length) {\n textElement.appendChild(childNodes[0]);\n }\n // Remove from the DOM\n textElement.removeChild(this.textPathWrapper.element);\n }\n }\n else if (elem.getAttribute('dx') || elem.getAttribute('dy')) {\n // Remove textPath attributes from elem\n // to get correct text-outline position\n elem.removeAttribute('dx');\n elem.removeAttribute('dy');\n }\n if (this.textPathWrapper) {\n // Set textPathWrapper to undefined and destroy it\n this.textPathWrapper = this.textPathWrapper.destroy();\n }\n };\n /**\n * @private\n * @function Highcharts.SVGElement#dSettter\n * @param {number|string|Highcharts.SVGPathArray} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.dSetter = function (value, key, element) {\n if (isArray(value)) {\n // Backwards compatibility, convert one-dimensional array into an\n // array of segments\n if (typeof value[0] === 'string') {\n value = this.renderer.pathToSegments(value);\n }\n this.pathArray = value;\n value = value.reduce(function (acc, seg, i) {\n if (!seg || !seg.join) {\n return (seg || '').toString();\n }\n return (i ? acc + ' ' : '') + seg.join(' ');\n }, '');\n }\n if (/(NaN| {2}|^$)/.test(value)) {\n value = 'M 0 0';\n }\n // Check for cache before resetting. Resetting causes disturbance in the\n // DOM, causing flickering in some cases in Edge/IE (#6747). Also\n // possible performance gain.\n if (this[key] !== value) {\n element.setAttribute(key, value);\n this[key] = value;\n }\n };\n /**\n * Fade out an element by animating its opacity down to 0, and hide it on\n * complete. Used internally for the tooltip.\n *\n * @function Highcharts.SVGElement#fadeOut\n *\n * @param {number} [duration=150]\n * The fade duration in milliseconds.\n */\n SVGElement.prototype.fadeOut = function (duration) {\n var elemWrapper = this;\n elemWrapper.animate({\n opacity: 0\n }, {\n duration: pick(duration, 150),\n complete: function () {\n // #3088, assuming we're only using this for tooltips\n elemWrapper.attr({ y: -9999 }).hide();\n }\n });\n };\n /**\n * @private\n * @function Highcharts.SVGElement#fillSetter\n * @param {Highcharts.ColorType} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.fillSetter = function (value, key, element) {\n if (typeof value === 'string') {\n element.setAttribute(key, value);\n }\n else if (value) {\n this.complexColor(value, key, element);\n }\n };\n /**\n * Get the bounding box (width, height, x and y) for the element. Generally\n * used to get rendered text size. Since this is called a lot in charts,\n * the results are cached based on text properties, in order to save DOM\n * traffic. The returned bounding box includes the rotation, so for example\n * a single text line of rotation 90 will report a greater height, and a\n * width corresponding to the line-height.\n *\n * @sample highcharts/members/renderer-on-chart/\n * Draw a rectangle based on a text's bounding box\n *\n * @function Highcharts.SVGElement#getBBox\n *\n * @param {boolean} [reload]\n * Skip the cache and get the updated DOM bouding box.\n *\n * @param {number} [rot]\n * Override the element's rotation. This is internally used on axis\n * labels with a value of 0 to find out what the bounding box would\n * be have been if it were not rotated.\n *\n * @return {Highcharts.BBoxObject}\n * The bounding box with `x`, `y`, `width` and `height` properties.\n */\n SVGElement.prototype.getBBox = function (reload, rot) {\n var wrapper = this,\n renderer = wrapper.renderer,\n element = wrapper.element,\n styles = wrapper.styles,\n textStr = wrapper.textStr,\n cache = renderer.cache,\n cacheKeys = renderer.cacheKeys,\n isSVG = element.namespaceURI === wrapper.SVG_NS,\n rotation = pick(rot,\n wrapper.rotation, 0),\n fontSize = renderer.styledMode ? (element &&\n SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles && styles.fontSize);\n var bBox, // = wrapper.bBox,\n width,\n height,\n toggleTextShadowShim,\n cacheKey;\n // Avoid undefined and null (#7316)\n if (defined(textStr)) {\n cacheKey = textStr.toString();\n // Since numbers are monospaced, and numerical labels appear a lot\n // in a chart, we assume that a label of n characters has the same\n // bounding box as others of the same length. Unless there is inner\n // HTML in the label. In that case, leave the numbers as is (#5899).\n if (cacheKey.indexOf('<') === -1) {\n cacheKey = cacheKey.replace(/[0-9]/g, '0');\n }\n // Properties that affect bounding box\n cacheKey += [\n '',\n rotation,\n fontSize,\n wrapper.textWidth,\n styles && styles.textOverflow,\n styles && styles.fontWeight // #12163\n ].join(',');\n }\n if (cacheKey && !reload) {\n bBox = cache[cacheKey];\n }\n // No cache found\n if (!bBox) {\n // SVG elements\n if (isSVG || renderer.forExport) {\n try { // Fails in Firefox if the container has display: none.\n // When the text shadow shim is used, we need to hide the\n // fake shadows to get the correct bounding box (#3872)\n toggleTextShadowShim = this.fakeTS && function (display) {\n var outline = element.querySelector('.highcharts-text-outline');\n if (outline) {\n css(outline, { display: display });\n }\n };\n // Workaround for #3842, Firefox reporting wrong bounding\n // box for shadows\n if (isFunction(toggleTextShadowShim)) {\n toggleTextShadowShim('none');\n }\n bBox = element.getBBox ?\n // SVG: use extend because IE9 is not allowed to change\n // width and height in case of rotation (below)\n extend({}, element.getBBox()) : {\n // Legacy IE in export mode\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n // #3842\n if (isFunction(toggleTextShadowShim)) {\n toggleTextShadowShim('');\n }\n }\n catch (e) {\n '';\n }\n // If the bBox is not set, the try-catch block above failed. The\n // other condition is for Opera that returns a width of\n // -Infinity on hidden elements.\n if (!bBox || bBox.width < 0) {\n bBox = { width: 0, height: 0 };\n }\n // VML Renderer or useHTML within SVG\n }\n else {\n bBox = wrapper.htmlGetBBox();\n }\n // True SVG elements as well as HTML elements in modern browsers\n // using the .useHTML option need to compensated for rotation\n if (renderer.isSVG) {\n width = bBox.width;\n height = bBox.height;\n // Workaround for wrong bounding box in IE, Edge and Chrome on\n // Windows. With Highcharts' default font, IE and Edge report\n // a box height of 16.899 and Chrome rounds it to 17. If this\n // stands uncorrected, it results in more padding added below\n // the text than above when adding a label border or background.\n // Also vertical positioning is affected.\n // https://jsfiddle.net/highcharts/em37nvuj/\n // (#1101, #1505, #1669, #2568, #6213).\n if (isSVG) {\n bBox.height = height = ({\n '11px,17': 14,\n '13px,20': 16\n }[(fontSize || '') + \",\" + Math.round(height)] ||\n height);\n }\n // Adjust for rotated text\n if (rotation) {\n var rad = rotation * deg2rad;\n bBox.width = Math.abs(height * Math.sin(rad)) +\n Math.abs(width * Math.cos(rad));\n bBox.height = Math.abs(height * Math.cos(rad)) +\n Math.abs(width * Math.sin(rad));\n }\n }\n // Cache it. When loading a chart in a hidden iframe in Firefox and\n // IE/Edge, the bounding box height is 0, so don't cache it (#5620).\n if (cacheKey && (textStr === '' || bBox.height > 0)) {\n // Rotate (#4681)\n while (cacheKeys.length > 250) {\n delete cache[cacheKeys.shift()];\n }\n if (!cache[cacheKey]) {\n cacheKeys.push(cacheKey);\n }\n cache[cacheKey] = bBox;\n }\n }\n return bBox;\n };\n /**\n * Get the computed style. Only in styled mode.\n *\n * @example\n * chart.series[0].points[0].graphic.getStyle('stroke-width'); // => '1px'\n *\n * @function Highcharts.SVGElement#getStyle\n *\n * @param {string} prop\n * The property name to check for.\n *\n * @return {string}\n * The current computed value.\n */\n SVGElement.prototype.getStyle = function (prop) {\n return win\n .getComputedStyle(this.element || this, '')\n .getPropertyValue(prop);\n };\n /**\n * Check if an element has the given class name.\n *\n * @function Highcharts.SVGElement#hasClass\n *\n * @param {string} className\n * The class name to check for.\n *\n * @return {boolean}\n * Whether the class name is found.\n */\n SVGElement.prototype.hasClass = function (className) {\n return ('' + this.attr('class'))\n .split(' ')\n .indexOf(className) !== -1;\n };\n /**\n * Hide the element, similar to setting the `visibility` attribute to\n * `hidden`.\n *\n * @function Highcharts.SVGElement#hide\n *\n * @param {boolean} [hideByTranslation=false]\n * The flag to determine if element should be hidden by moving out\n * of the viewport. Used for example for dataLabels.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.hide = function (hideByTranslation) {\n if (hideByTranslation) {\n this.attr({ y: -9999 });\n }\n else {\n this.attr({ visibility: 'hidden' });\n }\n return this;\n };\n /**\n * @private\n */\n SVGElement.prototype.htmlGetBBox = function () {\n return { height: 0, width: 0, x: 0, y: 0 };\n };\n /**\n * Initialize the SVG element. This function only exists to make the\n * initialization process overridable. It should not be called directly.\n *\n * @function Highcharts.SVGElement#init\n *\n * @param {Highcharts.SVGRenderer} renderer\n * The SVGRenderer instance to initialize to.\n *\n * @param {string} nodeName\n * The SVG node name.\n */\n SVGElement.prototype.init = function (renderer, nodeName) {\n /**\n * The primary DOM node. Each `SVGElement` instance wraps a main DOM\n * node, but may also represent more nodes.\n *\n * @name Highcharts.SVGElement#element\n * @type {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement}\n */\n this.element = nodeName === 'span' ?\n createElement(nodeName) :\n doc.createElementNS(this.SVG_NS, nodeName);\n /**\n * The renderer that the SVGElement belongs to.\n *\n * @name Highcharts.SVGElement#renderer\n * @type {Highcharts.SVGRenderer}\n */\n this.renderer = renderer;\n fireEvent(this, 'afterInit');\n };\n /**\n * Invert a group, rotate and flip. This is used internally on inverted\n * charts, where the points and graphs are drawn as if not inverted, then\n * the series group elements are inverted.\n *\n * @function Highcharts.SVGElement#invert\n *\n * @param {boolean} inverted\n * Whether to invert or not. An inverted shape can be un-inverted by\n * setting it to false.\n *\n * @return {Highcharts.SVGElement}\n * Return the SVGElement for chaining.\n */\n SVGElement.prototype.invert = function (inverted) {\n this.inverted = inverted;\n this.updateTransform();\n return this;\n };\n /**\n * Add an event listener. This is a simple setter that replaces the\n * previous event of the same type added by this function, as opposed to\n * the {@link Highcharts#addEvent} function.\n *\n * @sample highcharts/members/element-on/\n * A clickable rectangle\n *\n * @function Highcharts.SVGElement#on\n *\n * @param {string} eventType\n * The event type.\n *\n * @param {Function} handler\n * The handler callback.\n *\n * @return {Highcharts.SVGElement}\n * The SVGElement for chaining.\n */\n SVGElement.prototype.on = function (eventType, handler) {\n var onEvents = this.onEvents;\n if (onEvents[eventType]) {\n // Unbind existing event\n onEvents[eventType]();\n }\n onEvents[eventType] = addEvent(this.element, eventType, handler);\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#opacitySetter\n * @param {string} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.opacitySetter = function (value, key, element) {\n // Round off to avoid float errors, like tests where opacity lands on\n // 9.86957e-06 instead of 0\n var opacity = Number(Number(value).toFixed(3));\n this.opacity = opacity;\n element.setAttribute(key, opacity);\n };\n /**\n * Remove a class name from the element.\n *\n * @function Highcharts.SVGElement#removeClass\n *\n * @param {string|RegExp} className\n * The class name to remove.\n *\n * @return {Highcharts.SVGElement} Returns the SVG element for chainability.\n */\n SVGElement.prototype.removeClass = function (className) {\n return this.attr('class', ('' + this.attr('class'))\n .replace(isString(className) ?\n new RegExp(\"(^| )\" + className + \"( |$)\") : // #12064, #13590\n className, ' ')\n .replace(/ +/g, ' ')\n .trim());\n };\n /**\n *\n * @private\n */\n SVGElement.prototype.removeTextOutline = function () {\n var outline = this.element\n .querySelector('tspan.highcharts-text-outline');\n if (outline) {\n this.safeRemoveChild(outline);\n }\n };\n /**\n * Removes an element from the DOM.\n *\n * @private\n * @function Highcharts.SVGElement#safeRemoveChild\n *\n * @param {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement} element\n * The DOM node to remove.\n */\n SVGElement.prototype.safeRemoveChild = function (element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n parentNode.removeChild(element);\n }\n };\n /**\n * Set the coordinates needed to draw a consistent radial gradient across\n * a shape regardless of positioning inside the chart. Used on pie slices\n * to make all the slices have the same radial reference point.\n *\n * @function Highcharts.SVGElement#setRadialReference\n *\n * @param {Array} coordinates\n * The center reference. The format is `[centerX, centerY, diameter]` in\n * pixels.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.setRadialReference = function (coordinates) {\n var existingGradient = (this.element.gradient &&\n this.renderer.gradients[this.element.gradient]);\n this.element.radialReference = coordinates;\n // On redrawing objects with an existing gradient, the gradient needs\n // to be repositioned (#3801)\n if (existingGradient && existingGradient.radAttr) {\n existingGradient.animate(this.renderer.getRadialAttr(coordinates, existingGradient.radAttr));\n }\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#setTextPath\n * @param {Highcharts.SVGElement} path\n * Path to follow.\n * @param {Highcharts.DataLabelsTextPathOptionsObject} textPathOptions\n * Options.\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.setTextPath = function (path, textPathOptions) {\n var elem = this.element,\n textNode = this.text ? this.text.element : elem,\n attribsMap = {\n textAnchor: 'text-anchor'\n };\n var adder = false,\n textPathElement,\n textPathId,\n textPathWrapper = this.textPathWrapper,\n firstTime = !textPathWrapper;\n // Defaults\n textPathOptions = merge(true, {\n enabled: true,\n attributes: {\n dy: -5,\n startOffset: '50%',\n textAnchor: 'middle'\n }\n }, textPathOptions);\n var attrs = AST.filterUserAttributes(textPathOptions.attributes);\n if (path && textPathOptions && textPathOptions.enabled) {\n // In case of fixed width for a text, string is rebuilt\n // (e.g. ellipsis is applied), so we need to rebuild textPath too\n if (textPathWrapper &&\n textPathWrapper.element.parentNode === null) {\n // When buildText functionality was triggered again\n // and deletes textPathWrapper parentNode\n firstTime = true;\n textPathWrapper = textPathWrapper.destroy();\n }\n else if (textPathWrapper) {\n // Case after drillup when spans were added into\n // the DOM outside the textPathWrapper parentGroup\n this.removeTextOutline.call(textPathWrapper.parentGroup);\n }\n // label() has padding, text() doesn't\n if (this.options && this.options.padding) {\n attrs.dx = -this.options.padding;\n }\n if (!textPathWrapper) {\n // Create , defer the DOM adder\n this.textPathWrapper = textPathWrapper =\n this.renderer.createElement('textPath');\n adder = true;\n }\n textPathElement = textPathWrapper.element;\n // Set ID for the path\n textPathId = path.element.getAttribute('id');\n if (!textPathId) {\n path.element.setAttribute('id', textPathId = uniqueKey());\n }\n // Change DOM structure, by placing tag in \n if (firstTime) {\n // Adjust the position\n textNode.setAttribute('y', 0); // Firefox\n if (isNumber(attrs.dx)) {\n textNode.setAttribute('x', -attrs.dx);\n }\n // Move all 's and text nodes to the node. Do\n // not move other elements like or <path>\n var childNodes = [].slice.call(textNode.childNodes);\n for (var i = 0; i < childNodes.length; i++) {\n var childNode = childNodes[i];\n if (childNode.nodeType === win.Node.TEXT_NODE ||\n childNode.nodeName === 'tspan') {\n textPathElement.appendChild(childNode);\n }\n }\n }\n // Add <textPath> to the DOM\n if (adder && textPathWrapper) {\n textPathWrapper.add({ element: textNode });\n }\n // Set basic options:\n // Use `setAttributeNS` because Safari needs this..\n textPathElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', this.renderer.url + '#' + textPathId);\n // Presentation attributes:\n // dx/dy options must by set on <text> (parent),\n // the rest should be set on <textPath>\n if (defined(attrs.dy)) {\n textPathElement.parentNode\n .setAttribute('dy', attrs.dy);\n delete attrs.dy;\n }\n if (defined(attrs.dx)) {\n textPathElement.parentNode\n .setAttribute('dx', attrs.dx);\n delete attrs.dx;\n }\n // Additional attributes\n objectEach(attrs, function (val, key) {\n textPathElement.setAttribute(attribsMap[key] || key, val);\n });\n // Remove translation, text that follows path does not need that\n elem.removeAttribute('transform');\n // Remove shadows and text outlines\n this.removeTextOutline.call(textPathWrapper);\n // Remove background and border for label(), see #10545\n // Alternatively, we can disable setting background rects in\n // series.drawDataLabels()\n if (this.text && !this.renderer.styledMode) {\n this.attr({\n fill: 'none',\n 'stroke-width': 0\n });\n }\n // Disable some functions\n this.updateTransform = noop;\n this.applyTextOutline = noop;\n }\n else if (textPathWrapper) {\n // Reset to prototype\n delete this.updateTransform;\n delete this.applyTextOutline;\n // Restore DOM structure:\n this.destroyTextPath(elem, path);\n // Bring attributes back\n this.updateTransform();\n // Set textOutline back for text()\n if (this.options && this.options.rotation) {\n this.applyTextOutline(this.options.style.textOutline);\n }\n }\n return this;\n };\n /**\n * Add a shadow to the element. Must be called after the element is added to\n * the DOM. In styled mode, this method is not used, instead use `defs` and\n * filters.\n *\n * @example\n * renderer.rect(10, 100, 100, 100)\n * .attr({ fill: 'red' })\n * .shadow(true);\n *\n * @function Highcharts.SVGElement#shadow\n *\n * @param {boolean|Highcharts.ShadowOptionsObject} [shadowOptions]\n * The shadow options. If `true`, the default options are applied. If\n * `false`, the current shadow will be removed.\n *\n * @param {Highcharts.SVGElement} [group]\n * The SVG group element where the shadows will be applied. The\n * default is to add it to the same parent as the current element.\n * Internally, this is ised for pie slices, where all the shadows are\n * added to an element behind all the slices.\n *\n * @param {boolean} [cutOff]\n * Used internally for column shadows.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.shadow = function (shadowOptions, group, cutOff) {\n var shadows = [],\n element = this.element,\n oldShadowOptions = this.oldShadowOptions,\n defaultShadowOptions = {\n color: \"#000000\" /* neutralColor100 */,\n offsetX: this.parentInverted ? -1 : 1,\n offsetY: this.parentInverted ? -1 : 1,\n opacity: 0.15,\n width: 3\n };\n var i,\n shadow,\n strokeWidth,\n shadowElementOpacity,\n update = false, \n // compensate for inverted plot area\n transform,\n options;\n if (shadowOptions === true) {\n options = defaultShadowOptions;\n }\n else if (typeof shadowOptions === 'object') {\n options = extend(defaultShadowOptions, shadowOptions);\n }\n // Update shadow when options change (#12091).\n if (options) {\n // Go over each key to look for change\n if (options && oldShadowOptions) {\n objectEach(options, function (value, key) {\n if (value !== oldShadowOptions[key]) {\n update = true;\n }\n });\n }\n if (update) {\n this.destroyShadows();\n }\n this.oldShadowOptions = options;\n }\n if (!options) {\n this.destroyShadows();\n }\n else if (!this.shadows) {\n shadowElementOpacity = options.opacity / options.width;\n transform = this.parentInverted ?\n \"translate(\" + options.offsetY + \", \" + options.offsetX + \")\" :\n \"translate(\" + options.offsetX + \", \" + options.offsetY + \")\";\n for (i = 1; i <= options.width; i++) {\n shadow = element.cloneNode(false);\n strokeWidth = (options.width * 2) + 1 - (2 * i);\n attr(shadow, {\n stroke: (shadowOptions.color ||\n \"#000000\" /* neutralColor100 */),\n 'stroke-opacity': shadowElementOpacity * i,\n 'stroke-width': strokeWidth,\n transform: transform,\n fill: 'none'\n });\n shadow.setAttribute('class', (shadow.getAttribute('class') || '') + ' highcharts-shadow');\n if (cutOff) {\n attr(shadow, 'height', Math.max(attr(shadow, 'height') - strokeWidth, 0));\n shadow.cutHeight = strokeWidth;\n }\n if (group) {\n group.element.appendChild(shadow);\n }\n else if (element.parentNode) {\n element.parentNode.insertBefore(shadow, element);\n }\n shadows.push(shadow);\n }\n this.shadows = shadows;\n }\n return this;\n };\n /**\n * Show the element after it has been hidden.\n *\n * @function Highcharts.SVGElement#show\n *\n * @param {boolean} [inherit=false]\n * Set the visibility attribute to `inherit` rather than `visible`.\n * The difference is that an element with `visibility=\"visible\"`\n * will be visible even if the parent is hidden.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.show = function (inherit) {\n return this.attr({ visibility: inherit ? 'inherit' : 'visible' });\n };\n /**\n * WebKit and Batik have problems with a stroke-width of zero, so in this\n * case we remove the stroke attribute altogether. #1270, #1369, #3065,\n * #3072.\n *\n * @private\n * @function Highcharts.SVGElement#strokeSetter\n * @param {number|string|ColorType} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.strokeSetter = function (value, key, element) {\n this[key] = value;\n // Only apply the stroke attribute if the stroke width is defined and\n // larger than 0\n if (this.stroke && this['stroke-width']) {\n // Use prototype as instance may be overridden\n SVGElement.prototype.fillSetter.call(this, this.stroke, 'stroke', element);\n element.setAttribute('stroke-width', this['stroke-width']);\n this.hasStroke = true;\n }\n else if (key === 'stroke-width' && value === 0 && this.hasStroke) {\n element.removeAttribute('stroke');\n this.hasStroke = false;\n }\n else if (this.renderer.styledMode && this['stroke-width']) {\n element.setAttribute('stroke-width', this['stroke-width']);\n this.hasStroke = true;\n }\n };\n /**\n * Get the computed stroke width in pixel values. This is used extensively\n * when drawing shapes to ensure the shapes are rendered crisp and\n * positioned correctly relative to each other. Using\n * `shape-rendering: crispEdges` leaves us less control over positioning,\n * for example when we want to stack columns next to each other, or position\n * things pixel-perfectly within the plot box.\n *\n * The common pattern when placing a shape is:\n * - Create the SVGElement and add it to the DOM. In styled mode, it will\n * now receive a stroke width from the style sheet. In classic mode we\n * will add the `stroke-width` attribute.\n * - Read the computed `elem.strokeWidth()`.\n * - Place it based on the stroke width.\n *\n * @function Highcharts.SVGElement#strokeWidth\n *\n * @return {number}\n * The stroke width in pixels. Even if the given stroke widtch (in CSS or by\n * attributes) is based on `em` or other units, the pixel size is returned.\n */\n SVGElement.prototype.strokeWidth = function () {\n // In non-styled mode, read the stroke width as set by .attr\n if (!this.renderer.styledMode) {\n return this['stroke-width'] || 0;\n }\n // In styled mode, read computed stroke width\n var val = this.getStyle('stroke-width');\n var ret = 0,\n dummy;\n // Read pixel values directly\n if (val.indexOf('px') === val.length - 2) {\n ret = pInt(val);\n // Other values like em, pt etc need to be measured\n }\n else if (val !== '') {\n dummy = doc.createElementNS(SVG_NS, 'rect');\n attr(dummy, {\n width: val,\n 'stroke-width': 0\n });\n this.element.parentNode.appendChild(dummy);\n ret = dummy.getBBox().width;\n dummy.parentNode.removeChild(dummy);\n }\n return ret;\n };\n /**\n * If one of the symbol size affecting parameters are changed,\n * check all the others only once for each call to an element's\n * .attr() method\n *\n * @private\n * @function Highcharts.SVGElement#symbolAttr\n *\n * @param {Highcharts.SVGAttributes} hash\n * The attributes to set.\n */\n SVGElement.prototype.symbolAttr = function (hash) {\n var wrapper = this;\n [\n 'x',\n 'y',\n 'r',\n 'start',\n 'end',\n 'width',\n 'height',\n 'innerR',\n 'anchorX',\n 'anchorY',\n 'clockwise'\n ].forEach(function (key) {\n wrapper[key] = pick(hash[key], wrapper[key]);\n });\n wrapper.attr({\n d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)\n });\n };\n /**\n * @private\n * @function Highcharts.SVGElement#textSetter\n * @param {string} value\n */\n SVGElement.prototype.textSetter = function (value) {\n if (value !== this.textStr) {\n // Delete size caches when the text changes\n // delete this.bBox; // old code in series-label\n delete this.textPxLength;\n this.textStr = value;\n if (this.added) {\n this.renderer.buildText(this);\n }\n }\n };\n /**\n * @private\n * @function Highcharts.SVGElement#titleSetter\n * @param {string} value\n */\n SVGElement.prototype.titleSetter = function (value) {\n var el = this.element;\n var titleNode = el.getElementsByTagName('title')[0] ||\n doc.createElementNS(this.SVG_NS, 'title');\n // Move to first child\n if (el.insertBefore) {\n el.insertBefore(titleNode, el.firstChild);\n }\n else {\n el.appendChild(titleNode);\n }\n // Replace text content and escape markup\n titleNode.textContent =\n // #3276, #3895\n String(pick(value, ''))\n .replace(/<[^>]*>/g, '')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n };\n /**\n * Bring the element to the front. Alternatively, a new zIndex can be set.\n *\n * @sample highcharts/members/element-tofront/\n * Click an element to bring it to front\n *\n * @function Highcharts.SVGElement#toFront\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.toFront = function () {\n var element = this.element;\n element.parentNode.appendChild(element);\n return this;\n };\n /**\n * Move an object and its children by x and y values.\n *\n * @function Highcharts.SVGElement#translate\n *\n * @param {number} x\n * The x value.\n *\n * @param {number} y\n * The y value.\n *\n * @return {Highcharts.SVGElement}\n * Translated element.\n */\n SVGElement.prototype.translate = function (x, y) {\n return this.attr({\n translateX: x,\n translateY: y\n });\n };\n /**\n * Update the shadow elements with new attributes.\n *\n * @private\n * @function Highcharts.SVGElement#updateShadows\n *\n * @param {string} key\n * The attribute name.\n *\n * @param {number} value\n * The value of the attribute.\n *\n * @param {Function} setter\n * The setter function, inherited from the parent wrapper.\n */\n SVGElement.prototype.updateShadows = function (key, value, setter) {\n var shadows = this.shadows;\n if (shadows) {\n var i = shadows.length;\n while (i--) {\n setter.call(shadows[i], key === 'height' ?\n Math.max(value - (shadows[i].cutHeight || 0), 0) :\n key === 'd' ? this.d : value, key, shadows[i]);\n }\n }\n };\n /**\n * Update the transform attribute based on internal properties. Deals with\n * the custom `translateX`, `translateY`, `rotation`, `scaleX` and `scaleY`\n * attributes and updates the SVG `transform` attribute.\n *\n * @private\n * @function Highcharts.SVGElement#updateTransform\n */\n SVGElement.prototype.updateTransform = function () {\n var wrapper = this,\n scaleX = wrapper.scaleX,\n scaleY = wrapper.scaleY,\n inverted = wrapper.inverted,\n rotation = wrapper.rotation,\n matrix = wrapper.matrix,\n element = wrapper.element;\n var translateX = wrapper.translateX || 0,\n translateY = wrapper.translateY || 0;\n // Flipping affects translate as adjustment for flipping around the\n // group's axis\n if (inverted) {\n translateX += wrapper.width;\n translateY += wrapper.height;\n }\n // Apply translate. Nearly all transformed elements have translation,\n // so instead of checking for translate = 0, do it always (#1767,\n // #1846).\n var transform = ['translate(' + translateX + ',' + translateY + ')'];\n // apply matrix\n if (defined(matrix)) {\n transform.push('matrix(' + matrix.join(',') + ')');\n }\n // apply rotation\n if (inverted) {\n transform.push('rotate(90) scale(-1,1)');\n }\n else if (rotation) { // text rotation\n transform.push('rotate(' + rotation + ' ' +\n pick(this.rotationOriginX, element.getAttribute('x'), 0) +\n ' ' +\n pick(this.rotationOriginY, element.getAttribute('y') || 0) + ')');\n }\n // apply scale\n if (defined(scaleX) || defined(scaleY)) {\n transform.push('scale(' + pick(scaleX, 1) + ' ' + pick(scaleY, 1) + ')');\n }\n if (transform.length) {\n element.setAttribute('transform', transform.join(' '));\n }\n };\n /**\n * @private\n * @function Highcharts.SVGElement#visibilitySetter\n *\n * @param {string} value\n *\n * @param {string} key\n *\n * @param {Highcharts.SVGDOMElement} element\n *\n */\n SVGElement.prototype.visibilitySetter = function (value, key, element) {\n // IE9-11 doesn't handle visibilty:inherit well, so we remove the\n // attribute instead (#2881, #3909)\n if (value === 'inherit') {\n element.removeAttribute(key);\n }\n else if (this[key] !== value) { // #6747\n element.setAttribute(key, value);\n }\n this[key] = value;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#xGetter\n */\n SVGElement.prototype.xGetter = function (key) {\n if (this.element.nodeName === 'circle') {\n if (key === 'x') {\n key = 'cx';\n }\n else if (key === 'y') {\n key = 'cy';\n }\n }\n return this._defaultGetter(key);\n };\n /**\n * @private\n * @function Highcharts.SVGElement#zIndexSetter\n */\n SVGElement.prototype.zIndexSetter = function (value, key) {\n var renderer = this.renderer,\n parentGroup = this.parentGroup,\n parentWrapper = parentGroup || renderer,\n parentNode = parentWrapper.element || renderer.box,\n element = this.element,\n svgParent = parentNode === renderer.box;\n var childNodes,\n otherElement,\n otherZIndex,\n inserted = false,\n undefinedOtherZIndex,\n run = this.added,\n i;\n if (defined(value)) {\n // So we can read it for other elements in the group\n element.setAttribute('data-z-index', value);\n value = +value;\n if (this[key] === value) {\n // Only update when needed (#3865)\n run = false;\n }\n }\n else if (defined(this[key])) {\n element.removeAttribute('data-z-index');\n }\n this[key] = value;\n // Insert according to this and other elements' zIndex. Before .add() is\n // called, nothing is done. Then on add, or by later calls to\n // zIndexSetter, the node is placed on the right place in the DOM.\n if (run) {\n value = this.zIndex;\n if (value && parentGroup) {\n parentGroup.handleZ = true;\n }\n childNodes = parentNode.childNodes;\n for (i = childNodes.length - 1; i >= 0 && !inserted; i--) {\n otherElement = childNodes[i];\n otherZIndex = otherElement.getAttribute('data-z-index');\n undefinedOtherZIndex = !defined(otherZIndex);\n if (otherElement !== element) {\n if (\n // Negative zIndex versus no zIndex:\n // On all levels except the highest. If the parent is\n // <svg>, then we don't want to put items before <desc>\n // or <defs>\n value < 0 &&\n undefinedOtherZIndex &&\n !svgParent &&\n !i) {\n parentNode.insertBefore(element, childNodes[i]);\n inserted = true;\n }\n else if (\n // Insert after the first element with a lower zIndex\n pInt(otherZIndex) <= value ||\n // If negative zIndex, add this before first undefined\n // zIndex element\n (undefinedOtherZIndex &&\n (!defined(value) || value >= 0))) {\n parentNode.insertBefore(element, childNodes[i + 1] || null // null for oldIE export\n );\n inserted = true;\n }\n }\n }\n if (!inserted) {\n parentNode.insertBefore(element, childNodes[svgParent ? 3 : 0] || null // null for oldIE\n );\n inserted = true;\n }\n }\n return inserted;\n };\n return SVGElement;\n }());\n // Some shared setters and getters\n SVGElement.prototype['stroke-widthSetter'] = SVGElement.prototype.strokeSetter;\n SVGElement.prototype.yGetter = SVGElement.prototype.xGetter;\n SVGElement.prototype.matrixSetter =\n SVGElement.prototype.rotationOriginXSetter =\n SVGElement.prototype.rotationOriginYSetter =\n SVGElement.prototype.rotationSetter =\n SVGElement.prototype.scaleXSetter =\n SVGElement.prototype.scaleYSetter =\n SVGElement.prototype.translateXSetter =\n SVGElement.prototype.translateYSetter =\n SVGElement.prototype.verticalAlignSetter = function (value, key) {\n this[key] = value;\n this.doTransform = true;\n };\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Reference to the global SVGElement class as a workaround for a name conflict\n * in the Highcharts namespace.\n *\n * @global\n * @typedef {global.SVGElement} GlobalSVGElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGElement\n */\n /**\n * The horizontal alignment of an element.\n *\n * @typedef {\"center\"|\"left\"|\"right\"} Highcharts.AlignValue\n */\n /**\n * Options to align the element relative to the chart or another box.\n *\n * @interface Highcharts.AlignObject\n */ /**\n * Horizontal alignment. Can be one of `left`, `center` and `right`.\n *\n * @name Highcharts.AlignObject#align\n * @type {Highcharts.AlignValue|undefined}\n *\n * @default left\n */ /**\n * Vertical alignment. Can be one of `top`, `middle` and `bottom`.\n *\n * @name Highcharts.AlignObject#verticalAlign\n * @type {Highcharts.VerticalAlignValue|undefined}\n *\n * @default top\n */ /**\n * Horizontal pixel offset from alignment.\n *\n * @name Highcharts.AlignObject#x\n * @type {number|undefined}\n *\n * @default 0\n */ /**\n * Vertical pixel offset from alignment.\n *\n * @name Highcharts.AlignObject#y\n * @type {number|undefined}\n *\n * @default 0\n */ /**\n * Use the `transform` attribute with translateX and translateY custom\n * attributes to align this elements rather than `x` and `y` attributes.\n *\n * @name Highcharts.AlignObject#alignByTranslate\n * @type {boolean|undefined}\n *\n * @default false\n */\n /**\n * Bounding box of an element.\n *\n * @interface Highcharts.BBoxObject\n * @extends Highcharts.PositionObject\n */ /**\n * Height of the bounding box.\n *\n * @name Highcharts.BBoxObject#height\n * @type {number}\n */ /**\n * Width of the bounding box.\n *\n * @name Highcharts.BBoxObject#width\n * @type {number}\n */ /**\n * Horizontal position of the bounding box.\n *\n * @name Highcharts.BBoxObject#x\n * @type {number}\n */ /**\n * Vertical position of the bounding box.\n *\n * @name Highcharts.BBoxObject#y\n * @type {number}\n */\n /**\n * An object of key-value pairs for SVG attributes. Attributes in Highcharts\n * elements for the most parts correspond to SVG, but some are specific to\n * Highcharts, like `zIndex`, `rotation`, `rotationOriginX`,\n * `rotationOriginY`, `translateX`, `translateY`, `scaleX` and `scaleY`. SVG\n * attributes containing a hyphen are _not_ camel-cased, they should be\n * quoted to preserve the hyphen.\n *\n * @example\n * {\n * 'stroke': '#ff0000', // basic\n * 'stroke-width': 2, // hyphenated\n * 'rotation': 45 // custom\n * 'd': ['M', 10, 10, 'L', 30, 30, 'z'] // path definition, note format\n * }\n *\n * @interface Highcharts.SVGAttributes\n */ /**\n * @name Highcharts.SVGAttributes#[key:string]\n * @type {*}\n */ /**\n * @name Highcharts.SVGAttributes#d\n * @type {string|Highcharts.SVGPathArray|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#fill\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#inverted\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#matrix\n * @type {Array<number>|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotation\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotationOriginX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotationOriginY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#scaleX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#scaleY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#stroke\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#style\n * @type {string|Highcharts.CSSObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#translateX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#translateY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#zIndex\n * @type {number|undefined}\n */\n /**\n * An SVG DOM element. The type is a reference to the regular SVGElement in the\n * global scope.\n *\n * @typedef {globals.GlobalSVGElement} Highcharts.SVGDOMElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGElement\n */\n /**\n * The vertical alignment of an element.\n *\n * @typedef {\"bottom\"|\"middle\"|\"top\"} Highcharts.VerticalAlignValue\n */\n ''; // keeps doclets above in JS file\n\n return SVGElement;\n });\n _registerModule(_modules, 'Core/Renderer/RendererRegistry.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n var RendererRegistry;\n (function (RendererRegistry) {\n /* *\n *\n * Constants\n *\n * */\n RendererRegistry.rendererTypes = {};\n /* *\n *\n * Variables\n *\n * */\n var defaultRenderer;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Gets a registered renderer class. If no renderer type is provided or the\n * requested renderer was not founded, the default renderer is returned.\n *\n * @param {string} [rendererType]\n * Renderer type or the default renderer.\n *\n * @return {Highcharts.Class<Highcharts.SVGRenderer>}\n * Returns the requested renderer class or the default renderer class.\n */\n function getRendererType(rendererType) {\n if (rendererType === void 0) { rendererType = defaultRenderer; }\n return (RendererRegistry.rendererTypes[rendererType] || RendererRegistry.rendererTypes[defaultRenderer]);\n }\n RendererRegistry.getRendererType = getRendererType;\n /**\n * Register a renderer class.\n *\n * @param {string} rendererType\n * Renderer type to register.\n *\n * @param {Highcharts.Class<Highcharts.SVGRenderer>} rendererClass\n * Returns the requested renderer class or the default renderer class.\n *\n * @param {boolean} setAsDefault\n * Sets the renderer class as the default renderer.\n */\n function registerRendererType(rendererType, rendererClass, setAsDefault) {\n RendererRegistry.rendererTypes[rendererType] = rendererClass;\n if (!defaultRenderer || setAsDefault) {\n defaultRenderer = rendererType;\n H.Renderer = rendererClass; // compatibility\n }\n }\n RendererRegistry.registerRendererType = registerRendererType;\n })(RendererRegistry || (RendererRegistry = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return RendererRegistry;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGLabel.js', [_modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var defined = U.defined,\n extend = U.extend,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n removeEvent = U.removeEvent;\n /* *\n *\n * Class\n *\n * */\n /**\n * SVG label to render text.\n * @private\n * @class\n * @name Highcharts.SVGLabel\n * @augments Highcharts.SVGElement\n */\n var SVGLabel = /** @class */ (function (_super) {\n __extends(SVGLabel, _super);\n /* *\n *\n * Constructor\n *\n * */\n function SVGLabel(renderer, str, x, y, shape, anchorX, anchorY, useHTML, baseline, className) {\n var _this = _super.call(this) || this;\n _this.paddingLeftSetter = _this.paddingSetter;\n _this.paddingRightSetter = _this.paddingSetter;\n _this.init(renderer, 'g');\n _this.textStr = str;\n _this.x = x;\n _this.y = y;\n _this.anchorX = anchorX;\n _this.anchorY = anchorY;\n _this.baseline = baseline;\n _this.className = className;\n _this.addClass(className === 'button' ?\n 'highcharts-no-tooltip' :\n 'highcharts-label');\n if (className) {\n _this.addClass('highcharts-' + className);\n }\n // Create the text element. An undefined text content prevents redundant\n // box calculation (#16121)\n _this.text = renderer.text(void 0, 0, 0, useHTML).attr({ zIndex: 1 });\n // Validate the shape argument\n var hasBGImage;\n if (typeof shape === 'string') {\n hasBGImage = /^url\\((.*?)\\)$/.test(shape);\n if (hasBGImage || _this.renderer.symbols[shape]) {\n _this.symbolKey = shape;\n }\n }\n _this.bBox = SVGLabel.emptyBBox;\n _this.padding = 3;\n _this.baselineOffset = 0;\n _this.needsBox = renderer.styledMode || hasBGImage;\n _this.deferredAttr = {};\n _this.alignFactor = 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n SVGLabel.prototype.alignSetter = function (value) {\n var alignFactor = ({\n left: 0,\n center: 0.5,\n right: 1\n })[value];\n if (alignFactor !== this.alignFactor) {\n this.alignFactor = alignFactor;\n // Bounding box exists, means we're dynamically changing\n if (this.bBox && isNumber(this.xSetting)) {\n this.attr({ x: this.xSetting }); // #5134\n }\n }\n };\n SVGLabel.prototype.anchorXSetter = function (value, key) {\n this.anchorX = value;\n this.boxAttr(key, Math.round(value) - this.getCrispAdjust() - this.xSetting);\n };\n SVGLabel.prototype.anchorYSetter = function (value, key) {\n this.anchorY = value;\n this.boxAttr(key, value - this.ySetting);\n };\n /*\n * Set a box attribute, or defer it if the box is not yet created\n */\n SVGLabel.prototype.boxAttr = function (key, value) {\n if (this.box) {\n this.box.attr(key, value);\n }\n else {\n this.deferredAttr[key] = value;\n }\n };\n /*\n * Pick up some properties and apply them to the text instead of the\n * wrapper.\n */\n SVGLabel.prototype.css = function (styles) {\n if (styles) {\n var textStyles_1 = {};\n // Create a copy to avoid altering the original object\n // (#537)\n styles = merge(styles);\n SVGLabel.textProps.forEach(function (prop) {\n if (typeof styles[prop] !== 'undefined') {\n textStyles_1[prop] = styles[prop];\n delete styles[prop];\n }\n });\n this.text.css(textStyles_1);\n var isWidth = 'width' in textStyles_1, isFontStyle = ('fontSize' in textStyles_1 ||\n 'fontWeight' in textStyles_1);\n // Update existing text, box (#9400, #12163)\n if (isFontStyle) {\n this.updateTextPadding();\n }\n else if (isWidth) {\n this.updateBoxSize();\n }\n }\n return SVGElement.prototype.css.call(this, styles);\n };\n /*\n * Destroy and release memory.\n */\n SVGLabel.prototype.destroy = function () {\n // Added by button implementation\n removeEvent(this.element, 'mouseenter');\n removeEvent(this.element, 'mouseleave');\n if (this.text) {\n this.text.destroy();\n }\n if (this.box) {\n this.box = this.box.destroy();\n }\n // Call base implementation to destroy the rest\n SVGElement.prototype.destroy.call(this);\n return void 0;\n };\n SVGLabel.prototype.fillSetter = function (value, key) {\n if (value) {\n this.needsBox = true;\n }\n // for animation getter (#6776)\n this.fill = value;\n this.boxAttr(key, value);\n };\n /*\n * Return the bounding box of the box, not the group.\n */\n SVGLabel.prototype.getBBox = function () {\n // If we have a text string and the DOM bBox was 0, it typically means\n // that the label was first rendered hidden, so we need to update the\n // bBox (#15246)\n if (this.textStr && this.bBox.width === 0 && this.bBox.height === 0) {\n this.updateBoxSize();\n }\n var padding = this.padding;\n var paddingLeft = pick(this.paddingLeft,\n padding);\n return {\n width: this.width,\n height: this.height,\n x: this.bBox.x - paddingLeft,\n y: this.bBox.y - padding\n };\n };\n SVGLabel.prototype.getCrispAdjust = function () {\n return this.renderer.styledMode && this.box ?\n this.box.strokeWidth() % 2 / 2 :\n (this['stroke-width'] ? parseInt(this['stroke-width'], 10) : 0) % 2 / 2;\n };\n SVGLabel.prototype.heightSetter = function (value) {\n this.heightSetting = value;\n };\n /*\n * After the text element is added, get the desired size of the border\n * box and add it before the text in the DOM.\n */\n SVGLabel.prototype.onAdd = function () {\n var str = this.textStr;\n this.text.add(this);\n this.attr({\n // Alignment is available now (#3295, 0 not rendered if given\n // as a value)\n text: (defined(str) ? str : ''),\n x: this.x,\n y: this.y\n });\n if (this.box && defined(this.anchorX)) {\n this.attr({\n anchorX: this.anchorX,\n anchorY: this.anchorY\n });\n }\n };\n SVGLabel.prototype.paddingSetter = function (value, key) {\n if (!isNumber(value)) {\n this[key] = void 0;\n }\n else if (value !== this[key]) {\n this[key] = value;\n this.updateTextPadding();\n }\n };\n SVGLabel.prototype.rSetter = function (value, key) {\n this.boxAttr(key, value);\n };\n SVGLabel.prototype.shadow = function (b) {\n if (b && !this.renderer.styledMode) {\n this.updateBoxSize();\n if (this.box) {\n this.box.shadow(b);\n }\n }\n return this;\n };\n SVGLabel.prototype.strokeSetter = function (value, key) {\n // for animation getter (#6776)\n this.stroke = value;\n this.boxAttr(key, value);\n };\n SVGLabel.prototype['stroke-widthSetter'] = function (value, key) {\n if (value) {\n this.needsBox = true;\n }\n this['stroke-width'] = value;\n this.boxAttr(key, value);\n };\n SVGLabel.prototype['text-alignSetter'] = function (value) {\n this.textAlign = value;\n };\n SVGLabel.prototype.textSetter = function (text) {\n if (typeof text !== 'undefined') {\n // Must use .attr to ensure transforms are done (#10009)\n this.text.attr({ text: text });\n }\n this.updateTextPadding();\n };\n /*\n * This function runs after the label is added to the DOM (when the bounding\n * box is available), and after the text of the label is updated to detect\n * the new bounding box and reflect it in the border box.\n */\n SVGLabel.prototype.updateBoxSize = function () {\n var style = this.text.element.style,\n attribs = {},\n padding = this.padding, \n // #12165 error when width is null (auto)\n // #12163 when fontweight: bold, recalculate bBox withot cache\n // #3295 && 3514 box failure when string equals 0\n bBox = this.bBox = (((!isNumber(this.widthSetting) ||\n !isNumber(this.heightSetting) ||\n this.textAlign) && defined(this.text.textStr)) ?\n this.text.getBBox() :\n SVGLabel.emptyBBox);\n var crispAdjust;\n this.width = this.getPaddedWidth();\n this.height = (this.heightSetting || bBox.height || 0) + 2 * padding;\n var metrics = this.renderer.fontMetrics(style && style.fontSize,\n this.text);\n // Update the label-scoped y offset. Math.min because of inline\n // style (#9400)\n this.baselineOffset = padding + Math.min(\n // When applicable, use the font size of the first line (#15707)\n (this.text.firstLineMetrics || metrics).b, \n // When the height is 0, there is no bBox, so go with the font\n // metrics. Highmaps CSS demos.\n bBox.height || Infinity);\n // #15491: Vertical centering\n if (this.heightSetting) {\n this.baselineOffset += (this.heightSetting - metrics.h) / 2;\n }\n if (this.needsBox) {\n // Create the border box if it is not already present\n if (!this.box) {\n // Symbol definition exists (#5324)\n var box = this.box = this.symbolKey ?\n this.renderer.symbol(this.symbolKey) :\n this.renderer.rect();\n box.addClass(// Don't use label className for buttons\n (this.className === 'button' ?\n '' : 'highcharts-label-box') +\n (this.className ?\n ' highcharts-' + this.className + '-box' : ''));\n box.add(this);\n }\n crispAdjust = this.getCrispAdjust();\n attribs.x = crispAdjust;\n attribs.y = ((this.baseline ? -this.baselineOffset : 0) + crispAdjust);\n // Apply the box attributes\n attribs.width = Math.round(this.width);\n attribs.height = Math.round(this.height);\n this.box.attr(extend(attribs, this.deferredAttr));\n this.deferredAttr = {};\n }\n };\n /*\n * This function runs after setting text or padding, but only if padding\n * is changed.\n */\n SVGLabel.prototype.updateTextPadding = function () {\n var text = this.text;\n this.updateBoxSize();\n // Determine y based on the baseline\n var textY = this.baseline ? 0 : this.baselineOffset;\n var textX = pick(this.paddingLeft,\n this.padding);\n // compensate for alignment\n if (defined(this.widthSetting) &&\n this.bBox &&\n (this.textAlign === 'center' || this.textAlign === 'right')) {\n textX += { center: 0.5, right: 1 }[this.textAlign] * (this.widthSetting - this.bBox.width);\n }\n // update if anything changed\n if (textX !== text.x || textY !== text.y) {\n text.attr('x', textX);\n // #8159 - prevent misplaced data labels in treemap\n // (useHTML: true)\n if (text.hasBoxWidthChanged) {\n this.bBox = text.getBBox(true);\n }\n if (typeof textY !== 'undefined') {\n text.attr('y', textY);\n }\n }\n // record current values\n text.x = textX;\n text.y = textY;\n };\n SVGLabel.prototype.widthSetter = function (value) {\n // width:auto => null\n this.widthSetting = isNumber(value) ? value : void 0;\n };\n SVGLabel.prototype.getPaddedWidth = function () {\n var padding = this.padding;\n var paddingLeft = pick(this.paddingLeft,\n padding);\n var paddingRight = pick(this.paddingRight,\n padding);\n return ((this.widthSetting || this.bBox.width || 0) +\n paddingLeft +\n paddingRight);\n };\n SVGLabel.prototype.xSetter = function (value) {\n this.x = value; // for animation getter\n if (this.alignFactor) {\n value -= this.alignFactor * this.getPaddedWidth();\n // Force animation even when setting to the same value (#7898)\n this['forceAnimate:x'] = true;\n }\n this.xSetting = Math.round(value);\n this.attr('translateX', this.xSetting);\n };\n SVGLabel.prototype.ySetter = function (value) {\n this.ySetting = this.y = Math.round(value);\n this.attr('translateY', this.ySetting);\n };\n /* *\n *\n * Static Properties\n *\n * */\n SVGLabel.emptyBBox = {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n /**\n * For labels, these CSS properties are applied to the `text` node directly.\n *\n * @private\n * @name Highcharts.SVGLabel#textProps\n * @type {Array<string>}\n */\n SVGLabel.textProps = [\n 'color', 'direction', 'fontFamily', 'fontSize', 'fontStyle',\n 'fontWeight', 'lineHeight', 'textAlign', 'textDecoration',\n 'textOutline', 'textOverflow', 'width'\n ];\n return SVGLabel;\n }(SVGElement));\n /* *\n *\n * Default Export\n *\n * */\n\n return SVGLabel;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/Symbols.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defined = U.defined,\n isNumber = U.isNumber,\n pick = U.pick;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable require-jsdoc, valid-jsdoc */\n function arc(x, y, w, h, options) {\n var arc = [];\n if (options) {\n var start = options.start || 0,\n rx = pick(options.r,\n w),\n ry = pick(options.r,\n h || w),\n proximity = 0.001,\n fullCircle = (Math.abs((options.end || 0) - start - 2 * Math.PI) <\n proximity), \n // Substract a small number to prevent cos and sin of start\n // and end from becoming equal on 360 arcs (related: #1561)\n end = (options.end || 0) - proximity,\n innerRadius = options.innerR,\n open_1 = pick(options.open,\n fullCircle),\n cosStart = Math.cos(start),\n sinStart = Math.sin(start),\n cosEnd = Math.cos(end),\n sinEnd = Math.sin(end), \n // Proximity takes care of rounding errors around PI (#6971)\n longArc = pick(options.longArc,\n end - start - Math.PI < proximity ? 0 : 1);\n arc.push([\n 'M',\n x + rx * cosStart,\n y + ry * sinStart\n ], [\n 'A',\n rx,\n ry,\n 0,\n longArc,\n pick(options.clockwise, 1),\n x + rx * cosEnd,\n y + ry * sinEnd\n ]);\n if (defined(innerRadius)) {\n arc.push(open_1 ?\n [\n 'M',\n x + innerRadius * cosEnd,\n y + innerRadius * sinEnd\n ] : [\n 'L',\n x + innerRadius * cosEnd,\n y + innerRadius * sinEnd\n ], [\n 'A',\n innerRadius,\n innerRadius,\n 0,\n longArc,\n // Clockwise - opposite to the outer arc clockwise\n defined(options.clockwise) ? 1 - options.clockwise : 0,\n x + innerRadius * cosStart,\n y + innerRadius * sinStart\n ]);\n }\n if (!open_1) {\n arc.push(['Z']);\n }\n }\n return arc;\n }\n /**\n * Callout shape used for default tooltips, also used for rounded\n * rectangles in VML\n */\n function callout(x, y, w, h, options) {\n var arrowLength = 6,\n halfDistance = 6,\n r = Math.min((options && options.r) || 0,\n w,\n h),\n safeDistance = r + halfDistance,\n anchorX = options && options.anchorX,\n anchorY = options && options.anchorY || 0;\n var path = roundedRect(x,\n y,\n w,\n h, { r: r });\n if (!isNumber(anchorX)) {\n return path;\n }\n // Anchor on right side\n if (x + anchorX >= w) {\n // Chevron\n if (anchorY > y + safeDistance &&\n anchorY < y + h - safeDistance) {\n path.splice(3, 1, ['L', x + w, anchorY - halfDistance], ['L', x + w + arrowLength, anchorY], ['L', x + w, anchorY + halfDistance], ['L', x + w, y + h - r]);\n // Simple connector\n }\n else {\n path.splice(3, 1, ['L', x + w, h / 2], ['L', anchorX, anchorY], ['L', x + w, h / 2], ['L', x + w, y + h - r]);\n }\n // Anchor on left side\n }\n else if (x + anchorX <= 0) {\n // Chevron\n if (anchorY > y + safeDistance &&\n anchorY < y + h - safeDistance) {\n path.splice(7, 1, ['L', x, anchorY + halfDistance], ['L', x - arrowLength, anchorY], ['L', x, anchorY - halfDistance], ['L', x, y + r]);\n // Simple connector\n }\n else {\n path.splice(7, 1, ['L', x, h / 2], ['L', anchorX, anchorY], ['L', x, h / 2], ['L', x, y + r]);\n }\n }\n else if ( // replace bottom\n anchorY &&\n anchorY > h &&\n anchorX > x + safeDistance &&\n anchorX < x + w - safeDistance) {\n path.splice(5, 1, ['L', anchorX + halfDistance, y + h], ['L', anchorX, y + h + arrowLength], ['L', anchorX - halfDistance, y + h], ['L', x + r, y + h]);\n }\n else if ( // replace top\n anchorY &&\n anchorY < 0 &&\n anchorX > x + safeDistance &&\n anchorX < x + w - safeDistance) {\n path.splice(1, 1, ['L', anchorX - halfDistance, y], ['L', anchorX, y - arrowLength], ['L', anchorX + halfDistance, y], ['L', w - r, y]);\n }\n return path;\n }\n function circle(x, y, w, h) {\n // Return a full arc\n return arc(x + w / 2, y + h / 2, w / 2, h / 2, {\n start: Math.PI * 0.5,\n end: Math.PI * 2.5,\n open: false\n });\n }\n function diamond(x, y, w, h) {\n return [\n ['M', x + w / 2, y],\n ['L', x + w, y + h / 2],\n ['L', x + w / 2, y + h],\n ['L', x, y + h / 2],\n ['Z']\n ];\n }\n // #15291\n function rect(x, y, w, h, options) {\n if (options && options.r) {\n return roundedRect(x, y, w, h, options);\n }\n return [\n ['M', x, y],\n ['L', x + w, y],\n ['L', x + w, y + h],\n ['L', x, y + h],\n ['Z']\n ];\n }\n function roundedRect(x, y, w, h, options) {\n var r = (options && options.r) || 0;\n return [\n ['M', x + r, y],\n ['L', x + w - r, y],\n ['C', x + w, y, x + w, y, x + w, y + r],\n ['L', x + w, y + h - r],\n ['C', x + w, y + h, x + w, y + h, x + w - r, y + h],\n ['L', x + r, y + h],\n ['C', x, y + h, x, y + h, x, y + h - r],\n ['L', x, y + r],\n ['C', x, y, x, y, x + r, y] // top-left corner\n ];\n }\n function triangle(x, y, w, h) {\n return [\n ['M', x + w / 2, y],\n ['L', x + w, y + h],\n ['L', x, y + h],\n ['Z']\n ];\n }\n function triangleDown(x, y, w, h) {\n return [\n ['M', x, y],\n ['L', x + w, y],\n ['L', x + w / 2, y + h],\n ['Z']\n ];\n }\n var Symbols = {\n arc: arc,\n callout: callout,\n circle: circle,\n diamond: diamond,\n rect: rect,\n roundedRect: roundedRect,\n square: rect,\n triangle: triangle,\n 'triangle-down': triangleDown\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return Symbols;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/TextBuilder.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (AST, H, U) {\n /* *\n *\n * (c) 2010-2020 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var doc = H.doc,\n SVG_NS = H.SVG_NS,\n win = H.win;\n var attr = U.attr,\n isString = U.isString,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * SVG Text Builder\n * @private\n * @class\n * @name Highcharts.TextBuilder\n */\n var TextBuilder = /** @class */ (function () {\n function TextBuilder(svgElement) {\n var textStyles = svgElement.styles;\n this.renderer = svgElement.renderer;\n this.svgElement = svgElement;\n this.width = svgElement.textWidth;\n this.textLineHeight = textStyles && textStyles.lineHeight;\n this.textOutline = textStyles && textStyles.textOutline;\n this.ellipsis = Boolean(textStyles && textStyles.textOverflow === 'ellipsis');\n this.noWrap = Boolean(textStyles && textStyles.whiteSpace === 'nowrap');\n this.fontSize = textStyles && textStyles.fontSize;\n }\n /**\n * Build an SVG representation of the pseudo HTML given in the object's\n * svgElement.\n *\n * @private\n *\n * @return {void}.\n */\n TextBuilder.prototype.buildSVG = function () {\n var wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr = pick(wrapper.textStr, '').toString(), hasMarkup = textStr.indexOf('<') !== -1, childNodes = textNode.childNodes, tempParent = this.width && !wrapper.added && renderer.box, regexMatchBreaks = /<br.*?>/g, \n // The buildText code is quite heavy, so if we're not changing\n // something that affects the text, skip it (#6113).\n textCache = [\n textStr,\n this.ellipsis,\n this.noWrap,\n this.textLineHeight,\n this.textOutline,\n this.fontSize,\n this.width\n ].join(',');\n if (textCache === wrapper.textCache) {\n return;\n }\n wrapper.textCache = textCache;\n delete wrapper.actualWidth;\n // Remove old text\n for (var i = childNodes.length; i--;) {\n textNode.removeChild(childNodes[i]);\n }\n // Simple strings, add text directly and return\n if (!hasMarkup &&\n !this.ellipsis &&\n !this.width &&\n (textStr.indexOf(' ') === -1 ||\n (this.noWrap && !regexMatchBreaks.test(textStr)))) {\n textNode.appendChild(doc.createTextNode(this.unescapeEntities(textStr)));\n // Complex strings, add more logic\n }\n else if (textStr !== '') {\n if (tempParent) {\n // attach it to the DOM to read offset width\n tempParent.appendChild(textNode);\n }\n // Step 1. Parse the markup safely and directly into a tree\n // structure.\n var ast = new AST(textStr);\n // Step 2. Do as many as we can of the modifications to the tree\n // structure before it is added to the DOM\n this.modifyTree(ast.nodes);\n ast.addToDOM(wrapper.element);\n // Step 3. Some modifications can't be done until the structure is\n // in the DOM, because we need to read computed metrics.\n this.modifyDOM();\n // Add title if an ellipsis was added\n if (this.ellipsis &&\n (textNode.textContent || '').indexOf('\\u2026') !== -1) {\n wrapper.attr('title', this.unescapeEntities(wrapper.textStr || '', ['<', '>']) // #7179\n );\n }\n if (tempParent) {\n tempParent.removeChild(textNode);\n }\n }\n // Apply the text outline\n if (isString(this.textOutline) && wrapper.applyTextOutline) {\n wrapper.applyTextOutline(this.textOutline);\n }\n };\n /**\n * Modify the DOM of the generated SVG structure. This function only does\n * operations that cannot be done until the elements are attached to the\n * DOM, like doing layout based on rendered metrics of the added elements.\n *\n * @private\n *\n */\n TextBuilder.prototype.modifyDOM = function () {\n var _this = this;\n var wrapper = this.svgElement;\n var x = attr(wrapper.element, 'x');\n wrapper.firstLineMetrics = void 0;\n // Remove empty tspans (including breaks) from the beginning because\n // SVG's getBBox doesn't count empty lines. The use case is tooltip\n // where the header is empty. By doing this in the DOM rather than in\n // the AST, we can inspect the textContent directly and don't have to\n // recurse down to look for valid content.\n var firstChild;\n while ((firstChild = wrapper.element.firstChild)) {\n if (/^[\\s\\u200B]*$/.test(firstChild.textContent || ' ')) {\n wrapper.element.removeChild(firstChild);\n }\n else {\n break;\n }\n }\n // Modify hard line breaks by applying the rendered line height\n [].forEach.call(wrapper.element.querySelectorAll('tspan.highcharts-br'), function (br, i) {\n if (br.nextSibling && br.previousSibling) { // #5261\n if (i === 0 && br.previousSibling.nodeType === 1) {\n wrapper.firstLineMetrics = wrapper.renderer\n .fontMetrics(void 0, br.previousSibling);\n }\n attr(br, {\n // Since the break is inserted in front of the next\n // line, we need to use the next sibling for the line\n // height\n dy: _this.getLineHeight(br.nextSibling),\n x: x\n });\n }\n });\n // Constrain the line width, either by ellipsis or wrapping\n var width = this.width || 0;\n if (!width) {\n return;\n }\n // Insert soft line breaks into each text node\n var modifyTextNode = function (textNode,\n parentElement) {\n var text = textNode.textContent || '';\n var words = text\n .replace(/([^\\^])-/g, '$1- ') // Split on hyphens\n // .trim()\n .split(' '); // #1273\n var hasWhiteSpace = !_this.noWrap && (words.length > 1 || wrapper.element.childNodes.length > 1);\n var dy = _this.getLineHeight(parentElement);\n var lineNo = 0;\n var startAt = wrapper.actualWidth;\n if (_this.ellipsis) {\n if (text) {\n _this.truncate(textNode, text, void 0, 0, \n // Target width\n Math.max(0, \n // Substract the font face to make room for the\n // ellipsis itself\n width - parseInt(_this.fontSize || 12, 10)), \n // Build the text to test for\n function (text, currentIndex) {\n return text.substring(0, currentIndex) + '\\u2026';\n });\n }\n }\n else if (hasWhiteSpace) {\n var lines = [];\n // Remove preceding siblings in order to make the text length\n // calculation correct in the truncate function\n var precedingSiblings = [];\n while (parentElement.firstChild &&\n parentElement.firstChild !== textNode) {\n precedingSiblings.push(parentElement.firstChild);\n parentElement.removeChild(parentElement.firstChild);\n }\n while (words.length) {\n // Apply the previous line\n if (words.length && !_this.noWrap && lineNo > 0) {\n lines.push(textNode.textContent || '');\n textNode.textContent = words.join(' ')\n .replace(/- /g, '-');\n }\n // For each line, truncate the remaining\n // words into the line length.\n _this.truncate(textNode, void 0, words, lineNo === 0 ? (startAt || 0) : 0, width, \n // Build the text to test for\n function (t, currentIndex) {\n return words\n .slice(0, currentIndex)\n .join(' ')\n .replace(/- /g, '-');\n });\n startAt = wrapper.actualWidth;\n lineNo++;\n }\n // Reinsert the preceding child nodes\n precedingSiblings.forEach(function (childNode) {\n parentElement.insertBefore(childNode, textNode);\n });\n // Insert the previous lines before the original text node\n lines.forEach(function (line) {\n // Insert the line\n parentElement.insertBefore(doc.createTextNode(line), textNode);\n // Insert a break\n var br = doc.createElementNS(SVG_NS, 'tspan');\n br.textContent = '\\u200B'; // zero-width space\n attr(br, { dy: dy, x: x });\n parentElement.insertBefore(br, textNode);\n });\n }\n };\n // Recurse down the DOM tree and handle line breaks for each text node\n var modifyChildren = (function (node) {\n var childNodes = [].slice.call(node.childNodes);\n childNodes.forEach(function (childNode) {\n if (childNode.nodeType === win.Node.TEXT_NODE) {\n modifyTextNode(childNode, node);\n }\n else {\n // Reset word-wrap width readings after hard breaks\n if (childNode.className.baseVal\n .indexOf('highcharts-br') !== -1) {\n wrapper.actualWidth = 0;\n }\n // Recurse down to child node\n modifyChildren(childNode);\n }\n });\n });\n modifyChildren(wrapper.element);\n };\n /**\n * Get the rendered line height of a <text>, <tspan> or pure text node.\n *\n * @param {DOMElementType|Text} node The node to check for\n *\n * @return {number} The rendered line height\n */\n TextBuilder.prototype.getLineHeight = function (node) {\n var fontSizeStyle;\n // If the node is a text node, use its parent\n var element = (node.nodeType === win.Node.TEXT_NODE) ?\n node.parentElement :\n node;\n if (!this.renderer.styledMode) {\n fontSizeStyle =\n element && /(px|em)$/.test(element.style.fontSize) ?\n element.style.fontSize :\n (this.fontSize || this.renderer.style.fontSize || 12);\n }\n return this.textLineHeight ?\n parseInt(this.textLineHeight.toString(), 10) :\n this.renderer.fontMetrics(fontSizeStyle, element || this.svgElement.element).h;\n };\n /**\n * Transform a pseudo HTML AST node tree into an SVG structure. We do as\n * much heavy lifting as we can here, before doing the final processing in\n * the modifyDOM function. The original data is mutated.\n *\n * @private\n *\n * @param {ASTNode[]} nodes The AST nodes\n *\n */\n TextBuilder.prototype.modifyTree = function (nodes) {\n var _this = this;\n var modifyChild = function (node,\n i) {\n var _a = node.attributes,\n attributes = _a === void 0 ? {} : _a,\n children = node.children,\n tagName = node.tagName,\n styledMode = _this.renderer.styledMode;\n // Apply styling to text tags\n if (tagName === 'b' || tagName === 'strong') {\n if (styledMode) {\n attributes['class'] = 'highcharts-strong'; // eslint-disable-line dot-notation\n }\n else {\n attributes.style = ('font-weight:bold;' + (attributes.style || ''));\n }\n }\n else if (tagName === 'i' || tagName === 'em') {\n if (styledMode) {\n attributes['class'] = 'highcharts-emphasized'; // eslint-disable-line dot-notation\n }\n else {\n attributes.style = ('font-style:italic;' + (attributes.style || ''));\n }\n }\n // Modify attributes\n if (isString(attributes.style)) {\n attributes.style = attributes.style.replace(/(;| |^)color([ :])/, '$1fill$2');\n }\n // Handle breaks\n if (tagName === 'br') {\n attributes['class'] = 'highcharts-br'; // eslint-disable-line dot-notation\n node.textContent = '\\u200B'; // zero-width space\n // Trim whitespace off the beginning of new lines\n var nextNode = nodes[i + 1];\n if (nextNode && nextNode.textContent) {\n nextNode.textContent =\n nextNode.textContent.replace(/^ +/gm, '');\n }\n // If an anchor has direct text node children, the text is unable to\n // wrap because there is no `getSubStringLength` function on the\n // element. Therefore we need to wrap the child text node or nodes\n // in a tspan. #16173.\n }\n else if (tagName === 'a' &&\n children &&\n children.some(function (child) { return child.tagName === '#text'; })) {\n node.children = [{ children: children, tagName: 'tspan' }];\n }\n if (tagName !== '#text' && tagName !== 'a') {\n node.tagName = 'tspan';\n }\n node.attributes = attributes;\n // Recurse\n if (children) {\n children\n .filter(function (c) { return c.tagName !== '#text'; })\n .forEach(modifyChild);\n }\n };\n nodes.forEach(modifyChild);\n };\n /*\n * Truncate the text node contents to a given length. Used when the css\n * width is set. If the `textOverflow` is `ellipsis`, the text is truncated\n * character by character to the given length. If not, the text is\n * word-wrapped line by line.\n */\n TextBuilder.prototype.truncate = function (textNode, text, words, startAt, width, getString) {\n var svgElement = this.svgElement;\n var renderer = svgElement.renderer,\n rotation = svgElement.rotation;\n // Cache the lengths to avoid checking the same twice\n var lengths = [];\n // Word wrap can not be truncated to shorter than one word, ellipsis\n // text can be completely blank.\n var minIndex = words ? 1 : 0;\n var maxIndex = (text || words || '').length;\n var currentIndex = maxIndex;\n var str;\n var actualWidth;\n var getSubStringLength = function (charEnd,\n concatenatedEnd) {\n // charEnd is used when finding the character-by-character\n // break for ellipsis, concatenatedEnd is used for word-by-word\n // break for word wrapping.\n var end = concatenatedEnd || charEnd;\n var parentNode = textNode.parentNode;\n if (parentNode && typeof lengths[end] === 'undefined') {\n // Modern browsers\n if (parentNode.getSubStringLength) {\n // Fails with DOM exception on unit-tests/legend/members\n // of unknown reason. Desired width is 0, text content\n // is \"5\" and end is 1.\n try {\n lengths[end] = startAt +\n parentNode.getSubStringLength(0, words ? end + 1 : end);\n }\n catch (e) {\n '';\n }\n // Legacy\n }\n else if (renderer.getSpanWidth) { // #9058 jsdom\n textNode.textContent = getString(text || words, charEnd);\n lengths[end] = startAt +\n renderer.getSpanWidth(svgElement, textNode);\n }\n }\n return lengths[end];\n };\n svgElement.rotation = 0; // discard rotation when computing box\n actualWidth = getSubStringLength(textNode.textContent.length);\n if (startAt + actualWidth > width) {\n // Do a binary search for the index where to truncate the text\n while (minIndex <= maxIndex) {\n currentIndex = Math.ceil((minIndex + maxIndex) / 2);\n // When checking words for word-wrap, we need to build the\n // string and measure the subStringLength at the concatenated\n // word length.\n if (words) {\n str = getString(words, currentIndex);\n }\n actualWidth = getSubStringLength(currentIndex, str && str.length - 1);\n if (minIndex === maxIndex) {\n // Complete\n minIndex = maxIndex + 1;\n }\n else if (actualWidth > width) {\n // Too large. Set max index to current.\n maxIndex = currentIndex - 1;\n }\n else {\n // Within width. Set min index to current.\n minIndex = currentIndex;\n }\n }\n // If max index was 0 it means the shortest possible text was also\n // too large. For ellipsis that means only the ellipsis, while for\n // word wrap it means the whole first word.\n if (maxIndex === 0) {\n // Remove ellipsis\n textNode.textContent = '';\n // If the new text length is one less than the original, we don't\n // need the ellipsis\n }\n else if (!(text && maxIndex === text.length - 1)) {\n textNode.textContent = str || getString(text || words, currentIndex);\n }\n }\n // When doing line wrapping, prepare for the next line by removing the\n // items from this line.\n if (words) {\n words.splice(0, currentIndex);\n }\n svgElement.actualWidth = actualWidth;\n svgElement.rotation = rotation; // Apply rotation again.\n };\n /*\n * Un-escape HTML entities based on the public `renderer.escapes` list\n *\n * @private\n *\n * @param {string} inputStr The string to unescape\n * @param {Array<string>} [except] Exceptions\n *\n * @return {string} The processed string\n */\n TextBuilder.prototype.unescapeEntities = function (inputStr, except) {\n objectEach(this.renderer.escapes, function (value, key) {\n if (!except || except.indexOf(value) === -1) {\n inputStr = inputStr.toString().replace(new RegExp(value, 'g'), key);\n }\n });\n return inputStr;\n };\n return TextBuilder;\n }());\n\n return TextBuilder;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGLabel.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Renderer/SVG/TextBuilder.js'], _modules['Core/Utilities.js']], function (AST, Color, H, RendererRegistry, SVGElement, SVGLabel, Symbols, TextBuilder, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var charts = H.charts,\n deg2rad = H.deg2rad,\n doc = H.doc,\n isFirefox = H.isFirefox,\n isMS = H.isMS,\n isWebKit = H.isWebKit,\n noop = H.noop,\n SVG_NS = H.SVG_NS,\n symbolSizes = H.symbolSizes,\n win = H.win;\n var addEvent = U.addEvent,\n attr = U.attr,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n extend = U.extend,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isObject = U.isObject,\n isString = U.isString,\n merge = U.merge,\n pick = U.pick,\n pInt = U.pInt,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Variables\n *\n * */\n var hasInternalReferenceBug;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Allows direct access to the Highcharts rendering layer in order to draw\n * primitive shapes like circles, rectangles, paths or text directly on a chart,\n * or independent from any chart. The SVGRenderer represents a wrapper object\n * for SVG in modern browsers. Through the VMLRenderer, part of the `oldie.js`\n * module, it also brings vector graphics to IE <= 8.\n *\n * An existing chart's renderer can be accessed through {@link Chart.renderer}.\n * The renderer can also be used completely decoupled from a chart.\n *\n * @sample highcharts/members/renderer-on-chart\n * Annotating a chart programmatically.\n * @sample highcharts/members/renderer-basic\n * Independent SVG drawing.\n *\n * @example\n * // Use directly without a chart object.\n * let renderer = new Highcharts.Renderer(parentNode, 600, 400);\n *\n * @class\n * @name Highcharts.SVGRenderer\n *\n * @param {Highcharts.HTMLDOMElement} container\n * Where to put the SVG in the web page.\n *\n * @param {number} width\n * The width of the SVG.\n *\n * @param {number} height\n * The height of the SVG.\n *\n * @param {Highcharts.CSSObject} [style]\n * The box style, if not in styleMode\n *\n * @param {boolean} [forExport=false]\n * Whether the rendered content is intended for export.\n *\n * @param {boolean} [allowHTML=true]\n * Whether the renderer is allowed to include HTML text, which will be\n * projected on top of the SVG.\n *\n * @param {boolean} [styledMode=false]\n * Whether the renderer belongs to a chart that is in styled mode.\n * If it does, it will avoid setting presentational attributes in\n * some cases, but not when set explicitly through `.attr` and `.css`\n * etc.\n */\n var SVGRenderer = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function SVGRenderer(container, width, height, style, forExport, allowHTML, styledMode) {\n /* *\n *\n * Properties\n *\n * */\n this.alignedObjects = void 0;\n /**\n * The root `svg` node of the renderer.\n *\n * @name Highcharts.SVGRenderer#box\n * @type {Highcharts.SVGDOMElement}\n */\n this.box = void 0;\n /**\n * The wrapper for the root `svg` node of the renderer.\n *\n * @name Highcharts.SVGRenderer#boxWrapper\n * @type {Highcharts.SVGElement}\n */\n this.boxWrapper = void 0;\n this.cache = void 0;\n this.cacheKeys = void 0;\n this.chartIndex = void 0;\n /**\n * A pointer to the `defs` node of the root SVG.\n *\n * @name Highcharts.SVGRenderer#defs\n * @type {Highcharts.SVGElement}\n */\n this.defs = void 0;\n this.globalAnimation = void 0;\n this.gradients = void 0;\n this.height = void 0;\n this.imgCount = void 0;\n this.isSVG = void 0;\n this.style = void 0;\n /**\n * Page url used for internal references.\n *\n * @private\n * @name Highcharts.SVGRenderer#url\n * @type {string}\n */\n this.url = void 0;\n this.width = void 0;\n this.init(container, width, height, style, forExport, allowHTML, styledMode);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Initialize the SVGRenderer. Overridable initializer function that takes\n * the same parameters as the constructor.\n *\n * @function Highcharts.SVGRenderer#init\n *\n * @param {Highcharts.HTMLDOMElement} container\n * Where to put the SVG in the web page.\n *\n * @param {number} width\n * The width of the SVG.\n *\n * @param {number} height\n * The height of the SVG.\n *\n * @param {Highcharts.CSSObject} [style]\n * The box style, if not in styleMode\n *\n * @param {boolean} [forExport=false]\n * Whether the rendered content is intended for export.\n *\n * @param {boolean} [allowHTML=true]\n * Whether the renderer is allowed to include HTML text, which will be\n * projected on top of the SVG.\n *\n * @param {boolean} [styledMode=false]\n * Whether the renderer belongs to a chart that is in styled mode. If it\n * does, it will avoid setting presentational attributes in some cases, but\n * not when set explicitly through `.attr` and `.css` etc.\n */\n SVGRenderer.prototype.init = function (container, width, height, style, forExport, allowHTML, styledMode) {\n var renderer = this,\n boxWrapper = renderer\n .createElement('svg')\n .attr({\n version: '1.1',\n 'class': 'highcharts-root'\n }),\n element = boxWrapper.element;\n if (!styledMode) {\n boxWrapper.css(this.getStyle(style));\n }\n container.appendChild(element);\n // Always use ltr on the container, otherwise text-anchor will be\n // flipped and text appear outside labels, buttons, tooltip etc (#3482)\n attr(container, 'dir', 'ltr');\n // For browsers other than IE, add the namespace attribute (#1978)\n if (container.innerHTML.indexOf('xmlns') === -1) {\n attr(element, 'xmlns', this.SVG_NS);\n }\n // object properties\n renderer.isSVG = true;\n this.box = element;\n this.boxWrapper = boxWrapper;\n renderer.alignedObjects = [];\n this.url = this.getReferenceURL();\n // Add description\n var desc = this.createElement('desc').add();\n desc.element.appendChild(doc.createTextNode('Created with Highcharts 9.3.3'));\n renderer.defs = this.createElement('defs').add();\n renderer.allowHTML = allowHTML;\n renderer.forExport = forExport;\n renderer.styledMode = styledMode;\n renderer.gradients = {}; // Object where gradient SvgElements are stored\n renderer.cache = {}; // Cache for numerical bounding boxes\n renderer.cacheKeys = [];\n renderer.imgCount = 0;\n renderer.setSize(width, height, false);\n // Issue 110 workaround:\n // In Firefox, if a div is positioned by percentage, its pixel position\n // may land between pixels. The container itself doesn't display this,\n // but an SVG element inside this container will be drawn at subpixel\n // precision. In order to draw sharp lines, this must be compensated\n // for. This doesn't seem to work inside iframes though (like in\n // jsFiddle).\n var subPixelFix,\n rect;\n if (isFirefox && container.getBoundingClientRect) {\n subPixelFix = function () {\n css(container, { left: 0, top: 0 });\n rect = container.getBoundingClientRect();\n css(container, {\n left: (Math.ceil(rect.left) - rect.left) + 'px',\n top: (Math.ceil(rect.top) - rect.top) + 'px'\n });\n };\n // run the fix now\n subPixelFix();\n // run it on resize\n renderer.unSubPixelFix = addEvent(win, 'resize', subPixelFix);\n }\n };\n /**\n * General method for adding a definition to the SVG `defs` tag. Can be used\n * for gradients, fills, filters etc. Styled mode only. A hook for adding\n * general definitions to the SVG's defs tag. Definitions can be referenced\n * from the CSS by its `id`. Read more in\n * [gradients, shadows and patterns](https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns).\n * Styled mode only.\n *\n * @function Highcharts.SVGRenderer#definition\n *\n * @param {Highcharts.ASTNode} def\n * A serialized form of an SVG definition, including children.\n *\n * @return {Highcharts.SVGElement}\n * The inserted node.\n */\n SVGRenderer.prototype.definition = function (def) {\n var ast = new AST([def]);\n return ast.addToDOM(this.defs.element);\n };\n /**\n * Get the prefix needed for internal URL references to work in certain\n * cases. Some older browser versions had a bug where internal url\n * references in SVG attributes, on the form `url(#some-id)`, would fail if\n * a base tag was present in the page. There were also issues with\n * `history.pushState` related to this prefix.\n *\n * Related issues: #24, #672, #1070, #5244.\n *\n * The affected browsers are:\n * - Chrome <= 53 (May 2018)\n * - Firefox <= 51 (January 2017)\n * - Safari/Mac <= 12.1 (2018 or 2019)\n * - Safari/iOS <= 13\n *\n * @todo Remove this hack when time has passed. All the affected browsers\n * are evergreens, so it is increasingly unlikely that users are affected by\n * the bug.\n *\n * @return {string}\n * The prefix to use. An empty string for modern browsers.\n */\n SVGRenderer.prototype.getReferenceURL = function () {\n if ((isFirefox || isWebKit) &&\n doc.getElementsByTagName('base').length) {\n // Detect if a clip path is taking effect by performing a hit test\n // outside the clipped area. If the hit element is the rectangle\n // that was supposed to be clipped, the bug is present. This only\n // has to be performed once per page load, so we store the result\n // locally in the module.\n if (!defined(hasInternalReferenceBug)) {\n var id = uniqueKey();\n var ast = new AST([{\n tagName: 'svg',\n attributes: {\n width: 8,\n height: 8\n },\n children: [{\n tagName: 'defs',\n children: [{\n tagName: 'clipPath',\n attributes: {\n id: id\n },\n children: [{\n tagName: 'rect',\n attributes: {\n width: 4,\n height: 4\n }\n }]\n }]\n }, {\n tagName: 'rect',\n attributes: {\n id: 'hitme',\n width: 8,\n height: 8,\n 'clip-path': \"url(#\" + id + \")\",\n fill: 'rgba(0,0,0,0.001)'\n }\n }]\n }]);\n var svg = ast.addToDOM(doc.body);\n css(svg, {\n position: 'fixed',\n top: 0,\n left: 0,\n zIndex: 9e5\n });\n var hitElement = doc.elementFromPoint(6, 6);\n hasInternalReferenceBug = (hitElement && hitElement.id) === 'hitme';\n doc.body.removeChild(svg);\n }\n if (hasInternalReferenceBug) {\n return win.location.href\n .split('#')[0] // remove the hash\n .replace(/<[^>]*>/g, '') // wing cut HTML\n // escape parantheses and quotes\n .replace(/([\\('\\)])/g, '\\\\$1')\n // replace spaces (needed for Safari only)\n .replace(/ /g, '%20');\n }\n }\n return '';\n };\n /**\n * Get the global style setting for the renderer.\n *\n * @private\n * @function Highcharts.SVGRenderer#getStyle\n *\n * @param {Highcharts.CSSObject} style\n * Style settings.\n *\n * @return {Highcharts.CSSObject}\n * The style settings mixed with defaults.\n */\n SVGRenderer.prototype.getStyle = function (style) {\n this.style = extend({\n fontFamily: '\"Lucida Grande\", \"Lucida Sans Unicode\", ' +\n 'Arial, Helvetica, sans-serif',\n fontSize: '12px'\n }, style);\n return this.style;\n };\n /**\n * Apply the global style on the renderer, mixed with the default styles.\n *\n * @function Highcharts.SVGRenderer#setStyle\n *\n * @param {Highcharts.CSSObject} style\n * CSS to apply.\n */\n SVGRenderer.prototype.setStyle = function (style) {\n this.boxWrapper.css(this.getStyle(style));\n };\n /**\n * Detect whether the renderer is hidden. This happens when one of the\n * parent elements has `display: none`. Used internally to detect when we\n * needto render preliminarily in another div to get the text bounding boxes\n * right.\n *\n * @function Highcharts.SVGRenderer#isHidden\n *\n * @return {boolean}\n * True if it is hidden.\n */\n SVGRenderer.prototype.isHidden = function () {\n return !this.boxWrapper.getBBox().width;\n };\n /**\n * Destroys the renderer and its allocated members.\n *\n * @function Highcharts.SVGRenderer#destroy\n *\n * @return {null}\n * Pass through value.\n */\n SVGRenderer.prototype.destroy = function () {\n var renderer = this,\n rendererDefs = renderer.defs;\n renderer.box = null;\n renderer.boxWrapper = renderer.boxWrapper.destroy();\n // Call destroy on all gradient elements\n destroyObjectProperties(renderer.gradients || {});\n renderer.gradients = null;\n // Defs are null in VMLRenderer\n // Otherwise, destroy them here.\n if (rendererDefs) {\n renderer.defs = rendererDefs.destroy();\n }\n // Remove sub pixel fix handler (#982)\n if (renderer.unSubPixelFix) {\n renderer.unSubPixelFix();\n }\n renderer.alignedObjects = null;\n return null;\n };\n /**\n * Create a wrapper for an SVG element. Serves as a factory for\n * {@link SVGElement}, but this function is itself mostly called from\n * primitive factories like {@link SVGRenderer#path}, {@link\n * SVGRenderer#rect} or {@link SVGRenderer#text}.\n *\n * @function Highcharts.SVGRenderer#createElement\n *\n * @param {string} nodeName\n * The node name, for example `rect`, `g` etc.\n *\n * @return {Highcharts.SVGElement}\n * The generated SVGElement.\n */\n SVGRenderer.prototype.createElement = function (nodeName) {\n var wrapper = new this.Element();\n wrapper.init(this, nodeName);\n return wrapper;\n };\n /**\n * Get converted radial gradient attributes according to the radial\n * reference. Used internally from the {@link SVGElement#colorGradient}\n * function.\n *\n * @private\n * @function Highcharts.SVGRenderer#getRadialAttr\n */\n SVGRenderer.prototype.getRadialAttr = function (radialReference, gradAttr) {\n return {\n cx: (radialReference[0] - radialReference[2] / 2) +\n (gradAttr.cx || 0) * radialReference[2],\n cy: (radialReference[1] - radialReference[2] / 2) +\n (gradAttr.cy || 0) * radialReference[2],\n r: (gradAttr.r || 0) * radialReference[2]\n };\n };\n /**\n * Parse a simple HTML string into SVG tspans. Called internally when text\n * is set on an SVGElement. The function supports a subset of HTML tags, CSS\n * text features like `width`, `text-overflow`, `white-space`, and also\n * attributes like `href` and `style`.\n *\n * @private\n * @function Highcharts.SVGRenderer#buildText\n *\n * @param {Highcharts.SVGElement} wrapper\n * The parent SVGElement.\n */\n SVGRenderer.prototype.buildText = function (wrapper) {\n new TextBuilder(wrapper).buildSVG();\n };\n /**\n * Returns white for dark colors and black for bright colors.\n *\n * @function Highcharts.SVGRenderer#getContrast\n *\n * @param {Highcharts.ColorString} rgba\n * The color to get the contrast for.\n *\n * @return {Highcharts.ColorString}\n * The contrast color, either `#000000` or `#FFFFFF`.\n */\n SVGRenderer.prototype.getContrast = function (rgba) {\n rgba = Color.parse(rgba).rgba;\n // The threshold may be discussed. Here's a proposal for adding\n // different weight to the color channels (#6216)\n rgba[0] *= 1; // red\n rgba[1] *= 1.2; // green\n rgba[2] *= 0.5; // blue\n return rgba[0] + rgba[1] + rgba[2] >\n 1.8 * 255 ?\n '#000000' :\n '#FFFFFF';\n };\n /**\n * Create a button with preset states.\n *\n * @function Highcharts.SVGRenderer#button\n *\n * @param {string} text\n * The text or HTML to draw.\n *\n * @param {number} x\n * The x position of the button's left side.\n *\n * @param {number} y\n * The y position of the button's top side.\n *\n * @param {Highcharts.EventCallbackFunction<Highcharts.SVGElement>} callback\n * The function to execute on button click or touch.\n *\n * @param {Highcharts.SVGAttributes} [theme]\n * SVG attributes for the normal state.\n *\n * @param {Highcharts.SVGAttributes} [hoverState]\n * SVG attributes for the hover state.\n *\n * @param {Highcharts.SVGAttributes} [pressedState]\n * SVG attributes for the pressed state.\n *\n * @param {Highcharts.SVGAttributes} [disabledState]\n * SVG attributes for the disabled state.\n *\n * @param {Highcharts.SymbolKeyValue} [shape=rect]\n * The shape type.\n *\n * @param {boolean} [useHTML=false]\n * Wether to use HTML to render the label.\n *\n * @return {Highcharts.SVGElement}\n * The button element.\n */\n SVGRenderer.prototype.button = function (text, x, y, callback, theme, hoverState, pressedState, disabledState, shape, useHTML) {\n var label = this.label(text,\n x,\n y,\n shape,\n void 0,\n void 0,\n useHTML,\n void 0, 'button'),\n styledMode = this.styledMode;\n var curState = 0, \n // Make a copy of normalState (#13798)\n // (reference to options.rangeSelector.buttonTheme)\n normalState = theme ? merge(theme) : {};\n var userNormalStyle = normalState && normalState.style || {};\n // Remove stylable attributes\n normalState = AST.filterUserAttributes(normalState);\n // Default, non-stylable attributes\n label.attr(merge({ padding: 8, r: 2 }, normalState));\n // Presentational\n var normalStyle,\n hoverStyle,\n pressedStyle,\n disabledStyle;\n if (!styledMode) {\n // Normal state - prepare the attributes\n normalState = merge({\n fill: \"#f7f7f7\" /* neutralColor3 */,\n stroke: \"#cccccc\" /* neutralColor20 */,\n 'stroke-width': 1,\n style: {\n color: \"#333333\" /* neutralColor80 */,\n cursor: 'pointer',\n fontWeight: 'normal'\n }\n }, {\n style: userNormalStyle\n }, normalState);\n normalStyle = normalState.style;\n delete normalState.style;\n // Hover state\n hoverState = merge(normalState, {\n fill: \"#e6e6e6\" /* neutralColor10 */\n }, AST.filterUserAttributes(hoverState || {}));\n hoverStyle = hoverState.style;\n delete hoverState.style;\n // Pressed state\n pressedState = merge(normalState, {\n fill: \"#e6ebf5\" /* highlightColor10 */,\n style: {\n color: \"#000000\" /* neutralColor100 */,\n fontWeight: 'bold'\n }\n }, AST.filterUserAttributes(pressedState || {}));\n pressedStyle = pressedState.style;\n delete pressedState.style;\n // Disabled state\n disabledState = merge(normalState, {\n style: {\n color: \"#cccccc\" /* neutralColor20 */\n }\n }, AST.filterUserAttributes(disabledState || {}));\n disabledStyle = disabledState.style;\n delete disabledState.style;\n }\n // Add the events. IE9 and IE10 need mouseover and mouseout to funciton\n // (#667).\n addEvent(label.element, isMS ? 'mouseover' : 'mouseenter', function () {\n if (curState !== 3) {\n label.setState(1);\n }\n });\n addEvent(label.element, isMS ? 'mouseout' : 'mouseleave', function () {\n if (curState !== 3) {\n label.setState(curState);\n }\n });\n label.setState = function (state) {\n // Hover state is temporary, don't record it\n if (state !== 1) {\n label.state = curState = state;\n }\n // Update visuals\n label\n .removeClass(/highcharts-button-(normal|hover|pressed|disabled)/)\n .addClass('highcharts-button-' +\n ['normal', 'hover', 'pressed', 'disabled'][state || 0]);\n if (!styledMode) {\n label\n .attr([\n normalState,\n hoverState,\n pressedState,\n disabledState\n ][state || 0])\n .css([\n normalStyle,\n hoverStyle,\n pressedStyle,\n disabledStyle\n ][state || 0]);\n }\n };\n // Presentational attributes\n if (!styledMode) {\n label\n .attr(normalState)\n .css(extend({ cursor: 'default' }, normalStyle));\n }\n return label\n .on('touchstart', function (e) { return e.stopPropagation(); })\n .on('click', function (e) {\n if (curState !== 3) {\n callback.call(label, e);\n }\n });\n };\n /**\n * Make a straight line crisper by not spilling out to neighbour pixels.\n *\n * @function Highcharts.SVGRenderer#crispLine\n *\n * @param {Highcharts.SVGPathArray} points\n * The original points on the format `[['M', 0, 0], ['L', 100, 0]]`.\n *\n * @param {number} width\n * The width of the line.\n *\n * @param {string} [roundingFunction=round]\n * The rounding function name on the `Math` object, can be one of\n * `round`, `floor` or `ceil`.\n *\n * @return {Highcharts.SVGPathArray}\n * The original points array, but modified to render crisply.\n */\n SVGRenderer.prototype.crispLine = function (points, width, roundingFunction) {\n if (roundingFunction === void 0) { roundingFunction = 'round'; }\n var start = points[0];\n var end = points[1];\n // Normalize to a crisp line\n if (defined(start[1]) && start[1] === end[1]) {\n // Substract due to #1129. Now bottom and left axis gridlines behave\n // the same.\n start[1] = end[1] =\n Math[roundingFunction](start[1]) - (width % 2 / 2);\n }\n if (defined(start[2]) && start[2] === end[2]) {\n start[2] = end[2] =\n Math[roundingFunction](start[2]) + (width % 2 / 2);\n }\n return points;\n };\n /**\n * Draw a path, wraps the SVG `path` element.\n *\n * @sample highcharts/members/renderer-path-on-chart/\n * Draw a path in a chart\n * @sample highcharts/members/renderer-path/\n * Draw a path independent from a chart\n *\n * @example\n * let path = renderer.path(['M', 10, 10, 'L', 30, 30, 'z'])\n * .attr({ stroke: '#ff00ff' })\n * .add();\n *\n * @function Highcharts.SVGRenderer#path\n *\n * @param {Highcharts.SVGPathArray} [path]\n * An SVG path definition in array form.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n *\n */ /**\n * Draw a path, wraps the SVG `path` element.\n *\n * @function Highcharts.SVGRenderer#path\n *\n * @param {Highcharts.SVGAttributes} [attribs]\n * The initial attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.path = function (path) {\n var attribs = (this.styledMode ? {} : {\n fill: 'none'\n });\n if (isArray(path)) {\n attribs.d = path;\n }\n else if (isObject(path)) { // attributes\n extend(attribs, path);\n }\n return this.createElement('path').attr(attribs);\n };\n /**\n * Draw a circle, wraps the SVG `circle` element.\n *\n * @sample highcharts/members/renderer-circle/\n * Drawing a circle\n *\n * @function Highcharts.SVGRenderer#circle\n *\n * @param {number} [x]\n * The center x position.\n *\n * @param {number} [y]\n * The center y position.\n *\n * @param {number} [r]\n * The radius.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw a circle, wraps the SVG `circle` element.\n *\n * @function Highcharts.SVGRenderer#circle\n *\n * @param {Highcharts.SVGAttributes} [attribs]\n * The initial attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.circle = function (x, y, r) {\n var attribs = (isObject(x) ?\n x :\n typeof x === 'undefined' ? {} : { x: x, y: y, r: r }), wrapper = this.createElement('circle');\n // Setting x or y translates to cx and cy\n wrapper.xSetter = wrapper.ySetter = function (value, key, element) {\n element.setAttribute('c' + key, value);\n };\n return wrapper.attr(attribs);\n };\n /**\n * Draw and return an arc.\n *\n * @sample highcharts/members/renderer-arc/\n * Drawing an arc\n *\n * @function Highcharts.SVGRenderer#arc\n *\n * @param {number} [x=0]\n * Center X position.\n *\n * @param {number} [y=0]\n * Center Y position.\n *\n * @param {number} [r=0]\n * The outer radius' of the arc.\n *\n * @param {number} [innerR=0]\n * Inner radius like used in donut charts.\n *\n * @param {number} [start=0]\n * The starting angle of the arc in radians, where 0 is to the right and\n * `-Math.PI/2` is up.\n *\n * @param {number} [end=0]\n * The ending angle of the arc in radians, where 0 is to the right and\n * `-Math.PI/2` is up.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw and return an arc. Overloaded function that takes arguments object.\n *\n * @function Highcharts.SVGRenderer#arc\n *\n * @param {Highcharts.SVGAttributes} attribs\n * Initial SVG attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.arc = function (x, y, r, innerR, start, end) {\n var options;\n if (isObject(x)) {\n options = x;\n y = options.y;\n r = options.r;\n innerR = options.innerR;\n start = options.start;\n end = options.end;\n x = options.x;\n }\n else {\n options = { innerR: innerR, start: start, end: end };\n }\n // Arcs are defined as symbols for the ability to set\n // attributes in attr and animate\n var arc = this.symbol('arc',\n x,\n y,\n r,\n r,\n options);\n arc.r = r; // #959\n return arc;\n };\n /**\n * Draw and return a rectangle.\n *\n * @function Highcharts.SVGRenderer#rect\n *\n * @param {number} [x]\n * Left position.\n *\n * @param {number} [y]\n * Top position.\n *\n * @param {number} [width]\n * Width of the rectangle.\n *\n * @param {number} [height]\n * Height of the rectangle.\n *\n * @param {number} [r]\n * Border corner radius.\n *\n * @param {number} [strokeWidth]\n * A stroke width can be supplied to allow crisp drawing.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw and return a rectangle.\n *\n * @sample highcharts/members/renderer-rect-on-chart/\n * Draw a rectangle in a chart\n * @sample highcharts/members/renderer-rect/\n * Draw a rectangle independent from a chart\n *\n * @function Highcharts.SVGRenderer#rect\n *\n * @param {Highcharts.SVGAttributes} [attributes]\n * General SVG attributes for the rectangle.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.rect = function (x, y, width, height, r, strokeWidth) {\n r = isObject(x) ? x.r : r;\n var wrapper = this.createElement('rect');\n var attribs = (isObject(x) ?\n x :\n typeof x === 'undefined' ?\n {} :\n {\n x: x,\n y: y,\n width: Math.max(width, 0),\n height: Math.max(height, 0)\n });\n if (!this.styledMode) {\n if (typeof strokeWidth !== 'undefined') {\n attribs['stroke-width'] = strokeWidth;\n attribs = wrapper.crisp(attribs);\n }\n attribs.fill = 'none';\n }\n if (r) {\n attribs.r = r;\n }\n wrapper.rSetter = function (value, _key, element) {\n wrapper.r = value;\n attr(element, {\n rx: value,\n ry: value\n });\n };\n wrapper.rGetter = function () {\n return wrapper.r || 0;\n };\n return wrapper.attr(attribs);\n };\n /**\n * Resize the {@link SVGRenderer#box} and re-align all aligned child\n * elements.\n *\n * @sample highcharts/members/renderer-g/\n * Show and hide grouped objects\n *\n * @function Highcharts.SVGRenderer#setSize\n *\n * @param {number} width\n * The new pixel width.\n *\n * @param {number} height\n * The new pixel height.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animate=true]\n * Whether and how to animate.\n */\n SVGRenderer.prototype.setSize = function (width, height, animate) {\n var renderer = this;\n renderer.width = width;\n renderer.height = height;\n renderer.boxWrapper.animate({\n width: width,\n height: height\n }, {\n step: function () {\n this.attr({\n viewBox: '0 0 ' + this.attr('width') + ' ' +\n this.attr('height')\n });\n },\n duration: pick(animate, true) ? void 0 : 0\n });\n renderer.alignElements();\n };\n /**\n * Create and return an svg group element. Child\n * {@link Highcharts.SVGElement} objects are added to the group by using the\n * group as the first parameter in {@link Highcharts.SVGElement#add|add()}.\n *\n * @function Highcharts.SVGRenderer#g\n *\n * @param {string} [name]\n * The group will be given a class name of `highcharts-{name}`. This\n * can be used for styling and scripting.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.g = function (name) {\n var elem = this.createElement('g');\n return name ?\n elem.attr({ 'class': 'highcharts-' + name }) :\n elem;\n };\n /**\n * Display an image.\n *\n * @sample highcharts/members/renderer-image-on-chart/\n * Add an image in a chart\n * @sample highcharts/members/renderer-image/\n * Add an image independent of a chart\n *\n * @function Highcharts.SVGRenderer#image\n *\n * @param {string} src\n * The image source.\n *\n * @param {number} [x]\n * The X position.\n *\n * @param {number} [y]\n * The Y position.\n *\n * @param {number} [width]\n * The image width. If omitted, it defaults to the image file width.\n *\n * @param {number} [height]\n * The image height. If omitted it defaults to the image file\n * height.\n *\n * @param {Function} [onload]\n * Event handler for image load.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.image = function (src, x, y, width, height, onload) {\n var attribs = { preserveAspectRatio: 'none' }, setSVGImageSource = function (el, src) {\n // Set the href in the xlink namespace\n if (el.setAttributeNS) {\n el.setAttributeNS('http://www.w3.org/1999/xlink', 'href', src);\n }\n else {\n // could be exporting in IE\n // using href throws \"not supported\" in ie7 and under,\n // requries regex shim to fix later\n el.setAttribute('hc-svg-href', src);\n }\n };\n // Optional properties (#11756)\n if (isNumber(x)) {\n attribs.x = x;\n }\n if (isNumber(y)) {\n attribs.y = y;\n }\n if (isNumber(width)) {\n attribs.width = width;\n }\n if (isNumber(height)) {\n attribs.height = height;\n }\n var elemWrapper = this.createElement('image').attr(attribs),\n onDummyLoad = function (e) {\n setSVGImageSource(elemWrapper.element,\n src);\n onload.call(elemWrapper, e);\n };\n // Add load event if supplied\n if (onload) {\n // We have to use a dummy HTML image since IE support for SVG image\n // load events is very buggy. First set a transparent src, wait for\n // dummy to load, and then add the real src to the SVG image.\n setSVGImageSource(elemWrapper.element, 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' /* eslint-disable-line */);\n var dummy = new win.Image();\n addEvent(dummy, 'load', onDummyLoad);\n dummy.src = src;\n if (dummy.complete) {\n onDummyLoad({});\n }\n }\n else {\n setSVGImageSource(elemWrapper.element, src);\n }\n return elemWrapper;\n };\n /**\n * Draw a symbol out of pre-defined shape paths from\n * {@link SVGRenderer#symbols}.\n * It is used in Highcharts for point makers, which cake a `symbol` option,\n * and label and button backgrounds like in the tooltip and stock flags.\n *\n * @function Highcharts.SVGRenderer#symbol\n *\n * @param {string} symbol\n * The symbol name.\n *\n * @param {number} [x]\n * The X coordinate for the top left position.\n *\n * @param {number} [y]\n * The Y coordinate for the top left position.\n *\n * @param {number} [width]\n * The pixel width.\n *\n * @param {number} [height]\n * The pixel height.\n *\n * @param {Highcharts.SymbolOptionsObject} [options]\n * Additional options, depending on the actual symbol drawn.\n *\n * @return {Highcharts.SVGElement}\n * SVG symbol.\n */\n SVGRenderer.prototype.symbol = function (symbol, x, y, width, height, options) {\n var ren = this,\n imageRegex = /^url\\((.*?)\\)$/,\n isImage = imageRegex.test(symbol),\n sym = (!isImage && (this.symbols[symbol] ? symbol : 'circle')), \n // get the symbol definition function\n symbolFn = (sym && this.symbols[sym]);\n var obj,\n path,\n imageSrc,\n centerImage;\n if (symbolFn) {\n // Check if there's a path defined for this symbol\n if (typeof x === 'number') {\n path = symbolFn.call(this.symbols, Math.round(x || 0), Math.round(y || 0), width || 0, height || 0, options);\n }\n obj = this.path(path);\n if (!ren.styledMode) {\n obj.attr('fill', 'none');\n }\n // expando properties for use in animate and attr\n extend(obj, {\n symbolName: (sym || void 0),\n x: x,\n y: y,\n width: width,\n height: height\n });\n if (options) {\n extend(obj, options);\n }\n // Image symbols\n }\n else if (isImage) {\n imageSrc = symbol.match(imageRegex)[1];\n // Create the image synchronously, add attribs async\n var img_1 = obj = this.image(imageSrc);\n // The image width is not always the same as the symbol width. The\n // image may be centered within the symbol, as is the case when\n // image shapes are used as label backgrounds, for example in flags.\n img_1.imgwidth = pick(symbolSizes[imageSrc] && symbolSizes[imageSrc].width, options && options.width);\n img_1.imgheight = pick(symbolSizes[imageSrc] && symbolSizes[imageSrc].height, options && options.height);\n /**\n * Set the size and position\n */\n centerImage = function (obj) { return obj.attr({\n width: obj.width,\n height: obj.height\n }); };\n /**\n * Width and height setters that take both the image's physical size\n * and the label size into consideration, and translates the image\n * to center within the label.\n */\n ['width', 'height'].forEach(function (key) {\n img_1[key + 'Setter'] = function (value, key) {\n var imgSize = this['img' + key];\n this[key] = value;\n if (defined(imgSize)) {\n // Scale and center the image within its container.\n // The name `backgroundSize` is taken from the CSS spec,\n // but the value `within` is made up. Other possible\n // values in the spec, `cover` and `contain`, can be\n // implemented if needed.\n if (options &&\n options.backgroundSize === 'within' &&\n this.width &&\n this.height) {\n imgSize = Math.round(imgSize * Math.min(this.width / this.imgwidth, this.height / this.imgheight));\n }\n if (this.element) {\n this.element.setAttribute(key, imgSize);\n }\n if (!this.alignByTranslate) {\n var translate = ((this[key] || 0) - imgSize) / 2;\n var attribs = key === 'width' ?\n { translateX: translate } :\n { translateY: translate };\n this.attr(attribs);\n }\n }\n };\n });\n if (defined(x)) {\n img_1.attr({\n x: x,\n y: y\n });\n }\n img_1.isImg = true;\n if (defined(img_1.imgwidth) && defined(img_1.imgheight)) {\n centerImage(img_1);\n }\n else {\n // Initialize image to be 0 size so export will still function\n // if there's no cached sizes.\n img_1.attr({ width: 0, height: 0 });\n // Create a dummy JavaScript image to get the width and height.\n createElement('img', {\n onload: function () {\n var chart = charts[ren.chartIndex];\n // Special case for SVGs on IE11, the width is not\n // accessible until the image is part of the DOM\n // (#2854).\n if (this.width === 0) {\n css(this, {\n position: 'absolute',\n top: '-999em'\n });\n doc.body.appendChild(this);\n }\n // Center the image\n symbolSizes[imageSrc] = {\n width: this.width,\n height: this.height\n };\n img_1.imgwidth = this.width;\n img_1.imgheight = this.height;\n if (img_1.element) {\n centerImage(img_1);\n }\n // Clean up after #2854 workaround.\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n // Fire the load event when all external images are\n // loaded\n ren.imgCount--;\n if (!ren.imgCount && chart && !chart.hasLoaded) {\n chart.onload();\n }\n },\n src: imageSrc\n });\n this.imgCount++;\n }\n }\n return obj;\n };\n /**\n * Define a clipping rectangle. The clipping rectangle is later applied\n * to {@link SVGElement} objects through the {@link SVGElement#clip}\n * function.\n *\n * @example\n * let circle = renderer.circle(100, 100, 100)\n * .attr({ fill: 'red' })\n * .add();\n * let clipRect = renderer.clipRect(100, 100, 100, 100);\n *\n * // Leave only the lower right quarter visible\n * circle.clip(clipRect);\n *\n * @function Highcharts.SVGRenderer#clipRect\n *\n * @param {number} [x]\n *\n * @param {number} [y]\n *\n * @param {number} [width]\n *\n * @param {number} [height]\n *\n * @return {Highcharts.ClipRectElement}\n * A clipping rectangle.\n */\n SVGRenderer.prototype.clipRect = function (x, y, width, height) {\n var \n // Add a hyphen at the end to avoid confusion in testing indexes\n // -1 and -10, -11 etc (#6550)\n id = uniqueKey() + '-', clipPath = this.createElement('clipPath').attr({\n id: id\n }).add(this.defs), wrapper = this.rect(x, y, width, height, 0).add(clipPath);\n wrapper.id = id;\n wrapper.clipPath = clipPath;\n wrapper.count = 0;\n return wrapper;\n };\n /**\n * Draw text. The text can contain a subset of HTML, like spans and anchors\n * and some basic text styling of these. For more advanced features like\n * border and background, use {@link Highcharts.SVGRenderer#label} instead.\n * To update the text after render, run `text.attr({ text: 'New text' })`.\n *\n * @sample highcharts/members/renderer-text-on-chart/\n * Annotate the chart freely\n * @sample highcharts/members/renderer-on-chart/\n * Annotate with a border and in response to the data\n * @sample highcharts/members/renderer-text/\n * Formatted text\n *\n * @function Highcharts.SVGRenderer#text\n *\n * @param {string} [str]\n * The text of (subset) HTML to draw.\n *\n * @param {number} [x]\n * The x position of the text's lower left corner.\n *\n * @param {number} [y]\n * The y position of the text's lower left corner.\n *\n * @param {boolean} [useHTML=false]\n * Use HTML to render the text.\n *\n * @return {Highcharts.SVGElement}\n * The text object.\n */\n SVGRenderer.prototype.text = function (str, x, y, useHTML) {\n var renderer = this,\n attribs = {};\n if (useHTML && (renderer.allowHTML || !renderer.forExport)) {\n return renderer.html(str, x, y);\n }\n attribs.x = Math.round(x || 0); // X always needed for line-wrap logic\n if (y) {\n attribs.y = Math.round(y);\n }\n if (defined(str)) {\n attribs.text = str;\n }\n var wrapper = renderer.createElement('text').attr(attribs);\n if (!useHTML || (renderer.forExport && !renderer.allowHTML)) {\n wrapper.xSetter = function (value, key, element) {\n var tspans = element.getElementsByTagName('tspan'),\n parentVal = element.getAttribute(key);\n for (var i = 0, tspan = void 0; i < tspans.length; i++) {\n tspan = tspans[i];\n // If the x values are equal, the tspan represents a line\n // break\n if (tspan.getAttribute(key) === parentVal) {\n tspan.setAttribute(key, value);\n }\n }\n element.setAttribute(key, value);\n };\n }\n return wrapper;\n };\n /**\n * Utility to return the baseline offset and total line height from the font\n * size.\n *\n * @function Highcharts.SVGRenderer#fontMetrics\n *\n * @param {number|string} [fontSize]\n * The current font size to inspect. If not given, the font size\n * will be found from the DOM element.\n *\n * @param {Highcharts.SVGElement|Highcharts.SVGDOMElement} [elem]\n * The element to inspect for a current font size.\n *\n * @return {Highcharts.FontMetricsObject}\n * The font metrics.\n */\n SVGRenderer.prototype.fontMetrics = function (fontSize, elem) {\n if ((this.styledMode || !/px/.test(fontSize)) &&\n win.getComputedStyle // old IE doesn't support it\n ) {\n fontSize = elem && SVGElement.prototype.getStyle.call(elem, 'font-size');\n }\n else {\n fontSize = fontSize ||\n // When the elem is a DOM element (#5932)\n (elem && elem.style && elem.style.fontSize) ||\n // Fall back on the renderer style default\n (this.style && this.style.fontSize);\n }\n // Handle different units\n if (/px/.test(fontSize)) {\n fontSize = pInt(fontSize);\n }\n else {\n fontSize = 12;\n }\n // Empirical values found by comparing font size and bounding box\n // height. Applies to the default font family.\n // https://jsfiddle.net/highcharts/7xvn7/\n var lineHeight = (fontSize < 24 ?\n fontSize + 3 :\n Math.round(fontSize * 1.2)),\n baseline = Math.round(lineHeight * 0.8);\n return {\n h: lineHeight,\n b: baseline,\n f: fontSize\n };\n };\n /**\n * Correct X and Y positioning of a label for rotation (#1764).\n *\n * @private\n * @function Highcharts.SVGRenderer#rotCorr\n */\n SVGRenderer.prototype.rotCorr = function (baseline, rotation, alterY) {\n var y = baseline;\n if (rotation && alterY) {\n y = Math.max(y * Math.cos(rotation * deg2rad), 4);\n }\n return {\n x: (-baseline / 3) * Math.sin(rotation * deg2rad),\n y: y\n };\n };\n /**\n * Compatibility function to convert the legacy one-dimensional path array\n * into an array of segments.\n *\n * It is used in maps to parse the `path` option, and in SVGRenderer.dSetter\n * to support legacy paths from demos.\n *\n * @private\n * @function Highcharts.SVGRenderer#pathToSegments\n */\n SVGRenderer.prototype.pathToSegments = function (path) {\n var ret = [];\n var segment = [];\n var commandLength = {\n A: 8,\n C: 7,\n H: 2,\n L: 3,\n M: 3,\n Q: 5,\n S: 5,\n T: 3,\n V: 2\n };\n // Short, non-typesafe parsing of the one-dimensional array. It splits\n // the path on any string. This is not type checked against the tuple\n // types, but is shorter, and doesn't require specific checks for any\n // command type in SVG.\n for (var i = 0; i < path.length; i++) {\n // Command skipped, repeat previous or insert L/l for M/m\n if (isString(segment[0]) &&\n isNumber(path[i]) &&\n segment.length === commandLength[(segment[0].toUpperCase())]) {\n path.splice(i, 0, segment[0].replace('M', 'L').replace('m', 'l'));\n }\n // Split on string\n if (typeof path[i] === 'string') {\n if (segment.length) {\n ret.push(segment.slice(0));\n }\n segment.length = 0;\n }\n segment.push(path[i]);\n }\n ret.push(segment.slice(0));\n return ret;\n /*\n // Fully type-safe version where each tuple type is checked. The\n // downside is filesize and a lack of flexibility for unsupported\n // commands\n const ret: SVGPath = [],\n commands = {\n A: 7,\n C: 6,\n H: 1,\n L: 2,\n M: 2,\n Q: 4,\n S: 4,\n T: 2,\n V: 1,\n Z: 0\n };\n\n let i = 0,\n lastI = 0,\n lastCommand;\n\n while (i < path.length) {\n const item = path[i];\n\n let command;\n\n if (typeof item === 'string') {\n command = item;\n i += 1;\n } else {\n command = lastCommand || 'M';\n }\n\n // Upper case\n const commandUC = command.toUpperCase();\n\n if (commandUC in commands) {\n\n // No numeric parameters\n if (command === 'Z' || command === 'z') {\n ret.push([command]);\n\n // One numeric parameter\n } else {\n const val0 = path[i];\n if (typeof val0 === 'number') {\n\n // Horizontal line to\n if (command === 'H' || command === 'h') {\n ret.push([command, val0]);\n i += 1;\n\n // Vertical line to\n } else if (command === 'V' || command === 'v') {\n ret.push([command, val0]);\n i += 1;\n\n // Two numeric parameters\n } else {\n const val1 = path[i + 1];\n if (typeof val1 === 'number') {\n // lineTo\n if (command === 'L' || command === 'l') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // moveTo\n } else if (command === 'M' || command === 'm') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // Smooth quadratic bezier\n } else if (command === 'T' || command === 't') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // Four numeric parameters\n } else {\n const val2 = path[i + 2],\n val3 = path[i + 3];\n if (\n typeof val2 === 'number' &&\n typeof val3 === 'number'\n ) {\n // Quadratic bezier to\n if (\n command === 'Q' ||\n command === 'q'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3\n ]);\n i += 4;\n\n // Smooth cubic bezier to\n } else if (\n command === 'S' ||\n command === 's'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3\n ]);\n i += 4;\n\n // Six numeric parameters\n } else {\n const val4 = path[i + 4],\n val5 = path[i + 5];\n\n if (\n typeof val4 === 'number' &&\n typeof val5 === 'number'\n ) {\n // Curve to\n if (\n command === 'C' ||\n command === 'c'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3,\n val4,\n val5\n ]);\n i += 6;\n\n // Seven numeric parameters\n } else {\n const val6 = path[i + 6];\n\n // Arc to\n if (\n typeof val6 ===\n 'number' &&\n (\n command === 'A' ||\n command === 'a'\n )\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3,\n val4,\n val5,\n val6\n ]);\n i += 7;\n\n }\n\n }\n }\n }\n }\n }\n }\n\n }\n }\n }\n }\n\n // An unmarked command following a moveTo is a lineTo\n lastCommand = command === 'M' ? 'L' : command;\n\n if (i === lastI) {\n break;\n }\n lastI = i;\n }\n return ret;\n */\n };\n /**\n * Draw a label, which is an extended text element with support for border\n * and background. Highcharts creates a `g` element with a text and a `path`\n * or `rect` inside, to make it behave somewhat like a HTML div. Border and\n * background are set through `stroke`, `stroke-width` and `fill` attributes\n * using the {@link Highcharts.SVGElement#attr|attr} method. To update the\n * text after render, run `label.attr({ text: 'New text' })`.\n *\n * @sample highcharts/members/renderer-label-on-chart/\n * A label on the chart\n *\n * @function Highcharts.SVGRenderer#label\n *\n * @param {string} str\n * The initial text string or (subset) HTML to render.\n *\n * @param {number} x\n * The x position of the label's left side.\n *\n * @param {number} [y]\n * The y position of the label's top side or baseline, depending on\n * the `baseline` parameter.\n *\n * @param {string} [shape='rect']\n * The shape of the label's border/background, if any. Defaults to\n * `rect`. Other possible values are `callout` or other shapes\n * defined in {@link Highcharts.SVGRenderer#symbols}.\n *\n * @param {number} [anchorX]\n * In case the `shape` has a pointer, like a flag, this is the\n * coordinates it should be pinned to.\n *\n * @param {number} [anchorY]\n * In case the `shape` has a pointer, like a flag, this is the\n * coordinates it should be pinned to.\n *\n * @param {boolean} [useHTML=false]\n * Wether to use HTML to render the label.\n *\n * @param {boolean} [baseline=false]\n * Whether to position the label relative to the text baseline,\n * like {@link Highcharts.SVGRenderer#text|renderer.text}, or to the\n * upper border of the rectangle.\n *\n * @param {string} [className]\n * Class name for the group.\n *\n * @return {Highcharts.SVGElement}\n * The generated label.\n */\n SVGRenderer.prototype.label = function (str, x, y, shape, anchorX, anchorY, useHTML, baseline, className) {\n return new SVGLabel(this, str, x, y, shape, anchorX, anchorY, useHTML, baseline, className);\n };\n /**\n * Re-align all aligned elements.\n *\n * @private\n * @function Highcharts.SVGRenderer#alignElements\n */\n SVGRenderer.prototype.alignElements = function () {\n this.alignedObjects.forEach(function (el) { return el.align(); });\n };\n return SVGRenderer;\n }());\n extend(SVGRenderer.prototype, {\n /**\n * A pointer to the renderer's associated Element class. The VMLRenderer\n * will have a pointer to VMLElement here.\n *\n * @name Highcharts.SVGRenderer#Element\n * @type {Highcharts.SVGElement}\n */\n Element: SVGElement,\n SVG_NS: SVG_NS,\n /**\n * A collection of characters mapped to HTML entities. When `useHTML` on an\n * element is true, these entities will be rendered correctly by HTML. In\n * the SVG pseudo-HTML, they need to be unescaped back to simple characters,\n * so for example `<` will render as `<`.\n *\n * @example\n * // Add support for unescaping quotes\n * Highcharts.SVGRenderer.prototype.escapes['\"'] = '"';\n *\n * @name Highcharts.SVGRenderer#escapes\n * @type {Highcharts.Dictionary<string>}\n */\n escapes: {\n '&': '&',\n '<': '<',\n '>': '>',\n \"'\": ''',\n '\"': '"'\n },\n /**\n * An extendable collection of functions for defining symbol paths.\n *\n * @name Highcharts.SVGRenderer#symbols\n * @type {Highcharts.SymbolDictionary}\n */\n symbols: Symbols,\n /**\n * Dummy function for plugins, called every time the renderer is updated.\n * Prior to Highcharts 5, this was used for the canvg renderer.\n *\n * @deprecated\n * @function Highcharts.SVGRenderer#draw\n */\n draw: noop\n });\n /* *\n *\n * Registry\n *\n * */\n RendererRegistry.registerRendererType('svg', SVGRenderer, true);\n /* *\n *\n * Export Default\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A clipping rectangle that can be applied to one or more {@link SVGElement}\n * instances. It is instanciated with the {@link SVGRenderer#clipRect} function\n * and applied with the {@link SVGElement#clip} function.\n *\n * @example\n * let circle = renderer.circle(100, 100, 100)\n * .attr({ fill: 'red' })\n * .add();\n * let clipRect = renderer.clipRect(100, 100, 100, 100);\n *\n * // Leave only the lower right quarter visible\n * circle.clip(clipRect);\n *\n * @typedef {Highcharts.SVGElement} Highcharts.ClipRectElement\n */\n /**\n * The font metrics.\n *\n * @interface Highcharts.FontMetricsObject\n */ /**\n * The baseline relative to the top of the box.\n *\n * @name Highcharts.FontMetricsObject#b\n * @type {number}\n */ /**\n * The font size.\n *\n * @name Highcharts.FontMetricsObject#f\n * @type {number}\n */ /**\n * The line height.\n *\n * @name Highcharts.FontMetricsObject#h\n * @type {number}\n */\n /**\n * An object containing `x` and `y` properties for the position of an element.\n *\n * @interface Highcharts.PositionObject\n */ /**\n * X position of the element.\n * @name Highcharts.PositionObject#x\n * @type {number}\n */ /**\n * Y position of the element.\n * @name Highcharts.PositionObject#y\n * @type {number}\n */\n /**\n * A rectangle.\n *\n * @interface Highcharts.RectangleObject\n */ /**\n * Height of the rectangle.\n * @name Highcharts.RectangleObject#height\n * @type {number}\n */ /**\n * Width of the rectangle.\n * @name Highcharts.RectangleObject#width\n * @type {number}\n */ /**\n * Horizontal position of the rectangle.\n * @name Highcharts.RectangleObject#x\n * @type {number}\n */ /**\n * Vertical position of the rectangle.\n * @name Highcharts.RectangleObject#y\n * @type {number}\n */\n /**\n * The shadow options.\n *\n * @interface Highcharts.ShadowOptionsObject\n */ /**\n * The shadow color.\n * @name Highcharts.ShadowOptionsObject#color\n * @type {Highcharts.ColorString|undefined}\n * @default #000000\n */ /**\n * The horizontal offset from the element.\n *\n * @name Highcharts.ShadowOptionsObject#offsetX\n * @type {number|undefined}\n * @default 1\n */ /**\n * The vertical offset from the element.\n * @name Highcharts.ShadowOptionsObject#offsetY\n * @type {number|undefined}\n * @default 1\n */ /**\n * The shadow opacity.\n *\n * @name Highcharts.ShadowOptionsObject#opacity\n * @type {number|undefined}\n * @default 0.15\n */ /**\n * The shadow width or distance from the element.\n * @name Highcharts.ShadowOptionsObject#width\n * @type {number|undefined}\n * @default 3\n */\n /**\n * @interface Highcharts.SizeObject\n */ /**\n * @name Highcharts.SizeObject#height\n * @type {number}\n */ /**\n * @name Highcharts.SizeObject#width\n * @type {number}\n */\n /**\n * Array of path commands, that will go into the `d` attribute of an SVG\n * element.\n *\n * @typedef {Array<(Array<Highcharts.SVGPathCommand>|Array<Highcharts.SVGPathCommand,number>|Array<Highcharts.SVGPathCommand,number,number>|Array<Highcharts.SVGPathCommand,number,number,number,number>|Array<Highcharts.SVGPathCommand,number,number,number,number,number,number>|Array<Highcharts.SVGPathCommand,number,number,number,number,number,number,number>)>} Highcharts.SVGPathArray\n */\n /**\n * Possible path commands in an SVG path array. Valid values are `A`, `C`, `H`,\n * `L`, `M`, `Q`, `S`, `T`, `V`, `Z`.\n *\n * @typedef {string} Highcharts.SVGPathCommand\n * @validvalue [\"a\",\"c\",\"h\",\"l\",\"m\",\"q\",\"s\",\"t\",\"v\",\"z\",\"A\",\"C\",\"H\",\"L\",\"M\",\"Q\",\"S\",\"T\",\"V\",\"Z\"]\n */\n /**\n * An extendable collection of functions for defining symbol paths. Symbols are\n * used internally for point markers, button and label borders and backgrounds,\n * or custom shapes. Extendable by adding to {@link SVGRenderer#symbols}.\n *\n * @interface Highcharts.SymbolDictionary\n */ /**\n * @name Highcharts.SymbolDictionary#[key:string]\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#arc\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#callout\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#circle\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#diamond\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#square\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#triangle\n * @type {Function|undefined}\n */\n /**\n * Can be one of `arc`, `callout`, `circle`, `diamond`, `square`, `triangle`,\n * and `triangle-down`. Symbols are used internally for point markers, button\n * and label borders and backgrounds, or custom shapes. Extendable by adding to\n * {@link SVGRenderer#symbols}.\n *\n * @typedef {\"arc\"|\"callout\"|\"circle\"|\"diamond\"|\"square\"|\"triangle\"|\"triangle-down\"} Highcharts.SymbolKeyValue\n */\n /**\n * Additional options, depending on the actual symbol drawn.\n *\n * @interface Highcharts.SymbolOptionsObject\n */ /**\n * The anchor X position for the `callout` symbol. This is where the chevron\n * points to.\n *\n * @name Highcharts.SymbolOptionsObject#anchorX\n * @type {number|undefined}\n */ /**\n * The anchor Y position for the `callout` symbol. This is where the chevron\n * points to.\n *\n * @name Highcharts.SymbolOptionsObject#anchorY\n * @type {number|undefined}\n */ /**\n * The end angle of an `arc` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#end\n * @type {number|undefined}\n */ /**\n * Whether to draw `arc` symbol open or closed.\n *\n * @name Highcharts.SymbolOptionsObject#open\n * @type {boolean|undefined}\n */ /**\n * The radius of an `arc` symbol, or the border radius for the `callout` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#r\n * @type {number|undefined}\n */ /**\n * The start angle of an `arc` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#start\n * @type {number|undefined}\n */\n (''); // keeps doclets above in transpiled file\n\n return SVGRenderer;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/HTMLElement.js', [_modules['Core/Globals.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (H, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var isFirefox = H.isFirefox,\n isMS = H.isMS,\n isWebKit = H.isWebKit,\n win = H.win;\n var css = U.css,\n defined = U.defined,\n extend = U.extend,\n pick = U.pick,\n pInt = U.pInt;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n var HTMLElement = /** @class */ (function (_super) {\n __extends(HTMLElement, _super);\n function HTMLElement() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Modifies SVGElement to support HTML elements.\n * @private\n */\n HTMLElement.compose = function (SVGElementClass) {\n if (HTMLElement.composedClasses.indexOf(SVGElementClass) === -1) {\n HTMLElement.composedClasses.push(SVGElementClass);\n var htmlElementProto = HTMLElement.prototype,\n svgElementProto = SVGElementClass.prototype;\n svgElementProto.getSpanCorrection = htmlElementProto\n .getSpanCorrection;\n svgElementProto.htmlCss = htmlElementProto.htmlCss;\n svgElementProto.htmlGetBBox = htmlElementProto.htmlGetBBox;\n svgElementProto.htmlUpdateTransform = htmlElementProto\n .htmlUpdateTransform;\n svgElementProto.setSpanRotation = htmlElementProto.setSpanRotation;\n }\n return SVGElementClass;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the correction in X and Y positioning as the element is rotated.\n * @private\n */\n HTMLElement.prototype.getSpanCorrection = function (width, baseline, alignCorrection) {\n this.xCorr = -width * alignCorrection;\n this.yCorr = -baseline;\n };\n /**\n * Apply CSS to HTML elements. This is used in text within SVG rendering and\n * by the VML renderer\n * @private\n */\n HTMLElement.prototype.htmlCss = function (styles) {\n var wrapper = this,\n element = wrapper.element, \n // When setting or unsetting the width style, we need to update\n // transform (#8809)\n isSettingWidth = (element.tagName === 'SPAN' &&\n styles &&\n 'width' in styles),\n textWidth = pick(isSettingWidth && styles.width,\n void 0);\n var doTransform;\n if (isSettingWidth) {\n delete styles.width;\n wrapper.textWidth = textWidth;\n doTransform = true;\n }\n if (styles && styles.textOverflow === 'ellipsis') {\n styles.whiteSpace = 'nowrap';\n styles.overflow = 'hidden';\n }\n wrapper.styles = extend(wrapper.styles, styles);\n css(wrapper.element, styles);\n // Now that all styles are applied, to the transform\n if (doTransform) {\n wrapper.htmlUpdateTransform();\n }\n return wrapper;\n };\n /**\n * VML and useHTML method for calculating the bounding box based on offsets.\n */\n HTMLElement.prototype.htmlGetBBox = function () {\n var wrapper = this,\n element = wrapper.element;\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n };\n /**\n * VML override private method to update elements based on internal\n * properties based on SVG transform.\n * @private\n */\n HTMLElement.prototype.htmlUpdateTransform = function () {\n // aligning non added elements is expensive\n if (!this.added) {\n this.alignOnAdd = true;\n return;\n }\n var wrapper = this,\n renderer = wrapper.renderer,\n elem = wrapper.element,\n translateX = wrapper.translateX || 0,\n translateY = wrapper.translateY || 0,\n x = wrapper.x || 0,\n y = wrapper.y || 0,\n align = wrapper.textAlign || 'left',\n alignCorrection = {\n left: 0,\n center: 0.5,\n right: 1\n }[align],\n styles = wrapper.styles,\n whiteSpace = styles && styles.whiteSpace;\n /** @private */\n function getTextPxLength() {\n if (wrapper.textPxLength) {\n return wrapper.textPxLength;\n }\n // Reset multiline/ellipsis in order to read width (#4928,\n // #5417)\n css(elem, {\n width: '',\n whiteSpace: whiteSpace || 'nowrap'\n });\n return elem.offsetWidth;\n }\n // apply translate\n css(elem, {\n marginLeft: translateX,\n marginTop: translateY\n });\n if (!renderer.styledMode && wrapper.shadows) { // used in labels/tooltip\n wrapper.shadows.forEach(function (shadow) {\n css(shadow, {\n marginLeft: translateX + 1,\n marginTop: translateY + 1\n });\n });\n }\n // apply inversion\n if (wrapper.inverted) { // wrapper is a group\n [].forEach.call(elem.childNodes, function (child) {\n renderer.invertChild(child, elem);\n });\n }\n if (elem.tagName === 'SPAN') {\n var rotation = wrapper.rotation, textWidth = wrapper.textWidth && pInt(wrapper.textWidth), currentTextTransform = [\n rotation,\n align,\n elem.innerHTML,\n wrapper.textWidth,\n wrapper.textAlign\n ].join(',');\n var baseline = void 0,\n hasBoxWidthChanged = false;\n // Update textWidth. Use the memoized textPxLength if possible, to\n // avoid the getTextPxLength function using elem.offsetWidth.\n // Calling offsetWidth affects rendering time as it forces layout\n // (#7656).\n if (textWidth !== wrapper.oldTextWidth) { // #983, #1254\n var textPxLength = getTextPxLength();\n if (((textWidth > wrapper.oldTextWidth) ||\n textPxLength > textWidth) && (\n // Only set the width if the text is able to word-wrap,\n // or text-overflow is ellipsis (#9537)\n /[ \\-]/.test(elem.textContent || elem.innerText) ||\n elem.style.textOverflow === 'ellipsis')) {\n css(elem, {\n width: (textPxLength > textWidth) || rotation ?\n textWidth + 'px' :\n 'auto',\n display: 'block',\n whiteSpace: whiteSpace || 'normal' // #3331\n });\n wrapper.oldTextWidth = textWidth;\n hasBoxWidthChanged = true; // #8159\n }\n }\n wrapper.hasBoxWidthChanged = hasBoxWidthChanged; // #8159\n // Do the calculations and DOM access only if properties changed\n if (currentTextTransform !== wrapper.cTT) {\n baseline = renderer.fontMetrics(elem.style.fontSize, elem).b;\n // Renderer specific handling of span rotation, but only if we\n // have something to update.\n if (defined(rotation) &&\n ((rotation !== (wrapper.oldRotation || 0)) ||\n (align !== wrapper.oldAlign))) {\n wrapper.setSpanRotation(rotation, alignCorrection, baseline);\n }\n wrapper.getSpanCorrection(\n // Avoid elem.offsetWidth if we can, it affects rendering\n // time heavily (#7656)\n ((!defined(rotation) && wrapper.textPxLength) || // #7920\n elem.offsetWidth), baseline, alignCorrection, rotation, align);\n }\n // apply position with correction\n css(elem, {\n left: (x + (wrapper.xCorr || 0)) + 'px',\n top: (y + (wrapper.yCorr || 0)) + 'px'\n });\n // record current text transform\n wrapper.cTT = currentTextTransform;\n wrapper.oldRotation = rotation;\n wrapper.oldAlign = align;\n }\n };\n /**\n * Set the rotation of an individual HTML span.\n * @private\n */\n HTMLElement.prototype.setSpanRotation = function (rotation, alignCorrection, baseline) {\n var getTransformKey = function () { return (isMS &&\n !/Edge/.test(win.navigator.userAgent) ?\n '-ms-transform' :\n isWebKit ?\n '-webkit-transform' :\n isFirefox ?\n 'MozTransform' :\n win.opera ?\n '-o-transform' :\n void 0); };\n var rotationStyle = {},\n cssTransformKey = getTransformKey();\n if (cssTransformKey) {\n rotationStyle[cssTransformKey] = rotationStyle.transform =\n 'rotate(' + rotation + 'deg)';\n rotationStyle[cssTransformKey + (isFirefox ? 'Origin' : '-origin')] = rotationStyle.transformOrigin =\n (alignCorrection * 100) + '% ' + baseline + 'px';\n css(this.element, rotationStyle);\n }\n };\n /* *\n *\n * Static Properties\n *\n * */\n HTMLElement.composedClasses = [];\n return HTMLElement;\n }(SVGElement));\n /* *\n *\n * Default Export\n *\n * */\n\n return HTMLElement;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/HTMLRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (AST, SVGElement, SVGRenderer, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var attr = U.attr,\n createElement = U.createElement,\n extend = U.extend,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n // Extend SvgRenderer for useHTML option.\n var HTMLRenderer = /** @class */ (function (_super) {\n __extends(HTMLRenderer, _super);\n function HTMLRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /** @private */\n HTMLRenderer.compose = function (SVGRendererClass) {\n if (HTMLRenderer.composedClasses.indexOf(SVGRendererClass) === -1) {\n HTMLRenderer.composedClasses.push(SVGRendererClass);\n var htmlRendererProto = HTMLRenderer.prototype,\n svgRendererProto = SVGRendererClass.prototype;\n svgRendererProto.html = htmlRendererProto.html;\n }\n return SVGRendererClass;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Create HTML text node. This is used by the VML renderer as well as the\n * SVG renderer through the useHTML option.\n *\n * @private\n * @function Highcharts.SVGRenderer#html\n *\n * @param {string} str\n * The text of (subset) HTML to draw.\n *\n * @param {number} x\n * The x position of the text's lower left corner.\n *\n * @param {number} y\n * The y position of the text's lower left corner.\n *\n * @return {Highcharts.HTMLDOMElement}\n * HTML element.\n */\n HTMLRenderer.prototype.html = function (str, x, y) {\n var wrapper = this.createElement('span'), element = wrapper.element, renderer = wrapper.renderer, isSVG = renderer.isSVG, addSetters = function (gWrapper, style) {\n // These properties are set as attributes on the SVG group, and\n // as identical CSS properties on the div. (#3542)\n ['opacity', 'visibility'].forEach(function (prop) {\n gWrapper[prop + 'Setter'] = function (value, key, elem) {\n var styleObject = gWrapper.div ?\n gWrapper.div.style :\n style;\n SVGElement.prototype[prop + 'Setter']\n .call(this, value, key, elem);\n if (styleObject) {\n styleObject[key] = value;\n }\n };\n });\n gWrapper.addedSetters = true;\n };\n // Text setter\n wrapper.textSetter = function (value) {\n if (value !== this.textStr) {\n delete this.bBox;\n delete this.oldTextWidth;\n AST.setElementHTML(this.element, pick(value, ''));\n this.textStr = value;\n wrapper.doTransform = true;\n }\n };\n // Add setters for the element itself (#4938)\n if (isSVG) { // #4938, only for HTML within SVG\n addSetters(wrapper, wrapper.element.style);\n }\n // Various setters which rely on update transform\n wrapper.xSetter =\n wrapper.ySetter =\n wrapper.alignSetter =\n wrapper.rotationSetter =\n function (value, key) {\n if (key === 'align') {\n // Do not overwrite the SVGElement.align method. Same as VML.\n wrapper.alignValue = wrapper.textAlign = value;\n }\n else {\n wrapper[key] = value;\n }\n wrapper.doTransform = true;\n };\n // Runs at the end of .attr()\n wrapper.afterSetters = function () {\n // Update transform. Do this outside the loop to prevent redundant\n // updating for batch setting of attributes.\n if (this.doTransform) {\n this.htmlUpdateTransform();\n this.doTransform = false;\n }\n };\n // Set the default attributes\n wrapper\n .attr({\n text: str,\n x: Math.round(x),\n y: Math.round(y)\n })\n .css({\n position: 'absolute'\n });\n if (!renderer.styledMode) {\n wrapper.css({\n fontFamily: this.style.fontFamily,\n fontSize: this.style.fontSize\n });\n }\n // Keep the whiteSpace style outside the wrapper.styles collection\n element.style.whiteSpace = 'nowrap';\n // Use the HTML specific .css method\n wrapper.css = wrapper.htmlCss;\n // This is specific for HTML within SVG\n if (isSVG) {\n wrapper.add = function (svgGroupWrapper) {\n var container = renderer.box.parentNode,\n parents = [];\n var htmlGroup,\n parentGroup;\n this.parentGroup = svgGroupWrapper;\n // Create a mock group to hold the HTML elements\n if (svgGroupWrapper) {\n htmlGroup = svgGroupWrapper.div;\n if (!htmlGroup) {\n // Read the parent chain into an array and read from top\n // down\n parentGroup = svgGroupWrapper;\n while (parentGroup) {\n parents.push(parentGroup);\n // Move up to the next parent group\n parentGroup = parentGroup.parentGroup;\n }\n // Ensure dynamically updating position when any parent\n // is translated\n parents.reverse().forEach(function (parentGroup) {\n var cls = attr(parentGroup.element, 'class');\n /**\n * Common translate setter for X and Y on the HTML\n * group. Reverted the fix for #6957 du to\n * positioning problems and offline export (#7254,\n * #7280, #7529)\n * @private\n * @param {*} value\n * @param {string} key\n */\n function translateSetter(value, key) {\n parentGroup[key] = value;\n if (key === 'translateX') {\n htmlGroupStyle.left = value + 'px';\n }\n else {\n htmlGroupStyle.top = value + 'px';\n }\n parentGroup.doTransform = true;\n }\n // Create a HTML div and append it to the parent div\n // to emulate the SVG group structure\n var parentGroupStyles = parentGroup.styles || {};\n htmlGroup =\n parentGroup.div =\n parentGroup.div || createElement('div', cls ? { className: cls } : void 0, {\n position: 'absolute',\n left: (parentGroup.translateX || 0) + 'px',\n top: (parentGroup.translateY || 0) + 'px',\n display: parentGroup.display,\n opacity: parentGroup.opacity,\n cursor: parentGroupStyles.cursor,\n pointerEvents: (\n // #5595\n parentGroupStyles.pointerEvents),\n visibility: parentGroup.visibility\n // the top group is appended to container\n }, htmlGroup || container);\n // Shortcut\n var htmlGroupStyle = htmlGroup.style;\n // Set listeners to update the HTML div's position\n // whenever the SVG group position is changed.\n extend(parentGroup, {\n // (#7287) Pass htmlGroup to use\n // the related group\n classSetter: (function (htmlGroup) {\n return function (value) {\n this.element.setAttribute('class', value);\n htmlGroup.className = value;\n };\n }(htmlGroup)),\n on: function () {\n if (parents[0].div) { // #6418\n wrapper.on.apply({\n element: parents[0].div,\n onEvents: parentGroup.onEvents\n }, arguments);\n }\n return parentGroup;\n },\n translateXSetter: translateSetter,\n translateYSetter: translateSetter\n });\n if (!parentGroup.addedSetters) {\n addSetters(parentGroup);\n }\n });\n }\n }\n else {\n htmlGroup = container;\n }\n htmlGroup.appendChild(element);\n // Shared with VML:\n wrapper.added = true;\n if (wrapper.alignOnAdd) {\n wrapper.htmlUpdateTransform();\n }\n return wrapper;\n };\n }\n return wrapper;\n };\n /* *\n *\n * Static Properties\n *\n * */\n HTMLRenderer.composedClasses = [];\n return HTMLRenderer;\n }(SVGRenderer));\n /* *\n *\n * Default Export\n *\n * */\n\n return HTMLRenderer;\n });\n _registerModule(_modules, 'Core/Axis/AxisDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n var AxisDefaults;\n (function (AxisDefaults) {\n /* *\n *\n * Constants\n *\n * */\n /**\n * The X axis or category axis. Normally this is the horizontal axis,\n * though if the chart is inverted this is the vertical axis. In case of\n * multiple axes, the xAxis node is an array of configuration objects.\n *\n * See the [Axis class](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis is hidden, but it is used behind the scenes to\n * control features like zooming and panning. Zooming is in effect the same\n * as setting the extremes of one of the exes.\n *\n * @type {*|Array<*>}\n * @optionparent xAxis\n */\n AxisDefaults.defaultXAxisOptions = {\n /**\n * When using multiple axis, the ticks of two or more opposite axes\n * will automatically be aligned by adding ticks to the axis or axes\n * with the least ticks, as if `tickAmount` were specified.\n *\n * This can be prevented by setting `alignTicks` to false. If the grid\n * lines look messy, it's a good idea to hide them for the secondary\n * axis by setting `gridLineWidth` to 0.\n *\n * If `startOnTick` or `endOnTick` in an Axis options are set to false,\n * then the `alignTicks ` will be disabled for the Axis.\n *\n * Disabled for logarithmic axes.\n *\n * @product highcharts highstock gantt\n */\n alignTicks: true,\n /**\n * Whether to allow decimals in this axis' ticks. When counting\n * integers, like persons or hits on a web page, decimals should\n * be avoided in the labels. By default, decimals are allowed on small\n * scale axes.\n *\n * @see [minTickInterval](#xAxis.minTickInterval)\n *\n * @sample {highcharts|highstock} highcharts/yaxis/allowdecimals-true/\n * True by default\n * @sample {highcharts|highstock} highcharts/yaxis/allowdecimals-false/\n * False\n *\n * @type {boolean|undefined}\n * @default undefined\n * @since 2.0\n */\n allowDecimals: void 0,\n /**\n * When using an alternate grid color, a band is painted across the\n * plot area between every other grid line.\n *\n * @sample {highcharts} highcharts/yaxis/alternategridcolor/\n * Alternate grid color on the Y axis\n * @sample {highstock} stock/xaxis/alternategridcolor/\n * Alternate grid color on the Y axis\n *\n * @type {Highcharts.ColorType}\n * @apioption xAxis.alternateGridColor\n */\n /**\n * An array defining breaks in the axis, the sections defined will be\n * left out and all the points shifted closer to each other.\n *\n * @productdesc {highcharts}\n * Requires that the broken-axis.js module is loaded.\n *\n * @sample {highcharts} highcharts/axisbreak/break-simple/\n * Simple break\n * @sample {highcharts|highstock} highcharts/axisbreak/break-visualized/\n * Advanced with callback\n * @sample {highstock} stock/demo/intraday-breaks/\n * Break on nights and weekends\n *\n * @type {Array<*>}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks\n */\n /**\n * A number indicating how much space should be left between the start\n * and the end of the break. The break size is given in axis units,\n * so for instance on a `datetime` axis, a break size of 3600000 would\n * indicate the equivalent of an hour.\n *\n * @type {number}\n * @default 0\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.breakSize\n */\n /**\n * The point where the break starts.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.from\n */\n /**\n * Defines an interval after which the break appears again. By default\n * the breaks do not repeat.\n *\n * @type {number}\n * @default 0\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.repeat\n */\n /**\n * The point where the break ends.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.to\n */\n /**\n * If categories are present for the xAxis, names are used instead of\n * numbers for that axis.\n *\n * Since Highcharts 3.0, categories can also\n * be extracted by giving each point a [name](#series.data) and setting\n * axis [type](#xAxis.type) to `category`. However, if you have multiple\n * series, best practice remains defining the `categories` array.\n *\n * Example: `categories: ['Apples', 'Bananas', 'Oranges']`\n *\n * @sample {highcharts} highcharts/demo/line-labels/\n * With\n * @sample {highcharts} highcharts/xaxis/categories/\n * Without\n *\n * @type {Array<string>}\n * @product highcharts gantt\n * @apioption xAxis.categories\n */\n /**\n * The highest allowed value for automatically computed axis extremes.\n *\n * @see [floor](#xAxis.floor)\n *\n * @sample {highcharts|highstock} highcharts/yaxis/floor-ceiling/\n * Floor and ceiling\n *\n * @type {number}\n * @since 4.0\n * @product highcharts highstock gantt\n * @apioption xAxis.ceiling\n */\n /**\n * A class name that opens for styling the axis by CSS, especially in\n * Highcharts styled mode. The class name is applied to group elements\n * for the grid, axis elements and labels.\n *\n * @sample {highcharts|highstock|highmaps} highcharts/css/axis/\n * Multiple axes with separate styling\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.className\n */\n /**\n * Configure a crosshair that follows either the mouse pointer or the\n * hovered point.\n *\n * In styled mode, the crosshairs are styled in the\n * `.highcharts-crosshair`, `.highcharts-crosshair-thin` or\n * `.highcharts-xaxis-category` classes.\n *\n * @productdesc {highstock}\n * In Highcharts stock, by default, the crosshair is enabled on the\n * X axis and disabled on the Y axis.\n *\n * @sample {highcharts} highcharts/xaxis/crosshair-both/\n * Crosshair on both axes\n * @sample {highstock} stock/xaxis/crosshairs-xy/\n * Crosshair on both axes\n * @sample {highmaps} highcharts/xaxis/crosshair-both/\n * Crosshair on both axes\n *\n * @declare Highcharts.AxisCrosshairOptions\n * @type {boolean|*}\n * @default false\n * @since 4.1\n * @apioption xAxis.crosshair\n */\n /**\n * A class name for the crosshair, especially as a hook for styling.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.crosshair.className\n */\n /**\n * The color of the crosshair. Defaults to `#cccccc` for numeric and\n * datetime axes, and `rgba(204,214,235,0.25)` for category axes, where\n * the crosshair by default highlights the whole category.\n *\n * @sample {highcharts|highstock|highmaps} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n *\n * @type {Highcharts.ColorType}\n * @default #cccccc\n * @since 4.1\n * @apioption xAxis.crosshair.color\n */\n /**\n * The dash style for the crosshair. See\n * [plotOptions.series.dashStyle](#plotOptions.series.dashStyle)\n * for possible values.\n *\n * @sample {highcharts|highmaps} highcharts/xaxis/crosshair-dotted/\n * Dotted crosshair\n * @sample {highstock} stock/xaxis/crosshair-dashed/\n * Dashed X axis crosshair\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 4.1\n * @apioption xAxis.crosshair.dashStyle\n */\n /**\n * A label on the axis next to the crosshair.\n *\n * In styled mode, the label is styled with the\n * `.highcharts-crosshair-label` class.\n *\n * @sample {highstock} stock/xaxis/crosshair-label/\n * Crosshair labels\n * @sample {highstock} highcharts/css/crosshair-label/\n * Style mode\n *\n * @declare Highcharts.AxisCrosshairLabelOptions\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label\n */\n /**\n * Alignment of the label compared to the axis. Defaults to `\"left\"` for\n * right-side axes, `\"right\"` for left-side axes and `\"center\"` for\n * horizontal axes.\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.align\n */\n /**\n * The background color for the label. Defaults to the related series\n * color, or `#666666` if that is not available.\n *\n * @type {Highcharts.ColorType}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.backgroundColor\n */\n /**\n * The border color for the crosshair label\n *\n * @type {Highcharts.ColorType}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.borderColor\n */\n /**\n * The border corner radius of the crosshair label.\n *\n * @type {number}\n * @default 3\n * @since 2.1.10\n * @product highstock\n * @apioption xAxis.crosshair.label.borderRadius\n */\n /**\n * The border width for the crosshair label.\n *\n * @type {number}\n * @default 0\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.borderWidth\n */\n /**\n * Flag to enable crosshair's label.\n *\n * @sample {highstock} stock/xaxis/crosshairs-xy/\n * Enabled label for yAxis' crosshair\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.enabled\n */\n /**\n * A format string for the crosshair label. Defaults to `{value}` for\n * numeric axes and `{value:%b %d, %Y}` for datetime axes.\n *\n * @type {string}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.format\n */\n /**\n * Formatter function for the label text.\n *\n * @type {Highcharts.XAxisCrosshairLabelFormatterCallbackFunction}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.formatter\n */\n /**\n * Padding inside the crosshair label.\n *\n * @type {number}\n * @default 8\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.padding\n */\n /**\n * The shape to use for the label box.\n *\n * @type {string}\n * @default callout\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.shape\n */\n /**\n * Text styles for the crosshair label.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"white\", \"fontWeight\": \"normal\", \"fontSize\": \"11px\", \"textAlign\": \"center\"}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.style\n */\n /**\n * Whether the crosshair should snap to the point or follow the pointer\n * independent of points.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/crosshair-snap-false/\n * True by default\n * @sample {highmaps} maps/demo/latlon-advanced/\n * Snap is false\n *\n * @type {boolean}\n * @default true\n * @since 4.1\n * @apioption xAxis.crosshair.snap\n */\n /**\n * The pixel width of the crosshair. Defaults to 1 for numeric or\n * datetime axes, and for one category width for category axes.\n *\n * @sample {highcharts} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n * @sample {highstock} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n * @sample {highmaps} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n *\n * @type {number}\n * @default 1\n * @since 4.1\n * @apioption xAxis.crosshair.width\n */\n /**\n * The Z index of the crosshair. Higher Z indices allow drawing the\n * crosshair on top of the series or behind the grid lines.\n *\n * @type {number}\n * @default 2\n * @since 4.1\n * @apioption xAxis.crosshair.zIndex\n */\n /**\n * Whether to pan axis. If `chart.panning` is enabled, the option\n * allows to disable panning on an individual axis.\n */\n panningEnabled: true,\n /**\n * The Z index for the axis group.\n */\n zIndex: 2,\n /**\n * Whether to zoom axis. If `chart.zoomType` is set, the option allows\n * to disable zooming on an individual axis.\n *\n * @sample {highcharts} highcharts/xaxis/zoomenabled/\n * Zoom enabled is false\n */\n zoomEnabled: true,\n /**\n * For a datetime axis, the scale will automatically adjust to the\n * appropriate unit. This member gives the default string\n * representations used for each unit. For intermediate values,\n * different units may be used, for example the `day` unit can be used\n * on midnight and `hour` unit be used for intermediate values on the\n * same axis.\n *\n * For an overview of the replacement codes, see\n * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n *\n * Defaults to:\n * ```js\n * {\n * millisecond: '%H:%M:%S.%L',\n * second: '%H:%M:%S',\n * minute: '%H:%M',\n * hour: '%H:%M',\n * day: '%e. %b',\n * week: '%e. %b',\n * month: '%b \\'%y',\n * year: '%Y'\n * }\n * ```\n *\n * @sample {highcharts} highcharts/xaxis/datetimelabelformats/\n * Different day format on X axis\n * @sample {highstock} stock/xaxis/datetimelabelformats/\n * More information in x axis labels\n *\n * @declare Highcharts.AxisDateTimeLabelFormatsOptions\n * @product highcharts highstock gantt\n */\n dateTimeLabelFormats: {\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n millisecond: {\n main: '%H:%M:%S.%L',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n second: {\n main: '%H:%M:%S',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n minute: {\n main: '%H:%M',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n hour: {\n main: '%H:%M',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n day: {\n main: '%e. %b'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n week: {\n main: '%e. %b'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n month: {\n main: '%b \\'%y'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n year: {\n main: '%Y'\n }\n },\n /**\n * Whether to force the axis to end on a tick. Use this option with\n * the `maxPadding` option to control the axis end.\n *\n * @productdesc {highstock}\n * In Highcharts Stock, `endOnTick` is always `false` when the navigator\n * is enabled, to prevent jumpy scrolling.\n *\n * @sample {highcharts} highcharts/yaxis/endontick/\n * True by default\n * @sample {highcharts} highcharts/yaxis/endontick-false/\n * False\n * @sample {highstock} stock/demo/basic-line/\n * True by default\n * @sample {highstock} stock/xaxis/endontick/\n * False\n *\n * @since 1.2.0\n */\n endOnTick: false,\n /**\n * Event handlers for the axis.\n *\n * @type {*}\n * @apioption xAxis.events\n */\n /**\n * An event fired after the breaks have rendered.\n *\n * @see [breaks](#xAxis.breaks)\n *\n * @sample {highcharts} highcharts/axisbreak/break-event/\n * AfterBreak Event\n *\n * @type {Highcharts.AxisEventCallbackFunction}\n * @since 4.1.0\n * @product highcharts gantt\n * @apioption xAxis.events.afterBreaks\n */\n /**\n * As opposed to the `setExtremes` event, this event fires after the\n * final min and max values are computed and corrected for `minRange`.\n *\n * Fires when the minimum and maximum is set for the axis, either by\n * calling the `.setExtremes()` method or by selecting an area in the\n * chart. One parameter, `event`, is passed to the function, containing\n * common event information.\n *\n * The new user set minimum and maximum values can be found by\n * `event.min` and `event.max`. These reflect the axis minimum and\n * maximum in axis values. The actual data extremes are found in\n * `event.dataMin` and `event.dataMax`.\n *\n * @type {Highcharts.AxisSetExtremesEventCallbackFunction}\n * @since 2.3\n * @context Highcharts.Axis\n * @apioption xAxis.events.afterSetExtremes\n */\n /**\n * An event fired when a break from this axis occurs on a point.\n *\n * @see [breaks](#xAxis.breaks)\n *\n * @sample {highcharts} highcharts/axisbreak/break-visualized/\n * Visualization of a Break\n *\n * @type {Highcharts.AxisPointBreakEventCallbackFunction}\n * @since 4.1.0\n * @product highcharts gantt\n * @context Highcharts.Axis\n * @apioption xAxis.events.pointBreak\n */\n /**\n * An event fired when a point falls inside a break from this axis.\n *\n * @type {Highcharts.AxisPointBreakEventCallbackFunction}\n * @product highcharts highstock gantt\n * @context Highcharts.Axis\n * @apioption xAxis.events.pointInBreak\n */\n /**\n * Fires when the minimum and maximum is set for the axis, either by\n * calling the `.setExtremes()` method or by selecting an area in the\n * chart. One parameter, `event`, is passed to the function,\n * containing common event information.\n *\n * The new user set minimum and maximum values can be found by\n * `event.min` and `event.max`. These reflect the axis minimum and\n * maximum in data values. When an axis is zoomed all the way out from\n * the \"Reset zoom\" button, `event.min` and `event.max` are null, and\n * the new extremes are set based on `this.dataMin` and `this.dataMax`.\n *\n * @sample {highstock} stock/xaxis/events-setextremes/\n * Log new extremes on x axis\n *\n * @type {Highcharts.AxisSetExtremesEventCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Axis\n * @apioption xAxis.events.setExtremes\n */\n /**\n * The lowest allowed value for automatically computed axis extremes.\n *\n * @see [ceiling](#yAxis.ceiling)\n *\n * @sample {highcharts} highcharts/yaxis/floor-ceiling/\n * Floor and ceiling\n * @sample {highstock} stock/demo/lazy-loading/\n * Prevent negative stock price on Y axis\n *\n * @type {number}\n * @since 4.0\n * @product highcharts highstock gantt\n * @apioption xAxis.floor\n */\n /**\n * The dash or dot style of the grid lines. For possible values, see\n * [this demonstration](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/yaxis/gridlinedashstyle/\n * Long dashes\n * @sample {highstock} stock/xaxis/gridlinedashstyle/\n * Long dashes\n *\n * @type {Highcharts.DashStyleValue}\n * @since 1.2\n */\n gridLineDashStyle: 'Solid',\n /**\n * The Z index of the grid lines.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/gridzindex/\n * A Z index of 4 renders the grid above the graph\n *\n * @product highcharts highstock gantt\n */\n gridZIndex: 1,\n /**\n * An id for the axis. This can be used after render time to get\n * a pointer to the axis object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/xaxis/id/\n * Get the object\n * @sample {highstock} stock/xaxis/id/\n * Get the object\n *\n * @type {string}\n * @since 1.2.0\n * @apioption xAxis.id\n */\n /**\n * The axis labels show the number or category for each tick.\n *\n * Since v8.0.0: Labels are animated in categorized x-axis with\n * updating data if `tickInterval` and `step` is set to 1.\n *\n * @productdesc {highmaps}\n * X and Y axis labels are by default disabled in Highmaps, but the\n * functionality is inherited from Highcharts and used on `colorAxis`,\n * and can be enabled on X and Y axes too.\n */\n labels: {\n /**\n * What part of the string the given position is anchored to.\n * If `left`, the left side of the string is at the axis position.\n * Can be one of `\"left\"`, `\"center\"` or `\"right\"`. Defaults to\n * an intelligent guess based on which side of the chart the axis\n * is on and the rotation of the label.\n *\n * @see [reserveSpace](#xAxis.labels.reserveSpace)\n *\n * @sample {highcharts} highcharts/xaxis/labels-align-left/\n * Left\n * @sample {highcharts} highcharts/xaxis/labels-align-right/\n * Right\n * @sample {highcharts} highcharts/xaxis/labels-reservespace-true/\n * Left-aligned labels on a vertical category axis\n *\n * @type {Highcharts.AlignValue}\n * @apioption xAxis.labels.align\n */\n /**\n * Whether to allow the axis labels to overlap.\n * When false, overlapping labels are hidden.\n *\n * @sample {highcharts} highcharts/xaxis/labels-allowoverlap-true/\n * X axis labels overlap enabled\n *\n * @type {boolean}\n * @default false\n * @apioption xAxis.labels.allowOverlap\n *\n */\n /**\n * For horizontal axes, the allowed degrees of label rotation\n * to prevent overlapping labels. If there is enough space,\n * labels are not rotated. As the chart gets narrower, it\n * will start rotating the labels -45 degrees, then remove\n * every second label and try again with rotations 0 and -45 etc.\n * Set it to `undefined` to disable rotation, which will\n * cause the labels to word-wrap if possible. Defaults to `[-45]``\n * on bottom and top axes, `undefined` on left and right axes.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/labels-autorotation-default/\n * Default auto rotation of 0 or -45\n * @sample {highcharts|highstock} highcharts/xaxis/labels-autorotation-0-90/\n * Custom graded auto rotation\n *\n * @type {Array<number>}\n * @default undefined\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.labels.autoRotation\n */\n autoRotation: void 0,\n /**\n * When each category width is more than this many pixels, we don't\n * apply auto rotation. Instead, we lay out the axis label with word\n * wrap. A lower limit makes sense when the label contains multiple\n * short words that don't extend the available horizontal space for\n * each label.\n *\n * @sample {highcharts} highcharts/xaxis/labels-autorotationlimit/\n * Lower limit\n *\n * @since 4.1.5\n * @product highcharts gantt\n */\n autoRotationLimit: 80,\n /**\n * Polar charts only. The label's pixel distance from the perimeter\n * of the plot area.\n *\n * @type {number}\n * @default undefined\n * @product highcharts gantt\n */\n distance: void 0,\n /**\n * Enable or disable the axis labels.\n *\n * @sample {highcharts} highcharts/xaxis/labels-enabled/\n * X axis labels disabled\n * @sample {highstock} stock/xaxis/labels-enabled/\n * X axis labels disabled\n *\n * @default {highcharts|highstock|gantt} true\n * @default {highmaps} false\n */\n enabled: true,\n /**\n * A format string for the axis label. The context is available as\n * format string variables. For example, you can use `{text}` to\n * insert the default formatted text. The recommended way of adding\n * units for the label is using `text`, for example `{text} km`.\n *\n * To add custom numeric or datetime formatting, use `{value}` with\n * formatting, for example `{value:.1f}` or `{value:%Y-%m-%d}`.\n *\n * See\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for more examples of formatting.\n *\n * The default value is not specified due to the dynamic\n * nature of the default implementation.\n *\n * @sample {highcharts|highstock} highcharts/yaxis/labels-format/\n * Add units to Y axis label\n * @sample {highcharts} highcharts/xaxis/labels-format-linked/\n * Linked category names\n * @sample {highcharts} highcharts/xaxis/labels-format-custom/\n * Custom number format\n *\n * @type {string}\n * @since 3.0\n * @apioption xAxis.labels.format\n */\n /**\n * Callback JavaScript function to format the label. The value\n * is given by `this.value`. Additional properties for `this` are\n * `axis`, `chart`, `isFirst`, `isLast` and `text` which holds the\n * value of the default formatter.\n *\n * Defaults to a built in function returning a formatted string\n * depending on whether the axis is `category`, `datetime`,\n * `numeric` or other.\n *\n * @sample {highcharts} highcharts/xaxis/labels-formatter-linked/\n * Linked category names\n * @sample {highcharts} highcharts/xaxis/labels-formatter-extended/\n * Modified numeric labels\n * @sample {highstock} stock/xaxis/labels-formatter/\n * Added units on Y axis\n *\n * @type {Highcharts.AxisLabelsFormatterCallbackFunction}\n * @apioption xAxis.labels.formatter\n */\n /**\n * The number of pixels to indent the labels per level in a treegrid\n * axis.\n *\n * @sample gantt/treegrid-axis/demo\n * Indentation 10px by default.\n * @sample gantt/treegrid-axis/indentation-0px\n * Indentation set to 0px.\n *\n * @product gantt\n */\n indentation: 10,\n /**\n * Horizontal axis only. When `staggerLines` is not set,\n * `maxStaggerLines` defines how many lines the axis is allowed to\n * add to automatically avoid overlapping X labels. Set to `1` to\n * disable overlap detection.\n *\n * @deprecated\n * @type {number}\n * @default 5\n * @since 1.3.3\n * @apioption xAxis.labels.maxStaggerLines\n */\n /**\n * How to handle overflowing labels on horizontal axis. If set to\n * `\"allow\"`, it will not be aligned at all. By default it\n * `\"justify\"` labels inside the chart area. If there is room to\n * move it, it will be aligned to the edge, else it will be removed.\n *\n * @since 2.2.5\n * @validvalue [\"allow\", \"justify\"]\n */\n overflow: 'justify',\n /**\n * The pixel padding for axis labels, to ensure white space between\n * them.\n *\n * @product highcharts gantt\n */\n padding: 5,\n /**\n * Whether to reserve space for the labels. By default, space is\n * reserved for the labels in these cases:\n *\n * * On all horizontal axes.\n * * On vertical axes if `label.align` is `right` on a left-side\n * axis or `left` on a right-side axis.\n * * On vertical axes if `label.align` is `center`.\n *\n * This can be turned off when for example the labels are rendered\n * inside the plot area instead of outside.\n *\n * @see [labels.align](#xAxis.labels.align)\n *\n * @sample {highcharts} highcharts/xaxis/labels-reservespace/\n * No reserved space, labels inside plot\n * @sample {highcharts} highcharts/xaxis/labels-reservespace-true/\n * Left-aligned labels on a vertical category axis\n *\n * @type {boolean}\n * @since 4.1.10\n * @product highcharts gantt\n * @apioption xAxis.labels.reserveSpace\n */\n reserveSpace: void 0,\n /**\n * Rotation of the labels in degrees. When `undefined`, the\n * `autoRotation` option takes precedence.\n *\n * @sample {highcharts} highcharts/xaxis/labels-rotation/\n * X axis labels rotated 90°\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.labels.rotation\n */\n rotation: void 0,\n /**\n * Horizontal axes only. The number of lines to spread the labels\n * over to make room or tighter labels. 0 disables staggering.\n *\n * @sample {highcharts} highcharts/xaxis/labels-staggerlines/\n * Show labels over two lines\n * @sample {highstock} stock/xaxis/labels-staggerlines/\n * Show labels over two lines\n *\n * @since 2.1\n */\n staggerLines: 0,\n /**\n * To show only every _n_'th label on the axis, set the step to _n_.\n * Setting the step to 2 shows every other label.\n *\n * By default, when 0, the step is calculated automatically to avoid\n * overlap. To prevent this, set it to 1\\. This usually only\n * happens on a category axis, and is often a sign that you have\n * chosen the wrong axis type.\n *\n * Read more at\n * [Axis docs](https://www.highcharts.com/docs/chart-concepts/axes)\n * => What axis should I use?\n *\n * @sample {highcharts} highcharts/xaxis/labels-step/\n * Showing only every other axis label on a categorized\n * x-axis\n * @sample {highcharts} highcharts/xaxis/labels-step-auto/\n * Auto steps on a category axis\n *\n * @since 2.1\n */\n step: 0,\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n */\n useHTML: false,\n /**\n * The x position offset of all labels relative to the tick\n * positions on the axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n */\n x: 0,\n /**\n * The y position offset of all labels relative to the tick\n * positions on the axis. The default makes it adapt to the font\n * size of the bottom axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n *\n * @type {number}\n * @apioption xAxis.labels.y\n */\n /**\n * The Z index for the axis labels.\n */\n zIndex: 7,\n /**\n * CSS styles for the label. Use `whiteSpace: 'nowrap'` to prevent\n * wrapping of category labels. Use `textOverflow: 'none'` to\n * prevent ellipsis (dots).\n *\n * In styled mode, the labels are styled with the\n * `.highcharts-axis-labels` class.\n *\n * @sample {highcharts} highcharts/xaxis/labels-style/\n * Red X axis labels\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#666666\" /* neutralColor60 */,\n /** @internal */\n cursor: 'default',\n /** @internal */\n fontSize: '11px'\n }\n },\n /**\n * The left position as the horizontal axis. If it's a number, it is\n * interpreted as pixel position relative to the chart.\n *\n * Since Highcharts v5.0.13: If it's a percentage string, it is\n * interpreted as percentages of the plot width, offset from plot area\n * left.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.left\n */\n /**\n * The top position as the vertical axis. If it's a number, it is\n * interpreted as pixel position relative to the chart.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted\n * as percentages of the plot height, offset from plot area top.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.top\n */\n /**\n * Index of another axis that this axis is linked to. When an axis is\n * linked to a master axis, it will take the same extremes as\n * the master, but as assigned by min or max or by setExtremes.\n * It can be used to show additional info, or to ease reading the\n * chart by duplicating the scales.\n *\n * @sample {highcharts} highcharts/xaxis/linkedto/\n * Different string formats of the same date\n * @sample {highcharts} highcharts/yaxis/linkedto/\n * Y values on both sides\n *\n * @type {number}\n * @since 2.0.2\n * @product highcharts highstock gantt\n * @apioption xAxis.linkedTo\n */\n /**\n * The maximum value of the axis. If `null`, the max value is\n * automatically calculated.\n *\n * If the [endOnTick](#yAxis.endOnTick) option is true, the `max` value\n * might be rounded up.\n *\n * If a [tickAmount](#yAxis.tickAmount) is set, the axis may be extended\n * beyond the set max in order to reach the given number of ticks. The\n * same may happen in a chart with multiple axes, determined by [chart.\n * alignTicks](#chart), where a `tickAmount` is applied internally.\n *\n * @sample {highcharts} highcharts/yaxis/max-200/\n * Y axis max of 200\n * @sample {highcharts} highcharts/yaxis/max-logarithmic/\n * Y axis max on logarithmic axis\n * @sample {highstock} stock/xaxis/min-max/\n * Fixed min and max on X axis\n *\n * @type {number|null}\n * @apioption xAxis.max\n */\n /**\n * Padding of the max value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the highest data value to appear on the edge\n * of the plot area. When the axis' `max` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * @productdesc {highstock}\n * For an [ordinal](#xAxis.ordinal) axis, `minPadding` and `maxPadding`\n * are ignored. Use [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highcharts} highcharts/yaxis/maxpadding/\n * Max padding of 0.25 on y axis\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Add some padding\n *\n * @default {highcharts} 0.01\n * @default {highstock|highmaps} 0\n * @since 1.2.0\n */\n maxPadding: 0.01,\n /**\n * Deprecated. Use `minRange` instead.\n *\n * @deprecated\n * @type {number}\n * @product highcharts highstock\n * @apioption xAxis.maxZoom\n */\n /**\n * The minimum value of the axis. If `null` the min value is\n * automatically calculated.\n *\n * If the [startOnTick](#yAxis.startOnTick) option is true (default),\n * the `min` value might be rounded down.\n *\n * The automatically calculated minimum value is also affected by\n * [floor](#yAxis.floor), [softMin](#yAxis.softMin),\n * [minPadding](#yAxis.minPadding), [minRange](#yAxis.minRange)\n * as well as [series.threshold](#plotOptions.series.threshold)\n * and [series.softThreshold](#plotOptions.series.softThreshold).\n *\n * @sample {highcharts} highcharts/yaxis/min-startontick-false/\n * -50 with startOnTick to false\n * @sample {highcharts} highcharts/yaxis/min-startontick-true/\n * -50 with startOnTick true by default\n * @sample {highstock} stock/xaxis/min-max/\n * Set min and max on X axis\n *\n * @type {number|null}\n * @apioption xAxis.min\n */\n /**\n * The dash or dot style of the minor grid lines. For possible values,\n * see [this demonstration](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinedashstyle/\n * Long dashes on minor grid lines\n * @sample {highstock} stock/xaxis/minorgridlinedashstyle/\n * Long dashes on minor grid lines\n *\n * @type {Highcharts.DashStyleValue}\n * @since 1.2\n */\n minorGridLineDashStyle: 'Solid',\n /**\n * Specific tick interval in axis units for the minor ticks. On a linear\n * axis, if `\"auto\"`, the minor tick interval is calculated as a fifth\n * of the tickInterval. If `null` or `undefined`, minor ticks are not\n * shown.\n *\n * On logarithmic axes, the unit is the power of the value. For example,\n * setting the minorTickInterval to 1 puts one tick on each of 0.1, 1,\n * 10, 100 etc. Setting the minorTickInterval to 0.1 produces 9 ticks\n * between 1 and 10, 10 and 100 etc.\n *\n * If user settings dictate minor ticks to become too dense, they don't\n * make sense, and will be ignored to prevent performance problems.\n *\n * @sample {highcharts} highcharts/yaxis/minortickinterval-null/\n * Null by default\n * @sample {highcharts} highcharts/yaxis/minortickinterval-5/\n * 5 units\n * @sample {highcharts} highcharts/yaxis/minortickinterval-log-auto/\n * \"auto\"\n * @sample {highcharts} highcharts/yaxis/minortickinterval-log/\n * 0.1\n * @sample {highstock} stock/demo/basic-line/\n * Null by default\n * @sample {highstock} stock/xaxis/minortickinterval-auto/\n * \"auto\"\n *\n * @type {number|string|null}\n * @apioption xAxis.minorTickInterval\n */\n /**\n * The pixel length of the minor tick marks.\n *\n * @sample {highcharts} highcharts/yaxis/minorticklength/\n * 10px on Y axis\n * @sample {highstock} stock/xaxis/minorticks/\n * 10px on Y axis\n */\n minorTickLength: 2,\n /**\n * The position of the minor tick marks relative to the axis line.\n * Can be one of `inside` and `outside`.\n *\n * @sample {highcharts} highcharts/yaxis/minortickposition-outside/\n * Outside by default\n * @sample {highcharts} highcharts/yaxis/minortickposition-inside/\n * Inside\n * @sample {highstock} stock/xaxis/minorticks/\n * Inside\n *\n * @validvalue [\"inside\", \"outside\"]\n */\n minorTickPosition: 'outside',\n /**\n * Enable or disable minor ticks. Unless\n * [minorTickInterval](#xAxis.minorTickInterval) is set, the tick\n * interval is calculated as a fifth of the `tickInterval`.\n *\n * On a logarithmic axis, minor ticks are laid out based on a best\n * guess, attempting to enter approximately 5 minor ticks between\n * each major tick.\n *\n * Prior to v6.0.0, ticks were unabled in auto layout by setting\n * `minorTickInterval` to `\"auto\"`.\n *\n * @productdesc {highcharts}\n * On axes using [categories](#xAxis.categories), minor ticks are not\n * supported.\n *\n * @sample {highcharts} highcharts/yaxis/minorticks-true/\n * Enabled on linear Y axis\n *\n * @type {boolean}\n * @default false\n * @since 6.0.0\n * @apioption xAxis.minorTicks\n */\n /**\n * The pixel width of the minor tick mark.\n *\n * @sample {highcharts} highcharts/yaxis/minortickwidth/\n * 3px width\n * @sample {highstock} stock/xaxis/minorticks/\n * 1px width\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.minorTickWidth\n */\n /**\n * Padding of the min value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the lowest data value to appear on the edge\n * of the plot area. When the axis' `min` option is set or a min extreme\n * is set using `axis.setExtremes()`, the minPadding will be ignored.\n *\n * @productdesc {highstock}\n * For an [ordinal](#xAxis.ordinal) axis, `minPadding` and `maxPadding`\n * are ignored. Use [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highcharts} highcharts/yaxis/minpadding/\n * Min padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Add some padding\n *\n * @default {highcharts} 0.01\n * @default {highstock|highmaps} 0\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n minPadding: 0.01,\n /**\n * The minimum range to display on this axis. The entire axis will not\n * be allowed to span over a smaller interval than this. For example,\n * for a datetime axis the main unit is milliseconds. If minRange is\n * set to 3600000, you can't zoom in more than to one hour.\n *\n * The default minRange for the x axis is five times the smallest\n * interval between any of the data points.\n *\n * On a logarithmic axis, the unit for the minimum range is the power.\n * So a minRange of 1 means that the axis can be zoomed to 10-100,\n * 100-1000, 1000-10000 etc.\n *\n * **Note**: The `minPadding`, `maxPadding`, `startOnTick` and\n * `endOnTick` settings also affect how the extremes of the axis\n * are computed.\n *\n * @sample {highcharts} highcharts/xaxis/minrange/\n * Minimum range of 5\n * @sample {highstock} stock/xaxis/minrange/\n * Max zoom of 6 months overrides user selections\n *\n * @type {number}\n * @apioption xAxis.minRange\n */\n /**\n * The minimum tick interval allowed in axis values. For example on\n * zooming in on an axis with daily data, this can be used to prevent\n * the axis from showing hours. Defaults to the closest distance between\n * two points on the axis.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption xAxis.minTickInterval\n */\n /**\n * The distance in pixels from the plot area to the axis line.\n * A positive offset moves the axis with it's line, labels and ticks\n * away from the plot area. This is typically used when two or more\n * axes are displayed on the same side of the plot. With multiple\n * axes the offset is dynamically adjusted to avoid collision, this\n * can be overridden by setting offset explicitly.\n *\n * @sample {highcharts} highcharts/yaxis/offset/\n * Y axis offset of 70\n * @sample {highcharts} highcharts/yaxis/offset-centered/\n * Axes positioned in the center of the plot\n * @sample {highstock} stock/xaxis/offset/\n * Y axis offset by 70 px\n *\n * @type {number}\n */\n offset: void 0,\n /**\n * Whether to display the axis on the opposite side of the normal. The\n * normal is on the left side for vertical axes and bottom for\n * horizontal, so the opposite sides will be right and top respectively.\n * This is typically used with dual or multiple axes.\n *\n * @sample {highcharts} highcharts/yaxis/opposite/\n * Secondary Y axis opposite\n * @sample {highstock} stock/xaxis/opposite/\n * Y axis on left side\n *\n * @default {highcharts|highstock|highmaps} false\n * @default {gantt} true\n */\n opposite: false,\n /**\n * In an ordinal axis, the points are equally spaced in the chart\n * regardless of the actual time or x distance between them. This means\n * that missing data periods (e.g. nights or weekends for a stock chart)\n * will not take up space in the chart.\n * Having `ordinal: false` will show any gaps created by the `gapSize`\n * setting proportionate to their duration.\n *\n * In stock charts the X axis is ordinal by default, unless\n * the boost module is used and at least one of the series' data length\n * exceeds the [boostThreshold](#series.line.boostThreshold).\n *\n * For an ordinal axis, `minPadding` and `maxPadding` are ignored. Use\n * [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highstock} stock/xaxis/ordinal-true/\n * True by default\n * @sample {highstock} stock/xaxis/ordinal-false/\n * False\n *\n * @see [overscroll](#xAxis.overscroll)\n *\n * @type {boolean}\n * @default true\n * @since 1.1\n * @product highstock\n * @apioption xAxis.ordinal\n */\n /**\n * Additional range on the right side of the xAxis. Works similar to\n * `xAxis.maxPadding`, but value is set in milliseconds. Can be set for\n * both main `xAxis` and the navigator's `xAxis`.\n *\n * @sample {highstock} stock/xaxis/overscroll/\n * One minute overscroll with live data\n *\n * @type {number}\n * @default 0\n * @since 6.0.0\n * @product highstock\n * @apioption xAxis.overscroll\n */\n /**\n * Refers to the index in the [panes](#panes) array. Used for circular\n * gauges and polar charts. When the option is not set then first pane\n * will be used.\n *\n * @sample highcharts/demo/gauge-vu-meter\n * Two gauges with different center\n *\n * @type {number}\n * @product highcharts\n * @apioption xAxis.pane\n */\n /**\n * The zoomed range to display when only defining one or none of `min`\n * or `max`. For example, to show the latest month, a range of one month\n * can be set.\n *\n * @sample {highstock} stock/xaxis/range/\n * Setting a zoomed range when the rangeSelector is disabled\n *\n * @type {number}\n * @product highstock\n * @apioption xAxis.range\n */\n /**\n * Whether to reverse the axis so that the highest number is closest\n * to the origin. If the chart is inverted, the x axis is reversed by\n * default.\n *\n * @sample {highcharts} highcharts/yaxis/reversed/\n * Reversed Y axis\n * @sample {highstock} stock/xaxis/reversed/\n * Reversed Y axis\n *\n * @type {boolean}\n * @default undefined\n * @apioption xAxis.reversed\n */\n reversed: void 0,\n /**\n * This option determines how stacks should be ordered within a group.\n * For example reversed xAxis also reverses stacks, so first series\n * comes last in a group. To keep order like for non-reversed xAxis\n * enable this option.\n *\n * @sample {highcharts} highcharts/xaxis/reversedstacks/\n * Reversed stacks comparison\n * @sample {highstock} highcharts/xaxis/reversedstacks/\n * Reversed stacks comparison\n *\n * @since 6.1.1\n * @product highcharts highstock\n */\n reversedStacks: false,\n /**\n * An optional scrollbar to display on the X axis in response to\n * limiting the minimum and maximum of the axis values.\n *\n * In styled mode, all the presentational options for the scrollbar are\n * replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample {highstock} stock/yaxis/heatmap-scrollbars/\n * Heatmap with both scrollbars\n *\n * @extends scrollbar\n * @since 4.2.6\n * @product highstock\n * @apioption xAxis.scrollbar\n */\n /**\n * Whether to show the axis line and title when the axis has no data.\n *\n * @sample {highcharts} highcharts/yaxis/showempty/\n * When clicking the legend to hide series, one axis preserves\n * line and title, the other doesn't\n * @sample {highstock} highcharts/yaxis/showempty/\n * When clicking the legend to hide series, one axis preserves\n * line and title, the other doesn't\n *\n * @since 1.1\n */\n showEmpty: true,\n /**\n * Whether to show the first tick label.\n *\n * @sample {highcharts} highcharts/xaxis/showfirstlabel-false/\n * Set to false on X axis\n * @sample {highstock} stock/xaxis/showfirstlabel/\n * Labels below plot lines on Y axis\n */\n showFirstLabel: true,\n /**\n * Whether to show the last tick label. Defaults to `true` on cartesian\n * charts, and `false` on polar charts.\n *\n * @sample {highcharts} highcharts/xaxis/showlastlabel-true/\n * Set to true on X axis\n * @sample {highstock} stock/xaxis/showfirstlabel/\n * Labels below plot lines on Y axis\n *\n * @product highcharts highstock gantt\n */\n showLastLabel: true,\n /**\n * A soft maximum for the axis. If the series data maximum is less than\n * this, the axis will stay at this maximum, but if the series data\n * maximum is higher, the axis will flex to show all data.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption xAxis.softMax\n */\n /**\n * A soft minimum for the axis. If the series data minimum is greater\n * than this, the axis will stay at this minimum, but if the series\n * data minimum is lower, the axis will flex to show all data.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption xAxis.softMin\n */\n /**\n * For datetime axes, this decides where to put the tick between weeks.\n * 0 = Sunday, 1 = Monday.\n *\n * @sample {highcharts} highcharts/xaxis/startofweek-monday/\n * Monday by default\n * @sample {highcharts} highcharts/xaxis/startofweek-sunday/\n * Sunday\n * @sample {highstock} stock/xaxis/startofweek-1\n * Monday by default\n * @sample {highstock} stock/xaxis/startofweek-0\n * Sunday\n *\n * @product highcharts highstock gantt\n */\n startOfWeek: 1,\n /**\n * Whether to force the axis to start on a tick. Use this option with\n * the `minPadding` option to control the axis start.\n *\n * @productdesc {highstock}\n * In Highcharts Stock, `startOnTick` is always `false` when\n * the navigator is enabled, to prevent jumpy scrolling.\n *\n * @sample {highcharts} highcharts/xaxis/startontick-false/\n * False by default\n * @sample {highcharts} highcharts/xaxis/startontick-true/\n * True\n *\n * @since 1.2.0\n */\n startOnTick: false,\n /**\n * The amount of ticks to draw on the axis. This opens up for aligning\n * the ticks of multiple charts or panes within a chart. This option\n * overrides the `tickPixelInterval` option.\n *\n * This option only has an effect on linear axes. Datetime, logarithmic\n * or category axes are not affected.\n *\n * @sample {highcharts} highcharts/yaxis/tickamount/\n * 8 ticks on Y axis\n * @sample {highstock} highcharts/yaxis/tickamount/\n * 8 ticks on Y axis\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.tickAmount\n */\n /**\n * The interval of the tick marks in axis units. When `undefined`, the\n * tick interval is computed to approximately follow the\n * [tickPixelInterval](#xAxis.tickPixelInterval) on linear and datetime\n * axes. On categorized axes, a `undefined` tickInterval will default to\n * 1, one category. Note that datetime axes are based on milliseconds,\n * so for example an interval of one day is expressed as\n * `24 * 3600 * 1000`.\n *\n * On logarithmic axes, the tickInterval is based on powers, so a\n * tickInterval of 1 means one tick on each of 0.1, 1, 10, 100 etc. A\n * tickInterval of 2 means a tick of 0.1, 10, 1000 etc. A tickInterval\n * of 0.2 puts a tick on 0.1, 0.2, 0.4, 0.6, 0.8, 1, 2, 4, 6, 8, 10, 20,\n * 40 etc.\n *\n *\n * If the tickInterval is too dense for labels to be drawn, Highcharts\n * may remove ticks.\n *\n * If the chart has multiple axes, the [alignTicks](#chart.alignTicks)\n * option may interfere with the `tickInterval` setting.\n *\n * @see [tickPixelInterval](#xAxis.tickPixelInterval)\n * @see [tickPositions](#xAxis.tickPositions)\n * @see [tickPositioner](#xAxis.tickPositioner)\n *\n * @sample {highcharts} highcharts/xaxis/tickinterval-5/\n * Tick interval of 5 on a linear axis\n * @sample {highstock} stock/xaxis/tickinterval/\n * Tick interval of 0.01 on Y axis\n *\n * @type {number}\n * @apioption xAxis.tickInterval\n */\n /**\n * The pixel length of the main tick marks.\n *\n * @sample {highcharts} highcharts/xaxis/ticklength/\n * 20 px tick length on the X axis\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n */\n tickLength: 10,\n /**\n * If tickInterval is `null` this option sets the approximate pixel\n * interval of the tick marks. Not applicable to categorized axis.\n *\n * The tick interval is also influenced by the [minTickInterval](\n * #xAxis.minTickInterval) option, that, by default prevents ticks from\n * being denser than the data points.\n *\n * @see [tickInterval](#xAxis.tickInterval)\n * @see [tickPositioner](#xAxis.tickPositioner)\n * @see [tickPositions](#xAxis.tickPositions)\n *\n * @sample {highcharts} highcharts/xaxis/tickpixelinterval-50/\n * 50 px on X axis\n * @sample {highstock} stock/xaxis/tickpixelinterval/\n * 200 px on X axis\n */\n tickPixelInterval: 100,\n /**\n * For categorized axes only. If `on` the tick mark is placed in the\n * center of the category, if `between` the tick mark is placed between\n * categories. The default is `between` if the `tickInterval` is 1, else\n * `on`.\n *\n * @sample {highcharts} highcharts/xaxis/tickmarkplacement-between/\n * \"between\" by default\n * @sample {highcharts} highcharts/xaxis/tickmarkplacement-on/\n * \"on\"\n *\n * @product highcharts gantt\n * @validvalue [\"on\", \"between\"]\n */\n tickmarkPlacement: 'between',\n /**\n * The position of the major tick marks relative to the axis line.\n * Can be one of `inside` and `outside`.\n *\n * @sample {highcharts} highcharts/xaxis/tickposition-outside/\n * \"outside\" by default\n * @sample {highcharts} highcharts/xaxis/tickposition-inside/\n * \"inside\"\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n *\n * @validvalue [\"inside\", \"outside\"]\n */\n tickPosition: 'outside',\n /**\n * A callback function returning array defining where the ticks are\n * laid out on the axis. This overrides the default behaviour of\n * [tickPixelInterval](#xAxis.tickPixelInterval) and [tickInterval](\n * #xAxis.tickInterval). The automatic tick positions are accessible\n * through `this.tickPositions` and can be modified by the callback.\n *\n * @see [tickPositions](#xAxis.tickPositions)\n *\n * @sample {highcharts} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n * @sample {highstock} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n *\n * @type {Highcharts.AxisTickPositionerCallbackFunction}\n * @apioption xAxis.tickPositioner\n */\n /**\n * An array defining where the ticks are laid out on the axis. This\n * overrides the default behaviour of [tickPixelInterval](\n * #xAxis.tickPixelInterval) and [tickInterval](#xAxis.tickInterval).\n *\n * @see [tickPositioner](#xAxis.tickPositioner)\n *\n * @sample {highcharts} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n * @sample {highstock} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n *\n * @type {Array<number>}\n * @apioption xAxis.tickPositions\n */\n /**\n * The pixel width of the major tick marks. Defaults to 0 on category\n * axes, otherwise 1.\n *\n * In styled mode, the stroke width is given in the `.highcharts-tick`\n * class, but in order for the element to be generated on category axes,\n * the option must be explicitly set to 1.\n *\n * @sample {highcharts} highcharts/xaxis/tickwidth/\n * 10 px width\n * @sample {highcharts} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n * @sample {highstock} highcharts/css/axis-grid/\n * Styled mode\n *\n * @type {undefined|number}\n * @default {highstock} 1\n * @default {highmaps} 0\n * @apioption xAxis.tickWidth\n */\n /**\n * The axis title, showing next to the axis line.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis is hidden by default, but adding an axis title\n * is still possible. X axis and Y axis titles will appear at the bottom\n * and left by default.\n */\n title: {\n /**\n * Alignment of the title relative to the axis values. Possible\n * values are \"low\", \"middle\" or \"high\".\n *\n * @sample {highcharts} highcharts/xaxis/title-align-low/\n * \"low\"\n * @sample {highcharts} highcharts/xaxis/title-align-center/\n * \"middle\" by default\n * @sample {highcharts} highcharts/xaxis/title-align-high/\n * \"high\"\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Place the Y axis title on top of the axis\n * @sample {highstock} stock/xaxis/title-align/\n * Aligned to \"high\" value\n *\n * @type {Highcharts.AxisTitleAlignValue}\n */\n align: 'middle',\n /**\n * Deprecated. Set the `text` to `undefined` to disable the title.\n *\n * @deprecated\n * @type {boolean}\n * @product highcharts\n * @apioption xAxis.title.enabled\n */\n /**\n * The pixel distance between the axis labels or line and the title.\n * Defaults to 0 for horizontal axes, 10 for vertical\n *\n * @sample {highcharts} highcharts/xaxis/title-margin/\n * Y axis title margin of 60\n *\n * @type {number}\n * @apioption xAxis.title.margin\n */\n /**\n * The distance of the axis title from the axis line. By default,\n * this distance is computed from the offset width of the labels,\n * the labels' distance from the axis and the title's margin.\n * However when the offset option is set, it overrides all this.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Place the axis title on top of the axis\n * @sample {highstock} highcharts/yaxis/title-offset/\n * Place the axis title on top of the Y axis\n *\n * @type {number}\n * @since 2.2.0\n * @apioption xAxis.title.offset\n */\n /**\n * Whether to reserve space for the title when laying out the axis.\n *\n * @type {boolean}\n * @default true\n * @since 5.0.11\n * @product highcharts highstock gantt\n * @apioption xAxis.title.reserveSpace\n */\n /**\n * The rotation of the text in degrees. 0 is horizontal, 270 is\n * vertical reading from bottom to top.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Horizontal\n */\n rotation: 0,\n /**\n * The actual text of the axis title. It can contain basic HTML tags\n * like `b`, `i` and `span` with style.\n *\n * @sample {highcharts} highcharts/xaxis/title-text/\n * Custom HTML\n * @sample {highstock} stock/xaxis/title-text/\n * Titles for both axes\n *\n * @type {string|null}\n * @apioption xAxis.title.text\n */\n /**\n * Alignment of the text, can be `\"left\"`, `\"right\"` or `\"center\"`.\n * Default alignment depends on the\n * [title.align](xAxis.title.align):\n *\n * Horizontal axes:\n * - for `align` = `\"low\"`, `textAlign` is set to `left`\n * - for `align` = `\"middle\"`, `textAlign` is set to `center`\n * - for `align` = `\"high\"`, `textAlign` is set to `right`\n *\n * Vertical axes:\n * - for `align` = `\"low\"` and `opposite` = `true`, `textAlign` is\n * set to `right`\n * - for `align` = `\"low\"` and `opposite` = `false`, `textAlign` is\n * set to `left`\n * - for `align` = `\"middle\"`, `textAlign` is set to `center`\n * - for `align` = `\"high\"` and `opposite` = `true` `textAlign` is\n * set to `left`\n * - for `align` = `\"high\"` and `opposite` = `false` `textAlign` is\n * set to `right`\n *\n * @type {Highcharts.AlignValue}\n * @apioption xAxis.title.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the axis title.\n *\n * @product highcharts highstock gantt\n */\n useHTML: false,\n /**\n * Horizontal pixel offset of the title position.\n *\n * @since 4.1.6\n * @product highcharts highstock gantt\n */\n x: 0,\n /**\n * Vertical pixel offset of the title position.\n *\n * @product highcharts highstock gantt\n */\n y: 0,\n /**\n * CSS styles for the title. If the title text is longer than the\n * axis length, it will wrap to multiple lines by default. This can\n * be customized by setting `textOverflow: 'ellipsis'`, by\n * setting a specific `width` or by setting `whiteSpace: 'nowrap'`.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-axis-title` class.\n *\n * @sample {highcharts} highcharts/xaxis/title-style/\n * Red\n * @sample {highcharts} highcharts/css/axis/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#666666\" /* neutralColor60 */\n }\n },\n /**\n * The type of axis. Can be one of `linear`, `logarithmic`, `datetime`\n * or `category`. In a datetime axis, the numbers are given in\n * milliseconds, and tick marks are placed on appropriate values like\n * full hours or days. In a category axis, the\n * [point names](#series.line.data.name) of the chart's series are used\n * for categories, if not a [categories](#xAxis.categories) array is\n * defined.\n *\n * @sample {highcharts} highcharts/xaxis/type-linear/\n * Linear\n * @sample {highcharts} highcharts/yaxis/type-log/\n * Logarithmic\n * @sample {highcharts} highcharts/yaxis/type-log-minorgrid/\n * Logarithmic with minor grid lines\n * @sample {highcharts} highcharts/xaxis/type-log-both/\n * Logarithmic on two axes\n * @sample {highcharts} highcharts/yaxis/type-log-negative/\n * Logarithmic with extension to emulate negative values\n *\n * @type {Highcharts.AxisTypeValue}\n * @product highcharts gantt\n */\n type: 'linear',\n /**\n * If there are multiple axes on the same side of the chart, the pixel\n * margin between the axes. Defaults to 0 on vertical axes, 15 on\n * horizontal axes.\n *\n * @type {number}\n * @since 7.0.3\n * @apioption xAxis.margin\n */\n /**\n * Applies only when the axis `type` is `category`. When `uniqueNames`\n * is true, points are placed on the X axis according to their names.\n * If the same point name is repeated in the same or another series,\n * the point is placed on the same X position as other points of the\n * same name. When `uniqueNames` is false, the points are laid out in\n * increasing X positions regardless of their names, and the X axis\n * category will take the name of the last point in each position.\n *\n * @sample {highcharts} highcharts/xaxis/uniquenames-true/\n * True by default\n * @sample {highcharts} highcharts/xaxis/uniquenames-false/\n * False\n *\n * @since 4.2.7\n * @product highcharts gantt\n */\n uniqueNames: true,\n /**\n * Datetime axis only. An array determining what time intervals the\n * ticks are allowed to fall on. Each array item is an array where the\n * first value is the time unit and the second value another array of\n * allowed multiples.\n *\n * Defaults to:\n * ```js\n * units: [[\n * 'millisecond', // unit name\n * [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples\n * ], [\n * 'second',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'minute',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'hour',\n * [1, 2, 3, 4, 6, 8, 12]\n * ], [\n * 'day',\n * [1, 2]\n * ], [\n * 'week',\n * [1, 2]\n * ], [\n * 'month',\n * [1, 2, 3, 4, 6]\n * ], [\n * 'year',\n * null\n * ]]\n * ```\n *\n * @type {Array<Array<string,(Array<number>|null)>>}\n * @product highcharts highstock gantt\n * @apioption xAxis.units\n */\n /**\n * Whether axis, including axis title, line, ticks and labels, should\n * be visible.\n *\n * @since 4.1.9\n * @product highcharts highstock gantt\n */\n visible: true,\n /**\n * Color of the minor, secondary grid lines.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-minor-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinecolor/\n * Bright grey lines from Y axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/minorgridlinecolor/\n * Bright grey lines from Y axis\n *\n * @type {Highcharts.ColorType}\n * @default #f2f2f2\n */\n minorGridLineColor: \"#f2f2f2\" /* neutralColor5 */,\n /**\n * Width of the minor, secondary grid lines.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinewidth/\n * 2px lines from Y axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/minorgridlinewidth/\n * 2px lines from Y axis\n */\n minorGridLineWidth: 1,\n /**\n * Color for the minor tick marks.\n *\n * @sample {highcharts} highcharts/yaxis/minortickcolor/\n * Black tick marks on Y axis\n * @sample {highstock} stock/xaxis/minorticks/\n * Black tick marks on Y axis\n *\n * @type {Highcharts.ColorType}\n * @default #999999\n */\n minorTickColor: \"#999999\" /* neutralColor40 */,\n /**\n * The color of the line marking the axis itself.\n *\n * In styled mode, the line stroke is given in the\n * `.highcharts-axis-line` or `.highcharts-xaxis-line` class.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis line is hidden by default, because the axis is\n * not visible by default.\n *\n * @sample {highcharts} highcharts/yaxis/linecolor/\n * A red line on Y axis\n * @sample {highcharts|highstock} highcharts/css/axis/\n * Axes in styled mode\n * @sample {highstock} stock/xaxis/linecolor/\n * A red line on X axis\n *\n * @type {Highcharts.ColorType}\n * @default #ccd6eb\n */\n lineColor: \"#ccd6eb\" /* highlightColor20 */,\n /**\n * The width of the line marking the axis itself.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-axis-line` or `.highcharts-xaxis-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/linecolor/\n * A 1px line on Y axis\n * @sample {highcharts|highstock} highcharts/css/axis/\n * Axes in styled mode\n * @sample {highstock} stock/xaxis/linewidth/\n * A 2px line on X axis\n *\n * @default {highcharts|highstock} 1\n * @default {highmaps} 0\n */\n lineWidth: 1,\n /**\n * Color of the grid lines extending the ticks across the plot area.\n *\n * In styled mode, the stroke is given in the `.highcharts-grid-line`\n * class.\n *\n * @productdesc {highmaps}\n * In Highmaps, the grid lines are hidden by default.\n *\n * @sample {highcharts} highcharts/yaxis/gridlinecolor/\n * Green lines\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/gridlinecolor/\n * Green lines\n *\n * @type {Highcharts.ColorType}\n * @default #e6e6e6\n */\n gridLineColor: \"#e6e6e6\" /* neutralColor10 */,\n /**\n * The width of the grid lines extending the ticks across the plot area.\n * Defaults to 1 on the Y axis and 0 on the X axis, except for 3d\n * charts.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/gridlinewidth/\n * 2px lines\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/gridlinewidth/\n * 2px lines\n *\n * @type {number}\n * @apioption xAxis.gridLineWidth\n */\n gridLineWidth: void 0,\n /**\n * The height as the vertical axis. If it's a number, it is\n * interpreted as pixels.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted\n * as percentages of the total plot height.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.height\n */\n /**\n * The width as the horizontal axis. If it's a number, it is interpreted\n * as pixels.\n *\n * Since Highcharts v5.0.13: If it's a percentage string, it is\n * interpreted as percentages of the total plot width.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.width\n */\n /**\n * Color for the main tick marks.\n *\n * In styled mode, the stroke is given in the `.highcharts-tick`\n * class.\n *\n * @sample {highcharts} highcharts/xaxis/tickcolor/\n * Red ticks on X axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n *\n * @type {Highcharts.ColorType}\n * @default #ccd6eb\n */\n tickColor: \"#ccd6eb\" /* highlightColor20 */\n // tickWidth: 1\n };\n /**\n * The Y axis or value axis. Normally this is the vertical axis,\n * though if the chart is inverted this is the horizontal axis.\n * In case of multiple axes, the yAxis node is an array of\n * configuration objects.\n *\n * See [the Axis object](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @type {*|Array<*>}\n * @extends xAxis\n * @excluding currentDateIndicator,ordinal,overscroll\n * @optionparent yAxis\n */\n AxisDefaults.defaultYAxisOptions = {\n /**\n * The type of axis. Can be one of `linear`, `logarithmic`, `datetime`,\n * `category` or `treegrid`. Defaults to `treegrid` for Gantt charts,\n * `linear` for other chart types.\n *\n * In a datetime axis, the numbers are given in milliseconds, and tick\n * marks are placed on appropriate values, like full hours or days. In a\n * category or treegrid axis, the [point names](#series.line.data.name)\n * of the chart's series are used for categories, if a\n * [categories](#xAxis.categories) array is not defined.\n *\n * @sample {highcharts} highcharts/yaxis/type-log-minorgrid/\n * Logarithmic with minor grid lines\n * @sample {highcharts} highcharts/yaxis/type-log-negative/\n * Logarithmic with extension to emulate negative values\n * @sample {gantt} gantt/treegrid-axis/demo\n * Treegrid axis\n *\n * @type {Highcharts.AxisTypeValue}\n * @default {highcharts} linear\n * @default {gantt} treegrid\n * @product highcharts gantt\n * @apioption yAxis.type\n */\n /**\n * The height of the Y axis. If it's a number, it is interpreted as\n * pixels.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted as\n * percentages of the total plot height.\n *\n * @see [yAxis.top](#yAxis.top)\n *\n * @sample {highstock} stock/demo/candlestick-and-volume/\n * Percentage height panes\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption yAxis.height\n */\n /**\n * Solid gauge only. Unless [stops](#yAxis.stops) are set, the color\n * to represent the maximum value of the Y axis.\n *\n * @sample {highcharts} highcharts/yaxis/mincolor-maxcolor/\n * Min and max colors\n *\n * @type {Highcharts.ColorType}\n * @default #003399\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.maxColor\n */\n /**\n * Solid gauge only. Unless [stops](#yAxis.stops) are set, the color\n * to represent the minimum value of the Y axis.\n *\n * @sample {highcharts} highcharts/yaxis/mincolor-maxcolor/\n * Min and max color\n *\n * @type {Highcharts.ColorType}\n * @default #e6ebf5\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.minColor\n */\n /**\n * Whether to reverse the axis so that the highest number is closest\n * to the origin.\n *\n * @sample {highcharts} highcharts/yaxis/reversed/\n * Reversed Y axis\n * @sample {highstock} stock/xaxis/reversed/\n * Reversed Y axis\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} false\n * @default {highmaps} true\n * @default {gantt} true\n * @apioption yAxis.reversed\n */\n /**\n * If `true`, the first series in a stack will be drawn on top in a\n * positive, non-reversed Y axis. If `false`, the first series is in\n * the base of the stack.\n *\n * @sample {highcharts} highcharts/yaxis/reversedstacks-false/\n * Non-reversed stacks\n * @sample {highstock} highcharts/yaxis/reversedstacks-false/\n * Non-reversed stacks\n *\n * @type {boolean}\n * @default true\n * @since 3.0.10\n * @product highcharts highstock\n * @apioption yAxis.reversedStacks\n */\n reversedStacks: true,\n /**\n * Solid gauge series only. Color stops for the solid gauge. Use this\n * in cases where a linear gradient between a `minColor` and `maxColor`\n * is not sufficient. The stops is an array of tuples, where the first\n * item is a float between 0 and 1 assigning the relative position in\n * the gradient, and the second item is the color.\n *\n * For solid gauges, the Y axis also inherits the concept of\n * [data classes](https://api.highcharts.com/highmaps#colorAxis.dataClasses)\n * from the Highmaps color axis.\n *\n * @see [minColor](#yAxis.minColor)\n * @see [maxColor](#yAxis.maxColor)\n *\n * @sample {highcharts} highcharts/demo/gauge-solid/\n * True by default\n *\n * @type {Array<Array<number,Highcharts.ColorType>>}\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.stops\n */\n /**\n * The pixel width of the major tick marks.\n *\n * @sample {highcharts} highcharts/xaxis/tickwidth/ 10 px width\n * @sample {highstock} stock/xaxis/ticks/ Formatted ticks on X axis\n *\n * @type {number}\n * @default 0\n * @product highcharts highstock gantt\n * @apioption yAxis.tickWidth\n */\n /**\n * Whether to force the axis to end on a tick. Use this option with\n * the `maxPadding` option to control the axis end.\n *\n * This option is always disabled, when panning type is\n * either `y` or `xy`.\n *\n * @see [type](#chart.panning.type)\n *\n *\n * @sample {highcharts} highcharts/yaxis/endontick/\n * True by default\n * @sample {highcharts} highcharts/yaxis/endontick-false/\n * False\n * @sample {highstock} stock/demo/basic-line/\n * True by default\n * @sample {highstock} stock/xaxis/endontick/\n * False for Y axis\n *\n * @since 1.2.0\n */\n endOnTick: true,\n /**\n * Padding of the max value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the highest data value to appear on the edge\n * of the plot area. When the axis' `max` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * Also the `softThreshold` option takes precedence over `maxPadding`,\n * so if the data is tangent to the threshold, `maxPadding` may not\n * apply unless `softThreshold` is set to false.\n *\n * @sample {highcharts} highcharts/yaxis/maxpadding-02/\n * Max padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n maxPadding: 0.05,\n /**\n * Padding of the min value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the lowest data value to appear on the edge\n * of the plot area. When the axis' `min` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * Also the `softThreshold` option takes precedence over `minPadding`,\n * so if the data is tangent to the threshold, `minPadding` may not\n * apply unless `softThreshold` is set to false.\n *\n * @sample {highcharts} highcharts/yaxis/minpadding/\n * Min padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n minPadding: 0.05,\n /**\n * @productdesc {highstock}\n * In Highcharts Stock 1.x, the Y axis was placed\n * on the left side by default.\n *\n * @sample {highcharts} highcharts/yaxis/opposite/\n * Secondary Y axis opposite\n * @sample {highstock} stock/xaxis/opposite/\n * Y axis on left side\n *\n * @type {boolean}\n * @default {highstock} true\n * @default {highcharts} false\n * @product highstock highcharts gantt\n * @apioption yAxis.opposite\n */\n /**\n * @see [tickInterval](#xAxis.tickInterval)\n * @see [tickPositioner](#xAxis.tickPositioner)\n * @see [tickPositions](#xAxis.tickPositions)\n */\n tickPixelInterval: 72,\n showLastLabel: true,\n /**\n * @extends xAxis.labels\n */\n labels: {\n /**\n * Angular gauges and solid gauges only.\n * The label's pixel distance from the perimeter of the plot area.\n *\n * Since v7.1.2: If it's a percentage string, it is interpreted the\n * same as [series.radius](#plotOptions.gauge.radius), so label can be\n * aligned under the gauge's shape.\n *\n * @sample {highcharts} highcharts/yaxis/labels-distance/\n * Labels centered under the arc\n *\n * @type {number|string}\n * @default -25\n * @product highcharts\n * @apioption yAxis.labels.distance\n */\n /**\n * The y position offset of all labels relative to the tick\n * positions on the axis. For polar and radial axis consider the use\n * of the [distance](#yAxis.labels.distance) option.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n *\n * @type {number}\n * @default {highcharts} 3\n * @default {highstock} -2\n * @default {highmaps} 3\n * @apioption yAxis.labels.y\n */\n /**\n * What part of the string the given position is anchored to. Can\n * be one of `\"left\"`, `\"center\"` or `\"right\"`. The exact position\n * also depends on the `labels.x` setting.\n *\n * Angular gauges and solid gauges defaults to `\"center\"`.\n * Solid gauges with two labels have additional option `\"auto\"`\n * for automatic horizontal and vertical alignment.\n *\n * @see [yAxis.labels.distance](#yAxis.labels.distance)\n *\n * @sample {highcharts} highcharts/yaxis/labels-align-left/\n * Left\n * @sample {highcharts} highcharts/series-solidgauge/labels-auto-aligned/\n * Solid gauge labels auto aligned\n *\n * @type {Highcharts.AlignValue}\n * @default {highcharts|highmaps} right\n * @default {highstock} left\n * @apioption yAxis.labels.align\n */\n /**\n * The x position offset of all labels relative to the tick\n * positions on the axis. Defaults to -15 for left axis, 15 for\n * right axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n */\n x: -8\n },\n /**\n * @productdesc {highmaps}\n * In Highmaps, the axis line is hidden by default, because the axis is\n * not visible by default.\n *\n * @type {Highcharts.ColorType}\n * @apioption yAxis.lineColor\n */\n /**\n * @sample {highcharts} highcharts/yaxis/max-200/\n * Y axis max of 200\n * @sample {highcharts} highcharts/yaxis/max-logarithmic/\n * Y axis max on logarithmic axis\n * @sample {highstock} stock/yaxis/min-max/\n * Fixed min and max on Y axis\n *\n * @apioption yAxis.max\n */\n /**\n * @sample {highcharts} highcharts/yaxis/min-startontick-false/\n * -50 with startOnTick to false\n * @sample {highcharts} highcharts/yaxis/min-startontick-true/\n * -50 with startOnTick true by default\n * @sample {highstock} stock/yaxis/min-max/\n * Fixed min and max on Y axis\n *\n * @apioption yAxis.min\n */\n /**\n * An optional scrollbar to display on the Y axis in response to\n * limiting the minimum an maximum of the axis values.\n *\n * In styled mode, all the presentational options for the scrollbar\n * are replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample {highstock} stock/yaxis/scrollbar/\n * Scrollbar on the Y axis\n *\n * @extends scrollbar\n * @since 4.2.6\n * @product highstock\n * @excluding height\n * @apioption yAxis.scrollbar\n */\n /**\n * Enable the scrollbar on the Y axis.\n *\n * @sample {highstock} stock/yaxis/scrollbar/\n * Enabled on Y axis\n *\n * @type {boolean}\n * @default false\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.enabled\n */\n /**\n * Pixel margin between the scrollbar and the axis elements.\n *\n * @type {number}\n * @default 10\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.margin\n */\n /* eslint-disable highcharts/doclet-apioption-last */\n /**\n * Defines the position of the scrollbar. By default, it is positioned\n * on the opposite of the main axis (right side of the chart).\n * However, in the case of RTL languages could be set to `false`\n * which positions the scrollbar on the left.\n *\n * Works only for vertical axes.\n * This means yAxis in a non-inverted chart and xAxis in the inverted.\n *\n * @sample stock/yaxis/scrollbar-opposite/\n * A scrollbar not on the opposite side\n *\n * @type {boolean}\n * @default true\n * @since 9.3.0\n *\n * @apioption yAxis.scrollbar.opposite\n * @apioption xAxis.scrollbar.opposite\n *\n */\n /* eslint-enable highcharts/doclet-apioption-last */\n /**\n * Whether to show the scrollbar when it is fully zoomed out at max\n * range. Setting it to `false` on the Y axis makes the scrollbar stay\n * hidden until the user zooms in, like common in browsers.\n *\n * @type {boolean}\n * @default true\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.showFull\n */\n /**\n * The width of a vertical scrollbar or height of a horizontal\n * scrollbar. Defaults to 20 on touch devices.\n *\n * @type {number}\n * @default 14\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.size\n */\n /**\n * Z index of the scrollbar elements.\n *\n * @type {number}\n * @default 3\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.zIndex\n */\n /**\n * A soft maximum for the axis. If the series data maximum is less\n * than this, the axis will stay at this maximum, but if the series\n * data maximum is higher, the axis will flex to show all data.\n *\n * **Note**: The [series.softThreshold](\n * #plotOptions.series.softThreshold) option takes precedence over this\n * option.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption yAxis.softMax\n */\n /**\n * A soft minimum for the axis. If the series data minimum is greater\n * than this, the axis will stay at this minimum, but if the series\n * data minimum is lower, the axis will flex to show all data.\n *\n * **Note**: The [series.softThreshold](\n * #plotOptions.series.softThreshold) option takes precedence over this\n * option.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption yAxis.softMin\n */\n /**\n * Defines the horizontal alignment of the stack total label. Can be one\n * of `\"left\"`, `\"center\"` or `\"right\"`. The default value is calculated\n * at runtime and depends on orientation and whether the stack is\n * positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-left/\n * Aligned to the left\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-center/\n * Aligned in center\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-right/\n * Aligned to the right\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.align\n */\n /**\n * A format string for the data label. Available variables are the same\n * as for `formatter`.\n *\n * @type {string}\n * @default {total}\n * @since 3.0.2\n * @product highcharts highstock\n * @apioption yAxis.stackLabels.format\n */\n /**\n * Rotation of the labels in degrees.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-rotation/\n * Labels rotated 45°\n *\n * @type {number}\n * @default 0\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.rotation\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed with regards to the stack, `textAlign`\n * determines how the text is aligned against its anchor point. Possible\n * values are `\"left\"`, `\"center\"` and `\"right\"`. The default value is\n * calculated at runtime and depends on orientation and whether the\n * stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-textalign-left/\n * Label in center position but text-aligned left\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0\n * @product highcharts highstock\n * @apioption yAxis.stackLabels.useHTML\n */\n /**\n * Defines the vertical alignment of the stack total label. Can be one\n * of `\"top\"`, `\"middle\"` or `\"bottom\"`. The default value is calculated\n * at runtime and depends on orientation and whether the stack is\n * positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-top/\n * Vertically aligned top\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-middle/\n * Vertically aligned middle\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-bottom/\n * Vertically aligned bottom\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.verticalAlign\n */\n /**\n * The x position offset of the label relative to the left of the\n * stacked bar. The default value is calculated at runtime and depends\n * on orientation and whether the stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-x/\n * Stack total labels with x offset\n *\n * @type {number}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.x\n */\n /**\n * The y position offset of the label relative to the tick position\n * on the axis. The default value is calculated at runtime and depends\n * on orientation and whether the stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-y/\n * Stack total labels with y offset\n *\n * @type {number}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.y\n */\n /**\n * Whether to force the axis to start on a tick. Use this option with\n * the `maxPadding` option to control the axis start.\n *\n * This option is always disabled, when panning type is\n * either `y` or `xy`.\n *\n * @see [type](#chart.panning.type)\n *\n * @sample {highcharts} highcharts/xaxis/startontick-false/\n * False by default\n * @sample {highcharts} highcharts/xaxis/startontick-true/\n * True\n * @sample {highstock} stock/xaxis/endontick/\n * False for Y axis\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n startOnTick: true,\n title: {\n /**\n * The pixel distance between the axis labels and the title.\n * Positive values are outside the axis line, negative are inside.\n *\n * @sample {highcharts} highcharts/xaxis/title-margin/\n * Y axis title margin of 60\n *\n * @type {number}\n * @default 40\n * @apioption yAxis.title.margin\n */\n /**\n * The rotation of the text in degrees. 0 is horizontal, 270 is\n * vertical reading from bottom to top.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Horizontal\n */\n rotation: 270,\n /**\n * The actual text of the axis title. Horizontal texts can contain\n * HTML, but rotated texts are painted using vector techniques and\n * must be clean text. The Y axis title is disabled by setting the\n * `text` option to `undefined`.\n *\n * @sample {highcharts} highcharts/xaxis/title-text/\n * Custom HTML\n *\n * @type {string|null}\n * @default {highcharts} Values\n * @default {highstock} undefined\n * @product highcharts highstock gantt\n */\n text: 'Values'\n },\n /**\n * The top position of the Y axis. If it's a number, it is interpreted\n * as pixel position relative to the chart.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted as\n * percentages of the plot height, offset from plot area top.\n *\n * @see [yAxis.height](#yAxis.height)\n *\n * @sample {highstock} stock/demo/candlestick-and-volume/\n * Percentage height panes\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption yAxis.top\n */\n /**\n * The stack labels show the total value for each bar in a stacked\n * column or bar chart. The label will be placed on top of positive\n * columns and below negative columns. In case of an inverted column\n * chart or a bar chart the label is placed to the right of positive\n * bars and to the left of negative bars.\n *\n * @product highcharts\n */\n stackLabels: {\n /**\n * Enable or disable the initial animation when a series is\n * displayed for the `stackLabels`. The animation can also be set as\n * a configuration object. Please note that this option only\n * applies to the initial animation.\n * For other animations, see [chart.animation](#chart.animation)\n * and the animation parameter under the API methods.\n * The following properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * @sample {highcharts} highcharts/plotoptions/animation-defer/\n * Animation defer settings\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n * @since 8.2.0\n * @apioption yAxis.stackLabels.animation\n */\n animation: {},\n /**\n * The animation delay time in milliseconds.\n * Set to `0` renders stackLabel immediately.\n * As `undefined` inherits defer time from the [series.animation.defer](#plotOptions.series.animation.defer).\n *\n * @type {number}\n * @since 8.2.0\n * @apioption yAxis.stackLabels.animation.defer\n */\n /**\n * Allow the stack labels to overlap.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-allowoverlap-false/\n * Default false\n *\n * @since 5.0.13\n * @product highcharts\n */\n allowOverlap: false,\n /**\n * The background color or gradient for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {Highcharts.ColorType}\n * @since 8.1.0\n * @apioption yAxis.stackLabels.backgroundColor\n */\n /**\n * The border color for the stack label. Defaults to `undefined`.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {Highcharts.ColorType}\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderColor\n */\n /**\n * The border radius in pixels for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {number}\n * @default 0\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderRadius\n */\n /**\n * The border width in pixels for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {number}\n * @default 0\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderWidth\n */\n /**\n * Enable or disable the stack total labels.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-enabled/\n * Enabled stack total labels\n * @sample {highcharts} highcharts/yaxis/stacklabels-enabled-waterfall/\n * Enabled stack labels in waterfall chart\n *\n * @since 2.1.5\n * @product highcharts\n */\n enabled: false,\n /**\n * Whether to hide stack labels that are outside the plot area.\n * By default, the stack label is moved\n * inside the plot area according to the\n * [overflow](/highcharts/#yAxis/stackLabels/overflow)\n * option.\n *\n * @type {boolean}\n * @since 7.1.3\n */\n crop: true,\n /**\n * How to handle stack total labels that flow outside the plot area.\n * The default is set to `\"justify\"`,\n * which aligns them inside the plot area.\n * For columns and bars, this means it will be moved inside the bar.\n * To display stack labels outside the plot area,\n * set `crop` to `false` and `overflow` to `\"allow\"`.\n *\n * @sample highcharts/yaxis/stacklabels-overflow/\n * Stack labels flows outside the plot area.\n *\n * @type {Highcharts.DataLabelsOverflowValue}\n * @since 7.1.3\n */\n overflow: 'justify',\n /* eslint-disable valid-jsdoc */\n /**\n * Callback JavaScript function to format the label. The value is\n * given by `this.total`.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-formatter/\n * Added units to stack total value\n *\n * @type {Highcharts.FormatterCallbackFunction<Highcharts.StackItemObject>}\n * @since 2.1.5\n * @product highcharts\n */\n formatter: function () {\n var numberFormatter = this.axis.chart.numberFormatter;\n /* eslint-enable valid-jsdoc */\n return numberFormatter(this.total, -1);\n },\n /**\n * CSS styles for the label.\n *\n * In styled mode, the styles are set in the\n * `.highcharts-stack-label` class.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-style/\n * Red stack total labels\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1.5\n * @product highcharts\n */\n style: {\n /** @internal */\n color: \"#000000\" /* neutralColor100 */,\n /** @internal */\n fontSize: '11px',\n /** @internal */\n fontWeight: 'bold',\n /** @internal */\n textOutline: '1px contrast'\n }\n },\n gridLineWidth: 1,\n lineWidth: 0\n // tickWidth: 0\n };\n /**\n * The Z axis or depth axis for 3D plots.\n *\n * See the [Axis class](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @sample {highcharts} highcharts/3d/scatter-zaxis-categories/\n * Z-Axis with Categories\n * @sample {highcharts} highcharts/3d/scatter-zaxis-grid/\n * Z-Axis with styling\n *\n * @type {*|Array<*>}\n * @extends xAxis\n * @since 5.0.0\n * @product highcharts\n * @excluding breaks, crosshair, height, left, lineColor, lineWidth,\n * nameToX, showEmpty, top, width\n * @apioption zAxis\n */\n // This variable extends the defaultOptions for left axes.\n AxisDefaults.defaultLeftAxisOptions = {\n labels: {\n x: -15\n },\n title: {\n rotation: 270\n }\n };\n // This variable extends the defaultOptions for right axes.\n AxisDefaults.defaultRightAxisOptions = {\n labels: {\n x: 15\n },\n title: {\n rotation: 90\n }\n };\n // This variable extends the defaultOptions for bottom axes.\n AxisDefaults.defaultBottomAxisOptions = {\n labels: {\n autoRotation: [-45],\n x: 0\n // overflow: undefined,\n // staggerLines: null\n },\n margin: 15,\n title: {\n rotation: 0\n }\n };\n // This variable extends the defaultOptions for top axes.\n AxisDefaults.defaultTopAxisOptions = {\n labels: {\n autoRotation: [-45],\n x: 0\n // overflow: undefined\n // staggerLines: null\n },\n margin: 15,\n title: {\n rotation: 0\n }\n };\n })(AxisDefaults || (AxisDefaults = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return AxisDefaults;\n });\n _registerModule(_modules, 'Core/Foundation.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n isFunction = U.isFunction,\n objectEach = U.objectEach,\n removeEvent = U.removeEvent;\n /* *\n *\n * Class Namespace\n *\n * */\n var Foundation;\n (function (Foundation) {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Register event options. If an event handler is set on the options, it\n * should be subject to Chart.update, Axis.update and Series.update. This is\n * contrary to general handlers that are set directly using addEvent either\n * on the class or on the instance. #6538, #6943, #10861.\n * @private\n */\n function registerEventOptions(component, options) {\n // A lookup over those events that are added by _options_ (not\n // programmatically). These are updated through .update()\n component.eventOptions = component.eventOptions || {};\n // Register event listeners\n objectEach(options.events, function (event, eventType) {\n // If event does not exist, or is changed by the .update()\n // function\n if (component.eventOptions[eventType] !== event) {\n // Remove existing if set by option\n if (component.eventOptions[eventType]) {\n removeEvent(component, eventType, component.eventOptions[eventType]);\n delete component.eventOptions[eventType];\n }\n if (isFunction(event)) {\n component.eventOptions[eventType] = event;\n addEvent(component, eventType, event);\n }\n }\n });\n }\n Foundation.registerEventOptions = registerEventOptions;\n })(Foundation || (Foundation = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return Foundation;\n });\n _registerModule(_modules, 'Core/Axis/Tick.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (F, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var deg2rad = H.deg2rad;\n var clamp = U.clamp,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Tick class.\n *\n * @class\n * @name Highcharts.Tick\n *\n * @param {Highcharts.Axis} axis\n * The axis of the tick.\n *\n * @param {number} pos\n * The position of the tick on the axis in terms of axis values.\n *\n * @param {string} [type]\n * The type of tick, either 'minor' or an empty string\n *\n * @param {boolean} [noLabel=false]\n * Whether to disable the label or not. Defaults to false.\n *\n * @param {Object} [parameters]\n * Optional parameters for the tick.\n */\n var Tick = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Tick(axis, pos, type, noLabel, parameters) {\n this.isNew = true;\n this.isNewLabel = true;\n /**\n * The related axis of the tick.\n * @name Highcharts.Tick#axis\n * @type {Highcharts.Axis}\n */\n this.axis = axis;\n /**\n * The logical position of the tick on the axis in terms of axis values.\n * @name Highcharts.Tick#pos\n * @type {number}\n */\n this.pos = pos;\n /**\n * The tick type, which can be `\"minor\"`, or an empty string.\n * @name Highcharts.Tick#type\n * @type {string}\n */\n this.type = type || '';\n this.parameters = parameters || {};\n /**\n * The mark offset of the tick on the axis. Usually `undefined`, numeric\n * for grid axes.\n * @name Highcharts.Tick#tickmarkOffset\n * @type {number|undefined}\n */\n this.tickmarkOffset = this.parameters.tickmarkOffset;\n this.options = this.parameters.options;\n fireEvent(this, 'init');\n if (!type && !noLabel) {\n this.addLabel();\n }\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Write the tick label.\n *\n * @private\n * @function Highcharts.Tick#addLabel\n */\n Tick.prototype.addLabel = function () {\n var tick = this,\n axis = tick.axis,\n options = axis.options,\n chart = axis.chart,\n categories = axis.categories,\n log = axis.logarithmic,\n names = axis.names,\n pos = tick.pos,\n labelOptions = pick(tick.options && tick.options.labels,\n options.labels),\n tickPositions = axis.tickPositions,\n isFirst = pos === tickPositions[0],\n isLast = pos === tickPositions[tickPositions.length - 1],\n animateLabels = (!labelOptions.step || labelOptions.step === 1) &&\n axis.tickInterval === 1,\n tickPositionInfo = tickPositions.info;\n var label = tick.label,\n dateTimeLabelFormat,\n dateTimeLabelFormats,\n i;\n // The context value\n var value = this.parameters.category || (categories ?\n pick(categories[pos],\n names[pos],\n pos) :\n pos);\n if (log && isNumber(value)) {\n value = correctFloat(log.lin2log(value));\n }\n // Set the datetime label format. If a higher rank is set for this\n // position, use that. If not, use the general format.\n if (axis.dateTime) {\n if (tickPositionInfo) {\n dateTimeLabelFormats = chart.time.resolveDTLFormat(options.dateTimeLabelFormats[(!options.grid &&\n tickPositionInfo.higherRanks[pos]) ||\n tickPositionInfo.unitName]);\n dateTimeLabelFormat = dateTimeLabelFormats.main;\n }\n else if (isNumber(value)) { // #1441\n dateTimeLabelFormat = axis.dateTime.getXDateFormat(value, (options.dateTimeLabelFormats || {}));\n }\n }\n // set properties for access in render method\n /**\n * True if the tick is the first one on the axis.\n * @name Highcharts.Tick#isFirst\n * @readonly\n * @type {boolean|undefined}\n */\n tick.isFirst = isFirst;\n /**\n * True if the tick is the last one on the axis.\n * @name Highcharts.Tick#isLast\n * @readonly\n * @type {boolean|undefined}\n */\n tick.isLast = isLast;\n // Get the string\n var ctx = {\n axis: axis,\n chart: chart,\n dateTimeLabelFormat: dateTimeLabelFormat,\n isFirst: isFirst,\n isLast: isLast,\n pos: pos,\n tick: tick,\n tickPositionInfo: tickPositionInfo,\n value: value\n };\n // Fire an event that allows modifying the context for use in\n // `labels.format` and `labels.formatter`.\n fireEvent(this, 'labelFormat', ctx);\n // Label formatting. When `labels.format` is given, we first run the\n // defaultFormatter and append the result to the context as `text`.\n // Handy for adding prefix or suffix while keeping default number\n // formatting.\n var labelFormatter = function (ctx) {\n if (labelOptions.formatter) {\n return labelOptions.formatter.call(ctx,\n ctx);\n }\n if (labelOptions.format) {\n ctx.text = axis.defaultLabelFormatter.call(ctx);\n return F.format(labelOptions.format, ctx, chart);\n }\n return axis.defaultLabelFormatter.call(ctx, ctx);\n };\n var str = labelFormatter.call(ctx,\n ctx);\n // Set up conditional formatting based on the format list if existing.\n var list = dateTimeLabelFormats && dateTimeLabelFormats.list;\n if (list) {\n tick.shortenLabel = function () {\n for (i = 0; i < list.length; i++) {\n extend(ctx, { dateTimeLabelFormat: list[i] });\n label.attr({\n text: labelFormatter.call(ctx, ctx)\n });\n if (label.getBBox().width <\n axis.getSlotWidth(tick) - 2 *\n labelOptions.padding) {\n return;\n }\n }\n label.attr({\n text: ''\n });\n };\n }\n else {\n // #15692\n tick.shortenLabel = void 0;\n }\n // Call only after first render\n if (animateLabels && axis._addedPlotLB) {\n tick.moveLabel(str, labelOptions);\n }\n // First call\n if (!defined(label) && !tick.movedLabel) {\n /**\n * The rendered text label of the tick.\n * @name Highcharts.Tick#label\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.label = label = tick.createLabel({ x: 0, y: 0 }, str, labelOptions);\n // Base value to detect change for new calls to getBBox\n tick.rotation = 0;\n // update\n }\n else if (label && label.textStr !== str && !animateLabels) {\n // When resetting text, also reset the width if dynamically set\n // (#8809)\n if (label.textWidth &&\n !labelOptions.style.width &&\n !label.styles.width) {\n label.css({ width: null });\n }\n label.attr({ text: str });\n label.textPxLength = label.getBBox().width;\n }\n };\n /**\n * Render and return the label of the tick.\n *\n * @private\n * @function Highcharts.Tick#createLabel\n */\n Tick.prototype.createLabel = function (xy, str, labelOptions) {\n var axis = this.axis,\n chart = axis.chart,\n label = defined(str) && labelOptions.enabled ?\n chart.renderer\n .text(str,\n xy.x,\n xy.y,\n labelOptions.useHTML)\n .add(axis.labelGroup) :\n null;\n // Un-rotated length\n if (label) {\n // Without position absolute, IE export sometimes is wrong\n if (!chart.styledMode) {\n label.css(merge(labelOptions.style));\n }\n label.textPxLength = label.getBBox().width;\n }\n return label;\n };\n /**\n * Destructor for the tick prototype\n *\n * @private\n * @function Highcharts.Tick#destroy\n */\n Tick.prototype.destroy = function () {\n destroyObjectProperties(this, this.axis);\n };\n /**\n * Gets the x and y positions for ticks in terms of pixels.\n *\n * @private\n * @function Highcharts.Tick#getPosition\n *\n * @param {boolean} horiz\n * Whether the tick is on an horizontal axis or not.\n *\n * @param {number} tickPos\n * Position of the tick.\n *\n * @param {number} tickmarkOffset\n * Tickmark offset for all ticks.\n *\n * @param {boolean} [old]\n * Whether the axis has changed or not.\n *\n * @return {Highcharts.PositionObject}\n * The tick position.\n *\n * @emits Highcharts.Tick#event:afterGetPosition\n */\n Tick.prototype.getPosition = function (horiz, tickPos, tickmarkOffset, old) {\n var axis = this.axis,\n chart = axis.chart,\n cHeight = (old && chart.oldChartHeight) || chart.chartHeight,\n pos = {\n x: horiz ?\n correctFloat(axis.translate(tickPos + tickmarkOffset,\n null,\n null,\n old) +\n axis.transB) :\n (axis.left +\n axis.offset +\n (axis.opposite ?\n (((old && chart.oldChartWidth) ||\n chart.chartWidth) -\n axis.right -\n axis.left) :\n 0)),\n y: horiz ?\n (cHeight -\n axis.bottom +\n axis.offset -\n (axis.opposite ? axis.height : 0)) :\n correctFloat(cHeight -\n axis.translate(tickPos + tickmarkOffset,\n null,\n null,\n old) -\n axis.transB)\n };\n // Chrome workaround for #10516\n pos.y = clamp(pos.y, -1e5, 1e5);\n fireEvent(this, 'afterGetPosition', { pos: pos });\n return pos;\n };\n /**\n * Get the x, y position of the tick label\n * @private\n */\n Tick.prototype.getLabelPosition = function (x, y, label, horiz, labelOptions, tickmarkOffset, index, step) {\n var axis = this.axis,\n transA = axis.transA,\n reversed = ( // #7911\n axis.isLinked && axis.linkedParent ?\n axis.linkedParent.reversed :\n axis.reversed),\n staggerLines = axis.staggerLines,\n rotCorr = axis.tickRotCorr || { x: 0,\n y: 0 }, \n // Adjust for label alignment if we use reserveSpace: true (#5286)\n labelOffsetCorrection = (!horiz && !axis.reserveSpaceDefault ?\n -axis.labelOffset * (axis.labelAlign === 'center' ? 0.5 : 1) :\n 0),\n pos = {};\n var yOffset = labelOptions.y,\n line;\n if (!defined(yOffset)) {\n if (axis.side === 0) {\n yOffset = label.rotation ? -8 : -label.getBBox().height;\n }\n else if (axis.side === 2) {\n yOffset = rotCorr.y + 8;\n }\n else {\n // #3140, #3140\n yOffset = Math.cos(label.rotation * deg2rad) *\n (rotCorr.y - label.getBBox(false, 0).height / 2);\n }\n }\n x = x +\n labelOptions.x +\n labelOffsetCorrection +\n rotCorr.x -\n (tickmarkOffset && horiz ?\n tickmarkOffset * transA * (reversed ? -1 : 1) :\n 0);\n y = y + yOffset - (tickmarkOffset && !horiz ?\n tickmarkOffset * transA * (reversed ? 1 : -1) : 0);\n // Correct for staggered labels\n if (staggerLines) {\n line = (index / (step || 1) % staggerLines);\n if (axis.opposite) {\n line = staggerLines - line - 1;\n }\n y += line * (axis.labelOffset / staggerLines);\n }\n pos.x = x;\n pos.y = Math.round(y);\n fireEvent(this, 'afterGetLabelPosition', { pos: pos, tickmarkOffset: tickmarkOffset, index: index });\n return pos;\n };\n /**\n * Get the offset height or width of the label\n *\n * @private\n * @function Highcharts.Tick#getLabelSize\n */\n Tick.prototype.getLabelSize = function () {\n return this.label ?\n this.label.getBBox()[this.axis.horiz ? 'height' : 'width'] :\n 0;\n };\n /**\n * Extendible method to return the path of the marker\n * @private\n */\n Tick.prototype.getMarkPath = function (x, y, tickLength, tickWidth, horiz, renderer) {\n return renderer.crispLine([[\n 'M',\n x,\n y\n ], [\n 'L',\n x + (horiz ? 0 : -tickLength),\n y + (horiz ? tickLength : 0)\n ]], tickWidth);\n };\n /**\n * Handle the label overflow by adjusting the labels to the left and right\n * edge, or hide them if they collide into the neighbour label.\n *\n * @private\n * @function Highcharts.Tick#handleOverflow\n */\n Tick.prototype.handleOverflow = function (xy) {\n var tick = this,\n axis = this.axis,\n labelOptions = axis.options.labels,\n pxPos = xy.x,\n chartWidth = axis.chart.chartWidth,\n spacing = axis.chart.spacing,\n leftBound = pick(axis.labelLeft,\n Math.min(axis.pos,\n spacing[3])),\n rightBound = pick(axis.labelRight,\n Math.max(!axis.isRadial ? axis.pos + axis.len : 0,\n chartWidth - spacing[1])),\n label = this.label,\n rotation = this.rotation,\n factor = {\n left: 0,\n center: 0.5,\n right: 1\n }[axis.labelAlign || label.attr('align')],\n labelWidth = label.getBBox().width,\n slotWidth = axis.getSlotWidth(tick),\n xCorrection = factor,\n css = {};\n var modifiedSlotWidth = slotWidth,\n goRight = 1,\n leftPos,\n rightPos,\n textWidth;\n // Check if the label overshoots the chart spacing box. If it does, move\n // it. If it now overshoots the slotWidth, add ellipsis.\n if (!rotation && labelOptions.overflow === 'justify') {\n leftPos = pxPos - factor * labelWidth;\n rightPos = pxPos + (1 - factor) * labelWidth;\n if (leftPos < leftBound) {\n modifiedSlotWidth =\n xy.x + modifiedSlotWidth * (1 - factor) - leftBound;\n }\n else if (rightPos > rightBound) {\n modifiedSlotWidth =\n rightBound - xy.x + modifiedSlotWidth * factor;\n goRight = -1;\n }\n modifiedSlotWidth = Math.min(slotWidth, modifiedSlotWidth); // #4177\n if (modifiedSlotWidth < slotWidth && axis.labelAlign === 'center') {\n xy.x += (goRight *\n (slotWidth -\n modifiedSlotWidth -\n xCorrection * (slotWidth - Math.min(labelWidth, modifiedSlotWidth))));\n }\n // If the label width exceeds the available space, set a text width\n // to be picked up below. Also, if a width has been set before, we\n // need to set a new one because the reported labelWidth will be\n // limited by the box (#3938).\n if (labelWidth > modifiedSlotWidth ||\n (axis.autoRotation && (label.styles || {}).width)) {\n textWidth = modifiedSlotWidth;\n }\n // Add ellipsis to prevent rotated labels to be clipped against the edge\n // of the chart\n }\n else if (rotation < 0 &&\n pxPos - factor * labelWidth < leftBound) {\n textWidth = Math.round(pxPos / Math.cos(rotation * deg2rad) - leftBound);\n }\n else if (rotation > 0 &&\n pxPos + factor * labelWidth > rightBound) {\n textWidth = Math.round((chartWidth - pxPos) /\n Math.cos(rotation * deg2rad));\n }\n if (textWidth) {\n if (tick.shortenLabel) {\n tick.shortenLabel();\n }\n else {\n css.width = Math.floor(textWidth) + 'px';\n if (!(labelOptions.style || {}).textOverflow) {\n css.textOverflow = 'ellipsis';\n }\n label.css(css);\n }\n }\n };\n /**\n * Try to replace the label if the same one already exists.\n *\n * @private\n * @function Highcharts.Tick#moveLabel\n */\n Tick.prototype.moveLabel = function (str, labelOptions) {\n var tick = this,\n label = tick.label,\n axis = tick.axis,\n reversed = axis.reversed;\n var moved = false,\n labelPos,\n xPos,\n yPos;\n if (label && label.textStr === str) {\n tick.movedLabel = label;\n moved = true;\n delete tick.label;\n }\n else { // Find a label with the same string\n objectEach(axis.ticks, function (currentTick) {\n if (!moved &&\n !currentTick.isNew &&\n currentTick !== tick &&\n currentTick.label &&\n currentTick.label.textStr === str) {\n tick.movedLabel = currentTick.label;\n moved = true;\n currentTick.labelPos = tick.movedLabel.xy;\n delete currentTick.label;\n }\n });\n }\n // Create new label if the actual one is moved\n if (!moved && (tick.labelPos || label)) {\n labelPos = tick.labelPos || label.xy;\n xPos = axis.horiz ?\n (reversed ? 0 : axis.width + axis.left) : labelPos.x;\n yPos = axis.horiz ?\n labelPos.y : (reversed ? (axis.width + axis.left) : 0);\n tick.movedLabel = tick.createLabel({ x: xPos, y: yPos }, str, labelOptions);\n if (tick.movedLabel) {\n tick.movedLabel.attr({ opacity: 0 });\n }\n }\n };\n /**\n * Put everything in place\n *\n * @private\n * @param {number} index\n *\n * @param {boolean} [old]\n * Use old coordinates to prepare an animation into new position\n *\n * @param {number} [opacity]\n */\n Tick.prototype.render = function (index, old, opacity) {\n var tick = this,\n axis = tick.axis,\n horiz = axis.horiz,\n pos = tick.pos,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n xy = tick.getPosition(horiz,\n pos,\n tickmarkOffset,\n old),\n x = xy.x,\n y = xy.y,\n reverseCrisp = ((horiz && x === axis.pos + axis.len) ||\n (!horiz && y === axis.pos)) ? -1 : 1; // #1480, #1687\n var labelOpacity = pick(opacity,\n tick.label && tick.label.newOpacity, // #15528\n 1);\n opacity = pick(opacity, 1);\n this.isActive = true;\n // Create the grid line\n this.renderGridLine(old, opacity, reverseCrisp);\n // create the tick mark\n this.renderMark(xy, opacity, reverseCrisp);\n // the label is created on init - now move it into place\n this.renderLabel(xy, old, labelOpacity, index);\n tick.isNew = false;\n fireEvent(this, 'afterRender');\n };\n /**\n * Renders the gridLine.\n *\n * @private\n * @function Highcharts.Tick#renderGridLine\n * @param {boolean} old Whether or not the tick is old\n * @param {number} opacity The opacity of the grid line\n * @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1\n */\n Tick.prototype.renderGridLine = function (old, opacity, reverseCrisp) {\n var tick = this,\n axis = tick.axis,\n options = axis.options,\n attribs = {},\n pos = tick.pos,\n type = tick.type,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n renderer = axis.chart.renderer;\n var gridLine = tick.gridLine,\n gridLinePath,\n gridLineWidth = options.gridLineWidth,\n gridLineColor = options.gridLineColor,\n dashStyle = options.gridLineDashStyle;\n if (tick.type === 'minor') {\n gridLineWidth = options.minorGridLineWidth;\n gridLineColor = options.minorGridLineColor;\n dashStyle = options.minorGridLineDashStyle;\n }\n if (!gridLine) {\n if (!axis.chart.styledMode) {\n attribs.stroke = gridLineColor;\n attribs['stroke-width'] = gridLineWidth || 0;\n attribs.dashstyle = dashStyle;\n }\n if (!type) {\n attribs.zIndex = 1;\n }\n if (old) {\n opacity = 0;\n }\n /**\n * The rendered grid line of the tick.\n * @name Highcharts.Tick#gridLine\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.gridLine = gridLine = renderer.path()\n .attr(attribs)\n .addClass('highcharts-' + (type ? type + '-' : '') + 'grid-line')\n .add(axis.gridGroup);\n }\n if (gridLine) {\n gridLinePath = axis.getPlotLinePath({\n value: pos + tickmarkOffset,\n lineWidth: gridLine.strokeWidth() * reverseCrisp,\n force: 'pass',\n old: old\n });\n // If the parameter 'old' is set, the current call will be followed\n // by another call, therefore do not do any animations this time\n if (gridLinePath) {\n gridLine[old || tick.isNew ? 'attr' : 'animate']({\n d: gridLinePath,\n opacity: opacity\n });\n }\n }\n };\n /**\n * Renders the tick mark.\n *\n * @private\n * @function Highcharts.Tick#renderMark\n * @param {Highcharts.PositionObject} xy The position vector of the mark\n * @param {number} opacity The opacity of the mark\n * @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1\n */\n Tick.prototype.renderMark = function (xy, opacity, reverseCrisp) {\n var tick = this, axis = tick.axis, options = axis.options, renderer = axis.chart.renderer, type = tick.type, tickSize = axis.tickSize(type ? type + 'Tick' : 'tick'), x = xy.x, y = xy.y, tickWidth = pick(options[type !== 'minor' ? 'tickWidth' : 'minorTickWidth'], !type && axis.isXAxis ? 1 : 0), // X axis defaults to 1\n tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];\n var mark = tick.mark;\n var isNewMark = !mark;\n if (tickSize) {\n // negate the length\n if (axis.opposite) {\n tickSize[0] = -tickSize[0];\n }\n // First time, create it\n if (!mark) {\n /**\n * The rendered mark of the tick.\n * @name Highcharts.Tick#mark\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.mark = mark = renderer.path()\n .addClass('highcharts-' + (type ? type + '-' : '') + 'tick')\n .add(axis.axisGroup);\n if (!axis.chart.styledMode) {\n mark.attr({\n stroke: tickColor,\n 'stroke-width': tickWidth\n });\n }\n }\n mark[isNewMark ? 'attr' : 'animate']({\n d: tick.getMarkPath(x, y, tickSize[0], mark.strokeWidth() * reverseCrisp, axis.horiz, renderer),\n opacity: opacity\n });\n }\n };\n /**\n * Renders the tick label.\n * Note: The label should already be created in init(), so it should only\n * have to be moved into place.\n *\n * @private\n * @function Highcharts.Tick#renderLabel\n * @param {Highcharts.PositionObject} xy The position vector of the label\n * @param {boolean} old Whether or not the tick is old\n * @param {number} opacity The opacity of the label\n * @param {number} index The index of the tick\n */\n Tick.prototype.renderLabel = function (xy, old, opacity, index) {\n var tick = this,\n axis = tick.axis,\n horiz = axis.horiz,\n options = axis.options,\n label = tick.label,\n labelOptions = options.labels,\n step = labelOptions.step,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n x = xy.x,\n y = xy.y;\n var show = true;\n if (label && isNumber(x)) {\n label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);\n // Apply show first and show last. If the tick is both first and\n // last, it is a single centered tick, in which case we show the\n // label anyway (#2100).\n if ((tick.isFirst &&\n !tick.isLast &&\n !options.showFirstLabel) ||\n (tick.isLast &&\n !tick.isFirst &&\n !options.showLastLabel)) {\n show = false;\n // Handle label overflow and show or hide accordingly\n }\n else if (horiz &&\n !labelOptions.step &&\n !labelOptions.rotation &&\n !old &&\n opacity !== 0) {\n tick.handleOverflow(xy);\n }\n // apply step\n if (step && index % step) {\n // show those indices dividable by step\n show = false;\n }\n // Set the new position, and show or hide\n if (show && isNumber(xy.y)) {\n xy.opacity = opacity;\n label[tick.isNewLabel ? 'attr' : 'animate'](xy);\n tick.isNewLabel = false;\n }\n else {\n label.attr('y', -9999); // #1338\n tick.isNewLabel = true;\n }\n }\n };\n /**\n * Replace labels with the moved ones to perform animation. Additionally\n * destroy unused labels.\n *\n * @private\n * @function Highcharts.Tick#replaceMovedLabel\n */\n Tick.prototype.replaceMovedLabel = function () {\n var tick = this,\n label = tick.label,\n axis = tick.axis,\n reversed = axis.reversed;\n var x,\n y;\n // Animate and destroy\n if (label && !tick.isNew) {\n x = axis.horiz ? (reversed ? axis.left : axis.width + axis.left) : label.xy.x;\n y = axis.horiz ?\n label.xy.y :\n (reversed ? axis.width + axis.top : axis.top);\n label.animate({ x: x, y: y, opacity: 0 }, void 0, label.destroy);\n delete tick.label;\n }\n axis.isDirty = true;\n tick.label = tick.movedLabel;\n delete tick.movedLabel;\n };\n return Tick;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Optional parameters for the tick.\n * @private\n * @interface Highcharts.TickParametersObject\n */ /**\n * Set category for the tick.\n * @name Highcharts.TickParametersObject#category\n * @type {string|undefined}\n */ /**\n * @name Highcharts.TickParametersObject#options\n * @type {Highcharts.Dictionary<any>|undefined}\n */ /**\n * Set tickmarkOffset for the tick.\n * @name Highcharts.TickParametersObject#tickmarkOffset\n * @type {number|undefined}\n */\n /**\n * Additonal time tick information.\n *\n * @interface Highcharts.TimeTicksInfoObject\n * @extends Highcharts.TimeNormalizedObject\n */ /**\n * @name Highcharts.TimeTicksInfoObject#higherRanks\n * @type {Array<string>}\n */ /**\n * @name Highcharts.TimeTicksInfoObject#totalRange\n * @type {number}\n */\n (''); // keeps doclets above in JS file\n\n return Tick;\n });\n _registerModule(_modules, 'Core/Axis/Axis.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/AxisDefaults.js'], _modules['Core/Color/Color.js'], _modules['Core/DefaultOptions.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Utilities.js']], function (A, AxisDefaults, Color, D, F, H, Tick, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject;\n var defaultOptions = D.defaultOptions;\n var registerEventOptions = F.registerEventOptions;\n var deg2rad = H.deg2rad;\n var arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n clamp = U.clamp,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n fireEvent = U.fireEvent,\n getMagnitude = U.getMagnitude,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n normalizeTickInterval = U.normalizeTickInterval,\n objectEach = U.objectEach,\n pick = U.pick,\n relativeLength = U.relativeLength,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n /* *\n *\n * Class\n *\n * */\n /**\n * Create a new axis object. Called internally when instanciating a new chart or\n * adding axes by {@link Highcharts.Chart#addAxis}.\n *\n * A chart can have from 0 axes (pie chart) to multiples. In a normal, single\n * series cartesian chart, there is one X axis and one Y axis.\n *\n * The X axis or axes are referenced by {@link Highcharts.Chart.xAxis}, which is\n * an array of Axis objects. If there is only one axis, it can be referenced\n * through `chart.xAxis[0]`, and multiple axes have increasing indices. The same\n * pattern goes for Y axes.\n *\n * If you need to get the axes from a series object, use the `series.xAxis` and\n * `series.yAxis` properties. These are not arrays, as one series can only be\n * associated to one X and one Y axis.\n *\n * A third way to reference the axis programmatically is by `id`. Add an `id` in\n * the axis configuration options, and get the axis by\n * {@link Highcharts.Chart#get}.\n *\n * Configuration options for the axes are given in options.xAxis and\n * options.yAxis.\n *\n * @class\n * @name Highcharts.Axis\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance to apply the axis on.\n *\n * @param {Highcharts.AxisOptions} userOptions\n * Axis options.\n */\n var Axis = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Axis(chart, userOptions) {\n this.alternateBands = void 0;\n this.bottom = void 0;\n this.categories = void 0;\n this.chart = void 0;\n this.closestPointRange = void 0;\n this.coll = void 0;\n this.eventOptions = void 0;\n this.hasNames = void 0;\n this.hasVisibleSeries = void 0;\n this.height = void 0;\n this.isLinked = void 0;\n this.labelEdge = void 0; // @todo\n this.labelFormatter = void 0;\n this.left = void 0;\n this.len = void 0;\n this.max = void 0;\n this.maxLabelLength = void 0;\n this.min = void 0;\n this.minorTickInterval = void 0;\n this.minorTicks = void 0;\n this.minPixelPadding = void 0;\n this.names = void 0;\n this.offset = void 0;\n this.options = void 0;\n this.overlap = void 0;\n this.paddedTicks = void 0;\n this.plotLinesAndBands = void 0;\n this.plotLinesAndBandsGroups = void 0;\n this.pointRange = void 0;\n this.pointRangePadding = void 0;\n this.pos = void 0;\n this.positiveValuesOnly = void 0;\n this.right = void 0;\n this.series = void 0;\n this.side = void 0;\n this.tickAmount = void 0;\n this.tickInterval = void 0;\n this.tickmarkOffset = void 0;\n this.tickPositions = void 0;\n this.tickRotCorr = void 0;\n this.ticks = void 0;\n this.top = void 0;\n this.transA = void 0;\n this.transB = void 0;\n this.translationSlope = void 0;\n this.userOptions = void 0;\n this.visible = void 0;\n this.width = void 0;\n this.zoomEnabled = void 0;\n this.init(chart, userOptions);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Overrideable function to initialize the axis.\n *\n * @see {@link Axis}\n *\n * @function Highcharts.Axis#init\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance to apply the axis on.\n *\n * @param {AxisOptions} userOptions\n * Axis options.\n *\n * @emits Highcharts.Axis#event:afterInit\n * @emits Highcharts.Axis#event:init\n */\n Axis.prototype.init = function (chart, userOptions) {\n var isXAxis = userOptions.isX,\n axis = this;\n /**\n * The Chart that the axis belongs to.\n *\n * @name Highcharts.Axis#chart\n * @type {Highcharts.Chart}\n */\n axis.chart = chart;\n /**\n * Whether the axis is horizontal.\n *\n * @name Highcharts.Axis#horiz\n * @type {boolean|undefined}\n */\n axis.horiz = chart.inverted && !axis.isZAxis ? !isXAxis : isXAxis;\n /**\n * Whether the axis is the x-axis.\n *\n * @name Highcharts.Axis#isXAxis\n * @type {boolean|undefined}\n */\n axis.isXAxis = isXAxis;\n /**\n * The collection where the axis belongs, for example `xAxis`, `yAxis`\n * or `colorAxis`. Corresponds to properties on Chart, for example\n * {@link Chart.xAxis}.\n *\n * @name Highcharts.Axis#coll\n * @type {string}\n */\n axis.coll = axis.coll || (isXAxis ? 'xAxis' : 'yAxis');\n fireEvent(this, 'init', { userOptions: userOptions });\n // Needed in setOptions\n axis.opposite = pick(userOptions.opposite, axis.opposite);\n /**\n * The side on which the axis is rendered. 0 is top, 1 is right, 2\n * is bottom and 3 is left.\n *\n * @name Highcharts.Axis#side\n * @type {number}\n */\n axis.side = pick(userOptions.side, axis.side, (axis.horiz ?\n (axis.opposite ? 0 : 2) : // top : bottom\n (axis.opposite ? 1 : 3)) // right : left\n );\n /**\n * Current options for the axis after merge of defaults and user's\n * options.\n *\n * @name Highcharts.Axis#options\n * @type {Highcharts.AxisOptions}\n */\n axis.setOptions(userOptions);\n var options = this.options,\n labelsOptions = options.labels,\n type = options.type;\n /**\n * User's options for this axis without defaults.\n *\n * @name Highcharts.Axis#userOptions\n * @type {Highcharts.AxisOptions}\n */\n axis.userOptions = userOptions;\n axis.minPixelPadding = 0;\n /**\n * Whether the axis is reversed. Based on the `axis.reversed`,\n * option, but inverted charts have reversed xAxis by default.\n *\n * @name Highcharts.Axis#reversed\n * @type {boolean}\n */\n axis.reversed = pick(options.reversed, axis.reversed);\n axis.visible = options.visible;\n axis.zoomEnabled = options.zoomEnabled;\n // Initial categories\n axis.hasNames =\n type === 'category' || options.categories === true;\n /**\n * If categories are present for the axis, names are used instead of\n * numbers for that axis.\n *\n * Since Highcharts 3.0, categories can also be extracted by giving each\n * point a name and setting axis type to `category`. However, if you\n * have multiple series, best practice remains defining the `categories`\n * array.\n *\n * @see [xAxis.categories](/highcharts/xAxis.categories)\n *\n * @name Highcharts.Axis#categories\n * @type {Array<string>}\n * @readonly\n */\n axis.categories = options.categories || axis.hasNames;\n if (!axis.names) { // Preserve on update (#3830)\n axis.names = [];\n axis.names.keys = {};\n }\n // Placeholder for plotlines and plotbands groups\n axis.plotLinesAndBandsGroups = {};\n // Shorthand types\n axis.positiveValuesOnly = !!axis.logarithmic;\n // Flag, if axis is linked to another axis\n axis.isLinked = defined(options.linkedTo);\n /**\n * List of major ticks mapped by postition on axis.\n *\n * @see {@link Highcharts.Tick}\n *\n * @name Highcharts.Axis#ticks\n * @type {Highcharts.Dictionary<Highcharts.Tick>}\n */\n axis.ticks = {};\n axis.labelEdge = [];\n /**\n * List of minor ticks mapped by position on the axis.\n *\n * @see {@link Highcharts.Tick}\n *\n * @name Highcharts.Axis#minorTicks\n * @type {Highcharts.Dictionary<Highcharts.Tick>}\n */\n axis.minorTicks = {};\n // List of plotLines/Bands\n axis.plotLinesAndBands = [];\n // Alternate bands\n axis.alternateBands = {};\n // Axis metrics\n axis.len = 0;\n axis.minRange = axis.userMinRange = options.minRange || options.maxZoom;\n axis.range = options.range;\n axis.offset = options.offset || 0;\n /**\n * The maximum value of the axis. In a logarithmic axis, this is the\n * logarithm of the real value, and the real value can be obtained from\n * {@link Axis#getExtremes}.\n *\n * @name Highcharts.Axis#max\n * @type {number|null}\n */\n axis.max = null;\n /**\n * The minimum value of the axis. In a logarithmic axis, this is the\n * logarithm of the real value, and the real value can be obtained from\n * {@link Axis#getExtremes}.\n *\n * @name Highcharts.Axis#min\n * @type {number|null}\n */\n axis.min = null;\n /**\n * The processed crosshair options.\n *\n * @name Highcharts.Axis#crosshair\n * @type {boolean|Highcharts.AxisCrosshairOptions}\n */\n var crosshair = pick(options.crosshair,\n splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1]);\n axis.crosshair = crosshair === true ? {} : crosshair;\n // Register. Don't add it again on Axis.update().\n if (chart.axes.indexOf(axis) === -1) { //\n if (isXAxis) { // #2713\n chart.axes.splice(chart.xAxis.length, 0, axis);\n }\n else {\n chart.axes.push(axis);\n }\n chart[axis.coll].push(axis);\n }\n /**\n * All series associated to the axis.\n *\n * @name Highcharts.Axis#series\n * @type {Array<Highcharts.Series>}\n */\n axis.series = axis.series || []; // populated by Series\n // Reversed axis\n if (chart.inverted &&\n !axis.isZAxis &&\n isXAxis &&\n typeof axis.reversed === 'undefined') {\n axis.reversed = true;\n }\n axis.labelRotation = isNumber(labelsOptions.rotation) ?\n labelsOptions.rotation :\n void 0;\n // Register event listeners\n registerEventOptions(axis, options);\n fireEvent(this, 'afterInit');\n };\n /**\n * Merge and set options.\n *\n * @private\n * @function Highcharts.Axis#setOptions\n *\n * @param {Highcharts.AxisOptions} userOptions\n * Axis options.\n *\n * @emits Highcharts.Axis#event:afterSetOptions\n */\n Axis.prototype.setOptions = function (userOptions) {\n this.options = merge(AxisDefaults.defaultXAxisOptions, (this.coll === 'yAxis') && AxisDefaults.defaultYAxisOptions, [\n AxisDefaults.defaultTopAxisOptions,\n AxisDefaults.defaultRightAxisOptions,\n AxisDefaults.defaultBottomAxisOptions,\n AxisDefaults.defaultLeftAxisOptions\n ][this.side], merge(\n // if set in setOptions (#1053):\n defaultOptions[this.coll], userOptions));\n fireEvent(this, 'afterSetOptions', { userOptions: userOptions });\n };\n /**\n * The default label formatter. The context is a special config object for\n * the label. In apps, use the\n * [labels.formatter](https://api.highcharts.com/highcharts/xAxis.labels.formatter)\n * instead, except when a modification is needed.\n *\n * @function Highcharts.Axis#defaultLabelFormatter\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} this\n * Formatter context of axis label.\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} [ctx]\n * Formatter context of axis label.\n *\n * @return {string}\n * The formatted label content.\n */\n Axis.prototype.defaultLabelFormatter = function (ctx) {\n var axis = this.axis,\n chart = this.chart,\n numberFormatter = chart.numberFormatter,\n value = isNumber(this.value) ? this.value : NaN,\n time = axis.chart.time,\n categories = axis.categories,\n dateTimeLabelFormat = this.dateTimeLabelFormat,\n lang = defaultOptions.lang,\n numericSymbols = lang.numericSymbols,\n numSymMagnitude = lang.numericSymbolMagnitude || 1000, \n // make sure the same symbol is added for all labels on a linear\n // axis\n numericSymbolDetector = axis.logarithmic ?\n Math.abs(value) :\n axis.tickInterval;\n var i = numericSymbols && numericSymbols.length,\n multi,\n ret;\n if (categories) {\n ret = \"\" + this.value;\n }\n else if (dateTimeLabelFormat) { // datetime axis\n ret = time.dateFormat(dateTimeLabelFormat, value);\n }\n else if (i && numericSymbolDetector >= 1000) {\n // Decide whether we should add a numeric symbol like k (thousands)\n // or M (millions). If we are to enable this in tooltip or other\n // places as well, we can move this logic to the numberFormatter and\n // enable it by a parameter.\n while (i-- && typeof ret === 'undefined') {\n multi = Math.pow(numSymMagnitude, i + 1);\n if (\n // Only accept a numeric symbol when the distance is more\n // than a full unit. So for example if the symbol is k, we\n // don't accept numbers like 0.5k.\n numericSymbolDetector >= multi &&\n // Accept one decimal before the symbol. Accepts 0.5k but\n // not 0.25k. How does this work with the previous?\n (value * 10) % multi === 0 &&\n numericSymbols[i] !== null &&\n value !== 0) { // #5480\n ret = numberFormatter(value / multi, -1) + numericSymbols[i];\n }\n }\n }\n if (typeof ret === 'undefined') {\n if (Math.abs(value) >= 10000) { // add thousands separators\n ret = numberFormatter(value, -1);\n }\n else { // small numbers\n ret = numberFormatter(value, -1, void 0, ''); // #2466\n }\n }\n return ret;\n };\n /**\n * Get the minimum and maximum for the series of each axis. The function\n * analyzes the axis series and updates `this.dataMin` and `this.dataMax`.\n *\n * @private\n * @function Highcharts.Axis#getSeriesExtremes\n *\n * @emits Highcharts.Axis#event:afterGetSeriesExtremes\n * @emits Highcharts.Axis#event:getSeriesExtremes\n */\n Axis.prototype.getSeriesExtremes = function () {\n var axis = this,\n chart = axis.chart;\n var xExtremes;\n fireEvent(this, 'getSeriesExtremes', null, function () {\n axis.hasVisibleSeries = false;\n // Reset properties in case we're redrawing (#3353)\n axis.dataMin = axis.dataMax = axis.threshold = null;\n axis.softThreshold = !axis.isXAxis;\n if (axis.stacking) {\n axis.stacking.buildStacks();\n }\n // loop through this axis' series\n axis.series.forEach(function (series) {\n if (series.visible ||\n !chart.options.chart.ignoreHiddenSeries) {\n var seriesOptions = series.options;\n var xData = void 0,\n threshold = seriesOptions.threshold,\n seriesDataMin = void 0,\n seriesDataMax = void 0;\n axis.hasVisibleSeries = true;\n // Validate threshold in logarithmic axes\n if (axis.positiveValuesOnly && threshold <= 0) {\n threshold = null;\n }\n // Get dataMin and dataMax for X axes\n if (axis.isXAxis) {\n xData = series.xData;\n if (xData.length) {\n var isPositive = function (number) { return number > 0; };\n xData = axis.logarithmic ?\n xData.filter(axis.validatePositiveValue) :\n xData;\n xExtremes = series.getXExtremes(xData);\n // If xData contains values which is not numbers,\n // then filter them out. To prevent performance hit,\n // we only do this after we have already found\n // seriesDataMin because in most cases all data is\n // valid. #5234.\n seriesDataMin = xExtremes.min;\n seriesDataMax = xExtremes.max;\n if (!isNumber(seriesDataMin) &&\n // #5010:\n !(seriesDataMin instanceof Date)) {\n xData = xData.filter(isNumber);\n xExtremes = series.getXExtremes(xData);\n // Do it again with valid data\n seriesDataMin = xExtremes.min;\n seriesDataMax = xExtremes.max;\n }\n if (xData.length) {\n axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);\n axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);\n }\n }\n // Get dataMin and dataMax for Y axes, as well as handle\n // stacking and processed data\n }\n else {\n // Get this particular series extremes\n var dataExtremes = series.applyExtremes();\n // Get the dataMin and dataMax so far. If percentage is\n // used, the min and max are always 0 and 100. If\n // seriesDataMin and seriesDataMax is null, then series\n // doesn't have active y data, we continue with nulls\n if (isNumber(dataExtremes.dataMin)) {\n seriesDataMin = dataExtremes.dataMin;\n axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);\n }\n if (isNumber(dataExtremes.dataMax)) {\n seriesDataMax = dataExtremes.dataMax;\n axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);\n }\n // Adjust to threshold\n if (defined(threshold)) {\n axis.threshold = threshold;\n }\n // If any series has a hard threshold, it takes\n // precedence\n if (!seriesOptions.softThreshold ||\n axis.positiveValuesOnly) {\n axis.softThreshold = false;\n }\n }\n }\n });\n });\n fireEvent(this, 'afterGetSeriesExtremes');\n };\n /**\n * Translate from axis value to pixel position on the chart, or back. Use\n * the `toPixels` and `toValue` functions in applications.\n *\n * @private\n * @function Highcharts.Axis#translate\n */\n Axis.prototype.translate = function (val, backwards, cvsCoord, old, handleLog, pointPlacement) {\n var axis = (this.linkedParent || this), // #1417\n localMin = old && axis.old ? axis.old.min : axis.min,\n minPixelPadding = axis.minPixelPadding,\n doPostTranslate = (axis.isOrdinal ||\n axis.brokenAxis && axis.brokenAxis.hasBreaks ||\n (axis.logarithmic && handleLog)) && axis.lin2val;\n var sign = 1,\n cvsOffset = 0,\n localA = old && axis.old ? axis.old.transA : axis.transA,\n returnValue = 0;\n if (!localA) {\n localA = axis.transA;\n }\n // In vertical axes, the canvas coordinates start from 0 at the top like\n // in SVG.\n if (cvsCoord) {\n sign *= -1; // canvas coordinates inverts the value\n cvsOffset = axis.len;\n }\n // Handle reversed axis\n if (axis.reversed) {\n sign *= -1;\n cvsOffset -= sign * (axis.sector || axis.len);\n }\n // From pixels to value\n if (backwards) { // reverse translation\n val = val * sign + cvsOffset;\n val -= minPixelPadding;\n // from chart pixel to value:\n returnValue = val / localA + localMin;\n if (doPostTranslate) { // log, ordinal and broken axis\n returnValue = axis.lin2val(returnValue);\n }\n // From value to pixels\n }\n else {\n if (doPostTranslate) { // log, ordinal and broken axis\n val = axis.val2lin(val);\n }\n returnValue = isNumber(localMin) ?\n (sign * (val - localMin) * localA +\n cvsOffset +\n (sign * minPixelPadding) +\n (isNumber(pointPlacement) ?\n localA * pointPlacement :\n 0)) :\n void 0;\n }\n return returnValue;\n };\n /**\n * Translate a value in terms of axis units into pixels within the chart.\n *\n * @function Highcharts.Axis#toPixels\n *\n * @param {number} value\n * A value in terms of axis units.\n *\n * @param {boolean} paneCoordinates\n * Whether to return the pixel coordinate relative to the chart or just the\n * axis/pane itself.\n *\n * @return {number}\n * Pixel position of the value on the chart or axis.\n */\n Axis.prototype.toPixels = function (value, paneCoordinates) {\n return this.translate(value, false, !this.horiz, null, true) +\n (paneCoordinates ? 0 : this.pos);\n };\n /**\n * Translate a pixel position along the axis to a value in terms of axis\n * units.\n *\n * @function Highcharts.Axis#toValue\n *\n * @param {number} pixel\n * The pixel value coordinate.\n *\n * @param {boolean} [paneCoordinates=false]\n * Whether the input pixel is relative to the chart or just the axis/pane\n * itself.\n *\n * @return {number}\n * The axis value.\n */\n Axis.prototype.toValue = function (pixel, paneCoordinates) {\n return this.translate(pixel - (paneCoordinates ? 0 : this.pos), true, !this.horiz, null, true);\n };\n /**\n * Create the path for a plot line that goes from the given value on\n * this axis, across the plot to the opposite side. Also used internally for\n * grid lines and crosshairs.\n *\n * @function Highcharts.Axis#getPlotLinePath\n *\n * @param {Highcharts.AxisPlotLinePathOptionsObject} options\n * Options for the path.\n *\n * @return {Highcharts.SVGPathArray|null}\n * The SVG path definition for the plot line.\n */\n Axis.prototype.getPlotLinePath = function (options) {\n var axis = this,\n chart = axis.chart,\n axisLeft = axis.left,\n axisTop = axis.top,\n old = options.old,\n value = options.value,\n lineWidth = options.lineWidth,\n cHeight = (old && chart.oldChartHeight) || chart.chartHeight,\n cWidth = (old && chart.oldChartWidth) || chart.chartWidth,\n transB = axis.transB;\n var translatedValue = options.translatedValue,\n force = options.force,\n x1,\n y1,\n x2,\n y2,\n skip;\n // eslint-disable-next-line valid-jsdoc\n /**\n * Check if x is between a and b. If not, either move to a/b\n * or skip, depending on the force parameter.\n * @private\n */\n function between(x, a, b) {\n if (force !== 'pass' && x < a || x > b) {\n if (force) {\n x = clamp(x, a, b);\n }\n else {\n skip = true;\n }\n }\n return x;\n }\n var evt = {\n value: value,\n lineWidth: lineWidth,\n old: old,\n force: force,\n acrossPanes: options.acrossPanes,\n translatedValue: translatedValue\n };\n fireEvent(this, 'getPlotLinePath', evt, function (e) {\n translatedValue = pick(translatedValue, axis.translate(value, null, null, old));\n // Keep the translated value within sane bounds, and avoid Infinity\n // to fail the isNumber test (#7709).\n translatedValue = clamp(translatedValue, -1e5, 1e5);\n x1 = x2 = Math.round(translatedValue + transB);\n y1 = y2 = Math.round(cHeight - translatedValue - transB);\n if (!isNumber(translatedValue)) { // no min or max\n skip = true;\n force = false; // #7175, don't force it when path is invalid\n }\n else if (axis.horiz) {\n y1 = axisTop;\n y2 = cHeight - axis.bottom;\n x1 = x2 = between(x1, axisLeft, axisLeft + axis.width);\n }\n else {\n x1 = axisLeft;\n x2 = cWidth - axis.right;\n y1 = y2 = between(y1, axisTop, axisTop + axis.height);\n }\n e.path = skip && !force ?\n null :\n chart.renderer.crispLine([['M', x1, y1], ['L', x2, y2]], lineWidth || 1);\n });\n return evt.path;\n };\n /**\n * Internal function to get the tick positions of a linear axis to round\n * values like whole tens or every five.\n *\n * @function Highcharts.Axis#getLinearTickPositions\n *\n * @param {number} tickInterval\n * The normalized tick interval.\n *\n * @param {number} min\n * Axis minimum.\n *\n * @param {number} max\n * Axis maximum.\n *\n * @return {Array<number>}\n * An array of axis values where ticks should be placed.\n */\n Axis.prototype.getLinearTickPositions = function (tickInterval, min, max) {\n var roundedMin = correctFloat(Math.floor(min / tickInterval) * tickInterval),\n roundedMax = correctFloat(Math.ceil(max / tickInterval) * tickInterval),\n tickPositions = [];\n var pos,\n lastPos,\n precision;\n // When the precision is higher than what we filter out in\n // correctFloat, skip it (#6183).\n if (correctFloat(roundedMin + tickInterval) === roundedMin) {\n precision = 20;\n }\n // For single points, add a tick regardless of the relative position\n // (#2662, #6274)\n if (this.single) {\n return [min];\n }\n // Populate the intermediate values\n pos = roundedMin;\n while (pos <= roundedMax) {\n // Place the tick on the rounded value\n tickPositions.push(pos);\n // Always add the raw tickInterval, not the corrected one.\n pos = correctFloat(pos + tickInterval, precision);\n // If the interval is not big enough in the current min - max range\n // to actually increase the loop variable, we need to break out to\n // prevent endless loop. Issue #619\n if (pos === lastPos) {\n break;\n }\n // Record the last value\n lastPos = pos;\n }\n return tickPositions;\n };\n /**\n * Resolve the new minorTicks/minorTickInterval options into the legacy\n * loosely typed minorTickInterval option.\n *\n * @function Highcharts.Axis#getMinorTickInterval\n *\n * @return {number|\"auto\"|null}\n * Legacy option\n */\n Axis.prototype.getMinorTickInterval = function () {\n var options = this.options;\n if (options.minorTicks === true) {\n return pick(options.minorTickInterval, 'auto');\n }\n if (options.minorTicks === false) {\n return null;\n }\n return options.minorTickInterval;\n };\n /**\n * Internal function to return the minor tick positions. For logarithmic\n * axes, the same logic as for major ticks is reused.\n *\n * @function Highcharts.Axis#getMinorTickPositions\n *\n * @return {Array<number>}\n * An array of axis values where ticks should be placed.\n */\n Axis.prototype.getMinorTickPositions = function () {\n var axis = this,\n options = axis.options,\n tickPositions = axis.tickPositions,\n minorTickInterval = axis.minorTickInterval,\n pointRangePadding = axis.pointRangePadding || 0,\n min = axis.min - pointRangePadding, // #1498\n max = axis.max + pointRangePadding, // #1498\n range = max - min;\n var minorTickPositions = [],\n pos;\n // If minor ticks get too dense, they are hard to read, and may cause\n // long running script. So we don't draw them.\n if (range && range / minorTickInterval < axis.len / 3) { // #3875\n var logarithmic_1 = axis.logarithmic;\n if (logarithmic_1) {\n // For each interval in the major ticks, compute the minor ticks\n // separately.\n this.paddedTicks.forEach(function (_pos, i, paddedTicks) {\n if (i) {\n minorTickPositions.push.apply(minorTickPositions, logarithmic_1.getLogTickPositions(minorTickInterval, paddedTicks[i - 1], paddedTicks[i], true));\n }\n });\n }\n else if (axis.dateTime &&\n this.getMinorTickInterval() === 'auto') { // #1314\n minorTickPositions = minorTickPositions.concat(axis.getTimeTicks(axis.dateTime.normalizeTimeTickInterval(minorTickInterval), min, max, options.startOfWeek));\n }\n else {\n for (pos = min + (tickPositions[0] - min) % minorTickInterval; pos <= max; pos += minorTickInterval) {\n // Very, very, tight grid lines (#5771)\n if (pos === minorTickPositions[0]) {\n break;\n }\n minorTickPositions.push(pos);\n }\n }\n }\n if (minorTickPositions.length !== 0) {\n axis.trimTicks(minorTickPositions); // #3652 #3743 #1498 #6330\n }\n return minorTickPositions;\n };\n /**\n * Adjust the min and max for the minimum range. Keep in mind that the\n * series data is not yet processed, so we don't have information on data\n * cropping and grouping, or updated `axis.pointRange` or\n * `series.pointRange`. The data can't be processed until we have finally\n * established min and max.\n *\n * @private\n * @function Highcharts.Axis#adjustForMinRange\n */\n Axis.prototype.adjustForMinRange = function () {\n var axis = this,\n options = axis.options,\n log = axis.logarithmic;\n var min = axis.min,\n max = axis.max,\n zoomOffset,\n spaceAvailable,\n closestDataRange = 0,\n i,\n distance,\n xData,\n loopLength,\n minArgs,\n maxArgs,\n minRange;\n // Set the automatic minimum range based on the closest point distance\n if (axis.isXAxis &&\n typeof axis.minRange === 'undefined' &&\n !log) {\n if (defined(options.min) ||\n defined(options.max) ||\n defined(options.floor) ||\n defined(options.ceiling)) {\n axis.minRange = null; // don't do this again\n }\n else {\n // Find the closest distance between raw data points, as opposed\n // to closestPointRange that applies to processed points\n // (cropped and grouped)\n axis.series.forEach(function (series) {\n xData = series.xData;\n loopLength = series.xIncrement ? 1 : xData.length - 1;\n if (xData.length > 1) {\n for (i = loopLength; i > 0; i--) {\n distance = xData[i] - xData[i - 1];\n if (!closestDataRange ||\n distance < closestDataRange) {\n closestDataRange = distance;\n }\n }\n }\n });\n axis.minRange = Math.min(closestDataRange * 5, axis.dataMax - axis.dataMin);\n }\n }\n // if minRange is exceeded, adjust\n if (max - min < axis.minRange) {\n spaceAvailable =\n axis.dataMax - axis.dataMin >=\n axis.minRange;\n minRange = axis.minRange;\n zoomOffset = (minRange - max + min) / 2;\n // if min and max options have been set, don't go beyond it\n minArgs = [\n min - zoomOffset,\n pick(options.min, min - zoomOffset)\n ];\n // If space is available, stay within the data range\n if (spaceAvailable) {\n minArgs[2] = axis.logarithmic ?\n axis.logarithmic.log2lin(axis.dataMin) :\n axis.dataMin;\n }\n min = arrayMax(minArgs);\n maxArgs = [\n min + minRange,\n pick(options.max, min + minRange)\n ];\n // If space is availabe, stay within the data range\n if (spaceAvailable) {\n maxArgs[2] = log ?\n log.log2lin(axis.dataMax) :\n axis.dataMax;\n }\n max = arrayMin(maxArgs);\n // now if the max is adjusted, adjust the min back\n if (max - min < minRange) {\n minArgs[0] = max - minRange;\n minArgs[1] = pick(options.min, max - minRange);\n min = arrayMax(minArgs);\n }\n }\n // Record modified extremes\n axis.min = min;\n axis.max = max;\n };\n /**\n * Find the closestPointRange across all series.\n *\n * @private\n * @function Highcharts.Axis#getClosest\n */\n Axis.prototype.getClosest = function () {\n var ret;\n if (this.categories) {\n ret = 1;\n }\n else {\n this.series.forEach(function (series) {\n var seriesClosest = series.closestPointRange,\n visible = series.visible ||\n !series.chart.options.chart.ignoreHiddenSeries;\n if (!series.noSharedTooltip &&\n defined(seriesClosest) &&\n visible) {\n ret = defined(ret) ?\n Math.min(ret, seriesClosest) :\n seriesClosest;\n }\n });\n }\n return ret;\n };\n /**\n * When a point name is given and no x, search for the name in the existing\n * categories, or if categories aren't provided, search names or create a\n * new category (#2522).\n *\n * @private\n * @function Highcharts.Axis#nameToX\n *\n * @param {Highcharts.Point} point\n * The point to inspect.\n *\n * @return {number}\n * The X value that the point is given.\n */\n Axis.prototype.nameToX = function (point) {\n var explicitCategories = isArray(this.categories),\n names = explicitCategories ? this.categories : this.names;\n var nameX = point.options.x,\n x;\n point.series.requireSorting = false;\n if (!defined(nameX)) {\n nameX = this.options.uniqueNames ?\n (explicitCategories ?\n names.indexOf(point.name) :\n pick(names.keys[point.name], -1)) :\n point.series.autoIncrement();\n }\n if (nameX === -1) { // Not found in currenct categories\n if (!explicitCategories) {\n x = names.length;\n }\n }\n else {\n x = nameX;\n }\n // Write the last point's name to the names array\n if (typeof x !== 'undefined') {\n this.names[x] = point.name;\n // Backwards mapping is much faster than array searching (#7725)\n this.names.keys[point.name] = x;\n }\n return x;\n };\n /**\n * When changes have been done to series data, update the axis.names.\n *\n * @private\n * @function Highcharts.Axis#updateNames\n */\n Axis.prototype.updateNames = function () {\n var axis = this,\n names = this.names,\n i = names.length;\n if (i > 0) {\n Object.keys(names.keys).forEach(function (key) {\n delete (names.keys)[key];\n });\n names.length = 0;\n this.minRange = this.userMinRange; // Reset\n (this.series || []).forEach(function (series) {\n // Reset incrementer (#5928)\n series.xIncrement = null;\n // When adding a series, points are not yet generated\n if (!series.points || series.isDirtyData) {\n // When we're updating the series with data that is longer\n // than it was, and cropThreshold is passed, we need to make\n // sure that the axis.max is increased _before_ running the\n // premature processData. Otherwise this early iteration of\n // processData will crop the points to axis.max, and the\n // names array will be too short (#5857).\n axis.max = Math.max(axis.max, series.xData.length - 1);\n series.processData();\n series.generatePoints();\n }\n series.data.forEach(function (point, i) {\n var x;\n if (point &&\n point.options &&\n typeof point.name !== 'undefined' // #9562\n ) {\n x = axis.nameToX(point);\n if (typeof x !== 'undefined' && x !== point.x) {\n point.x = x;\n series.xData[i] = x;\n }\n }\n });\n });\n }\n };\n /**\n * Update translation information.\n *\n * @private\n * @function Highcharts.Axis#setAxisTranslation\n *\n * @emits Highcharts.Axis#event:afterSetAxisTranslation\n */\n Axis.prototype.setAxisTranslation = function () {\n var axis = this,\n range = axis.max - axis.min,\n linkedParent = axis.linkedParent,\n hasCategories = !!axis.categories,\n isXAxis = axis.isXAxis;\n var pointRange = axis.axisPointRange || 0,\n closestPointRange,\n minPointOffset = 0,\n pointRangePadding = 0,\n ordinalCorrection,\n transA = axis.transA;\n // Adjust translation for padding. Y axis with categories need to go\n // through the same (#1784).\n if (isXAxis || hasCategories || pointRange) {\n // Get the closest points\n closestPointRange = axis.getClosest();\n if (linkedParent) {\n minPointOffset = linkedParent.minPointOffset;\n pointRangePadding = linkedParent.pointRangePadding;\n }\n else {\n axis.series.forEach(function (series) {\n var seriesPointRange = hasCategories ?\n 1 :\n (isXAxis ?\n pick(series.options.pointRange,\n closestPointRange, 0) :\n (axis.axisPointRange || 0)), // #2806\n pointPlacement = series.options.pointPlacement;\n pointRange = Math.max(pointRange, seriesPointRange);\n if (!axis.single || hasCategories) {\n // TODO: series should internally set x- and y-\n // pointPlacement to simplify this logic.\n var isPointPlacementAxis = series.is('xrange') ?\n !isXAxis :\n isXAxis;\n // minPointOffset is the value padding to the left of\n // the axis in order to make room for points with a\n // pointRange, typically columns. When the\n // pointPlacement option is 'between' or 'on', this\n // padding does not apply.\n minPointOffset = Math.max(minPointOffset, isPointPlacementAxis && isString(pointPlacement) ?\n 0 :\n seriesPointRange / 2);\n // Determine the total padding needed to the length of\n // the axis to make room for the pointRange. If the\n // series' pointPlacement is 'on', no padding is added.\n pointRangePadding = Math.max(pointRangePadding, isPointPlacementAxis && pointPlacement === 'on' ?\n 0 :\n seriesPointRange);\n }\n });\n }\n // Record minPointOffset and pointRangePadding\n ordinalCorrection = (axis.ordinal && axis.ordinal.slope && closestPointRange) ?\n axis.ordinal.slope / closestPointRange :\n 1; // #988, #1853\n axis.minPointOffset = minPointOffset =\n minPointOffset * ordinalCorrection;\n axis.pointRangePadding =\n pointRangePadding = pointRangePadding * ordinalCorrection;\n // pointRange means the width reserved for each point, like in a\n // column chart\n axis.pointRange = Math.min(pointRange, axis.single && hasCategories ? 1 : range);\n // closestPointRange means the closest distance between points. In\n // columns it is mostly equal to pointRange, but in lines pointRange\n // is 0 while closestPointRange is some other value\n if (isXAxis) {\n axis.closestPointRange = closestPointRange;\n }\n }\n // Secondary values\n axis.translationSlope = axis.transA = transA =\n axis.staticScale ||\n axis.len / ((range + pointRangePadding) || 1);\n // Translation addend\n axis.transB = axis.horiz ? axis.left : axis.bottom;\n axis.minPixelPadding = transA * minPointOffset;\n fireEvent(this, 'afterSetAxisTranslation');\n };\n /**\n * @private\n * @function Highcharts.Axis#minFromRange\n */\n Axis.prototype.minFromRange = function () {\n var axis = this;\n return axis.max - axis.range;\n };\n /**\n * Set the tick positions to round values and optionally extend the extremes\n * to the nearest tick.\n *\n * @private\n * @function Highcharts.Axis#setTickInterval\n *\n * @param {boolean} secondPass\n * TO-DO: parameter description\n *\n * @emits Highcharts.Axis#event:foundExtremes\n */\n Axis.prototype.setTickInterval = function (secondPass) {\n var axis = this,\n chart = axis.chart,\n log = axis.logarithmic,\n options = axis.options,\n isXAxis = axis.isXAxis,\n isLinked = axis.isLinked,\n tickPixelIntervalOption = options.tickPixelInterval,\n categories = axis.categories,\n softThreshold = axis.softThreshold;\n var maxPadding = options.maxPadding,\n minPadding = options.minPadding,\n length,\n linkedParentExtremes, \n // Only non-negative tickInterval is valid, #12961\n tickIntervalOption = isNumber(options.tickInterval) && options.tickInterval >= 0 ?\n options.tickInterval : void 0,\n threshold = isNumber(axis.threshold) ? axis.threshold : null,\n thresholdMin,\n thresholdMax,\n hardMin,\n hardMax;\n if (!axis.dateTime && !categories && !isLinked) {\n this.getTickAmount();\n }\n // Min or max set either by zooming/setExtremes or initial options\n hardMin = pick(axis.userMin, options.min);\n hardMax = pick(axis.userMax, options.max);\n // Linked axis gets the extremes from the parent axis\n if (isLinked) {\n axis.linkedParent = chart[axis.coll][options.linkedTo];\n linkedParentExtremes = axis.linkedParent.getExtremes();\n axis.min = pick(linkedParentExtremes.min, linkedParentExtremes.dataMin);\n axis.max = pick(linkedParentExtremes.max, linkedParentExtremes.dataMax);\n if (options.type !== axis.linkedParent.options.type) {\n // Can't link axes of different type\n error(11, 1, chart);\n }\n // Initial min and max from the extreme data values\n }\n else {\n // Adjust to hard threshold\n if (softThreshold && defined(threshold)) {\n if (axis.dataMin >= threshold) {\n thresholdMin = threshold;\n minPadding = 0;\n }\n else if (axis.dataMax <= threshold) {\n thresholdMax = threshold;\n maxPadding = 0;\n }\n }\n axis.min = pick(hardMin, thresholdMin, axis.dataMin);\n axis.max = pick(hardMax, thresholdMax, axis.dataMax);\n }\n if (log) {\n if (axis.positiveValuesOnly &&\n !secondPass &&\n Math.min(axis.min, pick(axis.dataMin, axis.min)) <= 0) { // #978\n // Can't plot negative values on log axis\n error(10, 1, chart);\n }\n // The correctFloat cures #934, float errors on full tens. But it\n // was too aggressive for #4360 because of conversion back to lin,\n // therefore use precision 15.\n axis.min = correctFloat(log.log2lin(axis.min), 16);\n axis.max = correctFloat(log.log2lin(axis.max), 16);\n }\n // handle zoomed range\n if (axis.range && defined(axis.max)) {\n // #618, #6773:\n axis.userMin = axis.min = hardMin =\n Math.max(axis.dataMin, axis.minFromRange());\n axis.userMax = hardMax = axis.max;\n axis.range = null; // don't use it when running setExtremes\n }\n // Hook for Highcharts Stock Scroller.\n // Consider combining with beforePadding.\n fireEvent(axis, 'foundExtremes');\n // Hook for adjusting this.min and this.max. Used by bubble series.\n if (axis.beforePadding) {\n axis.beforePadding();\n }\n // adjust min and max for the minimum range\n axis.adjustForMinRange();\n // Pad the values to get clear of the chart's edges. To avoid\n // tickInterval taking the padding into account, we do this after\n // computing tick interval (#1337).\n if (!categories &&\n !axis.axisPointRange &&\n !(axis.stacking && axis.stacking.usePercentage) &&\n !isLinked &&\n defined(axis.min) &&\n defined(axis.max)) {\n length = axis.max - axis.min;\n if (length) {\n if (!defined(hardMin) && minPadding) {\n axis.min -= length * minPadding;\n }\n if (!defined(hardMax) && maxPadding) {\n axis.max += length * maxPadding;\n }\n }\n }\n // Handle options for floor, ceiling, softMin and softMax (#6359)\n if (!isNumber(axis.userMin)) {\n if (isNumber(options.softMin) && options.softMin < axis.min) {\n axis.min = hardMin = options.softMin; // #6894\n }\n if (isNumber(options.floor)) {\n axis.min = Math.max(axis.min, options.floor);\n }\n }\n if (!isNumber(axis.userMax)) {\n if (isNumber(options.softMax) && options.softMax > axis.max) {\n axis.max = hardMax = options.softMax; // #6894\n }\n if (isNumber(options.ceiling)) {\n axis.max = Math.min(axis.max, options.ceiling);\n }\n }\n // When the threshold is soft, adjust the extreme value only if the data\n // extreme and the padded extreme land on either side of the threshold.\n // For example, a series of [0, 1, 2, 3] would make the yAxis add a tick\n // for -1 because of the default minPadding and startOnTick options.\n // This is prevented by the softThreshold option.\n if (softThreshold && defined(axis.dataMin)) {\n threshold = threshold || 0;\n if (!defined(hardMin) &&\n axis.min < threshold &&\n axis.dataMin >= threshold) {\n axis.min = axis.options.minRange ?\n Math.min(threshold, axis.max -\n axis.minRange) :\n threshold;\n }\n else if (!defined(hardMax) &&\n axis.max > threshold &&\n axis.dataMax <= threshold) {\n axis.max = axis.options.minRange ?\n Math.max(threshold, axis.min +\n axis.minRange) :\n threshold;\n }\n }\n // If min is bigger than highest, or if max less than lowest value, the\n // chart should not render points. (#14417)\n if (isNumber(axis.min) &&\n isNumber(axis.max) &&\n !this.chart.polar &&\n (axis.min > axis.max)) {\n if (defined(axis.options.min)) {\n axis.max = axis.min;\n }\n else if (defined(axis.options.max)) {\n axis.min = axis.max;\n }\n }\n // get tickInterval\n if (axis.min === axis.max ||\n typeof axis.min === 'undefined' ||\n typeof axis.max === 'undefined') {\n axis.tickInterval = 1;\n }\n else if (isLinked &&\n axis.linkedParent &&\n !tickIntervalOption &&\n tickPixelIntervalOption ===\n axis.linkedParent.options.tickPixelInterval) {\n axis.tickInterval = tickIntervalOption =\n axis.linkedParent.tickInterval;\n }\n else {\n axis.tickInterval = pick(tickIntervalOption, this.tickAmount ?\n ((axis.max - axis.min) /\n Math.max(this.tickAmount - 1, 1)) :\n void 0, \n // For categoried axis, 1 is default, for linear axis use\n // tickPix\n categories ?\n 1 :\n // don't let it be more than the data range\n (axis.max - axis.min) *\n tickPixelIntervalOption /\n Math.max(axis.len, tickPixelIntervalOption));\n }\n // Now we're finished detecting min and max, crop and group series data.\n // This is in turn needed in order to find tick positions in ordinal\n // axes.\n if (isXAxis && !secondPass) {\n var hasExtemesChanged_1 = axis.min !== (axis.old && axis.old.min) ||\n axis.max !== (axis.old && axis.old.max);\n // First process all series assigned to that axis.\n axis.series.forEach(function (series) {\n // Allows filtering out points outside the plot area.\n series.forceCrop = (series.forceCropping &&\n series.forceCropping());\n series.processData(hasExtemesChanged_1);\n });\n // Then apply grouping if needed. The hasExtemesChanged helps to\n // decide if the data grouping should be skipped in the further\n // calculations #16319.\n fireEvent(this, 'postProcessData', { hasExtemesChanged: hasExtemesChanged_1 });\n }\n // set the translation factor used in translate function\n axis.setAxisTranslation();\n // hook for ordinal axes and radial axes\n fireEvent(this, 'initialAxisTranslation');\n // In column-like charts, don't cramp in more ticks than there are\n // points (#1943, #4184)\n if (axis.pointRange && !tickIntervalOption) {\n axis.tickInterval = Math.max(axis.pointRange, axis.tickInterval);\n }\n // Before normalizing the tick interval, handle minimum tick interval.\n // This applies only if tickInterval is not defined.\n var minTickInterval = pick(options.minTickInterval, \n // In datetime axes, don't go below the data interval, except when\n // there are scatter-like series involved (#13369).\n axis.dateTime &&\n !axis.series.some(function (s) { return s.noSharedTooltip; }) ?\n axis.closestPointRange : 0);\n if (!tickIntervalOption && axis.tickInterval < minTickInterval) {\n axis.tickInterval = minTickInterval;\n }\n // for linear axes, get magnitude and normalize the interval\n if (!axis.dateTime && !axis.logarithmic && !tickIntervalOption) {\n axis.tickInterval = normalizeTickInterval(axis.tickInterval, void 0, getMagnitude(axis.tickInterval), pick(options.allowDecimals, \n // If the tick interval is greather than 0.5, avoid\n // decimals, as linear axes are often used to render\n // discrete values. #3363. If a tick amount is set, allow\n // decimals by default, as it increases the chances for a\n // good fit.\n axis.tickInterval < 0.5 || this.tickAmount !== void 0), !!this.tickAmount);\n }\n // Prevent ticks from getting so close that we can't draw the labels\n if (!this.tickAmount) {\n axis.tickInterval = axis.unsquish();\n }\n this.setTickPositions();\n };\n /**\n * Now we have computed the normalized tickInterval, get the tick positions.\n *\n * @private\n * @function Highcharts.Axis#setTickPositions\n *\n * @emits Highcharts.Axis#event:afterSetTickPositions\n */\n Axis.prototype.setTickPositions = function () {\n var axis = this,\n options = this.options,\n tickPositionsOption = options.tickPositions,\n minorTickIntervalOption = this.getMinorTickInterval(),\n hasVerticalPanning = this.hasVerticalPanning(),\n isColorAxis = this.coll === 'colorAxis',\n startOnTick = ((isColorAxis || !hasVerticalPanning) && options.startOnTick),\n endOnTick = ((isColorAxis || !hasVerticalPanning) && options.endOnTick);\n var tickPositions,\n tickPositioner = options.tickPositioner;\n // Set the tickmarkOffset\n this.tickmarkOffset = (this.categories &&\n options.tickmarkPlacement === 'between' &&\n this.tickInterval === 1) ? 0.5 : 0; // #3202\n // get minorTickInterval\n this.minorTickInterval =\n minorTickIntervalOption === 'auto' &&\n this.tickInterval ?\n this.tickInterval / 5 :\n minorTickIntervalOption;\n // When there is only one point, or all points have the same value on\n // this axis, then min and max are equal and tickPositions.length is 0\n // or 1. In this case, add some padding in order to center the point,\n // but leave it with one tick. #1337.\n this.single =\n this.min === this.max &&\n defined(this.min) &&\n !this.tickAmount &&\n (\n // Data is on integer (#6563)\n parseInt(this.min, 10) === this.min ||\n // Between integers and decimals are not allowed (#6274)\n options.allowDecimals !== false);\n /**\n * Contains the current positions that are laid out on the axis. The\n * positions are numbers in terms of axis values. In a category axis\n * they are integers, in a datetime axis they are also integers, but\n * designating milliseconds.\n *\n * This property is read only - for modifying the tick positions, use\n * the `tickPositioner` callback or [axis.tickPositions(\n * https://api.highcharts.com/highcharts/xAxis.tickPositions) option\n * instead.\n *\n * @name Highcharts.Axis#tickPositions\n * @type {Highcharts.AxisTickPositionsArray|undefined}\n */\n this.tickPositions =\n // Find the tick positions. Work on a copy (#1565)\n tickPositions =\n (tickPositionsOption && tickPositionsOption.slice());\n if (!tickPositions) {\n // Too many ticks (#6405). Create a friendly warning and provide two\n // ticks so at least we can show the data series.\n if ((!axis.ordinal || !axis.ordinal.positions) &&\n ((this.max - this.min) /\n this.tickInterval >\n Math.max(2 * this.len, 200))) {\n tickPositions = [this.min, this.max];\n error(19, false, this.chart);\n }\n else if (axis.dateTime) {\n tickPositions = axis.getTimeTicks(axis.dateTime.normalizeTimeTickInterval(this.tickInterval, options.units), this.min, this.max, options.startOfWeek, axis.ordinal && axis.ordinal.positions, this.closestPointRange, true);\n }\n else if (axis.logarithmic) {\n tickPositions = axis.logarithmic.getLogTickPositions(this.tickInterval, this.min, this.max);\n }\n else {\n tickPositions = this.getLinearTickPositions(this.tickInterval, this.min, this.max);\n }\n // Too dense ticks, keep only the first and last (#4477)\n if (tickPositions.length > this.len) {\n tickPositions = [tickPositions[0], tickPositions.pop()];\n // Reduce doubled value (#7339)\n if (tickPositions[0] === tickPositions[1]) {\n tickPositions.length = 1;\n }\n }\n this.tickPositions = tickPositions;\n // Run the tick positioner callback, that allows modifying auto tick\n // positions.\n if (tickPositioner) {\n tickPositioner = tickPositioner.apply(axis, [this.min, this.max]);\n if (tickPositioner) {\n this.tickPositions = tickPositions = tickPositioner;\n }\n }\n }\n // Reset min/max or remove extremes based on start/end on tick\n this.paddedTicks = tickPositions.slice(0); // Used for logarithmic minor\n this.trimTicks(tickPositions, startOnTick, endOnTick);\n if (!this.isLinked) {\n // Substract half a unit (#2619, #2846, #2515, #3390),\n // but not in case of multiple ticks (#6897)\n if (this.single &&\n tickPositions.length < 2 &&\n !this.categories &&\n !this.series.some(function (s) {\n return (s.is('heatmap') && s.options.pointPlacement === 'between');\n })) {\n this.min -= 0.5;\n this.max += 0.5;\n }\n if (!tickPositionsOption && !tickPositioner) {\n this.adjustTickAmount();\n }\n }\n fireEvent(this, 'afterSetTickPositions');\n };\n /**\n * Handle startOnTick and endOnTick by either adapting to padding min/max or\n * rounded min/max. Also handle single data points.\n *\n * @private\n * @function Highcharts.Axis#trimTicks\n *\n * @param {Array<number>} tickPositions\n * TO-DO: parameter description\n *\n * @param {boolean} [startOnTick]\n * TO-DO: parameter description\n *\n * @param {boolean} [endOnTick]\n * TO-DO: parameter description\n */\n Axis.prototype.trimTicks = function (tickPositions, startOnTick, endOnTick) {\n var roundedMin = tickPositions[0],\n roundedMax = tickPositions[tickPositions.length - 1],\n minPointOffset = (!this.isOrdinal && this.minPointOffset) || 0; // (#12716)\n fireEvent(this, 'trimTicks');\n if (!this.isLinked) {\n if (startOnTick && roundedMin !== -Infinity) { // #6502\n this.min = roundedMin;\n }\n else {\n while (this.min - minPointOffset > tickPositions[0]) {\n tickPositions.shift();\n }\n }\n if (endOnTick) {\n this.max = roundedMax;\n }\n else {\n while (this.max + minPointOffset <\n tickPositions[tickPositions.length - 1]) {\n tickPositions.pop();\n }\n }\n // If no tick are left, set one tick in the middle (#3195)\n if (tickPositions.length === 0 &&\n defined(roundedMin) &&\n !this.options.tickPositions) {\n tickPositions.push((roundedMax + roundedMin) / 2);\n }\n }\n };\n /**\n * Check if there are multiple axes in the same pane.\n *\n * @private\n * @function Highcharts.Axis#alignToOthers\n *\n * @return {boolean|undefined}\n * True if there are other axes.\n */\n Axis.prototype.alignToOthers = function () {\n var axis = this,\n others = // Whether there is another axis to pair with this one\n {},\n options = axis.options;\n var hasOther;\n if (\n // Only if alignTicks is true\n this.chart.options.chart.alignTicks !== false &&\n options.alignTicks &&\n // Disabled when startOnTick or endOnTick are false (#7604)\n options.startOnTick !== false &&\n options.endOnTick !== false &&\n // Don't try to align ticks on a log axis, they are not evenly\n // spaced (#6021)\n !axis.logarithmic) {\n this.chart[this.coll].forEach(function (axis) {\n var otherOptions = axis.options, horiz = axis.horiz, key = [\n horiz ? otherOptions.left : otherOptions.top,\n otherOptions.width,\n otherOptions.height,\n otherOptions.pane\n ].join(',');\n if (axis.series.length) { // #4442\n if (others[key]) {\n hasOther = true; // #4201\n }\n else {\n others[key] = 1;\n }\n }\n });\n }\n return hasOther;\n };\n /**\n * Find the max ticks of either the x and y axis collection, and record it\n * in `this.tickAmount`.\n *\n * @private\n * @function Highcharts.Axis#getTickAmount\n */\n Axis.prototype.getTickAmount = function () {\n var axis = this,\n options = this.options,\n tickPixelInterval = options.tickPixelInterval;\n var tickAmount = options.tickAmount;\n if (!defined(options.tickInterval) &&\n !tickAmount &&\n this.len < tickPixelInterval &&\n !this.isRadial &&\n !axis.logarithmic &&\n options.startOnTick &&\n options.endOnTick) {\n tickAmount = 2;\n }\n if (!tickAmount && this.alignToOthers()) {\n // Add 1 because 4 tick intervals require 5 ticks (including first\n // and last)\n tickAmount = Math.ceil(this.len / tickPixelInterval) + 1;\n }\n // For tick amounts of 2 and 3, compute five ticks and remove the\n // intermediate ones. This prevents the axis from adding ticks that are\n // too far away from the data extremes.\n if (tickAmount < 4) {\n this.finalTickAmt = tickAmount;\n tickAmount = 5;\n }\n this.tickAmount = tickAmount;\n };\n /**\n * When using multiple axes, adjust the number of ticks to match the highest\n * number of ticks in that group.\n *\n * @private\n * @function Highcharts.Axis#adjustTickAmount\n */\n Axis.prototype.adjustTickAmount = function () {\n var axis = this,\n axisOptions = axis.options,\n tickInterval = axis.tickInterval,\n tickPositions = axis.tickPositions,\n tickAmount = axis.tickAmount,\n finalTickAmt = axis.finalTickAmt,\n currentTickAmount = tickPositions && tickPositions.length,\n threshold = pick(axis.threshold,\n axis.softThreshold ? 0 : null);\n var len,\n i;\n if (axis.hasData() &&\n isNumber(axis.min) &&\n isNumber(axis.max)) { // #14769\n if (currentTickAmount < tickAmount) {\n while (tickPositions.length < tickAmount) {\n // Extend evenly for both sides unless we're on the\n // threshold (#3965)\n if (tickPositions.length % 2 ||\n axis.min === threshold) {\n // to the end\n tickPositions.push(correctFloat(tickPositions[tickPositions.length - 1] +\n tickInterval));\n }\n else {\n // to the start\n tickPositions.unshift(correctFloat(tickPositions[0] - tickInterval));\n }\n }\n axis.transA *= (currentTickAmount - 1) / (tickAmount - 1);\n // Do not crop when ticks are not extremes (#9841)\n axis.min = axisOptions.startOnTick ?\n tickPositions[0] :\n Math.min(axis.min, tickPositions[0]);\n axis.max = axisOptions.endOnTick ?\n tickPositions[tickPositions.length - 1] :\n Math.max(axis.max, tickPositions[tickPositions.length - 1]);\n // We have too many ticks, run second pass to try to reduce ticks\n }\n else if (currentTickAmount > tickAmount) {\n axis.tickInterval *= 2;\n axis.setTickPositions();\n }\n // The finalTickAmt property is set in getTickAmount\n if (defined(finalTickAmt)) {\n i = len = tickPositions.length;\n while (i--) {\n if (\n // Remove every other tick\n (finalTickAmt === 3 && i % 2 === 1) ||\n // Remove all but first and last\n (finalTickAmt <= 2 && i > 0 && i < len - 1)) {\n tickPositions.splice(i, 1);\n }\n }\n axis.finalTickAmt = void 0;\n }\n }\n };\n /**\n * Set the scale based on data min and max, user set min and max or options.\n *\n * @private\n * @function Highcharts.Axis#setScale\n *\n * @emits Highcharts.Axis#event:afterSetScale\n */\n Axis.prototype.setScale = function () {\n var axis = this;\n var isDirtyData = false,\n isXAxisDirty = false;\n axis.series.forEach(function (series) {\n isDirtyData = isDirtyData || series.isDirtyData || series.isDirty;\n // When x axis is dirty, we need new data extremes for y as\n // well:\n isXAxisDirty = (isXAxisDirty ||\n (series.xAxis && series.xAxis.isDirty) ||\n false);\n });\n // set the new axisLength\n axis.setAxisSize();\n var isDirtyAxisLength = axis.len !== (axis.old && axis.old.len);\n // do we really need to go through all this?\n if (isDirtyAxisLength ||\n isDirtyData ||\n isXAxisDirty ||\n axis.isLinked ||\n axis.forceRedraw ||\n axis.userMin !== (axis.old && axis.old.userMin) ||\n axis.userMax !== (axis.old && axis.old.userMax) ||\n axis.alignToOthers()) {\n if (axis.stacking) {\n axis.stacking.resetStacks();\n }\n axis.forceRedraw = false;\n // get data extremes if needed\n axis.getSeriesExtremes();\n // get fixed positions based on tickInterval\n axis.setTickInterval();\n // Mark as dirty if it is not already set to dirty and extremes have\n // changed. #595.\n if (!axis.isDirty) {\n axis.isDirty =\n isDirtyAxisLength ||\n axis.min !== (axis.old && axis.old.min) ||\n axis.max !== (axis.old && axis.old.max);\n }\n }\n else if (axis.stacking) {\n axis.stacking.cleanStacks();\n }\n // Recalculate panning state object, when the data\n // has changed. It is required when vertical panning is enabled.\n if (isDirtyData && axis.panningState) {\n axis.panningState.isDirty = true;\n }\n fireEvent(this, 'afterSetScale');\n };\n /**\n * Set the minimum and maximum of the axes after render time. If the\n * `startOnTick` and `endOnTick` options are true, the minimum and maximum\n * values are rounded off to the nearest tick. To prevent this, these\n * options can be set to false before calling setExtremes. Also, setExtremes\n * will not allow a range lower than the `minRange` option, which by default\n * is the range of five points.\n *\n * @sample highcharts/members/axis-setextremes/\n * Set extremes from a button\n * @sample highcharts/members/axis-setextremes-datetime/\n * Set extremes on a datetime axis\n * @sample highcharts/members/axis-setextremes-off-ticks/\n * Set extremes off ticks\n * @sample stock/members/axis-setextremes/\n * Set extremes in Highcharts Stock\n *\n * @function Highcharts.Axis#setExtremes\n *\n * @param {number} [newMin]\n * The new minimum value.\n *\n * @param {number} [newMax]\n * The new maximum value.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=true]\n * Enable or modify animations.\n *\n * @param {*} [eventArguments]\n * Arguments to be accessed in event handler.\n *\n * @emits Highcharts.Axis#event:setExtremes\n */\n Axis.prototype.setExtremes = function (newMin, newMax, redraw, animation, eventArguments) {\n var axis = this,\n chart = axis.chart;\n redraw = pick(redraw, true); // defaults to true\n axis.series.forEach(function (serie) {\n delete serie.kdTree;\n });\n // Extend the arguments with min and max\n eventArguments = extend(eventArguments, {\n min: newMin,\n max: newMax\n });\n // Fire the event\n fireEvent(axis, 'setExtremes', eventArguments, function () {\n axis.userMin = newMin;\n axis.userMax = newMax;\n axis.eventArgs = eventArguments;\n if (redraw) {\n chart.redraw(animation);\n }\n });\n };\n /**\n * Overridable method for zooming chart. Pulled out in a separate method to\n * allow overriding in stock charts.\n *\n * @private\n * @function Highcharts.Axis#zoom\n */\n Axis.prototype.zoom = function (newMin, newMax) {\n var axis = this,\n dataMin = this.dataMin,\n dataMax = this.dataMax,\n options = this.options,\n min = Math.min(dataMin,\n pick(options.min,\n dataMin)),\n max = Math.max(dataMax,\n pick(options.max,\n dataMax)),\n evt = {\n newMin: newMin,\n newMax: newMax\n };\n fireEvent(this, 'zoom', evt, function (e) {\n // Use e.newMin and e.newMax - event handlers may have altered them\n var newMin = e.newMin,\n newMax = e.newMax;\n if (newMin !== axis.min || newMax !== axis.max) { // #5790\n // Prevent pinch zooming out of range. Check for defined is for\n // #1946. #1734.\n if (!axis.allowZoomOutside) {\n // #6014, sometimes newMax will be smaller than min (or\n // newMin will be larger than max).\n if (defined(dataMin)) {\n if (newMin < min) {\n newMin = min;\n }\n if (newMin > max) {\n newMin = max;\n }\n }\n if (defined(dataMax)) {\n if (newMax < min) {\n newMax = min;\n }\n if (newMax > max) {\n newMax = max;\n }\n }\n }\n // In full view, displaying the reset zoom button is not\n // required\n axis.displayBtn = (typeof newMin !== 'undefined' ||\n typeof newMax !== 'undefined');\n // Do it\n axis.setExtremes(newMin, newMax, false, void 0, { trigger: 'zoom' });\n }\n e.zoomed = true;\n });\n return evt.zoomed;\n };\n /**\n * Update the axis metrics.\n *\n * @private\n * @function Highcharts.Axis#setAxisSize\n */\n Axis.prototype.setAxisSize = function () {\n var chart = this.chart,\n options = this.options, \n // [top, right, bottom, left]\n offsets = options.offsets || [0, 0, 0, 0],\n horiz = this.horiz, \n // Check for percentage based input values. Rounding fixes problems\n // with column overflow and plot line filtering (#4898, #4899)\n width = this.width = Math.round(relativeLength(pick(options.width,\n chart.plotWidth - offsets[3] + offsets[1]),\n chart.plotWidth)),\n height = this.height = Math.round(relativeLength(pick(options.height,\n chart.plotHeight - offsets[0] + offsets[2]),\n chart.plotHeight)),\n top = this.top = Math.round(relativeLength(pick(options.top,\n chart.plotTop + offsets[0]),\n chart.plotHeight,\n chart.plotTop)),\n left = this.left = Math.round(relativeLength(pick(options.left,\n chart.plotLeft + offsets[3]),\n chart.plotWidth,\n chart.plotLeft));\n // Expose basic values to use in Series object and navigator\n this.bottom = chart.chartHeight - height - top;\n this.right = chart.chartWidth - width - left;\n // Direction agnostic properties\n this.len = Math.max(horiz ? width : height, 0); // Math.max fixes #905\n this.pos = horiz ? left : top; // distance from SVG origin\n };\n /**\n * Get the current extremes for the axis.\n *\n * @sample highcharts/members/axis-getextremes/\n * Report extremes by click on a button\n *\n * @function Highcharts.Axis#getExtremes\n *\n * @return {Highcharts.ExtremesObject}\n * An object containing extremes information.\n */\n Axis.prototype.getExtremes = function () {\n var axis = this,\n log = axis.logarithmic;\n return {\n min: log ?\n correctFloat(log.lin2log(axis.min)) :\n axis.min,\n max: log ?\n correctFloat(log.lin2log(axis.max)) :\n axis.max,\n dataMin: axis.dataMin,\n dataMax: axis.dataMax,\n userMin: axis.userMin,\n userMax: axis.userMax\n };\n };\n /**\n * Get the zero plane either based on zero or on the min or max value.\n * Used in bar and area plots.\n *\n * @function Highcharts.Axis#getThreshold\n *\n * @param {number} threshold\n * The threshold in axis values.\n *\n * @return {number|undefined}\n * The translated threshold position in terms of pixels, and corrected to\n * stay within the axis bounds.\n */\n Axis.prototype.getThreshold = function (threshold) {\n var axis = this,\n log = axis.logarithmic,\n realMin = log ? log.lin2log(axis.min) : axis.min,\n realMax = log ? log.lin2log(axis.max) : axis.max;\n if (threshold === null || threshold === -Infinity) {\n threshold = realMin;\n }\n else if (threshold === Infinity) {\n threshold = realMax;\n }\n else if (realMin > threshold) {\n threshold = realMin;\n }\n else if (realMax < threshold) {\n threshold = realMax;\n }\n return axis.translate(threshold, 0, 1, 0, 1);\n };\n /**\n * Compute auto alignment for the axis label based on which side the axis is\n * on and the given rotation for the label.\n *\n * @private\n * @function Highcharts.Axis#autoLabelAlign\n *\n * @param {number} rotation\n * The rotation in degrees as set by either the `rotation` or `autoRotation`\n * options.\n *\n * @return {Highcharts.AlignValue}\n * Can be `\"center\"`, `\"left\"` or `\"right\"`.\n */\n Axis.prototype.autoLabelAlign = function (rotation) {\n var angle = (pick(rotation, 0) - (this.side * 90) + 720) % 360,\n evt = { align: 'center' };\n fireEvent(this, 'autoLabelAlign', evt, function (e) {\n if (angle > 15 && angle < 165) {\n e.align = 'right';\n }\n else if (angle > 195 && angle < 345) {\n e.align = 'left';\n }\n });\n return evt.align;\n };\n /**\n * Get the tick length and width for the axis based on axis options.\n *\n * @private\n * @function Highcharts.Axis#tickSize\n *\n * @param {string} [prefix]\n * 'tick' or 'minorTick'\n *\n * @return {Array<number,number>|undefined}\n * An array of tickLength and tickWidth\n */\n Axis.prototype.tickSize = function (prefix) {\n var options = this.options,\n tickWidth = pick(options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'], \n // Default to 1 on linear and datetime X axes\n prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);\n var tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'],\n tickSize;\n if (tickWidth && tickLength) {\n // Negate the length\n if (options[prefix + 'Position'] === 'inside') {\n tickLength = -tickLength;\n }\n tickSize = [tickLength, tickWidth];\n }\n var e = { tickSize: tickSize };\n fireEvent(this, 'afterTickSize', e);\n return e.tickSize;\n };\n /**\n * Return the size of the labels.\n *\n * @private\n * @function Highcharts.Axis#labelMetrics\n */\n Axis.prototype.labelMetrics = function () {\n var index = this.tickPositions && this.tickPositions[0] || 0;\n return this.chart.renderer.fontMetrics(this.options.labels.style.fontSize, this.ticks[index] && this.ticks[index].label);\n };\n /**\n * Prevent the ticks from getting so close we can't draw the labels. On a\n * horizontal axis, this is handled by rotating the labels, removing ticks\n * and adding ellipsis. On a vertical axis remove ticks and add ellipsis.\n *\n * @private\n * @function Highcharts.Axis#unsquish\n */\n Axis.prototype.unsquish = function () {\n var labelOptions = this.options.labels,\n horiz = this.horiz,\n tickInterval = this.tickInterval,\n slotSize = this.len / (((this.categories ? 1 : 0) +\n this.max -\n this.min) /\n tickInterval),\n rotationOption = labelOptions.rotation,\n labelMetrics = this.labelMetrics(),\n range = Math.max(this.max - this.min, 0), \n // Return the multiple of tickInterval that is needed to avoid\n // collision\n getStep = function (spaceNeeded) {\n var step = spaceNeeded / (slotSize || 1);\n step = step > 1 ? Math.ceil(step) : 1;\n // Guard for very small or negative angles (#9835)\n if (step * tickInterval > range &&\n spaceNeeded !== Infinity &&\n slotSize !== Infinity &&\n range) {\n step = Math.ceil(range / tickInterval);\n }\n return correctFloat(step * tickInterval);\n };\n var newTickInterval = tickInterval,\n rotation,\n step,\n bestScore = Number.MAX_VALUE,\n autoRotation;\n if (horiz) {\n if (!labelOptions.staggerLines && !labelOptions.step) {\n if (isNumber(rotationOption)) {\n autoRotation = [rotationOption];\n }\n else if (slotSize < labelOptions.autoRotationLimit) {\n autoRotation = labelOptions.autoRotation;\n }\n }\n if (autoRotation) {\n // Loop over the given autoRotation options, and determine\n // which gives the best score. The best score is that with\n // the lowest number of steps and a rotation closest\n // to horizontal.\n autoRotation.forEach(function (rot) {\n var score;\n if (rot === rotationOption ||\n (rot && rot >= -90 && rot <= 90)) { // #3891\n step = getStep(Math.abs(labelMetrics.h / Math.sin(deg2rad * rot)));\n score = step + Math.abs(rot / 360);\n if (score < bestScore) {\n bestScore = score;\n rotation = rot;\n newTickInterval = step;\n }\n }\n });\n }\n }\n else if (!labelOptions.step) { // #4411\n newTickInterval = getStep(labelMetrics.h);\n }\n this.autoRotation = autoRotation;\n this.labelRotation = pick(rotation, isNumber(rotationOption) ? rotationOption : 0);\n return newTickInterval;\n };\n /**\n * Get the general slot width for labels/categories on this axis. This may\n * change between the pre-render (from Axis.getOffset) and the final tick\n * rendering and placement.\n *\n * @private\n * @function Highcharts.Axis#getSlotWidth\n *\n * @param {Highcharts.Tick} [tick] Optionally, calculate the slot width\n * basing on tick label. It is used in highcharts-3d module, where the slots\n * has different widths depending on perspective angles.\n *\n * @return {number}\n * The pixel width allocated to each axis label.\n */\n Axis.prototype.getSlotWidth = function (tick) {\n // #5086, #1580, #1931\n var chart = this.chart,\n horiz = this.horiz,\n labelOptions = this.options.labels,\n slotCount = Math.max(this.tickPositions.length - (this.categories ? 0 : 1), 1),\n marginLeft = chart.margin[3];\n // Used by grid axis\n if (tick && isNumber(tick.slotWidth)) { // #13221, can be 0\n return tick.slotWidth;\n }\n if (horiz && labelOptions.step < 2) {\n if (labelOptions.rotation) { // #4415\n return 0;\n }\n return ((this.staggerLines || 1) * this.len) / slotCount;\n }\n if (!horiz) {\n // #7028\n var cssWidth = labelOptions.style.width;\n if (cssWidth !== void 0) {\n return parseInt(String(cssWidth), 10);\n }\n if (marginLeft) {\n return marginLeft - chart.spacing[3];\n }\n }\n // Last resort, a fraction of the available size\n return chart.chartWidth * 0.33;\n };\n /**\n * Render the axis labels and determine whether ellipsis or rotation need to\n * be applied.\n *\n * @private\n * @function Highcharts.Axis#renderUnsquish\n */\n Axis.prototype.renderUnsquish = function () {\n var chart = this.chart,\n renderer = chart.renderer,\n tickPositions = this.tickPositions,\n ticks = this.ticks,\n labelOptions = this.options.labels,\n labelStyleOptions = labelOptions.style,\n horiz = this.horiz,\n slotWidth = this.getSlotWidth(),\n innerWidth = Math.max(1,\n Math.round(slotWidth - 2 * labelOptions.padding)),\n attr = {},\n labelMetrics = this.labelMetrics(),\n textOverflowOption = labelStyleOptions.textOverflow;\n var commonWidth,\n commonTextOverflow,\n maxLabelLength = 0,\n label,\n i,\n pos;\n // Set rotation option unless it is \"auto\", like in gauges\n if (!isString(labelOptions.rotation)) {\n // #4443\n attr.rotation = labelOptions.rotation || 0;\n }\n // Get the longest label length\n tickPositions.forEach(function (tickPosition) {\n var tick = ticks[tickPosition];\n // Replace label - sorting animation\n if (tick.movedLabel) {\n tick.replaceMovedLabel();\n }\n if (tick &&\n tick.label &&\n tick.label.textPxLength > maxLabelLength) {\n maxLabelLength = tick.label.textPxLength;\n }\n });\n this.maxLabelLength = maxLabelLength;\n // Handle auto rotation on horizontal axis\n if (this.autoRotation) {\n // Apply rotation only if the label is too wide for the slot, and\n // the label is wider than its height.\n if (maxLabelLength > innerWidth &&\n maxLabelLength > labelMetrics.h) {\n attr.rotation = this.labelRotation;\n }\n else {\n this.labelRotation = 0;\n }\n // Handle word-wrap or ellipsis on vertical axis\n }\n else if (slotWidth) {\n // For word-wrap or ellipsis\n commonWidth = innerWidth;\n if (!textOverflowOption) {\n commonTextOverflow = 'clip';\n // On vertical axis, only allow word wrap if there is room\n // for more lines.\n i = tickPositions.length;\n while (!horiz && i--) {\n pos = tickPositions[i];\n label = ticks[pos].label;\n if (label) {\n // Reset ellipsis in order to get the correct\n // bounding box (#4070)\n if (label.styles &&\n label.styles.textOverflow === 'ellipsis') {\n label.css({ textOverflow: 'clip' });\n // Set the correct width in order to read\n // the bounding box height (#4678, #5034)\n }\n else if (label.textPxLength > slotWidth) {\n label.css({ width: slotWidth + 'px' });\n }\n if (label.getBBox().height > (this.len / tickPositions.length -\n (labelMetrics.h - labelMetrics.f))) {\n label.specificTextOverflow = 'ellipsis';\n }\n }\n }\n }\n }\n // Add ellipsis if the label length is significantly longer than ideal\n if (attr.rotation) {\n commonWidth = (maxLabelLength > chart.chartHeight * 0.5 ?\n chart.chartHeight * 0.33 :\n maxLabelLength);\n if (!textOverflowOption) {\n commonTextOverflow = 'ellipsis';\n }\n }\n // Set the explicit or automatic label alignment\n this.labelAlign = labelOptions.align ||\n this.autoLabelAlign(this.labelRotation);\n if (this.labelAlign) {\n attr.align = this.labelAlign;\n }\n // Apply general and specific CSS\n tickPositions.forEach(function (pos) {\n var tick = ticks[pos],\n label = tick && tick.label,\n widthOption = labelStyleOptions.width,\n css = {};\n if (label) {\n // This needs to go before the CSS in old IE (#4502)\n label.attr(attr);\n if (tick.shortenLabel) {\n tick.shortenLabel();\n }\n else if (commonWidth &&\n !widthOption &&\n // Setting width in this case messes with the bounding box\n // (#7975)\n labelStyleOptions.whiteSpace !== 'nowrap' &&\n (\n // Speed optimizing, #7656\n commonWidth < label.textPxLength ||\n // Resetting CSS, #4928\n label.element.tagName === 'SPAN')) {\n css.width = commonWidth + 'px';\n if (!textOverflowOption) {\n css.textOverflow = (label.specificTextOverflow ||\n commonTextOverflow);\n }\n label.css(css);\n // Reset previously shortened label (#8210)\n }\n else if (label.styles &&\n label.styles.width &&\n !css.width &&\n !widthOption) {\n label.css({ width: null });\n }\n delete label.specificTextOverflow;\n tick.rotation = attr.rotation;\n }\n }, this);\n // Note: Why is this not part of getLabelPosition?\n this.tickRotCorr = renderer.rotCorr(labelMetrics.b, this.labelRotation || 0, this.side !== 0);\n };\n /**\n * Return true if the axis has associated data.\n *\n * @function Highcharts.Axis#hasData\n *\n * @return {boolean}\n * True if the axis has associated visible series and those series have\n * either valid data points or explicit `min` and `max` settings.\n */\n Axis.prototype.hasData = function () {\n return this.series.some(function (s) {\n return s.hasData();\n }) ||\n (this.options.showEmpty &&\n defined(this.min) &&\n defined(this.max));\n };\n /**\n * Adds the title defined in axis.options.title.\n *\n * @function Highcharts.Axis#addTitle\n *\n * @param {boolean} [display]\n * Whether or not to display the title.\n */\n Axis.prototype.addTitle = function (display) {\n var axis = this,\n renderer = axis.chart.renderer,\n horiz = axis.horiz,\n opposite = axis.opposite,\n options = axis.options,\n axisTitleOptions = options.title,\n styledMode = axis.chart.styledMode;\n var textAlign;\n if (!axis.axisTitle) {\n textAlign = axisTitleOptions.textAlign;\n if (!textAlign) {\n textAlign = (horiz ? {\n low: 'left',\n middle: 'center',\n high: 'right'\n } : {\n low: opposite ? 'right' : 'left',\n middle: 'center',\n high: opposite ? 'left' : 'right'\n })[axisTitleOptions.align];\n }\n axis.axisTitle = renderer\n .text(axisTitleOptions.text || '', 0, 0, axisTitleOptions.useHTML)\n .attr({\n zIndex: 7,\n rotation: axisTitleOptions.rotation,\n align: textAlign\n })\n .addClass('highcharts-axis-title');\n // #7814, don't mutate style option\n if (!styledMode) {\n axis.axisTitle.css(merge(axisTitleOptions.style));\n }\n axis.axisTitle.add(axis.axisGroup);\n axis.axisTitle.isNew = true;\n }\n // Max width defaults to the length of the axis\n if (!styledMode &&\n !axisTitleOptions.style.width &&\n !axis.isRadial) {\n axis.axisTitle.css({\n width: axis.len + 'px'\n });\n }\n // hide or show the title depending on whether showEmpty is set\n axis.axisTitle[display ? 'show' : 'hide'](display);\n };\n /**\n * Generates a tick for initial positioning.\n *\n * @private\n * @function Highcharts.Axis#generateTick\n *\n * @param {number} pos\n * The tick position in axis values.\n *\n * @param {number} [i]\n * The index of the tick in {@link Axis.tickPositions}.\n */\n Axis.prototype.generateTick = function (pos) {\n var axis = this,\n ticks = axis.ticks;\n if (!ticks[pos]) {\n ticks[pos] = new Tick(axis, pos);\n }\n else {\n ticks[pos].addLabel(); // update labels depending on tick interval\n }\n };\n /**\n * Render the tick labels to a preliminary position to get their sizes\n *\n * @private\n * @function Highcharts.Axis#getOffset\n *\n * @emits Highcharts.Axis#event:afterGetOffset\n */\n Axis.prototype.getOffset = function () {\n var _this = this;\n var axis = this,\n chart = axis.chart,\n horiz = axis.horiz,\n options = axis.options,\n side = axis.side,\n ticks = axis.ticks,\n tickPositions = axis.tickPositions,\n coll = axis.coll,\n axisParent = axis.axisParent // Used in color axis\n ,\n renderer = chart.renderer,\n invertedSide = (chart.inverted && !axis.isZAxis ?\n [1, 0, 3, 2][side] :\n side),\n hasData = axis.hasData(),\n axisTitleOptions = options.title,\n labelOptions = options.labels,\n axisOffset = chart.axisOffset,\n clipOffset = chart.clipOffset,\n directionFactor = [-1, 1, 1, -1][side],\n className = options.className;\n var showAxis,\n titleOffset = 0,\n titleOffsetOption,\n titleMargin = 0,\n labelOffset = 0, // reset\n labelOffsetPadded,\n lineHeightCorrection;\n // For reuse in Axis.render\n axis.showAxis = showAxis = hasData || options.showEmpty;\n // Set/reset staggerLines\n axis.staggerLines = (axis.horiz && labelOptions.staggerLines) || void 0;\n // Create the axisGroup and gridGroup elements on first iteration\n if (!axis.axisGroup) {\n var createGroup = function (name,\n suffix,\n zIndex) { return renderer.g(name)\n .attr({ zIndex: zIndex })\n .addClass(\"highcharts-\" + coll.toLowerCase() + suffix + \" \" +\n (_this.isRadial ? \"highcharts-radial-axis\" + suffix + \" \" : '') +\n (className || ''))\n .add(axisParent); };\n axis.gridGroup = createGroup('grid', '-grid', options.gridZIndex);\n axis.axisGroup = createGroup('axis', '', options.zIndex);\n axis.labelGroup = createGroup('axis-labels', '-labels', labelOptions.zIndex);\n }\n if (hasData || axis.isLinked) {\n // Generate ticks\n tickPositions.forEach(function (pos) {\n // i is not used here, but may be used in overrides\n axis.generateTick(pos);\n });\n axis.renderUnsquish();\n // Left side must be align: right and right side must\n // have align: left for labels\n axis.reserveSpaceDefault = (side === 0 ||\n side === 2 ||\n { 1: 'left', 3: 'right' }[side] === axis.labelAlign);\n if (pick(labelOptions.reserveSpace, axis.labelAlign === 'center' ? true : null, axis.reserveSpaceDefault)) {\n tickPositions.forEach(function (pos) {\n // get the highest offset\n labelOffset = Math.max(ticks[pos].getLabelSize(), labelOffset);\n });\n }\n if (axis.staggerLines) {\n labelOffset *= axis.staggerLines;\n }\n axis.labelOffset = labelOffset * (axis.opposite ? -1 : 1);\n }\n else { // doesn't have data\n objectEach(ticks, function (tick, n) {\n tick.destroy();\n delete ticks[n];\n });\n }\n if (axisTitleOptions &&\n axisTitleOptions.text &&\n axisTitleOptions.enabled !== false) {\n axis.addTitle(showAxis);\n if (showAxis && axisTitleOptions.reserveSpace !== false) {\n axis.titleOffset = titleOffset =\n axis.axisTitle.getBBox()[horiz ? 'height' : 'width'];\n titleOffsetOption = axisTitleOptions.offset;\n titleMargin = defined(titleOffsetOption) ?\n 0 :\n pick(axisTitleOptions.margin, horiz ? 5 : 10);\n }\n }\n // Render the axis line\n axis.renderLine();\n // handle automatic or user set offset\n axis.offset = directionFactor * pick(options.offset, axisOffset[side] ? axisOffset[side] + (options.margin || 0) : 0);\n axis.tickRotCorr = axis.tickRotCorr || { x: 0, y: 0 }; // polar\n if (side === 0) {\n lineHeightCorrection = -axis.labelMetrics().h;\n }\n else if (side === 2) {\n lineHeightCorrection = axis.tickRotCorr.y;\n }\n else {\n lineHeightCorrection = 0;\n }\n // Find the padded label offset\n labelOffsetPadded = Math.abs(labelOffset) + titleMargin;\n if (labelOffset) {\n labelOffsetPadded -= lineHeightCorrection;\n labelOffsetPadded += directionFactor * (horiz ?\n pick(labelOptions.y, axis.tickRotCorr.y + directionFactor * 8) :\n labelOptions.x);\n }\n axis.axisTitleMargin = pick(titleOffsetOption, labelOffsetPadded);\n if (axis.getMaxLabelDimensions) {\n axis.maxLabelDimensions = axis.getMaxLabelDimensions(ticks, tickPositions);\n }\n // Due to GridAxis.tickSize, tickSize should be calculated after ticks\n // has rendered.\n if (coll !== 'colorAxis') {\n var tickSize = this.tickSize('tick');\n axisOffset[side] = Math.max(axisOffset[side], (axis.axisTitleMargin || 0) + titleOffset +\n directionFactor * axis.offset, labelOffsetPadded, // #3027\n tickPositions && tickPositions.length && tickSize ?\n tickSize[0] + directionFactor * axis.offset :\n 0 // #4866\n );\n // Decide the clipping needed to keep the graph inside\n // the plot area and axis lines\n var clip = !axis.axisLine || options.offset ?\n 0 :\n // #4308, #4371:\n Math.floor(axis.axisLine.strokeWidth() / 2) * 2;\n clipOffset[invertedSide] =\n Math.max(clipOffset[invertedSide], clip);\n }\n fireEvent(this, 'afterGetOffset');\n };\n /**\n * Internal function to get the path for the axis line. Extended for polar\n * charts.\n *\n * @function Highcharts.Axis#getLinePath\n *\n * @param {number} lineWidth\n * The line width in pixels.\n *\n * @return {Highcharts.SVGPathArray}\n * The SVG path definition in array form.\n */\n Axis.prototype.getLinePath = function (lineWidth) {\n var chart = this.chart,\n opposite = this.opposite,\n offset = this.offset,\n horiz = this.horiz,\n lineLeft = this.left + (opposite ? this.width : 0) + offset,\n lineTop = chart.chartHeight - this.bottom -\n (opposite ? this.height : 0) + offset;\n if (opposite) {\n lineWidth *= -1; // crispify the other way - #1480, #1687\n }\n return chart.renderer\n .crispLine([\n [\n 'M',\n horiz ?\n this.left :\n lineLeft,\n horiz ?\n lineTop :\n this.top\n ],\n [\n 'L',\n horiz ?\n chart.chartWidth - this.right :\n lineLeft,\n horiz ?\n lineTop :\n chart.chartHeight - this.bottom\n ]\n ], lineWidth);\n };\n /**\n * Render the axis line. Called internally when rendering and redrawing the\n * axis.\n *\n * @function Highcharts.Axis#renderLine\n */\n Axis.prototype.renderLine = function () {\n if (!this.axisLine) {\n this.axisLine = this.chart.renderer.path()\n .addClass('highcharts-axis-line')\n .add(this.axisGroup);\n if (!this.chart.styledMode) {\n this.axisLine.attr({\n stroke: this.options.lineColor,\n 'stroke-width': this.options.lineWidth,\n zIndex: 7\n });\n }\n }\n };\n /**\n * Position the axis title.\n *\n * @private\n * @function Highcharts.Axis#getTitlePosition\n *\n * @return {Highcharts.PositionObject}\n * X and Y positions for the title.\n */\n Axis.prototype.getTitlePosition = function () {\n // compute anchor points for each of the title align options\n var horiz = this.horiz,\n axisLeft = this.left,\n axisTop = this.top,\n axisLength = this.len,\n axisTitleOptions = this.options.title,\n margin = horiz ? axisLeft : axisTop,\n opposite = this.opposite,\n offset = this.offset,\n xOption = axisTitleOptions.x,\n yOption = axisTitleOptions.y,\n axisTitle = this.axisTitle,\n fontMetrics = this.chart.renderer.fontMetrics(axisTitleOptions.style.fontSize,\n axisTitle), \n // The part of a multiline text that is below the baseline of the\n // first line. Subtract 1 to preserve pixel-perfectness from the\n // old behaviour (v5.0.12), where only one line was allowed.\n textHeightOvershoot = Math.max(axisTitle.getBBox(null, 0).height - fontMetrics.h - 1, 0), \n // the position in the length direction of the axis\n alongAxis = {\n low: margin + (horiz ? 0 : axisLength),\n middle: margin + axisLength / 2,\n high: margin + (horiz ? axisLength : 0)\n }[axisTitleOptions.align], \n // the position in the perpendicular direction of the axis\n offAxis = (horiz ? axisTop + this.height : axisLeft) +\n (horiz ? 1 : -1) * // horizontal axis reverses the margin\n (opposite ? -1 : 1) * // so does opposite axes\n this.axisTitleMargin +\n [\n -textHeightOvershoot,\n textHeightOvershoot,\n fontMetrics.f,\n -textHeightOvershoot // left\n ][this.side],\n titlePosition = {\n x: horiz ?\n alongAxis + xOption :\n offAxis + (opposite ? this.width : 0) + offset + xOption,\n y: horiz ?\n offAxis + yOption - (opposite ? this.height : 0) + offset :\n alongAxis + yOption\n };\n fireEvent(this, 'afterGetTitlePosition', { titlePosition: titlePosition });\n return titlePosition;\n };\n /**\n * Render a minor tick into the given position. If a minor tick already\n * exists in this position, move it.\n *\n * @function Highcharts.Axis#renderMinorTick\n *\n * @param {number} pos\n * The position in axis values.\n *\n * @param {boolean} slideIn\n * Whether the tick should animate in from last computed position\n */\n Axis.prototype.renderMinorTick = function (pos, slideIn) {\n var axis = this;\n var minorTicks = axis.minorTicks;\n if (!minorTicks[pos]) {\n minorTicks[pos] = new Tick(axis, pos, 'minor');\n }\n // Render new ticks in old position\n if (slideIn && minorTicks[pos].isNew) {\n minorTicks[pos].render(null, true);\n }\n minorTicks[pos].render(null, false, 1);\n };\n /**\n * Render a major tick into the given position. If a tick already exists\n * in this position, move it.\n *\n * @function Highcharts.Axis#renderTick\n *\n * @param {number} pos\n * The position in axis values.\n *\n * @param {number} i\n * The tick index.\n *\n * @param {boolean} slideIn\n * Whether the tick should animate in from last computed position\n */\n Axis.prototype.renderTick = function (pos, i, slideIn) {\n var axis = this,\n isLinked = axis.isLinked,\n ticks = axis.ticks;\n // Linked axes need an extra check to find out if\n if (!isLinked ||\n (pos >= axis.min && pos <= axis.max) ||\n (axis.grid && axis.grid.isColumn)) {\n if (!ticks[pos]) {\n ticks[pos] = new Tick(axis, pos);\n }\n // NOTE this seems like overkill. Could be handled in tick.render by\n // setting old position in attr, then set new position in animate.\n // render new ticks in old position\n if (slideIn && ticks[pos].isNew) {\n // Start with negative opacity so that it is visible from\n // halfway into the animation\n ticks[pos].render(i, true, -1);\n }\n ticks[pos].render(i);\n }\n };\n /**\n * Render the axis.\n *\n * @private\n * @function Highcharts.Axis#render\n *\n * @emits Highcharts.Axis#event:afterRender\n */\n Axis.prototype.render = function () {\n var axis = this,\n chart = axis.chart,\n log = axis.logarithmic,\n renderer = chart.renderer,\n options = axis.options,\n isLinked = axis.isLinked,\n tickPositions = axis.tickPositions,\n axisTitle = axis.axisTitle,\n ticks = axis.ticks,\n minorTicks = axis.minorTicks,\n alternateBands = axis.alternateBands,\n stackLabelOptions = options.stackLabels,\n alternateGridColor = options.alternateGridColor,\n tickmarkOffset = axis.tickmarkOffset,\n axisLine = axis.axisLine,\n showAxis = axis.showAxis,\n animation = animObject(renderer.globalAnimation);\n var from,\n to;\n // Reset\n axis.labelEdge.length = 0;\n axis.overlap = false;\n // Mark all elements inActive before we go over and mark the active ones\n [ticks, minorTicks, alternateBands].forEach(function (coll) {\n objectEach(coll, function (tick) {\n tick.isActive = false;\n });\n });\n // If the series has data draw the ticks. Else only the line and title\n if (axis.hasData() || isLinked) {\n var slideInTicks_1 = axis.chart.hasRendered &&\n axis.old && isNumber(axis.old.min);\n // minor ticks\n if (axis.minorTickInterval && !axis.categories) {\n axis.getMinorTickPositions().forEach(function (pos) {\n axis.renderMinorTick(pos, slideInTicks_1);\n });\n }\n // Major ticks. Pull out the first item and render it last so that\n // we can get the position of the neighbour label. #808.\n if (tickPositions.length) { // #1300\n tickPositions.forEach(function (pos, i) {\n axis.renderTick(pos, i, slideInTicks_1);\n });\n // In a categorized axis, the tick marks are displayed\n // between labels. So we need to add a tick mark and\n // grid line at the left edge of the X axis.\n if (tickmarkOffset && (axis.min === 0 || axis.single)) {\n if (!ticks[-1]) {\n ticks[-1] = new Tick(axis, -1, null, true);\n }\n ticks[-1].render(-1);\n }\n }\n // alternate grid color\n if (alternateGridColor) {\n tickPositions.forEach(function (pos, i) {\n to = typeof tickPositions[i + 1] !== 'undefined' ?\n tickPositions[i + 1] + tickmarkOffset :\n axis.max - tickmarkOffset;\n if (i % 2 === 0 &&\n pos < axis.max &&\n to <= axis.max + (chart.polar ?\n -tickmarkOffset :\n tickmarkOffset)) { // #2248, #4660\n if (!alternateBands[pos]) {\n // Should be imported from PlotLineOrBand.js, but\n // the dependency cycle with axis is a problem\n alternateBands[pos] = new H.PlotLineOrBand(axis);\n }\n from = pos + tickmarkOffset; // #949\n alternateBands[pos].options = {\n from: log ? log.lin2log(from) : from,\n to: log ? log.lin2log(to) : to,\n color: alternateGridColor,\n className: 'highcharts-alternate-grid'\n };\n alternateBands[pos].render();\n alternateBands[pos].isActive = true;\n }\n });\n }\n // custom plot lines and bands\n if (!axis._addedPlotLB) { // only first time\n axis._addedPlotLB = true;\n (options.plotLines || [])\n .concat(options.plotBands || [])\n .forEach(function (plotLineOptions) {\n axis\n .addPlotBandOrLine(plotLineOptions);\n });\n }\n } // end if hasData\n // Remove inactive ticks\n [ticks, minorTicks, alternateBands].forEach(function (coll) {\n var forDestruction = [],\n delay = animation.duration,\n destroyInactiveItems = function () {\n var i = forDestruction.length;\n while (i--) {\n // When resizing rapidly, the same items\n // may be destroyed in different timeouts,\n // or the may be reactivated\n if (coll[forDestruction[i]] &&\n !coll[forDestruction[i]].isActive) {\n coll[forDestruction[i]].destroy();\n delete coll[forDestruction[i]];\n }\n }\n };\n objectEach(coll, function (tick, pos) {\n if (!tick.isActive) {\n // Render to zero opacity\n tick.render(pos, false, 0);\n tick.isActive = false;\n forDestruction.push(pos);\n }\n });\n // When the objects are finished fading out, destroy them\n syncTimeout(destroyInactiveItems, coll === alternateBands ||\n !chart.hasRendered ||\n !delay ?\n 0 :\n delay);\n });\n // Set the axis line path\n if (axisLine) {\n axisLine[axisLine.isPlaced ? 'animate' : 'attr']({\n d: this.getLinePath(axisLine.strokeWidth())\n });\n axisLine.isPlaced = true;\n // Show or hide the line depending on options.showEmpty\n axisLine[showAxis ? 'show' : 'hide'](showAxis);\n }\n if (axisTitle && showAxis) {\n var titleXy = axis.getTitlePosition();\n if (isNumber(titleXy.y)) {\n axisTitle[axisTitle.isNew ? 'attr' : 'animate'](titleXy);\n axisTitle.isNew = false;\n }\n else {\n axisTitle.attr('y', -9999);\n axisTitle.isNew = true;\n }\n }\n // Stacked totals:\n if (stackLabelOptions && stackLabelOptions.enabled && axis.stacking) {\n axis.stacking.renderStackTotals();\n }\n // End stacked totals\n // Record old scaling for updating/animation\n axis.old = {\n len: axis.len,\n max: axis.max,\n min: axis.min,\n transA: axis.transA,\n userMax: axis.userMax,\n userMin: axis.userMin\n };\n axis.isDirty = false;\n fireEvent(this, 'afterRender');\n };\n /**\n * Redraw the axis to reflect changes in the data or axis extremes. Called\n * internally from Highcharts.Chart#redraw.\n *\n * @private\n * @function Highcharts.Axis#redraw\n */\n Axis.prototype.redraw = function () {\n if (this.visible) {\n // render the axis\n this.render();\n // move plot lines and bands\n this.plotLinesAndBands.forEach(function (plotLine) {\n plotLine.render();\n });\n }\n // mark associated series as dirty and ready for redraw\n this.series.forEach(function (series) {\n series.isDirty = true;\n });\n };\n /**\n * Returns an array of axis properties, that should be untouched during\n * reinitialization.\n *\n * @private\n * @function Highcharts.Axis#getKeepProps\n */\n Axis.prototype.getKeepProps = function () {\n return (this.keepProps || Axis.keepProps);\n };\n /**\n * Destroys an Axis instance. See {@link Axis#remove} for the API endpoint\n * to fully remove the axis.\n *\n * @private\n * @function Highcharts.Axis#destroy\n *\n * @param {boolean} [keepEvents]\n * Whether to preserve events, used internally in Axis.update.\n */\n Axis.prototype.destroy = function (keepEvents) {\n var axis = this,\n plotLinesAndBands = axis.plotLinesAndBands,\n eventOptions = this.eventOptions;\n fireEvent(this, 'destroy', { keepEvents: keepEvents });\n // Remove the events\n if (!keepEvents) {\n removeEvent(axis);\n }\n // Destroy collections\n [axis.ticks, axis.minorTicks, axis.alternateBands].forEach(function (coll) {\n destroyObjectProperties(coll);\n });\n if (plotLinesAndBands) {\n var i = plotLinesAndBands.length;\n while (i--) { // #1975\n plotLinesAndBands[i].destroy();\n }\n }\n // Destroy elements\n ['axisLine', 'axisTitle', 'axisGroup',\n 'gridGroup', 'labelGroup', 'cross', 'scrollbar'].forEach(function (prop) {\n if (axis[prop]) {\n axis[prop] = axis[prop].destroy();\n }\n });\n // Destroy each generated group for plotlines and plotbands\n for (var plotGroup in axis.plotLinesAndBandsGroups) { // eslint-disable-line guard-for-in\n axis.plotLinesAndBandsGroups[plotGroup] =\n axis.plotLinesAndBandsGroups[plotGroup].destroy();\n }\n // Delete all properties and fall back to the prototype.\n objectEach(axis, function (val, key) {\n if (axis.getKeepProps().indexOf(key) === -1) {\n delete axis[key];\n }\n });\n this.eventOptions = eventOptions;\n };\n /**\n * Internal function to draw a crosshair.\n *\n * @function Highcharts.Axis#drawCrosshair\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The event arguments from the modified pointer event, extended with\n * `chartX` and `chartY`\n *\n * @param {Highcharts.Point} [point]\n * The Point object if the crosshair snaps to points.\n *\n * @emits Highcharts.Axis#event:afterDrawCrosshair\n * @emits Highcharts.Axis#event:drawCrosshair\n */\n Axis.prototype.drawCrosshair = function (e, point) {\n var options = this.crosshair,\n snap = pick(options && options.snap,\n true),\n chart = this.chart;\n var path,\n pos,\n categorized,\n graphic = this.cross,\n crossOptions;\n fireEvent(this, 'drawCrosshair', { e: e, point: point });\n // Use last available event when updating non-snapped crosshairs without\n // mouse interaction (#5287)\n if (!e) {\n e = this.cross && this.cross.e;\n }\n if (\n // Disabled in options\n !options ||\n // Snap\n ((defined(point) || !snap) === false)) {\n this.hideCrosshair();\n }\n else {\n // Get the path\n if (!snap) {\n pos = e &&\n (this.horiz ?\n e.chartX - this.pos :\n this.len - e.chartY + this.pos);\n }\n else if (defined(point)) {\n // #3834\n pos = pick(this.coll !== 'colorAxis' ?\n point.crosshairPos : // 3D axis extension\n null, this.isXAxis ?\n point.plotX :\n this.len - point.plotY);\n }\n if (defined(pos)) {\n crossOptions = {\n // value, only used on radial\n value: point && (this.isXAxis ?\n point.x :\n pick(point.stackY, point.y)),\n translatedValue: pos\n };\n if (chart.polar) {\n // Additional information required for crosshairs in\n // polar chart\n extend(crossOptions, {\n isCrosshair: true,\n chartX: e && e.chartX,\n chartY: e && e.chartY,\n point: point\n });\n }\n path = this.getPlotLinePath(crossOptions) ||\n null; // #3189\n }\n if (!defined(path)) {\n this.hideCrosshair();\n return;\n }\n categorized = this.categories && !this.isRadial;\n // Draw the cross\n if (!graphic) {\n this.cross = graphic = chart.renderer\n .path()\n .addClass('highcharts-crosshair highcharts-crosshair-' +\n (categorized ? 'category ' : 'thin ') +\n (options.className || ''))\n .attr({\n zIndex: pick(options.zIndex, 2)\n })\n .add();\n // Presentational attributes\n if (!chart.styledMode) {\n graphic.attr({\n stroke: options.color ||\n (categorized ?\n Color\n .parse(\"#ccd6eb\" /* highlightColor20 */)\n .setOpacity(0.25)\n .get() :\n \"#cccccc\" /* neutralColor20 */),\n 'stroke-width': pick(options.width, 1)\n }).css({\n 'pointer-events': 'none'\n });\n if (options.dashStyle) {\n graphic.attr({\n dashstyle: options.dashStyle\n });\n }\n }\n }\n graphic.show().attr({\n d: path\n });\n if (categorized && !options.width) {\n graphic.attr({\n 'stroke-width': this.transA\n });\n }\n this.cross.e = e;\n }\n fireEvent(this, 'afterDrawCrosshair', { e: e, point: point });\n };\n /**\n * Hide the crosshair if visible.\n *\n * @function Highcharts.Axis#hideCrosshair\n */\n Axis.prototype.hideCrosshair = function () {\n if (this.cross) {\n this.cross.hide();\n }\n fireEvent(this, 'afterHideCrosshair');\n };\n /**\n * Check whether the chart has vertical panning ('y' or 'xy' type).\n *\n * @private\n * @function Highcharts.Axis#hasVerticalPanning\n */\n Axis.prototype.hasVerticalPanning = function () {\n var panningOptions = this.chart.options.chart.panning;\n return Boolean(panningOptions &&\n panningOptions.enabled && // #14624\n /y/.test(panningOptions.type));\n };\n /**\n * Check whether the given value is a positive valid axis value.\n *\n * @private\n * @function Highcharts.Axis#validatePositiveValue\n *\n * @param {unknown} value\n * The axis value\n */\n Axis.prototype.validatePositiveValue = function (value) {\n return isNumber(value) && value > 0;\n };\n /**\n * Update an axis object with a new set of options. The options are merged\n * with the existing options, so only new or altered options need to be\n * specified.\n *\n * @sample highcharts/members/axis-update/\n * Axis update demo\n *\n * @function Highcharts.Axis#update\n *\n * @param {Highcharts.AxisOptions} options\n * The new options that will be merged in with existing options on the axis.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the axis is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after.\n */\n Axis.prototype.update = function (options, redraw) {\n var chart = this.chart;\n options = merge(this.userOptions, options);\n this.destroy(true);\n this.init(chart, options);\n chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n };\n /**\n * Remove the axis from the chart.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Axis#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart following the remove.\n */\n Axis.prototype.remove = function (redraw) {\n var chart = this.chart,\n key = this.coll, // xAxis or yAxis\n axisSeries = this.series;\n var i = axisSeries.length;\n // Remove associated series (#2687)\n while (i--) {\n if (axisSeries[i]) {\n axisSeries[i].remove(false);\n }\n }\n // Remove the axis\n erase(chart.axes, this);\n erase(chart[key], this);\n chart[key].forEach(function (axis, i) {\n // Re-index, #1706, #8075\n axis.options.index = axis.userOptions.index = i;\n });\n this.destroy();\n chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n };\n /**\n * Update the axis title by options after render time.\n *\n * @sample highcharts/members/axis-settitle/\n * Set a new Y axis title\n *\n * @function Highcharts.Axis#setTitle\n *\n * @param {Highcharts.AxisTitleOptions} titleOptions\n * The additional title options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after setting the title.\n */\n Axis.prototype.setTitle = function (titleOptions, redraw) {\n this.update({ title: titleOptions }, redraw);\n };\n /**\n * Set new axis categories and optionally redraw.\n *\n * @sample highcharts/members/axis-setcategories/\n * Set categories by click on a button\n *\n * @function Highcharts.Axis#setCategories\n *\n * @param {Array<string>} categories\n * The new categories.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart.\n */\n Axis.prototype.setCategories = function (categories, redraw) {\n this.update({ categories: categories }, redraw);\n };\n /* *\n *\n * Static Properties\n *\n * */\n Axis.defaultOptions = AxisDefaults.defaultXAxisOptions;\n // Properties to survive after destroy, needed for Axis.update (#4317,\n // #5773, #5881).\n Axis.keepProps = [\n 'extKey',\n 'hcEvents',\n 'names',\n 'series',\n 'userMax',\n 'userMin'\n ];\n return Axis;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Options for the path on the Axis to be calculated.\n * @interface Highcharts.AxisPlotLinePathOptionsObject\n */ /**\n * Axis value.\n * @name Highcharts.AxisPlotLinePathOptionsObject#value\n * @type {number|undefined}\n */ /**\n * Line width used for calculation crisp line coordinates. Defaults to 1.\n * @name Highcharts.AxisPlotLinePathOptionsObject#lineWidth\n * @type {number|undefined}\n */ /**\n * If `false`, the function will return null when it falls outside the axis\n * bounds. If `true`, the function will return a path aligned to the plot area\n * sides if it falls outside. If `pass`, it will return a path outside.\n * @name Highcharts.AxisPlotLinePathOptionsObject#force\n * @type {string|boolean|undefined}\n */ /**\n * Used in Highcharts Stock. When `true`, plot paths\n * (crosshair, plotLines, gridLines)\n * will be rendered on all axes when defined on the first axis.\n * @name Highcharts.AxisPlotLinePathOptionsObject#acrossPanes\n * @type {boolean|undefined}\n */ /**\n * Use old coordinates (for resizing and rescaling).\n * If not set, defaults to `false`.\n * @name Highcharts.AxisPlotLinePathOptionsObject#old\n * @type {boolean|undefined}\n */ /**\n * If given, return the plot line path of a pixel position on the axis.\n * @name Highcharts.AxisPlotLinePathOptionsObject#translatedValue\n * @type {number|undefined}\n */ /**\n * Used in Polar axes. Reverse the positions for concatenation of polygonal\n * plot bands\n * @name Highcharts.AxisPlotLinePathOptionsObject#reverse\n * @type {boolean|undefined}\n */\n /**\n * Options for crosshairs on axes.\n *\n * @product highstock\n *\n * @typedef {Highcharts.XAxisCrosshairOptions|Highcharts.YAxisCrosshairOptions} Highcharts.AxisCrosshairOptions\n */\n /**\n * @typedef {\"navigator\"|\"pan\"|\"rangeSelectorButton\"|\"rangeSelectorInput\"|\"scrollbar\"|\"traverseUpButton\"|\"zoom\"} Highcharts.AxisExtremesTriggerValue\n */\n /**\n * @callback Highcharts.AxisEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n */\n /**\n * @callback Highcharts.AxisLabelsFormatterCallbackFunction\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} this\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} ctx\n *\n * @return {string}\n */\n /**\n * @interface Highcharts.AxisLabelsFormatterContextObject\n */ /**\n * The axis item of the label\n * @name Highcharts.AxisLabelsFormatterContextObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * The chart instance.\n * @name Highcharts.AxisLabelsFormatterContextObject#chart\n * @type {Highcharts.Chart}\n */ /**\n * Whether the label belongs to the first tick on the axis.\n * @name Highcharts.AxisLabelsFormatterContextObject#isFirst\n * @type {boolean}\n */ /**\n * Whether the label belongs to the last tick on the axis.\n * @name Highcharts.AxisLabelsFormatterContextObject#isLast\n * @type {boolean}\n */ /**\n * The position on the axis in terms of axis values. For category axes, a\n * zero-based index. For datetime axes, the JavaScript time in milliseconds\n * since 1970.\n * @name Highcharts.AxisLabelsFormatterContextObject#pos\n * @type {number}\n */ /**\n * The preformatted text as the result of the default formatting. For example\n * dates will be formatted as strings, and numbers with language-specific comma\n * separators, thousands separators and numeric symbols like `k` or `M`.\n * @name Highcharts.AxisLabelsFormatterContextObject#text\n * @type {string}\n */ /**\n * The Tick instance.\n * @name Highcharts.AxisLabelsFormatterContextObject#tick\n * @type {Highcharts.Tick}\n */ /**\n * This can be either a numeric value or a category string.\n * @name Highcharts.AxisLabelsFormatterContextObject#value\n * @type {number|string}\n */\n /**\n * Options for axes.\n *\n * @typedef {Highcharts.XAxisOptions|Highcharts.YAxisOptions|Highcharts.ZAxisOptions} Highcharts.AxisOptions\n */\n /**\n * @callback Highcharts.AxisPointBreakEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @param {Highcharts.AxisPointBreakEventObject} evt\n */\n /**\n * @interface Highcharts.AxisPointBreakEventObject\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#brk\n * @type {Highcharts.Dictionary<number>}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#point\n * @type {Highcharts.Point}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#preventDefault\n * @type {Function}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#target\n * @type {Highcharts.SVGElement}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#type\n * @type {\"pointBreak\"|\"pointInBreak\"}\n */\n /**\n * @callback Highcharts.AxisSetExtremesEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @param {Highcharts.AxisSetExtremesEventObject} evt\n */\n /**\n * @interface Highcharts.AxisSetExtremesEventObject\n * @extends Highcharts.ExtremesObject\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#preventDefault\n * @type {Function}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#target\n * @type {Highcharts.SVGElement}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#trigger\n * @type {Highcharts.AxisExtremesTriggerValue|string}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#type\n * @type {\"setExtremes\"}\n */\n /**\n * @callback Highcharts.AxisTickPositionerCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @return {Highcharts.AxisTickPositionsArray}\n */\n /**\n * @interface Highcharts.AxisTickPositionsArray\n * @augments Array<number>\n */\n /**\n * @typedef {\"high\"|\"low\"|\"middle\"} Highcharts.AxisTitleAlignValue\n */\n /**\n * @typedef {Highcharts.XAxisTitleOptions|Highcharts.YAxisTitleOptions|Highcharts.ZAxisTitleOptions} Highcharts.AxisTitleOptions\n */\n /**\n * @typedef {\"linear\"|\"logarithmic\"|\"datetime\"|\"category\"|\"treegrid\"} Highcharts.AxisTypeValue\n */\n /**\n * The returned object literal from the {@link Highcharts.Axis#getExtremes}\n * function.\n *\n * @interface Highcharts.ExtremesObject\n */ /**\n * The maximum value of the axis' associated series.\n * @name Highcharts.ExtremesObject#dataMax\n * @type {number}\n */ /**\n * The minimum value of the axis' associated series.\n * @name Highcharts.ExtremesObject#dataMin\n * @type {number}\n */ /**\n * The maximum axis value, either automatic or set manually. If the `max` option\n * is not set, `maxPadding` is 0 and `endOnTick` is false, this value will be\n * the same as `dataMax`.\n * @name Highcharts.ExtremesObject#max\n * @type {number}\n */ /**\n * The minimum axis value, either automatic or set manually. If the `min` option\n * is not set, `minPadding` is 0 and `startOnTick` is false, this value will be\n * the same as `dataMin`.\n * @name Highcharts.ExtremesObject#min\n * @type {number}\n */ /**\n * The user defined maximum, either from the `max` option or from a zoom or\n * `setExtremes` action.\n * @name Highcharts.ExtremesObject#userMax\n * @type {number}\n */ /**\n * The user defined minimum, either from the `min` option or from a zoom or\n * `setExtremes` action.\n * @name Highcharts.ExtremesObject#userMin\n * @type {number}\n */\n /**\n * Formatter function for the text of a crosshair label.\n *\n * @callback Highcharts.XAxisCrosshairLabelFormatterCallbackFunction\n *\n * @param {Highcharts.Axis} this\n * Axis context\n *\n * @param {number} value\n * Y value of the data point\n *\n * @return {string}\n */\n ''; // keeps doclets above in JS file\n\n return Axis;\n });\n _registerModule(_modules, 'Core/Axis/DateTimeAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n getMagnitude = U.getMagnitude,\n normalizeTickInterval = U.normalizeTickInterval,\n timeUnits = U.timeUnits;\n /* *\n *\n * Composition\n *\n * */\n /* eslint-disable valid-jsdoc */\n var DateTimeAxis;\n (function (DateTimeAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extends axis class with date and time support.\n * @private\n */\n function compose(AxisClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.keepProps.push('dateTime');\n var axisProto = AxisClass.prototype;\n axisProto.getTimeTicks = getTimeTicks;\n addEvent(AxisClass, 'init', onInit);\n }\n return AxisClass;\n }\n DateTimeAxis.compose = compose;\n /**\n * Set the tick positions to a time unit that makes sense, for example\n * on the first of each month or on every Monday. Return an array with\n * the time positions. Used in datetime axes as well as for grouping\n * data on a datetime axis.\n *\n * @private\n * @function Highcharts.Axis#getTimeTicks\n * @param {Highcharts.TimeNormalizeObject} normalizedInterval\n * The interval in axis values (ms) and thecount.\n * @param {number} min\n * The minimum in axis values.\n * @param {number} max\n * The maximum in axis values.\n */\n function getTimeTicks() {\n return this.chart.time.getTimeTicks.apply(this.chart.time, arguments);\n }\n /**\n * @private\n */\n function onInit(e) {\n var axis = this;\n var options = e.userOptions;\n if (options.type !== 'datetime') {\n axis.dateTime = void 0;\n return;\n }\n if (!axis.dateTime) {\n axis.dateTime = new Additions(axis);\n }\n }\n /* *\n *\n * Classes\n *\n * */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Additions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get a normalized tick interval for dates. Returns a configuration\n * object with unit range (interval), count and name. Used to prepare\n * data for `getTimeTicks`. Previously this logic was part of\n * getTimeTicks, but as `getTimeTicks` now runs of segments in stock\n * charts, the normalizing logic was extracted in order to prevent it\n * for running over again for each segment having the same interval.\n * #662, #697.\n * @private\n */\n Additions.prototype.normalizeTimeTickInterval = function (tickInterval, unitsOption) {\n var units = (unitsOption || [[\n // unit name\n 'millisecond',\n // allowed multiples\n [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]\n ],\n [\n 'second',\n [1, 2, 5, 10, 15, 30]\n ],\n [\n 'minute',\n [1, 2, 5, 10, 15, 30]\n ],\n [\n 'hour',\n [1, 2, 3, 4, 6, 8, 12]\n ],\n [\n 'day',\n [1, 2]\n ],\n [\n 'week',\n [1, 2]\n ],\n [\n 'month',\n [1, 2, 3, 4, 6]\n ],\n [\n 'year',\n null\n ]]);\n var unit = units[units.length - 1], // default unit is years\n interval = timeUnits[unit[0]],\n multiples = unit[1],\n i;\n // loop through the units to find the one that best fits the\n // tickInterval\n for (i = 0; i < units.length; i++) {\n unit = units[i];\n interval = timeUnits[unit[0]];\n multiples = unit[1];\n if (units[i + 1]) {\n // lessThan is in the middle between the highest multiple\n // and the next unit.\n var lessThan = (interval *\n multiples[multiples.length - 1] +\n timeUnits[units[i + 1][0]]) / 2;\n // break and keep the current unit\n if (tickInterval <= lessThan) {\n break;\n }\n }\n }\n // prevent 2.5 years intervals, though 25, 250 etc. are allowed\n if (interval === timeUnits.year && tickInterval < 5 * interval) {\n multiples = [1, 2, 5];\n }\n // get the count\n var count = normalizeTickInterval(tickInterval / interval,\n multiples,\n unit[0] === 'year' ? // #1913, #2360\n Math.max(getMagnitude(tickInterval / interval), 1) :\n 1);\n return {\n unitRange: interval,\n count: count,\n unitName: unit[0]\n };\n };\n /**\n * Get the best date format for a specific X value based on the closest\n * point range on the axis.\n *\n * @private\n */\n Additions.prototype.getXDateFormat = function (x, dateTimeLabelFormats) {\n var axis = this.axis;\n return axis.closestPointRange ?\n axis.chart.time.getDateFormat(axis.closestPointRange, x, axis.options.startOfWeek, dateTimeLabelFormats) || dateTimeLabelFormats.year : // #2546, 2581\n dateTimeLabelFormats.day;\n };\n return Additions;\n }());\n DateTimeAxis.Additions = Additions;\n })(DateTimeAxis || (DateTimeAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return DateTimeAxis;\n });\n _registerModule(_modules, 'Core/Axis/LogarithmicAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n getMagnitude = U.getMagnitude,\n normalizeTickInterval = U.normalizeTickInterval,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * @private\n */\n var LogarithmicAxis;\n (function (LogarithmicAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Provides logarithmic support for axes.\n * @private\n */\n function compose(AxisClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.keepProps.push('logarithmic');\n addEvent(AxisClass, 'init', onInit);\n addEvent(AxisClass, 'afterInit', onAfterInit);\n }\n return AxisClass;\n }\n LogarithmicAxis.compose = compose;\n /**\n * @private\n */\n function onInit(e) {\n var axis = this;\n var options = e.userOptions;\n var logarithmic = axis.logarithmic;\n if (options.type !== 'logarithmic') {\n axis.logarithmic = void 0;\n }\n else {\n if (!logarithmic) {\n logarithmic = axis.logarithmic = new Additions(axis);\n }\n }\n }\n /**\n * @private\n */\n function onAfterInit() {\n var axis = this;\n var log = axis.logarithmic;\n // extend logarithmic axis\n if (log) {\n axis.lin2val = function (num) {\n return log.lin2log(num);\n };\n axis.val2lin = function (num) {\n return log.log2lin(num);\n };\n }\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * Provides logarithmic support for axes.\n * @private\n * @class\n */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Additions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the tick positions of a logarithmic axis.\n */\n Additions.prototype.getLogTickPositions = function (interval, min, max, minor) {\n var log = this;\n var axis = log.axis;\n var axisLength = axis.len;\n var options = axis.options;\n // Since we use this method for both major and minor ticks,\n // use a local variable and return the result\n var positions = [];\n // Reset\n if (!minor) {\n log.minorAutoInterval = void 0;\n }\n // First case: All ticks fall on whole logarithms: 1, 10, 100 etc.\n if (interval >= 0.5) {\n interval = Math.round(interval);\n positions = axis.getLinearTickPositions(interval, min, max);\n // Second case: We need intermediary ticks. For example\n // 1, 2, 4, 6, 8, 10, 20, 40 etc.\n }\n else if (interval >= 0.08) {\n var roundedMin = Math.floor(min);\n var intermediate = void 0,\n i = void 0,\n j = void 0,\n len = void 0,\n pos = void 0,\n lastPos = void 0,\n break2 = void 0;\n if (interval > 0.3) {\n intermediate = [1, 2, 4];\n // 0.2 equals five minor ticks per 1, 10, 100 etc\n }\n else if (interval > 0.15) {\n intermediate = [1, 2, 4, 6, 8];\n }\n else { // 0.1 equals ten minor ticks per 1, 10, 100 etc\n intermediate = [1, 2, 3, 4, 5, 6, 7, 8, 9];\n }\n for (i = roundedMin; i < max + 1 && !break2; i++) {\n len = intermediate.length;\n for (j = 0; j < len && !break2; j++) {\n pos = log.log2lin(log.lin2log(i) * intermediate[j]);\n // #1670, lastPos is #3113\n if (pos > min &&\n (!minor || lastPos <= max) &&\n typeof lastPos !== 'undefined') {\n positions.push(lastPos);\n }\n if (lastPos > max) {\n break2 = true;\n }\n lastPos = pos;\n }\n }\n // Third case: We are so deep in between whole logarithmic values,\n // that we might as well handle the tick positions like a linear\n // axis. For example 1.01, 1.02, 1.03, 1.04.\n }\n else {\n var realMin = log.lin2log(min),\n realMax = log.lin2log(max),\n tickIntervalOption = minor ?\n axis.getMinorTickInterval() :\n options.tickInterval,\n filteredTickIntervalOption = tickIntervalOption === 'auto' ?\n null :\n tickIntervalOption,\n tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1),\n totalPixelLength = minor ?\n axisLength / axis.tickPositions.length :\n axisLength;\n interval = pick(filteredTickIntervalOption, log.minorAutoInterval, (realMax - realMin) *\n tickPixelIntervalOption / (totalPixelLength || 1));\n interval = normalizeTickInterval(interval, void 0, getMagnitude(interval));\n positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);\n if (!minor) {\n log.minorAutoInterval = interval / 5;\n }\n }\n // Set the axis-level tickInterval variable\n if (!minor) {\n axis.tickInterval = interval;\n }\n return positions;\n };\n Additions.prototype.lin2log = function (num) {\n return Math.pow(10, num);\n };\n Additions.prototype.log2lin = function (num) {\n return Math.log(num) / Math.LN10;\n };\n return Additions;\n }());\n LogarithmicAxis.Additions = Additions;\n })(LogarithmicAxis || (LogarithmicAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return LogarithmicAxis;\n });\n _registerModule(_modules, 'Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var erase = U.erase,\n extend = U.extend,\n isNumber = U.isNumber;\n /* *\n *\n * Composition\n *\n * */\n var PlotLineOrBandAxis;\n (function (PlotLineOrBandAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Variables\n *\n * */\n var PlotLineOrBandClass;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(PlotLineOrBandType, AxisClass) {\n if (!PlotLineOrBandClass) {\n PlotLineOrBandClass = PlotLineOrBandType;\n }\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n extend(AxisClass.prototype, Additions.prototype);\n }\n return AxisClass;\n }\n PlotLineOrBandAxis.compose = compose;\n /* *\n *\n * Classes\n *\n * */\n /**\n * Object with members for extending the Axis prototype.\n * @private\n */\n var Additions = /** @class */ (function () {\n function Additions() {\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Internal function to create the SVG path definition for a plot band.\n *\n * @function Highcharts.Axis#getPlotBandPath\n *\n * @param {number} from\n * The axis value to start from.\n *\n * @param {number} to\n * The axis value to end on.\n *\n * @param {Highcharts.AxisPlotBandsOptions|Highcharts.AxisPlotLinesOptions} options\n * The plotBand or plotLine configuration object.\n *\n * @return {Highcharts.SVGPathArray}\n * The SVG path definition in array form.\n */\n Additions.prototype.getPlotBandPath = function (from, to, options) {\n if (options === void 0) { options = this.options; }\n var toPath = this.getPlotLinePath({\n value: to,\n force: true,\n acrossPanes: options.acrossPanes\n }), result = [], horiz = this.horiz, outside = !isNumber(this.min) ||\n !isNumber(this.max) ||\n (from < this.min && to < this.min) ||\n (from > this.max && to > this.max);\n var path = this.getPlotLinePath({\n value: from,\n force: true,\n acrossPanes: options.acrossPanes\n }),\n i, \n // #4964 check if chart is inverted or plotband is on yAxis\n plus = 1,\n isFlat;\n if (path && toPath) {\n // Flat paths don't need labels (#3836)\n if (outside) {\n isFlat = path.toString() === toPath.toString();\n plus = 0;\n }\n // Go over each subpath - for panes in Highcharts Stock\n for (i = 0; i < path.length; i += 2) {\n var pathStart = path[i],\n pathEnd = path[i + 1],\n toPathStart = toPath[i],\n toPathEnd = toPath[i + 1];\n // Type checking all affected path segments. Consider\n // something smarter.\n if ((pathStart[0] === 'M' || pathStart[0] === 'L') &&\n (pathEnd[0] === 'M' || pathEnd[0] === 'L') &&\n (toPathStart[0] === 'M' || toPathStart[0] === 'L') &&\n (toPathEnd[0] === 'M' || toPathEnd[0] === 'L')) {\n // Add 1 pixel when coordinates are the same\n if (horiz && toPathStart[1] === pathStart[1]) {\n toPathStart[1] += plus;\n toPathEnd[1] += plus;\n }\n else if (!horiz && toPathStart[2] === pathStart[2]) {\n toPathStart[2] += plus;\n toPathEnd[2] += plus;\n }\n result.push(['M', pathStart[1], pathStart[2]], ['L', pathEnd[1], pathEnd[2]], ['L', toPathEnd[1], toPathEnd[2]], ['L', toPathStart[1], toPathStart[2]], ['Z']);\n }\n result.isFlat = isFlat;\n }\n }\n else { // outside the axis area\n path = null;\n }\n return result;\n };\n /**\n * Add a plot band after render time.\n *\n * @sample highcharts/members/axis-addplotband/\n * Toggle the plot band from a button\n *\n * @function Highcharts.Axis#addPlotBand\n *\n * @param {Highcharts.AxisPlotBandsOptions} options\n * A configuration object for the plot band, as defined in\n * [xAxis.plotBands](https://api.highcharts.com/highcharts/xAxis.plotBands).\n *\n * @return {Highcharts.PlotLineOrBand|undefined}\n * The added plot band.\n */\n Additions.prototype.addPlotBand = function (options) {\n return this.addPlotBandOrLine(options, 'plotBands');\n };\n /**\n * Add a plot line after render time.\n *\n * @sample highcharts/members/axis-addplotline/\n * Toggle the plot line from a button\n *\n * @function Highcharts.Axis#addPlotLine\n *\n * @param {Highcharts.AxisPlotLinesOptions} options\n * A configuration object for the plot line, as defined in\n * [xAxis.plotLines](https://api.highcharts.com/highcharts/xAxis.plotLines).\n *\n * @return {Highcharts.PlotLineOrBand|undefined}\n * The added plot line.\n */\n Additions.prototype.addPlotLine = function (options) {\n return this.addPlotBandOrLine(options, 'plotLines');\n };\n /**\n * Add a plot band or plot line after render time. Called from\n * addPlotBand and addPlotLine internally.\n *\n * @private\n * @function Highcharts.Axis#addPlotBandOrLine\n * @param {Highcharts.AxisPlotBandsOptions|Highcharts.AxisPlotLinesOptions} options\n * The plotBand or plotLine configuration object.\n */\n Additions.prototype.addPlotBandOrLine = function (options, coll) {\n var _this = this;\n var userOptions = this.userOptions;\n var obj = new PlotLineOrBandClass(this,\n options);\n if (this.visible) {\n obj = obj.render();\n }\n if (obj) { // #2189\n if (!this._addedPlotLB) {\n this._addedPlotLB = true;\n (userOptions.plotLines || [])\n .concat(userOptions.plotBands || [])\n .forEach(function (plotLineOptions) {\n _this.addPlotBandOrLine(plotLineOptions);\n });\n }\n // Add it to the user options for exporting and Axis.update\n if (coll) {\n // Workaround Microsoft/TypeScript issue #32693\n var updatedOptions = (userOptions[coll] || []);\n updatedOptions.push(options);\n userOptions[coll] = updatedOptions;\n }\n this.plotLinesAndBands.push(obj);\n }\n return obj;\n };\n /**\n * Remove a plot band or plot line from the chart by id. Called\n * internally from `removePlotBand` and `removePlotLine`.\n * @private\n * @function Highcharts.Axis#removePlotBandOrLine\n */\n Additions.prototype.removePlotBandOrLine = function (id) {\n var plotLinesAndBands = this.plotLinesAndBands,\n options = this.options,\n userOptions = this.userOptions;\n if (plotLinesAndBands) { // #15639\n var i_1 = plotLinesAndBands.length;\n while (i_1--) {\n if (plotLinesAndBands[i_1].id === id) {\n plotLinesAndBands[i_1].destroy();\n }\n }\n ([\n options.plotLines || [],\n userOptions.plotLines || [],\n options.plotBands || [],\n userOptions.plotBands || []\n ]).forEach(function (arr) {\n i_1 = arr.length;\n while (i_1--) {\n if ((arr[i_1] || {}).id === id) {\n erase(arr, arr[i_1]);\n }\n }\n });\n }\n };\n /**\n * Remove a plot band by its id.\n *\n * @sample highcharts/members/axis-removeplotband/\n * Remove plot band by id\n * @sample highcharts/members/axis-addplotband/\n * Toggle the plot band from a button\n *\n * @function Highcharts.Axis#removePlotBand\n *\n * @param {string} id\n * The plot band's `id` as given in the original configuration\n * object or in the `addPlotBand` option.\n */\n Additions.prototype.removePlotBand = function (id) {\n this.removePlotBandOrLine(id);\n };\n /**\n * Remove a plot line by its id.\n *\n * @sample highcharts/xaxis/plotlines-id/\n * Remove plot line by id\n * @sample highcharts/members/axis-addplotline/\n * Toggle the plot line from a button\n *\n * @function Highcharts.Axis#removePlotLine\n *\n * @param {string} id\n * The plot line's `id` as given in the original configuration\n * object or in the `addPlotLine` option.\n */\n Additions.prototype.removePlotLine = function (id) {\n this.removePlotBandOrLine(id);\n };\n return Additions;\n }());\n })(PlotLineOrBandAxis || (PlotLineOrBandAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return PlotLineOrBandAxis;\n });\n _registerModule(_modules, 'Core/Axis/PlotLineOrBand/PlotLineOrBand.js', [_modules['Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js'], _modules['Core/Utilities.js']], function (PlotLineOrBandAxis, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n erase = U.erase,\n fireEvent = U.fireEvent,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * The object wrapper for plot lines and plot bands\n *\n * @class\n * @name Highcharts.PlotLineOrBand\n *\n * @param {Highcharts.Axis} axis\n * Related axis.\n *\n * @param {Highcharts.AxisPlotLinesOptions|Highcharts.AxisPlotBandsOptions} [options]\n * Options to use.\n */\n var PlotLineOrBand = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function PlotLineOrBand(axis, options) {\n this.axis = axis;\n if (options) {\n this.options = options;\n this.id = options.id;\n }\n }\n /* *\n *\n * Static Functions\n *\n * */\n PlotLineOrBand.compose = function (AxisClass) {\n return PlotLineOrBandAxis.compose(PlotLineOrBand, AxisClass);\n };\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Render the plot line or plot band. If it is already existing,\n * move it.\n * @private\n * @function Highcharts.PlotLineOrBand#render\n */\n PlotLineOrBand.prototype.render = function () {\n fireEvent(this, 'render');\n var plotLine = this,\n axis = plotLine.axis,\n horiz = axis.horiz,\n log = axis.logarithmic,\n options = plotLine.options,\n color = options.color,\n zIndex = pick(options.zIndex, 0),\n events = options.events,\n groupAttribs = {},\n renderer = axis.chart.renderer;\n var optionsLabel = options.label,\n label = plotLine.label,\n to = options.to,\n from = options.from,\n value = options.value,\n svgElem = plotLine.svgElem,\n path = [],\n group;\n var isBand = defined(from) && defined(to),\n isLine = defined(value),\n isNew = !svgElem,\n attribs = {\n 'class': 'highcharts-plot-' + (isBand ? 'band ' : 'line ') +\n (options.className || '')\n };\n var groupName = isBand ? 'bands' : 'lines';\n // logarithmic conversion\n if (log) {\n from = log.log2lin(from);\n to = log.log2lin(to);\n value = log.log2lin(value);\n }\n // Set the presentational attributes\n if (!axis.chart.styledMode) {\n if (isLine) {\n attribs.stroke = color || \"#999999\" /* neutralColor40 */;\n attribs['stroke-width'] = pick(options.width, 1);\n if (options.dashStyle) {\n attribs.dashstyle =\n options.dashStyle;\n }\n }\n else if (isBand) { // plot band\n attribs.fill = color || \"#e6ebf5\" /* highlightColor10 */;\n if (options.borderWidth) {\n attribs.stroke = options.borderColor;\n attribs['stroke-width'] = options.borderWidth;\n }\n }\n }\n // Grouping and zIndex\n groupAttribs.zIndex = zIndex;\n groupName += '-' + zIndex;\n group = axis.plotLinesAndBandsGroups[groupName];\n if (!group) {\n axis.plotLinesAndBandsGroups[groupName] = group =\n renderer.g('plot-' + groupName)\n .attr(groupAttribs).add();\n }\n // Create the path\n if (isNew) {\n /**\n * SVG element of the plot line or band.\n *\n * @name Highcharts.PlotLineOrBand#svgElement\n * @type {Highcharts.SVGElement}\n */\n plotLine.svgElem = svgElem = renderer\n .path()\n .attr(attribs)\n .add(group);\n }\n // Set the path or return\n if (isLine) {\n path = axis.getPlotLinePath({\n value: value,\n lineWidth: svgElem.strokeWidth(),\n acrossPanes: options.acrossPanes\n });\n }\n else if (isBand) { // plot band\n path = axis.getPlotBandPath(from, to, options);\n }\n else {\n return;\n }\n // common for lines and bands\n // Add events only if they were not added before.\n if (!plotLine.eventsAdded && events) {\n objectEach(events, function (event, eventType) {\n svgElem.on(eventType, function (e) {\n events[eventType].apply(plotLine, [e]);\n });\n });\n plotLine.eventsAdded = true;\n }\n if ((isNew || !svgElem.d) && path && path.length) {\n svgElem.attr({ d: path });\n }\n else if (svgElem) {\n if (path) {\n svgElem.show(true);\n svgElem.animate({ d: path });\n }\n else if (svgElem.d) {\n svgElem.hide();\n if (label) {\n plotLine.label = label = label.destroy();\n }\n }\n }\n // the plot band/line label\n if (optionsLabel &&\n (defined(optionsLabel.text) || defined(optionsLabel.formatter)) &&\n path &&\n path.length &&\n axis.width > 0 &&\n axis.height > 0 &&\n !path.isFlat) {\n // apply defaults\n optionsLabel = merge({\n align: horiz && isBand && 'center',\n x: horiz ? !isBand && 4 : 10,\n verticalAlign: !horiz && isBand && 'middle',\n y: horiz ? isBand ? 16 : 10 : isBand ? 6 : -4,\n rotation: horiz && !isBand && 90\n }, optionsLabel);\n this.renderLabel(optionsLabel, path, isBand, zIndex);\n }\n else if (label) { // move out of sight\n label.hide();\n }\n // chainable\n return plotLine;\n };\n /**\n * Render and align label for plot line or band.\n * @private\n * @function Highcharts.PlotLineOrBand#renderLabel\n */\n PlotLineOrBand.prototype.renderLabel = function (optionsLabel, path, isBand, zIndex) {\n var plotLine = this,\n axis = plotLine.axis,\n renderer = axis.chart.renderer;\n var label = plotLine.label;\n // add the SVG element\n if (!label) {\n /**\n * SVG element of the label.\n *\n * @name Highcharts.PlotLineOrBand#label\n * @type {Highcharts.SVGElement}\n */\n plotLine.label = label = renderer\n .text(this.getLabelText(optionsLabel), 0, 0, optionsLabel.useHTML)\n .attr({\n align: optionsLabel.textAlign || optionsLabel.align,\n rotation: optionsLabel.rotation,\n 'class': 'highcharts-plot-' + (isBand ? 'band' : 'line') +\n '-label ' + (optionsLabel.className || ''),\n zIndex: zIndex\n })\n .add();\n if (!axis.chart.styledMode) {\n label.css(merge({\n textOverflow: 'ellipsis'\n }, optionsLabel.style));\n }\n }\n // get the bounding box and align the label\n // #3000 changed to better handle choice between plotband or plotline\n var xBounds = path.xBounds ||\n [path[0][1],\n path[1][1], (isBand ? path[2][1] : path[0][1])];\n var yBounds = path.yBounds ||\n [path[0][2],\n path[1][2], (isBand ? path[2][2] : path[0][2])];\n var x = arrayMin(xBounds);\n var y = arrayMin(yBounds);\n label.align(optionsLabel, false, {\n x: x,\n y: y,\n width: arrayMax(xBounds) - x,\n height: arrayMax(yBounds) - y\n });\n if (!label.alignValue || label.alignValue === 'left') {\n label.css({\n width: (label.rotation === 90 ?\n axis.height - (label.alignAttr.y - axis.top) :\n axis.width - (label.alignAttr.x - axis.left)) + 'px'\n });\n }\n label.show(true);\n };\n /**\n * Get label's text content.\n * @private\n * @function Highcharts.PlotLineOrBand#getLabelText\n */\n PlotLineOrBand.prototype.getLabelText = function (optionsLabel) {\n return defined(optionsLabel.formatter) ?\n optionsLabel.formatter\n .call(this) :\n optionsLabel.text;\n };\n /**\n * Remove the plot line or band.\n *\n * @function Highcharts.PlotLineOrBand#destroy\n */\n PlotLineOrBand.prototype.destroy = function () {\n // remove it from the lookup\n erase(this.axis.plotLinesAndBands, this);\n delete this.axis;\n destroyObjectProperties(this);\n };\n return PlotLineOrBand;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Options for plot bands on axes.\n *\n * @typedef {Highcharts.XAxisPlotBandsOptions|Highcharts.YAxisPlotBandsOptions|Highcharts.ZAxisPlotBandsOptions} Highcharts.AxisPlotBandsOptions\n */\n /**\n * Options for plot band labels on axes.\n *\n * @typedef {Highcharts.XAxisPlotBandsLabelOptions|Highcharts.YAxisPlotBandsLabelOptions|Highcharts.ZAxisPlotBandsLabelOptions} Highcharts.AxisPlotBandsLabelOptions\n */\n /**\n * Options for plot lines on axes.\n *\n * @typedef {Highcharts.XAxisPlotLinesOptions|Highcharts.YAxisPlotLinesOptions|Highcharts.ZAxisPlotLinesOptions} Highcharts.AxisPlotLinesOptions\n */\n /**\n * Options for plot line labels on axes.\n *\n * @typedef {Highcharts.XAxisPlotLinesLabelOptions|Highcharts.YAxisPlotLinesLabelOptions|Highcharts.ZAxisPlotLinesLabelOptions} Highcharts.AxisPlotLinesLabelOptions\n */\n ('');\n /* *\n *\n * API Options\n *\n * */\n /**\n * An array of colored bands stretching across the plot area marking an\n * interval on the axis.\n *\n * In styled mode, the plot bands are styled by the `.highcharts-plot-band`\n * class in addition to the `className` option.\n *\n * @productdesc {highcharts}\n * In a gauge, a plot band on the Y axis (value axis) will stretch along the\n * perimeter of the gauge.\n *\n * @type {Array<*>}\n * @product highcharts highstock gantt\n * @apioption xAxis.plotBands\n */\n /**\n * Flag to decide if plotBand should be rendered across all panes.\n *\n * @since 7.1.2\n * @product highstock\n * @type {boolean}\n * @default true\n * @apioption xAxis.plotBands.acrossPanes\n */\n /**\n * Border color for the plot band. Also requires `borderWidth` to be set.\n *\n * @type {Highcharts.ColorString}\n * @apioption xAxis.plotBands.borderColor\n */\n /**\n * Border width for the plot band. Also requires `borderColor` to be set.\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.plotBands.borderWidth\n */\n /**\n * A custom class name, in addition to the default `highcharts-plot-band`,\n * to apply to each individual band.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.plotBands.className\n */\n /**\n * The color of the plot band.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Color band\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #e6ebf5\n * @apioption xAxis.plotBands.color\n */\n /**\n * An object defining mouse events for the plot band. Supported properties\n * are `click`, `mouseover`, `mouseout`, `mousemove`.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-events/\n * Mouse events demonstrated\n *\n * @since 1.2\n * @apioption xAxis.plotBands.events\n */\n /**\n * Click event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotBands.events.click\n */\n /**\n * Mouse move event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotBands.events.mousemove\n */\n /**\n * Mouse out event on the corner of a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotBands.events.mouseout\n */\n /**\n * Mouse over event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotBands.events.mouseover\n */\n /**\n * The start position of the plot band in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Datetime axis\n * @sample {highcharts} highcharts/xaxis/plotbands-from/\n * Categorized axis\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotBands.from\n */\n /**\n * An id used for identifying the plot band in Axis.removePlotBand.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-id/\n * Remove plot band by id\n * @sample {highstock} highcharts/xaxis/plotbands-id/\n * Remove plot band by id\n *\n * @type {string}\n * @apioption xAxis.plotBands.id\n */\n /**\n * The end position of the plot band in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Datetime axis\n * @sample {highcharts} highcharts/xaxis/plotbands-from/\n * Categorized axis\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotBands.to\n */\n /**\n * The z index of the plot band within the chart, relative to other\n * elements. Using the same z index as another element may give\n * unpredictable results, as the last rendered element will be on top.\n * Values from 0 to 20 make sense.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Behind plot lines by default\n * @sample {highcharts} highcharts/xaxis/plotbands-zindex/\n * Above plot lines\n * @sample {highcharts} highcharts/xaxis/plotbands-zindex-above-series/\n * Above plot lines and series\n *\n * @type {number}\n * @since 1.2\n * @apioption xAxis.plotBands.zIndex\n */\n /**\n * Text labels for the plot bands\n *\n * @product highcharts highstock gantt\n * @apioption xAxis.plotBands.label\n */\n /**\n * Horizontal alignment of the label. Can be one of \"left\", \"center\" or\n * \"right\".\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-align/\n * Aligned to the right\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {Highcharts.AlignValue}\n * @default center\n * @since 2.1\n * @apioption xAxis.plotBands.label.align\n */\n /**\n * Rotation of the text label in degrees .\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-rotation/\n * Vertical text\n *\n * @type {number}\n * @default 0\n * @since 2.1\n * @apioption xAxis.plotBands.label.rotation\n */\n /**\n * CSS styles for the text label.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-plot-band-label` class.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-style/\n * Blue and bold label\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1\n * @apioption xAxis.plotBands.label.style\n */\n /**\n * The string text itself. A subset of HTML is supported.\n *\n * @type {string}\n * @since 2.1\n * @apioption xAxis.plotBands.label.text\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed within the plot band, `textAlign` determines\n * how the text is aligned against its anchor point. Possible values are\n * \"left\", \"center\" and \"right\". Defaults to the same as the `align` option.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-rotation/\n * Vertical text in center position but text-aligned left\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @apioption xAxis.plotBands.label.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0.3\n * @apioption xAxis.plotBands.label.useHTML\n */\n /**\n * Vertical alignment of the label relative to the plot band. Can be one of\n * \"top\", \"middle\" or \"bottom\".\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-verticalalign/\n * Vertically centered label\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @since 2.1\n * @apioption xAxis.plotBands.label.verticalAlign\n */\n /**\n * Horizontal position relative the alignment. Default varies by\n * orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-align/\n * Aligned 10px from the right edge\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotBands.label.x\n */\n /**\n * Vertical position of the text baseline relative to the alignment. Default\n * varies by orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-y/\n * Label on x axis\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotBands.label.y\n */\n /**\n * An array of lines stretching across the plot area, marking a specific\n * value on one of the axes.\n *\n * In styled mode, the plot lines are styled by the\n * `.highcharts-plot-line` class in addition to the `className` option.\n *\n * @type {Array<*>}\n * @product highcharts highstock gantt\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * Basic plot line\n * @sample {highcharts} highcharts/series-solidgauge/labels-auto-aligned/\n * Solid gauge plot line\n * @apioption xAxis.plotLines\n */\n /**\n * Flag to decide if plotLine should be rendered across all panes.\n *\n * @sample {highstock} stock/xaxis/plotlines-acrosspanes/\n * Plot lines on different panes\n *\n * @since 7.1.2\n * @product highstock\n * @type {boolean}\n * @default true\n * @apioption xAxis.plotLines.acrossPanes\n */\n /**\n * A custom class name, in addition to the default `highcharts-plot-line`,\n * to apply to each individual line.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.plotLines.className\n */\n /**\n * The color of the line.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * A red line from X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.ColorString}\n * @default #999999\n * @apioption xAxis.plotLines.color\n */\n /**\n * The dashing or dot style for the plot line. For possible values see\n * [this overview](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-dashstyle/\n * Dash and dot pattern\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 1.2\n * @apioption xAxis.plotLines.dashStyle\n */\n /**\n * An object defining mouse events for the plot line. Supported\n * properties are `click`, `mouseover`, `mouseout`, `mousemove`.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-events/\n * Mouse events demonstrated\n *\n * @since 1.2\n * @apioption xAxis.plotLines.events\n */\n /**\n * Click event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotLines.events.click\n */\n /**\n * Mouse move event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotLines.events.mousemove\n */\n /**\n * Mouse out event on the corner of a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotLines.events.mouseout\n */\n /**\n * Mouse over event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotLines.events.mouseover\n */\n /**\n * An id used for identifying the plot line in Axis.removePlotLine.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-id/\n * Remove plot line by id\n *\n * @type {string}\n * @apioption xAxis.plotLines.id\n */\n /**\n * The position of the line in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * Between two categories on X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotLines.value\n */\n /**\n * The width or thickness of the plot line.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * 2px wide line from X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @default 2\n * @apioption xAxis.plotLines.width\n */\n /**\n * The z index of the plot line within the chart.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-behind/\n * Behind plot lines by default\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-above/\n * Above plot lines\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-above-all/\n * Above plot lines and series\n *\n * @type {number}\n * @since 1.2\n * @apioption xAxis.plotLines.zIndex\n */\n /**\n * Text labels for the plot bands\n *\n * @apioption xAxis.plotLines.label\n */\n /**\n * Horizontal alignment of the label. Can be one of \"left\", \"center\" or\n * \"right\".\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-align-right/\n * Aligned to the right\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.AlignValue}\n * @default left\n * @since 2.1\n * @apioption xAxis.plotLines.label.align\n */\n /**\n * Callback JavaScript function to format the label. Useful properties like\n * the value of plot line or the range of plot band (`from` & `to`\n * properties) can be found in `this.options` object.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-plotbands-label-formatter\n * Label formatters for plot line and plot band.\n * @type {Highcharts.FormatterCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotLines.label.formatter\n */\n /**\n * Rotation of the text label in degrees. Defaults to 0 for horizontal plot\n * lines and 90 for vertical lines.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-verticalalign-middle/\n * Slanted text\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.rotation\n */\n /**\n * CSS styles for the text label.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-plot-line-label` class.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-style/\n * Blue and bold label\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1\n * @apioption xAxis.plotLines.label.style\n */\n /**\n * The text itself. A subset of HTML is supported.\n *\n * @type {string}\n * @since 2.1\n * @apioption xAxis.plotLines.label.text\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed within the plot band, `textAlign` determines\n * how the text is aligned against its anchor point. Possible values are\n * \"left\", \"center\" and \"right\". Defaults to the same as the `align` option.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-textalign/\n * Text label in bottom position\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @apioption xAxis.plotLines.label.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0.3\n * @apioption xAxis.plotLines.label.useHTML\n */\n /**\n * Vertical alignment of the label relative to the plot line. Can be\n * one of \"top\", \"middle\" or \"bottom\".\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-verticalalign-middle/\n * Vertically centered label\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default {highcharts} top\n * @default {highstock} top\n * @since 2.1\n * @apioption xAxis.plotLines.label.verticalAlign\n */\n /**\n * Horizontal position relative the alignment. Default varies by\n * orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-align-right/\n * Aligned 10px from the right edge\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.x\n */\n /**\n * Vertical position of the text baseline relative to the alignment. Default\n * varies by orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-y/\n * Label below the plot line\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.y\n */\n /**\n * @type {Array<*>}\n * @extends xAxis.plotBands\n * @apioption yAxis.plotBands\n */\n /**\n * In a gauge chart, this option determines the inner radius of the\n * plot band that stretches along the perimeter. It can be given as\n * a percentage string, like `\"100%\"`, or as a pixel number, like `100`.\n * By default, the inner radius is controlled by the [thickness](\n * #yAxis.plotBands.thickness) option.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.innerRadius\n */\n /**\n * In a gauge chart, this option determines the outer radius of the\n * plot band that stretches along the perimeter. It can be given as\n * a percentage string, like `\"100%\"`, or as a pixel number, like `100`.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @default 100%\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.outerRadius\n */\n /**\n * In a gauge chart, this option sets the width of the plot band\n * stretching along the perimeter. It can be given as a percentage\n * string, like `\"10%\"`, or as a pixel number, like `10`. The default\n * value 10 is the same as the default [tickLength](#yAxis.tickLength),\n * thus making the plot band act as a background for the tick markers.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @default 10\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.thickness\n */\n /**\n * @type {Array<*>}\n * @extends xAxis.plotLines\n * @apioption yAxis.plotLines\n */\n (''); // keeps doclets above in JS file\n\n return PlotLineOrBand;\n });\n _registerModule(_modules, 'Core/Tooltip.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (F, H, R, RendererRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var format = F.format;\n var doc = H.doc;\n var distribute = R.distribute;\n var addEvent = U.addEvent,\n clamp = U.clamp,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n pick = U.pick,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Tooltip of a chart.\n *\n * @class\n * @name Highcharts.Tooltip\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.TooltipOptions} options\n * Tooltip options.\n */\n var Tooltip = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Tooltip(chart, options) {\n /* *\n *\n * Properties\n *\n * */\n this.allowShared = true;\n this.container = void 0;\n this.crosshairs = [];\n this.distance = 0;\n this.isHidden = true;\n this.isSticky = false;\n this.now = {};\n this.options = {};\n this.outside = false;\n this.chart = chart;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * In styled mode, apply the default filter for the tooltip drop-shadow. It\n * needs to have an id specific to the chart, otherwise there will be issues\n * when one tooltip adopts the filter of a different chart, specifically one\n * where the container is hidden.\n *\n * @private\n * @function Highcharts.Tooltip#applyFilter\n */\n Tooltip.prototype.applyFilter = function () {\n var chart = this.chart;\n chart.renderer.definition({\n tagName: 'filter',\n attributes: {\n id: 'drop-shadow-' + chart.index,\n opacity: 0.5\n },\n children: [{\n tagName: 'feGaussianBlur',\n attributes: {\n 'in': 'SourceAlpha',\n stdDeviation: 1\n }\n }, {\n tagName: 'feOffset',\n attributes: {\n dx: 1,\n dy: 1\n }\n }, {\n tagName: 'feComponentTransfer',\n children: [{\n tagName: 'feFuncA',\n attributes: {\n type: 'linear',\n slope: 0.3\n }\n }]\n }, {\n tagName: 'feMerge',\n children: [{\n tagName: 'feMergeNode'\n }, {\n tagName: 'feMergeNode',\n attributes: {\n 'in': 'SourceGraphic'\n }\n }]\n }]\n });\n };\n /**\n * Build the body (lines) of the tooltip by iterating over the items and\n * returning one entry for each item, abstracting this functionality allows\n * to easily overwrite and extend it.\n *\n * @private\n * @function Highcharts.Tooltip#bodyFormatter\n */\n Tooltip.prototype.bodyFormatter = function (items) {\n return items.map(function (item) {\n var tooltipOptions = item.series.tooltipOptions;\n return (tooltipOptions[(item.point.formatPrefix || 'point') + 'Formatter'] ||\n item.point.tooltipFormatter).call(item.point, tooltipOptions[(item.point.formatPrefix || 'point') + 'Format'] || '');\n });\n };\n /**\n * Destroy the single tooltips in a split tooltip.\n * If the tooltip is active then it is not destroyed, unless forced to.\n *\n * @private\n * @function Highcharts.Tooltip#cleanSplit\n *\n * @param {boolean} [force]\n * Force destroy all tooltips.\n */\n Tooltip.prototype.cleanSplit = function (force) {\n this.chart.series.forEach(function (series) {\n var tt = series && series.tt;\n if (tt) {\n if (!tt.isActive || force) {\n series.tt = tt.destroy();\n }\n else {\n tt.isActive = false;\n }\n }\n });\n };\n /**\n * In case no user defined formatter is given, this will be used. Note that\n * the context here is an object holding point, series, x, y etc.\n *\n * @function Highcharts.Tooltip#defaultFormatter\n */\n Tooltip.prototype.defaultFormatter = function (tooltip) {\n var items = this.points || splat(this);\n var s;\n // Build the header\n s = [tooltip.tooltipFooterHeaderFormatter(items[0])];\n // build the values\n s = s.concat(tooltip.bodyFormatter(items));\n // footer\n s.push(tooltip.tooltipFooterHeaderFormatter(items[0], true));\n return s;\n };\n /**\n * Removes and destroys the tooltip and its elements.\n *\n * @function Highcharts.Tooltip#destroy\n */\n Tooltip.prototype.destroy = function () {\n // Destroy and clear local variables\n if (this.label) {\n this.label = this.label.destroy();\n }\n if (this.split && this.tt) {\n this.cleanSplit(true);\n this.tt = this.tt.destroy();\n }\n if (this.renderer) {\n this.renderer = this.renderer.destroy();\n discardElement(this.container);\n }\n U.clearTimeout(this.hideTimer);\n U.clearTimeout(this.tooltipTimeout);\n };\n /**\n * Extendable method to get the anchor position of the tooltip\n * from a point or set of points\n *\n * @private\n * @function Highcharts.Tooltip#getAnchor\n */\n Tooltip.prototype.getAnchor = function (points, mouseEvent) {\n var chart = this.chart,\n pointer = chart.pointer,\n inverted = chart.inverted,\n plotTop = chart.plotTop,\n plotLeft = chart.plotLeft;\n var ret,\n yAxis,\n xAxis,\n plotX = 0,\n plotY = 0;\n points = splat(points);\n // When tooltip follows mouse, relate the position to the mouse\n if (this.followPointer && mouseEvent) {\n if (typeof mouseEvent.chartX === 'undefined') {\n mouseEvent = pointer.normalize(mouseEvent);\n }\n ret = [\n mouseEvent.chartX - plotLeft,\n mouseEvent.chartY - plotTop\n ];\n // Some series types use a specificly calculated tooltip position for\n // each point\n }\n else if (points[0].tooltipPos) {\n ret = points[0].tooltipPos;\n // Calculate the average position and adjust for axis positions\n }\n else {\n points.forEach(function (point) {\n yAxis = point.series.yAxis;\n xAxis = point.series.xAxis;\n plotX += point.plotX || 0;\n plotY += (point.plotLow ?\n (point.plotLow + (point.plotHigh || 0)) / 2 :\n (point.plotY || 0));\n // Adjust position for positioned axes (top/left settings)\n if (xAxis && yAxis) {\n if (!inverted) { // #1151\n plotX += xAxis.pos - plotLeft;\n plotY += yAxis.pos - plotTop;\n }\n else { // #14771\n plotX += (plotTop + chart.plotHeight - xAxis.len - xAxis.pos);\n plotY += (plotLeft + chart.plotWidth - yAxis.len - yAxis.pos);\n }\n }\n });\n plotX /= points.length;\n plotY /= points.length;\n // Use the average position for multiple points\n ret = [\n inverted ? chart.plotWidth - plotY : plotX,\n inverted ? chart.plotHeight - plotX : plotY\n ];\n // When shared, place the tooltip next to the mouse (#424)\n if (this.shared && points.length > 1 && mouseEvent) {\n if (inverted) {\n ret[0] = mouseEvent.chartX - plotLeft;\n }\n else {\n ret[1] = mouseEvent.chartY - plotTop;\n }\n }\n }\n return ret.map(Math.round);\n };\n /**\n * Creates the Tooltip label element if it does not exist, then returns it.\n *\n * @function Highcharts.Tooltip#getLabel\n *\n * @return {Highcharts.SVGElement}\n * Tooltip label\n */\n Tooltip.prototype.getLabel = function () {\n var tooltip = this,\n styledMode = this.chart.styledMode,\n options = this.options,\n doSplit = this.split && this.allowShared,\n className = ('tooltip' + (defined(options.className) ?\n ' ' + options.className :\n '')),\n pointerEvents = (options.style.pointerEvents ||\n (!this.followPointer &&\n options.stickOnContact ? 'auto' : 'none')),\n onMouseEnter = function () {\n tooltip.inContact = true;\n }, onMouseLeave = function (e) {\n var series = tooltip.chart.hoverSeries;\n // #14143, #13310: tooltip.options.useHTML\n tooltip.inContact = tooltip.shouldStickOnContact() &&\n tooltip.chart.pointer.inClass(e.relatedTarget, 'highcharts-tooltip');\n if (!tooltip.inContact &&\n series &&\n series.onMouseOut) {\n series.onMouseOut();\n }\n };\n var container,\n renderer = this.chart.renderer;\n // If changing from a split tooltip to a non-split tooltip, we must\n // destroy it in order to get the SVG right. #13868.\n if (tooltip.label) {\n var wasSplit = !tooltip.label.hasClass('highcharts-label');\n if ((doSplit && !wasSplit) || (!doSplit && wasSplit)) {\n tooltip.destroy();\n }\n }\n if (!this.label) {\n if (this.outside) {\n var chartStyle = this.chart.options.chart.style,\n Renderer = RendererRegistry.getRendererType();\n /**\n * Reference to the tooltip's container, when\n * [Highcharts.Tooltip#outside] is set to true, otherwise\n * it's undefined.\n *\n * @name Highcharts.Tooltip#container\n * @type {Highcharts.HTMLDOMElement|undefined}\n */\n this.container = container = H.doc.createElement('div');\n container.className = 'highcharts-tooltip-container';\n css(container, {\n position: 'absolute',\n top: '1px',\n pointerEvents: pointerEvents,\n zIndex: Math.max(this.options.style.zIndex || 0, (chartStyle && chartStyle.zIndex || 0) + 3)\n });\n addEvent(container, 'mouseenter', onMouseEnter);\n addEvent(container, 'mouseleave', onMouseLeave);\n H.doc.body.appendChild(container);\n /**\n * Reference to the tooltip's renderer, when\n * [Highcharts.Tooltip#outside] is set to true, otherwise\n * it's undefined.\n *\n * @name Highcharts.Tooltip#renderer\n * @type {Highcharts.SVGRenderer|undefined}\n */\n this.renderer = renderer = new Renderer(container, 0, 0, chartStyle, void 0, void 0, renderer.styledMode);\n }\n // Create the label\n if (doSplit) {\n this.label = renderer.g(className);\n }\n else {\n this.label = renderer\n .label('', 0, 0, options.shape, void 0, void 0, options.useHTML, void 0, className)\n .attr({\n padding: options.padding,\n r: options.borderRadius\n });\n if (!styledMode) {\n this.label\n .attr({\n fill: options.backgroundColor,\n 'stroke-width': options.borderWidth\n })\n // #2301, #2657\n .css(options.style)\n .css({ pointerEvents: pointerEvents })\n .shadow(options.shadow);\n }\n }\n if (styledMode && options.shadow) {\n // Apply the drop-shadow filter\n this.applyFilter();\n this.label.attr({\n filter: 'url(#drop-shadow-' + this.chart.index + ')'\n });\n }\n // Split tooltip use updateTooltipContainer to position the tooltip\n // container.\n if (tooltip.outside && !tooltip.split) {\n var label_1 = this.label;\n var xSetter_1 = label_1.xSetter,\n ySetter_1 = label_1.ySetter;\n label_1.xSetter = function (value) {\n xSetter_1.call(label_1, tooltip.distance);\n container.style.left = value + 'px';\n };\n label_1.ySetter = function (value) {\n ySetter_1.call(label_1, tooltip.distance);\n container.style.top = value + 'px';\n };\n }\n this.label\n .on('mouseenter', onMouseEnter)\n .on('mouseleave', onMouseLeave)\n .attr({ zIndex: 8 })\n .add();\n }\n return this.label;\n };\n /**\n * Place the tooltip in a chart without spilling over\n * and not covering the point it self.\n *\n * @private\n * @function Highcharts.Tooltip#getPosition\n */\n Tooltip.prototype.getPosition = function (boxWidth, boxHeight, point) {\n var chart = this.chart,\n distance = this.distance,\n ret = {}, \n // Don't use h if chart isn't inverted (#7242) ???\n h = (chart.inverted && point.h) || 0, // #4117 ???\n outside = this.outside,\n outerWidth = outside ?\n // substract distance to prevent scrollbars\n doc.documentElement.clientWidth - 2 * distance :\n chart.chartWidth,\n outerHeight = outside ?\n Math.max(doc.body.scrollHeight,\n doc.documentElement.scrollHeight,\n doc.body.offsetHeight,\n doc.documentElement.offsetHeight,\n doc.documentElement.clientHeight) :\n chart.chartHeight,\n chartPosition = chart.pointer.getChartPosition(),\n scaleX = function (val) { return ( // eslint-disable-line no-confusing-arrow\n val * chartPosition.scaleX); },\n scaleY = function (val) { return ( // eslint-disable-line no-confusing-arrow\n val * chartPosition.scaleY); }, \n // Build parameter arrays for firstDimension()/secondDimension()\n buildDimensionArray = function (dim) {\n var isX = dim === 'x';\n return [\n dim,\n isX ? outerWidth : outerHeight,\n isX ? boxWidth : boxHeight\n ].concat(outside ? [\n // If we are using tooltip.outside, we need to scale the\n // position to match scaling of the container in case there\n // is a transform/zoom on the container. #11329\n isX ? scaleX(boxWidth) : scaleY(boxHeight),\n isX ? chartPosition.left - distance +\n scaleX(point.plotX + chart.plotLeft) :\n chartPosition.top - distance +\n scaleY(point.plotY + chart.plotTop),\n 0,\n isX ? outerWidth : outerHeight\n ] : [\n // Not outside, no scaling is needed\n isX ? boxWidth : boxHeight,\n isX ? point.plotX + chart.plotLeft :\n point.plotY + chart.plotTop,\n isX ? chart.plotLeft : chart.plotTop,\n isX ? chart.plotLeft + chart.plotWidth :\n chart.plotTop + chart.plotHeight\n ]);\n };\n var first = buildDimensionArray('y'), second = buildDimensionArray('x'), swapped;\n // Handle negative points or reversed axis (#13780)\n var flipped = !!point.negative;\n if (!chart.polar &&\n chart.hoverSeries &&\n chart.hoverSeries.yAxis &&\n chart.hoverSeries.yAxis.reversed) {\n flipped = !flipped;\n }\n // The far side is right or bottom\n var preferFarSide = !this.followPointer &&\n pick(point.ttBelow, !chart.inverted === flipped), // #4984\n /*\n * Handle the preferred dimension. When the preferred dimension is\n * tooltip on top or bottom of the point,\n it will look for space\n * there.\n *\n * @private\n */\n firstDimension = function (dim,\n outerSize,\n innerSize,\n scaledInnerSize, // #11329\n point,\n min,\n max) {\n var scaledDist = outside ?\n (dim === 'y' ? scaleY(distance) : scaleX(distance)) :\n distance,\n scaleDiff = (innerSize - scaledInnerSize) / 2,\n roomLeft = scaledInnerSize < point - distance,\n roomRight = point + distance + scaledInnerSize < outerSize,\n alignedLeft = point - scaledDist - innerSize + scaleDiff,\n alignedRight = point + scaledDist - scaleDiff;\n if (preferFarSide && roomRight) {\n ret[dim] = alignedRight;\n }\n else if (!preferFarSide && roomLeft) {\n ret[dim] = alignedLeft;\n }\n else if (roomLeft) {\n ret[dim] = Math.min(max - scaledInnerSize, alignedLeft - h < 0 ? alignedLeft : alignedLeft - h);\n }\n else if (roomRight) {\n ret[dim] = Math.max(min, alignedRight + h + innerSize > outerSize ?\n alignedRight :\n alignedRight + h);\n }\n else {\n return false;\n }\n }, \n /*\n * Handle the secondary dimension. If the preferred dimension is\n * tooltip on top or bottom of the point, the second dimension is to\n * align the tooltip above the point, trying to align center but\n * allowing left or right align within the chart box.\n *\n * @private\n */\n secondDimension = function (dim, outerSize, innerSize, scaledInnerSize, // #11329\n point) {\n var retVal;\n // Too close to the edge, return false and swap dimensions\n if (point < distance || point > outerSize - distance) {\n retVal = false;\n // Align left/top\n }\n else if (point < innerSize / 2) {\n ret[dim] = 1;\n // Align right/bottom\n }\n else if (point > outerSize - scaledInnerSize / 2) {\n ret[dim] = outerSize - scaledInnerSize - 2;\n // Align center\n }\n else {\n ret[dim] = point - innerSize / 2;\n }\n return retVal;\n }, \n /*\n * Swap the dimensions\n */\n swap = function (count) {\n var temp = first;\n first = second;\n second = temp;\n swapped = count;\n }, run = function () {\n if (firstDimension.apply(0, first) !== false) {\n if (secondDimension.apply(0, second) === false &&\n !swapped) {\n swap(true);\n run();\n }\n }\n else if (!swapped) {\n swap(true);\n run();\n }\n else {\n ret.x = ret.y = 0;\n }\n };\n // Under these conditions, prefer the tooltip on the side of the point\n if (chart.inverted || this.len > 1) {\n swap();\n }\n run();\n return ret;\n };\n /**\n * Hides the tooltip with a fade out animation.\n *\n * @function Highcharts.Tooltip#hide\n *\n * @param {number} [delay]\n * The fade out in milliseconds. If no value is provided the value\n * of the tooltip.hideDelay option is used. A value of 0 disables\n * the fade out animation.\n */\n Tooltip.prototype.hide = function (delay) {\n var tooltip = this;\n // disallow duplicate timers (#1728, #1766)\n U.clearTimeout(this.hideTimer);\n delay = pick(delay, this.options.hideDelay);\n if (!this.isHidden) {\n this.hideTimer = syncTimeout(function () {\n // If there is a delay, do fadeOut with the default duration. If\n // the hideDelay is 0, we assume no animation is wanted, so we\n // pass 0 duration. #12994.\n tooltip.getLabel().fadeOut(delay ? void 0 : delay);\n tooltip.isHidden = true;\n }, delay);\n }\n };\n /**\n * @private\n * @function Highcharts.Tooltip#init\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.TooltipOptions} options\n * Tooltip options.\n */\n Tooltip.prototype.init = function (chart, options) {\n /**\n * Chart of the tooltip.\n *\n * @readonly\n * @name Highcharts.Tooltip#chart\n * @type {Highcharts.Chart}\n */\n this.chart = chart;\n /**\n * Used tooltip options.\n *\n * @readonly\n * @name Highcharts.Tooltip#options\n * @type {Highcharts.TooltipOptions}\n */\n this.options = options;\n /**\n * List of crosshairs.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#crosshairs\n * @type {Array<null>}\n */\n this.crosshairs = [];\n /**\n * Current values of x and y when animating.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#now\n * @type {Highcharts.PositionObject}\n */\n this.now = { x: 0, y: 0 };\n /**\n * Tooltips are initially hidden.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#isHidden\n * @type {boolean}\n */\n this.isHidden = true;\n /**\n * True, if the tooltip is split into one label per series, with the\n * header close to the axis.\n *\n * @readonly\n * @name Highcharts.Tooltip#split\n * @type {boolean|undefined}\n */\n this.split = options.split && !chart.inverted && !chart.polar;\n /**\n * When the tooltip is shared, the entire plot area will capture mouse\n * movement or touch events.\n *\n * @readonly\n * @name Highcharts.Tooltip#shared\n * @type {boolean|undefined}\n */\n this.shared = options.shared || this.split;\n /**\n * Whether to allow the tooltip to render outside the chart's SVG\n * element box. By default (false), the tooltip is rendered within the\n * chart's SVG element, which results in the tooltip being aligned\n * inside the chart area.\n *\n * @readonly\n * @name Highcharts.Tooltip#outside\n * @type {boolean}\n *\n * @todo\n * Split tooltip does not support outside in the first iteration. Should\n * not be too complicated to implement.\n */\n this.outside = pick(options.outside, Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY));\n };\n Tooltip.prototype.shouldStickOnContact = function () {\n return !!(!this.followPointer && this.options.stickOnContact);\n };\n /**\n * Returns true, if the pointer is in contact with the tooltip tracker.\n */\n Tooltip.prototype.isStickyOnContact = function () {\n return !!(this.shouldStickOnContact() && this.inContact);\n };\n /**\n * Moves the tooltip with a soft animation to a new position.\n *\n * @private\n * @function Highcharts.Tooltip#move\n *\n * @param {number} x\n *\n * @param {number} y\n *\n * @param {number} anchorX\n *\n * @param {number} anchorY\n */\n Tooltip.prototype.move = function (x, y, anchorX, anchorY) {\n var tooltip = this,\n now = tooltip.now,\n animate = tooltip.options.animation !== false &&\n !tooltip.isHidden &&\n // When we get close to the target position, abort animation and\n // land on the right place (#3056)\n (Math.abs(x - now.x) > 1 || Math.abs(y - now.y) > 1),\n skipAnchor = tooltip.followPointer || tooltip.len > 1;\n // Get intermediate values for animation\n extend(now, {\n x: animate ? (2 * now.x + x) / 3 : x,\n y: animate ? (now.y + y) / 2 : y,\n anchorX: skipAnchor ?\n void 0 :\n animate ? (2 * now.anchorX + anchorX) / 3 : anchorX,\n anchorY: skipAnchor ?\n void 0 :\n animate ? (now.anchorY + anchorY) / 2 : anchorY\n });\n // Move to the intermediate value\n tooltip.getLabel().attr(now);\n tooltip.drawTracker();\n // Run on next tick of the mouse tracker\n if (animate) {\n // Never allow two timeouts\n U.clearTimeout(this.tooltipTimeout);\n // Set the fixed interval ticking for the smooth tooltip\n this.tooltipTimeout = setTimeout(function () {\n // The interval function may still be running during destroy,\n // so check that the chart is really there before calling.\n if (tooltip) {\n tooltip.move(x, y, anchorX, anchorY);\n }\n }, 32);\n }\n };\n /**\n * Refresh the tooltip's text and position.\n *\n * @function Highcharts.Tooltip#refresh\n *\n * @param {Highcharts.Point|Array<Highcharts.Point>} pointOrPoints\n * Either a point or an array of points.\n *\n * @param {Highcharts.PointerEventObject} [mouseEvent]\n * Mouse event, that is responsible for the refresh and should be\n * used for the tooltip update.\n */\n Tooltip.prototype.refresh = function (pointOrPoints, mouseEvent) {\n var tooltip = this,\n chart = this.chart,\n options = tooltip.options,\n points = splat(pointOrPoints),\n point = points[0],\n pointConfig = [],\n formatter = options.formatter || tooltip.defaultFormatter,\n shared = tooltip.shared,\n styledMode = chart.styledMode;\n var textConfig = {};\n if (!options.enabled) {\n return;\n }\n U.clearTimeout(this.hideTimer);\n // A switch saying if this specific tooltip configuration allows shared\n // or split modes\n tooltip.allowShared = !(!isArray(pointOrPoints) &&\n pointOrPoints.series &&\n pointOrPoints.series.noSharedTooltip);\n // get the reference point coordinates (pie charts use tooltipPos)\n tooltip.followPointer = (!tooltip.split && point.series.tooltipOptions.followPointer);\n var anchor = tooltip.getAnchor(pointOrPoints,\n mouseEvent),\n x = anchor[0],\n y = anchor[1];\n // shared tooltip, array is sent over\n if (shared && tooltip.allowShared) {\n chart.pointer.applyInactiveState(points);\n // Now set hover state for the choosen ones:\n points.forEach(function (item) {\n item.setState('hover');\n pointConfig.push(item.getLabelConfig());\n });\n textConfig = {\n x: point.category,\n y: point.y\n };\n textConfig.points = pointConfig;\n // single point tooltip\n }\n else {\n textConfig = point.getLabelConfig();\n }\n this.len = pointConfig.length; // #6128\n var text = formatter.call(textConfig,\n tooltip);\n // register the current series\n var currentSeries = point.series;\n this.distance = pick(currentSeries.tooltipOptions.distance, 16);\n // update the inner HTML\n if (text === false) {\n this.hide();\n }\n else {\n // update text\n if (tooltip.split && tooltip.allowShared) { // #13868\n this.renderSplit(text, points);\n }\n else {\n var checkX_1 = x;\n var checkY_1 = y;\n if (mouseEvent && chart.pointer.isDirectTouch) {\n checkX_1 = mouseEvent.chartX - chart.plotLeft;\n checkY_1 = mouseEvent.chartY - chart.plotTop;\n }\n // #11493, #13095\n if (chart.polar ||\n currentSeries.options.clip === false ||\n points.some(function (p) {\n return p.series.shouldShowTooltip(checkX_1, checkY_1);\n })) {\n var label = tooltip.getLabel();\n // Prevent the tooltip from flowing over the chart box\n // (#6659)\n if (!options.style.width || styledMode) {\n label.css({\n width: this.chart.spacingBox.width + 'px'\n });\n }\n label.attr({\n text: text && text.join ?\n text.join('') :\n text\n });\n // Set the stroke color of the box to reflect the point\n label.removeClass(/highcharts-color-[\\d]+/g)\n .addClass('highcharts-color-' +\n pick(point.colorIndex, currentSeries.colorIndex));\n if (!styledMode) {\n label.attr({\n stroke: (options.borderColor ||\n point.color ||\n currentSeries.color ||\n \"#666666\" /* neutralColor60 */)\n });\n }\n tooltip.updatePosition({\n plotX: x,\n plotY: y,\n negative: point.negative,\n ttBelow: point.ttBelow,\n h: anchor[2] || 0\n });\n }\n else {\n tooltip.hide();\n return;\n }\n }\n // show it\n if (tooltip.isHidden && tooltip.label) {\n tooltip.label.attr({\n opacity: 1\n }).show();\n }\n tooltip.isHidden = false;\n }\n fireEvent(this, 'refresh');\n };\n /**\n * Render the split tooltip. Loops over each point's text and adds\n * a label next to the point, then uses the distribute function to\n * find best non-overlapping positions.\n *\n * @private\n * @function Highcharts.Tooltip#renderSplit\n *\n * @param {string|Array<(boolean|string)>} labels\n *\n * @param {Array<Highcharts.Point>} points\n */\n Tooltip.prototype.renderSplit = function (labels, points) {\n var tooltip = this;\n var chart = tooltip.chart,\n _a = tooltip.chart,\n chartWidth = _a.chartWidth,\n chartHeight = _a.chartHeight,\n plotHeight = _a.plotHeight,\n plotLeft = _a.plotLeft,\n plotTop = _a.plotTop,\n pointer = _a.pointer,\n _b = _a.scrollablePixelsY,\n scrollablePixelsY = _b === void 0 ? 0 : _b,\n scrollablePixelsX = _a.scrollablePixelsX,\n _c = _a.scrollingContainer,\n _d = _c === void 0 ? { scrollLeft: 0,\n scrollTop: 0 } : _c,\n scrollLeft = _d.scrollLeft,\n scrollTop = _d.scrollTop,\n styledMode = _a.styledMode,\n distance = tooltip.distance,\n options = tooltip.options,\n positioner = tooltip.options.positioner;\n // The area which the tooltip should be limited to. Limit to scrollable\n // plot area if enabled, otherwise limit to the chart container. If\n // outside is true it should be the whole viewport\n var bounds = (tooltip.outside &&\n typeof scrollablePixelsX !== 'number') ?\n doc.documentElement.getBoundingClientRect() : {\n left: scrollLeft,\n right: scrollLeft + chartWidth,\n top: scrollTop,\n bottom: scrollTop + chartHeight\n };\n var tooltipLabel = tooltip.getLabel();\n var ren = this.renderer || chart.renderer;\n var headerTop = Boolean(chart.xAxis[0] && chart.xAxis[0].opposite);\n var _e = pointer.getChartPosition(),\n chartLeft = _e.left,\n chartTop = _e.top;\n var distributionBoxTop = plotTop + scrollTop;\n var headerHeight = 0;\n var adjustedPlotHeight = plotHeight - scrollablePixelsY;\n /**\n * Calculates the anchor position for the partial tooltip\n *\n * @private\n * @param {Highcharts.Point} point The point related to the tooltip\n * @return {Object} Returns an object with anchorX and anchorY\n */\n function getAnchor(point) {\n var isHeader = point.isHeader,\n _a = point.plotX,\n plotX = _a === void 0 ? 0 : _a,\n _b = point.plotY,\n plotY = _b === void 0 ? 0 : _b,\n series = point.series;\n var anchorX;\n var anchorY;\n if (isHeader) {\n // Set anchorX to plotX\n anchorX = plotLeft + plotX;\n // Set anchorY to center of visible plot area.\n anchorY = plotTop + plotHeight / 2;\n }\n else {\n var xAxis = series.xAxis,\n yAxis = series.yAxis;\n // Set anchorX to plotX. Limit to within xAxis.\n anchorX = xAxis.pos + clamp(plotX, -distance, xAxis.len + distance);\n // Set anchorY, limit to the scrollable plot area\n if (series.shouldShowTooltip(0, yAxis.pos - plotTop + plotY, {\n ignoreX: true\n })) {\n anchorY = yAxis.pos + plotY;\n }\n }\n // Limit values to plot area\n anchorX = clamp(anchorX, bounds.left - distance, bounds.right + distance);\n return { anchorX: anchorX, anchorY: anchorY };\n }\n /**\n * Calculates the position of the partial tooltip\n *\n * @private\n * @param {number} anchorX\n * The partial tooltip anchor x position\n *\n * @param {number} anchorY\n * The partial tooltip anchor y position\n *\n * @param {boolean|undefined} isHeader\n * Whether the partial tooltip is a header\n *\n * @param {number} boxWidth\n * Width of the partial tooltip\n *\n * @return {Highcharts.PositionObject}\n * Returns the partial tooltip x and y position\n */\n function defaultPositioner(anchorX, anchorY, isHeader, boxWidth, alignedLeft) {\n if (alignedLeft === void 0) { alignedLeft = true; }\n var y;\n var x;\n if (isHeader) {\n y = headerTop ? 0 : adjustedPlotHeight;\n x = clamp(anchorX - (boxWidth / 2), bounds.left, bounds.right - boxWidth - (tooltip.outside ? chartLeft : 0));\n }\n else {\n y = anchorY - distributionBoxTop;\n x = alignedLeft ?\n anchorX - boxWidth - distance :\n anchorX + distance;\n x = clamp(x, alignedLeft ? x : bounds.left, bounds.right);\n }\n // NOTE: y is relative to distributionBoxTop\n return { x: x, y: y };\n }\n /**\n * Updates the attributes and styling of the partial tooltip. Creates a\n * new partial tooltip if it does not exists.\n *\n * @private\n * @param {Highcharts.SVGElement|undefined} partialTooltip\n * The partial tooltip to update\n * @param {Highcharts.Point} point\n * The point related to the partial tooltip\n * @param {boolean|string} str The text for the partial tooltip\n * @return {Highcharts.SVGElement} Returns the updated partial tooltip\n */\n function updatePartialTooltip(partialTooltip, point, str) {\n var tt = partialTooltip;\n var isHeader = point.isHeader,\n series = point.series;\n var colorClass = 'highcharts-color-' + pick(point.colorIndex, series.colorIndex, 'none');\n if (!tt) {\n var attribs = {\n padding: options.padding,\n r: options.borderRadius\n };\n if (!styledMode) {\n attribs.fill = options.backgroundColor;\n attribs['stroke-width'] = options.borderWidth;\n }\n tt = ren\n .label('', 0, 0, (options[isHeader ? 'headerShape' : 'shape']), void 0, void 0, options.useHTML)\n .addClass((isHeader ? 'highcharts-tooltip-header ' : '') +\n 'highcharts-tooltip-box ' +\n colorClass)\n .attr(attribs)\n .add(tooltipLabel);\n }\n tt.isActive = true;\n tt.attr({\n text: str\n });\n if (!styledMode) {\n tt.css(options.style)\n .shadow(options.shadow)\n .attr({\n stroke: (options.borderColor ||\n point.color ||\n series.color ||\n \"#333333\" /* neutralColor80 */)\n });\n }\n return tt;\n }\n // Graceful degradation for legacy formatters\n if (isString(labels)) {\n labels = [false, labels];\n }\n // Create the individual labels for header and points, ignore footer\n var boxes = labels.slice(0,\n points.length + 1).reduce(function (boxes,\n str,\n i) {\n if (str !== false && str !== '') {\n var point = (points[i - 1] ||\n {\n // Item 0 is the header. Instead of this, we could also\n // use the crosshair label\n isHeader: true,\n plotX: points[0].plotX,\n plotY: plotHeight,\n series: {}\n });\n var isHeader = point.isHeader;\n // Store the tooltip label referance on the series\n var owner = isHeader ? tooltip : point.series;\n var tt = owner.tt = updatePartialTooltip(owner.tt,\n point,\n str.toString());\n // Get X position now, so we can move all to the other side in\n // case of overflow\n var bBox = tt.getBBox();\n var boxWidth = bBox.width + tt.strokeWidth();\n if (isHeader) {\n headerHeight = bBox.height;\n adjustedPlotHeight += headerHeight;\n if (headerTop) {\n distributionBoxTop -= headerHeight;\n }\n }\n var _a = getAnchor(point),\n anchorX = _a.anchorX,\n anchorY = _a.anchorY;\n if (typeof anchorY === 'number') {\n var size = bBox.height + 1;\n var boxPosition = (positioner ?\n positioner.call(tooltip,\n boxWidth,\n size,\n point) :\n defaultPositioner(anchorX,\n anchorY,\n isHeader,\n boxWidth));\n boxes.push({\n // 0-align to the top, 1-align to the bottom\n align: positioner ? 0 : void 0,\n anchorX: anchorX,\n anchorY: anchorY,\n boxWidth: boxWidth,\n point: point,\n rank: pick(boxPosition.rank, isHeader ? 1 : 0),\n size: size,\n target: boxPosition.y,\n tt: tt,\n x: boxPosition.x\n });\n }\n else {\n // Hide tooltips which anchorY is outside the visible plot\n // area\n tt.isActive = false;\n }\n }\n return boxes;\n }, []);\n // Realign the tooltips towards the right if there is not enough space\n // to the left and there is space to to the right\n if (!positioner && boxes.some(function (box) {\n // Always realign if the beginning of a label is outside bounds\n var outside = tooltip.outside;\n var boxStart = (outside ? chartLeft : 0) + box.anchorX;\n if (boxStart < bounds.left &&\n boxStart + box.boxWidth < bounds.right) {\n return true;\n }\n // Otherwise, check if there is more space available to the right\n return boxStart < (chartLeft - bounds.left) + box.boxWidth &&\n bounds.right - boxStart > boxStart;\n })) {\n boxes = boxes.map(function (box) {\n var _a = defaultPositioner(box.anchorX,\n box.anchorY,\n box.point.isHeader,\n box.boxWidth,\n false),\n x = _a.x,\n y = _a.y;\n return extend(box, {\n target: y,\n x: x\n });\n });\n }\n // Clean previous run (for missing points)\n tooltip.cleanSplit();\n // Distribute and put in place\n distribute(boxes, adjustedPlotHeight);\n var boxExtremes = {\n left: chartLeft,\n right: chartLeft\n };\n // Get the extremes from series tooltips\n boxes.forEach(function (box) {\n var x = box.x,\n boxWidth = box.boxWidth,\n isHeader = box.isHeader;\n if (!isHeader) {\n if (tooltip.outside && chartLeft + x < boxExtremes.left) {\n boxExtremes.left = chartLeft + x;\n }\n if (!isHeader &&\n tooltip.outside &&\n boxExtremes.left + boxWidth > boxExtremes.right) {\n boxExtremes.right = chartLeft + x;\n }\n }\n });\n boxes.forEach(function (box) {\n var x = box.x,\n anchorX = box.anchorX,\n anchorY = box.anchorY,\n pos = box.pos,\n isHeader = box.point.isHeader;\n var attributes = {\n visibility: typeof pos === 'undefined' ? 'hidden' : 'inherit',\n x: x,\n /* NOTE: y should equal pos to be consistent with !split\n * tooltip,\n but is currently relative to plotTop. Is left as is\n * to avoid breaking change. Remove distributionBoxTop to make\n * it consistent.\n */\n y: pos + distributionBoxTop,\n anchorX: anchorX,\n anchorY: anchorY\n };\n // Handle left-aligned tooltips overflowing the chart area\n if (tooltip.outside && x < anchorX) {\n var offset = chartLeft - boxExtremes.left;\n // Skip this if there is no overflow\n if (offset > 0) {\n if (!isHeader) {\n attributes.x = x + offset;\n attributes.anchorX = anchorX + offset;\n }\n if (isHeader) {\n attributes.x = (boxExtremes.right - boxExtremes.left) / 2;\n attributes.anchorX = anchorX + offset;\n }\n }\n }\n // Put the label in place\n box.tt.attr(attributes);\n });\n /* If we have a seperate tooltip container, then update the necessary\n * container properties.\n * Test that tooltip has its own container and renderer before executing\n * the operation.\n */\n var container = tooltip.container,\n outside = tooltip.outside,\n renderer = tooltip.renderer;\n if (outside && container && renderer) {\n // Set container size to fit the bounds\n var _f = tooltipLabel.getBBox(),\n width = _f.width,\n height = _f.height,\n x = _f.x,\n y = _f.y;\n renderer.setSize(width + x, height + y, false);\n // Position the tooltip container to the chart container\n container.style.left = boxExtremes.left + 'px';\n container.style.top = chartTop + 'px';\n }\n };\n /**\n * If the `stickOnContact` option is active, this will add a tracker shape.\n *\n * @private\n * @function Highcharts.Tooltip#drawTracker\n */\n Tooltip.prototype.drawTracker = function () {\n var tooltip = this;\n if (tooltip.followPointer ||\n !tooltip.options.stickOnContact) {\n if (tooltip.tracker) {\n tooltip.tracker.destroy();\n }\n return;\n }\n var chart = tooltip.chart;\n var label = tooltip.label;\n var points = tooltip.shared ? chart.hoverPoints : chart.hoverPoint;\n if (!label || !points) {\n return;\n }\n var box = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n // Combine anchor and tooltip\n var anchorPos = this.getAnchor(points);\n var labelBBox = label.getBBox();\n anchorPos[0] += chart.plotLeft - label.translateX;\n anchorPos[1] += chart.plotTop - label.translateY;\n // When the mouse pointer is between the anchor point and the label,\n // the label should stick.\n box.x = Math.min(0, anchorPos[0]);\n box.y = Math.min(0, anchorPos[1]);\n box.width = (anchorPos[0] < 0 ?\n Math.max(Math.abs(anchorPos[0]), (labelBBox.width - anchorPos[0])) :\n Math.max(Math.abs(anchorPos[0]), labelBBox.width));\n box.height = (anchorPos[1] < 0 ?\n Math.max(Math.abs(anchorPos[1]), (labelBBox.height - Math.abs(anchorPos[1]))) :\n Math.max(Math.abs(anchorPos[1]), labelBBox.height));\n if (tooltip.tracker) {\n tooltip.tracker.attr(box);\n }\n else {\n tooltip.tracker = label.renderer\n .rect(box)\n .addClass('highcharts-tracker')\n .add(label);\n if (!chart.styledMode) {\n tooltip.tracker.attr({\n fill: 'rgba(0,0,0,0)'\n });\n }\n }\n };\n /**\n * @private\n */\n Tooltip.prototype.styledModeFormat = function (formatString) {\n return formatString\n .replace('style=\"font-size: 10px\"', 'class=\"highcharts-header\"')\n .replace(/style=\"color:{(point|series)\\.color}\"/g, 'class=\"highcharts-color-{$1.colorIndex}\"');\n };\n /**\n * Format the footer/header of the tooltip\n * #3397: abstraction to enable formatting of footer and header\n *\n * @private\n * @function Highcharts.Tooltip#tooltipFooterHeaderFormatter\n */\n Tooltip.prototype.tooltipFooterHeaderFormatter = function (labelConfig, isFooter) {\n var series = labelConfig.series,\n tooltipOptions = series.tooltipOptions,\n xAxis = series.xAxis,\n dateTime = xAxis && xAxis.dateTime,\n e = {\n isFooter: isFooter,\n labelConfig: labelConfig\n };\n var xDateFormat = tooltipOptions.xDateFormat,\n formatString = tooltipOptions[isFooter ? 'footerFormat' : 'headerFormat'];\n fireEvent(this, 'headerFormatter', e, function (e) {\n // Guess the best date format based on the closest point distance\n // (#568, #3418)\n if (dateTime && !xDateFormat && isNumber(labelConfig.key)) {\n xDateFormat = dateTime.getXDateFormat(labelConfig.key, tooltipOptions.dateTimeLabelFormats);\n }\n // Insert the footer date format if any\n if (dateTime && xDateFormat) {\n ((labelConfig.point && labelConfig.point.tooltipDateKeys) ||\n ['key']).forEach(function (key) {\n formatString = formatString.replace('{point.' + key + '}', '{point.' + key + ':' + xDateFormat + '}');\n });\n }\n // Replace default header style with class name\n if (series.chart.styledMode) {\n formatString = this.styledModeFormat(formatString);\n }\n e.text = format(formatString, {\n point: labelConfig,\n series: series\n }, this.chart);\n });\n return e.text;\n };\n /**\n * Updates the tooltip with the provided tooltip options.\n *\n * @function Highcharts.Tooltip#update\n *\n * @param {Highcharts.TooltipOptions} options\n * The tooltip options to update.\n */\n Tooltip.prototype.update = function (options) {\n this.destroy();\n // Update user options (#6218)\n merge(true, this.chart.options.tooltip.userOptions, options);\n this.init(this.chart, merge(true, this.options, options));\n };\n /**\n * Find the new position and perform the move\n *\n * @private\n * @function Highcharts.Tooltip#updatePosition\n *\n * @param {Highcharts.Point} point\n */\n Tooltip.prototype.updatePosition = function (point) {\n var chart = this.chart,\n options = this.options,\n pointer = chart.pointer,\n label = this.getLabel(), \n // Needed for outside: true (#11688)\n chartPosition = pointer.getChartPosition(),\n pos = (options.positioner || this.getPosition).call(this,\n label.width,\n label.height,\n point);\n var anchorX = point.plotX + chart.plotLeft,\n anchorY = point.plotY + chart.plotTop,\n pad;\n // Set the renderer size dynamically to prevent document size to change\n if (this.outside) {\n pad = options.borderWidth + 2 * this.distance;\n this.renderer.setSize(label.width + pad, label.height + pad, false);\n // Anchor and tooltip container need scaling if chart container has\n // scale transform/css zoom. #11329.\n if (chartPosition.scaleX !== 1 || chartPosition.scaleY !== 1) {\n css(this.container, {\n transform: \"scale(\" + chartPosition.scaleX + \", \" + chartPosition.scaleY + \")\"\n });\n anchorX *= chartPosition.scaleX;\n anchorY *= chartPosition.scaleY;\n }\n anchorX += chartPosition.left - pos.x;\n anchorY += chartPosition.top - pos.y;\n }\n // do the move\n this.move(Math.round(pos.x), Math.round(pos.y || 0), // can be undefined (#3977)\n anchorX, anchorY);\n };\n return Tooltip;\n }());\n /* *\n *\n * Default export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback function to format the text of the tooltip from scratch.\n *\n * In case of single or shared tooltips, a string should be be returned. In case\n * of splitted tooltips, it should return an array where the first item is the\n * header, and subsequent items are mapped to the points. Return `false` to\n * disable tooltip for a specific point on series.\n *\n * @callback Highcharts.TooltipFormatterCallbackFunction\n *\n * @param {Highcharts.TooltipFormatterContextObject} this\n * Context to format\n *\n * @param {Highcharts.Tooltip} tooltip\n * The tooltip instance\n *\n * @return {false|string|Array<(string|null|undefined)>|null|undefined}\n * Formatted text or false\n */\n /**\n * @interface Highcharts.TooltipFormatterContextObject\n */ /**\n * @name Highcharts.TooltipFormatterContextObject#color\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */ /**\n * @name Highcharts.TooltipFormatterContextObject#colorIndex\n * @type {number|undefined}\n */ /**\n * @name Highcharts.TooltipFormatterContextObject#key\n * @type {number}\n */ /**\n * @name Highcharts.TooltipFormatterContextObject#percentage\n * @type {number|undefined}\n */ /**\n * @name Highcharts.TooltipFormatterContextObject#point\n * @type {Highcharts.Point}\n */ /**\n * @name Highcharts.TooltipFormatterContextObject#points\n * @type {Array<Highcharts.TooltipFormatterContextObject>|undefined}\n */ /**\n * @name Highcharts.TooltipFormatterContextObject#series\n * @type {Highcharts.Series}\n */ /**\n * @name Highcharts.TooltipFormatterContextObject#total\n * @type {number|undefined}\n */ /**\n * @name Highcharts.TooltipFormatterContextObject#x\n * @type {number}\n */ /**\n * @name Highcharts.TooltipFormatterContextObject#y\n * @type {number}\n */\n /**\n * A callback function to place the tooltip in a specific position.\n *\n * @callback Highcharts.TooltipPositionerCallbackFunction\n *\n * @param {Highcharts.Tooltip} this\n * Tooltip context of the callback.\n *\n * @param {number} labelWidth\n * Width of the tooltip.\n *\n * @param {number} labelHeight\n * Height of the tooltip.\n *\n * @param {Highcharts.TooltipPositionerPointObject} point\n * Point information for positioning a tooltip.\n *\n * @return {Highcharts.PositionObject}\n * New position for the tooltip.\n */\n /**\n * Point information for positioning a tooltip.\n *\n * @interface Highcharts.TooltipPositionerPointObject\n * @extends Highcharts.Point\n */ /**\n * If `tooltip.split` option is enabled and positioner is called for each of the\n * boxes separately, this property indicates the call on the xAxis header, which\n * is not a point itself.\n * @name Highcharts.TooltipPositionerPointObject#isHeader\n * @type {boolean}\n */ /**\n * The reference point relative to the plot area. Add chart.plotLeft to get the\n * full coordinates.\n * @name Highcharts.TooltipPositionerPointObject#plotX\n * @type {number}\n */ /**\n * The reference point relative to the plot area. Add chart.plotTop to get the\n * full coordinates.\n * @name Highcharts.TooltipPositionerPointObject#plotY\n * @type {number}\n */\n /**\n * @typedef {\"callout\"|\"circle\"|\"square\"} Highcharts.TooltipShapeValue\n */\n ''; // keeps doclets above in JS file\n\n return Tooltip;\n });\n _registerModule(_modules, 'Core/Series/Point.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Animation/AnimationUtilities.js'], _modules['Core/DefaultOptions.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (AST, A, D, F, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject;\n var defaultOptions = D.defaultOptions;\n var format = F.format;\n var addEvent = U.addEvent,\n defined = U.defined,\n erase = U.erase,\n extend = U.extend,\n fireEvent = U.fireEvent,\n getNestedProperty = U.getNestedProperty,\n isArray = U.isArray,\n isFunction = U.isFunction,\n isNumber = U.isNumber,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n syncTimeout = U.syncTimeout,\n removeEvent = U.removeEvent,\n uniqueKey = U.uniqueKey;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /* *\n *\n * Class\n *\n * */\n /**\n * The Point object. The point objects are generated from the `series.data`\n * configuration objects or raw numbers. They can be accessed from the\n * `Series.points` array. Other ways to instantiate points are through {@link\n * Highcharts.Series#addPoint} or {@link Highcharts.Series#setData}.\n *\n * @class\n * @name Highcharts.Point\n */\n var Point = /** @class */ (function () {\n function Point() {\n /* *\n *\n * Properties\n *\n * */\n /**\n * For categorized axes this property holds the category name for the\n * point. For other axes it holds the X value.\n *\n * @name Highcharts.Point#category\n * @type {string}\n */\n this.category = void 0;\n /**\n * The point's current color index, used in styled mode instead of\n * `color`. The color index is inserted in class names used for styling.\n *\n * @name Highcharts.Point#colorIndex\n * @type {number}\n */\n this.colorIndex = void 0;\n this.formatPrefix = 'point';\n this.id = void 0;\n this.isNull = false;\n /**\n * The name of the point. The name can be given as the first position of the\n * point configuration array, or as a `name` property in the configuration:\n *\n * @example\n * // Array config\n * data: [\n * ['John', 1],\n * ['Jane', 2]\n * ]\n *\n * // Object config\n * data: [{\n * name: 'John',\n * y: 1\n * }, {\n * name: 'Jane',\n * y: 2\n * }]\n *\n * @name Highcharts.Point#name\n * @type {string}\n */\n this.name = void 0;\n /**\n * The point's options as applied in the initial configuration, or\n * extended through `Point.update`.\n *\n * In TypeScript you have to extend `PointOptionsObject` via an\n * additional interface to allow custom data options:\n *\n * ```\n * declare interface PointOptionsObject {\n * customProperty: string;\n * }\n * ```\n *\n * @name Highcharts.Point#options\n * @type {Highcharts.PointOptionsObject}\n */\n this.options = void 0;\n /**\n * The percentage for points in a stacked series or pies.\n *\n * @name Highcharts.Point#percentage\n * @type {number|undefined}\n */\n this.percentage = void 0;\n this.selected = false;\n /**\n * The series object associated with the point.\n *\n * @name Highcharts.Point#series\n * @type {Highcharts.Series}\n */\n this.series = void 0;\n /**\n * The total of values in either a stack for stacked series, or a pie in a\n * pie series.\n *\n * @name Highcharts.Point#total\n * @type {number|undefined}\n */\n this.total = void 0;\n /**\n * For certain series types, like pie charts, where individual points can\n * be shown or hidden.\n *\n * @name Highcharts.Point#visible\n * @type {boolean}\n * @default true\n */\n this.visible = true;\n this.x = void 0;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Animate SVG elements associated with the point.\n *\n * @private\n * @function Highcharts.Point#animateBeforeDestroy\n */\n Point.prototype.animateBeforeDestroy = function () {\n var point = this,\n animateParams = { x: point.startXPos,\n opacity: 0 },\n graphicalProps = point.getGraphicalProps();\n graphicalProps.singular.forEach(function (prop) {\n var isDataLabel = prop === 'dataLabel';\n point[prop] = point[prop].animate(isDataLabel ? {\n x: point[prop].startXPos,\n y: point[prop].startYPos,\n opacity: 0\n } : animateParams);\n });\n graphicalProps.plural.forEach(function (plural) {\n point[plural].forEach(function (item) {\n if (item.element) {\n item.animate(extend({ x: point.startXPos }, (item.startYPos ? {\n x: item.startXPos,\n y: item.startYPos\n } : {})));\n }\n });\n });\n };\n /**\n * Apply the options containing the x and y data and possible some extra\n * properties. Called on point init or from point.update.\n *\n * @private\n * @function Highcharts.Point#applyOptions\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options as defined in series.data.\n *\n * @param {number} [x]\n * Optionally, the x value.\n *\n * @return {Highcharts.Point}\n * The Point instance.\n */\n Point.prototype.applyOptions = function (options, x) {\n var point = this,\n series = point.series,\n pointValKey = series.options.pointValKey || series.pointValKey;\n options = Point.prototype.optionsToObject.call(this, options);\n // copy options directly to point\n extend(point, options);\n point.options = point.options ?\n extend(point.options, options) :\n options;\n // Since options are copied into the Point instance, some accidental\n // options must be shielded (#5681)\n if (options.group) {\n delete point.group;\n }\n if (options.dataLabels) {\n delete point.dataLabels;\n }\n /**\n * The y value of the point.\n * @name Highcharts.Point#y\n * @type {number|undefined}\n */\n // For higher dimension series types. For instance, for ranges, point.y\n // is mapped to point.low.\n if (pointValKey) {\n point.y = Point.prototype.getNestedProperty.call(point, pointValKey);\n }\n point.isNull = pick(point.isValid && !point.isValid(), point.x === null || !isNumber(point.y)); // #3571, check for NaN\n point.formatPrefix = point.isNull ? 'null' : 'point'; // #9233, #10874\n // The point is initially selected by options (#5777)\n if (point.selected) {\n point.state = 'select';\n }\n /**\n * The x value of the point.\n * @name Highcharts.Point#x\n * @type {number}\n */\n // If no x is set by now, get auto incremented value. All points must\n // have an x value, however the y value can be null to create a gap in\n // the series\n if ('name' in point &&\n typeof x === 'undefined' &&\n series.xAxis &&\n series.xAxis.hasNames) {\n point.x = series.xAxis.nameToX(point);\n }\n if (typeof point.x === 'undefined' && series) {\n if (typeof x === 'undefined') {\n point.x = series.autoIncrement();\n }\n else {\n point.x = x;\n }\n }\n else if (isNumber(options.x) && series.options.relativeXValue) {\n point.x = series.autoIncrement(options.x);\n }\n return point;\n };\n /**\n * Destroy a point to clear memory. Its reference still stays in\n * `series.data`.\n *\n * @private\n * @function Highcharts.Point#destroy\n */\n Point.prototype.destroy = function () {\n var point = this,\n series = point.series,\n chart = series.chart,\n dataSorting = series.options.dataSorting,\n hoverPoints = chart.hoverPoints,\n globalAnimation = point.series.chart.renderer.globalAnimation,\n animation = animObject(globalAnimation);\n var prop;\n /**\n * Allow to call after animation.\n * @private\n */\n function destroyPoint() {\n // Remove all events and elements\n if (point.graphic || point.dataLabel || point.dataLabels) {\n removeEvent(point);\n point.destroyElements();\n }\n for (prop in point) { // eslint-disable-line guard-for-in\n point[prop] = null;\n }\n }\n if (point.legendItem) { // pies have legend items\n chart.legend.destroyItem(point);\n }\n if (hoverPoints) {\n point.setState();\n erase(hoverPoints, point);\n if (!hoverPoints.length) {\n chart.hoverPoints = null;\n }\n }\n if (point === chart.hoverPoint) {\n point.onMouseOut();\n }\n // Remove properties after animation\n if (!dataSorting || !dataSorting.enabled) {\n destroyPoint();\n }\n else {\n this.animateBeforeDestroy();\n syncTimeout(destroyPoint, animation.duration);\n }\n chart.pointCount--;\n };\n /**\n * Destroy SVG elements associated with the point.\n *\n * @private\n * @function Highcharts.Point#destroyElements\n * @param {Highcharts.Dictionary<number>} [kinds]\n */\n Point.prototype.destroyElements = function (kinds) {\n var point = this,\n props = point.getGraphicalProps(kinds);\n props.singular.forEach(function (prop) {\n point[prop] = point[prop].destroy();\n });\n props.plural.forEach(function (plural) {\n point[plural].forEach(function (item) {\n if (item.element) {\n item.destroy();\n }\n });\n delete point[plural];\n });\n };\n /**\n * Fire an event on the Point object.\n *\n * @private\n * @function Highcharts.Point#firePointEvent\n *\n * @param {string} eventType\n * Type of the event.\n *\n * @param {Highcharts.Dictionary<any>|Event} [eventArgs]\n * Additional event arguments.\n *\n * @param {Highcharts.EventCallbackFunction<Highcharts.Point>|Function} [defaultFunction]\n * Default event handler.\n *\n * @emits Highcharts.Point#event:*\n */\n Point.prototype.firePointEvent = function (eventType, eventArgs, defaultFunction) {\n var point = this,\n series = this.series,\n seriesOptions = series.options;\n // load event handlers on demand to save time on mouseover/out\n if (seriesOptions.point.events[eventType] ||\n (point.options &&\n point.options.events &&\n point.options.events[eventType])) {\n point.importEvents();\n }\n // add default handler if in selection mode\n if (eventType === 'click' && seriesOptions.allowPointSelect) {\n defaultFunction = function (event) {\n // Control key is for Windows, meta (= Cmd key) for Mac, Shift\n // for Opera.\n if (point.select) { // #2911\n point.select(null, event.ctrlKey || event.metaKey || event.shiftKey);\n }\n };\n }\n fireEvent(point, eventType, eventArgs, defaultFunction);\n };\n /**\n * Get the CSS class names for individual points. Used internally where the\n * returned value is set on every point.\n *\n * @function Highcharts.Point#getClassName\n *\n * @return {string}\n * The class names.\n */\n Point.prototype.getClassName = function () {\n var point = this;\n return 'highcharts-point' +\n (point.selected ? ' highcharts-point-select' : '') +\n (point.negative ? ' highcharts-negative' : '') +\n (point.isNull ? ' highcharts-null-point' : '') +\n (typeof point.colorIndex !== 'undefined' ?\n ' highcharts-color-' + point.colorIndex : '') +\n (point.options.className ? ' ' + point.options.className : '') +\n (point.zone && point.zone.className ? ' ' +\n point.zone.className.replace('highcharts-negative', '') : '');\n };\n /**\n * Get props of all existing graphical point elements.\n *\n * @private\n * @function Highcharts.Point#getGraphicalProps\n */\n Point.prototype.getGraphicalProps = function (kinds) {\n var point = this,\n props = [],\n graphicalProps = { singular: [],\n plural: [] };\n var prop,\n i;\n kinds = kinds || { graphic: 1, dataLabel: 1 };\n if (kinds.graphic) {\n props.push('graphic', 'upperGraphic', 'shadowGroup');\n }\n if (kinds.dataLabel) {\n props.push('dataLabel', 'dataLabelUpper', 'connector');\n }\n i = props.length;\n while (i--) {\n prop = props[i];\n if (point[prop]) {\n graphicalProps.singular.push(prop);\n }\n }\n ['dataLabel', 'connector'].forEach(function (prop) {\n var plural = prop + 's';\n if (kinds[prop] && point[plural]) {\n graphicalProps.plural.push(plural);\n }\n });\n return graphicalProps;\n };\n /**\n * Return the configuration hash needed for the data label and tooltip\n * formatters.\n *\n * @function Highcharts.Point#getLabelConfig\n *\n * @return {Highcharts.PointLabelObject}\n * Abstract object used in formatters and formats.\n */\n Point.prototype.getLabelConfig = function () {\n return {\n x: this.category,\n y: this.y,\n color: this.color,\n colorIndex: this.colorIndex,\n key: this.name || this.category,\n series: this.series,\n point: this,\n percentage: this.percentage,\n total: this.total || this.stackTotal\n };\n };\n /**\n * Returns the value of the point property for a given value.\n * @private\n */\n Point.prototype.getNestedProperty = function (key) {\n if (!key) {\n return;\n }\n if (key.indexOf('custom.') === 0) {\n return getNestedProperty(key, this.options);\n }\n return this[key];\n };\n /**\n * In a series with `zones`, return the zone that the point belongs to.\n *\n * @function Highcharts.Point#getZone\n *\n * @return {Highcharts.SeriesZonesOptionsObject}\n * The zone item.\n */\n Point.prototype.getZone = function () {\n var series = this.series,\n zones = series.zones,\n zoneAxis = series.zoneAxis || 'y';\n var zone,\n i = 0;\n zone = zones[i];\n while (this[zoneAxis] >= zone.value) {\n zone = zones[++i];\n }\n // For resetting or reusing the point (#8100)\n if (!this.nonZonedColor) {\n this.nonZonedColor = this.color;\n }\n if (zone && zone.color && !this.options.color) {\n this.color = zone.color;\n }\n else {\n this.color = this.nonZonedColor;\n }\n return zone;\n };\n /**\n * Utility to check if point has new shape type. Used in column series and\n * all others that are based on column series.\n * @private\n */\n Point.prototype.hasNewShapeType = function () {\n var point = this;\n var oldShapeType = point.graphic &&\n (point.graphic.symbolName || point.graphic.element.nodeName);\n return oldShapeType !== this.shapeType;\n };\n /**\n * Initialize the point. Called internally based on the `series.data`\n * option.\n *\n * @function Highcharts.Point#init\n *\n * @param {Highcharts.Series} series\n * The series object containing this point.\n *\n * @param {Highcharts.PointOptionsType} options\n * The data in either number, array or object format.\n *\n * @param {number} [x]\n * Optionally, the X value of the point.\n *\n * @return {Highcharts.Point}\n * The Point instance.\n *\n * @emits Highcharts.Point#event:afterInit\n */\n Point.prototype.init = function (series, options, x) {\n this.series = series;\n this.applyOptions(options, x);\n // Add a unique ID to the point if none is assigned\n this.id = defined(this.id) ? this.id : uniqueKey();\n this.resolveColor();\n series.chart.pointCount++;\n fireEvent(this, 'afterInit');\n return this;\n };\n /**\n * Transform number or array configs into objects. Also called for object\n * configs. Used internally to unify the different configuration formats for\n * points. For example, a simple number `10` in a line series will be\n * transformed to `{ y: 10 }`, and an array config like `[1, 10]` in a\n * scatter series will be transformed to `{ x: 1, y: 10 }`.\n *\n * @deprecated\n * @function Highcharts.Point#optionsToObject\n *\n * @param {Highcharts.PointOptionsType} options\n * Series data options.\n *\n * @return {Highcharts.Dictionary<*>}\n * Transformed point options.\n */\n Point.prototype.optionsToObject = function (options) {\n var series = this.series,\n keys = series.options.keys,\n pointArrayMap = keys || series.pointArrayMap || ['y'],\n valueCount = pointArrayMap.length;\n var ret = {},\n firstItemType,\n i = 0,\n j = 0;\n if (isNumber(options) || options === null) {\n ret[pointArrayMap[0]] = options;\n }\n else if (isArray(options)) {\n // with leading x value\n if (!keys && options.length > valueCount) {\n firstItemType = typeof options[0];\n if (firstItemType === 'string') {\n ret.name = options[0];\n }\n else if (firstItemType === 'number') {\n ret.x = options[0];\n }\n i++;\n }\n while (j < valueCount) {\n // Skip undefined positions for keys\n if (!keys || typeof options[i] !== 'undefined') {\n if (pointArrayMap[j].indexOf('.') > 0) {\n // Handle nested keys, e.g. ['color.pattern.image']\n // Avoid function call unless necessary.\n Point.prototype.setNestedProperty(ret, options[i], pointArrayMap[j]);\n }\n else {\n ret[pointArrayMap[j]] = options[i];\n }\n }\n i++;\n j++;\n }\n }\n else if (typeof options === 'object') {\n ret = options;\n // This is the fastest way to detect if there are individual point\n // dataLabels that need to be considered in drawDataLabels. These\n // can only occur in object configs.\n if (options.dataLabels) {\n series._hasPointLabels = true;\n }\n // Same approach as above for markers\n if (options.marker) {\n series._hasPointMarkers = true;\n }\n }\n return ret;\n };\n /**\n * @private\n * @function Highcharts.Point#resolveColor\n */\n Point.prototype.resolveColor = function () {\n var series = this.series,\n optionsChart = series.chart.options.chart,\n styledMode = series.chart.styledMode;\n var color,\n colors,\n colorCount = optionsChart.colorCount,\n colorIndex;\n // remove points nonZonedColor for later recalculation\n delete this.nonZonedColor;\n if (series.options.colorByPoint) {\n if (!styledMode) {\n colors = series.options.colors || series.chart.options.colors;\n color = colors[series.colorCounter];\n colorCount = colors.length;\n }\n colorIndex = series.colorCounter;\n series.colorCounter++;\n // loop back to zero\n if (series.colorCounter === colorCount) {\n series.colorCounter = 0;\n }\n }\n else {\n if (!styledMode) {\n color = series.color;\n }\n colorIndex = series.colorIndex;\n }\n this.colorIndex = pick(this.options.colorIndex, colorIndex);\n /**\n * The point's current color.\n *\n * @name Highcharts.Point#color\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */\n this.color = pick(this.options.color, color);\n };\n /**\n * Set a value in an object, on the property defined by key. The key\n * supports nested properties using dot notation. The function modifies the\n * input object and does not make a copy.\n *\n * @function Highcharts.Point#setNestedProperty<T>\n *\n * @param {T} object\n * The object to set the value on.\n *\n * @param {*} value\n * The value to set.\n *\n * @param {string} key\n * Key to the property to set.\n *\n * @return {T}\n * The modified object.\n */\n Point.prototype.setNestedProperty = function (object, value, key) {\n var nestedKeys = key.split('.');\n nestedKeys.reduce(function (result, key, i, arr) {\n var isLastKey = arr.length - 1 === i;\n result[key] = (isLastKey ?\n value :\n isObject(result[key], true) ?\n result[key] :\n {});\n return result[key];\n }, object);\n return object;\n };\n /**\n * Extendable method for formatting each point's tooltip line.\n *\n * @function Highcharts.Point#tooltipFormatter\n *\n * @param {string} pointFormat\n * The point format.\n *\n * @return {string}\n * A string to be concatenated in to the common tooltip text.\n */\n Point.prototype.tooltipFormatter = function (pointFormat) {\n // Insert options for valueDecimals, valuePrefix, and valueSuffix\n var series = this.series, seriesTooltipOptions = series.tooltipOptions, valueDecimals = pick(seriesTooltipOptions.valueDecimals, ''), valuePrefix = seriesTooltipOptions.valuePrefix || '', valueSuffix = seriesTooltipOptions.valueSuffix || '';\n // Replace default point style with class name\n if (series.chart.styledMode) {\n pointFormat =\n series.chart.tooltip.styledModeFormat(pointFormat);\n }\n // Loop over the point array map and replace unformatted values with\n // sprintf formatting markup\n (series.pointArrayMap || ['y']).forEach(function (key) {\n key = '{point.' + key; // without the closing bracket\n if (valuePrefix || valueSuffix) {\n pointFormat = pointFormat.replace(RegExp(key + '}', 'g'), valuePrefix + key + '}' + valueSuffix);\n }\n pointFormat = pointFormat.replace(RegExp(key + '}', 'g'), key + ':,.' + valueDecimals + 'f}');\n });\n return format(pointFormat, {\n point: this,\n series: this.series\n }, series.chart);\n };\n /**\n * Update point with new options (typically x/y data) and optionally redraw\n * the series.\n *\n * @sample highcharts/members/point-update-column/\n * Update column value\n * @sample highcharts/members/point-update-pie/\n * Update pie slice\n * @sample maps/members/point-update/\n * Update map area value in Highmaps\n *\n * @function Highcharts.Point#update\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options. Point options are handled as described under\n * the `series.type.data` item for each series type. For example\n * for a line series, if options is a single number, the point will\n * be given that number as the marin y value. If it is an array, it\n * will be interpreted as x and y values respectively. If it is an\n * object, advanced options are applied.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is updated. If doing\n * more operations on the chart, it is best practice to set\n * `redraw` to false and call `chart.redraw()` after.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=true]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @emits Highcharts.Point#event:update\n */\n Point.prototype.update = function (options, redraw, animation, runEvent) {\n var point = this,\n series = point.series,\n graphic = point.graphic,\n chart = series.chart,\n seriesOptions = series.options;\n var i;\n redraw = pick(redraw, true);\n /**\n * @private\n */\n function update() {\n point.applyOptions(options);\n // Update visuals, #4146\n // Handle dummy graphic elements for a11y, #12718\n var hasDummyGraphic = graphic && point.hasDummyGraphic;\n var shouldDestroyGraphic = point.y === null ?\n !hasDummyGraphic :\n hasDummyGraphic;\n if (graphic && shouldDestroyGraphic) {\n point.graphic = graphic.destroy();\n delete point.hasDummyGraphic;\n }\n if (isObject(options, true)) {\n // Destroy so we can get new elements\n if (graphic && graphic.element) {\n // \"null\" is also a valid symbol\n if (options &&\n options.marker &&\n typeof options.marker.symbol !== 'undefined') {\n point.graphic = graphic.destroy();\n }\n }\n if (options && options.dataLabels && point.dataLabel) {\n point.dataLabel = point.dataLabel.destroy(); // #2468\n }\n if (point.connector) {\n point.connector = point.connector.destroy(); // #7243\n }\n }\n // record changes in the parallel arrays\n i = point.index;\n series.updateParallelArrays(point, i);\n // Record the options to options.data. If the old or the new config\n // is an object, use point options, otherwise use raw options\n // (#4701, #4916).\n seriesOptions.data[i] = (isObject(seriesOptions.data[i], true) ||\n isObject(options, true)) ?\n point.options :\n pick(options, seriesOptions.data[i]);\n // redraw\n series.isDirty = series.isDirtyData = true;\n if (!series.fixedBox && series.hasCartesianSeries) { // #1906, #2320\n chart.isDirtyBox = true;\n }\n if (seriesOptions.legendType === 'point') { // #1831, #1885\n chart.isDirtyLegend = true;\n }\n if (redraw) {\n chart.redraw(animation);\n }\n }\n // Fire the event with a default handler of doing the update\n if (runEvent === false) { // When called from setData\n update();\n }\n else {\n point.firePointEvent('update', { options: options }, update);\n }\n };\n /**\n * Remove a point and optionally redraw the series and if necessary the axes\n *\n * @sample highcharts/plotoptions/series-point-events-remove/\n * Remove point and confirm\n * @sample highcharts/members/point-remove/\n * Remove pie slice\n * @sample maps/members/point-remove/\n * Remove selected points in Highmaps\n *\n * @function Highcharts.Point#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call. When\n * doing more operations on the chart, for example running\n * `point.remove()` in a loop, it is best practice to set `redraw`\n * to false and call `chart.redraw()` after.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=false]\n * Whether to apply animation, and optionally animation\n * configuration.\n */\n Point.prototype.remove = function (redraw, animation) {\n this.series.removePoint(this.series.data.indexOf(this), redraw, animation);\n };\n /**\n * Toggle the selection status of a point.\n *\n * @see Highcharts.Chart#getSelectedPoints\n *\n * @sample highcharts/members/point-select/\n * Select a point from a button\n * @sample highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample maps/series/data-id/\n * Select a point in Highmaps\n *\n * @function Highcharts.Point#select\n *\n * @param {boolean} [selected]\n * When `true`, the point is selected. When `false`, the point is\n * unselected. When `null` or `undefined`, the selection state is toggled.\n *\n * @param {boolean} [accumulate=false]\n * When `true`, the selection is added to other selected points.\n * When `false`, other selected points are deselected. Internally in\n * Highcharts, when\n * [allowPointSelect](https://api.highcharts.com/highcharts/plotOptions.series.allowPointSelect)\n * is `true`, selected points are accumulated on Control, Shift or Cmd\n * clicking the point.\n *\n * @emits Highcharts.Point#event:select\n * @emits Highcharts.Point#event:unselect\n */\n Point.prototype.select = function (selected, accumulate) {\n var point = this,\n series = point.series,\n chart = series.chart;\n selected = pick(selected, !point.selected);\n this.selectedStaging = selected;\n // fire the event with the default handler\n point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {\n /**\n * Whether the point is selected or not.\n *\n * @see Point#select\n * @see Chart#getSelectedPoints\n *\n * @name Highcharts.Point#selected\n * @type {boolean}\n */\n point.selected = point.options.selected = selected;\n series.options.data[series.data.indexOf(point)] =\n point.options;\n point.setState(selected && 'select');\n // unselect all other points unless Ctrl or Cmd + click\n if (!accumulate) {\n chart.getSelectedPoints().forEach(function (loopPoint) {\n var loopSeries = loopPoint.series;\n if (loopPoint.selected && loopPoint !== point) {\n loopPoint.selected = loopPoint.options.selected =\n false;\n loopSeries.options.data[loopSeries.data.indexOf(loopPoint)] = loopPoint.options;\n // Programatically selecting a point should restore\n // normal state, but when click happened on other\n // point, set inactive state to match other points\n loopPoint.setState(chart.hoverPoints &&\n loopSeries.options.inactiveOtherPoints ?\n 'inactive' : '');\n loopPoint.firePointEvent('unselect');\n }\n });\n }\n });\n delete this.selectedStaging;\n };\n /**\n * Runs on mouse over the point. Called internally from mouse and touch\n * events.\n *\n * @function Highcharts.Point#onMouseOver\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The event arguments.\n */\n Point.prototype.onMouseOver = function (e) {\n var point = this,\n series = point.series,\n chart = series.chart,\n pointer = chart.pointer;\n e = e ?\n pointer.normalize(e) :\n // In cases where onMouseOver is called directly without an event\n pointer.getChartCoordinatesFromPoint(point, chart.inverted);\n pointer.runPointActions(e, point);\n };\n /**\n * Runs on mouse out from the point. Called internally from mouse and touch\n * events.\n *\n * @function Highcharts.Point#onMouseOut\n * @emits Highcharts.Point#event:mouseOut\n */\n Point.prototype.onMouseOut = function () {\n var point = this,\n chart = point.series.chart;\n point.firePointEvent('mouseOut');\n if (!point.series.options.inactiveOtherPoints) {\n (chart.hoverPoints || []).forEach(function (p) {\n p.setState();\n });\n }\n chart.hoverPoints = chart.hoverPoint = null;\n };\n /**\n * Import events from the series' and point's options. Only do it on\n * demand, to save processing time on hovering.\n *\n * @private\n * @function Highcharts.Point#importEvents\n */\n Point.prototype.importEvents = function () {\n if (!this.hasImportedEvents) {\n var point_1 = this,\n options = merge(point_1.series.options.point,\n point_1.options),\n events = options.events;\n point_1.events = events;\n objectEach(events, function (event, eventType) {\n if (isFunction(event)) {\n addEvent(point_1, eventType, event);\n }\n });\n this.hasImportedEvents = true;\n }\n };\n /**\n * Set the point's state.\n *\n * @function Highcharts.Point#setState\n *\n * @param {Highcharts.PointStateValue|\"\"} [state]\n * The new state, can be one of `'hover'`, `'select'`, `'inactive'`,\n * or `''` (an empty string), `'normal'` or `undefined` to set to\n * normal state.\n * @param {boolean} [move]\n * State for animation.\n *\n * @emits Highcharts.Point#event:afterSetState\n */\n Point.prototype.setState = function (state, move) {\n var point = this,\n series = point.series,\n previousState = point.state,\n stateOptions = (series.options.states[state || 'normal'] ||\n {}),\n markerOptions = (defaultOptions.plotOptions[series.type].marker &&\n series.options.marker),\n normalDisabled = (markerOptions && markerOptions.enabled === false),\n markerStateOptions = ((markerOptions &&\n markerOptions.states &&\n markerOptions.states[state || 'normal']) || {}),\n stateDisabled = markerStateOptions.enabled === false,\n pointMarker = point.marker || {},\n chart = series.chart,\n hasMarkers = (markerOptions && series.markerAttribs);\n var halo = series.halo,\n markerAttribs,\n pointAttribs,\n pointAttribsAnimation,\n stateMarkerGraphic = series.stateMarkerGraphic,\n newSymbol;\n state = state || ''; // empty string\n if (\n // already has this state\n (state === point.state && !move) ||\n // selected points don't respond to hover\n (point.selected && state !== 'select') ||\n // series' state options is disabled\n (stateOptions.enabled === false) ||\n // general point marker's state options is disabled\n (state && (stateDisabled ||\n (normalDisabled &&\n markerStateOptions.enabled === false))) ||\n // individual point marker's state options is disabled\n (state &&\n pointMarker.states &&\n pointMarker.states[state] &&\n pointMarker.states[state].enabled === false) // #1610\n ) {\n return;\n }\n point.state = state;\n if (hasMarkers) {\n markerAttribs = series.markerAttribs(point, state);\n }\n // Apply hover styles to the existing point\n // Prevent from dummy null points (#14966)\n if (point.graphic && !point.hasDummyGraphic) {\n if (previousState) {\n point.graphic.removeClass('highcharts-point-' + previousState);\n }\n if (state) {\n point.graphic.addClass('highcharts-point-' + state);\n }\n if (!chart.styledMode) {\n pointAttribs = series.pointAttribs(point, state);\n pointAttribsAnimation = pick(chart.options.chart.animation, stateOptions.animation);\n // Some inactive points (e.g. slices in pie) should apply\n // opacity also for their labels\n if (series.options.inactiveOtherPoints &&\n isNumber(pointAttribs.opacity)) {\n (point.dataLabels || []).forEach(function (label) {\n if (label) {\n label.animate({\n opacity: pointAttribs.opacity\n }, pointAttribsAnimation);\n }\n });\n if (point.connector) {\n point.connector.animate({\n opacity: pointAttribs.opacity\n }, pointAttribsAnimation);\n }\n }\n point.graphic.animate(pointAttribs, pointAttribsAnimation);\n }\n if (markerAttribs) {\n point.graphic.animate(markerAttribs, pick(\n // Turn off globally:\n chart.options.chart.animation, markerStateOptions.animation, markerOptions.animation));\n }\n // Zooming in from a range with no markers to a range with markers\n if (stateMarkerGraphic) {\n stateMarkerGraphic.hide();\n }\n }\n else {\n // if a graphic is not applied to each point in the normal state,\n // create a shared graphic for the hover state\n if (state && markerStateOptions) {\n newSymbol = pointMarker.symbol || series.symbol;\n // If the point has another symbol than the previous one, throw\n // away the state marker graphic and force a new one (#1459)\n if (stateMarkerGraphic &&\n stateMarkerGraphic.currentSymbol !== newSymbol) {\n stateMarkerGraphic = stateMarkerGraphic.destroy();\n }\n // Add a new state marker graphic\n if (markerAttribs) {\n if (!stateMarkerGraphic) {\n if (newSymbol) {\n series.stateMarkerGraphic = stateMarkerGraphic =\n chart.renderer\n .symbol(newSymbol, markerAttribs.x, markerAttribs.y, markerAttribs.width, markerAttribs.height)\n .add(series.markerGroup);\n stateMarkerGraphic.currentSymbol = newSymbol;\n }\n // Move the existing graphic\n }\n else {\n stateMarkerGraphic[move ? 'animate' : 'attr']({\n x: markerAttribs.x,\n y: markerAttribs.y\n });\n }\n }\n if (!chart.styledMode && stateMarkerGraphic &&\n point.state !== 'inactive') {\n stateMarkerGraphic.attr(series.pointAttribs(point, state));\n }\n }\n if (stateMarkerGraphic) {\n stateMarkerGraphic[state && point.isInside ? 'show' : 'hide'](); // #2450\n stateMarkerGraphic.element.point = point; // #4310\n stateMarkerGraphic.addClass(point.getClassName(), true);\n }\n }\n // Show me your halo\n var haloOptions = stateOptions.halo;\n var markerGraphic = (point.graphic || stateMarkerGraphic);\n var markerVisibility = (markerGraphic && markerGraphic.visibility || 'inherit');\n if (haloOptions &&\n haloOptions.size &&\n markerGraphic &&\n markerVisibility !== 'hidden' &&\n !point.isCluster) {\n if (!halo) {\n series.halo = halo = chart.renderer.path()\n // #5818, #5903, #6705\n .add(markerGraphic.parentGroup);\n }\n halo.show()[move ? 'animate' : 'attr']({\n d: point.haloPath(haloOptions.size)\n });\n halo.attr({\n 'class': 'highcharts-halo highcharts-color-' +\n pick(point.colorIndex, series.colorIndex) +\n (point.className ? ' ' + point.className : ''),\n 'visibility': markerVisibility,\n 'zIndex': -1 // #4929, #8276\n });\n halo.point = point; // #6055\n if (!chart.styledMode) {\n halo.attr(extend({\n 'fill': point.color || series.color,\n 'fill-opacity': haloOptions.opacity\n }, AST.filterUserAttributes(haloOptions.attributes || {})));\n }\n }\n else if (halo && halo.point && halo.point.haloPath) {\n // Animate back to 0 on the current halo point (#6055)\n halo.animate({ d: halo.point.haloPath(0) }, null, \n // Hide after unhovering. The `complete` callback runs in the\n // halo's context (#7681).\n halo.hide);\n }\n fireEvent(point, 'afterSetState', { state: state });\n };\n /**\n * Get the path definition for the halo, which is usually a shadow-like\n * circle around the currently hovered point.\n *\n * @function Highcharts.Point#haloPath\n *\n * @param {number} size\n * The radius of the circular halo.\n *\n * @return {Highcharts.SVGPathArray}\n * The path definition.\n */\n Point.prototype.haloPath = function (size) {\n var series = this.series,\n chart = series.chart;\n return chart.renderer.symbols.circle(Math.floor(this.plotX) - size, this.plotY - size, size * 2, size * 2);\n };\n return Point;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Function callback when a series point is clicked. Return false to cancel the\n * action.\n *\n * @callback Highcharts.PointClickCallbackFunction\n *\n * @param {Highcharts.Point} this\n * The point where the event occured.\n *\n * @param {Highcharts.PointClickEventObject} event\n * Event arguments.\n */\n /**\n * Common information for a click event on a series point.\n *\n * @interface Highcharts.PointClickEventObject\n * @extends Highcharts.PointerEventObject\n */ /**\n * Clicked point.\n * @name Highcharts.PointClickEventObject#point\n * @type {Highcharts.Point}\n */\n /**\n * Configuration hash for the data label and tooltip formatters.\n *\n * @interface Highcharts.PointLabelObject\n */ /**\n * The point's current color.\n * @name Highcharts.PointLabelObject#color\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * The point's current color index, used in styled mode instead of `color`. The\n * color index is inserted in class names used for styling.\n * @name Highcharts.PointLabelObject#colorIndex\n * @type {number}\n */ /**\n * The name of the related point.\n * @name Highcharts.PointLabelObject#key\n * @type {string|undefined}\n */ /**\n * The percentage for related points in a stacked series or pies.\n * @name Highcharts.PointLabelObject#percentage\n * @type {number}\n */ /**\n * The related point. The point name, if defined, is available through\n * `this.point.name`.\n * @name Highcharts.PointLabelObject#point\n * @type {Highcharts.Point}\n */ /**\n * The related series. The series name is available through `this.series.name`.\n * @name Highcharts.PointLabelObject#series\n * @type {Highcharts.Series}\n */ /**\n * The total of values in either a stack for stacked series, or a pie in a pie\n * series.\n * @name Highcharts.PointLabelObject#total\n * @type {number|undefined}\n */ /**\n * For categorized axes this property holds the category name for the point. For\n * other axes it holds the X value.\n * @name Highcharts.PointLabelObject#x\n * @type {number|string|undefined}\n */ /**\n * The y value of the point.\n * @name Highcharts.PointLabelObject#y\n * @type {number|undefined}\n */\n /**\n * Gets fired when the mouse leaves the area close to the point.\n *\n * @callback Highcharts.PointMouseOutCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Gets fired when the mouse enters the area close to the point.\n *\n * @callback Highcharts.PointMouseOverCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * The generic point options for all series.\n *\n * In TypeScript you have to extend `PointOptionsObject` with an additional\n * declaration to allow custom data options:\n *\n * ```\n * declare interface PointOptionsObject {\n * customProperty: string;\n * }\n * ```\n *\n * @interface Highcharts.PointOptionsObject\n */\n /**\n * Possible option types for a data point. Use `null` to indicate a gap.\n *\n * @typedef {number|string|Highcharts.PointOptionsObject|Array<(number|string|null)>|null} Highcharts.PointOptionsType\n */\n /**\n * Gets fired when the point is removed using the `.remove()` method.\n *\n * @callback Highcharts.PointRemoveCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * Possible key values for the point state options.\n *\n * @typedef {\"hover\"|\"inactive\"|\"normal\"|\"select\"} Highcharts.PointStateValue\n */\n /**\n * Gets fired when the point is updated programmatically through the `.update()`\n * method.\n *\n * @callback Highcharts.PointUpdateCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointUpdateEventObject} event\n * Event that occured.\n */\n /**\n * Information about the update event.\n *\n * @interface Highcharts.PointUpdateEventObject\n * @extends global.Event\n */ /**\n * Options data of the update event.\n * @name Highcharts.PointUpdateEventObject#options\n * @type {Highcharts.PointOptionsType}\n */\n /**\n * @interface Highcharts.PointEventsOptionsObject\n */ /**\n * Fires when the point is selected either programmatically or following a click\n * on the point. One parameter, `event`, is passed to the function. Returning\n * `false` cancels the operation.\n * @name Highcharts.PointEventsOptionsObject#select\n * @type {Highcharts.PointSelectCallbackFunction|undefined}\n */ /**\n * Fires when the point is unselected either programmatically or following a\n * click on the point. One parameter, `event`, is passed to the function.\n * Returning `false` cancels the operation.\n * @name Highcharts.PointEventsOptionsObject#unselect\n * @type {Highcharts.PointUnselectCallbackFunction|undefined}\n */\n /**\n * Information about the select/unselect event.\n *\n * @interface Highcharts.PointInteractionEventObject\n * @extends global.Event\n */ /**\n * @name Highcharts.PointInteractionEventObject#accumulate\n * @type {boolean}\n */\n /**\n * Gets fired when the point is selected either programmatically or following a\n * click on the point.\n *\n * @callback Highcharts.PointSelectCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointInteractionEventObject} event\n * Event that occured.\n */\n /**\n * Fires when the point is unselected either programmatically or following a\n * click on the point.\n *\n * @callback Highcharts.PointUnselectCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointInteractionEventObject} event\n * Event that occured.\n */\n ''; // keeps doclets above in JS file.\n\n return Point;\n });\n _registerModule(_modules, 'Core/Pointer.js', [_modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Tooltip.js'], _modules['Core/Utilities.js']], function (Color, H, Tooltip, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var charts = H.charts,\n noop = H.noop;\n var addEvent = U.addEvent,\n attr = U.attr,\n css = U.css,\n defined = U.defined,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n isObject = U.isObject,\n objectEach = U.objectEach,\n offset = U.offset,\n pick = U.pick,\n splat = U.splat;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The mouse and touch tracker object. Each {@link Chart} item has one\n * assosiated Pointer item that can be accessed from the {@link Chart.pointer}\n * property.\n *\n * @class\n * @name Highcharts.Pointer\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.Options} options\n * The root options object. The pointer uses options from the chart and tooltip\n * structures.\n */\n var Pointer = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Pointer(chart, options) {\n this.lastValidTouch = {};\n this.pinchDown = [];\n this.runChartClick = false;\n this.eventsToUnbind = [];\n this.chart = chart;\n this.hasDragged = false;\n this.options = options;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set inactive state to all series that are not currently hovered,\n * or, if `inactiveOtherPoints` is set to true, set inactive state to\n * all points within that series.\n *\n * @private\n * @function Highcharts.Pointer#applyInactiveState\n *\n * @param {Array<Highcharts.Point>} points\n * Currently hovered points\n */\n Pointer.prototype.applyInactiveState = function (points) {\n var activeSeries = [],\n series;\n // Get all active series from the hovered points\n (points || []).forEach(function (item) {\n series = item.series;\n // Include itself\n activeSeries.push(series);\n // Include parent series\n if (series.linkedParent) {\n activeSeries.push(series.linkedParent);\n }\n // Include all child series\n if (series.linkedSeries) {\n activeSeries = activeSeries.concat(series.linkedSeries);\n }\n // Include navigator series\n if (series.navigatorSeries) {\n activeSeries.push(series.navigatorSeries);\n }\n });\n // Now loop over all series, filtering out active series\n this.chart.series.forEach(function (inactiveSeries) {\n if (activeSeries.indexOf(inactiveSeries) === -1) {\n // Inactive series\n inactiveSeries.setState('inactive', true);\n }\n else if (inactiveSeries.options.inactiveOtherPoints) {\n // Active series, but other points should be inactivated\n inactiveSeries.setAllPointsToState('inactive');\n }\n });\n };\n /**\n * Destroys the Pointer object and disconnects DOM events.\n *\n * @function Highcharts.Pointer#destroy\n */\n Pointer.prototype.destroy = function () {\n var pointer = this;\n this.eventsToUnbind.forEach(function (unbind) { return unbind(); });\n this.eventsToUnbind = [];\n if (!H.chartCount) {\n if (Pointer.unbindDocumentMouseUp) {\n Pointer.unbindDocumentMouseUp = Pointer.unbindDocumentMouseUp();\n }\n if (Pointer.unbindDocumentTouchEnd) {\n Pointer.unbindDocumentTouchEnd = (Pointer.unbindDocumentTouchEnd());\n }\n }\n // memory and CPU leak\n clearInterval(pointer.tooltipTimeout);\n objectEach(pointer, function (_val, prop) {\n pointer[prop] = void 0;\n });\n };\n /**\n * Perform a drag operation in response to a mousemove event while the mouse\n * is down.\n * @private\n * @function Highcharts.Pointer#drag\n */\n Pointer.prototype.drag = function (e) {\n var chart = this.chart,\n chartOptions = chart.options.chart,\n zoomHor = this.zoomHor,\n zoomVert = this.zoomVert,\n plotLeft = chart.plotLeft,\n plotTop = chart.plotTop,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n mouseDownX = (this.mouseDownX || 0),\n mouseDownY = (this.mouseDownY || 0),\n panningEnabled = isObject(chartOptions.panning) ?\n chartOptions.panning && chartOptions.panning.enabled :\n chartOptions.panning,\n panKey = (chartOptions.panKey && e[chartOptions.panKey + 'Key']);\n var chartX = e.chartX,\n chartY = e.chartY,\n clickedInside,\n size,\n selectionMarker = this.selectionMarker;\n // If the device supports both touch and mouse (like IE11), and we are\n // touch-dragging inside the plot area, don't handle the mouse event.\n // #4339.\n if (selectionMarker && selectionMarker.touch) {\n return;\n }\n // If the mouse is outside the plot area, adjust to cooordinates\n // inside to prevent the selection marker from going outside\n if (chartX < plotLeft) {\n chartX = plotLeft;\n }\n else if (chartX > plotLeft + plotWidth) {\n chartX = plotLeft + plotWidth;\n }\n if (chartY < plotTop) {\n chartY = plotTop;\n }\n else if (chartY > plotTop + plotHeight) {\n chartY = plotTop + plotHeight;\n }\n // determine if the mouse has moved more than 10px\n this.hasDragged = Math.sqrt(Math.pow(mouseDownX - chartX, 2) +\n Math.pow(mouseDownY - chartY, 2));\n if (this.hasDragged > 10) {\n clickedInside = chart.isInsidePlot(mouseDownX - plotLeft, mouseDownY - plotTop, {\n visiblePlotOnly: true\n });\n // make a selection\n if ((chart.hasCartesianSeries || chart.mapView) &&\n (this.zoomX || this.zoomY) &&\n clickedInside &&\n !panKey) {\n if (!selectionMarker) {\n this.selectionMarker = selectionMarker =\n chart.renderer.rect(plotLeft, plotTop, zoomHor ? 1 : plotWidth, zoomVert ? 1 : plotHeight, 0)\n .attr({\n 'class': 'highcharts-selection-marker',\n zIndex: 7\n })\n .add();\n if (!chart.styledMode) {\n selectionMarker.attr({\n fill: (chartOptions.selectionMarkerFill ||\n color(\"#335cad\" /* highlightColor80 */)\n .setOpacity(0.25).get())\n });\n }\n }\n }\n // adjust the width of the selection marker\n if (selectionMarker && zoomHor) {\n size = chartX - mouseDownX;\n selectionMarker.attr({\n width: Math.abs(size),\n x: (size > 0 ? 0 : size) + mouseDownX\n });\n }\n // adjust the height of the selection marker\n if (selectionMarker && zoomVert) {\n size = chartY - mouseDownY;\n selectionMarker.attr({\n height: Math.abs(size),\n y: (size > 0 ? 0 : size) + mouseDownY\n });\n }\n // panning\n if (clickedInside &&\n !selectionMarker &&\n panningEnabled) {\n chart.pan(e, chartOptions.panning);\n }\n }\n };\n /**\n * Start a drag operation.\n * @private\n * @function Highcharts.Pointer#dragStart\n */\n Pointer.prototype.dragStart = function (e) {\n var chart = this.chart;\n // Record the start position\n chart.mouseIsDown = e.type;\n chart.cancelClick = false;\n chart.mouseDownX = this.mouseDownX = e.chartX;\n chart.mouseDownY = this.mouseDownY = e.chartY;\n };\n /**\n * On mouse up or touch end across the entire document, drop the selection.\n * @private\n * @function Highcharts.Pointer#drop\n */\n Pointer.prototype.drop = function (e) {\n var pointer = this,\n chart = this.chart,\n hasPinched = this.hasPinched;\n if (this.selectionMarker) {\n var selectionBox = this.selectionMarker, x_1 = selectionBox.attr ? selectionBox.attr('x') : selectionBox.x, y_1 = selectionBox.attr ? selectionBox.attr('y') : selectionBox.y, width_1 = selectionBox.attr ?\n selectionBox.attr('width') :\n selectionBox.width, height_1 = selectionBox.attr ?\n selectionBox.attr('height') :\n selectionBox.height, selectionData_1 = {\n originalEvent: e,\n xAxis: [],\n yAxis: [],\n x: x_1,\n y: y_1,\n width: width_1,\n height: height_1\n }, \n // Start by false runZoom, unless when we have a mapView, in\n // which case the zoom will be handled in the selection event.\n runZoom_1 = Boolean(chart.mapView);\n // a selection has been made\n if (this.hasDragged || hasPinched) {\n // record each axis' min and max\n chart.axes.forEach(function (axis) {\n if (axis.zoomEnabled &&\n defined(axis.min) &&\n (hasPinched ||\n pointer[{\n xAxis: 'zoomX',\n yAxis: 'zoomY'\n }[axis.coll]]) &&\n isNumber(x_1) &&\n isNumber(y_1)) { // #859, #3569\n var horiz = axis.horiz,\n minPixelPadding = e.type === 'touchend' ?\n axis.minPixelPadding :\n 0, // #1207, #3075\n selectionMin = axis.toValue((horiz ? x_1 : y_1) + minPixelPadding),\n selectionMax = axis.toValue((horiz ? x_1 + width_1 : y_1 + height_1) -\n minPixelPadding);\n selectionData_1[axis.coll].push({\n axis: axis,\n // Min/max for reversed axes\n min: Math.min(selectionMin, selectionMax),\n max: Math.max(selectionMin, selectionMax)\n });\n runZoom_1 = true;\n }\n });\n if (runZoom_1) {\n fireEvent(chart, 'selection', selectionData_1, function (args) {\n chart.zoom(extend(args, hasPinched ?\n { animation: false } :\n null));\n });\n }\n }\n if (isNumber(chart.index)) {\n this.selectionMarker = this.selectionMarker.destroy();\n }\n // Reset scaling preview\n if (hasPinched) {\n this.scaleGroups();\n }\n }\n // Reset all. Check isNumber because it may be destroyed on mouse up\n // (#877)\n if (chart && isNumber(chart.index)) {\n css(chart.container, { cursor: chart._cursor });\n chart.cancelClick = this.hasDragged > 10; // #370\n chart.mouseIsDown = this.hasDragged = this.hasPinched = false;\n this.pinchDown = [];\n }\n };\n /**\n * Finds the closest point to a set of coordinates, using the k-d-tree\n * algorithm.\n *\n * @function Highcharts.Pointer#findNearestKDPoint\n *\n * @param {Array<Highcharts.Series>} series\n * All the series to search in.\n *\n * @param {boolean|undefined} shared\n * Whether it is a shared tooltip or not.\n *\n * @param {Highcharts.PointerEventObject} e\n * The pointer event object, containing chart coordinates of the pointer.\n *\n * @return {Highcharts.Point|undefined}\n * The point closest to given coordinates.\n */\n Pointer.prototype.findNearestKDPoint = function (series, shared, e) {\n var chart = this.chart;\n var hoverPoint = chart.hoverPoint;\n var tooltip = chart.tooltip;\n if (hoverPoint &&\n tooltip &&\n tooltip.isStickyOnContact()) {\n return hoverPoint;\n }\n var closest;\n /** @private */\n function sort(p1, p2) {\n var isCloserX = p1.distX - p2.distX,\n isCloser = p1.dist - p2.dist,\n isAbove = ((p2.series.group && p2.series.group.zIndex) -\n (p1.series.group && p1.series.group.zIndex));\n var result;\n // We have two points which are not in the same place on xAxis\n // and shared tooltip:\n if (isCloserX !== 0 && shared) { // #5721\n result = isCloserX;\n // Points are not exactly in the same place on x/yAxis:\n }\n else if (isCloser !== 0) {\n result = isCloser;\n // The same xAxis and yAxis position, sort by z-index:\n }\n else if (isAbove !== 0) {\n result = isAbove;\n // The same zIndex, sort by array index:\n }\n else {\n result =\n p1.series.index > p2.series.index ?\n -1 :\n 1;\n }\n return result;\n }\n series.forEach(function (s) {\n var noSharedTooltip = s.noSharedTooltip && shared,\n compareX = (!noSharedTooltip &&\n s.options.findNearestPointBy.indexOf('y') < 0),\n point = s.searchPoint(e,\n compareX);\n if ( // Check that we actually found a point on the series.\n isObject(point, true) && point.series &&\n // Use the new point if it is closer.\n (!isObject(closest, true) ||\n (sort(closest, point) > 0))) {\n closest = point;\n }\n });\n return closest;\n };\n /**\n * @private\n * @function Highcharts.Pointer#getChartCoordinatesFromPoint\n */\n Pointer.prototype.getChartCoordinatesFromPoint = function (point, inverted) {\n var series = point.series,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n shapeArgs = point.shapeArgs;\n if (xAxis && yAxis) {\n var x = pick(point.clientX,\n point.plotX);\n var y = point.plotY || 0;\n if (point.isNode &&\n shapeArgs &&\n isNumber(shapeArgs.x) &&\n isNumber(shapeArgs.y)) {\n x = shapeArgs.x;\n y = shapeArgs.y;\n }\n return inverted ? {\n chartX: yAxis.len + yAxis.pos - y,\n chartY: xAxis.len + xAxis.pos - x\n } : {\n chartX: x + xAxis.pos,\n chartY: y + yAxis.pos\n };\n }\n if (shapeArgs && shapeArgs.x && shapeArgs.y) {\n // E.g. pies do not have axes\n return {\n chartX: shapeArgs.x,\n chartY: shapeArgs.y\n };\n }\n };\n /**\n * Return the cached chartPosition if it is available on the Pointer,\n * otherwise find it. Running offset is quite expensive, so it should be\n * avoided when we know the chart hasn't moved.\n *\n * @function Highcharts.Pointer#getChartPosition\n *\n * @return {Highcharts.ChartPositionObject}\n * The offset of the chart container within the page\n */\n Pointer.prototype.getChartPosition = function () {\n if (this.chartPosition) {\n return this.chartPosition;\n }\n var container = this.chart.container;\n var pos = offset(container);\n this.chartPosition = {\n left: pos.left,\n top: pos.top,\n scaleX: 1,\n scaleY: 1\n };\n var offsetWidth = container.offsetWidth;\n var offsetHeight = container.offsetHeight;\n // #13342 - tooltip was not visible in Chrome, when chart\n // updates height.\n if (offsetWidth > 2 && // #13342\n offsetHeight > 2 // #13342\n ) {\n this.chartPosition.scaleX = pos.width / offsetWidth;\n this.chartPosition.scaleY = pos.height / offsetHeight;\n }\n return this.chartPosition;\n };\n /**\n * Get the click position in terms of axis values.\n *\n * @function Highcharts.Pointer#getCoordinates\n *\n * @param {Highcharts.PointerEventObject} e\n * Pointer event, extended with `chartX` and `chartY` properties.\n *\n * @return {Highcharts.PointerAxisCoordinatesObject}\n * Axis coordinates.\n */\n Pointer.prototype.getCoordinates = function (e) {\n var coordinates = {\n xAxis: [],\n yAxis: []\n };\n this.chart.axes.forEach(function (axis) {\n coordinates[axis.isXAxis ? 'xAxis' : 'yAxis'].push({\n axis: axis,\n value: axis.toValue(e[axis.horiz ? 'chartX' : 'chartY'])\n });\n });\n return coordinates;\n };\n /**\n * Calculates what is the current hovered point/points and series.\n *\n * @private\n * @function Highcharts.Pointer#getHoverData\n *\n * @param {Highcharts.Point|undefined} existingHoverPoint\n * The point currrently beeing hovered.\n *\n * @param {Highcharts.Series|undefined} existingHoverSeries\n * The series currently beeing hovered.\n *\n * @param {Array<Highcharts.Series>} series\n * All the series in the chart.\n *\n * @param {boolean} isDirectTouch\n * Is the pointer directly hovering the point.\n *\n * @param {boolean|undefined} shared\n * Whether it is a shared tooltip or not.\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The triggering event, containing chart coordinates of the pointer.\n *\n * @return {Object}\n * Object containing resulting hover data: hoverPoint, hoverSeries, and\n * hoverPoints.\n */\n Pointer.prototype.getHoverData = function (existingHoverPoint, existingHoverSeries, series, isDirectTouch, shared, e) {\n var hoverPoints = [],\n useExisting = !!(isDirectTouch && existingHoverPoint),\n filter = function (s) {\n return (s.visible &&\n !(!shared && s.directTouch) && // #3821\n pick(s.options.enableMouseTracking,\n true));\n };\n var hoverSeries = existingHoverSeries, \n // Which series to look in for the hover point\n searchSeries, \n // Parameters needed for beforeGetHoverData event.\n eventArgs = {\n chartX: e ? e.chartX : void 0,\n chartY: e ? e.chartY : void 0,\n shared: shared\n };\n // Find chart.hoverPane and update filter method in polar.\n fireEvent(this, 'beforeGetHoverData', eventArgs);\n var notSticky = hoverSeries && !hoverSeries.stickyTracking;\n searchSeries = notSticky ?\n // Only search on hovered series if it has stickyTracking false\n [hoverSeries] :\n // Filter what series to look in.\n series.filter(function (s) {\n return eventArgs.filter ? eventArgs.filter(s) : filter(s) &&\n s.stickyTracking;\n });\n // Use existing hovered point or find the one closest to coordinates.\n var hoverPoint = useExisting || !e ?\n existingHoverPoint :\n this.findNearestKDPoint(searchSeries,\n shared,\n e);\n // Assign hover series\n hoverSeries = hoverPoint && hoverPoint.series;\n // If we have a hoverPoint, assign hoverPoints.\n if (hoverPoint) {\n // When tooltip is shared, it displays more than one point\n if (shared && !hoverSeries.noSharedTooltip) {\n searchSeries = series.filter(function (s) {\n return eventArgs.filter ?\n eventArgs.filter(s) : filter(s) && !s.noSharedTooltip;\n });\n // Get all points with the same x value as the hoverPoint\n searchSeries.forEach(function (s) {\n var point = find(s.points,\n function (p) {\n return p.x === hoverPoint.x && !p.isNull;\n });\n if (isObject(point)) {\n /*\n * Boost returns a minimal point. Convert it to a usable\n * point for tooltip and states.\n */\n if (s.chart.isBoosting) {\n point = s.getPoint(point);\n }\n hoverPoints.push(point);\n }\n });\n }\n else {\n hoverPoints.push(hoverPoint);\n }\n }\n // Check whether the hoverPoint is inside pane we are hovering over.\n eventArgs = { hoverPoint: hoverPoint };\n fireEvent(this, 'afterGetHoverData', eventArgs);\n return {\n hoverPoint: eventArgs.hoverPoint,\n hoverSeries: hoverSeries,\n hoverPoints: hoverPoints\n };\n };\n /**\n * @private\n * @function Highcharts.Pointer#getPointFromEvent\n */\n Pointer.prototype.getPointFromEvent = function (e) {\n var target = e.target,\n point;\n while (target && !point) {\n point = target.point;\n target = target.parentNode;\n }\n return point;\n };\n /**\n * @private\n * @function Highcharts.Pointer#onTrackerMouseOut\n */\n Pointer.prototype.onTrackerMouseOut = function (e) {\n var chart = this.chart;\n var relatedTarget = e.relatedTarget || e.toElement;\n var series = chart.hoverSeries;\n this.isDirectTouch = false;\n if (series &&\n relatedTarget &&\n !series.stickyTracking &&\n !this.inClass(relatedTarget, 'highcharts-tooltip') &&\n (!this.inClass(relatedTarget, 'highcharts-series-' + series.index) || // #2499, #4465, #5553\n !this.inClass(relatedTarget, 'highcharts-tracker'))) {\n series.onMouseOut();\n }\n };\n /**\n * Utility to detect whether an element has, or has a parent with, a\n * specificclass name. Used on detection of tracker objects and on deciding\n * whether hovering the tooltip should cause the active series to mouse out.\n *\n * @function Highcharts.Pointer#inClass\n *\n * @param {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement} element\n * The element to investigate.\n *\n * @param {string} className\n * The class name to look for.\n *\n * @return {boolean|undefined}\n * True if either the element or one of its parents has the given class\n * name.\n */\n Pointer.prototype.inClass = function (element, className) {\n var elemClassName;\n while (element) {\n elemClassName = attr(element, 'class');\n if (elemClassName) {\n if (elemClassName.indexOf(className) !== -1) {\n return true;\n }\n if (elemClassName.indexOf('highcharts-container') !== -1) {\n return false;\n }\n }\n element = element.parentNode;\n }\n };\n /**\n * Initialize the Pointer.\n *\n * @private\n * @function Highcharts.Pointer#init\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance.\n *\n * @param {Highcharts.Options} options\n * The root options object. The pointer uses options from the chart and\n * tooltip structures.\n */\n Pointer.prototype.init = function (chart, options) {\n // Store references\n this.options = options;\n this.chart = chart;\n // Do we need to handle click on a touch device?\n this.runChartClick = Boolean(options.chart.events && options.chart.events.click);\n this.pinchDown = [];\n this.lastValidTouch = {};\n if (Tooltip) {\n /**\n * Tooltip object for points of series.\n *\n * @name Highcharts.Chart#tooltip\n * @type {Highcharts.Tooltip}\n */\n chart.tooltip = new Tooltip(chart, options.tooltip);\n this.followTouchMove = pick(options.tooltip.followTouchMove, true);\n }\n this.setDOMEvents();\n };\n /**\n * Takes a browser event object and extends it with custom Highcharts\n * properties `chartX` and `chartY` in order to work on the internal\n * coordinate system.\n *\n * @function Highcharts.Pointer#normalize\n *\n * @param {global.MouseEvent|global.PointerEvent|global.TouchEvent} e\n * Event object in standard browsers.\n *\n * @param {Highcharts.OffsetObject} [chartPosition]\n * Additional chart offset.\n *\n * @return {Highcharts.PointerEventObject}\n * A browser event with extended properties `chartX` and `chartY`.\n */\n Pointer.prototype.normalize = function (e, chartPosition) {\n var touches = e.touches;\n // iOS (#2757)\n var ePos = (touches ?\n touches.length ?\n touches.item(0) :\n (pick(// #13534\n touches.changedTouches,\n e.changedTouches))[0] :\n e);\n // Get mouse position\n if (!chartPosition) {\n chartPosition = this.getChartPosition();\n }\n var chartX = ePos.pageX - chartPosition.left,\n chartY = ePos.pageY - chartPosition.top;\n // #11329 - when there is scaling on a parent element, we need to take\n // this into account\n chartX /= chartPosition.scaleX;\n chartY /= chartPosition.scaleY;\n return extend(e, {\n chartX: Math.round(chartX),\n chartY: Math.round(chartY)\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerClick\n */\n Pointer.prototype.onContainerClick = function (e) {\n var chart = this.chart;\n var hoverPoint = chart.hoverPoint;\n var pEvt = this.normalize(e);\n var plotLeft = chart.plotLeft;\n var plotTop = chart.plotTop;\n if (!chart.cancelClick) {\n // On tracker click, fire the series and point events. #783, #1583\n if (hoverPoint &&\n this.inClass(pEvt.target, 'highcharts-tracker')) {\n // the series click event\n fireEvent(hoverPoint.series, 'click', extend(pEvt, {\n point: hoverPoint\n }));\n // the point click event\n if (chart.hoverPoint) { // it may be destroyed (#1844)\n hoverPoint.firePointEvent('click', pEvt);\n }\n // When clicking outside a tracker, fire a chart event\n }\n else {\n extend(pEvt, this.getCoordinates(pEvt));\n // fire a click event in the chart\n if (chart.isInsidePlot(pEvt.chartX - plotLeft, pEvt.chartY - plotTop, {\n visiblePlotOnly: true\n })) {\n fireEvent(chart, 'click', pEvt);\n }\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerMouseDown\n */\n Pointer.prototype.onContainerMouseDown = function (e) {\n var isPrimaryButton = ((e.buttons || e.button) & 1) === 1;\n // Normalize before the 'if' for the legacy IE (#7850)\n e = this.normalize(e);\n // #11635, Firefox does not reliable fire move event after click scroll\n if (H.isFirefox &&\n e.button !== 0) {\n this.onContainerMouseMove(e);\n }\n // #11635, limiting to primary button (incl. IE 8 support)\n if (typeof e.button === 'undefined' ||\n isPrimaryButton) {\n this.zoomOption(e);\n // #295, #13737 solve conflict between container drag and chart zoom\n if (isPrimaryButton &&\n e.preventDefault) {\n e.preventDefault();\n }\n this.dragStart(e);\n }\n };\n /**\n * When mouse leaves the container, hide the tooltip.\n * @private\n * @function Highcharts.Pointer#onContainerMouseLeave\n */\n Pointer.prototype.onContainerMouseLeave = function (e) {\n var chart = charts[pick(Pointer.hoverChartIndex, -1)];\n var tooltip = this.chart.tooltip;\n // #14434: tooltip.options.outside\n if (tooltip && tooltip.shouldStickOnContact() && this.inClass(e.relatedTarget, 'highcharts-tooltip-container')) {\n return;\n }\n e = this.normalize(e);\n // #4886, MS Touch end fires mouseleave but with no related target\n if (chart &&\n (e.relatedTarget || e.toElement)) {\n chart.pointer.reset();\n // Also reset the chart position, used in #149 fix\n chart.pointer.chartPosition = void 0;\n }\n // #11635, Firefox wheel scroll does not fire out events consistently\n if (tooltip && !tooltip.isHidden) {\n this.reset();\n }\n };\n /**\n * When mouse enters the container, delete pointer's chartPosition.\n * @private\n * @function Highcharts.Pointer#onContainerMouseEnter\n */\n Pointer.prototype.onContainerMouseEnter = function (e) {\n delete this.chartPosition;\n };\n /**\n * The mousemove, touchmove and touchstart event handler\n * @private\n * @function Highcharts.Pointer#onContainerMouseMove\n */\n Pointer.prototype.onContainerMouseMove = function (e) {\n var chart = this.chart;\n var pEvt = this.normalize(e);\n this.setHoverChartIndex();\n // In IE8 we apparently need this returnValue set to false in order to\n // avoid text being selected. But in Chrome, e.returnValue is prevented,\n // plus we don't need to run e.preventDefault to prevent selected text\n // in modern browsers. So we set it conditionally. Remove it when IE8 is\n // no longer needed. #2251, #3224.\n if (!pEvt.preventDefault) {\n pEvt.returnValue = false;\n }\n if (chart.mouseIsDown === 'mousedown' || this.touchSelect(pEvt)) {\n this.drag(pEvt);\n }\n // Show the tooltip and run mouse over events (#977)\n if (!chart.openMenu &&\n (this.inClass(pEvt.target, 'highcharts-tracker') ||\n chart.isInsidePlot(pEvt.chartX - chart.plotLeft, pEvt.chartY - chart.plotTop, {\n visiblePlotOnly: true\n }))) {\n if (this.inClass(pEvt.target, 'highcharts-no-tooltip')) {\n this.reset(false, 0);\n }\n else {\n this.runPointActions(pEvt);\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentTouchEnd\n */\n Pointer.prototype.onDocumentTouchEnd = function (e) {\n var hoverChart = charts[pick(Pointer.hoverChartIndex, -1)];\n if (hoverChart) {\n hoverChart.pointer.drop(e);\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerTouchMove\n */\n Pointer.prototype.onContainerTouchMove = function (e) {\n if (this.touchSelect(e)) {\n this.onContainerMouseMove(e);\n }\n else {\n this.touch(e);\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerTouchStart\n */\n Pointer.prototype.onContainerTouchStart = function (e) {\n if (this.touchSelect(e)) {\n this.onContainerMouseDown(e);\n }\n else {\n this.zoomOption(e);\n this.touch(e, true);\n }\n };\n /**\n * Special handler for mouse move that will hide the tooltip when the mouse\n * leaves the plotarea. Issue #149 workaround. The mouseleave event does not\n * always fire.\n * @private\n * @function Highcharts.Pointer#onDocumentMouseMove\n */\n Pointer.prototype.onDocumentMouseMove = function (e) {\n var chart = this.chart;\n var chartPosition = this.chartPosition;\n var pEvt = this.normalize(e,\n chartPosition);\n var tooltip = chart.tooltip;\n // If we're outside, hide the tooltip\n if (chartPosition &&\n (!tooltip ||\n !tooltip.isStickyOnContact()) &&\n !chart.isInsidePlot(pEvt.chartX - chart.plotLeft, pEvt.chartY - chart.plotTop, {\n visiblePlotOnly: true\n }) &&\n !this.inClass(pEvt.target, 'highcharts-tracker')) {\n this.reset();\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentMouseUp\n */\n Pointer.prototype.onDocumentMouseUp = function (e) {\n var chart = charts[pick(Pointer.hoverChartIndex, -1)];\n if (chart) {\n chart.pointer.drop(e);\n }\n };\n /**\n * Handle touch events with two touches\n * @private\n * @function Highcharts.Pointer#pinch\n */\n Pointer.prototype.pinch = function (e) {\n var self = this,\n chart = self.chart,\n pinchDown = self.pinchDown,\n touches = (e.touches || []),\n touchesLength = touches.length,\n lastValidTouch = self.lastValidTouch,\n hasZoom = self.hasZoom,\n transform = {},\n fireClickEvent = touchesLength === 1 && ((self.inClass(e.target, 'highcharts-tracker') &&\n chart.runTrackerClick) ||\n self.runChartClick),\n clip = {};\n var selectionMarker = self.selectionMarker;\n // Don't initiate panning until the user has pinched. This prevents us\n // from blocking page scrolling as users scroll down a long page\n // (#4210).\n if (touchesLength > 1) {\n self.initiated = true;\n }\n else if (touchesLength === 1 && this.followTouchMove) {\n // #16119: Prevent blocking scroll when single-finger panning is\n // not enabled\n self.initiated = false;\n }\n // On touch devices, only proceed to trigger click if a handler is\n // defined\n if (hasZoom &&\n self.initiated &&\n !fireClickEvent &&\n e.cancelable !== false) {\n e.preventDefault();\n }\n // Normalize each touch\n [].map.call(touches, function (e) {\n return self.normalize(e);\n });\n // Register the touch start position\n if (e.type === 'touchstart') {\n [].forEach.call(touches, function (e, i) {\n pinchDown[i] = { chartX: e.chartX, chartY: e.chartY };\n });\n lastValidTouch.x = [pinchDown[0].chartX, pinchDown[1] &&\n pinchDown[1].chartX];\n lastValidTouch.y = [pinchDown[0].chartY, pinchDown[1] &&\n pinchDown[1].chartY];\n // Identify the data bounds in pixels\n chart.axes.forEach(function (axis) {\n if (axis.zoomEnabled) {\n var bounds = chart.bounds[axis.horiz ? 'h' : 'v'],\n minPixelPadding = axis.minPixelPadding,\n min = axis.toPixels(Math.min(pick(axis.options.min,\n axis.dataMin),\n axis.dataMin)),\n max = axis.toPixels(Math.max(pick(axis.options.max,\n axis.dataMax),\n axis.dataMax)),\n absMin = Math.min(min,\n max),\n absMax = Math.max(min,\n max);\n // Store the bounds for use in the touchmove handler\n bounds.min = Math.min(axis.pos, absMin - minPixelPadding);\n bounds.max = Math.max(axis.pos + axis.len, absMax + minPixelPadding);\n }\n });\n self.res = true; // reset on next move\n // Optionally move the tooltip on touchmove\n }\n else if (self.followTouchMove && touchesLength === 1) {\n this.runPointActions(self.normalize(e));\n // Event type is touchmove, handle panning and pinching\n }\n else if (pinchDown.length) { // can be 0 when releasing, if touchend\n // fires first\n fireEvent(chart, 'touchpan', { originalEvent: e }, function () {\n // Set the marker\n if (!selectionMarker) {\n // @todo It's a mock object, so maybe we need a separate\n // interface\n self.selectionMarker = selectionMarker = extend({\n destroy: noop,\n touch: true\n }, chart.plotBox);\n }\n self.pinchTranslate(pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n self.hasPinched = hasZoom;\n // Scale and translate the groups to provide visual feedback\n // during pinching\n self.scaleGroups(transform, clip);\n });\n if (self.res) {\n self.res = false;\n this.reset(false, 0);\n }\n }\n };\n /**\n * Run translation operations\n * @private\n * @function Highcharts.Pointer#pinchTranslate\n */\n Pointer.prototype.pinchTranslate = function (pinchDown, touches, transform, selectionMarker, clip, lastValidTouch) {\n if (this.zoomHor) {\n this.pinchTranslateDirection(true, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n }\n if (this.zoomVert) {\n this.pinchTranslateDirection(false, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n }\n };\n /**\n * Run translation operations for each direction (horizontal and vertical)\n * independently.\n * @private\n * @function Highcharts.Pointer#pinchTranslateDirection\n */\n Pointer.prototype.pinchTranslateDirection = function (horiz, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch, forcedScale) {\n var chart = this.chart, xy = horiz ? 'x' : 'y', XY = horiz ? 'X' : 'Y', sChartXY = ('chart' + XY), wh = horiz ? 'width' : 'height', plotLeftTop = chart['plot' + (horiz ? 'Left' : 'Top')], inverted = chart.inverted, bounds = chart.bounds[horiz ? 'h' : 'v'], singleTouch = pinchDown.length === 1, touch0Start = pinchDown[0][sChartXY], touch1Start = !singleTouch && pinchDown[1][sChartXY], setScale = function () {\n // Don't zoom if fingers are too close on this axis\n if (typeof touch1Now === 'number' &&\n Math.abs(touch0Start - touch1Start) > 20) {\n scale = forcedScale ||\n Math.abs(touch0Now - touch1Now) /\n Math.abs(touch0Start - touch1Start);\n }\n clipXY = ((plotLeftTop - touch0Now) / scale) + touch0Start;\n selectionWH = chart['plot' + (horiz ? 'Width' : 'Height')] / scale;\n };\n var selectionWH,\n selectionXY,\n clipXY,\n scale = forcedScale || 1,\n touch0Now = touches[0][sChartXY],\n touch1Now = !singleTouch && touches[1][sChartXY],\n outOfBounds;\n // Set the scale, first pass\n setScale();\n // The clip position (x or y) is altered if out of bounds, the selection\n // position is not\n selectionXY = clipXY;\n // Out of bounds\n if (selectionXY < bounds.min) {\n selectionXY = bounds.min;\n outOfBounds = true;\n }\n else if (selectionXY + selectionWH > bounds.max) {\n selectionXY = bounds.max - selectionWH;\n outOfBounds = true;\n }\n // Is the chart dragged off its bounds, determined by dataMin and\n // dataMax?\n if (outOfBounds) {\n // Modify the touchNow position in order to create an elastic drag\n // movement. This indicates to the user that the chart is responsive\n // but can't be dragged further.\n touch0Now -= 0.8 * (touch0Now - lastValidTouch[xy][0]);\n if (typeof touch1Now === 'number') {\n touch1Now -= 0.8 * (touch1Now - lastValidTouch[xy][1]);\n }\n // Set the scale, second pass to adapt to the modified touchNow\n // positions\n setScale();\n }\n else {\n lastValidTouch[xy] = [touch0Now, touch1Now];\n }\n // Set geometry for clipping, selection and transformation\n if (!inverted) {\n clip[xy] = clipXY - plotLeftTop;\n clip[wh] = selectionWH;\n }\n var scaleKey = inverted ?\n (horiz ? 'scaleY' : 'scaleX') : 'scale' + XY;\n var transformScale = inverted ? 1 / scale : scale;\n selectionMarker[wh] = selectionWH;\n selectionMarker[xy] = selectionXY;\n transform[scaleKey] = scale;\n transform['translate' + XY] = (transformScale * plotLeftTop) +\n (touch0Now - (transformScale * touch0Start));\n };\n /**\n * Reset the tracking by hiding the tooltip, the hover series state and the\n * hover point\n *\n * @function Highcharts.Pointer#reset\n *\n * @param {boolean} [allowMove]\n * Instead of destroying the tooltip altogether, allow moving it if\n * possible.\n *\n * @param {number} [delay]\n */\n Pointer.prototype.reset = function (allowMove, delay) {\n var pointer = this,\n chart = pointer.chart,\n hoverSeries = chart.hoverSeries,\n hoverPoint = chart.hoverPoint,\n hoverPoints = chart.hoverPoints,\n tooltip = chart.tooltip,\n tooltipPoints = tooltip && tooltip.shared ?\n hoverPoints :\n hoverPoint;\n // Check if the points have moved outside the plot area (#1003, #4736,\n // #5101)\n if (allowMove && tooltipPoints) {\n splat(tooltipPoints).forEach(function (point) {\n if (point.series.isCartesian &&\n typeof point.plotX === 'undefined') {\n allowMove = false;\n }\n });\n }\n // Just move the tooltip, #349\n if (allowMove) {\n if (tooltip && tooltipPoints && splat(tooltipPoints).length) {\n tooltip.refresh(tooltipPoints);\n if (tooltip.shared && hoverPoints) { // #8284\n hoverPoints.forEach(function (point) {\n point.setState(point.state, true);\n if (point.series.isCartesian) {\n if (point.series.xAxis.crosshair) {\n point.series.xAxis\n .drawCrosshair(null, point);\n }\n if (point.series.yAxis.crosshair) {\n point.series.yAxis\n .drawCrosshair(null, point);\n }\n }\n });\n }\n else if (hoverPoint) { // #2500\n hoverPoint.setState(hoverPoint.state, true);\n chart.axes.forEach(function (axis) {\n if (axis.crosshair &&\n hoverPoint.series[axis.coll] === axis) {\n axis.drawCrosshair(null, hoverPoint);\n }\n });\n }\n }\n // Full reset\n }\n else {\n if (hoverPoint) {\n hoverPoint.onMouseOut();\n }\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n if (hoverSeries) {\n hoverSeries.onMouseOut();\n }\n if (tooltip) {\n tooltip.hide(delay);\n }\n if (pointer.unDocMouseMove) {\n pointer.unDocMouseMove = pointer.unDocMouseMove();\n }\n // Remove crosshairs\n chart.axes.forEach(function (axis) {\n axis.hideCrosshair();\n });\n pointer.hoverX = chart.hoverPoints = chart.hoverPoint = null;\n }\n };\n /**\n * With line type charts with a single tracker, get the point closest to the\n * mouse. Run Point.onMouseOver and display tooltip for the point or points.\n *\n * @private\n * @function Highcharts.Pointer#runPointActions\n *\n * @emits Highcharts.Point#event:mouseOut\n * @emits Highcharts.Point#event:mouseOver\n */\n Pointer.prototype.runPointActions = function (e, p) {\n var pointer = this,\n chart = pointer.chart,\n series = chart.series,\n tooltip = (chart.tooltip && chart.tooltip.options.enabled ?\n chart.tooltip :\n void 0),\n shared = (tooltip ?\n tooltip.shared :\n false);\n var hoverPoint = p || chart.hoverPoint,\n hoverSeries = hoverPoint && hoverPoint.series || chart.hoverSeries;\n var // onMouseOver or already hovering a series with directTouch\n isDirectTouch = (!e || e.type !== 'touchmove') && (!!p || ((hoverSeries && hoverSeries.directTouch) &&\n pointer.isDirectTouch)),\n hoverData = this.getHoverData(hoverPoint,\n hoverSeries,\n series,\n isDirectTouch,\n shared,\n e);\n // Update variables from hoverData.\n hoverPoint = hoverData.hoverPoint;\n hoverSeries = hoverData.hoverSeries;\n var points = hoverData.hoverPoints,\n followPointer = hoverSeries &&\n hoverSeries.tooltipOptions.followPointer &&\n !hoverSeries.tooltipOptions.split,\n useSharedTooltip = (shared &&\n hoverSeries &&\n !hoverSeries.noSharedTooltip);\n // Refresh tooltip for kdpoint if new hover point or tooltip was hidden\n // #3926, #4200\n if (hoverPoint &&\n // !(hoverSeries && hoverSeries.directTouch) &&\n (hoverPoint !== chart.hoverPoint || (tooltip && tooltip.isHidden))) {\n (chart.hoverPoints || []).forEach(function (p) {\n if (points.indexOf(p) === -1) {\n p.setState();\n }\n });\n // Set normal state to previous series\n if (chart.hoverSeries !== hoverSeries) {\n hoverSeries.onMouseOver();\n }\n pointer.applyInactiveState(points);\n // Do mouseover on all points (#3919, #3985, #4410, #5622)\n (points || []).forEach(function (p) {\n p.setState('hover');\n });\n // If tracking is on series in stead of on each point,\n // fire mouseOver on hover point. // #4448\n if (chart.hoverPoint) {\n chart.hoverPoint.firePointEvent('mouseOut');\n }\n // Hover point may have been destroyed in the event handlers (#7127)\n if (!hoverPoint.series) {\n return;\n }\n /**\n * Contains all hovered points.\n *\n * @name Highcharts.Chart#hoverPoints\n * @type {Array<Highcharts.Point>|null}\n */\n chart.hoverPoints = points;\n /**\n * Contains the original hovered point.\n *\n * @name Highcharts.Chart#hoverPoint\n * @type {Highcharts.Point|null}\n */\n chart.hoverPoint = hoverPoint;\n /**\n * Hover state should not be lost when axis is updated (#12569)\n * Axis.update runs pointer.reset which uses chart.hoverPoint.state\n * to apply state which does not exist in hoverPoint yet.\n * The mouseOver event should be triggered when hoverPoint\n * is correct.\n */\n hoverPoint.firePointEvent('mouseOver');\n // Draw tooltip if necessary\n if (tooltip) {\n tooltip.refresh(useSharedTooltip ? points : hoverPoint, e);\n }\n // Update positions (regardless of kdpoint or hoverPoint)\n }\n else if (followPointer && tooltip && !tooltip.isHidden) {\n var anchor = tooltip.getAnchor([{}],\n e);\n if (chart.isInsidePlot(anchor[0], anchor[1], {\n visiblePlotOnly: true\n })) {\n tooltip.updatePosition({ plotX: anchor[0], plotY: anchor[1] });\n }\n }\n // Start the event listener to pick up the tooltip and crosshairs\n if (!pointer.unDocMouseMove) {\n pointer.unDocMouseMove = addEvent(chart.container.ownerDocument, 'mousemove', function (e) {\n var chart = charts[Pointer.hoverChartIndex];\n if (chart) {\n chart.pointer.onDocumentMouseMove(e);\n }\n });\n pointer.eventsToUnbind.push(pointer.unDocMouseMove);\n }\n // Issues related to crosshair #4927, #5269 #5066, #5658\n chart.axes.forEach(function drawAxisCrosshair(axis) {\n var snap = pick((axis.crosshair || {}).snap,\n true);\n var point;\n if (snap) {\n point = chart.hoverPoint; // #13002\n if (!point || point.series[axis.coll] !== axis) {\n point = find(points, function (p) {\n return p.series[axis.coll] === axis;\n });\n }\n }\n // Axis has snapping crosshairs, and one of the hover points belongs\n // to axis. Always call drawCrosshair when it is not snap.\n if (point || !snap) {\n axis.drawCrosshair(e, point);\n // Axis has snapping crosshairs, but no hover point belongs to axis\n }\n else {\n axis.hideCrosshair();\n }\n });\n };\n /**\n * Scale series groups to a certain scale and translation.\n * @private\n * @function Highcharts.Pointer#scaleGroups\n */\n Pointer.prototype.scaleGroups = function (attribs, clip) {\n var chart = this.chart;\n // Scale each series\n chart.series.forEach(function (series) {\n var seriesAttribs = attribs || series.getPlotBox(); // #1701\n if (series.group &&\n ((series.xAxis && series.xAxis.zoomEnabled) ||\n chart.mapView)) {\n series.group.attr(seriesAttribs);\n if (series.markerGroup) {\n series.markerGroup.attr(seriesAttribs);\n series.markerGroup.clip(clip ? chart.clipRect : null);\n }\n if (series.dataLabelsGroup) {\n series.dataLabelsGroup.attr(seriesAttribs);\n }\n }\n });\n // Clip\n chart.clipRect.attr(clip || chart.clipBox);\n };\n /**\n * Set the JS DOM events on the container and document. This method should\n * contain a one-to-one assignment between methods and their handlers. Any\n * advanced logic should be moved to the handler reflecting the event's\n * name.\n * @private\n * @function Highcharts.Pointer#setDOMEvents\n */\n Pointer.prototype.setDOMEvents = function () {\n var _this = this;\n var container = this.chart.container,\n ownerDoc = container.ownerDocument;\n container.onmousedown = this.onContainerMouseDown.bind(this);\n container.onmousemove = this.onContainerMouseMove.bind(this);\n container.onclick = this.onContainerClick.bind(this);\n this.eventsToUnbind.push(addEvent(container, 'mouseenter', this.onContainerMouseEnter.bind(this)));\n this.eventsToUnbind.push(addEvent(container, 'mouseleave', this.onContainerMouseLeave.bind(this)));\n if (!Pointer.unbindDocumentMouseUp) {\n Pointer.unbindDocumentMouseUp = addEvent(ownerDoc, 'mouseup', this.onDocumentMouseUp.bind(this));\n }\n // In case we are dealing with overflow, reset the chart position when\n // scrolling parent elements\n var parent = this.chart.renderTo.parentElement;\n while (parent && parent.tagName !== 'BODY') {\n this.eventsToUnbind.push(addEvent(parent, 'scroll', function () {\n delete _this.chartPosition;\n }));\n parent = parent.parentElement;\n }\n if (H.hasTouch) {\n this.eventsToUnbind.push(addEvent(container, 'touchstart', this.onContainerTouchStart.bind(this), { passive: false }));\n this.eventsToUnbind.push(addEvent(container, 'touchmove', this.onContainerTouchMove.bind(this), { passive: false }));\n if (!Pointer.unbindDocumentTouchEnd) {\n Pointer.unbindDocumentTouchEnd = addEvent(ownerDoc, 'touchend', this.onDocumentTouchEnd.bind(this), { passive: false });\n }\n }\n };\n /**\n * Sets the index of the hovered chart and leaves the previous hovered\n * chart, to reset states like tooltip.\n * @private\n * @function Highcharts.Pointer#setHoverChartIndex\n */\n Pointer.prototype.setHoverChartIndex = function () {\n var chart = this.chart;\n var hoverChart = H.charts[pick(Pointer.hoverChartIndex, -1)];\n if (hoverChart &&\n hoverChart !== chart) {\n hoverChart.pointer.onContainerMouseLeave({ relatedTarget: true });\n }\n if (!hoverChart ||\n !hoverChart.mouseIsDown) {\n Pointer.hoverChartIndex = chart.index;\n }\n };\n /**\n * General touch handler shared by touchstart and touchmove.\n * @private\n * @function Highcharts.Pointer#touch\n */\n Pointer.prototype.touch = function (e, start) {\n var chart = this.chart;\n var hasMoved,\n pinchDown,\n isInside;\n this.setHoverChartIndex();\n if (e.touches.length === 1) {\n e = this.normalize(e);\n isInside = chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop, {\n visiblePlotOnly: true\n });\n if (isInside && !chart.openMenu) {\n // Run mouse events and display tooltip etc\n if (start) {\n this.runPointActions(e);\n }\n // Android fires touchmove events after the touchstart even if\n // the finger hasn't moved, or moved only a pixel or two. In iOS\n // however, the touchmove doesn't fire unless the finger moves\n // more than ~4px. So we emulate this behaviour in Android by\n // checking how much it moved, and cancelling on small\n // distances. #3450.\n if (e.type === 'touchmove') {\n pinchDown = this.pinchDown;\n hasMoved = pinchDown[0] ? Math.sqrt(// #5266\n Math.pow(pinchDown[0].chartX - e.chartX, 2) +\n Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 4 : false;\n }\n if (pick(hasMoved, true)) {\n this.pinch(e);\n }\n }\n else if (start) {\n // Hide the tooltip on touching outside the plot area (#1203)\n this.reset();\n }\n }\n else if (e.touches.length === 2) {\n this.pinch(e);\n }\n };\n /**\n * Returns true if the chart is set up for zooming by single touch and the\n * event is capable\n * @private\n * @function Highcharts.Pointer#touchSelect\n */\n Pointer.prototype.touchSelect = function (e) {\n return Boolean(this.chart.options.chart.zoomBySingleTouch &&\n e.touches &&\n e.touches.length === 1);\n };\n /**\n * Resolve the zoomType option, this is reset on all touch start and mouse\n * down events.\n * @private\n * @function Highcharts.Pointer#zoomOption\n */\n Pointer.prototype.zoomOption = function (e) {\n var chart = this.chart,\n options = chart.options.chart,\n inverted = chart.inverted;\n var zoomType = options.zoomType || '',\n zoomX,\n zoomY;\n // Look for the pinchType option\n if (/touch/.test(e.type)) {\n zoomType = pick(options.pinchType, zoomType);\n }\n this.zoomX = zoomX = /x/.test(zoomType);\n this.zoomY = zoomY = /y/.test(zoomType);\n this.zoomHor = (zoomX && !inverted) || (zoomY && inverted);\n this.zoomVert = (zoomY && !inverted) || (zoomX && inverted);\n this.hasZoom = zoomX || zoomY;\n };\n return Pointer;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * One position in relation to an axis.\n *\n * @interface Highcharts.PointerAxisCoordinateObject\n */ /**\n * Related axis.\n *\n * @name Highcharts.PointerAxisCoordinateObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Axis value.\n *\n * @name Highcharts.PointerAxisCoordinateObject#value\n * @type {number}\n */\n /**\n * Positions in terms of axis values.\n *\n * @interface Highcharts.PointerAxisCoordinatesObject\n */ /**\n * Positions on the x-axis.\n * @name Highcharts.PointerAxisCoordinatesObject#xAxis\n * @type {Array<Highcharts.PointerAxisCoordinateObject>}\n */ /**\n * Positions on the y-axis.\n * @name Highcharts.PointerAxisCoordinatesObject#yAxis\n * @type {Array<Highcharts.PointerAxisCoordinateObject>}\n */\n /**\n * Pointer coordinates.\n *\n * @interface Highcharts.PointerCoordinatesObject\n */ /**\n * @name Highcharts.PointerCoordinatesObject#chartX\n * @type {number}\n */ /**\n * @name Highcharts.PointerCoordinatesObject#chartY\n * @type {number}\n */\n /**\n * A native browser mouse or touch event, extended with position information\n * relative to the {@link Chart.container}.\n *\n * @interface Highcharts.PointerEventObject\n * @extends global.PointerEvent\n */ /**\n * The X coordinate of the pointer interaction relative to the chart.\n *\n * @name Highcharts.PointerEventObject#chartX\n * @type {number}\n */ /**\n * The Y coordinate of the pointer interaction relative to the chart.\n *\n * @name Highcharts.PointerEventObject#chartY\n * @type {number}\n */\n /**\n * Axis-specific data of a selection.\n *\n * @interface Highcharts.SelectDataObject\n */ /**\n * @name Highcharts.SelectDataObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * @name Highcharts.SelectDataObject#max\n * @type {number}\n */ /**\n * @name Highcharts.SelectDataObject#min\n * @type {number}\n */\n /**\n * Object for select events.\n *\n * @interface Highcharts.SelectEventObject\n */ /**\n * @name Highcharts.SelectEventObject#originalEvent\n * @type {global.Event}\n */ /**\n * @name Highcharts.SelectEventObject#xAxis\n * @type {Array<Highcharts.SelectDataObject>}\n */ /**\n * @name Highcharts.SelectEventObject#yAxis\n * @type {Array<Highcharts.SelectDataObject>}\n */\n /**\n * Chart position and scale.\n *\n * @interface Highcharts.ChartPositionObject\n */ /**\n * @name Highcharts.ChartPositionObject#left\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#scaleX\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#scaleY\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#top\n * @type {number}\n */\n ''; // keeps doclets above in JS file\n\n return Pointer;\n });\n _registerModule(_modules, 'Core/MSPointer.js', [_modules['Core/Globals.js'], _modules['Core/Pointer.js'], _modules['Core/Utilities.js']], function (H, Pointer, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var charts = H.charts,\n doc = H.doc,\n noop = H.noop,\n win = H.win;\n var addEvent = U.addEvent,\n css = U.css,\n objectEach = U.objectEach,\n removeEvent = U.removeEvent;\n /* *\n *\n * Constants\n *\n * */\n // The touches object keeps track of the points being touched at all times\n var touches = {};\n var hasPointerEvent = !!win.PointerEvent;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /** @private */\n function getWebkitTouches() {\n var fake = [];\n fake.item = function (i) {\n return this[i];\n };\n objectEach(touches, function (touch) {\n fake.push({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target\n });\n });\n return fake;\n }\n /** @private */\n function translateMSPointer(e, method, wktype, func) {\n var chart = charts[Pointer.hoverChartIndex || NaN];\n if ((e.pointerType === 'touch' ||\n e.pointerType === e.MSPOINTER_TYPE_TOUCH) && chart) {\n var p = chart.pointer;\n func(e);\n p[method]({\n type: wktype,\n target: e.currentTarget,\n preventDefault: noop,\n touches: getWebkitTouches()\n });\n }\n }\n /* *\n *\n * Class\n *\n * */\n /** @private */\n var MSPointer = /** @class */ (function (_super) {\n __extends(MSPointer, _super);\n function MSPointer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n MSPointer.isRequired = function () {\n return !!(!H.hasTouch && (win.PointerEvent || win.MSPointerEvent));\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Add or remove the MS Pointer specific events\n * @private\n * @function Highcharts.Pointer#batchMSEvents\n */\n MSPointer.prototype.batchMSEvents = function (fn) {\n fn(this.chart.container, hasPointerEvent ? 'pointerdown' : 'MSPointerDown', this.onContainerPointerDown);\n fn(this.chart.container, hasPointerEvent ? 'pointermove' : 'MSPointerMove', this.onContainerPointerMove);\n fn(doc, hasPointerEvent ? 'pointerup' : 'MSPointerUp', this.onDocumentPointerUp);\n };\n // Destroy MS events also\n MSPointer.prototype.destroy = function () {\n this.batchMSEvents(removeEvent);\n _super.prototype.destroy.call(this);\n };\n // Disable default IE actions for pinch and such on chart element\n MSPointer.prototype.init = function (chart, options) {\n _super.prototype.init.call(this, chart, options);\n if (this.hasZoom) { // #4014\n css(chart.container, {\n '-ms-touch-action': 'none',\n 'touch-action': 'none'\n });\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerPointerDown\n */\n MSPointer.prototype.onContainerPointerDown = function (e) {\n translateMSPointer(e, 'onContainerTouchStart', 'touchstart', function (e) {\n touches[e.pointerId] = {\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.currentTarget\n };\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerPointerMove\n */\n MSPointer.prototype.onContainerPointerMove = function (e) {\n translateMSPointer(e, 'onContainerTouchMove', 'touchmove', function (e) {\n touches[e.pointerId] = ({ pageX: e.pageX, pageY: e.pageY });\n if (!touches[e.pointerId].target) {\n touches[e.pointerId].target = e.currentTarget;\n }\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentPointerUp\n */\n MSPointer.prototype.onDocumentPointerUp = function (e) {\n translateMSPointer(e, 'onDocumentTouchEnd', 'touchend', function (e) {\n delete touches[e.pointerId];\n });\n };\n // Add IE specific touch events to chart\n MSPointer.prototype.setDOMEvents = function () {\n _super.prototype.setDOMEvents.call(this);\n if (this.hasZoom || this.followTouchMove) {\n this.batchMSEvents(addEvent);\n }\n };\n return MSPointer;\n }(Pointer));\n /* *\n *\n * Default Export\n *\n * */\n\n return MSPointer;\n });\n _registerModule(_modules, 'Core/Legend/Legend.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Series/Point.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Utilities.js']], function (A, F, H, Point, R, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject,\n setAnimation = A.setAnimation;\n var format = F.format;\n var isFirefox = H.isFirefox,\n marginNames = H.marginNames,\n win = H.win;\n var distribute = R.distribute;\n var addEvent = U.addEvent,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n find = U.find,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength,\n stableSort = U.stableSort,\n syncTimeout = U.syncTimeout,\n wrap = U.wrap;\n /* *\n *\n * Class\n *\n * */\n /**\n * The overview of the chart's series. The legend object is instanciated\n * internally in the chart constructor, and is available from the `chart.legend`\n * property. Each chart has only one legend.\n *\n * @class\n * @name Highcharts.Legend\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n */\n var Legend = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Legend(chart, options) {\n /* *\n *\n * Properties\n *\n * */\n this.allItems = [];\n this.box = void 0;\n this.contentGroup = void 0;\n this.display = false;\n this.group = void 0;\n this.initialItemY = 0;\n this.itemHeight = 0;\n this.itemMarginBottom = 0;\n this.itemMarginTop = 0;\n this.itemX = 0;\n this.itemY = 0;\n this.lastItemY = 0;\n this.lastLineHeight = 0;\n this.legendHeight = 0;\n this.legendWidth = 0;\n this.maxItemWidth = 0;\n this.maxLegendWidth = 0;\n this.offsetWidth = 0;\n this.options = {};\n this.padding = 0;\n this.pages = [];\n this.proximate = false;\n this.scrollGroup = void 0;\n this.symbolHeight = 0;\n this.symbolWidth = 0;\n this.titleHeight = 0;\n this.totalItemWidth = 0;\n this.widthOption = 0;\n this.chart = chart;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Initialize the legend.\n *\n * @private\n * @function Highcharts.Legend#init\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n */\n Legend.prototype.init = function (chart, options) {\n /**\n * Chart of this legend.\n *\n * @readonly\n * @name Highcharts.Legend#chart\n * @type {Highcharts.Chart}\n */\n this.chart = chart;\n this.setOptions(options);\n if (options.enabled) {\n // Render it\n this.render();\n // move checkboxes\n addEvent(this.chart, 'endResize', function () {\n this.legend.positionCheckboxes();\n });\n if (this.proximate) {\n this.unchartrender = addEvent(this.chart, 'render', function () {\n this.legend.proximatePositions();\n this.legend.positionItems();\n });\n }\n else if (this.unchartrender) {\n this.unchartrender();\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#setOptions\n * @param {Highcharts.LegendOptions} options\n */\n Legend.prototype.setOptions = function (options) {\n var padding = pick(options.padding, 8);\n /**\n * Legend options.\n *\n * @readonly\n * @name Highcharts.Legend#options\n * @type {Highcharts.LegendOptions}\n */\n this.options = options;\n if (!this.chart.styledMode) {\n this.itemStyle = options.itemStyle;\n this.itemHiddenStyle = merge(this.itemStyle, options.itemHiddenStyle);\n }\n this.itemMarginTop = options.itemMarginTop || 0;\n this.itemMarginBottom = options.itemMarginBottom || 0;\n this.padding = padding;\n this.initialItemY = padding - 5; // 5 is pixels above the text\n this.symbolWidth = pick(options.symbolWidth, 16);\n this.pages = [];\n this.proximate = options.layout === 'proximate' && !this.chart.inverted;\n // #12705: baseline has to be reset on every update\n this.baseline = void 0;\n };\n /**\n * Update the legend with new options. Equivalent to running `chart.update`\n * with a legend configuration option.\n *\n * @sample highcharts/legend/legend-update/\n * Legend update\n *\n * @function Highcharts.Legend#update\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the axis is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after. Whether to redraw the chart.\n *\n * @emits Highcharts.Legends#event:afterUpdate\n */\n Legend.prototype.update = function (options, redraw) {\n var chart = this.chart;\n this.setOptions(merge(true, this.options, options));\n this.destroy();\n chart.isDirtyLegend = chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n fireEvent(this, 'afterUpdate');\n };\n /**\n * Set the colors for the legend item.\n *\n * @private\n * @function Highcharts.Legend#colorizeItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * A Series or Point instance\n * @param {boolean} [visible=false]\n * Dimmed or colored\n *\n * @todo\n * Make events official: Fires the event `afterColorizeItem`.\n */\n Legend.prototype.colorizeItem = function (item, visible) {\n item.legendGroup[visible ? 'removeClass' : 'addClass']('highcharts-legend-item-hidden');\n if (!this.chart.styledMode) {\n var legend = this,\n options = legend.options,\n legendItem = item.legendItem,\n legendLine = item.legendLine,\n legendSymbol = item.legendSymbol,\n hiddenColor = legend.itemHiddenStyle.color,\n textColor = visible ?\n options.itemStyle.color :\n hiddenColor,\n symbolColor = visible ?\n (item.color || hiddenColor) :\n hiddenColor,\n markerOptions = item.options && item.options.marker;\n var symbolAttr = { fill: symbolColor };\n if (legendItem) {\n legendItem.css({\n fill: textColor,\n color: textColor // #1553, oldIE\n });\n }\n if (legendLine) {\n legendLine.attr({ stroke: symbolColor });\n }\n if (legendSymbol) {\n // Apply marker options\n if (markerOptions && legendSymbol.isMarker) { // #585\n symbolAttr = item.pointAttribs();\n if (!visible) {\n // #6769\n symbolAttr.stroke = symbolAttr.fill = hiddenColor;\n }\n }\n legendSymbol.attr(symbolAttr);\n }\n }\n fireEvent(this, 'afterColorizeItem', { item: item, visible: visible });\n };\n /**\n * @private\n * @function Highcharts.Legend#positionItems\n */\n Legend.prototype.positionItems = function () {\n // Now that the legend width and height are established, put the items\n // in the final position\n this.allItems.forEach(this.positionItem, this);\n if (!this.chart.isResizing) {\n this.positionCheckboxes();\n }\n };\n /**\n * Position the legend item.\n *\n * @private\n * @function Highcharts.Legend#positionItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to position\n */\n Legend.prototype.positionItem = function (item) {\n var _this = this;\n var legend = this,\n options = legend.options,\n symbolPadding = options.symbolPadding,\n ltr = !options.rtl,\n legendItemPos = item._legendItemPos,\n itemX = legendItemPos[0],\n itemY = legendItemPos[1],\n checkbox = item.checkbox,\n legendGroup = item.legendGroup;\n if (legendGroup && legendGroup.element) {\n var attribs = {\n translateX: ltr ?\n itemX :\n legend.legendWidth - itemX - 2 * symbolPadding - 4,\n translateY: itemY\n };\n var complete = function () {\n fireEvent(_this, 'afterPositionItem', { item: item });\n };\n if (defined(legendGroup.translateY)) {\n legendGroup.animate(attribs, void 0, complete);\n }\n else {\n legendGroup.attr(attribs);\n complete();\n }\n }\n if (checkbox) {\n checkbox.x = itemX;\n checkbox.y = itemY;\n }\n };\n /**\n * Destroy a single legend item, used internally on removing series items.\n *\n * @private\n * @function Highcharts.Legend#destroyItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to remove\n */\n Legend.prototype.destroyItem = function (item) {\n var checkbox = item.checkbox;\n // destroy SVG elements\n ['legendItem', 'legendLine', 'legendSymbol', 'legendGroup'].forEach(function (key) {\n if (item[key]) {\n item[key] = item[key].destroy();\n }\n });\n if (checkbox) {\n discardElement(item.checkbox);\n }\n };\n /**\n * Destroy the legend. Used internally. To reflow objects, `chart.redraw`\n * must be called after destruction.\n *\n * @private\n * @function Highcharts.Legend#destroy\n */\n Legend.prototype.destroy = function () {\n /**\n * @private\n * @param {string} key\n */\n function destroyItems(key) {\n if (this[key]) {\n this[key] = this[key].destroy();\n }\n }\n // Destroy items\n this.getAllItems().forEach(function (item) {\n ['legendItem', 'legendGroup'].forEach(destroyItems, item);\n });\n // Destroy legend elements\n [\n 'clipRect',\n 'up',\n 'down',\n 'pager',\n 'nav',\n 'box',\n 'title',\n 'group'\n ].forEach(destroyItems, this);\n this.display = null; // Reset in .render on update.\n };\n /**\n * Position the checkboxes after the width is determined.\n *\n * @private\n * @function Highcharts.Legend#positionCheckboxes\n */\n Legend.prototype.positionCheckboxes = function () {\n var alignAttr = this.group && this.group.alignAttr,\n clipHeight = this.clipHeight || this.legendHeight,\n titleHeight = this.titleHeight;\n var translateY;\n if (alignAttr) {\n translateY = alignAttr.translateY;\n this.allItems.forEach(function (item) {\n var checkbox = item.checkbox;\n var top;\n if (checkbox) {\n top = translateY + titleHeight + checkbox.y +\n (this.scrollOffset || 0) + 3;\n css(checkbox, {\n left: (alignAttr.translateX + item.checkboxOffset +\n checkbox.x - 20) + 'px',\n top: top + 'px',\n display: this.proximate || (top > translateY - 6 &&\n top < translateY + clipHeight - 6) ?\n '' :\n 'none'\n });\n }\n }, this);\n }\n };\n /**\n * Render the legend title on top of the legend.\n *\n * @private\n * @function Highcharts.Legend#renderTitle\n */\n Legend.prototype.renderTitle = function () {\n var options = this.options,\n padding = this.padding,\n titleOptions = options.title;\n var bBox,\n titleHeight = 0;\n if (titleOptions.text) {\n if (!this.title) {\n /**\n * SVG element of the legend title.\n *\n * @readonly\n * @name Highcharts.Legend#title\n * @type {Highcharts.SVGElement}\n */\n this.title = this.chart.renderer.label(titleOptions.text, padding - 3, padding - 4, null, null, null, options.useHTML, null, 'legend-title')\n .attr({ zIndex: 1 });\n if (!this.chart.styledMode) {\n this.title.css(titleOptions.style);\n }\n this.title.add(this.group);\n }\n // Set the max title width (#7253)\n if (!titleOptions.width) {\n this.title.css({\n width: this.maxLegendWidth + 'px'\n });\n }\n bBox = this.title.getBBox();\n titleHeight = bBox.height;\n this.offsetWidth = bBox.width; // #1717\n this.contentGroup.attr({ translateY: titleHeight });\n }\n this.titleHeight = titleHeight;\n };\n /**\n * Set the legend item text.\n *\n * @function Highcharts.Legend#setText\n * @param {Highcharts.Point|Highcharts.Series} item\n * The item for which to update the text in the legend.\n */\n Legend.prototype.setText = function (item) {\n var options = this.options;\n item.legendItem.attr({\n text: options.labelFormat ?\n format(options.labelFormat, item, this.chart) :\n options.labelFormatter.call(item)\n });\n };\n /**\n * Render a single specific legend item. Called internally from the `render`\n * function.\n *\n * @private\n * @function Highcharts.Legend#renderItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to render.\n */\n Legend.prototype.renderItem = function (item) {\n var legend = this,\n chart = legend.chart,\n renderer = chart.renderer,\n options = legend.options,\n horizontal = options.layout === 'horizontal',\n symbolWidth = legend.symbolWidth,\n symbolPadding = options.symbolPadding || 0,\n itemStyle = legend.itemStyle,\n itemHiddenStyle = legend.itemHiddenStyle,\n itemDistance = horizontal ? pick(options.itemDistance, 20) : 0,\n ltr = !options.rtl,\n isSeries = !item.series,\n series = !isSeries && item.series.drawLegendSymbol ?\n item.series :\n item,\n seriesOptions = series.options,\n showCheckbox = legend.createCheckboxForItem &&\n seriesOptions &&\n seriesOptions.showCheckbox,\n useHTML = options.useHTML,\n itemClassName = item.options.className;\n var li = item.legendItem, \n // full width minus text width\n itemExtraWidth = symbolWidth + symbolPadding +\n itemDistance + (showCheckbox ? 20 : 0);\n if (!li) { // generate it once, later move it\n // Generate the group box, a group to hold the symbol and text. Text\n // is to be appended in Legend class.\n item.legendGroup = renderer\n .g('legend-item')\n .addClass('highcharts-' + series.type + '-series ' +\n 'highcharts-color-' + item.colorIndex +\n (itemClassName ? ' ' + itemClassName : '') +\n (isSeries ?\n ' highcharts-series-' + item.index :\n ''))\n .attr({ zIndex: 1 })\n .add(legend.scrollGroup);\n // Generate the list item text and add it to the group\n item.legendItem = li = renderer.text('', ltr ?\n symbolWidth + symbolPadding :\n -symbolPadding, legend.baseline || 0, useHTML);\n if (!chart.styledMode) {\n // merge to prevent modifying original (#1021)\n li.css(merge(item.visible ?\n itemStyle :\n itemHiddenStyle));\n }\n li\n .attr({\n align: ltr ? 'left' : 'right',\n zIndex: 2\n })\n .add(item.legendGroup);\n // Get the baseline for the first item - the font size is equal for\n // all\n if (!legend.baseline) {\n legend.fontMetrics = renderer.fontMetrics(chart.styledMode ? 12 : itemStyle.fontSize, li);\n legend.baseline =\n legend.fontMetrics.f + 3 + legend.itemMarginTop;\n li.attr('y', legend.baseline);\n legend.symbolHeight =\n options.symbolHeight || legend.fontMetrics.f;\n if (options.squareSymbol) {\n legend.symbolWidth = pick(options.symbolWidth, Math.max(legend.symbolHeight, 16));\n itemExtraWidth = legend.symbolWidth + symbolPadding +\n itemDistance + (showCheckbox ? 20 : 0);\n if (ltr) {\n li.attr('x', legend.symbolWidth + symbolPadding);\n }\n }\n }\n // Draw the legend symbol inside the group box\n series.drawLegendSymbol(legend, item);\n if (legend.setItemEvents) {\n legend.setItemEvents(item, li, useHTML);\n }\n }\n // Add the HTML checkbox on top\n if (showCheckbox && !item.checkbox && legend.createCheckboxForItem) {\n legend.createCheckboxForItem(item);\n }\n // Colorize the items\n legend.colorizeItem(item, item.visible);\n // Take care of max width and text overflow (#6659)\n if (chart.styledMode || !itemStyle.width) {\n li.css({\n width: ((options.itemWidth ||\n legend.widthOption ||\n chart.spacingBox.width) - itemExtraWidth) + 'px'\n });\n }\n // Always update the text\n legend.setText(item);\n // calculate the positions for the next line\n var bBox = li.getBBox();\n var fontMetricsH = (legend.fontMetrics && legend.fontMetrics.h) || 0;\n item.itemWidth = item.checkboxOffset =\n options.itemWidth ||\n item.legendItemWidth ||\n bBox.width + itemExtraWidth;\n legend.maxItemWidth = Math.max(legend.maxItemWidth, item.itemWidth);\n legend.totalItemWidth += item.itemWidth;\n legend.itemHeight = item.itemHeight = Math.round(item.legendItemHeight ||\n // use bBox for multiline (#16398)\n (bBox.height > fontMetricsH * 1.5 ? bBox.height : fontMetricsH));\n };\n /**\n * Get the position of the item in the layout. We now know the\n * maxItemWidth from the previous loop.\n *\n * @private\n * @function Highcharts.Legend#layoutItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n */\n Legend.prototype.layoutItem = function (item) {\n var options = this.options,\n padding = this.padding,\n horizontal = options.layout === 'horizontal',\n itemHeight = item.itemHeight,\n itemMarginBottom = this.itemMarginBottom,\n itemMarginTop = this.itemMarginTop,\n itemDistance = horizontal ? pick(options.itemDistance, 20) : 0,\n maxLegendWidth = this.maxLegendWidth,\n itemWidth = (options.alignColumns &&\n this.totalItemWidth > maxLegendWidth) ?\n this.maxItemWidth :\n item.itemWidth;\n // If the item exceeds the width, start a new line\n if (horizontal &&\n this.itemX - padding + itemWidth > maxLegendWidth) {\n this.itemX = padding;\n if (this.lastLineHeight) { // Not for the first line (#10167)\n this.itemY += (itemMarginTop +\n this.lastLineHeight +\n itemMarginBottom);\n }\n this.lastLineHeight = 0; // reset for next line (#915, #3976)\n }\n // Set the edge positions\n this.lastItemY = itemMarginTop + this.itemY + itemMarginBottom;\n this.lastLineHeight = Math.max(// #915\n itemHeight, this.lastLineHeight);\n // cache the position of the newly generated or reordered items\n item._legendItemPos = [this.itemX, this.itemY];\n // advance\n if (horizontal) {\n this.itemX += itemWidth;\n }\n else {\n this.itemY +=\n itemMarginTop + itemHeight + itemMarginBottom;\n this.lastLineHeight = itemHeight;\n }\n // the width of the widest item\n this.offsetWidth = this.widthOption || Math.max((horizontal ? this.itemX - padding - (item.checkbox ?\n // decrease by itemDistance only when no checkbox #4853\n 0 :\n itemDistance) : itemWidth) + padding, this.offsetWidth);\n };\n /**\n * Get all items, which is one item per series for most series and one\n * item per point for pie series and its derivatives. Fires the event\n * `afterGetAllItems`.\n *\n * @private\n * @function Highcharts.Legend#getAllItems\n * @return {Array<(Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series)>}\n * The current items in the legend.\n * @emits Highcharts.Legend#event:afterGetAllItems\n */\n Legend.prototype.getAllItems = function () {\n var allItems = [];\n this.chart.series.forEach(function (series) {\n var seriesOptions = series && series.options;\n // Handle showInLegend. If the series is linked to another series,\n // defaults to false.\n if (series && pick(seriesOptions.showInLegend, !defined(seriesOptions.linkedTo) ? void 0 : false, true)) {\n // Use points or series for the legend item depending on\n // legendType\n allItems = allItems.concat(series.legendItems ||\n (seriesOptions.legendType === 'point' ?\n series.data :\n series));\n }\n });\n fireEvent(this, 'afterGetAllItems', { allItems: allItems });\n return allItems;\n };\n /**\n * Get a short, three letter string reflecting the alignment and layout.\n *\n * @private\n * @function Highcharts.Legend#getAlignment\n * @return {string}\n * The alignment, empty string if floating\n */\n Legend.prototype.getAlignment = function () {\n var options = this.options;\n // Use the first letter of each alignment option in order to detect\n // the side. (#4189 - use charAt(x) notation instead of [x] for IE7)\n if (this.proximate) {\n return options.align.charAt(0) + 'tv';\n }\n return options.floating ? '' : (options.align.charAt(0) +\n options.verticalAlign.charAt(0) +\n options.layout.charAt(0));\n };\n /**\n * Adjust the chart margins by reserving space for the legend on only one\n * side of the chart. If the position is set to a corner, top or bottom is\n * reserved for horizontal legends and left or right for vertical ones.\n *\n * @private\n * @function Highcharts.Legend#adjustMargins\n * @param {Array<number>} margin\n * @param {Array<number>} spacing\n */\n Legend.prototype.adjustMargins = function (margin, spacing) {\n var chart = this.chart,\n options = this.options,\n alignment = this.getAlignment();\n if (alignment) {\n ([\n /(lth|ct|rth)/,\n /(rtv|rm|rbv)/,\n /(rbh|cb|lbh)/,\n /(lbv|lm|ltv)/\n ]).forEach(function (alignments, side) {\n if (alignments.test(alignment) && !defined(margin[side])) {\n // Now we have detected on which side of the chart we should\n // reserve space for the legend\n chart[marginNames[side]] = Math.max(chart[marginNames[side]], (chart.legend[(side + 1) % 2 ? 'legendHeight' : 'legendWidth'] +\n [1, -1, -1, 1][side] * options[(side % 2) ? 'x' : 'y'] +\n pick(options.margin, 12) +\n spacing[side] +\n (chart.titleOffset[side] || 0)));\n }\n });\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#proximatePositions\n */\n Legend.prototype.proximatePositions = function () {\n var chart = this.chart,\n boxes = [],\n alignLeft = this.options.align === 'left';\n this.allItems.forEach(function (item) {\n var lastPoint,\n height,\n useFirstPoint = alignLeft,\n target,\n top;\n if (item.yAxis) {\n if (item.xAxis.options.reversed) {\n useFirstPoint = !useFirstPoint;\n }\n if (item.points) {\n lastPoint = find(useFirstPoint ?\n item.points :\n item.points.slice(0).reverse(), function (item) {\n return isNumber(item.plotY);\n });\n }\n height = this.itemMarginTop +\n item.legendItem.getBBox().height +\n this.itemMarginBottom;\n top = item.yAxis.top - chart.plotTop;\n if (item.visible) {\n target = lastPoint ?\n lastPoint.plotY :\n item.yAxis.height;\n target += top - 0.3 * height;\n }\n else {\n target = top + item.yAxis.height;\n }\n boxes.push({\n target: target,\n size: height,\n item: item\n });\n }\n }, this);\n distribute(boxes, chart.plotHeight).forEach(function (box) {\n if (box.item._legendItemPos) {\n box.item._legendItemPos[1] =\n chart.plotTop - chart.spacing[0] + box.pos;\n }\n });\n };\n /**\n * Render the legend. This method can be called both before and after\n * `chart.render`. If called after, it will only rearrange items instead\n * of creating new ones. Called internally on initial render and after\n * redraws.\n *\n * @private\n * @function Highcharts.Legend#render\n */\n Legend.prototype.render = function () {\n var legend = this,\n chart = legend.chart,\n renderer = chart.renderer,\n options = legend.options,\n padding = legend.padding, \n // add each series or point\n allItems = legend.getAllItems();\n var display,\n legendWidth,\n legendHeight,\n legendGroup = legend.group,\n allowedWidth,\n box = legend.box;\n legend.itemX = padding;\n legend.itemY = legend.initialItemY;\n legend.offsetWidth = 0;\n legend.lastItemY = 0;\n legend.widthOption = relativeLength(options.width, chart.spacingBox.width - padding);\n // Compute how wide the legend is allowed to be\n allowedWidth =\n chart.spacingBox.width - 2 * padding - options.x;\n if (['rm', 'lm'].indexOf(legend.getAlignment().substring(0, 2)) > -1) {\n allowedWidth /= 2;\n }\n legend.maxLegendWidth = legend.widthOption || allowedWidth;\n if (!legendGroup) {\n /**\n * SVG group of the legend.\n *\n * @readonly\n * @name Highcharts.Legend#group\n * @type {Highcharts.SVGElement}\n */\n legend.group = legendGroup = renderer.g('legend')\n .addClass(options.className || '')\n .attr({ zIndex: 7 })\n .add();\n legend.contentGroup = renderer.g()\n .attr({ zIndex: 1 }) // above background\n .add(legendGroup);\n legend.scrollGroup = renderer.g()\n .add(legend.contentGroup);\n }\n legend.renderTitle();\n // sort by legendIndex\n stableSort(allItems, function (a, b) {\n return ((a.options && a.options.legendIndex) || 0) -\n ((b.options && b.options.legendIndex) || 0);\n });\n // reversed legend\n if (options.reversed) {\n allItems.reverse();\n }\n /**\n * All items for the legend, which is an array of series for most series\n * and an array of points for pie series and its derivatives.\n *\n * @readonly\n * @name Highcharts.Legend#allItems\n * @type {Array<(Highcharts.Point|Highcharts.Series)>}\n */\n legend.allItems = allItems;\n legend.display = display = !!allItems.length;\n // Render the items. First we run a loop to set the text and properties\n // and read all the bounding boxes. The next loop computes the item\n // positions based on the bounding boxes.\n legend.lastLineHeight = 0;\n legend.maxItemWidth = 0;\n legend.totalItemWidth = 0;\n legend.itemHeight = 0;\n allItems.forEach(legend.renderItem, legend);\n allItems.forEach(legend.layoutItem, legend);\n // Get the box\n legendWidth = (legend.widthOption || legend.offsetWidth) + padding;\n legendHeight = legend.lastItemY + legend.lastLineHeight +\n legend.titleHeight;\n legendHeight = legend.handleOverflow(legendHeight);\n legendHeight += padding;\n // Draw the border and/or background\n if (!box) {\n /**\n * SVG element of the legend box.\n *\n * @readonly\n * @name Highcharts.Legend#box\n * @type {Highcharts.SVGElement}\n */\n legend.box = box = renderer.rect()\n .addClass('highcharts-legend-box')\n .attr({\n r: options.borderRadius\n })\n .add(legendGroup);\n box.isNew = true;\n }\n // Presentational\n if (!chart.styledMode) {\n box\n .attr({\n stroke: options.borderColor,\n 'stroke-width': options.borderWidth || 0,\n fill: options.backgroundColor || 'none'\n })\n .shadow(options.shadow);\n }\n if (legendWidth > 0 && legendHeight > 0) {\n box[box.isNew ? 'attr' : 'animate'](box.crisp.call({}, {\n x: 0,\n y: 0,\n width: legendWidth,\n height: legendHeight\n }, box.strokeWidth()));\n box.isNew = false;\n }\n // hide the border if no items\n box[display ? 'show' : 'hide']();\n // Open for responsiveness\n if (chart.styledMode && legendGroup.getStyle('display') === 'none') {\n legendWidth = legendHeight = 0;\n }\n legend.legendWidth = legendWidth;\n legend.legendHeight = legendHeight;\n if (display) {\n legend.align();\n }\n if (!this.proximate) {\n this.positionItems();\n }\n fireEvent(this, 'afterRender');\n };\n /**\n * Align the legend to chart's box.\n *\n * @private\n * @function Highcharts.align\n * @param {Highcharts.BBoxObject} alignTo\n */\n Legend.prototype.align = function (alignTo) {\n if (alignTo === void 0) { alignTo = this.chart.spacingBox; }\n var chart = this.chart,\n options = this.options;\n // If aligning to the top and the layout is horizontal, adjust for\n // the title (#7428)\n var y = alignTo.y;\n if (/(lth|ct|rth)/.test(this.getAlignment()) &&\n chart.titleOffset[0] > 0) {\n y += chart.titleOffset[0];\n }\n else if (/(lbh|cb|rbh)/.test(this.getAlignment()) &&\n chart.titleOffset[2] > 0) {\n y -= chart.titleOffset[2];\n }\n if (y !== alignTo.y) {\n alignTo = merge(alignTo, { y: y });\n }\n this.group.align(merge(options, {\n width: this.legendWidth,\n height: this.legendHeight,\n verticalAlign: this.proximate ? 'top' : options.verticalAlign\n }), true, alignTo);\n };\n /**\n * Set up the overflow handling by adding navigation with up and down arrows\n * below the legend.\n *\n * @private\n * @function Highcharts.Legend#handleOverflow\n */\n Legend.prototype.handleOverflow = function (legendHeight) {\n var legend = this,\n chart = this.chart,\n renderer = chart.renderer,\n options = this.options,\n optionsY = options.y,\n alignTop = options.verticalAlign === 'top',\n padding = this.padding,\n maxHeight = options.maxHeight,\n navOptions = options.navigation,\n animation = pick(navOptions.animation,\n true),\n arrowSize = navOptions.arrowSize || 12,\n pages = this.pages,\n allItems = this.allItems,\n clipToHeight = function (height) {\n if (typeof height === 'number') {\n clipRect.attr({\n height: height\n });\n }\n else if (clipRect) { // Reset (#5912)\n legend.clipRect = clipRect.destroy();\n legend.contentGroup.clip();\n }\n // useHTML\n if (legend.contentGroup.div) {\n legend.contentGroup.div.style.clip = height ?\n 'rect(' + padding + 'px,9999px,' +\n (padding + height) + 'px,0)' :\n 'auto';\n }\n }, addTracker = function (key) {\n legend[key] = renderer\n .circle(0, 0, arrowSize * 1.3)\n .translate(arrowSize / 2, arrowSize / 2)\n .add(nav);\n if (!chart.styledMode) {\n legend[key].attr('fill', 'rgba(0,0,0,0.0001)');\n }\n return legend[key];\n };\n var clipHeight,\n lastY,\n spaceHeight = (chart.spacingBox.height +\n (alignTop ? -optionsY : optionsY) - padding),\n nav = this.nav,\n clipRect = this.clipRect;\n // Adjust the height\n if (options.layout === 'horizontal' &&\n options.verticalAlign !== 'middle' &&\n !options.floating) {\n spaceHeight /= 2;\n }\n if (maxHeight) {\n spaceHeight = Math.min(spaceHeight, maxHeight);\n }\n // Reset the legend height and adjust the clipping rectangle\n pages.length = 0;\n if (legendHeight &&\n spaceHeight > 0 &&\n legendHeight > spaceHeight &&\n navOptions.enabled !== false) {\n this.clipHeight = clipHeight =\n Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);\n this.currentPage = pick(this.currentPage, 1);\n this.fullHeight = legendHeight;\n // Fill pages with Y positions so that the top of each a legend item\n // defines the scroll top for each page (#2098)\n allItems.forEach(function (item, i) {\n var y = item._legendItemPos[1],\n h = Math.round(item.legendItem.getBBox().height);\n var len = pages.length;\n if (!len || (y - pages[len - 1] > clipHeight &&\n (lastY || y) !== pages[len - 1])) {\n pages.push(lastY || y);\n len++;\n }\n // Keep track of which page each item is on\n item.pageIx = len - 1;\n if (lastY) {\n allItems[i - 1].pageIx = len - 1;\n }\n // add the last page if needed (#2617, #13683)\n if (\n // check the last item\n i === allItems.length - 1 &&\n // if adding next page is needed\n y + h - pages[len - 1] > clipHeight &&\n // and will fully fit inside a new page\n h <= clipHeight) {\n pages.push(y);\n item.pageIx = len;\n }\n if (y !== lastY) {\n lastY = y;\n }\n });\n // Only apply clipping if needed. Clipping causes blurred legend in\n // PDF export (#1787)\n if (!clipRect) {\n clipRect = legend.clipRect =\n renderer.clipRect(0, padding, 9999, 0);\n legend.contentGroup.clip(clipRect);\n }\n clipToHeight(clipHeight);\n // Add navigation elements\n if (!nav) {\n this.nav = nav = renderer.g()\n .attr({ zIndex: 1 })\n .add(this.group);\n this.up = renderer\n .symbol('triangle', 0, 0, arrowSize, arrowSize)\n .add(nav);\n addTracker('upTracker')\n .on('click', function () {\n legend.scroll(-1, animation);\n });\n this.pager = renderer.text('', 15, 10)\n .addClass('highcharts-legend-navigation');\n if (!chart.styledMode) {\n this.pager.css(navOptions.style);\n }\n this.pager.add(nav);\n this.down = renderer\n .symbol('triangle-down', 0, 0, arrowSize, arrowSize)\n .add(nav);\n addTracker('downTracker')\n .on('click', function () {\n legend.scroll(1, animation);\n });\n }\n // Set initial position\n legend.scroll(0);\n legendHeight = spaceHeight;\n // Reset\n }\n else if (nav) {\n clipToHeight();\n this.nav = nav.destroy(); // #6322\n this.scrollGroup.attr({\n translateY: 1\n });\n this.clipHeight = 0; // #1379\n }\n return legendHeight;\n };\n /**\n * Scroll the legend by a number of pages.\n *\n * @private\n * @function Highcharts.Legend#scroll\n *\n * @param {number} scrollBy\n * The number of pages to scroll.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * Whether and how to apply animation.\n *\n */\n Legend.prototype.scroll = function (scrollBy, animation) {\n var _this = this;\n var chart = this.chart,\n pages = this.pages,\n pageCount = pages.length,\n clipHeight = this.clipHeight,\n navOptions = this.options.navigation,\n pager = this.pager,\n padding = this.padding;\n var currentPage = this.currentPage + scrollBy;\n // When resizing while looking at the last page\n if (currentPage > pageCount) {\n currentPage = pageCount;\n }\n if (currentPage > 0) {\n if (typeof animation !== 'undefined') {\n setAnimation(animation, chart);\n }\n this.nav.attr({\n translateX: padding,\n translateY: clipHeight + this.padding + 7 + this.titleHeight,\n visibility: 'visible'\n });\n [this.up, this.upTracker].forEach(function (elem) {\n elem.attr({\n 'class': currentPage === 1 ?\n 'highcharts-legend-nav-inactive' :\n 'highcharts-legend-nav-active'\n });\n });\n pager.attr({\n text: currentPage + '/' + pageCount\n });\n [this.down, this.downTracker].forEach(function (elem) {\n elem.attr({\n // adjust to text width\n x: 18 + this.pager.getBBox().width,\n 'class': currentPage === pageCount ?\n 'highcharts-legend-nav-inactive' :\n 'highcharts-legend-nav-active'\n });\n }, this);\n if (!chart.styledMode) {\n this.up\n .attr({\n fill: currentPage === 1 ?\n navOptions.inactiveColor :\n navOptions.activeColor\n });\n this.upTracker\n .css({\n cursor: currentPage === 1 ? 'default' : 'pointer'\n });\n this.down\n .attr({\n fill: currentPage === pageCount ?\n navOptions.inactiveColor :\n navOptions.activeColor\n });\n this.downTracker\n .css({\n cursor: currentPage === pageCount ?\n 'default' :\n 'pointer'\n });\n }\n this.scrollOffset = -pages[currentPage - 1] + this.initialItemY;\n this.scrollGroup.animate({\n translateY: this.scrollOffset\n });\n this.currentPage = currentPage;\n this.positionCheckboxes();\n // Fire event after scroll animation is complete\n var animOptions = animObject(pick(animation,\n chart.renderer.globalAnimation,\n true));\n syncTimeout(function () {\n fireEvent(_this, 'afterScroll', { currentPage: currentPage });\n }, animOptions.duration);\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#setItemEvents\n * @param {Highcharts.BubbleLegendItem|Point|Highcharts.Series} item\n * @param {Highcharts.SVGElement} legendItem\n * @param {boolean} [useHTML=false]\n * @emits Highcharts.Point#event:legendItemClick\n * @emits Highcharts.Series#event:legendItemClick\n */\n Legend.prototype.setItemEvents = function (item, legendItem, useHTML) {\n var legend = this,\n boxWrapper = legend.chart.renderer.boxWrapper,\n isPoint = item instanceof Point,\n activeClass = 'highcharts-legend-' +\n (isPoint ? 'point' : 'series') + '-active',\n styledMode = legend.chart.styledMode, \n // When `useHTML`, the symbol is rendered in other group, so\n // we need to apply events listeners to both places\n legendItems = useHTML ?\n [legendItem,\n item.legendSymbol] :\n [item.legendGroup];\n var setOtherItemsState = function (state) {\n legend.allItems.forEach(function (otherItem) {\n if (item !== otherItem) {\n [otherItem]\n .concat(otherItem.linkedSeries || [])\n .forEach(function (otherItem) {\n otherItem.setState(state, !isPoint);\n });\n }\n });\n };\n // Set the events on the item group, or in case of useHTML, the item\n // itself (#1249)\n legendItems.forEach(function (element) {\n if (element) {\n element\n .on('mouseover', function () {\n if (item.visible) {\n setOtherItemsState('inactive');\n }\n item.setState('hover');\n // A CSS class to dim or hide other than the hovered\n // series.\n // Works only if hovered series is visible (#10071).\n if (item.visible) {\n boxWrapper.addClass(activeClass);\n }\n if (!styledMode) {\n legendItem.css(legend.options.itemHoverStyle);\n }\n })\n .on('mouseout', function () {\n if (!legend.chart.styledMode) {\n legendItem.css(merge(item.visible ?\n legend.itemStyle :\n legend.itemHiddenStyle));\n }\n setOtherItemsState('');\n // A CSS class to dim or hide other than the hovered\n // series.\n boxWrapper.removeClass(activeClass);\n item.setState();\n })\n .on('click', function (event) {\n var strLegendItemClick = 'legendItemClick',\n fnLegendItemClick = function () {\n if (item.setVisible) {\n item.setVisible();\n }\n // Reset inactive state\n setOtherItemsState(item.visible ? 'inactive' : '');\n };\n // A CSS class to dim or hide other than the hovered\n // series. Event handling in iOS causes the activeClass\n // to be added prior to click in some cases (#7418).\n boxWrapper.removeClass(activeClass);\n // Pass over the click/touch event. #4.\n event = {\n browserEvent: event\n };\n // click the name or symbol\n if (item.firePointEvent) { // point\n item.firePointEvent(strLegendItemClick, event, fnLegendItemClick);\n }\n else {\n fireEvent(item, strLegendItemClick, event, fnLegendItemClick);\n }\n });\n }\n });\n };\n /**\n * @private\n * @function Highcharts.Legend#createCheckboxForItem\n * @param {Highcharts.BubbleLegendItem|Point|Highcharts.Series} item\n * @emits Highcharts.Series#event:checkboxClick\n */\n Legend.prototype.createCheckboxForItem = function (item) {\n var legend = this;\n item.checkbox = createElement('input', {\n type: 'checkbox',\n className: 'highcharts-legend-checkbox',\n checked: item.selected,\n defaultChecked: item.selected // required by IE7\n }, legend.options.itemCheckboxStyle, legend.chart.container);\n addEvent(item.checkbox, 'click', function (event) {\n var target = event.target;\n fireEvent(item.series || item, 'checkboxClick', {\n checked: target.checked,\n item: item\n }, function () {\n item.select();\n });\n });\n };\n return Legend;\n }());\n // Workaround for #2030, horizontal legend items not displaying in IE11 Preview,\n // and for #2580, a similar drawing flaw in Firefox 26.\n // Explore if there's a general cause for this. The problem may be related\n // to nested group elements, as the legend item texts are within 4 group\n // elements.\n if (/Trident\\/7\\.0/.test(win.navigator && win.navigator.userAgent) ||\n isFirefox) {\n wrap(Legend.prototype, 'positionItem', function (proceed, item) {\n var legend = this, \n // If chart destroyed in sync, this is undefined (#2030)\n runPositionItem = function () {\n if (item._legendItemPos) {\n proceed.call(legend,\n item);\n }\n };\n // Do it now, for export and to get checkbox placement\n runPositionItem();\n // Do it after to work around the core issue\n if (!legend.bubbleLegend) {\n setTimeout(runPositionItem);\n }\n });\n }\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Gets fired when the legend item belonging to a point is clicked. The default\n * action is to toggle the visibility of the point. This can be prevented by\n * returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.PointLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Point} this\n * The point on which the event occured.\n *\n * @param {Highcharts.PointLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the legend click event.\n *\n * @interface Highcharts.PointLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.PointLegendItemClickEventObject#browserEvent\n * @type {Highcharts.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the point.\n * @name Highcharts.PointLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related point.\n * @name Highcharts.PointLegendItemClickEventObject#target\n * @type {Highcharts.Point}\n */ /**\n * Event type.\n * @name Highcharts.PointLegendItemClickEventObject#type\n * @type {\"legendItemClick\"}\n */\n /**\n * Gets fired when the legend item belonging to a series is clicked. The default\n * action is to toggle the visibility of the series. This can be prevented by\n * returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.SeriesLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the legend click event.\n *\n * @interface Highcharts.SeriesLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.SeriesLegendItemClickEventObject#browserEvent\n * @type {Highcharts.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the series.\n * @name Highcharts.SeriesLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related series.\n * @name Highcharts.SeriesLegendItemClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesLegendItemClickEventObject#type\n * @type {\"legendItemClick\"}\n */\n (''); // keeps doclets above in JS file\n\n return Legend;\n });\n _registerModule(_modules, 'Core/Series/SeriesRegistry.js', [_modules['Core/Globals.js'], _modules['Core/DefaultOptions.js'], _modules['Core/Series/Point.js'], _modules['Core/Utilities.js']], function (H, D, Point, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions;\n var error = U.error,\n extendClass = U.extendClass,\n merge = U.merge;\n /* *\n *\n * Namespace\n *\n * */\n var SeriesRegistry;\n (function (SeriesRegistry) {\n /* *\n *\n * Properties\n *\n * */\n /**\n * @internal\n * @todo Move `Globals.seriesTypes` code to her.\n */\n SeriesRegistry.seriesTypes = H.seriesTypes;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Internal function to initialize an individual series.\n * @private\n */\n function getSeries(chart, options) {\n if (options === void 0) { options = {}; }\n var optionsChart = chart.options.chart,\n type = (options.type ||\n optionsChart.type ||\n optionsChart.defaultSeriesType ||\n ''),\n SeriesClass = SeriesRegistry.seriesTypes[type];\n // No such series type\n if (!SeriesRegistry) {\n error(17, true, chart, { missingModuleFor: type });\n }\n var series = new SeriesClass();\n if (typeof series.init === 'function') {\n series.init(chart, options);\n }\n return series;\n }\n SeriesRegistry.getSeries = getSeries;\n /**\n * Registers class pattern of a series.\n *\n * @private\n */\n function registerSeriesType(seriesType, seriesClass) {\n var defaultPlotOptions = defaultOptions.plotOptions || {},\n seriesOptions = seriesClass.defaultOptions;\n if (!seriesClass.prototype.pointClass) {\n seriesClass.prototype.pointClass = Point;\n }\n seriesClass.prototype.type = seriesType;\n if (seriesOptions) {\n defaultPlotOptions[seriesType] = seriesOptions;\n }\n SeriesRegistry.seriesTypes[seriesType] = seriesClass;\n }\n SeriesRegistry.registerSeriesType = registerSeriesType;\n /**\n * Old factory to create new series prototypes.\n *\n * @deprecated\n * @function Highcharts.seriesType\n *\n * @param {string} type\n * The series type name.\n *\n * @param {string} parent\n * The parent series type name. Use `line` to inherit from the basic\n * {@link Series} object.\n *\n * @param {Highcharts.SeriesOptionsType|Highcharts.Dictionary<*>} options\n * The additional default options that are merged with the parent's options.\n *\n * @param {Highcharts.Dictionary<*>} [props]\n * The properties (functions and primitives) to set on the new prototype.\n *\n * @param {Highcharts.Dictionary<*>} [pointProps]\n * Members for a series-specific extension of the {@link Point} prototype if\n * needed.\n *\n * @return {Highcharts.Series}\n * The newly created prototype as extended from {@link Series} or its\n * derivatives.\n */\n function seriesType(type, parent, options, seriesProto, pointProto) {\n var defaultPlotOptions = defaultOptions.plotOptions || {};\n parent = parent || '';\n // Merge the options\n defaultPlotOptions[type] = merge(defaultPlotOptions[parent], options);\n // Create the class\n registerSeriesType(type, extendClass(SeriesRegistry.seriesTypes[parent] || function () { }, seriesProto));\n SeriesRegistry.seriesTypes[type].prototype.type = type;\n // Create the point class if needed\n if (pointProto) {\n SeriesRegistry.seriesTypes[type].prototype.pointClass = extendClass(Point, pointProto);\n }\n return SeriesRegistry.seriesTypes[type];\n }\n SeriesRegistry.seriesType = seriesType;\n /* eslint-enable valid-jsdoc */\n })(SeriesRegistry || (SeriesRegistry = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return SeriesRegistry;\n });\n _registerModule(_modules, 'Core/Chart/Chart.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Legend/Legend.js'], _modules['Core/MSPointer.js'], _modules['Core/DefaultOptions.js'], _modules['Core/Pointer.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Time.js'], _modules['Core/Utilities.js'], _modules['Core/Renderer/HTML/AST.js']], function (A, Axis, FormatUtilities, Foundation, H, Legend, MSPointer, D, Pointer, RendererRegistry, SeriesRegistry, SVGRenderer, Time, U, AST) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animate = A.animate,\n animObject = A.animObject,\n setAnimation = A.setAnimation;\n var numberFormat = FormatUtilities.numberFormat;\n var registerEventOptions = Foundation.registerEventOptions;\n var charts = H.charts,\n doc = H.doc,\n marginNames = H.marginNames,\n svg = H.svg,\n win = H.win;\n var defaultOptions = D.defaultOptions,\n defaultTime = D.defaultTime;\n var seriesTypes = SeriesRegistry.seriesTypes;\n var addEvent = U.addEvent,\n attr = U.attr,\n cleanRecursively = U.cleanRecursively,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n getStyle = U.getStyle,\n isArray = U.isArray,\n isFunction = U.isFunction,\n isNumber = U.isNumber,\n isObject = U.isObject,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n pInt = U.pInt,\n relativeLength = U.relativeLength,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Chart class. The recommended constructor is {@link Highcharts#chart}.\n *\n * @example\n * let chart = Highcharts.chart('container', {\n * title: {\n * text: 'My chart'\n * },\n * series: [{\n * data: [1, 3, 2, 4]\n * }]\n * })\n *\n * @class\n * @name Highcharts.Chart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external images\n * are loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n */\n var Chart = /** @class */ (function () {\n function Chart(a, b, c) {\n this.axes = void 0;\n this.axisOffset = void 0;\n this.bounds = void 0;\n this.chartHeight = void 0;\n this.chartWidth = void 0;\n this.clipBox = void 0;\n this.colorCounter = void 0;\n this.container = void 0;\n this.eventOptions = void 0;\n this.index = void 0;\n this.isResizing = void 0;\n this.labelCollectors = void 0;\n this.legend = void 0;\n this.margin = void 0;\n this.numberFormatter = void 0;\n this.options = void 0;\n this.plotBox = void 0;\n this.plotHeight = void 0;\n this.plotLeft = void 0;\n this.plotTop = void 0;\n this.plotWidth = void 0;\n this.pointCount = void 0;\n this.pointer = void 0;\n this.renderer = void 0;\n this.renderTo = void 0;\n this.series = void 0;\n this.sharedClips = {};\n this.spacing = void 0;\n this.spacingBox = void 0;\n this.symbolCounter = void 0;\n this.time = void 0;\n this.titleOffset = void 0;\n this.userOptions = void 0;\n this.xAxis = void 0;\n this.yAxis = void 0;\n this.getArgs(a, b, c);\n }\n /**\n * Factory function for basic charts.\n *\n * @example\n * // Render a chart in to div#container\n * let chart = Highcharts.chart('container', {\n * title: {\n * text: 'My chart'\n * },\n * series: [{\n * data: [1, 3, 2, 4]\n * }]\n * });\n *\n * @function Highcharts.chart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external images are\n * loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n *\n * @return {Highcharts.Chart}\n * Returns the Chart object.\n */\n Chart.chart = function (a, b, c) {\n return new Chart(a, b, c);\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Handle the arguments passed to the constructor.\n *\n * @private\n * @function Highcharts.Chart#getArgs\n *\n * @param {...Array<*>} arguments\n * All arguments for the constructor.\n *\n * @emits Highcharts.Chart#event:init\n * @emits Highcharts.Chart#event:afterInit\n */\n Chart.prototype.getArgs = function (a, b, c) {\n // Remove the optional first argument, renderTo, and\n // set it on this.\n if (isString(a) || a.nodeName) {\n this.renderTo = a;\n this.init(b, c);\n }\n else {\n this.init(a, b);\n }\n };\n /**\n * Overridable function that initializes the chart. The constructor's\n * arguments are passed on directly.\n *\n * @function Highcharts.Chart#init\n *\n * @param {Highcharts.Options} userOptions\n * Custom options.\n *\n * @param {Function} [callback]\n * Function to run when the chart has loaded and and all external\n * images are loaded.\n *\n *\n * @emits Highcharts.Chart#event:init\n * @emits Highcharts.Chart#event:afterInit\n */\n Chart.prototype.init = function (userOptions, callback) {\n // Handle regular options\n var userPlotOptions = userOptions.plotOptions || {};\n // Fire the event with a default function\n fireEvent(this, 'init', { args: arguments }, function () {\n var options = merge(defaultOptions,\n userOptions); // do the merge\n var optionsChart = options.chart;\n // Override (by copy of user options) or clear tooltip options\n // in chart.options.plotOptions (#6218)\n objectEach(options.plotOptions, function (typeOptions, type) {\n if (isObject(typeOptions)) { // #8766\n typeOptions.tooltip = (userPlotOptions[type] && // override by copy:\n merge(userPlotOptions[type].tooltip)) || void 0; // or clear\n }\n });\n // User options have higher priority than default options\n // (#6218). In case of exporting: path is changed\n options.tooltip.userOptions = (userOptions.chart &&\n userOptions.chart.forExport &&\n userOptions.tooltip.userOptions) || userOptions.tooltip;\n /**\n * The original options given to the constructor or a chart factory\n * like {@link Highcharts.chart} and {@link Highcharts.stockChart}.\n *\n * @name Highcharts.Chart#userOptions\n * @type {Highcharts.Options}\n */\n this.userOptions = userOptions;\n this.margin = [];\n this.spacing = [];\n // Pixel data bounds for touch zoom\n this.bounds = { h: {}, v: {} };\n // An array of functions that returns labels that should be\n // considered for anti-collision\n this.labelCollectors = [];\n this.callback = callback;\n this.isResizing = 0;\n /**\n * The options structure for the chart after merging\n * {@link #defaultOptions} and {@link #userOptions}. It contains\n * members for the sub elements like series, legend, tooltip etc.\n *\n * @name Highcharts.Chart#options\n * @type {Highcharts.Options}\n */\n this.options = options;\n /**\n * All the axes in the chart.\n *\n * @see Highcharts.Chart.xAxis\n * @see Highcharts.Chart.yAxis\n *\n * @name Highcharts.Chart#axes\n * @type {Array<Highcharts.Axis>}\n */\n this.axes = [];\n /**\n * All the current series in the chart.\n *\n * @name Highcharts.Chart#series\n * @type {Array<Highcharts.Series>}\n */\n this.series = [];\n /**\n * The `Time` object associated with the chart. Since v6.0.5,\n * time settings can be applied individually for each chart. If\n * no individual settings apply, the `Time` object is shared by\n * all instances.\n *\n * @name Highcharts.Chart#time\n * @type {Highcharts.Time}\n */\n this.time =\n userOptions.time && Object.keys(userOptions.time).length ?\n new Time(userOptions.time) :\n H.time;\n /**\n * Callback function to override the default function that formats\n * all the numbers in the chart. Returns a string with the formatted\n * number.\n *\n * @name Highcharts.Chart#numberFormatter\n * @type {Highcharts.NumberFormatterCallbackFunction}\n */\n this.numberFormatter = optionsChart.numberFormatter || numberFormat;\n /**\n * Whether the chart is in styled mode, meaning all presentatinoal\n * attributes are avoided.\n *\n * @name Highcharts.Chart#styledMode\n * @type {boolean}\n */\n this.styledMode = optionsChart.styledMode;\n this.hasCartesianSeries = optionsChart.showAxes;\n var chart = this;\n /**\n * Index position of the chart in the {@link Highcharts#charts}\n * property.\n *\n * @name Highcharts.Chart#index\n * @type {number}\n * @readonly\n */\n chart.index = charts.length; // Add the chart to the global lookup\n charts.push(chart);\n H.chartCount++;\n // Chart event handlers\n registerEventOptions(this, optionsChart);\n /**\n * A collection of the X axes in the chart.\n *\n * @name Highcharts.Chart#xAxis\n * @type {Array<Highcharts.Axis>}\n */\n chart.xAxis = [];\n /**\n * A collection of the Y axes in the chart.\n *\n * @name Highcharts.Chart#yAxis\n * @type {Array<Highcharts.Axis>}\n *\n * @todo\n * Make events official: Fire the event `afterInit`.\n */\n chart.yAxis = [];\n chart.pointCount = chart.colorCounter = chart.symbolCounter = 0;\n // Fire after init but before first render, before axes and series\n // have been initialized.\n fireEvent(chart, 'afterInit');\n chart.firstRender();\n });\n };\n /**\n * Internal function to unitialize an individual series.\n *\n * @private\n * @function Highcharts.Chart#initSeries\n */\n Chart.prototype.initSeries = function (options) {\n var chart = this,\n optionsChart = chart.options.chart,\n type = (options.type ||\n optionsChart.type ||\n optionsChart.defaultSeriesType),\n SeriesClass = seriesTypes[type];\n // No such series type\n if (!SeriesClass) {\n error(17, true, chart, { missingModuleFor: type });\n }\n var series = new SeriesClass();\n if (typeof series.init === 'function') {\n series.init(chart, options);\n }\n return series;\n };\n /**\n * Internal function to set data for all series with enabled sorting.\n *\n * @private\n * @function Highcharts.Chart#setSeriesData\n */\n Chart.prototype.setSeriesData = function () {\n this.getSeriesOrderByLinks().forEach(function (series) {\n // We need to set data for series with sorting after series init\n if (!series.points && !series.data && series.enabledDataSorting) {\n series.setData(series.options.data, false);\n }\n });\n };\n /**\n * Sort and return chart series in order depending on the number of linked\n * series.\n *\n * @private\n * @function Highcharts.Series#getSeriesOrderByLinks\n */\n Chart.prototype.getSeriesOrderByLinks = function () {\n return this.series.concat().sort(function (a, b) {\n if (a.linkedSeries.length || b.linkedSeries.length) {\n return b.linkedSeries.length - a.linkedSeries.length;\n }\n return 0;\n });\n };\n /**\n * Order all series above a given index. When series are added and ordered\n * by configuration, only the last series is handled (#248, #1123, #2456,\n * #6112). This function is called on series initialization and destroy.\n *\n * @private\n * @function Highcharts.Series#orderSeries\n * @param {number} [fromIndex]\n * If this is given, only the series above this index are handled.\n */\n Chart.prototype.orderSeries = function (fromIndex) {\n var series = this.series;\n for (var i = (fromIndex || 0), iEnd = series.length; i < iEnd; ++i) {\n if (series[i]) {\n /**\n * Contains the series' index in the `Chart.series` array.\n *\n * @name Highcharts.Series#index\n * @type {number}\n * @readonly\n */\n series[i].index = i;\n series[i].name = series[i].getName();\n }\n }\n };\n /**\n * Check whether a given point is within the plot area.\n *\n * @function Highcharts.Chart#isInsidePlot\n *\n * @param {number} plotX\n * Pixel x relative to the plot area.\n *\n * @param {number} plotY\n * Pixel y relative to the plot area.\n *\n * @param {Highcharts.ChartIsInsideOptionsObject} [options]\n * Options object.\n *\n * @return {boolean}\n * Returns true if the given point is inside the plot area.\n */\n Chart.prototype.isInsidePlot = function (plotX, plotY, options) {\n var _a;\n if (options === void 0) { options = {}; }\n var _b = this,\n inverted = _b.inverted,\n plotBox = _b.plotBox,\n plotLeft = _b.plotLeft,\n plotTop = _b.plotTop,\n scrollablePlotBox = _b.scrollablePlotBox;\n var scrollLeft = 0,\n scrollTop = 0;\n if (options.visiblePlotOnly && this.scrollingContainer) {\n (_a = this.scrollingContainer, scrollLeft = _a.scrollLeft, scrollTop = _a.scrollTop);\n }\n var series = options.series,\n box = (options.visiblePlotOnly && scrollablePlotBox) || plotBox,\n x = options.inverted ? plotY : plotX,\n y = options.inverted ? plotX : plotY,\n e = {\n x: x,\n y: y,\n isInsidePlot: true\n };\n if (!options.ignoreX) {\n var xAxis = (series && (inverted ? series.yAxis : series.xAxis)) || {\n pos: plotLeft,\n len: Infinity\n };\n var chartX = options.paneCoordinates ?\n xAxis.pos + x : plotLeft + x;\n if (!(chartX >= Math.max(scrollLeft + plotLeft, xAxis.pos) &&\n chartX <= Math.min(scrollLeft + plotLeft + box.width, xAxis.pos + xAxis.len))) {\n e.isInsidePlot = false;\n }\n }\n if (!options.ignoreY && e.isInsidePlot) {\n var yAxis = (series && (inverted ? series.xAxis : series.yAxis)) || {\n pos: plotTop,\n len: Infinity\n };\n var chartY = options.paneCoordinates ?\n yAxis.pos + y : plotTop + y;\n if (!(chartY >= Math.max(scrollTop + plotTop, yAxis.pos) &&\n chartY <= Math.min(scrollTop + plotTop + box.height, yAxis.pos + yAxis.len))) {\n e.isInsidePlot = false;\n }\n }\n fireEvent(this, 'afterIsInsidePlot', e);\n return e.isInsidePlot;\n };\n /**\n * Redraw the chart after changes have been done to the data, axis extremes\n * chart size or chart elements. All methods for updating axes, series or\n * points have a parameter for redrawing the chart. This is `true` by\n * default. But in many cases you want to do more than one operation on the\n * chart before redrawing, for example add a number of points. In those\n * cases it is a waste of resources to redraw the chart for each new point\n * added. So you add the points and call `chart.redraw()` after.\n *\n * @function Highcharts.Chart#redraw\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * If or how to apply animation to the redraw.\n *\n * @emits Highcharts.Chart#event:afterSetExtremes\n * @emits Highcharts.Chart#event:beforeRedraw\n * @emits Highcharts.Chart#event:predraw\n * @emits Highcharts.Chart#event:redraw\n * @emits Highcharts.Chart#event:render\n * @emits Highcharts.Chart#event:updatedData\n */\n Chart.prototype.redraw = function (animation) {\n fireEvent(this, 'beforeRedraw');\n var chart = this,\n axes = chart.hasCartesianSeries ? chart.axes : chart.colorAxis || [],\n series = chart.series,\n pointer = chart.pointer,\n legend = chart.legend,\n legendUserOptions = chart.userOptions.legend,\n renderer = chart.renderer,\n isHiddenChart = renderer.isHidden(),\n afterRedraw = [];\n var hasDirtyStacks,\n hasStackedSeries,\n i,\n isDirtyBox = chart.isDirtyBox,\n redrawLegend = chart.isDirtyLegend,\n serie;\n // Handle responsive rules, not only on resize (#6130)\n if (chart.setResponsive) {\n chart.setResponsive(false);\n }\n // Set the global animation. When chart.hasRendered is not true, the\n // redraw call comes from a responsive rule and animation should not\n // occur.\n setAnimation(chart.hasRendered ? animation : false, chart);\n if (isHiddenChart) {\n chart.temporaryDisplay();\n }\n // Adjust title layout (reflow multiline text)\n chart.layOutTitles();\n // link stacked series\n i = series.length;\n while (i--) {\n serie = series[i];\n if (serie.options.stacking || serie.options.centerInCategory) {\n hasStackedSeries = true;\n if (serie.isDirty) {\n hasDirtyStacks = true;\n break;\n }\n }\n }\n if (hasDirtyStacks) { // mark others as dirty\n i = series.length;\n while (i--) {\n serie = series[i];\n if (serie.options.stacking) {\n serie.isDirty = true;\n }\n }\n }\n // Handle updated data in the series\n series.forEach(function (serie) {\n if (serie.isDirty) {\n if (serie.options.legendType === 'point') {\n if (typeof serie.updateTotals === 'function') {\n serie.updateTotals();\n }\n redrawLegend = true;\n }\n else if (legendUserOptions &&\n (legendUserOptions.labelFormatter ||\n legendUserOptions.labelFormat)) {\n redrawLegend = true; // #2165\n }\n }\n if (serie.isDirtyData) {\n fireEvent(serie, 'updatedData');\n }\n });\n // handle added or removed series\n if (redrawLegend && legend && legend.options.enabled) {\n // draw legend graphics\n legend.render();\n chart.isDirtyLegend = false;\n }\n // reset stacks\n if (hasStackedSeries) {\n chart.getStacks();\n }\n // set axes scales\n axes.forEach(function (axis) {\n axis.updateNames();\n axis.setScale();\n });\n chart.getMargins(); // #3098\n // If one axis is dirty, all axes must be redrawn (#792, #2169)\n axes.forEach(function (axis) {\n if (axis.isDirty) {\n isDirtyBox = true;\n }\n });\n // redraw axes\n axes.forEach(function (axis) {\n // Fire 'afterSetExtremes' only if extremes are set\n var key = axis.min + ',' + axis.max;\n if (axis.extKey !== key) { // #821, #4452\n axis.extKey = key;\n // prevent a recursive call to chart.redraw() (#1119)\n afterRedraw.push(function () {\n fireEvent(axis, 'afterSetExtremes', extend(axis.eventArgs, axis.getExtremes())); // #747, #751\n delete axis.eventArgs;\n });\n }\n if (isDirtyBox || hasStackedSeries) {\n axis.redraw();\n }\n });\n // the plot areas size has changed\n if (isDirtyBox) {\n chart.drawChartBox();\n }\n // Fire an event before redrawing series, used by the boost module to\n // clear previous series renderings.\n fireEvent(chart, 'predraw');\n // redraw affected series\n series.forEach(function (serie) {\n if ((isDirtyBox || serie.isDirty) && serie.visible) {\n serie.redraw();\n }\n // Set it here, otherwise we will have unlimited 'updatedData' calls\n // for a hidden series after setData(). Fixes #6012\n serie.isDirtyData = false;\n });\n // move tooltip or reset\n if (pointer) {\n pointer.reset(true);\n }\n // redraw if canvas\n renderer.draw();\n // Fire the events\n fireEvent(chart, 'redraw');\n fireEvent(chart, 'render');\n if (isHiddenChart) {\n chart.temporaryDisplay(true);\n }\n // Fire callbacks that are put on hold until after the redraw\n afterRedraw.forEach(function (callback) {\n callback.call();\n });\n };\n /**\n * Get an axis, series or point object by `id` as given in the configuration\n * options. Returns `undefined` if no item is found.\n *\n * @sample highcharts/plotoptions/series-id/\n * Get series by id\n *\n * @function Highcharts.Chart#get\n *\n * @param {string} id\n * The id as given in the configuration options.\n *\n * @return {Highcharts.Axis|Highcharts.Series|Highcharts.Point|undefined}\n * The retrieved item.\n */\n Chart.prototype.get = function (id) {\n var series = this.series;\n /**\n * @private\n */\n function itemById(item) {\n return (item.id === id ||\n (item.options && item.options.id === id));\n }\n var ret = \n // Search axes\n find(this.axes,\n itemById) ||\n // Search series\n find(this.series,\n itemById);\n // Search points\n for (var i = 0; !ret && i < series.length; i++) {\n ret = find(series[i].points || [], itemById);\n }\n return ret;\n };\n /**\n * Create the Axis instances based on the config options.\n *\n * @private\n * @function Highcharts.Chart#getAxes\n * @emits Highcharts.Chart#event:afterGetAxes\n * @emits Highcharts.Chart#event:getAxes\n */\n Chart.prototype.getAxes = function () {\n var chart = this,\n options = this.options,\n xAxisOptions = options.xAxis = splat(options.xAxis || {}),\n yAxisOptions = options.yAxis = splat(options.yAxis || {});\n fireEvent(this, 'getAxes');\n // make sure the options are arrays and add some members\n xAxisOptions.forEach(function (axis, i) {\n axis.index = i;\n axis.isX = true;\n });\n yAxisOptions.forEach(function (axis, i) {\n axis.index = i;\n });\n // concatenate all axis options into one array\n var optionsArray = xAxisOptions.concat(yAxisOptions);\n optionsArray.forEach(function (axisOptions) {\n new Axis(chart, axisOptions); // eslint-disable-line no-new\n });\n fireEvent(this, 'afterGetAxes');\n };\n /**\n * Returns an array of all currently selected points in the chart. Points\n * can be selected by clicking or programmatically by the\n * {@link Highcharts.Point#select}\n * function.\n *\n * @sample highcharts/plotoptions/series-allowpointselect-line/\n * Get selected points\n *\n * @function Highcharts.Chart#getSelectedPoints\n *\n * @return {Array<Highcharts.Point>}\n * The currently selected points.\n */\n Chart.prototype.getSelectedPoints = function () {\n return this.series.reduce(function (acc, series) {\n // For one-to-one points inspect series.data in order to retrieve\n // points outside the visible range (#6445). For grouped data,\n // inspect the generated series.points.\n series.getPointsCollection()\n .forEach(function (point) {\n if (pick(point.selectedStaging, point.selected)) {\n acc.push(point);\n }\n });\n return acc;\n }, []);\n };\n /**\n * Returns an array of all currently selected series in the chart. Series\n * can be selected either programmatically by the\n * {@link Highcharts.Series#select}\n * function or by checking the checkbox next to the legend item if\n * [series.showCheckBox](https://api.highcharts.com/highcharts/plotOptions.series.showCheckbox)\n * is true.\n *\n * @sample highcharts/members/chart-getselectedseries/\n * Get selected series\n *\n * @function Highcharts.Chart#getSelectedSeries\n *\n * @return {Array<Highcharts.Series>}\n * The currently selected series.\n */\n Chart.prototype.getSelectedSeries = function () {\n return this.series.filter(function (serie) {\n return serie.selected;\n });\n };\n /**\n * Set a new title or subtitle for the chart.\n *\n * @sample highcharts/members/chart-settitle/\n * Set title text and styles\n *\n * @function Highcharts.Chart#setTitle\n *\n * @param {Highcharts.TitleOptions} [titleOptions]\n * New title options. The title text itself is set by the\n * `titleOptions.text` property.\n *\n * @param {Highcharts.SubtitleOptions} [subtitleOptions]\n * New subtitle options. The subtitle text itself is set by the\n * `subtitleOptions.text` property.\n *\n * @param {boolean} [redraw]\n * Whether to redraw the chart or wait for a later call to\n * `chart.redraw()`.\n */\n Chart.prototype.setTitle = function (titleOptions, subtitleOptions, redraw) {\n this.applyDescription('title', titleOptions);\n this.applyDescription('subtitle', subtitleOptions);\n // The initial call also adds the caption. On update, chart.update will\n // relay to Chart.setCaption.\n this.applyDescription('caption', void 0);\n this.layOutTitles(redraw);\n };\n /**\n * Apply a title, subtitle or caption for the chart\n *\n * @private\n * @function Highcharts.Chart#applyDescription\n * @param name {string}\n * Either title, subtitle or caption\n * @param {Highcharts.TitleOptions|Highcharts.SubtitleOptions|Highcharts.CaptionOptions|undefined} explicitOptions\n * The options to set, will be merged with default options.\n */\n Chart.prototype.applyDescription = function (name, explicitOptions) {\n var chart = this;\n // Default style\n var style = name === 'title' ? {\n color: \"#333333\" /* neutralColor80 */,\n fontSize: this.options.isStock ? '16px' : '18px' // #2944\n } : {\n color: \"#666666\" /* neutralColor60 */\n };\n // Merge default options with explicit options\n var options = this.options[name] = merge(\n // Default styles\n (!this.styledMode && { style: style }),\n this.options[name],\n explicitOptions);\n var elem = this[name];\n if (elem && explicitOptions) {\n this[name] = elem = elem.destroy(); // remove old\n }\n if (options && !elem) {\n elem = this.renderer.text(options.text, 0, 0, options.useHTML)\n .attr({\n align: options.align,\n 'class': 'highcharts-' + name,\n zIndex: options.zIndex || 4\n })\n .add();\n // Update methods, shortcut to Chart.setTitle, Chart.setSubtitle and\n // Chart.setCaption\n elem.update = function (updateOptions) {\n var fn = {\n title: 'setTitle',\n subtitle: 'setSubtitle',\n caption: 'setCaption'\n }[name];\n chart[fn](updateOptions);\n };\n // Presentational\n if (!this.styledMode) {\n elem.css(options.style);\n }\n /**\n * The chart title. The title has an `update` method that allows\n * modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @sample highcharts/members/title-update/\n * Updating titles\n *\n * @name Highcharts.Chart#title\n * @type {Highcharts.TitleObject}\n */\n /**\n * The chart subtitle. The subtitle has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @name Highcharts.Chart#subtitle\n * @type {Highcharts.SubtitleObject}\n */\n this[name] = elem;\n }\n };\n /**\n * Internal function to lay out the chart title, subtitle and caption, and\n * cache the full offset height for use in `getMargins`. The result is\n * stored in `this.titleOffset`.\n *\n * @private\n * @function Highcharts.Chart#layOutTitles\n *\n * @param {boolean} [redraw=true]\n * @emits Highcharts.Chart#event:afterLayOutTitles\n */\n Chart.prototype.layOutTitles = function (redraw) {\n var titleOffset = [0, 0, 0],\n renderer = this.renderer,\n spacingBox = this.spacingBox;\n // Lay out the title and the subtitle respectively\n ['title', 'subtitle', 'caption'].forEach(function (key) {\n var title = this[key], titleOptions = (this.options[key]), verticalAlign = titleOptions.verticalAlign || 'top', offset = key === 'title' ?\n verticalAlign === 'top' ? -3 : 0 :\n // Floating subtitle (#6574)\n verticalAlign === 'top' ? titleOffset[0] + 2 : 0;\n var titleSize,\n height;\n if (title) {\n if (!this.styledMode) {\n titleSize = (titleOptions.style &&\n titleOptions.style.fontSize);\n }\n titleSize = renderer.fontMetrics(titleSize, title).b;\n title\n .css({\n width: (titleOptions.width ||\n spacingBox.width + (titleOptions.widthAdjust || 0)) + 'px'\n });\n // Skip the cache for HTML (#3481, #11666)\n height = Math.round(title.getBBox(titleOptions.useHTML).height);\n title.align(extend({\n y: verticalAlign === 'bottom' ?\n titleSize :\n offset + titleSize,\n height: height\n }, titleOptions), false, 'spacingBox');\n if (!titleOptions.floating) {\n if (verticalAlign === 'top') {\n titleOffset[0] = Math.ceil(titleOffset[0] +\n height);\n }\n else if (verticalAlign === 'bottom') {\n titleOffset[2] = Math.ceil(titleOffset[2] +\n height);\n }\n }\n }\n }, this);\n // Handle title.margin and caption.margin\n if (titleOffset[0] &&\n (this.options.title.verticalAlign || 'top') === 'top') {\n titleOffset[0] += this.options.title.margin;\n }\n if (titleOffset[2] &&\n this.options.caption.verticalAlign === 'bottom') {\n titleOffset[2] += this.options.caption.margin;\n }\n var requiresDirtyBox = (!this.titleOffset ||\n this.titleOffset.join(',') !== titleOffset.join(','));\n // Used in getMargins\n this.titleOffset = titleOffset;\n fireEvent(this, 'afterLayOutTitles');\n if (!this.isDirtyBox && requiresDirtyBox) {\n this.isDirtyBox = this.isDirtyLegend = requiresDirtyBox;\n // Redraw if necessary (#2719, #2744)\n if (this.hasRendered && pick(redraw, true) && this.isDirtyBox) {\n this.redraw();\n }\n }\n };\n /**\n * Internal function to get the chart width and height according to options\n * and container size. Sets {@link Chart.chartWidth} and\n * {@link Chart.chartHeight}.\n *\n * @private\n * @function Highcharts.Chart#getChartSize\n */\n Chart.prototype.getChartSize = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n widthOption = optionsChart.width,\n heightOption = optionsChart.height,\n renderTo = chart.renderTo;\n // Get inner width and height\n if (!defined(widthOption)) {\n chart.containerWidth = getStyle(renderTo, 'width');\n }\n if (!defined(heightOption)) {\n chart.containerHeight = getStyle(renderTo, 'height');\n }\n /**\n * The current pixel width of the chart.\n *\n * @name Highcharts.Chart#chartWidth\n * @type {number}\n */\n chart.chartWidth = Math.max(// #1393\n 0, widthOption || chart.containerWidth || 600 // #1460\n );\n /**\n * The current pixel height of the chart.\n *\n * @name Highcharts.Chart#chartHeight\n * @type {number}\n */\n chart.chartHeight = Math.max(0, relativeLength(heightOption, chart.chartWidth) ||\n (chart.containerHeight > 1 ?\n chart.containerHeight :\n 400));\n };\n /**\n * If the renderTo element has no offsetWidth, most likely one or more of\n * its parents are hidden. Loop up the DOM tree to temporarily display the\n * parents, then save the original display properties, and when the true\n * size is retrieved, reset them. Used on first render and on redraws.\n *\n * @private\n * @function Highcharts.Chart#temporaryDisplay\n *\n * @param {boolean} [revert]\n * Revert to the saved original styles.\n */\n Chart.prototype.temporaryDisplay = function (revert) {\n var node = this.renderTo,\n tempStyle;\n if (!revert) {\n while (node && node.style) {\n // When rendering to a detached node, it needs to be temporarily\n // attached in order to read styling and bounding boxes (#5783,\n // #7024).\n if (!doc.body.contains(node) && !node.parentNode) {\n node.hcOrigDetached = true;\n doc.body.appendChild(node);\n }\n if (getStyle(node, 'display', false) === 'none' ||\n node.hcOricDetached) {\n node.hcOrigStyle = {\n display: node.style.display,\n height: node.style.height,\n overflow: node.style.overflow\n };\n tempStyle = {\n display: 'block',\n overflow: 'hidden'\n };\n if (node !== this.renderTo) {\n tempStyle.height = 0;\n }\n css(node, tempStyle);\n // If it still doesn't have an offset width after setting\n // display to block, it probably has an !important priority\n // #2631, 6803\n if (!node.offsetWidth) {\n node.style.setProperty('display', 'block', 'important');\n }\n }\n node = node.parentNode;\n if (node === doc.body) {\n break;\n }\n }\n }\n else {\n while (node && node.style) {\n if (node.hcOrigStyle) {\n css(node, node.hcOrigStyle);\n delete node.hcOrigStyle;\n }\n if (node.hcOrigDetached) {\n doc.body.removeChild(node);\n node.hcOrigDetached = false;\n }\n node = node.parentNode;\n }\n }\n };\n /**\n * Set the {@link Chart.container|chart container's} class name, in\n * addition to `highcharts-container`.\n *\n * @function Highcharts.Chart#setClassName\n *\n * @param {string} [className]\n * The additional class name.\n */\n Chart.prototype.setClassName = function (className) {\n this.container.className = 'highcharts-container ' + (className || '');\n };\n /**\n * Get the containing element, determine the size and create the inner\n * container div to hold the chart.\n *\n * @private\n * @function Highcharts.Chart#afterGetContainer\n * @emits Highcharts.Chart#event:afterGetContainer\n */\n Chart.prototype.getContainer = function () {\n var chart = this,\n options = chart.options,\n optionsChart = options.chart,\n indexAttrName = 'data-highcharts-chart',\n containerId = uniqueKey();\n var containerStyle,\n renderTo = chart.renderTo;\n if (!renderTo) {\n chart.renderTo = renderTo =\n optionsChart.renderTo;\n }\n if (isString(renderTo)) {\n chart.renderTo = renderTo =\n doc.getElementById(renderTo);\n }\n // Display an error if the renderTo is wrong\n if (!renderTo) {\n error(13, true, chart);\n }\n // If the container already holds a chart, destroy it. The check for\n // hasRendered is there because web pages that are saved to disk from\n // the browser, will preserve the data-highcharts-chart attribute and\n // the SVG contents, but not an interactive chart. So in this case,\n // charts[oldChartIndex] will point to the wrong chart if any (#2609).\n var oldChartIndex = pInt(attr(renderTo,\n indexAttrName));\n if (isNumber(oldChartIndex) &&\n charts[oldChartIndex] &&\n charts[oldChartIndex].hasRendered) {\n charts[oldChartIndex].destroy();\n }\n // Make a reference to the chart from the div\n attr(renderTo, indexAttrName, chart.index);\n // remove previous chart\n renderTo.innerHTML = AST.emptyHTML;\n // If the container doesn't have an offsetWidth, it has or is a child of\n // a node that has display:none. We need to temporarily move it out to a\n // visible state to determine the size, else the legend and tooltips\n // won't render properly. The skipClone option is used in sparklines as\n // a micro optimization, saving about 1-2 ms each chart.\n if (!optionsChart.skipClone && !renderTo.offsetWidth) {\n chart.temporaryDisplay();\n }\n // get the width and height\n chart.getChartSize();\n var chartWidth = chart.chartWidth;\n var chartHeight = chart.chartHeight;\n // Allow table cells and flex-boxes to shrink without the chart blocking\n // them out (#6427)\n css(renderTo, { overflow: 'hidden' });\n // Create the inner container\n if (!chart.styledMode) {\n containerStyle = extend({\n position: 'relative',\n // needed for context menu (avoidscrollbars) and content\n // overflow in IE\n overflow: 'hidden',\n width: chartWidth + 'px',\n height: chartHeight + 'px',\n textAlign: 'left',\n lineHeight: 'normal',\n zIndex: 0,\n '-webkit-tap-highlight-color': 'rgba(0,0,0,0)',\n userSelect: 'none',\n 'touch-action': 'manipulation',\n outline: 'none'\n }, optionsChart.style || {});\n }\n /**\n * The containing HTML element of the chart. The container is\n * dynamically inserted into the element given as the `renderTo`\n * parameter in the {@link Highcharts#chart} constructor.\n *\n * @name Highcharts.Chart#container\n * @type {Highcharts.HTMLDOMElement}\n */\n var container = createElement('div', {\n id: containerId\n },\n containerStyle,\n renderTo);\n chart.container = container;\n // cache the cursor (#1650)\n chart._cursor = container.style.cursor;\n // Initialize the renderer\n var Renderer = optionsChart.renderer || !svg ?\n RendererRegistry.getRendererType(optionsChart.renderer) :\n SVGRenderer;\n /**\n * The renderer instance of the chart. Each chart instance has only one\n * associated renderer.\n *\n * @name Highcharts.Chart#renderer\n * @type {Highcharts.SVGRenderer}\n */\n chart.renderer = new Renderer(container, chartWidth, chartHeight, void 0, optionsChart.forExport, options.exporting && options.exporting.allowHTML, chart.styledMode);\n // Set the initial animation from the options\n setAnimation(void 0, chart);\n chart.setClassName(optionsChart.className);\n if (!chart.styledMode) {\n chart.renderer.setStyle(optionsChart.style);\n }\n else {\n // Initialize definitions\n for (var key in options.defs) { // eslint-disable-line guard-for-in\n this.renderer.definition(options.defs[key]);\n }\n }\n // Add a reference to the charts index\n chart.renderer.chartIndex = chart.index;\n fireEvent(this, 'afterGetContainer');\n };\n /**\n * Calculate margins by rendering axis labels in a preliminary position.\n * Title, subtitle and legend have already been rendered at this stage, but\n * will be moved into their final positions.\n *\n * @private\n * @function Highcharts.Chart#getMargins\n * @emits Highcharts.Chart#event:getMargins\n */\n Chart.prototype.getMargins = function (skipAxes) {\n var _a = this,\n spacing = _a.spacing,\n margin = _a.margin,\n titleOffset = _a.titleOffset;\n this.resetMargins();\n // Adjust for title and subtitle\n if (titleOffset[0] && !defined(margin[0])) {\n this.plotTop = Math.max(this.plotTop, titleOffset[0] + spacing[0]);\n }\n if (titleOffset[2] && !defined(margin[2])) {\n this.marginBottom = Math.max(this.marginBottom, titleOffset[2] + spacing[2]);\n }\n // Adjust for legend\n if (this.legend && this.legend.display) {\n this.legend.adjustMargins(margin, spacing);\n }\n fireEvent(this, 'getMargins');\n if (!skipAxes) {\n this.getAxisMargins();\n }\n };\n /**\n * @private\n * @function Highcharts.Chart#getAxisMargins\n */\n Chart.prototype.getAxisMargins = function () {\n var chart = this, \n // [top, right, bottom, left]\n axisOffset = chart.axisOffset = [0, 0, 0, 0],\n colorAxis = chart.colorAxis,\n margin = chart.margin,\n getOffset = function (axes) {\n axes.forEach(function (axis) {\n if (axis.visible) {\n axis.getOffset();\n }\n });\n };\n // pre-render axes to get labels offset width\n if (chart.hasCartesianSeries) {\n getOffset(chart.axes);\n }\n else if (colorAxis && colorAxis.length) {\n getOffset(colorAxis);\n }\n // Add the axis offsets\n marginNames.forEach(function (m, side) {\n if (!defined(margin[side])) {\n chart[m] += axisOffset[side];\n }\n });\n chart.setChartSize();\n };\n /**\n * Reflows the chart to its container. By default, the chart reflows\n * automatically to its container following a `window.resize` event, as per\n * the [chart.reflow](https://api.highcharts.com/highcharts/chart.reflow)\n * option. However, there are no reliable events for div resize, so if the\n * container is resized without a window resize event, this must be called\n * explicitly.\n *\n * @sample highcharts/members/chart-reflow/\n * Resize div and reflow\n * @sample highcharts/chart/events-container/\n * Pop up and reflow\n *\n * @function Highcharts.Chart#reflow\n *\n * @param {global.Event} [e]\n * Event arguments. Used primarily when the function is called\n * internally as a response to window resize.\n */\n Chart.prototype.reflow = function (e) {\n var chart = this, optionsChart = chart.options.chart, renderTo = chart.renderTo, hasUserSize = (defined(optionsChart.width) &&\n defined(optionsChart.height)), width = optionsChart.width || getStyle(renderTo, 'width'), height = optionsChart.height || getStyle(renderTo, 'height'), target = e ? e.target : win;\n delete chart.pointer.chartPosition;\n // Width and height checks for display:none. Target is doc in IE8 and\n // Opera, win in Firefox, Chrome and IE9.\n if (!hasUserSize &&\n !chart.isPrinting &&\n width &&\n height &&\n (target === win || target === doc)) {\n if (width !== chart.containerWidth ||\n height !== chart.containerHeight) {\n U.clearTimeout(chart.reflowTimeout);\n // When called from window.resize, e is set, else it's called\n // directly (#2224)\n chart.reflowTimeout = syncTimeout(function () {\n // Set size, it may have been destroyed in the meantime\n // (#1257)\n if (chart.container) {\n chart.setSize(void 0, void 0, false);\n }\n }, e ? 100 : 0);\n }\n chart.containerWidth = width;\n chart.containerHeight = height;\n }\n };\n /**\n * Toggle the event handlers necessary for auto resizing, depending on the\n * `chart.reflow` option.\n *\n * @private\n * @function Highcharts.Chart#setReflow\n */\n Chart.prototype.setReflow = function (reflow) {\n var chart = this;\n if (reflow !== false && !this.unbindReflow) {\n this.unbindReflow = addEvent(win, 'resize', function (e) {\n // a removed event listener still runs in Edge and IE if the\n // listener was removed while the event runs, so check if the\n // chart is not destroyed (#11609)\n if (chart.options) {\n chart.reflow(e);\n }\n });\n addEvent(this, 'destroy', this.unbindReflow);\n }\n else if (reflow === false && this.unbindReflow) {\n // Unbind and unset\n this.unbindReflow = this.unbindReflow();\n }\n // The following will add listeners to re-fit the chart before and after\n // printing (#2284). However it only works in WebKit. Should have worked\n // in Firefox, but not supported in IE.\n /*\n if (win.matchMedia) {\n win.matchMedia('print').addListener(function reflow() {\n chart.reflow();\n });\n }\n //*/\n };\n /**\n * Resize the chart to a given width and height. In order to set the width\n * only, the height argument may be skipped. To set the height only, pass\n * `undefined` for the width.\n *\n * @sample highcharts/members/chart-setsize-button/\n * Test resizing from buttons\n * @sample highcharts/members/chart-setsize-jquery-resizable/\n * Add a jQuery UI resizable\n * @sample stock/members/chart-setsize/\n * Highcharts Stock with UI resizable\n *\n * @function Highcharts.Chart#setSize\n *\n * @param {number|null} [width]\n * The new pixel width of the chart. Since v4.2.6, the argument can\n * be `undefined` in order to preserve the current value (when\n * setting height only), or `null` to adapt to the width of the\n * containing element.\n *\n * @param {number|null} [height]\n * The new pixel height of the chart. Since v4.2.6, the argument can\n * be `undefined` in order to preserve the current value, or `null`\n * in order to adapt to the height of the containing element.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=true]\n * Whether and how to apply animation.\n *\n *\n * @emits Highcharts.Chart#event:endResize\n * @emits Highcharts.Chart#event:resize\n */\n Chart.prototype.setSize = function (width, height, animation) {\n var chart = this,\n renderer = chart.renderer;\n // Handle the isResizing counter\n chart.isResizing += 1;\n // set the animation for the current process\n setAnimation(animation, chart);\n var globalAnimation = renderer.globalAnimation;\n chart.oldChartHeight = chart.chartHeight;\n chart.oldChartWidth = chart.chartWidth;\n if (typeof width !== 'undefined') {\n chart.options.chart.width = width;\n }\n if (typeof height !== 'undefined') {\n chart.options.chart.height = height;\n }\n chart.getChartSize();\n // Resize the container with the global animation applied if enabled\n // (#2503)\n if (!chart.styledMode) {\n (globalAnimation ? animate : css)(chart.container, {\n width: chart.chartWidth + 'px',\n height: chart.chartHeight + 'px'\n }, globalAnimation);\n }\n chart.setChartSize(true);\n renderer.setSize(chart.chartWidth, chart.chartHeight, globalAnimation);\n // handle axes\n chart.axes.forEach(function (axis) {\n axis.isDirty = true;\n axis.setScale();\n });\n chart.isDirtyLegend = true; // force legend redraw\n chart.isDirtyBox = true; // force redraw of plot and chart border\n chart.layOutTitles(); // #2857\n chart.getMargins();\n chart.redraw(globalAnimation);\n chart.oldChartHeight = null;\n fireEvent(chart, 'resize');\n // Fire endResize and set isResizing back. If animation is disabled,\n // fire without delay\n syncTimeout(function () {\n if (chart) {\n fireEvent(chart, 'endResize', null, function () {\n chart.isResizing -= 1;\n });\n }\n }, animObject(globalAnimation).duration);\n };\n /**\n * Set the public chart properties. This is done before and after the\n * pre-render to determine margin sizes.\n *\n * @private\n * @function Highcharts.Chart#setChartSize\n * @emits Highcharts.Chart#event:afterSetChartSize\n */\n Chart.prototype.setChartSize = function (skipAxes) {\n var chart = this,\n inverted = chart.inverted,\n renderer = chart.renderer,\n chartWidth = chart.chartWidth,\n chartHeight = chart.chartHeight,\n optionsChart = chart.options.chart,\n spacing = chart.spacing,\n clipOffset = chart.clipOffset;\n var plotLeft,\n plotTop,\n plotWidth,\n plotHeight;\n /**\n * The current left position of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotLeft\n * @type {number}\n */\n chart.plotLeft = plotLeft = Math.round(chart.plotLeft);\n /**\n * The current top position of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotTop\n * @type {number}\n */\n chart.plotTop = plotTop = Math.round(chart.plotTop);\n /**\n * The current width of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotWidth\n * @type {number}\n */\n chart.plotWidth = plotWidth = Math.max(0, Math.round(chartWidth - plotLeft - chart.marginRight));\n /**\n * The current height of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotHeight\n * @type {number}\n */\n chart.plotHeight = plotHeight = Math.max(0, Math.round(chartHeight - plotTop - chart.marginBottom));\n chart.plotSizeX = inverted ? plotHeight : plotWidth;\n chart.plotSizeY = inverted ? plotWidth : plotHeight;\n chart.plotBorderWidth = optionsChart.plotBorderWidth || 0;\n // Set boxes used for alignment\n chart.spacingBox = renderer.spacingBox = {\n x: spacing[3],\n y: spacing[0],\n width: chartWidth - spacing[3] - spacing[1],\n height: chartHeight - spacing[0] - spacing[2]\n };\n chart.plotBox = renderer.plotBox = {\n x: plotLeft,\n y: plotTop,\n width: plotWidth,\n height: plotHeight\n };\n var plotBorderWidth = 2 * Math.floor(chart.plotBorderWidth / 2),\n clipX = Math.ceil(Math.max(plotBorderWidth,\n clipOffset[3]) / 2),\n clipY = Math.ceil(Math.max(plotBorderWidth,\n clipOffset[0]) / 2);\n chart.clipBox = {\n x: clipX,\n y: clipY,\n width: Math.floor(chart.plotSizeX -\n Math.max(plotBorderWidth, clipOffset[1]) / 2 -\n clipX),\n height: Math.max(0, Math.floor(chart.plotSizeY -\n Math.max(plotBorderWidth, clipOffset[2]) / 2 -\n clipY))\n };\n if (!skipAxes) {\n chart.axes.forEach(function (axis) {\n axis.setAxisSize();\n axis.setAxisTranslation();\n });\n renderer.alignElements();\n }\n fireEvent(chart, 'afterSetChartSize', { skipAxes: skipAxes });\n };\n /**\n * Initial margins before auto size margins are applied.\n *\n * @private\n * @function Highcharts.Chart#resetMargins\n */\n Chart.prototype.resetMargins = function () {\n fireEvent(this, 'resetMargins');\n var chart = this,\n chartOptions = chart.options.chart;\n // Create margin and spacing array\n ['margin', 'spacing'].forEach(function splashArrays(target) {\n var value = chartOptions[target],\n values = isObject(value) ? value : [value,\n value,\n value,\n value];\n [\n 'Top',\n 'Right',\n 'Bottom',\n 'Left'\n ].forEach(function (sideName, side) {\n chart[target][side] = pick(chartOptions[target + sideName], values[side]);\n });\n });\n // Set margin names like chart.plotTop, chart.plotLeft,\n // chart.marginRight, chart.marginBottom.\n marginNames.forEach(function (m, side) {\n chart[m] = pick(chart.margin[side], chart.spacing[side]);\n });\n chart.axisOffset = [0, 0, 0, 0]; // top, right, bottom, left\n chart.clipOffset = [0, 0, 0, 0];\n };\n /**\n * Internal function to draw or redraw the borders and backgrounds for chart\n * and plot area.\n *\n * @private\n * @function Highcharts.Chart#drawChartBox\n * @emits Highcharts.Chart#event:afterDrawChartBox\n */\n Chart.prototype.drawChartBox = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n renderer = chart.renderer,\n chartWidth = chart.chartWidth,\n chartHeight = chart.chartHeight,\n styledMode = chart.styledMode,\n plotBGImage = chart.plotBGImage,\n chartBackgroundColor = optionsChart.backgroundColor,\n plotBackgroundColor = optionsChart.plotBackgroundColor,\n plotBackgroundImage = optionsChart.plotBackgroundImage,\n plotLeft = chart.plotLeft,\n plotTop = chart.plotTop,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n plotBox = chart.plotBox,\n clipRect = chart.clipRect,\n clipBox = chart.clipBox;\n var chartBackground = chart.chartBackground,\n plotBackground = chart.plotBackground,\n plotBorder = chart.plotBorder,\n chartBorderWidth,\n mgn,\n bgAttr,\n verb = 'animate';\n // Chart area\n if (!chartBackground) {\n chart.chartBackground = chartBackground = renderer.rect()\n .addClass('highcharts-background')\n .add();\n verb = 'attr';\n }\n if (!styledMode) {\n // Presentational\n chartBorderWidth = optionsChart.borderWidth || 0;\n mgn = chartBorderWidth + (optionsChart.shadow ? 8 : 0);\n bgAttr = {\n fill: chartBackgroundColor || 'none'\n };\n if (chartBorderWidth || chartBackground['stroke-width']) { // #980\n bgAttr.stroke = optionsChart.borderColor;\n bgAttr['stroke-width'] = chartBorderWidth;\n }\n chartBackground\n .attr(bgAttr)\n .shadow(optionsChart.shadow);\n }\n else {\n chartBorderWidth = mgn = chartBackground.strokeWidth();\n }\n chartBackground[verb]({\n x: mgn / 2,\n y: mgn / 2,\n width: chartWidth - mgn - chartBorderWidth % 2,\n height: chartHeight - mgn - chartBorderWidth % 2,\n r: optionsChart.borderRadius\n });\n // Plot background\n verb = 'animate';\n if (!plotBackground) {\n verb = 'attr';\n chart.plotBackground = plotBackground = renderer.rect()\n .addClass('highcharts-plot-background')\n .add();\n }\n plotBackground[verb](plotBox);\n if (!styledMode) {\n // Presentational attributes for the background\n plotBackground\n .attr({\n fill: plotBackgroundColor || 'none'\n })\n .shadow(optionsChart.plotShadow);\n // Create the background image\n if (plotBackgroundImage) {\n if (!plotBGImage) {\n chart.plotBGImage = renderer.image(plotBackgroundImage, plotLeft, plotTop, plotWidth, plotHeight).add();\n }\n else {\n if (plotBackgroundImage !== plotBGImage.attr('href')) {\n plotBGImage.attr('href', plotBackgroundImage);\n }\n plotBGImage.animate(plotBox);\n }\n }\n }\n // Plot clip\n if (!clipRect) {\n chart.clipRect = renderer.clipRect(clipBox);\n }\n else {\n clipRect.animate({\n width: clipBox.width,\n height: clipBox.height\n });\n }\n // Plot area border\n verb = 'animate';\n if (!plotBorder) {\n verb = 'attr';\n chart.plotBorder = plotBorder = renderer.rect()\n .addClass('highcharts-plot-border')\n .attr({\n zIndex: 1 // Above the grid\n })\n .add();\n }\n if (!styledMode) {\n // Presentational\n plotBorder.attr({\n stroke: optionsChart.plotBorderColor,\n 'stroke-width': optionsChart.plotBorderWidth || 0,\n fill: 'none'\n });\n }\n plotBorder[verb](plotBorder.crisp({\n x: plotLeft,\n y: plotTop,\n width: plotWidth,\n height: plotHeight\n }, -plotBorder.strokeWidth())); // #3282 plotBorder should be negative;\n // reset\n chart.isDirtyBox = false;\n fireEvent(this, 'afterDrawChartBox');\n };\n /**\n * Detect whether a certain chart property is needed based on inspecting its\n * options and series. This mainly applies to the chart.inverted property,\n * and in extensions to the chart.angular and chart.polar properties.\n *\n * @private\n * @function Highcharts.Chart#propFromSeries\n */\n Chart.prototype.propFromSeries = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n seriesOptions = chart.options.series;\n var i,\n klass,\n value;\n /**\n * The flag is set to `true` if a series of the chart is inverted.\n *\n * @name Highcharts.Chart#inverted\n * @type {boolean|undefined}\n */\n ['inverted', 'angular', 'polar'].forEach(function (key) {\n // The default series type's class\n klass = seriesTypes[(optionsChart.type || optionsChart.defaultSeriesType)];\n // Get the value from available chart-wide properties\n value =\n // It is set in the options:\n optionsChart[key] ||\n // The default series class:\n (klass && klass.prototype[key]);\n // requires it\n // 4. Check if any the chart's series require it\n i = seriesOptions && seriesOptions.length;\n while (!value && i--) {\n klass = seriesTypes[seriesOptions[i].type];\n if (klass && klass.prototype[key]) {\n value = true;\n }\n }\n // Set the chart property\n chart[key] = value;\n });\n };\n /**\n * Internal function to link two or more series together, based on the\n * `linkedTo` option. This is done from `Chart.render`, and after\n * `Chart.addSeries` and `Series.remove`.\n *\n * @private\n * @function Highcharts.Chart#linkSeries\n * @emits Highcharts.Chart#event:afterLinkSeries\n */\n Chart.prototype.linkSeries = function () {\n var chart = this,\n chartSeries = chart.series;\n // Reset links\n chartSeries.forEach(function (series) {\n series.linkedSeries.length = 0;\n });\n // Apply new links\n chartSeries.forEach(function (series) {\n var linkedTo = series.options.linkedTo;\n if (isString(linkedTo)) {\n if (linkedTo === ':previous') {\n linkedTo = chart.series[series.index - 1];\n }\n else {\n linkedTo = chart.get(linkedTo);\n }\n // #3341 avoid mutual linking\n if (linkedTo && linkedTo.linkedParent !== series) {\n linkedTo.linkedSeries.push(series);\n series.linkedParent = linkedTo;\n if (linkedTo.enabledDataSorting) {\n series.setDataSortingOptions();\n }\n series.visible = pick(series.options.visible, linkedTo.options.visible, series.visible); // #3879\n }\n }\n });\n fireEvent(this, 'afterLinkSeries');\n };\n /**\n * Render series for the chart.\n *\n * @private\n * @function Highcharts.Chart#renderSeries\n */\n Chart.prototype.renderSeries = function () {\n this.series.forEach(function (serie) {\n serie.translate();\n serie.render();\n });\n };\n /**\n * Render labels for the chart.\n *\n * @private\n * @function Highcharts.Chart#renderLabels\n */\n Chart.prototype.renderLabels = function () {\n var chart = this,\n labels = chart.options.labels;\n if (labels.items) {\n labels.items.forEach(function (label) {\n var style = extend(labels.style,\n label.style),\n x = pInt(style.left) + chart.plotLeft,\n y = pInt(style.top) + chart.plotTop + 12;\n // delete to prevent rewriting in IE\n delete style.left;\n delete style.top;\n chart.renderer.text(label.html, x, y)\n .attr({ zIndex: 2 })\n .css(style)\n .add();\n });\n }\n };\n /**\n * Render all graphics for the chart. Runs internally on initialization.\n *\n * @private\n * @function Highcharts.Chart#render\n */\n Chart.prototype.render = function () {\n var chart = this,\n axes = chart.axes,\n colorAxis = chart.colorAxis,\n renderer = chart.renderer,\n options = chart.options,\n renderAxes = function (axes) {\n axes.forEach(function (axis) {\n if (axis.visible) {\n axis.render();\n }\n });\n };\n var correction = 0; // correction for X axis labels\n // Title\n chart.setTitle();\n /**\n * The overview of the chart's series.\n *\n * @name Highcharts.Chart#legend\n * @type {Highcharts.Legend}\n */\n chart.legend = new Legend(chart, options.legend);\n // Get stacks\n if (chart.getStacks) {\n chart.getStacks();\n }\n // Get chart margins\n chart.getMargins(true);\n chart.setChartSize();\n // Record preliminary dimensions for later comparison\n var tempWidth = chart.plotWidth;\n axes.some(function (axis) {\n if (axis.horiz &&\n axis.visible &&\n axis.options.labels.enabled &&\n axis.series.length) {\n // 21 is the most common correction for X axis labels\n correction = 21;\n return true;\n }\n });\n // use Math.max to prevent negative plotHeight\n chart.plotHeight = Math.max(chart.plotHeight - correction, 0);\n var tempHeight = chart.plotHeight;\n // Get margins by pre-rendering axes\n axes.forEach(function (axis) {\n axis.setScale();\n });\n chart.getAxisMargins();\n // If the plot area size has changed significantly, calculate tick\n // positions again\n var redoHorizontal = tempWidth / chart.plotWidth > 1.1;\n // Height is more sensitive, use lower threshold\n var redoVertical = tempHeight / chart.plotHeight > 1.05;\n if (redoHorizontal || redoVertical) {\n axes.forEach(function (axis) {\n if ((axis.horiz && redoHorizontal) ||\n (!axis.horiz && redoVertical)) {\n // update to reflect the new margins\n axis.setTickInterval(true);\n }\n });\n chart.getMargins(); // second pass to check for new labels\n }\n // Draw the borders and backgrounds\n chart.drawChartBox();\n // Axes\n if (chart.hasCartesianSeries) {\n renderAxes(axes);\n }\n else if (colorAxis && colorAxis.length) {\n renderAxes(colorAxis);\n }\n // The series\n if (!chart.seriesGroup) {\n chart.seriesGroup = renderer.g('series-group')\n .attr({ zIndex: 3 })\n .add();\n }\n chart.renderSeries();\n // Labels\n chart.renderLabels();\n // Credits\n chart.addCredits();\n // Handle responsiveness\n if (chart.setResponsive) {\n chart.setResponsive();\n }\n // Set flag\n chart.hasRendered = true;\n };\n /**\n * Set a new credits label for the chart.\n *\n * @sample highcharts/credits/credits-update/\n * Add and update credits\n *\n * @function Highcharts.Chart#addCredits\n *\n * @param {Highcharts.CreditsOptions} [credits]\n * A configuration object for the new credits.\n */\n Chart.prototype.addCredits = function (credits) {\n var chart = this,\n creds = merge(true,\n this.options.credits,\n credits);\n if (creds.enabled && !this.credits) {\n /**\n * The chart's credits label. The label has an `update` method that\n * allows setting new options as per the\n * [credits options set](https://api.highcharts.com/highcharts/credits).\n *\n * @name Highcharts.Chart#credits\n * @type {Highcharts.SVGElement}\n */\n this.credits = this.renderer.text(creds.text + (this.mapCredits || ''), 0, 0)\n .addClass('highcharts-credits')\n .on('click', function () {\n if (creds.href) {\n win.location.href = creds.href;\n }\n })\n .attr({\n align: creds.position.align,\n zIndex: 8\n });\n if (!chart.styledMode) {\n this.credits.css(creds.style);\n }\n this.credits\n .add()\n .align(creds.position);\n // Dynamically update\n this.credits.update = function (options) {\n chart.credits = chart.credits.destroy();\n chart.addCredits(options);\n };\n }\n };\n /**\n * Remove the chart and purge memory. This method is called internally\n * before adding a second chart into the same container, as well as on\n * window unload to prevent leaks.\n *\n * @sample highcharts/members/chart-destroy/\n * Destroy the chart from a button\n * @sample stock/members/chart-destroy/\n * Destroy with Highcharts Stock\n *\n * @function Highcharts.Chart#destroy\n *\n * @emits Highcharts.Chart#event:destroy\n */\n Chart.prototype.destroy = function () {\n var chart = this,\n axes = chart.axes,\n series = chart.series,\n container = chart.container,\n parentNode = container && container.parentNode;\n var i;\n // fire the chart.destoy event\n fireEvent(chart, 'destroy');\n // Delete the chart from charts lookup array\n if (chart.renderer.forExport) {\n erase(charts, chart); // #6569\n }\n else {\n charts[chart.index] = void 0;\n }\n H.chartCount--;\n chart.renderTo.removeAttribute('data-highcharts-chart');\n // remove events\n removeEvent(chart);\n // ==== Destroy collections:\n // Destroy axes\n i = axes.length;\n while (i--) {\n axes[i] = axes[i].destroy();\n }\n // Destroy scroller & scroller series before destroying base series\n if (this.scroller && this.scroller.destroy) {\n this.scroller.destroy();\n }\n // Destroy each series\n i = series.length;\n while (i--) {\n series[i] = series[i].destroy();\n }\n // ==== Destroy chart properties:\n [\n 'title', 'subtitle', 'chartBackground', 'plotBackground',\n 'plotBGImage', 'plotBorder', 'seriesGroup', 'clipRect', 'credits',\n 'pointer', 'rangeSelector', 'legend', 'resetZoomButton', 'tooltip',\n 'renderer'\n ].forEach(function (name) {\n var prop = chart[name];\n if (prop && prop.destroy) {\n chart[name] = prop.destroy();\n }\n });\n // Remove container and all SVG, check container as it can break in IE\n // when destroyed before finished loading\n if (container) {\n container.innerHTML = AST.emptyHTML;\n removeEvent(container);\n if (parentNode) {\n discardElement(container);\n }\n }\n // clean it all up\n objectEach(chart, function (val, key) {\n delete chart[key];\n });\n };\n /**\n * Prepare for first rendering after all data are loaded.\n *\n * @private\n * @function Highcharts.Chart#firstRender\n * @emits Highcharts.Chart#event:beforeRender\n */\n Chart.prototype.firstRender = function () {\n var chart = this,\n options = chart.options;\n // Hook for oldIE to check whether the chart is ready to render\n if (chart.isReadyToRender && !chart.isReadyToRender()) {\n return;\n }\n // Create the container\n chart.getContainer();\n chart.resetMargins();\n chart.setChartSize();\n // Set the common chart properties (mainly invert) from the given series\n chart.propFromSeries();\n // get axes\n chart.getAxes();\n // Initialize the series\n (isArray(options.series) ? options.series : []).forEach(\n // #9680\n function (serieOptions) {\n chart.initSeries(serieOptions);\n });\n chart.linkSeries();\n chart.setSeriesData();\n // Run an event after axes and series are initialized, but before\n // render. At this stage, the series data is indexed and cached in the\n // xData and yData arrays, so we can access those before rendering. Used\n // in Highcharts Stock.\n fireEvent(chart, 'beforeRender');\n // depends on inverted and on margins being set\n if (Pointer) {\n if (MSPointer.isRequired()) {\n chart.pointer = new MSPointer(chart, options);\n }\n else {\n /**\n * The Pointer that keeps track of mouse and touch interaction.\n *\n * @memberof Highcharts.Chart\n * @name pointer\n * @type {Highcharts.Pointer}\n * @instance\n */\n chart.pointer = new Pointer(chart, options);\n }\n }\n chart.render();\n chart.pointer.getChartPosition(); // #14973\n // Fire the load event if there are no external images\n if (!chart.renderer.imgCount && !chart.hasLoaded) {\n chart.onload();\n }\n // If the chart was rendered outside the top container, put it back in\n // (#3679)\n chart.temporaryDisplay(true);\n };\n /**\n * Internal function that runs on chart load, async if any images are loaded\n * in the chart. Runs the callbacks and triggers the `load` and `render`\n * events.\n *\n * @private\n * @function Highcharts.Chart#onload\n * @emits Highcharts.Chart#event:load\n * @emits Highcharts.Chart#event:render\n */\n Chart.prototype.onload = function () {\n // Run callbacks, first the ones registered by modules, then user's one\n this.callbacks.concat([this.callback]).forEach(function (fn) {\n // Chart destroyed in its own callback (#3600)\n if (fn && typeof this.index !== 'undefined') {\n fn.apply(this, [this]);\n }\n }, this);\n fireEvent(this, 'load');\n fireEvent(this, 'render');\n // Set up auto resize, check for not destroyed (#6068)\n if (defined(this.index)) {\n this.setReflow(this.options.chart.reflow);\n }\n // Don't run again\n this.hasLoaded = true;\n };\n /**\n * Add a series to the chart after render time. Note that this method should\n * never be used when adding data synchronously at chart render time, as it\n * adds expense to the calculations and rendering. When adding data at the\n * same time as the chart is initialized, add the series as a configuration\n * option instead. With multiple axes, the `offset` is dynamically adjusted.\n *\n * @sample highcharts/members/chart-addseries/\n * Add a series from a button\n * @sample stock/members/chart-addseries/\n * Add a series in Highcharts Stock\n *\n * @function Highcharts.Chart#addSeries\n *\n * @param {Highcharts.SeriesOptionsType} options\n * The config options for the series.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after adding.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @return {Highcharts.Series}\n * The newly created series object.\n *\n * @emits Highcharts.Chart#event:addSeries\n * @emits Highcharts.Chart#event:afterAddSeries\n */\n Chart.prototype.addSeries = function (options, redraw, animation) {\n var chart = this;\n var series;\n if (options) { // <- not necessary\n redraw = pick(redraw, true); // defaults to true\n fireEvent(chart, 'addSeries', { options: options }, function () {\n series = chart.initSeries(options);\n chart.isDirtyLegend = true;\n chart.linkSeries();\n if (series.enabledDataSorting) {\n // We need to call `setData` after `linkSeries`\n series.setData(options.data, false);\n }\n fireEvent(chart, 'afterAddSeries', { series: series });\n if (redraw) {\n chart.redraw(animation);\n }\n });\n }\n return series;\n };\n /**\n * Add an axis to the chart after render time. Note that this method should\n * never be used when adding data synchronously at chart render time, as it\n * adds expense to the calculations and rendering. When adding data at the\n * same time as the chart is initialized, add the axis as a configuration\n * option instead.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Chart#addAxis\n *\n * @param {Highcharts.AxisOptions} options\n * The axis options.\n *\n * @param {boolean} [isX=false]\n * Whether it is an X axis or a value axis.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after adding.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=true]\n * Whether and how to apply animation in the redraw.\n *\n * @return {Highcharts.Axis}\n * The newly generated Axis object.\n */\n Chart.prototype.addAxis = function (options, isX, redraw, animation) {\n return this.createAxis(isX ? 'xAxis' : 'yAxis', { axis: options, redraw: redraw, animation: animation });\n };\n /**\n * Add a color axis to the chart after render time. Note that this method\n * should never be used when adding data synchronously at chart render time,\n * as it adds expense to the calculations and rendering. When adding data at\n * the same time as the chart is initialized, add the axis as a\n * configuration option instead.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Chart#addColorAxis\n *\n * @param {Highcharts.ColorAxisOptions} options\n * The axis options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after adding.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=true]\n * Whether and how to apply animation in the redraw.\n *\n * @return {Highcharts.ColorAxis}\n * The newly generated Axis object.\n */\n Chart.prototype.addColorAxis = function (options, redraw, animation) {\n return this.createAxis('colorAxis', { axis: options, redraw: redraw, animation: animation });\n };\n /**\n * Factory for creating different axis types.\n *\n * @private\n * @function Highcharts.Chart#createAxis\n *\n * @param {string} type\n * An axis type.\n *\n * @param {...Array<*>} arguments\n * All arguments for the constructor.\n *\n * @return {Highcharts.Axis | Highcharts.ColorAxis}\n * The newly generated Axis object.\n */\n Chart.prototype.createAxis = function (type, options) {\n var axis = new Axis(this,\n merge(options.axis, {\n index: this[type].length,\n isX: type === 'xAxis'\n }));\n if (pick(options.redraw, true)) {\n this.redraw(options.animation);\n }\n return axis;\n };\n /**\n * Dim the chart and show a loading text or symbol. Options for the loading\n * screen are defined in {@link\n * https://api.highcharts.com/highcharts/loading|the loading options}.\n *\n * @sample highcharts/members/chart-hideloading/\n * Show and hide loading from a button\n * @sample highcharts/members/chart-showloading/\n * Apply different text labels\n * @sample stock/members/chart-show-hide-loading/\n * Toggle loading in Highcharts Stock\n *\n * @function Highcharts.Chart#showLoading\n *\n * @param {string} [str]\n * An optional text to show in the loading label instead of the\n * default one. The default text is set in\n * [lang.loading](https://api.highcharts.com/highcharts/lang.loading).\n */\n Chart.prototype.showLoading = function (str) {\n var chart = this,\n options = chart.options,\n loadingOptions = options.loading,\n setLoadingSize = function () {\n if (loadingDiv) {\n css(loadingDiv, {\n left: chart.plotLeft + 'px',\n top: chart.plotTop + 'px',\n width: chart.plotWidth + 'px',\n height: chart.plotHeight + 'px'\n });\n }\n };\n var loadingDiv = chart.loadingDiv,\n loadingSpan = chart.loadingSpan;\n // create the layer at the first call\n if (!loadingDiv) {\n chart.loadingDiv = loadingDiv = createElement('div', {\n className: 'highcharts-loading highcharts-loading-hidden'\n }, null, chart.container);\n }\n if (!loadingSpan) {\n chart.loadingSpan = loadingSpan = createElement('span', { className: 'highcharts-loading-inner' }, null, loadingDiv);\n addEvent(chart, 'redraw', setLoadingSize); // #1080\n }\n loadingDiv.className = 'highcharts-loading';\n // Update text\n AST.setElementHTML(loadingSpan, pick(str, options.lang.loading, ''));\n if (!chart.styledMode) {\n // Update visuals\n css(loadingDiv, extend(loadingOptions.style, {\n zIndex: 10\n }));\n css(loadingSpan, loadingOptions.labelStyle);\n // Show it\n if (!chart.loadingShown) {\n css(loadingDiv, {\n opacity: 0,\n display: ''\n });\n animate(loadingDiv, {\n opacity: loadingOptions.style.opacity || 0.5\n }, {\n duration: loadingOptions.showDuration || 0\n });\n }\n }\n chart.loadingShown = true;\n setLoadingSize();\n };\n /**\n * Hide the loading layer.\n *\n * @see Highcharts.Chart#showLoading\n *\n * @sample highcharts/members/chart-hideloading/\n * Show and hide loading from a button\n * @sample stock/members/chart-show-hide-loading/\n * Toggle loading in Highcharts Stock\n *\n * @function Highcharts.Chart#hideLoading\n */\n Chart.prototype.hideLoading = function () {\n var options = this.options,\n loadingDiv = this.loadingDiv;\n if (loadingDiv) {\n loadingDiv.className =\n 'highcharts-loading highcharts-loading-hidden';\n if (!this.styledMode) {\n animate(loadingDiv, {\n opacity: 0\n }, {\n duration: options.loading.hideDuration || 100,\n complete: function () {\n css(loadingDiv, { display: 'none' });\n }\n });\n }\n }\n this.loadingShown = false;\n };\n /**\n * A generic function to update any element of the chart. Elements can be\n * enabled and disabled, moved, re-styled, re-formatted etc.\n *\n * A special case is configuration objects that take arrays, for example\n * [xAxis](https://api.highcharts.com/highcharts/xAxis),\n * [yAxis](https://api.highcharts.com/highcharts/yAxis) or\n * [series](https://api.highcharts.com/highcharts/series). For these\n * collections, an `id` option is used to map the new option set to an\n * existing object. If an existing object of the same id is not found, the\n * corresponding item is updated. So for example, running `chart.update`\n * with a series item without an id, will cause the existing chart's series\n * with the same index in the series array to be updated. When the\n * `oneToOne` parameter is true, `chart.update` will also take care of\n * adding and removing items from the collection. Read more under the\n * parameter description below.\n *\n * Note that when changing series data, `chart.update` may mutate the passed\n * data options.\n *\n * See also the\n * [responsive option set](https://api.highcharts.com/highcharts/responsive).\n * Switching between `responsive.rules` basically runs `chart.update` under\n * the hood.\n *\n * @sample highcharts/members/chart-update/\n * Update chart geometry\n *\n * @function Highcharts.Chart#update\n *\n * @param {Highcharts.Options} options\n * A configuration object for the new chart options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart.\n *\n * @param {boolean} [oneToOne=false]\n * When `true`, the `series`, `xAxis`, `yAxis` and `annotations`\n * collections will be updated one to one, and items will be either\n * added or removed to match the new updated options. For example,\n * if the chart has two series and we call `chart.update` with a\n * configuration containing three series, one will be added. If we\n * call `chart.update` with one series, one will be removed. Setting\n * an empty `series` array will remove all series, but leaving out\n * the`series` property will leave all series untouched. If the\n * series have id's, the new series options will be matched by id,\n * and the remaining ones removed.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=true]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @emits Highcharts.Chart#event:update\n * @emits Highcharts.Chart#event:afterUpdate\n */\n Chart.prototype.update = function (options, redraw, oneToOne, animation) {\n var chart = this,\n adders = {\n credits: 'addCredits',\n title: 'setTitle',\n subtitle: 'setSubtitle',\n caption: 'setCaption'\n },\n isResponsiveOptions = options.isResponsiveOptions,\n itemsForRemoval = [];\n var updateAllAxes,\n updateAllSeries,\n runSetSize;\n fireEvent(chart, 'update', { options: options });\n // If there are responsive rules in action, undo the responsive rules\n // before we apply the updated options and replay the responsive rules\n // on top from the chart.redraw function (#9617).\n if (!isResponsiveOptions) {\n chart.setResponsive(false, true);\n }\n options = cleanRecursively(options, chart.options);\n chart.userOptions = merge(chart.userOptions, options);\n // If the top-level chart option is present, some special updates are\n // required\n var optionsChart = options.chart;\n if (optionsChart) {\n merge(true, chart.options.chart, optionsChart);\n // Setter function\n if ('className' in optionsChart) {\n chart.setClassName(optionsChart.className);\n }\n if ('reflow' in optionsChart) {\n chart.setReflow(optionsChart.reflow);\n }\n if ('inverted' in optionsChart ||\n 'polar' in optionsChart ||\n 'type' in optionsChart) {\n // Parse options.chart.inverted and options.chart.polar together\n // with the available series.\n chart.propFromSeries();\n updateAllAxes = true;\n }\n if ('alignTicks' in optionsChart) { // #6452\n updateAllAxes = true;\n }\n if ('events' in optionsChart) {\n // Chart event handlers\n registerEventOptions(this, optionsChart);\n }\n objectEach(optionsChart, function (val, key) {\n if (chart.propsRequireUpdateSeries.indexOf('chart.' + key) !==\n -1) {\n updateAllSeries = true;\n }\n // Only dirty box\n if (chart.propsRequireDirtyBox.indexOf(key) !== -1) {\n chart.isDirtyBox = true;\n }\n // Chart setSize\n if (chart.propsRequireReflow.indexOf(key) !== -1) {\n if (isResponsiveOptions) {\n chart.isDirtyBox = true;\n }\n else {\n runSetSize = true;\n }\n }\n });\n if (!chart.styledMode && optionsChart.style) {\n chart.renderer.setStyle(chart.options.chart.style || {});\n }\n }\n // Moved up, because tooltip needs updated plotOptions (#6218)\n if (!chart.styledMode && options.colors) {\n this.options.colors = options.colors;\n }\n if (options.time) {\n // Maintaining legacy global time. If the chart is instanciated\n // first with global time, then updated with time options, we need\n // to create a new Time instance to avoid mutating the global time\n // (#10536).\n if (this.time === defaultTime) {\n this.time = new Time(options.time);\n }\n // If we're updating, the time class is different from other chart\n // classes (chart.legend, chart.tooltip etc) in that it doesn't know\n // about the chart. The other chart[something].update functions also\n // set the chart.options[something]. For the time class however we\n // need to update the chart options separately. #14230.\n merge(true, chart.options.time, options.time);\n }\n // Some option stuctures correspond one-to-one to chart objects that\n // have update methods, for example\n // options.credits => chart.credits\n // options.legend => chart.legend\n // options.title => chart.title\n // options.tooltip => chart.tooltip\n // options.subtitle => chart.subtitle\n // options.mapNavigation => chart.mapNavigation\n // options.navigator => chart.navigator\n // options.scrollbar => chart.scrollbar\n objectEach(options, function (val, key) {\n if (chart[key] &&\n typeof chart[key].update === 'function') {\n chart[key].update(val, false);\n // If a one-to-one object does not exist, look for an adder function\n }\n else if (typeof chart[adders[key]] === 'function') {\n chart[adders[key]](val);\n // Else, just merge the options. For nodes like loading, noData,\n // plotOptions\n }\n else if (key !== 'colors' &&\n chart.collectionsWithUpdate.indexOf(key) === -1) {\n merge(true, chart.options[key], options[key]);\n }\n if (key !== 'chart' &&\n chart.propsRequireUpdateSeries.indexOf(key) !== -1) {\n updateAllSeries = true;\n }\n });\n // Setters for collections. For axes and series, each item is referred\n // by an id. If the id is not found, it defaults to the corresponding\n // item in the collection, so setting one series without an id, will\n // update the first series in the chart. Setting two series without\n // an id will update the first and the second respectively (#6019)\n // chart.update and responsive.\n this.collectionsWithUpdate.forEach(function (coll) {\n var indexMap;\n if (options[coll]) {\n // In stock charts, the navigator series are also part of the\n // chart.series array, but those series should not be handled\n // here (#8196) and neither should the navigator axis (#9671).\n indexMap = [];\n chart[coll].forEach(function (s, i) {\n if (!s.options.isInternal) {\n indexMap.push(pick(s.options.index, i));\n }\n });\n splat(options[coll]).forEach(function (newOptions, i) {\n var hasId = defined(newOptions.id);\n var item;\n // Match by id\n if (hasId) {\n item = chart.get(newOptions.id);\n }\n // No match by id found, match by index instead\n if (!item && chart[coll]) {\n item = chart[coll][indexMap ? indexMap[i] : i];\n // Check if we grabbed an item with an exising but\n // different id (#13541)\n if (item && hasId && defined(item.options.id)) {\n item = void 0;\n }\n }\n if (item && item.coll === coll) {\n item.update(newOptions, false);\n if (oneToOne) {\n item.touched = true;\n }\n }\n // If oneToOne and no matching item is found, add one\n if (!item && oneToOne && chart.collectionsWithInit[coll]) {\n chart.collectionsWithInit[coll][0].apply(chart, \n // [newOptions, ...extraArguments, redraw=false]\n [\n newOptions\n ].concat(\n // Not all initializers require extra args\n chart.collectionsWithInit[coll][1] || []).concat([\n false\n ])).touched = true;\n }\n });\n // Add items for removal\n if (oneToOne) {\n chart[coll].forEach(function (item) {\n if (!item.touched && !item.options.isInternal) {\n itemsForRemoval.push(item);\n }\n else {\n delete item.touched;\n }\n });\n }\n }\n });\n itemsForRemoval.forEach(function (item) {\n if (item.chart && item.remove) { // #9097, avoid removing twice\n item.remove(false);\n }\n });\n if (updateAllAxes) {\n chart.axes.forEach(function (axis) {\n axis.update({}, false);\n });\n }\n // Certain options require the whole series structure to be thrown away\n // and rebuilt\n if (updateAllSeries) {\n chart.getSeriesOrderByLinks().forEach(function (series) {\n // Avoid removed navigator series\n if (series.chart) {\n series.update({}, false);\n }\n }, this);\n }\n // Update size. Redraw is forced.\n var newWidth = optionsChart && optionsChart.width;\n var newHeight = optionsChart && (isString(optionsChart.height) ?\n relativeLength(optionsChart.height,\n newWidth || chart.chartWidth) :\n optionsChart.height);\n if (\n // In this case, run chart.setSize with newWidth and newHeight which\n // are undefined, only for reflowing chart elements because margin\n // or spacing has been set (#8190)\n runSetSize ||\n // In this case, the size is actually set\n (isNumber(newWidth) && newWidth !== chart.chartWidth) ||\n (isNumber(newHeight) && newHeight !== chart.chartHeight)) {\n chart.setSize(newWidth, newHeight, animation);\n }\n else if (pick(redraw, true)) {\n chart.redraw(animation);\n }\n fireEvent(chart, 'afterUpdate', {\n options: options,\n redraw: redraw,\n animation: animation\n });\n };\n /**\n * Shortcut to set the subtitle options. This can also be done from {@link\n * Chart#update} or {@link Chart#setTitle}.\n *\n * @function Highcharts.Chart#setSubtitle\n *\n * @param {Highcharts.SubtitleOptions} options\n * New subtitle options. The subtitle text itself is set by the\n * `options.text` property.\n */\n Chart.prototype.setSubtitle = function (options, redraw) {\n this.applyDescription('subtitle', options);\n this.layOutTitles(redraw);\n };\n /**\n * Set the caption options. This can also be done from {@link\n * Chart#update}.\n *\n * @function Highcharts.Chart#setCaption\n *\n * @param {Highcharts.CaptionOptions} options\n * New caption options. The caption text itself is set by the\n * `options.text` property.\n */\n Chart.prototype.setCaption = function (options, redraw) {\n this.applyDescription('caption', options);\n this.layOutTitles(redraw);\n };\n /**\n * Display the zoom button, so users can reset zoom to the default view\n * settings.\n *\n * @function Highcharts.Chart#showResetZoom\n *\n * @emits Highcharts.Chart#event:afterShowResetZoom\n * @emits Highcharts.Chart#event:beforeShowResetZoom\n */\n Chart.prototype.showResetZoom = function () {\n var chart = this,\n lang = defaultOptions.lang,\n btnOptions = chart.options.chart.resetZoomButton,\n theme = btnOptions.theme,\n states = theme.states,\n alignTo = (btnOptions.relativeTo === 'chart' ||\n btnOptions.relativeTo === 'spacingBox' ?\n null :\n 'scrollablePlotBox');\n /**\n * @private\n */\n function zoomOut() {\n chart.zoomOut();\n }\n fireEvent(this, 'beforeShowResetZoom', null, function () {\n chart.resetZoomButton = chart.renderer\n .button(lang.resetZoom, null, null, zoomOut, theme, states && states.hover)\n .attr({\n align: btnOptions.position.align,\n title: lang.resetZoomTitle\n })\n .addClass('highcharts-reset-zoom')\n .add()\n .align(btnOptions.position, false, alignTo);\n });\n fireEvent(this, 'afterShowResetZoom');\n };\n /**\n * Zoom the chart out after a user has zoomed in. See also\n * [Axis.setExtremes](/class-reference/Highcharts.Axis#setExtremes).\n *\n * @function Highcharts.Chart#zoomOut\n *\n * @emits Highcharts.Chart#event:selection\n */\n Chart.prototype.zoomOut = function () {\n fireEvent(this, 'selection', { resetSelection: true }, this.zoom);\n };\n /**\n * Zoom into a given portion of the chart given by axis coordinates.\n *\n * @private\n * @function Highcharts.Chart#zoom\n * @param {Highcharts.SelectEventObject} event\n */\n Chart.prototype.zoom = function (event) {\n var chart = this,\n pointer = chart.pointer,\n mouseDownPos = chart.inverted ?\n pointer.mouseDownX : pointer.mouseDownY;\n var displayButton = false,\n hasZoomed;\n // If zoom is called with no arguments, reset the axes\n if (!event || event.resetSelection) {\n chart.axes.forEach(function (axis) {\n hasZoomed = axis.zoom();\n });\n pointer.initiated = false; // #6804\n }\n else { // else, zoom in on all axes\n event.xAxis.concat(event.yAxis).forEach(function (axisData) {\n var axis = axisData.axis,\n axisStartPos = chart.inverted ? axis.left : axis.top,\n axisEndPos = chart.inverted ?\n axisStartPos + axis.width : axisStartPos + axis.height,\n isXAxis = axis.isXAxis;\n var isWithinPane = false;\n // Check if zoomed area is within the pane (#1289).\n // In case of multiple panes only one pane should be zoomed.\n if ((!isXAxis &&\n mouseDownPos >= axisStartPos &&\n mouseDownPos <= axisEndPos) ||\n isXAxis ||\n !defined(mouseDownPos)) {\n isWithinPane = true;\n }\n // don't zoom more than minRange\n if (pointer[isXAxis ? 'zoomX' : 'zoomY'] && isWithinPane) {\n hasZoomed = axis.zoom(axisData.min, axisData.max);\n if (axis.displayBtn) {\n displayButton = true;\n }\n }\n });\n }\n // Show or hide the Reset zoom button\n var resetZoomButton = chart.resetZoomButton;\n if (displayButton && !resetZoomButton) {\n chart.showResetZoom();\n }\n else if (!displayButton && isObject(resetZoomButton)) {\n chart.resetZoomButton = resetZoomButton.destroy();\n }\n // Redraw\n if (hasZoomed) {\n chart.redraw(pick(chart.options.chart.animation, event && event.animation, chart.pointCount < 100));\n }\n };\n /**\n * Pan the chart by dragging the mouse across the pane. This function is\n * called on mouse move, and the distance to pan is computed from chartX\n * compared to the first chartX position in the dragging operation.\n *\n * @private\n * @function Highcharts.Chart#pan\n * @param {Highcharts.PointerEventObject} e\n * @param {string} panning\n */\n Chart.prototype.pan = function (e, panning) {\n var chart = this,\n hoverPoints = chart.hoverPoints,\n panningOptions = (typeof panning === 'object' ?\n panning :\n {\n enabled: panning,\n type: 'x'\n }),\n chartOptions = chart.options.chart,\n hasMapNavigation = chart.options.mapNavigation &&\n chart.options.mapNavigation.enabled;\n if (chartOptions && chartOptions.panning) {\n chartOptions.panning = panningOptions;\n }\n var type = panningOptions.type;\n var doRedraw;\n fireEvent(this, 'pan', { originalEvent: e }, function () {\n // remove active points for shared tooltip\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n var axes = chart.xAxis;\n if (type === 'xy') {\n axes = axes.concat(chart.yAxis);\n }\n else if (type === 'y') {\n axes = chart.yAxis;\n }\n var nextMousePos = {};\n axes.forEach(function (axis) {\n if (!axis.options.panningEnabled || axis.options.isInternal) {\n return;\n }\n var horiz = axis.horiz, mousePos = e[horiz ? 'chartX' : 'chartY'], mouseDown = horiz ? 'mouseDownX' : 'mouseDownY', startPos = chart[mouseDown], halfPointRange = axis.minPointOffset || 0, pointRangeDirection = (axis.reversed && !chart.inverted) ||\n (!axis.reversed && chart.inverted) ?\n -1 :\n 1, extremes = axis.getExtremes(), panMin = axis.toValue(startPos - mousePos, true) +\n halfPointRange * pointRangeDirection, panMax = axis.toValue(startPos + axis.len - mousePos, true) -\n ((halfPointRange * pointRangeDirection) ||\n (axis.isXAxis && axis.pointRangePadding) ||\n 0), flipped = panMax < panMin, hasVerticalPanning = axis.hasVerticalPanning();\n var newMin = flipped ? panMax : panMin,\n newMax = flipped ? panMin : panMax,\n panningState = axis.panningState,\n spill;\n // General calculations of panning state.\n // This is related to using vertical panning. (#11315).\n if (hasVerticalPanning &&\n !axis.isXAxis && (!panningState || panningState.isDirty)) {\n axis.series.forEach(function (series) {\n var processedData = series.getProcessedData(true),\n dataExtremes = series.getExtremes(processedData.yData,\n true);\n if (!panningState) {\n panningState = {\n startMin: Number.MAX_VALUE,\n startMax: -Number.MAX_VALUE\n };\n }\n if (isNumber(dataExtremes.dataMin) &&\n isNumber(dataExtremes.dataMax)) {\n panningState.startMin = Math.min(pick(series.options.threshold, Infinity), dataExtremes.dataMin, panningState.startMin);\n panningState.startMax = Math.max(pick(series.options.threshold, -Infinity), dataExtremes.dataMax, panningState.startMax);\n }\n });\n }\n var paddedMin = Math.min(pick(panningState && panningState.startMin,\n extremes.dataMin),\n halfPointRange ?\n extremes.min :\n axis.toValue(axis.toPixels(extremes.min) -\n axis.minPixelPadding));\n var paddedMax = Math.max(pick(panningState && panningState.startMax,\n extremes.dataMax),\n halfPointRange ?\n extremes.max :\n axis.toValue(axis.toPixels(extremes.max) +\n axis.minPixelPadding));\n axis.panningState = panningState;\n // It is not necessary to calculate extremes on ordinal axis,\n // because they are already calculated, so we don't want to\n // override them.\n if (!axis.isOrdinal) {\n // If the new range spills over, either to the min or max,\n // adjust the new range.\n spill = paddedMin - newMin;\n if (spill > 0) {\n newMax += spill;\n newMin = paddedMin;\n }\n spill = newMax - paddedMax;\n if (spill > 0) {\n newMax = paddedMax;\n newMin -= spill;\n }\n // Set new extremes if they are actually new\n if (axis.series.length &&\n newMin !== extremes.min &&\n newMax !== extremes.max &&\n newMin >= paddedMin &&\n newMax <= paddedMax) {\n axis.setExtremes(newMin, newMax, false, false, { trigger: 'pan' });\n if (!chart.resetZoomButton &&\n !hasMapNavigation &&\n // Show reset zoom button only when both newMin and\n // newMax values are between padded axis range.\n newMin !== paddedMin &&\n newMax !== paddedMax &&\n type.match('y')) {\n chart.showResetZoom();\n axis.displayBtn = false;\n }\n doRedraw = true;\n }\n // set new reference for next run:\n nextMousePos[mouseDown] = mousePos;\n }\n });\n objectEach(nextMousePos, function (pos, down) {\n chart[down] = pos;\n });\n if (doRedraw) {\n chart.redraw(false);\n }\n css(chart.container, { cursor: 'move' });\n });\n };\n return Chart;\n }());\n extend(Chart.prototype, {\n // Hook for adding callbacks in modules\n callbacks: [],\n /**\n * These collections (arrays) implement `Chart.addSomethig` method used in\n * chart.update() to create new object in the collection. Equivalent for\n * deleting is resolved by simple `Somethig.remove()`.\n *\n * Note: We need to define these references after initializers are bound to\n * chart's prototype.\n */\n collectionsWithInit: {\n // collectionName: [ initializingMethod, [extraArguments] ]\n xAxis: [Chart.prototype.addAxis, [true]],\n yAxis: [Chart.prototype.addAxis, [false]],\n series: [Chart.prototype.addSeries]\n },\n /**\n * These collections (arrays) implement update() methods with support for\n * one-to-one option.\n */\n collectionsWithUpdate: [\n 'xAxis',\n 'yAxis',\n 'series'\n ],\n /**\n * These properties cause isDirtyBox to be set to true when updating. Can be\n * extended from plugins.\n */\n propsRequireDirtyBox: [\n 'backgroundColor',\n 'borderColor',\n 'borderWidth',\n 'borderRadius',\n 'plotBackgroundColor',\n 'plotBackgroundImage',\n 'plotBorderColor',\n 'plotBorderWidth',\n 'plotShadow',\n 'shadow'\n ],\n /**\n * These properties require a full reflow of chart elements, best\n * implemented through running `Chart.setSize` internally (#8190).\n * @type {Array}\n */\n propsRequireReflow: [\n 'margin',\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'spacing',\n 'spacingTop',\n 'spacingRight',\n 'spacingBottom',\n 'spacingLeft'\n ],\n /**\n * These properties cause all series to be updated when updating. Can be\n * extended from plugins.\n */\n propsRequireUpdateSeries: [\n 'chart.inverted',\n 'chart.polar',\n 'chart.ignoreHiddenSeries',\n 'chart.type',\n 'colors',\n 'plotOptions',\n 'time',\n 'tooltip'\n ]\n });\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback for chart constructors.\n *\n * @callback Highcharts.ChartCallbackFunction\n *\n * @param {Highcharts.Chart} chart\n * Created chart.\n */\n /**\n * Format a number and return a string based on input settings.\n *\n * @callback Highcharts.NumberFormatterCallbackFunction\n *\n * @param {number} number\n * The input number to format.\n *\n * @param {number} decimals\n * The amount of decimals. A value of -1 preserves the amount in the\n * input number.\n *\n * @param {string} [decimalPoint]\n * The decimal point, defaults to the one given in the lang options, or\n * a dot.\n *\n * @param {string} [thousandsSep]\n * The thousands separator, defaults to the one given in the lang\n * options, or a space character.\n *\n * @return {string} The formatted number.\n */\n /**\n * The chart title. The title has an `update` method that allows modifying the\n * options directly or indirectly via `chart.update`.\n *\n * @interface Highcharts.TitleObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the title.\n *\n * @function Highcharts.TitleObject#update\n *\n * @param {Highcharts.TitleOptions} titleOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the title is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after.\n */\n /**\n * The chart subtitle. The subtitle has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @interface Highcharts.SubtitleObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the subtitle.\n *\n * @function Highcharts.SubtitleObject#update\n *\n * @param {Highcharts.SubtitleOptions} subtitleOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the subtitle is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to false\n * and call {@link Chart#redraw} after.\n */\n /**\n * The chart caption. The caption has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @interface Highcharts.CaptionObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the caption.\n *\n * @function Highcharts.CaptionObject#update\n *\n * @param {Highcharts.CaptionOptions} captionOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the caption is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to false\n * and call {@link Chart#redraw} after.\n */\n /**\n * @interface Highcharts.ChartIsInsideOptionsObject\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#ignoreX\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#ignoreY\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#inverted\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#paneCoordinates\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#series\n * @type {Highcharts.Series|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#visiblePlotOnly\n * @type {boolean|undefined}\n */\n ''; // keeps doclets above in JS file\n\n return Chart;\n });\n _registerModule(_modules, 'Core/Legend/LegendSymbol.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Namespace\n *\n * */\n var LegendSymbol;\n (function (LegendSymbol) {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the series' symbol in the legend.\n *\n * This method should be overridable to create custom symbols through\n * Highcharts.seriesTypes[type].prototype.drawLegendSymbol.\n *\n * @private\n * @function Highcharts.LegendSymbolMixin.drawLineMarker\n *\n * @param {Highcharts.Legend} legend\n * The legend object.\n */\n function drawLineMarker(legend) {\n var options = this.options,\n symbolWidth = legend.symbolWidth,\n symbolHeight = legend.symbolHeight,\n generalRadius = symbolHeight / 2,\n renderer = this.chart.renderer,\n legendItemGroup = this.legendGroup,\n verticalCenter = legend.baseline -\n Math.round(legend.fontMetrics.b * 0.3);\n var attr = {},\n legendSymbol,\n markerOptions = options.marker;\n // Draw the line\n if (!this.chart.styledMode) {\n attr = {\n 'stroke-width': options.lineWidth || 0\n };\n if (options.dashStyle) {\n attr.dashstyle = options.dashStyle;\n }\n }\n this.legendLine = renderer\n .path([\n ['M', 0, verticalCenter],\n ['L', symbolWidth, verticalCenter]\n ])\n .addClass('highcharts-graph')\n .attr(attr)\n .add(legendItemGroup);\n // Draw the marker\n if (markerOptions && markerOptions.enabled !== false && symbolWidth) {\n // Do not allow the marker to be larger than the symbolHeight\n var radius = Math.min(pick(markerOptions.radius,\n generalRadius),\n generalRadius);\n // Restrict symbol markers size\n if (this.symbol.indexOf('url') === 0) {\n markerOptions = merge(markerOptions, {\n width: symbolHeight,\n height: symbolHeight\n });\n radius = 0;\n }\n this.legendSymbol = legendSymbol = renderer.symbol(this.symbol, (symbolWidth / 2) - radius, verticalCenter - radius, 2 * radius, 2 * radius, markerOptions)\n .addClass('highcharts-point')\n .add(legendItemGroup);\n legendSymbol.isMarker = true;\n }\n }\n LegendSymbol.drawLineMarker = drawLineMarker;\n /**\n * Get the series' symbol in the legend.\n *\n * This method should be overridable to create custom symbols through\n * Highcharts.seriesTypes[type].prototype.drawLegendSymbol.\n *\n * @private\n * @function Highcharts.LegendSymbolMixin.drawRectangle\n *\n * @param {Highcharts.Legend} legend\n * The legend object\n *\n * @param {Highcharts.Point|Highcharts.Series} item\n * The series (this) or point\n */\n function drawRectangle(legend, item) {\n var options = legend.options,\n symbolHeight = legend.symbolHeight,\n square = options.squareSymbol,\n symbolWidth = square ? symbolHeight : legend.symbolWidth;\n item.legendSymbol = this.chart.renderer.rect(square ? (legend.symbolWidth - symbolHeight) / 2 : 0, legend.baseline - symbolHeight + 1, // #3988\n symbolWidth, symbolHeight, pick(legend.options.symbolRadius, symbolHeight / 2))\n .addClass('highcharts-point')\n .attr({\n zIndex: 3\n }).add(item.legendGroup);\n }\n LegendSymbol.drawRectangle = drawRectangle;\n })(LegendSymbol || (LegendSymbol = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return LegendSymbol;\n });\n _registerModule(_modules, 'Core/Series/SeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * General options for all series types.\n *\n * @optionparent plotOptions.series\n */\n var seriesDefaults = {\n // base series options\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin`\n * of a line graph. Round means that lines are rounded in the ends and\n * bends.\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @since 3.0.7\n * @apioption plotOptions.line.linecap\n */\n /**\n * Pixel width of the graph line.\n *\n * @see In styled mode, the line stroke-width can be set with the\n * `.highcharts-graph` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/series-linewidth-general/\n * On all series\n * @sample {highcharts} highcharts/plotoptions/series-linewidth-specific/\n * On one single series\n *\n * @product highcharts highstock\n *\n * @private\n */\n lineWidth: 2,\n /**\n * For some series, there is a limit that shuts down initial animation\n * by default when the total number of points in the chart is too high.\n * For example, for a column chart and its derivatives, animation does\n * not run if there is more than 250 points totally. To disable this\n * cap, set `animationLimit` to `Infinity`.\n *\n * @type {number}\n * @apioption plotOptions.series.animationLimit\n */\n /**\n * Allow this series' points to be selected by clicking on the graphic\n * (columns, point markers, pie slices, map areas etc).\n *\n * The selected points can be handled by point select and unselect\n * events, or collectively by the [getSelectedPoints\n * ](/class-reference/Highcharts.Chart#getSelectedPoints) function.\n *\n * And alternative way of selecting points is through dragging.\n *\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-pie/\n * Pie\n * @sample {highcharts} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Map area\n * @sample {highmaps} maps/plotoptions/mapbubble-allowpointselect/\n * Map bubble\n *\n * @since 1.2.0\n *\n * @private\n */\n allowPointSelect: false,\n /**\n * When true, each point or column edge is rounded to its nearest pixel\n * in order to render sharp on screen. In some cases, when there are a\n * lot of densely packed columns, this leads to visible difference\n * in column widths or distance between columns. In these cases,\n * setting `crisp` to `false` may look better, even though each column\n * is rendered blurry.\n *\n * @sample {highcharts} highcharts/plotoptions/column-crisp-false/\n * Crisp is false\n *\n * @since 5.0.10\n * @product highcharts highstock gantt\n *\n * @private\n */\n crisp: true,\n /**\n * If true, a checkbox is displayed next to the legend item to allow\n * selecting the series. The state of the checkbox is determined by\n * the `selected` option.\n *\n * @productdesc {highmaps}\n * Note that if a `colorAxis` is defined, the color axis is represented\n * in the legend, not the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showcheckbox-true/\n * Show select box\n *\n * @since 1.2.0\n *\n * @private\n */\n showCheckbox: false,\n /**\n * Enable or disable the initial animation when a series is displayed.\n * The animation can also be set as a configuration object. Please\n * note that this option only applies to the initial animation of the\n * series itself. For other animations, see [chart.animation](\n * #chart.animation) and the animation parameter under the API methods.\n * The following properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * - `duration`: The duration of the animation in milliseconds.\n *\n * - `easing`: Can be a string reference to an easing function set on\n * the `Math` object or a function. See the _Custom easing function_\n * demo below.\n *\n * Due to poor performance, animation is disabled in old IE browsers\n * for several chart types.\n *\n * @sample {highcharts} highcharts/plotoptions/series-animation-disabled/\n * Animation disabled\n * @sample {highcharts} highcharts/plotoptions/series-animation-slower/\n * Slower animation\n * @sample {highcharts} highcharts/plotoptions/series-animation-easing/\n * Custom easing function\n * @sample {highstock} stock/plotoptions/animation-slower/\n * Slower animation\n * @sample {highstock} stock/plotoptions/animation-easing/\n * Custom easing function\n * @sample {highmaps} maps/plotoptions/series-animation-true/\n * Animation enabled on map series\n * @sample {highmaps} maps/plotoptions/mapbubble-animation-false/\n * Disabled on mapbubble series\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n *\n * @private\n */\n animation: {\n /** @internal */\n duration: 1000\n },\n /**\n * @default 0\n * @type {number}\n * @since 8.2.0\n * @apioption plotOptions.series.animation.defer\n */\n /**\n * An additional class name to apply to the series' graphical elements.\n * This option does not replace default class names of the graphical\n * element.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.className\n */\n /**\n * Disable this option to allow series rendering in the whole plotting\n * area.\n *\n * **Note:** Clipping should be always enabled when\n * [chart.zoomType](#chart.zoomType) is set\n *\n * @sample {highcharts} highcharts/plotoptions/series-clip/\n * Disabled clipping\n *\n * @default true\n * @type {boolean}\n * @since 3.0.0\n * @apioption plotOptions.series.clip\n */\n /**\n * The main color of the series. In line type series it applies to the\n * line and the point markers unless otherwise specified. In bar type\n * series it applies to the bars unless a color is specified per point.\n * The default value is pulled from the `options.colors` array.\n *\n * In styled mode, the color can be defined by the\n * [colorIndex](#plotOptions.series.colorIndex) option. Also, the series\n * color can be set with the `.highcharts-series`,\n * `.highcharts-color-{n}`, `.highcharts-{type}-series` or\n * `.highcharts-series-{n}` class, or individual classes given by the\n * `className` option.\n *\n * @productdesc {highmaps}\n * In maps, the series color is rarely used, as most choropleth maps use\n * the color to denote the value of each point. The series color can\n * however be used in a map with multiple series holding categorized\n * data.\n *\n * @sample {highcharts} highcharts/plotoptions/series-color-general/\n * General plot option\n * @sample {highcharts} highcharts/plotoptions/series-color-specific/\n * One specific series\n * @sample {highcharts} highcharts/plotoptions/series-color-area/\n * Area color\n * @sample {highcharts} highcharts/series/infographic/\n * Pattern fill\n * @sample {highmaps} maps/demo/category-map/\n * Category map by multiple series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.color\n */\n /**\n * Styled mode only. A specific color index to use for the series, so\n * its graphic representations are given the class name\n * `highcharts-color-{n}`.\n *\n * @type {number}\n * @since 5.0.0\n * @apioption plotOptions.series.colorIndex\n */\n /**\n * Whether to connect a graph line across null points, or render a gap\n * between the two points on either side of the null.\n *\n * @sample {highcharts} highcharts/plotoptions/series-connectnulls-false/\n * False by default\n * @sample {highcharts} highcharts/plotoptions/series-connectnulls-true/\n * True\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock\n * @apioption plotOptions.series.connectNulls\n */\n /**\n * You can set the cursor to \"pointer\" if you have click events attached\n * to the series, to signal to the user that the points and lines can\n * be clicked.\n *\n * In styled mode, the series cursor can be set with the same classes\n * as listed under [series.color](#plotOptions.series.color).\n *\n * @sample {highcharts} highcharts/plotoptions/series-cursor-line/\n * On line graph\n * @sample {highcharts} highcharts/plotoptions/series-cursor-column/\n * On columns\n * @sample {highcharts} highcharts/plotoptions/series-cursor-scatter/\n * On scatter markers\n * @sample {highstock} stock/plotoptions/cursor/\n * Pointer on a line graph\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Map area\n * @sample {highmaps} maps/plotoptions/mapbubble-allowpointselect/\n * Map bubble\n *\n * @type {string|Highcharts.CursorValue}\n * @apioption plotOptions.series.cursor\n */\n /**\n * A reserved subspace to store options and values for customized\n * functionality. Here you can add additional data for your own event\n * callbacks and formatter callbacks.\n *\n * @sample {highcharts} highcharts/point/custom/\n * Point and series with custom data\n *\n * @type {Highcharts.Dictionary<*>}\n * @apioption plotOptions.series.custom\n */\n /**\n * Name of the dash style to use for the graph, or for some series types\n * the outline of each shape.\n *\n * In styled mode, the\n * [stroke dash-array](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/series-dashstyle/)\n * can be set with the same classes as listed under\n * [series.color](#plotOptions.series.color).\n *\n * @sample {highcharts} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highcharts} highcharts/plotoptions/series-dashstyle/\n * Chart suitable for printing in black and white\n * @sample {highstock} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highmaps} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highmaps} maps/plotoptions/series-dashstyle/\n * Dotted borders on a map\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 2.1\n * @apioption plotOptions.series.dashStyle\n */\n /**\n * A description of the series to add to the screen reader information\n * about the series.\n *\n * @type {string}\n * @since 5.0.0\n * @requires modules/accessibility\n * @apioption plotOptions.series.description\n */\n /**\n * Options for the series data sorting.\n *\n * @type {Highcharts.DataSortingOptionsObject}\n * @since 8.0.0\n * @product highcharts highstock\n * @apioption plotOptions.series.dataSorting\n */\n /**\n * Enable or disable data sorting for the series. Use [xAxis.reversed](\n * #xAxis.reversed) to change the sorting order.\n *\n * @sample {highcharts} highcharts/datasorting/animation/\n * Data sorting in scatter-3d\n * @sample {highcharts} highcharts/datasorting/labels-animation/\n * Axis labels animation\n * @sample {highcharts} highcharts/datasorting/dependent-sorting/\n * Dependent series sorting\n * @sample {highcharts} highcharts/datasorting/independent-sorting/\n * Independent series sorting\n *\n * @type {boolean}\n * @since 8.0.0\n * @apioption plotOptions.series.dataSorting.enabled\n */\n /**\n * Whether to allow matching points by name in an update. If this option\n * is disabled, points will be matched by order.\n *\n * @sample {highcharts} highcharts/datasorting/match-by-name/\n * Enabled match by name\n *\n * @type {boolean}\n * @since 8.0.0\n * @apioption plotOptions.series.dataSorting.matchByName\n */\n /**\n * Determines what data value should be used to sort by.\n *\n * @sample {highcharts} highcharts/datasorting/sort-key/\n * Sort key as `z` value\n *\n * @type {string}\n * @since 8.0.0\n * @default y\n * @apioption plotOptions.series.dataSorting.sortKey\n */\n /**\n * Enable or disable the mouse tracking for a specific series. This\n * includes point tooltips and click events on graphs and points. For\n * large datasets it improves performance.\n *\n * @sample {highcharts} highcharts/plotoptions/series-enablemousetracking-false/\n * No mouse tracking\n * @sample {highmaps} maps/plotoptions/series-enablemousetracking-false/\n * No mouse tracking\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.enableMouseTracking\n */\n /**\n * Whether to use the Y extremes of the total chart width or only the\n * zoomed area when zooming in on parts of the X axis. By default, the\n * Y axis adjusts to the min and max of the visible data. Cartesian\n * series only.\n *\n * @type {boolean}\n * @default false\n * @since 4.1.6\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.getExtremesFromAll\n */\n /**\n * An array specifying which option maps to which key in the data point\n * array. This makes it convenient to work with unstructured data arrays\n * from different sources.\n *\n * @see [series.data](#series.line.data)\n *\n * @sample {highcharts|highstock} highcharts/series/data-keys/\n * An extended data array with keys\n * @sample {highcharts|highstock} highcharts/series/data-nested-keys/\n * Nested keys used to access object properties\n *\n * @type {Array<string>}\n * @since 4.1.6\n * @apioption plotOptions.series.keys\n */\n /**\n * The line cap used for line ends and line joins on the graph.\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @product highcharts highstock\n * @apioption plotOptions.series.linecap\n */\n /**\n * The [id](#series.id) of another series to link to. Additionally,\n * the value can be \":previous\" to link to the previous series. When\n * two series are linked, only the first one appears in the legend.\n * Toggling the visibility of this also toggles the linked series.\n *\n * If master series uses data sorting and linked series does not have\n * its own sorting definition, the linked series will be sorted in the\n * same order as the master one.\n *\n * @sample {highcharts|highstock} highcharts/demo/arearange-line/\n * Linked series\n *\n * @type {string}\n * @since 3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.linkedTo\n */\n /**\n * Options for the corresponding navigator series if `showInNavigator`\n * is `true` for this series. Available options are the same as any\n * series, documented at [plotOptions](#plotOptions.series) and\n * [series](#series).\n *\n * These options are merged with options in [navigator.series](\n * #navigator.series), and will take precedence if the same option is\n * defined both places.\n *\n * @see [navigator.series](#navigator.series)\n *\n * @type {Highcharts.PlotSeriesOptions}\n * @since 5.0.0\n * @product highstock\n * @apioption plotOptions.series.navigatorOptions\n */\n /**\n * The color for the parts of the graph or points that are below the\n * [threshold](#plotOptions.series.threshold). Note that `zones` takes\n * precedence over the negative color. Using `negativeColor` is\n * equivalent to applying a zone with value of 0.\n *\n * @see In styled mode, a negative color is applied by setting this option\n * to `true` combined with the `.highcharts-negative` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highcharts} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n * @sample {highcharts} highcharts/css/series-negative-color/\n * Styled mode\n * @sample {highstock} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highstock} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n * @sample {highmaps} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highmaps} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @apioption plotOptions.series.negativeColor\n */\n /**\n * Same as\n * [accessibility.series.descriptionFormatter](#accessibility.series.descriptionFormatter),\n * but for an individual series. Overrides the chart wide configuration.\n *\n * @type {Function}\n * @since 5.0.12\n * @apioption plotOptions.series.pointDescriptionFormatter\n */\n /**\n * If no x values are given for the points in a series, `pointInterval`\n * defines the interval of the x values. For example, if a series\n * contains one value every decade starting from year 0, set\n * `pointInterval` to `10`. In true `datetime` axes, the `pointInterval`\n * is set in milliseconds.\n *\n * It can be also be combined with `pointIntervalUnit` to draw irregular\n * time intervals.\n *\n * If combined with `relativeXValue`, an x value can be set on each\n * point, and the `pointInterval` is added x times to the `pointStart`\n * setting.\n *\n * Please note that this options applies to the _series data_, not the\n * interval of the axis ticks, which is independent.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-datetime/\n * Datetime X axis\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative x value\n * @sample {highstock} stock/plotoptions/pointinterval-pointstart/\n * Using pointStart and pointInterval\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative x value\n *\n * @type {number}\n * @default 1\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointInterval\n */\n /**\n * On datetime series, this allows for setting the\n * [pointInterval](#plotOptions.series.pointInterval) to irregular time\n * units, `day`, `month` and `year`. A day is usually the same as 24\n * hours, but `pointIntervalUnit` also takes the DST crossover into\n * consideration when dealing with local time. Combine this option with\n * `pointInterval` to draw weeks, quarters, 6 months, 10 years etc.\n *\n * Please note that this options applies to the _series data_, not the\n * interval of the axis ticks, which is independent.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointintervalunit/\n * One point a month\n * @sample {highstock} highcharts/plotoptions/series-pointintervalunit/\n * One point a month\n *\n * @type {string}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @validvalue [\"day\", \"month\", \"year\"]\n * @apioption plotOptions.series.pointIntervalUnit\n */\n /**\n * Possible values: `\"on\"`, `\"between\"`, `number`.\n *\n * In a column chart, when pointPlacement is `\"on\"`, the point will not\n * create any padding of the X axis. In a polar column chart this means\n * that the first column points directly north. If the pointPlacement is\n * `\"between\"`, the columns will be laid out between ticks. This is\n * useful for example for visualising an amount between two points in\n * time or in a certain sector of a polar chart.\n *\n * Since Highcharts 3.0.2, the point placement can also be numeric,\n * where 0 is on the axis value, -0.5 is between this value and the\n * previous, and 0.5 is between this value and the next. Unlike the\n * textual options, numeric point placement options won't affect axis\n * padding.\n *\n * Note that pointPlacement needs a [pointRange](\n * #plotOptions.series.pointRange) to work. For column series this is\n * computed, but for line-type series it needs to be set.\n *\n * For the `xrange` series type and gantt charts, if the Y axis is a\n * category axis, the `pointPlacement` applies to the Y axis rather than\n * the (typically datetime) X axis.\n *\n * Defaults to `undefined` in cartesian charts, `\"between\"` in polar\n * charts.\n *\n * @see [xAxis.tickmarkPlacement](#xAxis.tickmarkPlacement)\n *\n * @sample {highcharts|highstock} highcharts/plotoptions/series-pointplacement-between/\n * Between in a column chart\n * @sample {highcharts|highstock} highcharts/plotoptions/series-pointplacement-numeric/\n * Numeric placement for custom layout\n * @sample {highcharts|highstock} maps/plotoptions/heatmap-pointplacement/\n * Placement in heatmap\n *\n * @type {string|number}\n * @since 2.3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointPlacement\n */\n /**\n * If no x values are given for the points in a series, pointStart\n * defines on what value to start. For example, if a series contains one\n * yearly value starting from 1945, set pointStart to 1945.\n *\n * If combined with `relativeXValue`, an x value can be set on each\n * point. The x value from the point options is multiplied by\n * `pointInterval` and added to `pointStart` to produce a modified x\n * value.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-linear/\n * Linear\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-datetime/\n * Datetime\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative x value\n * @sample {highstock} stock/plotoptions/pointinterval-pointstart/\n * Using pointStart and pointInterval\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative x value\n *\n * @type {number}\n * @default 0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointStart\n */\n /**\n * When true, X values in the data set are relative to the current\n * `pointStart`, `pointInterval` and `pointIntervalUnit` settings. This\n * allows compression of the data for datasets with irregular X values.\n *\n * The real X values are computed on the formula `f(x) = ax + b`, where\n * `a` is the `pointInterval` (optionally with a time unit given by\n * `pointIntervalUnit`), and `b` is the `pointStart`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative X value\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative X value\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock\n * @apioption plotOptions.series.relativeXValue\n */\n /**\n * Whether to select the series initially. If `showCheckbox` is true,\n * the checkbox next to the series name in the legend will be checked\n * for a selected series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-selected/\n * One out of two series selected\n *\n * @type {boolean}\n * @default false\n * @since 1.2.0\n * @apioption plotOptions.series.selected\n */\n /**\n * Whether to apply a drop shadow to the graph line. Since 2.3 the\n * shadow can be an object configuration containing `color`, `offsetX`,\n * `offsetY`, `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-shadow/\n * Shadow enabled\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @apioption plotOptions.series.shadow\n */\n /**\n * Whether to display this particular series or series type in the\n * legend. Standalone series are shown in legend by default, and linked\n * series are not. Since v7.2.0 it is possible to show series that use\n * colorAxis by setting this option to `true`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showinlegend/\n * One series in the legend, one hidden\n *\n * @type {boolean}\n * @apioption plotOptions.series.showInLegend\n */\n /**\n * Whether or not to show the series in the navigator. Takes precedence\n * over [navigator.baseSeries](#navigator.baseSeries) if defined.\n *\n * @type {boolean}\n * @since 5.0.0\n * @product highstock\n * @apioption plotOptions.series.showInNavigator\n */\n /**\n * If set to `true`, the accessibility module will skip past the points\n * in this series for keyboard navigation.\n *\n * @type {boolean}\n * @since 5.0.12\n * @apioption plotOptions.series.skipKeyboardNavigation\n */\n /**\n * Whether to stack the values of each series on top of each other.\n * Possible values are `undefined` to disable, `\"normal\"` to stack by\n * value or `\"percent\"`.\n *\n * When stacking is enabled, data must be sorted\n * in ascending X order.\n *\n * Some stacking options are related to specific series types. In the\n * streamgraph series type, the stacking option is set to `\"stream\"`.\n * The second one is `\"overlap\"`, which only applies to waterfall\n * series.\n *\n * @see [yAxis.reversedStacks](#yAxis.reversedStacks)\n *\n * @sample {highcharts} highcharts/plotoptions/series-stacking-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-stacking-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-stacking-bar/\n * Bar\n * @sample {highcharts} highcharts/plotoptions/series-stacking-area/\n * Area\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-bar/\n * Bar\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-area/\n * Area\n * @sample {highcharts} highcharts/plotoptions/series-waterfall-with-normal-stacking\n * Waterfall with normal stacking\n * @sample {highcharts} highcharts/plotoptions/series-waterfall-with-overlap-stacking\n * Waterfall with overlap stacking\n * @sample {highstock} stock/plotoptions/stacking/\n * Area\n *\n * @type {string}\n * @product highcharts highstock\n * @validvalue [\"normal\", \"overlap\", \"percent\", \"stream\"]\n * @apioption plotOptions.series.stacking\n */\n /**\n * Whether to apply steps to the line. Possible values are `left`,\n * `center` and `right`.\n *\n * @sample {highcharts} highcharts/plotoptions/line-step/\n * Different step line options\n * @sample {highcharts} highcharts/plotoptions/area-step/\n * Stepped, stacked area\n * @sample {highstock} stock/plotoptions/line-step/\n * Step line\n *\n * @type {string}\n * @since 1.2.5\n * @product highcharts highstock\n * @validvalue [\"left\", \"center\", \"right\"]\n * @apioption plotOptions.series.step\n */\n /**\n * The threshold, also called zero level or base level. For line type\n * series this is only used in conjunction with\n * [negativeColor](#plotOptions.series.negativeColor).\n *\n * @see [softThreshold](#plotOptions.series.softThreshold).\n *\n * @type {number|null}\n * @default 0\n * @since 3.0\n * @product highcharts highstock\n * @apioption plotOptions.series.threshold\n */\n /**\n * Set the initial visibility of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-visible/\n * Two series, one hidden and one visible\n * @sample {highstock} stock/plotoptions/series-visibility/\n * Hidden series\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.visible\n */\n /**\n * Defines the Axis on which the zones are applied.\n *\n * @see [zones](#plotOptions.series.zones)\n *\n * @sample {highcharts} highcharts/series/color-zones-zoneaxis-x/\n * Zones on the X-Axis\n * @sample {highstock} highcharts/series/color-zones-zoneaxis-x/\n * Zones on the X-Axis\n *\n * @type {string}\n * @default y\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zoneAxis\n */\n /**\n * General event handlers for the series items. These event hooks can\n * also be attached to the series at run time using the\n * `Highcharts.addEvent` function.\n *\n * @declare Highcharts.SeriesEventsOptionsObject\n *\n * @private\n */\n events: {},\n /**\n * Fires after the series has finished its initial animation, or in case\n * animation is disabled, immediately as the series is displayed.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-afteranimate/\n * Show label after animate\n * @sample {highstock} highcharts/plotoptions/series-events-afteranimate/\n * Show label after animate\n *\n * @type {Highcharts.SeriesAfterAnimateCallbackFunction}\n * @since 4.0\n * @product highcharts highstock gantt\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.afterAnimate\n */\n /**\n * Fires when the checkbox next to the series' name in the legend is\n * clicked. One parameter, `event`, is passed to the function. The state\n * of the checkbox is found by `event.checked`. The checked item is\n * found by `event.item`. Return `false` to prevent the default action\n * which is to toggle the select state of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-checkboxclick/\n * Alert checkbox status\n *\n * @type {Highcharts.SeriesCheckboxClickCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.checkboxClick\n */\n /**\n * Fires when the series is clicked. One parameter, `event`, is passed\n * to the function, containing common event information. Additionally,\n * `event.point` holds a pointer to the nearest point on the graph.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-click/\n * Alert click info\n * @sample {highstock} stock/plotoptions/series-events-click/\n * Alert click info\n * @sample {highmaps} maps/plotoptions/series-events-click/\n * Display click info in subtitle\n *\n * @type {Highcharts.SeriesClickCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.click\n */\n /**\n * Fires when the series is hidden after chart generation time, either\n * by clicking the legend item or by calling `.hide()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-hide/\n * Alert when the series is hidden by clicking the legend item\n *\n * @type {Highcharts.SeriesHideCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.hide\n */\n /**\n * Fires when the legend item belonging to the series is clicked. One\n * parameter, `event`, is passed to the function. The default action\n * is to toggle the visibility of the series. This can be prevented\n * by returning `false` or calling `event.preventDefault()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-legenditemclick/\n * Confirm hiding and showing\n *\n * @type {Highcharts.SeriesLegendItemClickCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.legendItemClick\n */\n /**\n * Fires when the mouse leaves the graph. One parameter, `event`, is\n * passed to the function, containing common event information. If the\n * [stickyTracking](#plotOptions.series) option is true, `mouseOut`\n * doesn't happen before the mouse enters another graph or leaves the\n * plot area.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-sticky/\n * With sticky tracking by default\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-no-sticky/\n * Without sticky tracking\n *\n * @type {Highcharts.SeriesMouseOutCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.mouseOut\n */\n /**\n * Fires when the mouse enters the graph. One parameter, `event`, is\n * passed to the function, containing common event information.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-sticky/\n * With sticky tracking by default\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-no-sticky/\n * Without sticky tracking\n *\n * @type {Highcharts.SeriesMouseOverCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.mouseOver\n */\n /**\n * Fires when the series is shown after chart generation time, either\n * by clicking the legend item or by calling `.show()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-show/\n * Alert when the series is shown by clicking the legend item.\n *\n * @type {Highcharts.SeriesShowCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.show\n */\n /**\n * Options for the point markers of line-like series. Properties like\n * `fillColor`, `lineColor` and `lineWidth` define the visual appearance\n * of the markers. Other series types, like column series, don't have\n * markers, but have visual options on the series level instead.\n *\n * In styled mode, the markers can be styled with the\n * `.highcharts-point`, `.highcharts-point-hover` and\n * `.highcharts-point-select` class names.\n *\n * @declare Highcharts.PointMarkerOptionsObject\n *\n * @private\n */\n marker: {\n /**\n * Enable or disable the point marker. If `undefined`, the markers\n * are hidden when the data is dense, and shown for more widespread\n * data points.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-enabled/\n * Disabled markers\n * @sample {highcharts} highcharts/plotoptions/series-marker-enabled-false/\n * Disabled in normal state but enabled on hover\n * @sample {highstock} stock/plotoptions/series-marker/\n * Enabled markers\n *\n * @type {boolean}\n * @default {highcharts} undefined\n * @default {highstock} false\n * @apioption plotOptions.series.marker.enabled\n */\n /**\n * The threshold for how dense the point markers should be before\n * they are hidden, given that `enabled` is not defined. The number\n * indicates the horizontal distance between the two closest points\n * in the series, as multiples of the `marker.radius`. In other\n * words, the default value of 2 means points are hidden if\n * overlapping horizontally.\n *\n * @sample highcharts/plotoptions/series-marker-enabledthreshold\n * A higher threshold\n *\n * @since 6.0.5\n */\n enabledThreshold: 2,\n /**\n * The fill color of the point marker. When `undefined`, the series'\n * or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * White fill\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.fillColor\n */\n /**\n * Image markers only. Set the image width explicitly. When using\n * this option, a `width` must also be set.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n * @sample {highstock} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n *\n * @type {number}\n * @since 4.0.4\n * @apioption plotOptions.series.marker.height\n */\n /**\n * The color of the point marker's outline. When `undefined`, the\n * series' or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * Inherit from series color (undefined)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n lineColor: \"#ffffff\" /* backgroundColor */,\n /**\n * The width of the point marker's outline.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * 2px blue marker\n */\n lineWidth: 0,\n /**\n * The radius of the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-radius/\n * Bigger markers\n *\n * @default {highstock} 2\n * @default {highcharts} 4\n *\n */\n radius: 4,\n /**\n * A predefined shape or symbol for the marker. When undefined, the\n * symbol is pulled from options.symbols. Other possible values are\n * `'circle'`, `'square'`,`'diamond'`, `'triangle'` and\n * `'triangle-down'`.\n *\n * Additionally, the URL to a graphic can be given on this form:\n * `'url(graphic.png)'`. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export\n * server.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols`. The callback is then\n * used by its method name, as shown in the demo.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-symbol/\n * Predefined, graphic and custom markers\n * @sample {highstock} highcharts/plotoptions/series-marker-symbol/\n * Predefined, graphic and custom markers\n *\n * @type {string}\n * @apioption plotOptions.series.marker.symbol\n */\n /**\n * Image markers only. Set the image width explicitly. When using\n * this option, a `height` must also be set.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n * @sample {highstock} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n *\n * @type {number}\n * @since 4.0.4\n * @apioption plotOptions.series.marker.width\n */\n /**\n * States for a single point marker.\n *\n * @declare Highcharts.PointStatesOptionsObject\n */\n states: {\n /**\n * The normal state of a single point marker. Currently only\n * used for setting animation when returning to normal state\n * from hover.\n *\n * @declare Highcharts.PointStatesNormalOptionsObject\n */\n normal: {\n /**\n * Animation when returning to normal state after hovering.\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n */\n animation: true\n },\n /**\n * The hover state for a single point marker.\n *\n * @declare Highcharts.PointStatesHoverOptionsObject\n */\n hover: {\n /**\n * Animation when hovering over the marker.\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n */\n animation: {\n /** @internal */\n duration: 50\n },\n /**\n * Enable or disable the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-enabled/\n * Disabled hover state\n */\n enabled: true,\n /**\n * The fill color of the marker in hover state. When\n * `undefined`, the series' or point's fillColor for normal\n * state is used.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.states.hover.fillColor\n */\n /**\n * The color of the point marker's outline. When\n * `undefined`, the series' or point's lineColor for normal\n * state is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-linecolor/\n * White fill color, black line color\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.states.hover.lineColor\n */\n /**\n * The width of the point marker's outline. When\n * `undefined`, the series' or point's lineWidth for normal\n * state is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-linewidth/\n * 3px line width\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.hover.lineWidth\n */\n /**\n * The radius of the point marker. In hover state, it\n * defaults to the normal state's radius + 2 as per the\n * [radiusPlus](#plotOptions.series.marker.states.hover.radiusPlus)\n * option.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-radius/\n * 10px radius\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.hover.radius\n */\n /**\n * The number of pixels to increase the radius of the\n * hovered point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels greater radius on hover\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels greater radius on hover\n *\n * @since 4.0.3\n */\n radiusPlus: 2,\n /**\n * The additional line width for a hovered point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 2 pixels wider on hover\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 2 pixels wider on hover\n *\n * @since 4.0.3\n */\n lineWidthPlus: 1\n },\n /**\n * The appearance of the point marker when selected. In order to\n * allow a point to be selected, set the\n * `series.allowPointSelect` option to true.\n *\n * @declare Highcharts.PointStatesSelectOptionsObject\n */\n select: {\n /**\n * Enable or disable visible feedback for selection.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-enabled/\n * Disabled select state\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.marker.states.select.enabled\n */\n /**\n * The radius of the point marker. In hover state, it\n * defaults to the normal state's radius + 2.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-radius/\n * 10px radius for selected points\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.select.radius\n */\n /**\n * The fill color of the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-fillcolor/\n * Solid red discs for selected points\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n fillColor: \"#cccccc\" /* neutralColor20 */,\n /**\n * The color of the point marker's outline. When\n * `undefined`, the series' or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-linecolor/\n * Red line color for selected points\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n lineColor: \"#000000\" /* neutralColor100 */,\n /**\n * The width of the point marker's outline.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-linewidth/\n * 3px line width for selected points\n */\n lineWidth: 2\n }\n }\n },\n /**\n * Properties for each single point.\n *\n * @declare Highcharts.PlotSeriesPointOptions\n *\n * @private\n */\n point: {\n /**\n * Fires when a point is clicked. One parameter, `event`, is passed\n * to the function, containing common event information.\n *\n * If the `series.allowPointSelect` option is true, the default\n * action for the point's click event is to toggle the point's\n * select state. Returning `false` cancels this action.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click/\n * Click marker to alert values\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click-column/\n * Click column\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click-url/\n * Go to URL\n * @sample {highmaps} maps/plotoptions/series-point-events-click/\n * Click marker to display values\n * @sample {highmaps} maps/plotoptions/series-point-events-click-url/\n * Go to URL\n *\n * @type {Highcharts.PointClickCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.click\n */\n /**\n * Fires when the mouse leaves the area close to the point. One\n * parameter, `event`, is passed to the function, containing common\n * event information.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Show values in the chart's corner on mouse over\n *\n * @type {Highcharts.PointMouseOutCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.mouseOut\n */\n /**\n * Fires when the mouse enters the area close to the point. One\n * parameter, `event`, is passed to the function, containing common\n * event information.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Show values in the chart's corner on mouse over\n *\n * @type {Highcharts.PointMouseOverCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.mouseOver\n */\n /**\n * Fires when the point is removed using the `.remove()` method. One\n * parameter, `event`, is passed to the function. Returning `false`\n * cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-remove/\n * Remove point and confirm\n *\n * @type {Highcharts.PointRemoveCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.remove\n */\n /**\n * Fires when the point is selected either programmatically or\n * following a click on the point. One parameter, `event`, is passed\n * to the function. Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-select/\n * Report the last selected point\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Report select and unselect\n *\n * @type {Highcharts.PointSelectCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.select\n */\n /**\n * Fires when the point is unselected either programmatically or\n * following a click on the point. One parameter, `event`, is passed\n * to the function.\n * Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-unselect/\n * Report the last unselected point\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Report select and unselect\n *\n * @type {Highcharts.PointUnselectCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.unselect\n */\n /**\n * Fires when the point is updated programmatically through the\n * `.update()` method. One parameter, `event`, is passed to the\n * function. The new point options can be accessed through\n * `event.options`. Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-update/\n * Confirm point updating\n *\n * @type {Highcharts.PointUpdateCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.update\n */\n /**\n * Events for each single point.\n *\n * @declare Highcharts.PointEventsOptionsObject\n */\n events: {}\n },\n /**\n * Options for the series data labels, appearing next to each data\n * point.\n *\n * Since v6.2.0, multiple data labels can be applied to each single\n * point by defining them as an array of configs.\n *\n * In styled mode, the data labels can be styled with the\n * `.highcharts-data-label-box` and `.highcharts-data-label` class names\n * ([see example](https://www.highcharts.com/samples/highcharts/css/series-datalabels)).\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-enabled\n * Data labels enabled\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-multiple\n * Multiple data labels on a bar series\n * @sample {highcharts} highcharts/css/series-datalabels\n * Style mode example\n *\n * @type {*|Array<*>}\n * @product highcharts highstock highmaps gantt\n *\n * @private\n */\n dataLabels: {\n /**\n * Enable or disable the initial animation when a series is\n * displayed for the `dataLabels`. The animation can also be set as\n * a configuration object. Please note that this option only\n * applies to the initial animation.\n * For other animations, see [chart.animation](#chart.animation)\n * and the animation parameter under the API methods.\n * The following properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * @sample {highcharts} highcharts/plotoptions/animation-defer/\n * Animation defer settings\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n * @since 8.2.0\n * @apioption plotOptions.series.dataLabels.animation\n */\n animation: {},\n /**\n * The animation delay time in milliseconds.\n * Set to `0` renders dataLabel immediately.\n * As `undefined` inherits defer time from the [series.animation.defer](#plotOptions.series.animation.defer).\n *\n * @type {number}\n * @since 8.2.0\n * @apioption plotOptions.series.dataLabels.animation.defer\n */\n /**\n * The alignment of the data label compared to the point. If\n * `right`, the right side of the label should be touching the\n * point. For points with an extent, like columns, the alignments\n * also dictates how to align it inside the box, as given with the\n * [inside](#plotOptions.column.dataLabels.inside)\n * option. Can be one of `left`, `center` or `right`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-align-left/\n * Left aligned\n * @sample {highcharts} highcharts/plotoptions/bar-datalabels-align-inside-bar/\n * Data labels inside the bar\n *\n * @type {Highcharts.AlignValue|null}\n */\n align: 'center',\n /**\n * Whether to allow data labels to overlap. To make the labels less\n * sensitive for overlapping, the\n * [dataLabels.padding](#plotOptions.series.dataLabels.padding)\n * can be set to 0.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-allowoverlap-false/\n * Don't allow overlap\n *\n * @type {boolean}\n * @default false\n * @since 4.1.0\n * @apioption plotOptions.series.dataLabels.allowOverlap\n */\n /**\n * The background color or gradient for the data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.backgroundColor\n */\n /**\n * The border color for the data label. Defaults to `undefined`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderColor\n */\n /**\n * The border radius in pixels for the data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {number}\n * @default 0\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderRadius\n */\n /**\n * The border width in pixels for the data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {number}\n * @default 0\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderWidth\n */\n /**\n * A class name for the data label. Particularly in styled mode,\n * this can be used to give each series' or point's data label\n * unique styling. In addition to this option, a default color class\n * name is added so that we can give the labels a contrast text\n * shadow.\n *\n * @sample {highcharts} highcharts/css/data-label-contrast/\n * Contrast text shadow\n * @sample {highcharts} highcharts/css/series-datalabels/\n * Styling by CSS\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.dataLabels.className\n */\n /**\n * The text color for the data labels. Defaults to `undefined`. For\n * certain series types, like column or map, the data labels can be\n * drawn inside the points. In this case the data label will be\n * drawn with maximum contrast by default. Additionally, it will be\n * given a `text-outline` style with the opposite color, to further\n * increase the contrast. This can be overridden by setting the\n * `text-outline` style to `none` in the `dataLabels.style` option.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-color/\n * Red data labels\n * @sample {highmaps} maps/demo/color-axis/\n * White data labels\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.dataLabels.color\n */\n /**\n * Whether to hide data labels that are outside the plot area. By\n * default, the data label is moved inside the plot area according\n * to the\n * [overflow](#plotOptions.series.dataLabels.overflow)\n * option.\n *\n * @type {boolean}\n * @default true\n * @since 2.3.3\n * @apioption plotOptions.series.dataLabels.crop\n */\n /**\n * Whether to defer displaying the data labels until the initial\n * series animation has finished. Setting to `false` renders the\n * data label immediately. If set to `true` inherits the defer\n * time set in [plotOptions.series.animation](#plotOptions.series.animation).\n * If set to a number, a defer time is specified in milliseconds.\n *\n * @sample highcharts/plotoptions/animation-defer\n * Set defer time\n *\n * @since 4.0.0\n * @type {boolean|number}\n * @product highcharts highstock gantt\n */\n defer: true,\n /**\n * Enable or disable the data labels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-enabled/\n * Data labels enabled\n * @sample {highmaps} maps/demo/color-axis/\n * Data labels enabled\n *\n * @type {boolean}\n * @default false\n * @apioption plotOptions.series.dataLabels.enabled\n */\n /**\n * A declarative filter to control of which data labels to display.\n * The declarative filter is designed for use when callback\n * functions are not available, like when the chart options require\n * a pure JSON structure or for use with graphical editors. For\n * programmatic control, use the `formatter` instead, and return\n * `undefined` to disable a single data label.\n *\n * @example\n * filter: {\n * property: 'percentage',\n * operator: '>',\n * value: 4\n * }\n *\n * @sample {highcharts} highcharts/demo/pie-monochrome\n * Data labels filtered by percentage\n *\n * @declare Highcharts.DataLabelsFilterOptionsObject\n * @since 6.0.3\n * @apioption plotOptions.series.dataLabels.filter\n */\n /**\n * The operator to compare by. Can be one of `>`, `<`, `>=`, `<=`,\n * `==`, and `===`.\n *\n * @type {string}\n * @validvalue [\">\", \"<\", \">=\", \"<=\", \"==\", \"===\"]\n * @apioption plotOptions.series.dataLabels.filter.operator\n */\n /**\n * The point property to filter by. Point options are passed\n * directly to properties, additionally there are `y` value,\n * `percentage` and others listed under {@link Highcharts.Point}\n * members.\n *\n * @type {string}\n * @apioption plotOptions.series.dataLabels.filter.property\n */\n /**\n * The value to compare against.\n *\n * @type {number}\n * @apioption plotOptions.series.dataLabels.filter.value\n */\n /**\n * A\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for the data label. Available variables are the same as for\n * `formatter`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-format/\n * Add a unit\n * @sample {highmaps} maps/plotoptions/series-datalabels-format/\n * Formatted value in the data label\n *\n * @type {string}\n * @default y\n * @default point.value\n * @since 3.0\n * @apioption plotOptions.series.dataLabels.format\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Callback JavaScript function to format the data label. Note that if a\n * `format` is defined, the format takes precedence and the formatter is\n * ignored.\n *\n * @sample {highmaps} maps/plotoptions/series-datalabels-format/\n * Formatted value\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n */\n formatter: function () {\n var numberFormatter = this.series.chart.numberFormatter;\n return typeof this.y !== 'number' ?\n '' : numberFormatter(this.y, -1);\n },\n /**\n * For points with an extent, like columns or map areas, whether to\n * align the data label inside the box or to the actual value point.\n * Defaults to `false` in most cases, `true` in stacked columns.\n *\n * @type {boolean}\n * @since 3.0\n * @apioption plotOptions.series.dataLabels.inside\n */\n /**\n * Format for points with the value of null. Works analogously to\n * [format](#plotOptions.series.dataLabels.format). `nullFormat` can\n * be applied only to series which support displaying null points.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-format/\n * Format data label and tooltip for null point.\n *\n * @type {boolean|string}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.nullFormat\n */\n /**\n * Callback JavaScript function that defines formatting for points\n * with the value of null. Works analogously to\n * [formatter](#plotOptions.series.dataLabels.formatter).\n * `nullPointFormatter` can be applied only to series which support\n * displaying null points.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-format/\n * Format data label and tooltip for null point.\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.nullFormatter\n */\n /**\n * How to handle data labels that flow outside the plot area. The\n * default is `\"justify\"`, which aligns them inside the plot area.\n * For columns and bars, this means it will be moved inside the bar.\n * To display data labels outside the plot area, set `crop` to\n * `false` and `overflow` to `\"allow\"`.\n *\n * @type {Highcharts.DataLabelsOverflowValue}\n * @default justify\n * @since 3.0.6\n * @apioption plotOptions.series.dataLabels.overflow\n */\n /**\n * When either the `borderWidth` or the `backgroundColor` is set,\n * this is the padding within the box.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @since 2.2.1\n */\n padding: 5,\n /**\n * Aligns data labels relative to points. If `center` alignment is\n * not possible, it defaults to `right`.\n *\n * @type {Highcharts.AlignValue}\n * @default center\n * @apioption plotOptions.series.dataLabels.position\n */\n /**\n * Text rotation in degrees. Note that due to a more complex\n * structure, backgrounds, borders and padding will be lost on a\n * rotated data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical labels\n *\n * @type {number}\n * @default 0\n * @apioption plotOptions.series.dataLabels.rotation\n */\n /**\n * The shadow of the box. Works best with `borderWidth` or\n * `backgroundColor`. Since 2.3 the shadow can be an object\n * configuration containing `color`, `offsetX`, `offsetY`, `opacity`\n * and `width`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.shadow\n */\n /**\n * The name of a symbol to use for the border around the label.\n * Symbols are predefined functions on the Renderer object.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-shape/\n * A callout for annotations\n *\n * @type {string}\n * @default square\n * @since 4.1.2\n * @apioption plotOptions.series.dataLabels.shape\n */\n /**\n * Styles for the label. The default `color` setting is\n * `\"contrast\"`, which is a pseudo color that Highcharts picks up\n * and applies the maximum contrast to the underlying point item,\n * for example the bar in a bar chart.\n *\n * The `textOutline` is a pseudo property that applies an outline of\n * the given width with the given color, which by default is the\n * maximum contrast to the text. So a bright text color will result\n * in a black text outline for maximum readability on a mixed\n * background. In some cases, especially with grayscale text, the\n * text outline doesn't work well, in which cases it can be disabled\n * by setting it to `\"none\"`. When `useHTML` is true, the\n * `textOutline` will not be picked up. In this, case, the same\n * effect can be acheived through the `text-shadow` CSS property.\n *\n * For some series types, where each point has an extent, like for\n * example tree maps, the data label may overflow the point. There\n * are two strategies for handling overflow. By default, the text\n * will wrap to multiple lines. The other strategy is to set\n * `style.textOverflow` to `ellipsis`, which will keep the text on\n * one line plus it will break inside long words.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-style/\n * Bold labels\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow/\n * Long labels truncated with an ellipsis in a pie\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow-wrap/\n * Long labels are wrapped in a pie\n * @sample {highmaps} maps/demo/color-axis/\n * Bold labels\n *\n * @type {Highcharts.CSSObject}\n * @since 4.1.0\n * @apioption plotOptions.series.dataLabels.style\n */\n style: {\n /** @internal */\n fontSize: '11px',\n /** @internal */\n fontWeight: 'bold',\n /** @internal */\n color: 'contrast',\n /** @internal */\n textOutline: '1px contrast'\n },\n /**\n * Options for a label text which should follow marker's shape.\n * Border and background are disabled for a label that follows a\n * path.\n *\n * **Note:** Only SVG-based renderer supports this option. Setting\n * `useHTML` to true will disable this option.\n *\n * @declare Highcharts.DataLabelsTextPathOptionsObject\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath\n */\n /**\n * Presentation attributes for the text path.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath.attributes\n */\n /**\n * Enable or disable `textPath` option for link's or marker's data\n * labels.\n *\n * @type {boolean}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath.enabled\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @apioption plotOptions.series.dataLabels.useHTML\n */\n /**\n * The vertical alignment of a data label. Can be one of `top`,\n * `middle` or `bottom`. The default value depends on the data, for\n * instance in a column chart, the label is above positive values\n * and below negative values.\n *\n * @type {Highcharts.VerticalAlignValue|null}\n * @since 2.3.3\n */\n verticalAlign: 'bottom',\n /**\n * The x position offset of the label relative to the point in\n * pixels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical and positioned\n * @sample {highcharts} highcharts/plotoptions/bar-datalabels-align-inside-bar/\n * Data labels inside the bar\n */\n x: 0,\n /**\n * The Z index of the data labels. The default Z index puts it above\n * the series. Use a Z index of 2 to display it behind the series.\n *\n * @type {number}\n * @default 6\n * @since 2.3.5\n * @apioption plotOptions.series.dataLabels.z\n */\n /**\n * The y position offset of the label relative to the point in\n * pixels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical and positioned\n */\n y: 0\n },\n /**\n * When the series contains less points than the crop threshold, all\n * points are drawn, even if the points fall outside the visible plot\n * area at the current zoom. The advantage of drawing all points\n * (including markers and columns), is that animation is performed on\n * updates. On the other hand, when the series contains more points than\n * the crop threshold, the series data is cropped to only contain points\n * that fall within the plot area. The advantage of cropping away\n * invisible points is to increase performance on large series.\n *\n * @since 2.2\n * @product highcharts highstock\n *\n * @private\n */\n cropThreshold: 300,\n /**\n * Opacity of a series parts: line, fill (e.g. area) and dataLabels.\n *\n * @see [states.inactive.opacity](#plotOptions.series.states.inactive.opacity)\n *\n * @since 7.1.0\n *\n * @private\n */\n opacity: 1,\n /**\n * The width of each point on the x axis. For example in a column chart\n * with one value each day, the pointRange would be 1 day (= 24 * 3600\n * * 1000 milliseconds). This is normally computed automatically, but\n * this option can be used to override the automatic value.\n *\n * @product highstock\n *\n * @private\n */\n pointRange: 0,\n /**\n * When this is true, the series will not cause the Y axis to cross\n * the zero plane (or [threshold](#plotOptions.series.threshold) option)\n * unless the data actually crosses the plane.\n *\n * For example, if `softThreshold` is `false`, a series of 0, 1, 2,\n * 3 will make the Y axis show negative values according to the\n * `minPadding` option. If `softThreshold` is `true`, the Y axis starts\n * at 0.\n *\n * @since 4.1.9\n * @product highcharts highstock\n *\n * @private\n */\n softThreshold: true,\n /**\n * @declare Highcharts.SeriesStatesOptionsObject\n *\n * @private\n */\n states: {\n /**\n * The normal state of a series, or for point items in column, pie\n * and similar series. Currently only used for setting animation\n * when returning to normal state from hover.\n *\n * @declare Highcharts.SeriesStatesNormalOptionsObject\n */\n normal: {\n /**\n * Animation when returning to normal state after hovering.\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n */\n animation: true\n },\n /**\n * Options for the hovered series. These settings override the\n * normal state options when a series is moused over or touched.\n *\n * @declare Highcharts.SeriesStatesHoverOptionsObject\n */\n hover: {\n /**\n * Enable separate styles for the hovered series to visualize\n * that the user hovers either the series itself or the legend.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled-pie/\n * Pie\n *\n * @type {boolean}\n * @default true\n * @since 1.2\n * @apioption plotOptions.series.states.hover.enabled\n */\n /**\n * Animation setting for hovering the graph in line-type series.\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n * @since 5.0.8\n * @product highcharts highstock\n */\n animation: {\n /**\n * The duration of the hover animation in milliseconds. By\n * default the hover state animates quickly in, and slowly\n * back to normal.\n *\n * @internal\n */\n duration: 50\n },\n /**\n * Pixel width of the graph line. By default this property is\n * undefined, and the `lineWidthPlus` property dictates how much\n * to increase the linewidth from normal state.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidth/\n * 5px line on hover\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption plotOptions.series.states.hover.lineWidth\n */\n /**\n * The additional line width for the graph of a hovered series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels wider\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels wider\n *\n * @since 4.0.3\n * @product highcharts highstock\n */\n lineWidthPlus: 1,\n /**\n * In Highcharts 1.0, the appearance of all markers belonging\n * to the hovered series. For settings on the hover state of the\n * individual point, see\n * [marker.states.hover](#plotOptions.series.marker.states.hover).\n *\n * @deprecated\n *\n * @extends plotOptions.series.marker\n * @excluding states\n * @product highcharts highstock\n */\n marker: {\n // lineWidth: base + 1,\n // radius: base + 1\n },\n /**\n * Options for the halo appearing around the hovered point in\n * line-type series as well as outside the hovered slice in pie\n * charts. By default the halo is filled by the current point or\n * series color with an opacity of 0.25\\. The halo can be\n * disabled by setting the `halo` option to `null`.\n *\n * In styled mode, the halo is styled with the\n * `.highcharts-halo` class, with colors inherited from\n * `.highcharts-color-{n}`.\n *\n * @sample {highcharts} highcharts/plotoptions/halo/\n * Halo options\n * @sample {highstock} highcharts/plotoptions/halo/\n * Halo options\n *\n * @declare Highcharts.SeriesStatesHoverHaloOptionsObject\n * @type {null|*}\n * @since 4.0\n * @product highcharts highstock\n */\n halo: {\n /**\n * A collection of SVG attributes to override the appearance\n * of the halo, for example `fill`, `stroke` and\n * `stroke-width`.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 4.0\n * @product highcharts highstock\n * @apioption plotOptions.series.states.hover.halo.attributes\n */\n /**\n * The pixel size of the halo. For point markers this is the\n * radius of the halo. For pie slices it is the width of the\n * halo outside the slice. For bubbles it defaults to 5 and\n * is the width of the halo outside the bubble.\n *\n * @since 4.0\n * @product highcharts highstock\n */\n size: 10,\n /**\n * Opacity for the halo unless a specific fill is overridden\n * using the `attributes` setting. Note that Highcharts is\n * only able to apply opacity to colors of hex or rgb(a)\n * formats.\n *\n * @since 4.0\n * @product highcharts highstock\n */\n opacity: 0.25\n }\n },\n /**\n * Specific options for point in selected states, after being\n * selected by\n * [allowPointSelect](#plotOptions.series.allowPointSelect)\n * or programmatically.\n *\n * @sample maps/plotoptions/series-allowpointselect/\n * Allow point select demo\n *\n * @declare Highcharts.SeriesStatesSelectOptionsObject\n * @extends plotOptions.series.states.hover\n * @excluding brightness\n */\n select: {\n animation: {\n /** @internal */\n duration: 0\n }\n },\n /**\n * The opposite state of a hover for series.\n *\n * @sample highcharts/plotoptions/series-states-inactive-disabled\n * Disabled inactive state\n *\n * @declare Highcharts.SeriesStatesInactiveOptionsObject\n */\n inactive: {\n /**\n * Enable or disable the inactive state for a series\n *\n * @sample highcharts/plotoptions/series-states-inactive-disabled\n * Disabled inactive state\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.states.inactive.enabled\n */\n /**\n * The animation for entering the inactive state.\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n */\n animation: {\n /** @internal */\n duration: 50\n },\n /**\n * Opacity of series elements (dataLabels, line, area).\n *\n * @type {number}\n */\n opacity: 0.2\n }\n },\n /**\n * Sticky tracking of mouse events. When true, the `mouseOut` event on a\n * series isn't triggered until the mouse moves over another series, or\n * out of the plot area. When false, the `mouseOut` event on a series is\n * triggered when the mouse leaves the area around the series' graph or\n * markers. This also implies the tooltip when not shared. When\n * `stickyTracking` is false and `tooltip.shared` is false, the tooltip\n * will be hidden when moving the mouse between series. Defaults to true\n * for line and area type series, but to false for columns, pies etc.\n *\n * **Note:** The boost module will force this option because of\n * technical limitations.\n *\n * @sample {highcharts} highcharts/plotoptions/series-stickytracking-true/\n * True by default\n * @sample {highcharts} highcharts/plotoptions/series-stickytracking-false/\n * False\n *\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n * @since 2.0\n *\n * @private\n */\n stickyTracking: true,\n /**\n * A configuration object for the tooltip rendering of each single\n * series. Properties are inherited from [tooltip](#tooltip), but only\n * the following properties can be defined on a series level.\n *\n * @declare Highcharts.SeriesTooltipOptionsObject\n * @since 2.3\n * @extends tooltip\n * @excluding animation, backgroundColor, borderColor, borderRadius,\n * borderWidth, className, crosshairs, enabled, formatter,\n * headerShape, hideDelay, outside, padding, positioner,\n * shadow, shape, shared, snap, split, stickOnContact,\n * style, useHTML\n * @apioption plotOptions.series.tooltip\n */\n /**\n * When a series contains a data array that is longer than this, only\n * one dimensional arrays of numbers, or two dimensional arrays with\n * x and y values are allowed. Also, only the first point is tested,\n * and the rest are assumed to be the same format. This saves expensive\n * data checking and indexing in long series. Set it to `0` disable.\n *\n * Note:\n * In boost mode turbo threshold is forced. Only array of numbers or\n * two dimensional arrays are allowed.\n *\n * @since 2.2\n * @product highcharts highstock gantt\n *\n * @private\n */\n turboThreshold: 1000,\n /**\n * An array defining zones within a series. Zones can be applied to the\n * X axis, Y axis or Z axis for bubbles, according to the `zoneAxis`\n * option. The zone definitions have to be in ascending order regarding\n * to the value.\n *\n * In styled mode, the color zones are styled with the\n * `.highcharts-zone-{n}` class, or custom classed from the `className`\n * option\n * ([view live demo](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/color-zones/)).\n *\n * @see [zoneAxis](#plotOptions.series.zoneAxis)\n *\n * @sample {highcharts} highcharts/series/color-zones-simple/\n * Color zones\n * @sample {highstock} highcharts/series/color-zones-simple/\n * Color zones\n *\n * @declare Highcharts.SeriesZonesOptionsObject\n * @type {Array<*>}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones\n */\n /**\n * Styled mode only. A custom class name for the zone.\n *\n * @sample highcharts/css/color-zones/\n * Zones styled by class name\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.zones.className\n */\n /**\n * Defines the color of the series.\n *\n * @see [series color](#plotOptions.series.color)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.color\n */\n /**\n * A name for the dash style to use for the graph.\n *\n * @see [plotOptions.series.dashStyle](#plotOptions.series.dashStyle)\n *\n * @sample {highcharts|highstock} highcharts/series/color-zones-dashstyle-dot/\n * Dashed line indicates prognosis\n *\n * @type {Highcharts.DashStyleValue}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.dashStyle\n */\n /**\n * Defines the fill color for the series (in area type series)\n *\n * @see [fillColor](#plotOptions.area.fillColor)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.fillColor\n */\n /**\n * The value up to where the zone extends, if undefined the zones\n * stretches to the last value in the series.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.value\n */\n /**\n * When using dual or multiple color axes, this number defines which\n * colorAxis the particular series is connected to. It refers to\n * either the\n * {@link #colorAxis.id|axis id}\n * or the index of the axis in the colorAxis array, with 0 being the\n * first. Set this option to false to prevent a series from connecting\n * to the default color axis.\n *\n * Since v7.2.0 the option can also be an axis id or an axis index\n * instead of a boolean flag.\n *\n * @sample highcharts/coloraxis/coloraxis-with-pie/\n * Color axis with pie series\n * @sample highcharts/coloraxis/multiple-coloraxis/\n * Multiple color axis\n *\n * @type {number|string|boolean}\n * @default 0\n * @product highcharts highstock highmaps\n * @apioption plotOptions.series.colorAxis\n */\n /**\n * Determines what data value should be used to calculate point color\n * if `colorAxis` is used. Requires to set `min` and `max` if some\n * custom point property is used or if approximation for data grouping\n * is set to `'sum'`.\n *\n * @sample highcharts/coloraxis/custom-color-key/\n * Custom color key\n * @sample highcharts/coloraxis/changed-default-color-key/\n * Changed default color key\n *\n * @type {string}\n * @default y\n * @since 7.2.0\n * @product highcharts highstock highmaps\n * @apioption plotOptions.series.colorKey\n */\n /**\n * Determines whether the series should look for the nearest point\n * in both dimensions or just the x-dimension when hovering the series.\n * Defaults to `'xy'` for scatter series and `'x'` for most other\n * series. If the data has duplicate x-values, it is recommended to\n * set this to `'xy'` to allow hovering over all points.\n *\n * Applies only to series types using nearest neighbor search (not\n * direct hover) for tooltip.\n *\n * @sample {highcharts} highcharts/series/findnearestpointby/\n * Different hover behaviors\n * @sample {highstock} highcharts/series/findnearestpointby/\n * Different hover behaviors\n * @sample {highmaps} highcharts/series/findnearestpointby/\n * Different hover behaviors\n *\n * @since 5.0.10\n * @validvalue [\"x\", \"xy\"]\n *\n * @private\n */\n findNearestPointBy: 'x'\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return seriesDefaults;\n });\n _registerModule(_modules, 'Core/Series/Series.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/DefaultOptions.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/Point.js'], _modules['Core/Series/SeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (A, D, F, H, LegendSymbol, Point, SeriesDefaults, SeriesRegistry, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject,\n setAnimation = A.setAnimation;\n var defaultOptions = D.defaultOptions;\n var registerEventOptions = F.registerEventOptions;\n var hasTouch = H.hasTouch,\n svg = H.svg,\n win = H.win;\n var seriesTypes = SeriesRegistry.seriesTypes;\n var addEvent = U.addEvent,\n arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n clamp = U.clamp,\n cleanRecursively = U.cleanRecursively,\n correctFloat = U.correctFloat,\n defined = U.defined,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n getNestedProperty = U.getNestedProperty,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n /* *\n *\n * Class\n *\n * */\n /**\n * This is the base series prototype that all other series types inherit from.\n * A new series is initialized either through the\n * [series](https://api.highcharts.com/highcharts/series)\n * option structure, or after the chart is initialized, through\n * {@link Highcharts.Chart#addSeries}.\n *\n * The object can be accessed in a number of ways. All series and point event\n * handlers give a reference to the `series` object. The chart object has a\n * {@link Highcharts.Chart#series|series} property that is a collection of all\n * the chart's series. The point objects and axis objects also have the same\n * reference.\n *\n * Another way to reference the series programmatically is by `id`. Add an id\n * in the series configuration options, and get the series object by\n * {@link Highcharts.Chart#get}.\n *\n * Configuration options for the series are given in three levels. Options for\n * all series in a chart are given in the\n * [plotOptions.series](https://api.highcharts.com/highcharts/plotOptions.series)\n * object. Then options for all series of a specific type\n * are given in the plotOptions of that type, for example `plotOptions.line`.\n * Next, options for one single series are given in the series array, or as\n * arguments to `chart.addSeries`.\n *\n * The data in the series is stored in various arrays.\n *\n * - First, `series.options.data` contains all the original config options for\n * each point whether added by options or methods like `series.addPoint`.\n *\n * - Next, `series.data` contains those values converted to points, but in case\n * the series data length exceeds the `cropThreshold`, or if the data is\n * grouped, `series.data` doesn't contain all the points. It only contains the\n * points that have been created on demand.\n *\n * - Then there's `series.points` that contains all currently visible point\n * objects. In case of cropping, the cropped-away points are not part of this\n * array. The `series.points` array starts at `series.cropStart` compared to\n * `series.data` and `series.options.data`. If however the series data is\n * grouped, these can't be correlated one to one.\n *\n * - `series.xData` and `series.processedXData` contain clean x values,\n * equivalent to `series.data` and `series.points`.\n *\n * - `series.yData` and `series.processedYData` contain clean y values,\n * equivalent to `series.data` and `series.points`.\n *\n * @class\n * @name Highcharts.Series\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.SeriesOptionsType|object} options\n * The series options.\n */\n var Series = /** @class */ (function () {\n function Series() {\n /* *\n *\n * Static Properties\n *\n * */\n this._i = void 0;\n this.chart = void 0;\n this.data = void 0;\n this.eventOptions = void 0;\n this.eventsToUnbind = void 0;\n this.index = void 0;\n this.linkedSeries = void 0;\n this.options = void 0;\n this.points = void 0;\n this.processedXData = void 0;\n this.processedYData = void 0;\n this.tooltipOptions = void 0;\n this.userOptions = void 0;\n this.xAxis = void 0;\n this.yAxis = void 0;\n this.zones = void 0;\n /** eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n Series.prototype.init = function (chart, userOptions) {\n fireEvent(this, 'init', { options: userOptions });\n var series = this,\n chartSeries = chart.series;\n // The 'eventsToUnbind' property moved from prototype into the\n // Series init to avoid reference to the same array between\n // the different series and charts. #12959, #13937\n this.eventsToUnbind = [];\n /**\n * Read only. The chart that the series belongs to.\n *\n * @name Highcharts.Series#chart\n * @type {Highcharts.Chart}\n */\n series.chart = chart;\n /**\n * Read only. The series' type, like \"line\", \"area\", \"column\" etc.\n * The type in the series options anc can be altered using\n * {@link Series#update}.\n *\n * @name Highcharts.Series#type\n * @type {string}\n */\n /**\n * Read only. The series' current options. To update, use\n * {@link Series#update}.\n *\n * @name Highcharts.Series#options\n * @type {Highcharts.SeriesOptionsType}\n */\n series.options = series.setOptions(userOptions);\n var options = series.options;\n series.linkedSeries = [];\n // bind the axes\n series.bindAxes();\n extend(series, {\n /**\n * The series name as given in the options. Defaults to\n * \"Series {n}\".\n *\n * @name Highcharts.Series#name\n * @type {string}\n */\n name: options.name,\n state: '',\n /**\n * Read only. The series' visibility state as set by {@link\n * Series#show}, {@link Series#hide}, or in the initial\n * configuration.\n *\n * @name Highcharts.Series#visible\n * @type {boolean}\n */\n visible: options.visible !== false,\n /**\n * Read only. The series' selected state as set by {@link\n * Highcharts.Series#select}.\n *\n * @name Highcharts.Series#selected\n * @type {boolean}\n */\n selected: options.selected === true // false by default\n });\n registerEventOptions(this, options);\n var events = options.events;\n if ((events && events.click) ||\n (options.point &&\n options.point.events &&\n options.point.events.click) ||\n options.allowPointSelect) {\n chart.runTrackerClick = true;\n }\n series.getColor();\n series.getSymbol();\n // Initialize the parallel data arrays\n series.parallelArrays.forEach(function (key) {\n if (!series[key + 'Data']) {\n series[key + 'Data'] = [];\n }\n });\n // Mark cartesian\n if (series.isCartesian) {\n chart.hasCartesianSeries = true;\n }\n // Get the index and register the series in the chart. The index is\n // one more than the current latest series index (#5960).\n var lastSeries;\n if (chartSeries.length) {\n lastSeries = chartSeries[chartSeries.length - 1];\n }\n series._i = pick(lastSeries && lastSeries._i, -1) + 1;\n series.opacity = series.options.opacity;\n // Insert the series and re-order all series above the insertion\n // point.\n chart.orderSeries(this.insert(chartSeries));\n // Set options for series with sorting and set data later.\n if (options.dataSorting && options.dataSorting.enabled) {\n series.setDataSortingOptions();\n }\n else if (!series.points && !series.data) {\n series.setData(options.data, false);\n }\n fireEvent(this, 'afterInit');\n };\n /**\n * Check whether the series item is itself or inherits from a certain\n * series type.\n *\n * @function Highcharts.Series#is\n * @param {string} type The type of series to check for, can be either\n * featured or custom series types. For example `column`, `pie`,\n * `ohlc` etc.\n *\n * @return {boolean}\n * True if this item is or inherits from the given type.\n */\n Series.prototype.is = function (type) {\n return seriesTypes[type] && this instanceof seriesTypes[type];\n };\n /**\n * Insert the series in a collection with other series, either the chart\n * series or yAxis series, in the correct order according to the index\n * option. Used internally when adding series.\n *\n * @private\n * @function Highcharts.Series#insert\n * @param {Array<Highcharts.Series>} collection\n * A collection of series, like `chart.series` or `xAxis.series`.\n * @return {number}\n * The index of the series in the collection.\n */\n Series.prototype.insert = function (collection) {\n var indexOption = this.options.index;\n var i;\n // Insert by index option\n if (isNumber(indexOption)) {\n i = collection.length;\n while (i--) {\n // Loop down until the interted element has higher index\n if (indexOption >=\n pick(collection[i].options.index, collection[i]._i)) {\n collection.splice(i + 1, 0, this);\n break;\n }\n }\n if (i === -1) {\n collection.unshift(this);\n }\n i = i + 1;\n // Or just push it to the end\n }\n else {\n collection.push(this);\n }\n return pick(i, collection.length - 1);\n };\n /**\n * Set the xAxis and yAxis properties of cartesian series, and register\n * the series in the `axis.series` array.\n *\n * @private\n * @function Highcharts.Series#bindAxes\n */\n Series.prototype.bindAxes = function () {\n var series = this,\n seriesOptions = series.options,\n chart = series.chart;\n var axisOptions;\n fireEvent(this, 'bindAxes', null, function () {\n // repeat for xAxis and yAxis\n (series.axisTypes || []).forEach(function (AXIS) {\n var index = 0;\n // loop through the chart's axis objects\n chart[AXIS].forEach(function (axis) {\n axisOptions = axis.options;\n // apply if the series xAxis or yAxis option mathches\n // the number of the axis, or if undefined, use the\n // first axis\n if ((seriesOptions[AXIS] === index &&\n !axisOptions.isInternal) ||\n (typeof seriesOptions[AXIS] !==\n 'undefined' &&\n seriesOptions[AXIS] === axisOptions.id) ||\n (typeof seriesOptions[AXIS] ===\n 'undefined' &&\n axisOptions.index === 0)) {\n // register this series in the axis.series lookup\n series.insert(axis.series);\n // set this series.xAxis or series.yAxis reference\n /**\n * Read only. The unique xAxis object associated\n * with the series.\n *\n * @name Highcharts.Series#xAxis\n * @type {Highcharts.Axis}\n */\n /**\n * Read only. The unique yAxis object associated\n * with the series.\n *\n * @name Highcharts.Series#yAxis\n * @type {Highcharts.Axis}\n */\n series[AXIS] = axis;\n // mark dirty for redraw\n axis.isDirty = true;\n }\n if (!axisOptions.isInternal) {\n index++;\n }\n });\n // The series needs an X and an Y axis\n if (!series[AXIS] &&\n series.optionalAxis !== AXIS) {\n error(18, true, chart);\n }\n });\n });\n fireEvent(this, 'afterBindAxes');\n };\n /**\n * For simple series types like line and column, the data values are\n * held in arrays like xData and yData for quick lookup to find extremes\n * and more. For multidimensional series like bubble and map, this can\n * be extended with arrays like zData and valueData by adding to the\n * `series.parallelArrays` array.\n *\n * @private\n * @function Highcharts.Series#updateParallelArrays\n */\n Series.prototype.updateParallelArrays = function (point, i) {\n var series = point.series,\n args = arguments,\n fn = isNumber(i) ?\n // Insert the value in the given position\n function (key) {\n var val = key === 'y' && series.toYData ?\n series.toYData(point) :\n point[key];\n series[key + 'Data'][i] = val;\n } :\n // Apply the method specified in i with the following\n // arguments as arguments\n function (key) {\n Array.prototype[i].apply(series[key + 'Data'], Array.prototype.slice.call(args, 2));\n };\n series.parallelArrays.forEach(fn);\n };\n /**\n * Define hasData functions for series. These return true if there\n * are data points on this series within the plot area.\n *\n * @private\n * @function Highcharts.Series#hasData\n */\n Series.prototype.hasData = function () {\n return ((this.visible &&\n typeof this.dataMax !== 'undefined' &&\n typeof this.dataMin !== 'undefined') || ( // #3703\n this.visible &&\n this.yData &&\n this.yData.length > 0) // #9758\n );\n };\n /**\n * Return an auto incremented x value based on the pointStart and\n * pointInterval options. This is only used if an x value is not given\n * for the point that calls autoIncrement.\n *\n * @private\n * @function Highcharts.Series#autoIncrement\n */\n Series.prototype.autoIncrement = function (x) {\n var options = this.options,\n pointIntervalUnit = options.pointIntervalUnit,\n relativeXValue = options.relativeXValue,\n time = this.chart.time;\n var xIncrement = this.xIncrement,\n date,\n pointInterval;\n xIncrement = pick(xIncrement, options.pointStart, 0);\n this.pointInterval = pointInterval = pick(this.pointInterval, options.pointInterval, 1);\n if (relativeXValue && isNumber(x)) {\n pointInterval *= x;\n }\n // Added code for pointInterval strings\n if (pointIntervalUnit) {\n date = new time.Date(xIncrement);\n if (pointIntervalUnit === 'day') {\n time.set('Date', date, time.get('Date', date) + pointInterval);\n }\n else if (pointIntervalUnit === 'month') {\n time.set('Month', date, time.get('Month', date) + pointInterval);\n }\n else if (pointIntervalUnit === 'year') {\n time.set('FullYear', date, time.get('FullYear', date) + pointInterval);\n }\n pointInterval = date.getTime() - xIncrement;\n }\n if (relativeXValue && isNumber(x)) {\n return xIncrement + pointInterval;\n }\n this.xIncrement = xIncrement + pointInterval;\n return xIncrement;\n };\n /**\n * Internal function to set properties for series if data sorting is\n * enabled.\n *\n * @private\n * @function Highcharts.Series#setDataSortingOptions\n */\n Series.prototype.setDataSortingOptions = function () {\n var options = this.options;\n extend(this, {\n requireSorting: false,\n sorted: false,\n enabledDataSorting: true,\n allowDG: false\n });\n // To allow unsorted data for column series.\n if (!defined(options.pointRange)) {\n options.pointRange = 1;\n }\n };\n /**\n * Set the series options by merging from the options tree. Called\n * internally on initializing and updating series. This function will\n * not redraw the series. For API usage, use {@link Series#update}.\n * @private\n * @function Highcharts.Series#setOptions\n * @param {Highcharts.SeriesOptionsType} itemOptions\n * The series options.\n * @emits Highcharts.Series#event:afterSetOptions\n */\n Series.prototype.setOptions = function (itemOptions) {\n var chart = this.chart,\n chartOptions = chart.options,\n plotOptions = chartOptions.plotOptions,\n userOptions = chart.userOptions || {},\n seriesUserOptions = merge(itemOptions),\n styledMode = chart.styledMode,\n e = {\n plotOptions: plotOptions,\n userOptions: seriesUserOptions\n };\n var zone;\n fireEvent(this, 'setOptions', e);\n // These may be modified by the event\n var typeOptions = e.plotOptions[this.type],\n userPlotOptions = (userOptions.plotOptions || {});\n // use copy to prevent undetected changes (#9762)\n /**\n * Contains series options by the user without defaults.\n * @name Highcharts.Series#userOptions\n * @type {Highcharts.SeriesOptionsType}\n */\n this.userOptions = e.userOptions;\n var options = merge(typeOptions,\n plotOptions.series, \n // #3881, chart instance plotOptions[type] should trump\n // plotOptions.series\n userOptions.plotOptions &&\n userOptions.plotOptions[this.type],\n seriesUserOptions);\n // The tooltip options are merged between global and series specific\n // options. Importance order asscendingly:\n // globals: (1)tooltip, (2)plotOptions.series,\n // (3)plotOptions[this.type]\n // init userOptions with possible later updates: 4-6 like 1-3 and\n // (7)this series options\n this.tooltipOptions = merge(defaultOptions.tooltip, // 1\n defaultOptions.plotOptions.series &&\n defaultOptions.plotOptions.series.tooltip, // 2\n defaultOptions.plotOptions[this.type].tooltip, // 3\n chartOptions.tooltip.userOptions, // 4\n plotOptions.series &&\n plotOptions.series.tooltip, // 5\n plotOptions[this.type].tooltip, // 6\n seriesUserOptions.tooltip // 7\n );\n // When shared tooltip, stickyTracking is true by default,\n // unless user says otherwise.\n this.stickyTracking = pick(seriesUserOptions.stickyTracking, userPlotOptions[this.type] &&\n userPlotOptions[this.type].stickyTracking, userPlotOptions.series && userPlotOptions.series.stickyTracking, (this.tooltipOptions.shared && !this.noSharedTooltip ?\n true :\n options.stickyTracking));\n // Delete marker object if not allowed (#1125)\n if (typeOptions.marker === null) {\n delete options.marker;\n }\n // Handle color zones\n this.zoneAxis = options.zoneAxis;\n var zones = this.zones = (options.zones || []).slice();\n if ((options.negativeColor || options.negativeFillColor) &&\n !options.zones) {\n zone = {\n value: options[this.zoneAxis + 'Threshold'] ||\n options.threshold ||\n 0,\n className: 'highcharts-negative'\n };\n if (!styledMode) {\n zone.color = options.negativeColor;\n zone.fillColor = options.negativeFillColor;\n }\n zones.push(zone);\n }\n if (zones.length) { // Push one extra zone for the rest\n if (defined(zones[zones.length - 1].value)) {\n zones.push(styledMode ? {} : {\n color: this.color,\n fillColor: this.fillColor\n });\n }\n }\n fireEvent(this, 'afterSetOptions', { options: options });\n return options;\n };\n /**\n * Return series name in \"Series {Number}\" format or the one defined by\n * a user. This method can be simply overridden as series name format\n * can vary (e.g. technical indicators).\n *\n * @function Highcharts.Series#getName\n *\n * @return {string}\n * The series name.\n */\n Series.prototype.getName = function () {\n // #4119\n return pick(this.options.name, 'Series ' + (this.index + 1));\n };\n /**\n * @private\n * @function Highcharts.Series#getCyclic\n */\n Series.prototype.getCyclic = function (prop, value, defaults) {\n var chart = this.chart, userOptions = this.userOptions, indexName = prop + 'Index', counterName = prop + 'Counter', len = defaults ? defaults.length : pick(chart.options.chart[prop + 'Count'], chart[prop + 'Count']);\n var i,\n setting;\n if (!value) {\n // Pick up either the colorIndex option, or the _colorIndex\n // after Series.update()\n setting = pick(userOptions[indexName], userOptions['_' + indexName]);\n if (defined(setting)) { // after Series.update()\n i = setting;\n }\n else {\n // #6138\n if (!chart.series.length) {\n chart[counterName] = 0;\n }\n userOptions['_' + indexName] = i =\n chart[counterName] % len;\n chart[counterName] += 1;\n }\n if (defaults) {\n value = defaults[i];\n }\n }\n // Set the colorIndex\n if (typeof i !== 'undefined') {\n this[indexName] = i;\n }\n this[prop] = value;\n };\n /**\n * Get the series' color based on either the options or pulled from\n * global options.\n *\n * @private\n * @function Highcharts.Series#getColor\n */\n Series.prototype.getColor = function () {\n if (this.chart.styledMode) {\n this.getCyclic('color');\n }\n else if (this.options.colorByPoint) {\n this.color = \"#cccccc\" /* neutralColor20 */;\n }\n else {\n this.getCyclic('color', this.options.color ||\n defaultOptions.plotOptions[this.type].color, this.chart.options.colors);\n }\n };\n /**\n * Get all points' instances created for this series.\n *\n * @private\n * @function Highcharts.Series#getPointsCollection\n */\n Series.prototype.getPointsCollection = function () {\n return (this.hasGroupedData ? this.points : this.data) || [];\n };\n /**\n * Get the series' symbol based on either the options or pulled from\n * global options.\n *\n * @private\n * @function Highcharts.Series#getSymbol\n */\n Series.prototype.getSymbol = function () {\n var seriesMarkerOption = this.options.marker;\n this.getCyclic('symbol', seriesMarkerOption.symbol, this.chart.options.symbols);\n };\n /**\n * Finds the index of an existing point that matches the given point\n * options.\n *\n * @private\n * @function Highcharts.Series#findPointIndex\n * @param {Highcharts.PointOptionsObject} optionsObject\n * The options of the point.\n * @param {number} fromIndex\n * The index to start searching from, used for optimizing series with\n * required sorting.\n * @return {number|undefined}\n * Returns the index of a matching point, or undefined if no match is found.\n */\n Series.prototype.findPointIndex = function (optionsObject, fromIndex) {\n var id = optionsObject.id,\n x = optionsObject.x,\n oldData = this.points,\n dataSorting = this.options.dataSorting;\n var matchingPoint,\n matchedById,\n pointIndex;\n if (id) {\n var item = this.chart.get(id);\n if (item instanceof Point) {\n matchingPoint = item;\n }\n }\n else if (this.linkedParent ||\n this.enabledDataSorting ||\n this.options.relativeXValue) {\n var matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.index === optionsObject.index; };\n if (dataSorting && dataSorting.matchByName) {\n matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.name === optionsObject.name; };\n }\n else if (this.options.relativeXValue) {\n matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.options.x === optionsObject.x; };\n }\n matchingPoint = find(oldData, matcher);\n // Add unmatched point as a new point\n if (!matchingPoint) {\n return void 0;\n }\n }\n if (matchingPoint) {\n pointIndex = matchingPoint && matchingPoint.index;\n if (typeof pointIndex !== 'undefined') {\n matchedById = true;\n }\n }\n // Search for the same X in the existing data set\n if (typeof pointIndex === 'undefined' && isNumber(x)) {\n pointIndex = this.xData.indexOf(x, fromIndex);\n }\n // Reduce pointIndex if data is cropped\n if (pointIndex !== -1 &&\n typeof pointIndex !== 'undefined' &&\n this.cropped) {\n pointIndex = (pointIndex >= this.cropStart) ?\n pointIndex - this.cropStart : pointIndex;\n }\n if (!matchedById &&\n isNumber(pointIndex) &&\n oldData[pointIndex] && oldData[pointIndex].touched) {\n pointIndex = void 0;\n }\n return pointIndex;\n };\n /**\n * Internal function called from setData. If the point count is the same\n * as is was, or if there are overlapping X values, just run\n * Point.update which is cheaper, allows animation, and keeps references\n * to points. This also allows adding or removing points if the X-es\n * don't match.\n *\n * @private\n * @function Highcharts.Series#updateData\n */\n Series.prototype.updateData = function (data, animation) {\n var options = this.options,\n dataSorting = options.dataSorting,\n oldData = this.points,\n pointsToAdd = [],\n requireSorting = this.requireSorting,\n equalLength = data.length === oldData.length;\n var hasUpdatedByKey,\n i,\n point,\n lastIndex,\n succeeded = true;\n this.xIncrement = null;\n // Iterate the new data\n data.forEach(function (pointOptions, i) {\n var optionsObject = (defined(pointOptions) &&\n this.pointClass.prototype.optionsToObject.call({ series: this },\n pointOptions)) || {};\n var pointIndex;\n // Get the x of the new data point\n var x = optionsObject.x,\n id = optionsObject.id;\n if (id || isNumber(x)) {\n pointIndex = this.findPointIndex(optionsObject, lastIndex);\n // Matching X not found\n // or used already due to ununique x values (#8995),\n // add point (but later)\n if (pointIndex === -1 ||\n typeof pointIndex === 'undefined') {\n pointsToAdd.push(pointOptions);\n // Matching X found, update\n }\n else if (oldData[pointIndex] &&\n pointOptions !== options.data[pointIndex]) {\n oldData[pointIndex].update(pointOptions, false, null, false);\n // Mark it touched, below we will remove all points that\n // are not touched.\n oldData[pointIndex].touched = true;\n // Speed optimize by only searching after last known\n // index. Performs ~20% bettor on large data sets.\n if (requireSorting) {\n lastIndex = pointIndex + 1;\n }\n // Point exists, no changes, don't remove it\n }\n else if (oldData[pointIndex]) {\n oldData[pointIndex].touched = true;\n }\n // If the length is equal and some of the nodes had a\n // match in the same position, we don't want to remove\n // non-matches.\n if (!equalLength ||\n i !== pointIndex ||\n (dataSorting && dataSorting.enabled) ||\n this.hasDerivedData) {\n hasUpdatedByKey = true;\n }\n }\n else {\n // Gather all points that are not matched\n pointsToAdd.push(pointOptions);\n }\n }, this);\n // Remove points that don't exist in the updated data set\n if (hasUpdatedByKey) {\n i = oldData.length;\n while (i--) {\n point = oldData[i];\n if (point && !point.touched && point.remove) {\n point.remove(false, animation);\n }\n }\n // If we did not find keys (ids or x-values), and the length is the\n // same, update one-to-one\n }\n else if (equalLength && (!dataSorting || !dataSorting.enabled)) {\n data.forEach(function (point, i) {\n // .update doesn't exist on a linked, hidden series (#3709)\n // (#10187)\n if (point !== oldData[i].y && oldData[i].update) {\n oldData[i].update(point, false, null, false);\n }\n });\n // Don't add new points since those configs are used above\n pointsToAdd.length = 0;\n // Did not succeed in updating data\n }\n else {\n succeeded = false;\n }\n oldData.forEach(function (point) {\n if (point) {\n point.touched = false;\n }\n });\n if (!succeeded) {\n return false;\n }\n // Add new points\n pointsToAdd.forEach(function (point) {\n this.addPoint(point, false, null, null, false);\n }, this);\n if (this.xIncrement === null &&\n this.xData &&\n this.xData.length) {\n this.xIncrement = arrayMax(this.xData);\n this.autoIncrement();\n }\n return true;\n };\n /**\n * Apply a new set of data to the series and optionally redraw it. The\n * new data array is passed by reference (except in case of\n * `updatePoints`), and may later be mutated when updating the chart\n * data.\n *\n * Note the difference in behaviour when setting the same amount of\n * points, or a different amount of points, as handled by the\n * `updatePoints` parameter.\n *\n * @sample highcharts/members/series-setdata/\n * Set new data from a button\n * @sample highcharts/members/series-setdata-pie/\n * Set data in a pie\n * @sample stock/members/series-setdata/\n * Set new data in Highcharts Stock\n * @sample maps/members/series-setdata/\n * Set new data in Highmaps\n *\n * @function Highcharts.Series#setData\n *\n * @param {Array<Highcharts.PointOptionsType>} data\n * Takes an array of data in the same format as described under\n * `series.{type}.data` for the given series type, for example a\n * line series would take data in the form described under\n * [series.line.data](https://api.highcharts.com/highcharts/series.line.data).\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If\n * doing more operations on the chart, it is a good idea to set\n * redraw to false and call {@link Chart#redraw} after.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * When the updated data is the same length as the existing data,\n * points will be updated by default, and animation visualizes\n * how the points are changed. Set false to disable animation, or\n * a configuration object to set duration or easing.\n *\n * @param {boolean} [updatePoints=true]\n * When this is true, points will be updated instead of replaced\n * whenever possible. This occurs a) when the updated data is the\n * same length as the existing data, b) when points are matched\n * by their id's, or c) when points can be matched by X values.\n * This allows updating with animation and performs better. In\n * this case, the original array is not passed by reference. Set\n * `false` to prevent.\n */\n Series.prototype.setData = function (data, redraw, animation, updatePoints) {\n var series = this,\n oldData = series.points,\n oldDataLength = (oldData && oldData.length) || 0,\n options = series.options,\n chart = series.chart,\n dataSorting = options.dataSorting,\n xAxis = series.xAxis,\n turboThreshold = options.turboThreshold,\n xData = this.xData,\n yData = this.yData,\n pointArrayMap = series.pointArrayMap,\n valueCount = pointArrayMap && pointArrayMap.length,\n keys = options.keys;\n var i,\n pt,\n updatedData,\n indexOfX = 0,\n indexOfY = 1,\n firstPoint = null;\n data = data || [];\n var dataLength = data.length;\n redraw = pick(redraw, true);\n if (dataSorting && dataSorting.enabled) {\n data = this.sortData(data);\n }\n // First try to run Point.update which is cheaper, allows animation,\n // and keeps references to points.\n if (updatePoints !== false &&\n dataLength &&\n oldDataLength &&\n !series.cropped &&\n !series.hasGroupedData &&\n series.visible &&\n // Soft updating has no benefit in boost, and causes JS error\n // (#8355)\n !series.isSeriesBoosting) {\n updatedData = this.updateData(data, animation);\n }\n if (!updatedData) {\n // Reset properties\n series.xIncrement = null;\n series.colorCounter = 0; // for series with colorByPoint (#1547)\n // Update parallel arrays\n this.parallelArrays.forEach(function (key) {\n series[key + 'Data'].length = 0;\n });\n // In turbo mode, only one- or twodimensional arrays of numbers\n // are allowed. The first value is tested, and we assume that\n // all the rest are defined the same way. Although the 'for'\n // loops are similar, they are repeated inside each if-else\n // conditional for max performance.\n if (turboThreshold && dataLength > turboThreshold) {\n firstPoint = series.getFirstValidPoint(data);\n if (isNumber(firstPoint)) { // assume all points are numbers\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i];\n }\n // Assume all points are arrays when first point is\n }\n else if (isArray(firstPoint)) {\n if (valueCount) { // [x, low, high] or [x, o, h, l, c]\n if (firstPoint.length === valueCount) {\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i];\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n pt = data[i];\n xData[i] = pt[0];\n yData[i] =\n pt.slice(1, valueCount + 1);\n }\n }\n }\n else { // [x, y]\n if (keys) {\n indexOfX = keys.indexOf('x');\n indexOfY = keys.indexOf('y');\n indexOfX = indexOfX >= 0 ? indexOfX : 0;\n indexOfY = indexOfY >= 0 ? indexOfY : 1;\n }\n if (firstPoint.length === 1) {\n indexOfY = 0;\n }\n if (indexOfX === indexOfY) {\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i][indexOfY];\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n pt = data[i];\n xData[i] = pt[indexOfX];\n yData[i] = pt[indexOfY];\n }\n }\n }\n }\n else {\n // Highcharts expects configs to be numbers or arrays in\n // turbo mode\n error(12, false, chart);\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n // stray commas in oldIE:\n if (typeof data[i] !== 'undefined') {\n pt = { series: series };\n series.pointClass.prototype.applyOptions.apply(pt, [data[i]]);\n series.updateParallelArrays(pt, i);\n }\n }\n }\n // Forgetting to cast strings to numbers is a common caveat when\n // handling CSV or JSON\n if (yData && isString(yData[0])) {\n error(14, true, chart);\n }\n series.data = [];\n series.options.data = series.userOptions.data = data;\n // destroy old points\n i = oldDataLength;\n while (i--) {\n if (oldData[i] && oldData[i].destroy) {\n oldData[i].destroy();\n }\n }\n // reset minRange (#878)\n if (xAxis) {\n xAxis.minRange = xAxis.userMinRange;\n }\n // redraw\n series.isDirty = chart.isDirtyBox = true;\n series.isDirtyData = !!oldData;\n animation = false;\n }\n // Typically for pie series, points need to be processed and\n // generated prior to rendering the legend\n if (options.legendType === 'point') {\n this.processData();\n this.generatePoints();\n }\n if (redraw) {\n chart.redraw(animation);\n }\n };\n /**\n * Internal function to sort series data\n *\n * @private\n * @function Highcharts.Series#sortData\n * @param {Array<Highcharts.PointOptionsType>} data\n * Force data grouping.\n */\n Series.prototype.sortData = function (data) {\n var series = this,\n options = series.options,\n dataSorting = options.dataSorting,\n sortKey = dataSorting.sortKey || 'y',\n getPointOptionsObject = function (series,\n pointOptions) {\n return (defined(pointOptions) &&\n series.pointClass.prototype.optionsToObject.call({\n series: series\n },\n pointOptions)) || {};\n };\n data.forEach(function (pointOptions, i) {\n data[i] = getPointOptionsObject(series, pointOptions);\n data[i].index = i;\n }, this);\n // Sorting\n var sortedData = data.concat().sort(function (a,\n b) {\n var aValue = getNestedProperty(sortKey,\n a);\n var bValue = getNestedProperty(sortKey,\n b);\n return bValue < aValue ? -1 : bValue > aValue ? 1 : 0;\n });\n // Set x value depending on the position in the array\n sortedData.forEach(function (point, i) {\n point.x = i;\n }, this);\n // Set the same x for linked series points if they don't have their\n // own sorting\n if (series.linkedSeries) {\n series.linkedSeries.forEach(function (linkedSeries) {\n var options = linkedSeries.options,\n seriesData = options.data;\n if ((!options.dataSorting ||\n !options.dataSorting.enabled) &&\n seriesData) {\n seriesData.forEach(function (pointOptions, i) {\n seriesData[i] = getPointOptionsObject(linkedSeries, pointOptions);\n if (data[i]) {\n seriesData[i].x = data[i].x;\n seriesData[i].index = i;\n }\n });\n linkedSeries.setData(seriesData, false);\n }\n });\n }\n return data;\n };\n /**\n * Internal function to process the data by cropping away unused data\n * points if the series is longer than the crop threshold. This saves\n * computing time for large series.\n *\n * @private\n * @function Highcharts.Series#getProcessedData\n * @param {boolean} [forceExtremesFromAll]\n * Force getting extremes of a total series data range.\n */\n Series.prototype.getProcessedData = function (forceExtremesFromAll) {\n var series = this,\n xAxis = series.xAxis,\n options = series.options,\n cropThreshold = options.cropThreshold,\n getExtremesFromAll = forceExtremesFromAll ||\n series.getExtremesFromAll ||\n options.getExtremesFromAll, // #4599\n isCartesian = series.isCartesian,\n val2lin = xAxis && xAxis.val2lin,\n isLog = !!(xAxis && xAxis.logarithmic);\n var croppedData,\n cropped,\n cropStart = 0,\n distance,\n closestPointRange,\n i, // loop variable\n xExtremes,\n min,\n max, \n // copied during slice operation:\n processedXData = series.xData,\n processedYData = series.yData,\n throwOnUnsorted = series.requireSorting,\n updatingNames = false;\n var dataLength = processedXData.length;\n if (xAxis) {\n // corrected for log axis (#3053)\n xExtremes = xAxis.getExtremes();\n min = xExtremes.min;\n max = xExtremes.max;\n updatingNames = xAxis.categories && !xAxis.names.length;\n }\n // optionally filter out points outside the plot area\n if (isCartesian &&\n series.sorted &&\n !getExtremesFromAll &&\n (!cropThreshold ||\n dataLength > cropThreshold ||\n series.forceCrop)) {\n // it's outside current extremes\n if (processedXData[dataLength - 1] < min ||\n processedXData[0] > max) {\n processedXData = [];\n processedYData = [];\n // only crop if it's actually spilling out\n }\n else if (series.yData && (processedXData[0] < min ||\n processedXData[dataLength - 1] > max)) {\n croppedData = this.cropData(series.xData, series.yData, min, max);\n processedXData = croppedData.xData;\n processedYData = croppedData.yData;\n cropStart = croppedData.start;\n cropped = true;\n }\n }\n // Find the closest distance between processed points\n i = processedXData.length || 1;\n while (--i) {\n distance = (isLog ?\n (val2lin(processedXData[i]) -\n val2lin(processedXData[i - 1])) :\n (processedXData[i] -\n processedXData[i - 1]));\n if (distance > 0 &&\n (typeof closestPointRange === 'undefined' ||\n distance < closestPointRange)) {\n closestPointRange = distance;\n // Unsorted data is not supported by the line tooltip, as well\n // as data grouping and navigation in Stock charts (#725) and\n // width calculation of columns (#1900).\n // Avoid warning during the premature processing pass in\n // updateNames (#16104).\n }\n else if (distance < 0 && throwOnUnsorted && !updatingNames) {\n error(15, false, series.chart);\n throwOnUnsorted = false; // Only once\n }\n }\n return {\n xData: processedXData,\n yData: processedYData,\n cropped: cropped,\n cropStart: cropStart,\n closestPointRange: closestPointRange\n };\n };\n /**\n * Internal function to apply processed data.\n * In Highcharts Stock, this function is extended to provide data grouping.\n *\n * @private\n * @function Highcharts.Series#processData\n * @param {boolean} [force]\n * Force data grouping.\n */\n Series.prototype.processData = function (force) {\n var series = this,\n xAxis = series.xAxis;\n // If the series data or axes haven't changed, don't go through\n // this. Return false to pass the message on to override methods\n // like in data grouping.\n if (series.isCartesian &&\n !series.isDirty &&\n !xAxis.isDirty &&\n !series.yAxis.isDirty &&\n !force) {\n return false;\n }\n var processedData = series.getProcessedData();\n // Record the properties\n series.cropped = processedData.cropped; // undefined or true\n series.cropStart = processedData.cropStart;\n series.processedXData = processedData.xData;\n series.processedYData = processedData.yData;\n series.closestPointRange = (series.basePointRange = processedData.closestPointRange);\n fireEvent(series, 'afterProcessData');\n };\n /**\n * Iterate over xData and crop values between min and max. Returns\n * object containing crop start/end cropped xData with corresponding\n * part of yData, dataMin and dataMax within the cropped range.\n *\n * @private\n * @function Highcharts.Series#cropData\n */\n Series.prototype.cropData = function (xData, yData, min, max, cropShoulder) {\n var dataLength = xData.length;\n var i,\n j,\n cropStart = 0,\n cropEnd = dataLength;\n // line-type series need one point outside\n cropShoulder = pick(cropShoulder, this.cropShoulder);\n // iterate up to find slice start\n for (i = 0; i < dataLength; i++) {\n if (xData[i] >= min) {\n cropStart = Math.max(0, i - cropShoulder);\n break;\n }\n }\n // proceed to find slice end\n for (j = i; j < dataLength; j++) {\n if (xData[j] > max) {\n cropEnd = j + cropShoulder;\n break;\n }\n }\n return {\n xData: xData.slice(cropStart, cropEnd),\n yData: yData.slice(cropStart, cropEnd),\n start: cropStart,\n end: cropEnd\n };\n };\n /**\n * Generate the data point after the data has been processed by cropping\n * away unused points and optionally grouped in Highcharts Stock.\n *\n * @private\n * @function Highcharts.Series#generatePoints\n */\n Series.prototype.generatePoints = function () {\n var series = this,\n options = series.options,\n dataOptions = options.data,\n processedXData = series.processedXData,\n processedYData = series.processedYData,\n PointClass = series.pointClass,\n processedDataLength = processedXData.length,\n cropStart = series.cropStart || 0,\n hasGroupedData = series.hasGroupedData,\n keys = options.keys,\n points = [],\n groupCropStartIndex = (options.dataGrouping &&\n options.dataGrouping.groupAll ?\n cropStart :\n 0);\n var dataLength,\n cursor,\n point,\n i,\n data = series.data;\n if (!data && !hasGroupedData) {\n var arr = [];\n arr.length = dataOptions.length;\n data = series.data = arr;\n }\n if (keys && hasGroupedData) {\n // grouped data has already applied keys (#6590)\n series.options.keys = false;\n }\n for (i = 0; i < processedDataLength; i++) {\n cursor = cropStart + i;\n if (!hasGroupedData) {\n point = data[cursor];\n // #970:\n if (!point &&\n typeof dataOptions[cursor] !== 'undefined') {\n data[cursor] = point = (new PointClass()).init(series, dataOptions[cursor], processedXData[i]);\n }\n }\n else {\n // splat the y data in case of ohlc data array\n point = (new PointClass()).init(series, [processedXData[i]].concat(splat(processedYData[i])));\n /**\n * Highcharts Stock only. If a point object is created by data\n * grouping, it doesn't reflect actual points in the raw\n * data. In this case, the `dataGroup` property holds\n * information that points back to the raw data.\n *\n * - `dataGroup.start` is the index of the first raw data\n * point in the group.\n *\n * - `dataGroup.length` is the amount of points in the\n * group.\n *\n * @product highstock\n *\n * @name Highcharts.Point#dataGroup\n * @type {Highcharts.DataGroupingInfoObject|undefined}\n *\n * @sample stock/members/point-datagroup\n * Click to inspect raw data points\n */\n point.dataGroup = series.groupMap[groupCropStartIndex + i];\n if (point.dataGroup.options) {\n point.options = point.dataGroup.options;\n extend(point, point.dataGroup.options);\n // Collision of props and options (#9770)\n delete point.dataLabels;\n }\n }\n if (point) { // #6279\n /**\n * Contains the point's index in the `Series.points` array.\n *\n * @name Highcharts.Point#index\n * @type {number}\n * @readonly\n */\n // For faster access in Point.update\n point.index = hasGroupedData ?\n (groupCropStartIndex + i) : cursor;\n points[i] = point;\n }\n }\n // restore keys options (#6590)\n series.options.keys = keys;\n // Hide cropped-away points - this only runs when the number of\n // points is above cropThreshold, or when swithching view from\n // non-grouped data to grouped data (#637)\n if (data &&\n (processedDataLength !== (dataLength = data.length) ||\n hasGroupedData)) {\n for (i = 0; i < dataLength; i++) {\n // when has grouped data, clear all points\n if (i === cropStart && !hasGroupedData) {\n i += processedDataLength;\n }\n if (data[i]) {\n data[i].destroyElements();\n data[i].plotX = void 0; // #1003\n }\n }\n }\n /**\n * Read only. An array containing those values converted to points.\n * In case the series data length exceeds the `cropThreshold`, or if\n * the data is grouped, `series.data` doesn't contain all the\n * points. Also, in case a series is hidden, the `data` array may be\n * empty. To access raw values, `series.options.data` will always be\n * up to date. `Series.data` only contains the points that have been\n * created on demand. To modify the data, use\n * {@link Highcharts.Series#setData} or\n * {@link Highcharts.Point#update}.\n *\n * @see Series.points\n *\n * @name Highcharts.Series#data\n * @type {Array<Highcharts.Point>}\n */\n series.data = data;\n /**\n * An array containing all currently visible point objects. In case\n * of cropping, the cropped-away points are not part of this array.\n * The `series.points` array starts at `series.cropStart` compared\n * to `series.data` and `series.options.data`. If however the series\n * data is grouped, these can't be correlated one to one. To modify\n * the data, use {@link Highcharts.Series#setData} or\n * {@link Highcharts.Point#update}.\n *\n * @name Highcharts.Series#points\n * @type {Array<Highcharts.Point>}\n */\n series.points = points;\n fireEvent(this, 'afterGeneratePoints');\n };\n /**\n * Get current X extremes for the visible data.\n *\n * @private\n * @function Highcharts.Series#getXExtremes\n * @param {Array<number>} xData\n * The data to inspect. Defaults to the current data within the visible\n * range.\n */\n Series.prototype.getXExtremes = function (xData) {\n return {\n min: arrayMin(xData),\n max: arrayMax(xData)\n };\n };\n /**\n * Calculate Y extremes for the visible data. The result is returned\n * as an object with `dataMin` and `dataMax` properties.\n *\n * @private\n * @function Highcharts.Series#getExtremes\n * @param {Array<number>} [yData]\n * The data to inspect. Defaults to the current data within the visible\n * range.\n * @param {boolean} [forceExtremesFromAll]\n * Force getting extremes of a total series data range.\n */\n Series.prototype.getExtremes = function (yData, forceExtremesFromAll) {\n var xAxis = this.xAxis,\n yAxis = this.yAxis,\n xData = this.processedXData || this.xData,\n activeYData = [], \n // Handle X outside the viewed area. This does not work with\n // non-sorted data like scatter (#7639).\n shoulder = this.requireSorting ? this.cropShoulder : 0,\n positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false;\n // #2117, need to compensate for log X axis\n var xExtremes,\n validValue,\n withinRange,\n x,\n y,\n i,\n j,\n xMin = 0,\n xMax = 0,\n activeCounter = 0;\n yData = yData || this.stackedYData || this.processedYData || [];\n var yDataLength = yData.length;\n if (xAxis) {\n xExtremes = xAxis.getExtremes();\n xMin = xExtremes.min;\n xMax = xExtremes.max;\n }\n for (i = 0; i < yDataLength; i++) {\n x = xData[i];\n y = yData[i];\n // For points within the visible range, including the first\n // point outside the visible range (#7061), consider y extremes.\n validValue = ((isNumber(y) || isArray(y)) &&\n ((y.length || y > 0) || !positiveValuesOnly));\n withinRange = (forceExtremesFromAll ||\n this.getExtremesFromAll ||\n this.options.getExtremesFromAll ||\n this.cropped ||\n !xAxis || // for colorAxis support\n ((xData[i + shoulder] || x) >= xMin &&\n (xData[i - shoulder] || x) <= xMax));\n if (validValue && withinRange) {\n j = y.length;\n if (j) { // array, like ohlc or range data\n while (j--) {\n if (isNumber(y[j])) { // #7380, #11513\n activeYData[activeCounter++] = y[j];\n }\n }\n }\n else {\n activeYData[activeCounter++] = y;\n }\n }\n }\n var dataExtremes = {\n activeYData: activeYData,\n dataMin: arrayMin(activeYData),\n dataMax: arrayMax(activeYData)\n };\n fireEvent(this, 'afterGetExtremes', { dataExtremes: dataExtremes });\n return dataExtremes;\n };\n /**\n * Set the current data extremes as `dataMin` and `dataMax` on the\n * Series item. Use this only when the series properties should be\n * updated.\n *\n * @private\n * @function Highcharts.Series#applyExtremes\n */\n Series.prototype.applyExtremes = function () {\n var dataExtremes = this.getExtremes();\n /**\n * Contains the minimum value of the series' data point. Some series\n * types like `networkgraph` do not support this property as they\n * lack a `y`-value.\n * @name Highcharts.Series#dataMin\n * @type {number|undefined}\n * @readonly\n */\n this.dataMin = dataExtremes.dataMin;\n /**\n * Contains the maximum value of the series' data point. Some series\n * types like `networkgraph` do not support this property as they\n * lack a `y`-value.\n * @name Highcharts.Series#dataMax\n * @type {number|undefined}\n * @readonly\n */\n this.dataMax = dataExtremes.dataMax;\n return dataExtremes;\n };\n /**\n * Find and return the first non null point in the data\n *\n * @private\n * @function Highcharts.Series.getFirstValidPoint\n * @param {Array<Highcharts.PointOptionsType>} data\n * Array of options for points\n */\n Series.prototype.getFirstValidPoint = function (data) {\n var dataLength = data.length;\n var i = 0,\n firstPoint = null;\n while (firstPoint === null && i < dataLength) {\n firstPoint = data[i];\n i++;\n }\n return firstPoint;\n };\n /**\n * Translate data points from raw data values to chart specific\n * positioning data needed later in the `drawPoints` and `drawGraph`\n * functions. This function can be overridden in plugins and custom\n * series type implementations.\n *\n * @function Highcharts.Series#translate\n *\n * @emits Highcharts.Series#events:translate\n */\n Series.prototype.translate = function () {\n if (!this.processedXData) { // hidden series\n this.processData();\n }\n this.generatePoints();\n var series = this,\n options = series.options,\n stacking = options.stacking,\n xAxis = series.xAxis,\n categories = xAxis.categories,\n enabledDataSorting = series.enabledDataSorting,\n yAxis = series.yAxis,\n points = series.points,\n dataLength = points.length,\n pointPlacement = series.pointPlacementToXValue(), // #7860\n dynamicallyPlaced = Boolean(pointPlacement),\n threshold = options.threshold,\n stackThreshold = options.startFromThreshold ? threshold : 0,\n zoneAxis = this.zoneAxis || 'y';\n var i,\n plotX,\n lastPlotX,\n stackIndicator,\n closestPointRangePx = Number.MAX_VALUE;\n /**\n * Plotted coordinates need to be within a limited range. Drawing\n * too far outside the viewport causes various rendering issues\n * (#3201, #3923, #7555).\n * @private\n */\n function limitedRange(val) {\n return clamp(val, -1e5, 1e5);\n }\n // Translate each point\n for (i = 0; i < dataLength; i++) {\n var point = points[i],\n xValue = point.x;\n var pointStack = void 0,\n stackValues = void 0,\n yValue = point.y,\n yBottom = point.low;\n var stack = stacking && yAxis.stacking && yAxis.stacking.stacks[(series.negStacks &&\n yValue <\n (stackThreshold ? 0 : threshold) ?\n '-' :\n '') + series.stackKey];\n if (yAxis.positiveValuesOnly &&\n !yAxis.validatePositiveValue(yValue) ||\n xAxis.positiveValuesOnly &&\n !xAxis.validatePositiveValue(xValue)) {\n point.isNull = true;\n }\n // Get the plotX translation\n point.plotX = plotX = correctFloat(// #5236\n limitedRange(xAxis.translate(// #3923\n xValue, 0, 0, 0, 1, pointPlacement, this.type === 'flags')) // #3923\n );\n // Calculate the bottom y value for stacked series\n if (stacking &&\n series.visible &&\n stack &&\n stack[xValue]) {\n stackIndicator = series.getStackIndicator(stackIndicator, xValue, series.index);\n if (!point.isNull) {\n pointStack = stack[xValue];\n stackValues =\n pointStack.points[stackIndicator.key];\n }\n }\n if (isArray(stackValues)) {\n yBottom = stackValues[0];\n yValue = stackValues[1];\n if (yBottom === stackThreshold &&\n stackIndicator.key ===\n stack[xValue].base) {\n yBottom = pick((isNumber(threshold) && threshold), yAxis.min);\n }\n // #1200, #1232\n if (yAxis.positiveValuesOnly && yBottom <= 0) {\n yBottom = null;\n }\n point.total = point.stackTotal = pointStack.total;\n point.percentage =\n pointStack.total &&\n (point.y / pointStack.total * 100);\n point.stackY = yValue;\n // Place the stack label\n // in case of variwide series (where widths of points are\n // different in most cases), stack labels are positioned\n // wrongly, so the call of the setOffset is omited here and\n // labels are correctly positioned later, at the end of the\n // variwide's translate function (#10962)\n if (!series.irregularWidths) {\n pointStack.setOffset(series.pointXOffset || 0, series.barW || 0);\n }\n }\n // Set translated yBottom or remove it\n point.yBottom = defined(yBottom) ?\n limitedRange(yAxis.translate(yBottom, 0, 1, 0, 1)) :\n null;\n // General hook, used for Highcharts Stock compare and cumulative\n if (series.dataModify) {\n yValue = series.dataModify.modifyValue(yValue, i);\n }\n // Set the the plotY value, reset it for redraws\n // #3201\n point.plotY = void 0;\n if (isNumber(yValue)) {\n var translated = yAxis.translate(yValue,\n false,\n true,\n false,\n true);\n if (typeof translated !== 'undefined') {\n point.plotY = limitedRange(translated);\n }\n }\n point.isInside = this.isPointInside(point);\n // Set client related positions for mouse tracking\n point.clientX = dynamicallyPlaced ?\n correctFloat(xAxis.translate(xValue, 0, 0, 0, 1, pointPlacement)) :\n plotX; // #1514, #5383, #5518\n // Negative points. For bubble charts, this means negative z\n // values (#9728)\n point.negative = point[zoneAxis] < (options[zoneAxis + 'Threshold'] ||\n threshold ||\n 0);\n // some API data\n point.category = (categories &&\n typeof categories[point.x] !== 'undefined' ?\n categories[point.x] :\n point.x);\n // Determine auto enabling of markers (#3635, #5099)\n if (!point.isNull && point.visible !== false) {\n if (typeof lastPlotX !== 'undefined') {\n closestPointRangePx = Math.min(closestPointRangePx, Math.abs(plotX - lastPlotX));\n }\n lastPlotX = plotX;\n }\n // Find point zone\n point.zone = this.zones.length ? point.getZone() : void 0;\n // Animate new points with data sorting\n if (!point.graphic && series.group && enabledDataSorting) {\n point.isNew = true;\n }\n }\n series.closestPointRangePx = closestPointRangePx;\n fireEvent(this, 'afterTranslate');\n };\n /**\n * Return the series points with null points filtered out.\n *\n * @function Highcharts.Series#getValidPoints\n *\n * @param {Array<Highcharts.Point>} [points]\n * The points to inspect, defaults to {@link Series.points}.\n *\n * @param {boolean} [insideOnly=false]\n * Whether to inspect only the points that are inside the visible view.\n *\n * @param {boolean} [allowNull=false]\n * Whether to allow null points to pass as valid points.\n *\n * @return {Array<Highcharts.Point>}\n * The valid points.\n */\n Series.prototype.getValidPoints = function (points, insideOnly, allowNull) {\n var chart = this.chart;\n // #3916, #5029, #5085\n return (points || this.points || []).filter(function (point) {\n if (insideOnly && !chart.isInsidePlot(point.plotX, point.plotY, { inverted: chart.inverted })) {\n return false;\n }\n return point.visible !== false &&\n (allowNull || !point.isNull);\n });\n };\n /**\n * Get the clipping for the series. Could be called for a series to\n * initiate animating the clip or to set the final clip (only width\n * and x).\n *\n * @private\n * @function Highcharts.Series#getClip\n */\n Series.prototype.getClipBox = function () {\n var _a = this,\n chart = _a.chart,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis;\n // If no axes on the series, use global clipBox\n var seriesBox = merge(chart.clipBox);\n // Otherwise, use clipBox.width which is corrected for plotBorderWidth\n // and clipOffset\n if (xAxis && xAxis.len !== chart.plotSizeX) {\n seriesBox.width = xAxis.len;\n }\n if (yAxis && yAxis.len !== chart.plotSizeY) {\n seriesBox.height = yAxis.len;\n }\n return seriesBox;\n };\n /**\n * Get the shared clip key, creating it if it doesn't exist.\n *\n * @private\n * @function Highcharts.Series#getSharedClipKey\n */\n Series.prototype.getSharedClipKey = function () {\n this.sharedClipKey = (this.options.xAxis || 0) + ',' +\n (this.options.yAxis || 0);\n return this.sharedClipKey;\n };\n /**\n * Set the clipping for the series. For animated series the clip is later\n * modified.\n *\n * @private\n * @function Highcharts.Series#setClip\n */\n Series.prototype.setClip = function () {\n var _a = this,\n chart = _a.chart,\n group = _a.group,\n markerGroup = _a.markerGroup,\n sharedClips = chart.sharedClips,\n renderer = chart.renderer,\n clipBox = this.getClipBox(),\n sharedClipKey = this.getSharedClipKey(); // #4526\n var clipRect = sharedClips[sharedClipKey];\n // If a clipping rectangle for the same set of axes does not exist,\n // create it\n if (!clipRect) {\n sharedClips[sharedClipKey] = clipRect = renderer.clipRect(clipBox);\n // When setting chart size, or when the series is rendered again before\n // starting animating, in compliance to a responsive rule\n }\n else {\n clipRect.animate(clipBox);\n }\n if (group) {\n // When clip is false, reset to no clip after animation\n group.clip(this.options.clip === false ? void 0 : clipRect);\n }\n // Unclip temporary animation clip\n if (markerGroup) {\n markerGroup.clip();\n }\n };\n /**\n * Animate in the series. Called internally twice. First with the `init`\n * parameter set to true, which sets up the initial state of the\n * animation. Then when ready, it is called with the `init` parameter\n * undefined, in order to perform the actual animation.\n *\n * @function Highcharts.Series#animate\n *\n * @param {boolean} [init]\n * Initialize the animation.\n */\n Series.prototype.animate = function (init) {\n var _a = this, chart = _a.chart, group = _a.group, markerGroup = _a.markerGroup, inverted = chart.inverted, animation = animObject(this.options.animation), \n // The key for temporary animation clips\n animationClipKey = [\n this.getSharedClipKey(),\n animation.duration,\n animation.easing,\n animation.defer\n ].join(',');\n var animationClipRect = chart.sharedClips[animationClipKey],\n markerAnimationClipRect = chart.sharedClips[animationClipKey + 'm'];\n // Initialize the animation. Set up the clipping rectangle.\n if (init && group) {\n var clipBox = this.getClipBox();\n // Create temporary animation clips\n if (!animationClipRect) {\n clipBox.width = 0;\n if (inverted) {\n clipBox.x = chart.plotHeight;\n }\n animationClipRect = chart.renderer.clipRect(clipBox);\n chart.sharedClips[animationClipKey] = animationClipRect;\n var markerClipBox = {\n // Include the width of the first marker\n x: inverted ? (chart.plotSizeX || 0) + 99 : -99,\n y: inverted ? -chart.plotLeft : -chart.plotTop,\n width: 99,\n height: inverted ? chart.chartWidth : chart.chartHeight\n };\n markerAnimationClipRect = chart.renderer.clipRect(markerClipBox);\n chart.sharedClips[animationClipKey + 'm'] = markerAnimationClipRect;\n }\n else {\n // When height changes during animation, typically due to\n // responsive settings\n animationClipRect.attr('height', clipBox.height);\n }\n group.clip(animationClipRect);\n if (markerGroup) {\n markerGroup.clip(markerAnimationClipRect);\n }\n // Run the animation\n }\n else if (animationClipRect &&\n // Only first series in this pane\n !animationClipRect.hasClass('highcharts-animating')) {\n var finalBox = this.getClipBox(),\n step_1 = animation.step;\n // Only do this when there are actually markers\n if (markerGroup && markerGroup.element.childNodes.length) {\n // To provide as smooth animation as possible, update the marker\n // group clipping in steps of the main group animation\n animation.step = function (val, fx) {\n if (step_1) {\n step_1.apply(fx, arguments);\n }\n if (markerAnimationClipRect &&\n markerAnimationClipRect.element) {\n markerAnimationClipRect.attr(fx.prop, fx.prop === 'width' ? val + 99 : val);\n }\n };\n }\n animationClipRect\n .addClass('highcharts-animating')\n .animate(finalBox, animation);\n }\n };\n /**\n * This runs after animation to land on the final plot clipping.\n *\n * @private\n * @function Highcharts.Series#afterAnimate\n *\n * @emits Highcharts.Series#event:afterAnimate\n */\n Series.prototype.afterAnimate = function () {\n var _this = this;\n this.setClip();\n // Destroy temporary clip rectangles that are no longer in use\n objectEach(this.chart.sharedClips, function (clip, key, sharedClips) {\n if (clip && !_this.chart.container.querySelector(\"[clip-path=\\\"url(#\" + clip.id + \")\\\"]\")) {\n clip.destroy();\n delete sharedClips[key];\n }\n });\n this.finishedAnimating = true;\n fireEvent(this, 'afterAnimate');\n };\n /**\n * Draw the markers for line-like series types, and columns or other\n * graphical representation for {@link Point} objects for other series\n * types. The resulting element is typically stored as\n * {@link Point.graphic}, and is created on the first call and updated\n * and moved on subsequent calls.\n *\n * @function Highcharts.Series#drawPoints\n */\n Series.prototype.drawPoints = function () {\n var series = this,\n points = series.points,\n chart = series.chart,\n options = series.options,\n seriesMarkerOptions = options.marker,\n markerGroup = (series[series.specialGroup] ||\n series.markerGroup),\n xAxis = series.xAxis,\n globallyEnabled = pick(seriesMarkerOptions.enabled, !xAxis || xAxis.isRadial ? true : null, \n // Use larger or equal as radius is null in bubbles (#6321)\n series.closestPointRangePx >= (seriesMarkerOptions.enabledThreshold *\n seriesMarkerOptions.radius));\n var i,\n point,\n graphic,\n verb,\n pointMarkerOptions,\n hasPointMarker,\n markerAttribs;\n if (seriesMarkerOptions.enabled !== false ||\n series._hasPointMarkers) {\n for (i = 0; i < points.length; i++) {\n point = points[i];\n graphic = point.graphic;\n verb = graphic ? 'animate' : 'attr';\n pointMarkerOptions = point.marker || {};\n hasPointMarker = !!point.marker;\n var shouldDrawMarker = ((globallyEnabled &&\n typeof pointMarkerOptions.enabled === 'undefined') || pointMarkerOptions.enabled) && !point.isNull && point.visible !== false;\n // only draw the point if y is defined\n if (shouldDrawMarker) {\n // Shortcuts\n var symbol = pick(pointMarkerOptions.symbol,\n series.symbol, 'rect');\n markerAttribs = series.markerAttribs(point, (point.selected && 'select'));\n // Set starting position for point sliding animation.\n if (series.enabledDataSorting) {\n point.startXPos = xAxis.reversed ?\n -(markerAttribs.width || 0) :\n xAxis.width;\n }\n var isInside = point.isInside !== false;\n if (graphic) { // update\n // Since the marker group isn't clipped, each\n // individual marker must be toggled\n graphic[isInside ? 'show' : 'hide'](isInside)\n .animate(markerAttribs);\n }\n else if (isInside &&\n ((markerAttribs.width || 0) > 0 || point.hasImage)) {\n /**\n * The graphic representation of the point.\n * Typically this is a simple shape, like a `rect`\n * for column charts or `path` for line markers, but\n * for some complex series types like boxplot or 3D\n * charts, the graphic may be a `g` element\n * containing other shapes. The graphic is generated\n * the first time {@link Series#drawPoints} runs,\n * and updated and moved on subsequent runs.\n *\n * @name Point#graphic\n * @type {SVGElement}\n */\n point.graphic = graphic = chart.renderer\n .symbol(symbol, markerAttribs.x, markerAttribs.y, markerAttribs.width, markerAttribs.height, hasPointMarker ?\n pointMarkerOptions :\n seriesMarkerOptions)\n .add(markerGroup);\n // Sliding animation for new points\n if (series.enabledDataSorting &&\n chart.hasRendered) {\n graphic.attr({\n x: point.startXPos\n });\n verb = 'animate';\n }\n }\n if (graphic && verb === 'animate') { // update\n // Since the marker group isn't clipped, each\n // individual marker must be toggled\n graphic[isInside ? 'show' : 'hide'](isInside)\n .animate(markerAttribs);\n }\n // Presentational attributes\n if (graphic && !chart.styledMode) {\n graphic[verb](series.pointAttribs(point, (point.selected && 'select')));\n }\n if (graphic) {\n graphic.addClass(point.getClassName(), true);\n }\n }\n else if (graphic) {\n point.graphic = graphic.destroy(); // #1269\n }\n }\n }\n };\n /**\n * Get non-presentational attributes for a point. Used internally for\n * both styled mode and classic. Can be overridden for different series\n * types.\n *\n * @see Series#pointAttribs\n *\n * @function Highcharts.Series#markerAttribs\n *\n * @param {Highcharts.Point} point\n * The Point to inspect.\n *\n * @param {string} [state]\n * The state, can be either `hover`, `select` or undefined.\n *\n * @return {Highcharts.SVGAttributes}\n * A hash containing those attributes that are not settable from CSS.\n */\n Series.prototype.markerAttribs = function (point, state) {\n var seriesOptions = this.options,\n seriesMarkerOptions = seriesOptions.marker,\n pointMarkerOptions = point.marker || {},\n symbol = (pointMarkerOptions.symbol ||\n seriesMarkerOptions.symbol);\n var seriesStateOptions,\n pointStateOptions,\n radius = pick(pointMarkerOptions.radius,\n seriesMarkerOptions.radius);\n // Handle hover and select states\n if (state) {\n seriesStateOptions = seriesMarkerOptions.states[state];\n pointStateOptions = pointMarkerOptions.states &&\n pointMarkerOptions.states[state];\n radius = pick(pointStateOptions && pointStateOptions.radius, seriesStateOptions && seriesStateOptions.radius, radius + (seriesStateOptions && seriesStateOptions.radiusPlus ||\n 0));\n }\n point.hasImage = symbol && symbol.indexOf('url') === 0;\n if (point.hasImage) {\n radius = 0; // and subsequently width and height is not set\n }\n var attribs = {\n // Math.floor for #1843:\n x: seriesOptions.crisp ?\n Math.floor(point.plotX - radius) :\n point.plotX - radius,\n y: point.plotY - radius\n };\n if (radius) {\n attribs.width = attribs.height = 2 * radius;\n }\n return attribs;\n };\n /**\n * Internal function to get presentational attributes for each point.\n * Unlike {@link Series#markerAttribs}, this function should return\n * those attributes that can also be set in CSS. In styled mode,\n * `pointAttribs` won't be called.\n *\n * @private\n * @function Highcharts.Series#pointAttribs\n *\n * @param {Highcharts.Point} [point]\n * The point instance to inspect.\n *\n * @param {string} [state]\n * The point state, can be either `hover`, `select` or 'normal'. If\n * undefined, normal state is assumed.\n *\n * @return {Highcharts.SVGAttributes}\n * The presentational attributes to be set on the point.\n */\n Series.prototype.pointAttribs = function (point, state) {\n var seriesMarkerOptions = this.options.marker,\n pointOptions = point && point.options,\n pointMarkerOptions = ((pointOptions && pointOptions.marker) || {}),\n pointColorOption = pointOptions && pointOptions.color,\n pointColor = point && point.color,\n zoneColor = point && point.zone && point.zone.color;\n var seriesStateOptions,\n pointStateOptions,\n color = this.color,\n fill,\n stroke,\n strokeWidth = pick(pointMarkerOptions.lineWidth,\n seriesMarkerOptions.lineWidth),\n opacity = 1;\n color = (pointColorOption ||\n zoneColor ||\n pointColor ||\n color);\n fill = (pointMarkerOptions.fillColor ||\n seriesMarkerOptions.fillColor ||\n color);\n stroke = (pointMarkerOptions.lineColor ||\n seriesMarkerOptions.lineColor ||\n color);\n // Handle hover and select states\n state = state || 'normal';\n if (state) {\n seriesStateOptions = (seriesMarkerOptions.states[state] || {});\n pointStateOptions = (pointMarkerOptions.states &&\n pointMarkerOptions.states[state]) || {};\n strokeWidth = pick(pointStateOptions.lineWidth, seriesStateOptions.lineWidth, strokeWidth + pick(pointStateOptions.lineWidthPlus, seriesStateOptions.lineWidthPlus, 0));\n fill = (pointStateOptions.fillColor ||\n seriesStateOptions.fillColor ||\n fill);\n stroke = (pointStateOptions.lineColor ||\n seriesStateOptions.lineColor ||\n stroke);\n opacity = pick(pointStateOptions.opacity, seriesStateOptions.opacity, opacity);\n }\n return {\n 'stroke': stroke,\n 'stroke-width': strokeWidth,\n 'fill': fill,\n 'opacity': opacity\n };\n };\n /**\n * Clear DOM objects and free up memory.\n *\n * @private\n * @function Highcharts.Series#destroy\n *\n * @emits Highcharts.Series#event:destroy\n */\n Series.prototype.destroy = function (keepEventsForUpdate) {\n var series = this,\n chart = series.chart,\n issue134 = /AppleWebKit\\/533/.test(win.navigator.userAgent),\n data = series.data || [];\n var destroy,\n i,\n point,\n axis;\n // add event hook\n fireEvent(series, 'destroy');\n // remove events\n this.removeEvents(keepEventsForUpdate);\n // erase from axes\n (series.axisTypes || []).forEach(function (AXIS) {\n axis = series[AXIS];\n if (axis && axis.series) {\n erase(axis.series, series);\n axis.isDirty = axis.forceRedraw = true;\n }\n });\n // remove legend items\n if (series.legendItem) {\n series.chart.legend.destroyItem(series);\n }\n // destroy all points with their elements\n i = data.length;\n while (i--) {\n point = data[i];\n if (point && point.destroy) {\n point.destroy();\n }\n }\n if (series.clips) {\n series.clips.forEach(function (clip) { return clip.destroy(); });\n }\n // Clear the animation timeout if we are destroying the series\n // during initial animation\n U.clearTimeout(series.animationTimeout);\n // Destroy all SVGElements associated to the series\n objectEach(series, function (val, prop) {\n // Survive provides a hook for not destroying\n if (val instanceof SVGElement && !val.survive) {\n // issue 134 workaround\n destroy = issue134 && prop === 'group' ?\n 'hide' :\n 'destroy';\n val[destroy]();\n }\n });\n // remove from hoverSeries\n if (chart.hoverSeries === series) {\n chart.hoverSeries = void 0;\n }\n erase(chart.series, series);\n chart.orderSeries();\n // clear all members\n objectEach(series, function (val, prop) {\n if (!keepEventsForUpdate || prop !== 'hcEvents') {\n delete series[prop];\n }\n });\n };\n /**\n * Clip the graphs into zones for colors and styling.\n *\n * @private\n * @function Highcharts.Series#applyZones\n */\n Series.prototype.applyZones = function () {\n var series = this,\n chart = this.chart,\n renderer = chart.renderer,\n zones = this.zones,\n clips = (this.clips || []),\n graph = this.graph,\n area = this.area,\n chartSizeMax = Math.max(chart.chartWidth,\n chart.chartHeight),\n axis = this[(this.zoneAxis || 'y') + 'Axis'],\n inverted = chart.inverted;\n var translatedFrom,\n translatedTo,\n clipAttr,\n extremes,\n reversed,\n horiz,\n pxRange,\n pxPosMin,\n pxPosMax,\n zoneArea,\n zoneGraph,\n ignoreZones = false;\n if (zones.length &&\n (graph || area) &&\n axis &&\n typeof axis.min !== 'undefined') {\n reversed = axis.reversed;\n horiz = axis.horiz;\n // The use of the Color Threshold assumes there are no gaps\n // so it is safe to hide the original graph and area\n // unless it is not waterfall series, then use showLine property\n // to set lines between columns to be visible (#7862)\n if (graph && !this.showLine) {\n graph.hide();\n }\n if (area) {\n area.hide();\n }\n // Create the clips\n extremes = axis.getExtremes();\n zones.forEach(function (threshold, i) {\n translatedFrom = reversed ?\n (horiz ? chart.plotWidth : 0) :\n (horiz ? 0 : (axis.toPixels(extremes.min) || 0));\n translatedFrom = clamp(pick(translatedTo, translatedFrom), 0, chartSizeMax);\n translatedTo = clamp(Math.round(axis.toPixels(pick(threshold.value, extremes.max), true) || 0), 0, chartSizeMax);\n if (ignoreZones) {\n translatedFrom = translatedTo =\n axis.toPixels(extremes.max);\n }\n pxRange = Math.abs(translatedFrom - translatedTo);\n pxPosMin = Math.min(translatedFrom, translatedTo);\n pxPosMax = Math.max(translatedFrom, translatedTo);\n if (axis.isXAxis) {\n clipAttr = {\n x: inverted ? pxPosMax : pxPosMin,\n y: 0,\n width: pxRange,\n height: chartSizeMax\n };\n if (!horiz) {\n clipAttr.x = chart.plotHeight - clipAttr.x;\n }\n }\n else {\n clipAttr = {\n x: 0,\n y: inverted ? pxPosMax : pxPosMin,\n width: chartSizeMax,\n height: pxRange\n };\n if (horiz) {\n clipAttr.y = chart.plotWidth - clipAttr.y;\n }\n }\n // VML SUPPPORT\n if (inverted && renderer.isVML) {\n if (axis.isXAxis) {\n clipAttr = {\n x: 0,\n y: reversed ? pxPosMin : pxPosMax,\n height: clipAttr.width,\n width: chart.chartWidth\n };\n }\n else {\n clipAttr = {\n x: (clipAttr.y -\n chart.plotLeft -\n chart.spacingBox.x),\n y: 0,\n width: clipAttr.height,\n height: chart.chartHeight\n };\n }\n }\n // END OF VML SUPPORT\n if (clips[i]) {\n clips[i].animate(clipAttr);\n }\n else {\n clips[i] = renderer.clipRect(clipAttr);\n }\n // when no data, graph zone is not applied and after setData\n // clip was ignored. As a result, it should be applied each\n // time.\n zoneArea = series['zone-area-' + i];\n zoneGraph = series['zone-graph-' + i];\n if (graph && zoneGraph) {\n zoneGraph.clip(clips[i]);\n }\n if (area && zoneArea) {\n zoneArea.clip(clips[i]);\n }\n // if this zone extends out of the axis, ignore the others\n ignoreZones = threshold.value > extremes.max;\n // Clear translatedTo for indicators\n if (series.resetZones && translatedTo === 0) {\n translatedTo = void 0;\n }\n });\n this.clips = clips;\n }\n else if (series.visible) {\n // If zones were removed, restore graph and area\n if (graph) {\n graph.show(true);\n }\n if (area) {\n area.show(true);\n }\n }\n };\n /**\n * Initialize and perform group inversion on series.group and\n * series.markerGroup.\n *\n * @private\n * @function Highcharts.Series#invertGroups\n */\n Series.prototype.invertGroups = function (inverted) {\n var series = this,\n chart = series.chart;\n /**\n * @private\n */\n function setInvert() {\n ['group', 'markerGroup'].forEach(function (groupName) {\n if (series[groupName]) {\n // VML/HTML needs explicit attributes for flipping\n if (chart.renderer.isVML) {\n series[groupName].attr({\n width: series.yAxis.len,\n height: series.xAxis.len\n });\n }\n series[groupName].width = series.yAxis.len;\n series[groupName].height = series.xAxis.len;\n // If inverted polar, don't invert series group\n series[groupName].invert(series.isRadialSeries ? false : inverted);\n }\n });\n }\n // Pie, go away (#1736)\n if (!series.xAxis) {\n return;\n }\n // A fixed size is needed for inversion to work\n series.eventsToUnbind.push(addEvent(chart, 'resize', setInvert));\n // Do it now\n setInvert();\n // On subsequent render and redraw, just do setInvert without\n // setting up events again\n series.invertGroups = setInvert;\n };\n /**\n * General abstraction for creating plot groups like series.group,\n * series.dataLabelsGroup and series.markerGroup. On subsequent calls,\n * the group will only be adjusted to the updated plot size.\n *\n * @private\n * @function Highcharts.Series#plotGroup\n */\n Series.prototype.plotGroup = function (prop, name, visibility, zIndex, parent) {\n var group = this[prop];\n var isNew = !group,\n attrs = {\n visibility: visibility,\n zIndex: zIndex || 0.1 // IE8 and pointer logic use this\n };\n // Avoid setting undefined opacity, or in styled mode\n if (typeof this.opacity !== 'undefined' &&\n !this.chart.styledMode && this.state !== 'inactive' // #13719\n ) {\n attrs.opacity = this.opacity;\n }\n // Generate it on first call\n if (isNew) {\n this[prop] = group = this.chart.renderer\n .g()\n .add(parent);\n }\n // Add the class names, and replace existing ones as response to\n // Series.update (#6660)\n group.addClass(('highcharts-' + name +\n ' highcharts-series-' + this.index +\n ' highcharts-' + this.type + '-series ' +\n (defined(this.colorIndex) ?\n 'highcharts-color-' + this.colorIndex + ' ' :\n '') +\n (this.options.className || '') +\n (group.hasClass('highcharts-tracker') ?\n ' highcharts-tracker' :\n '')), true);\n // Place it on first and subsequent (redraw) calls\n group.attr(attrs)[isNew ? 'attr' : 'animate'](this.getPlotBox());\n return group;\n };\n /**\n * Get the translation and scale for the plot area of this series.\n *\n * @function Highcharts.Series#getPlotBox\n */\n Series.prototype.getPlotBox = function () {\n var chart = this.chart;\n var xAxis = this.xAxis,\n yAxis = this.yAxis;\n // Swap axes for inverted (#2339)\n if (chart.inverted) {\n xAxis = yAxis;\n yAxis = this.xAxis;\n }\n return {\n translateX: xAxis ? xAxis.left : chart.plotLeft,\n translateY: yAxis ? yAxis.top : chart.plotTop,\n scaleX: 1,\n scaleY: 1\n };\n };\n /**\n * Removes the event handlers attached previously with addEvents.\n * @private\n * @function Highcharts.Series#removeEvents\n */\n Series.prototype.removeEvents = function (keepEventsForUpdate) {\n var series = this;\n if (!keepEventsForUpdate) {\n // remove all events\n removeEvent(series);\n }\n if (series.eventsToUnbind.length) {\n // remove only internal events for proper update\n // #12355 - solves problem with multiple destroy events\n series.eventsToUnbind.forEach(function (unbind) {\n unbind();\n });\n series.eventsToUnbind.length = 0;\n }\n };\n /**\n * Render the graph and markers. Called internally when first rendering\n * and later when redrawing the chart. This function can be extended in\n * plugins, but normally shouldn't be called directly.\n *\n * @function Highcharts.Series#render\n *\n * @emits Highcharts.Series#event:afterRender\n */\n Series.prototype.render = function () {\n var series = this,\n chart = series.chart,\n options = series.options,\n animOptions = animObject(options.animation),\n visibility = series.visible ?\n 'inherit' : 'hidden', // #2597\n zIndex = options.zIndex,\n hasRendered = series.hasRendered,\n chartSeriesGroup = chart.seriesGroup,\n inverted = chart.inverted;\n // Animation doesn't work in IE8 quirks when the group div is\n // hidden, and looks bad in other oldIE\n var animDuration = (!series.finishedAnimating && chart.renderer.isSVG) ?\n animOptions.duration : 0;\n fireEvent(this, 'render');\n // the group\n var group = series.plotGroup('group', 'series', visibility, zIndex, chartSeriesGroup);\n series.markerGroup = series.plotGroup('markerGroup', 'markers', visibility, zIndex, chartSeriesGroup);\n // Initial clipping, applies to columns etc. (#3839).\n if (options.clip !== false) {\n series.setClip();\n }\n // Initialize the animation\n if (series.animate && animDuration) {\n series.animate(true);\n }\n // SVGRenderer needs to know this before drawing elements (#1089,\n // #1795)\n group.inverted = pick(series.invertible, series.isCartesian) ?\n inverted : false;\n // Draw the graph if any\n if (series.drawGraph) {\n series.drawGraph();\n series.applyZones();\n }\n // Draw the points\n if (series.visible) {\n series.drawPoints();\n }\n // Draw the data labels\n if (series.drawDataLabels) {\n series.drawDataLabels();\n }\n // In pie charts, slices are added to the DOM, but actual rendering\n // is postponed until labels reserved their space\n if (series.redrawPoints) {\n series.redrawPoints();\n }\n // draw the mouse tracking area\n if (series.drawTracker &&\n series.options.enableMouseTracking !== false) {\n series.drawTracker();\n }\n // Handle inverted series and tracker groups\n series.invertGroups(inverted);\n // Run the animation\n if (series.animate && animDuration) {\n series.animate();\n }\n // Call the afterAnimate function on animation complete (but don't\n // overwrite the animation.complete option which should be available\n // to the user).\n if (!hasRendered) {\n // Additional time if defer is defined before afterAnimate\n // will be triggered\n if (animDuration && animOptions.defer) {\n animDuration += animOptions.defer;\n }\n series.animationTimeout = syncTimeout(function () {\n series.afterAnimate();\n }, animDuration || 0);\n }\n // Means data is in accordance with what you see\n series.isDirty = false;\n // (See #322) series.isDirty = series.isDirtyData = false; // means\n // data is in accordance with what you see\n series.hasRendered = true;\n fireEvent(series, 'afterRender');\n };\n /**\n * Redraw the series. This function is called internally from\n * `chart.redraw` and normally shouldn't be called directly.\n * @private\n * @function Highcharts.Series#redraw\n */\n Series.prototype.redraw = function () {\n var series = this,\n chart = series.chart, \n // cache it here as it is set to false in render, but used after\n wasDirty = series.isDirty || series.isDirtyData,\n group = series.group,\n xAxis = series.xAxis,\n yAxis = series.yAxis;\n // reposition on resize\n if (group) {\n if (chart.inverted) {\n group.attr({\n width: chart.plotWidth,\n height: chart.plotHeight\n });\n }\n group.animate({\n translateX: pick(xAxis && xAxis.left, chart.plotLeft),\n translateY: pick(yAxis && yAxis.top, chart.plotTop)\n });\n }\n series.translate();\n series.render();\n if (wasDirty) { // #3868, #3945\n delete this.kdTree;\n }\n };\n /**\n * Find the nearest point from a pointer event. This applies to series that\n * use k-d-trees to get the nearest point. Native pointer events must be\n * normalized using `Pointer.normalize`, that adds `chartX` and `chartY`\n * properties.\n *\n * @sample highcharts/demo/synchronized-charts\n * Synchronized charts with tooltips\n *\n * @function Highcharts.Series#searchPoint\n *\n * @param {Highcharts.PointerEvent} e\n * The normalized pointer event\n * @param {boolean} [compareX=false]\n * Search only by the X value, not Y\n *\n * @return {Point|undefined}\n * The closest point to the pointer event\n */\n Series.prototype.searchPoint = function (e, compareX) {\n var series = this,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n inverted = series.chart.inverted;\n return this.searchKDTree({\n clientX: inverted ?\n xAxis.len - e.chartY + xAxis.pos :\n e.chartX - xAxis.pos,\n plotY: inverted ?\n yAxis.len - e.chartX + yAxis.pos :\n e.chartY - yAxis.pos\n }, compareX, e);\n };\n /**\n * Build the k-d-tree that is used by mouse and touch interaction to get\n * the closest point. Line-like series typically have a one-dimensional\n * tree where points are searched along the X axis, while scatter-like\n * series typically search in two dimensions, X and Y.\n *\n * @private\n * @function Highcharts.Series#buildKDTree\n */\n Series.prototype.buildKDTree = function (e) {\n // Prevent multiple k-d-trees from being built simultaneously\n // (#6235)\n this.buildingKdTree = true;\n var series = this,\n dimensions = series.options.findNearestPointBy\n .indexOf('y') > -1 ? 2 : 1;\n /**\n * Internal function\n * @private\n */\n function _kdtree(points, depth, dimensions) {\n var length = points && points.length;\n var axis,\n median;\n if (length) {\n // alternate between the axis\n axis = series.kdAxisArray[depth % dimensions];\n // sort point array\n points.sort(function (a, b) {\n return a[axis] - b[axis];\n });\n median = Math.floor(length / 2);\n // build and return nod\n return {\n point: points[median],\n left: _kdtree(points.slice(0, median), depth + 1, dimensions),\n right: _kdtree(points.slice(median + 1), depth + 1, dimensions)\n };\n }\n }\n /**\n * Start the recursive build process with a clone of the points\n * array and null points filtered out. (#3873)\n * @private\n */\n function startRecursive() {\n series.kdTree = _kdtree(series.getValidPoints(null, \n // For line-type series restrict to plot area, but\n // column-type series not (#3916, #4511)\n !series.directTouch), dimensions, dimensions);\n series.buildingKdTree = false;\n }\n delete series.kdTree;\n // For testing tooltips, don't build async. Also if touchstart, we\n // may be dealing with click events on mobile, so don't delay\n // (#6817).\n syncTimeout(startRecursive, series.options.kdNow || (e && e.type === 'touchstart') ? 0 : 1);\n };\n /**\n * @private\n * @function Highcharts.Series#searchKDTree\n */\n Series.prototype.searchKDTree = function (point, compareX, e) {\n var series = this,\n kdX = this.kdAxisArray[0],\n kdY = this.kdAxisArray[1],\n kdComparer = compareX ? 'distX' : 'dist',\n kdDimensions = series.options.findNearestPointBy\n .indexOf('y') > -1 ? 2 : 1;\n /**\n * Set the one and two dimensional distance on the point object.\n * @private\n */\n function setDistance(p1, p2) {\n var x = (defined(p1[kdX]) &&\n defined(p2[kdX])) ?\n Math.pow(p1[kdX] - p2[kdX], 2) :\n null,\n y = (defined(p1[kdY]) &&\n defined(p2[kdY])) ?\n Math.pow(p1[kdY] - p2[kdY], 2) :\n null,\n r = (x || 0) + (y || 0);\n p2.dist = defined(r) ? Math.sqrt(r) : Number.MAX_VALUE;\n p2.distX = defined(x) ? Math.sqrt(x) : Number.MAX_VALUE;\n }\n /**\n * @private\n */\n function _search(search, tree, depth, dimensions) {\n var point = tree.point,\n axis = series.kdAxisArray[depth % dimensions];\n var nPoint1,\n nPoint2,\n ret = point;\n setDistance(search, point);\n // Pick side based on distance to splitting point\n var tdist = search[axis] - point[axis], sideA = tdist < 0 ? 'left' : 'right', sideB = tdist < 0 ? 'right' : 'left';\n // End of tree\n if (tree[sideA]) {\n nPoint1 = _search(search, tree[sideA], depth + 1, dimensions);\n ret = (nPoint1[kdComparer] <\n ret[kdComparer] ?\n nPoint1 :\n point);\n }\n if (tree[sideB]) {\n // compare distance to current best to splitting point to\n // decide wether to check side B or not\n if (Math.sqrt(tdist * tdist) < ret[kdComparer]) {\n nPoint2 = _search(search, tree[sideB], depth + 1, dimensions);\n ret = (nPoint2[kdComparer] <\n ret[kdComparer] ?\n nPoint2 :\n ret);\n }\n }\n return ret;\n }\n if (!this.kdTree && !this.buildingKdTree) {\n this.buildKDTree(e);\n }\n if (this.kdTree) {\n return _search(point, this.kdTree, kdDimensions, kdDimensions);\n }\n };\n /**\n * @private\n * @function Highcharts.Series#pointPlacementToXValue\n */\n Series.prototype.pointPlacementToXValue = function () {\n var _a = this,\n _b = _a.options,\n pointPlacement = _b.pointPlacement,\n pointRange = _b.pointRange,\n axis = _a.xAxis;\n var factor = pointPlacement;\n // Point placement is relative to each series pointRange (#5889)\n if (factor === 'between') {\n factor = axis.reversed ? -0.5 : 0.5; // #11955\n }\n return isNumber(factor) ?\n factor * (pointRange || axis.pointRange) :\n 0;\n };\n /**\n * @private\n * @function Highcharts.Series#isPointInside\n */\n Series.prototype.isPointInside = function (point) {\n var _a = this,\n chart = _a.chart,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis,\n isInside = (typeof point.plotY !== 'undefined' &&\n typeof point.plotX !== 'undefined' &&\n point.plotY >= 0 &&\n point.plotY <= (yAxis ? yAxis.len : chart.plotHeight) &&\n point.plotX >= 0 &&\n point.plotX <= (xAxis ? xAxis.len : chart.plotWidth));\n return isInside;\n };\n /**\n * Draw the tracker object that sits above all data labels and markers to\n * track mouse events on the graph or points. For the line type charts\n * the tracker uses the same graphPath, but with a greater stroke width\n * for better control.\n * @private\n */\n Series.prototype.drawTracker = function () {\n var series = this,\n options = series.options,\n trackByArea = options.trackByArea,\n trackerPath = [].concat(trackByArea ?\n series.areaPath :\n series.graphPath), \n // trackerPathLength = trackerPath.length,\n chart = series.chart,\n pointer = chart.pointer,\n renderer = chart.renderer,\n snap = chart.options.tooltip.snap,\n tracker = series.tracker,\n onMouseOver = function (e) {\n if (chart.hoverSeries !== series) {\n series.onMouseOver();\n }\n }, \n /*\n * Empirical lowest possible opacities for TRACKER_FILL for an\n * element to stay invisible but clickable\n * IE6: 0.002\n * IE7: 0.002\n * IE8: 0.002\n * IE9: 0.00000000001 (unlimited)\n * IE10: 0.0001 (exporting only)\n * FF: 0.00000000001 (unlimited)\n * Chrome: 0.000001\n * Safari: 0.000001\n * Opera: 0.00000000001 (unlimited)\n */\n TRACKER_FILL = 'rgba(192,192,192,' + (svg ? 0.0001 : 0.002) + ')';\n var i;\n // Draw the tracker\n if (tracker) {\n tracker.attr({ d: trackerPath });\n }\n else if (series.graph) { // create\n series.tracker = renderer.path(trackerPath)\n .attr({\n visibility: series.visible ? 'visible' : 'hidden',\n zIndex: 2\n })\n .addClass(trackByArea ?\n 'highcharts-tracker-area' :\n 'highcharts-tracker-line')\n .add(series.group);\n if (!chart.styledMode) {\n series.tracker.attr({\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n stroke: TRACKER_FILL,\n fill: trackByArea ? TRACKER_FILL : 'none',\n 'stroke-width': series.graph.strokeWidth() +\n (trackByArea ? 0 : 2 * snap)\n });\n }\n // The tracker is added to the series group, which is clipped, but\n // is covered by the marker group. So the marker group also needs to\n // capture events.\n [\n series.tracker,\n series.markerGroup,\n series.dataLabelsGroup\n ].forEach(function (tracker) {\n if (tracker) {\n tracker.addClass('highcharts-tracker')\n .on('mouseover', onMouseOver)\n .on('mouseout', function (e) {\n pointer.onTrackerMouseOut(e);\n });\n if (options.cursor && !chart.styledMode) {\n tracker.css({ cursor: options.cursor });\n }\n if (hasTouch) {\n tracker.on('touchstart', onMouseOver);\n }\n }\n });\n }\n fireEvent(this, 'afterDrawTracker');\n };\n /**\n * Add a point to the series after render time. The point can be added at\n * the end, or by giving it an X value, to the start or in the middle of the\n * series.\n *\n * @sample highcharts/members/series-addpoint-append/\n * Append point\n * @sample highcharts/members/series-addpoint-append-and-shift/\n * Append and shift\n * @sample highcharts/members/series-addpoint-x-and-y/\n * Both X and Y values given\n * @sample highcharts/members/series-addpoint-pie/\n * Append pie slice\n * @sample stock/members/series-addpoint/\n * Append 100 points in Highcharts Stock\n * @sample stock/members/series-addpoint-shift/\n * Append and shift in Highcharts Stock\n * @sample maps/members/series-addpoint/\n * Add a point in Highmaps\n *\n * @function Highcharts.Series#addPoint\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options. If options is a single number, a point with\n * that y value is appended to the series. If it is an array, it will\n * be interpreted as x and y values respectively. If it is an\n * object, advanced options as outlined under `series.data` are\n * applied.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is added. When adding\n * more than one point, it is highly recommended that the redraw\n * option be set to false, and instead {@link Chart#redraw} is\n * explicitly called after the adding of points is finished.\n * Otherwise, the chart will redraw after adding each point.\n *\n * @param {boolean} [shift=false]\n * If true, a point is shifted off the start of the series as one is\n * appended to the end.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @param {boolean} [withEvent=true]\n * Used internally, whether to fire the series `addPoint` event.\n *\n * @emits Highcharts.Series#event:addPoint\n */\n Series.prototype.addPoint = function (options, redraw, shift, animation, withEvent) {\n var series = this,\n seriesOptions = series.options,\n data = series.data,\n chart = series.chart,\n xAxis = series.xAxis,\n names = xAxis && xAxis.hasNames && xAxis.names,\n dataOptions = seriesOptions.data,\n xData = series.xData;\n var isInTheMiddle,\n i;\n // Optional redraw, defaults to true\n redraw = pick(redraw, true);\n // Get options and push the point to xData, yData and series.options. In\n // series.generatePoints the Point instance will be created on demand\n // and pushed to the series.data array.\n var point = { series: series };\n series.pointClass.prototype.applyOptions.apply(point, [options]);\n var x = point.x;\n // Get the insertion point\n i = xData.length;\n if (series.requireSorting && x < xData[i - 1]) {\n isInTheMiddle = true;\n while (i && xData[i - 1] > x) {\n i--;\n }\n }\n // Insert undefined item\n series.updateParallelArrays(point, 'splice', i, 0, 0);\n // Update it\n series.updateParallelArrays(point, i);\n if (names && point.name) {\n names[x] = point.name;\n }\n dataOptions.splice(i, 0, options);\n if (isInTheMiddle) {\n series.data.splice(i, 0, null);\n series.processData();\n }\n // Generate points to be added to the legend (#1329)\n if (seriesOptions.legendType === 'point') {\n series.generatePoints();\n }\n // Shift the first point off the parallel arrays\n if (shift) {\n if (data[0] && data[0].remove) {\n data[0].remove(false);\n }\n else {\n data.shift();\n series.updateParallelArrays(point, 'shift');\n dataOptions.shift();\n }\n }\n // Fire event\n if (withEvent !== false) {\n fireEvent(series, 'addPoint', { point: point });\n }\n // redraw\n series.isDirty = true;\n series.isDirtyData = true;\n if (redraw) {\n chart.redraw(animation); // Animation is set anyway on redraw, #5665\n }\n };\n /**\n * Remove a point from the series. Unlike the\n * {@link Highcharts.Point#remove} method, this can also be done on a point\n * that is not instanciated because it is outside the view or subject to\n * Highcharts Stock data grouping.\n *\n * @sample highcharts/members/series-removepoint/\n * Remove cropped point\n *\n * @function Highcharts.Series#removePoint\n *\n * @param {number} i\n * The index of the point in the {@link Highcharts.Series.data|data}\n * array.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is added. When\n * removing more than one point, it is highly recommended that the\n * `redraw` option be set to `false`, and instead {@link\n * Highcharts.Chart#redraw} is explicitly called after the adding of\n * points is finished.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * Whether and optionally how the series should be animated.\n *\n * @emits Highcharts.Point#event:remove\n */\n Series.prototype.removePoint = function (i, redraw, animation) {\n var series = this,\n data = series.data,\n point = data[i],\n points = series.points,\n chart = series.chart,\n remove = function () {\n if (points && points.length === data.length) { // #4935\n points.splice(i, 1);\n }\n data.splice(i, 1);\n series.options.data.splice(i, 1);\n series.updateParallelArrays(point || { series: series }, 'splice', i, 1);\n if (point) {\n point.destroy();\n }\n // redraw\n series.isDirty = true;\n series.isDirtyData = true;\n if (redraw) {\n chart.redraw();\n }\n };\n setAnimation(animation, chart);\n redraw = pick(redraw, true);\n // Fire the event with a default handler of removing the point\n if (point) {\n point.firePointEvent('remove', null, remove);\n }\n else {\n remove();\n }\n };\n /**\n * Remove a series and optionally redraw the chart.\n *\n * @sample highcharts/members/series-remove/\n * Remove first series from a button\n *\n * @function Highcharts.Series#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @param {boolean} [withEvent=true]\n * Used internally, whether to fire the series `remove` event.\n *\n * @emits Highcharts.Series#event:remove\n */\n Series.prototype.remove = function (redraw, animation, withEvent, keepEvents) {\n var series = this,\n chart = series.chart;\n /**\n * @private\n */\n function remove() {\n // Destroy elements\n series.destroy(keepEvents);\n // Redraw\n chart.isDirtyLegend = chart.isDirtyBox = true;\n chart.linkSeries();\n if (pick(redraw, true)) {\n chart.redraw(animation);\n }\n }\n // Fire the event with a default handler of removing the point\n if (withEvent !== false) {\n fireEvent(series, 'remove', null, remove);\n }\n else {\n remove();\n }\n };\n /**\n * Update the series with a new set of options. For a clean and precise\n * handling of new options, all methods and elements from the series are\n * removed, and it is initialized from scratch. Therefore, this method is\n * more performance expensive than some other utility methods like {@link\n * Series#setData} or {@link Series#setVisible}.\n *\n * Note that `Series.update` may mutate the passed `data` options.\n *\n * @sample highcharts/members/series-update/\n * Updating series options\n * @sample maps/members/series-update/\n * Update series options in Highmaps\n *\n * @function Highcharts.Series#update\n *\n * @param {Highcharts.SeriesOptionsType} options\n * New options that will be merged with the series' existing options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to\n * false and call {@link Chart#redraw} after.\n *\n * @emits Highcharts.Series#event:update\n * @emits Highcharts.Series#event:afterUpdate\n */\n Series.prototype.update = function (options, redraw) {\n options = cleanRecursively(options, this.userOptions);\n fireEvent(this, 'update', { options: options });\n var series = this,\n chart = series.chart, \n // must use user options when changing type because series.options\n // is merged in with type specific plotOptions\n oldOptions = series.userOptions,\n initialType = series.initialType || series.type,\n plotOptions = chart.options.plotOptions,\n initialSeriesProto = seriesTypes[initialType].prototype,\n groups = [\n 'group',\n 'markerGroup',\n 'dataLabelsGroup',\n 'transformGroup'\n ], \n // Animation must be enabled when calling update before the initial\n // animation has first run. This happens when calling update\n // directly after chart initialization, or when applying responsive\n // rules (#6912).\n animation = series.finishedAnimating && { animation: false },\n kinds = {};\n var seriesOptions,\n n,\n preserve = [\n 'eventOptions',\n 'navigatorSeries',\n 'baseSeries'\n ],\n newType = (options.type ||\n oldOptions.type ||\n chart.options.chart.type);\n var keepPoints = !(\n // Indicators, histograms etc recalculate the data. It should be\n // possible to omit this.\n this.hasDerivedData ||\n // New type requires new point classes\n (newType && newType !== this.type) ||\n // New options affecting how the data points are built\n typeof options.pointStart !== 'undefined' ||\n typeof options.pointInterval !== 'undefined' ||\n typeof options.relativeXValue !== 'undefined' ||\n // Changes to data grouping requires new points in new group\n series.hasOptionChanged('dataGrouping') ||\n series.hasOptionChanged('pointStart') ||\n series.hasOptionChanged('pointInterval') ||\n series.hasOptionChanged('pointIntervalUnit') ||\n series.hasOptionChanged('keys'));\n newType = newType || initialType;\n if (keepPoints) {\n preserve.push('data', 'isDirtyData', 'points', 'processedXData', 'processedYData', 'xIncrement', 'cropped', '_hasPointMarkers', '_hasPointLabels', 'clips', // #15420\n // Networkgraph (#14397)\n 'nodes', 'layout', \n // Map specific, consider moving it to series-specific preserve-\n // properties (#10617)\n 'mapMap', 'mapData', 'minY', 'maxY', 'minX', 'maxX');\n if (options.visible !== false) {\n preserve.push('area', 'graph');\n }\n series.parallelArrays.forEach(function (key) {\n preserve.push(key + 'Data');\n });\n if (options.data) {\n // setData uses dataSorting options so we need to update them\n // earlier\n if (options.dataSorting) {\n extend(series.options.dataSorting, options.dataSorting);\n }\n this.setData(options.data, false);\n }\n }\n // Do the merge, with some forced options\n options = merge(oldOptions, animation, {\n // When oldOptions.index is null it should't be cleared.\n // Otherwise navigator series will have wrong indexes (#10193).\n index: typeof oldOptions.index === 'undefined' ?\n series.index : oldOptions.index,\n pointStart: pick(\n // when updating from blank (#7933)\n (plotOptions &&\n plotOptions.series &&\n plotOptions.series.pointStart), oldOptions.pointStart, \n // when updating after addPoint\n series.xData[0])\n }, (!keepPoints && { data: series.options.data }), options);\n // Merge does not merge arrays, but replaces them. Since points were\n // updated, `series.options.data` has correct merged options, use it:\n if (keepPoints && options.data) {\n options.data = series.options.data;\n }\n // Make sure preserved properties are not destroyed (#3094)\n preserve = groups.concat(preserve);\n preserve.forEach(function (prop) {\n preserve[prop] = series[prop];\n delete series[prop];\n });\n var casting = false;\n if (seriesTypes[newType]) {\n casting = newType !== series.type;\n // Destroy the series and delete all properties, it will be\n // reinserted within the `init` call below\n series.remove(false, false, false, true);\n if (casting) {\n // Modern browsers including IE11\n // @todo slow, consider alternatives mentioned:\n // https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(series, seriesTypes[newType].prototype);\n // Legacy (IE < 11)\n }\n else {\n var ownEvents = Object.hasOwnProperty.call(series, 'hcEvents') && series.hcEvents;\n for (n in initialSeriesProto) { // eslint-disable-line guard-for-in\n series[n] = void 0;\n }\n // Reinsert all methods and properties from the new type\n // prototype (#2270, #3719).\n extend(series, seriesTypes[newType].prototype);\n // The events are tied to the prototype chain, don't copy if\n // they're not the series' own\n if (ownEvents) {\n series.hcEvents = ownEvents;\n }\n else {\n delete series.hcEvents;\n }\n }\n }\n }\n else {\n error(17, true, chart, { missingModuleFor: newType });\n }\n // Re-register groups (#3094) and other preserved properties\n preserve.forEach(function (prop) {\n series[prop] = preserve[prop];\n });\n series.init(chart, options);\n // Remove particular elements of the points. Check `series.options`\n // because we need to consider the options being set on plotOptions as\n // well.\n if (keepPoints && this.points) {\n seriesOptions = series.options;\n // What kind of elements to destroy\n if (seriesOptions.visible === false) {\n kinds.graphic = 1;\n kinds.dataLabel = 1;\n }\n else if (!series._hasPointLabels) {\n var marker = seriesOptions.marker,\n dataLabels = seriesOptions.dataLabels;\n if (marker && (marker.enabled === false ||\n (oldOptions.marker && oldOptions.marker.symbol) !==\n marker.symbol // #10870, #15946\n )) {\n kinds.graphic = 1;\n }\n if (dataLabels &&\n dataLabels.enabled === false) {\n kinds.dataLabel = 1;\n }\n }\n this.points.forEach(function (point) {\n if (point && point.series) {\n point.resolveColor();\n // Destroy elements in order to recreate based on updated\n // series options.\n if (Object.keys(kinds).length) {\n point.destroyElements(kinds);\n }\n if (seriesOptions.showInLegend === false &&\n point.legendItem) {\n chart.legend.destroyItem(point);\n }\n }\n }, this);\n }\n series.initialType = initialType;\n chart.linkSeries(); // Links are lost in series.remove (#3028)\n // #15383: Fire updatedData if the type has changed to keep linked\n // series such as indicators updated\n if (casting && series.linkedSeries.length) {\n series.isDirtyData = true;\n }\n fireEvent(this, 'afterUpdate');\n if (pick(redraw, true)) {\n chart.redraw(keepPoints ? void 0 : false);\n }\n };\n /**\n * Used from within series.update\n * @private\n */\n Series.prototype.setName = function (name) {\n this.name = this.options.name = this.userOptions.name = name;\n this.chart.isDirtyLegend = true;\n };\n /**\n * Check if the option has changed.\n * @private\n */\n Series.prototype.hasOptionChanged = function (optionName) {\n var chart = this.chart,\n option = this.options[optionName],\n plotOptions = chart.options.plotOptions,\n oldOption = this.userOptions[optionName];\n if (oldOption) {\n return option !== oldOption;\n }\n return option !==\n pick(plotOptions &&\n plotOptions[this.type] &&\n plotOptions[this.type][optionName], plotOptions &&\n plotOptions.series &&\n plotOptions.series[optionName], option);\n };\n /**\n * Runs on mouse over the series graphical items.\n *\n * @function Highcharts.Series#onMouseOver\n * @emits Highcharts.Series#event:mouseOver\n */\n Series.prototype.onMouseOver = function () {\n var series = this,\n chart = series.chart,\n hoverSeries = chart.hoverSeries,\n pointer = chart.pointer;\n pointer.setHoverChartIndex();\n // set normal state to previous series\n if (hoverSeries && hoverSeries !== series) {\n hoverSeries.onMouseOut();\n }\n // trigger the event, but to save processing time,\n // only if defined\n if (series.options.events.mouseOver) {\n fireEvent(series, 'mouseOver');\n }\n // hover this\n series.setState('hover');\n /**\n * Contains the original hovered series.\n *\n * @name Highcharts.Chart#hoverSeries\n * @type {Highcharts.Series|null}\n */\n chart.hoverSeries = series;\n };\n /**\n * Runs on mouse out of the series graphical items.\n *\n * @function Highcharts.Series#onMouseOut\n *\n * @emits Highcharts.Series#event:mouseOut\n */\n Series.prototype.onMouseOut = function () {\n // trigger the event only if listeners exist\n var series = this,\n options = series.options,\n chart = series.chart,\n tooltip = chart.tooltip,\n hoverPoint = chart.hoverPoint;\n // #182, set to null before the mouseOut event fires\n chart.hoverSeries = null;\n // trigger mouse out on the point, which must be in this series\n if (hoverPoint) {\n hoverPoint.onMouseOut();\n }\n // fire the mouse out event\n if (series && options.events.mouseOut) {\n fireEvent(series, 'mouseOut');\n }\n // hide the tooltip\n if (tooltip &&\n !series.stickyTracking &&\n (!tooltip.shared || series.noSharedTooltip)) {\n tooltip.hide();\n }\n // Reset all inactive states\n chart.series.forEach(function (s) {\n s.setState('', true);\n });\n };\n /**\n * Set the state of the series. Called internally on mouse interaction\n * operations, but it can also be called directly to visually\n * highlight a series.\n *\n * @function Highcharts.Series#setState\n *\n * @param {Highcharts.SeriesStateValue|\"\"} [state]\n * The new state, can be either `'hover'`, `'inactive'`, `'select'`,\n * or `''` (an empty string), `'normal'` or `undefined` to set to\n * normal state.\n * @param {boolean} [inherit]\n * Determines if state should be inherited by points too.\n */\n Series.prototype.setState = function (state, inherit) {\n var series = this,\n options = series.options,\n graph = series.graph,\n inactiveOtherPoints = options.inactiveOtherPoints,\n stateOptions = options.states, \n // By default a quick animation to hover/inactive,\n // slower to un-hover\n stateAnimation = pick((stateOptions[state || 'normal'] &&\n stateOptions[state || 'normal'].animation),\n series.chart.options.chart.animation);\n var attribs,\n lineWidth = options.lineWidth,\n i = 0,\n opacity = options.opacity;\n state = state || '';\n if (series.state !== state) {\n // Toggle class names\n [\n series.group,\n series.markerGroup,\n series.dataLabelsGroup\n ].forEach(function (group) {\n if (group) {\n // Old state\n if (series.state) {\n group.removeClass('highcharts-series-' + series.state);\n }\n // New state\n if (state) {\n group.addClass('highcharts-series-' + state);\n }\n }\n });\n series.state = state;\n if (!series.chart.styledMode) {\n if (stateOptions[state] &&\n stateOptions[state].enabled === false) {\n return;\n }\n if (state) {\n lineWidth = (stateOptions[state].lineWidth ||\n lineWidth + (stateOptions[state].lineWidthPlus || 0)); // #4035\n opacity = pick(stateOptions[state].opacity, opacity);\n }\n if (graph && !graph.dashstyle) {\n attribs = {\n 'stroke-width': lineWidth\n };\n // Animate the graph stroke-width.\n graph.animate(attribs, stateAnimation);\n while (series['zone-graph-' + i]) {\n series['zone-graph-' + i].animate(attribs, stateAnimation);\n i = i + 1;\n }\n }\n // For some types (pie, networkgraph, sankey) opacity is\n // resolved on a point level\n if (!inactiveOtherPoints) {\n [\n series.group,\n series.markerGroup,\n series.dataLabelsGroup,\n series.labelBySeries\n ].forEach(function (group) {\n if (group) {\n group.animate({\n opacity: opacity\n }, stateAnimation);\n }\n });\n }\n }\n }\n // Don't loop over points on a series that doesn't apply inactive state\n // to siblings markers (e.g. line, column)\n if (inherit && inactiveOtherPoints && series.points) {\n series.setAllPointsToState(state || void 0);\n }\n };\n /**\n * Set the state for all points in the series.\n *\n * @function Highcharts.Series#setAllPointsToState\n *\n * @private\n *\n * @param {string} [state]\n * Can be either `hover` or undefined to set to normal state.\n */\n Series.prototype.setAllPointsToState = function (state) {\n this.points.forEach(function (point) {\n if (point.setState) {\n point.setState(state);\n }\n });\n };\n /**\n * Show or hide the series.\n *\n * @function Highcharts.Series#setVisible\n *\n * @param {boolean} [visible]\n * True to show the series, false to hide. If undefined, the visibility is\n * toggled.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw|chart.redraw()} after.\n *\n * @emits Highcharts.Series#event:hide\n * @emits Highcharts.Series#event:show\n */\n Series.prototype.setVisible = function (vis, redraw) {\n var series = this,\n chart = series.chart,\n legendItem = series.legendItem,\n ignoreHiddenSeries = chart.options.chart.ignoreHiddenSeries,\n oldVisibility = series.visible;\n // if called without an argument, toggle visibility\n series.visible =\n vis =\n series.options.visible =\n series.userOptions.visible =\n typeof vis === 'undefined' ? !oldVisibility : vis; // #5618\n var showOrHide = vis ? 'show' : 'hide';\n // show or hide elements\n [\n 'group',\n 'dataLabelsGroup',\n 'markerGroup',\n 'tracker',\n 'tt'\n ].forEach(function (key) {\n if (series[key]) {\n series[key][showOrHide]();\n }\n });\n // hide tooltip (#1361)\n if (chart.hoverSeries === series ||\n (chart.hoverPoint && chart.hoverPoint.series) === series) {\n series.onMouseOut();\n }\n if (legendItem) {\n chart.legend.colorizeItem(series, vis);\n }\n // rescale or adapt to resized chart\n series.isDirty = true;\n // in a stack, all other series are affected\n if (series.options.stacking) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.options.stacking && otherSeries.visible) {\n otherSeries.isDirty = true;\n }\n });\n }\n // show or hide linked series\n series.linkedSeries.forEach(function (otherSeries) {\n otherSeries.setVisible(vis, false);\n });\n if (ignoreHiddenSeries) {\n chart.isDirtyBox = true;\n }\n fireEvent(series, showOrHide);\n if (redraw !== false) {\n chart.redraw();\n }\n };\n /**\n * Show the series if hidden.\n *\n * @sample highcharts/members/series-hide/\n * Toggle visibility from a button\n *\n * @function Highcharts.Series#show\n * @emits Highcharts.Series#event:show\n */\n Series.prototype.show = function () {\n this.setVisible(true);\n };\n /**\n * Hide the series if visible. If the\n * [chart.ignoreHiddenSeries](https://api.highcharts.com/highcharts/chart.ignoreHiddenSeries)\n * option is true, the chart is redrawn without this series.\n *\n * @sample highcharts/members/series-hide/\n * Toggle visibility from a button\n *\n * @function Highcharts.Series#hide\n * @emits Highcharts.Series#event:hide\n */\n Series.prototype.hide = function () {\n this.setVisible(false);\n };\n /**\n * Select or unselect the series. This means its\n * {@link Highcharts.Series.selected|selected}\n * property is set, the checkbox in the legend is toggled and when selected,\n * the series is returned by the {@link Highcharts.Chart#getSelectedSeries}\n * function.\n *\n * @sample highcharts/members/series-select/\n * Select a series from a button\n *\n * @function Highcharts.Series#select\n *\n * @param {boolean} [selected]\n * True to select the series, false to unselect. If undefined, the selection\n * state is toggled.\n *\n * @emits Highcharts.Series#event:select\n * @emits Highcharts.Series#event:unselect\n */\n Series.prototype.select = function (selected) {\n var series = this;\n series.selected =\n selected =\n this.options.selected = (typeof selected === 'undefined' ?\n !series.selected :\n selected);\n if (series.checkbox) {\n series.checkbox.checked = selected;\n }\n fireEvent(series, selected ? 'select' : 'unselect');\n };\n /**\n * Checks if a tooltip should be shown for a given point.\n *\n * @private\n */\n Series.prototype.shouldShowTooltip = function (plotX, plotY, options) {\n if (options === void 0) { options = {}; }\n options.series = this;\n options.visiblePlotOnly = true;\n return this.chart.isInsidePlot(plotX, plotY, options);\n };\n Series.defaultOptions = SeriesDefaults;\n return Series;\n }());\n extend(Series.prototype, {\n axisTypes: ['xAxis', 'yAxis'],\n coll: 'series',\n colorCounter: 0,\n cropShoulder: 1,\n directTouch: false,\n drawLegendSymbol: LegendSymbol.drawLineMarker,\n isCartesian: true,\n kdAxisArray: ['clientX', 'plotY'],\n // each point's x and y values are stored in this.xData and this.yData:\n parallelArrays: ['x', 'y'],\n pointClass: Point,\n requireSorting: true,\n // requires the data to be sorted:\n sorted: true\n });\n /* *\n *\n * Registry\n *\n * */\n SeriesRegistry.series = Series;\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * This is a placeholder type of the possible series options for\n * [Highcharts](../highcharts/series), [Highcharts Stock](../highstock/series),\n * [Highmaps](../highmaps/series), and [Gantt](../gantt/series).\n *\n * In TypeScript is this dynamically generated to reference all possible types\n * of series options.\n *\n * @ignore-declaration\n * @typedef {Highcharts.SeriesOptions|Highcharts.Dictionary<*>} Highcharts.SeriesOptionsType\n */\n /**\n * Options for `dataSorting`.\n *\n * @interface Highcharts.DataSortingOptionsObject\n * @since 8.0.0\n */ /**\n * Enable or disable data sorting for the series.\n * @name Highcharts.DataSortingOptionsObject#enabled\n * @type {boolean|undefined}\n */ /**\n * Whether to allow matching points by name in an update.\n * @name Highcharts.DataSortingOptionsObject#matchByName\n * @type {boolean|undefined}\n */ /**\n * Determines what data value should be used to sort by.\n * @name Highcharts.DataSortingOptionsObject#sortKey\n * @type {string|undefined}\n */\n /**\n * Function callback when a series has been animated.\n *\n * @callback Highcharts.SeriesAfterAnimateCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesAfterAnimateEventObject} event\n * Event arguments.\n */\n /**\n * Event information regarding completed animation of a series.\n *\n * @interface Highcharts.SeriesAfterAnimateEventObject\n */ /**\n * Animated series.\n * @name Highcharts.SeriesAfterAnimateEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesAfterAnimateEventObject#type\n * @type {\"afterAnimate\"}\n */\n /**\n * Function callback when the checkbox next to the series' name in the legend is\n * clicked.\n *\n * @callback Highcharts.SeriesCheckboxClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesCheckboxClickEventObject} event\n * Event arguments.\n */\n /**\n * Event information regarding check of a series box.\n *\n * @interface Highcharts.SeriesCheckboxClickEventObject\n */ /**\n * Whether the box has been checked.\n * @name Highcharts.SeriesCheckboxClickEventObject#checked\n * @type {boolean}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#item\n * @type {Highcharts.Series}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesCheckboxClickEventObject#type\n * @type {\"checkboxClick\"}\n */\n /**\n * Function callback when a series is clicked. Return false to cancel toogle\n * actions.\n *\n * @callback Highcharts.SeriesClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesClickEventObject} event\n * Event arguments.\n */\n /**\n * Common information for a click event on a series.\n *\n * @interface Highcharts.SeriesClickEventObject\n * @extends global.Event\n */ /**\n * Nearest point on the graph.\n * @name Highcharts.SeriesClickEventObject#point\n * @type {Highcharts.Point}\n */\n /**\n * Gets fired when the series is hidden after chart generation time, either by\n * clicking the legend item or by calling `.hide()`.\n *\n * @callback Highcharts.SeriesHideCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin` of a line\n * graph.\n *\n * @typedef {\"butt\"|\"round\"|\"square\"|string} Highcharts.SeriesLinecapValue\n */\n /**\n * Gets fired when the legend item belonging to the series is clicked. The\n * default action is to toggle the visibility of the series. This can be\n * prevented by returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.SeriesLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the event.\n *\n * @interface Highcharts.SeriesLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.SeriesLegendItemClickEventObject#browserEvent\n * @type {global.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the series.\n * @name Highcharts.SeriesLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesCheckboxClickEventObject#type\n * @type {\"checkboxClick\"}\n */\n /**\n * Gets fired when the mouse leaves the graph.\n *\n * @callback Highcharts.SeriesMouseOutCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Gets fired when the mouse enters the graph.\n *\n * @callback Highcharts.SeriesMouseOverCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Translation and scale for the plot area of a series.\n *\n * @interface Highcharts.SeriesPlotBoxObject\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#scaleX\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#scaleY\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#translateX\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#translateY\n * @type {number}\n */\n /**\n * Gets fired when the series is shown after chart generation time, either by\n * clicking the legend item or by calling `.show()`.\n *\n * @callback Highcharts.SeriesShowCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * Possible key values for the series state options.\n *\n * @typedef {\"hover\"|\"inactive\"|\"normal\"|\"select\"} Highcharts.SeriesStateValue\n */\n ''; // detach doclets above\n /* *\n *\n * API Options\n *\n * */\n /**\n * Series options for specific data and the data itself. In TypeScript you\n * have to cast the series options to specific series types, to get all\n * possible options for a series.\n *\n * @example\n * // TypeScript example\n * Highcharts.chart('container', {\n * series: [{\n * color: '#06C',\n * data: [[0, 1], [2, 3]]\n * } as Highcharts.SeriesLineOptions ]\n * });\n *\n * @type {Array<*>}\n * @apioption series\n */\n /**\n * An id for the series. This can be used after render time to get a pointer\n * to the series object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-id/\n * Get series by id\n *\n * @type {string}\n * @since 1.2.0\n * @apioption series.id\n */\n /**\n * The index of the series in the chart, affecting the internal index in the\n * `chart.series` array, the visible Z index as well as the order in the\n * legend.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption series.index\n */\n /**\n * The sequential index of the series in the legend.\n *\n * @see [legend.reversed](#legend.reversed),\n * [yAxis.reversedStacks](#yAxis.reversedStacks)\n *\n * @sample {highcharts|highstock} highcharts/series/legendindex/\n * Legend in opposite order\n *\n * @type {number}\n * @apioption series.legendIndex\n */\n /**\n * The name of the series as shown in the legend, tooltip etc.\n *\n * @sample {highcharts} highcharts/series/name/\n * Series name\n * @sample {highmaps} maps/demo/category-map/\n * Series name\n *\n * @type {string}\n * @apioption series.name\n */\n /**\n * This option allows grouping series in a stacked chart. The stack option\n * can be a string or anything else, as long as the grouped series' stack\n * options match each other after conversion into a string.\n *\n * @sample {highcharts} highcharts/series/stack/\n * Stacked and grouped columns\n *\n * @type {number|string}\n * @since 2.1\n * @product highcharts highstock\n * @apioption series.stack\n */\n /**\n * The type of series, for example `line` or `column`. By default, the\n * series type is inherited from [chart.type](#chart.type), so unless the\n * chart is a combination of series types, there is no need to set it on the\n * series level.\n *\n * @sample {highcharts} highcharts/series/type/\n * Line and column in the same chart\n * @sample highcharts/series/type-dynamic/\n * Dynamic types with button selector\n * @sample {highmaps} maps/demo/mapline-mappoint/\n * Multiple types in the same map\n *\n * @type {string}\n * @apioption series.type\n */\n /**\n * When using dual or multiple x axes, this number defines which xAxis the\n * particular series is connected to. It refers to either the\n * {@link #xAxis.id|axis id}\n * or the index of the axis in the xAxis array, with 0 being the first.\n *\n * @type {number|string}\n * @default 0\n * @product highcharts highstock\n * @apioption series.xAxis\n */\n /**\n * When using dual or multiple y axes, this number defines which yAxis the\n * particular series is connected to. It refers to either the\n * {@link #yAxis.id|axis id}\n * or the index of the axis in the yAxis array, with 0 being the first.\n *\n * @sample {highcharts} highcharts/series/yaxis/\n * Apply the column series to the secondary Y axis\n *\n * @type {number|string}\n * @default 0\n * @product highcharts highstock\n * @apioption series.yAxis\n */\n /**\n * Define the visual z index of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-zindex-default/\n * With no z index, the series defined last are on top\n * @sample {highcharts} highcharts/plotoptions/series-zindex/\n * With a z index, the series with the highest z index is on top\n * @sample {highstock} highcharts/plotoptions/series-zindex-default/\n * With no z index, the series defined last are on top\n * @sample {highstock} highcharts/plotoptions/series-zindex/\n * With a z index, the series with the highest z index is on top\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.zIndex\n */\n ''; // include precedent doclets in transpilat\n\n return Series;\n });\n _registerModule(_modules, 'Extensions/ScrollablePlotArea.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Series/Series.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (A, Axis, Chart, Series, RendererRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * Highcharts feature to make the Y axis stay fixed when scrolling the chart\n * horizontally on mobile devices. Supports left and right side axes.\n */\n /*\n WIP on vertical scrollable plot area (#9378). To do:\n - Bottom axis positioning\n - Test with Gantt\n - Look for size optimizing the code\n - API and demos\n */\n var stop = A.stop;\n var addEvent = U.addEvent,\n createElement = U.createElement,\n merge = U.merge,\n pick = U.pick;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n addEvent(Chart, 'afterSetChartSize', function (e) {\n var scrollablePlotArea = this.options.chart.scrollablePlotArea,\n scrollableMinWidth = scrollablePlotArea && scrollablePlotArea.minWidth,\n scrollableMinHeight = scrollablePlotArea && scrollablePlotArea.minHeight,\n scrollablePixelsX,\n scrollablePixelsY,\n corrections;\n if (!this.renderer.forExport) {\n // The amount of pixels to scroll, the difference between chart\n // width and scrollable width\n if (scrollableMinWidth) {\n this.scrollablePixelsX = scrollablePixelsX = Math.max(0, scrollableMinWidth - this.chartWidth);\n if (scrollablePixelsX) {\n this.scrollablePlotBox = (this.renderer.scrollablePlotBox = merge(this.plotBox));\n this.plotBox.width = this.plotWidth += scrollablePixelsX;\n if (this.inverted) {\n this.clipBox.height += scrollablePixelsX;\n }\n else {\n this.clipBox.width += scrollablePixelsX;\n }\n corrections = {\n // Corrections for right side\n 1: { name: 'right', value: scrollablePixelsX }\n };\n }\n // Currently we can only do either X or Y\n }\n else if (scrollableMinHeight) {\n this.scrollablePixelsY = scrollablePixelsY = Math.max(0, scrollableMinHeight - this.chartHeight);\n if (scrollablePixelsY) {\n this.scrollablePlotBox = (this.renderer.scrollablePlotBox = merge(this.plotBox));\n this.plotBox.height = this.plotHeight += scrollablePixelsY;\n if (this.inverted) {\n this.clipBox.width += scrollablePixelsY;\n }\n else {\n this.clipBox.height += scrollablePixelsY;\n }\n corrections = {\n 2: { name: 'bottom', value: scrollablePixelsY }\n };\n }\n }\n if (corrections && !e.skipAxes) {\n this.axes.forEach(function (axis) {\n // For right and bottom axes, only fix the plot line length\n if (corrections[axis.side]) {\n // Get the plot lines right in getPlotLinePath,\n // temporarily set it to the adjusted plot width.\n axis.getPlotLinePath = function () {\n var marginName = corrections[axis.side].name,\n correctionValue = corrections[axis.side].value, \n // axis.right or axis.bottom\n margin = this[marginName],\n path;\n // Temporarily adjust\n this[marginName] = margin - correctionValue;\n path = Axis.prototype.getPlotLinePath.apply(this, arguments);\n // Reset\n this[marginName] = margin;\n return path;\n };\n }\n else {\n // Apply the corrected plotWidth\n axis.setAxisSize();\n axis.setAxisTranslation();\n }\n });\n }\n }\n });\n addEvent(Chart, 'render', function () {\n if (this.scrollablePixelsX || this.scrollablePixelsY) {\n if (this.setUpScrolling) {\n this.setUpScrolling();\n }\n this.applyFixed();\n }\n else if (this.fixedDiv) { // Has been in scrollable mode\n this.applyFixed();\n }\n });\n /**\n * @private\n * @function Highcharts.Chart#setUpScrolling\n * @return {void}\n */\n Chart.prototype.setUpScrolling = function () {\n var _this = this;\n var css = {\n WebkitOverflowScrolling: 'touch',\n overflowX: 'hidden',\n overflowY: 'hidden'\n };\n if (this.scrollablePixelsX) {\n css.overflowX = 'auto';\n }\n if (this.scrollablePixelsY) {\n css.overflowY = 'auto';\n }\n // Insert a container with position relative\n // that scrolling and fixed container renders to (#10555)\n this.scrollingParent = createElement('div', {\n className: 'highcharts-scrolling-parent'\n }, {\n position: 'relative'\n }, this.renderTo);\n // Add the necessary divs to provide scrolling\n this.scrollingContainer = createElement('div', {\n 'className': 'highcharts-scrolling'\n }, css, this.scrollingParent);\n // On scroll, reset the chart position because it applies to the scrolled\n // container\n addEvent(this.scrollingContainer, 'scroll', function () {\n if (_this.pointer) {\n delete _this.pointer.chartPosition;\n }\n });\n this.innerContainer = createElement('div', {\n 'className': 'highcharts-inner-container'\n }, null, this.scrollingContainer);\n // Now move the container inside\n this.innerContainer.appendChild(this.container);\n // Don't run again\n this.setUpScrolling = null;\n };\n /**\n * These elements are moved over to the fixed renderer and stay fixed when the\n * user scrolls the chart\n * @private\n */\n Chart.prototype.moveFixedElements = function () {\n var container = this.container,\n fixedRenderer = this.fixedRenderer,\n fixedSelectors = [\n '.highcharts-contextbutton',\n '.highcharts-credits',\n '.highcharts-legend',\n '.highcharts-legend-checkbox',\n '.highcharts-navigator-series',\n '.highcharts-navigator-xaxis',\n '.highcharts-navigator-yaxis',\n '.highcharts-navigator',\n '.highcharts-reset-zoom',\n '.highcharts-drillup-button',\n '.highcharts-scrollbar',\n '.highcharts-subtitle',\n '.highcharts-title'\n ],\n axisClass;\n if (this.scrollablePixelsX && !this.inverted) {\n axisClass = '.highcharts-yaxis';\n }\n else if (this.scrollablePixelsX && this.inverted) {\n axisClass = '.highcharts-xaxis';\n }\n else if (this.scrollablePixelsY && !this.inverted) {\n axisClass = '.highcharts-xaxis';\n }\n else if (this.scrollablePixelsY && this.inverted) {\n axisClass = '.highcharts-yaxis';\n }\n if (axisClass) {\n fixedSelectors.push(axisClass + \":not(.highcharts-radial-axis)\", axisClass + \"-labels:not(.highcharts-radial-axis-labels)\");\n }\n fixedSelectors.forEach(function (className) {\n [].forEach.call(container.querySelectorAll(className), function (elem) {\n (elem.namespaceURI === fixedRenderer.SVG_NS ?\n fixedRenderer.box :\n fixedRenderer.box.parentNode).appendChild(elem);\n elem.style.pointerEvents = 'auto';\n });\n });\n };\n /**\n * @private\n * @function Highcharts.Chart#applyFixed\n * @return {void}\n */\n Chart.prototype.applyFixed = function () {\n var firstTime = !this.fixedDiv,\n chartOptions = this.options.chart,\n scrollableOptions = chartOptions.scrollablePlotArea,\n Renderer = RendererRegistry.getRendererType();\n var fixedRenderer,\n scrollableWidth,\n scrollableHeight;\n // First render\n if (firstTime) {\n this.fixedDiv = createElement('div', {\n className: 'highcharts-fixed'\n }, {\n position: 'absolute',\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: (chartOptions.style && chartOptions.style.zIndex || 0) + 2,\n top: 0\n }, null, true);\n if (this.scrollingContainer) {\n this.scrollingContainer.parentNode.insertBefore(this.fixedDiv, this.scrollingContainer);\n }\n this.renderTo.style.overflow = 'visible';\n this.fixedRenderer = fixedRenderer = new Renderer(this.fixedDiv, this.chartWidth, this.chartHeight, this.options.chart.style);\n // Mask\n this.scrollableMask = fixedRenderer\n .path()\n .attr({\n fill: this.options.chart.backgroundColor || '#fff',\n 'fill-opacity': pick(scrollableOptions.opacity, 0.85),\n zIndex: -1\n })\n .addClass('highcharts-scrollable-mask')\n .add();\n addEvent(this, 'afterShowResetZoom', this.moveFixedElements);\n addEvent(this, 'afterDrilldown', this.moveFixedElements);\n addEvent(this, 'afterLayOutTitles', this.moveFixedElements);\n }\n else {\n // Set the size of the fixed renderer to the visible width\n this.fixedRenderer.setSize(this.chartWidth, this.chartHeight);\n }\n if (this.scrollableDirty || firstTime) {\n this.scrollableDirty = false;\n this.moveFixedElements();\n }\n // Increase the size of the scrollable renderer and background\n scrollableWidth = this.chartWidth + (this.scrollablePixelsX || 0);\n scrollableHeight = this.chartHeight + (this.scrollablePixelsY || 0);\n stop(this.container);\n this.container.style.width = scrollableWidth + 'px';\n this.container.style.height = scrollableHeight + 'px';\n this.renderer.boxWrapper.attr({\n width: scrollableWidth,\n height: scrollableHeight,\n viewBox: [0, 0, scrollableWidth, scrollableHeight].join(' ')\n });\n this.chartBackground.attr({\n width: scrollableWidth,\n height: scrollableHeight\n });\n this.scrollingContainer.style.height = this.chartHeight + 'px';\n // Set scroll position\n if (firstTime) {\n if (scrollableOptions.scrollPositionX) {\n this.scrollingContainer.scrollLeft =\n this.scrollablePixelsX *\n scrollableOptions.scrollPositionX;\n }\n if (scrollableOptions.scrollPositionY) {\n this.scrollingContainer.scrollTop =\n this.scrollablePixelsY *\n scrollableOptions.scrollPositionY;\n }\n }\n // Mask behind the left and right side\n var axisOffset = this.axisOffset,\n maskTop = this.plotTop - axisOffset[0] - 1,\n maskLeft = this.plotLeft - axisOffset[3] - 1,\n maskBottom = this.plotTop + this.plotHeight + axisOffset[2] + 1,\n maskRight = this.plotLeft + this.plotWidth + axisOffset[1] + 1,\n maskPlotRight = this.plotLeft + this.plotWidth -\n (this.scrollablePixelsX || 0),\n maskPlotBottom = this.plotTop + this.plotHeight -\n (this.scrollablePixelsY || 0),\n d;\n if (this.scrollablePixelsX) {\n d = [\n // Left side\n ['M', 0, maskTop],\n ['L', this.plotLeft - 1, maskTop],\n ['L', this.plotLeft - 1, maskBottom],\n ['L', 0, maskBottom],\n ['Z'],\n // Right side\n ['M', maskPlotRight, maskTop],\n ['L', this.chartWidth, maskTop],\n ['L', this.chartWidth, maskBottom],\n ['L', maskPlotRight, maskBottom],\n ['Z']\n ];\n }\n else if (this.scrollablePixelsY) {\n d = [\n // Top side\n ['M', maskLeft, 0],\n ['L', maskLeft, this.plotTop - 1],\n ['L', maskRight, this.plotTop - 1],\n ['L', maskRight, 0],\n ['Z'],\n // Bottom side\n ['M', maskLeft, maskPlotBottom],\n ['L', maskLeft, this.chartHeight],\n ['L', maskRight, this.chartHeight],\n ['L', maskRight, maskPlotBottom],\n ['Z']\n ];\n }\n else {\n d = [['M', 0, 0]];\n }\n if (this.redrawTrigger !== 'adjustHeight') {\n this.scrollableMask.attr({ d: d });\n }\n };\n addEvent(Axis, 'afterInit', function () {\n this.chart.scrollableDirty = true;\n });\n addEvent(Series, 'show', function () {\n this.chart.scrollableDirty = true;\n });\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Options for a scrollable plot area. This feature provides a minimum size for\n * the plot area of the chart. If the size gets smaller than this, typically\n * on mobile devices, a native browser scrollbar is presented. This scrollbar\n * provides smooth scrolling for the contents of the plot area, whereas the\n * title, legend and unaffected axes are fixed.\n *\n * Since v7.1.2, a scrollable plot area can be defined for either horizontal or\n * vertical scrolling, depending on whether the `minWidth` or `minHeight`\n * option is set.\n *\n * @sample highcharts/chart/scrollable-plotarea\n * Scrollable plot area\n * @sample highcharts/chart/scrollable-plotarea-vertical\n * Vertically scrollable plot area\n * @sample {gantt} highcharts/chart/scrollable-plotarea-vertical\n * Gantt chart with vertically scrollable plot area\n *\n * @since 6.1.0\n * @product highcharts gantt\n * @apioption chart.scrollablePlotArea\n */\n /**\n * The minimum height for the plot area. If it gets smaller than this, the plot\n * area will become scrollable.\n *\n * @type {number}\n * @apioption chart.scrollablePlotArea.minHeight\n */\n /**\n * The minimum width for the plot area. If it gets smaller than this, the plot\n * area will become scrollable.\n *\n * @type {number}\n * @apioption chart.scrollablePlotArea.minWidth\n */\n /**\n * The initial scrolling position of the scrollable plot area. Ranges from 0 to\n * 1, where 0 aligns the plot area to the left and 1 aligns it to the right.\n * Typically we would use 1 if the chart has right aligned Y axes.\n *\n * @type {number}\n * @apioption chart.scrollablePlotArea.scrollPositionX\n */\n /**\n * The initial scrolling position of the scrollable plot area. Ranges from 0 to\n * 1, where 0 aligns the plot area to the top and 1 aligns it to the bottom.\n *\n * @type {number}\n * @apioption chart.scrollablePlotArea.scrollPositionY\n */\n /**\n * The opacity of mask applied on one of the sides of the plot\n * area.\n *\n * @sample {highcharts} highcharts/chart/scrollable-plotarea-opacity\n * Disabled opacity for the mask\n *\n * @type {number}\n * @default 0.85\n * @since 7.1.1\n * @apioption chart.scrollablePlotArea.opacity\n */\n (''); // keep doclets above in transpiled file\n\n });\n _registerModule(_modules, 'Core/Axis/StackingAxis.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Utilities.js']], function (A, Axis, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var getDeferredAnimation = A.getDeferredAnimation;\n var addEvent = U.addEvent,\n destroyObjectProperties = U.destroyObjectProperties,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n objectEach = U.objectEach;\n /* *\n *\n * Composition\n *\n * */\n /**\n * @private\n */\n var StackingAxis;\n (function (StackingAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Extends axis with stacking support.\n * @private\n */\n function compose(AxisClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n addEvent(AxisClass, 'init', onInit);\n addEvent(AxisClass, 'destroy', onDestroy);\n }\n return AxisClass;\n }\n StackingAxis.compose = compose;\n /**\n * @private\n */\n function onDestroy() {\n var stacking = this.stacking;\n if (!stacking) {\n return;\n }\n var stacks = stacking.stacks;\n // Destroy each stack total\n objectEach(stacks, function (stack, stackKey) {\n destroyObjectProperties(stack);\n stacks[stackKey] = null;\n });\n if (stacking &&\n stacking.stackTotalGroup) {\n stacking.stackTotalGroup.destroy();\n }\n }\n /**\n * @private\n */\n function onInit() {\n var axis = this;\n if (!axis.stacking) {\n axis.stacking = new Additions(axis);\n }\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * Adds stacking support to axes.\n * @private\n * @class\n */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Additions(axis) {\n this.oldStacks = {};\n this.stacks = {};\n this.stacksTouched = 0;\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Build the stacks from top down\n * @private\n */\n Additions.prototype.buildStacks = function () {\n var stacking = this;\n var axis = stacking.axis;\n var axisSeries = axis.series;\n var reversedStacks = axis.options.reversedStacks;\n var len = axisSeries.length;\n var actualSeries,\n i;\n if (!axis.isXAxis) {\n stacking.usePercentage = false;\n i = len;\n while (i--) {\n actualSeries = axisSeries[reversedStacks ? i : len - i - 1];\n actualSeries.setStackedPoints();\n actualSeries.setGroupedPoints();\n }\n // Loop up again to compute percent and stream stack\n for (i = 0; i < len; i++) {\n axisSeries[i].modifyStacks();\n }\n fireEvent(axis, 'afterBuildStacks');\n }\n };\n /**\n * @private\n */\n Additions.prototype.cleanStacks = function () {\n var stacking = this,\n axis = stacking.axis;\n var stacks;\n if (!axis.isXAxis) {\n if (stacking.oldStacks) {\n stacks = stacking.stacks = stacking.oldStacks;\n }\n // reset stacks\n objectEach(stacks, function (type) {\n objectEach(type, function (stack) {\n stack.cumulative = stack.total;\n });\n });\n }\n };\n /**\n * Set all the stacks to initial states and destroy unused ones.\n * @private\n */\n Additions.prototype.resetStacks = function () {\n var stacking = this,\n axis = stacking.axis,\n stacks = stacking.stacks;\n if (!axis.isXAxis) {\n objectEach(stacks, function (type) {\n objectEach(type, function (stack, x) {\n // Clean up memory after point deletion (#1044, #4320)\n if (isNumber(stack.touched) &&\n stack.touched < stacking.stacksTouched) {\n stack.destroy();\n delete type[x];\n // Reset stacks\n }\n else {\n stack.total = null;\n stack.cumulative = null;\n }\n });\n });\n }\n };\n /**\n * @private\n */\n Additions.prototype.renderStackTotals = function () {\n var stacking = this,\n axis = stacking.axis,\n chart = axis.chart,\n renderer = chart.renderer,\n stacks = stacking.stacks,\n stackLabelsAnim = axis.options.stackLabels &&\n axis.options.stackLabels.animation,\n animationConfig = getDeferredAnimation(chart,\n stackLabelsAnim || false),\n stackTotalGroup = stacking.stackTotalGroup = (stacking.stackTotalGroup ||\n renderer\n .g('stack-labels')\n .attr({\n visibility: 'visible',\n zIndex: 6,\n opacity: 0\n })\n .add());\n // plotLeft/Top will change when y axis gets wider so we need to\n // translate the stackTotalGroup at every render call. See bug #506\n // and #516\n stackTotalGroup.translate(chart.plotLeft, chart.plotTop);\n // Render each stack total\n objectEach(stacks, function (type) {\n objectEach(type, function (stack) {\n stack.render(stackTotalGroup);\n });\n });\n stackTotalGroup.animate({\n opacity: 1\n }, animationConfig);\n };\n return Additions;\n }());\n StackingAxis.Additions = Additions;\n })(StackingAxis || (StackingAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return StackingAxis;\n });\n _registerModule(_modules, 'Extensions/Stacking.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Chart/Chart.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Series/Series.js'], _modules['Core/Axis/StackingAxis.js'], _modules['Core/Utilities.js']], function (Axis, Chart, F, H, Series, StackingAxis, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var format = F.format;\n var correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n isArray = U.isArray,\n isNumber = U.isNumber,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The class for stacks. Each stack, on a specific X value and either negative\n * or positive, has its own stack item.\n *\n * @private\n * @class\n * @name Highcharts.StackItem\n * @param {Highcharts.Axis} axis\n * @param {Highcharts.YAxisStackLabelsOptions} options\n * @param {boolean} isNegative\n * @param {number} x\n * @param {Highcharts.OptionsStackingValue} [stackOption]\n */\n var StackItem = /** @class */ (function () {\n function StackItem(axis, options, isNegative, x, stackOption) {\n var inverted = axis.chart.inverted;\n this.axis = axis;\n // Tells if the stack is negative\n this.isNegative = isNegative;\n // Save the options to be able to style the label\n this.options = options = options || {};\n // Save the x value to be able to position the label later\n this.x = x;\n // Initialize total value\n this.total = null;\n // This will keep each points' extremes stored by series.index and point\n // index\n this.points = {};\n this.hasValidPoints = false;\n // Save the stack option on the series configuration object,\n // and whether to treat it as percent\n this.stack = stackOption;\n this.leftCliff = 0;\n this.rightCliff = 0;\n // The align options and text align varies on whether the stack is\n // negative and if the chart is inverted or not.\n // First test the user supplied value, then use the dynamic.\n this.alignOptions = {\n align: options.align ||\n (inverted ? (isNegative ? 'left' : 'right') : 'center'),\n verticalAlign: options.verticalAlign ||\n (inverted ? 'middle' : (isNegative ? 'bottom' : 'top')),\n y: options.y,\n x: options.x\n };\n this.textAlign = options.textAlign ||\n (inverted ? (isNegative ? 'right' : 'left') : 'center');\n }\n /**\n * @private\n * @function Highcharts.StackItem#destroy\n */\n StackItem.prototype.destroy = function () {\n destroyObjectProperties(this, this.axis);\n };\n /**\n * Renders the stack total label and adds it to the stack label group.\n *\n * @private\n * @function Highcharts.StackItem#render\n * @param {Highcharts.SVGElement} group\n */\n StackItem.prototype.render = function (group) {\n var chart = this.axis.chart,\n options = this.options,\n formatOption = options.format,\n attr = {},\n str = formatOption ? // format the text in the label\n format(formatOption,\n this,\n chart) :\n options.formatter.call(this);\n // Change the text to reflect the new total and set visibility to hidden\n // in case the serie is hidden\n if (this.label) {\n this.label.attr({ text: str, visibility: 'hidden' });\n }\n else {\n // Create new label\n this.label = chart.renderer\n .label(str, null, null, options.shape, null, null, options.useHTML, false, 'stack-labels');\n attr = {\n r: options.borderRadius || 0,\n text: str,\n rotation: options.rotation,\n // set default padding to 5 as it is in datalabels #12308\n padding: pick(options.padding, 5),\n visibility: 'hidden' // hidden until setOffset is called\n };\n if (!chart.styledMode) {\n attr.fill = options.backgroundColor;\n attr.stroke = options.borderColor;\n attr['stroke-width'] = options.borderWidth;\n this.label.css(options.style);\n }\n this.label.attr(attr);\n if (!this.label.added) {\n this.label.add(group); // add to the labels-group\n }\n }\n // Rank it higher than data labels (#8742)\n this.label.labelrank = chart.plotSizeY;\n };\n /**\n * Sets the offset that the stack has from the x value and repositions the\n * label.\n *\n * @private\n * @function Highcarts.StackItem#setOffset\n * @param {number} xOffset\n * @param {number} xWidth\n * @param {number} [boxBottom]\n * @param {number} [boxTop]\n * @param {number} [defaultX]\n */\n StackItem.prototype.setOffset = function (xOffset, xWidth, boxBottom, boxTop, defaultX) {\n var stackItem = this,\n axis = stackItem.axis,\n chart = axis.chart, \n // stack value translated mapped to chart coordinates\n y = axis.translate(axis.stacking.usePercentage ?\n 100 :\n (boxTop ?\n boxTop :\n stackItem.total), 0, 0, 0, 1),\n yZero = axis.translate(boxBottom ? boxBottom : 0), // stack origin\n // stack height:\n h = defined(y) && Math.abs(y - yZero), \n // x position:\n x = pick(defaultX,\n chart.xAxis[0].translate(stackItem.x)) +\n xOffset,\n stackBox = defined(y) && stackItem.getStackBox(chart,\n stackItem,\n x,\n y,\n xWidth,\n h,\n axis),\n label = stackItem.label,\n isNegative = stackItem.isNegative,\n isJustify = pick(stackItem.options.overflow, 'justify') === 'justify',\n textAlign = stackItem.textAlign,\n visible;\n if (label && stackBox) {\n var bBox = label.getBBox(),\n padding = label.padding,\n boxOffsetX = void 0,\n boxOffsetY = void 0;\n if (textAlign === 'left') {\n boxOffsetX = chart.inverted ? -padding : padding;\n }\n else if (textAlign === 'right') {\n boxOffsetX = bBox.width;\n }\n else {\n if (chart.inverted && textAlign === 'center') {\n boxOffsetX = bBox.width / 2;\n }\n else {\n boxOffsetX = chart.inverted ?\n (isNegative ? bBox.width + padding : -padding) :\n bBox.width / 2;\n }\n }\n boxOffsetY = chart.inverted ?\n bBox.height / 2 : (isNegative ? -padding : bBox.height);\n // Reset alignOptions property after justify #12337\n stackItem.alignOptions.x = pick(stackItem.options.x, 0);\n stackItem.alignOptions.y = pick(stackItem.options.y, 0);\n // Set the stackBox position\n stackBox.x -= boxOffsetX;\n stackBox.y -= boxOffsetY;\n // Align the label to the box\n label.align(stackItem.alignOptions, null, stackBox);\n // Check if label is inside the plotArea #12294\n if (chart.isInsidePlot(label.alignAttr.x + boxOffsetX - stackItem.alignOptions.x, label.alignAttr.y + boxOffsetY - stackItem.alignOptions.y)) {\n label.show();\n }\n else {\n // Move label away to avoid the overlapping issues\n label.alignAttr.y = -9999;\n isJustify = false;\n }\n if (isJustify) {\n // Justify stackLabel into the stackBox\n Series.prototype.justifyDataLabel.call(this.axis, label, stackItem.alignOptions, label.alignAttr, bBox, stackBox);\n }\n label.attr({\n x: label.alignAttr.x,\n y: label.alignAttr.y\n });\n if (pick(!isJustify && stackItem.options.crop, true)) {\n visible =\n isNumber(label.x) &&\n isNumber(label.y) &&\n chart.isInsidePlot(label.x - padding + label.width, label.y) &&\n chart.isInsidePlot(label.x + padding, label.y);\n if (!visible) {\n label.hide();\n }\n }\n }\n };\n /**\n * @private\n * @function Highcharts.StackItem#getStackBox\n */\n StackItem.prototype.getStackBox = function (chart, stackItem, x, y, xWidth, h, axis) {\n var reversed = stackItem.axis.reversed,\n inverted = chart.inverted,\n axisPos = axis.height + axis.pos -\n (inverted ? chart.plotLeft : chart.plotTop),\n neg = (stackItem.isNegative && !reversed) ||\n (!stackItem.isNegative && reversed); // #4056\n return {\n x: inverted ?\n (neg ? y - axis.right : y - h + axis.pos - chart.plotLeft) :\n x + chart.xAxis[0].transB - chart.plotLeft,\n y: inverted ?\n axis.height - x - xWidth :\n (neg ?\n (axisPos - y - h) :\n axisPos - y),\n width: inverted ? h : xWidth,\n height: inverted ? xWidth : h\n };\n };\n return StackItem;\n }());\n /**\n * Generate stacks for each series and calculate stacks total values\n *\n * @private\n * @function Highcharts.Chart#getStacks\n */\n Chart.prototype.getStacks = function () {\n var chart = this,\n inverted = chart.inverted;\n // reset stacks for each yAxis\n chart.yAxis.forEach(function (axis) {\n if (axis.stacking && axis.stacking.stacks && axis.hasVisibleSeries) {\n axis.stacking.oldStacks = axis.stacking.stacks;\n }\n });\n chart.series.forEach(function (series) {\n var xAxisOptions = series.xAxis && series.xAxis.options || {};\n if (series.options.stacking &&\n (series.visible === true ||\n chart.options.chart.ignoreHiddenSeries === false)) {\n series.stackKey = [\n series.type,\n pick(series.options.stack, ''),\n inverted ? xAxisOptions.top : xAxisOptions.left,\n inverted ? xAxisOptions.height : xAxisOptions.width\n ].join(',');\n }\n });\n };\n // Stacking methods defined on the Axis prototype\n StackingAxis.compose(Axis);\n // Stacking methods defined for Series prototype\n /**\n * Set grouped points in a stack-like object. When `centerInCategory` is true,\n * and `stacking` is not enabled, we need a pseudo (horizontal) stack in order\n * to handle grouping of points within the same category.\n *\n * @private\n * @function Highcharts.Series#setStackedPoints\n * @return {void}\n */\n Series.prototype.setGroupedPoints = function () {\n var stacking = this.yAxis.stacking;\n if (this.options.centerInCategory &&\n (this.is('column') || this.is('columnrange')) &&\n // With stacking enabled, we already have stacks that we can compute\n // from\n !this.options.stacking &&\n // With only one series, we don't need to consider centerInCategory\n this.chart.series.length > 1) {\n Series.prototype.setStackedPoints.call(this, 'group');\n // After updating, if we now have proper stacks, we must delete the group\n // pseudo stacks (#14986)\n }\n else if (stacking) {\n objectEach(stacking.stacks, function (type, key) {\n if (key.slice(-5) === 'group') {\n objectEach(type, function (stack) { return stack.destroy(); });\n delete stacking.stacks[key];\n }\n });\n }\n };\n /**\n * Adds series' points value to corresponding stack\n *\n * @private\n * @function Highcharts.Series#setStackedPoints\n */\n Series.prototype.setStackedPoints = function (stackingParam) {\n var stacking = stackingParam || this.options.stacking;\n if (!stacking || (this.visible !== true &&\n this.chart.options.chart.ignoreHiddenSeries !== false)) {\n return;\n }\n var series = this, xData = series.processedXData, yData = series.processedYData, stackedYData = [], yDataLength = yData.length, seriesOptions = series.options, threshold = seriesOptions.threshold, stackThreshold = pick(seriesOptions.startFromThreshold && threshold, 0), stackOption = seriesOptions.stack, stackKey = stackingParam ? series.type + \",\" + stacking : series.stackKey, negKey = '-' + stackKey, negStacks = series.negStacks, yAxis = series.yAxis, stacks = yAxis.stacking.stacks, oldStacks = yAxis.stacking.oldStacks, stackIndicator, isNegative, stack, other, key, pointKey, i, x, y;\n yAxis.stacking.stacksTouched += 1;\n // loop over the non-null y values and read them into a local array\n for (i = 0; i < yDataLength; i++) {\n x = xData[i];\n y = yData[i];\n stackIndicator = series.getStackIndicator(stackIndicator, x, series.index);\n pointKey = stackIndicator.key;\n // Read stacked values into a stack based on the x value,\n // the sign of y and the stack key. Stacking is also handled for null\n // values (#739)\n isNegative = negStacks && y < (stackThreshold ? 0 : threshold);\n key = isNegative ? negKey : stackKey;\n // Create empty object for this stack if it doesn't exist yet\n if (!stacks[key]) {\n stacks[key] = {};\n }\n // Initialize StackItem for this x\n if (!stacks[key][x]) {\n if (oldStacks[key] &&\n oldStacks[key][x]) {\n stacks[key][x] = oldStacks[key][x];\n stacks[key][x].total = null;\n }\n else {\n stacks[key][x] = new StackItem(yAxis, yAxis.options.stackLabels, isNegative, x, stackOption);\n }\n }\n // If the StackItem doesn't exist, create it first\n stack = stacks[key][x];\n if (y !== null) {\n stack.points[pointKey] = stack.points[series.index] =\n [pick(stack.cumulative, stackThreshold)];\n // Record the base of the stack\n if (!defined(stack.cumulative)) {\n stack.base = pointKey;\n }\n stack.touched = yAxis.stacking.stacksTouched;\n // In area charts, if there are multiple points on the same X value,\n // let the area fill the full span of those points\n if (stackIndicator.index > 0 && series.singleStacks === false) {\n stack.points[pointKey][0] =\n stack.points[series.index + ',' + x + ',0'][0];\n }\n // When updating to null, reset the point stack (#7493)\n }\n else {\n stack.points[pointKey] = stack.points[series.index] =\n null;\n }\n // Add value to the stack total\n if (stacking === 'percent') {\n // Percent stacked column, totals are the same for the positive and\n // negative stacks\n other = isNegative ? stackKey : negKey;\n if (negStacks && stacks[other] && stacks[other][x]) {\n other = stacks[other][x];\n stack.total = other.total =\n Math.max(other.total, stack.total) +\n Math.abs(y) ||\n 0;\n // Percent stacked areas\n }\n else {\n stack.total =\n correctFloat(stack.total + (Math.abs(y) || 0));\n }\n }\n else if (stacking === 'group') {\n if (isArray(y)) {\n y = y[0];\n }\n // In this stack, the total is the number of valid points\n if (y !== null) {\n stack.total = (stack.total || 0) + 1;\n }\n }\n else {\n stack.total = correctFloat(stack.total + (y || 0));\n }\n if (stacking === 'group') {\n // This point's index within the stack, pushed to stack.points[1]\n stack.cumulative = (stack.total || 1) - 1;\n }\n else {\n stack.cumulative =\n pick(stack.cumulative, stackThreshold) + (y || 0);\n }\n if (y !== null) {\n stack.points[pointKey].push(stack.cumulative);\n stackedYData[i] = stack.cumulative;\n stack.hasValidPoints = true;\n }\n }\n if (stacking === 'percent') {\n yAxis.stacking.usePercentage = true;\n }\n if (stacking !== 'group') {\n this.stackedYData = stackedYData; // To be used in getExtremes\n }\n // Reset old stacks\n yAxis.stacking.oldStacks = {};\n };\n /**\n * Iterate over all stacks and compute the absolute values to percent\n *\n * @private\n * @function Highcharts.Series#modifyStacks\n */\n Series.prototype.modifyStacks = function () {\n var series = this,\n yAxis = series.yAxis,\n stackKey = series.stackKey,\n stacks = yAxis.stacking.stacks,\n processedXData = series.processedXData,\n stackIndicator,\n stacking = series.options.stacking;\n if (series[stacking + 'Stacker']) { // Modifier function exists\n [stackKey, '-' + stackKey].forEach(function (key) {\n var i = processedXData.length,\n x,\n stack,\n pointExtremes;\n while (i--) {\n x = processedXData[i];\n stackIndicator = series.getStackIndicator(stackIndicator, x, series.index, key);\n stack = stacks[key] && stacks[key][x];\n pointExtremes =\n stack && stack.points[stackIndicator.key];\n if (pointExtremes) {\n series[stacking + 'Stacker'](pointExtremes, stack, i);\n }\n }\n });\n }\n };\n /**\n * Modifier function for percent stacks. Blows up the stack to 100%.\n *\n * @private\n * @function Highcharts.Series#percentStacker\n */\n Series.prototype.percentStacker = function (pointExtremes, stack, i) {\n var totalFactor = stack.total ? 100 / stack.total : 0;\n // Y bottom value\n pointExtremes[0] = correctFloat(pointExtremes[0] * totalFactor);\n // Y value\n pointExtremes[1] = correctFloat(pointExtremes[1] * totalFactor);\n this.stackedYData[i] = pointExtremes[1];\n };\n /**\n * Get stack indicator, according to it's x-value, to determine points with the\n * same x-value\n *\n * @private\n * @function Highcharts.Series#getStackIndicator\n */\n Series.prototype.getStackIndicator = function (stackIndicator, x, index, key) {\n // Update stack indicator, when:\n // first point in a stack || x changed || stack type (negative vs positive)\n // changed:\n if (!defined(stackIndicator) ||\n stackIndicator.x !== x ||\n (key && stackIndicator.key !== key)) {\n stackIndicator = {\n x: x,\n index: 0,\n key: key\n };\n }\n else {\n (stackIndicator).index++;\n }\n stackIndicator.key =\n [index, x, stackIndicator.index].join(',');\n return stackIndicator;\n };\n H.StackItem = StackItem; // @todo -> master\n /* *\n *\n * Default Export\n *\n * */\n /**\n * Stack of data points\n *\n * @product highcharts\n *\n * @interface Highcharts.StackItemObject\n */ /**\n * Alignment settings\n * @name Highcharts.StackItemObject#alignOptions\n * @type {Highcharts.AlignObject}\n */ /**\n * Related axis\n * @name Highcharts.StackItemObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Cumulative value of the stacked data points\n * @name Highcharts.StackItemObject#cumulative\n * @type {number}\n */ /**\n * True if on the negative side\n * @name Highcharts.StackItemObject#isNegative\n * @type {boolean}\n */ /**\n * Related SVG element\n * @name Highcharts.StackItemObject#label\n * @type {Highcharts.SVGElement}\n */ /**\n * Related stack options\n * @name Highcharts.StackItemObject#options\n * @type {Highcharts.YAxisStackLabelsOptions}\n */ /**\n * Total value of the stacked data points\n * @name Highcharts.StackItemObject#total\n * @type {number}\n */ /**\n * Shared x value of the stack\n * @name Highcharts.StackItemObject#x\n * @type {number}\n */\n ''; // keeps doclets above in JS file\n\n return H.StackItem;\n });\n _registerModule(_modules, 'Series/Line/LineSeries.js', [_modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Series, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var defined = U.defined,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * The line series is the base type and is therefor the series base prototype.\n *\n * @private\n */\n var LineSeries = /** @class */ (function (_super) {\n __extends(LineSeries, _super);\n function LineSeries() {\n /* *\n *\n * Static Functions\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Draw the graph. Called internally when rendering line-like series\n * types. The first time it generates the `series.graph` item and\n * optionally other series-wide items like `series.area` for area\n * charts. On subsequent calls these items are updated with new\n * positions and attributes.\n *\n * @function Highcharts.Series#drawGraph\n */\n LineSeries.prototype.drawGraph = function () {\n var series = this,\n options = this.options,\n graphPath = (this.gappedPath || this.getGraphPath).call(this),\n styledMode = this.chart.styledMode;\n var props = [[\n 'graph',\n 'highcharts-graph'\n ]];\n // Presentational properties\n if (!styledMode) {\n props[0].push((options.lineColor ||\n this.color ||\n \"#cccccc\" /* neutralColor20 */ // when colorByPoint = true\n ), options.dashStyle);\n }\n props = series.getZonesGraphs(props);\n // Draw the graph\n props.forEach(function (prop, i) {\n var graphKey = prop[0];\n var attribs,\n graph = series[graphKey];\n var verb = graph ? 'animate' : 'attr';\n if (graph) {\n graph.endX = series.preventGraphAnimation ?\n null :\n graphPath.xMap;\n graph.animate({ d: graphPath });\n }\n else if (graphPath.length) { // #1487\n /**\n * SVG element of area-based charts. Can be used for styling\n * purposes. If zones are configured, this element will be\n * hidden and replaced by multiple zone areas, accessible\n * via `series['zone-area-x']` (where x is a number,\n * starting with 0).\n *\n * @name Highcharts.Series#area\n * @type {Highcharts.SVGElement|undefined}\n */\n /**\n * SVG element of line-based charts. Can be used for styling\n * purposes. If zones are configured, this element will be\n * hidden and replaced by multiple zone lines, accessible\n * via `series['zone-graph-x']` (where x is a number,\n * starting with 0).\n *\n * @name Highcharts.Series#graph\n * @type {Highcharts.SVGElement|undefined}\n */\n series[graphKey] = graph = series.chart.renderer\n .path(graphPath)\n .addClass(prop[1])\n .attr({ zIndex: 1 }) // #1069\n .add(series.group);\n }\n if (graph && !styledMode) {\n attribs = {\n 'stroke': prop[2],\n 'stroke-width': options.lineWidth,\n // Polygon series use filled graph\n 'fill': (series.fillGraph && series.color) || 'none'\n };\n if (prop[3]) {\n attribs.dashstyle = prop[3];\n }\n else if (options.linecap !== 'square') {\n attribs['stroke-linecap'] =\n attribs['stroke-linejoin'] = 'round';\n }\n graph[verb](attribs)\n // Add shadow to normal series (0) or to first\n // zone (1) #3932\n .shadow((i < 2) && options.shadow);\n }\n // Helpers for animation\n if (graph) {\n graph.startX = graphPath.xMap;\n graph.isArea = graphPath.isArea; // For arearange animation\n }\n });\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get the graph path.\n *\n * @private\n */\n LineSeries.prototype.getGraphPath = function (points, nullsAsZeroes, connectCliffs) {\n var series = this,\n options = series.options,\n graphPath = [],\n xMap = [];\n var gap,\n step = options.step;\n points = points || series.points;\n // Bottom of a stack is reversed\n var reversed = points.reversed;\n if (reversed) {\n points.reverse();\n }\n // Reverse the steps (#5004)\n step = {\n right: 1,\n center: 2\n }[step] || (step && 3);\n if (step && reversed) {\n step = 4 - step;\n }\n // Remove invalid points, especially in spline (#5015)\n points = this.getValidPoints(points, false, !(options.connectNulls && !nullsAsZeroes && !connectCliffs));\n // Build the line\n points.forEach(function (point, i) {\n var plotX = point.plotX,\n plotY = point.plotY,\n lastPoint = points[i - 1];\n // the path to this point from the previous\n var pathToPoint;\n if ((point.leftCliff || (lastPoint && lastPoint.rightCliff)) &&\n !connectCliffs) {\n gap = true; // ... and continue\n }\n // Line series, nullsAsZeroes is not handled\n if (point.isNull && !defined(nullsAsZeroes) && i > 0) {\n gap = !options.connectNulls;\n // Area series, nullsAsZeroes is set\n }\n else if (point.isNull && !nullsAsZeroes) {\n gap = true;\n }\n else {\n if (i === 0 || gap) {\n pathToPoint = [[\n 'M',\n point.plotX,\n point.plotY\n ]];\n // Generate the spline as defined in the SplineSeries object\n }\n else if (series.getPointSpline) {\n pathToPoint = [series.getPointSpline(points, point, i)];\n }\n else if (step) {\n if (step === 1) { // right\n pathToPoint = [[\n 'L',\n lastPoint.plotX,\n plotY\n ]];\n }\n else if (step === 2) { // center\n pathToPoint = [[\n 'L',\n (lastPoint.plotX + plotX) / 2,\n lastPoint.plotY\n ], [\n 'L',\n (lastPoint.plotX + plotX) / 2,\n plotY\n ]];\n }\n else {\n pathToPoint = [[\n 'L',\n plotX,\n lastPoint.plotY\n ]];\n }\n pathToPoint.push([\n 'L',\n plotX,\n plotY\n ]);\n }\n else {\n // normal line to next point\n pathToPoint = [[\n 'L',\n plotX,\n plotY\n ]];\n }\n // Prepare for animation. When step is enabled, there are\n // two path nodes for each x value.\n xMap.push(point.x);\n if (step) {\n xMap.push(point.x);\n if (step === 2) { // step = center (#8073)\n xMap.push(point.x);\n }\n }\n graphPath.push.apply(graphPath, pathToPoint);\n gap = false;\n }\n });\n graphPath.xMap = xMap;\n series.graphPath = graphPath;\n return graphPath;\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get zones properties for building graphs. Extendable by series with\n * multiple lines within one series.\n *\n * @private\n */\n LineSeries.prototype.getZonesGraphs = function (props) {\n // Add the zone properties if any\n this.zones.forEach(function (zone, i) {\n var propset = [\n 'zone-graph-' + i,\n 'highcharts-graph highcharts-zone-graph-' + i + ' ' +\n (zone.className || '')\n ];\n if (!this.chart.styledMode) {\n propset.push((zone.color || this.color), (zone.dashStyle || this.options.dashStyle));\n }\n props.push(propset);\n }, this);\n return props;\n };\n /**\n * General options for all series types.\n *\n * @optionparent plotOptions.series\n */\n LineSeries.defaultOptions = merge(Series.defaultOptions, {\n // nothing here yet\n });\n return LineSeries;\n }(Series));\n SeriesRegistry.registerSeriesType('line', LineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A line series displays information as a series of data points connected by\n * straight line segments.\n *\n * @sample {highcharts} highcharts/demo/line-basic/\n * Line chart\n * @sample {highstock} stock/demo/basic-line/\n * Line chart\n *\n * @extends plotOptions.series\n * @product highcharts highstock\n * @apioption plotOptions.line\n */\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin`\n * of a line graph. Round means that lines are rounded in the ends and\n * bends.\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @since 3.0.7\n * @apioption plotOptions.line.linecap\n */\n /**\n * A `line` series. If the [type](#series.line.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.line\n * @excluding dataParser,dataURL\n * @product highcharts highstock\n * @apioption series.line\n */\n /**\n * An array of data points for the series. For the `line` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 1],\n * [1, 2],\n * [2, 8]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.line.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * **Note:** In TypeScript you have to extend `PointOptionsObject` with an\n * additional declaration to allow custom data types:\n * ```ts\n * declare module `highcharts` {\n * interface PointOptionsObject {\n * custom: Record<string, (boolean|number|string)>;\n * }\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @declare Highcharts.PointOptionsObject\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @apioption series.line.data\n */\n /**\n * An additional, individual class name for the data point's graphic\n * representation.\n *\n * @type {string}\n * @since 5.0.0\n * @product highcharts gantt\n * @apioption series.line.data.className\n */\n /**\n * Individual color for the point. By default the color is pulled from\n * the global `colors` array.\n *\n * In styled mode, the `color` option doesn't take effect. Instead, use\n * `colorIndex`.\n *\n * @sample {highcharts} highcharts/point/color/\n * Mark the highest point\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock gantt\n * @apioption series.line.data.color\n */\n /**\n * A specific color index to use for the point, so its graphic representations\n * are given the class name `highcharts-color-{n}`. In styled mode this will\n * change the color of the graphic. In non-styled mode, the color by is set by\n * the `fill` attribute, so the change in class name won't have a visual effect\n * by default.\n *\n * @type {number}\n * @since 5.0.0\n * @product highcharts gantt\n * @apioption series.line.data.colorIndex\n */\n /**\n * A reserved subspace to store options and values for customized functionality.\n * Here you can add additional data for your own event callbacks and formatter\n * callbacks.\n *\n * @sample {highcharts} highcharts/point/custom/\n * Point and series with custom data\n *\n * @type {Highcharts.Dictionary<*>}\n * @apioption series.line.data.custom\n */\n /**\n * Individual data label for each point. The options are the same as\n * the ones for [plotOptions.series.dataLabels](\n * #plotOptions.series.dataLabels).\n *\n * @sample highcharts/point/datalabels/\n * Show a label for the last value\n *\n * @declare Highcharts.DataLabelsOptions\n * @extends plotOptions.line.dataLabels\n * @product highcharts highstock gantt\n * @apioption series.line.data.dataLabels\n */\n /**\n * A description of the point to add to the screen reader information\n * about the point.\n *\n * @type {string}\n * @since 5.0.0\n * @requires modules/accessibility\n * @apioption series.line.data.description\n */\n /**\n * An id for the point. This can be used after render time to get a\n * pointer to the point object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/point/id/\n * Remove an id'd point\n *\n * @type {string}\n * @since 1.2.0\n * @product highcharts highstock gantt\n * @apioption series.line.data.id\n */\n /**\n * The rank for this point's data label in case of collision. If two\n * data labels are about to overlap, only the one with the highest `labelrank`\n * will be drawn.\n *\n * @type {number}\n * @apioption series.line.data.labelrank\n */\n /**\n * The name of the point as shown in the legend, tooltip, dataLabels, etc.\n *\n * @see [xAxis.uniqueNames](#xAxis.uniqueNames)\n *\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Point names\n *\n * @type {string}\n * @apioption series.line.data.name\n */\n /**\n * Whether the data point is selected initially.\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock gantt\n * @apioption series.line.data.selected\n */\n /**\n * The x value of the point. For datetime axes, the X value is the timestamp\n * in milliseconds since 1970.\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.line.data.x\n */\n /**\n * The y value of the point.\n *\n * @type {number|null}\n * @product highcharts highstock\n * @apioption series.line.data.y\n */\n /**\n * The individual point events.\n *\n * @extends plotOptions.series.point.events\n * @product highcharts highstock gantt\n * @apioption series.line.data.events\n */\n /**\n * Options for the point markers of line-like series.\n *\n * @declare Highcharts.PointMarkerOptionsObject\n * @extends plotOptions.series.marker\n * @product highcharts highstock\n * @apioption series.line.data.marker\n */\n ''; // include precedent doclets in transpilat\n\n return LineSeries;\n });\n _registerModule(_modules, 'Series/Area/AreaSeries.js', [_modules['Core/Color/Color.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Color, LegendSymbol, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var color = Color.parse;\n var LineSeries = SeriesRegistry.seriesTypes.line;\n var extend = U.extend,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * Area series type.\n *\n * @private\n * @class\n * @name AreaSeries\n *\n * @augments LineSeries\n */\n var AreaSeries = /** @class */ (function (_super) {\n __extends(AreaSeries, _super);\n function AreaSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Draw the graph and the underlying area. This method calls the Series\n * base function and adds the area. The areaPath is calculated in the\n * getSegmentPath method called from Series.prototype.drawGraph.\n * @private\n */\n AreaSeries.prototype.drawGraph = function () {\n // Define or reset areaPath\n this.areaPath = [];\n // Call the base method\n _super.prototype.drawGraph.apply(this);\n // Define local variables\n var series = this,\n areaPath = this.areaPath,\n options = this.options,\n zones = this.zones,\n props = [[\n 'area',\n 'highcharts-area',\n this.color,\n options.fillColor\n ]]; // area name, main color, fill color\n zones.forEach(function (zone,\n i) {\n props.push([\n 'zone-area-' + i,\n 'highcharts-area highcharts-zone-area-' + i + ' ' +\n zone.className,\n zone.color || series.color,\n zone.fillColor || options.fillColor\n ]);\n });\n props.forEach(function (prop) {\n var areaKey = prop[0],\n area = series[areaKey],\n verb = area ? 'animate' : 'attr',\n attribs = {};\n // Create or update the area\n if (area) { // update\n area.endX = series.preventGraphAnimation ?\n null :\n areaPath.xMap;\n area.animate({ d: areaPath });\n }\n else { // create\n attribs.zIndex = 0; // #1069\n area = series[areaKey] = series.chart.renderer\n .path(areaPath)\n .addClass(prop[1])\n .add(series.group);\n area.isArea = true;\n }\n if (!series.chart.styledMode) {\n attribs.fill = pick(prop[3], color(prop[2])\n .setOpacity(pick(options.fillOpacity, 0.75))\n .get());\n }\n area[verb](attribs);\n area.startX = areaPath.xMap;\n area.shiftUnit = options.step ? 2 : 1;\n });\n };\n /**\n * @private\n */\n AreaSeries.prototype.getGraphPath = function (points) {\n var getGraphPath = LineSeries.prototype.getGraphPath, graphPath, options = this.options, stacking = options.stacking, yAxis = this.yAxis, topPath, bottomPath, bottomPoints = [], graphPoints = [], seriesIndex = this.index, i, areaPath, plotX, stacks = yAxis.stacking.stacks[this.stackKey], threshold = options.threshold, translatedThreshold = Math.round(// #10909\n yAxis.getThreshold(options.threshold)), isNull, yBottom, connectNulls = pick(// #10574\n options.connectNulls, stacking === 'percent'), \n // To display null points in underlying stacked series, this\n // series graph must be broken, and the area also fall down to\n // fill the gap left by the null point. #2069\n addDummyPoints = function (i, otherI, side) {\n var point = points[i], stackedValues = stacking &&\n stacks[point.x].points[seriesIndex], nullVal = point[side + 'Null'] || 0, cliffVal = point[side + 'Cliff'] || 0, top, bottom, isNull = true;\n if (cliffVal || nullVal) {\n top = (nullVal ?\n stackedValues[0] :\n stackedValues[1]) + cliffVal;\n bottom = stackedValues[0] + cliffVal;\n isNull = !!nullVal;\n }\n else if (!stacking &&\n points[otherI] &&\n points[otherI].isNull) {\n top = bottom = threshold;\n }\n // Add to the top and bottom line of the area\n if (typeof top !== 'undefined') {\n graphPoints.push({\n plotX: plotX,\n plotY: top === null ?\n translatedThreshold :\n yAxis.getThreshold(top),\n isNull: isNull,\n isCliff: true\n });\n bottomPoints.push({\n plotX: plotX,\n plotY: bottom === null ?\n translatedThreshold :\n yAxis.getThreshold(bottom),\n doCurve: false // #1041, gaps in areaspline areas\n });\n }\n };\n // Find what points to use\n points = points || this.points;\n // Fill in missing points\n if (stacking) {\n points = this.getStackPoints(points);\n }\n for (i = 0; i < points.length; i++) {\n // Reset after series.update of stacking property (#12033)\n if (!stacking) {\n points[i].leftCliff = points[i].rightCliff =\n points[i].leftNull = points[i].rightNull = void 0;\n }\n isNull = points[i].isNull;\n plotX = pick(points[i].rectPlotX, points[i].plotX);\n yBottom = stacking ?\n pick(points[i].yBottom, translatedThreshold) :\n translatedThreshold;\n if (!isNull || connectNulls) {\n if (!connectNulls) {\n addDummyPoints(i, i - 1, 'left');\n }\n // Skip null point when stacking is false and connectNulls\n // true\n if (!(isNull && !stacking && connectNulls)) {\n graphPoints.push(points[i]);\n bottomPoints.push({\n x: i,\n plotX: plotX,\n plotY: yBottom\n });\n }\n if (!connectNulls) {\n addDummyPoints(i, i + 1, 'right');\n }\n }\n }\n topPath = getGraphPath.call(this, graphPoints, true, true);\n bottomPoints.reversed = true;\n bottomPath = getGraphPath.call(this, bottomPoints, true, true);\n var firstBottomPoint = bottomPath[0];\n if (firstBottomPoint && firstBottomPoint[0] === 'M') {\n bottomPath[0] = ['L', firstBottomPoint[1], firstBottomPoint[2]];\n }\n areaPath = topPath.concat(bottomPath);\n if (areaPath.length) {\n areaPath.push(['Z']);\n }\n // TODO: don't set leftCliff and rightCliff when connectNulls?\n graphPath = getGraphPath\n .call(this, graphPoints, false, connectNulls);\n areaPath.xMap = topPath.xMap;\n this.areaPath = areaPath;\n return graphPath;\n };\n /**\n * Return an array of stacked points, where null and missing points are\n * replaced by dummy points in order for gaps to be drawn correctly in\n * stacks.\n * @private\n */\n AreaSeries.prototype.getStackPoints = function (points) {\n var series = this,\n segment = [],\n keys = [],\n xAxis = this.xAxis,\n yAxis = this.yAxis,\n stack = yAxis.stacking.stacks[this.stackKey],\n pointMap = {},\n yAxisSeries = yAxis.series,\n seriesLength = yAxisSeries.length,\n upOrDown = yAxis.options.reversedStacks ? 1 : -1,\n seriesIndex = yAxisSeries.indexOf(series);\n points = points || this.points;\n if (this.options.stacking) {\n for (var i = 0; i < points.length; i++) {\n // Reset after point update (#7326)\n points[i].leftNull = points[i].rightNull = void 0;\n // Create a map where we can quickly look up the points by\n // their X values.\n pointMap[points[i].x] = points[i];\n }\n // Sort the keys (#1651)\n objectEach(stack, function (stackX, x) {\n // nulled after switching between\n // grouping and not (#1651, #2336)\n if (stackX.total !== null) {\n keys.push(x);\n }\n });\n keys.sort(function (a, b) {\n return a - b;\n });\n var visibleSeries_1 = yAxisSeries.map(function (s) { return s.visible; });\n keys.forEach(function (x, idx) {\n var y = 0,\n stackPoint,\n stackedValues;\n if (pointMap[x] && !pointMap[x].isNull) {\n segment.push(pointMap[x]);\n // Find left and right cliff. -1 goes left, 1 goes\n // right.\n [-1, 1].forEach(function (direction) {\n var nullName = direction === 1 ?\n 'rightNull' :\n 'leftNull',\n cliffName = direction === 1 ?\n 'rightCliff' :\n 'leftCliff',\n cliff = 0,\n otherStack = stack[keys[idx + direction]];\n // If there is a stack next to this one,\n // to the left or to the right...\n if (otherStack) {\n var i = seriesIndex;\n // Can go either up or down,\n // depending on reversedStacks\n while (i >= 0 && i < seriesLength) {\n var si = yAxisSeries[i].index;\n stackPoint = otherStack.points[si];\n if (!stackPoint) {\n // If the next point in this series is\n // missing, mark the point with\n // point.leftNull or point.rightNull = true.\n if (si === series.index) {\n pointMap[x][nullName] = true;\n // If there are missing points in the next\n // stack in any of the series below this\n // one, we need to substract the missing\n // values and add a hiatus to the left or\n // right.\n }\n else if (visibleSeries_1[i]) {\n stackedValues = stack[x].points[si];\n if (stackedValues) {\n cliff -= (stackedValues[1] -\n stackedValues[0]);\n }\n }\n }\n // When reversedStacks is true, loop up,\n // else loop down\n i += upOrDown;\n }\n }\n pointMap[x][cliffName] = cliff;\n });\n // There is no point for this X value in this series, so we\n // insert a dummy point in order for the areas to be drawn\n // correctly.\n }\n else {\n // Loop down the stack to find the series below this\n // one that has a value (#1991)\n var i = seriesIndex;\n while (i >= 0 && i < seriesLength) {\n var si = yAxisSeries[i].index;\n stackPoint = stack[x].points[si];\n if (stackPoint) {\n y = stackPoint[1];\n break;\n }\n // When reversedStacks is true, loop up, else loop\n // down\n i += upOrDown;\n }\n y = pick(y, 0);\n y = yAxis.translate(// #6272\n y, 0, 1, 0, 1);\n segment.push({\n isNull: true,\n plotX: xAxis.translate(// #6272\n x, 0, 0, 0, 1),\n x: x,\n plotY: y,\n yBottom: y\n });\n }\n });\n }\n return segment;\n };\n /**\n * The area series type.\n *\n * @sample {highcharts} highcharts/demo/area-basic/\n * Area chart\n * @sample {highstock} stock/demo/area/\n * Area chart\n *\n * @extends plotOptions.line\n * @excluding useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.area\n */\n AreaSeries.defaultOptions = merge(LineSeries.defaultOptions, {\n /**\n * @see [fillColor](#plotOptions.area.fillColor)\n * @see [fillOpacity](#plotOptions.area.fillOpacity)\n *\n * @apioption plotOptions.area.color\n */\n /**\n * Fill color or gradient for the area. When `null`, the series' `color`\n * is used with the series' `fillOpacity`.\n *\n * In styled mode, the fill color can be set with the `.highcharts-area`\n * class name.\n *\n * @see [color](#plotOptions.area.color)\n * @see [fillOpacity](#plotOptions.area.fillOpacity)\n *\n * @sample {highcharts} highcharts/plotoptions/area-fillcolor-default/\n * Null by default\n * @sample {highcharts} highcharts/plotoptions/area-fillcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption plotOptions.area.fillColor\n */\n /**\n * Fill opacity for the area. When you set an explicit `fillColor`,\n * the `fillOpacity` is not applied. Instead, you should define the\n * opacity in the `fillColor` with an rgba color definition. The\n * `fillOpacity` setting, also the default setting, overrides the alpha\n * component of the `color` setting.\n *\n * In styled mode, the fill opacity can be set with the\n * `.highcharts-area` class name.\n *\n * @see [color](#plotOptions.area.color)\n * @see [fillColor](#plotOptions.area.fillColor)\n *\n * @sample {highcharts} highcharts/plotoptions/area-fillopacity/\n * Automatic fill color and fill opacity of 0.1\n *\n * @type {number}\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @product highcharts highstock\n * @apioption plotOptions.area.fillOpacity\n */\n /**\n * A separate color for the graph line. By default the line takes the\n * `color` of the series, but the lineColor setting allows setting a\n * separate color for the line without altering the `fillColor`.\n *\n * In styled mode, the line stroke can be set with the\n * `.highcharts-graph` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/area-linecolor/\n * Dark gray line\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption plotOptions.area.lineColor\n */\n /**\n * A separate color for the negative part of the area.\n *\n * In styled mode, a negative color is set with the\n * `.highcharts-negative` class name.\n *\n * @see [negativeColor](#plotOptions.area.negativeColor)\n *\n * @sample {highcharts} highcharts/css/series-negative-color/\n * Negative color in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.area.negativeFillColor\n */\n /**\n * Whether the whole area or just the line should respond to mouseover\n * tooltips and other mouse or touch events.\n *\n * @sample {highcharts|highstock} highcharts/plotoptions/area-trackbyarea/\n * Display the tooltip when the area is hovered\n *\n * @type {boolean}\n * @default false\n * @since 1.1.6\n * @product highcharts highstock\n * @apioption plotOptions.area.trackByArea\n */\n /**\n * The Y axis value to serve as the base for the area, for\n * distinguishing between values above and below a threshold. The area\n * between the graph and the threshold is filled.\n *\n * * If a number is given, the Y axis will scale to the threshold.\n * * If `null`, the scaling behaves like a line series with fill between\n * the graph and the Y axis minimum.\n * * If `Infinity` or `-Infinity`, the area between the graph and the\n * corresponding Y axis extreme is filled (since v6.1.0).\n *\n * @sample {highcharts} highcharts/plotoptions/area-threshold/\n * A threshold of 100\n * @sample {highcharts} highcharts/plotoptions/area-threshold-infinity/\n * A threshold of Infinity\n *\n * @type {number|null}\n * @since 2.0\n * @product highcharts highstock\n */\n threshold: 0\n });\n return AreaSeries;\n }(LineSeries));\n extend(AreaSeries.prototype, {\n singleStacks: false,\n drawLegendSymbol: LegendSymbol.drawRectangle\n });\n SeriesRegistry.registerSeriesType('area', AreaSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `area` series. If the [type](#series.area.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.area\n * @excluding dataParser, dataURL, useOhlcData\n * @product highcharts highstock\n * @apioption series.area\n */\n /**\n * @see [fillColor](#series.area.fillColor)\n * @see [fillOpacity](#series.area.fillOpacity)\n *\n * @apioption series.area.color\n */\n /**\n * An array of data points for the series. For the `area` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` * and `pointInterval` given in the series options. If the\n * axis has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 9],\n * [1, 7],\n * [2, 6]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.area.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.area.data\n */\n /**\n * @see [color](#series.area.color)\n * @see [fillOpacity](#series.area.fillOpacity)\n *\n * @apioption series.area.fillColor\n */\n /**\n * @see [color](#series.area.color)\n * @see [fillColor](#series.area.fillColor)\n *\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @apioption series.area.fillOpacity\n */\n ''; // adds doclets above to transpilat\n\n return AreaSeries;\n });\n _registerModule(_modules, 'Series/Spline/SplineSeries.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var LineSeries = SeriesRegistry.seriesTypes.line;\n var merge = U.merge,\n pick = U.pick;\n /**\n * Spline series type.\n *\n * @private\n */\n var SplineSeries = /** @class */ (function (_super) {\n __extends(SplineSeries, _super);\n function SplineSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the spline segment from a given point's previous neighbour to the\n * given point.\n *\n * @private\n * @function Highcharts.seriesTypes.spline#getPointSpline\n */\n SplineSeries.prototype.getPointSpline = function (points, point, i) {\n var \n // 1 means control points midway between points, 2 means 1/3\n // from the point, 3 is 1/4 etc\n smoothing = 1.5,\n denom = smoothing + 1,\n plotX = point.plotX || 0,\n plotY = point.plotY || 0,\n lastPoint = points[i - 1],\n nextPoint = points[i + 1],\n leftContX,\n leftContY,\n rightContX,\n rightContY,\n ret;\n /**\n * @private\n */\n function doCurve(otherPoint) {\n return otherPoint &&\n !otherPoint.isNull &&\n otherPoint.doCurve !== false &&\n // #6387, area splines next to null:\n !point.isCliff;\n }\n // Find control points\n if (doCurve(lastPoint) && doCurve(nextPoint)) {\n var lastX = lastPoint.plotX || 0,\n lastY = lastPoint.plotY || 0,\n nextX = nextPoint.plotX || 0,\n nextY = nextPoint.plotY || 0,\n correction = 0;\n leftContX = (smoothing * plotX + lastX) / denom;\n leftContY = (smoothing * plotY + lastY) / denom;\n rightContX = (smoothing * plotX + nextX) / denom;\n rightContY = (smoothing * plotY + nextY) / denom;\n // Have the two control points make a straight line through main\n // point\n if (rightContX !== leftContX) { // #5016, division by zero\n correction = (((rightContY - leftContY) *\n (rightContX - plotX)) /\n (rightContX - leftContX) + plotY - rightContY);\n }\n leftContY += correction;\n rightContY += correction;\n // to prevent false extremes, check that control points are\n // between neighbouring points' y values\n if (leftContY > lastY && leftContY > plotY) {\n leftContY = Math.max(lastY, plotY);\n // mirror of left control point\n rightContY = 2 * plotY - leftContY;\n }\n else if (leftContY < lastY && leftContY < plotY) {\n leftContY = Math.min(lastY, plotY);\n rightContY = 2 * plotY - leftContY;\n }\n if (rightContY > nextY && rightContY > plotY) {\n rightContY = Math.max(nextY, plotY);\n leftContY = 2 * plotY - rightContY;\n }\n else if (rightContY < nextY && rightContY < plotY) {\n rightContY = Math.min(nextY, plotY);\n leftContY = 2 * plotY - rightContY;\n }\n // record for drawing in next point\n point.rightContX = rightContX;\n point.rightContY = rightContY;\n }\n // Visualize control points for debugging\n /*\n if (leftContX) {\n this.chart.renderer.circle(\n leftContX + this.chart.plotLeft,\n leftContY + this.chart.plotTop,\n 2\n )\n .attr({\n stroke: 'red',\n 'stroke-width': 2,\n fill: 'none',\n zIndex: 9\n })\n .add();\n this.chart.renderer.path(['M', leftContX + this.chart.plotLeft,\n leftContY + this.chart.plotTop,\n 'L', plotX + this.chart.plotLeft, plotY + this.chart.plotTop])\n .attr({\n stroke: 'red',\n 'stroke-width': 2,\n zIndex: 9\n })\n .add();\n }\n if (rightContX) {\n this.chart.renderer.circle(\n rightContX + this.chart.plotLeft,\n rightContY + this.chart.plotTop,\n 2\n )\n .attr({\n stroke: 'green',\n 'stroke-width': 2,\n fill: 'none',\n zIndex: 9\n })\n .add();\n this.chart.renderer.path(['M', rightContX + this.chart.plotLeft,\n rightContY + this.chart.plotTop,\n 'L', plotX + this.chart.plotLeft, plotY + this.chart.plotTop])\n .attr({\n stroke: 'green',\n 'stroke-width': 2,\n zIndex: 9\n })\n .add();\n }\n // */\n ret = [\n 'C',\n pick(lastPoint.rightContX, lastPoint.plotX, 0),\n pick(lastPoint.rightContY, lastPoint.plotY, 0),\n pick(leftContX, plotX, 0),\n pick(leftContY, plotY, 0),\n plotX,\n plotY\n ];\n // reset for updating series later\n lastPoint.rightContX = lastPoint.rightContY = void 0;\n return ret;\n };\n /**\n * A spline series is a special type of line series, where the segments\n * between the data points are smoothed.\n *\n * @sample {highcharts} highcharts/demo/spline-irregular-time/\n * Spline chart\n * @sample {highstock} stock/demo/spline/\n * Spline chart\n *\n * @extends plotOptions.series\n * @excluding step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @optionparent plotOptions.spline\n */\n SplineSeries.defaultOptions = merge(LineSeries.defaultOptions);\n return SplineSeries;\n }(LineSeries));\n SeriesRegistry.registerSeriesType('spline', SplineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `spline` series. If the [type](#series.spline.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.spline\n * @excluding dataParser, dataURL, step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption series.spline\n */\n /**\n * An array of data points for the series. For the `spline` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 9],\n * [1, 2],\n * [2, 8]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.spline.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 0,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.spline.data\n */\n ''; // adds doclets above intro transpilat\n\n return SplineSeries;\n });\n _registerModule(_modules, 'Series/AreaSpline/AreaSplineSeries.js', [_modules['Series/Area/AreaSeries.js'], _modules['Series/Spline/SplineSeries.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (AreaSeries, SplineSeries, LegendSymbol, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var areaProto = AreaSeries.prototype;\n var extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * AreaSpline series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.areaspline\n *\n * @augments Highcharts.Series\n */\n var AreaSplineSeries = /** @class */ (function (_super) {\n __extends(AreaSplineSeries, _super);\n function AreaSplineSeries() {\n /* *\n *\n * Static properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.points = void 0;\n _this.options = void 0;\n return _this;\n }\n /**\n * The area spline series is an area series where the graph between the\n * points is smoothed into a spline.\n *\n * @sample {highcharts} highcharts/demo/areaspline/\n * Area spline chart\n * @sample {highstock} stock/demo/areaspline/\n * Area spline chart\n *\n * @extends plotOptions.area\n * @excluding step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption plotOptions.areaspline\n */\n /**\n * @see [fillColor](#plotOptions.areaspline.fillColor)\n * @see [fillOpacity](#plotOptions.areaspline.fillOpacity)\n *\n * @apioption plotOptions.areaspline.color\n */\n /**\n * @see [color](#plotOptions.areaspline.color)\n * @see [fillOpacity](#plotOptions.areaspline.fillOpacity)\n *\n * @apioption plotOptions.areaspline.fillColor\n */\n /**\n * @see [color](#plotOptions.areaspline.color)\n * @see [fillColor](#plotOptions.areaspline.fillColor)\n *\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @apioption plotOptions.areaspline.fillOpacity\n */\n AreaSplineSeries.defaultOptions = merge(SplineSeries.defaultOptions, AreaSeries.defaultOptions);\n return AreaSplineSeries;\n }(SplineSeries));\n extend(AreaSplineSeries.prototype, {\n getGraphPath: areaProto.getGraphPath,\n getStackPoints: areaProto.getStackPoints,\n drawGraph: areaProto.drawGraph,\n drawLegendSymbol: LegendSymbol.drawRectangle\n });\n SeriesRegistry.registerSeriesType('areaspline', AreaSplineSeries);\n /* *\n *\n * Default export\n *\n * */\n /**\n * A `areaspline` series. If the [type](#series.areaspline.type) option\n * is not specified, it is inherited from [chart.type](#chart.type).\n *\n *\n * @extends series,plotOptions.areaspline\n * @excluding dataParser, dataURL, step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption series.areaspline\n */\n /**\n * @see [fillColor](#series.areaspline.fillColor)\n * @see [fillOpacity](#series.areaspline.fillOpacity)\n *\n * @apioption series.areaspline.color\n */\n /**\n * An array of data points for the series. For the `areaspline` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 10],\n * [1, 9],\n * [2, 3]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.areaspline.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 4,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.areaspline.data\n */\n /**\n * @see [color](#series.areaspline.color)\n * @see [fillOpacity](#series.areaspline.fillOpacity)\n *\n * @apioption series.areaspline.fillColor\n */\n /**\n * @see [color](#series.areaspline.color)\n * @see [fillColor](#series.areaspline.fillColor)\n *\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @apioption series.areaspline.fillOpacity\n */\n ''; // adds doclets above into transpilat\n\n return AreaSplineSeries;\n });\n _registerModule(_modules, 'Series/Column/ColumnSeries.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (A, Color, H, LegendSymbol, Series, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var animObject = A.animObject;\n var color = Color.parse;\n var hasTouch = H.hasTouch,\n noop = H.noop;\n var clamp = U.clamp,\n css = U.css,\n defined = U.defined,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n objectEach = U.objectEach;\n /* *\n *\n * Class\n *\n * */\n /**\n * The column series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.column\n *\n * @augments Highcharts.Series\n */\n var ColumnSeries = /** @class */ (function (_super) {\n __extends(ColumnSeries, _super);\n function ColumnSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.borderWidth = void 0;\n _this.data = void 0;\n _this.group = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Animate the column heights one by one from zero.\n *\n * @private\n * @function Highcharts.seriesTypes.column#animate\n *\n * @param {boolean} init\n * Whether to initialize the animation or run it\n */\n ColumnSeries.prototype.animate = function (init) {\n var series = this,\n yAxis = this.yAxis,\n options = series.options,\n inverted = this.chart.inverted,\n attr = {},\n translateProp = inverted ?\n 'translateX' :\n 'translateY';\n var translateStart,\n translatedThreshold;\n if (init) {\n attr.scaleY = 0.001;\n translatedThreshold = clamp(yAxis.toPixels(options.threshold), yAxis.pos, yAxis.pos + yAxis.len);\n if (inverted) {\n attr.translateX = translatedThreshold - yAxis.len;\n }\n else {\n attr.translateY = translatedThreshold;\n }\n // apply finnal clipping (used in Highcharts Stock) (#7083)\n // animation is done by scaleY, so cliping is for panes\n if (series.clipBox) {\n series.setClip();\n }\n series.group.attr(attr);\n }\n else { // run the animation\n translateStart = Number(series.group.attr(translateProp));\n series.group.animate({ scaleY: 1 }, extend(animObject(series.options.animation), {\n // Do the scale synchronously to ensure smooth\n // updating (#5030, #7228)\n step: function (val, fx) {\n if (series.group) {\n attr[translateProp] = translateStart +\n fx.pos * (yAxis.pos - translateStart);\n series.group.attr(attr);\n }\n }\n }));\n }\n };\n /**\n * Initialize the series. Extends the basic Series.init method by\n * marking other series of the same type as dirty.\n *\n * @private\n * @function Highcharts.seriesTypes.column#init\n */\n ColumnSeries.prototype.init = function (chart, options) {\n _super.prototype.init.apply(this, arguments);\n var series = this;\n chart = series.chart;\n // if the series is added dynamically, force redraw of other\n // series affected by a new column\n if (chart.hasRendered) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.type === series.type) {\n otherSeries.isDirty = true;\n }\n });\n }\n };\n /**\n * Return the width and x offset of the columns adjusted for grouping,\n * groupPadding, pointPadding, pointWidth etc.\n *\n * @private\n * @function Highcharts.seriesTypes.column#getColumnMetrics\n */\n ColumnSeries.prototype.getColumnMetrics = function () {\n var series = this,\n options = series.options,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n reversedStacks = xAxis.options.reversedStacks, \n // Keep backward compatibility: reversed xAxis had reversed\n // stacks\n reverseStacks = (xAxis.reversed && !reversedStacks) ||\n (!xAxis.reversed && reversedStacks),\n stackGroups = {};\n var stackKey,\n columnCount = 0;\n // Get the total number of column type series. This is called on\n // every series. Consider moving this logic to a chart.orderStacks()\n // function and call it on init, addSeries and removeSeries\n if (options.grouping === false) {\n columnCount = 1;\n }\n else {\n series.chart.series.forEach(function (otherSeries) {\n var otherYAxis = otherSeries.yAxis,\n otherOptions = otherSeries.options;\n var columnIndex;\n if (otherSeries.type === series.type &&\n (otherSeries.visible ||\n !series.chart.options.chart.ignoreHiddenSeries) &&\n yAxis.len === otherYAxis.len &&\n yAxis.pos === otherYAxis.pos) { // #642, #2086\n if (otherOptions.stacking &&\n otherOptions.stacking !== 'group') {\n stackKey = otherSeries.stackKey;\n if (typeof stackGroups[stackKey] ===\n 'undefined') {\n stackGroups[stackKey] = columnCount++;\n }\n columnIndex = stackGroups[stackKey];\n }\n else if (otherOptions.grouping !== false) { // #1162\n columnIndex = columnCount++;\n }\n otherSeries.columnIndex = columnIndex;\n }\n });\n }\n var categoryWidth = Math.min(Math.abs(xAxis.transA) * ((xAxis.ordinal && xAxis.ordinal.slope) ||\n options.pointRange ||\n xAxis.closestPointRange ||\n xAxis.tickInterval ||\n 1), // #2610\n xAxis.len // #1535\n ),\n groupPadding = categoryWidth * options.groupPadding,\n groupWidth = categoryWidth - 2 * groupPadding,\n pointOffsetWidth = groupWidth / (columnCount || 1),\n pointWidth = Math.min(options.maxPointWidth || xAxis.len,\n pick(options.pointWidth,\n pointOffsetWidth * (1 - 2 * options.pointPadding))),\n pointPadding = (pointOffsetWidth - pointWidth) / 2, \n // #1251, #3737\n colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0),\n pointXOffset = pointPadding +\n (groupPadding +\n colIndex * pointOffsetWidth -\n (categoryWidth / 2)) * (reverseStacks ? -1 : 1);\n // Save it for reading in linked series (Error bars particularly)\n series.columnMetrics = {\n width: pointWidth,\n offset: pointXOffset,\n paddedWidth: pointOffsetWidth,\n columnCount: columnCount\n };\n return series.columnMetrics;\n };\n /**\n * Make the columns crisp. The edges are rounded to the nearest full\n * pixel.\n *\n * @private\n * @function Highcharts.seriesTypes.column#crispCol\n */\n ColumnSeries.prototype.crispCol = function (x, y, w, h) {\n var chart = this.chart,\n borderWidth = this.borderWidth,\n xCrisp = -(borderWidth % 2 ? 0.5 : 0);\n var right,\n yCrisp = borderWidth % 2 ? 0.5 : 1;\n if (chart.inverted && chart.renderer.isVML) {\n yCrisp += 1;\n }\n // Horizontal. We need to first compute the exact right edge, then\n // round it and compute the width from there.\n if (this.options.crisp) {\n right = Math.round(x + w) + xCrisp;\n x = Math.round(x) + xCrisp;\n w = right - x;\n }\n // Vertical\n var bottom = Math.round(y + h) + yCrisp,\n fromTop = Math.abs(y) <= 0.5 && bottom > 0.5; // #4504, #4656\n y = Math.round(y) + yCrisp;\n h = bottom - y;\n // Top edges are exceptions\n if (fromTop && h) { // #5146\n y -= 1;\n h += 1;\n }\n return {\n x: x,\n y: y,\n width: w,\n height: h\n };\n };\n /**\n * Adjust for missing columns, according to the `centerInCategory`\n * option. Missing columns are either single points or stacks where the\n * point or points are either missing or null.\n *\n * @private\n * @function Highcharts.seriesTypes.column#adjustForMissingColumns\n * @param {number} x\n * The x coordinate of the column, left side\n *\n * @param {number} pointWidth\n * The pointWidth, already computed upstream\n *\n * @param {Highcharts.ColumnPoint} point\n * The point instance\n *\n * @param {Highcharts.ColumnMetricsObject} metrics\n * The series-wide column metrics\n *\n * @return {number}\n * The adjusted x position, or the original if not adjusted\n */\n ColumnSeries.prototype.adjustForMissingColumns = function (x, pointWidth, point, metrics) {\n var _this = this;\n var stacking = this.options.stacking;\n if (!point.isNull && metrics.columnCount > 1) {\n var indexInCategory_1 = 0;\n var totalInCategory_1 = 0;\n // Loop over all the stacks on the Y axis. When stacking is enabled,\n // these are real point stacks. When stacking is not enabled, but\n // `centerInCategory` is true, there is one stack handling the\n // grouping of points in each category. This is done in the\n // `setGroupedPoints` function.\n objectEach(this.yAxis.stacking && this.yAxis.stacking.stacks, function (stack) {\n if (typeof point.x === 'number') {\n var stackItem = stack[point.x.toString()];\n if (stackItem) {\n var pointValues = stackItem.points[_this.index],\n total = stackItem.total;\n // If true `stacking` is enabled, count the total\n // number of non-null stacks in the category, and\n // note which index this point is within those\n // stacks.\n if (stacking) {\n if (pointValues) {\n indexInCategory_1 = totalInCategory_1;\n }\n if (stackItem.hasValidPoints) {\n totalInCategory_1++;\n }\n // If `stacking` is not enabled, look for the index\n // and total of the `group` stack.\n }\n else if (isArray(pointValues)) {\n indexInCategory_1 = pointValues[1];\n totalInCategory_1 = total || 0;\n }\n }\n }\n });\n // Compute the adjusted x position\n var boxWidth = (totalInCategory_1 - 1) * metrics.paddedWidth +\n pointWidth;\n x = (point.plotX || 0) + boxWidth / 2 - pointWidth -\n indexInCategory_1 * metrics.paddedWidth;\n }\n return x;\n };\n /**\n * Translate each point to the plot area coordinate system and find\n * shape positions\n *\n * @private\n * @function Highcharts.seriesTypes.column#translate\n */\n ColumnSeries.prototype.translate = function () {\n var series = this,\n chart = series.chart,\n options = series.options,\n dense = series.dense =\n series.closestPointRange * series.xAxis.transA < 2,\n borderWidth = series.borderWidth = pick(options.borderWidth,\n dense ? 0 : 1 // #3635\n ),\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n threshold = options.threshold,\n translatedThreshold = series.translatedThreshold =\n yAxis.getThreshold(threshold),\n minPointLength = pick(options.minPointLength, 5),\n metrics = series.getColumnMetrics(),\n seriesPointWidth = metrics.width,\n seriesXOffset = series.pointXOffset = metrics.offset,\n dataMin = series.dataMin,\n dataMax = series.dataMax;\n // postprocessed for border width\n var seriesBarW = series.barW =\n Math.max(seriesPointWidth, 1 + 2 * borderWidth);\n if (chart.inverted) {\n translatedThreshold -= 0.5; // #3355\n }\n // When the pointPadding is 0, we want the columns to be packed\n // tightly, so we allow individual columns to have individual sizes.\n // When pointPadding is greater, we strive for equal-width columns\n // (#2694).\n if (options.pointPadding) {\n seriesBarW = Math.ceil(seriesBarW);\n }\n Series.prototype.translate.apply(series);\n // Record the new values\n series.points.forEach(function (point) {\n var yBottom = pick(point.yBottom,\n translatedThreshold),\n safeDistance = 999 + Math.abs(yBottom),\n plotX = point.plotX || 0, \n // Don't draw too far outside plot area (#1303, #2241,\n // #4264)\n plotY = clamp(point.plotY, -safeDistance,\n yAxis.len + safeDistance);\n var up,\n barY = Math.min(plotY,\n yBottom),\n barH = Math.max(plotY,\n yBottom) - barY,\n pointWidth = seriesPointWidth,\n barX = plotX + seriesXOffset,\n barW = seriesBarW;\n // Handle options.minPointLength\n if (minPointLength && Math.abs(barH) < minPointLength) {\n barH = minPointLength;\n up = (!yAxis.reversed && !point.negative) ||\n (yAxis.reversed && point.negative);\n // Reverse zeros if there's no positive value in the series\n // in visible range (#7046)\n if (isNumber(threshold) &&\n isNumber(dataMax) &&\n point.y === threshold &&\n dataMax <= threshold &&\n // and if there's room for it (#7311)\n (yAxis.min || 0) < threshold &&\n // if all points are the same value (i.e zero) not draw\n // as negative points (#10646), but only if there's room\n // for it (#14876)\n (dataMin !== dataMax || (yAxis.max || 0) <= threshold)) {\n up = !up;\n }\n // If stacked...\n barY = (Math.abs(barY - translatedThreshold) > minPointLength ?\n // ...keep position\n yBottom - minPointLength :\n // #1485, #4051\n translatedThreshold -\n (up ? minPointLength : 0));\n }\n // Handle point.options.pointWidth\n // @todo Handle grouping/stacking too. Calculate offset properly\n if (defined(point.options.pointWidth)) {\n pointWidth = barW =\n Math.ceil(point.options.pointWidth);\n barX -= Math.round((pointWidth - seriesPointWidth) / 2);\n }\n // Adjust for null or missing points\n if (options.centerInCategory) {\n barX = series.adjustForMissingColumns(barX, pointWidth, point, metrics);\n }\n // Cache for access in polar\n point.barX = barX;\n point.pointWidth = pointWidth;\n // Fix the tooltip on center of grouped columns (#1216, #424,\n // #3648)\n point.tooltipPos = chart.inverted ?\n [\n clamp(yAxis.len + yAxis.pos - chart.plotLeft - plotY, yAxis.pos - chart.plotLeft, yAxis.len + yAxis.pos - chart.plotLeft),\n xAxis.len + xAxis.pos - chart.plotTop - barX - barW / 2,\n barH\n ] :\n [\n xAxis.left - chart.plotLeft + barX + barW / 2,\n clamp(plotY + yAxis.pos -\n chart.plotTop, yAxis.pos - chart.plotTop, yAxis.len + yAxis.pos - chart.plotTop),\n barH\n ];\n // Register shape type and arguments to be used in drawPoints\n // Allow shapeType defined on pointClass level\n point.shapeType = series.pointClass.prototype.shapeType || 'rect';\n point.shapeArgs = series.crispCol.apply(series, point.isNull ?\n // #3169, drilldown from null must have a position to work\n // from #6585, dataLabel should be placed on xAxis, not\n // floating in the middle of the chart\n [barX, translatedThreshold, barW, 0] :\n [barX, barY, barW, barH]);\n });\n };\n /**\n * Columns have no graph\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawGraph\n */\n ColumnSeries.prototype.drawGraph = function () {\n this.group[this.dense ? 'addClass' : 'removeClass']('highcharts-dense-data');\n };\n /**\n * Get presentational attributes\n *\n * @private\n * @function Highcharts.seriesTypes.column#pointAttribs\n */\n ColumnSeries.prototype.pointAttribs = function (point, state) {\n var options = this.options, p2o = this.pointAttrToOptions || {}, strokeOption = p2o.stroke || 'borderColor', strokeWidthOption = p2o['stroke-width'] || 'borderWidth';\n var stateOptions,\n zone,\n brightness,\n fill = (point && point.color) || this.color, \n // set to fill when borderColor null:\n stroke = ((point && point[strokeOption]) ||\n options[strokeOption] ||\n fill),\n dashstyle = (point && point.options.dashStyle) || options.dashStyle,\n strokeWidth = (point && point[strokeWidthOption]) ||\n options[strokeWidthOption] ||\n this[strokeWidthOption] || 0,\n opacity = pick(point && point.opacity,\n options.opacity, 1);\n // Handle zone colors\n if (point && this.zones.length) {\n zone = point.getZone();\n // When zones are present, don't use point.color (#4267).\n // Changed order (#6527), added support for colorAxis (#10670)\n fill = (point.options.color ||\n (zone && (zone.color || point.nonZonedColor)) ||\n this.color);\n if (zone) {\n stroke = zone.borderColor || stroke;\n dashstyle = zone.dashStyle || dashstyle;\n strokeWidth = zone.borderWidth || strokeWidth;\n }\n }\n // Select or hover states\n if (state && point) {\n stateOptions = merge(options.states[state], \n // #6401\n point.options.states &&\n point.options.states[state] ||\n {});\n brightness = stateOptions.brightness;\n fill =\n stateOptions.color || (typeof brightness !== 'undefined' &&\n color(fill)\n .brighten(stateOptions.brightness)\n .get()) || fill;\n stroke = stateOptions[strokeOption] || stroke;\n strokeWidth =\n stateOptions[strokeWidthOption] || strokeWidth;\n dashstyle = stateOptions.dashStyle || dashstyle;\n opacity = pick(stateOptions.opacity, opacity);\n }\n var ret = {\n fill: fill,\n stroke: stroke,\n 'stroke-width': strokeWidth,\n opacity: opacity\n };\n if (dashstyle) {\n ret.dashstyle = dashstyle;\n }\n return ret;\n };\n /**\n * Draw the columns. For bars, the series.group is rotated, so the same\n * coordinates apply for columns and bars. This method is inherited by\n * scatter series.\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawPoints\n */\n ColumnSeries.prototype.drawPoints = function () {\n var series = this,\n chart = this.chart,\n options = series.options,\n renderer = chart.renderer,\n animationLimit = options.animationLimit || 250;\n var shapeArgs;\n // draw the columns\n series.points.forEach(function (point) {\n var plotY = point.plotY;\n var graphic = point.graphic,\n hasGraphic = !!graphic,\n verb = graphic && chart.pointCount < animationLimit ?\n 'animate' : 'attr';\n if (isNumber(plotY) && point.y !== null) {\n shapeArgs = point.shapeArgs;\n // When updating a series between 2d and 3d or cartesian and\n // polar, the shape type changes.\n if (graphic && point.hasNewShapeType()) {\n graphic = graphic.destroy();\n }\n // Set starting position for point sliding animation.\n if (series.enabledDataSorting) {\n point.startXPos = series.xAxis.reversed ?\n -(shapeArgs ? (shapeArgs.width || 0) : 0) :\n series.xAxis.width;\n }\n if (!graphic) {\n point.graphic = graphic =\n renderer[point.shapeType](shapeArgs)\n .add(point.group || series.group);\n if (graphic &&\n series.enabledDataSorting &&\n chart.hasRendered &&\n chart.pointCount < animationLimit) {\n graphic.attr({\n x: point.startXPos\n });\n hasGraphic = true;\n verb = 'animate';\n }\n }\n if (graphic && hasGraphic) { // update\n graphic[verb](merge(shapeArgs));\n }\n // Border radius is not stylable (#6900)\n if (options.borderRadius) {\n graphic[verb]({\n r: options.borderRadius\n });\n }\n // Presentational\n if (!chart.styledMode) {\n graphic[verb](series.pointAttribs(point, (point.selected && 'select')))\n .shadow(point.allowShadow !== false && options.shadow, null, options.stacking && !options.borderRadius);\n }\n if (graphic) {\n graphic.addClass(point.getClassName(), true);\n graphic.attr({\n visibility: point.visible ? 'inherit' : 'hidden'\n });\n }\n }\n else if (graphic) {\n point.graphic = graphic.destroy(); // #1269\n }\n });\n };\n /**\n * Draw the tracker for a point.\n * @private\n */\n ColumnSeries.prototype.drawTracker = function () {\n var series = this,\n chart = series.chart,\n pointer = chart.pointer,\n onMouseOver = function (e) {\n var point = pointer.getPointFromEvent(e);\n // undefined on graph in scatterchart\n if (typeof point !== 'undefined') {\n pointer.isDirectTouch = true;\n point.onMouseOver(e);\n }\n };\n var dataLabels;\n // Add reference to the point\n series.points.forEach(function (point) {\n dataLabels = (isArray(point.dataLabels) ?\n point.dataLabels :\n (point.dataLabel ? [point.dataLabel] : []));\n if (point.graphic) {\n point.graphic.element.point = point;\n }\n dataLabels.forEach(function (dataLabel) {\n if (dataLabel.div) {\n dataLabel.div.point = point;\n }\n else {\n dataLabel.element.point = point;\n }\n });\n });\n // Add the event listeners, we need to do this only once\n if (!series._hasTracking) {\n series.trackerGroups.forEach(function (key) {\n if (series[key]) {\n // we don't always have dataLabelsGroup\n series[key]\n .addClass('highcharts-tracker')\n .on('mouseover', onMouseOver)\n .on('mouseout', function (e) {\n pointer.onTrackerMouseOut(e);\n });\n if (hasTouch) {\n series[key].on('touchstart', onMouseOver);\n }\n if (!chart.styledMode && series.options.cursor) {\n series[key]\n .css(css)\n .css({ cursor: series.options.cursor });\n }\n }\n });\n series._hasTracking = true;\n }\n fireEvent(this, 'afterDrawTracker');\n };\n /**\n * Remove this series from the chart\n *\n * @private\n * @function Highcharts.seriesTypes.column#remove\n */\n ColumnSeries.prototype.remove = function () {\n var series = this,\n chart = series.chart;\n // column and bar series affects other series of the same type\n // as they are either stacked or grouped\n if (chart.hasRendered) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.type === series.type) {\n otherSeries.isDirty = true;\n }\n });\n }\n Series.prototype.remove.apply(series, arguments);\n };\n /**\n * Column series display one column per value along an X axis.\n *\n * @sample {highcharts} highcharts/demo/column-basic/\n * Column chart\n * @sample {highstock} stock/demo/column/\n * Column chart\n *\n * @extends plotOptions.line\n * @excluding connectEnds, connectNulls, gapSize, gapUnit, linecap,\n * lineWidth, marker, step, useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.column\n */\n ColumnSeries.defaultOptions = merge(Series.defaultOptions, {\n /**\n * The corner radius of the border surrounding each column or bar.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderradius/\n * Rounded columns\n *\n * @product highcharts highstock gantt\n *\n * @private\n */\n borderRadius: 0,\n /**\n * When using automatic point colors pulled from the global\n * [colors](colors) or series-specific\n * [plotOptions.column.colors](series.colors) collections, this option\n * determines whether the chart should receive one color per series or\n * one color per point.\n *\n * In styled mode, the `colors` or `series.colors` arrays are not\n * supported, and instead this option gives the points individual color\n * class names on the form `highcharts-color-{n}`.\n *\n * @see [series colors](#plotOptions.column.colors)\n *\n * @sample {highcharts} highcharts/plotoptions/column-colorbypoint-false/\n * False by default\n * @sample {highcharts} highcharts/plotoptions/column-colorbypoint-true/\n * True\n *\n * @type {boolean}\n * @default false\n * @since 2.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.colorByPoint\n */\n /**\n * A series specific or series type specific color set to apply instead\n * of the global [colors](#colors) when [colorByPoint](\n * #plotOptions.column.colorByPoint) is true.\n *\n * @type {Array<Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject>}\n * @since 3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.colors\n */\n /**\n * When `true`, the columns will center in the category, ignoring null\n * or missing points. When `false`, space will be reserved for null or\n * missing points.\n *\n * @sample {highcharts} highcharts/series-column/centerincategory/\n * Center in category\n *\n * @since 8.0.1\n * @product highcharts highstock gantt\n *\n * @private\n */\n centerInCategory: false,\n /**\n * Padding between each value groups, in x axis units.\n *\n * @sample {highcharts} highcharts/plotoptions/column-grouppadding-default/\n * 0.2 by default\n * @sample {highcharts} highcharts/plotoptions/column-grouppadding-none/\n * No group padding - all columns are evenly spaced\n *\n * @product highcharts highstock gantt\n *\n * @private\n */\n groupPadding: 0.2,\n /**\n * Whether to group non-stacked columns or to let them render\n * independent of each other. Non-grouped columns will be laid out\n * individually and overlap each other.\n *\n * @sample {highcharts} highcharts/plotoptions/column-grouping-false/\n * Grouping disabled\n * @sample {highstock} highcharts/plotoptions/column-grouping-false/\n * Grouping disabled\n *\n * @type {boolean}\n * @default true\n * @since 2.3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.grouping\n */\n /**\n * @ignore-option\n * @private\n */\n marker: null,\n /**\n * The maximum allowed pixel width for a column, translated to the\n * height of a bar in a bar chart. This prevents the columns from\n * becoming too wide when there is a small number of points in the\n * chart.\n *\n * @see [pointWidth](#plotOptions.column.pointWidth)\n *\n * @sample {highcharts} highcharts/plotoptions/column-maxpointwidth-20/\n * Limited to 50\n * @sample {highstock} highcharts/plotoptions/column-maxpointwidth-20/\n * Limited to 50\n *\n * @type {number}\n * @since 4.1.8\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.maxPointWidth\n */\n /**\n * Padding between each column or bar, in x axis units.\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-default/\n * 0.1 by default\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-025/\n * 0.25\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-none/\n * 0 for tightly packed columns\n *\n * @product highcharts highstock gantt\n *\n * @private\n */\n pointPadding: 0.1,\n /**\n * A pixel value specifying a fixed width for each column or bar point.\n * When set to `undefined`, the width is calculated from the\n * `pointPadding` and `groupPadding`. The width effects the dimension\n * that is not based on the point value. For column series it is the\n * hoizontal length and for bar series it is the vertical length.\n *\n * @see [maxPointWidth](#plotOptions.column.maxPointWidth)\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointwidth-20/\n * 20px wide columns regardless of chart width or the amount of\n * data points\n *\n * @type {number}\n * @since 1.2.5\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.pointWidth\n */\n /**\n * A pixel value specifying a fixed width for the column or bar.\n * Overrides pointWidth on the series.\n *\n * @see [series.pointWidth](#plotOptions.column.pointWidth)\n *\n * @type {number}\n * @default undefined\n * @since 7.0.0\n * @product highcharts highstock gantt\n * @apioption series.column.data.pointWidth\n */\n /**\n * The minimal height for a column or width for a bar. By default,\n * 0 values are not shown. To visualize a 0 (or close to zero) point,\n * set the minimal point length to a pixel value like 3\\. In stacked\n * column charts, minPointLength might not be respected for tightly\n * packed values.\n *\n * @sample {highcharts} highcharts/plotoptions/column-minpointlength/\n * Zero base value\n * @sample {highcharts} highcharts/plotoptions/column-minpointlength-pos-and-neg/\n * Positive and negative close to zero values\n *\n * @product highcharts highstock gantt\n *\n * @private\n */\n minPointLength: 0,\n /**\n * When the series contains less points than the crop threshold, all\n * points are drawn, event if the points fall outside the visible plot\n * area at the current zoom. The advantage of drawing all points\n * (including markers and columns), is that animation is performed on\n * updates. On the other hand, when the series contains more points than\n * the crop threshold, the series data is cropped to only contain points\n * that fall within the plot area. The advantage of cropping away\n * invisible points is to increase performance on large series.\n *\n * @product highcharts highstock gantt\n *\n * @private\n */\n cropThreshold: 50,\n /**\n * The X axis range that each point is valid for. This determines the\n * width of the column. On a categorized axis, the range will be 1\n * by default (one category unit). On linear and datetime axes, the\n * range will be computed as the distance between the two closest data\n * points.\n *\n * The default `null` means it is computed automatically, but this\n * option can be used to override the automatic value.\n *\n * This option is set by default to 1 if data sorting is enabled.\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointrange/\n * Set the point range to one day on a data set with one week\n * between the points\n *\n * @type {number|null}\n * @since 2.3\n * @product highcharts highstock gantt\n *\n * @private\n */\n pointRange: null,\n states: {\n /**\n * Options for the hovered point. These settings override the normal\n * state options when a point is moused over or touched.\n *\n * @extends plotOptions.series.states.hover\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock gantt\n */\n hover: {\n /** @ignore-option */\n halo: false,\n /**\n * A specific border color for the hovered point. Defaults to\n * inherit the normal state border color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts gantt\n * @apioption plotOptions.column.states.hover.borderColor\n */\n /**\n * A specific color for the hovered point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts gantt\n * @apioption plotOptions.column.states.hover.color\n */\n /**\n * How much to brighten the point on interaction. Requires the\n * main color to be defined in hex or rgb(a) format.\n *\n * In styled mode, the hover brightening is by default replaced\n * with a fill-opacity set in the `.highcharts-point:hover`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-states-hover-brightness/\n * Brighten by 0.5\n *\n * @product highcharts highstock gantt\n */\n brightness: 0.1\n },\n /**\n * Options for the selected point. These settings override the\n * normal state options when a point is selected.\n *\n * @extends plotOptions.series.states.select\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock gantt\n */\n select: {\n /**\n * A specific color for the selected point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @product highcharts highstock gantt\n */\n color: \"#cccccc\" /* neutralColor20 */,\n /**\n * A specific border color for the selected point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @product highcharts highstock gantt\n */\n borderColor: \"#000000\" /* neutralColor100 */\n }\n },\n dataLabels: {\n align: void 0,\n verticalAlign: void 0,\n /**\n * The y position offset of the label relative to the point in\n * pixels.\n *\n * @type {number}\n */\n y: void 0\n },\n // false doesn't work well: https://jsfiddle.net/highcharts/hz8fopan/14/\n /**\n * @ignore-option\n * @private\n */\n startFromThreshold: true,\n stickyTracking: false,\n tooltip: {\n distance: 6\n },\n /**\n * The Y axis value to serve as the base for the columns, for\n * distinguishing between values above and below a threshold. If `null`,\n * the columns extend from the padding Y axis minimum.\n *\n * @type {number|null}\n * @since 2.0\n * @product highcharts\n *\n * @private\n */\n threshold: 0,\n /**\n * The width of the border surrounding each column or bar. Defaults to\n * `1` when there is room for a border, but to `0` when the columns are\n * so dense that a border would cover the next column.\n *\n * In styled mode, the stroke width can be set with the\n * `.highcharts-point` rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderwidth/\n * 2px black border\n *\n * @type {number}\n * @default undefined\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.borderWidth\n */\n /**\n * The color of the border surrounding each column or bar.\n *\n * In styled mode, the border stroke can be set with the\n * `.highcharts-point` rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-bordercolor/\n * Dark gray border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @product highcharts highstock gantt\n *\n * @private\n */\n borderColor: \"#ffffff\" /* backgroundColor */\n });\n return ColumnSeries;\n }(Series));\n extend(ColumnSeries.prototype, {\n cropShoulder: 0,\n // When tooltip is not shared, this series (and derivatives) requires\n // direct touch/hover. KD-tree does not apply.\n directTouch: true,\n /**\n * Use a solid rectangle like the area series types\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawLegendSymbol\n *\n * @param {Highcharts.Legend} legend\n * The legend object\n *\n * @param {Highcharts.Series|Highcharts.Point} item\n * The series (this) or point\n */\n drawLegendSymbol: LegendSymbol.drawRectangle,\n getSymbol: noop,\n // use separate negative stacks, unlike area stacks where a negative\n // point is substracted from previous (#1910)\n negStacks: true,\n trackerGroups: ['group', 'dataLabelsGroup']\n });\n SeriesRegistry.registerSeriesType('column', ColumnSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Adjusted width and x offset of the columns for grouping.\n *\n * @private\n * @interface Highcharts.ColumnMetricsObject\n */ /**\n * Width of the columns.\n * @name Highcharts.ColumnMetricsObject#width\n * @type {number}\n */ /**\n * Offset of the columns.\n * @name Highcharts.ColumnMetricsObject#offset\n * @type {number}\n */\n ''; // detach doclets above\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `column` series. If the [type](#series.column.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.column\n * @excluding connectNulls, dataParser, dataURL, gapSize, gapUnit, linecap,\n * lineWidth, marker, connectEnds, step\n * @product highcharts highstock\n * @apioption series.column\n */\n /**\n * An array of data points for the series. For the `column` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 6],\n * [1, 2],\n * [2, 6]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.column.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @excluding marker\n * @product highcharts highstock\n * @apioption series.column.data\n */\n /**\n * The color of the border surrounding the column or bar.\n *\n * In styled mode, the border stroke can be set with the `.highcharts-point`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-bordercolor/\n * Dark gray border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption series.column.data.borderColor\n */\n /**\n * The width of the border surrounding the column or bar.\n *\n * In styled mode, the stroke width can be set with the `.highcharts-point`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderwidth/\n * 2px black border\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.column.data.borderWidth\n */\n /**\n * A name for the dash style to use for the column or bar. Overrides\n * dashStyle on the series.\n *\n * In styled mode, the stroke dash-array can be set with the same classes as\n * listed under [data.color](#series.column.data.color).\n *\n * @see [series.pointWidth](#plotOptions.column.dashStyle)\n *\n * @type {Highcharts.DashStyleValue}\n * @apioption series.column.data.dashStyle\n */\n /**\n * A pixel value specifying a fixed width for the column or bar. Overrides\n * pointWidth on the series. The width effects the dimension that is not based\n * on the point value.\n *\n * @see [series.pointWidth](#plotOptions.column.pointWidth)\n *\n * @type {number}\n * @apioption series.column.data.pointWidth\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.column.states.hover\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.column.states.select\n */\n ''; // keeps doclets above in JS file\n\n return ColumnSeries;\n });\n _registerModule(_modules, 'Core/Series/DataLabel.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (A, F, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var getDeferredAnimation = A.getDeferredAnimation;\n var format = F.format;\n var defined = U.defined,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n splat = U.splat;\n /* *\n *\n * Composition\n *\n * */\n /* eslint-disable valid-jsdoc */\n var DataLabel;\n (function (DataLabel) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Align each individual data label.\n * @private\n */\n function alignDataLabel(point, dataLabel, options, alignTo, isNew) {\n var series = this,\n chart = this.chart,\n inverted = this.isCartesian && chart.inverted,\n enabledDataSorting = this.enabledDataSorting,\n plotX = pick(point.dlBox && point.dlBox.centerX,\n point.plotX, -9999),\n plotY = pick(point.plotY, -9999),\n bBox = dataLabel.getBBox(),\n rotation = options.rotation,\n align = options.align,\n isInsidePlot = chart.isInsidePlot(plotX,\n Math.round(plotY), {\n inverted: inverted,\n paneCoordinates: true,\n series: series\n }),\n setStartPos = function (alignOptions) {\n if (enabledDataSorting && series.xAxis && !justify) {\n series.setDataLabelStartPos(point,\n dataLabel,\n isNew,\n isInsidePlot,\n alignOptions);\n }\n };\n var baseline,\n normRotation,\n negRotation,\n rotCorr, // rotation correction\n // Math.round for rounding errors (#2683), alignTo to allow column\n // labels (#2700)\n alignAttr, // the final position;\n justify = pick(options.overflow, (enabledDataSorting ? 'none' : 'justify')) === 'justify', visible = this.visible &&\n point.visible !== false &&\n (point.series.forceDL ||\n (enabledDataSorting && !justify) ||\n isInsidePlot ||\n (\n // If the data label is inside the align box, it is\n // enough that parts of the align box is inside the\n // plot area (#12370). When stacking, it is always\n // inside regardless of the option (#15148).\n pick(options.inside, !!this.options.stacking) &&\n alignTo &&\n chart.isInsidePlot(plotX, inverted ?\n alignTo.x + 1 :\n alignTo.y + alignTo.height - 1, {\n inverted: inverted,\n paneCoordinates: true,\n series: series\n })));\n if (visible) {\n baseline = chart.renderer.fontMetrics(chart.styledMode ? void 0 : options.style.fontSize, dataLabel).b;\n // The alignment box is a singular point\n alignTo = extend({\n x: inverted ? this.yAxis.len - plotY : plotX,\n y: Math.round(inverted ? this.xAxis.len - plotX : plotY),\n width: 0,\n height: 0\n }, alignTo);\n // Add the text size for alignment calculation\n extend(options, {\n width: bBox.width,\n height: bBox.height\n });\n // Allow a hook for changing alignment in the last moment, then do\n // the alignment\n if (rotation) {\n justify = false; // Not supported for rotated text\n rotCorr = chart.renderer.rotCorr(baseline, rotation); // #3723\n alignAttr = {\n x: (alignTo.x +\n (options.x || 0) +\n alignTo.width / 2 +\n rotCorr.x),\n y: (alignTo.y +\n (options.y || 0) +\n { top: 0, middle: 0.5, bottom: 1 }[options.verticalAlign] *\n alignTo.height)\n };\n setStartPos(alignAttr); // data sorting\n dataLabel[isNew ? 'attr' : 'animate'](alignAttr)\n .attr({\n align: align\n });\n // Compensate for the rotated label sticking out on the sides\n normRotation = (rotation + 720) % 360;\n negRotation = normRotation > 180 && normRotation < 360;\n if (align === 'left') {\n alignAttr.y -= negRotation ? bBox.height : 0;\n }\n else if (align === 'center') {\n alignAttr.x -= bBox.width / 2;\n alignAttr.y -= bBox.height / 2;\n }\n else if (align === 'right') {\n alignAttr.x -= bBox.width;\n alignAttr.y -= negRotation ? 0 : bBox.height;\n }\n dataLabel.placed = true;\n dataLabel.alignAttr = alignAttr;\n }\n else {\n setStartPos(alignTo); // data sorting\n dataLabel.align(options, void 0, alignTo);\n alignAttr = dataLabel.alignAttr;\n }\n // Handle justify or crop\n if (justify && alignTo.height >= 0) { // #8830\n this.justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew);\n // Now check that the data label is within the plot area\n }\n else if (pick(options.crop, true)) {\n visible =\n chart.isInsidePlot(alignAttr.x, alignAttr.y, {\n paneCoordinates: true,\n series: series\n }) &&\n chart.isInsidePlot(alignAttr.x + bBox.width, alignAttr.y + bBox.height, {\n paneCoordinates: true,\n series: series\n });\n }\n // When we're using a shape, make it possible with a connector or an\n // arrow pointing to thie point\n if (options.shape && !rotation) {\n dataLabel[isNew ? 'attr' : 'animate']({\n anchorX: inverted ?\n chart.plotWidth - point.plotY :\n point.plotX,\n anchorY: inverted ?\n chart.plotHeight - point.plotX :\n point.plotY\n });\n }\n }\n // To use alignAttr property in hideOverlappingLabels\n if (isNew && enabledDataSorting) {\n dataLabel.placed = false;\n }\n // Show or hide based on the final aligned position\n if (!visible && (!enabledDataSorting || justify)) {\n dataLabel.hide(true);\n dataLabel.placed = false; // don't animate back in\n }\n }\n /**\n * Handle the dataLabels.filter option.\n * @private\n */\n function applyFilter(point, options) {\n var filter = options.filter;\n if (filter) {\n var op = filter.operator;\n var prop = point[filter.property];\n var val = filter.value;\n if ((op === '>' && prop > val) ||\n (op === '<' && prop < val) ||\n (op === '>=' && prop >= val) ||\n (op === '<=' && prop <= val) ||\n (op === '==' && prop == val) || // eslint-disable-line eqeqeq\n (op === '===' && prop === val)) {\n return true;\n }\n return false;\n }\n return true;\n }\n /**\n * @private\n */\n function compose(SeriesClass) {\n if (composedClasses.indexOf(SeriesClass) === -1) {\n var seriesProto = SeriesClass.prototype;\n composedClasses.push(SeriesClass);\n seriesProto.alignDataLabel = alignDataLabel;\n seriesProto.drawDataLabels = drawDataLabels;\n seriesProto.justifyDataLabel = justifyDataLabel;\n seriesProto.setDataLabelStartPos = setDataLabelStartPos;\n }\n }\n DataLabel.compose = compose;\n /**\n * Draw the data labels\n * @private\n */\n function drawDataLabels() {\n var series = this,\n chart = series.chart,\n seriesOptions = series.options,\n points = series.points,\n hasRendered = series.hasRendered || 0,\n renderer = chart.renderer;\n var seriesDlOptions = seriesOptions.dataLabels,\n pointOptions,\n dataLabelsGroup;\n var dataLabelAnim = seriesDlOptions.animation,\n animationConfig = seriesDlOptions.defer ?\n getDeferredAnimation(chart,\n dataLabelAnim,\n series) :\n { defer: 0,\n duration: 0 };\n // Merge in plotOptions.dataLabels for series\n seriesDlOptions = mergeArrays(mergeArrays(chart.options.plotOptions &&\n chart.options.plotOptions.series &&\n chart.options.plotOptions.series.dataLabels, chart.options.plotOptions &&\n chart.options.plotOptions[series.type] &&\n chart.options.plotOptions[series.type].dataLabels), seriesDlOptions);\n fireEvent(this, 'drawDataLabels');\n if (isArray(seriesDlOptions) ||\n seriesDlOptions.enabled ||\n series._hasPointLabels) {\n // Create a separate group for the data labels to avoid rotation\n dataLabelsGroup = series.plotGroup('dataLabelsGroup', 'data-labels', !hasRendered ? 'hidden' : 'inherit', // #5133, #10220\n seriesDlOptions.zIndex || 6);\n dataLabelsGroup.attr({ opacity: +hasRendered }); // #3300\n if (!hasRendered) {\n var group = series.dataLabelsGroup;\n if (group) {\n if (series.visible) { // #2597, #3023, #3024\n dataLabelsGroup.show(true);\n }\n group[seriesOptions.animation ? 'animate' : 'attr']({ opacity: 1 }, animationConfig);\n }\n }\n // Make the labels for each point\n points.forEach(function (point) {\n // Merge in series options for the point.\n // @note dataLabelAttribs (like pointAttribs) would eradicate\n // the need for dlOptions, and simplify the section below.\n pointOptions = splat(mergeArrays(seriesDlOptions, \n // dlOptions is used in treemaps\n (point.dlOptions ||\n (point.options && point.options.dataLabels))));\n // Handle each individual data label for this point\n pointOptions.forEach(function (labelOptions, i) {\n // Options for one datalabel\n var labelEnabled = (labelOptions.enabled &&\n // #2282, #4641, #7112, #10049\n (!point.isNull || point.dataLabelOnNull) &&\n applyFilter(point,\n labelOptions)),\n connector = point.connectors ?\n point.connectors[i] :\n point.connector;\n var labelConfig,\n formatString,\n labelText,\n style,\n rotation,\n attr,\n dataLabel = point.dataLabels ?\n point.dataLabels[i] : point.dataLabel;\n var labelDistance = pick(labelOptions.distance,\n point.labelDistance),\n isNew = !dataLabel;\n if (labelEnabled) {\n // Create individual options structure that can be\n // extended without affecting others\n labelConfig = point.getLabelConfig();\n formatString = pick(labelOptions[point.formatPrefix + 'Format'], labelOptions.format);\n labelText = defined(formatString) ?\n format(formatString, labelConfig, chart) :\n (labelOptions[point.formatPrefix + 'Formatter'] ||\n labelOptions.formatter).call(labelConfig, labelOptions);\n style = labelOptions.style;\n rotation = labelOptions.rotation;\n if (!chart.styledMode) {\n // Determine the color\n style.color = pick(labelOptions.color, style.color, series.color, \"#000000\" /* neutralColor100 */);\n // Get automated contrast color\n if (style.color === 'contrast') {\n point.contrastColor = renderer.getContrast((point.color || series.color));\n style.color = (!defined(labelDistance) &&\n labelOptions.inside) ||\n labelDistance < 0 ||\n !!seriesOptions.stacking ?\n point.contrastColor :\n \"#000000\" /* neutralColor100 */;\n }\n else {\n delete point.contrastColor;\n }\n if (seriesOptions.cursor) {\n style.cursor = seriesOptions.cursor;\n }\n }\n attr = {\n r: labelOptions.borderRadius || 0,\n rotation: rotation,\n padding: labelOptions.padding,\n zIndex: 1\n };\n if (!chart.styledMode) {\n attr.fill = labelOptions.backgroundColor;\n attr.stroke = labelOptions.borderColor;\n attr['stroke-width'] = labelOptions.borderWidth;\n }\n // Remove unused attributes (#947)\n objectEach(attr, function (val, name) {\n if (typeof val === 'undefined') {\n delete attr[name];\n }\n });\n }\n // If the point is outside the plot area, destroy it. #678,\n // #820\n if (dataLabel && (!labelEnabled ||\n !defined(labelText) ||\n !!dataLabel.div !== !!labelOptions.useHTML)) {\n point.dataLabel = dataLabel =\n point.dataLabel && point.dataLabel.destroy();\n if (point.dataLabels) {\n // Remove point.dataLabels if this was the last one\n if (point.dataLabels.length === 1) {\n delete point.dataLabels;\n }\n else {\n delete point.dataLabels[i];\n }\n }\n if (!i) {\n delete point.dataLabel;\n }\n if (connector) {\n point.connector = point.connector.destroy();\n if (point.connectors) {\n // Remove point.connectors if this was the last\n // one\n if (point.connectors.length === 1) {\n delete point.connectors;\n }\n else {\n delete point.connectors[i];\n }\n }\n }\n }\n // Individual labels are disabled if the are explicitly\n // disabled in the point options, or if they fall outside\n // the plot area.\n if (labelEnabled && defined(labelText)) {\n if (!dataLabel) {\n // Create new label element\n point.dataLabels = point.dataLabels || [];\n dataLabel = point.dataLabels[i] = rotation ?\n // Labels don't rotate, use text element\n renderer.text(labelText, 0, -9999, labelOptions.useHTML)\n .addClass('highcharts-data-label') :\n // We can use label\n renderer.label(labelText, 0, -9999, labelOptions.shape, null, null, labelOptions.useHTML, null, 'data-label');\n // Store for backwards compatibility\n if (!i) {\n point.dataLabel = dataLabel;\n }\n dataLabel.addClass(' highcharts-data-label-color-' +\n point.colorIndex +\n ' ' + (labelOptions.className || '') +\n ( // #3398\n labelOptions.useHTML ?\n ' highcharts-tracker' :\n ''));\n }\n else {\n // Use old element and just update text\n attr.text = labelText;\n }\n // Store data label options for later access\n dataLabel.options = labelOptions;\n dataLabel.attr(attr);\n if (!chart.styledMode) {\n // Styles must be applied before add in order to\n // read text bounding box\n dataLabel.css(style).shadow(labelOptions.shadow);\n }\n if (!dataLabel.added) {\n dataLabel.add(dataLabelsGroup);\n }\n if (labelOptions.textPath && !labelOptions.useHTML) {\n dataLabel.setTextPath((point.getDataLabelPath &&\n point.getDataLabelPath(dataLabel)) || point.graphic, labelOptions.textPath);\n if (point.dataLabelPath &&\n !labelOptions.textPath.enabled) {\n // clean the DOM\n point.dataLabelPath = (point.dataLabelPath.destroy());\n }\n }\n // Now the data label is created and placed at 0,0, so\n // we need to align it\n series.alignDataLabel(point, dataLabel, labelOptions, null, isNew);\n }\n });\n });\n }\n fireEvent(this, 'afterDrawDataLabels');\n }\n /**\n * If data labels fall partly outside the plot area, align them back in, in\n * a way that doesn't hide the point.\n * @private\n */\n function justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew) {\n var chart = this.chart,\n align = options.align,\n verticalAlign = options.verticalAlign,\n padding = dataLabel.box ? 0 : (dataLabel.padding || 0);\n var _a = options.x,\n x = _a === void 0 ? 0 : _a,\n _b = options.y,\n y = _b === void 0 ? 0 : _b,\n off,\n justified;\n // Off left\n off = (alignAttr.x || 0) + padding;\n if (off < 0) {\n if (align === 'right' && x >= 0) {\n options.align = 'left';\n options.inside = true;\n }\n else {\n x -= off;\n }\n justified = true;\n }\n // Off right\n off = (alignAttr.x || 0) + bBox.width - padding;\n if (off > chart.plotWidth) {\n if (align === 'left' && x <= 0) {\n options.align = 'right';\n options.inside = true;\n }\n else {\n x += chart.plotWidth - off;\n }\n justified = true;\n }\n // Off top\n off = alignAttr.y + padding;\n if (off < 0) {\n if (verticalAlign === 'bottom' && y >= 0) {\n options.verticalAlign = 'top';\n options.inside = true;\n }\n else {\n y -= off;\n }\n justified = true;\n }\n // Off bottom\n off = (alignAttr.y || 0) + bBox.height - padding;\n if (off > chart.plotHeight) {\n if (verticalAlign === 'top' && y <= 0) {\n options.verticalAlign = 'bottom';\n options.inside = true;\n }\n else {\n y += chart.plotHeight - off;\n }\n justified = true;\n }\n if (justified) {\n options.x = x;\n options.y = y;\n dataLabel.placed = !isNew;\n dataLabel.align(options, void 0, alignTo);\n }\n return justified;\n }\n /**\n * Merge two objects that can be arrays. If one of them is an array, the\n * other is merged into each element. If both are arrays, each element is\n * merged by index. If neither are arrays, we use normal merge.\n * @private\n */\n function mergeArrays(one, two) {\n var res = [],\n i;\n if (isArray(one) && !isArray(two)) {\n res = one.map(function (el) {\n return merge(el, two);\n });\n }\n else if (isArray(two) && !isArray(one)) {\n res = two.map(function (el) {\n return merge(one, el);\n });\n }\n else if (!isArray(one) && !isArray(two)) {\n res = merge(one, two);\n }\n else {\n i = Math.max(one.length, two.length);\n while (i--) {\n res[i] = merge(one[i], two[i]);\n }\n }\n return res;\n }\n /**\n * Set starting position for data label sorting animation.\n * @private\n */\n function setDataLabelStartPos(point, dataLabel, isNew, isInside, alignOptions) {\n var chart = this.chart,\n inverted = chart.inverted,\n xAxis = this.xAxis,\n reversed = xAxis.reversed,\n labelCenter = inverted ? dataLabel.height / 2 : dataLabel.width / 2,\n pointWidth = point.pointWidth,\n halfWidth = pointWidth ? pointWidth / 2 : 0;\n dataLabel.startXPos = inverted ?\n alignOptions.x :\n (reversed ?\n -labelCenter - halfWidth :\n xAxis.width - labelCenter + halfWidth);\n dataLabel.startYPos = inverted ?\n (reversed ?\n this.yAxis.height - labelCenter + halfWidth :\n -labelCenter - halfWidth) : alignOptions.y;\n // We need to handle visibility in case of sorting point outside plot\n // area\n if (!isInside) {\n dataLabel\n .attr({ opacity: 1 })\n .animate({ opacity: 0 }, void 0, dataLabel.hide);\n }\n else if (dataLabel.visibility === 'hidden') {\n dataLabel.show();\n dataLabel\n .attr({ opacity: 0 })\n .animate({ opacity: 1 });\n }\n // Save start position on first render, but do not change position\n if (!chart.hasRendered) {\n return;\n }\n // Set start position\n if (isNew) {\n dataLabel.attr({ x: dataLabel.startXPos, y: dataLabel.startYPos });\n }\n dataLabel.placed = true;\n }\n })(DataLabel || (DataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback JavaScript function to format the data label as a string. Note that\n * if a `format` is defined, the format takes precedence and the formatter is\n * ignored.\n *\n * @callback Highcharts.DataLabelsFormatterCallbackFunction\n *\n * @param {Highcharts.PointLabelObject} this\n * Data label context to format\n *\n * @param {Highcharts.DataLabelsOptions} options\n * [API options](/highcharts/plotOptions.series.dataLabels) of the data label\n *\n * @return {number|string|null|undefined}\n * Formatted data label text\n */\n /**\n * Values for handling data labels that flow outside the plot area.\n *\n * @typedef {\"allow\"|\"justify\"} Highcharts.DataLabelsOverflowValue\n */\n ''; // keeps doclets above in JS file\n\n return DataLabel;\n });\n _registerModule(_modules, 'Series/Column/ColumnDataLabel.js', [_modules['Core/Series/DataLabel.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (DataLabel, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var Series = SeriesRegistry.series;\n var merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Composition\n *\n * */\n var ColumnDataLabel;\n (function (ColumnDataLabel) {\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Override the basic data label alignment by adjusting for the position of\n * the column.\n * @private\n */\n function alignDataLabel(point, dataLabel, options, alignTo, isNew) {\n var inverted = this.chart.inverted,\n series = point.series,\n xLen = (series.xAxis ? series.xAxis.len : this.chart.plotSizeX) || 0,\n yLen = (series.yAxis ? series.yAxis.len : this.chart.plotSizeY) || 0, \n // data label box for alignment\n dlBox = point.dlBox || point.shapeArgs,\n below = pick(point.below, // range series\n point.plotY >\n pick(this.translatedThreshold,\n yLen)), \n // draw it inside the box?\n inside = pick(options.inside, !!this.options.stacking),\n overshoot;\n // Align to the column itself, or the top of it\n if (dlBox) { // Area range uses this method but not alignTo\n alignTo = merge(dlBox);\n if (alignTo.y < 0) {\n alignTo.height += alignTo.y;\n alignTo.y = 0;\n }\n // If parts of the box overshoots outside the plot area, modify the\n // box to center the label inside\n overshoot = alignTo.y + alignTo.height - yLen;\n if (overshoot > 0 && overshoot < alignTo.height) {\n alignTo.height -= overshoot;\n }\n if (inverted) {\n alignTo = {\n x: yLen - alignTo.y - alignTo.height,\n y: xLen - alignTo.x - alignTo.width,\n width: alignTo.height,\n height: alignTo.width\n };\n }\n // Compute the alignment box\n if (!inside) {\n if (inverted) {\n alignTo.x += below ? 0 : alignTo.width;\n alignTo.width = 0;\n }\n else {\n alignTo.y += below ? alignTo.height : 0;\n alignTo.height = 0;\n }\n }\n }\n // When alignment is undefined (typically columns and bars), display the\n // individual point below or above the point depending on the threshold\n options.align = pick(options.align, !inverted || inside ? 'center' : below ? 'right' : 'left');\n options.verticalAlign = pick(options.verticalAlign, inverted || inside ? 'middle' : below ? 'top' : 'bottom');\n // Call the parent method\n Series.prototype.alignDataLabel.call(this, point, dataLabel, options, alignTo, isNew);\n // If label was justified and we have contrast, set it:\n if (options.inside && point.contrastColor) {\n dataLabel.css({\n color: point.contrastColor\n });\n }\n }\n /** @private */\n function compose(ColumnSeriesClass) {\n DataLabel.compose(Series);\n if (composedClasses.indexOf(ColumnSeriesClass) === -1) {\n composedClasses.push(ColumnSeriesClass);\n ColumnSeriesClass.prototype.alignDataLabel = alignDataLabel;\n }\n }\n ColumnDataLabel.compose = compose;\n })(ColumnDataLabel || (ColumnDataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnDataLabel;\n });\n _registerModule(_modules, 'Series/Bar/BarSeries.js', [_modules['Series/Column/ColumnSeries.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ColumnSeries, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * Bar series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.bar\n *\n * @augments Highcharts.Series\n */\n var BarSeries = /** @class */ (function (_super) {\n __extends(BarSeries, _super);\n function BarSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /**\n * A bar series is a special type of column series where the columns are\n * horizontal.\n *\n * @sample highcharts/demo/bar-basic/\n * Bar chart\n *\n * @extends plotOptions.column\n * @product highcharts\n * @optionparent plotOptions.bar\n */\n BarSeries.defaultOptions = merge(ColumnSeries.defaultOptions, {\n // nothing here yet\n });\n return BarSeries;\n }(ColumnSeries));\n extend(BarSeries.prototype, {\n inverted: true\n });\n SeriesRegistry.registerSeriesType('bar', BarSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `bar` series. If the [type](#series.bar.type) option is not specified,\n * it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.bar\n * @excluding connectNulls, dashStyle, dataParser, dataURL, gapSize, gapUnit,\n * linecap, lineWidth, marker, connectEnds, step\n * @product highcharts\n * @apioption series.bar\n */\n /**\n * An array of data points for the series. For the `bar` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 5],\n * [1, 10],\n * [2, 3]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.bar.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 10,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.column.data\n * @product highcharts\n * @apioption series.bar.data\n */\n /**\n * @excluding halo,lineWidth,lineWidthPlus,marker\n * @product highcharts highstock\n * @apioption series.bar.states.hover\n */\n /**\n * @excluding halo,lineWidth,lineWidthPlus,marker\n * @product highcharts highstock\n * @apioption series.bar.states.select\n */\n ''; // gets doclets above into transpilat\n\n return BarSeries;\n });\n _registerModule(_modules, 'Series/Scatter/ScatterSeries.js', [_modules['Series/Column/ColumnSeries.js'], _modules['Series/Line/LineSeries.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ColumnSeries, LineSeries, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var addEvent = U.addEvent,\n extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * Scatter series type.\n *\n * @private\n */\n var ScatterSeries = /** @class */ (function (_super) {\n __extends(ScatterSeries, _super);\n function ScatterSeries() {\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Optionally add the jitter effect.\n * @private\n */\n ScatterSeries.prototype.applyJitter = function () {\n var series = this,\n jitter = this.options.jitter,\n len = this.points.length;\n /**\n * Return a repeatable, pseudo-random number based on an integer\n * seed.\n * @private\n */\n function unrandom(seed) {\n var rand = Math.sin(seed) * 10000;\n return rand - Math.floor(rand);\n }\n if (jitter) {\n this.points.forEach(function (point, i) {\n ['x', 'y'].forEach(function (dim, j) {\n var axis,\n plotProp = 'plot' + dim.toUpperCase(),\n min,\n max,\n translatedJitter;\n if (jitter[dim] && !point.isNull) {\n axis = series[dim + 'Axis'];\n translatedJitter =\n jitter[dim] * axis.transA;\n if (axis && !axis.isLog) {\n // Identify the outer bounds of the jitter range\n min = Math.max(0, point[plotProp] - translatedJitter);\n max = Math.min(axis.len, point[plotProp] + translatedJitter);\n // Find a random position within this range\n point[plotProp] = min +\n (max - min) * unrandom(i + j * len);\n // Update clientX for the tooltip k-d-tree\n if (dim === 'x') {\n point.clientX = point.plotX;\n }\n }\n }\n });\n });\n }\n };\n /**\n * @private\n * @function Highcharts.seriesTypes.scatter#drawGraph\n */\n ScatterSeries.prototype.drawGraph = function () {\n if (this.options.lineWidth) {\n _super.prototype.drawGraph.call(this);\n }\n else if (this.graph) {\n this.graph = this.graph.destroy();\n }\n };\n /**\n * A scatter plot uses cartesian coordinates to display values for two\n * variables for a set of data.\n *\n * @sample {highcharts} highcharts/demo/scatter/\n * Scatter plot\n *\n * @extends plotOptions.line\n * @excluding cropThreshold, pointPlacement, shadow, useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.scatter\n */\n ScatterSeries.defaultOptions = merge(LineSeries.defaultOptions, {\n /**\n * The width of the line connecting the data points.\n *\n * @sample {highcharts} highcharts/plotoptions/scatter-linewidth-none/\n * 0 by default\n * @sample {highcharts} highcharts/plotoptions/scatter-linewidth-1/\n * 1px\n *\n * @product highcharts highstock\n */\n lineWidth: 0,\n findNearestPointBy: 'xy',\n /**\n * Apply a jitter effect for the rendered markers. When plotting\n * discrete values, a little random noise may help telling the points\n * apart. The jitter setting applies a random displacement of up to `n`\n * axis units in either direction. So for example on a horizontal X\n * axis, setting the `jitter.x` to 0.24 will render the point in a\n * random position between 0.24 units to the left and 0.24 units to the\n * right of the true axis position. On a category axis, setting it to\n * 0.5 will fill up the bin and make the data appear continuous.\n *\n * When rendered on top of a box plot or a column series, a jitter value\n * of 0.24 will correspond to the underlying series' default\n * [groupPadding](\n * https://api.highcharts.com/highcharts/plotOptions.column.groupPadding)\n * and [pointPadding](\n * https://api.highcharts.com/highcharts/plotOptions.column.pointPadding)\n * settings.\n *\n * @sample {highcharts} highcharts/series-scatter/jitter\n * Jitter on a scatter plot\n *\n * @sample {highcharts} highcharts/series-scatter/jitter-boxplot\n * Jittered scatter plot on top of a box plot\n *\n * @product highcharts highstock\n * @since 7.0.2\n */\n jitter: {\n /**\n * The maximal X offset for the random jitter effect.\n */\n x: 0,\n /**\n * The maximal Y offset for the random jitter effect.\n */\n y: 0\n },\n marker: {\n enabled: true // Overrides auto-enabling in line series (#3647)\n },\n /**\n * Sticky tracking of mouse events. When true, the `mouseOut` event\n * on a series isn't triggered until the mouse moves over another\n * series, or out of the plot area. When false, the `mouseOut` event on\n * a series is triggered when the mouse leaves the area around the\n * series' graph or markers. This also implies the tooltip. When\n * `stickyTracking` is false and `tooltip.shared` is false, the tooltip\n * will be hidden when moving the mouse between series.\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock\n * @apioption plotOptions.scatter.stickyTracking\n */\n /**\n * A configuration object for the tooltip rendering of each single\n * series. Properties are inherited from [tooltip](#tooltip).\n * Overridable properties are `headerFormat`, `pointFormat`,\n * `yDecimals`, `xDateFormat`, `yPrefix` and `ySuffix`. Unlike other\n * series, in a scatter plot the series.name by default shows in the\n * headerFormat and point.x and point.y in the pointFormat.\n *\n * @product highcharts highstock\n */\n tooltip: {\n headerFormat: '<span style=\"color:{point.color}\">\\u25CF</span> ' +\n '<span style=\"font-size: 10px\"> {series.name}</span><br/>',\n pointFormat: 'x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>'\n }\n });\n return ScatterSeries;\n }(LineSeries));\n extend(ScatterSeries.prototype, {\n drawTracker: ColumnSeries.prototype.drawTracker,\n sorted: false,\n requireSorting: false,\n noSharedTooltip: true,\n trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],\n takeOrdinalPosition: false // #2342\n });\n /* *\n *\n * Events\n *\n * */\n /* eslint-disable no-invalid-this */\n addEvent(ScatterSeries, 'afterTranslate', function () {\n this.applyJitter();\n });\n SeriesRegistry.registerSeriesType('scatter', ScatterSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `scatter` series. If the [type](#series.scatter.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.scatter\n * @excluding cropThreshold, dataParser, dataURL, useOhlcData\n * @product highcharts highstock\n * @apioption series.scatter\n */\n /**\n * An array of data points for the series. For the `scatter` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 0],\n * [1, 8],\n * [2, 9]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.scatter.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 2,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.scatter.data\n */\n ''; // adds doclets above to transpilat\n\n return ScatterSeries;\n });\n _registerModule(_modules, 'Series/CenteredUtilities.js', [_modules['Core/Globals.js'], _modules['Core/Series/Series.js'], _modules['Core/Utilities.js']], function (H, Series, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var deg2rad = H.deg2rad;\n var isNumber = U.isNumber,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /**\n * @private\n */\n var CenteredUtilities;\n (function (CenteredUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the center of the pie based on the size and center options relative\n * to the plot area. Borrowed by the polar and gauge series types.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getCenter\n */\n function getCenter() {\n var options = this.options,\n chart = this.chart,\n slicingRoom = 2 * (options.slicedOffset || 0),\n plotWidth = chart.plotWidth - 2 * slicingRoom,\n plotHeight = chart.plotHeight - 2 * slicingRoom,\n centerOption = options.center,\n smallestSize = Math.min(plotWidth,\n plotHeight);\n var handleSlicingRoom,\n size = options.size,\n innerSize = options.innerSize || 0,\n i,\n value;\n if (typeof size === 'string') {\n size = parseFloat(size);\n }\n if (typeof innerSize === 'string') {\n innerSize = parseFloat(innerSize);\n }\n var positions = [\n pick(centerOption[0], '50%'),\n pick(centerOption[1], '50%'),\n // Prevent from negative values\n pick(size && size < 0 ? void 0 : options.size, '100%'),\n pick(innerSize && innerSize < 0 ? void 0 : options.innerSize || 0, '0%')\n ];\n // No need for inner size in angular (gauges) series but still required\n // for pie series\n if (chart.angular && !(this instanceof Series)) {\n positions[3] = 0;\n }\n for (i = 0; i < 4; ++i) {\n value = positions[i];\n handleSlicingRoom = i < 2 || (i === 2 && /%$/.test(value));\n // i == 0: centerX, relative to width\n // i == 1: centerY, relative to height\n // i == 2: size, relative to smallestSize\n // i == 3: innerSize, relative to size\n positions[i] = relativeLength(value, [plotWidth, plotHeight, smallestSize, positions[2]][i]) + (handleSlicingRoom ? slicingRoom : 0);\n }\n // innerSize cannot be larger than size (#3632)\n if (positions[3] > positions[2]) {\n positions[3] = positions[2];\n }\n return positions;\n }\n CenteredUtilities.getCenter = getCenter;\n /**\n * getStartAndEndRadians - Calculates start and end angles in radians.\n * Used in series types such as pie and sunburst.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians\n *\n * @param {number} [start]\n * Start angle in degrees.\n *\n * @param {number} [end]\n * Start angle in degrees.\n *\n * @return {Highcharts.RadianAngles}\n * Returns an object containing start and end angles as radians.\n */\n function getStartAndEndRadians(start, end) {\n var startAngle = isNumber(start) ? start : 0, // must be a number\n endAngle = ((isNumber(end) && // must be a number\n end > startAngle && // must be larger than the start angle\n // difference must be less than 360 degrees\n (end - startAngle) < 360) ?\n end :\n startAngle + 360),\n correction = -90;\n return {\n start: deg2rad * (startAngle + correction),\n end: deg2rad * (endAngle + correction)\n };\n }\n CenteredUtilities.getStartAndEndRadians = getStartAndEndRadians;\n })(CenteredUtilities || (CenteredUtilities = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @private\n * @interface Highcharts.RadianAngles\n */ /**\n * @name Highcharts.RadianAngles#end\n * @type {number}\n */ /**\n * @name Highcharts.RadianAngles#start\n * @type {number}\n */\n ''; // keeps doclets above in JS file\n\n return CenteredUtilities;\n });\n _registerModule(_modules, 'Series/Pie/PiePoint.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Series/Point.js'], _modules['Core/Utilities.js']], function (A, Point, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var setAnimation = A.setAnimation;\n var addEvent = U.addEvent,\n defined = U.defined,\n extend = U.extend,\n isNumber = U.isNumber,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Class\n *\n * */\n var PiePoint = /** @class */ (function (_super) {\n __extends(PiePoint, _super);\n function PiePoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.labelDistance = void 0;\n _this.options = void 0;\n _this.series = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Extendable method for getting the path of the connector between the\n * data label and the pie slice.\n * @private\n */\n PiePoint.prototype.getConnectorPath = function () {\n var labelPosition = this.labelPosition,\n options = this.series.options.dataLabels,\n predefinedShapes = this.connectorShapes;\n var connectorShape = options.connectorShape;\n // find out whether to use the predefined shape\n if (predefinedShapes[connectorShape]) {\n connectorShape = predefinedShapes[connectorShape];\n }\n return connectorShape.call(this, {\n // pass simplified label position object for user's convenience\n x: labelPosition.final.x,\n y: labelPosition.final.y,\n alignment: labelPosition.alignment\n }, labelPosition.connectorPosition, options);\n };\n /**\n * @private\n */\n PiePoint.prototype.getTranslate = function () {\n return this.sliced ? this.slicedTranslation : {\n translateX: 0,\n translateY: 0\n };\n };\n /**\n * @private\n */\n PiePoint.prototype.haloPath = function (size) {\n var shapeArgs = this.shapeArgs;\n return this.sliced || !this.visible ?\n [] :\n this.series.chart.renderer.symbols.arc(shapeArgs.x, shapeArgs.y, shapeArgs.r + size, shapeArgs.r + size, {\n // Substract 1px to ensure the background is not bleeding\n // through between the halo and the slice (#7495).\n innerR: shapeArgs.r - 1,\n start: shapeArgs.start,\n end: shapeArgs.end\n });\n };\n /**\n * Initialize the pie slice.\n * @private\n */\n PiePoint.prototype.init = function () {\n var _this = this;\n _super.prototype.init.apply(this, arguments);\n this.name = pick(this.name, 'Slice');\n // add event listener for select\n var toggleSlice = function (e) {\n _this.slice(e.type === 'select');\n };\n addEvent(this, 'select', toggleSlice);\n addEvent(this, 'unselect', toggleSlice);\n return this;\n };\n /**\n * Negative points are not valid (#1530, #3623, #5322)\n * @private\n */\n PiePoint.prototype.isValid = function () {\n return isNumber(this.y) && this.y >= 0;\n };\n /**\n * Toggle the visibility of the pie slice.\n * @private\n *\n * @param {boolean} vis\n * Whether to show the slice or not. If undefined, the visibility is\n * toggled.\n */\n PiePoint.prototype.setVisible = function (vis, redraw) {\n var _this = this;\n var series = this.series,\n chart = series.chart,\n ignoreHiddenPoint = series.options.ignoreHiddenPoint;\n redraw = pick(redraw, ignoreHiddenPoint);\n if (vis !== this.visible) {\n // If called without an argument, toggle visibility\n this.visible = this.options.visible = vis =\n typeof vis === 'undefined' ? !this.visible : vis;\n // update userOptions.data\n series.options.data[series.data.indexOf(this)] =\n this.options;\n // Show and hide associated elements. This is performed\n // regardless of redraw or not, because chart.redraw only\n // handles full series.\n ['graphic', 'dataLabel', 'connector', 'shadowGroup'].forEach(function (key) {\n if (_this[key]) {\n _this[key][vis ? 'show' : 'hide'](vis);\n }\n });\n if (this.legendItem) {\n chart.legend.colorizeItem(this, vis);\n }\n // #4170, hide halo after hiding point\n if (!vis && this.state === 'hover') {\n this.setState('');\n }\n // Handle ignore hidden slices\n if (ignoreHiddenPoint) {\n series.isDirty = true;\n }\n if (redraw) {\n chart.redraw();\n }\n }\n };\n /**\n * Set or toggle whether the slice is cut out from the pie.\n * @private\n *\n * @param {boolean} sliced\n * When undefined, the slice state is toggled.\n *\n * @param {boolean} [redraw]\n * Whether to redraw the chart. True by default.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * Animation options.\n */\n PiePoint.prototype.slice = function (sliced, redraw, animation) {\n var series = this.series,\n chart = series.chart;\n setAnimation(animation, chart);\n // redraw is true by default\n redraw = pick(redraw, true);\n /**\n * Pie series only. Whether to display a slice offset from the\n * center.\n * @name Highcharts.Point#sliced\n * @type {boolean|undefined}\n */\n // if called without an argument, toggle\n this.sliced = this.options.sliced = sliced =\n defined(sliced) ? sliced : !this.sliced;\n // update userOptions.data\n series.options.data[series.data.indexOf(this)] =\n this.options;\n if (this.graphic) {\n this.graphic.animate(this.getTranslate());\n }\n if (this.shadowGroup) {\n this.shadowGroup.animate(this.getTranslate());\n }\n };\n return PiePoint;\n }(Point));\n extend(PiePoint.prototype, {\n connectorShapes: {\n // only one available before v7.0.0\n fixedOffset: function (labelPosition, connectorPosition, options) {\n var breakAt = connectorPosition.breakAt,\n touchingSliceAt = connectorPosition.touchingSliceAt,\n lineSegment = options.softConnector ? [\n 'C',\n // 1st control point (of the curve)\n labelPosition.x +\n // 5 gives the connector a little horizontal bend\n (labelPosition.alignment === 'left' ? -5 : 5),\n labelPosition.y,\n 2 * breakAt.x - touchingSliceAt.x,\n 2 * breakAt.y - touchingSliceAt.y,\n breakAt.x,\n breakAt.y //\n ] : [\n 'L',\n breakAt.x,\n breakAt.y\n ];\n // assemble the path\n return ([\n ['M', labelPosition.x, labelPosition.y],\n lineSegment,\n ['L', touchingSliceAt.x, touchingSliceAt.y]\n ]);\n },\n straight: function (labelPosition, connectorPosition) {\n var touchingSliceAt = connectorPosition.touchingSliceAt;\n // direct line to the slice\n return [\n ['M', labelPosition.x, labelPosition.y],\n ['L', touchingSliceAt.x, touchingSliceAt.y]\n ];\n },\n crookedLine: function (labelPosition, connectorPosition, options) {\n var touchingSliceAt = connectorPosition.touchingSliceAt,\n series = this.series,\n pieCenterX = series.center[0],\n plotWidth = series.chart.plotWidth,\n plotLeft = series.chart.plotLeft,\n alignment = labelPosition.alignment,\n radius = this.shapeArgs.r,\n crookDistance = relativeLength(// % to fraction\n options.crookDistance, 1),\n crookX = alignment === 'left' ?\n pieCenterX + radius + (plotWidth + plotLeft -\n pieCenterX - radius) * (1 - crookDistance) :\n plotLeft + (pieCenterX - radius) * crookDistance,\n segmentWithCrook = [\n 'L',\n crookX,\n labelPosition.y\n ];\n var useCrook = true;\n // crookedLine formula doesn't make sense if the path overlaps\n // the label - use straight line instead in that case\n if (alignment === 'left' ?\n (crookX > labelPosition.x || crookX < touchingSliceAt.x) :\n (crookX < labelPosition.x || crookX > touchingSliceAt.x)) {\n useCrook = false;\n }\n // assemble the path\n var path = [['M',\n labelPosition.x,\n labelPosition.y]];\n if (useCrook) {\n path.push(segmentWithCrook);\n }\n path.push(['L', touchingSliceAt.x, touchingSliceAt.y]);\n return path;\n }\n }\n });\n /* *\n *\n * Default Export\n *\n * */\n\n return PiePoint;\n });\n _registerModule(_modules, 'Series/Pie/PieSeries.js', [_modules['Series/CenteredUtilities.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Series/Pie/PiePoint.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Utilities.js']], function (CU, ColumnSeries, H, LegendSymbol, PiePoint, Series, SeriesRegistry, Symbols, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var getStartAndEndRadians = CU.getStartAndEndRadians;\n var noop = H.noop;\n var clamp = U.clamp,\n extend = U.extend,\n fireEvent = U.fireEvent,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Class\n *\n * */\n /**\n * Pie series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.pie\n *\n * @augments Highcharts.Series\n */\n var PieSeries = /** @class */ (function (_super) {\n __extends(PieSeries, _super);\n function PieSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.center = void 0;\n _this.data = void 0;\n _this.maxLabelDistance = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Animates the pies in.\n * @private\n */\n PieSeries.prototype.animate = function (init) {\n var series = this,\n points = series.points,\n startAngleRad = series.startAngleRad;\n if (!init) {\n points.forEach(function (point) {\n var graphic = point.graphic,\n args = point.shapeArgs;\n if (graphic && args) {\n // start values\n graphic.attr({\n // animate from inner radius (#779)\n r: pick(point.startR, (series.center && series.center[3] / 2)),\n start: startAngleRad,\n end: startAngleRad\n });\n // animate\n graphic.animate({\n r: args.r,\n start: args.start,\n end: args.end\n }, series.options.animation);\n }\n });\n }\n };\n /**\n * Called internally to draw auxiliary graph in pie-like series in\n * situtation when the default graph is not sufficient enough to present\n * the data well. Auxiliary graph is saved in the same object as\n * regular graph.\n * @private\n */\n PieSeries.prototype.drawEmpty = function () {\n var start = this.startAngleRad,\n end = this.endAngleRad,\n options = this.options;\n var centerX,\n centerY;\n // Draw auxiliary graph if there're no visible points.\n if (this.total === 0 && this.center) {\n centerX = this.center[0];\n centerY = this.center[1];\n if (!this.graph) {\n this.graph = this.chart.renderer\n .arc(centerX, centerY, this.center[1] / 2, 0, start, end)\n .addClass('highcharts-empty-series')\n .add(this.group);\n }\n this.graph.attr({\n d: Symbols.arc(centerX, centerY, this.center[2] / 2, 0, {\n start: start,\n end: end,\n innerR: this.center[3] / 2\n })\n });\n if (!this.chart.styledMode) {\n this.graph.attr({\n 'stroke-width': options.borderWidth,\n fill: options.fillColor || 'none',\n stroke: options.color || \"#cccccc\" /* neutralColor20 */\n });\n }\n }\n else if (this.graph) { // Destroy the graph object.\n this.graph = this.graph.destroy();\n }\n };\n /**\n * Slices in pie chart are initialized in DOM, but it's shapes and\n * animations are normally run in `drawPoints()`.\n * @private\n */\n PieSeries.prototype.drawPoints = function () {\n var renderer = this.chart.renderer;\n this.points.forEach(function (point) {\n // When updating a series between 2d and 3d or cartesian and\n // polar, the shape type changes.\n if (point.graphic && point.hasNewShapeType()) {\n point.graphic = point.graphic.destroy();\n }\n if (!point.graphic) {\n point.graphic = renderer[point.shapeType](point.shapeArgs)\n .add(point.series.group);\n point.delayedRendering = true;\n }\n });\n };\n /**\n * Extend the generatePoints method by adding total and percentage\n * properties to each point\n * @private\n */\n PieSeries.prototype.generatePoints = function () {\n _super.prototype.generatePoints.call(this);\n this.updateTotals();\n };\n /**\n * Utility for getting the x value from a given y, used for\n * anticollision logic in data labels. Added point for using specific\n * points' label distance.\n * @private\n */\n PieSeries.prototype.getX = function (y, left, point) {\n var center = this.center, \n // Variable pie has individual radius\n radius = this.radii ?\n this.radii[point.index] || 0 :\n center[2] / 2;\n var angle = Math.asin(clamp((y - center[1]) / (radius + point.labelDistance), -1, 1));\n var x = center[0] +\n (left ? -1 : 1) *\n (Math.cos(angle) * (radius + point.labelDistance)) +\n (point.labelDistance > 0 ?\n (left ? -1 : 1) * this.options.dataLabels.padding :\n 0);\n return x;\n };\n /**\n * Define hasData function for non-cartesian series. Returns true if the\n * series has points at all.\n * @private\n */\n PieSeries.prototype.hasData = function () {\n return !!this.processedXData.length; // != 0\n };\n /**\n * Draw the data points\n * @private\n */\n PieSeries.prototype.redrawPoints = function () {\n var series = this,\n chart = series.chart,\n renderer = chart.renderer,\n shadow = series.options.shadow;\n var groupTranslation,\n graphic,\n pointAttr,\n shapeArgs;\n this.drawEmpty();\n if (shadow && !series.shadowGroup && !chart.styledMode) {\n series.shadowGroup = renderer\n .g('shadow')\n .attr({ zIndex: -1 })\n .add(series.group);\n }\n // draw the slices\n series.points.forEach(function (point) {\n var animateTo = {};\n graphic = point.graphic;\n if (!point.isNull && graphic) {\n var shadowGroup = void 0;\n shapeArgs = point.shapeArgs;\n // If the point is sliced, use special translation, else use\n // plot area translation\n groupTranslation = point.getTranslate();\n if (!chart.styledMode) {\n // Put the shadow behind all points\n shadowGroup = point.shadowGroup;\n if (shadow && !shadowGroup) {\n shadowGroup = point.shadowGroup = renderer\n .g('shadow')\n .add(series.shadowGroup);\n }\n if (shadowGroup) {\n shadowGroup.attr(groupTranslation);\n }\n pointAttr = series.pointAttribs(point, (point.selected && 'select'));\n }\n // Draw the slice\n if (!point.delayedRendering) {\n graphic\n .setRadialReference(series.center);\n if (!chart.styledMode) {\n merge(true, animateTo, pointAttr);\n }\n merge(true, animateTo, shapeArgs, groupTranslation);\n graphic.animate(animateTo);\n }\n else {\n graphic\n .setRadialReference(series.center)\n .attr(shapeArgs)\n .attr(groupTranslation);\n if (!chart.styledMode) {\n graphic\n .attr(pointAttr)\n .attr({ 'stroke-linejoin': 'round' })\n .shadow(shadow, shadowGroup);\n }\n point.delayedRendering = false;\n }\n graphic.attr({\n visibility: point.visible ? 'inherit' : 'hidden'\n });\n graphic.addClass(point.getClassName(), true);\n }\n else if (graphic) {\n point.graphic = graphic.destroy();\n }\n });\n };\n /**\n * Utility for sorting data labels.\n * @private\n */\n PieSeries.prototype.sortByAngle = function (points, sign) {\n points.sort(function (a, b) {\n return ((typeof a.angle !== 'undefined') &&\n (b.angle - a.angle) * sign);\n });\n };\n /**\n * Do translation for pie slices\n * @private\n */\n PieSeries.prototype.translate = function (positions) {\n this.generatePoints();\n var series = this,\n precision = 1000, // issue #172\n options = series.options,\n slicedOffset = options.slicedOffset,\n connectorOffset = slicedOffset + (options.borderWidth || 0),\n radians = getStartAndEndRadians(options.startAngle,\n options.endAngle),\n startAngleRad = series.startAngleRad = radians.start,\n endAngleRad = series.endAngleRad = radians.end,\n circ = endAngleRad - startAngleRad, // 2 * Math.PI,\n points = series.points,\n labelDistance = options.dataLabels.distance,\n ignoreHiddenPoint = options.ignoreHiddenPoint,\n len = points.length;\n var finalConnectorOffset,\n start,\n end,\n angle, \n // the x component of the radius vector for a given point\n radiusX,\n radiusY,\n i,\n point,\n cumulative = 0;\n // Get positions - either an integer or a percentage string must be\n // given. If positions are passed as a parameter, we're in a\n // recursive loop for adjusting space for data labels.\n if (!positions) {\n series.center = positions = series.getCenter();\n }\n // Calculate the geometry for each point\n for (i = 0; i < len; i++) {\n point = points[i];\n // set start and end angle\n start = startAngleRad + (cumulative * circ);\n if (point.isValid() &&\n (!ignoreHiddenPoint || point.visible)) {\n cumulative += point.percentage / 100;\n }\n end = startAngleRad + (cumulative * circ);\n // set the shape\n var shapeArgs = {\n x: positions[0],\n y: positions[1],\n r: positions[2] / 2,\n innerR: positions[3] / 2,\n start: Math.round(start * precision) / precision,\n end: Math.round(end * precision) / precision\n };\n point.shapeType = 'arc';\n point.shapeArgs = shapeArgs;\n // Used for distance calculation for specific point.\n point.labelDistance = pick((point.options.dataLabels &&\n point.options.dataLabels.distance), labelDistance);\n // Compute point.labelDistance if it's defined as percentage\n // of slice radius (#8854)\n point.labelDistance = relativeLength(point.labelDistance, shapeArgs.r);\n // Saved for later dataLabels distance calculation.\n series.maxLabelDistance = Math.max(series.maxLabelDistance || 0, point.labelDistance);\n // The angle must stay within -90 and 270 (#2645)\n angle = (end + start) / 2;\n if (angle > 1.5 * Math.PI) {\n angle -= 2 * Math.PI;\n }\n else if (angle < -Math.PI / 2) {\n angle += 2 * Math.PI;\n }\n // Center for the sliced out slice\n point.slicedTranslation = {\n translateX: Math.round(Math.cos(angle) * slicedOffset),\n translateY: Math.round(Math.sin(angle) * slicedOffset)\n };\n // set the anchor point for tooltips\n radiusX = Math.cos(angle) * positions[2] / 2;\n radiusY = Math.sin(angle) * positions[2] / 2;\n point.tooltipPos = [\n positions[0] + radiusX * 0.7,\n positions[1] + radiusY * 0.7\n ];\n point.half = angle < -Math.PI / 2 || angle > Math.PI / 2 ?\n 1 :\n 0;\n point.angle = angle;\n // Set the anchor point for data labels. Use point.labelDistance\n // instead of labelDistance // #1174\n // finalConnectorOffset - not override connectorOffset value.\n finalConnectorOffset = Math.min(connectorOffset, point.labelDistance / 5); // #1678\n point.labelPosition = {\n natural: {\n // initial position of the data label - it's utilized for\n // finding the final position for the label\n x: positions[0] + radiusX + Math.cos(angle) *\n point.labelDistance,\n y: positions[1] + radiusY + Math.sin(angle) *\n point.labelDistance\n },\n 'final': {\n // used for generating connector path -\n // initialized later in drawDataLabels function\n // x: undefined,\n // y: undefined\n },\n // left - pie on the left side of the data label\n // right - pie on the right side of the data label\n // center - data label overlaps the pie\n alignment: point.labelDistance < 0 ?\n 'center' : point.half ? 'right' : 'left',\n connectorPosition: {\n breakAt: {\n x: positions[0] + radiusX + Math.cos(angle) *\n finalConnectorOffset,\n y: positions[1] + radiusY + Math.sin(angle) *\n finalConnectorOffset\n },\n touchingSliceAt: {\n x: positions[0] + radiusX,\n y: positions[1] + radiusY\n }\n }\n };\n }\n fireEvent(series, 'afterTranslate');\n };\n /**\n * Recompute total chart sum and update percentages of points.\n * @private\n */\n PieSeries.prototype.updateTotals = function () {\n var points = this.points,\n len = points.length,\n ignoreHiddenPoint = this.options.ignoreHiddenPoint;\n var i,\n point,\n total = 0;\n // Get the total sum\n for (i = 0; i < len; i++) {\n point = points[i];\n if (point.isValid() &&\n (!ignoreHiddenPoint || point.visible)) {\n total += point.y;\n }\n }\n this.total = total;\n // Set each point's properties\n for (i = 0; i < len; i++) {\n point = points[i];\n point.percentage =\n (total > 0 && (point.visible || !ignoreHiddenPoint)) ?\n point.y / total * 100 :\n 0;\n point.total = total;\n }\n };\n /**\n * A pie chart is a circular graphic which is divided into slices to\n * illustrate numerical proportion.\n *\n * @sample highcharts/demo/pie-basic/\n * Pie chart\n *\n * @extends plotOptions.line\n * @excluding animationLimit, boostThreshold, connectEnds, connectNulls,\n * cropThreshold, dashStyle, dataSorting, dragDrop,\n * findNearestPointBy, getExtremesFromAll, label, lineWidth,\n * marker, negativeColor, pointInterval, pointIntervalUnit,\n * pointPlacement, pointStart, softThreshold, stacking, step,\n * threshold, turboThreshold, zoneAxis, zones, dataSorting,\n * boostBlending\n * @product highcharts\n * @optionparent plotOptions.pie\n */\n PieSeries.defaultOptions = merge(Series.defaultOptions, {\n /**\n * @excluding legendItemClick\n * @apioption plotOptions.pie.events\n */\n /**\n * Fires when the checkbox next to the point name in the legend is\n * clicked. One parameter, event, is passed to the function. The state\n * of the checkbox is found by event.checked. The checked item is found\n * by event.item. Return false to prevent the default action which is to\n * toggle the select state of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-checkboxclick/\n * Alert checkbox status\n *\n * @type {Function}\n * @since 1.2.0\n * @product highcharts\n * @context Highcharts.Point\n * @apioption plotOptions.pie.events.checkboxClick\n */\n /**\n * Fires when the legend item belonging to the pie point (slice) is\n * clicked. The `this` keyword refers to the point itself. One\n * parameter, `event`, is passed to the function, containing common\n * event information. The default action is to toggle the visibility of\n * the point. This can be prevented by calling `event.preventDefault()`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-point-events-legenditemclick/\n * Confirm toggle visibility\n *\n * @type {Highcharts.PointLegendItemClickCallbackFunction}\n * @since 1.2.0\n * @product highcharts\n * @apioption plotOptions.pie.point.events.legendItemClick\n */\n /**\n * The center of the pie chart relative to the plot area. Can be\n * percentages or pixel values. The default behaviour (as of 3.0) is to\n * center the pie so that all slices and data labels are within the plot\n * area. As a consequence, the pie may actually jump around in a chart\n * with dynamic values, as the data labels move. In that case, the\n * center should be explicitly set, for example to `[\"50%\", \"50%\"]`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-center/\n * Centered at 100, 100\n *\n * @type {Array<(number|string|null),(number|string|null)>}\n * @default [null, null]\n * @product highcharts\n *\n * @private\n */\n center: [null, null],\n /**\n * The color of the pie series. A pie series is represented as an empty\n * circle if the total sum of its values is 0. Use this property to\n * define the color of its border.\n *\n * In styled mode, the color can be defined by the\n * [colorIndex](#plotOptions.series.colorIndex) option. Also, the series\n * color can be set with the `.highcharts-series`,\n * `.highcharts-color-{n}`, `.highcharts-{type}-series` or\n * `.highcharts-series-{n}` class, or individual classes given by the\n * `className` option.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-emptyseries/\n * Empty pie series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @apioption plotOptions.pie.color\n */\n /**\n * @product highcharts\n *\n * @private\n */\n clip: false,\n /**\n * @ignore-option\n *\n * @private\n */\n colorByPoint: true,\n /**\n * A series specific or series type specific color set to use instead\n * of the global [colors](#colors).\n *\n * @sample {highcharts} highcharts/demo/pie-monochrome/\n * Set default colors for all pies\n *\n * @type {Array<Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject>}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.pie.colors\n */\n /**\n * @declare Highcharts.SeriesPieDataLabelsOptionsObject\n * @extends plotOptions.series.dataLabels\n * @excluding align, allowOverlap, inside, staggerLines, step\n * @private\n */\n dataLabels: {\n /**\n * Alignment method for data labels. Possible values are:\n *\n * - `toPlotEdges`: Each label touches the nearest vertical edge of\n * the plot area.\n *\n * - `connectors`: Connectors have the same x position and the\n * widest label of each half (left & right) touches the nearest\n * vertical edge of the plot area.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-alignto-connectors/\n * alignTo: connectors\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-alignto-plotedges/\n * alignTo: plotEdges\n *\n * @type {string}\n * @since 7.0.0\n * @product highcharts\n * @apioption plotOptions.pie.dataLabels.alignTo\n */\n allowOverlap: true,\n /**\n * The color of the line connecting the data label to the pie slice.\n * The default color is the same as the point's color.\n *\n * In styled mode, the connector stroke is given in the\n * `.highcharts-data-label-connector` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorcolor/\n * Blue connectors\n * @sample {highcharts} highcharts/css/pie-point/\n * Styled connectors\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.1\n * @product highcharts\n * @apioption plotOptions.pie.dataLabels.connectorColor\n */\n /**\n * The distance from the data label to the connector. Note that\n * data labels also have a default `padding`, so in order for the\n * connector to touch the text, the `padding` must also be 0.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorpadding/\n * No padding\n *\n * @since 2.1\n * @product highcharts\n */\n connectorPadding: 5,\n /**\n * Specifies the method that is used to generate the connector path.\n * Highcharts provides 3 built-in connector shapes: `'fixedOffset'`\n * (default), `'straight'` and `'crookedLine'`. Using\n * `'crookedLine'` has the most sense (in most of the cases) when\n * `'alignTo'` is set.\n *\n * Users can provide their own method by passing a function instead\n * of a String. 3 arguments are passed to the callback:\n *\n * - Object that holds the information about the coordinates of the\n * label (`x` & `y` properties) and how the label is located in\n * relation to the pie (`alignment` property). `alignment` can by\n * one of the following:\n * `'left'` (pie on the left side of the data label),\n * `'right'` (pie on the right side of the data label) or\n * `'center'` (data label overlaps the pie).\n *\n * - Object that holds the information about the position of the\n * connector. Its `touchingSliceAt` porperty tells the position\n * of the place where the connector touches the slice.\n *\n * - Data label options\n *\n * The function has to return an SVG path definition in array form\n * (see the example).\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorshape-string/\n * connectorShape is a String\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorshape-function/\n * connectorShape is a function\n *\n * @type {string|Function}\n * @since 7.0.0\n * @product highcharts\n */\n connectorShape: 'fixedOffset',\n /**\n * The width of the line connecting the data label to the pie slice.\n *\n * In styled mode, the connector stroke width is given in the\n * `.highcharts-data-label-connector` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorwidth-disabled/\n * Disable the connector\n * @sample {highcharts} highcharts/css/pie-point/\n * Styled connectors\n *\n * @type {number}\n * @default 1\n * @since 2.1\n * @product highcharts\n * @apioption plotOptions.pie.dataLabels.connectorWidth\n */\n /**\n * Works only if `connectorShape` is `'crookedLine'`. It defines how\n * far from the vertical plot edge the coonnector path should be\n * crooked.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-crookdistance/\n * crookDistance set to 90%\n *\n * @since 7.0.0\n * @product highcharts\n */\n crookDistance: '70%',\n /**\n * The distance of the data label from the pie's edge. Negative\n * numbers put the data label on top of the pie slices. Can also be\n * defined as a percentage of pie's radius. Connectors are only\n * shown for data labels outside the pie.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-distance/\n * Data labels on top of the pie\n *\n * @type {number|string}\n * @since 2.1\n * @product highcharts\n */\n distance: 30,\n enabled: true,\n /**\n * A\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for the data label. Available variables are the same as for\n * `formatter`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-format/\n * Add a unit\n *\n * @type {string}\n * @default undefined\n * @since 3.0\n * @apioption plotOptions.pie.dataLabels.format\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Callback JavaScript function to format the data label. Note that\n * if a `format` is defined, the format takes precedence and the\n * formatter is ignored.\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n * @default function () { return this.point.isNull ? void 0 : this.point.name; }\n */\n formatter: function () {\n return this.point.isNull ? void 0 : this.point.name;\n },\n /**\n * Whether to render the connector as a soft arc or a line with\n * sharp break. Works only if `connectorShape` equals to\n * `fixedOffset`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-softconnector-true/\n * Soft\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-softconnector-false/\n * Non soft\n *\n * @since 2.1.7\n * @product highcharts\n */\n softConnector: true,\n /**\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow\n * Long labels truncated with an ellipsis\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow-wrap\n * Long labels are wrapped\n *\n * @type {Highcharts.CSSObject}\n * @apioption plotOptions.pie.dataLabels.style\n */\n x: 0\n },\n /**\n * If the total sum of the pie's values is 0, the series is represented\n * as an empty circle . The `fillColor` option defines the color of that\n * circle. Use [pie.borderWidth](#plotOptions.pie.borderWidth) to set\n * the border thickness.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-emptyseries/\n * Empty pie series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @private\n */\n fillColor: void 0,\n /**\n * The end angle of the pie in degrees where 0 is top and 90 is right.\n * Defaults to `startAngle` plus 360.\n *\n * @sample {highcharts} highcharts/demo/pie-semi-circle/\n * Semi-circle donut\n *\n * @type {number}\n * @since 1.3.6\n * @product highcharts\n * @apioption plotOptions.pie.endAngle\n */\n /**\n * Equivalent to [chart.ignoreHiddenSeries](#chart.ignoreHiddenSeries),\n * this option tells whether the series shall be redrawn as if the\n * hidden point were `null`.\n *\n * The default value changed from `false` to `true` with Highcharts\n * 3.0.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-ignorehiddenpoint/\n * True, the hiddden point is ignored\n *\n * @since 2.3.0\n * @product highcharts\n *\n * @private\n */\n ignoreHiddenPoint: true,\n /**\n * @ignore-option\n *\n * @private\n */\n inactiveOtherPoints: true,\n /**\n * The size of the inner diameter for the pie. A size greater than 0\n * renders a donut chart. Can be a percentage or pixel value.\n * Percentages are relative to the pie size. Pixel values are given as\n * integers.\n *\n *\n * Note: in Highcharts < 4.1.2, the percentage was relative to the plot\n * area, not the pie size.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-innersize-80px/\n * 80px inner size\n * @sample {highcharts} highcharts/plotoptions/pie-innersize-50percent/\n * 50% of the plot area\n * @sample {highcharts} highcharts/demo/3d-pie-donut/\n * 3D donut\n *\n * @type {number|string}\n * @default 0\n * @since 2.0\n * @product highcharts\n * @apioption plotOptions.pie.innerSize\n */\n /**\n * @ignore-option\n *\n * @private\n */\n legendType: 'point',\n /**\n * @ignore-option\n *\n * @private\n */\n marker: null,\n /**\n * The minimum size for a pie in response to auto margins. The pie will\n * try to shrink to make room for data labels in side the plot area,\n * but only to this size.\n *\n * @type {number|string}\n * @default 80\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.pie.minSize\n */\n /**\n * The diameter of the pie relative to the plot area. Can be a\n * percentage or pixel value. Pixel values are given as integers. The\n * default behaviour (as of 3.0) is to scale to the plot area and give\n * room for data labels within the plot area.\n * [slicedOffset](#plotOptions.pie.slicedOffset) is also included in the\n * default size calculation. As a consequence, the size of the pie may\n * vary when points are updated and data labels more around. In that\n * case it is best to set a fixed value, for example `\"75%\"`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-size/\n * Smaller pie\n *\n * @type {number|string|null}\n * @product highcharts\n *\n * @private\n */\n size: null,\n /**\n * Whether to display this particular series or series type in the\n * legend. Since 2.1, pies are not shown in the legend by default.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showinlegend/\n * One series in the legend, one hidden\n *\n * @product highcharts\n *\n * @private\n */\n showInLegend: false,\n /**\n * If a point is sliced, moved out from the center, how many pixels\n * should it be moved?.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-slicedoffset-20/\n * 20px offset\n *\n * @product highcharts\n *\n * @private\n */\n slicedOffset: 10,\n /**\n * The start angle of the pie slices in degrees where 0 is top and 90\n * right.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-startangle-90/\n * Start from right\n *\n * @type {number}\n * @default 0\n * @since 2.3.4\n * @product highcharts\n * @apioption plotOptions.pie.startAngle\n */\n /**\n * Sticky tracking of mouse events. When true, the `mouseOut` event\n * on a series isn't triggered until the mouse moves over another\n * series, or out of the plot area. When false, the `mouseOut` event on\n * a series is triggered when the mouse leaves the area around the\n * series' graph or markers. This also implies the tooltip. When\n * `stickyTracking` is false and `tooltip.shared` is false, the tooltip\n * will be hidden when moving the mouse between series.\n *\n * @product highcharts\n *\n * @private\n */\n stickyTracking: false,\n tooltip: {\n followPointer: true\n },\n /**\n * The color of the border surrounding each slice. When `null`, the\n * border takes the same color as the slice fill. This can be used\n * together with a `borderWidth` to fill drawing gaps created by\n * antialiazing artefacts in borderless pies.\n *\n * In styled mode, the border stroke is given in the `.highcharts-point`\n * class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-bordercolor-black/\n * Black border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @product highcharts\n *\n * @private\n */\n borderColor: \"#ffffff\" /* backgroundColor */,\n /**\n * The width of the border surrounding each slice.\n *\n * When setting the border width to 0, there may be small gaps between\n * the slices due to SVG antialiasing artefacts. To work around this,\n * keep the border width at 0.5 or 1, but set the `borderColor` to\n * `null` instead.\n *\n * In styled mode, the border stroke width is given in the\n * `.highcharts-point` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-borderwidth/\n * 3px border\n *\n * @product highcharts\n *\n * @private\n */\n borderWidth: 1,\n /**\n * @ignore-option\n * @private\n */\n lineWidth: void 0,\n states: {\n /**\n * @extends plotOptions.series.states.hover\n * @excluding marker, lineWidth, lineWidthPlus\n * @product highcharts\n */\n hover: {\n /**\n * How much to brighten the point on interaction. Requires the\n * main color to be defined in hex or rgb(a) format.\n *\n * In styled mode, the hover brightness is by default replaced\n * by a fill-opacity given in the `.highcharts-point-hover`\n * class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-states-hover-brightness/\n * Brightened by 0.5\n *\n * @product highcharts\n */\n brightness: 0.1\n }\n }\n });\n return PieSeries;\n }(Series));\n extend(PieSeries.prototype, {\n axisTypes: [],\n directTouch: true,\n drawGraph: void 0,\n drawLegendSymbol: LegendSymbol.drawRectangle,\n drawTracker: ColumnSeries.prototype.drawTracker,\n getCenter: CU.getCenter,\n getSymbol: noop,\n isCartesian: false,\n noSharedTooltip: true,\n pointAttribs: ColumnSeries.prototype.pointAttribs,\n pointClass: PiePoint,\n requireSorting: false,\n searchPoint: noop,\n trackerGroups: ['group', 'dataLabelsGroup']\n });\n SeriesRegistry.registerSeriesType('pie', PieSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `pie` series. If the [type](#series.pie.type) option is not specified,\n * it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.pie\n * @excluding cropThreshold, dataParser, dataURL, stack, xAxis, yAxis,\n * dataSorting, step, boostThreshold, boostBlending\n * @product highcharts\n * @apioption series.pie\n */\n /**\n * An array of data points for the series. For the `pie` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.pie.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * y: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * y: 7,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<string,(number|null)>|null|*>}\n * @extends series.line.data\n * @excluding marker, x\n * @product highcharts\n * @apioption series.pie.data\n */\n /**\n * @type {Highcharts.SeriesPieDataLabelsOptionsObject}\n * @product highcharts\n * @apioption series.pie.data.dataLabels\n */\n /**\n * The sequential index of the data point in the legend.\n *\n * @type {number}\n * @product highcharts\n * @apioption series.pie.data.legendIndex\n */\n /**\n * Whether to display a slice offset from the center.\n *\n * @sample {highcharts} highcharts/point/sliced/\n * One sliced point\n *\n * @type {boolean}\n * @product highcharts\n * @apioption series.pie.data.sliced\n */\n /**\n * @extends plotOptions.pie.dataLabels\n * @excluding align, allowOverlap, inside, staggerLines, step\n * @product highcharts\n * @apioption series.pie.dataLabels\n */\n /**\n * @excluding legendItemClick\n * @product highcharts\n * @apioption series.pie.events\n */\n ''; // placeholder for transpiled doclets above\n\n return PieSeries;\n });\n _registerModule(_modules, 'Series/Pie/PieDataLabel.js', [_modules['Core/Series/DataLabel.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (DataLabel, H, R, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var noop = H.noop;\n var distribute = R.distribute;\n var Series = SeriesRegistry.series;\n var arrayMax = U.arrayMax,\n clamp = U.clamp,\n defined = U.defined,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Composition\n *\n * */\n var ColumnDataLabel;\n (function (ColumnDataLabel) {\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n var dataLabelPositioners = {\n // Based on the value computed in Highcharts' distribute algorithm.\n radialDistributionY: function (point) {\n return point.top + point.distributeBox.pos;\n },\n // get the x - use the natural x position for labels near the\n // top and bottom, to prevent the top and botton slice\n // connectors from touching each other on either side\n // Based on the value computed in Highcharts' distribute algorithm.\n radialDistributionX: function (series, point, y, naturalY) {\n return series.getX(y < point.top + 2 || y > point.bottom - 2 ?\n naturalY :\n y, point.half, point);\n },\n // dataLabels.distance determines the x position of the label\n justify: function (point, radius, seriesCenter) {\n return seriesCenter[0] + (point.half ? -1 : 1) *\n (radius + point.labelDistance);\n },\n // Left edges of the left-half labels touch the left edge of the plot\n // area. Right edges of the right-half labels touch the right edge of\n // the plot area.\n alignToPlotEdges: function (dataLabel, half, plotWidth, plotLeft) {\n var dataLabelWidth = dataLabel.getBBox().width;\n return half ? dataLabelWidth + plotLeft :\n plotWidth - dataLabelWidth - plotLeft;\n },\n // Connectors of each side end in the same x position. Labels are\n // aligned to them. Left edge of the widest left-half label touches the\n // left edge of the plot area. Right edge of the widest right-half label\n // touches the right edge of the plot area.\n alignToConnectors: function (points, half, plotWidth, plotLeft) {\n var maxDataLabelWidth = 0,\n dataLabelWidth;\n // find widest data label\n points.forEach(function (point) {\n dataLabelWidth = point.dataLabel.getBBox().width;\n if (dataLabelWidth > maxDataLabelWidth) {\n maxDataLabelWidth = dataLabelWidth;\n }\n });\n return half ? maxDataLabelWidth + plotLeft :\n plotWidth - maxDataLabelWidth - plotLeft;\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /** @private */\n function compose(PieSeriesClass) {\n DataLabel.compose(Series);\n if (composedClasses.indexOf(PieSeriesClass) === -1) {\n composedClasses.push(PieSeriesClass);\n var pieProto = PieSeriesClass.prototype;\n pieProto.dataLabelPositioners = dataLabelPositioners;\n pieProto.alignDataLabel = noop;\n pieProto.drawDataLabels = drawDataLabels;\n pieProto.placeDataLabels = placeDataLabels;\n pieProto.verifyDataLabelOverflow = verifyDataLabelOverflow;\n }\n }\n ColumnDataLabel.compose = compose;\n /**\n * Override the base drawDataLabels method by pie specific functionality\n * @private\n */\n function drawDataLabels() {\n var series = this,\n data = series.data,\n chart = series.chart,\n options = series.options.dataLabels || {},\n connectorPadding = options.connectorPadding,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n plotLeft = chart.plotLeft,\n maxWidth = Math.round(chart.chartWidth / 3),\n seriesCenter = series.center,\n radius = seriesCenter[2] / 2,\n centerY = seriesCenter[1],\n halves = [\n [],\n [] // left\n ],\n overflow = [0, 0, 0, 0], // top, right, bottom, left\n dataLabelPositioners = series.dataLabelPositioners;\n var point,\n connectorWidth,\n connector,\n dataLabel,\n dataLabelWidth, \n // labelPos,\n labelPosition,\n labelHeight, \n // divide the points into right and left halves for anti collision\n x,\n y,\n visibility,\n j,\n pointDataLabelsOptions;\n // get out if not enabled\n if (!series.visible ||\n (!options.enabled &&\n !series._hasPointLabels)) {\n return;\n }\n // Reset all labels that have been shortened\n data.forEach(function (point) {\n if (point.dataLabel && point.visible && point.dataLabel.shortened) {\n point.dataLabel\n .attr({\n width: 'auto'\n }).css({\n width: 'auto',\n textOverflow: 'clip'\n });\n point.dataLabel.shortened = false;\n }\n });\n // run parent method\n Series.prototype.drawDataLabels.apply(series);\n data.forEach(function (point) {\n if (point.dataLabel) {\n if (point.visible) { // #407, #2510\n // Arrange points for detection collision\n halves[point.half].push(point);\n // Reset positions (#4905)\n point.dataLabel._pos = null;\n // Avoid long labels squeezing the pie size too far down\n if (!defined(options.style.width) &&\n !defined(point.options.dataLabels &&\n point.options.dataLabels.style &&\n point.options.dataLabels.style.width)) {\n if (point.dataLabel.getBBox().width > maxWidth) {\n point.dataLabel.css({\n // Use a fraction of the maxWidth to avoid\n // wrapping close to the end of the string.\n width: Math.round(maxWidth * 0.7) + 'px'\n });\n point.dataLabel.shortened = true;\n }\n }\n }\n else {\n point.dataLabel = point.dataLabel.destroy();\n // Workaround to make pies destroy multiple datalabels\n // correctly. This logic needs rewriting to support multiple\n // datalabels fully.\n if (point.dataLabels && point.dataLabels.length === 1) {\n delete point.dataLabels;\n }\n }\n }\n });\n /* Loop over the points in each half, starting from the top and bottom\n * of the pie to detect overlapping labels.\n */\n halves.forEach(function (points, i) {\n var length = points.length,\n positions = [];\n var top,\n bottom,\n naturalY,\n sideOverflow,\n size,\n distributionLength;\n if (!length) {\n return;\n }\n // Sort by angle\n series.sortByAngle(points, i - 0.5);\n // Only do anti-collision when we have dataLabels outside the pie\n // and have connectors. (#856)\n if (series.maxLabelDistance > 0) {\n top = Math.max(0, centerY - radius - series.maxLabelDistance);\n bottom = Math.min(centerY + radius + series.maxLabelDistance, chart.plotHeight);\n points.forEach(function (point) {\n // check if specific points' label is outside the pie\n if (point.labelDistance > 0 && point.dataLabel) {\n // point.top depends on point.labelDistance value\n // Used for calculation of y value in getX method\n point.top = Math.max(0, centerY - radius - point.labelDistance);\n point.bottom = Math.min(centerY + radius + point.labelDistance, chart.plotHeight);\n size = point.dataLabel.getBBox().height || 21;\n // point.positionsIndex is needed for getting index of\n // parameter related to specific point inside positions\n // array - not every point is in positions array.\n point.distributeBox = {\n target: point.labelPosition.natural.y -\n point.top + size / 2,\n size: size,\n rank: point.y\n };\n positions.push(point.distributeBox);\n }\n });\n distributionLength = bottom + size - top;\n distribute(positions, distributionLength, distributionLength / 5);\n }\n // Now the used slots are sorted, fill them up sequentially\n for (j = 0; j < length; j++) {\n point = points[j];\n // labelPos = point.labelPos;\n labelPosition = point.labelPosition;\n dataLabel = point.dataLabel;\n visibility = point.visible === false ? 'hidden' : 'inherit';\n naturalY = labelPosition.natural.y;\n y = naturalY;\n if (positions && defined(point.distributeBox)) {\n if (typeof point.distributeBox.pos === 'undefined') {\n visibility = 'hidden';\n }\n else {\n labelHeight = point.distributeBox.size;\n // Find label's y position\n y = dataLabelPositioners\n .radialDistributionY(point);\n }\n }\n // It is needed to delete point.positionIndex for\n // dynamically added points etc.\n delete point.positionIndex; // @todo unused\n // Find label's x position\n // justify is undocumented in the API - preserve support for it\n if (options.justify) {\n x = dataLabelPositioners.justify(point, radius, seriesCenter);\n }\n else {\n switch (options.alignTo) {\n case 'connectors':\n x = dataLabelPositioners.alignToConnectors(points, i, plotWidth, plotLeft);\n break;\n case 'plotEdges':\n x = dataLabelPositioners.alignToPlotEdges(dataLabel, i, plotWidth, plotLeft);\n break;\n default:\n x = dataLabelPositioners.radialDistributionX(series, point, y, naturalY);\n }\n }\n // Record the placement and visibility\n dataLabel._attr = {\n visibility: visibility,\n align: labelPosition.alignment\n };\n pointDataLabelsOptions = point.options.dataLabels || {};\n dataLabel._pos = {\n x: (x +\n pick(pointDataLabelsOptions.x, options.x) + // (#12985)\n ({\n left: connectorPadding,\n right: -connectorPadding\n }[labelPosition.alignment] || 0)),\n // 10 is for the baseline (label vs text)\n y: (y +\n pick(pointDataLabelsOptions.y, options.y) - // (#12985)\n 10)\n };\n // labelPos.x = x;\n // labelPos.y = y;\n labelPosition.final.x = x;\n labelPosition.final.y = y;\n // Detect overflowing data labels\n if (pick(options.crop, true)) {\n dataLabelWidth = dataLabel.getBBox().width;\n sideOverflow = null;\n // Overflow left\n if (x - dataLabelWidth < connectorPadding &&\n i === 1 // left half\n ) {\n sideOverflow = Math.round(dataLabelWidth - x + connectorPadding);\n overflow[3] = Math.max(sideOverflow, overflow[3]);\n // Overflow right\n }\n else if (x + dataLabelWidth > plotWidth - connectorPadding &&\n i === 0 // right half\n ) {\n sideOverflow = Math.round(x + dataLabelWidth - plotWidth + connectorPadding);\n overflow[1] = Math.max(sideOverflow, overflow[1]);\n }\n // Overflow top\n if (y - labelHeight / 2 < 0) {\n overflow[0] = Math.max(Math.round(-y + labelHeight / 2), overflow[0]);\n // Overflow left\n }\n else if (y + labelHeight / 2 > plotHeight) {\n overflow[2] = Math.max(Math.round(y + labelHeight / 2 - plotHeight), overflow[2]);\n }\n dataLabel.sideOverflow = sideOverflow;\n }\n } // for each point\n }); // for each half\n // Do not apply the final placement and draw the connectors until we\n // have verified that labels are not spilling over.\n if (arrayMax(overflow) === 0 ||\n this.verifyDataLabelOverflow(overflow)) {\n // Place the labels in the final position\n this.placeDataLabels();\n this.points.forEach(function (point) {\n // #8864: every connector can have individual options\n pointDataLabelsOptions =\n merge(options, point.options.dataLabels);\n connectorWidth =\n pick(pointDataLabelsOptions.connectorWidth, 1);\n // Draw the connector\n if (connectorWidth) {\n var isNew = void 0;\n connector = point.connector;\n dataLabel = point.dataLabel;\n if (dataLabel &&\n dataLabel._pos &&\n point.visible &&\n point.labelDistance > 0) {\n visibility = dataLabel._attr.visibility;\n isNew = !connector;\n if (isNew) {\n point.connector = connector = chart.renderer\n .path()\n .addClass('highcharts-data-label-connector ' +\n ' highcharts-color-' + point.colorIndex +\n (point.className ?\n ' ' + point.className :\n ''))\n .add(series.dataLabelsGroup);\n if (!chart.styledMode) {\n connector.attr({\n 'stroke-width': connectorWidth,\n 'stroke': (pointDataLabelsOptions.connectorColor ||\n point.color ||\n \"#666666\" /* neutralColor60 */)\n });\n }\n }\n connector[isNew ? 'attr' : 'animate']({\n d: point.getConnectorPath()\n });\n connector.attr('visibility', visibility);\n }\n else if (connector) {\n point.connector = connector.destroy();\n }\n }\n });\n }\n }\n /**\n * Perform the final placement of the data labels after we have verified\n * that they fall within the plot area.\n * @private\n */\n function placeDataLabels() {\n this.points.forEach(function (point) {\n var dataLabel = point.dataLabel,\n _pos;\n if (dataLabel && point.visible) {\n _pos = dataLabel._pos;\n if (_pos) {\n // Shorten data labels with ellipsis if they still overflow\n // after the pie has reached minSize (#223).\n if (dataLabel.sideOverflow) {\n dataLabel._attr.width =\n Math.max(dataLabel.getBBox().width -\n dataLabel.sideOverflow, 0);\n dataLabel.css({\n width: dataLabel._attr.width + 'px',\n textOverflow: ((this.options.dataLabels.style || {})\n .textOverflow ||\n 'ellipsis')\n });\n dataLabel.shortened = true;\n }\n dataLabel.attr(dataLabel._attr);\n dataLabel[dataLabel.moved ? 'animate' : 'attr'](_pos);\n dataLabel.moved = true;\n }\n else if (dataLabel) {\n dataLabel.attr({ y: -9999 });\n }\n }\n // Clear for update\n delete point.distributeBox;\n }, this);\n }\n /**\n * Verify whether the data labels are allowed to draw, or we should run more\n * translation and data label positioning to keep them inside the plot area.\n * Returns true when data labels are ready to draw.\n * @private\n */\n function verifyDataLabelOverflow(overflow) {\n var center = this.center,\n options = this.options,\n centerOption = options.center,\n minSize = options.minSize || 80,\n newSize = minSize, \n // If a size is set, return true and don't try to shrink the pie\n // to fit the labels.\n ret = options.size !== null;\n if (!ret) {\n // Handle horizontal size and center\n if (centerOption[0] !== null) { // Fixed center\n newSize = Math.max(center[2] -\n Math.max(overflow[1], overflow[3]), minSize);\n }\n else { // Auto center\n newSize = Math.max(\n // horizontal overflow\n center[2] - overflow[1] - overflow[3], minSize);\n // horizontal center\n center[0] += (overflow[3] - overflow[1]) / 2;\n }\n // Handle vertical size and center\n if (centerOption[1] !== null) { // Fixed center\n newSize = clamp(newSize, minSize, center[2] - Math.max(overflow[0], overflow[2]));\n }\n else { // Auto center\n newSize = clamp(newSize, minSize, \n // vertical overflow\n center[2] - overflow[0] - overflow[2]);\n // vertical center\n center[1] += (overflow[0] - overflow[2]) / 2;\n }\n // If the size must be decreased, we need to run translate and\n // drawDataLabels again\n if (newSize < center[2]) {\n center[2] = newSize;\n center[3] = Math.min(// #3632\n relativeLength(options.innerSize || 0, newSize), newSize);\n this.translate(center);\n if (this.drawDataLabels) {\n this.drawDataLabels();\n }\n // Else, return true to indicate that the pie and its labels is\n // within the plot area\n }\n else {\n ret = true;\n }\n }\n return ret;\n }\n })(ColumnDataLabel || (ColumnDataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnDataLabel;\n });\n _registerModule(_modules, 'Extensions/OverlappingDataLabels.js', [_modules['Core/Chart/Chart.js'], _modules['Core/Utilities.js']], function (Chart, U) {\n /* *\n *\n * Highcharts module to hide overlapping data labels.\n * This module is included in Highcharts.\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n objectEach = U.objectEach,\n pick = U.pick;\n /**\n * Internal type\n * @private\n */\n /* eslint-disable no-invalid-this */\n // Collect potensial overlapping data labels. Stack labels probably don't need\n // to be considered because they are usually accompanied by data labels that lie\n // inside the columns.\n addEvent(Chart, 'render', function collectAndHide() {\n var chart = this,\n labels = [];\n // Consider external label collectors\n (this.labelCollectors || []).forEach(function (collector) {\n labels = labels.concat(collector());\n });\n (this.yAxis || []).forEach(function (yAxis) {\n if (yAxis.stacking &&\n yAxis.options.stackLabels &&\n !yAxis.options.stackLabels.allowOverlap) {\n objectEach(yAxis.stacking.stacks, function (stack) {\n objectEach(stack, function (stackItem) {\n if (stackItem.label &&\n stackItem.label.visibility !== 'hidden' // #15607\n ) {\n labels.push(stackItem.label);\n }\n });\n });\n }\n });\n (this.series || []).forEach(function (series) {\n var dlOptions = series.options.dataLabels;\n if (series.visible &&\n !(dlOptions.enabled === false && !series._hasPointLabels)) { // #3866\n var push = function (points) {\n return points.forEach(function (point) {\n if (point.visible) {\n var dataLabels = (isArray(point.dataLabels) ?\n point.dataLabels :\n (point.dataLabel ? [point.dataLabel] : []));\n dataLabels.forEach(function (label) {\n var options = label.options;\n label.labelrank = pick(options.labelrank, point.labelrank, point.shapeArgs && point.shapeArgs.height); // #4118\n if (!options.allowOverlap) {\n labels.push(label);\n }\n else { // #13449\n label.oldOpacity = label.opacity;\n label.newOpacity = 1;\n hideOrShow(label, chart);\n }\n });\n }\n });\n };\n push(series.nodes || []);\n push(series.points);\n }\n });\n this.hideOverlappingLabels(labels);\n });\n /**\n * Hide overlapping labels. Labels are moved and faded in and out on zoom to\n * provide a smooth visual imression.\n *\n * @private\n * @function Highcharts.Chart#hideOverlappingLabels\n * @param {Array<Highcharts.SVGElement>} labels\n * Rendered data labels\n * @requires modules/overlapping-datalabels\n */\n Chart.prototype.hideOverlappingLabels = function (labels) {\n var chart = this,\n len = labels.length,\n ren = chart.renderer,\n label,\n i,\n j,\n label1,\n label2,\n box1,\n box2,\n isLabelAffected = false,\n isIntersectRect = function (box1,\n box2) {\n return !(box2.x >= box1.x + box1.width ||\n box2.x + box2.width <= box1.x ||\n box2.y >= box1.y + box1.height ||\n box2.y + box2.height <= box1.y);\n }, \n // Get the box with its position inside the chart, as opposed to getBBox\n // that only reports the position relative to the parent.\n getAbsoluteBox = function (label) {\n var pos,\n parent,\n bBox, \n // Substract the padding if no background or border (#4333)\n padding = label.box ? 0 : (label.padding || 0),\n lineHeightCorrection = 0,\n xOffset = 0,\n boxWidth,\n alignValue;\n if (label &&\n (!label.alignAttr || label.placed)) {\n pos = label.alignAttr || {\n x: label.attr('x'),\n y: label.attr('y')\n };\n parent = label.parentGroup;\n // Get width and height if pure text nodes (stack labels)\n if (!label.width) {\n bBox = label.getBBox();\n label.width = bBox.width;\n label.height = bBox.height;\n // Labels positions are computed from top left corner, so\n // we need to substract the text height from text nodes too.\n lineHeightCorrection = ren\n .fontMetrics(null, label.element).h;\n }\n boxWidth = label.width - 2 * padding;\n alignValue = {\n left: '0',\n center: '0.5',\n right: '1'\n }[label.alignValue];\n if (alignValue) {\n xOffset = +alignValue * boxWidth;\n }\n else if (isNumber(label.x) &&\n Math.round(label.x) !== label.translateX) {\n xOffset = label.x - label.translateX;\n }\n return {\n x: pos.x + (parent.translateX || 0) + padding -\n (xOffset || 0),\n y: pos.y + (parent.translateY || 0) + padding -\n lineHeightCorrection,\n width: label.width - 2 * padding,\n height: label.height - 2 * padding\n };\n }\n };\n for (i = 0; i < len; i++) {\n label = labels[i];\n if (label) {\n // Mark with initial opacity\n label.oldOpacity = label.opacity;\n label.newOpacity = 1;\n label.absoluteBox = getAbsoluteBox(label);\n }\n }\n // Prevent a situation in a gradually rising slope, that each label will\n // hide the previous one because the previous one always has lower rank.\n labels.sort(function (a, b) {\n return (b.labelrank || 0) - (a.labelrank || 0);\n });\n // Detect overlapping labels\n for (i = 0; i < len; i++) {\n label1 = labels[i];\n box1 = label1 && label1.absoluteBox;\n for (j = i + 1; j < len; ++j) {\n label2 = labels[j];\n box2 = label2 && label2.absoluteBox;\n if (box1 &&\n box2 &&\n label1 !== label2 && // #6465, polar chart with connectEnds\n label1.newOpacity !== 0 &&\n label2.newOpacity !== 0) {\n if (isIntersectRect(box1, box2)) {\n (label1.labelrank < label2.labelrank ? label1 : label2)\n .newOpacity = 0;\n }\n }\n }\n }\n // Hide or show\n labels.forEach(function (label) {\n if (hideOrShow(label, chart)) {\n isLabelAffected = true;\n }\n });\n if (isLabelAffected) {\n fireEvent(chart, 'afterHideAllOverlappingLabels');\n }\n };\n /**\n * Hide or show labels based on opacity.\n *\n * @private\n * @function hideOrShow\n * @param {Highcharts.SVGElement} label\n * The label.\n * @param {Highcharts.Chart} chart\n * The chart that contains the label.\n * @return {boolean}\n * Whether label is affected\n */\n function hideOrShow(label, chart) {\n var complete,\n newOpacity,\n isLabelAffected = false;\n if (label) {\n newOpacity = label.newOpacity;\n if (label.oldOpacity !== newOpacity) {\n // Make sure the label is completely hidden to avoid catching clicks\n // (#4362)\n if (label.alignAttr && label.placed) { // data labels\n label[newOpacity ? 'removeClass' : 'addClass']('highcharts-data-label-hidden');\n complete = function () {\n if (!chart.styledMode) {\n label.css({\n pointerEvents: newOpacity ? 'auto' : 'none'\n });\n }\n };\n isLabelAffected = true;\n // Animate or set the opacity\n label.alignAttr.opacity = newOpacity;\n label[label.isOld ? 'animate' : 'attr'](label.alignAttr, null, complete);\n fireEvent(chart, 'afterHideOverlappingLabel');\n }\n else { // other labels, tick labels\n label.attr({\n opacity: newOpacity\n });\n }\n }\n label.isOld = true;\n }\n return isLabelAffected;\n }\n\n });\n _registerModule(_modules, 'Core/Responsive.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var extend = U.extend,\n find = U.find,\n isArray = U.isArray,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n splat = U.splat,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Composition\n *\n * */\n var Responsive;\n (function (Responsive) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(ChartClass) {\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n extend(ChartClass.prototype, Additions.prototype);\n }\n return ChartClass;\n }\n Responsive.compose = compose;\n /* *\n *\n * Class\n *\n * */\n var Additions = /** @class */ (function () {\n function Additions() {\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the current values for a given set of options. Used before we\n * update the chart with a new responsiveness rule.\n *\n * @todo Restore axis options (by id?). The matching of items in\n * collections bears resemblance to the oneToOne matching in\n * Chart.update. Probably we can refactor out that matching and reuse it\n * in both functions.\n *\n * @private\n * @function Highcharts.Chart#currentOptions\n */\n Additions.prototype.currentOptions = function (options) {\n var chart = this, ret = {};\n /**\n * Recurse over a set of options and its current values,\n * and store the current values in the ret object.\n */\n function getCurrent(options, curr, ret, depth) {\n var i;\n objectEach(options, function (val, key) {\n if (!depth &&\n chart.collectionsWithUpdate.indexOf(key) > -1 &&\n curr[key]) {\n val = splat(val);\n ret[key] = [];\n // Iterate over collections like series, xAxis or yAxis\n // and map the items by index.\n for (i = 0; i < Math.max(val.length, curr[key].length); i++) {\n // Item exists in current data (#6347)\n if (curr[key][i]) {\n // If the item is missing from the new data, we\n // need to save the whole config structure. Like\n // when responsively updating from a dual axis\n // layout to a single axis and back (#13544).\n if (val[i] === void 0) {\n ret[key][i] = curr[key][i];\n // Otherwise, proceed\n }\n else {\n ret[key][i] = {};\n getCurrent(val[i], curr[key][i], ret[key][i], depth + 1);\n }\n }\n }\n }\n else if (isObject(val)) {\n ret[key] = isArray(val) ? [] : {};\n getCurrent(val, curr[key] || {}, ret[key], depth + 1);\n }\n else if (typeof curr[key] === 'undefined') { // #10286\n ret[key] = null;\n }\n else {\n ret[key] = curr[key];\n }\n });\n }\n getCurrent(options, this.options, ret, 0);\n return ret;\n };\n /**\n * Handle a single responsiveness rule.\n *\n * @private\n * @function Highcharts.Chart#matchResponsiveRule\n * @param {Highcharts.ResponsiveRulesOptions} rule\n * @param {Array<string>} matches\n */\n Additions.prototype.matchResponsiveRule = function (rule, matches) {\n var condition = rule.condition,\n fn = condition.callback || function () {\n return (this.chartWidth <= pick(condition.maxWidth,\n Number.MAX_VALUE) &&\n this.chartHeight <= pick(condition.maxHeight,\n Number.MAX_VALUE) &&\n this.chartWidth >= pick(condition.minWidth, 0) &&\n this.chartHeight >= pick(condition.minHeight, 0));\n };\n if (fn.call(this)) {\n matches.push(rule._id);\n }\n };\n /**\n * Update the chart based on the current chart/document size and options\n * for responsiveness.\n *\n * @private\n * @function Highcharts.Chart#setResponsive\n * @param {boolean} [redraw=true]\n * @param {boolean} [reset=false]\n * Reset by un-applying all rules. Chart.update resets all rules before\n * applying updated options.\n */\n Additions.prototype.setResponsive = function (redraw, reset) {\n var _this = this;\n var options = this.options.responsive,\n currentResponsive = this.currentResponsive;\n var ruleIds = [],\n undoOptions;\n if (!reset && options && options.rules) {\n options.rules.forEach(function (rule) {\n if (typeof rule._id === 'undefined') {\n rule._id = uniqueKey();\n }\n _this.matchResponsiveRule(rule, ruleIds /* , redraw */);\n }, this);\n }\n // Merge matching rules\n var mergedOptions = merge.apply(void 0,\n ruleIds\n .map(function (ruleId) { return find((options || {}).rules || [],\n function (rule) { return (rule._id === ruleId); }); })\n .map(function (rule) { return (rule && rule.chartOptions); }));\n mergedOptions.isResponsiveOptions = true;\n // Stringified key for the rules that currently apply.\n ruleIds = (ruleIds.toString() || void 0);\n var currentRuleIds = (currentResponsive && currentResponsive.ruleIds);\n // Changes in what rules apply\n if (ruleIds !== currentRuleIds) {\n // Undo previous rules. Before we apply a new set of rules, we\n // need to roll back completely to base options (#6291).\n if (currentResponsive) {\n this.update(currentResponsive.undoOptions, redraw, true);\n }\n if (ruleIds) {\n // Get undo-options for matching rules\n undoOptions = this.currentOptions(mergedOptions);\n undoOptions.isResponsiveOptions = true;\n this.currentResponsive = {\n ruleIds: ruleIds,\n mergedOptions: mergedOptions,\n undoOptions: undoOptions\n };\n this.update(mergedOptions, redraw, true);\n }\n else {\n this.currentResponsive = void 0;\n }\n }\n };\n return Additions;\n }());\n })(Responsive || (Responsive = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A callback function to gain complete control on when the responsive rule\n * applies.\n *\n * @callback Highcharts.ResponsiveCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * Chart context.\n *\n * @return {boolean}\n * Return `true` if it applies.\n */\n (''); // keeps doclets above in JS file\n /* *\n *\n * API Options\n *\n * */\n /**\n * Allows setting a set of rules to apply for different screen or chart\n * sizes. Each rule specifies additional chart options.\n *\n * @sample {highstock} stock/demo/responsive/\n * Stock chart\n * @sample highcharts/responsive/axis/\n * Axis\n * @sample highcharts/responsive/legend/\n * Legend\n * @sample highcharts/responsive/classname/\n * Class name\n *\n * @since 5.0.0\n * @apioption responsive\n */\n /**\n * A set of rules for responsive settings. The rules are executed from\n * the top down.\n *\n * @sample {highcharts} highcharts/responsive/axis/\n * Axis changes\n * @sample {highstock} highcharts/responsive/axis/\n * Axis changes\n * @sample {highmaps} highcharts/responsive/axis/\n * Axis changes\n *\n * @type {Array<*>}\n * @since 5.0.0\n * @apioption responsive.rules\n */\n /**\n * A full set of chart options to apply as overrides to the general\n * chart options. The chart options are applied when the given rule\n * is active.\n *\n * A special case is configuration objects that take arrays, for example\n * [xAxis](#xAxis), [yAxis](#yAxis) or [series](#series). For these\n * collections, an `id` option is used to map the new option set to\n * an existing object. If an existing object of the same id is not found,\n * the item of the same indexupdated. So for example, setting `chartOptions`\n * with two series items without an `id`, will cause the existing chart's\n * two series to be updated with respective options.\n *\n * @sample {highstock} stock/demo/responsive/\n * Stock chart\n * @sample highcharts/responsive/axis/\n * Axis\n * @sample highcharts/responsive/legend/\n * Legend\n * @sample highcharts/responsive/classname/\n * Class name\n *\n * @type {Highcharts.Options}\n * @since 5.0.0\n * @apioption responsive.rules.chartOptions\n */\n /**\n * Under which conditions the rule applies.\n *\n * @since 5.0.0\n * @apioption responsive.rules.condition\n */\n /**\n * A callback function to gain complete control on when the responsive\n * rule applies. Return `true` if it applies. This opens for checking\n * against other metrics than the chart size, for example the document\n * size or other elements.\n *\n * @type {Highcharts.ResponsiveCallbackFunction}\n * @since 5.0.0\n * @context Highcharts.Chart\n * @apioption responsive.rules.condition.callback\n */\n /**\n * The responsive rule applies if the chart height is less than this.\n *\n * @type {number}\n * @since 5.0.0\n * @apioption responsive.rules.condition.maxHeight\n */\n /**\n * The responsive rule applies if the chart width is less than this.\n *\n * @sample highcharts/responsive/axis/\n * Max width is 500\n *\n * @type {number}\n * @since 5.0.0\n * @apioption responsive.rules.condition.maxWidth\n */\n /**\n * The responsive rule applies if the chart height is greater than this.\n *\n * @type {number}\n * @default 0\n * @since 5.0.0\n * @apioption responsive.rules.condition.minHeight\n */\n /**\n * The responsive rule applies if the chart width is greater than this.\n *\n * @type {number}\n * @default 0\n * @since 5.0.0\n * @apioption responsive.rules.condition.minWidth\n */\n (''); // keeps doclets above in JS file\n\n return Responsive;\n });\n _registerModule(_modules, 'masters/highcharts.src.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js'], _modules['Core/DefaultOptions.js'], _modules['Core/Animation/Fx.js'], _modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Renderer/HTML/AST.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Renderer/HTML/HTMLElement.js'], _modules['Core/Renderer/HTML/HTMLRenderer.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Axis/DateTimeAxis.js'], _modules['Core/Axis/LogarithmicAxis.js'], _modules['Core/Axis/PlotLineOrBand/PlotLineOrBand.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Tooltip.js'], _modules['Core/Series/Point.js'], _modules['Core/Pointer.js'], _modules['Core/MSPointer.js'], _modules['Core/Legend/Legend.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Series/Column/ColumnDataLabel.js'], _modules['Series/Pie/PieSeries.js'], _modules['Series/Pie/PieDataLabel.js'], _modules['Core/Series/DataLabel.js'], _modules['Core/Responsive.js'], _modules['Core/Color/Color.js'], _modules['Core/Time.js']], function (Highcharts, Utilities, DefaultOptions, Fx, Animation, AST, FormatUtilities, RendererUtilities, SVGElement, SVGRenderer, HTMLElement, HTMLRenderer, Axis, DateTimeAxis, LogarithmicAxis, PlotLineOrBand, Tick, Tooltip, Point, Pointer, MSPointer, Legend, Chart, Series, SeriesRegistry, ColumnSeries, ColumnDataLabel, PieSeries, PieDataLabel, DataLabel, Responsive, Color, Time) {\n\n var G = Highcharts;\n // Animation\n G.animate = Animation.animate;\n G.animObject = Animation.animObject;\n G.getDeferredAnimation = Animation.getDeferredAnimation;\n G.setAnimation = Animation.setAnimation;\n G.stop = Animation.stop;\n G.timers = Fx.timers;\n // Classes\n G.AST = AST;\n G.Axis = Axis;\n G.Chart = Chart;\n G.chart = Chart.chart;\n G.Fx = Fx;\n G.Legend = Legend;\n G.PlotLineOrBand = PlotLineOrBand;\n G.Point = Point;\n G.Pointer = (MSPointer.isRequired() ? MSPointer : Pointer);\n G.Series = Series;\n G.SVGElement = SVGElement;\n G.SVGRenderer = SVGRenderer;\n G.Tick = Tick;\n G.Time = Time;\n G.Tooltip = Tooltip;\n // Color\n G.Color = Color;\n G.color = Color.parse;\n // Compositions\n HTMLRenderer.compose(SVGRenderer);\n HTMLElement.compose(SVGElement);\n // DefaultOptions\n G.defaultOptions = DefaultOptions.defaultOptions;\n G.getOptions = DefaultOptions.getOptions;\n G.time = DefaultOptions.defaultTime;\n G.setOptions = DefaultOptions.setOptions;\n // Format Utilities\n G.dateFormat = FormatUtilities.dateFormat;\n G.format = FormatUtilities.format;\n G.numberFormat = FormatUtilities.numberFormat;\n // Utilities\n G.addEvent = Utilities.addEvent;\n G.arrayMax = Utilities.arrayMax;\n G.arrayMin = Utilities.arrayMin;\n G.attr = Utilities.attr;\n G.clearTimeout = Utilities.clearTimeout;\n G.correctFloat = Utilities.correctFloat;\n G.createElement = Utilities.createElement;\n G.css = Utilities.css;\n G.defined = Utilities.defined;\n G.destroyObjectProperties = Utilities.destroyObjectProperties;\n G.discardElement = Utilities.discardElement;\n G.distribute = RendererUtilities.distribute;\n G.erase = Utilities.erase;\n G.error = Utilities.error;\n G.extend = Utilities.extend;\n G.extendClass = Utilities.extendClass;\n G.find = Utilities.find;\n G.fireEvent = Utilities.fireEvent;\n G.getMagnitude = Utilities.getMagnitude;\n G.getStyle = Utilities.getStyle;\n G.inArray = Utilities.inArray;\n G.isArray = Utilities.isArray;\n G.isClass = Utilities.isClass;\n G.isDOMElement = Utilities.isDOMElement;\n G.isFunction = Utilities.isFunction;\n G.isNumber = Utilities.isNumber;\n G.isObject = Utilities.isObject;\n G.isString = Utilities.isString;\n G.keys = Utilities.keys;\n G.merge = Utilities.merge;\n G.normalizeTickInterval = Utilities.normalizeTickInterval;\n G.objectEach = Utilities.objectEach;\n G.offset = Utilities.offset;\n G.pad = Utilities.pad;\n G.pick = Utilities.pick;\n G.pInt = Utilities.pInt;\n G.relativeLength = Utilities.relativeLength;\n G.removeEvent = Utilities.removeEvent;\n G.seriesType = SeriesRegistry.seriesType;\n G.splat = Utilities.splat;\n G.stableSort = Utilities.stableSort;\n G.syncTimeout = Utilities.syncTimeout;\n G.timeUnits = Utilities.timeUnits;\n G.uniqueKey = Utilities.uniqueKey;\n G.useSerialIds = Utilities.useSerialIds;\n G.wrap = Utilities.wrap;\n // Compositions\n ColumnDataLabel.compose(ColumnSeries);\n DataLabel.compose(Series);\n DateTimeAxis.compose(Axis);\n LogarithmicAxis.compose(Axis);\n PieDataLabel.compose(PieSeries);\n PlotLineOrBand.compose(Axis);\n Responsive.compose(Chart);\n // Default Export\n\n return G;\n });\n _modules['masters/highcharts.src.js']._modules = _modules;\n return _modules['masters/highcharts.src.js'];\n}));","\nconst ModeHandler = function(mode, DrawContext) {\n\n const handlers = {\n drag: [],\n click: [],\n mousemove: [],\n mousedown: [],\n mouseup: [],\n mouseout: [],\n keydown: [],\n keyup: [],\n touchstart: [],\n touchmove: [],\n touchend: [],\n tap: []\n };\n\n const ctx = {\n on(event, selector, fn) {\n if (handlers[event] === undefined) {\n throw new Error(`Invalid event type: ${event}`);\n }\n handlers[event].push({\n selector,\n fn\n });\n },\n render(id) {\n DrawContext.store.featureChanged(id);\n }\n };\n\n const delegate = function (eventName, event) {\n const handles = handlers[eventName];\n let iHandle = handles.length;\n while (iHandle--) {\n const handle = handles[iHandle];\n if (handle.selector(event)) {\n const skipRender = handle.fn.call(ctx, event);\n if (!skipRender) {\n DrawContext.store.render();\n }\n DrawContext.ui.updateMapClasses();\n\n // ensure an event is only handled once\n // we do this to let modes have multiple overlapping selectors\n // and relay on order of oppertations to filter\n break;\n }\n }\n };\n\n mode.start.call(ctx);\n\n return {\n render: mode.render,\n stop() {\n if (mode.stop) mode.stop();\n },\n trash() {\n if (mode.trash) {\n mode.trash();\n DrawContext.store.render();\n }\n },\n combineFeatures() {\n if (mode.combineFeatures) {\n mode.combineFeatures();\n }\n },\n uncombineFeatures() {\n if (mode.uncombineFeatures) {\n mode.uncombineFeatures();\n }\n },\n drag(event) {\n delegate('drag', event);\n },\n click(event) {\n delegate('click', event);\n },\n mousemove(event) {\n delegate('mousemove', event);\n },\n mousedown(event) {\n delegate('mousedown', event);\n },\n mouseup(event) {\n delegate('mouseup', event);\n },\n mouseout(event) {\n delegate('mouseout', event);\n },\n keydown(event) {\n delegate('keydown', event);\n },\n keyup(event) {\n delegate('keyup', event);\n },\n touchstart(event) {\n delegate('touchstart', event);\n },\n touchmove(event) {\n delegate('touchmove', event);\n },\n touchend(event) {\n delegate('touchend', event);\n },\n tap(event) {\n delegate('tap', event);\n }\n };\n};\n\nexport default ModeHandler;\n","var wgs84 = require('wgs84');\n\nmodule.exports.geometry = geometry;\nmodule.exports.ring = ringArea;\n\nfunction geometry(_) {\n var area = 0, i;\n switch (_.type) {\n case 'Polygon':\n return polygonArea(_.coordinates);\n case 'MultiPolygon':\n for (i = 0; i < _.coordinates.length; i++) {\n area += polygonArea(_.coordinates[i]);\n }\n return area;\n case 'Point':\n case 'MultiPoint':\n case 'LineString':\n case 'MultiLineString':\n return 0;\n case 'GeometryCollection':\n for (i = 0; i < _.geometries.length; i++) {\n area += geometry(_.geometries[i]);\n }\n return area;\n }\n}\n\nfunction polygonArea(coords) {\n var area = 0;\n if (coords && coords.length > 0) {\n area += Math.abs(ringArea(coords[0]));\n for (var i = 1; i < coords.length; i++) {\n area -= Math.abs(ringArea(coords[i]));\n }\n }\n return area;\n}\n\n/**\n * Calculate the approximate area of the polygon were it projected onto\n * the earth. Note that this area will be positive if ring is oriented\n * clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409\n *\n * Returns:\n * {float} The approximate signed geodesic area of the polygon in square\n * meters.\n */\n\nfunction ringArea(coords) {\n var p1, p2, p3, lowerIndex, middleIndex, upperIndex, i,\n area = 0,\n coordsLength = coords.length;\n\n if (coordsLength > 2) {\n for (i = 0; i < coordsLength; i++) {\n if (i === coordsLength - 2) {// i = N-2\n lowerIndex = coordsLength - 2;\n middleIndex = coordsLength -1;\n upperIndex = 0;\n } else if (i === coordsLength - 1) {// i = N-1\n lowerIndex = coordsLength - 1;\n middleIndex = 0;\n upperIndex = 1;\n } else { // i = 0 to N-3\n lowerIndex = i;\n middleIndex = i+1;\n upperIndex = i+2;\n }\n p1 = coords[lowerIndex];\n p2 = coords[middleIndex];\n p3 = coords[upperIndex];\n area += ( rad(p3[0]) - rad(p1[0]) ) * Math.sin( rad(p2[1]));\n }\n\n area = area * wgs84.RADIUS * wgs84.RADIUS / 2;\n }\n\n return area;\n}\n\nfunction rad(_) {\n return _ * Math.PI / 180;\n}","module.exports.RADIUS = 6378137;\nmodule.exports.FLATTENING = 1/298.257223563;\nmodule.exports.POLAR_RADIUS = 6356752.3142;\n","export const classes = {\n CONTROL_BASE: 'mapboxgl-ctrl',\n CONTROL_PREFIX: 'mapboxgl-ctrl-',\n CONTROL_BUTTON: 'mapbox-gl-draw_ctrl-draw-btn',\n CONTROL_BUTTON_LINE: 'mapbox-gl-draw_line',\n CONTROL_BUTTON_POLYGON: 'mapbox-gl-draw_polygon',\n CONTROL_BUTTON_POINT: 'mapbox-gl-draw_point',\n CONTROL_BUTTON_TRASH: 'mapbox-gl-draw_trash',\n CONTROL_BUTTON_COMBINE_FEATURES: 'mapbox-gl-draw_combine',\n CONTROL_BUTTON_UNCOMBINE_FEATURES: 'mapbox-gl-draw_uncombine',\n CONTROL_GROUP: 'mapboxgl-ctrl-group',\n ATTRIBUTION: 'mapboxgl-ctrl-attrib',\n ACTIVE_BUTTON: 'active',\n BOX_SELECT: 'mapbox-gl-draw_boxselect'\n};\n\nexport const sources = {\n HOT: 'mapbox-gl-draw-hot',\n COLD: 'mapbox-gl-draw-cold'\n};\n\nexport const cursors = {\n ADD: 'add',\n MOVE: 'move',\n DRAG: 'drag',\n POINTER: 'pointer',\n NONE: 'none'\n};\n\nexport const types = {\n POLYGON: 'polygon',\n LINE: 'line_string',\n POINT: 'point'\n};\n\nexport const geojsonTypes = {\n FEATURE: 'Feature',\n POLYGON: 'Polygon',\n LINE_STRING: 'LineString',\n POINT: 'Point',\n FEATURE_COLLECTION: 'FeatureCollection',\n MULTI_PREFIX: 'Multi',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon'\n};\n\nexport const modes = {\n DRAW_LINE_STRING: 'draw_line_string',\n DRAW_POLYGON: 'draw_polygon',\n DRAW_POINT: 'draw_point',\n SIMPLE_SELECT: 'simple_select',\n DIRECT_SELECT: 'direct_select',\n STATIC: 'static'\n};\n\nexport const events = {\n CREATE: 'draw.create',\n DELETE: 'draw.delete',\n UPDATE: 'draw.update',\n SELECTION_CHANGE: 'draw.selectionchange',\n MODE_CHANGE: 'draw.modechange',\n ACTIONABLE: 'draw.actionable',\n RENDER: 'draw.render',\n COMBINE_FEATURES: 'draw.combine',\n UNCOMBINE_FEATURES: 'draw.uncombine'\n};\n\nexport const updateActions = {\n MOVE: 'move',\n CHANGE_COORDINATES: 'change_coordinates'\n};\n\nexport const meta = {\n FEATURE: 'feature',\n MIDPOINT: 'midpoint',\n VERTEX: 'vertex'\n};\n\nexport const activeStates = {\n ACTIVE: 'true',\n INACTIVE: 'false'\n};\n\nexport const interactions = [\n 'scrollZoom',\n 'boxZoom',\n 'dragRotate',\n 'dragPan',\n 'keyboard',\n 'doubleClickZoom',\n 'touchZoomRotate'\n];\n\nexport const LAT_MIN = -90;\nexport const LAT_RENDERED_MIN = -85;\nexport const LAT_MAX = 90;\nexport const LAT_RENDERED_MAX = 85;\nexport const LNG_MIN = -270;\nexport const LNG_MAX = 270;\n","import area from '@mapbox/geojson-area';\nimport * as Constants from '../constants';\n\nconst FEATURE_SORT_RANKS = {\n Point: 0,\n LineString: 1,\n MultiLineString: 1,\n Polygon: 2\n};\n\nfunction comparator(a, b) {\n const score = FEATURE_SORT_RANKS[a.geometry.type] - FEATURE_SORT_RANKS[b.geometry.type];\n\n if (score === 0 && a.geometry.type === Constants.geojsonTypes.POLYGON) {\n return a.area - b.area;\n }\n\n return score;\n}\n\n// Sort in the order above, then sort polygons by area ascending.\nfunction sortFeatures(features) {\n return features.map((feature) => {\n if (feature.geometry.type === Constants.geojsonTypes.POLYGON) {\n feature.area = area.geometry({\n type: Constants.geojsonTypes.FEATURE,\n property: {},\n geometry: feature.geometry\n });\n }\n return feature;\n }).sort(comparator).map((feature) => {\n delete feature.area;\n return feature;\n });\n}\n\nexport default sortFeatures;\n","/**\n * Returns a bounding box representing the event's location.\n *\n * @param {Event} mapEvent - Mapbox GL JS map event, with a point properties.\n * @return {Array<Array<number>>} Bounding box.\n */\nfunction mapEventToBoundingBox(mapEvent, buffer = 0) {\n return [\n [mapEvent.point.x - buffer, mapEvent.point.y - buffer],\n [mapEvent.point.x + buffer, mapEvent.point.y + buffer]\n ];\n}\n\nexport default mapEventToBoundingBox;\n","function StringSet(items) {\n this._items = {};\n this._nums = {};\n this._length = items ? items.length : 0;\n if (!items) return;\n for (let i = 0, l = items.length; i < l; i++) {\n this.add(items[i]);\n if (items[i] === undefined) continue;\n if (typeof items[i] === 'string') this._items[items[i]] = i;\n else this._nums[items[i]] = i;\n\n }\n}\n\nStringSet.prototype.add = function(x) {\n if (this.has(x)) return this;\n this._length++;\n if (typeof x === 'string') this._items[x] = this._length;\n else this._nums[x] = this._length;\n return this;\n};\n\nStringSet.prototype.delete = function(x) {\n if (this.has(x) === false) return this;\n this._length--;\n delete this._items[x];\n delete this._nums[x];\n return this;\n};\n\nStringSet.prototype.has = function(x) {\n if (typeof x !== 'string' && typeof x !== 'number') return false;\n return this._items[x] !== undefined || this._nums[x] !== undefined;\n};\n\nStringSet.prototype.values = function() {\n const values = [];\n Object.keys(this._items).forEach((k) => {\n values.push({ k, v: this._items[k] });\n });\n Object.keys(this._nums).forEach((k) => {\n values.push({ k: JSON.parse(k), v: this._nums[k] });\n });\n\n return values.sort((a, b) => a.v - b.v).map(a => a.k);\n};\n\nStringSet.prototype.clear = function() {\n this._length = 0;\n this._items = {};\n this._nums = {};\n return this;\n};\n\nexport default StringSet;\n","import sortFeatures from './sort_features';\nimport mapEventToBoundingBox from './map_event_to_bounding_box';\nimport * as Constants from '../constants';\nimport StringSet from './string_set';\n\nconst META_TYPES = [\n Constants.meta.FEATURE,\n Constants.meta.MIDPOINT,\n Constants.meta.VERTEX\n];\n\n// Requires either event or bbox\nexport default {\n click: featuresAtClick,\n touch: featuresAtTouch\n};\n\nfunction featuresAtClick(event, bbox, ctx) {\n return featuresAt(event, bbox, ctx, ctx.options.clickBuffer);\n}\n\nfunction featuresAtTouch(event, bbox, ctx) {\n return featuresAt(event, bbox, ctx, ctx.options.touchBuffer);\n}\n\nfunction featuresAt(event, bbox, ctx, buffer) {\n if (ctx.map === null) return [];\n\n const box = (event) ? mapEventToBoundingBox(event, buffer) : bbox;\n\n const queryParams = {};\n if (ctx.options.styles) queryParams.layers = ctx.options.styles.map(s => s.id);\n\n const features = ctx.map.queryRenderedFeatures(box, queryParams)\n .filter(feature => META_TYPES.indexOf(feature.properties.meta) !== -1);\n\n const featureIds = new StringSet();\n const uniqueFeatures = [];\n features.forEach((feature) => {\n const featureId = feature.properties.id;\n if (featureIds.has(featureId)) return;\n featureIds.add(featureId);\n uniqueFeatures.push(feature);\n });\n\n return sortFeatures(uniqueFeatures);\n}\n","import featuresAt from './features_at';\nimport * as Constants from '../constants';\n\nexport default function getFeatureAtAndSetCursors(event, ctx) {\n const features = featuresAt.click(event, null, ctx);\n const classes = { mouse: Constants.cursors.NONE };\n\n if (features[0]) {\n classes.mouse = (features[0].properties.active === Constants.activeStates.ACTIVE) ?\n Constants.cursors.MOVE : Constants.cursors.POINTER;\n classes.feature = features[0].properties.meta;\n }\n\n if (ctx.events.currentModeName().indexOf('draw') !== -1) {\n classes.mouse = Constants.cursors.ADD;\n }\n\n ctx.ui.queueMapClasses(classes);\n ctx.ui.updateMapClasses();\n\n return features[0];\n}\n","export default function(a, b) {\n const x = a.x - b.x;\n const y = a.y - b.y;\n return Math.sqrt((x * x) + (y * y));\n}\n","import euclideanDistance from './euclidean_distance';\n\nconst FINE_TOLERANCE = 4;\nconst GROSS_TOLERANCE = 12;\nconst INTERVAL = 500;\n\nexport default function isClick(start, end, options = {}) {\n const fineTolerance = (options.fineTolerance != null) ? options.fineTolerance : FINE_TOLERANCE;\n const grossTolerance = (options.grossTolerance != null) ? options.grossTolerance : GROSS_TOLERANCE;\n const interval = (options.interval != null) ? options.interval : INTERVAL;\n\n start.point = start.point || end.point;\n start.time = start.time || end.time;\n const moveDistance = euclideanDistance(start.point, end.point);\n\n return moveDistance < fineTolerance ||\n (moveDistance < grossTolerance && (end.time - start.time) < interval);\n}\n","import euclideanDistance from './euclidean_distance';\n\nexport const TAP_TOLERANCE = 25;\nexport const TAP_INTERVAL = 250;\n\nexport default function isTap(start, end, options = {}) {\n const tolerance = (options.tolerance != null) ? options.tolerance : TAP_TOLERANCE;\n const interval = (options.interval != null) ? options.interval : TAP_INTERVAL;\n\n start.point = start.point || end.point;\n start.time = start.time || end.time;\n const moveDistance = euclideanDistance(start.point, end.point);\n\n return moveDistance < tolerance && (end.time - start.time) < interval;\n}\n","var hat = module.exports = function (bits, base) {\n if (!base) base = 16;\n if (bits === undefined) bits = 128;\n if (bits <= 0) return '0';\n \n var digits = Math.log(Math.pow(2, bits)) / Math.log(base);\n for (var i = 2; digits === Infinity; i *= 2) {\n digits = Math.log(Math.pow(2, bits / i)) / Math.log(base) * i;\n }\n \n var rem = digits - Math.floor(digits);\n \n var res = '';\n \n for (var i = 0; i < Math.floor(digits); i++) {\n var x = Math.floor(Math.random() * base).toString(base);\n res = x + res;\n }\n \n if (rem) {\n var b = Math.pow(base, rem);\n var x = Math.floor(Math.random() * b).toString(base);\n res = x + res;\n }\n \n var parsed = parseInt(res, base);\n if (parsed !== Infinity && parsed >= Math.pow(2, bits)) {\n return hat(bits, base)\n }\n else return res;\n};\n\nhat.rack = function (bits, base, expandBy) {\n var fn = function (data) {\n var iters = 0;\n do {\n if (iters ++ > 10) {\n if (expandBy) bits += expandBy;\n else throw new Error('too many ID collisions, use more bits')\n }\n \n var id = hat(bits, base);\n } while (Object.hasOwnProperty.call(hats, id));\n \n hats[id] = data;\n return id;\n };\n var hats = fn.hats = {};\n \n fn.get = function (id) {\n return fn.hats[id];\n };\n \n fn.set = function (id, value) {\n fn.hats[id] = value;\n return fn;\n };\n \n fn.bits = bits || 128;\n fn.base = base || 16;\n return fn;\n};\n","import hat from 'hat';\nimport * as Constants from '../constants';\n\nconst Feature = function(ctx, geojson) {\n this.ctx = ctx;\n this.properties = geojson.properties || {};\n this.coordinates = geojson.geometry.coordinates;\n this.id = geojson.id || hat();\n this.type = geojson.geometry.type;\n};\n\nFeature.prototype.changed = function() {\n this.ctx.store.featureChanged(this.id);\n};\n\nFeature.prototype.incomingCoords = function(coords) {\n this.setCoordinates(coords);\n};\n\nFeature.prototype.setCoordinates = function(coords) {\n this.coordinates = coords;\n this.changed();\n};\n\nFeature.prototype.getCoordinates = function() {\n return JSON.parse(JSON.stringify(this.coordinates));\n};\n\nFeature.prototype.setProperty = function(property, value) {\n this.properties[property] = value;\n};\n\nFeature.prototype.toGeoJSON = function() {\n return JSON.parse(JSON.stringify({\n id: this.id,\n type: Constants.geojsonTypes.FEATURE,\n properties: this.properties,\n geometry: {\n coordinates: this.getCoordinates(),\n type: this.type\n }\n }));\n};\n\nFeature.prototype.internal = function(mode) {\n const properties = {\n id: this.id,\n meta: Constants.meta.FEATURE,\n 'meta:type': this.type,\n active: Constants.activeStates.INACTIVE,\n mode\n };\n\n if (this.ctx.options.userProperties) {\n for (const name in this.properties) {\n properties[`user_${name}`] = this.properties[name];\n }\n }\n\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties,\n geometry: {\n coordinates: this.getCoordinates(),\n type: this.type\n }\n };\n};\n\nexport default Feature;\n","import Feature from './feature';\n\nconst Point = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n};\n\nPoint.prototype = Object.create(Feature.prototype);\n\nPoint.prototype.isValid = function() {\n return typeof this.coordinates[0] === 'number' &&\n typeof this.coordinates[1] === 'number';\n};\n\nPoint.prototype.updateCoordinate = function(pathOrLng, lngOrLat, lat) {\n if (arguments.length === 3) {\n this.coordinates = [lngOrLat, lat];\n } else {\n this.coordinates = [pathOrLng, lngOrLat];\n }\n this.changed();\n};\n\nPoint.prototype.getCoordinate = function() {\n return this.getCoordinates();\n};\n\nexport default Point;\n","import Feature from './feature';\n\nconst LineString = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n};\n\nLineString.prototype = Object.create(Feature.prototype);\n\nLineString.prototype.isValid = function() {\n return this.coordinates.length > 1;\n};\n\nLineString.prototype.addCoordinate = function(path, lng, lat) {\n this.changed();\n const id = parseInt(path, 10);\n this.coordinates.splice(id, 0, [lng, lat]);\n};\n\nLineString.prototype.getCoordinate = function(path) {\n const id = parseInt(path, 10);\n return JSON.parse(JSON.stringify(this.coordinates[id]));\n};\n\nLineString.prototype.removeCoordinate = function(path) {\n this.changed();\n this.coordinates.splice(parseInt(path, 10), 1);\n};\n\nLineString.prototype.updateCoordinate = function(path, lng, lat) {\n const id = parseInt(path, 10);\n this.coordinates[id] = [lng, lat];\n this.changed();\n};\n\nexport default LineString;\n","import Feature from './feature';\n\nconst Polygon = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n this.coordinates = this.coordinates.map(ring => ring.slice(0, -1));\n};\n\nPolygon.prototype = Object.create(Feature.prototype);\n\nPolygon.prototype.isValid = function() {\n if (this.coordinates.length === 0) return false;\n return this.coordinates.every(ring => ring.length > 2);\n};\n\n// Expects valid geoJSON polygon geometry: first and last positions must be equivalent.\nPolygon.prototype.incomingCoords = function(coords) {\n this.coordinates = coords.map(ring => ring.slice(0, -1));\n this.changed();\n};\n\n// Does NOT expect valid geoJSON polygon geometry: first and last positions should not be equivalent.\nPolygon.prototype.setCoordinates = function(coords) {\n this.coordinates = coords;\n this.changed();\n};\n\nPolygon.prototype.addCoordinate = function(path, lng, lat) {\n this.changed();\n const ids = path.split('.').map(x => parseInt(x, 10));\n\n const ring = this.coordinates[ids[0]];\n\n ring.splice(ids[1], 0, [lng, lat]);\n};\n\nPolygon.prototype.removeCoordinate = function(path) {\n this.changed();\n const ids = path.split('.').map(x => parseInt(x, 10));\n const ring = this.coordinates[ids[0]];\n if (ring) {\n ring.splice(ids[1], 1);\n if (ring.length < 3) {\n this.coordinates.splice(ids[0], 1);\n }\n }\n};\n\nPolygon.prototype.getCoordinate = function(path) {\n const ids = path.split('.').map(x => parseInt(x, 10));\n const ring = this.coordinates[ids[0]];\n return JSON.parse(JSON.stringify(ring[ids[1]]));\n};\n\nPolygon.prototype.getCoordinates = function() {\n return this.coordinates.map(coords => coords.concat([coords[0]]));\n};\n\nPolygon.prototype.updateCoordinate = function(path, lng, lat) {\n this.changed();\n const parts = path.split('.');\n const ringId = parseInt(parts[0], 10);\n const coordId = parseInt(parts[1], 10);\n\n if (this.coordinates[ringId] === undefined) {\n this.coordinates[ringId] = [];\n }\n\n this.coordinates[ringId][coordId] = [lng, lat];\n};\n\nexport default Polygon;\n","import Feature from './feature';\nimport * as Constants from '../constants';\nimport hat from 'hat';\n\nimport MultiPoint from './point';\nimport MultiLineString from './line_string';\nimport MultiPolygon from './polygon';\n\nconst models = {\n MultiPoint,\n MultiLineString,\n MultiPolygon\n};\n\nconst takeAction = (features, action, path, lng, lat) => {\n const parts = path.split('.');\n const idx = parseInt(parts[0], 10);\n const tail = (!parts[1]) ? null : parts.slice(1).join('.');\n return features[idx][action](tail, lng, lat);\n};\n\nconst MultiFeature = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n\n delete this.coordinates;\n this.model = models[geojson.geometry.type];\n if (this.model === undefined) throw new TypeError(`${geojson.geometry.type} is not a valid type`);\n this.features = this._coordinatesToFeatures(geojson.geometry.coordinates);\n};\n\nMultiFeature.prototype = Object.create(Feature.prototype);\n\nMultiFeature.prototype._coordinatesToFeatures = function(coordinates) {\n const Model = this.model.bind(this);\n return coordinates.map(coords => new Model(this.ctx, {\n id: hat(),\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n coordinates: coords,\n type: this.type.replace('Multi', '')\n }\n }));\n};\n\nMultiFeature.prototype.isValid = function() {\n return this.features.every(f => f.isValid());\n};\n\nMultiFeature.prototype.setCoordinates = function(coords) {\n this.features = this._coordinatesToFeatures(coords);\n this.changed();\n};\n\nMultiFeature.prototype.getCoordinate = function(path) {\n return takeAction(this.features, 'getCoordinate', path);\n};\n\nMultiFeature.prototype.getCoordinates = function() {\n return JSON.parse(JSON.stringify(this.features.map((f) => {\n if (f.type === Constants.geojsonTypes.POLYGON) return f.getCoordinates();\n return f.coordinates;\n })));\n};\n\nMultiFeature.prototype.updateCoordinate = function(path, lng, lat) {\n takeAction(this.features, 'updateCoordinate', path, lng, lat);\n this.changed();\n};\n\nMultiFeature.prototype.addCoordinate = function(path, lng, lat) {\n takeAction(this.features, 'addCoordinate', path, lng, lat);\n this.changed();\n};\n\nMultiFeature.prototype.removeCoordinate = function(path) {\n takeAction(this.features, 'removeCoordinate', path);\n this.changed();\n};\n\nMultiFeature.prototype.getFeatures = function() {\n return this.features;\n};\n\nexport default MultiFeature;\n","import * as Constants from '../constants';\nimport featuresAt from '../lib/features_at';\nimport Point from '../feature_types/point';\nimport LineString from '../feature_types/line_string';\nimport Polygon from '../feature_types/polygon';\nimport MultiFeature from '../feature_types/multi_feature';\n\nexport default function ModeInterface(ctx) {\n this.map = ctx.map;\n this.drawConfig = JSON.parse(JSON.stringify(ctx.options || {}));\n this._ctx = ctx;\n}\n\n/**\n * Sets Draw's interal selected state\n * @name this.setSelected\n * @param {DrawFeature[]} - whats selected as a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js)\n */\nModeInterface.prototype.setSelected = function(features) {\n return this._ctx.store.setSelected(features);\n};\n\n/**\n * Sets Draw's internal selected coordinate state\n * @name this.setSelectedCoordinates\n * @param {Object[]} coords - a array of {coord_path: 'string', feature_id: 'string'}\n */\nModeInterface.prototype.setSelectedCoordinates = function(coords) {\n this._ctx.store.setSelectedCoordinates(coords);\n coords.reduce((m, c) => {\n if (m[c.feature_id] === undefined) {\n m[c.feature_id] = true;\n this._ctx.store.get(c.feature_id).changed();\n }\n return m;\n }, {});\n};\n\n/**\n * Get all selected features as a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js)\n * @name this.getSelected\n * @returns {DrawFeature[]}\n */\nModeInterface.prototype.getSelected = function() {\n return this._ctx.store.getSelected();\n};\n\n/**\n * Get the ids of all currently selected features\n * @name this.getSelectedIds\n * @returns {String[]}\n */\nModeInterface.prototype.getSelectedIds = function() {\n return this._ctx.store.getSelectedIds();\n};\n\n/**\n * Check if a feature is selected\n * @name this.isSelected\n * @param {String} id - a feature id\n * @returns {Boolean}\n */\nModeInterface.prototype.isSelected = function(id) {\n return this._ctx.store.isSelected(id);\n};\n\n/**\n * Get a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js) by its id\n * @name this.getFeature\n * @param {String} id - a feature id\n * @returns {DrawFeature}\n */\nModeInterface.prototype.getFeature = function(id) {\n return this._ctx.store.get(id);\n};\n\n/**\n * Add a feature to draw's internal selected state\n * @name this.select\n * @param {String} id\n */\nModeInterface.prototype.select = function(id) {\n return this._ctx.store.select(id);\n};\n\n/**\n * Remove a feature from draw's internal selected state\n * @name this.delete\n * @param {String} id\n */\nModeInterface.prototype.deselect = function(id) {\n return this._ctx.store.deselect(id);\n};\n\n/**\n * Delete a feature from draw\n * @name this.deleteFeature\n * @param {String} id - a feature id\n */\nModeInterface.prototype.deleteFeature = function(id, opts = {}) {\n return this._ctx.store.delete(id, opts);\n};\n\n/**\n * Add a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js) to draw.\n * See `this.newFeature` for converting geojson into a DrawFeature\n * @name this.addFeature\n * @param {DrawFeature} feature - the feature to add\n */\nModeInterface.prototype.addFeature = function(feature) {\n return this._ctx.store.add(feature);\n};\n\n/**\n * Clear all selected features\n */\nModeInterface.prototype.clearSelectedFeatures = function() {\n return this._ctx.store.clearSelected();\n};\n\n/**\n * Clear all selected coordinates\n */\nModeInterface.prototype.clearSelectedCoordinates = function() {\n return this._ctx.store.clearSelectedCoordinates();\n};\n\n/**\n * Indicate if the different action are currently possible with your mode\n * See [draw.actionalbe](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#drawactionable) for a list of possible actions. All undefined actions are set to **false** by default\n * @name this.setActionableState\n * @param {Object} actions\n */\nModeInterface.prototype.setActionableState = function(actions = {}) {\n const newSet = {\n trash: actions.trash || false,\n combineFeatures: actions.combineFeatures || false,\n uncombineFeatures: actions.uncombineFeatures || false\n };\n return this._ctx.events.actionable(newSet);\n};\n\n/**\n * Trigger a mode change\n * @name this.changeMode\n * @param {String} mode - the mode to transition into\n * @param {Object} opts - the options object to pass to the new mode\n * @param {Object} eventOpts - used to control what kind of events are emitted.\n */\nModeInterface.prototype.changeMode = function(mode, opts = {}, eventOpts = {}) {\n return this._ctx.events.changeMode(mode, opts, eventOpts);\n};\n\n/**\n * Update the state of draw map classes\n * @name this.updateUIClasses\n * @param {Object} opts\n */\nModeInterface.prototype.updateUIClasses = function(opts) {\n return this._ctx.ui.queueMapClasses(opts);\n};\n\n/**\n * If a name is provided it makes that button active, else if makes all buttons inactive\n * @name this.activateUIButton\n * @param {String?} name - name of the button to make active, leave as undefined to set buttons to be inactive\n */\nModeInterface.prototype.activateUIButton = function(name) {\n return this._ctx.ui.setActiveButton(name);\n};\n\n/**\n * Get the features at the location of an event object or in a bbox\n * @name this.featuresAt\n * @param {Event||NULL} event - a mapbox-gl event object\n * @param {BBOX||NULL} bbox - the area to get features from\n * @param {String} bufferType - is this `click` or `tap` event, defaults to click\n */\nModeInterface.prototype.featuresAt = function(event, bbox, bufferType = 'click') {\n if (bufferType !== 'click' && bufferType !== 'touch') throw new Error('invalid buffer type');\n return featuresAt[bufferType](event, bbox, this._ctx);\n};\n\n/**\n * Create a new [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js) from geojson\n * @name this.newFeature\n * @param {GeoJSONFeature} geojson\n * @returns {DrawFeature}\n */\nModeInterface.prototype.newFeature = function(geojson) {\n const type = geojson.geometry.type;\n if (type === Constants.geojsonTypes.POINT) return new Point(this._ctx, geojson);\n if (type === Constants.geojsonTypes.LINE_STRING) return new LineString(this._ctx, geojson);\n if (type === Constants.geojsonTypes.POLYGON) return new Polygon(this._ctx, geojson);\n return new MultiFeature(this._ctx, geojson);\n};\n\n/**\n * Check is an object is an instance of a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js)\n * @name this.isInstanceOf\n * @param {String} type - `Point`, `LineString`, `Polygon`, `MultiFeature`\n * @param {Object} feature - the object that needs to be checked\n * @returns {Boolean}\n */\nModeInterface.prototype.isInstanceOf = function(type, feature) {\n if (type === Constants.geojsonTypes.POINT) return feature instanceof Point;\n if (type === Constants.geojsonTypes.LINE_STRING) return feature instanceof LineString;\n if (type === Constants.geojsonTypes.POLYGON) return feature instanceof Polygon;\n if (type === 'MultiFeature') return feature instanceof MultiFeature;\n throw new Error(`Unknown feature class: ${type}`);\n};\n\n/**\n * Force draw to rerender the feature of the provided id\n * @name this.doRender\n * @param {String} id - a feature id\n */\nModeInterface.prototype.doRender = function(id) {\n return this._ctx.store.featureChanged(id);\n};\n\n","import ModeInterface from './mode_interface_accessors';\nexport default ModeInterface;\n\n/**\n * Triggered while a mode is being transitioned into.\n * @param opts {Object} - this is the object passed via `draw.changeMode('mode', opts)`;\n * @name MODE.onSetup\n * @returns {Object} - this object will be passed to all other life cycle functions\n */\nModeInterface.prototype.onSetup = function() {};\n\n/**\n * Triggered when a drag event is detected on the map\n * @name MODE.onDrag\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onDrag = function() {};\n\n/**\n * Triggered when the mouse is clicked\n * @name MODE.onClick\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onClick = function() {};\n\n/**\n * Triggered with the mouse is moved\n * @name MODE.onMouseMove\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseMove = function() {};\n\n/**\n * Triggered when the mouse button is pressed down\n * @name MODE.onMouseDown\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseDown = function() {};\n\n/**\n * Triggered when the mouse button is released\n * @name MODE.onMouseUp\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseUp = function() {};\n\n/**\n * Triggered when the mouse leaves the map's container\n * @name MODE.onMouseOut\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseOut = function() {};\n\n/**\n * Triggered when a key up event is detected\n * @name MODE.onKeyUp\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onKeyUp = function() {};\n\n/**\n * Triggered when a key down event is detected\n * @name MODE.onKeyDown\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onKeyDown = function() {};\n\n/**\n * Triggered when a touch event is started\n * @name MODE.onTouchStart\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTouchStart = function() {};\n\n/**\n * Triggered when one drags thier finger on a mobile device\n * @name MODE.onTouchMove\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTouchMove = function() {};\n\n/**\n * Triggered when one removes their finger from the map\n * @name MODE.onTouchEnd\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTouchEnd = function() {};\n\n/**\n * Triggered when one quicly taps the map\n * @name MODE.onTap\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTap = function() {};\n\n/**\n * Triggered when the mode is being exited, to be used for cleaning up artifacts such as invalid features\n * @name MODE.onStop\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onStop = function() {};\n\n/**\n * Triggered when [draw.trash()](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#trash-draw) is called.\n * @name MODE.onTrash\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onTrash = function() {};\n\n/**\n * Triggered when [draw.combineFeatures()](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#combinefeatures-draw) is called.\n * @name MODE.onCombineFeature\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onCombineFeature = function() {};\n\n/**\n * Triggered when [draw.uncombineFeatures()](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#uncombinefeatures-draw) is called.\n * @name MODE.onUncombineFeature\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onUncombineFeature = function() {};\n\n/**\n * Triggered per feature on render to convert raw features into set of features for display on the map\n * See [styling draw](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#styling-draw) for information about what geojson properties Draw uses as part of rendering.\n * @name MODE.toDisplayFeatures\n * @param state {Object} - a mutible state object created by onSetup\n * @param geojson {Object} - a geojson being evaulated. To render, pass to `display`.\n * @param display {Function} - all geojson objects passed to this be rendered onto the map\n */\nModeInterface.prototype.toDisplayFeatures = function() {\n throw new Error('You must overwrite toDisplayFeatures');\n};\n\n","import ModeInterface from './mode_interface';\n\nconst eventMapper = {\n drag: 'onDrag',\n click: 'onClick',\n mousemove: 'onMouseMove',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseout: 'onMouseOut',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown',\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onTouchEnd',\n tap: 'onTap'\n};\n\nconst eventKeys = Object.keys(eventMapper);\n\nexport default function(modeObject) {\n const modeObjectKeys = Object.keys(modeObject);\n\n return function(ctx, startOpts = {}) {\n let state = {};\n\n const mode = modeObjectKeys.reduce((m, k) => {\n m[k] = modeObject[k];\n return m;\n }, new ModeInterface(ctx));\n\n function wrapper(eh) {\n return e => mode[eh](state, e);\n }\n\n return {\n start() {\n state = mode.onSetup(startOpts); // this should set ui buttons\n\n // Adds event handlers for all event options\n // add sets the selector to false for all\n // handlers that are not present in the mode\n // to reduce on render calls for functions that\n // have no logic\n eventKeys.forEach((key) => {\n const modeHandler = eventMapper[key];\n let selector = () => false;\n if (modeObject[modeHandler]) {\n selector = () => true;\n }\n this.on(key, selector, wrapper(modeHandler));\n });\n\n },\n stop() {\n mode.onStop(state);\n },\n trash() {\n mode.onTrash(state);\n },\n combineFeatures() {\n mode.onCombineFeatures(state);\n },\n uncombineFeatures() {\n mode.onUncombineFeatures(state);\n },\n render(geojson, push) {\n mode.toDisplayFeatures(state, geojson, push);\n }\n };\n };\n}\n","/**\n * Derive a dense array (no `undefined`s) from a single value or array.\n *\n * @param {any} x\n * @return {Array<any>}\n */\nfunction toDenseArray(x) {\n return [].concat(x).filter(y => y !== undefined);\n}\n\nexport default toDenseArray;\n","import * as Constants from './constants';\n\nexport default function render() {\n // eslint-disable-next-line no-invalid-this\n const store = this;\n const mapExists = store.ctx.map && store.ctx.map.getSource(Constants.sources.HOT) !== undefined;\n if (!mapExists) return cleanup();\n\n const mode = store.ctx.events.currentModeName();\n\n store.ctx.ui.queueMapClasses({ mode });\n\n let newHotIds = [];\n let newColdIds = [];\n\n if (store.isDirty) {\n newColdIds = store.getAllIds();\n } else {\n newHotIds = store.getChangedIds().filter(id => store.get(id) !== undefined);\n newColdIds = store.sources.hot.filter(geojson => geojson.properties.id && newHotIds.indexOf(geojson.properties.id) === -1 && store.get(geojson.properties.id) !== undefined).map(geojson => geojson.properties.id);\n }\n\n store.sources.hot = [];\n const lastColdCount = store.sources.cold.length;\n store.sources.cold = store.isDirty ? [] : store.sources.cold.filter((geojson) => {\n const id = geojson.properties.id || geojson.properties.parent;\n return newHotIds.indexOf(id) === -1;\n });\n\n const coldChanged = lastColdCount !== store.sources.cold.length || newColdIds.length > 0;\n newHotIds.forEach(id => renderFeature(id, 'hot'));\n newColdIds.forEach(id => renderFeature(id, 'cold'));\n\n function renderFeature(id, source) {\n const feature = store.get(id);\n const featureInternal = feature.internal(mode);\n store.ctx.events.currentModeRender(featureInternal, (geojson) => {\n store.sources[source].push(geojson);\n });\n }\n\n if (coldChanged) {\n store.ctx.map.getSource(Constants.sources.COLD).setData({\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: store.sources.cold\n });\n }\n\n store.ctx.map.getSource(Constants.sources.HOT).setData({\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: store.sources.hot\n });\n\n if (store._emitSelectionChange) {\n store.ctx.map.fire(Constants.events.SELECTION_CHANGE, {\n features: store.getSelected().map(feature => feature.toGeoJSON()),\n points: store.getSelectedCoordinates().map(coordinate => ({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: coordinate.coordinates\n }\n }))\n });\n store._emitSelectionChange = false;\n }\n\n if (store._deletedFeaturesToEmit.length) {\n const geojsonToEmit = store._deletedFeaturesToEmit.map(feature => feature.toGeoJSON());\n\n store._deletedFeaturesToEmit = [];\n\n store.ctx.map.fire(Constants.events.DELETE, {\n features: geojsonToEmit\n });\n }\n\n cleanup();\n store.ctx.map.fire(Constants.events.RENDER, {});\n\n function cleanup() {\n store.isDirty = false;\n store.clearChangedIds();\n }\n}\n","import toDenseArray from './lib/to_dense_array';\nimport StringSet from './lib/string_set';\nimport render from './render';\nimport {interactions} from './constants';\n\nexport default function Store(ctx) {\n this._features = {};\n this._featureIds = new StringSet();\n this._selectedFeatureIds = new StringSet();\n this._selectedCoordinates = [];\n this._changedFeatureIds = new StringSet();\n this._deletedFeaturesToEmit = [];\n this._emitSelectionChange = false;\n this._mapInitialConfig = {};\n this.ctx = ctx;\n this.sources = {\n hot: [],\n cold: []\n };\n\n // Deduplicate requests to render and tie them to animation frames.\n let renderRequest;\n this.render = () => {\n if (!renderRequest) {\n renderRequest = requestAnimationFrame(() => {\n renderRequest = null;\n render.call(this);\n });\n }\n };\n this.isDirty = false;\n}\n\n\n/**\n * Delays all rendering until the returned function is invoked\n * @return {Function} renderBatch\n */\nStore.prototype.createRenderBatch = function() {\n const holdRender = this.render;\n let numRenders = 0;\n this.render = function() {\n numRenders++;\n };\n\n return () => {\n this.render = holdRender;\n if (numRenders > 0) {\n this.render();\n }\n };\n};\n\n/**\n * Sets the store's state to dirty.\n * @return {Store} this\n */\nStore.prototype.setDirty = function() {\n this.isDirty = true;\n return this;\n};\n\n/**\n * Sets a feature's state to changed.\n * @param {string} featureId\n * @return {Store} this\n */\nStore.prototype.featureChanged = function(featureId) {\n this._changedFeatureIds.add(featureId);\n return this;\n};\n\n/**\n * Gets the ids of all features currently in changed state.\n * @return {Store} this\n */\nStore.prototype.getChangedIds = function() {\n return this._changedFeatureIds.values();\n};\n\n/**\n * Sets all features to unchanged state.\n * @return {Store} this\n */\nStore.prototype.clearChangedIds = function() {\n this._changedFeatureIds.clear();\n return this;\n};\n\n/**\n * Gets the ids of all features in the store.\n * @return {Store} this\n */\nStore.prototype.getAllIds = function() {\n return this._featureIds.values();\n};\n\n/**\n * Adds a feature to the store.\n * @param {Object} feature\n *\n * @return {Store} this\n */\nStore.prototype.add = function(feature) {\n this.featureChanged(feature.id);\n this._features[feature.id] = feature;\n this._featureIds.add(feature.id);\n return this;\n};\n\n/**\n * Deletes a feature or array of features from the store.\n * Cleans up after the deletion by deselecting the features.\n * If changes were made, sets the state to the dirty\n * and fires an event.\n * @param {string | Array<string>} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.delete = function(featureIds, options = {}) {\n toDenseArray(featureIds).forEach((id) => {\n if (!this._featureIds.has(id)) return;\n this._featureIds.delete(id);\n this._selectedFeatureIds.delete(id);\n if (!options.silent) {\n if (this._deletedFeaturesToEmit.indexOf(this._features[id]) === -1) {\n this._deletedFeaturesToEmit.push(this._features[id]);\n }\n }\n delete this._features[id];\n this.isDirty = true;\n });\n refreshSelectedCoordinates(this, options);\n return this;\n};\n\n/**\n * Returns a feature in the store matching the specified value.\n * @return {Object | undefined} feature\n */\nStore.prototype.get = function(id) {\n return this._features[id];\n};\n\n/**\n * Returns all features in the store.\n * @return {Array<Object>}\n */\nStore.prototype.getAll = function() {\n return Object.keys(this._features).map(id => this._features[id]);\n};\n\n/**\n * Adds features to the current selection.\n * @param {string | Array<string>} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.select = function(featureIds, options = {}) {\n toDenseArray(featureIds).forEach((id) => {\n if (this._selectedFeatureIds.has(id)) return;\n this._selectedFeatureIds.add(id);\n this._changedFeatureIds.add(id);\n if (!options.silent) {\n this._emitSelectionChange = true;\n }\n });\n return this;\n};\n\n/**\n * Deletes features from the current selection.\n * @param {string | Array<string>} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.deselect = function(featureIds, options = {}) {\n toDenseArray(featureIds).forEach((id) => {\n if (!this._selectedFeatureIds.has(id)) return;\n this._selectedFeatureIds.delete(id);\n this._changedFeatureIds.add(id);\n if (!options.silent) {\n this._emitSelectionChange = true;\n }\n });\n refreshSelectedCoordinates(this, options);\n return this;\n};\n\n/**\n * Clears the current selection.\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.clearSelected = function(options = {}) {\n this.deselect(this._selectedFeatureIds.values(), { silent: options.silent });\n return this;\n};\n\n/**\n * Sets the store's selection, clearing any prior values.\n * If no feature ids are passed, the store is just cleared.\n * @param {string | Array<string> | undefined} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.setSelected = function(featureIds, options = {}) {\n featureIds = toDenseArray(featureIds);\n\n // Deselect any features not in the new selection\n this.deselect(this._selectedFeatureIds.values().filter(id => featureIds.indexOf(id) === -1), { silent: options.silent });\n\n // Select any features in the new selection that were not already selected\n this.select(featureIds.filter(id => !this._selectedFeatureIds.has(id)), { silent: options.silent });\n\n return this;\n};\n\n/**\n * Sets the store's coordinates selection, clearing any prior values.\n * @param {Array<Array<string>>} coordinates\n * @return {Store} this\n */\nStore.prototype.setSelectedCoordinates = function(coordinates) {\n this._selectedCoordinates = coordinates;\n this._emitSelectionChange = true;\n return this;\n};\n\n/**\n * Clears the current coordinates selection.\n * @param {Object} [options]\n * @return {Store} this\n */\nStore.prototype.clearSelectedCoordinates = function() {\n this._selectedCoordinates = [];\n this._emitSelectionChange = true;\n return this;\n};\n\n/**\n * Returns the ids of features in the current selection.\n * @return {Array<string>} Selected feature ids.\n */\nStore.prototype.getSelectedIds = function() {\n return this._selectedFeatureIds.values();\n};\n\n/**\n * Returns features in the current selection.\n * @return {Array<Object>} Selected features.\n */\nStore.prototype.getSelected = function() {\n return this._selectedFeatureIds.values().map(id => this.get(id));\n};\n\n/**\n * Returns selected coordinates in the currently selected feature.\n * @return {Array<Object>} Selected coordinates.\n */\nStore.prototype.getSelectedCoordinates = function() {\n const selected = this._selectedCoordinates.map((coordinate) => {\n const feature = this.get(coordinate.feature_id);\n return {\n coordinates: feature.getCoordinate(coordinate.coord_path)\n };\n });\n return selected;\n};\n\n/**\n * Indicates whether a feature is selected.\n * @param {string} featureId\n * @return {boolean} `true` if the feature is selected, `false` if not.\n */\nStore.prototype.isSelected = function(featureId) {\n return this._selectedFeatureIds.has(featureId);\n};\n\n/**\n * Sets a property on the given feature\n * @param {string} featureId\n * @param {string} property property\n * @param {string} property value\n*/\nStore.prototype.setFeatureProperty = function(featureId, property, value) {\n this.get(featureId).setProperty(property, value);\n this.featureChanged(featureId);\n};\n\nfunction refreshSelectedCoordinates(store, options) {\n const newSelectedCoordinates = store._selectedCoordinates.filter(point => store._selectedFeatureIds.has(point.feature_id));\n if (store._selectedCoordinates.length !== newSelectedCoordinates.length && !options.silent) {\n store._emitSelectionChange = true;\n }\n store._selectedCoordinates = newSelectedCoordinates;\n}\n\n/**\n * Stores the initial config for a map, so that we can set it again after we're done.\n*/\nStore.prototype.storeMapConfig = function() {\n interactions.forEach((interaction) => {\n const interactionSet = this.ctx.map[interaction];\n if (interactionSet) {\n this._mapInitialConfig[interaction] = this.ctx.map[interaction].isEnabled();\n }\n });\n};\n\n/**\n * Restores the initial config for a map, ensuring all is well.\n*/\nStore.prototype.restoreMapConfig = function() {\n Object.keys(this._mapInitialConfig).forEach((key) => {\n const value = this._mapInitialConfig[key];\n if (value) {\n this.ctx.map[key].enable();\n } else {\n this.ctx.map[key].disable();\n }\n });\n};\n\n/**\n * Returns the initial state of an interaction setting.\n * @param {string} interaction\n * @return {boolean} `true` if the interaction is enabled, `false` if not.\n * Defaults to `true`. (Todo: include defaults.)\n*/\nStore.prototype.getInitialConfigValue = function(interaction) {\n if (this._mapInitialConfig[interaction] !== undefined) {\n return this._mapInitialConfig[interaction];\n } else {\n // This needs to be set to whatever the default is for that interaction\n // It seems to be true for all cases currently, so let's send back `true`.\n return true;\n }\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","import xtend from 'xtend';\nimport * as Constants from './constants';\n\nconst classTypes = ['mode', 'feature', 'mouse'];\n\nexport default function(ctx) {\n\n\n const buttonElements = {};\n let activeButton = null;\n\n let currentMapClasses = {\n mode: null, // e.g. mode-direct_select\n feature: null, // e.g. feature-vertex\n mouse: null // e.g. mouse-move\n };\n\n let nextMapClasses = {\n mode: null,\n feature: null,\n mouse: null\n };\n\n function clearMapClasses() {\n queueMapClasses({mode:null, feature:null, mouse:null});\n updateMapClasses();\n }\n\n function queueMapClasses(options) {\n nextMapClasses = xtend(nextMapClasses, options);\n }\n\n function updateMapClasses() {\n if (!ctx.container) return;\n\n const classesToRemove = [];\n const classesToAdd = [];\n\n classTypes.forEach((type) => {\n if (nextMapClasses[type] === currentMapClasses[type]) return;\n\n classesToRemove.push(`${type}-${currentMapClasses[type]}`);\n if (nextMapClasses[type] !== null) {\n classesToAdd.push(`${type}-${nextMapClasses[type]}`);\n }\n });\n\n if (classesToRemove.length > 0) {\n ctx.container.classList.remove(...classesToRemove);\n }\n\n if (classesToAdd.length > 0) {\n ctx.container.classList.add(...classesToAdd);\n }\n\n currentMapClasses = xtend(currentMapClasses, nextMapClasses);\n }\n\n function createControlButton(id, options = {}) {\n const button = document.createElement('button');\n button.className = `${Constants.classes.CONTROL_BUTTON} ${options.className}`;\n button.setAttribute('title', options.title);\n options.container.appendChild(button);\n\n button.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n const clickedButton = e.target;\n if (clickedButton === activeButton) {\n deactivateButtons();\n options.onDeactivate();\n return;\n }\n\n setActiveButton(id);\n options.onActivate();\n }, true);\n\n return button;\n }\n\n function deactivateButtons() {\n if (!activeButton) return;\n activeButton.classList.remove(Constants.classes.ACTIVE_BUTTON);\n activeButton = null;\n }\n\n function setActiveButton(id) {\n deactivateButtons();\n\n const button = buttonElements[id];\n if (!button) return;\n\n if (button && id !== 'trash') {\n button.classList.add(Constants.classes.ACTIVE_BUTTON);\n activeButton = button;\n }\n }\n\n function addButtons() {\n const controls = ctx.options.controls;\n const controlGroup = document.createElement('div');\n controlGroup.className = `${Constants.classes.CONTROL_GROUP} ${Constants.classes.CONTROL_BASE}`;\n\n if (!controls) return controlGroup;\n\n if (controls[Constants.types.LINE]) {\n buttonElements[Constants.types.LINE] = createControlButton(Constants.types.LINE, {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_LINE,\n title: `LineString tool ${ctx.options.keybindings ? '(l)' : ''}`,\n onActivate: () => ctx.events.changeMode(Constants.modes.DRAW_LINE_STRING),\n onDeactivate: () => ctx.events.trash()\n });\n }\n\n if (controls[Constants.types.POLYGON]) {\n buttonElements[Constants.types.POLYGON] = createControlButton(Constants.types.POLYGON, {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_POLYGON,\n title: `Polygon tool ${ctx.options.keybindings ? '(p)' : ''}`,\n onActivate: () => ctx.events.changeMode(Constants.modes.DRAW_POLYGON),\n onDeactivate: () => ctx.events.trash()\n });\n }\n\n if (controls[Constants.types.POINT]) {\n buttonElements[Constants.types.POINT] = createControlButton(Constants.types.POINT, {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_POINT,\n title: `Marker tool ${ctx.options.keybindings ? '(m)' : ''}`,\n onActivate: () => ctx.events.changeMode(Constants.modes.DRAW_POINT),\n onDeactivate: () => ctx.events.trash()\n });\n }\n\n if (controls.trash) {\n buttonElements.trash = createControlButton('trash', {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_TRASH,\n title: 'Delete',\n onActivate: () => {\n ctx.events.trash();\n }\n });\n }\n\n if (controls.combine_features) {\n buttonElements.combine_features = createControlButton('combineFeatures', {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_COMBINE_FEATURES,\n title: 'Combine',\n onActivate: () => {\n ctx.events.combineFeatures();\n }\n });\n }\n\n if (controls.uncombine_features) {\n buttonElements.uncombine_features = createControlButton('uncombineFeatures', {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_UNCOMBINE_FEATURES,\n title: 'Uncombine',\n onActivate: () => {\n ctx.events.uncombineFeatures();\n }\n });\n }\n\n return controlGroup;\n }\n\n function removeButtons() {\n Object.keys(buttonElements).forEach((buttonId) => {\n const button = buttonElements[buttonId];\n if (button.parentNode) {\n button.parentNode.removeChild(button);\n }\n delete buttonElements[buttonId];\n });\n }\n\n return {\n setActiveButton,\n queueMapClasses,\n updateMapClasses,\n clearMapClasses,\n addButtons,\n removeButtons\n };\n}\n","import events from './events';\nimport Store from './store';\nimport ui from './ui';\nimport * as Constants from './constants';\nimport xtend from 'xtend';\n\nexport default function(ctx) {\n\n let controlContainer = null;\n let mapLoadedInterval = null;\n\n const setup = {\n onRemove() {\n // Stop connect attempt in the event that control is removed before map is loaded\n ctx.map.off('load', setup.connect);\n clearInterval(mapLoadedInterval);\n\n setup.removeLayers();\n ctx.store.restoreMapConfig();\n ctx.ui.removeButtons();\n ctx.events.removeEventListeners();\n ctx.ui.clearMapClasses();\n ctx.map = null;\n ctx.container = null;\n ctx.store = null;\n\n if (controlContainer && controlContainer.parentNode) controlContainer.parentNode.removeChild(controlContainer);\n controlContainer = null;\n\n return this;\n },\n connect() {\n ctx.map.off('load', setup.connect);\n clearInterval(mapLoadedInterval);\n setup.addLayers();\n ctx.store.storeMapConfig();\n ctx.events.addEventListeners();\n },\n onAdd(map) {\n if (process.env.NODE_ENV !== 'test') {\n // Monkey patch to resolve breaking change to `fire` introduced by\n // mapbox-gl-js. See mapbox/mapbox-gl-draw/issues/766.\n const _fire = map.fire;\n map.fire = function(type, event) {\n // eslint-disable-next-line\n let args = arguments;\n\n if (_fire.length === 1 && arguments.length !== 1) {\n args = [xtend({}, { type }, event)];\n }\n\n return _fire.apply(map, args);\n };\n }\n\n ctx.map = map;\n ctx.events = events(ctx);\n ctx.ui = ui(ctx);\n ctx.container = map.getContainer();\n ctx.store = new Store(ctx);\n\n\n controlContainer = ctx.ui.addButtons();\n\n if (ctx.options.boxSelect) {\n map.boxZoom.disable();\n // Need to toggle dragPan on and off or else first\n // dragPan disable attempt in simple_select doesn't work\n map.dragPan.disable();\n map.dragPan.enable();\n }\n\n if (map.loaded()) {\n setup.connect();\n } else {\n map.on('load', setup.connect);\n mapLoadedInterval = setInterval(() => { if (map.loaded()) setup.connect(); }, 16);\n }\n\n ctx.events.start();\n return controlContainer;\n },\n addLayers() {\n // drawn features style\n ctx.map.addSource(Constants.sources.COLD, {\n data: {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: []\n },\n type: 'geojson'\n });\n\n // hot features style\n ctx.map.addSource(Constants.sources.HOT, {\n data: {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: []\n },\n type: 'geojson'\n });\n\n ctx.options.styles.forEach((style) => {\n ctx.map.addLayer(style);\n });\n\n ctx.store.setDirty(true);\n ctx.store.render();\n },\n // Check for layers and sources before attempting to remove\n // If user adds draw control and removes it before the map is loaded, layers and sources will be missing\n removeLayers() {\n ctx.options.styles.forEach((style) => {\n if (ctx.map.getLayer(style.id)) {\n ctx.map.removeLayer(style.id);\n }\n });\n\n if (ctx.map.getSource(Constants.sources.COLD)) {\n ctx.map.removeSource(Constants.sources.COLD);\n }\n\n if (ctx.map.getSource(Constants.sources.HOT)) {\n ctx.map.removeSource(Constants.sources.HOT);\n }\n }\n };\n\n ctx.setup = setup;\n\n return setup;\n}\n","import setupModeHandler from './lib/mode_handler';\nimport getFeaturesAndSetCursor from './lib/get_features_and_set_cursor';\nimport featuresAt from './lib/features_at';\nimport isClick from './lib/is_click';\nimport isTap from './lib/is_tap';\nimport * as Constants from './constants';\nimport objectToMode from './modes/object_to_mode';\n\nexport default function(ctx) {\n\n const modes = Object.keys(ctx.options.modes).reduce((m, k) => {\n m[k] = objectToMode(ctx.options.modes[k]);\n return m;\n }, {});\n\n let mouseDownInfo = {};\n let touchStartInfo = {};\n const events = {};\n let currentModeName = null;\n let currentMode = null;\n\n events.drag = function(event, isDrag) {\n if (isDrag({\n point: event.point,\n time: new Date().getTime()\n })) {\n ctx.ui.queueMapClasses({ mouse: Constants.cursors.DRAG });\n currentMode.drag(event);\n } else {\n event.originalEvent.stopPropagation();\n }\n };\n\n events.mousedrag = function(event) {\n events.drag(event, endInfo => !isClick(mouseDownInfo, endInfo));\n };\n\n events.touchdrag = function(event) {\n events.drag(event, endInfo => !isTap(touchStartInfo, endInfo));\n };\n\n events.mousemove = function(event) {\n const button = event.originalEvent.buttons !== undefined ? event.originalEvent.buttons : event.originalEvent.which;\n if (button === 1) {\n return events.mousedrag(event);\n }\n const target = getFeaturesAndSetCursor(event, ctx);\n event.featureTarget = target;\n currentMode.mousemove(event);\n };\n\n events.mousedown = function(event) {\n mouseDownInfo = {\n time: new Date().getTime(),\n point: event.point\n };\n const target = getFeaturesAndSetCursor(event, ctx);\n event.featureTarget = target;\n currentMode.mousedown(event);\n };\n\n events.mouseup = function(event) {\n const target = getFeaturesAndSetCursor(event, ctx);\n event.featureTarget = target;\n\n if (isClick(mouseDownInfo, {\n point: event.point,\n time: new Date().getTime()\n })) {\n currentMode.click(event);\n } else {\n currentMode.mouseup(event);\n }\n };\n\n events.mouseout = function(event) {\n currentMode.mouseout(event);\n };\n\n events.touchstart = function(event) {\n // Prevent emulated mouse events because we will fully handle the touch here.\n // This does not stop the touch events from propogating to mapbox though.\n event.originalEvent.preventDefault();\n if (!ctx.options.touchEnabled) {\n return;\n }\n\n touchStartInfo = {\n time: new Date().getTime(),\n point: event.point\n };\n const target = featuresAt.touch(event, null, ctx)[0];\n event.featureTarget = target;\n currentMode.touchstart(event);\n };\n\n events.touchmove = function(event) {\n event.originalEvent.preventDefault();\n if (!ctx.options.touchEnabled) {\n return;\n }\n\n currentMode.touchmove(event);\n return events.touchdrag(event);\n };\n\n events.touchend = function(event) {\n event.originalEvent.preventDefault();\n if (!ctx.options.touchEnabled) {\n return;\n }\n\n const target = featuresAt.touch(event, null, ctx)[0];\n event.featureTarget = target;\n if (isTap(touchStartInfo, {\n time: new Date().getTime(),\n point: event.point\n })) {\n currentMode.tap(event);\n } else {\n currentMode.touchend(event);\n }\n };\n\n // 8 - Backspace\n // 46 - Delete\n const isKeyModeValid = code => !(code === 8 || code === 46 || (code >= 48 && code <= 57));\n\n events.keydown = function(event) {\n if ((event.srcElement || event.target).classList[0] !== 'mapboxgl-canvas') return; // we only handle events on the map\n\n if ((event.keyCode === 8 || event.keyCode === 46) && ctx.options.controls.trash) {\n event.preventDefault();\n currentMode.trash();\n } else if (isKeyModeValid(event.keyCode)) {\n currentMode.keydown(event);\n } else if (event.keyCode === 49 && ctx.options.controls.point) {\n changeMode(Constants.modes.DRAW_POINT);\n } else if (event.keyCode === 50 && ctx.options.controls.line_string) {\n changeMode(Constants.modes.DRAW_LINE_STRING);\n } else if (event.keyCode === 51 && ctx.options.controls.polygon) {\n changeMode(Constants.modes.DRAW_POLYGON);\n }\n };\n\n events.keyup = function(event) {\n if (isKeyModeValid(event.keyCode)) {\n currentMode.keyup(event);\n }\n };\n\n events.zoomend = function() {\n ctx.store.changeZoom();\n };\n\n events.data = function(event) {\n if (event.dataType === 'style') {\n const { setup, map, options, store } = ctx;\n const hasLayers = options.styles.some(style => map.getLayer(style.id));\n if (!hasLayers) {\n setup.addLayers();\n store.setDirty();\n store.render();\n }\n }\n };\n\n function changeMode(modename, nextModeOptions, eventOptions = {}) {\n currentMode.stop();\n\n const modebuilder = modes[modename];\n if (modebuilder === undefined) {\n throw new Error(`${modename} is not valid`);\n }\n currentModeName = modename;\n const mode = modebuilder(ctx, nextModeOptions);\n currentMode = setupModeHandler(mode, ctx);\n\n if (!eventOptions.silent) {\n ctx.map.fire(Constants.events.MODE_CHANGE, { mode: modename});\n }\n\n ctx.store.setDirty();\n ctx.store.render();\n }\n\n const actionState = {\n trash: false,\n combineFeatures: false,\n uncombineFeatures: false\n };\n\n function actionable(actions) {\n let changed = false;\n Object.keys(actions).forEach((action) => {\n if (actionState[action] === undefined) throw new Error('Invalid action type');\n if (actionState[action] !== actions[action]) changed = true;\n actionState[action] = actions[action];\n });\n if (changed) ctx.map.fire(Constants.events.ACTIONABLE, { actions: actionState });\n }\n\n const api = {\n start() {\n currentModeName = ctx.options.defaultMode;\n currentMode = setupModeHandler(modes[currentModeName](ctx), ctx);\n },\n changeMode,\n actionable,\n currentModeName() {\n return currentModeName;\n },\n currentModeRender(geojson, push) {\n return currentMode.render(geojson, push);\n },\n fire(name, event) {\n if (events[name]) {\n events[name](event);\n }\n },\n addEventListeners() {\n ctx.map.on('mousemove', events.mousemove);\n ctx.map.on('mousedown', events.mousedown);\n ctx.map.on('mouseup', events.mouseup);\n ctx.map.on('data', events.data);\n\n ctx.map.on('touchmove', events.touchmove);\n ctx.map.on('touchstart', events.touchstart);\n ctx.map.on('touchend', events.touchend);\n\n ctx.container.addEventListener('mouseout', events.mouseout);\n\n if (ctx.options.keybindings) {\n ctx.container.addEventListener('keydown', events.keydown);\n ctx.container.addEventListener('keyup', events.keyup);\n }\n },\n removeEventListeners() {\n ctx.map.off('mousemove', events.mousemove);\n ctx.map.off('mousedown', events.mousedown);\n ctx.map.off('mouseup', events.mouseup);\n ctx.map.off('data', events.data);\n\n ctx.map.off('touchmove', events.touchmove);\n ctx.map.off('touchstart', events.touchstart);\n ctx.map.off('touchend', events.touchend);\n\n ctx.container.removeEventListener('mouseout', events.mouseout);\n\n if (ctx.options.keybindings) {\n ctx.container.removeEventListener('keydown', events.keydown);\n ctx.container.removeEventListener('keyup', events.keyup);\n }\n },\n trash(options) {\n currentMode.trash(options);\n },\n combineFeatures() {\n currentMode.combineFeatures();\n },\n uncombineFeatures() {\n currentMode.uncombineFeatures();\n },\n getMode() {\n return currentModeName;\n }\n };\n\n return api;\n}\n","export default [\n {\n 'id': 'gl-draw-polygon-fill-inactive',\n 'type': 'fill',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Polygon'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'fill-color': '#3bb2d0',\n 'fill-outline-color': '#3bb2d0',\n 'fill-opacity': 0.1\n }\n },\n {\n 'id': 'gl-draw-polygon-fill-active',\n 'type': 'fill',\n 'filter': ['all', ['==', 'active', 'true'], ['==', '$type', 'Polygon']],\n 'paint': {\n 'fill-color': '#fbb03b',\n 'fill-outline-color': '#fbb03b',\n 'fill-opacity': 0.1\n }\n },\n {\n 'id': 'gl-draw-polygon-midpoint',\n 'type': 'circle',\n 'filter': ['all',\n ['==', '$type', 'Point'],\n ['==', 'meta', 'midpoint']],\n 'paint': {\n 'circle-radius': 3,\n 'circle-color': '#fbb03b'\n }\n },\n {\n 'id': 'gl-draw-polygon-stroke-inactive',\n 'type': 'line',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Polygon'],\n ['!=', 'mode', 'static']\n ],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#3bb2d0',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-polygon-stroke-active',\n 'type': 'line',\n 'filter': ['all', ['==', 'active', 'true'], ['==', '$type', 'Polygon']],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#fbb03b',\n 'line-dasharray': [0.2, 2],\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-line-inactive',\n 'type': 'line',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'LineString'],\n ['!=', 'mode', 'static']\n ],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#3bb2d0',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-line-active',\n 'type': 'line',\n 'filter': ['all',\n ['==', '$type', 'LineString'],\n ['==', 'active', 'true']\n ],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#fbb03b',\n 'line-dasharray': [0.2, 2],\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-polygon-and-line-vertex-stroke-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'meta', 'vertex'],\n ['==', '$type', 'Point'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 5,\n 'circle-color': '#fff'\n }\n },\n {\n 'id': 'gl-draw-polygon-and-line-vertex-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'meta', 'vertex'],\n ['==', '$type', 'Point'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 3,\n 'circle-color': '#fbb03b'\n }\n },\n {\n 'id': 'gl-draw-point-point-stroke-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Point'],\n ['==', 'meta', 'feature'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 5,\n 'circle-opacity': 1,\n 'circle-color': '#fff'\n }\n },\n {\n 'id': 'gl-draw-point-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Point'],\n ['==', 'meta', 'feature'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 3,\n 'circle-color': '#3bb2d0'\n }\n },\n {\n 'id': 'gl-draw-point-stroke-active',\n 'type': 'circle',\n 'filter': ['all',\n ['==', '$type', 'Point'],\n ['==', 'active', 'true'],\n ['!=', 'meta', 'midpoint']\n ],\n 'paint': {\n 'circle-radius': 7,\n 'circle-color': '#fff'\n }\n },\n {\n 'id': 'gl-draw-point-active',\n 'type': 'circle',\n 'filter': ['all',\n ['==', '$type', 'Point'],\n ['!=', 'meta', 'midpoint'],\n ['==', 'active', 'true']],\n 'paint': {\n 'circle-radius': 5,\n 'circle-color': '#fbb03b'\n }\n },\n {\n 'id': 'gl-draw-polygon-fill-static',\n 'type': 'fill',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'Polygon']],\n 'paint': {\n 'fill-color': '#404040',\n 'fill-outline-color': '#404040',\n 'fill-opacity': 0.1\n }\n },\n {\n 'id': 'gl-draw-polygon-stroke-static',\n 'type': 'line',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'Polygon']],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#404040',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-line-static',\n 'type': 'line',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'LineString']],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#404040',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-point-static',\n 'type': 'circle',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'Point']],\n 'paint': {\n 'circle-radius': 5,\n 'circle-color': '#404040'\n }\n }\n];\n","import * as Constants from '../constants';\n\nexport function isOfMetaType(type) {\n return function(e) {\n const featureTarget = e.featureTarget;\n if (!featureTarget) return false;\n if (!featureTarget.properties) return false;\n return featureTarget.properties.meta === type;\n };\n}\n\nexport function isShiftMousedown(e) {\n if (!e.originalEvent) return false;\n if (!e.originalEvent.shiftKey) return false;\n return e.originalEvent.button === 0;\n}\n\nexport function isActiveFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return e.featureTarget.properties.active === Constants.activeStates.ACTIVE &&\n e.featureTarget.properties.meta === Constants.meta.FEATURE;\n}\n\nexport function isInactiveFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return e.featureTarget.properties.active === Constants.activeStates.INACTIVE &&\n e.featureTarget.properties.meta === Constants.meta.FEATURE;\n}\n\nexport function noTarget(e) {\n return e.featureTarget === undefined;\n}\n\nexport function isFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return e.featureTarget.properties.meta === Constants.meta.FEATURE;\n}\n\nexport function isVertex(e) {\n const featureTarget = e.featureTarget;\n if (!featureTarget) return false;\n if (!featureTarget.properties) return false;\n return featureTarget.properties.meta === Constants.meta.VERTEX;\n}\n\nexport function isShiftDown(e) {\n if (!e.originalEvent) return false;\n return e.originalEvent.shiftKey === true;\n}\n\nexport function isEscapeKey(e) {\n return e.keyCode === 27;\n}\n\nexport function isEnterKey(e) {\n return e.keyCode === 13;\n}\n\nexport function isTrue() {\n return true;\n}\n","'use strict';\n\nmodule.exports = Point;\n\n/**\n * A standalone point geometry with useful accessor, comparison, and\n * modification methods.\n *\n * @class Point\n * @param {Number} x the x-coordinate. this could be longitude or screen\n * pixels, or any other sort of unit.\n * @param {Number} y the y-coordinate. this could be latitude or screen\n * pixels, or any other sort of unit.\n * @example\n * var point = new Point(-77, 38);\n */\nfunction Point(x, y) {\n this.x = x;\n this.y = y;\n}\n\nPoint.prototype = {\n\n /**\n * Clone this point, returning a new point that can be modified\n * without affecting the old one.\n * @return {Point} the clone\n */\n clone: function() { return new Point(this.x, this.y); },\n\n /**\n * Add this point's x & y coordinates to another point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n add: function(p) { return this.clone()._add(p); },\n\n /**\n * Subtract this point's x & y coordinates to from point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n sub: function(p) { return this.clone()._sub(p); },\n\n /**\n * Multiply this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n multByPoint: function(p) { return this.clone()._multByPoint(p); },\n\n /**\n * Divide this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n divByPoint: function(p) { return this.clone()._divByPoint(p); },\n\n /**\n * Multiply this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n mult: function(k) { return this.clone()._mult(k); },\n\n /**\n * Divide this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n div: function(k) { return this.clone()._div(k); },\n\n /**\n * Rotate this point around the 0, 0 origin by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @return {Point} output point\n */\n rotate: function(a) { return this.clone()._rotate(a); },\n\n /**\n * Rotate this point around p point by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @param {Point} p Point to rotate around\n * @return {Point} output point\n */\n rotateAround: function(a,p) { return this.clone()._rotateAround(a,p); },\n\n /**\n * Multiply this point by a 4x1 transformation matrix\n * @param {Array<Number>} m transformation matrix\n * @return {Point} output point\n */\n matMult: function(m) { return this.clone()._matMult(m); },\n\n /**\n * Calculate this point but as a unit vector from 0, 0, meaning\n * that the distance from the resulting point to the 0, 0\n * coordinate will be equal to 1 and the angle from the resulting\n * point to the 0, 0 coordinate will be the same as before.\n * @return {Point} unit vector point\n */\n unit: function() { return this.clone()._unit(); },\n\n /**\n * Compute a perpendicular point, where the new y coordinate\n * is the old x coordinate and the new x coordinate is the old y\n * coordinate multiplied by -1\n * @return {Point} perpendicular point\n */\n perp: function() { return this.clone()._perp(); },\n\n /**\n * Return a version of this point with the x & y coordinates\n * rounded to integers.\n * @return {Point} rounded point\n */\n round: function() { return this.clone()._round(); },\n\n /**\n * Return the magitude of this point: this is the Euclidean\n * distance from the 0, 0 coordinate to this point's x and y\n * coordinates.\n * @return {Number} magnitude\n */\n mag: function() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n },\n\n /**\n * Judge whether this point is equal to another point, returning\n * true or false.\n * @param {Point} other the other point\n * @return {boolean} whether the points are equal\n */\n equals: function(other) {\n return this.x === other.x &&\n this.y === other.y;\n },\n\n /**\n * Calculate the distance from this point to another point\n * @param {Point} p the other point\n * @return {Number} distance\n */\n dist: function(p) {\n return Math.sqrt(this.distSqr(p));\n },\n\n /**\n * Calculate the distance from this point to another point,\n * without the square root step. Useful if you're comparing\n * relative distances.\n * @param {Point} p the other point\n * @return {Number} distance\n */\n distSqr: function(p) {\n var dx = p.x - this.x,\n dy = p.y - this.y;\n return dx * dx + dy * dy;\n },\n\n /**\n * Get the angle from the 0, 0 coordinate to this point, in radians\n * coordinates.\n * @return {Number} angle\n */\n angle: function() {\n return Math.atan2(this.y, this.x);\n },\n\n /**\n * Get the angle from this point to another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleTo: function(b) {\n return Math.atan2(this.y - b.y, this.x - b.x);\n },\n\n /**\n * Get the angle between this point and another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleWith: function(b) {\n return this.angleWithSep(b.x, b.y);\n },\n\n /*\n * Find the angle of the two vectors, solving the formula for\n * the cross product a x b = |a||b|sin(θ) for θ.\n * @param {Number} x the x-coordinate\n * @param {Number} y the y-coordinate\n * @return {Number} the angle in radians\n */\n angleWithSep: function(x, y) {\n return Math.atan2(\n this.x * y - this.y * x,\n this.x * x + this.y * y);\n },\n\n _matMult: function(m) {\n var x = m[0] * this.x + m[1] * this.y,\n y = m[2] * this.x + m[3] * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _add: function(p) {\n this.x += p.x;\n this.y += p.y;\n return this;\n },\n\n _sub: function(p) {\n this.x -= p.x;\n this.y -= p.y;\n return this;\n },\n\n _mult: function(k) {\n this.x *= k;\n this.y *= k;\n return this;\n },\n\n _div: function(k) {\n this.x /= k;\n this.y /= k;\n return this;\n },\n\n _multByPoint: function(p) {\n this.x *= p.x;\n this.y *= p.y;\n return this;\n },\n\n _divByPoint: function(p) {\n this.x /= p.x;\n this.y /= p.y;\n return this;\n },\n\n _unit: function() {\n this._div(this.mag());\n return this;\n },\n\n _perp: function() {\n var y = this.y;\n this.y = this.x;\n this.x = -y;\n return this;\n },\n\n _rotate: function(angle) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = cos * this.x - sin * this.y,\n y = sin * this.x + cos * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _rotateAround: function(angle, p) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y),\n y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);\n this.x = x;\n this.y = y;\n return this;\n },\n\n _round: function() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n }\n};\n\n/**\n * Construct a point from an array if necessary, otherwise if the input\n * is already a Point, or an unknown type, return it unchanged\n * @param {Array<Number>|Point|*} a any kind of input value\n * @return {Point} constructed point, or passed-through value.\n * @example\n * // this\n * var point = Point.convert([0, 1]);\n * // is equivalent to\n * var point = new Point(0, 1);\n */\nPoint.convert = function (a) {\n if (a instanceof Point) {\n return a;\n }\n if (Array.isArray(a)) {\n return new Point(a[0], a[1]);\n }\n return a;\n};\n","import Point from '@mapbox/point-geometry';\n\n/**\n * Returns a Point representing a mouse event's position\n * relative to a containing element.\n *\n * @param {MouseEvent} mouseEvent\n * @param {Node} container\n * @returns {Point}\n */\nfunction mouseEventPoint(mouseEvent, container) {\n const rect = container.getBoundingClientRect();\n return new Point(\n mouseEvent.clientX - rect.left - (container.clientLeft || 0),\n mouseEvent.clientY - rect.top - (container.clientTop || 0)\n );\n}\n\nexport default mouseEventPoint;\n","import * as Constants from '../constants';\n\n/**\n * Returns GeoJSON for a Point representing the\n * vertex of another feature.\n *\n * @param {string} parentId\n * @param {Array<number>} coordinates\n * @param {string} path - Dot-separated numbers indicating exactly\n * where the point exists within its parent feature's coordinates.\n * @param {boolean} selected\n * @return {GeoJSON} Point\n */\nexport default function(parentId, coordinates, path, selected) {\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties: {\n meta: Constants.meta.VERTEX,\n parent: parentId,\n coord_path: path,\n active: (selected) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE\n },\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates\n }\n };\n}\n","import * as Constants from '../constants';\n\nexport default function(parent, startVertex, endVertex) {\n const startCoord = startVertex.geometry.coordinates;\n const endCoord = endVertex.geometry.coordinates;\n\n // If a coordinate exceeds the projection, we can't calculate a midpoint,\n // so run away\n if (startCoord[1] > Constants.LAT_RENDERED_MAX ||\n startCoord[1] < Constants.LAT_RENDERED_MIN ||\n endCoord[1] > Constants.LAT_RENDERED_MAX ||\n endCoord[1] < Constants.LAT_RENDERED_MIN) {\n return null;\n }\n\n const mid = {\n lng: (startCoord[0] + endCoord[0]) / 2,\n lat: (startCoord[1] + endCoord[1]) / 2\n };\n\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties: {\n meta: Constants.meta.MIDPOINT,\n parent,\n lng: mid.lng,\n lat: mid.lat,\n coord_path: endVertex.properties.coord_path\n },\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: [mid.lng, mid.lat]\n }\n };\n}\n","import createVertex from './create_vertex';\nimport createMidpoint from './create_midpoint';\nimport * as Constants from '../constants';\n\nfunction createSupplementaryPoints(geojson, options = {}, basePath = null) {\n const { type, coordinates } = geojson.geometry;\n const featureId = geojson.properties && geojson.properties.id;\n\n let supplementaryPoints = [];\n\n if (type === Constants.geojsonTypes.POINT) {\n // For points, just create a vertex\n supplementaryPoints.push(createVertex(featureId, coordinates, basePath, isSelectedPath(basePath)));\n } else if (type === Constants.geojsonTypes.POLYGON) {\n // Cycle through a Polygon's rings and\n // process each line\n coordinates.forEach((line, lineIndex) => {\n processLine(line, (basePath !== null) ? `${basePath}.${lineIndex}` : String(lineIndex));\n });\n } else if (type === Constants.geojsonTypes.LINE_STRING) {\n processLine(coordinates, basePath);\n } else if (type.indexOf(Constants.geojsonTypes.MULTI_PREFIX) === 0) {\n processMultiGeometry();\n }\n\n function processLine(line, lineBasePath) {\n let firstPointString = '';\n let lastVertex = null;\n line.forEach((point, pointIndex) => {\n const pointPath = (lineBasePath !== undefined && lineBasePath !== null) ? `${lineBasePath}.${pointIndex}` : String(pointIndex);\n const vertex = createVertex(featureId, point, pointPath, isSelectedPath(pointPath));\n\n // If we're creating midpoints, check if there was a\n // vertex before this one. If so, add a midpoint\n // between that vertex and this one.\n if (options.midpoints && lastVertex) {\n const midpoint = createMidpoint(featureId, lastVertex, vertex);\n if (midpoint) {\n supplementaryPoints.push(midpoint);\n }\n }\n lastVertex = vertex;\n\n // A Polygon line's last point is the same as the first point. If we're on the last\n // point, we want to draw a midpoint before it but not another vertex on it\n // (since we already a vertex there, from the first point).\n const stringifiedPoint = JSON.stringify(point);\n if (firstPointString !== stringifiedPoint) {\n supplementaryPoints.push(vertex);\n }\n if (pointIndex === 0) {\n firstPointString = stringifiedPoint;\n }\n });\n }\n\n function isSelectedPath(path) {\n if (!options.selectedPaths) return false;\n return options.selectedPaths.indexOf(path) !== -1;\n }\n\n // Split a multi-geometry into constituent\n // geometries, and accumulate the supplementary points\n // for each of those constituents\n function processMultiGeometry() {\n const subType = type.replace(Constants.geojsonTypes.MULTI_PREFIX, '');\n coordinates.forEach((subCoordinates, index) => {\n const subFeature = {\n type: Constants.geojsonTypes.FEATURE,\n properties: geojson.properties,\n geometry: {\n type: subType,\n coordinates: subCoordinates\n }\n };\n supplementaryPoints = supplementaryPoints.concat(createSupplementaryPoints(subFeature, options, index));\n });\n }\n\n return supplementaryPoints;\n}\n\nexport default createSupplementaryPoints;\n","export default {\n enable(ctx) {\n setTimeout(() => {\n // First check we've got a map and some context.\n if (!ctx.map || !ctx.map.doubleClickZoom || !ctx._ctx || !ctx._ctx.store || !ctx._ctx.store.getInitialConfigValue) return;\n // Now check initial state wasn't false (we leave it disabled if so)\n if (!ctx._ctx.store.getInitialConfigValue('doubleClickZoom')) return;\n ctx.map.doubleClickZoom.enable();\n }, 0);\n },\n disable(ctx) {\n setTimeout(() => {\n if (!ctx.map || !ctx.map.doubleClickZoom) return;\n // Always disable here, as it's necessary in some cases.\n ctx.map.doubleClickZoom.disable();\n }, 0);\n }\n};\n","module.exports = normalize;\n\nvar types = {\n Point: 'geometry',\n MultiPoint: 'geometry',\n LineString: 'geometry',\n MultiLineString: 'geometry',\n Polygon: 'geometry',\n MultiPolygon: 'geometry',\n GeometryCollection: 'geometry',\n Feature: 'feature',\n FeatureCollection: 'featurecollection'\n};\n\n/**\n * Normalize a GeoJSON feature into a FeatureCollection.\n *\n * @param {object} gj geojson data\n * @returns {object} normalized geojson data\n */\nfunction normalize(gj) {\n if (!gj || !gj.type) return null;\n var type = types[gj.type];\n if (!type) return null;\n\n if (type === 'geometry') {\n return {\n type: 'FeatureCollection',\n features: [{\n type: 'Feature',\n properties: {},\n geometry: gj\n }]\n };\n } else if (type === 'feature') {\n return {\n type: 'FeatureCollection',\n features: [gj]\n };\n } else if (type === 'featurecollection') {\n return gj;\n }\n}\n","export default function e(t){switch(t&&t.type||null){case\"FeatureCollection\":return t.features=t.features.reduce(function(t,r){return t.concat(e(r))},[]),t;case\"Feature\":return t.geometry?e(t.geometry).map(function(e){var r={type:\"Feature\",properties:JSON.parse(JSON.stringify(t.properties)),geometry:e};return void 0!==t.id&&(r.id=t.id),r}):[t];case\"MultiPoint\":return t.coordinates.map(function(e){return{type:\"Point\",coordinates:e}});case\"MultiPolygon\":return t.coordinates.map(function(e){return{type:\"Polygon\",coordinates:e}});case\"MultiLineString\":return t.coordinates.map(function(e){return{type:\"LineString\",coordinates:e}});case\"GeometryCollection\":return t.geometries.map(e).reduce(function(e,t){return e.concat(t)},[]);case\"Point\":case\"Polygon\":case\"LineString\":return[t]}}\n//# sourceMappingURL=index.es.js.map\n","var geojsonNormalize = require('@mapbox/geojson-normalize'),\n geojsonFlatten = require('geojson-flatten'),\n flatten = require('./flatten');\n\nif (!(geojsonFlatten instanceof Function)) geojsonFlatten = geojsonFlatten.default;\n\nmodule.exports = function(_) {\n if (!_) return [];\n var normalized = geojsonFlatten(geojsonNormalize(_)),\n coordinates = [];\n normalized.features.forEach(function(feature) {\n if (!feature.geometry) return;\n coordinates = coordinates.concat(flatten(feature.geometry.coordinates));\n });\n return coordinates;\n};\n","module.exports = function flatten(list) {\n return _flatten(list);\n\n function _flatten(list) {\n if (Array.isArray(list) && list.length &&\n typeof list[0] === 'number') {\n return [list];\n }\n return list.reduce(function (acc, item) {\n if (Array.isArray(item) && Array.isArray(item[0])) {\n return acc.concat(_flatten(item));\n } else {\n acc.push(item);\n return acc;\n }\n }, []);\n }\n};\n","var traverse = module.exports = function (obj) {\n return new Traverse(obj);\n};\n\nfunction Traverse (obj) {\n this.value = obj;\n}\n\nTraverse.prototype.get = function (ps) {\n var node = this.value;\n for (var i = 0; i < ps.length; i ++) {\n var key = ps[i];\n if (!node || !hasOwnProperty.call(node, key)) {\n node = undefined;\n break;\n }\n node = node[key];\n }\n return node;\n};\n\nTraverse.prototype.has = function (ps) {\n var node = this.value;\n for (var i = 0; i < ps.length; i ++) {\n var key = ps[i];\n if (!node || !hasOwnProperty.call(node, key)) {\n return false;\n }\n node = node[key];\n }\n return true;\n};\n\nTraverse.prototype.set = function (ps, value) {\n var node = this.value;\n for (var i = 0; i < ps.length - 1; i ++) {\n var key = ps[i];\n if (!hasOwnProperty.call(node, key)) node[key] = {};\n node = node[key];\n }\n node[ps[i]] = value;\n return value;\n};\n\nTraverse.prototype.map = function (cb) {\n return walk(this.value, cb, true);\n};\n\nTraverse.prototype.forEach = function (cb) {\n this.value = walk(this.value, cb, false);\n return this.value;\n};\n\nTraverse.prototype.reduce = function (cb, init) {\n var skip = arguments.length === 1;\n var acc = skip ? this.value : init;\n this.forEach(function (x) {\n if (!this.isRoot || !skip) {\n acc = cb.call(this, acc, x);\n }\n });\n return acc;\n};\n\nTraverse.prototype.paths = function () {\n var acc = [];\n this.forEach(function (x) {\n acc.push(this.path); \n });\n return acc;\n};\n\nTraverse.prototype.nodes = function () {\n var acc = [];\n this.forEach(function (x) {\n acc.push(this.node);\n });\n return acc;\n};\n\nTraverse.prototype.clone = function () {\n var parents = [], nodes = [];\n \n return (function clone (src) {\n for (var i = 0; i < parents.length; i++) {\n if (parents[i] === src) {\n return nodes[i];\n }\n }\n \n if (typeof src === 'object' && src !== null) {\n var dst = copy(src);\n \n parents.push(src);\n nodes.push(dst);\n \n forEach(objectKeys(src), function (key) {\n dst[key] = clone(src[key]);\n });\n \n parents.pop();\n nodes.pop();\n return dst;\n }\n else {\n return src;\n }\n })(this.value);\n};\n\nfunction walk (root, cb, immutable) {\n var path = [];\n var parents = [];\n var alive = true;\n \n return (function walker (node_) {\n var node = immutable ? copy(node_) : node_;\n var modifiers = {};\n \n var keepGoing = true;\n \n var state = {\n node : node,\n node_ : node_,\n path : [].concat(path),\n parent : parents[parents.length - 1],\n parents : parents,\n key : path.slice(-1)[0],\n isRoot : path.length === 0,\n level : path.length,\n circular : null,\n update : function (x, stopHere) {\n if (!state.isRoot) {\n state.parent.node[state.key] = x;\n }\n state.node = x;\n if (stopHere) keepGoing = false;\n },\n 'delete' : function (stopHere) {\n delete state.parent.node[state.key];\n if (stopHere) keepGoing = false;\n },\n remove : function (stopHere) {\n if (isArray(state.parent.node)) {\n state.parent.node.splice(state.key, 1);\n }\n else {\n delete state.parent.node[state.key];\n }\n if (stopHere) keepGoing = false;\n },\n keys : null,\n before : function (f) { modifiers.before = f },\n after : function (f) { modifiers.after = f },\n pre : function (f) { modifiers.pre = f },\n post : function (f) { modifiers.post = f },\n stop : function () { alive = false },\n block : function () { keepGoing = false }\n };\n \n if (!alive) return state;\n \n function updateState() {\n if (typeof state.node === 'object' && state.node !== null) {\n if (!state.keys || state.node_ !== state.node) {\n state.keys = objectKeys(state.node)\n }\n \n state.isLeaf = state.keys.length == 0;\n \n for (var i = 0; i < parents.length; i++) {\n if (parents[i].node_ === node_) {\n state.circular = parents[i];\n break;\n }\n }\n }\n else {\n state.isLeaf = true;\n state.keys = null;\n }\n \n state.notLeaf = !state.isLeaf;\n state.notRoot = !state.isRoot;\n }\n \n updateState();\n \n // use return values to update if defined\n var ret = cb.call(state, state.node);\n if (ret !== undefined && state.update) state.update(ret);\n \n if (modifiers.before) modifiers.before.call(state, state.node);\n \n if (!keepGoing) return state;\n \n if (typeof state.node == 'object'\n && state.node !== null && !state.circular) {\n parents.push(state);\n \n updateState();\n \n forEach(state.keys, function (key, i) {\n path.push(key);\n \n if (modifiers.pre) modifiers.pre.call(state, state.node[key], key);\n \n var child = walker(state.node[key]);\n if (immutable && hasOwnProperty.call(state.node, key)) {\n state.node[key] = child.node;\n }\n \n child.isLast = i == state.keys.length - 1;\n child.isFirst = i == 0;\n \n if (modifiers.post) modifiers.post.call(state, child);\n \n path.pop();\n });\n parents.pop();\n }\n \n if (modifiers.after) modifiers.after.call(state, state.node);\n \n return state;\n })(root).node;\n}\n\nfunction copy (src) {\n if (typeof src === 'object' && src !== null) {\n var dst;\n \n if (isArray(src)) {\n dst = [];\n }\n else if (isDate(src)) {\n dst = new Date(src.getTime ? src.getTime() : src);\n }\n else if (isRegExp(src)) {\n dst = new RegExp(src);\n }\n else if (isError(src)) {\n dst = { message: src.message };\n }\n else if (isBoolean(src)) {\n dst = new Boolean(src);\n }\n else if (isNumber(src)) {\n dst = new Number(src);\n }\n else if (isString(src)) {\n dst = new String(src);\n }\n else if (Object.create && Object.getPrototypeOf) {\n dst = Object.create(Object.getPrototypeOf(src));\n }\n else if (src.constructor === Object) {\n dst = {};\n }\n else {\n var proto =\n (src.constructor && src.constructor.prototype)\n || src.__proto__\n || {}\n ;\n var T = function () {};\n T.prototype = proto;\n dst = new T;\n }\n \n forEach(objectKeys(src), function (key) {\n dst[key] = src[key];\n });\n return dst;\n }\n else return src;\n}\n\nvar objectKeys = Object.keys || function keys (obj) {\n var res = [];\n for (var key in obj) res.push(key)\n return res;\n};\n\nfunction toS (obj) { return Object.prototype.toString.call(obj) }\nfunction isDate (obj) { return toS(obj) === '[object Date]' }\nfunction isRegExp (obj) { return toS(obj) === '[object RegExp]' }\nfunction isError (obj) { return toS(obj) === '[object Error]' }\nfunction isBoolean (obj) { return toS(obj) === '[object Boolean]' }\nfunction isNumber (obj) { return toS(obj) === '[object Number]' }\nfunction isString (obj) { return toS(obj) === '[object String]' }\n\nvar isArray = Array.isArray || function isArray (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nvar forEach = function (xs, fn) {\n if (xs.forEach) return xs.forEach(fn)\n else for (var i = 0; i < xs.length; i++) {\n fn(xs[i], i, xs);\n }\n};\n\nforEach(objectKeys(Traverse.prototype), function (key) {\n traverse[key] = function (obj) {\n var args = [].slice.call(arguments, 1);\n var t = new Traverse(obj);\n return t[key].apply(t, args);\n };\n});\n\nvar hasOwnProperty = Object.hasOwnProperty || function (obj, key) {\n return key in obj;\n};\n","module.exports = Extent;\n\nfunction Extent(bbox) {\n if (!(this instanceof Extent)) {\n return new Extent(bbox);\n }\n this._bbox = bbox || [Infinity, Infinity, -Infinity, -Infinity];\n this._valid = !!bbox;\n}\n\nExtent.prototype.include = function(ll) {\n this._valid = true;\n this._bbox[0] = Math.min(this._bbox[0], ll[0]);\n this._bbox[1] = Math.min(this._bbox[1], ll[1]);\n this._bbox[2] = Math.max(this._bbox[2], ll[0]);\n this._bbox[3] = Math.max(this._bbox[3], ll[1]);\n return this;\n};\n\nExtent.prototype.equals = function(_) {\n var other;\n if (_ instanceof Extent) { other = _.bbox(); } else { other = _; }\n return this._bbox[0] == other[0] &&\n this._bbox[1] == other[1] &&\n this._bbox[2] == other[2] &&\n this._bbox[3] == other[3];\n};\n\nExtent.prototype.center = function(_) {\n if (!this._valid) return null;\n return [\n (this._bbox[0] + this._bbox[2]) / 2,\n (this._bbox[1] + this._bbox[3]) / 2]\n};\n\nExtent.prototype.union = function(_) {\n this._valid = true;\n var other;\n if (_ instanceof Extent) { other = _.bbox(); } else { other = _; }\n this._bbox[0] = Math.min(this._bbox[0], other[0]);\n this._bbox[1] = Math.min(this._bbox[1], other[1]);\n this._bbox[2] = Math.max(this._bbox[2], other[2]);\n this._bbox[3] = Math.max(this._bbox[3], other[3]);\n return this;\n};\n\nExtent.prototype.bbox = function() {\n if (!this._valid) return null;\n return this._bbox;\n};\n\nExtent.prototype.contains = function(ll) {\n if (!ll) return this._fastContains();\n if (!this._valid) return null;\n var lon = ll[0], lat = ll[1];\n return this._bbox[0] <= lon &&\n this._bbox[1] <= lat &&\n this._bbox[2] >= lon &&\n this._bbox[3] >= lat;\n};\n\nExtent.prototype.intersect = function(_) {\n if (!this._valid) return null;\n\n var other;\n if (_ instanceof Extent) { other = _.bbox(); } else { other = _; }\n\n return !(\n this._bbox[0] > other[2] ||\n this._bbox[2] < other[0] ||\n this._bbox[3] < other[1] ||\n this._bbox[1] > other[3]\n );\n};\n\nExtent.prototype._fastContains = function() {\n if (!this._valid) return new Function('return null;');\n var body = 'return ' +\n this._bbox[0] + '<= ll[0] &&' +\n this._bbox[1] + '<= ll[1] &&' +\n this._bbox[2] + '>= ll[0] &&' +\n this._bbox[3] + '>= ll[1]';\n return new Function('ll', body);\n};\n\nExtent.prototype.polygon = function() {\n if (!this._valid) return null;\n return {\n type: 'Polygon',\n coordinates: [\n [\n // W, S\n [this._bbox[0], this._bbox[1]],\n // E, S\n [this._bbox[2], this._bbox[1]],\n // E, N\n [this._bbox[2], this._bbox[3]],\n // W, N\n [this._bbox[0], this._bbox[3]],\n // W, S\n [this._bbox[0], this._bbox[1]]\n ]\n ]\n };\n};\n","var geojsonCoords = require('@mapbox/geojson-coords'),\n traverse = require('traverse'),\n extent = require('@mapbox/extent');\n\nvar geojsonTypesByDataAttributes = {\n features: ['FeatureCollection'],\n coordinates: ['Point', 'MultiPoint', 'LineString', 'MultiLineString', 'Polygon', 'MultiPolygon'],\n geometry: ['Feature'],\n geometries: ['GeometryCollection']\n}\n\nvar dataAttributes = Object.keys(geojsonTypesByDataAttributes);\n\nmodule.exports = function(_) {\n return getExtent(_).bbox();\n};\n\nmodule.exports.polygon = function(_) {\n return getExtent(_).polygon();\n};\n\nmodule.exports.bboxify = function(_) {\n return traverse(_).map(function(value) {\n if (!value) return ;\n\n var isValid = dataAttributes.some(function(attribute){\n if(value[attribute]) {\n return geojsonTypesByDataAttributes[attribute].indexOf(value.type) !== -1;\n }\n return false;\n });\n\n if(isValid){\n value.bbox = getExtent(value).bbox();\n this.update(value);\n }\n\n });\n};\n\nfunction getExtent(_) {\n var ext = extent(),\n coords = geojsonCoords(_);\n for (var i = 0; i < coords.length; i++) ext.include(coords[i]);\n return ext;\n}\n","import extent from '@mapbox/geojson-extent';\nimport * as Constants from '../constants';\n\nconst {\n LAT_MIN,\n LAT_MAX,\n LAT_RENDERED_MIN,\n LAT_RENDERED_MAX,\n LNG_MIN,\n LNG_MAX\n} = Constants;\n\n// Ensure that we do not drag north-south far enough for\n// - any part of any feature to exceed the poles\n// - any feature to be completely lost in the space between the projection's\n// edge and the poles, such that it couldn't be re-selected and moved back\nexport default function(geojsonFeatures, delta) {\n // \"inner edge\" = a feature's latitude closest to the equator\n let northInnerEdge = LAT_MIN;\n let southInnerEdge = LAT_MAX;\n // \"outer edge\" = a feature's latitude furthest from the equator\n let northOuterEdge = LAT_MIN;\n let southOuterEdge = LAT_MAX;\n\n let westEdge = LNG_MAX;\n let eastEdge = LNG_MIN;\n\n geojsonFeatures.forEach((feature) => {\n const bounds = extent(feature);\n const featureSouthEdge = bounds[1];\n const featureNorthEdge = bounds[3];\n const featureWestEdge = bounds[0];\n const featureEastEdge = bounds[2];\n if (featureSouthEdge > northInnerEdge) northInnerEdge = featureSouthEdge;\n if (featureNorthEdge < southInnerEdge) southInnerEdge = featureNorthEdge;\n if (featureNorthEdge > northOuterEdge) northOuterEdge = featureNorthEdge;\n if (featureSouthEdge < southOuterEdge) southOuterEdge = featureSouthEdge;\n if (featureWestEdge < westEdge) westEdge = featureWestEdge;\n if (featureEastEdge > eastEdge) eastEdge = featureEastEdge;\n });\n\n\n // These changes are not mutually exclusive: we might hit the inner\n // edge but also have hit the outer edge and therefore need\n // another readjustment\n const constrainedDelta = delta;\n if (northInnerEdge + constrainedDelta.lat > LAT_RENDERED_MAX) {\n constrainedDelta.lat = LAT_RENDERED_MAX - northInnerEdge;\n }\n if (northOuterEdge + constrainedDelta.lat > LAT_MAX) {\n constrainedDelta.lat = LAT_MAX - northOuterEdge;\n }\n if (southInnerEdge + constrainedDelta.lat < LAT_RENDERED_MIN) {\n constrainedDelta.lat = LAT_RENDERED_MIN - southInnerEdge;\n }\n if (southOuterEdge + constrainedDelta.lat < LAT_MIN) {\n constrainedDelta.lat = LAT_MIN - southOuterEdge;\n }\n if (westEdge + constrainedDelta.lng <= LNG_MIN) {\n constrainedDelta.lng += Math.ceil(Math.abs(constrainedDelta.lng) / 360) * 360;\n }\n if (eastEdge + constrainedDelta.lng >= LNG_MAX) {\n constrainedDelta.lng -= Math.ceil(Math.abs(constrainedDelta.lng) / 360) * 360;\n }\n\n return constrainedDelta;\n}\n","import constrainFeatureMovement from './constrain_feature_movement';\nimport * as Constants from '../constants';\n\nexport default function(features, delta) {\n const constrainedDelta = constrainFeatureMovement(features.map(feature => feature.toGeoJSON()), delta);\n\n features.forEach((feature) => {\n const currentCoordinates = feature.getCoordinates();\n\n const moveCoordinate = (coord) => {\n const point = {\n lng: coord[0] + constrainedDelta.lng,\n lat: coord[1] + constrainedDelta.lat\n };\n return [point.lng, point.lat];\n };\n const moveRing = ring => ring.map(coord => moveCoordinate(coord));\n const moveMultiPolygon = multi => multi.map(ring => moveRing(ring));\n\n let nextCoordinates;\n if (feature.type === Constants.geojsonTypes.POINT) {\n nextCoordinates = moveCoordinate(currentCoordinates);\n } else if (feature.type === Constants.geojsonTypes.LINE_STRING || feature.type === Constants.geojsonTypes.MULTI_POINT) {\n nextCoordinates = currentCoordinates.map(moveCoordinate);\n } else if (feature.type === Constants.geojsonTypes.POLYGON || feature.type === Constants.geojsonTypes.MULTI_LINE_STRING) {\n nextCoordinates = currentCoordinates.map(moveRing);\n } else if (feature.type === Constants.geojsonTypes.MULTI_POLYGON) {\n nextCoordinates = currentCoordinates.map(moveMultiPolygon);\n }\n\n feature.incomingCoords(nextCoordinates);\n });\n}\n","import * as CommonSelectors from '../lib/common_selectors';\nimport mouseEventPoint from '../lib/mouse_event_point';\nimport createSupplementaryPoints from '../lib/create_supplementary_points';\nimport StringSet from '../lib/string_set';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport moveFeatures from '../lib/move_features';\nimport * as Constants from '../constants';\n\nconst SimpleSelect = {};\n\nSimpleSelect.onSetup = function(opts) {\n // turn the opts into state.\n const state = {\n dragMoveLocation: null,\n boxSelectStartLocation: null,\n boxSelectElement: undefined,\n boxSelecting: false,\n canBoxSelect: false,\n dragMoving: false,\n canDragMove: false,\n initiallySelectedFeatureIds: opts.featureIds || []\n };\n\n this.setSelected(state.initiallySelectedFeatureIds.filter(id => this.getFeature(id) !== undefined));\n this.fireActionable();\n\n this.setActionableState({\n combineFeatures: true,\n uncombineFeatures: true,\n trash: true\n });\n\n return state;\n};\n\nSimpleSelect.fireUpdate = function() {\n this.map.fire(Constants.events.UPDATE, {\n action: Constants.updateActions.MOVE,\n features: this.getSelected().map(f => f.toGeoJSON())\n });\n};\n\nSimpleSelect.fireActionable = function() {\n const selectedFeatures = this.getSelected();\n\n const multiFeatures = selectedFeatures.filter(\n feature => this.isInstanceOf('MultiFeature', feature)\n );\n\n let combineFeatures = false;\n\n if (selectedFeatures.length > 1) {\n combineFeatures = true;\n const featureType = selectedFeatures[0].type.replace('Multi', '');\n selectedFeatures.forEach((feature) => {\n if (feature.type.replace('Multi', '') !== featureType) {\n combineFeatures = false;\n }\n });\n }\n\n const uncombineFeatures = multiFeatures.length > 0;\n const trash = selectedFeatures.length > 0;\n\n this.setActionableState({\n combineFeatures, uncombineFeatures, trash\n });\n};\n\nSimpleSelect.getUniqueIds = function(allFeatures) {\n if (!allFeatures.length) return [];\n const ids = allFeatures.map(s => s.properties.id)\n .filter(id => id !== undefined)\n .reduce((memo, id) => {\n memo.add(id);\n return memo;\n }, new StringSet());\n\n return ids.values();\n};\n\nSimpleSelect.stopExtendedInteractions = function(state) {\n if (state.boxSelectElement) {\n if (state.boxSelectElement.parentNode) state.boxSelectElement.parentNode.removeChild(state.boxSelectElement);\n state.boxSelectElement = null;\n }\n\n this.map.dragPan.enable();\n\n state.boxSelecting = false;\n state.canBoxSelect = false;\n state.dragMoving = false;\n state.canDragMove = false;\n};\n\nSimpleSelect.onStop = function() {\n doubleClickZoom.enable(this);\n};\n\nSimpleSelect.onMouseMove = function(state) {\n // On mousemove that is not a drag, stop extended interactions.\n // This is useful if you drag off the canvas, release the button,\n // then move the mouse back over the canvas --- we don't allow the\n // interaction to continue then, but we do let it continue if you held\n // the mouse button that whole time\n this.stopExtendedInteractions(state);\n\n // Skip render\n return true;\n};\n\nSimpleSelect.onMouseOut = function(state) {\n // As soon as you mouse leaves the canvas, update the feature\n if (state.dragMoving) return this.fireUpdate();\n\n // Skip render\n return true;\n};\n\nSimpleSelect.onTap = SimpleSelect.onClick = function(state, e) {\n // Click (with or without shift) on no feature\n if (CommonSelectors.noTarget(e)) return this.clickAnywhere(state, e); // also tap\n if (CommonSelectors.isOfMetaType(Constants.meta.VERTEX)(e)) return this.clickOnVertex(state, e); //tap\n if (CommonSelectors.isFeature(e)) return this.clickOnFeature(state, e);\n};\n\nSimpleSelect.clickAnywhere = function (state) {\n // Clear the re-render selection\n const wasSelected = this.getSelectedIds();\n if (wasSelected.length) {\n this.clearSelectedFeatures();\n wasSelected.forEach(id => this.doRender(id));\n }\n doubleClickZoom.enable(this);\n this.stopExtendedInteractions(state);\n};\n\nSimpleSelect.clickOnVertex = function(state, e) {\n // Enter direct select mode\n this.changeMode(Constants.modes.DIRECT_SELECT, {\n featureId: e.featureTarget.properties.parent,\n coordPath: e.featureTarget.properties.coord_path,\n startPos: e.lngLat\n });\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n};\n\nSimpleSelect.startOnActiveFeature = function(state, e) {\n // Stop any already-underway extended interactions\n this.stopExtendedInteractions(state);\n\n // Disable map.dragPan immediately so it can't start\n this.map.dragPan.disable();\n\n // Re-render it and enable drag move\n this.doRender(e.featureTarget.properties.id);\n\n // Set up the state for drag moving\n state.canDragMove = true;\n state.dragMoveLocation = e.lngLat;\n};\n\nSimpleSelect.clickOnFeature = function(state, e) {\n // Stop everything\n doubleClickZoom.disable(this);\n this.stopExtendedInteractions(state);\n\n const isShiftClick = CommonSelectors.isShiftDown(e);\n const selectedFeatureIds = this.getSelectedIds();\n const featureId = e.featureTarget.properties.id;\n const isFeatureSelected = this.isSelected(featureId);\n\n // Click (without shift) on any selected feature but a point\n if (!isShiftClick && isFeatureSelected && this.getFeature(featureId).type !== Constants.geojsonTypes.POINT) {\n // Enter direct select mode\n return this.changeMode(Constants.modes.DIRECT_SELECT, {\n featureId\n });\n }\n\n // Shift-click on a selected feature\n if (isFeatureSelected && isShiftClick) {\n // Deselect it\n this.deselect(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n if (selectedFeatureIds.length === 1) {\n doubleClickZoom.enable(this);\n }\n // Shift-click on an unselected feature\n } else if (!isFeatureSelected && isShiftClick) {\n // Add it to the selection\n this.select(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n // Click (without shift) on an unselected feature\n } else if (!isFeatureSelected && !isShiftClick) {\n // Make it the only selected feature\n selectedFeatureIds.forEach(id => this.doRender(id));\n this.setSelected(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n }\n\n // No matter what, re-render the clicked feature\n this.doRender(featureId);\n};\n\nSimpleSelect.onMouseDown = function(state, e) {\n if (CommonSelectors.isActiveFeature(e)) return this.startOnActiveFeature(state, e);\n if (this.drawConfig.boxSelect && CommonSelectors.isShiftMousedown(e)) return this.startBoxSelect(state, e);\n};\n\nSimpleSelect.startBoxSelect = function(state, e) {\n this.stopExtendedInteractions(state);\n this.map.dragPan.disable();\n // Enable box select\n state.boxSelectStartLocation = mouseEventPoint(e.originalEvent, this.map.getContainer());\n state.canBoxSelect = true;\n};\n\nSimpleSelect.onTouchStart = function(state, e) {\n if (CommonSelectors.isActiveFeature(e)) return this.startOnActiveFeature(state, e);\n};\n\nSimpleSelect.onDrag = function(state, e) {\n if (state.canDragMove) return this.dragMove(state, e);\n if (this.drawConfig.boxSelect && state.canBoxSelect) return this.whileBoxSelect(state, e);\n};\n\nSimpleSelect.whileBoxSelect = function(state, e) {\n state.boxSelecting = true;\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n\n // Create the box node if it doesn't exist\n if (!state.boxSelectElement) {\n state.boxSelectElement = document.createElement('div');\n state.boxSelectElement.classList.add(Constants.classes.BOX_SELECT);\n this.map.getContainer().appendChild(state.boxSelectElement);\n }\n\n // Adjust the box node's width and xy position\n const current = mouseEventPoint(e.originalEvent, this.map.getContainer());\n const minX = Math.min(state.boxSelectStartLocation.x, current.x);\n const maxX = Math.max(state.boxSelectStartLocation.x, current.x);\n const minY = Math.min(state.boxSelectStartLocation.y, current.y);\n const maxY = Math.max(state.boxSelectStartLocation.y, current.y);\n const translateValue = `translate(${minX}px, ${minY}px)`;\n state.boxSelectElement.style.transform = translateValue;\n state.boxSelectElement.style.WebkitTransform = translateValue;\n state.boxSelectElement.style.width = `${maxX - minX}px`;\n state.boxSelectElement.style.height = `${maxY - minY}px`;\n};\n\nSimpleSelect.dragMove = function(state, e) {\n // Dragging when drag move is enabled\n state.dragMoving = true;\n e.originalEvent.stopPropagation();\n\n const delta = {\n lng: e.lngLat.lng - state.dragMoveLocation.lng,\n lat: e.lngLat.lat - state.dragMoveLocation.lat\n };\n\n moveFeatures(this.getSelected(), delta);\n\n state.dragMoveLocation = e.lngLat;\n};\n\nSimpleSelect.onTouchEnd = SimpleSelect.onMouseUp = function(state, e) {\n // End any extended interactions\n if (state.dragMoving) {\n this.fireUpdate();\n } else if (state.boxSelecting) {\n const bbox = [\n state.boxSelectStartLocation,\n mouseEventPoint(e.originalEvent, this.map.getContainer())\n ];\n const featuresInBox = this.featuresAt(null, bbox, 'click');\n const idsToSelect = this.getUniqueIds(featuresInBox)\n .filter(id => !this.isSelected(id));\n\n if (idsToSelect.length) {\n this.select(idsToSelect);\n idsToSelect.forEach(id => this.doRender(id));\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n }\n }\n this.stopExtendedInteractions(state);\n};\n\nSimpleSelect.toDisplayFeatures = function(state, geojson, display) {\n geojson.properties.active = (this.isSelected(geojson.properties.id)) ?\n Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n display(geojson);\n this.fireActionable();\n if (geojson.properties.active !== Constants.activeStates.ACTIVE ||\n geojson.geometry.type === Constants.geojsonTypes.POINT) return;\n createSupplementaryPoints(geojson).forEach(display);\n};\n\nSimpleSelect.onTrash = function() {\n this.deleteFeature(this.getSelectedIds());\n this.fireActionable();\n};\n\nSimpleSelect.onCombineFeatures = function() {\n const selectedFeatures = this.getSelected();\n\n if (selectedFeatures.length === 0 || selectedFeatures.length < 2) return;\n\n const coordinates = [], featuresCombined = [];\n const featureType = selectedFeatures[0].type.replace('Multi', '');\n\n for (let i = 0; i < selectedFeatures.length; i++) {\n const feature = selectedFeatures[i];\n\n if (feature.type.replace('Multi', '') !== featureType) {\n return;\n }\n if (feature.type.includes('Multi')) {\n feature.getCoordinates().forEach((subcoords) => {\n coordinates.push(subcoords);\n });\n } else {\n coordinates.push(feature.getCoordinates());\n }\n\n featuresCombined.push(feature.toGeoJSON());\n }\n\n if (featuresCombined.length > 1) {\n const multiFeature = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: featuresCombined[0].properties,\n geometry: {\n type: `Multi${featureType}`,\n coordinates\n }\n });\n\n this.addFeature(multiFeature);\n this.deleteFeature(this.getSelectedIds(), { silent: true });\n this.setSelected([multiFeature.id]);\n\n this.map.fire(Constants.events.COMBINE_FEATURES, {\n createdFeatures: [multiFeature.toGeoJSON()],\n deletedFeatures: featuresCombined\n });\n }\n this.fireActionable();\n};\n\nSimpleSelect.onUncombineFeatures = function() {\n const selectedFeatures = this.getSelected();\n if (selectedFeatures.length === 0) return;\n\n const createdFeatures = [];\n const featuresUncombined = [];\n\n for (let i = 0; i < selectedFeatures.length; i++) {\n const feature = selectedFeatures[i];\n\n if (this.isInstanceOf('MultiFeature', feature)) {\n feature.getFeatures().forEach((subFeature) => {\n this.addFeature(subFeature);\n subFeature.properties = feature.properties;\n createdFeatures.push(subFeature.toGeoJSON());\n this.select([subFeature.id]);\n });\n this.deleteFeature(feature.id, { silent: true });\n featuresUncombined.push(feature.toGeoJSON());\n }\n }\n\n if (createdFeatures.length > 1) {\n this.map.fire(Constants.events.UNCOMBINE_FEATURES, {\n createdFeatures,\n deletedFeatures: featuresUncombined\n });\n }\n this.fireActionable();\n};\n\nexport default SimpleSelect;\n","import {noTarget, isOfMetaType, isActiveFeature, isInactiveFeature, isShiftDown} from '../lib/common_selectors';\nimport createSupplementaryPoints from '../lib/create_supplementary_points';\nimport constrainFeatureMovement from '../lib/constrain_feature_movement';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport * as Constants from '../constants';\nimport moveFeatures from '../lib/move_features';\n\nconst isVertex = isOfMetaType(Constants.meta.VERTEX);\nconst isMidpoint = isOfMetaType(Constants.meta.MIDPOINT);\n\nconst DirectSelect = {};\n\n// INTERNAL FUCNTIONS\n\nDirectSelect.fireUpdate = function() {\n this.map.fire(Constants.events.UPDATE, {\n action: Constants.updateActions.CHANGE_COORDINATES,\n features: this.getSelected().map(f => f.toGeoJSON())\n });\n};\n\nDirectSelect.fireActionable = function(state) {\n this.setActionableState({\n combineFeatures: false,\n uncombineFeatures: false,\n trash: state.selectedCoordPaths.length > 0\n });\n};\n\nDirectSelect.startDragging = function(state, e) {\n this.map.dragPan.disable();\n state.canDragMove = true;\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.stopDragging = function(state) {\n this.map.dragPan.enable();\n state.dragMoving = false;\n state.canDragMove = false;\n state.dragMoveLocation = null;\n};\n\nDirectSelect.onVertex = function (state, e) {\n this.startDragging(state, e);\n const about = e.featureTarget.properties;\n const selectedIndex = state.selectedCoordPaths.indexOf(about.coord_path);\n if (!isShiftDown(e) && selectedIndex === -1) {\n state.selectedCoordPaths = [about.coord_path];\n } else if (isShiftDown(e) && selectedIndex === -1) {\n state.selectedCoordPaths.push(about.coord_path);\n }\n\n const selectedCoordinates = this.pathsToCoordinates(state.featureId, state.selectedCoordPaths);\n this.setSelectedCoordinates(selectedCoordinates);\n};\n\nDirectSelect.onMidpoint = function(state, e) {\n this.startDragging(state, e);\n const about = e.featureTarget.properties;\n state.feature.addCoordinate(about.coord_path, about.lng, about.lat);\n this.fireUpdate();\n state.selectedCoordPaths = [about.coord_path];\n};\n\nDirectSelect.pathsToCoordinates = function(featureId, paths) {\n return paths.map(coord_path => ({ feature_id: featureId, coord_path }));\n};\n\nDirectSelect.onFeature = function(state, e) {\n if (state.selectedCoordPaths.length === 0) this.startDragging(state, e);\n else this.stopDragging(state);\n};\n\nDirectSelect.dragFeature = function(state, e, delta) {\n moveFeatures(this.getSelected(), delta);\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.dragVertex = function(state, e, delta) {\n const selectedCoords = state.selectedCoordPaths.map(coord_path => state.feature.getCoordinate(coord_path));\n const selectedCoordPoints = selectedCoords.map(coords => ({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: coords\n }\n }));\n\n const constrainedDelta = constrainFeatureMovement(selectedCoordPoints, delta);\n for (let i = 0; i < selectedCoords.length; i++) {\n const coord = selectedCoords[i];\n state.feature.updateCoordinate(state.selectedCoordPaths[i], coord[0] + constrainedDelta.lng, coord[1] + constrainedDelta.lat);\n }\n};\n\nDirectSelect.clickNoTarget = function () {\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDirectSelect.clickInactive = function () {\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDirectSelect.clickActiveFeature = function (state) {\n state.selectedCoordPaths = [];\n this.clearSelectedCoordinates();\n state.feature.changed();\n};\n\n// EXTERNAL FUNCTIONS\n\nDirectSelect.onSetup = function(opts) {\n const featureId = opts.featureId;\n const feature = this.getFeature(featureId);\n\n if (!feature) {\n throw new Error('You must provide a featureId to enter direct_select mode');\n }\n\n if (feature.type === Constants.geojsonTypes.POINT) {\n throw new TypeError('direct_select mode doesn\\'t handle point features');\n }\n\n const state = {\n featureId,\n feature,\n dragMoveLocation: opts.startPos || null,\n dragMoving: false,\n canDragMove: false,\n selectedCoordPaths: opts.coordPath ? [opts.coordPath] : []\n };\n\n this.setSelectedCoordinates(this.pathsToCoordinates(featureId, state.selectedCoordPaths));\n this.setSelected(featureId);\n doubleClickZoom.disable(this);\n\n this.setActionableState({\n trash: true\n });\n\n return state;\n};\n\nDirectSelect.onStop = function() {\n doubleClickZoom.enable(this);\n this.clearSelectedCoordinates();\n};\n\nDirectSelect.toDisplayFeatures = function(state, geojson, push) {\n if (state.featureId === geojson.properties.id) {\n geojson.properties.active = Constants.activeStates.ACTIVE;\n push(geojson);\n createSupplementaryPoints(geojson, {\n map: this.map,\n midpoints: true,\n selectedPaths: state.selectedCoordPaths\n }).forEach(push);\n } else {\n geojson.properties.active = Constants.activeStates.INACTIVE;\n push(geojson);\n }\n this.fireActionable(state);\n};\n\nDirectSelect.onTrash = function(state) {\n // Uses number-aware sorting to make sure '9' < '10'. Comparison is reversed because we want them\n // in reverse order so that we can remove by index safely.\n state.selectedCoordPaths\n .sort((a, b) => b.localeCompare(a, 'en', { numeric: true }))\n .forEach(id => state.feature.removeCoordinate(id));\n this.fireUpdate();\n state.selectedCoordPaths = [];\n this.clearSelectedCoordinates();\n this.fireActionable(state);\n if (state.feature.isValid() === false) {\n this.deleteFeature([state.featureId]);\n this.changeMode(Constants.modes.SIMPLE_SELECT, {});\n }\n};\n\nDirectSelect.onMouseMove = function(state, e) {\n // On mousemove that is not a drag, stop vertex movement.\n const isFeature = isActiveFeature(e);\n const onVertex = isVertex(e);\n const noCoords = state.selectedCoordPaths.length === 0;\n if (isFeature && noCoords) this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n else if (onVertex && !noCoords) this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n else this.updateUIClasses({ mouse: Constants.cursors.NONE });\n this.stopDragging(state);\n\n // Skip render\n return true;\n};\n\nDirectSelect.onMouseOut = function(state) {\n // As soon as you mouse leaves the canvas, update the feature\n if (state.dragMoving) this.fireUpdate();\n\n // Skip render\n return true;\n};\n\nDirectSelect.onTouchStart = DirectSelect.onMouseDown = function(state, e) {\n if (isVertex(e)) return this.onVertex(state, e);\n if (isActiveFeature(e)) return this.onFeature(state, e);\n if (isMidpoint(e)) return this.onMidpoint(state, e);\n};\n\nDirectSelect.onDrag = function(state, e) {\n if (state.canDragMove !== true) return;\n state.dragMoving = true;\n e.originalEvent.stopPropagation();\n\n const delta = {\n lng: e.lngLat.lng - state.dragMoveLocation.lng,\n lat: e.lngLat.lat - state.dragMoveLocation.lat\n };\n if (state.selectedCoordPaths.length > 0) this.dragVertex(state, e, delta);\n else this.dragFeature(state, e, delta);\n\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.onClick = function(state, e) {\n if (noTarget(e)) return this.clickNoTarget(state, e);\n if (isActiveFeature(e)) return this.clickActiveFeature(state, e);\n if (isInactiveFeature(e)) return this.clickInactive(state, e);\n this.stopDragging(state);\n};\n\nDirectSelect.onTap = function(state, e) {\n if (noTarget(e)) return this.clickNoTarget(state, e);\n if (isActiveFeature(e)) return this.clickActiveFeature(state, e);\n if (isInactiveFeature(e)) return this.clickInactive(state, e);\n};\n\nDirectSelect.onTouchEnd = DirectSelect.onMouseUp = function(state) {\n if (state.dragMoving) {\n this.fireUpdate();\n }\n this.stopDragging(state);\n};\n\nexport default DirectSelect;\n\n","import * as CommonSelectors from '../lib/common_selectors';\nimport * as Constants from '../constants';\n\nconst DrawPoint = {};\n\nDrawPoint.onSetup = function() {\n const point = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: []\n }\n });\n\n this.addFeature(point);\n\n this.clearSelectedFeatures();\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n this.activateUIButton(Constants.types.POINT);\n\n this.setActionableState({\n trash: true\n });\n\n return { point };\n};\n\nDrawPoint.stopDrawingAndRemove = function(state) {\n this.deleteFeature([state.point.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDrawPoint.onTap = DrawPoint.onClick = function(state, e) {\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n state.point.updateCoordinate('', e.lngLat.lng, e.lngLat.lat);\n this.map.fire(Constants.events.CREATE, {\n features: [state.point.toGeoJSON()]\n });\n this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.point.id] });\n};\n\nDrawPoint.onStop = function(state) {\n this.activateUIButton();\n if (!state.point.getCoordinate().length) {\n this.deleteFeature([state.point.id], { silent: true });\n }\n};\n\nDrawPoint.toDisplayFeatures = function(state, geojson, display) {\n // Never render the point we're drawing\n const isActivePoint = geojson.properties.id === state.point.id;\n geojson.properties.active = (isActivePoint) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n if (!isActivePoint) return display(geojson);\n};\n\nDrawPoint.onTrash = DrawPoint.stopDrawingAndRemove;\n\nDrawPoint.onKeyUp = function(state, e) {\n if (CommonSelectors.isEscapeKey(e) || CommonSelectors.isEnterKey(e)) {\n return this.stopDrawingAndRemove(state, e);\n }\n};\n\nexport default DrawPoint;\n","function isEventAtCoordinates(event, coordinates) {\n if (!event.lngLat) return false;\n return event.lngLat.lng === coordinates[0] && event.lngLat.lat === coordinates[1];\n}\n\nexport default isEventAtCoordinates;\n","import * as CommonSelectors from '../lib/common_selectors';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport * as Constants from '../constants';\nimport isEventAtCoordinates from '../lib/is_event_at_coordinates';\nimport createVertex from '../lib/create_vertex';\n\nconst DrawPolygon = {};\n\nDrawPolygon.onSetup = function() {\n const polygon = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POLYGON,\n coordinates: [[]]\n }\n });\n\n this.addFeature(polygon);\n\n this.clearSelectedFeatures();\n doubleClickZoom.disable(this);\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n this.activateUIButton(Constants.types.POLYGON);\n this.setActionableState({\n trash: true\n });\n\n return {\n polygon,\n currentVertexPosition: 0\n };\n};\n\nDrawPolygon.clickAnywhere = function(state, e) {\n if (state.currentVertexPosition > 0 && isEventAtCoordinates(e, state.polygon.coordinates[0][state.currentVertexPosition - 1])) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.polygon.id] });\n }\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n state.polygon.updateCoordinate(`0.${state.currentVertexPosition}`, e.lngLat.lng, e.lngLat.lat);\n state.currentVertexPosition++;\n state.polygon.updateCoordinate(`0.${state.currentVertexPosition}`, e.lngLat.lng, e.lngLat.lat);\n};\n\nDrawPolygon.clickOnVertex = function(state) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.polygon.id] });\n};\n\nDrawPolygon.onMouseMove = function(state, e) {\n state.polygon.updateCoordinate(`0.${state.currentVertexPosition}`, e.lngLat.lng, e.lngLat.lat);\n if (CommonSelectors.isVertex(e)) {\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n }\n};\n\nDrawPolygon.onTap = DrawPolygon.onClick = function(state, e) {\n if (CommonSelectors.isVertex(e)) return this.clickOnVertex(state, e);\n return this.clickAnywhere(state, e);\n};\n\nDrawPolygon.onKeyUp = function(state, e) {\n if (CommonSelectors.isEscapeKey(e)) {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n } else if (CommonSelectors.isEnterKey(e)) {\n this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.polygon.id] });\n }\n};\n\nDrawPolygon.onStop = function(state) {\n this.updateUIClasses({ mouse: Constants.cursors.NONE });\n doubleClickZoom.enable(this);\n this.activateUIButton();\n\n // check to see if we've deleted this feature\n if (this.getFeature(state.polygon.id) === undefined) return;\n\n //remove last added coordinate\n state.polygon.removeCoordinate(`0.${state.currentVertexPosition}`);\n if (state.polygon.isValid()) {\n this.map.fire(Constants.events.CREATE, {\n features: [state.polygon.toGeoJSON()]\n });\n } else {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT, {}, { silent: true });\n }\n};\n\nDrawPolygon.toDisplayFeatures = function(state, geojson, display) {\n const isActivePolygon = geojson.properties.id === state.polygon.id;\n geojson.properties.active = (isActivePolygon) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n if (!isActivePolygon) return display(geojson);\n\n // Don't render a polygon until it has two positions\n // (and a 3rd which is just the first repeated)\n if (geojson.geometry.coordinates.length === 0) return;\n\n const coordinateCount = geojson.geometry.coordinates[0].length;\n // 2 coordinates after selecting a draw type\n // 3 after creating the first point\n if (coordinateCount < 3) {\n return;\n }\n geojson.properties.meta = Constants.meta.FEATURE;\n display(createVertex(state.polygon.id, geojson.geometry.coordinates[0][0], '0.0', false));\n if (coordinateCount > 3) {\n // Add a start position marker to the map, clicking on this will finish the feature\n // This should only be shown when we're in a valid spot\n const endPos = geojson.geometry.coordinates[0].length - 3;\n display(createVertex(state.polygon.id, geojson.geometry.coordinates[0][endPos], `0.${endPos}`, false));\n }\n if (coordinateCount <= 4) {\n // If we've only drawn two positions (plus the closer),\n // make a LineString instead of a Polygon\n const lineCoordinates = [\n [geojson.geometry.coordinates[0][0][0], geojson.geometry.coordinates[0][0][1]], [geojson.geometry.coordinates[0][1][0], geojson.geometry.coordinates[0][1][1]]\n ];\n // create an initial vertex so that we can track the first point on mobile devices\n display({\n type: Constants.geojsonTypes.FEATURE,\n properties: geojson.properties,\n geometry: {\n coordinates: lineCoordinates,\n type: Constants.geojsonTypes.LINE_STRING\n }\n });\n if (coordinateCount === 3) {\n return;\n }\n }\n // render the Polygon\n return display(geojson);\n};\n\nDrawPolygon.onTrash = function(state) {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nexport default DrawPolygon;\n","import * as CommonSelectors from '../lib/common_selectors';\nimport isEventAtCoordinates from '../lib/is_event_at_coordinates';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport * as Constants from '../constants';\nimport createVertex from '../lib/create_vertex';\n\nconst DrawLineString = {};\n\nDrawLineString.onSetup = function(opts) {\n opts = opts || {};\n const featureId = opts.featureId;\n\n let line, currentVertexPosition;\n let direction = 'forward';\n if (featureId) {\n line = this.getFeature(featureId);\n if (!line) {\n throw new Error('Could not find a feature with the provided featureId');\n }\n let from = opts.from;\n if (from && from.type === 'Feature' && from.geometry && from.geometry.type === 'Point') {\n from = from.geometry;\n }\n if (from && from.type === 'Point' && from.coordinates && from.coordinates.length === 2) {\n from = from.coordinates;\n }\n if (!from || !Array.isArray(from)) {\n throw new Error('Please use the `from` property to indicate which point to continue the line from');\n }\n const lastCoord = line.coordinates.length - 1;\n if (line.coordinates[lastCoord][0] === from[0] && line.coordinates[lastCoord][1] === from[1]) {\n currentVertexPosition = lastCoord + 1;\n // add one new coordinate to continue from\n line.addCoordinate(currentVertexPosition, ...line.coordinates[lastCoord]);\n } else if (line.coordinates[0][0] === from[0] && line.coordinates[0][1] === from[1]) {\n direction = 'backwards';\n currentVertexPosition = 0;\n // add one new coordinate to continue from\n line.addCoordinate(currentVertexPosition, ...line.coordinates[0]);\n } else {\n throw new Error('`from` should match the point at either the start or the end of the provided LineString');\n }\n } else {\n line = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.LINE_STRING,\n coordinates: []\n }\n });\n currentVertexPosition = 0;\n this.addFeature(line);\n }\n\n this.clearSelectedFeatures();\n doubleClickZoom.disable(this);\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n this.activateUIButton(Constants.types.LINE);\n this.setActionableState({\n trash: true\n });\n\n return {\n line,\n currentVertexPosition,\n direction\n };\n};\n\nDrawLineString.clickAnywhere = function(state, e) {\n if (state.currentVertexPosition > 0 && isEventAtCoordinates(e, state.line.coordinates[state.currentVertexPosition - 1]) ||\n state.direction === 'backwards' && isEventAtCoordinates(e, state.line.coordinates[state.currentVertexPosition + 1])) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.line.id] });\n }\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n state.line.updateCoordinate(state.currentVertexPosition, e.lngLat.lng, e.lngLat.lat);\n if (state.direction === 'forward') {\n state.currentVertexPosition++;\n state.line.updateCoordinate(state.currentVertexPosition, e.lngLat.lng, e.lngLat.lat);\n } else {\n state.line.addCoordinate(0, e.lngLat.lng, e.lngLat.lat);\n }\n};\n\nDrawLineString.clickOnVertex = function(state) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.line.id] });\n};\n\nDrawLineString.onMouseMove = function(state, e) {\n state.line.updateCoordinate(state.currentVertexPosition, e.lngLat.lng, e.lngLat.lat);\n if (CommonSelectors.isVertex(e)) {\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n }\n};\n\nDrawLineString.onTap = DrawLineString.onClick = function(state, e) {\n if (CommonSelectors.isVertex(e)) return this.clickOnVertex(state, e);\n this.clickAnywhere(state, e);\n};\n\nDrawLineString.onKeyUp = function(state, e) {\n if (CommonSelectors.isEnterKey(e)) {\n this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.line.id] });\n } else if (CommonSelectors.isEscapeKey(e)) {\n this.deleteFeature([state.line.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n }\n};\n\nDrawLineString.onStop = function(state) {\n doubleClickZoom.enable(this);\n this.activateUIButton();\n\n // check to see if we've deleted this feature\n if (this.getFeature(state.line.id) === undefined) return;\n\n //remove last added coordinate\n state.line.removeCoordinate(`${state.currentVertexPosition}`);\n if (state.line.isValid()) {\n this.map.fire(Constants.events.CREATE, {\n features: [state.line.toGeoJSON()]\n });\n } else {\n this.deleteFeature([state.line.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT, {}, { silent: true });\n }\n};\n\nDrawLineString.onTrash = function(state) {\n this.deleteFeature([state.line.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDrawLineString.toDisplayFeatures = function(state, geojson, display) {\n const isActiveLine = geojson.properties.id === state.line.id;\n geojson.properties.active = (isActiveLine) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n if (!isActiveLine) return display(geojson);\n // Only render the line if it has at least one real coordinate\n if (geojson.geometry.coordinates.length < 2) return;\n geojson.properties.meta = Constants.meta.FEATURE;\n display(createVertex(\n state.line.id,\n geojson.geometry.coordinates[state.direction === 'forward' ? geojson.geometry.coordinates.length - 2 : 1],\n `${state.direction === 'forward' ? geojson.geometry.coordinates.length - 2 : 1}`,\n false\n ));\n\n display(geojson);\n};\n\nexport default DrawLineString;\n","\nimport simple_select from './simple_select';\nimport direct_select from './direct_select';\nimport draw_point from './draw_point';\nimport draw_polygon from './draw_polygon';\nimport draw_line_string from './draw_line_string';\n\nexport default {\n simple_select,\n direct_select,\n draw_point,\n draw_polygon,\n draw_line_string,\n};\n","import xtend from 'xtend';\nimport * as Constants from './constants';\n\nimport styles from './lib/theme';\nimport modes from './modes/index';\n\nconst defaultOptions = {\n defaultMode: Constants.modes.SIMPLE_SELECT,\n keybindings: true,\n touchEnabled: true,\n clickBuffer: 2,\n touchBuffer: 25,\n boxSelect: true,\n displayControlsDefault: true,\n styles,\n modes,\n controls: {},\n userProperties: false\n};\n\nconst showControls = {\n point: true,\n line_string: true,\n polygon: true,\n trash: true,\n combine_features: true,\n uncombine_features: true\n};\n\nconst hideControls = {\n point: false,\n line_string: false,\n polygon: false,\n trash: false,\n combine_features: false,\n uncombine_features: false\n};\n\nfunction addSources(styles, sourceBucket) {\n return styles.map((style) => {\n if (style.source) return style;\n return xtend(style, {\n id: `${style.id}.${sourceBucket}`,\n source: (sourceBucket === 'hot') ? Constants.sources.HOT : Constants.sources.COLD\n });\n });\n}\n\nexport default function(options = {}) {\n let withDefaults = xtend(options);\n\n if (!options.controls) {\n withDefaults.controls = {};\n }\n\n if (options.displayControlsDefault === false) {\n withDefaults.controls = xtend(hideControls, options.controls);\n } else {\n withDefaults.controls = xtend(showControls, options.controls);\n }\n\n withDefaults = xtend(defaultOptions, withDefaults);\n\n // Layers with a shared source should be adjacent for performance reasons\n withDefaults.styles = addSources(withDefaults.styles, 'cold').concat(addSources(withDefaults.styles, 'hot'));\n\n return withDefaults;\n}\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","export default function(a, b) {\n if (a.length !== b.length) return false;\n return JSON.stringify(a.map(id => id).sort()) === JSON.stringify(b.map(id => id).sort());\n}\n","import isEqual from 'lodash.isequal';\nimport normalize from '@mapbox/geojson-normalize';\nimport hat from 'hat';\nimport featuresAt from './lib/features_at';\nimport stringSetsAreEqual from './lib/string_sets_are_equal';\nimport * as Constants from './constants';\nimport StringSet from './lib/string_set';\n\nimport Polygon from './feature_types/polygon';\nimport LineString from './feature_types/line_string';\nimport Point from './feature_types/point';\nimport MultiFeature from './feature_types/multi_feature';\n\nconst featureTypes = {\n Polygon,\n LineString,\n Point,\n MultiPolygon: MultiFeature,\n MultiLineString: MultiFeature,\n MultiPoint: MultiFeature\n};\n\nexport default function(ctx, api) {\n\n api.modes = Constants.modes;\n\n api.getFeatureIdsAt = function(point) {\n const features = featuresAt.click({ point }, null, ctx);\n return features.map(feature => feature.properties.id);\n };\n\n api.getSelectedIds = function () {\n return ctx.store.getSelectedIds();\n };\n\n api.getSelected = function () {\n return {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: ctx.store.getSelectedIds().map(id => ctx.store.get(id)).map(feature => feature.toGeoJSON())\n };\n };\n\n api.getSelectedPoints = function () {\n return {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: ctx.store.getSelectedCoordinates().map(coordinate => ({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: coordinate.coordinates\n }\n }))\n };\n };\n\n api.set = function(featureCollection) {\n if (featureCollection.type === undefined || featureCollection.type !== Constants.geojsonTypes.FEATURE_COLLECTION || !Array.isArray(featureCollection.features)) {\n throw new Error('Invalid FeatureCollection');\n }\n const renderBatch = ctx.store.createRenderBatch();\n let toDelete = ctx.store.getAllIds().slice();\n const newIds = api.add(featureCollection);\n const newIdsLookup = new StringSet(newIds);\n\n toDelete = toDelete.filter(id => !newIdsLookup.has(id));\n if (toDelete.length) {\n api.delete(toDelete);\n }\n\n renderBatch();\n return newIds;\n };\n\n api.add = function (geojson) {\n const featureCollection = JSON.parse(JSON.stringify(normalize(geojson)));\n\n const ids = featureCollection.features.map((feature) => {\n feature.id = feature.id || hat();\n\n if (feature.geometry === null) {\n throw new Error('Invalid geometry: null');\n }\n\n if (ctx.store.get(feature.id) === undefined || ctx.store.get(feature.id).type !== feature.geometry.type) {\n // If the feature has not yet been created ...\n const Model = featureTypes[feature.geometry.type];\n if (Model === undefined) {\n throw new Error(`Invalid geometry type: ${feature.geometry.type}.`);\n }\n const internalFeature = new Model(ctx, feature);\n ctx.store.add(internalFeature);\n } else {\n // If a feature of that id has already been created, and we are swapping it out ...\n const internalFeature = ctx.store.get(feature.id);\n internalFeature.properties = feature.properties;\n if (!isEqual(internalFeature.getCoordinates(), feature.geometry.coordinates)) {\n internalFeature.incomingCoords(feature.geometry.coordinates);\n }\n }\n return feature.id;\n });\n\n ctx.store.render();\n return ids;\n };\n\n\n api.get = function (id) {\n const feature = ctx.store.get(id);\n if (feature) {\n return feature.toGeoJSON();\n }\n };\n\n api.getAll = function() {\n return {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: ctx.store.getAll().map(feature => feature.toGeoJSON())\n };\n };\n\n api.delete = function(featureIds) {\n ctx.store.delete(featureIds, { silent: true });\n // If we were in direct select mode and our selected feature no longer exists\n // (because it was deleted), we need to get out of that mode.\n if (api.getMode() === Constants.modes.DIRECT_SELECT && !ctx.store.getSelectedIds().length) {\n ctx.events.changeMode(Constants.modes.SIMPLE_SELECT, undefined, { silent: true });\n } else {\n ctx.store.render();\n }\n\n return api;\n };\n\n api.deleteAll = function() {\n ctx.store.delete(ctx.store.getAllIds(), { silent: true });\n // If we were in direct select mode, now our selected feature no longer exists,\n // so escape that mode.\n if (api.getMode() === Constants.modes.DIRECT_SELECT) {\n ctx.events.changeMode(Constants.modes.SIMPLE_SELECT, undefined, { silent: true });\n } else {\n ctx.store.render();\n }\n\n return api;\n };\n\n api.changeMode = function(mode, modeOptions = {}) {\n // Avoid changing modes just to re-select what's already selected\n if (mode === Constants.modes.SIMPLE_SELECT && api.getMode() === Constants.modes.SIMPLE_SELECT) {\n if (stringSetsAreEqual((modeOptions.featureIds || []), ctx.store.getSelectedIds())) return api;\n // And if we are changing the selection within simple_select mode, just change the selection,\n // instead of stopping and re-starting the mode\n ctx.store.setSelected(modeOptions.featureIds, { silent: true });\n ctx.store.render();\n return api;\n }\n\n if (mode === Constants.modes.DIRECT_SELECT && api.getMode() === Constants.modes.DIRECT_SELECT &&\n modeOptions.featureId === ctx.store.getSelectedIds()[0]) {\n return api;\n }\n\n ctx.events.changeMode(mode, modeOptions, { silent: true });\n return api;\n };\n\n api.getMode = function() {\n return ctx.events.getMode();\n };\n\n api.trash = function() {\n ctx.events.trash({ silent: true });\n return api;\n };\n\n api.combineFeatures = function() {\n ctx.events.combineFeatures({ silent: true });\n return api;\n };\n\n api.uncombineFeatures = function() {\n ctx.events.uncombineFeatures({ silent: true });\n return api;\n };\n\n api.setFeatureProperty = function(featureId, property, value) {\n ctx.store.setFeatureProperty(featureId, property, value);\n return api;\n };\n\n return api;\n}\n","import runSetup from './src/setup';\nimport setupOptions from './src/options';\nimport setupAPI from './src/api';\nimport * as Constants from './src/constants';\nimport * as lib from './src/lib';\n\nconst setupDraw = function(options, api) {\n options = setupOptions(options);\n\n const ctx = {\n options\n };\n\n api = setupAPI(ctx, api);\n ctx.api = api;\n\n const setup = runSetup(ctx);\n\n api.onAdd = setup.onAdd;\n api.onRemove = setup.onRemove;\n api.types = Constants.types;\n api.options = options;\n\n return api;\n};\n\nfunction MapboxDraw(options) {\n setupDraw(options, this);\n}\n\nimport modes from './src/modes/index';\nMapboxDraw.modes = modes;\nMapboxDraw.constants = Constants;\nMapboxDraw.lib = lib;\n\nexport default MapboxDraw;\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.bowser=t():e.bowser=t()}(this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=90)}({17:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||\"\"},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||\"\"},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return}},e.getMacOSVersionName=function(e){var t=e.split(\".\").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return\"Leopard\";case 6:return\"Snow Leopard\";case 7:return\"Lion\";case 8:return\"Mountain Lion\";case 9:return\"Mavericks\";case 10:return\"Yosemite\";case 11:return\"El Capitan\";case 12:return\"Sierra\";case 13:return\"High Sierra\";case 14:return\"Mojave\";case 15:return\"Catalina\";default:return}},e.getAndroidVersionName=function(e){var t=e.split(\".\").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?\"Cupcake\":1===t[0]&&t[1]>=6?\"Donut\":2===t[0]&&t[1]<2?\"Eclair\":2===t[0]&&2===t[1]?\"Froyo\":2===t[0]&&t[1]>2?\"Gingerbread\":3===t[0]?\"Honeycomb\":4===t[0]&&t[1]<1?\"Ice Cream Sandwich\":4===t[0]&&t[1]<4?\"Jelly Bean\":4===t[0]&&t[1]>=4?\"KitKat\":5===t[0]?\"Lollipop\":6===t[0]?\"Marshmallow\":7===t[0]?\"Nougat\":8===t[0]?\"Oreo\":9===t[0]?\"Pie\":void 0},e.getVersionPrecision=function(e){return e.split(\".\").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(i,s),o=0,u=e.map([t,r],(function(t){var r=a-e.getVersionPrecision(t),n=t+new Array(r+1).join(\".0\");return e.map(n.split(\".\"),(function(e){return new Array(20-e.length).join(\"0\")+e})).reverse()}));for(n&&(o=a-Math.min(i,s)),a-=1;a>=o;){if(u[0][a]>u[1][a])return 1;if(u[0][a]===u[1][a]){if(a===o)return 0;a-=1}else if(u[0][a]<u[1][a])return-1}},e.map=function(e,t){var r,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)n.push(t(e[r]));return n},e.find=function(e,t){var r,n;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,n=e.length;r<n;r+=1){var i=e[r];if(t(i,r))return i}},e.assign=function(e){for(var t,r,n=e,i=arguments.length,s=new Array(i>1?i-1:0),a=1;a<i;a++)s[a-1]=arguments[a];if(Object.assign)return Object.assign.apply(Object,[e].concat(s));var o=function(){var e=s[t];\"object\"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){n[t]=e[t]}))};for(t=0,r=s.length;t<r;t+=1)o();return e},e.getBrowserAlias=function(e){return n.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return n.BROWSER_MAP[e]||\"\"},e}();t.default=i,e.exports=t.default},18:function(e,t,r){\"use strict\";t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0;t.BROWSER_ALIASES_MAP={\"Amazon Silk\":\"amazon_silk\",\"Android Browser\":\"android\",Bada:\"bada\",BlackBerry:\"blackberry\",Chrome:\"chrome\",Chromium:\"chromium\",Electron:\"electron\",Epiphany:\"epiphany\",Firefox:\"firefox\",Focus:\"focus\",Generic:\"generic\",\"Google Search\":\"google_search\",Googlebot:\"googlebot\",\"Internet Explorer\":\"ie\",\"K-Meleon\":\"k_meleon\",Maxthon:\"maxthon\",\"Microsoft Edge\":\"edge\",\"MZ Browser\":\"mz\",\"NAVER Whale Browser\":\"naver\",Opera:\"opera\",\"Opera Coast\":\"opera_coast\",PhantomJS:\"phantomjs\",Puffin:\"puffin\",QupZilla:\"qupzilla\",QQ:\"qq\",QQLite:\"qqlite\",Safari:\"safari\",Sailfish:\"sailfish\",\"Samsung Internet for Android\":\"samsung_internet\",SeaMonkey:\"seamonkey\",Sleipnir:\"sleipnir\",Swing:\"swing\",Tizen:\"tizen\",\"UC Browser\":\"uc\",Vivaldi:\"vivaldi\",\"WebOS Browser\":\"webos\",WeChat:\"wechat\",\"Yandex Browser\":\"yandex\",Roku:\"roku\"};t.BROWSER_MAP={amazon_silk:\"Amazon Silk\",android:\"Android Browser\",bada:\"Bada\",blackberry:\"BlackBerry\",chrome:\"Chrome\",chromium:\"Chromium\",electron:\"Electron\",epiphany:\"Epiphany\",firefox:\"Firefox\",focus:\"Focus\",generic:\"Generic\",googlebot:\"Googlebot\",google_search:\"Google Search\",ie:\"Internet Explorer\",k_meleon:\"K-Meleon\",maxthon:\"Maxthon\",edge:\"Microsoft Edge\",mz:\"MZ Browser\",naver:\"NAVER Whale Browser\",opera:\"Opera\",opera_coast:\"Opera Coast\",phantomjs:\"PhantomJS\",puffin:\"Puffin\",qupzilla:\"QupZilla\",qq:\"QQ Browser\",qqlite:\"QQ Browser Lite\",safari:\"Safari\",sailfish:\"Sailfish\",samsung_internet:\"Samsung Internet for Android\",seamonkey:\"SeaMonkey\",sleipnir:\"Sleipnir\",swing:\"Swing\",tizen:\"Tizen\",uc:\"UC Browser\",vivaldi:\"Vivaldi\",webos:\"WebOS Browser\",wechat:\"WeChat\",yandex:\"Yandex Browser\"};t.PLATFORMS_MAP={tablet:\"tablet\",mobile:\"mobile\",desktop:\"desktop\",tv:\"tv\"};t.OS_MAP={WindowsPhone:\"Windows Phone\",Windows:\"Windows\",MacOS:\"macOS\",iOS:\"iOS\",Android:\"Android\",WebOS:\"WebOS\",BlackBerry:\"BlackBerry\",Bada:\"Bada\",Tizen:\"Tizen\",Linux:\"Linux\",ChromeOS:\"Chrome OS\",PlayStation4:\"PlayStation 4\",Roku:\"Roku\"};t.ENGINE_MAP={EdgeHTML:\"EdgeHTML\",Blink:\"Blink\",Trident:\"Trident\",Presto:\"Presto\",Gecko:\"Gecko\",WebKit:\"WebKit\"}},90:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(91))&&n.__esModule?n:{default:n},s=r(18);function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var o=function(){function e(){}var t,r,n;return e.getParser=function(e,t){if(void 0===t&&(t=!1),\"string\"!=typeof e)throw new Error(\"UserAgent should be a string\");return new i.default(e,t)},e.parse=function(e){return new i.default(e).getResult()},t=e,n=[{key:\"BROWSER_MAP\",get:function(){return s.BROWSER_MAP}},{key:\"ENGINE_MAP\",get:function(){return s.ENGINE_MAP}},{key:\"OS_MAP\",get:function(){return s.OS_MAP}},{key:\"PLATFORMS_MAP\",get:function(){return s.PLATFORMS_MAP}}],(r=null)&&a(t.prototype,r),n&&a(t,n),e}();t.default=o,e.exports=t.default},91:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n=u(r(92)),i=u(r(93)),s=u(r(94)),a=u(r(95)),o=u(r(17));function u(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||\"\"===e)throw new Error(\"UserAgent parameter can't be empty\");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(n.default,(function(t){if(\"function\"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error(\"Browser's test function is not valid\")}));return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||\"\":this.getBrowser().name||\"\"},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(i.default,(function(t){if(\"function\"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error(\"Browser's test function is not valid\")}));return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||\"\":t||\"\"},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||\"\":t||\"\"},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(s.default,(function(t){if(\"function\"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error(\"Browser's test function is not valid\")}));return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||\"\":this.getEngine().name||\"\"},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(a.default,(function(t){if(\"function\"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error(\"Browser's test function is not valid\")}));return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return o.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,r={},n=0,i={},s=0;if(Object.keys(e).forEach((function(t){var a=e[t];\"string\"==typeof a?(i[t]=a,s+=1):\"object\"==typeof a&&(r[t]=a,n+=1)})),n>0){var a=Object.keys(r),u=o.default.find(a,(function(e){return t.isOS(e)}));if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var c=o.default.find(a,(function(e){return t.isPlatform(e)}));if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f}}if(s>0){var l=Object.keys(i),h=o.default.find(l,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(i[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=o.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if(\"string\"==typeof i)return\">\"===e[0]||\"<\"===e[0]?(r=e.substr(1),\"=\"===e[1]?(n=!0,r=e.substr(2)):t=[],\">\"===e[0]?t.push(1):t.push(-1)):\"=\"===e[0]?r=e.substr(1):\"~\"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default},92:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n};var s=/version\\/(\\d+(\\.?_?\\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:\"Googlebot\"},r=i.default.getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:\"Opera\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:opera)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\\/|opios/i],describe:function(e){var t={name:\"Opera\"},r=i.default.getFirstMatch(/(?:opr|opios)[\\s/](\\S+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:\"Samsung Internet for Android\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:\"NAVER Whale Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:whale)[\\s/](\\d+(?:\\.\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:\"MZ Browser\"},r=i.default.getFirstMatch(/(?:MZBrowser)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:\"Focus\"},r=i.default.getFirstMatch(/(?:focus)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:\"Swing\"},r=i.default.getFirstMatch(/(?:swing)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:\"Opera Coast\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:coast)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\\/\\d+(?:.?_?\\d+)+/i],describe:function(e){var t={name:\"Opera Touch\"},r=i.default.getFirstMatch(/(?:opt)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:\"Yandex Browser\"},r=i.default.getFirstMatch(/(?:yabrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:\"UC Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:ucbrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:\"Maxthon\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:\"Epiphany\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:epiphany)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:\"Puffin\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:puffin)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:\"Sleipnir\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:sleipnir)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:\"K-Meleon\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:k-meleon)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:\"WeChat\"},r=i.default.getFirstMatch(/(?:micromessenger)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?\"QQ Browser Lite\":\"QQ Browser\"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:\"Internet Explorer\"},r=i.default.getFirstMatch(/(?:msie |rv:)(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\\sedg\\//i],describe:function(e){var t={name:\"Microsoft Edge\"},r=i.default.getFirstMatch(/\\sedg\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:\"Microsoft Edge\"},r=i.default.getSecondMatch(/edg([ea]|ios)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:\"Vivaldi\"},r=i.default.getFirstMatch(/vivaldi\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:\"SeaMonkey\"},r=i.default.getFirstMatch(/seamonkey\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:\"Sailfish\"},r=i.default.getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:\"Amazon Silk\"},r=i.default.getFirstMatch(/silk\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:\"PhantomJS\"},r=i.default.getFirstMatch(/phantomjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:\"SlimerJS\"},r=i.default.getFirstMatch(/slimerjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe:function(e){var t={name:\"BlackBerry\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:\"WebOS Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:\"Bada\"},r=i.default.getFirstMatch(/dolfin\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:\"Tizen\"},r=i.default.getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:\"QupZilla\"},r=i.default.getFirstMatch(/(?:qupzilla)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:\"Firefox\"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:\"Electron\"},r=i.default.getFirstMatch(/(?:electron)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:\"Miui\"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:\"Chromium\"},r=i.default.getFirstMatch(/(?:chromium)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:\"Chrome\"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:\"Google Search\"},r=i.default.getFirstMatch(/(?:GSA)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:\"Android Browser\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:\"PlayStation 4\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:\"Safari\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search(\"\\\\(\")?/^(.*)\\/(.*)[ \\t]\\((.*)/:/^(.*)\\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default},93:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/Roku\\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\\/DVP-(\\d+\\.\\d+)/i,e);return{name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:s.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:function(e){var t={name:s.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\\/)(\\d[\\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\\d+(\\.?_?\\d+)+)/i,e).replace(/[_\\s]/g,\".\"),r=i.default.getMacOSVersionName(t),n={name:s.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i,e).replace(/[_\\s]/g,\".\");return{name:s.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\\s/-](\\d+(\\.\\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:s.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\\/(\\d+(\\.\\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\\d+\\/(\\d+([_\\s]\\d+)*)/i,e)||i.default.getFirstMatch(/\\bbb(\\d+)/i,e);return{name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default},94:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/googlebot/i],describe:function(){return{type:\"bot\",vendor:\"Google\"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&\"Nova\",r={type:s.PLATFORMS_MAP.mobile,vendor:\"Huawei\"};return t&&(r.model=t),r}},{test:[/nexus\\s*(?:7|8|9|10).*/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Nexus\"}}},{test:[/ipad/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Apple\",model:\"iPad\"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Apple\",model:\"iPad\"}}},{test:[/kftt build/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Amazon\",model:\"Kindle Fire HD 7\"}}},{test:[/silk/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Amazon\"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:s.PLATFORMS_MAP.mobile,vendor:\"Apple\",model:t}}},{test:[/nexus\\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"Nexus\"}}},{test:[/[^-]mobi/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"blackberry\"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"BlackBerry\"}}},{test:function(e){return\"bada\"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"windows phone\"===e.getBrowserName()},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"Microsoft\"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(\".\")[0]);return\"android\"===e.getOSName(!0)&&t>=3},describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){return\"android\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"macos\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop,vendor:\"Apple\"}}},{test:function(e){return\"windows\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return\"linux\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return\"playstation 4\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}},{test:function(e){return\"roku\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default},95:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:function(e){return\"microsoft edge\"===e.getBrowserName(!0)},describe:function(e){if(/\\sedg\\//i.test(e))return{name:s.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\\/(\\d+(\\.?_?\\d+)+)/i,e);return{name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:s.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:s.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\\/537\\.36/i],describe:function(){return{name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default}})}));","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+\\:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+\\:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\n\n function _map(array, fn, thisArg) {\n if (typeof Array.prototype.map === 'function') {\n return array.map(fn, thisArg);\n } else {\n var output = new Array(array.length);\n for (var i = 0; i < array.length; i++) {\n output[i] = fn.call(thisArg, array[i]);\n }\n return output;\n }\n }\n\n function _filter(array, fn, thisArg) {\n if (typeof Array.prototype.filter === 'function') {\n return array.filter(fn, thisArg);\n } else {\n var output = [];\n for (var i = 0; i < array.length; i++) {\n if (fn.call(thisArg, array[i])) {\n output.push(array[i]);\n }\n }\n return output;\n }\n }\n\n function _indexOf(array, target) {\n if (typeof Array.prototype.indexOf === 'function') {\n return array.indexOf(target);\n } else {\n for (var i = 0; i < array.length; i++) {\n if (array[i] === target) {\n return i;\n }\n }\n return -1;\n }\n }\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?:\\:(\\d+))?(?:\\:(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[\\(\\)]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = _filter(error.stack.split('\\n'), function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return _map(filtered, function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^\\()]*)|(\\)\\,.*$)/g, '');\n }\n var tokens = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(').split(/\\s+/).slice(1);\n var locationParts = this.extractLocation(tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = _indexOf(['eval', '<anonymous>'], locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame(functionName, undefined, fileName, locationParts[1], locationParts[2], line);\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = _filter(error.stack.split('\\n'), function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return _map(filtered, function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval\\:\\d+\\:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame(line);\n } else {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionName = tokens.join('@') || undefined;\n return new StackFrame(functionName,\n undefined,\n locationParts[0],\n locationParts[1],\n locationParts[2],\n line);\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame(undefined, undefined, match[2], match[1], undefined, lines[i]));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame(\n match[3] || undefined,\n undefined,\n match[2],\n match[1],\n undefined,\n lines[i]\n )\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = _filter(error.stack.split('\\n'), function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return _map(filtered, function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\n .replace(/\\([^\\)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^\\)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^\\(]+\\(([^\\)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n return new StackFrame(\n functionName,\n args,\n locationParts[0],\n locationParts[1],\n locationParts[2],\n line);\n }, this);\n }\n };\n}));\n\n","'use strict';\n\nconst validator = require('./validator');\nconst XMLParser = require('./xmlparser/XMLParser');\nconst XMLBuilder = require('./xmlbuilder/json2xml');\n\nmodule.exports = {\n XMLParser: XMLParser,\n XMLValidator: validator,\n XMLBuilder: XMLBuilder\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/(<!DOCTYPE[\\s\\w\\\"\\.\\/\\-\\:]+(\\[.*\\])*\\s*>)/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n for (let key in jObj) {\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node\n } else if (jObj[key] === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n }else {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if(this.options.oneListGroup ){\n listTagVal += this.j2x(item, level + 1).val;\n }else{\n listTagVal += this.processTextOrObjNode(item, key, level)\n }\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n if(this.options.oneListGroup){\n listTagVal = this.buildObjectNode(listTagVal, key, '', level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level) {\n const result = this.j2x(object, level + 1);\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '</' + key + this.tagEndChar;\n let piClosingChar = \"\";\n \n if(key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n \n if (attrStr && val.indexOf('<') === -1) {\n return ( this.indentate(level) + '<' + key + attrStr + piClosingChar + '>' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `></${key}`\n }\n return closeTag;\n}\n\nfunction buildEmptyObjNode(val, key, attrStr, level) {\n if (val !== '') {\n return this.buildObjectNode(val, key, attrStr, level);\n } else {\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;\n // return this.buildTagStr(level,key, attrStr);\n }\n }\n}\n\nBuilder.prototype.buildTextValNode = function(val, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n '</' + key + this.tagEndChar;\n }\n }\n}\n\nBuilder.prototype.replaceEntitiesValue = function(textValue){\n if(textValue && textValue.length > 0 && this.options.processEntities){\n for (let i=0; i<this.options.entities.length; i++) {\n const entity = this.options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\n\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n if (name.startsWith(this.options.attributeNamePrefix)) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}\n\nmodule.exports = Builder;\n","const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nmodule.exports = toXml;\n","const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i<xmlData.length;i++){\n if (xmlData[i] === '<' && !comment) { //Determine the tag type\n if( hasBody && isEntity(xmlData, i)){\n i += 7; \n [entityName, val,i] = readEntityExp(xmlData,i+1);\n if(val.indexOf(\"&\") === -1) //Parameter entities are not supported\n entities[ validateEntityName(entityName) ] = {\n regx : RegExp( `&${entityName};`,\"g\"),\n val: val\n };\n }\n else if( hasBody && isElement(xmlData, i)) i += 8;//Not supported\n else if( hasBody && isAttlist(xmlData, i)) i += 8;//Not supported\n else if( hasBody && isNotation(xmlData, i)) i += 9;//Not supported\n else if( isComment) comment = true;\n else throw new Error(\"Invalid DOCTYPE\");\n\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i] === '>') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n //External entities are not supported\n // <!ENTITY ext SYSTEM \"http://normal-website.com\" >\n\n //Parameter entities are not supported\n // <!ENTITY entityname \"&anotherElement;\">\n\n //Internal entities are supported\n // <!ENTITY entityname \"replacement text\">\n \n //read EntityName\n let entityName = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n // if(xmlData[i] === \" \") continue;\n // else \n entityName += xmlData[i];\n }\n entityName = entityName.trim();\n if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n //read Entity Value\n const startChar = xmlData[i++];\n let val = \"\"\n for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n val += xmlData[i];\n }\n return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === '-' &&\n xmlData[i+3] === '-') return true\n return false\n}\nfunction isEntity(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'N' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'I' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'Y') return true\n return false\n}\nfunction isElement(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'L' &&\n xmlData[i+4] === 'E' &&\n xmlData[i+5] === 'M' &&\n xmlData[i+6] === 'E' &&\n xmlData[i+7] === 'N' &&\n xmlData[i+8] === 'T') return true\n return false\n}\n\nfunction isAttlist(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'A' &&\n xmlData[i+3] === 'T' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'L' &&\n xmlData[i+6] === 'I' &&\n xmlData[i+7] === 'S' &&\n xmlData[i+8] === 'T') return true\n return false\n}\nfunction isNotation(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'N' &&\n xmlData[i+3] === 'O' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'A' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'I' &&\n xmlData[i+8] === 'O' &&\n xmlData[i+9] === 'N') return true\n return false\n}\n\nfunction validateEntityName(name){\n if (util.isName(name))\n\treturn name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n","\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;","'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\n\nconst regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (!this.options.ignoreAttributes && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n // let val = this.parseTextData(tagExp, this.options.cdataPropName, jPath + \".\" + this.options.cdataPropName, true, false, true);\n // if(!val) val = \"\";\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true);\n if(val == undefined) val = \"\";\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) { //TODO: namespace\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, tagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${tagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath)\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n }else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode);\n }else{\n currentNode.addChild(childNode);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substr(0, separatorIndex).replace(/\\s\\s*$/, '');\n tagExp = tagExp.substr(separatorIndex + 1);\n }\n\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n","const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;","'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\nexports.prettify = prettify;\n","'use strict';\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom (blob, opts) {\n if (typeof opts === 'undefined') opts = { autoBom: false }\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = { autoBom: !opts }\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type })\n }\n return blob\n}\n\nfunction download (url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled (url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {}\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click (node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = _global.saveAs || (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs () { /* noop */ }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs (blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n var a = document.createElement('a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s\n setTimeout(function () { click(a) }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs (blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () { click(a) })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs (blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s\n }\n }\n)\n\n_global.saveAs = saveAs.saveAs = saveAs\n\nif (typeof module !== 'undefined') {\n module.exports = saveAs;\n}\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"HighchartsReact\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"HighchartsReact\"] = factory(root[\"React\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 06abc0fd1cd6e6cc78b4","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"HighchartsReact\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"HighchartsReact\"] = factory(root[\"React\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HighchartsReact\", function() { return HighchartsReact; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n\n// React currently throws a warning when using `useLayoutEffect` on the server.\n// To get around it, we can conditionally `useEffect` on the server (no-op) and\n// `useLayoutEffect` in the browser. We need `useLayoutEffect` to ensure the\n// `Highcharts` ref is available in the layout phase. This makes it available\n// in a parent component's `componentDidMount`.\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? __WEBPACK_IMPORTED_MODULE_0_react__[\"useLayoutEffect\"] : __WEBPACK_IMPORTED_MODULE_0_react__[\"useEffect\"];\nvar HighchartsReact = /*#__PURE__*/Object(__WEBPACK_IMPORTED_MODULE_0_react__[\"memo\"])( /*#__PURE__*/Object(__WEBPACK_IMPORTED_MODULE_0_react__[\"forwardRef\"])(function HighchartsReact(props, ref) {\n var containerRef = Object(__WEBPACK_IMPORTED_MODULE_0_react__[\"useRef\"])();\n var chartRef = Object(__WEBPACK_IMPORTED_MODULE_0_react__[\"useRef\"])();\n var constructorType = Object(__WEBPACK_IMPORTED_MODULE_0_react__[\"useRef\"])(props.constructorType);\n var highcharts = Object(__WEBPACK_IMPORTED_MODULE_0_react__[\"useRef\"])(props.highcharts);\n useIsomorphicLayoutEffect(function () {\n function createChart() {\n var H = props.highcharts || (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === 'object' && window.Highcharts;\n var constructorType = props.constructorType || 'chart';\n if (!H) {\n console.warn('The \"highcharts\" property was not passed.');\n } else if (!H[constructorType]) {\n console.warn('The \"constructorType\" property is incorrect or some ' + 'required module is not imported.');\n } else if (!props.options) {\n console.warn('The \"options\" property was not passed.');\n } else {\n // Create a chart\n chartRef.current = H[constructorType](containerRef.current, props.options, props.callback);\n }\n }\n if (!chartRef.current) {\n createChart();\n } else {\n if (props.allowChartUpdate !== false) {\n // Reacreate chart on Highcharts or constructor type change\n if (props.constructorType !== constructorType.current || props.highcharts !== highcharts.current) {\n constructorType.current = props.constructorType;\n highcharts.current = props.highcharts;\n createChart();\n // Use `chart.update` to apply changes\n } else if (!props.immutable && chartRef.current) {\n var _chartRef$current;\n (_chartRef$current = chartRef.current).update.apply(_chartRef$current, [props.options].concat(_toConsumableArray(props.updateArgs || [true, true])));\n } else {\n createChart();\n }\n }\n }\n }, [props.options, props.allowChartUpdate, props.updateArgs, props.containerProps, props.highcharts, props.constructorType]);\n\n // Destroy the chart on unmount\n useIsomorphicLayoutEffect(function () {\n return function () {\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n }, []);\n Object(__WEBPACK_IMPORTED_MODULE_0_react__[\"useImperativeHandle\"])(ref, function () {\n return {\n get chart() {\n return chartRef.current;\n },\n container: containerRef\n };\n }, []);\n\n // Create container for the chart\n return /*#__PURE__*/__WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(\"div\", _extends({}, props.containerProps, {\n ref: containerRef\n }));\n}));\n/* harmony default export */ __webpack_exports__[\"default\"] = (HighchartsReact);\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// highcharts-react.min.js","import React, {\n forwardRef,\n memo,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useRef\n} from 'react';\n\n// React currently throws a warning when using `useLayoutEffect` on the server.\n// To get around it, we can conditionally `useEffect` on the server (no-op) and\n// `useLayoutEffect` in the browser. We need `useLayoutEffect` to ensure the\n// `Highcharts` ref is available in the layout phase. This makes it available\n// in a parent component's `componentDidMount`.\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport const HighchartsReact = memo(forwardRef(\n function HighchartsReact(props, ref) {\n const containerRef = useRef();\n const chartRef = useRef();\n const constructorType = useRef(props.constructorType);\n const highcharts = useRef(props.highcharts);\n\n useIsomorphicLayoutEffect(() => {\n function createChart() {\n const H = props.highcharts || (\n typeof window === 'object' && window.Highcharts\n );\n const constructorType = props.constructorType || 'chart';\n \n if (!H) {\n console.warn('The \"highcharts\" property was not passed.');\n \n } else if (!H[constructorType]) {\n console.warn(\n 'The \"constructorType\" property is incorrect or some ' +\n 'required module is not imported.'\n );\n } else if (!props.options) {\n console.warn('The \"options\" property was not passed.');\n \n } else {\n // Create a chart\n chartRef.current = H[constructorType](\n containerRef.current,\n props.options,\n props.callback\n );\n }\n }\n\n if (!chartRef.current) {\n createChart();\n } else {\n if (props.allowChartUpdate !== false) {\n // Reacreate chart on Highcharts or constructor type change\n if (\n props.constructorType !== constructorType.current ||\n props.highcharts !== highcharts.current\n ) {\n constructorType.current = props.constructorType;\n highcharts.current = props.highcharts;\n createChart();\n // Use `chart.update` to apply changes\n } else if (!props.immutable && chartRef.current) {\n chartRef.current.update(\n props.options,\n ...(props.updateArgs || [true, true])\n );\n } else {\n createChart();\n }\n }\n }\n }, [\n props.options,\n props.allowChartUpdate,\n props.updateArgs,\n props.containerProps,\n props.highcharts,\n props.constructorType\n ]);\n\n // Destroy the chart on unmount\n useIsomorphicLayoutEffect(() => {\n return () => {\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n get chart() {\n return chartRef.current;\n },\n container: containerRef\n }),\n []\n );\n\n // Create container for the chart\n return <div { ...props.containerProps } ref={ containerRef } />;\n }\n));\n\nexport default HighchartsReact;\n\n\n\n// WEBPACK FOOTER //\n// ./src/HighchartsReact.js","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"React\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\"}\n// module id = 1\n// module chunks = 0 1","/**\n * @license Highcharts JS v10.3.3 (2023-01-20)\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n(function (factory) {\n if (typeof module === 'object' && module.exports) {\n factory['default'] = factory;\n module.exports = factory;\n } else if (typeof define === 'function' && define.amd) {\n define('highcharts/highcharts-more', ['highcharts'], function (Highcharts) {\n factory(Highcharts);\n factory.Highcharts = Highcharts;\n return factory;\n });\n } else {\n factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);\n }\n}(function (Highcharts) {\n 'use strict';\n var _modules = Highcharts ? Highcharts._modules : {};\n function _registerModule(obj, path, args, fn) {\n if (!obj.hasOwnProperty(path)) {\n obj[path] = fn.apply(null, args);\n\n if (typeof CustomEvent === 'function') {\n window.dispatchEvent(\n new CustomEvent(\n 'HighchartsModuleLoaded',\n { detail: { path: path, module: obj[path] }\n })\n );\n }\n }\n }\n _registerModule(_modules, 'Extensions/Pane.js', [_modules['Core/Chart/Chart.js'], _modules['Series/CenteredUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Pointer.js'], _modules['Core/Utilities.js']], function (Chart, CU, H, Pointer, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n correctFloat = U.correctFloat,\n defined = U.defined,\n extend = U.extend,\n merge = U.merge,\n pick = U.pick,\n splat = U.splat;\n /**\n * @typedef {\"arc\"|\"circle\"|\"solid\"} Highcharts.PaneBackgroundShapeValue\n */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n Chart.prototype.collectionsWithUpdate.push('pane');\n /**\n * The Pane object allows options that are common to a set of X and Y axes.\n *\n * In the future, this can be extended to basic Highcharts and Highcharts Stock.\n *\n * @private\n * @class\n * @name Highcharts.Pane\n * @param {Highcharts.PaneOptions} options\n * @param {Highcharts.Chart} chart\n */\n var Pane = /** @class */ (function () {\n function Pane(options, chart) {\n this.background = void 0;\n this.center = void 0;\n this.chart = void 0;\n this.options = void 0;\n this.coll = 'pane'; // Member of chart.pane\n /**\n * The pane serves as a container for axes and backgrounds for circular\n * gauges and polar charts.\n *\n * @since 2.3.0\n * @product highcharts\n * @requires highcharts-more\n * @optionparent pane\n */\n this.defaultOptions = {\n /**\n * The end angle of the polar X axis or gauge value axis, given in\n * degrees where 0 is north. Defaults to [startAngle](#pane.startAngle)\n * + 360.\n *\n * @sample {highcharts} highcharts/demo/gauge-vu-meter/\n * VU-meter with custom start and end angle\n *\n * @type {number}\n * @since 2.3.0\n * @product highcharts\n * @apioption pane.endAngle\n */\n /**\n * The center of a polar chart or angular gauge, given as an array\n * of [x, y] positions. Positions can be given as integers that\n * transform to pixels, or as percentages of the plot area size.\n *\n * @sample {highcharts} highcharts/demo/gauge-vu-meter/\n * Two gauges with different center\n *\n * @type {Array<string|number>}\n * @default [\"50%\", \"50%\"]\n * @since 2.3.0\n * @product highcharts\n */\n center: ['50%', '50%'],\n /**\n * The size of the pane, either as a number defining pixels, or a\n * percentage defining a percentage of the available plot area (the\n * smallest of the plot height or plot width).\n *\n * @sample {highcharts} highcharts/demo/gauge-vu-meter/\n * Smaller size\n *\n * @type {number|string}\n * @product highcharts\n */\n size: '85%',\n /**\n * The inner size of the pane, either as a number defining pixels, or a\n * percentage defining a percentage of the pane's size.\n *\n * @sample {highcharts} highcharts/series-polar/column-inverted-inner\n * The inner size set to 20%\n *\n * @type {number|string}\n * @product highcharts\n */\n innerSize: '0%',\n /**\n * The start angle of the polar X axis or gauge axis, given in degrees\n * where 0 is north. Defaults to 0.\n *\n * @sample {highcharts} highcharts/demo/gauge-vu-meter/\n * VU-meter with custom start and end angle\n *\n * @since 2.3.0\n * @product highcharts\n */\n startAngle: 0\n };\n /**\n * An array of background items for the pane.\n *\n * @sample {highcharts} highcharts/demo/gauge-speedometer/\n * Speedometer gauge with multiple backgrounds\n *\n * @type {Array<*>}\n * @optionparent pane.background\n */\n this.defaultBackgroundOptions = {\n /**\n * The class name for this background.\n *\n * @sample {highcharts} highcharts/css/pane/\n * Panes styled by CSS\n * @sample {highstock} highcharts/css/pane/\n * Panes styled by CSS\n * @sample {highmaps} highcharts/css/pane/\n * Panes styled by CSS\n *\n * @type {string}\n * @default highcharts-pane\n * @since 5.0.0\n * @apioption pane.background.className\n */\n /**\n * The shape of the pane background. When `solid`, the background\n * is circular. When `arc`, the background extends only from the min\n * to the max of the value axis.\n *\n * @type {Highcharts.PaneBackgroundShapeValue}\n * @since 2.3.0\n * @product highcharts\n */\n shape: 'circle',\n /**\n * The pixel border width of the pane background.\n *\n * @since 2.3.0\n * @product highcharts\n */\n borderWidth: 1,\n /**\n * The pane background border color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.3.0\n * @product highcharts\n */\n borderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The background color or gradient for the pane.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default { linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 }, stops: [[0, #ffffff], [1, #e6e6e6]] }\n * @since 2.3.0\n * @product highcharts\n */\n backgroundColor: {\n /** @ignore-option */\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },\n /** @ignore-option */\n stops: [\n [0, \"#ffffff\" /* Palette.backgroundColor */],\n [1, \"#e6e6e6\" /* Palette.neutralColor10 */]\n ]\n },\n /** @ignore-option */\n from: -Number.MAX_VALUE,\n /**\n * The inner radius of the pane background. Can be either numeric\n * (pixels) or a percentage string.\n *\n * @type {number|string}\n * @since 2.3.0\n * @product highcharts\n */\n innerRadius: 0,\n /** @ignore-option */\n to: Number.MAX_VALUE,\n /**\n * The outer radius of the circular pane background. Can be either\n * numeric (pixels) or a percentage string.\n *\n * @type {number|string}\n * @since 2.3.0\n * @product highcharts\n */\n outerRadius: '105%'\n };\n this.init(options, chart);\n }\n /**\n * Initialize the Pane object\n *\n * @private\n * @function Highcharts.Pane#init\n *\n * @param {Highcharts.PaneOptions} options\n *\n * @param {Highcharts.Chart} chart\n */\n Pane.prototype.init = function (options, chart) {\n this.chart = chart;\n this.background = [];\n chart.pane.push(this);\n this.setOptions(options);\n };\n /**\n * @private\n * @function Highcharts.Pane#setOptions\n *\n * @param {Highcharts.PaneOptions} options\n */\n Pane.prototype.setOptions = function (options) {\n // Set options. Angular charts have a default background (#3318)\n this.options = options = merge(this.defaultOptions, this.chart.angular ? { background: {} } : void 0, options);\n };\n /**\n * Render the pane with its backgrounds.\n *\n * @private\n * @function Highcharts.Pane#render\n */\n Pane.prototype.render = function () {\n var options = this.options,\n backgroundOption = this.options.background,\n renderer = this.chart.renderer,\n len,\n i;\n if (!this.group) {\n this.group = renderer.g('pane-group')\n .attr({ zIndex: options.zIndex || 0 })\n .add();\n }\n this.updateCenter();\n // Render the backgrounds\n if (backgroundOption) {\n backgroundOption = splat(backgroundOption);\n len = Math.max(backgroundOption.length, this.background.length || 0);\n for (i = 0; i < len; i++) {\n // #6641 - if axis exists, chart is circular and apply\n // background\n if (backgroundOption[i] && this.axis) {\n this.renderBackground(merge(this.defaultBackgroundOptions, backgroundOption[i]), i);\n }\n else if (this.background[i]) {\n this.background[i] = this.background[i].destroy();\n this.background.splice(i, 1);\n }\n }\n }\n };\n /**\n * Render an individual pane background.\n *\n * @private\n * @function Highcharts.Pane#renderBackground\n *\n * @param {Highcharts.PaneBackgroundOptions} backgroundOptions\n * Background options\n *\n * @param {number} i\n * The index of the background in this.backgrounds\n */\n Pane.prototype.renderBackground = function (backgroundOptions, i) {\n var method = 'animate',\n attribs = {\n 'class': 'highcharts-pane ' + (backgroundOptions.className || '')\n };\n if (!this.chart.styledMode) {\n extend(attribs, {\n 'fill': backgroundOptions.backgroundColor,\n 'stroke': backgroundOptions.borderColor,\n 'stroke-width': backgroundOptions.borderWidth\n });\n }\n if (!this.background[i]) {\n this.background[i] = this.chart.renderer\n .path()\n .add(this.group);\n method = 'attr';\n }\n this.background[i][method]({\n 'd': this.axis.getPlotBandPath(backgroundOptions.from, backgroundOptions.to, backgroundOptions)\n }).attr(attribs);\n };\n /**\n * Gets the center for the pane and its axis.\n *\n * @private\n * @function Highcharts.Pane#updateCenter\n * @param {Highcharts.Axis} [axis]\n */\n Pane.prototype.updateCenter = function (axis) {\n this.center = (axis ||\n this.axis ||\n {}).center = CU.getCenter.call(this);\n };\n /**\n * Destroy the pane item\n *\n * @ignore\n * @private\n * @function Highcharts.Pane#destroy\n * /\n destroy: function () {\n erase(this.chart.pane, this);\n this.background.forEach(function (background) {\n background.destroy();\n });\n this.background.length = 0;\n this.group = this.group.destroy();\n },\n */\n /**\n * Update the pane item with new options\n *\n * @private\n * @function Highcharts.Pane#update\n * @param {Highcharts.PaneOptions} options\n * New pane options\n * @param {boolean} [redraw]\n */\n Pane.prototype.update = function (options, redraw) {\n merge(true, this.options, options);\n this.setOptions(this.options);\n this.render();\n this.chart.axes.forEach(function (axis) {\n if (axis.pane === this) {\n axis.pane = null;\n axis.update({}, redraw);\n }\n }, this);\n };\n return Pane;\n }());\n /**\n * Check whether element is inside or outside pane.\n * @private\n * @param {number} x\n * Element's x coordinate\n * @param {number} y\n * Element's y coordinate\n * @param {Array<number>} inverted\n * `Chart.inverted` param\n * @param {Array<number>} center\n * Pane's center (x, y) and diameter\n * @param {number} startAngle\n * Pane's normalized start angle in radians (<-PI, PI>)\n * @param {number} endAngle\n * Pane's normalized end angle in radians (<-PI, PI>)\n */\n function isInsidePane(x, y, center, startAngle, endAngle) {\n var insideSlice = true;\n var cx = center[0],\n cy = center[1];\n var distance = Math.sqrt(Math.pow(x - cx, 2) + Math.pow(y - cy, 2));\n if (defined(startAngle) && defined(endAngle)) {\n // Round angle to N-decimals to avoid numeric errors\n var angle = Math.atan2(correctFloat(y - cy, 8),\n correctFloat(x - cx, 8));\n // Ignore full circle panes:\n if (endAngle !== startAngle) {\n // If normalized start angle is bigger than normalized end,\n // it means angles have different signs. In such situation we\n // check the <-PI, startAngle> and <endAngle, PI> ranges.\n if (startAngle > endAngle) {\n insideSlice = (angle >= startAngle &&\n angle <= Math.PI) || (angle <= endAngle &&\n angle >= -Math.PI);\n }\n else {\n // In this case, we simple check if angle is within the\n // <startAngle, endAngle> range\n insideSlice = angle >= startAngle &&\n angle <= correctFloat(endAngle, 8);\n }\n }\n }\n // Round up radius because x and y values are rounded\n return distance <= Math.ceil(center[2] / 2) && insideSlice;\n }\n Chart.prototype.getHoverPane = function (eventArgs) {\n var chart = this;\n var hoverPane;\n if (eventArgs) {\n chart.pane.forEach(function (pane) {\n var x = eventArgs.chartX - chart.plotLeft,\n y = eventArgs.chartY - chart.plotTop;\n if (isInsidePane(x, y, pane.center)) {\n hoverPane = pane;\n }\n });\n }\n return hoverPane;\n };\n // Check if (x, y) position is within pane for polar\n addEvent(Chart, 'afterIsInsidePlot', function (e) {\n var _a;\n var chart = this;\n if (chart.polar) {\n if (e.options.inverted) {\n _a = [e.y, e.x], e.x = _a[0], e.y = _a[1];\n }\n e.isInsidePlot = chart.pane.some(function (pane) { return isInsidePane(e.x, e.y, pane.center, pane.axis && pane.axis.normalizedStartAngleRad, pane.axis && pane.axis.normalizedEndAngleRad); });\n }\n });\n addEvent(Pointer, 'beforeGetHoverData', function (eventArgs) {\n var chart = this.chart;\n if (chart.polar) {\n // Find pane we are currently hovering over.\n chart.hoverPane = chart.getHoverPane(eventArgs);\n // Edit filter method to handle polar\n eventArgs.filter = function (s) {\n return (s.visible &&\n !(!eventArgs.shared && s.directTouch) && // #3821\n pick(s.options.enableMouseTracking, true) &&\n (!chart.hoverPane || s.xAxis.pane === chart.hoverPane));\n };\n }\n else {\n chart.hoverPane = void 0;\n }\n });\n addEvent(Pointer, 'afterGetHoverData', function (eventArgs) {\n var chart = this.chart;\n if (eventArgs.hoverPoint &&\n eventArgs.hoverPoint.plotX &&\n eventArgs.hoverPoint.plotY &&\n chart.hoverPane &&\n !isInsidePane(eventArgs.hoverPoint.plotX, eventArgs.hoverPoint.plotY, chart.hoverPane.center)) {\n eventArgs.hoverPoint = void 0;\n }\n });\n H.Pane = Pane;\n\n return H.Pane;\n });\n _registerModule(_modules, 'Series/AreaRange/AreaRangePoint.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var _a = SeriesRegistry.seriesTypes.area.prototype,\n AreaPoint = _a.pointClass,\n areaProto = _a.pointClass.prototype;\n var defined = U.defined,\n isNumber = U.isNumber;\n /* *\n *\n * Class\n *\n * */\n var AreaRangePoint = /** @class */ (function (_super) {\n __extends(AreaRangePoint, _super);\n function AreaRangePoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /**\n * Range series only. The high or maximum value for each data point.\n * @name Highcharts.Point#high\n * @type {number|undefined}\n */\n _this.high = void 0;\n /**\n * Range series only. The low or minimum value for each data point.\n * @name Highcharts.Point#low\n * @type {number|undefined}\n */\n _this.low = void 0;\n _this.options = void 0;\n _this.plotX = void 0;\n _this.series = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n AreaRangePoint.prototype.setState = function () {\n var prevState = this.state,\n series = this.series,\n isPolar = series.chart.polar;\n if (!defined(this.plotHigh)) {\n // Boost doesn't calculate plotHigh\n this.plotHigh = series.yAxis.toPixels(this.high, true);\n }\n if (!defined(this.plotLow)) {\n // Boost doesn't calculate plotLow\n this.plotLow = this.plotY = series.yAxis.toPixels(this.low, true);\n }\n if (series.stateMarkerGraphic) {\n series.lowerStateMarkerGraphic = series.stateMarkerGraphic;\n series.stateMarkerGraphic = series.upperStateMarkerGraphic;\n }\n // Change state also for the top marker\n this.graphic = this.graphics && this.graphics[1];\n this.plotY = this.plotHigh;\n if (isPolar && isNumber(this.plotHighX)) {\n this.plotX = this.plotHighX;\n }\n // Top state:\n areaProto.setState.apply(this, arguments);\n this.state = prevState;\n // Now restore defaults\n this.plotY = this.plotLow;\n this.graphic = this.graphics && this.graphics[0];\n if (isPolar && isNumber(this.plotLowX)) {\n this.plotX = this.plotLowX;\n }\n if (series.stateMarkerGraphic) {\n series.upperStateMarkerGraphic = series.stateMarkerGraphic;\n series.stateMarkerGraphic = series.lowerStateMarkerGraphic;\n // Lower marker is stored at stateMarkerGraphic\n // to avoid reference duplication (#7021)\n series.lowerStateMarkerGraphic = void 0;\n }\n areaProto.setState.apply(this, arguments);\n };\n AreaRangePoint.prototype.haloPath = function () {\n var isPolar = this.series.chart.polar;\n var path = [];\n // Bottom halo\n this.plotY = this.plotLow;\n if (isPolar && isNumber(this.plotLowX)) {\n this.plotX = this.plotLowX;\n }\n if (this.isInside) {\n path = areaProto.haloPath.apply(this, arguments);\n }\n // Top halo\n this.plotY = this.plotHigh;\n if (isPolar && isNumber(this.plotHighX)) {\n this.plotX = this.plotHighX;\n }\n if (this.isTopInside) {\n path = path.concat(areaProto.haloPath.apply(this, arguments));\n }\n return path;\n };\n AreaRangePoint.prototype.isValid = function () {\n return isNumber(this.low) && isNumber(this.high);\n };\n return AreaRangePoint;\n }(AreaPoint));\n /* *\n *\n * Default Export\n *\n * */\n\n return AreaRangePoint;\n });\n _registerModule(_modules, 'Series/AreaRange/AreaRangeSeries.js', [_modules['Series/AreaRange/AreaRangePoint.js'], _modules['Core/Globals.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (AreaRangePoint, H, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var noop = H.noop;\n var _a = SeriesRegistry.seriesTypes,\n AreaSeries = _a.area,\n areaProto = _a.area.prototype,\n columnProto = _a.column.prototype;\n var addEvent = U.addEvent,\n defined = U.defined,\n extend = U.extend,\n isArray = U.isArray,\n isNumber = U.isNumber,\n pick = U.pick,\n merge = U.merge;\n /* *\n *\n * Constants\n *\n * */\n /**\n * The area range series is a carteseian series with higher and lower values for\n * each point along an X axis, where the area between the values is shaded.\n *\n * @sample {highcharts} highcharts/demo/arearange/\n * Area range chart\n * @sample {highstock} stock/demo/arearange/\n * Area range chart\n *\n * @extends plotOptions.area\n * @product highcharts highstock\n * @excluding stack, stacking\n * @requires highcharts-more\n * @optionparent plotOptions.arearange\n *\n * @private\n */\n var areaRangeSeriesOptions = {\n /**\n * @see [fillColor](#plotOptions.arearange.fillColor)\n * @see [fillOpacity](#plotOptions.arearange.fillOpacity)\n *\n * @apioption plotOptions.arearange.color\n */\n /**\n * @default low\n * @apioption plotOptions.arearange.colorKey\n */\n /**\n * @see [color](#plotOptions.arearange.color)\n * @see [fillOpacity](#plotOptions.arearange.fillOpacity)\n *\n * @apioption plotOptions.arearange.fillColor\n */\n /**\n * @see [color](#plotOptions.arearange.color)\n * @see [fillColor](#plotOptions.arearange.fillColor)\n *\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @apioption plotOptions.arearange.fillOpacity\n */\n /**\n * Whether to apply a drop shadow to the graph line. Since 2.3 the\n * shadow can be an object configuration containing `color`,\n `offsetX`,\n * `offsetY`,\n `opacity` and `width`.\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @product highcharts\n * @apioption plotOptions.arearange.shadow\n */\n /**\n * Pixel width of the arearange graph line.\n *\n * @since 2.3.0\n *\n * @private\n */\n lineWidth: 1,\n /**\n * @type {number|null}\n */\n threshold: null,\n tooltip: {\n pointFormat: '<span style=\"color:{series.color}\">\\u25CF</span> ' +\n '{series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'\n },\n /**\n * Whether the whole area or just the line should respond to mouseover\n * tooltips and other mouse or touch events.\n *\n * @since 2.3.0\n *\n * @private\n */\n trackByArea: true,\n /**\n * Extended data labels for range series types. Range series data\n * labels use no `x` and `y` options. Instead,\n they have `xLow`,\n * `xHigh`,\n `yLow` and `yHigh` options to allow the higher and lower\n * data label sets individually.\n *\n * @declare Highcharts.SeriesAreaRangeDataLabelsOptionsObject\n * @exclude x,\n y\n * @since 2.3.0\n * @product highcharts highstock\n *\n * @private\n */\n dataLabels: {\n align: void 0,\n verticalAlign: void 0,\n /**\n * X offset of the lower data labels relative to the point value.\n *\n * @sample highcharts/plotoptions/arearange-datalabels/\n * Data labels on range series\n * @sample highcharts/plotoptions/arearange-datalabels/\n * Data labels on range series\n */\n xLow: 0,\n /**\n * X offset of the higher data labels relative to the point value.\n *\n * @sample highcharts/plotoptions/arearange-datalabels/\n * Data labels on range series\n */\n xHigh: 0,\n /**\n * Y offset of the lower data labels relative to the point value.\n *\n * @sample highcharts/plotoptions/arearange-datalabels/\n * Data labels on range series\n */\n yLow: 0,\n /**\n * Y offset of the higher data labels relative to the point value.\n *\n * @sample highcharts/plotoptions/arearange-datalabels/\n * Data labels on range series\n */\n yHigh: 0\n }\n };\n /* *\n *\n * Class\n *\n * */\n /**\n * The AreaRange series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.arearange\n *\n * @augments Highcharts.Series\n */\n var AreaRangeSeries = /** @class */ (function (_super) {\n __extends(AreaRangeSeries, _super);\n function AreaRangeSeries() {\n /**\n *\n * Static Properties\n *\n */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n _this.lowerStateMarkerGraphic = void 0;\n _this.xAxis = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n AreaRangeSeries.prototype.toYData = function (point) {\n return [point.low, point.high];\n };\n /**\n * Translate a point's plotHigh from the internal angle and radius measures\n * to true plotHigh coordinates. This is an addition of the toXY method\n * found in Polar.js, because it runs too early for arearanges to be\n * considered (#3419).\n * @private\n */\n AreaRangeSeries.prototype.highToXY = function (point) {\n // Find the polar plotX and plotY\n var chart = this.chart,\n xy = this.xAxis.postTranslate(point.rectPlotX || 0,\n this.yAxis.len - (point.plotHigh || 0));\n point.plotHighX = xy.x - chart.plotLeft;\n point.plotHigh = xy.y - chart.plotTop;\n point.plotLowX = point.plotX;\n };\n /**\n * Extend the line series' getSegmentPath method by applying the segment\n * path to both lower and higher values of the range.\n * @private\n */\n AreaRangeSeries.prototype.getGraphPath = function (points) {\n var highPoints = [],\n highAreaPoints = [],\n getGraphPath = areaProto.getGraphPath,\n options = this.options,\n polar = this.chart.polar,\n connectEnds = polar && options.connectEnds !== false,\n connectNulls = options.connectNulls;\n var i,\n point,\n pointShim,\n step = options.step;\n points = points || this.points;\n // Create the top line and the top part of the area fill. The area fill\n // compensates for null points by drawing down to the lower graph,\n // moving across the null gap and starting again at the lower graph.\n i = points.length;\n while (i--) {\n point = points[i];\n // Support for polar\n var highAreaPoint = polar ? {\n plotX: point.rectPlotX,\n plotY: point.yBottom,\n doCurve: false // #5186, gaps in areasplinerange fill\n } : {\n plotX: point.plotX,\n plotY: point.plotY,\n doCurve: false // #5186, gaps in areasplinerange fill\n };\n if (!point.isNull &&\n !connectEnds &&\n !connectNulls &&\n (!points[i + 1] || points[i + 1].isNull)) {\n highAreaPoints.push(highAreaPoint);\n }\n pointShim = {\n polarPlotY: point.polarPlotY,\n rectPlotX: point.rectPlotX,\n yBottom: point.yBottom,\n // plotHighX is for polar charts\n plotX: pick(point.plotHighX, point.plotX),\n plotY: point.plotHigh,\n isNull: point.isNull\n };\n highAreaPoints.push(pointShim);\n highPoints.push(pointShim);\n if (!point.isNull &&\n !connectEnds &&\n !connectNulls &&\n (!points[i - 1] || points[i - 1].isNull)) {\n highAreaPoints.push(highAreaPoint);\n }\n }\n // Get the paths\n var lowerPath = getGraphPath.call(this,\n points);\n if (step) {\n if (step === true) {\n step = 'left';\n }\n options.step = {\n left: 'right',\n center: 'center',\n right: 'left'\n }[step]; // swap for reading in getGraphPath\n }\n var higherPath = getGraphPath.call(this,\n highPoints);\n var higherAreaPath = getGraphPath.call(this,\n highAreaPoints);\n options.step = step;\n // Create a line on both top and bottom of the range\n var linePath = [].concat(lowerPath,\n higherPath);\n // For the area path, we need to change the 'move' statement into\n // 'lineTo'\n if (!this.chart.polar &&\n higherAreaPath[0] &&\n higherAreaPath[0][0] === 'M') {\n // This probably doesn't work for spline\n higherAreaPath[0] = [\n 'L',\n higherAreaPath[0][1],\n higherAreaPath[0][2]\n ];\n }\n this.graphPath = linePath;\n this.areaPath = lowerPath.concat(higherAreaPath);\n // Prepare for sideways animation\n linePath.isArea = true;\n linePath.xMap = lowerPath.xMap;\n this.areaPath.xMap = lowerPath.xMap;\n return linePath;\n };\n /**\n * Extend the basic drawDataLabels method by running it for both lower and\n * higher values.\n * @private\n */\n AreaRangeSeries.prototype.drawDataLabels = function () {\n var data = this.points,\n length = data.length,\n originalDataLabels = [],\n dataLabelOptions = this.options.dataLabels,\n inverted = this.chart.inverted;\n var i,\n point,\n up,\n upperDataLabelOptions,\n lowerDataLabelOptions;\n if (dataLabelOptions) {\n // Split into upper and lower options. If data labels is an array,\n // the first element is the upper label, the second is the lower.\n //\n // TODO: We want to change this and allow multiple labels for both\n // upper and lower values in the future - introducing some options\n // for which point value to use as Y for the dataLabel, so that this\n // could be handled in Series.drawDataLabels. This would also\n // improve performance since we now have to loop over all the points\n // multiple times to work around the data label logic.\n if (isArray(dataLabelOptions)) {\n upperDataLabelOptions = dataLabelOptions[0] || {\n enabled: false\n };\n lowerDataLabelOptions = dataLabelOptions[1] || {\n enabled: false\n };\n }\n else {\n // Make copies\n upperDataLabelOptions = extend({}, dataLabelOptions);\n upperDataLabelOptions.x = dataLabelOptions.xHigh;\n upperDataLabelOptions.y = dataLabelOptions.yHigh;\n lowerDataLabelOptions = extend({}, dataLabelOptions);\n lowerDataLabelOptions.x = dataLabelOptions.xLow;\n lowerDataLabelOptions.y = dataLabelOptions.yLow;\n }\n // Draw upper labels\n if (upperDataLabelOptions.enabled || this._hasPointLabels) {\n // Set preliminary values for plotY and dataLabel\n // and draw the upper labels\n i = length;\n while (i--) {\n point = data[i];\n if (point) {\n var _a = point.plotHigh,\n plotHigh = _a === void 0 ? 0 : _a,\n _b = point.plotLow,\n plotLow = _b === void 0 ? 0 : _b;\n up = upperDataLabelOptions.inside ?\n plotHigh < plotLow :\n plotHigh > plotLow;\n point.y = point.high;\n point._plotY = point.plotY;\n point.plotY = plotHigh;\n // Store original data labels and set preliminary label\n // objects to be picked up in the uber method\n originalDataLabels[i] = point.dataLabel;\n point.dataLabel = point.dataLabelUpper;\n // Set the default offset\n point.below = up;\n if (inverted) {\n if (!upperDataLabelOptions.align) {\n upperDataLabelOptions.align = up ?\n 'right' : 'left';\n }\n }\n else {\n if (!upperDataLabelOptions.verticalAlign) {\n upperDataLabelOptions.verticalAlign = up ?\n 'top' :\n 'bottom';\n }\n }\n }\n }\n this.options.dataLabels = upperDataLabelOptions;\n if (areaProto.drawDataLabels) {\n // #1209:\n areaProto.drawDataLabels.apply(this, arguments);\n }\n // Reset state after the upper labels were created. Move\n // it to point.dataLabelUpper and reassign the originals.\n // We do this here to support not drawing a lower label.\n i = length;\n while (i--) {\n point = data[i];\n if (point) {\n point.dataLabelUpper = point.dataLabel;\n point.dataLabel = originalDataLabels[i];\n delete point.dataLabels;\n point.y = point.low;\n point.plotY = point._plotY;\n }\n }\n }\n // Draw lower labels\n if (lowerDataLabelOptions.enabled || this._hasPointLabels) {\n i = length;\n while (i--) {\n point = data[i];\n if (point) {\n var _c = point.plotHigh,\n plotHigh = _c === void 0 ? 0 : _c,\n _d = point.plotLow,\n plotLow = _d === void 0 ? 0 : _d;\n up = lowerDataLabelOptions.inside ?\n plotHigh < plotLow :\n plotHigh > plotLow;\n // Set the default offset\n point.below = !up;\n if (inverted) {\n if (!lowerDataLabelOptions.align) {\n lowerDataLabelOptions.align = up ?\n 'left' : 'right';\n }\n }\n else {\n if (!lowerDataLabelOptions.verticalAlign) {\n lowerDataLabelOptions.verticalAlign = up ?\n 'bottom' :\n 'top';\n }\n }\n }\n }\n this.options.dataLabels = lowerDataLabelOptions;\n if (areaProto.drawDataLabels) {\n areaProto.drawDataLabels.apply(this, arguments);\n }\n }\n // Merge upper and lower into point.dataLabels for later destroying\n if (upperDataLabelOptions.enabled) {\n i = length;\n while (i--) {\n point = data[i];\n if (point) {\n point.dataLabels = [\n point.dataLabelUpper,\n point.dataLabel\n ].filter(function (label) {\n return !!label;\n });\n }\n }\n }\n // Reset options\n this.options.dataLabels = dataLabelOptions;\n }\n };\n AreaRangeSeries.prototype.alignDataLabel = function () {\n columnProto.alignDataLabel.apply(this, arguments);\n };\n AreaRangeSeries.prototype.drawPoints = function () {\n var series = this,\n pointLength = series.points.length;\n var i,\n point;\n // Draw bottom points\n areaProto.drawPoints.apply(series, arguments);\n // Prepare drawing top points\n i = 0;\n while (i < pointLength) {\n point = series.points[i];\n /**\n * Array for multiple SVG graphics representing the point in the\n * chart. Only used in cases where the point can not be represented\n * by a single graphic.\n *\n * @see Highcharts.Point#graphic\n *\n * @name Highcharts.Point#graphics\n * @type {Array<Highcharts.SVGElement>|undefined}\n */\n point.graphics = point.graphics || [];\n // Save original props to be overridden by temporary props for top\n // points\n point.origProps = {\n plotY: point.plotY,\n plotX: point.plotX,\n isInside: point.isInside,\n negative: point.negative,\n zone: point.zone,\n y: point.y\n };\n if (point.graphic || point.graphics[0]) {\n point.graphics[0] = point.graphic;\n }\n point.graphic = point.graphics[1];\n point.plotY = point.plotHigh;\n if (defined(point.plotHighX)) {\n point.plotX = point.plotHighX;\n }\n point.y = pick(point.high, point.origProps.y); // #15523\n point.negative = point.y < (series.options.threshold || 0);\n if (series.zones.length) {\n point.zone = point.getZone();\n }\n if (!series.chart.polar) {\n point.isInside = point.isTopInside = (typeof point.plotY !== 'undefined' &&\n point.plotY >= 0 &&\n point.plotY <= series.yAxis.len && // #3519\n point.plotX >= 0 &&\n point.plotX <= series.xAxis.len);\n }\n i++;\n }\n // Draw top points\n areaProto.drawPoints.apply(series, arguments);\n // Reset top points preliminary modifications\n i = 0;\n while (i < pointLength) {\n point = series.points[i];\n point.graphics = point.graphics || [];\n if (point.graphic || point.graphics[1]) {\n point.graphics[1] = point.graphic;\n }\n point.graphic = point.graphics[0];\n if (point.origProps) {\n extend(point, point.origProps);\n delete point.origProps;\n }\n i++;\n }\n };\n AreaRangeSeries.defaultOptions = merge(AreaSeries.defaultOptions, areaRangeSeriesOptions);\n return AreaRangeSeries;\n }(AreaSeries));\n addEvent(AreaRangeSeries, 'afterTranslate', function () {\n // Set plotLow and plotHigh\n var _this = this;\n // Rules out lollipop, but lollipop should not inherit range series in the\n // first place\n if (this.pointArrayMap.join(',') === 'low,high') {\n this.points.forEach(function (point) {\n var high = point.high,\n plotY = point.plotY;\n if (point.isNull) {\n point.plotY = void 0;\n }\n else {\n point.plotLow = plotY;\n // Calculate plotHigh value based on each yAxis scale (#15752)\n point.plotHigh = isNumber(high) ? _this.yAxis.translate(_this.dataModify ?\n _this.dataModify.modifyValue(high) : high, false, true, void 0, true) : void 0;\n if (_this.dataModify) {\n point.yBottom = point.plotHigh;\n }\n }\n });\n }\n }, { order: 0 });\n addEvent(AreaRangeSeries, 'afterTranslate', function () {\n var _this = this;\n var inverted = this.chart.inverted;\n this.points.forEach(function (point) {\n // Postprocessing after the PolarComposition's afterTranslate\n if (_this.chart.polar) {\n _this.highToXY(point);\n point.plotLow = point.plotY;\n point.tooltipPos = [\n ((point.plotHighX || 0) + (point.plotLowX || 0)) / 2,\n ((point.plotHigh || 0) + (point.plotLow || 0)) / 2\n ];\n // Put the tooltip in the middle of the range\n }\n else {\n var tooltipPos = point.pos(false,\n point.plotLow),\n posHigh = point.pos(false,\n point.plotHigh);\n if (tooltipPos && posHigh) {\n tooltipPos[0] = (tooltipPos[0] + posHigh[0]) / 2;\n tooltipPos[1] = (tooltipPos[1] + posHigh[1]) / 2;\n }\n point.tooltipPos = tooltipPos;\n }\n });\n }, { order: 3 });\n extend(AreaRangeSeries.prototype, {\n deferTranslatePolar: true,\n pointArrayMap: ['low', 'high'],\n pointClass: AreaRangePoint,\n pointValKey: 'low',\n setStackedPoints: noop\n });\n SeriesRegistry.registerSeriesType('arearange', AreaRangeSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `arearange` series. If the [type](#series.arearange.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n *\n * @extends series,plotOptions.arearange\n * @excluding dataParser, dataURL, stack, stacking\n * @product highcharts highstock\n * @requires highcharts-more\n * @apioption series.arearange\n */\n /**\n * @see [fillColor](#series.arearange.fillColor)\n * @see [fillOpacity](#series.arearange.fillOpacity)\n *\n * @apioption series.arearange.color\n */\n /**\n * An array of data points for the series. For the `arearange` series type,\n * points can be given in the following ways:\n *\n * 1. An array of arrays with 3 or 2 values. In this case, the values\n * correspond to `x,low,high`. If the first value is a string, it is\n * applied as the name of the point, and the `x` value is inferred.\n * The `x` value can also be omitted, in which case the inner arrays\n * should be of length 2\\. Then the `x` value is automatically calculated,\n * either starting at 0 and incremented by 1, or from `pointStart`\n * and `pointInterval` given in the series options.\n * ```js\n * data: [\n * [0, 8, 3],\n * [1, 1, 1],\n * [2, 6, 8]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.arearange.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * x: 1,\n * low: 9,\n * high: 0,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * low: 3,\n * high: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<Array<(number|string),number>|Array<(number|string),number,number>|*>}\n * @extends series.line.data\n * @excluding marker, y\n * @product highcharts highstock\n * @apioption series.arearange.data\n */\n /**\n * @extends series.arearange.dataLabels\n * @product highcharts highstock\n * @apioption series.arearange.data.dataLabels\n */\n /**\n * @see [color](#series.arearange.color)\n * @see [fillOpacity](#series.arearange.fillOpacity)\n *\n * @apioption series.arearange.fillColor\n */\n /**\n * @see [color](#series.arearange.color)\n * @see [fillColor](#series.arearange.fillColor)\n *\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @apioption series.arearange.fillOpacity\n */\n /**\n * The high or maximum value for each data point.\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.arearange.data.high\n */\n /**\n * The low or minimum value for each data point.\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.arearange.data.low\n */\n ''; // adds doclets above to tranpiled file\n\n return AreaRangeSeries;\n });\n _registerModule(_modules, 'Series/AreaSplineRange/AreaSplineRangeSeries.js', [_modules['Series/AreaRange/AreaRangeSeries.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (AreaRangeSeries, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var splineProto = SeriesRegistry.seriesTypes.spline.prototype;\n var merge = U.merge,\n extend = U.extend;\n /* *\n *\n * Class\n *\n * */\n /**\n * The areasplinerange series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.areasplinerange\n *\n * @augments Highcharts.Series\n */\n var AreaSplineRangeSeries = /** @class */ (function (_super) {\n __extends(AreaSplineRangeSeries, _super);\n function AreaSplineRangeSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.options = void 0;\n _this.data = void 0;\n _this.points = void 0;\n return _this;\n }\n AreaSplineRangeSeries.defaultOptions = merge(AreaRangeSeries.defaultOptions);\n return AreaSplineRangeSeries;\n }(AreaRangeSeries));\n extend(AreaSplineRangeSeries.prototype, {\n getPointSpline: splineProto.getPointSpline\n });\n SeriesRegistry.registerSeriesType('areasplinerange', AreaSplineRangeSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * The area spline range is a cartesian series type with higher and\n * lower Y values along an X axis. The area inside the range is colored, and\n * the graph outlining the area is a smoothed spline.\n *\n * @sample {highstock|highstock} stock/demo/areasplinerange/\n * Area spline range\n *\n * @extends plotOptions.arearange\n * @since 2.3.0\n * @excluding step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @requires highcharts-more\n * @apioption plotOptions.areasplinerange\n */\n /**\n * @see [fillColor](#plotOptions.areasplinerange.fillColor)\n * @see [fillOpacity](#plotOptions.areasplinerange.fillOpacity)\n *\n * @apioption plotOptions.areasplinerange.color\n */\n /**\n * @see [color](#plotOptions.areasplinerange.color)\n * @see [fillOpacity](#plotOptions.areasplinerange.fillOpacity)\n *\n * @apioption plotOptions.areasplinerange.fillColor\n */\n /**\n * @see [color](#plotOptions.areasplinerange.color)\n * @see [fillColor](#plotOptions.areasplinerange.fillColor)\n *\n * @default 0.75\n * @apioption plotOptions.areasplinerange.fillOpacity\n */\n /**\n * A `areasplinerange` series. If the [type](#series.areasplinerange.type)\n * option is not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.areasplinerange\n * @excluding dataParser, dataURL, stack, step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @requires highcharts-more\n * @apioption series.areasplinerange\n */\n /**\n * @see [fillColor](#series.areasplinerange.fillColor)\n * @see [fillOpacity](#series.areasplinerange.fillOpacity)\n *\n * @apioption series.areasplinerange.color\n */\n /**\n * An array of data points for the series. For the `areasplinerange`\n * series type, points can be given in the following ways:\n *\n * 1. An array of arrays with 3 or 2 values. In this case, the values correspond\n * to `x,low,high`. If the first value is a string, it is applied as the name\n * of the point, and the `x` value is inferred. The `x` value can also be\n * omitted, in which case the inner arrays should be of length 2\\. Then the\n * `x` value is automatically calculated, either starting at 0 and\n * incremented by 1, or from `pointStart` and `pointInterval` given in the\n * series options.\n * ```js\n * data: [\n * [0, 0, 5],\n * [1, 9, 1],\n * [2, 5, 2]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.areasplinerange.turboThreshold), this option is\n * not available.\n * ```js\n * data: [{\n * x: 1,\n * low: 5,\n * high: 0,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * low: 4,\n * high: 1,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<Array<(number|string),number>|Array<(number|string),number,number>|*>}\n * @extends series.arearange.data\n * @product highcharts highstock\n * @apioption series.areasplinerange.data\n */\n /**\n * @see [color](#series.areasplinerange.color)\n * @see [fillOpacity](#series.areasplinerange.fillOpacity)\n *\n * @apioption series.areasplinerange.fillColor\n */\n /**\n * @see [color](#series.areasplinerange.color)\n * @see [fillColor](#series.areasplinerange.fillColor)\n *\n * @default 0.75\n * @apioption series.areasplinerange.fillOpacity\n */\n ''; // adds doclets above to transpiled file\n\n return AreaSplineRangeSeries;\n });\n _registerModule(_modules, 'Series/BoxPlot/BoxPlotSeries.js', [_modules['Series/Column/ColumnSeries.js'], _modules['Core/Globals.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ColumnSeries, H, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var noop = H.noop;\n var extend = U.extend,\n merge = U.merge,\n pick = U.pick;\n /**\n * The boxplot series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes#boxplot\n *\n * @augments Highcharts.Series\n */\n /* *\n *\n * Class\n *\n * */\n var BoxPlotSeries = /** @class */ (function (_super) {\n __extends(BoxPlotSeries, _super);\n function BoxPlotSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n // Get presentational attributes\n BoxPlotSeries.prototype.pointAttribs = function () {\n // No attributes should be set on point.graphic which is the group\n return {};\n };\n // Translate data points from raw values x and y to plotX and plotY\n BoxPlotSeries.prototype.translate = function () {\n var series = this,\n yAxis = series.yAxis,\n pointArrayMap = series.pointArrayMap;\n _super.prototype.translate.apply(series);\n // do the translation on each point dimension\n series.points.forEach(function (point) {\n pointArrayMap.forEach(function (key) {\n if (point[key] !== null) {\n point[key + 'Plot'] = yAxis.translate(point[key], 0, 1, 0, 1);\n }\n });\n point.plotHigh = point.highPlot; // For data label validation\n });\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Draw the data points\n * @private\n */\n BoxPlotSeries.prototype.drawPoints = function () {\n var series = this,\n points = series.points,\n options = series.options,\n chart = series.chart,\n renderer = chart.renderer,\n q1Plot,\n q3Plot,\n highPlot,\n lowPlot,\n medianPlot,\n medianPath,\n crispCorr,\n crispX = 0,\n boxPath,\n width,\n left,\n right,\n halfWidth, \n // error bar inherits this series type but doesn't do quartiles\n doQuartiles = series.doQuartiles !== false,\n pointWiskerLength,\n whiskerLength = series.options.whiskerLength;\n points.forEach(function (point) {\n var graphic = point.graphic,\n verb = graphic ? 'animate' : 'attr',\n shapeArgs = point.shapeArgs,\n boxAttr = {},\n stemAttr = {},\n whiskersAttr = {},\n medianAttr = {},\n color = point.color || series.color;\n if (typeof point.plotY !== 'undefined') {\n // crisp vector coordinates\n width = Math.round(shapeArgs.width);\n left = Math.floor(shapeArgs.x);\n right = left + width;\n halfWidth = Math.round(width / 2);\n q1Plot = Math.floor(doQuartiles ? point.q1Plot : point.lowPlot);\n q3Plot = Math.floor(doQuartiles ? point.q3Plot : point.lowPlot);\n highPlot = Math.floor(point.highPlot);\n lowPlot = Math.floor(point.lowPlot);\n if (!graphic) {\n point.graphic = graphic = renderer.g('point')\n .add(series.group);\n point.stem = renderer.path()\n .addClass('highcharts-boxplot-stem')\n .add(graphic);\n if (whiskerLength) {\n point.whiskers = renderer.path()\n .addClass('highcharts-boxplot-whisker')\n .add(graphic);\n }\n if (doQuartiles) {\n point.box = renderer.path(boxPath)\n .addClass('highcharts-boxplot-box')\n .add(graphic);\n }\n point.medianShape = renderer.path(medianPath)\n .addClass('highcharts-boxplot-median')\n .add(graphic);\n }\n if (!chart.styledMode) {\n // Stem attributes\n stemAttr.stroke =\n point.stemColor || options.stemColor || color;\n stemAttr['stroke-width'] = pick(point.stemWidth, options.stemWidth, options.lineWidth);\n stemAttr.dashstyle = (point.stemDashStyle ||\n options.stemDashStyle ||\n options.dashStyle);\n point.stem.attr(stemAttr);\n // Whiskers attributes\n if (whiskerLength) {\n whiskersAttr.stroke = (point.whiskerColor ||\n options.whiskerColor ||\n color);\n whiskersAttr['stroke-width'] = pick(point.whiskerWidth, options.whiskerWidth, options.lineWidth);\n whiskersAttr.dashstyle = (point.whiskerDashStyle ||\n options.whiskerDashStyle ||\n options.dashStyle);\n point.whiskers.attr(whiskersAttr);\n }\n if (doQuartiles) {\n boxAttr.fill = (point.fillColor ||\n options.fillColor ||\n color);\n boxAttr.stroke = options.lineColor || color;\n boxAttr['stroke-width'] = options.lineWidth || 0;\n boxAttr.dashstyle = (point.boxDashStyle ||\n options.boxDashStyle ||\n options.dashStyle);\n point.box.attr(boxAttr);\n }\n // Median attributes\n medianAttr.stroke = (point.medianColor ||\n options.medianColor ||\n color);\n medianAttr['stroke-width'] = pick(point.medianWidth, options.medianWidth, options.lineWidth);\n medianAttr.dashstyle = (point.medianDashStyle ||\n options.medianDashStyle ||\n options.dashStyle);\n point.medianShape.attr(medianAttr);\n }\n var d = void 0;\n // The stem\n crispCorr = (point.stem.strokeWidth() % 2) / 2;\n crispX = left + halfWidth + crispCorr;\n d = [\n // stem up\n ['M', crispX, q3Plot],\n ['L', crispX, highPlot],\n // stem down\n ['M', crispX, q1Plot],\n ['L', crispX, lowPlot]\n ];\n point.stem[verb]({ d: d });\n // The box\n if (doQuartiles) {\n crispCorr = (point.box.strokeWidth() % 2) / 2;\n q1Plot = Math.floor(q1Plot) + crispCorr;\n q3Plot = Math.floor(q3Plot) + crispCorr;\n left += crispCorr;\n right += crispCorr;\n d = [\n ['M', left, q3Plot],\n ['L', left, q1Plot],\n ['L', right, q1Plot],\n ['L', right, q3Plot],\n ['L', left, q3Plot],\n ['Z']\n ];\n point.box[verb]({ d: d });\n }\n // The whiskers\n if (whiskerLength) {\n crispCorr = (point.whiskers.strokeWidth() % 2) / 2;\n highPlot = highPlot + crispCorr;\n lowPlot = lowPlot + crispCorr;\n pointWiskerLength = (/%$/).test(whiskerLength) ?\n halfWidth * parseFloat(whiskerLength) / 100 :\n whiskerLength / 2;\n d = [\n // High whisker\n ['M', crispX - pointWiskerLength, highPlot],\n ['L', crispX + pointWiskerLength, highPlot],\n // Low whisker\n ['M', crispX - pointWiskerLength, lowPlot],\n ['L', crispX + pointWiskerLength, lowPlot]\n ];\n point.whiskers[verb]({ d: d });\n }\n // The median\n medianPlot = Math.round(point.medianPlot);\n crispCorr = (point.medianShape.strokeWidth() % 2) / 2;\n medianPlot = medianPlot + crispCorr;\n d = [\n ['M', left, medianPlot],\n ['L', right, medianPlot]\n ];\n point.medianShape[verb]({ d: d });\n }\n });\n };\n // return a plain array for speedy calculation\n BoxPlotSeries.prototype.toYData = function (point) {\n return [point.low, point.q1, point.median, point.q3, point.high];\n };\n /**\n * A box plot is a convenient way of depicting groups of data through their\n * five-number summaries: the smallest observation (sample minimum), lower\n * quartile (Q1), median (Q2), upper quartile (Q3), and largest observation\n * (sample maximum).\n *\n * @sample highcharts/demo/box-plot/\n * Box plot\n *\n * @extends plotOptions.column\n * @excluding borderColor, borderRadius, borderWidth, groupZPadding,\n * states, boostThreshold, boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @optionparent plotOptions.boxplot\n */\n BoxPlotSeries.defaultOptions = merge(ColumnSeries.defaultOptions, {\n /**\n * @type {number|null}\n */\n threshold: null,\n tooltip: {\n pointFormat: '<span style=\"color:{point.color}\">\\u25CF</span> <b>' +\n '{series.name}</b><br/>' +\n 'Maximum: {point.high}<br/>' +\n 'Upper quartile: {point.q3}<br/>' +\n 'Median: {point.median}<br/>' +\n 'Lower quartile: {point.q1}<br/>' +\n 'Minimum: {point.low}<br/>'\n },\n /**\n * The length of the whiskers, the horizontal lines marking low and\n * high values. It can be a numerical pixel value, or a percentage\n * value of the box width. Set `0` to disable whiskers.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * True by default\n *\n * @type {number|string}\n * @since 3.0\n * @product highcharts\n */\n whiskerLength: '50%',\n /**\n * The fill color of the box.\n *\n * In styled mode, the fill color can be set with the\n * `.highcharts-boxplot-box` class.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @since 3.0\n * @product highcharts\n */\n fillColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The width of the line surrounding the box. If any of\n * [stemWidth](#plotOptions.boxplot.stemWidth),\n * [medianWidth](#plotOptions.boxplot.medianWidth)\n * or [whiskerWidth](#plotOptions.boxplot.whiskerWidth) are `null`,\n * the lineWidth also applies to these lines.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/plotoptions/error-bar-styling/\n * Error bar styling\n *\n * @since 3.0\n * @product highcharts\n */\n lineWidth: 1,\n /**\n * The color of the median line. If `undefined`, the general series\n * color applies.\n *\n * In styled mode, the median stroke width can be set with the\n * `.highcharts-boxplot-median` class.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n * @sample {highcharts} highcharts/plotoptions/error-bar-styling/\n * Error bar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.boxplot.medianColor\n */\n /**\n * The pixel width of the median line. If `null`, the\n * [lineWidth](#plotOptions.boxplot.lineWidth) is used.\n *\n * In styled mode, the median stroke width can be set with the\n * `.highcharts-boxplot-median` class.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {number|null}\n * @since 3.0\n * @product highcharts\n */\n medianWidth: 2,\n /*\n // States are not working and are removed from docs.\n // Refer to: #2340\n states: {\n hover: {\n brightness: -0.3\n }\n },\n */\n /**\n * The color of the stem, the vertical line extending from the box to\n * the whiskers. If `undefined`, the series color is used.\n *\n * In styled mode, the stem stroke can be set with the\n * `.highcharts-boxplot-stem` class.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n * @sample {highcharts} highcharts/plotoptions/error-bar-styling/\n * Error bar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.boxplot.stemColor\n */\n /**\n * The dash style of the box.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 8.1.0\n * @product highcharts\n * @apioption plotOptions.boxplot.boxDashStyle\n */\n /**\n * The dash style of the median.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 8.1.0\n * @product highcharts\n * @apioption plotOptions.boxplot.medianDashStyle\n */\n /**\n * The dash style of the stem, the vertical line extending from the\n * box to the whiskers.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n * @sample {highcharts} highcharts/plotoptions/error-bar-styling/\n * Error bar styling\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.boxplot.stemDashStyle\n */\n /**\n * The dash style of the whiskers.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 8.1.0\n * @product highcharts\n * @apioption plotOptions.boxplot.whiskerDashStyle\n */\n /**\n * The width of the stem, the vertical line extending from the box to\n * the whiskers. If `undefined`, the width is inherited from the\n * [lineWidth](#plotOptions.boxplot.lineWidth) option.\n *\n * In styled mode, the stem stroke width can be set with the\n * `.highcharts-boxplot-stem` class.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n * @sample {highcharts} highcharts/plotoptions/error-bar-styling/\n * Error bar styling\n *\n * @type {number}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.boxplot.stemWidth\n */\n /**\n * @default high\n * @apioption plotOptions.boxplot.colorKey\n */\n /**\n * The color of the whiskers, the horizontal lines marking low and high\n * values. When `undefined`, the general series color is used.\n *\n * In styled mode, the whisker stroke can be set with the\n * `.highcharts-boxplot-whisker` class .\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.boxplot.whiskerColor\n */\n /**\n * The line width of the whiskers, the horizontal lines marking low and\n * high values. When `undefined`, the general\n * [lineWidth](#plotOptions.boxplot.lineWidth) applies.\n *\n * In styled mode, the whisker stroke width can be set with the\n * `.highcharts-boxplot-whisker` class.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @since 3.0\n * @product highcharts\n */\n whiskerWidth: 2\n });\n return BoxPlotSeries;\n }(ColumnSeries));\n extend(BoxPlotSeries.prototype, {\n // array point configs are mapped to this\n pointArrayMap: ['low', 'q1', 'median', 'q3', 'high'],\n // defines the top of the tracker\n pointValKey: 'high',\n // Disable data labels for box plot\n drawDataLabels: noop,\n setStackedPoints: noop // #3890\n });\n /* *\n *\n * Registry\n *\n * */\n SeriesRegistry.registerSeriesType('boxplot', BoxPlotSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `boxplot` series. If the [type](#series.boxplot.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.boxplot\n * @excluding dataParser, dataURL, marker, stack, stacking, states,\n * boostThreshold, boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @apioption series.boxplot\n */\n /**\n * An array of data points for the series. For the `boxplot` series\n * type, points can be given in the following ways:\n *\n * 1. An array of arrays with 6 or 5 values. In this case, the values correspond\n * to `x,low,q1,median,q3,high`. If the first value is a string, it is\n * applied as the name of the point, and the `x` value is inferred. The `x`\n * value can also be omitted, in which case the inner arrays should be of\n * length 5. Then the `x` value is automatically calculated, either starting\n * at 0 and incremented by 1, or from `pointStart` and `pointInterval` given\n * in the series options.\n * ```js\n * data: [\n * [0, 3, 0, 10, 3, 5],\n * [1, 7, 8, 7, 2, 9],\n * [2, 6, 9, 5, 1, 3]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.boxplot.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * low: 4,\n * q1: 9,\n * median: 9,\n * q3: 1,\n * high: 10,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * low: 5,\n * q1: 7,\n * median: 3,\n * q3: 6,\n * high: 2,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<Array<(number|string),number,number,number,number>|Array<(number|string),number,number,number,number,number>|*>}\n * @extends series.line.data\n * @excluding marker\n * @product highcharts\n * @apioption series.boxplot.data\n */\n /**\n * The `high` value for each data point, signifying the highest value\n * in the sample set. The top whisker is drawn here.\n *\n * @type {number}\n * @product highcharts\n * @apioption series.boxplot.data.high\n */\n /**\n * The `low` value for each data point, signifying the lowest value\n * in the sample set. The bottom whisker is drawn here.\n *\n * @type {number}\n * @product highcharts\n * @apioption series.boxplot.data.low\n */\n /**\n * The median for each data point. This is drawn as a line through the\n * middle area of the box.\n *\n * @type {number}\n * @product highcharts\n * @apioption series.boxplot.data.median\n */\n /**\n * The lower quartile for each data point. This is the bottom of the\n * box.\n *\n * @type {number}\n * @product highcharts\n * @apioption series.boxplot.data.q1\n */\n /**\n * The higher quartile for each data point. This is the top of the box.\n *\n * @type {number}\n * @product highcharts\n * @apioption series.boxplot.data.q3\n */\n /**\n * The dash style of the box.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 8.1.0\n * @product highcharts\n * @apioption series.boxplot.data.boxDashStyle\n */\n /**\n * The dash style of the median.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 8.1.0\n * @product highcharts\n * @apioption series.boxplot.data.medianDashStyle\n */\n /**\n * The dash style of the stem.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 8.1.0\n * @product highcharts\n * @apioption series.boxplot.data.stemDashStyle\n */\n /**\n * The dash style of the whiskers.\n *\n * @sample {highcharts} highcharts/plotoptions/box-plot-styling/\n * Box plot styling\n * @sample {highcharts} highcharts/css/boxplot/\n * Box plot in styled mode\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 8.1.0\n * @product highcharts\n * @apioption series.boxplot.data.whiskerDashStyle\n */\n ''; // adds doclets above to transpiled file\n\n return BoxPlotSeries;\n });\n _registerModule(_modules, 'Series/Bubble/BubbleLegendDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Highsoft AS\n *\n * Author: Paweł Potaczek\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n /**\n * The bubble legend is an additional element in legend which\n * presents the scale of the bubble series. Individual bubble ranges\n * can be defined by user or calculated from series. In the case of\n * automatically calculated ranges, a 1px margin of error is\n * permitted.\n *\n * @since 7.0.0\n * @product highcharts highstock highmaps\n * @requires highcharts-more\n * @optionparent legend.bubbleLegend\n */\n var BubbleLegendDefaults = {\n /**\n * The color of the ranges borders,\n can be also defined for an\n * individual range.\n *\n * @sample highcharts/bubble-legend/similartoseries/\n * Similar look to the bubble series\n * @sample highcharts/bubble-legend/bordercolor/\n * Individual bubble border color\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: void 0,\n /**\n * The width of the ranges borders in pixels,\n can be also\n * defined for an individual range.\n */\n borderWidth: 2,\n /**\n * An additional class name to apply to the bubble legend'\n * circle graphical elements. This option does not replace\n * default class names of the graphical element.\n *\n * @sample {highcharts} highcharts/css/bubble-legend/\n * Styling by CSS\n *\n * @type {string}\n */\n className: void 0,\n /**\n * The main color of the bubble legend. Applies to ranges,\n if\n * individual color is not defined.\n *\n * @sample highcharts/bubble-legend/similartoseries/\n * Similar look to the bubble series\n * @sample highcharts/bubble-legend/color/\n * Individual bubble color\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n color: void 0,\n /**\n * An additional class name to apply to the bubble legend's\n * connector graphical elements. This option does not replace\n * default class names of the graphical element.\n *\n * @sample {highcharts} highcharts/css/bubble-legend/\n * Styling by CSS\n *\n * @type {string}\n */\n connectorClassName: void 0,\n /**\n * The color of the connector,\n can be also defined\n * for an individual range.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n connectorColor: void 0,\n /**\n * The length of the connectors in pixels. If labels are\n * centered,\n the distance is reduced to 0.\n *\n * @sample highcharts/bubble-legend/connectorandlabels/\n * Increased connector length\n */\n connectorDistance: 60,\n /**\n * The width of the connectors in pixels.\n *\n * @sample highcharts/bubble-legend/connectorandlabels/\n * Increased connector width\n */\n connectorWidth: 1,\n /**\n * Enable or disable the bubble legend.\n */\n enabled: false,\n /**\n * Options for the bubble legend labels.\n */\n labels: {\n /**\n * An additional class name to apply to the bubble legend\n * label graphical elements. This option does not replace\n * default class names of the graphical element.\n *\n * @sample {highcharts} highcharts/css/bubble-legend/\n * Styling by CSS\n *\n * @type {string}\n */\n className: void 0,\n /**\n * Whether to allow data labels to overlap.\n */\n allowOverlap: false,\n /**\n * A format string for the bubble legend labels. Available\n * variables are the same as for `formatter`.\n *\n * @sample highcharts/bubble-legend/format/\n * Add a unit\n *\n * @type {string}\n */\n format: '',\n /**\n * Available `this` properties are:\n *\n * - `this.value`: The bubble value.\n *\n * - `this.radius`: The radius of the bubble range.\n *\n * - `this.center`: The center y position of the range.\n *\n * @type {Highcharts.FormatterCallbackFunction<Highcharts.BubbleLegendFormatterContextObject>}\n */\n formatter: void 0,\n /**\n * The alignment of the labels compared to the bubble\n * legend. Can be one of `left`,\n `center` or `right`.\n *\n * @sample highcharts/bubble-legend/connectorandlabels/\n * Labels on left\n *\n * @type {Highcharts.AlignValue}\n */\n align: 'right',\n /**\n * CSS styles for the labels.\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @ignore-option */\n fontSize: '10px',\n /** @ignore-option */\n color: \"#000000\" /* Palette.neutralColor100 */\n },\n /**\n * The x position offset of the label relative to the\n * connector.\n */\n x: 0,\n /**\n * The y position offset of the label relative to the\n * connector.\n */\n y: 0\n },\n /**\n * Miximum bubble legend range size. If values for ranges are\n * not specified,\n the `minSize` and the `maxSize` are calculated\n * from bubble series.\n */\n maxSize: 60,\n /**\n * Minimum bubble legend range size. If values for ranges are\n * not specified,\n the `minSize` and the `maxSize` are calculated\n * from bubble series.\n */\n minSize: 10,\n /**\n * The position of the bubble legend in the legend.\n * @sample highcharts/bubble-legend/connectorandlabels/\n * Bubble legend as last item in legend\n */\n legendIndex: 0,\n /**\n * Options for specific range. One range consists of bubble,\n * label and connector.\n *\n * @sample highcharts/bubble-legend/ranges/\n * Manually defined ranges\n * @sample highcharts/bubble-legend/autoranges/\n * Auto calculated ranges\n *\n * @type {Array<*>}\n */\n ranges: {\n /**\n * Range size value,\n similar to bubble Z data.\n * @type {number}\n */\n value: void 0,\n /**\n * The color of the border for individual range.\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: void 0,\n /**\n * The color of the bubble for individual range.\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n color: void 0,\n /**\n * The color of the connector for individual range.\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n connectorColor: void 0\n },\n /**\n * Whether the bubble legend range value should be represented\n * by the area or the width of the bubble. The default,\n area,\n * corresponds best to the human perception of the size of each\n * bubble.\n *\n * @sample highcharts/bubble-legend/ranges/\n * Size by width\n *\n * @type {Highcharts.BubbleSizeByValue}\n */\n sizeBy: 'area',\n /**\n * When this is true,\n the absolute value of z determines the\n * size of the bubble. This means that with the default\n * zThreshold of 0,\n a bubble of value -1 will have the same size\n * as a bubble of value 1,\n while a bubble of value 0 will have a\n * smaller size according to minSize.\n */\n sizeByAbsoluteValue: false,\n /**\n * Define the visual z index of the bubble legend.\n */\n zIndex: 1,\n /**\n * Ranges with with lower value than zThreshold,\n are skipped.\n */\n zThreshold: 0\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return BubbleLegendDefaults;\n });\n _registerModule(_modules, 'Series/Bubble/BubbleLegendItem.js', [_modules['Core/Color/Color.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (Color, F, H, U) {\n /* *\n *\n * (c) 2010-2021 Highsoft AS\n *\n * Author: Paweł Potaczek\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var noop = H.noop;\n var arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n stableSort = U.stableSort;\n /* *\n *\n * Class\n *\n * */\n /**\n * BubbleLegend class.\n *\n * @private\n * @class\n * @name Highcharts.BubbleLegend\n * @param {Highcharts.LegendBubbleLegendOptions} options\n * Options of BubbleLegendItem.\n *\n * @param {Highcharts.Legend} legend\n * Legend of item.\n */\n var BubbleLegendItem = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function BubbleLegendItem(options, legend) {\n /* *\n *\n * Properties\n *\n * */\n this.chart = void 0;\n this.fontMetrics = void 0;\n this.legend = void 0;\n this.maxLabel = void 0;\n this.movementX = void 0;\n this.ranges = void 0;\n this.selected = void 0;\n this.visible = void 0;\n this.symbols = void 0;\n this.options = void 0;\n this.setState = noop;\n this.init(options, legend);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Create basic bubbleLegend properties similar to item in legend.\n * @private\n */\n BubbleLegendItem.prototype.init = function (options, legend) {\n this.options = options;\n this.visible = true;\n this.chart = legend.chart;\n this.legend = legend;\n };\n /**\n * Depending on the position option, add bubbleLegend to legend items.\n *\n * @private\n *\n * @param {Array<(Highcharts.Point|Highcharts.Series)>} items\n * All legend items\n */\n BubbleLegendItem.prototype.addToLegend = function (items) {\n // Insert bubbleLegend into legend items\n items.splice(this.options.legendIndex, 0, this);\n };\n /**\n * Calculate ranges, sizes and call the next steps of bubbleLegend\n * creation.\n *\n * @private\n *\n * @param {Highcharts.Legend} legend\n * Legend instance\n */\n BubbleLegendItem.prototype.drawLegendSymbol = function (legend) {\n var chart = this.chart,\n itemDistance = pick(legend.options.itemDistance, 20),\n legendItem = this.legendItem || {},\n options = this.options,\n ranges = options.ranges,\n connectorDistance = options.connectorDistance;\n var connectorSpace;\n // Predict label dimensions\n this.fontMetrics = chart.renderer.fontMetrics(options.labels.style.fontSize);\n // Do not create bubbleLegend now if ranges or ranges valeus are not\n // specified or if are empty array.\n if (!ranges || !ranges.length || !isNumber(ranges[0].value)) {\n legend.options.bubbleLegend.autoRanges = true;\n return;\n }\n // Sort ranges to right render order\n stableSort(ranges, function (a, b) {\n return b.value - a.value;\n });\n this.ranges = ranges;\n this.setOptions();\n this.render();\n // Get max label size\n var maxLabel = this.getMaxLabelSize(),\n radius = this.ranges[0].radius,\n size = radius * 2;\n // Space for connectors and labels.\n connectorSpace =\n connectorDistance - radius + maxLabel.width;\n connectorSpace = connectorSpace > 0 ? connectorSpace : 0;\n this.maxLabel = maxLabel;\n this.movementX = options.labels.align === 'left' ?\n connectorSpace : 0;\n legendItem.labelWidth = size + connectorSpace + itemDistance;\n legendItem.labelHeight = size + this.fontMetrics.h / 2;\n };\n /**\n * Set style options for each bubbleLegend range.\n * @private\n */\n BubbleLegendItem.prototype.setOptions = function () {\n var ranges = this.ranges,\n options = this.options,\n series = this.chart.series[options.seriesIndex],\n baseline = this.legend.baseline,\n bubbleAttribs = {\n zIndex: options.zIndex,\n 'stroke-width': options.borderWidth\n },\n connectorAttribs = {\n zIndex: options.zIndex,\n 'stroke-width': options.connectorWidth\n },\n labelAttribs = {\n align: (this.legend.options.rtl ||\n options.labels.align === 'left') ? 'right' : 'left',\n zIndex: options.zIndex\n },\n fillOpacity = series.options.marker.fillOpacity,\n styledMode = this.chart.styledMode;\n // Allow to parts of styles be used individually for range\n ranges.forEach(function (range, i) {\n if (!styledMode) {\n bubbleAttribs.stroke = pick(range.borderColor, options.borderColor, series.color);\n bubbleAttribs.fill = pick(range.color, options.color, fillOpacity !== 1 ?\n color(series.color).setOpacity(fillOpacity)\n .get('rgba') :\n series.color);\n connectorAttribs.stroke = pick(range.connectorColor, options.connectorColor, series.color);\n }\n // Set options needed for rendering each range\n ranges[i].radius = this.getRangeRadius(range.value);\n ranges[i] = merge(ranges[i], {\n center: (ranges[0].radius - ranges[i].radius +\n baseline)\n });\n if (!styledMode) {\n merge(true, ranges[i], {\n bubbleAttribs: merge(bubbleAttribs),\n connectorAttribs: merge(connectorAttribs),\n labelAttribs: labelAttribs\n });\n }\n }, this);\n };\n /**\n * Calculate radius for each bubble range,\n * used code from BubbleSeries.js 'getRadius' method.\n *\n * @private\n *\n * @param {number} value\n * Range value\n *\n * @return {number|null}\n * Radius for one range\n */\n BubbleLegendItem.prototype.getRangeRadius = function (value) {\n var options = this.options,\n seriesIndex = this.options.seriesIndex,\n bubbleSeries = this.chart.series[seriesIndex],\n zMax = options.ranges[0].value,\n zMin = options.ranges[options.ranges.length - 1].value,\n minSize = options.minSize,\n maxSize = options.maxSize;\n return bubbleSeries.getRadius.call(this, zMin, zMax, minSize, maxSize, value);\n };\n /**\n * Render the legendItem group.\n * @private\n */\n BubbleLegendItem.prototype.render = function () {\n var legendItem = this.legendItem || {},\n renderer = this.chart.renderer,\n zThreshold = this.options.zThreshold;\n if (!this.symbols) {\n this.symbols = {\n connectors: [],\n bubbleItems: [],\n labels: []\n };\n }\n // Nesting SVG groups to enable handleOverflow\n legendItem.symbol = renderer.g('bubble-legend');\n legendItem.label = renderer.g('bubble-legend-item');\n // To enable default 'hideOverlappingLabels' method\n legendItem.symbol.translateX = 0;\n legendItem.symbol.translateY = 0;\n for (var _i = 0, _a = this.ranges; _i < _a.length; _i++) {\n var range = _a[_i];\n if (range.value >= zThreshold) {\n this.renderRange(range);\n }\n }\n // To use handleOverflow method\n legendItem.symbol.add(legendItem.label);\n legendItem.label.add(legendItem.group);\n this.hideOverlappingLabels();\n };\n /**\n * Render one range, consisting of bubble symbol, connector and label.\n *\n * @private\n *\n * @param {Highcharts.LegendBubbleLegendRangesOptions} range\n * Range options\n */\n BubbleLegendItem.prototype.renderRange = function (range) {\n var mainRange = this.ranges[0],\n legend = this.legend,\n options = this.options,\n labelsOptions = options.labels,\n chart = this.chart,\n bubbleSeries = chart.series[options.seriesIndex],\n renderer = chart.renderer,\n symbols = this.symbols,\n labels = symbols.labels,\n elementCenter = range.center,\n absoluteRadius = Math.abs(range.radius),\n connectorDistance = options.connectorDistance || 0,\n labelsAlign = labelsOptions.align,\n rtl = legend.options.rtl,\n borderWidth = options.borderWidth,\n connectorWidth = options.connectorWidth,\n posX = mainRange.radius || 0,\n posY = elementCenter - absoluteRadius -\n borderWidth / 2 + connectorWidth / 2,\n fontMetrics = this.fontMetrics,\n labelMovement = fontMetrics.f / 2 -\n (fontMetrics.h - fontMetrics.f) / 2,\n crispMovement = (posY % 1 ? 1 : 0.5) -\n (connectorWidth % 2 ? 0 : 0.5),\n styledMode = renderer.styledMode;\n var connectorLength = rtl || labelsAlign === 'left' ?\n -connectorDistance : connectorDistance;\n // Set options for centered labels\n if (labelsAlign === 'center') {\n connectorLength = 0; // do not use connector\n options.connectorDistance = 0;\n range.labelAttribs.align = 'center';\n }\n var labelY = posY + options.labels.y,\n labelX = posX + connectorLength + options.labels.x;\n // Render bubble symbol\n symbols.bubbleItems.push(renderer\n .circle(posX, elementCenter + crispMovement, absoluteRadius)\n .attr(styledMode ? {} : range.bubbleAttribs)\n .addClass((styledMode ?\n 'highcharts-color-' +\n bubbleSeries.colorIndex + ' ' :\n '') +\n 'highcharts-bubble-legend-symbol ' +\n (options.className || '')).add(this.legendItem.symbol));\n // Render connector\n symbols.connectors.push(renderer\n .path(renderer.crispLine([\n ['M', posX, posY],\n ['L', posX + connectorLength, posY]\n ], options.connectorWidth))\n .attr((styledMode ? {} : range.connectorAttribs))\n .addClass((styledMode ?\n 'highcharts-color-' +\n this.options.seriesIndex + ' ' : '') +\n 'highcharts-bubble-legend-connectors ' +\n (options.connectorClassName || '')).add(this.legendItem.symbol));\n // Render label\n var label = renderer\n .text(this.formatLabel(range),\n labelX,\n labelY + labelMovement)\n .attr((styledMode ? {} : range.labelAttribs))\n .css(styledMode ? {} : labelsOptions.style)\n .addClass('highcharts-bubble-legend-labels ' +\n (options.labels.className || '')).add(this.legendItem.symbol);\n labels.push(label);\n // To enable default 'hideOverlappingLabels' method\n label.placed = true;\n label.alignAttr = {\n x: labelX,\n y: labelY + labelMovement\n };\n };\n /**\n * Get the label which takes up the most space.\n * @private\n */\n BubbleLegendItem.prototype.getMaxLabelSize = function () {\n var labels = this.symbols.labels;\n var maxLabel,\n labelSize;\n labels.forEach(function (label) {\n labelSize = label.getBBox(true);\n if (maxLabel) {\n maxLabel = labelSize.width > maxLabel.width ?\n labelSize : maxLabel;\n }\n else {\n maxLabel = labelSize;\n }\n });\n return maxLabel || {};\n };\n /**\n * Get formatted label for range.\n *\n * @private\n *\n * @param {Highcharts.LegendBubbleLegendRangesOptions} range\n * Range options\n *\n * @return {string}\n * Range label text\n */\n BubbleLegendItem.prototype.formatLabel = function (range) {\n var options = this.options,\n formatter = options.labels.formatter,\n format = options.labels.format;\n var numberFormatter = this.chart.numberFormatter;\n return format ? F.format(format, range) :\n formatter ? formatter.call(range) :\n numberFormatter(range.value, 1);\n };\n /**\n * By using default chart 'hideOverlappingLabels' method, hide or show\n * labels and connectors.\n * @private\n */\n BubbleLegendItem.prototype.hideOverlappingLabels = function () {\n var chart = this.chart,\n allowOverlap = this.options.labels.allowOverlap,\n symbols = this.symbols;\n if (!allowOverlap && symbols) {\n chart.hideOverlappingLabels(symbols.labels);\n // Hide or show connectors\n symbols.labels.forEach(function (label, index) {\n if (!label.newOpacity) {\n symbols.connectors[index].hide();\n }\n else if (label.newOpacity !== label.oldOpacity) {\n symbols.connectors[index].show();\n }\n });\n }\n };\n /**\n * Calculate ranges from created series.\n *\n * @private\n *\n * @return {Array<Highcharts.LegendBubbleLegendRangesOptions>}\n * Array of range objects\n */\n BubbleLegendItem.prototype.getRanges = function () {\n var bubbleLegend = this.legend.bubbleLegend,\n series = bubbleLegend.chart.series,\n rangesOptions = bubbleLegend.options.ranges;\n var ranges,\n zData,\n minZ = Number.MAX_VALUE,\n maxZ = -Number.MAX_VALUE;\n series.forEach(function (s) {\n // Find the min and max Z, like in bubble series\n if (s.isBubble && !s.ignoreSeries) {\n zData = s.zData.filter(isNumber);\n if (zData.length) {\n minZ = pick(s.options.zMin, Math.min(minZ, Math.max(arrayMin(zData), s.options.displayNegative === false ?\n s.options.zThreshold :\n -Number.MAX_VALUE)));\n maxZ = pick(s.options.zMax, Math.max(maxZ, arrayMax(zData)));\n }\n }\n });\n // Set values for ranges\n if (minZ === maxZ) {\n // Only one range if min and max values are the same.\n ranges = [{ value: maxZ }];\n }\n else {\n ranges = [\n { value: minZ },\n { value: (minZ + maxZ) / 2 },\n { value: maxZ, autoRanges: true }\n ];\n }\n // Prevent reverse order of ranges after redraw\n if (rangesOptions.length && rangesOptions[0].radius) {\n ranges.reverse();\n }\n // Merge ranges values with user options\n ranges.forEach(function (range, i) {\n if (rangesOptions && rangesOptions[i]) {\n ranges[i] = merge(rangesOptions[i], range);\n }\n });\n return ranges;\n };\n /**\n * Calculate bubble legend sizes from rendered series.\n *\n * @private\n *\n * @return {Array<number,number>}\n * Calculated min and max bubble sizes\n */\n BubbleLegendItem.prototype.predictBubbleSizes = function () {\n var chart = this.chart,\n fontMetrics = this.fontMetrics,\n legendOptions = chart.legend.options,\n floating = legendOptions.floating,\n horizontal = legendOptions.layout === 'horizontal',\n lastLineHeight = horizontal ? chart.legend.lastLineHeight : 0,\n plotSizeX = chart.plotSizeX,\n plotSizeY = chart.plotSizeY,\n bubbleSeries = chart.series[this.options.seriesIndex],\n pxSizes = bubbleSeries.getPxExtremes(),\n minSize = Math.ceil(pxSizes.minPxSize),\n maxPxSize = Math.ceil(pxSizes.maxPxSize),\n plotSize = Math.min(plotSizeY,\n plotSizeX);\n var calculatedSize,\n maxSize = bubbleSeries.options.maxSize;\n // Calculate prediceted max size of bubble\n if (floating || !(/%$/.test(maxSize))) {\n calculatedSize = maxPxSize;\n }\n else {\n maxSize = parseFloat(maxSize);\n calculatedSize = ((plotSize + lastLineHeight -\n fontMetrics.h / 2) * maxSize / 100) / (maxSize / 100 + 1);\n // Get maxPxSize from bubble series if calculated bubble legend\n // size will not affect to bubbles series.\n if ((horizontal && plotSizeY - calculatedSize >=\n plotSizeX) || (!horizontal && plotSizeX -\n calculatedSize >= plotSizeY)) {\n calculatedSize = maxPxSize;\n }\n }\n return [minSize, Math.ceil(calculatedSize)];\n };\n /**\n * Correct ranges with calculated sizes.\n * @private\n */\n BubbleLegendItem.prototype.updateRanges = function (min, max) {\n var bubbleLegendOptions = this.legend.options.bubbleLegend;\n bubbleLegendOptions.minSize = min;\n bubbleLegendOptions.maxSize = max;\n bubbleLegendOptions.ranges = this.getRanges();\n };\n /**\n * Because of the possibility of creating another legend line, predicted\n * bubble legend sizes may differ by a few pixels, so it is necessary to\n * correct them.\n * @private\n */\n BubbleLegendItem.prototype.correctSizes = function () {\n var legend = this.legend,\n chart = this.chart,\n bubbleSeries = chart.series[this.options.seriesIndex],\n pxSizes = bubbleSeries.getPxExtremes(),\n bubbleSeriesSize = pxSizes.maxPxSize,\n bubbleLegendSize = this.options.maxSize;\n if (Math.abs(Math.ceil(bubbleSeriesSize) - bubbleLegendSize) >\n 1) {\n this.updateRanges(this.options.minSize, pxSizes.maxPxSize);\n legend.render();\n }\n };\n return BubbleLegendItem;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @interface Highcharts.BubbleLegendFormatterContextObject\n */ /**\n * The center y position of the range.\n * @name Highcharts.BubbleLegendFormatterContextObject#center\n * @type {number}\n */ /**\n * The radius of the bubble range.\n * @name Highcharts.BubbleLegendFormatterContextObject#radius\n * @type {number}\n */ /**\n * The bubble value.\n * @name Highcharts.BubbleLegendFormatterContextObject#value\n * @type {number}\n */\n ''; // detach doclets above\n\n return BubbleLegendItem;\n });\n _registerModule(_modules, 'Series/Bubble/BubbleLegendComposition.js', [_modules['Series/Bubble/BubbleLegendDefaults.js'], _modules['Series/Bubble/BubbleLegendItem.js'], _modules['Core/Defaults.js'], _modules['Core/Utilities.js']], function (BubbleLegendDefaults, BubbleLegendItem, D, U) {\n /* *\n *\n * (c) 2010-2021 Highsoft AS\n *\n * Author: Paweł Potaczek\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var setOptions = D.setOptions;\n var addEvent = U.addEvent,\n objectEach = U.objectEach,\n wrap = U.wrap;\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * If ranges are not specified, determine ranges from rendered bubble series\n * and render legend again.\n */\n function chartDrawChartBox(proceed, options, callback) {\n var chart = this,\n legend = chart.legend,\n bubbleSeries = getVisibleBubbleSeriesIndex(chart) >= 0;\n var bubbleLegendOptions,\n bubbleSizes,\n legendItem;\n if (legend && legend.options.enabled && legend.bubbleLegend &&\n legend.options.bubbleLegend.autoRanges && bubbleSeries) {\n bubbleLegendOptions = legend.bubbleLegend.options;\n bubbleSizes = legend.bubbleLegend.predictBubbleSizes();\n legend.bubbleLegend.updateRanges(bubbleSizes[0], bubbleSizes[1]);\n // Disable animation on init\n if (!bubbleLegendOptions.placed) {\n legend.group.placed = false;\n legend.allItems.forEach(function (item) {\n legendItem = item.legendItem || {};\n if (legendItem.group) {\n legendItem.group.translateY = null;\n }\n });\n }\n // Create legend with bubbleLegend\n legend.render();\n chart.getMargins();\n chart.axes.forEach(function (axis) {\n if (axis.visible) { // #11448\n axis.render();\n }\n if (!bubbleLegendOptions.placed) {\n axis.setScale();\n axis.updateNames();\n // Disable axis animation on init\n objectEach(axis.ticks, function (tick) {\n tick.isNew = true;\n tick.isNewLabel = true;\n });\n }\n });\n bubbleLegendOptions.placed = true;\n // After recalculate axes, calculate margins again.\n chart.getMargins();\n // Call default 'drawChartBox' method.\n proceed.call(chart, options, callback);\n // Check bubble legend sizes and correct them if necessary.\n legend.bubbleLegend.correctSizes();\n // Correct items positions with different dimensions in legend.\n retranslateItems(legend, getLinesHeights(legend));\n }\n else {\n proceed.call(chart, options, callback);\n // Allow color change on static bubble legend after click on legend\n if (legend && legend.options.enabled && legend.bubbleLegend) {\n legend.render();\n retranslateItems(legend, getLinesHeights(legend));\n }\n }\n }\n /**\n * Compose classes for use with Bubble series.\n * @private\n *\n * @param {Highcharts.Chart} ChartClass\n * Core chart class to use with Bubble series.\n *\n * @param {Highcharts.Legend} LegendClass\n * Core legend class to use with Bubble series.\n *\n * @param {Highcharts.Series} SeriesClass\n * Core series class to use with Bubble series.\n */\n function compose(ChartClass, LegendClass, SeriesClass) {\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n setOptions({\n // Set default bubble legend options\n legend: {\n bubbleLegend: BubbleLegendDefaults\n }\n });\n wrap(ChartClass.prototype, 'drawChartBox', chartDrawChartBox);\n }\n if (composedClasses.indexOf(LegendClass) === -1) {\n composedClasses.push(LegendClass);\n addEvent(LegendClass, 'afterGetAllItems', onLegendAfterGetAllItems);\n }\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n addEvent(SeriesClass, 'legendItemClick', onSeriesLegendItemClick);\n }\n }\n /**\n * Check if there is at least one visible bubble series.\n *\n * @private\n * @function getVisibleBubbleSeriesIndex\n * @param {Highcharts.Chart} chart\n * Chart to check.\n * @return {number}\n * First visible bubble series index\n */\n function getVisibleBubbleSeriesIndex(chart) {\n var series = chart.series;\n var i = 0;\n while (i < series.length) {\n if (series[i] &&\n series[i].isBubble &&\n series[i].visible &&\n series[i].zData.length) {\n return i;\n }\n i++;\n }\n return -1;\n }\n /**\n * Calculate height for each row in legend.\n *\n * @private\n * @function getLinesHeights\n *\n * @param {Highcharts.Legend} legend\n * Legend to calculate from.\n *\n * @return {Array<Highcharts.Dictionary<number>>}\n * Informations about line height and items amount\n */\n function getLinesHeights(legend) {\n var items = legend.allItems,\n lines = [],\n length = items.length;\n var lastLine,\n legendItem,\n legendItem2,\n i = 0,\n j = 0;\n for (i = 0; i < length; i++) {\n legendItem = items[i].legendItem || {};\n legendItem2 = (items[i + 1] || {}).legendItem || {};\n if (legendItem.labelHeight) {\n // for bubbleLegend\n items[i].itemHeight = legendItem.labelHeight;\n }\n if ( // Line break\n items[i] === items[length - 1] ||\n legendItem.y !== legendItem2.y) {\n lines.push({ height: 0 });\n lastLine = lines[lines.length - 1];\n // Find the highest item in line\n for (j; j <= i; j++) {\n if (items[j].itemHeight > lastLine.height) {\n lastLine.height = items[j].itemHeight;\n }\n }\n lastLine.step = i;\n }\n }\n return lines;\n }\n /**\n * Start the bubble legend creation process.\n */\n function onLegendAfterGetAllItems(e) {\n var legend = this,\n bubbleLegend = legend.bubbleLegend,\n legendOptions = legend.options,\n options = legendOptions.bubbleLegend,\n bubbleSeriesIndex = getVisibleBubbleSeriesIndex(legend.chart);\n // Remove unnecessary element\n if (bubbleLegend && bubbleLegend.ranges && bubbleLegend.ranges.length) {\n // Allow change the way of calculating ranges in update\n if (options.ranges.length) {\n options.autoRanges =\n !!options.ranges[0].autoRanges;\n }\n // Update bubbleLegend dimensions in each redraw\n legend.destroyItem(bubbleLegend);\n }\n // Create bubble legend\n if (bubbleSeriesIndex >= 0 &&\n legendOptions.enabled &&\n options.enabled) {\n options.seriesIndex = bubbleSeriesIndex;\n legend.bubbleLegend = new BubbleLegendItem(options, legend);\n legend.bubbleLegend.addToLegend(e.allItems);\n }\n }\n /**\n * Toggle bubble legend depending on the visible status of bubble series.\n */\n function onSeriesLegendItemClick() {\n var series = this,\n chart = series.chart,\n visible = series.visible,\n legend = series.chart.legend;\n var status;\n if (legend && legend.bubbleLegend) {\n // Temporary correct 'visible' property\n series.visible = !visible;\n // Save future status for getRanges method\n series.ignoreSeries = visible;\n // Check if at lest one bubble series is visible\n status = getVisibleBubbleSeriesIndex(chart) >= 0;\n // Hide bubble legend if all bubble series are disabled\n if (legend.bubbleLegend.visible !== status) {\n // Show or hide bubble legend\n legend.update({\n bubbleLegend: { enabled: status }\n });\n legend.bubbleLegend.visible = status; // Restore default status\n }\n series.visible = visible;\n }\n }\n /**\n * Correct legend items translation in case of different elements heights.\n *\n * @private\n * @function Highcharts.Legend#retranslateItems\n *\n * @param {Highcharts.Legend} legend\n * Legend to translate in.\n *\n * @param {Array<Highcharts.Dictionary<number>>} lines\n * Informations about line height and items amount\n */\n function retranslateItems(legend, lines) {\n var items = legend.allItems,\n rtl = legend.options.rtl;\n var orgTranslateX,\n orgTranslateY,\n movementX,\n legendItem,\n actualLine = 0;\n items.forEach(function (item, index) {\n legendItem = item.legendItem || {};\n if (!legendItem.group) {\n return;\n }\n orgTranslateX = legendItem.group.translateX || 0;\n orgTranslateY = legendItem.y || 0;\n movementX = item.movementX;\n if (movementX || (rtl && item.ranges)) {\n movementX = rtl ?\n orgTranslateX - item.options.maxSize / 2 :\n orgTranslateX + movementX;\n legendItem.group.attr({ translateX: movementX });\n }\n if (index > lines[actualLine].step) {\n actualLine++;\n }\n legendItem.group.attr({\n translateY: Math.round(orgTranslateY + lines[actualLine].height / 2)\n });\n legendItem.y = orgTranslateY + lines[actualLine].height / 2;\n });\n }\n /* *\n *\n * Default Export\n *\n * */\n var BubbleLegendComposition = {\n compose: compose\n };\n\n return BubbleLegendComposition;\n });\n _registerModule(_modules, 'Series/Bubble/BubblePoint.js', [_modules['Core/Series/Point.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Point, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var ScatterPoint = SeriesRegistry.seriesTypes.scatter.prototype.pointClass;\n var extend = U.extend;\n /* *\n *\n * Class\n *\n * */\n var BubblePoint = /** @class */ (function (_super) {\n __extends(BubblePoint, _super);\n function BubblePoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.options = void 0;\n _this.series = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n BubblePoint.prototype.haloPath = function (size) {\n return Point.prototype.haloPath.call(this, \n // #6067\n size === 0 ? 0 : (this.marker ? this.marker.radius || 0 : 0) + size);\n };\n return BubblePoint;\n }(ScatterPoint));\n /* *\n *\n * Class Prototype\n *\n * */\n extend(BubblePoint.prototype, {\n ttBelow: false\n });\n /* *\n *\n * Default Export\n *\n * */\n\n return BubblePoint;\n });\n _registerModule(_modules, 'Series/Bubble/BubbleSeries.js', [_modules['Series/Bubble/BubbleLegendComposition.js'], _modules['Series/Bubble/BubblePoint.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (BubbleLegendComposition, BubblePoint, Color, H, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var color = Color.parse;\n var noop = H.noop;\n var Series = SeriesRegistry.series,\n _a = SeriesRegistry.seriesTypes,\n columnProto = _a.column.prototype,\n ScatterSeries = _a.scatter;\n var addEvent = U.addEvent,\n arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n clamp = U.clamp,\n extend = U.extend,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * Add logic to pad each axis with the amount of pixels necessary to avoid the\n * bubbles to overflow.\n */\n function axisBeforePadding() {\n var _this = this;\n var axisLength = this.len,\n chart = this.chart,\n isXAxis = this.isXAxis,\n dataKey = isXAxis ? 'xData' : 'yData',\n min = this.min,\n range = this.max - min;\n var pxMin = 0,\n pxMax = axisLength,\n transA = axisLength / range,\n hasActiveSeries;\n // Handle padding on the second pass, or on redraw\n this.series.forEach(function (series) {\n if (series.bubblePadding &&\n (series.visible || !chart.options.chart.ignoreHiddenSeries)) {\n // Correction for #1673\n _this.allowZoomOutside = true;\n hasActiveSeries = true;\n var data = series[dataKey];\n if (isXAxis) {\n (series.onPoint || series).getRadii(0, 0, series);\n if (series.onPoint) {\n series.radii = series.onPoint.radii;\n }\n }\n if (range > 0) {\n var i = data.length;\n while (i--) {\n if (isNumber(data[i]) &&\n _this.dataMin <= data[i] &&\n data[i] <= _this.max) {\n var radius = series.radii && series.radii[i] || 0;\n pxMin = Math.min(((data[i] - min) * transA) - radius, pxMin);\n pxMax = Math.max(((data[i] - min) * transA) + radius, pxMax);\n }\n }\n }\n }\n });\n // Apply the padding to the min and max properties\n if (hasActiveSeries && range > 0 && !this.logarithmic) {\n pxMax -= axisLength;\n transA *= (axisLength +\n Math.max(0, pxMin) - // #8901\n Math.min(pxMax, axisLength)) / axisLength;\n [\n ['min', 'userMin', pxMin],\n ['max', 'userMax', pxMax]\n ].forEach(function (keys) {\n if (typeof pick(_this.options[keys[0]], _this[keys[1]]) === 'undefined') {\n _this[keys[0]] += keys[2] / transA;\n }\n });\n }\n }\n /* *\n *\n * Class\n *\n * */\n var BubbleSeries = /** @class */ (function (_super) {\n __extends(BubbleSeries, _super);\n function BubbleSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.maxPxSize = void 0;\n _this.minPxSize = void 0;\n _this.options = void 0;\n _this.points = void 0;\n _this.radii = void 0;\n _this.yData = void 0;\n _this.zData = void 0;\n return _this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n BubbleSeries.compose = function (AxisClass, ChartClass, LegendClass, SeriesClass) {\n BubbleLegendComposition.compose(ChartClass, LegendClass, SeriesClass);\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.prototype.beforePadding = axisBeforePadding;\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Perform animation on the bubbles\n * @private\n */\n BubbleSeries.prototype.animate = function (init) {\n if (!init &&\n this.points.length < this.options.animationLimit // #8099\n ) {\n this.points.forEach(function (point) {\n var graphic = point.graphic;\n if (graphic && graphic.width) { // URL symbols don't have width\n // Start values\n if (!this.hasRendered) {\n graphic.attr({\n x: point.plotX,\n y: point.plotY,\n width: 1,\n height: 1\n });\n }\n // Run animation\n graphic.animate(this.markerAttribs(point), this.options.animation);\n }\n }, this);\n }\n };\n /**\n * Get the radius for each point based on the minSize, maxSize and each\n * point's Z value. This must be done prior to Series.translate because\n * the axis needs to add padding in accordance with the point sizes.\n * @private\n */\n BubbleSeries.prototype.getRadii = function () {\n var _this = this;\n var zData = this.zData,\n yData = this.yData,\n radii = [];\n var len,\n i,\n value,\n zExtremes = this.chart.bubbleZExtremes;\n var _a = this.getPxExtremes(),\n minPxSize = _a.minPxSize,\n maxPxSize = _a.maxPxSize;\n // Get the collective Z extremes of all bubblish series. The chart-level\n // `bubbleZExtremes` are only computed once, and reset on `updatedData`\n // in any member series.\n if (!zExtremes) {\n var zMin_1 = Number.MAX_VALUE;\n var zMax_1 = -Number.MAX_VALUE;\n var valid_1;\n this.chart.series.forEach(function (otherSeries) {\n if (otherSeries.bubblePadding && (otherSeries.visible ||\n !_this.chart.options.chart.ignoreHiddenSeries)) {\n var zExtremes_1 = (otherSeries.onPoint || otherSeries).getZExtremes();\n if (zExtremes_1) {\n zMin_1 = Math.min(zMin_1 || zExtremes_1.zMin, zExtremes_1.zMin);\n zMax_1 = Math.max(zMax_1 || zExtremes_1.zMax, zExtremes_1.zMax);\n valid_1 = true;\n }\n }\n });\n if (valid_1) {\n zExtremes = { zMin: zMin_1, zMax: zMax_1 };\n this.chart.bubbleZExtremes = zExtremes;\n }\n else {\n zExtremes = { zMin: 0, zMax: 0 };\n }\n }\n // Set the shape type and arguments to be picked up in drawPoints\n for (i = 0, len = zData.length; i < len; i++) {\n value = zData[i];\n // Separate method to get individual radius for bubbleLegend\n radii.push(this.getRadius(zExtremes.zMin, zExtremes.zMax, minPxSize, maxPxSize, value, yData && yData[i]));\n }\n this.radii = radii;\n };\n /**\n * Get the individual radius for one point.\n * @private\n */\n BubbleSeries.prototype.getRadius = function (zMin, zMax, minSize, maxSize, value, yValue) {\n var options = this.options,\n sizeByArea = options.sizeBy !== 'width',\n zThreshold = options.zThreshold;\n var zRange = zMax - zMin,\n pos = 0.5;\n // #8608 - bubble should be visible when z is undefined\n if (yValue === null || value === null) {\n return null;\n }\n if (isNumber(value)) {\n // When sizing by threshold, the absolute value of z determines\n // the size of the bubble.\n if (options.sizeByAbsoluteValue) {\n value = Math.abs(value - zThreshold);\n zMax = zRange = Math.max(zMax - zThreshold, Math.abs(zMin - zThreshold));\n zMin = 0;\n }\n // Issue #4419 - if value is less than zMin, push a radius that's\n // always smaller than the minimum size\n if (value < zMin) {\n return minSize / 2 - 1;\n }\n // Relative size, a number between 0 and 1\n if (zRange > 0) {\n pos = (value - zMin) / zRange;\n }\n }\n if (sizeByArea && pos >= 0) {\n pos = Math.sqrt(pos);\n }\n return Math.ceil(minSize + pos * (maxSize - minSize)) / 2;\n };\n /**\n * Define hasData function for non-cartesian series.\n * Returns true if the series has points at all.\n * @private\n */\n BubbleSeries.prototype.hasData = function () {\n return !!this.processedXData.length; // != 0\n };\n /**\n * @private\n */\n BubbleSeries.prototype.pointAttribs = function (point, state) {\n var markerOptions = this.options.marker,\n fillOpacity = markerOptions.fillOpacity,\n attr = Series.prototype.pointAttribs.call(this,\n point,\n state);\n if (fillOpacity !== 1) {\n attr.fill = color(attr.fill)\n .setOpacity(fillOpacity)\n .get('rgba');\n }\n return attr;\n };\n /**\n * Extend the base translate method to handle bubble size\n * @private\n */\n BubbleSeries.prototype.translate = function () {\n // Run the parent method\n _super.prototype.translate.call(this);\n this.getRadii();\n this.translateBubble();\n };\n BubbleSeries.prototype.translateBubble = function () {\n var _a = this,\n data = _a.data,\n radii = _a.radii;\n var minPxSize = this.getPxExtremes().minPxSize;\n // Set the shape type and arguments to be picked up in drawPoints\n var i = data.length;\n while (i--) {\n var point = data[i];\n var radius = radii ? radii[i] : 0; // #1737\n if (isNumber(radius) && radius >= minPxSize / 2) {\n // Shape arguments\n point.marker = extend(point.marker, {\n radius: radius,\n width: 2 * radius,\n height: 2 * radius\n });\n // Alignment box for the data label\n point.dlBox = {\n x: point.plotX - radius,\n y: point.plotY - radius,\n width: 2 * radius,\n height: 2 * radius\n };\n }\n else { // below zThreshold\n // #1691\n point.shapeArgs = point.plotY = point.dlBox = void 0;\n point.isInside = false; // #17281\n }\n }\n };\n BubbleSeries.prototype.getPxExtremes = function () {\n var smallestSize = Math.min(this.chart.plotWidth,\n this.chart.plotHeight);\n var getPxSize = function (length) {\n var isPercent;\n if (typeof length === 'string') {\n isPercent = /%$/.test(length);\n length = parseInt(length, 10);\n }\n return isPercent ? smallestSize * length / 100 : length;\n };\n var minPxSize = getPxSize(pick(this.options.minSize, 8));\n // Prioritize min size if conflict to make sure bubbles are\n // always visible. #5873\n var maxPxSize = Math.max(getPxSize(pick(this.options.maxSize, '20%')),\n minPxSize);\n return { minPxSize: minPxSize, maxPxSize: maxPxSize };\n };\n BubbleSeries.prototype.getZExtremes = function () {\n var options = this.options,\n zData = (this.zData || []).filter(isNumber);\n if (zData.length) {\n var zMin = pick(options.zMin,\n clamp(arrayMin(zData),\n options.displayNegative === false ?\n (options.zThreshold || 0) :\n -Number.MAX_VALUE,\n Number.MAX_VALUE));\n var zMax = pick(options.zMax,\n arrayMax(zData));\n if (isNumber(zMin) && isNumber(zMax)) {\n return { zMin: zMin, zMax: zMax };\n }\n }\n };\n /**\n * A bubble series is a three dimensional series type where each point\n * renders an X, Y and Z value. Each points is drawn as a bubble where the\n * position along the X and Y axes mark the X and Y values, and the size of\n * the bubble relates to the Z value.\n *\n * @sample {highcharts} highcharts/demo/bubble/\n * Bubble chart\n *\n * @extends plotOptions.scatter\n * @excluding cluster\n * @product highcharts highstock\n * @requires highcharts-more\n * @optionparent plotOptions.bubble\n */\n BubbleSeries.defaultOptions = merge(ScatterSeries.defaultOptions, {\n dataLabels: {\n formatter: function () {\n var numberFormatter = this.series.chart.numberFormatter;\n var z = this.point.z;\n return isNumber(z) ? numberFormatter(z, -1) : '';\n },\n inside: true,\n verticalAlign: 'middle'\n },\n /**\n * If there are more points in the series than the `animationLimit`, the\n * animation won't run. Animation affects overall performance and\n * doesn't work well with heavy data series.\n *\n * @since 6.1.0\n */\n animationLimit: 250,\n /**\n * Whether to display negative sized bubbles. The threshold is given\n * by the [zThreshold](#plotOptions.bubble.zThreshold) option, and negative\n * bubbles can be visualized by setting\n * [negativeColor](#plotOptions.bubble.negativeColor).\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-negative/\n * Negative bubbles\n *\n * @type {boolean}\n * @default true\n * @since 3.0\n * @apioption plotOptions.bubble.displayNegative\n */\n /**\n * @extends plotOptions.series.marker\n * @excluding enabled, enabledThreshold, height, radius, width\n */\n marker: {\n lineColor: null,\n lineWidth: 1,\n /**\n * The fill opacity of the bubble markers.\n */\n fillOpacity: 0.5,\n /**\n * In bubble charts, the radius is overridden and determined based\n * on the point's data value.\n *\n * @ignore-option\n */\n radius: null,\n states: {\n hover: {\n radiusPlus: 0\n }\n },\n /**\n * A predefined shape or symbol for the marker. Possible values are\n * \"circle\", \"square\", \"diamond\", \"triangle\" and \"triangle-down\".\n *\n * Additionally, the URL to a graphic can be given on the form\n * `url(graphic.png)`. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export\n * server.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols`. The callback is then\n * used by its method name, as shown in the demo.\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-symbol/\n * Bubble chart with various symbols\n * @sample {highcharts} highcharts/plotoptions/series-marker-symbol/\n * General chart with predefined, graphic and custom markers\n *\n * @type {Highcharts.SymbolKeyValue|string}\n * @since 5.0.11\n */\n symbol: 'circle'\n },\n /**\n * Minimum bubble size. Bubbles will automatically size between the\n * `minSize` and `maxSize` to reflect the `z` value of each bubble.\n * Can be either pixels (when no unit is given), or a percentage of\n * the smallest one of the plot width and height.\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-size/\n * Bubble size\n *\n * @type {number|string}\n * @since 3.0\n * @product highcharts highstock\n */\n minSize: 8,\n /**\n * Maximum bubble size. Bubbles will automatically size between the\n * `minSize` and `maxSize` to reflect the `z` value of each bubble.\n * Can be either pixels (when no unit is given), or a percentage of\n * the smallest one of the plot width and height.\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-size/\n * Bubble size\n *\n * @type {number|string}\n * @since 3.0\n * @product highcharts highstock\n */\n maxSize: '20%',\n /**\n * When a point's Z value is below the\n * [zThreshold](#plotOptions.bubble.zThreshold)\n * setting, this color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-negative/\n * Negative bubbles\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.bubble.negativeColor\n */\n /**\n * Whether the bubble's value should be represented by the area or the\n * width of the bubble. The default, `area`, corresponds best to the\n * human perception of the size of each bubble.\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-sizeby/\n * Comparison of area and size\n *\n * @type {Highcharts.BubbleSizeByValue}\n * @default area\n * @since 3.0.7\n * @apioption plotOptions.bubble.sizeBy\n */\n /**\n * When this is true, the absolute value of z determines the size of\n * the bubble. This means that with the default `zThreshold` of 0, a\n * bubble of value -1 will have the same size as a bubble of value 1,\n * while a bubble of value 0 will have a smaller size according to\n * `minSize`.\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-sizebyabsolutevalue/\n * Size by absolute value, various thresholds\n *\n * @type {boolean}\n * @default false\n * @since 4.1.9\n * @product highcharts\n * @apioption plotOptions.bubble.sizeByAbsoluteValue\n */\n /**\n * When this is true, the series will not cause the Y axis to cross\n * the zero plane (or [threshold](#plotOptions.series.threshold) option)\n * unless the data actually crosses the plane.\n *\n * For example, if `softThreshold` is `false`, a series of 0, 1, 2,\n * 3 will make the Y axis show negative values according to the\n * `minPadding` option. If `softThreshold` is `true`, the Y axis starts\n * at 0.\n *\n * @since 4.1.9\n * @product highcharts\n */\n softThreshold: false,\n states: {\n hover: {\n halo: {\n size: 5\n }\n }\n },\n tooltip: {\n pointFormat: '({point.x}, {point.y}), Size: {point.z}'\n },\n turboThreshold: 0,\n /**\n * The minimum for the Z value range. Defaults to the highest Z value\n * in the data.\n *\n * @see [zMin](#plotOptions.bubble.zMin)\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-zmin-zmax/\n * Z has a possible range of 0-100\n *\n * @type {number}\n * @since 4.0.3\n * @product highcharts\n * @apioption plotOptions.bubble.zMax\n */\n /**\n * @default z\n * @apioption plotOptions.bubble.colorKey\n */\n /**\n * The minimum for the Z value range. Defaults to the lowest Z value\n * in the data.\n *\n * @see [zMax](#plotOptions.bubble.zMax)\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-zmin-zmax/\n * Z has a possible range of 0-100\n *\n * @type {number}\n * @since 4.0.3\n * @product highcharts\n * @apioption plotOptions.bubble.zMin\n */\n /**\n * When [displayNegative](#plotOptions.bubble.displayNegative) is `false`,\n * bubbles with lower Z values are skipped. When `displayNegative`\n * is `true` and a [negativeColor](#plotOptions.bubble.negativeColor)\n * is given, points with lower Z is colored.\n *\n * @sample {highcharts} highcharts/plotoptions/bubble-negative/\n * Negative bubbles\n *\n * @since 3.0\n * @product highcharts\n */\n zThreshold: 0,\n zoneAxis: 'z'\n });\n return BubbleSeries;\n }(ScatterSeries));\n extend(BubbleSeries.prototype, {\n alignDataLabel: columnProto.alignDataLabel,\n applyZones: noop,\n bubblePadding: true,\n buildKDTree: noop,\n directTouch: true,\n isBubble: true,\n pointArrayMap: ['y', 'z'],\n pointClass: BubblePoint,\n parallelArrays: ['x', 'y', 'z'],\n trackerGroups: ['group', 'dataLabelsGroup'],\n specialGroup: 'group',\n zoneAxis: 'z'\n });\n // On updated data in any series, delete the chart-level Z extremes cache\n addEvent(BubbleSeries, 'updatedData', function (e) {\n delete e.target.chart.bubbleZExtremes;\n });\n // After removing series, delete the chart-level Z extremes cache, #17502.\n addEvent(BubbleSeries, 'remove', function (e) {\n delete e.target.chart.bubbleZExtremes;\n });\n SeriesRegistry.registerSeriesType('bubble', BubbleSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @typedef {\"area\"|\"width\"} Highcharts.BubbleSizeByValue\n */\n ''; // detach doclets above\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `bubble` series. If the [type](#series.bubble.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.bubble\n * @excluding dataParser, dataURL, stack\n * @product highcharts highstock\n * @requires highcharts-more\n * @apioption series.bubble\n */\n /**\n * An array of data points for the series. For the `bubble` series type,\n * points can be given in the following ways:\n *\n * 1. An array of arrays with 3 or 2 values. In this case, the values correspond\n * to `x,y,z`. If the first value is a string, it is applied as the name of\n * the point, and the `x` value is inferred. The `x` value can also be\n * omitted, in which case the inner arrays should be of length 2\\. Then the\n * `x` value is automatically calculated, either starting at 0 and\n * incremented by 1, or from `pointStart` and `pointInterval` given in the\n * series options.\n * ```js\n * data: [\n * [0, 1, 2],\n * [1, 5, 5],\n * [2, 0, 2]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.bubble.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 1,\n * z: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 5,\n * z: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<Array<(number|string),number>|Array<(number|string),number,number>|*>}\n * @extends series.line.data\n * @product highcharts\n * @apioption series.bubble.data\n */\n /**\n * @extends series.line.data.marker\n * @excluding enabledThreshold, height, radius, width\n * @product highcharts\n * @apioption series.bubble.data.marker\n */\n /**\n * The size value for each bubble. The bubbles' diameters are computed\n * based on the `z`, and controlled by series options like `minSize`,\n * `maxSize`, `sizeBy`, `zMin` and `zMax`.\n *\n * @type {number|null}\n * @product highcharts\n * @apioption series.bubble.data.z\n */\n /**\n * @excluding enabled, enabledThreshold, height, radius, width\n * @apioption series.bubble.marker\n */\n ''; // adds doclets above to transpiled file\n\n return BubbleSeries;\n });\n _registerModule(_modules, 'Series/ColumnRange/ColumnRangePoint.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var _a = SeriesRegistry.seriesTypes,\n columnProto = _a.column.prototype.pointClass.prototype,\n AreaRangePoint = _a.arearange.prototype.pointClass;\n var extend = U.extend,\n isNumber = U.isNumber;\n /* *\n *\n * Class\n *\n * */\n var ColumnRangePoint = /** @class */ (function (_super) {\n __extends(ColumnRangePoint, _super);\n function ColumnRangePoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.options = void 0;\n _this.series = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n ColumnRangePoint.prototype.isValid = function () {\n return isNumber(this.low);\n };\n return ColumnRangePoint;\n }(AreaRangePoint));\n extend(ColumnRangePoint.prototype, {\n setState: columnProto.setState\n });\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnRangePoint;\n });\n _registerModule(_modules, 'Series/ColumnRange/ColumnRangeSeries.js', [_modules['Series/ColumnRange/ColumnRangePoint.js'], _modules['Core/Globals.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ColumnRangePoint, H, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var noop = H.noop;\n var _a = SeriesRegistry.seriesTypes,\n AreaRangeSeries = _a.arearange,\n ColumnSeries = _a.column,\n columnProto = _a.column.prototype;\n var clamp = U.clamp,\n extend = U.extend,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Constants\n *\n * */\n /**\n * The column range is a cartesian series type with higher and lower\n * Y values along an X axis. To display horizontal bars, set\n * [chart.inverted](#chart.inverted) to `true`.\n *\n * @sample {highcharts|highstock} highcharts/demo/columnrange/\n * Inverted column range\n *\n * @extends plotOptions.column\n * @since 2.3.0\n * @excluding negativeColor, stacking, softThreshold, threshold\n * @product highcharts highstock\n * @requires highcharts-more\n * @optionparent plotOptions.columnrange\n */\n var columnRangeOptions = {\n /**\n * Extended data labels for range series types. Range series data labels\n * have no `x` and `y` options. Instead,\n they have `xLow`,\n `xHigh`,\n * `yLow` and `yHigh` options to allow the higher and lower data label\n * sets individually.\n *\n * @declare Highcharts.SeriesAreaRangeDataLabelsOptionsObject\n * @extends plotOptions.arearange.dataLabels\n * @since 2.3.0\n * @product highcharts highstock\n * @apioption plotOptions.columnrange.dataLabels\n */\n pointRange: null,\n /** @ignore-option */\n marker: null,\n states: {\n hover: {\n /** @ignore-option */\n halo: false\n }\n }\n };\n /* *\n *\n * Class\n *\n * */\n /**\n * The ColumnRangeSeries class\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.columnrange\n *\n * @augments Highcharts.Series\n */\n var ColumnRangeSeries = /** @class */ (function (_super) {\n __extends(ColumnRangeSeries, _super);\n function ColumnRangeSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Functions\n *\n * */\n ColumnRangeSeries.prototype.setOptions = function () {\n // #14359 Prevent side-effect from stacking.\n merge(true, arguments[0], { stacking: void 0 });\n return AreaRangeSeries.prototype.setOptions.apply(this, arguments);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Translate data points from raw values x and y to plotX and plotY\n * @private\n */\n ColumnRangeSeries.prototype.translate = function () {\n var _this = this;\n var yAxis = this.yAxis,\n xAxis = this.xAxis,\n startAngleRad = xAxis.startAngleRad,\n chart = this.chart,\n isRadial = this.xAxis.isRadial,\n safeDistance = Math.max(chart.chartWidth,\n chart.chartHeight) + 999;\n var height,\n heightDifference,\n start,\n plotHigh,\n y;\n // eslint-disable-next-line valid-jsdoc\n /**\n * Don't draw too far outside plot area (#6835)\n * @private\n */\n function safeBounds(pixelPos) {\n return clamp(pixelPos, -safeDistance, safeDistance);\n }\n columnProto.translate.apply(this);\n // Set plotLow and plotHigh\n this.points.forEach(function (point) {\n var shapeArgs = point.shapeArgs || {},\n minPointLength = _this.options.minPointLength,\n plotY = point.plotY,\n plotHigh = yAxis.translate(point.high, 0, 1, 0, 1);\n if (isNumber(plotHigh) && isNumber(plotY)) {\n point.plotHigh = safeBounds(plotHigh);\n point.plotLow = safeBounds(plotY);\n // adjust shape\n y = point.plotHigh;\n height = pick(point.rectPlotY, point.plotY) - point.plotHigh;\n // Adjust for minPointLength\n if (Math.abs(height) < minPointLength) {\n heightDifference = (minPointLength - height);\n height += heightDifference;\n y -= heightDifference / 2;\n // Adjust for negative ranges or reversed Y axis (#1457)\n }\n else if (height < 0) {\n height *= -1;\n y -= height;\n }\n if (isRadial && _this.polar) {\n start = point.barX + startAngleRad;\n point.shapeType = 'arc';\n point.shapeArgs = _this.polar.arc(y + height, y, start, start + point.pointWidth);\n }\n else {\n shapeArgs.height = height;\n shapeArgs.y = y;\n var _a = shapeArgs.x,\n x = _a === void 0 ? 0 : _a,\n _b = shapeArgs.width,\n width = _b === void 0 ? 0 : _b;\n point.tooltipPos = chart.inverted ?\n [\n yAxis.len + yAxis.pos - chart.plotLeft - y -\n height / 2,\n xAxis.len + xAxis.pos - chart.plotTop - x -\n width / 2,\n height\n ] : [\n xAxis.left - chart.plotLeft + x + width / 2,\n yAxis.pos - chart.plotTop + y + height / 2,\n height\n ]; // don't inherit from column tooltip position - #3372\n }\n }\n });\n };\n // Overrides from modules that may be loaded after this module\n // @todo move to compositions\n // public crispCol(): BBoxObject {\n // return columnProto.crispCol.apply(this, arguments as any);\n // }\n // public drawPoints(): void {\n // return columnProto.drawPoints.apply(this, arguments as any);\n // }\n // public drawTracker(): void {\n // return columnProto.drawTracker.apply(this, arguments as any);\n // }\n // public getColumnMetrics(): ColumnMetricsObject {\n // return columnProto.getColumnMetrics.apply(this, arguments as any);\n // }\n ColumnRangeSeries.prototype.pointAttribs = function () {\n return columnProto.pointAttribs.apply(this, arguments);\n };\n // public adjustForMissingColumns(): number {\n // return columnProto.adjustForMissingColumns.apply(this, arguments);\n // }\n // public animate(): void {\n // return columnProto.animate.apply(this, arguments as any);\n // }\n ColumnRangeSeries.prototype.translate3dPoints = function () {\n return columnProto.translate3dPoints.apply(this, arguments);\n };\n ColumnRangeSeries.prototype.translate3dShapes = function () {\n return columnProto.translate3dShapes.apply(this, arguments);\n };\n /* *\n *\n * Static Properties\n *\n * */\n ColumnRangeSeries.defaultOptions = merge(ColumnSeries.defaultOptions, AreaRangeSeries.defaultOptions, columnRangeOptions);\n return ColumnRangeSeries;\n }(AreaRangeSeries));\n extend(ColumnRangeSeries.prototype, {\n directTouch: true,\n pointClass: ColumnRangePoint,\n trackerGroups: ['group', 'dataLabelsGroup'],\n adjustForMissingColumns: columnProto.adjustForMissingColumns,\n animate: columnProto.animate,\n crispCol: columnProto.crispCol,\n drawGraph: noop,\n drawPoints: columnProto.drawPoints,\n getSymbol: noop,\n drawTracker: columnProto.drawTracker,\n getColumnMetrics: columnProto.getColumnMetrics\n // pointAttribs: columnProto.pointAttribs,\n // polarArc: columnProto.polarArc\n // translate3dPoints: columnProto.translate3dPoints,\n // translate3dShapes: columnProto.translate3dShapes\n });\n SeriesRegistry.registerSeriesType('columnrange', ColumnRangeSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `columnrange` series. If the [type](#series.columnrange.type)\n * option is not specified, it is inherited from\n * [chart.type](#chart.type).\n *\n * @extends series,plotOptions.columnrange\n * @excluding dataParser, dataURL, stack, stacking\n * @product highcharts highstock\n * @requires highcharts-more\n * @apioption series.columnrange\n */\n /**\n * An array of data points for the series. For the `columnrange` series\n * type, points can be given in the following ways:\n *\n * 1. An array of arrays with 3 or 2 values. In this case, the values correspond\n * to `x,low,high`. If the first value is a string, it is applied as the name\n * of the point, and the `x` value is inferred. The `x` value can also be\n * omitted, in which case the inner arrays should be of length 2\\. Then the\n * `x` value is automatically calculated, either starting at 0 and\n * incremented by 1, or from `pointStart` and `pointInterval` given in the\n * series options.\n * ```js\n * data: [\n * [0, 4, 2],\n * [1, 2, 1],\n * [2, 9, 10]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.columnrange.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * low: 0,\n * high: 4,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * low: 5,\n * high: 3,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<Array<(number|string),number>|Array<(number|string),number,number>|*>}\n * @extends series.arearange.data\n * @excluding marker\n * @product highcharts highstock\n * @apioption series.columnrange.data\n */\n /**\n * @extends series.columnrange.dataLabels\n * @product highcharts highstock\n * @apioption series.columnrange.data.dataLabels\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.columnrange.states.hover\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.columnrange.states.select\n */\n ''; // adds doclets above into transpiled\n\n return ColumnRangeSeries;\n });\n _registerModule(_modules, 'Series/ColumnPyramid/ColumnPyramidSeries.js', [_modules['Series/Column/ColumnSeries.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ColumnSeries, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Sebastian Bochan\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var colProto = ColumnSeries.prototype;\n var clamp = U.clamp,\n extend = U.extend,\n merge = U.merge,\n pick = U.pick;\n /**\n * The ColumnPyramidSeries class\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.columnpyramid\n *\n * @augments Highcharts.Series\n */\n var ColumnPyramidSeries = /** @class */ (function (_super) {\n __extends(ColumnPyramidSeries, _super);\n function ColumnPyramidSeries() {\n /* *\n *\n * Static properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable-next-line valid-jsdoc */\n /**\n * Overrides the column translate method\n * @private\n */\n ColumnPyramidSeries.prototype.translate = function () {\n var series = this,\n chart = series.chart,\n options = series.options,\n dense = series.dense =\n series.closestPointRange * series.xAxis.transA < 2,\n borderWidth = series.borderWidth = pick(options.borderWidth,\n dense ? 0 : 1 // #3635\n ),\n yAxis = series.yAxis,\n threshold = options.threshold,\n translatedThreshold = series.translatedThreshold =\n yAxis.getThreshold(threshold),\n minPointLength = pick(options.minPointLength, 5),\n metrics = series.getColumnMetrics(),\n pointWidth = metrics.width, \n // postprocessed for border width\n seriesBarW = series.barW =\n Math.max(pointWidth, 1 + 2 * borderWidth),\n pointXOffset = series.pointXOffset = metrics.offset;\n if (chart.inverted) {\n translatedThreshold -= 0.5; // #3355\n }\n // When the pointPadding is 0,\n // we want the pyramids to be packed tightly,\n // so we allow individual pyramids to have individual sizes.\n // When pointPadding is greater,\n // we strive for equal-width columns (#2694).\n if (options.pointPadding) {\n seriesBarW = Math.ceil(seriesBarW);\n }\n colProto.translate.apply(series);\n // Record the new values\n series.points.forEach(function (point) {\n var yBottom = pick(point.yBottom,\n translatedThreshold),\n safeDistance = 999 + Math.abs(yBottom),\n plotY = clamp(point.plotY, -safeDistance,\n yAxis.len + safeDistance), \n // Don't draw too far outside plot area\n // (#1303, #2241, #4264)\n barX = point.plotX + pointXOffset,\n barW = seriesBarW / 2,\n barY = Math.min(plotY,\n yBottom),\n barH = Math.max(plotY,\n yBottom) - barY,\n stackTotal,\n stackHeight,\n topPointY,\n topXwidth,\n bottomXwidth,\n invBarPos,\n x1,\n x2,\n x3,\n x4,\n y1,\n y2;\n point.barX = barX;\n point.pointWidth = pointWidth;\n // Fix the tooltip on center of grouped pyramids\n // (#1216, #424, #3648)\n point.tooltipPos = chart.inverted ?\n [\n yAxis.len + yAxis.pos - chart.plotLeft - plotY,\n series.xAxis.len - barX - barW,\n barH\n ] :\n [\n barX + barW,\n plotY + yAxis.pos - chart.plotTop,\n barH\n ];\n stackTotal =\n threshold + (point.total || point.y);\n // overwrite stacktotal (always 100 / -100)\n if (options.stacking === 'percent') {\n stackTotal =\n threshold + (point.y < 0) ?\n -100 :\n 100;\n }\n // get the highest point (if stack, extract from total)\n topPointY = yAxis.toPixels((stackTotal), true);\n // calculate height of stack (in pixels)\n stackHeight =\n chart.plotHeight - topPointY -\n (chart.plotHeight - translatedThreshold);\n // topXwidth and bottomXwidth = width of lines from the center\n // calculated from tanges proportion.\n // Cannot be a NaN #12514\n topXwidth = stackHeight ?\n (barW * (barY - topPointY)) / stackHeight : 0;\n // like topXwidth, but with height of point\n bottomXwidth = stackHeight ?\n (barW * (barY + barH - topPointY)) / stackHeight :\n 0;\n /*\n /\\\n / \\\n x1,y1,------ x2,y1\n / \\\n ----------\n x4,y2 x3,y2\n */\n x1 = barX - topXwidth + barW;\n x2 = barX + topXwidth + barW;\n x3 = barX + bottomXwidth + barW;\n x4 = barX - bottomXwidth + barW;\n y1 = barY - minPointLength;\n y2 = barY + barH;\n if (point.y < 0) {\n y1 = barY;\n y2 = barY + barH + minPointLength;\n }\n // inverted chart\n if (chart.inverted) {\n invBarPos = yAxis.width - barY;\n stackHeight =\n topPointY - (yAxis.width - translatedThreshold);\n // proportion tanges\n topXwidth = (barW *\n (topPointY - invBarPos)) / stackHeight;\n bottomXwidth = (barW *\n (topPointY - (invBarPos - barH))) / stackHeight;\n x1 = barX + barW + topXwidth; // top bottom\n x2 = x1 - 2 * topXwidth; // top top\n x3 = barX - bottomXwidth + barW; // bottom top\n x4 = barX + bottomXwidth + barW; // bottom bottom\n y1 = barY;\n y2 = barY + barH - minPointLength;\n if (point.y < 0) {\n y2 = barY + barH + minPointLength;\n }\n }\n // Register shape type and arguments to be used in drawPoints\n point.shapeType = 'path';\n point.shapeArgs = {\n // args for datalabels positioning\n x: x1,\n y: y1,\n width: x2 - x1,\n height: barH,\n // path of pyramid\n d: [\n ['M', x1, y1],\n ['L', x2, y1],\n ['L', x3, y2],\n ['L', x4, y2],\n ['Z']\n ]\n };\n });\n };\n /**\n * Column pyramid series display one pyramid per value along an X axis.\n * To display horizontal pyramids, set [chart.inverted](#chart.inverted) to\n * `true`.\n *\n * @sample {highcharts|highstock} highcharts/demo/column-pyramid/\n * Column pyramid\n * @sample {highcharts|highstock} highcharts/plotoptions/columnpyramid-stacked/\n * Column pyramid stacked\n * @sample {highcharts|highstock} highcharts/plotoptions/columnpyramid-inverted/\n * Column pyramid inverted\n *\n * @extends plotOptions.column\n * @since 7.0.0\n * @product highcharts highstock\n * @excluding boostThreshold, borderRadius, crisp, depth, edgeColor,\n * edgeWidth, groupZPadding, negativeColor, softThreshold,\n * threshold, zoneAxis, zones, boostBlending\n * @requires highcharts-more\n * @optionparent plotOptions.columnpyramid\n */\n ColumnPyramidSeries.defaultOptions = merge(ColumnSeries.defaultOptions, {\n // Nothing here\n });\n return ColumnPyramidSeries;\n }(ColumnSeries));\n SeriesRegistry.registerSeriesType('columnpyramid', ColumnPyramidSeries);\n /* *\n *\n * Default export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `columnpyramid` series. If the [type](#series.columnpyramid.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.columnpyramid\n * @excluding connectEnds, connectNulls, dashStyle, dataParser, dataURL,\n * gapSize, gapUnit, linecap, lineWidth, marker, step,\n * boostThreshold, boostBlending\n * @product highcharts highstock\n * @requires highcharts-more\n * @apioption series.columnpyramid\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.columnpyramid.states.hover\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.columnpyramid.states.select\n */\n /**\n * An array of data points for the series. For the `columnpyramid` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 6],\n * [1, 2],\n * [2, 6]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The objects are point configuration\n * objects as seen below. If the total number of data points exceeds the\n * series' [turboThreshold](#series.columnpyramid.turboThreshold), this\n * option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @excluding marker\n * @product highcharts highstock\n * @apioption series.columnpyramid.data\n */\n ''; // adds doclets above to transpiled file;\n\n return ColumnPyramidSeries;\n });\n _registerModule(_modules, 'Series/ErrorBar/ErrorBarSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Error bars are a graphical representation of the variability of data and\n * are used on graphs to indicate the error, or uncertainty in a reported\n * measurement.\n *\n * @sample highcharts/demo/error-bar/\n * Error bars on a column series\n * @sample highcharts/series-errorbar/on-scatter/\n * Error bars on a scatter series\n * @sample highcharts/series-errorbar/datalabels/\n * Error bars with data labels\n *\n * @extends plotOptions.boxplot\n * @excluding boostBlending, boostThreshold\n * @product highcharts\n * @requires highcharts-more\n * @optionparent plotOptions.errorbar\n */\n var ErrorBarSeriesDefaults = {\n /**\n * The main color of the bars. This can be overridden by\n * [stemColor](#plotOptions.errorbar.stemColor) and\n * [whiskerColor](#plotOptions.errorbar.whiskerColor) individually.\n *\n * @sample {highcharts} highcharts/plotoptions/error-bar-styling/\n * Error bar styling\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @since 3.0\n * @product highcharts\n */\n color: \"#000000\" /* Palette.neutralColor100 */,\n grouping: false,\n /**\n * The parent series of the error bar. The default value links it to\n * the previous series. Otherwise,\n use the id of the parent series.\n *\n * @since 3.0\n * @product highcharts\n */\n linkedTo: ':previous',\n tooltip: {\n pointFormat: '<span style=\"color:{point.color}\">\\u25CF</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'\n },\n /**\n * The line width of the whiskers,\n the horizontal lines marking\n * low and high values. When `null`,\n the general\n * [lineWidth](#plotOptions.errorbar.lineWidth) applies.\n *\n * @sample {highcharts} highcharts/plotoptions/error-bar-styling/\n * Error bar styling\n *\n * @type {number}\n * @since 3.0\n * @product highcharts\n */\n whiskerWidth: null\n };\n /**\n * A `errorbar` series. If the [type](#series.errorbar.type) option\n * is not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.errorbar\n * @excluding dataParser, dataURL, stack, stacking, boostThreshold,\n * boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @apioption series.errorbar\n */\n /**\n * An array of data points for the series. For the `errorbar` series\n * type, points can be given in the following ways:\n *\n * 1. An array of arrays with 3 or 2 values. In this case, the values correspond\n * to `x,low,high`. If the first value is a string, it is applied as the name\n * of the point, and the `x` value is inferred. The `x` value can also be\n * omitted, in which case the inner arrays should be of length 2\\. Then the\n * `x` value is automatically calculated, either starting at 0 and\n * incremented by 1, or from `pointStart` and `pointInterval` given in the\n * series options.\n * ```js\n * data: [\n * [0, 10, 2],\n * [1, 1, 8],\n * [2, 4, 5]\n * ]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.errorbar.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * low: 0,\n * high: 0,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * low: 5,\n * high: 5,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<Array<(number|string),number>|Array<(number|string),number,number>|*>}\n * @extends series.arearange.data\n * @excluding dataLabels, drilldown, marker, states\n * @product highcharts\n * @apioption series.errorbar.data\n */\n ''; // adds doclets above to transpiled file\n /* *\n *\n * Default Export\n *\n * */\n\n return ErrorBarSeriesDefaults;\n });\n _registerModule(_modules, 'Series/ErrorBar/ErrorBarSeries.js', [_modules['Series/BoxPlot/BoxPlotSeries.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Series/ErrorBar/ErrorBarSeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (BoxPlotSeries, ColumnSeries, ErrorBarSeriesDefaults, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var AreaRangeSeries = SeriesRegistry.seriesTypes.arearange;\n var addEvent = U.addEvent,\n merge = U.merge,\n extend = U.extend;\n /* *\n *\n * Class\n *\n * */\n /**\n * Errorbar series type\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.errorbar\n *\n * @augments Highcharts.Series\n *\n */\n var ErrorBarSeries = /** @class */ (function (_super) {\n __extends(ErrorBarSeries, _super);\n function ErrorBarSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n ErrorBarSeries.prototype.getColumnMetrics = function () {\n // Get the width and X offset, either on top of the linked series\n // column or standalone\n return ((this.linkedParent && this.linkedParent.columnMetrics) ||\n ColumnSeries.prototype.getColumnMetrics.call(this));\n };\n ErrorBarSeries.prototype.drawDataLabels = function () {\n var valKey = this.pointValKey;\n if (AreaRangeSeries) {\n AreaRangeSeries.prototype.drawDataLabels.call(this);\n // Arearange drawDataLabels does not reset point.y to high,\n // but to low after drawing (#4133)\n this.data.forEach(function (point) {\n point.y = point[valKey];\n });\n }\n };\n ErrorBarSeries.prototype.toYData = function (point) {\n // return a plain array for speedy calculation\n return [point.low, point.high];\n };\n ErrorBarSeries.defaultOptions = merge(BoxPlotSeries.defaultOptions, ErrorBarSeriesDefaults);\n return ErrorBarSeries;\n }(BoxPlotSeries));\n addEvent(ErrorBarSeries, 'afterTranslate', function () {\n this.points.forEach(function (point) {\n point.plotLow = point.plotY;\n });\n }, { order: 0 });\n extend(ErrorBarSeries.prototype, {\n // pointClass: ErrorBarPoint, // just a declaration\n pointArrayMap: ['low', 'high'],\n pointValKey: 'high',\n doQuartiles: false\n });\n SeriesRegistry.registerSeriesType('errorbar', ErrorBarSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return ErrorBarSeries;\n });\n _registerModule(_modules, 'Series/Gauge/GaugePoint.js', [_modules['Core/Series/SeriesRegistry.js']], function (SeriesRegistry) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var Point = SeriesRegistry.series.prototype.pointClass;\n /* *\n *\n * Class\n *\n * */\n var GaugePoint = /** @class */ (function (_super) {\n __extends(GaugePoint, _super);\n function GaugePoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.options = void 0;\n _this.series = void 0;\n _this.shapeArgs = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Don't do any hover colors or anything\n * @private\n */\n GaugePoint.prototype.setState = function (state) {\n this.state = state;\n };\n return GaugePoint;\n }(Point));\n /* *\n *\n * Default Export\n *\n * */\n\n return GaugePoint;\n });\n _registerModule(_modules, 'Series/Gauge/GaugeSeries.js', [_modules['Series/Gauge/GaugePoint.js'], _modules['Core/Globals.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (GaugePoint, H, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var noop = H.noop;\n var Series = SeriesRegistry.series,\n ColumnSeries = SeriesRegistry.seriesTypes.column;\n var clamp = U.clamp,\n isNumber = U.isNumber,\n extend = U.extend,\n merge = U.merge,\n pick = U.pick,\n pInt = U.pInt;\n /* *\n *\n * Class\n *\n * */\n /**\n *\n * The `gauge` series type\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.map\n *\n * @augments Highcharts.Series\n */\n var GaugeSeries = /** @class */ (function (_super) {\n __extends(GaugeSeries, _super);\n function GaugeSeries() {\n /* *\n *\n * Static properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.points = void 0;\n _this.options = void 0;\n _this.yAxis = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Calculate paths etc\n * @private\n */\n GaugeSeries.prototype.translate = function () {\n var series = this,\n yAxis = series.yAxis,\n options = series.options,\n center = yAxis.center;\n series.generatePoints();\n series.points.forEach(function (point) {\n var dialOptions = merge(options.dial,\n point.dial),\n radius = (pInt(dialOptions.radius) * center[2]) / 200,\n baseLength = (pInt(dialOptions.baseLength) * radius) / 100,\n rearLength = (pInt(dialOptions.rearLength) * radius) / 100,\n baseWidth = dialOptions.baseWidth,\n topWidth = dialOptions.topWidth;\n var overshoot = options.overshoot,\n rotation = yAxis.startAngleRad + yAxis.translate(point.y,\n void 0,\n void 0,\n void 0,\n true);\n // Handle the wrap and overshoot options\n if (isNumber(overshoot) || options.wrap === false) {\n overshoot = isNumber(overshoot) ?\n (overshoot / 180 * Math.PI) : 0;\n rotation = clamp(rotation, yAxis.startAngleRad - overshoot, yAxis.endAngleRad + overshoot);\n }\n rotation = rotation * 180 / Math.PI;\n point.shapeType = 'path';\n var d = dialOptions.path || [\n ['M', -rearLength, -baseWidth / 2],\n ['L',\n baseLength, -baseWidth / 2],\n ['L',\n radius, -topWidth / 2],\n ['L',\n radius,\n topWidth / 2],\n ['L',\n baseLength,\n baseWidth / 2],\n ['L', -rearLength,\n baseWidth / 2],\n ['Z']\n ];\n point.shapeArgs = {\n d: d,\n translateX: center[0],\n translateY: center[1],\n rotation: rotation\n };\n // Positions for data label\n point.plotX = center[0];\n point.plotY = center[1];\n });\n };\n /**\n * Draw the points where each point is one needle\n * @private\n */\n GaugeSeries.prototype.drawPoints = function () {\n var series = this,\n chart = series.chart,\n center = series.yAxis.center,\n pivot = series.pivot,\n options = series.options,\n pivotOptions = options.pivot,\n renderer = chart.renderer;\n series.points.forEach(function (point) {\n var graphic = point.graphic,\n shapeArgs = point.shapeArgs,\n d = shapeArgs.d,\n dialOptions = merge(options.dial,\n point.dial); // #1233\n if (graphic) {\n graphic.animate(shapeArgs);\n shapeArgs.d = d; // animate alters it\n }\n else {\n point.graphic =\n renderer[point.shapeType](shapeArgs)\n .attr({\n // required by VML when animation is false\n rotation: shapeArgs.rotation,\n zIndex: 1\n })\n .addClass('highcharts-dial')\n .add(series.group);\n }\n // Presentational attributes\n if (!chart.styledMode) {\n point.graphic[graphic ? 'animate' : 'attr']({\n stroke: dialOptions.borderColor,\n 'stroke-width': dialOptions.borderWidth,\n fill: dialOptions.backgroundColor\n });\n }\n });\n // Add or move the pivot\n if (pivot) {\n pivot.animate({\n translateX: center[0],\n translateY: center[1]\n });\n }\n else if (pivotOptions) {\n series.pivot =\n renderer.circle(0, 0, pivotOptions.radius)\n .attr({\n zIndex: 2\n })\n .addClass('highcharts-pivot')\n .translate(center[0], center[1])\n .add(series.group);\n // Presentational attributes\n if (!chart.styledMode) {\n series.pivot.attr({\n fill: pivotOptions.backgroundColor,\n stroke: pivotOptions.borderColor,\n 'stroke-width': pivotOptions.borderWidth\n });\n }\n }\n };\n /**\n * Animate the arrow up from startAngle\n * @private\n */\n GaugeSeries.prototype.animate = function (init) {\n var series = this;\n if (!init) {\n series.points.forEach(function (point) {\n var graphic = point.graphic;\n if (graphic) {\n // start value\n graphic.attr({\n rotation: series.yAxis.startAngleRad * 180 / Math.PI\n });\n // animate\n graphic.animate({\n rotation: point.shapeArgs.rotation\n }, series.options.animation);\n }\n });\n }\n };\n /**\n * @private\n */\n GaugeSeries.prototype.render = function () {\n this.group = this.plotGroup('group', 'series', this.visible ? 'inherit' : 'hidden', this.options.zIndex, this.chart.seriesGroup);\n Series.prototype.render.call(this);\n this.group.clip(this.chart.clipRect);\n };\n /**\n * Extend the basic setData method by running processData and generatePoints\n * immediately, in order to access the points from the legend.\n * @private\n */\n GaugeSeries.prototype.setData = function (data, redraw) {\n Series.prototype.setData.call(this, data, false);\n this.processData();\n this.generatePoints();\n if (pick(redraw, true)) {\n this.chart.redraw();\n }\n };\n /**\n * Define hasData function for non-cartesian series.\n * Returns true if the series has points at all.\n * @private\n */\n GaugeSeries.prototype.hasData = function () {\n return !!this.points.length; // != 0\n };\n /**\n * Gauges are circular plots displaying one or more values with a dial\n * pointing to values along the perimeter.\n *\n * @sample highcharts/demo/gauge-speedometer/\n * Gauge chart\n *\n * @extends plotOptions.line\n * @excluding animationLimit, boostThreshold, colorAxis, colorKey,\n * connectEnds, connectNulls, cropThreshold, dashStyle,\n * dragDrop, findNearestPointBy, getExtremesFromAll, marker,\n * negativeColor, pointPlacement, shadow, softThreshold,\n * stacking, states, step, threshold, turboThreshold, xAxis,\n * zoneAxis, zones, dataSorting, boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @optionparent plotOptions.gauge\n */\n GaugeSeries.defaultOptions = merge(Series.defaultOptions, {\n /**\n * When this option is `true`, the dial will wrap around the axes.\n * For instance, in a full-range gauge going from 0 to 360, a value\n * of 400 will point to 40\\. When `wrap` is `false`, the dial stops\n * at 360.\n *\n * @see [overshoot](#plotOptions.gauge.overshoot)\n *\n * @type {boolean}\n * @default true\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.gauge.wrap\n */\n /**\n * Data labels for the gauge. For gauges, the data labels are\n * enabled by default and shown in a bordered box below the point.\n *\n * @since 2.3.0\n * @product highcharts\n */\n dataLabels: {\n borderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n borderRadius: 3,\n borderWidth: 1,\n crop: false,\n defer: false,\n enabled: true,\n verticalAlign: 'top',\n y: 15,\n zIndex: 2\n },\n /**\n * Options for the dial or arrow pointer of the gauge.\n *\n * In styled mode, the dial is styled with the\n * `.highcharts-gauge-series .highcharts-dial` rule.\n *\n * @sample {highcharts} highcharts/css/gauge/\n * Styled mode\n *\n * @type {*}\n * @since 2.3.0\n * @product highcharts\n */\n dial: {\n /**\n * The background or fill color of the gauge's dial.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.backgroundColor\n */\n backgroundColor: \"#000000\" /* Palette.neutralColor100 */,\n /**\n * The length of the dial's base part, relative to the total\n * radius or length of the dial.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {string}\n * @default 70%\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.baseLength\n */\n baseLength: '70%',\n /**\n * The pixel width of the base of the gauge dial. The base is\n * the part closest to the pivot, defined by baseLength.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {number}\n * @default 3\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.baseWidth\n */\n baseWidth: 3,\n /**\n * The border color or stroke of the gauge's dial. By default,\n * the borderWidth is 0, so this must be set in addition to a\n * custom border color.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.borderColor\n */\n borderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The width of the gauge dial border in pixels.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {number}\n * @default 0\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.borderWidth\n */\n borderWidth: 0,\n /**\n * An array with an SVG path for the custom dial.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-path/\n * Dial options demonstrated\n *\n * @type {Highcharts.SVGPathArray}\n * @since 10.2.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.path\n */\n /**\n * The radius or length of the dial, in percentages relative to\n * the radius of the gauge itself.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {string}\n * @default 80%\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.radius\n */\n radius: '80%',\n /**\n * The length of the dial's rear end, the part that extends out\n * on the other side of the pivot. Relative to the dial's\n * length.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {string}\n * @default 10%\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.rearLength\n */\n rearLength: '10%',\n /**\n * The width of the top of the dial, closest to the perimeter.\n * The pivot narrows in from the base to the top.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-dial/\n * Dial options demonstrated\n *\n * @type {number}\n * @default 1\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.dial.topWidth\n */\n topWidth: 1\n },\n /**\n * Allow the dial to overshoot the end of the perimeter axis by\n * this many degrees. Say if the gauge axis goes from 0 to 60, a\n * value of 100, or 1000, will show 5 degrees beyond the end of the\n * axis when this option is set to 5.\n *\n * @see [wrap](#plotOptions.gauge.wrap)\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-overshoot/\n * Allow 5 degrees overshoot\n *\n * @type {number}\n * @since 3.0.10\n * @product highcharts\n * @apioption plotOptions.gauge.overshoot\n */\n /**\n * Options for the pivot or the center point of the gauge.\n *\n * In styled mode, the pivot is styled with the\n * `.highcharts-gauge-series .highcharts-pivot` rule.\n *\n * @sample {highcharts} highcharts/css/gauge/\n * Styled mode\n *\n * @type {*}\n * @since 2.3.0\n * @product highcharts\n */\n pivot: {\n /**\n * The pixel radius of the pivot.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-pivot/\n * Pivot options demonstrated\n *\n * @type {number}\n * @default 5\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.pivot.radius\n */\n radius: 5,\n /**\n * The border or stroke width of the pivot.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-pivot/\n * Pivot options demonstrated\n *\n * @type {number}\n * @default 0\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.pivot.borderWidth\n */\n borderWidth: 0,\n /**\n * The border or stroke color of the pivot. In able to change\n * this, the borderWidth must also be set to something other\n * than the default 0.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-pivot/\n * Pivot options demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.pivot.borderColor\n */\n borderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The background color or fill of the pivot.\n *\n * @sample {highcharts} highcharts/plotoptions/gauge-pivot/\n * Pivot options demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.gauge.pivot.backgroundColor\n */\n backgroundColor: \"#000000\" /* Palette.neutralColor100 */\n },\n tooltip: {\n headerFormat: ''\n },\n /**\n * Whether to display this particular series or series type in the\n * legend. Defaults to false for gauge series.\n *\n * @since 2.3.0\n * @product highcharts\n */\n showInLegend: false\n // Prototype members\n });\n return GaugeSeries;\n }(Series));\n extend(GaugeSeries.prototype, {\n // chart.angular will be set to true when a gauge series is present,\n // and this will be used on the axes\n angular: true,\n directTouch: true,\n drawGraph: noop,\n drawTracker: ColumnSeries.prototype.drawTracker,\n fixedBox: true,\n forceDL: true,\n noSharedTooltip: true,\n pointClass: GaugePoint,\n trackerGroups: ['group', 'dataLabelsGroup']\n });\n SeriesRegistry.registerSeriesType('gauge', GaugeSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API options\n *\n * */\n /**\n * A `gauge` series. If the [type](#series.gauge.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.gauge\n * @excluding animationLimit, boostThreshold, connectEnds, connectNulls,\n * cropThreshold, dashStyle, dataParser, dataURL, findNearestPointBy,\n * getExtremesFromAll, marker, negativeColor, pointPlacement, shadow,\n * softThreshold, stack, stacking, states, step, threshold,\n * turboThreshold, zoneAxis, zones, dataSorting, boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @apioption series.gauge\n */\n /**\n * An array of data points for the series. For the `gauge` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.gauge.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * y: 6,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * y: 8,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * The typical gauge only contains a single data value.\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|null|*>}\n * @extends series.line.data\n * @excluding drilldown, marker, x\n * @product highcharts\n * @apioption series.gauge.data\n */\n ''; // adds the doclets above in the transpiled file\n\n return GaugeSeries;\n });\n _registerModule(_modules, 'Series/DragNodesComposition.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * Networkgraph series\n *\n * (c) 2010-2021 Paweł Fus\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent;\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function compose(ChartClass) {\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n addEvent(ChartClass, 'load', onChartLoad);\n }\n }\n /**\n * Draggable mode:\n * @private\n */\n function onChartLoad() {\n var chart = this;\n var mousedownUnbinder,\n mousemoveUnbinder,\n mouseupUnbinder;\n if (chart.container) {\n mousedownUnbinder = addEvent(chart.container, 'mousedown', function (event) {\n var point = chart.hoverPoint;\n if (point &&\n point.series &&\n point.series.hasDraggableNodes &&\n point.series.options.draggable) {\n point.series.onMouseDown(point, event);\n mousemoveUnbinder = addEvent(chart.container, 'mousemove', function (e) { return (point &&\n point.series &&\n point.series.onMouseMove(point, e)); });\n mouseupUnbinder = addEvent(chart.container.ownerDocument, 'mouseup', function (e) {\n mousemoveUnbinder();\n mouseupUnbinder();\n return point &&\n point.series &&\n point.series.onMouseUp(point, e);\n });\n }\n });\n }\n addEvent(chart, 'destroy', function () {\n mousedownUnbinder();\n });\n }\n /**\n * Mouse down action, initializing drag&drop mode.\n *\n * @private\n * @param {Highcharts.Point} point\n * The point that event occured.\n * @param {Highcharts.PointerEventObject} event\n * Browser event, before normalization.\n */\n function onMouseDown(point, event) {\n var normalizedEvent = this.chart.pointer.normalize(event);\n point.fixedPosition = {\n chartX: normalizedEvent.chartX,\n chartY: normalizedEvent.chartY,\n plotX: point.plotX,\n plotY: point.plotY\n };\n point.inDragMode = true;\n }\n /**\n * Mouse move action during drag&drop.\n *\n * @private\n *\n * @param {global.Event} event\n * Browser event, before normalization.\n * @param {Highcharts.Point} point\n * The point that event occured.\n *\n */\n function onMouseMove(point, event) {\n if (point.fixedPosition && point.inDragMode) {\n var series = this,\n chart = series.chart,\n normalizedEvent = chart.pointer.normalize(event),\n diffX = point.fixedPosition.chartX - normalizedEvent.chartX,\n diffY = point.fixedPosition.chartY - normalizedEvent.chartY,\n graphLayoutsLookup = chart.graphLayoutsLookup;\n var newPlotX = void 0,\n newPlotY = void 0;\n // At least 5px to apply change (avoids simple click):\n if (Math.abs(diffX) > 5 || Math.abs(diffY) > 5) {\n newPlotX = point.fixedPosition.plotX - diffX;\n newPlotY = point.fixedPosition.plotY - diffY;\n if (chart.isInsidePlot(newPlotX, newPlotY)) {\n point.plotX = newPlotX;\n point.plotY = newPlotY;\n point.hasDragged = true;\n this.redrawHalo(point);\n graphLayoutsLookup.forEach(function (layout) {\n layout.restartSimulation();\n });\n }\n }\n }\n }\n /**\n * Mouse up action, finalizing drag&drop.\n *\n * @private\n * @param {Highcharts.Point} point\n * The point that event occured.\n */\n function onMouseUp(point, _event) {\n if (point.fixedPosition) {\n if (point.hasDragged) {\n if (this.layout.enableSimulation) {\n this.layout.start();\n }\n else {\n this.chart.redraw();\n }\n }\n point.inDragMode = point.hasDragged = false;\n if (!this.options.fixedDraggable) {\n delete point.fixedPosition;\n }\n }\n }\n /**\n * Redraw halo on mousemove during the drag&drop action.\n *\n * @private\n * @param {Highcharts.Point} point\n * The point that should show halo.\n */\n function redrawHalo(point) {\n if (point && this.halo) {\n this.halo.attr({\n d: point.haloPath(this.options.states.hover.halo.size)\n });\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n var DragNodesComposition = {\n compose: compose,\n onMouseDown: onMouseDown,\n onMouseMove: onMouseMove,\n onMouseUp: onMouseUp,\n redrawHalo: redrawHalo\n };\n\n return DragNodesComposition;\n });\n _registerModule(_modules, 'Series/GraphLayoutComposition.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Utilities.js']], function (A, U) {\n /* *\n *\n * Networkgraph series\n *\n * (c) 2010-2021 Paweł Fus\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var setAnimation = A.setAnimation;\n var addEvent = U.addEvent;\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n var integrations = {};\n var layouts = {};\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function compose(ChartClass) {\n if (composedClasses.indexOf(ChartClass)) {\n composedClasses.push(ChartClass);\n addEvent(ChartClass, 'afterPrint', onChartAfterPrint);\n addEvent(ChartClass, 'beforePrint', onChartBeforePrint);\n addEvent(ChartClass, 'predraw', onChartPredraw);\n addEvent(ChartClass, 'render', onChartRender);\n }\n }\n /**\n * Re-enable simulation after print.\n * @private\n */\n function onChartAfterPrint() {\n if (this.graphLayoutsLookup) {\n this.graphLayoutsLookup.forEach(function (layout) {\n // return to default simulation\n layout.updateSimulation();\n });\n this.redraw();\n }\n }\n /**\n * Disable simulation before print if enabled.\n * @private\n */\n function onChartBeforePrint() {\n if (this.graphLayoutsLookup) {\n this.graphLayoutsLookup.forEach(function (layout) {\n layout.updateSimulation(false);\n });\n this.redraw();\n }\n }\n /**\n * Clear previous layouts.\n * @private\n */\n function onChartPredraw() {\n if (this.graphLayoutsLookup) {\n this.graphLayoutsLookup.forEach(function (layout) {\n layout.stop();\n });\n }\n }\n /**\n * @private\n */\n function onChartRender() {\n var systemsStable,\n afterRender = false;\n var layoutStep = function (layout) {\n if (layout.maxIterations-- &&\n isFinite(layout.temperature) &&\n !layout.isStable() &&\n !layout.enableSimulation) {\n // Hook similar to build-in addEvent, but instead of\n // creating whole events logic, use just a function.\n // It's faster which is important for rAF code.\n // Used e.g. in packed-bubble series for bubble radius\n // calculations\n if (layout.beforeStep) {\n layout.beforeStep();\n }\n layout.step();\n systemsStable = false;\n afterRender = true;\n }\n };\n if (this.graphLayoutsLookup) {\n setAnimation(false, this);\n // Start simulation\n this.graphLayoutsLookup.forEach(function (layout) { return layout.start(); });\n // Just one sync step, to run different layouts similar to\n // async mode.\n while (!systemsStable) {\n systemsStable = true;\n this.graphLayoutsLookup.forEach(layoutStep);\n }\n if (afterRender) {\n this.series.forEach(function (series) {\n if (series && series.layout) {\n series.render();\n }\n });\n }\n }\n }\n /* *\n *\n * Default Export\n *\n * */\n var GraphLayoutComposition = {\n compose: compose,\n integrations: integrations,\n layouts: layouts\n };\n\n return GraphLayoutComposition;\n });\n _registerModule(_modules, 'Series/PackedBubble/PackedBubblePoint.js', [_modules['Core/Chart/Chart.js'], _modules['Core/Series/Point.js'], _modules['Core/Series/SeriesRegistry.js']], function (Chart, Point, SeriesRegistry) {\n /* *\n *\n * (c) 2010-2021 Grzegorz Blachlinski, Sebastian Bochan\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var BubblePoint = SeriesRegistry.seriesTypes.bubble.prototype.pointClass;\n /* *\n *\n * Class\n *\n * */\n var PackedBubblePoint = /** @class */ (function (_super) {\n __extends(PackedBubblePoint, _super);\n function PackedBubblePoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.degree = NaN;\n _this.mass = NaN;\n _this.radius = NaN;\n _this.options = void 0;\n _this.series = void 0;\n _this.value = null;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Destroy point.\n * Then remove point from the layout.\n * @private\n */\n PackedBubblePoint.prototype.destroy = function () {\n if (this.series.layout) {\n this.series.layout.removeElementFromCollection(this, this.series.layout.nodes);\n }\n return Point.prototype.destroy.apply(this, arguments);\n };\n PackedBubblePoint.prototype.firePointEvent = function () {\n var point = this,\n series = this.series,\n seriesOptions = series.options;\n if (this.isParentNode && seriesOptions.parentNode) {\n var temp = seriesOptions.allowPointSelect;\n seriesOptions.allowPointSelect = (seriesOptions.parentNode.allowPointSelect);\n Point.prototype.firePointEvent.apply(this, arguments);\n seriesOptions.allowPointSelect = temp;\n }\n else {\n Point.prototype.firePointEvent.apply(this, arguments);\n }\n };\n PackedBubblePoint.prototype.select = function () {\n var point = this,\n series = this.series,\n chart = series.chart;\n if (point.isParentNode) {\n chart.getSelectedPoints = chart.getSelectedParentNodes;\n Point.prototype.select.apply(this, arguments);\n chart.getSelectedPoints = Chart.prototype.getSelectedPoints;\n }\n else {\n Point.prototype.select.apply(this, arguments);\n }\n };\n return PackedBubblePoint;\n }(BubblePoint));\n /* *\n *\n * Default Export\n *\n * */\n\n return PackedBubblePoint;\n });\n _registerModule(_modules, 'Series/PackedBubble/PackedBubbleSeriesDefaults.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * Imports\n *\n * */\n var isNumber = U.isNumber;\n /* *\n *\n * Constants\n *\n * */\n /**\n * A packed bubble series is a two dimensional series type, where each point\n * renders a value in X, Y position. Each point is drawn as a bubble\n * where the bubbles don't overlap with each other and the radius\n * of the bubble relates to the value.\n *\n * @sample highcharts/demo/packed-bubble/\n * Packed bubble chart\n * @sample highcharts/demo/packed-bubble-split/\n * Split packed bubble chart\n *\n * @extends plotOptions.bubble\n * @excluding connectEnds, connectNulls, cropThreshold, dragDrop, jitter,\n * keys, pointPlacement, sizeByAbsoluteValue, step, xAxis,\n * yAxis, zMax, zMin, dataSorting, boostThreshold,\n * boostBlending\n * @product highcharts\n * @since 7.0.0\n * @requires highcharts-more\n * @optionparent plotOptions.packedbubble\n *\n * @private\n */\n var PackedBubbleSeriesDefaults = {\n /**\n * Minimum bubble size. Bubbles will automatically size between the\n * `minSize` and `maxSize` to reflect the value of each bubble.\n * Can be either pixels (when no unit is given),\n or a percentage of\n * the smallest one of the plot width and height,\n divided by the square\n * root of total number of points.\n *\n * @sample highcharts/plotoptions/bubble-size/\n * Bubble size\n *\n * @type {number|string}\n *\n * @private\n */\n minSize: '10%',\n /**\n * Maximum bubble size. Bubbles will automatically size between the\n * `minSize` and `maxSize` to reflect the value of each bubble.\n * Can be either pixels (when no unit is given),\n or a percentage of\n * the smallest one of the plot width and height,\n divided by the square\n * root of total number of points.\n *\n * @sample highcharts/plotoptions/bubble-size/\n * Bubble size\n *\n * @type {number|string}\n *\n * @private\n */\n maxSize: '50%',\n sizeBy: 'area',\n zoneAxis: 'y',\n crisp: false,\n tooltip: {\n pointFormat: 'Value: {point.value}'\n },\n /**\n * Flag to determine if nodes are draggable or not. Available for\n * graph with useSimulation set to true only.\n *\n * @since 7.1.0\n *\n * @private\n */\n draggable: true,\n /**\n * An option is giving a possibility to choose between using simulation\n * for calculating bubble positions. These reflects in both animation\n * and final position of bubbles. Simulation is also adding options to\n * the series graph based on used layout. In case of big data sets,\n with\n * any performance issues,\n it is possible to disable animation and pack\n * bubble in a simple circular way.\n *\n * @sample highcharts/series-packedbubble/spiral/\n * useSimulation set to false\n *\n * @since 7.1.0\n *\n * @private\n */\n useSimulation: true,\n /**\n * Series options for parent nodes.\n *\n * @since 8.1.1\n *\n * @private\n */\n parentNode: {\n /**\n * Allow this series' parent nodes to be selected\n * by clicking on the graph.\n *\n * @since 8.1.1\n */\n allowPointSelect: false\n },\n /**\n /**\n *\n * @declare Highcharts.SeriesPackedBubbleDataLabelsOptionsObject\n *\n * @private\n */\n dataLabels: {\n /**\n * The\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * specifying what to show for _node_ in the networkgraph. In v7.0\n * defaults to `{key}`,\n since v7.1 defaults to `undefined` and\n * `formatter` is used instead.\n *\n * @type {string}\n * @since 7.0.0\n * @apioption plotOptions.packedbubble.dataLabels.format\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Callback JavaScript function to format the data label for a node.\n * Note that if a `format` is defined,\n the format takes precedence\n * and the formatter is ignored.\n *\n * @type {Highcharts.SeriesPackedBubbleDataLabelsFormatterCallbackFunction}\n * @since 7.0.0\n */\n formatter: function () {\n var numberFormatter = this.series.chart.numberFormatter;\n var value = this.point.value;\n return isNumber(value) ? numberFormatter(value, -1) : '';\n },\n /**\n * @type {string}\n * @since 7.1.0\n * @apioption plotOptions.packedbubble.dataLabels.parentNodeFormat\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * @type {Highcharts.SeriesPackedBubbleDataLabelsFormatterCallbackFunction}\n * @since 7.1.0\n */\n parentNodeFormatter: function () {\n return this.name;\n },\n /**\n * @sample {highcharts} highcharts/series-packedbubble/packed-dashboard\n * Dashboard with dataLabels on parentNodes\n *\n * @declare Highcharts.SeriesPackedBubbleDataLabelsTextPathOptionsObject\n * @since 7.1.0\n */\n parentNodeTextPath: {\n /**\n * Presentation attributes for the text path.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 7.1.0\n * @apioption plotOptions.packedbubble.dataLabels.attributes\n */\n /**\n * Enable or disable `textPath` option for link's or marker's\n * data labels.\n *\n * @since 7.1.0\n */\n enabled: true\n },\n /**\n * Options for a _node_ label text which should follow marker's\n * shape.\n *\n * **Note:** Only SVG-based renderer supports this option.\n *\n * @extends plotOptions.series.dataLabels.textPath\n * @apioption plotOptions.packedbubble.dataLabels.textPath\n */\n padding: 0,\n style: {\n transition: 'opacity 2000ms'\n }\n },\n /**\n * Options for layout algorithm when simulation is enabled. Inside there\n * are options to change the speed, padding, initial bubbles positions\n * and more.\n *\n * @extends plotOptions.networkgraph.layoutAlgorithm\n * @excluding approximation, attractiveForce, repulsiveForce, theta\n * @since 7.1.0\n *\n * @private\n */\n layoutAlgorithm: {\n /**\n * Initial layout algorithm for positioning nodes. Can be one of\n * the built-in options (\"circle\", \"random\") or a function where\n * positions should be set on each node (`this.nodes`) as\n * `node.plotX` and `node.plotY`.\n *\n * @sample highcharts/series-networkgraph/initial-positions/\n * Initial positions with callback\n *\n * @type {\"circle\"|\"random\"|Function}\n */\n initialPositions: 'circle',\n /**\n * @sample highcharts/series-packedbubble/initial-radius/\n * Initial radius set to 200\n *\n * @extends plotOptions.networkgraph.layoutAlgorithm.initialPositionRadius\n * @excluding states\n */\n initialPositionRadius: 20,\n /**\n * The distance between two bubbles, when the algorithm starts to\n * treat two bubbles as overlapping. The `bubblePadding` is also the\n * expected distance between all the bubbles on simulation end.\n */\n bubblePadding: 5,\n /**\n * Whether bubbles should interact with their parentNode to keep\n * them inside.\n */\n parentNodeLimit: false,\n /**\n * Whether series should interact with each other or not. When\n * `parentNodeLimit` is set to true, thi option should be set to\n * false to avoid sticking points in wrong series parentNode.\n */\n seriesInteraction: true,\n /**\n * In case of split series, this option allows user to drag and\n * drop points between series, for changing point related series.\n *\n * @sample highcharts/series-packedbubble/packed-dashboard/\n * Example of drag'n drop bubbles for bubble kanban\n */\n dragBetweenSeries: false,\n /**\n * Layout algorithm options for parent nodes.\n *\n * @extends plotOptions.networkgraph.layoutAlgorithm\n * @excluding approximation, attractiveForce, enableSimulation,\n * repulsiveForce, theta\n */\n parentNodeOptions: {\n maxIterations: 400,\n gravitationalConstant: 0.03,\n maxSpeed: 50,\n initialPositionRadius: 100,\n seriesInteraction: true,\n /**\n * Styling options for parentNodes markers. Similar to\n * line.marker options.\n *\n * @sample highcharts/series-packedbubble/parentnode-style/\n * Bubble size\n *\n * @extends plotOptions.series.marker\n * @excluding states\n */\n marker: {\n fillColor: null,\n fillOpacity: 1,\n lineWidth: null,\n lineColor: null,\n symbol: 'circle'\n }\n },\n enableSimulation: true,\n /**\n * Type of the algorithm used when positioning bubbles.\n * @ignore-option\n */\n type: 'packedbubble',\n /**\n * Integration type. Integration determines how forces are applied\n * on particles. The `packedbubble` integration is based on\n * the networkgraph `verlet` integration, where the new position\n * is based on a previous position without velocity:\n * `newPosition += previousPosition - newPosition`.\n *\n * @sample highcharts/series-networkgraph/forces/\n *\n * @ignore-option\n */\n integration: 'packedbubble',\n maxIterations: 1000,\n /**\n * Whether to split series into individual groups or to mix all\n * series together.\n *\n * @since 7.1.0\n * @default false\n */\n splitSeries: false,\n /**\n * Max speed that node can get in one iteration. In terms of\n * simulation, it's a maximum translation (in pixels) that a node\n * can move (in both, x and y, dimensions). While `friction` is\n * applied on all nodes, max speed is applied only for nodes that\n * move very fast, for example small or disconnected ones.\n *\n * @see [layoutAlgorithm.integration](#series.networkgraph.layoutAlgorithm.integration)\n *\n * @see [layoutAlgorithm.friction](#series.networkgraph.layoutAlgorithm.friction)\n */\n maxSpeed: 5,\n gravitationalConstant: 0.01,\n friction: -0.981\n }\n };\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `packedbubble` series. If the [type](#series.packedbubble.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @type {Object}\n * @extends series,plotOptions.packedbubble\n * @excluding cropThreshold, dataParser, dataSorting, dataURL, dragDrop, stack,\n * boostThreshold, boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @apioption series.packedbubble\n */\n /**\n * An array of data points for the series. For the `packedbubble` series type,\n * points can be given in the following ways:\n *\n * 1. An array of `values`.\n *\n * ```js\n * data: [5, 1, 20]\n * ```\n *\n * 2. An array of objects with named values. The objects are point\n * configuration objects as seen below. If the total number of data points\n * exceeds the series' [turboThreshold](#series.packedbubble.turboThreshold),\n * this option is not available.\n *\n * ```js\n * data: [{\n * value: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * value: 5,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @type {Array<Object|Array>}\n * @extends series.line.data\n * @excluding marker, x, y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n * @product highcharts\n * @apioption series.packedbubble.data\n */\n /**\n * @type {Highcharts.SeriesPackedBubbleDataLabelsOptionsObject|Array<Highcharts.SeriesPackedBubbleDataLabelsOptionsObject>}\n * @product highcharts\n * @apioption series.packedbubble.data.dataLabels\n */\n /**\n * @excluding enabled,enabledThreshold,height,radius,width\n * @product highcharts\n * @apioption series.packedbubble.marker\n */\n ''; // adds doclets above to transpiled file\n\n return PackedBubbleSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Networkgraph/VerletIntegration.js', [], function () {\n /* *\n *\n * Networkgraph series\n *\n * (c) 2010-2021 Paweł Fus\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /**\n * Attractive force.\n *\n * In Verlet integration, force is applied on a node immidatelly to it's\n * `plotX` and `plotY` position.\n *\n * @private\n * @param {Highcharts.Point} link\n * Link that connects two nodes\n * @param {number} force\n * Force calcualated in `repulsiveForceFunction`\n * @param {Highcharts.PositionObject} distance\n * Distance between two nodes e.g. `{x, y}`\n */\n function attractive(link, force, distanceXY) {\n var massFactor = link.getMass(),\n translatedX = -distanceXY.x * force * this.diffTemperature,\n translatedY = -distanceXY.y * force * this.diffTemperature;\n if (!link.fromNode.fixedPosition) {\n link.fromNode.plotX -=\n translatedX * massFactor.fromNode / link.fromNode.degree;\n link.fromNode.plotY -=\n translatedY * massFactor.fromNode / link.fromNode.degree;\n }\n if (!link.toNode.fixedPosition) {\n link.toNode.plotX +=\n translatedX * massFactor.toNode / link.toNode.degree;\n link.toNode.plotY +=\n translatedY * massFactor.toNode / link.toNode.degree;\n }\n }\n /**\n * Attractive force funtion. Can be replaced by API's\n * `layoutAlgorithm.attractiveForce`\n *\n * @private\n * @param {number} d current distance between two nodes\n * @param {number} k expected distance between two nodes\n * @return {number} force\n */\n function attractiveForceFunction(d, k) {\n // Used in API:\n return (k - d) / d;\n }\n /**\n * Barycenter force. Calculate and applys barycenter forces on the\n * nodes. Making them closer to the center of their barycenter point.\n *\n * In Verlet integration, force is applied on a node immidatelly to it's\n * `plotX` and `plotY` position.\n *\n * @private\n */\n function barycenter() {\n var gravitationalConstant = this.options.gravitationalConstant,\n xFactor = this.barycenter.xFactor,\n yFactor = this.barycenter.yFactor;\n // To consider:\n xFactor = (xFactor - (this.box.left + this.box.width) / 2) *\n gravitationalConstant;\n yFactor = (yFactor - (this.box.top + this.box.height) / 2) *\n gravitationalConstant;\n this.nodes.forEach(function (node) {\n if (!node.fixedPosition) {\n node.plotX -=\n xFactor / node.mass / node.degree;\n node.plotY -=\n yFactor / node.mass / node.degree;\n }\n });\n }\n /**\n * Estiamte the best possible distance between two nodes, making graph\n * readable.\n * @private\n */\n function getK(layout) {\n return Math.pow(layout.box.width * layout.box.height / layout.nodes.length, 0.5);\n }\n /**\n * Integration method.\n *\n * In Verlet integration, forces are applied on node immidatelly to it's\n * `plotX` and `plotY` position.\n *\n * Verlet without velocity:\n *\n * x(n+1) = 2 * x(n) - x(n-1) + A(T) * deltaT ^ 2\n *\n * where:\n * - x(n+1) - new position\n * - x(n) - current position\n * - x(n-1) - previous position\n *\n * Assuming A(t) = 0 (no acceleration) and (deltaT = 1) we get:\n *\n * x(n+1) = x(n) + (x(n) - x(n-1))\n *\n * where:\n * - (x(n) - x(n-1)) - position change\n *\n * TO DO:\n * Consider Verlet with velocity to support additional\n * forces. Or even Time-Corrected Verlet by Jonathan\n * \"lonesock\" Dummer\n *\n * @private\n * @param {Highcharts.NetworkgraphLayout} layout layout object\n * @param {Highcharts.Point} node node that should be translated\n */\n function integrate(layout, node) {\n var friction = -layout.options.friction,\n maxSpeed = layout.options.maxSpeed,\n prevX = node.prevX,\n prevY = node.prevY, \n // Apply friciton:\n diffX = ((node.plotX + node.dispX -\n prevX) * friction),\n diffY = ((node.plotY + node.dispY -\n prevY) * friction),\n abs = Math.abs,\n signX = abs(diffX) / (diffX || 1), // need to deal with 0\n signY = abs(diffY) / (diffY || 1);\n // Apply max speed:\n diffX = signX * Math.min(maxSpeed, Math.abs(diffX));\n diffY = signY * Math.min(maxSpeed, Math.abs(diffY));\n // Store for the next iteration:\n node.prevX = node.plotX + node.dispX;\n node.prevY = node.plotY + node.dispY;\n // Update positions:\n node.plotX += diffX;\n node.plotY += diffY;\n node.temperature = layout.vectorLength({\n x: diffX,\n y: diffY\n });\n }\n /**\n * Repulsive force.\n *\n * In Verlet integration, force is applied on a node immidatelly to it's\n * `plotX` and `plotY` position.\n *\n * @private\n * @param {Highcharts.Point} node\n * Node that should be translated by force.\n * @param {number} force\n * Force calcualated in `repulsiveForceFunction`\n * @param {Highcharts.PositionObject} distance\n * Distance between two nodes e.g. `{x, y}`\n */\n function repulsive(node, force, distanceXY) {\n var factor = force * this.diffTemperature / node.mass / node.degree;\n if (!node.fixedPosition) {\n node.plotX += distanceXY.x * factor;\n node.plotY += distanceXY.y * factor;\n }\n }\n /**\n * Repulsive force funtion. Can be replaced by API's\n * `layoutAlgorithm.repulsiveForce`\n *\n * @private\n * @param {number} d current distance between two nodes\n * @param {number} k expected distance between two nodes\n * @return {number} force\n */\n function repulsiveForceFunction(d, k) {\n // Used in API:\n return (k - d) / d * (k > d ? 1 : 0); // Force only for close nodes\n }\n /* *\n *\n * Default Export\n *\n * */\n var VerletIntegration = {\n attractive: attractive,\n attractiveForceFunction: attractiveForceFunction,\n barycenter: barycenter,\n getK: getK,\n integrate: integrate,\n repulsive: repulsive,\n repulsiveForceFunction: repulsiveForceFunction\n };\n\n return VerletIntegration;\n });\n _registerModule(_modules, 'Series/PackedBubble/PackedBubbleIntegration.js', [_modules['Core/Globals.js'], _modules['Series/Networkgraph/VerletIntegration.js']], function (H, VerletIntegration) {\n /* *\n *\n * (c) 2010-2021 Grzegorz Blachlinski, Sebastian Bochan\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var noop = H.noop;\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function barycenter() {\n var layout = this,\n gravitationalConstant = layout.options.gravitationalConstant,\n box = layout.box,\n nodes = layout.nodes;\n var centerX,\n centerY;\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n if (layout.options.splitSeries && !node.isParentNode) {\n centerX = node.series.parentNode.plotX;\n centerY = node.series.parentNode.plotY;\n }\n else {\n centerX = box.width / 2;\n centerY = box.height / 2;\n }\n if (!node.fixedPosition) {\n node.plotX -=\n (node.plotX - centerX) *\n gravitationalConstant /\n (node.mass * Math.sqrt(nodes.length));\n node.plotY -=\n (node.plotY - centerY) *\n gravitationalConstant /\n (node.mass * Math.sqrt(nodes.length));\n }\n }\n }\n /**\n * @private\n */\n function repulsive(node, force, distanceXY, repNode) {\n var factor = (force * this.diffTemperature / node.mass /\n node.degree),\n x = distanceXY.x * factor,\n y = distanceXY.y * factor;\n if (!node.fixedPosition) {\n node.plotX += x;\n node.plotY += y;\n }\n if (!repNode.fixedPosition) {\n repNode.plotX -= x;\n repNode.plotY -= y;\n }\n }\n /**\n * @private\n */\n function repulsiveForceFunction(d, k, node, repNode) {\n return Math.min(d, (node.marker.radius +\n repNode.marker.radius) / 2);\n }\n /* *\n *\n * Default Export\n *\n * */\n var PackedBubbleIntegration = {\n barycenter: barycenter,\n getK: noop,\n integrate: VerletIntegration.integrate,\n repulsive: repulsive,\n repulsiveForceFunction: repulsiveForceFunction\n };\n\n return PackedBubbleIntegration;\n });\n _registerModule(_modules, 'Series/Networkgraph/EulerIntegration.js', [], function () {\n /* *\n *\n * Networkgraph series\n *\n * (c) 2010-2021 Paweł Fus\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /**\n * Attractive force.\n *\n * In Euler integration, force is stored in a node, not changing it's\n * position. Later, in `integrate()` forces are applied on nodes.\n *\n * @private\n * @param {Highcharts.Point} link\n * Link that connects two nodes\n * @param {number} force\n * Force calcualated in `repulsiveForceFunction`\n * @param {Highcharts.PositionObject} distanceXY\n * Distance between two nodes e.g. `{x, y}`\n * @param {number} distanceR\n */\n function attractive(link, force, distanceXY, distanceR) {\n var massFactor = link.getMass(),\n translatedX = (distanceXY.x / distanceR) * force,\n translatedY = (distanceXY.y / distanceR) * force;\n if (!link.fromNode.fixedPosition) {\n link.fromNode.dispX -=\n translatedX * massFactor.fromNode / link.fromNode.degree;\n link.fromNode.dispY -=\n translatedY * massFactor.fromNode / link.fromNode.degree;\n }\n if (!link.toNode.fixedPosition) {\n link.toNode.dispX +=\n translatedX * massFactor.toNode / link.toNode.degree;\n link.toNode.dispY +=\n translatedY * massFactor.toNode / link.toNode.degree;\n }\n }\n /**\n * Attractive force funtion. Can be replaced by API's\n * `layoutAlgorithm.attractiveForce`\n *\n * Other forces that can be used:\n *\n * basic, not recommended:\n * `function (d, k) { return d / k }`\n *\n * @private\n * @param {number} d current distance between two nodes\n * @param {number} k expected distance between two nodes\n * @return {number} force\n */\n function attractiveForceFunction(d, k) {\n return d * d / k;\n }\n /**\n * Barycenter force. Calculate and applys barycenter forces on the\n * nodes. Making them closer to the center of their barycenter point.\n *\n * In Euler integration, force is stored in a node, not changing it's\n * position. Later, in `integrate()` forces are applied on nodes.\n *\n * @private\n */\n function barycenter() {\n var gravitationalConstant = this.options.gravitationalConstant,\n xFactor = this.barycenter.xFactor,\n yFactor = this.barycenter.yFactor;\n this.nodes.forEach(function (node) {\n if (!node.fixedPosition) {\n var degree = node.getDegree(),\n phi = degree * (1 + degree / 2);\n node.dispX += ((xFactor - node.plotX) *\n gravitationalConstant *\n phi / node.degree);\n node.dispY += ((yFactor - node.plotY) *\n gravitationalConstant *\n phi / node.degree);\n }\n });\n }\n /**\n * Estiamte the best possible distance between two nodes, making graph\n * readable.\n * @private\n */\n function getK(layout) {\n return Math.pow(layout.box.width * layout.box.height / layout.nodes.length, 0.3);\n }\n /**\n * Integration method.\n *\n * In Euler integration, force were stored in a node, not changing it's\n * position. Now, in the integrator method, we apply changes.\n *\n * Euler:\n *\n * Basic form: `x(n+1) = x(n) + v(n)`\n *\n * With Rengoild-Fruchterman we get:\n * `x(n+1) = x(n) + v(n) / length(v(n)) * min(v(n), temperature(n))`\n * where:\n * - `x(n+1)`: next position\n * - `x(n)`: current position\n * - `v(n)`: velocity (comes from net force)\n * - `temperature(n)`: current temperature\n *\n * Known issues:\n * Oscillations when force vector has the same magnitude but opposite\n * direction in the next step. Potentially solved by decreasing force by\n * `v * (1 / node.degree)`\n *\n * Note:\n * Actually `min(v(n), temperature(n))` replaces simulated annealing.\n *\n * @private\n * @param {Highcharts.NetworkgraphLayout} layout\n * Layout object\n * @param {Highcharts.Point} node\n * Node that should be translated\n */\n function integrate(layout, node) {\n var distanceR;\n node.dispX +=\n node.dispX * layout.options.friction;\n node.dispY +=\n node.dispY * layout.options.friction;\n distanceR = node.temperature = layout.vectorLength({\n x: node.dispX,\n y: node.dispY\n });\n if (distanceR !== 0) {\n node.plotX += (node.dispX / distanceR *\n Math.min(Math.abs(node.dispX), layout.temperature));\n node.plotY += (node.dispY / distanceR *\n Math.min(Math.abs(node.dispY), layout.temperature));\n }\n }\n /**\n * Repulsive force.\n *\n * @private\n * @param {Highcharts.Point} node\n * Node that should be translated by force.\n * @param {number} force\n * Force calcualated in `repulsiveForceFunction`\n * @param {Highcharts.PositionObject} distanceXY\n * Distance between two nodes e.g. `{x, y}`\n */\n function repulsive(node, force, distanceXY, distanceR) {\n node.dispX +=\n (distanceXY.x / distanceR) * force / node.degree;\n node.dispY +=\n (distanceXY.y / distanceR) * force / node.degree;\n }\n /**\n * Repulsive force funtion. Can be replaced by API's\n * `layoutAlgorithm.repulsiveForce`.\n *\n * Other forces that can be used:\n *\n * basic, not recommended:\n * `function (d, k) { return k / d }`\n *\n * standard:\n * `function (d, k) { return k * k / d }`\n *\n * grid-variant:\n * `function (d, k) { return k * k / d * (2 * k - d > 0 ? 1 : 0) }`\n *\n * @private\n * @param {number} d current distance between two nodes\n * @param {number} k expected distance between two nodes\n * @return {number} force\n */\n function repulsiveForceFunction(d, k) {\n return k * k / d;\n }\n /* *\n *\n * Default Export\n *\n * */\n var EulerIntegration = {\n attractive: attractive,\n attractiveForceFunction: attractiveForceFunction,\n barycenter: barycenter,\n getK: getK,\n integrate: integrate,\n repulsive: repulsive,\n repulsiveForceFunction: repulsiveForceFunction\n };\n\n return EulerIntegration;\n });\n _registerModule(_modules, 'Series/Networkgraph/QuadTreeNode.js', [], function () {\n /* *\n *\n * Networkgraph series\n *\n * (c) 2010-2021 Paweł Fus\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Class\n *\n * */\n /**\n * The QuadTree node class. Used in Networkgraph chart as a base for Barnes-Hut\n * approximation.\n *\n * @private\n * @class\n * @name Highcharts.QuadTreeNode\n *\n * @param {Highcharts.Dictionary<number>} box\n * Available space for the node\n */\n var QuadTreeNode = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function QuadTreeNode(box) {\n /* *\n *\n * Properties\n *\n * */\n /**\n * Read only. If QuadTreeNode is an external node, Point is stored in\n * `this.body`.\n *\n * @name Highcharts.QuadTreeNode#body\n * @type {boolean|Highcharts.Point}\n */\n this.body = false;\n /**\n * Read only. Internal nodes when created are empty to reserve the\n * space. If Point is added to this QuadTreeNode, QuadTreeNode is no\n * longer empty.\n *\n * @name Highcharts.QuadTreeNode#isEmpty\n * @type {boolean}\n */\n this.isEmpty = false;\n /**\n * Read only. Flag to determine if QuadTreeNode is internal (and has\n * subnodes with mass and central position) or external (bound to\n * Point).\n *\n * @name Highcharts.QuadTreeNode#isInternal\n * @type {boolean}\n */\n this.isInternal = false;\n /**\n * Read only. Array of subnodes. Empty if QuadTreeNode has just one\n * Point. When added another Point to this QuadTreeNode, array is\n * filled with four subnodes.\n *\n * @name Highcharts.QuadTreeNode#nodes\n * @type {Array<Highcharts.QuadTreeNode>}\n */\n this.nodes = [];\n /**\n * Read only. The available space for node.\n *\n * @name Highcharts.QuadTreeNode#box\n * @type {Highcharts.Dictionary<number>}\n */\n this.box = box;\n /**\n * Read only. The minium of width and height values.\n *\n * @name Highcharts.QuadTreeNode#boxSize\n * @type {number}\n */\n this.boxSize = Math.min(box.width, box.height);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * When inserting another node into the box, that already hove one node,\n * divide the available space into another four quadrants.\n *\n * Indexes of quadrants are:\n * ```\n * ------------- -------------\n * | | | | |\n * | | | 0 | 1 |\n * | | divide() | | |\n * | 1 | -----------> -------------\n * | | | | |\n * | | | 3 | 2 |\n * | | | | |\n * ------------- -------------\n * ```\n */\n QuadTreeNode.prototype.divideBox = function () {\n var halfWidth = this.box.width / 2,\n halfHeight = this.box.height / 2;\n // Top left\n this.nodes[0] = new QuadTreeNode({\n left: this.box.left,\n top: this.box.top,\n width: halfWidth,\n height: halfHeight\n });\n // Top right\n this.nodes[1] = new QuadTreeNode({\n left: this.box.left + halfWidth,\n top: this.box.top,\n width: halfWidth,\n height: halfHeight\n });\n // Bottom right\n this.nodes[2] = new QuadTreeNode({\n left: this.box.left + halfWidth,\n top: this.box.top + halfHeight,\n width: halfWidth,\n height: halfHeight\n });\n // Bottom left\n this.nodes[3] = new QuadTreeNode({\n left: this.box.left,\n top: this.box.top + halfHeight,\n width: halfWidth,\n height: halfHeight\n });\n };\n /**\n * Determine which of the quadrants should be used when placing node in\n * the QuadTree. Returned index is always in range `< 0 , 3 >`.\n * @private\n */\n QuadTreeNode.prototype.getBoxPosition = function (point) {\n var left = point.plotX < this.box.left + this.box.width / 2,\n top = point.plotY < this.box.top + this.box.height / 2;\n var index;\n if (left) {\n if (top) {\n // Top left\n index = 0;\n }\n else {\n // Bottom left\n index = 3;\n }\n }\n else {\n if (top) {\n // Top right\n index = 1;\n }\n else {\n // Bottom right\n index = 2;\n }\n }\n return index;\n };\n /**\n * Insert recursively point(node) into the QuadTree. If the given\n * quadrant is already occupied, divide it into smaller quadrants.\n *\n * @param {Highcharts.Point} point\n * Point/node to be inserted\n * @param {number} depth\n * Max depth of the QuadTree\n */\n QuadTreeNode.prototype.insert = function (point, depth) {\n var newQuadTreeNode;\n if (this.isInternal) {\n // Internal node:\n this.nodes[this.getBoxPosition(point)].insert(point, depth - 1);\n }\n else {\n this.isEmpty = false;\n if (!this.body) {\n // First body in a quadrant:\n this.isInternal = false;\n this.body = point;\n }\n else {\n if (depth) {\n // Every other body in a quadrant:\n this.isInternal = true;\n this.divideBox();\n // Reinsert main body only once:\n if (this.body !== true) {\n this.nodes[this.getBoxPosition(this.body)]\n .insert(this.body, depth - 1);\n this.body = true;\n }\n // Add second body:\n this.nodes[this.getBoxPosition(point)]\n .insert(point, depth - 1);\n }\n else {\n // We are below max allowed depth. That means either:\n // - really huge number of points\n // - falling two points into exactly the same position\n // In this case, create another node in the QuadTree.\n //\n // Alternatively we could add some noise to the\n // position, but that could result in different\n // rendered chart in exporting.\n newQuadTreeNode = new QuadTreeNode({\n top: point.plotX || NaN,\n left: point.plotY || NaN,\n // Width/height below 1px\n width: 0.1,\n height: 0.1\n });\n newQuadTreeNode.body = point;\n newQuadTreeNode.isInternal = false;\n this.nodes.push(newQuadTreeNode);\n }\n }\n }\n };\n /**\n * Each quad node requires it's mass and center position. That mass and\n * position is used to imitate real node in the layout by approximation.\n */\n QuadTreeNode.prototype.updateMassAndCenter = function () {\n var mass = 0,\n plotX = 0,\n plotY = 0;\n if (this.isInternal) {\n // Calcualte weightened mass of the quad node:\n for (var _i = 0, _a = this.nodes; _i < _a.length; _i++) {\n var pointMass = _a[_i];\n if (!pointMass.isEmpty) {\n mass += pointMass.mass;\n plotX += pointMass.plotX * pointMass.mass;\n plotY += pointMass.plotY * pointMass.mass;\n }\n }\n plotX /= mass;\n plotY /= mass;\n }\n else if (this.body) {\n // Just one node, use coordinates directly:\n mass = this.body.mass;\n plotX = this.body.plotX;\n plotY = this.body.plotY;\n }\n // Store details:\n this.mass = mass;\n this.plotX = plotX;\n this.plotY = plotY;\n };\n return QuadTreeNode;\n }());\n /* *\n *\n * Default Export\n *\n * */\n\n return QuadTreeNode;\n });\n _registerModule(_modules, 'Series/Networkgraph/QuadTree.js', [_modules['Series/Networkgraph/QuadTreeNode.js']], function (QuadTreeNode) {\n /* *\n *\n * Networkgraph series\n *\n * (c) 2010-2021 Paweł Fus\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Class\n *\n * */\n /**\n * The QuadTree class. Used in Networkgraph chart as a base for Barnes-Hut\n * approximation.\n *\n * @private\n * @class\n * @name Highcharts.QuadTree\n *\n * @param {number} x\n * Left position of the plotting area\n * @param {number} y\n * Top position of the plotting area\n * @param {number} width\n * Width of the plotting area\n * @param {number} height\n * Height of the plotting area\n */\n var QuadTree = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function QuadTree(x, y, width, height) {\n // Boundary rectangle:\n this.box = {\n left: x,\n top: y,\n width: width,\n height: height\n };\n this.maxDepth = 25;\n this.root = new QuadTreeNode(this.box);\n this.root.isInternal = true;\n this.root.isRoot = true;\n this.root.divideBox();\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Calculate mass of the each QuadNode in the tree.\n */\n QuadTree.prototype.calculateMassAndCenter = function () {\n this.visitNodeRecursive(null, null, function (node) {\n node.updateMassAndCenter();\n });\n };\n /**\n * Insert nodes into the QuadTree\n *\n * @param {Array<Highcharts.Point>} points\n * Points as nodes\n */\n QuadTree.prototype.insertNodes = function (points) {\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n this.root.insert(point, this.maxDepth);\n }\n };\n /**\n * Depfth first treversal (DFS). Using `before` and `after` callbacks,\n * we can get two results: preorder and postorder traversals, reminder:\n *\n * ```\n * (a)\n * / \\\n * (b) (c)\n * / \\\n * (d) (e)\n * ```\n *\n * DFS (preorder): `a -> b -> d -> e -> c`\n *\n * DFS (postorder): `d -> e -> b -> c -> a`\n *\n * @param {Highcharts.QuadTreeNode|null} node\n * QuadTree node\n * @param {Function} [beforeCallback]\n * Function to be called before visiting children nodes.\n * @param {Function} [afterCallback]\n * Function to be called after visiting children nodes.\n */\n QuadTree.prototype.visitNodeRecursive = function (node, beforeCallback, afterCallback) {\n var goFurther;\n if (!node) {\n node = this.root;\n }\n if (node === this.root && beforeCallback) {\n goFurther = beforeCallback(node);\n }\n if (goFurther === false) {\n return;\n }\n for (var _i = 0, _a = node.nodes; _i < _a.length; _i++) {\n var qtNode = _a[_i];\n if (qtNode.isInternal) {\n if (beforeCallback) {\n goFurther = beforeCallback(qtNode);\n }\n if (goFurther === false) {\n continue;\n }\n this.visitNodeRecursive(qtNode, beforeCallback, afterCallback);\n }\n else if (qtNode.body) {\n if (beforeCallback) {\n beforeCallback(qtNode.body);\n }\n }\n if (afterCallback) {\n afterCallback(qtNode);\n }\n }\n if (node === this.root && afterCallback) {\n afterCallback(node);\n }\n };\n return QuadTree;\n }());\n /* *\n *\n * Default Export\n *\n * */\n\n return QuadTree;\n });\n _registerModule(_modules, 'Series/Networkgraph/ReingoldFruchtermanLayout.js', [_modules['Series/Networkgraph/EulerIntegration.js'], _modules['Core/Globals.js'], _modules['Series/GraphLayoutComposition.js'], _modules['Series/Networkgraph/QuadTree.js'], _modules['Core/Utilities.js'], _modules['Series/Networkgraph/VerletIntegration.js']], function (EulerIntegration, H, GraphLayout, QuadTree, U, VerletIntegration) {\n /* *\n *\n * Networkgraph series\n *\n * (c) 2010-2021 Paweł Fus\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var win = H.win;\n var clamp = U.clamp,\n defined = U.defined,\n isFunction = U.isFunction,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * Reingold-Fruchterman algorithm from\n * \"Graph Drawing by Force-directed Placement\" paper.\n * @private\n */\n var ReingoldFruchtermanLayout = /** @class */ (function () {\n function ReingoldFruchtermanLayout() {\n /* *\n *\n * Static Functions\n *\n * */\n this.attractiveForce = void 0;\n this.box = {};\n this.currentStep = 0;\n this.initialRendering = true;\n this.integration = void 0;\n this.links = [];\n this.nodes = [];\n this.options = void 0;\n this.quadTree = void 0;\n this.repulsiveForce = void 0;\n this.series = [];\n this.simulation = false;\n }\n ReingoldFruchtermanLayout.compose = function (ChartClass) {\n GraphLayout.compose(ChartClass);\n GraphLayout.integrations.euler = EulerIntegration;\n GraphLayout.integrations.verlet = VerletIntegration;\n GraphLayout.layouts['reingold-fruchterman'] =\n ReingoldFruchtermanLayout;\n };\n ReingoldFruchtermanLayout.prototype.init = function (options) {\n this.options = options;\n this.nodes = [];\n this.links = [];\n this.series = [];\n this.box = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n this.setInitialRendering(true);\n this.integration =\n GraphLayout.integrations[options.integration];\n this.enableSimulation = options.enableSimulation;\n this.attractiveForce = pick(options.attractiveForce, this.integration.attractiveForceFunction);\n this.repulsiveForce = pick(options.repulsiveForce, this.integration.repulsiveForceFunction);\n this.approximation = options.approximation;\n };\n ReingoldFruchtermanLayout.prototype.updateSimulation = function (enable) {\n this.enableSimulation = pick(enable, this.options.enableSimulation);\n };\n ReingoldFruchtermanLayout.prototype.start = function () {\n var layout = this,\n series = this.series,\n options = this.options;\n layout.currentStep = 0;\n layout.forces = series[0] && series[0].forces || [];\n layout.chart = series[0] && series[0].chart;\n if (layout.initialRendering) {\n layout.initPositions();\n // Render elements in initial positions:\n series.forEach(function (s) {\n s.finishedAnimating = true; // #13169\n s.render();\n });\n }\n layout.setK();\n layout.resetSimulation(options);\n if (layout.enableSimulation) {\n layout.step();\n }\n };\n ReingoldFruchtermanLayout.prototype.step = function () {\n var _this = this;\n var anyLayout = this,\n allSeries = this.series;\n // Algorithm:\n this.currentStep++;\n if (this.approximation === 'barnes-hut') {\n this.createQuadTree();\n this.quadTree.calculateMassAndCenter();\n }\n for (var _i = 0, _a = this.forces || []; _i < _a.length; _i++) {\n var forceName = _a[_i];\n anyLayout[forceName + 'Forces'](this.temperature);\n }\n // Limit to the plotting area and cool down:\n this.applyLimits();\n // Cool down the system:\n this.temperature = this.coolDown(this.startTemperature, this.diffTemperature, this.currentStep);\n this.prevSystemTemperature = this.systemTemperature;\n this.systemTemperature = this.getSystemTemperature();\n if (this.enableSimulation) {\n for (var _b = 0, allSeries_1 = allSeries; _b < allSeries_1.length; _b++) {\n var series = allSeries_1[_b];\n // Chart could be destroyed during the simulation\n if (series.chart) {\n series.render();\n }\n }\n if (this.maxIterations-- &&\n isFinite(this.temperature) &&\n !this.isStable()) {\n if (this.simulation) {\n win.cancelAnimationFrame(this.simulation);\n }\n this.simulation = win.requestAnimationFrame(function () { return _this.step(); });\n }\n else {\n this.simulation = false;\n }\n }\n };\n ReingoldFruchtermanLayout.prototype.stop = function () {\n if (this.simulation) {\n win.cancelAnimationFrame(this.simulation);\n }\n };\n ReingoldFruchtermanLayout.prototype.setArea = function (x, y, w, h) {\n this.box = {\n left: x,\n top: y,\n width: w,\n height: h\n };\n };\n ReingoldFruchtermanLayout.prototype.setK = function () {\n // Optimal distance between nodes,\n // available space around the node:\n this.k = this.options.linkLength || this.integration.getK(this);\n };\n ReingoldFruchtermanLayout.prototype.addElementsToCollection = function (elements, collection) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n if (collection.indexOf(element) === -1) {\n collection.push(element);\n }\n }\n };\n ReingoldFruchtermanLayout.prototype.removeElementFromCollection = function (element, collection) {\n var index = collection.indexOf(element);\n if (index !== -1) {\n collection.splice(index, 1);\n }\n };\n ReingoldFruchtermanLayout.prototype.clear = function () {\n this.nodes.length = 0;\n this.links.length = 0;\n this.series.length = 0;\n this.resetSimulation();\n };\n ReingoldFruchtermanLayout.prototype.resetSimulation = function () {\n this.forcedStop = false;\n this.systemTemperature = 0;\n this.setMaxIterations();\n this.setTemperature();\n this.setDiffTemperature();\n };\n ReingoldFruchtermanLayout.prototype.restartSimulation = function () {\n if (!this.simulation) {\n // When dragging nodes, we don't need to calculate\n // initial positions and rendering nodes:\n this.setInitialRendering(false);\n // Start new simulation:\n if (!this.enableSimulation) {\n // Run only one iteration to speed things up:\n this.setMaxIterations(1);\n }\n else {\n this.start();\n }\n if (this.chart) {\n this.chart.redraw();\n }\n // Restore defaults:\n this.setInitialRendering(true);\n }\n else {\n // Extend current simulation:\n this.resetSimulation();\n }\n };\n ReingoldFruchtermanLayout.prototype.setMaxIterations = function (maxIterations) {\n this.maxIterations = pick(maxIterations, this.options.maxIterations);\n };\n ReingoldFruchtermanLayout.prototype.setTemperature = function () {\n this.temperature = this.startTemperature =\n Math.sqrt(this.nodes.length);\n };\n ReingoldFruchtermanLayout.prototype.setDiffTemperature = function () {\n this.diffTemperature = this.startTemperature /\n (this.options.maxIterations + 1);\n };\n ReingoldFruchtermanLayout.prototype.setInitialRendering = function (enable) {\n this.initialRendering = enable;\n };\n ReingoldFruchtermanLayout.prototype.createQuadTree = function () {\n this.quadTree = new QuadTree(this.box.left, this.box.top, this.box.width, this.box.height);\n this.quadTree.insertNodes(this.nodes);\n };\n ReingoldFruchtermanLayout.prototype.initPositions = function () {\n var initialPositions = this.options.initialPositions;\n if (isFunction(initialPositions)) {\n initialPositions.call(this);\n for (var _i = 0, _a = this.nodes; _i < _a.length; _i++) {\n var node = _a[_i];\n if (!defined(node.prevX)) {\n node.prevX = node.plotX;\n }\n if (!defined(node.prevY)) {\n node.prevY = node.plotY;\n }\n node.dispX = 0;\n node.dispY = 0;\n }\n }\n else if (initialPositions === 'circle') {\n this.setCircularPositions();\n }\n else {\n this.setRandomPositions();\n }\n };\n ReingoldFruchtermanLayout.prototype.setCircularPositions = function () {\n var box = this.box,\n nodes = this.nodes,\n nodesLength = nodes.length + 1,\n angle = 2 * Math.PI / nodesLength,\n rootNodes = nodes.filter(function (node) {\n return node.linksTo.length === 0;\n }), visitedNodes = {}, radius = this.options.initialPositionRadius, addToNodes = function (node) {\n for (var _i = 0, _a = node.linksFrom || []; _i < _a.length; _i++) {\n var link = _a[_i];\n if (!visitedNodes[link.toNode.id]) {\n visitedNodes[link.toNode.id] = true;\n sortedNodes.push(link.toNode);\n addToNodes(link.toNode);\n }\n }\n };\n var sortedNodes = [];\n // Start with identified root nodes an sort the nodes by their\n // hierarchy. In trees, this ensures that branches don't cross\n // eachother.\n for (var _i = 0, rootNodes_1 = rootNodes; _i < rootNodes_1.length; _i++) {\n var rootNode = rootNodes_1[_i];\n sortedNodes.push(rootNode);\n addToNodes(rootNode);\n }\n // Cyclic tree, no root node found\n if (!sortedNodes.length) {\n sortedNodes = nodes;\n // Dangling, cyclic trees\n }\n else {\n for (var _a = 0, nodes_1 = nodes; _a < nodes_1.length; _a++) {\n var node_1 = nodes_1[_a];\n if (sortedNodes.indexOf(node_1) === -1) {\n sortedNodes.push(node_1);\n }\n }\n }\n var node;\n // Initial positions are laid out along a small circle, appearing\n // as a cluster in the middle\n for (var i = 0, iEnd = sortedNodes.length; i < iEnd; ++i) {\n node = sortedNodes[i];\n node.plotX = node.prevX = pick(node.plotX, box.width / 2 + radius * Math.cos(i * angle));\n node.plotY = node.prevY = pick(node.plotY, box.height / 2 + radius * Math.sin(i * angle));\n node.dispX = 0;\n node.dispY = 0;\n }\n };\n ReingoldFruchtermanLayout.prototype.setRandomPositions = function () {\n var box = this.box,\n nodes = this.nodes,\n nodesLength = nodes.length + 1, \n /**\n * Return a repeatable,\n quasi-random number based on an integer\n * input. For the initial positions\n * @private\n */\n unrandom = function (n) {\n var rand = n * n / Math.PI;\n rand = rand - Math.floor(rand);\n return rand;\n };\n var node;\n // Initial positions:\n for (var i = 0, iEnd = nodes.length; i < iEnd; ++i) {\n node = nodes[i];\n node.plotX = node.prevX = pick(node.plotX, box.width * unrandom(i));\n node.plotY = node.prevY = pick(node.plotY, box.height * unrandom(nodesLength + i));\n node.dispX = 0;\n node.dispY = 0;\n }\n };\n ReingoldFruchtermanLayout.prototype.force = function (name) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n this.integration[name].apply(this, args);\n };\n ReingoldFruchtermanLayout.prototype.barycenterForces = function () {\n this.getBarycenter();\n this.force('barycenter');\n };\n ReingoldFruchtermanLayout.prototype.getBarycenter = function () {\n var systemMass = 0,\n cx = 0,\n cy = 0;\n for (var _i = 0, _a = this.nodes; _i < _a.length; _i++) {\n var node = _a[_i];\n cx += node.plotX * node.mass;\n cy += node.plotY * node.mass;\n systemMass += node.mass;\n }\n this.barycenter = {\n x: cx,\n y: cy,\n xFactor: cx / systemMass,\n yFactor: cy / systemMass\n };\n return this.barycenter;\n };\n ReingoldFruchtermanLayout.prototype.barnesHutApproximation = function (node, quadNode) {\n var distanceXY = this.getDistXY(node,\n quadNode),\n distanceR = this.vectorLength(distanceXY);\n var goDeeper,\n force;\n if (node !== quadNode && distanceR !== 0) {\n if (quadNode.isInternal) {\n // Internal node:\n if (quadNode.boxSize / distanceR <\n this.options.theta &&\n distanceR !== 0) {\n // Treat as an external node:\n force = this.repulsiveForce(distanceR, this.k);\n this.force('repulsive', node, force * quadNode.mass, distanceXY, distanceR);\n goDeeper = false;\n }\n else {\n // Go deeper:\n goDeeper = true;\n }\n }\n else {\n // External node, direct force:\n force = this.repulsiveForce(distanceR, this.k);\n this.force('repulsive', node, force * quadNode.mass, distanceXY, distanceR);\n }\n }\n return goDeeper;\n };\n ReingoldFruchtermanLayout.prototype.repulsiveForces = function () {\n var _this = this;\n if (this.approximation === 'barnes-hut') {\n var _loop_1 = function (node) {\n this_1.quadTree.visitNodeRecursive(null,\n function (quadNode) { return (_this.barnesHutApproximation(node,\n quadNode)); });\n };\n var this_1 = this;\n for (var _i = 0, _a = this.nodes; _i < _a.length; _i++) {\n var node = _a[_i];\n _loop_1(node);\n }\n }\n else {\n var force = void 0,\n distanceR = void 0,\n distanceXY = void 0;\n for (var _b = 0, _c = this.nodes; _b < _c.length; _b++) {\n var node = _c[_b];\n for (var _d = 0, _e = this.nodes; _d < _e.length; _d++) {\n var repNode = _e[_d];\n if (\n // Node cannot repulse itself:\n node !== repNode &&\n // Only close nodes affect each other:\n // layout.getDistR(node, repNode) < 2 * k &&\n // Not dragged:\n !node.fixedPosition) {\n distanceXY = this.getDistXY(node, repNode);\n distanceR = this.vectorLength(distanceXY);\n if (distanceR !== 0) {\n force = this.repulsiveForce(distanceR, this.k);\n this.force('repulsive', node, force * repNode.mass, distanceXY, distanceR);\n }\n }\n }\n }\n }\n };\n ReingoldFruchtermanLayout.prototype.attractiveForces = function () {\n var distanceXY,\n distanceR,\n force;\n for (var _i = 0, _a = this.links; _i < _a.length; _i++) {\n var link = _a[_i];\n if (link.fromNode && link.toNode) {\n distanceXY = this.getDistXY(link.fromNode, link.toNode);\n distanceR = this.vectorLength(distanceXY);\n if (distanceR !== 0) {\n force = this.attractiveForce(distanceR, this.k);\n this.force('attractive', link, force, distanceXY, distanceR);\n }\n }\n }\n };\n ReingoldFruchtermanLayout.prototype.applyLimits = function () {\n var nodes = this.nodes;\n for (var _i = 0, nodes_2 = nodes; _i < nodes_2.length; _i++) {\n var node = nodes_2[_i];\n if (node.fixedPosition) {\n return;\n }\n this.integration.integrate(this, node);\n this.applyLimitBox(node, this.box);\n // Reset displacement:\n node.dispX = 0;\n node.dispY = 0;\n }\n };\n /**\n * External box that nodes should fall. When hitting an edge, node\n * should stop or bounce.\n * @private\n */\n ReingoldFruchtermanLayout.prototype.applyLimitBox = function (node, box) {\n var radius = node.radius;\n /*\n TO DO: Consider elastic collision instead of stopping.\n o' means end position when hitting plotting area edge:\n\n - \"inelastic\":\n o\n \\\n ______\n | o'\n | \\\n | \\\n\n - \"elastic\"/\"bounced\":\n o\n \\\n ______\n | ^\n | / \\\n |o' \\\n\n Euler sample:\n if (plotX < 0) {\n plotX = 0;\n dispX *= -1;\n }\n\n if (plotX > box.width) {\n plotX = box.width;\n dispX *= -1;\n }\n\n */\n // Limit X-coordinates:\n node.plotX = clamp(node.plotX, box.left + radius, box.width - radius);\n // Limit Y-coordinates:\n node.plotY = clamp(node.plotY, box.top + radius, box.height - radius);\n };\n /**\n * From \"A comparison of simulated annealing cooling strategies\" by\n * Nourani and Andresen work.\n * @private\n */\n ReingoldFruchtermanLayout.prototype.coolDown = function (temperature, temperatureStep, currentStep) {\n // Logarithmic:\n /*\n return Math.sqrt(this.nodes.length) -\n Math.log(\n currentStep * layout.diffTemperature\n );\n */\n // Exponential:\n /*\n let alpha = 0.1;\n layout.temperature = Math.sqrt(layout.nodes.length) *\n Math.pow(alpha, layout.diffTemperature);\n */\n // Linear:\n return temperature - temperatureStep * currentStep;\n };\n ReingoldFruchtermanLayout.prototype.isStable = function () {\n return Math.abs(this.systemTemperature -\n this.prevSystemTemperature) < 0.00001 || this.temperature <= 0;\n };\n ReingoldFruchtermanLayout.prototype.getSystemTemperature = function () {\n var value = 0;\n for (var _i = 0, _a = this.nodes; _i < _a.length; _i++) {\n var node = _a[_i];\n value += node.temperature;\n }\n return value;\n };\n ReingoldFruchtermanLayout.prototype.vectorLength = function (vector) {\n return Math.sqrt(vector.x * vector.x + vector.y * vector.y);\n };\n ReingoldFruchtermanLayout.prototype.getDistR = function (nodeA, nodeB) {\n var distance = this.getDistXY(nodeA,\n nodeB);\n return this.vectorLength(distance);\n };\n ReingoldFruchtermanLayout.prototype.getDistXY = function (nodeA, nodeB) {\n var xDist = nodeA.plotX - nodeB.plotX,\n yDist = nodeA.plotY - nodeB.plotY;\n return {\n x: xDist,\n y: yDist,\n absX: Math.abs(xDist),\n absY: Math.abs(yDist)\n };\n };\n return ReingoldFruchtermanLayout;\n }());\n /* *\n *\n * Default Export\n *\n * */\n\n return ReingoldFruchtermanLayout;\n });\n _registerModule(_modules, 'Series/PackedBubble/PackedBubbleLayout.js', [_modules['Series/GraphLayoutComposition.js'], _modules['Series/PackedBubble/PackedBubbleIntegration.js'], _modules['Series/Networkgraph/ReingoldFruchtermanLayout.js'], _modules['Core/Utilities.js']], function (GraphLayout, PackedBubbleIntegration, ReingoldFruchtermanLayout, U) {\n /* *\n *\n * (c) 2010-2021 Grzegorz Blachlinski, Sebastian Bochan\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var addEvent = U.addEvent,\n pick = U.pick;\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function chartGetSelectedParentNodes() {\n var allSeries = this.series,\n selectedParentsNodes = [];\n allSeries.forEach(function (series) {\n if (series.parentNode && series.parentNode.selected) {\n selectedParentsNodes.push(series.parentNode);\n }\n });\n return selectedParentsNodes;\n }\n /**\n * Remove accumulated data points to redistribute all of them again\n * (i.e after hiding series by legend)\n * @private\n */\n function onChartBeforeRedraw() {\n if (this.allDataPoints) {\n delete this.allDataPoints;\n }\n }\n /* *\n *\n * Class\n *\n * */\n var PackedBubbleLayout = /** @class */ (function (_super) {\n __extends(PackedBubbleLayout, _super);\n function PackedBubbleLayout() {\n /* *\n *\n * Static Functions\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.index = NaN;\n _this.nodes = [];\n _this.options = void 0;\n _this.series = [];\n return _this;\n }\n PackedBubbleLayout.compose = function (ChartClass) {\n ReingoldFruchtermanLayout.compose(ChartClass);\n GraphLayout.integrations.packedbubble = PackedBubbleIntegration;\n GraphLayout.layouts.packedbubble = PackedBubbleLayout;\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n addEvent(ChartClass, 'beforeRedraw', onChartBeforeRedraw);\n var chartProto = ChartClass.prototype;\n chartProto.getSelectedParentNodes = chartGetSelectedParentNodes;\n }\n };\n /* *\n *\n * Functions\n *\n * */\n PackedBubbleLayout.prototype.beforeStep = function () {\n if (this.options.marker) {\n this.series.forEach(function (series) {\n if (series) {\n series.calculateParentRadius();\n }\n });\n }\n };\n // #14439, new stable check.\n PackedBubbleLayout.prototype.isStable = function () {\n var tempDiff = Math.abs(this.prevSystemTemperature -\n this.systemTemperature);\n var upScaledTemperature = 10 * this.systemTemperature /\n Math.sqrt(this.nodes.length);\n return Math.abs(upScaledTemperature) < 1 &&\n tempDiff < 0.00001 ||\n this.temperature <= 0;\n };\n PackedBubbleLayout.prototype.setCircularPositions = function () {\n var layout = this,\n box = layout.box,\n nodes = layout.nodes,\n nodesLength = nodes.length + 1,\n angle = 2 * Math.PI / nodesLength,\n radius = layout.options.initialPositionRadius;\n var centerX,\n centerY,\n index = 0;\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n if (layout.options.splitSeries &&\n !node.isParentNode) {\n centerX = node.series.parentNode.plotX;\n centerY = node.series.parentNode.plotY;\n }\n else {\n centerX = box.width / 2;\n centerY = box.height / 2;\n }\n node.plotX = node.prevX = pick(node.plotX, centerX +\n radius * Math.cos(node.index || index * angle));\n node.plotY = node.prevY = pick(node.plotY, centerY +\n radius * Math.sin(node.index || index * angle));\n node.dispX = 0;\n node.dispY = 0;\n index++;\n }\n };\n PackedBubbleLayout.prototype.repulsiveForces = function () {\n var layout = this,\n bubblePadding = layout.options.bubblePadding;\n var force,\n distanceR,\n distanceXY;\n layout.nodes.forEach(function (node) {\n node.degree = node.mass;\n node.neighbours = 0;\n layout.nodes.forEach(function (repNode) {\n force = 0;\n if (\n // Node cannot repulse itself:\n node !== repNode &&\n // Only close nodes affect each other:\n // Not dragged:\n !node.fixedPosition &&\n (layout.options.seriesInteraction ||\n node.series === repNode.series)) {\n distanceXY = layout.getDistXY(node, repNode);\n distanceR = (layout.vectorLength(distanceXY) -\n (node.marker.radius +\n repNode.marker.radius +\n bubblePadding));\n // TODO padding configurable\n if (distanceR < 0) {\n node.degree += 0.01;\n node.neighbours++;\n force = layout.repulsiveForce(-distanceR / Math.sqrt(node.neighbours), layout.k, node, repNode);\n }\n layout.force('repulsive', node, force * repNode.mass, distanceXY, repNode, distanceR);\n }\n });\n });\n };\n PackedBubbleLayout.prototype.applyLimitBox = function (node, box) {\n var layout = this,\n factor = 0.01;\n var distanceXY,\n distanceR;\n // parentNodeLimit should be used together\n // with seriesInteraction: false\n if (layout.options.splitSeries &&\n !node.isParentNode &&\n layout.options.parentNodeLimit) {\n distanceXY = layout.getDistXY(node, node.series.parentNode);\n distanceR = (node.series.parentNodeRadius -\n node.marker.radius -\n layout.vectorLength(distanceXY));\n if (distanceR < 0 &&\n distanceR > -2 * node.marker.radius) {\n node.plotX -= distanceXY.x * factor;\n node.plotY -= distanceXY.y * factor;\n }\n }\n _super.prototype.applyLimitBox.call(this, node, box);\n };\n return PackedBubbleLayout;\n }(ReingoldFruchtermanLayout));\n /* *\n *\n * Registry\n *\n * */\n GraphLayout.layouts.packedbubble = PackedBubbleLayout;\n /* *\n *\n * Default Export\n *\n * */\n\n return PackedBubbleLayout;\n });\n _registerModule(_modules, 'Series/PackedBubble/PackedBubbleSeries.js', [_modules['Core/Color/Color.js'], _modules['Series/DragNodesComposition.js'], _modules['Series/GraphLayoutComposition.js'], _modules['Core/Globals.js'], _modules['Series/PackedBubble/PackedBubblePoint.js'], _modules['Series/PackedBubble/PackedBubbleSeriesDefaults.js'], _modules['Series/PackedBubble/PackedBubbleLayout.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Color, DragNodesComposition, GraphLayout, H, PackedBubblePoint, PackedBubbleSeriesDefaults, PackedBubbleLayout, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Grzegorz Blachlinski, Sebastian Bochan\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var color = Color.parse;\n var noop = H.noop;\n var seriesProto = SeriesRegistry.series.prototype,\n BubbleSeries = SeriesRegistry.seriesTypes.bubble;\n var addEvent = U.addEvent,\n clamp = U.clamp,\n defined = U.defined,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * @private\n * @class\n * @name Highcharts.seriesTypes.packedbubble\n *\n * @extends Highcharts.Series\n */\n var PackedBubbleSeries = /** @class */ (function (_super) {\n __extends(PackedBubbleSeries, _super);\n function PackedBubbleSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.chart = void 0;\n _this.data = void 0;\n _this.layout = void 0;\n _this.options = void 0;\n _this.parentNodeMass = 0;\n _this.points = void 0;\n _this.xData = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Static Functions\n *\n * */\n PackedBubbleSeries.compose = function (AxisClass, ChartClass, LegendClass, SeriesClass) {\n BubbleSeries.compose(AxisClass, ChartClass, LegendClass, SeriesClass);\n DragNodesComposition.compose(ChartClass);\n PackedBubbleLayout.compose(ChartClass);\n };\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Create a single array of all points from all series\n * @private\n */\n PackedBubbleSeries.prototype.accumulateAllPoints = function () {\n var chart = this.chart,\n allDataPoints = [];\n var yData;\n for (var _i = 0, _a = chart.series; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.is('packedbubble') && // #13574\n series.visible ||\n !chart.options.chart.ignoreHiddenSeries) {\n yData = series.yData || [];\n // add data to array only if series is visible\n for (var j = 0; j < yData.length; j++) {\n allDataPoints.push([\n null, null,\n yData[j],\n series.index,\n j,\n {\n id: j,\n marker: {\n radius: 0\n }\n }\n ]);\n }\n }\n }\n return allDataPoints;\n };\n /**\n * Adding the basic layout to series points.\n * @private\n */\n PackedBubbleSeries.prototype.addLayout = function () {\n var layoutOptions = this.options.layoutAlgorithm =\n this.options.layoutAlgorithm || {},\n layoutType = layoutOptions.type || 'packedbubble',\n chartOptions = this.chart.options.chart;\n var graphLayoutsStorage = this.chart.graphLayoutsStorage,\n graphLayoutsLookup = this.chart.graphLayoutsLookup,\n layout;\n if (!graphLayoutsStorage) {\n this.chart.graphLayoutsStorage = graphLayoutsStorage = {};\n this.chart.graphLayoutsLookup = graphLayoutsLookup = [];\n }\n layout = graphLayoutsStorage[layoutType];\n if (!layout) {\n layoutOptions.enableSimulation =\n !defined(chartOptions.forExport) ?\n layoutOptions.enableSimulation :\n !chartOptions.forExport;\n graphLayoutsStorage[layoutType] = layout =\n new GraphLayout.layouts[layoutType]();\n layout.init(layoutOptions);\n graphLayoutsLookup.splice(layout.index, 0, layout);\n }\n this.layout = layout;\n this.points.forEach(function (node) {\n node.mass = 2;\n node.degree = 1;\n node.collisionNmb = 1;\n });\n layout.setArea(0, 0, this.chart.plotWidth, this.chart.plotHeight);\n layout.addElementsToCollection([this], layout.series);\n layout.addElementsToCollection(this.points, layout.nodes);\n };\n /**\n * Function responsible for adding series layout, used for parent nodes.\n * @private\n */\n PackedBubbleSeries.prototype.addSeriesLayout = function () {\n var layoutOptions = this.options.layoutAlgorithm =\n this.options.layoutAlgorithm || {},\n layoutType = (layoutOptions.type || 'packedbubble'),\n graphLayoutsStorage = this.chart.graphLayoutsStorage,\n graphLayoutsLookup = this.chart.graphLayoutsLookup,\n parentNodeOptions = merge(layoutOptions,\n layoutOptions.parentNodeOptions, {\n enableSimulation: this.layout.options.enableSimulation\n });\n var seriesLayout = graphLayoutsStorage[layoutType + '-series'];\n if (!seriesLayout) {\n graphLayoutsStorage[layoutType + '-series'] = seriesLayout =\n new GraphLayout.layouts[layoutType]();\n seriesLayout.init(parentNodeOptions);\n graphLayoutsLookup.splice(seriesLayout.index, 0, seriesLayout);\n }\n this.parentNodeLayout = seriesLayout;\n this.createParentNodes();\n };\n /**\n * The function responsible for calculating the parent node radius\n * based on the total surface of iniside-bubbles and the group BBox\n * @private\n */\n PackedBubbleSeries.prototype.calculateParentRadius = function () {\n var bBox = this.seriesBox(),\n parentPadding = 20,\n minParentRadius = 20;\n this.parentNodeRadius = clamp(Math.sqrt(2 * this.parentNodeMass / Math.PI) + parentPadding, minParentRadius, bBox ?\n Math.max(Math.sqrt(Math.pow(bBox.width, 2) +\n Math.pow(bBox.height, 2)) / 2 + parentPadding, minParentRadius) :\n Math.sqrt(2 * this.parentNodeMass / Math.PI) + parentPadding);\n if (this.parentNode) {\n this.parentNode.marker.radius =\n this.parentNode.radius = this.parentNodeRadius;\n }\n };\n /**\n * Calculate min and max bubble value for radius calculation.\n * @private\n */\n PackedBubbleSeries.prototype.calculateZExtremes = function () {\n var chart = this.chart,\n allSeries = chart.series;\n var zMin = this.options.zMin,\n zMax = this.options.zMax,\n valMin = Infinity,\n valMax = -Infinity;\n if (zMin && zMax) {\n return [zMin, zMax];\n }\n // it is needed to deal with null\n // and undefined values\n allSeries.forEach(function (series) {\n series.yData.forEach(function (y) {\n if (defined(y)) {\n if (y > valMax) {\n valMax = y;\n }\n if (y < valMin) {\n valMin = y;\n }\n }\n });\n });\n zMin = pick(zMin, valMin);\n zMax = pick(zMax, valMax);\n return [zMin, zMax];\n };\n /**\n * Check if two bubbles overlaps.\n * @private\n */\n PackedBubbleSeries.prototype.checkOverlap = function (bubble1, bubble2) {\n var diffX = bubble1[0] - bubble2[0], // diff of X center values\n diffY = bubble1[1] - bubble2[1], // diff of Y center values\n sumRad = bubble1[2] + bubble2[2]; // sum of bubble radius\n return (Math.sqrt(diffX * diffX + diffY * diffY) -\n Math.abs(sumRad)) < -0.001;\n };\n /**\n * Creating parent nodes for split series, in which all the bubbles\n * are rendered.\n * @private\n */\n PackedBubbleSeries.prototype.createParentNodes = function () {\n var _this = this;\n var PackedBubblePoint = this.pointClass,\n chart = this.chart,\n parentNodeLayout = this.parentNodeLayout,\n layoutOptions = this.layout.options;\n var nodeAdded,\n parentNode = this.parentNode,\n parentMarkerOptions = {\n radius: this.parentNodeRadius,\n lineColor: this.color,\n fillColor: color(this.color).brighten(0.4).get()\n };\n if (layoutOptions.parentNodeOptions) {\n parentMarkerOptions = merge(layoutOptions.parentNodeOptions.marker || {}, parentMarkerOptions);\n }\n this.parentNodeMass = 0;\n this.points.forEach(function (p) {\n _this.parentNodeMass +=\n Math.PI * Math.pow(p.marker.radius, 2);\n });\n this.calculateParentRadius();\n parentNodeLayout.nodes.forEach(function (node) {\n if (node.seriesIndex === _this.index) {\n nodeAdded = true;\n }\n });\n parentNodeLayout.setArea(0, 0, chart.plotWidth, chart.plotHeight);\n if (!nodeAdded) {\n if (!parentNode) {\n parentNode = (new PackedBubblePoint()).init(this, {\n mass: this.parentNodeRadius / 2,\n marker: parentMarkerOptions,\n dataLabels: {\n inside: false\n },\n states: {\n normal: {\n marker: parentMarkerOptions\n },\n hover: {\n marker: parentMarkerOptions\n }\n },\n dataLabelOnNull: true,\n degree: this.parentNodeRadius,\n isParentNode: true,\n seriesIndex: this.index\n });\n }\n if (this.parentNode) {\n parentNode.plotX = this.parentNode.plotX;\n parentNode.plotY = this.parentNode.plotY;\n }\n this.parentNode = parentNode;\n parentNodeLayout.addElementsToCollection([this], parentNodeLayout.series);\n parentNodeLayout.addElementsToCollection([parentNode], parentNodeLayout.nodes);\n }\n };\n /**\n * Function responsible for adding all the layouts to the chart.\n * @private\n */\n PackedBubbleSeries.prototype.deferLayout = function () {\n // TODO split layouts to independent methods\n var layoutOptions = this.options.layoutAlgorithm;\n if (!this.visible) {\n return;\n }\n // layout is using nodes for position calculation\n this.addLayout();\n if (layoutOptions.splitSeries) {\n this.addSeriesLayout();\n }\n };\n PackedBubbleSeries.prototype.destroy = function () {\n var _this = this;\n // Remove the series from all layouts series collections #11469\n if (this.chart.graphLayoutsLookup) {\n this.chart.graphLayoutsLookup.forEach(function (layout) {\n layout.removeElementFromCollection(_this, layout.series);\n }, this);\n }\n if (this.parentNode &&\n this.parentNodeLayout) {\n this.parentNodeLayout.removeElementFromCollection(this.parentNode, this.parentNodeLayout.nodes);\n if (this.parentNode.dataLabel) {\n this.parentNode.dataLabel =\n this.parentNode.dataLabel.destroy();\n }\n }\n seriesProto.destroy.apply(this, arguments);\n };\n /**\n * Packedbubble has two separate collecions of nodes if split, render\n * dataLabels for both sets:\n * @private\n */\n PackedBubbleSeries.prototype.drawDataLabels = function () {\n seriesProto.drawDataLabels.call(this, this.points);\n // Render parentNode labels:\n if (this.parentNode) {\n this.parentNode.formatPrefix = 'parentNode';\n seriesProto.drawDataLabels.call(this, [this.parentNode]);\n }\n };\n /**\n * Create Background/Parent Nodes for split series.\n * @private\n */\n PackedBubbleSeries.prototype.drawGraph = function () {\n // if the series is not using layout, don't add parent nodes\n if (!this.layout || !this.layout.options.splitSeries) {\n return;\n }\n var chart = this.chart,\n nodeMarker = this.layout.options.parentNodeOptions.marker,\n parentOptions = {\n fill: (nodeMarker.fillColor ||\n color(this.color).brighten(0.4).get()),\n opacity: nodeMarker.fillOpacity,\n stroke: nodeMarker.lineColor || this.color,\n 'stroke-width': pick(nodeMarker.lineWidth,\n this.options.lineWidth)\n };\n var parentAttribs = {};\n // create the group for parent Nodes if doesn't exist\n if (!this.parentNodesGroup) {\n this.parentNodesGroup = this.plotGroup('parentNodesGroup', 'parentNode', this.visible ? 'inherit' : 'hidden', 0.1, chart.seriesGroup);\n this.group.attr({\n zIndex: 2\n });\n }\n this.calculateParentRadius();\n parentAttribs = merge({\n x: this.parentNode.plotX -\n this.parentNodeRadius,\n y: this.parentNode.plotY -\n this.parentNodeRadius,\n width: this.parentNodeRadius * 2,\n height: this.parentNodeRadius * 2\n }, parentOptions);\n if (!this.parentNode.graphic) {\n this.graph = this.parentNode.graphic =\n chart.renderer.symbol(parentOptions.symbol)\n .add(this.parentNodesGroup);\n }\n this.parentNode.graphic.attr(parentAttribs);\n };\n PackedBubbleSeries.prototype.drawTracker = function () {\n var parentNode = this.parentNode;\n // chart = series.chart,\n // pointer = chart.pointer,\n // onMouseOver = function (e: PointerEvent): void {\n // const point = pointer.getPointFromEvent(e);\n // // undefined on graph in scatterchart\n // if (typeof point !== 'undefined') {\n // pointer.isDirectTouch = true;\n // point.onMouseOver(e);\n // }\n // };\n var dataLabels;\n _super.prototype.drawTracker.call(this);\n // Add reference to the point\n if (parentNode) {\n dataLabels = (isArray(parentNode.dataLabels) ?\n parentNode.dataLabels :\n (parentNode.dataLabel ? [parentNode.dataLabel] : []));\n if (parentNode.graphic) {\n parentNode.graphic.element.point = parentNode;\n }\n dataLabels.forEach(function (dataLabel) {\n if (dataLabel.div) {\n dataLabel.div.point = parentNode;\n }\n else {\n dataLabel.element.point = parentNode;\n }\n });\n }\n };\n /**\n * Calculate radius of bubbles in series.\n * @private\n */\n PackedBubbleSeries.prototype.getPointRadius = function () {\n var _this = this;\n var chart = this.chart,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n seriesOptions = this.options,\n useSimulation = seriesOptions.useSimulation,\n smallestSize = Math.min(plotWidth,\n plotHeight),\n extremes = {},\n radii = [],\n allDataPoints = chart.allDataPoints || [],\n allDataPointsLength = allDataPoints.length;\n var minSize,\n maxSize,\n value,\n radius;\n ['minSize', 'maxSize'].forEach(function (prop) {\n var length = parseInt(seriesOptions[prop], 10),\n isPercent = /%$/.test(seriesOptions[prop]);\n extremes[prop] = isPercent ?\n smallestSize * length / 100 :\n length * Math.sqrt(allDataPointsLength);\n });\n chart.minRadius = minSize = extremes.minSize /\n Math.sqrt(allDataPointsLength);\n chart.maxRadius = maxSize = extremes.maxSize /\n Math.sqrt(allDataPointsLength);\n var zExtremes = useSimulation ?\n this.calculateZExtremes() :\n [minSize,\n maxSize];\n allDataPoints.forEach(function (point, i) {\n value = useSimulation ?\n clamp(point[2], zExtremes[0], zExtremes[1]) :\n point[2];\n radius = _this.getRadius(zExtremes[0], zExtremes[1], minSize, maxSize, value);\n if (radius === 0) {\n radius = null;\n }\n allDataPoints[i][2] = radius;\n radii.push(radius);\n });\n this.radii = radii;\n };\n PackedBubbleSeries.prototype.init = function () {\n seriesProto.init.apply(this, arguments);\n /* eslint-disable no-invalid-this */\n // When one series is modified, the others need to be recomputed\n this.eventsToUnbind.push(addEvent(this, 'updatedData', function () {\n var _this = this;\n this.chart.series.forEach(function (s) {\n if (s.type === _this.type) {\n s.isDirty = true;\n }\n }, this);\n }));\n /* eslint-enable no-invalid-this */\n return this;\n };\n /**\n * Mouse up action, finalizing drag&drop.\n * @private\n * @param {Highcharts.Point} point The point that event occured.\n */\n PackedBubbleSeries.prototype.onMouseUp = function (dnPoint) {\n var point = dnPoint;\n if (point.fixedPosition && !point.removed) {\n var layout_1 = this.layout,\n parentNodeLayout = this.parentNodeLayout;\n var distanceXY_1,\n distanceR_1;\n if (parentNodeLayout && layout_1.options.dragBetweenSeries) {\n parentNodeLayout.nodes.forEach(function (node) {\n if (point && point.marker &&\n node !== point.series.parentNode) {\n distanceXY_1 = layout_1.getDistXY(point, node);\n distanceR_1 = (layout_1.vectorLength(distanceXY_1) -\n node.marker.radius -\n point.marker.radius);\n if (distanceR_1 < 0) {\n node.series.addPoint(merge(point.options, {\n plotX: point.plotX,\n plotY: point.plotY\n }), false);\n layout_1.removeElementFromCollection(point, layout_1.nodes);\n point.remove();\n }\n }\n });\n }\n DragNodesComposition.onMouseUp.apply(this, arguments);\n }\n };\n /**\n * This is the main function responsible\n * for positioning all of the bubbles\n * allDataPoints - bubble array, in format [pixel x value,\n * pixel y value, radius,\n * related series index, related point index]\n * @private\n * @param {Array<Highcharts.PackedBubbleData>} allDataPoints All points from all series\n * @return {Array<Highcharts.PackedBubbleData>} Positions of all bubbles\n */\n PackedBubbleSeries.prototype.placeBubbles = function (allDataPoints) {\n var checkOverlap = this.checkOverlap,\n positionBubble = this.positionBubble,\n bubblePos = [];\n var stage = 1,\n j = 0,\n k = 0,\n calculatedBubble,\n arr = [],\n i;\n // sort all points\n var sortedArr = allDataPoints.sort(function (a,\n b) {\n return b[2] - a[2];\n });\n if (sortedArr.length) {\n // create first bubble in the middle of the chart\n bubblePos.push([\n [\n 0,\n 0,\n sortedArr[0][2],\n sortedArr[0][3],\n sortedArr[0][4]\n ] // point index\n ]); // 0 level bubble\n if (sortedArr.length > 1) {\n bubblePos.push([\n [\n 0,\n (0 - sortedArr[1][2] -\n sortedArr[0][2]),\n // move bubble above first one\n sortedArr[1][2],\n sortedArr[1][3],\n sortedArr[1][4]\n ]\n ]); // 1 level 1st bubble\n // first two already positioned so starting from 2\n for (i = 2; i < sortedArr.length; i++) {\n sortedArr[i][2] = sortedArr[i][2] || 1;\n // in case if radius is calculated as 0.\n calculatedBubble = positionBubble(bubblePos[stage][j], bubblePos[stage - 1][k], sortedArr[i]); // calculate initial bubble position\n if (checkOverlap(calculatedBubble, bubblePos[stage][0])) {\n /* if new bubble is overlapping with first bubble\n * in current level (stage)\n */\n bubblePos.push([]);\n k = 0;\n /* reset index of bubble, used for\n * positioning the bubbles around it,\n * we are starting from first bubble in next\n * stage because we are changing level to higher\n */\n bubblePos[stage + 1].push(positionBubble(bubblePos[stage][j], bubblePos[stage][0], sortedArr[i]));\n // (last bubble, 1. from curr stage, new bubble)\n stage++; // the new level is created, above current\n j = 0; // set the index of bubble in curr level to 0\n }\n else if (stage > 1 &&\n bubblePos[stage - 1][k + 1] &&\n checkOverlap(calculatedBubble, bubblePos[stage - 1][k + 1])) {\n /* if new bubble is overlapping with one of the prev\n * stage bubbles, it means that - bubble, used for\n * positioning the bubbles around it has changed\n * so we need to recalculate it\n */\n k++;\n bubblePos[stage].push(positionBubble(bubblePos[stage][j], bubblePos[stage - 1][k], sortedArr[i]));\n // (last bubble, prev stage bubble, new bubble)\n j++;\n }\n else { // simply add calculated bubble\n j++;\n bubblePos[stage].push(calculatedBubble);\n }\n }\n }\n this.chart.stages = bubblePos;\n // it may not be necessary but adding it just in case -\n // it is containing all of the bubble levels\n this.chart.rawPositions =\n []\n .concat.apply([], bubblePos);\n // bubble positions merged into one array\n this.resizeRadius();\n arr = this.chart.rawPositions;\n }\n return arr;\n };\n /**\n * Function that checks for a parentMarker and sets the correct opacity.\n * @private\n * @param {Highcharts.Pack} point\n * Candidate point for opacity correction.\n * @param {string} [state]\n * The point state, can be either `hover`, `select` or 'normal'. If\n * undefined, normal state is assumed.\n *\n * @return {Highcharts.SVGAttributes}\n * The presentational attributes to be set on the point.\n */\n PackedBubbleSeries.prototype.pointAttribs = function (point, state) {\n var options = this.options,\n hasParentMarker = point && point.isParentNode;\n var markerOptions = options.marker;\n if (hasParentMarker &&\n options.layoutAlgorithm &&\n options.layoutAlgorithm.parentNodeOptions) {\n markerOptions = options.layoutAlgorithm.parentNodeOptions.marker;\n }\n var fillOpacity = markerOptions.fillOpacity,\n attr = seriesProto.pointAttribs.call(this,\n point,\n state);\n if (fillOpacity !== 1) {\n attr['fill-opacity'] = fillOpacity;\n }\n return attr;\n };\n /**\n * Function that is adding one bubble based on positions and sizes of\n * two other bubbles, lastBubble is the last added bubble, newOrigin is\n * the bubble for positioning new bubbles. nextBubble is the curently\n * added bubble for which we are calculating positions\n * @private\n * @param {Array<number>} lastBubble The closest last bubble\n * @param {Array<number>} newOrigin New bubble\n * @param {Array<number>} nextBubble The closest next bubble\n * @return {Array<number>} Bubble with correct positions\n */\n PackedBubbleSeries.prototype.positionBubble = function (lastBubble, newOrigin, nextBubble) {\n var sqrt = Math.sqrt,\n asin = Math.asin,\n acos = Math.acos,\n pow = Math.pow,\n abs = Math.abs,\n distance = sqrt(// dist between lastBubble and newOrigin\n pow((lastBubble[0] - newOrigin[0]), 2) +\n pow((lastBubble[1] - newOrigin[1]), 2)),\n alfa = acos(\n // from cosinus theorem: alfa is an angle used for\n // calculating correct position\n (pow(distance, 2) +\n pow(nextBubble[2] + newOrigin[2], 2) -\n pow(nextBubble[2] + lastBubble[2], 2)) / (2 * (nextBubble[2] + newOrigin[2]) * distance)),\n beta = asin(// from sinus theorem.\n abs(lastBubble[0] - newOrigin[0]) /\n distance), \n // providing helping variables, related to angle between\n // lastBubble and newOrigin\n gamma = (lastBubble[1] - newOrigin[1]) < 0 ? 0 : Math.PI, \n // if new origin y is smaller than last bubble y value\n // (2 and 3 quarter),\n // add Math.PI to final angle\n delta = (lastBubble[0] - newOrigin[0]) *\n (lastBubble[1] - newOrigin[1]) < 0 ?\n 1 : -1, // (1st and 3rd quarter)\n finalAngle = gamma + alfa + beta * delta,\n cosA = Math.cos(finalAngle),\n sinA = Math.sin(finalAngle),\n posX = newOrigin[0] + (newOrigin[2] + nextBubble[2]) * sinA, \n // center of new origin + (radius1 + radius2) * sinus A\n posY = newOrigin[1] - (newOrigin[2] + nextBubble[2]) * cosA;\n return [\n posX,\n posY,\n nextBubble[2],\n nextBubble[3],\n nextBubble[4]\n ]; // the same as described before\n };\n PackedBubbleSeries.prototype.render = function () {\n var dataLabels = [];\n seriesProto.render.apply(this, arguments);\n // #10823 - dataLabels should stay visible\n // when enabled allowOverlap.\n if (!this.options.dataLabels.allowOverlap) {\n this.data.forEach(function (point) {\n if (isArray(point.dataLabels)) {\n point.dataLabels.forEach(function (dataLabel) {\n dataLabels.push(dataLabel);\n });\n }\n });\n // Only hide overlapping dataLabels for layouts that\n // use simulation. Spiral packedbubble don't need\n // additional dataLabel hiding on every simulation step\n if (this.options.useSimulation) {\n this.chart.hideOverlappingLabels(dataLabels);\n }\n }\n };\n /**\n * The function responsible for resizing the bubble radius.\n * In shortcut: it is taking the initially\n * calculated positions of bubbles. Then it is calculating the min max\n * of both dimensions, creating something in shape of bBox.\n * The comparison of bBox and the size of plotArea\n * (later it may be also the size set by customer) is giving the\n * value how to recalculate the radius so it will match the size\n * @private\n */\n PackedBubbleSeries.prototype.resizeRadius = function () {\n var chart = this.chart,\n positions = chart.rawPositions,\n min = Math.min,\n max = Math.max,\n plotLeft = chart.plotLeft,\n plotTop = chart.plotTop,\n chartHeight = chart.plotHeight,\n chartWidth = chart.plotWidth;\n var minX,\n maxX,\n minY,\n maxY,\n radius;\n minX = minY = Number.POSITIVE_INFINITY; // set initial values\n maxX = maxY = Number.NEGATIVE_INFINITY;\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\n var position = positions_1[_i];\n radius = position[2];\n minX = min(minX, position[0] - radius);\n // (x center-radius) is the min x value used by specific bubble\n maxX = max(maxX, position[0] + radius);\n minY = min(minY, position[1] - radius);\n maxY = max(maxY, position[1] + radius);\n }\n var bBox = [maxX - minX,\n maxY - minY],\n spaceRatio = [\n (chartWidth - plotLeft) / bBox[0],\n (chartHeight - plotTop) / bBox[1]\n ],\n smallerDimension = min.apply([],\n spaceRatio);\n if (Math.abs(smallerDimension - 1) > 1e-10) {\n // if bBox is considered not the same width as possible size\n for (var _a = 0, positions_2 = positions; _a < positions_2.length; _a++) {\n var position = positions_2[_a];\n position[2] *= smallerDimension;\n }\n this.placeBubbles(positions);\n }\n else {\n /** if no radius recalculation is needed, we need to position\n * the whole bubbles in center of chart plotarea\n * for this, we are adding two parameters,\n * diffY and diffX, that are related to differences\n * between the initial center and the bounding box\n */\n chart.diffY = chartHeight / 2 +\n plotTop - minY - (maxY - minY) / 2;\n chart.diffX = chartWidth / 2 +\n plotLeft - minX - (maxX - minX) / 2;\n }\n };\n /**\n * The function responsible for calculating series bubble' s bBox.\n * Needed because of exporting failure when useSimulation\n * is set to false\n * @private\n */\n PackedBubbleSeries.prototype.seriesBox = function () {\n var chart = this.chart,\n data = this.data,\n max = Math.max,\n min = Math.min, \n // bBox = [xMin, xMax, yMin, yMax]\n bBox = [\n chart.plotLeft,\n chart.plotLeft + chart.plotWidth,\n chart.plotTop,\n chart.plotTop + chart.plotHeight\n ];\n var radius;\n data.forEach(function (p) {\n if (defined(p.plotX) &&\n defined(p.plotY) &&\n p.marker.radius) {\n radius = p.marker.radius;\n bBox[0] = min(bBox[0], p.plotX - radius);\n bBox[1] = max(bBox[1], p.plotX + radius);\n bBox[2] = min(bBox[2], p.plotY - radius);\n bBox[3] = max(bBox[3], p.plotY + radius);\n }\n });\n return isNumber(bBox.width / bBox.height) ?\n bBox :\n null;\n };\n /**\n * Needed because of z-indexing issue if point is added in series.group\n * @private\n */\n PackedBubbleSeries.prototype.setVisible = function () {\n var series = this;\n seriesProto.setVisible.apply(series, arguments);\n if (series.parentNodeLayout && series.graph) {\n if (series.visible) {\n series.graph.show();\n if (series.parentNode.dataLabel) {\n series.parentNode.dataLabel.show();\n }\n }\n else {\n series.graph.hide();\n series.parentNodeLayout\n .removeElementFromCollection(series.parentNode, series.parentNodeLayout.nodes);\n if (series.parentNode.dataLabel) {\n series.parentNode.dataLabel.hide();\n }\n }\n }\n else if (series.layout) {\n if (series.visible) {\n series.layout.addElementsToCollection(series.points, series.layout.nodes);\n }\n else {\n series.points.forEach(function (node) {\n series.layout.removeElementFromCollection(node, series.layout.nodes);\n });\n }\n }\n };\n /**\n * Extend the base translate method to handle bubble size,\n * and correct positioning them.\n * @private\n */\n PackedBubbleSeries.prototype.translate = function () {\n var chart = this.chart,\n data = this.data,\n index = this.index,\n useSimulation = this.options.useSimulation;\n var point,\n radius,\n positions;\n this.processedXData = this.xData;\n this.generatePoints();\n // merged data is an array with all of the data from all series\n if (!defined(chart.allDataPoints)) {\n chart.allDataPoints = this.accumulateAllPoints();\n // calculate radius for all added data\n this.getPointRadius();\n }\n // after getting initial radius, calculate bubble positions\n if (useSimulation) {\n positions = chart.allDataPoints;\n }\n else {\n positions = this.placeBubbles(chart.allDataPoints);\n this.options.draggable = false;\n }\n // Set the shape and arguments to be picked up in drawPoints\n for (var _i = 0, positions_3 = positions; _i < positions_3.length; _i++) {\n var position = positions_3[_i];\n if (position[3] === index) {\n // update the series points with the val from positions\n // array\n point = data[position[4]];\n radius = pick(position[2], void 0);\n if (!useSimulation) {\n point.plotX = (position[0] - chart.plotLeft +\n chart.diffX);\n point.plotY = (position[1] - chart.plotTop +\n chart.diffY);\n }\n if (isNumber(radius)) {\n point.marker = extend(point.marker, {\n radius: radius,\n width: 2 * radius,\n height: 2 * radius\n });\n point.radius = radius;\n }\n }\n }\n if (useSimulation) {\n this.deferLayout();\n }\n fireEvent(this, 'afterTranslate');\n };\n PackedBubbleSeries.defaultOptions = merge(BubbleSeries.defaultOptions, PackedBubbleSeriesDefaults);\n return PackedBubbleSeries;\n }(BubbleSeries));\n extend(PackedBubbleSeries.prototype, {\n pointClass: PackedBubblePoint,\n axisTypes: [],\n directTouch: true,\n forces: ['barycenter', 'repulsive'],\n hasDraggableNodes: true,\n isCartesian: false,\n noSharedTooltip: true,\n pointArrayMap: ['value'],\n pointValKey: 'value',\n requireSorting: false,\n trackerGroups: ['group', 'dataLabelsGroup', 'parentNodesGroup'],\n alignDataLabel: seriesProto.alignDataLabel,\n indexateNodes: noop,\n onMouseDown: DragNodesComposition.onMouseDown,\n onMouseMove: DragNodesComposition.onMouseMove,\n redrawHalo: DragNodesComposition.redrawHalo,\n searchPoint: noop // solving #12287\n });\n SeriesRegistry.registerSeriesType('packedbubble', PackedBubbleSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Formatter callback function.\n *\n * @callback Highcharts.SeriesPackedBubbleDataLabelsFormatterCallbackFunction\n *\n * @param {Highcharts.SeriesPackedBubbleDataLabelsFormatterContextObject} this\n * Data label context to format\n *\n * @return {string}\n * Formatted data label text\n */\n /**\n * Context for the formatter function.\n *\n * @interface Highcharts.SeriesPackedBubbleDataLabelsFormatterContextObject\n * @extends Highcharts.PointLabelObject\n * @since 7.0.0\n */ /**\n * The color of the node.\n * @name Highcharts.SeriesPackedBubbleDataLabelsFormatterContextObject#color\n * @type {Highcharts.ColorString}\n * @since 7.0.0\n */ /**\n * The point (node) object. The node name, if defined, is available through\n * `this.point.name`. Arrays: `this.point.linksFrom` and `this.point.linksTo`\n * contains all nodes connected to this point.\n * @name Highcharts.SeriesPackedBubbleDataLabelsFormatterContextObject#point\n * @type {Highcharts.Point}\n * @since 7.0.0\n */ /**\n * The ID of the node.\n * @name Highcharts.SeriesPackedBubbleDataLabelsFormatterContextObject#key\n * @type {string}\n * @since 7.0.0\n */\n ''; // detach doclets above\n\n return PackedBubbleSeries;\n });\n _registerModule(_modules, 'Series/Polygon/PolygonSeries.js', [_modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (H, LegendSymbol, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var noop = H.noop;\n var Series = SeriesRegistry.series,\n _a = SeriesRegistry.seriesTypes,\n AreaSeries = _a.area,\n LineSeries = _a.line,\n ScatterSeries = _a.scatter;\n var extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n var PolygonSeries = /** @class */ (function (_super) {\n __extends(PolygonSeries, _super);\n function PolygonSeries() {\n /* *\n *\n * Static properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n PolygonSeries.prototype.getGraphPath = function () {\n var graphPath = LineSeries.prototype.getGraphPath.call(this),\n i = graphPath.length + 1;\n // Close all segments\n while (i--) {\n if ((i === graphPath.length || graphPath[i][0] === 'M') && i > 0) {\n graphPath.splice(i, 0, ['Z']);\n }\n }\n this.areaPath = graphPath;\n return graphPath;\n };\n PolygonSeries.prototype.drawGraph = function () {\n // Hack into the fill logic in area.drawGraph\n this.options.fillColor = this.color;\n AreaSeries.prototype.drawGraph.call(this);\n };\n /**\n * A polygon series can be used to draw any freeform shape in the cartesian\n * coordinate system. A fill is applied with the `color` option, and\n * stroke is applied through `lineWidth` and `lineColor` options.\n *\n * @sample {highcharts} highcharts/demo/polygon/\n * Polygon\n * @sample {highstock} highcharts/demo/polygon/\n * Polygon\n *\n * @extends plotOptions.scatter\n * @since 4.1.0\n * @excluding jitter, softThreshold, threshold, cluster, boostThreshold,\n * boostBlending\n * @product highcharts highstock\n * @requires highcharts-more\n * @optionparent plotOptions.polygon\n */\n PolygonSeries.defaultOptions = merge(ScatterSeries.defaultOptions, {\n marker: {\n enabled: false,\n states: {\n hover: {\n enabled: false\n }\n }\n },\n stickyTracking: false,\n tooltip: {\n followPointer: true,\n pointFormat: ''\n },\n trackByArea: true\n });\n return PolygonSeries;\n }(ScatterSeries));\n extend(PolygonSeries.prototype, {\n type: 'polygon',\n drawLegendSymbol: LegendSymbol.drawRectangle,\n drawTracker: Series.prototype.drawTracker,\n setStackedPoints: noop // No stacking points on polygons (#5310)\n });\n SeriesRegistry.registerSeriesType('polygon', PolygonSeries);\n /* *\n *\n * Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `polygon` series. If the [type](#series.polygon.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.polygon\n * @excluding dataParser, dataURL, stack, boostThreshold, boostBlending\n * @product highcharts highstock\n * @requires highcharts-more\n * @apioption series.polygon\n */\n /**\n * An array of data points for the series. For the `polygon` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 10],\n * [1, 3],\n * [2, 1]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.polygon.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 8,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.polygon.data\n */\n ''; // adds doclets above to transpiled file\n\n return PolygonSeries;\n });\n _registerModule(_modules, 'Core/Axis/WaterfallAxis.js', [_modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Utilities.js']], function (StackItem, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n objectEach = U.objectEach;\n /**\n * @private\n */\n var WaterfallAxis;\n (function (WaterfallAxis) {\n /* *\n *\n * Interfaces\n *\n * */\n /* *\n *\n * Classes\n *\n * */\n /**\n * @private\n */\n var Composition = /** @class */ (function () {\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /* *\n *\n * Constructors\n *\n * */\n /**\n * @private\n */\n function Composition(axis) {\n this.axis = axis;\n this.stacks = {\n changed: false\n };\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Calls StackItem.prototype.render function that creates and renders\n * stack total label for each waterfall stack item.\n *\n * @private\n * @function Highcharts.Axis#renderWaterfallStackTotals\n */\n Composition.prototype.renderStackTotals = function () {\n var yAxis = this.axis,\n waterfallStacks = yAxis.waterfall.stacks,\n stackTotalGroup = (yAxis.stacking && yAxis.stacking.stackTotalGroup),\n dummyStackItem = new StackItem(yAxis,\n yAxis.options.stackLabels || {},\n false, 0,\n void 0);\n this.dummyStackItem = dummyStackItem;\n // Render each waterfall stack total\n if (stackTotalGroup) {\n objectEach(waterfallStacks, function (type) {\n objectEach(type, function (stackItem, key) {\n dummyStackItem.total = stackItem.stackTotal;\n dummyStackItem.x = +key;\n if (stackItem.label) {\n dummyStackItem.label = stackItem.label;\n }\n StackItem.prototype.render.call(dummyStackItem, stackTotalGroup);\n stackItem.label = dummyStackItem.label;\n delete dummyStackItem.label;\n });\n });\n }\n dummyStackItem.total = null;\n };\n return Composition;\n }());\n WaterfallAxis.Composition = Composition;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * @private\n */\n function compose(AxisClass, ChartClass) {\n addEvent(AxisClass, 'init', onInit);\n addEvent(AxisClass, 'afterBuildStacks', onAfterBuildStacks);\n addEvent(AxisClass, 'afterRender', onAfterRender);\n addEvent(ChartClass, 'beforeRedraw', onBeforeRedraw);\n }\n WaterfallAxis.compose = compose;\n /**\n * @private\n */\n function onAfterBuildStacks() {\n var axis = this;\n var stacks = axis.waterfall.stacks;\n if (stacks) {\n stacks.changed = false;\n delete stacks.alreadyChanged;\n }\n }\n /**\n * @private\n */\n function onAfterRender() {\n var axis = this;\n var stackLabelOptions = axis.options.stackLabels;\n if (stackLabelOptions && stackLabelOptions.enabled &&\n axis.waterfall.stacks) {\n axis.waterfall.renderStackTotals();\n }\n }\n /**\n * @private\n */\n function onBeforeRedraw() {\n var axes = this.axes,\n series = this.series,\n i = series.length;\n while (i--) {\n if (series[i].options.stacking) {\n axes.forEach(function (axis) {\n if (!axis.isXAxis) {\n axis.waterfall.stacks.changed = true;\n }\n });\n i = 0;\n }\n }\n }\n /**\n * @private\n */\n function onInit() {\n var axis = this;\n if (!axis.waterfall) {\n axis.waterfall = new Composition(axis);\n }\n }\n })(WaterfallAxis || (WaterfallAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return WaterfallAxis;\n });\n _registerModule(_modules, 'Series/Waterfall/WaterfallPoint.js', [_modules['Series/Column/ColumnSeries.js'], _modules['Core/Series/Point.js'], _modules['Core/Utilities.js']], function (ColumnSeries, Point, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var isNumber = U.isNumber;\n /* *\n *\n * Class\n *\n * */\n var WaterfallPoint = /** @class */ (function (_super) {\n __extends(WaterfallPoint, _super);\n function WaterfallPoint() {\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.options = void 0;\n _this.series = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n WaterfallPoint.prototype.getClassName = function () {\n var className = Point.prototype.getClassName.call(this);\n if (this.isSum) {\n className += ' highcharts-sum';\n }\n else if (this.isIntermediateSum) {\n className += ' highcharts-intermediate-sum';\n }\n return className;\n };\n // Pass the null test in ColumnSeries.translate.\n WaterfallPoint.prototype.isValid = function () {\n return (isNumber(this.y) ||\n this.isSum ||\n Boolean(this.isIntermediateSum));\n };\n return WaterfallPoint;\n }(ColumnSeries.prototype.pointClass));\n /* *\n *\n * Export\n *\n * */\n\n return WaterfallPoint;\n });\n _registerModule(_modules, 'Series/Waterfall/WaterfallSeries.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js'], _modules['Core/Axis/WaterfallAxis.js'], _modules['Series/Waterfall/WaterfallPoint.js']], function (Axis, Chart, SeriesRegistry, U, WaterfallAxis, WaterfallPoint) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var _a = SeriesRegistry.seriesTypes,\n ColumnSeries = _a.column,\n LineSeries = _a.line;\n var arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n correctFloat = U.correctFloat,\n extend = U.extend,\n isNumber = U.isNumber,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /**\n * Returns true if the key is a direct property of the object.\n * @private\n * @param {*} obj\n * Object with property to test\n * @param {string} key\n * Property key to test\n * @return {boolean}\n * Whether it is a direct property\n */\n function ownProp(obj, key) {\n return Object.hasOwnProperty.call(obj, key);\n }\n /* eslint-disable no-invalid-this, valid-jsdoc */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Waterfall series type.\n *\n * @private\n */\n var WaterfallSeries = /** @class */ (function (_super) {\n __extends(WaterfallSeries, _super);\n function WaterfallSeries() {\n /* *\n *\n * Static properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.chart = void 0;\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n _this.stackedYNeg = void 0;\n _this.stackedYPos = void 0;\n _this.stackKey = void 0;\n _this.xData = void 0;\n _this.yAxis = void 0;\n _this.yData = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n // After generating points, set y-values for all sums.\n WaterfallSeries.prototype.generatePoints = function () {\n // Parent call:\n ColumnSeries.prototype.generatePoints.apply(this);\n for (var i = 0, len = this.points.length; i < len; i++) {\n var point = this.points[i],\n y = this.processedYData[i];\n // Override point value for sums. #3710 Update point does not\n // propagate to sum\n if (isNumber(y) && (point.isIntermediateSum || point.isSum)) {\n point.y = correctFloat(y);\n }\n }\n };\n // Translate data points from raw values\n WaterfallSeries.prototype.translate = function () {\n var series = this,\n options = series.options,\n yAxis = series.yAxis,\n minPointLength = pick(options.minPointLength, 5),\n halfMinPointLength = minPointLength / 2,\n threshold = options.threshold || 0,\n stacking = options.stacking,\n actualStack = yAxis.waterfall.stacks[series.stackKey];\n var previousIntermediate = threshold,\n previousY = threshold,\n y,\n total,\n yPos,\n hPos;\n // run column series translate\n ColumnSeries.prototype.translate.apply(series);\n var points = series.points;\n for (var i = 0; i < points.length; i++) {\n var point = points[i],\n yValue = series.processedYData[i],\n shapeArgs = point.shapeArgs;\n if (!shapeArgs || !isNumber(yValue)) {\n continue;\n }\n var range = [0,\n yValue],\n pointY = point.y;\n // code responsible for correct positions of stacked points\n // starts here\n if (stacking) {\n if (actualStack) {\n var actualStackX = actualStack[i];\n if (stacking === 'overlap') {\n total =\n actualStackX.stackState[actualStackX.stateIndex--];\n y = pointY >= 0 ? total : total - pointY;\n if (ownProp(actualStackX, 'absolutePos')) {\n delete actualStackX.absolutePos;\n }\n if (ownProp(actualStackX, 'absoluteNeg')) {\n delete actualStackX.absoluteNeg;\n }\n }\n else {\n if (pointY >= 0) {\n total = actualStackX.threshold +\n actualStackX.posTotal;\n actualStackX.posTotal -= pointY;\n y = total;\n }\n else {\n total = actualStackX.threshold +\n actualStackX.negTotal;\n actualStackX.negTotal -= pointY;\n y = total - pointY;\n }\n if (!actualStackX.posTotal) {\n if (isNumber(actualStackX.absolutePos) &&\n ownProp(actualStackX, 'absolutePos')) {\n actualStackX.posTotal =\n actualStackX.absolutePos;\n delete actualStackX.absolutePos;\n }\n }\n if (!actualStackX.negTotal) {\n if (isNumber(actualStackX.absoluteNeg) &&\n ownProp(actualStackX, 'absoluteNeg')) {\n actualStackX.negTotal =\n actualStackX.absoluteNeg;\n delete actualStackX.absoluteNeg;\n }\n }\n }\n if (!point.isSum) {\n // the connectorThreshold property is later used in\n // getCrispPath function to draw a connector line in a\n // correct place\n actualStackX.connectorThreshold =\n actualStackX.threshold + actualStackX.stackTotal;\n }\n if (yAxis.reversed) {\n yPos = (pointY >= 0) ? (y - pointY) : (y + pointY);\n hPos = y;\n }\n else {\n yPos = y;\n hPos = y - pointY;\n }\n point.below = yPos <= threshold;\n shapeArgs.y = yAxis.translate(yPos, false, true, false, true);\n shapeArgs.height = Math.abs(shapeArgs.y -\n yAxis.translate(hPos, false, true, false, true));\n var dummyStackItem = yAxis.waterfall.dummyStackItem;\n if (dummyStackItem) {\n dummyStackItem.x = i;\n dummyStackItem.label = actualStack[i].label;\n dummyStackItem.setOffset(series.pointXOffset || 0, series.barW || 0, series.stackedYNeg[i], series.stackedYPos[i], void 0, this.xAxis);\n }\n }\n }\n else {\n // up points\n y = Math.max(previousY, previousY + pointY) + range[0];\n shapeArgs.y = yAxis.translate(y, false, true, false, true);\n // sum points\n if (point.isSum) {\n shapeArgs.y = yAxis.translate(range[1], false, true, false, true);\n shapeArgs.height = Math.min(yAxis.translate(range[0], false, true, false, true), yAxis.len) - shapeArgs.y; // #4256\n point.below = range[1] <= threshold;\n }\n else if (point.isIntermediateSum) {\n if (pointY >= 0) {\n yPos = range[1] + previousIntermediate;\n hPos = previousIntermediate;\n }\n else {\n yPos = previousIntermediate;\n hPos = range[1] + previousIntermediate;\n }\n if (yAxis.reversed) {\n // swapping values\n yPos ^= hPos;\n hPos ^= yPos;\n yPos ^= hPos;\n }\n shapeArgs.y = yAxis.translate(yPos, false, true, false, true);\n shapeArgs.height = Math.abs(shapeArgs.y -\n Math.min(yAxis.translate(hPos, false, true, false, true), yAxis.len));\n previousIntermediate += range[1];\n point.below = yPos <= threshold;\n // If it's not the sum point, update previous stack end position\n // and get shape height (#3886)\n }\n else {\n shapeArgs.height = yValue > 0 ?\n yAxis.translate(previousY, false, true, false, true) - shapeArgs.y :\n yAxis.translate(previousY, false, true, false, true) - yAxis.translate(previousY - yValue, false, true, false, true);\n previousY += yValue;\n point.below = previousY < threshold;\n }\n // #3952 Negative sum or intermediate sum not rendered correctly\n if (shapeArgs.height < 0) {\n shapeArgs.y += shapeArgs.height;\n shapeArgs.height *= -1;\n }\n }\n point.plotY = shapeArgs.y =\n Math.round(shapeArgs.y || 0) - (series.borderWidth % 2) / 2;\n // #3151\n shapeArgs.height =\n Math.max(Math.round(shapeArgs.height || 0), 0.001);\n point.yBottom = shapeArgs.y + shapeArgs.height;\n if (shapeArgs.height <= minPointLength && !point.isNull) {\n shapeArgs.height = minPointLength;\n shapeArgs.y -= halfMinPointLength;\n point.plotY = shapeArgs.y;\n if (point.y < 0) {\n point.minPointLengthOffset = -halfMinPointLength;\n }\n else {\n point.minPointLengthOffset = halfMinPointLength;\n }\n }\n else {\n if (point.isNull) {\n shapeArgs.width = 0;\n }\n point.minPointLengthOffset = 0;\n }\n // Correct tooltip placement (#3014)\n var tooltipY = point.plotY + (point.negative ? shapeArgs.height : 0);\n if (point.below) { // #15334\n point.plotY += shapeArgs.height;\n }\n if (point.tooltipPos) {\n if (series.chart.inverted) {\n point.tooltipPos[0] = yAxis.len - tooltipY;\n }\n else {\n point.tooltipPos[1] = tooltipY;\n }\n }\n // Check point position after recalculation (#16788)\n point.isInside = this.isPointInside(point);\n }\n };\n // Call default processData then override yData to reflect waterfall's\n // extremes on yAxis\n WaterfallSeries.prototype.processData = function (force) {\n var series = this,\n options = series.options,\n yData = series.yData, \n // #3710 Update point does not propagate to sum\n points = options.data,\n point,\n dataLength = yData.length,\n threshold = options.threshold || 0,\n subSum,\n sum,\n dataMin,\n dataMax,\n y,\n i;\n sum = subSum = dataMin = dataMax = 0;\n for (i = 0; i < dataLength; i++) {\n y = yData[i];\n point = points && points[i] ? points[i] : {};\n if (y === 'sum' || point.isSum) {\n yData[i] = correctFloat(sum);\n }\n else if (y === 'intermediateSum' ||\n point.isIntermediateSum) {\n yData[i] = correctFloat(subSum);\n subSum = 0;\n }\n else {\n sum += y;\n subSum += y;\n }\n dataMin = Math.min(sum, dataMin);\n dataMax = Math.max(sum, dataMax);\n }\n _super.prototype.processData.call(this, force);\n // Record extremes only if stacking was not set:\n if (!options.stacking) {\n series.dataMin = dataMin + threshold;\n series.dataMax = dataMax;\n }\n return;\n };\n // Return y value or string if point is sum\n WaterfallSeries.prototype.toYData = function (pt) {\n if (pt.isSum) {\n return 'sum';\n }\n if (pt.isIntermediateSum) {\n return 'intermediateSum';\n }\n return pt.y;\n };\n WaterfallSeries.prototype.updateParallelArrays = function (point, i) {\n _super.prototype.updateParallelArrays.call(this, point, i);\n // Prevent initial sums from triggering an error (#3245, #7559)\n if (this.yData[0] === 'sum' || this.yData[0] === 'intermediateSum') {\n this.yData[0] = null;\n }\n };\n // Postprocess mapping between options and SVG attributes\n WaterfallSeries.prototype.pointAttribs = function (point, state) {\n var upColor = this.options.upColor;\n // Set or reset up color (#3710, update to negative)\n if (upColor && !point.options.color) {\n point.color = point.y > 0 ? upColor : void 0;\n }\n var attr = ColumnSeries.prototype.pointAttribs.call(this,\n point,\n state);\n // The dashStyle option in waterfall applies to the graph, not\n // the points\n delete attr.dashstyle;\n return attr;\n };\n // Return an empty path initially, because we need to know the stroke-width\n // in order to set the final path.\n WaterfallSeries.prototype.getGraphPath = function () {\n return [['M', 0, 0]];\n };\n // Draw columns' connector lines\n WaterfallSeries.prototype.getCrispPath = function () {\n var data = this.data,\n yAxis = this.yAxis,\n length = data.length,\n graphNormalizer = Math.round(this.graph.strokeWidth()) % 2 / 2,\n borderNormalizer = Math.round(this.borderWidth) % 2 / 2,\n reversedXAxis = this.xAxis.reversed,\n reversedYAxis = this.yAxis.reversed,\n stacking = this.options.stacking,\n path = [],\n connectorThreshold,\n prevStack,\n prevStackX,\n prevPoint,\n yPos,\n isPos,\n prevArgs,\n pointArgs,\n i;\n for (i = 1; i < length; i++) {\n pointArgs = data[i].shapeArgs;\n prevPoint = data[i - 1];\n prevArgs = data[i - 1].shapeArgs;\n prevStack = yAxis.waterfall.stacks[this.stackKey];\n isPos = prevPoint.y > 0 ? -prevArgs.height : 0;\n if (prevStack && prevArgs && pointArgs) {\n prevStackX = prevStack[i - 1];\n // y position of the connector is different when series are\n // stacked, yAxis is reversed and it also depends on point's\n // value\n if (stacking) {\n connectorThreshold = prevStackX.connectorThreshold;\n yPos = Math.round((yAxis.translate(connectorThreshold, false, true, false, true) +\n (reversedYAxis ? isPos : 0))) - graphNormalizer;\n }\n else {\n yPos =\n prevArgs.y + prevPoint.minPointLengthOffset +\n borderNormalizer - graphNormalizer;\n }\n path.push([\n 'M',\n (prevArgs.x || 0) + (reversedXAxis ?\n 0 :\n (prevArgs.width || 0)),\n yPos\n ], [\n 'L',\n (pointArgs.x || 0) + (reversedXAxis ?\n (pointArgs.width || 0) :\n 0),\n yPos\n ]);\n }\n if (prevArgs &&\n path.length &&\n ((!stacking && prevPoint.y < 0 && !reversedYAxis) ||\n (prevPoint.y > 0 && reversedYAxis))) {\n var nextLast = path[path.length - 2];\n if (nextLast && typeof nextLast[2] === 'number') {\n nextLast[2] += prevArgs.height || 0;\n }\n var last = path[path.length - 1];\n if (last && typeof last[2] === 'number') {\n last[2] += prevArgs.height || 0;\n }\n }\n }\n return path;\n };\n // The graph is initially drawn with an empty definition, then updated with\n // crisp rendering.\n WaterfallSeries.prototype.drawGraph = function () {\n LineSeries.prototype.drawGraph.call(this);\n if (this.graph) {\n this.graph.attr({\n d: this.getCrispPath()\n });\n }\n };\n // Waterfall has stacking along the x-values too.\n WaterfallSeries.prototype.setStackedPoints = function () {\n var series = this,\n options = series.options,\n waterfallStacks = series.yAxis.waterfall.stacks,\n seriesThreshold = options.threshold || 0,\n stackThreshold = seriesThreshold,\n interSum = stackThreshold,\n stackKey = series.stackKey,\n xData = series.xData,\n xLength = xData.length,\n actualStackX,\n totalYVal,\n actualSum,\n prevSum,\n statesLen,\n posTotal,\n negTotal,\n xPoint,\n yVal,\n x,\n alreadyChanged,\n changed;\n // Function responsible for calculating correct values for stackState\n // array of each stack item. The arguments are: firstS - the value for\n // the first state, nextS - the difference between the previous and the\n // newest state, sInx - counter used in the for that updates each state\n // when necessary, sOff - offset that must be added to each state when\n // they need to be updated (if point isn't a total sum)\n // eslint-disable-next-line require-jsdoc\n function calculateStackState(firstS, nextS, sInx, sOff) {\n if (actualStackX) {\n if (!statesLen) {\n actualStackX.stackState[0] = firstS;\n statesLen = actualStackX.stackState.length;\n }\n else {\n for (sInx; sInx < statesLen; sInx++) {\n actualStackX.stackState[sInx] += sOff;\n }\n }\n actualStackX.stackState.push(actualStackX.stackState[statesLen - 1] + nextS);\n }\n }\n series.yAxis.stacking.usePercentage = false;\n totalYVal = actualSum = prevSum = stackThreshold;\n // code responsible for creating stacks for waterfall series\n if (series.visible ||\n !series.chart.options.chart.ignoreHiddenSeries) {\n changed = waterfallStacks.changed;\n alreadyChanged = waterfallStacks.alreadyChanged;\n // In case of a redraw, stack for each x value must be emptied (only\n // for the first series in a specific stack) and recalculated once\n // more\n if (alreadyChanged &&\n alreadyChanged.indexOf(stackKey) < 0) {\n changed = true;\n }\n if (!waterfallStacks[stackKey]) {\n waterfallStacks[stackKey] = {};\n }\n var actualStack = waterfallStacks[stackKey];\n if (actualStack) {\n for (var i = 0; i < xLength; i++) {\n x = xData[i];\n if (!actualStack[x] || changed) {\n actualStack[x] = {\n negTotal: 0,\n posTotal: 0,\n stackTotal: 0,\n threshold: 0,\n stateIndex: 0,\n stackState: [],\n label: ((changed &&\n actualStack[x]) ?\n actualStack[x].label :\n void 0)\n };\n }\n actualStackX = actualStack[x];\n yVal = series.yData[i];\n if (yVal >= 0) {\n actualStackX.posTotal += yVal;\n }\n else {\n actualStackX.negTotal += yVal;\n }\n // points do not exist yet, so raw data is used\n xPoint = options.data[i];\n posTotal = actualStackX.absolutePos = actualStackX.posTotal;\n negTotal = actualStackX.absoluteNeg = actualStackX.negTotal;\n actualStackX.stackTotal = posTotal + negTotal;\n statesLen = actualStackX.stackState.length;\n if (xPoint && xPoint.isIntermediateSum) {\n calculateStackState(prevSum, actualSum, 0, prevSum);\n prevSum = actualSum;\n actualSum = seriesThreshold;\n // swapping values\n stackThreshold ^= interSum;\n interSum ^= stackThreshold;\n stackThreshold ^= interSum;\n }\n else if (xPoint && xPoint.isSum) {\n calculateStackState(seriesThreshold, totalYVal, statesLen, 0);\n stackThreshold = seriesThreshold;\n }\n else {\n calculateStackState(stackThreshold, yVal, 0, totalYVal);\n if (xPoint) {\n totalYVal += yVal;\n actualSum += yVal;\n }\n }\n actualStackX.stateIndex++;\n actualStackX.threshold = stackThreshold;\n stackThreshold += actualStackX.stackTotal;\n }\n }\n waterfallStacks.changed = false;\n if (!waterfallStacks.alreadyChanged) {\n waterfallStacks.alreadyChanged = [];\n }\n waterfallStacks.alreadyChanged.push(stackKey);\n }\n };\n // Extremes for a non-stacked series are recorded in processData.\n // In case of stacking, use Series.stackedYData to calculate extremes.\n WaterfallSeries.prototype.getExtremes = function () {\n var stacking = this.options.stacking,\n yAxis,\n waterfallStacks,\n stackedYNeg,\n stackedYPos;\n if (stacking) {\n yAxis = this.yAxis;\n waterfallStacks = yAxis.waterfall.stacks;\n stackedYNeg = this.stackedYNeg = [];\n stackedYPos = this.stackedYPos = [];\n // the visible y range can be different when stacking is set to\n // overlap and different when it's set to normal\n if (stacking === 'overlap') {\n objectEach(waterfallStacks[this.stackKey], function (stackX) {\n stackedYNeg.push(arrayMin(stackX.stackState));\n stackedYPos.push(arrayMax(stackX.stackState));\n });\n }\n else {\n objectEach(waterfallStacks[this.stackKey], function (stackX) {\n stackedYNeg.push(stackX.negTotal + stackX.threshold);\n stackedYPos.push(stackX.posTotal + stackX.threshold);\n });\n }\n return {\n dataMin: arrayMin(stackedYNeg),\n dataMax: arrayMax(stackedYPos)\n };\n }\n // When not stacking, data extremes have already been computed in the\n // processData function.\n return {\n dataMin: this.dataMin,\n dataMax: this.dataMax\n };\n };\n /**\n * A waterfall chart displays sequentially introduced positive or negative\n * values in cumulative columns.\n *\n * @sample highcharts/demo/waterfall/\n * Waterfall chart\n * @sample highcharts/plotoptions/waterfall-inverted/\n * Horizontal (inverted) waterfall\n * @sample highcharts/plotoptions/waterfall-stacked/\n * Stacked waterfall chart\n *\n * @extends plotOptions.column\n * @excluding boostThreshold, boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @optionparent plotOptions.waterfall\n */\n WaterfallSeries.defaultOptions = merge(ColumnSeries.defaultOptions, {\n /**\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.waterfall.color\n */\n /**\n * The color used specifically for positive point columns. When not\n * specified, the general series color is used.\n *\n * In styled mode, the waterfall colors can be set with the\n * `.highcharts-point-negative`, `.highcharts-sum` and\n * `.highcharts-intermediate-sum` classes.\n *\n * @sample {highcharts} highcharts/demo/waterfall/\n * Waterfall\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts\n * @apioption plotOptions.waterfall.upColor\n */\n dataLabels: {\n inside: true\n },\n /**\n * The width of the line connecting waterfall columns.\n *\n * @product highcharts\n */\n lineWidth: 1,\n /**\n * The color of the line that connects columns in a waterfall series.\n *\n * In styled mode, the stroke can be set with the `.highcharts-graph`\n * class.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n */\n lineColor: \"#333333\" /* Palette.neutralColor80 */,\n /**\n * A name for the dash style to use for the line connecting the columns\n * of the waterfall series. Possible values: Dash, DashDot, Dot,\n * LongDash, LongDashDot, LongDashDotDot, ShortDash, ShortDashDot,\n * ShortDashDotDot, ShortDot, Solid\n *\n * In styled mode, the stroke dash-array can be set with the\n * `.highcharts-graph` class.\n *\n * @type {Highcharts.DashStyleValue}\n * @since 3.0\n * @product highcharts\n */\n dashStyle: 'Dot',\n /**\n * The color of the border of each waterfall column.\n *\n * In styled mode, the border stroke can be set with the\n * `.highcharts-point` class.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n */\n borderColor: \"#333333\" /* Palette.neutralColor80 */,\n states: {\n hover: {\n lineWidthPlus: 0 // #3126\n }\n }\n });\n return WaterfallSeries;\n }(ColumnSeries));\n extend(WaterfallSeries.prototype, {\n getZonesGraphs: LineSeries.prototype.getZonesGraphs,\n pointValKey: 'y',\n // Property needed to prevent lines between the columns from disappearing\n // when negativeColor is used.\n showLine: true,\n pointClass: WaterfallPoint\n });\n SeriesRegistry.registerSeriesType('waterfall', WaterfallSeries);\n WaterfallAxis.compose(Axis, Chart);\n /* *\n *\n * Export\n *\n * */\n /**\n *\n * API Options\n *\n */\n /**\n * A `waterfall` series. If the [type](#series.waterfall.type) option\n * is not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.waterfall\n * @excluding dataParser, dataURL, boostThreshold, boostBlending\n * @product highcharts\n * @requires highcharts-more\n * @apioption series.waterfall\n */\n /**\n * An array of data points for the series. For the `waterfall` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 7],\n * [1, 8],\n * [2, 3]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.waterfall.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 8,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 8,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @excluding marker\n * @product highcharts\n * @apioption series.waterfall.data\n */\n /**\n * When this property is true, the points acts as a summary column for\n * the values added or substracted since the last intermediate sum,\n * or since the start of the series. The `y` value is ignored.\n *\n * @sample {highcharts} highcharts/demo/waterfall/\n * Waterfall\n *\n * @type {boolean}\n * @default false\n * @product highcharts\n * @apioption series.waterfall.data.isIntermediateSum\n */\n /**\n * When this property is true, the point display the total sum across\n * the entire series. The `y` value is ignored.\n *\n * @sample {highcharts} highcharts/demo/waterfall/\n * Waterfall\n *\n * @type {boolean}\n * @default false\n * @product highcharts\n * @apioption series.waterfall.data.isSum\n */\n ''; // adds doclets above to transpiled file\n\n return WaterfallSeries;\n });\n _registerModule(_modules, 'Core/Axis/RadialAxis.js', [_modules['Core/Axis/AxisDefaults.js'], _modules['Core/Defaults.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (AxisDefaults, D, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions;\n var noop = H.noop;\n var addEvent = U.addEvent,\n correctFloat = U.correctFloat,\n defined = U.defined,\n extend = U.extend,\n fireEvent = U.fireEvent,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength,\n wrap = U.wrap;\n /* *\n *\n * Composition\n *\n * */\n var RadialAxis;\n (function (RadialAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /**\n * Circular axis around the perimeter of a polar chart.\n * @private\n */\n var defaultCircularOptions = {\n gridLineWidth: 1,\n labels: {\n align: void 0,\n distance: 15,\n x: 0,\n y: void 0,\n style: {\n textOverflow: 'none' // wrap lines by default (#7248)\n }\n },\n maxPadding: 0,\n minPadding: 0,\n showLastLabel: false,\n tickLength: 0\n };\n /**\n * The default options extend defaultYAxisOptions.\n * @private\n */\n var defaultRadialGaugeOptions = {\n labels: {\n align: 'center',\n x: 0,\n y: void 0 // auto\n },\n minorGridLineWidth: 0,\n minorTickInterval: 'auto',\n minorTickLength: 10,\n minorTickPosition: 'inside',\n minorTickWidth: 1,\n tickLength: 10,\n tickPosition: 'inside',\n tickWidth: 2,\n title: {\n rotation: 0\n },\n zIndex: 2 // behind dials, points in the series group\n };\n /**\n * Radial axis, like a spoke in a polar chart.\n * @private\n */\n var defaultRadialOptions = {\n /**\n * In a polar chart, this is the angle of the Y axis in degrees, where\n * 0 is up and 90 is right. The angle determines the position of the\n * axis line and the labels, though the coordinate system is unaffected.\n * Since v8.0.0 this option is also applicable for X axis (inverted\n * polar).\n *\n * @sample {highcharts} highcharts/xaxis/angle/\n * Custom X axis' angle on inverted polar chart\n * @sample {highcharts} highcharts/yaxis/angle/\n * Dual axis polar chart\n *\n * @type {number}\n * @default 0\n * @since 4.2.7\n * @product highcharts\n * @apioption xAxis.angle\n */\n /**\n * Polar charts only. Whether the grid lines should draw as a polygon\n * with straight lines between categories, or as circles. Can be either\n * `circle` or `polygon`. Since v8.0.0 this option is also applicable\n * for X axis (inverted polar).\n *\n * @sample {highcharts} highcharts/demo/polar-spider/\n * Polygon grid lines\n * @sample {highcharts} highcharts/xaxis/gridlineinterpolation/\n * Circle and polygon on inverted polar\n * @sample {highcharts} highcharts/yaxis/gridlineinterpolation/\n * Circle and polygon\n *\n * @type {string}\n * @product highcharts\n * @validvalue [\"circle\", \"polygon\"]\n * @apioption xAxis.gridLineInterpolation\n */\n gridLineInterpolation: 'circle',\n gridLineWidth: 1,\n labels: {\n align: 'right',\n x: -3,\n y: -2\n },\n showLastLabel: false,\n title: {\n x: 4,\n text: null,\n rotation: 90\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * In case of auto connect, add one closestPointRange to the max value\n * right before tickPositions are computed, so that ticks will extend\n * passed the real max.\n * @private\n */\n function beforeSetTickPositions() {\n // If autoConnect is true, polygonal grid lines are connected, and\n // one closestPointRange is added to the X axis to prevent the last\n // point from overlapping the first.\n this.autoConnect = (this.isCircular &&\n typeof pick(this.userMax, this.options.max) === 'undefined' &&\n correctFloat(this.endAngleRad - this.startAngleRad) ===\n correctFloat(2 * Math.PI));\n // This will lead to add an extra tick to xAxis in order to display\n // a correct range on inverted polar\n if (!this.isCircular && this.chart.inverted) {\n this.max++;\n }\n if (this.autoConnect) {\n this.max += ((this.categories && 1) ||\n this.pointRange ||\n this.closestPointRange ||\n 0); // #1197, #2260\n }\n }\n /**\n * Augments methods for the value axis.\n *\n * @private\n *\n * @param {Highcharts.Axis} AxisClass\n * Axis class to extend.\n *\n * @param {Highcharts.Tick} TickClass\n * Tick class to use.\n *\n * @return {Highcharts.Axis}\n * Axis composition.\n */\n function compose(AxisClass, TickClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n addEvent(AxisClass, 'afterInit', onAxisAfterInit);\n addEvent(AxisClass, 'autoLabelAlign', onAxisAutoLabelAlign);\n addEvent(AxisClass, 'destroy', onAxisDestroy);\n addEvent(AxisClass, 'init', onAxisInit);\n addEvent(AxisClass, 'initialAxisTranslation', onAxisInitialAxisTranslation);\n }\n if (composedClasses.indexOf(TickClass) === -1) {\n composedClasses.push(TickClass);\n addEvent(TickClass, 'afterGetLabelPosition', onTickAfterGetLabelPosition);\n addEvent(TickClass, 'afterGetPosition', onTickAfterGetPosition);\n wrap(TickClass.prototype, 'getMarkPath', wrapTickGetMarkPath);\n }\n return AxisClass;\n }\n RadialAxis.compose = compose;\n /**\n * Attach and return collecting function for labels in radial axis for\n * anti-collision.\n *\n * @private\n */\n function createLabelCollector() {\n var _this = this;\n return function () {\n if (_this.isRadial &&\n _this.tickPositions &&\n // undocumented option for now, but working\n _this.options.labels &&\n _this.options.labels.allowOverlap !== true) {\n return _this.tickPositions\n .map(function (pos) {\n return _this.ticks[pos] && _this.ticks[pos].label;\n })\n .filter(function (label) {\n return Boolean(label);\n });\n }\n };\n }\n /**\n * Creates an empty collector function.\n * @private\n */\n function createLabelCollectorHidden() {\n return noop;\n }\n /**\n * Find the correct end values of crosshair in polar.\n * @private\n */\n function getCrosshairPosition(options, x1, y1) {\n var center = this.pane.center;\n var value = options.value,\n shapeArgs,\n end,\n x2,\n y2;\n if (this.isCircular) {\n if (!defined(value)) {\n // When the snap is set to false\n x2 = options.chartX || 0;\n y2 = options.chartY || 0;\n value = this.translate(Math.atan2(y2 - y1, x2 - x1) - this.startAngleRad, true);\n }\n else if (options.point) {\n // When the snap is set to true\n shapeArgs = options.point.shapeArgs || {};\n if (shapeArgs.start) {\n // Find a true value of the point based on the\n // angle\n value = this.chart.inverted ?\n this.translate(options.point.rectPlotY, true) :\n options.point.x;\n }\n }\n end = this.getPosition(value);\n x2 = end.x;\n y2 = end.y;\n }\n else {\n if (!defined(value)) {\n x2 = options.chartX;\n y2 = options.chartY;\n }\n if (defined(x2) && defined(y2)) {\n // Calculate radius of non-circular axis' crosshair\n y1 = center[1] + this.chart.plotTop;\n value = this.translate(Math.min(Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), center[2] / 2) - center[3] / 2, true);\n }\n }\n return [value, x2 || 0, y2 || 0];\n }\n /**\n * Get the path for the axis line. This method is also referenced in the\n * getPlotLinePath method.\n *\n * @private\n * @param {number} _lineWidth\n * Line width is not used.\n * @param {number} [radius]\n * Radius of radial path.\n * @param {number} [innerRadius]\n * Inner radius of radial path.\n */\n function getLinePath(_lineWidth, radius, innerRadius) {\n var center = this.pane.center,\n chart = this.chart,\n left = this.left || 0,\n top = this.top || 0;\n var end,\n r = pick(radius,\n center[2] / 2 - this.offset),\n path;\n if (typeof innerRadius === 'undefined') {\n innerRadius = this.horiz ? 0 : this.center && -this.center[3] / 2;\n }\n // In case when innerSize of pane is set, it must be included\n if (innerRadius) {\n r += innerRadius;\n }\n if (this.isCircular || typeof radius !== 'undefined') {\n path = this.chart.renderer.symbols.arc(left + center[0], top + center[1], r, r, {\n start: this.startAngleRad,\n end: this.endAngleRad,\n open: true,\n innerR: 0\n });\n // Bounds used to position the plotLine label next to the line\n // (#7117)\n path.xBounds = [left + center[0]];\n path.yBounds = [top + center[1] - r];\n }\n else {\n end = this.postTranslate(this.angleRad, r);\n path = [\n [\n 'M',\n this.center[0] + chart.plotLeft,\n this.center[1] + chart.plotTop\n ],\n ['L', end.x, end.y]\n ];\n }\n return path;\n }\n /**\n * Wrap the getOffset method to return zero offset for title or labels\n * in a radial axis.\n */\n function getOffset() {\n var axisProto = this.constructor.prototype;\n // Call the Axis prototype method (the method we're in now is on the\n // instance)\n axisProto.getOffset.call(this);\n // Title or label offsets are not counted\n this.chart.axisOffset[this.side] = 0;\n }\n /**\n * Find the path for plot bands along the radial axis.\n *\n * @private\n */\n function getPlotBandPath(from, to, options) {\n var chart = this.chart,\n radiusToPixels = function (radius) {\n if (typeof radius === 'string') {\n var r = parseInt(radius, 10);\n if (percentRegex.test(radius)) {\n r = (r * fullRadius) / 100;\n }\n return r;\n }\n return radius;\n }, center = this.center, startAngleRad = this.startAngleRad, fullRadius = center[2] / 2, offset = Math.min(this.offset, 0), left = this.left || 0, top = this.top || 0, percentRegex = /%$/, isCircular = this.isCircular; // X axis in a polar chart\n var start,\n end,\n angle,\n xOnPerimeter,\n open,\n path,\n outerRadius = pick(radiusToPixels(options.outerRadius),\n fullRadius),\n innerRadius = radiusToPixels(options.innerRadius),\n thickness = pick(radiusToPixels(options.thickness), 10);\n // Polygonal plot bands\n if (this.options.gridLineInterpolation === 'polygon') {\n path = this.getPlotLinePath({ value: from }).concat(this.getPlotLinePath({ value: to, reverse: true }));\n // Circular grid bands\n }\n else {\n // Keep within bounds\n from = Math.max(from, this.min);\n to = Math.min(to, this.max);\n var transFrom = this.translate(from),\n transTo = this.translate(to);\n // Plot bands on Y axis (radial axis) - inner and outer\n // radius depend on to and from\n if (!isCircular) {\n outerRadius = transFrom || 0;\n innerRadius = transTo || 0;\n }\n // Handle full circle\n if (options.shape === 'circle' || !isCircular) {\n start = -Math.PI / 2;\n end = Math.PI * 1.5;\n open = true;\n }\n else {\n start = startAngleRad + (transFrom || 0);\n end = startAngleRad + (transTo || 0);\n }\n outerRadius -= offset; // #5283\n thickness -= offset; // #5283\n path = chart.renderer.symbols.arc(left + center[0], top + center[1], outerRadius, outerRadius, {\n // Math is for reversed yAxis (#3606)\n start: Math.min(start, end),\n end: Math.max(start, end),\n innerR: pick(innerRadius, outerRadius - thickness),\n open: open\n });\n // Provide positioning boxes for the label (#6406)\n if (isCircular) {\n angle = (end + start) / 2;\n xOnPerimeter = (left +\n center[0] +\n (center[2] / 2) * Math.cos(angle));\n path.xBounds = angle > -Math.PI / 2 && angle < Math.PI / 2 ?\n // Right hemisphere\n [xOnPerimeter, chart.plotWidth] :\n // Left hemisphere\n [0, xOnPerimeter];\n path.yBounds = [\n top + center[1] + (center[2] / 2) * Math.sin(angle)\n ];\n // Shift up or down to get the label clear of the perimeter\n path.yBounds[0] += ((angle > -Math.PI && angle < 0) ||\n (angle > Math.PI)) ? -10 : 10;\n }\n }\n return path;\n }\n /**\n * Find the path for plot lines perpendicular to the radial axis.\n */\n function getPlotLinePath(options) {\n var _this = this;\n var center = this.pane.center, chart = this.chart, inverted = chart.inverted, reverse = options.reverse, background = this.pane.options.background ?\n (this.pane.options.background[0] ||\n this.pane.options.background) :\n {}, innerRadius = background.innerRadius || '0%', outerRadius = background.outerRadius || '100%', x1 = center[0] + chart.plotLeft, y1 = center[1] + chart.plotTop, height = this.height, isCrosshair = options.isCrosshair, paneInnerR = center[3] / 2;\n var value = options.value,\n innerRatio,\n distance,\n a,\n b,\n otherAxis,\n xy,\n tickPositions,\n crossPos,\n path;\n var end = this.getPosition(value);\n var x2 = end.x,\n y2 = end.y;\n // Crosshair logic\n if (isCrosshair) {\n // Find crosshair's position and perform destructuring\n // assignment\n crossPos = this.getCrosshairPosition(options, x1, y1);\n value = crossPos[0];\n x2 = crossPos[1];\n y2 = crossPos[2];\n }\n // Spokes\n if (this.isCircular) {\n distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n a = (typeof innerRadius === 'string') ?\n relativeLength(innerRadius, 1) :\n (innerRadius / distance);\n b = (typeof outerRadius === 'string') ?\n relativeLength(outerRadius, 1) :\n (outerRadius / distance);\n // To ensure that gridlines won't be displayed in area\n // defined by innerSize in case of custom radiuses of pane's\n // background\n if (center && paneInnerR) {\n innerRatio = paneInnerR / distance;\n if (a < innerRatio) {\n a = innerRatio;\n }\n if (b < innerRatio) {\n b = innerRatio;\n }\n }\n path = [\n ['M', x1 + a * (x2 - x1), y1 - a * (y1 - y2)],\n ['L', x2 - (1 - b) * (x2 - x1), y2 + (1 - b) * (y1 - y2)]\n ];\n // Concentric circles\n }\n else {\n // Pick the right values depending if it is grid line or\n // crosshair\n value = this.translate(value);\n // This is required in case when xAxis is non-circular to\n // prevent grid lines (or crosshairs, if enabled) from\n // rendering above the center after they supposed to be\n // displayed below the center point\n if (value) {\n if (value < 0 || value > height) {\n value = 0;\n }\n }\n if (this.options.gridLineInterpolation === 'circle') {\n // A value of 0 is in the center, so it won't be\n // visible, but draw it anyway for update and animation\n // (#2366)\n path = this.getLinePath(0, value, paneInnerR);\n // Concentric polygons\n }\n else {\n path = [];\n // Find the other axis (a circular one) in the same pane\n chart[inverted ? 'yAxis' : 'xAxis'].forEach(function (a) {\n if (a.pane === _this.pane) {\n otherAxis = a;\n }\n });\n if (otherAxis) {\n tickPositions = otherAxis.tickPositions;\n if (otherAxis.autoConnect) {\n tickPositions =\n tickPositions.concat([tickPositions[0]]);\n }\n // Reverse the positions for concatenation of polygonal\n // plot bands\n if (reverse) {\n tickPositions = tickPositions.slice().reverse();\n }\n if (value) {\n value += paneInnerR;\n }\n for (var i = 0; i < tickPositions.length; i++) {\n xy = otherAxis.getPosition(tickPositions[i], value);\n path.push(i ? ['L', xy.x, xy.y] : ['M', xy.x, xy.y]);\n }\n }\n }\n }\n return path;\n }\n /**\n * Returns the x, y coordinate of a point given by a value and a pixel\n * distance from center.\n *\n * @private\n * @param {number} value\n * Point value.\n * @param {number} [length]\n * Distance from center.\n */\n function getPosition(value, length) {\n var translatedVal = this.translate(value);\n return this.postTranslate(this.isCircular ? translatedVal : this.angleRad, // #2848\n // In case when translatedVal is negative, the 0 value must be\n // used instead, in order to deal with lines and labels that\n // fall out of the visible range near the center of a pane\n pick(this.isCircular ?\n length :\n (translatedVal < 0 ? 0 : translatedVal), this.center[2] / 2) - this.offset);\n }\n /**\n * Find the position for the axis title, by default inside the gauge.\n */\n function getTitlePosition() {\n var center = this.center,\n chart = this.chart,\n titleOptions = this.options.title;\n return {\n x: chart.plotLeft + center[0] + (titleOptions.x || 0),\n y: (chart.plotTop +\n center[1] -\n ({\n high: 0.5,\n middle: 0.25,\n low: 0\n }[titleOptions.align] *\n center[2]) +\n (titleOptions.y || 0))\n };\n }\n /**\n * Modify radial axis.\n * @private\n *\n * @param {Highcharts.Axis} radialAxis\n * Radial axis to modify.\n */\n function modify(axis) {\n axis.beforeSetTickPositions = beforeSetTickPositions;\n axis.createLabelCollector = createLabelCollector;\n axis.getCrosshairPosition = getCrosshairPosition;\n axis.getLinePath = getLinePath;\n axis.getOffset = getOffset;\n axis.getPlotBandPath = getPlotBandPath;\n axis.getPlotLinePath = getPlotLinePath;\n axis.getPosition = getPosition;\n axis.getTitlePosition = getTitlePosition;\n axis.postTranslate = postTranslate;\n axis.setAxisSize = setAxisSize;\n axis.setAxisTranslation = setAxisTranslation;\n axis.setOptions = setOptions;\n }\n /**\n * Modify radial axis as hidden.\n * @private\n *\n * @param {Highcharts.Axis} radialAxis\n * Radial axis to modify.\n */\n function modifyAsHidden(radialAxis) {\n radialAxis.isHidden = true;\n radialAxis.createLabelCollector = createLabelCollectorHidden;\n radialAxis.getOffset = noop;\n radialAxis.redraw = renderHidden;\n radialAxis.render = renderHidden;\n radialAxis.setScale = noop;\n radialAxis.setCategories = noop;\n radialAxis.setTitle = noop;\n }\n /**\n * Finalize modification of axis instance with radial logic.\n */\n function onAxisAfterInit() {\n var chart = this.chart,\n options = this.options,\n isHidden = chart.angular && this.isXAxis,\n pane = this.pane,\n paneOptions = pane && pane.options;\n if (!isHidden && pane && (chart.angular || chart.polar)) {\n var fullCircle = Math.PI * 2, \n // Start and end angle options are given in degrees relative to\n // top, while internal computations are in radians relative to\n // right (like SVG).\n start = (pick(paneOptions.startAngle, 0) - 90) * Math.PI / 180,\n end = (pick(paneOptions.endAngle,\n pick(paneOptions.startAngle, 0) + 360) - 90) * Math.PI / 180;\n // Y axis in polar charts\n this.angleRad = (options.angle || 0) * Math.PI / 180;\n // Gauges\n this.startAngleRad = start;\n this.endAngleRad = end;\n this.offset = options.offset || 0;\n // Normalize Start and End to <0, 2*PI> range\n // (in degrees: <0,360>)\n var normalizedStart = (start % fullCircle + fullCircle) %\n fullCircle,\n normalizedEnd = (end % fullCircle + fullCircle) % fullCircle;\n // Move normalized angles to <-PI, PI> range (<-180, 180>)\n // to match values returned by Math.atan2()\n if (normalizedStart > Math.PI) {\n normalizedStart -= fullCircle;\n }\n if (normalizedEnd > Math.PI) {\n normalizedEnd -= fullCircle;\n }\n this.normalizedStartAngleRad = normalizedStart;\n this.normalizedEndAngleRad = normalizedEnd;\n }\n }\n /**\n * Wrap auto label align to avoid setting axis-wide rotation on radial axes.\n * (#4920)\n */\n function onAxisAutoLabelAlign(e) {\n if (this.isRadial) {\n e.align = void 0;\n e.preventDefault();\n }\n }\n /**\n * Remove label collector function on axis remove/update.\n */\n function onAxisDestroy() {\n if (this.chart &&\n this.chart.labelCollectors) {\n var index = (this.labelCollector ?\n this.chart.labelCollectors.indexOf(this.labelCollector) :\n -1);\n if (index >= 0) {\n this.chart.labelCollectors.splice(index, 1);\n }\n }\n }\n /**\n * Modify axis instance with radial logic before common axis init.\n */\n function onAxisInit(e) {\n var chart = this.chart,\n inverted = chart.inverted,\n angular = chart.angular,\n polar = chart.polar,\n isX = this.isXAxis,\n coll = this.coll,\n isHidden = angular && isX,\n chartOptions = chart.options,\n paneIndex = e.userOptions.pane || 0,\n pane = this.pane = chart.pane && chart.pane[paneIndex];\n var isCircular;\n // Prevent changes for colorAxis\n if (coll === 'colorAxis') {\n this.isRadial = false;\n return;\n }\n // Before prototype.init\n if (angular) {\n if (isHidden) {\n modifyAsHidden(this);\n }\n else {\n modify(this);\n }\n isCircular = !isX;\n if (isCircular) {\n this.defaultPolarOptions = defaultRadialGaugeOptions;\n }\n }\n else if (polar) {\n modify(this);\n // Check which axis is circular\n isCircular = this.horiz;\n this.defaultPolarOptions = isCircular ?\n defaultCircularOptions :\n merge(coll === 'xAxis' ?\n AxisDefaults.defaultXAxisOptions :\n AxisDefaults.defaultYAxisOptions, defaultRadialOptions);\n // Apply the stack labels for yAxis in case of inverted chart\n if (inverted && coll === 'yAxis') {\n this.defaultPolarOptions.stackLabels = AxisDefaults\n .defaultYAxisOptions.stackLabels;\n this.defaultPolarOptions.reversedStacks = true;\n }\n }\n // Disable certain features on angular and polar axes\n if (angular || polar) {\n this.isRadial = true;\n if (!this.labelCollector) {\n this.labelCollector = this.createLabelCollector();\n }\n if (this.labelCollector) {\n // Prevent overlapping axis labels (#9761)\n chart.labelCollectors.push(this.labelCollector);\n }\n }\n else {\n this.isRadial = false;\n }\n // A pointer back to this axis to borrow geometry\n if (pane && isCircular) {\n pane.axis = this;\n }\n this.isCircular = isCircular;\n }\n /**\n * Prepare axis translation.\n */\n function onAxisInitialAxisTranslation() {\n if (this.isRadial) {\n this.beforeSetTickPositions();\n }\n }\n /**\n * Find the center position of the label based on the distance option.\n */\n function onTickAfterGetLabelPosition(e) {\n var label = this.label;\n if (!label) {\n return;\n }\n var axis = this.axis,\n labelBBox = label.getBBox(),\n labelOptions = axis.options.labels,\n angle = ((axis.translate(this.pos) + axis.startAngleRad +\n Math.PI / 2) / Math.PI * 180) % 360,\n correctAngle = Math.round(angle),\n labelYPosCorrection = !defined(labelOptions.y) ? -labelBBox.height * 0.3 : 0;\n var optionsY = labelOptions.y, ret, centerSlot = 20, // 20 degrees to each side at the top and bottom\n align = labelOptions.align, labelDir = 'end', // Direction of the label 'start' or 'end'\n reducedAngle1 = correctAngle < 0 ?\n correctAngle + 360 : correctAngle, reducedAngle2 = reducedAngle1, translateY = 0, translateX = 0;\n if (axis.isRadial) { // Both X and Y axes in a polar chart\n ret = axis.getPosition(this.pos, (axis.center[2] / 2) +\n relativeLength(pick(labelOptions.distance, -25), axis.center[2] / 2, -axis.center[2] / 2));\n // Automatically rotated\n if (labelOptions.rotation === 'auto') {\n label.attr({\n rotation: angle\n });\n // Vertically centered\n }\n else if (!defined(optionsY)) {\n optionsY = (axis.chart.renderer\n .fontMetrics(label.styles && label.styles.fontSize).b -\n labelBBox.height / 2);\n }\n // Automatic alignment\n if (!defined(align)) {\n if (axis.isCircular) { // Y axis\n if (labelBBox.width >\n axis.len * axis.tickInterval / (axis.max - axis.min)) { // #3506\n centerSlot = 0;\n }\n if (angle > centerSlot && angle < 180 - centerSlot) {\n align = 'left'; // right hemisphere\n }\n else if (angle > 180 + centerSlot &&\n angle < 360 - centerSlot) {\n align = 'right'; // left hemisphere\n }\n else {\n align = 'center'; // top or bottom\n }\n }\n else {\n align = 'center';\n }\n label.attr({\n align: align\n });\n }\n // Auto alignment for solid-gauges with two labels (#10635)\n if (align === 'auto' &&\n axis.tickPositions.length === 2 &&\n axis.isCircular) {\n // Angles reduced to 0 - 90 or 180 - 270\n if (reducedAngle1 > 90 && reducedAngle1 < 180) {\n reducedAngle1 = 180 - reducedAngle1;\n }\n else if (reducedAngle1 > 270 && reducedAngle1 <= 360) {\n reducedAngle1 = 540 - reducedAngle1;\n }\n // Angles reduced to 0 - 180\n if (reducedAngle2 > 180 && reducedAngle2 <= 360) {\n reducedAngle2 = 360 - reducedAngle2;\n }\n if ((axis.pane.options.startAngle === correctAngle) ||\n (axis.pane.options.startAngle === correctAngle + 360) ||\n (axis.pane.options.startAngle === correctAngle - 360)) {\n labelDir = 'start';\n }\n if ((correctAngle >= -90 && correctAngle <= 90) ||\n (correctAngle >= -360 && correctAngle <= -270) ||\n (correctAngle >= 270 && correctAngle <= 360)) {\n align = (labelDir === 'start') ? 'right' : 'left';\n }\n else {\n align = (labelDir === 'start') ? 'left' : 'right';\n }\n // For angles beetwen (90 + n * 180) +- 20\n if (reducedAngle2 > 70 && reducedAngle2 < 110) {\n align = 'center';\n }\n // auto Y translation\n if (reducedAngle1 < 15 ||\n (reducedAngle1 >= 180 && reducedAngle1 < 195)) {\n translateY = labelBBox.height * 0.3;\n }\n else if (reducedAngle1 >= 15 && reducedAngle1 <= 35) {\n translateY = labelDir === 'start' ?\n 0 : labelBBox.height * 0.75;\n }\n else if (reducedAngle1 >= 195 && reducedAngle1 <= 215) {\n translateY = labelDir === 'start' ?\n labelBBox.height * 0.75 : 0;\n }\n else if (reducedAngle1 > 35 && reducedAngle1 <= 90) {\n translateY = labelDir === 'start' ?\n -labelBBox.height * 0.25 : labelBBox.height;\n }\n else if (reducedAngle1 > 215 && reducedAngle1 <= 270) {\n translateY = labelDir === 'start' ?\n labelBBox.height : -labelBBox.height * 0.25;\n }\n // auto X translation\n if (reducedAngle2 < 15) {\n translateX = labelDir === 'start' ?\n -labelBBox.height * 0.15 : labelBBox.height * 0.15;\n }\n else if (reducedAngle2 > 165 && reducedAngle2 <= 180) {\n translateX = labelDir === 'start' ?\n labelBBox.height * 0.15 : -labelBBox.height * 0.15;\n }\n label.attr({ align: align });\n label.translate(translateX, translateY + labelYPosCorrection);\n }\n e.pos.x = ret.x + (labelOptions.x || 0);\n e.pos.y = ret.y + (optionsY || 0);\n }\n }\n /**\n * Add special cases within the Tick class' methods for radial axes.\n */\n function onTickAfterGetPosition(e) {\n if (this.axis.getPosition) {\n extend(e.pos, this.axis.getPosition(this.pos));\n }\n }\n /**\n * Translate from intermediate plotX (angle), plotY (axis.len - radius)\n * to final chart coordinates.\n *\n * @private\n * @param {number} angle\n * Translation angle.\n * @param {number} radius\n * Translation radius.\n */\n function postTranslate(angle, radius) {\n var chart = this.chart,\n center = this.center;\n angle = this.startAngleRad + angle;\n return {\n x: chart.plotLeft + center[0] + Math.cos(angle) * radius,\n y: chart.plotTop + center[1] + Math.sin(angle) * radius\n };\n }\n /**\n * Prevent setting Y axis dirty.\n */\n function renderHidden() {\n this.isDirty = false;\n }\n /**\n * Override the setAxisSize method to use the arc's circumference as\n * length. This allows tickPixelInterval to apply to pixel lengths along\n * the perimeter.\n * @private\n */\n function setAxisSize() {\n var axisProto = this.constructor.prototype;\n var center,\n start;\n axisProto.setAxisSize.call(this);\n if (this.isRadial) {\n // Set the center array\n this.pane.updateCenter(this);\n // In case when the innerSize is set in a polar chart, the axis'\n // center cannot be a reference to pane's center\n center = this.center = this.pane.center.slice();\n // The sector is used in Axis.translate to compute the\n // translation of reversed axis points (#2570)\n if (this.isCircular) {\n this.sector = this.endAngleRad - this.startAngleRad;\n }\n else {\n // When the pane's startAngle or the axis' angle is set then\n // new x and y values for vertical axis' center must be\n // calulated\n start = this.postTranslate(this.angleRad, center[3] / 2);\n center[0] = start.x - this.chart.plotLeft;\n center[1] = start.y - this.chart.plotTop;\n }\n // Axis len is used to lay out the ticks\n this.len = this.width = this.height =\n (center[2] - center[3]) * pick(this.sector, 1) / 2;\n }\n }\n /**\n * Override setAxisTranslation by setting the translation to the\n * difference in rotation. This allows the translate method to return\n * angle for any given value.\n *\n * @private\n */\n function setAxisTranslation() {\n var axisProto = this.constructor.prototype;\n // Call uber method\n axisProto.setAxisTranslation.call(this);\n // Set transA and minPixelPadding\n if (this.center) { // it's not defined the first time\n if (this.isCircular) {\n this.transA = (this.endAngleRad - this.startAngleRad) /\n ((this.max - this.min) || 1);\n }\n else {\n // The transA here is the length of the axis, so in case\n // of inner radius, the length must be decreased by it\n this.transA = ((this.center[2] - this.center[3]) / 2) /\n ((this.max - this.min) || 1);\n }\n if (this.isXAxis) {\n this.minPixelPadding = this.transA * this.minPointOffset;\n }\n else {\n // This is a workaround for regression #2593, but categories\n // still don't position correctly.\n this.minPixelPadding = 0;\n }\n }\n }\n /**\n * Merge and set options.\n */\n function setOptions(userOptions) {\n var options = this.options = merge(this.constructor.defaultOptions,\n this.defaultPolarOptions,\n defaultOptions[this.coll], // #16112\n userOptions);\n // Make sure the plotBands array is instanciated for each Axis\n // (#2649)\n if (!options.plotBands) {\n options.plotBands = [];\n }\n fireEvent(this, 'afterSetOptions');\n }\n /**\n * Wrap the getMarkPath function to return the path of the radial marker.\n */\n function wrapTickGetMarkPath(proceed, x, y, tickLength, tickWidth, horiz, renderer) {\n var axis = this.axis;\n var endPoint,\n ret;\n if (axis.isRadial) {\n endPoint = axis.getPosition(this.pos, axis.center[2] / 2 + tickLength);\n ret = [\n 'M',\n x,\n y,\n 'L',\n endPoint.x,\n endPoint.y\n ];\n }\n else {\n ret = proceed.call(this, x, y, tickLength, tickWidth, horiz, renderer);\n }\n return ret;\n }\n /* eslint-enable valid-jsdoc */\n })(RadialAxis || (RadialAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return RadialAxis;\n });\n _registerModule(_modules, 'Series/PolarComposition.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Globals.js'], _modules['Extensions/Pane.js'], _modules['Core/Axis/RadialAxis.js'], _modules['Core/Utilities.js']], function (A, H, Pane, RadialAxis, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __spreadArray = (this && this.__spreadArray) || function (to,\n from,\n pack) {\n if (pack || arguments.length === 2) for (var i = 0,\n l = from.length,\n ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0,\n i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n };\n var animObject = A.animObject;\n var addEvent = U.addEvent,\n defined = U.defined,\n find = U.find,\n isNumber = U.isNumber,\n pick = U.pick,\n splat = U.splat,\n uniqueKey = U.uniqueKey,\n wrap = U.wrap;\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n */\n function clipCircle(renderer, x, y, r, innerR) {\n var id = uniqueKey(),\n clipPath = renderer.createElement('clipPath').attr({\n id: id\n }).add(renderer.defs),\n wrapper = innerR ?\n renderer.arc(x,\n y,\n r,\n innerR, 0, 2 * Math.PI).add(clipPath) :\n renderer.circle(x,\n y,\n r).add(clipPath);\n wrapper.id = id;\n wrapper.clipPath = clipPath;\n return wrapper;\n }\n /**\n * Find correct align and vertical align based on an angle in polar chart\n * @private\n */\n function findAlignments(angle, options) {\n var align,\n verticalAlign;\n if (options.align === null) {\n if (angle > 20 && angle < 160) {\n align = 'left'; // right hemisphere\n }\n else if (angle > 200 && angle < 340) {\n align = 'right'; // left hemisphere\n }\n else {\n align = 'center'; // top or bottom\n }\n options.align = align;\n }\n if (options.verticalAlign === null) {\n if (angle < 45 || angle > 315) {\n verticalAlign = 'bottom'; // top part\n }\n else if (angle > 135 && angle < 225) {\n verticalAlign = 'top'; // bottom part\n }\n else {\n verticalAlign = 'middle'; // left or right\n }\n options.verticalAlign = verticalAlign;\n }\n return options;\n }\n /**\n * #6212 Calculate connectors for spline series in polar chart.\n * @private\n * @param {boolean} calculateNeighbours\n * Check if connectors should be calculated for neighbour points as\n * well allows short recurence\n */\n function getConnectors(segment, index, calculateNeighbours, connectEnds) {\n var smoothing = 1.5,\n denom = smoothing + 1,\n addedNumber = connectEnds ? 1 : 0;\n var i,\n leftContX,\n leftContY,\n rightContX,\n rightContY,\n jointAngle;\n // Calculate final index of points depending on the initial index value.\n // Because of calculating neighbours, index may be outisde segment\n // array.\n if (index >= 0 && index <= segment.length - 1) {\n i = index;\n }\n else if (index < 0) {\n i = segment.length - 1 + index;\n }\n else {\n i = 0;\n }\n // 1 means control points midway between points, 2 means 1/3 from\n // the point, 3 is 1/4 etc;\n var prevPointInd = ((i - 1 < 0) ? segment.length - (1 + addedNumber) : i - 1),\n nextPointInd = (i + 1 > segment.length - 1) ? addedNumber : i + 1,\n previousPoint = segment[prevPointInd],\n nextPoint = segment[nextPointInd],\n previousX = previousPoint.plotX,\n previousY = previousPoint.plotY,\n nextX = nextPoint.plotX,\n nextY = nextPoint.plotY,\n plotX = segment[i].plotX, // actual point\n plotY = segment[i].plotY;\n leftContX = (smoothing * plotX + previousX) / denom;\n leftContY = (smoothing * plotY + previousY) / denom;\n rightContX = (smoothing * plotX + nextX) / denom;\n rightContY = (smoothing * plotY + nextY) / denom;\n // distance left control point\n var dLControlPoint = Math.sqrt(Math.pow(leftContX - plotX, 2) + Math.pow(leftContY - plotY, 2)),\n dRControlPoint = Math.sqrt(Math.pow(rightContX - plotX, 2) + Math.pow(rightContY - plotY, 2)),\n leftContAngle = Math.atan2(leftContY - plotY,\n leftContX - plotX),\n rightContAngle = Math.atan2(rightContY - plotY,\n rightContX - plotX);\n jointAngle = (Math.PI / 2) + ((leftContAngle + rightContAngle) / 2);\n // Ensure the right direction, jointAngle should be in the same quadrant\n // as leftContAngle\n if (Math.abs(leftContAngle - jointAngle) > Math.PI / 2) {\n jointAngle -= Math.PI;\n }\n // Find the corrected control points for a spline straight through the\n // point\n leftContX = plotX + Math.cos(jointAngle) * dLControlPoint;\n leftContY = plotY + Math.sin(jointAngle) * dLControlPoint;\n rightContX = plotX + Math.cos(Math.PI + jointAngle) * dRControlPoint;\n rightContY = plotY + Math.sin(Math.PI + jointAngle) * dRControlPoint;\n // push current point's connectors into returned object\n var ret = {\n rightContX: rightContX,\n rightContY: rightContY,\n leftContX: leftContX,\n leftContY: leftContY,\n plotX: plotX,\n plotY: plotY\n };\n // calculate connectors for previous and next point and push them inside\n // returned object\n if (calculateNeighbours) {\n ret.prevPointCont = getConnectors(segment, prevPointInd, false, connectEnds);\n }\n return ret;\n }\n function onChartAfterDrawChartBox() {\n (this.pane || []).forEach(function (pane) {\n pane.render();\n });\n }\n /**\n * If polar has polygonal grid lines, force start and endOnTick on radial axis\n * @private\n */\n function onChartAfterInit(event) {\n var xAxis = event.args[0].xAxis,\n yAxis = event.args[0].yAxis,\n chart = event.args[0].chart;\n if (xAxis && yAxis) {\n if (yAxis.gridLineInterpolation === 'polygon') {\n xAxis.startOnTick = true;\n xAxis.endOnTick = true;\n }\n else if (xAxis.gridLineInterpolation === 'polygon' &&\n chart.inverted) {\n yAxis.startOnTick = true;\n yAxis.endOnTick = true;\n }\n }\n }\n function onChartGetAxes() {\n var _this = this;\n if (!this.pane) {\n this.pane = [];\n }\n this.options.pane = splat(this.options.pane);\n this.options.pane.forEach(function (paneOptions) {\n new Pane(// eslint-disable-line no-new\n paneOptions, _this);\n }, this);\n }\n /**\n * Get selection dimensions\n * @private\n */\n function onPointerGetSelectionBox(event) {\n var marker = event.args.marker,\n xAxis = this.chart.xAxis[0],\n yAxis = this.chart.yAxis[0],\n inverted = this.chart.inverted,\n radialAxis = inverted ? yAxis : xAxis,\n linearAxis = inverted ? xAxis : yAxis;\n if (this.chart.polar) {\n event.preventDefault();\n var start = (marker.attr ? marker.attr('start') : marker.start) - radialAxis.startAngleRad;\n var r = (marker.attr ? marker.attr('r') : marker.r);\n var end = (marker.attr ? marker.attr('end') : marker.end) - radialAxis.startAngleRad;\n var innerR = (marker.attr ? marker.attr('innerR') : marker.innerR);\n event.result.x = start + radialAxis.pos;\n event.result.width = end - start;\n // innerR goes from pane's center but toValue computes values from top\n event.result.y = linearAxis.len + linearAxis.pos - innerR;\n event.result.height = innerR - r;\n }\n }\n /**\n * Get attrs for Polar selection marker\n * @private\n */\n function onPointerGetSelectionMarkerAttrs(event) {\n var chart = this.chart;\n if (chart.polar && chart.hoverPane && chart.hoverPane.axis) {\n event.preventDefault();\n var center = chart.hoverPane.center,\n mouseDownX = (this.mouseDownX || 0),\n mouseDownY = (this.mouseDownY || 0),\n chartY = event.args.chartY,\n chartX = event.args.chartX,\n fullCircle = Math.PI * 2,\n startAngleRad = chart.hoverPane.axis.startAngleRad,\n endAngleRad = chart.hoverPane.axis.endAngleRad,\n linearAxis = chart.inverted ? chart.xAxis[0] : chart.yAxis[0],\n attrs = {};\n var shapeType = 'arc';\n attrs.x = center[0] + chart.plotLeft;\n attrs.y = center[1] + chart.plotTop;\n // Adjust the width of the selection marker\n if (this.zoomHor) {\n var paneRadRange = startAngleRad > 0 ?\n endAngleRad - startAngleRad :\n Math.abs(startAngleRad) + Math.abs(endAngleRad);\n var startAngle = Math.atan2(mouseDownY - chart.plotTop - center[1],\n mouseDownX - chart.plotLeft - center[0]) - startAngleRad,\n endAngle = Math.atan2(chartY - chart.plotTop - center[1],\n chartX - chart.plotLeft - center[0]) - startAngleRad;\n attrs.r = center[2] / 2;\n attrs.innerR = center[3] / 2;\n if (startAngle <= 0) {\n startAngle += fullCircle;\n }\n if (endAngle <= 0) {\n endAngle += fullCircle;\n }\n if (endAngle < startAngle) {\n // Swapping angles\n endAngle = [startAngle, startAngle = endAngle][0];\n }\n // If pane is not a full circle we need to let users zoom to the min\n // We do this by swapping angles after pointer crosses\n // middle angle (swapAngle) of the missing slice of the pane\n if (paneRadRange < fullCircle) {\n var swapAngle = endAngleRad + (fullCircle - paneRadRange) / 2;\n if (startAngleRad + endAngle > swapAngle) {\n endAngle = startAngle;\n startAngle = startAngleRad <= 0 ? startAngleRad : 0;\n }\n }\n var start = attrs.start =\n Math.max(startAngle + startAngleRad,\n startAngleRad),\n end = attrs.end =\n Math.min(endAngle + startAngleRad,\n endAngleRad);\n // Adjust the selection shape for polygon grid lines\n if (linearAxis.options.gridLineInterpolation === 'polygon') {\n var radialAxis = chart.hoverPane.axis,\n tickInterval = radialAxis.tickInterval,\n min = start - radialAxis.startAngleRad + radialAxis.pos,\n max = end - start;\n var path = linearAxis.getPlotLinePath({\n value: linearAxis.max\n }),\n pathStart = radialAxis.toValue(min),\n pathEnd = radialAxis.toValue(min + max);\n if (pathStart < radialAxis.getExtremes().min) {\n var _a = radialAxis.getExtremes(),\n min_1 = _a.min,\n max_1 = _a.max;\n pathStart = max_1 - (min_1 - pathStart);\n }\n if (pathEnd < radialAxis.getExtremes().min) {\n var _b = radialAxis.getExtremes(),\n min_2 = _b.min,\n max_2 = _b.max;\n pathEnd = max_2 - (min_2 - pathEnd);\n }\n if (pathEnd < pathStart) {\n // Swapping angles\n pathEnd = [pathStart, pathStart = pathEnd][0];\n }\n // Get trimmed path\n path = trimPath(path, pathStart, pathEnd, radialAxis);\n // Add center to the path\n path.push([\n 'L', center[0] + chart.plotLeft,\n chart.plotTop + center[1]\n ]);\n attrs.d = path;\n shapeType = 'path';\n }\n }\n // Adjust the height of the selection marker\n if (this.zoomVert) {\n var linearAxis_1 = chart.inverted ? chart.xAxis[0] : chart.yAxis[0];\n var innerR = Math.sqrt(Math.pow(mouseDownX - chart.plotLeft - center[0], 2) +\n Math.pow(mouseDownY - chart.plotTop - center[1], 2)),\n r = Math.sqrt(Math.pow(chartX - chart.plotLeft - center[0], 2) +\n Math.pow(chartY - chart.plotTop - center[1], 2));\n if (r < innerR) {\n // Swapping angles\n innerR = [r, r = innerR][0];\n }\n if (r > center[2] / 2) {\n r = center[2] / 2;\n }\n if (innerR < center[3] / 2) {\n innerR = center[3] / 2;\n }\n if (!this.zoomHor) {\n attrs.start = startAngleRad;\n attrs.end = endAngleRad;\n }\n attrs.r = r;\n attrs.innerR = innerR;\n if (linearAxis_1.options.gridLineInterpolation === 'polygon') {\n var end = linearAxis_1.toValue(linearAxis_1.len + linearAxis_1.pos - innerR),\n start = linearAxis_1.toValue(linearAxis_1.len + linearAxis_1.pos - r),\n path = linearAxis_1.getPlotLinePath({\n value: start\n }).concat(linearAxis_1.getPlotLinePath({\n value: end,\n reverse: true\n }));\n attrs.d = path;\n shapeType = 'path';\n }\n }\n if (this.zoomHor &&\n this.zoomVert &&\n linearAxis.options.gridLineInterpolation === 'polygon') {\n var radialAxis = chart.hoverPane.axis,\n start = attrs.start || 0,\n end = attrs.end || 0,\n min = start - radialAxis.startAngleRad + radialAxis.pos,\n max = end - start,\n pathStart = radialAxis.toValue(min),\n pathEnd = radialAxis.toValue(min + max);\n // Trim path\n if (attrs.d instanceof Array) {\n var innerPath = attrs.d.slice(0,\n attrs.d.length / 2),\n outerPath = attrs.d.slice(attrs.d.length / 2,\n attrs.d.length);\n outerPath = __spreadArray([], outerPath, true).reverse();\n var radialAxis_1 = chart.hoverPane.axis;\n innerPath = trimPath(innerPath, pathStart, pathEnd, radialAxis_1);\n outerPath = trimPath(outerPath, pathStart, pathEnd, radialAxis_1);\n if (outerPath) {\n (outerPath[0][0]) = 'L';\n }\n outerPath = __spreadArray([], outerPath, true).reverse();\n attrs.d = innerPath.concat(outerPath);\n shapeType = 'path';\n }\n }\n event.attrs = attrs;\n event.shapeType = shapeType;\n }\n }\n /**\n * @private\n */\n function onSeriesAfterInit() {\n var chart = this.chart;\n if (chart.polar) {\n this.polar = new PolarAdditions(this);\n // Add flags that identifies radial inverted series\n if (chart.inverted) {\n this.isRadialSeries = true;\n if (this.is('column')) {\n this.isRadialBar = true;\n }\n }\n }\n }\n /**\n * Extend translate. The plotX and plotY values are computed as if the polar\n * chart were a cartesian plane, where plotX denotes the angle in radians\n * and (yAxis.len - plotY) is the pixel distance from center.\n * @private\n */\n function onSeriesAfterTranslate() {\n if (this.chart.polar && this.xAxis) {\n var series = this,\n chart_1 = series.chart;\n // Prepare k-d-tree handling. It searches by angle (clientX) in\n // case of shared tooltip, and by two dimensional distance in case\n // of non-shared.\n series.kdByAngle = chart_1.tooltip && chart_1.tooltip.shared;\n if (series.kdByAngle) {\n series.searchPoint = searchPointByAngle;\n }\n else {\n series.options.findNearestPointBy = 'xy';\n }\n var points = series.points;\n var i = points.length;\n while (i--) {\n // Translate plotX, plotY from angle and radius to true plot\n // coordinates\n if (!series.preventPostTranslate) {\n series.polar.toXY(points[i]);\n }\n // Treat points below Y axis min as null (#10082)\n if (!chart_1.hasParallelCoordinates &&\n !series.yAxis.reversed) {\n if (pick(points[i].y, Number.MIN_VALUE) < series.yAxis.min ||\n points[i].x < series.xAxis.min ||\n points[i].x > series.xAxis.max) {\n // Destroy markers\n points[i].isNull = true;\n // Destroy column's graphic\n points[i].plotY = NaN;\n }\n else {\n // Restore isNull flag\n points[i].isNull =\n points[i].isValid && !points[i].isValid();\n }\n }\n }\n // Perform clip after render\n if (!this.hasClipCircleSetter) {\n this.hasClipCircleSetter = !!series.eventsToUnbind.push(addEvent(series, 'afterRender', function () {\n var circ;\n if (chart_1.polar) {\n // For clipping purposes there is a need for\n // coordinates from the absolute center\n circ = this.yAxis.pane.center;\n if (!this.clipCircle) {\n this.clipCircle = clipCircle(chart_1.renderer, circ[0], circ[1], circ[2] / 2, circ[3] / 2);\n }\n else {\n this.clipCircle.animate({\n x: circ[0],\n y: circ[1],\n r: circ[2] / 2,\n innerR: circ[3] / 2\n });\n }\n this.group.clip(this.clipCircle);\n this.setClip = H.noop;\n }\n }));\n }\n }\n }\n /**\n * Search a k-d tree by the point angle, used for shared tooltips in polar\n * charts\n * @private\n */\n function searchPointByAngle(e) {\n var series = this,\n chart = series.chart,\n xAxis = series.xAxis,\n center = xAxis.pane && xAxis.pane.center,\n plotX = e.chartX - (center && center[0] || 0) - chart.plotLeft,\n plotY = e.chartY - (center && center[1] || 0) - chart.plotTop;\n return series.searchKDTree({\n clientX: 180 + (Math.atan2(plotX, plotY) * (-180 / Math.PI))\n });\n }\n /**\n * Trim polygonal path\n * @private\n */\n function trimPath(path, start, end, radialAxis) {\n var tickInterval = radialAxis.tickInterval,\n ticks = radialAxis.tickPositions;\n var lastTick = find(ticks,\n function (tick) { return tick >= end; }),\n firstTick = find(__spreadArray([],\n ticks,\n true).reverse(),\n function (tick) { return tick <= start; });\n if (!defined(lastTick)) {\n lastTick = ticks[ticks.length - 1];\n }\n if (!defined(firstTick)) {\n firstTick = ticks[0];\n lastTick += tickInterval;\n path[0][0] = 'L';\n // To do: figure out why -3 or -2\n path.unshift(path[path.length - 3]);\n }\n path = path.slice(ticks.indexOf(firstTick), ticks.indexOf(lastTick) + 1);\n path[0][0] = 'M';\n return path;\n }\n /**\n * Extend chart.get to also search in panes. Used internally in\n * responsiveness and chart.update.\n * @private\n */\n function wrapChartGet(proceed, id) {\n return find(this.pane || [], function (pane) {\n // @todo remove id or define id type:\n return pane.options.id === id;\n }) || proceed.call(this, id);\n }\n /**\n * Align column data labels outside the columns. #1199.\n * @private\n */\n function wrapColumnSeriesAlignDataLabel(proceed, point, dataLabel, options, alignTo, isNew) {\n var chart = this.chart,\n inside = pick(options.inside, !!this.options.stacking);\n var angle,\n shapeArgs,\n labelPos;\n if (chart.polar) {\n angle = point.rectPlotX / Math.PI * 180;\n if (!chart.inverted) {\n // Align nicely outside the perimeter of the columns\n options = findAlignments(angle, options);\n }\n else { // Required corrections for data labels of inverted bars\n // The plotX and plotY are correctly set therefore they\n // don't need to be swapped (inverted argument is false)\n this.forceDL = chart.isInsidePlot(point.plotX, point.plotY);\n // Checks if labels should be positioned inside\n if (inside && point.shapeArgs) {\n shapeArgs = point.shapeArgs;\n // Calculates pixel positions for a data label to be\n // inside\n labelPos =\n this.yAxis.postTranslate(\n // angle\n ((shapeArgs.start || 0) + (shapeArgs.end || 0)) / 2 -\n this\n .xAxis.startAngleRad, \n // radius\n point.barX +\n point.pointWidth / 2);\n alignTo = {\n x: labelPos.x - chart.plotLeft,\n y: labelPos.y - chart.plotTop\n };\n }\n else if (point.tooltipPos) {\n alignTo = {\n x: point.tooltipPos[0],\n y: point.tooltipPos[1]\n };\n }\n options.align = pick(options.align, 'center');\n options.verticalAlign =\n pick(options.verticalAlign, 'middle');\n }\n Object\n .getPrototypeOf(Object.getPrototypeOf(this))\n .alignDataLabel.call(this, point, dataLabel, options, alignTo, isNew);\n // Hide label of a point (only inverted) that is outside the\n // visible y range\n if (this.isRadialBar && point.shapeArgs &&\n point.shapeArgs.start === point.shapeArgs.end) {\n dataLabel.hide();\n }\n else {\n dataLabel.show();\n }\n }\n else {\n proceed.call(this, point, dataLabel, options, alignTo, isNew);\n }\n }\n /**\n * Extend the column prototype's translate method\n * @private\n */\n function wrapColumnSeriesTranslate(proceed) {\n var series = this,\n options = series.options,\n stacking = options.stacking,\n chart = series.chart,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n reversed = yAxis.reversed,\n center = yAxis.center,\n startAngleRad = xAxis.startAngleRad,\n endAngleRad = xAxis.endAngleRad,\n visibleRange = endAngleRad - startAngleRad;\n var threshold = options.threshold,\n thresholdAngleRad = 0,\n points,\n point,\n i,\n yMin,\n yMax,\n start = 0,\n end = 0,\n tooltipPos,\n pointX,\n pointY,\n stackValues,\n stack,\n barX,\n innerR,\n r;\n series.preventPostTranslate = true;\n // Run uber method\n proceed.call(series);\n // Postprocess plot coordinates\n if (xAxis.isRadial) {\n points = series.points;\n i = points.length;\n yMin = yAxis.translate(yAxis.min);\n yMax = yAxis.translate(yAxis.max);\n threshold = options.threshold || 0;\n if (chart.inverted) {\n // Finding a correct threshold\n if (isNumber(threshold)) {\n thresholdAngleRad = yAxis.translate(threshold);\n // Checks if threshold is outside the visible range\n if (defined(thresholdAngleRad)) {\n if (thresholdAngleRad < 0) {\n thresholdAngleRad = 0;\n }\n else if (thresholdAngleRad > visibleRange) {\n thresholdAngleRad = visibleRange;\n }\n // Adding start angle offset\n series.translatedThreshold =\n thresholdAngleRad + startAngleRad;\n }\n }\n }\n while (i--) {\n point = points[i];\n barX = point.barX;\n pointX = point.x;\n pointY = point.y;\n point.shapeType = 'arc';\n if (chart.inverted) {\n point.plotY = yAxis.translate(pointY);\n if (stacking && yAxis.stacking) {\n stack = yAxis.stacking.stacks[(pointY < 0 ? '-' : '') +\n series.stackKey];\n if (series.visible && stack && stack[pointX]) {\n if (!point.isNull) {\n stackValues = stack[pointX].points[series.getStackIndicator(void 0, pointX, series.index).key];\n // Translating to radial values\n start = yAxis.translate(stackValues[0]);\n end = yAxis.translate(stackValues[1]);\n // If starting point is beyond the\n // range, set it to 0\n if (defined(start)) {\n start = U.clamp(start, 0, visibleRange);\n }\n }\n }\n }\n else {\n // Initial start and end angles for radial bar\n start = thresholdAngleRad;\n end = point.plotY;\n }\n if (start > end) {\n // Swapping start and end\n end = [start, start = end][0];\n }\n // Prevent from rendering point outside the\n // acceptable circular range\n if (!reversed) {\n if (start < yMin) {\n start = yMin;\n }\n else if (end > yMax) {\n end = yMax;\n }\n else if (end < yMin || start > yMax) {\n start = end = 0;\n }\n }\n else {\n if (end > yMin) {\n end = yMin;\n }\n else if (start < yMax) {\n start = yMax;\n }\n else if (start > yMin || end < yMax) {\n start = end = visibleRange;\n }\n }\n if (yAxis.min > yAxis.max) {\n start = end = reversed ? visibleRange : 0;\n }\n start += startAngleRad;\n end += startAngleRad;\n if (center) {\n point.barX = barX += center[3] / 2;\n }\n // In case when radius, inner radius or both are\n // negative, a point is rendered but partially or as\n // a center point\n innerR = Math.max(barX, 0);\n r = Math.max(barX + point.pointWidth, 0);\n point.shapeArgs = {\n x: center && center[0],\n y: center && center[1],\n r: r,\n innerR: innerR,\n start: start,\n end: end\n };\n // Fade out the points if not inside the polar \"plot area\"\n point.opacity = start === end ? 0 : void 0;\n // A correct value for stacked or not fully visible\n // point\n point.plotY = (defined(series.translatedThreshold) &&\n (start < series.translatedThreshold ? start : end)) -\n startAngleRad;\n }\n else {\n start = barX + startAngleRad;\n // Changed the way polar columns are drawn in order to make\n // it more consistent with the drawing of inverted columns\n // (they are using the same function now). Also, it was\n // essential to make the animation work correctly (the\n // scaling of the group) is replaced by animating each\n // element separately.\n point.shapeArgs = series.polar.arc(point.yBottom, point.plotY, start, start + point.pointWidth);\n }\n // Provided a correct coordinates for the tooltip\n series.polar.toXY(point);\n if (chart.inverted) {\n tooltipPos = yAxis.postTranslate(point.rectPlotY, barX + point.pointWidth / 2);\n point.tooltipPos = [\n tooltipPos.x - chart.plotLeft,\n tooltipPos.y - chart.plotTop\n ];\n }\n else {\n point.tooltipPos = [point.plotX, point.plotY];\n }\n if (center) {\n point.ttBelow = point.plotY > center[1];\n }\n }\n }\n }\n /**\n * Extend getSegmentPath to allow connecting ends across 0 to provide a\n * closed circle in line-like series.\n * @private\n */\n function wrapLineSeriesGetGraphPath(proceed, points) {\n var series = this;\n var firstValid,\n popLastPoint;\n // Connect the path\n if (this.chart.polar) {\n points = points || this.points;\n // Append first valid point in order to connect the ends\n for (var i = 0; i < points.length; i++) {\n if (!points[i].isNull) {\n firstValid = i;\n break;\n }\n }\n /**\n * Polar charts only. Whether to connect the ends of a line series\n * plot across the extremes.\n *\n * @sample {highcharts} highcharts/plotoptions/line-connectends-false/\n * Do not connect\n *\n * @type {boolean}\n * @since 2.3.0\n * @product highcharts\n * @apioption plotOptions.series.connectEnds\n */\n if (this.options.connectEnds !== false &&\n typeof firstValid !== 'undefined') {\n this.connectEnds = true; // re-used in splines\n points.splice(points.length, 0, points[firstValid]);\n popLastPoint = true;\n }\n // For area charts, pseudo points are added to the graph, now we\n // need to translate these\n points.forEach(function (point) {\n if (typeof point.polarPlotY === 'undefined') {\n series.polar.toXY(point);\n }\n });\n }\n // Run uber method\n var ret = proceed.apply(this,\n [].slice.call(arguments, 1));\n // #6212 points.splice method is adding points to an array. In case of\n // areaspline getGraphPath method is used two times and in both times\n // points are added to an array. That is why points.pop is used, to get\n // unmodified points.\n if (popLastPoint) {\n points.pop();\n }\n return ret;\n }\n /**\n * Extend getCoordinates to prepare for polar axis values\n * @private\n */\n function wrapPointerGetCoordinates(proceed, e) {\n var chart = this.chart;\n var ret = {\n xAxis: [],\n yAxis: []\n };\n if (chart.polar) {\n chart.axes.forEach(function (axis) {\n // Skip colorAxis\n if (axis.coll === 'colorAxis') {\n return;\n }\n var isXAxis = axis.isXAxis,\n center = axis.center,\n x = e.chartX - center[0] - chart.plotLeft,\n y = e.chartY - center[1] - chart.plotTop;\n ret[isXAxis ? 'xAxis' : 'yAxis'].push({\n axis: axis,\n value: axis.translate(isXAxis ?\n Math.PI - Math.atan2(x, y) : // angle\n // distance from center\n Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)), true)\n });\n });\n }\n else {\n ret = proceed.call(this, e);\n }\n return ret;\n }\n /**\n * Prevent zooming on mobile devices\n * @private\n */\n function wrapPointerPinch(proceed, e) {\n if (this.chart.polar) {\n return;\n }\n proceed.call(this, e);\n }\n /**\n * Define the animate method for regular series\n * @private\n */\n function wrapSeriesAnimate(proceed, init) {\n var series = this,\n chart = this.chart,\n group = this.group,\n markerGroup = this.markerGroup,\n center = this.xAxis && this.xAxis.center,\n plotLeft = chart.plotLeft,\n plotTop = chart.plotTop;\n var animation = this.options.animation,\n attribs,\n paneInnerR,\n graphic,\n shapeArgs,\n r,\n innerR;\n // Specific animation for polar charts\n if (chart.polar) {\n if (series.isRadialBar) {\n if (!init) {\n // Run the pie animation for radial bars\n series.startAngleRad = pick(series.translatedThreshold, series.xAxis.startAngleRad);\n H.seriesTypes.pie.prototype.animate.call(series, init);\n }\n }\n else {\n // Enable animation on polar charts only in SVG. In VML, the scaling\n // is different, plus animation would be so slow it would't matter.\n if (chart.renderer.isSVG) {\n animation = animObject(animation);\n // A different animation needed for column like series\n if (series.is('column')) {\n if (!init) {\n paneInnerR = center[3] / 2;\n series.points.forEach(function (point) {\n graphic = point.graphic;\n shapeArgs = point.shapeArgs;\n r = shapeArgs && shapeArgs.r;\n innerR = shapeArgs && shapeArgs.innerR;\n if (graphic && shapeArgs) {\n // start values\n graphic.attr({\n r: paneInnerR,\n innerR: paneInnerR\n });\n // animate\n graphic.animate({\n r: r,\n innerR: innerR\n }, series.options.animation);\n }\n });\n }\n }\n else {\n // Initialize the animation\n if (init) {\n // Scale down the group and place it in the center\n attribs = {\n translateX: center[0] + plotLeft,\n translateY: center[1] + plotTop,\n scaleX: 0.001,\n scaleY: 0.001\n };\n group.attr(attribs);\n if (markerGroup) {\n markerGroup.attr(attribs);\n }\n // Run the animation\n }\n else {\n attribs = {\n translateX: plotLeft,\n translateY: plotTop,\n scaleX: 1,\n scaleY: 1\n };\n group.animate(attribs, animation);\n if (markerGroup) {\n markerGroup.animate(attribs, animation);\n }\n }\n }\n }\n }\n // For non-polar charts, revert to the basic animation\n }\n else {\n proceed.call(this, init);\n }\n }\n /**\n * Overridden method for calculating a spline from one point to the next\n * @private\n */\n function wrapSplineSeriesGetPointSpline(proceed, segment, point, i) {\n var ret,\n connectors;\n if (this.chart.polar) {\n // moveTo or lineTo\n if (!i) {\n ret = ['M', point.plotX, point.plotY];\n }\n else { // curve from last point to this\n connectors = getConnectors(segment, i, true, this.connectEnds);\n var rightContX = connectors.prevPointCont &&\n connectors.prevPointCont.rightContX;\n var rightContY = connectors.prevPointCont &&\n connectors.prevPointCont.rightContY;\n ret = [\n 'C',\n isNumber(rightContX) ? rightContX : connectors.plotX,\n isNumber(rightContY) ? rightContY : connectors.plotY,\n isNumber(connectors.leftContX) ?\n connectors.leftContX :\n connectors.plotX,\n isNumber(connectors.leftContY) ?\n connectors.leftContY :\n connectors.plotY,\n connectors.plotX,\n connectors.plotY\n ];\n }\n }\n else {\n ret = proceed.call(this, segment, point, i);\n }\n return ret;\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * Extensions for polar charts. Additionally, much of the geometry required\n * for polar charts is gathered in RadialAxes.js.\n * @private\n */\n var PolarAdditions = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function PolarAdditions(series) {\n this.series = series;\n }\n /* *\n *\n * Static Functions\n *\n * */\n PolarAdditions.compose = function (AxisClass, ChartClass, PointerClass, SeriesClass, TickClass, AreaSplineRangeSeriesClass, ColumnSeriesClass, LineSeriesClass, SplineSeriesClass) {\n RadialAxis.compose(AxisClass, TickClass);\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n addEvent(ChartClass, 'afterDrawChartBox', onChartAfterDrawChartBox);\n addEvent(ChartClass, 'getAxes', onChartGetAxes);\n addEvent(ChartClass, 'init', onChartAfterInit);\n var chartProto = ChartClass.prototype;\n wrap(chartProto, 'get', wrapChartGet);\n }\n if (composedClasses.indexOf(PointerClass) === -1) {\n composedClasses.push(PointerClass);\n var pointerProto = PointerClass.prototype;\n wrap(pointerProto, 'getCoordinates', wrapPointerGetCoordinates);\n wrap(pointerProto, 'pinch', wrapPointerPinch);\n addEvent(PointerClass, 'getSelectionMarkerAttrs', onPointerGetSelectionMarkerAttrs);\n addEvent(PointerClass, 'getSelectionBox', onPointerGetSelectionBox);\n }\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n addEvent(SeriesClass, 'afterInit', onSeriesAfterInit);\n addEvent(SeriesClass, 'afterTranslate', onSeriesAfterTranslate, { order: 2 } // Run after translation of ||-coords\n );\n var seriesProto = SeriesClass.prototype;\n wrap(seriesProto, 'animate', wrapSeriesAnimate);\n }\n if (ColumnSeriesClass &&\n composedClasses.indexOf(ColumnSeriesClass) === -1) {\n composedClasses.push(ColumnSeriesClass);\n var columnProto = ColumnSeriesClass.prototype;\n wrap(columnProto, 'alignDataLabel', wrapColumnSeriesAlignDataLabel);\n wrap(columnProto, 'animate', wrapSeriesAnimate);\n wrap(columnProto, 'translate', wrapColumnSeriesTranslate);\n }\n if (LineSeriesClass &&\n composedClasses.indexOf(LineSeriesClass) === -1) {\n composedClasses.push(LineSeriesClass);\n var lineProto = LineSeriesClass.prototype;\n wrap(lineProto, 'getGraphPath', wrapLineSeriesGetGraphPath);\n }\n if (SplineSeriesClass &&\n composedClasses.indexOf(SplineSeriesClass) === -1) {\n composedClasses.push(SplineSeriesClass);\n var splineProto = SplineSeriesClass.prototype;\n wrap(splineProto, 'getPointSpline', wrapSplineSeriesGetPointSpline);\n if (AreaSplineRangeSeriesClass &&\n composedClasses.indexOf(AreaSplineRangeSeriesClass) === -1) {\n composedClasses.push(AreaSplineRangeSeriesClass);\n var areaSplineRangeProto = AreaSplineRangeSeriesClass.prototype;\n // #6430 Areasplinerange series use unwrapped getPointSpline\n // method, so we need to set this method again.\n areaSplineRangeProto.getPointSpline =\n splineProto.getPointSpline;\n }\n }\n };\n /* *\n *\n * Functions\n *\n * */\n PolarAdditions.prototype.arc = function (low, high, start, end) {\n var series = this.series,\n center = series.xAxis.center,\n len = series.yAxis.len,\n paneInnerR = center[3] / 2;\n var r = len - high + paneInnerR,\n innerR = len - pick(low,\n len) + paneInnerR;\n // Prevent columns from shooting through the pane's center\n if (series.yAxis.reversed) {\n if (r < 0) {\n r = paneInnerR;\n }\n if (innerR < 0) {\n innerR = paneInnerR;\n }\n }\n // Return a new shapeArgs\n return {\n x: center[0],\n y: center[1],\n r: r,\n innerR: innerR,\n start: start,\n end: end\n };\n };\n /**\n * Translate a point's plotX and plotY from the internal angle and radius\n * measures to true plotX, plotY coordinates\n * @private\n */\n PolarAdditions.prototype.toXY = function (point) {\n var series = this.series,\n chart = series.chart,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n plotX = point.plotX,\n inverted = chart.inverted,\n pointY = point.y;\n var plotY = point.plotY,\n radius = inverted ? plotX : yAxis.len - plotY,\n clientX;\n // Corrected y position of inverted series other than column\n if (inverted && series && !series.isRadialBar) {\n point.plotY = plotY =\n isNumber(pointY) ? yAxis.translate(pointY) : 0;\n }\n // Save rectangular plotX, plotY for later computation\n point.rectPlotX = plotX;\n point.rectPlotY = plotY;\n if (yAxis.center) {\n radius += yAxis.center[3] / 2;\n }\n // Find the polar plotX and plotY. Avoid setting plotX and plotY to NaN\n // when plotY is undefined (#15438)\n if (isNumber(plotY)) {\n var xy = inverted ? yAxis.postTranslate(plotY,\n radius) :\n xAxis.postTranslate(plotX,\n radius);\n point.plotX = point.polarPlotX = xy.x - chart.plotLeft;\n point.plotY = point.polarPlotY = xy.y - chart.plotTop;\n }\n // If shared tooltip, record the angle in degrees in order to align X\n // points. Otherwise, use a standard k-d tree to get the nearest point\n // in two dimensions.\n if (series.kdByAngle) {\n clientX = ((plotX / Math.PI * 180) + xAxis.pane.options.startAngle) % 360;\n if (clientX < 0) { // #2665\n clientX += 360;\n }\n point.clientX = clientX;\n }\n else {\n point.clientX = point.plotX;\n }\n };\n return PolarAdditions;\n }());\n /* *\n *\n * Default Export\n *\n * */\n\n return PolarAdditions;\n });\n _registerModule(_modules, 'masters/highcharts-more.src.js', [_modules['Core/Globals.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Series/Bubble/BubbleSeries.js'], _modules['Series/PackedBubble/PackedBubbleSeries.js'], _modules['Series/PolarComposition.js']], function (Highcharts, SeriesRegistry, BubbleSeries, PackedBubbleSeries, PolarAdditions) {\n\n var G = Highcharts;\n BubbleSeries.compose(G.Axis, G.Chart, G.Legend, G.Series);\n PackedBubbleSeries.compose(G.Axis, G.Chart, G.Legend, G.Series);\n PolarAdditions.compose(G.Axis, G.Chart, G.Pointer, G.Series, G.Tick, SeriesRegistry.seriesTypes.areasplinerange, SeriesRegistry.seriesTypes.column, SeriesRegistry.seriesTypes.line, SeriesRegistry.seriesTypes.spline);\n\n });\n}));","/**\n * @license Highcharts JS v10.3.3 (2023-01-20)\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n(function (root, factory) {\n if (typeof module === 'object' && module.exports) {\n factory['default'] = factory;\n module.exports = root.document ?\n factory(root) :\n factory;\n } else if (typeof define === 'function' && define.amd) {\n define('highcharts/highcharts', function () {\n return factory(root);\n });\n } else {\n if (root.Highcharts) {\n root.Highcharts.error(16, true);\n }\n root.Highcharts = factory(root);\n }\n}(typeof window !== 'undefined' ? window : this, function (window) {\n 'use strict';\n var _modules = {};\n function _registerModule(obj, path, args, fn) {\n if (!obj.hasOwnProperty(path)) {\n obj[path] = fn.apply(null, args);\n\n if (typeof CustomEvent === 'function') {\n window.dispatchEvent(\n new CustomEvent(\n 'HighchartsModuleLoaded',\n { detail: { path: path, module: obj[path] }\n })\n );\n }\n }\n }\n _registerModule(_modules, 'Core/Globals.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n /**\n * Shared Highcharts properties.\n * @private\n */\n var Globals;\n (function (Globals) {\n /* *\n *\n * Constants\n *\n * */\n Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '10.3.3', Globals.win = (typeof window !== 'undefined' ?\n window :\n {}), // eslint-disable-line node/no-unsupported-features/es-builtins\n Globals.doc = Globals.win.document, Globals.svg = (Globals.doc &&\n Globals.doc.createElementNS &&\n !!Globals.doc.createElementNS(Globals.SVG_NS, 'svg').createSVGRect), Globals.userAgent = (Globals.win.navigator && Globals.win.navigator.userAgent) || '', Globals.isChrome = Globals.userAgent.indexOf('Chrome') !== -1, Globals.isFirefox = Globals.userAgent.indexOf('Firefox') !== -1, Globals.isMS = /(edge|msie|trident)/i.test(Globals.userAgent) && !Globals.win.opera, Globals.isSafari = !Globals.isChrome && Globals.userAgent.indexOf('Safari') !== -1, Globals.isTouchDevice = /(Mobile|Android|Windows Phone)/.test(Globals.userAgent), Globals.isWebKit = Globals.userAgent.indexOf('AppleWebKit') !== -1, Globals.deg2rad = Math.PI * 2 / 360, Globals.hasBidiBug = (Globals.isFirefox &&\n parseInt(Globals.userAgent.split('Firefox/')[1], 10) < 4 // issue #38\n ), Globals.hasTouch = !!Globals.win.TouchEvent, Globals.marginNames = [\n 'plotTop',\n 'marginRight',\n 'marginBottom',\n 'plotLeft'\n ], Globals.noop = function () { }, Globals.supportsPassiveEvents = (function () {\n // Checks whether the browser supports passive events, (#11353).\n var supportsPassive = false;\n // Object.defineProperty doesn't work on IE as well as passive\n // events - instead of using polyfill, we can exclude IE totally.\n if (!Globals.isMS) {\n var opts = Object.defineProperty({}, 'passive', {\n get: function () {\n supportsPassive = true;\n }\n });\n if (Globals.win.addEventListener && Globals.win.removeEventListener) {\n Globals.win.addEventListener('testPassive', Globals.noop, opts);\n Globals.win.removeEventListener('testPassive', Globals.noop, opts);\n }\n }\n return supportsPassive;\n }());\n /**\n * An array containing the current chart objects in the page. A chart's\n * position in the array is preserved throughout the page's lifetime. When\n * a chart is destroyed, the array item becomes `undefined`.\n *\n * @name Highcharts.charts\n * @type {Array<Highcharts.Chart|undefined>}\n */\n Globals.charts = [];\n /**\n * A hook for defining additional date format specifiers. New\n * specifiers are defined as key-value pairs by using the\n * specifier as key, and a function which takes the timestamp as\n * value. This function returns the formatted portion of the\n * date.\n *\n * @sample highcharts/global/dateformats/\n * Adding support for week number\n *\n * @name Highcharts.dateFormats\n * @type {Record<string, Highcharts.TimeFormatCallbackFunction>}\n */\n Globals.dateFormats = {};\n /**\n * @private\n * @deprecated\n * @todo Use only `Core/Series/SeriesRegistry.seriesTypes`\n */\n Globals.seriesTypes = {};\n /**\n * @private\n */\n Globals.symbolSizes = {};\n /* *\n *\n * Properties\n *\n * */\n // eslint-disable-next-line prefer-const\n Globals.chartCount = 0;\n })(Globals || (Globals = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Theme options that should get applied to the chart. In module mode it\n * might not be possible to change this property because of read-only\n * restrictions, instead use {@link Highcharts.setOptions}.\n *\n * @deprecated\n * @name Highcharts.theme\n * @type {Highcharts.Options}\n */\n (''); // keeps doclets above in JS file\n\n return Globals;\n });\n _registerModule(_modules, 'Core/Utilities.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var charts = H.charts,\n doc = H.doc,\n win = H.win;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Provide error messages for debugging, with links to online explanation. This\n * function can be overridden to provide custom error handling.\n *\n * @sample highcharts/chart/highcharts-error/\n * Custom error handler\n *\n * @function Highcharts.error\n *\n * @param {number|string} code\n * The error code. See\n * [errors.xml](https://github.com/highcharts/highcharts/blob/master/errors/errors.xml)\n * for available codes. If it is a string, the error message is printed\n * directly in the console.\n *\n * @param {boolean} [stop=false]\n * Whether to throw an error or just log a warning in the console.\n *\n * @param {Highcharts.Chart} [chart]\n * Reference to the chart that causes the error. Used in 'debugger'\n * module to display errors directly on the chart.\n * Important note: This argument is undefined for errors that lack\n * access to the Chart instance. In such case, the error will be\n * displayed on the last created chart.\n *\n * @param {Highcharts.Dictionary<string>} [params]\n * Additional parameters for the generated message.\n *\n * @return {void}\n */\n function error(code, stop, chart, params) {\n var severity = stop ? 'Highcharts error' : 'Highcharts warning';\n if (code === 32) {\n code = \"\" + severity + \": Deprecated member\";\n }\n var isCode = isNumber(code);\n var message = isCode ?\n \"\" + severity + \" #\" + code + \": www.highcharts.com/errors/\" + code + \"/\" :\n code.toString();\n var defaultHandler = function () {\n if (stop) {\n throw new Error(message);\n }\n // else ...\n if (win.console &&\n error.messages.indexOf(message) === -1 // prevent console flooting\n ) {\n console.warn(message); // eslint-disable-line no-console\n }\n };\n if (typeof params !== 'undefined') {\n var additionalMessages_1 = '';\n if (isCode) {\n message += '?';\n }\n objectEach(params, function (value, key) {\n additionalMessages_1 += \"\\n - \".concat(key, \": \").concat(value);\n if (isCode) {\n message += encodeURI(key) + '=' + encodeURI(value);\n }\n });\n message += additionalMessages_1;\n }\n fireEvent(H, 'displayError', { chart: chart, code: code, message: message, params: params }, defaultHandler);\n error.messages.push(message);\n }\n (function (error) {\n error.messages = [];\n })(error || (error = {}));\n /* eslint-disable valid-jsdoc */\n /**\n * Utility function to deep merge two or more objects and return a third object.\n * If the first argument is true, the contents of the second object is copied\n * into the first object. The merge function can also be used with a single\n * object argument to create a deep copy of an object.\n *\n * @function Highcharts.merge<T>\n *\n * @param {boolean} extend\n * Whether to extend the left-side object (a) or return a whole new\n * object.\n *\n * @param {T|undefined} a\n * The first object to extend. When only this is given, the function\n * returns a deep copy.\n *\n * @param {...Array<object|undefined>} [n]\n * An object to merge into the previous one.\n *\n * @return {T}\n * The merged object. If the first argument is true, the return is the\n * same as the second argument.\n */ /**\n * Utility function to deep merge two or more objects and return a third object.\n * The merge function can also be used with a single object argument to create a\n * deep copy of an object.\n *\n * @function Highcharts.merge<T>\n *\n * @param {T|undefined} a\n * The first object to extend. When only this is given, the function\n * returns a deep copy.\n *\n * @param {...Array<object|undefined>} [n]\n * An object to merge into the previous one.\n *\n * @return {T}\n * The merged object. If the first argument is true, the return is the\n * same as the second argument.\n */\n function merge() {\n /* eslint-enable valid-jsdoc */\n var i,\n args = arguments,\n ret = {};\n var doCopy = function (copy,\n original) {\n // An object is replacing a primitive\n if (typeof copy !== 'object') {\n copy = {};\n }\n objectEach(original, function (value, key) {\n // Prototype pollution (#14883)\n if (key === '__proto__' || key === 'constructor') {\n return;\n }\n // Copy the contents of objects, but not arrays or DOM nodes\n if (isObject(value, true) &&\n !isClass(value) &&\n !isDOMElement(value)) {\n copy[key] = doCopy(copy[key] || {}, value);\n // Primitives and arrays are copied over directly\n }\n else {\n copy[key] = original[key];\n }\n });\n return copy;\n };\n // If first argument is true, copy into the existing object. Used in\n // setOptions.\n if (args[0] === true) {\n ret = args[1];\n args = Array.prototype.slice.call(args, 2);\n }\n // For each argument, extend the return\n var len = args.length;\n for (i = 0; i < len; i++) {\n ret = doCopy(ret, args[i]);\n }\n return ret;\n }\n /**\n * Constrain a value to within a lower and upper threshold.\n *\n * @private\n * @param {number} value The initial value\n * @param {number} min The lower threshold\n * @param {number} max The upper threshold\n * @return {number} Returns a number value within min and max.\n */\n function clamp(value, min, max) {\n return value > min ? value < max ? value : max : min;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Remove settings that have not changed, to avoid unnecessary rendering or\n * computing (#9197).\n * @private\n */\n function cleanRecursively(newer, older) {\n var result = {};\n objectEach(newer, function (_val, key) {\n var ob;\n // Dive into objects (except DOM nodes)\n if (isObject(newer[key], true) &&\n !newer.nodeType && // #10044\n older[key]) {\n ob = cleanRecursively(newer[key], older[key]);\n if (Object.keys(ob).length) {\n result[key] = ob;\n }\n // Arrays, primitives and DOM nodes are copied directly\n }\n else if (isObject(newer[key]) ||\n newer[key] !== older[key] ||\n // If the newer key is explicitly undefined, keep it (#10525)\n (key in newer && !(key in older))) {\n result[key] = newer[key];\n }\n });\n return result;\n }\n /**\n * Shortcut for parseInt\n *\n * @private\n * @function Highcharts.pInt\n *\n * @param {*} s\n * any\n *\n * @param {number} [mag]\n * Magnitude\n *\n * @return {number}\n * number\n */\n function pInt(s, mag) {\n return parseInt(s, mag || 10);\n }\n /**\n * Utility function to check for string type.\n *\n * @function Highcharts.isString\n *\n * @param {*} s\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a string.\n */\n function isString(s) {\n return typeof s === 'string';\n }\n /**\n * Utility function to check if an item is an array.\n *\n * @function Highcharts.isArray\n *\n * @param {*} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is an array.\n */\n function isArray(obj) {\n var str = Object.prototype.toString.call(obj);\n return str === '[object Array]' || str === '[object Array Iterator]';\n }\n /**\n * Utility function to check if an item is of type object.\n *\n * @function Highcharts.isObject\n *\n * @param {*} obj\n * The item to check.\n *\n * @param {boolean} [strict=false]\n * Also checks that the object is not an array.\n *\n * @return {boolean}\n * True if the argument is an object.\n */\n function isObject(obj, strict) {\n return (!!obj &&\n typeof obj === 'object' &&\n (!strict || !isArray(obj))); // eslint-disable-line @typescript-eslint/no-explicit-any\n }\n /**\n * Utility function to check if an Object is a HTML Element.\n *\n * @function Highcharts.isDOMElement\n *\n * @param {*} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a HTML Element.\n */\n function isDOMElement(obj) {\n return isObject(obj) && typeof obj.nodeType === 'number';\n }\n /**\n * Utility function to check if an Object is a class.\n *\n * @function Highcharts.isClass\n *\n * @param {object|undefined} obj\n * The item to check.\n *\n * @return {boolean}\n * True if the argument is a class.\n */\n function isClass(obj) {\n var c = obj && obj.constructor;\n return !!(isObject(obj, true) &&\n !isDOMElement(obj) &&\n (c && c.name && c.name !== 'Object'));\n }\n /**\n * Utility function to check if an item is a number and it is finite (not NaN,\n * Infinity or -Infinity).\n *\n * @function Highcharts.isNumber\n *\n * @param {*} n\n * The item to check.\n *\n * @return {boolean}\n * True if the item is a finite number\n */\n function isNumber(n) {\n return typeof n === 'number' && !isNaN(n) && n < Infinity && n > -Infinity;\n }\n /**\n * Remove the last occurence of an item from an array.\n *\n * @function Highcharts.erase\n *\n * @param {Array<*>} arr\n * The array.\n *\n * @param {*} item\n * The item to remove.\n *\n * @return {void}\n */\n function erase(arr, item) {\n var i = arr.length;\n while (i--) {\n if (arr[i] === item) {\n arr.splice(i, 1);\n break;\n }\n }\n }\n /**\n * Check if an object is null or undefined.\n *\n * @function Highcharts.defined\n *\n * @param {*} obj\n * The object to check.\n *\n * @return {boolean}\n * False if the object is null or undefined, otherwise true.\n */\n function defined(obj) {\n return typeof obj !== 'undefined' && obj !== null;\n }\n /**\n * Set or get an attribute or an object of attributes.\n *\n * To use as a setter, pass a key and a value, or let the second argument be a\n * collection of keys and values. When using a collection, passing a value of\n * `null` or `undefined` will remove the attribute.\n *\n * To use as a getter, pass only a string as the second argument.\n *\n * @function Highcharts.attr\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} elem\n * The DOM element to receive the attribute(s).\n *\n * @param {string|Highcharts.HTMLAttributes|Highcharts.SVGAttributes} [keyOrAttribs]\n * The property or an object of key-value pairs.\n *\n * @param {number|string} [value]\n * The value if a single property is set.\n *\n * @return {string|null|undefined}\n * When used as a getter, return the value.\n */\n function attr(elem, keyOrAttribs, value) {\n var isGetter = isString(keyOrAttribs) && !defined(value);\n var ret;\n var attrSingle = function (value,\n key) {\n // Set the value\n if (defined(value)) {\n elem.setAttribute(key,\n value);\n // Get the value\n }\n else if (isGetter) {\n ret = elem.getAttribute(key);\n // IE7 and below cannot get class through getAttribute (#7850)\n if (!ret && key === 'class') {\n ret = elem.getAttribute(key + 'Name');\n }\n // Remove the value\n }\n else {\n elem.removeAttribute(key);\n }\n };\n // If keyOrAttribs is a string\n if (isString(keyOrAttribs)) {\n attrSingle(value, keyOrAttribs);\n // Else if keyOrAttribs is defined, it is a hash of key/value pairs\n }\n else {\n objectEach(keyOrAttribs, attrSingle);\n }\n return ret;\n }\n /**\n * Check if an element is an array, and if not, make it into an array.\n *\n * @function Highcharts.splat\n *\n * @param {*} obj\n * The object to splat.\n *\n * @return {Array}\n * The produced or original array.\n */\n function splat(obj) {\n return isArray(obj) ? obj : [obj];\n }\n /**\n * Set a timeout if the delay is given, otherwise perform the function\n * synchronously.\n *\n * @function Highcharts.syncTimeout\n *\n * @param {Function} fn\n * The function callback.\n *\n * @param {number} delay\n * Delay in milliseconds.\n *\n * @param {*} [context]\n * An optional context to send to the function callback.\n *\n * @return {number}\n * An identifier for the timeout that can later be cleared with\n * Highcharts.clearTimeout. Returns -1 if there is no timeout.\n */\n function syncTimeout(fn, delay, context) {\n if (delay > 0) {\n return setTimeout(fn, delay, context);\n }\n fn.call(0, context);\n return -1;\n }\n /**\n * Internal clear timeout. The function checks that the `id` was not removed\n * (e.g. by `chart.destroy()`). For the details see\n * [issue #7901](https://github.com/highcharts/highcharts/issues/7901).\n *\n * @function Highcharts.clearTimeout\n *\n * @param {number|undefined} id\n * Id of a timeout.\n */\n function internalClearTimeout(id) {\n if (defined(id)) {\n clearTimeout(id);\n }\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Utility function to extend an object with the members of another.\n *\n * @function Highcharts.extend<T>\n *\n * @param {T|undefined} a\n * The object to be extended.\n *\n * @param {Partial<T>} b\n * The object to add to the first one.\n *\n * @return {T}\n * Object a, the original object.\n */\n function extend(a, b) {\n /* eslint-enable valid-jsdoc */\n var n;\n if (!a) {\n a = {};\n }\n for (n in b) { // eslint-disable-line guard-for-in\n a[n] = b[n];\n }\n return a;\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Return the first value that is not null or undefined.\n *\n * @function Highcharts.pick<T>\n *\n * @param {...Array<T|null|undefined>} items\n * Variable number of arguments to inspect.\n *\n * @return {T}\n * The value of the first argument that is not null or undefined.\n */\n function pick() {\n var args = arguments;\n var length = args.length;\n for (var i = 0; i < length; i++) {\n var arg = args[i];\n if (typeof arg !== 'undefined' && arg !== null) {\n return arg;\n }\n }\n }\n /**\n * Set CSS on a given element.\n *\n * @function Highcharts.css\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} el\n * An HTML DOM element.\n *\n * @param {Highcharts.CSSObject} styles\n * Style object with camel case property names.\n *\n * @return {void}\n */\n function css(el, styles) {\n if (H.isMS && !H.svg) { // #2686\n if (styles && defined(styles.opacity)) {\n styles.filter = \"alpha(opacity=\".concat(styles.opacity * 100, \")\");\n }\n }\n extend(el.style, styles);\n }\n /**\n * Utility function to create an HTML element with attributes and styles.\n *\n * @function Highcharts.createElement\n *\n * @param {string} tag\n * The HTML tag.\n *\n * @param {Highcharts.HTMLAttributes} [attribs]\n * Attributes as an object of key-value pairs.\n *\n * @param {Highcharts.CSSObject} [styles]\n * Styles as an object of key-value pairs.\n *\n * @param {Highcharts.HTMLDOMElement} [parent]\n * The parent HTML object.\n *\n * @param {boolean} [nopad=false]\n * If true, remove all padding, border and margin.\n *\n * @return {Highcharts.HTMLDOMElement}\n * The created DOM element.\n */\n function createElement(tag, attribs, styles, parent, nopad) {\n var el = doc.createElement(tag);\n if (attribs) {\n extend(el, attribs);\n }\n if (nopad) {\n css(el, { padding: '0', border: 'none', margin: '0' });\n }\n if (styles) {\n css(el, styles);\n }\n if (parent) {\n parent.appendChild(el);\n }\n return el;\n }\n // eslint-disable-next-line valid-jsdoc\n /**\n * Extend a prototyped class by new members.\n *\n * @function Highcharts.extendClass<T>\n *\n * @param {Highcharts.Class<T>} parent\n * The parent prototype to inherit.\n *\n * @param {Highcharts.Dictionary<*>} members\n * A collection of prototype members to add or override compared to the\n * parent prototype.\n *\n * @return {Highcharts.Class<T>}\n * A new prototype.\n */\n function extendClass(parent, members) {\n var obj = (function () { });\n obj.prototype = new parent(); // eslint-disable-line new-cap\n extend(obj.prototype, members);\n return obj;\n }\n /**\n * Left-pad a string to a given length by adding a character repetitively.\n *\n * @function Highcharts.pad\n *\n * @param {number} number\n * The input string or number.\n *\n * @param {number} [length]\n * The desired string length.\n *\n * @param {string} [padder=0]\n * The character to pad with.\n *\n * @return {string}\n * The padded string.\n */\n function pad(number, length, padder) {\n return new Array((length || 2) +\n 1 -\n String(number)\n .replace('-', '')\n .length).join(padder || '0') + number;\n }\n /**\n * Return a length based on either the integer value, or a percentage of a base.\n *\n * @function Highcharts.relativeLength\n *\n * @param {Highcharts.RelativeSize} value\n * A percentage string or a number.\n *\n * @param {number} base\n * The full length that represents 100%.\n *\n * @param {number} [offset=0]\n * A pixel offset to apply for percentage values. Used internally in\n * axis positioning.\n *\n * @return {number}\n * The computed length.\n */\n function relativeLength(value, base, offset) {\n return (/%$/).test(value) ?\n (base * parseFloat(value) / 100) + (offset || 0) :\n parseFloat(value);\n }\n /**\n * Wrap a method with extended functionality, preserving the original function.\n *\n * @function Highcharts.wrap\n *\n * @param {*} obj\n * The context object that the method belongs to. In real cases, this is\n * often a prototype.\n *\n * @param {string} method\n * The name of the method to extend.\n *\n * @param {Highcharts.WrapProceedFunction} func\n * A wrapper function callback. This function is called with the same\n * arguments as the original function, except that the original function\n * is unshifted and passed as the first argument.\n */\n function wrap(obj, method, func) {\n var proceed = obj[method];\n obj[method] = function () {\n var outerArgs = arguments,\n scope = this;\n return func.apply(this, [\n function () {\n return proceed.apply(scope, arguments.length ? arguments : outerArgs);\n }\n ].concat([].slice.call(arguments)));\n };\n }\n /**\n * Get the magnitude of a number.\n *\n * @function Highcharts.getMagnitude\n *\n * @param {number} num\n * The number.\n *\n * @return {number}\n * The magnitude, where 1-9 are magnitude 1, 10-99 magnitude 2 etc.\n */\n function getMagnitude(num) {\n return Math.pow(10, Math.floor(Math.log(num) / Math.LN10));\n }\n /**\n * Take an interval and normalize it to multiples of round numbers.\n *\n * @deprecated\n * @function Highcharts.normalizeTickInterval\n *\n * @param {number} interval\n * The raw, un-rounded interval.\n *\n * @param {Array<*>} [multiples]\n * Allowed multiples.\n *\n * @param {number} [magnitude]\n * The magnitude of the number.\n *\n * @param {boolean} [allowDecimals]\n * Whether to allow decimals.\n *\n * @param {boolean} [hasTickAmount]\n * If it has tickAmount, avoid landing on tick intervals lower than\n * original.\n *\n * @return {number}\n * The normalized interval.\n *\n * @todo\n * Move this function to the Axis prototype. It is here only for historical\n * reasons.\n */\n function normalizeTickInterval(interval, multiples, magnitude, allowDecimals, hasTickAmount) {\n var i,\n retInterval = interval;\n // round to a tenfold of 1, 2, 2.5 or 5\n magnitude = pick(magnitude, getMagnitude(interval));\n var normalized = interval / magnitude;\n // multiples for a linear scale\n if (!multiples) {\n multiples = hasTickAmount ?\n // Finer grained ticks when the tick amount is hard set, including\n // when alignTicks is true on multiple axes (#4580).\n [1, 1.2, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10] :\n // Else, let ticks fall on rounder numbers\n [1, 2, 2.5, 5, 10];\n // the allowDecimals option\n if (allowDecimals === false) {\n if (magnitude === 1) {\n multiples = multiples.filter(function (num) {\n return num % 1 === 0;\n });\n }\n else if (magnitude <= 0.1) {\n multiples = [1 / magnitude];\n }\n }\n }\n // normalize the interval to the nearest multiple\n for (i = 0; i < multiples.length; i++) {\n retInterval = multiples[i];\n // only allow tick amounts smaller than natural\n if ((hasTickAmount &&\n retInterval * magnitude >= interval) ||\n (!hasTickAmount &&\n (normalized <=\n (multiples[i] +\n (multiples[i + 1] || multiples[i])) / 2))) {\n break;\n }\n }\n // Multiply back to the correct magnitude. Correct floats to appropriate\n // precision (#6085).\n retInterval = correctFloat(retInterval * magnitude, -Math.round(Math.log(0.001) / Math.LN10));\n return retInterval;\n }\n /**\n * Sort an object array and keep the order of equal items. The ECMAScript\n * standard does not specify the behaviour when items are equal.\n *\n * @function Highcharts.stableSort\n *\n * @param {Array<*>} arr\n * The array to sort.\n *\n * @param {Function} sortFunction\n * The function to sort it with, like with regular Array.prototype.sort.\n */\n function stableSort(arr, sortFunction) {\n // @todo It seems like Chrome since v70 sorts in a stable way internally,\n // plus all other browsers do it, so over time we may be able to remove this\n // function\n var length = arr.length;\n var sortValue,\n i;\n // Add index to each item\n for (i = 0; i < length; i++) {\n arr[i].safeI = i; // stable sort index\n }\n arr.sort(function (a, b) {\n sortValue = sortFunction(a, b);\n return sortValue === 0 ? a.safeI - b.safeI : sortValue;\n });\n // Remove index from items\n for (i = 0; i < length; i++) {\n delete arr[i].safeI; // stable sort index\n }\n }\n /**\n * Non-recursive method to find the lowest member of an array. `Math.min` raises\n * a maximum call stack size exceeded error in Chrome when trying to apply more\n * than 150.000 points. This method is slightly slower, but safe.\n *\n * @function Highcharts.arrayMin\n *\n * @param {Array<*>} data\n * An array of numbers.\n *\n * @return {number}\n * The lowest number.\n */\n function arrayMin(data) {\n var i = data.length,\n min = data[0];\n while (i--) {\n if (data[i] < min) {\n min = data[i];\n }\n }\n return min;\n }\n /**\n * Non-recursive method to find the lowest member of an array. `Math.max` raises\n * a maximum call stack size exceeded error in Chrome when trying to apply more\n * than 150.000 points. This method is slightly slower, but safe.\n *\n * @function Highcharts.arrayMax\n *\n * @param {Array<*>} data\n * An array of numbers.\n *\n * @return {number}\n * The highest number.\n */\n function arrayMax(data) {\n var i = data.length,\n max = data[0];\n while (i--) {\n if (data[i] > max) {\n max = data[i];\n }\n }\n return max;\n }\n /**\n * Utility method that destroys any SVGElement instances that are properties on\n * the given object. It loops all properties and invokes destroy if there is a\n * destroy method. The property is then delete.\n *\n * @function Highcharts.destroyObjectProperties\n *\n * @param {*} obj\n * The object to destroy properties on.\n *\n * @param {*} [except]\n * Exception, do not destroy this property, only delete it.\n */\n function destroyObjectProperties(obj, except) {\n objectEach(obj, function (val, n) {\n // If the object is non-null and destroy is defined\n if (val && val !== except && val.destroy) {\n // Invoke the destroy\n val.destroy();\n }\n // Delete the property from the object.\n delete obj[n];\n });\n }\n /**\n * Discard a HTML element\n *\n * @function Highcharts.discardElement\n *\n * @param {Highcharts.HTMLDOMElement} element\n * The HTML node to discard.\n */\n function discardElement(element) {\n if (element && element.parentElement) {\n element.parentElement.removeChild(element);\n }\n }\n /**\n * Fix JS round off float errors.\n *\n * @function Highcharts.correctFloat\n *\n * @param {number} num\n * A float number to fix.\n *\n * @param {number} [prec=14]\n * The precision.\n *\n * @return {number}\n * The corrected float number.\n */\n function correctFloat(num, prec) {\n // When the number is higher than 1e14 use the number (#16275)\n return num > 1e14 ? num : parseFloat(num.toPrecision(prec || 14));\n }\n /**\n * The time unit lookup\n *\n * @ignore\n */\n var timeUnits = {\n millisecond: 1,\n second: 1000,\n minute: 60000,\n hour: 3600000,\n day: 24 * 3600000,\n week: 7 * 24 * 3600000,\n month: 28 * 24 * 3600000,\n year: 364 * 24 * 3600000\n };\n /**\n * Easing definition\n *\n * @private\n * @function Math.easeInOutSine\n *\n * @param {number} pos\n * Current position, ranging from 0 to 1.\n *\n * @return {number}\n * Ease result\n */\n Math.easeInOutSine = function (pos) {\n return -0.5 * (Math.cos(Math.PI * pos) - 1);\n };\n /**\n * Returns the value of a property path on a given object.\n *\n * @private\n * @function getNestedProperty\n *\n * @param {string} path\n * Path to the property, for example `custom.myValue`.\n *\n * @param {unknown} obj\n * Instance containing the property on the specific path.\n *\n * @return {unknown}\n * The unknown property value.\n */\n function getNestedProperty(path, parent) {\n var pathElements = path.split('.');\n while (pathElements.length && defined(parent)) {\n var pathElement = pathElements.shift();\n // Filter on the key\n if (typeof pathElement === 'undefined' ||\n pathElement === '__proto__') {\n return; // undefined\n }\n var child = parent[pathElement];\n // Filter on the child\n if (!defined(child) ||\n typeof child === 'function' ||\n typeof child.nodeType === 'number' ||\n child === win) {\n return; // undefined\n }\n // Else, proceed\n parent = child;\n }\n return parent;\n }\n /**\n * Get the computed CSS value for given element and property, only for numerical\n * properties. For width and height, the dimension of the inner box (excluding\n * padding) is returned. Used for fitting the chart within the container.\n *\n * @function Highcharts.getStyle\n *\n * @param {Highcharts.HTMLDOMElement} el\n * An HTML element.\n *\n * @param {string} prop\n * The property name.\n *\n * @param {boolean} [toInt=true]\n * Parse to integer.\n *\n * @return {number|string|undefined}\n * The style value.\n */\n function getStyle(el, prop, toInt) {\n var customGetStyle = (H.getStyle || // oldie getStyle\n getStyle);\n var style;\n // For width and height, return the actual inner pixel size (#4913)\n if (prop === 'width') {\n var offsetWidth = Math.min(el.offsetWidth,\n el.scrollWidth);\n // In flex boxes, we need to use getBoundingClientRect and floor it,\n // because scrollWidth doesn't support subpixel precision (#6427) ...\n var boundingClientRectWidth = el.getBoundingClientRect &&\n el.getBoundingClientRect().width;\n // ...unless if the containing div or its parents are transform-scaled\n // down, in which case the boundingClientRect can't be used as it is\n // also scaled down (#9871, #10498).\n if (boundingClientRectWidth < offsetWidth &&\n boundingClientRectWidth >= offsetWidth - 1) {\n offsetWidth = Math.floor(boundingClientRectWidth);\n }\n return Math.max(0, // #8377\n (offsetWidth -\n (customGetStyle(el, 'padding-left', true) || 0) -\n (customGetStyle(el, 'padding-right', true) || 0)));\n }\n if (prop === 'height') {\n return Math.max(0, // #8377\n (Math.min(el.offsetHeight, el.scrollHeight) -\n (customGetStyle(el, 'padding-top', true) || 0) -\n (customGetStyle(el, 'padding-bottom', true) || 0)));\n }\n if (!win.getComputedStyle) {\n // SVG not supported, forgot to load oldie.js?\n error(27, true);\n }\n // Otherwise, get the computed style\n var css = win.getComputedStyle(el,\n void 0); // eslint-disable-line no-undefined\n if (css) {\n style = css.getPropertyValue(prop);\n if (pick(toInt, prop !== 'opacity')) {\n style = pInt(style);\n }\n }\n return style;\n }\n /**\n * Search for an item in an array.\n *\n * @function Highcharts.inArray\n *\n * @deprecated\n *\n * @param {*} item\n * The item to search for.\n *\n * @param {Array<*>} arr\n * The array or node collection to search in.\n *\n * @param {number} [fromIndex=0]\n * The index to start searching from.\n *\n * @return {number}\n * The index within the array, or -1 if not found.\n */\n function inArray(item, arr, fromIndex) {\n error(32, false, void 0, { 'Highcharts.inArray': 'use Array.indexOf' });\n return arr.indexOf(item, fromIndex);\n }\n /**\n * Return the value of the first element in the array that satisfies the\n * provided testing function.\n *\n * @function Highcharts.find<T>\n *\n * @param {Array<T>} arr\n * The array to test.\n *\n * @param {Function} callback\n * The callback function. The function receives the item as the first\n * argument. Return `true` if this item satisfies the condition.\n *\n * @return {T|undefined}\n * The value of the element.\n */\n var find = Array.prototype.find ?\n function (arr,\n callback) {\n return arr.find(callback);\n } :\n // Legacy implementation. PhantomJS, IE <= 11 etc. #7223.\n function (arr, callback) {\n var i;\n var length = arr.length;\n for (i = 0; i < length; i++) {\n if (callback(arr[i], i)) { // eslint-disable-line node/callback-return\n return arr[i];\n }\n }\n };\n /**\n * Returns an array of a given object's own properties.\n *\n * @function Highcharts.keys\n * @deprecated\n *\n * @param {*} obj\n * The object of which the properties are to be returned.\n *\n * @return {Array<string>}\n * An array of strings that represents all the properties.\n */\n function keys(obj) {\n error(32, false, void 0, { 'Highcharts.keys': 'use Object.keys' });\n return Object.keys(obj);\n }\n /**\n * Get the element's offset position, corrected for `overflow: auto`.\n *\n * @function Highcharts.offset\n *\n * @param {global.Element} el\n * The DOM element.\n *\n * @return {Highcharts.OffsetObject}\n * An object containing `left` and `top` properties for the position in\n * the page.\n */\n function offset(el) {\n var docElem = doc.documentElement,\n box = (el.parentElement || el.parentNode) ?\n el.getBoundingClientRect() :\n { top: 0,\n left: 0,\n width: 0,\n height: 0 };\n return {\n top: box.top + (win.pageYOffset || docElem.scrollTop) -\n (docElem.clientTop || 0),\n left: box.left + (win.pageXOffset || docElem.scrollLeft) -\n (docElem.clientLeft || 0),\n width: box.width,\n height: box.height\n };\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Iterate over object key pairs in an object.\n *\n * @function Highcharts.objectEach<T>\n *\n * @param {*} obj\n * The object to iterate over.\n *\n * @param {Highcharts.ObjectEachCallbackFunction<T>} fn\n * The iterator callback. It passes three arguments:\n * * value - The property value.\n * * key - The property key.\n * * obj - The object that objectEach is being applied to.\n *\n * @param {T} [ctx]\n * The context.\n */\n function objectEach(obj, fn, ctx) {\n /* eslint-enable valid-jsdoc */\n for (var key in obj) {\n if (Object.hasOwnProperty.call(obj, key)) {\n fn.call(ctx || obj[key], obj[key], key, obj);\n }\n }\n }\n /**\n * Iterate over an array.\n *\n * @deprecated\n * @function Highcharts.each\n *\n * @param {Array<*>} arr\n * The array to iterate over.\n *\n * @param {Function} fn\n * The iterator callback. It passes three arguments:\n * - `item`: The array item.\n * - `index`: The item's index in the array.\n * - `arr`: The array that each is being applied to.\n *\n * @param {*} [ctx]\n * The context.\n *\n * @return {void}\n */\n /**\n * Filter an array by a callback.\n *\n * @deprecated\n * @function Highcharts.grep\n *\n * @param {Array<*>} arr\n * The array to filter.\n *\n * @param {Function} callback\n * The callback function. The function receives the item as the first\n * argument. Return `true` if the item is to be preserved.\n *\n * @return {Array<*>}\n * A new, filtered array.\n */\n /**\n * Map an array by a callback.\n *\n * @deprecated\n * @function Highcharts.map\n *\n * @param {Array<*>} arr\n * The array to map.\n *\n * @param {Function} fn\n * The callback function. Return the new value for the new array.\n *\n * @return {Array<*>}\n * A new array item with modified items.\n */\n /**\n * Reduce an array to a single value.\n *\n * @deprecated\n * @function Highcharts.reduce\n *\n * @param {Array<*>} arr\n * The array to reduce.\n *\n * @param {Function} fn\n * The callback function. Return the reduced value. Receives 4\n * arguments: Accumulated/reduced value, current value, current array\n * index, and the array.\n *\n * @param {*} initialValue\n * The initial value of the accumulator.\n *\n * @return {*}\n * The reduced value.\n */\n /**\n * Test whether at least one element in the array passes the test implemented by\n * the provided function.\n *\n * @deprecated\n * @function Highcharts.some\n *\n * @param {Array<*>} arr\n * The array to test\n *\n * @param {Function} fn\n * The function to run on each item. Return truty to pass the test.\n * Receives arguments `currentValue`, `index` and `array`.\n *\n * @param {*} ctx\n * The context.\n *\n * @return {boolean}\n */\n objectEach({\n map: 'map',\n each: 'forEach',\n grep: 'filter',\n reduce: 'reduce',\n some: 'some'\n }, function (val, key) {\n H[key] = function (arr) {\n var _a;\n error(32, false, void 0, (_a = {}, _a[\"Highcharts.\".concat(key)] = \"use Array.\".concat(val), _a));\n return Array.prototype[val].apply(arr, [].slice.call(arguments, 1));\n };\n });\n /* eslint-disable valid-jsdoc */\n /**\n * Add an event listener.\n *\n * @function Highcharts.addEvent<T>\n *\n * @param {Highcharts.Class<T>|T} el\n * The element or object to add a listener to. It can be a\n * {@link HTMLDOMElement}, an {@link SVGElement} or any other object.\n *\n * @param {string} type\n * The event type.\n *\n * @param {Highcharts.EventCallbackFunction<T>|Function} fn\n * The function callback to execute when the event is fired.\n *\n * @param {Highcharts.EventOptionsObject} [options]\n * Options for adding the event.\n *\n * @return {Function}\n * A callback function to remove the added event.\n */\n function addEvent(el, type, fn, options) {\n /* eslint-enable valid-jsdoc */\n if (options === void 0) { options = {}; }\n // Add hcEvents to either the prototype (in case we're running addEvent on a\n // class) or the instance. If hasOwnProperty('hcEvents') is false, it is\n // inherited down the prototype chain, in which case we need to set the\n // property on this instance (which may itself be a prototype).\n var owner = typeof el === 'function' && el.prototype || el;\n if (!Object.hasOwnProperty.call(owner, 'hcEvents')) {\n owner.hcEvents = {};\n }\n var events = owner.hcEvents;\n // Allow click events added to points, otherwise they will be prevented by\n // the TouchPointer.pinch function after a pinch zoom operation (#7091).\n if (H.Point && // without H a dependency loop occurs\n el instanceof H.Point &&\n el.series &&\n el.series.chart) {\n el.series.chart.runTrackerClick = true;\n }\n // Handle DOM events\n // If the browser supports passive events, add it to improve performance\n // on touch events (#11353).\n var addEventListener = (el.addEventListener || H.addEventListenerPolyfill);\n if (addEventListener) {\n addEventListener.call(el, type, fn, H.supportsPassiveEvents ? {\n passive: options.passive === void 0 ?\n type.indexOf('touch') !== -1 : options.passive,\n capture: false\n } : false);\n }\n if (!events[type]) {\n events[type] = [];\n }\n var eventObject = {\n fn: fn,\n order: typeof options.order === 'number' ? options.order : Infinity\n };\n events[type].push(eventObject);\n // Order the calls\n events[type].sort(function (a, b) { return a.order - b.order; });\n // Return a function that can be called to remove this event.\n return function () {\n removeEvent(el, type, fn);\n };\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Remove an event that was added with {@link Highcharts#addEvent}.\n *\n * @function Highcharts.removeEvent<T>\n *\n * @param {Highcharts.Class<T>|T} el\n * The element to remove events on.\n *\n * @param {string} [type]\n * The type of events to remove. If undefined, all events are removed\n * from the element.\n *\n * @param {Highcharts.EventCallbackFunction<T>} [fn]\n * The specific callback to remove. If undefined, all events that match\n * the element and optionally the type are removed.\n *\n * @return {void}\n */\n function removeEvent(el, type, fn) {\n /* eslint-enable valid-jsdoc */\n /**\n * @private\n */\n function removeOneEvent(type, fn) {\n var removeEventListener = (el.removeEventListener || H.removeEventListenerPolyfill);\n if (removeEventListener) {\n removeEventListener.call(el, type, fn, false);\n }\n }\n /**\n * @private\n */\n function removeAllEvents(eventCollection) {\n var types,\n len;\n if (!el.nodeName) {\n return; // break on non-DOM events\n }\n if (type) {\n types = {};\n types[type] = true;\n }\n else {\n types = eventCollection;\n }\n objectEach(types, function (_val, n) {\n if (eventCollection[n]) {\n len = eventCollection[n].length;\n while (len--) {\n removeOneEvent(n, eventCollection[n][len].fn);\n }\n }\n });\n }\n var owner = typeof el === 'function' && el.prototype || el;\n if (Object.hasOwnProperty.call(owner, 'hcEvents')) {\n var events = owner.hcEvents;\n if (type) {\n var typeEvents = (events[type] || []);\n if (fn) {\n events[type] = typeEvents.filter(function (obj) {\n return fn !== obj.fn;\n });\n removeOneEvent(type, fn);\n }\n else {\n removeAllEvents(events);\n events[type] = [];\n }\n }\n else {\n removeAllEvents(events);\n delete owner.hcEvents;\n }\n }\n }\n /* eslint-disable valid-jsdoc */\n /**\n * Fire an event that was registered with {@link Highcharts#addEvent}.\n *\n * @function Highcharts.fireEvent<T>\n *\n * @param {T} el\n * The object to fire the event on. It can be a {@link HTMLDOMElement},\n * an {@link SVGElement} or any other object.\n *\n * @param {string} type\n * The type of event.\n *\n * @param {Highcharts.Dictionary<*>|Event} [eventArguments]\n * Custom event arguments that are passed on as an argument to the event\n * handler.\n *\n * @param {Highcharts.EventCallbackFunction<T>|Function} [defaultFunction]\n * The default function to execute if the other listeners haven't\n * returned false.\n *\n * @return {void}\n */\n function fireEvent(el, type, eventArguments, defaultFunction) {\n /* eslint-enable valid-jsdoc */\n var e,\n i;\n eventArguments = eventArguments || {};\n if (doc.createEvent &&\n (el.dispatchEvent ||\n (el.fireEvent &&\n // Enable firing events on Highcharts instance.\n el !== H))) {\n e = doc.createEvent('Events');\n e.initEvent(type, true, true);\n eventArguments = extend(e, eventArguments);\n if (el.dispatchEvent) {\n el.dispatchEvent(eventArguments);\n }\n else {\n el.fireEvent(type, eventArguments);\n }\n }\n else if (el.hcEvents) {\n if (!eventArguments.target) {\n // We're running a custom event\n extend(eventArguments, {\n // Attach a simple preventDefault function to skip\n // default handler if called. The built-in\n // defaultPrevented property is not overwritable (#5112)\n preventDefault: function () {\n eventArguments.defaultPrevented = true;\n },\n // Setting target to native events fails with clicking\n // the zoom-out button in Chrome.\n target: el,\n // If the type is not set, we're running a custom event\n // (#2297). If it is set, we're running a browser event,\n // and setting it will cause en error in IE8 (#2465).\n type: type\n });\n }\n var events = [];\n var object = el;\n var multilevel = false;\n // Recurse up the inheritance chain and collect hcEvents set as own\n // objects on the prototypes.\n while (object.hcEvents) {\n if (Object.hasOwnProperty.call(object, 'hcEvents') &&\n object.hcEvents[type]) {\n if (events.length) {\n multilevel = true;\n }\n events.unshift.apply(events, object.hcEvents[type]);\n }\n object = Object.getPrototypeOf(object);\n }\n // For performance reasons, only sort the event handlers in case we are\n // dealing with multiple levels in the prototype chain. Otherwise, the\n // events are already sorted in the addEvent function.\n if (multilevel) {\n // Order the calls\n events.sort(function (a, b) { return a.order - b.order; });\n }\n // Call the collected event handlers\n events.forEach(function (obj) {\n // If the event handler returns false, prevent the default handler\n // from executing\n if (obj.fn.call(el, eventArguments) === false) {\n eventArguments.preventDefault();\n }\n });\n }\n // Run the default if not prevented\n if (defaultFunction && !eventArguments.defaultPrevented) {\n defaultFunction.call(el, eventArguments);\n }\n }\n var serialMode;\n /**\n * Get a unique key for using in internal element id's and pointers. The key is\n * composed of a random hash specific to this Highcharts instance, and a\n * counter.\n *\n * @example\n * let id = uniqueKey(); // => 'highcharts-x45f6hp-0'\n *\n * @function Highcharts.uniqueKey\n *\n * @return {string}\n * A unique key.\n */\n var uniqueKey = (function () {\n var hash = Math.random().toString(36).substring(2, 9) + '-';\n var id = 0;\n return function () {\n return 'highcharts-' + (serialMode ? '' : hash) + id++;\n };\n }());\n /**\n * Activates a serial mode for element IDs provided by\n * {@link Highcharts.uniqueKey}. This mode can be used in automated tests, where\n * a simple comparison of two rendered SVG graphics is needed.\n *\n * **Note:** This is only for testing purposes and will break functionality in\n * webpages with multiple charts.\n *\n * @example\n * if (\n * process &&\n * process.env.NODE_ENV === 'development'\n * ) {\n * Highcharts.useSerialIds(true);\n * }\n *\n * @function Highcharts.useSerialIds\n *\n * @param {boolean} [mode]\n * Changes the state of serial mode.\n *\n * @return {boolean|undefined}\n * State of the serial mode.\n */\n function useSerialIds(mode) {\n return (serialMode = pick(mode, serialMode));\n }\n function isFunction(obj) {\n return typeof obj === 'function';\n }\n // Register Highcharts as a plugin in jQuery\n if (win.jQuery) {\n /**\n * Highcharts-extended JQuery.\n *\n * @external JQuery\n */\n /**\n * Helper function to return the chart of the current JQuery selector\n * element.\n *\n * @function external:JQuery#highcharts\n *\n * @return {Highcharts.Chart}\n * The chart that is linked to the JQuery selector element.\n */ /**\n * Factory function to create a chart in the current JQuery selector\n * element.\n *\n * @function external:JQuery#highcharts\n *\n * @param {'Chart'|'Map'|'StockChart'|string} [className]\n * Name of the factory class in the Highcharts namespace.\n *\n * @param {Highcharts.Options} [options]\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external\n * images are loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n *\n * @return {JQuery}\n * The current JQuery selector.\n */\n win.jQuery.fn.highcharts = function () {\n var args = [].slice.call(arguments);\n if (this[0]) { // this[0] is the renderTo div\n // Create the chart\n if (args[0]) {\n new H[ // eslint-disable-line computed-property-spacing, no-new\n // Constructor defaults to Chart\n isString(args[0]) ? args.shift() : 'Chart'](this[0], args[0], args[1]);\n return this;\n }\n // When called without parameters or with the return argument,\n // return an existing chart\n return charts[attr(this[0], 'data-highcharts-chart')];\n }\n };\n }\n /* *\n *\n * Default Export\n *\n * */\n // TODO use named exports when supported.\n var Utilities = {\n addEvent: addEvent,\n arrayMax: arrayMax,\n arrayMin: arrayMin,\n attr: attr,\n clamp: clamp,\n cleanRecursively: cleanRecursively,\n clearTimeout: internalClearTimeout,\n correctFloat: correctFloat,\n createElement: createElement,\n css: css,\n defined: defined,\n destroyObjectProperties: destroyObjectProperties,\n discardElement: discardElement,\n erase: erase,\n error: error,\n extend: extend,\n extendClass: extendClass,\n find: find,\n fireEvent: fireEvent,\n getMagnitude: getMagnitude,\n getNestedProperty: getNestedProperty,\n getStyle: getStyle,\n inArray: inArray,\n isArray: isArray,\n isClass: isClass,\n isDOMElement: isDOMElement,\n isFunction: isFunction,\n isNumber: isNumber,\n isObject: isObject,\n isString: isString,\n keys: keys,\n merge: merge,\n normalizeTickInterval: normalizeTickInterval,\n objectEach: objectEach,\n offset: offset,\n pad: pad,\n pick: pick,\n pInt: pInt,\n relativeLength: relativeLength,\n removeEvent: removeEvent,\n splat: splat,\n stableSort: stableSort,\n syncTimeout: syncTimeout,\n timeUnits: timeUnits,\n uniqueKey: uniqueKey,\n useSerialIds: useSerialIds,\n wrap: wrap\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * An animation configuration. Animation configurations can also be defined as\n * booleans, where `false` turns off animation and `true` defaults to a duration\n * of 500ms and defer of 0ms.\n *\n * @interface Highcharts.AnimationOptionsObject\n */ /**\n * A callback function to exectute when the animation finishes.\n * @name Highcharts.AnimationOptionsObject#complete\n * @type {Function|undefined}\n */ /**\n * The animation defer in milliseconds.\n * @name Highcharts.AnimationOptionsObject#defer\n * @type {number|undefined}\n */ /**\n * The animation duration in milliseconds.\n * @name Highcharts.AnimationOptionsObject#duration\n * @type {number|undefined}\n */ /**\n * The name of an easing function as defined on the `Math` object.\n * @name Highcharts.AnimationOptionsObject#easing\n * @type {string|Function|undefined}\n */ /**\n * A callback function to execute on each step of each attribute or CSS property\n * that's being animated. The first argument contains information about the\n * animation and progress.\n * @name Highcharts.AnimationOptionsObject#step\n * @type {Function|undefined}\n */\n /**\n * Creates a frame for the animated SVG element.\n *\n * @callback Highcharts.AnimationStepCallbackFunction\n *\n * @param {Highcharts.SVGElement} this\n * The SVG element to animate.\n *\n * @return {void}\n */\n /**\n * Interface description for a class.\n *\n * @interface Highcharts.Class<T>\n * @extends Function\n */ /**\n * Class costructor.\n * @function Highcharts.Class<T>#new\n * @param {...Array<*>} args\n * Constructor arguments.\n * @return {T}\n * Class instance.\n */\n /**\n * A style object with camel case property names to define visual appearance of\n * a SVG element or HTML element. The properties can be whatever styles are\n * supported on the given SVG or HTML element.\n *\n * @example\n * {\n * fontFamily: 'monospace',\n * fontSize: '1.2em'\n * }\n *\n * @interface Highcharts.CSSObject\n */ /**\n * @name Highcharts.CSSObject#[key:string]\n * @type {boolean|number|string|undefined}\n */ /**\n * Background style for the element.\n * @name Highcharts.CSSObject#background\n * @type {string|undefined}\n */ /**\n * Background color of the element.\n * @name Highcharts.CSSObject#backgroundColor\n * @type {Highcharts.ColorString|undefined}\n */ /**\n * Border style for the element.\n * @name Highcharts.CSSObject#border\n * @type {string|undefined}\n */ /**\n * Radius of the element border.\n * @name Highcharts.CSSObject#borderRadius\n * @type {number|undefined}\n */ /**\n * Color used in the element. The 'contrast' option is a Highcharts custom\n * property that results in black or white, depending on the background of the\n * element.\n * @name Highcharts.CSSObject#color\n * @type {'contrast'|Highcharts.ColorString|undefined}\n */ /**\n * Style of the mouse cursor when resting over the element.\n * @name Highcharts.CSSObject#cursor\n * @type {Highcharts.CursorValue|undefined}\n */ /**\n * Font family of the element text. Multiple values have to be in decreasing\n * preference order and separated by comma.\n * @name Highcharts.CSSObject#fontFamily\n * @type {string|undefined}\n */ /**\n * Font size of the element text.\n * @name Highcharts.CSSObject#fontSize\n * @type {string|undefined}\n */ /**\n * Font weight of the element text.\n * @name Highcharts.CSSObject#fontWeight\n * @type {string|undefined}\n */ /**\n * Height of the element.\n * @name Highcharts.CSSObject#height\n * @type {number|undefined}\n */ /**\n * Width of the element border.\n * @name Highcharts.CSSObject#lineWidth\n * @type {number|undefined}\n */ /**\n * Opacity of the element.\n * @name Highcharts.CSSObject#opacity\n * @type {number|undefined}\n */ /**\n * Space around the element content.\n * @name Highcharts.CSSObject#padding\n * @type {string|undefined}\n */ /**\n * Behaviour of the element when the mouse cursor rests over it.\n * @name Highcharts.CSSObject#pointerEvents\n * @type {string|undefined}\n */ /**\n * Positioning of the element.\n * @name Highcharts.CSSObject#position\n * @type {string|undefined}\n */ /**\n * Alignment of the element text.\n * @name Highcharts.CSSObject#textAlign\n * @type {string|undefined}\n */ /**\n * Additional decoration of the element text.\n * @name Highcharts.CSSObject#textDecoration\n * @type {string|undefined}\n */ /**\n * Outline style of the element text.\n * @name Highcharts.CSSObject#textOutline\n * @type {string|undefined}\n */ /**\n * Line break style of the element text. Highcharts SVG elements support\n * `ellipsis` when a `width` is set.\n * @name Highcharts.CSSObject#textOverflow\n * @type {string|undefined}\n */ /**\n * Top spacing of the element relative to the parent element.\n * @name Highcharts.CSSObject#top\n * @type {string|undefined}\n */ /**\n * Animated transition of selected element properties.\n * @name Highcharts.CSSObject#transition\n * @type {string|undefined}\n */ /**\n * Line break style of the element text.\n * @name Highcharts.CSSObject#whiteSpace\n * @type {string|undefined}\n */ /**\n * Width of the element.\n * @name Highcharts.CSSObject#width\n * @type {number|undefined}\n */\n /**\n * All possible cursor styles.\n *\n * @typedef {'alias'|'all-scroll'|'auto'|'cell'|'col-resize'|'context-menu'|'copy'|'crosshair'|'default'|'e-resize'|'ew-resize'|'grab'|'grabbing'|'help'|'move'|'n-resize'|'ne-resize'|'nesw-resize'|'no-drop'|'none'|'not-allowed'|'ns-resize'|'nw-resize'|'nwse-resize'|'pointer'|'progress'|'row-resize'|'s-resize'|'se-resize'|'sw-resize'|'text'|'vertical-text'|'w-resize'|'wait'|'zoom-in'|'zoom-out'} Highcharts.CursorValue\n */\n /**\n * All possible dash styles.\n *\n * @typedef {'Dash'|'DashDot'|'Dot'|'LongDash'|'LongDashDot'|'LongDashDotDot'|'ShortDash'|'ShortDashDot'|'ShortDashDotDot'|'ShortDot'|'Solid'} Highcharts.DashStyleValue\n */\n /**\n * Generic dictionary in TypeScript notation.\n * Use the native `AnyRecord` instead.\n *\n * @deprecated\n * @interface Highcharts.Dictionary<T>\n */ /**\n * @name Highcharts.Dictionary<T>#[key:string]\n * @type {T}\n */\n /**\n * The function callback to execute when the event is fired. The `this` context\n * contains the instance, that fired the event.\n *\n * @callback Highcharts.EventCallbackFunction<T>\n *\n * @param {T} this\n *\n * @param {Highcharts.Dictionary<*>|Event} [eventArguments]\n * Event arguments.\n *\n * @return {boolean|void}\n */\n /**\n * The event options for adding function callback.\n *\n * @interface Highcharts.EventOptionsObject\n */ /**\n * The order the event handler should be called. This opens for having one\n * handler be called before another, independent of in which order they were\n * added.\n * @name Highcharts.EventOptionsObject#order\n * @type {number}\n */ /**\n * Whether an event should be passive or not.\n * When set to `true`, the function specified by listener will never call\n * `preventDefault()`.\n * @name Highcharts.EventOptionsObject#passive\n * @type boolean\n */\n /**\n * Formats data as a string. Usually the data is accessible throught the `this`\n * keyword.\n *\n * @callback Highcharts.FormatterCallbackFunction<T>\n *\n * @param {T} this\n * Context to format\n *\n * @return {string}\n * Formatted text\n */\n /**\n * An object of key-value pairs for HTML attributes.\n *\n * @typedef {Highcharts.Dictionary<boolean|number|string|Function>} Highcharts.HTMLAttributes\n */\n /**\n * An HTML DOM element. The type is a reference to the regular HTMLElement in\n * the global scope.\n *\n * @typedef {global.HTMLElement} Highcharts.HTMLDOMElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement\n */\n /**\n * The iterator callback.\n *\n * @callback Highcharts.ObjectEachCallbackFunction<T>\n *\n * @param {T} this\n * The context.\n *\n * @param {*} value\n * The property value.\n *\n * @param {string} key\n * The property key.\n *\n * @param {*} obj\n * The object that objectEach is being applied to.\n */\n /**\n * An object containing `left` and `top` properties for the position in the\n * page.\n *\n * @interface Highcharts.OffsetObject\n */ /**\n * Left distance to the page border.\n * @name Highcharts.OffsetObject#left\n * @type {number}\n */ /**\n * Top distance to the page border.\n * @name Highcharts.OffsetObject#top\n * @type {number}\n */\n /**\n * Describes a range.\n *\n * @interface Highcharts.RangeObject\n */ /**\n * Maximum number of the range.\n * @name Highcharts.RangeObject#max\n * @type {number}\n */ /**\n * Minimum number of the range.\n * @name Highcharts.RangeObject#min\n * @type {number}\n */\n /**\n * If a number is given, it defines the pixel length. If a percentage string is\n * given, like for example `'50%'`, the setting defines a length relative to a\n * base size, for example the size of a container.\n *\n * @typedef {number|string} Highcharts.RelativeSize\n */\n /**\n * Proceed function to call original (wrapped) function.\n *\n * @callback Highcharts.WrapProceedFunction\n *\n * @param {*} [arg1]\n * Optional argument. Without any arguments defaults to first argument of\n * the wrapping function.\n *\n * @param {*} [arg2]\n * Optional argument. Without any arguments defaults to second argument\n * of the wrapping function.\n *\n * @param {*} [arg3]\n * Optional argument. Without any arguments defaults to third argument of\n * the wrapping function.\n *\n * @return {*}\n * Return value of the original function.\n */\n /**\n * The Highcharts object is the placeholder for all other members, and various\n * utility functions. The most important member of the namespace would be the\n * chart constructor.\n *\n * @example\n * let chart = Highcharts.chart('container', { ... });\n *\n * @namespace Highcharts\n */\n ''; // detach doclets above\n\n return Utilities;\n });\n _registerModule(_modules, 'Core/Chart/ChartDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * General options for the chart.\n *\n * @optionparent chart\n */\n var ChartDefaults = {\n /**\n * Default `mapData` for all series,\n in terms of a GeoJSON or TopoJSON\n * object. If set to a string,\n it functions as an index into the\n * `Highcharts.maps` array.\n *\n * For picking out individual shapes and geometries to use for each series\n * of the map,\n see [series.mapData](#series.map.mapData).\n *\n * @sample maps/demo/geojson\n * Loading GeoJSON data\n * @sample maps/chart/topojson\n * Loading TopoJSON data\n *\n * @type {string|Array<*>|Highcharts.GeoJSON|Highcharts.TopoJSON}\n * @since 5.0.0\n * @product highmaps\n * @apioption chart.map\n */\n /**\n * Set lat/lon transformation definitions for the chart. If not defined,\n * these are extracted from the map data.\n *\n * @type {*}\n * @since 5.0.0\n * @product highmaps\n * @apioption chart.mapTransforms\n */\n /**\n * When using multiple axes,\n the ticks of two or more opposite axes\n * will automatically be aligned by adding ticks to the axis or axes\n * with the least ticks,\n as if `tickAmount` were specified.\n *\n * This can be prevented by setting `alignTicks` to false. If the grid\n * lines look messy,\n it's a good idea to hide them for the secondary\n * axis by setting `gridLineWidth` to 0.\n *\n * If `startOnTick` or `endOnTick` in the axis options are set to false,\n * then the `alignTicks ` will be disabled for the axis.\n *\n * Disabled for logarithmic axes.\n *\n * @sample {highcharts} highcharts/chart/alignticks-true/\n * True by default\n * @sample {highcharts} highcharts/chart/alignticks-false/\n * False\n * @sample {highstock} stock/chart/alignticks-true/\n * True by default\n * @sample {highstock} stock/chart/alignticks-false/\n * False\n *\n * @type {boolean}\n * @default true\n * @product highcharts highstock gantt\n * @apioption chart.alignTicks\n */\n /**\n * When using multiple axes,\n align the thresholds. When this is true,\n other\n * ticks will also be aligned.\n *\n * Note that for line series and some other series types,\n the `threshold`\n * option is set to `null` by default. This will in turn cause their y-axis\n * to not have a threshold. In order to avoid that,\n set the series\n * `threshold` to 0 or another number.\n *\n * If `startOnTick` or `endOnTick` in the axis options are set to false,\n or\n * if the axis is logarithmic,\n the threshold will not be aligned.\n *\n * @sample {highcharts} highcharts/chart/alignthresholds/ Set to true\n *\n * @since 10.0.0\n * @product highcharts highstock gantt\n * @apioption chart.alignThresholds\n */\n alignThresholds: false,\n /**\n * Set the overall animation for all chart updating. Animation can be\n * disabled throughout the chart by setting it to false here. It can\n * be overridden for each individual API method as a function parameter.\n * The only animation not affected by this option is the initial series\n * animation,\n see [plotOptions.series.animation](\n * #plotOptions.series.animation).\n *\n * The animation can either be set as a boolean or a configuration\n * object. If `true`,\n it will use the 'swing' jQuery easing and a\n * duration of 500 ms. If used as a configuration object,\n the following\n * properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * - `duration`: The duration of the animation in milliseconds.\n *\n * - `easing`: A string reference to an easing function set on the\n * `Math` object. See\n * [the easing demo](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-animation-easing/).\n *\n * When zooming on a series with less than 100 points,\n the chart redraw\n * will be done with animation,\n but in case of more data points,\n it is\n * necessary to set this option to ensure animation on zoom.\n *\n * @sample {highcharts} highcharts/chart/animation-none/\n * Updating with no animation\n * @sample {highcharts} highcharts/chart/animation-duration/\n * With a longer duration\n * @sample {highcharts} highcharts/chart/animation-easing/\n * With a jQuery UI easing\n * @sample {highmaps} maps/chart/animation-none/\n * Updating with no animation\n * @sample {highmaps} maps/chart/animation-duration/\n * With a longer duration\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n * @default undefined\n * @apioption chart.animation\n */\n /**\n * A CSS class name to apply to the charts container `div`,\n allowing\n * unique CSS styling for each chart.\n *\n * @type {string}\n * @apioption chart.className\n */\n /**\n * Event listeners for the chart.\n *\n * @apioption chart.events\n */\n /**\n * Fires when a series is added to the chart after load time,\n using the\n * `addSeries` method. One parameter,\n `event`,\n is passed to the\n * function,\n containing common event information. Through\n * `event.options` you can access the series options that were passed to\n * the `addSeries` method. Returning false prevents the series from\n * being added.\n *\n * @sample {highcharts} highcharts/chart/events-addseries/\n * Alert on add series\n * @sample {highstock} stock/chart/events-addseries/\n * Alert on add series\n *\n * @type {Highcharts.ChartAddSeriesCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.addSeries\n */\n /**\n * Fires when clicking on the plot background. One parameter,\n `event`,\n * is passed to the function,\n containing common event information.\n *\n * Information on the clicked spot can be found through `event.xAxis`\n * and `event.yAxis`,\n which are arrays containing the axes of each\n * dimension and each axis' value at the clicked spot. The primary axes\n * are `event.xAxis[0]` and `event.yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * ```js\n * click: function(e) {\n * console.log(\n * Highcharts.dateFormat('%Y-%m-%d %H:%M:%S',\n e.xAxis[0].value),\n * e.yAxis[0].value\n * )\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/events-click/\n * Alert coordinates on click\n * @sample {highcharts} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n * @sample {highstock} stock/chart/events-click/\n * Alert coordinates on click\n * @sample {highstock} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n * @sample {highmaps} maps/chart/events-click/\n * Record coordinates on click\n * @sample {highmaps} highcharts/chart/events-container/\n * Alternatively,\n attach event to container\n *\n * @type {Highcharts.ChartClickCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.click\n */\n /**\n * Fires when the chart is finished loading. Since v4.2.2,\n it also waits\n * for images to be loaded,\n for example from point markers. One\n * parameter,\n `event`,\n is passed to the function,\n containing common\n * event information.\n *\n * There is also a second parameter to the chart constructor where a\n * callback function can be passed to be executed on chart.load.\n *\n * @sample {highcharts} highcharts/chart/events-load/\n * Alert on chart load\n * @sample {highstock} stock/chart/events-load/\n * Alert on chart load\n * @sample {highmaps} maps/chart/events-load/\n * Add series on chart load\n *\n * @type {Highcharts.ChartLoadCallbackFunction}\n * @context Highcharts.Chart\n * @apioption chart.events.load\n */\n /**\n * Fires when the chart is redrawn,\n either after a call to\n * `chart.redraw()` or after an axis,\n series or point is modified with\n * the `redraw` option set to `true`. One parameter,\n `event`,\n is passed\n * to the function,\n containing common event information.\n *\n * @sample {highcharts} highcharts/chart/events-redraw/\n * Alert on chart redraw\n * @sample {highstock} stock/chart/events-redraw/\n * Alert on chart redraw when adding a series or moving the\n * zoomed range\n * @sample {highmaps} maps/chart/events-redraw/\n * Set subtitle on chart redraw\n *\n * @type {Highcharts.ChartRedrawCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Chart\n * @apioption chart.events.redraw\n */\n /**\n * Fires after initial load of the chart (directly after the `load`\n * event),\n and after each redraw (directly after the `redraw` event).\n *\n * @type {Highcharts.ChartRenderCallbackFunction}\n * @since 5.0.7\n * @context Highcharts.Chart\n * @apioption chart.events.render\n */\n /**\n * Fires when an area of the chart has been selected. Selection is\n * enabled by setting the chart's zoomType. One parameter,\n `event`,\n is\n * passed to the function,\n containing common event information. The\n * default action for the selection event is to zoom the chart to the\n * selected area. It can be prevented by calling\n * `event.preventDefault()` or return false.\n *\n * Information on the selected area can be found through `event.xAxis`\n * and `event.yAxis`,\n which are arrays containing the axes of each\n * dimension and each axis' min and max values. The primary axes are\n * `event.xAxis[0]` and `event.yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * ```js\n * selection: function(event) {\n * // log the min and max of the primary, datetime x-axis\n * console.log(\n * Highcharts.dateFormat(\n * '%Y-%m-%d %H:%M:%S',\n * event.xAxis[0].min\n * ),\n * Highcharts.dateFormat(\n * '%Y-%m-%d %H:%M:%S',\n * event.xAxis[0].max\n * )\n * );\n * // log the min and max of the y axis\n * console.log(event.yAxis[0].min, event.yAxis[0].max);\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/events-selection/\n * Report on selection and reset\n * @sample {highcharts} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample {highstock} stock/chart/events-selection/\n * Report on selection and reset\n * @sample {highstock} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * (Highcharts)\n *\n * @type {Highcharts.ChartSelectionCallbackFunction}\n * @apioption chart.events.selection\n */\n /**\n * The margin between the outer edge of the chart and the plot area.\n * The numbers in the array designate top, right, bottom and left\n * respectively. Use the options `marginTop`, `marginRight`,\n * `marginBottom` and `marginLeft` for shorthand setting of one option.\n *\n * By default there is no margin. The actual space is dynamically\n * calculated from the offset of axis labels, axis title, title,\n * subtitle and legend in addition to the `spacingTop`, `spacingRight`,\n * `spacingBottom` and `spacingLeft` options.\n *\n * @sample {highcharts} highcharts/chart/margins-zero/\n * Zero margins\n * @sample {highstock} stock/chart/margin-zero/\n * Zero margins\n *\n * @type {number|Array<number>}\n * @apioption chart.margin\n */\n /**\n * The margin between the bottom outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingBottom`.\n *\n * @sample {highcharts} highcharts/chart/marginbottom/\n * 100px bottom margin\n * @sample {highstock} stock/chart/marginbottom/\n * 100px bottom margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginBottom\n */\n /**\n * The margin between the left outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingLeft`.\n *\n * @sample {highcharts} highcharts/chart/marginleft/\n * 150px left margin\n * @sample {highstock} stock/chart/marginleft/\n * 150px left margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginLeft\n */\n /**\n * The margin between the right outer edge of the chart and the plot\n * area. Use this to set a fixed pixel value for the margin as opposed\n * to the default dynamic margin. See also `spacingRight`.\n *\n * @sample {highcharts} highcharts/chart/marginright/\n * 100px right margin\n * @sample {highstock} stock/chart/marginright/\n * 100px right margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginRight\n */\n /**\n * The margin between the top outer edge of the chart and the plot area.\n * Use this to set a fixed pixel value for the margin as opposed to\n * the default dynamic margin. See also `spacingTop`.\n *\n * @sample {highcharts} highcharts/chart/margintop/ 100px top margin\n * @sample {highstock} stock/chart/margintop/\n * 100px top margin\n * @sample {highmaps} maps/chart/margin/\n * 100px margins\n *\n * @type {number}\n * @since 2.0\n * @apioption chart.marginTop\n */\n /**\n * Callback function to override the default function that formats all\n * the numbers in the chart. Returns a string with the formatted number.\n *\n * @sample highcharts/members/highcharts-numberformat\n * Arabic digits in Highcharts\n * @type {Highcharts.NumberFormatterCallbackFunction}\n * @since 8.0.0\n * @apioption chart.numberFormatter\n */\n /**\n * Allows setting a key to switch between zooming and panning. Can be\n * one of `alt`, `ctrl`, `meta` (the command key on Mac and Windows\n * key on Windows) or `shift`. The keys are mapped directly to the key\n * properties of the click event argument (`event.altKey`,\n * `event.ctrlKey`, `event.metaKey` and `event.shiftKey`).\n *\n * @type {string}\n * @since 4.0.3\n * @product highcharts gantt\n * @validvalue [\"alt\", \"ctrl\", \"meta\", \"shift\"]\n * @apioption chart.panKey\n */\n /**\n * Allow panning in a chart. Best used with [panKey](#chart.panKey)\n * to combine zooming and panning.\n *\n * On touch devices, when the [tooltip.followTouchMove](\n * #tooltip.followTouchMove) option is `true` (default), panning\n * requires two fingers. To allow panning with one finger, set\n * `followTouchMove` to `false`.\n *\n * @sample {highcharts} highcharts/chart/pankey/ Zooming and panning\n * @sample {highstock} stock/chart/panning/ Zooming and xy panning\n */\n panning: {\n /**\n * Enable or disable chart panning.\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock|highmaps} true\n */\n enabled: false,\n /**\n * Decides in what dimensions the user can pan the chart. Can be\n * one of `x`, `y`, or `xy`.\n *\n * @sample {highcharts} highcharts/chart/panning-type\n * Zooming and xy panning\n *\n * @declare Highcharts.OptionsChartPanningTypeValue\n * @type {string}\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @default {highcharts|highstock} x\n * @product highcharts highstock gantt\n */\n type: 'x'\n },\n /**\n * Equivalent to [zoomType](#chart.zoomType), but for multitouch\n * gestures only. By default, the `pinchType` is the same as the\n * `zoomType` setting. However, pinching can be enabled separately in\n * some cases, for example in stock charts where a mouse drag pans the\n * chart, while pinching is enabled. When [tooltip.followTouchMove](\n * #tooltip.followTouchMove) is true, pinchType only applies to\n * two-finger touches.\n *\n * @type {string}\n * @default {highcharts} undefined\n * @default {highstock} x\n * @since 3.0\n * @product highcharts highstock gantt\n * @deprecated\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.pinchType\n */\n /**\n * Whether to apply styled mode. When in styled mode, no presentational\n * attributes or CSS are applied to the chart SVG. Instead, CSS rules\n * are required to style the chart. The default style sheet is\n * available from `https://code.highcharts.com/css/highcharts.css`.\n *\n * @type {boolean}\n * @default false\n * @since 7.0\n * @apioption chart.styledMode\n */\n styledMode: false,\n /**\n * The corner radius of the outer chart border.\n *\n * @sample {highcharts} highcharts/chart/borderradius/\n * 20px radius\n * @sample {highstock} stock/chart/border/\n * 10px radius\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n */\n borderRadius: 0,\n /**\n * In styled mode, this sets how many colors the class names\n * should rotate between. With ten colors, series (or points) are\n * given class names like `highcharts-color-0`, `highcharts-color-1`\n * [...] `highcharts-color-9`. The equivalent in non-styled mode\n * is to set colors using the [colors](#colors) setting.\n *\n * @since 5.0.0\n */\n colorCount: 10,\n /**\n * By default, (because of memory and performance reasons) the chart does\n * not copy the data but keeps it as a reference. In some cases, this might\n * result in mutating the original data source. In order to prevent that,\n * set that property to false. Please note that changing that might decrease\n * performance, especially with bigger sets of data.\n *\n * @type {boolean}\n * @since 10.1.0\n */\n allowMutatingData: true,\n /**\n * Alias of `type`.\n *\n * @sample {highcharts} highcharts/chart/defaultseriestype/\n * Bar\n *\n * @deprecated\n *\n * @product highcharts\n */\n defaultSeriesType: 'line',\n /**\n * If true, the axes will scale to the remaining visible series once\n * one series is hidden. If false, hiding and showing a series will\n * not affect the axes or the other series. For stacks, once one series\n * within the stack is hidden, the rest of the stack will close in\n * around it even if the axis is not affected.\n *\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-true/\n * True by default\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-false/\n * False\n * @sample {highcharts} highcharts/chart/ignorehiddenseries-true-stacked/\n * True with stack\n * @sample {highstock} stock/chart/ignorehiddenseries-true/\n * True by default\n * @sample {highstock} stock/chart/ignorehiddenseries-false/\n * False\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n ignoreHiddenSeries: true,\n /**\n * Whether to invert the axes so that the x axis is vertical and y axis\n * is horizontal. When `true`, the x axis is [reversed](#xAxis.reversed)\n * by default.\n *\n * @productdesc {highcharts}\n * If a bar series is present in the chart, it will be inverted\n * automatically. Inverting the chart doesn't have an effect if there\n * are no cartesian series in the chart, or if the chart is\n * [polar](#chart.polar).\n *\n * @sample {highcharts} highcharts/chart/inverted/\n * Inverted line\n * @sample {highstock} stock/navigator/inverted/\n * Inverted stock chart\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock gantt\n * @apioption chart.inverted\n */\n /**\n * The distance between the outer edge of the chart and the content,\n * like title or legend, or axis title and labels if present. The\n * numbers in the array designate top, right, bottom and left\n * respectively. Use the options spacingTop, spacingRight, spacingBottom\n * and spacingLeft options for shorthand setting of one option.\n *\n * @type {Array<number>}\n * @see [chart.margin](#chart.margin)\n * @default [10, 10, 15, 10]\n * @since 3.0.6\n */\n spacing: [10, 10, 15, 10],\n /**\n * The button that appears after a selection zoom, allowing the user\n * to reset zoom.\n *\n * @since 2.2\n * @deprecated 10.2.1\n */\n resetZoomButton: {\n /**\n * What frame the button placement should be related to. Can be\n * either `plotBox` or `spacingBox`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n * @sample {highstock} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n *\n * @type {Highcharts.ButtonRelativeToValue}\n * @default plot\n * @apioption chart.resetZoomButton.relativeTo\n */\n /**\n * A collection of attributes for the button. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width` or `r`, the\n * border radius. The theme also supports `style`, a collection of\n * CSS properties for the text. Equivalent attributes for the hover\n * state are given in `theme.states.hover`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n * @sample {highstock} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n *\n * @type {Highcharts.SVGAttributes}\n */\n theme: {\n /**\n * @internal\n */\n zIndex: 6\n },\n /**\n * The position of the button.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highstock} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highmaps} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n *\n * @type {Highcharts.AlignObject}\n */\n position: {\n /**\n * The horizontal alignment of the button.\n */\n align: 'right',\n /**\n * The horizontal offset of the button.\n */\n x: -10,\n /**\n * The vertical alignment of the button.\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @apioption chart.resetZoomButton.position.verticalAlign\n */\n /**\n * The vertical offset of the button.\n */\n y: 10\n }\n },\n /**\n * The pixel width of the plot area border.\n *\n * @sample {highcharts} highcharts/chart/plotborderwidth/\n * 1px border\n * @sample {highstock} stock/chart/plotborder/\n * 2px border\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {number}\n * @default 0\n * @apioption chart.plotBorderWidth\n */\n /**\n * Whether to apply a drop shadow to the plot area. Requires that\n * plotBackgroundColor be set. The shadow can be an object configuration\n * containing `color`, `offsetX`, `offsetY`, `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/chart/plotshadow/\n * Plot shadow\n * @sample {highstock} stock/chart/plotshadow/\n * Plot shadow\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {boolean|Highcharts.CSSObject}\n * @default false\n * @apioption chart.plotShadow\n */\n /**\n * When true, cartesian charts like line, spline, area and column are\n * transformed into the polar coordinate system. This produces _polar\n * charts_, also known as _radar charts_.\n *\n * @sample {highcharts} highcharts/demo/polar/\n * Polar chart\n * @sample {highcharts} highcharts/demo/polar-wind-rose/\n * Wind rose, stacked polar column chart\n * @sample {highcharts} highcharts/demo/polar-spider/\n * Spider web chart\n * @sample {highcharts} highcharts/parallel-coordinates/polar/\n * Star plot, multivariate data in a polar chart\n *\n * @type {boolean}\n * @default false\n * @since 2.3.0\n * @product highcharts\n * @requires highcharts-more\n * @apioption chart.polar\n */\n /**\n * Whether to reflow the chart to fit the width of the container div\n * on resizing the window.\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * True by default\n * @sample {highcharts} highcharts/chart/reflow-false/\n * False\n * @sample {highstock} stock/chart/reflow-true/\n * True by default\n * @sample {highstock} stock/chart/reflow-false/\n * False\n * @sample {highmaps} maps/chart/reflow-true/\n * True by default\n * @sample {highmaps} maps/chart/reflow-false/\n * False\n *\n * @type {boolean}\n * @default true\n * @since 2.1\n * @apioption chart.reflow\n */\n /**\n * The HTML element where the chart will be rendered. If it is a string,\n * the element by that id is used. The HTML element can also be passed\n * by direct reference, or as the first argument of the chart\n * constructor, in which case the option is not needed.\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * String\n * @sample {highcharts} highcharts/chart/renderto-object/\n * Object reference\n * @sample {highstock} stock/chart/renderto-string/\n * String\n * @sample {highstock} stock/chart/renderto-object/\n * Object reference\n *\n * @type {string|Highcharts.HTMLDOMElement}\n * @apioption chart.renderTo\n */\n /**\n * The background color of the marker square when selecting (zooming\n * in on) an area of the chart.\n *\n * @see In styled mode, the selection marker fill is set with the\n * `.highcharts-selection-marker` class.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default rgba(51,92,173,0.25)\n * @since 2.1.7\n * @apioption chart.selectionMarkerFill\n */\n /**\n * Whether to apply a drop shadow to the outer chart area. Requires\n * that backgroundColor be set. The shadow can be an object\n * configuration containing `color`, `offsetX`, `offsetY`, `opacity` and\n * `width`.\n *\n * @sample {highcharts} highcharts/chart/shadow/\n * Shadow\n * @sample {highstock} stock/chart/shadow/\n * Shadow\n * @sample {highmaps} maps/chart/border/\n * Chart border and shadow\n *\n * @type {boolean|Highcharts.CSSObject}\n * @default false\n * @apioption chart.shadow\n */\n /**\n * Whether to show the axes initially. This only applies to empty charts\n * where series are added dynamically, as axes are automatically added\n * to cartesian series.\n *\n * @sample {highcharts} highcharts/chart/showaxes-false/\n * False by default\n * @sample {highcharts} highcharts/chart/showaxes-true/\n * True\n *\n * @type {boolean}\n * @since 1.2.5\n * @product highcharts gantt\n * @apioption chart.showAxes\n */\n /**\n * The space between the bottom edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingbottom/\n * Spacing bottom set to 100\n * @sample {highstock} stock/chart/spacingbottom/\n * Spacing bottom set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 15\n * @since 2.1\n * @apioption chart.spacingBottom\n */\n /**\n * The space between the left edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingleft/\n * Spacing left set to 100\n * @sample {highstock} stock/chart/spacingleft/\n * Spacing left set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingLeft\n */\n /**\n * The space between the right edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingright-100/\n * Spacing set to 100\n * @sample {highcharts} highcharts/chart/spacingright-legend/\n * Legend in right position with default spacing\n * @sample {highstock} stock/chart/spacingright/\n * Spacing set to 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingRight\n */\n /**\n * The space between the top edge of the chart and the content (plot\n * area, axis title and labels, title, subtitle or legend in top\n * position).\n *\n * @sample {highcharts} highcharts/chart/spacingtop-100/\n * A top spacing of 100\n * @sample {highcharts} highcharts/chart/spacingtop-10/\n * Floating chart title makes the plot area align to the default\n * spacingTop of 10.\n * @sample {highstock} stock/chart/spacingtop/\n * A top spacing of 100\n * @sample {highmaps} maps/chart/spacing/\n * Spacing 100 all around\n *\n * @type {number}\n * @default 10\n * @since 2.1\n * @apioption chart.spacingTop\n */\n /**\n * Additional CSS styles to apply inline to the container `div`. Note\n * that since the default font styles are applied in the renderer, it\n * is ignorant of the individual chart options and must be set globally.\n * Also note that changing the font size in the `chart.style` options only\n * applies to those elements that do not have a specific `fontSize` setting.\n *\n * @see In styled mode, general chart styles can be set with the\n * `.highcharts-root` class.\n * @sample {highcharts} highcharts/chart/style-serif-font/\n * Using a serif type font\n * @sample {highcharts} highcharts/css/em/\n * Styled mode with relative font sizes\n * @sample {highstock} stock/chart/style/\n * Using a serif type font\n * @sample {highmaps} maps/chart/style-serif-font/\n * Using a serif type font\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontFamily\": \"\\\"Lucida Grande\\\", \\\"Lucida Sans Unicode\\\", Verdana, Arial, Helvetica, sans-serif\",\"fontSize\":\"12px\"}\n * @apioption chart.style\n */\n /**\n * The default series type for the chart. Can be any of the chart types\n * listed under [plotOptions](#plotOptions) and [series](#series) or can\n * be a series provided by an additional module.\n *\n * In TypeScript this option has no effect in sense of typing and\n * instead the `type` option must always be set in the series.\n *\n * @sample {highcharts} highcharts/chart/type-bar/\n * Bar\n * @sample {highstock} stock/chart/type/\n * Areaspline\n * @sample {highmaps} maps/chart/type-mapline/\n * Mapline\n *\n * @type {string}\n * @default {highcharts} line\n * @default {highstock} line\n * @default {highmaps} map\n * @since 2.1.0\n * @apioption chart.type\n */\n /**\n * Decides in what dimensions the user can zoom by dragging the mouse.\n * Can be one of `x`, `y` or `xy`.\n *\n * @see [panKey](#chart.panKey)\n *\n * @sample {highcharts} highcharts/chart/zoomtype-none/\n * None by default\n * @sample {highcharts} highcharts/chart/zoomtype-x/\n * X\n * @sample {highcharts} highcharts/chart/zoomtype-y/\n * Y\n * @sample {highcharts} highcharts/chart/zoomtype-xy/\n * Xy\n * @sample {highcharts} highcharts/chart/zoomtype-polar/\n * Zoom on polar chart\n * @sample {highstock} stock/demo/basic-line/\n * None by default\n * @sample {highstock} stock/chart/zoomtype-x/\n * X\n * @sample {highstock} stock/chart/zoomtype-y/\n * Y\n * @sample {highstock} stock/chart/zoomtype-xy/\n * Xy\n * @sample {highmaps} maps/chart/zoomtype-xy/\n * Map with selection zoom\n *\n * @type {string}\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @deprecated\n * @apioption chart.zoomType\n */\n /**\n * Enables zooming by a single touch, in combination with\n * [chart.zoomType](#chart.zoomType). When enabled, two-finger pinch\n * will still work as set up by [chart.pinchType](#chart.pinchType).\n * However, `zoomBySingleTouch` will interfere with touch-dragging the\n * chart to read the tooltip. And especially when vertical zooming is\n * enabled, it will make it hard to scroll vertically on the page.\n * @since 9.0.0\n * @sample highcharts/chart/zoombysingletouch\n * Zoom by single touch enabled, with buttons to toggle\n * @product highcharts highstock gantt\n * @deprecated\n */\n zoomBySingleTouch: false,\n /**\n * Chart zooming options.\n * @since 10.2.1\n */\n zooming: {\n /**\n * Equivalent to [type](#chart.zooming.type), but for multitouch\n * gestures only. By default, the `pinchType` is the same as the\n * `type` setting. However, pinching can be enabled separately in\n * some cases, for example in stock charts where a mouse drag pans the\n * chart, while pinching is enabled. When [tooltip.followTouchMove](\n * #tooltip.followTouchMove) is true, pinchType only applies to\n * two-finger touches.\n *\n * @type {string}\n * @default {highcharts} undefined\n * @default {highstock} x\n * @product highcharts highstock gantt\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.zooming.pinchType\n */\n /**\n * Decides in what dimensions the user can zoom by dragging the mouse.\n * Can be one of `x`, `y` or `xy`.\n *\n * @declare Highcharts.OptionsChartZoomingTypeValue\n * @type {string}\n * @default {highcharts} undefined\n * @product highcharts highstock gantt\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @apioption chart.zooming.type\n */\n /**\n * Set a key to hold when dragging to zoom the chart. This is useful to\n * avoid zooming while moving points. Should be set different than\n * [chart.panKey](#chart.panKey).\n *\n * @type {string}\n * @default {highcharts} undefined\n * @validvalue [\"alt\", \"ctrl\", \"meta\", \"shift\"]\n * @requires modules/draggable-points\n * @apioption chart.zooming.key\n */\n /**\n * Enables zooming by a single touch, in combination with\n * [chart.zooming.type](#chart.zooming.type). When enabled, two-finger\n * pinch will still work as set up by [chart.zooming.pinchType]\n * (#chart.zooming.pinchType). However, `singleTouch` will interfere\n * with touch-dragging the chart to read the tooltip. And especially\n * when vertical zooming is enabled, it will make it hard to scroll\n * vertically on the page.\n *\n * @sample highcharts/chart/zoombysingletouch\n * Zoom by single touch enabled, with buttons to toggle\n *\n * @product highcharts highstock gantt\n */\n singleTouch: false,\n /**\n * The button that appears after a selection zoom, allowing the user\n * to reset zoom.\n */\n resetButton: {\n /**\n * What frame the button placement should be related to. Can be\n * either `plotBox` or `spacingBox`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n * @sample {highstock} highcharts/chart/resetzoombutton-relativeto/\n * Relative to the chart\n *\n * @type {Highcharts.ButtonRelativeToValue}\n * @default plot\n * @apioption chart.zooming.resetButton.relativeTo\n */\n /**\n * A collection of attributes for the button. The object takes SVG\n * attributes like `fill`, `stroke`, `stroke-width` or `r`, the\n * border radius. The theme also supports `style`, a collection of\n * CSS properties for the text. Equivalent attributes for the hover\n * state are given in `theme.states.hover`.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n * @sample {highstock} highcharts/chart/resetzoombutton-theme/\n * Theming the button\n *\n * @type {Highcharts.SVGAttributes}\n * @since 10.2.1\n */\n theme: {\n /** @internal */\n zIndex: 6\n },\n /**\n * The position of the button.\n *\n * @sample {highcharts} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highstock} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n * @sample {highmaps} highcharts/chart/resetzoombutton-position/\n * Above the plot area\n *\n * @type {Highcharts.AlignObject}\n * @since 10.2.1\n */\n position: {\n /**\n * The horizontal alignment of the button.\n */\n align: 'right',\n /**\n * The horizontal offset of the button.\n */\n x: -10,\n /**\n * The vertical alignment of the button.\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @apioption chart.zooming.resetButton.position.verticalAlign\n */\n /**\n * The vertical offset of the button.\n */\n y: 10\n }\n }\n },\n /**\n * An explicit width for the chart. By default (when `null`) the width\n * is calculated from the offset width of the containing element.\n *\n * @sample {highcharts} highcharts/chart/width/\n * 800px wide\n * @sample {highstock} stock/chart/width/\n * 800px wide\n * @sample {highmaps} maps/chart/size/\n * Chart with explicit size\n *\n * @type {null|number|string}\n */\n width: null,\n /**\n * An explicit height for the chart. If a _number_, the height is\n * given in pixels. If given a _percentage string_ (for example\n * `'56%'`), the height is given as the percentage of the actual chart\n * width. This allows for preserving the aspect ratio across responsive\n * sizes.\n *\n * By default (when `null`) the height is calculated from the offset\n * height of the containing element, or 400 pixels if the containing\n * element's height is 0.\n *\n * @sample {highcharts} highcharts/chart/height/\n * 500px height\n * @sample {highstock} stock/chart/height/\n * 300px height\n * @sample {highmaps} maps/chart/size/\n * Chart with explicit size\n * @sample highcharts/chart/height-percent/\n * Highcharts with percentage height\n *\n * @type {null|number|string}\n */\n height: null,\n /**\n * The color of the outer chart border.\n *\n * @see In styled mode, the stroke is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/bordercolor/\n * Brown border\n * @sample {highstock} stock/chart/border/\n * Brown border\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#335cad\" /* Palette.highlightColor80 */,\n /**\n * The pixel width of the outer chart border.\n *\n * @see In styled mode, the stroke is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/borderwidth/\n * 5px border\n * @sample {highstock} stock/chart/border/\n * 2px border\n * @sample {highmaps} maps/chart/border/\n * Border options\n *\n * @type {number}\n * @default 0\n * @apioption chart.borderWidth\n */\n /**\n * The background color or gradient for the outer chart area.\n *\n * @see In styled mode, the background is set with the\n * `.highcharts-background` class.\n *\n * @sample {highcharts} highcharts/chart/backgroundcolor-color/\n * Color\n * @sample {highcharts} highcharts/chart/backgroundcolor-gradient/\n * Gradient\n * @sample {highstock} stock/chart/backgroundcolor-color/\n * Color\n * @sample {highstock} stock/chart/backgroundcolor-gradient/\n * Gradient\n * @sample {highmaps} maps/chart/backgroundcolor-color/\n * Color\n * @sample {highmaps} maps/chart/backgroundcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The background color or gradient for the plot area.\n *\n * @see In styled mode, the plot background is set with the\n * `.highcharts-plot-background` class.\n *\n * @sample {highcharts} highcharts/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highcharts} highcharts/chart/plotbackgroundcolor-gradient/\n * Gradient\n * @sample {highstock} stock/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highstock} stock/chart/plotbackgroundcolor-gradient/\n * Gradient\n * @sample {highmaps} maps/chart/plotbackgroundcolor-color/\n * Color\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption chart.plotBackgroundColor\n */\n /**\n * The URL for an image to use as the plot background. To set an image\n * as the background for the entire chart, set a CSS background image\n * to the container element. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export server.\n *\n * @see In styled mode, a plot background image can be set with the\n * `.highcharts-plot-background` class and a [custom pattern](\n * https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns).\n *\n * @sample {highcharts} highcharts/chart/plotbackgroundimage/\n * Skies\n * @sample {highstock} stock/chart/plotbackgroundimage/\n * Skies\n *\n * @type {string}\n * @apioption chart.plotBackgroundImage\n */\n /**\n * The color of the inner chart or plot area border.\n *\n * @see In styled mode, a plot border stroke can be set with the\n * `.highcharts-plot-border` class.\n *\n * @sample {highcharts} highcharts/chart/plotbordercolor/\n * Blue border\n * @sample {highstock} stock/chart/plotborder/\n * Blue border\n * @sample {highmaps} maps/chart/plotborder/\n * Plot border options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n plotBorderColor: \"#cccccc\" /* Palette.neutralColor20 */\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return ChartDefaults;\n });\n _registerModule(_modules, 'Core/Color/Color.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var isNumber = U.isNumber,\n merge = U.merge,\n pInt = U.pInt;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Handle color operations. Some object methods are chainable.\n *\n * @class\n * @name Highcharts.Color\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n */\n var Color = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function Color(input) {\n this.rgba = [NaN, NaN, NaN, NaN];\n this.input = input;\n var GlobalColor = H.Color;\n // Backwards compatibility, allow class overwrite\n if (GlobalColor && GlobalColor !== Color) {\n return new GlobalColor(input);\n }\n // Backwards compatibility, allow instanciation without new (#13053)\n if (!(this instanceof Color)) {\n return new Color(input);\n }\n this.init(input);\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Creates a color instance out of a color string or object.\n *\n * @function Highcharts.Color.parse\n *\n * @param {Highcharts.ColorType} [input]\n * The input color in either rbga or hex format.\n *\n * @return {Highcharts.Color}\n * Color instance.\n */\n Color.parse = function (input) {\n return input ? new Color(input) : Color.None;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Parse the input color to rgba array\n *\n * @private\n * @function Highcharts.Color#init\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n */\n Color.prototype.init = function (input) {\n var result,\n rgba,\n i,\n parser;\n // Gradients\n if (typeof input === 'object' &&\n typeof input.stops !== 'undefined') {\n this.stops = input.stops.map(function (stop) { return new Color(stop[1]); });\n // Solid colors\n }\n else if (typeof input === 'string') {\n this.input = input = (Color.names[input.toLowerCase()] || input);\n // Bitmasking as input[0] is not working for legacy IE.\n if (input.charAt(0) === '#') {\n var len = input.length,\n col = parseInt(input.substr(1), 16);\n // Handle long-form, e.g. #AABBCC\n if (len === 7) {\n rgba = [\n (col & 0xFF0000) >> 16,\n (col & 0xFF00) >> 8,\n (col & 0xFF),\n 1\n ];\n // Handle short-form, e.g. #ABC\n // In short form, the value is assumed to be the same\n // for both nibbles for each component. e.g. #ABC = #AABBCC\n }\n else if (len === 4) {\n rgba = [\n (((col & 0xF00) >> 4) |\n (col & 0xF00) >> 8),\n (((col & 0xF0) >> 4) |\n (col & 0xF0)),\n ((col & 0xF) << 4) | (col & 0xF),\n 1\n ];\n }\n }\n // Otherwise, check regex parsers\n if (!rgba) {\n i = Color.parsers.length;\n while (i-- && !rgba) {\n parser = Color.parsers[i];\n result = parser.regex.exec(input);\n if (result) {\n rgba = parser.parse(result);\n }\n }\n }\n }\n if (rgba) {\n this.rgba = rgba;\n }\n };\n /**\n * Return the color or gradient stops in the specified format\n *\n * @function Highcharts.Color#get\n *\n * @param {string} [format]\n * Possible values are 'a', 'rgb', 'rgba' (default).\n *\n * @return {Highcharts.ColorType}\n * This color as a string or gradient stops.\n */\n Color.prototype.get = function (format) {\n var input = this.input,\n rgba = this.rgba;\n if (typeof input === 'object' &&\n typeof this.stops !== 'undefined') {\n var ret_1 = merge(input);\n ret_1.stops = [].slice.call(ret_1.stops);\n this.stops.forEach(function (stop, i) {\n ret_1.stops[i] = [\n ret_1.stops[i][0],\n stop.get(format)\n ];\n });\n return ret_1;\n }\n // it's NaN if gradient colors on a column chart\n if (rgba && isNumber(rgba[0])) {\n if (format === 'rgb' || (!format && rgba[3] === 1)) {\n return 'rgb(' + rgba[0] + ',' + rgba[1] + ',' + rgba[2] + ')';\n }\n if (format === 'a') {\n return \"\".concat(rgba[3]);\n }\n return 'rgba(' + rgba.join(',') + ')';\n }\n return input;\n };\n /**\n * Brighten the color instance.\n *\n * @function Highcharts.Color#brighten\n *\n * @param {number} alpha\n * The alpha value.\n *\n * @return {Highcharts.Color}\n * This color with modifications.\n */\n Color.prototype.brighten = function (alpha) {\n var rgba = this.rgba;\n if (this.stops) {\n this.stops.forEach(function (stop) {\n stop.brighten(alpha);\n });\n }\n else if (isNumber(alpha) && alpha !== 0) {\n for (var i = 0; i < 3; i++) {\n rgba[i] += pInt(alpha * 255);\n if (rgba[i] < 0) {\n rgba[i] = 0;\n }\n if (rgba[i] > 255) {\n rgba[i] = 255;\n }\n }\n }\n return this;\n };\n /**\n * Set the color's opacity to a given alpha value.\n *\n * @function Highcharts.Color#setOpacity\n *\n * @param {number} alpha\n * Opacity between 0 and 1.\n *\n * @return {Highcharts.Color}\n * Color with modifications.\n */\n Color.prototype.setOpacity = function (alpha) {\n this.rgba[3] = alpha;\n return this;\n };\n /**\n * Return an intermediate color between two colors.\n *\n * @function Highcharts.Color#tweenTo\n *\n * @param {Highcharts.Color} to\n * The color object to tween to.\n *\n * @param {number} pos\n * The intermediate position, where 0 is the from color (current color\n * item), and 1 is the `to` color.\n *\n * @return {Highcharts.ColorType}\n * The intermediate color in rgba notation, or unsupported type.\n */\n Color.prototype.tweenTo = function (to, pos) {\n var fromRgba = this.rgba,\n toRgba = to.rgba;\n // Unsupported color, return to-color (#3920, #7034)\n if (!isNumber(fromRgba[0]) || !isNumber(toRgba[0])) {\n return to.input || 'none';\n }\n // Check for has alpha, because rgba colors perform worse due to\n // lack of support in WebKit.\n var hasAlpha = (toRgba[3] !== 1 || fromRgba[3] !== 1);\n return (hasAlpha ? 'rgba(' : 'rgb(') +\n Math.round(toRgba[0] + (fromRgba[0] - toRgba[0]) * (1 - pos)) +\n ',' +\n Math.round(toRgba[1] + (fromRgba[1] - toRgba[1]) * (1 - pos)) +\n ',' +\n Math.round(toRgba[2] + (fromRgba[2] - toRgba[2]) * (1 - pos)) +\n (hasAlpha ?\n (',' +\n (toRgba[3] + (fromRgba[3] - toRgba[3]) * (1 - pos))) :\n '') +\n ')';\n };\n /* *\n *\n * Static Properties\n *\n * */\n /**\n * Collection of named colors. Can be extended from the outside by adding\n * colors to Highcharts.Color.names.\n * @private\n */\n Color.names = {\n white: '#ffffff',\n black: '#000000'\n };\n /**\n * Collection of parsers. This can be extended from the outside by pushing\n * parsers to `Color.parsers`.\n */\n Color.parsers = [{\n // RGBA color\n // eslint-disable-next-line max-len\n regex: /rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]?(?:\\.[0-9]+)?)\\s*\\)/,\n parse: function (result) {\n return [\n pInt(result[1]),\n pInt(result[2]),\n pInt(result[3]),\n parseFloat(result[4], 10)\n ];\n }\n }, {\n // RGB color\n regex: /rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/,\n parse: function (result) {\n return [pInt(result[1]), pInt(result[2]), pInt(result[3]), 1];\n }\n }];\n // Must be last static member for init cycle\n Color.None = new Color('');\n return Color;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A valid color to be parsed and handled by Highcharts. Highcharts internally\n * supports hex colors like `#ffffff`, rgb colors like `rgb(255,255,255)` and\n * rgba colors like `rgba(255,255,255,1)`. Other colors may be supported by the\n * browsers and displayed correctly, but Highcharts is not able to process them\n * and apply concepts like opacity and brightening.\n *\n * @typedef {string} Highcharts.ColorString\n */\n /**\n * A valid color type than can be parsed and handled by Highcharts. It can be a\n * color string, a gradient object, or a pattern object.\n *\n * @typedef {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject} Highcharts.ColorType\n */\n /**\n * Gradient options instead of a solid color.\n *\n * @example\n * // Linear gradient used as a color option\n * color: {\n * linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },\n * stops: [\n * [0, '#003399'], // start\n * [0.5, '#ffffff'], // middle\n * [1, '#3366AA'] // end\n * ]\n * }\n *\n * @interface Highcharts.GradientColorObject\n */ /**\n * Holds an object that defines the start position and the end position relative\n * to the shape.\n * @name Highcharts.GradientColorObject#linearGradient\n * @type {Highcharts.LinearGradientColorObject|undefined}\n */ /**\n * Holds an object that defines the center position and the radius.\n * @name Highcharts.GradientColorObject#radialGradient\n * @type {Highcharts.RadialGradientColorObject|undefined}\n */ /**\n * The first item in each tuple is the position in the gradient, where 0 is the\n * start of the gradient and 1 is the end of the gradient. Multiple stops can be\n * applied. The second item is the color for each stop. This color can also be\n * given in the rgba format.\n * @name Highcharts.GradientColorObject#stops\n * @type {Array<Highcharts.GradientColorStopObject>}\n */\n /**\n * Color stop tuple.\n *\n * @see Highcharts.GradientColorObject\n *\n * @interface Highcharts.GradientColorStopObject\n */ /**\n * @name Highcharts.GradientColorStopObject#0\n * @type {number}\n */ /**\n * @name Highcharts.GradientColorStopObject#1\n * @type {Highcharts.ColorString}\n */ /**\n * @name Highcharts.GradientColorStopObject#color\n * @type {Highcharts.Color|undefined}\n */\n /**\n * Defines the start position and the end position for a gradient relative\n * to the shape. Start position (x1, y1) and end position (x2, y2) are relative\n * to the shape, where 0 means top/left and 1 is bottom/right.\n *\n * @interface Highcharts.LinearGradientColorObject\n */ /**\n * Start horizontal position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#x1\n * @type {number}\n */ /**\n * End horizontal position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#x2\n * @type {number}\n */ /**\n * Start vertical position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#y1\n * @type {number}\n */ /**\n * End vertical position of the gradient. Float ranges 0-1.\n * @name Highcharts.LinearGradientColorObject#y2\n * @type {number}\n */\n /**\n * Defines the center position and the radius for a gradient.\n *\n * @interface Highcharts.RadialGradientColorObject\n */ /**\n * Center horizontal position relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#cx\n * @type {number}\n */ /**\n * Center vertical position relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#cy\n * @type {number}\n */ /**\n * Radius relative to the shape. Float ranges 0-1.\n * @name Highcharts.RadialGradientColorObject#r\n * @type {number}\n */\n /**\n * Creates a color instance out of a color string.\n *\n * @function Highcharts.color\n *\n * @param {Highcharts.ColorType} input\n * The input color in either rbga or hex format\n *\n * @return {Highcharts.Color}\n * Color instance\n */\n (''); // detach doclets above\n\n return Color;\n });\n _registerModule(_modules, 'Core/Color/Palettes.js', [], function () {\n /**\n * Series palettes for Highcharts. Series colors are defined in highcharts.scss.\n * **Do not edit this file!** This file is generated using the 'gulp palette' task.\n */\n var SeriesPalettes = {\n /**\n * Colors for data series and points.\n */\n colors: [\n '#7cb5ec',\n '#434348',\n '#90ed7d',\n '#f7a35c',\n '#8085e9',\n '#f15c80',\n '#e4d354',\n '#2b908f',\n '#f45b5b',\n '#91e8e1'\n ]\n };\n\n return SeriesPalettes;\n });\n _registerModule(_modules, 'Core/Time.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var win = H.win;\n var defined = U.defined,\n error = U.error,\n extend = U.extend,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pad = U.pad,\n pick = U.pick,\n splat = U.splat,\n timeUnits = U.timeUnits;\n /* *\n *\n * Constants\n *\n * */\n var hasNewSafariBug = H.isSafari &&\n win.Intl &&\n win.Intl.DateTimeFormat.prototype.formatRange;\n // To do: Remove this when we no longer need support for Safari < v14.1\n var hasOldSafariBug = H.isSafari &&\n win.Intl &&\n !win.Intl.DateTimeFormat.prototype.formatRange;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Time class. Time settings are applied in general for each page using\n * `Highcharts.setOptions`, or individually for each Chart item through the\n * [time](https://api.highcharts.com/highcharts/time) options set.\n *\n * The Time object is available from {@link Highcharts.Chart#time},\n * which refers to `Highcharts.time` if no individual time settings are\n * applied.\n *\n * @example\n * // Apply time settings globally\n * Highcharts.setOptions({\n * time: {\n * timezone: 'Europe/London'\n * }\n * });\n *\n * // Apply time settings by instance\n * let chart = Highcharts.chart('container', {\n * time: {\n * timezone: 'America/New_York'\n * },\n * series: [{\n * data: [1, 4, 3, 5]\n * }]\n * });\n *\n * // Use the Time object\n * console.log(\n * 'Current time in New York',\n * chart.time.dateFormat('%Y-%m-%d %H:%M:%S', Date.now())\n * );\n *\n * @since 6.0.5\n *\n * @class\n * @name Highcharts.Time\n *\n * @param {Highcharts.TimeOptions} [options]\n * Time options as defined in [chart.options.time](/highcharts/time).\n */\n var Time = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Time(options) {\n /* *\n *\n * Properties\n *\n * */\n this.options = {};\n this.useUTC = false;\n this.variableTimezone = false;\n this.Date = win.Date;\n /**\n * Get the time zone offset based on the current timezone information as\n * set in the global options.\n *\n * @function Highcharts.Time#getTimezoneOffset\n *\n * @param {number} timestamp\n * The JavaScript timestamp to inspect.\n *\n * @return {number}\n * The timezone offset in minutes compared to UTC.\n */\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n this.update(options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Time units used in `Time.get` and `Time.set`\n *\n * @typedef {\"Date\"|\"Day\"|\"FullYear\"|\"Hours\"|\"Milliseconds\"|\"Minutes\"|\"Month\"|\"Seconds\"} Highcharts.TimeUnitValue\n */\n /**\n * Get the value of a date object in given units, and subject to the Time\n * object's current timezone settings. This function corresponds directly to\n * JavaScripts `Date.getXXX / Date.getUTCXXX`, so instead of calling\n * `date.getHours()` or `date.getUTCHours()` we will call\n * `time.get('Hours')`.\n *\n * @function Highcharts.Time#get\n *\n * @param {Highcharts.TimeUnitValue} unit\n * @param {Date} date\n *\n * @return {number}\n * The given time unit\n */\n Time.prototype.get = function (unit, date) {\n if (this.variableTimezone || this.timezoneOffset) {\n var realMs = date.getTime();\n var ms = realMs - this.getTimezoneOffset(date);\n date.setTime(ms); // Temporary adjust to timezone\n var ret = date['getUTC' + unit]();\n date.setTime(realMs); // Reset\n return ret;\n }\n // UTC time with no timezone handling\n if (this.useUTC) {\n return date['getUTC' + unit]();\n }\n // Else, local time\n return date['get' + unit]();\n };\n /**\n * Set the value of a date object in given units, and subject to the Time\n * object's current timezone settings. This function corresponds directly to\n * JavaScripts `Date.setXXX / Date.setUTCXXX`, so instead of calling\n * `date.setHours(0)` or `date.setUTCHours(0)` we will call\n * `time.set('Hours', 0)`.\n *\n * @function Highcharts.Time#set\n *\n * @param {Highcharts.TimeUnitValue} unit\n * @param {Date} date\n * @param {number} value\n *\n * @return {number}\n * The epoch milliseconds of the updated date\n */\n Time.prototype.set = function (unit, date, value) {\n // UTC time with timezone handling\n if (this.variableTimezone || this.timezoneOffset) {\n // For lower order time units, just set it directly using UTC\n // time\n if (unit === 'Milliseconds' ||\n unit === 'Seconds' ||\n (unit === 'Minutes' &&\n this.getTimezoneOffset(date) % 3600000 === 0) // #13961\n ) {\n return date['setUTC' + unit](value);\n }\n // Higher order time units need to take the time zone into\n // account\n // Adjust by timezone\n var offset = this.getTimezoneOffset(date);\n var ms = date.getTime() - offset;\n date.setTime(ms);\n date['setUTC' + unit](value);\n var newOffset = this.getTimezoneOffset(date);\n ms = date.getTime() + newOffset;\n return date.setTime(ms);\n }\n // UTC time with no timezone handling\n if (this.useUTC ||\n // leap calculation in UTC only\n (hasNewSafariBug && unit === 'FullYear')) {\n return date['setUTC' + unit](value);\n }\n // Else, local time\n return date['set' + unit](value);\n };\n /**\n * Update the Time object with current options. It is called internally on\n * initializing Highcharts, after running `Highcharts.setOptions` and on\n * `Chart.update`.\n *\n * @private\n * @function Highcharts.Time#update\n *\n * @param {Highcharts.TimeOptions} [options]\n *\n */\n Time.prototype.update = function (options) {\n if (options === void 0) { options = {}; }\n var useUTC = pick(options.useUTC,\n true);\n this.options = options = merge(true, this.options, options);\n // Allow using a different Date class\n this.Date = options.Date || win.Date || Date;\n this.useUTC = useUTC;\n this.timezoneOffset = (useUTC && options.timezoneOffset) || void 0;\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n /*\n * The time object has options allowing for variable time zones, meaning\n * the axis ticks or series data needs to consider this.\n */\n this.variableTimezone = useUTC && !!(options.getTimezoneOffset ||\n options.timezone);\n };\n /**\n * Make a time and returns milliseconds. Interprets the inputs as UTC time,\n * local time or a specific timezone time depending on the current time\n * settings.\n *\n * @function Highcharts.Time#makeTime\n *\n * @param {number} year\n * The year\n *\n * @param {number} month\n * The month. Zero-based, so January is 0.\n *\n * @param {number} [date=1]\n * The day of the month\n *\n * @param {number} [hours=0]\n * The hour of the day, 0-23.\n *\n * @param {number} [minutes=0]\n * The minutes\n *\n * @param {number} [seconds=0]\n * The seconds\n *\n * @return {number}\n * The time in milliseconds since January 1st 1970.\n */\n Time.prototype.makeTime = function (year, month, date, hours, minutes, seconds) {\n var d,\n offset,\n newOffset;\n if (this.useUTC) {\n d = this.Date.UTC.apply(0, arguments);\n offset = this.getTimezoneOffset(d);\n d += offset;\n newOffset = this.getTimezoneOffset(d);\n if (offset !== newOffset) {\n d += newOffset - offset;\n // A special case for transitioning from summer time to winter time.\n // When the clock is set back, the same time is repeated twice, i.e.\n // 02:30 am is repeated since the clock is set back from 3 am to\n // 2 am. We need to make the same time as local Date does.\n }\n else if (offset - 36e5 === this.getTimezoneOffset(d - 36e5) &&\n !hasOldSafariBug) {\n d -= 36e5;\n }\n }\n else {\n d = new this.Date(year, month, pick(date, 1), pick(hours, 0), pick(minutes, 0), pick(seconds, 0)).getTime();\n }\n return d;\n };\n /**\n * Sets the getTimezoneOffset function. If the `timezone` option is set, a\n * default getTimezoneOffset function with that timezone is returned. If\n * a `getTimezoneOffset` option is defined, it is returned. If neither are\n * specified, the function using the `timezoneOffset` option or 0 offset is\n * returned.\n *\n * @private\n * @function Highcharts.Time#timezoneOffsetFunction\n *\n * @return {Function}\n * A getTimezoneOffset function\n */\n Time.prototype.timezoneOffsetFunction = function () {\n var time = this,\n options = this.options,\n getTimezoneOffset = options.getTimezoneOffset,\n moment = options.moment || win.moment;\n if (!this.useUTC) {\n return function (timestamp) {\n return new Date(timestamp.toString()).getTimezoneOffset() * 60000;\n };\n }\n if (options.timezone) {\n if (!moment) {\n // getTimezoneOffset-function stays undefined because it depends\n // on Moment.js\n error(25);\n }\n else {\n return function (timestamp) {\n return -moment.tz(timestamp, options.timezone).utcOffset() * 60000;\n };\n }\n }\n // If not timezone is set, look for the getTimezoneOffset callback\n if (this.useUTC && getTimezoneOffset) {\n return function (timestamp) {\n return getTimezoneOffset(timestamp.valueOf()) * 60000;\n };\n }\n // Last, use the `timezoneOffset` option if set\n return function () {\n return (time.timezoneOffset || 0) * 60000;\n };\n };\n /**\n * Formats a JavaScript date timestamp (milliseconds since Jan 1st 1970)\n * into a human readable date string. The available format keys are listed\n * below. Additional formats can be given in the\n * {@link Highcharts.dateFormats} hook.\n *\n * Supported format keys:\n * - `%a`: Short weekday, like 'Mon'\n * - `%A`: Long weekday, like 'Monday'\n * - `%d`: Two digit day of the month, 01 to 31\n * - `%e`: Day of the month, 1 through 31\n * - `%w`: Day of the week, 0 through 6\n * - `%b`: Short month, like 'Jan'\n * - `%B`: Long month, like 'January'\n * - `%m`: Two digit month number, 01 through 12\n * - `%y`: Two digits year, like 09 for 2009\n * - `%Y`: Four digits year, like 2009\n * - `%H`: Two digits hours in 24h format, 00 through 23\n * - `%k`: Hours in 24h format, 0 through 23\n * - `%I`: Two digits hours in 12h format, 00 through 11\n * - `%l`: Hours in 12h format, 1 through 12\n * - `%M`: Two digits minutes, 00 through 59\n * - `%p`: Upper case AM or PM\n * - `%P`: Lower case AM or PM\n * - `%S`: Two digits seconds, 00 through 59\n * - `%L`: Milliseconds (naming from Ruby)\n *\n * @example\n * const time = new Highcharts.Time();\n * const s = time.dateFormat('%Y-%m-%d %H:%M:%S', Date.UTC(2020, 0, 1));\n * console.log(s); // => 2020-01-01 00:00:00\n *\n * @function Highcharts.Time#dateFormat\n *\n * @param {string} format\n * The desired format where various time representations are\n * prefixed with %.\n *\n * @param {number} [timestamp]\n * The JavaScript timestamp.\n *\n * @param {boolean} [capitalize=false]\n * Upper case first letter in the return.\n *\n * @return {string}\n * The formatted date.\n */\n Time.prototype.dateFormat = function (format, timestamp, capitalize) {\n if (!defined(timestamp) || isNaN(timestamp)) {\n return (H.defaultOptions.lang &&\n H.defaultOptions.lang.invalidDate ||\n '');\n }\n format = pick(format, '%Y-%m-%d %H:%M:%S');\n var time = this, date = new this.Date(timestamp), \n // get the basic time values\n hours = this.get('Hours', date), day = this.get('Day', date), dayOfMonth = this.get('Date', date), month = this.get('Month', date), fullYear = this.get('FullYear', date), lang = H.defaultOptions.lang, langWeekdays = (lang && lang.weekdays), shortWeekdays = (lang && lang.shortWeekdays), \n // List all format keys. Custom formats can be added from the\n // outside.\n replacements = extend({\n // Day\n // Short weekday, like 'Mon'\n a: shortWeekdays ?\n shortWeekdays[day] :\n langWeekdays[day].substr(0, 3),\n // Long weekday, like 'Monday'\n A: langWeekdays[day],\n // Two digit day of the month, 01 to 31\n d: pad(dayOfMonth),\n // Day of the month, 1 through 31\n e: pad(dayOfMonth, 2, ' '),\n // Day of the week, 0 through 6\n w: day,\n // Week (none implemented)\n // 'W': weekNumber(),\n // Month\n // Short month, like 'Jan'\n b: lang.shortMonths[month],\n // Long month, like 'January'\n B: lang.months[month],\n // Two digit month number, 01 through 12\n m: pad(month + 1),\n // Month number, 1 through 12 (#8150)\n o: month + 1,\n // Year\n // Two digits year, like 09 for 2009\n y: fullYear.toString().substr(2, 2),\n // Four digits year, like 2009\n Y: fullYear,\n // Time\n // Two digits hours in 24h format, 00 through 23\n H: pad(hours),\n // Hours in 24h format, 0 through 23\n k: hours,\n // Two digits hours in 12h format, 00 through 11\n I: pad((hours % 12) || 12),\n // Hours in 12h format, 1 through 12\n l: (hours % 12) || 12,\n // Two digits minutes, 00 through 59\n M: pad(this.get('Minutes', date)),\n // Upper case AM or PM\n p: hours < 12 ? 'AM' : 'PM',\n // Lower case AM or PM\n P: hours < 12 ? 'am' : 'pm',\n // Two digits seconds, 00 through 59\n S: pad(date.getSeconds()),\n // Milliseconds (naming from Ruby)\n L: pad(Math.floor(timestamp % 1000), 3)\n }, H.dateFormats);\n // Do the replaces\n objectEach(replacements, function (val, key) {\n // Regex would do it in one line, but this is faster\n while (format.indexOf('%' + key) !== -1) {\n format = format.replace('%' + key, typeof val === 'function' ? val.call(time, timestamp) : val);\n }\n });\n // Optionally capitalize the string and return\n return capitalize ?\n (format.substr(0, 1).toUpperCase() +\n format.substr(1)) :\n format;\n };\n /**\n * Resolve legacy formats of dateTimeLabelFormats (strings and arrays) into\n * an object.\n * @private\n * @param {string|Array<T>|Highcharts.Dictionary<T>} f\n * General format description\n * @return {Highcharts.Dictionary<T>}\n * The object definition\n */\n Time.prototype.resolveDTLFormat = function (f) {\n if (!isObject(f, true)) { // check for string or array\n f = splat(f);\n return {\n main: f[0],\n from: f[1],\n to: f[2]\n };\n }\n return f;\n };\n /**\n * Return an array with time positions distributed on round time values\n * right and right after min and max. Used in datetime axes as well as for\n * grouping data on a datetime axis.\n *\n * @function Highcharts.Time#getTimeTicks\n *\n * @param {Highcharts.TimeNormalizedObject} normalizedInterval\n * The interval in axis values (ms) and the count\n *\n * @param {number} [min]\n * The minimum in axis values\n *\n * @param {number} [max]\n * The maximum in axis values\n *\n * @param {number} [startOfWeek=1]\n *\n * @return {Highcharts.AxisTickPositionsArray}\n * Time positions\n */\n Time.prototype.getTimeTicks = function (normalizedInterval, min, max, startOfWeek) {\n var time = this,\n Date = time.Date,\n tickPositions = [],\n higherRanks = {}, \n // When crossing DST, use the max. Resolves #6278.\n minDate = new Date(min),\n interval = normalizedInterval.unitRange,\n count = normalizedInterval.count || 1;\n var i,\n minYear, // used in months and years as a basis for Date.UTC()\n variableDayLength,\n minDay;\n startOfWeek = pick(startOfWeek, 1);\n if (defined(min)) { // #1300\n time.set('Milliseconds', minDate, interval >= timeUnits.second ?\n 0 : // #3935\n count * Math.floor(time.get('Milliseconds', minDate) / count)); // #3652, #3654\n if (interval >= timeUnits.second) { // second\n time.set('Seconds', minDate, interval >= timeUnits.minute ?\n 0 : // #3935\n count * Math.floor(time.get('Seconds', minDate) / count));\n }\n if (interval >= timeUnits.minute) { // minute\n time.set('Minutes', minDate, interval >= timeUnits.hour ?\n 0 :\n count * Math.floor(time.get('Minutes', minDate) / count));\n }\n if (interval >= timeUnits.hour) { // hour\n time.set('Hours', minDate, interval >= timeUnits.day ?\n 0 :\n count * Math.floor(time.get('Hours', minDate) / count));\n }\n if (interval >= timeUnits.day) { // day\n time.set('Date', minDate, interval >= timeUnits.month ?\n 1 :\n Math.max(1, count * Math.floor(time.get('Date', minDate) / count)));\n }\n if (interval >= timeUnits.month) { // month\n time.set('Month', minDate, interval >= timeUnits.year ? 0 :\n count * Math.floor(time.get('Month', minDate) / count));\n minYear = time.get('FullYear', minDate);\n }\n if (interval >= timeUnits.year) { // year\n minYear -= minYear % count;\n time.set('FullYear', minDate, minYear);\n }\n // week is a special case that runs outside the hierarchy\n if (interval === timeUnits.week) {\n // get start of current week, independent of count\n minDay = time.get('Day', minDate);\n time.set('Date', minDate, (time.get('Date', minDate) -\n minDay + startOfWeek +\n // We don't want to skip days that are before\n // startOfWeek (#7051)\n (minDay < startOfWeek ? -7 : 0)));\n }\n // Get basics for variable time spans\n minYear = time.get('FullYear', minDate);\n var minMonth = time.get('Month', minDate), minDateDate = time.get('Date', minDate), minHours = time.get('Hours', minDate);\n // Redefine min to the floored/rounded minimum time (#7432)\n min = minDate.getTime();\n // Handle local timezone offset\n if ((time.variableTimezone || !time.useUTC) && defined(max)) {\n // Detect whether we need to take the DST crossover into\n // consideration. If we're crossing over DST, the day length may\n // be 23h or 25h and we need to compute the exact clock time for\n // each tick instead of just adding hours. This comes at a cost,\n // so first we find out if it is needed (#4951).\n variableDayLength = (\n // Long range, assume we're crossing over.\n max - min > 4 * timeUnits.month ||\n // Short range, check if min and max are in different time\n // zones.\n time.getTimezoneOffset(min) !==\n time.getTimezoneOffset(max));\n }\n // Iterate and add tick positions at appropriate values\n var t = minDate.getTime();\n i = 1;\n while (t < max) {\n tickPositions.push(t);\n // if the interval is years, use Date.UTC to increase years\n if (interval === timeUnits.year) {\n t = time.makeTime(minYear + i * count, 0);\n // if the interval is months, use Date.UTC to increase months\n }\n else if (interval === timeUnits.month) {\n t = time.makeTime(minYear, minMonth + i * count);\n // if we're using global time, the interval is not fixed as it\n // jumps one hour at the DST crossover\n }\n else if (variableDayLength &&\n (interval === timeUnits.day || interval === timeUnits.week)) {\n t = time.makeTime(minYear, minMonth, minDateDate +\n i * count * (interval === timeUnits.day ? 1 : 7));\n }\n else if (variableDayLength &&\n interval === timeUnits.hour &&\n count > 1) {\n // make sure higher ranks are preserved across DST (#6797,\n // #7621)\n t = time.makeTime(minYear, minMonth, minDateDate, minHours + i * count);\n // else, the interval is fixed and we use simple addition\n }\n else {\n t += interval * count;\n }\n i++;\n }\n // push the last time\n tickPositions.push(t);\n // Handle higher ranks. Mark new days if the time is on midnight\n // (#950, #1649, #1760, #3349). Use a reasonable dropout threshold\n // to prevent looping over dense data grouping (#6156).\n if (interval <= timeUnits.hour && tickPositions.length < 10000) {\n tickPositions.forEach(function (t) {\n if (\n // Speed optimization, no need to run dateFormat unless\n // we're on a full or half hour\n t % 1800000 === 0 &&\n // Check for local or global midnight\n time.dateFormat('%H%M%S%L', t) === '000000000') {\n higherRanks[t] = 'day';\n }\n });\n }\n }\n // record information on the chosen unit - for dynamic label formatter\n tickPositions.info = extend(normalizedInterval, {\n higherRanks: higherRanks,\n totalRange: interval * count\n });\n return tickPositions;\n };\n /**\n * Get the optimal date format for a point, based on a range.\n *\n * @private\n * @function Highcharts.Time#getDateFormat\n *\n * @param {number} range\n * The time range\n *\n * @param {number} timestamp\n * The timestamp of the date\n *\n * @param {number} startOfWeek\n * An integer representing the first day of the week, where 0 is\n * Sunday.\n *\n * @param {Highcharts.Dictionary<string>} dateTimeLabelFormats\n * A map of time units to formats.\n *\n * @return {string}\n * The optimal date format for a point.\n */\n Time.prototype.getDateFormat = function (range, timestamp, startOfWeek, dateTimeLabelFormats) {\n var dateStr = this.dateFormat('%m-%d %H:%M:%S.%L', timestamp), blank = '01-01 00:00:00.000', strpos = {\n millisecond: 15,\n second: 12,\n minute: 9,\n hour: 6,\n day: 3\n };\n var n = 'millisecond', \n // for sub-millisecond data, #4223\n lastN = n;\n for (n in timeUnits) { // eslint-disable-line guard-for-in\n // If the range is exactly one week and we're looking at a\n // Sunday/Monday, go for the week format\n if (range === timeUnits.week &&\n +this.dateFormat('%w', timestamp) === startOfWeek &&\n dateStr.substr(6) === blank.substr(6)) {\n n = 'week';\n break;\n }\n // The first format that is too great for the range\n if (timeUnits[n] > range) {\n n = lastN;\n break;\n }\n // If the point is placed every day at 23:59, we need to show\n // the minutes as well. #2637.\n if (strpos[n] &&\n dateStr.substr(strpos[n]) !== blank.substr(strpos[n])) {\n break;\n }\n // Weeks are outside the hierarchy, only apply them on\n // Mondays/Sundays like in the first condition\n if (n !== 'week') {\n lastN = n;\n }\n }\n return this.resolveDTLFormat(dateTimeLabelFormats[n]).main;\n };\n return Time;\n }());\n /* *\n *\n * Default export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Normalized interval.\n *\n * @interface Highcharts.TimeNormalizedObject\n */ /**\n * The count.\n *\n * @name Highcharts.TimeNormalizedObject#count\n * @type {number|undefined}\n */ /**\n * The interval in axis values (ms).\n *\n * @name Highcharts.TimeNormalizedObject#unitRange\n * @type {number}\n */\n /**\n * Function of an additional date format specifier.\n *\n * @callback Highcharts.TimeFormatCallbackFunction\n *\n * @param {number} timestamp\n * The time to format.\n *\n * @return {string}\n * The formatted portion of the date.\n */\n /**\n * Time ticks.\n *\n * @interface Highcharts.AxisTickPositionsArray\n * @extends global.Array<number>\n */ /**\n * @name Highcharts.AxisTickPositionsArray#info\n * @type {Highcharts.TimeTicksInfoObject|undefined}\n */\n /**\n * A callback to return the time zone offset for a given datetime. It\n * takes the timestamp in terms of milliseconds since January 1 1970,\n * and returns the timezone offset in minutes. This provides a hook\n * for drawing time based charts in specific time zones using their\n * local DST crossover dates, with the help of external libraries.\n *\n * @callback Highcharts.TimezoneOffsetCallbackFunction\n *\n * @param {number} timestamp\n * Timestamp in terms of milliseconds since January 1 1970.\n *\n * @return {number}\n * Timezone offset in minutes.\n */\n /**\n * Allows to manually load the `moment.js` library from Highcharts options\n * instead of the `window`.\n * In case of loading the library from a `script` tag,\n * this option is not needed, it will be loaded from there by default.\n *\n * @type {Function}\n * @since 8.2.0\n * @apioption time.moment\n */\n ''; // keeps doclets above in JS file\n\n return Time;\n });\n _registerModule(_modules, 'Core/Defaults.js', [_modules['Core/Chart/ChartDefaults.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Color/Palettes.js'], _modules['Core/Time.js'], _modules['Core/Utilities.js']], function (ChartDefaults, Color, H, Palettes, Time, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var isTouchDevice = H.isTouchDevice,\n svg = H.svg;\n var merge = U.merge;\n /* *\n *\n * API Options\n *\n * */\n /**\n * Global default settings.\n *\n * @name Highcharts.defaultOptions\n * @type {Highcharts.Options}\n */ /**\n * @optionparent\n * @private\n */\n var defaultOptions = {\n /**\n * An array containing the default colors for the chart's series. When\n * all colors are used, new colors are pulled from the start again.\n *\n * Default colors can also be set on a series or series.type basis,\n * see [column.colors](#plotOptions.column.colors),\n * [pie.colors](#plotOptions.pie.colors).\n *\n * In styled mode, the colors option doesn't exist. Instead, colors\n * are defined in CSS and applied either through series or point class\n * names, or through the [chart.colorCount](#chart.colorCount) option.\n *\n *\n * ### Legacy\n *\n * In Highcharts 3.x, the default colors were:\n * ```js\n * colors: ['#2f7ed8', '#0d233a', '#8bbc21', '#910000', '#1aadce',\n * '#492970', '#f28f43', '#77a1e5', '#c42525', '#a6c96a']\n * ```\n *\n * In Highcharts 2.x, the default colors were:\n * ```js\n * colors: ['#4572A7', '#AA4643', '#89A54E', '#80699B', '#3D96AE',\n * '#DB843D', '#92A8CD', '#A47D7C', '#B5CA92']\n * ```\n *\n * @sample {highcharts} highcharts/chart/colors/\n * Assign a global color theme\n *\n * @type {Array<(Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject)>}\n * @default [\"#7cb5ec\", \"#434348\", \"#90ed7d\", \"#f7a35c\", \"#8085e9\",\n * \"#f15c80\", \"#e4d354\", \"#2b908f\", \"#f45b5b\", \"#91e8e1\"]\n */\n colors: Palettes.colors,\n /**\n * Styled mode only. Configuration object for adding SVG definitions for\n * reusable elements. See [gradients, shadows and\n * patterns](https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns)\n * for more information and code examples.\n *\n * @type {*}\n * @since 5.0.0\n * @apioption defs\n */\n /**\n * @ignore-option\n */\n symbols: ['circle', 'diamond', 'square', 'triangle', 'triangle-down'],\n /**\n * The language object is global and it can't be set on each chart\n * initialization. Instead, use `Highcharts.setOptions` to set it before any\n * chart is initialized.\n *\n * ```js\n * Highcharts.setOptions({\n * lang: {\n * months: [\n * 'Janvier', 'Février', 'Mars', 'Avril',\n * 'Mai', 'Juin', 'Juillet', 'Août',\n * 'Septembre', 'Octobre', 'Novembre', 'Décembre'\n * ],\n * weekdays: [\n * 'Dimanche', 'Lundi', 'Mardi', 'Mercredi',\n * 'Jeudi', 'Vendredi', 'Samedi'\n * ]\n * }\n * });\n * ```\n */\n lang: {\n /**\n * The loading text that appears when the chart is set into the loading\n * state following a call to `chart.showLoading`.\n */\n loading: 'Loading...',\n /**\n * An array containing the months names. Corresponds to the `%B` format\n * in `Highcharts.dateFormat()`.\n *\n * @type {Array<string>}\n * @default [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n * \"July\", \"August\", \"September\", \"October\", \"November\",\n * \"December\"]\n */\n months: [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July',\n 'August', 'September', 'October', 'November', 'December'\n ],\n /**\n * An array containing the months names in abbreviated form. Corresponds\n * to the `%b` format in `Highcharts.dateFormat()`.\n *\n * @type {Array<string>}\n * @default [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\n * \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n */\n shortMonths: [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul',\n 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ],\n /**\n * An array containing the weekday names.\n *\n * @type {Array<string>}\n * @default [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\",\n * \"Friday\", \"Saturday\"]\n */\n weekdays: [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday',\n 'Thursday', 'Friday', 'Saturday'\n ],\n /**\n * Short week days, starting Sunday. If not specified, Highcharts uses\n * the first three letters of the `lang.weekdays` option.\n *\n * @sample highcharts/lang/shortweekdays/\n * Finnish two-letter abbreviations\n *\n * @type {Array<string>}\n * @since 4.2.4\n * @apioption lang.shortWeekdays\n */\n /**\n * What to show in a date field for invalid dates. Defaults to an empty\n * string.\n *\n * @type {string}\n * @since 4.1.8\n * @product highcharts highstock\n * @apioption lang.invalidDate\n */\n /**\n * The title appearing on hovering the zoom in button. The text itself\n * defaults to \"+\" and can be changed in the button options.\n *\n * @type {string}\n * @default Zoom in\n * @product highmaps\n * @apioption lang.zoomIn\n */\n /**\n * The title appearing on hovering the zoom out button. The text itself\n * defaults to \"-\" and can be changed in the button options.\n *\n * @type {string}\n * @default Zoom out\n * @product highmaps\n * @apioption lang.zoomOut\n */\n /**\n * The default decimal point used in the `Highcharts.numberFormat`\n * method unless otherwise specified in the function arguments.\n *\n * @since 1.2.2\n */\n decimalPoint: '.',\n /**\n * [Metric prefixes](https://en.wikipedia.org/wiki/Metric_prefix) used\n * to shorten high numbers in axis labels. Replacing any of the\n * positions with `null` causes the full number to be written. Setting\n * `numericSymbols` to `null` disables shortening altogether.\n *\n * @sample {highcharts} highcharts/lang/numericsymbols/\n * Replacing the symbols with text\n * @sample {highstock} highcharts/lang/numericsymbols/\n * Replacing the symbols with text\n *\n * @type {Array<string>}\n * @default [\"k\", \"M\", \"G\", \"T\", \"P\", \"E\"]\n * @since 2.3.0\n */\n numericSymbols: ['k', 'M', 'G', 'T', 'P', 'E'],\n /**\n * The magnitude of [numericSymbols](#lang.numericSymbol) replacements.\n * Use 10000 for Japanese, Korean and various Chinese locales, which\n * use symbols for 10^4, 10^8 and 10^12.\n *\n * @sample highcharts/lang/numericsymbolmagnitude/\n * 10000 magnitude for Japanese\n *\n * @type {number}\n * @default 1000\n * @since 5.0.3\n * @apioption lang.numericSymbolMagnitude\n */\n /**\n * The text for the label appearing when a chart is zoomed.\n *\n * @since 1.2.4\n */\n resetZoom: 'Reset zoom',\n /**\n * The tooltip title for the label appearing when a chart is zoomed.\n *\n * @since 1.2.4\n */\n resetZoomTitle: 'Reset zoom level 1:1',\n /**\n * The default thousands separator used in the `Highcharts.numberFormat`\n * method unless otherwise specified in the function arguments. Defaults\n * to a single space character, which is recommended in\n * [ISO 31-0](https://en.wikipedia.org/wiki/ISO_31-0#Numbers) and works\n * across Anglo-American and continental European languages.\n *\n * @default \\u0020\n * @since 1.2.2\n */\n thousandsSep: ' '\n },\n /**\n * Global options that don't apply to each chart. These options, like\n * the `lang` options, must be set using the `Highcharts.setOptions`\n * method.\n *\n * ```js\n * Highcharts.setOptions({\n * global: {\n * useUTC: false\n * }\n * });\n * ```\n */\n /**\n * _Canvg rendering for Android 2.x is removed as of Highcharts 5.0\\.\n * Use the [libURL](#exporting.libURL) option to configure exporting._\n *\n * The URL to the additional file to lazy load for Android 2.x devices.\n * These devices don't support SVG, so we download a helper file that\n * contains [canvg](https://github.com/canvg/canvg), its dependency\n * rbcolor, and our own CanVG Renderer class. To avoid hotlinking to\n * our site, you can install canvas-tools.js on your own server and\n * change this option accordingly.\n *\n * @deprecated\n *\n * @type {string}\n * @default https://code.highcharts.com/{version}/modules/canvas-tools.js\n * @product highcharts highmaps\n * @apioption global.canvasToolsURL\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.useUTC](#time.useUTC) that supports individual time settings\n * per chart.\n *\n * @deprecated\n *\n * @type {boolean}\n * @apioption global.useUTC\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.Date](#time.Date) that supports individual time settings\n * per chart.\n *\n * @deprecated\n *\n * @type {Function}\n * @product highcharts highstock\n * @apioption global.Date\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.getTimezoneOffset](#time.getTimezoneOffset) that supports\n * individual time settings per chart.\n *\n * @deprecated\n *\n * @type {Function}\n * @product highcharts highstock\n * @apioption global.getTimezoneOffset\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.timezone](#time.timezone) that supports individual time\n * settings per chart.\n *\n * @deprecated\n *\n * @type {string}\n * @product highcharts highstock\n * @apioption global.timezone\n */\n /**\n * This option is deprecated since v6.0.5. Instead, use\n * [time.timezoneOffset](#time.timezoneOffset) that supports individual\n * time settings per chart.\n *\n * @deprecated\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption global.timezoneOffset\n */\n global: {},\n /**\n * Time options that can apply globally or to individual charts. These\n * settings affect how `datetime` axes are laid out, how tooltips are\n * formatted, how series\n * [pointIntervalUnit](#plotOptions.series.pointIntervalUnit) works and how\n * the Highcharts Stock range selector handles time.\n *\n * The common use case is that all charts in the same Highcharts object\n * share the same time settings, in which case the global settings are set\n * using `setOptions`.\n *\n * ```js\n * // Apply time settings globally\n * Highcharts.setOptions({\n * time: {\n * timezone: 'Europe/London'\n * }\n * });\n * // Apply time settings by instance\n * let chart = Highcharts.chart('container', {\n * time: {\n * timezone: 'America/New_York'\n * },\n * series: [{\n * data: [1, 4, 3, 5]\n * }]\n * });\n *\n * // Use the Time object\n * console.log(\n * 'Current time in New York',\n * chart.time.dateFormat('%Y-%m-%d %H:%M:%S', Date.now())\n * );\n * ```\n *\n * Since v6.0.5, the time options were moved from the `global` obect to the\n * `time` object, and time options can be set on each individual chart.\n *\n * @sample {highcharts|highstock}\n * highcharts/time/timezone/\n * Set the timezone globally\n * @sample {highcharts}\n * highcharts/time/individual/\n * Set the timezone per chart instance\n * @sample {highstock}\n * stock/time/individual/\n * Set the timezone per chart instance\n *\n * @since 6.0.5\n * @optionparent time\n */\n time: {\n /**\n * A custom `Date` class for advanced date handling. For example,\n * [JDate](https://github.com/tahajahangir/jdate) can be hooked in to\n * handle Jalali dates.\n *\n * @type {*}\n * @since 4.0.4\n * @product highcharts highstock gantt\n */\n Date: void 0,\n /**\n * A callback to return the time zone offset for a given datetime. It\n * takes the timestamp in terms of milliseconds since January 1 1970,\n * and returns the timezone offset in minutes. This provides a hook\n * for drawing time based charts in specific time zones using their\n * local DST crossover dates, with the help of external libraries.\n *\n * @see [global.timezoneOffset](#global.timezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/gettimezoneoffset/\n * Use moment.js to draw Oslo time regardless of browser locale\n *\n * @type {Highcharts.TimezoneOffsetCallbackFunction}\n * @since 4.1.0\n * @product highcharts highstock gantt\n */\n getTimezoneOffset: void 0,\n /**\n * Requires [moment.js](https://momentjs.com/). If the timezone option\n * is specified, it creates a default\n * [getTimezoneOffset](#time.getTimezoneOffset) function that looks\n * up the specified timezone in moment.js. If moment.js is not included,\n * this throws a Highcharts error in the console, but does not crash the\n * chart.\n *\n * @see [getTimezoneOffset](#time.getTimezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/timezone/\n * Europe/Oslo\n *\n * @type {string}\n * @since 5.0.7\n * @product highcharts highstock gantt\n */\n timezone: void 0,\n /**\n * The timezone offset in minutes. Positive values are west, negative\n * values are east of UTC, as in the ECMAScript\n * [getTimezoneOffset](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset)\n * method. Use this to display UTC based data in a predefined time zone.\n *\n * @see [time.getTimezoneOffset](#time.getTimezoneOffset)\n *\n * @sample {highcharts|highstock} highcharts/time/timezoneoffset/\n * Timezone offset\n *\n * @since 3.0.8\n * @product highcharts highstock gantt\n */\n timezoneOffset: 0,\n /**\n * Whether to use UTC time for axis scaling, tickmark placement and\n * time display in `Highcharts.dateFormat`. Advantages of using UTC\n * is that the time displays equally regardless of the user agent's\n * time zone settings. Local time can be used when the data is loaded\n * in real time or when correct Daylight Saving Time transitions are\n * required.\n *\n * @sample {highcharts} highcharts/time/useutc-true/\n * True by default\n * @sample {highcharts} highcharts/time/useutc-false/\n * False\n */\n useUTC: true\n },\n chart: ChartDefaults,\n /**\n * The chart's main title.\n *\n * @sample {highmaps} maps/title/title/\n * Title options demonstrated\n */\n title: {\n /**\n * When the title is floating, the plot area will not move to make space\n * for it.\n *\n * @sample {highcharts} highcharts/chart/zoomtype-none/\n * False by default\n * @sample {highcharts} highcharts/title/floating/\n * True - title on top of the plot area\n * @sample {highstock} stock/chart/title-floating/\n * True - title on top of the plot area\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption title.floating\n */\n /**\n * CSS styles for the title. Use this for font styling, but use `align`,\n * `x` and `y` for text alignment.\n *\n * In styled mode, the title style is given in the `.highcharts-title`\n * class.\n *\n * @sample {highcharts} highcharts/title/style/\n * Custom color and weight\n * @sample {highstock} stock/chart/title-style/\n * Custom color and weight\n * @sample highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {highcharts|highmaps} { \"color\": \"#333333\", \"fontSize\": \"18px\" }\n * @default {highstock} { \"color\": \"#333333\", \"fontSize\": \"16px\" }\n * @apioption title.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption title.useHTML\n */\n /**\n * The vertical alignment of the title. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When a value is given, the title behaves\n * as if [floating](#title.floating) were `true`.\n *\n * @sample {highcharts} highcharts/title/verticalalign/\n * Chart title in bottom right corner\n * @sample {highstock} stock/chart/title-verticalalign/\n * Chart title in bottom right corner\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1\n * @apioption title.verticalAlign\n */\n /**\n * The x position of the title relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @sample {highcharts} highcharts/title/align/\n * Aligned to the plot area (x = 70px = margin left - spacing\n * left)\n * @sample {highstock} stock/chart/title-align/\n * Aligned to the plot area (x = 50px = margin left - spacing\n * left)\n *\n * @type {number}\n * @default 0\n * @since 2.0\n * @apioption title.x\n */\n /**\n * The y position of the title relative to the alignment within\n * [chart.spacingTop](#chart.spacingTop) and [chart.spacingBottom](\n * #chart.spacingBottom). By default it depends on the font size.\n *\n * @sample {highcharts} highcharts/title/y/\n * Title inside the plot area\n * @sample {highstock} stock/chart/title-verticalalign/\n * Chart title in bottom right corner\n *\n * @type {number}\n * @since 2.0\n * @apioption title.y\n */\n /**\n * The title of the chart. To disable the title, set the `text` to\n * `undefined`.\n *\n * @sample {highcharts} highcharts/title/text/\n * Custom title\n * @sample {highstock} stock/chart/title-text/\n * Custom title\n *\n * @default {highcharts|highmaps} Chart title\n * @default {highstock} undefined\n */\n text: 'Chart title',\n /**\n * The horizontal alignment of the title. Can be one of \"left\", \"center\"\n * and \"right\".\n *\n * @sample {highcharts} highcharts/title/align/\n * Aligned to the plot area (x = 70px = margin left - spacing\n * left)\n * @sample {highstock} stock/chart/title-align/\n * Aligned to the plot area (x = 50px = margin left - spacing\n * left)\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * The margin between the title and the plot area, or if a subtitle\n * is present, the margin between the subtitle and the plot area.\n *\n * @sample {highcharts} highcharts/title/margin-50/\n * A chart title margin of 50\n * @sample {highcharts} highcharts/title/margin-subtitle/\n * The same margin applied with a subtitle\n * @sample {highstock} stock/chart/title-margin/\n * A chart title margin of 50\n *\n * @since 2.1\n */\n margin: 15,\n /**\n * Adjustment made to the title width, normally to reserve space for\n * the exporting burger menu.\n *\n * @sample highcharts/title/widthadjust/\n * Wider menu, greater padding\n *\n * @since 4.2.5\n */\n widthAdjust: -44\n },\n /**\n * The chart's subtitle. This can be used both to display a subtitle below\n * the main title, and to display random text anywhere in the chart. The\n * subtitle can be updated after chart initialization through the\n * `Chart.setTitle` method.\n *\n * @sample {highmaps} maps/title/subtitle/\n * Subtitle options demonstrated\n */\n subtitle: {\n /**\n * When the subtitle is floating, the plot area will not move to make\n * space for it.\n *\n * @sample {highcharts} highcharts/subtitle/floating/\n * Floating title and subtitle\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote floating at bottom right of plot area\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption subtitle.floating\n */\n /**\n * CSS styles for the title.\n *\n * In styled mode, the subtitle style is given in the\n * `.highcharts-subtitle` class.\n *\n * @sample {highcharts} highcharts/subtitle/style/\n * Custom color and weight\n * @sample {highcharts} highcharts/css/titles/\n * Styled mode\n * @sample {highstock} stock/chart/subtitle-style\n * Custom color and weight\n * @sample {highstock} highcharts/css/titles/\n * Styled mode\n * @sample {highmaps} highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#666666\"}\n * @apioption subtitle.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption subtitle.useHTML\n */\n /**\n * The vertical alignment of the title. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When middle, the subtitle behaves as\n * floating.\n *\n * @sample {highcharts} highcharts/subtitle/verticalalign/\n * Footnote at the bottom right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1\n * @apioption subtitle.verticalAlign\n */\n /**\n * The x position of the subtitle relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @sample {highcharts} highcharts/subtitle/align/\n * Footnote at right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {number}\n * @default 0\n * @since 2.0\n * @apioption subtitle.x\n */\n /**\n * The y position of the subtitle relative to the alignment within\n * `chart.spacingTop` and `chart.spacingBottom`. By default the subtitle\n * is laid out below the title unless the title is floating.\n *\n * @sample {highcharts} highcharts/subtitle/verticalalign/\n * Footnote at the bottom right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at the bottom right of plot area\n *\n * @type {number}\n * @since 2.0\n * @apioption subtitle.y\n */\n /**\n * The subtitle of the chart.\n *\n * @sample {highcharts|highstock} highcharts/subtitle/text/\n * Custom subtitle\n * @sample {highcharts|highstock} highcharts/subtitle/text-formatted/\n * Formatted and linked text.\n */\n text: '',\n /**\n * The horizontal alignment of the subtitle. Can be one of \"left\",\n * \"center\" and \"right\".\n *\n * @sample {highcharts} highcharts/subtitle/align/\n * Footnote at right of plot area\n * @sample {highstock} stock/chart/subtitle-footnote\n * Footnote at bottom right of plot area\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * Adjustment made to the subtitle width, normally to reserve space\n * for the exporting burger menu.\n *\n * @see [title.widthAdjust](#title.widthAdjust)\n *\n * @sample highcharts/title/widthadjust/\n * Wider menu, greater padding\n *\n * @since 4.2.5\n */\n widthAdjust: -44\n },\n /**\n * The chart's caption, which will render below the chart and will be part\n * of exported charts. The caption can be updated after chart initialization\n * through the `Chart.update` or `Chart.caption.update` methods.\n *\n * @sample highcharts/caption/text/\n * A chart with a caption\n * @since 7.2.0\n */\n caption: {\n /**\n * When the caption is floating, the plot area will not move to make\n * space for it.\n *\n * @type {boolean}\n * @default false\n * @apioption caption.floating\n */\n /**\n * The margin between the caption and the plot area.\n */\n margin: 15,\n /**\n * CSS styles for the caption.\n *\n * In styled mode, the caption style is given in the\n * `.highcharts-caption` class.\n *\n * @sample {highcharts} highcharts/css/titles/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#666666\"}\n * @apioption caption.style\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the text.\n *\n * @type {boolean}\n * @default false\n * @apioption caption.useHTML\n */\n /**\n * The x position of the caption relative to the alignment within\n * `chart.spacingLeft` and `chart.spacingRight`.\n *\n * @type {number}\n * @default 0\n * @apioption caption.x\n */\n /**\n * The y position of the caption relative to the alignment within\n * `chart.spacingTop` and `chart.spacingBottom`.\n *\n * @type {number}\n * @apioption caption.y\n */\n /**\n * The caption text of the chart.\n *\n * @sample {highcharts} highcharts/caption/text/\n * Custom caption\n */\n text: '',\n /**\n * The horizontal alignment of the caption. Can be one of \"left\",\n * \"center\" and \"right\".\n *\n * @type {Highcharts.AlignValue}\n */\n align: 'left',\n /**\n * The vertical alignment of the caption. Can be one of `\"top\"`,\n * `\"middle\"` and `\"bottom\"`. When middle, the caption behaves as\n * floating.\n *\n * @type {Highcharts.VerticalAlignValue}\n */\n verticalAlign: 'bottom'\n },\n /**\n * The plotOptions is a wrapper object for config objects for each series\n * type. The config objects for each series can also be overridden for\n * each series item as given in the series array.\n *\n * Configuration options for the series are given in three levels. Options\n * for all series in a chart are given in the [plotOptions.series](\n * #plotOptions.series) object. Then options for all series of a specific\n * type are given in the plotOptions of that type, for example\n * `plotOptions.line`. Next, options for one single series are given in\n * [the series array](#series).\n */\n plotOptions: {},\n /**\n * HTML labels that can be positioned anywhere in the chart area.\n *\n * This option is deprecated since v7.1.2. Instead, use\n * [annotations](#annotations) that support labels.\n *\n * @deprecated\n * @product highcharts highstock\n */\n labels: {\n /**\n * An HTML label that can be positioned anywhere in the chart area.\n *\n * @deprecated\n * @type {Array<*>}\n * @apioption labels.items\n */\n /**\n * Inner HTML or text for the label.\n *\n * @deprecated\n * @type {string}\n * @apioption labels.items.html\n */\n /**\n * CSS styles for each label. To position the label, use left and top\n * like this:\n * ```js\n * style: {\n * left: '100px',\n * top: '100px'\n * }\n * ```\n *\n * @deprecated\n * @type {Highcharts.CSSObject}\n * @apioption labels.items.style\n */\n /**\n * Shared CSS styles for all labels.\n *\n * @deprecated\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#333333\", \"position\": \"absolute\"}\n */\n style: {\n /**\n * @ignore-option\n */\n position: 'absolute',\n /**\n * @ignore-option\n */\n color: \"#333333\" /* Palette.neutralColor80 */\n }\n },\n /**\n * The legend is a box containing a symbol and name for each series\n * item or point item in the chart. Each series (or points in case\n * of pie charts) is represented by a symbol and its name in the legend.\n *\n * It is possible to override the symbol creator function and create\n * [custom legend symbols](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/studies/legend-custom-symbol/).\n *\n * @productdesc {highmaps}\n * A Highmaps legend by default contains one legend item per series, but if\n * a `colorAxis` is defined, the axis will be displayed in the legend.\n * Either as a gradient, or as multiple legend items for `dataClasses`.\n */\n legend: {\n /**\n * The background color of the legend.\n *\n * @see In styled mode, the legend background fill can be applied with\n * the `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/backgroundcolor/\n * Yellowish background\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption legend.backgroundColor\n */\n /**\n * The width of the drawn border around the legend.\n *\n * @see In styled mode, the legend border stroke width can be applied\n * with the `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/borderwidth/\n * 2px border width\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {number}\n * @default 0\n * @apioption legend.borderWidth\n */\n /**\n * Enable or disable the legend. There is also a series-specific option,\n * [showInLegend](#plotOptions.series.showInLegend), that can hide the\n * series from the legend. In some series types this is `false` by\n * default, so it must set to `true` in order to show the legend for the\n * series.\n *\n * @sample {highcharts} highcharts/legend/enabled-false/ Legend disabled\n * @sample {highstock} stock/legend/align/ Various legend options\n * @sample {highmaps} maps/legend/enabled-false/ Legend disabled\n *\n * @default {highstock} false\n * @default {highmaps} true\n * @default {gantt} false\n */\n enabled: true,\n /**\n * The horizontal alignment of the legend box within the chart area.\n * Valid values are `left`, `center` and `right`.\n *\n * In the case that the legend is aligned in a corner position, the\n * `layout` option will determine whether to place it above/below\n * or on the side of the plot area.\n *\n * @sample {highcharts} highcharts/legend/align/\n * Legend at the right of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @type {Highcharts.AlignValue}\n * @since 2.0\n */\n align: 'center',\n /**\n * If the [layout](legend.layout) is `horizontal` and the legend items\n * span over two lines or more, whether to align the items into vertical\n * columns. Setting this to `false` makes room for more items, but will\n * look more messy.\n *\n * @since 6.1.0\n */\n alignColumns: true,\n /**\n * A CSS class name to apply to the legend group.\n */\n className: 'highcharts-no-tooltip',\n /**\n * When the legend is floating, the plot area ignores it and is allowed\n * to be placed below it.\n *\n * @sample {highcharts} highcharts/legend/floating-false/\n * False by default\n * @sample {highcharts} highcharts/legend/floating-true/\n * True\n * @sample {highmaps} maps/legend/alignment/\n * Floating legend\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @apioption legend.floating\n */\n /**\n * The layout of the legend items. Can be one of `horizontal` or\n * `vertical` or `proximate`. When `proximate`, the legend items will be\n * placed as close as possible to the graphs they're representing,\n * except in inverted charts or when the legend position doesn't allow\n * it.\n *\n * @sample {highcharts} highcharts/legend/layout-horizontal/\n * Horizontal by default\n * @sample {highcharts} highcharts/legend/layout-vertical/\n * Vertical\n * @sample highcharts/legend/layout-proximate\n * Labels proximate to the data\n * @sample {highstock} stock/legend/layout-horizontal/\n * Horizontal by default\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Vertical with data classes\n * @sample {highmaps} maps/legend/layout-vertical/\n * Vertical with color axis gradient\n *\n * @validvalue [\"horizontal\", \"vertical\", \"proximate\"]\n */\n layout: 'horizontal',\n /**\n * In a legend with horizontal layout, the itemDistance defines the\n * pixel distance between each item.\n *\n * @sample {highcharts} highcharts/legend/layout-horizontal/\n * 50px item distance\n * @sample {highstock} highcharts/legend/layout-horizontal/\n * 50px item distance\n *\n * @type {number}\n * @default {highcharts} 20\n * @default {highstock} 20\n * @default {highmaps} 8\n * @since 3.0.3\n * @apioption legend.itemDistance\n */\n /**\n * The pixel bottom margin for each legend item.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 0\n * @since 2.2.0\n * @apioption legend.itemMarginBottom\n */\n /**\n * The pixel top margin for each legend item.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 0\n * @since 2.2.0\n * @apioption legend.itemMarginTop\n */\n /**\n * The width for each legend item. By default the items are laid out\n * successively. In a [horizontal layout](legend.layout), if the items\n * are laid out across two rows or more, they will be vertically aligned\n * depending on the [legend.alignColumns](legend.alignColumns) option.\n *\n * @sample {highcharts} highcharts/legend/itemwidth-default/\n * Undefined by default\n * @sample {highcharts} highcharts/legend/itemwidth-80/\n * 80 for aligned legend items\n *\n * @type {number}\n * @since 2.0\n * @apioption legend.itemWidth\n */\n /**\n * A [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for each legend label. Available variables relates to properties on\n * the series, or the point in case of pies.\n *\n * @type {string}\n * @default {name}\n * @since 1.3\n * @apioption legend.labelFormat\n */\n /* eslint-disable valid-jsdoc */\n /**\n * Callback function to format each of the series' labels. The `this`\n * keyword refers to the series object, or the point object in case of\n * pie charts. By default the series or point name is printed.\n *\n * @productdesc {highmaps}\n * In Highmaps the context can also be a data class in case of a\n * `colorAxis`.\n *\n * @sample {highcharts} highcharts/legend/labelformatter/\n * Add text\n * @sample {highmaps} maps/legend/labelformatter/\n * Data classes with label formatter\n *\n * @type {Highcharts.FormatterCallbackFunction<Point|Series>}\n */\n labelFormatter: function () {\n /** eslint-enable valid-jsdoc */\n return this.name;\n },\n /**\n * Line height for the legend items. Deprecated as of 2.1\\. Instead,\n * the line height for each item can be set using\n * `itemStyle.lineHeight`, and the padding between items using\n * `itemMarginTop` and `itemMarginBottom`.\n *\n * @sample {highcharts} highcharts/legend/lineheight/\n * Setting padding\n *\n * @deprecated\n *\n * @type {number}\n * @default 16\n * @since 2.0\n * @product highcharts gantt\n * @apioption legend.lineHeight\n */\n /**\n * If the plot area sized is calculated automatically and the legend is\n * not floating, the legend margin is the space between the legend and\n * the axis labels or plot area.\n *\n * @sample {highcharts} highcharts/legend/margin-default/\n * 12 pixels by default\n * @sample {highcharts} highcharts/legend/margin-30/\n * 30 pixels\n *\n * @type {number}\n * @default 12\n * @since 2.1\n * @apioption legend.margin\n */\n /**\n * Maximum pixel height for the legend. When the maximum height is\n * extended, navigation will show.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption legend.maxHeight\n */\n /**\n * The color of the drawn border around the legend.\n *\n * @see In styled mode, the legend border stroke can be applied with the\n * `.highcharts-legend-box` class.\n *\n * @sample {highcharts} highcharts/legend/bordercolor/\n * Brown border\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n borderColor: \"#999999\" /* Palette.neutralColor40 */,\n /**\n * The border corner radius of the legend.\n *\n * @sample {highcharts} highcharts/legend/borderradius-default/\n * Square by default\n * @sample {highcharts} highcharts/legend/borderradius-round/\n * 5px rounded\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n */\n borderRadius: 0,\n /**\n * Options for the paging or navigation appearing when the legend is\n * overflown. Navigation works well on screen, but not in static\n * exported images. One way of working around that is to\n * [increase the chart height in\n * export](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/legend/navigation-enabled-false/).\n */\n navigation: {\n /**\n * How to animate the pages when navigating up or down. A value of\n * `true` applies the default navigation given in the\n * `chart.animation` option. Additional options can be given as an\n * object containing values for easing and duration.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n * @default true\n * @since 2.2.4\n * @apioption legend.navigation.animation\n */\n /**\n * The pixel size of the up and down arrows in the legend paging\n * navigation.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {number}\n * @default 12\n * @since 2.2.4\n * @apioption legend.navigation.arrowSize\n */\n /**\n * Whether to enable the legend navigation. In most cases, disabling\n * the navigation results in an unwanted overflow.\n *\n * See also the\n * [adapt chart to legend](https://github.com/highcharts/adapt-chart-to-legend)\n * plugin for a solution to extend the chart height to make room for\n * the legend, optionally in exported charts only.\n *\n * @type {boolean}\n * @default true\n * @since 4.2.4\n * @apioption legend.navigation.enabled\n */\n /**\n * Text styles for the legend page navigation.\n *\n * @see In styled mode, the navigation items are styled with the\n * `.highcharts-legend-navigation` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.CSSObject}\n * @since 2.2.4\n * @apioption legend.navigation.style\n */\n /**\n * The color for the active up or down arrow in the legend page\n * navigation.\n *\n * @see In styled mode, the active arrow be styled with the\n * `.highcharts-legend-nav-active` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.4\n */\n activeColor: \"#003399\" /* Palette.highlightColor100 */,\n /**\n * The color of the inactive up or down arrow in the legend page\n * navigation. .\n *\n * @see In styled mode, the inactive arrow be styled with the\n * `.highcharts-legend-nav-inactive` class.\n *\n * @sample {highcharts} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n * @sample {highstock} highcharts/legend/navigation/\n * Legend page navigation demonstrated\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.4\n */\n inactiveColor: \"#cccccc\" /* Palette.neutralColor20 */\n },\n /**\n * The inner padding of the legend box.\n *\n * @sample {highcharts|highstock} highcharts/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n *\n * @type {number}\n * @default 8\n * @since 2.2.0\n * @apioption legend.padding\n */\n /**\n * Whether to reverse the order of the legend items compared to the\n * order of the series or points as defined in the configuration object.\n *\n * @see [yAxis.reversedStacks](#yAxis.reversedStacks),\n * [series.legendIndex](#series.legendIndex)\n *\n * @sample {highcharts} highcharts/legend/reversed/\n * Stacked bar with reversed legend\n *\n * @type {boolean}\n * @default false\n * @since 1.2.5\n * @apioption legend.reversed\n */\n /**\n * Whether to show the symbol on the right side of the text rather than\n * the left side. This is common in Arabic and Hebrew.\n *\n * @sample {highcharts} highcharts/legend/rtl/\n * Symbol to the right\n *\n * @type {boolean}\n * @default false\n * @since 2.2\n * @apioption legend.rtl\n */\n /**\n * CSS styles for the legend area. In the 1.x versions the position\n * of the legend area was determined by CSS. In 2.x, the position is\n * determined by properties like `align`, `verticalAlign`, `x` and `y`,\n * but the styles are still parsed for backwards compatibility.\n *\n * @deprecated\n *\n * @type {Highcharts.CSSObject}\n * @product highcharts highstock\n * @apioption legend.style\n */\n /**\n * CSS styles for each legend item. Only a subset of CSS is supported,\n * notably those options related to text. The default `textOverflow`\n * property makes long texts truncate. Set it to `undefined` to wrap\n * text instead. A `width` property can be added to control the text\n * width.\n *\n * @see In styled mode, the legend items can be styled with the\n * `.highcharts-legend-item` class.\n *\n * @sample {highcharts} highcharts/legend/itemstyle/\n * Bold black text\n * @sample {highmaps} maps/legend/itemstyle/\n * Item text styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#333333\", \"cursor\": \"pointer\", \"fontSize\": \"12px\", \"fontWeight\": \"bold\", \"textOverflow\": \"ellipsis\"}\n */\n itemStyle: {\n /**\n * @ignore\n */\n color: \"#333333\" /* Palette.neutralColor80 */,\n /**\n * @ignore\n */\n cursor: 'pointer',\n /**\n * @ignore\n */\n fontSize: '12px',\n /**\n * @ignore\n */\n fontWeight: 'bold',\n /**\n * @ignore\n */\n textOverflow: 'ellipsis'\n },\n /**\n * CSS styles for each legend item in hover mode. Only a subset of\n * CSS is supported, notably those options related to text. Properties\n * are inherited from `style` unless overridden here.\n *\n * @see In styled mode, the hovered legend items can be styled with\n * the `.highcharts-legend-item:hover` pesudo-class.\n *\n * @sample {highcharts} highcharts/legend/itemhoverstyle/\n * Red on hover\n * @sample {highmaps} maps/legend/itemstyle/\n * Item text styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#000000\"}\n */\n itemHoverStyle: {\n /**\n * @ignore\n */\n color: \"#000000\" /* Palette.neutralColor100 */\n },\n /**\n * CSS styles for each legend item when the corresponding series or\n * point is hidden. Only a subset of CSS is supported, notably those\n * options related to text. Properties are inherited from `style`\n * unless overridden here.\n *\n * @see In styled mode, the hidden legend items can be styled with\n * the `.highcharts-legend-item-hidden` class.\n *\n * @sample {highcharts} highcharts/legend/itemhiddenstyle/\n * Darker gray color\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"#cccccc\"}\n */\n itemHiddenStyle: {\n /**\n * @ignore\n */\n color: \"#cccccc\" /* Palette.neutralColor20 */\n },\n /**\n * Whether to apply a drop shadow to the legend. A `backgroundColor`\n * also needs to be applied for this to take effect. The shadow can be\n * an object configuration containing `color`, `offsetX`, `offsetY`,\n * `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/legend/shadow/\n * White background and drop shadow\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/border-background/\n * Border and background options\n *\n * @type {boolean|Highcharts.CSSObject}\n */\n shadow: false,\n /**\n * Default styling for the checkbox next to a legend item when\n * `showCheckbox` is true.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"width\": \"13px\", \"height\": \"13px\", \"position\":\"absolute\"}\n */\n itemCheckboxStyle: {\n /**\n * @ignore\n */\n position: 'absolute',\n /**\n * @ignore\n */\n width: '13px',\n /**\n * @ignore\n */\n height: '13px'\n },\n // itemWidth: undefined,\n /**\n * When this is true, the legend symbol width will be the same as\n * the symbol height, which in turn defaults to the font size of the\n * legend items.\n *\n * @since 5.0.0\n */\n squareSymbol: true,\n /**\n * The pixel height of the symbol for series types that use a rectangle\n * in the legend. Defaults to the font size of legend items.\n *\n * @productdesc {highmaps}\n * In Highmaps, when the symbol is the gradient of a vertical color\n * axis, the height defaults to 200.\n *\n * @sample {highmaps} maps/legend/layout-vertical-sized/\n * Sized vertical gradient\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * No distance between data classes\n *\n * @type {number}\n * @since 3.0.8\n * @apioption legend.symbolHeight\n */\n /**\n * The border radius of the symbol for series types that use a rectangle\n * in the legend. Defaults to half the `symbolHeight`.\n *\n * @sample {highcharts} highcharts/legend/symbolradius/\n * Round symbols\n * @sample {highstock} highcharts/legend/symbolradius/\n * Round symbols\n * @sample {highmaps} highcharts/legend/symbolradius/\n * Round symbols\n *\n * @type {number}\n * @since 3.0.8\n * @apioption legend.symbolRadius\n */\n /**\n * The pixel width of the legend item symbol. When the `squareSymbol`\n * option is set, this defaults to the `symbolHeight`, otherwise 16.\n *\n * @productdesc {highmaps}\n * In Highmaps, when the symbol is the gradient of a horizontal color\n * axis, the width defaults to 200.\n *\n * @sample {highcharts} highcharts/legend/symbolwidth/\n * Greater symbol width and padding\n * @sample {highmaps} maps/legend/padding-itemmargin/\n * Padding and item margins demonstrated\n * @sample {highmaps} maps/legend/layout-vertical-sized/\n * Sized vertical gradient\n *\n * @type {number}\n * @apioption legend.symbolWidth\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the legend item texts.\n *\n * Prior to 4.1.7, when using HTML, [legend.navigation](\n * #legend.navigation) was disabled.\n *\n * @type {boolean}\n * @default false\n * @apioption legend.useHTML\n */\n /**\n * For a color axis with data classes, how many decimals to render in\n * the legend. The default preserves the decimals of the range numbers.\n *\n * @type {number}\n * @default -1\n * @product highcharts highmaps\n * @apioption legend.valueDecimals\n */\n /**\n * For a color axis with data classes, a suffix for the range numbers in\n * the legend.\n *\n * @type {string}\n * @default ''\n * @product highcharts highmaps\n * @apioption legend.valueSuffix\n */\n /**\n * The width of the legend box. If a number is set, it translates to\n * pixels. Since v7.0.2 it allows setting a percent string of the full\n * chart width, for example `40%`.\n *\n * Defaults to the full chart width for legends below or above the\n * chart, half the chart width for legends to the left and right.\n *\n * @sample {highcharts} highcharts/legend/width/\n * Aligned to the plot area\n * @sample {highcharts} highcharts/legend/width-percent/\n * A percent of the chart width\n *\n * @type {number|string}\n * @since 2.0\n * @apioption legend.width\n */\n /**\n * The pixel padding between the legend item symbol and the legend\n * item text.\n *\n * @sample {highcharts} highcharts/legend/symbolpadding/\n * Greater symbol width and padding\n */\n symbolPadding: 5,\n /**\n * The vertical alignment of the legend box. Can be one of `top`,\n * `middle` or `bottom`. Vertical position can be further determined\n * by the `y` option.\n *\n * In the case that the legend is aligned in a corner position, the\n * `layout` option will determine whether to place it above/below\n * or on the side of the plot area.\n *\n * When the [layout](#legend.layout) option is `proximate`, the\n * `verticalAlign` option doesn't apply.\n *\n * @sample {highcharts} highcharts/legend/verticalalign/\n * Legend 100px from the top of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.0\n */\n verticalAlign: 'bottom',\n // width: undefined,\n /**\n * The x offset of the legend relative to its horizontal alignment\n * `align` within chart.spacingLeft and chart.spacingRight. Negative\n * x moves it to the left, positive x moves it to the right.\n *\n * @sample {highcharts} highcharts/legend/width/\n * Aligned to the plot area\n *\n * @since 2.0\n */\n x: 0,\n /**\n * The vertical offset of the legend relative to it's vertical alignment\n * `verticalAlign` within chart.spacingTop and chart.spacingBottom.\n * Negative y moves it up, positive y moves it down.\n *\n * @sample {highcharts} highcharts/legend/verticalalign/\n * Legend 100px from the top of the chart\n * @sample {highstock} stock/legend/align/\n * Various legend options\n * @sample {highmaps} maps/legend/alignment/\n * Legend alignment\n *\n * @since 2.0\n */\n y: 0,\n /**\n * A title to be added on top of the legend.\n *\n * @sample {highcharts} highcharts/legend/title/\n * Legend title\n * @sample {highmaps} maps/legend/alignment/\n * Legend with title\n *\n * @since 3.0\n */\n title: {\n /**\n * A text or HTML string for the title.\n *\n * @type {string}\n * @since 3.0\n * @apioption legend.title.text\n */\n /**\n * Generic CSS styles for the legend title.\n *\n * @see In styled mode, the legend title is styled with the\n * `.highcharts-legend-title` class.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontWeight\": \"bold\"}\n * @since 3.0\n */\n style: {\n /**\n * @ignore\n */\n fontWeight: 'bold'\n }\n }\n },\n /**\n * The loading options control the appearance of the loading screen\n * that covers the plot area on chart operations. This screen only\n * appears after an explicit call to `chart.showLoading()`. It is a\n * utility for developers to communicate to the end user that something\n * is going on, for example while retrieving new data via an XHR connection.\n * The \"Loading...\" text itself is not part of this configuration\n * object, but part of the `lang` object.\n */\n loading: {\n /**\n * The duration in milliseconds of the fade out effect.\n *\n * @sample highcharts/loading/hideduration/\n * Fade in and out over a second\n *\n * @type {number}\n * @default 100\n * @since 1.2.0\n * @apioption loading.hideDuration\n */\n /**\n * The duration in milliseconds of the fade in effect.\n *\n * @sample highcharts/loading/hideduration/\n * Fade in and out over a second\n *\n * @type {number}\n * @default 100\n * @since 1.2.0\n * @apioption loading.showDuration\n */\n /**\n * CSS styles for the loading label `span`.\n *\n * @see In styled mode, the loading label is styled with the\n * `.highcharts-loading-inner` class.\n *\n * @sample {highcharts|highmaps} highcharts/loading/labelstyle/\n * Vertically centered\n * @sample {highstock} stock/loading/general/\n * Label styles\n *\n * @type {Highcharts.CSSObject}\n * @default {\"fontWeight\": \"bold\", \"position\": \"relative\", \"top\": \"45%\"}\n * @since 1.2.0\n */\n labelStyle: {\n /**\n * @ignore\n */\n fontWeight: 'bold',\n /**\n * @ignore\n */\n position: 'relative',\n /**\n * @ignore\n */\n top: '45%'\n },\n /**\n * CSS styles for the loading screen that covers the plot area.\n *\n * In styled mode, the loading label is styled with the\n * `.highcharts-loading` class.\n *\n * @sample {highcharts|highmaps} highcharts/loading/style/\n * Gray plot area, white text\n * @sample {highstock} stock/loading/general/\n * Gray plot area, white text\n *\n * @type {Highcharts.CSSObject}\n * @default {\"position\": \"absolute\", \"backgroundColor\": \"#ffffff\", \"opacity\": 0.5, \"textAlign\": \"center\"}\n * @since 1.2.0\n */\n style: {\n /**\n * @ignore\n */\n position: 'absolute',\n /**\n * @ignore\n */\n backgroundColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * @ignore\n */\n opacity: 0.5,\n /**\n * @ignore\n */\n textAlign: 'center'\n }\n },\n /**\n * Options for the tooltip that appears when the user hovers over a\n * series or point.\n *\n * @declare Highcharts.TooltipOptions\n */\n tooltip: {\n /**\n * The color of the tooltip border. When `undefined`, the border takes\n * the color of the corresponding series or point.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * Follow series by default\n * @sample {highcharts} highcharts/tooltip/bordercolor-black/\n * Black border\n * @sample {highstock} stock/tooltip/general/\n * Styled tooltip\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption tooltip.borderColor\n */\n /**\n * A CSS class name to apply to the tooltip's container div,\n * allowing unique CSS styling for each chart.\n *\n * @type {string}\n * @apioption tooltip.className\n */\n /**\n * Since 4.1, the crosshair definitions are moved to the Axis object\n * in order for a better separation from the tooltip. See\n * [xAxis.crosshair](#xAxis.crosshair).\n *\n * @sample {highcharts} highcharts/tooltip/crosshairs-x/\n * Enable a crosshair for the x value\n *\n * @deprecated\n *\n * @type {*}\n * @default true\n * @apioption tooltip.crosshairs\n */\n /**\n * Distance from point to tooltip in pixels.\n *\n * @type {number}\n * @default 16\n * @apioption tooltip.distance\n */\n /**\n * Whether the tooltip should follow the mouse as it moves across\n * columns, pie slices and other point types with an extent.\n * By default it behaves this way for pie, polygon, map, sankey\n * and wordcloud series by override in the `plotOptions`\n * for those series types.\n *\n * Does not apply if [split](#tooltip.split) is `true`.\n *\n * For touch moves to behave the same way, [followTouchMove](\n * #tooltip.followTouchMove) must be `true` also.\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} false\n * @default {highmaps} true\n * @since 3.0\n * @apioption tooltip.followPointer\n */\n /**\n * Whether the tooltip should update as the finger moves on a touch\n * device. If this is `true` and [chart.panning](#chart.panning) is\n * set,`followTouchMove` will take over one-finger touches, so the user\n * needs to use two fingers for zooming and panning.\n *\n * Note the difference to [followPointer](#tooltip.followPointer) that\n * only defines the _position_ of the tooltip. If `followPointer` is\n * false in for example a column series, the tooltip will show above or\n * below the column, but as `followTouchMove` is true, the tooltip will\n * jump from column to column as the user swipes across the plot area.\n *\n * @type {boolean}\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n * @since 3.0.1\n * @apioption tooltip.followTouchMove\n */\n /**\n * Callback function to format the text of the tooltip from scratch. In\n * case of single or [shared](#tooltip.shared) tooltips, a string should\n * be returned. In case of [split](#tooltip.split) tooltips, it should\n * return an array where the first item is the header, and subsequent\n * items are mapped to the points. Return `false` to disable tooltip for\n * a specific point on series.\n *\n * A subset of HTML is supported. Unless `useHTML` is true, the HTML of\n * the tooltip is parsed and converted to SVG, therefore this isn't a\n * complete HTML renderer. The following HTML tags are supported: `b`,\n * `br`, `em`, `i`, `span`, `strong`. Spans can be styled with a `style`\n * attribute, but only text-related CSS, that is shared with SVG, is\n * handled.\n *\n * The available data in the formatter differ a bit depending on whether\n * the tooltip is shared or split, or belongs to a single point. In a\n * shared/split tooltip, all properties except `x`, which is common for\n * all points, are kept in an array, `this.points`.\n *\n * Available data are:\n *\n * - **this.percentage (not shared) /**\n * **this.points[i].percentage (shared)**:\n * Stacked series and pies only. The point's percentage of the total.\n *\n * - **this.point (not shared) / this.points[i].point (shared)**:\n * The point object. The point name, if defined, is available through\n * `this.point.name`.\n *\n * - **this.points**:\n * In a shared tooltip, this is an array containing all other\n * properties for each point.\n *\n * - **this.series (not shared) / this.points[i].series (shared)**:\n * The series object. The series name is available through\n * `this.series.name`.\n *\n * - **this.total (not shared) / this.points[i].total (shared)**:\n * Stacked series only. The total value at this point's x value.\n *\n * - **this.x**:\n * The x value. This property is the same regardless of the tooltip\n * being shared or not.\n *\n * - **this.y (not shared) / this.points[i].y (shared)**:\n * The y value.\n *\n * @sample {highcharts} highcharts/tooltip/formatter-simple/\n * Simple string formatting\n * @sample {highcharts} highcharts/tooltip/formatter-shared/\n * Formatting with shared tooltip\n * @sample {highcharts|highstock} highcharts/tooltip/formatter-split/\n * Formatting with split tooltip\n * @sample highcharts/tooltip/formatter-conditional-default/\n * Extending default formatter\n * @sample {highstock} stock/tooltip/formatter/\n * Formatting with shared tooltip\n * @sample {highmaps} maps/tooltip/formatter/\n * String formatting\n *\n * @type {Highcharts.TooltipFormatterCallbackFunction}\n * @apioption tooltip.formatter\n */\n /**\n * Callback function to format the text of the tooltip for\n * visible null points.\n * Works analogously to [formatter](#tooltip.formatter).\n *\n * @sample highcharts/plotoptions/series-nullformat\n * Format data label and tooltip for null point.\n *\n * @type {Highcharts.TooltipFormatterCallbackFunction}\n * @apioption tooltip.nullFormatter\n */\n /**\n * Whether to allow the tooltip to render outside the chart's SVG\n * element box. By default (`false`), the tooltip is rendered within the\n * chart's SVG element, which results in the tooltip being aligned\n * inside the chart area. For small charts, this may result in clipping\n * or overlapping. When `true`, a separate SVG element is created and\n * overlaid on the page, allowing the tooltip to be aligned inside the\n * page itself.\n *\n * Defaults to `true` if `chart.scrollablePlotArea` is activated,\n * otherwise `false`.\n *\n * @sample highcharts/tooltip/outside\n * Small charts with tooltips outside\n *\n * @type {boolean|undefined}\n * @default undefined\n * @since 6.1.1\n * @apioption tooltip.outside\n */\n /**\n * A callback function for formatting the HTML output for a single point\n * in the tooltip. Like the `pointFormat` string, but with more\n * flexibility.\n *\n * @type {Highcharts.FormatterCallbackFunction<Highcharts.Point>}\n * @since 4.1.0\n * @context Highcharts.Point\n * @apioption tooltip.pointFormatter\n */\n /**\n * A callback function to place the tooltip in a custom position. The\n * callback receives three parameters: `labelWidth`, `labelHeight` and\n * `point`, where point contains values for `plotX` and `plotY` telling\n * where the reference point is in the plot area. Add `chart.plotLeft`\n * and `chart.plotTop` to get the full coordinates.\n *\n * To find the actual hovered `Point` instance, use\n * `this.chart.hoverPoint`. For shared or split tooltips, all the hover\n * points are available in `this.chart.hoverPoints`.\n *\n * Since v7, when [tooltip.split](#tooltip.split) option is enabled,\n * positioner is called for each of the boxes separately, including\n * xAxis header. xAxis header is not a point, instead `point` argument\n * contains info: `{ plotX: Number, plotY: Number, isHeader: Boolean }`\n *\n * The return should be an object containing x and y values, for example\n * `{ x: 100, y: 100 }`.\n *\n * @sample {highcharts} highcharts/tooltip/positioner/\n * A fixed tooltip position\n * @sample {highstock} stock/tooltip/positioner/\n * A fixed tooltip position on top of the chart\n * @sample {highmaps} maps/tooltip/positioner/\n * A fixed tooltip position\n * @sample {highstock} stock/tooltip/split-positioner/\n * Split tooltip with fixed positions\n * @sample {highstock} stock/tooltip/positioner-scrollable-plotarea/\n * Scrollable plot area combined with tooltip positioner\n *\n * @type {Highcharts.TooltipPositionerCallbackFunction}\n * @since 2.2.4\n * @apioption tooltip.positioner\n */\n /**\n * Split the tooltip into one label per series, with the header close\n * to the axis. This is recommended over [shared](#tooltip.shared)\n * tooltips for charts with multiple line series, generally making them\n * easier to read. This option takes precedence over `tooltip.shared`.\n *\n * @productdesc {highstock} In Highcharts Stock, tooltips are split\n * by default since v6.0.0. Stock charts typically contain\n * multi-dimension points and multiple panes, making split tooltips\n * the preferred layout over\n * the previous `shared` tooltip.\n *\n * @sample highcharts/tooltip/split/\n * Split tooltip\n * @sample {highcharts|highstock} highcharts/tooltip/formatter-split/\n * Split tooltip and custom formatter callback\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} true\n * @since 5.0.0\n * @product highcharts highstock\n * @apioption tooltip.split\n */\n /**\n * Prevents the tooltip from switching or closing, when touched or\n * pointed.\n *\n * @sample highcharts/tooltip/stickoncontact/\n * Tooltip sticks on pointer contact\n *\n * @type {boolean}\n * @since 8.0.1\n * @apioption tooltip.stickOnContact\n */\n /**\n * Use HTML to render the contents of the tooltip instead of SVG. Using\n * HTML allows advanced formatting like tables and images in the\n * tooltip. It is also recommended for rtl languages as it works around\n * rtl bugs in early Firefox.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highcharts|highstock} highcharts/tooltip/fullhtml/\n * Full HTML tooltip\n * @sample {highmaps} maps/tooltip/usehtml/\n * Pure HTML tooltip\n *\n * @type {boolean}\n * @default false\n * @since 2.2\n * @apioption tooltip.useHTML\n */\n /**\n * How many decimals to show in each series' y value. This is\n * overridable in each series' tooltip options object. The default is to\n * preserve all decimals.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {number|undefined}\n * @since 2.2\n * @apioption tooltip.valueDecimals\n */\n /**\n * A string to prepend to each series' y value. Overridable in each\n * series' tooltip options object.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.valuePrefix\n */\n /**\n * A string to append to each series' y value. Overridable in each\n * series' tooltip options object.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n * @sample {highmaps} maps/tooltip/valuedecimals/\n * Set decimals, prefix and suffix for the value\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.valueSuffix\n */\n /**\n * The format for the date in the tooltip header if the X axis is a\n * datetime axis. The default is a best guess based on the smallest\n * distance between points in the chart.\n *\n * @sample {highcharts} highcharts/tooltip/xdateformat/\n * A different format\n *\n * @type {string}\n * @product highcharts highstock gantt\n * @apioption tooltip.xDateFormat\n */\n /**\n * How many decimals to show for the `point.change`\n * or the `point.cumulativeSum` value when the `series.compare`\n * or the `series.cumulative` option is set.\n * This is overridable in each series' tooltip options object.\n *\n * @type {number}\n * @default 2\n * @since 1.0.1\n * @product highstock\n * @apioption tooltip.changeDecimals\n */\n /**\n * Enable or disable the tooltip.\n *\n * @sample {highcharts} highcharts/tooltip/enabled/\n * Disabled\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Disable tooltip and show values on chart instead\n */\n enabled: true,\n /**\n * Enable or disable animation of the tooltip.\n *\n * @type {boolean}\n * @default true\n * @since 2.3.0\n */\n animation: svg,\n /**\n * The radius of the rounded border corners.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 5px by default\n * @sample {highcharts} highcharts/tooltip/borderradius-0/\n * Square borders\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n */\n borderRadius: 3,\n /**\n * For series on datetime axes, the date format in the tooltip's\n * header will by default be guessed based on the closest data points.\n * This member gives the default string representations used for\n * each unit. For an overview of the replacement codes, see\n * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n *\n * @see [xAxis.dateTimeLabelFormats](#xAxis.dateTimeLabelFormats)\n *\n * @type {Highcharts.Dictionary<string>}\n * @product highcharts highstock gantt\n */\n dateTimeLabelFormats: {\n /** @internal */\n millisecond: '%A, %b %e, %H:%M:%S.%L',\n /** @internal */\n second: '%A, %b %e, %H:%M:%S',\n /** @internal */\n minute: '%A, %b %e, %H:%M',\n /** @internal */\n hour: '%A, %b %e, %H:%M',\n /** @internal */\n day: '%A, %b %e, %Y',\n /** @internal */\n week: 'Week from %A, %b %e, %Y',\n /** @internal */\n month: '%B %Y',\n /** @internal */\n year: '%Y'\n },\n /**\n * A string to append to the tooltip format.\n *\n * @sample {highcharts} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @since 2.2\n */\n footerFormat: '',\n /**\n * The name of a symbol to use for the border around the tooltip\n * header. Applies only when [tooltip.split](#tooltip.split) is\n * enabled.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols` the same way as for\n * [series.marker.symbol](plotOptions.line.marker.symbol).\n *\n * @see [tooltip.shape](#tooltip.shape)\n *\n * @sample {highstock} stock/tooltip/split-positioner/\n * Different shapes for header and split boxes\n *\n * @type {Highcharts.TooltipShapeValue}\n * @validvalue [\"callout\", \"square\"]\n * @since 7.0\n */\n headerShape: 'callout',\n /**\n * The number of milliseconds to wait until the tooltip is hidden when\n * mouse out from a point or chart.\n *\n * @since 3.0\n */\n hideDelay: 500,\n /**\n * Padding inside the tooltip, in pixels.\n *\n * @since 5.0.0\n */\n padding: 8,\n /**\n * The name of a symbol to use for the border around the tooltip. Can\n * be one of: `\"callout\"`, `\"circle\"` or `\"rect\"`. When\n * [tooltip.split](#tooltip.split)\n * option is enabled, shape is applied to all boxes except header, which\n * is controlled by\n * [tooltip.headerShape](#tooltip.headerShape).\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols` the same way as for\n * [series.marker.symbol](plotOptions.line.marker.symbol).\n *\n * @type {Highcharts.TooltipShapeValue}\n * @since 4.0\n */\n shape: 'callout',\n /**\n * When the tooltip is shared, the entire plot area will capture mouse\n * movement or touch events. Tooltip texts for series types with ordered\n * data (not pie, scatter, flags etc) will be shown in a single bubble.\n * This is recommended for single series charts and for tablet/mobile\n * optimized charts.\n *\n * See also [tooltip.split](#tooltip.split), that is better suited for\n * charts with many series, especially line-type series. The\n * `tooltip.split` option takes precedence over `tooltip.shared`.\n *\n * @sample {highcharts} highcharts/tooltip/shared-false/\n * False by default\n * @sample {highcharts} highcharts/tooltip/shared-true/\n * True\n * @sample {highcharts} highcharts/tooltip/shared-x-crosshair/\n * True with x axis crosshair\n * @sample {highcharts} highcharts/tooltip/shared-true-mixed-types/\n * True with mixed series types\n *\n * @since 2.1\n * @product highcharts highstock\n */\n shared: false,\n /**\n * Proximity snap for graphs or single points. It defaults to 10 for\n * mouse-powered devices and 25 for touch devices.\n *\n * Note that in most cases the whole plot area captures the mouse\n * movement, and in these cases `tooltip.snap` doesn't make sense. This\n * applies when [stickyTracking](#plotOptions.series.stickyTracking)\n * is `true` (default) and when the tooltip is [shared](#tooltip.shared)\n * or [split](#tooltip.split).\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 10 px by default\n * @sample {highcharts} highcharts/tooltip/snap-50/\n * 50 px on graph\n *\n * @type {number}\n * @default 10/25\n * @since 1.2.0\n * @product highcharts highstock\n */\n snap: isTouchDevice ? 25 : 10,\n /**\n * The HTML of the tooltip header line. Variables are enclosed by\n * curly brackets. Available variables are `point.key`, `series.name`,\n * `series.color` and other members from the `point` and `series`\n * objects. The `point.key` variable contains the category name, x\n * value or datetime string depending on the type of axis. For datetime\n * axes, the `point.key` date format can be set using\n * `tooltip.xDateFormat`.\n *\n * @sample {highcharts} highcharts/tooltip/footerformat/\n * An HTML table in the tooltip\n * @sample {highstock} highcharts/tooltip/footerformat/\n * An HTML table in the tooltip\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @type {string}\n * @apioption tooltip.headerFormat\n */\n headerFormat: '<span style=\"font-size: 10px\">{point.key}</span><br/>',\n /**\n * The HTML of the null point's line in the tooltip. Works analogously\n * to [pointFormat](#tooltip.pointFormat).\n *\n * @sample {highcharts} highcharts/plotoptions/series-nullformat\n * Format data label and tooltip for null point.\n *\n * @type {string}\n * @apioption tooltip.nullFormat\n */\n /**\n * The HTML of the point's line in the tooltip. Variables are enclosed\n * by curly brackets. Available variables are `point.x`, `point.y`,\n * `series.name` and `series.color` and other properties on the same\n * form. Furthermore, `point.y` can be extended by the\n * `tooltip.valuePrefix` and `tooltip.valueSuffix` variables. This can\n * also be overridden for each series, which makes it a good hook for\n * displaying units.\n *\n * In styled mode, the dot is colored by a class name rather\n * than the point color.\n *\n * @sample {highcharts} highcharts/tooltip/pointformat/\n * A different point format with value suffix\n * @sample {highcharts|highstock} highcharts/tooltip/pointformat-extra-information/\n * Show extra information about points in the tooltip\n * @sample {highmaps} maps/tooltip/format/\n * Format demo\n *\n * @type {string}\n * @since 2.2\n * @apioption tooltip.pointFormat\n */\n pointFormat: '<span style=\"color:{point.color}\">\\u25CF</span> {series.name}: <b>{point.y}</b><br/>',\n /**\n * The background color or gradient for the tooltip.\n *\n * In styled mode, the stroke width is set in the\n * `.highcharts-tooltip-box` class.\n *\n * @sample {highcharts} highcharts/tooltip/backgroundcolor-solid/\n * Yellowish background\n * @sample {highcharts} highcharts/tooltip/backgroundcolor-gradient/\n * Gradient\n * @sample {highcharts} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highstock} stock/tooltip/general/\n * Custom tooltip\n * @sample {highstock} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n * @sample {highmaps} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n backgroundColor: color(\"#f7f7f7\" /* Palette.neutralColor3 */)\n // @todo: Disallow undefined as input for colors\n .setOpacity(0.85).get(),\n /**\n * The pixel width of the tooltip border.\n *\n * In styled mode, the stroke width is set in the\n * `.highcharts-tooltip-box` class.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * 2px by default\n * @sample {highcharts} highcharts/tooltip/borderwidth/\n * No border (shadow only)\n * @sample {highcharts} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highstock} stock/tooltip/general/\n * Custom tooltip\n * @sample {highstock} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n * @sample {highmaps} maps/tooltip/background-border/\n * Background and border demo\n * @sample {highmaps} highcharts/css/tooltip-border-background/\n * Tooltip in styled mode\n */\n borderWidth: 1,\n /**\n * Whether to apply a drop shadow to the tooltip.\n *\n * @sample {highcharts} highcharts/tooltip/bordercolor-default/\n * True by default\n * @sample {highcharts} highcharts/tooltip/shadow/\n * False\n * @sample {highmaps} maps/tooltip/positioner/\n * Fixed tooltip position, border and shadow disabled\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n */\n shadow: true,\n /**\n * Prevents the tooltip from switching or closing when touched or\n * pointed.\n *\n * @sample highcharts/tooltip/stickoncontact/\n * Tooltip sticks on pointer contact\n *\n * @since 8.0.1\n */\n stickOnContact: false,\n /**\n * CSS styles for the tooltip. The tooltip can also be styled through\n * the CSS class `.highcharts-tooltip`.\n *\n * Note that the default `pointerEvents` style makes the tooltip ignore\n * mouse events, so in order to use clickable tooltips, this value must\n * be set to `auto`.\n *\n * @sample {highcharts} highcharts/tooltip/style/\n * Greater padding, bold text\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#333333\" /* Palette.neutralColor80 */,\n /** @internal */\n cursor: 'default',\n /** @internal */\n fontSize: '12px',\n /** @internal */\n whiteSpace: 'nowrap'\n },\n /**\n * Use HTML to render the contents of the tooltip instead of SVG. Using\n * HTML allows advanced formatting like tables and images in the\n * tooltip. It is also recommended for rtl languages as it works around\n * rtl bugs in early Firefox.\n *\n * @sample {highcharts|highstock} highcharts/tooltip/footerformat/\n * A table for value alignment\n * @sample {highcharts|highstock} highcharts/tooltip/fullhtml/\n * Full HTML tooltip\n * @sample {highmaps} maps/tooltip/usehtml/\n * Pure HTML tooltip\n *\n * @since 2.2\n */\n useHTML: false\n },\n /**\n * Highchart by default puts a credits label in the lower right corner\n * of the chart. This can be changed using these options.\n */\n credits: {\n /**\n * Credits for map source to be concatenated with conventional credit\n * text. By default this is a format string that collects copyright\n * information from the map if available.\n *\n * @see [mapTextFull](#credits.mapTextFull)\n * @see [text](#credits.text)\n *\n * @type {string}\n * @default \\u00a9 <a href=\"{geojson.copyrightUrl}\">{geojson.copyrightShort}</a>\n * @since 4.2.2\n * @product highmaps\n * @apioption credits.mapText\n */\n /**\n * Detailed credits for map source to be displayed on hover of credits\n * text. By default this is a format string that collects copyright\n * information from the map if available.\n *\n * @see [mapText](#credits.mapText)\n * @see [text](#credits.text)\n *\n * @type {string}\n * @default {geojson.copyright}\n * @since 4.2.2\n * @product highmaps\n * @apioption credits.mapTextFull\n */\n /**\n * Whether to show the credits text.\n *\n * @sample {highcharts} highcharts/credits/enabled-false/\n * Credits disabled\n * @sample {highstock} stock/credits/enabled/\n * Credits disabled\n * @sample {highmaps} maps/credits/enabled-false/\n * Credits disabled\n */\n enabled: true,\n /**\n * The URL for the credits label.\n *\n * @sample {highcharts} highcharts/credits/href/\n * Custom URL and text\n * @sample {highmaps} maps/credits/customized/\n * Custom URL and text\n */\n href: 'https://www.highcharts.com?credits',\n /**\n * Position configuration for the credits label.\n *\n * @sample {highcharts} highcharts/credits/position-left/\n * Left aligned\n * @sample {highcharts} highcharts/credits/position-left/\n * Left aligned\n * @sample {highmaps} maps/credits/customized/\n * Left aligned\n * @sample {highmaps} maps/credits/customized/\n * Left aligned\n *\n * @type {Highcharts.AlignObject}\n * @since 2.1\n */\n position: {\n /** @internal */\n align: 'right',\n /** @internal */\n x: -10,\n /** @internal */\n verticalAlign: 'bottom',\n /** @internal */\n y: -5\n },\n /**\n * CSS styles for the credits label.\n *\n * @see In styled mode, credits styles can be set with the\n * `.highcharts-credits` class.\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n cursor: 'pointer',\n /** @internal */\n color: \"#999999\" /* Palette.neutralColor40 */,\n /** @internal */\n fontSize: '9px'\n },\n /**\n * The text for the credits label.\n *\n * @productdesc {highmaps}\n * If a map is loaded as GeoJSON, the text defaults to\n * `Highcharts @ {map-credits}`. Otherwise, it defaults to\n * `Highcharts.com`.\n *\n * @sample {highcharts} highcharts/credits/href/\n * Custom URL and text\n * @sample {highmaps} maps/credits/customized/\n * Custom URL and text\n */\n text: 'Highcharts.com'\n }\n };\n /* eslint-disable spaced-comment */\n\n defaultOptions.chart.styledMode = false;\n\n '';\n var defaultTime = new Time(merge(defaultOptions.global,\n defaultOptions.time));\n /**\n * Get the updated default options. Until 3.0.7, merely exposing defaultOptions\n * for outside modules wasn't enough because the setOptions method created a new\n * object.\n *\n * @function Highcharts.getOptions\n *\n * @return {Highcharts.Options}\n * Default options.\n */\n function getOptions() {\n return defaultOptions;\n }\n /**\n * Merge the default options with custom options and return the new options\n * structure. Commonly used for defining reusable templates.\n *\n * @sample highcharts/global/useutc-false Setting a global option\n * @sample highcharts/members/setoptions Applying a global theme\n *\n * @function Highcharts.setOptions\n *\n * @param {Highcharts.Options} options\n * The new custom chart options.\n *\n * @return {Highcharts.Options}\n * Updated options.\n */\n function setOptions(options) {\n // Copy in the default options\n merge(true, defaultOptions, options);\n // Update the time object\n if (options.time || options.global) {\n if (H.time) {\n H.time.update(merge(defaultOptions.global, defaultOptions.time, options.global, options.time));\n }\n else {\n /**\n * Global `Time` object with default options. Since v6.0.5, time\n * settings can be applied individually for each chart. If no\n * individual settings apply, this `Time` object is shared by all\n * instances.\n *\n * @name Highcharts.time\n * @type {Highcharts.Time}\n */\n H.time = defaultTime;\n }\n }\n return defaultOptions;\n }\n /* *\n *\n * Default Export\n *\n * */\n var DefaultOptions = {\n defaultOptions: defaultOptions,\n defaultTime: defaultTime,\n getOptions: getOptions,\n setOptions: setOptions\n };\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @typedef {\"plotBox\"|\"spacingBox\"} Highcharts.ButtonRelativeToValue\n */\n /**\n * Gets fired when a series is added to the chart after load time, using the\n * `addSeries` method. Returning `false` prevents the series from being added.\n *\n * @callback Highcharts.ChartAddSeriesCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.ChartAddSeriesEventObject} event\n * The event that occured.\n */\n /**\n * Contains common event information. Through the `options` property you can\n * access the series options that were passed to the `addSeries` method.\n *\n * @interface Highcharts.ChartAddSeriesEventObject\n */ /**\n * The series options that were passed to the `addSeries` method.\n * @name Highcharts.ChartAddSeriesEventObject#options\n * @type {Highcharts.SeriesOptionsType}\n */ /**\n * Prevents the default behaviour of the event.\n * @name Highcharts.ChartAddSeriesEventObject#preventDefault\n * @type {Function}\n */ /**\n * The event target.\n * @name Highcharts.ChartAddSeriesEventObject#target\n * @type {Highcharts.Chart}\n */ /**\n * The event type.\n * @name Highcharts.ChartAddSeriesEventObject#type\n * @type {\"addSeries\"}\n */\n /**\n * Gets fired when clicking on the plot background.\n *\n * @callback Highcharts.ChartClickCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.PointerEventObject} event\n * The event that occured.\n */\n /**\n * Contains an axes of the clicked spot.\n *\n * @interface Highcharts.ChartClickEventAxisObject\n */ /**\n * Axis at the clicked spot.\n * @name Highcharts.ChartClickEventAxisObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Axis value at the clicked spot.\n * @name Highcharts.ChartClickEventAxisObject#value\n * @type {number}\n */\n /**\n * Contains information about the clicked spot on the chart. Remember the unit\n * of a datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * @interface Highcharts.ChartClickEventObject\n * @extends Highcharts.PointerEventObject\n */ /**\n * Information about the x-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#xAxis\n * @type {Array<Highcharts.ChartClickEventAxisObject>}\n */ /**\n * Information about the y-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#yAxis\n * @type {Array<Highcharts.ChartClickEventAxisObject>}\n */ /**\n * Information about the z-axis on the clicked spot.\n * @name Highcharts.ChartClickEventObject#zAxis\n * @type {Array<Highcharts.ChartClickEventAxisObject>|undefined}\n */\n /**\n * Gets fired when the chart is finished loading.\n *\n * @callback Highcharts.ChartLoadCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Fires when the chart is redrawn, either after a call to `chart.redraw()` or\n * after an axis, series or point is modified with the `redraw` option set to\n * `true`.\n *\n * @callback Highcharts.ChartRedrawCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Gets fired after initial load of the chart (directly after the `load` event),\n * and after each redraw (directly after the `redraw` event).\n *\n * @callback Highcharts.ChartRenderCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * Gets fired when an area of the chart has been selected. The default action\n * for the selection event is to zoom the chart to the selected area. It can be\n * prevented by calling `event.preventDefault()` or return false.\n *\n * @callback Highcharts.ChartSelectionCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * The chart on which the event occured.\n *\n * @param {Highcharts.SelectEventObject} event\n * Event informations\n *\n * @return {boolean|undefined}\n * Return false to prevent the default action, usually zoom.\n */\n (''); // detach doclets above\n\n return DefaultOptions;\n });\n _registerModule(_modules, 'Core/Animation/Fx.js', [_modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (Color, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var win = H.win;\n var isNumber = U.isNumber,\n objectEach = U.objectEach;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /* *\n *\n * Class\n *\n * */\n /**\n * An animator object used internally. One instance applies to one property\n * (attribute or style prop) on one element. Animation is always initiated\n * through {@link SVGElement#animate}.\n *\n * @example\n * let rect = renderer.rect(0, 0, 10, 10).add();\n * rect.animate({ width: 100 });\n *\n * @private\n * @class\n * @name Highcharts.Fx\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} elem\n * The element to animate.\n *\n * @param {Partial<Highcharts.AnimationOptionsObject>} options\n * Animation options.\n *\n * @param {string} prop\n * The single attribute or CSS property to animate.\n */\n var Fx = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Fx(elem, options, prop) {\n this.pos = NaN;\n this.options = options;\n this.elem = elem;\n this.prop = prop;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the current step of a path definition on SVGElement.\n *\n * @function Highcharts.Fx#dSetter\n *\n */\n Fx.prototype.dSetter = function () {\n var paths = this.paths,\n start = paths && paths[0],\n end = paths && paths[1],\n now = this.now || 0;\n var path = [];\n // Land on the final path without adjustment points appended in the ends\n if (now === 1 || !start || !end) {\n path = this.toD || [];\n }\n else if (start.length === end.length && now < 1) {\n for (var i = 0; i < end.length; i++) {\n // Tween between the start segment and the end segment. Start\n // with a copy of the end segment and tween the appropriate\n // numerics\n var startSeg = start[i];\n var endSeg = end[i];\n var tweenSeg = [];\n for (var j = 0; j < endSeg.length; j++) {\n var startItem = startSeg[j];\n var endItem = endSeg[j];\n // Tween numbers\n if (isNumber(startItem) &&\n isNumber(endItem) &&\n // Arc boolean flags\n !(endSeg[0] === 'A' && (j === 4 || j === 5))) {\n tweenSeg[j] = startItem + now * (endItem - startItem);\n // Strings, take directly from the end segment\n }\n else {\n tweenSeg[j] = endItem;\n }\n }\n path.push(tweenSeg);\n }\n // If animation is finished or length not matching, land on right value\n }\n else {\n path = end;\n }\n this.elem.attr('d', path, void 0, true);\n };\n /**\n * Update the element with the current animation step.\n *\n * @function Highcharts.Fx#update\n *\n */\n Fx.prototype.update = function () {\n var elem = this.elem,\n prop = this.prop, // if destroyed, it is null\n now = this.now,\n step = this.options.step;\n // Animation setter defined from outside\n if (this[prop + 'Setter']) {\n this[prop + 'Setter']();\n // Other animations on SVGElement\n }\n else if (elem.attr) {\n if (elem.element) {\n elem.attr(prop, now, null, true);\n }\n // HTML styles, raw HTML content like container size\n }\n else {\n elem.style[prop] = now + this.unit;\n }\n if (step) {\n step.call(elem, now, this);\n }\n };\n /**\n * Run an animation.\n *\n * @function Highcharts.Fx#run\n *\n * @param {number} from\n * The current value, value to start from.\n *\n * @param {number} to\n * The end value, value to land on.\n *\n * @param {string} unit\n * The property unit, for example `px`.\n *\n */\n Fx.prototype.run = function (from, to, unit) {\n var self = this,\n options = self.options,\n timer = function (gotoEnd) {\n return timer.stopped ? false : self.step(gotoEnd);\n }, requestAnimationFrame = win.requestAnimationFrame ||\n function (step) {\n setTimeout(step, 13);\n }, step = function () {\n for (var i = 0; i < Fx.timers.length; i++) {\n if (!Fx.timers[i]()) {\n Fx.timers.splice(i--, 1);\n }\n }\n if (Fx.timers.length) {\n requestAnimationFrame(step);\n }\n };\n if (from === to && !this.elem['forceAnimate:' + this.prop]) {\n delete options.curAnim[this.prop];\n if (options.complete &&\n Object.keys(options.curAnim).length === 0) {\n options.complete.call(this.elem);\n }\n }\n else { // #7166\n this.startTime = +new Date();\n this.start = from;\n this.end = to;\n this.unit = unit;\n this.now = this.start;\n this.pos = 0;\n timer.elem = this.elem;\n timer.prop = this.prop;\n if (timer() && Fx.timers.push(timer) === 1) {\n requestAnimationFrame(step);\n }\n }\n };\n /**\n * Run a single step in the animation.\n *\n * @function Highcharts.Fx#step\n *\n * @param {boolean} [gotoEnd]\n * Whether to go to the endpoint of the animation after abort.\n *\n * @return {boolean}\n * Returns `true` if animation continues.\n */\n Fx.prototype.step = function (gotoEnd) {\n var t = +new Date(),\n options = this.options,\n elem = this.elem,\n complete = options.complete,\n duration = options.duration,\n curAnim = options.curAnim;\n var ret,\n done;\n if ((elem.attr) && !elem.element) { // #2616, element is destroyed\n ret = false;\n }\n else if (gotoEnd || t >= duration + this.startTime) {\n this.now = this.end;\n this.pos = 1;\n this.update();\n curAnim[this.prop] = true;\n done = true;\n objectEach(curAnim, function (val) {\n if (val !== true) {\n done = false;\n }\n });\n if (done && complete) {\n complete.call(elem);\n }\n ret = false;\n }\n else {\n this.pos = options.easing((t - this.startTime) / duration);\n this.now = this.start + ((this.end -\n this.start) * this.pos);\n this.update();\n ret = true;\n }\n return ret;\n };\n /**\n * Prepare start and end values so that the path can be animated one to one.\n *\n * @function Highcharts.Fx#initPath\n *\n * @param {Highcharts.SVGElement} elem\n * The SVGElement item.\n *\n * @param {Highcharts.SVGPathArray|undefined} fromD\n * Starting path definition.\n *\n * @param {Highcharts.SVGPathArray} toD\n * Ending path definition.\n *\n * @return {Array<Highcharts.SVGPathArray,Highcharts.SVGPathArray>}\n * An array containing start and end paths in array form so that\n * they can be animated in parallel.\n */\n Fx.prototype.initPath = function (elem, fromD, toD) {\n var startX = elem.startX,\n endX = elem.endX,\n end = toD.slice(), // copy\n isArea = elem.isArea,\n positionFactor = isArea ? 2 : 1;\n var shift,\n fullLength,\n i,\n reverse,\n start = fromD && fromD.slice(); // copy\n if (!start) {\n return [end,\n end];\n }\n /**\n * If shifting points, prepend a dummy point to the end path.\n * @private\n */\n function prepend(arr, other) {\n while (arr.length < fullLength) {\n // Move to, line to or curve to?\n var moveSegment = arr[0],\n otherSegment = other[fullLength - arr.length];\n if (otherSegment && moveSegment[0] === 'M') {\n if (otherSegment[0] === 'C') {\n arr[0] = [\n 'C',\n moveSegment[1],\n moveSegment[2],\n moveSegment[1],\n moveSegment[2],\n moveSegment[1],\n moveSegment[2]\n ];\n }\n else {\n arr[0] = ['L', moveSegment[1], moveSegment[2]];\n }\n }\n // Prepend a copy of the first point\n arr.unshift(moveSegment);\n // For areas, the bottom path goes back again to the left, so we\n // need to append a copy of the last point.\n if (isArea) {\n var z = arr.pop();\n arr.push(arr[arr.length - 1], z); // append point and the Z\n }\n }\n }\n /**\n * Copy and append last point until the length matches the end length.\n * @private\n */\n function append(arr, other) {\n while (arr.length < fullLength) {\n // Pull out the slice that is going to be appended or inserted.\n // In a line graph, the positionFactor is 1, and the last point\n // is sliced out. In an area graph, the positionFactor is 2,\n // causing the middle two points to be sliced out, since an area\n // path starts at left, follows the upper path then turns and\n // follows the bottom back.\n var segmentToAdd = arr[Math.floor(arr.length / positionFactor) - 1].slice();\n // Disable the first control point of curve segments\n if (segmentToAdd[0] === 'C') {\n segmentToAdd[1] = segmentToAdd[5];\n segmentToAdd[2] = segmentToAdd[6];\n }\n if (!isArea) {\n arr.push(segmentToAdd);\n }\n else {\n var lowerSegmentToAdd = arr[Math.floor(arr.length / positionFactor)].slice();\n arr.splice(arr.length / 2, 0, segmentToAdd, lowerSegmentToAdd);\n }\n }\n }\n // For sideways animation, find out how much we need to shift to get the\n // start path Xs to match the end path Xs.\n if (startX && endX && endX.length) {\n for (i = 0; i < startX.length; i++) {\n // Moving left, new points coming in on right\n if (startX[i] === endX[0]) {\n shift = i;\n break;\n // Moving right\n }\n else if (startX[0] ===\n endX[endX.length - startX.length + i]) {\n shift = i;\n reverse = true;\n break;\n // Fixed from the right side, \"scaling\" left\n }\n else if (startX[startX.length - 1] ===\n endX[endX.length - startX.length + i]) {\n shift = startX.length - i;\n break;\n }\n }\n if (typeof shift === 'undefined') {\n start = [];\n }\n }\n if (start.length && isNumber(shift)) {\n // The common target length for the start and end array, where both\n // arrays are padded in opposite ends\n fullLength = end.length + shift * positionFactor;\n if (!reverse) {\n prepend(end, start);\n append(start, end);\n }\n else {\n prepend(start, end);\n append(end, start);\n }\n }\n return [start, end];\n };\n /**\n * Handle animation of the color attributes directly.\n *\n * @function Highcharts.Fx#fillSetter\n *\n */\n Fx.prototype.fillSetter = function () {\n Fx.prototype.strokeSetter.apply(this, arguments);\n };\n /**\n * Handle animation of the color attributes directly.\n *\n * @function Highcharts.Fx#strokeSetter\n *\n */\n Fx.prototype.strokeSetter = function () {\n this.elem.attr(this.prop, color(this.start).tweenTo(color(this.end), this.pos), void 0, true);\n };\n /* *\n *\n * Static Properties\n *\n * */\n Fx.timers = [];\n return Fx;\n }());\n /* *\n *\n * Default Export\n *\n * */\n\n return Fx;\n });\n _registerModule(_modules, 'Core/Animation/AnimationUtilities.js', [_modules['Core/Animation/Fx.js'], _modules['Core/Utilities.js']], function (Fx, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defined = U.defined,\n getStyle = U.getStyle,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the global animation to either a given value, or fall back to the given\n * chart's animation option.\n *\n * @function Highcharts.setAnimation\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>|undefined} animation\n * The animation object.\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @todo\n * This function always relates to a chart, and sets a property on the renderer,\n * so it should be moved to the SVGRenderer.\n */\n function setAnimation(animation, chart) {\n chart.renderer.globalAnimation = pick(animation, chart.options.chart.animation, true);\n }\n /**\n * Get the animation in object form, where a disabled animation is always\n * returned as `{ duration: 0 }`.\n *\n * @function Highcharts.animObject\n *\n * @param {boolean|Highcharts.AnimationOptionsObject} [animation=0]\n * An animation setting. Can be an object with duration, complete and\n * easing properties, or a boolean to enable or disable.\n *\n * @return {Highcharts.AnimationOptionsObject}\n * An object with at least a duration property.\n */\n function animObject(animation) {\n return isObject(animation) ?\n merge({ duration: 500, defer: 0 }, animation) :\n { duration: animation ? 500 : 0, defer: 0 };\n }\n /**\n * Get the defer as a number value from series animation options.\n *\n * @function Highcharts.getDeferredAnimation\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {boolean|Highcharts.AnimationOptionsObject} animation\n * An animation setting. Can be an object with duration, complete and\n * easing properties, or a boolean to enable or disable.\n *\n * @param {Highcharts.Series} [series]\n * Series to defer animation.\n *\n * @return {number}\n * The numeric value.\n */\n function getDeferredAnimation(chart, animation, series) {\n var labelAnimation = animObject(animation),\n s = series ? [series] : chart.series;\n var defer = 0,\n duration = 0;\n s.forEach(function (series) {\n var seriesAnim = animObject(series.options.animation);\n defer = animation && defined(animation.defer) ?\n labelAnimation.defer :\n Math.max(defer, seriesAnim.duration + seriesAnim.defer);\n duration = Math.min(labelAnimation.duration, seriesAnim.duration);\n });\n // Disable defer for exporting\n if (chart.renderer.forExport) {\n defer = 0;\n }\n var anim = {\n defer: Math.max(0,\n defer - duration),\n duration: Math.min(defer,\n duration)\n };\n return anim;\n }\n /**\n * The global animate method, which uses Fx to create individual animators.\n *\n * @function Highcharts.animate\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGElement} el\n * The element to animate.\n *\n * @param {Highcharts.CSSObject|Highcharts.SVGAttributes} params\n * An object containing key-value pairs of the properties to animate.\n * Supports numeric as pixel-based CSS properties for HTML objects and\n * attributes for SVGElements.\n *\n * @param {Partial<Highcharts.AnimationOptionsObject>} [opt]\n * Animation options.\n *\n * @return {void}\n */\n function animate(el, params, opt) {\n var start,\n unit = '',\n end,\n fx,\n args;\n if (!isObject(opt)) { // Number or undefined/null\n args = arguments;\n opt = {\n duration: args[2],\n easing: args[3],\n complete: args[4]\n };\n }\n if (!isNumber(opt.duration)) {\n opt.duration = 400;\n }\n opt.easing = typeof opt.easing === 'function' ?\n opt.easing :\n (Math[opt.easing] || Math.easeInOutSine);\n opt.curAnim = merge(params);\n objectEach(params, function (val, prop) {\n // Stop current running animation of this property\n stop(el, prop);\n fx = new Fx(el, opt, prop);\n end = void 0;\n if (prop === 'd' && isArray(params.d)) {\n fx.paths = fx.initPath(el, el.pathArray, params.d);\n fx.toD = params.d;\n start = 0;\n end = 1;\n }\n else if (el.attr) {\n start = el.attr(prop);\n }\n else {\n start = parseFloat(getStyle(el, prop)) || 0;\n if (prop !== 'opacity') {\n unit = 'px';\n }\n }\n if (!end) {\n end = val;\n }\n if (typeof end === 'string' && end.match('px')) {\n end = end.replace(/px/g, ''); // #4351\n }\n fx.run(start, end, unit);\n });\n }\n /**\n * Stop running animation.\n *\n * @function Highcharts.stop\n *\n * @param {Highcharts.SVGElement} el\n * The SVGElement to stop animation on.\n *\n * @param {string} [prop]\n * The property to stop animating. If given, the stop method will stop a\n * single property from animating, while others continue.\n *\n * @return {void}\n *\n * @todo\n * A possible extension to this would be to stop a single property, when\n * we want to continue animating others. Then assign the prop to the timer\n * in the Fx.run method, and check for the prop here. This would be an\n * improvement in all cases where we stop the animation from .attr. Instead of\n * stopping everything, we can just stop the actual attributes we're setting.\n */\n function stop(el, prop) {\n var i = Fx.timers.length;\n // Remove timers related to this element (#4519)\n while (i--) {\n if (Fx.timers[i].elem === el && (!prop || prop === Fx.timers[i].prop)) {\n Fx.timers[i].stopped = true; // #4667\n }\n }\n }\n var animationExports = {\n animate: animate,\n animObject: animObject,\n getDeferredAnimation: getDeferredAnimation,\n setAnimation: setAnimation,\n stop: stop\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return animationExports;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/AST.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {\n /* *\n *\n * (c) 2010-2020 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var SVG_NS = H.SVG_NS,\n win = H.win;\n var attr = U.attr,\n createElement = U.createElement,\n css = U.css,\n error = U.error,\n isFunction = U.isFunction,\n isString = U.isString,\n objectEach = U.objectEach,\n splat = U.splat;\n var trustedTypes = win.trustedTypes;\n /* *\n *\n * Constants\n *\n * */\n // Create the trusted type policy. This should not be exposed.\n var trustedTypesPolicy = (trustedTypes &&\n isFunction(trustedTypes.createPolicy) &&\n trustedTypes.createPolicy('highcharts', {\n createHTML: function (s) { return s; }\n }));\n var emptyHTML = trustedTypesPolicy ?\n trustedTypesPolicy.createHTML('') :\n '';\n // In IE8, DOMParser is undefined. IE9 and PhantomJS are only able to parse XML.\n var hasValidDOMParser = (function () {\n try {\n return Boolean(new DOMParser().parseFromString(emptyHTML, 'text/html'));\n }\n catch (e) {\n return false;\n }\n }());\n /* *\n *\n * Class\n *\n * */\n /**\n * The AST class represents an abstract syntax tree of HTML or SVG content. It\n * can take HTML as an argument, parse it, optionally transform it to SVG, then\n * perform sanitation before inserting it into the DOM.\n *\n * @class\n * @name Highcharts.AST\n *\n * @param {string|Array<Highcharts.ASTNode>} source\n * Either an HTML string or an ASTNode list to populate the tree.\n */\n var AST = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n // Construct an AST from HTML markup, or wrap an array of existing AST nodes\n function AST(source) {\n this.nodes = typeof source === 'string' ?\n this.parseMarkup(source) : source;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Filter an object of SVG or HTML attributes against the allow list.\n *\n * @static\n *\n * @function Highcharts.AST#filterUserAttributes\n *\n * @param {Highcharts.SVGAttributes} attributes The attributes to filter\n *\n * @return {Highcharts.SVGAttributes}\n * The filtered attributes\n */\n AST.filterUserAttributes = function (attributes) {\n objectEach(attributes, function (val, key) {\n var valid = true;\n if (AST.allowedAttributes.indexOf(key) === -1) {\n valid = false;\n }\n if (['background', 'dynsrc', 'href', 'lowsrc', 'src']\n .indexOf(key) !== -1) {\n valid = isString(val) && AST.allowedReferences.some(function (ref) { return val.indexOf(ref) === 0; });\n }\n if (!valid) {\n error(33, false, void 0, {\n 'Invalid attribute in config': \"\".concat(key)\n });\n delete attributes[key];\n }\n // #17753, < is not allowed in SVG attributes\n if (isString(val) && attributes[key]) {\n attributes[key] = val.replace(/</g, '<');\n }\n });\n return attributes;\n };\n AST.parseStyle = function (style) {\n return style\n .split(';')\n .reduce(function (styles, line) {\n var pair = line.split(':').map(function (s) { return s.trim(); }),\n key = pair.shift();\n if (key && pair.length) {\n styles[key.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); })] = pair.join(':'); // #17146\n }\n return styles;\n }, {});\n };\n /**\n * Utility function to set html content for an element by passing in a\n * markup string. The markup is safely parsed by the AST class to avoid\n * XSS vulnerabilities. This function should be used instead of setting\n * `innerHTML` in all cases where the content is not fully trusted.\n *\n * @static\n * @function Highcharts.AST#setElementHTML\n *\n * @param {SVGDOMElement|HTMLDOMElement} el\n * Node to set content of.\n *\n * @param {string} html\n * Markup string\n */\n AST.setElementHTML = function (el, html) {\n el.innerHTML = AST.emptyHTML; // Clear previous\n if (html) {\n var ast = new AST(html);\n ast.addToDOM(el);\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Add the tree defined as a hierarchical JS structure to the DOM\n *\n * @function Highcharts.AST#addToDOM\n *\n * @param {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement} parent\n * The node where it should be added\n *\n * @return {Highcharts.HTMLDOMElement|Highcharts.SVGDOMElement}\n * The inserted node.\n */\n AST.prototype.addToDOM = function (parent) {\n /**\n * @private\n * @param {Highcharts.ASTNode} subtree\n * HTML/SVG definition\n * @param {Element} [subParent]\n * parent node\n * @return {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement}\n * The inserted node.\n */\n function recurse(subtree, subParent) {\n var ret;\n splat(subtree).forEach(function (item) {\n var tagName = item.tagName;\n var textNode = item.textContent ?\n H.doc.createTextNode(item.textContent) :\n void 0;\n // Whether to ignore the AST filtering totally, #15345\n var bypassHTMLFiltering = AST.bypassHTMLFiltering;\n var node;\n if (tagName) {\n if (tagName === '#text') {\n node = textNode;\n }\n else if (AST.allowedTags.indexOf(tagName) !== -1 ||\n bypassHTMLFiltering) {\n var NS = tagName === 'svg' ?\n SVG_NS :\n (subParent.namespaceURI || SVG_NS);\n var element = H.doc.createElementNS(NS,\n tagName);\n var attributes_1 = item.attributes || {};\n // Apply attributes from root of AST node, legacy from\n // from before TextBuilder\n objectEach(item, function (val, key) {\n if (key !== 'tagName' &&\n key !== 'attributes' &&\n key !== 'children' &&\n key !== 'style' &&\n key !== 'textContent') {\n attributes_1[key] = val;\n }\n });\n attr(element, bypassHTMLFiltering ?\n attributes_1 :\n AST.filterUserAttributes(attributes_1));\n if (item.style) {\n css(element, item.style);\n }\n // Add text content\n if (textNode) {\n element.appendChild(textNode);\n }\n // Recurse\n recurse(item.children || [], element);\n node = element;\n }\n else {\n error(33, false, void 0, {\n 'Invalid tagName in config': tagName\n });\n }\n }\n // Add to the tree\n if (node) {\n subParent.appendChild(node);\n }\n ret = node;\n });\n // Return last node added (on top level it's the only one)\n return ret;\n }\n return recurse(this.nodes, parent);\n };\n /**\n * Parse HTML/SVG markup into AST Node objects. Used internally from the\n * constructor.\n *\n * @private\n *\n * @function Highcharts.AST#getNodesFromMarkup\n *\n * @param {string} markup The markup string.\n *\n * @return {Array<Highcharts.ASTNode>} The parsed nodes.\n */\n AST.prototype.parseMarkup = function (markup) {\n var nodes = [];\n markup = markup\n .trim()\n // The style attribute throws a warning when parsing when CSP is\n // enabled (#6884), so use an alias and pick it up below\n // Make all quotation marks parse correctly to DOM (#17627)\n .replace(/ style=([\"'])/g, ' data-style=$1');\n var doc;\n if (hasValidDOMParser) {\n doc = new DOMParser().parseFromString(trustedTypesPolicy ?\n trustedTypesPolicy.createHTML(markup) :\n markup, 'text/html');\n }\n else {\n var body = createElement('div');\n body.innerHTML = markup;\n doc = { body: body };\n }\n var appendChildNodes = function (node,\n addTo) {\n var tagName = node.nodeName.toLowerCase();\n // Add allowed tags\n var astNode = {\n tagName: tagName\n };\n if (tagName === '#text') {\n astNode.textContent = node.textContent || '';\n }\n var parsedAttributes = node.attributes;\n // Add attributes\n if (parsedAttributes) {\n var attributes_2 = {};\n [].forEach.call(parsedAttributes, function (attrib) {\n if (attrib.name === 'data-style') {\n astNode.style = AST.parseStyle(attrib.value);\n }\n else {\n attributes_2[attrib.name] = attrib.value;\n }\n });\n astNode.attributes = attributes_2;\n }\n // Handle children\n if (node.childNodes.length) {\n var children_1 = [];\n [].forEach.call(node.childNodes, function (childNode) {\n appendChildNodes(childNode, children_1);\n });\n if (children_1.length) {\n astNode.children = children_1;\n }\n }\n addTo.push(astNode);\n };\n [].forEach.call(doc.body.childNodes, function (childNode) { return appendChildNodes(childNode, nodes); });\n return nodes;\n };\n /* *\n *\n * Static Properties\n *\n * */\n /**\n * The list of allowed SVG or HTML attributes, used for sanitizing\n * potentially harmful content from the chart configuration before adding to\n * the DOM.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedAttributes)\n *\n * @example\n * // Allow a custom, trusted attribute\n * Highcharts.AST.allowedAttributes.push('data-value');\n *\n * @name Highcharts.AST.allowedAttributes\n * @type {Array<string>}\n */\n AST.allowedAttributes = [\n 'aria-controls',\n 'aria-describedby',\n 'aria-expanded',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-label',\n 'aria-labelledby',\n 'aria-live',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-roledescription',\n 'aria-selected',\n 'class',\n 'clip-path',\n 'color',\n 'colspan',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'disabled',\n 'fill',\n 'height',\n 'href',\n 'id',\n 'in',\n 'markerHeight',\n 'markerWidth',\n 'offset',\n 'opacity',\n 'orient',\n 'padding',\n 'paddingLeft',\n 'paddingRight',\n 'patternUnits',\n 'r',\n 'refX',\n 'refY',\n 'role',\n 'scope',\n 'slope',\n 'src',\n 'startOffset',\n 'stdDeviation',\n 'stroke',\n 'stroke-linecap',\n 'stroke-width',\n 'style',\n 'tableValues',\n 'result',\n 'rowspan',\n 'summary',\n 'target',\n 'tabindex',\n 'text-align',\n 'text-anchor',\n 'textAnchor',\n 'textLength',\n 'title',\n 'type',\n 'valign',\n 'width',\n 'x',\n 'x1',\n 'x2',\n 'xlink:href',\n 'y',\n 'y1',\n 'y2',\n 'zIndex'\n ];\n /**\n * The list of allowed references for referring attributes like `href` and\n * `src`. Attribute values will only be allowed if they start with one of\n * these strings.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedReferences)\n *\n * @example\n * // Allow tel:\n * Highcharts.AST.allowedReferences.push('tel:');\n *\n * @name Highcharts.AST.allowedReferences\n * @type {Array<string>}\n */\n AST.allowedReferences = [\n 'https://',\n 'http://',\n 'mailto:',\n '/',\n '../',\n './',\n '#'\n ];\n /**\n * The list of allowed SVG or HTML tags, used for sanitizing potentially\n * harmful content from the chart configuration before adding to the DOM.\n *\n * @see [Source code with default values](\n * https://github.com/highcharts/highcharts/blob/master/ts/Core/Renderer/HTML/AST.ts#:~:text=public%20static%20allowedTags)\n *\n * @example\n * // Allow a custom, trusted tag\n * Highcharts.AST.allowedTags.push('blink'); // ;)\n *\n * @name Highcharts.AST.allowedTags\n * @type {Array<string>}\n */\n AST.allowedTags = [\n 'a',\n 'abbr',\n 'b',\n 'br',\n 'button',\n 'caption',\n 'circle',\n 'clipPath',\n 'code',\n 'dd',\n 'defs',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'feComponentTransfer',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feOffset',\n 'feMerge',\n 'feMergeNode',\n 'filter',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'hr',\n 'i',\n 'img',\n 'li',\n 'linearGradient',\n 'marker',\n 'ol',\n 'p',\n 'path',\n 'pattern',\n 'pre',\n 'rect',\n 'small',\n 'span',\n 'stop',\n 'strong',\n 'style',\n 'sub',\n 'sup',\n 'svg',\n 'table',\n 'text',\n 'textPath',\n 'thead',\n 'title',\n 'tbody',\n 'tspan',\n 'td',\n 'th',\n 'tr',\n 'u',\n 'ul',\n '#text'\n ];\n AST.emptyHTML = emptyHTML;\n /**\n * Allow all custom SVG and HTML attributes, references and tags (together\n * with potentially harmful ones) to be added to the DOM from the chart\n * configuration. In other words, disable the the allow-listing which is the\n * primary functionality of the AST.\n *\n * WARNING: Setting this property to `true` while allowing untrusted user\n * data in the chart configuration will expose your application to XSS\n * security risks!\n *\n * Note that in case you want to allow a known set of tags or attributes,\n * you should allow-list them instead of disabling the filtering totally.\n * See [allowedAttributes](Highcharts.AST#.allowedAttributes),\n * [allowedReferences](Highcharts.AST#.allowedReferences) and\n * [allowedTags](Highcharts.AST#.allowedTags). The `bypassHTMLFiltering`\n * setting is intended only for those cases where allow-listing is not\n * practical, and the chart configuration already comes from a secure\n * source.\n *\n * @example\n * // Allow all custom attributes, references and tags (disable DOM XSS\n * // filtering)\n * Highcharts.AST.bypassHTMLFiltering = true;\n *\n * @name Highcharts.AST.bypassHTMLFiltering\n * @static\n */\n AST.bypassHTMLFiltering = false;\n return AST;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Serialized form of an SVG/HTML definition, including children.\n *\n * @interface Highcharts.ASTNode\n */ /**\n * @name Highcharts.ASTNode#attributes\n * @type {Highcharts.SVGAttributes|undefined}\n */ /**\n * @name Highcharts.ASTNode#children\n * @type {Array<Highcharts.ASTNode>|undefined}\n */ /**\n * @name Highcharts.ASTNode#tagName\n * @type {string|undefined}\n */ /**\n * @name Highcharts.ASTNode#textContent\n * @type {string|undefined}\n */\n (''); // keeps doclets above in file\n\n return AST;\n });\n _registerModule(_modules, 'Core/FormatUtilities.js', [_modules['Core/Defaults.js'], _modules['Core/Utilities.js']], function (D, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions,\n defaultTime = D.defaultTime;\n var getNestedProperty = U.getNestedProperty,\n isNumber = U.isNumber,\n pick = U.pick,\n pInt = U.pInt;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Formats a JavaScript date timestamp (milliseconds since Jan 1st 1970) into a\n * human readable date string. The format is a subset of the formats for PHP's\n * [strftime](https://www.php.net/manual/en/function.strftime.php) function.\n * Additional formats can be given in the {@link Highcharts.dateFormats} hook.\n *\n * Since v6.0.5, all internal dates are formatted through the\n * {@link Highcharts.Chart#time} instance to respect chart-level time settings.\n * The `Highcharts.dateFormat` function only reflects global time settings set\n * with `setOptions`.\n *\n * Supported format keys:\n * - `%a`: Short weekday, like 'Mon'\n * - `%A`: Long weekday, like 'Monday'\n * - `%d`: Two digit day of the month, 01 to 31\n * - `%e`: Day of the month, 1 through 31\n * - `%w`: Day of the week, 0 through 6\n * - `%b`: Short month, like 'Jan'\n * - `%B`: Long month, like 'January'\n * - `%m`: Two digit month number, 01 through 12\n * - `%y`: Two digits year, like 09 for 2009\n * - `%Y`: Four digits year, like 2009\n * - `%H`: Two digits hours in 24h format, 00 through 23\n * - `%k`: Hours in 24h format, 0 through 23\n * - `%I`: Two digits hours in 12h format, 00 through 11\n * - `%l`: Hours in 12h format, 1 through 12\n * - `%M`: Two digits minutes, 00 through 59\n * - `%p`: Upper case AM or PM\n * - `%P`: Lower case AM or PM\n * - `%S`: Two digits seconds, 00 through 59\n * - `%L`: Milliseconds (naming from Ruby)\n *\n * @function Highcharts.dateFormat\n *\n * @param {string} format\n * The desired format where various time representations are prefixed\n * with `%`.\n *\n * @param {number} timestamp\n * The JavaScript timestamp.\n *\n * @param {boolean} [capitalize=false]\n * Upper case first letter in the return.\n *\n * @return {string}\n * The formatted date.\n */\n function dateFormat(format, timestamp, capitalize) {\n return defaultTime.dateFormat(format, timestamp, capitalize);\n }\n /**\n * Format a string according to a subset of the rules of Python's String.format\n * method.\n *\n * @example\n * let s = Highcharts.format(\n * 'The {color} fox was {len:.2f} feet long',\n * { color: 'red', len: Math.PI }\n * );\n * // => The red fox was 3.14 feet long\n *\n * @function Highcharts.format\n *\n * @param {string} str\n * The string to format.\n *\n * @param {Record<string, *>} ctx\n * The context, a collection of key-value pairs where each key is\n * replaced by its value.\n *\n * @param {Highcharts.Chart} [chart]\n * A `Chart` instance used to get numberFormatter and time.\n *\n * @return {string}\n * The formatted string.\n */\n function format(str, ctx, chart) {\n var splitter = '{',\n isInside = false,\n segment,\n valueAndFormat,\n val,\n index;\n var floatRegex = /f$/;\n var decRegex = /\\.([0-9])/;\n var lang = defaultOptions.lang;\n var time = chart && chart.time || defaultTime;\n var numberFormatter = chart && chart.numberFormatter || numberFormat;\n var ret = [];\n while (str) {\n index = str.indexOf(splitter);\n if (index === -1) {\n break;\n }\n segment = str.slice(0, index);\n if (isInside) { // we're on the closing bracket looking back\n valueAndFormat = segment.split(':');\n val = getNestedProperty(valueAndFormat.shift() || '', ctx);\n // Format the replacement\n if (valueAndFormat.length && typeof val === 'number') {\n segment = valueAndFormat.join(':');\n if (floatRegex.test(segment)) { // float\n var decimals = parseInt((segment.match(decRegex) || ['', '-1'])[1], 10);\n if (val !== null) {\n val = numberFormatter(val, decimals, lang.decimalPoint, segment.indexOf(',') > -1 ? lang.thousandsSep : '');\n }\n }\n else {\n val = time.dateFormat(segment, val);\n }\n }\n // Push the result and advance the cursor\n ret.push(val);\n }\n else {\n ret.push(segment);\n }\n str = str.slice(index + 1); // the rest\n isInside = !isInside; // toggle\n splitter = isInside ? '}' : '{'; // now look for next matching bracket\n }\n ret.push(str);\n return ret.join('');\n }\n /**\n * Format a number and return a string based on input settings.\n *\n * @sample highcharts/members/highcharts-numberformat/\n * Custom number format\n *\n * @function Highcharts.numberFormat\n *\n * @param {number} number\n * The input number to format.\n *\n * @param {number} decimals\n * The amount of decimals. A value of -1 preserves the amount in the\n * input number.\n *\n * @param {string} [decimalPoint]\n * The decimal point, defaults to the one given in the lang options, or\n * a dot.\n *\n * @param {string} [thousandsSep]\n * The thousands separator, defaults to the one given in the lang\n * options, or a space character.\n *\n * @return {string}\n * The formatted number.\n */\n function numberFormat(number, decimals, decimalPoint, thousandsSep) {\n number = +number || 0;\n decimals = +decimals;\n var ret,\n fractionDigits;\n var lang = defaultOptions.lang, origDec = (number.toString().split('.')[1] || '').split('e')[0].length, exponent = number.toString().split('e'), firstDecimals = decimals;\n if (decimals === -1) {\n // Preserve decimals. Not huge numbers (#3793).\n decimals = Math.min(origDec, 20);\n }\n else if (!isNumber(decimals)) {\n decimals = 2;\n }\n else if (decimals && exponent[1] && exponent[1] < 0) {\n // Expose decimals from exponential notation (#7042)\n fractionDigits = decimals + +exponent[1];\n if (fractionDigits >= 0) {\n // remove too small part of the number while keeping the notation\n exponent[0] = (+exponent[0]).toExponential(fractionDigits)\n .split('e')[0];\n decimals = fractionDigits;\n }\n else {\n // fractionDigits < 0\n exponent[0] = exponent[0].split('.')[0] || 0;\n if (decimals < 20) {\n // use number instead of exponential notation (#7405)\n number = (exponent[0] * Math.pow(10, exponent[1]))\n .toFixed(decimals);\n }\n else {\n // or zero\n number = 0;\n }\n exponent[1] = 0;\n }\n }\n // Add another decimal to avoid rounding errors of float numbers. (#4573)\n // Then use toFixed to handle rounding.\n var roundedNumber = (Math.abs(exponent[1] ? exponent[0] : number) +\n Math.pow(10, -Math.max(decimals,\n origDec) - 1)).toFixed(decimals);\n // A string containing the positive integer component of the number\n var strinteger = String(pInt(roundedNumber));\n // Leftover after grouping into thousands. Can be 0, 1 or 2.\n var thousands = strinteger.length > 3 ? strinteger.length % 3 : 0;\n // Language\n decimalPoint = pick(decimalPoint, lang.decimalPoint);\n thousandsSep = pick(thousandsSep, lang.thousandsSep);\n // Start building the return\n ret = number < 0 ? '-' : '';\n // Add the leftover after grouping into thousands. For example, in the\n // number 42 000 000, this line adds 42.\n ret += thousands ? strinteger.substr(0, thousands) + thousandsSep : '';\n if (+exponent[1] < 0 && !firstDecimals) {\n ret = '0';\n }\n else {\n // Add the remaining thousands groups, joined by the thousands separator\n ret += strinteger\n .substr(thousands)\n .replace(/(\\d{3})(?=\\d)/g, '$1' + thousandsSep);\n }\n // Add the decimal point and the decimal component\n if (decimals) {\n // Get the decimal component\n ret += decimalPoint + roundedNumber.slice(-decimals);\n }\n if (exponent[1] && +ret !== 0) {\n ret += 'e' + exponent[1];\n }\n return ret;\n }\n /* *\n *\n * Default Export\n *\n * */\n var FormatUtilities = {\n dateFormat: dateFormat,\n format: format,\n numberFormat: numberFormat\n };\n\n return FormatUtilities;\n });\n _registerModule(_modules, 'Core/Renderer/RendererUtilities.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Imports\n *\n * */\n var clamp = U.clamp,\n pick = U.pick,\n stableSort = U.stableSort;\n /* *\n *\n * Namespace\n *\n * */\n var RendererUtilities;\n (function (RendererUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * General distribution algorithm for distributing labels of differing size\n * along a confined length in two dimensions. The algorithm takes an array\n * of objects containing a size, a target and a rank. It will place the\n * labels as close as possible to their targets, skipping the lowest ranked\n * labels if necessary.\n * @private\n */\n function distribute(boxes, len, maxDistance) {\n // Original array will be altered with added .pos\n var origBoxes = boxes,\n reducedLen = origBoxes.reducedLen || len,\n sortByRank = function (a,\n b) {\n return (b.rank || 0) - (a.rank || 0);\n }, sortByTarget = function (a, b) {\n return a.target - b.target;\n };\n var i,\n overlapping = true,\n restBoxes = [], // The outranked overshoot\n box,\n target,\n total = 0;\n // If the total size exceeds the len, remove those boxes with the lowest\n // rank\n i = boxes.length;\n while (i--) {\n total += boxes[i].size;\n }\n // Sort by rank, then slice away overshoot\n if (total > reducedLen) {\n stableSort(boxes, sortByRank);\n i = 0;\n total = 0;\n while (total <= reducedLen) {\n total += boxes[i].size;\n i++;\n }\n restBoxes = boxes.splice(i - 1, boxes.length);\n }\n // Order by target\n stableSort(boxes, sortByTarget);\n // So far we have been mutating the original array. Now\n // create a copy with target arrays\n boxes = boxes.map(function (box) { return ({\n size: box.size,\n targets: [box.target],\n align: pick(box.align, 0.5)\n }); });\n while (overlapping) {\n // Initial positions: target centered in box\n i = boxes.length;\n while (i--) {\n box = boxes[i];\n // Composite box, average of targets\n target = (Math.min.apply(0, box.targets) +\n Math.max.apply(0, box.targets)) / 2;\n box.pos = clamp(target - box.size * box.align, 0, len - box.size);\n }\n // Detect overlap and join boxes\n i = boxes.length;\n overlapping = false;\n while (i--) {\n // Overlap\n if (i > 0 &&\n boxes[i - 1].pos + boxes[i - 1].size >\n boxes[i].pos) {\n // Add this size to the previous box\n boxes[i - 1].size += boxes[i].size;\n boxes[i - 1].targets = boxes[i - 1]\n .targets\n .concat(boxes[i].targets);\n boxes[i - 1].align = 0.5;\n // Overlapping right, push left\n if (boxes[i - 1].pos + boxes[i - 1].size > len) {\n boxes[i - 1].pos = len - boxes[i - 1].size;\n }\n boxes.splice(i, 1); // Remove this item\n overlapping = true;\n }\n }\n }\n // Add the rest (hidden boxes)\n origBoxes.push.apply(origBoxes, restBoxes);\n // Now the composite boxes are placed, we need to put the original boxes\n // within them\n i = 0;\n boxes.some(function (box) {\n var posInCompositeBox = 0;\n // Exceeded maxDistance => abort\n return (box.targets || []).some(function () {\n origBoxes[i].pos = box.pos + posInCompositeBox;\n // If the distance between the position and the target exceeds\n // maxDistance, abort the loop and decrease the length in\n // increments of 10% to recursively reduce the number of\n // visible boxes by rank. Once all boxes are within the\n // maxDistance, we're good.\n if (typeof maxDistance !== 'undefined' &&\n Math.abs(origBoxes[i].pos - origBoxes[i].target) > maxDistance) {\n // Reset the positions that are already set\n origBoxes\n .slice(0, i + 1)\n .forEach(function (box) { return delete box.pos; });\n // Try with a smaller length\n origBoxes.reducedLen =\n (origBoxes.reducedLen || len) - (len * 0.1);\n // Recurse\n if (origBoxes.reducedLen > len * 0.1) {\n distribute(origBoxes, len, maxDistance);\n }\n // Exceeded maxDistance => abort\n return true;\n }\n posInCompositeBox += origBoxes[i].size;\n i++;\n return false;\n });\n });\n // Add the rest (hidden) boxes and sort by target\n stableSort(origBoxes, sortByTarget);\n return origBoxes;\n }\n RendererUtilities.distribute = distribute;\n })(RendererUtilities || (RendererUtilities = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return RendererUtilities;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGElement.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (A, Color, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animate = A.animate,\n animObject = A.animObject,\n stop = A.stop;\n var deg2rad = H.deg2rad,\n doc = H.doc,\n noop = H.noop,\n svg = H.svg,\n SVG_NS = H.SVG_NS,\n win = H.win;\n var addEvent = U.addEvent,\n attr = U.attr,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n erase = U.erase,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isFunction = U.isFunction,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n pInt = U.pInt,\n removeEvent = U.removeEvent,\n syncTimeout = U.syncTimeout,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The SVGElement prototype is a JavaScript wrapper for SVG elements used in the\n * rendering layer of Highcharts. Combined with the\n * {@link Highcharts.SVGRenderer}\n * object, these prototypes allow freeform annotation in the charts or even in\n * HTML pages without instanciating a chart. The SVGElement can also wrap HTML\n * labels, when `text` or `label` elements are created with the `useHTML`\n * parameter.\n *\n * The SVGElement instances are created through factory functions on the\n * {@link Highcharts.SVGRenderer}\n * object, like\n * {@link Highcharts.SVGRenderer#rect|rect},\n * {@link Highcharts.SVGRenderer#path|path},\n * {@link Highcharts.SVGRenderer#text|text},\n * {@link Highcharts.SVGRenderer#label|label},\n * {@link Highcharts.SVGRenderer#g|g}\n * and more.\n *\n * @class\n * @name Highcharts.SVGElement\n */\n var SVGElement = /** @class */ (function () {\n function SVGElement() {\n /* *\n *\n * Properties\n *\n * */\n this.element = void 0;\n this.onEvents = {};\n this.opacity = 1; // Default base for animation\n this.renderer = void 0;\n this.SVG_NS = SVG_NS;\n // Custom attributes used for symbols, these should be filtered out when\n // setting SVGElement attributes (#9375).\n this.symbolCustomAttribs = [\n 'x',\n 'y',\n 'width',\n 'height',\n 'r',\n 'start',\n 'end',\n 'innerR',\n 'anchorX',\n 'anchorY',\n 'rounded'\n ];\n }\n // @todo public zIndex?: number;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the current value of an attribute or pseudo attribute,\n * used mainly for animation. Called internally from\n * the {@link Highcharts.SVGRenderer#attr} function.\n *\n * @private\n * @function Highcharts.SVGElement#_defaultGetter\n *\n * @param {string} key\n * Property key.\n *\n * @return {number|string}\n * Property value.\n */\n SVGElement.prototype._defaultGetter = function (key) {\n var ret = pick(this[key + 'Value'], // align getter\n this[key],\n this.element ? this.element.getAttribute(key) : null, 0);\n if (/^[\\-0-9\\.]+$/.test(ret)) { // is numerical\n ret = parseFloat(ret);\n }\n return ret;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#_defaultSetter\n *\n * @param {string} value\n *\n * @param {string} key\n *\n * @param {Highcharts.SVGDOMElement} element\n *\n */\n SVGElement.prototype._defaultSetter = function (value, key, element) {\n element.setAttribute(key, value);\n };\n /**\n * Add the element to the DOM. All elements must be added this way.\n *\n * @sample highcharts/members/renderer-g\n * Elements added to a group\n *\n * @function Highcharts.SVGElement#add\n *\n * @param {Highcharts.SVGElement} [parent]\n * The parent item to add it to. If undefined, the element is added\n * to the {@link Highcharts.SVGRenderer.box}.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.add = function (parent) {\n var renderer = this.renderer,\n element = this.element;\n var inserted;\n if (parent) {\n this.parentGroup = parent;\n }\n // Build formatted text\n if (typeof this.textStr !== 'undefined' &&\n this.element.nodeName === 'text' // Not for SVGLabel instances\n ) {\n renderer.buildText(this);\n }\n // Mark as added\n this.added = true;\n // If we're adding to renderer root, or other elements in the group\n // have a z index, we need to handle it\n if (!parent || parent.handleZ || this.zIndex) {\n inserted = this.zIndexSetter();\n }\n // If zIndex is not handled, append at the end\n if (!inserted) {\n (parent ?\n parent.element :\n renderer.box).appendChild(element);\n }\n // fire an event for internal hooks\n if (this.onAdd) {\n this.onAdd();\n }\n return this;\n };\n /**\n * Add a class name to an element.\n *\n * @function Highcharts.SVGElement#addClass\n *\n * @param {string} className\n * The new class name to add.\n *\n * @param {boolean} [replace=false]\n * When true, the existing class name(s) will be overwritten with the new\n * one. When false, the new one is added.\n *\n * @return {Highcharts.SVGElement}\n * Return the SVG element for chainability.\n */\n SVGElement.prototype.addClass = function (className, replace) {\n var currentClassName = replace ? '' : (this.attr('class') || '');\n // Trim the string and remove duplicates\n className = (className || '')\n .split(/ /g)\n .reduce(function (newClassName, name) {\n if (currentClassName.indexOf(name) === -1) {\n newClassName.push(name);\n }\n return newClassName;\n }, (currentClassName ?\n [currentClassName] :\n []))\n .join(' ');\n if (className !== currentClassName) {\n this.attr('class', className);\n }\n return this;\n };\n /**\n * This method is executed in the end of `attr()`, after setting all\n * attributes in the hash. In can be used to efficiently consolidate\n * multiple attributes in one SVG property -- e.g., translate, rotate and\n * scale are merged in one \"transform\" attribute in the SVG node.\n *\n * @private\n * @function Highcharts.SVGElement#afterSetters\n */\n SVGElement.prototype.afterSetters = function () {\n // Update transform. Do this outside the loop to prevent redundant\n // updating for batch setting of attributes.\n if (this.doTransform) {\n this.updateTransform();\n this.doTransform = false;\n }\n };\n /**\n * Align the element relative to the chart or another box.\n *\n * @function Highcharts.SVGElement#align\n *\n * @param {Highcharts.AlignObject} [alignOptions]\n * The alignment options. The function can be called without this\n * parameter in order to re-align an element after the box has been\n * updated.\n *\n * @param {boolean} [alignByTranslate]\n * Align element by translation.\n *\n * @param {string|Highcharts.BBoxObject} [box]\n * The box to align to, needs a width and height. When the box is a\n * string, it refers to an object in the Renderer. For example, when\n * box is `spacingBox`, it refers to `Renderer.spacingBox` which\n * holds `width`, `height`, `x` and `y` properties.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n SVGElement.prototype.align = function (alignOptions, alignByTranslate, box) {\n var attribs = {},\n renderer = this.renderer,\n alignedObjects = renderer.alignedObjects;\n var x,\n y,\n alignTo,\n alignFactor,\n vAlignFactor;\n // First call on instanciate\n if (alignOptions) {\n this.alignOptions = alignOptions;\n this.alignByTranslate = alignByTranslate;\n if (!box || isString(box)) {\n this.alignTo = alignTo = box || 'renderer';\n // prevent duplicates, like legendGroup after resize\n erase(alignedObjects, this);\n alignedObjects.push(this);\n box = void 0; // reassign it below\n }\n // When called on resize, no arguments are supplied\n }\n else {\n alignOptions = this.alignOptions;\n alignByTranslate = this.alignByTranslate;\n alignTo = this.alignTo;\n }\n box = pick(box, renderer[alignTo], alignTo === 'scrollablePlotBox' ?\n renderer.plotBox : void 0, renderer);\n // Assign variables\n var align = alignOptions.align,\n vAlign = alignOptions.verticalAlign;\n // default: left align\n x = (box.x || 0) + (alignOptions.x || 0);\n // default: top align\n y = (box.y || 0) + (alignOptions.y || 0);\n // Align\n if (align === 'right') {\n alignFactor = 1;\n }\n else if (align === 'center') {\n alignFactor = 2;\n }\n if (alignFactor) {\n x += (box.width - (alignOptions.width || 0)) /\n alignFactor;\n }\n attribs[alignByTranslate ? 'translateX' : 'x'] = Math.round(x);\n // Vertical align\n if (vAlign === 'bottom') {\n vAlignFactor = 1;\n }\n else if (vAlign === 'middle') {\n vAlignFactor = 2;\n }\n if (vAlignFactor) {\n y += (box.height - (alignOptions.height || 0)) /\n vAlignFactor;\n }\n attribs[alignByTranslate ? 'translateY' : 'y'] = Math.round(y);\n // Animate only if already placed\n this[this.placed ? 'animate' : 'attr'](attribs);\n this.placed = true;\n this.alignAttr = attribs;\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#alignSetter\n * @param {\"left\"|\"center\"|\"right\"} value\n */\n SVGElement.prototype.alignSetter = function (value) {\n var convert = {\n left: 'start',\n center: 'middle',\n right: 'end'\n };\n if (convert[value]) {\n this.alignValue = value;\n this.element.setAttribute('text-anchor', convert[value]);\n }\n };\n /**\n * Animate to given attributes or CSS properties.\n *\n * @sample highcharts/members/element-on/\n * Setting some attributes by animation\n *\n * @function Highcharts.SVGElement#animate\n *\n * @param {Highcharts.SVGAttributes} params\n * SVG attributes or CSS to animate.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [options]\n * Animation options.\n *\n * @param {Function} [complete]\n * Function to perform at the end of animation.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.animate = function (params, options, complete) {\n var _this = this;\n var animOptions = animObject(pick(options,\n this.renderer.globalAnimation,\n true)),\n deferTime = animOptions.defer;\n // When the page is hidden save resources in the background by not\n // running animation at all (#9749).\n if (pick(doc.hidden, doc.msHidden, doc.webkitHidden, false)) {\n animOptions.duration = 0;\n }\n if (animOptions.duration !== 0) {\n // allows using a callback with the global animation without\n // overwriting it\n if (complete) {\n animOptions.complete = complete;\n }\n // If defer option is defined delay the animation #12901\n syncTimeout(function () {\n if (_this.element) {\n animate(_this, params, animOptions);\n }\n }, deferTime);\n }\n else {\n this.attr(params, void 0, complete || animOptions.complete);\n // Call the end step synchronously\n objectEach(params, function (val, prop) {\n if (animOptions.step) {\n animOptions.step.call(this, val, { prop: prop, pos: 1, elem: this });\n }\n }, this);\n }\n return this;\n };\n /**\n * Apply a text outline through a custom CSS property, by copying the text\n * element and apply stroke to the copy. Used internally. Contrast checks at\n * [example](https://jsfiddle.net/highcharts/43soe9m1/2/).\n *\n * @example\n * // Specific color\n * text.css({\n * textOutline: '1px black'\n * });\n * // Automatic contrast\n * text.css({\n * color: '#000000', // black text\n * textOutline: '1px contrast' // => white outline\n * });\n *\n * @private\n * @function Highcharts.SVGElement#applyTextOutline\n *\n * @param {string} textOutline\n * A custom CSS `text-outline` setting, defined by `width color`.\n */\n SVGElement.prototype.applyTextOutline = function (textOutline) {\n var elem = this.element,\n hasContrast = textOutline.indexOf('contrast') !== -1,\n styles = {};\n // When the text shadow is set to contrast, use dark stroke for light\n // text and vice versa.\n if (hasContrast) {\n styles.textOutline = textOutline = textOutline.replace(/contrast/g, this.renderer.getContrast(elem.style.fill));\n }\n // Extract the stroke width and color\n var parts = textOutline.split(' ');\n var color = parts[parts.length - 1];\n var strokeWidth = parts[0];\n if (strokeWidth && strokeWidth !== 'none' && H.svg) {\n this.fakeTS = true; // Fake text shadow\n // Since the stroke is applied on center of the actual outline, we\n // need to double it to get the correct stroke-width outside the\n // glyphs.\n strokeWidth = strokeWidth.replace(/(^[\\d\\.]+)(.*?)$/g, function (match, digit, unit) {\n return (2 * Number(digit)) + unit;\n });\n // Remove shadows from previous runs.\n this.removeTextOutline();\n var outline_1 = doc.createElementNS(SVG_NS, 'tspan');\n attr(outline_1, {\n 'class': 'highcharts-text-outline',\n fill: color,\n stroke: color,\n 'stroke-width': strokeWidth,\n 'stroke-linejoin': 'round'\n });\n // For each of the tspans and text nodes, create a copy in the\n // outline.\n var parentElem = elem.querySelector('textPath') || elem;\n [].forEach.call(parentElem.childNodes, function (childNode) {\n var clone = childNode.cloneNode(true);\n if (clone.removeAttribute) {\n ['fill', 'stroke', 'stroke-width', 'stroke'].forEach(function (prop) { return clone\n .removeAttribute(prop); });\n }\n outline_1.appendChild(clone);\n });\n // Collect the sum of dy from all children, included nested ones\n var totalHeight_1 = 0;\n [].forEach.call(parentElem.querySelectorAll('text tspan'), function (element) {\n totalHeight_1 += Number(element.getAttribute('dy'));\n });\n // Insert an absolutely positioned break before the original text\n // to keep it in place\n var br = doc.createElementNS(SVG_NS, 'tspan');\n br.textContent = '\\u200B';\n // Reset the position for the following text\n attr(br, {\n x: Number(elem.getAttribute('x')),\n dy: -totalHeight_1\n });\n // Insert the outline\n outline_1.appendChild(br);\n parentElem.insertBefore(outline_1, parentElem.firstChild);\n }\n };\n /**\n * @function Highcharts.SVGElement#attr\n * @param {string} key\n * @return {number|string}\n */ /**\n * Apply native and custom attributes to the SVG elements.\n *\n * In order to set the rotation center for rotation, set x and y to 0 and\n * use `translateX` and `translateY` attributes to position the element\n * instead.\n *\n * Attributes frequently used in Highcharts are `fill`, `stroke`,\n * `stroke-width`.\n *\n * @sample highcharts/members/renderer-rect/\n * Setting some attributes\n *\n * @example\n * // Set multiple attributes\n * element.attr({\n * stroke: 'red',\n * fill: 'blue',\n * x: 10,\n * y: 10\n * });\n *\n * // Set a single attribute\n * element.attr('stroke', 'red');\n *\n * // Get an attribute\n * element.attr('stroke'); // => 'red'\n *\n * @function Highcharts.SVGElement#attr\n *\n * @param {string|Highcharts.SVGAttributes} [hash]\n * The native and custom SVG attributes.\n *\n * @param {number|string|Highcharts.SVGPathArray} [val]\n * If the type of the first argument is `string`, the second can be a\n * value, which will serve as a single attribute setter. If the first\n * argument is a string and the second is undefined, the function\n * serves as a getter and the current value of the property is\n * returned.\n *\n * @param {Function} [complete]\n * A callback function to execute after setting the attributes. This\n * makes the function compliant and interchangeable with the\n * {@link SVGElement#animate} function.\n *\n * @param {boolean} [continueAnimation=true]\n * Used internally when `.attr` is called as part of an animation\n * step. Otherwise, calling `.attr` for an attribute will stop\n * animation for that attribute.\n *\n * @return {Highcharts.SVGElement}\n * If used as a setter, it returns the current\n * {@link Highcharts.SVGElement} so the calls can be chained. If\n * used as a getter, the current value of the attribute is returned.\n */\n SVGElement.prototype.attr = function (hash, val, complete, continueAnimation) {\n var element = this.element,\n symbolCustomAttribs = this.symbolCustomAttribs;\n var key,\n hasSetSymbolSize,\n ret = this,\n skipAttr,\n setter;\n // single key-value pair\n if (typeof hash === 'string' && typeof val !== 'undefined') {\n key = hash;\n hash = {};\n hash[key] = val;\n }\n // used as a getter: first argument is a string, second is undefined\n if (typeof hash === 'string') {\n ret = (this[hash + 'Getter'] ||\n this._defaultGetter).call(this, hash, element);\n // setter\n }\n else {\n objectEach(hash, function eachAttribute(val, key) {\n skipAttr = false;\n // Unless .attr is from the animator update, stop current\n // running animation of this property\n if (!continueAnimation) {\n stop(this, key);\n }\n // Special handling of symbol attributes\n if (this.symbolName &&\n symbolCustomAttribs.indexOf(key) !== -1) {\n if (!hasSetSymbolSize) {\n this.symbolAttr(hash);\n hasSetSymbolSize = true;\n }\n skipAttr = true;\n }\n if (this.rotation && (key === 'x' || key === 'y')) {\n this.doTransform = true;\n }\n if (!skipAttr) {\n setter = (this[key + 'Setter'] ||\n this._defaultSetter);\n setter.call(this, val, key, element);\n // Let the shadow follow the main element\n if (!this.styledMode &&\n this.shadows &&\n /^(width|height|visibility|x|y|d|transform|cx|cy|r)$/\n .test(key)) {\n this.updateShadows(key, val, setter);\n }\n }\n }, this);\n this.afterSetters();\n }\n // In accordance with animate, run a complete callback\n if (complete) {\n complete.call(this);\n }\n return ret;\n };\n /**\n * Apply a clipping rectangle to this element.\n *\n * @function Highcharts.SVGElement#clip\n *\n * @param {Highcharts.ClipRectElement} [clipRect]\n * The clipping rectangle. If skipped, the current clip is removed.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVG element to allow chaining.\n */\n SVGElement.prototype.clip = function (clipRect) {\n return this.attr('clip-path', clipRect ?\n 'url(' + this.renderer.url + '#' + clipRect.id + ')' :\n 'none');\n };\n /**\n * Calculate the coordinates needed for drawing a rectangle crisply and\n * return the calculated attributes.\n *\n * @function Highcharts.SVGElement#crisp\n *\n * @param {Highcharts.RectangleObject} rect\n * Rectangle to crisp.\n *\n * @param {number} [strokeWidth]\n * The stroke width to consider when computing crisp positioning. It can\n * also be set directly on the rect parameter.\n *\n * @return {Highcharts.RectangleObject}\n * The modified rectangle arguments.\n */\n SVGElement.prototype.crisp = function (rect, strokeWidth) {\n var wrapper = this;\n strokeWidth = strokeWidth || rect.strokeWidth || 0;\n // Math.round because strokeWidth can sometimes have roundoff errors\n var normalizer = Math.round(strokeWidth) % 2 / 2;\n // normalize for crisp edges\n rect.x = Math.floor(rect.x || wrapper.x || 0) + normalizer;\n rect.y = Math.floor(rect.y || wrapper.y || 0) + normalizer;\n rect.width = Math.floor((rect.width || wrapper.width || 0) - 2 * normalizer);\n rect.height = Math.floor((rect.height || wrapper.height || 0) - 2 * normalizer);\n if (defined(rect.strokeWidth)) {\n rect.strokeWidth = strokeWidth;\n }\n return rect;\n };\n /**\n * Build and apply an SVG gradient out of a common JavaScript configuration\n * object. This function is called from the attribute setters. An event\n * hook is added for supporting other complex color types.\n *\n * @private\n * @function Highcharts.SVGElement#complexColor\n *\n * @param {Highcharts.GradientColorObject|Highcharts.PatternObject} colorOptions\n * The gradient or pattern options structure.\n *\n * @param {string} prop\n * The property to apply, can either be `fill` or `stroke`.\n *\n * @param {Highcharts.SVGDOMElement} elem\n * SVG element to apply the gradient on.\n */\n SVGElement.prototype.complexColor = function (colorOptions, prop, elem) {\n var renderer = this.renderer;\n var colorObject,\n gradName,\n gradAttr,\n radAttr,\n gradients,\n stops,\n stopColor,\n stopOpacity,\n radialReference,\n id,\n key = [],\n value;\n fireEvent(this.renderer, 'complexColor', {\n args: arguments\n }, function () {\n // Apply linear or radial gradients\n if (colorOptions.radialGradient) {\n gradName = 'radialGradient';\n }\n else if (colorOptions.linearGradient) {\n gradName = 'linearGradient';\n }\n if (gradName) {\n gradAttr = colorOptions[gradName];\n gradients = renderer.gradients;\n stops = colorOptions.stops;\n radialReference = elem.radialReference;\n // Keep < 2.2 kompatibility\n if (isArray(gradAttr)) {\n colorOptions[gradName] = gradAttr = {\n x1: gradAttr[0],\n y1: gradAttr[1],\n x2: gradAttr[2],\n y2: gradAttr[3],\n gradientUnits: 'userSpaceOnUse'\n };\n }\n // Correct the radial gradient for the radial reference system\n if (gradName === 'radialGradient' &&\n radialReference &&\n !defined(gradAttr.gradientUnits)) {\n // Save the radial attributes for updating\n radAttr = gradAttr;\n gradAttr = merge(gradAttr, renderer.getRadialAttr(radialReference, radAttr), { gradientUnits: 'userSpaceOnUse' });\n }\n // Build the unique key to detect whether we need to create a\n // new element (#1282)\n objectEach(gradAttr, function (value, n) {\n if (n !== 'id') {\n key.push(n, value);\n }\n });\n objectEach(stops, function (val) {\n key.push(val);\n });\n key = key.join(',');\n // Check if a gradient object with the same config object is\n // created within this renderer\n if (gradients[key]) {\n id = gradients[key].attr('id');\n }\n else {\n // Set the id and create the element\n gradAttr.id = id = uniqueKey();\n var gradientObject_1 = gradients[key] =\n renderer.createElement(gradName)\n .attr(gradAttr)\n .add(renderer.defs);\n gradientObject_1.radAttr = radAttr;\n // The gradient needs to keep a list of stops to be able to\n // destroy them\n gradientObject_1.stops = [];\n stops.forEach(function (stop) {\n if (stop[1].indexOf('rgba') === 0) {\n colorObject = Color.parse(stop[1]);\n stopColor = colorObject.get('rgb');\n stopOpacity = colorObject.get('a');\n }\n else {\n stopColor = stop[1];\n stopOpacity = 1;\n }\n var stopObject = renderer.createElement('stop').attr({\n offset: stop[0],\n 'stop-color': stopColor,\n 'stop-opacity': stopOpacity\n }).add(gradientObject_1);\n // Add the stop element to the gradient\n gradientObject_1.stops.push(stopObject);\n });\n }\n // Set the reference to the gradient object\n value = 'url(' + renderer.url + '#' + id + ')';\n elem.setAttribute(prop, value);\n elem.gradient = key;\n // Allow the color to be concatenated into tooltips formatters\n // etc. (#2995)\n colorOptions.toString = function () {\n return value;\n };\n }\n });\n };\n /**\n * Set styles for the element. In addition to CSS styles supported by\n * native SVG and HTML elements, there are also some custom made for\n * Highcharts, like `width`, `ellipsis` and `textOverflow` for SVG text\n * elements.\n *\n * @sample highcharts/members/renderer-text-on-chart/\n * Styled text\n *\n * @function Highcharts.SVGElement#css\n *\n * @param {Highcharts.CSSObject} styles\n * The new CSS styles.\n *\n * @return {Highcharts.SVGElement}\n * Return the SVG element for chaining.\n */\n SVGElement.prototype.css = function (styles) {\n var oldStyles = this.styles,\n newStyles = {},\n elem = this.element;\n var textWidth,\n hasNew = !oldStyles;\n // convert legacy\n if (styles.color) {\n styles.fill = styles.color;\n }\n // Filter out existing styles to increase performance (#2640)\n if (oldStyles) {\n objectEach(styles, function (value, n) {\n if (oldStyles && oldStyles[n] !== value) {\n newStyles[n] = value;\n hasNew = true;\n }\n });\n }\n if (hasNew) {\n // Merge the new styles with the old ones\n if (oldStyles) {\n styles = extend(oldStyles, newStyles);\n }\n // Get the text width from style\n // Previously set, unset it (#8234)\n if (styles.width === null || styles.width === 'auto') {\n delete this.textWidth;\n // Apply new\n }\n else if (elem.nodeName.toLowerCase() === 'text' &&\n styles.width) {\n textWidth = this.textWidth = pInt(styles.width);\n }\n // store object\n this.styles = styles;\n if (textWidth && (!svg && this.renderer.forExport)) {\n delete styles.width;\n }\n var stylesToApply_1 = merge(styles);\n if (elem.namespaceURI === this.SVG_NS) {\n // These CSS properties are interpreted internally by the SVG\n // renderer, but are not supported by SVG and should not be\n // added to the DOM. In styled mode, no CSS should find its way\n // to the DOM whatsoever (#6173, #6474).\n ['textOutline', 'textOverflow', 'width'].forEach(function (key) { return (stylesToApply_1 &&\n delete stylesToApply_1[key]); });\n }\n css(elem, stylesToApply_1);\n if (this.added) {\n // Rebuild text after added. Cache mechanisms in the buildText\n // will prevent building if there are no significant changes.\n if (this.element.nodeName === 'text') {\n this.renderer.buildText(this);\n }\n // Apply text outline after added\n if (styles.textOutline) {\n this.applyTextOutline(styles.textOutline);\n }\n }\n }\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#dashstyleSetter\n * @param {string} value\n */\n SVGElement.prototype.dashstyleSetter = function (value) {\n var i,\n strokeWidth = this['stroke-width'];\n // If \"inherit\", like maps in IE, assume 1 (#4981). With HC5 and the new\n // strokeWidth function, we should be able to use that instead.\n if (strokeWidth === 'inherit') {\n strokeWidth = 1;\n }\n value = value && value.toLowerCase();\n if (value) {\n var v = value\n .replace('shortdashdotdot', '3,1,1,1,1,1,')\n .replace('shortdashdot', '3,1,1,1')\n .replace('shortdot', '1,1,')\n .replace('shortdash', '3,1,')\n .replace('longdash', '8,3,')\n .replace(/dot/g, '1,3,')\n .replace('dash', '4,3,')\n .replace(/,$/, '')\n .split(','); // ending comma\n i = v.length;\n while (i--) {\n v[i] = '' + (pInt(v[i]) * pick(strokeWidth, NaN));\n }\n value = v.join(',').replace(/NaN/g, 'none'); // #3226\n this.element.setAttribute('stroke-dasharray', value);\n }\n };\n /**\n * Destroy the element and element wrapper and clear up the DOM and event\n * hooks.\n *\n * @function Highcharts.SVGElement#destroy\n */\n SVGElement.prototype.destroy = function () {\n var wrapper = this,\n element = wrapper.element || {},\n renderer = wrapper.renderer,\n ownerSVGElement = element.ownerSVGElement;\n var parentToClean = (renderer.isSVG &&\n element.nodeName === 'SPAN' &&\n wrapper.parentGroup ||\n void 0),\n grandParent,\n i;\n // remove events\n element.onclick = element.onmouseout = element.onmouseover =\n element.onmousemove = element.point = null;\n stop(wrapper); // stop running animations\n if (wrapper.clipPath && ownerSVGElement) {\n var clipPath_1 = wrapper.clipPath;\n // Look for existing references to this clipPath and remove them\n // before destroying the element (#6196).\n // The upper case version is for Edge\n [].forEach.call(ownerSVGElement.querySelectorAll('[clip-path],[CLIP-PATH]'), function (el) {\n if (el.getAttribute('clip-path').indexOf(clipPath_1.element.id) > -1) {\n el.removeAttribute('clip-path');\n }\n });\n wrapper.clipPath = clipPath_1.destroy();\n }\n // Destroy stops in case this is a gradient object @todo old code?\n if (wrapper.stops) {\n for (i = 0; i < wrapper.stops.length; i++) {\n wrapper.stops[i].destroy();\n }\n wrapper.stops.length = 0;\n wrapper.stops = void 0;\n }\n // remove element\n wrapper.safeRemoveChild(element);\n if (!renderer.styledMode) {\n wrapper.destroyShadows();\n }\n // In case of useHTML, clean up empty containers emulating SVG groups\n // (#1960, #2393, #2697).\n while (parentToClean &&\n parentToClean.div &&\n parentToClean.div.childNodes.length === 0) {\n grandParent = parentToClean.parentGroup;\n wrapper.safeRemoveChild(parentToClean.div);\n delete parentToClean.div;\n parentToClean = grandParent;\n }\n // remove from alignObjects\n if (wrapper.alignTo) {\n erase(renderer.alignedObjects, wrapper);\n }\n objectEach(wrapper, function (val, key) {\n // Destroy child elements of a group\n if (wrapper[key] &&\n wrapper[key].parentGroup === wrapper &&\n wrapper[key].destroy) {\n wrapper[key].destroy();\n }\n // Delete all properties\n delete wrapper[key];\n });\n return;\n };\n /**\n * Destroy shadows on the element.\n *\n * @private\n * @function Highcharts.SVGElement#destroyShadows\n *\n */\n SVGElement.prototype.destroyShadows = function () {\n (this.shadows || []).forEach(function (shadow) {\n this.safeRemoveChild(shadow);\n }, this);\n this.shadows = void 0;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#dSettter\n * @param {number|string|Highcharts.SVGPathArray} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.dSetter = function (value, key, element) {\n if (isArray(value)) {\n // Backwards compatibility, convert one-dimensional array into an\n // array of segments\n if (typeof value[0] === 'string') {\n value = this.renderer.pathToSegments(value);\n }\n this.pathArray = value;\n value = value.reduce(function (acc, seg, i) {\n if (!seg || !seg.join) {\n return (seg || '').toString();\n }\n return (i ? acc + ' ' : '') + seg.join(' ');\n }, '');\n }\n if (/(NaN| {2}|^$)/.test(value)) {\n value = 'M 0 0';\n }\n // Check for cache before resetting. Resetting causes disturbance in the\n // DOM, causing flickering in some cases in Edge/IE (#6747). Also\n // possible performance gain.\n if (this[key] !== value) {\n element.setAttribute(key, value);\n this[key] = value;\n }\n };\n /**\n * Fade out an element by animating its opacity down to 0, and hide it on\n * complete. Used internally for the tooltip.\n *\n * @function Highcharts.SVGElement#fadeOut\n *\n * @param {number} [duration=150]\n * The fade duration in milliseconds.\n */\n SVGElement.prototype.fadeOut = function (duration) {\n var elemWrapper = this;\n elemWrapper.animate({\n opacity: 0\n }, {\n duration: pick(duration, 150),\n complete: function () {\n // #3088, assuming we're only using this for tooltips\n elemWrapper.hide();\n }\n });\n };\n /**\n * @private\n * @function Highcharts.SVGElement#fillSetter\n * @param {Highcharts.ColorType} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.fillSetter = function (value, key, element) {\n if (typeof value === 'string') {\n element.setAttribute(key, value);\n }\n else if (value) {\n this.complexColor(value, key, element);\n }\n };\n /**\n * Get the bounding box (width, height, x and y) for the element. Generally\n * used to get rendered text size. Since this is called a lot in charts,\n * the results are cached based on text properties, in order to save DOM\n * traffic. The returned bounding box includes the rotation, so for example\n * a single text line of rotation 90 will report a greater height, and a\n * width corresponding to the line-height.\n *\n * @sample highcharts/members/renderer-on-chart/\n * Draw a rectangle based on a text's bounding box\n *\n * @function Highcharts.SVGElement#getBBox\n *\n * @param {boolean} [reload]\n * Skip the cache and get the updated DOM bouding box.\n *\n * @param {number} [rot]\n * Override the element's rotation. This is internally used on axis\n * labels with a value of 0 to find out what the bounding box would\n * be have been if it were not rotated.\n *\n * @return {Highcharts.BBoxObject}\n * The bounding box with `x`, `y`, `width` and `height` properties.\n */\n SVGElement.prototype.getBBox = function (reload, rot) {\n var wrapper = this,\n alignValue = wrapper.alignValue,\n element = wrapper.element,\n renderer = wrapper.renderer,\n styles = wrapper.styles,\n textStr = wrapper.textStr,\n cache = renderer.cache,\n cacheKeys = renderer.cacheKeys,\n isSVG = element.namespaceURI === wrapper.SVG_NS,\n rotation = pick(rot,\n wrapper.rotation, 0),\n fontSize = renderer.styledMode ? (element &&\n SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles && styles.fontSize);\n var bBox,\n width,\n height,\n toggleTextShadowShim,\n cacheKey;\n // Avoid undefined and null (#7316)\n if (defined(textStr)) {\n cacheKey = textStr.toString();\n // Since numbers are monospaced, and numerical labels appear a lot\n // in a chart, we assume that a label of n characters has the same\n // bounding box as others of the same length. Unless there is inner\n // HTML in the label. In that case, leave the numbers as is (#5899).\n if (cacheKey.indexOf('<') === -1) {\n cacheKey = cacheKey.replace(/[0-9]/g, '0');\n }\n // Properties that affect bounding box\n cacheKey += [\n '',\n rotation,\n fontSize,\n wrapper.textWidth,\n alignValue,\n styles && styles.textOverflow,\n styles && styles.fontWeight // #12163\n ].join(',');\n }\n if (cacheKey && !reload) {\n bBox = cache[cacheKey];\n }\n // No cache found\n if (!bBox) {\n // SVG elements\n if (isSVG || renderer.forExport) {\n try { // Fails in Firefox if the container has display: none.\n // When the text shadow shim is used, we need to hide the\n // fake shadows to get the correct bounding box (#3872)\n toggleTextShadowShim = this.fakeTS && function (display) {\n var outline = element.querySelector('.highcharts-text-outline');\n if (outline) {\n css(outline, { display: display });\n }\n };\n // Workaround for #3842, Firefox reporting wrong bounding\n // box for shadows\n if (isFunction(toggleTextShadowShim)) {\n toggleTextShadowShim('none');\n }\n bBox = element.getBBox ?\n // SVG: use extend because IE9 is not allowed to change\n // width and height in case of rotation (below)\n extend({}, element.getBBox()) : {\n // HTML elements with `exporting.allowHTML` and\n // legacy IE in export mode\n width: element.offsetWidth,\n height: element.offsetHeight,\n x: 0,\n y: 0\n };\n // #3842\n if (isFunction(toggleTextShadowShim)) {\n toggleTextShadowShim('');\n }\n }\n catch (e) {\n '';\n }\n // If the bBox is not set, the try-catch block above failed. The\n // other condition is for Opera that returns a width of\n // -Infinity on hidden elements.\n if (!bBox || bBox.width < 0) {\n bBox = { x: 0, y: 0, width: 0, height: 0 };\n }\n // VML Renderer or useHTML within SVG\n }\n else {\n bBox = wrapper.htmlGetBBox();\n }\n // True SVG elements as well as HTML elements in modern browsers\n // using the .useHTML option need to compensated for rotation\n if (renderer.isSVG) {\n width = bBox.width;\n height = bBox.height;\n // Workaround for wrong bounding box in IE, Edge and Chrome on\n // Windows. With Highcharts' default font, IE and Edge report\n // a box height of 16.899 and Chrome rounds it to 17. If this\n // stands uncorrected, it results in more padding added below\n // the text than above when adding a label border or background.\n // Also vertical positioning is affected.\n // https://jsfiddle.net/highcharts/em37nvuj/\n // (#1101, #1505, #1669, #2568, #6213).\n if (isSVG) {\n bBox.height = height = ({\n '11px,17': 14,\n '13px,20': 16\n }[\"\" + (fontSize || '') + \",\".concat(Math.round(height))] ||\n height);\n }\n // Adjust for rotated text\n if (rotation) {\n var baseline = Number(element.getAttribute('y') || 0) - bBox.y,\n alignFactor = {\n 'right': 1,\n 'center': 0.5\n }[alignValue || 0] || 0,\n rad = rotation * deg2rad,\n rad90 = (rotation - 90) * deg2rad,\n wCosRad = width * Math.cos(rad),\n wSinRad = width * Math.sin(rad),\n cosRad90 = Math.cos(rad90),\n sinRad90 = Math.sin(rad90), \n // Find the starting point on the left side baseline of\n // the text\n pX = bBox.x + alignFactor * (width - wCosRad),\n pY = bBox.y + baseline - alignFactor * wSinRad, \n // Find all corners\n aX = pX + baseline * cosRad90,\n bX = aX + wCosRad,\n cX = bX - height * cosRad90,\n dX = cX - wCosRad,\n aY = pY + baseline * sinRad90,\n bY = aY + wSinRad,\n cY = bY - height * sinRad90,\n dY = cY - wSinRad;\n // Deduct the bounding box from the corners\n bBox.x = Math.min(aX, bX, cX, dX);\n bBox.y = Math.min(aY, bY, cY, dY);\n bBox.width = Math.max(aX, bX, cX, dX) - bBox.x;\n bBox.height = Math.max(aY, bY, cY, dY) - bBox.y;\n }\n }\n // Cache it. When loading a chart in a hidden iframe in Firefox and\n // IE/Edge, the bounding box height is 0, so don't cache it (#5620).\n if (cacheKey && (textStr === '' || bBox.height > 0)) {\n // Rotate (#4681)\n while (cacheKeys.length > 250) {\n delete cache[cacheKeys.shift()];\n }\n if (!cache[cacheKey]) {\n cacheKeys.push(cacheKey);\n }\n cache[cacheKey] = bBox;\n }\n }\n return bBox;\n };\n /**\n * Get the computed style. Only in styled mode.\n *\n * @example\n * chart.series[0].points[0].graphic.getStyle('stroke-width'); // => '1px'\n *\n * @function Highcharts.SVGElement#getStyle\n *\n * @param {string} prop\n * The property name to check for.\n *\n * @return {string}\n * The current computed value.\n */\n SVGElement.prototype.getStyle = function (prop) {\n return win\n .getComputedStyle(this.element || this, '')\n .getPropertyValue(prop);\n };\n /**\n * Check if an element has the given class name.\n *\n * @function Highcharts.SVGElement#hasClass\n *\n * @param {string} className\n * The class name to check for.\n *\n * @return {boolean}\n * Whether the class name is found.\n */\n SVGElement.prototype.hasClass = function (className) {\n return ('' + this.attr('class'))\n .split(' ')\n .indexOf(className) !== -1;\n };\n /**\n * Hide the element, similar to setting the `visibility` attribute to\n * `hidden`.\n *\n * @function Highcharts.SVGElement#hide\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.hide = function () {\n return this.attr({ visibility: 'hidden' });\n };\n /**\n * @private\n */\n SVGElement.prototype.htmlGetBBox = function () {\n return { height: 0, width: 0, x: 0, y: 0 };\n };\n /**\n * Initialize the SVG element. This function only exists to make the\n * initialization process overridable. It should not be called directly.\n *\n * @function Highcharts.SVGElement#init\n *\n * @param {Highcharts.SVGRenderer} renderer\n * The SVGRenderer instance to initialize to.\n *\n * @param {string} nodeName\n * The SVG node name.\n */\n SVGElement.prototype.init = function (renderer, nodeName) {\n /**\n * The primary DOM node. Each `SVGElement` instance wraps a main DOM\n * node, but may also represent more nodes.\n *\n * @name Highcharts.SVGElement#element\n * @type {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement}\n */\n this.element = nodeName === 'span' ?\n createElement(nodeName) :\n doc.createElementNS(this.SVG_NS, nodeName);\n /**\n * The renderer that the SVGElement belongs to.\n *\n * @name Highcharts.SVGElement#renderer\n * @type {Highcharts.SVGRenderer}\n */\n this.renderer = renderer;\n fireEvent(this, 'afterInit');\n };\n /**\n * Add an event listener. This is a simple setter that replaces the\n * previous event of the same type added by this function, as opposed to\n * the {@link Highcharts#addEvent} function.\n *\n * @sample highcharts/members/element-on/\n * A clickable rectangle\n *\n * @function Highcharts.SVGElement#on\n *\n * @param {string} eventType\n * The event type.\n *\n * @param {Function} handler\n * The handler callback.\n *\n * @return {Highcharts.SVGElement}\n * The SVGElement for chaining.\n */\n SVGElement.prototype.on = function (eventType, handler) {\n var onEvents = this.onEvents;\n if (onEvents[eventType]) {\n // Unbind existing event\n onEvents[eventType]();\n }\n onEvents[eventType] = addEvent(this.element, eventType, handler);\n return this;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#opacitySetter\n * @param {string} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype.opacitySetter = function (value, key, element) {\n // Round off to avoid float errors, like tests where opacity lands on\n // 9.86957e-06 instead of 0\n var opacity = Number(Number(value).toFixed(3));\n this.opacity = opacity;\n element.setAttribute(key, opacity);\n };\n /**\n * Remove a class name from the element.\n *\n * @function Highcharts.SVGElement#removeClass\n *\n * @param {string|RegExp} className\n * The class name to remove.\n *\n * @return {Highcharts.SVGElement} Returns the SVG element for chainability.\n */\n SVGElement.prototype.removeClass = function (className) {\n return this.attr('class', ('' + this.attr('class'))\n .replace(isString(className) ?\n new RegExp(\"(^| )\".concat(className, \"( |$)\")) : // #12064, #13590\n className, ' ')\n .replace(/ +/g, ' ')\n .trim());\n };\n /**\n *\n * @private\n */\n SVGElement.prototype.removeTextOutline = function () {\n var outline = this.element\n .querySelector('tspan.highcharts-text-outline');\n if (outline) {\n this.safeRemoveChild(outline);\n }\n };\n /**\n * Removes an element from the DOM.\n *\n * @private\n * @function Highcharts.SVGElement#safeRemoveChild\n *\n * @param {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement} element\n * The DOM node to remove.\n */\n SVGElement.prototype.safeRemoveChild = function (element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n parentNode.removeChild(element);\n }\n };\n /**\n * Set the coordinates needed to draw a consistent radial gradient across\n * a shape regardless of positioning inside the chart. Used on pie slices\n * to make all the slices have the same radial reference point.\n *\n * @function Highcharts.SVGElement#setRadialReference\n *\n * @param {Array<number>} coordinates\n * The center reference. The format is `[centerX, centerY, diameter]` in\n * pixels.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.setRadialReference = function (coordinates) {\n var existingGradient = (this.element.gradient &&\n this.renderer.gradients[this.element.gradient]);\n this.element.radialReference = coordinates;\n // On redrawing objects with an existing gradient, the gradient needs\n // to be repositioned (#3801)\n if (existingGradient && existingGradient.radAttr) {\n existingGradient.animate(this.renderer.getRadialAttr(coordinates, existingGradient.radAttr));\n }\n return this;\n };\n /**\n * Set a text path for a `text` or `label` element, allowing the text to\n * flow along a path.\n *\n * In order to unset the path for an existing element, call `setTextPath`\n * with `{ enabled: false }` as the second argument.\n *\n * @sample highcharts/members/renderer-textpath/ Text path demonstrated\n *\n * @function Highcharts.SVGElement#setTextPath\n *\n * @param {Highcharts.SVGElement|undefined} path\n * Path to follow. If undefined, it allows changing options for the\n * existing path.\n *\n * @param {Highcharts.DataLabelsTextPathOptionsObject} textPathOptions\n * Options.\n *\n * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.\n */\n SVGElement.prototype.setTextPath = function (path, textPathOptions) {\n var _this = this;\n // Defaults\n textPathOptions = merge(true, {\n enabled: true,\n attributes: {\n dy: -5,\n startOffset: '50%',\n textAnchor: 'middle'\n }\n }, textPathOptions);\n var url = this.renderer.url,\n textWrapper = this.text || this,\n textPath = textWrapper.textPath,\n attributes = textPathOptions.attributes,\n enabled = textPathOptions.enabled;\n path = path || (textPath && textPath.path);\n // Remove previously added event\n if (textPath) {\n textPath.undo();\n }\n if (path && enabled) {\n var undo = addEvent(textWrapper, 'afterModifyTree',\n function (e) {\n if (path && enabled) {\n // Set ID for the path\n var textPathId = path.attr('id');\n if (!textPathId) {\n path.attr('id', textPathId = uniqueKey());\n }\n // Set attributes for the <text>\n var textAttribs = {\n // dx/dy options must by set on <text> (parent), the\n // rest should be set on <textPath>\n x: 0,\n y: 0\n };\n if (defined(attributes.dx)) {\n textAttribs.dx = attributes.dx;\n delete attributes.dx;\n }\n if (defined(attributes.dy)) {\n textAttribs.dy = attributes.dy;\n delete attributes.dy;\n }\n textWrapper.attr(textAttribs);\n // Handle label properties\n _this.attr({ transform: '' });\n if (_this.box) {\n _this.box = _this.box.destroy();\n }\n // Wrap the nodes in a textPath\n var children = e.nodes.slice(0);\n e.nodes.length = 0;\n e.nodes[0] = {\n tagName: 'textPath',\n attributes: extend(attributes, {\n 'text-anchor': attributes.textAnchor,\n href: \"\" + url + \"#\".concat(textPathId)\n }),\n children: children\n };\n }\n });\n // Set the reference\n textWrapper.textPath = { path: path, undo: undo };\n }\n else {\n textWrapper.attr({ dx: 0, dy: 0 });\n delete textWrapper.textPath;\n }\n if (this.added) {\n // Rebuild text after added\n textWrapper.textCache = '';\n this.renderer.buildText(textWrapper);\n }\n return this;\n };\n /**\n * Add a shadow to the element. Must be called after the element is added to\n * the DOM. In styled mode, this method is not used, instead use `defs` and\n * filters.\n *\n * @example\n * renderer.rect(10, 100, 100, 100)\n * .attr({ fill: 'red' })\n * .shadow(true);\n *\n * @function Highcharts.SVGElement#shadow\n *\n * @param {boolean|Highcharts.ShadowOptionsObject} [shadowOptions]\n * The shadow options. If `true`, the default options are applied. If\n * `false`, the current shadow will be removed.\n *\n * @param {Highcharts.SVGElement} [group]\n * The SVG group element where the shadows will be applied. The\n * default is to add it to the same parent as the current element.\n * Internally, this is ised for pie slices, where all the shadows are\n * added to an element behind all the slices.\n *\n * @param {boolean} [cutOff]\n * Used internally for column shadows.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.shadow = function (shadowOptions, group, cutOff) {\n var shadows = [],\n _a = this,\n element = _a.element,\n oldShadowOptions = _a.oldShadowOptions,\n parentGroup = _a.parentGroup,\n parentInverted = parentGroup && parentGroup.rotation === 90,\n defaultShadowOptions = {\n color: \"#000000\" /* Palette.neutralColor100 */,\n offsetX: parentInverted ? -1 : 1,\n offsetY: parentInverted ? -1 : 1,\n opacity: 0.15,\n width: 3\n };\n var i,\n shadow,\n strokeWidth,\n shadowElementOpacity,\n update = false, \n // compensate for inverted plot area\n transform,\n options;\n if (shadowOptions === true) {\n options = defaultShadowOptions;\n }\n else if (typeof shadowOptions === 'object') {\n options = extend(defaultShadowOptions, shadowOptions);\n }\n // Update shadow when options change (#12091).\n if (options) {\n // Go over each key to look for change\n if (options && oldShadowOptions) {\n objectEach(options, function (value, key) {\n if (value !== oldShadowOptions[key]) {\n update = true;\n }\n });\n }\n if (update) {\n this.destroyShadows();\n }\n this.oldShadowOptions = options;\n }\n if (!options) {\n this.destroyShadows();\n }\n else if (!this.shadows) {\n shadowElementOpacity = options.opacity / options.width;\n transform = parentInverted ?\n \"translate(\".concat(options.offsetY, \", \").concat(options.offsetX, \")\") :\n \"translate(\".concat(options.offsetX, \", \").concat(options.offsetY, \")\");\n for (i = 1; i <= options.width; i++) {\n shadow = element.cloneNode(false);\n strokeWidth = (options.width * 2) + 1 - (2 * i);\n attr(shadow, {\n stroke: (shadowOptions.color ||\n \"#000000\" /* Palette.neutralColor100 */),\n 'stroke-opacity': shadowElementOpacity * i,\n 'stroke-width': strokeWidth,\n transform: transform,\n fill: 'none'\n });\n shadow.setAttribute('class', (shadow.getAttribute('class') || '') + ' highcharts-shadow');\n if (cutOff) {\n attr(shadow, 'height', Math.max(attr(shadow, 'height') - strokeWidth, 0));\n shadow.cutHeight = strokeWidth;\n }\n if (group) {\n group.element.appendChild(shadow);\n }\n else if (element.parentNode) {\n element.parentNode.insertBefore(shadow, element);\n }\n shadows.push(shadow);\n }\n this.shadows = shadows;\n }\n return this;\n };\n /**\n * Show the element after it has been hidden.\n *\n * @function Highcharts.SVGElement#show\n *\n * @param {boolean} [inherit=true]\n * Set the visibility attribute to `inherit` rather than `visible`.\n * The difference is that an element with `visibility=\"visible\"`\n * will be visible even if the parent is hidden.\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.show = function (inherit) {\n if (inherit === void 0) { inherit = true; }\n return this.attr({ visibility: inherit ? 'inherit' : 'visible' });\n };\n /**\n * Set the stroke-width and record it on the SVGElement\n *\n * @private\n * @function Highcharts.SVGElement#strokeSetter\n * @param {number|string|ColorType} value\n * @param {string} key\n * @param {Highcharts.SVGDOMElement} element\n */\n SVGElement.prototype['stroke-widthSetter'] = function (value, key, element) {\n // Record it for quick access in getter\n this[key] = value;\n element.setAttribute(key, value);\n };\n /**\n * Get the computed stroke width in pixel values. This is used extensively\n * when drawing shapes to ensure the shapes are rendered crisp and\n * positioned correctly relative to each other. Using\n * `shape-rendering: crispEdges` leaves us less control over positioning,\n * for example when we want to stack columns next to each other, or position\n * things pixel-perfectly within the plot box.\n *\n * The common pattern when placing a shape is:\n * - Create the SVGElement and add it to the DOM. In styled mode, it will\n * now receive a stroke width from the style sheet. In classic mode we\n * will add the `stroke-width` attribute.\n * - Read the computed `elem.strokeWidth()`.\n * - Place it based on the stroke width.\n *\n * @function Highcharts.SVGElement#strokeWidth\n *\n * @return {number}\n * The stroke width in pixels. Even if the given stroke widtch (in CSS or by\n * attributes) is based on `em` or other units, the pixel size is returned.\n */\n SVGElement.prototype.strokeWidth = function () {\n // In non-styled mode, read the stroke width as set by .attr\n if (!this.renderer.styledMode) {\n return this['stroke-width'] || 0;\n }\n // In styled mode, read computed stroke width\n var val = this.getStyle('stroke-width');\n var ret = 0,\n dummy;\n // Read pixel values directly\n if (val.indexOf('px') === val.length - 2) {\n ret = pInt(val);\n // Other values like em, pt etc need to be measured\n }\n else if (val !== '') {\n dummy = doc.createElementNS(SVG_NS, 'rect');\n attr(dummy, {\n width: val,\n 'stroke-width': 0\n });\n this.element.parentNode.appendChild(dummy);\n ret = dummy.getBBox().width;\n dummy.parentNode.removeChild(dummy);\n }\n return ret;\n };\n /**\n * If one of the symbol size affecting parameters are changed,\n * check all the others only once for each call to an element's\n * .attr() method\n *\n * @private\n * @function Highcharts.SVGElement#symbolAttr\n *\n * @param {Highcharts.SVGAttributes} hash\n * The attributes to set.\n */\n SVGElement.prototype.symbolAttr = function (hash) {\n var wrapper = this;\n [\n 'x',\n 'y',\n 'r',\n 'start',\n 'end',\n 'width',\n 'height',\n 'innerR',\n 'anchorX',\n 'anchorY',\n 'clockwise'\n ].forEach(function (key) {\n wrapper[key] = pick(hash[key], wrapper[key]);\n });\n wrapper.attr({\n d: wrapper.renderer.symbols[wrapper.symbolName](wrapper.x, wrapper.y, wrapper.width, wrapper.height, wrapper)\n });\n };\n /**\n * @private\n * @function Highcharts.SVGElement#textSetter\n * @param {string} value\n */\n SVGElement.prototype.textSetter = function (value) {\n if (value !== this.textStr) {\n // Delete size caches when the text changes\n // delete this.bBox; // old code in series-label\n delete this.textPxLength;\n this.textStr = value;\n if (this.added) {\n this.renderer.buildText(this);\n }\n }\n };\n /**\n * @private\n * @function Highcharts.SVGElement#titleSetter\n * @param {string} value\n */\n SVGElement.prototype.titleSetter = function (value) {\n var el = this.element;\n var titleNode = el.getElementsByTagName('title')[0] ||\n doc.createElementNS(this.SVG_NS, 'title');\n // Move to first child\n if (el.insertBefore) {\n el.insertBefore(titleNode, el.firstChild);\n }\n else {\n el.appendChild(titleNode);\n }\n // Replace text content and escape markup\n titleNode.textContent =\n // #3276, #3895\n String(pick(value, ''))\n .replace(/<[^>]*>/g, '')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n };\n /**\n * Bring the element to the front. Alternatively, a new zIndex can be set.\n *\n * @sample highcharts/members/element-tofront/\n * Click an element to bring it to front\n *\n * @function Highcharts.SVGElement#toFront\n *\n * @return {Highcharts.SVGElement}\n * Returns the SVGElement for chaining.\n */\n SVGElement.prototype.toFront = function () {\n var element = this.element;\n element.parentNode.appendChild(element);\n return this;\n };\n /**\n * Move an object and its children by x and y values.\n *\n * @function Highcharts.SVGElement#translate\n *\n * @param {number} x\n * The x value.\n *\n * @param {number} y\n * The y value.\n *\n * @return {Highcharts.SVGElement}\n * Translated element.\n */\n SVGElement.prototype.translate = function (x, y) {\n return this.attr({\n translateX: x,\n translateY: y\n });\n };\n /**\n * Update the shadow elements with new attributes.\n *\n * @private\n * @function Highcharts.SVGElement#updateShadows\n *\n * @param {string} key\n * The attribute name.\n *\n * @param {number} value\n * The value of the attribute.\n *\n * @param {Function} setter\n * The setter function, inherited from the parent wrapper.\n */\n SVGElement.prototype.updateShadows = function (key, value, setter) {\n var shadows = this.shadows;\n if (shadows) {\n var i = shadows.length;\n while (i--) {\n setter.call(shadows[i], key === 'height' ?\n Math.max(value - (shadows[i].cutHeight || 0), 0) :\n key === 'd' ? this.d : value, key, shadows[i]);\n }\n }\n };\n /**\n * Update the transform attribute based on internal properties. Deals with\n * the custom `translateX`, `translateY`, `rotation`, `scaleX` and `scaleY`\n * attributes and updates the SVG `transform` attribute.\n *\n * @private\n * @function Highcharts.SVGElement#updateTransform\n */\n SVGElement.prototype.updateTransform = function () {\n var _a = this,\n element = _a.element,\n matrix = _a.matrix,\n _b = _a.rotation,\n rotation = _b === void 0 ? 0 : _b,\n scaleX = _a.scaleX,\n scaleY = _a.scaleY,\n _c = _a.translateX,\n translateX = _c === void 0 ? 0 : _c,\n _d = _a.translateY,\n translateY = _d === void 0 ? 0 : _d;\n // Apply translate. Nearly all transformed elements have translation,\n // so instead of checking for translate = 0, do it always (#1767,\n // #1846).\n var transform = ['translate(' + translateX + ',' + translateY + ')'];\n // apply matrix\n if (defined(matrix)) {\n transform.push('matrix(' + matrix.join(',') + ')');\n }\n // Apply rotation\n if (rotation) { // text rotation or inverted chart\n transform.push('rotate(' + rotation + ' ' +\n pick(this.rotationOriginX, element.getAttribute('x'), 0) +\n ' ' +\n pick(this.rotationOriginY, element.getAttribute('y') || 0) + ')');\n }\n // apply scale\n if (defined(scaleX) || defined(scaleY)) {\n transform.push('scale(' + pick(scaleX, 1) + ' ' + pick(scaleY, 1) + ')');\n }\n if (transform.length && !(this.text || this).textPath) {\n element.setAttribute('transform', transform.join(' '));\n }\n };\n /**\n * @private\n * @function Highcharts.SVGElement#visibilitySetter\n *\n * @param {string} value\n *\n * @param {string} key\n *\n * @param {Highcharts.SVGDOMElement} element\n *\n */\n SVGElement.prototype.visibilitySetter = function (value, key, element) {\n // IE9-11 doesn't handle visibilty:inherit well, so we remove the\n // attribute instead (#2881, #3909)\n if (value === 'inherit') {\n element.removeAttribute(key);\n }\n else if (this[key] !== value) { // #6747\n element.setAttribute(key, value);\n }\n this[key] = value;\n };\n /**\n * @private\n * @function Highcharts.SVGElement#xGetter\n */\n SVGElement.prototype.xGetter = function (key) {\n if (this.element.nodeName === 'circle') {\n if (key === 'x') {\n key = 'cx';\n }\n else if (key === 'y') {\n key = 'cy';\n }\n }\n return this._defaultGetter(key);\n };\n /**\n * @private\n * @function Highcharts.SVGElement#zIndexSetter\n */\n SVGElement.prototype.zIndexSetter = function (value, key) {\n var renderer = this.renderer,\n parentGroup = this.parentGroup,\n parentWrapper = parentGroup || renderer,\n parentNode = parentWrapper.element || renderer.box,\n element = this.element,\n svgParent = parentNode === renderer.box;\n var childNodes,\n otherElement,\n otherZIndex,\n inserted = false,\n undefinedOtherZIndex,\n run = this.added,\n i;\n if (defined(value)) {\n // So we can read it for other elements in the group\n element.setAttribute('data-z-index', value);\n value = +value;\n if (this[key] === value) {\n // Only update when needed (#3865)\n run = false;\n }\n }\n else if (defined(this[key])) {\n element.removeAttribute('data-z-index');\n }\n this[key] = value;\n // Insert according to this and other elements' zIndex. Before .add() is\n // called, nothing is done. Then on add, or by later calls to\n // zIndexSetter, the node is placed on the right place in the DOM.\n if (run) {\n value = this.zIndex;\n if (value && parentGroup) {\n parentGroup.handleZ = true;\n }\n childNodes = parentNode.childNodes;\n for (i = childNodes.length - 1; i >= 0 && !inserted; i--) {\n otherElement = childNodes[i];\n otherZIndex = otherElement.getAttribute('data-z-index');\n undefinedOtherZIndex = !defined(otherZIndex);\n if (otherElement !== element) {\n if (\n // Negative zIndex versus no zIndex:\n // On all levels except the highest. If the parent is\n // <svg>, then we don't want to put items before <desc>\n // or <defs>\n value < 0 &&\n undefinedOtherZIndex &&\n !svgParent &&\n !i) {\n parentNode.insertBefore(element, childNodes[i]);\n inserted = true;\n }\n else if (\n // Insert after the first element with a lower zIndex\n pInt(otherZIndex) <= value ||\n // If negative zIndex, add this before first undefined\n // zIndex element\n (undefinedOtherZIndex &&\n (!defined(value) || value >= 0))) {\n parentNode.insertBefore(element, childNodes[i + 1] || null // null for oldIE export\n );\n inserted = true;\n }\n }\n }\n if (!inserted) {\n parentNode.insertBefore(element, childNodes[svgParent ? 3 : 0] || null // null for oldIE\n );\n inserted = true;\n }\n }\n return inserted;\n };\n return SVGElement;\n }());\n // Some shared setters and getters\n SVGElement.prototype.strokeSetter = SVGElement.prototype.fillSetter;\n SVGElement.prototype.yGetter = SVGElement.prototype.xGetter;\n SVGElement.prototype.matrixSetter =\n SVGElement.prototype.rotationOriginXSetter =\n SVGElement.prototype.rotationOriginYSetter =\n SVGElement.prototype.rotationSetter =\n SVGElement.prototype.scaleXSetter =\n SVGElement.prototype.scaleYSetter =\n SVGElement.prototype.translateXSetter =\n SVGElement.prototype.translateYSetter =\n SVGElement.prototype.verticalAlignSetter = function (value, key) {\n this[key] = value;\n this.doTransform = true;\n };\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Reference to the global SVGElement class as a workaround for a name conflict\n * in the Highcharts namespace.\n *\n * @global\n * @typedef {global.SVGElement} GlobalSVGElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGElement\n */\n /**\n * The horizontal alignment of an element.\n *\n * @typedef {\"center\"|\"left\"|\"right\"} Highcharts.AlignValue\n */\n /**\n * Options to align the element relative to the chart or another box.\n *\n * @interface Highcharts.AlignObject\n */ /**\n * Horizontal alignment. Can be one of `left`, `center` and `right`.\n *\n * @name Highcharts.AlignObject#align\n * @type {Highcharts.AlignValue|undefined}\n *\n * @default left\n */ /**\n * Vertical alignment. Can be one of `top`, `middle` and `bottom`.\n *\n * @name Highcharts.AlignObject#verticalAlign\n * @type {Highcharts.VerticalAlignValue|undefined}\n *\n * @default top\n */ /**\n * Horizontal pixel offset from alignment.\n *\n * @name Highcharts.AlignObject#x\n * @type {number|undefined}\n *\n * @default 0\n */ /**\n * Vertical pixel offset from alignment.\n *\n * @name Highcharts.AlignObject#y\n * @type {number|undefined}\n *\n * @default 0\n */ /**\n * Use the `transform` attribute with translateX and translateY custom\n * attributes to align this elements rather than `x` and `y` attributes.\n *\n * @name Highcharts.AlignObject#alignByTranslate\n * @type {boolean|undefined}\n *\n * @default false\n */\n /**\n * Bounding box of an element.\n *\n * @interface Highcharts.BBoxObject\n * @extends Highcharts.PositionObject\n */ /**\n * Height of the bounding box.\n *\n * @name Highcharts.BBoxObject#height\n * @type {number}\n */ /**\n * Width of the bounding box.\n *\n * @name Highcharts.BBoxObject#width\n * @type {number}\n */ /**\n * Horizontal position of the bounding box.\n *\n * @name Highcharts.BBoxObject#x\n * @type {number}\n */ /**\n * Vertical position of the bounding box.\n *\n * @name Highcharts.BBoxObject#y\n * @type {number}\n */\n /**\n * An object of key-value pairs for SVG attributes. Attributes in Highcharts\n * elements for the most parts correspond to SVG, but some are specific to\n * Highcharts, like `zIndex`, `rotation`, `rotationOriginX`,\n * `rotationOriginY`, `translateX`, `translateY`, `scaleX` and `scaleY`. SVG\n * attributes containing a hyphen are _not_ camel-cased, they should be\n * quoted to preserve the hyphen.\n *\n * @example\n * {\n * 'stroke': '#ff0000', // basic\n * 'stroke-width': 2, // hyphenated\n * 'rotation': 45 // custom\n * 'd': ['M', 10, 10, 'L', 30, 30, 'z'] // path definition, note format\n * }\n *\n * @interface Highcharts.SVGAttributes\n */ /**\n * @name Highcharts.SVGAttributes#[key:string]\n * @type {*}\n */ /**\n * @name Highcharts.SVGAttributes#d\n * @type {string|Highcharts.SVGPathArray|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#dx\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#dy\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#fill\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#inverted\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#matrix\n * @type {Array<number>|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotation\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotationOriginX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#rotationOriginY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#scaleX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#scaleY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#stroke\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#style\n * @type {string|Highcharts.CSSObject|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#translateX\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#translateY\n * @type {number|undefined}\n */ /**\n * @name Highcharts.SVGAttributes#zIndex\n * @type {number|undefined}\n */\n /**\n * An SVG DOM element. The type is a reference to the regular SVGElement in the\n * global scope.\n *\n * @typedef {globals.GlobalSVGElement} Highcharts.SVGDOMElement\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SVGElement\n */\n /**\n * The vertical alignment of an element.\n *\n * @typedef {\"bottom\"|\"middle\"|\"top\"} Highcharts.VerticalAlignValue\n */\n ''; // keeps doclets above in JS file\n\n return SVGElement;\n });\n _registerModule(_modules, 'Core/Renderer/RendererRegistry.js', [_modules['Core/Globals.js']], function (H) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n var RendererRegistry;\n (function (RendererRegistry) {\n /* *\n *\n * Constants\n *\n * */\n RendererRegistry.rendererTypes = {};\n /* *\n *\n * Variables\n *\n * */\n var defaultRenderer;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Gets a registered renderer class. If no renderer type is provided or the\n * requested renderer was not founded, the default renderer is returned.\n *\n * @param {string} [rendererType]\n * Renderer type or the default renderer.\n *\n * @return {Highcharts.Class<Highcharts.SVGRenderer>}\n * Returns the requested renderer class or the default renderer class.\n */\n function getRendererType(rendererType) {\n if (rendererType === void 0) { rendererType = defaultRenderer; }\n return (RendererRegistry.rendererTypes[rendererType] || RendererRegistry.rendererTypes[defaultRenderer]);\n }\n RendererRegistry.getRendererType = getRendererType;\n /**\n * Register a renderer class.\n *\n * @param {string} rendererType\n * Renderer type to register.\n *\n * @param {Highcharts.Class<Highcharts.SVGRenderer>} rendererClass\n * Returns the requested renderer class or the default renderer class.\n *\n * @param {boolean} setAsDefault\n * Sets the renderer class as the default renderer.\n */\n function registerRendererType(rendererType, rendererClass, setAsDefault) {\n RendererRegistry.rendererTypes[rendererType] = rendererClass;\n if (!defaultRenderer || setAsDefault) {\n defaultRenderer = rendererType;\n H.Renderer = rendererClass; // compatibility\n }\n }\n RendererRegistry.registerRendererType = registerRendererType;\n })(RendererRegistry || (RendererRegistry = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return RendererRegistry;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGLabel.js', [_modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var defined = U.defined,\n extend = U.extend,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n removeEvent = U.removeEvent;\n /* *\n *\n * Class\n *\n * */\n /**\n * SVG label to render text.\n * @private\n * @class\n * @name Highcharts.SVGLabel\n * @augments Highcharts.SVGElement\n */\n var SVGLabel = /** @class */ (function (_super) {\n __extends(SVGLabel, _super);\n /* *\n *\n * Constructor\n *\n * */\n function SVGLabel(renderer, str, x, y, shape, anchorX, anchorY, useHTML, baseline, className) {\n var _this = _super.call(this) || this;\n _this.paddingLeftSetter = _this.paddingSetter;\n _this.paddingRightSetter = _this.paddingSetter;\n _this.init(renderer, 'g');\n _this.textStr = str;\n _this.x = x;\n _this.y = y;\n _this.anchorX = anchorX;\n _this.anchorY = anchorY;\n _this.baseline = baseline;\n _this.className = className;\n _this.addClass(className === 'button' ?\n 'highcharts-no-tooltip' :\n 'highcharts-label');\n if (className) {\n _this.addClass('highcharts-' + className);\n }\n // Create the text element. An undefined text content prevents redundant\n // box calculation (#16121)\n _this.text = renderer.text(void 0, 0, 0, useHTML).attr({ zIndex: 1 });\n // Validate the shape argument\n var hasBGImage;\n if (typeof shape === 'string') {\n hasBGImage = /^url\\((.*?)\\)$/.test(shape);\n if (hasBGImage || _this.renderer.symbols[shape]) {\n _this.symbolKey = shape;\n }\n }\n _this.bBox = SVGLabel.emptyBBox;\n _this.padding = 3;\n _this.baselineOffset = 0;\n _this.needsBox = renderer.styledMode || hasBGImage;\n _this.deferredAttr = {};\n _this.alignFactor = 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n SVGLabel.prototype.alignSetter = function (value) {\n var alignFactor = ({\n left: 0,\n center: 0.5,\n right: 1\n })[value];\n if (alignFactor !== this.alignFactor) {\n this.alignFactor = alignFactor;\n // Bounding box exists, means we're dynamically changing\n if (this.bBox && isNumber(this.xSetting)) {\n this.attr({ x: this.xSetting }); // #5134\n }\n }\n };\n SVGLabel.prototype.anchorXSetter = function (value, key) {\n this.anchorX = value;\n this.boxAttr(key, Math.round(value) - this.getCrispAdjust() - this.xSetting);\n };\n SVGLabel.prototype.anchorYSetter = function (value, key) {\n this.anchorY = value;\n this.boxAttr(key, value - this.ySetting);\n };\n /*\n * Set a box attribute, or defer it if the box is not yet created\n */\n SVGLabel.prototype.boxAttr = function (key, value) {\n if (this.box) {\n this.box.attr(key, value);\n }\n else {\n this.deferredAttr[key] = value;\n }\n };\n /*\n * Pick up some properties and apply them to the text instead of the\n * wrapper.\n */\n SVGLabel.prototype.css = function (styles) {\n if (styles) {\n var textStyles_1 = {};\n // Create a copy to avoid altering the original object\n // (#537)\n styles = merge(styles);\n SVGLabel.textProps.forEach(function (prop) {\n if (typeof styles[prop] !== 'undefined') {\n textStyles_1[prop] = styles[prop];\n delete styles[prop];\n }\n });\n this.text.css(textStyles_1);\n // Update existing text, box (#9400, #12163, #18212)\n if ('fontSize' in textStyles_1 || 'fontWeight' in textStyles_1) {\n this.updateTextPadding();\n }\n else if ('width' in textStyles_1 || 'textOverflow' in textStyles_1) {\n this.updateBoxSize();\n }\n }\n return SVGElement.prototype.css.call(this, styles);\n };\n /*\n * Destroy and release memory.\n */\n SVGLabel.prototype.destroy = function () {\n // Added by button implementation\n removeEvent(this.element, 'mouseenter');\n removeEvent(this.element, 'mouseleave');\n if (this.text) {\n this.text.destroy();\n }\n if (this.box) {\n this.box = this.box.destroy();\n }\n // Call base implementation to destroy the rest\n SVGElement.prototype.destroy.call(this);\n return void 0;\n };\n SVGLabel.prototype.fillSetter = function (value, key) {\n if (value) {\n this.needsBox = true;\n }\n // for animation getter (#6776)\n this.fill = value;\n this.boxAttr(key, value);\n };\n /*\n * Return the bounding box of the box, not the group.\n */\n SVGLabel.prototype.getBBox = function () {\n // If we have a text string and the DOM bBox was 0, it typically means\n // that the label was first rendered hidden, so we need to update the\n // bBox (#15246)\n if (this.textStr && this.bBox.width === 0 && this.bBox.height === 0) {\n this.updateBoxSize();\n }\n var padding = this.padding;\n var paddingLeft = pick(this.paddingLeft,\n padding);\n return {\n width: this.width,\n height: this.height,\n x: this.bBox.x - paddingLeft,\n y: this.bBox.y - padding\n };\n };\n SVGLabel.prototype.getCrispAdjust = function () {\n return this.renderer.styledMode && this.box ?\n this.box.strokeWidth() % 2 / 2 :\n (this['stroke-width'] ? parseInt(this['stroke-width'], 10) : 0) % 2 / 2;\n };\n SVGLabel.prototype.heightSetter = function (value) {\n this.heightSetting = value;\n };\n /*\n * After the text element is added, get the desired size of the border\n * box and add it before the text in the DOM.\n */\n SVGLabel.prototype.onAdd = function () {\n this.text.add(this);\n this.attr({\n // Alignment is available now (#3295, 0 not rendered if given\n // as a value)\n text: pick(this.textStr, ''),\n x: this.x || 0,\n y: this.y || 0\n });\n if (this.box && defined(this.anchorX)) {\n this.attr({\n anchorX: this.anchorX,\n anchorY: this.anchorY\n });\n }\n };\n SVGLabel.prototype.paddingSetter = function (value, key) {\n if (!isNumber(value)) {\n this[key] = void 0;\n }\n else if (value !== this[key]) {\n this[key] = value;\n this.updateTextPadding();\n }\n };\n SVGLabel.prototype.rSetter = function (value, key) {\n this.boxAttr(key, value);\n };\n SVGLabel.prototype.shadow = function (b) {\n if (b && !this.renderer.styledMode) {\n this.updateBoxSize();\n if (this.box) {\n this.box.shadow(b);\n }\n }\n return this;\n };\n SVGLabel.prototype.strokeSetter = function (value, key) {\n // for animation getter (#6776)\n this.stroke = value;\n this.boxAttr(key, value);\n };\n SVGLabel.prototype['stroke-widthSetter'] = function (value, key) {\n if (value) {\n this.needsBox = true;\n }\n this['stroke-width'] = value;\n this.boxAttr(key, value);\n };\n SVGLabel.prototype['text-alignSetter'] = function (value) {\n this.textAlign = value;\n };\n SVGLabel.prototype.textSetter = function (text) {\n if (typeof text !== 'undefined') {\n // Must use .attr to ensure transforms are done (#10009)\n this.text.attr({ text: text });\n }\n this.updateTextPadding();\n };\n /*\n * This function runs after the label is added to the DOM (when the bounding\n * box is available), and after the text of the label is updated to detect\n * the new bounding box and reflect it in the border box.\n */\n SVGLabel.prototype.updateBoxSize = function () {\n var text = this.text,\n style = text.element.style,\n attribs = {},\n padding = this.padding, \n // #12165 error when width is null (auto)\n // #12163 when fontweight: bold, recalculate bBox withot cache\n // #3295 && 3514 box failure when string equals 0\n bBox = this.bBox = (((!isNumber(this.widthSetting) ||\n !isNumber(this.heightSetting) ||\n this.textAlign) && defined(text.textStr)) ?\n text.getBBox() :\n SVGLabel.emptyBBox);\n var crispAdjust;\n this.width = this.getPaddedWidth();\n this.height = (this.heightSetting || bBox.height || 0) + 2 * padding;\n var metrics = this.renderer.fontMetrics(style && style.fontSize,\n text);\n // Update the label-scoped y offset. Math.min because of inline\n // style (#9400)\n this.baselineOffset = padding + Math.min(\n // When applicable, use the font size of the first line (#15707)\n (this.text.firstLineMetrics || metrics).b, \n // When the height is 0, there is no bBox, so go with the font\n // metrics. Highmaps CSS demos.\n bBox.height || Infinity);\n // #15491: Vertical centering\n if (this.heightSetting) {\n this.baselineOffset += (this.heightSetting - metrics.h) / 2;\n }\n if (this.needsBox && !text.textPath) {\n // Create the border box if it is not already present\n if (!this.box) {\n // Symbol definition exists (#5324)\n var box = this.box = this.symbolKey ?\n this.renderer.symbol(this.symbolKey) :\n this.renderer.rect();\n box.addClass(// Don't use label className for buttons\n (this.className === 'button' ?\n '' : 'highcharts-label-box') +\n (this.className ?\n ' highcharts-' + this.className + '-box' : ''));\n box.add(this);\n }\n crispAdjust = this.getCrispAdjust();\n attribs.x = crispAdjust;\n attribs.y = ((this.baseline ? -this.baselineOffset : 0) + crispAdjust);\n // Apply the box attributes\n attribs.width = Math.round(this.width);\n attribs.height = Math.round(this.height);\n this.box.attr(extend(attribs, this.deferredAttr));\n this.deferredAttr = {};\n }\n };\n /*\n * This function runs after setting text or padding, but only if padding\n * is changed.\n */\n SVGLabel.prototype.updateTextPadding = function () {\n var text = this.text;\n if (!text.textPath) {\n this.updateBoxSize();\n // Determine y based on the baseline\n var textY = this.baseline ? 0 : this.baselineOffset;\n var textX = pick(this.paddingLeft,\n this.padding);\n // compensate for alignment\n if (defined(this.widthSetting) &&\n this.bBox &&\n (this.textAlign === 'center' || this.textAlign === 'right')) {\n textX += { center: 0.5, right: 1 }[this.textAlign] * (this.widthSetting - this.bBox.width);\n }\n // update if anything changed\n if (textX !== text.x || textY !== text.y) {\n text.attr('x', textX);\n // #8159 - prevent misplaced data labels in treemap\n // (useHTML: true)\n if (text.hasBoxWidthChanged) {\n this.bBox = text.getBBox(true);\n }\n if (typeof textY !== 'undefined') {\n text.attr('y', textY);\n }\n }\n // record current values\n text.x = textX;\n text.y = textY;\n }\n };\n SVGLabel.prototype.widthSetter = function (value) {\n // width:auto => null\n this.widthSetting = isNumber(value) ? value : void 0;\n };\n SVGLabel.prototype.getPaddedWidth = function () {\n var padding = this.padding;\n var paddingLeft = pick(this.paddingLeft,\n padding);\n var paddingRight = pick(this.paddingRight,\n padding);\n return ((this.widthSetting || this.bBox.width || 0) +\n paddingLeft +\n paddingRight);\n };\n SVGLabel.prototype.xSetter = function (value) {\n this.x = value; // for animation getter\n if (this.alignFactor) {\n value -= this.alignFactor * this.getPaddedWidth();\n // Force animation even when setting to the same value (#7898)\n this['forceAnimate:x'] = true;\n }\n this.xSetting = Math.round(value);\n this.attr('translateX', this.xSetting);\n };\n SVGLabel.prototype.ySetter = function (value) {\n this.ySetting = this.y = Math.round(value);\n this.attr('translateY', this.ySetting);\n };\n /* *\n *\n * Static Properties\n *\n * */\n SVGLabel.emptyBBox = {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n /**\n * For labels, these CSS properties are applied to the `text` node directly.\n *\n * @private\n * @name Highcharts.SVGLabel#textProps\n * @type {Array<string>}\n */\n SVGLabel.textProps = [\n 'color', 'direction', 'fontFamily', 'fontSize', 'fontStyle',\n 'fontWeight', 'lineHeight', 'textAlign', 'textDecoration',\n 'textOutline', 'textOverflow', 'width'\n ];\n return SVGLabel;\n }(SVGElement));\n /* *\n *\n * Default Export\n *\n * */\n\n return SVGLabel;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/Symbols.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defined = U.defined,\n isNumber = U.isNumber,\n pick = U.pick;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable require-jsdoc, valid-jsdoc */\n function arc(x, y, w, h, options) {\n var arc = [];\n if (options) {\n var start = options.start || 0,\n rx = pick(options.r,\n w),\n ry = pick(options.r,\n h || w),\n proximity = 0.001,\n fullCircle = (Math.abs((options.end || 0) - start - 2 * Math.PI) <\n proximity), \n // Substract a small number to prevent cos and sin of start\n // and end from becoming equal on 360 arcs (related: #1561)\n end = (options.end || 0) - proximity,\n innerRadius = options.innerR,\n open_1 = pick(options.open,\n fullCircle),\n cosStart = Math.cos(start),\n sinStart = Math.sin(start),\n cosEnd = Math.cos(end),\n sinEnd = Math.sin(end), \n // Proximity takes care of rounding errors around PI (#6971)\n longArc = pick(options.longArc,\n end - start - Math.PI < proximity ? 0 : 1);\n arc.push([\n 'M',\n x + rx * cosStart,\n y + ry * sinStart\n ], [\n 'A',\n rx,\n ry,\n 0,\n longArc,\n pick(options.clockwise, 1),\n x + rx * cosEnd,\n y + ry * sinEnd\n ]);\n if (defined(innerRadius)) {\n arc.push(open_1 ?\n [\n 'M',\n x + innerRadius * cosEnd,\n y + innerRadius * sinEnd\n ] : [\n 'L',\n x + innerRadius * cosEnd,\n y + innerRadius * sinEnd\n ], [\n 'A',\n innerRadius,\n innerRadius,\n 0,\n longArc,\n // Clockwise - opposite to the outer arc clockwise\n defined(options.clockwise) ? 1 - options.clockwise : 0,\n x + innerRadius * cosStart,\n y + innerRadius * sinStart\n ]);\n }\n if (!open_1) {\n arc.push(['Z']);\n }\n }\n return arc;\n }\n /**\n * Callout shape used for default tooltips, also used for rounded\n * rectangles in VML\n */\n function callout(x, y, w, h, options) {\n var arrowLength = 6,\n halfDistance = 6,\n r = Math.min((options && options.r) || 0,\n w,\n h),\n safeDistance = r + halfDistance,\n anchorX = options && options.anchorX,\n anchorY = options && options.anchorY || 0;\n var path = roundedRect(x,\n y,\n w,\n h, { r: r });\n if (!isNumber(anchorX)) {\n return path;\n }\n // Anchor on right side\n if (x + anchorX >= w) {\n // Chevron\n if (anchorY > y + safeDistance &&\n anchorY < y + h - safeDistance) {\n path.splice(3, 1, ['L', x + w, anchorY - halfDistance], ['L', x + w + arrowLength, anchorY], ['L', x + w, anchorY + halfDistance], ['L', x + w, y + h - r]);\n // Simple connector\n }\n else {\n path.splice(3, 1, ['L', x + w, h / 2], ['L', anchorX, anchorY], ['L', x + w, h / 2], ['L', x + w, y + h - r]);\n }\n // Anchor on left side\n }\n else if (x + anchorX <= 0) {\n // Chevron\n if (anchorY > y + safeDistance &&\n anchorY < y + h - safeDistance) {\n path.splice(7, 1, ['L', x, anchorY + halfDistance], ['L', x - arrowLength, anchorY], ['L', x, anchorY - halfDistance], ['L', x, y + r]);\n // Simple connector\n }\n else {\n path.splice(7, 1, ['L', x, h / 2], ['L', anchorX, anchorY], ['L', x, h / 2], ['L', x, y + r]);\n }\n }\n else if ( // replace bottom\n anchorY &&\n anchorY > h &&\n anchorX > x + safeDistance &&\n anchorX < x + w - safeDistance) {\n path.splice(5, 1, ['L', anchorX + halfDistance, y + h], ['L', anchorX, y + h + arrowLength], ['L', anchorX - halfDistance, y + h], ['L', x + r, y + h]);\n }\n else if ( // replace top\n anchorY &&\n anchorY < 0 &&\n anchorX > x + safeDistance &&\n anchorX < x + w - safeDistance) {\n path.splice(1, 1, ['L', anchorX - halfDistance, y], ['L', anchorX, y - arrowLength], ['L', anchorX + halfDistance, y], ['L', w - r, y]);\n }\n return path;\n }\n function circle(x, y, w, h) {\n // Return a full arc\n return arc(x + w / 2, y + h / 2, w / 2, h / 2, {\n start: Math.PI * 0.5,\n end: Math.PI * 2.5,\n open: false\n });\n }\n function diamond(x, y, w, h) {\n return [\n ['M', x + w / 2, y],\n ['L', x + w, y + h / 2],\n ['L', x + w / 2, y + h],\n ['L', x, y + h / 2],\n ['Z']\n ];\n }\n // #15291\n function rect(x, y, w, h, options) {\n if (options && options.r) {\n return roundedRect(x, y, w, h, options);\n }\n return [\n ['M', x, y],\n ['L', x + w, y],\n ['L', x + w, y + h],\n ['L', x, y + h],\n ['Z']\n ];\n }\n function roundedRect(x, y, w, h, options) {\n var r = (options && options.r) || 0;\n return [\n ['M', x + r, y],\n ['L', x + w - r, y],\n ['C', x + w, y, x + w, y, x + w, y + r],\n ['L', x + w, y + h - r],\n ['C', x + w, y + h, x + w, y + h, x + w - r, y + h],\n ['L', x + r, y + h],\n ['C', x, y + h, x, y + h, x, y + h - r],\n ['L', x, y + r],\n ['C', x, y, x, y, x + r, y] // top-left corner\n ];\n }\n function triangle(x, y, w, h) {\n return [\n ['M', x + w / 2, y],\n ['L', x + w, y + h],\n ['L', x, y + h],\n ['Z']\n ];\n }\n function triangleDown(x, y, w, h) {\n return [\n ['M', x, y],\n ['L', x + w, y],\n ['L', x + w / 2, y + h],\n ['Z']\n ];\n }\n var Symbols = {\n arc: arc,\n callout: callout,\n circle: circle,\n diamond: diamond,\n rect: rect,\n roundedRect: roundedRect,\n square: rect,\n triangle: triangle,\n 'triangle-down': triangleDown\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return Symbols;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/TextBuilder.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (AST, H, U) {\n /* *\n *\n * (c) 2010-2020 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var doc = H.doc,\n SVG_NS = H.SVG_NS,\n win = H.win;\n var attr = U.attr,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isString = U.isString,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * SVG Text Builder\n * @private\n * @class\n * @name Highcharts.TextBuilder\n */\n var TextBuilder = /** @class */ (function () {\n function TextBuilder(svgElement) {\n var textStyles = svgElement.styles;\n this.renderer = svgElement.renderer;\n this.svgElement = svgElement;\n this.width = svgElement.textWidth;\n this.textLineHeight = textStyles && textStyles.lineHeight;\n this.textOutline = textStyles && textStyles.textOutline;\n this.ellipsis = Boolean(textStyles && textStyles.textOverflow === 'ellipsis');\n this.noWrap = Boolean(textStyles && textStyles.whiteSpace === 'nowrap');\n this.fontSize = textStyles && textStyles.fontSize;\n }\n /**\n * Build an SVG representation of the pseudo HTML given in the object's\n * svgElement.\n *\n * @private\n *\n * @return {void}.\n */\n TextBuilder.prototype.buildSVG = function () {\n var wrapper = this.svgElement, textNode = wrapper.element, renderer = wrapper.renderer, textStr = pick(wrapper.textStr, '').toString(), hasMarkup = textStr.indexOf('<') !== -1, childNodes = textNode.childNodes, tempParent = this.width && !wrapper.added && renderer.box, regexMatchBreaks = /<br.*?>/g, \n // The buildText code is quite heavy, so if we're not changing\n // something that affects the text, skip it (#6113).\n textCache = [\n textStr,\n this.ellipsis,\n this.noWrap,\n this.textLineHeight,\n this.textOutline,\n this.fontSize,\n this.width\n ].join(',');\n if (textCache === wrapper.textCache) {\n return;\n }\n wrapper.textCache = textCache;\n delete wrapper.actualWidth;\n // Remove old text\n for (var i = childNodes.length; i--;) {\n textNode.removeChild(childNodes[i]);\n }\n // Simple strings, add text directly and return\n if (!hasMarkup &&\n !this.ellipsis &&\n !this.width &&\n !wrapper.textPath &&\n (textStr.indexOf(' ') === -1 ||\n (this.noWrap && !regexMatchBreaks.test(textStr)))) {\n textNode.appendChild(doc.createTextNode(this.unescapeEntities(textStr)));\n // Complex strings, add more logic\n }\n else if (textStr !== '') {\n if (tempParent) {\n // attach it to the DOM to read offset width\n tempParent.appendChild(textNode);\n }\n // Step 1. Parse the markup safely and directly into a tree\n // structure.\n var ast = new AST(textStr);\n // Step 2. Do as many as we can of the modifications to the tree\n // structure before it is added to the DOM\n this.modifyTree(ast.nodes);\n ast.addToDOM(textNode);\n // Step 3. Some modifications can't be done until the structure is\n // in the DOM, because we need to read computed metrics.\n this.modifyDOM();\n // Add title if an ellipsis was added\n if (this.ellipsis &&\n (textNode.textContent || '').indexOf('\\u2026') !== -1) {\n wrapper.attr('title', this.unescapeEntities(wrapper.textStr || '', ['<', '>']) // #7179\n );\n }\n if (tempParent) {\n tempParent.removeChild(textNode);\n }\n }\n // Apply the text outline\n if (isString(this.textOutline) && wrapper.applyTextOutline) {\n wrapper.applyTextOutline(this.textOutline);\n }\n };\n /**\n * Modify the DOM of the generated SVG structure. This function only does\n * operations that cannot be done until the elements are attached to the\n * DOM, like doing layout based on rendered metrics of the added elements.\n *\n * @private\n *\n */\n TextBuilder.prototype.modifyDOM = function () {\n var _this = this;\n var wrapper = this.svgElement;\n var x = attr(wrapper.element, 'x');\n wrapper.firstLineMetrics = void 0;\n // Remove empty tspans (including breaks) from the beginning because\n // SVG's getBBox doesn't count empty lines. The use case is tooltip\n // where the header is empty. By doing this in the DOM rather than in\n // the AST, we can inspect the textContent directly and don't have to\n // recurse down to look for valid content.\n var firstChild;\n while ((firstChild = wrapper.element.firstChild)) {\n if (/^[\\s\\u200B]*$/.test(firstChild.textContent || ' ')) {\n wrapper.element.removeChild(firstChild);\n }\n else {\n break;\n }\n }\n // Modify hard line breaks by applying the rendered line height\n [].forEach.call(wrapper.element.querySelectorAll('tspan.highcharts-br'), function (br, i) {\n if (br.nextSibling && br.previousSibling) { // #5261\n if (i === 0 && br.previousSibling.nodeType === 1) {\n wrapper.firstLineMetrics = wrapper.renderer\n .fontMetrics(void 0, br.previousSibling);\n }\n attr(br, {\n // Since the break is inserted in front of the next\n // line, we need to use the next sibling for the line\n // height\n dy: _this.getLineHeight(br.nextSibling),\n x: x\n });\n }\n });\n // Constrain the line width, either by ellipsis or wrapping\n var width = this.width || 0;\n if (!width) {\n return;\n }\n // Insert soft line breaks into each text node\n var modifyTextNode = function (textNode,\n parentElement) {\n var text = textNode.textContent || '';\n var words = text\n .replace(/([^\\^])-/g, '$1- ') // Split on hyphens\n // .trim()\n .split(' '); // #1273\n var hasWhiteSpace = !_this.noWrap && (words.length > 1 || wrapper.element.childNodes.length > 1);\n var dy = _this.getLineHeight(parentElement);\n var lineNo = 0;\n var startAt = wrapper.actualWidth;\n if (_this.ellipsis) {\n if (text) {\n _this.truncate(textNode, text, void 0, 0, \n // Target width\n Math.max(0, \n // Substract the font face to make room for the\n // ellipsis itself\n width - parseInt(_this.fontSize || 12, 10)), \n // Build the text to test for\n function (text, currentIndex) {\n return text.substring(0, currentIndex) + '\\u2026';\n });\n }\n }\n else if (hasWhiteSpace) {\n var lines = [];\n // Remove preceding siblings in order to make the text length\n // calculation correct in the truncate function\n var precedingSiblings = [];\n while (parentElement.firstChild &&\n parentElement.firstChild !== textNode) {\n precedingSiblings.push(parentElement.firstChild);\n parentElement.removeChild(parentElement.firstChild);\n }\n while (words.length) {\n // Apply the previous line\n if (words.length && !_this.noWrap && lineNo > 0) {\n lines.push(textNode.textContent || '');\n textNode.textContent = words.join(' ')\n .replace(/- /g, '-');\n }\n // For each line, truncate the remaining\n // words into the line length.\n _this.truncate(textNode, void 0, words, lineNo === 0 ? (startAt || 0) : 0, width, \n // Build the text to test for\n function (t, currentIndex) {\n return words\n .slice(0, currentIndex)\n .join(' ')\n .replace(/- /g, '-');\n });\n startAt = wrapper.actualWidth;\n lineNo++;\n }\n // Reinsert the preceding child nodes\n precedingSiblings.forEach(function (childNode) {\n parentElement.insertBefore(childNode, textNode);\n });\n // Insert the previous lines before the original text node\n lines.forEach(function (line) {\n // Insert the line\n parentElement.insertBefore(doc.createTextNode(line), textNode);\n // Insert a break\n var br = doc.createElementNS(SVG_NS, 'tspan');\n br.textContent = '\\u200B'; // zero-width space\n attr(br, { dy: dy, x: x });\n parentElement.insertBefore(br, textNode);\n });\n }\n };\n // Recurse down the DOM tree and handle line breaks for each text node\n var modifyChildren = (function (node) {\n var childNodes = [].slice.call(node.childNodes);\n childNodes.forEach(function (childNode) {\n if (childNode.nodeType === win.Node.TEXT_NODE) {\n modifyTextNode(childNode, node);\n }\n else {\n // Reset word-wrap width readings after hard breaks\n if (childNode.className.baseVal\n .indexOf('highcharts-br') !== -1) {\n wrapper.actualWidth = 0;\n }\n // Recurse down to child node\n modifyChildren(childNode);\n }\n });\n });\n modifyChildren(wrapper.element);\n };\n /**\n * Get the rendered line height of a <text>, <tspan> or pure text node.\n *\n * @param {DOMElementType|Text} node The node to check for\n *\n * @return {number} The rendered line height\n */\n TextBuilder.prototype.getLineHeight = function (node) {\n var fontSizeStyle;\n // If the node is a text node, use its parent\n var element = (node.nodeType === win.Node.TEXT_NODE) ?\n node.parentElement :\n node;\n if (!this.renderer.styledMode) {\n fontSizeStyle =\n element && /(px|em)$/.test(element.style.fontSize) ?\n element.style.fontSize :\n (this.fontSize || this.renderer.style.fontSize || 12);\n }\n return this.textLineHeight ?\n parseInt(this.textLineHeight.toString(), 10) :\n this.renderer.fontMetrics(fontSizeStyle, element || this.svgElement.element).h;\n };\n /**\n * Transform a pseudo HTML AST node tree into an SVG structure. We do as\n * much heavy lifting as we can here, before doing the final processing in\n * the modifyDOM function. The original data is mutated.\n *\n * @private\n *\n * @param {ASTNode[]} nodes The AST nodes\n *\n */\n TextBuilder.prototype.modifyTree = function (nodes) {\n var _this = this;\n var modifyChild = function (node,\n i) {\n var _a = node.attributes,\n attributes = _a === void 0 ? {} : _a,\n children = node.children,\n _b = node.style,\n style = _b === void 0 ? {} : _b,\n tagName = node.tagName,\n styledMode = _this.renderer.styledMode;\n // Apply styling to text tags\n if (tagName === 'b' || tagName === 'strong') {\n if (styledMode) {\n // eslint-disable-next-line dot-notation\n attributes['class'] = 'highcharts-strong';\n }\n else {\n style.fontWeight = 'bold';\n }\n }\n else if (tagName === 'i' || tagName === 'em') {\n if (styledMode) {\n // eslint-disable-next-line dot-notation\n attributes['class'] = 'highcharts-emphasized';\n }\n else {\n style.fontStyle = 'italic';\n }\n }\n // Modify styling\n if (style && style.color) {\n style.fill = style.color;\n }\n // Handle breaks\n if (tagName === 'br') {\n attributes['class'] = 'highcharts-br'; // eslint-disable-line dot-notation\n node.textContent = '\\u200B'; // zero-width space\n // Trim whitespace off the beginning of new lines\n var nextNode = nodes[i + 1];\n if (nextNode && nextNode.textContent) {\n nextNode.textContent =\n nextNode.textContent.replace(/^ +/gm, '');\n }\n // If an anchor has direct text node children, the text is unable to\n // wrap because there is no `getSubStringLength` function on the\n // element. Therefore we need to wrap the child text node or nodes\n // in a tspan. #16173.\n }\n else if (tagName === 'a' &&\n children &&\n children.some(function (child) { return child.tagName === '#text'; })) {\n node.children = [{ children: children, tagName: 'tspan' }];\n }\n if (tagName !== '#text' && tagName !== 'a') {\n node.tagName = 'tspan';\n }\n extend(node, { attributes: attributes, style: style });\n // Recurse\n if (children) {\n children\n .filter(function (c) { return c.tagName !== '#text'; })\n .forEach(modifyChild);\n }\n };\n nodes.forEach(modifyChild);\n fireEvent(this.svgElement, 'afterModifyTree', { nodes: nodes });\n };\n /*\n * Truncate the text node contents to a given length. Used when the css\n * width is set. If the `textOverflow` is `ellipsis`, the text is truncated\n * character by character to the given length. If not, the text is\n * word-wrapped line by line.\n */\n TextBuilder.prototype.truncate = function (textNode, text, words, startAt, width, getString) {\n var svgElement = this.svgElement;\n var renderer = svgElement.renderer,\n rotation = svgElement.rotation;\n // Cache the lengths to avoid checking the same twice\n var lengths = [];\n // Word wrap cannot be truncated to shorter than one word, ellipsis\n // text can be completely blank.\n var minIndex = words ? 1 : 0;\n var maxIndex = (text || words || '').length;\n var currentIndex = maxIndex;\n var str;\n var actualWidth;\n var getSubStringLength = function (charEnd,\n concatenatedEnd) {\n // charEnd is used when finding the character-by-character\n // break for ellipsis, concatenatedEnd is used for word-by-word\n // break for word wrapping.\n var end = concatenatedEnd || charEnd;\n var parentNode = textNode.parentNode;\n if (parentNode && typeof lengths[end] === 'undefined') {\n // Modern browsers\n if (parentNode.getSubStringLength) {\n // Fails with DOM exception on unit-tests/legend/members\n // of unknown reason. Desired width is 0, text content\n // is \"5\" and end is 1.\n try {\n lengths[end] = startAt +\n parentNode.getSubStringLength(0, words ? end + 1 : end);\n }\n catch (e) {\n '';\n }\n // Legacy\n }\n else if (renderer.getSpanWidth) { // #9058 jsdom\n textNode.textContent = getString(text || words, charEnd);\n lengths[end] = startAt +\n renderer.getSpanWidth(svgElement, textNode);\n }\n }\n return lengths[end];\n };\n svgElement.rotation = 0; // discard rotation when computing box\n actualWidth = getSubStringLength(textNode.textContent.length);\n if (startAt + actualWidth > width) {\n // Do a binary search for the index where to truncate the text\n while (minIndex <= maxIndex) {\n currentIndex = Math.ceil((minIndex + maxIndex) / 2);\n // When checking words for word-wrap, we need to build the\n // string and measure the subStringLength at the concatenated\n // word length.\n if (words) {\n str = getString(words, currentIndex);\n }\n actualWidth = getSubStringLength(currentIndex, str && str.length - 1);\n if (minIndex === maxIndex) {\n // Complete\n minIndex = maxIndex + 1;\n }\n else if (actualWidth > width) {\n // Too large. Set max index to current.\n maxIndex = currentIndex - 1;\n }\n else {\n // Within width. Set min index to current.\n minIndex = currentIndex;\n }\n }\n // If max index was 0 it means the shortest possible text was also\n // too large. For ellipsis that means only the ellipsis, while for\n // word wrap it means the whole first word.\n if (maxIndex === 0) {\n // Remove ellipsis\n textNode.textContent = '';\n // If the new text length is one less than the original, we don't\n // need the ellipsis\n }\n else if (!(text && maxIndex === text.length - 1)) {\n textNode.textContent = str || getString(text || words, currentIndex);\n }\n }\n // When doing line wrapping, prepare for the next line by removing the\n // items from this line.\n if (words) {\n words.splice(0, currentIndex);\n }\n svgElement.actualWidth = actualWidth;\n svgElement.rotation = rotation; // Apply rotation again.\n };\n /*\n * Un-escape HTML entities based on the public `renderer.escapes` list\n *\n * @private\n *\n * @param {string} inputStr The string to unescape\n * @param {Array<string>} [except] Exceptions\n *\n * @return {string} The processed string\n */\n TextBuilder.prototype.unescapeEntities = function (inputStr, except) {\n objectEach(this.renderer.escapes, function (value, key) {\n if (!except || except.indexOf(value) === -1) {\n inputStr = inputStr.toString().replace(new RegExp(value, 'g'), key);\n }\n });\n return inputStr;\n };\n return TextBuilder;\n }());\n\n return TextBuilder;\n });\n _registerModule(_modules, 'Core/Renderer/SVG/SVGRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGLabel.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Renderer/SVG/TextBuilder.js'], _modules['Core/Utilities.js']], function (AST, Color, H, RendererRegistry, SVGElement, SVGLabel, Symbols, TextBuilder, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var charts = H.charts,\n deg2rad = H.deg2rad,\n doc = H.doc,\n isFirefox = H.isFirefox,\n isMS = H.isMS,\n isWebKit = H.isWebKit,\n noop = H.noop,\n SVG_NS = H.SVG_NS,\n symbolSizes = H.symbolSizes,\n win = H.win;\n var addEvent = U.addEvent,\n attr = U.attr,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n extend = U.extend,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isObject = U.isObject,\n isString = U.isString,\n merge = U.merge,\n pick = U.pick,\n pInt = U.pInt,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Variables\n *\n * */\n var hasInternalReferenceBug;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Allows direct access to the Highcharts rendering layer in order to draw\n * primitive shapes like circles, rectangles, paths or text directly on a chart,\n * or independent from any chart. The SVGRenderer represents a wrapper object\n * for SVG in modern browsers. Through the VMLRenderer, part of the `oldie.js`\n * module, it also brings vector graphics to IE <= 8.\n *\n * An existing chart's renderer can be accessed through {@link Chart.renderer}.\n * The renderer can also be used completely decoupled from a chart.\n *\n * @sample highcharts/members/renderer-on-chart\n * Annotating a chart programmatically.\n * @sample highcharts/members/renderer-basic\n * Independent SVG drawing.\n *\n * @example\n * // Use directly without a chart object.\n * let renderer = new Highcharts.Renderer(parentNode, 600, 400);\n *\n * @class\n * @name Highcharts.SVGRenderer\n *\n * @param {Highcharts.HTMLDOMElement} container\n * Where to put the SVG in the web page.\n *\n * @param {number} width\n * The width of the SVG.\n *\n * @param {number} height\n * The height of the SVG.\n *\n * @param {Highcharts.CSSObject} [style]\n * The box style, if not in styleMode\n *\n * @param {boolean} [forExport=false]\n * Whether the rendered content is intended for export.\n *\n * @param {boolean} [allowHTML=true]\n * Whether the renderer is allowed to include HTML text, which will be\n * projected on top of the SVG.\n *\n * @param {boolean} [styledMode=false]\n * Whether the renderer belongs to a chart that is in styled mode.\n * If it does, it will avoid setting presentational attributes in\n * some cases, but not when set explicitly through `.attr` and `.css`\n * etc.\n */\n var SVGRenderer = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function SVGRenderer(container, width, height, style, forExport, allowHTML, styledMode) {\n /* *\n *\n * Properties\n *\n * */\n this.alignedObjects = void 0;\n /**\n * The root `svg` node of the renderer.\n *\n * @name Highcharts.SVGRenderer#box\n * @type {Highcharts.SVGDOMElement}\n */\n this.box = void 0;\n /**\n * The wrapper for the root `svg` node of the renderer.\n *\n * @name Highcharts.SVGRenderer#boxWrapper\n * @type {Highcharts.SVGElement}\n */\n this.boxWrapper = void 0;\n this.cache = void 0;\n this.cacheKeys = void 0;\n this.chartIndex = void 0;\n /**\n * A pointer to the `defs` node of the root SVG.\n *\n * @name Highcharts.SVGRenderer#defs\n * @type {Highcharts.SVGElement}\n */\n this.defs = void 0;\n this.globalAnimation = void 0;\n this.gradients = void 0;\n this.height = void 0;\n this.imgCount = void 0;\n this.isSVG = void 0;\n this.style = void 0;\n /**\n * Page url used for internal references.\n *\n * @private\n * @name Highcharts.SVGRenderer#url\n * @type {string}\n */\n this.url = void 0;\n this.width = void 0;\n this.init(container, width, height, style, forExport, allowHTML, styledMode);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Initialize the SVGRenderer. Overridable initializer function that takes\n * the same parameters as the constructor.\n *\n * @function Highcharts.SVGRenderer#init\n *\n * @param {Highcharts.HTMLDOMElement} container\n * Where to put the SVG in the web page.\n *\n * @param {number} width\n * The width of the SVG.\n *\n * @param {number} height\n * The height of the SVG.\n *\n * @param {Highcharts.CSSObject} [style]\n * The box style, if not in styleMode\n *\n * @param {boolean} [forExport=false]\n * Whether the rendered content is intended for export.\n *\n * @param {boolean} [allowHTML=true]\n * Whether the renderer is allowed to include HTML text, which will be\n * projected on top of the SVG.\n *\n * @param {boolean} [styledMode=false]\n * Whether the renderer belongs to a chart that is in styled mode. If it\n * does, it will avoid setting presentational attributes in some cases, but\n * not when set explicitly through `.attr` and `.css` etc.\n */\n SVGRenderer.prototype.init = function (container, width, height, style, forExport, allowHTML, styledMode) {\n var renderer = this,\n boxWrapper = renderer\n .createElement('svg')\n .attr({\n version: '1.1',\n 'class': 'highcharts-root'\n }),\n element = boxWrapper.element;\n if (!styledMode) {\n boxWrapper.css(this.getStyle(style));\n }\n container.appendChild(element);\n // Always use ltr on the container, otherwise text-anchor will be\n // flipped and text appear outside labels, buttons, tooltip etc (#3482)\n attr(container, 'dir', 'ltr');\n // For browsers other than IE, add the namespace attribute (#1978)\n if (container.innerHTML.indexOf('xmlns') === -1) {\n attr(element, 'xmlns', this.SVG_NS);\n }\n // object properties\n renderer.isSVG = true;\n this.box = element;\n this.boxWrapper = boxWrapper;\n renderer.alignedObjects = [];\n this.url = this.getReferenceURL();\n // Add description\n var desc = this.createElement('desc').add();\n desc.element.appendChild(doc.createTextNode('Created with Highcharts 10.3.3'));\n renderer.defs = this.createElement('defs').add();\n renderer.allowHTML = allowHTML;\n renderer.forExport = forExport;\n renderer.styledMode = styledMode;\n renderer.gradients = {}; // Object where gradient SvgElements are stored\n renderer.cache = {}; // Cache for numerical bounding boxes\n renderer.cacheKeys = [];\n renderer.imgCount = 0;\n renderer.setSize(width, height, false);\n // Issue 110 workaround:\n // In Firefox, if a div is positioned by percentage, its pixel position\n // may land between pixels. The container itself doesn't display this,\n // but an SVG element inside this container will be drawn at subpixel\n // precision. In order to draw sharp lines, this must be compensated\n // for. This doesn't seem to work inside iframes though (like in\n // jsFiddle).\n var subPixelFix,\n rect;\n if (isFirefox && container.getBoundingClientRect) {\n subPixelFix = function () {\n css(container, { left: 0, top: 0 });\n rect = container.getBoundingClientRect();\n css(container, {\n left: (Math.ceil(rect.left) - rect.left) + 'px',\n top: (Math.ceil(rect.top) - rect.top) + 'px'\n });\n };\n // run the fix now\n subPixelFix();\n // run it on resize\n renderer.unSubPixelFix = addEvent(win, 'resize', subPixelFix);\n }\n };\n /**\n * General method for adding a definition to the SVG `defs` tag. Can be used\n * for gradients, fills, filters etc. Styled mode only. A hook for adding\n * general definitions to the SVG's defs tag. Definitions can be referenced\n * from the CSS by its `id`. Read more in\n * [gradients, shadows and patterns](https://www.highcharts.com/docs/chart-design-and-style/gradients-shadows-and-patterns).\n * Styled mode only.\n *\n * @function Highcharts.SVGRenderer#definition\n *\n * @param {Highcharts.ASTNode} def\n * A serialized form of an SVG definition, including children.\n *\n * @return {Highcharts.SVGElement}\n * The inserted node.\n */\n SVGRenderer.prototype.definition = function (def) {\n var ast = new AST([def]);\n return ast.addToDOM(this.defs.element);\n };\n /**\n * Get the prefix needed for internal URL references to work in certain\n * cases. Some older browser versions had a bug where internal url\n * references in SVG attributes, on the form `url(#some-id)`, would fail if\n * a base tag was present in the page. There were also issues with\n * `history.pushState` related to this prefix.\n *\n * Related issues: #24, #672, #1070, #5244.\n *\n * The affected browsers are:\n * - Chrome <= 53 (May 2018)\n * - Firefox <= 51 (January 2017)\n * - Safari/Mac <= 12.1 (2018 or 2019)\n * - Safari/iOS <= 13\n *\n * @todo Remove this hack when time has passed. All the affected browsers\n * are evergreens, so it is increasingly unlikely that users are affected by\n * the bug.\n *\n * @return {string}\n * The prefix to use. An empty string for modern browsers.\n */\n SVGRenderer.prototype.getReferenceURL = function () {\n if ((isFirefox || isWebKit) &&\n doc.getElementsByTagName('base').length) {\n // Detect if a clip path is taking effect by performing a hit test\n // outside the clipped area. If the hit element is the rectangle\n // that was supposed to be clipped, the bug is present. This only\n // has to be performed once per page load, so we store the result\n // locally in the module.\n if (!defined(hasInternalReferenceBug)) {\n var id = uniqueKey();\n var ast = new AST([{\n tagName: 'svg',\n attributes: {\n width: 8,\n height: 8\n },\n children: [{\n tagName: 'defs',\n children: [{\n tagName: 'clipPath',\n attributes: {\n id: id\n },\n children: [{\n tagName: 'rect',\n attributes: {\n width: 4,\n height: 4\n }\n }]\n }]\n }, {\n tagName: 'rect',\n attributes: {\n id: 'hitme',\n width: 8,\n height: 8,\n 'clip-path': \"url(#\".concat(id, \")\"),\n fill: 'rgba(0,0,0,0.001)'\n }\n }]\n }]);\n var svg = ast.addToDOM(doc.body);\n css(svg, {\n position: 'fixed',\n top: 0,\n left: 0,\n zIndex: 9e5\n });\n var hitElement = doc.elementFromPoint(6, 6);\n hasInternalReferenceBug = (hitElement && hitElement.id) === 'hitme';\n doc.body.removeChild(svg);\n }\n if (hasInternalReferenceBug) {\n return win.location.href\n .split('#')[0] // remove the hash\n .replace(/<[^>]*>/g, '') // wing cut HTML\n // escape parantheses and quotes\n .replace(/([\\('\\)])/g, '\\\\$1')\n // replace spaces (needed for Safari only)\n .replace(/ /g, '%20');\n }\n }\n return '';\n };\n /**\n * Get the global style setting for the renderer.\n *\n * @private\n * @function Highcharts.SVGRenderer#getStyle\n *\n * @param {Highcharts.CSSObject} style\n * Style settings.\n *\n * @return {Highcharts.CSSObject}\n * The style settings mixed with defaults.\n */\n SVGRenderer.prototype.getStyle = function (style) {\n this.style = extend({\n fontFamily: '\"Lucida Grande\", \"Lucida Sans Unicode\", ' +\n 'Arial, Helvetica, sans-serif',\n fontSize: '12px'\n }, style);\n return this.style;\n };\n /**\n * Apply the global style on the renderer, mixed with the default styles.\n *\n * @function Highcharts.SVGRenderer#setStyle\n *\n * @param {Highcharts.CSSObject} style\n * CSS to apply.\n */\n SVGRenderer.prototype.setStyle = function (style) {\n this.boxWrapper.css(this.getStyle(style));\n };\n /**\n * Detect whether the renderer is hidden. This happens when one of the\n * parent elements has `display: none`. Used internally to detect when we\n * needto render preliminarily in another div to get the text bounding boxes\n * right.\n *\n * @function Highcharts.SVGRenderer#isHidden\n *\n * @return {boolean}\n * True if it is hidden.\n */\n SVGRenderer.prototype.isHidden = function () {\n return !this.boxWrapper.getBBox().width;\n };\n /**\n * Destroys the renderer and its allocated members.\n *\n * @function Highcharts.SVGRenderer#destroy\n *\n * @return {null}\n * Pass through value.\n */\n SVGRenderer.prototype.destroy = function () {\n var renderer = this,\n rendererDefs = renderer.defs;\n renderer.box = null;\n renderer.boxWrapper = renderer.boxWrapper.destroy();\n // Call destroy on all gradient elements\n destroyObjectProperties(renderer.gradients || {});\n renderer.gradients = null;\n // Defs are null in VMLRenderer\n // Otherwise, destroy them here.\n if (rendererDefs) {\n renderer.defs = rendererDefs.destroy();\n }\n // Remove sub pixel fix handler (#982)\n if (renderer.unSubPixelFix) {\n renderer.unSubPixelFix();\n }\n renderer.alignedObjects = null;\n return null;\n };\n /**\n * Create a wrapper for an SVG element. Serves as a factory for\n * {@link SVGElement}, but this function is itself mostly called from\n * primitive factories like {@link SVGRenderer#path}, {@link\n * SVGRenderer#rect} or {@link SVGRenderer#text}.\n *\n * @function Highcharts.SVGRenderer#createElement\n *\n * @param {string} nodeName\n * The node name, for example `rect`, `g` etc.\n *\n * @return {Highcharts.SVGElement}\n * The generated SVGElement.\n */\n SVGRenderer.prototype.createElement = function (nodeName) {\n var wrapper = new this.Element();\n wrapper.init(this, nodeName);\n return wrapper;\n };\n /**\n * Get converted radial gradient attributes according to the radial\n * reference. Used internally from the {@link SVGElement#colorGradient}\n * function.\n *\n * @private\n * @function Highcharts.SVGRenderer#getRadialAttr\n */\n SVGRenderer.prototype.getRadialAttr = function (radialReference, gradAttr) {\n return {\n cx: (radialReference[0] - radialReference[2] / 2) +\n (gradAttr.cx || 0) * radialReference[2],\n cy: (radialReference[1] - radialReference[2] / 2) +\n (gradAttr.cy || 0) * radialReference[2],\n r: (gradAttr.r || 0) * radialReference[2]\n };\n };\n /**\n * Parse a simple HTML string into SVG tspans. Called internally when text\n * is set on an SVGElement. The function supports a subset of HTML tags, CSS\n * text features like `width`, `text-overflow`, `white-space`, and also\n * attributes like `href` and `style`.\n *\n * @private\n * @function Highcharts.SVGRenderer#buildText\n *\n * @param {Highcharts.SVGElement} wrapper\n * The parent SVGElement.\n */\n SVGRenderer.prototype.buildText = function (wrapper) {\n new TextBuilder(wrapper).buildSVG();\n };\n /**\n * Returns white for dark colors and black for bright colors, based on W3C's\n * definition of [Relative luminance](\n * https://www.w3.org/WAI/GL/wiki/Relative_luminance).\n *\n * @function Highcharts.SVGRenderer#getContrast\n *\n * @param {Highcharts.ColorString} color\n * The color to get the contrast for.\n *\n * @return {Highcharts.ColorString}\n * The contrast color, either `#000000` or `#FFFFFF`.\n */\n SVGRenderer.prototype.getContrast = function (color) {\n // #6216, #17273\n var rgba = Color.parse(color).rgba\n .map(function (b8) {\n var c = b8 / 255;\n return c <= 0.03928 ?\n c / 12.92 :\n Math.pow((c + 0.055) / 1.055, 2.4);\n });\n // Relative luminance\n var l = 0.2126 * rgba[0] + 0.7152 * rgba[1] + 0.0722 * rgba[2];\n // Use white or black based on which provides more contrast\n return 1.05 / (l + 0.05) > (l + 0.05) / 0.05 ? '#FFFFFF' : '#000000';\n };\n /**\n * Create a button with preset states.\n *\n * @function Highcharts.SVGRenderer#button\n *\n * @param {string} text\n * The text or HTML to draw.\n *\n * @param {number} x\n * The x position of the button's left side.\n *\n * @param {number} y\n * The y position of the button's top side.\n *\n * @param {Highcharts.EventCallbackFunction<Highcharts.SVGElement>} callback\n * The function to execute on button click or touch.\n *\n * @param {Highcharts.SVGAttributes} [theme]\n * SVG attributes for the normal state.\n *\n * @param {Highcharts.SVGAttributes} [hoverState]\n * SVG attributes for the hover state.\n *\n * @param {Highcharts.SVGAttributes} [selectState]\n * SVG attributes for the pressed state.\n *\n * @param {Highcharts.SVGAttributes} [disabledState]\n * SVG attributes for the disabled state.\n *\n * @param {Highcharts.SymbolKeyValue} [shape=rect]\n * The shape type.\n *\n * @param {boolean} [useHTML=false]\n * Whether to use HTML to render the label.\n *\n * @return {Highcharts.SVGElement}\n * The button element.\n */\n SVGRenderer.prototype.button = function (text, x, y, callback, theme, hoverState, selectState, disabledState, shape, useHTML) {\n if (theme === void 0) { theme = {}; }\n var label = this.label(text,\n x,\n y,\n shape,\n void 0,\n void 0,\n useHTML,\n void 0, 'button'),\n styledMode = this.styledMode,\n states = theme.states || {};\n var curState = 0;\n theme = merge(theme);\n delete theme.states;\n var normalStyle = merge({\n color: \"#333333\" /* Palette.neutralColor80 */,\n cursor: 'pointer',\n fontWeight: 'normal'\n },\n theme.style);\n delete theme.style;\n // Remove stylable attributes. Pass in the ButtonThemeObject and get the\n // SVGAttributes subset back.\n var normalState = AST.filterUserAttributes(theme);\n // Default, non-stylable attributes\n label.attr(merge({ padding: 8, r: 2 }, normalState));\n // Presentational. The string type is a mistake, it is just for\n // compliance with SVGAttribute and is not used in button theme.\n var hoverStyle,\n selectStyle,\n disabledStyle;\n if (!styledMode) {\n // Normal state - prepare the attributes\n normalState = merge({\n fill: \"#f7f7f7\" /* Palette.neutralColor3 */,\n stroke: \"#cccccc\" /* Palette.neutralColor20 */,\n 'stroke-width': 1\n }, normalState);\n // Hover state\n hoverState = merge(normalState, {\n fill: \"#e6e6e6\" /* Palette.neutralColor10 */\n }, AST.filterUserAttributes(hoverState || states.hover || {}));\n hoverStyle = hoverState.style;\n delete hoverState.style;\n // Pressed state\n selectState = merge(normalState, {\n fill: \"#e6ebf5\" /* Palette.highlightColor10 */,\n style: {\n color: \"#000000\" /* Palette.neutralColor100 */,\n fontWeight: 'bold'\n }\n }, AST.filterUserAttributes(selectState || states.select || {}));\n selectStyle = selectState.style;\n delete selectState.style;\n // Disabled state\n disabledState = merge(normalState, {\n style: {\n color: \"#cccccc\" /* Palette.neutralColor20 */\n }\n }, AST.filterUserAttributes(disabledState || states.disabled || {}));\n disabledStyle = disabledState.style;\n delete disabledState.style;\n }\n // Add the events. IE9 and IE10 need mouseover and mouseout to function\n // (#667).\n addEvent(label.element, isMS ? 'mouseover' : 'mouseenter', function () {\n if (curState !== 3) {\n label.setState(1);\n }\n });\n addEvent(label.element, isMS ? 'mouseout' : 'mouseleave', function () {\n if (curState !== 3) {\n label.setState(curState);\n }\n });\n label.setState = function (state) {\n // Hover state is temporary, don't record it\n if (state !== 1) {\n label.state = curState = state;\n }\n // Update visuals\n label\n .removeClass(/highcharts-button-(normal|hover|pressed|disabled)/)\n .addClass('highcharts-button-' +\n ['normal', 'hover', 'pressed', 'disabled'][state || 0]);\n if (!styledMode) {\n label\n .attr([\n normalState,\n hoverState,\n selectState,\n disabledState\n ][state || 0]);\n var css_1 = [\n normalStyle,\n hoverStyle,\n selectStyle,\n disabledStyle\n ][state || 0];\n if (isObject(css_1)) {\n label.css(css_1);\n }\n }\n };\n // Presentational attributes\n if (!styledMode) {\n label\n .attr(normalState)\n .css(extend({ cursor: 'default' }, normalStyle));\n // HTML labels don't need to handle pointer events because click and\n // mouseenter/mouseleave is bound to the underlying <g> element.\n // Should this be reconsidered, we need more complex logic to share\n // events between the <g> and its <div> counterpart, and avoid\n // triggering mouseenter/mouseleave when hovering from one to the\n // other (#17440).\n if (useHTML) {\n label.text.css({ pointerEvents: 'none' });\n }\n }\n return label\n .on('touchstart', function (e) { return e.stopPropagation(); })\n .on('click', function (e) {\n if (curState !== 3) {\n callback.call(label, e);\n }\n });\n };\n /**\n * Make a straight line crisper by not spilling out to neighbour pixels.\n *\n * @function Highcharts.SVGRenderer#crispLine\n *\n * @param {Highcharts.SVGPathArray} points\n * The original points on the format `[['M', 0, 0], ['L', 100, 0]]`.\n *\n * @param {number} width\n * The width of the line.\n *\n * @param {string} [roundingFunction=round]\n * The rounding function name on the `Math` object, can be one of\n * `round`, `floor` or `ceil`.\n *\n * @return {Highcharts.SVGPathArray}\n * The original points array, but modified to render crisply.\n */\n SVGRenderer.prototype.crispLine = function (points, width, roundingFunction) {\n if (roundingFunction === void 0) { roundingFunction = 'round'; }\n var start = points[0];\n var end = points[1];\n // Normalize to a crisp line\n if (defined(start[1]) && start[1] === end[1]) {\n // Substract due to #1129. Now bottom and left axis gridlines behave\n // the same.\n start[1] = end[1] =\n Math[roundingFunction](start[1]) - (width % 2 / 2);\n }\n if (defined(start[2]) && start[2] === end[2]) {\n start[2] = end[2] =\n Math[roundingFunction](start[2]) + (width % 2 / 2);\n }\n return points;\n };\n /**\n * Draw a path, wraps the SVG `path` element.\n *\n * @sample highcharts/members/renderer-path-on-chart/\n * Draw a path in a chart\n * @sample highcharts/members/renderer-path/\n * Draw a path independent from a chart\n *\n * @example\n * let path = renderer.path(['M', 10, 10, 'L', 30, 30, 'z'])\n * .attr({ stroke: '#ff00ff' })\n * .add();\n *\n * @function Highcharts.SVGRenderer#path\n *\n * @param {Highcharts.SVGPathArray} [path]\n * An SVG path definition in array form.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n *\n */ /**\n * Draw a path, wraps the SVG `path` element.\n *\n * @function Highcharts.SVGRenderer#path\n *\n * @param {Highcharts.SVGAttributes} [attribs]\n * The initial attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.path = function (path) {\n var attribs = (this.styledMode ? {} : {\n fill: 'none'\n });\n if (isArray(path)) {\n attribs.d = path;\n }\n else if (isObject(path)) { // attributes\n extend(attribs, path);\n }\n return this.createElement('path').attr(attribs);\n };\n /**\n * Draw a circle, wraps the SVG `circle` element.\n *\n * @sample highcharts/members/renderer-circle/\n * Drawing a circle\n *\n * @function Highcharts.SVGRenderer#circle\n *\n * @param {number} [x]\n * The center x position.\n *\n * @param {number} [y]\n * The center y position.\n *\n * @param {number} [r]\n * The radius.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw a circle, wraps the SVG `circle` element.\n *\n * @function Highcharts.SVGRenderer#circle\n *\n * @param {Highcharts.SVGAttributes} [attribs]\n * The initial attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.circle = function (x, y, r) {\n var attribs = (isObject(x) ?\n x :\n typeof x === 'undefined' ? {} : { x: x, y: y, r: r }), wrapper = this.createElement('circle');\n // Setting x or y translates to cx and cy\n wrapper.xSetter = wrapper.ySetter = function (value, key, element) {\n element.setAttribute('c' + key, value);\n };\n return wrapper.attr(attribs);\n };\n /**\n * Draw and return an arc.\n *\n * @sample highcharts/members/renderer-arc/\n * Drawing an arc\n *\n * @function Highcharts.SVGRenderer#arc\n *\n * @param {number} [x=0]\n * Center X position.\n *\n * @param {number} [y=0]\n * Center Y position.\n *\n * @param {number} [r=0]\n * The outer radius' of the arc.\n *\n * @param {number} [innerR=0]\n * Inner radius like used in donut charts.\n *\n * @param {number} [start=0]\n * The starting angle of the arc in radians, where 0 is to the right and\n * `-Math.PI/2` is up.\n *\n * @param {number} [end=0]\n * The ending angle of the arc in radians, where 0 is to the right and\n * `-Math.PI/2` is up.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw and return an arc. Overloaded function that takes arguments object.\n *\n * @function Highcharts.SVGRenderer#arc\n *\n * @param {Highcharts.SVGAttributes} attribs\n * Initial SVG attributes.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.arc = function (x, y, r, innerR, start, end) {\n var options;\n if (isObject(x)) {\n options = x;\n y = options.y;\n r = options.r;\n innerR = options.innerR;\n start = options.start;\n end = options.end;\n x = options.x;\n }\n else {\n options = { innerR: innerR, start: start, end: end };\n }\n // Arcs are defined as symbols for the ability to set\n // attributes in attr and animate\n var arc = this.symbol('arc',\n x,\n y,\n r,\n r,\n options);\n arc.r = r; // #959\n return arc;\n };\n /**\n * Draw and return a rectangle.\n *\n * @function Highcharts.SVGRenderer#rect\n *\n * @param {number} [x]\n * Left position.\n *\n * @param {number} [y]\n * Top position.\n *\n * @param {number} [width]\n * Width of the rectangle.\n *\n * @param {number} [height]\n * Height of the rectangle.\n *\n * @param {number} [r]\n * Border corner radius.\n *\n * @param {number} [strokeWidth]\n * A stroke width can be supplied to allow crisp drawing.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */ /**\n * Draw and return a rectangle.\n *\n * @sample highcharts/members/renderer-rect-on-chart/\n * Draw a rectangle in a chart\n * @sample highcharts/members/renderer-rect/\n * Draw a rectangle independent from a chart\n *\n * @function Highcharts.SVGRenderer#rect\n *\n * @param {Highcharts.SVGAttributes} [attributes]\n * General SVG attributes for the rectangle.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.rect = function (x, y, width, height, r, strokeWidth) {\n r = isObject(x) ? x.r : r;\n var wrapper = this.createElement('rect');\n var attribs = (isObject(x) ?\n x :\n typeof x === 'undefined' ?\n {} :\n {\n x: x,\n y: y,\n width: Math.max(width, 0),\n height: Math.max(height, 0)\n });\n if (!this.styledMode) {\n if (typeof strokeWidth !== 'undefined') {\n attribs['stroke-width'] = strokeWidth;\n attribs = wrapper.crisp(attribs);\n }\n attribs.fill = 'none';\n }\n if (r) {\n attribs.r = r;\n }\n wrapper.rSetter = function (value, _key, element) {\n wrapper.r = value;\n attr(element, {\n rx: value,\n ry: value\n });\n };\n wrapper.rGetter = function () {\n return wrapper.r || 0;\n };\n return wrapper.attr(attribs);\n };\n /**\n * Resize the {@link SVGRenderer#box} and re-align all aligned child\n * elements.\n *\n * @sample highcharts/members/renderer-g/\n * Show and hide grouped objects\n *\n * @function Highcharts.SVGRenderer#setSize\n *\n * @param {number} width\n * The new pixel width.\n *\n * @param {number} height\n * The new pixel height.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animate=true]\n * Whether and how to animate.\n */\n SVGRenderer.prototype.setSize = function (width, height, animate) {\n var renderer = this;\n renderer.width = width;\n renderer.height = height;\n renderer.boxWrapper.animate({\n width: width,\n height: height\n }, {\n step: function () {\n this.attr({\n viewBox: '0 0 ' + this.attr('width') + ' ' +\n this.attr('height')\n });\n },\n duration: pick(animate, true) ? void 0 : 0\n });\n renderer.alignElements();\n };\n /**\n * Create and return an svg group element. Child\n * {@link Highcharts.SVGElement} objects are added to the group by using the\n * group as the first parameter in {@link Highcharts.SVGElement#add|add()}.\n *\n * @function Highcharts.SVGRenderer#g\n *\n * @param {string} [name]\n * The group will be given a class name of `highcharts-{name}`. This\n * can be used for styling and scripting.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.g = function (name) {\n var elem = this.createElement('g');\n return name ?\n elem.attr({ 'class': 'highcharts-' + name }) :\n elem;\n };\n /**\n * Display an image.\n *\n * @sample highcharts/members/renderer-image-on-chart/\n * Add an image in a chart\n * @sample highcharts/members/renderer-image/\n * Add an image independent of a chart\n *\n * @function Highcharts.SVGRenderer#image\n *\n * @param {string} src\n * The image source.\n *\n * @param {number} [x]\n * The X position.\n *\n * @param {number} [y]\n * The Y position.\n *\n * @param {number} [width]\n * The image width. If omitted, it defaults to the image file width.\n *\n * @param {number} [height]\n * The image height. If omitted it defaults to the image file\n * height.\n *\n * @param {Function} [onload]\n * Event handler for image load.\n *\n * @return {Highcharts.SVGElement}\n * The generated wrapper element.\n */\n SVGRenderer.prototype.image = function (src, x, y, width, height, onload) {\n var attribs = { preserveAspectRatio: 'none' }, setSVGImageSource = function (el, src) {\n // Set the href in the xlink namespace\n if (el.setAttributeNS) {\n el.setAttributeNS('http://www.w3.org/1999/xlink', 'href', src);\n }\n else {\n // could be exporting in IE\n // using href throws \"not supported\" in ie7 and under,\n // requries regex shim to fix later\n el.setAttribute('hc-svg-href', src);\n }\n };\n // Optional properties (#11756)\n if (isNumber(x)) {\n attribs.x = x;\n }\n if (isNumber(y)) {\n attribs.y = y;\n }\n if (isNumber(width)) {\n attribs.width = width;\n }\n if (isNumber(height)) {\n attribs.height = height;\n }\n var elemWrapper = this.createElement('image').attr(attribs),\n onDummyLoad = function (e) {\n setSVGImageSource(elemWrapper.element,\n src);\n onload.call(elemWrapper, e);\n };\n // Add load event if supplied\n if (onload) {\n // We have to use a dummy HTML image since IE support for SVG image\n // load events is very buggy. First set a transparent src, wait for\n // dummy to load, and then add the real src to the SVG image.\n setSVGImageSource(elemWrapper.element, 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' /* eslint-disable-line */);\n var dummy = new win.Image();\n addEvent(dummy, 'load', onDummyLoad);\n dummy.src = src;\n if (dummy.complete) {\n onDummyLoad({});\n }\n }\n else {\n setSVGImageSource(elemWrapper.element, src);\n }\n return elemWrapper;\n };\n /**\n * Draw a symbol out of pre-defined shape paths from\n * {@link SVGRenderer#symbols}.\n * It is used in Highcharts for point makers, which cake a `symbol` option,\n * and label and button backgrounds like in the tooltip and stock flags.\n *\n * @function Highcharts.SVGRenderer#symbol\n *\n * @param {string} symbol\n * The symbol name.\n *\n * @param {number} [x]\n * The X coordinate for the top left position.\n *\n * @param {number} [y]\n * The Y coordinate for the top left position.\n *\n * @param {number} [width]\n * The pixel width.\n *\n * @param {number} [height]\n * The pixel height.\n *\n * @param {Highcharts.SymbolOptionsObject} [options]\n * Additional options, depending on the actual symbol drawn.\n *\n * @return {Highcharts.SVGElement}\n * SVG symbol.\n */\n SVGRenderer.prototype.symbol = function (symbol, x, y, width, height, options) {\n var ren = this,\n imageRegex = /^url\\((.*?)\\)$/,\n isImage = imageRegex.test(symbol),\n sym = (!isImage && (this.symbols[symbol] ? symbol : 'circle')), \n // get the symbol definition function\n symbolFn = (sym && this.symbols[sym]);\n var obj,\n path,\n imageSrc,\n centerImage;\n if (symbolFn) {\n // Check if there's a path defined for this symbol\n if (typeof x === 'number') {\n path = symbolFn.call(this.symbols, Math.round(x || 0), Math.round(y || 0), width || 0, height || 0, options);\n }\n obj = this.path(path);\n if (!ren.styledMode) {\n obj.attr('fill', 'none');\n }\n // expando properties for use in animate and attr\n extend(obj, {\n symbolName: (sym || void 0),\n x: x,\n y: y,\n width: width,\n height: height\n });\n if (options) {\n extend(obj, options);\n }\n // Image symbols\n }\n else if (isImage) {\n imageSrc = symbol.match(imageRegex)[1];\n // Create the image synchronously, add attribs async\n var img_1 = obj = this.image(imageSrc);\n // The image width is not always the same as the symbol width. The\n // image may be centered within the symbol, as is the case when\n // image shapes are used as label backgrounds, for example in flags.\n img_1.imgwidth = pick(symbolSizes[imageSrc] && symbolSizes[imageSrc].width, options && options.width);\n img_1.imgheight = pick(symbolSizes[imageSrc] && symbolSizes[imageSrc].height, options && options.height);\n /**\n * Set the size and position\n */\n centerImage = function (obj) { return obj.attr({\n width: obj.width,\n height: obj.height\n }); };\n /**\n * Width and height setters that take both the image's physical size\n * and the label size into consideration, and translates the image\n * to center within the label.\n */\n ['width', 'height'].forEach(function (key) {\n img_1[key + 'Setter'] = function (value, key) {\n this[key] = value;\n var _a = this,\n alignByTranslate = _a.alignByTranslate,\n element = _a.element,\n width = _a.width,\n height = _a.height,\n imgwidth = _a.imgwidth,\n imgheight = _a.imgheight;\n var imgSize = this['img' + key];\n if (defined(imgSize)) {\n var scale = 1;\n // Scale and center the image within its container.\n // The name `backgroundSize` is taken from the CSS spec,\n // but the value `within` is made up. Other possible\n // values in the spec, `cover` and `contain`, can be\n // implemented if needed.\n if (options &&\n options.backgroundSize === 'within' &&\n width &&\n height) {\n scale = Math.min(width / imgwidth, height / imgheight);\n imgSize = Math.round(imgSize * scale);\n // Update both width and height to keep the ratio\n // correct (#17315)\n attr(element, {\n width: Math.round(imgwidth * scale),\n height: Math.round(imgheight * scale)\n });\n }\n else if (element) {\n element.setAttribute(key, imgSize);\n }\n if (!alignByTranslate) {\n this.translate(((width || 0) - (imgSize * scale)) / 2, ((height || 0) - (imgSize * scale)) / 2);\n }\n }\n };\n });\n if (defined(x)) {\n img_1.attr({\n x: x,\n y: y\n });\n }\n img_1.isImg = true;\n if (defined(img_1.imgwidth) && defined(img_1.imgheight)) {\n centerImage(img_1);\n }\n else {\n // Initialize image to be 0 size so export will still function\n // if there's no cached sizes.\n img_1.attr({ width: 0, height: 0 });\n // Create a dummy JavaScript image to get the width and height.\n createElement('img', {\n onload: function () {\n var chart = charts[ren.chartIndex];\n // Special case for SVGs on IE11, the width is not\n // accessible until the image is part of the DOM\n // (#2854).\n if (this.width === 0) {\n css(this, {\n position: 'absolute',\n top: '-999em'\n });\n doc.body.appendChild(this);\n }\n // Center the image\n symbolSizes[imageSrc] = {\n width: this.width,\n height: this.height\n };\n img_1.imgwidth = this.width;\n img_1.imgheight = this.height;\n if (img_1.element) {\n centerImage(img_1);\n }\n // Clean up after #2854 workaround.\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n // Fire the load event when all external images are\n // loaded\n ren.imgCount--;\n if (!ren.imgCount && chart && !chart.hasLoaded) {\n chart.onload();\n }\n },\n src: imageSrc\n });\n this.imgCount++;\n }\n }\n return obj;\n };\n /**\n * Define a clipping rectangle. The clipping rectangle is later applied\n * to {@link SVGElement} objects through the {@link SVGElement#clip}\n * function.\n *\n * @example\n * let circle = renderer.circle(100, 100, 100)\n * .attr({ fill: 'red' })\n * .add();\n * let clipRect = renderer.clipRect(100, 100, 100, 100);\n *\n * // Leave only the lower right quarter visible\n * circle.clip(clipRect);\n *\n * @function Highcharts.SVGRenderer#clipRect\n *\n * @param {number} [x]\n *\n * @param {number} [y]\n *\n * @param {number} [width]\n *\n * @param {number} [height]\n *\n * @return {Highcharts.ClipRectElement}\n * A clipping rectangle.\n */\n SVGRenderer.prototype.clipRect = function (x, y, width, height) {\n var \n // Add a hyphen at the end to avoid confusion in testing indexes\n // -1 and -10, -11 etc (#6550)\n id = uniqueKey() + '-', clipPath = this.createElement('clipPath').attr({\n id: id\n }).add(this.defs), wrapper = this.rect(x, y, width, height, 0).add(clipPath);\n wrapper.id = id;\n wrapper.clipPath = clipPath;\n wrapper.count = 0;\n return wrapper;\n };\n /**\n * Draw text. The text can contain a subset of HTML, like spans and anchors\n * and some basic text styling of these. For more advanced features like\n * border and background, use {@link Highcharts.SVGRenderer#label} instead.\n * To update the text after render, run `text.attr({ text: 'New text' })`.\n *\n * @sample highcharts/members/renderer-text-on-chart/\n * Annotate the chart freely\n * @sample highcharts/members/renderer-on-chart/\n * Annotate with a border and in response to the data\n * @sample highcharts/members/renderer-text/\n * Formatted text\n *\n * @function Highcharts.SVGRenderer#text\n *\n * @param {string} [str]\n * The text of (subset) HTML to draw.\n *\n * @param {number} [x]\n * The x position of the text's lower left corner.\n *\n * @param {number} [y]\n * The y position of the text's lower left corner.\n *\n * @param {boolean} [useHTML=false]\n * Use HTML to render the text.\n *\n * @return {Highcharts.SVGElement}\n * The text object.\n */\n SVGRenderer.prototype.text = function (str, x, y, useHTML) {\n var renderer = this,\n attribs = {};\n if (useHTML && (renderer.allowHTML || !renderer.forExport)) {\n return renderer.html(str, x, y);\n }\n attribs.x = Math.round(x || 0); // X always needed for line-wrap logic\n if (y) {\n attribs.y = Math.round(y);\n }\n if (defined(str)) {\n attribs.text = str;\n }\n var wrapper = renderer.createElement('text').attr(attribs);\n if (!useHTML || (renderer.forExport && !renderer.allowHTML)) {\n wrapper.xSetter = function (value, key, element) {\n var tspans = element.getElementsByTagName('tspan'),\n parentVal = element.getAttribute(key);\n for (var i = 0, tspan = void 0; i < tspans.length; i++) {\n tspan = tspans[i];\n // If the x values are equal, the tspan represents a line\n // break\n if (tspan.getAttribute(key) === parentVal) {\n tspan.setAttribute(key, value);\n }\n }\n element.setAttribute(key, value);\n };\n }\n return wrapper;\n };\n /**\n * Utility to return the baseline offset and total line height from the font\n * size.\n *\n * @function Highcharts.SVGRenderer#fontMetrics\n *\n * @param {number|string} [fontSize]\n * The current font size to inspect. If not given, the font size\n * will be found from the DOM element.\n *\n * @param {Highcharts.SVGElement|Highcharts.SVGDOMElement} [elem]\n * The element to inspect for a current font size.\n *\n * @return {Highcharts.FontMetricsObject}\n * The font metrics.\n */\n SVGRenderer.prototype.fontMetrics = function (fontSize, elem) {\n if ((this.styledMode || !/px/.test(fontSize)) &&\n (win.getComputedStyle) // old IE doesn't support it\n ) {\n fontSize = elem && SVGElement.prototype.getStyle.call(elem, 'font-size');\n }\n else {\n fontSize = fontSize ||\n // When the elem is a DOM element (#5932)\n (elem && elem.style && elem.style.fontSize) ||\n // Fall back on the renderer style default\n (this.style && this.style.fontSize);\n }\n // Handle different units\n if (/px/.test(fontSize)) {\n fontSize = pInt(fontSize);\n }\n else {\n fontSize = 12;\n }\n // Empirical values found by comparing font size and bounding box\n // height. Applies to the default font family.\n // https://jsfiddle.net/highcharts/7xvn7/\n var lineHeight = (fontSize < 24 ?\n fontSize + 3 :\n Math.round(fontSize * 1.2)),\n baseline = Math.round(lineHeight * 0.8);\n return {\n h: lineHeight,\n b: baseline,\n f: fontSize\n };\n };\n /**\n * Correct X and Y positioning of a label for rotation (#1764).\n *\n * @private\n * @function Highcharts.SVGRenderer#rotCorr\n */\n SVGRenderer.prototype.rotCorr = function (baseline, rotation, alterY) {\n var y = baseline;\n if (rotation && alterY) {\n y = Math.max(y * Math.cos(rotation * deg2rad), 4);\n }\n return {\n x: (-baseline / 3) * Math.sin(rotation * deg2rad),\n y: y\n };\n };\n /**\n * Compatibility function to convert the legacy one-dimensional path array\n * into an array of segments.\n *\n * It is used in maps to parse the `path` option, and in SVGRenderer.dSetter\n * to support legacy paths from demos.\n *\n * @private\n * @function Highcharts.SVGRenderer#pathToSegments\n */\n SVGRenderer.prototype.pathToSegments = function (path) {\n var ret = [];\n var segment = [];\n var commandLength = {\n A: 8,\n C: 7,\n H: 2,\n L: 3,\n M: 3,\n Q: 5,\n S: 5,\n T: 3,\n V: 2\n };\n // Short, non-typesafe parsing of the one-dimensional array. It splits\n // the path on any string. This is not type checked against the tuple\n // types, but is shorter, and doesn't require specific checks for any\n // command type in SVG.\n for (var i = 0; i < path.length; i++) {\n // Command skipped, repeat previous or insert L/l for M/m\n if (isString(segment[0]) &&\n isNumber(path[i]) &&\n segment.length === commandLength[(segment[0].toUpperCase())]) {\n path.splice(i, 0, segment[0].replace('M', 'L').replace('m', 'l'));\n }\n // Split on string\n if (typeof path[i] === 'string') {\n if (segment.length) {\n ret.push(segment.slice(0));\n }\n segment.length = 0;\n }\n segment.push(path[i]);\n }\n ret.push(segment.slice(0));\n return ret;\n /*\n // Fully type-safe version where each tuple type is checked. The\n // downside is filesize and a lack of flexibility for unsupported\n // commands\n const ret: SVGPath = [],\n commands = {\n A: 7,\n C: 6,\n H: 1,\n L: 2,\n M: 2,\n Q: 4,\n S: 4,\n T: 2,\n V: 1,\n Z: 0\n };\n\n let i = 0,\n lastI = 0,\n lastCommand;\n\n while (i < path.length) {\n const item = path[i];\n\n let command;\n\n if (typeof item === 'string') {\n command = item;\n i += 1;\n } else {\n command = lastCommand || 'M';\n }\n\n // Upper case\n const commandUC = command.toUpperCase();\n\n if (commandUC in commands) {\n\n // No numeric parameters\n if (command === 'Z' || command === 'z') {\n ret.push([command]);\n\n // One numeric parameter\n } else {\n const val0 = path[i];\n if (typeof val0 === 'number') {\n\n // Horizontal line to\n if (command === 'H' || command === 'h') {\n ret.push([command, val0]);\n i += 1;\n\n // Vertical line to\n } else if (command === 'V' || command === 'v') {\n ret.push([command, val0]);\n i += 1;\n\n // Two numeric parameters\n } else {\n const val1 = path[i + 1];\n if (typeof val1 === 'number') {\n // lineTo\n if (command === 'L' || command === 'l') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // moveTo\n } else if (command === 'M' || command === 'm') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // Smooth quadratic bezier\n } else if (command === 'T' || command === 't') {\n ret.push([command, val0, val1]);\n i += 2;\n\n // Four numeric parameters\n } else {\n const val2 = path[i + 2],\n val3 = path[i + 3];\n if (\n typeof val2 === 'number' &&\n typeof val3 === 'number'\n ) {\n // Quadratic bezier to\n if (\n command === 'Q' ||\n command === 'q'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3\n ]);\n i += 4;\n\n // Smooth cubic bezier to\n } else if (\n command === 'S' ||\n command === 's'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3\n ]);\n i += 4;\n\n // Six numeric parameters\n } else {\n const val4 = path[i + 4],\n val5 = path[i + 5];\n\n if (\n typeof val4 === 'number' &&\n typeof val5 === 'number'\n ) {\n // Curve to\n if (\n command === 'C' ||\n command === 'c'\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3,\n val4,\n val5\n ]);\n i += 6;\n\n // Seven numeric parameters\n } else {\n const val6 = path[i + 6];\n\n // Arc to\n if (\n typeof val6 ===\n 'number' &&\n (\n command === 'A' ||\n command === 'a'\n )\n ) {\n ret.push([\n command,\n val0,\n val1,\n val2,\n val3,\n val4,\n val5,\n val6\n ]);\n i += 7;\n\n }\n\n }\n }\n }\n }\n }\n }\n\n }\n }\n }\n }\n\n // An unmarked command following a moveTo is a lineTo\n lastCommand = command === 'M' ? 'L' : command;\n\n if (i === lastI) {\n break;\n }\n lastI = i;\n }\n return ret;\n */\n };\n /**\n * Draw a label, which is an extended text element with support for border\n * and background. Highcharts creates a `g` element with a text and a `path`\n * or `rect` inside, to make it behave somewhat like a HTML div. Border and\n * background are set through `stroke`, `stroke-width` and `fill` attributes\n * using the {@link Highcharts.SVGElement#attr|attr} method. To update the\n * text after render, run `label.attr({ text: 'New text' })`.\n *\n * @sample highcharts/members/renderer-label-on-chart/\n * A label on the chart\n *\n * @function Highcharts.SVGRenderer#label\n *\n * @param {string} str\n * The initial text string or (subset) HTML to render.\n *\n * @param {number} x\n * The x position of the label's left side.\n *\n * @param {number} [y]\n * The y position of the label's top side or baseline, depending on\n * the `baseline` parameter.\n *\n * @param {string} [shape='rect']\n * The shape of the label's border/background, if any. Defaults to\n * `rect`. Other possible values are `callout` or other shapes\n * defined in {@link Highcharts.SVGRenderer#symbols}.\n *\n * @param {number} [anchorX]\n * In case the `shape` has a pointer, like a flag, this is the\n * coordinates it should be pinned to.\n *\n * @param {number} [anchorY]\n * In case the `shape` has a pointer, like a flag, this is the\n * coordinates it should be pinned to.\n *\n * @param {boolean} [useHTML=false]\n * Whether to use HTML to render the label.\n *\n * @param {boolean} [baseline=false]\n * Whether to position the label relative to the text baseline,\n * like {@link Highcharts.SVGRenderer#text|renderer.text}, or to the\n * upper border of the rectangle.\n *\n * @param {string} [className]\n * Class name for the group.\n *\n * @return {Highcharts.SVGElement}\n * The generated label.\n */\n SVGRenderer.prototype.label = function (str, x, y, shape, anchorX, anchorY, useHTML, baseline, className) {\n return new SVGLabel(this, str, x, y, shape, anchorX, anchorY, useHTML, baseline, className);\n };\n /**\n * Re-align all aligned elements.\n *\n * @private\n * @function Highcharts.SVGRenderer#alignElements\n */\n SVGRenderer.prototype.alignElements = function () {\n this.alignedObjects.forEach(function (el) { return el.align(); });\n };\n return SVGRenderer;\n }());\n extend(SVGRenderer.prototype, {\n /**\n * A pointer to the renderer's associated Element class. The VMLRenderer\n * will have a pointer to VMLElement here.\n *\n * @name Highcharts.SVGRenderer#Element\n * @type {Highcharts.SVGElement}\n */\n Element: SVGElement,\n SVG_NS: SVG_NS,\n /**\n * A collection of characters mapped to HTML entities. When `useHTML` on an\n * element is true, these entities will be rendered correctly by HTML. In\n * the SVG pseudo-HTML, they need to be unescaped back to simple characters,\n * so for example `<` will render as `<`.\n *\n * @example\n * // Add support for unescaping quotes\n * Highcharts.SVGRenderer.prototype.escapes['\"'] = '"';\n *\n * @name Highcharts.SVGRenderer#escapes\n * @type {Highcharts.Dictionary<string>}\n */\n escapes: {\n '&': '&',\n '<': '<',\n '>': '>',\n \"'\": ''',\n '\"': '"'\n },\n /**\n * An extendable collection of functions for defining symbol paths.\n *\n * @name Highcharts.SVGRenderer#symbols\n * @type {Highcharts.SymbolDictionary}\n */\n symbols: Symbols,\n /**\n * Dummy function for plugins, called every time the renderer is updated.\n * Prior to Highcharts 5, this was used for the canvg renderer.\n *\n * @deprecated\n * @function Highcharts.SVGRenderer#draw\n */\n draw: noop\n });\n /* *\n *\n * Registry\n *\n * */\n RendererRegistry.registerRendererType('svg', SVGRenderer, true);\n /* *\n *\n * Export Default\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A clipping rectangle that can be applied to one or more {@link SVGElement}\n * instances. It is instanciated with the {@link SVGRenderer#clipRect} function\n * and applied with the {@link SVGElement#clip} function.\n *\n * @example\n * let circle = renderer.circle(100, 100, 100)\n * .attr({ fill: 'red' })\n * .add();\n * let clipRect = renderer.clipRect(100, 100, 100, 100);\n *\n * // Leave only the lower right quarter visible\n * circle.clip(clipRect);\n *\n * @typedef {Highcharts.SVGElement} Highcharts.ClipRectElement\n */\n /**\n * The font metrics.\n *\n * @interface Highcharts.FontMetricsObject\n */ /**\n * The baseline relative to the top of the box.\n *\n * @name Highcharts.FontMetricsObject#b\n * @type {number}\n */ /**\n * The font size.\n *\n * @name Highcharts.FontMetricsObject#f\n * @type {number}\n */ /**\n * The line height.\n *\n * @name Highcharts.FontMetricsObject#h\n * @type {number}\n */\n /**\n * An object containing `x` and `y` properties for the position of an element.\n *\n * @interface Highcharts.PositionObject\n */ /**\n * X position of the element.\n * @name Highcharts.PositionObject#x\n * @type {number}\n */ /**\n * Y position of the element.\n * @name Highcharts.PositionObject#y\n * @type {number}\n */\n /**\n * A rectangle.\n *\n * @interface Highcharts.RectangleObject\n */ /**\n * Height of the rectangle.\n * @name Highcharts.RectangleObject#height\n * @type {number}\n */ /**\n * Width of the rectangle.\n * @name Highcharts.RectangleObject#width\n * @type {number}\n */ /**\n * Horizontal position of the rectangle.\n * @name Highcharts.RectangleObject#x\n * @type {number}\n */ /**\n * Vertical position of the rectangle.\n * @name Highcharts.RectangleObject#y\n * @type {number}\n */\n /**\n * The shadow options.\n *\n * @interface Highcharts.ShadowOptionsObject\n */ /**\n * The shadow color.\n * @name Highcharts.ShadowOptionsObject#color\n * @type {Highcharts.ColorString|undefined}\n * @default #000000\n */ /**\n * The horizontal offset from the element.\n *\n * @name Highcharts.ShadowOptionsObject#offsetX\n * @type {number|undefined}\n * @default 1\n */ /**\n * The vertical offset from the element.\n * @name Highcharts.ShadowOptionsObject#offsetY\n * @type {number|undefined}\n * @default 1\n */ /**\n * The shadow opacity.\n *\n * @name Highcharts.ShadowOptionsObject#opacity\n * @type {number|undefined}\n * @default 0.15\n */ /**\n * The shadow width or distance from the element.\n * @name Highcharts.ShadowOptionsObject#width\n * @type {number|undefined}\n * @default 3\n */\n /**\n * @interface Highcharts.SizeObject\n */ /**\n * @name Highcharts.SizeObject#height\n * @type {number}\n */ /**\n * @name Highcharts.SizeObject#width\n * @type {number}\n */\n /**\n * Array of path commands, that will go into the `d` attribute of an SVG\n * element.\n *\n * @typedef {Array<(Array<Highcharts.SVGPathCommand>|Array<Highcharts.SVGPathCommand,number>|Array<Highcharts.SVGPathCommand,number,number>|Array<Highcharts.SVGPathCommand,number,number,number,number>|Array<Highcharts.SVGPathCommand,number,number,number,number,number,number>|Array<Highcharts.SVGPathCommand,number,number,number,number,number,number,number>)>} Highcharts.SVGPathArray\n */\n /**\n * Possible path commands in an SVG path array. Valid values are `A`, `C`, `H`,\n * `L`, `M`, `Q`, `S`, `T`, `V`, `Z`.\n *\n * @typedef {string} Highcharts.SVGPathCommand\n * @validvalue [\"a\",\"c\",\"h\",\"l\",\"m\",\"q\",\"s\",\"t\",\"v\",\"z\",\"A\",\"C\",\"H\",\"L\",\"M\",\"Q\",\"S\",\"T\",\"V\",\"Z\"]\n */\n /**\n * An extendable collection of functions for defining symbol paths. Symbols are\n * used internally for point markers, button and label borders and backgrounds,\n * or custom shapes. Extendable by adding to {@link SVGRenderer#symbols}.\n *\n * @interface Highcharts.SymbolDictionary\n */ /**\n * @name Highcharts.SymbolDictionary#[key:string]\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#arc\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#callout\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#circle\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#diamond\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#square\n * @type {Function|undefined}\n */ /**\n * @name Highcharts.SymbolDictionary#triangle\n * @type {Function|undefined}\n */\n /**\n * Can be one of `arc`, `callout`, `circle`, `diamond`, `square`, `triangle`,\n * and `triangle-down`. Symbols are used internally for point markers, button\n * and label borders and backgrounds, or custom shapes. Extendable by adding to\n * {@link SVGRenderer#symbols}.\n *\n * @typedef {\"arc\"|\"callout\"|\"circle\"|\"diamond\"|\"square\"|\"triangle\"|\"triangle-down\"} Highcharts.SymbolKeyValue\n */\n /**\n * Additional options, depending on the actual symbol drawn.\n *\n * @interface Highcharts.SymbolOptionsObject\n */ /**\n * The anchor X position for the `callout` symbol. This is where the chevron\n * points to.\n *\n * @name Highcharts.SymbolOptionsObject#anchorX\n * @type {number|undefined}\n */ /**\n * The anchor Y position for the `callout` symbol. This is where the chevron\n * points to.\n *\n * @name Highcharts.SymbolOptionsObject#anchorY\n * @type {number|undefined}\n */ /**\n * The end angle of an `arc` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#end\n * @type {number|undefined}\n */ /**\n * Whether to draw `arc` symbol open or closed.\n *\n * @name Highcharts.SymbolOptionsObject#open\n * @type {boolean|undefined}\n */ /**\n * The radius of an `arc` symbol, or the border radius for the `callout` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#r\n * @type {number|undefined}\n */ /**\n * The start angle of an `arc` symbol.\n *\n * @name Highcharts.SymbolOptionsObject#start\n * @type {number|undefined}\n */\n (''); // keeps doclets above in transpiled file\n\n return SVGRenderer;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/HTMLElement.js', [_modules['Core/Globals.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (H, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var isFirefox = H.isFirefox,\n isMS = H.isMS,\n isWebKit = H.isWebKit,\n win = H.win;\n var css = U.css,\n defined = U.defined,\n extend = U.extend,\n pick = U.pick,\n pInt = U.pInt;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n var HTMLElement = /** @class */ (function (_super) {\n __extends(HTMLElement, _super);\n function HTMLElement() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Modifies SVGElement to support HTML elements.\n * @private\n */\n HTMLElement.compose = function (SVGElementClass) {\n if (HTMLElement.composedClasses.indexOf(SVGElementClass) === -1) {\n HTMLElement.composedClasses.push(SVGElementClass);\n var htmlElementProto = HTMLElement.prototype,\n svgElementProto = SVGElementClass.prototype;\n svgElementProto.getSpanCorrection = htmlElementProto\n .getSpanCorrection;\n svgElementProto.htmlCss = htmlElementProto.htmlCss;\n svgElementProto.htmlGetBBox = htmlElementProto.htmlGetBBox;\n svgElementProto.htmlUpdateTransform = htmlElementProto\n .htmlUpdateTransform;\n svgElementProto.setSpanRotation = htmlElementProto.setSpanRotation;\n }\n return SVGElementClass;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the correction in X and Y positioning as the element is rotated.\n * @private\n */\n HTMLElement.prototype.getSpanCorrection = function (width, baseline, alignCorrection) {\n this.xCorr = -width * alignCorrection;\n this.yCorr = -baseline;\n };\n /**\n * Apply CSS to HTML elements. This is used in text within SVG rendering and\n * by the VML renderer\n * @private\n */\n HTMLElement.prototype.htmlCss = function (styles) {\n var wrapper = this,\n element = wrapper.element, \n // When setting or unsetting the width style, we need to update\n // transform (#8809)\n isSettingWidth = (element.tagName === 'SPAN' &&\n styles &&\n 'width' in styles),\n textWidth = pick(isSettingWidth && styles.width,\n void 0);\n var doTransform;\n if (isSettingWidth) {\n delete styles.width;\n wrapper.textWidth = textWidth;\n doTransform = true;\n }\n if (styles && styles.textOverflow === 'ellipsis') {\n styles.whiteSpace = 'nowrap';\n styles.overflow = 'hidden';\n }\n wrapper.styles = extend(wrapper.styles, styles);\n css(wrapper.element, styles);\n // Now that all styles are applied, to the transform\n if (doTransform) {\n wrapper.htmlUpdateTransform();\n }\n return wrapper;\n };\n /**\n * VML and useHTML method for calculating the bounding box based on offsets.\n */\n HTMLElement.prototype.htmlGetBBox = function () {\n var wrapper = this,\n element = wrapper.element;\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n };\n /**\n * VML override private method to update elements based on internal\n * properties based on SVG transform.\n * @private\n */\n HTMLElement.prototype.htmlUpdateTransform = function () {\n // aligning non added elements is expensive\n if (!this.added) {\n this.alignOnAdd = true;\n return;\n }\n var wrapper = this,\n renderer = wrapper.renderer,\n elem = wrapper.element,\n translateX = wrapper.translateX || 0,\n translateY = wrapper.translateY || 0,\n x = wrapper.x || 0,\n y = wrapper.y || 0,\n align = wrapper.textAlign || 'left',\n alignCorrection = {\n left: 0,\n center: 0.5,\n right: 1\n }[align],\n styles = wrapper.styles,\n whiteSpace = styles && styles.whiteSpace;\n /** @private */\n function getTextPxLength() {\n if (wrapper.textPxLength) {\n return wrapper.textPxLength;\n }\n // Reset multiline/ellipsis in order to read width (#4928,\n // #5417)\n css(elem, {\n width: '',\n whiteSpace: whiteSpace || 'nowrap'\n });\n return elem.offsetWidth;\n }\n // apply translate\n css(elem, {\n marginLeft: translateX,\n marginTop: translateY\n });\n if (!renderer.styledMode && wrapper.shadows) { // used in labels/tooltip\n wrapper.shadows.forEach(function (shadow) {\n css(shadow, {\n marginLeft: translateX + 1,\n marginTop: translateY + 1\n });\n });\n }\n // apply inversion\n if (wrapper.inverted) { // wrapper is a group\n [].forEach.call(elem.childNodes, function (child) {\n renderer.invertChild(child, elem);\n });\n }\n if (elem.tagName === 'SPAN') {\n var rotation = wrapper.rotation, textWidth = wrapper.textWidth && pInt(wrapper.textWidth), currentTextTransform = [\n rotation,\n align,\n elem.innerHTML,\n wrapper.textWidth,\n wrapper.textAlign\n ].join(',');\n var baseline = void 0,\n hasBoxWidthChanged = false;\n // Update textWidth. Use the memoized textPxLength if possible, to\n // avoid the getTextPxLength function using elem.offsetWidth.\n // Calling offsetWidth affects rendering time as it forces layout\n // (#7656).\n if (textWidth !== wrapper.oldTextWidth) { // #983, #1254\n var textPxLength = getTextPxLength();\n if (((textWidth > wrapper.oldTextWidth) ||\n textPxLength > textWidth) && (\n // Only set the width if the text is able to word-wrap,\n // or text-overflow is ellipsis (#9537)\n /[ \\-]/.test(elem.textContent || elem.innerText) ||\n elem.style.textOverflow === 'ellipsis')) {\n css(elem, {\n width: (textPxLength > textWidth) || rotation ?\n textWidth + 'px' :\n 'auto',\n display: 'block',\n whiteSpace: whiteSpace || 'normal' // #3331\n });\n wrapper.oldTextWidth = textWidth;\n hasBoxWidthChanged = true; // #8159\n }\n }\n wrapper.hasBoxWidthChanged = hasBoxWidthChanged; // #8159\n // Do the calculations and DOM access only if properties changed\n if (currentTextTransform !== wrapper.cTT) {\n baseline = renderer.fontMetrics(elem.style.fontSize, elem).b;\n // Renderer specific handling of span rotation, but only if we\n // have something to update.\n if (defined(rotation) &&\n ((rotation !== (wrapper.oldRotation || 0)) ||\n (align !== wrapper.oldAlign))) {\n wrapper.setSpanRotation(rotation, alignCorrection, baseline);\n }\n wrapper.getSpanCorrection(\n // Avoid elem.offsetWidth if we can, it affects rendering\n // time heavily (#7656)\n ((!defined(rotation) && wrapper.textPxLength) || // #7920\n elem.offsetWidth), baseline, alignCorrection, rotation, align);\n }\n // apply position with correction\n css(elem, {\n left: (x + (wrapper.xCorr || 0)) + 'px',\n top: (y + (wrapper.yCorr || 0)) + 'px'\n });\n // record current text transform\n wrapper.cTT = currentTextTransform;\n wrapper.oldRotation = rotation;\n wrapper.oldAlign = align;\n }\n };\n /**\n * Set the rotation of an individual HTML span.\n * @private\n */\n HTMLElement.prototype.setSpanRotation = function (rotation, alignCorrection, baseline) {\n var getTransformKey = function () { return (isMS &&\n !/Edge/.test(win.navigator.userAgent) ?\n '-ms-transform' :\n isWebKit ?\n '-webkit-transform' :\n isFirefox ?\n 'MozTransform' :\n win.opera ?\n '-o-transform' :\n void 0); };\n var rotationStyle = {},\n cssTransformKey = getTransformKey();\n if (cssTransformKey) {\n rotationStyle[cssTransformKey] = rotationStyle.transform =\n 'rotate(' + rotation + 'deg)';\n rotationStyle[cssTransformKey + (isFirefox ? 'Origin' : '-origin')] = rotationStyle.transformOrigin =\n (alignCorrection * 100) + '% ' + baseline + 'px';\n css(this.element, rotationStyle);\n }\n };\n /* *\n *\n * Static Properties\n *\n * */\n HTMLElement.composedClasses = [];\n return HTMLElement;\n }(SVGElement));\n /* *\n *\n * Default Export\n *\n * */\n\n return HTMLElement;\n });\n _registerModule(_modules, 'Core/Renderer/HTML/HTMLRenderer.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (AST, SVGElement, SVGRenderer, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var attr = U.attr,\n createElement = U.createElement,\n extend = U.extend,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable valid-jsdoc */\n // Extend SvgRenderer for useHTML option.\n var HTMLRenderer = /** @class */ (function (_super) {\n __extends(HTMLRenderer, _super);\n function HTMLRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /** @private */\n HTMLRenderer.compose = function (SVGRendererClass) {\n if (HTMLRenderer.composedClasses.indexOf(SVGRendererClass) === -1) {\n HTMLRenderer.composedClasses.push(SVGRendererClass);\n var htmlRendererProto = HTMLRenderer.prototype,\n svgRendererProto = SVGRendererClass.prototype;\n svgRendererProto.html = htmlRendererProto.html;\n }\n return SVGRendererClass;\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Create HTML text node. This is used by the VML renderer as well as the\n * SVG renderer through the useHTML option.\n *\n * @private\n * @function Highcharts.SVGRenderer#html\n *\n * @param {string} str\n * The text of (subset) HTML to draw.\n *\n * @param {number} x\n * The x position of the text's lower left corner.\n *\n * @param {number} y\n * The y position of the text's lower left corner.\n *\n * @return {Highcharts.HTMLDOMElement}\n * HTML element.\n */\n HTMLRenderer.prototype.html = function (str, x, y) {\n var wrapper = this.createElement('span'), element = wrapper.element, renderer = wrapper.renderer, isSVG = renderer.isSVG, addSetters = function (gWrapper, style) {\n // These properties are set as attributes on the SVG group, and\n // as identical CSS properties on the div. (#3542)\n ['opacity', 'visibility'].forEach(function (prop) {\n gWrapper[prop + 'Setter'] = function (value, key, elem) {\n var styleObject = gWrapper.div ?\n gWrapper.div.style :\n style;\n SVGElement.prototype[prop + 'Setter']\n .call(this, value, key, elem);\n if (styleObject) {\n styleObject[key] = value;\n }\n };\n });\n gWrapper.addedSetters = true;\n };\n // Text setter\n wrapper.textSetter = function (value) {\n if (value !== this.textStr) {\n delete this.bBox;\n delete this.oldTextWidth;\n AST.setElementHTML(this.element, pick(value, ''));\n this.textStr = value;\n wrapper.doTransform = true;\n }\n };\n // Add setters for the element itself (#4938)\n if (isSVG) { // #4938, only for HTML within SVG\n addSetters(wrapper, wrapper.element.style);\n }\n // Various setters which rely on update transform\n wrapper.xSetter =\n wrapper.ySetter =\n wrapper.alignSetter =\n wrapper.rotationSetter =\n function (value, key) {\n if (key === 'align') {\n // Do not overwrite the SVGElement.align method. Same as VML.\n wrapper.alignValue = wrapper.textAlign = value;\n }\n else {\n wrapper[key] = value;\n }\n wrapper.doTransform = true;\n };\n // Runs at the end of .attr()\n wrapper.afterSetters = function () {\n // Update transform. Do this outside the loop to prevent redundant\n // updating for batch setting of attributes.\n if (this.doTransform) {\n this.htmlUpdateTransform();\n this.doTransform = false;\n }\n };\n // Set the default attributes\n wrapper\n .attr({\n text: str,\n x: Math.round(x),\n y: Math.round(y)\n })\n .css({\n position: 'absolute'\n });\n if (!renderer.styledMode) {\n wrapper.css({\n fontFamily: this.style.fontFamily,\n fontSize: this.style.fontSize\n });\n }\n // Keep the whiteSpace style outside the wrapper.styles collection\n element.style.whiteSpace = 'nowrap';\n // Use the HTML specific .css method\n wrapper.css = wrapper.htmlCss;\n // This is specific for HTML within SVG\n if (isSVG) {\n wrapper.add = function (svgGroupWrapper) {\n var container = renderer.box.parentNode,\n parents = [];\n var htmlGroup,\n parentGroup;\n this.parentGroup = svgGroupWrapper;\n // Create a mock group to hold the HTML elements\n if (svgGroupWrapper) {\n htmlGroup = svgGroupWrapper.div;\n if (!htmlGroup) {\n // Read the parent chain into an array and read from top\n // down\n parentGroup = svgGroupWrapper;\n while (parentGroup) {\n parents.push(parentGroup);\n // Move up to the next parent group\n parentGroup = parentGroup.parentGroup;\n }\n // Ensure dynamically updating position when any parent\n // is translated\n parents.reverse().forEach(function (parentGroup) {\n var cls = attr(parentGroup.element, 'class');\n /**\n * Common translate setter for X and Y on the HTML\n * group. Reverted the fix for #6957 du to\n * positioning problems and offline export (#7254,\n * #7280, #7529)\n * @private\n * @param {*} value\n * @param {string} key\n */\n function translateSetter(value, key) {\n parentGroup[key] = value;\n if (key === 'translateX') {\n htmlGroupStyle.left = value + 'px';\n }\n else {\n htmlGroupStyle.top = value + 'px';\n }\n parentGroup.doTransform = true;\n }\n // Create a HTML div and append it to the parent div\n // to emulate the SVG group structure\n var parentGroupStyles = parentGroup.styles || {};\n htmlGroup =\n parentGroup.div =\n parentGroup.div || createElement('div', cls ? { className: cls } : void 0, {\n position: 'absolute',\n left: (parentGroup.translateX || 0) + 'px',\n top: (parentGroup.translateY || 0) + 'px',\n display: parentGroup.display,\n opacity: parentGroup.opacity,\n cursor: parentGroupStyles.cursor,\n pointerEvents: (\n // #5595\n parentGroupStyles.pointerEvents),\n visibility: parentGroup.visibility\n // the top group is appended to container\n }, htmlGroup || container);\n // Shortcut\n var htmlGroupStyle = htmlGroup.style;\n // Set listeners to update the HTML div's position\n // whenever the SVG group position is changed.\n extend(parentGroup, {\n // (#7287) Pass htmlGroup to use\n // the related group\n classSetter: (function (htmlGroup) {\n return function (value) {\n this.element.setAttribute('class', value);\n htmlGroup.className = value;\n };\n }(htmlGroup)),\n on: function () {\n if (parents[0].div) { // #6418\n wrapper.on.apply({\n element: parents[0].div,\n onEvents: parentGroup.onEvents\n }, arguments);\n }\n return parentGroup;\n },\n translateXSetter: translateSetter,\n translateYSetter: translateSetter\n });\n if (!parentGroup.addedSetters) {\n addSetters(parentGroup);\n }\n });\n }\n }\n else {\n htmlGroup = container;\n }\n htmlGroup.appendChild(element);\n // Shared with VML:\n wrapper.added = true;\n if (wrapper.alignOnAdd) {\n wrapper.htmlUpdateTransform();\n }\n return wrapper;\n };\n }\n return wrapper;\n };\n /* *\n *\n * Static Properties\n *\n * */\n HTMLRenderer.composedClasses = [];\n return HTMLRenderer;\n }(SVGRenderer));\n /* *\n *\n * Default Export\n *\n * */\n\n return HTMLRenderer;\n });\n _registerModule(_modules, 'Core/Axis/AxisDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * Namespace\n *\n * */\n var AxisDefaults;\n (function (AxisDefaults) {\n /* *\n *\n * Constants\n *\n * */\n /**\n * The X axis or category axis. Normally this is the horizontal axis,\n * though if the chart is inverted this is the vertical axis. In case of\n * multiple axes, the xAxis node is an array of configuration objects.\n *\n * See the [Axis class](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis is hidden, but it is used behind the scenes to\n * control features like zooming and panning. Zooming is in effect the same\n * as setting the extremes of one of the exes.\n *\n * @type {*|Array<*>}\n * @optionparent xAxis\n */\n AxisDefaults.defaultXAxisOptions = {\n /**\n * When using multiple axis, the ticks of two or more opposite axes\n * will automatically be aligned by adding ticks to the axis or axes\n * with the least ticks, as if `tickAmount` were specified.\n *\n * This can be prevented by setting `alignTicks` to false. If the grid\n * lines look messy, it's a good idea to hide them for the secondary\n * axis by setting `gridLineWidth` to 0.\n *\n * If `startOnTick` or `endOnTick` in an Axis options are set to false,\n * then the `alignTicks ` will be disabled for the Axis.\n *\n * Disabled for logarithmic axes.\n *\n * @product highcharts highstock gantt\n */\n alignTicks: true,\n /**\n * Whether to allow decimals in this axis' ticks. When counting\n * integers, like persons or hits on a web page, decimals should\n * be avoided in the labels. By default, decimals are allowed on small\n * scale axes.\n *\n * @see [minTickInterval](#xAxis.minTickInterval)\n *\n * @sample {highcharts|highstock} highcharts/yaxis/allowdecimals-true/\n * True by default\n * @sample {highcharts|highstock} highcharts/yaxis/allowdecimals-false/\n * False\n *\n * @type {boolean|undefined}\n * @default undefined\n * @since 2.0\n */\n allowDecimals: void 0,\n /**\n * When using an alternate grid color, a band is painted across the\n * plot area between every other grid line.\n *\n * @sample {highcharts} highcharts/yaxis/alternategridcolor/\n * Alternate grid color on the Y axis\n * @sample {highstock} stock/xaxis/alternategridcolor/\n * Alternate grid color on the Y axis\n *\n * @type {Highcharts.ColorType}\n * @apioption xAxis.alternateGridColor\n */\n /**\n * An array defining breaks in the axis, the sections defined will be\n * left out and all the points shifted closer to each other.\n *\n * @productdesc {highcharts}\n * Requires that the broken-axis.js module is loaded.\n *\n * @sample {highcharts} highcharts/axisbreak/break-simple/\n * Simple break\n * @sample {highcharts|highstock} highcharts/axisbreak/break-visualized/\n * Advanced with callback\n * @sample {highstock} stock/demo/intraday-breaks/\n * Break on nights and weekends\n *\n * @type {Array<*>}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks\n */\n /**\n * A number indicating how much space should be left between the start\n * and the end of the break. The break size is given in axis units,\n * so for instance on a `datetime` axis, a break size of 3600000 would\n * indicate the equivalent of an hour.\n *\n * @type {number}\n * @default 0\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.breakSize\n */\n /**\n * The point where the break starts.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.from\n */\n /**\n * Defines an interval after which the break appears again. By default\n * the breaks do not repeat.\n *\n * @type {number}\n * @default 0\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.repeat\n */\n /**\n * The point where the break ends.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.breaks.to\n */\n /**\n * If categories are present for the xAxis, names are used instead of\n * numbers for that axis.\n *\n * Since Highcharts 3.0, categories can also\n * be extracted by giving each point a [name](#series.data) and setting\n * axis [type](#xAxis.type) to `category`. However, if you have multiple\n * series, best practice remains defining the `categories` array.\n *\n * Example: `categories: ['Apples', 'Bananas', 'Oranges']`\n *\n * @sample {highcharts} highcharts/demo/line-labels/\n * With\n * @sample {highcharts} highcharts/xaxis/categories/\n * Without\n *\n * @type {Array<string>}\n * @product highcharts gantt\n * @apioption xAxis.categories\n */\n /**\n * The highest allowed value for automatically computed axis extremes.\n *\n * @see [floor](#xAxis.floor)\n *\n * @sample {highcharts|highstock} highcharts/yaxis/floor-ceiling/\n * Floor and ceiling\n *\n * @type {number}\n * @since 4.0\n * @product highcharts highstock gantt\n * @apioption xAxis.ceiling\n */\n /**\n * A class name that opens for styling the axis by CSS, especially in\n * Highcharts styled mode. The class name is applied to group elements\n * for the grid, axis elements and labels.\n *\n * @sample {highcharts|highstock|highmaps} highcharts/css/axis/\n * Multiple axes with separate styling\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.className\n */\n /**\n * Configure a crosshair that follows either the mouse pointer or the\n * hovered point.\n *\n * In styled mode, the crosshairs are styled in the\n * `.highcharts-crosshair`, `.highcharts-crosshair-thin` or\n * `.highcharts-xaxis-category` classes.\n *\n * @productdesc {highstock}\n * In Highcharts stock, by default, the crosshair is enabled on the\n * X axis and disabled on the Y axis.\n *\n * @sample {highcharts} highcharts/xaxis/crosshair-both/\n * Crosshair on both axes\n * @sample {highstock} stock/xaxis/crosshairs-xy/\n * Crosshair on both axes, with y axis label\n * @sample {highmaps} highcharts/xaxis/crosshair-both/\n * Crosshair on both axes\n *\n * @declare Highcharts.AxisCrosshairOptions\n * @type {boolean|*}\n * @default false\n * @since 4.1\n * @apioption xAxis.crosshair\n */\n /**\n * A class name for the crosshair, especially as a hook for styling.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.crosshair.className\n */\n /**\n * The color of the crosshair. Defaults to `#cccccc` for numeric and\n * datetime axes, and `rgba(204,214,235,0.25)` for category axes, where\n * the crosshair by default highlights the whole category.\n *\n * @sample {highcharts|highstock|highmaps} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n *\n * @type {Highcharts.ColorType}\n * @default #cccccc\n * @since 4.1\n * @apioption xAxis.crosshair.color\n */\n /**\n * The dash style for the crosshair. See\n * [plotOptions.series.dashStyle](#plotOptions.series.dashStyle)\n * for possible values.\n *\n * @sample {highcharts|highmaps} highcharts/xaxis/crosshair-dotted/\n * Dotted crosshair\n * @sample {highstock} stock/xaxis/crosshair-dashed/\n * Dashed X axis crosshair\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 4.1\n * @apioption xAxis.crosshair.dashStyle\n */\n /**\n * A label on the axis next to the crosshair.\n *\n * In styled mode, the label is styled with the\n * `.highcharts-crosshair-label` class.\n *\n * @sample {highstock} stock/xaxis/crosshair-label/\n * Crosshair labels\n * @sample {highstock} highcharts/css/crosshair-label/\n * Style mode\n *\n * @declare Highcharts.AxisCrosshairLabelOptions\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label\n */\n /**\n * Alignment of the label compared to the axis. Defaults to `\"left\"` for\n * right-side axes, `\"right\"` for left-side axes and `\"center\"` for\n * horizontal axes.\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.align\n */\n /**\n * The background color for the label. Defaults to the related series\n * color, or `#666666` if that is not available.\n *\n * @type {Highcharts.ColorType}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.backgroundColor\n */\n /**\n * The border color for the crosshair label\n *\n * @type {Highcharts.ColorType}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.borderColor\n */\n /**\n * The border corner radius of the crosshair label.\n *\n * @type {number}\n * @default 3\n * @since 2.1.10\n * @product highstock\n * @apioption xAxis.crosshair.label.borderRadius\n */\n /**\n * The border width for the crosshair label.\n *\n * @type {number}\n * @default 0\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.borderWidth\n */\n /**\n * Flag to enable crosshair's label.\n *\n * @sample {highstock} stock/xaxis/crosshairs-xy/\n * Enabled label for yAxis' crosshair\n *\n * @type {boolean}\n * @default false\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.enabled\n */\n /**\n * A format string for the crosshair label. Defaults to `{value}` for\n * numeric axes and `{value:%b %d, %Y}` for datetime axes.\n *\n * @type {string}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.format\n */\n /**\n * Formatter function for the label text.\n *\n * @type {Highcharts.XAxisCrosshairLabelFormatterCallbackFunction}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.formatter\n */\n /**\n * Padding inside the crosshair label.\n *\n * @type {number}\n * @default 8\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.padding\n */\n /**\n * The shape to use for the label box.\n *\n * @type {string}\n * @default callout\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.shape\n */\n /**\n * Text styles for the crosshair label.\n *\n * @type {Highcharts.CSSObject}\n * @default {\"color\": \"white\", \"fontWeight\": \"normal\", \"fontSize\": \"11px\", \"textAlign\": \"center\"}\n * @since 2.1\n * @product highstock\n * @apioption xAxis.crosshair.label.style\n */\n /**\n * Whether the crosshair should snap to the point or follow the pointer\n * independent of points.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/crosshair-snap-false/\n * True by default\n * @sample {highmaps} maps/demo/latlon-advanced/\n * Snap is false\n *\n * @type {boolean}\n * @default true\n * @since 4.1\n * @apioption xAxis.crosshair.snap\n */\n /**\n * The pixel width of the crosshair. Defaults to 1 for numeric or\n * datetime axes, and for one category width for category axes.\n *\n * @sample {highcharts} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n * @sample {highstock} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n * @sample {highmaps} highcharts/xaxis/crosshair-customized/\n * Customized crosshairs\n *\n * @type {number}\n * @default 1\n * @since 4.1\n * @apioption xAxis.crosshair.width\n */\n /**\n * The Z index of the crosshair. Higher Z indices allow drawing the\n * crosshair on top of the series or behind the grid lines.\n *\n * @type {number}\n * @default 2\n * @since 4.1\n * @apioption xAxis.crosshair.zIndex\n */\n /**\n * Whether to pan axis. If `chart.panning` is enabled, the option\n * allows to disable panning on an individual axis.\n */\n panningEnabled: true,\n /**\n * The Z index for the axis group.\n */\n zIndex: 2,\n /**\n * Whether to zoom axis. If `chart.zoomType` is set, the option allows\n * to disable zooming on an individual axis.\n *\n * @sample {highcharts} highcharts/xaxis/zoomenabled/\n * Zoom enabled is false\n */\n zoomEnabled: true,\n /**\n * For a datetime axis, the scale will automatically adjust to the\n * appropriate unit. This member gives the default string\n * representations used for each unit. For intermediate values,\n * different units may be used, for example the `day` unit can be used\n * on midnight and `hour` unit be used for intermediate values on the\n * same axis.\n *\n * For an overview of the replacement codes, see\n * [dateFormat](/class-reference/Highcharts.Time#dateFormat).\n *\n * Defaults to:\n * ```js\n * {\n * millisecond: '%H:%M:%S.%L',\n * second: '%H:%M:%S',\n * minute: '%H:%M',\n * hour: '%H:%M',\n * day: '%e. %b',\n * week: '%e. %b',\n * month: '%b \\'%y',\n * year: '%Y'\n * }\n * ```\n *\n * @sample {highcharts} highcharts/xaxis/datetimelabelformats/\n * Different day format on X axis\n * @sample {highstock} stock/xaxis/datetimelabelformats/\n * More information in x axis labels\n *\n * @declare Highcharts.AxisDateTimeLabelFormatsOptions\n * @product highcharts highstock gantt\n */\n dateTimeLabelFormats: {\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n millisecond: {\n main: '%H:%M:%S.%L',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n second: {\n main: '%H:%M:%S',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n minute: {\n main: '%H:%M',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n hour: {\n main: '%H:%M',\n range: false\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n day: {\n main: '%e. %b'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n week: {\n main: '%e. %b'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n month: {\n main: '%b \\'%y'\n },\n /**\n * @declare Highcharts.AxisDateTimeLabelFormatsOptionsObject\n * @type {string|*}\n */\n year: {\n main: '%Y'\n }\n },\n /**\n * Whether to force the axis to end on a tick. Use this option with\n * the `maxPadding` option to control the axis end.\n *\n * @productdesc {highstock}\n * In Highcharts Stock, `endOnTick` is always `false` when the navigator\n * is enabled, to prevent jumpy scrolling.\n *\n * @sample {highcharts} highcharts/yaxis/endontick/\n * True by default\n * @sample {highcharts} highcharts/yaxis/endontick-false/\n * False\n * @sample {highstock} stock/demo/basic-line/\n * True by default\n * @sample {highstock} stock/xaxis/endontick/\n * False\n *\n * @since 1.2.0\n */\n endOnTick: false,\n /**\n * Event handlers for the axis.\n *\n * @type {*}\n * @apioption xAxis.events\n */\n /**\n * An event fired after the breaks have rendered.\n *\n * @see [breaks](#xAxis.breaks)\n *\n * @sample {highcharts} highcharts/axisbreak/break-event/\n * AfterBreak Event\n *\n * @type {Highcharts.AxisEventCallbackFunction}\n * @since 4.1.0\n * @product highcharts gantt\n * @apioption xAxis.events.afterBreaks\n */\n /**\n * As opposed to the `setExtremes` event, this event fires after the\n * final min and max values are computed and corrected for `minRange`.\n *\n * Fires when the minimum and maximum is set for the axis, either by\n * calling the `.setExtremes()` method or by selecting an area in the\n * chart. One parameter, `event`, is passed to the function, containing\n * common event information.\n *\n * The new user set minimum and maximum values can be found by\n * `event.min` and `event.max`. These reflect the axis minimum and\n * maximum in axis values. The actual data extremes are found in\n * `event.dataMin` and `event.dataMax`.\n *\n * @type {Highcharts.AxisSetExtremesEventCallbackFunction}\n * @since 2.3\n * @context Highcharts.Axis\n * @apioption xAxis.events.afterSetExtremes\n */\n /**\n * An event fired when a break from this axis occurs on a point.\n *\n * @see [breaks](#xAxis.breaks)\n *\n * @sample {highcharts} highcharts/axisbreak/break-visualized/\n * Visualization of a Break\n *\n * @type {Highcharts.AxisPointBreakEventCallbackFunction}\n * @since 4.1.0\n * @product highcharts gantt\n * @context Highcharts.Axis\n * @apioption xAxis.events.pointBreak\n */\n /**\n * An event fired when a point falls inside a break from this axis.\n *\n * @type {Highcharts.AxisPointBreakEventCallbackFunction}\n * @product highcharts highstock gantt\n * @context Highcharts.Axis\n * @apioption xAxis.events.pointInBreak\n */\n /**\n * Fires when the minimum and maximum is set for the axis, either by\n * calling the `.setExtremes()` method or by selecting an area in the\n * chart. One parameter, `event`, is passed to the function,\n * containing common event information.\n *\n * The new user set minimum and maximum values can be found by\n * `event.min` and `event.max`. These reflect the axis minimum and\n * maximum in data values. When an axis is zoomed all the way out from\n * the \"Reset zoom\" button, `event.min` and `event.max` are null, and\n * the new extremes are set based on `this.dataMin` and `this.dataMax`.\n *\n * @sample {highstock} stock/xaxis/events-setextremes/\n * Log new extremes on x axis\n *\n * @type {Highcharts.AxisSetExtremesEventCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Axis\n * @apioption xAxis.events.setExtremes\n */\n /**\n * The lowest allowed value for automatically computed axis extremes.\n *\n * @see [ceiling](#yAxis.ceiling)\n *\n * @sample {highcharts} highcharts/yaxis/floor-ceiling/\n * Floor and ceiling\n * @sample {highstock} stock/demo/lazy-loading/\n * Prevent negative stock price on Y axis\n *\n * @type {number}\n * @since 4.0\n * @product highcharts highstock gantt\n * @apioption xAxis.floor\n */\n /**\n * The dash or dot style of the grid lines. For possible values, see\n * [this demonstration](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/yaxis/gridlinedashstyle/\n * Long dashes\n * @sample {highstock} stock/xaxis/gridlinedashstyle/\n * Long dashes\n *\n * @type {Highcharts.DashStyleValue}\n * @since 1.2\n */\n gridLineDashStyle: 'Solid',\n /**\n * The Z index of the grid lines.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/gridzindex/\n * A Z index of 4 renders the grid above the graph\n *\n * @product highcharts highstock gantt\n */\n gridZIndex: 1,\n /**\n * An id for the axis. This can be used after render time to get\n * a pointer to the axis object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/xaxis/id/\n * Get the object\n * @sample {highstock} stock/xaxis/id/\n * Get the object\n *\n * @type {string}\n * @since 1.2.0\n * @apioption xAxis.id\n */\n /**\n * The axis labels show the number or category for each tick.\n *\n * Since v8.0.0: Labels are animated in categorized x-axis with\n * updating data if `tickInterval` and `step` is set to 1.\n *\n * @productdesc {highmaps}\n * X and Y axis labels are by default disabled in Highmaps, but the\n * functionality is inherited from Highcharts and used on `colorAxis`,\n * and can be enabled on X and Y axes too.\n */\n labels: {\n /**\n * What part of the string the given position is anchored to.\n * If `left`, the left side of the string is at the axis position.\n * Can be one of `\"left\"`, `\"center\"` or `\"right\"`. Defaults to\n * an intelligent guess based on which side of the chart the axis\n * is on and the rotation of the label.\n *\n * @see [reserveSpace](#xAxis.labels.reserveSpace)\n *\n * @sample {highcharts} highcharts/xaxis/labels-align-left/\n * Left\n * @sample {highcharts} highcharts/xaxis/labels-align-right/\n * Right\n * @sample {highcharts} highcharts/xaxis/labels-reservespace-true/\n * Left-aligned labels on a vertical category axis\n *\n * @type {Highcharts.AlignValue}\n * @apioption xAxis.labels.align\n */\n /**\n * Whether to allow the axis labels to overlap.\n * When false, overlapping labels are hidden.\n *\n * @sample {highcharts} highcharts/xaxis/labels-allowoverlap-true/\n * X axis labels overlap enabled\n *\n * @type {boolean}\n * @default false\n * @apioption xAxis.labels.allowOverlap\n *\n */\n /**\n * For horizontal axes, the allowed degrees of label rotation\n * to prevent overlapping labels. If there is enough space,\n * labels are not rotated. As the chart gets narrower, it\n * will start rotating the labels -45 degrees, then remove\n * every second label and try again with rotations 0 and -45 etc.\n * Set it to `undefined` to disable rotation, which will\n * cause the labels to word-wrap if possible. Defaults to `[-45]``\n * on bottom and top axes, `undefined` on left and right axes.\n *\n * @sample {highcharts|highstock} highcharts/xaxis/labels-autorotation-default/\n * Default auto rotation of 0 or -45\n * @sample {highcharts|highstock} highcharts/xaxis/labels-autorotation-0-90/\n * Custom graded auto rotation\n *\n * @type {Array<number>}\n * @default undefined\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.labels.autoRotation\n */\n autoRotation: void 0,\n /**\n * When each category width is more than this many pixels, we don't\n * apply auto rotation. Instead, we lay out the axis label with word\n * wrap. A lower limit makes sense when the label contains multiple\n * short words that don't extend the available horizontal space for\n * each label.\n *\n * @sample {highcharts} highcharts/xaxis/labels-autorotationlimit/\n * Lower limit\n *\n * @since 4.1.5\n * @product highcharts gantt\n */\n autoRotationLimit: 80,\n /**\n * Polar charts only. The label's pixel distance from the perimeter\n * of the plot area.\n *\n * @type {number}\n * @default undefined\n * @product highcharts gantt\n */\n distance: void 0,\n /**\n * Enable or disable the axis labels.\n *\n * @sample {highcharts} highcharts/xaxis/labels-enabled/\n * X axis labels disabled\n * @sample {highstock} stock/xaxis/labels-enabled/\n * X axis labels disabled\n *\n * @default {highcharts|highstock|gantt} true\n * @default {highmaps} false\n */\n enabled: true,\n /**\n * A format string for the axis label. The context is available as\n * format string variables. For example, you can use `{text}` to\n * insert the default formatted text. The recommended way of adding\n * units for the label is using `text`, for example `{text} km`.\n *\n * To add custom numeric or datetime formatting, use `{value}` with\n * formatting, for example `{value:.1f}` or `{value:%Y-%m-%d}`.\n *\n * See\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for more examples of formatting.\n *\n * The default value is not specified due to the dynamic\n * nature of the default implementation.\n *\n * @sample {highcharts|highstock} highcharts/yaxis/labels-format/\n * Add units to Y axis label\n * @sample {highcharts} highcharts/xaxis/labels-format-linked/\n * Linked category names\n * @sample {highcharts} highcharts/xaxis/labels-format-custom/\n * Custom number format\n *\n * @type {string}\n * @since 3.0\n * @apioption xAxis.labels.format\n */\n /**\n * Callback JavaScript function to format the label. The value\n * is given by `this.value`. Additional properties for `this` are\n * `axis`, `chart`, `isFirst`, `isLast` and `text` which holds the\n * value of the default formatter.\n *\n * Defaults to a built in function returning a formatted string\n * depending on whether the axis is `category`, `datetime`,\n * `numeric` or other.\n *\n * @sample {highcharts} highcharts/xaxis/labels-formatter-linked/\n * Linked category names\n * @sample {highcharts} highcharts/xaxis/labels-formatter-extended/\n * Modified numeric labels\n * @sample {highstock} stock/xaxis/labels-formatter/\n * Added units on Y axis\n *\n * @type {Highcharts.AxisLabelsFormatterCallbackFunction}\n * @apioption xAxis.labels.formatter\n */\n /**\n * The number of pixels to indent the labels per level in a treegrid\n * axis.\n *\n * @sample gantt/treegrid-axis/demo\n * Indentation 10px by default.\n * @sample gantt/treegrid-axis/indentation-0px\n * Indentation set to 0px.\n *\n * @product gantt\n */\n indentation: 10,\n /**\n * Horizontal axis only. When `staggerLines` is not set,\n * `maxStaggerLines` defines how many lines the axis is allowed to\n * add to automatically avoid overlapping X labels. Set to `1` to\n * disable overlap detection.\n *\n * @deprecated\n * @type {number}\n * @default 5\n * @since 1.3.3\n * @apioption xAxis.labels.maxStaggerLines\n */\n /**\n * How to handle overflowing labels on horizontal axis. If set to\n * `\"allow\"`, it will not be aligned at all. By default it\n * `\"justify\"` labels inside the chart area. If there is room to\n * move it, it will be aligned to the edge, else it will be removed.\n *\n * @since 2.2.5\n * @validvalue [\"allow\", \"justify\"]\n */\n overflow: 'justify',\n /**\n * The pixel padding for axis labels, to ensure white space between\n * them.\n *\n * @product highcharts gantt\n */\n padding: 5,\n /**\n * Whether to reserve space for the labels. By default, space is\n * reserved for the labels in these cases:\n *\n * * On all horizontal axes.\n * * On vertical axes if `label.align` is `right` on a left-side\n * axis or `left` on a right-side axis.\n * * On vertical axes if `label.align` is `center`.\n *\n * This can be turned off when for example the labels are rendered\n * inside the plot area instead of outside.\n *\n * @see [labels.align](#xAxis.labels.align)\n *\n * @sample {highcharts} highcharts/xaxis/labels-reservespace/\n * No reserved space, labels inside plot\n * @sample {highcharts} highcharts/xaxis/labels-reservespace-true/\n * Left-aligned labels on a vertical category axis\n *\n * @type {boolean}\n * @since 4.1.10\n * @product highcharts gantt\n * @apioption xAxis.labels.reserveSpace\n */\n reserveSpace: void 0,\n /**\n * Rotation of the labels in degrees. When `undefined`, the\n * `autoRotation` option takes precedence.\n *\n * @sample {highcharts} highcharts/xaxis/labels-rotation/\n * X axis labels rotated 90°\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.labels.rotation\n */\n rotation: void 0,\n /**\n * Horizontal axes only. The number of lines to spread the labels\n * over to make room or tighter labels. 0 disables staggering.\n *\n * @sample {highcharts} highcharts/xaxis/labels-staggerlines/\n * Show labels over two lines\n * @sample {highstock} stock/xaxis/labels-staggerlines/\n * Show labels over two lines\n *\n * @since 2.1\n */\n staggerLines: 0,\n /**\n * To show only every _n_'th label on the axis, set the step to _n_.\n * Setting the step to 2 shows every other label.\n *\n * By default, when 0, the step is calculated automatically to avoid\n * overlap. To prevent this, set it to 1\\. This usually only\n * happens on a category axis, and is often a sign that you have\n * chosen the wrong axis type.\n *\n * Read more at\n * [Axis docs](https://www.highcharts.com/docs/chart-concepts/axes)\n * => What axis should I use?\n *\n * @sample {highcharts} highcharts/xaxis/labels-step/\n * Showing only every other axis label on a categorized\n * x-axis\n * @sample {highcharts} highcharts/xaxis/labels-step-auto/\n * Auto steps on a category axis\n *\n * @since 2.1\n */\n step: 0,\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n */\n useHTML: false,\n /**\n * The x position offset of all labels relative to the tick\n * positions on the axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n */\n x: 0,\n /**\n * The y position offset of all labels relative to the tick\n * positions on the axis. The default makes it adapt to the font\n * size of the bottom axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n *\n * @type {number}\n * @apioption xAxis.labels.y\n */\n /**\n * The Z index for the axis labels.\n */\n zIndex: 7,\n /**\n * CSS styles for the label. Use `whiteSpace: 'nowrap'` to prevent\n * wrapping of category labels. Use `textOverflow: 'none'` to\n * prevent ellipsis (dots).\n *\n * In styled mode, the labels are styled with the\n * `.highcharts-axis-labels` class.\n *\n * @sample {highcharts} highcharts/xaxis/labels-style/\n * Red X axis labels\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#666666\" /* Palette.neutralColor60 */,\n /** @internal */\n cursor: 'default',\n /** @internal */\n fontSize: '11px'\n }\n },\n /**\n * The left position as the horizontal axis. If it's a number, it is\n * interpreted as pixel position relative to the chart.\n *\n * Since Highcharts v5.0.13: If it's a percentage string, it is\n * interpreted as percentages of the plot width, offset from plot area\n * left.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.left\n */\n /**\n * The top position as the vertical axis. If it's a number, it is\n * interpreted as pixel position relative to the chart.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted\n * as percentages of the plot height, offset from plot area top.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.top\n */\n /**\n * Index of another axis that this axis is linked to. When an axis is\n * linked to a master axis, it will take the same extremes as\n * the master, but as assigned by min or max or by setExtremes.\n * It can be used to show additional info, or to ease reading the\n * chart by duplicating the scales.\n *\n * @sample {highcharts} highcharts/xaxis/linkedto/\n * Different string formats of the same date\n * @sample {highcharts} highcharts/yaxis/linkedto/\n * Y values on both sides\n *\n * @type {number}\n * @since 2.0.2\n * @product highcharts highstock gantt\n * @apioption xAxis.linkedTo\n */\n /**\n * The maximum value of the axis. If `null`, the max value is\n * automatically calculated.\n *\n * If the [endOnTick](#yAxis.endOnTick) option is true, the `max` value\n * might be rounded up.\n *\n * If a [tickAmount](#yAxis.tickAmount) is set, the axis may be extended\n * beyond the set max in order to reach the given number of ticks. The\n * same may happen in a chart with multiple axes, determined by [chart.\n * alignTicks](#chart), where a `tickAmount` is applied internally.\n *\n * @sample {highcharts} highcharts/yaxis/max-200/\n * Y axis max of 200\n * @sample {highcharts} highcharts/yaxis/max-logarithmic/\n * Y axis max on logarithmic axis\n * @sample {highstock} stock/xaxis/min-max/\n * Fixed min and max on X axis\n *\n * @type {number|null}\n * @apioption xAxis.max\n */\n /**\n * Padding of the max value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the highest data value to appear on the edge\n * of the plot area. When the axis' `max` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * @productdesc {highstock}\n * For an [ordinal](#xAxis.ordinal) axis, `minPadding` and `maxPadding`\n * are ignored. Use [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highcharts} highcharts/yaxis/maxpadding/\n * Max padding of 0.25 on y axis\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Add some padding\n *\n * @default {highcharts} 0.01\n * @default {highstock|highmaps} 0\n * @since 1.2.0\n */\n maxPadding: 0.01,\n /**\n * Deprecated. Use `minRange` instead.\n *\n * @deprecated\n * @type {number}\n * @product highcharts highstock\n * @apioption xAxis.maxZoom\n */\n /**\n * The minimum value of the axis. If `null` the min value is\n * automatically calculated.\n *\n * If the [startOnTick](#yAxis.startOnTick) option is true (default),\n * the `min` value might be rounded down.\n *\n * The automatically calculated minimum value is also affected by\n * [floor](#yAxis.floor), [softMin](#yAxis.softMin),\n * [minPadding](#yAxis.minPadding), [minRange](#yAxis.minRange)\n * as well as [series.threshold](#plotOptions.series.threshold)\n * and [series.softThreshold](#plotOptions.series.softThreshold).\n *\n * @sample {highcharts} highcharts/yaxis/min-startontick-false/\n * -50 with startOnTick to false\n * @sample {highcharts} highcharts/yaxis/min-startontick-true/\n * -50 with startOnTick true by default\n * @sample {highstock} stock/xaxis/min-max/\n * Set min and max on X axis\n *\n * @type {number|null}\n * @apioption xAxis.min\n */\n /**\n * The dash or dot style of the minor grid lines. For possible values,\n * see [this demonstration](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinedashstyle/\n * Long dashes on minor grid lines\n * @sample {highstock} stock/xaxis/minorgridlinedashstyle/\n * Long dashes on minor grid lines\n *\n * @type {Highcharts.DashStyleValue}\n * @since 1.2\n */\n minorGridLineDashStyle: 'Solid',\n /**\n * Specific tick interval in axis units for the minor ticks. On a linear\n * axis, if `\"auto\"`, the minor tick interval is calculated as a fifth\n * of the tickInterval. If `null` or `undefined`, minor ticks are not\n * shown.\n *\n * On logarithmic axes, the unit is the power of the value. For example,\n * setting the minorTickInterval to 1 puts one tick on each of 0.1, 1,\n * 10, 100 etc. Setting the minorTickInterval to 0.1 produces 9 ticks\n * between 1 and 10, 10 and 100 etc.\n *\n * If user settings dictate minor ticks to become too dense, they don't\n * make sense, and will be ignored to prevent performance problems.\n *\n * @sample {highcharts} highcharts/yaxis/minortickinterval-null/\n * Null by default\n * @sample {highcharts} highcharts/yaxis/minortickinterval-5/\n * 5 units\n * @sample {highcharts} highcharts/yaxis/minortickinterval-log-auto/\n * \"auto\"\n * @sample {highcharts} highcharts/yaxis/minortickinterval-log/\n * 0.1\n * @sample {highstock} stock/demo/basic-line/\n * Null by default\n * @sample {highstock} stock/xaxis/minortickinterval-auto/\n * \"auto\"\n *\n * @type {number|string|null}\n * @apioption xAxis.minorTickInterval\n */\n /**\n * The pixel length of the minor tick marks.\n *\n * @sample {highcharts} highcharts/yaxis/minorticklength/\n * 10px on Y axis\n * @sample {highstock} stock/xaxis/minorticks/\n * 10px on Y axis\n */\n minorTickLength: 2,\n /**\n * The position of the minor tick marks relative to the axis line.\n * Can be one of `inside` and `outside`.\n *\n * @sample {highcharts} highcharts/yaxis/minortickposition-outside/\n * Outside by default\n * @sample {highcharts} highcharts/yaxis/minortickposition-inside/\n * Inside\n * @sample {highstock} stock/xaxis/minorticks/\n * Inside\n *\n * @validvalue [\"inside\", \"outside\"]\n */\n minorTickPosition: 'outside',\n /**\n * Enable or disable minor ticks. Unless\n * [minorTickInterval](#xAxis.minorTickInterval) is set, the tick\n * interval is calculated as a fifth of the `tickInterval`.\n *\n * On a logarithmic axis, minor ticks are laid out based on a best\n * guess, attempting to enter approximately 5 minor ticks between\n * each major tick.\n *\n * Prior to v6.0.0, ticks were unabled in auto layout by setting\n * `minorTickInterval` to `\"auto\"`.\n *\n * @productdesc {highcharts}\n * On axes using [categories](#xAxis.categories), minor ticks are not\n * supported.\n *\n * @sample {highcharts} highcharts/yaxis/minorticks-true/\n * Enabled on linear Y axis\n *\n * @type {boolean}\n * @default false\n * @since 6.0.0\n * @apioption xAxis.minorTicks\n */\n /**\n * The pixel width of the minor tick mark.\n *\n * @sample {highcharts} highcharts/yaxis/minortickwidth/\n * 3px width\n * @sample {highstock} stock/xaxis/minorticks/\n * 1px width\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.minorTickWidth\n */\n /**\n * Padding of the min value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the lowest data value to appear on the edge\n * of the plot area. When the axis' `min` option is set or a min extreme\n * is set using `axis.setExtremes()`, the minPadding will be ignored.\n *\n * @productdesc {highstock}\n * For an [ordinal](#xAxis.ordinal) axis, `minPadding` and `maxPadding`\n * are ignored. Use [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highcharts} highcharts/yaxis/minpadding/\n * Min padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n * @sample {highmaps} maps/chart/plotbackgroundcolor-gradient/\n * Add some padding\n *\n * @default {highcharts} 0.01\n * @default {highstock|highmaps} 0\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n minPadding: 0.01,\n /**\n * The minimum range to display on this axis. The entire axis will not\n * be allowed to span over a smaller interval than this. For example,\n * for a datetime axis the main unit is milliseconds. If minRange is\n * set to 3600000, you can't zoom in more than to one hour.\n *\n * The default minRange for the x axis is five times the smallest\n * interval between any of the data points.\n *\n * On a logarithmic axis, the unit for the minimum range is the power.\n * So a minRange of 1 means that the axis can be zoomed to 10-100,\n * 100-1000, 1000-10000 etc.\n *\n * **Note**: The `minPadding`, `maxPadding`, `startOnTick` and\n * `endOnTick` settings also affect how the extremes of the axis\n * are computed.\n *\n * @sample {highcharts} highcharts/xaxis/minrange/\n * Minimum range of 5\n * @sample {highstock} stock/xaxis/minrange/\n * Max zoom of 6 months overrides user selections\n *\n * @type {number}\n * @apioption xAxis.minRange\n */\n /**\n * The minimum tick interval allowed in axis values. For example on\n * zooming in on an axis with daily data, this can be used to prevent\n * the axis from showing hours. Defaults to the closest distance between\n * two points on the axis.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption xAxis.minTickInterval\n */\n /**\n * The distance in pixels from the plot area to the axis line.\n * A positive offset moves the axis with it's line, labels and ticks\n * away from the plot area. This is typically used when two or more\n * axes are displayed on the same side of the plot. With multiple\n * axes the offset is dynamically adjusted to avoid collision, this\n * can be overridden by setting offset explicitly.\n *\n * @sample {highcharts} highcharts/yaxis/offset/\n * Y axis offset of 70\n * @sample {highcharts} highcharts/yaxis/offset-centered/\n * Axes positioned in the center of the plot\n * @sample {highstock} stock/xaxis/offset/\n * Y axis offset by 70 px\n *\n * @type {number}\n */\n offset: void 0,\n /**\n * Whether to display the axis on the opposite side of the normal. The\n * normal is on the left side for vertical axes and bottom for\n * horizontal, so the opposite sides will be right and top respectively.\n * This is typically used with dual or multiple axes.\n *\n * @sample {highcharts} highcharts/yaxis/opposite/\n * Secondary Y axis opposite\n * @sample {highstock} stock/xaxis/opposite/\n * Y axis on left side\n *\n * @default {highcharts|highstock|highmaps} false\n * @default {gantt} true\n */\n opposite: false,\n /**\n * In an ordinal axis, the points are equally spaced in the chart\n * regardless of the actual time or x distance between them. This means\n * that missing data periods (e.g. nights or weekends for a stock chart)\n * will not take up space in the chart.\n * Having `ordinal: false` will show any gaps created by the `gapSize`\n * setting proportionate to their duration.\n *\n * In stock charts the X axis is ordinal by default, unless\n * the boost module is used and at least one of the series' data length\n * exceeds the [boostThreshold](#series.line.boostThreshold).\n *\n * For an ordinal axis, `minPadding` and `maxPadding` are ignored. Use\n * [overscroll](#xAxis.overscroll) instead.\n *\n * @sample {highstock} stock/xaxis/ordinal-true/\n * True by default\n * @sample {highstock} stock/xaxis/ordinal-false/\n * False\n *\n * @see [overscroll](#xAxis.overscroll)\n *\n * @type {boolean}\n * @default true\n * @since 1.1\n * @product highstock\n * @apioption xAxis.ordinal\n */\n /**\n * Additional range on the right side of the xAxis. Works similar to\n * `xAxis.maxPadding`, but value is set in milliseconds. Can be set for\n * both main `xAxis` and the navigator's `xAxis`.\n *\n * @sample {highstock} stock/xaxis/overscroll/\n * One minute overscroll with live data\n *\n * @type {number}\n * @default 0\n * @since 6.0.0\n * @product highstock\n * @apioption xAxis.overscroll\n */\n /**\n * Refers to the index in the [panes](#panes) array. Used for circular\n * gauges and polar charts. When the option is not set then first pane\n * will be used.\n *\n * @sample highcharts/demo/gauge-vu-meter\n * Two gauges with different center\n *\n * @type {number}\n * @product highcharts\n * @apioption xAxis.pane\n */\n /**\n * The zoomed range to display when only defining one or none of `min`\n * or `max`. For example, to show the latest month, a range of one month\n * can be set.\n *\n * @sample {highstock} stock/xaxis/range/\n * Setting a zoomed range when the rangeSelector is disabled\n *\n * @type {number}\n * @product highstock\n * @apioption xAxis.range\n */\n /**\n * Whether to reverse the axis so that the highest number is closest\n * to the origin. If the chart is inverted, the x axis is reversed by\n * default.\n *\n * @sample {highcharts} highcharts/yaxis/reversed/\n * Reversed Y axis\n * @sample {highstock} stock/xaxis/reversed/\n * Reversed Y axis\n *\n * @type {boolean}\n * @default undefined\n * @apioption xAxis.reversed\n */\n reversed: void 0,\n /**\n * This option determines how stacks should be ordered within a group.\n * For example reversed xAxis also reverses stacks, so first series\n * comes last in a group. To keep order like for non-reversed xAxis\n * enable this option.\n *\n * @sample {highcharts} highcharts/xaxis/reversedstacks/\n * Reversed stacks comparison\n * @sample {highstock} highcharts/xaxis/reversedstacks/\n * Reversed stacks comparison\n *\n * @since 6.1.1\n * @product highcharts highstock\n */\n reversedStacks: false,\n /**\n * An optional scrollbar to display on the X axis in response to\n * limiting the minimum and maximum of the axis values.\n *\n * In styled mode, all the presentational options for the scrollbar are\n * replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample {highstock} stock/yaxis/heatmap-scrollbars/\n * Heatmap with both scrollbars\n *\n * @extends scrollbar\n * @since 4.2.6\n * @product highstock\n * @apioption xAxis.scrollbar\n */\n /**\n * Whether to show the axis line and title when the axis has no data.\n *\n * @sample {highcharts} highcharts/yaxis/showempty/\n * When clicking the legend to hide series, one axis preserves\n * line and title, the other doesn't\n * @sample {highstock} highcharts/yaxis/showempty/\n * When clicking the legend to hide series, one axis preserves\n * line and title, the other doesn't\n *\n * @since 1.1\n */\n showEmpty: true,\n /**\n * Whether to show the first tick label.\n *\n * @sample {highcharts} highcharts/xaxis/showfirstlabel-false/\n * Set to false on X axis\n * @sample {highstock} stock/xaxis/showfirstlabel/\n * Labels below plot lines on Y axis\n */\n showFirstLabel: true,\n /**\n * Whether to show the last tick label. Defaults to `true` on cartesian\n * charts, and `false` on polar charts.\n *\n * @sample {highcharts} highcharts/xaxis/showlastlabel-true/\n * Set to true on X axis\n * @sample {highstock} stock/xaxis/showfirstlabel/\n * Labels below plot lines on Y axis\n *\n * @type {boolean}\n * @default undefined\n * @product highcharts highstock gantt\n */\n showLastLabel: true,\n /**\n * A soft maximum for the axis. If the series data maximum is less than\n * this, the axis will stay at this maximum, but if the series data\n * maximum is higher, the axis will flex to show all data.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption xAxis.softMax\n */\n /**\n * A soft minimum for the axis. If the series data minimum is greater\n * than this, the axis will stay at this minimum, but if the series\n * data minimum is lower, the axis will flex to show all data.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption xAxis.softMin\n */\n /**\n * For datetime axes, this decides where to put the tick between weeks.\n * 0 = Sunday, 1 = Monday.\n *\n * @sample {highcharts} highcharts/xaxis/startofweek-monday/\n * Monday by default\n * @sample {highcharts} highcharts/xaxis/startofweek-sunday/\n * Sunday\n * @sample {highstock} stock/xaxis/startofweek-1\n * Monday by default\n * @sample {highstock} stock/xaxis/startofweek-0\n * Sunday\n *\n * @product highcharts highstock gantt\n */\n startOfWeek: 1,\n /**\n * Whether to force the axis to start on a tick. Use this option with\n * the `minPadding` option to control the axis start.\n *\n * @productdesc {highstock}\n * In Highcharts Stock, `startOnTick` is always `false` when\n * the navigator is enabled, to prevent jumpy scrolling.\n *\n * @sample {highcharts} highcharts/xaxis/startontick-false/\n * False by default\n * @sample {highcharts} highcharts/xaxis/startontick-true/\n * True\n *\n * @since 1.2.0\n */\n startOnTick: false,\n /**\n * The amount of ticks to draw on the axis. This opens up for aligning\n * the ticks of multiple charts or panes within a chart. This option\n * overrides the `tickPixelInterval` option.\n *\n * This option only has an effect on linear axes. Datetime, logarithmic\n * or category axes are not affected.\n *\n * @sample {highcharts} highcharts/yaxis/tickamount/\n * 8 ticks on Y axis\n * @sample {highstock} highcharts/yaxis/tickamount/\n * 8 ticks on Y axis\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @apioption xAxis.tickAmount\n */\n /**\n * The interval of the tick marks in axis units. When `undefined`, the\n * tick interval is computed to approximately follow the\n * [tickPixelInterval](#xAxis.tickPixelInterval) on linear and datetime\n * axes. On categorized axes, a `undefined` tickInterval will default to\n * 1, one category. Note that datetime axes are based on milliseconds,\n * so for example an interval of one day is expressed as\n * `24 * 3600 * 1000`.\n *\n * On logarithmic axes, the tickInterval is based on powers, so a\n * tickInterval of 1 means one tick on each of 0.1, 1, 10, 100 etc. A\n * tickInterval of 2 means a tick of 0.1, 10, 1000 etc. A tickInterval\n * of 0.2 puts a tick on 0.1, 0.2, 0.4, 0.6, 0.8, 1, 2, 4, 6, 8, 10, 20,\n * 40 etc.\n *\n *\n * If the tickInterval is too dense for labels to be drawn, Highcharts\n * may remove ticks.\n *\n * If the chart has multiple axes, the [alignTicks](#chart.alignTicks)\n * option may interfere with the `tickInterval` setting.\n *\n * @see [tickPixelInterval](#xAxis.tickPixelInterval)\n * @see [tickPositions](#xAxis.tickPositions)\n * @see [tickPositioner](#xAxis.tickPositioner)\n *\n * @sample {highcharts} highcharts/xaxis/tickinterval-5/\n * Tick interval of 5 on a linear axis\n * @sample {highstock} stock/xaxis/tickinterval/\n * Tick interval of 0.01 on Y axis\n *\n * @type {number}\n * @apioption xAxis.tickInterval\n */\n /**\n * The pixel length of the main tick marks.\n *\n * @sample {highcharts} highcharts/xaxis/ticklength/\n * 20 px tick length on the X axis\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n */\n tickLength: 10,\n /**\n * If tickInterval is `null` this option sets the approximate pixel\n * interval of the tick marks. Not applicable to categorized axis.\n *\n * The tick interval is also influenced by the [minTickInterval](\n * #xAxis.minTickInterval) option, that, by default prevents ticks from\n * being denser than the data points.\n *\n * @see [tickInterval](#xAxis.tickInterval)\n * @see [tickPositioner](#xAxis.tickPositioner)\n * @see [tickPositions](#xAxis.tickPositions)\n *\n * @sample {highcharts} highcharts/xaxis/tickpixelinterval-50/\n * 50 px on X axis\n * @sample {highstock} stock/xaxis/tickpixelinterval/\n * 200 px on X axis\n */\n tickPixelInterval: 100,\n /**\n * For categorized axes only. If `on` the tick mark is placed in the\n * center of the category, if `between` the tick mark is placed between\n * categories. The default is `between` if the `tickInterval` is 1, else\n * `on`.\n *\n * @sample {highcharts} highcharts/xaxis/tickmarkplacement-between/\n * \"between\" by default\n * @sample {highcharts} highcharts/xaxis/tickmarkplacement-on/\n * \"on\"\n *\n * @product highcharts gantt\n * @validvalue [\"on\", \"between\"]\n */\n tickmarkPlacement: 'between',\n /**\n * The position of the major tick marks relative to the axis line.\n * Can be one of `inside` and `outside`.\n *\n * @sample {highcharts} highcharts/xaxis/tickposition-outside/\n * \"outside\" by default\n * @sample {highcharts} highcharts/xaxis/tickposition-inside/\n * \"inside\"\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n *\n * @validvalue [\"inside\", \"outside\"]\n */\n tickPosition: 'outside',\n /**\n * A callback function returning array defining where the ticks are\n * laid out on the axis. This overrides the default behaviour of\n * [tickPixelInterval](#xAxis.tickPixelInterval) and [tickInterval](\n * #xAxis.tickInterval). The automatic tick positions are accessible\n * through `this.tickPositions` and can be modified by the callback.\n *\n * @see [tickPositions](#xAxis.tickPositions)\n *\n * @sample {highcharts} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n * @sample {highstock} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n *\n * @type {Highcharts.AxisTickPositionerCallbackFunction}\n * @apioption xAxis.tickPositioner\n */\n /**\n * An array defining where the ticks are laid out on the axis. This\n * overrides the default behaviour of [tickPixelInterval](\n * #xAxis.tickPixelInterval) and [tickInterval](#xAxis.tickInterval).\n *\n * @see [tickPositioner](#xAxis.tickPositioner)\n *\n * @sample {highcharts} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n * @sample {highstock} highcharts/xaxis/tickpositions-tickpositioner/\n * Demo of tickPositions and tickPositioner\n *\n * @type {Array<number>}\n * @apioption xAxis.tickPositions\n */\n /**\n * The pixel width of the major tick marks. Defaults to 0 on category\n * axes, otherwise 1.\n *\n * In styled mode, the stroke width is given in the `.highcharts-tick`\n * class, but in order for the element to be generated on category axes,\n * the option must be explicitly set to 1.\n *\n * @sample {highcharts} highcharts/xaxis/tickwidth/\n * 10 px width\n * @sample {highcharts} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n * @sample {highstock} highcharts/css/axis-grid/\n * Styled mode\n *\n * @type {undefined|number}\n * @default {highstock} 1\n * @default {highmaps} 0\n * @apioption xAxis.tickWidth\n */\n /**\n * The axis title, showing next to the axis line.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis is hidden by default, but adding an axis title\n * is still possible. X axis and Y axis titles will appear at the bottom\n * and left by default.\n */\n title: {\n /**\n * Alignment of the title relative to the axis values. Possible\n * values are \"low\", \"middle\" or \"high\".\n *\n * @sample {highcharts} highcharts/xaxis/title-align-low/\n * \"low\"\n * @sample {highcharts} highcharts/xaxis/title-align-center/\n * \"middle\" by default\n * @sample {highcharts} highcharts/xaxis/title-align-high/\n * \"high\"\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Place the Y axis title on top of the axis\n * @sample {highstock} stock/xaxis/title-align/\n * Aligned to \"high\" value\n *\n * @type {Highcharts.AxisTitleAlignValue}\n */\n align: 'middle',\n /**\n * Deprecated. Set the `text` to `undefined` to disable the title.\n *\n * @deprecated\n * @type {boolean}\n * @product highcharts\n * @apioption xAxis.title.enabled\n */\n /**\n * The pixel distance between the axis labels or line and the title.\n * Defaults to 0 for horizontal axes, 10 for vertical\n *\n * @sample {highcharts} highcharts/xaxis/title-margin/\n * Y axis title margin of 60\n *\n * @type {number}\n * @apioption xAxis.title.margin\n */\n /**\n * The distance of the axis title from the axis line. By default,\n * this distance is computed from the offset width of the labels,\n * the labels' distance from the axis and the title's margin.\n * However when the offset option is set, it overrides all this.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Place the axis title on top of the axis\n * @sample {highstock} highcharts/yaxis/title-offset/\n * Place the axis title on top of the Y axis\n *\n * @type {number}\n * @since 2.2.0\n * @apioption xAxis.title.offset\n */\n /**\n * Whether to reserve space for the title when laying out the axis.\n *\n * @type {boolean}\n * @default true\n * @since 5.0.11\n * @product highcharts highstock gantt\n * @apioption xAxis.title.reserveSpace\n */\n /**\n * The rotation of the text in degrees. 0 is horizontal, 270 is\n * vertical reading from bottom to top.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Horizontal\n */\n rotation: 0,\n /**\n * The actual text of the axis title. It can contain basic HTML tags\n * like `b`, `i` and `span` with style.\n *\n * @sample {highcharts} highcharts/xaxis/title-text/\n * Custom HTML\n * @sample {highstock} stock/xaxis/title-text/\n * Titles for both axes\n *\n * @type {string|null}\n * @apioption xAxis.title.text\n */\n /**\n * Alignment of the text, can be `\"left\"`, `\"right\"` or `\"center\"`.\n * Default alignment depends on the\n * [title.align](xAxis.title.align):\n *\n * Horizontal axes:\n * - for `align` = `\"low\"`, `textAlign` is set to `left`\n * - for `align` = `\"middle\"`, `textAlign` is set to `center`\n * - for `align` = `\"high\"`, `textAlign` is set to `right`\n *\n * Vertical axes:\n * - for `align` = `\"low\"` and `opposite` = `true`, `textAlign` is\n * set to `right`\n * - for `align` = `\"low\"` and `opposite` = `false`, `textAlign` is\n * set to `left`\n * - for `align` = `\"middle\"`, `textAlign` is set to `center`\n * - for `align` = `\"high\"` and `opposite` = `true` `textAlign` is\n * set to `left`\n * - for `align` = `\"high\"` and `opposite` = `false` `textAlign` is\n * set to `right`\n *\n * @type {Highcharts.AlignValue}\n * @apioption xAxis.title.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the axis title.\n *\n * @product highcharts highstock gantt\n */\n useHTML: false,\n /**\n * Horizontal pixel offset of the title position.\n *\n * @since 4.1.6\n * @product highcharts highstock gantt\n */\n x: 0,\n /**\n * Vertical pixel offset of the title position.\n *\n * @product highcharts highstock gantt\n */\n y: 0,\n /**\n * CSS styles for the title. If the title text is longer than the\n * axis length, it will wrap to multiple lines by default. This can\n * be customized by setting `textOverflow: 'ellipsis'`, by\n * setting a specific `width` or by setting `whiteSpace: 'nowrap'`.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-axis-title` class.\n *\n * @sample {highcharts} highcharts/xaxis/title-style/\n * Red\n * @sample {highcharts} highcharts/css/axis/\n * Styled mode\n *\n * @type {Highcharts.CSSObject}\n */\n style: {\n /** @internal */\n color: \"#666666\" /* Palette.neutralColor60 */\n }\n },\n /**\n * The type of axis. Can be one of `linear`, `logarithmic`, `datetime`\n * or `category`. In a datetime axis, the numbers are given in\n * milliseconds, and tick marks are placed on appropriate values like\n * full hours or days. In a category axis, the\n * [point names](#series.line.data.name) of the chart's series are used\n * for categories, if not a [categories](#xAxis.categories) array is\n * defined.\n *\n * @sample {highcharts} highcharts/xaxis/type-linear/\n * Linear\n * @sample {highcharts} highcharts/yaxis/type-log/\n * Logarithmic\n * @sample {highcharts} highcharts/yaxis/type-log-minorgrid/\n * Logarithmic with minor grid lines\n * @sample {highcharts} highcharts/xaxis/type-log-both/\n * Logarithmic on two axes\n * @sample {highcharts} highcharts/yaxis/type-log-negative/\n * Logarithmic with extension to emulate negative values\n *\n * @type {Highcharts.AxisTypeValue}\n * @product highcharts gantt\n */\n type: 'linear',\n /**\n * If there are multiple axes on the same side of the chart, the pixel\n * margin between the axes. Defaults to 0 on vertical axes, 15 on\n * horizontal axes.\n *\n * @type {number}\n * @since 7.0.3\n * @apioption xAxis.margin\n */\n /**\n * Applies only when the axis `type` is `category`. When `uniqueNames`\n * is true, points are placed on the X axis according to their names.\n * If the same point name is repeated in the same or another series,\n * the point is placed on the same X position as other points of the\n * same name. When `uniqueNames` is false, the points are laid out in\n * increasing X positions regardless of their names, and the X axis\n * category will take the name of the last point in each position.\n *\n * @sample {highcharts} highcharts/xaxis/uniquenames-true/\n * True by default\n * @sample {highcharts} highcharts/xaxis/uniquenames-false/\n * False\n *\n * @since 4.2.7\n * @product highcharts gantt\n */\n uniqueNames: true,\n /**\n * Datetime axis only. An array determining what time intervals the\n * ticks are allowed to fall on. Each array item is an array where the\n * first value is the time unit and the second value another array of\n * allowed multiples.\n *\n * Defaults to:\n * ```js\n * units: [[\n * 'millisecond', // unit name\n * [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples\n * ], [\n * 'second',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'minute',\n * [1, 2, 5, 10, 15, 30]\n * ], [\n * 'hour',\n * [1, 2, 3, 4, 6, 8, 12]\n * ], [\n * 'day',\n * [1, 2]\n * ], [\n * 'week',\n * [1, 2]\n * ], [\n * 'month',\n * [1, 2, 3, 4, 6]\n * ], [\n * 'year',\n * null\n * ]]\n * ```\n *\n * @type {Array<Array<string,(Array<number>|null)>>}\n * @product highcharts highstock gantt\n * @apioption xAxis.units\n */\n /**\n * Whether axis, including axis title, line, ticks and labels, should\n * be visible.\n *\n * @since 4.1.9\n * @product highcharts highstock gantt\n */\n visible: true,\n /**\n * Color of the minor, secondary grid lines.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-minor-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinecolor/\n * Bright grey lines from Y axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/minorgridlinecolor/\n * Bright grey lines from Y axis\n *\n * @type {Highcharts.ColorType}\n * @default #f2f2f2\n */\n minorGridLineColor: \"#f2f2f2\" /* Palette.neutralColor5 */,\n /**\n * Width of the minor, secondary grid lines.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/minorgridlinewidth/\n * 2px lines from Y axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/minorgridlinewidth/\n * 2px lines from Y axis\n */\n minorGridLineWidth: 1,\n /**\n * Color for the minor tick marks.\n *\n * @sample {highcharts} highcharts/yaxis/minortickcolor/\n * Black tick marks on Y axis\n * @sample {highstock} stock/xaxis/minorticks/\n * Black tick marks on Y axis\n *\n * @type {Highcharts.ColorType}\n * @default #999999\n */\n minorTickColor: \"#999999\" /* Palette.neutralColor40 */,\n /**\n * The color of the line marking the axis itself.\n *\n * In styled mode, the line stroke is given in the\n * `.highcharts-axis-line` or `.highcharts-xaxis-line` class.\n *\n * @productdesc {highmaps}\n * In Highmaps, the axis line is hidden by default, because the axis is\n * not visible by default.\n *\n * @sample {highcharts} highcharts/yaxis/linecolor/\n * A red line on Y axis\n * @sample {highcharts|highstock} highcharts/css/axis/\n * Axes in styled mode\n * @sample {highstock} stock/xaxis/linecolor/\n * A red line on X axis\n *\n * @type {Highcharts.ColorType}\n * @default #ccd6eb\n */\n lineColor: \"#ccd6eb\" /* Palette.highlightColor20 */,\n /**\n * The width of the line marking the axis itself.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-axis-line` or `.highcharts-xaxis-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/linecolor/\n * A 1px line on Y axis\n * @sample {highcharts|highstock} highcharts/css/axis/\n * Axes in styled mode\n * @sample {highstock} stock/xaxis/linewidth/\n * A 2px line on X axis\n *\n * @default {highcharts|highstock} 1\n * @default {highmaps} 0\n */\n lineWidth: 1,\n /**\n * Color of the grid lines extending the ticks across the plot area.\n *\n * In styled mode, the stroke is given in the `.highcharts-grid-line`\n * class.\n *\n * @productdesc {highmaps}\n * In Highmaps, the grid lines are hidden by default.\n *\n * @sample {highcharts} highcharts/yaxis/gridlinecolor/\n * Green lines\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/gridlinecolor/\n * Green lines\n *\n * @type {Highcharts.ColorType}\n * @default #e6e6e6\n */\n gridLineColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n /**\n * The width of the grid lines extending the ticks across the plot area.\n * Defaults to 1 on the Y axis and 0 on the X axis, except for 3d\n * charts.\n *\n * In styled mode, the stroke width is given in the\n * `.highcharts-grid-line` class.\n *\n * @sample {highcharts} highcharts/yaxis/gridlinewidth/\n * 2px lines\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/gridlinewidth/\n * 2px lines\n *\n * @type {number}\n * @apioption xAxis.gridLineWidth\n */\n gridLineWidth: void 0,\n /**\n * The height as the vertical axis. If it's a number, it is\n * interpreted as pixels.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted\n * as percentages of the total plot height.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.height\n */\n /**\n * The width as the horizontal axis. If it's a number, it is interpreted\n * as pixels.\n *\n * Since Highcharts v5.0.13: If it's a percentage string, it is\n * interpreted as percentages of the total plot width.\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption xAxis.width\n */\n /**\n * Color for the main tick marks.\n *\n * In styled mode, the stroke is given in the `.highcharts-tick`\n * class.\n *\n * @sample {highcharts} highcharts/xaxis/tickcolor/\n * Red ticks on X axis\n * @sample {highcharts|highstock} highcharts/css/axis-grid/\n * Styled mode\n * @sample {highstock} stock/xaxis/ticks/\n * Formatted ticks on X axis\n *\n * @type {Highcharts.ColorType}\n * @default #ccd6eb\n */\n tickColor: \"#ccd6eb\" /* Palette.highlightColor20 */\n // tickWidth: 1\n };\n /**\n * The Y axis or value axis. Normally this is the vertical axis,\n * though if the chart is inverted this is the horizontal axis.\n * In case of multiple axes, the yAxis node is an array of\n * configuration objects.\n *\n * See [the Axis object](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @type {*|Array<*>}\n * @extends xAxis\n * @excluding currentDateIndicator,ordinal,overscroll\n * @optionparent yAxis\n */\n AxisDefaults.defaultYAxisOptions = {\n /**\n * The type of axis. Can be one of `linear`, `logarithmic`, `datetime`,\n * `category` or `treegrid`. Defaults to `treegrid` for Gantt charts,\n * `linear` for other chart types.\n *\n * In a datetime axis, the numbers are given in milliseconds, and tick\n * marks are placed on appropriate values, like full hours or days. In a\n * category or treegrid axis, the [point names](#series.line.data.name)\n * of the chart's series are used for categories, if a\n * [categories](#xAxis.categories) array is not defined.\n *\n * @sample {highcharts} highcharts/yaxis/type-log-minorgrid/\n * Logarithmic with minor grid lines\n * @sample {highcharts} highcharts/yaxis/type-log-negative/\n * Logarithmic with extension to emulate negative values\n * @sample {gantt} gantt/treegrid-axis/demo\n * Treegrid axis\n *\n * @type {Highcharts.AxisTypeValue}\n * @default {highcharts} linear\n * @default {gantt} treegrid\n * @product highcharts gantt\n * @apioption yAxis.type\n */\n /**\n * The height of the Y axis. If it's a number, it is interpreted as\n * pixels.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted as\n * percentages of the total plot height.\n *\n * @see [yAxis.top](#yAxis.top)\n *\n * @sample {highstock} stock/demo/candlestick-and-volume/\n * Percentage height panes\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption yAxis.height\n */\n /**\n * Solid gauge only. Unless [stops](#yAxis.stops) are set, the color\n * to represent the maximum value of the Y axis.\n *\n * @sample {highcharts} highcharts/yaxis/mincolor-maxcolor/\n * Min and max colors\n *\n * @type {Highcharts.ColorType}\n * @default #003399\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.maxColor\n */\n /**\n * Solid gauge only. Unless [stops](#yAxis.stops) are set, the color\n * to represent the minimum value of the Y axis.\n *\n * @sample {highcharts} highcharts/yaxis/mincolor-maxcolor/\n * Min and max color\n *\n * @type {Highcharts.ColorType}\n * @default #e6ebf5\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.minColor\n */\n /**\n * Whether to reverse the axis so that the highest number is closest\n * to the origin.\n *\n * @sample {highcharts} highcharts/yaxis/reversed/\n * Reversed Y axis\n * @sample {highstock} stock/xaxis/reversed/\n * Reversed Y axis\n *\n * @type {boolean}\n * @default {highcharts} false\n * @default {highstock} false\n * @default {highmaps} true\n * @default {gantt} true\n * @apioption yAxis.reversed\n */\n /**\n * If `true`, the first series in a stack will be drawn on top in a\n * positive, non-reversed Y axis. If `false`, the first series is in\n * the base of the stack.\n *\n * @sample {highcharts} highcharts/yaxis/reversedstacks-false/\n * Non-reversed stacks\n * @sample {highstock} highcharts/yaxis/reversedstacks-false/\n * Non-reversed stacks\n *\n * @type {boolean}\n * @default true\n * @since 3.0.10\n * @product highcharts highstock\n * @apioption yAxis.reversedStacks\n */\n reversedStacks: true,\n /**\n * Solid gauge series only. Color stops for the solid gauge. Use this\n * in cases where a linear gradient between a `minColor` and `maxColor`\n * is not sufficient. The stops is an array of tuples, where the first\n * item is a float between 0 and 1 assigning the relative position in\n * the gradient, and the second item is the color.\n *\n * For solid gauges, the Y axis also inherits the concept of\n * [data classes](https://api.highcharts.com/highmaps#colorAxis.dataClasses)\n * from the Highmaps color axis.\n *\n * @sample {highcharts} highcharts/demo/gauge-solid/\n * Gauge with stops\n *\n * @see [minColor](#yAxis.minColor)\n * @see [maxColor](#yAxis.maxColor)\n *\n * @type {Array<Array<number,Highcharts.ColorType>>}\n * @since 4.0\n * @product highcharts\n * @apioption yAxis.stops\n */\n /**\n * The pixel width of the major tick marks.\n *\n * @sample {highcharts} highcharts/xaxis/tickwidth/ 10 px width\n * @sample {highstock} stock/xaxis/ticks/ Formatted ticks on X axis\n *\n * @type {number}\n * @default 0\n * @product highcharts highstock gantt\n * @apioption yAxis.tickWidth\n */\n /**\n * Whether to force the axis to end on a tick. Use this option with\n * the `maxPadding` option to control the axis end.\n *\n * This option is always disabled, when panning type is\n * either `y` or `xy`.\n *\n * @see [type](#chart.panning.type)\n *\n *\n * @sample {highcharts} highcharts/yaxis/endontick/\n * True by default\n * @sample {highcharts} highcharts/yaxis/endontick-false/\n * False\n * @sample {highstock} stock/demo/basic-line/\n * True by default\n * @sample {highstock} stock/xaxis/endontick/\n * False for Y axis\n *\n * @since 1.2.0\n */\n endOnTick: true,\n /**\n * Padding of the max value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the highest data value to appear on the edge\n * of the plot area. When the axis' `max` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * Also the `softThreshold` option takes precedence over `maxPadding`,\n * so if the data is tangent to the threshold, `maxPadding` may not\n * apply unless `softThreshold` is set to false.\n *\n * @sample {highcharts} highcharts/yaxis/maxpadding-02/\n * Max padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n maxPadding: 0.05,\n /**\n * Padding of the min value relative to the length of the axis. A\n * padding of 0.05 will make a 100px axis 5px longer. This is useful\n * when you don't want the lowest data value to appear on the edge\n * of the plot area. When the axis' `min` option is set or a max extreme\n * is set using `axis.setExtremes()`, the maxPadding will be ignored.\n *\n * Also the `softThreshold` option takes precedence over `minPadding`,\n * so if the data is tangent to the threshold, `minPadding` may not\n * apply unless `softThreshold` is set to false.\n *\n * @sample {highcharts} highcharts/yaxis/minpadding/\n * Min padding of 0.2\n * @sample {highstock} stock/xaxis/minpadding-maxpadding/\n * Greater min- and maxPadding\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n minPadding: 0.05,\n /**\n * @productdesc {highstock}\n * In Highcharts Stock 1.x, the Y axis was placed\n * on the left side by default.\n *\n * @sample {highcharts} highcharts/yaxis/opposite/\n * Secondary Y axis opposite\n * @sample {highstock} stock/xaxis/opposite/\n * Y axis on left side\n *\n * @type {boolean}\n * @default {highstock} true\n * @default {highcharts} false\n * @product highstock highcharts gantt\n * @apioption yAxis.opposite\n */\n /**\n * @see [tickInterval](#xAxis.tickInterval)\n * @see [tickPositioner](#xAxis.tickPositioner)\n * @see [tickPositions](#xAxis.tickPositions)\n */\n tickPixelInterval: 72,\n /**\n * Whether to show the last tick label.\n *\n * @productdesc {highcharts|gantt}\n * Defaults to `true` on cartesian charts, and `false` on polar charts.\n *\n * @productdesc {highstock}\n * Defaults to `true` for categorized yAxis and `false` for other types\n * of yAxis.\n *\n * @default undefined\n */\n showLastLabel: true,\n /**\n * @extends xAxis.labels\n */\n labels: {\n /**\n * Angular gauges and solid gauges only.\n * The label's pixel distance from the perimeter of the plot area.\n *\n * Since v7.1.2: If it's a percentage string, it is interpreted the\n * same as [series.radius](#plotOptions.gauge.radius), so label can be\n * aligned under the gauge's shape.\n *\n * @sample {highcharts} highcharts/yaxis/labels-distance/\n * Labels centered under the arc\n *\n * @type {number|string}\n * @default -25\n * @product highcharts\n * @apioption yAxis.labels.distance\n */\n /**\n * The y position offset of all labels relative to the tick\n * positions on the axis. For polar and radial axis consider the use\n * of the [distance](#yAxis.labels.distance) option.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n *\n * @type {number}\n * @default {highcharts} 3\n * @default {highstock} -2\n * @default {highmaps} 3\n * @apioption yAxis.labels.y\n */\n /**\n * What part of the string the given position is anchored to. Can\n * be one of `\"left\"`, `\"center\"` or `\"right\"`. The exact position\n * also depends on the `labels.x` setting.\n *\n * Angular gauges and solid gauges defaults to `\"center\"`.\n * Solid gauges with two labels have additional option `\"auto\"`\n * for automatic horizontal and vertical alignment.\n *\n * @see [yAxis.labels.distance](#yAxis.labels.distance)\n *\n * @sample {highcharts} highcharts/yaxis/labels-align-left/\n * Left\n * @sample {highcharts} highcharts/series-solidgauge/labels-auto-aligned/\n * Solid gauge labels auto aligned\n *\n * @type {Highcharts.AlignValue}\n * @default {highstock} right\n * @apioption yAxis.labels.align\n */\n /**\n * The x position offset of all labels relative to the tick\n * positions on the axis. Defaults to -15 for left axis, 15 for\n * right axis.\n *\n * @sample {highcharts} highcharts/xaxis/labels-x/\n * Y axis labels placed on grid lines\n */\n x: -8\n },\n /**\n * @productdesc {highmaps}\n * In Highmaps, the axis line is hidden by default, because the axis is\n * not visible by default.\n *\n * @type {Highcharts.ColorType}\n * @apioption yAxis.lineColor\n */\n /**\n * @sample {highcharts} highcharts/yaxis/max-200/\n * Y axis max of 200\n * @sample {highcharts} highcharts/yaxis/max-logarithmic/\n * Y axis max on logarithmic axis\n * @sample {highstock} stock/yaxis/min-max/\n * Fixed min and max on Y axis\n *\n * @apioption yAxis.max\n */\n /**\n * @sample {highcharts} highcharts/yaxis/min-startontick-false/\n * -50 with startOnTick to false\n * @sample {highcharts} highcharts/yaxis/min-startontick-true/\n * -50 with startOnTick true by default\n * @sample {highstock} stock/yaxis/min-max/\n * Fixed min and max on Y axis\n *\n * @apioption yAxis.min\n */\n /**\n * An optional scrollbar to display on the Y axis in response to\n * limiting the minimum an maximum of the axis values.\n *\n * In styled mode, all the presentational options for the scrollbar\n * are replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample {highstock} stock/yaxis/scrollbar/\n * Scrollbar on the Y axis\n *\n * @extends scrollbar\n * @since 4.2.6\n * @product highstock\n * @excluding height\n * @apioption yAxis.scrollbar\n */\n /**\n * Enable the scrollbar on the Y axis.\n *\n * @sample {highstock} stock/yaxis/scrollbar/\n * Enabled on Y axis\n *\n * @type {boolean}\n * @default false\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.enabled\n */\n /**\n * Pixel margin between the scrollbar and the axis elements.\n *\n * @type {number}\n * @default 10\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.margin\n */\n /* eslint-disable highcharts/doclet-apioption-last */\n /**\n * Defines the position of the scrollbar. By default, it is positioned\n * on the opposite of the main axis (right side of the chart).\n * However, in the case of RTL languages could be set to `false`\n * which positions the scrollbar on the left.\n *\n * Works only for vertical axes.\n * This means yAxis in a non-inverted chart and xAxis in the inverted.\n *\n * @sample stock/yaxis/scrollbar-opposite/\n * A scrollbar not on the opposite side\n *\n * @type {boolean}\n * @default true\n * @since 9.3.0\n *\n * @apioption yAxis.scrollbar.opposite\n * @apioption xAxis.scrollbar.opposite\n *\n */\n /* eslint-enable highcharts/doclet-apioption-last */\n /**\n * Whether to show the scrollbar when it is fully zoomed out at max\n * range. Setting it to `false` on the Y axis makes the scrollbar stay\n * hidden until the user zooms in, like common in browsers.\n *\n * @type {boolean}\n * @default true\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.showFull\n */\n /**\n * The width of a vertical scrollbar or height of a horizontal\n * scrollbar. Defaults to 20 on touch devices.\n *\n * @type {number}\n * @default 14\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.size\n */\n /**\n * Z index of the scrollbar elements.\n *\n * @type {number}\n * @default 3\n * @since 4.2.6\n * @product highstock\n * @apioption yAxis.scrollbar.zIndex\n */\n /**\n * A soft maximum for the axis. If the series data maximum is less\n * than this, the axis will stay at this maximum, but if the series\n * data maximum is higher, the axis will flex to show all data.\n *\n * **Note**: The [series.softThreshold](\n * #plotOptions.series.softThreshold) option takes precedence over this\n * option.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption yAxis.softMax\n */\n /**\n * A soft minimum for the axis. If the series data minimum is greater\n * than this, the axis will stay at this minimum, but if the series\n * data minimum is lower, the axis will flex to show all data.\n *\n * **Note**: The [series.softThreshold](\n * #plotOptions.series.softThreshold) option takes precedence over this\n * option.\n *\n * @sample highcharts/yaxis/softmin-softmax/\n * Soft min and max\n *\n * @type {number}\n * @since 5.0.1\n * @product highcharts highstock gantt\n * @apioption yAxis.softMin\n */\n /**\n * Defines the horizontal alignment of the stack total label. Can be one\n * of `\"left\"`, `\"center\"` or `\"right\"`. The default value is calculated\n * at runtime and depends on orientation and whether the stack is\n * positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-left/\n * Aligned to the left\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-center/\n * Aligned in center\n * @sample {highcharts} highcharts/yaxis/stacklabels-align-right/\n * Aligned to the right\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.align\n */\n /**\n * A format string for the data label. Available variables are the same\n * as for `formatter`.\n *\n * @type {string}\n * @default {total}\n * @since 3.0.2\n * @product highcharts highstock\n * @apioption yAxis.stackLabels.format\n */\n /**\n * Rotation of the labels in degrees.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-rotation/\n * Labels rotated 45°\n *\n * @type {number}\n * @default 0\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.rotation\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed with regards to the stack, `textAlign`\n * determines how the text is aligned against its anchor point. Possible\n * values are `\"left\"`, `\"center\"` and `\"right\"`. The default value is\n * calculated at runtime and depends on orientation and whether the\n * stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-textalign-left/\n * Label in center position but text-aligned left\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0\n * @product highcharts highstock\n * @apioption yAxis.stackLabels.useHTML\n */\n /**\n * Defines the vertical alignment of the stack total label. Can be one\n * of `\"top\"`, `\"middle\"` or `\"bottom\"`. The default value is calculated\n * at runtime and depends on orientation and whether the stack is\n * positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-top/\n * Vertically aligned top\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-middle/\n * Vertically aligned middle\n * @sample {highcharts} highcharts/yaxis/stacklabels-verticalalign-bottom/\n * Vertically aligned bottom\n *\n * @type {Highcharts.VerticalAlignValue}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.verticalAlign\n */\n /**\n * The x position offset of the label relative to the left of the\n * stacked bar. The default value is calculated at runtime and depends\n * on orientation and whether the stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-x/\n * Stack total labels with x offset\n *\n * @type {number}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.x\n */\n /**\n * The y position offset of the label relative to the tick position\n * on the axis. The default value is calculated at runtime and depends\n * on orientation and whether the stack is positive or negative.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-y/\n * Stack total labels with y offset\n *\n * @type {number}\n * @since 2.1.5\n * @product highcharts\n * @apioption yAxis.stackLabels.y\n */\n /**\n * Whether to force the axis to start on a tick. Use this option with\n * the `maxPadding` option to control the axis start.\n *\n * This option is always disabled, when panning type is\n * either `y` or `xy`.\n *\n * @see [type](#chart.panning.type)\n *\n * @sample {highcharts} highcharts/xaxis/startontick-false/\n * False by default\n * @sample {highcharts} highcharts/xaxis/startontick-true/\n * True\n * @sample {highstock} stock/xaxis/endontick/\n * False for Y axis\n *\n * @since 1.2.0\n * @product highcharts highstock gantt\n */\n startOnTick: true,\n title: {\n /**\n * The pixel distance between the axis labels and the title.\n * Positive values are outside the axis line, negative are inside.\n *\n * @sample {highcharts} highcharts/xaxis/title-margin/\n * Y axis title margin of 60\n *\n * @type {number}\n * @default 40\n * @apioption yAxis.title.margin\n */\n /**\n * The rotation of the text in degrees. 0 is horizontal, 270 is\n * vertical reading from bottom to top.\n *\n * @sample {highcharts} highcharts/yaxis/title-offset/\n * Horizontal\n */\n rotation: 270,\n /**\n * The actual text of the axis title. Horizontal texts can contain\n * HTML, but rotated texts are painted using vector techniques and\n * must be clean text. The Y axis title is disabled by setting the\n * `text` option to `undefined`.\n *\n * @sample {highcharts} highcharts/xaxis/title-text/\n * Custom HTML\n *\n * @type {string|null}\n * @default {highcharts} Values\n * @default {highstock} undefined\n * @product highcharts highstock gantt\n */\n text: 'Values'\n },\n /**\n * The top position of the Y axis. If it's a number, it is interpreted\n * as pixel position relative to the chart.\n *\n * Since Highcharts 2: If it's a percentage string, it is interpreted as\n * percentages of the plot height, offset from plot area top.\n *\n * @see [yAxis.height](#yAxis.height)\n *\n * @sample {highstock} stock/demo/candlestick-and-volume/\n * Percentage height panes\n *\n * @type {number|string}\n * @product highcharts highstock\n * @apioption yAxis.top\n */\n /**\n * The stack labels show the total value for each bar in a stacked\n * column or bar chart. The label will be placed on top of positive\n * columns and below negative columns. In case of an inverted column\n * chart or a bar chart the label is placed to the right of positive\n * bars and to the left of negative bars.\n *\n * @product highcharts\n */\n stackLabels: {\n /**\n * Enable or disable the initial animation when a series is\n * displayed for the `stackLabels`. The animation can also be set as\n * a configuration object. Please note that this option only\n * applies to the initial animation.\n * For other animations, see [chart.animation](#chart.animation)\n * and the animation parameter under the API methods.\n * The following properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * @sample {highcharts} highcharts/plotoptions/animation-defer/\n * Animation defer settings\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n * @since 8.2.0\n * @apioption yAxis.stackLabels.animation\n */\n animation: {},\n /**\n * The animation delay time in milliseconds.\n * Set to `0` renders stackLabel immediately.\n * As `undefined` inherits defer time from the [series.animation.defer](#plotOptions.series.animation.defer).\n *\n * @type {number}\n * @since 8.2.0\n * @apioption yAxis.stackLabels.animation.defer\n */\n /**\n * Allow the stack labels to overlap.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-allowoverlap-false/\n * Default false\n *\n * @since 5.0.13\n * @product highcharts\n */\n allowOverlap: false,\n /**\n * The background color or gradient for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {Highcharts.ColorType}\n * @since 8.1.0\n * @apioption yAxis.stackLabels.backgroundColor\n */\n /**\n * The border color for the stack label. Defaults to `undefined`.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {Highcharts.ColorType}\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderColor\n */\n /**\n * The border radius in pixels for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {number}\n * @default 0\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderRadius\n */\n /**\n * The border width in pixels for the stack label.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-box/\n * Stack labels box options\n * @type {number}\n * @default 0\n * @since 8.1.0\n * @apioption yAxis.stackLabels.borderWidth\n */\n /**\n * Enable or disable the stack total labels.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-enabled/\n * Enabled stack total labels\n * @sample {highcharts} highcharts/yaxis/stacklabels-enabled-waterfall/\n * Enabled stack labels in waterfall chart\n *\n * @since 2.1.5\n * @product highcharts\n */\n enabled: false,\n /**\n * Whether to hide stack labels that are outside the plot area.\n * By default, the stack label is moved\n * inside the plot area according to the\n * [overflow](/highcharts/#yAxis/stackLabels/overflow)\n * option.\n *\n * @type {boolean}\n * @since 7.1.3\n */\n crop: true,\n /**\n * How to handle stack total labels that flow outside the plot area.\n * The default is set to `\"justify\"`,\n * which aligns them inside the plot area.\n * For columns and bars, this means it will be moved inside the bar.\n * To display stack labels outside the plot area,\n * set `crop` to `false` and `overflow` to `\"allow\"`.\n *\n * @sample highcharts/yaxis/stacklabels-overflow/\n * Stack labels flows outside the plot area.\n *\n * @type {Highcharts.DataLabelsOverflowValue}\n * @since 7.1.3\n */\n overflow: 'justify',\n /* eslint-disable valid-jsdoc */\n /**\n * Callback JavaScript function to format the label. The value is\n * given by `this.total`.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-formatter/\n * Added units to stack total value\n *\n * @type {Highcharts.FormatterCallbackFunction<Highcharts.StackItemObject>}\n * @since 2.1.5\n * @product highcharts\n */\n formatter: function () {\n var numberFormatter = this.axis.chart.numberFormatter;\n /* eslint-enable valid-jsdoc */\n return numberFormatter(this.total || 0, -1);\n },\n /**\n * CSS styles for the label.\n *\n * In styled mode, the styles are set in the\n * `.highcharts-stack-label` class.\n *\n * @sample {highcharts} highcharts/yaxis/stacklabels-style/\n * Red stack total labels\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1.5\n * @product highcharts\n */\n style: {\n /** @internal */\n color: \"#000000\" /* Palette.neutralColor100 */,\n /** @internal */\n fontSize: '11px',\n /** @internal */\n fontWeight: 'bold',\n /** @internal */\n textOutline: '1px contrast'\n }\n },\n gridLineWidth: 1,\n lineWidth: 0\n // tickWidth: 0\n };\n /**\n * The Z axis or depth axis for 3D plots.\n *\n * See the [Axis class](/class-reference/Highcharts.Axis) for programmatic\n * access to the axis.\n *\n * @sample {highcharts} highcharts/3d/scatter-zaxis-categories/\n * Z-Axis with Categories\n * @sample {highcharts} highcharts/3d/scatter-zaxis-grid/\n * Z-Axis with styling\n *\n * @type {*|Array<*>}\n * @extends xAxis\n * @since 5.0.0\n * @product highcharts\n * @excluding breaks, crosshair, height, left, lineColor, lineWidth,\n * nameToX, showEmpty, top, width\n * @apioption zAxis\n */\n // This variable extends the defaultOptions for left axes.\n AxisDefaults.defaultLeftAxisOptions = {\n labels: {\n x: -15\n },\n title: {\n rotation: 270\n }\n };\n // This variable extends the defaultOptions for right axes.\n AxisDefaults.defaultRightAxisOptions = {\n labels: {\n x: 15\n },\n title: {\n rotation: 90\n }\n };\n // This variable extends the defaultOptions for bottom axes.\n AxisDefaults.defaultBottomAxisOptions = {\n labels: {\n autoRotation: [-45],\n x: 0\n // overflow: undefined,\n // staggerLines: null\n },\n margin: 15,\n title: {\n rotation: 0\n }\n };\n // This variable extends the defaultOptions for top axes.\n AxisDefaults.defaultTopAxisOptions = {\n labels: {\n autoRotation: [-45],\n x: 0\n // overflow: undefined\n // staggerLines: null\n },\n margin: 15,\n title: {\n rotation: 0\n }\n };\n })(AxisDefaults || (AxisDefaults = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return AxisDefaults;\n });\n _registerModule(_modules, 'Core/Foundation.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n isFunction = U.isFunction,\n objectEach = U.objectEach,\n removeEvent = U.removeEvent;\n /* *\n *\n * Class Namespace\n *\n * */\n var Foundation;\n (function (Foundation) {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Register event options. If an event handler is set on the options, it\n * should be subject to Chart.update, Axis.update and Series.update. This is\n * contrary to general handlers that are set directly using addEvent either\n * on the class or on the instance. #6538, #6943, #10861.\n * @private\n */\n function registerEventOptions(component, options) {\n // A lookup over those events that are added by _options_ (not\n // programmatically). These are updated through .update()\n component.eventOptions = component.eventOptions || {};\n // Register event listeners\n objectEach(options.events, function (event, eventType) {\n // If event does not exist, or is changed by the .update()\n // function\n if (component.eventOptions[eventType] !== event) {\n // Remove existing if set by option\n if (component.eventOptions[eventType]) {\n removeEvent(component, eventType, component.eventOptions[eventType]);\n delete component.eventOptions[eventType];\n }\n if (isFunction(event)) {\n component.eventOptions[eventType] = event;\n addEvent(component, eventType, event);\n }\n }\n });\n }\n Foundation.registerEventOptions = registerEventOptions;\n })(Foundation || (Foundation = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return Foundation;\n });\n _registerModule(_modules, 'Core/Axis/Tick.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (F, H, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var deg2rad = H.deg2rad;\n var clamp = U.clamp,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Tick class.\n *\n * @class\n * @name Highcharts.Tick\n *\n * @param {Highcharts.Axis} axis\n * The axis of the tick.\n *\n * @param {number} pos\n * The position of the tick on the axis in terms of axis values.\n *\n * @param {string} [type]\n * The type of tick, either 'minor' or an empty string\n *\n * @param {boolean} [noLabel=false]\n * Whether to disable the label or not. Defaults to false.\n *\n * @param {Object} [parameters]\n * Optional parameters for the tick.\n */\n var Tick = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Tick(axis, pos, type, noLabel, parameters) {\n this.isNew = true;\n this.isNewLabel = true;\n /**\n * The related axis of the tick.\n * @name Highcharts.Tick#axis\n * @type {Highcharts.Axis}\n */\n this.axis = axis;\n /**\n * The logical position of the tick on the axis in terms of axis values.\n * @name Highcharts.Tick#pos\n * @type {number}\n */\n this.pos = pos;\n /**\n * The tick type, which can be `\"minor\"`, or an empty string.\n * @name Highcharts.Tick#type\n * @type {string}\n */\n this.type = type || '';\n this.parameters = parameters || {};\n /**\n * The mark offset of the tick on the axis. Usually `undefined`, numeric\n * for grid axes.\n * @name Highcharts.Tick#tickmarkOffset\n * @type {number|undefined}\n */\n this.tickmarkOffset = this.parameters.tickmarkOffset;\n this.options = this.parameters.options;\n fireEvent(this, 'init');\n if (!type && !noLabel) {\n this.addLabel();\n }\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Write the tick label.\n *\n * @private\n * @function Highcharts.Tick#addLabel\n */\n Tick.prototype.addLabel = function () {\n var tick = this,\n axis = tick.axis,\n options = axis.options,\n chart = axis.chart,\n categories = axis.categories,\n log = axis.logarithmic,\n names = axis.names,\n pos = tick.pos,\n labelOptions = pick(tick.options && tick.options.labels,\n options.labels),\n tickPositions = axis.tickPositions,\n isFirst = pos === tickPositions[0],\n isLast = pos === tickPositions[tickPositions.length - 1],\n animateLabels = (!labelOptions.step || labelOptions.step === 1) &&\n axis.tickInterval === 1,\n tickPositionInfo = tickPositions.info;\n var label = tick.label,\n dateTimeLabelFormat,\n dateTimeLabelFormats,\n i;\n // The context value\n var value = this.parameters.category || (categories ?\n pick(categories[pos],\n names[pos],\n pos) :\n pos);\n if (log && isNumber(value)) {\n value = correctFloat(log.lin2log(value));\n }\n // Set the datetime label format. If a higher rank is set for this\n // position, use that. If not, use the general format.\n if (axis.dateTime) {\n if (tickPositionInfo) {\n dateTimeLabelFormats = chart.time.resolveDTLFormat(options.dateTimeLabelFormats[(!options.grid &&\n tickPositionInfo.higherRanks[pos]) ||\n tickPositionInfo.unitName]);\n dateTimeLabelFormat = dateTimeLabelFormats.main;\n }\n else if (isNumber(value)) { // #1441\n dateTimeLabelFormat = axis.dateTime.getXDateFormat(value, options.dateTimeLabelFormats ||\n {});\n }\n }\n // set properties for access in render method\n /**\n * True if the tick is the first one on the axis.\n * @name Highcharts.Tick#isFirst\n * @readonly\n * @type {boolean|undefined}\n */\n tick.isFirst = isFirst;\n /**\n * True if the tick is the last one on the axis.\n * @name Highcharts.Tick#isLast\n * @readonly\n * @type {boolean|undefined}\n */\n tick.isLast = isLast;\n // Get the string\n var ctx = {\n axis: axis,\n chart: chart,\n dateTimeLabelFormat: dateTimeLabelFormat,\n isFirst: isFirst,\n isLast: isLast,\n pos: pos,\n tick: tick,\n tickPositionInfo: tickPositionInfo,\n value: value\n };\n // Fire an event that allows modifying the context for use in\n // `labels.format` and `labels.formatter`.\n fireEvent(this, 'labelFormat', ctx);\n // Label formatting. When `labels.format` is given, we first run the\n // defaultFormatter and append the result to the context as `text`.\n // Handy for adding prefix or suffix while keeping default number\n // formatting.\n var labelFormatter = function (ctx) {\n if (labelOptions.formatter) {\n return labelOptions.formatter.call(ctx,\n ctx);\n }\n if (labelOptions.format) {\n ctx.text = axis.defaultLabelFormatter.call(ctx, ctx);\n return F.format(labelOptions.format, ctx, chart);\n }\n return axis.defaultLabelFormatter.call(ctx, ctx);\n };\n var str = labelFormatter.call(ctx,\n ctx);\n // Set up conditional formatting based on the format list if existing.\n var list = dateTimeLabelFormats && dateTimeLabelFormats.list;\n if (list) {\n tick.shortenLabel = function () {\n for (i = 0; i < list.length; i++) {\n extend(ctx, { dateTimeLabelFormat: list[i] });\n label.attr({\n text: labelFormatter.call(ctx, ctx)\n });\n if (label.getBBox().width <\n axis.getSlotWidth(tick) - 2 *\n labelOptions.padding) {\n return;\n }\n }\n label.attr({\n text: ''\n });\n };\n }\n else {\n // #15692\n tick.shortenLabel = void 0;\n }\n // Call only after first render\n if (animateLabels && axis._addedPlotLB) {\n tick.moveLabel(str, labelOptions);\n }\n // First call\n if (!defined(label) && !tick.movedLabel) {\n /**\n * The rendered text label of the tick.\n * @name Highcharts.Tick#label\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.label = label = tick.createLabel({ x: 0, y: 0 }, str, labelOptions);\n // Base value to detect change for new calls to getBBox\n tick.rotation = 0;\n // update\n }\n else if (label && label.textStr !== str && !animateLabels) {\n // When resetting text, also reset the width if dynamically set\n // (#8809)\n if (label.textWidth &&\n !labelOptions.style.width &&\n !label.styles.width) {\n label.css({ width: null });\n }\n label.attr({ text: str });\n label.textPxLength = label.getBBox().width;\n }\n };\n /**\n * Render and return the label of the tick.\n *\n * @private\n * @function Highcharts.Tick#createLabel\n */\n Tick.prototype.createLabel = function (xy, str, labelOptions) {\n var axis = this.axis,\n chart = axis.chart,\n label = defined(str) && labelOptions.enabled ?\n chart.renderer\n .text(str,\n xy.x,\n xy.y,\n labelOptions.useHTML)\n .add(axis.labelGroup) :\n null;\n // Un-rotated length\n if (label) {\n // Without position absolute, IE export sometimes is wrong\n if (!chart.styledMode) {\n label.css(merge(labelOptions.style));\n }\n label.textPxLength = label.getBBox().width;\n }\n return label;\n };\n /**\n * Destructor for the tick prototype\n *\n * @private\n * @function Highcharts.Tick#destroy\n */\n Tick.prototype.destroy = function () {\n destroyObjectProperties(this, this.axis);\n };\n /**\n * Gets the x and y positions for ticks in terms of pixels.\n *\n * @private\n * @function Highcharts.Tick#getPosition\n *\n * @param {boolean} horiz\n * Whether the tick is on an horizontal axis or not.\n *\n * @param {number} tickPos\n * Position of the tick.\n *\n * @param {number} tickmarkOffset\n * Tickmark offset for all ticks.\n *\n * @param {boolean} [old]\n * Whether the axis has changed or not.\n *\n * @return {Highcharts.PositionObject}\n * The tick position.\n *\n * @emits Highcharts.Tick#event:afterGetPosition\n */\n Tick.prototype.getPosition = function (horiz, tickPos, tickmarkOffset, old) {\n var axis = this.axis,\n chart = axis.chart,\n cHeight = (old && chart.oldChartHeight) || chart.chartHeight,\n pos = {\n x: horiz ?\n correctFloat(axis.translate(tickPos + tickmarkOffset,\n void 0,\n void 0,\n old) +\n axis.transB) :\n (axis.left +\n axis.offset +\n (axis.opposite ?\n (((old && chart.oldChartWidth) ||\n chart.chartWidth) -\n axis.right -\n axis.left) :\n 0)),\n y: horiz ?\n (cHeight -\n axis.bottom +\n axis.offset -\n (axis.opposite ? axis.height : 0)) :\n correctFloat(cHeight -\n axis.translate(tickPos + tickmarkOffset,\n void 0,\n void 0,\n old) -\n axis.transB)\n };\n // Chrome workaround for #10516\n pos.y = clamp(pos.y, -1e5, 1e5);\n fireEvent(this, 'afterGetPosition', { pos: pos });\n return pos;\n };\n /**\n * Get the x, y position of the tick label\n * @private\n */\n Tick.prototype.getLabelPosition = function (x, y, label, horiz, labelOptions, tickmarkOffset, index, step) {\n var axis = this.axis,\n transA = axis.transA,\n reversed = ( // #7911\n axis.isLinked && axis.linkedParent ?\n axis.linkedParent.reversed :\n axis.reversed),\n staggerLines = axis.staggerLines,\n rotCorr = axis.tickRotCorr || { x: 0,\n y: 0 }, \n // Adjust for label alignment if we use reserveSpace: true (#5286)\n labelOffsetCorrection = (!horiz && !axis.reserveSpaceDefault ?\n -axis.labelOffset * (axis.labelAlign === 'center' ? 0.5 : 1) :\n 0),\n pos = {};\n var yOffset,\n line;\n if (axis.side === 0) {\n yOffset = label.rotation ? -8 : -label.getBBox().height;\n }\n else if (axis.side === 2) {\n yOffset = rotCorr.y + 8;\n }\n else {\n // #3140, #3140\n yOffset = Math.cos(label.rotation * deg2rad) *\n (rotCorr.y - label.getBBox(false, 0).height / 2);\n }\n if (defined(labelOptions.y)) {\n yOffset = axis.side === 0 && axis.horiz ?\n labelOptions.y + yOffset :\n labelOptions.y;\n }\n x = x +\n labelOptions.x +\n labelOffsetCorrection +\n rotCorr.x -\n (tickmarkOffset && horiz ?\n tickmarkOffset * transA * (reversed ? -1 : 1) :\n 0);\n y = y + yOffset - (tickmarkOffset && !horiz ?\n tickmarkOffset * transA * (reversed ? 1 : -1) : 0);\n // Correct for staggered labels\n if (staggerLines) {\n line = (index / (step || 1) % staggerLines);\n if (axis.opposite) {\n line = staggerLines - line - 1;\n }\n y += line * (axis.labelOffset / staggerLines);\n }\n pos.x = x;\n pos.y = Math.round(y);\n fireEvent(this, 'afterGetLabelPosition', { pos: pos, tickmarkOffset: tickmarkOffset, index: index });\n return pos;\n };\n /**\n * Get the offset height or width of the label\n *\n * @private\n * @function Highcharts.Tick#getLabelSize\n */\n Tick.prototype.getLabelSize = function () {\n return this.label ?\n this.label.getBBox()[this.axis.horiz ? 'height' : 'width'] :\n 0;\n };\n /**\n * Extendible method to return the path of the marker\n * @private\n */\n Tick.prototype.getMarkPath = function (x, y, tickLength, tickWidth, horiz, renderer) {\n return renderer.crispLine([[\n 'M',\n x,\n y\n ], [\n 'L',\n x + (horiz ? 0 : -tickLength),\n y + (horiz ? tickLength : 0)\n ]], tickWidth);\n };\n /**\n * Handle the label overflow by adjusting the labels to the left and right\n * edge, or hide them if they collide into the neighbour label.\n *\n * @private\n * @function Highcharts.Tick#handleOverflow\n */\n Tick.prototype.handleOverflow = function (xy) {\n var tick = this,\n axis = this.axis,\n labelOptions = axis.options.labels,\n pxPos = xy.x,\n chartWidth = axis.chart.chartWidth,\n spacing = axis.chart.spacing,\n leftBound = pick(axis.labelLeft,\n Math.min(axis.pos,\n spacing[3])),\n rightBound = pick(axis.labelRight,\n Math.max(!axis.isRadial ? axis.pos + axis.len : 0,\n chartWidth - spacing[1])),\n label = this.label,\n rotation = this.rotation,\n factor = {\n left: 0,\n center: 0.5,\n right: 1\n }[axis.labelAlign || label.attr('align')],\n labelWidth = label.getBBox().width,\n slotWidth = axis.getSlotWidth(tick),\n xCorrection = factor,\n css = {};\n var modifiedSlotWidth = slotWidth,\n goRight = 1,\n leftPos,\n rightPos,\n textWidth;\n // Check if the label overshoots the chart spacing box. If it does, move\n // it. If it now overshoots the slotWidth, add ellipsis.\n if (!rotation && labelOptions.overflow === 'justify') {\n leftPos = pxPos - factor * labelWidth;\n rightPos = pxPos + (1 - factor) * labelWidth;\n if (leftPos < leftBound) {\n modifiedSlotWidth =\n xy.x + modifiedSlotWidth * (1 - factor) - leftBound;\n }\n else if (rightPos > rightBound) {\n modifiedSlotWidth =\n rightBound - xy.x + modifiedSlotWidth * factor;\n goRight = -1;\n }\n modifiedSlotWidth = Math.min(slotWidth, modifiedSlotWidth); // #4177\n if (modifiedSlotWidth < slotWidth && axis.labelAlign === 'center') {\n xy.x += (goRight *\n (slotWidth -\n modifiedSlotWidth -\n xCorrection * (slotWidth - Math.min(labelWidth, modifiedSlotWidth))));\n }\n // If the label width exceeds the available space, set a text width\n // to be picked up below. Also, if a width has been set before, we\n // need to set a new one because the reported labelWidth will be\n // limited by the box (#3938).\n if (labelWidth > modifiedSlotWidth ||\n (axis.autoRotation && (label.styles || {}).width)) {\n textWidth = modifiedSlotWidth;\n }\n // Add ellipsis to prevent rotated labels to be clipped against the edge\n // of the chart\n }\n else if (rotation < 0 &&\n pxPos - factor * labelWidth < leftBound) {\n textWidth = Math.round(pxPos / Math.cos(rotation * deg2rad) - leftBound);\n }\n else if (rotation > 0 &&\n pxPos + factor * labelWidth > rightBound) {\n textWidth = Math.round((chartWidth - pxPos) /\n Math.cos(rotation * deg2rad));\n }\n if (textWidth) {\n if (tick.shortenLabel) {\n tick.shortenLabel();\n }\n else {\n css.width = Math.floor(textWidth) + 'px';\n if (!(labelOptions.style || {}).textOverflow) {\n css.textOverflow = 'ellipsis';\n }\n label.css(css);\n }\n }\n };\n /**\n * Try to replace the label if the same one already exists.\n *\n * @private\n * @function Highcharts.Tick#moveLabel\n */\n Tick.prototype.moveLabel = function (str, labelOptions) {\n var tick = this,\n label = tick.label,\n axis = tick.axis,\n reversed = axis.reversed;\n var moved = false,\n labelPos,\n xPos,\n yPos;\n if (label && label.textStr === str) {\n tick.movedLabel = label;\n moved = true;\n delete tick.label;\n }\n else { // Find a label with the same string\n objectEach(axis.ticks, function (currentTick) {\n if (!moved &&\n !currentTick.isNew &&\n currentTick !== tick &&\n currentTick.label &&\n currentTick.label.textStr === str) {\n tick.movedLabel = currentTick.label;\n moved = true;\n currentTick.labelPos = tick.movedLabel.xy;\n delete currentTick.label;\n }\n });\n }\n // Create new label if the actual one is moved\n if (!moved && (tick.labelPos || label)) {\n labelPos = tick.labelPos || label.xy;\n xPos = axis.horiz ?\n (reversed ? 0 : axis.width + axis.left) : labelPos.x;\n yPos = axis.horiz ?\n labelPos.y : (reversed ? (axis.width + axis.left) : 0);\n tick.movedLabel = tick.createLabel({ x: xPos, y: yPos }, str, labelOptions);\n if (tick.movedLabel) {\n tick.movedLabel.attr({ opacity: 0 });\n }\n }\n };\n /**\n * Put everything in place\n *\n * @private\n * @param {number} index\n *\n * @param {boolean} [old]\n * Use old coordinates to prepare an animation into new position\n *\n * @param {number} [opacity]\n */\n Tick.prototype.render = function (index, old, opacity) {\n var tick = this,\n axis = tick.axis,\n horiz = axis.horiz,\n pos = tick.pos,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n xy = tick.getPosition(horiz,\n pos,\n tickmarkOffset,\n old),\n x = xy.x,\n y = xy.y,\n reverseCrisp = ((horiz && x === axis.pos + axis.len) ||\n (!horiz && y === axis.pos)) ? -1 : 1; // #1480, #1687\n var labelOpacity = pick(opacity,\n tick.label && tick.label.newOpacity, // #15528\n 1);\n opacity = pick(opacity, 1);\n this.isActive = true;\n // Create the grid line\n this.renderGridLine(old, opacity, reverseCrisp);\n // create the tick mark\n this.renderMark(xy, opacity, reverseCrisp);\n // the label is created on init - now move it into place\n this.renderLabel(xy, old, labelOpacity, index);\n tick.isNew = false;\n fireEvent(this, 'afterRender');\n };\n /**\n * Renders the gridLine.\n *\n * @private\n * @function Highcharts.Tick#renderGridLine\n * @param {boolean} old Whether or not the tick is old\n * @param {number} opacity The opacity of the grid line\n * @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1\n */\n Tick.prototype.renderGridLine = function (old, opacity, reverseCrisp) {\n var tick = this,\n axis = tick.axis,\n options = axis.options,\n attribs = {},\n pos = tick.pos,\n type = tick.type,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n renderer = axis.chart.renderer;\n var gridLine = tick.gridLine,\n gridLinePath,\n gridLineWidth = options.gridLineWidth,\n gridLineColor = options.gridLineColor,\n dashStyle = options.gridLineDashStyle;\n if (tick.type === 'minor') {\n gridLineWidth = options.minorGridLineWidth;\n gridLineColor = options.minorGridLineColor;\n dashStyle = options.minorGridLineDashStyle;\n }\n if (!gridLine) {\n if (!axis.chart.styledMode) {\n attribs.stroke = gridLineColor;\n attribs['stroke-width'] = gridLineWidth || 0;\n attribs.dashstyle = dashStyle;\n }\n if (!type) {\n attribs.zIndex = 1;\n }\n if (old) {\n opacity = 0;\n }\n /**\n * The rendered grid line of the tick.\n * @name Highcharts.Tick#gridLine\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.gridLine = gridLine = renderer.path()\n .attr(attribs)\n .addClass('highcharts-' + (type ? type + '-' : '') + 'grid-line')\n .add(axis.gridGroup);\n }\n if (gridLine) {\n gridLinePath = axis.getPlotLinePath({\n value: pos + tickmarkOffset,\n lineWidth: gridLine.strokeWidth() * reverseCrisp,\n force: 'pass',\n old: old,\n acrossPanes: false // #18025\n });\n // If the parameter 'old' is set, the current call will be followed\n // by another call, therefore do not do any animations this time\n if (gridLinePath) {\n gridLine[old || tick.isNew ? 'attr' : 'animate']({\n d: gridLinePath,\n opacity: opacity\n });\n }\n }\n };\n /**\n * Renders the tick mark.\n *\n * @private\n * @function Highcharts.Tick#renderMark\n * @param {Highcharts.PositionObject} xy The position vector of the mark\n * @param {number} opacity The opacity of the mark\n * @param {number} reverseCrisp Modifier for avoiding overlapping 1 or -1\n */\n Tick.prototype.renderMark = function (xy, opacity, reverseCrisp) {\n var tick = this, axis = tick.axis, options = axis.options, renderer = axis.chart.renderer, type = tick.type, tickSize = axis.tickSize(type ? type + 'Tick' : 'tick'), x = xy.x, y = xy.y, tickWidth = pick(options[type !== 'minor' ? 'tickWidth' : 'minorTickWidth'], !type && axis.isXAxis ? 1 : 0), // X axis defaults to 1\n tickColor = options[type !== 'minor' ? 'tickColor' : 'minorTickColor'];\n var mark = tick.mark;\n var isNewMark = !mark;\n if (tickSize) {\n // negate the length\n if (axis.opposite) {\n tickSize[0] = -tickSize[0];\n }\n // First time, create it\n if (!mark) {\n /**\n * The rendered mark of the tick.\n * @name Highcharts.Tick#mark\n * @type {Highcharts.SVGElement|undefined}\n */\n tick.mark = mark = renderer.path()\n .addClass('highcharts-' + (type ? type + '-' : '') + 'tick')\n .add(axis.axisGroup);\n if (!axis.chart.styledMode) {\n mark.attr({\n stroke: tickColor,\n 'stroke-width': tickWidth\n });\n }\n }\n mark[isNewMark ? 'attr' : 'animate']({\n d: tick.getMarkPath(x, y, tickSize[0], mark.strokeWidth() * reverseCrisp, axis.horiz, renderer),\n opacity: opacity\n });\n }\n };\n /**\n * Renders the tick label.\n * Note: The label should already be created in init(), so it should only\n * have to be moved into place.\n *\n * @private\n * @function Highcharts.Tick#renderLabel\n * @param {Highcharts.PositionObject} xy The position vector of the label\n * @param {boolean} old Whether or not the tick is old\n * @param {number} opacity The opacity of the label\n * @param {number} index The index of the tick\n */\n Tick.prototype.renderLabel = function (xy, old, opacity, index) {\n var tick = this,\n axis = tick.axis,\n horiz = axis.horiz,\n options = axis.options,\n label = tick.label,\n labelOptions = options.labels,\n step = labelOptions.step,\n tickmarkOffset = pick(tick.tickmarkOffset,\n axis.tickmarkOffset),\n x = xy.x,\n y = xy.y;\n var show = true;\n if (label && isNumber(x)) {\n label.xy = xy = tick.getLabelPosition(x, y, label, horiz, labelOptions, tickmarkOffset, index, step);\n // Apply show first and show last. If the tick is both first and\n // last, it is a single centered tick, in which case we show the\n // label anyway (#2100).\n if ((tick.isFirst &&\n !tick.isLast &&\n !options.showFirstLabel) ||\n (tick.isLast &&\n !tick.isFirst &&\n !options.showLastLabel)) {\n show = false;\n // Handle label overflow and show or hide accordingly\n }\n else if (horiz &&\n !labelOptions.step &&\n !labelOptions.rotation &&\n !old &&\n opacity !== 0) {\n tick.handleOverflow(xy);\n }\n // apply step\n if (step && index % step) {\n // show those indices dividable by step\n show = false;\n }\n // Set the new position, and show or hide\n if (show && isNumber(xy.y)) {\n xy.opacity = opacity;\n label[tick.isNewLabel ? 'attr' : 'animate'](xy).show(true);\n tick.isNewLabel = false;\n }\n else {\n label.hide(); // #1338, #15863\n tick.isNewLabel = true;\n }\n }\n };\n /**\n * Replace labels with the moved ones to perform animation. Additionally\n * destroy unused labels.\n *\n * @private\n * @function Highcharts.Tick#replaceMovedLabel\n */\n Tick.prototype.replaceMovedLabel = function () {\n var tick = this,\n label = tick.label,\n axis = tick.axis,\n reversed = axis.reversed;\n var x,\n y;\n // Animate and destroy\n if (label && !tick.isNew) {\n x = axis.horiz ? (reversed ? axis.left : axis.width + axis.left) : label.xy.x;\n y = axis.horiz ?\n label.xy.y :\n (reversed ? axis.width + axis.top : axis.top);\n label.animate({ x: x, y: y, opacity: 0 }, void 0, label.destroy);\n delete tick.label;\n }\n axis.isDirty = true;\n tick.label = tick.movedLabel;\n delete tick.movedLabel;\n };\n return Tick;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Optional parameters for the tick.\n * @private\n * @interface Highcharts.TickParametersObject\n */ /**\n * Set category for the tick.\n * @name Highcharts.TickParametersObject#category\n * @type {string|undefined}\n */ /**\n * @name Highcharts.TickParametersObject#options\n * @type {Highcharts.Dictionary<any>|undefined}\n */ /**\n * Set tickmarkOffset for the tick.\n * @name Highcharts.TickParametersObject#tickmarkOffset\n * @type {number|undefined}\n */\n /**\n * Additonal time tick information.\n *\n * @interface Highcharts.TimeTicksInfoObject\n * @extends Highcharts.TimeNormalizedObject\n */ /**\n * @name Highcharts.TimeTicksInfoObject#higherRanks\n * @type {Array<string>}\n */ /**\n * @name Highcharts.TimeTicksInfoObject#totalRange\n * @type {number}\n */\n (''); // keeps doclets above in JS file\n\n return Tick;\n });\n _registerModule(_modules, 'Core/Axis/Axis.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/AxisDefaults.js'], _modules['Core/Color/Color.js'], _modules['Core/Defaults.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Utilities.js']], function (A, AxisDefaults, Color, D, F, H, Tick, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject;\n var defaultOptions = D.defaultOptions;\n var registerEventOptions = F.registerEventOptions;\n var deg2rad = H.deg2rad;\n var arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n clamp = U.clamp,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n normalizeTickInterval = U.normalizeTickInterval,\n objectEach = U.objectEach,\n pick = U.pick,\n relativeLength = U.relativeLength,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n var getNormalizedTickInterval = function (axis,\n tickInterval) { return normalizeTickInterval(tickInterval,\n void 0,\n void 0,\n pick(axis.options.allowDecimals, \n // If the tick interval is greather than 0.5, avoid decimals, as\n // linear axes are often used to render discrete values (#3363). If\n // a tick amount is set, allow decimals by default, as it increases\n // the chances for a good fit.\n tickInterval < 0.5 || axis.tickAmount !== void 0), !!axis.tickAmount); };\n /* *\n *\n * Class\n *\n * */\n /**\n * Create a new axis object. Called internally when instanciating a new chart or\n * adding axes by {@link Highcharts.Chart#addAxis}.\n *\n * A chart can have from 0 axes (pie chart) to multiples. In a normal, single\n * series cartesian chart, there is one X axis and one Y axis.\n *\n * The X axis or axes are referenced by {@link Highcharts.Chart.xAxis}, which is\n * an array of Axis objects. If there is only one axis, it can be referenced\n * through `chart.xAxis[0]`, and multiple axes have increasing indices. The same\n * pattern goes for Y axes.\n *\n * If you need to get the axes from a series object, use the `series.xAxis` and\n * `series.yAxis` properties. These are not arrays, as one series can only be\n * associated to one X and one Y axis.\n *\n * A third way to reference the axis programmatically is by `id`. Add an `id` in\n * the axis configuration options, and get the axis by\n * {@link Highcharts.Chart#get}.\n *\n * Configuration options for the axes are given in options.xAxis and\n * options.yAxis.\n *\n * @class\n * @name Highcharts.Axis\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance to apply the axis on.\n *\n * @param {Highcharts.AxisOptions} userOptions\n * Axis options.\n */\n var Axis = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Axis(chart, userOptions) {\n this.alternateBands = void 0;\n this.bottom = void 0;\n this.chart = void 0;\n this.closestPointRange = void 0;\n this.coll = void 0;\n this.eventOptions = void 0;\n this.hasNames = void 0;\n this.hasVisibleSeries = void 0;\n this.height = void 0;\n this.isLinked = void 0;\n this.labelEdge = void 0; // @todo\n this.labelFormatter = void 0;\n this.left = void 0;\n this.len = void 0;\n this.max = void 0;\n this.maxLabelLength = void 0;\n this.min = void 0;\n this.minorTickInterval = void 0;\n this.minorTicks = void 0;\n this.minPixelPadding = void 0;\n this.names = void 0;\n this.offset = void 0;\n this.options = void 0;\n this.overlap = void 0;\n this.paddedTicks = void 0;\n this.plotLinesAndBands = void 0;\n this.plotLinesAndBandsGroups = void 0;\n this.pointRange = void 0;\n this.pointRangePadding = void 0;\n this.pos = void 0;\n this.positiveValuesOnly = void 0;\n this.right = void 0;\n this.series = void 0;\n this.side = void 0;\n this.tickAmount = void 0;\n this.tickInterval = void 0;\n this.tickmarkOffset = void 0;\n this.tickPositions = void 0;\n this.tickRotCorr = void 0;\n this.ticks = void 0;\n this.top = void 0;\n this.transA = void 0;\n this.transB = void 0;\n this.translationSlope = void 0;\n this.userOptions = void 0;\n this.visible = void 0;\n this.width = void 0;\n this.zoomEnabled = void 0;\n this.init(chart, userOptions);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Overrideable function to initialize the axis.\n *\n * @see {@link Axis}\n *\n * @function Highcharts.Axis#init\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance to apply the axis on.\n *\n * @param {AxisOptions} userOptions\n * Axis options.\n *\n * @emits Highcharts.Axis#event:afterInit\n * @emits Highcharts.Axis#event:init\n */\n Axis.prototype.init = function (chart, userOptions) {\n var isXAxis = userOptions.isX,\n axis = this;\n /**\n * The Chart that the axis belongs to.\n *\n * @name Highcharts.Axis#chart\n * @type {Highcharts.Chart}\n */\n axis.chart = chart;\n /**\n * Whether the axis is horizontal.\n *\n * @name Highcharts.Axis#horiz\n * @type {boolean|undefined}\n */\n axis.horiz = chart.inverted && !axis.isZAxis ? !isXAxis : isXAxis;\n /**\n * Whether the axis is the x-axis.\n *\n * @name Highcharts.Axis#isXAxis\n * @type {boolean|undefined}\n */\n axis.isXAxis = isXAxis;\n /**\n * The collection where the axis belongs, for example `xAxis`, `yAxis`\n * or `colorAxis`. Corresponds to properties on Chart, for example\n * {@link Chart.xAxis}.\n *\n * @name Highcharts.Axis#coll\n * @type {string}\n */\n axis.coll = axis.coll || (isXAxis ? 'xAxis' : 'yAxis');\n fireEvent(this, 'init', { userOptions: userOptions });\n // Needed in setOptions\n axis.opposite = pick(userOptions.opposite, axis.opposite);\n /**\n * The side on which the axis is rendered. 0 is top, 1 is right, 2\n * is bottom and 3 is left.\n *\n * @name Highcharts.Axis#side\n * @type {number}\n */\n axis.side = pick(userOptions.side, axis.side, (axis.horiz ?\n (axis.opposite ? 0 : 2) : // top : bottom\n (axis.opposite ? 1 : 3)) // right : left\n );\n /**\n * Current options for the axis after merge of defaults and user's\n * options.\n *\n * @name Highcharts.Axis#options\n * @type {Highcharts.AxisOptions}\n */\n axis.setOptions(userOptions);\n var options = this.options,\n labelsOptions = options.labels,\n type = options.type;\n /**\n * User's options for this axis without defaults.\n *\n * @name Highcharts.Axis#userOptions\n * @type {Highcharts.AxisOptions}\n */\n axis.userOptions = userOptions;\n axis.minPixelPadding = 0;\n /**\n * Whether the axis is reversed. Based on the `axis.reversed`,\n * option, but inverted charts have reversed xAxis by default.\n *\n * @name Highcharts.Axis#reversed\n * @type {boolean}\n */\n axis.reversed = pick(options.reversed, axis.reversed);\n axis.visible = options.visible;\n axis.zoomEnabled = options.zoomEnabled;\n // Initial categories\n axis.hasNames =\n type === 'category' || options.categories === true;\n /**\n * If categories are present for the axis, names are used instead of\n * numbers for that axis.\n *\n * Since Highcharts 3.0, categories can also be extracted by giving each\n * point a name and setting axis type to `category`. However, if you\n * have multiple series, best practice remains defining the `categories`\n * array.\n *\n * @see [xAxis.categories](/highcharts/xAxis.categories)\n *\n * @name Highcharts.Axis#categories\n * @type {Array<string>}\n * @readonly\n */\n axis.categories = options.categories || (axis.hasNames ? [] : void 0);\n if (!axis.names) { // Preserve on update (#3830)\n axis.names = [];\n axis.names.keys = {};\n }\n // Placeholder for plotlines and plotbands groups\n axis.plotLinesAndBandsGroups = {};\n // Shorthand types\n axis.positiveValuesOnly = !!axis.logarithmic;\n // Flag, if axis is linked to another axis\n axis.isLinked = defined(options.linkedTo);\n /**\n * List of major ticks mapped by postition on axis.\n *\n * @see {@link Highcharts.Tick}\n *\n * @name Highcharts.Axis#ticks\n * @type {Highcharts.Dictionary<Highcharts.Tick>}\n */\n axis.ticks = {};\n axis.labelEdge = [];\n /**\n * List of minor ticks mapped by position on the axis.\n *\n * @see {@link Highcharts.Tick}\n *\n * @name Highcharts.Axis#minorTicks\n * @type {Highcharts.Dictionary<Highcharts.Tick>}\n */\n axis.minorTicks = {};\n // List of plotLines/Bands\n axis.plotLinesAndBands = [];\n // Alternate bands\n axis.alternateBands = {};\n // Axis metrics\n axis.len = 0;\n axis.minRange = axis.userMinRange = options.minRange || options.maxZoom;\n axis.range = options.range;\n axis.offset = options.offset || 0;\n /**\n * The maximum value of the axis. In a logarithmic axis, this is the\n * logarithm of the real value, and the real value can be obtained from\n * {@link Axis#getExtremes}.\n *\n * @name Highcharts.Axis#max\n * @type {number|null}\n */\n axis.max = null;\n /**\n * The minimum value of the axis. In a logarithmic axis, this is the\n * logarithm of the real value, and the real value can be obtained from\n * {@link Axis#getExtremes}.\n *\n * @name Highcharts.Axis#min\n * @type {number|null}\n */\n axis.min = null;\n /**\n * The processed crosshair options.\n *\n * @name Highcharts.Axis#crosshair\n * @type {boolean|Highcharts.AxisCrosshairOptions}\n */\n var crosshair = pick(options.crosshair,\n splat(chart.options.tooltip.crosshairs)[isXAxis ? 0 : 1]);\n axis.crosshair = crosshair === true ? {} : crosshair;\n // Register. Don't add it again on Axis.update().\n if (chart.axes.indexOf(axis) === -1) { //\n if (isXAxis) { // #2713\n chart.axes.splice(chart.xAxis.length, 0, axis);\n }\n else {\n chart.axes.push(axis);\n }\n chart[axis.coll].push(axis);\n }\n /**\n * All series associated to the axis.\n *\n * @name Highcharts.Axis#series\n * @type {Array<Highcharts.Series>}\n */\n axis.series = axis.series || []; // populated by Series\n // Reversed axis\n if (chart.inverted &&\n !axis.isZAxis &&\n isXAxis &&\n typeof axis.reversed === 'undefined') {\n axis.reversed = true;\n }\n axis.labelRotation = isNumber(labelsOptions.rotation) ?\n labelsOptions.rotation :\n void 0;\n // Register event listeners\n registerEventOptions(axis, options);\n fireEvent(this, 'afterInit');\n };\n /**\n * Merge and set options.\n *\n * @private\n * @function Highcharts.Axis#setOptions\n *\n * @param {Highcharts.AxisOptions} userOptions\n * Axis options.\n *\n * @emits Highcharts.Axis#event:afterSetOptions\n */\n Axis.prototype.setOptions = function (userOptions) {\n this.options = merge(AxisDefaults.defaultXAxisOptions, (this.coll === 'yAxis') && AxisDefaults.defaultYAxisOptions, [\n AxisDefaults.defaultTopAxisOptions,\n AxisDefaults.defaultRightAxisOptions,\n AxisDefaults.defaultBottomAxisOptions,\n AxisDefaults.defaultLeftAxisOptions\n ][this.side], merge(\n // if set in setOptions (#1053):\n defaultOptions[this.coll], userOptions));\n fireEvent(this, 'afterSetOptions', { userOptions: userOptions });\n };\n /**\n * The default label formatter. The context is a special config object for\n * the label. In apps, use the\n * [labels.formatter](https://api.highcharts.com/highcharts/xAxis.labels.formatter)\n * instead, except when a modification is needed.\n *\n * @function Highcharts.Axis#defaultLabelFormatter\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} this\n * Formatter context of axis label.\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} [ctx]\n * Formatter context of axis label.\n *\n * @return {string}\n * The formatted label content.\n */\n Axis.prototype.defaultLabelFormatter = function (ctx) {\n var axis = this.axis,\n chart = this.chart,\n numberFormatter = chart.numberFormatter,\n value = isNumber(this.value) ? this.value : NaN,\n time = axis.chart.time,\n categories = axis.categories,\n dateTimeLabelFormat = this.dateTimeLabelFormat,\n lang = defaultOptions.lang,\n numericSymbols = lang.numericSymbols,\n numSymMagnitude = lang.numericSymbolMagnitude || 1000, \n // make sure the same symbol is added for all labels on a linear\n // axis\n numericSymbolDetector = axis.logarithmic ?\n Math.abs(value) :\n axis.tickInterval;\n var i = numericSymbols && numericSymbols.length,\n multi,\n ret;\n if (categories) {\n ret = \"\".concat(this.value);\n }\n else if (dateTimeLabelFormat) { // datetime axis\n ret = time.dateFormat(dateTimeLabelFormat, value);\n }\n else if (i && numericSymbolDetector >= 1000) {\n // Decide whether we should add a numeric symbol like k (thousands)\n // or M (millions). If we are to enable this in tooltip or other\n // places as well, we can move this logic to the numberFormatter and\n // enable it by a parameter.\n while (i-- && typeof ret === 'undefined') {\n multi = Math.pow(numSymMagnitude, i + 1);\n if (\n // Only accept a numeric symbol when the distance is more\n // than a full unit. So for example if the symbol is k, we\n // don't accept numbers like 0.5k.\n numericSymbolDetector >= multi &&\n // Accept one decimal before the symbol. Accepts 0.5k but\n // not 0.25k. How does this work with the previous?\n (value * 10) % multi === 0 &&\n numericSymbols[i] !== null &&\n value !== 0) { // #5480\n ret = numberFormatter(value / multi, -1) + numericSymbols[i];\n }\n }\n }\n if (typeof ret === 'undefined') {\n if (Math.abs(value) >= 10000) { // add thousands separators\n ret = numberFormatter(value, -1);\n }\n else { // small numbers\n ret = numberFormatter(value, -1, void 0, ''); // #2466\n }\n }\n return ret;\n };\n /**\n * Get the minimum and maximum for the series of each axis. The function\n * analyzes the axis series and updates `this.dataMin` and `this.dataMax`.\n *\n * @private\n * @function Highcharts.Axis#getSeriesExtremes\n *\n * @emits Highcharts.Axis#event:afterGetSeriesExtremes\n * @emits Highcharts.Axis#event:getSeriesExtremes\n */\n Axis.prototype.getSeriesExtremes = function () {\n var axis = this,\n chart = axis.chart;\n var xExtremes;\n fireEvent(this, 'getSeriesExtremes', null, function () {\n axis.hasVisibleSeries = false;\n // Reset properties in case we're redrawing (#3353)\n axis.dataMin = axis.dataMax = axis.threshold = null;\n axis.softThreshold = !axis.isXAxis;\n // Loop through this axis' series\n axis.series.forEach(function (series) {\n if (series.visible ||\n !chart.options.chart.ignoreHiddenSeries) {\n var seriesOptions = series.options;\n var xData = void 0,\n threshold = seriesOptions.threshold,\n seriesDataMin = void 0,\n seriesDataMax = void 0;\n axis.hasVisibleSeries = true;\n // Validate threshold in logarithmic axes\n if (axis.positiveValuesOnly && threshold <= 0) {\n threshold = null;\n }\n // Get dataMin and dataMax for X axes\n if (axis.isXAxis) {\n xData = series.xData;\n if (xData.length) {\n xData = axis.logarithmic ?\n xData.filter(axis.validatePositiveValue) :\n xData;\n xExtremes = series.getXExtremes(xData);\n // If xData contains values which is not numbers,\n // then filter them out. To prevent performance hit,\n // we only do this after we have already found\n // seriesDataMin because in most cases all data is\n // valid. #5234.\n seriesDataMin = xExtremes.min;\n seriesDataMax = xExtremes.max;\n if (!isNumber(seriesDataMin) &&\n // #5010:\n !(seriesDataMin instanceof Date)) {\n xData = xData.filter(isNumber);\n xExtremes = series.getXExtremes(xData);\n // Do it again with valid data\n seriesDataMin = xExtremes.min;\n seriesDataMax = xExtremes.max;\n }\n if (xData.length) {\n axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);\n axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);\n }\n }\n // Get dataMin and dataMax for Y axes, as well as handle\n // stacking and processed data\n }\n else {\n // Get this particular series extremes\n var dataExtremes = series.applyExtremes();\n // Get the dataMin and dataMax so far. If percentage is\n // used, the min and max are always 0 and 100. If\n // seriesDataMin and seriesDataMax is null, then series\n // doesn't have active y data, we continue with nulls\n if (isNumber(dataExtremes.dataMin)) {\n seriesDataMin = dataExtremes.dataMin;\n axis.dataMin = Math.min(pick(axis.dataMin, seriesDataMin), seriesDataMin);\n }\n if (isNumber(dataExtremes.dataMax)) {\n seriesDataMax = dataExtremes.dataMax;\n axis.dataMax = Math.max(pick(axis.dataMax, seriesDataMax), seriesDataMax);\n }\n // Adjust to threshold\n if (defined(threshold)) {\n axis.threshold = threshold;\n }\n // If any series has a hard threshold, it takes\n // precedence\n if (!seriesOptions.softThreshold ||\n axis.positiveValuesOnly) {\n axis.softThreshold = false;\n }\n }\n }\n });\n });\n fireEvent(this, 'afterGetSeriesExtremes');\n };\n /**\n * Translate from axis value to pixel position on the chart, or back. Use\n * the `toPixels` and `toValue` functions in applications.\n *\n * @private\n * @function Highcharts.Axis#translate\n */\n Axis.prototype.translate = function (val, backwards, cvsCoord, old, handleLog, pointPlacement) {\n var axis = (this.linkedParent || this), // #1417\n localMin = (old && axis.old ? axis.old.min : axis.min);\n if (!isNumber(localMin)) {\n return NaN;\n }\n var minPixelPadding = axis.minPixelPadding,\n doPostTranslate = (axis.isOrdinal ||\n axis.brokenAxis && axis.brokenAxis.hasBreaks ||\n (axis.logarithmic && handleLog)) && axis.lin2val;\n var sign = 1,\n cvsOffset = 0,\n localA = old && axis.old ? axis.old.transA : axis.transA,\n returnValue = 0;\n if (!localA) {\n localA = axis.transA;\n }\n // In vertical axes, the canvas coordinates start from 0 at the top like\n // in SVG.\n if (cvsCoord) {\n sign *= -1; // canvas coordinates inverts the value\n cvsOffset = axis.len;\n }\n // Handle reversed axis\n if (axis.reversed) {\n sign *= -1;\n cvsOffset -= sign * (axis.sector || axis.len);\n }\n // From pixels to value\n if (backwards) { // reverse translation\n val = val * sign + cvsOffset;\n val -= minPixelPadding;\n // from chart pixel to value:\n returnValue = val / localA + localMin;\n if (doPostTranslate) { // log, ordinal and broken axis\n returnValue = axis.lin2val(returnValue);\n }\n // From value to pixels\n }\n else {\n if (doPostTranslate) { // log, ordinal and broken axis\n val = axis.val2lin(val);\n }\n var value = sign * (val - localMin) * localA;\n returnValue = (!axis.isRadial ? correctFloat(value) : value) +\n cvsOffset +\n (sign * minPixelPadding) +\n (isNumber(pointPlacement) ? localA * pointPlacement : 0);\n }\n return returnValue;\n };\n /**\n * Translate a value in terms of axis units into pixels within the chart.\n *\n * @function Highcharts.Axis#toPixels\n *\n * @param {number} value\n * A value in terms of axis units.\n *\n * @param {boolean} paneCoordinates\n * Whether to return the pixel coordinate relative to the chart or just the\n * axis/pane itself.\n *\n * @return {number}\n * Pixel position of the value on the chart or axis.\n */\n Axis.prototype.toPixels = function (value, paneCoordinates) {\n return this.translate(value, false, !this.horiz, void 0, true) +\n (paneCoordinates ? 0 : this.pos);\n };\n /**\n * Translate a pixel position along the axis to a value in terms of axis\n * units.\n *\n * @function Highcharts.Axis#toValue\n *\n * @param {number} pixel\n * The pixel value coordinate.\n *\n * @param {boolean} [paneCoordinates=false]\n * Whether the input pixel is relative to the chart or just the axis/pane\n * itself.\n *\n * @return {number}\n * The axis value.\n */\n Axis.prototype.toValue = function (pixel, paneCoordinates) {\n return this.translate(pixel - (paneCoordinates ? 0 : this.pos), true, !this.horiz, void 0, true);\n };\n /**\n * Create the path for a plot line that goes from the given value on\n * this axis, across the plot to the opposite side. Also used internally for\n * grid lines and crosshairs.\n *\n * @function Highcharts.Axis#getPlotLinePath\n *\n * @param {Highcharts.AxisPlotLinePathOptionsObject} options\n * Options for the path.\n *\n * @return {Highcharts.SVGPathArray|null}\n * The SVG path definition for the plot line.\n */\n Axis.prototype.getPlotLinePath = function (options) {\n var axis = this,\n chart = axis.chart,\n axisLeft = axis.left,\n axisTop = axis.top,\n old = options.old,\n value = options.value,\n lineWidth = options.lineWidth,\n cHeight = (old && chart.oldChartHeight) || chart.chartHeight,\n cWidth = (old && chart.oldChartWidth) || chart.chartWidth,\n transB = axis.transB;\n var translatedValue = options.translatedValue,\n force = options.force,\n x1,\n y1,\n x2,\n y2,\n skip;\n // eslint-disable-next-line valid-jsdoc\n /**\n * Check if x is between a and b. If not, either move to a/b\n * or skip, depending on the force parameter.\n * @private\n */\n function between(x, a, b) {\n if (force !== 'pass' && (x < a || x > b)) {\n if (force) {\n x = clamp(x, a, b);\n }\n else {\n skip = true;\n }\n }\n return x;\n }\n var evt = {\n value: value,\n lineWidth: lineWidth,\n old: old,\n force: force,\n acrossPanes: options.acrossPanes,\n translatedValue: translatedValue\n };\n fireEvent(this, 'getPlotLinePath', evt, function (e) {\n translatedValue = pick(translatedValue, axis.translate(value, void 0, void 0, old));\n // Keep the translated value within sane bounds, and avoid Infinity\n // to fail the isNumber test (#7709).\n translatedValue = clamp(translatedValue, -1e5, 1e5);\n x1 = x2 = Math.round(translatedValue + transB);\n y1 = y2 = Math.round(cHeight - translatedValue - transB);\n if (!isNumber(translatedValue)) { // no min or max\n skip = true;\n force = false; // #7175, don't force it when path is invalid\n }\n else if (axis.horiz) {\n y1 = axisTop;\n y2 = cHeight - axis.bottom;\n x1 = x2 = between(x1, axisLeft, axisLeft + axis.width);\n }\n else {\n x1 = axisLeft;\n x2 = cWidth - axis.right;\n y1 = y2 = between(y1, axisTop, axisTop + axis.height);\n }\n e.path = skip && !force ?\n null :\n chart.renderer.crispLine([['M', x1, y1], ['L', x2, y2]], lineWidth || 1);\n });\n return evt.path;\n };\n /**\n * Internal function to get the tick positions of a linear axis to round\n * values like whole tens or every five.\n *\n * @function Highcharts.Axis#getLinearTickPositions\n *\n * @param {number} tickInterval\n * The normalized tick interval.\n *\n * @param {number} min\n * Axis minimum.\n *\n * @param {number} max\n * Axis maximum.\n *\n * @return {Array<number>}\n * An array of axis values where ticks should be placed.\n */\n Axis.prototype.getLinearTickPositions = function (tickInterval, min, max) {\n var roundedMin = correctFloat(Math.floor(min / tickInterval) * tickInterval),\n roundedMax = correctFloat(Math.ceil(max / tickInterval) * tickInterval),\n tickPositions = [];\n var pos,\n lastPos,\n precision;\n // When the precision is higher than what we filter out in\n // correctFloat, skip it (#6183).\n if (correctFloat(roundedMin + tickInterval) === roundedMin) {\n precision = 20;\n }\n // For single points, add a tick regardless of the relative position\n // (#2662, #6274)\n if (this.single) {\n return [min];\n }\n // Populate the intermediate values\n pos = roundedMin;\n while (pos <= roundedMax) {\n // Place the tick on the rounded value\n tickPositions.push(pos);\n // Always add the raw tickInterval, not the corrected one.\n pos = correctFloat(pos + tickInterval, precision);\n // If the interval is not big enough in the current min - max range\n // to actually increase the loop variable, we need to break out to\n // prevent endless loop. Issue #619\n if (pos === lastPos) {\n break;\n }\n // Record the last value\n lastPos = pos;\n }\n return tickPositions;\n };\n /**\n * Resolve the new minorTicks/minorTickInterval options into the legacy\n * loosely typed minorTickInterval option.\n *\n * @function Highcharts.Axis#getMinorTickInterval\n *\n * @return {number|\"auto\"|null}\n * Legacy option\n */\n Axis.prototype.getMinorTickInterval = function () {\n var options = this.options;\n if (options.minorTicks === true) {\n return pick(options.minorTickInterval, 'auto');\n }\n if (options.minorTicks === false) {\n return null;\n }\n return options.minorTickInterval;\n };\n /**\n * Internal function to return the minor tick positions. For logarithmic\n * axes, the same logic as for major ticks is reused.\n *\n * @function Highcharts.Axis#getMinorTickPositions\n *\n * @return {Array<number>}\n * An array of axis values where ticks should be placed.\n */\n Axis.prototype.getMinorTickPositions = function () {\n var axis = this,\n options = axis.options,\n tickPositions = axis.tickPositions,\n minorTickInterval = axis.minorTickInterval,\n pointRangePadding = axis.pointRangePadding || 0,\n min = axis.min - pointRangePadding, // #1498\n max = axis.max + pointRangePadding, // #1498\n range = max - min;\n var minorTickPositions = [],\n pos;\n // If minor ticks get too dense, they are hard to read, and may cause\n // long running script. So we don't draw them.\n if (range && range / minorTickInterval < axis.len / 3) { // #3875\n var logarithmic_1 = axis.logarithmic;\n if (logarithmic_1) {\n // For each interval in the major ticks, compute the minor ticks\n // separately.\n this.paddedTicks.forEach(function (_pos, i, paddedTicks) {\n if (i) {\n minorTickPositions.push.apply(minorTickPositions, logarithmic_1.getLogTickPositions(minorTickInterval, paddedTicks[i - 1], paddedTicks[i], true));\n }\n });\n }\n else if (axis.dateTime &&\n this.getMinorTickInterval() === 'auto') { // #1314\n minorTickPositions = minorTickPositions.concat(axis.getTimeTicks(axis.dateTime.normalizeTimeTickInterval(minorTickInterval), min, max, options.startOfWeek));\n }\n else {\n for (pos = min + (tickPositions[0] - min) % minorTickInterval; pos <= max; pos += minorTickInterval) {\n // Very, very, tight grid lines (#5771)\n if (pos === minorTickPositions[0]) {\n break;\n }\n minorTickPositions.push(pos);\n }\n }\n }\n if (minorTickPositions.length !== 0) {\n axis.trimTicks(minorTickPositions); // #3652 #3743 #1498 #6330\n }\n return minorTickPositions;\n };\n /**\n * Adjust the min and max for the minimum range. Keep in mind that the\n * series data is not yet processed, so we don't have information on data\n * cropping and grouping, or updated `axis.pointRange` or\n * `series.pointRange`. The data can't be processed until we have finally\n * established min and max.\n *\n * @private\n * @function Highcharts.Axis#adjustForMinRange\n */\n Axis.prototype.adjustForMinRange = function () {\n var axis = this,\n options = axis.options,\n log = axis.logarithmic;\n var min = axis.min,\n max = axis.max,\n zoomOffset,\n spaceAvailable,\n closestDataRange = 0,\n i,\n distance,\n xData,\n loopLength,\n minArgs,\n maxArgs,\n minRange;\n // Set the automatic minimum range based on the closest point distance\n if (axis.isXAxis &&\n typeof axis.minRange === 'undefined' &&\n !log) {\n if (defined(options.min) ||\n defined(options.max) ||\n defined(options.floor) ||\n defined(options.ceiling)) {\n axis.minRange = null; // don't do this again\n }\n else {\n // Find the closest distance between raw data points, as opposed\n // to closestPointRange that applies to processed points\n // (cropped and grouped)\n axis.series.forEach(function (series) {\n xData = series.xData;\n loopLength = series.xIncrement ? 1 : xData.length - 1;\n if (xData.length > 1) {\n for (i = loopLength; i > 0; i--) {\n distance = xData[i] - xData[i - 1];\n if (!closestDataRange ||\n distance < closestDataRange) {\n closestDataRange = distance;\n }\n }\n }\n });\n axis.minRange = Math.min(closestDataRange * 5, axis.dataMax - axis.dataMin);\n }\n }\n // if minRange is exceeded, adjust\n if (max - min < axis.minRange) {\n spaceAvailable =\n axis.dataMax - axis.dataMin >=\n axis.minRange;\n minRange = axis.minRange;\n zoomOffset = (minRange - max + min) / 2;\n // if min and max options have been set, don't go beyond it\n minArgs = [\n min - zoomOffset,\n pick(options.min, min - zoomOffset)\n ];\n // If space is available, stay within the data range\n if (spaceAvailable) {\n minArgs[2] = axis.logarithmic ?\n axis.logarithmic.log2lin(axis.dataMin) :\n axis.dataMin;\n }\n min = arrayMax(minArgs);\n maxArgs = [\n min + minRange,\n pick(options.max, min + minRange)\n ];\n // If space is availabe, stay within the data range\n if (spaceAvailable) {\n maxArgs[2] = log ?\n log.log2lin(axis.dataMax) :\n axis.dataMax;\n }\n max = arrayMin(maxArgs);\n // now if the max is adjusted, adjust the min back\n if (max - min < minRange) {\n minArgs[0] = max - minRange;\n minArgs[1] = pick(options.min, max - minRange);\n min = arrayMax(minArgs);\n }\n }\n // Record modified extremes\n axis.min = min;\n axis.max = max;\n };\n /**\n * Find the closestPointRange across all series.\n *\n * @private\n * @function Highcharts.Axis#getClosest\n */\n Axis.prototype.getClosest = function () {\n var ret;\n if (this.categories) {\n ret = 1;\n }\n else {\n this.series.forEach(function (series) {\n var seriesClosest = series.closestPointRange,\n visible = series.visible ||\n !series.chart.options.chart.ignoreHiddenSeries;\n if (!series.noSharedTooltip &&\n defined(seriesClosest) &&\n visible) {\n ret = defined(ret) ?\n Math.min(ret, seriesClosest) :\n seriesClosest;\n }\n });\n }\n return ret;\n };\n /**\n * When a point name is given and no x, search for the name in the existing\n * categories, or if categories aren't provided, search names or create a\n * new category (#2522).\n *\n * @private\n * @function Highcharts.Axis#nameToX\n *\n * @param {Highcharts.Point} point\n * The point to inspect.\n *\n * @return {number}\n * The X value that the point is given.\n */\n Axis.prototype.nameToX = function (point) {\n var explicitCategories = isArray(this.options.categories),\n names = explicitCategories ? this.categories : this.names;\n var nameX = point.options.x,\n x;\n point.series.requireSorting = false;\n if (!defined(nameX)) {\n nameX = this.options.uniqueNames && names ?\n (explicitCategories ?\n names.indexOf(point.name) :\n pick(names.keys[point.name], -1)) :\n point.series.autoIncrement();\n }\n if (nameX === -1) { // Not found in currenct categories\n if (!explicitCategories && names) {\n x = names.length;\n }\n }\n else {\n x = nameX;\n }\n // Write the last point's name to the names array\n if (typeof x !== 'undefined') {\n this.names[x] = point.name;\n // Backwards mapping is much faster than array searching (#7725)\n this.names.keys[point.name] = x;\n }\n else if (point.x) {\n x = point.x; // #17438\n }\n return x;\n };\n /**\n * When changes have been done to series data, update the axis.names.\n *\n * @private\n * @function Highcharts.Axis#updateNames\n */\n Axis.prototype.updateNames = function () {\n var axis = this,\n names = this.names,\n i = names.length;\n if (i > 0) {\n Object.keys(names.keys).forEach(function (key) {\n delete (names.keys)[key];\n });\n names.length = 0;\n this.minRange = this.userMinRange; // Reset\n (this.series || []).forEach(function (series) {\n // Reset incrementer (#5928)\n series.xIncrement = null;\n // When adding a series, points are not yet generated\n if (!series.points || series.isDirtyData) {\n // When we're updating the series with data that is longer\n // than it was, and cropThreshold is passed, we need to make\n // sure that the axis.max is increased _before_ running the\n // premature processData. Otherwise this early iteration of\n // processData will crop the points to axis.max, and the\n // names array will be too short (#5857).\n axis.max = Math.max(axis.max, series.xData.length - 1);\n series.processData();\n series.generatePoints();\n }\n series.data.forEach(function (point, i) {\n var x;\n if (point &&\n point.options &&\n typeof point.name !== 'undefined' // #9562\n ) {\n x = axis.nameToX(point);\n if (typeof x !== 'undefined' && x !== point.x) {\n point.x = x;\n series.xData[i] = x;\n }\n }\n });\n });\n }\n };\n /**\n * Update translation information.\n *\n * @private\n * @function Highcharts.Axis#setAxisTranslation\n *\n * @emits Highcharts.Axis#event:afterSetAxisTranslation\n */\n Axis.prototype.setAxisTranslation = function () {\n var axis = this,\n range = axis.max - axis.min,\n linkedParent = axis.linkedParent,\n hasCategories = !!axis.categories,\n isXAxis = axis.isXAxis;\n var pointRange = axis.axisPointRange || 0,\n closestPointRange,\n minPointOffset = 0,\n pointRangePadding = 0,\n ordinalCorrection,\n transA = axis.transA;\n // Adjust translation for padding. Y axis with categories need to go\n // through the same (#1784).\n if (isXAxis || hasCategories || pointRange) {\n // Get the closest points\n closestPointRange = axis.getClosest();\n if (linkedParent) {\n minPointOffset = linkedParent.minPointOffset;\n pointRangePadding = linkedParent.pointRangePadding;\n }\n else {\n axis.series.forEach(function (series) {\n var seriesPointRange = hasCategories ?\n 1 :\n (isXAxis ?\n pick(series.options.pointRange,\n closestPointRange, 0) :\n (axis.axisPointRange || 0)), // #2806\n pointPlacement = series.options.pointPlacement;\n pointRange = Math.max(pointRange, seriesPointRange);\n if (!axis.single || hasCategories) {\n // TODO: series should internally set x- and y-\n // pointPlacement to simplify this logic.\n var isPointPlacementAxis = series.is('xrange') ?\n !isXAxis :\n isXAxis;\n // minPointOffset is the value padding to the left of\n // the axis in order to make room for points with a\n // pointRange, typically columns. When the\n // pointPlacement option is 'between' or 'on', this\n // padding does not apply.\n minPointOffset = Math.max(minPointOffset, isPointPlacementAxis && isString(pointPlacement) ?\n 0 :\n seriesPointRange / 2);\n // Determine the total padding needed to the length of\n // the axis to make room for the pointRange. If the\n // series' pointPlacement is 'on', no padding is added.\n pointRangePadding = Math.max(pointRangePadding, isPointPlacementAxis && pointPlacement === 'on' ?\n 0 :\n seriesPointRange);\n }\n });\n }\n // Record minPointOffset and pointRangePadding\n ordinalCorrection = (axis.ordinal && axis.ordinal.slope && closestPointRange) ?\n axis.ordinal.slope / closestPointRange :\n 1; // #988, #1853\n axis.minPointOffset = minPointOffset =\n minPointOffset * ordinalCorrection;\n axis.pointRangePadding =\n pointRangePadding = pointRangePadding * ordinalCorrection;\n // pointRange means the width reserved for each point, like in a\n // column chart\n axis.pointRange = Math.min(pointRange, axis.single && hasCategories ? 1 : range);\n // closestPointRange means the closest distance between points. In\n // columns it is mostly equal to pointRange, but in lines pointRange\n // is 0 while closestPointRange is some other value\n if (isXAxis) {\n axis.closestPointRange = closestPointRange;\n }\n }\n // Secondary values\n axis.translationSlope = axis.transA = transA =\n axis.staticScale ||\n axis.len / ((range + pointRangePadding) || 1);\n // Translation addend\n axis.transB = axis.horiz ? axis.left : axis.bottom;\n axis.minPixelPadding = transA * minPointOffset;\n fireEvent(this, 'afterSetAxisTranslation');\n };\n /**\n * @private\n * @function Highcharts.Axis#minFromRange\n */\n Axis.prototype.minFromRange = function () {\n var axis = this;\n return axis.max - axis.range;\n };\n /**\n * Set the tick positions to round values and optionally extend the extremes\n * to the nearest tick.\n *\n * @private\n * @function Highcharts.Axis#setTickInterval\n *\n * @param {boolean} secondPass\n * TO-DO: parameter description\n *\n * @emits Highcharts.Axis#event:foundExtremes\n */\n Axis.prototype.setTickInterval = function (secondPass) {\n var axis = this,\n chart = axis.chart,\n log = axis.logarithmic,\n options = axis.options,\n isXAxis = axis.isXAxis,\n isLinked = axis.isLinked,\n tickPixelIntervalOption = options.tickPixelInterval,\n categories = axis.categories,\n softThreshold = axis.softThreshold;\n var maxPadding = options.maxPadding,\n minPadding = options.minPadding,\n length,\n linkedParentExtremes, \n // Only non-negative tickInterval is valid, #12961\n tickIntervalOption = isNumber(options.tickInterval) && options.tickInterval >= 0 ?\n options.tickInterval : void 0,\n threshold = isNumber(axis.threshold) ? axis.threshold : null,\n thresholdMin,\n thresholdMax,\n hardMin,\n hardMax;\n if (!axis.dateTime && !categories && !isLinked) {\n this.getTickAmount();\n }\n // Min or max set either by zooming/setExtremes or initial options\n hardMin = pick(axis.userMin, options.min);\n hardMax = pick(axis.userMax, options.max);\n // Linked axis gets the extremes from the parent axis\n if (isLinked) {\n axis.linkedParent = chart[axis.coll][options.linkedTo];\n linkedParentExtremes = axis.linkedParent.getExtremes();\n axis.min = pick(linkedParentExtremes.min, linkedParentExtremes.dataMin);\n axis.max = pick(linkedParentExtremes.max, linkedParentExtremes.dataMax);\n if (options.type !== axis.linkedParent.options.type) {\n // Can't link axes of different type\n error(11, 1, chart);\n }\n // Initial min and max from the extreme data values\n }\n else {\n // Adjust to hard threshold\n if (softThreshold && defined(threshold)) {\n if (axis.dataMin >= threshold) {\n thresholdMin = threshold;\n minPadding = 0;\n }\n else if (axis.dataMax <= threshold) {\n thresholdMax = threshold;\n maxPadding = 0;\n }\n }\n axis.min = pick(hardMin, thresholdMin, axis.dataMin);\n axis.max = pick(hardMax, thresholdMax, axis.dataMax);\n }\n if (log) {\n if (axis.positiveValuesOnly &&\n !secondPass &&\n Math.min(axis.min, pick(axis.dataMin, axis.min)) <= 0) { // #978\n // Can't plot negative values on log axis\n error(10, 1, chart);\n }\n // The correctFloat cures #934, float errors on full tens. But it\n // was too aggressive for #4360 because of conversion back to lin,\n // therefore use precision 15.\n axis.min = correctFloat(log.log2lin(axis.min), 16);\n axis.max = correctFloat(log.log2lin(axis.max), 16);\n }\n // handle zoomed range\n if (axis.range && defined(axis.max)) {\n // #618, #6773:\n axis.userMin = axis.min = hardMin =\n Math.max(axis.dataMin, axis.minFromRange());\n axis.userMax = hardMax = axis.max;\n axis.range = null; // don't use it when running setExtremes\n }\n // Hook for Highcharts Stock Scroller.\n // Consider combining with beforePadding.\n fireEvent(axis, 'foundExtremes');\n // Hook for adjusting this.min and this.max. Used by bubble series.\n if (axis.beforePadding) {\n axis.beforePadding();\n }\n // adjust min and max for the minimum range\n axis.adjustForMinRange();\n // Pad the values to get clear of the chart's edges. To avoid\n // tickInterval taking the padding into account, we do this after\n // computing tick interval (#1337).\n if (!categories &&\n !axis.axisPointRange &&\n !(axis.stacking && axis.stacking.usePercentage) &&\n !isLinked &&\n defined(axis.min) &&\n defined(axis.max)) {\n length = axis.max - axis.min;\n if (length) {\n if (!defined(hardMin) && minPadding) {\n axis.min -= length * minPadding;\n }\n if (!defined(hardMax) && maxPadding) {\n axis.max += length * maxPadding;\n }\n }\n }\n // Handle options for floor, ceiling, softMin and softMax (#6359)\n if (!isNumber(axis.userMin)) {\n if (isNumber(options.softMin) && options.softMin < axis.min) {\n axis.min = hardMin = options.softMin; // #6894\n }\n if (isNumber(options.floor)) {\n axis.min = Math.max(axis.min, options.floor);\n }\n }\n if (!isNumber(axis.userMax)) {\n if (isNumber(options.softMax) && options.softMax > axis.max) {\n axis.max = hardMax = options.softMax; // #6894\n }\n if (isNumber(options.ceiling)) {\n axis.max = Math.min(axis.max, options.ceiling);\n }\n }\n // When the threshold is soft, adjust the extreme value only if the data\n // extreme and the padded extreme land on either side of the threshold.\n // For example, a series of [0, 1, 2, 3] would make the yAxis add a tick\n // for -1 because of the default minPadding and startOnTick options.\n // This is prevented by the softThreshold option.\n if (softThreshold && defined(axis.dataMin)) {\n threshold = threshold || 0;\n if (!defined(hardMin) &&\n axis.min < threshold &&\n axis.dataMin >= threshold) {\n axis.min = axis.options.minRange ?\n Math.min(threshold, axis.max -\n axis.minRange) :\n threshold;\n }\n else if (!defined(hardMax) &&\n axis.max > threshold &&\n axis.dataMax <= threshold) {\n axis.max = axis.options.minRange ?\n Math.max(threshold, axis.min +\n axis.minRange) :\n threshold;\n }\n }\n // If min is bigger than highest, or if max less than lowest value, the\n // chart should not render points. (#14417)\n if (isNumber(axis.min) &&\n isNumber(axis.max) &&\n !this.chart.polar &&\n (axis.min > axis.max)) {\n if (defined(axis.options.min)) {\n axis.max = axis.min;\n }\n else if (defined(axis.options.max)) {\n axis.min = axis.max;\n }\n }\n // get tickInterval\n if (axis.min === axis.max ||\n typeof axis.min === 'undefined' ||\n typeof axis.max === 'undefined') {\n axis.tickInterval = 1;\n }\n else if (isLinked &&\n axis.linkedParent &&\n !tickIntervalOption &&\n tickPixelIntervalOption ===\n axis.linkedParent.options.tickPixelInterval) {\n axis.tickInterval = tickIntervalOption =\n axis.linkedParent.tickInterval;\n }\n else {\n axis.tickInterval = pick(tickIntervalOption, this.tickAmount ?\n ((axis.max - axis.min) /\n Math.max(this.tickAmount - 1, 1)) :\n void 0, \n // For categoried axis, 1 is default, for linear axis use\n // tickPix\n categories ?\n 1 :\n // don't let it be more than the data range\n (axis.max - axis.min) *\n tickPixelIntervalOption /\n Math.max(axis.len, tickPixelIntervalOption));\n }\n // Now we're finished detecting min and max, crop and group series data.\n // This is in turn needed in order to find tick positions in ordinal\n // axes.\n if (isXAxis && !secondPass) {\n var hasExtremesChanged_1 = axis.min !==\n (axis.old && axis.old.min) ||\n axis.max !== (axis.old && axis.old.max);\n // First process all series assigned to that axis.\n axis.series.forEach(function (series) {\n // Allows filtering out points outside the plot area.\n series.forceCrop = (series.forceCropping &&\n series.forceCropping());\n series.processData(hasExtremesChanged_1);\n });\n // Then apply grouping if needed. The hasExtremesChanged helps to\n // decide if the data grouping should be skipped in the further\n // calculations #16319.\n fireEvent(this, 'postProcessData', { hasExtremesChanged: hasExtremesChanged_1 });\n }\n // set the translation factor used in translate function\n axis.setAxisTranslation();\n // hook for ordinal axes and radial axes\n fireEvent(this, 'initialAxisTranslation');\n // In column-like charts, don't cramp in more ticks than there are\n // points (#1943, #4184)\n if (axis.pointRange && !tickIntervalOption) {\n axis.tickInterval = Math.max(axis.pointRange, axis.tickInterval);\n }\n // Before normalizing the tick interval, handle minimum tick interval.\n // This applies only if tickInterval is not defined.\n var minTickInterval = pick(options.minTickInterval, \n // In datetime axes, don't go below the data interval, except when\n // there are scatter-like series involved (#13369).\n axis.dateTime &&\n !axis.series.some(function (s) { return s.noSharedTooltip; }) ?\n axis.closestPointRange : 0);\n if (!tickIntervalOption && axis.tickInterval < minTickInterval) {\n axis.tickInterval = minTickInterval;\n }\n // For linear axes, normalize the interval\n if (!axis.dateTime && !axis.logarithmic && !tickIntervalOption) {\n axis.tickInterval = getNormalizedTickInterval(axis, axis.tickInterval);\n }\n // Prevent ticks from getting so close that we can't draw the labels\n if (!this.tickAmount) {\n axis.tickInterval = axis.unsquish();\n }\n this.setTickPositions();\n };\n /**\n * Now we have computed the normalized tickInterval, get the tick positions.\n *\n * @private\n * @function Highcharts.Axis#setTickPositions\n *\n * @emits Highcharts.Axis#event:afterSetTickPositions\n */\n Axis.prototype.setTickPositions = function () {\n var axis = this,\n options = this.options,\n tickPositionsOption = options.tickPositions,\n tickPositioner = options.tickPositioner,\n minorTickIntervalOption = this.getMinorTickInterval(),\n hasVerticalPanning = this.hasVerticalPanning(),\n isColorAxis = this.coll === 'colorAxis',\n startOnTick = ((isColorAxis || !hasVerticalPanning) && options.startOnTick),\n endOnTick = ((isColorAxis || !hasVerticalPanning) && options.endOnTick);\n var tickPositions = [],\n tickPositionerResult;\n // Set the tickmarkOffset\n this.tickmarkOffset = (this.categories &&\n options.tickmarkPlacement === 'between' &&\n this.tickInterval === 1) ? 0.5 : 0; // #3202\n // get minorTickInterval\n this.minorTickInterval =\n minorTickIntervalOption === 'auto' &&\n this.tickInterval ?\n this.tickInterval / 5 :\n minorTickIntervalOption;\n // When there is only one point, or all points have the same value on\n // this axis, then min and max are equal and tickPositions.length is 0\n // or 1. In this case, add some padding in order to center the point,\n // but leave it with one tick. #1337.\n this.single =\n this.min === this.max &&\n defined(this.min) &&\n !this.tickAmount &&\n (\n // Data is on integer (#6563)\n parseInt(this.min, 10) === this.min ||\n // Between integers and decimals are not allowed (#6274)\n options.allowDecimals !== false);\n /**\n * Contains the current positions that are laid out on the axis. The\n * positions are numbers in terms of axis values. In a category axis\n * they are integers, in a datetime axis they are also integers, but\n * designating milliseconds.\n *\n * This property is read only - for modifying the tick positions, use\n * the `tickPositioner` callback or [axis.tickPositions(\n * https://api.highcharts.com/highcharts/xAxis.tickPositions) option\n * instead.\n *\n * @name Highcharts.Axis#tickPositions\n * @type {Highcharts.AxisTickPositionsArray|undefined}\n */\n if (tickPositionsOption) {\n // Find the tick positions. Work on a copy (#1565)\n tickPositions = tickPositionsOption.slice();\n }\n else if (isNumber(this.min) && isNumber(this.max)) {\n // Too many ticks (#6405). Create a friendly warning and provide two\n // ticks so at least we can show the data series.\n if ((!axis.ordinal || !axis.ordinal.positions) &&\n ((this.max - this.min) /\n this.tickInterval >\n Math.max(2 * this.len, 200))) {\n tickPositions = [this.min, this.max];\n error(19, false, this.chart);\n }\n else if (axis.dateTime) {\n tickPositions = axis.getTimeTicks(axis.dateTime.normalizeTimeTickInterval(this.tickInterval, options.units), this.min, this.max, options.startOfWeek, axis.ordinal && axis.ordinal.positions, this.closestPointRange, true);\n }\n else if (axis.logarithmic) {\n tickPositions = axis.logarithmic.getLogTickPositions(this.tickInterval, this.min, this.max);\n }\n else {\n var startingTickInterval = this.tickInterval;\n var adjustedTickInterval = startingTickInterval;\n while (adjustedTickInterval <= startingTickInterval * 2) {\n tickPositions = this.getLinearTickPositions(this.tickInterval, this.min, this.max);\n // If there are more tick positions than the set tickAmount,\n // increase the tickInterval and continue until it fits.\n // (#17100)\n if (this.tickAmount &&\n tickPositions.length > this.tickAmount) {\n this.tickInterval = getNormalizedTickInterval(this, adjustedTickInterval *= 1.1);\n }\n else {\n break;\n }\n }\n }\n // Too dense ticks, keep only the first and last (#4477)\n if (tickPositions.length > this.len) {\n tickPositions = [\n tickPositions[0],\n tickPositions[tickPositions.length - 1]\n ];\n // Reduce doubled value (#7339)\n if (tickPositions[0] === tickPositions[1]) {\n tickPositions.length = 1;\n }\n }\n // Run the tick positioner callback, that allows modifying auto tick\n // positions.\n if (tickPositioner) {\n // Make it available to the positioner\n this.tickPositions = tickPositions;\n tickPositionerResult = tickPositioner.apply(axis, [this.min, this.max]);\n if (tickPositionerResult) {\n tickPositions = tickPositionerResult;\n }\n }\n }\n this.tickPositions = tickPositions;\n // Reset min/max or remove extremes based on start/end on tick\n this.paddedTicks = tickPositions.slice(0); // Used for logarithmic minor\n this.trimTicks(tickPositions, startOnTick, endOnTick);\n if (!this.isLinked && isNumber(this.min) && isNumber(this.max)) {\n // Substract half a unit (#2619, #2846, #2515, #3390), but not in\n // case of multiple ticks (#6897)\n if (this.single &&\n tickPositions.length < 2 &&\n !this.categories &&\n !this.series.some(function (s) {\n return (s.is('heatmap') && s.options.pointPlacement === 'between');\n })) {\n this.min -= 0.5;\n this.max += 0.5;\n }\n if (!tickPositionsOption && !tickPositionerResult) {\n this.adjustTickAmount();\n }\n }\n fireEvent(this, 'afterSetTickPositions');\n };\n /**\n * Handle startOnTick and endOnTick by either adapting to padding min/max or\n * rounded min/max. Also handle single data points.\n *\n * @private\n * @function Highcharts.Axis#trimTicks\n *\n * @param {Array<number>} tickPositions\n * TO-DO: parameter description\n *\n * @param {boolean} [startOnTick]\n * TO-DO: parameter description\n *\n * @param {boolean} [endOnTick]\n * TO-DO: parameter description\n */\n Axis.prototype.trimTicks = function (tickPositions, startOnTick, endOnTick) {\n var roundedMin = tickPositions[0],\n roundedMax = tickPositions[tickPositions.length - 1],\n minPointOffset = (!this.isOrdinal && this.minPointOffset) || 0; // (#12716)\n fireEvent(this, 'trimTicks');\n if (!this.isLinked) {\n if (startOnTick && roundedMin !== -Infinity) { // #6502\n this.min = roundedMin;\n }\n else {\n while (this.min - minPointOffset > tickPositions[0]) {\n tickPositions.shift();\n }\n }\n if (endOnTick) {\n this.max = roundedMax;\n }\n else {\n while (this.max + minPointOffset <\n tickPositions[tickPositions.length - 1]) {\n tickPositions.pop();\n }\n }\n // If no tick are left, set one tick in the middle (#3195)\n if (tickPositions.length === 0 &&\n defined(roundedMin) &&\n !this.options.tickPositions) {\n tickPositions.push((roundedMax + roundedMin) / 2);\n }\n }\n };\n /**\n * Check if there are multiple axes in the same pane.\n *\n * @private\n * @function Highcharts.Axis#alignToOthers\n *\n * @return {boolean|undefined}\n * True if there are other axes.\n */\n Axis.prototype.alignToOthers = function () {\n var axis = this,\n alignedAxes = [this],\n options = axis.options,\n alignThresholds = (this.coll === 'yAxis' &&\n this.chart.options.chart.alignThresholds),\n thresholdAlignments = [];\n var hasOther;\n axis.thresholdAlignment = void 0;\n if ((\n // Only if alignTicks or alignThresholds is true\n (this.chart.options.chart.alignTicks !== false &&\n options.alignTicks) || (alignThresholds)) &&\n // Disabled when startOnTick or endOnTick are false (#7604)\n options.startOnTick !== false &&\n options.endOnTick !== false &&\n // Don't try to align ticks on a log axis, they are not evenly\n // spaced (#6021)\n !axis.logarithmic) {\n // Get a key identifying which pane the axis belongs to\n var getKey_1 = function (axis) {\n var horiz = axis.horiz,\n options = axis.options;\n return [\n horiz ? options.left : options.top,\n options.width,\n options.height,\n options.pane\n ].join(',');\n };\n var thisKey_1 = getKey_1(this);\n this.chart[this.coll].forEach(function (otherAxis) {\n var series = otherAxis.series;\n if (\n // #4442\n series.length &&\n series.some(function (s) { return s.visible; }) &&\n otherAxis !== axis &&\n getKey_1(otherAxis) === thisKey_1) {\n hasOther = true; // #4201\n alignedAxes.push(otherAxis);\n }\n });\n }\n if (hasOther && alignThresholds) {\n // Handle alignThresholds. The `thresholdAlignments` array keeps\n // records of where each axis in the group wants its threshold, from\n // 0 which is on `axis.min`, to 1 which is on `axis.max`.\n alignedAxes.forEach(function (otherAxis) {\n var threshAlign = otherAxis.getThresholdAlignment(axis);\n if (isNumber(threshAlign)) {\n thresholdAlignments.push(threshAlign);\n }\n });\n // For each of the axes in the group, record the average\n // `thresholdAlignment`.\n var thresholdAlignment_1 = thresholdAlignments.length > 1 ?\n thresholdAlignments.reduce(function (sum,\n n) { return (sum += n); }, 0) / thresholdAlignments.length :\n void 0;\n alignedAxes.forEach(function (axis) {\n axis.thresholdAlignment = thresholdAlignment_1;\n });\n }\n return hasOther;\n };\n /**\n * Where the axis wants its threshold, from 0 which is on `axis.min`, to 1 which\n * is on `axis.max`.\n *\n * @private\n * @function Highcharts.Axis#getThresholdAlignment\n */\n Axis.prototype.getThresholdAlignment = function (callerAxis) {\n if (!isNumber(this.dataMin) ||\n (this !== callerAxis &&\n this.series.some(function (s) { return (s.isDirty || s.isDirtyData); }))) {\n this.getSeriesExtremes();\n }\n if (isNumber(this.threshold)) {\n var thresholdAlignment = clamp(((this.threshold - (this.dataMin || 0)) /\n ((this.dataMax || 0) - (this.dataMin || 0))), 0, 1);\n if (this.options.reversed) {\n thresholdAlignment = 1 - thresholdAlignment;\n }\n return thresholdAlignment;\n }\n };\n /**\n * Find the max ticks of either the x and y axis collection, and record it\n * in `this.tickAmount`.\n *\n * @private\n * @function Highcharts.Axis#getTickAmount\n */\n Axis.prototype.getTickAmount = function () {\n var axis = this,\n options = this.options,\n tickPixelInterval = options.tickPixelInterval;\n var tickAmount = options.tickAmount;\n if (!defined(options.tickInterval) &&\n !tickAmount &&\n this.len < tickPixelInterval &&\n !this.isRadial &&\n !axis.logarithmic &&\n options.startOnTick &&\n options.endOnTick) {\n tickAmount = 2;\n }\n if (!tickAmount && this.alignToOthers()) {\n // Add 1 because 4 tick intervals require 5 ticks (including first\n // and last)\n tickAmount = Math.ceil(this.len / tickPixelInterval) + 1;\n }\n // For tick amounts of 2 and 3, compute five ticks and remove the\n // intermediate ones. This prevents the axis from adding ticks that are\n // too far away from the data extremes.\n if (tickAmount < 4) {\n this.finalTickAmt = tickAmount;\n tickAmount = 5;\n }\n this.tickAmount = tickAmount;\n };\n /**\n * When using multiple axes, adjust the number of ticks to match the highest\n * number of ticks in that group.\n *\n * @private\n * @function Highcharts.Axis#adjustTickAmount\n */\n Axis.prototype.adjustTickAmount = function () {\n var axis = this,\n finalTickAmt = axis.finalTickAmt,\n max = axis.max,\n min = axis.min,\n options = axis.options,\n tickPositions = axis.tickPositions,\n tickAmount = axis.tickAmount,\n thresholdAlignment = axis.thresholdAlignment,\n currentTickAmount = tickPositions && tickPositions.length,\n threshold = pick(axis.threshold,\n axis.softThreshold ? 0 : null);\n var len,\n i,\n tickInterval = axis.tickInterval,\n thresholdTickIndex;\n var \n // Extend the tickPositions by appending a position\n append = function () { return tickPositions.push(correctFloat(tickPositions[tickPositions.length - 1] +\n tickInterval)); }, \n // Extend the tickPositions by prepending a position\n prepend = function () { return tickPositions.unshift(correctFloat(tickPositions[0] - tickInterval)); };\n // If `thresholdAlignment` is a number, it means the `alignThresholds`\n // option is true. The `thresholdAlignment` is a scalar value between 0\n // and 1 for where the threshold should be relative to `axis.min` and\n // `axis.max`. Now that we know the tick amount, convert this to the\n // tick index. Unless `thresholdAlignment` is exactly 0 or 1, avoid the\n // first or last tick because that would lead to series being clipped.\n if (isNumber(thresholdAlignment)) {\n thresholdTickIndex = thresholdAlignment < 0.5 ?\n Math.ceil(thresholdAlignment * (tickAmount - 1)) :\n Math.floor(thresholdAlignment * (tickAmount - 1));\n if (options.reversed) {\n thresholdTickIndex = tickAmount - 1 - thresholdTickIndex;\n }\n }\n if (axis.hasData() && isNumber(min) && isNumber(max)) { // #14769\n // Adjust extremes and translation to the modified tick positions\n var adjustExtremes = function () {\n axis.transA *= (currentTickAmount - 1) / (tickAmount - 1);\n // Do not crop when ticks are not extremes (#9841)\n axis.min = options.startOnTick ?\n tickPositions[0] :\n Math.min(min, tickPositions[0]);\n axis.max = options.endOnTick ?\n tickPositions[tickPositions.length - 1] :\n Math.max(max, tickPositions[tickPositions.length - 1]);\n };\n // When the axis is subject to the alignThresholds option. Use\n // axis.threshold because the local threshold includes the\n // `softThreshold`.\n if (isNumber(thresholdTickIndex) && isNumber(axis.threshold)) {\n // Throw away the previously computed tickPositions and start\n // from scratch with only the threshold itself, then add ticks\n // below the threshold first, then fill up above the threshold.\n // If we are not able to fill up to axis.max, double the\n // tickInterval and run again.\n while (tickPositions[thresholdTickIndex] !== threshold ||\n tickPositions.length !== tickAmount ||\n tickPositions[0] > min ||\n tickPositions[tickPositions.length - 1] < max) {\n tickPositions.length = 0;\n tickPositions.push(axis.threshold);\n while (tickPositions.length < tickAmount) {\n if (\n // Start by prepending positions until the threshold\n // is at the required index...\n tickPositions[thresholdTickIndex] === void 0 ||\n tickPositions[thresholdTickIndex] > axis.threshold) {\n prepend();\n }\n else {\n // ... then append positions until we have the\n // required length\n append();\n }\n }\n // Safety vent\n if (tickInterval > axis.tickInterval * 8) {\n break;\n }\n tickInterval *= 2;\n }\n adjustExtremes();\n }\n else if (currentTickAmount < tickAmount) {\n while (tickPositions.length < tickAmount) {\n // Extend evenly for both sides unless we're on the\n // threshold (#3965)\n if (tickPositions.length % 2 || min === threshold) {\n append();\n }\n else {\n prepend();\n }\n }\n adjustExtremes();\n }\n // The finalTickAmt property is set in getTickAmount\n if (defined(finalTickAmt)) {\n i = len = tickPositions.length;\n while (i--) {\n if (\n // Remove every other tick\n (finalTickAmt === 3 && i % 2 === 1) ||\n // Remove all but first and last\n (finalTickAmt <= 2 && i > 0 && i < len - 1)) {\n tickPositions.splice(i, 1);\n }\n }\n axis.finalTickAmt = void 0;\n }\n }\n };\n /**\n * Set the scale based on data min and max, user set min and max or options.\n *\n * @private\n * @function Highcharts.Axis#setScale\n *\n * @emits Highcharts.Axis#event:afterSetScale\n */\n Axis.prototype.setScale = function () {\n var axis = this;\n var isDirtyData = false,\n isXAxisDirty = false;\n axis.series.forEach(function (series) {\n isDirtyData = isDirtyData || series.isDirtyData || series.isDirty;\n // When x axis is dirty, we need new data extremes for y as\n // well:\n isXAxisDirty = (isXAxisDirty ||\n (series.xAxis && series.xAxis.isDirty) ||\n false);\n });\n // set the new axisLength\n axis.setAxisSize();\n var isDirtyAxisLength = axis.len !== (axis.old && axis.old.len);\n // do we really need to go through all this?\n if (isDirtyAxisLength ||\n isDirtyData ||\n isXAxisDirty ||\n axis.isLinked ||\n axis.forceRedraw ||\n axis.userMin !== (axis.old && axis.old.userMin) ||\n axis.userMax !== (axis.old && axis.old.userMax) ||\n axis.alignToOthers()) {\n if (axis.stacking) {\n axis.stacking.resetStacks();\n axis.stacking.buildStacks();\n }\n axis.forceRedraw = false;\n // get data extremes if needed\n axis.getSeriesExtremes();\n // get fixed positions based on tickInterval\n axis.setTickInterval();\n // Mark as dirty if it is not already set to dirty and extremes have\n // changed. #595.\n if (!axis.isDirty) {\n axis.isDirty =\n isDirtyAxisLength ||\n axis.min !== (axis.old && axis.old.min) ||\n axis.max !== (axis.old && axis.old.max);\n }\n }\n else if (axis.stacking) {\n axis.stacking.cleanStacks();\n }\n // Recalculate panning state object, when the data\n // has changed. It is required when vertical panning is enabled.\n if (isDirtyData && axis.panningState) {\n axis.panningState.isDirty = true;\n }\n fireEvent(this, 'afterSetScale');\n };\n /**\n * Set the minimum and maximum of the axes after render time. If the\n * `startOnTick` and `endOnTick` options are true, the minimum and maximum\n * values are rounded off to the nearest tick. To prevent this, these\n * options can be set to false before calling setExtremes. Also, setExtremes\n * will not allow a range lower than the `minRange` option, which by default\n * is the range of five points.\n *\n * @sample highcharts/members/axis-setextremes/\n * Set extremes from a button\n * @sample highcharts/members/axis-setextremes-datetime/\n * Set extremes on a datetime axis\n * @sample highcharts/members/axis-setextremes-off-ticks/\n * Set extremes off ticks\n * @sample stock/members/axis-setextremes/\n * Set extremes in Highcharts Stock\n *\n * @function Highcharts.Axis#setExtremes\n *\n * @param {number} [newMin]\n * The new minimum value.\n *\n * @param {number} [newMax]\n * The new maximum value.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=true]\n * Enable or modify animations.\n *\n * @param {*} [eventArguments]\n * Arguments to be accessed in event handler.\n *\n * @emits Highcharts.Axis#event:setExtremes\n */\n Axis.prototype.setExtremes = function (newMin, newMax, redraw, animation, eventArguments) {\n var axis = this,\n chart = axis.chart;\n redraw = pick(redraw, true); // defaults to true\n axis.series.forEach(function (serie) {\n delete serie.kdTree;\n });\n // Extend the arguments with min and max\n eventArguments = extend(eventArguments, {\n min: newMin,\n max: newMax\n });\n // Fire the event\n fireEvent(axis, 'setExtremes', eventArguments, function () {\n axis.userMin = newMin;\n axis.userMax = newMax;\n axis.eventArgs = eventArguments;\n if (redraw) {\n chart.redraw(animation);\n }\n });\n };\n /**\n * Overridable method for zooming chart. Pulled out in a separate method to\n * allow overriding in stock charts.\n *\n * @private\n * @function Highcharts.Axis#zoom\n */\n Axis.prototype.zoom = function (newMin, newMax) {\n var axis = this,\n dataMin = this.dataMin,\n dataMax = this.dataMax,\n options = this.options,\n min = Math.min(dataMin,\n pick(options.min,\n dataMin)),\n max = Math.max(dataMax,\n pick(options.max,\n dataMax)),\n evt = {\n newMin: newMin,\n newMax: newMax\n };\n fireEvent(this, 'zoom', evt, function (e) {\n // Use e.newMin and e.newMax - event handlers may have altered them\n var newMin = e.newMin,\n newMax = e.newMax;\n if (newMin !== axis.min || newMax !== axis.max) { // #5790\n // Prevent pinch zooming out of range. Check for defined is for\n // #1946. #1734.\n if (!axis.allowZoomOutside) {\n // #6014, sometimes newMax will be smaller than min (or\n // newMin will be larger than max).\n if (defined(dataMin)) {\n if (newMin < min) {\n newMin = min;\n }\n if (newMin > max) {\n newMin = max;\n }\n }\n if (defined(dataMax)) {\n if (newMax < min) {\n newMax = min;\n }\n if (newMax > max) {\n newMax = max;\n }\n }\n }\n // In full view, displaying the reset zoom button is not\n // required\n axis.displayBtn = (typeof newMin !== 'undefined' ||\n typeof newMax !== 'undefined');\n // Do it\n axis.setExtremes(newMin, newMax, false, void 0, { trigger: 'zoom' });\n }\n e.zoomed = true;\n });\n return evt.zoomed;\n };\n /**\n * Update the axis metrics.\n *\n * @private\n * @function Highcharts.Axis#setAxisSize\n */\n Axis.prototype.setAxisSize = function () {\n var chart = this.chart,\n options = this.options, \n // [top, right, bottom, left]\n offsets = options.offsets || [0, 0, 0, 0],\n horiz = this.horiz, \n // Check for percentage based input values. Rounding fixes problems\n // with column overflow and plot line filtering (#4898, #4899)\n width = this.width = Math.round(relativeLength(pick(options.width,\n chart.plotWidth - offsets[3] + offsets[1]),\n chart.plotWidth)),\n height = this.height = Math.round(relativeLength(pick(options.height,\n chart.plotHeight - offsets[0] + offsets[2]),\n chart.plotHeight)),\n top = this.top = Math.round(relativeLength(pick(options.top,\n chart.plotTop + offsets[0]),\n chart.plotHeight,\n chart.plotTop)),\n left = this.left = Math.round(relativeLength(pick(options.left,\n chart.plotLeft + offsets[3]),\n chart.plotWidth,\n chart.plotLeft));\n // Expose basic values to use in Series object and navigator\n this.bottom = chart.chartHeight - height - top;\n this.right = chart.chartWidth - width - left;\n // Direction agnostic properties\n this.len = Math.max(horiz ? width : height, 0); // Math.max fixes #905\n this.pos = horiz ? left : top; // distance from SVG origin\n };\n /**\n * Get the current extremes for the axis.\n *\n * @sample highcharts/members/axis-getextremes/\n * Report extremes by click on a button\n *\n * @function Highcharts.Axis#getExtremes\n *\n * @return {Highcharts.ExtremesObject}\n * An object containing extremes information.\n */\n Axis.prototype.getExtremes = function () {\n var axis = this,\n log = axis.logarithmic;\n return {\n min: log ?\n correctFloat(log.lin2log(axis.min)) :\n axis.min,\n max: log ?\n correctFloat(log.lin2log(axis.max)) :\n axis.max,\n dataMin: axis.dataMin,\n dataMax: axis.dataMax,\n userMin: axis.userMin,\n userMax: axis.userMax\n };\n };\n /**\n * Get the zero plane either based on zero or on the min or max value.\n * Used in bar and area plots.\n *\n * @function Highcharts.Axis#getThreshold\n *\n * @param {number} threshold\n * The threshold in axis values.\n *\n * @return {number}\n * The translated threshold position in terms of pixels, and corrected to\n * stay within the axis bounds.\n */\n Axis.prototype.getThreshold = function (threshold) {\n var axis = this,\n log = axis.logarithmic,\n realMin = log ? log.lin2log(axis.min) : axis.min,\n realMax = log ? log.lin2log(axis.max) : axis.max;\n if (threshold === null || threshold === -Infinity) {\n threshold = realMin;\n }\n else if (threshold === Infinity) {\n threshold = realMax;\n }\n else if (realMin > threshold) {\n threshold = realMin;\n }\n else if (realMax < threshold) {\n threshold = realMax;\n }\n return axis.translate(threshold, 0, 1, 0, 1);\n };\n /**\n * Compute auto alignment for the axis label based on which side the axis is\n * on and the given rotation for the label.\n *\n * @private\n * @function Highcharts.Axis#autoLabelAlign\n *\n * @param {number} rotation\n * The rotation in degrees as set by either the `rotation` or `autoRotation`\n * options.\n *\n * @return {Highcharts.AlignValue}\n * Can be `\"center\"`, `\"left\"` or `\"right\"`.\n */\n Axis.prototype.autoLabelAlign = function (rotation) {\n var angle = (pick(rotation, 0) - (this.side * 90) + 720) % 360,\n evt = { align: 'center' };\n fireEvent(this, 'autoLabelAlign', evt, function (e) {\n if (angle > 15 && angle < 165) {\n e.align = 'right';\n }\n else if (angle > 195 && angle < 345) {\n e.align = 'left';\n }\n });\n return evt.align;\n };\n /**\n * Get the tick length and width for the axis based on axis options.\n *\n * @private\n * @function Highcharts.Axis#tickSize\n *\n * @param {string} [prefix]\n * 'tick' or 'minorTick'\n *\n * @return {Array<number,number>|undefined}\n * An array of tickLength and tickWidth\n */\n Axis.prototype.tickSize = function (prefix) {\n var options = this.options,\n tickWidth = pick(options[prefix === 'tick' ? 'tickWidth' : 'minorTickWidth'], \n // Default to 1 on linear and datetime X axes\n prefix === 'tick' && this.isXAxis && !this.categories ? 1 : 0);\n var tickLength = options[prefix === 'tick' ? 'tickLength' : 'minorTickLength'],\n tickSize;\n if (tickWidth && tickLength) {\n // Negate the length\n if (options[prefix + 'Position'] === 'inside') {\n tickLength = -tickLength;\n }\n tickSize = [tickLength, tickWidth];\n }\n var e = { tickSize: tickSize };\n fireEvent(this, 'afterTickSize', e);\n return e.tickSize;\n };\n /**\n * Return the size of the labels.\n *\n * @private\n * @function Highcharts.Axis#labelMetrics\n */\n Axis.prototype.labelMetrics = function () {\n var index = this.tickPositions && this.tickPositions[0] || 0;\n return this.chart.renderer.fontMetrics(this.options.labels.style.fontSize, this.ticks[index] && this.ticks[index].label);\n };\n /**\n * Prevent the ticks from getting so close we can't draw the labels. On a\n * horizontal axis, this is handled by rotating the labels, removing ticks\n * and adding ellipsis. On a vertical axis remove ticks and add ellipsis.\n *\n * @private\n * @function Highcharts.Axis#unsquish\n */\n Axis.prototype.unsquish = function () {\n var labelOptions = this.options.labels,\n horiz = this.horiz,\n tickInterval = this.tickInterval,\n slotSize = this.len / (((this.categories ? 1 : 0) +\n this.max -\n this.min) /\n tickInterval),\n rotationOption = labelOptions.rotation,\n labelMetrics = this.labelMetrics(),\n range = Math.max(this.max - this.min, 0), \n // Return the multiple of tickInterval that is needed to avoid\n // collision\n getStep = function (spaceNeeded) {\n var step = spaceNeeded / (slotSize || 1);\n step = step > 1 ? Math.ceil(step) : 1;\n // Guard for very small or negative angles (#9835)\n if (step * tickInterval > range &&\n spaceNeeded !== Infinity &&\n slotSize !== Infinity &&\n range) {\n step = Math.ceil(range / tickInterval);\n }\n return correctFloat(step * tickInterval);\n };\n var newTickInterval = tickInterval,\n rotation,\n bestScore = Number.MAX_VALUE,\n autoRotation;\n if (horiz) {\n if (!labelOptions.staggerLines) {\n if (isNumber(rotationOption)) {\n autoRotation = [rotationOption];\n }\n else if (slotSize < labelOptions.autoRotationLimit) {\n autoRotation = labelOptions.autoRotation;\n }\n }\n if (autoRotation) {\n var step = void 0,\n score = void 0;\n // Loop over the given autoRotation options, and determine which\n // gives the best score. The best score is that with the lowest\n // number of steps and a rotation closest to horizontal.\n for (var _i = 0, autoRotation_1 = autoRotation; _i < autoRotation_1.length; _i++) {\n var rot = autoRotation_1[_i];\n if (rot === rotationOption ||\n (rot && rot >= -90 && rot <= 90)) { // #3891\n step = getStep(Math.abs(labelMetrics.h / Math.sin(deg2rad * rot)));\n score = step + Math.abs(rot / 360);\n if (score < bestScore) {\n bestScore = score;\n rotation = rot;\n newTickInterval = step;\n }\n }\n }\n }\n }\n else { // #4411\n newTickInterval = getStep(labelMetrics.h);\n }\n this.autoRotation = autoRotation;\n this.labelRotation = pick(rotation, isNumber(rotationOption) ? rotationOption : 0);\n return labelOptions.step ? tickInterval : newTickInterval;\n };\n /**\n * Get the general slot width for labels/categories on this axis. This may\n * change between the pre-render (from Axis.getOffset) and the final tick\n * rendering and placement.\n *\n * @private\n * @function Highcharts.Axis#getSlotWidth\n *\n * @param {Highcharts.Tick} [tick] Optionally, calculate the slot width\n * basing on tick label. It is used in highcharts-3d module, where the slots\n * has different widths depending on perspective angles.\n *\n * @return {number}\n * The pixel width allocated to each axis label.\n */\n Axis.prototype.getSlotWidth = function (tick) {\n // #5086, #1580, #1931\n var chart = this.chart,\n horiz = this.horiz,\n labelOptions = this.options.labels,\n slotCount = Math.max(this.tickPositions.length - (this.categories ? 0 : 1), 1),\n marginLeft = chart.margin[3];\n // Used by grid axis\n if (tick && isNumber(tick.slotWidth)) { // #13221, can be 0\n return tick.slotWidth;\n }\n if (horiz && labelOptions.step < 2) {\n if (labelOptions.rotation) { // #4415\n return 0;\n }\n return ((this.staggerLines || 1) * this.len) / slotCount;\n }\n if (!horiz) {\n // #7028\n var cssWidth = labelOptions.style.width;\n if (cssWidth !== void 0) {\n return parseInt(String(cssWidth), 10);\n }\n if (marginLeft) {\n return marginLeft - chart.spacing[3];\n }\n }\n // Last resort, a fraction of the available size\n return chart.chartWidth * 0.33;\n };\n /**\n * Render the axis labels and determine whether ellipsis or rotation need to\n * be applied.\n *\n * @private\n * @function Highcharts.Axis#renderUnsquish\n */\n Axis.prototype.renderUnsquish = function () {\n var chart = this.chart,\n renderer = chart.renderer,\n tickPositions = this.tickPositions,\n ticks = this.ticks,\n labelOptions = this.options.labels,\n labelStyleOptions = labelOptions.style,\n horiz = this.horiz,\n slotWidth = this.getSlotWidth(),\n innerWidth = Math.max(1,\n Math.round(slotWidth - 2 * labelOptions.padding)),\n attr = {},\n labelMetrics = this.labelMetrics(),\n textOverflowOption = labelStyleOptions.textOverflow;\n var commonWidth,\n commonTextOverflow,\n maxLabelLength = 0,\n label,\n i,\n pos;\n // Set rotation option unless it is \"auto\", like in gauges\n if (!isString(labelOptions.rotation)) {\n // #4443\n attr.rotation = labelOptions.rotation || 0;\n }\n // Get the longest label length\n tickPositions.forEach(function (tickPosition) {\n var tick = ticks[tickPosition];\n // Replace label - sorting animation\n if (tick.movedLabel) {\n tick.replaceMovedLabel();\n }\n if (tick &&\n tick.label &&\n tick.label.textPxLength > maxLabelLength) {\n maxLabelLength = tick.label.textPxLength;\n }\n });\n this.maxLabelLength = maxLabelLength;\n // Handle auto rotation on horizontal axis\n if (this.autoRotation) {\n // Apply rotation only if the label is too wide for the slot, and\n // the label is wider than its height.\n if (maxLabelLength > innerWidth &&\n maxLabelLength > labelMetrics.h) {\n attr.rotation = this.labelRotation;\n }\n else {\n this.labelRotation = 0;\n }\n // Handle word-wrap or ellipsis on vertical axis\n }\n else if (slotWidth) {\n // For word-wrap or ellipsis\n commonWidth = innerWidth;\n if (!textOverflowOption) {\n commonTextOverflow = 'clip';\n // On vertical axis, only allow word wrap if there is room\n // for more lines.\n i = tickPositions.length;\n while (!horiz && i--) {\n pos = tickPositions[i];\n label = ticks[pos].label;\n if (label) {\n // Reset ellipsis in order to get the correct\n // bounding box (#4070)\n if (label.styles &&\n label.styles.textOverflow === 'ellipsis') {\n label.css({ textOverflow: 'clip' });\n // Set the correct width in order to read\n // the bounding box height (#4678, #5034)\n }\n else if (label.textPxLength > slotWidth) {\n label.css({ width: slotWidth + 'px' });\n }\n if (label.getBBox().height > (this.len / tickPositions.length -\n (labelMetrics.h - labelMetrics.f))) {\n label.specificTextOverflow = 'ellipsis';\n }\n }\n }\n }\n }\n // Add ellipsis if the label length is significantly longer than ideal\n if (attr.rotation) {\n commonWidth = (maxLabelLength > chart.chartHeight * 0.5 ?\n chart.chartHeight * 0.33 :\n maxLabelLength);\n if (!textOverflowOption) {\n commonTextOverflow = 'ellipsis';\n }\n }\n // Set the explicit or automatic label alignment\n this.labelAlign = labelOptions.align ||\n this.autoLabelAlign(this.labelRotation);\n if (this.labelAlign) {\n attr.align = this.labelAlign;\n }\n // Apply general and specific CSS\n tickPositions.forEach(function (pos) {\n var tick = ticks[pos],\n label = tick && tick.label,\n widthOption = labelStyleOptions.width,\n css = {};\n if (label) {\n // This needs to go before the CSS in old IE (#4502)\n label.attr(attr);\n if (tick.shortenLabel) {\n tick.shortenLabel();\n }\n else if (commonWidth &&\n !widthOption &&\n // Setting width in this case messes with the bounding box\n // (#7975)\n labelStyleOptions.whiteSpace !== 'nowrap' &&\n (\n // Speed optimizing, #7656\n commonWidth < label.textPxLength ||\n // Resetting CSS, #4928\n label.element.tagName === 'SPAN')) {\n css.width = commonWidth + 'px';\n if (!textOverflowOption) {\n css.textOverflow = (label.specificTextOverflow ||\n commonTextOverflow);\n }\n label.css(css);\n // Reset previously shortened label (#8210)\n }\n else if (label.styles &&\n label.styles.width &&\n !css.width &&\n !widthOption) {\n label.css({ width: null });\n }\n delete label.specificTextOverflow;\n tick.rotation = attr.rotation;\n }\n }, this);\n // Note: Why is this not part of getLabelPosition?\n this.tickRotCorr = renderer.rotCorr(labelMetrics.b, this.labelRotation || 0, this.side !== 0);\n };\n /**\n * Return true if the axis has associated data.\n *\n * @function Highcharts.Axis#hasData\n *\n * @return {boolean}\n * True if the axis has associated visible series and those series have\n * either valid data points or explicit `min` and `max` settings.\n */\n Axis.prototype.hasData = function () {\n return this.series.some(function (s) {\n return s.hasData();\n }) ||\n (this.options.showEmpty &&\n defined(this.min) &&\n defined(this.max));\n };\n /**\n * Adds the title defined in axis.options.title.\n *\n * @function Highcharts.Axis#addTitle\n *\n * @param {boolean} [display]\n * Whether or not to display the title.\n */\n Axis.prototype.addTitle = function (display) {\n var axis = this,\n renderer = axis.chart.renderer,\n horiz = axis.horiz,\n opposite = axis.opposite,\n options = axis.options,\n axisTitleOptions = options.title,\n styledMode = axis.chart.styledMode;\n var textAlign;\n if (!axis.axisTitle) {\n textAlign = axisTitleOptions.textAlign;\n if (!textAlign) {\n textAlign = (horiz ? {\n low: 'left',\n middle: 'center',\n high: 'right'\n } : {\n low: opposite ? 'right' : 'left',\n middle: 'center',\n high: opposite ? 'left' : 'right'\n })[axisTitleOptions.align];\n }\n axis.axisTitle = renderer\n .text(axisTitleOptions.text || '', 0, 0, axisTitleOptions.useHTML)\n .attr({\n zIndex: 7,\n rotation: axisTitleOptions.rotation,\n align: textAlign\n })\n .addClass('highcharts-axis-title');\n // #7814, don't mutate style option\n if (!styledMode) {\n axis.axisTitle.css(merge(axisTitleOptions.style));\n }\n axis.axisTitle.add(axis.axisGroup);\n axis.axisTitle.isNew = true;\n }\n // Max width defaults to the length of the axis\n if (!styledMode &&\n !axisTitleOptions.style.width &&\n !axis.isRadial) {\n axis.axisTitle.css({\n width: axis.len + 'px'\n });\n }\n // hide or show the title depending on whether showEmpty is set\n axis.axisTitle[display ? 'show' : 'hide'](display);\n };\n /**\n * Generates a tick for initial positioning.\n *\n * @private\n * @function Highcharts.Axis#generateTick\n *\n * @param {number} pos\n * The tick position in axis values.\n *\n * @param {number} [i]\n * The index of the tick in {@link Axis.tickPositions}.\n */\n Axis.prototype.generateTick = function (pos) {\n var axis = this,\n ticks = axis.ticks;\n if (!ticks[pos]) {\n ticks[pos] = new Tick(axis, pos);\n }\n else {\n ticks[pos].addLabel(); // update labels depending on tick interval\n }\n };\n /**\n * Render the tick labels to a preliminary position to get their sizes\n *\n * @private\n * @function Highcharts.Axis#getOffset\n *\n * @emits Highcharts.Axis#event:afterGetOffset\n */\n Axis.prototype.getOffset = function () {\n var _this = this;\n var axis = this,\n chart = axis.chart,\n horiz = axis.horiz,\n options = axis.options,\n side = axis.side,\n ticks = axis.ticks,\n tickPositions = axis.tickPositions,\n coll = axis.coll,\n axisParent = axis.axisParent // Used in color axis\n ,\n renderer = chart.renderer,\n invertedSide = (chart.inverted && !axis.isZAxis ?\n [1, 0, 3, 2][side] :\n side),\n hasData = axis.hasData(),\n axisTitleOptions = options.title,\n labelOptions = options.labels,\n axisOffset = chart.axisOffset,\n clipOffset = chart.clipOffset,\n directionFactor = [-1, 1, 1, -1][side],\n className = options.className;\n var showAxis,\n titleOffset = 0,\n titleOffsetOption,\n titleMargin = 0,\n labelOffset = 0, // reset\n labelOffsetPadded,\n lineHeightCorrection;\n // For reuse in Axis.render\n axis.showAxis = showAxis = hasData || options.showEmpty;\n // Set/reset staggerLines\n axis.staggerLines = (axis.horiz && labelOptions.staggerLines) || void 0;\n // Create the axisGroup and gridGroup elements on first iteration\n if (!axis.axisGroup) {\n var createGroup = function (name, suffix, zIndex) { return renderer.g(name)\n .attr({ zIndex: zIndex })\n .addClass(\"highcharts-\".concat(coll.toLowerCase()).concat(suffix, \" \") +\n (_this.isRadial ? \"highcharts-radial-axis\".concat(suffix, \" \") : '') +\n (className || ''))\n .add(axisParent); };\n axis.gridGroup = createGroup('grid', '-grid', options.gridZIndex);\n axis.axisGroup = createGroup('axis', '', options.zIndex);\n axis.labelGroup = createGroup('axis-labels', '-labels', labelOptions.zIndex);\n }\n if (hasData || axis.isLinked) {\n // Generate ticks\n tickPositions.forEach(function (pos) {\n // i is not used here, but may be used in overrides\n axis.generateTick(pos);\n });\n axis.renderUnsquish();\n // Left side must be align: right and right side must\n // have align: left for labels\n axis.reserveSpaceDefault = (side === 0 ||\n side === 2 ||\n { 1: 'left', 3: 'right' }[side] === axis.labelAlign);\n if (pick(labelOptions.reserveSpace, axis.labelAlign === 'center' ? true : null, axis.reserveSpaceDefault)) {\n tickPositions.forEach(function (pos) {\n // get the highest offset\n labelOffset = Math.max(ticks[pos].getLabelSize(), labelOffset);\n });\n }\n if (axis.staggerLines) {\n labelOffset *= axis.staggerLines;\n }\n axis.labelOffset = labelOffset * (axis.opposite ? -1 : 1);\n }\n else { // doesn't have data\n objectEach(ticks, function (tick, n) {\n tick.destroy();\n delete ticks[n];\n });\n }\n if (axisTitleOptions &&\n axisTitleOptions.text &&\n axisTitleOptions.enabled !== false) {\n axis.addTitle(showAxis);\n if (showAxis && axisTitleOptions.reserveSpace !== false) {\n axis.titleOffset = titleOffset =\n axis.axisTitle.getBBox()[horiz ? 'height' : 'width'];\n titleOffsetOption = axisTitleOptions.offset;\n titleMargin = defined(titleOffsetOption) ?\n 0 :\n pick(axisTitleOptions.margin, horiz ? 5 : 10);\n }\n }\n // Render the axis line\n axis.renderLine();\n // handle automatic or user set offset\n axis.offset = directionFactor * pick(options.offset, axisOffset[side] ? axisOffset[side] + (options.margin || 0) : 0);\n axis.tickRotCorr = axis.tickRotCorr || { x: 0, y: 0 }; // polar\n if (side === 0) {\n lineHeightCorrection = -axis.labelMetrics().h;\n }\n else if (side === 2) {\n lineHeightCorrection = axis.tickRotCorr.y;\n }\n else {\n lineHeightCorrection = 0;\n }\n // Find the padded label offset\n labelOffsetPadded = Math.abs(labelOffset) + titleMargin;\n if (labelOffset) {\n labelOffsetPadded -= lineHeightCorrection;\n labelOffsetPadded += directionFactor * (horiz ?\n pick(labelOptions.y, axis.tickRotCorr.y + directionFactor * 8) :\n labelOptions.x);\n }\n axis.axisTitleMargin = pick(titleOffsetOption, labelOffsetPadded);\n if (axis.getMaxLabelDimensions) {\n axis.maxLabelDimensions = axis.getMaxLabelDimensions(ticks, tickPositions);\n }\n // Due to GridAxis.tickSize, tickSize should be calculated after ticks\n // has rendered.\n if (coll !== 'colorAxis') {\n var tickSize = this.tickSize('tick');\n axisOffset[side] = Math.max(axisOffset[side], (axis.axisTitleMargin || 0) + titleOffset +\n directionFactor * axis.offset, labelOffsetPadded, // #3027\n tickPositions && tickPositions.length && tickSize ?\n tickSize[0] + directionFactor * axis.offset :\n 0 // #4866\n );\n // Decide the clipping needed to keep the graph inside\n // the plot area and axis lines\n var clip = !axis.axisLine || options.offset ?\n 0 :\n // #4308, #4371:\n Math.floor(axis.axisLine.strokeWidth() / 2) * 2;\n clipOffset[invertedSide] =\n Math.max(clipOffset[invertedSide], clip);\n }\n fireEvent(this, 'afterGetOffset');\n };\n /**\n * Internal function to get the path for the axis line. Extended for polar\n * charts.\n *\n * @function Highcharts.Axis#getLinePath\n *\n * @param {number} lineWidth\n * The line width in pixels.\n *\n * @return {Highcharts.SVGPathArray}\n * The SVG path definition in array form.\n */\n Axis.prototype.getLinePath = function (lineWidth) {\n var chart = this.chart,\n opposite = this.opposite,\n offset = this.offset,\n horiz = this.horiz,\n lineLeft = this.left + (opposite ? this.width : 0) + offset,\n lineTop = chart.chartHeight - this.bottom -\n (opposite ? this.height : 0) + offset;\n if (opposite) {\n lineWidth *= -1; // crispify the other way - #1480, #1687\n }\n return chart.renderer\n .crispLine([\n [\n 'M',\n horiz ?\n this.left :\n lineLeft,\n horiz ?\n lineTop :\n this.top\n ],\n [\n 'L',\n horiz ?\n chart.chartWidth - this.right :\n lineLeft,\n horiz ?\n lineTop :\n chart.chartHeight - this.bottom\n ]\n ], lineWidth);\n };\n /**\n * Render the axis line. Called internally when rendering and redrawing the\n * axis.\n *\n * @function Highcharts.Axis#renderLine\n */\n Axis.prototype.renderLine = function () {\n if (!this.axisLine) {\n this.axisLine = this.chart.renderer.path()\n .addClass('highcharts-axis-line')\n .add(this.axisGroup);\n if (!this.chart.styledMode) {\n this.axisLine.attr({\n stroke: this.options.lineColor,\n 'stroke-width': this.options.lineWidth,\n zIndex: 7\n });\n }\n }\n };\n /**\n * Position the axis title.\n *\n * @private\n * @function Highcharts.Axis#getTitlePosition\n *\n * @return {Highcharts.PositionObject}\n * X and Y positions for the title.\n */\n Axis.prototype.getTitlePosition = function () {\n // compute anchor points for each of the title align options\n var horiz = this.horiz,\n axisLeft = this.left,\n axisTop = this.top,\n axisLength = this.len,\n axisTitleOptions = this.options.title,\n margin = horiz ? axisLeft : axisTop,\n opposite = this.opposite,\n offset = this.offset,\n xOption = axisTitleOptions.x,\n yOption = axisTitleOptions.y,\n axisTitle = this.axisTitle,\n fontMetrics = this.chart.renderer.fontMetrics(axisTitleOptions.style.fontSize,\n axisTitle), \n // The part of a multiline text that is below the baseline of the\n // first line. Subtract 1 to preserve pixel-perfectness from the\n // old behaviour (v5.0.12), where only one line was allowed.\n textHeightOvershoot = axisTitle ? Math.max(axisTitle.getBBox(false, 0).height - fontMetrics.h - 1, 0) : 0, \n // the position in the length direction of the axis\n alongAxis = ({\n low: margin + (horiz ? 0 : axisLength),\n middle: margin + axisLength / 2,\n high: margin + (horiz ? axisLength : 0)\n })[axisTitleOptions.align], \n // the position in the perpendicular direction of the axis\n offAxis = (horiz ? axisTop + this.height : axisLeft) +\n (horiz ? 1 : -1) * // horizontal axis reverses the margin\n (opposite ? -1 : 1) * // so does opposite axes\n (this.axisTitleMargin || 0) +\n [\n -textHeightOvershoot,\n textHeightOvershoot,\n fontMetrics.f,\n -textHeightOvershoot // left\n ][this.side],\n titlePosition = {\n x: horiz ?\n alongAxis + xOption :\n offAxis + (opposite ? this.width : 0) + offset + xOption,\n y: horiz ?\n offAxis + yOption - (opposite ? this.height : 0) + offset :\n alongAxis + yOption\n };\n fireEvent(this, 'afterGetTitlePosition', { titlePosition: titlePosition });\n return titlePosition;\n };\n /**\n * Render a minor tick into the given position. If a minor tick already\n * exists in this position, move it.\n *\n * @function Highcharts.Axis#renderMinorTick\n *\n * @param {number} pos\n * The position in axis values.\n *\n * @param {boolean} slideIn\n * Whether the tick should animate in from last computed position\n */\n Axis.prototype.renderMinorTick = function (pos, slideIn) {\n var axis = this;\n var minorTicks = axis.minorTicks;\n if (!minorTicks[pos]) {\n minorTicks[pos] = new Tick(axis, pos, 'minor');\n }\n // Render new ticks in old position\n if (slideIn && minorTicks[pos].isNew) {\n minorTicks[pos].render(null, true);\n }\n minorTicks[pos].render(null, false, 1);\n };\n /**\n * Render a major tick into the given position. If a tick already exists\n * in this position, move it.\n *\n * @function Highcharts.Axis#renderTick\n *\n * @param {number} pos\n * The position in axis values.\n *\n * @param {number} i\n * The tick index.\n *\n * @param {boolean} slideIn\n * Whether the tick should animate in from last computed position\n */\n Axis.prototype.renderTick = function (pos, i, slideIn) {\n var axis = this,\n isLinked = axis.isLinked,\n ticks = axis.ticks;\n // Linked axes need an extra check to find out if\n if (!isLinked ||\n (pos >= axis.min && pos <= axis.max) ||\n (axis.grid && axis.grid.isColumn)) {\n if (!ticks[pos]) {\n ticks[pos] = new Tick(axis, pos);\n }\n // NOTE this seems like overkill. Could be handled in tick.render by\n // setting old position in attr, then set new position in animate.\n // render new ticks in old position\n if (slideIn && ticks[pos].isNew) {\n // Start with negative opacity so that it is visible from\n // halfway into the animation\n ticks[pos].render(i, true, -1);\n }\n ticks[pos].render(i);\n }\n };\n /**\n * Render the axis.\n *\n * @private\n * @function Highcharts.Axis#render\n *\n * @emits Highcharts.Axis#event:afterRender\n */\n Axis.prototype.render = function () {\n var axis = this,\n chart = axis.chart,\n log = axis.logarithmic,\n renderer = chart.renderer,\n options = axis.options,\n isLinked = axis.isLinked,\n tickPositions = axis.tickPositions,\n axisTitle = axis.axisTitle,\n ticks = axis.ticks,\n minorTicks = axis.minorTicks,\n alternateBands = axis.alternateBands,\n stackLabelOptions = options.stackLabels,\n alternateGridColor = options.alternateGridColor,\n tickmarkOffset = axis.tickmarkOffset,\n axisLine = axis.axisLine,\n showAxis = axis.showAxis,\n animation = animObject(renderer.globalAnimation);\n var from,\n to;\n // Reset\n axis.labelEdge.length = 0;\n axis.overlap = false;\n // Mark all elements inActive before we go over and mark the active ones\n [ticks, minorTicks, alternateBands].forEach(function (coll) {\n objectEach(coll, function (tick) {\n tick.isActive = false;\n });\n });\n // If the series has data draw the ticks. Else only the line and title\n if (axis.hasData() || isLinked) {\n var slideInTicks_1 = axis.chart.hasRendered &&\n axis.old && isNumber(axis.old.min);\n // minor ticks\n if (axis.minorTickInterval && !axis.categories) {\n axis.getMinorTickPositions().forEach(function (pos) {\n axis.renderMinorTick(pos, slideInTicks_1);\n });\n }\n // Major ticks. Pull out the first item and render it last so that\n // we can get the position of the neighbour label. #808.\n if (tickPositions.length) { // #1300\n tickPositions.forEach(function (pos, i) {\n axis.renderTick(pos, i, slideInTicks_1);\n });\n // In a categorized axis, the tick marks are displayed\n // between labels. So we need to add a tick mark and\n // grid line at the left edge of the X axis.\n if (tickmarkOffset && (axis.min === 0 || axis.single)) {\n if (!ticks[-1]) {\n ticks[-1] = new Tick(axis, -1, null, true);\n }\n ticks[-1].render(-1);\n }\n }\n // alternate grid color\n if (alternateGridColor) {\n tickPositions.forEach(function (pos, i) {\n to = typeof tickPositions[i + 1] !== 'undefined' ?\n tickPositions[i + 1] + tickmarkOffset :\n axis.max - tickmarkOffset;\n if (i % 2 === 0 &&\n pos < axis.max &&\n to <= axis.max + (chart.polar ?\n -tickmarkOffset :\n tickmarkOffset)) { // #2248, #4660\n if (!alternateBands[pos]) {\n // Should be imported from PlotLineOrBand.js, but\n // the dependency cycle with axis is a problem\n alternateBands[pos] = new H.PlotLineOrBand(axis);\n }\n from = pos + tickmarkOffset; // #949\n alternateBands[pos].options = {\n from: log ? log.lin2log(from) : from,\n to: log ? log.lin2log(to) : to,\n color: alternateGridColor,\n className: 'highcharts-alternate-grid'\n };\n alternateBands[pos].render();\n alternateBands[pos].isActive = true;\n }\n });\n }\n // custom plot lines and bands\n if (!axis._addedPlotLB) { // only first time\n axis._addedPlotLB = true;\n (options.plotLines || [])\n .concat(options.plotBands || [])\n .forEach(function (plotLineOptions) {\n axis\n .addPlotBandOrLine(plotLineOptions);\n });\n }\n } // end if hasData\n // Remove inactive ticks\n [ticks, minorTicks, alternateBands].forEach(function (coll) {\n var forDestruction = [],\n delay = animation.duration,\n destroyInactiveItems = function () {\n var i = forDestruction.length;\n while (i--) {\n // When resizing rapidly, the same items\n // may be destroyed in different timeouts,\n // or the may be reactivated\n if (coll[forDestruction[i]] &&\n !coll[forDestruction[i]].isActive) {\n coll[forDestruction[i]].destroy();\n delete coll[forDestruction[i]];\n }\n }\n };\n objectEach(coll, function (tick, pos) {\n if (!tick.isActive) {\n // Render to zero opacity\n tick.render(pos, false, 0);\n tick.isActive = false;\n forDestruction.push(pos);\n }\n });\n // When the objects are finished fading out, destroy them\n syncTimeout(destroyInactiveItems, coll === alternateBands ||\n !chart.hasRendered ||\n !delay ?\n 0 :\n delay);\n });\n // Set the axis line path\n if (axisLine) {\n axisLine[axisLine.isPlaced ? 'animate' : 'attr']({\n d: this.getLinePath(axisLine.strokeWidth())\n });\n axisLine.isPlaced = true;\n // Show or hide the line depending on options.showEmpty\n axisLine[showAxis ? 'show' : 'hide'](showAxis);\n }\n if (axisTitle && showAxis) {\n var titleXy = axis.getTitlePosition();\n axisTitle[axisTitle.isNew ? 'attr' : 'animate'](titleXy);\n axisTitle.isNew = false;\n }\n // Stacked totals:\n if (stackLabelOptions && stackLabelOptions.enabled && axis.stacking) {\n axis.stacking.renderStackTotals();\n }\n // End stacked totals\n // Record old scaling for updating/animation\n axis.old = {\n len: axis.len,\n max: axis.max,\n min: axis.min,\n transA: axis.transA,\n userMax: axis.userMax,\n userMin: axis.userMin\n };\n axis.isDirty = false;\n fireEvent(this, 'afterRender');\n };\n /**\n * Redraw the axis to reflect changes in the data or axis extremes. Called\n * internally from Highcharts.Chart#redraw.\n *\n * @private\n * @function Highcharts.Axis#redraw\n */\n Axis.prototype.redraw = function () {\n if (this.visible) {\n // render the axis\n this.render();\n // move plot lines and bands\n this.plotLinesAndBands.forEach(function (plotLine) {\n plotLine.render();\n });\n }\n // mark associated series as dirty and ready for redraw\n this.series.forEach(function (series) {\n series.isDirty = true;\n });\n };\n /**\n * Returns an array of axis properties, that should be untouched during\n * reinitialization.\n *\n * @private\n * @function Highcharts.Axis#getKeepProps\n */\n Axis.prototype.getKeepProps = function () {\n return (this.keepProps || Axis.keepProps);\n };\n /**\n * Destroys an Axis instance. See {@link Axis#remove} for the API endpoint\n * to fully remove the axis.\n *\n * @private\n * @function Highcharts.Axis#destroy\n *\n * @param {boolean} [keepEvents]\n * Whether to preserve events, used internally in Axis.update.\n */\n Axis.prototype.destroy = function (keepEvents) {\n var axis = this,\n plotLinesAndBands = axis.plotLinesAndBands,\n eventOptions = this.eventOptions;\n fireEvent(this, 'destroy', { keepEvents: keepEvents });\n // Remove the events\n if (!keepEvents) {\n removeEvent(axis);\n }\n // Destroy collections\n [axis.ticks, axis.minorTicks, axis.alternateBands].forEach(function (coll) {\n destroyObjectProperties(coll);\n });\n if (plotLinesAndBands) {\n var i = plotLinesAndBands.length;\n while (i--) { // #1975\n plotLinesAndBands[i].destroy();\n }\n }\n // Destroy elements\n ['axisLine', 'axisTitle', 'axisGroup',\n 'gridGroup', 'labelGroup', 'cross', 'scrollbar'].forEach(function (prop) {\n if (axis[prop]) {\n axis[prop] = axis[prop].destroy();\n }\n });\n // Destroy each generated group for plotlines and plotbands\n for (var plotGroup in axis.plotLinesAndBandsGroups) { // eslint-disable-line guard-for-in\n axis.plotLinesAndBandsGroups[plotGroup] =\n axis.plotLinesAndBandsGroups[plotGroup].destroy();\n }\n // Delete all properties and fall back to the prototype.\n objectEach(axis, function (val, key) {\n if (axis.getKeepProps().indexOf(key) === -1) {\n delete axis[key];\n }\n });\n this.eventOptions = eventOptions;\n };\n /**\n * Internal function to draw a crosshair.\n *\n * @function Highcharts.Axis#drawCrosshair\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The event arguments from the modified pointer event, extended with\n * `chartX` and `chartY`\n *\n * @param {Highcharts.Point} [point]\n * The Point object if the crosshair snaps to points.\n *\n * @emits Highcharts.Axis#event:afterDrawCrosshair\n * @emits Highcharts.Axis#event:drawCrosshair\n */\n Axis.prototype.drawCrosshair = function (e, point) {\n var options = this.crosshair,\n snap = pick(options && options.snap,\n true),\n chart = this.chart;\n var path,\n pos,\n categorized,\n graphic = this.cross,\n crossOptions;\n fireEvent(this, 'drawCrosshair', { e: e, point: point });\n // Use last available event when updating non-snapped crosshairs without\n // mouse interaction (#5287)\n if (!e) {\n e = this.cross && this.cross.e;\n }\n if (\n // Disabled in options\n !options ||\n // Snap\n ((defined(point) || !snap) === false)) {\n this.hideCrosshair();\n }\n else {\n // Get the path\n if (!snap) {\n pos = e &&\n (this.horiz ?\n e.chartX - this.pos :\n this.len - e.chartY + this.pos);\n }\n else if (defined(point)) {\n // #3834\n pos = pick(this.coll !== 'colorAxis' ?\n point.crosshairPos : // 3D axis extension\n null, this.isXAxis ?\n point.plotX :\n this.len - point.plotY);\n }\n if (defined(pos)) {\n crossOptions = {\n // value, only used on radial\n value: point && (this.isXAxis ?\n point.x :\n pick(point.stackY, point.y)),\n translatedValue: pos\n };\n if (chart.polar) {\n // Additional information required for crosshairs in\n // polar chart\n extend(crossOptions, {\n isCrosshair: true,\n chartX: e && e.chartX,\n chartY: e && e.chartY,\n point: point\n });\n }\n path = this.getPlotLinePath(crossOptions) ||\n null; // #3189\n }\n if (!defined(path)) {\n this.hideCrosshair();\n return;\n }\n categorized = this.categories && !this.isRadial;\n // Draw the cross\n if (!graphic) {\n this.cross = graphic = chart.renderer\n .path()\n .addClass('highcharts-crosshair highcharts-crosshair-' +\n (categorized ? 'category ' : 'thin ') +\n (options.className || ''))\n .attr({\n zIndex: pick(options.zIndex, 2)\n })\n .add();\n // Presentational attributes\n if (!chart.styledMode) {\n graphic.attr({\n stroke: options.color ||\n (categorized ?\n Color\n .parse(\"#ccd6eb\" /* Palette.highlightColor20 */)\n .setOpacity(0.25)\n .get() :\n \"#cccccc\" /* Palette.neutralColor20 */),\n 'stroke-width': pick(options.width, 1)\n }).css({\n 'pointer-events': 'none'\n });\n if (options.dashStyle) {\n graphic.attr({\n dashstyle: options.dashStyle\n });\n }\n }\n }\n graphic.show().attr({\n d: path\n });\n if (categorized && !options.width) {\n graphic.attr({\n 'stroke-width': this.transA\n });\n }\n this.cross.e = e;\n }\n fireEvent(this, 'afterDrawCrosshair', { e: e, point: point });\n };\n /**\n * Hide the crosshair if visible.\n *\n * @function Highcharts.Axis#hideCrosshair\n */\n Axis.prototype.hideCrosshair = function () {\n if (this.cross) {\n this.cross.hide();\n }\n fireEvent(this, 'afterHideCrosshair');\n };\n /**\n * Check whether the chart has vertical panning ('y' or 'xy' type).\n *\n * @private\n * @function Highcharts.Axis#hasVerticalPanning\n */\n Axis.prototype.hasVerticalPanning = function () {\n var panningOptions = this.chart.options.chart.panning;\n return Boolean(panningOptions &&\n panningOptions.enabled && // #14624\n /y/.test(panningOptions.type));\n };\n /**\n * Check whether the given value is a positive valid axis value.\n *\n * @private\n * @function Highcharts.Axis#validatePositiveValue\n *\n * @param {unknown} value\n * The axis value\n */\n Axis.prototype.validatePositiveValue = function (value) {\n return isNumber(value) && value > 0;\n };\n /**\n * Update an axis object with a new set of options. The options are merged\n * with the existing options, so only new or altered options need to be\n * specified.\n *\n * @sample highcharts/members/axis-update/\n * Axis update demo\n *\n * @function Highcharts.Axis#update\n *\n * @param {Highcharts.AxisOptions} options\n * The new options that will be merged in with existing options on the axis.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the axis is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after.\n */\n Axis.prototype.update = function (options, redraw) {\n var chart = this.chart;\n options = merge(this.userOptions, options);\n this.destroy(true);\n this.init(chart, options);\n chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n };\n /**\n * Remove the axis from the chart.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Axis#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart following the remove.\n */\n Axis.prototype.remove = function (redraw) {\n var chart = this.chart,\n key = this.coll, // xAxis or yAxis\n axisSeries = this.series;\n var i = axisSeries.length;\n // Remove associated series (#2687)\n while (i--) {\n if (axisSeries[i]) {\n axisSeries[i].remove(false);\n }\n }\n // Remove the axis\n erase(chart.axes, this);\n erase(chart[key], this);\n chart[key].forEach(function (axis, i) {\n // Re-index, #1706, #8075\n axis.options.index = axis.userOptions.index = i;\n });\n this.destroy();\n chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n };\n /**\n * Update the axis title by options after render time.\n *\n * @sample highcharts/members/axis-settitle/\n * Set a new Y axis title\n *\n * @function Highcharts.Axis#setTitle\n *\n * @param {Highcharts.AxisTitleOptions} titleOptions\n * The additional title options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after setting the title.\n */\n Axis.prototype.setTitle = function (titleOptions, redraw) {\n this.update({ title: titleOptions }, redraw);\n };\n /**\n * Set new axis categories and optionally redraw.\n *\n * @sample highcharts/members/axis-setcategories/\n * Set categories by click on a button\n *\n * @function Highcharts.Axis#setCategories\n *\n * @param {Array<string>} categories\n * The new categories.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart.\n */\n Axis.prototype.setCategories = function (categories, redraw) {\n this.update({ categories: categories }, redraw);\n };\n /* *\n *\n * Static Properties\n *\n * */\n Axis.defaultOptions = AxisDefaults.defaultXAxisOptions;\n // Properties to survive after destroy, needed for Axis.update (#4317,\n // #5773, #5881).\n Axis.keepProps = [\n 'extKey',\n 'hcEvents',\n 'names',\n 'series',\n 'userMax',\n 'userMin'\n ];\n return Axis;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Options for the path on the Axis to be calculated.\n * @interface Highcharts.AxisPlotLinePathOptionsObject\n */ /**\n * Axis value.\n * @name Highcharts.AxisPlotLinePathOptionsObject#value\n * @type {number|undefined}\n */ /**\n * Line width used for calculation crisp line coordinates. Defaults to 1.\n * @name Highcharts.AxisPlotLinePathOptionsObject#lineWidth\n * @type {number|undefined}\n */ /**\n * If `false`, the function will return null when it falls outside the axis\n * bounds. If `true`, the function will return a path aligned to the plot area\n * sides if it falls outside. If `pass`, it will return a path outside.\n * @name Highcharts.AxisPlotLinePathOptionsObject#force\n * @type {string|boolean|undefined}\n */ /**\n * Used in Highcharts Stock. When `true`, plot paths\n * (crosshair, plotLines, gridLines)\n * will be rendered on all axes when defined on the first axis.\n * @name Highcharts.AxisPlotLinePathOptionsObject#acrossPanes\n * @type {boolean|undefined}\n */ /**\n * Use old coordinates (for resizing and rescaling).\n * If not set, defaults to `false`.\n * @name Highcharts.AxisPlotLinePathOptionsObject#old\n * @type {boolean|undefined}\n */ /**\n * If given, return the plot line path of a pixel position on the axis.\n * @name Highcharts.AxisPlotLinePathOptionsObject#translatedValue\n * @type {number|undefined}\n */ /**\n * Used in Polar axes. Reverse the positions for concatenation of polygonal\n * plot bands\n * @name Highcharts.AxisPlotLinePathOptionsObject#reverse\n * @type {boolean|undefined}\n */\n /**\n * Options for crosshairs on axes.\n *\n * @product highstock\n *\n * @typedef {Highcharts.XAxisCrosshairOptions|Highcharts.YAxisCrosshairOptions} Highcharts.AxisCrosshairOptions\n */\n /**\n * @typedef {\"navigator\"|\"pan\"|\"rangeSelectorButton\"|\"rangeSelectorInput\"|\"scrollbar\"|\"traverseUpButton\"|\"zoom\"} Highcharts.AxisExtremesTriggerValue\n */\n /**\n * @callback Highcharts.AxisEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n */\n /**\n * @callback Highcharts.AxisLabelsFormatterCallbackFunction\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} this\n *\n * @param {Highcharts.AxisLabelsFormatterContextObject} ctx\n *\n * @return {string}\n */\n /**\n * @interface Highcharts.AxisLabelsFormatterContextObject\n */ /**\n * The axis item of the label\n * @name Highcharts.AxisLabelsFormatterContextObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * The chart instance.\n * @name Highcharts.AxisLabelsFormatterContextObject#chart\n * @type {Highcharts.Chart}\n */ /**\n * Default formatting of date/time labels.\n * @name Highcharts.AxisLabelsFormatterContextObject#dateTimeLabelFormat\n * @type {string|undefined}\n */ /**\n * Whether the label belongs to the first tick on the axis.\n * @name Highcharts.AxisLabelsFormatterContextObject#isFirst\n * @type {boolean}\n */ /**\n * Whether the label belongs to the last tick on the axis.\n * @name Highcharts.AxisLabelsFormatterContextObject#isLast\n * @type {boolean}\n */ /**\n * The position on the axis in terms of axis values. For category axes, a\n * zero-based index. For datetime axes, the JavaScript time in milliseconds\n * since 1970.\n * @name Highcharts.AxisLabelsFormatterContextObject#pos\n * @type {number}\n */ /**\n * The preformatted text as the result of the default formatting. For example\n * dates will be formatted as strings, and numbers with language-specific comma\n * separators, thousands separators and numeric symbols like `k` or `M`.\n * @name Highcharts.AxisLabelsFormatterContextObject#text\n * @type {string|undefined}\n */ /**\n * The Tick instance.\n * @name Highcharts.AxisLabelsFormatterContextObject#tick\n * @type {Highcharts.Tick}\n */ /**\n * This can be either a numeric value or a category string.\n * @name Highcharts.AxisLabelsFormatterContextObject#value\n * @type {number|string}\n */\n /**\n * Options for axes.\n *\n * @typedef {Highcharts.XAxisOptions|Highcharts.YAxisOptions|Highcharts.ZAxisOptions} Highcharts.AxisOptions\n */\n /**\n * @callback Highcharts.AxisPointBreakEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @param {Highcharts.AxisPointBreakEventObject} evt\n */\n /**\n * @interface Highcharts.AxisPointBreakEventObject\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#brk\n * @type {Highcharts.Dictionary<number>}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#point\n * @type {Highcharts.Point}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#preventDefault\n * @type {Function}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#target\n * @type {Highcharts.SVGElement}\n */ /**\n * @name Highcharts.AxisPointBreakEventObject#type\n * @type {\"pointBreak\"|\"pointInBreak\"}\n */\n /**\n * @callback Highcharts.AxisSetExtremesEventCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @param {Highcharts.AxisSetExtremesEventObject} evt\n */\n /**\n * @interface Highcharts.AxisSetExtremesEventObject\n * @extends Highcharts.ExtremesObject\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#preventDefault\n * @type {Function}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#target\n * @type {Highcharts.SVGElement}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#trigger\n * @type {Highcharts.AxisExtremesTriggerValue|string}\n */ /**\n * @name Highcharts.AxisSetExtremesEventObject#type\n * @type {\"setExtremes\"}\n */\n /**\n * @callback Highcharts.AxisTickPositionerCallbackFunction\n *\n * @param {Highcharts.Axis} this\n *\n * @return {Highcharts.AxisTickPositionsArray}\n */\n /**\n * @interface Highcharts.AxisTickPositionsArray\n * @augments Array<number>\n */\n /**\n * @typedef {\"high\"|\"low\"|\"middle\"} Highcharts.AxisTitleAlignValue\n */\n /**\n * @typedef {Highcharts.XAxisTitleOptions|Highcharts.YAxisTitleOptions|Highcharts.ZAxisTitleOptions} Highcharts.AxisTitleOptions\n */\n /**\n * @typedef {\"linear\"|\"logarithmic\"|\"datetime\"|\"category\"|\"treegrid\"} Highcharts.AxisTypeValue\n */\n /**\n * The returned object literal from the {@link Highcharts.Axis#getExtremes}\n * function.\n *\n * @interface Highcharts.ExtremesObject\n */ /**\n * The maximum value of the axis' associated series.\n * @name Highcharts.ExtremesObject#dataMax\n * @type {number}\n */ /**\n * The minimum value of the axis' associated series.\n * @name Highcharts.ExtremesObject#dataMin\n * @type {number}\n */ /**\n * The maximum axis value, either automatic or set manually. If the `max` option\n * is not set, `maxPadding` is 0 and `endOnTick` is false, this value will be\n * the same as `dataMax`.\n * @name Highcharts.ExtremesObject#max\n * @type {number}\n */ /**\n * The minimum axis value, either automatic or set manually. If the `min` option\n * is not set, `minPadding` is 0 and `startOnTick` is false, this value will be\n * the same as `dataMin`.\n * @name Highcharts.ExtremesObject#min\n * @type {number}\n */ /**\n * The user defined maximum, either from the `max` option or from a zoom or\n * `setExtremes` action.\n * @name Highcharts.ExtremesObject#userMax\n * @type {number}\n */ /**\n * The user defined minimum, either from the `min` option or from a zoom or\n * `setExtremes` action.\n * @name Highcharts.ExtremesObject#userMin\n * @type {number}\n */\n /**\n * Formatter function for the text of a crosshair label.\n *\n * @callback Highcharts.XAxisCrosshairLabelFormatterCallbackFunction\n *\n * @param {Highcharts.Axis} this\n * Axis context\n *\n * @param {number} value\n * Y value of the data point\n *\n * @return {string}\n */\n ''; // keeps doclets above in JS file\n\n return Axis;\n });\n _registerModule(_modules, 'Core/Axis/DateTimeAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n getMagnitude = U.getMagnitude,\n normalizeTickInterval = U.normalizeTickInterval,\n timeUnits = U.timeUnits;\n /* *\n *\n * Composition\n *\n * */\n /* eslint-disable valid-jsdoc */\n var DateTimeAxis;\n (function (DateTimeAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extends axis class with date and time support.\n * @private\n */\n function compose(AxisClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.keepProps.push('dateTime');\n var axisProto = AxisClass.prototype;\n axisProto.getTimeTicks = getTimeTicks;\n addEvent(AxisClass, 'init', onInit);\n }\n return AxisClass;\n }\n DateTimeAxis.compose = compose;\n /**\n * Set the tick positions to a time unit that makes sense, for example\n * on the first of each month or on every Monday. Return an array with\n * the time positions. Used in datetime axes as well as for grouping\n * data on a datetime axis.\n *\n * @private\n * @function Highcharts.Axis#getTimeTicks\n * @param {Highcharts.TimeNormalizeObject} normalizedInterval\n * The interval in axis values (ms) and thecount.\n * @param {number} min\n * The minimum in axis values.\n * @param {number} max\n * The maximum in axis values.\n */\n function getTimeTicks() {\n return this.chart.time.getTimeTicks.apply(this.chart.time, arguments);\n }\n /**\n * @private\n */\n function onInit(e) {\n var axis = this;\n var options = e.userOptions;\n if (options.type !== 'datetime') {\n axis.dateTime = void 0;\n return;\n }\n if (!axis.dateTime) {\n axis.dateTime = new Additions(axis);\n }\n }\n /* *\n *\n * Classes\n *\n * */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Additions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get a normalized tick interval for dates. Returns a configuration\n * object with unit range (interval), count and name. Used to prepare\n * data for `getTimeTicks`. Previously this logic was part of\n * getTimeTicks, but as `getTimeTicks` now runs of segments in stock\n * charts, the normalizing logic was extracted in order to prevent it\n * for running over again for each segment having the same interval.\n * #662, #697.\n * @private\n */\n Additions.prototype.normalizeTimeTickInterval = function (tickInterval, unitsOption) {\n var units = (unitsOption || [[\n // unit name\n 'millisecond',\n // allowed multiples\n [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]\n ],\n [\n 'second',\n [1, 2, 5, 10, 15, 30]\n ],\n [\n 'minute',\n [1, 2, 5, 10, 15, 30]\n ],\n [\n 'hour',\n [1, 2, 3, 4, 6, 8, 12]\n ],\n [\n 'day',\n [1, 2]\n ],\n [\n 'week',\n [1, 2]\n ],\n [\n 'month',\n [1, 2, 3, 4, 6]\n ],\n [\n 'year',\n null\n ]]);\n var unit = units[units.length - 1], // default unit is years\n interval = timeUnits[unit[0]],\n multiples = unit[1],\n i;\n // loop through the units to find the one that best fits the\n // tickInterval\n for (i = 0; i < units.length; i++) {\n unit = units[i];\n interval = timeUnits[unit[0]];\n multiples = unit[1];\n if (units[i + 1]) {\n // lessThan is in the middle between the highest multiple\n // and the next unit.\n var lessThan = (interval *\n multiples[multiples.length - 1] +\n timeUnits[units[i + 1][0]]) / 2;\n // break and keep the current unit\n if (tickInterval <= lessThan) {\n break;\n }\n }\n }\n // prevent 2.5 years intervals, though 25, 250 etc. are allowed\n if (interval === timeUnits.year && tickInterval < 5 * interval) {\n multiples = [1, 2, 5];\n }\n // get the count\n var count = normalizeTickInterval(tickInterval / interval,\n multiples,\n unit[0] === 'year' ? // #1913, #2360\n Math.max(getMagnitude(tickInterval / interval), 1) :\n 1);\n return {\n unitRange: interval,\n count: count,\n unitName: unit[0]\n };\n };\n /**\n * Get the best date format for a specific X value based on the closest\n * point range on the axis.\n *\n * @private\n */\n Additions.prototype.getXDateFormat = function (x, dateTimeLabelFormats) {\n var axis = this.axis,\n time = axis.chart.time;\n return axis.closestPointRange ?\n time.getDateFormat(axis.closestPointRange, x, axis.options.startOfWeek, dateTimeLabelFormats) ||\n // #2546, 2581\n time.resolveDTLFormat(dateTimeLabelFormats.year).main :\n time.resolveDTLFormat(dateTimeLabelFormats.day).main;\n };\n return Additions;\n }());\n DateTimeAxis.Additions = Additions;\n })(DateTimeAxis || (DateTimeAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return DateTimeAxis;\n });\n _registerModule(_modules, 'Core/Axis/LogarithmicAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n getMagnitude = U.getMagnitude,\n normalizeTickInterval = U.normalizeTickInterval,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * @private\n */\n var LogarithmicAxis;\n (function (LogarithmicAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Provides logarithmic support for axes.\n * @private\n */\n function compose(AxisClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n AxisClass.keepProps.push('logarithmic');\n addEvent(AxisClass, 'init', onInit);\n addEvent(AxisClass, 'afterInit', onAfterInit);\n }\n return AxisClass;\n }\n LogarithmicAxis.compose = compose;\n /**\n * @private\n */\n function onInit(e) {\n var axis = this;\n var options = e.userOptions;\n var logarithmic = axis.logarithmic;\n if (options.type !== 'logarithmic') {\n axis.logarithmic = void 0;\n }\n else {\n if (!logarithmic) {\n logarithmic = axis.logarithmic = new Additions(axis);\n }\n }\n }\n /**\n * @private\n */\n function onAfterInit() {\n var axis = this;\n var log = axis.logarithmic;\n // extend logarithmic axis\n if (log) {\n axis.lin2val = function (num) {\n return log.lin2log(num);\n };\n axis.val2lin = function (num) {\n return log.log2lin(num);\n };\n }\n }\n /* *\n *\n * Class\n *\n * */\n /**\n * Provides logarithmic support for axes.\n * @private\n * @class\n */\n var Additions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Additions(axis) {\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set the tick positions of a logarithmic axis.\n */\n Additions.prototype.getLogTickPositions = function (interval, min, max, minor) {\n var log = this;\n var axis = log.axis;\n var axisLength = axis.len;\n var options = axis.options;\n // Since we use this method for both major and minor ticks,\n // use a local variable and return the result\n var positions = [];\n // Reset\n if (!minor) {\n log.minorAutoInterval = void 0;\n }\n // First case: All ticks fall on whole logarithms: 1, 10, 100 etc.\n if (interval >= 0.5) {\n interval = Math.round(interval);\n positions = axis.getLinearTickPositions(interval, min, max);\n // Second case: We need intermediary ticks. For example\n // 1, 2, 4, 6, 8, 10, 20, 40 etc.\n }\n else if (interval >= 0.08) {\n var roundedMin = Math.floor(min);\n var intermediate = void 0,\n i = void 0,\n j = void 0,\n len = void 0,\n pos = void 0,\n lastPos = void 0,\n break2 = void 0;\n if (interval > 0.3) {\n intermediate = [1, 2, 4];\n // 0.2 equals five minor ticks per 1, 10, 100 etc\n }\n else if (interval > 0.15) {\n intermediate = [1, 2, 4, 6, 8];\n }\n else { // 0.1 equals ten minor ticks per 1, 10, 100 etc\n intermediate = [1, 2, 3, 4, 5, 6, 7, 8, 9];\n }\n for (i = roundedMin; i < max + 1 && !break2; i++) {\n len = intermediate.length;\n for (j = 0; j < len && !break2; j++) {\n pos = log.log2lin(log.lin2log(i) * intermediate[j]);\n // #1670, lastPos is #3113\n if (pos > min &&\n (!minor || lastPos <= max) &&\n typeof lastPos !== 'undefined') {\n positions.push(lastPos);\n }\n if (lastPos > max) {\n break2 = true;\n }\n lastPos = pos;\n }\n }\n // Third case: We are so deep in between whole logarithmic values,\n // that we might as well handle the tick positions like a linear\n // axis. For example 1.01, 1.02, 1.03, 1.04.\n }\n else {\n var realMin = log.lin2log(min),\n realMax = log.lin2log(max),\n tickIntervalOption = minor ?\n axis.getMinorTickInterval() :\n options.tickInterval,\n filteredTickIntervalOption = tickIntervalOption === 'auto' ?\n null :\n tickIntervalOption,\n tickPixelIntervalOption = options.tickPixelInterval / (minor ? 5 : 1),\n totalPixelLength = minor ?\n axisLength / axis.tickPositions.length :\n axisLength;\n interval = pick(filteredTickIntervalOption, log.minorAutoInterval, (realMax - realMin) *\n tickPixelIntervalOption / (totalPixelLength || 1));\n interval = normalizeTickInterval(interval);\n positions = axis.getLinearTickPositions(interval, realMin, realMax).map(log.log2lin);\n if (!minor) {\n log.minorAutoInterval = interval / 5;\n }\n }\n // Set the axis-level tickInterval variable\n if (!minor) {\n axis.tickInterval = interval;\n }\n return positions;\n };\n Additions.prototype.lin2log = function (num) {\n return Math.pow(10, num);\n };\n Additions.prototype.log2lin = function (num) {\n return Math.log(num) / Math.LN10;\n };\n return Additions;\n }());\n LogarithmicAxis.Additions = Additions;\n })(LogarithmicAxis || (LogarithmicAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return LogarithmicAxis;\n });\n _registerModule(_modules, 'Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var erase = U.erase,\n extend = U.extend,\n isNumber = U.isNumber;\n /* *\n *\n * Composition\n *\n * */\n var PlotLineOrBandAxis;\n (function (PlotLineOrBandAxis) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Variables\n *\n * */\n var PlotLineOrBandClass;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(PlotLineOrBandType, AxisClass) {\n if (!PlotLineOrBandClass) {\n PlotLineOrBandClass = PlotLineOrBandType;\n }\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n extend(AxisClass.prototype, Additions.prototype);\n }\n return AxisClass;\n }\n PlotLineOrBandAxis.compose = compose;\n /* *\n *\n * Classes\n *\n * */\n /**\n * Object with members for extending the Axis prototype.\n * @private\n */\n var Additions = /** @class */ (function () {\n function Additions() {\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Internal function to create the SVG path definition for a plot band.\n *\n * @function Highcharts.Axis#getPlotBandPath\n *\n * @param {number} from\n * The axis value to start from.\n *\n * @param {number} to\n * The axis value to end on.\n *\n * @param {Highcharts.AxisPlotBandsOptions|Highcharts.AxisPlotLinesOptions} options\n * The plotBand or plotLine configuration object.\n *\n * @return {Highcharts.SVGPathArray}\n * The SVG path definition in array form.\n */\n Additions.prototype.getPlotBandPath = function (from, to, options) {\n if (options === void 0) { options = this.options; }\n var toPath = this.getPlotLinePath({\n value: to,\n force: true,\n acrossPanes: options.acrossPanes\n }), result = [], horiz = this.horiz, outside = !isNumber(this.min) ||\n !isNumber(this.max) ||\n (from < this.min && to < this.min) ||\n (from > this.max && to > this.max);\n var path = this.getPlotLinePath({\n value: from,\n force: true,\n acrossPanes: options.acrossPanes\n }),\n i, \n // #4964 check if chart is inverted or plotband is on yAxis\n plus = 1,\n isFlat;\n if (path && toPath) {\n // Flat paths don't need labels (#3836)\n if (outside) {\n isFlat = path.toString() === toPath.toString();\n plus = 0;\n }\n // Go over each subpath - for panes in Highcharts Stock\n for (i = 0; i < path.length; i += 2) {\n var pathStart = path[i],\n pathEnd = path[i + 1],\n toPathStart = toPath[i],\n toPathEnd = toPath[i + 1];\n // Type checking all affected path segments. Consider\n // something smarter.\n if ((pathStart[0] === 'M' || pathStart[0] === 'L') &&\n (pathEnd[0] === 'M' || pathEnd[0] === 'L') &&\n (toPathStart[0] === 'M' || toPathStart[0] === 'L') &&\n (toPathEnd[0] === 'M' || toPathEnd[0] === 'L')) {\n // Add 1 pixel when coordinates are the same\n if (horiz && toPathStart[1] === pathStart[1]) {\n toPathStart[1] += plus;\n toPathEnd[1] += plus;\n }\n else if (!horiz && toPathStart[2] === pathStart[2]) {\n toPathStart[2] += plus;\n toPathEnd[2] += plus;\n }\n result.push(['M', pathStart[1], pathStart[2]], ['L', pathEnd[1], pathEnd[2]], ['L', toPathEnd[1], toPathEnd[2]], ['L', toPathStart[1], toPathStart[2]], ['Z']);\n }\n result.isFlat = isFlat;\n }\n }\n else { // outside the axis area\n path = null;\n }\n return result;\n };\n /**\n * Add a plot band after render time.\n *\n * @sample highcharts/members/axis-addplotband/\n * Toggle the plot band from a button\n *\n * @function Highcharts.Axis#addPlotBand\n *\n * @param {Highcharts.AxisPlotBandsOptions} options\n * A configuration object for the plot band, as defined in\n * [xAxis.plotBands](https://api.highcharts.com/highcharts/xAxis.plotBands).\n *\n * @return {Highcharts.PlotLineOrBand|undefined}\n * The added plot band.\n */\n Additions.prototype.addPlotBand = function (options) {\n return this.addPlotBandOrLine(options, 'plotBands');\n };\n /**\n * Add a plot line after render time.\n *\n * @sample highcharts/members/axis-addplotline/\n * Toggle the plot line from a button\n *\n * @function Highcharts.Axis#addPlotLine\n *\n * @param {Highcharts.AxisPlotLinesOptions} options\n * A configuration object for the plot line, as defined in\n * [xAxis.plotLines](https://api.highcharts.com/highcharts/xAxis.plotLines).\n *\n * @return {Highcharts.PlotLineOrBand|undefined}\n * The added plot line.\n */\n Additions.prototype.addPlotLine = function (options) {\n return this.addPlotBandOrLine(options, 'plotLines');\n };\n /**\n * Add a plot band or plot line after render time. Called from\n * addPlotBand and addPlotLine internally.\n *\n * @private\n * @function Highcharts.Axis#addPlotBandOrLine\n * @param {Highcharts.AxisPlotBandsOptions|Highcharts.AxisPlotLinesOptions} options\n * The plotBand or plotLine configuration object.\n */\n Additions.prototype.addPlotBandOrLine = function (options, coll) {\n var _this = this;\n var userOptions = this.userOptions;\n var obj = new PlotLineOrBandClass(this,\n options);\n if (this.visible) {\n obj = obj.render();\n }\n if (obj) { // #2189\n if (!this._addedPlotLB) {\n this._addedPlotLB = true;\n (userOptions.plotLines || [])\n .concat(userOptions.plotBands || [])\n .forEach(function (plotLineOptions) {\n _this.addPlotBandOrLine(plotLineOptions);\n });\n }\n // Add it to the user options for exporting and Axis.update\n if (coll) {\n // Workaround Microsoft/TypeScript issue #32693\n var updatedOptions = (userOptions[coll] || []);\n updatedOptions.push(options);\n userOptions[coll] = updatedOptions;\n }\n this.plotLinesAndBands.push(obj);\n }\n return obj;\n };\n /**\n * Remove a plot band or plot line from the chart by id. Called\n * internally from `removePlotBand` and `removePlotLine`.\n * @private\n * @function Highcharts.Axis#removePlotBandOrLine\n */\n Additions.prototype.removePlotBandOrLine = function (id) {\n var plotLinesAndBands = this.plotLinesAndBands,\n options = this.options,\n userOptions = this.userOptions;\n if (plotLinesAndBands) { // #15639\n var i_1 = plotLinesAndBands.length;\n while (i_1--) {\n if (plotLinesAndBands[i_1].id === id) {\n plotLinesAndBands[i_1].destroy();\n }\n }\n ([\n options.plotLines || [],\n userOptions.plotLines || [],\n options.plotBands || [],\n userOptions.plotBands || []\n ]).forEach(function (arr) {\n i_1 = arr.length;\n while (i_1--) {\n if ((arr[i_1] || {}).id === id) {\n erase(arr, arr[i_1]);\n }\n }\n });\n }\n };\n /**\n * Remove a plot band by its id.\n *\n * @sample highcharts/members/axis-removeplotband/\n * Remove plot band by id\n * @sample highcharts/members/axis-addplotband/\n * Toggle the plot band from a button\n *\n * @function Highcharts.Axis#removePlotBand\n *\n * @param {string} id\n * The plot band's `id` as given in the original configuration\n * object or in the `addPlotBand` option.\n */\n Additions.prototype.removePlotBand = function (id) {\n this.removePlotBandOrLine(id);\n };\n /**\n * Remove a plot line by its id.\n *\n * @sample highcharts/xaxis/plotlines-id/\n * Remove plot line by id\n * @sample highcharts/members/axis-addplotline/\n * Toggle the plot line from a button\n *\n * @function Highcharts.Axis#removePlotLine\n *\n * @param {string} id\n * The plot line's `id` as given in the original configuration\n * object or in the `addPlotLine` option.\n */\n Additions.prototype.removePlotLine = function (id) {\n this.removePlotBandOrLine(id);\n };\n return Additions;\n }());\n })(PlotLineOrBandAxis || (PlotLineOrBandAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return PlotLineOrBandAxis;\n });\n _registerModule(_modules, 'Core/Axis/PlotLineOrBand/PlotLineOrBand.js', [_modules['Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js'], _modules['Core/Utilities.js']], function (PlotLineOrBandAxis, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n erase = U.erase,\n fireEvent = U.fireEvent,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * The object wrapper for plot lines and plot bands\n *\n * @class\n * @name Highcharts.PlotLineOrBand\n *\n * @param {Highcharts.Axis} axis\n * Related axis.\n *\n * @param {Highcharts.AxisPlotLinesOptions|Highcharts.AxisPlotBandsOptions} [options]\n * Options to use.\n */\n var PlotLineOrBand = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function PlotLineOrBand(axis, options) {\n this.axis = axis;\n if (options) {\n this.options = options;\n this.id = options.id;\n }\n }\n /* *\n *\n * Static Functions\n *\n * */\n PlotLineOrBand.compose = function (AxisClass) {\n return PlotLineOrBandAxis.compose(PlotLineOrBand, AxisClass);\n };\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Render the plot line or plot band. If it is already existing,\n * move it.\n * @private\n * @function Highcharts.PlotLineOrBand#render\n */\n PlotLineOrBand.prototype.render = function () {\n fireEvent(this, 'render');\n var plotLine = this,\n axis = plotLine.axis,\n horiz = axis.horiz,\n log = axis.logarithmic,\n options = plotLine.options,\n color = options.color,\n zIndex = pick(options.zIndex, 0),\n events = options.events,\n groupAttribs = {},\n renderer = axis.chart.renderer;\n var optionsLabel = options.label,\n label = plotLine.label,\n to = options.to,\n from = options.from,\n value = options.value,\n svgElem = plotLine.svgElem,\n path = [],\n group;\n var isBand = defined(from) && defined(to),\n isLine = defined(value),\n isNew = !svgElem,\n attribs = {\n 'class': 'highcharts-plot-' + (isBand ? 'band ' : 'line ') +\n (options.className || '')\n };\n var groupName = isBand ? 'bands' : 'lines';\n // logarithmic conversion\n if (log) {\n from = log.log2lin(from);\n to = log.log2lin(to);\n value = log.log2lin(value);\n }\n // Set the presentational attributes\n if (!axis.chart.styledMode) {\n if (isLine) {\n attribs.stroke = color || \"#999999\" /* Palette.neutralColor40 */;\n attribs['stroke-width'] = pick(options.width, 1);\n if (options.dashStyle) {\n attribs.dashstyle =\n options.dashStyle;\n }\n }\n else if (isBand) { // plot band\n attribs.fill = color || \"#e6ebf5\" /* Palette.highlightColor10 */;\n if (options.borderWidth) {\n attribs.stroke = options.borderColor;\n attribs['stroke-width'] = options.borderWidth;\n }\n }\n }\n // Grouping and zIndex\n groupAttribs.zIndex = zIndex;\n groupName += '-' + zIndex;\n group = axis.plotLinesAndBandsGroups[groupName];\n if (!group) {\n axis.plotLinesAndBandsGroups[groupName] = group =\n renderer.g('plot-' + groupName)\n .attr(groupAttribs).add();\n }\n // Create the path\n if (isNew) {\n /**\n * SVG element of the plot line or band.\n *\n * @name Highcharts.PlotLineOrBand#svgElem\n * @type {Highcharts.SVGElement}\n */\n plotLine.svgElem = svgElem = renderer\n .path()\n .attr(attribs)\n .add(group);\n }\n // Set the path or return\n if (isLine) {\n path = axis.getPlotLinePath({\n value: value,\n lineWidth: svgElem.strokeWidth(),\n acrossPanes: options.acrossPanes\n });\n }\n else if (isBand) { // plot band\n path = axis.getPlotBandPath(from, to, options);\n }\n else {\n return;\n }\n // common for lines and bands\n // Add events only if they were not added before.\n if (!plotLine.eventsAdded && events) {\n objectEach(events, function (event, eventType) {\n svgElem.on(eventType, function (e) {\n events[eventType].apply(plotLine, [e]);\n });\n });\n plotLine.eventsAdded = true;\n }\n if ((isNew || !svgElem.d) && path && path.length) {\n svgElem.attr({ d: path });\n }\n else if (svgElem) {\n if (path) {\n svgElem.show();\n svgElem.animate({ d: path });\n }\n else if (svgElem.d) {\n svgElem.hide();\n if (label) {\n plotLine.label = label = label.destroy();\n }\n }\n }\n // the plot band/line label\n if (optionsLabel &&\n (defined(optionsLabel.text) || defined(optionsLabel.formatter)) &&\n path &&\n path.length &&\n axis.width > 0 &&\n axis.height > 0 &&\n !path.isFlat) {\n // apply defaults\n optionsLabel = merge({\n align: horiz && isBand && 'center',\n x: horiz ? !isBand && 4 : 10,\n verticalAlign: !horiz && isBand && 'middle',\n y: horiz ? isBand ? 16 : 10 : isBand ? 6 : -4,\n rotation: horiz && !isBand && 90\n }, optionsLabel);\n this.renderLabel(optionsLabel, path, isBand, zIndex);\n }\n else if (label) { // move out of sight\n label.hide();\n }\n // chainable\n return plotLine;\n };\n /**\n * Render and align label for plot line or band.\n * @private\n * @function Highcharts.PlotLineOrBand#renderLabel\n */\n PlotLineOrBand.prototype.renderLabel = function (optionsLabel, path, isBand, zIndex) {\n var plotLine = this,\n axis = plotLine.axis,\n renderer = axis.chart.renderer;\n var label = plotLine.label;\n // add the SVG element\n if (!label) {\n /**\n * SVG element of the label.\n *\n * @name Highcharts.PlotLineOrBand#label\n * @type {Highcharts.SVGElement}\n */\n plotLine.label = label = renderer\n .text(this.getLabelText(optionsLabel), 0, 0, optionsLabel.useHTML)\n .attr({\n align: optionsLabel.textAlign || optionsLabel.align,\n rotation: optionsLabel.rotation,\n 'class': 'highcharts-plot-' + (isBand ? 'band' : 'line') +\n '-label ' + (optionsLabel.className || ''),\n zIndex: zIndex\n })\n .add();\n if (!axis.chart.styledMode) {\n label.css(merge({\n textOverflow: 'ellipsis'\n }, optionsLabel.style));\n }\n }\n // get the bounding box and align the label\n // #3000 changed to better handle choice between plotband or plotline\n var xBounds = path.xBounds ||\n [path[0][1],\n path[1][1], (isBand ? path[2][1] : path[0][1])];\n var yBounds = path.yBounds ||\n [path[0][2],\n path[1][2], (isBand ? path[2][2] : path[0][2])];\n var x = arrayMin(xBounds);\n var y = arrayMin(yBounds);\n label.align(optionsLabel, false, {\n x: x,\n y: y,\n width: arrayMax(xBounds) - x,\n height: arrayMax(yBounds) - y\n });\n if (!label.alignValue || label.alignValue === 'left') {\n var width = optionsLabel.clip ?\n axis.width : axis.chart.chartWidth;\n label.css({\n width: (label.rotation === 90 ?\n axis.height - (label.alignAttr.y - axis.top) :\n width - (label.alignAttr.x - axis.left)) + 'px'\n });\n }\n label.show(true);\n };\n /**\n * Get label's text content.\n * @private\n * @function Highcharts.PlotLineOrBand#getLabelText\n */\n PlotLineOrBand.prototype.getLabelText = function (optionsLabel) {\n return defined(optionsLabel.formatter) ?\n optionsLabel.formatter\n .call(this) :\n optionsLabel.text;\n };\n /**\n * Remove the plot line or band.\n *\n * @function Highcharts.PlotLineOrBand#destroy\n */\n PlotLineOrBand.prototype.destroy = function () {\n // remove it from the lookup\n erase(this.axis.plotLinesAndBands, this);\n delete this.axis;\n destroyObjectProperties(this);\n };\n return PlotLineOrBand;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Options for plot bands on axes.\n *\n * @typedef {Highcharts.XAxisPlotBandsOptions|Highcharts.YAxisPlotBandsOptions|Highcharts.ZAxisPlotBandsOptions} Highcharts.AxisPlotBandsOptions\n */\n /**\n * Options for plot band labels on axes.\n *\n * @typedef {Highcharts.XAxisPlotBandsLabelOptions|Highcharts.YAxisPlotBandsLabelOptions|Highcharts.ZAxisPlotBandsLabelOptions} Highcharts.AxisPlotBandsLabelOptions\n */\n /**\n * Options for plot lines on axes.\n *\n * @typedef {Highcharts.XAxisPlotLinesOptions|Highcharts.YAxisPlotLinesOptions|Highcharts.ZAxisPlotLinesOptions} Highcharts.AxisPlotLinesOptions\n */\n /**\n * Options for plot line labels on axes.\n *\n * @typedef {Highcharts.XAxisPlotLinesLabelOptions|Highcharts.YAxisPlotLinesLabelOptions|Highcharts.ZAxisPlotLinesLabelOptions} Highcharts.AxisPlotLinesLabelOptions\n */\n ('');\n /* *\n *\n * API Options\n *\n * */\n /**\n * An array of colored bands stretching across the plot area marking an\n * interval on the axis.\n *\n * In styled mode, the plot bands are styled by the `.highcharts-plot-band`\n * class in addition to the `className` option.\n *\n * @productdesc {highcharts}\n * In a gauge, a plot band on the Y axis (value axis) will stretch along the\n * perimeter of the gauge.\n *\n * @type {Array<*>}\n * @product highcharts highstock gantt\n * @apioption xAxis.plotBands\n */\n /**\n * Flag to decide if plotBand should be rendered across all panes.\n *\n * @since 7.1.2\n * @product highstock\n * @type {boolean}\n * @default true\n * @apioption xAxis.plotBands.acrossPanes\n */\n /**\n * Border color for the plot band. Also requires `borderWidth` to be set.\n *\n * @type {Highcharts.ColorString}\n * @apioption xAxis.plotBands.borderColor\n */\n /**\n * Border width for the plot band. Also requires `borderColor` to be set.\n *\n * @type {number}\n * @default 0\n * @apioption xAxis.plotBands.borderWidth\n */\n /**\n * A custom class name, in addition to the default `highcharts-plot-band`,\n * to apply to each individual band.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.plotBands.className\n */\n /**\n * The color of the plot band.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Color band\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #e6ebf5\n * @apioption xAxis.plotBands.color\n */\n /**\n * An object defining mouse events for the plot band. Supported properties\n * are `click`, `mouseover`, `mouseout`, `mousemove`.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-events/\n * Mouse events demonstrated\n *\n * @since 1.2\n * @apioption xAxis.plotBands.events\n */\n /**\n * Click event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotBands.events.click\n */\n /**\n * Mouse move event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotBands.events.mousemove\n */\n /**\n * Mouse out event on the corner of a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotBands.events.mouseout\n */\n /**\n * Mouse over event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotBands.events.mouseover\n */\n /**\n * The start position of the plot band in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Datetime axis\n * @sample {highcharts} highcharts/xaxis/plotbands-from/\n * Categorized axis\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotBands.from\n */\n /**\n * An id used for identifying the plot band in Axis.removePlotBand.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-id/\n * Remove plot band by id\n * @sample {highstock} highcharts/xaxis/plotbands-id/\n * Remove plot band by id\n *\n * @type {string}\n * @apioption xAxis.plotBands.id\n */\n /**\n * The end position of the plot band in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Datetime axis\n * @sample {highcharts} highcharts/xaxis/plotbands-from/\n * Categorized axis\n * @sample {highstock} stock/xaxis/plotbands/\n * Plot band on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotBands.to\n */\n /**\n * The z index of the plot band within the chart, relative to other\n * elements. Using the same z index as another element may give\n * unpredictable results, as the last rendered element will be on top.\n * Values from 0 to 20 make sense.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-color/\n * Behind plot lines by default\n * @sample {highcharts} highcharts/xaxis/plotbands-zindex/\n * Above plot lines\n * @sample {highcharts} highcharts/xaxis/plotbands-zindex-above-series/\n * Above plot lines and series\n *\n * @type {number}\n * @since 1.2\n * @apioption xAxis.plotBands.zIndex\n */\n /**\n * Text labels for the plot bands\n *\n * @product highcharts highstock gantt\n * @apioption xAxis.plotBands.label\n */\n /**\n * Horizontal alignment of the label. Can be one of \"left\", \"center\" or\n * \"right\".\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-align/\n * Aligned to the right\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {Highcharts.AlignValue}\n * @default center\n * @since 2.1\n * @apioption xAxis.plotBands.label.align\n */\n /**\n * Rotation of the text label in degrees .\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-rotation/\n * Vertical text\n *\n * @type {number}\n * @default 0\n * @since 2.1\n * @apioption xAxis.plotBands.label.rotation\n */\n /**\n * CSS styles for the text label.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-plot-band-label` class.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-style/\n * Blue and bold label\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1\n * @apioption xAxis.plotBands.label.style\n */\n /**\n * The string text itself. A subset of HTML is supported.\n *\n * @type {string}\n * @since 2.1\n * @apioption xAxis.plotBands.label.text\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed within the plot band, `textAlign` determines\n * how the text is aligned against its anchor point. Possible values are\n * \"left\", \"center\" and \"right\". Defaults to the same as the `align` option.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-rotation/\n * Vertical text in center position but text-aligned left\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @apioption xAxis.plotBands.label.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0.3\n * @apioption xAxis.plotBands.label.useHTML\n */\n /**\n * Vertical alignment of the label relative to the plot band. Can be one of\n * \"top\", \"middle\" or \"bottom\".\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-verticalalign/\n * Vertically centered label\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default top\n * @since 2.1\n * @apioption xAxis.plotBands.label.verticalAlign\n */\n /**\n * Horizontal position relative the alignment. Default varies by\n * orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-align/\n * Aligned 10px from the right edge\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotBands.label.x\n */\n /**\n * Vertical position of the text baseline relative to the alignment. Default\n * varies by orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-label-y/\n * Label on x axis\n * @sample {highstock} stock/xaxis/plotbands-label/\n * Plot band with labels\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotBands.label.y\n */\n /**\n * An array of lines stretching across the plot area, marking a specific\n * value on one of the axes.\n *\n * In styled mode, the plot lines are styled by the\n * `.highcharts-plot-line` class in addition to the `className` option.\n *\n * @type {Array<*>}\n * @product highcharts highstock gantt\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * Basic plot line\n * @sample {highcharts} highcharts/series-solidgauge/labels-auto-aligned/\n * Solid gauge plot line\n * @apioption xAxis.plotLines\n */\n /**\n * Flag to decide if plotLine should be rendered across all panes.\n *\n * @sample {highstock} stock/xaxis/plotlines-acrosspanes/\n * Plot lines on different panes\n *\n * @since 7.1.2\n * @product highstock\n * @type {boolean}\n * @default true\n * @apioption xAxis.plotLines.acrossPanes\n */\n /**\n * A custom class name, in addition to the default `highcharts-plot-line`,\n * to apply to each individual line.\n *\n * @type {string}\n * @since 5.0.0\n * @apioption xAxis.plotLines.className\n */\n /**\n * The color of the line.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * A red line from X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.ColorString}\n * @default #999999\n * @apioption xAxis.plotLines.color\n */\n /**\n * The dashing or dot style for the plot line. For possible values see\n * [this overview](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/plotoptions/series-dashstyle-all/).\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-dashstyle/\n * Dash and dot pattern\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 1.2\n * @apioption xAxis.plotLines.dashStyle\n */\n /**\n * An object defining mouse events for the plot line. Supported\n * properties are `click`, `mouseover`, `mouseout`, `mousemove`.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-events/\n * Mouse events demonstrated\n *\n * @since 1.2\n * @apioption xAxis.plotLines.events\n */\n /**\n * Click event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotLines.events.click\n */\n /**\n * Mouse move event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotLines.events.mousemove\n */\n /**\n * Mouse out event on the corner of a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotLines.events.mouseout\n */\n /**\n * Mouse over event on a plot band.\n *\n * @type {Highcharts.EventCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotLines.events.mouseover\n */\n /**\n * An id used for identifying the plot line in Axis.removePlotLine.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-id/\n * Remove plot line by id\n *\n * @type {string}\n * @apioption xAxis.plotLines.id\n */\n /**\n * The position of the line in axis units.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * Between two categories on X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @apioption xAxis.plotLines.value\n */\n /**\n * The width or thickness of the plot line.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-color/\n * 2px wide line from X axis\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @default 2\n * @apioption xAxis.plotLines.width\n */\n /**\n * The z index of the plot line within the chart.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-behind/\n * Behind plot lines by default\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-above/\n * Above plot lines\n * @sample {highcharts} highcharts/xaxis/plotlines-zindex-above-all/\n * Above plot lines and series\n *\n * @type {number}\n * @since 1.2\n * @apioption xAxis.plotLines.zIndex\n */\n /**\n * Text labels for the plot bands\n *\n * @apioption xAxis.plotLines.label\n */\n /**\n * Horizontal alignment of the label. Can be one of \"left\", \"center\" or\n * \"right\".\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-align-right/\n * Aligned to the right\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {Highcharts.AlignValue}\n * @default left\n * @since 2.1\n * @apioption xAxis.plotLines.label.align\n */\n /**\n * Whether to hide labels that are outside the plot area.\n *\n * @type {boolean}\n * @default false\n * @since 10.3.3\n * @apioption xAxis.plotLines.labels.clip\n */\n /**\n * Callback JavaScript function to format the label. Useful properties like\n * the value of plot line or the range of plot band (`from` & `to`\n * properties) can be found in `this.options` object.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-plotbands-label-formatter\n * Label formatters for plot line and plot band.\n * @type {Highcharts.FormatterCallbackFunction<Highcharts.PlotLineOrBand>}\n * @apioption xAxis.plotLines.label.formatter\n */\n /**\n * Rotation of the text label in degrees. Defaults to 0 for horizontal plot\n * lines and 90 for vertical lines.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-verticalalign-middle/\n * Slanted text\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.rotation\n */\n /**\n * CSS styles for the text label.\n *\n * In styled mode, the labels are styled by the\n * `.highcharts-plot-line-label` class.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-style/\n * Blue and bold label\n *\n * @type {Highcharts.CSSObject}\n * @since 2.1\n * @apioption xAxis.plotLines.label.style\n */\n /**\n * The text itself. A subset of HTML is supported.\n *\n * @type {string}\n * @since 2.1\n * @apioption xAxis.plotLines.label.text\n */\n /**\n * The text alignment for the label. While `align` determines where the\n * texts anchor point is placed within the plot band, `textAlign` determines\n * how the text is aligned against its anchor point. Possible values are\n * \"left\", \"center\" and \"right\". Defaults to the same as the `align` option.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-textalign/\n * Text label in bottom position\n *\n * @type {Highcharts.AlignValue}\n * @since 2.1\n * @apioption xAxis.plotLines.label.textAlign\n */\n /**\n * Whether to [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @since 3.0.3\n * @apioption xAxis.plotLines.label.useHTML\n */\n /**\n * Vertical alignment of the label relative to the plot line. Can be\n * one of \"top\", \"middle\" or \"bottom\".\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-verticalalign-middle/\n * Vertically centered label\n *\n * @type {Highcharts.VerticalAlignValue}\n * @default {highcharts} top\n * @default {highstock} top\n * @since 2.1\n * @apioption xAxis.plotLines.label.verticalAlign\n */\n /**\n * Horizontal position relative the alignment. Default varies by\n * orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-align-right/\n * Aligned 10px from the right edge\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.x\n */\n /**\n * Vertical position of the text baseline relative to the alignment. Default\n * varies by orientation.\n *\n * @sample {highcharts} highcharts/xaxis/plotlines-label-y/\n * Label below the plot line\n * @sample {highstock} stock/xaxis/plotlines/\n * Plot line on Y axis\n *\n * @type {number}\n * @since 2.1\n * @apioption xAxis.plotLines.label.y\n */\n /**\n * @type {Array<*>}\n * @extends xAxis.plotBands\n * @apioption yAxis.plotBands\n */\n /**\n * In a gauge chart, this option determines the inner radius of the\n * plot band that stretches along the perimeter. It can be given as\n * a percentage string, like `\"100%\"`, or as a pixel number, like `100`.\n * By default, the inner radius is controlled by the [thickness](\n * #yAxis.plotBands.thickness) option.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.innerRadius\n */\n /**\n * In a gauge chart, this option determines the outer radius of the\n * plot band that stretches along the perimeter. It can be given as\n * a percentage string, like `\"100%\"`, or as a pixel number, like `100`.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @default 100%\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.outerRadius\n */\n /**\n * In a gauge chart, this option sets the width of the plot band\n * stretching along the perimeter. It can be given as a percentage\n * string, like `\"10%\"`, or as a pixel number, like `10`. The default\n * value 10 is the same as the default [tickLength](#yAxis.tickLength),\n * thus making the plot band act as a background for the tick markers.\n *\n * @sample {highcharts} highcharts/xaxis/plotbands-gauge\n * Gauge plot band\n *\n * @type {number|string}\n * @default 10\n * @since 2.3\n * @product highcharts\n * @apioption yAxis.plotBands.thickness\n */\n /**\n * @type {Array<*>}\n * @extends xAxis.plotLines\n * @apioption yAxis.plotLines\n */\n (''); // keeps doclets above in JS file\n\n return PlotLineOrBand;\n });\n _registerModule(_modules, 'Core/Tooltip.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (F, H, R, RendererRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var format = F.format;\n var doc = H.doc;\n var distribute = R.distribute;\n var addEvent = U.addEvent,\n clamp = U.clamp,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n pick = U.pick,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * Tooltip of a chart.\n *\n * @class\n * @name Highcharts.Tooltip\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.TooltipOptions} options\n * Tooltip options.\n */\n var Tooltip = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Tooltip(chart, options) {\n /* *\n *\n * Properties\n *\n * */\n this.allowShared = true;\n this.container = void 0;\n this.crosshairs = [];\n this.distance = 0;\n this.isHidden = true;\n this.isSticky = false;\n this.now = {};\n this.options = {};\n this.outside = false;\n this.chart = chart;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * In styled mode, apply the default filter for the tooltip drop-shadow. It\n * needs to have an id specific to the chart, otherwise there will be issues\n * when one tooltip adopts the filter of a different chart, specifically one\n * where the container is hidden.\n *\n * @private\n * @function Highcharts.Tooltip#applyFilter\n */\n Tooltip.prototype.applyFilter = function () {\n var chart = this.chart;\n chart.renderer.definition({\n tagName: 'filter',\n attributes: {\n id: 'drop-shadow-' + chart.index,\n opacity: 0.5\n },\n children: [{\n tagName: 'feGaussianBlur',\n attributes: {\n 'in': 'SourceAlpha',\n stdDeviation: 1\n }\n }, {\n tagName: 'feOffset',\n attributes: {\n dx: 1,\n dy: 1\n }\n }, {\n tagName: 'feComponentTransfer',\n children: [{\n tagName: 'feFuncA',\n attributes: {\n type: 'linear',\n slope: 0.3\n }\n }]\n }, {\n tagName: 'feMerge',\n children: [{\n tagName: 'feMergeNode'\n }, {\n tagName: 'feMergeNode',\n attributes: {\n 'in': 'SourceGraphic'\n }\n }]\n }]\n });\n };\n /**\n * Build the body (lines) of the tooltip by iterating over the items and\n * returning one entry for each item, abstracting this functionality allows\n * to easily overwrite and extend it.\n *\n * @private\n * @function Highcharts.Tooltip#bodyFormatter\n */\n Tooltip.prototype.bodyFormatter = function (items) {\n return items.map(function (item) {\n var tooltipOptions = item.series.tooltipOptions;\n return (tooltipOptions[(item.point.formatPrefix || 'point') + 'Formatter'] ||\n item.point.tooltipFormatter).call(item.point, tooltipOptions[(item.point.formatPrefix || 'point') + 'Format'] || '');\n });\n };\n /**\n * Destroy the single tooltips in a split tooltip.\n * If the tooltip is active then it is not destroyed, unless forced to.\n *\n * @private\n * @function Highcharts.Tooltip#cleanSplit\n *\n * @param {boolean} [force]\n * Force destroy all tooltips.\n */\n Tooltip.prototype.cleanSplit = function (force) {\n this.chart.series.forEach(function (series) {\n var tt = series && series.tt;\n if (tt) {\n if (!tt.isActive || force) {\n series.tt = tt.destroy();\n }\n else {\n tt.isActive = false;\n }\n }\n });\n };\n /**\n * In case no user defined formatter is given, this will be used. Note that\n * the context here is an object holding point, series, x, y etc.\n *\n * @function Highcharts.Tooltip#defaultFormatter\n *\n * @param {Highcharts.Tooltip} tooltip\n *\n * @return {string|Array<string>}\n * Returns a string (single tooltip and shared)\n * or an array of strings (split tooltip)\n */\n Tooltip.prototype.defaultFormatter = function (tooltip) {\n var items = this.points || splat(this);\n var s;\n // Build the header\n s = [tooltip.tooltipFooterHeaderFormatter(items[0])];\n // build the values\n s = s.concat(tooltip.bodyFormatter(items));\n // footer\n s.push(tooltip.tooltipFooterHeaderFormatter(items[0], true));\n return s;\n };\n /**\n * Removes and destroys the tooltip and its elements.\n *\n * @function Highcharts.Tooltip#destroy\n */\n Tooltip.prototype.destroy = function () {\n // Destroy and clear local variables\n if (this.label) {\n this.label = this.label.destroy();\n }\n if (this.split && this.tt) {\n this.cleanSplit(true);\n this.tt = this.tt.destroy();\n }\n if (this.renderer) {\n this.renderer = this.renderer.destroy();\n discardElement(this.container);\n }\n U.clearTimeout(this.hideTimer);\n U.clearTimeout(this.tooltipTimeout);\n };\n /**\n * Extendable method to get the anchor position of the tooltip\n * from a point or set of points\n *\n * @private\n * @function Highcharts.Tooltip#getAnchor\n */\n Tooltip.prototype.getAnchor = function (points, mouseEvent) {\n var chart = this.chart,\n pointer = chart.pointer,\n inverted = chart.inverted,\n plotTop = chart.plotTop,\n plotLeft = chart.plotLeft;\n var ret;\n points = splat(points);\n // If reversedStacks are false the tooltip position should be taken from\n // the last point (#17948)\n if (points[0].series &&\n points[0].series.yAxis &&\n !points[0].series.yAxis.options.reversedStacks) {\n points = points.slice().reverse();\n }\n // When tooltip follows mouse, relate the position to the mouse\n if (this.followPointer && mouseEvent) {\n if (typeof mouseEvent.chartX === 'undefined') {\n mouseEvent = pointer.normalize(mouseEvent);\n }\n ret = [\n mouseEvent.chartX - plotLeft,\n mouseEvent.chartY - plotTop\n ];\n // Some series types use a specificly calculated tooltip position for\n // each point\n }\n else if (points[0].tooltipPos) {\n ret = points[0].tooltipPos;\n // Calculate the average position and adjust for axis positions\n }\n else {\n var chartX_1 = 0,\n chartY_1 = 0;\n points.forEach(function (point) {\n var pos = point.pos(true);\n if (pos) {\n chartX_1 += pos[0];\n chartY_1 += pos[1];\n }\n });\n chartX_1 /= points.length;\n chartY_1 /= points.length;\n // When shared, place the tooltip next to the mouse (#424)\n if (this.shared && points.length > 1 && mouseEvent) {\n if (inverted) {\n chartX_1 = mouseEvent.chartX;\n }\n else {\n chartY_1 = mouseEvent.chartY;\n }\n }\n // Use the average position for multiple points\n ret = [chartX_1 - plotLeft, chartY_1 - plotTop];\n }\n return ret.map(Math.round);\n };\n /**\n * Get the CSS class names for the tooltip's label. Styles the label\n * by `colorIndex` or user-defined CSS.\n *\n * @function Highcharts.Tooltip#getClassName\n *\n * @return {string}\n * The class names.\n */\n Tooltip.prototype.getClassName = function (point, isSplit, isHeader) {\n var options = this.options,\n series = point.series,\n seriesOptions = series.options;\n return [\n options.className,\n 'highcharts-label',\n isHeader && 'highcharts-tooltip-header',\n isSplit ? 'highcharts-tooltip-box' : 'highcharts-tooltip',\n !isHeader && 'highcharts-color-' + pick(point.colorIndex, series.colorIndex),\n (seriesOptions && seriesOptions.className)\n ].filter(isString).join(' ');\n };\n /**\n * Creates the Tooltip label element if it does not exist, then returns it.\n *\n * @function Highcharts.Tooltip#getLabel\n *\n * @return {Highcharts.SVGElement}\n * Tooltip label\n */\n Tooltip.prototype.getLabel = function () {\n var tooltip = this,\n styledMode = this.chart.styledMode,\n options = this.options,\n doSplit = this.split && this.allowShared,\n pointerEvents = (options.style.pointerEvents ||\n (this.shouldStickOnContact() ? 'auto' : 'none'));\n var container,\n renderer = this.chart.renderer;\n // If changing from a split tooltip to a non-split tooltip, we must\n // destroy it in order to get the SVG right. #13868.\n if (tooltip.label) {\n var wasSplit = !tooltip.label.hasClass('highcharts-label');\n if ((doSplit && !wasSplit) || (!doSplit && wasSplit)) {\n tooltip.destroy();\n }\n }\n if (!this.label) {\n if (this.outside) {\n var chartStyle = this.chart.options.chart.style,\n Renderer = RendererRegistry.getRendererType();\n /**\n * Reference to the tooltip's container, when\n * [Highcharts.Tooltip#outside] is set to true, otherwise\n * it's undefined.\n *\n * @name Highcharts.Tooltip#container\n * @type {Highcharts.HTMLDOMElement|undefined}\n */\n this.container = container = H.doc.createElement('div');\n container.className = 'highcharts-tooltip-container';\n css(container, {\n position: 'absolute',\n top: '1px',\n pointerEvents: pointerEvents,\n zIndex: Math.max(this.options.style.zIndex || 0, (chartStyle && chartStyle.zIndex || 0) + 3)\n });\n H.doc.body.appendChild(container);\n /**\n * Reference to the tooltip's renderer, when\n * [Highcharts.Tooltip#outside] is set to true, otherwise\n * it's undefined.\n *\n * @name Highcharts.Tooltip#renderer\n * @type {Highcharts.SVGRenderer|undefined}\n */\n this.renderer = renderer = new Renderer(container, 0, 0, chartStyle, void 0, void 0, renderer.styledMode);\n }\n // Create the label\n if (doSplit) {\n this.label = renderer.g('tooltip');\n }\n else {\n this.label = renderer\n .label('', 0, 0, options.shape, void 0, void 0, options.useHTML, void 0, 'tooltip')\n .attr({\n padding: options.padding,\n r: options.borderRadius\n });\n if (!styledMode) {\n this.label\n .attr({\n fill: options.backgroundColor,\n 'stroke-width': options.borderWidth\n })\n // #2301, #2657\n .css(options.style)\n .css({ pointerEvents: pointerEvents })\n .shadow(options.shadow);\n }\n }\n if (styledMode && options.shadow) {\n // Apply the drop-shadow filter\n this.applyFilter();\n this.label.attr({\n filter: 'url(#drop-shadow-' + this.chart.index + ')'\n });\n }\n // Split tooltip use updateTooltipContainer to position the tooltip\n // container.\n if (tooltip.outside && !tooltip.split) {\n var label_1 = this.label;\n var xSetter_1 = label_1.xSetter,\n ySetter_1 = label_1.ySetter;\n label_1.xSetter = function (value) {\n xSetter_1.call(label_1, tooltip.distance);\n container.style.left = value + 'px';\n };\n label_1.ySetter = function (value) {\n ySetter_1.call(label_1, tooltip.distance);\n container.style.top = value + 'px';\n };\n }\n this.label\n .attr({ zIndex: 8 })\n .add();\n }\n return this.label;\n };\n /**\n * Place the tooltip in a chart without spilling over and not covering the\n * point itself.\n *\n * @function Highcharts.Tooltip#getPosition\n *\n * @param {number} boxWidth\n * Width of the tooltip box.\n *\n * @param {number} boxHeight\n * Height of the tooltip box.\n *\n * @param {Highcharts.Point} point\n * Tooltip related point.\n *\n * @return {Highcharts.PositionObject}\n * Recommended position of the tooltip.\n */\n Tooltip.prototype.getPosition = function (boxWidth, boxHeight, point) {\n var chart = this.chart,\n distance = this.distance,\n ret = {}, \n // Don't use h if chart isn't inverted (#7242) ???\n h = (chart.inverted && point.h) || 0, // #4117 ???\n outside = this.outside,\n outerWidth = outside ?\n // substract distance to prevent scrollbars\n doc.documentElement.clientWidth - 2 * distance :\n chart.chartWidth,\n outerHeight = outside ?\n Math.max(doc.body.scrollHeight,\n doc.documentElement.scrollHeight,\n doc.body.offsetHeight,\n doc.documentElement.offsetHeight,\n doc.documentElement.clientHeight) :\n chart.chartHeight,\n chartPosition = chart.pointer.getChartPosition(),\n scaleX = function (val) { return ( // eslint-disable-line no-confusing-arrow\n val * chartPosition.scaleX); },\n scaleY = function (val) { return ( // eslint-disable-line no-confusing-arrow\n val * chartPosition.scaleY); }, \n // Build parameter arrays for firstDimension()/secondDimension()\n buildDimensionArray = function (dim) {\n var isX = dim === 'x';\n return [\n dim,\n isX ? outerWidth : outerHeight,\n isX ? boxWidth : boxHeight\n ].concat(outside ? [\n // If we are using tooltip.outside, we need to scale the\n // position to match scaling of the container in case there\n // is a transform/zoom on the container. #11329\n isX ? scaleX(boxWidth) : scaleY(boxHeight),\n isX ? chartPosition.left - distance +\n scaleX(point.plotX + chart.plotLeft) :\n chartPosition.top - distance +\n scaleY(point.plotY + chart.plotTop),\n 0,\n isX ? outerWidth : outerHeight\n ] : [\n // Not outside, no scaling is needed\n isX ? boxWidth : boxHeight,\n isX ? point.plotX + chart.plotLeft :\n point.plotY + chart.plotTop,\n isX ? chart.plotLeft : chart.plotTop,\n isX ? chart.plotLeft + chart.plotWidth :\n chart.plotTop + chart.plotHeight\n ]);\n };\n var first = buildDimensionArray('y'), second = buildDimensionArray('x'), swapped;\n // Handle negative points or reversed axis (#13780)\n var flipped = !!point.negative;\n if (!chart.polar &&\n chart.hoverSeries &&\n chart.hoverSeries.yAxis &&\n chart.hoverSeries.yAxis.reversed) {\n flipped = !flipped;\n }\n // The far side is right or bottom\n var preferFarSide = !this.followPointer &&\n pick(point.ttBelow, !chart.inverted === flipped), // #4984\n /*\n * Handle the preferred dimension. When the preferred dimension is\n * tooltip on top or bottom of the point,\n it will look for space\n * there.\n *\n * @private\n */\n firstDimension = function (dim,\n outerSize,\n innerSize,\n scaledInnerSize, // #11329\n point,\n min,\n max) {\n var scaledDist = outside ?\n (dim === 'y' ? scaleY(distance) : scaleX(distance)) :\n distance,\n scaleDiff = (innerSize - scaledInnerSize) / 2,\n roomLeft = scaledInnerSize < point - distance,\n roomRight = point + distance + scaledInnerSize < outerSize,\n alignedLeft = point - scaledDist - innerSize + scaleDiff,\n alignedRight = point + scaledDist - scaleDiff;\n if (preferFarSide && roomRight) {\n ret[dim] = alignedRight;\n }\n else if (!preferFarSide && roomLeft) {\n ret[dim] = alignedLeft;\n }\n else if (roomLeft) {\n ret[dim] = Math.min(max - scaledInnerSize, alignedLeft - h < 0 ? alignedLeft : alignedLeft - h);\n }\n else if (roomRight) {\n ret[dim] = Math.max(min, alignedRight + h + innerSize > outerSize ?\n alignedRight :\n alignedRight + h);\n }\n else {\n return false;\n }\n }, \n /*\n * Handle the secondary dimension. If the preferred dimension is\n * tooltip on top or bottom of the point, the second dimension is to\n * align the tooltip above the point, trying to align center but\n * allowing left or right align within the chart box.\n *\n * @private\n */\n secondDimension = function (dim, outerSize, innerSize, scaledInnerSize, // #11329\n point) {\n var retVal;\n // Too close to the edge, return false and swap dimensions\n if (point < distance || point > outerSize - distance) {\n retVal = false;\n // Align left/top\n }\n else if (point < innerSize / 2) {\n ret[dim] = 1;\n // Align right/bottom\n }\n else if (point > outerSize - scaledInnerSize / 2) {\n ret[dim] = outerSize - scaledInnerSize - 2;\n // Align center\n }\n else {\n ret[dim] = point - innerSize / 2;\n }\n return retVal;\n }, \n /*\n * Swap the dimensions\n */\n swap = function (count) {\n var temp = first;\n first = second;\n second = temp;\n swapped = count;\n }, run = function () {\n if (firstDimension.apply(0, first) !== false) {\n if (secondDimension.apply(0, second) === false &&\n !swapped) {\n swap(true);\n run();\n }\n }\n else if (!swapped) {\n swap(true);\n run();\n }\n else {\n ret.x = ret.y = 0;\n }\n };\n // Under these conditions, prefer the tooltip on the side of the point\n if (chart.inverted || this.len > 1) {\n swap();\n }\n run();\n return ret;\n };\n /**\n * Hides the tooltip with a fade out animation.\n *\n * @function Highcharts.Tooltip#hide\n *\n * @param {number} [delay]\n * The fade out in milliseconds. If no value is provided the value\n * of the tooltip.hideDelay option is used. A value of 0 disables\n * the fade out animation.\n */\n Tooltip.prototype.hide = function (delay) {\n var tooltip = this;\n // disallow duplicate timers (#1728, #1766)\n U.clearTimeout(this.hideTimer);\n delay = pick(delay, this.options.hideDelay);\n if (!this.isHidden) {\n this.hideTimer = syncTimeout(function () {\n // If there is a delay, do fadeOut with the default duration. If\n // the hideDelay is 0, we assume no animation is wanted, so we\n // pass 0 duration. #12994.\n tooltip.getLabel().fadeOut(delay ? void 0 : delay);\n tooltip.isHidden = true;\n }, delay);\n }\n };\n /**\n * @private\n * @function Highcharts.Tooltip#init\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.TooltipOptions} options\n * Tooltip options.\n */\n Tooltip.prototype.init = function (chart, options) {\n /**\n * Chart of the tooltip.\n *\n * @readonly\n * @name Highcharts.Tooltip#chart\n * @type {Highcharts.Chart}\n */\n this.chart = chart;\n /**\n * Used tooltip options.\n *\n * @readonly\n * @name Highcharts.Tooltip#options\n * @type {Highcharts.TooltipOptions}\n */\n this.options = options;\n /**\n * List of crosshairs.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#crosshairs\n * @type {Array<null>}\n */\n this.crosshairs = [];\n /**\n * Current values of x and y when animating.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#now\n * @type {Highcharts.PositionObject}\n */\n this.now = { x: 0, y: 0 };\n /**\n * Tooltips are initially hidden.\n *\n * @private\n * @readonly\n * @name Highcharts.Tooltip#isHidden\n * @type {boolean}\n */\n this.isHidden = true;\n /**\n * True, if the tooltip is split into one label per series, with the\n * header close to the axis.\n *\n * @readonly\n * @name Highcharts.Tooltip#split\n * @type {boolean|undefined}\n */\n this.split = options.split && !chart.inverted && !chart.polar;\n /**\n * When the tooltip is shared, the entire plot area will capture mouse\n * movement or touch events.\n *\n * @readonly\n * @name Highcharts.Tooltip#shared\n * @type {boolean|undefined}\n */\n this.shared = options.shared || this.split;\n /**\n * Whether to allow the tooltip to render outside the chart's SVG\n * element box. By default (false), the tooltip is rendered within the\n * chart's SVG element, which results in the tooltip being aligned\n * inside the chart area.\n *\n * @readonly\n * @name Highcharts.Tooltip#outside\n * @type {boolean}\n *\n * @todo\n * Split tooltip does not support outside in the first iteration. Should\n * not be too complicated to implement.\n */\n this.outside = pick(options.outside, Boolean(chart.scrollablePixelsX || chart.scrollablePixelsY));\n };\n Tooltip.prototype.shouldStickOnContact = function (pointerEvent) {\n return !!(!this.followPointer &&\n this.options.stickOnContact &&\n (!pointerEvent || this.chart.pointer.inClass(pointerEvent.target, 'highcharts-tooltip')));\n };\n /**\n * Moves the tooltip with a soft animation to a new position.\n *\n * @private\n * @function Highcharts.Tooltip#move\n *\n * @param {number} x\n *\n * @param {number} y\n *\n * @param {number} anchorX\n *\n * @param {number} anchorY\n */\n Tooltip.prototype.move = function (x, y, anchorX, anchorY) {\n var tooltip = this,\n now = tooltip.now,\n animate = tooltip.options.animation !== false &&\n !tooltip.isHidden &&\n // When we get close to the target position, abort animation and\n // land on the right place (#3056)\n (Math.abs(x - now.x) > 1 || Math.abs(y - now.y) > 1),\n skipAnchor = tooltip.followPointer || tooltip.len > 1;\n // Get intermediate values for animation\n extend(now, {\n x: animate ? (2 * now.x + x) / 3 : x,\n y: animate ? (now.y + y) / 2 : y,\n anchorX: skipAnchor ?\n void 0 :\n animate ? (2 * now.anchorX + anchorX) / 3 : anchorX,\n anchorY: skipAnchor ?\n void 0 :\n animate ? (now.anchorY + anchorY) / 2 : anchorY\n });\n // Move to the intermediate value\n tooltip.getLabel().attr(now);\n tooltip.drawTracker();\n // Run on next tick of the mouse tracker\n if (animate) {\n // Never allow two timeouts\n U.clearTimeout(this.tooltipTimeout);\n // Set the fixed interval ticking for the smooth tooltip\n this.tooltipTimeout = setTimeout(function () {\n // The interval function may still be running during destroy,\n // so check that the chart is really there before calling.\n if (tooltip) {\n tooltip.move(x, y, anchorX, anchorY);\n }\n }, 32);\n }\n };\n /**\n * Refresh the tooltip's text and position.\n *\n * @function Highcharts.Tooltip#refresh\n *\n * @param {Highcharts.Point|Array<Highcharts.Point>} pointOrPoints\n * Either a point or an array of points.\n *\n * @param {Highcharts.PointerEventObject} [mouseEvent]\n * Mouse event, that is responsible for the refresh and should be\n * used for the tooltip update.\n */\n Tooltip.prototype.refresh = function (pointOrPoints, mouseEvent) {\n var tooltip = this,\n chart = this.chart,\n options = tooltip.options,\n pointer = chart.pointer,\n points = splat(pointOrPoints),\n point = points[0],\n pointConfig = [],\n formatter = options.formatter || tooltip.defaultFormatter,\n shared = tooltip.shared,\n styledMode = chart.styledMode;\n var textConfig = {};\n if (!options.enabled || !point.series) { // #16820\n return;\n }\n U.clearTimeout(this.hideTimer);\n // A switch saying if this specific tooltip configuration allows shared\n // or split modes\n tooltip.allowShared = !(!isArray(pointOrPoints) &&\n pointOrPoints.series &&\n pointOrPoints.series.noSharedTooltip);\n // get the reference point coordinates (pie charts use tooltipPos)\n tooltip.followPointer = (!tooltip.split && point.series.tooltipOptions.followPointer);\n var anchor = tooltip.getAnchor(pointOrPoints,\n mouseEvent),\n x = anchor[0],\n y = anchor[1];\n // shared tooltip, array is sent over\n if (shared && tooltip.allowShared) {\n pointer.applyInactiveState(points);\n // Now set hover state for the choosen ones:\n points.forEach(function (item) {\n item.setState('hover');\n pointConfig.push(item.getLabelConfig());\n });\n textConfig = {\n x: point.category,\n y: point.y\n };\n textConfig.points = pointConfig;\n // single point tooltip\n }\n else {\n textConfig = point.getLabelConfig();\n }\n this.len = pointConfig.length; // #6128\n var text = formatter.call(textConfig,\n tooltip);\n // register the current series\n var currentSeries = point.series;\n this.distance = pick(currentSeries.tooltipOptions.distance, 16);\n // update the inner HTML\n if (text === false) {\n this.hide();\n }\n else {\n // update text\n if (tooltip.split && tooltip.allowShared) { // #13868\n this.renderSplit(text, points);\n }\n else {\n var checkX_1 = x;\n var checkY_1 = y;\n if (mouseEvent && pointer.isDirectTouch) {\n checkX_1 = mouseEvent.chartX - chart.plotLeft;\n checkY_1 = mouseEvent.chartY - chart.plotTop;\n }\n // #11493, #13095\n if (chart.polar ||\n currentSeries.options.clip === false ||\n points.some(function (p) {\n return pointer.isDirectTouch || // ##17929\n p.series.shouldShowTooltip(checkX_1, checkY_1);\n })) {\n var label = tooltip.getLabel();\n // Prevent the tooltip from flowing over the chart box\n // (#6659)\n if (!options.style.width || styledMode) {\n label.css({\n width: chart.spacingBox.width + 'px'\n });\n }\n label.attr({\n text: text && text.join ?\n text.join('') :\n text\n });\n // Set the stroke color of the box to reflect the point\n label.addClass(tooltip.getClassName(point), true);\n if (!styledMode) {\n label.attr({\n stroke: (options.borderColor ||\n point.color ||\n currentSeries.color ||\n \"#666666\" /* Palette.neutralColor60 */)\n });\n }\n tooltip.updatePosition({\n plotX: x,\n plotY: y,\n negative: point.negative,\n ttBelow: point.ttBelow,\n h: anchor[2] || 0\n });\n }\n else {\n tooltip.hide();\n return;\n }\n }\n // show it\n if (tooltip.isHidden && tooltip.label) {\n tooltip.label.attr({\n opacity: 1\n }).show();\n }\n tooltip.isHidden = false;\n }\n fireEvent(this, 'refresh');\n };\n /**\n * Render the split tooltip. Loops over each point's text and adds\n * a label next to the point, then uses the distribute function to\n * find best non-overlapping positions.\n *\n * @private\n * @function Highcharts.Tooltip#renderSplit\n *\n * @param {string|Array<(boolean|string)>} labels\n *\n * @param {Array<Highcharts.Point>} points\n */\n Tooltip.prototype.renderSplit = function (labels, points) {\n var tooltip = this;\n var chart = tooltip.chart,\n _a = tooltip.chart,\n chartWidth = _a.chartWidth,\n chartHeight = _a.chartHeight,\n plotHeight = _a.plotHeight,\n plotLeft = _a.plotLeft,\n plotTop = _a.plotTop,\n pointer = _a.pointer,\n _b = _a.scrollablePixelsY,\n scrollablePixelsY = _b === void 0 ? 0 : _b,\n scrollablePixelsX = _a.scrollablePixelsX,\n _c = _a.scrollingContainer,\n _d = _c === void 0 ? { scrollLeft: 0,\n scrollTop: 0 } : _c,\n scrollLeft = _d.scrollLeft,\n scrollTop = _d.scrollTop,\n styledMode = _a.styledMode,\n distance = tooltip.distance,\n options = tooltip.options,\n positioner = tooltip.options.positioner;\n // The area which the tooltip should be limited to. Limit to scrollable\n // plot area if enabled, otherwise limit to the chart container. If\n // outside is true it should be the whole viewport\n var bounds = (tooltip.outside &&\n typeof scrollablePixelsX !== 'number') ?\n doc.documentElement.getBoundingClientRect() : {\n left: scrollLeft,\n right: scrollLeft + chartWidth,\n top: scrollTop,\n bottom: scrollTop + chartHeight\n };\n var tooltipLabel = tooltip.getLabel();\n var ren = this.renderer || chart.renderer;\n var headerTop = Boolean(chart.xAxis[0] && chart.xAxis[0].opposite);\n var _e = pointer.getChartPosition(),\n chartLeft = _e.left,\n chartTop = _e.top;\n var distributionBoxTop = plotTop + scrollTop;\n var headerHeight = 0;\n var adjustedPlotHeight = plotHeight - scrollablePixelsY;\n /**\n * Calculates the anchor position for the partial tooltip\n *\n * @private\n * @param {Highcharts.Point} point The point related to the tooltip\n * @return {Object} Returns an object with anchorX and anchorY\n */\n function getAnchor(point) {\n var isHeader = point.isHeader,\n _a = point.plotX,\n plotX = _a === void 0 ? 0 : _a,\n _b = point.plotY,\n plotY = _b === void 0 ? 0 : _b,\n series = point.series;\n var anchorX;\n var anchorY;\n if (isHeader) {\n // Set anchorX to plotX\n anchorX = plotLeft + plotX;\n // Set anchorY to center of visible plot area.\n anchorY = plotTop + plotHeight / 2;\n }\n else {\n var xAxis = series.xAxis,\n yAxis = series.yAxis;\n // Set anchorX to plotX. Limit to within xAxis.\n anchorX = xAxis.pos + clamp(plotX, -distance, xAxis.len + distance);\n // Set anchorY, limit to the scrollable plot area\n if (series.shouldShowTooltip(0, yAxis.pos - plotTop + plotY, {\n ignoreX: true\n })) {\n anchorY = yAxis.pos + plotY;\n }\n }\n // Limit values to plot area\n anchorX = clamp(anchorX, bounds.left - distance, bounds.right + distance);\n return { anchorX: anchorX, anchorY: anchorY };\n }\n /**\n * Calculates the position of the partial tooltip\n *\n * @private\n * @param {number} anchorX\n * The partial tooltip anchor x position\n *\n * @param {number} anchorY\n * The partial tooltip anchor y position\n *\n * @param {boolean|undefined} isHeader\n * Whether the partial tooltip is a header\n *\n * @param {number} boxWidth\n * Width of the partial tooltip\n *\n * @return {Highcharts.PositionObject}\n * Returns the partial tooltip x and y position\n */\n function defaultPositioner(anchorX, anchorY, isHeader, boxWidth, alignedLeft) {\n if (alignedLeft === void 0) { alignedLeft = true; }\n var y;\n var x;\n if (isHeader) {\n y = headerTop ? 0 : adjustedPlotHeight;\n x = clamp(anchorX - (boxWidth / 2), bounds.left, bounds.right - boxWidth - (tooltip.outside ? chartLeft : 0));\n }\n else {\n y = anchorY - distributionBoxTop;\n x = alignedLeft ?\n anchorX - boxWidth - distance :\n anchorX + distance;\n x = clamp(x, alignedLeft ? x : bounds.left, bounds.right);\n }\n // NOTE: y is relative to distributionBoxTop\n return { x: x, y: y };\n }\n /**\n * Updates the attributes and styling of the partial tooltip. Creates a\n * new partial tooltip if it does not exists.\n *\n * @private\n * @param {Highcharts.SVGElement|undefined} partialTooltip\n * The partial tooltip to update\n * @param {Highcharts.Point} point\n * The point related to the partial tooltip\n * @param {boolean|string} str The text for the partial tooltip\n * @return {Highcharts.SVGElement} Returns the updated partial tooltip\n */\n function updatePartialTooltip(partialTooltip, point, str) {\n var tt = partialTooltip;\n var isHeader = point.isHeader,\n series = point.series;\n if (!tt) {\n var attribs = {\n padding: options.padding,\n r: options.borderRadius\n };\n if (!styledMode) {\n attribs.fill = options.backgroundColor;\n attribs['stroke-width'] = options.borderWidth;\n }\n tt = ren\n .label('', 0, 0, (options[isHeader ? 'headerShape' : 'shape']), void 0, void 0, options.useHTML)\n .addClass(tooltip.getClassName(point, true, isHeader))\n .attr(attribs)\n .add(tooltipLabel);\n }\n tt.isActive = true;\n tt.attr({\n text: str\n });\n if (!styledMode) {\n tt.css(options.style)\n .shadow(options.shadow)\n .attr({\n stroke: (options.borderColor ||\n point.color ||\n series.color ||\n \"#333333\" /* Palette.neutralColor80 */)\n });\n }\n return tt;\n }\n // Graceful degradation for legacy formatters\n if (isString(labels)) {\n labels = [false, labels];\n }\n // Create the individual labels for header and points, ignore footer\n var boxes = labels.slice(0,\n points.length + 1).reduce(function (boxes,\n str,\n i) {\n if (str !== false && str !== '') {\n var point = (points[i - 1] ||\n {\n // Item 0 is the header. Instead of this, we could also\n // use the crosshair label\n isHeader: true,\n plotX: points[0].plotX,\n plotY: plotHeight,\n series: {}\n });\n var isHeader = point.isHeader;\n // Store the tooltip label referance on the series\n var owner = isHeader ? tooltip : point.series;\n var tt = owner.tt = updatePartialTooltip(owner.tt,\n point,\n str.toString());\n // Get X position now, so we can move all to the other side in\n // case of overflow\n var bBox = tt.getBBox();\n var boxWidth = bBox.width + tt.strokeWidth();\n if (isHeader) {\n headerHeight = bBox.height;\n adjustedPlotHeight += headerHeight;\n if (headerTop) {\n distributionBoxTop -= headerHeight;\n }\n }\n var _a = getAnchor(point),\n anchorX = _a.anchorX,\n anchorY = _a.anchorY;\n if (typeof anchorY === 'number') {\n var size = bBox.height + 1;\n var boxPosition = (positioner ?\n positioner.call(tooltip,\n boxWidth,\n size,\n point) :\n defaultPositioner(anchorX,\n anchorY,\n isHeader,\n boxWidth));\n boxes.push({\n // 0-align to the top, 1-align to the bottom\n align: positioner ? 0 : void 0,\n anchorX: anchorX,\n anchorY: anchorY,\n boxWidth: boxWidth,\n point: point,\n rank: pick(boxPosition.rank, isHeader ? 1 : 0),\n size: size,\n target: boxPosition.y,\n tt: tt,\n x: boxPosition.x\n });\n }\n else {\n // Hide tooltips which anchorY is outside the visible plot\n // area\n tt.isActive = false;\n }\n }\n return boxes;\n }, []);\n // Realign the tooltips towards the right if there is not enough space\n // to the left and there is space to to the right\n if (!positioner && boxes.some(function (box) {\n // Always realign if the beginning of a label is outside bounds\n var outside = tooltip.outside;\n var boxStart = (outside ? chartLeft : 0) + box.anchorX;\n if (boxStart < bounds.left &&\n boxStart + box.boxWidth < bounds.right) {\n return true;\n }\n // Otherwise, check if there is more space available to the right\n return boxStart < (chartLeft - bounds.left) + box.boxWidth &&\n bounds.right - boxStart > boxStart;\n })) {\n boxes = boxes.map(function (box) {\n var _a = defaultPositioner(box.anchorX,\n box.anchorY,\n box.point.isHeader,\n box.boxWidth,\n false),\n x = _a.x,\n y = _a.y;\n return extend(box, {\n target: y,\n x: x\n });\n });\n }\n // Clean previous run (for missing points)\n tooltip.cleanSplit();\n // Distribute and put in place\n distribute(boxes, adjustedPlotHeight);\n var boxExtremes = {\n left: chartLeft,\n right: chartLeft\n };\n // Get the extremes from series tooltips\n boxes.forEach(function (box) {\n var x = box.x,\n boxWidth = box.boxWidth,\n isHeader = box.isHeader;\n if (!isHeader) {\n if (tooltip.outside && chartLeft + x < boxExtremes.left) {\n boxExtremes.left = chartLeft + x;\n }\n if (!isHeader &&\n tooltip.outside &&\n boxExtremes.left + boxWidth > boxExtremes.right) {\n boxExtremes.right = chartLeft + x;\n }\n }\n });\n boxes.forEach(function (box) {\n var x = box.x,\n anchorX = box.anchorX,\n anchorY = box.anchorY,\n pos = box.pos,\n isHeader = box.point.isHeader;\n var attributes = {\n visibility: typeof pos === 'undefined' ? 'hidden' : 'inherit',\n x: x,\n /* NOTE: y should equal pos to be consistent with !split\n * tooltip,\n but is currently relative to plotTop. Is left as is\n * to avoid breaking change. Remove distributionBoxTop to make\n * it consistent.\n */\n y: (pos || 0) + distributionBoxTop,\n anchorX: anchorX,\n anchorY: anchorY\n };\n // Handle left-aligned tooltips overflowing the chart area\n if (tooltip.outside && x < anchorX) {\n var offset = chartLeft - boxExtremes.left;\n // Skip this if there is no overflow\n if (offset > 0) {\n if (!isHeader) {\n attributes.x = x + offset;\n attributes.anchorX = anchorX + offset;\n }\n if (isHeader) {\n attributes.x = (boxExtremes.right - boxExtremes.left) / 2;\n attributes.anchorX = anchorX + offset;\n }\n }\n }\n // Put the label in place\n box.tt.attr(attributes);\n });\n /* If we have a seperate tooltip container, then update the necessary\n * container properties.\n * Test that tooltip has its own container and renderer before executing\n * the operation.\n */\n var container = tooltip.container,\n outside = tooltip.outside,\n renderer = tooltip.renderer;\n if (outside && container && renderer) {\n // Set container size to fit the bounds\n var _f = tooltipLabel.getBBox(),\n width = _f.width,\n height = _f.height,\n x = _f.x,\n y = _f.y;\n renderer.setSize(width + x, height + y, false);\n // Position the tooltip container to the chart container\n container.style.left = boxExtremes.left + 'px';\n container.style.top = chartTop + 'px';\n }\n };\n /**\n * If the `stickOnContact` option is active, this will add a tracker shape.\n *\n * @private\n * @function Highcharts.Tooltip#drawTracker\n */\n Tooltip.prototype.drawTracker = function () {\n var tooltip = this;\n if (!this.shouldStickOnContact()) {\n if (tooltip.tracker) {\n tooltip.tracker.destroy();\n }\n return;\n }\n var chart = tooltip.chart;\n var label = tooltip.label;\n var points = tooltip.shared ? chart.hoverPoints : chart.hoverPoint;\n if (!label || !points) {\n return;\n }\n var box = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n // Combine anchor and tooltip\n var anchorPos = this.getAnchor(points);\n var labelBBox = label.getBBox();\n anchorPos[0] += chart.plotLeft - label.translateX;\n anchorPos[1] += chart.plotTop - label.translateY;\n // When the mouse pointer is between the anchor point and the label,\n // the label should stick.\n box.x = Math.min(0, anchorPos[0]);\n box.y = Math.min(0, anchorPos[1]);\n box.width = (anchorPos[0] < 0 ?\n Math.max(Math.abs(anchorPos[0]), (labelBBox.width - anchorPos[0])) :\n Math.max(Math.abs(anchorPos[0]), labelBBox.width));\n box.height = (anchorPos[1] < 0 ?\n Math.max(Math.abs(anchorPos[1]), (labelBBox.height - Math.abs(anchorPos[1]))) :\n Math.max(Math.abs(anchorPos[1]), labelBBox.height));\n if (tooltip.tracker) {\n tooltip.tracker.attr(box);\n }\n else {\n tooltip.tracker = label.renderer\n .rect(box)\n .addClass('highcharts-tracker')\n .add(label);\n if (!chart.styledMode) {\n tooltip.tracker.attr({\n fill: 'rgba(0,0,0,0)'\n });\n }\n }\n };\n /**\n * @private\n */\n Tooltip.prototype.styledModeFormat = function (formatString) {\n return formatString\n .replace('style=\"font-size: 10px\"', 'class=\"highcharts-header\"')\n .replace(/style=\"color:{(point|series)\\.color}\"/g, 'class=\"highcharts-color-{$1.colorIndex} ' +\n '{series.options.className} ' +\n '{point.options.className}\"');\n };\n /**\n * Format the footer/header of the tooltip\n * #3397: abstraction to enable formatting of footer and header\n *\n * @private\n * @function Highcharts.Tooltip#tooltipFooterHeaderFormatter\n */\n Tooltip.prototype.tooltipFooterHeaderFormatter = function (labelConfig, isFooter) {\n var series = labelConfig.series,\n tooltipOptions = series.tooltipOptions,\n xAxis = series.xAxis,\n dateTime = xAxis && xAxis.dateTime,\n e = {\n isFooter: isFooter,\n labelConfig: labelConfig\n };\n var xDateFormat = tooltipOptions.xDateFormat,\n formatString = tooltipOptions[isFooter ? 'footerFormat' : 'headerFormat'];\n fireEvent(this, 'headerFormatter', e, function (e) {\n // Guess the best date format based on the closest point distance\n // (#568, #3418)\n if (dateTime && !xDateFormat && isNumber(labelConfig.key)) {\n xDateFormat = dateTime.getXDateFormat(labelConfig.key, tooltipOptions.dateTimeLabelFormats);\n }\n // Insert the footer date format if any\n if (dateTime && xDateFormat) {\n ((labelConfig.point && labelConfig.point.tooltipDateKeys) ||\n ['key']).forEach(function (key) {\n formatString = formatString.replace('{point.' + key + '}', '{point.' + key + ':' + xDateFormat + '}');\n });\n }\n // Replace default header style with class name\n if (series.chart.styledMode) {\n formatString = this.styledModeFormat(formatString);\n }\n e.text = format(formatString, {\n point: labelConfig,\n series: series\n }, this.chart);\n });\n return e.text;\n };\n /**\n * Updates the tooltip with the provided tooltip options.\n *\n * @function Highcharts.Tooltip#update\n *\n * @param {Highcharts.TooltipOptions} options\n * The tooltip options to update.\n */\n Tooltip.prototype.update = function (options) {\n this.destroy();\n // Update user options (#6218)\n merge(true, this.chart.options.tooltip.userOptions, options);\n this.init(this.chart, merge(true, this.options, options));\n };\n /**\n * Find the new position and perform the move\n *\n * @private\n * @function Highcharts.Tooltip#updatePosition\n *\n * @param {Highcharts.Point} point\n */\n Tooltip.prototype.updatePosition = function (point) {\n var _a = this,\n chart = _a.chart,\n distance = _a.distance,\n options = _a.options,\n pointer = chart.pointer,\n label = this.getLabel(), \n // Needed for outside: true (#11688)\n _b = pointer.getChartPosition(),\n left = _b.left,\n top = _b.top,\n scaleX = _b.scaleX,\n scaleY = _b.scaleY,\n pos = (options.positioner || this.getPosition).call(this,\n label.width,\n label.height,\n point);\n var anchorX = (point.plotX || 0) + chart.plotLeft,\n anchorY = (point.plotY || 0) + chart.plotTop,\n pad;\n // Set the renderer size dynamically to prevent document size to change\n if (this.outside) {\n // Corrects positions, occurs with tooltip positioner (#16944)\n if (options.positioner) {\n pos.x += left - distance;\n pos.y += top - distance;\n }\n pad = options.borderWidth + 2 * distance;\n this.renderer.setSize(label.width + pad, label.height + pad, false);\n // Anchor and tooltip container need scaling if chart container has\n // scale transform/css zoom. #11329.\n if (scaleX !== 1 || scaleY !== 1) {\n css(this.container, {\n transform: \"scale(\".concat(scaleX, \", \").concat(scaleY, \")\")\n });\n anchorX *= scaleX;\n anchorY *= scaleY;\n }\n anchorX += left - pos.x;\n anchorY += top - pos.y;\n }\n // do the move\n this.move(Math.round(pos.x), Math.round(pos.y || 0), // can be undefined (#3977)\n anchorX, anchorY);\n };\n return Tooltip;\n }());\n /* *\n *\n * Default export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback function to format the text of the tooltip from scratch.\n *\n * In case of single or shared tooltips, a string should be be returned. In case\n * of splitted tooltips, it should return an array where the first item is the\n * header, and subsequent items are mapped to the points. Return `false` to\n * disable tooltip for a specific point on series.\n *\n * @callback Highcharts.TooltipFormatterCallbackFunction\n *\n * @param {Highcharts.TooltipFormatterContextObject} this\n * Context to format\n *\n * @param {Highcharts.Tooltip} tooltip\n * The tooltip instance\n *\n * @return {false|string|Array<(string|null|undefined)>|null|undefined}\n * Formatted text or false\n */\n /**\n * Configuration for the tooltip formatters.\n *\n * @interface Highcharts.TooltipFormatterContextObject\n * @extends Highcharts.PointLabelObject\n */ /**\n * Array of points in shared tooltips.\n * @name Highcharts.TooltipFormatterContextObject#points\n * @type {Array<Highcharts.TooltipFormatterContextObject>|undefined}\n */\n /**\n * A callback function to place the tooltip in a specific position.\n *\n * @callback Highcharts.TooltipPositionerCallbackFunction\n *\n * @param {Highcharts.Tooltip} this\n * Tooltip context of the callback.\n *\n * @param {number} labelWidth\n * Width of the tooltip.\n *\n * @param {number} labelHeight\n * Height of the tooltip.\n *\n * @param {Highcharts.TooltipPositionerPointObject} point\n * Point information for positioning a tooltip.\n *\n * @return {Highcharts.PositionObject}\n * New position for the tooltip.\n */\n /**\n * Point information for positioning a tooltip.\n *\n * @interface Highcharts.TooltipPositionerPointObject\n * @extends Highcharts.Point\n */ /**\n * If `tooltip.split` option is enabled and positioner is called for each of the\n * boxes separately, this property indicates the call on the xAxis header, which\n * is not a point itself.\n * @name Highcharts.TooltipPositionerPointObject#isHeader\n * @type {boolean}\n */ /**\n * The reference point relative to the plot area. Add chart.plotLeft to get the\n * full coordinates.\n * @name Highcharts.TooltipPositionerPointObject#plotX\n * @type {number}\n */ /**\n * The reference point relative to the plot area. Add chart.plotTop to get the\n * full coordinates.\n * @name Highcharts.TooltipPositionerPointObject#plotY\n * @type {number}\n */\n /**\n * @typedef {\"callout\"|\"circle\"|\"square\"} Highcharts.TooltipShapeValue\n */\n ''; // keeps doclets above in JS file\n\n return Tooltip;\n });\n _registerModule(_modules, 'Core/Series/Point.js', [_modules['Core/Renderer/HTML/AST.js'], _modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Defaults.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (AST, A, D, F, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject;\n var defaultOptions = D.defaultOptions;\n var format = F.format;\n var addEvent = U.addEvent,\n defined = U.defined,\n erase = U.erase,\n extend = U.extend,\n fireEvent = U.fireEvent,\n getNestedProperty = U.getNestedProperty,\n isArray = U.isArray,\n isFunction = U.isFunction,\n isNumber = U.isNumber,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n syncTimeout = U.syncTimeout,\n removeEvent = U.removeEvent,\n uniqueKey = U.uniqueKey;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /* *\n *\n * Class\n *\n * */\n /**\n * The Point object. The point objects are generated from the `series.data`\n * configuration objects or raw numbers. They can be accessed from the\n * `Series.points` array. Other ways to instantiate points are through {@link\n * Highcharts.Series#addPoint} or {@link Highcharts.Series#setData}.\n *\n * @class\n * @name Highcharts.Point\n */\n var Point = /** @class */ (function () {\n function Point() {\n /* *\n *\n * Properties\n *\n * */\n /**\n * For categorized axes this property holds the category name for the\n * point. For other axes it holds the X value.\n *\n * @name Highcharts.Point#category\n * @type {number|string}\n */\n this.category = void 0;\n this.formatPrefix = 'point';\n this.id = void 0;\n this.isNull = false;\n /**\n * The name of the point. The name can be given as the first position of the\n * point configuration array, or as a `name` property in the configuration:\n *\n * @example\n * // Array config\n * data: [\n * ['John', 1],\n * ['Jane', 2]\n * ]\n *\n * // Object config\n * data: [{\n * name: 'John',\n * y: 1\n * }, {\n * name: 'Jane',\n * y: 2\n * }]\n *\n * @name Highcharts.Point#name\n * @type {string}\n */\n this.name = void 0;\n /**\n * The point's options as applied in the initial configuration, or\n * extended through `Point.update`.\n *\n * In TypeScript you have to extend `PointOptionsObject` via an\n * additional interface to allow custom data options:\n *\n * ```\n * declare interface PointOptionsObject {\n * customProperty: string;\n * }\n * ```\n *\n * @name Highcharts.Point#options\n * @type {Highcharts.PointOptionsObject}\n */\n this.options = void 0;\n /**\n * The percentage for points in a stacked series or pies.\n *\n * @name Highcharts.Point#percentage\n * @type {number|undefined}\n */\n this.percentage = void 0;\n this.selected = false;\n /**\n * The series object associated with the point.\n *\n * @name Highcharts.Point#series\n * @type {Highcharts.Series}\n */\n this.series = void 0;\n /**\n * The attributes of the rendered SVG shape like in `column` or `pie`\n * series.\n *\n * @readonly\n * @name Highcharts.Point#shapeArgs\n * @type {Readonly<Highcharts.SVGAttributes>|undefined}\n */\n this.shapeArgs = void 0;\n /**\n * The total of values in either a stack for stacked series, or a pie in a\n * pie series.\n *\n * @name Highcharts.Point#total\n * @type {number|undefined}\n */\n this.total = void 0;\n /**\n * For certain series types, like pie charts, where individual points can\n * be shown or hidden.\n *\n * @name Highcharts.Point#visible\n * @type {boolean}\n * @default true\n */\n this.visible = true;\n this.x = void 0;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Animate SVG elements associated with the point.\n *\n * @private\n * @function Highcharts.Point#animateBeforeDestroy\n */\n Point.prototype.animateBeforeDestroy = function () {\n var point = this,\n animateParams = { x: point.startXPos,\n opacity: 0 },\n graphicalProps = point.getGraphicalProps();\n graphicalProps.singular.forEach(function (prop) {\n var isDataLabel = prop === 'dataLabel';\n point[prop] = point[prop].animate(isDataLabel ? {\n x: point[prop].startXPos,\n y: point[prop].startYPos,\n opacity: 0\n } : animateParams);\n });\n graphicalProps.plural.forEach(function (plural) {\n point[plural].forEach(function (item) {\n if (item.element) {\n item.animate(extend({ x: point.startXPos }, (item.startYPos ? {\n x: item.startXPos,\n y: item.startYPos\n } : {})));\n }\n });\n });\n };\n /**\n * Apply the options containing the x and y data and possible some extra\n * properties. Called on point init or from point.update.\n *\n * @private\n * @function Highcharts.Point#applyOptions\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options as defined in series.data.\n *\n * @param {number} [x]\n * Optionally, the x value.\n *\n * @return {Highcharts.Point}\n * The Point instance.\n */\n Point.prototype.applyOptions = function (options, x) {\n var point = this,\n series = point.series,\n pointValKey = series.options.pointValKey || series.pointValKey;\n options = Point.prototype.optionsToObject.call(this, options);\n // copy options directly to point\n extend(point, options);\n point.options = point.options ?\n extend(point.options, options) :\n options;\n // Since options are copied into the Point instance, some accidental\n // options must be shielded (#5681)\n if (options.group) {\n delete point.group;\n }\n if (options.dataLabels) {\n delete point.dataLabels;\n }\n /**\n * The y value of the point.\n * @name Highcharts.Point#y\n * @type {number|undefined}\n */\n // For higher dimension series types. For instance, for ranges, point.y\n // is mapped to point.low.\n if (pointValKey) {\n point.y = Point.prototype.getNestedProperty.call(point, pointValKey);\n }\n point.isNull = this.isValid && !this.isValid();\n point.formatPrefix = point.isNull ? 'null' : 'point'; // #9233, #10874\n // The point is initially selected by options (#5777)\n if (point.selected) {\n point.state = 'select';\n }\n /**\n * The x value of the point.\n * @name Highcharts.Point#x\n * @type {number}\n */\n // If no x is set by now, get auto incremented value. All points must\n // have an x value, however the y value can be null to create a gap in\n // the series\n if ('name' in point &&\n typeof x === 'undefined' &&\n series.xAxis &&\n series.xAxis.hasNames) {\n point.x = series.xAxis.nameToX(point);\n }\n if (typeof point.x === 'undefined' && series) {\n if (typeof x === 'undefined') {\n point.x = series.autoIncrement();\n }\n else {\n point.x = x;\n }\n }\n else if (isNumber(options.x) && series.options.relativeXValue) {\n point.x = series.autoIncrement(options.x);\n }\n return point;\n };\n /**\n * Destroy a point to clear memory. Its reference still stays in\n * `series.data`.\n *\n * @private\n * @function Highcharts.Point#destroy\n */\n Point.prototype.destroy = function () {\n var point = this,\n series = point.series,\n chart = series.chart,\n dataSorting = series.options.dataSorting,\n hoverPoints = chart.hoverPoints,\n globalAnimation = point.series.chart.renderer.globalAnimation,\n animation = animObject(globalAnimation);\n var prop;\n /**\n * Allow to call after animation.\n * @private\n */\n function destroyPoint() {\n // Remove all events and elements\n if (point.graphic ||\n point.graphics ||\n point.dataLabel ||\n point.dataLabels) {\n removeEvent(point);\n point.destroyElements();\n }\n for (prop in point) { // eslint-disable-line guard-for-in\n point[prop] = null;\n }\n }\n if (point.legendItem) {\n // pies have legend items\n chart.legend.destroyItem(point);\n }\n if (hoverPoints) {\n point.setState();\n erase(hoverPoints, point);\n if (!hoverPoints.length) {\n chart.hoverPoints = null;\n }\n }\n if (point === chart.hoverPoint) {\n point.onMouseOut();\n }\n // Remove properties after animation\n if (!dataSorting || !dataSorting.enabled) {\n destroyPoint();\n }\n else {\n this.animateBeforeDestroy();\n syncTimeout(destroyPoint, animation.duration);\n }\n chart.pointCount--;\n };\n /**\n * Destroy SVG elements associated with the point.\n *\n * @private\n * @function Highcharts.Point#destroyElements\n * @param {Highcharts.Dictionary<number>} [kinds]\n */\n Point.prototype.destroyElements = function (kinds) {\n var point = this,\n props = point.getGraphicalProps(kinds);\n props.singular.forEach(function (prop) {\n point[prop] = point[prop].destroy();\n });\n props.plural.forEach(function (plural) {\n point[plural].forEach(function (item) {\n if (item && item.element) {\n item.destroy();\n }\n });\n delete point[plural];\n });\n };\n /**\n * Fire an event on the Point object.\n *\n * @private\n * @function Highcharts.Point#firePointEvent\n *\n * @param {string} eventType\n * Type of the event.\n *\n * @param {Highcharts.Dictionary<any>|Event} [eventArgs]\n * Additional event arguments.\n *\n * @param {Highcharts.EventCallbackFunction<Highcharts.Point>|Function} [defaultFunction]\n * Default event handler.\n *\n * @emits Highcharts.Point#event:*\n */\n Point.prototype.firePointEvent = function (eventType, eventArgs, defaultFunction) {\n var point = this,\n series = this.series,\n seriesOptions = series.options;\n // load event handlers on demand to save time on mouseover/out\n if (seriesOptions.point.events[eventType] ||\n (point.options &&\n point.options.events &&\n point.options.events[eventType])) {\n point.importEvents();\n }\n // add default handler if in selection mode\n if (eventType === 'click' && seriesOptions.allowPointSelect) {\n defaultFunction = function (event) {\n // Control key is for Windows, meta (= Cmd key) for Mac, Shift\n // for Opera.\n if (point.select) { // #2911\n point.select(null, event.ctrlKey || event.metaKey || event.shiftKey);\n }\n };\n }\n fireEvent(point, eventType, eventArgs, defaultFunction);\n };\n /**\n * Get the CSS class names for individual points. Used internally where the\n * returned value is set on every point.\n *\n * @function Highcharts.Point#getClassName\n *\n * @return {string}\n * The class names.\n */\n Point.prototype.getClassName = function () {\n var point = this;\n return 'highcharts-point' +\n (point.selected ? ' highcharts-point-select' : '') +\n (point.negative ? ' highcharts-negative' : '') +\n (point.isNull ? ' highcharts-null-point' : '') +\n (typeof point.colorIndex !== 'undefined' ?\n ' highcharts-color-' + point.colorIndex : '') +\n (point.options.className ? ' ' + point.options.className : '') +\n (point.zone && point.zone.className ? ' ' +\n point.zone.className.replace('highcharts-negative', '') : '');\n };\n /**\n * Get props of all existing graphical point elements.\n *\n * @private\n * @function Highcharts.Point#getGraphicalProps\n */\n Point.prototype.getGraphicalProps = function (kinds) {\n var point = this,\n props = [],\n graphicalProps = { singular: [],\n plural: [] };\n var prop,\n i;\n kinds = kinds || { graphic: 1, dataLabel: 1 };\n if (kinds.graphic) {\n props.push('graphic', 'shadowGroup');\n }\n if (kinds.dataLabel) {\n props.push('dataLabel', 'dataLabelPath', 'dataLabelUpper', 'connector');\n }\n i = props.length;\n while (i--) {\n prop = props[i];\n if (point[prop]) {\n graphicalProps.singular.push(prop);\n }\n }\n [\n 'graphic',\n 'dataLabel',\n 'connector'\n ].forEach(function (prop) {\n var plural = prop + 's';\n if (kinds[prop] && point[plural]) {\n graphicalProps.plural.push(plural);\n }\n });\n return graphicalProps;\n };\n /**\n * Return the configuration hash needed for the data label and tooltip\n * formatters.\n *\n * @function Highcharts.Point#getLabelConfig\n *\n * @return {Highcharts.PointLabelObject}\n * Abstract object used in formatters and formats.\n */\n Point.prototype.getLabelConfig = function () {\n return {\n x: this.category,\n y: this.y,\n color: this.color,\n colorIndex: this.colorIndex,\n key: this.name || this.category,\n series: this.series,\n point: this,\n percentage: this.percentage,\n total: this.total || this.stackTotal\n };\n };\n /**\n * Returns the value of the point property for a given value.\n * @private\n */\n Point.prototype.getNestedProperty = function (key) {\n if (!key) {\n return;\n }\n if (key.indexOf('custom.') === 0) {\n return getNestedProperty(key, this.options);\n }\n return this[key];\n };\n /**\n * In a series with `zones`, return the zone that the point belongs to.\n *\n * @function Highcharts.Point#getZone\n *\n * @return {Highcharts.SeriesZonesOptionsObject}\n * The zone item.\n */\n Point.prototype.getZone = function () {\n var series = this.series,\n zones = series.zones,\n zoneAxis = series.zoneAxis || 'y';\n var zone,\n i = 0;\n zone = zones[i];\n while (this[zoneAxis] >= zone.value) {\n zone = zones[++i];\n }\n // For resetting or reusing the point (#8100)\n if (!this.nonZonedColor) {\n this.nonZonedColor = this.color;\n }\n if (zone && zone.color && !this.options.color) {\n this.color = zone.color;\n }\n else {\n this.color = this.nonZonedColor;\n }\n return zone;\n };\n /**\n * Utility to check if point has new shape type. Used in column series and\n * all others that are based on column series.\n * @private\n */\n Point.prototype.hasNewShapeType = function () {\n var point = this;\n var oldShapeType = point.graphic &&\n (point.graphic.symbolName || point.graphic.element.nodeName);\n return oldShapeType !== this.shapeType;\n };\n /**\n * Initialize the point. Called internally based on the `series.data`\n * option.\n *\n * @function Highcharts.Point#init\n *\n * @param {Highcharts.Series} series\n * The series object containing this point.\n *\n * @param {Highcharts.PointOptionsType} options\n * The data in either number, array or object format.\n *\n * @param {number} [x]\n * Optionally, the X value of the point.\n *\n * @return {Highcharts.Point}\n * The Point instance.\n *\n * @emits Highcharts.Point#event:afterInit\n */\n Point.prototype.init = function (series, options, x) {\n this.series = series;\n this.applyOptions(options, x);\n // Add a unique ID to the point if none is assigned\n this.id = defined(this.id) ? this.id : uniqueKey();\n this.resolveColor();\n series.chart.pointCount++;\n fireEvent(this, 'afterInit');\n return this;\n };\n /**\n * Determine if point is valid.\n * @private\n * @function Highcharts.Point#isValid\n */\n Point.prototype.isValid = function () {\n return this.x !== null && isNumber(this.y);\n };\n /**\n * Transform number or array configs into objects. Also called for object\n * configs. Used internally to unify the different configuration formats for\n * points. For example, a simple number `10` in a line series will be\n * transformed to `{ y: 10 }`, and an array config like `[1, 10]` in a\n * scatter series will be transformed to `{ x: 1, y: 10 }`.\n *\n * @deprecated\n * @function Highcharts.Point#optionsToObject\n *\n * @param {Highcharts.PointOptionsType} options\n * Series data options.\n *\n * @return {Highcharts.Dictionary<*>}\n * Transformed point options.\n */\n Point.prototype.optionsToObject = function (options) {\n var series = this.series,\n keys = series.options.keys,\n pointArrayMap = keys || series.pointArrayMap || ['y'],\n valueCount = pointArrayMap.length;\n var ret = {},\n firstItemType,\n i = 0,\n j = 0;\n if (isNumber(options) || options === null) {\n ret[pointArrayMap[0]] = options;\n }\n else if (isArray(options)) {\n // with leading x value\n if (!keys && options.length > valueCount) {\n firstItemType = typeof options[0];\n if (firstItemType === 'string') {\n ret.name = options[0];\n }\n else if (firstItemType === 'number') {\n ret.x = options[0];\n }\n i++;\n }\n while (j < valueCount) {\n // Skip undefined positions for keys\n if (!keys || typeof options[i] !== 'undefined') {\n if (pointArrayMap[j].indexOf('.') > 0) {\n // Handle nested keys, e.g. ['color.pattern.image']\n // Avoid function call unless necessary.\n Point.prototype.setNestedProperty(ret, options[i], pointArrayMap[j]);\n }\n else {\n ret[pointArrayMap[j]] = options[i];\n }\n }\n i++;\n j++;\n }\n }\n else if (typeof options === 'object') {\n ret = options;\n // This is the fastest way to detect if there are individual point\n // dataLabels that need to be considered in drawDataLabels. These\n // can only occur in object configs.\n if (options.dataLabels) {\n series._hasPointLabels = true;\n }\n // Same approach as above for markers\n if (options.marker) {\n series._hasPointMarkers = true;\n }\n }\n return ret;\n };\n /**\n * Get the pixel position of the point relative to the plot area.\n * @private\n * @function Highcharts.Point#pos\n */\n Point.prototype.pos = function (chartCoordinates, plotY) {\n if (plotY === void 0) { plotY = this.plotY; }\n var _a = this,\n plotX = _a.plotX,\n series = _a.series,\n chart = series.chart,\n xAxis = series.xAxis,\n yAxis = series.yAxis;\n var posX = 0,\n posY = 0;\n if (isNumber(plotX) && isNumber(plotY)) {\n if (chartCoordinates) {\n posX = xAxis ? xAxis.pos : chart.plotLeft;\n posY = yAxis ? yAxis.pos : chart.plotTop;\n }\n return chart.inverted && xAxis && yAxis ?\n [yAxis.len - plotY + posY, xAxis.len - plotX + posX] :\n [plotX + posX, plotY + posY];\n }\n };\n /**\n * @private\n * @function Highcharts.Point#resolveColor\n */\n Point.prototype.resolveColor = function () {\n var series = this.series,\n optionsChart = series.chart.options.chart,\n styledMode = series.chart.styledMode;\n var color,\n colors,\n colorCount = optionsChart.colorCount,\n colorIndex;\n // remove points nonZonedColor for later recalculation\n delete this.nonZonedColor;\n if (series.options.colorByPoint) {\n if (!styledMode) {\n colors = series.options.colors || series.chart.options.colors;\n color = colors[series.colorCounter];\n colorCount = colors.length;\n }\n colorIndex = series.colorCounter;\n series.colorCounter++;\n // loop back to zero\n if (series.colorCounter === colorCount) {\n series.colorCounter = 0;\n }\n }\n else {\n if (!styledMode) {\n color = series.color;\n }\n colorIndex = series.colorIndex;\n }\n /**\n * The point's current color index, used in styled mode instead of\n * `color`. The color index is inserted in class names used for styling.\n *\n * @name Highcharts.Point#colorIndex\n * @type {number|undefined}\n */\n this.colorIndex = pick(this.options.colorIndex, colorIndex);\n /**\n * The point's current color.\n *\n * @name Highcharts.Point#color\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */\n this.color = pick(this.options.color, color);\n };\n /**\n * Set a value in an object, on the property defined by key. The key\n * supports nested properties using dot notation. The function modifies the\n * input object and does not make a copy.\n *\n * @function Highcharts.Point#setNestedProperty<T>\n *\n * @param {T} object\n * The object to set the value on.\n *\n * @param {*} value\n * The value to set.\n *\n * @param {string} key\n * Key to the property to set.\n *\n * @return {T}\n * The modified object.\n */\n Point.prototype.setNestedProperty = function (object, value, key) {\n var nestedKeys = key.split('.');\n nestedKeys.reduce(function (result, key, i, arr) {\n var isLastKey = arr.length - 1 === i;\n result[key] = (isLastKey ?\n value :\n isObject(result[key], true) ?\n result[key] :\n {});\n return result[key];\n }, object);\n return object;\n };\n Point.prototype.shouldDraw = function () {\n return !this.isNull;\n };\n /**\n * Extendable method for formatting each point's tooltip line.\n *\n * @function Highcharts.Point#tooltipFormatter\n *\n * @param {string} pointFormat\n * The point format.\n *\n * @return {string}\n * A string to be concatenated in to the common tooltip text.\n */\n Point.prototype.tooltipFormatter = function (pointFormat) {\n // Insert options for valueDecimals, valuePrefix, and valueSuffix\n var series = this.series, seriesTooltipOptions = series.tooltipOptions, valueDecimals = pick(seriesTooltipOptions.valueDecimals, ''), valuePrefix = seriesTooltipOptions.valuePrefix || '', valueSuffix = seriesTooltipOptions.valueSuffix || '';\n // Replace default point style with class name\n if (series.chart.styledMode) {\n pointFormat =\n series.chart.tooltip.styledModeFormat(pointFormat);\n }\n // Loop over the point array map and replace unformatted values with\n // sprintf formatting markup\n (series.pointArrayMap || ['y']).forEach(function (key) {\n key = '{point.' + key; // without the closing bracket\n if (valuePrefix || valueSuffix) {\n pointFormat = pointFormat.replace(RegExp(key + '}', 'g'), valuePrefix + key + '}' + valueSuffix);\n }\n pointFormat = pointFormat.replace(RegExp(key + '}', 'g'), key + ':,.' + valueDecimals + 'f}');\n });\n return format(pointFormat, {\n point: this,\n series: this.series\n }, series.chart);\n };\n /**\n * Update point with new options (typically x/y data) and optionally redraw\n * the series.\n *\n * @sample highcharts/members/point-update-column/\n * Update column value\n * @sample highcharts/members/point-update-pie/\n * Update pie slice\n * @sample maps/members/point-update/\n * Update map area value in Highmaps\n *\n * @function Highcharts.Point#update\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options. Point options are handled as described under\n * the `series.type.data` item for each series type. For example\n * for a line series, if options is a single number, the point will\n * be given that number as the marin y value. If it is an array, it\n * will be interpreted as x and y values respectively. If it is an\n * object, advanced options are applied.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is updated. If doing\n * more operations on the chart, it is best practice to set\n * `redraw` to false and call `chart.redraw()` after.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=true]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @emits Highcharts.Point#event:update\n */\n Point.prototype.update = function (options, redraw, animation, runEvent) {\n var point = this,\n series = point.series,\n graphic = point.graphic,\n chart = series.chart,\n seriesOptions = series.options;\n var i;\n redraw = pick(redraw, true);\n /**\n * @private\n */\n function update() {\n point.applyOptions(options);\n // Update visuals, #4146\n // Handle mock graphic elements for a11y, #12718\n var hasMockGraphic = graphic && point.hasMockGraphic;\n var shouldDestroyGraphic = point.y === null ?\n !hasMockGraphic :\n hasMockGraphic;\n if (graphic && shouldDestroyGraphic) {\n point.graphic = graphic.destroy();\n delete point.hasMockGraphic;\n }\n if (isObject(options, true)) {\n // Destroy so we can get new elements\n if (graphic && graphic.element) {\n // \"null\" is also a valid symbol\n if (options &&\n options.marker &&\n typeof options.marker.symbol !== 'undefined') {\n point.graphic = graphic.destroy();\n }\n }\n if (options && options.dataLabels && point.dataLabel) {\n point.dataLabel = point.dataLabel.destroy(); // #2468\n }\n if (point.connector) {\n point.connector = point.connector.destroy(); // #7243\n }\n }\n // record changes in the parallel arrays\n i = point.index;\n series.updateParallelArrays(point, i);\n // Record the options to options.data. If the old or the new config\n // is an object, use point options, otherwise use raw options\n // (#4701, #4916).\n seriesOptions.data[i] = (isObject(seriesOptions.data[i], true) ||\n isObject(options, true)) ?\n point.options :\n pick(options, seriesOptions.data[i]);\n // redraw\n series.isDirty = series.isDirtyData = true;\n if (!series.fixedBox && series.hasCartesianSeries) { // #1906, #2320\n chart.isDirtyBox = true;\n }\n if (seriesOptions.legendType === 'point') { // #1831, #1885\n chart.isDirtyLegend = true;\n }\n if (redraw) {\n chart.redraw(animation);\n }\n }\n // Fire the event with a default handler of doing the update\n if (runEvent === false) { // When called from setData\n update();\n }\n else {\n point.firePointEvent('update', { options: options }, update);\n }\n };\n /**\n * Remove a point and optionally redraw the series and if necessary the axes\n *\n * @sample highcharts/plotoptions/series-point-events-remove/\n * Remove point and confirm\n * @sample highcharts/members/point-remove/\n * Remove pie slice\n * @sample maps/members/point-remove/\n * Remove selected points in Highmaps\n *\n * @function Highcharts.Point#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call. When\n * doing more operations on the chart, for example running\n * `point.remove()` in a loop, it is best practice to set `redraw`\n * to false and call `chart.redraw()` after.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=false]\n * Whether to apply animation, and optionally animation\n * configuration.\n */\n Point.prototype.remove = function (redraw, animation) {\n this.series.removePoint(this.series.data.indexOf(this), redraw, animation);\n };\n /**\n * Toggle the selection status of a point.\n *\n * @see Highcharts.Chart#getSelectedPoints\n *\n * @sample highcharts/members/point-select/\n * Select a point from a button\n * @sample highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample maps/series/data-id/\n * Select a point in Highmaps\n *\n * @function Highcharts.Point#select\n *\n * @param {boolean} [selected]\n * When `true`, the point is selected. When `false`, the point is\n * unselected. When `null` or `undefined`, the selection state is toggled.\n *\n * @param {boolean} [accumulate=false]\n * When `true`, the selection is added to other selected points.\n * When `false`, other selected points are deselected. Internally in\n * Highcharts, when\n * [allowPointSelect](https://api.highcharts.com/highcharts/plotOptions.series.allowPointSelect)\n * is `true`, selected points are accumulated on Control, Shift or Cmd\n * clicking the point.\n *\n * @emits Highcharts.Point#event:select\n * @emits Highcharts.Point#event:unselect\n */\n Point.prototype.select = function (selected, accumulate) {\n var point = this,\n series = point.series,\n chart = series.chart;\n selected = pick(selected, !point.selected);\n this.selectedStaging = selected;\n // fire the event with the default handler\n point.firePointEvent(selected ? 'select' : 'unselect', { accumulate: accumulate }, function () {\n /**\n * Whether the point is selected or not.\n *\n * @see Point#select\n * @see Chart#getSelectedPoints\n *\n * @name Highcharts.Point#selected\n * @type {boolean}\n */\n point.selected = point.options.selected = selected;\n series.options.data[series.data.indexOf(point)] =\n point.options;\n point.setState(selected && 'select');\n // unselect all other points unless Ctrl or Cmd + click\n if (!accumulate) {\n chart.getSelectedPoints().forEach(function (loopPoint) {\n var loopSeries = loopPoint.series;\n if (loopPoint.selected && loopPoint !== point) {\n loopPoint.selected = loopPoint.options.selected =\n false;\n loopSeries.options.data[loopSeries.data.indexOf(loopPoint)] = loopPoint.options;\n // Programatically selecting a point should restore\n // normal state, but when click happened on other\n // point, set inactive state to match other points\n loopPoint.setState(chart.hoverPoints &&\n loopSeries.options.inactiveOtherPoints ?\n 'inactive' : '');\n loopPoint.firePointEvent('unselect');\n }\n });\n }\n });\n delete this.selectedStaging;\n };\n /**\n * Runs on mouse over the point. Called internally from mouse and touch\n * events.\n *\n * @function Highcharts.Point#onMouseOver\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The event arguments.\n */\n Point.prototype.onMouseOver = function (e) {\n var point = this,\n series = point.series,\n chart = series.chart,\n pointer = chart.pointer;\n e = e ?\n pointer.normalize(e) :\n // In cases where onMouseOver is called directly without an event\n pointer.getChartCoordinatesFromPoint(point, chart.inverted);\n pointer.runPointActions(e, point);\n };\n /**\n * Runs on mouse out from the point. Called internally from mouse and touch\n * events.\n *\n * @function Highcharts.Point#onMouseOut\n * @emits Highcharts.Point#event:mouseOut\n */\n Point.prototype.onMouseOut = function () {\n var point = this,\n chart = point.series.chart;\n point.firePointEvent('mouseOut');\n if (!point.series.options.inactiveOtherPoints) {\n (chart.hoverPoints || []).forEach(function (p) {\n p.setState();\n });\n }\n chart.hoverPoints = chart.hoverPoint = null;\n };\n /**\n * Import events from the series' and point's options. Only do it on\n * demand, to save processing time on hovering.\n *\n * @private\n * @function Highcharts.Point#importEvents\n */\n Point.prototype.importEvents = function () {\n if (!this.hasImportedEvents) {\n var point_1 = this,\n options = merge(point_1.series.options.point,\n point_1.options),\n events = options.events;\n point_1.events = events;\n objectEach(events, function (event, eventType) {\n if (isFunction(event)) {\n addEvent(point_1, eventType, event);\n }\n });\n this.hasImportedEvents = true;\n }\n };\n /**\n * Set the point's state.\n *\n * @function Highcharts.Point#setState\n *\n * @param {Highcharts.PointStateValue|\"\"} [state]\n * The new state, can be one of `'hover'`, `'select'`, `'inactive'`,\n * or `''` (an empty string), `'normal'` or `undefined` to set to\n * normal state.\n * @param {boolean} [move]\n * State for animation.\n *\n * @emits Highcharts.Point#event:afterSetState\n */\n Point.prototype.setState = function (state, move) {\n var point = this,\n series = point.series,\n previousState = point.state,\n stateOptions = (series.options.states[state || 'normal'] ||\n {}),\n markerOptions = (defaultOptions.plotOptions[series.type].marker &&\n series.options.marker),\n normalDisabled = (markerOptions && markerOptions.enabled === false),\n markerStateOptions = ((markerOptions &&\n markerOptions.states &&\n markerOptions.states[state || 'normal']) || {}),\n stateDisabled = markerStateOptions.enabled === false,\n pointMarker = point.marker || {},\n chart = series.chart,\n hasMarkers = (markerOptions && series.markerAttribs);\n var halo = series.halo,\n markerAttribs,\n pointAttribs,\n pointAttribsAnimation,\n stateMarkerGraphic = series.stateMarkerGraphic,\n newSymbol;\n state = state || ''; // empty string\n if (\n // already has this state\n (state === point.state && !move) ||\n // selected points don't respond to hover\n (point.selected && state !== 'select') ||\n // series' state options is disabled\n (stateOptions.enabled === false) ||\n // general point marker's state options is disabled\n (state && (stateDisabled ||\n (normalDisabled &&\n markerStateOptions.enabled === false))) ||\n // individual point marker's state options is disabled\n (state &&\n pointMarker.states &&\n pointMarker.states[state] &&\n pointMarker.states[state].enabled === false) // #1610\n ) {\n return;\n }\n point.state = state;\n if (hasMarkers) {\n markerAttribs = series.markerAttribs(point, state);\n }\n // Apply hover styles to the existing point\n // Prevent from mocked null points (#14966)\n if (point.graphic && !point.hasMockGraphic) {\n if (previousState) {\n point.graphic.removeClass('highcharts-point-' + previousState);\n }\n if (state) {\n point.graphic.addClass('highcharts-point-' + state);\n }\n if (!chart.styledMode) {\n pointAttribs = series.pointAttribs(point, state);\n pointAttribsAnimation = pick(chart.options.chart.animation, stateOptions.animation);\n var opacity_1 = pointAttribs.opacity;\n // Some inactive points (e.g. slices in pie) should apply\n // opacity also for their labels\n if (series.options.inactiveOtherPoints && isNumber(opacity_1)) {\n (point.dataLabels || []).forEach(function (label) {\n if (label &&\n !label.hasClass('highcharts-data-label-hidden')) {\n label.animate({ opacity: opacity_1 }, pointAttribsAnimation);\n }\n });\n if (point.connector) {\n point.connector.animate({ opacity: opacity_1 }, pointAttribsAnimation);\n }\n }\n point.graphic.animate(pointAttribs, pointAttribsAnimation);\n }\n if (markerAttribs) {\n point.graphic.animate(markerAttribs, pick(\n // Turn off globally:\n chart.options.chart.animation, markerStateOptions.animation, markerOptions.animation));\n }\n // Zooming in from a range with no markers to a range with markers\n if (stateMarkerGraphic) {\n stateMarkerGraphic.hide();\n }\n }\n else {\n // if a graphic is not applied to each point in the normal state,\n // create a shared graphic for the hover state\n if (state && markerStateOptions) {\n newSymbol = pointMarker.symbol || series.symbol;\n // If the point has another symbol than the previous one, throw\n // away the state marker graphic and force a new one (#1459)\n if (stateMarkerGraphic &&\n stateMarkerGraphic.currentSymbol !== newSymbol) {\n stateMarkerGraphic = stateMarkerGraphic.destroy();\n }\n // Add a new state marker graphic\n if (markerAttribs) {\n if (!stateMarkerGraphic) {\n if (newSymbol) {\n series.stateMarkerGraphic = stateMarkerGraphic =\n chart.renderer\n .symbol(newSymbol, markerAttribs.x, markerAttribs.y, markerAttribs.width, markerAttribs.height)\n .add(series.markerGroup);\n stateMarkerGraphic.currentSymbol = newSymbol;\n }\n // Move the existing graphic\n }\n else {\n stateMarkerGraphic[move ? 'animate' : 'attr']({\n x: markerAttribs.x,\n y: markerAttribs.y\n });\n }\n }\n if (!chart.styledMode && stateMarkerGraphic &&\n point.state !== 'inactive') {\n stateMarkerGraphic.attr(series.pointAttribs(point, state));\n }\n }\n if (stateMarkerGraphic) {\n stateMarkerGraphic[state && point.isInside ? 'show' : 'hide'](); // #2450\n stateMarkerGraphic.element.point = point; // #4310\n stateMarkerGraphic.addClass(point.getClassName(), true);\n }\n }\n // Show me your halo\n var haloOptions = stateOptions.halo;\n var markerGraphic = (point.graphic || stateMarkerGraphic);\n var markerVisibility = (markerGraphic && markerGraphic.visibility || 'inherit');\n if (haloOptions &&\n haloOptions.size &&\n markerGraphic &&\n markerVisibility !== 'hidden' &&\n !point.isCluster) {\n if (!halo) {\n series.halo = halo = chart.renderer.path()\n // #5818, #5903, #6705\n .add(markerGraphic.parentGroup);\n }\n halo.show()[move ? 'animate' : 'attr']({\n d: point.haloPath(haloOptions.size)\n });\n halo.attr({\n 'class': 'highcharts-halo highcharts-color-' +\n pick(point.colorIndex, series.colorIndex) +\n (point.className ? ' ' + point.className : ''),\n 'visibility': markerVisibility,\n 'zIndex': -1 // #4929, #8276\n });\n halo.point = point; // #6055\n if (!chart.styledMode) {\n halo.attr(extend({\n 'fill': point.color || series.color,\n 'fill-opacity': haloOptions.opacity\n }, AST.filterUserAttributes(haloOptions.attributes || {})));\n }\n }\n else if (halo && halo.point && halo.point.haloPath) {\n // Animate back to 0 on the current halo point (#6055)\n halo.animate({ d: halo.point.haloPath(0) }, null, \n // Hide after unhovering. The `complete` callback runs in the\n // halo's context (#7681).\n halo.hide);\n }\n fireEvent(point, 'afterSetState', { state: state });\n };\n /**\n * Get the path definition for the halo, which is usually a shadow-like\n * circle around the currently hovered point.\n *\n * @function Highcharts.Point#haloPath\n *\n * @param {number} size\n * The radius of the circular halo.\n *\n * @return {Highcharts.SVGPathArray}\n * The path definition.\n */\n Point.prototype.haloPath = function (size) {\n var pos = this.pos();\n return pos ? this.series.chart.renderer.symbols.circle(Math.floor(pos[0]) - size, pos[1] - size, size * 2, size * 2) : [];\n };\n return Point;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Function callback when a series point is clicked. Return false to cancel the\n * action.\n *\n * @callback Highcharts.PointClickCallbackFunction\n *\n * @param {Highcharts.Point} this\n * The point where the event occured.\n *\n * @param {Highcharts.PointClickEventObject} event\n * Event arguments.\n */\n /**\n * Common information for a click event on a series point.\n *\n * @interface Highcharts.PointClickEventObject\n * @extends Highcharts.PointerEventObject\n */ /**\n * Clicked point.\n * @name Highcharts.PointClickEventObject#point\n * @type {Highcharts.Point}\n */\n /**\n * Configuration for the data label and tooltip formatters.\n *\n * @interface Highcharts.PointLabelObject\n */ /**\n * The point's current color.\n * @name Highcharts.PointLabelObject#color\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}\n */ /**\n * The point's current color index, used in styled mode instead of `color`. The\n * color index is inserted in class names used for styling.\n * @name Highcharts.PointLabelObject#colorIndex\n * @type {number}\n */ /**\n * The name of the related point.\n * @name Highcharts.PointLabelObject#key\n * @type {string|undefined}\n */ /**\n * The percentage for related points in a stacked series or pies.\n * @name Highcharts.PointLabelObject#percentage\n * @type {number}\n */ /**\n * The related point. The point name, if defined, is available through\n * `this.point.name`.\n * @name Highcharts.PointLabelObject#point\n * @type {Highcharts.Point}\n */ /**\n * The related series. The series name is available through `this.series.name`.\n * @name Highcharts.PointLabelObject#series\n * @type {Highcharts.Series}\n */ /**\n * The total of values in either a stack for stacked series, or a pie in a pie\n * series.\n * @name Highcharts.PointLabelObject#total\n * @type {number|undefined}\n */ /**\n * For categorized axes this property holds the category name for the point. For\n * other axes it holds the X value.\n * @name Highcharts.PointLabelObject#x\n * @type {number|string|undefined}\n */ /**\n * The y value of the point.\n * @name Highcharts.PointLabelObject#y\n * @type {number|null|undefined}\n */\n /**\n * Gets fired when the mouse leaves the area close to the point.\n *\n * @callback Highcharts.PointMouseOutCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Gets fired when the mouse enters the area close to the point.\n *\n * @callback Highcharts.PointMouseOverCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * The generic point options for all series.\n *\n * In TypeScript you have to extend `PointOptionsObject` with an additional\n * declaration to allow custom data options:\n *\n * ```\n * declare interface PointOptionsObject {\n * customProperty: string;\n * }\n * ```\n *\n * @interface Highcharts.PointOptionsObject\n */\n /**\n * Possible option types for a data point. Use `null` to indicate a gap.\n *\n * @typedef {number|string|Highcharts.PointOptionsObject|Array<(number|string|null)>|null} Highcharts.PointOptionsType\n */\n /**\n * Gets fired when the point is removed using the `.remove()` method.\n *\n * @callback Highcharts.PointRemoveCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * Possible key values for the point state options.\n *\n * @typedef {\"hover\"|\"inactive\"|\"normal\"|\"select\"} Highcharts.PointStateValue\n */\n /**\n * Gets fired when the point is updated programmatically through the `.update()`\n * method.\n *\n * @callback Highcharts.PointUpdateCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointUpdateEventObject} event\n * Event that occured.\n */\n /**\n * Information about the update event.\n *\n * @interface Highcharts.PointUpdateEventObject\n * @extends global.Event\n */ /**\n * Options data of the update event.\n * @name Highcharts.PointUpdateEventObject#options\n * @type {Highcharts.PointOptionsType}\n */\n /**\n * @interface Highcharts.PointEventsOptionsObject\n */ /**\n * Fires when the point is selected either programmatically or following a click\n * on the point. One parameter, `event`, is passed to the function. Returning\n * `false` cancels the operation.\n * @name Highcharts.PointEventsOptionsObject#select\n * @type {Highcharts.PointSelectCallbackFunction|undefined}\n */ /**\n * Fires when the point is unselected either programmatically or following a\n * click on the point. One parameter, `event`, is passed to the function.\n * Returning `false` cancels the operation.\n * @name Highcharts.PointEventsOptionsObject#unselect\n * @type {Highcharts.PointUnselectCallbackFunction|undefined}\n */\n /**\n * Information about the select/unselect event.\n *\n * @interface Highcharts.PointInteractionEventObject\n * @extends global.Event\n */ /**\n * @name Highcharts.PointInteractionEventObject#accumulate\n * @type {boolean}\n */\n /**\n * Gets fired when the point is selected either programmatically or following a\n * click on the point.\n *\n * @callback Highcharts.PointSelectCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointInteractionEventObject} event\n * Event that occured.\n */\n /**\n * Fires when the point is unselected either programmatically or following a\n * click on the point.\n *\n * @callback Highcharts.PointUnselectCallbackFunction\n *\n * @param {Highcharts.Point} this\n * Point where the event occured.\n *\n * @param {Highcharts.PointInteractionEventObject} event\n * Event that occured.\n */\n ''; // keeps doclets above in JS file.\n\n return Point;\n });\n _registerModule(_modules, 'Core/Pointer.js', [_modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Tooltip.js'], _modules['Core/Utilities.js']], function (Color, H, Tooltip, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var color = Color.parse;\n var charts = H.charts,\n noop = H.noop;\n var addEvent = U.addEvent,\n attr = U.attr,\n css = U.css,\n defined = U.defined,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n isObject = U.isObject,\n objectEach = U.objectEach,\n offset = U.offset,\n pick = U.pick,\n splat = U.splat;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The mouse and touch tracker object. Each {@link Chart} item has one\n * associated Pointer item that can be accessed from the {@link Chart.pointer}\n * property.\n *\n * @class\n * @name Highcharts.Pointer\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.Options} options\n * The root options object. The pointer uses options from the chart and tooltip\n * structures.\n */\n var Pointer = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Pointer(chart, options) {\n this.lastValidTouch = {};\n this.pinchDown = [];\n this.runChartClick = false;\n this.eventsToUnbind = [];\n this.chart = chart;\n this.hasDragged = false;\n this.options = options;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Set inactive state to all series that are not currently hovered,\n * or, if `inactiveOtherPoints` is set to true, set inactive state to\n * all points within that series.\n *\n * @private\n * @function Highcharts.Pointer#applyInactiveState\n *\n * @param {Array<Highcharts.Point>} points\n * Currently hovered points\n */\n Pointer.prototype.applyInactiveState = function (points) {\n var activeSeries = [],\n series;\n // Get all active series from the hovered points\n (points || []).forEach(function (item) {\n series = item.series;\n // Include itself\n activeSeries.push(series);\n // Include parent series\n if (series.linkedParent) {\n activeSeries.push(series.linkedParent);\n }\n // Include all child series\n if (series.linkedSeries) {\n activeSeries = activeSeries.concat(series.linkedSeries);\n }\n // Include navigator series\n if (series.navigatorSeries) {\n activeSeries.push(series.navigatorSeries);\n }\n });\n // Now loop over all series, filtering out active series\n this.chart.series.forEach(function (inactiveSeries) {\n if (activeSeries.indexOf(inactiveSeries) === -1) {\n // Inactive series\n inactiveSeries.setState('inactive', true);\n }\n else if (inactiveSeries.options.inactiveOtherPoints) {\n // Active series, but other points should be inactivated\n inactiveSeries.setAllPointsToState('inactive');\n }\n });\n };\n /**\n * Destroys the Pointer object and disconnects DOM events.\n *\n * @function Highcharts.Pointer#destroy\n */\n Pointer.prototype.destroy = function () {\n var pointer = this;\n this.eventsToUnbind.forEach(function (unbind) { return unbind(); });\n this.eventsToUnbind = [];\n if (!H.chartCount) {\n if (Pointer.unbindDocumentMouseUp) {\n Pointer.unbindDocumentMouseUp = Pointer.unbindDocumentMouseUp();\n }\n if (Pointer.unbindDocumentTouchEnd) {\n Pointer.unbindDocumentTouchEnd = (Pointer.unbindDocumentTouchEnd());\n }\n }\n // memory and CPU leak\n clearInterval(pointer.tooltipTimeout);\n objectEach(pointer, function (_val, prop) {\n pointer[prop] = void 0;\n });\n };\n /**\n * Calculate attrs for selection marker.\n * @private\n * @function Highcharts.Pointer#getSelectionMarkerAttrs\n * @emits getSelectionMarkerAttrs\n */\n Pointer.prototype.getSelectionMarkerAttrs = function (chartX, chartY) {\n var _this = this;\n var e = {\n args: { chartX: chartX,\n chartY: chartY },\n attrs: {},\n shapeType: 'rect'\n };\n fireEvent(this, 'getSelectionMarkerAttrs', e, function (e) {\n var _a = _this,\n chart = _a.chart,\n _b = _a.mouseDownX,\n mouseDownX = _b === void 0 ? 0 : _b,\n _c = _a.mouseDownY,\n mouseDownY = _c === void 0 ? 0 : _c,\n zoomHor = _a.zoomHor,\n zoomVert = _a.zoomVert,\n attrs = e.attrs;\n var size;\n attrs.x = chart.plotLeft;\n attrs.y = chart.plotTop;\n attrs.width = zoomHor ? 1 : chart.plotWidth;\n attrs.height = zoomVert ? 1 : chart.plotHeight;\n // Adjust the width of the selection marker\n if (zoomHor) {\n size = chartX - mouseDownX;\n attrs.width = Math.abs(size);\n attrs.x = (size > 0 ? 0 : size) + mouseDownX;\n }\n // Adjust the height of the selection marker\n if (zoomVert) {\n size = chartY - mouseDownY;\n attrs.height = Math.abs(size);\n attrs.y = (size > 0 ? 0 : size) + mouseDownY;\n }\n });\n return e;\n };\n /**\n * Perform a drag operation in response to a mousemove event while the mouse\n * is down.\n * @private\n * @function Highcharts.Pointer#drag\n */\n Pointer.prototype.drag = function (e) {\n var chart = this.chart,\n chartOptions = chart.options.chart,\n plotLeft = chart.plotLeft,\n plotTop = chart.plotTop,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n mouseDownX = (this.mouseDownX || 0),\n mouseDownY = (this.mouseDownY || 0),\n panningEnabled = isObject(chartOptions.panning) ?\n chartOptions.panning && chartOptions.panning.enabled :\n chartOptions.panning,\n panKey = (chartOptions.panKey && e[chartOptions.panKey + 'Key']);\n var chartX = e.chartX,\n chartY = e.chartY,\n clickedInside,\n selectionMarker = this.selectionMarker;\n // If the device supports both touch and mouse (like IE11), and we are\n // touch-dragging inside the plot area, don't handle the mouse event.\n // #4339.\n if (selectionMarker && selectionMarker.touch) {\n return;\n }\n // If the mouse is outside the plot area, adjust to coordinates\n // inside to prevent the selection marker from going outside\n if (chartX < plotLeft) {\n chartX = plotLeft;\n }\n else if (chartX > plotLeft + plotWidth) {\n chartX = plotLeft + plotWidth;\n }\n if (chartY < plotTop) {\n chartY = plotTop;\n }\n else if (chartY > plotTop + plotHeight) {\n chartY = plotTop + plotHeight;\n }\n // determine if the mouse has moved more than 10px\n this.hasDragged = Math.sqrt(Math.pow(mouseDownX - chartX, 2) +\n Math.pow(mouseDownY - chartY, 2));\n if (this.hasDragged > 10) {\n clickedInside = chart.isInsidePlot(mouseDownX - plotLeft, mouseDownY - plotTop, {\n visiblePlotOnly: true\n });\n var _a = this.getSelectionMarkerAttrs(chartX,\n chartY),\n shapeType = _a.shapeType,\n attrs = _a.attrs;\n // make a selection\n if ((chart.hasCartesianSeries || chart.mapView) &&\n (this.zoomX || this.zoomY) &&\n clickedInside &&\n !panKey) {\n if (!selectionMarker) {\n this.selectionMarker = selectionMarker =\n chart.renderer[shapeType]();\n selectionMarker\n .attr({\n 'class': 'highcharts-selection-marker',\n zIndex: 7\n })\n .add();\n if (!chart.styledMode) {\n selectionMarker.attr({\n fill: chartOptions.selectionMarkerFill ||\n color(\"#335cad\" /* Palette.highlightColor80 */)\n .setOpacity(0.25).get()\n });\n }\n }\n }\n if (selectionMarker) {\n selectionMarker.attr(attrs);\n }\n // panning\n if (clickedInside &&\n !selectionMarker &&\n panningEnabled) {\n chart.pan(e, chartOptions.panning);\n }\n }\n };\n /**\n * Start a drag operation.\n * @private\n * @function Highcharts.Pointer#dragStart\n */\n Pointer.prototype.dragStart = function (e) {\n var chart = this.chart;\n // Record the start position\n chart.mouseIsDown = e.type;\n chart.cancelClick = false;\n chart.mouseDownX = this.mouseDownX = e.chartX;\n chart.mouseDownY = this.mouseDownY = e.chartY;\n };\n /**\n * Get selection box to calculate extremes\n * @private\n * @function Highcharts.Pointer#getSelectionBox\n * @emits getSelectionBox\n */\n Pointer.prototype.getSelectionBox = function (marker) {\n var e = {\n args: { marker: marker },\n result: {}\n };\n fireEvent(this, 'getSelectionBox', e, function (e) {\n e.result = {\n x: marker.attr ? +marker.attr('x') : marker.x,\n y: marker.attr ? +marker.attr('y') : marker.y,\n width: marker.attr ? marker.attr('width') : marker.width,\n height: marker.attr ? marker.attr('height') : marker.height\n };\n });\n return e.result;\n };\n /**\n * On mouse up or touch end across the entire document, drop the selection.\n * @private\n * @function Highcharts.Pointer#drop\n */\n Pointer.prototype.drop = function (e) {\n var pointer = this,\n chart = this.chart,\n hasPinched = this.hasPinched;\n if (this.selectionMarker) {\n var _a = this.getSelectionBox(this.selectionMarker),\n x_1 = _a.x,\n y_1 = _a.y,\n width_1 = _a.width,\n height_1 = _a.height;\n var selectionData_1 = {\n originalEvent: e,\n xAxis: [],\n yAxis: [],\n x: x_1,\n y: y_1,\n width: width_1,\n height: height_1\n }, \n // Start by false runZoom, unless when we have a mapView, in\n // which case the zoom will be handled in the selection event.\n runZoom_1 = Boolean(chart.mapView);\n // a selection has been made\n if (this.hasDragged || hasPinched) {\n // record each axis' min and max\n chart.axes.forEach(function (axis) {\n if (axis.zoomEnabled &&\n defined(axis.min) &&\n (hasPinched ||\n pointer[{\n xAxis: 'zoomX',\n yAxis: 'zoomY'\n }[axis.coll]]) &&\n isNumber(x_1) &&\n isNumber(y_1) &&\n isNumber(width_1) &&\n isNumber(height_1)) { // #859, #3569\n var horiz = axis.horiz,\n minPixelPadding = e.type === 'touchend' ?\n axis.minPixelPadding :\n 0, // #1207, #3075\n selectionMin = axis.toValue((horiz ? x_1 : y_1) + minPixelPadding),\n selectionMax = axis.toValue((horiz ? x_1 + width_1 : y_1 + height_1) -\n minPixelPadding);\n selectionData_1[axis.coll].push({\n axis: axis,\n // Min/max for reversed axes\n min: Math.min(selectionMin, selectionMax),\n max: Math.max(selectionMin, selectionMax)\n });\n runZoom_1 = true;\n }\n });\n if (runZoom_1) {\n fireEvent(chart, 'selection', selectionData_1, function (args) {\n chart.zoom(extend(args, hasPinched ?\n { animation: false } :\n null));\n });\n }\n }\n if (isNumber(chart.index)) {\n this.selectionMarker = this.selectionMarker.destroy();\n }\n // Reset scaling preview\n if (hasPinched) {\n this.scaleGroups();\n }\n }\n // Reset all. Check isNumber because it may be destroyed on mouse up\n // (#877)\n if (chart && isNumber(chart.index)) {\n css(chart.container, { cursor: chart._cursor });\n chart.cancelClick = this.hasDragged > 10; // #370\n chart.mouseIsDown = this.hasDragged = this.hasPinched = false;\n this.pinchDown = [];\n }\n };\n /**\n * Finds the closest point to a set of coordinates, using the k-d-tree\n * algorithm.\n *\n * @function Highcharts.Pointer#findNearestKDPoint\n *\n * @param {Array<Highcharts.Series>} series\n * All the series to search in.\n *\n * @param {boolean|undefined} shared\n * Whether it is a shared tooltip or not.\n *\n * @param {Highcharts.PointerEventObject} e\n * The pointer event object, containing chart coordinates of the pointer.\n *\n * @return {Highcharts.Point|undefined}\n * The point closest to given coordinates.\n */\n Pointer.prototype.findNearestKDPoint = function (series, shared, e) {\n var closest;\n /** @private */\n function sort(p1, p2) {\n var isCloserX = p1.distX - p2.distX,\n isCloser = p1.dist - p2.dist,\n isAbove = ((p2.series.group && p2.series.group.zIndex) -\n (p1.series.group && p1.series.group.zIndex));\n var result;\n // We have two points which are not in the same place on xAxis\n // and shared tooltip:\n if (isCloserX !== 0 && shared) { // #5721\n result = isCloserX;\n // Points are not exactly in the same place on x/yAxis:\n }\n else if (isCloser !== 0) {\n result = isCloser;\n // The same xAxis and yAxis position, sort by z-index:\n }\n else if (isAbove !== 0) {\n result = isAbove;\n // The same zIndex, sort by array index:\n }\n else {\n result =\n p1.series.index > p2.series.index ?\n -1 :\n 1;\n }\n return result;\n }\n series.forEach(function (s) {\n var noSharedTooltip = s.noSharedTooltip && shared,\n compareX = (!noSharedTooltip &&\n s.options.findNearestPointBy.indexOf('y') < 0),\n point = s.searchPoint(e,\n compareX);\n if ( // Check that we actually found a point on the series.\n isObject(point, true) && point.series &&\n // Use the new point if it is closer.\n (!isObject(closest, true) ||\n (sort(closest, point) > 0))) {\n closest = point;\n }\n });\n return closest;\n };\n /**\n * @private\n * @function Highcharts.Pointer#getChartCoordinatesFromPoint\n */\n Pointer.prototype.getChartCoordinatesFromPoint = function (point, inverted) {\n var series = point.series,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n shapeArgs = point.shapeArgs;\n if (xAxis && yAxis) {\n var x = pick(point.clientX,\n point.plotX);\n var y = point.plotY || 0;\n if (point.isNode &&\n shapeArgs &&\n isNumber(shapeArgs.x) &&\n isNumber(shapeArgs.y)) {\n x = shapeArgs.x;\n y = shapeArgs.y;\n }\n return inverted ? {\n chartX: yAxis.len + yAxis.pos - y,\n chartY: xAxis.len + xAxis.pos - x\n } : {\n chartX: x + xAxis.pos,\n chartY: y + yAxis.pos\n };\n }\n if (shapeArgs && shapeArgs.x && shapeArgs.y) {\n // E.g. pies do not have axes\n return {\n chartX: shapeArgs.x,\n chartY: shapeArgs.y\n };\n }\n };\n /**\n * Return the cached chartPosition if it is available on the Pointer,\n * otherwise find it. Running offset is quite expensive, so it should be\n * avoided when we know the chart hasn't moved.\n *\n * @function Highcharts.Pointer#getChartPosition\n *\n * @return {Highcharts.ChartPositionObject}\n * The offset of the chart container within the page\n */\n Pointer.prototype.getChartPosition = function () {\n if (this.chartPosition) {\n return this.chartPosition;\n }\n var container = this.chart.container;\n var pos = offset(container);\n this.chartPosition = {\n left: pos.left,\n top: pos.top,\n scaleX: 1,\n scaleY: 1\n };\n var offsetWidth = container.offsetWidth;\n var offsetHeight = container.offsetHeight;\n // #13342 - tooltip was not visible in Chrome, when chart\n // updates height.\n if (offsetWidth > 2 && // #13342\n offsetHeight > 2 // #13342\n ) {\n this.chartPosition.scaleX = pos.width / offsetWidth;\n this.chartPosition.scaleY = pos.height / offsetHeight;\n }\n return this.chartPosition;\n };\n /**\n * Get the click position in terms of axis values.\n *\n * @function Highcharts.Pointer#getCoordinates\n *\n * @param {Highcharts.PointerEventObject} e\n * Pointer event, extended with `chartX` and `chartY` properties.\n *\n * @return {Highcharts.PointerAxisCoordinatesObject}\n * Axis coordinates.\n */\n Pointer.prototype.getCoordinates = function (e) {\n var coordinates = {\n xAxis: [],\n yAxis: []\n };\n this.chart.axes.forEach(function (axis) {\n coordinates[axis.isXAxis ? 'xAxis' : 'yAxis'].push({\n axis: axis,\n value: axis.toValue(e[axis.horiz ? 'chartX' : 'chartY'])\n });\n });\n return coordinates;\n };\n /**\n * Calculates what is the current hovered point/points and series.\n *\n * @private\n * @function Highcharts.Pointer#getHoverData\n *\n * @param {Highcharts.Point|undefined} existingHoverPoint\n * The point currently being hovered.\n *\n * @param {Highcharts.Series|undefined} existingHoverSeries\n * The series currently being hovered.\n *\n * @param {Array<Highcharts.Series>} series\n * All the series in the chart.\n *\n * @param {boolean} isDirectTouch\n * Is the pointer directly hovering the point.\n *\n * @param {boolean|undefined} shared\n * Whether it is a shared tooltip or not.\n *\n * @param {Highcharts.PointerEventObject} [e]\n * The triggering event, containing chart coordinates of the pointer.\n *\n * @return {Object}\n * Object containing resulting hover data: hoverPoint, hoverSeries, and\n * hoverPoints.\n */\n Pointer.prototype.getHoverData = function (existingHoverPoint, existingHoverSeries, series, isDirectTouch, shared, e) {\n var hoverPoints = [],\n useExisting = !!(isDirectTouch && existingHoverPoint),\n filter = function (s) {\n return (s.visible &&\n !(!shared && s.directTouch) && // #3821\n pick(s.options.enableMouseTracking,\n true));\n };\n var hoverSeries = existingHoverSeries, \n // Which series to look in for the hover point\n searchSeries, \n // Parameters needed for beforeGetHoverData event.\n eventArgs = {\n chartX: e ? e.chartX : void 0,\n chartY: e ? e.chartY : void 0,\n shared: shared\n };\n // Find chart.hoverPane and update filter method in polar.\n fireEvent(this, 'beforeGetHoverData', eventArgs);\n var notSticky = hoverSeries && !hoverSeries.stickyTracking;\n searchSeries = notSticky ?\n // Only search on hovered series if it has stickyTracking false\n [hoverSeries] :\n // Filter what series to look in.\n series.filter(function (s) { return s.stickyTracking &&\n (eventArgs.filter || filter)(s); });\n // Use existing hovered point or find the one closest to coordinates.\n var hoverPoint = useExisting || !e ?\n existingHoverPoint :\n this.findNearestKDPoint(searchSeries,\n shared,\n e);\n // Assign hover series\n hoverSeries = hoverPoint && hoverPoint.series;\n // If we have a hoverPoint, assign hoverPoints.\n if (hoverPoint) {\n // When tooltip is shared, it displays more than one point\n if (shared && !hoverSeries.noSharedTooltip) {\n searchSeries = series.filter(function (s) {\n return eventArgs.filter ?\n eventArgs.filter(s) : filter(s) && !s.noSharedTooltip;\n });\n // Get all points with the same x value as the hoverPoint\n searchSeries.forEach(function (s) {\n var point = find(s.points,\n function (p) {\n return p.x === hoverPoint.x && !p.isNull;\n });\n if (isObject(point)) {\n /*\n * Boost returns a minimal point. Convert it to a usable\n * point for tooltip and states.\n */\n if (s.boosted && s.boost) {\n point = s.boost.getPoint(point);\n }\n hoverPoints.push(point);\n }\n });\n }\n else {\n hoverPoints.push(hoverPoint);\n }\n }\n // Check whether the hoverPoint is inside pane we are hovering over.\n eventArgs = { hoverPoint: hoverPoint };\n fireEvent(this, 'afterGetHoverData', eventArgs);\n return {\n hoverPoint: eventArgs.hoverPoint,\n hoverSeries: hoverSeries,\n hoverPoints: hoverPoints\n };\n };\n /**\n * @private\n * @function Highcharts.Pointer#getPointFromEvent\n */\n Pointer.prototype.getPointFromEvent = function (e) {\n var target = e.target,\n point;\n while (target && !point) {\n point = target.point;\n target = target.parentNode;\n }\n return point;\n };\n /**\n * @private\n * @function Highcharts.Pointer#onTrackerMouseOut\n */\n Pointer.prototype.onTrackerMouseOut = function (e) {\n var chart = this.chart;\n var relatedTarget = e.relatedTarget || e.toElement;\n var series = chart.hoverSeries;\n this.isDirectTouch = false;\n if (series &&\n relatedTarget &&\n !series.stickyTracking &&\n !this.inClass(relatedTarget, 'highcharts-tooltip') &&\n (!this.inClass(relatedTarget, 'highcharts-series-' + series.index) || // #2499, #4465, #5553\n !this.inClass(relatedTarget, 'highcharts-tracker'))) {\n series.onMouseOut();\n }\n };\n /**\n * Utility to detect whether an element has, or has a parent with, a\n * specific class name. Used on detection of tracker objects and on deciding\n * whether hovering the tooltip should cause the active series to mouse out.\n *\n * @function Highcharts.Pointer#inClass\n *\n * @param {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement} element\n * The element to investigate.\n *\n * @param {string} className\n * The class name to look for.\n *\n * @return {boolean|undefined}\n * True if either the element or one of its parents has the given class\n * name.\n */\n Pointer.prototype.inClass = function (element, className) {\n var elem = element,\n elemClassName;\n while (elem) {\n elemClassName = attr(elem, 'class');\n if (elemClassName) {\n if (elemClassName.indexOf(className) !== -1) {\n return true;\n }\n if (elemClassName.indexOf('highcharts-container') !== -1) {\n return false;\n }\n }\n elem = elem.parentElement;\n }\n };\n /**\n * Initialize the Pointer.\n *\n * @private\n * @function Highcharts.Pointer#init\n *\n * @param {Highcharts.Chart} chart\n * The Chart instance.\n *\n * @param {Highcharts.Options} options\n * The root options object. The pointer uses options from the chart and\n * tooltip structures.\n */\n Pointer.prototype.init = function (chart, options) {\n // Store references\n this.options = options;\n this.chart = chart;\n // Do we need to handle click on a touch device?\n this.runChartClick = Boolean(options.chart.events && options.chart.events.click);\n this.pinchDown = [];\n this.lastValidTouch = {};\n if (Tooltip) {\n /**\n * Tooltip object for points of series.\n *\n * @name Highcharts.Chart#tooltip\n * @type {Highcharts.Tooltip}\n */\n chart.tooltip = new Tooltip(chart, options.tooltip);\n }\n this.setDOMEvents();\n };\n /**\n * Takes a browser event object and extends it with custom Highcharts\n * properties `chartX` and `chartY` in order to work on the internal\n * coordinate system.\n *\n * On map charts, the properties `lon` and `lat` are added to the event\n * object given that the chart has projection information.\n *\n * @function Highcharts.Pointer#normalize\n *\n * @param {global.MouseEvent|global.PointerEvent|global.TouchEvent} e\n * Event object in standard browsers.\n *\n * @param {Highcharts.OffsetObject} [chartPosition]\n * Additional chart offset.\n *\n * @return {Highcharts.PointerEventObject}\n * A browser event with extended properties `chartX` and `chartY`.\n */\n Pointer.prototype.normalize = function (e, chartPosition) {\n var touches = e.touches;\n // iOS (#2757)\n var ePos = (touches ?\n touches.length ?\n touches.item(0) :\n (pick(// #13534\n touches.changedTouches,\n e.changedTouches))[0] :\n e);\n // Get mouse position\n if (!chartPosition) {\n chartPosition = this.getChartPosition();\n }\n var chartX = ePos.pageX - chartPosition.left,\n chartY = ePos.pageY - chartPosition.top;\n // #11329 - when there is scaling on a parent element, we need to take\n // this into account\n chartX /= chartPosition.scaleX;\n chartY /= chartPosition.scaleY;\n return extend(e, {\n chartX: Math.round(chartX),\n chartY: Math.round(chartY)\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerClick\n */\n Pointer.prototype.onContainerClick = function (e) {\n var chart = this.chart;\n var hoverPoint = chart.hoverPoint;\n var pEvt = this.normalize(e);\n var plotLeft = chart.plotLeft;\n var plotTop = chart.plotTop;\n if (!chart.cancelClick) {\n // On tracker click, fire the series and point events. #783, #1583\n if (hoverPoint &&\n this.inClass(pEvt.target, 'highcharts-tracker')) {\n // the series click event\n fireEvent(hoverPoint.series, 'click', extend(pEvt, {\n point: hoverPoint\n }));\n // the point click event\n if (chart.hoverPoint) { // it may be destroyed (#1844)\n hoverPoint.firePointEvent('click', pEvt);\n }\n // When clicking outside a tracker, fire a chart event\n }\n else {\n extend(pEvt, this.getCoordinates(pEvt));\n // fire a click event in the chart\n if (chart.isInsidePlot(pEvt.chartX - plotLeft, pEvt.chartY - plotTop, {\n visiblePlotOnly: true\n })) {\n fireEvent(chart, 'click', pEvt);\n }\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerMouseDown\n */\n Pointer.prototype.onContainerMouseDown = function (e) {\n var isPrimaryButton = ((e.buttons || e.button) & 1) === 1;\n // Normalize before the 'if' for the legacy IE (#7850)\n e = this.normalize(e);\n // #11635, Firefox does not reliable fire move event after click scroll\n if (H.isFirefox &&\n e.button !== 0) {\n this.onContainerMouseMove(e);\n }\n // #11635, limiting to primary button (incl. IE 8 support)\n if (typeof e.button === 'undefined' ||\n isPrimaryButton) {\n this.zoomOption(e);\n // #295, #13737 solve conflict between container drag and chart zoom\n if (isPrimaryButton &&\n e.preventDefault) {\n e.preventDefault();\n }\n this.dragStart(e);\n }\n };\n /**\n * When mouse leaves the container, hide the tooltip.\n * @private\n * @function Highcharts.Pointer#onContainerMouseLeave\n */\n Pointer.prototype.onContainerMouseLeave = function (e) {\n var chart = charts[pick(Pointer.hoverChartIndex, -1)];\n var tooltip = this.chart.tooltip;\n e = this.normalize(e);\n // #4886, MS Touch end fires mouseleave but with no related target\n if (chart &&\n (e.relatedTarget || e.toElement)) {\n chart.pointer.reset();\n // Also reset the chart position, used in #149 fix\n chart.pointer.chartPosition = void 0;\n }\n // #11635, Firefox wheel scroll does not fire out events consistently\n if (tooltip && !tooltip.isHidden) {\n this.reset();\n }\n };\n /**\n * When mouse enters the container, delete pointer's chartPosition.\n * @private\n * @function Highcharts.Pointer#onContainerMouseEnter\n */\n Pointer.prototype.onContainerMouseEnter = function (e) {\n delete this.chartPosition;\n };\n /**\n * The mousemove, touchmove and touchstart event handler\n * @private\n * @function Highcharts.Pointer#onContainerMouseMove\n */\n Pointer.prototype.onContainerMouseMove = function (e) {\n var chart = this.chart,\n tooltip = chart.tooltip,\n pEvt = this.normalize(e);\n this.setHoverChartIndex();\n // In IE8 we apparently need this returnValue set to false in order to\n // avoid text being selected. But in Chrome, e.returnValue is prevented,\n // plus we don't need to run e.preventDefault to prevent selected text\n // in modern browsers. So we set it conditionally. Remove it when IE8 is\n // no longer needed. #2251, #3224.\n if (!pEvt.preventDefault) {\n pEvt.returnValue = false;\n }\n if (chart.mouseIsDown === 'mousedown' || this.touchSelect(pEvt)) {\n this.drag(pEvt);\n }\n // Show the tooltip and run mouse over events (#977)\n if (!chart.openMenu &&\n (this.inClass(pEvt.target, 'highcharts-tracker') ||\n chart.isInsidePlot(pEvt.chartX - chart.plotLeft, pEvt.chartY - chart.plotTop, {\n visiblePlotOnly: true\n })) &&\n // If the tooltip has stickOnContact enabled, do nothing. This\n // applies regardless of any combinations of the `split` and\n // `useHTML` options.\n !(tooltip &&\n tooltip.shouldStickOnContact(pEvt))) {\n if (this.inClass(pEvt.target, 'highcharts-no-tooltip')) {\n this.reset(false, 0);\n }\n else {\n this.runPointActions(pEvt);\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentTouchEnd\n */\n Pointer.prototype.onDocumentTouchEnd = function (e) {\n var hoverChart = charts[pick(Pointer.hoverChartIndex, -1)];\n if (hoverChart) {\n hoverChart.pointer.drop(e);\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerTouchMove\n */\n Pointer.prototype.onContainerTouchMove = function (e) {\n if (this.touchSelect(e)) {\n this.onContainerMouseMove(e);\n }\n else {\n this.touch(e);\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerTouchStart\n */\n Pointer.prototype.onContainerTouchStart = function (e) {\n if (this.touchSelect(e)) {\n this.onContainerMouseDown(e);\n }\n else {\n this.zoomOption(e);\n this.touch(e, true);\n }\n };\n /**\n * Special handler for mouse move that will hide the tooltip when the mouse\n * leaves the plotarea. Issue #149 workaround. The mouseleave event does not\n * always fire.\n * @private\n * @function Highcharts.Pointer#onDocumentMouseMove\n */\n Pointer.prototype.onDocumentMouseMove = function (e) {\n var chart = this.chart;\n var tooltip = chart.tooltip;\n var chartPosition = this.chartPosition;\n var pEvt = this.normalize(e,\n chartPosition);\n // If we're outside, hide the tooltip\n if (chartPosition &&\n !chart.isInsidePlot(pEvt.chartX - chart.plotLeft, pEvt.chartY - chart.plotTop, {\n visiblePlotOnly: true\n }) &&\n !(tooltip &&\n tooltip.shouldStickOnContact(pEvt)) &&\n !this.inClass(pEvt.target, 'highcharts-tracker')) {\n this.reset();\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentMouseUp\n */\n Pointer.prototype.onDocumentMouseUp = function (e) {\n var chart = charts[pick(Pointer.hoverChartIndex, -1)];\n if (chart) {\n chart.pointer.drop(e);\n }\n };\n /**\n * Handle touch events with two touches\n * @private\n * @function Highcharts.Pointer#pinch\n */\n Pointer.prototype.pinch = function (e) {\n var self = this,\n chart = self.chart,\n pinchDown = self.pinchDown,\n touches = (e.touches || []),\n touchesLength = touches.length,\n lastValidTouch = self.lastValidTouch,\n hasZoom = self.hasZoom,\n transform = {},\n fireClickEvent = touchesLength === 1 && ((self.inClass(e.target, 'highcharts-tracker') &&\n chart.runTrackerClick) ||\n self.runChartClick),\n clip = {},\n tooltip = self.chart.tooltip,\n followTouchMove = touchesLength === 1 &&\n pick((tooltip && tooltip.options.followTouchMove),\n true);\n var selectionMarker = self.selectionMarker;\n // Don't initiate panning until the user has pinched. This prevents us\n // from blocking page scrolling as users scroll down a long page\n // (#4210).\n if (touchesLength > 1) {\n self.initiated = true;\n }\n else if (followTouchMove) {\n // #16119: Prevent blocking scroll when single-finger panning is\n // not enabled\n self.initiated = false;\n }\n // On touch devices, only proceed to trigger click if a handler is\n // defined\n if (hasZoom &&\n self.initiated &&\n !fireClickEvent &&\n e.cancelable !== false) {\n e.preventDefault();\n }\n // Normalize each touch\n [].map.call(touches, function (e) {\n return self.normalize(e);\n });\n // Register the touch start position\n if (e.type === 'touchstart') {\n [].forEach.call(touches, function (e, i) {\n pinchDown[i] = { chartX: e.chartX, chartY: e.chartY };\n });\n lastValidTouch.x = [pinchDown[0].chartX, pinchDown[1] &&\n pinchDown[1].chartX];\n lastValidTouch.y = [pinchDown[0].chartY, pinchDown[1] &&\n pinchDown[1].chartY];\n // Identify the data bounds in pixels\n chart.axes.forEach(function (axis) {\n if (axis.zoomEnabled) {\n var bounds = chart.bounds[axis.horiz ? 'h' : 'v'],\n minPixelPadding = axis.minPixelPadding,\n min = axis.toPixels(Math.min(pick(axis.options.min,\n axis.dataMin),\n axis.dataMin)),\n max = axis.toPixels(Math.max(pick(axis.options.max,\n axis.dataMax),\n axis.dataMax)),\n absMin = Math.min(min,\n max),\n absMax = Math.max(min,\n max);\n // Store the bounds for use in the touchmove handler\n bounds.min = Math.min(axis.pos, absMin - minPixelPadding);\n bounds.max = Math.max(axis.pos + axis.len, absMax + minPixelPadding);\n }\n });\n self.res = true; // reset on next move\n // Optionally move the tooltip on touchmove\n }\n else if (followTouchMove) {\n this.runPointActions(self.normalize(e));\n // Event type is touchmove, handle panning and pinching\n }\n else if (pinchDown.length) { // can be 0 when releasing, if touchend\n // fires first\n fireEvent(chart, 'touchpan', { originalEvent: e }, function () {\n // Set the marker\n if (!selectionMarker) {\n // @todo It's a mock object, so maybe we need a separate\n // interface\n self.selectionMarker = selectionMarker = extend({\n destroy: noop,\n touch: true\n }, chart.plotBox);\n }\n self.pinchTranslate(pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n self.hasPinched = hasZoom;\n // Scale and translate the groups to provide visual feedback\n // during pinching\n self.scaleGroups(transform, clip);\n });\n if (self.res) {\n self.res = false;\n this.reset(false, 0);\n }\n }\n };\n /**\n * Run translation operations\n * @private\n * @function Highcharts.Pointer#pinchTranslate\n */\n Pointer.prototype.pinchTranslate = function (pinchDown, touches, transform, selectionMarker, clip, lastValidTouch) {\n if (this.zoomHor) {\n this.pinchTranslateDirection(true, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n }\n if (this.zoomVert) {\n this.pinchTranslateDirection(false, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);\n }\n };\n /**\n * Run translation operations for each direction (horizontal and vertical)\n * independently.\n * @private\n * @function Highcharts.Pointer#pinchTranslateDirection\n */\n Pointer.prototype.pinchTranslateDirection = function (horiz, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch, forcedScale) {\n var chart = this.chart, xy = horiz ? 'x' : 'y', XY = horiz ? 'X' : 'Y', sChartXY = ('chart' + XY), wh = horiz ? 'width' : 'height', plotLeftTop = chart['plot' + (horiz ? 'Left' : 'Top')], inverted = chart.inverted, bounds = chart.bounds[horiz ? 'h' : 'v'], singleTouch = pinchDown.length === 1, touch0Start = pinchDown[0][sChartXY], touch1Start = !singleTouch && pinchDown[1][sChartXY], setScale = function () {\n // Don't zoom if fingers are too close on this axis\n if (typeof touch1Now === 'number' &&\n Math.abs(touch0Start - touch1Start) > 20) {\n scale = forcedScale ||\n Math.abs(touch0Now - touch1Now) /\n Math.abs(touch0Start - touch1Start);\n }\n clipXY = ((plotLeftTop - touch0Now) / scale) + touch0Start;\n selectionWH = chart['plot' + (horiz ? 'Width' : 'Height')] / scale;\n };\n var selectionWH,\n selectionXY,\n clipXY,\n scale = forcedScale || 1,\n touch0Now = touches[0][sChartXY],\n touch1Now = !singleTouch && touches[1][sChartXY],\n outOfBounds;\n // Set the scale, first pass\n setScale();\n // The clip position (x or y) is altered if out of bounds, the selection\n // position is not\n selectionXY = clipXY;\n // Out of bounds\n if (selectionXY < bounds.min) {\n selectionXY = bounds.min;\n outOfBounds = true;\n }\n else if (selectionXY + selectionWH > bounds.max) {\n selectionXY = bounds.max - selectionWH;\n outOfBounds = true;\n }\n // Is the chart dragged off its bounds, determined by dataMin and\n // dataMax?\n if (outOfBounds) {\n // Modify the touchNow position in order to create an elastic drag\n // movement. This indicates to the user that the chart is responsive\n // but can't be dragged further.\n touch0Now -= 0.8 * (touch0Now - lastValidTouch[xy][0]);\n if (typeof touch1Now === 'number') {\n touch1Now -= 0.8 * (touch1Now - lastValidTouch[xy][1]);\n }\n // Set the scale, second pass to adapt to the modified touchNow\n // positions\n setScale();\n }\n else {\n lastValidTouch[xy] = [touch0Now, touch1Now];\n }\n // Set geometry for clipping, selection and transformation\n if (!inverted) {\n clip[xy] = clipXY - plotLeftTop;\n clip[wh] = selectionWH;\n }\n var scaleKey = inverted ?\n (horiz ? 'scaleY' : 'scaleX') : 'scale' + XY;\n var transformScale = inverted ? 1 / scale : scale;\n selectionMarker[wh] = selectionWH;\n selectionMarker[xy] = selectionXY;\n transform[scaleKey] = scale;\n transform['translate' + XY] = (transformScale * plotLeftTop) +\n (touch0Now - (transformScale * touch0Start));\n };\n /**\n * Reset the tracking by hiding the tooltip, the hover series state and the\n * hover point\n *\n * @function Highcharts.Pointer#reset\n *\n * @param {boolean} [allowMove]\n * Instead of destroying the tooltip altogether, allow moving it if\n * possible.\n *\n * @param {number} [delay]\n */\n Pointer.prototype.reset = function (allowMove, delay) {\n var pointer = this,\n chart = pointer.chart,\n hoverSeries = chart.hoverSeries,\n hoverPoint = chart.hoverPoint,\n hoverPoints = chart.hoverPoints,\n tooltip = chart.tooltip,\n tooltipPoints = tooltip && tooltip.shared ?\n hoverPoints :\n hoverPoint;\n // Check if the points have moved outside the plot area (#1003, #4736,\n // #5101)\n if (allowMove && tooltipPoints) {\n splat(tooltipPoints).forEach(function (point) {\n if (point.series.isCartesian &&\n typeof point.plotX === 'undefined') {\n allowMove = false;\n }\n });\n }\n // Just move the tooltip, #349\n if (allowMove) {\n if (tooltip && tooltipPoints && splat(tooltipPoints).length) {\n tooltip.refresh(tooltipPoints);\n if (tooltip.shared && hoverPoints) { // #8284\n hoverPoints.forEach(function (point) {\n point.setState(point.state, true);\n if (point.series.isCartesian) {\n if (point.series.xAxis.crosshair) {\n point.series.xAxis\n .drawCrosshair(null, point);\n }\n if (point.series.yAxis.crosshair) {\n point.series.yAxis\n .drawCrosshair(null, point);\n }\n }\n });\n }\n else if (hoverPoint) { // #2500\n hoverPoint.setState(hoverPoint.state, true);\n chart.axes.forEach(function (axis) {\n if (axis.crosshair &&\n hoverPoint.series[axis.coll] === axis) {\n axis.drawCrosshair(null, hoverPoint);\n }\n });\n }\n }\n // Full reset\n }\n else {\n if (hoverPoint) {\n hoverPoint.onMouseOut();\n }\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n if (hoverSeries) {\n hoverSeries.onMouseOut();\n }\n if (tooltip) {\n tooltip.hide(delay);\n }\n if (pointer.unDocMouseMove) {\n pointer.unDocMouseMove = pointer.unDocMouseMove();\n }\n // Remove crosshairs\n chart.axes.forEach(function (axis) {\n axis.hideCrosshair();\n });\n pointer.hoverX = chart.hoverPoints = chart.hoverPoint = null;\n }\n };\n /**\n * With line type charts with a single tracker, get the point closest to the\n * mouse. Run Point.onMouseOver and display tooltip for the point or points.\n *\n * @private\n * @function Highcharts.Pointer#runPointActions\n *\n * @emits Highcharts.Point#event:mouseOut\n * @emits Highcharts.Point#event:mouseOver\n */\n Pointer.prototype.runPointActions = function (e, p, force) {\n var pointer = this,\n chart = pointer.chart,\n series = chart.series,\n tooltip = (chart.tooltip && chart.tooltip.options.enabled ?\n chart.tooltip :\n void 0),\n shared = (tooltip ?\n tooltip.shared :\n false);\n var hoverPoint = p || chart.hoverPoint,\n hoverSeries = hoverPoint && hoverPoint.series || chart.hoverSeries;\n var // onMouseOver or already hovering a series with directTouch\n isDirectTouch = (!e || e.type !== 'touchmove') && (!!p || ((hoverSeries && hoverSeries.directTouch) &&\n pointer.isDirectTouch)),\n hoverData = this.getHoverData(hoverPoint,\n hoverSeries,\n series,\n isDirectTouch,\n shared,\n e);\n // Update variables from hoverData.\n hoverPoint = hoverData.hoverPoint;\n hoverSeries = hoverData.hoverSeries;\n var points = hoverData.hoverPoints,\n followPointer = hoverSeries &&\n hoverSeries.tooltipOptions.followPointer &&\n !hoverSeries.tooltipOptions.split,\n useSharedTooltip = (shared &&\n hoverSeries &&\n !hoverSeries.noSharedTooltip);\n // Refresh tooltip for kdpoint if new hover point or tooltip was hidden\n // #3926, #4200\n if (hoverPoint &&\n (force ||\n hoverPoint !== chart.hoverPoint ||\n (tooltip && tooltip.isHidden))) {\n (chart.hoverPoints || []).forEach(function (p) {\n if (points.indexOf(p) === -1) {\n p.setState();\n }\n });\n // Set normal state to previous series\n if (chart.hoverSeries !== hoverSeries) {\n hoverSeries.onMouseOver();\n }\n pointer.applyInactiveState(points);\n // Do mouseover on all points (#3919, #3985, #4410, #5622)\n (points || []).forEach(function (p) {\n p.setState('hover');\n });\n // If tracking is on series in stead of on each point,\n // fire mouseOver on hover point. // #4448\n if (chart.hoverPoint) {\n chart.hoverPoint.firePointEvent('mouseOut');\n }\n // Hover point may have been destroyed in the event handlers (#7127)\n if (!hoverPoint.series) {\n return;\n }\n /**\n * Contains all hovered points.\n *\n * @name Highcharts.Chart#hoverPoints\n * @type {Array<Highcharts.Point>|null}\n */\n chart.hoverPoints = points;\n /**\n * Contains the original hovered point.\n *\n * @name Highcharts.Chart#hoverPoint\n * @type {Highcharts.Point|null}\n */\n chart.hoverPoint = hoverPoint;\n /**\n * Hover state should not be lost when axis is updated (#12569)\n * Axis.update runs pointer.reset which uses chart.hoverPoint.state\n * to apply state which does not exist in hoverPoint yet.\n * The mouseOver event should be triggered when hoverPoint\n * is correct.\n */\n hoverPoint.firePointEvent('mouseOver', void 0, function () {\n // Draw tooltip if necessary\n if (tooltip && hoverPoint) {\n tooltip.refresh(useSharedTooltip ? points : hoverPoint, e);\n }\n });\n // Update positions (regardless of kdpoint or hoverPoint)\n }\n else if (followPointer && tooltip && !tooltip.isHidden) {\n var anchor = tooltip.getAnchor([{}],\n e);\n if (chart.isInsidePlot(anchor[0], anchor[1], {\n visiblePlotOnly: true\n })) {\n tooltip.updatePosition({ plotX: anchor[0], plotY: anchor[1] });\n }\n }\n // Start the event listener to pick up the tooltip and crosshairs\n if (!pointer.unDocMouseMove) {\n pointer.unDocMouseMove = addEvent(chart.container.ownerDocument, 'mousemove', function (e) {\n var chart = charts[Pointer.hoverChartIndex];\n if (chart) {\n chart.pointer.onDocumentMouseMove(e);\n }\n });\n pointer.eventsToUnbind.push(pointer.unDocMouseMove);\n }\n // Issues related to crosshair #4927, #5269 #5066, #5658\n chart.axes.forEach(function drawAxisCrosshair(axis) {\n var snap = pick((axis.crosshair || {}).snap,\n true);\n var point;\n if (snap) {\n point = chart.hoverPoint; // #13002\n if (!point || point.series[axis.coll] !== axis) {\n point = find(points, function (p) {\n return p.series && p.series[axis.coll] === axis;\n });\n }\n }\n // Axis has snapping crosshairs, and one of the hover points belongs\n // to axis. Always call drawCrosshair when it is not snap.\n if (point || !snap) {\n axis.drawCrosshair(e, point);\n // Axis has snapping crosshairs, but no hover point belongs to axis\n }\n else {\n axis.hideCrosshair();\n }\n });\n };\n /**\n * Scale series groups to a certain scale and translation.\n * @private\n * @function Highcharts.Pointer#scaleGroups\n */\n Pointer.prototype.scaleGroups = function (attribs, clip) {\n var chart = this.chart;\n // Scale each series\n chart.series.forEach(function (series) {\n var seriesAttribs = attribs || series.getPlotBox(); // #1701\n if (series.group &&\n ((series.xAxis && series.xAxis.zoomEnabled) ||\n chart.mapView)) {\n series.group.attr(seriesAttribs);\n if (series.markerGroup) {\n series.markerGroup.attr(seriesAttribs);\n series.markerGroup.clip(clip ? chart.clipRect : null);\n }\n if (series.dataLabelsGroup) {\n series.dataLabelsGroup.attr(seriesAttribs);\n }\n }\n });\n // Clip\n chart.clipRect.attr(clip || chart.clipBox);\n };\n /**\n * Set the JS DOM events on the container and document. This method should\n * contain a one-to-one assignment between methods and their handlers. Any\n * advanced logic should be moved to the handler reflecting the event's\n * name.\n * @private\n * @function Highcharts.Pointer#setDOMEvents\n */\n Pointer.prototype.setDOMEvents = function () {\n var _this = this;\n var container = this.chart.container,\n ownerDoc = container.ownerDocument;\n container.onmousedown = this.onContainerMouseDown.bind(this);\n container.onmousemove = this.onContainerMouseMove.bind(this);\n container.onclick = this.onContainerClick.bind(this);\n this.eventsToUnbind.push(addEvent(container, 'mouseenter', this.onContainerMouseEnter.bind(this)));\n this.eventsToUnbind.push(addEvent(container, 'mouseleave', this.onContainerMouseLeave.bind(this)));\n if (!Pointer.unbindDocumentMouseUp) {\n Pointer.unbindDocumentMouseUp = addEvent(ownerDoc, 'mouseup', this.onDocumentMouseUp.bind(this));\n }\n // In case we are dealing with overflow, reset the chart position when\n // scrolling parent elements\n var parent = this.chart.renderTo.parentElement;\n while (parent && parent.tagName !== 'BODY') {\n this.eventsToUnbind.push(addEvent(parent, 'scroll', function () {\n delete _this.chartPosition;\n }));\n parent = parent.parentElement;\n }\n if (H.hasTouch) {\n this.eventsToUnbind.push(addEvent(container, 'touchstart', this.onContainerTouchStart.bind(this), { passive: false }));\n this.eventsToUnbind.push(addEvent(container, 'touchmove', this.onContainerTouchMove.bind(this), { passive: false }));\n if (!Pointer.unbindDocumentTouchEnd) {\n Pointer.unbindDocumentTouchEnd = addEvent(ownerDoc, 'touchend', this.onDocumentTouchEnd.bind(this), { passive: false });\n }\n }\n };\n /**\n * Sets the index of the hovered chart and leaves the previous hovered\n * chart, to reset states like tooltip.\n * @private\n * @function Highcharts.Pointer#setHoverChartIndex\n */\n Pointer.prototype.setHoverChartIndex = function () {\n var chart = this.chart;\n var hoverChart = H.charts[pick(Pointer.hoverChartIndex, -1)];\n if (hoverChart &&\n hoverChart !== chart) {\n hoverChart.pointer.onContainerMouseLeave({ relatedTarget: chart.container });\n }\n if (!hoverChart ||\n !hoverChart.mouseIsDown) {\n Pointer.hoverChartIndex = chart.index;\n }\n };\n /**\n * General touch handler shared by touchstart and touchmove.\n * @private\n * @function Highcharts.Pointer#touch\n */\n Pointer.prototype.touch = function (e, start) {\n var chart = this.chart;\n var hasMoved,\n pinchDown,\n isInside;\n this.setHoverChartIndex();\n if (e.touches.length === 1) {\n e = this.normalize(e);\n isInside = chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop, {\n visiblePlotOnly: true\n });\n if (isInside && !chart.openMenu) {\n // Run mouse events and display tooltip etc\n if (start) {\n this.runPointActions(e);\n }\n // Android fires touchmove events after the touchstart even if\n // the finger hasn't moved, or moved only a pixel or two. In iOS\n // however, the touchmove doesn't fire unless the finger moves\n // more than ~4px. So we emulate this behaviour in Android by\n // checking how much it moved, and cancelling on small\n // distances. #3450.\n if (e.type === 'touchmove') {\n pinchDown = this.pinchDown;\n hasMoved = pinchDown[0] ? Math.sqrt(// #5266\n Math.pow(pinchDown[0].chartX - e.chartX, 2) +\n Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 4 : false;\n }\n if (pick(hasMoved, true)) {\n this.pinch(e);\n }\n }\n else if (start) {\n // Hide the tooltip on touching outside the plot area (#1203)\n this.reset();\n }\n }\n else if (e.touches.length === 2) {\n this.pinch(e);\n }\n };\n /**\n * Returns true if the chart is set up for zooming by single touch and the\n * event is capable\n * @private\n * @function Highcharts.Pointer#touchSelect\n */\n Pointer.prototype.touchSelect = function (e) {\n return Boolean(this.chart.options.chart.zooming.singleTouch &&\n e.touches &&\n e.touches.length === 1);\n };\n /**\n * Resolve the zoomType option, this is reset on all touch start and mouse\n * down events.\n * @private\n * @function Highcharts.Pointer#zoomOption\n */\n Pointer.prototype.zoomOption = function (e) {\n var chart = this.chart,\n options = chart.options.chart,\n inverted = chart.inverted;\n var zoomType = options.zooming.type || '',\n zoomX,\n zoomY;\n // Look for the pinchType option\n if (/touch/.test(e.type)) {\n zoomType = pick(options.zooming.pinchType, zoomType);\n }\n this.zoomX = zoomX = /x/.test(zoomType);\n this.zoomY = zoomY = /y/.test(zoomType);\n this.zoomHor = (zoomX && !inverted) || (zoomY && inverted);\n this.zoomVert = (zoomY && !inverted) || (zoomX && inverted);\n this.hasZoom = zoomX || zoomY;\n };\n return Pointer;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Chart position and scale.\n *\n * @interface Highcharts.ChartPositionObject\n */ /**\n * @name Highcharts.ChartPositionObject#left\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#scaleX\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#scaleY\n * @type {number}\n */ /**\n * @name Highcharts.ChartPositionObject#top\n * @type {number}\n */\n /**\n * One position in relation to an axis.\n *\n * @interface Highcharts.PointerAxisCoordinateObject\n */ /**\n * Related axis.\n *\n * @name Highcharts.PointerAxisCoordinateObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Axis value.\n *\n * @name Highcharts.PointerAxisCoordinateObject#value\n * @type {number}\n */\n /**\n * Positions in terms of axis values.\n *\n * @interface Highcharts.PointerAxisCoordinatesObject\n */ /**\n * Positions on the x-axis.\n * @name Highcharts.PointerAxisCoordinatesObject#xAxis\n * @type {Array<Highcharts.PointerAxisCoordinateObject>}\n */ /**\n * Positions on the y-axis.\n * @name Highcharts.PointerAxisCoordinatesObject#yAxis\n * @type {Array<Highcharts.PointerAxisCoordinateObject>}\n */\n /**\n * Pointer coordinates.\n *\n * @interface Highcharts.PointerCoordinatesObject\n */ /**\n * @name Highcharts.PointerCoordinatesObject#chartX\n * @type {number}\n */ /**\n * @name Highcharts.PointerCoordinatesObject#chartY\n * @type {number}\n */\n /**\n * A native browser mouse or touch event, extended with position information\n * relative to the {@link Chart.container}.\n *\n * @interface Highcharts.PointerEventObject\n * @extends global.PointerEvent\n */ /**\n * The X coordinate of the pointer interaction relative to the chart.\n *\n * @name Highcharts.PointerEventObject#chartX\n * @type {number}\n */ /**\n * The Y coordinate of the pointer interaction relative to the chart.\n *\n * @name Highcharts.PointerEventObject#chartY\n * @type {number}\n */\n /**\n * Axis-specific data of a selection.\n *\n * @interface Highcharts.SelectDataObject\n */ /**\n * The selected Axis.\n * @name Highcharts.SelectDataObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * The maximum axis value, either automatic or set manually.\n * @name Highcharts.SelectDataObject#max\n * @type {number}\n */ /**\n * The minimum axis value, either automatic or set manually.\n * @name Highcharts.SelectDataObject#min\n * @type {number}\n */\n /**\n * Object for select events.\n * The primary axes are `xAxis[0]` and `yAxis[0]`. Remember the unit of a\n * datetime axis is milliseconds since 1970-01-01 00:00:00.\n *\n * @interface Highcharts.SelectEventObject\n */ /**\n * The related browser event.\n * @name Highcharts.SelectEventObject#originalEvent\n * @type {global.Event}\n */ /**\n * Indicates a reset event to restore default state.\n * @name Highcharts.SelectEventObject#resetSelection\n * @type {boolean|undefined}\n */ /**\n * Arrays containing the axes of each dimension and each axis' min and max\n * values.\n * @name Highcharts.SelectEventObject#xAxis\n * @type {Array<Highcharts.SelectDataObject>}\n */ /**\n * Arrays containing the axes of each dimension and each axis' min and max\n * values.\n * @name Highcharts.SelectEventObject#yAxis\n * @type {Array<Highcharts.SelectDataObject>}\n */\n ''; // keeps doclets above in JS file\n\n return Pointer;\n });\n _registerModule(_modules, 'Core/MSPointer.js', [_modules['Core/Globals.js'], _modules['Core/Pointer.js'], _modules['Core/Utilities.js']], function (H, Pointer, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var charts = H.charts,\n doc = H.doc,\n noop = H.noop,\n win = H.win;\n var addEvent = U.addEvent,\n css = U.css,\n objectEach = U.objectEach,\n pick = U.pick,\n removeEvent = U.removeEvent;\n /* *\n *\n * Constants\n *\n * */\n // The touches object keeps track of the points being touched at all times\n var touches = {};\n var hasPointerEvent = !!win.PointerEvent;\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /** @private */\n function getWebkitTouches() {\n var fake = [];\n fake.item = function (i) {\n return this[i];\n };\n objectEach(touches, function (touch) {\n fake.push({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target\n });\n });\n return fake;\n }\n /** @private */\n function translateMSPointer(e, method, wktype, func) {\n var chart = charts[Pointer.hoverChartIndex || NaN];\n if ((e.pointerType === 'touch' ||\n e.pointerType === e.MSPOINTER_TYPE_TOUCH) && chart) {\n var p = chart.pointer;\n func(e);\n p[method]({\n type: wktype,\n target: e.currentTarget,\n preventDefault: noop,\n touches: getWebkitTouches()\n });\n }\n }\n /* *\n *\n * Class\n *\n * */\n /** @private */\n var MSPointer = /** @class */ (function (_super) {\n __extends(MSPointer, _super);\n function MSPointer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n MSPointer.isRequired = function () {\n return !!(!H.hasTouch && (win.PointerEvent || win.MSPointerEvent));\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Add or remove the MS Pointer specific events\n * @private\n * @function Highcharts.Pointer#batchMSEvents\n */\n MSPointer.prototype.batchMSEvents = function (fn) {\n fn(this.chart.container, hasPointerEvent ? 'pointerdown' : 'MSPointerDown', this.onContainerPointerDown);\n fn(this.chart.container, hasPointerEvent ? 'pointermove' : 'MSPointerMove', this.onContainerPointerMove);\n fn(doc, hasPointerEvent ? 'pointerup' : 'MSPointerUp', this.onDocumentPointerUp);\n };\n // Destroy MS events also\n MSPointer.prototype.destroy = function () {\n this.batchMSEvents(removeEvent);\n _super.prototype.destroy.call(this);\n };\n // Disable default IE actions for pinch and such on chart element\n MSPointer.prototype.init = function (chart, options) {\n _super.prototype.init.call(this, chart, options);\n if (this.hasZoom) { // #4014\n css(chart.container, {\n '-ms-touch-action': 'none',\n 'touch-action': 'none'\n });\n }\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerPointerDown\n */\n MSPointer.prototype.onContainerPointerDown = function (e) {\n translateMSPointer(e, 'onContainerTouchStart', 'touchstart', function (e) {\n touches[e.pointerId] = {\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.currentTarget\n };\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onContainerPointerMove\n */\n MSPointer.prototype.onContainerPointerMove = function (e) {\n translateMSPointer(e, 'onContainerTouchMove', 'touchmove', function (e) {\n touches[e.pointerId] = ({ pageX: e.pageX, pageY: e.pageY });\n if (!touches[e.pointerId].target) {\n touches[e.pointerId].target = e.currentTarget;\n }\n });\n };\n /**\n * @private\n * @function Highcharts.Pointer#onDocumentPointerUp\n */\n MSPointer.prototype.onDocumentPointerUp = function (e) {\n translateMSPointer(e, 'onDocumentTouchEnd', 'touchend', function (e) {\n delete touches[e.pointerId];\n });\n };\n // Add IE specific touch events to chart\n MSPointer.prototype.setDOMEvents = function () {\n var tooltip = this.chart.tooltip;\n _super.prototype.setDOMEvents.call(this);\n if (this.hasZoom ||\n pick((tooltip && tooltip.options.followTouchMove), true)) {\n this.batchMSEvents(addEvent);\n }\n };\n return MSPointer;\n }(Pointer));\n /* *\n *\n * Default Export\n *\n * */\n\n return MSPointer;\n });\n _registerModule(_modules, 'Core/Legend/Legend.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Series/Point.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Utilities.js']], function (A, F, H, Point, R, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject,\n setAnimation = A.setAnimation;\n var format = F.format;\n var isFirefox = H.isFirefox,\n marginNames = H.marginNames,\n win = H.win;\n var distribute = R.distribute;\n var addEvent = U.addEvent,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n find = U.find,\n fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength,\n stableSort = U.stableSort,\n syncTimeout = U.syncTimeout,\n wrap = U.wrap;\n /* *\n *\n * Class\n *\n * */\n /**\n * The overview of the chart's series. The legend object is instanciated\n * internally in the chart constructor, and is available from the `chart.legend`\n * property. Each chart has only one legend.\n *\n * @class\n * @name Highcharts.Legend\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n */\n var Legend = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function Legend(chart, options) {\n /* *\n *\n * Properties\n *\n * */\n this.allItems = [];\n this.box = void 0;\n this.contentGroup = void 0;\n this.display = false;\n this.group = void 0;\n this.initialItemY = 0;\n this.itemHeight = 0;\n this.itemMarginBottom = 0;\n this.itemMarginTop = 0;\n this.itemX = 0;\n this.itemY = 0;\n this.lastItemY = 0;\n this.lastLineHeight = 0;\n this.legendHeight = 0;\n this.legendWidth = 0;\n this.maxItemWidth = 0;\n this.maxLegendWidth = 0;\n this.offsetWidth = 0;\n this.options = void 0;\n this.padding = 0;\n this.pages = [];\n this.proximate = false;\n this.scrollGroup = void 0;\n this.symbolHeight = 0;\n this.symbolWidth = 0;\n this.titleHeight = 0;\n this.totalItemWidth = 0;\n this.widthOption = 0;\n this.chart = chart;\n this.init(chart, options);\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Initialize the legend.\n *\n * @private\n * @function Highcharts.Legend#init\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n */\n Legend.prototype.init = function (chart, options) {\n /**\n * Chart of this legend.\n *\n * @readonly\n * @name Highcharts.Legend#chart\n * @type {Highcharts.Chart}\n */\n this.chart = chart;\n this.setOptions(options);\n if (options.enabled) {\n // Render it\n this.render();\n // move checkboxes\n addEvent(this.chart, 'endResize', function () {\n this.legend.positionCheckboxes();\n });\n if (this.proximate) {\n this.unchartrender = addEvent(this.chart, 'render', function () {\n this.legend.proximatePositions();\n this.legend.positionItems();\n });\n }\n else if (this.unchartrender) {\n this.unchartrender();\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#setOptions\n * @param {Highcharts.LegendOptions} options\n */\n Legend.prototype.setOptions = function (options) {\n var padding = pick(options.padding, 8);\n /**\n * Legend options.\n *\n * @readonly\n * @name Highcharts.Legend#options\n * @type {Highcharts.LegendOptions}\n */\n this.options = options;\n if (!this.chart.styledMode) {\n this.itemStyle = options.itemStyle;\n this.itemHiddenStyle = merge(this.itemStyle, options.itemHiddenStyle);\n }\n this.itemMarginTop = options.itemMarginTop || 0;\n this.itemMarginBottom = options.itemMarginBottom || 0;\n this.padding = padding;\n this.initialItemY = padding - 5; // 5 is pixels above the text\n this.symbolWidth = pick(options.symbolWidth, 16);\n this.pages = [];\n this.proximate = options.layout === 'proximate' && !this.chart.inverted;\n // #12705: baseline has to be reset on every update\n this.baseline = void 0;\n };\n /**\n * Update the legend with new options. Equivalent to running `chart.update`\n * with a legend configuration option.\n *\n * @sample highcharts/legend/legend-update/\n * Legend update\n *\n * @function Highcharts.Legend#update\n *\n * @param {Highcharts.LegendOptions} options\n * Legend options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the axis is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after. Whether to redraw the chart.\n *\n * @emits Highcharts.Legends#event:afterUpdate\n */\n Legend.prototype.update = function (options, redraw) {\n var chart = this.chart;\n this.setOptions(merge(true, this.options, options));\n this.destroy();\n chart.isDirtyLegend = chart.isDirtyBox = true;\n if (pick(redraw, true)) {\n chart.redraw();\n }\n fireEvent(this, 'afterUpdate');\n };\n /**\n * Set the colors for the legend item.\n *\n * @private\n * @function Highcharts.Legend#colorizeItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * A Series or Point instance\n * @param {boolean} [visible=false]\n * Dimmed or colored\n *\n * @todo\n * Make events official: Fires the event `afterColorizeItem`.\n */\n Legend.prototype.colorizeItem = function (item, visible) {\n var _a = item.legendItem || {},\n group = _a.group,\n label = _a.label,\n line = _a.line,\n symbol = _a.symbol;\n if (group) {\n group[visible ? 'removeClass' : 'addClass']('highcharts-legend-item-hidden');\n }\n if (!this.chart.styledMode) {\n var legend = this,\n options = legend.options,\n hiddenColor = legend.itemHiddenStyle.color,\n textColor = visible ?\n options.itemStyle.color :\n hiddenColor,\n symbolColor = visible ?\n (item.color || hiddenColor) :\n hiddenColor,\n markerOptions = item.options && item.options.marker;\n var symbolAttr = { fill: symbolColor };\n if (label) {\n label.css({\n fill: textColor,\n color: textColor // #1553, oldIE\n });\n }\n if (line) {\n line.attr({ stroke: symbolColor });\n }\n if (symbol) {\n // Apply marker options\n if (markerOptions && symbol.isMarker) { // #585\n symbolAttr = item.pointAttribs();\n if (!visible) {\n // #6769\n symbolAttr.stroke = symbolAttr.fill = hiddenColor;\n }\n }\n symbol.attr(symbolAttr);\n }\n }\n fireEvent(this, 'afterColorizeItem', { item: item, visible: visible });\n };\n /**\n * @private\n * @function Highcharts.Legend#positionItems\n */\n Legend.prototype.positionItems = function () {\n // Now that the legend width and height are established, put the items\n // in the final position\n this.allItems.forEach(this.positionItem, this);\n if (!this.chart.isResizing) {\n this.positionCheckboxes();\n }\n };\n /**\n * Position the legend item.\n *\n * @private\n * @function Highcharts.Legend#positionItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to position\n */\n Legend.prototype.positionItem = function (item) {\n var _this = this;\n var legend = this,\n _a = item.legendItem || {},\n group = _a.group,\n _b = _a.x,\n x = _b === void 0 ? 0 : _b,\n _c = _a.y,\n y = _c === void 0 ? 0 : _c,\n options = legend.options,\n symbolPadding = options.symbolPadding,\n ltr = !options.rtl,\n checkbox = item.checkbox;\n if (group && group.element) {\n var attribs = {\n translateX: ltr ?\n x :\n legend.legendWidth - x - 2 * symbolPadding - 4,\n translateY: y\n };\n var complete = function () {\n fireEvent(_this, 'afterPositionItem', { item: item });\n };\n group[defined(group.translateY) ? 'animate' : 'attr'](attribs, void 0, complete);\n }\n if (checkbox) {\n checkbox.x = x;\n checkbox.y = y;\n }\n };\n /**\n * Destroy a single legend item, used internally on removing series items.\n *\n * @private\n * @function Highcharts.Legend#destroyItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to remove\n */\n Legend.prototype.destroyItem = function (item) {\n var checkbox = item.checkbox,\n legendItem = item.legendItem || {};\n // destroy SVG elements\n for (var _i = 0, _a = ['group', 'label', 'line', 'symbol']; _i < _a.length; _i++) {\n var key = _a[_i];\n if (legendItem[key]) {\n legendItem[key] = legendItem[key].destroy();\n }\n }\n if (checkbox) {\n discardElement(checkbox);\n }\n item.legendItem = void 0;\n };\n /**\n * Destroy the legend. Used internally. To reflow objects, `chart.redraw`\n * must be called after destruction.\n *\n * @private\n * @function Highcharts.Legend#destroy\n */\n Legend.prototype.destroy = function () {\n var legend = this;\n // Destroy items\n for (var _i = 0, _a = this.getAllItems(); _i < _a.length; _i++) {\n var item = _a[_i];\n this.destroyItem(item);\n }\n // Destroy legend elements\n for (var _b = 0, _c = [\n 'clipRect',\n 'up',\n 'down',\n 'pager',\n 'nav',\n 'box',\n 'title',\n 'group'\n ]; _b < _c.length; _b++) {\n var key = _c[_b];\n if (legend[key]) {\n legend[key] = legend[key].destroy();\n }\n }\n this.display = null; // Reset in .render on update.\n };\n /**\n * Position the checkboxes after the width is determined.\n *\n * @private\n * @function Highcharts.Legend#positionCheckboxes\n */\n Legend.prototype.positionCheckboxes = function () {\n var alignAttr = this.group && this.group.alignAttr,\n clipHeight = this.clipHeight || this.legendHeight,\n titleHeight = this.titleHeight;\n var translateY;\n if (alignAttr) {\n translateY = alignAttr.translateY;\n this.allItems.forEach(function (item) {\n var checkbox = item.checkbox;\n var top;\n if (checkbox) {\n top = translateY + titleHeight + checkbox.y +\n (this.scrollOffset || 0) + 3;\n css(checkbox, {\n left: (alignAttr.translateX + item.checkboxOffset +\n checkbox.x - 20) + 'px',\n top: top + 'px',\n display: this.proximate || (top > translateY - 6 &&\n top < translateY + clipHeight - 6) ?\n '' :\n 'none'\n });\n }\n }, this);\n }\n };\n /**\n * Render the legend title on top of the legend.\n *\n * @private\n * @function Highcharts.Legend#renderTitle\n */\n Legend.prototype.renderTitle = function () {\n var options = this.options,\n padding = this.padding,\n titleOptions = options.title;\n var bBox,\n titleHeight = 0;\n if (titleOptions.text) {\n if (!this.title) {\n /**\n * SVG element of the legend title.\n *\n * @readonly\n * @name Highcharts.Legend#title\n * @type {Highcharts.SVGElement}\n */\n this.title = this.chart.renderer.label(titleOptions.text, padding - 3, padding - 4, void 0, void 0, void 0, options.useHTML, void 0, 'legend-title')\n .attr({ zIndex: 1 });\n if (!this.chart.styledMode) {\n this.title.css(titleOptions.style);\n }\n this.title.add(this.group);\n }\n // Set the max title width (#7253)\n if (!titleOptions.width) {\n this.title.css({\n width: this.maxLegendWidth + 'px'\n });\n }\n bBox = this.title.getBBox();\n titleHeight = bBox.height;\n this.offsetWidth = bBox.width; // #1717\n this.contentGroup.attr({ translateY: titleHeight });\n }\n this.titleHeight = titleHeight;\n };\n /**\n * Set the legend item text.\n *\n * @function Highcharts.Legend#setText\n * @param {Highcharts.Point|Highcharts.Series} item\n * The item for which to update the text in the legend.\n */\n Legend.prototype.setText = function (item) {\n var options = this.options;\n item.legendItem.label.attr({\n text: options.labelFormat ?\n format(options.labelFormat, item, this.chart) :\n options.labelFormatter.call(item)\n });\n };\n /**\n * Render a single specific legend item. Called internally from the `render`\n * function.\n *\n * @private\n * @function Highcharts.Legend#renderItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n * The item to render.\n */\n Legend.prototype.renderItem = function (item) {\n var legend = this,\n legendItem = item.legendItem = item.legendItem || {},\n chart = legend.chart,\n renderer = chart.renderer,\n options = legend.options,\n horizontal = options.layout === 'horizontal',\n symbolWidth = legend.symbolWidth,\n symbolPadding = options.symbolPadding || 0,\n itemStyle = legend.itemStyle,\n itemHiddenStyle = legend.itemHiddenStyle,\n itemDistance = horizontal ? pick(options.itemDistance, 20) : 0,\n ltr = !options.rtl,\n isSeries = !item.series,\n series = !isSeries && item.series.drawLegendSymbol ?\n item.series :\n item,\n seriesOptions = series.options,\n showCheckbox = (legend.createCheckboxForItem) &&\n seriesOptions &&\n seriesOptions.showCheckbox,\n useHTML = options.useHTML,\n itemClassName = item.options.className;\n var label = legendItem.label, \n // full width minus text width\n itemExtraWidth = symbolWidth + symbolPadding +\n itemDistance + (showCheckbox ? 20 : 0);\n if (!label) { // generate it once, later move it\n // Generate the group box, a group to hold the symbol and text. Text\n // is to be appended in Legend class.\n legendItem.group = renderer\n .g('legend-item')\n .addClass('highcharts-' + series.type + '-series ' +\n 'highcharts-color-' + item.colorIndex +\n (itemClassName ? ' ' + itemClassName : '') +\n (isSeries ?\n ' highcharts-series-' + item.index :\n ''))\n .attr({ zIndex: 1 })\n .add(legend.scrollGroup);\n // Generate the list item text and add it to the group\n legendItem.label = label = renderer.text('', ltr ?\n symbolWidth + symbolPadding :\n -symbolPadding, legend.baseline || 0, useHTML);\n if (!chart.styledMode) {\n // merge to prevent modifying original (#1021)\n label.css(merge(item.visible ?\n itemStyle :\n itemHiddenStyle));\n }\n label\n .attr({\n align: ltr ? 'left' : 'right',\n zIndex: 2\n })\n .add(legendItem.group);\n // Get the baseline for the first item - the font size is equal for\n // all\n if (!legend.baseline) {\n legend.fontMetrics = renderer.fontMetrics(chart.styledMode ? 12 : itemStyle.fontSize, label);\n legend.baseline =\n legend.fontMetrics.f + 3 + legend.itemMarginTop;\n label.attr('y', legend.baseline);\n legend.symbolHeight =\n options.symbolHeight || legend.fontMetrics.f;\n if (options.squareSymbol) {\n legend.symbolWidth = pick(options.symbolWidth, Math.max(legend.symbolHeight, 16));\n itemExtraWidth = legend.symbolWidth + symbolPadding +\n itemDistance + (showCheckbox ? 20 : 0);\n if (ltr) {\n label.attr('x', legend.symbolWidth + symbolPadding);\n }\n }\n }\n // Draw the legend symbol inside the group box\n series.drawLegendSymbol(legend, item);\n if (legend.setItemEvents) {\n legend.setItemEvents(item, label, useHTML);\n }\n }\n // Add the HTML checkbox on top\n if (showCheckbox && !item.checkbox && legend.createCheckboxForItem) {\n legend.createCheckboxForItem(item);\n }\n // Colorize the items\n legend.colorizeItem(item, item.visible);\n // Take care of max width and text overflow (#6659)\n if (chart.styledMode || !itemStyle.width) {\n label.css({\n width: ((options.itemWidth ||\n legend.widthOption ||\n chart.spacingBox.width) - itemExtraWidth) + 'px'\n });\n }\n // Always update the text\n legend.setText(item);\n // calculate the positions for the next line\n var bBox = label.getBBox();\n var fontMetricsH = (legend.fontMetrics && legend.fontMetrics.h) || 0;\n item.itemWidth = item.checkboxOffset =\n options.itemWidth ||\n legendItem.labelWidth ||\n bBox.width + itemExtraWidth;\n legend.maxItemWidth = Math.max(legend.maxItemWidth, item.itemWidth);\n legend.totalItemWidth += item.itemWidth;\n legend.itemHeight = item.itemHeight = Math.round(legendItem.labelHeight ||\n // use bBox for multiline (#16398)\n (bBox.height > fontMetricsH * 1.5 ? bBox.height : fontMetricsH));\n };\n /**\n * Get the position of the item in the layout. We now know the\n * maxItemWidth from the previous loop.\n *\n * @private\n * @function Highcharts.Legend#layoutItem\n * @param {Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series} item\n */\n Legend.prototype.layoutItem = function (item) {\n var options = this.options,\n padding = this.padding,\n horizontal = options.layout === 'horizontal',\n itemHeight = item.itemHeight,\n itemMarginBottom = this.itemMarginBottom,\n itemMarginTop = this.itemMarginTop,\n itemDistance = horizontal ? pick(options.itemDistance, 20) : 0,\n maxLegendWidth = this.maxLegendWidth,\n itemWidth = (options.alignColumns &&\n this.totalItemWidth > maxLegendWidth) ?\n this.maxItemWidth :\n item.itemWidth,\n legendItem = item.legendItem || {};\n // If the item exceeds the width, start a new line\n if (horizontal &&\n this.itemX - padding + itemWidth > maxLegendWidth) {\n this.itemX = padding;\n if (this.lastLineHeight) { // Not for the first line (#10167)\n this.itemY += (itemMarginTop +\n this.lastLineHeight +\n itemMarginBottom);\n }\n this.lastLineHeight = 0; // reset for next line (#915, #3976)\n }\n // Set the edge positions\n this.lastItemY = itemMarginTop + this.itemY + itemMarginBottom;\n this.lastLineHeight = Math.max(// #915\n itemHeight, this.lastLineHeight);\n // cache the position of the newly generated or reordered items\n legendItem.x = this.itemX;\n legendItem.y = this.itemY;\n // advance\n if (horizontal) {\n this.itemX += itemWidth;\n }\n else {\n this.itemY +=\n itemMarginTop + itemHeight + itemMarginBottom;\n this.lastLineHeight = itemHeight;\n }\n // the width of the widest item\n this.offsetWidth = this.widthOption || Math.max((horizontal ? this.itemX - padding - (item.checkbox ?\n // decrease by itemDistance only when no checkbox #4853\n 0 :\n itemDistance) : itemWidth) + padding, this.offsetWidth);\n };\n /**\n * Get all items, which is one item per series for most series and one\n * item per point for pie series and its derivatives. Fires the event\n * `afterGetAllItems`.\n *\n * @private\n * @function Highcharts.Legend#getAllItems\n * @return {Array<(Highcharts.BubbleLegendItem|Highcharts.Point|Highcharts.Series)>}\n * The current items in the legend.\n * @emits Highcharts.Legend#event:afterGetAllItems\n */\n Legend.prototype.getAllItems = function () {\n var allItems = [];\n this.chart.series.forEach(function (series) {\n var seriesOptions = series && series.options;\n // Handle showInLegend. If the series is linked to another series,\n // defaults to false.\n if (series && pick(seriesOptions.showInLegend, !defined(seriesOptions.linkedTo) ? void 0 : false, true)) {\n // Use points or series for the legend item depending on\n // legendType\n allItems = allItems.concat((series.legendItem || {}).labels ||\n (seriesOptions.legendType === 'point' ?\n series.data :\n series));\n }\n });\n fireEvent(this, 'afterGetAllItems', { allItems: allItems });\n return allItems;\n };\n /**\n * Get a short, three letter string reflecting the alignment and layout.\n *\n * @private\n * @function Highcharts.Legend#getAlignment\n * @return {string}\n * The alignment, empty string if floating\n */\n Legend.prototype.getAlignment = function () {\n var options = this.options;\n // Use the first letter of each alignment option in order to detect\n // the side. (#4189 - use charAt(x) notation instead of [x] for IE7)\n if (this.proximate) {\n return options.align.charAt(0) + 'tv';\n }\n return options.floating ? '' : (options.align.charAt(0) +\n options.verticalAlign.charAt(0) +\n options.layout.charAt(0));\n };\n /**\n * Adjust the chart margins by reserving space for the legend on only one\n * side of the chart. If the position is set to a corner, top or bottom is\n * reserved for horizontal legends and left or right for vertical ones.\n *\n * @private\n * @function Highcharts.Legend#adjustMargins\n * @param {Array<number>} margin\n * @param {Array<number>} spacing\n */\n Legend.prototype.adjustMargins = function (margin, spacing) {\n var chart = this.chart,\n options = this.options,\n alignment = this.getAlignment();\n if (alignment) {\n ([\n /(lth|ct|rth)/,\n /(rtv|rm|rbv)/,\n /(rbh|cb|lbh)/,\n /(lbv|lm|ltv)/\n ]).forEach(function (alignments, side) {\n if (alignments.test(alignment) && !defined(margin[side])) {\n // Now we have detected on which side of the chart we should\n // reserve space for the legend\n chart[marginNames[side]] = Math.max(chart[marginNames[side]], (chart.legend[(side + 1) % 2 ? 'legendHeight' : 'legendWidth'] +\n [1, -1, -1, 1][side] * options[(side % 2) ? 'x' : 'y'] +\n pick(options.margin, 12) +\n spacing[side] +\n (chart.titleOffset[side] || 0)));\n }\n });\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#proximatePositions\n */\n Legend.prototype.proximatePositions = function () {\n var chart = this.chart,\n boxes = [],\n alignLeft = this.options.align === 'left';\n this.allItems.forEach(function (item) {\n var lastPoint,\n height,\n useFirstPoint = alignLeft,\n target,\n top;\n if (item.yAxis) {\n if (item.xAxis.options.reversed) {\n useFirstPoint = !useFirstPoint;\n }\n if (item.points) {\n lastPoint = find(useFirstPoint ?\n item.points :\n item.points.slice(0).reverse(), function (item) {\n return isNumber(item.plotY);\n });\n }\n height = this.itemMarginTop +\n item.legendItem.label.getBBox().height +\n this.itemMarginBottom;\n top = item.yAxis.top - chart.plotTop;\n if (item.visible) {\n target = lastPoint ?\n lastPoint.plotY :\n item.yAxis.height;\n target += top - 0.3 * height;\n }\n else {\n target = top + item.yAxis.height;\n }\n boxes.push({\n target: target,\n size: height,\n item: item\n });\n }\n }, this);\n var legendItem;\n for (var _i = 0, _a = distribute(boxes, chart.plotHeight); _i < _a.length; _i++) {\n var box = _a[_i];\n legendItem = box.item.legendItem || {};\n if (isNumber(box.pos)) {\n legendItem.y = chart.plotTop - chart.spacing[0] + box.pos;\n }\n }\n };\n /**\n * Render the legend. This method can be called both before and after\n * `chart.render`. If called after, it will only rearrange items instead\n * of creating new ones. Called internally on initial render and after\n * redraws.\n *\n * @private\n * @function Highcharts.Legend#render\n */\n Legend.prototype.render = function () {\n var legend = this,\n chart = legend.chart,\n renderer = chart.renderer,\n options = legend.options,\n padding = legend.padding, \n // add each series or point\n allItems = legend.getAllItems();\n var display,\n legendWidth,\n legendHeight,\n legendGroup = legend.group,\n allowedWidth,\n box = legend.box;\n legend.itemX = padding;\n legend.itemY = legend.initialItemY;\n legend.offsetWidth = 0;\n legend.lastItemY = 0;\n legend.widthOption = relativeLength(options.width, chart.spacingBox.width - padding);\n // Compute how wide the legend is allowed to be\n allowedWidth = chart.spacingBox.width - 2 * padding - options.x;\n if (['rm', 'lm'].indexOf(legend.getAlignment().substring(0, 2)) > -1) {\n allowedWidth /= 2;\n }\n legend.maxLegendWidth = legend.widthOption || allowedWidth;\n if (!legendGroup) {\n /**\n * SVG group of the legend.\n *\n * @readonly\n * @name Highcharts.Legend#group\n * @type {Highcharts.SVGElement}\n */\n legend.group = legendGroup = renderer\n .g('legend')\n .addClass(options.className || '')\n .attr({ zIndex: 7 })\n .add();\n legend.contentGroup = renderer\n .g()\n .attr({ zIndex: 1 }) // above background\n .add(legendGroup);\n legend.scrollGroup = renderer\n .g()\n .add(legend.contentGroup);\n }\n legend.renderTitle();\n // sort by legendIndex\n stableSort(allItems, function (a, b) {\n return ((a.options && a.options.legendIndex) || 0) -\n ((b.options && b.options.legendIndex) || 0);\n });\n // reversed legend\n if (options.reversed) {\n allItems.reverse();\n }\n /**\n * All items for the legend, which is an array of series for most series\n * and an array of points for pie series and its derivatives.\n *\n * @readonly\n * @name Highcharts.Legend#allItems\n * @type {Array<(Highcharts.Point|Highcharts.Series)>}\n */\n legend.allItems = allItems;\n legend.display = display = !!allItems.length;\n // Render the items. First we run a loop to set the text and properties\n // and read all the bounding boxes. The next loop computes the item\n // positions based on the bounding boxes.\n legend.lastLineHeight = 0;\n legend.maxItemWidth = 0;\n legend.totalItemWidth = 0;\n legend.itemHeight = 0;\n allItems.forEach(legend.renderItem, legend);\n allItems.forEach(legend.layoutItem, legend);\n // Get the box\n legendWidth = (legend.widthOption || legend.offsetWidth) + padding;\n legendHeight = legend.lastItemY + legend.lastLineHeight +\n legend.titleHeight;\n legendHeight = legend.handleOverflow(legendHeight);\n legendHeight += padding;\n // Draw the border and/or background\n if (!box) {\n /**\n * SVG element of the legend box.\n *\n * @readonly\n * @name Highcharts.Legend#box\n * @type {Highcharts.SVGElement}\n */\n legend.box = box = renderer.rect()\n .addClass('highcharts-legend-box')\n .attr({\n r: options.borderRadius\n })\n .add(legendGroup);\n }\n // Presentational\n if (!chart.styledMode) {\n box\n .attr({\n stroke: options.borderColor,\n 'stroke-width': options.borderWidth || 0,\n fill: options.backgroundColor || 'none'\n })\n .shadow(options.shadow);\n }\n if (legendWidth > 0 && legendHeight > 0) {\n box[box.placed ? 'animate' : 'attr'](box.crisp.call({}, {\n x: 0,\n y: 0,\n width: legendWidth,\n height: legendHeight\n }, box.strokeWidth()));\n }\n // hide the border if no items\n legendGroup[display ? 'show' : 'hide']();\n // Open for responsiveness\n if (chart.styledMode && legendGroup.getStyle('display') === 'none') {\n legendWidth = legendHeight = 0;\n }\n legend.legendWidth = legendWidth;\n legend.legendHeight = legendHeight;\n if (display) {\n legend.align();\n }\n if (!this.proximate) {\n this.positionItems();\n }\n fireEvent(this, 'afterRender');\n };\n /**\n * Align the legend to chart's box.\n *\n * @private\n * @function Highcharts.align\n * @param {Highcharts.BBoxObject} alignTo\n */\n Legend.prototype.align = function (alignTo) {\n if (alignTo === void 0) { alignTo = this.chart.spacingBox; }\n var chart = this.chart,\n options = this.options;\n // If aligning to the top and the layout is horizontal, adjust for\n // the title (#7428)\n var y = alignTo.y;\n if (/(lth|ct|rth)/.test(this.getAlignment()) &&\n chart.titleOffset[0] > 0) {\n y += chart.titleOffset[0];\n }\n else if (/(lbh|cb|rbh)/.test(this.getAlignment()) &&\n chart.titleOffset[2] > 0) {\n y -= chart.titleOffset[2];\n }\n if (y !== alignTo.y) {\n alignTo = merge(alignTo, { y: y });\n }\n if (!chart.hasRendered) {\n // Avoid animation when adjusting alignment for responsiveness and\n // colorAxis label layout\n this.group.placed = false;\n }\n this.group.align(merge(options, {\n width: this.legendWidth,\n height: this.legendHeight,\n verticalAlign: this.proximate ? 'top' : options.verticalAlign\n }), true, alignTo);\n };\n /**\n * Set up the overflow handling by adding navigation with up and down arrows\n * below the legend.\n *\n * @private\n * @function Highcharts.Legend#handleOverflow\n */\n Legend.prototype.handleOverflow = function (legendHeight) {\n var legend = this,\n chart = this.chart,\n renderer = chart.renderer,\n options = this.options,\n optionsY = options.y,\n alignTop = options.verticalAlign === 'top',\n padding = this.padding,\n maxHeight = options.maxHeight,\n navOptions = options.navigation,\n animation = pick(navOptions.animation,\n true),\n arrowSize = navOptions.arrowSize || 12,\n pages = this.pages,\n allItems = this.allItems,\n clipToHeight = function (height) {\n if (typeof height === 'number') {\n clipRect.attr({\n height: height\n });\n }\n else if (clipRect) { // Reset (#5912)\n legend.clipRect = clipRect.destroy();\n legend.contentGroup.clip();\n }\n // useHTML\n if (legend.contentGroup.div) {\n legend.contentGroup.div.style.clip = height ?\n 'rect(' + padding + 'px,9999px,' +\n (padding + height) + 'px,0)' :\n 'auto';\n }\n }, addTracker = function (key) {\n legend[key] = renderer\n .circle(0, 0, arrowSize * 1.3)\n .translate(arrowSize / 2, arrowSize / 2)\n .add(nav);\n if (!chart.styledMode) {\n legend[key].attr('fill', 'rgba(0,0,0,0.0001)');\n }\n return legend[key];\n };\n var clipHeight,\n lastY,\n legendItem,\n spaceHeight = (chart.spacingBox.height +\n (alignTop ? -optionsY : optionsY) - padding),\n nav = this.nav,\n clipRect = this.clipRect;\n // Adjust the height\n if (options.layout === 'horizontal' &&\n options.verticalAlign !== 'middle' &&\n !options.floating) {\n spaceHeight /= 2;\n }\n if (maxHeight) {\n spaceHeight = Math.min(spaceHeight, maxHeight);\n }\n // Reset the legend height and adjust the clipping rectangle\n pages.length = 0;\n if (legendHeight &&\n spaceHeight > 0 &&\n legendHeight > spaceHeight &&\n navOptions.enabled !== false) {\n this.clipHeight = clipHeight =\n Math.max(spaceHeight - 20 - this.titleHeight - padding, 0);\n this.currentPage = pick(this.currentPage, 1);\n this.fullHeight = legendHeight;\n // Fill pages with Y positions so that the top of each a legend item\n // defines the scroll top for each page (#2098)\n allItems.forEach(function (item, i) {\n legendItem = item.legendItem || {};\n var y = legendItem.y || 0,\n h = Math.round(legendItem.label.getBBox().height);\n var len = pages.length;\n if (!len || (y - pages[len - 1] > clipHeight &&\n (lastY || y) !== pages[len - 1])) {\n pages.push(lastY || y);\n len++;\n }\n // Keep track of which page each item is on\n legendItem.pageIx = len - 1;\n if (lastY) {\n (allItems[i - 1].legendItem || {}).pageIx = len - 1;\n }\n // add the last page if needed (#2617, #13683)\n if (\n // check the last item\n i === allItems.length - 1 &&\n // if adding next page is needed\n y + h - pages[len - 1] > clipHeight &&\n // and will fully fit inside a new page\n h <= clipHeight) {\n pages.push(y);\n legendItem.pageIx = len;\n }\n if (y !== lastY) {\n lastY = y;\n }\n });\n // Only apply clipping if needed. Clipping causes blurred legend in\n // PDF export (#1787)\n if (!clipRect) {\n clipRect = legend.clipRect =\n renderer.clipRect(0, padding, 9999, 0);\n legend.contentGroup.clip(clipRect);\n }\n clipToHeight(clipHeight);\n // Add navigation elements\n if (!nav) {\n this.nav = nav = renderer.g()\n .attr({ zIndex: 1 })\n .add(this.group);\n this.up = renderer\n .symbol('triangle', 0, 0, arrowSize, arrowSize)\n .add(nav);\n addTracker('upTracker')\n .on('click', function () {\n legend.scroll(-1, animation);\n });\n this.pager = renderer.text('', 15, 10)\n .addClass('highcharts-legend-navigation');\n if (!chart.styledMode && navOptions.style) {\n this.pager.css(navOptions.style);\n }\n this.pager.add(nav);\n this.down = renderer\n .symbol('triangle-down', 0, 0, arrowSize, arrowSize)\n .add(nav);\n addTracker('downTracker')\n .on('click', function () {\n legend.scroll(1, animation);\n });\n }\n // Set initial position\n legend.scroll(0);\n legendHeight = spaceHeight;\n // Reset\n }\n else if (nav) {\n clipToHeight();\n this.nav = nav.destroy(); // #6322\n this.scrollGroup.attr({\n translateY: 1\n });\n this.clipHeight = 0; // #1379\n }\n return legendHeight;\n };\n /**\n * Scroll the legend by a number of pages.\n *\n * @private\n * @function Highcharts.Legend#scroll\n *\n * @param {number} scrollBy\n * The number of pages to scroll.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * Whether and how to apply animation.\n *\n */\n Legend.prototype.scroll = function (scrollBy, animation) {\n var _this = this;\n var chart = this.chart,\n pages = this.pages,\n pageCount = pages.length,\n clipHeight = this.clipHeight,\n navOptions = this.options.navigation,\n pager = this.pager,\n padding = this.padding;\n var currentPage = this.currentPage + scrollBy;\n // When resizing while looking at the last page\n if (currentPage > pageCount) {\n currentPage = pageCount;\n }\n if (currentPage > 0) {\n if (typeof animation !== 'undefined') {\n setAnimation(animation, chart);\n }\n this.nav.attr({\n translateX: padding,\n translateY: clipHeight + this.padding + 7 + this.titleHeight,\n visibility: 'inherit'\n });\n [this.up, this.upTracker].forEach(function (elem) {\n elem.attr({\n 'class': currentPage === 1 ?\n 'highcharts-legend-nav-inactive' :\n 'highcharts-legend-nav-active'\n });\n });\n pager.attr({\n text: currentPage + '/' + pageCount\n });\n [this.down, this.downTracker].forEach(function (elem) {\n elem.attr({\n // adjust to text width\n x: 18 + this.pager.getBBox().width,\n 'class': currentPage === pageCount ?\n 'highcharts-legend-nav-inactive' :\n 'highcharts-legend-nav-active'\n });\n }, this);\n if (!chart.styledMode) {\n this.up\n .attr({\n fill: currentPage === 1 ?\n navOptions.inactiveColor :\n navOptions.activeColor\n });\n this.upTracker\n .css({\n cursor: currentPage === 1 ? 'default' : 'pointer'\n });\n this.down\n .attr({\n fill: currentPage === pageCount ?\n navOptions.inactiveColor :\n navOptions.activeColor\n });\n this.downTracker\n .css({\n cursor: currentPage === pageCount ?\n 'default' :\n 'pointer'\n });\n }\n this.scrollOffset = -pages[currentPage - 1] + this.initialItemY;\n this.scrollGroup.animate({\n translateY: this.scrollOffset\n });\n this.currentPage = currentPage;\n this.positionCheckboxes();\n // Fire event after scroll animation is complete\n var animOptions = animObject(pick(animation,\n chart.renderer.globalAnimation,\n true));\n syncTimeout(function () {\n fireEvent(_this, 'afterScroll', { currentPage: currentPage });\n }, animOptions.duration);\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#setItemEvents\n * @param {Highcharts.BubbleLegendItem|Point|Highcharts.Series} item\n * @param {Highcharts.SVGElement} legendLabel\n * @param {boolean} [useHTML=false]\n * @emits Highcharts.Point#event:legendItemClick\n * @emits Highcharts.Series#event:legendItemClick\n */\n Legend.prototype.setItemEvents = function (item, legendLabel, useHTML) {\n var legend = this,\n legendItem = item.legendItem || {},\n boxWrapper = legend.chart.renderer.boxWrapper,\n isPoint = item instanceof Point,\n activeClass = 'highcharts-legend-' +\n (isPoint ? 'point' : 'series') + '-active',\n styledMode = legend.chart.styledMode, \n // When `useHTML`, the symbol is rendered in other group, so\n // we need to apply events listeners to both places\n legendElements = useHTML ?\n [legendLabel,\n legendItem.symbol] :\n [legendItem.group];\n var setOtherItemsState = function (state) {\n legend.allItems.forEach(function (otherItem) {\n if (item !== otherItem) {\n [otherItem]\n .concat(otherItem.linkedSeries || [])\n .forEach(function (otherItem) {\n otherItem.setState(state, !isPoint);\n });\n }\n });\n };\n // Set the events on the item group, or in case of useHTML, the item\n // itself (#1249)\n for (var _i = 0, legendElements_1 = legendElements; _i < legendElements_1.length; _i++) {\n var element = legendElements_1[_i];\n if (element) {\n element\n .on('mouseover', function () {\n if (item.visible) {\n setOtherItemsState('inactive');\n }\n item.setState('hover');\n // A CSS class to dim or hide other than the hovered\n // series.\n // Works only if hovered series is visible (#10071).\n if (item.visible) {\n boxWrapper.addClass(activeClass);\n }\n if (!styledMode) {\n legendLabel.css(legend.options.itemHoverStyle);\n }\n })\n .on('mouseout', function () {\n if (!legend.chart.styledMode) {\n legendLabel.css(merge(item.visible ?\n legend.itemStyle :\n legend.itemHiddenStyle));\n }\n setOtherItemsState('');\n // A CSS class to dim or hide other than the hovered\n // series.\n boxWrapper.removeClass(activeClass);\n item.setState();\n })\n .on('click', function (event) {\n var strLegendItemClick = 'legendItemClick',\n fnLegendItemClick = function () {\n if (item.setVisible) {\n item.setVisible();\n }\n // Reset inactive state\n setOtherItemsState(item.visible ? 'inactive' : '');\n };\n // A CSS class to dim or hide other than the hovered\n // series. Event handling in iOS causes the activeClass\n // to be added prior to click in some cases (#7418).\n boxWrapper.removeClass(activeClass);\n // Pass over the click/touch event. #4.\n event = {\n browserEvent: event\n };\n // click the name or symbol\n if (item.firePointEvent) { // point\n item.firePointEvent(strLegendItemClick, event, fnLegendItemClick);\n }\n else {\n fireEvent(item, strLegendItemClick, event, fnLegendItemClick);\n }\n });\n }\n }\n };\n /**\n * @private\n * @function Highcharts.Legend#createCheckboxForItem\n * @param {Highcharts.BubbleLegendItem|Point|Highcharts.Series} item\n * @emits Highcharts.Series#event:checkboxClick\n */\n Legend.prototype.createCheckboxForItem = function (item) {\n var legend = this;\n item.checkbox = createElement('input', {\n type: 'checkbox',\n className: 'highcharts-legend-checkbox',\n checked: item.selected,\n defaultChecked: item.selected // required by IE7\n }, legend.options.itemCheckboxStyle, legend.chart.container);\n addEvent(item.checkbox, 'click', function (event) {\n var target = event.target;\n fireEvent(item.series || item, 'checkboxClick', {\n checked: target.checked,\n item: item\n }, function () {\n item.select();\n });\n });\n };\n return Legend;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @interface Highcharts.LegendItemObject\n */ /**\n * @name Highcharts.LegendItemObject#item\n * @type {Highcharts.SVGElement|undefined}\n */ /**\n * @name Highcharts.LegendItemObject#line\n * @type {Highcharts.SVGElement|undefined}\n */ /**\n * @name Highcharts.LegendItemObject#symbol\n * @type {Highcharts.SVGElement|undefined}\n */\n /**\n * Gets fired when the legend item belonging to a point is clicked. The default\n * action is to toggle the visibility of the point. This can be prevented by\n * returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.PointLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Point} this\n * The point on which the event occured.\n *\n * @param {Highcharts.PointLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the legend click event.\n *\n * @interface Highcharts.PointLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.PointLegendItemClickEventObject#browserEvent\n * @type {Highcharts.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the point.\n * @name Highcharts.PointLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related point.\n * @name Highcharts.PointLegendItemClickEventObject#target\n * @type {Highcharts.Point}\n */ /**\n * Event type.\n * @name Highcharts.PointLegendItemClickEventObject#type\n * @type {\"legendItemClick\"}\n */\n /**\n * Series color as used by the legend and some series types.\n * @name Highcharts.Series#color\n * @type {Highcharts.ColorType|undefined}\n */ /**\n * Legend data for the series.\n * @name Highcharts.Series#legendItem\n * @type {Highcharts.LegendItemObject|undefined}\n * @since 10.3.0\n */\n /**\n * Gets fired when the legend item belonging to a series is clicked. The default\n * action is to toggle the visibility of the series. This can be prevented by\n * returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.SeriesLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the legend click event.\n *\n * @interface Highcharts.SeriesLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.SeriesLegendItemClickEventObject#browserEvent\n * @type {Highcharts.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the series.\n * @name Highcharts.SeriesLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related series.\n * @name Highcharts.SeriesLegendItemClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesLegendItemClickEventObject#type\n * @type {\"legendItemClick\"}\n */\n (''); // keeps doclets above in JS file\n\n return Legend;\n });\n _registerModule(_modules, 'Core/Series/SeriesRegistry.js', [_modules['Core/Globals.js'], _modules['Core/Defaults.js'], _modules['Core/Series/Point.js'], _modules['Core/Utilities.js']], function (H, D, Point, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var defaultOptions = D.defaultOptions;\n var extendClass = U.extendClass,\n merge = U.merge;\n /* *\n *\n * Namespace\n *\n * */\n var SeriesRegistry;\n (function (SeriesRegistry) {\n /* *\n *\n * Properties\n *\n * */\n /**\n * @internal\n * @todo Move `Globals.seriesTypes` code to her.\n */\n SeriesRegistry.seriesTypes = H.seriesTypes;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Registers class pattern of a series.\n *\n * @private\n */\n function registerSeriesType(seriesType, SeriesClass) {\n var defaultPlotOptions = defaultOptions.plotOptions || {},\n seriesOptions = SeriesClass.defaultOptions,\n seriesProto = SeriesClass.prototype;\n seriesProto.type = seriesType;\n if (!seriesProto.pointClass) {\n seriesProto.pointClass = Point;\n }\n if (seriesOptions) {\n defaultPlotOptions[seriesType] = seriesOptions;\n }\n SeriesRegistry.seriesTypes[seriesType] = SeriesClass;\n }\n SeriesRegistry.registerSeriesType = registerSeriesType;\n /**\n * Old factory to create new series prototypes.\n *\n * @deprecated\n * @function Highcharts.seriesType\n *\n * @param {string} type\n * The series type name.\n *\n * @param {string} parent\n * The parent series type name. Use `line` to inherit from the basic\n * {@link Series} object.\n *\n * @param {Highcharts.SeriesOptionsType|Highcharts.Dictionary<*>} options\n * The additional default options that are merged with the parent's options.\n *\n * @param {Highcharts.Dictionary<*>} [props]\n * The properties (functions and primitives) to set on the new prototype.\n *\n * @param {Highcharts.Dictionary<*>} [pointProps]\n * Members for a series-specific extension of the {@link Point} prototype if\n * needed.\n *\n * @return {Highcharts.Series}\n * The newly created prototype as extended from {@link Series} or its\n * derivatives.\n */\n function seriesType(type, parent, options, seriesProto, pointProto) {\n var defaultPlotOptions = defaultOptions.plotOptions || {};\n parent = parent || '';\n // Merge the options\n defaultPlotOptions[type] = merge(defaultPlotOptions[parent], options);\n // Create the class\n registerSeriesType(type, extendClass(SeriesRegistry.seriesTypes[parent] || function () { }, seriesProto));\n SeriesRegistry.seriesTypes[type].prototype.type = type;\n // Create the point class if needed\n if (pointProto) {\n SeriesRegistry.seriesTypes[type].prototype.pointClass = extendClass(Point, pointProto);\n }\n return SeriesRegistry.seriesTypes[type];\n }\n SeriesRegistry.seriesType = seriesType;\n })(SeriesRegistry || (SeriesRegistry = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return SeriesRegistry;\n });\n _registerModule(_modules, 'Core/Chart/Chart.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Defaults.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Legend/Legend.js'], _modules['Core/MSPointer.js'], _modules['Core/Pointer.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Time.js'], _modules['Core/Utilities.js'], _modules['Core/Renderer/HTML/AST.js']], function (A, Axis, D, FormatUtilities, Foundation, H, Legend, MSPointer, Pointer, RendererRegistry, SeriesRegistry, SVGRenderer, Time, U, AST) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animate = A.animate,\n animObject = A.animObject,\n setAnimation = A.setAnimation;\n var defaultOptions = D.defaultOptions,\n defaultTime = D.defaultTime;\n var numberFormat = FormatUtilities.numberFormat;\n var registerEventOptions = Foundation.registerEventOptions;\n var charts = H.charts,\n doc = H.doc,\n marginNames = H.marginNames,\n svg = H.svg,\n win = H.win;\n var seriesTypes = SeriesRegistry.seriesTypes;\n var addEvent = U.addEvent,\n attr = U.attr,\n cleanRecursively = U.cleanRecursively,\n createElement = U.createElement,\n css = U.css,\n defined = U.defined,\n discardElement = U.discardElement,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n getStyle = U.getStyle,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isObject = U.isObject,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n pInt = U.pInt,\n relativeLength = U.relativeLength,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Class\n *\n * */\n /* eslint-disable no-invalid-this, valid-jsdoc */\n /**\n * The Chart class. The recommended constructor is {@link Highcharts#chart}.\n *\n * @example\n * let chart = Highcharts.chart('container', {\n * title: {\n * text: 'My chart'\n * },\n * series: [{\n * data: [1, 3, 2, 4]\n * }]\n * })\n *\n * @class\n * @name Highcharts.Chart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external images\n * are loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n */\n var Chart = /** @class */ (function () {\n function Chart(a, b, c) {\n this.axes = void 0;\n this.axisOffset = void 0;\n this.bounds = void 0;\n this.chartHeight = void 0;\n this.chartWidth = void 0;\n this.clipBox = void 0;\n this.colorCounter = void 0;\n this.container = void 0;\n this.eventOptions = void 0;\n this.index = void 0;\n this.isResizing = void 0;\n this.labelCollectors = void 0;\n this.legend = void 0;\n this.margin = void 0;\n this.numberFormatter = void 0;\n this.options = void 0;\n this.plotBox = void 0;\n this.plotHeight = void 0;\n this.plotLeft = void 0;\n this.plotTop = void 0;\n this.plotWidth = void 0;\n this.pointCount = void 0;\n this.pointer = void 0;\n this.renderer = void 0;\n this.renderTo = void 0;\n this.series = void 0;\n this.sharedClips = {};\n this.spacing = void 0;\n this.spacingBox = void 0;\n this.symbolCounter = void 0;\n this.time = void 0;\n this.titleOffset = void 0;\n this.userOptions = void 0;\n this.xAxis = void 0;\n this.yAxis = void 0;\n this.getArgs(a, b, c);\n }\n /**\n * Factory function for basic charts.\n *\n * @example\n * // Render a chart in to div#container\n * let chart = Highcharts.chart('container', {\n * title: {\n * text: 'My chart'\n * },\n * series: [{\n * data: [1, 3, 2, 4]\n * }]\n * });\n *\n * @function Highcharts.chart\n *\n * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n * The DOM element to render to, or its id.\n *\n * @param {Highcharts.Options} options\n * The chart options structure.\n *\n * @param {Highcharts.ChartCallbackFunction} [callback]\n * Function to run when the chart has loaded and and all external images are\n * loaded. Defining a\n * [chart.events.load](https://api.highcharts.com/highcharts/chart.events.load)\n * handler is equivalent.\n *\n * @return {Highcharts.Chart}\n * Returns the Chart object.\n */\n Chart.chart = function (a, b, c) {\n return new Chart(a, b, c);\n };\n /* *\n *\n * Functions\n *\n * */\n /**\n * Handle the arguments passed to the constructor.\n *\n * @private\n * @function Highcharts.Chart#getArgs\n *\n * @param {...Array<*>} arguments\n * All arguments for the constructor.\n *\n * @emits Highcharts.Chart#event:init\n * @emits Highcharts.Chart#event:afterInit\n */\n Chart.prototype.getArgs = function (a, b, c) {\n // Remove the optional first argument, renderTo, and\n // set it on this.\n if (isString(a) || a.nodeName) {\n this.renderTo = a;\n this.init(b, c);\n }\n else {\n this.init(a, b);\n }\n };\n /**\n * Overridable function that initializes the chart. The constructor's\n * arguments are passed on directly.\n *\n * @function Highcharts.Chart#init\n *\n * @param {Highcharts.Options} userOptions\n * Custom options.\n *\n * @param {Function} [callback]\n * Function to run when the chart has loaded and and all external\n * images are loaded.\n *\n *\n * @emits Highcharts.Chart#event:init\n * @emits Highcharts.Chart#event:afterInit\n */\n Chart.prototype.init = function (userOptions, callback) {\n // Handle regular options\n var userPlotOptions = userOptions.plotOptions || {};\n // Fire the event with a default function\n fireEvent(this, 'init', { args: arguments }, function () {\n var options = merge(defaultOptions,\n userOptions); // do the merge\n var optionsChart = options.chart;\n // Override (by copy of user options) or clear tooltip options\n // in chart.options.plotOptions (#6218)\n objectEach(options.plotOptions, function (typeOptions, type) {\n if (isObject(typeOptions)) { // #8766\n typeOptions.tooltip = (userPlotOptions[type] && // override by copy:\n merge(userPlotOptions[type].tooltip)) || void 0; // or clear\n }\n });\n // User options have higher priority than default options\n // (#6218). In case of exporting: path is changed\n options.tooltip.userOptions = (userOptions.chart &&\n userOptions.chart.forExport &&\n userOptions.tooltip.userOptions) || userOptions.tooltip;\n /**\n * The original options given to the constructor or a chart factory\n * like {@link Highcharts.chart} and {@link Highcharts.stockChart}.\n *\n * @name Highcharts.Chart#userOptions\n * @type {Highcharts.Options}\n */\n this.userOptions = userOptions;\n this.margin = [];\n this.spacing = [];\n // Pixel data bounds for touch zoom\n this.bounds = { h: {}, v: {} };\n // An array of functions that returns labels that should be\n // considered for anti-collision\n this.labelCollectors = [];\n this.callback = callback;\n this.isResizing = 0;\n var zooming = optionsChart.zooming = optionsChart.zooming || {};\n // Other options have no default so just pick\n if (userOptions.chart && !userOptions.chart.zooming) {\n zooming.resetButton = optionsChart.resetZoomButton;\n }\n zooming.key = pick(zooming.key, optionsChart.zoomKey);\n zooming.pinchType = pick(zooming.pinchType, optionsChart.pinchType);\n zooming.singleTouch = pick(zooming.singleTouch, optionsChart.zoomBySingleTouch);\n zooming.type = pick(zooming.type, optionsChart.zoomType);\n /**\n * The options structure for the chart after merging\n * {@link #defaultOptions} and {@link #userOptions}. It contains\n * members for the sub elements like series, legend, tooltip etc.\n *\n * @name Highcharts.Chart#options\n * @type {Highcharts.Options}\n */\n this.options = options;\n /**\n * All the axes in the chart.\n *\n * @see Highcharts.Chart.xAxis\n * @see Highcharts.Chart.yAxis\n *\n * @name Highcharts.Chart#axes\n * @type {Array<Highcharts.Axis>}\n */\n this.axes = [];\n /**\n * All the current series in the chart.\n *\n * @name Highcharts.Chart#series\n * @type {Array<Highcharts.Series>}\n */\n this.series = [];\n /**\n * The `Time` object associated with the chart. Since v6.0.5,\n * time settings can be applied individually for each chart. If\n * no individual settings apply, the `Time` object is shared by\n * all instances.\n *\n * @name Highcharts.Chart#time\n * @type {Highcharts.Time}\n */\n this.time =\n userOptions.time && Object.keys(userOptions.time).length ?\n new Time(userOptions.time) :\n H.time;\n /**\n * Callback function to override the default function that formats\n * all the numbers in the chart. Returns a string with the formatted\n * number.\n *\n * @name Highcharts.Chart#numberFormatter\n * @type {Highcharts.NumberFormatterCallbackFunction}\n */\n this.numberFormatter = optionsChart.numberFormatter || numberFormat;\n /**\n * Whether the chart is in styled mode, meaning all presentational\n * attributes are avoided.\n *\n * @name Highcharts.Chart#styledMode\n * @type {boolean}\n */\n this.styledMode = optionsChart.styledMode;\n this.hasCartesianSeries = optionsChart.showAxes;\n var chart = this;\n /**\n * Index position of the chart in the {@link Highcharts#charts}\n * property.\n *\n * @name Highcharts.Chart#index\n * @type {number}\n * @readonly\n */\n chart.index = charts.length; // Add the chart to the global lookup\n charts.push(chart);\n H.chartCount++;\n // Chart event handlers\n registerEventOptions(this, optionsChart);\n /**\n * A collection of the X axes in the chart.\n *\n * @name Highcharts.Chart#xAxis\n * @type {Array<Highcharts.Axis>}\n */\n chart.xAxis = [];\n /**\n * A collection of the Y axes in the chart.\n *\n * @name Highcharts.Chart#yAxis\n * @type {Array<Highcharts.Axis>}\n *\n * @todo\n * Make events official: Fire the event `afterInit`.\n */\n chart.yAxis = [];\n chart.pointCount = chart.colorCounter = chart.symbolCounter = 0;\n // Fire after init but before first render, before axes and series\n // have been initialized.\n fireEvent(chart, 'afterInit');\n chart.firstRender();\n });\n };\n /**\n * Internal function to unitialize an individual series.\n *\n * @private\n * @function Highcharts.Chart#initSeries\n */\n Chart.prototype.initSeries = function (options) {\n var chart = this,\n optionsChart = chart.options.chart,\n type = (options.type ||\n optionsChart.type ||\n optionsChart.defaultSeriesType),\n SeriesClass = seriesTypes[type];\n // No such series type\n if (!SeriesClass) {\n error(17, true, chart, { missingModuleFor: type });\n }\n var series = new SeriesClass();\n if (typeof series.init === 'function') {\n series.init(chart, options);\n }\n return series;\n };\n /**\n * Internal function to set data for all series with enabled sorting.\n *\n * @private\n * @function Highcharts.Chart#setSeriesData\n */\n Chart.prototype.setSeriesData = function () {\n this.getSeriesOrderByLinks().forEach(function (series) {\n // We need to set data for series with sorting after series init\n if (!series.points && !series.data && series.enabledDataSorting) {\n series.setData(series.options.data, false);\n }\n });\n };\n /**\n * Sort and return chart series in order depending on the number of linked\n * series.\n *\n * @private\n * @function Highcharts.Series#getSeriesOrderByLinks\n */\n Chart.prototype.getSeriesOrderByLinks = function () {\n return this.series.concat().sort(function (a, b) {\n if (a.linkedSeries.length || b.linkedSeries.length) {\n return b.linkedSeries.length - a.linkedSeries.length;\n }\n return 0;\n });\n };\n /**\n * Order all series above a given index. When series are added and ordered\n * by configuration, only the last series is handled (#248, #1123, #2456,\n * #6112). This function is called on series initialization and destroy.\n *\n * @private\n * @function Highcharts.Series#orderSeries\n * @param {number} [fromIndex]\n * If this is given, only the series above this index are handled.\n */\n Chart.prototype.orderSeries = function (fromIndex) {\n var series = this.series;\n for (var i = (fromIndex || 0), iEnd = series.length; i < iEnd; ++i) {\n if (series[i]) {\n /**\n * Contains the series' index in the `Chart.series` array.\n *\n * @name Highcharts.Series#index\n * @type {number}\n * @readonly\n */\n series[i].index = i;\n series[i].name = series[i].getName();\n }\n }\n };\n /**\n * Check whether a given point is within the plot area.\n *\n * @function Highcharts.Chart#isInsidePlot\n *\n * @param {number} plotX\n * Pixel x relative to the plot area.\n *\n * @param {number} plotY\n * Pixel y relative to the plot area.\n *\n * @param {Highcharts.ChartIsInsideOptionsObject} [options]\n * Options object.\n *\n * @return {boolean}\n * Returns true if the given point is inside the plot area.\n */\n Chart.prototype.isInsidePlot = function (plotX, plotY, options) {\n var _a;\n if (options === void 0) { options = {}; }\n var _b = this,\n inverted = _b.inverted,\n plotBox = _b.plotBox,\n plotLeft = _b.plotLeft,\n plotTop = _b.plotTop,\n scrollablePlotBox = _b.scrollablePlotBox;\n var scrollLeft = 0,\n scrollTop = 0;\n if (options.visiblePlotOnly && this.scrollingContainer) {\n (_a = this.scrollingContainer, scrollLeft = _a.scrollLeft, scrollTop = _a.scrollTop);\n }\n var series = options.series,\n box = (options.visiblePlotOnly && scrollablePlotBox) || plotBox,\n x = options.inverted ? plotY : plotX,\n y = options.inverted ? plotX : plotY,\n e = {\n x: x,\n y: y,\n isInsidePlot: true,\n options: options\n };\n if (!options.ignoreX) {\n var xAxis = (series &&\n (inverted && !this.polar ? series.yAxis : series.xAxis)) || {\n pos: plotLeft,\n len: Infinity\n };\n var chartX = options.paneCoordinates ?\n xAxis.pos + x : plotLeft + x;\n if (!(chartX >= Math.max(scrollLeft + plotLeft, xAxis.pos) &&\n chartX <= Math.min(scrollLeft + plotLeft + box.width, xAxis.pos + xAxis.len))) {\n e.isInsidePlot = false;\n }\n }\n if (!options.ignoreY && e.isInsidePlot) {\n var yAxis = (options.axis && !options.axis.isXAxis && options.axis) || (series && (inverted ? series.xAxis : series.yAxis)) || {\n pos: plotTop,\n len: Infinity\n };\n var chartY = options.paneCoordinates ?\n yAxis.pos + y : plotTop + y;\n if (!(chartY >= Math.max(scrollTop + plotTop, yAxis.pos) &&\n chartY <= Math.min(scrollTop + plotTop + box.height, yAxis.pos + yAxis.len))) {\n e.isInsidePlot = false;\n }\n }\n fireEvent(this, 'afterIsInsidePlot', e);\n return e.isInsidePlot;\n };\n /**\n * Redraw the chart after changes have been done to the data, axis extremes\n * chart size or chart elements. All methods for updating axes, series or\n * points have a parameter for redrawing the chart. This is `true` by\n * default. But in many cases you want to do more than one operation on the\n * chart before redrawing, for example add a number of points. In those\n * cases it is a waste of resources to redraw the chart for each new point\n * added. So you add the points and call `chart.redraw()` after.\n *\n * @function Highcharts.Chart#redraw\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * If or how to apply animation to the redraw.\n *\n * @emits Highcharts.Chart#event:afterSetExtremes\n * @emits Highcharts.Chart#event:beforeRedraw\n * @emits Highcharts.Chart#event:predraw\n * @emits Highcharts.Chart#event:redraw\n * @emits Highcharts.Chart#event:render\n * @emits Highcharts.Chart#event:updatedData\n */\n Chart.prototype.redraw = function (animation) {\n fireEvent(this, 'beforeRedraw');\n var chart = this,\n axes = chart.hasCartesianSeries ? chart.axes : chart.colorAxis || [],\n series = chart.series,\n pointer = chart.pointer,\n legend = chart.legend,\n legendUserOptions = chart.userOptions.legend,\n renderer = chart.renderer,\n isHiddenChart = renderer.isHidden(),\n afterRedraw = [];\n var hasDirtyStacks,\n hasStackedSeries,\n i,\n isDirtyBox = chart.isDirtyBox,\n redrawLegend = chart.isDirtyLegend,\n serie;\n // Handle responsive rules, not only on resize (#6130)\n if (chart.setResponsive) {\n chart.setResponsive(false);\n }\n // Set the global animation. When chart.hasRendered is not true, the\n // redraw call comes from a responsive rule and animation should not\n // occur.\n setAnimation(chart.hasRendered ? animation : false, chart);\n if (isHiddenChart) {\n chart.temporaryDisplay();\n }\n // Adjust title layout (reflow multiline text)\n chart.layOutTitles();\n // link stacked series\n i = series.length;\n while (i--) {\n serie = series[i];\n if (serie.options.stacking || serie.options.centerInCategory) {\n hasStackedSeries = true;\n if (serie.isDirty) {\n hasDirtyStacks = true;\n break;\n }\n }\n }\n if (hasDirtyStacks) { // mark others as dirty\n i = series.length;\n while (i--) {\n serie = series[i];\n if (serie.options.stacking) {\n serie.isDirty = true;\n }\n }\n }\n // Handle updated data in the series\n series.forEach(function (serie) {\n if (serie.isDirty) {\n if (serie.options.legendType === 'point') {\n if (typeof serie.updateTotals === 'function') {\n serie.updateTotals();\n }\n redrawLegend = true;\n }\n else if (legendUserOptions &&\n (legendUserOptions.labelFormatter ||\n legendUserOptions.labelFormat)) {\n redrawLegend = true; // #2165\n }\n }\n if (serie.isDirtyData) {\n fireEvent(serie, 'updatedData');\n }\n });\n // handle added or removed series\n if (redrawLegend && legend && legend.options.enabled) {\n // draw legend graphics\n legend.render();\n chart.isDirtyLegend = false;\n }\n // reset stacks\n if (hasStackedSeries) {\n chart.getStacks();\n }\n // set axes scales\n axes.forEach(function (axis) {\n axis.updateNames();\n axis.setScale();\n });\n chart.getMargins(); // #3098\n // If one axis is dirty, all axes must be redrawn (#792, #2169)\n axes.forEach(function (axis) {\n if (axis.isDirty) {\n isDirtyBox = true;\n }\n });\n // redraw axes\n axes.forEach(function (axis) {\n // Fire 'afterSetExtremes' only if extremes are set\n var key = axis.min + ',' + axis.max;\n if (axis.extKey !== key) { // #821, #4452\n axis.extKey = key;\n // prevent a recursive call to chart.redraw() (#1119)\n afterRedraw.push(function () {\n fireEvent(axis, 'afterSetExtremes', extend(axis.eventArgs, axis.getExtremes())); // #747, #751\n delete axis.eventArgs;\n });\n }\n if (isDirtyBox || hasStackedSeries) {\n axis.redraw();\n }\n });\n // the plot areas size has changed\n if (isDirtyBox) {\n chart.drawChartBox();\n }\n // Fire an event before redrawing series, used by the boost module to\n // clear previous series renderings.\n fireEvent(chart, 'predraw');\n // redraw affected series\n series.forEach(function (serie) {\n if ((isDirtyBox || serie.isDirty) && serie.visible) {\n serie.redraw();\n }\n // Set it here, otherwise we will have unlimited 'updatedData' calls\n // for a hidden series after setData(). Fixes #6012\n serie.isDirtyData = false;\n });\n // move tooltip or reset\n if (pointer) {\n pointer.reset(true);\n }\n // redraw if canvas\n renderer.draw();\n // Fire the events\n fireEvent(chart, 'redraw');\n fireEvent(chart, 'render');\n if (isHiddenChart) {\n chart.temporaryDisplay(true);\n }\n // Fire callbacks that are put on hold until after the redraw\n afterRedraw.forEach(function (callback) {\n callback.call();\n });\n };\n /**\n * Get an axis, series or point object by `id` as given in the configuration\n * options. Returns `undefined` if no item is found.\n *\n * @sample highcharts/plotoptions/series-id/\n * Get series by id\n *\n * @function Highcharts.Chart#get\n *\n * @param {string} id\n * The id as given in the configuration options.\n *\n * @return {Highcharts.Axis|Highcharts.Series|Highcharts.Point|undefined}\n * The retrieved item.\n */\n Chart.prototype.get = function (id) {\n var series = this.series;\n /**\n * @private\n */\n function itemById(item) {\n return (item.id === id ||\n (item.options && item.options.id === id));\n }\n var ret = \n // Search axes\n find(this.axes,\n itemById) ||\n // Search series\n find(this.series,\n itemById);\n // Search points\n for (var i = 0; !ret && i < series.length; i++) {\n ret = find(series[i].points || [], itemById);\n }\n return ret;\n };\n /**\n * Create the Axis instances based on the config options.\n *\n * @private\n * @function Highcharts.Chart#getAxes\n * @emits Highcharts.Chart#event:afterGetAxes\n * @emits Highcharts.Chart#event:getAxes\n */\n Chart.prototype.getAxes = function () {\n var chart = this,\n options = this.options,\n xAxisOptions = options.xAxis = splat(options.xAxis || {}),\n yAxisOptions = options.yAxis = splat(options.yAxis || {});\n fireEvent(this, 'getAxes');\n // make sure the options are arrays and add some members\n xAxisOptions.forEach(function (axis, i) {\n axis.index = i;\n axis.isX = true;\n });\n yAxisOptions.forEach(function (axis, i) {\n axis.index = i;\n });\n // concatenate all axis options into one array\n var optionsArray = xAxisOptions.concat(yAxisOptions);\n optionsArray.forEach(function (axisOptions) {\n new Axis(chart, axisOptions); // eslint-disable-line no-new\n });\n fireEvent(this, 'afterGetAxes');\n };\n /**\n * Returns an array of all currently selected points in the chart. Points\n * can be selected by clicking or programmatically by the\n * {@link Highcharts.Point#select}\n * function.\n *\n * @sample highcharts/plotoptions/series-allowpointselect-line/\n * Get selected points\n *\n * @function Highcharts.Chart#getSelectedPoints\n *\n * @return {Array<Highcharts.Point>}\n * The currently selected points.\n */\n Chart.prototype.getSelectedPoints = function () {\n return this.series.reduce(function (acc, series) {\n // For one-to-one points inspect series.data in order to retrieve\n // points outside the visible range (#6445). For grouped data,\n // inspect the generated series.points.\n series.getPointsCollection()\n .forEach(function (point) {\n if (pick(point.selectedStaging, point.selected)) {\n acc.push(point);\n }\n });\n return acc;\n }, []);\n };\n /**\n * Returns an array of all currently selected series in the chart. Series\n * can be selected either programmatically by the\n * {@link Highcharts.Series#select}\n * function or by checking the checkbox next to the legend item if\n * [series.showCheckBox](https://api.highcharts.com/highcharts/plotOptions.series.showCheckbox)\n * is true.\n *\n * @sample highcharts/members/chart-getselectedseries/\n * Get selected series\n *\n * @function Highcharts.Chart#getSelectedSeries\n *\n * @return {Array<Highcharts.Series>}\n * The currently selected series.\n */\n Chart.prototype.getSelectedSeries = function () {\n return this.series.filter(function (serie) {\n return serie.selected;\n });\n };\n /**\n * Set a new title or subtitle for the chart.\n *\n * @sample highcharts/members/chart-settitle/\n * Set title text and styles\n *\n * @function Highcharts.Chart#setTitle\n *\n * @param {Highcharts.TitleOptions} [titleOptions]\n * New title options. The title text itself is set by the\n * `titleOptions.text` property.\n *\n * @param {Highcharts.SubtitleOptions} [subtitleOptions]\n * New subtitle options. The subtitle text itself is set by the\n * `subtitleOptions.text` property.\n *\n * @param {boolean} [redraw]\n * Whether to redraw the chart or wait for a later call to\n * `chart.redraw()`.\n */\n Chart.prototype.setTitle = function (titleOptions, subtitleOptions, redraw) {\n this.applyDescription('title', titleOptions);\n this.applyDescription('subtitle', subtitleOptions);\n // The initial call also adds the caption. On update, chart.update will\n // relay to Chart.setCaption.\n this.applyDescription('caption', void 0);\n this.layOutTitles(redraw);\n };\n /**\n * Apply a title, subtitle or caption for the chart\n *\n * @private\n * @function Highcharts.Chart#applyDescription\n * @param name {string}\n * Either title, subtitle or caption\n * @param {Highcharts.TitleOptions|Highcharts.SubtitleOptions|Highcharts.CaptionOptions|undefined} explicitOptions\n * The options to set, will be merged with default options.\n */\n Chart.prototype.applyDescription = function (name, explicitOptions) {\n var chart = this;\n // Default style\n var style = name === 'title' ? {\n color: \"#333333\" /* Palette.neutralColor80 */,\n fontSize: this.options.isStock ? '16px' : '18px' // #2944\n } : {\n color: \"#666666\" /* Palette.neutralColor60 */\n };\n // Merge default options with explicit options\n var options = this.options[name] = merge(\n // Default styles\n (!this.styledMode && { style: style }),\n this.options[name],\n explicitOptions);\n var elem = this[name];\n if (elem && explicitOptions) {\n this[name] = elem = elem.destroy(); // remove old\n }\n if (options && !elem) {\n elem = this.renderer.text(options.text, 0, 0, options.useHTML)\n .attr({\n align: options.align,\n 'class': 'highcharts-' + name,\n zIndex: options.zIndex || 4\n })\n .add();\n // Update methods, shortcut to Chart.setTitle, Chart.setSubtitle and\n // Chart.setCaption\n elem.update = function (updateOptions) {\n var fn = {\n title: 'setTitle',\n subtitle: 'setSubtitle',\n caption: 'setCaption'\n }[name];\n chart[fn](updateOptions);\n };\n // Presentational\n if (!this.styledMode) {\n elem.css(options.style);\n }\n /**\n * The chart title. The title has an `update` method that allows\n * modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @sample highcharts/members/title-update/\n * Updating titles\n *\n * @name Highcharts.Chart#title\n * @type {Highcharts.TitleObject}\n */\n /**\n * The chart subtitle. The subtitle has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @name Highcharts.Chart#subtitle\n * @type {Highcharts.SubtitleObject}\n */\n this[name] = elem;\n }\n };\n /**\n * Internal function to lay out the chart title, subtitle and caption, and\n * cache the full offset height for use in `getMargins`. The result is\n * stored in `this.titleOffset`.\n *\n * @private\n * @function Highcharts.Chart#layOutTitles\n *\n * @param {boolean} [redraw=true]\n * @emits Highcharts.Chart#event:afterLayOutTitles\n */\n Chart.prototype.layOutTitles = function (redraw) {\n var titleOffset = [0, 0, 0],\n renderer = this.renderer,\n spacingBox = this.spacingBox;\n // Lay out the title and the subtitle respectively\n ['title', 'subtitle', 'caption'].forEach(function (key) {\n var title = this[key], titleOptions = (this.options[key]), verticalAlign = titleOptions.verticalAlign || 'top', offset = key === 'title' ?\n verticalAlign === 'top' ? -3 : 0 :\n // Floating subtitle (#6574)\n verticalAlign === 'top' ? titleOffset[0] + 2 : 0;\n var titleSize,\n height;\n if (title) {\n if (!this.styledMode) {\n titleSize = (titleOptions.style &&\n titleOptions.style.fontSize);\n }\n titleSize = renderer.fontMetrics(titleSize, title).b;\n title\n .css({\n width: (titleOptions.width ||\n spacingBox.width + (titleOptions.widthAdjust || 0)) + 'px'\n });\n // Skip the cache for HTML (#3481, #11666)\n height = Math.round(title.getBBox(titleOptions.useHTML).height);\n title.align(extend({\n y: verticalAlign === 'bottom' ?\n titleSize :\n offset + titleSize,\n height: height\n }, titleOptions), false, 'spacingBox');\n if (!titleOptions.floating) {\n if (verticalAlign === 'top') {\n titleOffset[0] = Math.ceil(titleOffset[0] +\n height);\n }\n else if (verticalAlign === 'bottom') {\n titleOffset[2] = Math.ceil(titleOffset[2] +\n height);\n }\n }\n }\n }, this);\n // Handle title.margin and caption.margin\n if (titleOffset[0] &&\n (this.options.title.verticalAlign || 'top') === 'top') {\n titleOffset[0] += this.options.title.margin;\n }\n if (titleOffset[2] &&\n this.options.caption.verticalAlign === 'bottom') {\n titleOffset[2] += this.options.caption.margin;\n }\n var requiresDirtyBox = (!this.titleOffset ||\n this.titleOffset.join(',') !== titleOffset.join(','));\n // Used in getMargins\n this.titleOffset = titleOffset;\n fireEvent(this, 'afterLayOutTitles');\n if (!this.isDirtyBox && requiresDirtyBox) {\n this.isDirtyBox = this.isDirtyLegend = requiresDirtyBox;\n // Redraw if necessary (#2719, #2744)\n if (this.hasRendered && pick(redraw, true) && this.isDirtyBox) {\n this.redraw();\n }\n }\n };\n /**\n * Internal function to get the chart width and height according to options\n * and container size. Sets {@link Chart.chartWidth} and\n * {@link Chart.chartHeight}.\n *\n * @private\n * @function Highcharts.Chart#getChartSize\n */\n Chart.prototype.getChartSize = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n widthOption = optionsChart.width,\n heightOption = optionsChart.height,\n renderTo = chart.renderTo;\n // Get inner width and height\n if (!defined(widthOption)) {\n chart.containerWidth = getStyle(renderTo, 'width');\n }\n if (!defined(heightOption)) {\n chart.containerHeight = getStyle(renderTo, 'height');\n }\n /**\n * The current pixel width of the chart.\n *\n * @name Highcharts.Chart#chartWidth\n * @type {number}\n */\n chart.chartWidth = Math.max(// #1393\n 0, widthOption || chart.containerWidth || 600 // #1460\n );\n /**\n * The current pixel height of the chart.\n *\n * @name Highcharts.Chart#chartHeight\n * @type {number}\n */\n chart.chartHeight = Math.max(0, relativeLength(heightOption, chart.chartWidth) ||\n (chart.containerHeight > 1 ?\n chart.containerHeight :\n 400));\n };\n /**\n * If the renderTo element has no offsetWidth, most likely one or more of\n * its parents are hidden. Loop up the DOM tree to temporarily display the\n * parents, then save the original display properties, and when the true\n * size is retrieved, reset them. Used on first render and on redraws.\n *\n * @private\n * @function Highcharts.Chart#temporaryDisplay\n *\n * @param {boolean} [revert]\n * Revert to the saved original styles.\n */\n Chart.prototype.temporaryDisplay = function (revert) {\n var node = this.renderTo,\n tempStyle;\n if (!revert) {\n while (node && node.style) {\n // When rendering to a detached node, it needs to be temporarily\n // attached in order to read styling and bounding boxes (#5783,\n // #7024).\n if (!doc.body.contains(node) && !node.parentNode) {\n node.hcOrigDetached = true;\n doc.body.appendChild(node);\n }\n if (getStyle(node, 'display', false) === 'none' ||\n node.hcOricDetached) {\n node.hcOrigStyle = {\n display: node.style.display,\n height: node.style.height,\n overflow: node.style.overflow\n };\n tempStyle = {\n display: 'block',\n overflow: 'hidden'\n };\n if (node !== this.renderTo) {\n tempStyle.height = 0;\n }\n css(node, tempStyle);\n // If it still doesn't have an offset width after setting\n // display to block, it probably has an !important priority\n // #2631, 6803\n if (!node.offsetWidth) {\n node.style.setProperty('display', 'block', 'important');\n }\n }\n node = node.parentNode;\n if (node === doc.body) {\n break;\n }\n }\n }\n else {\n while (node && node.style) {\n if (node.hcOrigStyle) {\n css(node, node.hcOrigStyle);\n delete node.hcOrigStyle;\n }\n if (node.hcOrigDetached) {\n doc.body.removeChild(node);\n node.hcOrigDetached = false;\n }\n node = node.parentNode;\n }\n }\n };\n /**\n * Set the {@link Chart.container|chart container's} class name, in\n * addition to `highcharts-container`.\n *\n * @function Highcharts.Chart#setClassName\n *\n * @param {string} [className]\n * The additional class name.\n */\n Chart.prototype.setClassName = function (className) {\n this.container.className = 'highcharts-container ' + (className || '');\n };\n /**\n * Get the containing element, determine the size and create the inner\n * container div to hold the chart.\n *\n * @private\n * @function Highcharts.Chart#afterGetContainer\n * @emits Highcharts.Chart#event:afterGetContainer\n */\n Chart.prototype.getContainer = function () {\n var chart = this,\n options = chart.options,\n optionsChart = options.chart,\n indexAttrName = 'data-highcharts-chart',\n containerId = uniqueKey();\n var containerStyle,\n renderTo = chart.renderTo;\n if (!renderTo) {\n chart.renderTo = renderTo =\n optionsChart.renderTo;\n }\n if (isString(renderTo)) {\n chart.renderTo = renderTo =\n doc.getElementById(renderTo);\n }\n // Display an error if the renderTo is wrong\n if (!renderTo) {\n error(13, true, chart);\n }\n // If the container already holds a chart, destroy it. The check for\n // hasRendered is there because web pages that are saved to disk from\n // the browser, will preserve the data-highcharts-chart attribute and\n // the SVG contents, but not an interactive chart. So in this case,\n // charts[oldChartIndex] will point to the wrong chart if any (#2609).\n var oldChartIndex = pInt(attr(renderTo,\n indexAttrName));\n if (isNumber(oldChartIndex) &&\n charts[oldChartIndex] &&\n charts[oldChartIndex].hasRendered) {\n charts[oldChartIndex].destroy();\n }\n // Make a reference to the chart from the div\n attr(renderTo, indexAttrName, chart.index);\n // remove previous chart\n renderTo.innerHTML = AST.emptyHTML;\n // If the container doesn't have an offsetWidth, it has or is a child of\n // a node that has display:none. We need to temporarily move it out to a\n // visible state to determine the size, else the legend and tooltips\n // won't render properly. The skipClone option is used in sparklines as\n // a micro optimization, saving about 1-2 ms each chart.\n if (!optionsChart.skipClone && !renderTo.offsetWidth) {\n chart.temporaryDisplay();\n }\n // get the width and height\n chart.getChartSize();\n var chartWidth = chart.chartWidth;\n var chartHeight = chart.chartHeight;\n // Allow table cells and flex-boxes to shrink without the chart blocking\n // them out (#6427)\n css(renderTo, { overflow: 'hidden' });\n // Create the inner container\n if (!chart.styledMode) {\n containerStyle = extend({\n position: 'relative',\n // needed for context menu (avoidscrollbars) and content\n // overflow in IE\n overflow: 'hidden',\n width: chartWidth + 'px',\n height: chartHeight + 'px',\n textAlign: 'left',\n lineHeight: 'normal',\n zIndex: 0,\n '-webkit-tap-highlight-color': 'rgba(0,0,0,0)',\n userSelect: 'none',\n 'touch-action': 'manipulation',\n outline: 'none'\n }, optionsChart.style || {});\n }\n /**\n * The containing HTML element of the chart. The container is\n * dynamically inserted into the element given as the `renderTo`\n * parameter in the {@link Highcharts#chart} constructor.\n *\n * @name Highcharts.Chart#container\n * @type {Highcharts.HTMLDOMElement}\n */\n var container = createElement('div', {\n id: containerId\n },\n containerStyle,\n renderTo);\n chart.container = container;\n // cache the cursor (#1650)\n chart._cursor = container.style.cursor;\n // Initialize the renderer\n var Renderer = optionsChart.renderer || !svg ?\n RendererRegistry.getRendererType(optionsChart.renderer) :\n SVGRenderer;\n /**\n * The renderer instance of the chart. Each chart instance has only one\n * associated renderer.\n *\n * @name Highcharts.Chart#renderer\n * @type {Highcharts.SVGRenderer}\n */\n chart.renderer = new Renderer(container, chartWidth, chartHeight, void 0, optionsChart.forExport, options.exporting && options.exporting.allowHTML, chart.styledMode);\n // Set the initial animation from the options\n setAnimation(void 0, chart);\n chart.setClassName(optionsChart.className);\n if (!chart.styledMode) {\n chart.renderer.setStyle(optionsChart.style);\n }\n else {\n // Initialize definitions\n for (var key in options.defs) { // eslint-disable-line guard-for-in\n this.renderer.definition(options.defs[key]);\n }\n }\n // Add a reference to the charts index\n chart.renderer.chartIndex = chart.index;\n fireEvent(this, 'afterGetContainer');\n };\n /**\n * Calculate margins by rendering axis labels in a preliminary position.\n * Title, subtitle and legend have already been rendered at this stage, but\n * will be moved into their final positions.\n *\n * @private\n * @function Highcharts.Chart#getMargins\n * @emits Highcharts.Chart#event:getMargins\n */\n Chart.prototype.getMargins = function (skipAxes) {\n var _a = this,\n spacing = _a.spacing,\n margin = _a.margin,\n titleOffset = _a.titleOffset;\n this.resetMargins();\n // Adjust for title and subtitle\n if (titleOffset[0] && !defined(margin[0])) {\n this.plotTop = Math.max(this.plotTop, titleOffset[0] + spacing[0]);\n }\n if (titleOffset[2] && !defined(margin[2])) {\n this.marginBottom = Math.max(this.marginBottom, titleOffset[2] + spacing[2]);\n }\n // Adjust for legend\n if (this.legend && this.legend.display) {\n this.legend.adjustMargins(margin, spacing);\n }\n fireEvent(this, 'getMargins');\n if (!skipAxes) {\n this.getAxisMargins();\n }\n };\n /**\n * @private\n * @function Highcharts.Chart#getAxisMargins\n */\n Chart.prototype.getAxisMargins = function () {\n var chart = this, \n // [top, right, bottom, left]\n axisOffset = chart.axisOffset = [0, 0, 0, 0],\n colorAxis = chart.colorAxis,\n margin = chart.margin,\n getOffset = function (axes) {\n axes.forEach(function (axis) {\n if (axis.visible) {\n axis.getOffset();\n }\n });\n };\n // pre-render axes to get labels offset width\n if (chart.hasCartesianSeries) {\n getOffset(chart.axes);\n }\n else if (colorAxis && colorAxis.length) {\n getOffset(colorAxis);\n }\n // Add the axis offsets\n marginNames.forEach(function (m, side) {\n if (!defined(margin[side])) {\n chart[m] += axisOffset[side];\n }\n });\n chart.setChartSize();\n };\n /**\n * Reflows the chart to its container. By default, the chart reflows\n * automatically to its container following a `window.resize` event, as per\n * the [chart.reflow](https://api.highcharts.com/highcharts/chart.reflow)\n * option. However, there are no reliable events for div resize, so if the\n * container is resized without a window resize event, this must be called\n * explicitly.\n *\n * @sample highcharts/members/chart-reflow/\n * Resize div and reflow\n * @sample highcharts/chart/events-container/\n * Pop up and reflow\n *\n * @function Highcharts.Chart#reflow\n *\n * @param {global.Event} [e]\n * Event arguments. Used primarily when the function is called\n * internally as a response to window resize.\n */\n Chart.prototype.reflow = function (e) {\n var chart = this, optionsChart = chart.options.chart, renderTo = chart.renderTo, hasUserSize = (defined(optionsChart.width) &&\n defined(optionsChart.height)), width = optionsChart.width || getStyle(renderTo, 'width'), height = optionsChart.height || getStyle(renderTo, 'height'), target = e ? e.target : win;\n delete chart.pointer.chartPosition;\n // Width and height checks for display:none. Target is doc in IE8 and\n // Opera, win in Firefox, Chrome and IE9.\n if (!hasUserSize &&\n !chart.isPrinting &&\n width &&\n height &&\n (target === win || target === doc)) {\n if (width !== chart.containerWidth ||\n height !== chart.containerHeight) {\n U.clearTimeout(chart.reflowTimeout);\n // When called from window.resize, e is set, else it's called\n // directly (#2224)\n chart.reflowTimeout = syncTimeout(function () {\n // Set size, it may have been destroyed in the meantime\n // (#1257)\n if (chart.container) {\n chart.setSize(void 0, void 0, false);\n }\n }, e ? 100 : 0);\n }\n chart.containerWidth = width;\n chart.containerHeight = height;\n }\n };\n /**\n * Toggle the event handlers necessary for auto resizing, depending on the\n * `chart.reflow` option.\n *\n * @private\n * @function Highcharts.Chart#setReflow\n */\n Chart.prototype.setReflow = function (reflow) {\n var chart = this;\n if (reflow !== false && !this.unbindReflow) {\n this.unbindReflow = addEvent(win, 'resize', function (e) {\n // a removed event listener still runs in Edge and IE if the\n // listener was removed while the event runs, so check if the\n // chart is not destroyed (#11609)\n if (chart.options) {\n chart.reflow(e);\n }\n });\n addEvent(this, 'destroy', this.unbindReflow);\n }\n else if (reflow === false && this.unbindReflow) {\n // Unbind and unset\n this.unbindReflow = this.unbindReflow();\n }\n // The following will add listeners to re-fit the chart before and after\n // printing (#2284). However it only works in WebKit. Should have worked\n // in Firefox, but not supported in IE.\n /*\n if (win.matchMedia) {\n win.matchMedia('print').addListener(function reflow() {\n chart.reflow();\n });\n }\n //*/\n };\n /**\n * Resize the chart to a given width and height. In order to set the width\n * only, the height argument may be skipped. To set the height only, pass\n * `undefined` for the width.\n *\n * @sample highcharts/members/chart-setsize-button/\n * Test resizing from buttons\n * @sample highcharts/members/chart-setsize-jquery-resizable/\n * Add a jQuery UI resizable\n * @sample stock/members/chart-setsize/\n * Highcharts Stock with UI resizable\n *\n * @function Highcharts.Chart#setSize\n *\n * @param {number|null} [width]\n * The new pixel width of the chart. Since v4.2.6, the argument can\n * be `undefined` in order to preserve the current value (when\n * setting height only), or `null` to adapt to the width of the\n * containing element.\n *\n * @param {number|null} [height]\n * The new pixel height of the chart. Since v4.2.6, the argument can\n * be `undefined` in order to preserve the current value, or `null`\n * in order to adapt to the height of the containing element.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=true]\n * Whether and how to apply animation.\n *\n *\n * @emits Highcharts.Chart#event:endResize\n * @emits Highcharts.Chart#event:resize\n */\n Chart.prototype.setSize = function (width, height, animation) {\n var chart = this,\n renderer = chart.renderer;\n // Handle the isResizing counter\n chart.isResizing += 1;\n // set the animation for the current process\n setAnimation(animation, chart);\n var globalAnimation = renderer.globalAnimation;\n chart.oldChartHeight = chart.chartHeight;\n chart.oldChartWidth = chart.chartWidth;\n if (typeof width !== 'undefined') {\n chart.options.chart.width = width;\n }\n if (typeof height !== 'undefined') {\n chart.options.chart.height = height;\n }\n chart.getChartSize();\n // Resize the container with the global animation applied if enabled\n // (#2503)\n if (!chart.styledMode) {\n (globalAnimation ? animate : css)(chart.container, {\n width: chart.chartWidth + 'px',\n height: chart.chartHeight + 'px'\n }, globalAnimation);\n }\n chart.setChartSize(true);\n renderer.setSize(chart.chartWidth, chart.chartHeight, globalAnimation);\n // handle axes\n chart.axes.forEach(function (axis) {\n axis.isDirty = true;\n axis.setScale();\n });\n chart.isDirtyLegend = true; // force legend redraw\n chart.isDirtyBox = true; // force redraw of plot and chart border\n chart.layOutTitles(); // #2857\n chart.getMargins();\n chart.redraw(globalAnimation);\n chart.oldChartHeight = null;\n fireEvent(chart, 'resize');\n // Fire endResize and set isResizing back. If animation is disabled,\n // fire without delay\n syncTimeout(function () {\n if (chart) {\n fireEvent(chart, 'endResize', null, function () {\n chart.isResizing -= 1;\n });\n }\n }, animObject(globalAnimation).duration);\n };\n /**\n * Set the public chart properties. This is done before and after the\n * pre-render to determine margin sizes.\n *\n * @private\n * @function Highcharts.Chart#setChartSize\n * @emits Highcharts.Chart#event:afterSetChartSize\n */\n Chart.prototype.setChartSize = function (skipAxes) {\n var chart = this,\n inverted = chart.inverted,\n renderer = chart.renderer,\n chartWidth = chart.chartWidth,\n chartHeight = chart.chartHeight,\n optionsChart = chart.options.chart,\n spacing = chart.spacing,\n clipOffset = chart.clipOffset;\n var plotLeft,\n plotTop,\n plotWidth,\n plotHeight;\n /**\n * The current left position of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotLeft\n * @type {number}\n */\n chart.plotLeft = plotLeft = Math.round(chart.plotLeft);\n /**\n * The current top position of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotTop\n * @type {number}\n */\n chart.plotTop = plotTop = Math.round(chart.plotTop);\n /**\n * The current width of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotWidth\n * @type {number}\n */\n chart.plotWidth = plotWidth = Math.max(0, Math.round(chartWidth - plotLeft - chart.marginRight));\n /**\n * The current height of the plot area in pixels.\n *\n * @name Highcharts.Chart#plotHeight\n * @type {number}\n */\n chart.plotHeight = plotHeight = Math.max(0, Math.round(chartHeight - plotTop - chart.marginBottom));\n chart.plotSizeX = inverted ? plotHeight : plotWidth;\n chart.plotSizeY = inverted ? plotWidth : plotHeight;\n chart.plotBorderWidth = optionsChart.plotBorderWidth || 0;\n // Set boxes used for alignment\n chart.spacingBox = renderer.spacingBox = {\n x: spacing[3],\n y: spacing[0],\n width: chartWidth - spacing[3] - spacing[1],\n height: chartHeight - spacing[0] - spacing[2]\n };\n chart.plotBox = renderer.plotBox = {\n x: plotLeft,\n y: plotTop,\n width: plotWidth,\n height: plotHeight\n };\n var plotBorderWidth = 2 * Math.floor(chart.plotBorderWidth / 2),\n clipX = Math.ceil(Math.max(plotBorderWidth,\n clipOffset[3]) / 2),\n clipY = Math.ceil(Math.max(plotBorderWidth,\n clipOffset[0]) / 2);\n chart.clipBox = {\n x: clipX,\n y: clipY,\n width: Math.floor(chart.plotSizeX -\n Math.max(plotBorderWidth, clipOffset[1]) / 2 -\n clipX),\n height: Math.max(0, Math.floor(chart.plotSizeY -\n Math.max(plotBorderWidth, clipOffset[2]) / 2 -\n clipY))\n };\n if (!skipAxes) {\n chart.axes.forEach(function (axis) {\n axis.setAxisSize();\n axis.setAxisTranslation();\n });\n renderer.alignElements();\n }\n fireEvent(chart, 'afterSetChartSize', { skipAxes: skipAxes });\n };\n /**\n * Initial margins before auto size margins are applied.\n *\n * @private\n * @function Highcharts.Chart#resetMargins\n */\n Chart.prototype.resetMargins = function () {\n fireEvent(this, 'resetMargins');\n var chart = this,\n chartOptions = chart.options.chart;\n // Create margin and spacing array\n ['margin', 'spacing'].forEach(function splashArrays(target) {\n var value = chartOptions[target],\n values = isObject(value) ? value : [value,\n value,\n value,\n value];\n [\n 'Top',\n 'Right',\n 'Bottom',\n 'Left'\n ].forEach(function (sideName, side) {\n chart[target][side] = pick(chartOptions[target + sideName], values[side]);\n });\n });\n // Set margin names like chart.plotTop, chart.plotLeft,\n // chart.marginRight, chart.marginBottom.\n marginNames.forEach(function (m, side) {\n chart[m] = pick(chart.margin[side], chart.spacing[side]);\n });\n chart.axisOffset = [0, 0, 0, 0]; // top, right, bottom, left\n chart.clipOffset = [0, 0, 0, 0];\n };\n /**\n * Internal function to draw or redraw the borders and backgrounds for chart\n * and plot area.\n *\n * @private\n * @function Highcharts.Chart#drawChartBox\n * @emits Highcharts.Chart#event:afterDrawChartBox\n */\n Chart.prototype.drawChartBox = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n renderer = chart.renderer,\n chartWidth = chart.chartWidth,\n chartHeight = chart.chartHeight,\n styledMode = chart.styledMode,\n plotBGImage = chart.plotBGImage,\n chartBackgroundColor = optionsChart.backgroundColor,\n plotBackgroundColor = optionsChart.plotBackgroundColor,\n plotBackgroundImage = optionsChart.plotBackgroundImage,\n plotLeft = chart.plotLeft,\n plotTop = chart.plotTop,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n plotBox = chart.plotBox,\n clipRect = chart.clipRect,\n clipBox = chart.clipBox;\n var chartBackground = chart.chartBackground,\n plotBackground = chart.plotBackground,\n plotBorder = chart.plotBorder,\n chartBorderWidth,\n mgn,\n bgAttr,\n verb = 'animate';\n // Chart area\n if (!chartBackground) {\n chart.chartBackground = chartBackground = renderer.rect()\n .addClass('highcharts-background')\n .add();\n verb = 'attr';\n }\n if (!styledMode) {\n // Presentational\n chartBorderWidth = optionsChart.borderWidth || 0;\n mgn = chartBorderWidth + (optionsChart.shadow ? 8 : 0);\n bgAttr = {\n fill: chartBackgroundColor || 'none'\n };\n if (chartBorderWidth || chartBackground['stroke-width']) { // #980\n bgAttr.stroke = optionsChart.borderColor;\n bgAttr['stroke-width'] = chartBorderWidth;\n }\n chartBackground\n .attr(bgAttr)\n .shadow(optionsChart.shadow);\n }\n else {\n chartBorderWidth = mgn = chartBackground.strokeWidth();\n }\n chartBackground[verb]({\n x: mgn / 2,\n y: mgn / 2,\n width: chartWidth - mgn - chartBorderWidth % 2,\n height: chartHeight - mgn - chartBorderWidth % 2,\n r: optionsChart.borderRadius\n });\n // Plot background\n verb = 'animate';\n if (!plotBackground) {\n verb = 'attr';\n chart.plotBackground = plotBackground = renderer.rect()\n .addClass('highcharts-plot-background')\n .add();\n }\n plotBackground[verb](plotBox);\n if (!styledMode) {\n // Presentational attributes for the background\n plotBackground\n .attr({\n fill: plotBackgroundColor || 'none'\n })\n .shadow(optionsChart.plotShadow);\n // Create the background image\n if (plotBackgroundImage) {\n if (!plotBGImage) {\n chart.plotBGImage = renderer.image(plotBackgroundImage, plotLeft, plotTop, plotWidth, plotHeight).add();\n }\n else {\n if (plotBackgroundImage !== plotBGImage.attr('href')) {\n plotBGImage.attr('href', plotBackgroundImage);\n }\n plotBGImage.animate(plotBox);\n }\n }\n }\n // Plot clip\n if (!clipRect) {\n chart.clipRect = renderer.clipRect(clipBox);\n }\n else {\n clipRect.animate({\n width: clipBox.width,\n height: clipBox.height\n });\n }\n // Plot area border\n verb = 'animate';\n if (!plotBorder) {\n verb = 'attr';\n chart.plotBorder = plotBorder = renderer.rect()\n .addClass('highcharts-plot-border')\n .attr({\n zIndex: 1 // Above the grid\n })\n .add();\n }\n if (!styledMode) {\n // Presentational\n plotBorder.attr({\n stroke: optionsChart.plotBorderColor,\n 'stroke-width': optionsChart.plotBorderWidth || 0,\n fill: 'none'\n });\n }\n plotBorder[verb](plotBorder.crisp({\n x: plotLeft,\n y: plotTop,\n width: plotWidth,\n height: plotHeight\n }, -plotBorder.strokeWidth())); // #3282 plotBorder should be negative;\n // reset\n chart.isDirtyBox = false;\n fireEvent(this, 'afterDrawChartBox');\n };\n /**\n * Detect whether a certain chart property is needed based on inspecting its\n * options and series. This mainly applies to the chart.inverted property,\n * and in extensions to the chart.angular and chart.polar properties.\n *\n * @private\n * @function Highcharts.Chart#propFromSeries\n */\n Chart.prototype.propFromSeries = function () {\n var chart = this,\n optionsChart = chart.options.chart,\n seriesOptions = chart.options.series;\n var i,\n klass,\n value;\n /**\n * The flag is set to `true` if a series of the chart is inverted.\n *\n * @name Highcharts.Chart#inverted\n * @type {boolean|undefined}\n */\n ['inverted', 'angular', 'polar'].forEach(function (key) {\n // The default series type's class\n klass = seriesTypes[(optionsChart.type || optionsChart.defaultSeriesType)];\n // Get the value from available chart-wide properties\n value =\n // It is set in the options:\n optionsChart[key] ||\n // The default series class:\n (klass && klass.prototype[key]);\n // requires it\n // 4. Check if any the chart's series require it\n i = seriesOptions && seriesOptions.length;\n while (!value && i--) {\n klass = seriesTypes[seriesOptions[i].type];\n if (klass && klass.prototype[key]) {\n value = true;\n }\n }\n // Set the chart property\n chart[key] = value;\n });\n };\n /**\n * Internal function to link two or more series together, based on the\n * `linkedTo` option. This is done from `Chart.render`, and after\n * `Chart.addSeries` and `Series.remove`.\n *\n * @private\n * @function Highcharts.Chart#linkSeries\n * @emits Highcharts.Chart#event:afterLinkSeries\n */\n Chart.prototype.linkSeries = function () {\n var chart = this,\n chartSeries = chart.series;\n // Reset links\n chartSeries.forEach(function (series) {\n series.linkedSeries.length = 0;\n });\n // Apply new links\n chartSeries.forEach(function (series) {\n var linkedTo = series.options.linkedTo;\n if (isString(linkedTo)) {\n if (linkedTo === ':previous') {\n linkedTo = chart.series[series.index - 1];\n }\n else {\n linkedTo = chart.get(linkedTo);\n }\n // #3341 avoid mutual linking\n if (linkedTo && linkedTo.linkedParent !== series) {\n linkedTo.linkedSeries.push(series);\n series.linkedParent = linkedTo;\n if (linkedTo.enabledDataSorting) {\n series.setDataSortingOptions();\n }\n series.visible = pick(series.options.visible, linkedTo.options.visible, series.visible); // #3879\n }\n }\n });\n fireEvent(this, 'afterLinkSeries');\n };\n /**\n * Render series for the chart.\n *\n * @private\n * @function Highcharts.Chart#renderSeries\n */\n Chart.prototype.renderSeries = function () {\n this.series.forEach(function (serie) {\n serie.translate();\n serie.render();\n });\n };\n /**\n * Render labels for the chart.\n *\n * @private\n * @function Highcharts.Chart#renderLabels\n */\n Chart.prototype.renderLabels = function () {\n var chart = this,\n labels = chart.options.labels;\n if (labels.items) {\n labels.items.forEach(function (label) {\n var style = extend(labels.style,\n label.style),\n x = pInt(style.left) + chart.plotLeft,\n y = pInt(style.top) + chart.plotTop + 12;\n // delete to prevent rewriting in IE\n delete style.left;\n delete style.top;\n chart.renderer.text(label.html, x, y)\n .attr({ zIndex: 2 })\n .css(style)\n .add();\n });\n }\n };\n /**\n * Render all graphics for the chart. Runs internally on initialization.\n *\n * @private\n * @function Highcharts.Chart#render\n */\n Chart.prototype.render = function () {\n var chart = this,\n axes = chart.axes,\n colorAxis = chart.colorAxis,\n renderer = chart.renderer,\n options = chart.options,\n renderAxes = function (axes) {\n axes.forEach(function (axis) {\n if (axis.visible) {\n axis.render();\n }\n });\n };\n var correction = 0; // correction for X axis labels\n // Title\n chart.setTitle();\n /**\n * The overview of the chart's series.\n *\n * @name Highcharts.Chart#legend\n * @type {Highcharts.Legend}\n */\n chart.legend = new Legend(chart, options.legend);\n // Get stacks\n if (chart.getStacks) {\n chart.getStacks();\n }\n // Get chart margins\n chart.getMargins(true);\n chart.setChartSize();\n // Record preliminary dimensions for later comparison\n var tempWidth = chart.plotWidth;\n axes.some(function (axis) {\n if (axis.horiz &&\n axis.visible &&\n axis.options.labels.enabled &&\n axis.series.length) {\n // 21 is the most common correction for X axis labels\n correction = 21;\n return true;\n }\n });\n // use Math.max to prevent negative plotHeight\n chart.plotHeight = Math.max(chart.plotHeight - correction, 0);\n var tempHeight = chart.plotHeight;\n // Get margins by pre-rendering axes\n axes.forEach(function (axis) {\n axis.setScale();\n });\n chart.getAxisMargins();\n // If the plot area size has changed significantly, calculate tick\n // positions again\n var redoHorizontal = tempWidth / chart.plotWidth > 1.1;\n // Height is more sensitive, use lower threshold\n var redoVertical = tempHeight / chart.plotHeight > 1.05;\n if (redoHorizontal || redoVertical) {\n axes.forEach(function (axis) {\n if ((axis.horiz && redoHorizontal) ||\n (!axis.horiz && redoVertical)) {\n // update to reflect the new margins\n axis.setTickInterval(true);\n }\n });\n chart.getMargins(); // second pass to check for new labels\n }\n // Draw the borders and backgrounds\n chart.drawChartBox();\n // Axes\n if (chart.hasCartesianSeries) {\n renderAxes(axes);\n }\n else if (colorAxis && colorAxis.length) {\n renderAxes(colorAxis);\n }\n // The series\n if (!chart.seriesGroup) {\n chart.seriesGroup = renderer.g('series-group')\n .attr({ zIndex: 3 })\n .add();\n }\n chart.renderSeries();\n // Labels\n chart.renderLabels();\n // Credits\n chart.addCredits();\n // Handle responsiveness\n if (chart.setResponsive) {\n chart.setResponsive();\n }\n // Set flag\n chart.hasRendered = true;\n };\n /**\n * Set a new credits label for the chart.\n *\n * @sample highcharts/credits/credits-update/\n * Add and update credits\n *\n * @function Highcharts.Chart#addCredits\n *\n * @param {Highcharts.CreditsOptions} [credits]\n * A configuration object for the new credits.\n */\n Chart.prototype.addCredits = function (credits) {\n var chart = this,\n creds = merge(true,\n this.options.credits,\n credits);\n if (creds.enabled && !this.credits) {\n /**\n * The chart's credits label. The label has an `update` method that\n * allows setting new options as per the\n * [credits options set](https://api.highcharts.com/highcharts/credits).\n *\n * @name Highcharts.Chart#credits\n * @type {Highcharts.SVGElement}\n */\n this.credits = this.renderer.text(creds.text + (this.mapCredits || ''), 0, 0)\n .addClass('highcharts-credits')\n .on('click', function () {\n if (creds.href) {\n win.location.href = creds.href;\n }\n })\n .attr({\n align: creds.position.align,\n zIndex: 8\n });\n if (!chart.styledMode) {\n this.credits.css(creds.style);\n }\n this.credits\n .add()\n .align(creds.position);\n // Dynamically update\n this.credits.update = function (options) {\n chart.credits = chart.credits.destroy();\n chart.addCredits(options);\n };\n }\n };\n /**\n * Remove the chart and purge memory. This method is called internally\n * before adding a second chart into the same container, as well as on\n * window unload to prevent leaks.\n *\n * @sample highcharts/members/chart-destroy/\n * Destroy the chart from a button\n * @sample stock/members/chart-destroy/\n * Destroy with Highcharts Stock\n *\n * @function Highcharts.Chart#destroy\n *\n * @emits Highcharts.Chart#event:destroy\n */\n Chart.prototype.destroy = function () {\n var chart = this,\n axes = chart.axes,\n series = chart.series,\n container = chart.container,\n parentNode = container && container.parentNode;\n var i;\n // fire the chart.destoy event\n fireEvent(chart, 'destroy');\n // Delete the chart from charts lookup array\n if (chart.renderer.forExport) {\n erase(charts, chart); // #6569\n }\n else {\n charts[chart.index] = void 0;\n }\n H.chartCount--;\n chart.renderTo.removeAttribute('data-highcharts-chart');\n // remove events\n removeEvent(chart);\n // ==== Destroy collections:\n // Destroy axes\n i = axes.length;\n while (i--) {\n axes[i] = axes[i].destroy();\n }\n // Destroy scroller & scroller series before destroying base series\n if (this.scroller && this.scroller.destroy) {\n this.scroller.destroy();\n }\n // Destroy each series\n i = series.length;\n while (i--) {\n series[i] = series[i].destroy();\n }\n // ==== Destroy chart properties:\n [\n 'title', 'subtitle', 'chartBackground', 'plotBackground',\n 'plotBGImage', 'plotBorder', 'seriesGroup', 'clipRect', 'credits',\n 'pointer', 'rangeSelector', 'legend', 'resetZoomButton', 'tooltip',\n 'renderer'\n ].forEach(function (name) {\n var prop = chart[name];\n if (prop && prop.destroy) {\n chart[name] = prop.destroy();\n }\n });\n // Remove container and all SVG, check container as it can break in IE\n // when destroyed before finished loading\n if (container) {\n container.innerHTML = AST.emptyHTML;\n removeEvent(container);\n if (parentNode) {\n discardElement(container);\n }\n }\n // clean it all up\n objectEach(chart, function (val, key) {\n delete chart[key];\n });\n };\n /**\n * Prepare for first rendering after all data are loaded.\n *\n * @private\n * @function Highcharts.Chart#firstRender\n * @emits Highcharts.Chart#event:beforeRender\n */\n Chart.prototype.firstRender = function () {\n var chart = this,\n options = chart.options;\n // Hook for oldIE to check whether the chart is ready to render\n if (chart.isReadyToRender && !chart.isReadyToRender()) {\n return;\n }\n // Create the container\n chart.getContainer();\n chart.resetMargins();\n chart.setChartSize();\n // Set the common chart properties (mainly invert) from the given series\n chart.propFromSeries();\n // get axes\n chart.getAxes();\n // Initialize the series\n (isArray(options.series) ? options.series : []).forEach(\n // #9680\n function (serieOptions) {\n chart.initSeries(serieOptions);\n });\n chart.linkSeries();\n chart.setSeriesData();\n // Run an event after axes and series are initialized, but before\n // render. At this stage, the series data is indexed and cached in the\n // xData and yData arrays, so we can access those before rendering. Used\n // in Highcharts Stock.\n fireEvent(chart, 'beforeRender');\n // depends on inverted and on margins being set\n if (Pointer) {\n if (MSPointer.isRequired()) {\n chart.pointer = new MSPointer(chart, options);\n }\n else {\n /**\n * The Pointer that keeps track of mouse and touch interaction.\n *\n * @memberof Highcharts.Chart\n * @name pointer\n * @type {Highcharts.Pointer}\n * @instance\n */\n chart.pointer = new Pointer(chart, options);\n }\n }\n chart.render();\n chart.pointer.getChartPosition(); // #14973\n // Fire the load event if there are no external images\n if (!chart.renderer.imgCount && !chart.hasLoaded) {\n chart.onload();\n }\n // If the chart was rendered outside the top container, put it back in\n // (#3679)\n chart.temporaryDisplay(true);\n };\n /**\n * Internal function that runs on chart load, async if any images are loaded\n * in the chart. Runs the callbacks and triggers the `load` and `render`\n * events.\n *\n * @private\n * @function Highcharts.Chart#onload\n * @emits Highcharts.Chart#event:load\n * @emits Highcharts.Chart#event:render\n */\n Chart.prototype.onload = function () {\n // Run callbacks, first the ones registered by modules, then user's one\n this.callbacks.concat([this.callback]).forEach(function (fn) {\n // Chart destroyed in its own callback (#3600)\n if (fn && typeof this.index !== 'undefined') {\n fn.apply(this, [this]);\n }\n }, this);\n fireEvent(this, 'load');\n fireEvent(this, 'render');\n // Set up auto resize, check for not destroyed (#6068)\n if (defined(this.index)) {\n this.setReflow(this.options.chart.reflow);\n }\n this.warnIfA11yModuleNotLoaded();\n // Don't run again\n this.hasLoaded = true;\n };\n /**\n * Emit console warning if the a11y module is not loaded.\n */\n Chart.prototype.warnIfA11yModuleNotLoaded = function () {\n var _a = this,\n options = _a.options,\n title = _a.title;\n if (options && !this.accessibility) {\n // Make chart behave as an image with the title as alt text\n this.renderer.boxWrapper.attr({\n role: 'img',\n 'aria-label': ((title && title.element.textContent) || ''\n // #17753, < is not allowed in SVG attributes\n ).replace(/</g, '<')\n });\n if (!(options.accessibility && options.accessibility.enabled === false)) {\n error('Highcharts warning: Consider including the ' +\n '\"accessibility.js\" module to make your chart more ' +\n 'usable for people with disabilities. Set the ' +\n '\"accessibility.enabled\" option to false to remove this ' +\n 'warning. See https://www.highcharts.com/docs/accessibility/accessibility-module.', false, this);\n }\n }\n };\n /**\n * Add a series to the chart after render time. Note that this method should\n * never be used when adding data synchronously at chart render time, as it\n * adds expense to the calculations and rendering. When adding data at the\n * same time as the chart is initialized, add the series as a configuration\n * option instead. With multiple axes, the `offset` is dynamically adjusted.\n *\n * @sample highcharts/members/chart-addseries/\n * Add a series from a button\n * @sample stock/members/chart-addseries/\n * Add a series in Highcharts Stock\n *\n * @function Highcharts.Chart#addSeries\n *\n * @param {Highcharts.SeriesOptionsType} options\n * The config options for the series.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after adding.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @return {Highcharts.Series}\n * The newly created series object.\n *\n * @emits Highcharts.Chart#event:addSeries\n * @emits Highcharts.Chart#event:afterAddSeries\n */\n Chart.prototype.addSeries = function (options, redraw, animation) {\n var chart = this;\n var series;\n if (options) { // <- not necessary\n redraw = pick(redraw, true); // defaults to true\n fireEvent(chart, 'addSeries', { options: options }, function () {\n series = chart.initSeries(options);\n chart.isDirtyLegend = true;\n chart.linkSeries();\n if (series.enabledDataSorting) {\n // We need to call `setData` after `linkSeries`\n series.setData(options.data, false);\n }\n fireEvent(chart, 'afterAddSeries', { series: series });\n if (redraw) {\n chart.redraw(animation);\n }\n });\n }\n return series;\n };\n /**\n * Add an axis to the chart after render time. Note that this method should\n * never be used when adding data synchronously at chart render time, as it\n * adds expense to the calculations and rendering. When adding data at the\n * same time as the chart is initialized, add the axis as a configuration\n * option instead.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Chart#addAxis\n *\n * @param {Highcharts.AxisOptions} options\n * The axis options.\n *\n * @param {boolean} [isX=false]\n * Whether it is an X axis or a value axis.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after adding.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=true]\n * Whether and how to apply animation in the redraw.\n *\n * @return {Highcharts.Axis}\n * The newly generated Axis object.\n */\n Chart.prototype.addAxis = function (options, isX, redraw, animation) {\n return this.createAxis(isX ? 'xAxis' : 'yAxis', { axis: options, redraw: redraw, animation: animation });\n };\n /**\n * Add a color axis to the chart after render time. Note that this method\n * should never be used when adding data synchronously at chart render time,\n * as it adds expense to the calculations and rendering. When adding data at\n * the same time as the chart is initialized, add the axis as a\n * configuration option instead.\n *\n * @sample highcharts/members/chart-addaxis/\n * Add and remove axes\n *\n * @function Highcharts.Chart#addColorAxis\n *\n * @param {Highcharts.ColorAxisOptions} options\n * The axis options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after adding.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=true]\n * Whether and how to apply animation in the redraw.\n *\n * @return {Highcharts.ColorAxis}\n * The newly generated Axis object.\n */\n Chart.prototype.addColorAxis = function (options, redraw, animation) {\n return this.createAxis('colorAxis', { axis: options, redraw: redraw, animation: animation });\n };\n /**\n * Factory for creating different axis types.\n *\n * @private\n * @function Highcharts.Chart#createAxis\n *\n * @param {string} type\n * An axis type.\n *\n * @param {...Array<*>} arguments\n * All arguments for the constructor.\n *\n * @return {Highcharts.Axis | Highcharts.ColorAxis}\n * The newly generated Axis object.\n */\n Chart.prototype.createAxis = function (type, options) {\n var axis = new Axis(this,\n merge(options.axis, {\n index: this[type].length,\n isX: type === 'xAxis'\n }));\n if (pick(options.redraw, true)) {\n this.redraw(options.animation);\n }\n return axis;\n };\n /**\n * Dim the chart and show a loading text or symbol. Options for the loading\n * screen are defined in {@link\n * https://api.highcharts.com/highcharts/loading|the loading options}.\n *\n * @sample highcharts/members/chart-hideloading/\n * Show and hide loading from a button\n * @sample highcharts/members/chart-showloading/\n * Apply different text labels\n * @sample stock/members/chart-show-hide-loading/\n * Toggle loading in Highcharts Stock\n *\n * @function Highcharts.Chart#showLoading\n *\n * @param {string} [str]\n * An optional text to show in the loading label instead of the\n * default one. The default text is set in\n * [lang.loading](https://api.highcharts.com/highcharts/lang.loading).\n */\n Chart.prototype.showLoading = function (str) {\n var chart = this,\n options = chart.options,\n loadingOptions = options.loading,\n setLoadingSize = function () {\n if (loadingDiv) {\n css(loadingDiv, {\n left: chart.plotLeft + 'px',\n top: chart.plotTop + 'px',\n width: chart.plotWidth + 'px',\n height: chart.plotHeight + 'px'\n });\n }\n };\n var loadingDiv = chart.loadingDiv,\n loadingSpan = chart.loadingSpan;\n // create the layer at the first call\n if (!loadingDiv) {\n chart.loadingDiv = loadingDiv = createElement('div', {\n className: 'highcharts-loading highcharts-loading-hidden'\n }, null, chart.container);\n }\n if (!loadingSpan) {\n chart.loadingSpan = loadingSpan = createElement('span', { className: 'highcharts-loading-inner' }, null, loadingDiv);\n addEvent(chart, 'redraw', setLoadingSize); // #1080\n }\n loadingDiv.className = 'highcharts-loading';\n // Update text\n AST.setElementHTML(loadingSpan, pick(str, options.lang.loading, ''));\n if (!chart.styledMode) {\n // Update visuals\n css(loadingDiv, extend(loadingOptions.style, {\n zIndex: 10\n }));\n css(loadingSpan, loadingOptions.labelStyle);\n // Show it\n if (!chart.loadingShown) {\n css(loadingDiv, {\n opacity: 0,\n display: ''\n });\n animate(loadingDiv, {\n opacity: loadingOptions.style.opacity || 0.5\n }, {\n duration: loadingOptions.showDuration || 0\n });\n }\n }\n chart.loadingShown = true;\n setLoadingSize();\n };\n /**\n * Hide the loading layer.\n *\n * @see Highcharts.Chart#showLoading\n *\n * @sample highcharts/members/chart-hideloading/\n * Show and hide loading from a button\n * @sample stock/members/chart-show-hide-loading/\n * Toggle loading in Highcharts Stock\n *\n * @function Highcharts.Chart#hideLoading\n */\n Chart.prototype.hideLoading = function () {\n var options = this.options,\n loadingDiv = this.loadingDiv;\n if (loadingDiv) {\n loadingDiv.className =\n 'highcharts-loading highcharts-loading-hidden';\n if (!this.styledMode) {\n animate(loadingDiv, {\n opacity: 0\n }, {\n duration: options.loading.hideDuration || 100,\n complete: function () {\n css(loadingDiv, { display: 'none' });\n }\n });\n }\n }\n this.loadingShown = false;\n };\n /**\n * A generic function to update any element of the chart. Elements can be\n * enabled and disabled, moved, re-styled, re-formatted etc.\n *\n * A special case is configuration objects that take arrays, for example\n * [xAxis](https://api.highcharts.com/highcharts/xAxis),\n * [yAxis](https://api.highcharts.com/highcharts/yAxis) or\n * [series](https://api.highcharts.com/highcharts/series). For these\n * collections, an `id` option is used to map the new option set to an\n * existing object. If an existing object of the same id is not found, the\n * corresponding item is updated. So for example, running `chart.update`\n * with a series item without an id, will cause the existing chart's series\n * with the same index in the series array to be updated. When the\n * `oneToOne` parameter is true, `chart.update` will also take care of\n * adding and removing items from the collection. Read more under the\n * parameter description below.\n *\n * Note that when changing series data, `chart.update` may mutate the passed\n * data options.\n *\n * See also the\n * [responsive option set](https://api.highcharts.com/highcharts/responsive).\n * Switching between `responsive.rules` basically runs `chart.update` under\n * the hood.\n *\n * @sample highcharts/members/chart-update/\n * Update chart geometry\n *\n * @function Highcharts.Chart#update\n *\n * @param {Highcharts.Options} options\n * A configuration object for the new chart options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart.\n *\n * @param {boolean} [oneToOne=false]\n * When `true`, the `series`, `xAxis`, `yAxis` and `annotations`\n * collections will be updated one to one, and items will be either\n * added or removed to match the new updated options. For example,\n * if the chart has two series and we call `chart.update` with a\n * configuration containing three series, one will be added. If we\n * call `chart.update` with one series, one will be removed. Setting\n * an empty `series` array will remove all series, but leaving out\n * the`series` property will leave all series untouched. If the\n * series have id's, the new series options will be matched by id,\n * and the remaining ones removed.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation=true]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @emits Highcharts.Chart#event:update\n * @emits Highcharts.Chart#event:afterUpdate\n */\n Chart.prototype.update = function (options, redraw, oneToOne, animation) {\n var chart = this,\n adders = {\n credits: 'addCredits',\n title: 'setTitle',\n subtitle: 'setSubtitle',\n caption: 'setCaption'\n },\n isResponsiveOptions = options.isResponsiveOptions,\n itemsForRemoval = [];\n var updateAllAxes,\n updateAllSeries,\n runSetSize;\n fireEvent(chart, 'update', { options: options });\n // If there are responsive rules in action, undo the responsive rules\n // before we apply the updated options and replay the responsive rules\n // on top from the chart.redraw function (#9617).\n if (!isResponsiveOptions) {\n chart.setResponsive(false, true);\n }\n options = cleanRecursively(options, chart.options);\n chart.userOptions = merge(chart.userOptions, options);\n // If the top-level chart option is present, some special updates are\n // required\n var optionsChart = options.chart;\n if (optionsChart) {\n merge(true, chart.options.chart, optionsChart);\n // Setter function\n if ('className' in optionsChart) {\n chart.setClassName(optionsChart.className);\n }\n if ('reflow' in optionsChart) {\n chart.setReflow(optionsChart.reflow);\n }\n if ('inverted' in optionsChart ||\n 'polar' in optionsChart ||\n 'type' in optionsChart) {\n // Parse options.chart.inverted and options.chart.polar together\n // with the available series.\n chart.propFromSeries();\n updateAllAxes = true;\n }\n if ('alignTicks' in optionsChart) { // #6452\n updateAllAxes = true;\n }\n if ('events' in optionsChart) {\n // Chart event handlers\n registerEventOptions(this, optionsChart);\n }\n objectEach(optionsChart, function (val, key) {\n if (chart.propsRequireUpdateSeries.indexOf('chart.' + key) !==\n -1) {\n updateAllSeries = true;\n }\n // Only dirty box\n if (chart.propsRequireDirtyBox.indexOf(key) !== -1) {\n chart.isDirtyBox = true;\n }\n // Chart setSize\n if (chart.propsRequireReflow.indexOf(key) !== -1) {\n if (isResponsiveOptions) {\n chart.isDirtyBox = true;\n }\n else {\n runSetSize = true;\n }\n }\n });\n if (!chart.styledMode && optionsChart.style) {\n chart.renderer.setStyle(chart.options.chart.style || {});\n }\n }\n // Moved up, because tooltip needs updated plotOptions (#6218)\n if (!chart.styledMode && options.colors) {\n this.options.colors = options.colors;\n }\n if (options.time) {\n // Maintaining legacy global time. If the chart is instanciated\n // first with global time, then updated with time options, we need\n // to create a new Time instance to avoid mutating the global time\n // (#10536).\n if (this.time === defaultTime) {\n this.time = new Time(options.time);\n }\n // If we're updating, the time class is different from other chart\n // classes (chart.legend, chart.tooltip etc) in that it doesn't know\n // about the chart. The other chart[something].update functions also\n // set the chart.options[something]. For the time class however we\n // need to update the chart options separately. #14230.\n merge(true, chart.options.time, options.time);\n }\n // Some option stuctures correspond one-to-one to chart objects that\n // have update methods, for example\n // options.credits => chart.credits\n // options.legend => chart.legend\n // options.title => chart.title\n // options.tooltip => chart.tooltip\n // options.subtitle => chart.subtitle\n // options.mapNavigation => chart.mapNavigation\n // options.navigator => chart.navigator\n // options.scrollbar => chart.scrollbar\n objectEach(options, function (val, key) {\n if (chart[key] &&\n typeof chart[key].update === 'function') {\n chart[key].update(val, false);\n // If a one-to-one object does not exist, look for an adder function\n }\n else if (typeof chart[adders[key]] === 'function') {\n chart[adders[key]](val);\n // Else, just merge the options. For nodes like loading, noData,\n // plotOptions\n }\n else if (key !== 'colors' &&\n chart.collectionsWithUpdate.indexOf(key) === -1) {\n merge(true, chart.options[key], options[key]);\n }\n if (key !== 'chart' &&\n chart.propsRequireUpdateSeries.indexOf(key) !== -1) {\n updateAllSeries = true;\n }\n });\n // Setters for collections. For axes and series, each item is referred\n // by an id. If the id is not found, it defaults to the corresponding\n // item in the collection, so setting one series without an id, will\n // update the first series in the chart. Setting two series without\n // an id will update the first and the second respectively (#6019)\n // chart.update and responsive.\n this.collectionsWithUpdate.forEach(function (coll) {\n var indexMap;\n if (options[coll]) {\n // In stock charts, the navigator series are also part of the\n // chart.series array, but those series should not be handled\n // here (#8196) and neither should the navigator axis (#9671).\n indexMap = [];\n chart[coll].forEach(function (s, i) {\n if (!s.options.isInternal) {\n indexMap.push(pick(s.options.index, i));\n }\n });\n splat(options[coll]).forEach(function (newOptions, i) {\n var hasId = defined(newOptions.id);\n var item;\n // Match by id\n if (hasId) {\n item = chart.get(newOptions.id);\n }\n // No match by id found, match by index instead\n if (!item && chart[coll]) {\n item = chart[coll][indexMap ? indexMap[i] : i];\n // Check if we grabbed an item with an exising but\n // different id (#13541)\n if (item && hasId && defined(item.options.id)) {\n item = void 0;\n }\n }\n if (item && item.coll === coll) {\n item.update(newOptions, false);\n if (oneToOne) {\n item.touched = true;\n }\n }\n // If oneToOne and no matching item is found, add one\n if (!item && oneToOne && chart.collectionsWithInit[coll]) {\n chart.collectionsWithInit[coll][0].apply(chart, \n // [newOptions, ...extraArguments, redraw=false]\n [\n newOptions\n ].concat(\n // Not all initializers require extra args\n chart.collectionsWithInit[coll][1] || []).concat([\n false\n ])).touched = true;\n }\n });\n // Add items for removal\n if (oneToOne) {\n chart[coll].forEach(function (item) {\n if (!item.touched && !item.options.isInternal) {\n itemsForRemoval.push(item);\n }\n else {\n delete item.touched;\n }\n });\n }\n }\n });\n itemsForRemoval.forEach(function (item) {\n if (item.chart && item.remove) { // #9097, avoid removing twice\n item.remove(false);\n }\n });\n if (updateAllAxes) {\n chart.axes.forEach(function (axis) {\n axis.update({}, false);\n });\n }\n // Certain options require the whole series structure to be thrown away\n // and rebuilt\n if (updateAllSeries) {\n chart.getSeriesOrderByLinks().forEach(function (series) {\n // Avoid removed navigator series\n if (series.chart) {\n series.update({}, false);\n }\n }, this);\n }\n // Update size. Redraw is forced.\n var newWidth = optionsChart && optionsChart.width;\n var newHeight = optionsChart && (isString(optionsChart.height) ?\n relativeLength(optionsChart.height,\n newWidth || chart.chartWidth) :\n optionsChart.height);\n if (\n // In this case, run chart.setSize with newWidth and newHeight which\n // are undefined, only for reflowing chart elements because margin\n // or spacing has been set (#8190)\n runSetSize ||\n // In this case, the size is actually set\n (isNumber(newWidth) && newWidth !== chart.chartWidth) ||\n (isNumber(newHeight) && newHeight !== chart.chartHeight)) {\n chart.setSize(newWidth, newHeight, animation);\n }\n else if (pick(redraw, true)) {\n chart.redraw(animation);\n }\n fireEvent(chart, 'afterUpdate', {\n options: options,\n redraw: redraw,\n animation: animation\n });\n };\n /**\n * Shortcut to set the subtitle options. This can also be done from {@link\n * Chart#update} or {@link Chart#setTitle}.\n *\n * @function Highcharts.Chart#setSubtitle\n *\n * @param {Highcharts.SubtitleOptions} options\n * New subtitle options. The subtitle text itself is set by the\n * `options.text` property.\n */\n Chart.prototype.setSubtitle = function (options, redraw) {\n this.applyDescription('subtitle', options);\n this.layOutTitles(redraw);\n };\n /**\n * Set the caption options. This can also be done from {@link\n * Chart#update}.\n *\n * @function Highcharts.Chart#setCaption\n *\n * @param {Highcharts.CaptionOptions} options\n * New caption options. The caption text itself is set by the\n * `options.text` property.\n */\n Chart.prototype.setCaption = function (options, redraw) {\n this.applyDescription('caption', options);\n this.layOutTitles(redraw);\n };\n /**\n * Display the zoom button, so users can reset zoom to the default view\n * settings.\n *\n * @function Highcharts.Chart#showResetZoom\n *\n * @emits Highcharts.Chart#event:afterShowResetZoom\n * @emits Highcharts.Chart#event:beforeShowResetZoom\n */\n Chart.prototype.showResetZoom = function () {\n var chart = this,\n lang = defaultOptions.lang,\n btnOptions = chart.options.chart.zooming.resetButton,\n theme = btnOptions.theme,\n alignTo = (btnOptions.relativeTo === 'chart' ||\n btnOptions.relativeTo === 'spacingBox' ?\n null :\n 'scrollablePlotBox');\n /**\n * @private\n */\n function zoomOut() {\n chart.zoomOut();\n }\n fireEvent(this, 'beforeShowResetZoom', null, function () {\n chart.resetZoomButton = chart.renderer\n .button(lang.resetZoom, null, null, zoomOut, theme)\n .attr({\n align: btnOptions.position.align,\n title: lang.resetZoomTitle\n })\n .addClass('highcharts-reset-zoom')\n .add()\n .align(btnOptions.position, false, alignTo);\n });\n fireEvent(this, 'afterShowResetZoom');\n };\n /**\n * Zoom the chart out after a user has zoomed in. See also\n * [Axis.setExtremes](/class-reference/Highcharts.Axis#setExtremes).\n *\n * @function Highcharts.Chart#zoomOut\n *\n * @emits Highcharts.Chart#event:selection\n */\n Chart.prototype.zoomOut = function () {\n fireEvent(this, 'selection', { resetSelection: true }, this.zoom);\n };\n /**\n * Zoom into a given portion of the chart given by axis coordinates.\n *\n * @private\n * @function Highcharts.Chart#zoom\n * @param {Highcharts.SelectEventObject} event\n */\n Chart.prototype.zoom = function (event) {\n var chart = this,\n pointer = chart.pointer;\n var displayButton = false,\n hasZoomed;\n // If zoom is called with no arguments, reset the axes\n if (!event || event.resetSelection) {\n chart.axes.forEach(function (axis) {\n hasZoomed = axis.zoom();\n });\n pointer.initiated = false; // #6804\n }\n else { // else, zoom in on all axes\n event.xAxis.concat(event.yAxis).forEach(function (axisData) {\n var axis = axisData.axis,\n isXAxis = axis.isXAxis;\n // don't zoom more than minRange\n if (pointer[isXAxis ? 'zoomX' : 'zoomY'] &&\n (defined(pointer.mouseDownX) &&\n defined(pointer.mouseDownY) &&\n chart.isInsidePlot(pointer.mouseDownX - chart.plotLeft, pointer.mouseDownY - chart.plotTop, { axis: axis })) || !defined(chart.inverted ? pointer.mouseDownX : pointer.mouseDownY)) {\n hasZoomed = axis.zoom(axisData.min, axisData.max);\n if (axis.displayBtn) {\n displayButton = true;\n }\n }\n });\n }\n // Show or hide the Reset zoom button\n var resetZoomButton = chart.resetZoomButton;\n if (displayButton && !resetZoomButton) {\n chart.showResetZoom();\n }\n else if (!displayButton && isObject(resetZoomButton)) {\n chart.resetZoomButton = resetZoomButton.destroy();\n }\n // Redraw\n if (hasZoomed) {\n chart.redraw(pick(chart.options.chart.animation, event && event.animation, chart.pointCount < 100));\n }\n };\n /**\n * Pan the chart by dragging the mouse across the pane. This function is\n * called on mouse move, and the distance to pan is computed from chartX\n * compared to the first chartX position in the dragging operation.\n *\n * @private\n * @function Highcharts.Chart#pan\n * @param {Highcharts.PointerEventObject} e\n * @param {string} panning\n */\n Chart.prototype.pan = function (e, panning) {\n var chart = this,\n hoverPoints = chart.hoverPoints,\n panningOptions = (typeof panning === 'object' ?\n panning :\n {\n enabled: panning,\n type: 'x'\n }),\n chartOptions = chart.options.chart;\n if (chartOptions && chartOptions.panning) {\n chartOptions.panning = panningOptions;\n }\n var type = panningOptions.type;\n var doRedraw;\n fireEvent(this, 'pan', { originalEvent: e }, function () {\n // remove active points for shared tooltip\n if (hoverPoints) {\n hoverPoints.forEach(function (point) {\n point.setState();\n });\n }\n var axes = chart.xAxis;\n if (type === 'xy') {\n axes = axes.concat(chart.yAxis);\n }\n else if (type === 'y') {\n axes = chart.yAxis;\n }\n var nextMousePos = {};\n axes.forEach(function (axis) {\n if (!axis.options.panningEnabled || axis.options.isInternal) {\n return;\n }\n var horiz = axis.horiz, mousePos = e[horiz ? 'chartX' : 'chartY'], mouseDown = horiz ? 'mouseDownX' : 'mouseDownY', startPos = chart[mouseDown], halfPointRange = axis.minPointOffset || 0, pointRangeDirection = (axis.reversed && !chart.inverted) ||\n (!axis.reversed && chart.inverted) ?\n -1 :\n 1, extremes = axis.getExtremes(), panMin = axis.toValue(startPos - mousePos, true) +\n halfPointRange * pointRangeDirection, panMax = axis.toValue(startPos + axis.len - mousePos, true) -\n ((halfPointRange * pointRangeDirection) ||\n (axis.isXAxis && axis.pointRangePadding) ||\n 0), flipped = panMax < panMin, hasVerticalPanning = axis.hasVerticalPanning();\n var newMin = flipped ? panMax : panMin,\n newMax = flipped ? panMin : panMax,\n panningState = axis.panningState,\n spill;\n // General calculations of panning state.\n // This is related to using vertical panning. (#11315).\n if (hasVerticalPanning &&\n !axis.isXAxis && (!panningState || panningState.isDirty)) {\n axis.series.forEach(function (series) {\n var processedData = series.getProcessedData(true),\n dataExtremes = series.getExtremes(processedData.yData,\n true);\n if (!panningState) {\n panningState = {\n startMin: Number.MAX_VALUE,\n startMax: -Number.MAX_VALUE\n };\n }\n if (isNumber(dataExtremes.dataMin) &&\n isNumber(dataExtremes.dataMax)) {\n panningState.startMin = Math.min(pick(series.options.threshold, Infinity), dataExtremes.dataMin, panningState.startMin);\n panningState.startMax = Math.max(pick(series.options.threshold, -Infinity), dataExtremes.dataMax, panningState.startMax);\n }\n });\n }\n var paddedMin = Math.min(pick(panningState && panningState.startMin,\n extremes.dataMin),\n halfPointRange ?\n extremes.min :\n axis.toValue(axis.toPixels(extremes.min) -\n axis.minPixelPadding));\n var paddedMax = Math.max(pick(panningState && panningState.startMax,\n extremes.dataMax),\n halfPointRange ?\n extremes.max :\n axis.toValue(axis.toPixels(extremes.max) +\n axis.minPixelPadding));\n axis.panningState = panningState;\n // It is not necessary to calculate extremes on ordinal axis,\n // because they are already calculated, so we don't want to\n // override them.\n if (!axis.isOrdinal) {\n // If the new range spills over, either to the min or max,\n // adjust the new range.\n spill = paddedMin - newMin;\n if (spill > 0) {\n newMax += spill;\n newMin = paddedMin;\n }\n spill = newMax - paddedMax;\n if (spill > 0) {\n newMax = paddedMax;\n newMin -= spill;\n }\n // Set new extremes if they are actually new\n if (axis.series.length &&\n newMin !== extremes.min &&\n newMax !== extremes.max &&\n newMin >= paddedMin &&\n newMax <= paddedMax) {\n axis.setExtremes(newMin, newMax, false, false, { trigger: 'pan' });\n if (!chart.resetZoomButton &&\n // Show reset zoom button only when both newMin and\n // newMax values are between padded axis range.\n newMin !== paddedMin &&\n newMax !== paddedMax &&\n type.match('y')) {\n chart.showResetZoom();\n axis.displayBtn = false;\n }\n doRedraw = true;\n }\n // set new reference for next run:\n nextMousePos[mouseDown] = mousePos;\n }\n });\n objectEach(nextMousePos, function (pos, down) {\n chart[down] = pos;\n });\n if (doRedraw) {\n chart.redraw(false);\n }\n css(chart.container, { cursor: 'move' });\n });\n };\n return Chart;\n }());\n extend(Chart.prototype, {\n // Hook for adding callbacks in modules\n callbacks: [],\n /**\n * These collections (arrays) implement `Chart.addSomethig` method used in\n * chart.update() to create new object in the collection. Equivalent for\n * deleting is resolved by simple `Somethig.remove()`.\n *\n * Note: We need to define these references after initializers are bound to\n * chart's prototype.\n *\n * @private\n */\n collectionsWithInit: {\n // collectionName: [ initializingMethod, [extraArguments] ]\n xAxis: [Chart.prototype.addAxis, [true]],\n yAxis: [Chart.prototype.addAxis, [false]],\n series: [Chart.prototype.addSeries]\n },\n /**\n * These collections (arrays) implement update() methods with support for\n * one-to-one option.\n * @private\n */\n collectionsWithUpdate: [\n 'xAxis',\n 'yAxis',\n 'series'\n ],\n /**\n * These properties cause isDirtyBox to be set to true when updating. Can be\n * extended from plugins.\n * @private\n */\n propsRequireDirtyBox: [\n 'backgroundColor',\n 'borderColor',\n 'borderWidth',\n 'borderRadius',\n 'plotBackgroundColor',\n 'plotBackgroundImage',\n 'plotBorderColor',\n 'plotBorderWidth',\n 'plotShadow',\n 'shadow'\n ],\n /**\n * These properties require a full reflow of chart elements, best\n * implemented through running `Chart.setSize` internally (#8190).\n * @private\n */\n propsRequireReflow: [\n 'margin',\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'spacing',\n 'spacingTop',\n 'spacingRight',\n 'spacingBottom',\n 'spacingLeft'\n ],\n /**\n * These properties cause all series to be updated when updating. Can be\n * extended from plugins.\n * @private\n */\n propsRequireUpdateSeries: [\n 'chart.inverted',\n 'chart.polar',\n 'chart.ignoreHiddenSeries',\n 'chart.type',\n 'colors',\n 'plotOptions',\n 'time',\n 'tooltip'\n ]\n });\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback for chart constructors.\n *\n * @callback Highcharts.ChartCallbackFunction\n *\n * @param {Highcharts.Chart} chart\n * Created chart.\n */\n /**\n * Format a number and return a string based on input settings.\n *\n * @callback Highcharts.NumberFormatterCallbackFunction\n *\n * @param {number} number\n * The input number to format.\n *\n * @param {number} decimals\n * The amount of decimals. A value of -1 preserves the amount in the\n * input number.\n *\n * @param {string} [decimalPoint]\n * The decimal point, defaults to the one given in the lang options, or\n * a dot.\n *\n * @param {string} [thousandsSep]\n * The thousands separator, defaults to the one given in the lang\n * options, or a space character.\n *\n * @return {string} The formatted number.\n */\n /**\n * The chart title. The title has an `update` method that allows modifying the\n * options directly or indirectly via `chart.update`.\n *\n * @interface Highcharts.TitleObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the title.\n *\n * @function Highcharts.TitleObject#update\n *\n * @param {Highcharts.TitleOptions} titleOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the title is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw} after.\n */\n /**\n * The chart subtitle. The subtitle has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @interface Highcharts.SubtitleObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the subtitle.\n *\n * @function Highcharts.SubtitleObject#update\n *\n * @param {Highcharts.SubtitleOptions} subtitleOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the subtitle is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to false\n * and call {@link Chart#redraw} after.\n */\n /**\n * The chart caption. The caption has an `update` method that\n * allows modifying the options directly or indirectly via\n * `chart.update`.\n *\n * @interface Highcharts.CaptionObject\n * @extends Highcharts.SVGElement\n */ /**\n * Modify options for the caption.\n *\n * @function Highcharts.CaptionObject#update\n *\n * @param {Highcharts.CaptionOptions} captionOptions\n * Options to modify.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the caption is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to false\n * and call {@link Chart#redraw} after.\n */\n /**\n * @interface Highcharts.ChartIsInsideOptionsObject\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#axis\n * @type {Highcharts.Axis|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#ignoreX\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#ignoreY\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#inverted\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#paneCoordinates\n * @type {boolean|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#series\n * @type {Highcharts.Series|undefined}\n */ /**\n * @name Highcharts.ChartIsInsideOptionsObject#visiblePlotOnly\n * @type {boolean|undefined}\n */\n ''; // keeps doclets above in JS file\n\n return Chart;\n });\n _registerModule(_modules, 'Core/Legend/LegendSymbol.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var extend = U.extend,\n merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Namespace\n *\n * */\n var LegendSymbol;\n (function (LegendSymbol) {\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the series' symbol in the legend.\n *\n * This method should be overridable to create custom symbols through\n * Highcharts.seriesTypes[type].prototype.drawLegendSymbol.\n *\n * @private\n * @function Highcharts.LegendSymbolMixin.drawLineMarker\n *\n * @param {Highcharts.Legend} legend\n * The legend object.\n */\n function drawLineMarker(legend) {\n var legendItem = this.legendItem = this.legendItem || {},\n options = this.options,\n symbolWidth = legend.symbolWidth,\n symbolHeight = legend.symbolHeight,\n generalRadius = symbolHeight / 2,\n renderer = this.chart.renderer,\n legendItemGroup = legendItem.group,\n verticalCenter = legend.baseline -\n Math.round(legend.fontMetrics.b * 0.3);\n var attr = {},\n legendSymbol,\n markerOptions = options.marker,\n lineSizer = 0;\n // Draw the line\n if (!this.chart.styledMode) {\n attr = {\n 'stroke-width': Math.min(options.lineWidth || 0, 24)\n };\n if (options.dashStyle) {\n attr.dashstyle = options.dashStyle;\n }\n else if (options.linecap !== 'square') {\n attr['stroke-linecap'] = 'round';\n }\n }\n legendItem.line = renderer\n .path()\n .addClass('highcharts-graph')\n .attr(attr)\n .add(legendItemGroup);\n if (attr['stroke-linecap']) {\n lineSizer = Math.min(legendItem.line.strokeWidth(), symbolWidth) / 2;\n }\n legendItem.line\n .attr({\n d: [\n ['M', lineSizer, verticalCenter],\n ['L', symbolWidth - lineSizer, verticalCenter]\n ]\n });\n // Draw the marker\n if (markerOptions && markerOptions.enabled !== false && symbolWidth) {\n // Do not allow the marker to be larger than the symbolHeight\n var radius = Math.min(pick(markerOptions.radius,\n generalRadius),\n generalRadius);\n // Restrict symbol markers size\n if (this.symbol.indexOf('url') === 0) {\n markerOptions = merge(markerOptions, {\n width: symbolHeight,\n height: symbolHeight\n });\n radius = 0;\n }\n legendItem.symbol = legendSymbol = renderer\n .symbol(this.symbol, (symbolWidth / 2) - radius, verticalCenter - radius, 2 * radius, 2 * radius, extend({ context: 'legend' }, markerOptions))\n .addClass('highcharts-point')\n .add(legendItemGroup);\n legendSymbol.isMarker = true;\n }\n }\n LegendSymbol.drawLineMarker = drawLineMarker;\n /**\n * Get the series' symbol in the legend.\n *\n * This method should be overridable to create custom symbols through\n * Highcharts.seriesTypes[type].prototype.drawLegendSymbol.\n *\n * @private\n * @function Highcharts.LegendSymbolMixin.drawRectangle\n *\n * @param {Highcharts.Legend} legend\n * The legend object\n *\n * @param {Highcharts.Point|Highcharts.Series} item\n * The series (this) or point\n */\n function drawRectangle(legend, item) {\n var legendItem = item.legendItem || {},\n options = legend.options,\n symbolHeight = legend.symbolHeight,\n square = options.squareSymbol,\n symbolWidth = square ? symbolHeight : legend.symbolWidth;\n legendItem.symbol = this.chart.renderer\n .rect(square ? (legend.symbolWidth - symbolHeight) / 2 : 0, legend.baseline - symbolHeight + 1, // #3988\n symbolWidth, symbolHeight, pick(legend.options.symbolRadius, symbolHeight / 2))\n .addClass('highcharts-point')\n .attr({\n zIndex: 3\n })\n .add(legendItem.group);\n }\n LegendSymbol.drawRectangle = drawRectangle;\n })(LegendSymbol || (LegendSymbol = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return LegendSymbol;\n });\n _registerModule(_modules, 'Core/Series/SeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * General options for all series types.\n *\n * @optionparent plotOptions.series\n */\n var seriesDefaults = {\n // base series options\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin`\n * of a line graph. Round means that lines are rounded in the ends and\n * bends.\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @since 3.0.7\n * @apioption plotOptions.line.linecap\n */\n /**\n * Pixel width of the graph line.\n *\n * @see In styled mode, the line stroke-width can be set with the\n * `.highcharts-graph` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/series-linewidth-general/\n * On all series\n * @sample {highcharts} highcharts/plotoptions/series-linewidth-specific/\n * On one single series\n *\n * @product highcharts highstock\n *\n * @private\n */\n lineWidth: 2,\n /**\n * For some series, there is a limit that shuts down animation\n * by default when the total number of points in the chart is too high.\n * For example, for a column chart and its derivatives, animation does\n * not run if there is more than 250 points totally. To disable this\n * cap, set `animationLimit` to `Infinity`. This option works if animation\n * is fired on individual points, not on a group of points like e.g. during\n * the initial animation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-animationlimit/\n * Animation limit on updating individual points\n *\n * @type {number}\n * @apioption plotOptions.series.animationLimit\n */\n /**\n * Allow this series' points to be selected by clicking on the graphic\n * (columns, point markers, pie slices, map areas etc).\n *\n * The selected points can be handled by point select and unselect\n * events, or collectively by the [getSelectedPoints\n * ](/class-reference/Highcharts.Chart#getSelectedPoints) function.\n *\n * And alternative way of selecting points is through dragging.\n *\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-allowpointselect-pie/\n * Pie\n * @sample {highcharts} highcharts/chart/events-selection-points/\n * Select a range of points through a drag selection\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Map area\n * @sample {highmaps} maps/plotoptions/mapbubble-allowpointselect/\n * Map bubble\n *\n * @since 1.2.0\n *\n * @private\n */\n allowPointSelect: false,\n /**\n * When true, each point or column edge is rounded to its nearest pixel\n * in order to render sharp on screen. In some cases, when there are a\n * lot of densely packed columns, this leads to visible difference\n * in column widths or distance between columns. In these cases,\n * setting `crisp` to `false` may look better, even though each column\n * is rendered blurry.\n *\n * @sample {highcharts} highcharts/plotoptions/column-crisp-false/\n * Crisp is false\n *\n * @since 5.0.10\n * @product highcharts highstock gantt\n *\n * @private\n */\n crisp: true,\n /**\n * If true, a checkbox is displayed next to the legend item to allow\n * selecting the series. The state of the checkbox is determined by\n * the `selected` option.\n *\n * @productdesc {highmaps}\n * Note that if a `colorAxis` is defined, the color axis is represented\n * in the legend, not the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showcheckbox-true/\n * Show select box\n *\n * @since 1.2.0\n *\n * @private\n */\n showCheckbox: false,\n /**\n * Enable or disable the initial animation when a series is displayed.\n * The animation can also be set as a configuration object. Please\n * note that this option only applies to the initial animation of the\n * series itself. For other animations, see [chart.animation](\n * #chart.animation) and the animation parameter under the API methods.\n * The following properties are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * - `duration`: The duration of the animation in milliseconds. (Defaults to\n * `1000`)\n *\n * - `easing`: Can be a string reference to an easing function set on\n * the `Math` object or a function. See the _Custom easing function_\n * demo below. (Defaults to `easeInOutSine`)\n *\n * Due to poor performance, animation is disabled in old IE browsers\n * for several chart types.\n *\n * @sample {highcharts} highcharts/plotoptions/series-animation-disabled/\n * Animation disabled\n * @sample {highcharts} highcharts/plotoptions/series-animation-slower/\n * Slower animation\n * @sample {highcharts} highcharts/plotoptions/series-animation-easing/\n * Custom easing function\n * @sample {highstock} stock/plotoptions/animation-slower/\n * Slower animation\n * @sample {highstock} stock/plotoptions/animation-easing/\n * Custom easing function\n * @sample {highmaps} maps/plotoptions/series-animation-true/\n * Animation enabled on map series\n * @sample {highmaps} maps/plotoptions/mapbubble-animation-false/\n * Disabled on mapbubble series\n *\n * @type {boolean|Highcharts.AnimationOptionsObject}\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n *\n * @private\n */\n animation: {\n /** @ignore-option */\n duration: 1000\n },\n /**\n * An additional class name to apply to the series' graphical elements.\n * This option does not replace default class names of the graphical\n * element. Changes to the series' color will also be reflected in a\n * chart's legend and tooltip.\n *\n * @sample {highcharts} highcharts/css/point-series-classname\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.className\n */\n /**\n * Disable this option to allow series rendering in the whole plotting\n * area.\n *\n * **Note:** Clipping should be always enabled when\n * [chart.zoomType](#chart.zoomType) is set\n *\n * @sample {highcharts} highcharts/plotoptions/series-clip/\n * Disabled clipping\n *\n * @default true\n * @type {boolean}\n * @since 3.0.0\n * @apioption plotOptions.series.clip\n */\n /**\n * The main color of the series. In line type series it applies to the\n * line and the point markers unless otherwise specified. In bar type\n * series it applies to the bars unless a color is specified per point.\n * The default value is pulled from the `options.colors` array.\n *\n * In styled mode, the color can be defined by the\n * [colorIndex](#plotOptions.series.colorIndex) option. Also, the series\n * color can be set with the `.highcharts-series`,\n * `.highcharts-color-{n}`, `.highcharts-{type}-series` or\n * `.highcharts-series-{n}` class, or individual classes given by the\n * `className` option.\n *\n * @productdesc {highmaps}\n * In maps, the series color is rarely used, as most choropleth maps use\n * the color to denote the value of each point. The series color can\n * however be used in a map with multiple series holding categorized\n * data.\n *\n * @sample {highcharts} highcharts/plotoptions/series-color-general/\n * General plot option\n * @sample {highcharts} highcharts/plotoptions/series-color-specific/\n * One specific series\n * @sample {highcharts} highcharts/plotoptions/series-color-area/\n * Area color\n * @sample {highcharts} highcharts/series/infographic/\n * Pattern fill\n * @sample {highmaps} maps/demo/category-map/\n * Category map by multiple series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.color\n */\n /**\n * Styled mode only. A specific color index to use for the series, so its\n * graphic representations are given the class name `highcharts-color-{n}`.\n *\n * @sample {highcharts} highcharts/css/colorindex/\n * Series and point color index\n *\n * @type {number}\n * @since 5.0.0\n * @apioption plotOptions.series.colorIndex\n */\n /**\n * Whether to connect a graph line across null points, or render a gap\n * between the two points on either side of the null.\n *\n * @sample {highcharts} highcharts/plotoptions/series-connectnulls-false/\n * False by default\n * @sample {highcharts} highcharts/plotoptions/series-connectnulls-true/\n * True\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock\n * @apioption plotOptions.series.connectNulls\n */\n /**\n * You can set the cursor to \"pointer\" if you have click events attached\n * to the series, to signal to the user that the points and lines can\n * be clicked.\n *\n * In styled mode, the series cursor can be set with the same classes\n * as listed under [series.color](#plotOptions.series.color).\n *\n * @sample {highcharts} highcharts/plotoptions/series-cursor-line/\n * On line graph\n * @sample {highcharts} highcharts/plotoptions/series-cursor-column/\n * On columns\n * @sample {highcharts} highcharts/plotoptions/series-cursor-scatter/\n * On scatter markers\n * @sample {highstock} stock/plotoptions/cursor/\n * Pointer on a line graph\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Map area\n * @sample {highmaps} maps/plotoptions/mapbubble-allowpointselect/\n * Map bubble\n *\n * @type {string|Highcharts.CursorValue}\n * @apioption plotOptions.series.cursor\n */\n /**\n * A reserved subspace to store options and values for customized\n * functionality. Here you can add additional data for your own event\n * callbacks and formatter callbacks.\n *\n * @sample {highcharts} highcharts/point/custom/\n * Point and series with custom data\n *\n * @type {Highcharts.Dictionary<*>}\n * @apioption plotOptions.series.custom\n */\n /**\n * Name of the dash style to use for the graph, or for some series types\n * the outline of each shape.\n *\n * In styled mode, the\n * [stroke dash-array](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/series-dashstyle/)\n * can be set with the same classes as listed under\n * [series.color](#plotOptions.series.color).\n *\n * @sample {highcharts} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highcharts} highcharts/plotoptions/series-dashstyle/\n * Chart suitable for printing in black and white\n * @sample {highstock} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highmaps} highcharts/plotoptions/series-dashstyle-all/\n * Possible values demonstrated\n * @sample {highmaps} maps/plotoptions/series-dashstyle/\n * Dotted borders on a map\n *\n * @type {Highcharts.DashStyleValue}\n * @default Solid\n * @since 2.1\n * @apioption plotOptions.series.dashStyle\n */\n /**\n * A description of the series to add to the screen reader information\n * about the series.\n *\n * @type {string}\n * @since 5.0.0\n * @requires modules/accessibility\n * @apioption plotOptions.series.description\n */\n /**\n * Options for the series data sorting.\n *\n * @type {Highcharts.DataSortingOptionsObject}\n * @since 8.0.0\n * @product highcharts highstock\n * @apioption plotOptions.series.dataSorting\n */\n /**\n * Enable or disable data sorting for the series. Use [xAxis.reversed](\n * #xAxis.reversed) to change the sorting order.\n *\n * @sample {highcharts} highcharts/datasorting/animation/\n * Data sorting in scatter-3d\n * @sample {highcharts} highcharts/datasorting/labels-animation/\n * Axis labels animation\n * @sample {highcharts} highcharts/datasorting/dependent-sorting/\n * Dependent series sorting\n * @sample {highcharts} highcharts/datasorting/independent-sorting/\n * Independent series sorting\n *\n * @type {boolean}\n * @since 8.0.0\n * @apioption plotOptions.series.dataSorting.enabled\n */\n /**\n * Whether to allow matching points by name in an update. If this option\n * is disabled, points will be matched by order.\n *\n * @sample {highcharts} highcharts/datasorting/match-by-name/\n * Enabled match by name\n *\n * @type {boolean}\n * @since 8.0.0\n * @apioption plotOptions.series.dataSorting.matchByName\n */\n /**\n * Determines what data value should be used to sort by.\n *\n * @sample {highcharts} highcharts/datasorting/sort-key/\n * Sort key as `z` value\n *\n * @type {string}\n * @since 8.0.0\n * @default y\n * @apioption plotOptions.series.dataSorting.sortKey\n */\n /**\n * Enable or disable the mouse tracking for a specific series. This\n * includes point tooltips and click events on graphs and points. For\n * large datasets it improves performance.\n *\n * @sample {highcharts} highcharts/plotoptions/series-enablemousetracking-false/\n * No mouse tracking\n * @sample {highmaps} maps/plotoptions/series-enablemousetracking-false/\n * No mouse tracking\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.enableMouseTracking\n */\n /**\n * Whether to use the Y extremes of the total chart width or only the\n * zoomed area when zooming in on parts of the X axis. By default, the\n * Y axis adjusts to the min and max of the visible data. Cartesian\n * series only.\n *\n * @type {boolean}\n * @default false\n * @since 4.1.6\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.getExtremesFromAll\n */\n /**\n * An array specifying which option maps to which key in the data point\n * array. This makes it convenient to work with unstructured data arrays\n * from different sources.\n *\n * @see [series.data](#series.line.data)\n *\n * @sample {highcharts|highstock} highcharts/series/data-keys/\n * An extended data array with keys\n * @sample {highcharts|highstock} highcharts/series/data-nested-keys/\n * Nested keys used to access object properties\n *\n * @type {Array<string>}\n * @since 4.1.6\n * @apioption plotOptions.series.keys\n */\n /**\n * The line cap used for line ends and line joins on the graph.\n *\n * @sample highcharts/series-line/linecap/\n * Line cap comparison\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @product highcharts highstock\n * @apioption plotOptions.series.linecap\n */\n /**\n * The [id](#series.id) of another series to link to. Additionally,\n * the value can be \":previous\" to link to the previous series. When\n * two series are linked, only the first one appears in the legend.\n * Toggling the visibility of this also toggles the linked series.\n *\n * If master series uses data sorting and linked series does not have\n * its own sorting definition, the linked series will be sorted in the\n * same order as the master one.\n *\n * @sample {highcharts|highstock} highcharts/demo/arearange-line/\n * Linked series\n *\n * @type {string}\n * @since 3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.linkedTo\n */\n /**\n * Options for the corresponding navigator series if `showInNavigator`\n * is `true` for this series. Available options are the same as any\n * series, documented at [plotOptions](#plotOptions.series) and\n * [series](#series).\n *\n * These options are merged with options in [navigator.series](\n * #navigator.series), and will take precedence if the same option is\n * defined both places.\n *\n * @see [navigator.series](#navigator.series)\n *\n * @type {Highcharts.PlotSeriesOptions}\n * @since 5.0.0\n * @product highstock\n * @apioption plotOptions.series.navigatorOptions\n */\n /**\n * The color for the parts of the graph or points that are below the\n * [threshold](#plotOptions.series.threshold). Note that `zones` takes\n * precedence over the negative color. Using `negativeColor` is\n * equivalent to applying a zone with value of 0.\n *\n * @see In styled mode, a negative color is applied by setting this option\n * to `true` combined with the `.highcharts-negative` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highcharts} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n * @sample {highcharts} highcharts/css/series-negative-color/\n * Styled mode\n * @sample {highstock} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highstock} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n * @sample {highmaps} highcharts/plotoptions/series-negative-color/\n * Spline, area and column\n * @sample {highmaps} highcharts/plotoptions/arearange-negativecolor/\n * Arearange\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @apioption plotOptions.series.negativeColor\n */\n /**\n * Same as\n * [accessibility.series.descriptionFormatter](#accessibility.series.descriptionFormatter),\n * but for an individual series. Overrides the chart wide configuration.\n *\n * @type {Function}\n * @since 5.0.12\n * @apioption plotOptions.series.pointDescriptionFormatter\n */\n /**\n * If no x values are given for the points in a series, `pointInterval`\n * defines the interval of the x values. For example, if a series\n * contains one value every decade starting from year 0, set\n * `pointInterval` to `10`. In true `datetime` axes, the `pointInterval`\n * is set in milliseconds.\n *\n * It can be also be combined with `pointIntervalUnit` to draw irregular\n * time intervals.\n *\n * If combined with `relativeXValue`, an x value can be set on each\n * point, and the `pointInterval` is added x times to the `pointStart`\n * setting.\n *\n * Please note that this options applies to the _series data_, not the\n * interval of the axis ticks, which is independent.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-datetime/\n * Datetime X axis\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative x value\n * @sample {highstock} stock/plotoptions/pointinterval-pointstart/\n * Using pointStart and pointInterval\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative x value\n *\n * @type {number}\n * @default 1\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointInterval\n */\n /**\n * On datetime series, this allows for setting the\n * [pointInterval](#plotOptions.series.pointInterval) to irregular time\n * units, `day`, `month` and `year`. A day is usually the same as 24\n * hours, but `pointIntervalUnit` also takes the DST crossover into\n * consideration when dealing with local time. Combine this option with\n * `pointInterval` to draw weeks, quarters, 6 months, 10 years etc.\n *\n * Please note that this options applies to the _series data_, not the\n * interval of the axis ticks, which is independent.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointintervalunit/\n * One point a month\n * @sample {highstock} highcharts/plotoptions/series-pointintervalunit/\n * One point a month\n *\n * @type {string}\n * @since 4.1.0\n * @product highcharts highstock gantt\n * @validvalue [\"day\", \"month\", \"year\"]\n * @apioption plotOptions.series.pointIntervalUnit\n */\n /**\n * Possible values: `\"on\"`, `\"between\"`, `number`.\n *\n * In a column chart, when pointPlacement is `\"on\"`, the point will not\n * create any padding of the X axis. In a polar column chart this means\n * that the first column points directly north. If the pointPlacement is\n * `\"between\"`, the columns will be laid out between ticks. This is\n * useful for example for visualising an amount between two points in\n * time or in a certain sector of a polar chart.\n *\n * Since Highcharts 3.0.2, the point placement can also be numeric,\n * where 0 is on the axis value, -0.5 is between this value and the\n * previous, and 0.5 is between this value and the next. Unlike the\n * textual options, numeric point placement options won't affect axis\n * padding.\n *\n * Note that pointPlacement needs a [pointRange](\n * #plotOptions.series.pointRange) to work. For column series this is\n * computed, but for line-type series it needs to be set.\n *\n * For the `xrange` series type and gantt charts, if the Y axis is a\n * category axis, the `pointPlacement` applies to the Y axis rather than\n * the (typically datetime) X axis.\n *\n * Defaults to `undefined` in cartesian charts, `\"between\"` in polar\n * charts.\n *\n * @see [xAxis.tickmarkPlacement](#xAxis.tickmarkPlacement)\n *\n * @sample {highcharts|highstock} highcharts/plotoptions/series-pointplacement-between/\n * Between in a column chart\n * @sample {highcharts|highstock} highcharts/plotoptions/series-pointplacement-numeric/\n * Numeric placement for custom layout\n * @sample {highcharts|highstock} maps/plotoptions/heatmap-pointplacement/\n * Placement in heatmap\n *\n * @type {string|number}\n * @since 2.3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointPlacement\n */\n /**\n * If no x values are given for the points in a series, pointStart\n * defines on what value to start. For example, if a series contains one\n * yearly value starting from 1945, set pointStart to 1945.\n *\n * If combined with `relativeXValue`, an x value can be set on each\n * point. The x value from the point options is multiplied by\n * `pointInterval` and added to `pointStart` to produce a modified x\n * value.\n *\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-linear/\n * Linear\n * @sample {highcharts} highcharts/plotoptions/series-pointstart-datetime/\n * Datetime\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative x value\n * @sample {highstock} stock/plotoptions/pointinterval-pointstart/\n * Using pointStart and pointInterval\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative x value\n *\n * @type {number}\n * @default 0\n * @product highcharts highstock gantt\n * @apioption plotOptions.series.pointStart\n */\n /**\n * When true, X values in the data set are relative to the current\n * `pointStart`, `pointInterval` and `pointIntervalUnit` settings. This\n * allows compression of the data for datasets with irregular X values.\n *\n * The real X values are computed on the formula `f(x) = ax + b`, where\n * `a` is the `pointInterval` (optionally with a time unit given by\n * `pointIntervalUnit`), and `b` is the `pointStart`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-relativexvalue/\n * Relative X value\n * @sample {highstock} stock/plotoptions/relativexvalue/\n * Relative X value\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock\n * @apioption plotOptions.series.relativeXValue\n */\n /**\n * Whether to select the series initially. If `showCheckbox` is true,\n * the checkbox next to the series name in the legend will be checked\n * for a selected series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-selected/\n * One out of two series selected\n *\n * @type {boolean}\n * @default false\n * @since 1.2.0\n * @apioption plotOptions.series.selected\n */\n /**\n * Whether to apply a drop shadow to the graph line. Since 2.3 the\n * shadow can be an object configuration containing `color`, `offsetX`,\n * `offsetY`, `opacity` and `width`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-shadow/\n * Shadow enabled\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @apioption plotOptions.series.shadow\n */\n /**\n * Whether to display this particular series or series type in the\n * legend. Standalone series are shown in legend by default, and linked\n * series are not. Since v7.2.0 it is possible to show series that use\n * colorAxis by setting this option to `true`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showinlegend/\n * One series in the legend, one hidden\n *\n * @type {boolean}\n * @apioption plotOptions.series.showInLegend\n */\n /**\n * Whether or not to show the series in the navigator. Takes precedence\n * over [navigator.baseSeries](#navigator.baseSeries) if defined.\n *\n * @type {boolean}\n * @since 5.0.0\n * @product highstock\n * @apioption plotOptions.series.showInNavigator\n */\n /**\n * If set to `true`, the accessibility module will skip past the points\n * in this series for keyboard navigation.\n *\n * @type {boolean}\n * @since 5.0.12\n * @apioption plotOptions.series.skipKeyboardNavigation\n */\n /**\n * Whether to stack the values of each series on top of each other.\n * Possible values are `undefined` to disable, `\"normal\"` to stack by\n * value or `\"percent\"`.\n *\n * When stacking is enabled, data must be sorted\n * in ascending X order.\n *\n * Some stacking options are related to specific series types. In the\n * streamgraph series type, the stacking option is set to `\"stream\"`.\n * The second one is `\"overlap\"`, which only applies to waterfall\n * series.\n *\n * @see [yAxis.reversedStacks](#yAxis.reversedStacks)\n *\n * @sample {highcharts} highcharts/plotoptions/series-stacking-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-stacking-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-stacking-bar/\n * Bar\n * @sample {highcharts} highcharts/plotoptions/series-stacking-area/\n * Area\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-line/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-bar/\n * Bar\n * @sample {highcharts} highcharts/plotoptions/series-stacking-percent-area/\n * Area\n * @sample {highcharts} highcharts/plotoptions/series-waterfall-with-normal-stacking\n * Waterfall with normal stacking\n * @sample {highcharts} highcharts/plotoptions/series-waterfall-with-overlap-stacking\n * Waterfall with overlap stacking\n * @sample {highstock} stock/plotoptions/stacking/\n * Area\n *\n * @type {string}\n * @product highcharts highstock\n * @validvalue [\"normal\", \"overlap\", \"percent\", \"stream\"]\n * @apioption plotOptions.series.stacking\n */\n /**\n * Whether to apply steps to the line. Possible values are `left`,\n * `center` and `right`.\n *\n * @sample {highcharts} highcharts/plotoptions/line-step/\n * Different step line options\n * @sample {highcharts} highcharts/plotoptions/area-step/\n * Stepped, stacked area\n * @sample {highstock} stock/plotoptions/line-step/\n * Step line\n *\n * @type {string}\n * @since 1.2.5\n * @product highcharts highstock\n * @validvalue [\"left\", \"center\", \"right\"]\n * @apioption plotOptions.series.step\n */\n /**\n * The threshold, also called zero level or base level. For line type\n * series this is only used in conjunction with\n * [negativeColor](#plotOptions.series.negativeColor).\n *\n * @see [softThreshold](#plotOptions.series.softThreshold).\n *\n * @type {number|null}\n * @default 0\n * @since 3.0\n * @product highcharts highstock\n * @apioption plotOptions.series.threshold\n */\n /**\n * Set the initial visibility of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-visible/\n * Two series, one hidden and one visible\n * @sample {highstock} stock/plotoptions/series-visibility/\n * Hidden series\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.visible\n */\n /**\n * Defines the Axis on which the zones are applied.\n *\n * @see [zones](#plotOptions.series.zones)\n *\n * @sample {highcharts} highcharts/series/color-zones-zoneaxis-x/\n * Zones on the X-Axis\n * @sample {highstock} highcharts/series/color-zones-zoneaxis-x/\n * Zones on the X-Axis\n *\n * @type {string}\n * @default y\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zoneAxis\n */\n /**\n * General event handlers for the series items. These event hooks can\n * also be attached to the series at run time using the\n * `Highcharts.addEvent` function.\n *\n * @declare Highcharts.SeriesEventsOptionsObject\n *\n * @private\n */\n events: {},\n /**\n * Fires after the series has finished its initial animation, or in case\n * animation is disabled, immediately as the series is displayed.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-afteranimate/\n * Show label after animate\n * @sample {highstock} highcharts/plotoptions/series-events-afteranimate/\n * Show label after animate\n *\n * @type {Highcharts.SeriesAfterAnimateCallbackFunction}\n * @since 4.0\n * @product highcharts highstock gantt\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.afterAnimate\n */\n /**\n * Fires when the checkbox next to the series' name in the legend is\n * clicked. One parameter, `event`, is passed to the function. The state\n * of the checkbox is found by `event.checked`. The checked item is\n * found by `event.item`. Return `false` to prevent the default action\n * which is to toggle the select state of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-checkboxclick/\n * Alert checkbox status\n *\n * @type {Highcharts.SeriesCheckboxClickCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.checkboxClick\n */\n /**\n * Fires when the series is clicked. One parameter, `event`, is passed\n * to the function, containing common event information. Additionally,\n * `event.point` holds a pointer to the nearest point on the graph.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-click/\n * Alert click info\n * @sample {highstock} stock/plotoptions/series-events-click/\n * Alert click info\n * @sample {highmaps} maps/plotoptions/series-events-click/\n * Display click info in subtitle\n *\n * @type {Highcharts.SeriesClickCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.click\n */\n /**\n * Fires when the series is hidden after chart generation time, either\n * by clicking the legend item or by calling `.hide()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-hide/\n * Alert when the series is hidden by clicking the legend item\n *\n * @type {Highcharts.SeriesHideCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.hide\n */\n /**\n * Fires when the legend item belonging to the series is clicked. One\n * parameter, `event`, is passed to the function. The default action\n * is to toggle the visibility of the series. This can be prevented\n * by returning `false` or calling `event.preventDefault()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-legenditemclick/\n * Confirm hiding and showing\n *\n * @type {Highcharts.SeriesLegendItemClickCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.legendItemClick\n */\n /**\n * Fires when the mouse leaves the graph. One parameter, `event`, is\n * passed to the function, containing common event information. If the\n * [stickyTracking](#plotOptions.series) option is true, `mouseOut`\n * doesn't happen before the mouse enters another graph or leaves the\n * plot area.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-sticky/\n * With sticky tracking by default\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-no-sticky/\n * Without sticky tracking\n *\n * @type {Highcharts.SeriesMouseOutCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.mouseOut\n */\n /**\n * Fires when the mouse enters the graph. One parameter, `event`, is\n * passed to the function, containing common event information.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-sticky/\n * With sticky tracking by default\n * @sample {highcharts} highcharts/plotoptions/series-events-mouseover-no-sticky/\n * Without sticky tracking\n *\n * @type {Highcharts.SeriesMouseOverCallbackFunction}\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.mouseOver\n */\n /**\n * Fires when the series is shown after chart generation time, either\n * by clicking the legend item or by calling `.show()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-show/\n * Alert when the series is shown by clicking the legend item.\n *\n * @type {Highcharts.SeriesShowCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Series\n * @apioption plotOptions.series.events.show\n */\n /**\n * Options for the point markers of line and scatter-like series. Properties\n * like `fillColor`, `lineColor` and `lineWidth` define the visual\n * appearance of the markers. The `symbol` option defines the shape. Other\n * series types, like column series, don't have markers, but have visual\n * options on the series level instead.\n *\n * In styled mode, the markers can be styled with the `.highcharts-point`,\n * `.highcharts-point-hover` and `.highcharts-point-select` class names.\n *\n * @declare Highcharts.PointMarkerOptionsObject\n *\n * @sample {highmaps} maps/demo/mappoint-mapmarker\n * Using the mapmarker symbol for points\n *\n * @private\n */\n marker: {\n /**\n * Enable or disable the point marker. If `undefined`, the markers\n * are hidden when the data is dense, and shown for more widespread\n * data points.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-enabled/\n * Disabled markers\n * @sample {highcharts} highcharts/plotoptions/series-marker-enabled-false/\n * Disabled in normal state but enabled on hover\n * @sample {highstock} stock/plotoptions/series-marker/\n * Enabled markers\n *\n * @type {boolean}\n * @default {highcharts} undefined\n * @default {highstock} false\n * @apioption plotOptions.series.marker.enabled\n */\n /**\n * The threshold for how dense the point markers should be before\n * they are hidden, given that `enabled` is not defined. The number\n * indicates the horizontal distance between the two closest points\n * in the series, as multiples of the `marker.radius`. In other\n * words, the default value of 2 means points are hidden if\n * overlapping horizontally.\n *\n * @sample highcharts/plotoptions/series-marker-enabledthreshold\n * A higher threshold\n *\n * @since 6.0.5\n */\n enabledThreshold: 2,\n /**\n * The fill color of the point marker. When `undefined`, the series'\n * or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * White fill\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.fillColor\n */\n /**\n * Image markers only. Set the image width explicitly. When using\n * this option, a `width` must also be set.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n * @sample {highstock} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n *\n * @type {number}\n * @since 4.0.4\n * @apioption plotOptions.series.marker.height\n */\n /**\n * The color of the point marker's outline. When `undefined`, the\n * series' or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * Inherit from series color (undefined)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n lineColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The width of the point marker's outline.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-fillcolor/\n * 2px blue marker\n */\n lineWidth: 0,\n /**\n * The radius of the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-radius/\n * Bigger markers\n *\n * @default {highstock} 2\n * @default {highcharts} 4\n *\n */\n radius: 4,\n /**\n * A predefined shape or symbol for the marker. When undefined, the\n * symbol is pulled from options.symbols. Other possible values are\n * `'circle'`, `'square'`,`'diamond'`, `'triangle'` and\n * `'triangle-down'`.\n *\n * Additionally, the URL to a graphic can be given on this form:\n * `'url(graphic.png)'`. Note that for the image to be applied to\n * exported charts, its URL needs to be accessible by the export\n * server.\n *\n * Custom callbacks for symbol path generation can also be added to\n * `Highcharts.SVGRenderer.prototype.symbols`. The callback is then\n * used by its method name, as shown in the demo.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-symbol/\n * Predefined, graphic and custom markers\n * @sample {highstock} highcharts/plotoptions/series-marker-symbol/\n * Predefined, graphic and custom markers\n * @sample {highmaps} maps/demo/mappoint-mapmarker\n * Using the mapmarker symbol for points\n *\n * @type {string}\n * @apioption plotOptions.series.marker.symbol\n */\n /**\n * Image markers only. Set the image width explicitly. When using\n * this option, a `height` must also be set.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n * @sample {highstock} highcharts/plotoptions/series-marker-width-height/\n * Fixed width and height\n *\n * @type {number}\n * @since 4.0.4\n * @apioption plotOptions.series.marker.width\n */\n /**\n * States for a single point marker.\n *\n * @declare Highcharts.PointStatesOptionsObject\n */\n states: {\n /**\n * The normal state of a single point marker. Currently only\n * used for setting animation when returning to normal state\n * from hover.\n *\n * @declare Highcharts.PointStatesNormalOptionsObject\n */\n normal: {\n /**\n * Animation when returning to normal state after hovering.\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n */\n animation: true\n },\n /**\n * The hover state for a single point marker.\n *\n * @declare Highcharts.PointStatesHoverOptionsObject\n */\n hover: {\n /**\n * Animation when hovering over the marker.\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n */\n animation: {\n /** @internal */\n duration: 50\n },\n /**\n * Enable or disable the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-enabled/\n * Disabled hover state\n */\n enabled: true,\n /**\n * The fill color of the marker in hover state. When\n * `undefined`, the series' or point's fillColor for normal\n * state is used.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.states.hover.fillColor\n */\n /**\n * The color of the point marker's outline. When\n * `undefined`, the series' or point's lineColor for normal\n * state is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-linecolor/\n * White fill color, black line color\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @apioption plotOptions.series.marker.states.hover.lineColor\n */\n /**\n * The width of the point marker's outline. When\n * `undefined`, the series' or point's lineWidth for normal\n * state is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-linewidth/\n * 3px line width\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.hover.lineWidth\n */\n /**\n * The radius of the point marker. In hover state, it\n * defaults to the normal state's radius + 2 as per the\n * [radiusPlus](#plotOptions.series.marker.states.hover.radiusPlus)\n * option.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-hover-radius/\n * 10px radius\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.hover.radius\n */\n /**\n * The number of pixels to increase the radius of the\n * hovered point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels greater radius on hover\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels greater radius on hover\n *\n * @since 4.0.3\n */\n radiusPlus: 2,\n /**\n * The additional line width for a hovered point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 2 pixels wider on hover\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 2 pixels wider on hover\n *\n * @since 4.0.3\n */\n lineWidthPlus: 1\n },\n /**\n * The appearance of the point marker when selected. In order to\n * allow a point to be selected, set the\n * `series.allowPointSelect` option to true.\n *\n * @declare Highcharts.PointStatesSelectOptionsObject\n */\n select: {\n /**\n * Enable or disable visible feedback for selection.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-enabled/\n * Disabled select state\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.marker.states.select.enabled\n */\n /**\n * The radius of the point marker. In hover state, it\n * defaults to the normal state's radius + 2.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-radius/\n * 10px radius for selected points\n *\n * @type {number}\n * @apioption plotOptions.series.marker.states.select.radius\n */\n /**\n * The fill color of the point marker.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-fillcolor/\n * Solid red discs for selected points\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n fillColor: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * The color of the point marker's outline. When\n * `undefined`, the series' or point's color is used.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-linecolor/\n * Red line color for selected points\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n */\n lineColor: \"#000000\" /* Palette.neutralColor100 */,\n /**\n * The width of the point marker's outline.\n *\n * @sample {highcharts} highcharts/plotoptions/series-marker-states-select-linewidth/\n * 3px line width for selected points\n */\n lineWidth: 2\n }\n }\n },\n /**\n * Properties for each single point.\n *\n * @declare Highcharts.PlotSeriesPointOptions\n *\n * @private\n */\n point: {\n /**\n * Fires when a point is clicked. One parameter, `event`, is passed\n * to the function, containing common event information.\n *\n * If the `series.allowPointSelect` option is true, the default\n * action for the point's click event is to toggle the point's\n * select state. Returning `false` cancels this action.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click/\n * Click marker to alert values\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click-column/\n * Click column\n * @sample {highcharts} highcharts/plotoptions/series-point-events-click-url/\n * Go to URL\n * @sample {highmaps} maps/plotoptions/series-point-events-click/\n * Click marker to display values\n * @sample {highmaps} maps/plotoptions/series-point-events-click-url/\n * Go to URL\n *\n * @type {Highcharts.PointClickCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.click\n */\n /**\n * Fires when the mouse leaves the area close to the point. One\n * parameter, `event`, is passed to the function, containing common\n * event information.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Show values in the chart's corner on mouse over\n *\n * @type {Highcharts.PointMouseOutCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.mouseOut\n */\n /**\n * Fires when the mouse enters the area close to the point. One\n * parameter, `event`, is passed to the function, containing common\n * event information.\n *\n * Returning `false` cancels the default behavior, which is to show a\n * tooltip for the point.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-mouseover/\n * Show values in the chart's corner on mouse over\n *\n * @type {Highcharts.PointMouseOverCallbackFunction}\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.mouseOver\n */\n /**\n * Fires when the point is removed using the `.remove()` method. One\n * parameter, `event`, is passed to the function. Returning `false`\n * cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-remove/\n * Remove point and confirm\n *\n * @type {Highcharts.PointRemoveCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.remove\n */\n /**\n * Fires when the point is selected either programmatically or\n * following a click on the point. One parameter, `event`, is passed\n * to the function. Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-select/\n * Report the last selected point\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Report select and unselect\n *\n * @type {Highcharts.PointSelectCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.select\n */\n /**\n * Fires when the point is unselected either programmatically or\n * following a click on the point. One parameter, `event`, is passed\n * to the function.\n * Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-unselect/\n * Report the last unselected point\n * @sample {highmaps} maps/plotoptions/series-allowpointselect/\n * Report select and unselect\n *\n * @type {Highcharts.PointUnselectCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.unselect\n */\n /**\n * Fires when the point is updated programmatically through the\n * `.update()` method. One parameter, `event`, is passed to the\n * function. The new point options can be accessed through\n * `event.options`. Returning `false` cancels the operation.\n *\n * @sample {highcharts} highcharts/plotoptions/series-point-events-update/\n * Confirm point updating\n *\n * @type {Highcharts.PointUpdateCallbackFunction}\n * @since 1.2.0\n * @context Highcharts.Point\n * @apioption plotOptions.series.point.events.update\n */\n /**\n * Events for each single point.\n *\n * @declare Highcharts.PointEventsOptionsObject\n */\n events: {}\n },\n /**\n * Options for the series data labels, appearing next to each data\n * point.\n *\n * Since v6.2.0, multiple data labels can be applied to each single\n * point by defining them as an array of configs.\n *\n * In styled mode, the data labels can be styled with the\n * `.highcharts-data-label-box` and `.highcharts-data-label` class names\n * ([see example](https://www.highcharts.com/samples/highcharts/css/series-datalabels)).\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-enabled\n * Data labels enabled\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-multiple\n * Multiple data labels on a bar series\n * @sample {highcharts} highcharts/css/series-datalabels\n * Styled mode example\n * @sample {highmaps} maps/demo/color-axis\n * Choropleth map with data labels\n * @sample {highmaps} maps/demo/mappoint-datalabels-mapmarker\n * Using data labels as map markers\n *\n * @type {*|Array<*>}\n * @product highcharts highstock highmaps gantt\n *\n * @private\n */\n dataLabels: {\n /**\n * Enable or disable the initial animation when a series is displayed\n * for the `dataLabels`. The animation can also be set as a\n * configuration object. Please note that this option only applies to\n * the initial animation.\n *\n * For other animations, see [chart.animation](#chart.animation) and the\n * animation parameter under the API methods. The following properties\n * are supported:\n *\n * - `defer`: The animation delay time in milliseconds.\n *\n * @sample {highcharts} highcharts/plotoptions/animation-defer/\n * Animation defer settings\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n * @since 8.2.0\n * @apioption plotOptions.series.dataLabels.animation\n */\n animation: {},\n /**\n * The animation delay time in milliseconds. Set to `0` to render the\n * data labels immediately. As `undefined` inherits defer time from the\n * [series.animation.defer](#plotOptions.series.animation.defer).\n *\n * @type {number}\n * @since 8.2.0\n * @apioption plotOptions.series.dataLabels.animation.defer\n */\n /**\n * The alignment of the data label compared to the point. If `right`,\n * the right side of the label should be touching the point. For points\n * with an extent, like columns, the alignments also dictates how to\n * align it inside the box, as given with the\n * [inside](#plotOptions.column.dataLabels.inside) option. Can be one of\n * `left`, `center` or `right`.\n *\n * @sample {highcharts}\n * highcharts/plotoptions/series-datalabels-align-left/ Left\n * aligned\n * @sample {highcharts}\n * highcharts/plotoptions/bar-datalabels-align-inside-bar/ Data\n * labels inside the bar\n *\n * @type {Highcharts.AlignValue|null}\n */\n align: 'center',\n /**\n * Whether to allow data labels to overlap. To make the labels less\n * sensitive for overlapping, the\n * [dataLabels.padding](#plotOptions.series.dataLabels.padding)\n * can be set to 0.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-allowoverlap-false/\n * Don't allow overlap\n *\n * @type {boolean}\n * @default false\n * @since 4.1.0\n * @apioption plotOptions.series.dataLabels.allowOverlap\n */\n /**\n * The background color or gradient for the data label. Setting it to\n * `auto` will use the point's color.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/demo/mappoint-datalabels-mapmarker\n * Data labels as map markers\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.backgroundColor\n */\n /**\n * The border color for the data label. Setting it to `auto` will use\n * the point's color. Defaults to `undefined`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderColor\n */\n /**\n * The border radius in pixels for the data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {number}\n * @default 0\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderRadius\n */\n /**\n * The border width in pixels for the data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {number}\n * @default 0\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.borderWidth\n */\n borderWidth: 0,\n /**\n * A class name for the data label. Particularly in styled mode,\n * this can be used to give each series' or point's data label\n * unique styling. In addition to this option, a default color class\n * name is added so that we can give the labels a contrast text\n * shadow.\n *\n * @sample {highcharts} highcharts/css/data-label-contrast/\n * Contrast text shadow\n * @sample {highcharts} highcharts/css/series-datalabels/\n * Styling by CSS\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.dataLabels.className\n */\n /**\n * This options is deprecated.\n * Use [style.color](#plotOptions.series.dataLabels.style) instead.\n *\n * The text color for the data labels. Defaults to `undefined`. For\n * certain series types, like column or map, the data labels can be\n * drawn inside the points. In this case the data label will be\n * drawn with maximum contrast by default. Additionally, it will be\n * given a `text-outline` style with the opposite color, to further\n * increase the contrast. This can be overridden by setting the\n * `text-outline` style to `none` in the `dataLabels.style` option.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-color/\n * Red data labels\n * @sample {highmaps} maps/demo/color-axis/\n * White data labels\n *\n * @see [style.color](#plotOptions.series.dataLabels.style)\n *\n * @type {Highcharts.ColorType}\n * @deprecated 10.3\n * @apioption plotOptions.series.dataLabels.color\n */\n /**\n * Whether to hide data labels that are outside the plot area. By\n * default, the data label is moved inside the plot area according\n * to the\n * [overflow](#plotOptions.series.dataLabels.overflow)\n * option.\n *\n * @type {boolean}\n * @default true\n * @since 2.3.3\n * @apioption plotOptions.series.dataLabels.crop\n */\n /**\n * Whether to defer displaying the data labels until the initial\n * series animation has finished. Setting to `false` renders the\n * data label immediately. If set to `true` inherits the defer\n * time set in [plotOptions.series.animation](#plotOptions.series.animation).\n * If set to a number, a defer time is specified in milliseconds.\n *\n * @sample highcharts/plotoptions/animation-defer\n * Set defer time\n *\n * @since 4.0.0\n * @type {boolean|number}\n * @product highcharts highstock gantt\n */\n defer: true,\n /**\n * Enable or disable the data labels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-enabled/\n * Data labels enabled\n * @sample {highmaps} maps/demo/color-axis/\n * Data labels enabled\n *\n * @type {boolean}\n * @default false\n * @apioption plotOptions.series.dataLabels.enabled\n */\n /**\n * A declarative filter to control of which data labels to display.\n * The declarative filter is designed for use when callback\n * functions are not available, like when the chart options require\n * a pure JSON structure or for use with graphical editors. For\n * programmatic control, use the `formatter` instead, and return\n * `undefined` to disable a single data label.\n *\n * @example\n * filter: {\n * property: 'percentage',\n * operator: '>',\n * value: 4\n * }\n *\n * @sample {highcharts} highcharts/demo/pie-monochrome\n * Data labels filtered by percentage\n *\n * @declare Highcharts.DataLabelsFilterOptionsObject\n * @since 6.0.3\n * @apioption plotOptions.series.dataLabels.filter\n */\n /**\n * The operator to compare by. Can be one of `>`, `<`, `>=`, `<=`,\n * `==`, and `===`.\n *\n * @type {string}\n * @validvalue [\">\", \"<\", \">=\", \"<=\", \"==\", \"===\"]\n * @apioption plotOptions.series.dataLabels.filter.operator\n */\n /**\n * The point property to filter by. Point options are passed\n * directly to properties, additionally there are `y` value,\n * `percentage` and others listed under {@link Highcharts.Point}\n * members.\n *\n * @type {string}\n * @apioption plotOptions.series.dataLabels.filter.property\n */\n /**\n * The value to compare against.\n *\n * @type {number}\n * @apioption plotOptions.series.dataLabels.filter.value\n */\n /**\n * A\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for the data label. Available variables are the same as for\n * `formatter`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-format/\n * Add a unit\n * @sample {highmaps} maps/plotoptions/series-datalabels-format/\n * Formatted value in the data label\n *\n * @type {string}\n * @default y\n * @default point.value\n * @since 3.0\n * @apioption plotOptions.series.dataLabels.format\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Callback JavaScript function to format the data label. Note that if a\n * `format` is defined, the format takes precedence and the formatter is\n * ignored.\n *\n * @sample {highmaps} maps/plotoptions/series-datalabels-format/\n * Formatted value\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n */\n formatter: function () {\n var numberFormatter = this.series.chart.numberFormatter;\n return typeof this.y !== 'number' ?\n '' : numberFormatter(this.y, -1);\n },\n /**\n * For points with an extent, like columns or map areas, whether to\n * align the data label inside the box or to the actual value point.\n * Defaults to `false` in most cases, `true` in stacked columns.\n *\n * @type {boolean}\n * @since 3.0\n * @apioption plotOptions.series.dataLabels.inside\n */\n /**\n * Format for points with the value of null. Works analogously to\n * [format](#plotOptions.series.dataLabels.format). `nullFormat` can\n * be applied only to series which support displaying null points\n * i.e `heatmap` or `tilemap`. Does not work with series that don't\n * display null points, like `line`, `column`, `bar` or `pie`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-nullformat/\n * Format data label for null points in heat map\n *\n * @type {boolean|string}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.nullFormat\n */\n /**\n * Callback JavaScript function that defines formatting for points\n * with the value of null. Works analogously to\n * [formatter](#plotOptions.series.dataLabels.formatter).\n * `nullFormatter` can be applied only to series which support\n * displaying null points i.e `heatmap` or `tilemap`. Does not work\n * with series that don't display null points, like `line`, `column`,\n * `bar` or `pie`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-nullformat/\n * Format data label for null points in heat map\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.nullFormatter\n */\n /**\n * How to handle data labels that flow outside the plot area. The\n * default is `\"justify\"`, which aligns them inside the plot area.\n * For columns and bars, this means it will be moved inside the bar.\n * To display data labels outside the plot area, set `crop` to\n * `false` and `overflow` to `\"allow\"`.\n *\n * @type {Highcharts.DataLabelsOverflowValue}\n * @default justify\n * @since 3.0.6\n * @apioption plotOptions.series.dataLabels.overflow\n */\n /**\n * When either the `borderWidth` or the `backgroundColor` is set,\n * this is the padding within the box.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n * @sample {highmaps} maps/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @since 2.2.1\n */\n padding: 5,\n /**\n * Aligns data labels relative to points. If `center` alignment is\n * not possible, it defaults to `right`.\n *\n * @type {Highcharts.AlignValue}\n * @default center\n * @apioption plotOptions.series.dataLabels.position\n */\n /**\n * Text rotation in degrees. Note that due to a more complex\n * structure, backgrounds, borders and padding will be lost on a\n * rotated data label.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical labels\n *\n * @type {number}\n * @default 0\n * @apioption plotOptions.series.dataLabels.rotation\n */\n /**\n * The shadow of the box. Works best with `borderWidth` or\n * `backgroundColor`. Since 2.3 the shadow can be an object\n * configuration containing `color`, `offsetX`, `offsetY`, `opacity`\n * and `width`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-box/\n * Data labels box options\n *\n * @type {boolean|Highcharts.ShadowOptionsObject}\n * @default false\n * @since 2.2.1\n * @apioption plotOptions.series.dataLabels.shadow\n */\n /**\n * The name of a symbol to use for the border around the label.\n * Symbols are predefined functions on the Renderer object.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-shape/\n * A callout for annotations\n *\n * @type {string}\n * @default square\n * @since 4.1.2\n * @apioption plotOptions.series.dataLabels.shape\n */\n /**\n * Styles for the label. The default `color` setting is\n * `\"contrast\"`, which is a pseudo color that Highcharts picks up\n * and applies the maximum contrast to the underlying point item,\n * for example the bar in a bar chart.\n *\n * The `textOutline` is a pseudo property that applies an outline of\n * the given width with the given color, which by default is the\n * maximum contrast to the text. So a bright text color will result\n * in a black text outline for maximum readability on a mixed\n * background. In some cases, especially with grayscale text, the\n * text outline doesn't work well, in which cases it can be disabled\n * by setting it to `\"none\"`. When `useHTML` is true, the\n * `textOutline` will not be picked up. In this, case, the same\n * effect can be acheived through the `text-shadow` CSS property.\n *\n * For some series types, where each point has an extent, like for\n * example tree maps, the data label may overflow the point. There\n * are two strategies for handling overflow. By default, the text\n * will wrap to multiple lines. The other strategy is to set\n * `style.textOverflow` to `ellipsis`, which will keep the text on\n * one line plus it will break inside long words.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-style/\n * Bold labels\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow/\n * Long labels truncated with an ellipsis in a pie\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow-wrap/\n * Long labels are wrapped in a pie\n * @sample {highmaps} maps/demo/color-axis/\n * Bold labels\n *\n * @type {Highcharts.CSSObject}\n * @since 4.1.0\n * @apioption plotOptions.series.dataLabels.style\n */\n style: {\n /** @internal */\n fontSize: '11px',\n /** @internal */\n fontWeight: 'bold',\n /** @internal */\n color: 'contrast',\n /** @internal */\n textOutline: '1px contrast'\n },\n /**\n * Options for a label text which should follow marker's shape.\n * Border and background are disabled for a label that follows a\n * path.\n *\n * **Note:** Only SVG-based renderer supports this option. Setting\n * `useHTML` to true will disable this option.\n *\n * @declare Highcharts.DataLabelsTextPathOptionsObject\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath\n */\n /**\n * Presentation attributes for the text path.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath.attributes\n */\n /**\n * Enable or disable `textPath` option for link's or marker's data\n * labels.\n *\n * @type {boolean}\n * @since 7.1.0\n * @apioption plotOptions.series.dataLabels.textPath.enabled\n */\n /**\n * Whether to\n * [use HTML](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting#html)\n * to render the labels.\n *\n * @type {boolean}\n * @default false\n * @apioption plotOptions.series.dataLabels.useHTML\n */\n /**\n * The vertical alignment of a data label. Can be one of `top`,\n * `middle` or `bottom`. The default value depends on the data, for\n * instance in a column chart, the label is above positive values\n * and below negative values.\n *\n * @type {Highcharts.VerticalAlignValue|null}\n * @since 2.3.3\n */\n verticalAlign: 'bottom',\n /**\n * The x position offset of the label relative to the point in\n * pixels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical and positioned\n * @sample {highcharts} highcharts/plotoptions/bar-datalabels-align-inside-bar/\n * Data labels inside the bar\n */\n x: 0,\n /**\n * The z index of the data labels. Use a `zIndex` of 6 to display it above\n * the series, or use a `zIndex` of 2 to display it behind the series.\n *\n * @type {number}\n * @default 6\n * @since 2.3.5\n * @apioption plotOptions.series.dataLabels.zIndex\n */\n /**\n * The y position offset of the label relative to the point in\n * pixels.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-rotation/\n * Vertical and positioned\n */\n y: 0\n },\n /**\n * When the series contains less points than the crop threshold, all\n * points are drawn, even if the points fall outside the visible plot\n * area at the current zoom. The advantage of drawing all points\n * (including markers and columns), is that animation is performed on\n * updates. On the other hand, when the series contains more points than\n * the crop threshold, the series data is cropped to only contain points\n * that fall within the plot area. The advantage of cropping away\n * invisible points is to increase performance on large series.\n *\n * @since 2.2\n * @product highcharts highstock\n *\n * @private\n */\n cropThreshold: 300,\n /**\n * Opacity of a series parts: line, fill (e.g. area) and dataLabels.\n *\n * @see [states.inactive.opacity](#plotOptions.series.states.inactive.opacity)\n *\n * @since 7.1.0\n *\n * @private\n */\n opacity: 1,\n /**\n * The width of each point on the x axis. For example in a column chart\n * with one value each day, the pointRange would be 1 day (= 24 * 3600\n * * 1000 milliseconds). This is normally computed automatically, but\n * this option can be used to override the automatic value.\n *\n * @product highstock\n *\n * @private\n */\n pointRange: 0,\n /**\n * When this is true, the series will not cause the Y axis to cross\n * the zero plane (or [threshold](#plotOptions.series.threshold) option)\n * unless the data actually crosses the plane.\n *\n * For example, if `softThreshold` is `false`, a series of 0, 1, 2,\n * 3 will make the Y axis show negative values according to the\n * `minPadding` option. If `softThreshold` is `true`, the Y axis starts\n * at 0.\n *\n * @since 4.1.9\n * @product highcharts highstock\n *\n * @private\n */\n softThreshold: true,\n /**\n * @declare Highcharts.SeriesStatesOptionsObject\n *\n * @private\n */\n states: {\n /**\n * The normal state of a series, or for point items in column, pie\n * and similar series. Currently only used for setting animation\n * when returning to normal state from hover.\n *\n * @declare Highcharts.SeriesStatesNormalOptionsObject\n */\n normal: {\n /**\n * Animation when returning to normal state after hovering.\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n */\n animation: true\n },\n /**\n * Options for the hovered series. These settings override the\n * normal state options when a series is moused over or touched.\n *\n * @declare Highcharts.SeriesStatesHoverOptionsObject\n */\n hover: {\n /**\n * Enable separate styles for the hovered series to visualize\n * that the user hovers either the series itself or the legend.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled/\n * Line\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled-column/\n * Column\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-enabled-pie/\n * Pie\n *\n * @type {boolean}\n * @default true\n * @since 1.2\n * @apioption plotOptions.series.states.hover.enabled\n */\n /**\n * Animation setting for hovering the graph in line-type series.\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n * @since 5.0.8\n * @product highcharts highstock\n */\n animation: {\n /**\n * The duration of the hover animation in milliseconds. By\n * default the hover state animates quickly in, and slowly\n * back to normal.\n *\n * @internal\n */\n duration: 50\n },\n /**\n * Pixel width of the graph line. By default this property is\n * undefined, and the `lineWidthPlus` property dictates how much\n * to increase the linewidth from normal state.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidth/\n * 5px line on hover\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption plotOptions.series.states.hover.lineWidth\n */\n /**\n * The additional line width for the graph of a hovered series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels wider\n * @sample {highstock} highcharts/plotoptions/series-states-hover-linewidthplus/\n * 5 pixels wider\n *\n * @since 4.0.3\n * @product highcharts highstock\n */\n lineWidthPlus: 1,\n /**\n * In Highcharts 1.0, the appearance of all markers belonging\n * to the hovered series. For settings on the hover state of the\n * individual point, see\n * [marker.states.hover](#plotOptions.series.marker.states.hover).\n *\n * @deprecated\n *\n * @extends plotOptions.series.marker\n * @excluding states, symbol\n * @product highcharts highstock\n */\n marker: {\n // lineWidth: base + 1,\n // radius: base + 1\n },\n /**\n * Options for the halo appearing around the hovered point in\n * line-type series as well as outside the hovered slice in pie\n * charts. By default the halo is filled by the current point or\n * series color with an opacity of 0.25\\. The halo can be\n * disabled by setting the `halo` option to `null`.\n *\n * In styled mode, the halo is styled with the\n * `.highcharts-halo` class, with colors inherited from\n * `.highcharts-color-{n}`.\n *\n * @sample {highcharts} highcharts/plotoptions/halo/\n * Halo options\n * @sample {highstock} highcharts/plotoptions/halo/\n * Halo options\n *\n * @declare Highcharts.SeriesStatesHoverHaloOptionsObject\n * @type {null|*}\n * @since 4.0\n * @product highcharts highstock\n */\n halo: {\n /**\n * A collection of SVG attributes to override the appearance\n * of the halo, for example `fill`, `stroke` and\n * `stroke-width`.\n *\n * @type {Highcharts.SVGAttributes}\n * @since 4.0\n * @product highcharts highstock\n * @apioption plotOptions.series.states.hover.halo.attributes\n */\n /**\n * The pixel size of the halo. For point markers this is the\n * radius of the halo. For pie slices it is the width of the\n * halo outside the slice. For bubbles it defaults to 5 and\n * is the width of the halo outside the bubble.\n *\n * @since 4.0\n * @product highcharts highstock\n */\n size: 10,\n /**\n * Opacity for the halo unless a specific fill is overridden\n * using the `attributes` setting. Note that Highcharts is\n * only able to apply opacity to colors of hex or rgb(a)\n * formats.\n *\n * @since 4.0\n * @product highcharts highstock\n */\n opacity: 0.25\n }\n },\n /**\n * Specific options for point in selected states, after being\n * selected by\n * [allowPointSelect](#plotOptions.series.allowPointSelect)\n * or programmatically.\n *\n * @sample maps/plotoptions/series-allowpointselect/\n * Allow point select demo\n *\n * @declare Highcharts.SeriesStatesSelectOptionsObject\n * @extends plotOptions.series.states.hover\n * @excluding brightness\n */\n select: {\n animation: {\n /** @internal */\n duration: 0\n }\n },\n /**\n * The opposite state of a hover for series.\n *\n * @sample highcharts/plotoptions/series-states-inactive-disabled\n * Disabled inactive state\n *\n * @declare Highcharts.SeriesStatesInactiveOptionsObject\n */\n inactive: {\n /**\n * Enable or disable the inactive state for a series\n *\n * @sample highcharts/plotoptions/series-states-inactive-disabled\n * Disabled inactive state\n *\n * @type {boolean}\n * @default true\n * @apioption plotOptions.series.states.inactive.enabled\n */\n /**\n * The animation for entering the inactive state.\n *\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>}\n */\n animation: {\n /** @internal */\n duration: 50\n },\n /**\n * Opacity of series elements (dataLabels, line, area).\n *\n * @type {number}\n */\n opacity: 0.2\n }\n },\n /**\n * Sticky tracking of mouse events. When true, the `mouseOut` event on a\n * series isn't triggered until the mouse moves over another series, or\n * out of the plot area. When false, the `mouseOut` event on a series is\n * triggered when the mouse leaves the area around the series' graph or\n * markers. This also implies the tooltip when not shared. When\n * `stickyTracking` is false and `tooltip.shared` is false, the tooltip\n * will be hidden when moving the mouse between series. Defaults to true\n * for line and area type series, but to false for columns, pies etc.\n *\n * **Note:** The boost module will force this option because of\n * technical limitations.\n *\n * @sample {highcharts} highcharts/plotoptions/series-stickytracking-true/\n * True by default\n * @sample {highcharts} highcharts/plotoptions/series-stickytracking-false/\n * False\n *\n * @default {highcharts} true\n * @default {highstock} true\n * @default {highmaps} false\n * @since 2.0\n *\n * @private\n */\n stickyTracking: true,\n /**\n * A configuration object for the tooltip rendering of each single\n * series. Properties are inherited from [tooltip](#tooltip), but only\n * the following properties can be defined on a series level.\n *\n * @declare Highcharts.SeriesTooltipOptionsObject\n * @since 2.3\n * @extends tooltip\n * @excluding animation, backgroundColor, borderColor, borderRadius,\n * borderWidth, className, crosshairs, enabled, formatter,\n * headerShape, hideDelay, outside, padding, positioner,\n * shadow, shape, shared, snap, split, stickOnContact,\n * style, useHTML\n * @apioption plotOptions.series.tooltip\n */\n /**\n * When a series contains a data array that is longer than this, only\n * one dimensional arrays of numbers, or two dimensional arrays with\n * x and y values are allowed. Also, only the first point is tested,\n * and the rest are assumed to be the same format. This saves expensive\n * data checking and indexing in long series. Set it to `0` disable.\n *\n * Note:\n * In boost mode turbo threshold is forced. Only array of numbers or\n * two dimensional arrays are allowed.\n *\n * @since 2.2\n * @product highcharts highstock gantt\n *\n * @private\n */\n turboThreshold: 1000,\n /**\n * An array defining zones within a series. Zones can be applied to the\n * X axis, Y axis or Z axis for bubbles, according to the `zoneAxis`\n * option. The zone definitions have to be in ascending order regarding\n * to the value.\n *\n * In styled mode, the color zones are styled with the\n * `.highcharts-zone-{n}` class, or custom classed from the `className`\n * option\n * ([view live demo](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/color-zones/)).\n *\n * @see [zoneAxis](#plotOptions.series.zoneAxis)\n *\n * @sample {highcharts} highcharts/series/color-zones-simple/\n * Color zones\n * @sample {highstock} highcharts/series/color-zones-simple/\n * Color zones\n *\n * @declare Highcharts.SeriesZonesOptionsObject\n * @type {Array<*>}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones\n */\n /**\n * Styled mode only. A custom class name for the zone.\n *\n * @sample highcharts/css/color-zones/\n * Zones styled by class name\n *\n * @type {string}\n * @since 5.0.0\n * @apioption plotOptions.series.zones.className\n */\n /**\n * Defines the color of the series.\n *\n * @see [series color](#plotOptions.series.color)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.color\n */\n /**\n * A name for the dash style to use for the graph.\n *\n * @see [plotOptions.series.dashStyle](#plotOptions.series.dashStyle)\n *\n * @sample {highcharts|highstock} highcharts/series/color-zones-dashstyle-dot/\n * Dashed line indicates prognosis\n *\n * @type {Highcharts.DashStyleValue}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.dashStyle\n */\n /**\n * Defines the fill color for the series (in area type series)\n *\n * @see [fillColor](#plotOptions.area.fillColor)\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.fillColor\n */\n /**\n * The value up to where the zone extends, if undefined the zones\n * stretches to the last value in the series.\n *\n * @type {number}\n * @since 4.1.0\n * @product highcharts highstock\n * @apioption plotOptions.series.zones.value\n */\n /**\n * When using dual or multiple color axes, this number defines which\n * colorAxis the particular series is connected to. It refers to\n * either the\n * {@link #colorAxis.id|axis id}\n * or the index of the axis in the colorAxis array, with 0 being the\n * first. Set this option to false to prevent a series from connecting\n * to the default color axis.\n *\n * Since v7.2.0 the option can also be an axis id or an axis index\n * instead of a boolean flag.\n *\n * @sample highcharts/coloraxis/coloraxis-with-pie/\n * Color axis with pie series\n * @sample highcharts/coloraxis/multiple-coloraxis/\n * Multiple color axis\n *\n * @type {number|string|boolean}\n * @default 0\n * @product highcharts highstock highmaps\n * @apioption plotOptions.series.colorAxis\n */\n /**\n * Determines what data value should be used to calculate point color\n * if `colorAxis` is used. Requires to set `min` and `max` if some\n * custom point property is used or if approximation for data grouping\n * is set to `'sum'`.\n *\n * @sample highcharts/coloraxis/custom-color-key/\n * Custom color key\n * @sample highcharts/coloraxis/color-key-with-stops/\n * Custom colorKey with color axis stops\n * @sample highcharts/coloraxis/changed-default-color-key/\n * Changed default color key\n *\n * @type {string}\n * @default y\n * @since 7.2.0\n * @product highcharts highstock highmaps\n * @apioption plotOptions.series.colorKey\n */\n /**\n * Determines whether the series should look for the nearest point\n * in both dimensions or just the x-dimension when hovering the series.\n * Defaults to `'xy'` for scatter series and `'x'` for most other\n * series. If the data has duplicate x-values, it is recommended to\n * set this to `'xy'` to allow hovering over all points.\n *\n * Applies only to series types using nearest neighbor search (not\n * direct hover) for tooltip.\n *\n * @sample {highcharts} highcharts/series/findnearestpointby/\n * Different hover behaviors\n * @sample {highstock} highcharts/series/findnearestpointby/\n * Different hover behaviors\n * @sample {highmaps} highcharts/series/findnearestpointby/\n * Different hover behaviors\n *\n * @since 5.0.10\n * @validvalue [\"x\", \"xy\"]\n *\n * @private\n */\n findNearestPointBy: 'x'\n };\n /* *\n *\n * Default Export\n *\n * */\n\n return seriesDefaults;\n });\n _registerModule(_modules, 'Core/Series/Series.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Defaults.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/Point.js'], _modules['Core/Series/SeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (A, D, F, H, LegendSymbol, Point, SeriesDefaults, SeriesRegistry, SVGElement, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject,\n setAnimation = A.setAnimation;\n var defaultOptions = D.defaultOptions;\n var registerEventOptions = F.registerEventOptions;\n var hasTouch = H.hasTouch,\n svg = H.svg,\n win = H.win;\n var seriesTypes = SeriesRegistry.seriesTypes;\n var addEvent = U.addEvent,\n arrayMax = U.arrayMax,\n arrayMin = U.arrayMin,\n clamp = U.clamp,\n cleanRecursively = U.cleanRecursively,\n correctFloat = U.correctFloat,\n defined = U.defined,\n erase = U.erase,\n error = U.error,\n extend = U.extend,\n find = U.find,\n fireEvent = U.fireEvent,\n getNestedProperty = U.getNestedProperty,\n isArray = U.isArray,\n isNumber = U.isNumber,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n removeEvent = U.removeEvent,\n splat = U.splat,\n syncTimeout = U.syncTimeout;\n /* *\n *\n * Class\n *\n * */\n /**\n * This is the base series prototype that all other series types inherit from.\n * A new series is initialized either through the\n * [series](https://api.highcharts.com/highcharts/series)\n * option structure, or after the chart is initialized, through\n * {@link Highcharts.Chart#addSeries}.\n *\n * The object can be accessed in a number of ways. All series and point event\n * handlers give a reference to the `series` object. The chart object has a\n * {@link Highcharts.Chart#series|series} property that is a collection of all\n * the chart's series. The point objects and axis objects also have the same\n * reference.\n *\n * Another way to reference the series programmatically is by `id`. Add an id\n * in the series configuration options, and get the series object by\n * {@link Highcharts.Chart#get}.\n *\n * Configuration options for the series are given in three levels. Options for\n * all series in a chart are given in the\n * [plotOptions.series](https://api.highcharts.com/highcharts/plotOptions.series)\n * object. Then options for all series of a specific type\n * are given in the plotOptions of that type, for example `plotOptions.line`.\n * Next, options for one single series are given in the series array, or as\n * arguments to `chart.addSeries`.\n *\n * The data in the series is stored in various arrays.\n *\n * - First, `series.options.data` contains all the original config options for\n * each point whether added by options or methods like `series.addPoint`.\n *\n * - Next, `series.data` contains those values converted to points, but in case\n * the series data length exceeds the `cropThreshold`, or if the data is\n * grouped, `series.data` doesn't contain all the points. It only contains the\n * points that have been created on demand.\n *\n * - Then there's `series.points` that contains all currently visible point\n * objects. In case of cropping, the cropped-away points are not part of this\n * array. The `series.points` array starts at `series.cropStart` compared to\n * `series.data` and `series.options.data`. If however the series data is\n * grouped, these can't be correlated one to one.\n *\n * - `series.xData` and `series.processedXData` contain clean x values,\n * equivalent to `series.data` and `series.points`.\n *\n * - `series.yData` and `series.processedYData` contain clean y values,\n * equivalent to `series.data` and `series.points`.\n *\n * @class\n * @name Highcharts.Series\n *\n * @param {Highcharts.Chart} chart\n * The chart instance.\n *\n * @param {Highcharts.SeriesOptionsType|object} options\n * The series options.\n */\n var Series = /** @class */ (function () {\n function Series() {\n /* *\n *\n * Static Properties\n *\n * */\n this._i = void 0;\n this.chart = void 0;\n this.data = void 0;\n this.eventOptions = void 0;\n this.eventsToUnbind = void 0;\n this.index = void 0;\n this.linkedSeries = void 0;\n this.options = void 0;\n this.points = void 0;\n this.processedXData = void 0;\n this.processedYData = void 0;\n this.tooltipOptions = void 0;\n this.userOptions = void 0;\n this.xAxis = void 0;\n this.yAxis = void 0;\n this.zones = void 0;\n /** eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n Series.prototype.init = function (chart, userOptions) {\n fireEvent(this, 'init', { options: userOptions });\n var series = this,\n chartSeries = chart.series;\n // The 'eventsToUnbind' property moved from prototype into the\n // Series init to avoid reference to the same array between\n // the different series and charts. #12959, #13937\n this.eventsToUnbind = [];\n /**\n * Read only. The chart that the series belongs to.\n *\n * @name Highcharts.Series#chart\n * @type {Highcharts.Chart}\n */\n series.chart = chart;\n /**\n * Read only. The series' type, like \"line\", \"area\", \"column\" etc.\n * The type in the series options anc can be altered using\n * {@link Series#update}.\n *\n * @name Highcharts.Series#type\n * @type {string}\n */\n /**\n * Read only. The series' current options. To update, use\n * {@link Series#update}.\n *\n * @name Highcharts.Series#options\n * @type {Highcharts.SeriesOptionsType}\n */\n series.options = series.setOptions(userOptions);\n var options = series.options;\n series.linkedSeries = [];\n // bind the axes\n series.bindAxes();\n extend(series, {\n /**\n * The series name as given in the options. Defaults to\n * \"Series {n}\".\n *\n * @name Highcharts.Series#name\n * @type {string}\n */\n name: options.name,\n state: '',\n /**\n * Read only. The series' visibility state as set by {@link\n * Series#show}, {@link Series#hide}, or in the initial\n * configuration.\n *\n * @name Highcharts.Series#visible\n * @type {boolean}\n */\n visible: options.visible !== false,\n /**\n * Read only. The series' selected state as set by {@link\n * Highcharts.Series#select}.\n *\n * @name Highcharts.Series#selected\n * @type {boolean}\n */\n selected: options.selected === true // false by default\n });\n registerEventOptions(this, options);\n var events = options.events;\n if ((events && events.click) ||\n (options.point &&\n options.point.events &&\n options.point.events.click) ||\n options.allowPointSelect) {\n chart.runTrackerClick = true;\n }\n series.getColor();\n series.getSymbol();\n // Initialize the parallel data arrays\n series.parallelArrays.forEach(function (key) {\n if (!series[key + 'Data']) {\n series[key + 'Data'] = [];\n }\n });\n // Mark cartesian\n if (series.isCartesian) {\n chart.hasCartesianSeries = true;\n }\n // Get the index and register the series in the chart. The index is\n // one more than the current latest series index (#5960).\n var lastSeries;\n if (chartSeries.length) {\n lastSeries = chartSeries[chartSeries.length - 1];\n }\n series._i = pick(lastSeries && lastSeries._i, -1) + 1;\n series.opacity = series.options.opacity;\n // Insert the series and re-order all series above the insertion\n // point.\n chart.orderSeries(this.insert(chartSeries));\n // Set options for series with sorting and set data later.\n if (options.dataSorting && options.dataSorting.enabled) {\n series.setDataSortingOptions();\n }\n else if (!series.points && !series.data) {\n series.setData(options.data, false);\n }\n fireEvent(this, 'afterInit');\n };\n /**\n * Check whether the series item is itself or inherits from a certain\n * series type.\n *\n * @function Highcharts.Series#is\n * @param {string} type The type of series to check for, can be either\n * featured or custom series types. For example `column`, `pie`,\n * `ohlc` etc.\n *\n * @return {boolean}\n * True if this item is or inherits from the given type.\n */\n Series.prototype.is = function (type) {\n return seriesTypes[type] && this instanceof seriesTypes[type];\n };\n /**\n * Insert the series in a collection with other series, either the chart\n * series or yAxis series, in the correct order according to the index\n * option. Used internally when adding series.\n *\n * @private\n * @function Highcharts.Series#insert\n * @param {Array<Highcharts.Series>} collection\n * A collection of series, like `chart.series` or `xAxis.series`.\n * @return {number}\n * The index of the series in the collection.\n */\n Series.prototype.insert = function (collection) {\n var indexOption = this.options.index;\n var i;\n // Insert by index option\n if (isNumber(indexOption)) {\n i = collection.length;\n while (i--) {\n // Loop down until the interted element has higher index\n if (indexOption >=\n pick(collection[i].options.index, collection[i]._i)) {\n collection.splice(i + 1, 0, this);\n break;\n }\n }\n if (i === -1) {\n collection.unshift(this);\n }\n i = i + 1;\n // Or just push it to the end\n }\n else {\n collection.push(this);\n }\n return pick(i, collection.length - 1);\n };\n /**\n * Set the xAxis and yAxis properties of cartesian series, and register\n * the series in the `axis.series` array.\n *\n * @private\n * @function Highcharts.Series#bindAxes\n */\n Series.prototype.bindAxes = function () {\n var series = this,\n seriesOptions = series.options,\n chart = series.chart;\n var axisOptions;\n fireEvent(this, 'bindAxes', null, function () {\n // repeat for xAxis and yAxis\n (series.axisTypes || []).forEach(function (AXIS) {\n var index = 0;\n // loop through the chart's axis objects\n chart[AXIS].forEach(function (axis) {\n axisOptions = axis.options;\n // apply if the series xAxis or yAxis option mathches\n // the number of the axis, or if undefined, use the\n // first axis\n if ((seriesOptions[AXIS] === index &&\n !axisOptions.isInternal) ||\n (typeof seriesOptions[AXIS] !==\n 'undefined' &&\n seriesOptions[AXIS] === axisOptions.id) ||\n (typeof seriesOptions[AXIS] ===\n 'undefined' &&\n axisOptions.index === 0)) {\n // register this series in the axis.series lookup\n series.insert(axis.series);\n // set this series.xAxis or series.yAxis reference\n /**\n * Read only. The unique xAxis object associated\n * with the series.\n *\n * @name Highcharts.Series#xAxis\n * @type {Highcharts.Axis}\n */\n /**\n * Read only. The unique yAxis object associated\n * with the series.\n *\n * @name Highcharts.Series#yAxis\n * @type {Highcharts.Axis}\n */\n series[AXIS] = axis;\n // mark dirty for redraw\n axis.isDirty = true;\n }\n if (!axisOptions.isInternal) {\n index++;\n }\n });\n // The series needs an X and an Y axis\n if (!series[AXIS] &&\n series.optionalAxis !== AXIS) {\n error(18, true, chart);\n }\n });\n });\n fireEvent(this, 'afterBindAxes');\n };\n /**\n * For simple series types like line and column, the data values are\n * held in arrays like xData and yData for quick lookup to find extremes\n * and more. For multidimensional series like bubble and map, this can\n * be extended with arrays like zData and valueData by adding to the\n * `series.parallelArrays` array.\n *\n * @private\n * @function Highcharts.Series#updateParallelArrays\n */\n Series.prototype.updateParallelArrays = function (point, i) {\n var series = point.series,\n args = arguments,\n fn = isNumber(i) ?\n // Insert the value in the given position\n function (key) {\n var val = key === 'y' && series.toYData ?\n series.toYData(point) :\n point[key];\n series[key + 'Data'][i] = val;\n } :\n // Apply the method specified in i with the following\n // arguments as arguments\n function (key) {\n Array.prototype[i].apply(series[key + 'Data'], Array.prototype.slice.call(args, 2));\n };\n series.parallelArrays.forEach(fn);\n };\n /**\n * Define hasData functions for series. These return true if there\n * are data points on this series within the plot area.\n *\n * @private\n * @function Highcharts.Series#hasData\n */\n Series.prototype.hasData = function () {\n return ((this.visible &&\n typeof this.dataMax !== 'undefined' &&\n typeof this.dataMin !== 'undefined') || ( // #3703\n this.visible &&\n this.yData &&\n this.yData.length > 0) // #9758\n );\n };\n /**\n * Return an auto incremented x value based on the pointStart and\n * pointInterval options. This is only used if an x value is not given\n * for the point that calls autoIncrement.\n *\n * @private\n * @function Highcharts.Series#autoIncrement\n */\n Series.prototype.autoIncrement = function (x) {\n var options = this.options,\n pointIntervalUnit = options.pointIntervalUnit,\n relativeXValue = options.relativeXValue,\n time = this.chart.time;\n var xIncrement = this.xIncrement,\n date,\n pointInterval;\n xIncrement = pick(xIncrement, options.pointStart, 0);\n this.pointInterval = pointInterval = pick(this.pointInterval, options.pointInterval, 1);\n if (relativeXValue && isNumber(x)) {\n pointInterval *= x;\n }\n // Added code for pointInterval strings\n if (pointIntervalUnit) {\n date = new time.Date(xIncrement);\n if (pointIntervalUnit === 'day') {\n time.set('Date', date, time.get('Date', date) + pointInterval);\n }\n else if (pointIntervalUnit === 'month') {\n time.set('Month', date, time.get('Month', date) + pointInterval);\n }\n else if (pointIntervalUnit === 'year') {\n time.set('FullYear', date, time.get('FullYear', date) + pointInterval);\n }\n pointInterval = date.getTime() - xIncrement;\n }\n if (relativeXValue && isNumber(x)) {\n return xIncrement + pointInterval;\n }\n this.xIncrement = xIncrement + pointInterval;\n return xIncrement;\n };\n /**\n * Internal function to set properties for series if data sorting is\n * enabled.\n *\n * @private\n * @function Highcharts.Series#setDataSortingOptions\n */\n Series.prototype.setDataSortingOptions = function () {\n var options = this.options;\n extend(this, {\n requireSorting: false,\n sorted: false,\n enabledDataSorting: true,\n allowDG: false\n });\n // To allow unsorted data for column series.\n if (!defined(options.pointRange)) {\n options.pointRange = 1;\n }\n };\n /**\n * Set the series options by merging from the options tree. Called\n * internally on initializing and updating series. This function will\n * not redraw the series. For API usage, use {@link Series#update}.\n * @private\n * @function Highcharts.Series#setOptions\n * @param {Highcharts.SeriesOptionsType} itemOptions\n * The series options.\n * @emits Highcharts.Series#event:afterSetOptions\n */\n Series.prototype.setOptions = function (itemOptions) {\n var chart = this.chart,\n chartOptions = chart.options,\n plotOptions = chartOptions.plotOptions,\n userOptions = chart.userOptions || {},\n seriesUserOptions = merge(itemOptions),\n styledMode = chart.styledMode,\n e = {\n plotOptions: plotOptions,\n userOptions: seriesUserOptions\n };\n var zone;\n fireEvent(this, 'setOptions', e);\n // These may be modified by the event\n var typeOptions = e.plotOptions[this.type],\n userPlotOptions = (userOptions.plotOptions || {});\n // use copy to prevent undetected changes (#9762)\n /**\n * Contains series options by the user without defaults.\n * @name Highcharts.Series#userOptions\n * @type {Highcharts.SeriesOptionsType}\n */\n this.userOptions = e.userOptions;\n var options = merge(typeOptions,\n plotOptions.series, \n // #3881, chart instance plotOptions[type] should trump\n // plotOptions.series\n userOptions.plotOptions &&\n userOptions.plotOptions[this.type],\n seriesUserOptions);\n // The tooltip options are merged between global and series specific\n // options. Importance order asscendingly:\n // globals: (1)tooltip, (2)plotOptions.series,\n // (3)plotOptions[this.type]\n // init userOptions with possible later updates: 4-6 like 1-3 and\n // (7)this series options\n this.tooltipOptions = merge(defaultOptions.tooltip, // 1\n defaultOptions.plotOptions.series &&\n defaultOptions.plotOptions.series.tooltip, // 2\n defaultOptions.plotOptions[this.type].tooltip, // 3\n chartOptions.tooltip.userOptions, // 4\n plotOptions.series &&\n plotOptions.series.tooltip, // 5\n plotOptions[this.type].tooltip, // 6\n seriesUserOptions.tooltip // 7\n );\n // When shared tooltip, stickyTracking is true by default,\n // unless user says otherwise.\n this.stickyTracking = pick(seriesUserOptions.stickyTracking, userPlotOptions[this.type] &&\n userPlotOptions[this.type].stickyTracking, userPlotOptions.series && userPlotOptions.series.stickyTracking, (this.tooltipOptions.shared && !this.noSharedTooltip ?\n true :\n options.stickyTracking));\n // Delete marker object if not allowed (#1125)\n if (typeOptions.marker === null) {\n delete options.marker;\n }\n // Handle color zones\n this.zoneAxis = options.zoneAxis;\n var zones = this.zones = (options.zones || []).slice();\n if ((options.negativeColor || options.negativeFillColor) &&\n !options.zones) {\n zone = {\n value: options[this.zoneAxis + 'Threshold'] ||\n options.threshold ||\n 0,\n className: 'highcharts-negative'\n };\n if (!styledMode) {\n zone.color = options.negativeColor;\n zone.fillColor = options.negativeFillColor;\n }\n zones.push(zone);\n }\n if (zones.length) { // Push one extra zone for the rest\n if (defined(zones[zones.length - 1].value)) {\n zones.push(styledMode ? {} : {\n color: this.color,\n fillColor: this.fillColor\n });\n }\n }\n fireEvent(this, 'afterSetOptions', { options: options });\n return options;\n };\n /**\n * Return series name in \"Series {Number}\" format or the one defined by\n * a user. This method can be simply overridden as series name format\n * can vary (e.g. technical indicators).\n *\n * @function Highcharts.Series#getName\n *\n * @return {string}\n * The series name.\n */\n Series.prototype.getName = function () {\n // #4119\n return pick(this.options.name, 'Series ' + (this.index + 1));\n };\n /**\n * @private\n * @function Highcharts.Series#getCyclic\n */\n Series.prototype.getCyclic = function (prop, value, defaults) {\n var chart = this.chart, userOptions = this.userOptions, indexName = prop + 'Index', counterName = prop + 'Counter', len = defaults ? defaults.length : pick(chart.options.chart[prop + 'Count'], chart[prop + 'Count']);\n var i,\n setting;\n if (!value) {\n // Pick up either the colorIndex option, or the _colorIndex\n // after Series.update()\n setting = pick(userOptions[indexName], userOptions['_' + indexName]);\n if (defined(setting)) { // after Series.update()\n i = setting;\n }\n else {\n // #6138\n if (!chart.series.length) {\n chart[counterName] = 0;\n }\n userOptions['_' + indexName] = i =\n chart[counterName] % len;\n chart[counterName] += 1;\n }\n if (defaults) {\n value = defaults[i];\n }\n }\n // Set the colorIndex\n if (typeof i !== 'undefined') {\n this[indexName] = i;\n }\n this[prop] = value;\n };\n /**\n * Get the series' color based on either the options or pulled from\n * global options.\n *\n * @private\n * @function Highcharts.Series#getColor\n */\n Series.prototype.getColor = function () {\n if (this.chart.styledMode) {\n this.getCyclic('color');\n }\n else if (this.options.colorByPoint) {\n this.color = \"#cccccc\" /* Palette.neutralColor20 */;\n }\n else {\n this.getCyclic('color', this.options.color ||\n defaultOptions.plotOptions[this.type].color, this.chart.options.colors);\n }\n };\n /**\n * Get all points' instances created for this series.\n *\n * @private\n * @function Highcharts.Series#getPointsCollection\n */\n Series.prototype.getPointsCollection = function () {\n return (this.hasGroupedData ? this.points : this.data) || [];\n };\n /**\n * Get the series' symbol based on either the options or pulled from\n * global options.\n *\n * @private\n * @function Highcharts.Series#getSymbol\n */\n Series.prototype.getSymbol = function () {\n var seriesMarkerOption = this.options.marker;\n this.getCyclic('symbol', seriesMarkerOption.symbol, this.chart.options.symbols);\n };\n /**\n * Finds the index of an existing point that matches the given point\n * options.\n *\n * @private\n * @function Highcharts.Series#findPointIndex\n * @param {Highcharts.PointOptionsObject} optionsObject\n * The options of the point.\n * @param {number} fromIndex\n * The index to start searching from, used for optimizing series with\n * required sorting.\n * @return {number|undefined}\n * Returns the index of a matching point, or undefined if no match is found.\n */\n Series.prototype.findPointIndex = function (optionsObject, fromIndex) {\n var id = optionsObject.id,\n x = optionsObject.x,\n oldData = this.points,\n dataSorting = this.options.dataSorting;\n var matchingPoint,\n matchedById,\n pointIndex;\n if (id) {\n var item = this.chart.get(id);\n if (item instanceof Point) {\n matchingPoint = item;\n }\n }\n else if (this.linkedParent ||\n this.enabledDataSorting ||\n this.options.relativeXValue) {\n var matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.index === optionsObject.index; };\n if (dataSorting && dataSorting.matchByName) {\n matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.name === optionsObject.name; };\n }\n else if (this.options.relativeXValue) {\n matcher = function (oldPoint) { return !oldPoint.touched &&\n oldPoint.options.x === optionsObject.x; };\n }\n matchingPoint = find(oldData, matcher);\n // Add unmatched point as a new point\n if (!matchingPoint) {\n return void 0;\n }\n }\n if (matchingPoint) {\n pointIndex = matchingPoint && matchingPoint.index;\n if (typeof pointIndex !== 'undefined') {\n matchedById = true;\n }\n }\n // Search for the same X in the existing data set\n if (typeof pointIndex === 'undefined' && isNumber(x)) {\n pointIndex = this.xData.indexOf(x, fromIndex);\n }\n // Reduce pointIndex if data is cropped\n if (pointIndex !== -1 &&\n typeof pointIndex !== 'undefined' &&\n this.cropped) {\n pointIndex = (pointIndex >= this.cropStart) ?\n pointIndex - this.cropStart : pointIndex;\n }\n if (!matchedById &&\n isNumber(pointIndex) &&\n oldData[pointIndex] && oldData[pointIndex].touched) {\n pointIndex = void 0;\n }\n return pointIndex;\n };\n /**\n * Internal function called from setData. If the point count is the same\n * as it was, or if there are overlapping X values, just run\n * Point.update which is cheaper, allows animation, and keeps references\n * to points. This also allows adding or removing points if the X-es\n * don't match.\n *\n * @private\n * @function Highcharts.Series#updateData\n */\n Series.prototype.updateData = function (data, animation) {\n var options = this.options,\n dataSorting = options.dataSorting,\n oldData = this.points,\n pointsToAdd = [],\n requireSorting = this.requireSorting,\n equalLength = data.length === oldData.length;\n var hasUpdatedByKey,\n i,\n point,\n lastIndex,\n succeeded = true;\n this.xIncrement = null;\n // Iterate the new data\n data.forEach(function (pointOptions, i) {\n var optionsObject = (defined(pointOptions) &&\n this.pointClass.prototype.optionsToObject.call({ series: this },\n pointOptions)) || {};\n var pointIndex;\n // Get the x of the new data point\n var x = optionsObject.x,\n id = optionsObject.id;\n if (id || isNumber(x)) {\n pointIndex = this.findPointIndex(optionsObject, lastIndex);\n // Matching X not found\n // or used already due to ununique x values (#8995),\n // add point (but later)\n if (pointIndex === -1 ||\n typeof pointIndex === 'undefined') {\n pointsToAdd.push(pointOptions);\n // Matching X found, update\n }\n else if (oldData[pointIndex] &&\n pointOptions !== options.data[pointIndex]) {\n oldData[pointIndex].update(pointOptions, false, null, false);\n // Mark it touched, below we will remove all points that\n // are not touched.\n oldData[pointIndex].touched = true;\n // Speed optimize by only searching after last known\n // index. Performs ~20% bettor on large data sets.\n if (requireSorting) {\n lastIndex = pointIndex + 1;\n }\n // Point exists, no changes, don't remove it\n }\n else if (oldData[pointIndex]) {\n oldData[pointIndex].touched = true;\n }\n // If the length is equal and some of the nodes had a\n // match in the same position, we don't want to remove\n // non-matches.\n if (!equalLength ||\n i !== pointIndex ||\n (dataSorting && dataSorting.enabled) ||\n this.hasDerivedData) {\n hasUpdatedByKey = true;\n }\n }\n else {\n // Gather all points that are not matched\n pointsToAdd.push(pointOptions);\n }\n }, this);\n // Remove points that don't exist in the updated data set\n if (hasUpdatedByKey) {\n i = oldData.length;\n while (i--) {\n point = oldData[i];\n if (point && !point.touched && point.remove) {\n point.remove(false, animation);\n }\n }\n // If we did not find keys (ids or x-values), and the length is the\n // same, update one-to-one\n }\n else if (equalLength && (!dataSorting || !dataSorting.enabled)) {\n data.forEach(function (point, i) {\n // .update doesn't exist on a linked, hidden series (#3709)\n // (#10187)\n if (point !== oldData[i].y && (oldData[i].update)) {\n oldData[i].update(point, false, null, false);\n }\n });\n // Don't add new points since those configs are used above\n pointsToAdd.length = 0;\n // Did not succeed in updating data\n }\n else {\n succeeded = false;\n }\n oldData.forEach(function (point) {\n if (point) {\n point.touched = false;\n }\n });\n if (!succeeded) {\n return false;\n }\n // Add new points\n pointsToAdd.forEach(function (point) {\n this.addPoint(point, false, null, null, false);\n }, this);\n if (this.xIncrement === null &&\n this.xData &&\n this.xData.length) {\n this.xIncrement = arrayMax(this.xData);\n this.autoIncrement();\n }\n return true;\n };\n /**\n * Apply a new set of data to the series and optionally redraw it. The\n * new data array is passed by reference (except in case of\n * `updatePoints`), and may later be mutated when updating the chart\n * data.\n *\n * Note the difference in behaviour when setting the same amount of\n * points, or a different amount of points, as handled by the\n * `updatePoints` parameter.\n *\n * @sample highcharts/members/series-setdata/\n * Set new data from a button\n * @sample highcharts/members/series-setdata-pie/\n * Set data in a pie\n * @sample stock/members/series-setdata/\n * Set new data in Highcharts Stock\n * @sample maps/members/series-setdata/\n * Set new data in Highmaps\n *\n * @function Highcharts.Series#setData\n *\n * @param {Array<Highcharts.PointOptionsType>} data\n * Takes an array of data in the same format as described under\n * `series.{type}.data` for the given series type, for example a\n * line series would take data in the form described under\n * [series.line.data](https://api.highcharts.com/highcharts/series.line.data).\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If\n * doing more operations on the chart, it is a good idea to set\n * redraw to false and call {@link Chart#redraw} after.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * When the updated data is the same length as the existing data,\n * points will be updated by default, and animation visualizes\n * how the points are changed. Set false to disable animation, or\n * a configuration object to set duration or easing.\n *\n * @param {boolean} [updatePoints=true]\n * When this is true, points will be updated instead of replaced\n * whenever possible. This occurs a) when the updated data is the\n * same length as the existing data, b) when points are matched\n * by their id's, or c) when points can be matched by X values.\n * This allows updating with animation and performs better. In\n * this case, the original array is not passed by reference. Set\n * `false` to prevent.\n */\n Series.prototype.setData = function (data, redraw, animation, updatePoints) {\n if (redraw === void 0) { redraw = true; }\n var series = this,\n oldData = series.points,\n oldDataLength = (oldData && oldData.length) || 0,\n options = series.options,\n chart = series.chart,\n dataSorting = options.dataSorting,\n xAxis = series.xAxis,\n turboThreshold = options.turboThreshold,\n xData = this.xData,\n yData = this.yData,\n pointArrayMap = series.pointArrayMap,\n valueCount = pointArrayMap && pointArrayMap.length,\n keys = options.keys;\n var i,\n pt,\n updatedData,\n indexOfX = 0,\n indexOfY = 1,\n firstPoint = null,\n copiedData;\n if (!chart.options.chart.allowMutatingData) { // #4259\n // Remove old reference\n if (options.data) {\n delete series.options.data;\n }\n if (series.userOptions.data) {\n delete series.userOptions.data;\n }\n copiedData = merge(true, data);\n }\n data = copiedData || data || [];\n var dataLength = data.length;\n if (dataSorting && dataSorting.enabled) {\n data = this.sortData(data);\n }\n // First try to run Point.update which is cheaper, allows animation,\n // and keeps references to points.\n if (chart.options.chart.allowMutatingData &&\n updatePoints !== false &&\n dataLength &&\n oldDataLength &&\n !series.cropped &&\n !series.hasGroupedData &&\n series.visible &&\n // Soft updating has no benefit in boost, and causes JS error\n // (#8355)\n !series.boosted) {\n updatedData = this.updateData(data, animation);\n }\n if (!updatedData) {\n // Reset properties\n series.xIncrement = null;\n series.colorCounter = 0; // for series with colorByPoint (#1547)\n // Update parallel arrays\n this.parallelArrays.forEach(function (key) {\n series[key + 'Data'].length = 0;\n });\n // In turbo mode, only one- or twodimensional arrays of numbers\n // are allowed. The first value is tested, and we assume that\n // all the rest are defined the same way. Although the 'for'\n // loops are similar, they are repeated inside each if-else\n // conditional for max performance.\n if (turboThreshold && dataLength > turboThreshold) {\n firstPoint = series.getFirstValidPoint(data);\n if (isNumber(firstPoint)) { // assume all points are numbers\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i];\n }\n // Assume all points are arrays when first point is\n }\n else if (isArray(firstPoint)) {\n if (valueCount) { // [x, low, high] or [x, o, h, l, c]\n if (firstPoint.length === valueCount) {\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i];\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n pt = data[i];\n xData[i] = pt[0];\n yData[i] =\n pt.slice(1, valueCount + 1);\n }\n }\n }\n else { // [x, y]\n if (keys) {\n indexOfX = keys.indexOf('x');\n indexOfY = keys.indexOf('y');\n indexOfX = indexOfX >= 0 ? indexOfX : 0;\n indexOfY = indexOfY >= 0 ? indexOfY : 1;\n }\n if (firstPoint.length === 1) {\n indexOfY = 0;\n }\n if (indexOfX === indexOfY) {\n for (i = 0; i < dataLength; i++) {\n xData[i] = this.autoIncrement();\n yData[i] = data[i][indexOfY];\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n pt = data[i];\n xData[i] = pt[indexOfX];\n yData[i] = pt[indexOfY];\n }\n }\n }\n }\n else {\n // Highcharts expects configs to be numbers or arrays in\n // turbo mode\n error(12, false, chart);\n }\n }\n else {\n for (i = 0; i < dataLength; i++) {\n // stray commas in oldIE:\n if (typeof data[i] !== 'undefined') {\n pt = { series: series };\n series.pointClass.prototype.applyOptions.apply(pt, [data[i]]);\n series.updateParallelArrays(pt, i);\n }\n }\n }\n // Forgetting to cast strings to numbers is a common caveat when\n // handling CSV or JSON\n if (yData && isString(yData[0])) {\n error(14, true, chart);\n }\n series.data = [];\n series.options.data = series.userOptions.data = data;\n // destroy old points\n i = oldDataLength;\n while (i--) {\n if (oldData[i] && (oldData[i].destroy)) {\n oldData[i].destroy();\n }\n }\n // reset minRange (#878)\n if (xAxis) {\n xAxis.minRange = xAxis.userMinRange;\n }\n // redraw\n series.isDirty = chart.isDirtyBox = true;\n series.isDirtyData = !!oldData;\n animation = false;\n }\n // Typically for pie series, points need to be processed and\n // generated prior to rendering the legend\n if (options.legendType === 'point') {\n this.processData();\n this.generatePoints();\n }\n if (redraw) {\n chart.redraw(animation);\n }\n };\n /**\n * Internal function to sort series data\n *\n * @private\n * @function Highcharts.Series#sortData\n * @param {Array<Highcharts.PointOptionsType>} data\n * Force data grouping.\n */\n Series.prototype.sortData = function (data) {\n var series = this,\n options = series.options,\n dataSorting = options.dataSorting,\n sortKey = dataSorting.sortKey || 'y',\n getPointOptionsObject = function (series,\n pointOptions) {\n return (defined(pointOptions) &&\n series.pointClass.prototype.optionsToObject.call({\n series: series\n },\n pointOptions)) || {};\n };\n data.forEach(function (pointOptions, i) {\n data[i] = getPointOptionsObject(series, pointOptions);\n data[i].index = i;\n }, this);\n // Sorting\n var sortedData = data.concat().sort(function (a,\n b) {\n var aValue = getNestedProperty(sortKey,\n a);\n var bValue = getNestedProperty(sortKey,\n b);\n return bValue < aValue ? -1 : bValue > aValue ? 1 : 0;\n });\n // Set x value depending on the position in the array\n sortedData.forEach(function (point, i) {\n point.x = i;\n }, this);\n // Set the same x for linked series points if they don't have their\n // own sorting\n if (series.linkedSeries) {\n series.linkedSeries.forEach(function (linkedSeries) {\n var options = linkedSeries.options,\n seriesData = options.data;\n if ((!options.dataSorting ||\n !options.dataSorting.enabled) &&\n seriesData) {\n seriesData.forEach(function (pointOptions, i) {\n seriesData[i] = getPointOptionsObject(linkedSeries, pointOptions);\n if (data[i]) {\n seriesData[i].x = data[i].x;\n seriesData[i].index = i;\n }\n });\n linkedSeries.setData(seriesData, false);\n }\n });\n }\n return data;\n };\n /**\n * Internal function to process the data by cropping away unused data\n * points if the series is longer than the crop threshold. This saves\n * computing time for large series.\n *\n * @private\n * @function Highcharts.Series#getProcessedData\n * @param {boolean} [forceExtremesFromAll]\n * Force getting extremes of a total series data range.\n */\n Series.prototype.getProcessedData = function (forceExtremesFromAll) {\n var series = this,\n xAxis = series.xAxis,\n options = series.options,\n cropThreshold = options.cropThreshold,\n getExtremesFromAll = forceExtremesFromAll ||\n series.getExtremesFromAll ||\n options.getExtremesFromAll, // #4599\n isCartesian = series.isCartesian,\n val2lin = xAxis && xAxis.val2lin,\n isLog = !!(xAxis && xAxis.logarithmic);\n var croppedData,\n cropped,\n cropStart = 0,\n distance,\n closestPointRange,\n i, // loop variable\n xExtremes,\n min,\n max, \n // copied during slice operation:\n processedXData = series.xData,\n processedYData = series.yData,\n throwOnUnsorted = series.requireSorting,\n updatingNames = false;\n var dataLength = processedXData.length;\n if (xAxis) {\n // corrected for log axis (#3053)\n xExtremes = xAxis.getExtremes();\n min = xExtremes.min;\n max = xExtremes.max;\n updatingNames = !!(xAxis.categories && !xAxis.names.length);\n }\n // optionally filter out points outside the plot area\n if (isCartesian &&\n series.sorted &&\n !getExtremesFromAll &&\n (!cropThreshold ||\n dataLength > cropThreshold ||\n series.forceCrop)) {\n // it's outside current extremes\n if (processedXData[dataLength - 1] < min ||\n processedXData[0] > max) {\n processedXData = [];\n processedYData = [];\n // only crop if it's actually spilling out\n }\n else if (series.yData && (processedXData[0] < min ||\n processedXData[dataLength - 1] > max)) {\n croppedData = this.cropData(series.xData, series.yData, min, max);\n processedXData = croppedData.xData;\n processedYData = croppedData.yData;\n cropStart = croppedData.start;\n cropped = true;\n }\n }\n // Find the closest distance between processed points\n i = processedXData.length || 1;\n while (--i) {\n distance = (isLog ?\n (val2lin(processedXData[i]) -\n val2lin(processedXData[i - 1])) :\n (processedXData[i] -\n processedXData[i - 1]));\n if (distance > 0 &&\n (typeof closestPointRange === 'undefined' ||\n distance < closestPointRange)) {\n closestPointRange = distance;\n // Unsorted data is not supported by the line tooltip, as well\n // as data grouping and navigation in Stock charts (#725) and\n // width calculation of columns (#1900).\n // Avoid warning during the premature processing pass in\n // updateNames (#16104).\n }\n else if (distance < 0 && throwOnUnsorted && !updatingNames) {\n error(15, false, series.chart);\n throwOnUnsorted = false; // Only once\n }\n }\n return {\n xData: processedXData,\n yData: processedYData,\n cropped: cropped,\n cropStart: cropStart,\n closestPointRange: closestPointRange\n };\n };\n /**\n * Internal function to apply processed data.\n * In Highcharts Stock, this function is extended to provide data grouping.\n *\n * @private\n * @function Highcharts.Series#processData\n * @param {boolean} [force]\n * Force data grouping.\n */\n Series.prototype.processData = function (force) {\n var series = this,\n xAxis = series.xAxis;\n // If the series data or axes haven't changed, don't go through\n // this. Return false to pass the message on to override methods\n // like in data grouping.\n if (series.isCartesian &&\n !series.isDirty &&\n !xAxis.isDirty &&\n !series.yAxis.isDirty &&\n !force) {\n return false;\n }\n var processedData = series.getProcessedData();\n // Record the properties\n series.cropped = processedData.cropped; // undefined or true\n series.cropStart = processedData.cropStart;\n series.processedXData = processedData.xData;\n series.processedYData = processedData.yData;\n series.closestPointRange = (series.basePointRange = processedData.closestPointRange);\n fireEvent(series, 'afterProcessData');\n };\n /**\n * Iterate over xData and crop values between min and max. Returns\n * object containing crop start/end cropped xData with corresponding\n * part of yData, dataMin and dataMax within the cropped range.\n *\n * @private\n * @function Highcharts.Series#cropData\n */\n Series.prototype.cropData = function (xData, yData, min, max, cropShoulder) {\n var dataLength = xData.length;\n var i,\n j,\n cropStart = 0,\n cropEnd = dataLength;\n // line-type series need one point outside\n cropShoulder = pick(cropShoulder, this.cropShoulder);\n // iterate up to find slice start\n for (i = 0; i < dataLength; i++) {\n if (xData[i] >= min) {\n cropStart = Math.max(0, i - cropShoulder);\n break;\n }\n }\n // proceed to find slice end\n for (j = i; j < dataLength; j++) {\n if (xData[j] > max) {\n cropEnd = j + cropShoulder;\n break;\n }\n }\n return {\n xData: xData.slice(cropStart, cropEnd),\n yData: yData.slice(cropStart, cropEnd),\n start: cropStart,\n end: cropEnd\n };\n };\n /**\n * Generate the data point after the data has been processed by cropping\n * away unused points and optionally grouped in Highcharts Stock.\n *\n * @private\n * @function Highcharts.Series#generatePoints\n */\n Series.prototype.generatePoints = function () {\n var series = this,\n options = series.options,\n dataOptions = (series.processedData || options.data),\n processedXData = series.processedXData,\n processedYData = series.processedYData,\n PointClass = series.pointClass,\n processedDataLength = processedXData.length,\n cropStart = series.cropStart || 0,\n hasGroupedData = series.hasGroupedData,\n keys = options.keys,\n points = [],\n groupCropStartIndex = (options.dataGrouping &&\n options.dataGrouping.groupAll ?\n cropStart :\n 0);\n var dataLength,\n cursor,\n point,\n i,\n data = series.data;\n if (!data && !hasGroupedData) {\n var arr = [];\n arr.length = dataOptions.length;\n data = series.data = arr;\n }\n if (keys && hasGroupedData) {\n // grouped data has already applied keys (#6590)\n series.options.keys = false;\n }\n for (i = 0; i < processedDataLength; i++) {\n cursor = cropStart + i;\n if (!hasGroupedData) {\n point = data[cursor];\n // #970:\n if (!point &&\n typeof dataOptions[cursor] !== 'undefined') {\n data[cursor] = point = (new PointClass()).init(series, dataOptions[cursor], processedXData[i]);\n }\n }\n else {\n // splat the y data in case of ohlc data array\n point = (new PointClass()).init(series, [processedXData[i]].concat(splat(processedYData[i])));\n point.dataGroup = series.groupMap[groupCropStartIndex + i];\n if (point.dataGroup.options) {\n point.options = point.dataGroup.options;\n extend(point, point.dataGroup.options);\n // Collision of props and options (#9770)\n delete point.dataLabels;\n }\n }\n if (point) { // #6279\n /**\n * Contains the point's index in the `Series.points` array.\n *\n * @name Highcharts.Point#index\n * @type {number}\n * @readonly\n */\n // For faster access in Point.update\n point.index = hasGroupedData ?\n (groupCropStartIndex + i) : cursor;\n points[i] = point;\n }\n }\n // restore keys options (#6590)\n series.options.keys = keys;\n // Hide cropped-away points - this only runs when the number of\n // points is above cropThreshold, or when swithching view from\n // non-grouped data to grouped data (#637)\n if (data &&\n (processedDataLength !== (dataLength = data.length) ||\n hasGroupedData)) {\n for (i = 0; i < dataLength; i++) {\n // when has grouped data, clear all points\n if (i === cropStart && !hasGroupedData) {\n i += processedDataLength;\n }\n if (data[i]) {\n data[i].destroyElements();\n data[i].plotX = void 0; // #1003\n }\n }\n }\n /**\n * Read only. An array containing those values converted to points.\n * In case the series data length exceeds the `cropThreshold`, or if\n * the data is grouped, `series.data` doesn't contain all the\n * points. Also, in case a series is hidden, the `data` array may be\n * empty. To access raw values, `series.options.data` will always be\n * up to date. `Series.data` only contains the points that have been\n * created on demand. To modify the data, use\n * {@link Highcharts.Series#setData} or\n * {@link Highcharts.Point#update}.\n *\n * @see Series.points\n *\n * @name Highcharts.Series#data\n * @type {Array<Highcharts.Point>}\n */\n series.data = data;\n /**\n * An array containing all currently visible point objects. In case\n * of cropping, the cropped-away points are not part of this array.\n * The `series.points` array starts at `series.cropStart` compared\n * to `series.data` and `series.options.data`. If however the series\n * data is grouped, these can't be correlated one to one. To modify\n * the data, use {@link Highcharts.Series#setData} or\n * {@link Highcharts.Point#update}.\n *\n * @name Highcharts.Series#points\n * @type {Array<Highcharts.Point>}\n */\n series.points = points;\n fireEvent(this, 'afterGeneratePoints');\n };\n /**\n * Get current X extremes for the visible data.\n *\n * @private\n * @function Highcharts.Series#getXExtremes\n * @param {Array<number>} xData\n * The data to inspect. Defaults to the current data within the visible\n * range.\n */\n Series.prototype.getXExtremes = function (xData) {\n return {\n min: arrayMin(xData),\n max: arrayMax(xData)\n };\n };\n /**\n * Calculate Y extremes for the visible data. The result is returned\n * as an object with `dataMin` and `dataMax` properties.\n *\n * @private\n * @function Highcharts.Series#getExtremes\n * @param {Array<number>} [yData]\n * The data to inspect. Defaults to the current data within the visible\n * range.\n * @param {boolean} [forceExtremesFromAll]\n * Force getting extremes of a total series data range.\n */\n Series.prototype.getExtremes = function (yData, forceExtremesFromAll) {\n var xAxis = this.xAxis,\n yAxis = this.yAxis,\n xData = this.processedXData || this.xData,\n activeYData = [], \n // Handle X outside the viewed area. This does not work with\n // non-sorted data like scatter (#7639).\n shoulder = this.requireSorting ? this.cropShoulder : 0,\n positiveValuesOnly = yAxis ? yAxis.positiveValuesOnly : false;\n // #2117, need to compensate for log X axis\n var xExtremes,\n validValue,\n withinRange,\n x,\n y,\n i,\n j,\n xMin = 0,\n xMax = 0,\n activeCounter = 0;\n yData = yData || this.stackedYData || this.processedYData || [];\n var yDataLength = yData.length;\n if (xAxis) {\n xExtremes = xAxis.getExtremes();\n xMin = xExtremes.min;\n xMax = xExtremes.max;\n }\n for (i = 0; i < yDataLength; i++) {\n x = xData[i];\n y = yData[i];\n // For points within the visible range, including the first\n // point outside the visible range (#7061), consider y extremes.\n validValue = ((isNumber(y) || isArray(y)) &&\n ((y.length || y > 0) || !positiveValuesOnly));\n withinRange = (forceExtremesFromAll ||\n this.getExtremesFromAll ||\n this.options.getExtremesFromAll ||\n this.cropped ||\n !xAxis || // for colorAxis support\n ((xData[i + shoulder] || x) >= xMin &&\n (xData[i - shoulder] || x) <= xMax));\n if (validValue && withinRange) {\n j = y.length;\n if (j) { // array, like ohlc or range data\n while (j--) {\n if (isNumber(y[j])) { // #7380, #11513\n activeYData[activeCounter++] = y[j];\n }\n }\n }\n else {\n activeYData[activeCounter++] = y;\n }\n }\n }\n var dataExtremes = {\n activeYData: activeYData,\n dataMin: arrayMin(activeYData),\n dataMax: arrayMax(activeYData)\n };\n fireEvent(this, 'afterGetExtremes', { dataExtremes: dataExtremes });\n return dataExtremes;\n };\n /**\n * Set the current data extremes as `dataMin` and `dataMax` on the\n * Series item. Use this only when the series properties should be\n * updated.\n *\n * @private\n * @function Highcharts.Series#applyExtremes\n */\n Series.prototype.applyExtremes = function () {\n var dataExtremes = this.getExtremes();\n /**\n * Contains the minimum value of the series' data point. Some series\n * types like `networkgraph` do not support this property as they\n * lack a `y`-value.\n * @name Highcharts.Series#dataMin\n * @type {number|undefined}\n * @readonly\n */\n this.dataMin = dataExtremes.dataMin;\n /**\n * Contains the maximum value of the series' data point. Some series\n * types like `networkgraph` do not support this property as they\n * lack a `y`-value.\n * @name Highcharts.Series#dataMax\n * @type {number|undefined}\n * @readonly\n */\n this.dataMax = dataExtremes.dataMax;\n return dataExtremes;\n };\n /**\n * Find and return the first non null point in the data\n *\n * @private\n * @function Highcharts.Series.getFirstValidPoint\n * @param {Array<Highcharts.PointOptionsType>} data\n * Array of options for points\n */\n Series.prototype.getFirstValidPoint = function (data) {\n var dataLength = data.length;\n var i = 0,\n firstPoint = null;\n while (firstPoint === null && i < dataLength) {\n firstPoint = data[i];\n i++;\n }\n return firstPoint;\n };\n /**\n * Translate data points from raw data values to chart specific\n * positioning data needed later in the `drawPoints` and `drawGraph`\n * functions. This function can be overridden in plugins and custom\n * series type implementations.\n *\n * @function Highcharts.Series#translate\n *\n * @emits Highcharts.Series#events:translate\n */\n Series.prototype.translate = function () {\n if (!this.processedXData) { // hidden series\n this.processData();\n }\n this.generatePoints();\n var series = this,\n options = series.options,\n stacking = options.stacking,\n xAxis = series.xAxis,\n categories = xAxis.categories,\n enabledDataSorting = series.enabledDataSorting,\n yAxis = series.yAxis,\n points = series.points,\n dataLength = points.length,\n pointPlacement = series.pointPlacementToXValue(), // #7860\n dynamicallyPlaced = Boolean(pointPlacement),\n threshold = options.threshold,\n stackThreshold = options.startFromThreshold ? threshold : 0,\n zoneAxis = this.zoneAxis || 'y';\n var i,\n plotX,\n lastPlotX,\n stackIndicator,\n closestPointRangePx = Number.MAX_VALUE;\n /**\n * Plotted coordinates need to be within a limited range. Drawing\n * too far outside the viewport causes various rendering issues\n * (#3201, #3923, #7555).\n * @private\n */\n function limitedRange(val) {\n return clamp(val, -1e5, 1e5);\n }\n // Translate each point\n for (i = 0; i < dataLength; i++) {\n var point = points[i],\n xValue = point.x;\n var pointStack = void 0,\n stackValues = void 0,\n yValue = point.y,\n yBottom = point.low;\n var stack = stacking && yAxis.stacking && yAxis.stacking.stacks[(series.negStacks &&\n yValue <\n (stackThreshold ? 0 : threshold) ?\n '-' :\n '') + series.stackKey];\n if (yAxis.positiveValuesOnly &&\n !yAxis.validatePositiveValue(yValue) ||\n xAxis.positiveValuesOnly &&\n !xAxis.validatePositiveValue(xValue)) {\n point.isNull = true;\n }\n /**\n * The translated X value for the point in terms of pixels. Relative\n * to the X axis position if the series has one, otherwise relative\n * to the plot area. Depending on the series type this value might\n * not be defined.\n * @name Highcharts.Point#plotX\n * @type {number|undefined}\n */\n point.plotX = plotX = correctFloat(// #5236\n // Get the plotX translation\n limitedRange(xAxis.translate(// #3923\n xValue, 0, 0, 0, 1, pointPlacement, this.type === 'flags')) // #3923\n );\n // Calculate the bottom y value for stacked series\n if (stacking &&\n series.visible &&\n stack &&\n stack[xValue]) {\n stackIndicator = series.getStackIndicator(stackIndicator, xValue, series.index);\n if (!point.isNull && stackIndicator.key) {\n pointStack = stack[xValue];\n stackValues = pointStack.points[stackIndicator.key];\n }\n if (pointStack && isArray(stackValues)) {\n yBottom = stackValues[0];\n yValue = stackValues[1];\n if (yBottom === stackThreshold &&\n stackIndicator.key === stack[xValue].base) {\n yBottom = pick(isNumber(threshold) ? threshold : yAxis.min);\n }\n // #1200, #1232\n if (yAxis.positiveValuesOnly &&\n defined(yBottom) &&\n yBottom <= 0) {\n yBottom = void 0;\n }\n point.total = point.stackTotal = pick(pointStack.total);\n point.percentage = defined(point.y) && pointStack.total ?\n (point.y / pointStack.total * 100) : void 0;\n point.stackY = yValue;\n // Place the stack label\n // in case of variwide series (where widths of points are\n // different in most cases), stack labels are positioned\n // wrongly, so the call of the setOffset is omited here and\n // labels are correctly positioned later, at the end of the\n // variwide's translate function (#10962)\n if (!series.irregularWidths) {\n pointStack.setOffset(series.pointXOffset || 0, series.barW || 0, void 0, void 0, void 0, series.xAxis);\n }\n }\n }\n // Set translated yBottom or remove it\n point.yBottom = defined(yBottom) ?\n limitedRange(yAxis.translate(yBottom, 0, 1, 0, 1)) :\n void 0;\n // General hook, used for Highcharts Stock compare and cumulative\n if (series.dataModify) {\n yValue = series.dataModify.modifyValue(yValue, i);\n }\n // Set the the plotY value, reset it for redraws\n // #3201\n point.plotY = void 0;\n if (isNumber(yValue)) {\n var translated = yAxis.translate(yValue,\n false,\n true,\n false,\n true);\n if (typeof translated !== 'undefined') {\n /**\n * The translated Y value for the point in terms of pixels.\n * Relative to the Y axis position if the series has one,\n * otherwise relative to the plot area. Depending on the\n * series type this value might not be defined.\n * @name Highcharts.Point#plotY\n * @type {number|undefined}\n */\n point.plotY = limitedRange(translated);\n }\n }\n point.isInside = this.isPointInside(point);\n // Set client related positions for mouse tracking\n point.clientX = dynamicallyPlaced ?\n correctFloat(xAxis.translate(xValue, 0, 0, 0, 1, pointPlacement)) :\n plotX; // #1514, #5383, #5518\n // Negative points. For bubble charts, this means negative z\n // values (#9728)\n point.negative = point[zoneAxis] < (options[zoneAxis + 'Threshold'] ||\n threshold ||\n 0);\n // some API data\n point.category = pick(categories && categories[point.x], point.x);\n // Determine auto enabling of markers (#3635, #5099)\n if (!point.isNull && point.visible !== false) {\n if (typeof lastPlotX !== 'undefined') {\n closestPointRangePx = Math.min(closestPointRangePx, Math.abs(plotX - lastPlotX));\n }\n lastPlotX = plotX;\n }\n // Find point zone\n point.zone = this.zones.length ? point.getZone() : void 0;\n // Animate new points with data sorting\n if (!point.graphic && series.group && enabledDataSorting) {\n point.isNew = true;\n }\n }\n series.closestPointRangePx = closestPointRangePx;\n fireEvent(this, 'afterTranslate');\n };\n /**\n * Return the series points with null points filtered out.\n *\n * @function Highcharts.Series#getValidPoints\n *\n * @param {Array<Highcharts.Point>} [points]\n * The points to inspect, defaults to {@link Series.points}.\n *\n * @param {boolean} [insideOnly=false]\n * Whether to inspect only the points that are inside the visible view.\n *\n * @param {boolean} [allowNull=false]\n * Whether to allow null points to pass as valid points.\n *\n * @return {Array<Highcharts.Point>}\n * The valid points.\n */\n Series.prototype.getValidPoints = function (points, insideOnly, allowNull) {\n var chart = this.chart;\n // #3916, #5029, #5085\n return (points || this.points || []).filter(function (point) {\n if (insideOnly && !chart.isInsidePlot(point.plotX, point.plotY, { inverted: chart.inverted })) {\n return false;\n }\n return point.visible !== false &&\n (allowNull || !point.isNull);\n });\n };\n /**\n * Get the clipping for the series. Could be called for a series to\n * initiate animating the clip or to set the final clip (only width\n * and x).\n *\n * @private\n * @function Highcharts.Series#getClip\n */\n Series.prototype.getClipBox = function () {\n var _a = this,\n chart = _a.chart,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis;\n // If no axes on the series, use global clipBox\n var seriesBox = merge(chart.clipBox);\n // Otherwise, use clipBox.width which is corrected for plotBorderWidth\n // and clipOffset\n if (xAxis && xAxis.len !== chart.plotSizeX) {\n seriesBox.width = xAxis.len;\n }\n if (yAxis && yAxis.len !== chart.plotSizeY) {\n seriesBox.height = yAxis.len;\n }\n return seriesBox;\n };\n /**\n * Get the shared clip key, creating it if it doesn't exist.\n *\n * @private\n * @function Highcharts.Series#getSharedClipKey\n */\n Series.prototype.getSharedClipKey = function () {\n this.sharedClipKey = (this.options.xAxis || 0) + ',' +\n (this.options.yAxis || 0);\n return this.sharedClipKey;\n };\n /**\n * Set the clipping for the series. For animated series the clip is later\n * modified.\n *\n * @private\n * @function Highcharts.Series#setClip\n */\n Series.prototype.setClip = function () {\n var _a = this,\n chart = _a.chart,\n group = _a.group,\n markerGroup = _a.markerGroup,\n sharedClips = chart.sharedClips,\n renderer = chart.renderer,\n clipBox = this.getClipBox(),\n sharedClipKey = this.getSharedClipKey(); // #4526\n var clipRect = sharedClips[sharedClipKey];\n // If a clipping rectangle for the same set of axes does not exist,\n // create it\n if (!clipRect) {\n sharedClips[sharedClipKey] = clipRect = renderer.clipRect(clipBox);\n // When setting chart size, or when the series is rendered again before\n // starting animating, in compliance to a responsive rule\n }\n else {\n clipRect.animate(clipBox);\n }\n if (group) {\n // When clip is false, reset to no clip after animation\n group.clip(this.options.clip === false ? void 0 : clipRect);\n }\n // Unclip temporary animation clip\n if (markerGroup) {\n markerGroup.clip();\n }\n };\n /**\n * Animate in the series. Called internally twice. First with the `init`\n * parameter set to true, which sets up the initial state of the\n * animation. Then when ready, it is called with the `init` parameter\n * undefined, in order to perform the actual animation.\n *\n * @function Highcharts.Series#animate\n *\n * @param {boolean} [init]\n * Initialize the animation.\n */\n Series.prototype.animate = function (init) {\n var _a = this, chart = _a.chart, group = _a.group, markerGroup = _a.markerGroup, inverted = chart.inverted, animation = animObject(this.options.animation), \n // The key for temporary animation clips\n animationClipKey = [\n this.getSharedClipKey(),\n animation.duration,\n animation.easing,\n animation.defer\n ].join(',');\n var animationClipRect = chart.sharedClips[animationClipKey],\n markerAnimationClipRect = chart.sharedClips[animationClipKey + 'm'];\n // Initialize the animation. Set up the clipping rectangle.\n if (init && group) {\n var clipBox = this.getClipBox();\n // Create temporary animation clips\n if (!animationClipRect) {\n clipBox.width = 0;\n if (inverted) {\n clipBox.x = chart.plotHeight;\n }\n animationClipRect = chart.renderer.clipRect(clipBox);\n chart.sharedClips[animationClipKey] = animationClipRect;\n // The marker clip box. The number 99 is a safe margin to avoid\n // markers being clipped during animation.\n var markerClipBox = {\n x: inverted ? -99 : -99,\n y: inverted ? -99 : -99,\n width: inverted ? chart.plotWidth + 199 : 99,\n height: inverted ? 99 : chart.plotHeight + 199\n };\n markerAnimationClipRect = chart.renderer.clipRect(markerClipBox);\n chart.sharedClips[animationClipKey + 'm'] = markerAnimationClipRect;\n }\n else {\n // When height changes during animation, typically due to\n // responsive settings\n animationClipRect.attr('height', clipBox.height);\n }\n group.clip(animationClipRect);\n if (markerGroup) {\n markerGroup.clip(markerAnimationClipRect);\n }\n // Run the animation\n }\n else if (animationClipRect &&\n // Only first series in this pane\n !animationClipRect.hasClass('highcharts-animating')) {\n var finalBox = this.getClipBox(),\n step_1 = animation.step;\n // Only do this when there are actually markers\n if (markerGroup && markerGroup.element.childNodes.length) {\n // To provide as smooth animation as possible, update the marker\n // group clipping in steps of the main group animation\n animation.step = function (val, fx) {\n if (step_1) {\n step_1.apply(fx, arguments);\n }\n if (fx.prop === 'width' &&\n markerAnimationClipRect &&\n markerAnimationClipRect.element) {\n markerAnimationClipRect.attr(inverted ? 'height' : 'width', val + 99);\n }\n };\n }\n animationClipRect\n .addClass('highcharts-animating')\n .animate(finalBox, animation);\n }\n };\n /**\n * This runs after animation to land on the final plot clipping.\n *\n * @private\n * @function Highcharts.Series#afterAnimate\n *\n * @emits Highcharts.Series#event:afterAnimate\n */\n Series.prototype.afterAnimate = function () {\n var _this = this;\n this.setClip();\n // Destroy temporary clip rectangles that are no longer in use\n objectEach(this.chart.sharedClips, function (clip, key, sharedClips) {\n if (clip && !_this.chart.container.querySelector(\"[clip-path=\\\"url(#\".concat(clip.id, \")\\\"]\"))) {\n clip.destroy();\n delete sharedClips[key];\n }\n });\n this.finishedAnimating = true;\n fireEvent(this, 'afterAnimate');\n };\n /**\n * Draw the markers for line-like series types, and columns or other\n * graphical representation for {@link Point} objects for other series\n * types. The resulting element is typically stored as\n * {@link Point.graphic}, and is created on the first call and updated\n * and moved on subsequent calls.\n *\n * @function Highcharts.Series#drawPoints\n */\n Series.prototype.drawPoints = function (points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = series.chart,\n styledMode = chart.styledMode,\n colorAxis = series.colorAxis,\n options = series.options,\n seriesMarkerOptions = options.marker,\n markerGroup = series[series.specialGroup || 'markerGroup'],\n xAxis = series.xAxis,\n globallyEnabled = pick(seriesMarkerOptions.enabled, !xAxis || xAxis.isRadial ? true : null, \n // Use larger or equal as radius is null in bubbles (#6321)\n series.closestPointRangePx >= (seriesMarkerOptions.enabledThreshold *\n seriesMarkerOptions.radius));\n var i,\n point,\n graphic,\n verb,\n pointMarkerOptions,\n hasPointMarker,\n markerAttribs;\n if (seriesMarkerOptions.enabled !== false ||\n series._hasPointMarkers) {\n for (i = 0; i < points.length; i++) {\n point = points[i];\n graphic = point.graphic;\n verb = graphic ? 'animate' : 'attr';\n pointMarkerOptions = point.marker || {};\n hasPointMarker = !!point.marker;\n var shouldDrawMarker = ((globallyEnabled &&\n typeof pointMarkerOptions.enabled === 'undefined') || pointMarkerOptions.enabled) && !point.isNull && point.visible !== false;\n // only draw the point if y is defined\n if (shouldDrawMarker) {\n // Shortcuts\n var symbol = pick(pointMarkerOptions.symbol,\n series.symbol, 'rect');\n markerAttribs = series.markerAttribs(point, (point.selected && 'select'));\n // Set starting position for point sliding animation.\n if (series.enabledDataSorting) {\n point.startXPos = xAxis.reversed ?\n -(markerAttribs.width || 0) :\n xAxis.width;\n }\n var isInside = point.isInside !== false;\n if (!graphic &&\n isInside &&\n ((markerAttribs.width || 0) > 0 || point.hasImage)) {\n /**\n * SVG graphic representing the point in the chart. In\n * some cases it may be a hidden graphic to improve\n * accessibility.\n *\n * Typically this is a simple shape, like a `rect`\n * for column charts or `path` for line markers, but\n * for some complex series types like boxplot or 3D\n * charts, the graphic may be a `g` element\n * containing other shapes. The graphic is generated\n * the first time {@link Series#drawPoints} runs,\n * and updated and moved on subsequent runs.\n *\n * @see Highcharts.Point#graphics\n *\n * @name Highcharts.Point#graphic\n * @type {Highcharts.SVGElement|undefined}\n */\n point.graphic = graphic = chart.renderer\n .symbol(symbol, markerAttribs.x, markerAttribs.y, markerAttribs.width, markerAttribs.height, hasPointMarker ?\n pointMarkerOptions :\n seriesMarkerOptions)\n .add(markerGroup);\n // Sliding animation for new points\n if (series.enabledDataSorting &&\n chart.hasRendered) {\n graphic.attr({\n x: point.startXPos\n });\n verb = 'animate';\n }\n }\n if (graphic && verb === 'animate') { // update\n // Since the marker group isn't clipped, each\n // individual marker must be toggled\n graphic[isInside ? 'show' : 'hide'](isInside)\n .animate(markerAttribs);\n }\n // Presentational attributes\n if (graphic) {\n var pointAttr = series.pointAttribs(point, ((styledMode || !point.selected) ?\n void 0 :\n 'select'));\n if (!styledMode) {\n graphic[verb](pointAttr);\n }\n else if (colorAxis) { // #14114\n graphic['css']({\n fill: pointAttr.fill\n });\n }\n }\n if (graphic) {\n graphic.addClass(point.getClassName(), true);\n }\n }\n else if (graphic) {\n point.graphic = graphic.destroy(); // #1269\n }\n }\n }\n };\n /**\n * Get non-presentational attributes for a point. Used internally for\n * both styled mode and classic. Can be overridden for different series\n * types.\n *\n * @see Series#pointAttribs\n *\n * @function Highcharts.Series#markerAttribs\n *\n * @param {Highcharts.Point} point\n * The Point to inspect.\n *\n * @param {string} [state]\n * The state, can be either `hover`, `select` or undefined.\n *\n * @return {Highcharts.SVGAttributes}\n * A hash containing those attributes that are not settable from CSS.\n */\n Series.prototype.markerAttribs = function (point, state) {\n var seriesOptions = this.options,\n seriesMarkerOptions = seriesOptions.marker,\n pointMarkerOptions = point.marker || {},\n symbol = (pointMarkerOptions.symbol ||\n seriesMarkerOptions.symbol),\n attribs = {};\n var seriesStateOptions,\n pointStateOptions,\n radius = pick(pointMarkerOptions.radius,\n seriesMarkerOptions && seriesMarkerOptions.radius);\n // Handle hover and select states\n if (state) {\n seriesStateOptions = seriesMarkerOptions.states[state];\n pointStateOptions = pointMarkerOptions.states &&\n pointMarkerOptions.states[state];\n radius = pick(pointStateOptions && pointStateOptions.radius, seriesStateOptions && seriesStateOptions.radius, radius && radius + (seriesStateOptions && seriesStateOptions.radiusPlus ||\n 0));\n }\n point.hasImage = symbol && symbol.indexOf('url') === 0;\n if (point.hasImage) {\n radius = 0; // and subsequently width and height is not set\n }\n var pos = point.pos();\n if (isNumber(radius) && pos) {\n attribs.x = pos[0] - radius;\n attribs.y = pos[1] - radius;\n if (seriesOptions.crisp) {\n // Math.floor for #1843:\n attribs.x = Math.floor(attribs.x);\n }\n }\n if (radius) {\n attribs.width = attribs.height = 2 * radius;\n }\n return attribs;\n };\n /**\n * Internal function to get presentational attributes for each point.\n * Unlike {@link Series#markerAttribs}, this function should return\n * those attributes that can also be set in CSS. In styled mode,\n * `pointAttribs` won't be called.\n *\n * @private\n * @function Highcharts.Series#pointAttribs\n *\n * @param {Highcharts.Point} [point]\n * The point instance to inspect.\n *\n * @param {string} [state]\n * The point state, can be either `hover`, `select` or 'normal'. If\n * undefined, normal state is assumed.\n *\n * @return {Highcharts.SVGAttributes}\n * The presentational attributes to be set on the point.\n */\n Series.prototype.pointAttribs = function (point, state) {\n var seriesMarkerOptions = this.options.marker,\n pointOptions = point && point.options,\n pointMarkerOptions = ((pointOptions && pointOptions.marker) || {}),\n pointColorOption = pointOptions && pointOptions.color,\n pointColor = point && point.color,\n zoneColor = point && point.zone && point.zone.color;\n var seriesStateOptions,\n pointStateOptions,\n color = this.color,\n fill,\n stroke,\n strokeWidth = pick(pointMarkerOptions.lineWidth,\n seriesMarkerOptions.lineWidth),\n opacity = 1;\n color = (pointColorOption ||\n zoneColor ||\n pointColor ||\n color);\n fill = (pointMarkerOptions.fillColor ||\n seriesMarkerOptions.fillColor ||\n color);\n stroke = (pointMarkerOptions.lineColor ||\n seriesMarkerOptions.lineColor ||\n color);\n // Handle hover and select states\n state = state || 'normal';\n if (state) {\n seriesStateOptions = (seriesMarkerOptions.states[state] || {});\n pointStateOptions = (pointMarkerOptions.states &&\n pointMarkerOptions.states[state]) || {};\n strokeWidth = pick(pointStateOptions.lineWidth, seriesStateOptions.lineWidth, strokeWidth + pick(pointStateOptions.lineWidthPlus, seriesStateOptions.lineWidthPlus, 0));\n fill = (pointStateOptions.fillColor ||\n seriesStateOptions.fillColor ||\n fill);\n stroke = (pointStateOptions.lineColor ||\n seriesStateOptions.lineColor ||\n stroke);\n opacity = pick(pointStateOptions.opacity, seriesStateOptions.opacity, opacity);\n }\n return {\n 'stroke': stroke,\n 'stroke-width': strokeWidth,\n 'fill': fill,\n 'opacity': opacity\n };\n };\n /**\n * Clear DOM objects and free up memory.\n *\n * @private\n * @function Highcharts.Series#destroy\n *\n * @emits Highcharts.Series#event:destroy\n */\n Series.prototype.destroy = function (keepEventsForUpdate) {\n var series = this,\n chart = series.chart,\n issue134 = /AppleWebKit\\/533/.test(win.navigator.userAgent),\n data = series.data || [];\n var destroy,\n i,\n point,\n axis;\n // add event hook\n fireEvent(series, 'destroy', { keepEventsForUpdate: keepEventsForUpdate });\n // remove events\n this.removeEvents(keepEventsForUpdate);\n // erase from axes\n (series.axisTypes || []).forEach(function (AXIS) {\n axis = series[AXIS];\n if (axis && axis.series) {\n erase(axis.series, series);\n axis.isDirty = axis.forceRedraw = true;\n }\n });\n // remove legend items\n if (series.legendItem) {\n series.chart.legend.destroyItem(series);\n }\n // destroy all points with their elements\n i = data.length;\n while (i--) {\n point = data[i];\n if (point && point.destroy) {\n point.destroy();\n }\n }\n if (series.clips) {\n series.clips.forEach(function (clip) { return clip.destroy(); });\n }\n // Clear the animation timeout if we are destroying the series\n // during initial animation\n U.clearTimeout(series.animationTimeout);\n // Destroy all SVGElements associated to the series\n objectEach(series, function (val, prop) {\n // Survive provides a hook for not destroying\n if (val instanceof SVGElement && !val.survive) {\n // issue 134 workaround\n destroy = issue134 && prop === 'group' ?\n 'hide' :\n 'destroy';\n val[destroy]();\n }\n });\n // remove from hoverSeries\n if (chart.hoverSeries === series) {\n chart.hoverSeries = void 0;\n }\n erase(chart.series, series);\n chart.orderSeries();\n // clear all members\n objectEach(series, function (val, prop) {\n if (!keepEventsForUpdate || prop !== 'hcEvents') {\n delete series[prop];\n }\n });\n };\n /**\n * Clip the graphs into zones for colors and styling.\n *\n * @private\n * @function Highcharts.Series#applyZones\n */\n Series.prototype.applyZones = function () {\n var series = this,\n chart = this.chart,\n renderer = chart.renderer,\n zones = this.zones,\n clips = (this.clips || []),\n graph = this.graph,\n area = this.area,\n plotSizeMax = Math.max(chart.plotWidth,\n chart.plotHeight),\n axis = this[(this.zoneAxis || 'y') + 'Axis'],\n inverted = chart.inverted;\n var translatedFrom,\n translatedTo,\n clipAttr,\n extremes,\n reversed,\n horiz,\n pxRange,\n pxPosMin,\n pxPosMax,\n zoneArea,\n zoneGraph,\n ignoreZones = false;\n if (zones.length &&\n (graph || area) &&\n axis &&\n typeof axis.min !== 'undefined') {\n reversed = axis.reversed;\n horiz = axis.horiz;\n // The use of the Color Threshold assumes there are no gaps\n // so it is safe to hide the original graph and area\n // unless it is not waterfall series, then use showLine property\n // to set lines between columns to be visible (#7862)\n if (graph && !this.showLine) {\n graph.hide();\n }\n if (area) {\n area.hide();\n }\n // Create the clips\n extremes = axis.getExtremes();\n zones.forEach(function (threshold, i) {\n translatedFrom = reversed ?\n (horiz ? chart.plotWidth : 0) :\n (horiz ? 0 : (axis.toPixels(extremes.min) || 0));\n translatedFrom = clamp(pick(translatedTo, translatedFrom), 0, plotSizeMax);\n translatedTo = clamp(Math.round(axis.toPixels(pick(threshold.value, extremes.max), true) || 0), 0, plotSizeMax);\n if (ignoreZones) {\n translatedFrom = translatedTo =\n axis.toPixels(extremes.max);\n }\n pxRange = Math.abs(translatedFrom - translatedTo);\n pxPosMin = Math.min(translatedFrom, translatedTo);\n pxPosMax = Math.max(translatedFrom, translatedTo);\n if (axis.isXAxis) {\n clipAttr = {\n x: inverted ? pxPosMax : pxPosMin,\n y: 0,\n width: pxRange,\n height: plotSizeMax\n };\n if (!horiz) {\n clipAttr.x = chart.plotHeight - clipAttr.x;\n }\n }\n else {\n clipAttr = {\n x: 0,\n y: inverted ? pxPosMax : pxPosMin,\n width: plotSizeMax,\n height: pxRange\n };\n if (horiz) {\n clipAttr.y = chart.plotWidth - clipAttr.y;\n }\n }\n // VML SUPPPORT\n if (inverted && renderer.isVML) {\n if (axis.isXAxis) {\n clipAttr = {\n x: 0,\n y: reversed ? pxPosMin : pxPosMax,\n height: clipAttr.width,\n width: chart.chartWidth\n };\n }\n else {\n clipAttr = {\n x: (clipAttr.y -\n chart.plotLeft -\n chart.spacingBox.x),\n y: 0,\n width: clipAttr.height,\n height: chart.chartHeight\n };\n }\n }\n // END OF VML SUPPORT\n if (clips[i]) {\n clips[i].animate(clipAttr);\n }\n else {\n clips[i] = renderer.clipRect(clipAttr);\n }\n // when no data, graph zone is not applied and after setData\n // clip was ignored. As a result, it should be applied each\n // time.\n zoneArea = series['zone-area-' + i];\n zoneGraph = series['zone-graph-' + i];\n if (graph && zoneGraph) {\n zoneGraph.clip(clips[i]);\n }\n if (area && zoneArea) {\n zoneArea.clip(clips[i]);\n }\n // if this zone extends out of the axis, ignore the others\n ignoreZones = threshold.value > extremes.max;\n // Clear translatedTo for indicators\n if (series.resetZones && translatedTo === 0) {\n translatedTo = void 0;\n }\n });\n this.clips = clips;\n }\n else if (series.visible) {\n // If zones were removed, restore graph and area\n if (graph) {\n graph.show();\n }\n if (area) {\n area.show();\n }\n }\n };\n /**\n * General abstraction for creating plot groups like series.group,\n * series.dataLabelsGroup and series.markerGroup. On subsequent calls,\n * the group will only be adjusted to the updated plot size.\n *\n * @private\n * @function Highcharts.Series#plotGroup\n */\n Series.prototype.plotGroup = function (prop, name, visibility, zIndex, parent) {\n var group = this[prop];\n var isNew = !group,\n attrs = {\n visibility: visibility,\n zIndex: zIndex || 0.1 // IE8 and pointer logic use this\n };\n // Avoid setting undefined opacity, or in styled mode\n if (typeof this.opacity !== 'undefined' &&\n !this.chart.styledMode && this.state !== 'inactive' // #13719\n ) {\n attrs.opacity = this.opacity;\n }\n // Generate it on first call\n if (isNew) {\n this[prop] = group = this.chart.renderer\n .g()\n .add(parent);\n }\n // Add the class names, and replace existing ones as response to\n // Series.update (#6660)\n group.addClass(('highcharts-' + name +\n ' highcharts-series-' + this.index +\n ' highcharts-' + this.type + '-series ' +\n (defined(this.colorIndex) ?\n 'highcharts-color-' + this.colorIndex + ' ' :\n '') +\n (this.options.className || '') +\n (group.hasClass('highcharts-tracker') ?\n ' highcharts-tracker' :\n '')), true);\n // Place it on first and subsequent (redraw) calls\n group.attr(attrs)[isNew ? 'attr' : 'animate'](this.getPlotBox(name));\n return group;\n };\n /**\n * Get the translation and scale for the plot area of this series.\n *\n * @function Highcharts.Series#getPlotBox\n */\n Series.prototype.getPlotBox = function (name) {\n var horAxis = this.xAxis,\n vertAxis = this.yAxis;\n var chart = this.chart,\n inverted = (chart.inverted &&\n !chart.polar &&\n horAxis &&\n this.invertible !== false &&\n name === 'series');\n // Swap axes for inverted (#2339)\n if (chart.inverted) {\n horAxis = vertAxis;\n vertAxis = this.xAxis;\n }\n return {\n translateX: horAxis ? horAxis.left : chart.plotLeft,\n translateY: vertAxis ? vertAxis.top : chart.plotTop,\n rotation: inverted ? 90 : 0,\n rotationOriginX: inverted ?\n (horAxis.len - vertAxis.len) / 2 :\n 0,\n rotationOriginY: inverted ?\n (horAxis.len + vertAxis.len) / 2 :\n 0,\n scaleX: inverted ? -1 : 1,\n scaleY: 1\n };\n };\n /**\n * Removes the event handlers attached previously with addEvents.\n * @private\n * @function Highcharts.Series#removeEvents\n */\n Series.prototype.removeEvents = function (keepEventsForUpdate) {\n var series = this;\n if (!keepEventsForUpdate) {\n // remove all events\n removeEvent(series);\n }\n if (series.eventsToUnbind.length) {\n // remove only internal events for proper update\n // #12355 - solves problem with multiple destroy events\n series.eventsToUnbind.forEach(function (unbind) {\n unbind();\n });\n series.eventsToUnbind.length = 0;\n }\n };\n /**\n * Render the graph and markers. Called internally when first rendering\n * and later when redrawing the chart. This function can be extended in\n * plugins, but normally shouldn't be called directly.\n *\n * @function Highcharts.Series#render\n *\n * @emits Highcharts.Series#event:afterRender\n */\n Series.prototype.render = function () {\n var series = this,\n chart = series.chart,\n options = series.options,\n animOptions = animObject(options.animation),\n visibility = series.visible ?\n 'inherit' : 'hidden', // #2597\n zIndex = options.zIndex,\n hasRendered = series.hasRendered,\n chartSeriesGroup = chart.seriesGroup,\n inverted = chart.inverted;\n // Animation doesn't work in IE8 quirks when the group div is\n // hidden, and looks bad in other oldIE\n var animDuration = (!series.finishedAnimating && chart.renderer.isSVG) ?\n animOptions.duration : 0;\n fireEvent(this, 'render');\n // the group\n var group = series.plotGroup('group', 'series', visibility, zIndex, chartSeriesGroup);\n series.markerGroup = series.plotGroup('markerGroup', 'markers', visibility, zIndex, chartSeriesGroup);\n // Initial clipping, applies to columns etc. (#3839).\n if (options.clip !== false) {\n series.setClip();\n }\n // Initialize the animation\n if (series.animate && animDuration) {\n series.animate(true);\n }\n // Draw the graph if any\n if (series.drawGraph) {\n series.drawGraph();\n series.applyZones();\n }\n // Draw the points\n if (series.visible) {\n series.drawPoints();\n }\n // Draw the data labels\n if (series.drawDataLabels) {\n series.drawDataLabels();\n }\n // In pie charts, slices are added to the DOM, but actual rendering\n // is postponed until labels reserved their space\n if (series.redrawPoints) {\n series.redrawPoints();\n }\n // draw the mouse tracking area\n if (series.drawTracker &&\n series.options.enableMouseTracking !== false) {\n series.drawTracker();\n }\n // Run the animation\n if (series.animate && animDuration) {\n series.animate();\n }\n // Call the afterAnimate function on animation complete (but don't\n // overwrite the animation.complete option which should be available\n // to the user).\n if (!hasRendered) {\n // Additional time if defer is defined before afterAnimate\n // will be triggered\n if (animDuration && animOptions.defer) {\n animDuration += animOptions.defer;\n }\n series.animationTimeout = syncTimeout(function () {\n series.afterAnimate();\n }, animDuration || 0);\n }\n // Means data is in accordance with what you see\n series.isDirty = false;\n // (See #322) series.isDirty = series.isDirtyData = false; // means\n // data is in accordance with what you see\n series.hasRendered = true;\n fireEvent(series, 'afterRender');\n };\n /**\n * Redraw the series. This function is called internally from\n * `chart.redraw` and normally shouldn't be called directly.\n * @private\n * @function Highcharts.Series#redraw\n */\n Series.prototype.redraw = function () {\n // Cache it here as it is set to false in render, but used after\n var wasDirty = this.isDirty || this.isDirtyData;\n this.translate();\n this.render();\n if (wasDirty) { // #3868, #3945\n delete this.kdTree;\n }\n };\n /**\n * Find the nearest point from a pointer event. This applies to series that\n * use k-d-trees to get the nearest point. Native pointer events must be\n * normalized using `Pointer.normalize`, that adds `chartX` and `chartY`\n * properties.\n *\n * @sample highcharts/demo/synchronized-charts\n * Synchronized charts with tooltips\n *\n * @function Highcharts.Series#searchPoint\n *\n * @param {Highcharts.PointerEvent} e\n * The normalized pointer event\n * @param {boolean} [compareX=false]\n * Search only by the X value, not Y\n *\n * @return {Point|undefined}\n * The closest point to the pointer event\n */\n Series.prototype.searchPoint = function (e, compareX) {\n var series = this,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n inverted = series.chart.inverted;\n return this.searchKDTree({\n clientX: inverted ?\n xAxis.len - e.chartY + xAxis.pos :\n e.chartX - xAxis.pos,\n plotY: inverted ?\n yAxis.len - e.chartX + yAxis.pos :\n e.chartY - yAxis.pos\n }, compareX, e);\n };\n /**\n * Build the k-d-tree that is used by mouse and touch interaction to get\n * the closest point. Line-like series typically have a one-dimensional\n * tree where points are searched along the X axis, while scatter-like\n * series typically search in two dimensions, X and Y.\n *\n * @private\n * @function Highcharts.Series#buildKDTree\n */\n Series.prototype.buildKDTree = function (e) {\n // Prevent multiple k-d-trees from being built simultaneously\n // (#6235)\n this.buildingKdTree = true;\n var series = this,\n dimensions = series.options.findNearestPointBy\n .indexOf('y') > -1 ? 2 : 1;\n /**\n * Internal function\n * @private\n */\n function _kdtree(points, depth, dimensions) {\n var length = points && points.length;\n var axis,\n median;\n if (length) {\n // alternate between the axis\n axis = series.kdAxisArray[depth % dimensions];\n // sort point array\n points.sort(function (a, b) {\n return a[axis] - b[axis];\n });\n median = Math.floor(length / 2);\n // build and return nod\n return {\n point: points[median],\n left: _kdtree(points.slice(0, median), depth + 1, dimensions),\n right: _kdtree(points.slice(median + 1), depth + 1, dimensions)\n };\n }\n }\n /**\n * Start the recursive build process with a clone of the points\n * array and null points filtered out. (#3873)\n * @private\n */\n function startRecursive() {\n series.kdTree = _kdtree(series.getValidPoints(null, \n // For line-type series restrict to plot area, but\n // column-type series not (#3916, #4511)\n !series.directTouch), dimensions, dimensions);\n series.buildingKdTree = false;\n }\n delete series.kdTree;\n // For testing tooltips, don't build async. Also if touchstart, we\n // may be dealing with click events on mobile, so don't delay\n // (#6817).\n syncTimeout(startRecursive, series.options.kdNow || (e && e.type === 'touchstart') ? 0 : 1);\n };\n /**\n * @private\n * @function Highcharts.Series#searchKDTree\n */\n Series.prototype.searchKDTree = function (point, compareX, e) {\n var series = this,\n kdX = this.kdAxisArray[0],\n kdY = this.kdAxisArray[1],\n kdComparer = compareX ? 'distX' : 'dist',\n kdDimensions = series.options.findNearestPointBy\n .indexOf('y') > -1 ? 2 : 1;\n /**\n * Set the one and two dimensional distance on the point object.\n * @private\n */\n function setDistance(p1, p2) {\n var x = (defined(p1[kdX]) &&\n defined(p2[kdX])) ?\n Math.pow(p1[kdX] - p2[kdX], 2) :\n null,\n y = (defined(p1[kdY]) &&\n defined(p2[kdY])) ?\n Math.pow(p1[kdY] - p2[kdY], 2) :\n null,\n r = (x || 0) + (y || 0);\n p2.dist = defined(r) ? Math.sqrt(r) : Number.MAX_VALUE;\n p2.distX = defined(x) ? Math.sqrt(x) : Number.MAX_VALUE;\n }\n /**\n * @private\n */\n function _search(search, tree, depth, dimensions) {\n var point = tree.point,\n axis = series.kdAxisArray[depth % dimensions];\n var nPoint1,\n nPoint2,\n ret = point;\n setDistance(search, point);\n // Pick side based on distance to splitting point\n var tdist = search[axis] - point[axis], sideA = tdist < 0 ? 'left' : 'right', sideB = tdist < 0 ? 'right' : 'left';\n // End of tree\n if (tree[sideA]) {\n nPoint1 = _search(search, tree[sideA], depth + 1, dimensions);\n ret = (nPoint1[kdComparer] <\n ret[kdComparer] ?\n nPoint1 :\n point);\n }\n if (tree[sideB]) {\n // compare distance to current best to splitting point to\n // decide whether to check side B or not\n if (Math.sqrt(tdist * tdist) < ret[kdComparer]) {\n nPoint2 = _search(search, tree[sideB], depth + 1, dimensions);\n ret = (nPoint2[kdComparer] <\n ret[kdComparer] ?\n nPoint2 :\n ret);\n }\n }\n return ret;\n }\n if (!this.kdTree && !this.buildingKdTree) {\n this.buildKDTree(e);\n }\n if (this.kdTree) {\n return _search(point, this.kdTree, kdDimensions, kdDimensions);\n }\n };\n /**\n * @private\n * @function Highcharts.Series#pointPlacementToXValue\n */\n Series.prototype.pointPlacementToXValue = function () {\n var _a = this,\n _b = _a.options,\n pointPlacement = _b.pointPlacement,\n pointRange = _b.pointRange,\n axis = _a.xAxis;\n var factor = pointPlacement;\n // Point placement is relative to each series pointRange (#5889)\n if (factor === 'between') {\n factor = axis.reversed ? -0.5 : 0.5; // #11955\n }\n return isNumber(factor) ?\n factor * (pointRange || axis.pointRange) :\n 0;\n };\n /**\n * @private\n * @function Highcharts.Series#isPointInside\n */\n Series.prototype.isPointInside = function (point) {\n var _a = this,\n chart = _a.chart,\n xAxis = _a.xAxis,\n yAxis = _a.yAxis,\n isInside = (typeof point.plotY !== 'undefined' &&\n typeof point.plotX !== 'undefined' &&\n point.plotY >= 0 &&\n point.plotY <= (yAxis ? yAxis.len : chart.plotHeight) &&\n point.plotX >= 0 &&\n point.plotX <= (xAxis ? xAxis.len : chart.plotWidth));\n return isInside;\n };\n /**\n * Draw the tracker object that sits above all data labels and markers to\n * track mouse events on the graph or points. For the line type charts\n * the tracker uses the same graphPath, but with a greater stroke width\n * for better control.\n * @private\n */\n Series.prototype.drawTracker = function () {\n var series = this,\n options = series.options,\n trackByArea = options.trackByArea,\n trackerPath = [].concat(trackByArea ?\n series.areaPath :\n series.graphPath), \n // trackerPathLength = trackerPath.length,\n chart = series.chart,\n pointer = chart.pointer,\n renderer = chart.renderer,\n snap = chart.options.tooltip.snap,\n tracker = series.tracker,\n onMouseOver = function (e) {\n if (chart.hoverSeries !== series) {\n series.onMouseOver();\n }\n }, \n /*\n * Empirical lowest possible opacities for TRACKER_FILL for an\n * element to stay invisible but clickable\n * IE6: 0.002\n * IE7: 0.002\n * IE8: 0.002\n * IE9: 0.00000000001 (unlimited)\n * IE10: 0.0001 (exporting only)\n * FF: 0.00000000001 (unlimited)\n * Chrome: 0.000001\n * Safari: 0.000001\n * Opera: 0.00000000001 (unlimited)\n */\n TRACKER_FILL = 'rgba(192,192,192,' + (svg ? 0.0001 : 0.002) + ')';\n var i;\n // Draw the tracker\n if (tracker) {\n tracker.attr({ d: trackerPath });\n }\n else if (series.graph) { // create\n series.tracker = renderer.path(trackerPath)\n .attr({\n visibility: series.visible ? 'inherit' : 'hidden',\n zIndex: 2\n })\n .addClass(trackByArea ?\n 'highcharts-tracker-area' :\n 'highcharts-tracker-line')\n .add(series.group);\n if (!chart.styledMode) {\n series.tracker.attr({\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n stroke: TRACKER_FILL,\n fill: trackByArea ? TRACKER_FILL : 'none',\n 'stroke-width': series.graph.strokeWidth() +\n (trackByArea ? 0 : 2 * snap)\n });\n }\n // The tracker is added to the series group, which is clipped, but\n // is covered by the marker group. So the marker group also needs to\n // capture events.\n [\n series.tracker,\n series.markerGroup,\n series.dataLabelsGroup\n ].forEach(function (tracker) {\n if (tracker) {\n tracker.addClass('highcharts-tracker')\n .on('mouseover', onMouseOver)\n .on('mouseout', function (e) {\n pointer.onTrackerMouseOut(e);\n });\n if (options.cursor && !chart.styledMode) {\n tracker.css({ cursor: options.cursor });\n }\n if (hasTouch) {\n tracker.on('touchstart', onMouseOver);\n }\n }\n });\n }\n fireEvent(this, 'afterDrawTracker');\n };\n /**\n * Add a point to the series after render time. The point can be added at\n * the end, or by giving it an X value, to the start or in the middle of the\n * series.\n *\n * @sample highcharts/members/series-addpoint-append/\n * Append point\n * @sample highcharts/members/series-addpoint-append-and-shift/\n * Append and shift\n * @sample highcharts/members/series-addpoint-x-and-y/\n * Both X and Y values given\n * @sample highcharts/members/series-addpoint-pie/\n * Append pie slice\n * @sample stock/members/series-addpoint/\n * Append 100 points in Highcharts Stock\n * @sample stock/members/series-addpoint-shift/\n * Append and shift in Highcharts Stock\n * @sample maps/members/series-addpoint/\n * Add a point in Highmaps\n *\n * @function Highcharts.Series#addPoint\n *\n * @param {Highcharts.PointOptionsType} options\n * The point options. If options is a single number, a point with\n * that y value is appended to the series. If it is an array, it will\n * be interpreted as x and y values respectively. If it is an\n * object, advanced options as outlined under `series.data` are\n * applied.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is added. When adding\n * more than one point, it is highly recommended that the redraw\n * option be set to false, and instead {@link Chart#redraw} is\n * explicitly called after the adding of points is finished.\n * Otherwise, the chart will redraw after adding each point.\n *\n * @param {boolean} [shift=false]\n * If true, a point is shifted off the start of the series as one is\n * appended to the end.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @param {boolean} [withEvent=true]\n * Used internally, whether to fire the series `addPoint` event.\n *\n * @emits Highcharts.Series#event:addPoint\n */\n Series.prototype.addPoint = function (options, redraw, shift, animation, withEvent) {\n var series = this,\n seriesOptions = series.options,\n data = series.data,\n chart = series.chart,\n xAxis = series.xAxis,\n names = xAxis && xAxis.hasNames && xAxis.names,\n dataOptions = seriesOptions.data,\n xData = series.xData;\n var isInTheMiddle,\n i;\n // Optional redraw, defaults to true\n redraw = pick(redraw, true);\n // Get options and push the point to xData, yData and series.options. In\n // series.generatePoints the Point instance will be created on demand\n // and pushed to the series.data array.\n var point = { series: series };\n series.pointClass.prototype.applyOptions.apply(point, [options]);\n var x = point.x;\n // Get the insertion point\n i = xData.length;\n if (series.requireSorting && x < xData[i - 1]) {\n isInTheMiddle = true;\n while (i && xData[i - 1] > x) {\n i--;\n }\n }\n // Insert undefined item\n series.updateParallelArrays(point, 'splice', i, 0, 0);\n // Update it\n series.updateParallelArrays(point, i);\n if (names && point.name) {\n names[x] = point.name;\n }\n dataOptions.splice(i, 0, options);\n if (isInTheMiddle ||\n // When processedData is present we need to splice an empty slot\n // into series.data, otherwise generatePoints won't pick it up.\n series.processedData) {\n series.data.splice(i, 0, null);\n series.processData();\n }\n // Generate points to be added to the legend (#1329)\n if (seriesOptions.legendType === 'point') {\n series.generatePoints();\n }\n // Shift the first point off the parallel arrays\n if (shift) {\n if (data[0] && (data[0].remove)) {\n data[0].remove(false);\n }\n else {\n data.shift();\n series.updateParallelArrays(point, 'shift');\n dataOptions.shift();\n }\n }\n // Fire event\n if (withEvent !== false) {\n fireEvent(series, 'addPoint', { point: point });\n }\n // redraw\n series.isDirty = true;\n series.isDirtyData = true;\n if (redraw) {\n chart.redraw(animation); // Animation is set anyway on redraw, #5665\n }\n };\n /**\n * Remove a point from the series. Unlike the\n * {@link Highcharts.Point#remove} method, this can also be done on a point\n * that is not instanciated because it is outside the view or subject to\n * Highcharts Stock data grouping.\n *\n * @sample highcharts/members/series-removepoint/\n * Remove cropped point\n *\n * @function Highcharts.Series#removePoint\n *\n * @param {number} i\n * The index of the point in the {@link Highcharts.Series.data|data}\n * array.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the point is added. When\n * removing more than one point, it is highly recommended that the\n * `redraw` option be set to `false`, and instead {@link\n * Highcharts.Chart#redraw} is explicitly called after the adding of\n * points is finished.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * Whether and optionally how the series should be animated.\n *\n * @emits Highcharts.Point#event:remove\n */\n Series.prototype.removePoint = function (i, redraw, animation) {\n var series = this,\n data = series.data,\n point = data[i],\n points = series.points,\n chart = series.chart,\n remove = function () {\n if (points && points.length === data.length) { // #4935\n points.splice(i, 1);\n }\n data.splice(i, 1);\n series.options.data.splice(i, 1);\n series.updateParallelArrays(point || { series: series }, 'splice', i, 1);\n if (point) {\n point.destroy();\n }\n // redraw\n series.isDirty = true;\n series.isDirtyData = true;\n if (redraw) {\n chart.redraw();\n }\n };\n setAnimation(animation, chart);\n redraw = pick(redraw, true);\n // Fire the event with a default handler of removing the point\n if (point) {\n point.firePointEvent('remove', null, remove);\n }\n else {\n remove();\n }\n };\n /**\n * Remove a series and optionally redraw the chart.\n *\n * @sample highcharts/members/series-remove/\n * Remove first series from a button\n *\n * @function Highcharts.Series#remove\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart or wait for an explicit call to\n * {@link Highcharts.Chart#redraw}.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * Whether to apply animation, and optionally animation\n * configuration.\n *\n * @param {boolean} [withEvent=true]\n * Used internally, whether to fire the series `remove` event.\n *\n * @emits Highcharts.Series#event:remove\n */\n Series.prototype.remove = function (redraw, animation, withEvent, keepEvents) {\n var series = this,\n chart = series.chart;\n /**\n * @private\n */\n function remove() {\n // Destroy elements\n series.destroy(keepEvents);\n // Redraw\n chart.isDirtyLegend = chart.isDirtyBox = true;\n chart.linkSeries();\n if (pick(redraw, true)) {\n chart.redraw(animation);\n }\n }\n // Fire the event with a default handler of removing the point\n if (withEvent !== false) {\n fireEvent(series, 'remove', null, remove);\n }\n else {\n remove();\n }\n };\n /**\n * Update the series with a new set of options. For a clean and precise\n * handling of new options, all methods and elements from the series are\n * removed, and it is initialized from scratch. Therefore, this method is\n * more performance expensive than some other utility methods like {@link\n * Series#setData} or {@link Series#setVisible}.\n *\n * Note that `Series.update` may mutate the passed `data` options.\n *\n * @sample highcharts/members/series-update/\n * Updating series options\n * @sample maps/members/series-update/\n * Update series options in Highmaps\n *\n * @function Highcharts.Series#update\n *\n * @param {Highcharts.SeriesOptionsType} options\n * New options that will be merged with the series' existing options.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If doing\n * more operations on the chart, it is a good idea to set redraw to\n * false and call {@link Chart#redraw} after.\n *\n * @emits Highcharts.Series#event:update\n * @emits Highcharts.Series#event:afterUpdate\n */\n Series.prototype.update = function (options, redraw) {\n options = cleanRecursively(options, this.userOptions);\n fireEvent(this, 'update', { options: options });\n var series = this,\n chart = series.chart, \n // must use user options when changing type because series.options\n // is merged in with type specific plotOptions\n oldOptions = series.userOptions,\n initialType = series.initialType || series.type,\n plotOptions = chart.options.plotOptions,\n initialSeriesProto = seriesTypes[initialType].prototype,\n groups = [\n 'group',\n 'markerGroup',\n 'dataLabelsGroup',\n 'transformGroup',\n 'shadowGroup'\n ], \n // Animation must be enabled when calling update before the initial\n // animation has first run. This happens when calling update\n // directly after chart initialization, or when applying responsive\n // rules (#6912).\n animation = series.finishedAnimating && { animation: false },\n kinds = {};\n var seriesOptions,\n n,\n preserve = [\n 'eventOptions',\n 'navigatorSeries',\n 'baseSeries'\n ],\n newType = (options.type ||\n oldOptions.type ||\n chart.options.chart.type);\n var keepPoints = !(\n // Indicators, histograms etc recalculate the data. It should be\n // possible to omit this.\n this.hasDerivedData ||\n // New type requires new point classes\n (newType && newType !== this.type) ||\n // New options affecting how the data points are built\n typeof options.pointStart !== 'undefined' ||\n typeof options.pointInterval !== 'undefined' ||\n typeof options.relativeXValue !== 'undefined' ||\n options.joinBy ||\n options.mapData || // #11636\n // Changes to data grouping requires new points in new group\n series.hasOptionChanged('dataGrouping') ||\n series.hasOptionChanged('pointStart') ||\n series.hasOptionChanged('pointInterval') ||\n series.hasOptionChanged('pointIntervalUnit') ||\n series.hasOptionChanged('keys'));\n newType = newType || initialType;\n if (keepPoints) {\n preserve.push('data', 'isDirtyData', 'points', 'processedData', // #17057\n 'processedXData', 'processedYData', 'xIncrement', 'cropped', '_hasPointMarkers', '_hasPointLabels', 'clips', // #15420\n // Networkgraph (#14397)\n 'nodes', 'layout', \n // Treemap\n 'level', \n // Map specific, consider moving it to series-specific preserve-\n // properties (#10617)\n 'mapMap', 'mapData', 'minY', 'maxY', 'minX', 'maxX');\n if (options.visible !== false) {\n preserve.push('area', 'graph');\n }\n series.parallelArrays.forEach(function (key) {\n preserve.push(key + 'Data');\n });\n if (options.data) {\n // setData uses dataSorting options so we need to update them\n // earlier\n if (options.dataSorting) {\n extend(series.options.dataSorting, options.dataSorting);\n }\n this.setData(options.data, false);\n }\n }\n // Do the merge, with some forced options\n options = merge(oldOptions, animation, {\n // When oldOptions.index is null it should't be cleared.\n // Otherwise navigator series will have wrong indexes (#10193).\n index: typeof oldOptions.index === 'undefined' ?\n series.index : oldOptions.index,\n pointStart: pick(\n // when updating from blank (#7933)\n (plotOptions &&\n plotOptions.series &&\n plotOptions.series.pointStart), oldOptions.pointStart, \n // when updating after addPoint\n series.xData[0])\n }, (!keepPoints && { data: series.options.data }), options);\n // Merge does not merge arrays, but replaces them. Since points were\n // updated, `series.options.data` has correct merged options, use it:\n if (keepPoints && options.data) {\n options.data = series.options.data;\n }\n // Make sure preserved properties are not destroyed (#3094)\n preserve = groups.concat(preserve);\n preserve.forEach(function (prop) {\n preserve[prop] = series[prop];\n delete series[prop];\n });\n var casting = false;\n if (seriesTypes[newType]) {\n casting = newType !== series.type;\n // Destroy the series and delete all properties, it will be\n // reinserted within the `init` call below\n series.remove(false, false, false, true);\n if (casting) {\n // Modern browsers including IE11\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(series, seriesTypes[newType].prototype);\n // Legacy (IE < 11)\n }\n else {\n var ownEvents = Object.hasOwnProperty.call(series, 'hcEvents') && series.hcEvents;\n for (n in initialSeriesProto) { // eslint-disable-line guard-for-in\n series[n] = void 0;\n }\n // Reinsert all methods and properties from the new type\n // prototype (#2270, #3719).\n extend(series, seriesTypes[newType].prototype);\n // The events are tied to the prototype chain, don't copy if\n // they're not the series' own\n if (ownEvents) {\n series.hcEvents = ownEvents;\n }\n else {\n delete series.hcEvents;\n }\n }\n }\n }\n else {\n error(17, true, chart, { missingModuleFor: newType });\n }\n // Re-register groups (#3094) and other preserved properties\n preserve.forEach(function (prop) {\n series[prop] = preserve[prop];\n });\n series.init(chart, options);\n // Remove particular elements of the points. Check `series.options`\n // because we need to consider the options being set on plotOptions as\n // well.\n if (keepPoints && this.points) {\n seriesOptions = series.options;\n // What kind of elements to destroy\n if (seriesOptions.visible === false) {\n kinds.graphic = 1;\n kinds.dataLabel = 1;\n }\n else if (!series._hasPointLabels) {\n var marker = seriesOptions.marker,\n dataLabels = seriesOptions.dataLabels,\n oldMarker = oldOptions.marker || {};\n // If the marker got disabled or changed its symbol, width or\n // height - destroy\n if (marker && (marker.enabled === false ||\n oldMarker.symbol !== marker.symbol || // #10870, #15946\n oldMarker.height !== marker.height || // #16274\n oldMarker.width !== marker.width // #16274\n )) {\n kinds.graphic = 1;\n }\n if (dataLabels &&\n dataLabels.enabled === false) {\n kinds.dataLabel = 1;\n }\n }\n for (var _a = 0, _b = this.points; _a < _b.length; _a++) {\n var point = _b[_a];\n if (point && point.series) {\n point.resolveColor();\n // Destroy elements in order to recreate based on updated\n // series options.\n if (Object.keys(kinds).length) {\n point.destroyElements(kinds);\n }\n if (seriesOptions.showInLegend === false &&\n point.legendItem) {\n chart.legend.destroyItem(point);\n }\n }\n }\n }\n series.initialType = initialType;\n chart.linkSeries(); // Links are lost in series.remove (#3028)\n // #15383: Fire updatedData if the type has changed to keep linked\n // series such as indicators updated\n if (casting && series.linkedSeries.length) {\n series.isDirtyData = true;\n }\n fireEvent(this, 'afterUpdate');\n if (pick(redraw, true)) {\n chart.redraw(keepPoints ? void 0 : false);\n }\n };\n /**\n * Used from within series.update\n * @private\n */\n Series.prototype.setName = function (name) {\n this.name = this.options.name = this.userOptions.name = name;\n this.chart.isDirtyLegend = true;\n };\n /**\n * Check if the option has changed.\n * @private\n */\n Series.prototype.hasOptionChanged = function (optionName) {\n var chart = this.chart,\n option = this.options[optionName],\n plotOptions = chart.options.plotOptions,\n oldOption = this.userOptions[optionName];\n if (oldOption) {\n return option !== oldOption;\n }\n return option !==\n pick(plotOptions &&\n plotOptions[this.type] &&\n plotOptions[this.type][optionName], plotOptions &&\n plotOptions.series &&\n plotOptions.series[optionName], option);\n };\n /**\n * Runs on mouse over the series graphical items.\n *\n * @function Highcharts.Series#onMouseOver\n * @emits Highcharts.Series#event:mouseOver\n */\n Series.prototype.onMouseOver = function () {\n var series = this,\n chart = series.chart,\n hoverSeries = chart.hoverSeries,\n pointer = chart.pointer;\n pointer.setHoverChartIndex();\n // set normal state to previous series\n if (hoverSeries && hoverSeries !== series) {\n hoverSeries.onMouseOut();\n }\n // trigger the event, but to save processing time,\n // only if defined\n if (series.options.events.mouseOver) {\n fireEvent(series, 'mouseOver');\n }\n // hover this\n series.setState('hover');\n /**\n * Contains the original hovered series.\n *\n * @name Highcharts.Chart#hoverSeries\n * @type {Highcharts.Series|null}\n */\n chart.hoverSeries = series;\n };\n /**\n * Runs on mouse out of the series graphical items.\n *\n * @function Highcharts.Series#onMouseOut\n *\n * @emits Highcharts.Series#event:mouseOut\n */\n Series.prototype.onMouseOut = function () {\n // trigger the event only if listeners exist\n var series = this,\n options = series.options,\n chart = series.chart,\n tooltip = chart.tooltip,\n hoverPoint = chart.hoverPoint;\n // #182, set to null before the mouseOut event fires\n chart.hoverSeries = null;\n // trigger mouse out on the point, which must be in this series\n if (hoverPoint) {\n hoverPoint.onMouseOut();\n }\n // fire the mouse out event\n if (series && options.events.mouseOut) {\n fireEvent(series, 'mouseOut');\n }\n // hide the tooltip\n if (tooltip &&\n !series.stickyTracking &&\n (!tooltip.shared || series.noSharedTooltip)) {\n tooltip.hide();\n }\n // Reset all inactive states\n chart.series.forEach(function (s) {\n s.setState('', true);\n });\n };\n /**\n * Set the state of the series. Called internally on mouse interaction\n * operations, but it can also be called directly to visually\n * highlight a series.\n *\n * @function Highcharts.Series#setState\n *\n * @param {Highcharts.SeriesStateValue|\"\"} [state]\n * The new state, can be either `'hover'`, `'inactive'`, `'select'`,\n * or `''` (an empty string), `'normal'` or `undefined` to set to\n * normal state.\n * @param {boolean} [inherit]\n * Determines if state should be inherited by points too.\n */\n Series.prototype.setState = function (state, inherit) {\n var series = this,\n options = series.options,\n graph = series.graph,\n inactiveOtherPoints = options.inactiveOtherPoints,\n stateOptions = options.states, \n // By default a quick animation to hover/inactive,\n // slower to un-hover\n stateAnimation = pick((stateOptions[state || 'normal'] &&\n stateOptions[state || 'normal'].animation),\n series.chart.options.chart.animation);\n var attribs,\n lineWidth = options.lineWidth,\n i = 0,\n opacity = options.opacity;\n state = state || '';\n if (series.state !== state) {\n // Toggle class names\n [\n series.group,\n series.markerGroup,\n series.dataLabelsGroup\n ].forEach(function (group) {\n if (group) {\n // Old state\n if (series.state) {\n group.removeClass('highcharts-series-' + series.state);\n }\n // New state\n if (state) {\n group.addClass('highcharts-series-' + state);\n }\n }\n });\n series.state = state;\n if (!series.chart.styledMode) {\n if (stateOptions[state] &&\n stateOptions[state].enabled === false) {\n return;\n }\n if (state) {\n lineWidth = (stateOptions[state].lineWidth ||\n lineWidth + (stateOptions[state].lineWidthPlus || 0)); // #4035\n opacity = pick(stateOptions[state].opacity, opacity);\n }\n if (graph && !graph.dashstyle && isNumber(lineWidth)) {\n attribs = {\n 'stroke-width': lineWidth\n };\n // Animate the graph stroke-width.\n graph.animate(attribs, stateAnimation);\n while (series['zone-graph-' + i]) {\n series['zone-graph-' + i].animate(attribs, stateAnimation);\n i = i + 1;\n }\n }\n // For some types (pie, networkgraph, sankey) opacity is\n // resolved on a point level\n if (!inactiveOtherPoints) {\n [\n series.group,\n series.markerGroup,\n series.dataLabelsGroup,\n series.labelBySeries\n ].forEach(function (group) {\n if (group) {\n group.animate({\n opacity: opacity\n }, stateAnimation);\n }\n });\n }\n }\n }\n // Don't loop over points on a series that doesn't apply inactive state\n // to siblings markers (e.g. line, column)\n if (inherit && inactiveOtherPoints && series.points) {\n series.setAllPointsToState(state || void 0);\n }\n };\n /**\n * Set the state for all points in the series.\n *\n * @function Highcharts.Series#setAllPointsToState\n *\n * @private\n *\n * @param {string} [state]\n * Can be either `hover` or undefined to set to normal state.\n */\n Series.prototype.setAllPointsToState = function (state) {\n this.points.forEach(function (point) {\n if (point.setState) {\n point.setState(state);\n }\n });\n };\n /**\n * Show or hide the series.\n *\n * @function Highcharts.Series#setVisible\n *\n * @param {boolean} [visible]\n * True to show the series, false to hide. If undefined, the visibility is\n * toggled.\n *\n * @param {boolean} [redraw=true]\n * Whether to redraw the chart after the series is altered. If doing more\n * operations on the chart, it is a good idea to set redraw to false and\n * call {@link Chart#redraw|chart.redraw()} after.\n *\n * @emits Highcharts.Series#event:hide\n * @emits Highcharts.Series#event:show\n */\n Series.prototype.setVisible = function (vis, redraw) {\n var series = this,\n chart = series.chart,\n ignoreHiddenSeries = chart.options.chart.ignoreHiddenSeries,\n oldVisibility = series.visible;\n // if called without an argument, toggle visibility\n series.visible =\n vis =\n series.options.visible =\n series.userOptions.visible =\n typeof vis === 'undefined' ? !oldVisibility : vis; // #5618\n var showOrHide = vis ? 'show' : 'hide';\n // show or hide elements\n [\n 'group',\n 'dataLabelsGroup',\n 'markerGroup',\n 'tracker',\n 'tt'\n ].forEach(function (key) {\n if (series[key]) {\n series[key][showOrHide]();\n }\n });\n // hide tooltip (#1361)\n if (chart.hoverSeries === series ||\n (chart.hoverPoint && chart.hoverPoint.series) === series) {\n series.onMouseOut();\n }\n if (series.legendItem) {\n chart.legend.colorizeItem(series, vis);\n }\n // rescale or adapt to resized chart\n series.isDirty = true;\n // in a stack, all other series are affected\n if (series.options.stacking) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.options.stacking && otherSeries.visible) {\n otherSeries.isDirty = true;\n }\n });\n }\n // show or hide linked series\n series.linkedSeries.forEach(function (otherSeries) {\n otherSeries.setVisible(vis, false);\n });\n if (ignoreHiddenSeries) {\n chart.isDirtyBox = true;\n }\n fireEvent(series, showOrHide);\n if (redraw !== false) {\n chart.redraw();\n }\n };\n /**\n * Show the series if hidden.\n *\n * @sample highcharts/members/series-hide/\n * Toggle visibility from a button\n *\n * @function Highcharts.Series#show\n * @emits Highcharts.Series#event:show\n */\n Series.prototype.show = function () {\n this.setVisible(true);\n };\n /**\n * Hide the series if visible. If the\n * [chart.ignoreHiddenSeries](https://api.highcharts.com/highcharts/chart.ignoreHiddenSeries)\n * option is true, the chart is redrawn without this series.\n *\n * @sample highcharts/members/series-hide/\n * Toggle visibility from a button\n *\n * @function Highcharts.Series#hide\n * @emits Highcharts.Series#event:hide\n */\n Series.prototype.hide = function () {\n this.setVisible(false);\n };\n /**\n * Select or unselect the series. This means its\n * {@link Highcharts.Series.selected|selected}\n * property is set, the checkbox in the legend is toggled and when selected,\n * the series is returned by the {@link Highcharts.Chart#getSelectedSeries}\n * function.\n *\n * @sample highcharts/members/series-select/\n * Select a series from a button\n *\n * @function Highcharts.Series#select\n *\n * @param {boolean} [selected]\n * True to select the series, false to unselect. If undefined, the selection\n * state is toggled.\n *\n * @emits Highcharts.Series#event:select\n * @emits Highcharts.Series#event:unselect\n */\n Series.prototype.select = function (selected) {\n var series = this;\n series.selected =\n selected =\n this.options.selected = (typeof selected === 'undefined' ?\n !series.selected :\n selected);\n if (series.checkbox) {\n series.checkbox.checked = selected;\n }\n fireEvent(series, selected ? 'select' : 'unselect');\n };\n /**\n * Checks if a tooltip should be shown for a given point.\n *\n * @private\n */\n Series.prototype.shouldShowTooltip = function (plotX, plotY, options) {\n if (options === void 0) { options = {}; }\n options.series = this;\n options.visiblePlotOnly = true;\n return this.chart.isInsidePlot(plotX, plotY, options);\n };\n Series.defaultOptions = SeriesDefaults;\n /**\n * Registry of all available series types.\n *\n * @name Highcharts.Series.types\n * @type {Highcharts.Dictionary<typeof_Highcharts.Series>}\n */\n Series.types = SeriesRegistry.seriesTypes;\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Registers a series class to be accessible via `Series.types`.\n *\n * @function Highcharts.Series.registerType\n *\n * @param {string} seriesType\n * The series type as an identifier string in lower case.\n *\n * @param {Function} SeriesClass\n * The series class as a class pattern or a constructor function with\n * prototype.\n */\n Series.registerType = SeriesRegistry.registerSeriesType;\n return Series;\n }());\n extend(Series.prototype, {\n axisTypes: ['xAxis', 'yAxis'],\n coll: 'series',\n colorCounter: 0,\n cropShoulder: 1,\n directTouch: false,\n drawLegendSymbol: LegendSymbol.drawLineMarker,\n isCartesian: true,\n kdAxisArray: ['clientX', 'plotY'],\n // each point's x and y values are stored in this.xData and this.yData:\n parallelArrays: ['x', 'y'],\n pointClass: Point,\n requireSorting: true,\n // requires the data to be sorted:\n sorted: true\n });\n /* *\n *\n * Registry\n *\n * */\n SeriesRegistry.series = Series;\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * This is a placeholder type of the possible series options for\n * [Highcharts](../highcharts/series), [Highcharts Stock](../highstock/series),\n * [Highmaps](../highmaps/series), and [Gantt](../gantt/series).\n *\n * In TypeScript is this dynamically generated to reference all possible types\n * of series options.\n *\n * @ignore-declaration\n * @typedef {Highcharts.SeriesOptions|Highcharts.Dictionary<*>} Highcharts.SeriesOptionsType\n */\n /**\n * Options for `dataSorting`.\n *\n * @interface Highcharts.DataSortingOptionsObject\n * @since 8.0.0\n */ /**\n * Enable or disable data sorting for the series.\n * @name Highcharts.DataSortingOptionsObject#enabled\n * @type {boolean|undefined}\n */ /**\n * Whether to allow matching points by name in an update.\n * @name Highcharts.DataSortingOptionsObject#matchByName\n * @type {boolean|undefined}\n */ /**\n * Determines what data value should be used to sort by.\n * @name Highcharts.DataSortingOptionsObject#sortKey\n * @type {string|undefined}\n */\n /**\n * Function callback when a series has been animated.\n *\n * @callback Highcharts.SeriesAfterAnimateCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesAfterAnimateEventObject} event\n * Event arguments.\n */\n /**\n * Event information regarding completed animation of a series.\n *\n * @interface Highcharts.SeriesAfterAnimateEventObject\n */ /**\n * Animated series.\n * @name Highcharts.SeriesAfterAnimateEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesAfterAnimateEventObject#type\n * @type {\"afterAnimate\"}\n */\n /**\n * Function callback when the checkbox next to the series' name in the legend is\n * clicked.\n *\n * @callback Highcharts.SeriesCheckboxClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesCheckboxClickEventObject} event\n * Event arguments.\n */\n /**\n * Event information regarding check of a series box.\n *\n * @interface Highcharts.SeriesCheckboxClickEventObject\n */ /**\n * Whether the box has been checked.\n * @name Highcharts.SeriesCheckboxClickEventObject#checked\n * @type {boolean}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#item\n * @type {Highcharts.Series}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesCheckboxClickEventObject#type\n * @type {\"checkboxClick\"}\n */\n /**\n * Function callback when a series is clicked. Return false to cancel toogle\n * actions.\n *\n * @callback Highcharts.SeriesClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesClickEventObject} event\n * Event arguments.\n */\n /**\n * Common information for a click event on a series.\n *\n * @interface Highcharts.SeriesClickEventObject\n * @extends global.Event\n */ /**\n * Nearest point on the graph.\n * @name Highcharts.SeriesClickEventObject#point\n * @type {Highcharts.Point}\n */\n /**\n * Gets fired when the series is hidden after chart generation time, either by\n * clicking the legend item or by calling `.hide()`.\n *\n * @callback Highcharts.SeriesHideCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {global.Event} event\n * The event that occured.\n */\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin` of a line\n * graph.\n *\n * @typedef {\"butt\"|\"round\"|\"square\"|string} Highcharts.SeriesLinecapValue\n */\n /**\n * Gets fired when the legend item belonging to the series is clicked. The\n * default action is to toggle the visibility of the series. This can be\n * prevented by returning `false` or calling `event.preventDefault()`.\n *\n * @callback Highcharts.SeriesLegendItemClickCallbackFunction\n *\n * @param {Highcharts.Series} this\n * The series where the event occured.\n *\n * @param {Highcharts.SeriesLegendItemClickEventObject} event\n * The event that occured.\n */\n /**\n * Information about the event.\n *\n * @interface Highcharts.SeriesLegendItemClickEventObject\n */ /**\n * Related browser event.\n * @name Highcharts.SeriesLegendItemClickEventObject#browserEvent\n * @type {global.PointerEvent}\n */ /**\n * Prevent the default action of toggle the visibility of the series.\n * @name Highcharts.SeriesLegendItemClickEventObject#preventDefault\n * @type {Function}\n */ /**\n * Related series.\n * @name Highcharts.SeriesCheckboxClickEventObject#target\n * @type {Highcharts.Series}\n */ /**\n * Event type.\n * @name Highcharts.SeriesCheckboxClickEventObject#type\n * @type {\"checkboxClick\"}\n */\n /**\n * Gets fired when the mouse leaves the graph.\n *\n * @callback Highcharts.SeriesMouseOutCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Gets fired when the mouse enters the graph.\n *\n * @callback Highcharts.SeriesMouseOverCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.PointerEvent} event\n * Event that occured.\n */\n /**\n * Translation and scale for the plot area of a series.\n *\n * @interface Highcharts.SeriesPlotBoxObject\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#scaleX\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#scaleY\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#translateX\n * @type {number}\n */ /**\n * @name Highcharts.SeriesPlotBoxObject#translateY\n * @type {number}\n */\n /**\n * Gets fired when the series is shown after chart generation time, either by\n * clicking the legend item or by calling `.show()`.\n *\n * @callback Highcharts.SeriesShowCallbackFunction\n *\n * @param {Highcharts.Series} this\n * Series where the event occured.\n *\n * @param {global.Event} event\n * Event that occured.\n */\n /**\n * Possible key values for the series state options.\n *\n * @typedef {\"hover\"|\"inactive\"|\"normal\"|\"select\"} Highcharts.SeriesStateValue\n */\n ''; // detach doclets above\n /* *\n *\n * API Options\n *\n * */\n /**\n * Series options for specific data and the data itself. In TypeScript you\n * have to cast the series options to specific series types, to get all\n * possible options for a series.\n *\n * @example\n * // TypeScript example\n * Highcharts.chart('container', {\n * series: [{\n * color: '#06C',\n * data: [[0, 1], [2, 3]]\n * } as Highcharts.SeriesLineOptions ]\n * });\n *\n * @type {Array<*>}\n * @apioption series\n */\n /**\n * An id for the series. This can be used after render time to get a pointer\n * to the series object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-id/\n * Get series by id\n *\n * @type {string}\n * @since 1.2.0\n * @apioption series.id\n */\n /**\n * The index of the series in the chart, affecting the internal index in the\n * `chart.series` array, the visible Z index as well as the order in the\n * legend.\n *\n * @type {number}\n * @since 2.3.0\n * @apioption series.index\n */\n /**\n * The sequential index of the series in the legend.\n *\n * @see [legend.reversed](#legend.reversed),\n * [yAxis.reversedStacks](#yAxis.reversedStacks)\n *\n * @sample {highcharts|highstock} highcharts/series/legendindex/\n * Legend in opposite order\n *\n * @type {number}\n * @apioption series.legendIndex\n */\n /**\n * The name of the series as shown in the legend, tooltip etc.\n *\n * @sample {highcharts} highcharts/series/name/\n * Series name\n * @sample {highmaps} maps/demo/category-map/\n * Series name\n *\n * @type {string}\n * @apioption series.name\n */\n /**\n * This option allows grouping series in a stacked chart. The stack option\n * can be a string or anything else, as long as the grouped series' stack\n * options match each other after conversion into a string.\n *\n * @sample {highcharts} highcharts/series/stack/\n * Stacked and grouped columns\n *\n * @type {number|string}\n * @since 2.1\n * @product highcharts highstock\n * @apioption series.stack\n */\n /**\n * The type of series, for example `line` or `column`. By default, the\n * series type is inherited from [chart.type](#chart.type), so unless the\n * chart is a combination of series types, there is no need to set it on the\n * series level.\n *\n * @sample {highcharts} highcharts/series/type/\n * Line and column in the same chart\n * @sample highcharts/series/type-dynamic/\n * Dynamic types with button selector\n * @sample {highmaps} maps/demo/mapline-mappoint/\n * Multiple types in the same map\n *\n * @type {string}\n * @apioption series.type\n */\n /**\n * When using dual or multiple x axes, this number defines which xAxis the\n * particular series is connected to. It refers to either the\n * {@link #xAxis.id|axis id}\n * or the index of the axis in the xAxis array, with 0 being the first.\n *\n * @type {number|string}\n * @default 0\n * @product highcharts highstock\n * @apioption series.xAxis\n */\n /**\n * When using dual or multiple y axes, this number defines which yAxis the\n * particular series is connected to. It refers to either the\n * {@link #yAxis.id|axis id}\n * or the index of the axis in the yAxis array, with 0 being the first.\n *\n * @sample {highcharts} highcharts/series/yaxis/\n * Apply the column series to the secondary Y axis\n *\n * @type {number|string}\n * @default 0\n * @product highcharts highstock\n * @apioption series.yAxis\n */\n /**\n * Define the visual z index of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-zindex-default/\n * With no z index, the series defined last are on top\n * @sample {highcharts} highcharts/plotoptions/series-zindex/\n * With a z index, the series with the highest z index is on top\n * @sample {highstock} highcharts/plotoptions/series-zindex-default/\n * With no z index, the series defined last are on top\n * @sample {highstock} highcharts/plotoptions/series-zindex/\n * With a z index, the series with the highest z index is on top\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.zIndex\n */\n ''; // include precedent doclets in transpilat\n\n return Series;\n });\n _registerModule(_modules, 'Extensions/ScrollablePlotArea.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Series/Series.js'], _modules['Core/Renderer/RendererRegistry.js'], _modules['Core/Utilities.js']], function (A, Axis, Chart, Series, RendererRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * Highcharts feature to make the Y axis stay fixed when scrolling the chart\n * horizontally on mobile devices. Supports left and right side axes.\n */\n /*\n WIP on vertical scrollable plot area (#9378). To do:\n - Bottom axis positioning\n - Test with Gantt\n - Look for size optimizing the code\n - API and demos\n */\n var stop = A.stop;\n var addEvent = U.addEvent,\n createElement = U.createElement,\n defined = U.defined,\n merge = U.merge,\n pick = U.pick;\n /* eslint-disable no-invalid-this, valid-jsdoc */\n addEvent(Chart, 'afterSetChartSize', function (e) {\n var scrollablePlotArea = this.options.chart.scrollablePlotArea,\n scrollableMinWidth = scrollablePlotArea && scrollablePlotArea.minWidth,\n scrollableMinHeight = scrollablePlotArea && scrollablePlotArea.minHeight,\n scrollablePixelsX,\n scrollablePixelsY,\n corrections;\n if (!this.renderer.forExport) {\n // The amount of pixels to scroll, the difference between chart\n // width and scrollable width\n if (scrollableMinWidth) {\n this.scrollablePixelsX = scrollablePixelsX = Math.max(0, scrollableMinWidth - this.chartWidth);\n if (scrollablePixelsX) {\n this.scrollablePlotBox = (this.renderer.scrollablePlotBox = merge(this.plotBox));\n this.plotBox.width = this.plotWidth += scrollablePixelsX;\n if (this.inverted) {\n this.clipBox.height += scrollablePixelsX;\n }\n else {\n this.clipBox.width += scrollablePixelsX;\n }\n corrections = {\n // Corrections for right side\n 1: { name: 'right', value: scrollablePixelsX }\n };\n }\n // Currently we can only do either X or Y\n }\n else if (scrollableMinHeight) {\n this.scrollablePixelsY = scrollablePixelsY = Math.max(0, scrollableMinHeight - this.chartHeight);\n if (defined(scrollablePixelsY)) {\n this.scrollablePlotBox = (this.renderer.scrollablePlotBox = merge(this.plotBox));\n this.plotBox.height = this.plotHeight += scrollablePixelsY;\n if (this.inverted) {\n this.clipBox.width += scrollablePixelsY;\n }\n else {\n this.clipBox.height += scrollablePixelsY;\n }\n corrections = {\n 2: { name: 'bottom', value: scrollablePixelsY }\n };\n }\n }\n if (corrections && !e.skipAxes) {\n this.axes.forEach(function (axis) {\n // For right and bottom axes, only fix the plot line length\n if (corrections[axis.side]) {\n // Get the plot lines right in getPlotLinePath,\n // temporarily set it to the adjusted plot width.\n axis.getPlotLinePath = function () {\n var marginName = corrections[axis.side].name,\n correctionValue = corrections[axis.side].value, \n // axis.right or axis.bottom\n margin = this[marginName],\n path;\n // Temporarily adjust\n this[marginName] = margin - correctionValue;\n path = Axis.prototype.getPlotLinePath.apply(this, arguments);\n // Reset\n this[marginName] = margin;\n return path;\n };\n }\n else {\n // Apply the corrected plotWidth\n axis.setAxisSize();\n axis.setAxisTranslation();\n }\n });\n }\n }\n });\n addEvent(Chart, 'render', function () {\n if (this.scrollablePixelsX || this.scrollablePixelsY) {\n if (this.setUpScrolling) {\n this.setUpScrolling();\n }\n this.applyFixed();\n }\n else if (this.fixedDiv) { // Has been in scrollable mode\n this.applyFixed();\n }\n });\n /**\n * @private\n * @function Highcharts.Chart#setUpScrolling\n * @return {void}\n */\n Chart.prototype.setUpScrolling = function () {\n var _this = this;\n var css = {\n WebkitOverflowScrolling: 'touch',\n overflowX: 'hidden',\n overflowY: 'hidden'\n };\n if (this.scrollablePixelsX) {\n css.overflowX = 'auto';\n }\n if (this.scrollablePixelsY) {\n css.overflowY = 'auto';\n }\n // Insert a container with position relative\n // that scrolling and fixed container renders to (#10555)\n this.scrollingParent = createElement('div', {\n className: 'highcharts-scrolling-parent'\n }, {\n position: 'relative'\n }, this.renderTo);\n // Add the necessary divs to provide scrolling\n this.scrollingContainer = createElement('div', {\n 'className': 'highcharts-scrolling'\n }, css, this.scrollingParent);\n // On scroll, reset the chart position because it applies to the scrolled\n // container\n var lastHoverPoint;\n addEvent(this.scrollingContainer, 'scroll', function () {\n if (_this.pointer) {\n delete _this.pointer.chartPosition;\n if (_this.hoverPoint) {\n lastHoverPoint = _this.hoverPoint;\n }\n _this.pointer.runPointActions(void 0, lastHoverPoint, true);\n }\n });\n this.innerContainer = createElement('div', {\n 'className': 'highcharts-inner-container'\n }, null, this.scrollingContainer);\n // Now move the container inside\n this.innerContainer.appendChild(this.container);\n // Don't run again\n this.setUpScrolling = null;\n };\n /**\n * These elements are moved over to the fixed renderer and stay fixed when the\n * user scrolls the chart\n * @private\n */\n Chart.prototype.moveFixedElements = function () {\n var container = this.container,\n fixedRenderer = this.fixedRenderer,\n fixedSelectors = [\n '.highcharts-breadcrumbs-group',\n '.highcharts-contextbutton',\n '.highcharts-credits',\n '.highcharts-legend',\n '.highcharts-legend-checkbox',\n '.highcharts-navigator-series',\n '.highcharts-navigator-xaxis',\n '.highcharts-navigator-yaxis',\n '.highcharts-navigator',\n '.highcharts-reset-zoom',\n '.highcharts-drillup-button',\n '.highcharts-scrollbar',\n '.highcharts-subtitle',\n '.highcharts-title'\n ],\n axisClass;\n if (this.scrollablePixelsX && !this.inverted) {\n axisClass = '.highcharts-yaxis';\n }\n else if (this.scrollablePixelsX && this.inverted) {\n axisClass = '.highcharts-xaxis';\n }\n else if (this.scrollablePixelsY && !this.inverted) {\n axisClass = '.highcharts-xaxis';\n }\n else if (this.scrollablePixelsY && this.inverted) {\n axisClass = '.highcharts-yaxis';\n }\n if (axisClass) {\n fixedSelectors.push(\"\" + axisClass + \":not(.highcharts-radial-axis)\", \"\" + axisClass + \"-labels:not(.highcharts-radial-axis-labels)\");\n }\n fixedSelectors.forEach(function (className) {\n [].forEach.call(container.querySelectorAll(className), function (elem) {\n (elem.namespaceURI === fixedRenderer.SVG_NS ?\n fixedRenderer.box :\n fixedRenderer.box.parentNode).appendChild(elem);\n elem.style.pointerEvents = 'auto';\n });\n });\n };\n /**\n * @private\n * @function Highcharts.Chart#applyFixed\n * @return {void}\n */\n Chart.prototype.applyFixed = function () {\n var firstTime = !this.fixedDiv,\n chartOptions = this.options.chart,\n scrollableOptions = chartOptions.scrollablePlotArea,\n Renderer = RendererRegistry.getRendererType();\n var fixedRenderer,\n scrollableWidth,\n scrollableHeight;\n // First render\n if (firstTime) {\n this.fixedDiv = createElement('div', {\n className: 'highcharts-fixed'\n }, {\n position: 'absolute',\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: (chartOptions.style && chartOptions.style.zIndex || 0) + 2,\n top: 0\n }, null, true);\n if (this.scrollingContainer) {\n this.scrollingContainer.parentNode.insertBefore(this.fixedDiv, this.scrollingContainer);\n }\n this.renderTo.style.overflow = 'visible';\n this.fixedRenderer = fixedRenderer = new Renderer(this.fixedDiv, this.chartWidth, this.chartHeight, this.options.chart.style);\n // Mask\n this.scrollableMask = fixedRenderer\n .path()\n .attr({\n fill: this.options.chart.backgroundColor || '#fff',\n 'fill-opacity': pick(scrollableOptions.opacity, 0.85),\n zIndex: -1\n })\n .addClass('highcharts-scrollable-mask')\n .add();\n addEvent(this, 'afterShowResetZoom', this.moveFixedElements);\n addEvent(this, 'afterApplyDrilldown', this.moveFixedElements);\n addEvent(this, 'afterLayOutTitles', this.moveFixedElements);\n }\n else {\n // Set the size of the fixed renderer to the visible width\n this.fixedRenderer.setSize(this.chartWidth, this.chartHeight);\n }\n if (this.scrollableDirty || firstTime) {\n this.scrollableDirty = false;\n this.moveFixedElements();\n }\n // Increase the size of the scrollable renderer and background\n scrollableWidth = this.chartWidth + (this.scrollablePixelsX || 0);\n scrollableHeight = this.chartHeight + (this.scrollablePixelsY || 0);\n stop(this.container);\n this.container.style.width = scrollableWidth + 'px';\n this.container.style.height = scrollableHeight + 'px';\n this.renderer.boxWrapper.attr({\n width: scrollableWidth,\n height: scrollableHeight,\n viewBox: [0, 0, scrollableWidth, scrollableHeight].join(' ')\n });\n this.chartBackground.attr({\n width: scrollableWidth,\n height: scrollableHeight\n });\n this.scrollingContainer.style.height = this.chartHeight + 'px';\n // Set scroll position\n if (firstTime) {\n if (scrollableOptions.scrollPositionX) {\n this.scrollingContainer.scrollLeft =\n this.scrollablePixelsX *\n scrollableOptions.scrollPositionX;\n }\n if (scrollableOptions.scrollPositionY) {\n this.scrollingContainer.scrollTop =\n this.scrollablePixelsY *\n scrollableOptions.scrollPositionY;\n }\n }\n // Mask behind the left and right side\n var axisOffset = this.axisOffset,\n maskTop = this.plotTop - axisOffset[0] - 1,\n maskLeft = this.plotLeft - axisOffset[3] - 1,\n maskBottom = this.plotTop + this.plotHeight + axisOffset[2] + 1,\n maskRight = this.plotLeft + this.plotWidth + axisOffset[1] + 1,\n maskPlotRight = this.plotLeft + this.plotWidth -\n (this.scrollablePixelsX || 0),\n maskPlotBottom = this.plotTop + this.plotHeight -\n (this.scrollablePixelsY || 0),\n d;\n if (this.scrollablePixelsX) {\n d = [\n // Left side\n ['M', 0, maskTop],\n ['L', this.plotLeft - 1, maskTop],\n ['L', this.plotLeft - 1, maskBottom],\n ['L', 0, maskBottom],\n ['Z'],\n // Right side\n ['M', maskPlotRight, maskTop],\n ['L', this.chartWidth, maskTop],\n ['L', this.chartWidth, maskBottom],\n ['L', maskPlotRight, maskBottom],\n ['Z']\n ];\n }\n else if (this.scrollablePixelsY) {\n d = [\n // Top side\n ['M', maskLeft, 0],\n ['L', maskLeft, this.plotTop - 1],\n ['L', maskRight, this.plotTop - 1],\n ['L', maskRight, 0],\n ['Z'],\n // Bottom side\n ['M', maskLeft, maskPlotBottom],\n ['L', maskLeft, this.chartHeight],\n ['L', maskRight, this.chartHeight],\n ['L', maskRight, maskPlotBottom],\n ['Z']\n ];\n }\n else {\n d = [['M', 0, 0]];\n }\n if (this.redrawTrigger !== 'adjustHeight') {\n this.scrollableMask.attr({ d: d });\n }\n };\n addEvent(Axis, 'afterInit', function () {\n this.chart.scrollableDirty = true;\n });\n addEvent(Series, 'show', function () {\n this.chart.scrollableDirty = true;\n });\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Options for a scrollable plot area. This feature provides a minimum size for\n * the plot area of the chart. If the size gets smaller than this, typically\n * on mobile devices, a native browser scrollbar is presented. This scrollbar\n * provides smooth scrolling for the contents of the plot area, whereas the\n * title, legend and unaffected axes are fixed.\n *\n * Since v7.1.2, a scrollable plot area can be defined for either horizontal or\n * vertical scrolling, depending on whether the `minWidth` or `minHeight`\n * option is set.\n *\n * @sample highcharts/chart/scrollable-plotarea\n * Scrollable plot area\n * @sample highcharts/chart/scrollable-plotarea-vertical\n * Vertically scrollable plot area\n * @sample {gantt} gantt/chart/scrollable-plotarea-vertical\n * Gantt chart with vertically scrollable plot area\n *\n * @since 6.1.0\n * @product highcharts gantt\n * @apioption chart.scrollablePlotArea\n */\n /**\n * The minimum height for the plot area. If it gets smaller than this, the plot\n * area will become scrollable.\n *\n * @type {number}\n * @since 7.1.2\n * @apioption chart.scrollablePlotArea.minHeight\n */\n /**\n * The minimum width for the plot area. If it gets smaller than this, the plot\n * area will become scrollable.\n *\n * @type {number}\n * @since 6.1.0\n * @apioption chart.scrollablePlotArea.minWidth\n */\n /**\n * The initial scrolling position of the scrollable plot area. Ranges from 0 to\n * 1, where 0 aligns the plot area to the left and 1 aligns it to the right.\n * Typically we would use 1 if the chart has right aligned Y axes.\n *\n * @type {number}\n * @since 6.1.0\n * @apioption chart.scrollablePlotArea.scrollPositionX\n */\n /**\n * The initial scrolling position of the scrollable plot area. Ranges from 0 to\n * 1, where 0 aligns the plot area to the top and 1 aligns it to the bottom.\n *\n * @type {number}\n * @since 7.1.2\n * @apioption chart.scrollablePlotArea.scrollPositionY\n */\n /**\n * The opacity of mask applied on one of the sides of the plot\n * area.\n *\n * @sample {highcharts} highcharts/chart/scrollable-plotarea-opacity\n * Disabled opacity for the mask\n *\n * @type {number}\n * @default 0.85\n * @since 7.1.1\n * @apioption chart.scrollablePlotArea.opacity\n */\n (''); // keep doclets above in transpiled file\n\n });\n _registerModule(_modules, 'Core/Axis/Stacking/StackItem.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (FU, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var format = FU.format;\n var Series = SeriesRegistry.series;\n var destroyObjectProperties = U.destroyObjectProperties,\n pick = U.pick,\n isNumber = U.isNumber;\n /* *\n *\n * Class\n *\n * */\n /**\n * The class for stacks. Each stack, on a specific X value and either negative\n * or positive, has its own stack item.\n * @private\n */\n var StackItem = /** @class */ (function () {\n /* *\n *\n * Constructor\n *\n * */\n function StackItem(axis, options, negativeValue, x, stackOption) {\n var inverted = axis.chart.inverted, reversed = axis.reversed;\n this.axis = axis;\n // The stack goes to the left either if the stack has negative value\n // or when axis is reversed. XOR operator.\n var isNegative = (this.isNegative = !!negativeValue !== !!reversed);\n // Save the options to be able to style the label\n this.options = options = options || {};\n // Save the x value to be able to position the label later\n this.x = x;\n // Initialize total value\n this.total = null;\n this.cumulative = null;\n // This will keep each points' extremes stored by series.index and point\n // index\n this.points = {};\n this.hasValidPoints = false;\n // Save the stack option on the series configuration object,\n // and whether to treat it as percent\n this.stack = stackOption;\n this.leftCliff = 0;\n this.rightCliff = 0;\n // The align options and text align varies on whether the stack is\n // negative and if the chart is inverted or not.\n // First test the user supplied value, then use the dynamic.\n this.alignOptions = {\n align: options.align ||\n (inverted ? (isNegative ? 'left' : 'right') : 'center'),\n verticalAlign: options.verticalAlign ||\n (inverted ? 'middle' : isNegative ? 'bottom' : 'top'),\n y: options.y,\n x: options.x\n };\n this.textAlign =\n options.textAlign ||\n (inverted ? (!isNegative ? 'left' : 'right') : 'center');\n }\n /**\n * @private\n */\n StackItem.prototype.destroy = function () {\n destroyObjectProperties(this, this.axis);\n };\n /**\n * Renders the stack total label and adds it to the stack label group.\n * @private\n */\n StackItem.prototype.render = function (group) {\n var chart = this.axis.chart,\n options = this.options,\n formatOption = options.format, \n // Format the text in the label.\n str = formatOption ?\n format(formatOption,\n this,\n chart) :\n options.formatter.call(this);\n // Change the text to reflect the new total and set visibility to hidden\n // in case the serie is hidden\n if (this.label) {\n this.label.attr({ text: str, visibility: 'hidden' });\n }\n else {\n // Create new label\n this.label = chart.renderer.label(str, null, void 0, options.shape, void 0, void 0, options.useHTML, false, 'stack-labels');\n var attr = {\n r: options.borderRadius || 0,\n text: str,\n // set default padding to 5 as it is in datalabels #12308\n padding: pick(options.padding, 5),\n visibility: 'hidden' // hidden until setOffset is called\n };\n if (!chart.styledMode) {\n attr.fill = options.backgroundColor;\n attr.stroke = options.borderColor;\n attr['stroke-width'] = options.borderWidth;\n this.label.css(options.style || {});\n }\n this.label.attr(attr);\n if (!this.label.added) {\n this.label.add(group); // add to the labels-group\n }\n }\n // Rank it higher than data labels (#8742)\n this.label.labelrank = chart.plotSizeY;\n };\n /**\n * Sets the offset that the stack has from the x value and repositions the\n * label.\n * @private\n */\n StackItem.prototype.setOffset = function (xOffset, xWidth, boxBottom, boxTop, defaultX, xAxis) {\n var _a = this,\n alignOptions = _a.alignOptions,\n axis = _a.axis,\n label = _a.label,\n options = _a.options,\n textAlign = _a.textAlign,\n chart = axis.chart,\n stackBox = this.getStackBox({\n xOffset: xOffset,\n width: xWidth,\n boxBottom: boxBottom,\n boxTop: boxTop,\n defaultX: defaultX,\n xAxis: xAxis\n }),\n verticalAlign = alignOptions.verticalAlign;\n if (label && stackBox) {\n var labelBox = label.getBBox(),\n padding = label.padding;\n var isJustify = pick(options.overflow, 'justify') === 'justify',\n visible = void 0;\n // Reset alignOptions property after justify #12337\n alignOptions.x = options.x || 0;\n alignOptions.y = options.y || 0;\n // Calculate the adjusted Stack position, to take into consideration\n // The size if the labelBox and vertical alignment as\n // well as the text alignment. It's need to be done to work with\n // default SVGLabel.align/justify methods.\n var _b = this.adjustStackPosition({\n labelBox: labelBox,\n verticalAlign: verticalAlign,\n textAlign: textAlign\n }),\n x = _b.x,\n y = _b.y;\n stackBox.x -= x;\n stackBox.y -= y;\n // Align the label to the adjusted box.\n label.align(alignOptions, false, stackBox);\n // Check if label is inside the plotArea #12294\n visible = chart.isInsidePlot(label.alignAttr.x + alignOptions.x + x, label.alignAttr.y + alignOptions.y + y);\n if (!visible) {\n isJustify = false;\n }\n if (isJustify) {\n // Justify stackLabel into the stackBox\n Series.prototype.justifyDataLabel.call(axis, label, alignOptions, label.alignAttr, labelBox, stackBox);\n }\n // Add attr to aviod the default animation of justifyDataLabel.\n // Also add correct rotation with its rotation origin. #15129\n label.attr({\n x: label.alignAttr.x,\n y: label.alignAttr.y,\n rotation: options.rotation,\n rotationOriginX: labelBox.width / 2,\n rotationOriginY: labelBox.height / 2\n });\n // Check if the dataLabel should be visible.\n if (pick(!isJustify && options.crop, true)) {\n visible =\n isNumber(label.x) &&\n isNumber(label.y) &&\n chart.isInsidePlot(label.x - padding + label.width, label.y) &&\n chart.isInsidePlot(label.x + padding, label.y);\n }\n label[visible ? 'show' : 'hide']();\n }\n };\n /**\n * Adjust the stack BBox position, to take into consideration the alignment\n * of the dataLabel. This is necessary to make the stackDataLabel work with\n * core methods like `SVGLabel.adjust` and `Series.justifyDataLabel`.\n * @param AdjustStackPositionProps\n * @return {{x: number, y: number}} Adjusted BBox position of the stack.\n */\n StackItem.prototype.adjustStackPosition = function (_a) {\n var labelBox = _a.labelBox,\n verticalAlign = _a.verticalAlign,\n textAlign = _a.textAlign;\n var factorMap = {\n bottom: 0,\n middle: 1,\n top: 2,\n right: 1,\n center: 0,\n left: -1\n },\n verticalAlignFactor = factorMap[verticalAlign],\n textAlignFactor = factorMap[textAlign];\n return {\n x: labelBox.width / 2 + (labelBox.width / 2) * textAlignFactor,\n y: (labelBox.height / 2) * verticalAlignFactor\n };\n };\n /**\n * Get the bbox of the stack.\n * @private\n * @function Highcharts.StackItem#getStackBox\n * @return {BBoxObject} The x, y, height, width of the stack.\n */\n StackItem.prototype.getStackBox = function (stackBoxProps) {\n var stackItem = this,\n axis = this.axis,\n chart = axis.chart,\n boxTop = stackBoxProps.boxTop,\n defaultX = stackBoxProps.defaultX,\n xOffset = stackBoxProps.xOffset,\n width = stackBoxProps.width,\n boxBottom = stackBoxProps.boxBottom,\n totalStackValue = axis.stacking.usePercentage ?\n 100 :\n pick(boxTop,\n this.total, 0),\n y = axis.toPixels(totalStackValue),\n xAxis = stackBoxProps.xAxis || chart.xAxis[0],\n x = pick(defaultX,\n xAxis.toPixels(this.x)) + xOffset,\n yZero = axis.toPixels(boxBottom ? boxBottom : 0),\n height = Math.abs(y - yZero),\n inverted = chart.inverted,\n neg = stackItem.isNegative;\n return inverted ?\n {\n x: (neg ? y : y - height) - chart.plotLeft,\n y: x - chart.plotTop,\n width: height,\n height: width\n } : {\n x: x - chart.plotLeft,\n y: (neg ? y - height : y) - chart.plotTop,\n width: width,\n height: height\n };\n };\n return StackItem;\n }());\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Stack of data points\n *\n * @product highcharts\n *\n * @interface Highcharts.StackItemObject\n */ /**\n * Alignment settings\n * @name Highcharts.StackItemObject#alignOptions\n * @type {Highcharts.AlignObject}\n */ /**\n * Related axis\n * @name Highcharts.StackItemObject#axis\n * @type {Highcharts.Axis}\n */ /**\n * Cumulative value of the stacked data points\n * @name Highcharts.StackItemObject#cumulative\n * @type {number}\n */ /**\n * True if on the negative side\n * @name Highcharts.StackItemObject#isNegative\n * @type {boolean}\n */ /**\n * Related SVG element\n * @name Highcharts.StackItemObject#label\n * @type {Highcharts.SVGElement}\n */ /**\n * Related stack options\n * @name Highcharts.StackItemObject#options\n * @type {Highcharts.YAxisStackLabelsOptions}\n */ /**\n * Total value of the stacked data points\n * @name Highcharts.StackItemObject#total\n * @type {number}\n */ /**\n * Shared x value of the stack\n * @name Highcharts.StackItemObject#x\n * @type {number}\n */\n ''; // keeps doclets above in JS file\n\n return StackItem;\n });\n _registerModule(_modules, 'Core/Axis/Stacking/StackingAxis.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Utilities.js']], function (A, Axis, SeriesRegistry, StackItem, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var getDeferredAnimation = A.getDeferredAnimation;\n var seriesProto = SeriesRegistry.series.prototype;\n var addEvent = U.addEvent,\n correctFloat = U.correctFloat,\n defined = U.defined,\n destroyObjectProperties = U.destroyObjectProperties,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Functions\n *\n * */\n /**\n * Generate stacks for each series and calculate stacks total values\n *\n * @private\n * @function Highcharts.Chart#getStacks\n */\n function chartGetStacks() {\n var chart = this,\n inverted = chart.inverted;\n // reset stacks for each yAxis\n chart.yAxis.forEach(function (axis) {\n if (axis.stacking && axis.stacking.stacks && axis.hasVisibleSeries) {\n axis.stacking.oldStacks = axis.stacking.stacks;\n }\n });\n chart.series.forEach(function (series) {\n var xAxisOptions = series.xAxis && series.xAxis.options || {};\n if (series.options.stacking &&\n (series.visible === true ||\n chart.options.chart.ignoreHiddenSeries === false)) {\n series.stackKey = [\n series.type,\n pick(series.options.stack, ''),\n inverted ? xAxisOptions.top : xAxisOptions.left,\n inverted ? xAxisOptions.height : xAxisOptions.width\n ].join(',');\n }\n });\n }\n /**\n * @private\n */\n function onAxisDestroy() {\n var stacking = this.stacking;\n if (!stacking) {\n return;\n }\n var stacks = stacking.stacks;\n // Destroy each stack total\n objectEach(stacks, function (stack, stackKey) {\n destroyObjectProperties(stack);\n stacks[stackKey] = null;\n });\n if (stacking &&\n stacking.stackTotalGroup) {\n stacking.stackTotalGroup.destroy();\n }\n }\n /**\n * @private\n */\n function onAxisInit() {\n if (this.coll === 'yAxis' && !this.stacking) {\n this.stacking = new AxisAdditions(this);\n }\n }\n /**\n * Get stack indicator, according to it's x-value, to determine points with the\n * same x-value\n *\n * @private\n * @function Highcharts.Series#getStackIndicator\n */\n function seriesGetStackIndicator(stackIndicator, x, index, key) {\n // Update stack indicator, when:\n // first point in a stack || x changed || stack type (negative vs positive)\n // changed:\n if (!defined(stackIndicator) ||\n stackIndicator.x !== x ||\n (key && stackIndicator.stackKey !== key)) {\n stackIndicator = {\n x: x,\n index: 0,\n key: key,\n stackKey: key\n };\n }\n else {\n (stackIndicator).index++;\n }\n stackIndicator.key =\n [index, x, stackIndicator.index].join(',');\n return stackIndicator;\n }\n /**\n * Iterate over all stacks and compute the absolute values to percent\n *\n * @private\n * @function Highcharts.Series#modifyStacks\n */\n function seriesModifyStacks() {\n var series = this,\n yAxis = series.yAxis,\n stackKey = series.stackKey,\n stacks = yAxis.stacking.stacks,\n processedXData = series.processedXData,\n stacking = series.options.stacking,\n stacker = series[stacking + 'Stacker'];\n var stackIndicator;\n if (stacker) { // Modifier function exists (Series.percentStacker etc.)\n [stackKey, '-' + stackKey].forEach(function (key) {\n var i = processedXData.length,\n x,\n stack,\n pointExtremes;\n while (i--) {\n x = processedXData[i];\n stackIndicator = series.getStackIndicator(stackIndicator, x, series.index, key);\n stack = stacks[key] && stacks[key][x];\n pointExtremes =\n stack && stack.points[stackIndicator.key];\n if (pointExtremes) {\n stacker.call(series, pointExtremes, stack, i);\n }\n }\n });\n }\n }\n /**\n * Modifier function for percent stacks. Blows up the stack to 100%.\n *\n * @private\n * @function Highcharts.Series#percentStacker\n */\n function seriesPercentStacker(pointExtremes, stack, i) {\n var totalFactor = stack.total ? 100 / stack.total : 0;\n // Y bottom value\n pointExtremes[0] = correctFloat(pointExtremes[0] * totalFactor);\n // Y value\n pointExtremes[1] = correctFloat(pointExtremes[1] * totalFactor);\n this.stackedYData[i] = pointExtremes[1];\n }\n /**\n * Set grouped points in a stack-like object. When `centerInCategory` is true,\n * and `stacking` is not enabled, we need a pseudo (horizontal) stack in order\n * to handle grouping of points within the same category.\n *\n * @private\n * @function Highcharts.Series#setStackedPoints\n * @return {void}\n */\n function seriesSetGroupedPoints() {\n var stacking = this.yAxis.stacking;\n if (this.options.centerInCategory &&\n (this.is('column') || this.is('columnrange')) &&\n // With stacking enabled, we already have stacks that we can compute\n // from\n !this.options.stacking &&\n // With only one series, we don't need to consider centerInCategory\n this.chart.series.length > 1) {\n seriesProto.setStackedPoints.call(this, 'group');\n // After updating, if we now have proper stacks, we must delete the group\n // pseudo stacks (#14986)\n }\n else if (stacking) {\n objectEach(stacking.stacks, function (type, key) {\n if (key.slice(-5) === 'group') {\n objectEach(type, function (stack) { return stack.destroy(); });\n delete stacking.stacks[key];\n }\n });\n }\n }\n /**\n * Adds series' points value to corresponding stack\n *\n * @private\n * @function Highcharts.Series#setStackedPoints\n */\n function seriesSetStackedPoints(stackingParam) {\n var chart = this.chart,\n stacking = stackingParam || this.options.stacking;\n if (!stacking || (this.visible !== true &&\n chart.options.chart.ignoreHiddenSeries !== false)) {\n return;\n }\n var series = this, xData = series.processedXData, yData = series.processedYData, stackedYData = [], yDataLength = yData.length, seriesOptions = series.options, threshold = seriesOptions.threshold, stackThreshold = pick(seriesOptions.startFromThreshold && threshold, 0), stackOption = seriesOptions.stack, stackKey = stackingParam ? \"\" + series.type + \",\".concat(stacking) : series.stackKey, negKey = '-' + stackKey, negStacks = series.negStacks, yAxis = stacking === 'group' ?\n chart.yAxis[0] :\n series.yAxis, stacks = yAxis.stacking.stacks, oldStacks = yAxis.stacking.oldStacks;\n var stackIndicator,\n isNegative,\n stack,\n other,\n key,\n pointKey,\n i,\n x,\n y;\n yAxis.stacking.stacksTouched += 1;\n // loop over the non-null y values and read them into a local array\n for (i = 0; i < yDataLength; i++) {\n x = xData[i];\n y = yData[i];\n stackIndicator = series.getStackIndicator(stackIndicator, x, series.index);\n pointKey = stackIndicator.key;\n // Read stacked values into a stack based on the x value,\n // the sign of y and the stack key. Stacking is also handled for null\n // values (#739)\n isNegative = negStacks && y < (stackThreshold ? 0 : threshold);\n key = isNegative ? negKey : stackKey;\n // Create empty object for this stack if it doesn't exist yet\n if (!stacks[key]) {\n stacks[key] = {};\n }\n // Initialize StackItem for this x\n if (!stacks[key][x]) {\n if (oldStacks[key] &&\n oldStacks[key][x]) {\n stacks[key][x] = oldStacks[key][x];\n stacks[key][x].total = null;\n }\n else {\n stacks[key][x] = new StackItem(yAxis, yAxis.options.stackLabels, !!isNegative, x, stackOption);\n }\n }\n // If the StackItem doesn't exist, create it first\n stack = stacks[key][x];\n if (y !== null) {\n stack.points[pointKey] = stack.points[series.index] =\n [pick(stack.cumulative, stackThreshold)];\n // Record the base of the stack\n if (!defined(stack.cumulative)) {\n stack.base = pointKey;\n }\n stack.touched = yAxis.stacking.stacksTouched;\n // In area charts, if there are multiple points on the same X value,\n // let the area fill the full span of those points\n if (stackIndicator.index > 0 && series.singleStacks === false) {\n stack.points[pointKey][0] =\n stack.points[series.index + ',' + x + ',0'][0];\n }\n // When updating to null, reset the point stack (#7493)\n }\n else {\n stack.points[pointKey] = stack.points[series.index] =\n null;\n }\n // Add value to the stack total\n if (stacking === 'percent') {\n // Percent stacked column, totals are the same for the positive and\n // negative stacks\n other = isNegative ? stackKey : negKey;\n if (negStacks && stacks[other] && stacks[other][x]) {\n other = stacks[other][x];\n stack.total = other.total =\n Math.max(other.total, stack.total) +\n Math.abs(y) ||\n 0;\n // Percent stacked areas\n }\n else {\n stack.total =\n correctFloat(stack.total + (Math.abs(y) || 0));\n }\n }\n else if (stacking === 'group') {\n if (isArray(y)) {\n y = y[0];\n }\n // In this stack, the total is the number of valid points\n if (y !== null) {\n stack.total = (stack.total || 0) + 1;\n }\n }\n else {\n stack.total = correctFloat(stack.total + (y || 0));\n }\n if (stacking === 'group') {\n // This point's index within the stack, pushed to stack.points[1]\n stack.cumulative = (stack.total || 1) - 1;\n }\n else {\n stack.cumulative =\n pick(stack.cumulative, stackThreshold) + (y || 0);\n }\n if (y !== null) {\n stack.points[pointKey].push(stack.cumulative);\n stackedYData[i] = stack.cumulative;\n stack.hasValidPoints = true;\n }\n }\n if (stacking === 'percent') {\n yAxis.stacking.usePercentage = true;\n }\n if (stacking !== 'group') {\n this.stackedYData = stackedYData; // To be used in getExtremes\n }\n // Reset old stacks\n yAxis.stacking.oldStacks = {};\n }\n /* *\n *\n * Classes\n *\n * */\n /**\n * Adds stacking support to axes.\n * @private\n * @class\n */\n var AxisAdditions = /** @class */ (function () {\n /* *\n *\n * Constructors\n *\n * */\n function AxisAdditions(axis) {\n this.oldStacks = {};\n this.stacks = {};\n this.stacksTouched = 0;\n this.axis = axis;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Build the stacks from top down\n * @private\n */\n AxisAdditions.prototype.buildStacks = function () {\n var stacking = this;\n var axis = stacking.axis;\n var axisSeries = axis.series;\n var reversedStacks = axis.options.reversedStacks;\n var len = axisSeries.length;\n var actualSeries,\n i;\n stacking.usePercentage = false;\n i = len;\n while (i--) {\n actualSeries = axisSeries[reversedStacks ? i : len - i - 1];\n actualSeries.setStackedPoints();\n actualSeries.setGroupedPoints();\n }\n // Loop up again to compute percent and stream stack\n for (i = 0; i < len; i++) {\n axisSeries[i].modifyStacks();\n }\n fireEvent(axis, 'afterBuildStacks');\n };\n /**\n * @private\n */\n AxisAdditions.prototype.cleanStacks = function () {\n var stacking = this;\n var stacks;\n if (stacking.oldStacks) {\n stacks = stacking.stacks = stacking.oldStacks;\n }\n // reset stacks\n objectEach(stacks, function (type) {\n objectEach(type, function (stack) {\n stack.cumulative = stack.total;\n });\n });\n };\n /**\n * Set all the stacks to initial states and destroy unused ones.\n * @private\n */\n AxisAdditions.prototype.resetStacks = function () {\n var _this = this;\n objectEach(this.stacks, function (type) {\n objectEach(type, function (stack, x) {\n // Clean up memory after point deletion (#1044, #4320)\n if (isNumber(stack.touched) &&\n stack.touched < _this.stacksTouched) {\n stack.destroy();\n delete type[x];\n // Reset stacks\n }\n else {\n stack.total = null;\n stack.cumulative = null;\n }\n });\n });\n };\n /**\n * @private\n */\n AxisAdditions.prototype.renderStackTotals = function () {\n var stacking = this,\n axis = stacking.axis,\n chart = axis.chart,\n renderer = chart.renderer,\n stacks = stacking.stacks,\n stackLabelsAnim = axis.options.stackLabels &&\n axis.options.stackLabels.animation,\n animationConfig = getDeferredAnimation(chart,\n stackLabelsAnim || false),\n stackTotalGroup = stacking.stackTotalGroup = (stacking.stackTotalGroup ||\n renderer\n .g('stack-labels')\n .attr({\n zIndex: 6,\n opacity: 0\n })\n .add());\n // plotLeft/Top will change when y axis gets wider so we need to\n // translate the stackTotalGroup at every render call. See bug #506\n // and #516\n stackTotalGroup.translate(chart.plotLeft, chart.plotTop);\n // Render each stack total\n objectEach(stacks, function (type) {\n objectEach(type, function (stack) {\n stack.render(stackTotalGroup);\n });\n });\n stackTotalGroup.animate({\n opacity: 1\n }, animationConfig);\n };\n return AxisAdditions;\n }());\n /* *\n *\n * Composition\n *\n * */\n var StackingAxis;\n (function (StackingAxis) {\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /**\n * Extends axis with stacking support.\n * @private\n */\n function compose(AxisClass, ChartClass, SeriesClass) {\n if (composedClasses.indexOf(AxisClass) === -1) {\n composedClasses.push(AxisClass);\n addEvent(AxisClass, 'init', onAxisInit);\n addEvent(AxisClass, 'destroy', onAxisDestroy);\n }\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n var chartProto = ChartClass.prototype;\n chartProto.getStacks = chartGetStacks;\n }\n if (composedClasses.indexOf(SeriesClass) === -1) {\n composedClasses.push(SeriesClass);\n var seriesProto_1 = SeriesClass.prototype;\n seriesProto_1.getStackIndicator = seriesGetStackIndicator;\n seriesProto_1.modifyStacks = seriesModifyStacks;\n seriesProto_1.percentStacker = seriesPercentStacker;\n seriesProto_1.setGroupedPoints = seriesSetGroupedPoints;\n seriesProto_1.setStackedPoints = seriesSetStackedPoints;\n }\n }\n StackingAxis.compose = compose;\n })(StackingAxis || (StackingAxis = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return StackingAxis;\n });\n _registerModule(_modules, 'Series/Line/LineSeries.js', [_modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Series, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var defined = U.defined,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * The line series is the base type and is therefor the series base prototype.\n *\n * @private\n */\n var LineSeries = /** @class */ (function (_super) {\n __extends(LineSeries, _super);\n function LineSeries() {\n /* *\n *\n * Static Functions\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Draw the graph. Called internally when rendering line-like series\n * types. The first time it generates the `series.graph` item and\n * optionally other series-wide items like `series.area` for area\n * charts. On subsequent calls these items are updated with new\n * positions and attributes.\n *\n * @function Highcharts.Series#drawGraph\n */\n LineSeries.prototype.drawGraph = function () {\n var series = this,\n options = this.options,\n graphPath = (this.gappedPath || this.getGraphPath).call(this),\n styledMode = this.chart.styledMode;\n var props = [[\n 'graph',\n 'highcharts-graph'\n ]];\n // Presentational properties\n if (!styledMode) {\n props[0].push((options.lineColor ||\n this.color ||\n \"#cccccc\" /* Palette.neutralColor20 */ // when colorByPoint = true\n ), options.dashStyle);\n }\n props = series.getZonesGraphs(props);\n // Draw the graph\n props.forEach(function (prop, i) {\n var graphKey = prop[0];\n var attribs,\n graph = series[graphKey];\n var verb = graph ? 'animate' : 'attr';\n if (graph) {\n graph.endX = series.preventGraphAnimation ?\n null :\n graphPath.xMap;\n graph.animate({ d: graphPath });\n }\n else if (graphPath.length) { // #1487\n /**\n * SVG element of area-based charts. Can be used for styling\n * purposes. If zones are configured, this element will be\n * hidden and replaced by multiple zone areas, accessible\n * via `series['zone-area-x']` (where x is a number,\n * starting with 0).\n *\n * @name Highcharts.Series#area\n * @type {Highcharts.SVGElement|undefined}\n */\n /**\n * SVG element of line-based charts. Can be used for styling\n * purposes. If zones are configured, this element will be\n * hidden and replaced by multiple zone lines, accessible\n * via `series['zone-graph-x']` (where x is a number,\n * starting with 0).\n *\n * @name Highcharts.Series#graph\n * @type {Highcharts.SVGElement|undefined}\n */\n series[graphKey] = graph = series.chart.renderer\n .path(graphPath)\n .addClass(prop[1])\n .attr({ zIndex: 1 }) // #1069\n .add(series.group);\n }\n if (graph && !styledMode) {\n attribs = {\n 'stroke': prop[2],\n 'stroke-width': options.lineWidth || 0,\n // Polygon series use filled graph\n 'fill': (series.fillGraph && series.color) || 'none'\n };\n // Apply dash style\n if (prop[3]) {\n attribs.dashstyle = prop[3];\n // The reason for the `else if` is that linecaps don't mix well\n // with dashstyle. The gaps get partially filled by the\n // linecap.\n }\n else if (options.linecap !== 'square') {\n attribs['stroke-linecap'] =\n attribs['stroke-linejoin'] = 'round';\n }\n graph[verb](attribs)\n // Add shadow to normal series (0) or to first\n // zone (1) #3932\n .shadow((i < 2) && options.shadow);\n }\n // Helpers for animation\n if (graph) {\n graph.startX = graphPath.xMap;\n graph.isArea = graphPath.isArea; // For arearange animation\n }\n });\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get the graph path.\n *\n * @private\n */\n LineSeries.prototype.getGraphPath = function (points, nullsAsZeroes, connectCliffs) {\n var series = this,\n options = series.options,\n graphPath = [],\n xMap = [];\n var gap,\n step = options.step;\n points = points || series.points;\n // Bottom of a stack is reversed\n var reversed = points.reversed;\n if (reversed) {\n points.reverse();\n }\n // Reverse the steps (#5004)\n step = {\n right: 1,\n center: 2\n }[step] || (step && 3);\n if (step && reversed) {\n step = 4 - step;\n }\n // Remove invalid points, especially in spline (#5015)\n points = this.getValidPoints(points, false, !(options.connectNulls && !nullsAsZeroes && !connectCliffs));\n // Build the line\n points.forEach(function (point, i) {\n var plotX = point.plotX,\n plotY = point.plotY,\n lastPoint = points[i - 1];\n // the path to this point from the previous\n var pathToPoint;\n if ((point.leftCliff || (lastPoint && lastPoint.rightCliff)) &&\n !connectCliffs) {\n gap = true; // ... and continue\n }\n // Line series, nullsAsZeroes is not handled\n if (point.isNull && !defined(nullsAsZeroes) && i > 0) {\n gap = !options.connectNulls;\n // Area series, nullsAsZeroes is set\n }\n else if (point.isNull && !nullsAsZeroes) {\n gap = true;\n }\n else {\n if (i === 0 || gap) {\n pathToPoint = [[\n 'M',\n point.plotX,\n point.plotY\n ]];\n // Generate the spline as defined in the SplineSeries object\n }\n else if (series.getPointSpline) {\n pathToPoint = [series.getPointSpline(points, point, i)];\n }\n else if (step) {\n if (step === 1) { // right\n pathToPoint = [[\n 'L',\n lastPoint.plotX,\n plotY\n ]];\n }\n else if (step === 2) { // center\n pathToPoint = [[\n 'L',\n (lastPoint.plotX + plotX) / 2,\n lastPoint.plotY\n ], [\n 'L',\n (lastPoint.plotX + plotX) / 2,\n plotY\n ]];\n }\n else {\n pathToPoint = [[\n 'L',\n plotX,\n lastPoint.plotY\n ]];\n }\n pathToPoint.push([\n 'L',\n plotX,\n plotY\n ]);\n }\n else {\n // normal line to next point\n pathToPoint = [[\n 'L',\n plotX,\n plotY\n ]];\n }\n // Prepare for animation. When step is enabled, there are\n // two path nodes for each x value.\n xMap.push(point.x);\n if (step) {\n xMap.push(point.x);\n if (step === 2) { // step = center (#8073)\n xMap.push(point.x);\n }\n }\n graphPath.push.apply(graphPath, pathToPoint);\n gap = false;\n }\n });\n graphPath.xMap = xMap;\n series.graphPath = graphPath;\n return graphPath;\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * Get zones properties for building graphs. Extendable by series with\n * multiple lines within one series.\n *\n * @private\n */\n LineSeries.prototype.getZonesGraphs = function (props) {\n // Add the zone properties if any\n this.zones.forEach(function (zone, i) {\n var propset = [\n 'zone-graph-' + i,\n 'highcharts-graph highcharts-zone-graph-' + i + ' ' +\n (zone.className || '')\n ];\n if (!this.chart.styledMode) {\n propset.push((zone.color || this.color), (zone.dashStyle || this.options.dashStyle));\n }\n props.push(propset);\n }, this);\n return props;\n };\n LineSeries.defaultOptions = merge(Series.defaultOptions, \n /**\n * General options for all series types.\n *\n * @optionparent plotOptions.series\n */\n {\n // nothing here yet\n });\n return LineSeries;\n }(Series));\n SeriesRegistry.registerSeriesType('line', LineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A line series displays information as a series of data points connected by\n * straight line segments.\n *\n * @sample {highcharts} highcharts/demo/line-basic/\n * Line chart\n * @sample {highstock} stock/demo/basic-line/\n * Line chart\n *\n * @extends plotOptions.series\n * @product highcharts highstock\n * @apioption plotOptions.line\n */\n /**\n * The SVG value used for the `stroke-linecap` and `stroke-linejoin`\n * of a line graph. Round means that lines are rounded in the ends and\n * bends.\n *\n * @type {Highcharts.SeriesLinecapValue}\n * @default round\n * @since 3.0.7\n * @apioption plotOptions.line.linecap\n */\n /**\n * A `line` series. If the [type](#series.line.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.line\n * @excluding dataParser,dataURL\n * @product highcharts highstock\n * @apioption series.line\n */\n /**\n * An array of data points for the series. For the `line` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 1],\n * [1, 2],\n * [2, 8]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.line.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * **Note:** In TypeScript you have to extend `PointOptionsObject` with an\n * additional declaration to allow custom data types:\n * ```ts\n * declare module `highcharts` {\n * interface PointOptionsObject {\n * custom: Record<string, (boolean|number|string)>;\n * }\n * }\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @declare Highcharts.PointOptionsObject\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @apioption series.line.data\n */\n /**\n * An additional, individual class name for the data point's graphic\n * representation. Changes to a point's color will also be reflected in a\n * chart's legend and tooltip.\n *\n * @sample {highcharts} highcharts/css/point-series-classname\n *\n * @type {string}\n * @since 5.0.0\n * @product highcharts gantt\n * @apioption series.line.data.className\n */\n /**\n * Individual color for the point. By default the color is pulled from\n * the global `colors` array.\n *\n * In styled mode, the `color` option doesn't take effect. Instead, use\n * `colorIndex`.\n *\n * @sample {highcharts} highcharts/point/color/\n * Mark the highest point\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock gantt\n * @apioption series.line.data.color\n */\n /**\n * A specific color index to use for the point, so its graphic representations\n * are given the class name `highcharts-color-{n}`. In styled mode this will\n * change the color of the graphic. In non-styled mode, the color is set by the\n * `fill` attribute, so the change in class name won't have a visual effect by\n * default.\n *\n * @sample {highcharts} highcharts/css/colorindex/\n * Series and point color index\n *\n * @type {number}\n * @since 5.0.0\n * @product highcharts gantt\n * @apioption series.line.data.colorIndex\n */\n /**\n * A reserved subspace to store options and values for customized functionality.\n * Here you can add additional data for your own event callbacks and formatter\n * callbacks.\n *\n * @sample {highcharts} highcharts/point/custom/\n * Point and series with custom data\n *\n * @type {Highcharts.Dictionary<*>}\n * @apioption series.line.data.custom\n */\n /**\n * Individual data label for each point. The options are the same as\n * the ones for [plotOptions.series.dataLabels](\n * #plotOptions.series.dataLabels).\n *\n * @sample highcharts/point/datalabels/\n * Show a label for the last value\n *\n * @declare Highcharts.DataLabelsOptions\n * @extends plotOptions.line.dataLabels\n * @product highcharts highstock gantt\n * @apioption series.line.data.dataLabels\n */\n /**\n * A description of the point to add to the screen reader information\n * about the point.\n *\n * @type {string}\n * @since 5.0.0\n * @requires modules/accessibility\n * @apioption series.line.data.description\n */\n /**\n * An id for the point. This can be used after render time to get a\n * pointer to the point object through `chart.get()`.\n *\n * @sample {highcharts} highcharts/point/id/\n * Remove an id'd point\n *\n * @type {string}\n * @since 1.2.0\n * @product highcharts highstock gantt\n * @apioption series.line.data.id\n */\n /**\n * The rank for this point's data label in case of collision. If two\n * data labels are about to overlap, only the one with the highest `labelrank`\n * will be drawn.\n *\n * @type {number}\n * @apioption series.line.data.labelrank\n */\n /**\n * The name of the point as shown in the legend, tooltip, dataLabels, etc.\n *\n * @see [xAxis.uniqueNames](#xAxis.uniqueNames)\n *\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Point names\n *\n * @type {string}\n * @apioption series.line.data.name\n */\n /**\n * Whether the data point is selected initially.\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock gantt\n * @apioption series.line.data.selected\n */\n /**\n * The x value of the point. For datetime axes, the X value is the timestamp\n * in milliseconds since 1970.\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.line.data.x\n */\n /**\n * The y value of the point.\n *\n * @type {number|null}\n * @product highcharts highstock\n * @apioption series.line.data.y\n */\n /**\n * The individual point events.\n *\n * @extends plotOptions.series.point.events\n * @product highcharts highstock gantt\n * @apioption series.line.data.events\n */\n /**\n * Options for the point markers of line-like series.\n *\n * @declare Highcharts.PointMarkerOptionsObject\n * @extends plotOptions.series.marker\n * @product highcharts highstock\n * @apioption series.line.data.marker\n */\n ''; // include precedent doclets in transpilat\n\n return LineSeries;\n });\n _registerModule(_modules, 'Series/Area/AreaSeries.js', [_modules['Core/Color/Color.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Color, LegendSymbol, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var color = Color.parse;\n var LineSeries = SeriesRegistry.seriesTypes.line;\n var extend = U.extend,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * Area series type.\n *\n * @private\n * @class\n * @name AreaSeries\n *\n * @augments LineSeries\n */\n var AreaSeries = /** @class */ (function (_super) {\n __extends(AreaSeries, _super);\n function AreaSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Draw the graph and the underlying area. This method calls the Series\n * base function and adds the area. The areaPath is calculated in the\n * getSegmentPath method called from Series.prototype.drawGraph.\n * @private\n */\n AreaSeries.prototype.drawGraph = function () {\n // Define or reset areaPath\n this.areaPath = [];\n // Call the base method\n _super.prototype.drawGraph.apply(this);\n // Define local variables\n var series = this,\n areaPath = this.areaPath,\n options = this.options,\n zones = this.zones,\n props = [[\n 'area',\n 'highcharts-area',\n this.color,\n options.fillColor\n ]]; // area name, main color, fill color\n zones.forEach(function (zone,\n i) {\n props.push([\n 'zone-area-' + i,\n 'highcharts-area highcharts-zone-area-' + i + ' ' +\n zone.className,\n zone.color || series.color,\n zone.fillColor || options.fillColor\n ]);\n });\n props.forEach(function (prop) {\n var areaKey = prop[0],\n attribs = {};\n var area = series[areaKey];\n var verb = area ? 'animate' : 'attr';\n // Create or update the area\n if (area) { // update\n area.endX = series.preventGraphAnimation ?\n null :\n areaPath.xMap;\n area.animate({ d: areaPath });\n }\n else { // create\n attribs.zIndex = 0; // #1069\n area = series[areaKey] = series.chart.renderer\n .path(areaPath)\n .addClass(prop[1])\n .add(series.group);\n area.isArea = true;\n }\n if (!series.chart.styledMode) {\n attribs.fill = pick(prop[3], color(prop[2])\n .setOpacity(pick(options.fillOpacity, 0.75))\n .get());\n }\n area[verb](attribs);\n area.startX = areaPath.xMap;\n area.shiftUnit = options.step ? 2 : 1;\n });\n };\n /**\n * @private\n */\n AreaSeries.prototype.getGraphPath = function (points) {\n var getGraphPath = LineSeries.prototype.getGraphPath, options = this.options, stacking = options.stacking, yAxis = this.yAxis, bottomPoints = [], graphPoints = [], seriesIndex = this.index, stacks = yAxis.stacking.stacks[this.stackKey], threshold = options.threshold, translatedThreshold = Math.round(// #10909\n yAxis.getThreshold(options.threshold)), connectNulls = pick(// #10574\n options.connectNulls, stacking === 'percent'), \n // To display null points in underlying stacked series, this\n // series graph must be broken, and the area also fall down to\n // fill the gap left by the null point. #2069\n addDummyPoints = function (i, otherI, side) {\n var point = points[i], stackedValues = stacking &&\n stacks[point.x].points[seriesIndex], nullVal = point[side + 'Null'] || 0, cliffVal = point[side + 'Cliff'] || 0;\n var top,\n bottom,\n isNull = true;\n if (cliffVal || nullVal) {\n top = (nullVal ?\n stackedValues[0] :\n stackedValues[1]) + cliffVal;\n bottom = stackedValues[0] + cliffVal;\n isNull = !!nullVal;\n }\n else if (!stacking &&\n points[otherI] &&\n points[otherI].isNull) {\n top = bottom = threshold;\n }\n // Add to the top and bottom line of the area\n if (typeof top !== 'undefined') {\n graphPoints.push({\n plotX: plotX,\n plotY: top === null ?\n translatedThreshold :\n yAxis.getThreshold(top),\n isNull: isNull,\n isCliff: true\n });\n bottomPoints.push({\n plotX: plotX,\n plotY: bottom === null ?\n translatedThreshold :\n yAxis.getThreshold(bottom),\n doCurve: false // #1041, gaps in areaspline areas\n });\n }\n };\n var plotX,\n isNull,\n yBottom;\n // Find what points to use\n points = points || this.points;\n // Fill in missing points\n if (stacking) {\n points = this.getStackPoints(points);\n }\n for (var i = 0, iEnd = points.length; i < iEnd; ++i) {\n // Reset after series.update of stacking property (#12033)\n if (!stacking) {\n points[i].leftCliff = points[i].rightCliff =\n points[i].leftNull = points[i].rightNull = void 0;\n }\n isNull = points[i].isNull;\n plotX = pick(points[i].rectPlotX, points[i].plotX);\n yBottom = stacking ?\n pick(points[i].yBottom, translatedThreshold) :\n translatedThreshold;\n if (!isNull || connectNulls) {\n if (!connectNulls) {\n addDummyPoints(i, i - 1, 'left');\n }\n // Skip null point when stacking is false and connectNulls\n // true\n if (!(isNull && !stacking && connectNulls)) {\n graphPoints.push(points[i]);\n bottomPoints.push({\n x: i,\n plotX: plotX,\n plotY: yBottom\n });\n }\n if (!connectNulls) {\n addDummyPoints(i, i + 1, 'right');\n }\n }\n }\n var topPath = getGraphPath.call(this,\n graphPoints,\n true,\n true);\n bottomPoints.reversed = true;\n var bottomPath = getGraphPath.call(this,\n bottomPoints,\n true,\n true);\n var firstBottomPoint = bottomPath[0];\n if (firstBottomPoint && firstBottomPoint[0] === 'M') {\n bottomPath[0] = ['L', firstBottomPoint[1], firstBottomPoint[2]];\n }\n var areaPath = topPath.concat(bottomPath);\n if (areaPath.length) {\n areaPath.push(['Z']);\n }\n // TODO: don't set leftCliff and rightCliff when connectNulls?\n var graphPath = getGraphPath\n .call(this,\n graphPoints,\n false,\n connectNulls);\n areaPath.xMap = topPath.xMap;\n this.areaPath = areaPath;\n return graphPath;\n };\n /**\n * Return an array of stacked points, where null and missing points are\n * replaced by dummy points in order for gaps to be drawn correctly in\n * stacks.\n * @private\n */\n AreaSeries.prototype.getStackPoints = function (points) {\n var series = this,\n segment = [],\n keys = [],\n xAxis = this.xAxis,\n yAxis = this.yAxis,\n stack = yAxis.stacking.stacks[this.stackKey],\n pointMap = {},\n yAxisSeries = yAxis.series,\n seriesLength = yAxisSeries.length,\n upOrDown = yAxis.options.reversedStacks ? 1 : -1,\n seriesIndex = yAxisSeries.indexOf(series);\n points = points || this.points;\n if (this.options.stacking) {\n for (var i = 0; i < points.length; i++) {\n // Reset after point update (#7326)\n points[i].leftNull = points[i].rightNull = void 0;\n // Create a map where we can quickly look up the points by\n // their X values.\n pointMap[points[i].x] = points[i];\n }\n // Sort the keys (#1651)\n objectEach(stack, function (stackX, x) {\n // nulled after switching between\n // grouping and not (#1651, #2336)\n if (stackX.total !== null) {\n keys.push(x);\n }\n });\n keys.sort(function (a, b) {\n return a - b;\n });\n var visibleSeries_1 = yAxisSeries.map(function (s) { return s.visible; });\n keys.forEach(function (x, idx) {\n var y = 0,\n stackPoint,\n stackedValues;\n if (pointMap[x] && !pointMap[x].isNull) {\n segment.push(pointMap[x]);\n // Find left and right cliff. -1 goes left, 1 goes\n // right.\n [-1, 1].forEach(function (direction) {\n var nullName = direction === 1 ?\n 'rightNull' :\n 'leftNull',\n cliffName = direction === 1 ?\n 'rightCliff' :\n 'leftCliff',\n otherStack = stack[keys[idx + direction]];\n var cliff = 0;\n // If there is a stack next to this one,\n // to the left or to the right...\n if (otherStack) {\n var i = seriesIndex;\n // Can go either up or down,\n // depending on reversedStacks\n while (i >= 0 && i < seriesLength) {\n var si = yAxisSeries[i].index;\n stackPoint = otherStack.points[si];\n if (!stackPoint) {\n // If the next point in this series is\n // missing, mark the point with\n // point.leftNull or point.rightNull = true.\n if (si === series.index) {\n pointMap[x][nullName] = true;\n // If there are missing points in the next\n // stack in any of the series below this\n // one, we need to substract the missing\n // values and add a hiatus to the left or\n // right.\n }\n else if (visibleSeries_1[i]) {\n stackedValues = stack[x].points[si];\n if (stackedValues) {\n cliff -= (stackedValues[1] -\n stackedValues[0]);\n }\n }\n }\n // When reversedStacks is true, loop up,\n // else loop down\n i += upOrDown;\n }\n }\n pointMap[x][cliffName] = cliff;\n });\n // There is no point for this X value in this series, so we\n // insert a dummy point in order for the areas to be drawn\n // correctly.\n }\n else {\n // Loop down the stack to find the series below this\n // one that has a value (#1991)\n var i = seriesIndex;\n while (i >= 0 && i < seriesLength) {\n var si = yAxisSeries[i].index;\n stackPoint = stack[x].points[si];\n if (stackPoint) {\n y = stackPoint[1];\n break;\n }\n // When reversedStacks is true, loop up, else loop\n // down\n i += upOrDown;\n }\n y = pick(y, 0);\n y = yAxis.translate(// #6272\n y, 0, 1, 0, 1);\n segment.push({\n isNull: true,\n plotX: xAxis.translate(// #6272\n x, 0, 0, 0, 1),\n x: x,\n plotY: y,\n yBottom: y\n });\n }\n });\n }\n return segment;\n };\n /**\n * The area series type.\n *\n * @sample {highcharts} highcharts/demo/area-basic/\n * Area chart\n * @sample {highstock} stock/demo/area/\n * Area chart\n *\n * @extends plotOptions.line\n * @excluding useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.area\n */\n AreaSeries.defaultOptions = merge(LineSeries.defaultOptions, {\n /**\n * @see [fillColor](#plotOptions.area.fillColor)\n * @see [fillOpacity](#plotOptions.area.fillOpacity)\n *\n * @apioption plotOptions.area.color\n */\n /**\n * Fill color or gradient for the area. When `null`, the series' `color`\n * is used with the series' `fillOpacity`.\n *\n * In styled mode, the fill color can be set with the `.highcharts-area`\n * class name.\n *\n * @see [color](#plotOptions.area.color)\n * @see [fillOpacity](#plotOptions.area.fillOpacity)\n *\n * @sample {highcharts} highcharts/plotoptions/area-fillcolor-default/\n * Null by default\n * @sample {highcharts} highcharts/plotoptions/area-fillcolor-gradient/\n * Gradient\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption plotOptions.area.fillColor\n */\n /**\n * Fill opacity for the area. When you set an explicit `fillColor`,\n * the `fillOpacity` is not applied. Instead, you should define the\n * opacity in the `fillColor` with an rgba color definition. The\n * `fillOpacity` setting, also the default setting, overrides the alpha\n * component of the `color` setting.\n *\n * In styled mode, the fill opacity can be set with the\n * `.highcharts-area` class name.\n *\n * @see [color](#plotOptions.area.color)\n * @see [fillColor](#plotOptions.area.fillColor)\n *\n * @sample {highcharts} highcharts/plotoptions/area-fillopacity/\n * Automatic fill color and fill opacity of 0.1\n *\n * @type {number}\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @product highcharts highstock\n * @apioption plotOptions.area.fillOpacity\n */\n /**\n * A separate color for the graph line. By default the line takes the\n * `color` of the series, but the lineColor setting allows setting a\n * separate color for the line without altering the `fillColor`.\n *\n * In styled mode, the line stroke can be set with the\n * `.highcharts-graph` class name.\n *\n * @sample {highcharts} highcharts/plotoptions/area-linecolor/\n * Dark gray line\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption plotOptions.area.lineColor\n */\n /**\n * A separate color for the negative part of the area.\n *\n * In styled mode, a negative color is set with the\n * `.highcharts-negative` class name.\n *\n * @see [negativeColor](#plotOptions.area.negativeColor)\n *\n * @sample {highcharts} highcharts/css/series-negative-color/\n * Negative color in styled mode\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 3.0\n * @product highcharts\n * @apioption plotOptions.area.negativeFillColor\n */\n /**\n * Whether the whole area or just the line should respond to mouseover\n * tooltips and other mouse or touch events.\n *\n * @sample {highcharts|highstock} highcharts/plotoptions/area-trackbyarea/\n * Display the tooltip when the area is hovered\n *\n * @type {boolean}\n * @default false\n * @since 1.1.6\n * @product highcharts highstock\n * @apioption plotOptions.area.trackByArea\n */\n /**\n * The Y axis value to serve as the base for the area, for\n * distinguishing between values above and below a threshold. The area\n * between the graph and the threshold is filled.\n *\n * * If a number is given, the Y axis will scale to the threshold.\n * * If `null`, the scaling behaves like a line series with fill between\n * the graph and the Y axis minimum.\n * * If `Infinity` or `-Infinity`, the area between the graph and the\n * corresponding Y axis extreme is filled (since v6.1.0).\n *\n * @sample {highcharts} highcharts/plotoptions/area-threshold/\n * A threshold of 100\n * @sample {highcharts} highcharts/plotoptions/area-threshold-infinity/\n * A threshold of Infinity\n *\n * @type {number|null}\n * @since 2.0\n * @product highcharts highstock\n */\n threshold: 0\n });\n return AreaSeries;\n }(LineSeries));\n extend(AreaSeries.prototype, {\n singleStacks: false,\n drawLegendSymbol: LegendSymbol.drawRectangle\n });\n SeriesRegistry.registerSeriesType('area', AreaSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `area` series. If the [type](#series.area.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.area\n * @excluding dataParser, dataURL, useOhlcData\n * @product highcharts highstock\n * @apioption series.area\n */\n /**\n * @see [fillColor](#series.area.fillColor)\n * @see [fillOpacity](#series.area.fillOpacity)\n *\n * @apioption series.area.color\n */\n /**\n * An array of data points for the series. For the `area` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` * and `pointInterval` given in the series options. If the\n * axis has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 9],\n * [1, 7],\n * [2, 6]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.area.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.area.data\n */\n /**\n * @see [color](#series.area.color)\n * @see [fillOpacity](#series.area.fillOpacity)\n *\n * @apioption series.area.fillColor\n */\n /**\n * @see [color](#series.area.color)\n * @see [fillColor](#series.area.fillColor)\n *\n * @default {highcharts} 0.75\n * @default {highstock} 0.75\n * @apioption series.area.fillOpacity\n */\n ''; // adds doclets above to transpilat\n\n return AreaSeries;\n });\n _registerModule(_modules, 'Series/Spline/SplineSeries.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var LineSeries = SeriesRegistry.seriesTypes.line;\n var merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Class\n *\n * */\n /**\n * Spline series type.\n *\n * @private\n */\n var SplineSeries = /** @class */ (function (_super) {\n __extends(SplineSeries, _super);\n function SplineSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the spline segment from a given point's previous neighbour to the\n * given point.\n *\n * @private\n * @function Highcharts.seriesTypes.spline#getPointSpline\n */\n SplineSeries.prototype.getPointSpline = function (points, point, i) {\n var \n // 1 means control points midway between points, 2 means 1/3\n // from the point, 3 is 1/4 etc\n smoothing = 1.5,\n denom = smoothing + 1,\n plotX = point.plotX || 0,\n plotY = point.plotY || 0,\n lastPoint = points[i - 1],\n nextPoint = points[i + 1];\n var leftContX,\n leftContY,\n rightContX,\n rightContY;\n /**\n * @private\n */\n function doCurve(otherPoint) {\n return otherPoint &&\n !otherPoint.isNull &&\n otherPoint.doCurve !== false &&\n // #6387, area splines next to null:\n !point.isCliff;\n }\n // Find control points\n if (doCurve(lastPoint) && doCurve(nextPoint)) {\n var lastX = lastPoint.plotX || 0,\n lastY = lastPoint.plotY || 0,\n nextX = nextPoint.plotX || 0,\n nextY = nextPoint.plotY || 0;\n var correction = 0;\n leftContX = (smoothing * plotX + lastX) / denom;\n leftContY = (smoothing * plotY + lastY) / denom;\n rightContX = (smoothing * plotX + nextX) / denom;\n rightContY = (smoothing * plotY + nextY) / denom;\n // Have the two control points make a straight line through main\n // point\n if (rightContX !== leftContX) { // #5016, division by zero\n correction = (((rightContY - leftContY) *\n (rightContX - plotX)) /\n (rightContX - leftContX) + plotY - rightContY);\n }\n leftContY += correction;\n rightContY += correction;\n // to prevent false extremes, check that control points are\n // between neighbouring points' y values\n if (leftContY > lastY && leftContY > plotY) {\n leftContY = Math.max(lastY, plotY);\n // mirror of left control point\n rightContY = 2 * plotY - leftContY;\n }\n else if (leftContY < lastY && leftContY < plotY) {\n leftContY = Math.min(lastY, plotY);\n rightContY = 2 * plotY - leftContY;\n }\n if (rightContY > nextY && rightContY > plotY) {\n rightContY = Math.max(nextY, plotY);\n leftContY = 2 * plotY - rightContY;\n }\n else if (rightContY < nextY && rightContY < plotY) {\n rightContY = Math.min(nextY, plotY);\n leftContY = 2 * plotY - rightContY;\n }\n // record for drawing in next point\n point.rightContX = rightContX;\n point.rightContY = rightContY;\n }\n // Visualize control points for debugging\n /*\n if (leftContX) {\n this.chart.renderer.circle(\n leftContX + this.chart.plotLeft,\n leftContY + this.chart.plotTop,\n 2\n )\n .attr({\n stroke: 'red',\n 'stroke-width': 2,\n fill: 'none',\n zIndex: 9\n })\n .add();\n this.chart.renderer.path(['M', leftContX + this.chart.plotLeft,\n leftContY + this.chart.plotTop,\n 'L', plotX + this.chart.plotLeft, plotY + this.chart.plotTop])\n .attr({\n stroke: 'red',\n 'stroke-width': 2,\n zIndex: 9\n })\n .add();\n }\n if (rightContX) {\n this.chart.renderer.circle(\n rightContX + this.chart.plotLeft,\n rightContY + this.chart.plotTop,\n 2\n )\n .attr({\n stroke: 'green',\n 'stroke-width': 2,\n fill: 'none',\n zIndex: 9\n })\n .add();\n this.chart.renderer.path(['M', rightContX + this.chart.plotLeft,\n rightContY + this.chart.plotTop,\n 'L', plotX + this.chart.plotLeft, plotY + this.chart.plotTop])\n .attr({\n stroke: 'green',\n 'stroke-width': 2,\n zIndex: 9\n })\n .add();\n }\n // */\n var ret = [\n 'C',\n pick(lastPoint.rightContX,\n lastPoint.plotX, 0),\n pick(lastPoint.rightContY,\n lastPoint.plotY, 0),\n pick(leftContX,\n plotX, 0),\n pick(leftContY,\n plotY, 0),\n plotX,\n plotY\n ];\n // reset for updating series later\n lastPoint.rightContX = lastPoint.rightContY = void 0;\n return ret;\n };\n /**\n * A spline series is a special type of line series, where the segments\n * between the data points are smoothed.\n *\n * @sample {highcharts} highcharts/demo/spline-irregular-time/\n * Spline chart\n * @sample {highstock} stock/demo/spline/\n * Spline chart\n *\n * @extends plotOptions.series\n * @excluding step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @optionparent plotOptions.spline\n */\n SplineSeries.defaultOptions = merge(LineSeries.defaultOptions);\n return SplineSeries;\n }(LineSeries));\n SeriesRegistry.registerSeriesType('spline', SplineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `spline` series. If the [type](#series.spline.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.spline\n * @excluding dataParser, dataURL, step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption series.spline\n */\n /**\n * An array of data points for the series. For the `spline` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 9],\n * [1, 2],\n * [2, 8]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.spline.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 0,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.spline.data\n */\n ''; // adds doclets above intro transpilat\n\n return SplineSeries;\n });\n _registerModule(_modules, 'Series/AreaSpline/AreaSplineSeries.js', [_modules['Series/Spline/SplineSeries.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SplineSeries, LegendSymbol, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var _a = SeriesRegistry.seriesTypes,\n AreaSeries = _a.area,\n areaProto = _a.area.prototype;\n var extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * AreaSpline series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.areaspline\n *\n * @augments Highcharts.Series\n */\n var AreaSplineSeries = /** @class */ (function (_super) {\n __extends(AreaSplineSeries, _super);\n function AreaSplineSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.points = void 0;\n _this.options = void 0;\n return _this;\n }\n AreaSplineSeries.defaultOptions = merge(SplineSeries.defaultOptions, AreaSeries.defaultOptions);\n return AreaSplineSeries;\n }(SplineSeries));\n extend(AreaSplineSeries.prototype, {\n getGraphPath: areaProto.getGraphPath,\n getStackPoints: areaProto.getStackPoints,\n drawGraph: areaProto.drawGraph,\n drawLegendSymbol: LegendSymbol.drawRectangle\n });\n SeriesRegistry.registerSeriesType('areaspline', AreaSplineSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * The area spline series is an area series where the graph between the\n * points is smoothed into a spline.\n *\n * @sample {highcharts} highcharts/demo/areaspline/\n * Area spline chart\n * @sample {highstock} stock/demo/areaspline/\n * Area spline chart\n *\n * @extends plotOptions.area\n * @excluding step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption plotOptions.areaspline\n */\n /**\n * @see [fillColor](#plotOptions.areaspline.fillColor)\n * @see [fillOpacity](#plotOptions.areaspline.fillOpacity)\n *\n * @apioption plotOptions.areaspline.color\n */\n /**\n * @see [color](#plotOptions.areaspline.color)\n * @see [fillOpacity](#plotOptions.areaspline.fillOpacity)\n *\n * @apioption plotOptions.areaspline.fillColor\n */\n /**\n * @see [color](#plotOptions.areaspline.color)\n * @see [fillColor](#plotOptions.areaspline.fillColor)\n *\n * @default 0.75\n * @apioption plotOptions.areaspline.fillOpacity\n */\n /**\n * A `areaspline` series. If the [type](#series.areaspline.type) option\n * is not specified, it is inherited from [chart.type](#chart.type).\n *\n *\n * @extends series,plotOptions.areaspline\n * @excluding dataParser, dataURL, step, boostThreshold, boostBlending\n * @product highcharts highstock\n * @apioption series.areaspline\n */\n /**\n * @see [fillColor](#series.areaspline.fillColor)\n * @see [fillOpacity](#series.areaspline.fillOpacity)\n *\n * @apioption series.areaspline.color\n */\n /**\n * An array of data points for the series. For the `areaspline` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 10],\n * [1, 9],\n * [2, 3]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.areaspline.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 4,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.areaspline.data\n */\n /**\n * @see [color](#series.areaspline.color)\n * @see [fillOpacity](#series.areaspline.fillOpacity)\n *\n * @apioption series.areaspline.fillColor\n */\n /**\n * @see [color](#series.areaspline.color)\n * @see [fillColor](#series.areaspline.fillColor)\n *\n * @default 0.75\n * @apioption series.areaspline.fillOpacity\n */\n ''; // adds doclets above into transpilat\n\n return AreaSplineSeries;\n });\n _registerModule(_modules, 'Series/Column/ColumnSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * Column series display one column per value along an X axis.\n *\n * @sample {highcharts} highcharts/demo/column-basic/\n * Column chart\n * @sample {highstock} stock/demo/column/\n * Column chart\n *\n * @extends plotOptions.line\n * @excluding connectEnds, connectNulls, gapSize, gapUnit, linecap,\n * lineWidth, marker, step, useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.column\n */\n var ColumnSeriesDefaults = {\n /**\n * The corner radius of the border surrounding each column or bar.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderradius/\n * Rounded columns\n *\n * @product highcharts highstock gantt\n */\n borderRadius: 0,\n /**\n * When using automatic point colors pulled from the global\n * [colors](colors) or series-specific\n * [plotOptions.column.colors](series.colors) collections,\n this option\n * determines whether the chart should receive one color per series or\n * one color per point.\n *\n * In styled mode,\n the `colors` or `series.colors` arrays are not\n * supported,\n and instead this option gives the points individual color\n * class names on the form `highcharts-color-{n}`.\n *\n * @see [series colors](#plotOptions.column.colors)\n *\n * @sample {highcharts} highcharts/plotoptions/column-colorbypoint-false/\n * False by default\n * @sample {highcharts} highcharts/plotoptions/column-colorbypoint-true/\n * True\n *\n * @type {boolean}\n * @default false\n * @since 2.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.colorByPoint\n */\n /**\n * A series specific or series type specific color set to apply instead\n * of the global [colors](#colors) when [colorByPoint](\n * #plotOptions.column.colorByPoint) is true.\n *\n * @type {Array<Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject>}\n * @since 3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.colors\n */\n /**\n * When `true`,\n the columns will center in the category,\n ignoring null\n * or missing points. When `false`,\n space will be reserved for null or\n * missing points.\n *\n * @sample {highcharts} highcharts/series-column/centerincategory/\n * Center in category\n *\n * @since 8.0.1\n * @product highcharts highstock gantt\n */\n centerInCategory: false,\n /**\n * Padding between each value groups,\n in x axis units.\n *\n * @sample {highcharts} highcharts/plotoptions/column-grouppadding-default/\n * 0.2 by default\n * @sample {highcharts} highcharts/plotoptions/column-grouppadding-none/\n * No group padding - all columns are evenly spaced\n *\n * @product highcharts highstock gantt\n */\n groupPadding: 0.2,\n /**\n * Whether to group non-stacked columns or to let them render\n * independent of each other. Non-grouped columns will be laid out\n * individually and overlap each other.\n *\n * @sample {highcharts} highcharts/plotoptions/column-grouping-false/\n * Grouping disabled\n * @sample {highstock} highcharts/plotoptions/column-grouping-false/\n * Grouping disabled\n *\n * @type {boolean}\n * @default true\n * @since 2.3.0\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.grouping\n */\n /** @ignore-option */\n marker: null,\n /**\n * The maximum allowed pixel width for a column,\n translated to the\n * height of a bar in a bar chart. This prevents the columns from\n * becoming too wide when there is a small number of points in the\n * chart.\n *\n * @see [pointWidth](#plotOptions.column.pointWidth)\n *\n * @sample {highcharts} highcharts/plotoptions/column-maxpointwidth-20/\n * Limited to 50\n * @sample {highstock} highcharts/plotoptions/column-maxpointwidth-20/\n * Limited to 50\n *\n * @type {number}\n * @since 4.1.8\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.maxPointWidth\n */\n /**\n * Padding between each column or bar,\n in x axis units.\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-default/\n * 0.1 by default\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-025/\n * 0.25\n * @sample {highcharts} highcharts/plotoptions/column-pointpadding-none/\n * 0 for tightly packed columns\n *\n * @product highcharts highstock gantt\n */\n pointPadding: 0.1,\n /**\n * A pixel value specifying a fixed width for each column or bar point.\n * When set to `undefined`,\n the width is calculated from the\n * `pointPadding` and `groupPadding`. The width effects the dimension\n * that is not based on the point value. For column series it is the\n * hoizontal length and for bar series it is the vertical length.\n *\n * @see [maxPointWidth](#plotOptions.column.maxPointWidth)\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointwidth-20/\n * 20px wide columns regardless of chart width or the amount of\n * data points\n *\n * @type {number}\n * @since 1.2.5\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.pointWidth\n */\n /**\n * A pixel value specifying a fixed width for the column or bar.\n * Overrides pointWidth on the series.\n *\n * @see [series.pointWidth](#plotOptions.column.pointWidth)\n *\n * @type {number}\n * @default undefined\n * @since 7.0.0\n * @product highcharts highstock gantt\n * @apioption series.column.data.pointWidth\n */\n /**\n * The minimal height for a column or width for a bar. By default,\n * 0 values are not shown. To visualize a 0 (or close to zero) point,\n * set the minimal point length to a pixel value like 3\\. In stacked\n * column charts,\n minPointLength might not be respected for tightly\n * packed values.\n *\n * @sample {highcharts} highcharts/plotoptions/column-minpointlength/\n * Zero base value\n * @sample {highcharts} highcharts/plotoptions/column-minpointlength-pos-and-neg/\n * Positive and negative close to zero values\n *\n * @product highcharts highstock gantt\n */\n minPointLength: 0,\n /**\n * When the series contains less points than the crop threshold,\n all\n * points are drawn,\n event if the points fall outside the visible plot\n * area at the current zoom. The advantage of drawing all points\n * (including markers and columns),\n is that animation is performed on\n * updates. On the other hand,\n when the series contains more points than\n * the crop threshold,\n the series data is cropped to only contain points\n * that fall within the plot area. The advantage of cropping away\n * invisible points is to increase performance on large series.\n *\n * @product highcharts highstock gantt\n */\n cropThreshold: 50,\n /**\n * The X axis range that each point is valid for. This determines the\n * width of the column. On a categorized axis,\n the range will be 1\n * by default (one category unit). On linear and datetime axes,\n the\n * range will be computed as the distance between the two closest data\n * points.\n *\n * The default `null` means it is computed automatically,\n but this\n * option can be used to override the automatic value.\n *\n * This option is set by default to 1 if data sorting is enabled.\n *\n * @sample {highcharts} highcharts/plotoptions/column-pointrange/\n * Set the point range to one day on a data set with one week\n * between the points\n *\n * @type {number|null}\n * @since 2.3\n * @product highcharts highstock gantt\n */\n pointRange: null,\n states: {\n /**\n * Options for the hovered point. These settings override the normal\n * state options when a point is moused over or touched.\n *\n * @extends plotOptions.series.states.hover\n * @excluding halo,\n lineWidth,\n lineWidthPlus,\n marker\n * @product highcharts highstock gantt\n */\n hover: {\n /** @ignore-option */\n halo: false,\n /**\n * A specific border color for the hovered point. Defaults to\n * inherit the normal state border color.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts gantt\n * @apioption plotOptions.column.states.hover.borderColor\n */\n /**\n * A specific color for the hovered point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts gantt\n * @apioption plotOptions.column.states.hover.color\n */\n /**\n * How much to brighten the point on interaction. Requires the\n * main color to be defined in hex or rgb(a) format.\n *\n * In styled mode,\n the hover brightening is by default replaced\n * with a fill-opacity set in the `.highcharts-point:hover`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-states-hover-brightness/\n * Brighten by 0.5\n *\n * @product highcharts highstock gantt\n */\n brightness: 0.1\n },\n /**\n * Options for the selected point. These settings override the\n * normal state options when a point is selected.\n *\n * @extends plotOptions.series.states.select\n * @excluding halo,\n lineWidth,\n lineWidthPlus,\n marker\n * @product highcharts highstock gantt\n */\n select: {\n /**\n * A specific color for the selected point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @product highcharts highstock gantt\n */\n color: \"#cccccc\" /* Palette.neutralColor20 */,\n /**\n * A specific border color for the selected point.\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #000000\n * @product highcharts highstock gantt\n */\n borderColor: \"#000000\" /* Palette.neutralColor100 */\n }\n },\n dataLabels: {\n align: void 0,\n verticalAlign: void 0,\n /**\n * The y position offset of the label relative to the point in\n * pixels.\n *\n * @type {number}\n */\n y: void 0\n },\n // false doesn't work well: https://jsfiddle.net/highcharts/hz8fopan/14/\n /** @ignore-option */\n startFromThreshold: true,\n stickyTracking: false,\n tooltip: {\n distance: 6\n },\n /**\n * The Y axis value to serve as the base for the columns,\n for\n * distinguishing between values above and below a threshold. If `null`,\n * the columns extend from the padding Y axis minimum.\n *\n * @type {number|null}\n * @since 2.0\n * @product highcharts\n */\n threshold: 0,\n /**\n * The width of the border surrounding each column or bar. Defaults to\n * `1` when there is room for a border,\n but to `0` when the columns are\n * so dense that a border would cover the next column.\n *\n * In styled mode,\n the stroke width can be set with the\n * `.highcharts-point` rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderwidth/\n * 2px black border\n *\n * @type {number}\n * @default undefined\n * @product highcharts highstock gantt\n * @apioption plotOptions.column.borderWidth\n */\n /**\n * The color of the border surrounding each column or bar.\n *\n * In styled mode,\n the border stroke can be set with the\n * `.highcharts-point` rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-bordercolor/\n * Dark gray border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @product highcharts highstock gantt\n */\n borderColor: \"#ffffff\" /* Palette.backgroundColor */\n };\n /**\n * A `column` series. If the [type](#series.column.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.column\n * @excluding connectNulls, dataParser, dataURL, gapSize, gapUnit, linecap,\n * lineWidth, marker, connectEnds, step\n * @product highcharts highstock\n * @apioption series.column\n */\n /**\n * An array of data points for the series. For the `column` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 6],\n * [1, 2],\n * [2, 6]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.column.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 9,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 6,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @excluding marker\n * @product highcharts highstock\n * @apioption series.column.data\n */\n /**\n * The color of the border surrounding the column or bar.\n *\n * In styled mode, the border stroke can be set with the `.highcharts-point`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-bordercolor/\n * Dark gray border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product highcharts highstock\n * @apioption series.column.data.borderColor\n */\n /**\n * The width of the border surrounding the column or bar.\n *\n * In styled mode, the stroke width can be set with the `.highcharts-point`\n * rule.\n *\n * @sample {highcharts} highcharts/plotoptions/column-borderwidth/\n * 2px black border\n *\n * @type {number}\n * @product highcharts highstock\n * @apioption series.column.data.borderWidth\n */\n /**\n * A name for the dash style to use for the column or bar. Overrides\n * dashStyle on the series.\n *\n * In styled mode, the stroke dash-array can be set with the same classes as\n * listed under [data.color](#series.column.data.color).\n *\n * @see [series.pointWidth](#plotOptions.column.dashStyle)\n *\n * @type {Highcharts.DashStyleValue}\n * @apioption series.column.data.dashStyle\n */\n /**\n * A pixel value specifying a fixed width for the column or bar. Overrides\n * pointWidth on the series. The width effects the dimension that is not based\n * on the point value.\n *\n * @see [series.pointWidth](#plotOptions.column.pointWidth)\n *\n * @type {number}\n * @apioption series.column.data.pointWidth\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.column.states.hover\n */\n /**\n * @excluding halo, lineWidth, lineWidthPlus, marker\n * @product highcharts highstock\n * @apioption series.column.states.select\n */\n ''; // keeps doclets above in JS file\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Column/ColumnSeries.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Series/Column/ColumnSeriesDefaults.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (A, Color, ColumnSeriesDefaults, H, LegendSymbol, Series, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var animObject = A.animObject;\n var color = Color.parse;\n var hasTouch = H.hasTouch,\n noop = H.noop;\n var clamp = U.clamp,\n css = U.css,\n defined = U.defined,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n merge = U.merge,\n pick = U.pick,\n objectEach = U.objectEach;\n /* *\n *\n * Class\n *\n * */\n /**\n * The column series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.column\n *\n * @augments Highcharts.Series\n */\n var ColumnSeries = /** @class */ (function (_super) {\n __extends(ColumnSeries, _super);\n function ColumnSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.borderWidth = void 0;\n _this.data = void 0;\n _this.group = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Animate the column heights one by one from zero.\n *\n * @private\n * @function Highcharts.seriesTypes.column#animate\n *\n * @param {boolean} init\n * Whether to initialize the animation or run it\n */\n ColumnSeries.prototype.animate = function (init) {\n var series = this,\n yAxis = this.yAxis,\n options = series.options,\n inverted = this.chart.inverted,\n attr = {},\n translateProp = inverted ?\n 'translateX' :\n 'translateY';\n var translateStart,\n translatedThreshold;\n if (init) {\n attr.scaleY = 0.001;\n translatedThreshold = clamp(yAxis.toPixels(options.threshold), yAxis.pos, yAxis.pos + yAxis.len);\n if (inverted) {\n attr.translateX = translatedThreshold - yAxis.len;\n }\n else {\n attr.translateY = translatedThreshold;\n }\n // apply finnal clipping (used in Highcharts Stock) (#7083)\n // animation is done by scaleY, so cliping is for panes\n if (series.clipBox) {\n series.setClip();\n }\n series.group.attr(attr);\n }\n else { // run the animation\n translateStart = Number(series.group.attr(translateProp));\n series.group.animate({ scaleY: 1 }, extend(animObject(series.options.animation), {\n // Do the scale synchronously to ensure smooth\n // updating (#5030, #7228)\n step: function (val, fx) {\n if (series.group) {\n attr[translateProp] = translateStart +\n fx.pos * (yAxis.pos - translateStart);\n series.group.attr(attr);\n }\n }\n }));\n }\n };\n /**\n * Initialize the series. Extends the basic Series.init method by\n * marking other series of the same type as dirty.\n *\n * @private\n * @function Highcharts.seriesTypes.column#init\n */\n ColumnSeries.prototype.init = function (chart, options) {\n _super.prototype.init.apply(this, arguments);\n var series = this;\n chart = series.chart;\n // if the series is added dynamically, force redraw of other\n // series affected by a new column\n if (chart.hasRendered) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.type === series.type) {\n otherSeries.isDirty = true;\n }\n });\n }\n };\n /**\n * Return the width and x offset of the columns adjusted for grouping,\n * groupPadding, pointPadding, pointWidth etc.\n *\n * @private\n * @function Highcharts.seriesTypes.column#getColumnMetrics\n */\n ColumnSeries.prototype.getColumnMetrics = function () {\n var series = this,\n options = series.options,\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n reversedStacks = xAxis.options.reversedStacks, \n // Keep backward compatibility: reversed xAxis had reversed\n // stacks\n reverseStacks = (xAxis.reversed && !reversedStacks) ||\n (!xAxis.reversed && reversedStacks),\n stackGroups = {};\n var stackKey,\n columnCount = 0;\n // Get the total number of column type series. This is called on\n // every series. Consider moving this logic to a chart.orderStacks()\n // function and call it on init, addSeries and removeSeries\n if (options.grouping === false) {\n columnCount = 1;\n }\n else {\n series.chart.series.forEach(function (otherSeries) {\n var otherYAxis = otherSeries.yAxis,\n otherOptions = otherSeries.options;\n var columnIndex;\n if (otherSeries.type === series.type &&\n (otherSeries.visible ||\n !series.chart.options.chart.ignoreHiddenSeries) &&\n yAxis.len === otherYAxis.len &&\n yAxis.pos === otherYAxis.pos) { // #642, #2086\n if (otherOptions.stacking &&\n otherOptions.stacking !== 'group') {\n stackKey = otherSeries.stackKey;\n if (typeof stackGroups[stackKey] ===\n 'undefined') {\n stackGroups[stackKey] = columnCount++;\n }\n columnIndex = stackGroups[stackKey];\n }\n else if (otherOptions.grouping !== false) { // #1162\n columnIndex = columnCount++;\n }\n otherSeries.columnIndex = columnIndex;\n }\n });\n }\n var categoryWidth = Math.min(Math.abs(xAxis.transA) * ((xAxis.ordinal && xAxis.ordinal.slope) ||\n options.pointRange ||\n xAxis.closestPointRange ||\n xAxis.tickInterval ||\n 1), // #2610\n xAxis.len // #1535\n ),\n groupPadding = categoryWidth * options.groupPadding,\n groupWidth = categoryWidth - 2 * groupPadding,\n pointOffsetWidth = groupWidth / (columnCount || 1),\n pointWidth = Math.min(options.maxPointWidth || xAxis.len,\n pick(options.pointWidth,\n pointOffsetWidth * (1 - 2 * options.pointPadding))),\n pointPadding = (pointOffsetWidth - pointWidth) / 2, \n // #1251, #3737\n colIndex = (series.columnIndex || 0) + (reverseStacks ? 1 : 0),\n pointXOffset = pointPadding +\n (groupPadding +\n colIndex * pointOffsetWidth -\n (categoryWidth / 2)) * (reverseStacks ? -1 : 1);\n // Save it for reading in linked series (Error bars particularly)\n series.columnMetrics = {\n width: pointWidth,\n offset: pointXOffset,\n paddedWidth: pointOffsetWidth,\n columnCount: columnCount\n };\n return series.columnMetrics;\n };\n /**\n * Make the columns crisp. The edges are rounded to the nearest full\n * pixel.\n *\n * @private\n * @function Highcharts.seriesTypes.column#crispCol\n */\n ColumnSeries.prototype.crispCol = function (x, y, w, h) {\n var chart = this.chart,\n borderWidth = this.borderWidth,\n xCrisp = -(borderWidth % 2 ? 0.5 : 0);\n var right,\n yCrisp = borderWidth % 2 ? 0.5 : 1;\n if (chart.inverted && chart.renderer.isVML) {\n yCrisp += 1;\n }\n // Horizontal. We need to first compute the exact right edge, then\n // round it and compute the width from there.\n if (this.options.crisp) {\n right = Math.round(x + w) + xCrisp;\n x = Math.round(x) + xCrisp;\n w = right - x;\n }\n // Vertical\n var bottom = Math.round(y + h) + yCrisp,\n fromTop = Math.abs(y) <= 0.5 && bottom > 0.5; // #4504, #4656\n y = Math.round(y) + yCrisp;\n h = bottom - y;\n // Top edges are exceptions\n if (fromTop && h) { // #5146\n y -= 1;\n h += 1;\n }\n return {\n x: x,\n y: y,\n width: w,\n height: h\n };\n };\n /**\n * Adjust for missing columns, according to the `centerInCategory`\n * option. Missing columns are either single points or stacks where the\n * point or points are either missing or null.\n *\n * @private\n * @function Highcharts.seriesTypes.column#adjustForMissingColumns\n * @param {number} x\n * The x coordinate of the column, left side\n *\n * @param {number} pointWidth\n * The pointWidth, already computed upstream\n *\n * @param {Highcharts.ColumnPoint} point\n * The point instance\n *\n * @param {Highcharts.ColumnMetricsObject} metrics\n * The series-wide column metrics\n *\n * @return {number}\n * The adjusted x position, or the original if not adjusted\n */\n ColumnSeries.prototype.adjustForMissingColumns = function (x, pointWidth, point, metrics) {\n var _this = this;\n var stacking = this.options.stacking;\n if (!point.isNull && metrics.columnCount > 1) {\n var reversedStacks_1 = this.yAxis.options.reversedStacks;\n var indexInCategory_1 = 0,\n totalInCategory_1 = reversedStacks_1 ? 0 : -metrics.columnCount;\n // Loop over all the stacks on the Y axis. When stacking is enabled,\n // these are real point stacks. When stacking is not enabled, but\n // `centerInCategory` is true, there is one stack handling the\n // grouping of points in each category. This is done in the\n // `setGroupedPoints` function.\n objectEach(this.yAxis.stacking && this.yAxis.stacking.stacks, function (stack) {\n if (typeof point.x === 'number') {\n var stackItem_1 = stack[point.x.toString()];\n if (stackItem_1) {\n var pointValues = stackItem_1.points[_this.index];\n // If true `stacking` is enabled, count the total\n // number of non-null stacks in the category, and\n // note which index this point is within those\n // stacks.\n if (stacking) {\n if (pointValues) {\n indexInCategory_1 = totalInCategory_1;\n }\n if (stackItem_1.hasValidPoints) {\n reversedStacks_1 ? // #16169\n totalInCategory_1++ : totalInCategory_1--;\n }\n // If `stacking` is not enabled, look for the index\n }\n else if (isArray(pointValues)) {\n // If there are multiple points with the same X\n // then gather all series in category, and\n // assign index\n var seriesIndexes = Object\n .keys(stackItem_1.points)\n .filter(function (pointKey) {\n // Filter out duplicate X's\n return !pointKey.match(',') &&\n // Filter out null points\n stackItem_1.points[pointKey] &&\n stackItem_1.points[pointKey].length > 1;\n })\n .map(parseFloat)\n .sort(function (a, b) { return b - a; });\n indexInCategory_1 = seriesIndexes.indexOf(_this.index);\n totalInCategory_1 = seriesIndexes.length;\n }\n }\n }\n });\n // Compute the adjusted x position\n var boxWidth = (totalInCategory_1 - 1) * metrics.paddedWidth +\n pointWidth;\n x = (point.plotX || 0) + boxWidth / 2 - pointWidth -\n indexInCategory_1 * metrics.paddedWidth;\n }\n return x;\n };\n /**\n * Translate each point to the plot area coordinate system and find\n * shape positions\n *\n * @private\n * @function Highcharts.seriesTypes.column#translate\n */\n ColumnSeries.prototype.translate = function () {\n var series = this,\n chart = series.chart,\n options = series.options,\n dense = series.dense =\n series.closestPointRange * series.xAxis.transA < 2,\n borderWidth = series.borderWidth = pick(options.borderWidth,\n dense ? 0 : 1 // #3635\n ),\n xAxis = series.xAxis,\n yAxis = series.yAxis,\n threshold = options.threshold,\n translatedThreshold = series.translatedThreshold =\n yAxis.getThreshold(threshold),\n minPointLength = pick(options.minPointLength, 5),\n metrics = series.getColumnMetrics(),\n seriesPointWidth = metrics.width,\n seriesXOffset = series.pointXOffset = metrics.offset,\n dataMin = series.dataMin,\n dataMax = series.dataMax;\n // postprocessed for border width\n var seriesBarW = series.barW =\n Math.max(seriesPointWidth, 1 + 2 * borderWidth);\n if (chart.inverted) {\n translatedThreshold -= 0.5; // #3355\n }\n // When the pointPadding is 0, we want the columns to be packed\n // tightly, so we allow individual columns to have individual sizes.\n // When pointPadding is greater, we strive for equal-width columns\n // (#2694).\n if (options.pointPadding) {\n seriesBarW = Math.ceil(seriesBarW);\n }\n Series.prototype.translate.apply(series);\n // Record the new values\n series.points.forEach(function (point) {\n var yBottom = pick(point.yBottom,\n translatedThreshold),\n safeDistance = 999 + Math.abs(yBottom),\n plotX = point.plotX || 0, \n // Don't draw too far outside plot area (#1303, #2241,\n // #4264)\n plotY = clamp(point.plotY, -safeDistance,\n yAxis.len + safeDistance);\n var up,\n barY = Math.min(plotY,\n yBottom),\n barH = Math.max(plotY,\n yBottom) - barY,\n pointWidth = seriesPointWidth,\n barX = plotX + seriesXOffset,\n barW = seriesBarW;\n // Handle options.minPointLength\n if (minPointLength && Math.abs(barH) < minPointLength) {\n barH = minPointLength;\n up = (!yAxis.reversed && !point.negative) ||\n (yAxis.reversed && point.negative);\n // Reverse zeros if there's no positive value in the series\n // in visible range (#7046)\n if (isNumber(threshold) &&\n isNumber(dataMax) &&\n point.y === threshold &&\n dataMax <= threshold &&\n // and if there's room for it (#7311)\n (yAxis.min || 0) < threshold &&\n // if all points are the same value (i.e zero) not draw\n // as negative points (#10646), but only if there's room\n // for it (#14876)\n (dataMin !== dataMax || (yAxis.max || 0) <= threshold)) {\n up = !up;\n }\n // If stacked...\n barY = (Math.abs(barY - translatedThreshold) > minPointLength ?\n // ...keep position\n yBottom - minPointLength :\n // #1485, #4051\n translatedThreshold -\n (up ? minPointLength : 0));\n }\n // Handle point.options.pointWidth\n // @todo Handle grouping/stacking too. Calculate offset properly\n if (defined(point.options.pointWidth)) {\n pointWidth = barW =\n Math.ceil(point.options.pointWidth);\n barX -= Math.round((pointWidth - seriesPointWidth) / 2);\n }\n // Adjust for null or missing points\n if (options.centerInCategory) {\n barX = series.adjustForMissingColumns(barX, pointWidth, point, metrics);\n }\n // Cache for access in polar\n point.barX = barX;\n point.pointWidth = pointWidth;\n // Fix the tooltip on center of grouped columns (#1216, #424,\n // #3648)\n point.tooltipPos = chart.inverted ?\n [\n clamp(yAxis.len + yAxis.pos - chart.plotLeft - plotY, yAxis.pos - chart.plotLeft, yAxis.len + yAxis.pos - chart.plotLeft),\n xAxis.len + xAxis.pos - chart.plotTop - barX - barW / 2,\n barH\n ] :\n [\n xAxis.left - chart.plotLeft + barX + barW / 2,\n clamp(plotY + yAxis.pos -\n chart.plotTop, yAxis.pos - chart.plotTop, yAxis.len + yAxis.pos - chart.plotTop),\n barH\n ];\n // Register shape type and arguments to be used in drawPoints\n // Allow shapeType defined on pointClass level\n point.shapeType = series.pointClass.prototype.shapeType || 'rect';\n point.shapeArgs = series.crispCol.apply(series, point.isNull ?\n // #3169, drilldown from null must have a position to work\n // from #6585, dataLabel should be placed on xAxis, not\n // floating in the middle of the chart\n [barX, translatedThreshold, barW, 0] :\n [barX, barY, barW, barH]);\n });\n };\n /**\n * Columns have no graph\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawGraph\n */\n ColumnSeries.prototype.drawGraph = function () {\n this.group[this.dense ? 'addClass' : 'removeClass']('highcharts-dense-data');\n };\n /**\n * Get presentational attributes\n *\n * @private\n * @function Highcharts.seriesTypes.column#pointAttribs\n */\n ColumnSeries.prototype.pointAttribs = function (point, state) {\n var options = this.options, p2o = this.pointAttrToOptions || {}, strokeOption = p2o.stroke || 'borderColor', strokeWidthOption = p2o['stroke-width'] || 'borderWidth';\n var stateOptions,\n zone,\n brightness,\n fill = (point && point.color) || this.color, \n // set to fill when borderColor null:\n stroke = ((point && point[strokeOption]) ||\n options[strokeOption] ||\n fill),\n dashstyle = (point && point.options.dashStyle) || options.dashStyle,\n strokeWidth = (point && point[strokeWidthOption]) ||\n options[strokeWidthOption] ||\n this[strokeWidthOption] || 0,\n opacity = pick(point && point.opacity,\n options.opacity, 1);\n // Handle zone colors\n if (point && this.zones.length) {\n zone = point.getZone();\n // When zones are present, don't use point.color (#4267).\n // Changed order (#6527), added support for colorAxis (#10670)\n fill = (point.options.color ||\n (zone && (zone.color || point.nonZonedColor)) ||\n this.color);\n if (zone) {\n stroke = zone.borderColor || stroke;\n dashstyle = zone.dashStyle || dashstyle;\n strokeWidth = zone.borderWidth || strokeWidth;\n }\n }\n // Select or hover states\n if (state && point) {\n stateOptions = merge(options.states[state], \n // #6401\n point.options.states &&\n point.options.states[state] ||\n {});\n brightness = stateOptions.brightness;\n fill =\n stateOptions.color || (typeof brightness !== 'undefined' &&\n color(fill)\n .brighten(stateOptions.brightness)\n .get()) || fill;\n stroke = stateOptions[strokeOption] || stroke;\n strokeWidth =\n stateOptions[strokeWidthOption] || strokeWidth;\n dashstyle = stateOptions.dashStyle || dashstyle;\n opacity = pick(stateOptions.opacity, opacity);\n }\n var ret = {\n fill: fill,\n stroke: stroke,\n 'stroke-width': strokeWidth,\n opacity: opacity\n };\n if (dashstyle) {\n ret.dashstyle = dashstyle;\n }\n return ret;\n };\n /**\n * Draw the columns. For bars, the series.group is rotated, so the same\n * coordinates apply for columns and bars. This method is inherited by\n * scatter series.\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawPoints\n */\n ColumnSeries.prototype.drawPoints = function (points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = this.chart,\n options = series.options,\n renderer = chart.renderer,\n animationLimit = options.animationLimit || 250;\n var shapeArgs;\n // draw the columns\n points.forEach(function (point) {\n var plotY = point.plotY;\n var graphic = point.graphic,\n hasGraphic = !!graphic,\n verb = graphic && chart.pointCount < animationLimit ?\n 'animate' : 'attr';\n if (isNumber(plotY) && point.y !== null) {\n shapeArgs = point.shapeArgs;\n // When updating a series between 2d and 3d or cartesian and\n // polar, the shape type changes.\n if (graphic && point.hasNewShapeType()) {\n graphic = graphic.destroy();\n }\n // Set starting position for point sliding animation.\n if (series.enabledDataSorting) {\n point.startXPos = series.xAxis.reversed ?\n -(shapeArgs ? (shapeArgs.width || 0) : 0) :\n series.xAxis.width;\n }\n if (!graphic) {\n point.graphic = graphic =\n renderer[point.shapeType](shapeArgs)\n .add(point.group || series.group);\n if (graphic &&\n series.enabledDataSorting &&\n chart.hasRendered &&\n chart.pointCount < animationLimit) {\n graphic.attr({\n x: point.startXPos\n });\n hasGraphic = true;\n verb = 'animate';\n }\n }\n if (graphic && hasGraphic) { // update\n graphic[verb](merge(shapeArgs));\n }\n // Border radius is not stylable (#6900)\n if (options.borderRadius) {\n graphic[verb]({\n r: options.borderRadius\n });\n }\n // Presentational\n if (!chart.styledMode) {\n graphic[verb](series.pointAttribs(point, (point.selected && 'select')))\n .shadow(point.allowShadow !== false && options.shadow, null, options.stacking && !options.borderRadius);\n }\n if (graphic) {\n graphic.addClass(point.getClassName(), true);\n graphic.attr({\n visibility: point.visible ? 'inherit' : 'hidden'\n });\n }\n }\n else if (graphic) {\n point.graphic = graphic.destroy(); // #1269\n }\n });\n };\n /**\n * Draw the tracker for a point.\n * @private\n */\n ColumnSeries.prototype.drawTracker = function (points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = series.chart,\n pointer = chart.pointer,\n onMouseOver = function (e) {\n var point = pointer.getPointFromEvent(e);\n // undefined on graph in scatterchart\n if (typeof point !== 'undefined') {\n pointer.isDirectTouch = true;\n point.onMouseOver(e);\n }\n };\n var dataLabels;\n // Add reference to the point\n points.forEach(function (point) {\n dataLabels = (isArray(point.dataLabels) ?\n point.dataLabels :\n (point.dataLabel ? [point.dataLabel] : []));\n if (point.graphic) {\n point.graphic.element.point = point;\n }\n dataLabels.forEach(function (dataLabel) {\n if (dataLabel.div) {\n dataLabel.div.point = point;\n }\n else {\n dataLabel.element.point = point;\n }\n });\n });\n // Add the event listeners, we need to do this only once\n if (!series._hasTracking) {\n series.trackerGroups.forEach(function (key) {\n if (series[key]) {\n // we don't always have dataLabelsGroup\n series[key]\n .addClass('highcharts-tracker')\n .on('mouseover', onMouseOver)\n .on('mouseout', function (e) {\n pointer.onTrackerMouseOut(e);\n });\n if (hasTouch) {\n series[key].on('touchstart', onMouseOver);\n }\n if (!chart.styledMode && series.options.cursor) {\n series[key]\n .css({ cursor: series.options.cursor });\n }\n }\n });\n series._hasTracking = true;\n }\n fireEvent(this, 'afterDrawTracker');\n };\n /**\n * Remove this series from the chart\n *\n * @private\n * @function Highcharts.seriesTypes.column#remove\n */\n ColumnSeries.prototype.remove = function () {\n var series = this,\n chart = series.chart;\n // column and bar series affects other series of the same type\n // as they are either stacked or grouped\n if (chart.hasRendered) {\n chart.series.forEach(function (otherSeries) {\n if (otherSeries.type === series.type) {\n otherSeries.isDirty = true;\n }\n });\n }\n Series.prototype.remove.apply(series, arguments);\n };\n ColumnSeries.defaultOptions = merge(Series.defaultOptions, ColumnSeriesDefaults);\n return ColumnSeries;\n }(Series));\n extend(ColumnSeries.prototype, {\n cropShoulder: 0,\n // When tooltip is not shared, this series (and derivatives) requires\n // direct touch/hover. KD-tree does not apply.\n directTouch: true,\n /**\n * Use a solid rectangle like the area series types\n *\n * @private\n * @function Highcharts.seriesTypes.column#drawLegendSymbol\n *\n * @param {Highcharts.Legend} legend\n * The legend object\n *\n * @param {Highcharts.Series|Highcharts.Point} item\n * The series (this) or point\n */\n drawLegendSymbol: LegendSymbol.drawRectangle,\n getSymbol: noop,\n // use separate negative stacks, unlike area stacks where a negative\n // point is substracted from previous (#1910)\n negStacks: true,\n trackerGroups: ['group', 'dataLabelsGroup']\n });\n SeriesRegistry.registerSeriesType('column', ColumnSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Adjusted width and x offset of the columns for grouping.\n *\n * @private\n * @interface Highcharts.ColumnMetricsObject\n */ /**\n * Width of the columns.\n * @name Highcharts.ColumnMetricsObject#width\n * @type {number}\n */ /**\n * Offset of the columns.\n * @name Highcharts.ColumnMetricsObject#offset\n * @type {number}\n */\n ''; // detach doclets above\n\n return ColumnSeries;\n });\n _registerModule(_modules, 'Core/Series/DataLabel.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Utilities.js']], function (A, F, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var getDeferredAnimation = A.getDeferredAnimation;\n var format = F.format;\n var defined = U.defined,\n extend = U.extend,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isString = U.isString,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n splat = U.splat;\n /* *\n *\n * Composition\n *\n * */\n /* eslint-disable valid-jsdoc */\n var DataLabel;\n (function (DataLabel) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Align each individual data label.\n * @private\n */\n function alignDataLabel(point, dataLabel, options, alignTo, isNew) {\n var series = this,\n chart = this.chart,\n inverted = this.isCartesian && chart.inverted,\n enabledDataSorting = this.enabledDataSorting,\n plotX = point.plotX,\n plotY = point.plotY,\n rotation = options.rotation,\n align = options.align,\n isInsidePlot = defined(plotX) &&\n defined(plotY) &&\n chart.isInsidePlot(plotX,\n Math.round(plotY), {\n inverted: inverted,\n paneCoordinates: true,\n series: series\n }),\n setStartPos = function (alignOptions) {\n if (enabledDataSorting && series.xAxis && !justify) {\n series.setDataLabelStartPos(point,\n dataLabel,\n isNew,\n isInsidePlot,\n alignOptions);\n }\n };\n var baseline,\n rotCorr, // rotation correction\n // Math.round for rounding errors (#2683), alignTo to allow column\n // labels (#2700)\n alignAttr, // the final position;\n justify = pick(options.overflow, (enabledDataSorting ? 'none' : 'justify')) === 'justify', visible = this.visible &&\n point.visible !== false &&\n defined(plotX) &&\n (point.series.forceDL ||\n (enabledDataSorting && !justify) ||\n isInsidePlot ||\n (\n // If the data label is inside the align box, it is\n // enough that parts of the align box is inside the\n // plot area (#12370). When stacking, it is always\n // inside regardless of the option (#15148).\n pick(options.inside, !!this.options.stacking) &&\n alignTo &&\n chart.isInsidePlot(plotX, inverted ?\n alignTo.x + 1 :\n alignTo.y + alignTo.height - 1, {\n inverted: inverted,\n paneCoordinates: true,\n series: series\n })));\n var pos = point.pos();\n if (visible && pos) {\n if (rotation) {\n dataLabel.attr({ align: align });\n }\n var bBox = dataLabel.getBBox(true),\n bBoxCorrection = [0, 0];\n baseline = chart.renderer.fontMetrics(chart.styledMode ? void 0 : options.style.fontSize, dataLabel).b;\n // The alignment box is a singular point\n alignTo = extend({\n x: pos[0],\n y: Math.round(pos[1]),\n width: 0,\n height: 0\n }, alignTo);\n // Add the text size for alignment calculation\n extend(options, {\n width: bBox.width,\n height: bBox.height\n });\n // Allow a hook for changing alignment in the last moment, then do\n // the alignment\n if (rotation) {\n justify = false; // Not supported for rotated text\n rotCorr = chart.renderer.rotCorr(baseline, rotation); // #3723\n alignAttr = {\n x: (alignTo.x +\n (options.x || 0) +\n alignTo.width / 2 +\n rotCorr.x),\n y: (alignTo.y +\n (options.y || 0) +\n { top: 0, middle: 0.5, bottom: 1 }[options.verticalAlign] *\n alignTo.height)\n };\n bBoxCorrection = [\n bBox.x - Number(dataLabel.attr('x')),\n bBox.y - Number(dataLabel.attr('y'))\n ];\n setStartPos(alignAttr); // data sorting\n dataLabel[isNew ? 'attr' : 'animate'](alignAttr);\n }\n else {\n setStartPos(alignTo); // data sorting\n dataLabel.align(options, void 0, alignTo);\n alignAttr = dataLabel.alignAttr;\n }\n // Handle justify or crop\n if (justify && alignTo.height >= 0) { // #8830\n this.justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew);\n // Now check that the data label is within the plot area\n }\n else if (pick(options.crop, true)) {\n var x = alignAttr.x,\n y = alignAttr.y;\n x += bBoxCorrection[0];\n y += bBoxCorrection[1];\n // Uncomment this block to visualize the bounding boxes used for\n // determining visibility\n /*\n chart.renderer.rect(\n chart.plotLeft + alignAttr.x + bBox.x,\n chart.plotTop + alignAttr.y + bBox.y + 9999,\n bBox.width,\n bBox.height\n ).attr({\n stroke: 'rgba(0, 0, 0, 0.3)',\n 'stroke-width': 0.5\n }).add();\n chart.renderer.circle(\n chart.plotLeft + alignAttr.x,\n chart.plotTop + alignAttr.y,\n 2\n ).attr({\n fill: 'red',\n zIndex: 20\n }).add();\n // */\n visible =\n chart.isInsidePlot(x, y, {\n paneCoordinates: true,\n series: series\n }) &&\n chart.isInsidePlot(x + bBox.width, y + bBox.height, {\n paneCoordinates: true,\n series: series\n });\n }\n // When we're using a shape, make it possible with a connector or an\n // arrow pointing to thie point\n if (options.shape && !rotation) {\n dataLabel[isNew ? 'attr' : 'animate']({\n anchorX: pos[0],\n anchorY: pos[1]\n });\n }\n }\n // To use alignAttr property in hideOverlappingLabels\n if (isNew && enabledDataSorting) {\n dataLabel.placed = false;\n }\n // Show or hide based on the final aligned position\n if (!visible && (!enabledDataSorting || justify)) {\n dataLabel.hide();\n dataLabel.placed = false; // don't animate back in\n }\n else {\n dataLabel.show();\n }\n }\n /**\n * Handle the dataLabels.filter option.\n * @private\n */\n function applyFilter(point, options) {\n var filter = options.filter;\n if (filter) {\n var op = filter.operator;\n var prop = point[filter.property];\n var val = filter.value;\n if ((op === '>' && prop > val) ||\n (op === '<' && prop < val) ||\n (op === '>=' && prop >= val) ||\n (op === '<=' && prop <= val) ||\n (op === '==' && prop == val) || // eslint-disable-line eqeqeq\n (op === '===' && prop === val)) {\n return true;\n }\n return false;\n }\n return true;\n }\n /**\n * @private\n */\n function compose(SeriesClass) {\n if (composedClasses.indexOf(SeriesClass) === -1) {\n var seriesProto = SeriesClass.prototype;\n composedClasses.push(SeriesClass);\n seriesProto.alignDataLabel = alignDataLabel;\n seriesProto.drawDataLabels = drawDataLabels;\n seriesProto.justifyDataLabel = justifyDataLabel;\n seriesProto.setDataLabelStartPos = setDataLabelStartPos;\n }\n }\n DataLabel.compose = compose;\n /**\n * Draw the data labels\n * @private\n */\n function drawDataLabels(points) {\n if (points === void 0) { points = this.points; }\n var series = this,\n chart = series.chart,\n seriesOptions = series.options,\n hasRendered = series.hasRendered || 0,\n renderer = chart.renderer,\n _a = chart.options.chart,\n backgroundColor = _a.backgroundColor,\n plotBackgroundColor = _a.plotBackgroundColor,\n contrastColor = renderer.getContrast((isString(plotBackgroundColor) && plotBackgroundColor) ||\n (isString(backgroundColor) && backgroundColor) ||\n \"#000000\" /* Palette.neutralColor100 */);\n var seriesDlOptions = seriesOptions.dataLabels,\n pointOptions,\n dataLabelsGroup;\n var dataLabelAnim = seriesDlOptions.animation,\n animationConfig = seriesDlOptions.defer ?\n getDeferredAnimation(chart,\n dataLabelAnim,\n series) :\n { defer: 0,\n duration: 0 };\n // Merge in plotOptions.dataLabels for series\n seriesDlOptions = mergeArrays(mergeArrays(chart.options.plotOptions &&\n chart.options.plotOptions.series &&\n chart.options.plotOptions.series.dataLabels, chart.options.plotOptions &&\n chart.options.plotOptions[series.type] &&\n chart.options.plotOptions[series.type].dataLabels), seriesDlOptions);\n fireEvent(this, 'drawDataLabels');\n if (isArray(seriesDlOptions) ||\n seriesDlOptions.enabled ||\n series._hasPointLabels) {\n // Create a separate group for the data labels to avoid rotation\n dataLabelsGroup = series.plotGroup('dataLabelsGroup', 'data-labels', !hasRendered ? 'hidden' : 'inherit', // #5133, #10220\n seriesDlOptions.zIndex || 6);\n dataLabelsGroup.attr({ opacity: +hasRendered }); // #3300\n if (!hasRendered) {\n var group = series.dataLabelsGroup;\n if (group) {\n if (series.visible) { // #2597, #3023, #3024\n dataLabelsGroup.show();\n }\n group[seriesOptions.animation ? 'animate' : 'attr']({ opacity: 1 }, animationConfig);\n }\n }\n // Make the labels for each point\n points.forEach(function (point) {\n // Merge in series options for the point.\n // @note dataLabelAttribs (like pointAttribs) would eradicate\n // the need for dlOptions, and simplify the section below.\n pointOptions = splat(mergeArrays(seriesDlOptions, \n // dlOptions is used in treemaps\n (point.dlOptions ||\n (point.options && point.options.dataLabels))));\n // Handle each individual data label for this point\n pointOptions.forEach(function (labelOptions, i) {\n // Options for one datalabel\n var labelEnabled = (labelOptions.enabled &&\n // #2282, #4641, #7112, #10049\n (!point.isNull || point.dataLabelOnNull) &&\n applyFilter(point,\n labelOptions)),\n connector = point.connectors ?\n point.connectors[i] :\n point.connector;\n var labelConfig,\n formatString,\n labelText,\n style,\n rotation,\n attr,\n dataLabel = point.dataLabels ?\n point.dataLabels[i] : point.dataLabel,\n isNew = !dataLabel;\n var labelDistance = pick(labelOptions.distance,\n point.labelDistance);\n if (labelEnabled) {\n // Create individual options structure that can be\n // extended without affecting others\n labelConfig = point.getLabelConfig();\n formatString = pick(labelOptions[point.formatPrefix + 'Format'], labelOptions.format);\n labelText = defined(formatString) ?\n format(formatString, labelConfig, chart) :\n (labelOptions[point.formatPrefix + 'Formatter'] ||\n labelOptions.formatter).call(labelConfig, labelOptions);\n style = labelOptions.style;\n rotation = labelOptions.rotation;\n if (!chart.styledMode) {\n // Determine the color\n style.color = pick(labelOptions.color, style.color, series.color, \"#000000\" /* Palette.neutralColor100 */);\n // Get automated contrast color\n if (style.color === 'contrast') {\n point.contrastColor = renderer.getContrast((point.color || series.color));\n style.color = (!defined(labelDistance) &&\n labelOptions.inside) ||\n labelDistance < 0 ||\n !!seriesOptions.stacking ?\n point.contrastColor :\n contrastColor;\n }\n else {\n delete point.contrastColor;\n }\n if (seriesOptions.cursor) {\n style.cursor = seriesOptions.cursor;\n }\n }\n attr = {\n r: labelOptions.borderRadius || 0,\n rotation: rotation,\n padding: labelOptions.padding,\n zIndex: 1\n };\n if (!chart.styledMode) {\n var backgroundColor_1 = labelOptions.backgroundColor,\n borderColor = labelOptions.borderColor;\n attr.fill = backgroundColor_1 === 'auto' ?\n point.color :\n backgroundColor_1;\n attr.stroke = borderColor === 'auto' ?\n point.color :\n borderColor;\n attr['stroke-width'] = labelOptions.borderWidth;\n }\n // Remove unused attributes (#947)\n objectEach(attr, function (val, name) {\n if (typeof val === 'undefined') {\n delete attr[name];\n }\n });\n }\n // If the point is outside the plot area, destroy it. #678,\n // #820\n if (dataLabel && (!labelEnabled ||\n !defined(labelText) ||\n !!dataLabel.div !== !!labelOptions.useHTML ||\n (\n // Change from no rotation to rotation and\n // vice versa. Don't use defined() because\n // rotation = 0 means also rotation = undefined\n (!dataLabel.rotation ||\n !labelOptions.rotation) &&\n dataLabel.rotation !== labelOptions.rotation))) {\n isNew = true;\n point.dataLabel = dataLabel =\n point.dataLabel && point.dataLabel.destroy();\n if (point.dataLabels) {\n // Remove point.dataLabels if this was the last one\n if (point.dataLabels.length === 1) {\n delete point.dataLabels;\n }\n else {\n delete point.dataLabels[i];\n }\n }\n if (!i) {\n delete point.dataLabel;\n }\n if (connector) {\n point.connector = point.connector.destroy();\n if (point.connectors) {\n // Remove point.connectors if this was the last\n // one\n if (point.connectors.length === 1) {\n delete point.connectors;\n }\n else {\n delete point.connectors[i];\n }\n }\n }\n }\n // Individual labels are disabled if the are explicitly\n // disabled in the point options, or if they fall outside\n // the plot area.\n if (labelEnabled && defined(labelText)) {\n if (!dataLabel) {\n // Create new label element\n point.dataLabels = point.dataLabels || [];\n dataLabel = point.dataLabels[i] = rotation ?\n // Labels don't rotate, use text element\n renderer.text(labelText, 0, 0, labelOptions.useHTML)\n .addClass('highcharts-data-label') :\n // We can use label\n renderer.label(labelText, 0, 0, labelOptions.shape, null, null, labelOptions.useHTML, null, 'data-label');\n // Store for backwards compatibility\n if (!i) {\n point.dataLabel = dataLabel;\n }\n dataLabel.addClass(' highcharts-data-label-color-' +\n point.colorIndex +\n ' ' + (labelOptions.className || '') +\n ( // #3398\n labelOptions.useHTML ?\n ' highcharts-tracker' :\n ''));\n }\n else {\n // Use old element and just update text\n attr.text = labelText;\n }\n // Store data label options for later access\n dataLabel.options = labelOptions;\n dataLabel.attr(attr);\n if (!chart.styledMode) {\n // Styles must be applied before add in order to\n // read text bounding box\n dataLabel.css(style).shadow(labelOptions.shadow);\n }\n var textPathOptions = labelOptions[point.formatPrefix + 'TextPath'] ||\n labelOptions.textPath;\n if (textPathOptions && !labelOptions.useHTML) {\n dataLabel.setTextPath((point.getDataLabelPath &&\n point.getDataLabelPath(dataLabel)) || point.graphic, textPathOptions);\n if (point.dataLabelPath &&\n !textPathOptions.enabled) {\n // clean the DOM\n point.dataLabelPath = (point.dataLabelPath.destroy());\n }\n }\n if (!dataLabel.added) {\n dataLabel.add(dataLabelsGroup);\n }\n // Now the data label is created and placed at 0,0, so\n // we need to align it\n series.alignDataLabel(point, dataLabel, labelOptions, null, isNew);\n }\n else if (dataLabel) {\n dataLabel.hide();\n }\n });\n });\n }\n fireEvent(this, 'afterDrawDataLabels');\n }\n /**\n * If data labels fall partly outside the plot area, align them back in, in\n * a way that doesn't hide the point.\n * @private\n */\n function justifyDataLabel(dataLabel, options, alignAttr, bBox, alignTo, isNew) {\n var chart = this.chart,\n align = options.align,\n verticalAlign = options.verticalAlign,\n padding = dataLabel.box ? 0 : (dataLabel.padding || 0);\n var _a = options.x,\n x = _a === void 0 ? 0 : _a,\n _b = options.y,\n y = _b === void 0 ? 0 : _b,\n off,\n justified;\n // Off left\n off = (alignAttr.x || 0) + padding;\n if (off < 0) {\n if (align === 'right' && x >= 0) {\n options.align = 'left';\n options.inside = true;\n }\n else {\n x -= off;\n }\n justified = true;\n }\n // Off right\n off = (alignAttr.x || 0) + bBox.width - padding;\n if (off > chart.plotWidth) {\n if (align === 'left' && x <= 0) {\n options.align = 'right';\n options.inside = true;\n }\n else {\n x += chart.plotWidth - off;\n }\n justified = true;\n }\n // Off top\n off = alignAttr.y + padding;\n if (off < 0) {\n if (verticalAlign === 'bottom' && y >= 0) {\n options.verticalAlign = 'top';\n options.inside = true;\n }\n else {\n y -= off;\n }\n justified = true;\n }\n // Off bottom\n off = (alignAttr.y || 0) + bBox.height - padding;\n if (off > chart.plotHeight) {\n if (verticalAlign === 'top' && y <= 0) {\n options.verticalAlign = 'bottom';\n options.inside = true;\n }\n else {\n y += chart.plotHeight - off;\n }\n justified = true;\n }\n if (justified) {\n options.x = x;\n options.y = y;\n dataLabel.placed = !isNew;\n dataLabel.align(options, void 0, alignTo);\n }\n return justified;\n }\n /**\n * Merge two objects that can be arrays. If one of them is an array, the\n * other is merged into each element. If both are arrays, each element is\n * merged by index. If neither are arrays, we use normal merge.\n * @private\n */\n function mergeArrays(one, two) {\n var res = [],\n i;\n if (isArray(one) && !isArray(two)) {\n res = one.map(function (el) {\n return merge(el, two);\n });\n }\n else if (isArray(two) && !isArray(one)) {\n res = two.map(function (el) {\n return merge(one, el);\n });\n }\n else if (!isArray(one) && !isArray(two)) {\n res = merge(one, two);\n }\n else {\n i = Math.max(one.length, two.length);\n while (i--) {\n res[i] = merge(one[i], two[i]);\n }\n }\n return res;\n }\n /**\n * Set starting position for data label sorting animation.\n * @private\n */\n function setDataLabelStartPos(point, dataLabel, isNew, isInside, alignOptions) {\n var chart = this.chart,\n inverted = chart.inverted,\n xAxis = this.xAxis,\n reversed = xAxis.reversed,\n labelCenter = inverted ? dataLabel.height / 2 : dataLabel.width / 2,\n pointWidth = point.pointWidth,\n halfWidth = pointWidth ? pointWidth / 2 : 0;\n dataLabel.startXPos = inverted ?\n alignOptions.x :\n (reversed ?\n -labelCenter - halfWidth :\n xAxis.width - labelCenter + halfWidth);\n dataLabel.startYPos = inverted ?\n (reversed ?\n this.yAxis.height - labelCenter + halfWidth :\n -labelCenter - halfWidth) : alignOptions.y;\n // We need to handle visibility in case of sorting point outside plot\n // area\n if (!isInside) {\n dataLabel\n .attr({ opacity: 1 })\n .animate({ opacity: 0 }, void 0, dataLabel.hide);\n }\n else if (dataLabel.visibility === 'hidden') {\n dataLabel.show();\n dataLabel\n .attr({ opacity: 0 })\n .animate({ opacity: 1 });\n }\n // Save start position on first render, but do not change position\n if (!chart.hasRendered) {\n return;\n }\n // Set start position\n if (isNew) {\n dataLabel.attr({ x: dataLabel.startXPos, y: dataLabel.startYPos });\n }\n dataLabel.placed = true;\n }\n })(DataLabel || (DataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Callback JavaScript function to format the data label as a string. Note that\n * if a `format` is defined, the format takes precedence and the formatter is\n * ignored.\n *\n * @callback Highcharts.DataLabelsFormatterCallbackFunction\n *\n * @param {Highcharts.PointLabelObject} this\n * Data label context to format\n *\n * @param {Highcharts.DataLabelsOptions} options\n * [API options](/highcharts/plotOptions.series.dataLabels) of the data label\n *\n * @return {number|string|null|undefined}\n * Formatted data label text\n */\n /**\n * Values for handling data labels that flow outside the plot area.\n *\n * @typedef {\"allow\"|\"justify\"} Highcharts.DataLabelsOverflowValue\n */\n ''; // keeps doclets above in JS file\n\n return DataLabel;\n });\n _registerModule(_modules, 'Series/Column/ColumnDataLabel.js', [_modules['Core/Series/DataLabel.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (DataLabel, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var Series = SeriesRegistry.series;\n var merge = U.merge,\n pick = U.pick;\n /* *\n *\n * Composition\n *\n * */\n var ColumnDataLabel;\n (function (ColumnDataLabel) {\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Override the basic data label alignment by adjusting for the position of\n * the column.\n * @private\n */\n function alignDataLabel(point, dataLabel, options, alignTo, isNew) {\n var inverted = this.chart.inverted,\n series = point.series,\n xLen = (series.xAxis ? series.xAxis.len : this.chart.plotSizeX) || 0,\n yLen = (series.yAxis ? series.yAxis.len : this.chart.plotSizeY) || 0, \n // data label box for alignment\n dlBox = point.dlBox || point.shapeArgs,\n below = pick(point.below, // range series\n point.plotY >\n pick(this.translatedThreshold,\n yLen)), \n // draw it inside the box?\n inside = pick(options.inside, !!this.options.stacking),\n overshoot;\n // Align to the column itself, or the top of it\n if (dlBox) { // Area range uses this method but not alignTo\n alignTo = merge(dlBox);\n if (alignTo.y < 0) {\n alignTo.height += alignTo.y;\n alignTo.y = 0;\n }\n // If parts of the box overshoots outside the plot area, modify the\n // box to center the label inside\n overshoot = alignTo.y + alignTo.height - yLen;\n if (overshoot > 0 && overshoot < alignTo.height) {\n alignTo.height -= overshoot;\n }\n if (inverted) {\n alignTo = {\n x: yLen - alignTo.y - alignTo.height,\n y: xLen - alignTo.x - alignTo.width,\n width: alignTo.height,\n height: alignTo.width\n };\n }\n // Compute the alignment box\n if (!inside) {\n if (inverted) {\n alignTo.x += below ? 0 : alignTo.width;\n alignTo.width = 0;\n }\n else {\n alignTo.y += below ? alignTo.height : 0;\n alignTo.height = 0;\n }\n }\n }\n // When alignment is undefined (typically columns and bars), display the\n // individual point below or above the point depending on the threshold\n options.align = pick(options.align, !inverted || inside ? 'center' : below ? 'right' : 'left');\n options.verticalAlign = pick(options.verticalAlign, inverted || inside ? 'middle' : below ? 'top' : 'bottom');\n // Call the parent method\n Series.prototype.alignDataLabel.call(this, point, dataLabel, options, alignTo, isNew);\n // If label was justified and we have contrast, set it:\n if (options.inside && point.contrastColor) {\n dataLabel.css({\n color: point.contrastColor\n });\n }\n }\n /** @private */\n function compose(ColumnSeriesClass) {\n DataLabel.compose(Series);\n if (composedClasses.indexOf(ColumnSeriesClass) === -1) {\n composedClasses.push(ColumnSeriesClass);\n ColumnSeriesClass.prototype.alignDataLabel = alignDataLabel;\n }\n }\n ColumnDataLabel.compose = compose;\n })(ColumnDataLabel || (ColumnDataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnDataLabel;\n });\n _registerModule(_modules, 'Series/Bar/BarSeries.js', [_modules['Series/Column/ColumnSeries.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ColumnSeries, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * Bar series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.bar\n *\n * @augments Highcharts.Series\n */\n var BarSeries = /** @class */ (function (_super) {\n __extends(BarSeries, _super);\n function BarSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n }\n /**\n * A bar series is a special type of column series where the columns are\n * horizontal.\n *\n * @sample highcharts/demo/bar-basic/\n * Bar chart\n *\n * @extends plotOptions.column\n * @product highcharts\n * @optionparent plotOptions.bar\n */\n BarSeries.defaultOptions = merge(ColumnSeries.defaultOptions, {\n // nothing here yet\n });\n return BarSeries;\n }(ColumnSeries));\n extend(BarSeries.prototype, {\n inverted: true\n });\n SeriesRegistry.registerSeriesType('bar', BarSeries);\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A `bar` series. If the [type](#series.bar.type) option is not specified,\n * it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.bar\n * @excluding connectNulls, dashStyle, dataParser, dataURL, gapSize, gapUnit,\n * linecap, lineWidth, marker, connectEnds, step\n * @product highcharts\n * @apioption series.bar\n */\n /**\n * An array of data points for the series. For the `bar` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 5],\n * [1, 10],\n * [2, 3]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.bar.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 10,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.column.data\n * @product highcharts\n * @apioption series.bar.data\n */\n /**\n * @excluding halo,lineWidth,lineWidthPlus,marker\n * @product highcharts highstock\n * @apioption series.bar.states.hover\n */\n /**\n * @excluding halo,lineWidth,lineWidthPlus,marker\n * @product highcharts highstock\n * @apioption series.bar.states.select\n */\n ''; // gets doclets above into transpilat\n\n return BarSeries;\n });\n _registerModule(_modules, 'Series/Scatter/ScatterSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A scatter plot uses cartesian coordinates to display values for two\n * variables for a set of data.\n *\n * @sample {highcharts} highcharts/demo/scatter/\n * Scatter plot\n *\n * @extends plotOptions.line\n * @excluding cropThreshold, pointPlacement, shadow, useOhlcData\n * @product highcharts highstock\n * @optionparent plotOptions.scatter\n */\n var ScatterSeriesDefaults = {\n /**\n * The width of the line connecting the data points.\n *\n * @sample {highcharts} highcharts/plotoptions/scatter-linewidth-none/\n * 0 by default\n * @sample {highcharts} highcharts/plotoptions/scatter-linewidth-1/\n * 1px\n *\n * @product highcharts highstock\n */\n lineWidth: 0,\n findNearestPointBy: 'xy',\n /**\n * Apply a jitter effect for the rendered markers. When plotting\n * discrete values,\n a little random noise may help telling the points\n * apart. The jitter setting applies a random displacement of up to `n`\n * axis units in either direction. So for example on a horizontal X\n * axis,\n setting the `jitter.x` to 0.24 will render the point in a\n * random position between 0.24 units to the left and 0.24 units to the\n * right of the true axis position. On a category axis,\n setting it to\n * 0.5 will fill up the bin and make the data appear continuous.\n *\n * When rendered on top of a box plot or a column series,\n a jitter value\n * of 0.24 will correspond to the underlying series' default\n * [groupPadding](\n * https://api.highcharts.com/highcharts/plotOptions.column.groupPadding)\n * and [pointPadding](\n * https://api.highcharts.com/highcharts/plotOptions.column.pointPadding)\n * settings.\n *\n * @sample {highcharts} highcharts/demo/scatter-jitter\n * Jitter on a scatter plot\n *\n * @sample {highcharts} highcharts/series-scatter/jitter-boxplot\n * Jittered scatter plot on top of a box plot\n *\n * @product highcharts highstock\n * @since 7.0.2\n */\n jitter: {\n /**\n * The maximal X offset for the random jitter effect.\n */\n x: 0,\n /**\n * The maximal Y offset for the random jitter effect.\n */\n y: 0\n },\n marker: {\n enabled: true // Overrides auto-enabling in line series (#3647)\n },\n /**\n * Sticky tracking of mouse events. When true,\n the `mouseOut` event\n * on a series isn't triggered until the mouse moves over another\n * series,\n or out of the plot area. When false,\n the `mouseOut` event on\n * a series is triggered when the mouse leaves the area around the\n * series' graph or markers. This also implies the tooltip. When\n * `stickyTracking` is false and `tooltip.shared` is false,\n the tooltip\n * will be hidden when moving the mouse between series.\n *\n * @type {boolean}\n * @default false\n * @product highcharts highstock highmaps\n * @apioption plotOptions.scatter.stickyTracking\n */\n /**\n * A configuration object for the tooltip rendering of each single\n * series. Properties are inherited from [tooltip](#tooltip).\n * Overridable properties are `headerFormat`,\n `pointFormat`,\n * `yDecimals`,\n `xDateFormat`,\n `yPrefix` and `ySuffix`. Unlike other\n * series,\n in a scatter plot the series.name by default shows in the\n * headerFormat and point.x and point.y in the pointFormat.\n *\n * @product highcharts highstock highmaps\n */\n tooltip: {\n /**\n * @product highcharts highstock\n */\n headerFormat: '<span style=\"color:{point.color}\">\\u25CF</span> ' +\n '<span style=\"font-size: 10px\"> {series.name}</span><br/>',\n pointFormat: 'x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>'\n }\n };\n /**\n * A `scatter` series. If the [type](#series.scatter.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.scatter\n * @excluding cropThreshold, dataParser, dataURL, useOhlcData\n * @product highcharts highstock\n * @apioption series.scatter\n */\n /**\n * An array of data points for the series. For the `scatter` series\n * type, points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. The `x` values will be automatically\n * calculated, either starting at 0 and incremented by 1, or from\n * `pointStart` and `pointInterval` given in the series options. If the axis\n * has categories, these will be used. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of arrays with 2 values. In this case, the values correspond to\n * `x,y`. If the first value is a string, it is applied as the name of the\n * point, and the `x` value is inferred.\n * ```js\n * data: [\n * [0, 0],\n * [1, 8],\n * [2, 9]\n * ]\n * ```\n *\n * 3. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.scatter.turboThreshold), this option is not\n * available.\n * ```js\n * data: [{\n * x: 1,\n * y: 2,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * x: 1,\n * y: 4,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<(number|string),(number|null)>|null|*>}\n * @extends series.line.data\n * @product highcharts highstock\n * @apioption series.scatter.data\n */\n ''; // keeps doclets above in JS file\n /* *\n *\n * Default Export\n *\n * */\n\n return ScatterSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Scatter/ScatterSeries.js', [_modules['Series/Scatter/ScatterSeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ScatterSeriesDefaults, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var _a = SeriesRegistry.seriesTypes,\n ColumnSeries = _a.column,\n LineSeries = _a.line;\n var addEvent = U.addEvent,\n extend = U.extend,\n merge = U.merge;\n /* *\n *\n * Class\n *\n * */\n /**\n * Scatter series type.\n *\n * @private\n */\n var ScatterSeries = /** @class */ (function (_super) {\n __extends(ScatterSeries, _super);\n function ScatterSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.data = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Optionally add the jitter effect.\n * @private\n */\n ScatterSeries.prototype.applyJitter = function () {\n var series = this,\n jitter = this.options.jitter,\n len = this.points.length;\n /**\n * Return a repeatable, pseudo-random number based on an integer\n * seed.\n * @private\n */\n function unrandom(seed) {\n var rand = Math.sin(seed) * 10000;\n return rand - Math.floor(rand);\n }\n if (jitter) {\n this.points.forEach(function (point, i) {\n ['x', 'y'].forEach(function (dim, j) {\n var axis,\n plotProp = 'plot' + dim.toUpperCase(),\n min,\n max,\n translatedJitter;\n if (jitter[dim] && !point.isNull) {\n axis = series[dim + 'Axis'];\n translatedJitter =\n jitter[dim] * axis.transA;\n if (axis && !axis.isLog) {\n // Identify the outer bounds of the jitter range\n min = Math.max(0, point[plotProp] - translatedJitter);\n max = Math.min(axis.len, point[plotProp] + translatedJitter);\n // Find a random position within this range\n point[plotProp] = min +\n (max - min) * unrandom(i + j * len);\n // Update clientX for the tooltip k-d-tree\n if (dim === 'x') {\n point.clientX = point.plotX;\n }\n }\n }\n });\n });\n }\n };\n /**\n * @private\n */\n ScatterSeries.prototype.drawGraph = function () {\n if (this.options.lineWidth) {\n _super.prototype.drawGraph.call(this);\n }\n else if (this.graph) {\n this.graph = this.graph.destroy();\n }\n };\n ScatterSeries.defaultOptions = merge(LineSeries.defaultOptions, ScatterSeriesDefaults);\n return ScatterSeries;\n }(LineSeries));\n extend(ScatterSeries.prototype, {\n drawTracker: ColumnSeries.prototype.drawTracker,\n sorted: false,\n requireSorting: false,\n noSharedTooltip: true,\n trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],\n takeOrdinalPosition: false // #2342\n });\n /* *\n *\n * Events\n *\n * */\n /* eslint-disable no-invalid-this */\n addEvent(ScatterSeries, 'afterTranslate', function () {\n this.applyJitter();\n });\n SeriesRegistry.registerSeriesType('scatter', ScatterSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return ScatterSeries;\n });\n _registerModule(_modules, 'Series/CenteredUtilities.js', [_modules['Core/Globals.js'], _modules['Core/Series/Series.js'], _modules['Core/Utilities.js']], function (H, Series, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var deg2rad = H.deg2rad;\n var fireEvent = U.fireEvent,\n isNumber = U.isNumber,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /**\n * @private\n */\n var CenteredUtilities;\n (function (CenteredUtilities) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Get the center of the pie based on the size and center options relative\n * to the plot area. Borrowed by the polar and gauge series types.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getCenter\n */\n function getCenter() {\n var options = this.options,\n chart = this.chart,\n slicingRoom = 2 * (options.slicedOffset || 0),\n plotWidth = chart.plotWidth - 2 * slicingRoom,\n plotHeight = chart.plotHeight - 2 * slicingRoom,\n centerOption = options.center,\n smallestSize = Math.min(plotWidth,\n plotHeight),\n thickness = options.thickness;\n var handleSlicingRoom,\n size = options.size,\n innerSize = options.innerSize || 0,\n i,\n value;\n if (typeof size === 'string') {\n size = parseFloat(size);\n }\n if (typeof innerSize === 'string') {\n innerSize = parseFloat(innerSize);\n }\n var positions = [\n pick(centerOption[0], '50%'),\n pick(centerOption[1], '50%'),\n // Prevent from negative values\n pick(size && size < 0 ? void 0 : options.size, '100%'),\n pick(innerSize && innerSize < 0 ? void 0 : options.innerSize || 0, '0%')\n ];\n // No need for inner size in angular (gauges) series but still required\n // for pie series\n if (chart.angular && !(this instanceof Series)) {\n positions[3] = 0;\n }\n for (i = 0; i < 4; ++i) {\n value = positions[i];\n handleSlicingRoom = i < 2 || (i === 2 && /%$/.test(value));\n // i == 0: centerX, relative to width\n // i == 1: centerY, relative to height\n // i == 2: size, relative to smallestSize\n // i == 3: innerSize, relative to size\n positions[i] = relativeLength(value, [plotWidth, plotHeight, smallestSize, positions[2]][i]) + (handleSlicingRoom ? slicingRoom : 0);\n }\n // innerSize cannot be larger than size (#3632)\n if (positions[3] > positions[2]) {\n positions[3] = positions[2];\n }\n // thickness overrides innerSize, need to be less than pie size (#6647)\n if (isNumber(thickness) &&\n thickness * 2 < positions[2] && thickness > 0) {\n positions[3] = positions[2] - thickness * 2;\n }\n fireEvent(this, 'afterGetCenter', { positions: positions });\n return positions;\n }\n CenteredUtilities.getCenter = getCenter;\n /**\n * getStartAndEndRadians - Calculates start and end angles in radians.\n * Used in series types such as pie and sunburst.\n *\n * @private\n * @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians\n *\n * @param {number} [start]\n * Start angle in degrees.\n *\n * @param {number} [end]\n * Start angle in degrees.\n *\n * @return {Highcharts.RadianAngles}\n * Returns an object containing start and end angles as radians.\n */\n function getStartAndEndRadians(start, end) {\n var startAngle = isNumber(start) ? start : 0, // must be a number\n endAngle = ((isNumber(end) && // must be a number\n end > startAngle && // must be larger than the start angle\n // difference must be less than 360 degrees\n (end - startAngle) < 360) ?\n end :\n startAngle + 360),\n correction = -90;\n return {\n start: deg2rad * (startAngle + correction),\n end: deg2rad * (endAngle + correction)\n };\n }\n CenteredUtilities.getStartAndEndRadians = getStartAndEndRadians;\n })(CenteredUtilities || (CenteredUtilities = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * @private\n * @interface Highcharts.RadianAngles\n */ /**\n * @name Highcharts.RadianAngles#end\n * @type {number}\n */ /**\n * @name Highcharts.RadianAngles#start\n * @type {number}\n */\n ''; // keeps doclets above in JS file\n\n return CenteredUtilities;\n });\n _registerModule(_modules, 'Series/Pie/PiePoint.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Series/Point.js'], _modules['Core/Utilities.js']], function (A, Point, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var setAnimation = A.setAnimation;\n var addEvent = U.addEvent,\n defined = U.defined,\n extend = U.extend,\n isNumber = U.isNumber,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Class\n *\n * */\n var PiePoint = /** @class */ (function (_super) {\n __extends(PiePoint, _super);\n function PiePoint() {\n /* *\n *\n * Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n _this.labelDistance = void 0;\n _this.options = void 0;\n _this.series = void 0;\n return _this;\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Extendable method for getting the path of the connector between the\n * data label and the pie slice.\n * @private\n */\n PiePoint.prototype.getConnectorPath = function () {\n var labelPosition = this.labelPosition,\n options = this.series.options.dataLabels,\n predefinedShapes = this.connectorShapes;\n var connectorShape = options.connectorShape;\n // find out whether to use the predefined shape\n if (predefinedShapes[connectorShape]) {\n connectorShape = predefinedShapes[connectorShape];\n }\n return connectorShape.call(this, {\n // pass simplified label position object for user's convenience\n x: labelPosition.final.x,\n y: labelPosition.final.y,\n alignment: labelPosition.alignment\n }, labelPosition.connectorPosition, options);\n };\n /**\n * @private\n */\n PiePoint.prototype.getTranslate = function () {\n return this.sliced ? this.slicedTranslation : {\n translateX: 0,\n translateY: 0\n };\n };\n /**\n * @private\n */\n PiePoint.prototype.haloPath = function (size) {\n var shapeArgs = this.shapeArgs;\n return this.sliced || !this.visible ?\n [] :\n this.series.chart.renderer.symbols.arc(shapeArgs.x, shapeArgs.y, shapeArgs.r + size, shapeArgs.r + size, {\n // Substract 1px to ensure the background is not bleeding\n // through between the halo and the slice (#7495).\n innerR: shapeArgs.r - 1,\n start: shapeArgs.start,\n end: shapeArgs.end\n });\n };\n /**\n * Initialize the pie slice.\n * @private\n */\n PiePoint.prototype.init = function () {\n var _this = this;\n _super.prototype.init.apply(this, arguments);\n this.name = pick(this.name, 'Slice');\n // add event listener for select\n var toggleSlice = function (e) {\n _this.slice(e.type === 'select');\n };\n addEvent(this, 'select', toggleSlice);\n addEvent(this, 'unselect', toggleSlice);\n return this;\n };\n /**\n * Negative points are not valid (#1530, #3623, #5322)\n * @private\n */\n PiePoint.prototype.isValid = function () {\n return isNumber(this.y) && this.y >= 0;\n };\n /**\n * Toggle the visibility of a pie slice or other data point. Note that this\n * method is available only for some series, like pie, treemap and sunburst.\n *\n * @function Highcharts.Point#setVisible\n *\n * @param {boolean} [vis]\n * True to show the pie slice or other data point, false to hide. If\n * undefined, the visibility is toggled.\n *\n * @param {boolean} [redraw] Whether to redraw the chart after the point is\n * altered. If doing more operations on the chart, it is a good idea to set\n * redraw to false and call {@link Chart#redraw|chart.redraw()} after.\n *\n */\n PiePoint.prototype.setVisible = function (vis, redraw) {\n var _this = this;\n var series = this.series,\n chart = series.chart,\n ignoreHiddenPoint = series.options.ignoreHiddenPoint;\n redraw = pick(redraw, ignoreHiddenPoint);\n if (vis !== this.visible) {\n // If called without an argument, toggle visibility\n this.visible = this.options.visible = vis =\n typeof vis === 'undefined' ? !this.visible : vis;\n // update userOptions.data\n series.options.data[series.data.indexOf(this)] =\n this.options;\n // Show and hide associated elements. This is performed\n // regardless of redraw or not, because chart.redraw only\n // handles full series.\n ['graphic', 'dataLabel', 'connector', 'shadowGroup'].forEach(function (key) {\n if (_this[key]) {\n _this[key][vis ? 'show' : 'hide'](vis);\n }\n });\n if (this.legendItem) {\n chart.legend.colorizeItem(this, vis);\n }\n // #4170, hide halo after hiding point\n if (!vis && this.state === 'hover') {\n this.setState('');\n }\n // Handle ignore hidden slices\n if (ignoreHiddenPoint) {\n series.isDirty = true;\n }\n if (redraw) {\n chart.redraw();\n }\n }\n };\n /**\n * Set or toggle whether the slice is cut out from the pie.\n * @private\n *\n * @param {boolean} sliced\n * When undefined, the slice state is toggled.\n *\n * @param {boolean} [redraw]\n * Whether to redraw the chart. True by default.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * Animation options.\n */\n PiePoint.prototype.slice = function (sliced, redraw, animation) {\n var series = this.series,\n chart = series.chart;\n setAnimation(animation, chart);\n // redraw is true by default\n redraw = pick(redraw, true);\n /**\n * Pie series only. Whether to display a slice offset from the\n * center.\n * @name Highcharts.Point#sliced\n * @type {boolean|undefined}\n */\n // if called without an argument, toggle\n this.sliced = this.options.sliced = sliced =\n defined(sliced) ? sliced : !this.sliced;\n // update userOptions.data\n series.options.data[series.data.indexOf(this)] =\n this.options;\n if (this.graphic) {\n this.graphic.animate(this.getTranslate());\n }\n if (this.shadowGroup) {\n this.shadowGroup.animate(this.getTranslate());\n }\n };\n return PiePoint;\n }(Point));\n extend(PiePoint.prototype, {\n connectorShapes: {\n // only one available before v7.0.0\n fixedOffset: function (labelPosition, connectorPosition, options) {\n var breakAt = connectorPosition.breakAt,\n touchingSliceAt = connectorPosition.touchingSliceAt,\n lineSegment = options.softConnector ? [\n 'C',\n // 1st control point (of the curve)\n labelPosition.x +\n // 5 gives the connector a little horizontal bend\n (labelPosition.alignment === 'left' ? -5 : 5),\n labelPosition.y,\n 2 * breakAt.x - touchingSliceAt.x,\n 2 * breakAt.y - touchingSliceAt.y,\n breakAt.x,\n breakAt.y //\n ] : [\n 'L',\n breakAt.x,\n breakAt.y\n ];\n // assemble the path\n return ([\n ['M', labelPosition.x, labelPosition.y],\n lineSegment,\n ['L', touchingSliceAt.x, touchingSliceAt.y]\n ]);\n },\n straight: function (labelPosition, connectorPosition) {\n var touchingSliceAt = connectorPosition.touchingSliceAt;\n // direct line to the slice\n return [\n ['M', labelPosition.x, labelPosition.y],\n ['L', touchingSliceAt.x, touchingSliceAt.y]\n ];\n },\n crookedLine: function (labelPosition, connectorPosition, options) {\n var touchingSliceAt = connectorPosition.touchingSliceAt,\n series = this.series,\n pieCenterX = series.center[0],\n plotWidth = series.chart.plotWidth,\n plotLeft = series.chart.plotLeft,\n alignment = labelPosition.alignment,\n radius = this.shapeArgs.r,\n crookDistance = relativeLength(// % to fraction\n options.crookDistance, 1),\n crookX = alignment === 'left' ?\n pieCenterX + radius + (plotWidth + plotLeft -\n pieCenterX - radius) * (1 - crookDistance) :\n plotLeft + (pieCenterX - radius) * crookDistance,\n segmentWithCrook = [\n 'L',\n crookX,\n labelPosition.y\n ];\n var useCrook = true;\n // crookedLine formula doesn't make sense if the path overlaps\n // the label - use straight line instead in that case\n if (alignment === 'left' ?\n (crookX > labelPosition.x || crookX < touchingSliceAt.x) :\n (crookX < labelPosition.x || crookX > touchingSliceAt.x)) {\n useCrook = false;\n }\n // assemble the path\n var path = [['M',\n labelPosition.x,\n labelPosition.y]];\n if (useCrook) {\n path.push(segmentWithCrook);\n }\n path.push(['L', touchingSliceAt.x, touchingSliceAt.y]);\n return path;\n }\n }\n });\n /* *\n *\n * Default Export\n *\n * */\n\n return PiePoint;\n });\n _registerModule(_modules, 'Series/Pie/PieSeriesDefaults.js', [], function () {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n /* *\n *\n * API Options\n *\n * */\n /**\n * A pie chart is a circular graphic which is divided into slices to\n * illustrate numerical proportion.\n *\n * @sample highcharts/demo/pie-basic/\n * Pie chart\n *\n * @extends plotOptions.line\n * @excluding animationLimit, boostThreshold, connectEnds, connectNulls,\n * cropThreshold, dashStyle, dataSorting, dragDrop,\n * findNearestPointBy, getExtremesFromAll, label, lineWidth,\n * linkedTo, marker, negativeColor, pointInterval,\n * pointIntervalUnit, pointPlacement, pointStart,\n * softThreshold, stacking, step, threshold, turboThreshold,\n * zoneAxis, zones, dataSorting, boostBlending\n * @product highcharts highmaps\n * @optionparent plotOptions.pie\n *\n * @private\n */\n var PieSeriesDefaults = {\n /**\n * @excluding legendItemClick\n * @apioption plotOptions.pie.events\n */\n /**\n * Fires when the checkbox next to the point name in the legend is\n * clicked. One parameter, event, is passed to the function. The state\n * of the checkbox is found by event.checked. The checked item is found\n * by event.item. Return false to prevent the default action which is to\n * toggle the select state of the series.\n *\n * @sample {highcharts} highcharts/plotoptions/series-events-checkboxclick/\n * Alert checkbox status\n *\n * @type {Function}\n * @since 1.2.0\n * @product highcharts highmaps\n * @context Highcharts.Point\n * @apioption plotOptions.pie.events.checkboxClick\n */\n /**\n * Fires when the legend item belonging to the pie point (slice) is\n * clicked. The `this` keyword refers to the point itself. One\n * parameter, `event`, is passed to the function, containing common\n * event information. The default action is to toggle the visibility of\n * the point. This can be prevented by calling `event.preventDefault()`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-point-events-legenditemclick/\n * Confirm toggle visibility\n *\n * @type {Highcharts.PointLegendItemClickCallbackFunction}\n * @since 1.2.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.point.events.legendItemClick\n */\n /**\n * The center of the pie chart relative to the plot area. Can be\n * percentages or pixel values. The default behaviour (as of 3.0) is to\n * center the pie so that all slices and data labels are within the plot\n * area. As a consequence, the pie may actually jump around in a chart\n * with dynamic values, as the data labels move. In that case, the\n * center should be explicitly set, for example to `[\"50%\", \"50%\"]`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-center/\n * Centered at 100, 100\n *\n * @type {Array<(number|string|null),(number|string|null)>}\n * @default [null, null]\n * @product highcharts highmaps\n *\n * @private\n */\n center: [null, null],\n /**\n * The color of the pie series. A pie series is represented as an empty\n * circle if the total sum of its values is 0. Use this property to\n * define the color of its border.\n *\n * In styled mode, the color can be defined by the\n * [colorIndex](#plotOptions.series.colorIndex) option. Also, the series\n * color can be set with the `.highcharts-series`,\n * `.highcharts-color-{n}`, `.highcharts-{type}-series` or\n * `.highcharts-series-{n}` class, or individual classes given by the\n * `className` option.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-emptyseries/\n * Empty pie series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #cccccc\n * @apioption plotOptions.pie.color\n */\n /**\n * @product highcharts\n *\n * @private\n */\n clip: false,\n /**\n * @ignore-option\n *\n * @private\n */\n colorByPoint: true,\n /**\n * A series specific or series type specific color set to use instead\n * of the global [colors](#colors).\n *\n * @sample {highcharts} highcharts/demo/pie-monochrome/\n * Set default colors for all pies\n *\n * @type {Array<Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject>}\n * @since 3.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.colors\n */\n /**\n * @declare Highcharts.SeriesPieDataLabelsOptionsObject\n * @extends plotOptions.series.dataLabels\n * @excluding align, allowOverlap, inside, staggerLines, step\n * @private\n */\n dataLabels: {\n /**\n * Alignment method for data labels. Possible values are:\n *\n * - `plotEdges`: Each label touches the nearest vertical edge of\n * the plot area.\n *\n * - `connectors`: Connectors have the same x position and the\n * widest label of each half (left & right) touches the nearest\n * vertical edge of the plot area.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-alignto-connectors/\n * alignTo: connectors\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-alignto-plotedges/\n * alignTo: plotEdges\n *\n * @type {string}\n * @since 7.0.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.alignTo\n */\n allowOverlap: true,\n /**\n * The color of the line connecting the data label to the pie slice.\n * The default color is the same as the point's color.\n *\n * In styled mode, the connector stroke is given in the\n * `.highcharts-data-label-connector` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorcolor/\n * Blue connectors\n * @sample {highcharts} highcharts/css/pie-point/\n * Styled connectors\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @since 2.1\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.connectorColor\n */\n /**\n * The distance from the data label to the connector. Note that\n * data labels also have a default `padding`, so in order for the\n * connector to touch the text, the `padding` must also be 0.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorpadding/\n * No padding\n *\n * @since 2.1\n * @product highcharts highmaps\n */\n connectorPadding: 5,\n /**\n * Specifies the method that is used to generate the connector path.\n * Highcharts provides 3 built-in connector shapes: `'fixedOffset'`\n * (default), `'straight'` and `'crookedLine'`. Using\n * `'crookedLine'` has the most sense (in most of the cases) when\n * `'alignTo'` is set.\n *\n * Users can provide their own method by passing a function instead\n * of a String. 3 arguments are passed to the callback:\n *\n * - Object that holds the information about the coordinates of the\n * label (`x` & `y` properties) and how the label is located in\n * relation to the pie (`alignment` property). `alignment` can by\n * one of the following:\n * `'left'` (pie on the left side of the data label),\n * `'right'` (pie on the right side of the data label) or\n * `'center'` (data label overlaps the pie).\n *\n * - Object that holds the information about the position of the\n * connector. Its `touchingSliceAt` porperty tells the position\n * of the place where the connector touches the slice.\n *\n * - Data label options\n *\n * The function has to return an SVG path definition in array form\n * (see the example).\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorshape-string/\n * connectorShape is a String\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorshape-function/\n * connectorShape is a function\n *\n * @type {string|Function}\n * @since 7.0.0\n * @product highcharts highmaps\n */\n connectorShape: 'fixedOffset',\n /**\n * The width of the line connecting the data label to the pie slice.\n *\n * In styled mode, the connector stroke width is given in the\n * `.highcharts-data-label-connector` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-connectorwidth-disabled/\n * Disable the connector\n * @sample {highcharts} highcharts/css/pie-point/\n * Styled connectors\n *\n * @type {number}\n * @default 1\n * @since 2.1\n * @product highcharts highmaps\n * @apioption plotOptions.pie.dataLabels.connectorWidth\n */\n /**\n * Works only if `connectorShape` is `'crookedLine'`. It defines how\n * far from the vertical plot edge the coonnector path should be\n * crooked.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-crookdistance/\n * crookDistance set to 90%\n *\n * @since 7.0.0\n * @product highcharts highmaps\n */\n crookDistance: '70%',\n /**\n * The distance of the data label from the pie's edge. Negative\n * numbers put the data label on top of the pie slices. Can also be\n * defined as a percentage of pie's radius. Connectors are only\n * shown for data labels outside the pie.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-distance/\n * Data labels on top of the pie\n *\n * @type {number|string}\n * @since 2.1\n * @product highcharts highmaps\n */\n distance: 30,\n enabled: true,\n /**\n * A\n * [format string](https://www.highcharts.com/docs/chart-concepts/labels-and-string-formatting)\n * for the data label. Available variables are the same as for\n * `formatter`.\n *\n * @sample {highcharts} highcharts/plotoptions/series-datalabels-format/\n * Add a unit\n *\n * @type {string}\n * @default undefined\n * @since 3.0\n * @apioption plotOptions.pie.dataLabels.format\n */\n // eslint-disable-next-line valid-jsdoc\n /**\n * Callback JavaScript function to format the data label. Note that\n * if a `format` is defined, the format takes precedence and the\n * formatter is ignored.\n *\n * @type {Highcharts.DataLabelsFormatterCallbackFunction}\n * @default function () { return this.point.isNull ? void 0 : this.point.name; }\n */\n formatter: function () {\n return this.point.isNull ? void 0 : this.point.name;\n },\n /**\n * Whether to render the connector as a soft arc or a line with\n * sharp break. Works only if `connectorShape` equals to\n * `fixedOffset`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-softconnector-true/\n * Soft\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-softconnector-false/\n * Non soft\n *\n * @since 2.1.7\n * @product highcharts highmaps\n */\n softConnector: true,\n /**\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow\n * Long labels truncated with an ellipsis\n * @sample {highcharts} highcharts/plotoptions/pie-datalabels-overflow-wrap\n * Long labels are wrapped\n *\n * @type {Highcharts.CSSObject}\n * @apioption plotOptions.pie.dataLabels.style\n */\n x: 0\n },\n /**\n * If the total sum of the pie's values is 0, the series is represented\n * as an empty circle . The `fillColor` option defines the color of that\n * circle. Use [pie.borderWidth](#plotOptions.pie.borderWidth) to set\n * the border thickness.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-emptyseries/\n * Empty pie series\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @private\n */\n fillColor: void 0,\n /**\n * The end angle of the pie in degrees where 0 is top and 90 is right.\n * Defaults to `startAngle` plus 360.\n *\n * @sample {highcharts} highcharts/demo/pie-semi-circle/\n * Semi-circle donut\n *\n * @type {number}\n * @since 1.3.6\n * @product highcharts highmaps\n * @apioption plotOptions.pie.endAngle\n */\n /**\n * Thickness describing the ring size for a donut type chart,\n * overriding [innerSize](#plotOptions.pie.innerSize).\n *\n * @type {number}\n * @default undefined\n * @product highcharts\n * @since 10.1.0\n * @apioption plotOptions.pie.thickness\n * @private\n */\n /**\n * Equivalent to [chart.ignoreHiddenSeries](#chart.ignoreHiddenSeries),\n * this option tells whether the series shall be redrawn as if the\n * hidden point were `null`.\n *\n * The default value changed from `false` to `true` with Highcharts\n * 3.0.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-ignorehiddenpoint/\n * True, the hiddden point is ignored\n *\n * @since 2.3.0\n * @product highcharts highmaps\n *\n * @private\n */\n ignoreHiddenPoint: true,\n /**\n * @ignore-option\n *\n * @private\n */\n inactiveOtherPoints: true,\n /**\n * The size of the inner diameter for the pie. A size greater than 0\n * renders a donut chart. Can be a percentage or pixel value.\n * Percentages are relative to the pie size. Pixel values are given as\n * integers. Setting overridden by thickness.\n *\n *\n * Note: in Highcharts < 4.1.2, the percentage was relative to the plot\n * area, not the pie size.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-innersize-80px/\n * 80px inner size\n * @sample {highcharts} highcharts/plotoptions/pie-innersize-50percent/\n * 50% of the plot area\n * @sample {highcharts} highcharts/demo/3d-pie-donut/\n * 3D donut\n *\n * @type {number|string}\n * @default 0\n * @since 2.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.innerSize\n */\n /**\n * @ignore-option\n *\n * @private\n */\n legendType: 'point',\n /**\n * @ignore-option\n *\n * @private\n */\n marker: null,\n /**\n * The minimum size for a pie in response to auto margins. The pie will\n * try to shrink to make room for data labels in side the plot area,\n * but only to this size.\n *\n * @type {number|string}\n * @default 80\n * @since 3.0\n * @product highcharts highmaps\n * @apioption plotOptions.pie.minSize\n */\n /**\n * The diameter of the pie relative to the plot area. Can be a\n * percentage or pixel value. Pixel values are given as integers. The\n * default behaviour (as of 3.0) is to scale to the plot area and give\n * room for data labels within the plot area.\n * [slicedOffset](#plotOptions.pie.slicedOffset) is also included in the\n * default size calculation. As a consequence, the size of the pie may\n * vary when points are updated and data labels more around. In that\n * case it is best to set a fixed value, for example `\"75%\"`.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-size/\n * Smaller pie\n *\n * @type {number|string|null}\n * @product highcharts highmaps\n *\n * @private\n */\n size: null,\n /**\n * Whether to display this particular series or series type in the\n * legend. Since 2.1, pies are not shown in the legend by default.\n *\n * @sample {highcharts} highcharts/plotoptions/series-showinlegend/\n * One series in the legend, one hidden\n *\n * @product highcharts highmaps\n *\n * @private\n */\n showInLegend: false,\n /**\n * If a point is sliced, moved out from the center, how many pixels\n * should it be moved?.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-slicedoffset-20/\n * 20px offset\n *\n * @product highcharts highmaps\n *\n * @private\n */\n slicedOffset: 10,\n /**\n * The start angle of the pie slices in degrees where 0 is top and 90\n * right.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-startangle-90/\n * Start from right\n *\n * @type {number}\n * @default 0\n * @since 2.3.4\n * @product highcharts highmaps\n * @apioption plotOptions.pie.startAngle\n */\n /**\n * Sticky tracking of mouse events. When true, the `mouseOut` event\n * on a series isn't triggered until the mouse moves over another\n * series, or out of the plot area. When false, the `mouseOut` event on\n * a series is triggered when the mouse leaves the area around the\n * series' graph or markers. This also implies the tooltip. When\n * `stickyTracking` is false and `tooltip.shared` is false, the tooltip\n * will be hidden when moving the mouse between series.\n *\n * @product highcharts highmaps\n *\n * @private\n */\n stickyTracking: false,\n tooltip: {\n followPointer: true\n },\n /**\n * The color of the border surrounding each slice. When `null`, the\n * border takes the same color as the slice fill. This can be used\n * together with a `borderWidth` to fill drawing gaps created by\n * antialiazing artefacts in borderless pies.\n *\n * In styled mode, the border stroke is given in the `.highcharts-point`\n * class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-bordercolor-black/\n * Black border\n *\n * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @default #ffffff\n * @product highcharts highmaps\n *\n * @private\n */\n borderColor: \"#ffffff\" /* Palette.backgroundColor */,\n /**\n * The width of the border surrounding each slice.\n *\n * When setting the border width to 0, there may be small gaps between\n * the slices due to SVG antialiasing artefacts. To work around this,\n * keep the border width at 0.5 or 1, but set the `borderColor` to\n * `null` instead.\n *\n * In styled mode, the border stroke width is given in the\n * `.highcharts-point` class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-borderwidth/\n * 3px border\n *\n * @product highcharts highmaps\n *\n * @private\n */\n borderWidth: 1,\n /**\n * @ignore-option\n * @private\n */\n lineWidth: void 0,\n states: {\n /**\n * @extends plotOptions.series.states.hover\n * @excluding marker, lineWidth, lineWidthPlus\n * @product highcharts highmaps\n */\n hover: {\n /**\n * How much to brighten the point on interaction. Requires the\n * main color to be defined in hex or rgb(a) format.\n *\n * In styled mode, the hover brightness is by default replaced\n * by a fill-opacity given in the `.highcharts-point-hover`\n * class.\n *\n * @sample {highcharts} highcharts/plotoptions/pie-states-hover-brightness/\n * Brightened by 0.5\n *\n * @product highcharts highmaps\n */\n brightness: 0.1\n }\n }\n };\n /**\n * A `pie` series. If the [type](#series.pie.type) option is not specified,\n * it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.pie\n * @excluding cropThreshold, dataParser, dataURL, linkedTo, stack, xAxis, yAxis,\n * dataSorting, step, boostThreshold, boostBlending\n * @product highcharts highmaps\n * @apioption series.pie\n */\n /**\n * An array of data points for the series. For the `pie` series type,\n * points can be given in the following ways:\n *\n * 1. An array of numerical values. In this case, the numerical values will be\n * interpreted as `y` options. Example:\n * ```js\n * data: [0, 5, 3, 5]\n * ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n * few settings, see the complete options set below. If the total number of\n * data points exceeds the series'\n * [turboThreshold](#series.pie.turboThreshold),\n * this option is not available.\n * ```js\n * data: [{\n * y: 1,\n * name: \"Point2\",\n * color: \"#00FF00\"\n * }, {\n * y: 7,\n * name: \"Point1\",\n * color: \"#FF00FF\"\n * }]\n * ```\n *\n * @sample {highcharts} highcharts/chart/reflow-true/\n * Numerical values\n * @sample {highcharts} highcharts/series/data-array-of-arrays/\n * Arrays of numeric x and y\n * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/\n * Arrays of datetime x and y\n * @sample {highcharts} highcharts/series/data-array-of-name-value/\n * Arrays of point.name and y\n * @sample {highcharts} highcharts/series/data-array-of-objects/\n * Config objects\n *\n * @type {Array<number|Array<string,(number|null)>|null|*>}\n * @extends series.line.data\n * @excluding marker, x\n * @product highcharts highmaps\n * @apioption series.pie.data\n */\n /**\n * @type {Highcharts.SeriesPieDataLabelsOptionsObject}\n * @product highcharts highmaps\n * @apioption series.pie.data.dataLabels\n */\n /**\n * The sequential index of the data point in the legend.\n *\n * @type {number}\n * @product highcharts highmaps\n * @apioption series.pie.data.legendIndex\n */\n /**\n * Whether to display a slice offset from the center.\n *\n * @sample {highcharts} highcharts/point/sliced/\n * One sliced point\n *\n * @type {boolean}\n * @product highcharts highmaps\n * @apioption series.pie.data.sliced\n */\n /**\n * @extends plotOptions.pie.dataLabels\n * @excluding align, allowOverlap, inside, staggerLines, step\n * @product highcharts highmaps\n * @apioption series.pie.dataLabels\n */\n /**\n * @excluding legendItemClick\n * @product highcharts highmaps\n * @apioption series.pie.events\n */\n ''; // placeholder for transpiled doclets above\n /* *\n *\n * Default Export\n *\n * */\n\n return PieSeriesDefaults;\n });\n _registerModule(_modules, 'Series/Pie/PieSeries.js', [_modules['Series/CenteredUtilities.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Series/Pie/PiePoint.js'], _modules['Series/Pie/PieSeriesDefaults.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/Symbols.js'], _modules['Core/Utilities.js']], function (CU, ColumnSeries, H, LegendSymbol, PiePoint, PieSeriesDefaults, Series, SeriesRegistry, Symbols, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();\n var getStartAndEndRadians = CU.getStartAndEndRadians;\n var noop = H.noop;\n var clamp = U.clamp,\n extend = U.extend,\n fireEvent = U.fireEvent,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Class\n *\n * */\n /**\n * Pie series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.pie\n *\n * @augments Highcharts.Series\n */\n var PieSeries = /** @class */ (function (_super) {\n __extends(PieSeries, _super);\n function PieSeries() {\n /* *\n *\n * Static Properties\n *\n * */\n var _this = _super !== null && _super.apply(this,\n arguments) || this;\n /* *\n *\n * Properties\n *\n * */\n _this.center = void 0;\n _this.data = void 0;\n _this.maxLabelDistance = void 0;\n _this.options = void 0;\n _this.points = void 0;\n return _this;\n /* eslint-enable valid-jsdoc */\n }\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * Animates the pies in.\n * @private\n */\n PieSeries.prototype.animate = function (init) {\n var series = this,\n points = series.points,\n startAngleRad = series.startAngleRad;\n if (!init) {\n points.forEach(function (point) {\n var graphic = point.graphic,\n args = point.shapeArgs;\n if (graphic && args) {\n // start values\n graphic.attr({\n // animate from inner radius (#779)\n r: pick(point.startR, (series.center && series.center[3] / 2)),\n start: startAngleRad,\n end: startAngleRad\n });\n // animate\n graphic.animate({\n r: args.r,\n start: args.start,\n end: args.end\n }, series.options.animation);\n }\n });\n }\n };\n /**\n * Called internally to draw auxiliary graph in pie-like series in\n * situtation when the default graph is not sufficient enough to present\n * the data well. Auxiliary graph is saved in the same object as\n * regular graph.\n * @private\n */\n PieSeries.prototype.drawEmpty = function () {\n var start = this.startAngleRad,\n end = this.endAngleRad,\n options = this.options;\n var centerX,\n centerY;\n // Draw auxiliary graph if there're no visible points.\n if (this.total === 0 && this.center) {\n centerX = this.center[0];\n centerY = this.center[1];\n if (!this.graph) {\n this.graph = this.chart.renderer\n .arc(centerX, centerY, this.center[1] / 2, 0, start, end)\n .addClass('highcharts-empty-series')\n .add(this.group);\n }\n this.graph.attr({\n d: Symbols.arc(centerX, centerY, this.center[2] / 2, 0, {\n start: start,\n end: end,\n innerR: this.center[3] / 2\n })\n });\n if (!this.chart.styledMode) {\n this.graph.attr({\n 'stroke-width': options.borderWidth,\n fill: options.fillColor || 'none',\n stroke: options.color || \"#cccccc\" /* Palette.neutralColor20 */\n });\n }\n }\n else if (this.graph) { // Destroy the graph object.\n this.graph = this.graph.destroy();\n }\n };\n /**\n * Slices in pie chart are initialized in DOM, but it's shapes and\n * animations are normally run in `drawPoints()`.\n * @private\n */\n PieSeries.prototype.drawPoints = function () {\n var renderer = this.chart.renderer;\n this.points.forEach(function (point) {\n // When updating a series between 2d and 3d or cartesian and\n // polar, the shape type changes.\n if (point.graphic && point.hasNewShapeType()) {\n point.graphic = point.graphic.destroy();\n }\n if (!point.graphic) {\n point.graphic = renderer[point.shapeType](point.shapeArgs)\n .add(point.series.group);\n point.delayedRendering = true;\n }\n });\n };\n /**\n * Extend the generatePoints method by adding total and percentage\n * properties to each point\n * @private\n */\n PieSeries.prototype.generatePoints = function () {\n _super.prototype.generatePoints.call(this);\n this.updateTotals();\n };\n /**\n * Utility for getting the x value from a given y, used for\n * anticollision logic in data labels. Added point for using specific\n * points' label distance.\n * @private\n */\n PieSeries.prototype.getX = function (y, left, point) {\n var center = this.center, \n // Variable pie has individual radius\n radius = this.radii ?\n this.radii[point.index] || 0 :\n center[2] / 2;\n var angle = Math.asin(clamp((y - center[1]) / (radius + point.labelDistance), -1, 1));\n var x = center[0] +\n (left ? -1 : 1) *\n (Math.cos(angle) * (radius + point.labelDistance)) +\n (point.labelDistance > 0 ?\n (left ? -1 : 1) * this.options.dataLabels.padding :\n 0);\n return x;\n };\n /**\n * Define hasData function for non-cartesian series. Returns true if the\n * series has points at all.\n * @private\n */\n PieSeries.prototype.hasData = function () {\n return !!this.processedXData.length; // != 0\n };\n /**\n * Draw the data points\n * @private\n */\n PieSeries.prototype.redrawPoints = function () {\n var series = this,\n chart = series.chart,\n renderer = chart.renderer,\n shadow = series.options.shadow;\n var groupTranslation,\n graphic,\n pointAttr,\n shapeArgs;\n this.drawEmpty();\n if (shadow && !series.shadowGroup && !chart.styledMode) {\n series.shadowGroup = renderer\n .g('shadow')\n .attr({ zIndex: -1 })\n .add(series.group);\n }\n // draw the slices\n series.points.forEach(function (point) {\n var animateTo = {};\n graphic = point.graphic;\n if (!point.isNull && graphic) {\n var shadowGroup = void 0;\n shapeArgs = point.shapeArgs;\n // If the point is sliced, use special translation, else use\n // plot area translation\n groupTranslation = point.getTranslate();\n if (!chart.styledMode) {\n // Put the shadow behind all points\n shadowGroup = point.shadowGroup;\n if (shadow && !shadowGroup) {\n shadowGroup = point.shadowGroup = renderer\n .g('shadow')\n .add(series.shadowGroup);\n }\n if (shadowGroup) {\n shadowGroup.attr(groupTranslation);\n }\n pointAttr = series.pointAttribs(point, (point.selected && 'select'));\n }\n // Draw the slice\n if (!point.delayedRendering) {\n graphic\n .setRadialReference(series.center);\n if (!chart.styledMode) {\n merge(true, animateTo, pointAttr);\n }\n merge(true, animateTo, shapeArgs, groupTranslation);\n graphic.animate(animateTo);\n }\n else {\n graphic\n .setRadialReference(series.center)\n .attr(shapeArgs)\n .attr(groupTranslation);\n if (!chart.styledMode) {\n graphic\n .attr(pointAttr)\n .attr({ 'stroke-linejoin': 'round' })\n .shadow(shadow, shadowGroup);\n }\n point.delayedRendering = false;\n }\n graphic.attr({\n visibility: point.visible ? 'inherit' : 'hidden'\n });\n graphic.addClass(point.getClassName(), true);\n }\n else if (graphic) {\n point.graphic = graphic.destroy();\n }\n });\n };\n /**\n * Utility for sorting data labels.\n * @private\n */\n PieSeries.prototype.sortByAngle = function (points, sign) {\n points.sort(function (a, b) {\n return ((typeof a.angle !== 'undefined') &&\n (b.angle - a.angle) * sign);\n });\n };\n /**\n * Do translation for pie slices\n * @private\n */\n PieSeries.prototype.translate = function (positions) {\n fireEvent(this, 'translate');\n this.generatePoints();\n var series = this,\n precision = 1000, // issue #172\n options = series.options,\n slicedOffset = options.slicedOffset,\n connectorOffset = slicedOffset + (options.borderWidth || 0),\n radians = getStartAndEndRadians(options.startAngle,\n options.endAngle),\n startAngleRad = series.startAngleRad = radians.start,\n endAngleRad = series.endAngleRad = radians.end,\n circ = endAngleRad - startAngleRad, // 2 * Math.PI,\n points = series.points,\n labelDistance = options.dataLabels.distance,\n ignoreHiddenPoint = options.ignoreHiddenPoint,\n len = points.length;\n var finalConnectorOffset,\n start,\n end,\n angle, \n // the x component of the radius vector for a given point\n radiusX,\n radiusY,\n i,\n point,\n cumulative = 0;\n // Get positions - either an integer or a percentage string must be\n // given. If positions are passed as a parameter, we're in a\n // recursive loop for adjusting space for data labels.\n if (!positions) {\n series.center = positions = series.getCenter();\n }\n // Calculate the geometry for each point\n for (i = 0; i < len; i++) {\n point = points[i];\n // set start and end angle\n start = startAngleRad + (cumulative * circ);\n if (point.isValid() &&\n (!ignoreHiddenPoint || point.visible)) {\n cumulative += point.percentage / 100;\n }\n end = startAngleRad + (cumulative * circ);\n // set the shape\n var shapeArgs = {\n x: positions[0],\n y: positions[1],\n r: positions[2] / 2,\n innerR: positions[3] / 2,\n start: Math.round(start * precision) / precision,\n end: Math.round(end * precision) / precision\n };\n point.shapeType = 'arc';\n point.shapeArgs = shapeArgs;\n // Used for distance calculation for specific point.\n point.labelDistance = pick((point.options.dataLabels &&\n point.options.dataLabels.distance), labelDistance);\n // Compute point.labelDistance if it's defined as percentage\n // of slice radius (#8854)\n point.labelDistance = relativeLength(point.labelDistance, shapeArgs.r);\n // Saved for later dataLabels distance calculation.\n series.maxLabelDistance = Math.max(series.maxLabelDistance || 0, point.labelDistance);\n // The angle must stay within -90 and 270 (#2645)\n angle = (end + start) / 2;\n if (angle > 1.5 * Math.PI) {\n angle -= 2 * Math.PI;\n }\n else if (angle < -Math.PI / 2) {\n angle += 2 * Math.PI;\n }\n // Center for the sliced out slice\n point.slicedTranslation = {\n translateX: Math.round(Math.cos(angle) * slicedOffset),\n translateY: Math.round(Math.sin(angle) * slicedOffset)\n };\n // set the anchor point for tooltips\n radiusX = Math.cos(angle) * positions[2] / 2;\n radiusY = Math.sin(angle) * positions[2] / 2;\n point.tooltipPos = [\n positions[0] + radiusX * 0.7,\n positions[1] + radiusY * 0.7\n ];\n point.half = angle < -Math.PI / 2 || angle > Math.PI / 2 ?\n 1 :\n 0;\n point.angle = angle;\n // Set the anchor point for data labels. Use point.labelDistance\n // instead of labelDistance // #1174\n // finalConnectorOffset - not override connectorOffset value.\n finalConnectorOffset = Math.min(connectorOffset, point.labelDistance / 5); // #1678\n point.labelPosition = {\n natural: {\n // initial position of the data label - it's utilized for\n // finding the final position for the label\n x: positions[0] + radiusX + Math.cos(angle) *\n point.labelDistance,\n y: positions[1] + radiusY + Math.sin(angle) *\n point.labelDistance\n },\n 'final': {\n // used for generating connector path -\n // initialized later in drawDataLabels function\n // x: undefined,\n // y: undefined\n },\n // left - pie on the left side of the data label\n // right - pie on the right side of the data label\n // center - data label overlaps the pie\n alignment: point.labelDistance < 0 ?\n 'center' : point.half ? 'right' : 'left',\n connectorPosition: {\n breakAt: {\n x: positions[0] + radiusX + Math.cos(angle) *\n finalConnectorOffset,\n y: positions[1] + radiusY + Math.sin(angle) *\n finalConnectorOffset\n },\n touchingSliceAt: {\n x: positions[0] + radiusX,\n y: positions[1] + radiusY\n }\n }\n };\n }\n fireEvent(series, 'afterTranslate');\n };\n /**\n * Recompute total chart sum and update percentages of points.\n * @private\n */\n PieSeries.prototype.updateTotals = function () {\n var points = this.points,\n len = points.length,\n ignoreHiddenPoint = this.options.ignoreHiddenPoint;\n var i,\n point,\n total = 0;\n // Get the total sum\n for (i = 0; i < len; i++) {\n point = points[i];\n if (point.isValid() &&\n (!ignoreHiddenPoint || point.visible)) {\n total += point.y;\n }\n }\n this.total = total;\n // Set each point's properties\n for (i = 0; i < len; i++) {\n point = points[i];\n point.percentage =\n (total > 0 && (point.visible || !ignoreHiddenPoint)) ?\n point.y / total * 100 :\n 0;\n point.total = total;\n }\n };\n PieSeries.defaultOptions = merge(Series.defaultOptions, PieSeriesDefaults);\n return PieSeries;\n }(Series));\n extend(PieSeries.prototype, {\n axisTypes: [],\n directTouch: true,\n drawGraph: void 0,\n drawLegendSymbol: LegendSymbol.drawRectangle,\n drawTracker: ColumnSeries.prototype.drawTracker,\n getCenter: CU.getCenter,\n getSymbol: noop,\n isCartesian: false,\n noSharedTooltip: true,\n pointAttribs: ColumnSeries.prototype.pointAttribs,\n pointClass: PiePoint,\n requireSorting: false,\n searchPoint: noop,\n trackerGroups: ['group', 'dataLabelsGroup']\n });\n SeriesRegistry.registerSeriesType('pie', PieSeries);\n /* *\n *\n * Default Export\n *\n * */\n\n return PieSeries;\n });\n _registerModule(_modules, 'Series/Pie/PieDataLabel.js', [_modules['Core/Series/DataLabel.js'], _modules['Core/Globals.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (DataLabel, H, R, SeriesRegistry, U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var noop = H.noop;\n var distribute = R.distribute;\n var Series = SeriesRegistry.series;\n var arrayMax = U.arrayMax,\n clamp = U.clamp,\n defined = U.defined,\n merge = U.merge,\n pick = U.pick,\n relativeLength = U.relativeLength;\n /* *\n *\n * Composition\n *\n * */\n var ColumnDataLabel;\n (function (ColumnDataLabel) {\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n var dataLabelPositioners = {\n // Based on the value computed in Highcharts' distribute algorithm.\n radialDistributionY: function (point) {\n return point.top + point.distributeBox.pos;\n },\n // get the x - use the natural x position for labels near the\n // top and bottom, to prevent the top and botton slice\n // connectors from touching each other on either side\n // Based on the value computed in Highcharts' distribute algorithm.\n radialDistributionX: function (series, point, y, naturalY) {\n return series.getX(y < point.top + 2 || y > point.bottom - 2 ?\n naturalY :\n y, point.half, point);\n },\n // dataLabels.distance determines the x position of the label\n justify: function (point, radius, seriesCenter) {\n return seriesCenter[0] + (point.half ? -1 : 1) *\n (radius + point.labelDistance);\n },\n // Left edges of the left-half labels touch the left edge of the plot\n // area. Right edges of the right-half labels touch the right edge of\n // the plot area.\n alignToPlotEdges: function (dataLabel, half, plotWidth, plotLeft) {\n var dataLabelWidth = dataLabel.getBBox().width;\n return half ? dataLabelWidth + plotLeft :\n plotWidth - dataLabelWidth - plotLeft;\n },\n // Connectors of each side end in the same x position. Labels are\n // aligned to them. Left edge of the widest left-half label touches the\n // left edge of the plot area. Right edge of the widest right-half label\n // touches the right edge of the plot area.\n alignToConnectors: function (points, half, plotWidth, plotLeft) {\n var maxDataLabelWidth = 0,\n dataLabelWidth;\n // find widest data label\n points.forEach(function (point) {\n dataLabelWidth = point.dataLabel.getBBox().width;\n if (dataLabelWidth > maxDataLabelWidth) {\n maxDataLabelWidth = dataLabelWidth;\n }\n });\n return half ? maxDataLabelWidth + plotLeft :\n plotWidth - maxDataLabelWidth - plotLeft;\n }\n };\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /** @private */\n function compose(PieSeriesClass) {\n DataLabel.compose(Series);\n if (composedClasses.indexOf(PieSeriesClass) === -1) {\n composedClasses.push(PieSeriesClass);\n var pieProto = PieSeriesClass.prototype;\n pieProto.dataLabelPositioners = dataLabelPositioners;\n pieProto.alignDataLabel = noop;\n pieProto.drawDataLabels = drawDataLabels;\n pieProto.placeDataLabels = placeDataLabels;\n pieProto.verifyDataLabelOverflow = verifyDataLabelOverflow;\n }\n }\n ColumnDataLabel.compose = compose;\n /**\n * Override the base drawDataLabels method by pie specific functionality\n * @private\n */\n function drawDataLabels() {\n var series = this,\n data = series.data,\n chart = series.chart,\n options = series.options.dataLabels || {},\n connectorPadding = options.connectorPadding,\n plotWidth = chart.plotWidth,\n plotHeight = chart.plotHeight,\n plotLeft = chart.plotLeft,\n maxWidth = Math.round(chart.chartWidth / 3),\n seriesCenter = series.center,\n radius = seriesCenter[2] / 2,\n centerY = seriesCenter[1],\n halves = [\n [],\n [] // left\n ],\n overflow = [0, 0, 0, 0], // top, right, bottom, left\n dataLabelPositioners = series.dataLabelPositioners;\n var point,\n connectorWidth,\n connector,\n dataLabel,\n dataLabelWidth, \n // labelPos,\n labelPosition,\n labelHeight, \n // divide the points into right and left halves for anti collision\n x,\n y,\n visibility,\n j,\n pointDataLabelsOptions;\n // get out if not enabled\n if (!series.visible ||\n (!options.enabled &&\n !series._hasPointLabels)) {\n return;\n }\n // Reset all labels that have been shortened\n data.forEach(function (point) {\n if (point.dataLabel && point.visible && point.dataLabel.shortened) {\n point.dataLabel\n .attr({\n width: 'auto'\n }).css({\n width: 'auto',\n textOverflow: 'clip'\n });\n point.dataLabel.shortened = false;\n }\n });\n // run parent method\n Series.prototype.drawDataLabels.apply(series);\n data.forEach(function (point) {\n if (point.dataLabel) {\n if (point.visible) { // #407, #2510\n // Arrange points for detection collision\n halves[point.half].push(point);\n // Reset positions (#4905)\n point.dataLabel._pos = null;\n // Avoid long labels squeezing the pie size too far down\n if (!defined(options.style.width) &&\n !defined(point.options.dataLabels &&\n point.options.dataLabels.style &&\n point.options.dataLabels.style.width)) {\n if (point.dataLabel.getBBox().width > maxWidth) {\n point.dataLabel.css({\n // Use a fraction of the maxWidth to avoid\n // wrapping close to the end of the string.\n width: Math.round(maxWidth * 0.7) + 'px'\n });\n point.dataLabel.shortened = true;\n }\n }\n }\n else {\n point.dataLabel = point.dataLabel.destroy();\n // Workaround to make pies destroy multiple datalabels\n // correctly. This logic needs rewriting to support multiple\n // datalabels fully.\n if (point.dataLabels && point.dataLabels.length === 1) {\n delete point.dataLabels;\n }\n }\n }\n });\n /* Loop over the points in each half, starting from the top and bottom\n * of the pie to detect overlapping labels.\n */\n halves.forEach(function (points, i) {\n var length = points.length,\n positions = [];\n var top,\n bottom,\n naturalY,\n sideOverflow,\n size,\n distributionLength;\n if (!length) {\n return;\n }\n // Sort by angle\n series.sortByAngle(points, i - 0.5);\n // Only do anti-collision when we have dataLabels outside the pie\n // and have connectors. (#856)\n if (series.maxLabelDistance > 0) {\n top = Math.max(0, centerY - radius - series.maxLabelDistance);\n bottom = Math.min(centerY + radius + series.maxLabelDistance, chart.plotHeight);\n points.forEach(function (point) {\n // check if specific points' label is outside the pie\n if (point.labelDistance > 0 && point.dataLabel) {\n // point.top depends on point.labelDistance value\n // Used for calculation of y value in getX method\n point.top = Math.max(0, centerY - radius - point.labelDistance);\n point.bottom = Math.min(centerY + radius + point.labelDistance, chart.plotHeight);\n size = point.dataLabel.getBBox().height || 21;\n // point.positionsIndex is needed for getting index of\n // parameter related to specific point inside positions\n // array - not every point is in positions array.\n point.distributeBox = {\n target: point.labelPosition.natural.y -\n point.top + size / 2,\n size: size,\n rank: point.y\n };\n positions.push(point.distributeBox);\n }\n });\n distributionLength = bottom + size - top;\n distribute(positions, distributionLength, distributionLength / 5);\n }\n // Now the used slots are sorted, fill them up sequentially\n for (j = 0; j < length; j++) {\n point = points[j];\n // labelPos = point.labelPos;\n labelPosition = point.labelPosition;\n dataLabel = point.dataLabel;\n visibility = point.visible === false ? 'hidden' : 'inherit';\n naturalY = labelPosition.natural.y;\n y = naturalY;\n if (positions && defined(point.distributeBox)) {\n if (typeof point.distributeBox.pos === 'undefined') {\n visibility = 'hidden';\n }\n else {\n labelHeight = point.distributeBox.size;\n // Find label's y position\n y = dataLabelPositioners\n .radialDistributionY(point);\n }\n }\n // It is needed to delete point.positionIndex for\n // dynamically added points etc.\n delete point.positionIndex; // @todo unused\n // Find label's x position\n // justify is undocumented in the API - preserve support for it\n if (options.justify) {\n x = dataLabelPositioners.justify(point, radius, seriesCenter);\n }\n else {\n switch (options.alignTo) {\n case 'connectors':\n x = dataLabelPositioners.alignToConnectors(points, i, plotWidth, plotLeft);\n break;\n case 'plotEdges':\n x = dataLabelPositioners.alignToPlotEdges(dataLabel, i, plotWidth, plotLeft);\n break;\n default:\n x = dataLabelPositioners.radialDistributionX(series, point, y, naturalY);\n }\n }\n // Record the placement and visibility\n dataLabel._attr = {\n visibility: visibility,\n align: labelPosition.alignment\n };\n pointDataLabelsOptions = point.options.dataLabels || {};\n dataLabel._pos = {\n x: (x +\n pick(pointDataLabelsOptions.x, options.x) + // (#12985)\n ({\n left: connectorPadding,\n right: -connectorPadding\n }[labelPosition.alignment] || 0)),\n // 10 is for the baseline (label vs text)\n y: (y +\n pick(pointDataLabelsOptions.y, options.y) - // (#12985)\n 10)\n };\n // labelPos.x = x;\n // labelPos.y = y;\n labelPosition.final.x = x;\n labelPosition.final.y = y;\n // Detect overflowing data labels\n if (pick(options.crop, true)) {\n dataLabelWidth = dataLabel.getBBox().width;\n sideOverflow = null;\n // Overflow left\n if (x - dataLabelWidth < connectorPadding &&\n i === 1 // left half\n ) {\n sideOverflow = Math.round(dataLabelWidth - x + connectorPadding);\n overflow[3] = Math.max(sideOverflow, overflow[3]);\n // Overflow right\n }\n else if (x + dataLabelWidth > plotWidth - connectorPadding &&\n i === 0 // right half\n ) {\n sideOverflow = Math.round(x + dataLabelWidth - plotWidth + connectorPadding);\n overflow[1] = Math.max(sideOverflow, overflow[1]);\n }\n // Overflow top\n if (y - labelHeight / 2 < 0) {\n overflow[0] = Math.max(Math.round(-y + labelHeight / 2), overflow[0]);\n // Overflow left\n }\n else if (y + labelHeight / 2 > plotHeight) {\n overflow[2] = Math.max(Math.round(y + labelHeight / 2 - plotHeight), overflow[2]);\n }\n dataLabel.sideOverflow = sideOverflow;\n }\n } // for each point\n }); // for each half\n // Do not apply the final placement and draw the connectors until we\n // have verified that labels are not spilling over.\n if (arrayMax(overflow) === 0 ||\n this.verifyDataLabelOverflow(overflow)) {\n // Place the labels in the final position\n this.placeDataLabels();\n this.points.forEach(function (point) {\n // #8864: every connector can have individual options\n pointDataLabelsOptions =\n merge(options, point.options.dataLabels);\n connectorWidth =\n pick(pointDataLabelsOptions.connectorWidth, 1);\n // Draw the connector\n if (connectorWidth) {\n var isNew = void 0;\n connector = point.connector;\n dataLabel = point.dataLabel;\n if (dataLabel &&\n dataLabel._pos &&\n point.visible &&\n point.labelDistance > 0) {\n visibility = dataLabel._attr.visibility;\n isNew = !connector;\n if (isNew) {\n point.connector = connector = chart.renderer\n .path()\n .addClass('highcharts-data-label-connector ' +\n ' highcharts-color-' + point.colorIndex +\n (point.className ?\n ' ' + point.className :\n ''))\n .add(series.dataLabelsGroup);\n if (!chart.styledMode) {\n connector.attr({\n 'stroke-width': connectorWidth,\n 'stroke': (pointDataLabelsOptions.connectorColor ||\n point.color ||\n \"#666666\" /* Palette.neutralColor60 */)\n });\n }\n }\n connector[isNew ? 'attr' : 'animate']({\n d: point.getConnectorPath()\n });\n connector.attr('visibility', visibility);\n }\n else if (connector) {\n point.connector = connector.destroy();\n }\n }\n });\n }\n }\n /**\n * Perform the final placement of the data labels after we have verified\n * that they fall within the plot area.\n * @private\n */\n function placeDataLabels() {\n this.points.forEach(function (point) {\n var dataLabel = point.dataLabel,\n _pos;\n if (dataLabel && point.visible) {\n _pos = dataLabel._pos;\n if (_pos) {\n // Shorten data labels with ellipsis if they still overflow\n // after the pie has reached minSize (#223).\n if (dataLabel.sideOverflow) {\n dataLabel._attr.width =\n Math.max(dataLabel.getBBox().width -\n dataLabel.sideOverflow, 0);\n dataLabel.css({\n width: dataLabel._attr.width + 'px',\n textOverflow: ((this.options.dataLabels.style || {})\n .textOverflow ||\n 'ellipsis')\n });\n dataLabel.shortened = true;\n }\n dataLabel.attr(dataLabel._attr);\n dataLabel[dataLabel.moved ? 'animate' : 'attr'](_pos);\n dataLabel.moved = true;\n }\n else if (dataLabel) {\n dataLabel.attr({ y: -9999 });\n }\n }\n // Clear for update\n delete point.distributeBox;\n }, this);\n }\n /**\n * Verify whether the data labels are allowed to draw, or we should run more\n * translation and data label positioning to keep them inside the plot area.\n * Returns true when data labels are ready to draw.\n * @private\n */\n function verifyDataLabelOverflow(overflow) {\n var center = this.center,\n options = this.options,\n centerOption = options.center,\n minSize = options.minSize || 80,\n newSize = minSize, \n // If a size is set, return true and don't try to shrink the pie\n // to fit the labels.\n ret = options.size !== null;\n if (!ret) {\n // Handle horizontal size and center\n if (centerOption[0] !== null) { // Fixed center\n newSize = Math.max(center[2] -\n Math.max(overflow[1], overflow[3]), minSize);\n }\n else { // Auto center\n newSize = Math.max(\n // horizontal overflow\n center[2] - overflow[1] - overflow[3], minSize);\n // horizontal center\n center[0] += (overflow[3] - overflow[1]) / 2;\n }\n // Handle vertical size and center\n if (centerOption[1] !== null) { // Fixed center\n newSize = clamp(newSize, minSize, center[2] - Math.max(overflow[0], overflow[2]));\n }\n else { // Auto center\n newSize = clamp(newSize, minSize, \n // vertical overflow\n center[2] - overflow[0] - overflow[2]);\n // vertical center\n center[1] += (overflow[0] - overflow[2]) / 2;\n }\n // If the size must be decreased, we need to run translate and\n // drawDataLabels again\n if (newSize < center[2]) {\n center[2] = newSize;\n center[3] = Math.min(// #3632\n options.thickness ?\n Math.max(0, newSize - options.thickness * 2) :\n Math.max(0, relativeLength(options.innerSize || 0, newSize)), newSize); // #6647\n this.translate(center);\n if (this.drawDataLabels) {\n this.drawDataLabels();\n }\n // Else, return true to indicate that the pie and its labels is\n // within the plot area\n }\n else {\n ret = true;\n }\n }\n return ret;\n }\n })(ColumnDataLabel || (ColumnDataLabel = {}));\n /* *\n *\n * Default Export\n *\n * */\n\n return ColumnDataLabel;\n });\n _registerModule(_modules, 'Extensions/OverlappingDataLabels.js', [_modules['Core/Chart/Chart.js'], _modules['Core/Utilities.js']], function (Chart, U) {\n /* *\n *\n * Highcharts module to hide overlapping data labels.\n * This module is included in Highcharts.\n *\n * (c) 2009-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var addEvent = U.addEvent,\n fireEvent = U.fireEvent,\n isArray = U.isArray,\n isNumber = U.isNumber,\n objectEach = U.objectEach,\n pick = U.pick;\n /**\n * Internal type\n * @private\n */\n /* eslint-disable no-invalid-this */\n // Collect potensial overlapping data labels. Stack labels probably don't need\n // to be considered because they are usually accompanied by data labels that lie\n // inside the columns.\n addEvent(Chart, 'render', function collectAndHide() {\n var chart = this,\n labels = [];\n // Consider external label collectors\n (this.labelCollectors || []).forEach(function (collector) {\n labels = labels.concat(collector());\n });\n (this.yAxis || []).forEach(function (yAxis) {\n if (yAxis.stacking &&\n yAxis.options.stackLabels &&\n !yAxis.options.stackLabels.allowOverlap) {\n objectEach(yAxis.stacking.stacks, function (stack) {\n objectEach(stack, function (stackItem) {\n if (stackItem.label) {\n labels.push(stackItem.label);\n }\n });\n });\n }\n });\n (this.series || []).forEach(function (series) {\n var dlOptions = series.options.dataLabels;\n if (series.visible &&\n !(dlOptions.enabled === false && !series._hasPointLabels)) { // #3866\n var push = function (points) {\n return points.forEach(function (point) {\n if (point.visible) {\n var dataLabels = (isArray(point.dataLabels) ?\n point.dataLabels :\n (point.dataLabel ? [point.dataLabel] : []));\n dataLabels.forEach(function (label) {\n var options = label.options;\n label.labelrank = pick(options.labelrank, point.labelrank, point.shapeArgs && point.shapeArgs.height); // #4118\n if (!options.allowOverlap) {\n labels.push(label);\n }\n else { // #13449\n label.oldOpacity = label.opacity;\n label.newOpacity = 1;\n hideOrShow(label, chart);\n }\n });\n }\n });\n };\n push(series.nodes || []);\n push(series.points);\n }\n });\n this.hideOverlappingLabels(labels);\n });\n /**\n * Hide overlapping labels. Labels are moved and faded in and out on zoom to\n * provide a smooth visual imression.\n *\n * @private\n * @function Highcharts.Chart#hideOverlappingLabels\n * @param {Array<Highcharts.SVGElement>} labels\n * Rendered data labels\n * @requires modules/overlapping-datalabels\n */\n Chart.prototype.hideOverlappingLabels = function (labels) {\n var chart = this,\n len = labels.length,\n ren = chart.renderer,\n label,\n i,\n j,\n label1,\n label2,\n box1,\n box2,\n isLabelAffected = false,\n isIntersectRect = function (box1,\n box2) {\n return !(box2.x >= box1.x + box1.width ||\n box2.x + box2.width <= box1.x ||\n box2.y >= box1.y + box1.height ||\n box2.y + box2.height <= box1.y);\n }, \n // Get the box with its position inside the chart, as opposed to getBBox\n // that only reports the position relative to the parent.\n getAbsoluteBox = function (label) {\n var pos,\n parent,\n bBox, \n // Substract the padding if no background or border (#4333)\n padding = label.box ? 0 : (label.padding || 0),\n lineHeightCorrection = 0,\n xOffset = 0,\n boxWidth,\n alignValue;\n if (label &&\n (!label.alignAttr || label.placed)) {\n pos = label.alignAttr || {\n x: label.attr('x'),\n y: label.attr('y')\n };\n parent = label.parentGroup;\n // Get width and height if pure text nodes (stack labels)\n if (!label.width) {\n bBox = label.getBBox();\n label.width = bBox.width;\n label.height = bBox.height;\n // Labels positions are computed from top left corner, so\n // we need to substract the text height from text nodes too.\n lineHeightCorrection = ren\n .fontMetrics(null, label.element).h;\n }\n boxWidth = label.width - 2 * padding;\n alignValue = {\n left: '0',\n center: '0.5',\n right: '1'\n }[label.alignValue];\n if (alignValue) {\n xOffset = +alignValue * boxWidth;\n }\n else if (isNumber(label.x) &&\n Math.round(label.x) !== label.translateX) {\n xOffset = label.x - label.translateX;\n }\n return {\n x: pos.x + (parent.translateX || 0) + padding -\n (xOffset || 0),\n y: pos.y + (parent.translateY || 0) + padding -\n lineHeightCorrection,\n width: label.width - 2 * padding,\n height: label.height - 2 * padding\n };\n }\n };\n for (i = 0; i < len; i++) {\n label = labels[i];\n if (label) {\n // Mark with initial opacity\n label.oldOpacity = label.opacity;\n label.newOpacity = 1;\n label.absoluteBox = getAbsoluteBox(label);\n }\n }\n // Prevent a situation in a gradually rising slope, that each label will\n // hide the previous one because the previous one always has lower rank.\n labels.sort(function (a, b) {\n return (b.labelrank || 0) - (a.labelrank || 0);\n });\n // Detect overlapping labels\n for (i = 0; i < len; i++) {\n label1 = labels[i];\n box1 = label1 && label1.absoluteBox;\n for (j = i + 1; j < len; ++j) {\n label2 = labels[j];\n box2 = label2 && label2.absoluteBox;\n if (box1 &&\n box2 &&\n label1 !== label2 && // #6465, polar chart with connectEnds\n label1.newOpacity !== 0 &&\n label2.newOpacity !== 0 &&\n // #15863 dataLabels are no longer hidden by translation\n label1.visibility !== 'hidden' &&\n label2.visibility !== 'hidden') {\n if (isIntersectRect(box1, box2)) {\n (label1.labelrank < label2.labelrank ? label1 : label2)\n .newOpacity = 0;\n }\n }\n }\n }\n // Hide or show\n labels.forEach(function (label) {\n if (hideOrShow(label, chart)) {\n isLabelAffected = true;\n }\n });\n if (isLabelAffected) {\n fireEvent(chart, 'afterHideAllOverlappingLabels');\n }\n };\n /**\n * Hide or show labels based on opacity.\n *\n * @private\n * @function hideOrShow\n * @param {Highcharts.SVGElement} label\n * The label.\n * @param {Highcharts.Chart} chart\n * The chart that contains the label.\n * @return {boolean}\n * Whether label is affected\n */\n function hideOrShow(label, chart) {\n var complete,\n newOpacity,\n isLabelAffected = false;\n if (label) {\n newOpacity = label.newOpacity;\n if (label.oldOpacity !== newOpacity) {\n // Make sure the label is completely hidden to avoid catching clicks\n // (#4362)\n if (label.alignAttr && label.placed) { // data labels\n label[newOpacity ? 'removeClass' : 'addClass']('highcharts-data-label-hidden');\n complete = function () {\n if (!chart.styledMode) {\n label.css({\n pointerEvents: newOpacity ? 'auto' : 'none'\n });\n }\n };\n isLabelAffected = true;\n // Animate or set the opacity\n label.alignAttr.opacity = newOpacity;\n label[label.isOld ? 'animate' : 'attr'](label.alignAttr, null, complete);\n fireEvent(chart, 'afterHideOverlappingLabel');\n }\n else { // other labels, tick labels\n label.attr({\n opacity: newOpacity\n });\n }\n }\n label.isOld = true;\n }\n return isLabelAffected;\n }\n\n });\n _registerModule(_modules, 'Core/Responsive.js', [_modules['Core/Utilities.js']], function (U) {\n /* *\n *\n * (c) 2010-2021 Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var extend = U.extend,\n find = U.find,\n isArray = U.isArray,\n isObject = U.isObject,\n merge = U.merge,\n objectEach = U.objectEach,\n pick = U.pick,\n splat = U.splat,\n uniqueKey = U.uniqueKey;\n /* *\n *\n * Composition\n *\n * */\n var Responsive;\n (function (Responsive) {\n /* *\n *\n * Declarations\n *\n * */\n /* *\n *\n * Constants\n *\n * */\n var composedClasses = [];\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n /**\n * @private\n */\n function compose(ChartClass) {\n if (composedClasses.indexOf(ChartClass) === -1) {\n composedClasses.push(ChartClass);\n extend(ChartClass.prototype, Additions.prototype);\n }\n return ChartClass;\n }\n Responsive.compose = compose;\n /* *\n *\n * Class\n *\n * */\n var Additions = /** @class */ (function () {\n function Additions() {\n }\n /* *\n *\n * Functions\n *\n * */\n /**\n * Get the current values for a given set of options. Used before we\n * update the chart with a new responsiveness rule.\n *\n * @todo Restore axis options (by id?). The matching of items in\n * collections bears resemblance to the oneToOne matching in\n * Chart.update. Probably we can refactor out that matching and reuse it\n * in both functions.\n *\n * @private\n * @function Highcharts.Chart#currentOptions\n */\n Additions.prototype.currentOptions = function (options) {\n var chart = this, ret = {};\n /**\n * Recurse over a set of options and its current values,\n * and store the current values in the ret object.\n */\n function getCurrent(options, curr, ret, depth) {\n var i;\n objectEach(options, function (val, key) {\n if (!depth &&\n chart.collectionsWithUpdate.indexOf(key) > -1 &&\n curr[key]) {\n val = splat(val);\n ret[key] = [];\n // Iterate over collections like series, xAxis or yAxis\n // and map the items by index.\n for (i = 0; i < Math.max(val.length, curr[key].length); i++) {\n // Item exists in current data (#6347)\n if (curr[key][i]) {\n // If the item is missing from the new data, we\n // need to save the whole config structure. Like\n // when responsively updating from a dual axis\n // layout to a single axis and back (#13544).\n if (val[i] === void 0) {\n ret[key][i] = curr[key][i];\n // Otherwise, proceed\n }\n else {\n ret[key][i] = {};\n getCurrent(val[i], curr[key][i], ret[key][i], depth + 1);\n }\n }\n }\n }\n else if (isObject(val)) {\n ret[key] = isArray(val) ? [] : {};\n getCurrent(val, curr[key] || {}, ret[key], depth + 1);\n }\n else if (typeof curr[key] === 'undefined') { // #10286\n ret[key] = null;\n }\n else {\n ret[key] = curr[key];\n }\n });\n }\n getCurrent(options, this.options, ret, 0);\n return ret;\n };\n /**\n * Handle a single responsiveness rule.\n *\n * @private\n * @function Highcharts.Chart#matchResponsiveRule\n * @param {Highcharts.ResponsiveRulesOptions} rule\n * @param {Array<string>} matches\n */\n Additions.prototype.matchResponsiveRule = function (rule, matches) {\n var condition = rule.condition,\n fn = condition.callback || function () {\n return (this.chartWidth <= pick(condition.maxWidth,\n Number.MAX_VALUE) &&\n this.chartHeight <= pick(condition.maxHeight,\n Number.MAX_VALUE) &&\n this.chartWidth >= pick(condition.minWidth, 0) &&\n this.chartHeight >= pick(condition.minHeight, 0));\n };\n if (fn.call(this)) {\n matches.push(rule._id);\n }\n };\n /**\n * Update the chart based on the current chart/document size and options\n * for responsiveness.\n *\n * @private\n * @function Highcharts.Chart#setResponsive\n * @param {boolean} [redraw=true]\n * @param {boolean} [reset=false]\n * Reset by un-applying all rules. Chart.update resets all rules before\n * applying updated options.\n */\n Additions.prototype.setResponsive = function (redraw, reset) {\n var _this = this;\n var options = this.options.responsive,\n currentResponsive = this.currentResponsive;\n var ruleIds = [],\n undoOptions;\n if (!reset && options && options.rules) {\n options.rules.forEach(function (rule) {\n if (typeof rule._id === 'undefined') {\n rule._id = uniqueKey();\n }\n _this.matchResponsiveRule(rule, ruleIds /* , redraw */);\n }, this);\n }\n // Merge matching rules\n var mergedOptions = merge.apply(void 0,\n ruleIds\n .map(function (ruleId) { return find((options || {}).rules || [],\n function (rule) { return (rule._id === ruleId); }); })\n .map(function (rule) { return (rule && rule.chartOptions); }));\n mergedOptions.isResponsiveOptions = true;\n // Stringified key for the rules that currently apply.\n ruleIds = (ruleIds.toString() || void 0);\n var currentRuleIds = (currentResponsive && currentResponsive.ruleIds);\n // Changes in what rules apply\n if (ruleIds !== currentRuleIds) {\n // Undo previous rules. Before we apply a new set of rules, we\n // need to roll back completely to base options (#6291).\n if (currentResponsive) {\n this.update(currentResponsive.undoOptions, redraw, true);\n }\n if (ruleIds) {\n // Get undo-options for matching rules\n undoOptions = this.currentOptions(mergedOptions);\n undoOptions.isResponsiveOptions = true;\n this.currentResponsive = {\n ruleIds: ruleIds,\n mergedOptions: mergedOptions,\n undoOptions: undoOptions\n };\n this.update(mergedOptions, redraw, true);\n }\n else {\n this.currentResponsive = void 0;\n }\n }\n };\n return Additions;\n }());\n })(Responsive || (Responsive = {}));\n /* *\n *\n * Default Export\n *\n * */\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * A callback function to gain complete control on when the responsive rule\n * applies.\n *\n * @callback Highcharts.ResponsiveCallbackFunction\n *\n * @param {Highcharts.Chart} this\n * Chart context.\n *\n * @return {boolean}\n * Return `true` if it applies.\n */\n (''); // keeps doclets above in JS file\n /* *\n *\n * API Options\n *\n * */\n /**\n * Allows setting a set of rules to apply for different screen or chart\n * sizes. Each rule specifies additional chart options.\n *\n * @sample {highstock} stock/demo/responsive/\n * Stock chart\n * @sample highcharts/responsive/axis/\n * Axis\n * @sample highcharts/responsive/legend/\n * Legend\n * @sample highcharts/responsive/classname/\n * Class name\n *\n * @since 5.0.0\n * @apioption responsive\n */\n /**\n * A set of rules for responsive settings. The rules are executed from\n * the top down.\n *\n * @sample {highcharts} highcharts/responsive/axis/\n * Axis changes\n * @sample {highstock} highcharts/responsive/axis/\n * Axis changes\n * @sample {highmaps} highcharts/responsive/axis/\n * Axis changes\n *\n * @type {Array<*>}\n * @since 5.0.0\n * @apioption responsive.rules\n */\n /**\n * A full set of chart options to apply as overrides to the general\n * chart options. The chart options are applied when the given rule\n * is active.\n *\n * A special case is configuration objects that take arrays, for example\n * [xAxis](#xAxis), [yAxis](#yAxis) or [series](#series). For these\n * collections, an `id` option is used to map the new option set to\n * an existing object. If an existing object of the same id is not found,\n * the item of the same indexupdated. So for example, setting `chartOptions`\n * with two series items without an `id`, will cause the existing chart's\n * two series to be updated with respective options.\n *\n * @sample {highstock} stock/demo/responsive/\n * Stock chart\n * @sample highcharts/responsive/axis/\n * Axis\n * @sample highcharts/responsive/legend/\n * Legend\n * @sample highcharts/responsive/classname/\n * Class name\n *\n * @type {Highcharts.Options}\n * @since 5.0.0\n * @apioption responsive.rules.chartOptions\n */\n /**\n * Under which conditions the rule applies.\n *\n * @since 5.0.0\n * @apioption responsive.rules.condition\n */\n /**\n * A callback function to gain complete control on when the responsive\n * rule applies. Return `true` if it applies. This opens for checking\n * against other metrics than the chart size, for example the document\n * size or other elements.\n *\n * @type {Highcharts.ResponsiveCallbackFunction}\n * @since 5.0.0\n * @context Highcharts.Chart\n * @apioption responsive.rules.condition.callback\n */\n /**\n * The responsive rule applies if the chart height is less than this.\n *\n * @type {number}\n * @since 5.0.0\n * @apioption responsive.rules.condition.maxHeight\n */\n /**\n * The responsive rule applies if the chart width is less than this.\n *\n * @sample highcharts/responsive/axis/\n * Max width is 500\n *\n * @type {number}\n * @since 5.0.0\n * @apioption responsive.rules.condition.maxWidth\n */\n /**\n * The responsive rule applies if the chart height is greater than this.\n *\n * @type {number}\n * @default 0\n * @since 5.0.0\n * @apioption responsive.rules.condition.minHeight\n */\n /**\n * The responsive rule applies if the chart width is greater than this.\n *\n * @type {number}\n * @default 0\n * @since 5.0.0\n * @apioption responsive.rules.condition.minWidth\n */\n (''); // keeps doclets above in JS file\n\n return Responsive;\n });\n _registerModule(_modules, 'masters/highcharts.src.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js'], _modules['Core/Defaults.js'], _modules['Core/Animation/Fx.js'], _modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Renderer/HTML/AST.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Renderer/HTML/HTMLElement.js'], _modules['Core/Renderer/HTML/HTMLRenderer.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Axis/DateTimeAxis.js'], _modules['Core/Axis/LogarithmicAxis.js'], _modules['Core/Axis/PlotLineOrBand/PlotLineOrBand.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Tooltip.js'], _modules['Core/Series/Point.js'], _modules['Core/Pointer.js'], _modules['Core/MSPointer.js'], _modules['Core/Legend/Legend.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Axis/Stacking/StackingAxis.js'], _modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Series/Column/ColumnDataLabel.js'], _modules['Series/Pie/PieSeries.js'], _modules['Series/Pie/PieDataLabel.js'], _modules['Core/Series/DataLabel.js'], _modules['Core/Responsive.js'], _modules['Core/Color/Color.js'], _modules['Core/Time.js']], function (Highcharts, Utilities, Defaults, Fx, Animation, AST, FormatUtilities, RendererUtilities, SVGElement, SVGRenderer, HTMLElement, HTMLRenderer, Axis, DateTimeAxis, LogarithmicAxis, PlotLineOrBand, Tick, Tooltip, Point, Pointer, MSPointer, Legend, Chart, StackingAxis, StackItem, Series, SeriesRegistry, ColumnSeries, ColumnDataLabel, PieSeries, PieDataLabel, DataLabel, Responsive, Color, Time) {\n\n var G = Highcharts;\n // Animation\n G.animate = Animation.animate;\n G.animObject = Animation.animObject;\n G.getDeferredAnimation = Animation.getDeferredAnimation;\n G.setAnimation = Animation.setAnimation;\n G.stop = Animation.stop;\n G.timers = Fx.timers;\n // Classes\n G.AST = AST;\n G.Axis = Axis;\n G.Chart = Chart;\n G.chart = Chart.chart;\n G.Fx = Fx;\n G.Legend = Legend;\n G.PlotLineOrBand = PlotLineOrBand;\n G.Point = Point;\n G.Pointer = (MSPointer.isRequired() ? MSPointer : Pointer);\n G.Series = Series;\n G.StackItem = StackItem;\n G.SVGElement = SVGElement;\n G.SVGRenderer = SVGRenderer;\n G.Tick = Tick;\n G.Time = Time;\n G.Tooltip = Tooltip;\n // Color\n G.Color = Color;\n G.color = Color.parse;\n // Compositions\n HTMLRenderer.compose(SVGRenderer);\n HTMLElement.compose(SVGElement);\n // DefaultOptions\n G.defaultOptions = Defaults.defaultOptions;\n G.getOptions = Defaults.getOptions;\n G.time = Defaults.defaultTime;\n G.setOptions = Defaults.setOptions;\n // Format Utilities\n G.dateFormat = FormatUtilities.dateFormat;\n G.format = FormatUtilities.format;\n G.numberFormat = FormatUtilities.numberFormat;\n // Utilities\n G.addEvent = Utilities.addEvent;\n G.arrayMax = Utilities.arrayMax;\n G.arrayMin = Utilities.arrayMin;\n G.attr = Utilities.attr;\n G.clearTimeout = Utilities.clearTimeout;\n G.correctFloat = Utilities.correctFloat;\n G.createElement = Utilities.createElement;\n G.css = Utilities.css;\n G.defined = Utilities.defined;\n G.destroyObjectProperties = Utilities.destroyObjectProperties;\n G.discardElement = Utilities.discardElement;\n G.distribute = RendererUtilities.distribute;\n G.erase = Utilities.erase;\n G.error = Utilities.error;\n G.extend = Utilities.extend;\n G.extendClass = Utilities.extendClass;\n G.find = Utilities.find;\n G.fireEvent = Utilities.fireEvent;\n G.getMagnitude = Utilities.getMagnitude;\n G.getStyle = Utilities.getStyle;\n G.inArray = Utilities.inArray;\n G.isArray = Utilities.isArray;\n G.isClass = Utilities.isClass;\n G.isDOMElement = Utilities.isDOMElement;\n G.isFunction = Utilities.isFunction;\n G.isNumber = Utilities.isNumber;\n G.isObject = Utilities.isObject;\n G.isString = Utilities.isString;\n G.keys = Utilities.keys;\n G.merge = Utilities.merge;\n G.normalizeTickInterval = Utilities.normalizeTickInterval;\n G.objectEach = Utilities.objectEach;\n G.offset = Utilities.offset;\n G.pad = Utilities.pad;\n G.pick = Utilities.pick;\n G.pInt = Utilities.pInt;\n G.relativeLength = Utilities.relativeLength;\n G.removeEvent = Utilities.removeEvent;\n G.seriesType = SeriesRegistry.seriesType;\n G.splat = Utilities.splat;\n G.stableSort = Utilities.stableSort;\n G.syncTimeout = Utilities.syncTimeout;\n G.timeUnits = Utilities.timeUnits;\n G.uniqueKey = Utilities.uniqueKey;\n G.useSerialIds = Utilities.useSerialIds;\n G.wrap = Utilities.wrap;\n // Compositions\n ColumnDataLabel.compose(ColumnSeries);\n DataLabel.compose(Series);\n DateTimeAxis.compose(Axis);\n LogarithmicAxis.compose(Axis);\n PieDataLabel.compose(PieSeries);\n PlotLineOrBand.compose(Axis);\n Responsive.compose(Chart);\n StackingAxis.compose(Axis, Chart, Series);\n // Default Export\n\n return G;\n });\n _modules['masters/highcharts.src.js']._modules = _modules;\n return _modules['masters/highcharts.src.js'];\n}));","/**\n * @license Highcharts JS v10.3.3 (2023-01-20)\n *\n * Module for adding patterns and images as point fills.\n *\n * (c) 2010-2021 Highsoft AS\n * Author: Torstein Hønsi, Øystein Moseng\n *\n * License: www.highcharts.com/license\n */\n(function (factory) {\n if (typeof module === 'object' && module.exports) {\n factory['default'] = factory;\n module.exports = factory;\n } else if (typeof define === 'function' && define.amd) {\n define('highcharts/modules/pattern-fill', ['highcharts'], function (Highcharts) {\n factory(Highcharts);\n factory.Highcharts = Highcharts;\n return factory;\n });\n } else {\n factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);\n }\n}(function (Highcharts) {\n 'use strict';\n var _modules = Highcharts ? Highcharts._modules : {};\n function _registerModule(obj, path, args, fn) {\n if (!obj.hasOwnProperty(path)) {\n obj[path] = fn.apply(null, args);\n\n if (typeof CustomEvent === 'function') {\n window.dispatchEvent(\n new CustomEvent(\n 'HighchartsModuleLoaded',\n { detail: { path: path, module: obj[path] }\n })\n );\n }\n }\n }\n _registerModule(_modules, 'Extensions/PatternFill.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Globals.js'], _modules['Core/Defaults.js'], _modules['Core/Series/Point.js'], _modules['Core/Series/Series.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (A, Chart, H, D, Point, Series, SVGRenderer, U) {\n /* *\n *\n * Module for using patterns or images as point fills.\n *\n * (c) 2010-2021 Highsoft AS\n * Author: Torstein Hønsi, Øystein Moseng\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n var animObject = A.animObject;\n var getOptions = D.getOptions;\n var addEvent = U.addEvent,\n defined = U.defined,\n erase = U.erase,\n merge = U.merge,\n pick = U.pick,\n removeEvent = U.removeEvent,\n wrap = U.wrap;\n // Add the predefined patterns\n var patterns = H.patterns = (function () {\n var patterns = [],\n colors = getOptions().colors;\n // Start with subtle patterns\n [\n 'M 0 0 L 5 5 M 4.5 -0.5 L 5.5 0.5 M -0.5 4.5 L 0.5 5.5',\n 'M 0 5 L 5 0 M -0.5 0.5 L 0.5 -0.5 M 4.5 5.5 L 5.5 4.5',\n 'M 2 0 L 2 5 M 4 0 L 4 5',\n 'M 0 2 L 5 2 M 0 4 L 5 4',\n 'M 0 1.5 L 2.5 1.5 L 2.5 0 M 2.5 5 L 2.5 3.5 L 5 3.5'\n ].forEach(function (pattern, i) {\n patterns.push({\n path: pattern,\n color: colors[i],\n width: 5,\n height: 5,\n patternTransform: 'scale(1.4 1.4)'\n });\n });\n // Then add the more drastic ones\n [\n 'M 0 0 L 5 10 L 10 0',\n 'M 3 3 L 8 3 L 8 8 L 3 8 Z',\n 'M 5 5 m -4 0 a 4 4 0 1 1 8 0 a 4 4 0 1 1 -8 0',\n 'M 0 0 L 10 10 M 9 -1 L 11 1 M -1 9 L 1 11',\n 'M 0 10 L 10 0 M -1 1 L 1 -1 M 9 11 L 11 9'\n ].forEach(function (pattern, i) {\n patterns.push({\n path: pattern,\n color: colors[i + 5],\n width: 10,\n height: 10\n });\n });\n return patterns;\n })();\n /**\n * Utility function to compute a hash value from an object. Modified Java\n * String.hashCode implementation in JS. Use the preSeed parameter to add an\n * additional seeding step.\n *\n * @private\n * @function hashFromObject\n *\n * @param {Object} obj\n * The javascript object to compute the hash from.\n *\n * @param {boolean} [preSeed=false]\n * Add an optional preSeed stage.\n *\n * @return {string}\n * The computed hash.\n */\n function hashFromObject(obj, preSeed) {\n var str = JSON.stringify(obj),\n strLen = str.length || 0;\n var hash = 0,\n i = 0,\n char,\n seedStep;\n if (preSeed) {\n seedStep = Math.max(Math.floor(strLen / 500), 1);\n for (var a = 0; a < strLen; a += seedStep) {\n hash += str.charCodeAt(a);\n }\n hash = hash & hash;\n }\n for (; i < strLen; ++i) {\n char = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash;\n }\n return hash.toString(16).replace('-', '1');\n }\n /**\n * Set dimensions on pattern from point. This function will set internal\n * pattern._width/_height properties if width and height are not both already\n * set. We only do this on image patterns. The _width/_height properties are set\n * to the size of the bounding box of the point, optionally taking aspect ratio\n * into account. If only one of width or height are supplied as options, the\n * undefined option is calculated as above.\n *\n * @private\n * @function Highcharts.Point#calculatePatternDimensions\n *\n * @param {Highcharts.PatternOptionsObject} pattern\n * The pattern to set dimensions on.\n *\n * @return {void}\n *\n * @requires modules/pattern-fill\n */\n Point.prototype.calculatePatternDimensions = function (pattern) {\n if (pattern.width && pattern.height) {\n return;\n }\n var bBox = this.graphic && (this.graphic.getBBox &&\n this.graphic.getBBox(true) ||\n this.graphic.element &&\n this.graphic.element.getBBox()) || {},\n shapeArgs = this.shapeArgs;\n // Prefer using shapeArgs, as it is animation agnostic\n if (shapeArgs) {\n bBox.width = shapeArgs.width || bBox.width;\n bBox.height = shapeArgs.height || bBox.height;\n bBox.x = shapeArgs.x || bBox.x;\n bBox.y = shapeArgs.y || bBox.y;\n }\n // For images we stretch to bounding box\n if (pattern.image) {\n // If we do not have a bounding box at this point, simply add a defer\n // key and pick this up in the fillSetter handler, where the bounding\n // box should exist.\n if (!bBox.width || !bBox.height) {\n pattern._width = 'defer';\n pattern._height = 'defer';\n // Mark the pattern to be flipped later if upside down (#16810)\n var scaleY = this.series.chart.mapView &&\n this.series.chart.mapView.getSVGTransform().scaleY;\n if (defined(scaleY) && scaleY < 0) {\n pattern._inverted = true;\n }\n return;\n }\n // Handle aspect ratio filling\n if (pattern.aspectRatio) {\n bBox.aspectRatio = bBox.width / bBox.height;\n if (pattern.aspectRatio > bBox.aspectRatio) {\n // Height of bBox will determine width\n bBox.aspectWidth = bBox.height * pattern.aspectRatio;\n }\n else {\n // Width of bBox will determine height\n bBox.aspectHeight = bBox.width / pattern.aspectRatio;\n }\n }\n // We set the width/height on internal properties to differentiate\n // between the options set by a user and by this function.\n pattern._width = pattern.width ||\n Math.ceil(bBox.aspectWidth || bBox.width);\n pattern._height = pattern.height ||\n Math.ceil(bBox.aspectHeight || bBox.height);\n }\n // Set x/y accordingly, centering if using aspect ratio, otherwise adjusting\n // so bounding box corner is 0,0 of pattern.\n if (!pattern.width) {\n pattern._x = pattern.x || 0;\n pattern._x += bBox.x - Math.round(bBox.aspectWidth ?\n Math.abs(bBox.aspectWidth - bBox.width) / 2 :\n 0);\n }\n if (!pattern.height) {\n pattern._y = pattern.y || 0;\n pattern._y += bBox.y - Math.round(bBox.aspectHeight ?\n Math.abs(bBox.aspectHeight - bBox.height) / 2 :\n 0);\n }\n };\n /* eslint-disable no-invalid-this */\n /**\n * Add a pattern to the renderer.\n *\n * @private\n * @function Highcharts.SVGRenderer#addPattern\n *\n * @param {Highcharts.PatternObject} options\n * The pattern options.\n *\n * @param {boolean|Partial<Highcharts.AnimationOptionsObject>} [animation]\n * The animation options.\n *\n * @return {Highcharts.SVGElement|undefined}\n * The added pattern. Undefined if the pattern already exists.\n *\n * @requires modules/pattern-fill\n */\n SVGRenderer.prototype.addPattern = function (options, animation) {\n var pattern,\n animate = pick(animation,\n true),\n animationOptions = animObject(animate),\n path,\n defaultSize = 32,\n width = options.width || options._width || defaultSize,\n height = (options.height || options._height || defaultSize),\n color = options.color || '#343434',\n id = options.id,\n ren = this,\n rect = function (fill) {\n ren.rect(0, 0,\n width,\n height)\n .attr({ fill: fill })\n .add(pattern);\n }, attribs;\n if (!id) {\n this.idCounter = this.idCounter || 0;\n id = ('highcharts-pattern-' +\n this.idCounter +\n '-' +\n (this.chartIndex || 0));\n ++this.idCounter;\n }\n if (this.forExport) {\n id += '-export';\n }\n // Do nothing if ID already exists\n this.defIds = this.defIds || [];\n if (this.defIds.indexOf(id) > -1) {\n return;\n }\n // Store ID in list to avoid duplicates\n this.defIds.push(id);\n // Calculate pattern element attributes\n var attrs = {\n id: id,\n patternUnits: 'userSpaceOnUse',\n patternContentUnits: options.patternContentUnits || 'userSpaceOnUse',\n width: width,\n height: height,\n x: options._x || options.x || 0,\n y: options._y || options.y || 0\n };\n if (options._inverted) {\n attrs.patternTransform = 'scale(1, -1)'; // (#16810)\n if (options.patternTransform) {\n options.patternTransform += ' scale(1, -1)';\n }\n }\n if (options.patternTransform) {\n attrs.patternTransform = options.patternTransform;\n }\n pattern = this.createElement('pattern').attr(attrs).add(this.defs);\n // Set id on the SVGRenderer object\n pattern.id = id;\n // Use an SVG path for the pattern\n if (options.path) {\n path = U.isObject(options.path) ?\n options.path :\n { d: options.path };\n // The background\n if (options.backgroundColor) {\n rect(options.backgroundColor);\n }\n // The pattern\n attribs = {\n 'd': path.d\n };\n if (!this.styledMode) {\n attribs.stroke = path.stroke || color;\n attribs['stroke-width'] = pick(path.strokeWidth, 2);\n attribs.fill = path.fill || 'none';\n }\n if (path.transform) {\n attribs.transform = path.transform;\n }\n this.createElement('path').attr(attribs).add(pattern);\n pattern.color = color;\n // Image pattern\n }\n else if (options.image) {\n if (animate) {\n this.image(options.image, 0, 0, width, height, function () {\n // Onload\n this.animate({\n opacity: pick(options.opacity, 1)\n }, animationOptions);\n removeEvent(this.element, 'load');\n }).attr({ opacity: 0 }).add(pattern);\n }\n else {\n this.image(options.image, 0, 0, width, height).add(pattern);\n }\n }\n // For non-animated patterns, set opacity now\n if (!(options.image && animate) && typeof options.opacity !== 'undefined') {\n [].forEach.call(pattern.element.childNodes, function (child) {\n child.setAttribute('opacity', options.opacity);\n });\n }\n // Store for future reference\n this.patternElements = this.patternElements || {};\n this.patternElements[id] = pattern;\n return pattern;\n };\n // Make sure we have a series color\n wrap(Series.prototype, 'getColor', function (proceed) {\n var oldColor = this.options.color;\n // Temporarely remove color options to get defaults\n if (oldColor &&\n oldColor.pattern &&\n !oldColor.pattern.color) {\n delete this.options.color;\n // Get default\n proceed.apply(this, Array.prototype.slice.call(arguments, 1));\n // Replace with old, but add default color\n oldColor.pattern.color =\n this.color;\n this.color = this.options.color = oldColor;\n }\n else {\n // We have a color, no need to do anything special\n proceed.apply(this, Array.prototype.slice.call(arguments, 1));\n }\n });\n // Calculate pattern dimensions on points that have their own pattern.\n addEvent(Series, 'render', function () {\n var isResizing = this.chart.isResizing;\n if (this.isDirtyData || isResizing || !this.chart.hasRendered) {\n (this.points || []).forEach(function (point) {\n var colorOptions = point.options && point.options.color;\n if (colorOptions &&\n colorOptions.pattern) {\n // For most points we want to recalculate the dimensions on\n // render, where we have the shape args and bbox. But if we\n // are resizing and don't have the shape args, defer it, since\n // the bounding box is still not resized.\n if (isResizing &&\n !(point.shapeArgs &&\n point.shapeArgs.width &&\n point.shapeArgs.height)) {\n colorOptions\n .pattern._width = 'defer';\n colorOptions\n .pattern._height = 'defer';\n }\n else {\n point.calculatePatternDimensions(colorOptions.pattern);\n }\n }\n });\n }\n });\n // Merge series color options to points\n addEvent(Point, 'afterInit', function () {\n var point = this,\n colorOptions = point.options.color;\n // Only do this if we have defined a specific color on this point. Otherwise\n // we will end up trying to re-add the series color for each point.\n if (colorOptions && colorOptions.pattern) {\n // Move path definition to object, allows for merge with series path\n // definition\n if (typeof colorOptions.pattern.path === 'string') {\n colorOptions.pattern.path = {\n d: colorOptions.pattern.path\n };\n }\n // Merge with series options\n point.color = point.options.color = merge(point.series.options.color, colorOptions);\n }\n });\n // Add functionality to SVG renderer to handle patterns as complex colors\n addEvent(SVGRenderer, 'complexColor', function (args) {\n var color = args.args[0],\n prop = args.args[1],\n element = args.args[2],\n chartIndex = (this.chartIndex || 0);\n var pattern = color.pattern,\n value = '#343434';\n // Handle patternIndex\n if (typeof color.patternIndex !== 'undefined' && patterns) {\n pattern = patterns[color.patternIndex];\n }\n // Skip and call default if there is no pattern\n if (!pattern) {\n return true;\n }\n // We have a pattern.\n if (pattern.image ||\n typeof pattern.path === 'string' ||\n pattern.path && pattern.path.d) {\n // Real pattern. Add it and set the color value to be a reference.\n // Force Hash-based IDs for legend items, as they are drawn before\n // point render, meaning they are drawn before autocalculated image\n // width/heights. We don't want them to highjack the width/height for\n // this ID if it is defined by users.\n var forceHashId = element.parentNode &&\n element.parentNode.getAttribute('class');\n forceHashId = forceHashId &&\n forceHashId.indexOf('highcharts-legend') > -1;\n // If we don't have a width/height yet, handle it. Try faking a point\n // and running the algorithm again.\n if (pattern._width === 'defer' || pattern._height === 'defer') {\n Point.prototype.calculatePatternDimensions.call({ graphic: { element: element } }, pattern);\n }\n // If we don't have an explicit ID, compute a hash from the\n // definition and use that as the ID. This ensures that points with\n // the same pattern definition reuse existing pattern elements by\n // default. We combine two hashes, the second with an additional\n // preSeed algorithm, to minimize collision probability.\n if (forceHashId || !pattern.id) {\n // Make a copy so we don't accidentally edit options when setting ID\n pattern = merge({}, pattern);\n pattern.id = 'highcharts-pattern-' + chartIndex + '-' +\n hashFromObject(pattern) + hashFromObject(pattern, true);\n }\n // Add it. This function does nothing if an element with this ID\n // already exists.\n this.addPattern(pattern, !this.forExport && pick(pattern.animation, this.globalAnimation, { duration: 100 }));\n value = \"url(\".concat(this.url, \"#\").concat(pattern.id + (this.forExport ? '-export' : ''), \")\");\n }\n else {\n // Not a full pattern definition, just add color\n value = pattern.color || value;\n }\n // Set the fill/stroke prop on the element\n element.setAttribute(prop, value);\n // Allow the color to be concatenated into tooltips formatters etc.\n color.toString = function () {\n return value;\n };\n // Skip default handler\n return false;\n });\n // When animation is used, we have to recalculate pattern dimensions after\n // resize, as the bounding boxes are not available until then.\n addEvent(Chart, 'endResize', function () {\n if ((this.renderer && this.renderer.defIds || []).filter(function (id) {\n return (id &&\n id.indexOf &&\n id.indexOf('highcharts-pattern-') === 0);\n }).length) {\n // We have non-default patterns to fix. Find them by looping through\n // all points.\n this.series.forEach(function (series) {\n if (series.visible) {\n series.points.forEach(function (point) {\n var colorOptions = point.options && point.options.color;\n if (colorOptions &&\n colorOptions.pattern) {\n colorOptions.pattern\n ._width = 'defer';\n colorOptions.pattern\n ._height = 'defer';\n }\n });\n }\n });\n // Redraw without animation\n this.redraw(false);\n }\n });\n // Add a garbage collector to delete old patterns with autogenerated hashes that\n // are no longer being referenced.\n addEvent(Chart, 'redraw', function () {\n var usedIds = {},\n renderer = this.renderer, \n // Get the autocomputed patterns - these are the ones we might delete\n patterns = (renderer.defIds || []).filter(function (pattern) {\n return (pattern.indexOf &&\n pattern.indexOf('highcharts-pattern-') === 0);\n });\n if (patterns.length) {\n // Look through the DOM for usage of the patterns. This can be points,\n // series, tooltips etc.\n [].forEach.call(this.renderTo.querySelectorAll('[color^=\"url(\"], [fill^=\"url(\"], [stroke^=\"url(\"]'), function (node) {\n var id = node.getAttribute('fill') ||\n node.getAttribute('color') ||\n node.getAttribute('stroke');\n if (id) {\n var sanitizedId = id\n .replace(renderer.url, '')\n .replace('url(#', '')\n .replace(')', '');\n usedIds[sanitizedId] = true;\n }\n });\n // Loop through the patterns that exist and see if they are used\n patterns.forEach(function (id) {\n if (!usedIds[id]) {\n // Remove id from used id list\n erase(renderer.defIds, id);\n // Remove pattern element\n if (renderer.patternElements[id]) {\n renderer.patternElements[id].destroy();\n delete renderer.patternElements[id];\n }\n }\n });\n }\n });\n /* *\n *\n * API Declarations\n *\n * */\n /**\n * Pattern options\n *\n * @interface Highcharts.PatternOptionsObject\n */ /**\n * Background color for the pattern if a `path` is set (not images).\n * @name Highcharts.PatternOptionsObject#backgroundColor\n * @type {Highcharts.ColorString|undefined}\n */ /**\n * URL to an image to use as the pattern.\n * @name Highcharts.PatternOptionsObject#image\n * @type {string|undefined}\n */ /**\n * Width of the pattern. For images this is automatically set to the width of\n * the element bounding box if not supplied. For non-image patterns the default\n * is 32px. Note that automatic resizing of image patterns to fill a bounding\n * box dynamically is only supported for patterns with an automatically\n * calculated ID.\n * @name Highcharts.PatternOptionsObject#width\n * @type {number|undefined}\n */ /**\n * Analogous to pattern.width.\n * @name Highcharts.PatternOptionsObject#height\n * @type {number|undefined}\n */ /**\n * For automatically calculated width and height on images, it is possible to\n * set an aspect ratio. The image will be zoomed to fill the bounding box,\n * maintaining the aspect ratio defined.\n * @name Highcharts.PatternOptionsObject#aspectRatio\n * @type {number|undefined}\n */ /**\n * Horizontal offset of the pattern. Defaults to 0.\n * @name Highcharts.PatternOptionsObject#x\n * @type {number|undefined}\n */ /**\n * Vertical offset of the pattern. Defaults to 0.\n * @name Highcharts.PatternOptionsObject#y\n * @type {number|undefined}\n */ /**\n * Either an SVG path as string, or an object. As an object, supply the path\n * string in the `path.d` property. Other supported properties are standard SVG\n * attributes like `path.stroke` and `path.fill`. If a path is supplied for the\n * pattern, the `image` property is ignored.\n * @name Highcharts.PatternOptionsObject#path\n * @type {string|Highcharts.SVGAttributes|undefined}\n */ /**\n * SVG `patternTransform` to apply to the entire pattern.\n * @name Highcharts.PatternOptionsObject#patternTransform\n * @type {string|undefined}\n * @see [patternTransform demo](https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/series/pattern-fill-transform)\n */ /**\n * Pattern color, used as default path stroke.\n * @name Highcharts.PatternOptionsObject#color\n * @type {Highcharts.ColorString|undefined}\n */ /**\n * Opacity of the pattern as a float value from 0 to 1.\n * @name Highcharts.PatternOptionsObject#opacity\n * @type {number|undefined}\n */ /**\n * ID to assign to the pattern. This is automatically computed if not added, and\n * identical patterns are reused. To refer to an existing pattern for a\n * Highcharts color, use `color: \"url(#pattern-id)\"`.\n * @name Highcharts.PatternOptionsObject#id\n * @type {string|undefined}\n */\n /**\n * Holds a pattern definition.\n *\n * @sample highcharts/series/pattern-fill-area/\n * Define a custom path pattern\n * @sample highcharts/series/pattern-fill-pie/\n * Default patterns and a custom image pattern\n * @sample maps/demo/pattern-fill-map/\n * Custom images on map\n *\n * @example\n * // Pattern used as a color option\n * color: {\n * pattern: {\n * path: {\n * d: 'M 3 3 L 8 3 L 8 8 Z',\n * fill: '#102045'\n * },\n * width: 12,\n * height: 12,\n * color: '#907000',\n * opacity: 0.5\n * }\n * }\n *\n * @interface Highcharts.PatternObject\n */ /**\n * Pattern options\n * @name Highcharts.PatternObject#pattern\n * @type {Highcharts.PatternOptionsObject}\n */ /**\n * Animation options for the image pattern loading.\n * @name Highcharts.PatternObject#animation\n * @type {boolean|Partial<Highcharts.AnimationOptionsObject>|undefined}\n */ /**\n * Optionally an index referencing which pattern to use. Highcharts adds\n * 10 default patterns to the `Highcharts.patterns` array. Additional\n * pattern definitions can be pushed to this array if desired. This option\n * is an index into this array.\n * @name Highcharts.PatternObject#patternIndex\n * @type {number|undefined}\n */\n ''; // keeps doclets above in transpiled file\n\n });\n _registerModule(_modules, 'masters/modules/pattern-fill.src.js', [], function () {\n\n\n });\n}));","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n}\n\nmodule.exports = mapKeys;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nmodule.exports = snakeCase;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","// @flow\n/* eslint-env browser */\nimport type {Window} from '../../types/window.js';\n\n// shim window for the case of requiring the browser bundle in Node\nexport default ((typeof self !== 'undefined' ? self : ({}: any)): Window);\n","/*\n * Copyright (C) 2008 Apple Inc. All Rights Reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * Ported from Webkit\n * http://svn.webkit.org/repository/webkit/trunk/Source/WebCore/platform/graphics/UnitBezier.h\n */\n\nmodule.exports = UnitBezier;\n\nfunction UnitBezier(p1x, p1y, p2x, p2y) {\n // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n this.cx = 3.0 * p1x;\n this.bx = 3.0 * (p2x - p1x) - this.cx;\n this.ax = 1.0 - this.cx - this.bx;\n\n this.cy = 3.0 * p1y;\n this.by = 3.0 * (p2y - p1y) - this.cy;\n this.ay = 1.0 - this.cy - this.by;\n\n this.p1x = p1x;\n this.p1y = p2y;\n this.p2x = p2x;\n this.p2y = p2y;\n}\n\nUnitBezier.prototype.sampleCurveX = function(t) {\n // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n return ((this.ax * t + this.bx) * t + this.cx) * t;\n};\n\nUnitBezier.prototype.sampleCurveY = function(t) {\n return ((this.ay * t + this.by) * t + this.cy) * t;\n};\n\nUnitBezier.prototype.sampleCurveDerivativeX = function(t) {\n return (3.0 * this.ax * t + 2.0 * this.bx) * t + this.cx;\n};\n\nUnitBezier.prototype.solveCurveX = function(x, epsilon) {\n if (typeof epsilon === 'undefined') epsilon = 1e-6;\n\n var t0, t1, t2, x2, i;\n\n // First try a few iterations of Newton's method -- normally very fast.\n for (t2 = x, i = 0; i < 8; i++) {\n\n x2 = this.sampleCurveX(t2) - x;\n if (Math.abs(x2) < epsilon) return t2;\n\n var d2 = this.sampleCurveDerivativeX(t2);\n if (Math.abs(d2) < 1e-6) break;\n\n t2 = t2 - x2 / d2;\n }\n\n // Fall back to the bisection method for reliability.\n t0 = 0.0;\n t1 = 1.0;\n t2 = x;\n\n if (t2 < t0) return t0;\n if (t2 > t1) return t1;\n\n while (t0 < t1) {\n\n x2 = this.sampleCurveX(t2);\n if (Math.abs(x2 - x) < epsilon) return t2;\n\n if (x > x2) {\n t0 = t2;\n } else {\n t1 = t2;\n }\n\n t2 = (t1 - t0) * 0.5 + t0;\n }\n\n // Failure.\n return t2;\n};\n\nUnitBezier.prototype.solve = function(x, epsilon) {\n return this.sampleCurveY(this.solveCurveX(x, epsilon));\n};\n","'use strict';\n\nmodule.exports = Point;\n\n/**\n * A standalone point geometry with useful accessor, comparison, and\n * modification methods.\n *\n * @class Point\n * @param {Number} x the x-coordinate. this could be longitude or screen\n * pixels, or any other sort of unit.\n * @param {Number} y the y-coordinate. this could be latitude or screen\n * pixels, or any other sort of unit.\n * @example\n * var point = new Point(-77, 38);\n */\nfunction Point(x, y) {\n this.x = x;\n this.y = y;\n}\n\nPoint.prototype = {\n\n /**\n * Clone this point, returning a new point that can be modified\n * without affecting the old one.\n * @return {Point} the clone\n */\n clone: function() { return new Point(this.x, this.y); },\n\n /**\n * Add this point's x & y coordinates to another point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n add: function(p) { return this.clone()._add(p); },\n\n /**\n * Subtract this point's x & y coordinates to from point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n sub: function(p) { return this.clone()._sub(p); },\n\n /**\n * Multiply this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n multByPoint: function(p) { return this.clone()._multByPoint(p); },\n\n /**\n * Divide this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n divByPoint: function(p) { return this.clone()._divByPoint(p); },\n\n /**\n * Multiply this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n mult: function(k) { return this.clone()._mult(k); },\n\n /**\n * Divide this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n div: function(k) { return this.clone()._div(k); },\n\n /**\n * Rotate this point around the 0, 0 origin by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @return {Point} output point\n */\n rotate: function(a) { return this.clone()._rotate(a); },\n\n /**\n * Rotate this point around p point by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @param {Point} p Point to rotate around\n * @return {Point} output point\n */\n rotateAround: function(a,p) { return this.clone()._rotateAround(a,p); },\n\n /**\n * Multiply this point by a 4x1 transformation matrix\n * @param {Array<Number>} m transformation matrix\n * @return {Point} output point\n */\n matMult: function(m) { return this.clone()._matMult(m); },\n\n /**\n * Calculate this point but as a unit vector from 0, 0, meaning\n * that the distance from the resulting point to the 0, 0\n * coordinate will be equal to 1 and the angle from the resulting\n * point to the 0, 0 coordinate will be the same as before.\n * @return {Point} unit vector point\n */\n unit: function() { return this.clone()._unit(); },\n\n /**\n * Compute a perpendicular point, where the new y coordinate\n * is the old x coordinate and the new x coordinate is the old y\n * coordinate multiplied by -1\n * @return {Point} perpendicular point\n */\n perp: function() { return this.clone()._perp(); },\n\n /**\n * Return a version of this point with the x & y coordinates\n * rounded to integers.\n * @return {Point} rounded point\n */\n round: function() { return this.clone()._round(); },\n\n /**\n * Return the magitude of this point: this is the Euclidean\n * distance from the 0, 0 coordinate to this point's x and y\n * coordinates.\n * @return {Number} magnitude\n */\n mag: function() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n },\n\n /**\n * Judge whether this point is equal to another point, returning\n * true or false.\n * @param {Point} other the other point\n * @return {boolean} whether the points are equal\n */\n equals: function(other) {\n return this.x === other.x &&\n this.y === other.y;\n },\n\n /**\n * Calculate the distance from this point to another point\n * @param {Point} p the other point\n * @return {Number} distance\n */\n dist: function(p) {\n return Math.sqrt(this.distSqr(p));\n },\n\n /**\n * Calculate the distance from this point to another point,\n * without the square root step. Useful if you're comparing\n * relative distances.\n * @param {Point} p the other point\n * @return {Number} distance\n */\n distSqr: function(p) {\n var dx = p.x - this.x,\n dy = p.y - this.y;\n return dx * dx + dy * dy;\n },\n\n /**\n * Get the angle from the 0, 0 coordinate to this point, in radians\n * coordinates.\n * @return {Number} angle\n */\n angle: function() {\n return Math.atan2(this.y, this.x);\n },\n\n /**\n * Get the angle from this point to another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleTo: function(b) {\n return Math.atan2(this.y - b.y, this.x - b.x);\n },\n\n /**\n * Get the angle between this point and another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleWith: function(b) {\n return this.angleWithSep(b.x, b.y);\n },\n\n /*\n * Find the angle of the two vectors, solving the formula for\n * the cross product a x b = |a||b|sin(θ) for θ.\n * @param {Number} x the x-coordinate\n * @param {Number} y the y-coordinate\n * @return {Number} the angle in radians\n */\n angleWithSep: function(x, y) {\n return Math.atan2(\n this.x * y - this.y * x,\n this.x * x + this.y * y);\n },\n\n _matMult: function(m) {\n var x = m[0] * this.x + m[1] * this.y,\n y = m[2] * this.x + m[3] * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _add: function(p) {\n this.x += p.x;\n this.y += p.y;\n return this;\n },\n\n _sub: function(p) {\n this.x -= p.x;\n this.y -= p.y;\n return this;\n },\n\n _mult: function(k) {\n this.x *= k;\n this.y *= k;\n return this;\n },\n\n _div: function(k) {\n this.x /= k;\n this.y /= k;\n return this;\n },\n\n _multByPoint: function(p) {\n this.x *= p.x;\n this.y *= p.y;\n return this;\n },\n\n _divByPoint: function(p) {\n this.x /= p.x;\n this.y /= p.y;\n return this;\n },\n\n _unit: function() {\n this._div(this.mag());\n return this;\n },\n\n _perp: function() {\n var y = this.y;\n this.y = this.x;\n this.x = -y;\n return this;\n },\n\n _rotate: function(angle) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = cos * this.x - sin * this.y,\n y = sin * this.x + cos * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _rotateAround: function(angle, p) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y),\n y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);\n this.x = x;\n this.y = y;\n return this;\n },\n\n _round: function() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n }\n};\n\n/**\n * Construct a point from an array if necessary, otherwise if the input\n * is already a Point, or an unknown type, return it unchanged\n * @param {Array<Number>|Point|*} a any kind of input value\n * @return {Point} constructed point, or passed-through value.\n * @example\n * // this\n * var point = Point.convert([0, 1]);\n * // is equivalent to\n * var point = new Point(0, 1);\n */\nPoint.convert = function (a) {\n if (a instanceof Point) {\n return a;\n }\n if (Array.isArray(a)) {\n return new Point(a[0], a[1]);\n }\n return a;\n};\n","// @flow\n\nimport UnitBezier from '@mapbox/unitbezier';\n\nimport Point from '@mapbox/point-geometry';\nimport window from './window.js';\nimport assert from 'assert';\n\nimport type {Callback} from '../types/callback.js';\nimport type {Mat4, Vec4} from 'gl-matrix';\n\nconst DEG_TO_RAD = Math.PI / 180;\nconst RAD_TO_DEG = 180 / Math.PI;\n\n/**\n * Converts an angle in degrees to radians\n * copy all properties from the source objects into the destination.\n * The last source object given overrides properties from previous\n * source objects.\n *\n * @param a angle to convert\n * @returns the angle in radians\n * @private\n */\nexport function degToRad(a: number): number {\n return a * DEG_TO_RAD;\n}\n\n/**\n * Converts an angle in radians to degrees\n * copy all properties from the source objects into the destination.\n * The last source object given overrides properties from previous\n * source objects.\n *\n * @param a angle to convert\n * @returns the angle in degrees\n * @private\n */\nexport function radToDeg(a: number): number {\n return a * RAD_TO_DEG;\n}\n\nconst TILE_CORNERS = [[0, 0], [1, 0], [1, 1], [0, 1]];\n\n/**\n * Given a particular bearing, returns the corner of the tile thats farthest\n * along the bearing.\n *\n * @param {number} bearing angle in degrees (-180, 180]\n * @returns {QuadCorner}\n * @private\n */\nexport function furthestTileCorner(bearing: number): [number, number] {\n const alignedBearing = ((bearing + 45) + 360) % 360;\n const cornerIdx = Math.round(alignedBearing / 90) % 4;\n return TILE_CORNERS[cornerIdx];\n}\n\n/**\n * @module util\n * @private\n */\n\n/**\n * Given a value `t` that varies between 0 and 1, return\n * an interpolation function that eases between 0 and 1 in a pleasing\n * cubic in-out fashion.\n *\n * @private\n */\nexport function easeCubicInOut(t: number): number {\n if (t <= 0) return 0;\n if (t >= 1) return 1;\n const t2 = t * t,\n t3 = t2 * t;\n return 4 * (t < 0.5 ? t3 : 3 * (t - t2) + t3 - 0.75);\n}\n\n/**\n * Computes an AABB for a set of points.\n *\n * @param {Point[]} points\n * @returns {{ min: Point, max: Point}}\n * @private\n */\nexport function getBounds(points: Point[]): { min: Point, max: Point} {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const p of points) {\n minX = Math.min(minX, p.x);\n minY = Math.min(minY, p.y);\n maxX = Math.max(maxX, p.x);\n maxY = Math.max(maxY, p.y);\n }\n\n return {\n min: new Point(minX, minY),\n max: new Point(maxX, maxY),\n };\n}\n\n/**\n * Returns the square of the 2D distance between an AABB defined by min and max and a point.\n * If point is null or undefined, the AABB distance from the origin (0,0) is returned.\n *\n * @param {Point} min The minimum extent of the AABB.\n * @param {Point} max The maximum extent of the AABB.\n * @param {Point} [point] The point to compute the distance from, may be undefined.\n * @returns {number} The square distance from the AABB, 0.0 if the AABB contains the point.\n */\nexport function getAABBPointSquareDist(min: Point, max: Point, point: ?Point): number {\n let sqDist = 0.0;\n\n for (let i = 0; i < 2; ++i) {\n const v = point ? point[i] : 0.0;\n assert(min[i] < max[i], 'Invalid aabb min and max inputs, min[i] must be < max[i].');\n if (min[i] > v) sqDist += (min[i] - v) * (min[i] - v);\n if (max[i] < v) sqDist += (v - max[i]) * (v - max[i]);\n }\n\n return sqDist;\n}\n\n/**\n * Converts a AABB into a polygon with clockwise winding order.\n *\n * @param {Point} min The top left point.\n * @param {Point} max The bottom right point.\n * @param {number} [buffer=0] The buffer width.\n * @param {boolean} [close=true] Whether to close the polygon or not.\n * @returns {Point[]} The polygon.\n */\nexport function polygonizeBounds(min: Point, max: Point, buffer: number = 0, close: boolean = true): Point[] {\n const offset = new Point(buffer, buffer);\n const minBuf = min.sub(offset);\n const maxBuf = max.add(offset);\n const polygon = [minBuf, new Point(maxBuf.x, minBuf.y), maxBuf, new Point(minBuf.x, maxBuf.y)];\n\n if (close) {\n polygon.push(minBuf.clone());\n }\n return polygon;\n}\n\n/**\n * Takes a convex ring and expands it outward by applying a buffer around it.\n * This function assumes that the ring is in clockwise winding order.\n *\n * @param {Point[]} ring The input ring.\n * @param {number} buffer The buffer width.\n * @returns {Point[]} The expanded ring.\n */\nexport function bufferConvexPolygon(ring: Point[], buffer: number): Point[] {\n assert(ring.length > 2, 'bufferConvexPolygon requires the ring to have atleast 3 points');\n const output = [];\n for (let currIdx = 0; currIdx < ring.length; currIdx++) {\n const prevIdx = wrap(currIdx - 1, -1, ring.length - 1);\n const nextIdx = wrap(currIdx + 1, -1, ring.length - 1);\n const prev = ring[prevIdx];\n const curr = ring[currIdx];\n const next = ring[nextIdx];\n const p1 = prev.sub(curr).unit();\n const p2 = next.sub(curr).unit();\n const interiorAngle = p2.angleWithSep(p1.x, p1.y);\n // Calcuate a vector that points in the direction of the angle bisector between two sides.\n // Scale it based on a right angled triangle constructed at that corner.\n const offset = p1.add(p2).unit().mult(-1 * buffer / Math.sin(interiorAngle / 2));\n output.push(curr.add(offset));\n }\n return output;\n}\n\ntype EaseFunction = (t: number) => number;\n\n/**\n * Given given (x, y), (x1, y1) control points for a bezier curve,\n * return a function that interpolates along that curve.\n *\n * @param p1x control point 1 x coordinate\n * @param p1y control point 1 y coordinate\n * @param p2x control point 2 x coordinate\n * @param p2y control point 2 y coordinate\n * @private\n */\nexport function bezier(p1x: number, p1y: number, p2x: number, p2y: number): EaseFunction {\n const bezier = new UnitBezier(p1x, p1y, p2x, p2y);\n return function(t: number) {\n return bezier.solve(t);\n };\n}\n\n/**\n * A default bezier-curve powered easing function with\n * control points (0.25, 0.1) and (0.25, 1)\n *\n * @private\n */\nexport const ease: EaseFunction = bezier(0.25, 0.1, 0.25, 1);\n\n/**\n * constrain n to the given range via min + max\n *\n * @param n value\n * @param min the minimum value to be returned\n * @param max the maximum value to be returned\n * @returns the clamped value\n * @private\n */\nexport function clamp(n: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, n));\n}\n\n/**\n * Equivalent to GLSL smoothstep.\n *\n * @param {number} e0 The lower edge of the sigmoid\n * @param {number} e1 The upper edge of the sigmoid\n * @param {number} x the value to be interpolated\n * @returns {number} in the range [0, 1]\n * @private\n */\nexport function smoothstep(e0: number, e1: number, x: number): number {\n x = clamp((x - e0) / (e1 - e0), 0, 1);\n return x * x * (3 - 2 * x);\n}\n\n/**\n * constrain n to the given range, excluding the minimum, via modular arithmetic\n *\n * @param n value\n * @param min the minimum value to be returned, exclusive\n * @param max the maximum value to be returned, inclusive\n * @returns constrained number\n * @private\n */\nexport function wrap(n: number, min: number, max: number): number {\n const d = max - min;\n const w = ((n - min) % d + d) % d + min;\n return (w === min) ? max : w;\n}\n\n/**\n * Computes shortest angle in range [-180, 180) between two angles.\n *\n * @param {*} a First angle in degrees\n * @param {*} b Second angle in degrees\n * @returns Shortest angle\n * @private\n */\nexport function shortestAngle(a: number, b: number): number {\n const diff = (b - a + 180) % 360 - 180;\n return diff < -180 ? diff + 360 : diff;\n}\n\n/*\n * Call an asynchronous function on an array of arguments,\n * calling `callback` with the completed results of all calls.\n *\n * @param array input to each call of the async function.\n * @param fn an async function with signature (data, callback)\n * @param callback a callback run after all async work is done.\n * called with an array, containing the results of each async call.\n * @private\n */\nexport function asyncAll<Item, Result>(\n array: Array<Item>,\n fn: (item: Item, fnCallback: Callback<Result>) => void,\n callback: Callback<Array<Result>>\n): void {\n if (!array.length) { return callback(null, []); }\n let remaining = array.length;\n const results = new Array(array.length);\n let error = null;\n array.forEach((item, i) => {\n fn(item, (err, result) => {\n if (err) error = err;\n results[i] = ((result: any): Result); // https://github.com/facebook/flow/issues/2123\n if (--remaining === 0) callback(error, results);\n });\n });\n}\n\n/*\n * Polyfill for Object.values. Not fully spec compliant, but we don't\n * need it to be.\n *\n * @private\n */\nexport function values<T>(obj: {[key: string]: T}): Array<T> {\n const result = [];\n for (const k in obj) {\n result.push(obj[k]);\n }\n return result;\n}\n\n/*\n * Compute the difference between the keys in one object and the keys\n * in another object.\n *\n * @returns keys difference\n * @private\n */\nexport function keysDifference<S, T>(obj: {[key: string]: S}, other: {[key: string]: T}): Array<string> {\n const difference = [];\n for (const i in obj) {\n if (!(i in other)) {\n difference.push(i);\n }\n }\n return difference;\n}\n\n/**\n * Given a destination object and optionally many source objects,\n * copy all properties from the source objects into the destination.\n * The last source object given overrides properties from previous\n * source objects.\n *\n * @param dest destination object\n * @param sources sources from which properties are pulled\n * @private\n */\nexport function extend(dest: Object, ...sources: Array<?Object>): Object {\n for (const src of sources) {\n for (const k in src) {\n dest[k] = src[k];\n }\n }\n return dest;\n}\n\n/**\n * Given an object and a number of properties as strings, return version\n * of that object with only those properties.\n *\n * @param src the object\n * @param properties an array of property names chosen\n * to appear on the resulting object.\n * @returns object with limited properties.\n * @example\n * var foo = { name: 'Charlie', age: 10 };\n * var justName = pick(foo, ['name']);\n * // justName = { name: 'Charlie' }\n * @private\n */\nexport function pick(src: Object, properties: Array<string>): Object {\n const result = {};\n for (let i = 0; i < properties.length; i++) {\n const k = properties[i];\n if (k in src) {\n result[k] = src[k];\n }\n }\n return result;\n}\n\nlet id = 1;\n\n/**\n * Return a unique numeric id, starting at 1 and incrementing with\n * each call.\n *\n * @returns unique numeric id.\n * @private\n */\nexport function uniqueId(): number {\n return id++;\n}\n\n/**\n * Return a random UUID (v4). Taken from: https://gist.github.com/jed/982883\n * @private\n */\nexport function uuid(): string {\n function b(a) {\n return a ? (a ^ Math.random() * (16 >> a / 4)).toString(16) :\n //$FlowFixMe: Flow doesn't like the implied array literal conversion here\n ([1e7] + -[1e3] + -4e3 + -8e3 + -1e11).replace(/[018]/g, b);\n }\n return b();\n}\n\n/**\n * Return whether a given value is a power of two\n * @private\n */\nexport function isPowerOfTwo(value: number): boolean {\n return (Math.log(value) / Math.LN2) % 1 === 0;\n}\n\n/**\n * Return the next power of two, or the input value if already a power of two\n * @private\n */\nexport function nextPowerOfTwo(value: number): number {\n if (value <= 1) return 1;\n return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2));\n}\n\n/**\n * Return the previous power of two, or the input value if already a power of two\n * @private\n */\nexport function prevPowerOfTwo(value: number): number {\n if (value <= 1) return 1;\n return Math.pow(2, Math.floor(Math.log(value) / Math.LN2));\n}\n\n/**\n * Validate a string to match UUID(v4) of the\n * form: xxxxxxxx-xxxx-4xxx-[89ab]xxx-xxxxxxxxxxxx\n * @param str string to validate.\n * @private\n */\nexport function validateUuid(str: ?string): boolean {\n return str ? /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(str) : false;\n}\n\n/**\n * Given an array of member function names as strings, replace all of them\n * with bound versions that will always refer to `context` as `this`. This\n * is useful for classes where otherwise event bindings would reassign\n * `this` to the evented object or some other value: this lets you ensure\n * the `this` value always.\n *\n * @param fns list of member function names\n * @param context the context value\n * @example\n * function MyClass() {\n * bindAll(['ontimer'], this);\n * this.name = 'Tom';\n * }\n * MyClass.prototype.ontimer = function() {\n * alert(this.name);\n * };\n * var myClass = new MyClass();\n * setTimeout(myClass.ontimer, 100);\n * @private\n */\nexport function bindAll(fns: Array<string>, context: Object): void {\n fns.forEach((fn) => {\n if (!context[fn]) { return; }\n context[fn] = context[fn].bind(context);\n });\n}\n\n/**\n * Determine if a string ends with a particular substring\n *\n * @private\n */\nexport function endsWith(string: string, suffix: string): boolean {\n return string.indexOf(suffix, string.length - suffix.length) !== -1;\n}\n\n/**\n * Create an object by mapping all the values of an existing object while\n * preserving their keys.\n *\n * @private\n */\nexport function mapObject(input: Object, iterator: Function, context?: Object): Object {\n const output = {};\n for (const key in input) {\n output[key] = iterator.call(context || this, input[key], key, input);\n }\n return output;\n}\n\n/**\n * Create an object by filtering out values of an existing object.\n *\n * @private\n */\nexport function filterObject(input: Object, iterator: Function, context?: Object): Object {\n const output = {};\n for (const key in input) {\n if (iterator.call(context || this, input[key], key, input)) {\n output[key] = input[key];\n }\n }\n return output;\n}\n\nimport deepEqual from '../style-spec/util/deep_equal.js';\nexport {deepEqual};\n\n/**\n * Deeply clones two objects.\n *\n * @private\n */\nexport function clone<T>(input: T): T {\n if (Array.isArray(input)) {\n return ((input.map(clone): any): T);\n } else if (typeof input === 'object' && input) {\n return ((mapObject(input, clone): any): T);\n } else {\n return input;\n }\n}\n\n/**\n * Maps a value from a range between [min, max] to the range [outMin, outMax]\n *\n * @private\n */\nexport function mapValue(value: number, min: number, max: number, outMin: number, outMax: number): number {\n return clamp((value - min) / (max - min) * (outMax - outMin) + outMin, outMin, outMax);\n}\n\n/**\n * Check if two arrays have at least one common element.\n *\n * @private\n */\nexport function arraysIntersect<T>(a: Array<T>, b: Array<T>): boolean {\n for (let l = 0; l < a.length; l++) {\n if (b.indexOf(a[l]) >= 0) return true;\n }\n return false;\n}\n\n/**\n * Print a warning message to the console and ensure duplicate warning messages\n * are not printed.\n *\n * @private\n */\nconst warnOnceHistory: {[key: string]: boolean} = {};\n\nexport function warnOnce(message: string): void {\n if (!warnOnceHistory[message]) {\n // console isn't defined in some WebWorkers, see #2558\n if (typeof console !== \"undefined\") console.warn(message);\n warnOnceHistory[message] = true;\n }\n}\n\n/**\n * Indicates if the provided Points are in a counter clockwise (true) or clockwise (false) order\n *\n * @private\n * @returns true for a counter clockwise set of points\n */\n// http://bryceboe.com/2006/10/23/line-segment-intersection-algorithm/\nexport function isCounterClockwise(a: Point, b: Point, c: Point): boolean {\n return (c.y - a.y) * (b.x - a.x) > (b.y - a.y) * (c.x - a.x);\n}\n\n/**\n * Returns the signed area for the polygon ring. Postive areas are exterior rings and\n * have a clockwise winding. Negative areas are interior rings and have a counter clockwise\n * ordering.\n *\n * @private\n * @param ring Exterior or interior ring\n */\nexport function calculateSignedArea(ring: Array<Point>): number {\n let sum = 0;\n for (let i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n sum += (p2.x - p1.x) * (p1.y + p2.y);\n }\n return sum;\n}\n\n/* global self, WorkerGlobalScope */\n/**\n * Returns true if run in the web-worker context.\n *\n * @private\n * @returns {boolean}\n */\nexport function isWorker(): boolean {\n return typeof WorkerGlobalScope !== 'undefined' && typeof self !== 'undefined' &&\n self instanceof WorkerGlobalScope;\n}\n\n/**\n * Parses data from 'Cache-Control' headers.\n *\n * @private\n * @param cacheControl Value of 'Cache-Control' header\n * @return object containing parsed header info.\n */\n\nexport function parseCacheControl(cacheControl: string): Object {\n // Taken from [Wreck](https://github.com/hapijs/wreck)\n const re = /(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g;\n\n const header = {};\n cacheControl.replace(re, ($0, $1, $2, $3) => {\n const value = $2 || $3;\n header[$1] = value ? value.toLowerCase() : true;\n return '';\n });\n\n if (header['max-age']) {\n const maxAge = parseInt(header['max-age'], 10);\n if (isNaN(maxAge)) delete header['max-age'];\n else header['max-age'] = maxAge;\n }\n\n return header;\n}\n\nlet _isSafari = null;\n\nexport function _resetSafariCheckForTest() {\n _isSafari = null;\n}\n\n/**\n * Returns true when run in WebKit derived browsers.\n * This is used as a workaround for a memory leak in Safari caused by using Transferable objects to\n * transfer data between WebWorkers and the main thread.\n * https://github.com/mapbox/mapbox-gl-js/issues/8771\n *\n * This should be removed once the underlying Safari issue is fixed.\n *\n * @private\n * @param scope {WindowOrWorkerGlobalScope} Since this function is used both on the main thread and WebWorker context,\n * let the calling scope pass in the global scope object.\n * @returns {boolean}\n */\nexport function isSafari(scope: any): boolean {\n if (_isSafari == null) {\n const userAgent = scope.navigator ? scope.navigator.userAgent : null;\n _isSafari = !!scope.safari ||\n !!(userAgent && (/\\b(iPad|iPhone|iPod)\\b/.test(userAgent) || (!!userAgent.match('Safari') && !userAgent.match('Chrome'))));\n }\n return _isSafari;\n}\n\nexport function isSafariWithAntialiasingBug(scope: any): ?boolean {\n const userAgent = scope.navigator ? scope.navigator.userAgent : null;\n if (!isSafari(scope)) return false;\n // 15.4 is known to be buggy.\n // 15.5 may or may not include the fix. Mark it as buggy to be on the safe side.\n return userAgent && (userAgent.match('Version/15.4') || userAgent.match('Version/15.5') || userAgent.match(/CPU (OS|iPhone OS) (15_4|15_5) like Mac OS X/));\n}\n\nexport function storageAvailable(type: string): boolean {\n try {\n const storage = window[type];\n storage.setItem('_mapbox_test_', 1);\n storage.removeItem('_mapbox_test_');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// The following methods are from https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_Unicode_Problem\n//Unicode compliant base64 encoder for strings\nexport function b64EncodeUnicode(str: string): string {\n return window.btoa(\n encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,\n (match, p1) => {\n return String.fromCharCode(Number('0x' + p1)); //eslint-disable-line\n }\n )\n );\n}\n\n// Unicode compliant decoder for base64-encoded strings\nexport function b64DecodeUnicode(str: string): string {\n return decodeURIComponent(window.atob(str).split('').map((c) => {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); //eslint-disable-line\n }).join(''));\n}\n\nexport function getColumn(matrix: Mat4, col: number): Vec4 {\n return [matrix[col * 4], matrix[col * 4 + 1], matrix[col * 4 + 2], matrix[col * 4 + 3]];\n}\n\nexport function setColumn(matrix: Mat4, col: number, values: Vec4) {\n matrix[col * 4 + 0] = values[0];\n matrix[col * 4 + 1] = values[1];\n matrix[col * 4 + 2] = values[2];\n matrix[col * 4 + 3] = values[3];\n}\n","// @flow\n\nimport window from '../util/window.js';\nconst performance = window.performance;\n\nperformance.mark('library-evaluate');\n\nimport {isWorker} from '../util/util.js';\nimport type {RequestParameters} from '../util/ajax.js';\n\nexport type PerformanceMetrics = {\n loadTime: number,\n fullLoadTime: number,\n percentDroppedFrames: number,\n parseTile: number,\n parseTile1: number,\n parseTile2: number,\n workerTask: number,\n workerInitialization: number,\n workerEvaluateScript: number,\n workerIdle: number,\n workerIdlePercent: number,\n placementTime: number,\n timelines: Array<Object>\n};\n\nexport type PerformanceMark = {mark: string, name: string};\n\nexport const PerformanceMarkers = {\n create: 'create',\n load: 'load',\n fullLoad: 'fullLoad'\n};\n\nlet fullLoadFinished = false;\nlet placementTime = 0;\n\nexport const PerformanceUtils = {\n mark(marker: $Keys<typeof PerformanceMarkers>) {\n performance.mark(marker);\n\n if (marker === PerformanceMarkers.fullLoad) {\n fullLoadFinished = true;\n }\n },\n measure(name: string, begin?: string, end?: string) {\n performance.measure(name, begin, end);\n },\n beginMeasure(name: string): PerformanceMark {\n const mark = name;\n performance.mark(mark);\n return {\n mark,\n name\n };\n },\n endMeasure(m: PerformanceMark) {\n performance.measure(m.name, m.mark);\n },\n recordPlacementTime(time: number) {\n // Ignore placementTimes during loading\n if (!fullLoadFinished) {\n return;\n }\n\n placementTime += time;\n },\n frame(timestamp: number, isRenderFrame: boolean) {\n performance.mark('frame', {\n detail: {\n timestamp,\n isRenderFrame\n }\n });\n },\n clearMetrics() {\n placementTime = 0;\n fullLoadFinished = false;\n\n performance.clearMeasures('loadTime');\n performance.clearMeasures('fullLoadTime');\n\n for (const marker in PerformanceMarkers) {\n performance.clearMarks(PerformanceMarkers[marker]);\n }\n },\n\n getPerformanceMetrics(): PerformanceMetrics {\n const metrics = {};\n\n performance.measure('loadTime', PerformanceMarkers.create, PerformanceMarkers.load);\n performance.measure('fullLoadTime', PerformanceMarkers.create, PerformanceMarkers.fullLoad);\n\n const measures = performance.getEntriesByType('measure');\n for (const measure of measures) {\n metrics[measure.name] = (metrics[measure.name] || 0) + measure.duration;\n }\n\n metrics.placementTime = placementTime;\n\n return metrics;\n },\n\n getWorkerPerformanceMetrics(): { timeOrigin: string, entries: Array<Object>, scope: string } {\n const entries = performance.getEntries().map(entry => {\n const result = entry.toJSON();\n if (entry.detail) {\n Object.assign(result, {\n detail: entry.detail\n });\n }\n return result;\n });\n return {\n scope: isWorker() ? 'Worker' : 'Window',\n timeOrigin: performance.timeOrigin,\n entries\n };\n }\n};\n\nexport function getPerformanceMeasurement(request: ?RequestParameters): Array<PerformanceEntry> {\n const url = request ? request.url.toString() : undefined;\n return performance.getEntriesByName(url);\n}\n\nexport default performance;\n","// @flow strict\n\nimport window from './window.js';\nimport type {Cancelable} from '../types/cancelable.js';\n\nlet linkEl;\n\nlet reducedMotionQuery: MediaQueryList;\n\nlet stubTime;\n\nlet canvas;\n\n/**\n * @private\n */\nconst exported = {\n /**\n * Returns either performance.now() or a value set by setNow.\n * @returns {number} Time value in milliseconds.\n */\n now(): number {\n if (stubTime !== undefined) {\n return stubTime;\n }\n return window.performance.now();\n },\n setNow(time: number) {\n stubTime = time;\n },\n\n restoreNow() {\n stubTime = undefined;\n },\n\n frame(fn: (paintStartTimestamp: number) => void): Cancelable {\n const frame = window.requestAnimationFrame(fn);\n return {cancel: () => window.cancelAnimationFrame(frame)};\n },\n\n getImageData(img: CanvasImageSource, padding?: number = 0): ImageData {\n const {width, height} = img;\n\n if (!canvas) {\n canvas = window.document.createElement('canvas');\n }\n\n const context = canvas.getContext('2d');\n if (!context) {\n throw new Error('failed to create canvas 2d context');\n }\n\n if (width > canvas.width || height > canvas.height) {\n canvas.width = width;\n canvas.height = height;\n }\n\n context.clearRect(-padding, -padding, width + 2 * padding, height + 2 * padding);\n context.drawImage(img, 0, 0, width, height);\n return context.getImageData(-padding, -padding, width + 2 * padding, height + 2 * padding);\n },\n\n resolveURL(path: string): string {\n if (!linkEl) linkEl = window.document.createElement('a');\n linkEl.href = path;\n return linkEl.href;\n },\n\n get devicePixelRatio(): number { return window.devicePixelRatio; },\n get prefersReducedMotion(): boolean {\n if (!window.matchMedia) return false;\n // Lazily initialize media query.\n if (reducedMotionQuery == null) {\n reducedMotionQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n }\n return reducedMotionQuery.matches;\n },\n};\n\nexport default exported;\n","// @flow strict\n\ntype Config = {|\n API_URL: string,\n API_URL_REGEX: RegExp,\n EVENTS_URL: ?string,\n SESSION_PATH: string,\n FEEDBACK_URL: string,\n REQUIRE_ACCESS_TOKEN: boolean,\n TILE_URL_VERSION: string,\n RASTER_URL_PREFIX: string,\n ACCESS_TOKEN: ?string,\n MAX_PARALLEL_IMAGE_REQUESTS: number\n|};\n\nlet mapboxHTTPURLRegex;\n\nconst config: Config = {\n API_URL: 'https://api.mapbox.com',\n get API_URL_REGEX () {\n if (mapboxHTTPURLRegex == null) {\n const prodMapboxHTTPURLRegex = /^((https?:)?\\/\\/)?([^\\/]+\\.)?mapbox\\.c(n|om)(\\/|\\?|$)/i;\n try {\n mapboxHTTPURLRegex = (process.env.API_URL_REGEX != null) ? new RegExp(process.env.API_URL_REGEX) : prodMapboxHTTPURLRegex;\n } catch (e) {\n mapboxHTTPURLRegex = prodMapboxHTTPURLRegex;\n }\n }\n\n return mapboxHTTPURLRegex;\n },\n get EVENTS_URL() {\n if (!this.API_URL) { return null; }\n if (this.API_URL.indexOf('https://api.mapbox.cn') === 0) {\n return 'https://events.mapbox.cn/events/v2';\n } else if (this.API_URL.indexOf('https://api.mapbox.com') === 0) {\n return 'https://events.mapbox.com/events/v2';\n } else {\n return null;\n }\n },\n SESSION_PATH: '/map-sessions/v1',\n FEEDBACK_URL: 'https://apps.mapbox.com/feedback',\n TILE_URL_VERSION: 'v4',\n RASTER_URL_PREFIX: 'raster/v1',\n REQUIRE_ACCESS_TOKEN: true,\n ACCESS_TOKEN: null,\n MAX_PARALLEL_IMAGE_REQUESTS: 16\n};\n\nexport default config;\n","// @flow strict\n\nimport window from './window.js';\n\nconst exported = {\n supported: false,\n testSupport\n};\n\nexport default exported;\n\nlet glForTesting;\nlet webpCheckComplete = false;\nlet webpImgTest;\nlet webpImgTestOnloadComplete = false;\n\nif (window.document) {\n webpImgTest = window.document.createElement('img');\n webpImgTest.onload = function() {\n if (glForTesting) testWebpTextureUpload(glForTesting);\n glForTesting = null;\n webpImgTestOnloadComplete = true;\n };\n webpImgTest.onerror = function() {\n webpCheckComplete = true;\n glForTesting = null;\n };\n webpImgTest.src = 'data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=';\n}\n\nfunction testSupport(gl: WebGLRenderingContext) {\n if (webpCheckComplete || !webpImgTest) return;\n\n // HTMLImageElement.complete is set when an image is done loading it's source\n // regardless of whether the load was successful or not.\n // It's possible for an error to set HTMLImageElement.complete to true which would trigger\n // testWebpTextureUpload and mistakenly set exported.supported to true in browsers which don't support webp\n // To avoid this, we set a flag in the image's onload handler and only call testWebpTextureUpload\n // after a successful image load event.\n if (webpImgTestOnloadComplete) {\n testWebpTextureUpload(gl);\n } else {\n glForTesting = gl;\n\n }\n}\n\nfunction testWebpTextureUpload(gl: WebGLRenderingContext) {\n // Edge 18 supports WebP but not uploading a WebP image to a gl texture\n // Test support for this before allowing WebP images.\n // https://github.com/mapbox/mapbox-gl-js/issues/7671\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n\n try {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, webpImgTest);\n\n // The error does not get triggered in Edge if the context is lost\n if (gl.isContextLost()) return;\n\n exported.supported = true;\n } catch (e) {\n // Catch \"Unspecified Error.\" in Edge 18.\n }\n\n gl.deleteTexture(texture);\n\n webpCheckComplete = true;\n}\n","// @flow\n\n/***** START WARNING REMOVAL OR MODIFICATION OF THE\n* FOLLOWING CODE VIOLATES THE MAPBOX TERMS OF SERVICE ******\n* The following code is used to access Mapbox's APIs. Removal or modification\n* of this code can result in higher fees and/or\n* termination of your account with Mapbox.\n*\n* Under the Mapbox Terms of Service, you may not use this code to access Mapbox\n* Mapping APIs other than through Mapbox SDKs.\n*\n* The Mapping APIs documentation is available at https://docs.mapbox.com/api/maps/#maps\n* and the Mapbox Terms of Service are available at https://www.mapbox.com/tos/\n******************************************************************************/\n\ntype SkuTokenObject = {|\n token: string,\n tokenExpiresAt: number\n|};\n\nconst SKU_ID = '01';\n\nfunction createSkuToken(): SkuTokenObject {\n // SKU_ID and TOKEN_VERSION are specified by an internal schema and should not change\n const TOKEN_VERSION = '1';\n const base62chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n // sessionRandomizer is a randomized 10-digit base-62 number\n let sessionRandomizer = '';\n for (let i = 0; i < 10; i++) {\n sessionRandomizer += base62chars[Math.floor(Math.random() * 62)];\n }\n const expiration = 12 * 60 * 60 * 1000; // 12 hours\n const token = [TOKEN_VERSION, SKU_ID, sessionRandomizer].join('');\n const tokenExpiresAt = Date.now() + expiration;\n\n return {token, tokenExpiresAt};\n}\n\nexport {createSkuToken, SKU_ID};\n\n/***** END WARNING - REMOVAL OR MODIFICATION OF THE\nPRECEDING CODE VIOLATES THE MAPBOX TERMS OF SERVICE ******/\n","// @flow\n\n/***** START WARNING REMOVAL OR MODIFICATION OF THE\n* FOLLOWING CODE VIOLATES THE MAPBOX TERMS OF SERVICE ******\n* The following code is used to access Mapbox's APIs. Removal or modification\n* of this code can result in higher fees and/or\n* termination of your account with Mapbox.\n*\n* Under the Mapbox Terms of Service, you may not use this code to access Mapbox\n* Mapping APIs other than through Mapbox SDKs.\n*\n* The Mapping APIs documentation is available at https://docs.mapbox.com/api/maps/#maps\n* and the Mapbox Terms of Service are available at https://www.mapbox.com/tos/\n******************************************************************************/\n\nimport config from './config.js';\nimport window from './window.js';\nimport webpSupported from './webp_supported.js';\nimport {createSkuToken, SKU_ID} from './sku_token.js';\nimport {version as sdkVersion} from '../../package.json';\nimport {uuid, validateUuid, storageAvailable, b64DecodeUnicode, b64EncodeUnicode, warnOnce, extend} from './util.js';\nimport {postData, ResourceType, getData} from './ajax.js';\n\nimport type {RequestParameters} from './ajax.js';\nimport type {Cancelable} from '../types/cancelable.js';\nimport type {TileJSON} from '../types/tilejson.js';\n\ntype ResourceTypeEnum = $Keys<typeof ResourceType>;\nexport type RequestTransformFunction = (url: string, resourceType?: ResourceTypeEnum) => RequestParameters;\n\ntype UrlObject = {|\n protocol: string,\n authority: string,\n path: string,\n params: Array<string>\n|};\n\ntype EventCallback = (err: ?Error) => void;\n\nexport const AUTH_ERR_MSG: string = 'NO_ACCESS_TOKEN';\n\nexport class RequestManager {\n _skuToken: string;\n _skuTokenExpiresAt: number;\n _transformRequestFn: ?RequestTransformFunction;\n _customAccessToken: ?string;\n _silenceAuthErrors: boolean;\n\n constructor(transformRequestFn?: RequestTransformFunction, customAccessToken?: string, silenceAuthErrors: ?boolean) {\n this._transformRequestFn = transformRequestFn;\n this._customAccessToken = customAccessToken;\n this._silenceAuthErrors = !!silenceAuthErrors;\n this._createSkuToken();\n }\n\n _createSkuToken() {\n const skuToken = createSkuToken();\n this._skuToken = skuToken.token;\n this._skuTokenExpiresAt = skuToken.tokenExpiresAt;\n }\n\n _isSkuTokenExpired(): boolean {\n return Date.now() > this._skuTokenExpiresAt;\n }\n\n transformRequest(url: string, type: ResourceTypeEnum): RequestParameters {\n if (this._transformRequestFn) {\n return this._transformRequestFn(url, type) || {url};\n }\n\n return {url};\n }\n\n normalizeStyleURL(url: string, accessToken?: string): string {\n if (!isMapboxURL(url)) return url;\n const urlObject = parseUrl(url);\n urlObject.path = `/styles/v1${urlObject.path}`;\n return this._makeAPIURL(urlObject, this._customAccessToken || accessToken);\n }\n\n normalizeGlyphsURL(url: string, accessToken?: string): string {\n if (!isMapboxURL(url)) return url;\n const urlObject = parseUrl(url);\n urlObject.path = `/fonts/v1${urlObject.path}`;\n return this._makeAPIURL(urlObject, this._customAccessToken || accessToken);\n }\n\n normalizeSourceURL(url: string, accessToken?: ?string, language?: ?string, worldview?: ?string): string {\n if (!isMapboxURL(url)) return url;\n const urlObject = parseUrl(url);\n urlObject.path = `/v4/${urlObject.authority}.json`;\n // TileJSON requests need a secure flag appended to their URLs so\n // that the server knows to send SSL-ified resource references.\n urlObject.params.push('secure');\n if (language) {\n urlObject.params.push(`language=${language}`);\n }\n if (worldview) {\n urlObject.params.push(`worldview=${worldview}`);\n }\n\n return this._makeAPIURL(urlObject, this._customAccessToken || accessToken);\n }\n\n normalizeSpriteURL(url: string, format: string, extension: string, accessToken?: string): string {\n const urlObject = parseUrl(url);\n if (!isMapboxURL(url)) {\n urlObject.path += `${format}${extension}`;\n return formatUrl(urlObject);\n }\n urlObject.path = `/styles/v1${urlObject.path}/sprite${format}${extension}`;\n return this._makeAPIURL(urlObject, this._customAccessToken || accessToken);\n }\n\n normalizeTileURL(tileURL: string, use2x?: boolean, rasterTileSize?: number): string {\n if (this._isSkuTokenExpired()) {\n this._createSkuToken();\n }\n\n if (tileURL && !isMapboxURL(tileURL)) return tileURL;\n\n const urlObject = parseUrl(tileURL);\n const imageExtensionRe = /(\\.(png|jpg)\\d*)(?=$)/;\n const extension = webpSupported.supported ? '.webp' : '$1';\n\n // The v4 mapbox tile API supports 512x512 image tiles but they must be requested as '@2x' tiles.\n const use2xAs512 = rasterTileSize && urlObject.authority !== 'raster' && rasterTileSize === 512;\n\n const suffix = use2x || use2xAs512 ? '@2x' : '';\n urlObject.path = urlObject.path.replace(imageExtensionRe, `${suffix}${extension}`);\n\n if (urlObject.authority === 'raster') {\n urlObject.path = `/${config.RASTER_URL_PREFIX}${urlObject.path}`;\n } else {\n const tileURLAPIPrefixRe = /^.+\\/v4\\//;\n urlObject.path = urlObject.path.replace(tileURLAPIPrefixRe, '/');\n urlObject.path = `/${config.TILE_URL_VERSION}${urlObject.path}`;\n }\n\n const accessToken = this._customAccessToken || getAccessToken(urlObject.params) || config.ACCESS_TOKEN;\n if (config.REQUIRE_ACCESS_TOKEN && accessToken && this._skuToken) {\n urlObject.params.push(`sku=${this._skuToken}`);\n }\n\n return this._makeAPIURL(urlObject, accessToken);\n }\n\n canonicalizeTileURL(url: string, removeAccessToken: boolean): string {\n // matches any file extension specified by a dot and one or more alphanumeric characters\n const extensionRe = /\\.[\\w]+$/;\n\n const urlObject = parseUrl(url);\n // Make sure that we are dealing with a valid Mapbox tile URL.\n // Has to begin with /v4/ or /raster/v1, with a valid filename + extension\n if (!urlObject.path.match(/^(\\/v4\\/|\\/raster\\/v1\\/)/) || !urlObject.path.match(extensionRe)) {\n // Not a proper Mapbox tile URL.\n return url;\n }\n // Reassemble the canonical URL from the parts we've parsed before.\n let result = \"mapbox://\";\n if (urlObject.path.match(/^\\/raster\\/v1\\//)) {\n // If the tile url has /raster/v1/, make the final URL mapbox://raster/....\n const rasterPrefix = `/${config.RASTER_URL_PREFIX}/`;\n result += `raster/${urlObject.path.replace(rasterPrefix, '')}`;\n } else {\n const tilesPrefix = `/${config.TILE_URL_VERSION}/`;\n result += `tiles/${urlObject.path.replace(tilesPrefix, '')}`;\n }\n\n // Append the query string, minus the access token parameter.\n let params = urlObject.params;\n if (removeAccessToken) {\n params = params.filter(p => !p.match(/^access_token=/));\n }\n if (params.length) result += `?${params.join('&')}`;\n return result;\n }\n\n canonicalizeTileset(tileJSON: TileJSON, sourceURL?: string): Array<string> {\n const removeAccessToken = sourceURL ? isMapboxURL(sourceURL) : false;\n const canonical = [];\n for (const url of tileJSON.tiles || []) {\n if (isMapboxHTTPURL(url)) {\n canonical.push(this.canonicalizeTileURL(url, removeAccessToken));\n } else {\n canonical.push(url);\n }\n }\n return canonical;\n }\n\n _makeAPIURL(urlObject: UrlObject, accessToken: string | null | void): string {\n const help = 'See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes';\n const apiUrlObject = parseUrl(config.API_URL);\n urlObject.protocol = apiUrlObject.protocol;\n urlObject.authority = apiUrlObject.authority;\n\n if (urlObject.protocol === 'http') {\n const i = urlObject.params.indexOf('secure');\n if (i >= 0) urlObject.params.splice(i, 1);\n }\n\n if (apiUrlObject.path !== '/') {\n urlObject.path = `${apiUrlObject.path}${urlObject.path}`;\n }\n\n if (!config.REQUIRE_ACCESS_TOKEN) return formatUrl(urlObject);\n\n accessToken = accessToken || config.ACCESS_TOKEN;\n if (!this._silenceAuthErrors) {\n if (!accessToken)\n throw new Error(`An API access token is required to use Mapbox GL. ${help}`);\n if (accessToken[0] === 's')\n throw new Error(`Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). ${help}`);\n }\n\n urlObject.params = urlObject.params.filter((d) => d.indexOf('access_token') === -1);\n urlObject.params.push(`access_token=${accessToken || ''}`);\n return formatUrl(urlObject);\n }\n}\n\nexport function isMapboxURL(url: string): boolean {\n return url.indexOf('mapbox:') === 0;\n}\n\nexport function isMapboxHTTPURL(url: string): boolean {\n return config.API_URL_REGEX.test(url);\n}\n\nexport function hasCacheDefeatingSku(url: string): boolean {\n return url.indexOf('sku=') > 0 && isMapboxHTTPURL(url);\n}\n\nfunction getAccessToken(params: Array<string>): string | null {\n for (const param of params) {\n const match = param.match(/^access_token=(.*)$/);\n if (match) {\n return match[1];\n }\n }\n return null;\n}\n\nconst urlRe = /^(\\w+):\\/\\/([^/?]*)(\\/[^?]+)?\\??(.+)?/;\n\nfunction parseUrl(url: string): UrlObject {\n const parts = url.match(urlRe);\n if (!parts) {\n throw new Error('Unable to parse URL object');\n }\n return {\n protocol: parts[1],\n authority: parts[2],\n path: parts[3] || '/',\n params: parts[4] ? parts[4].split('&') : []\n };\n}\n\nfunction formatUrl(obj: UrlObject): string {\n const params = obj.params.length ? `?${obj.params.join('&')}` : '';\n return `${obj.protocol}://${obj.authority}${obj.path}${params}`;\n}\n\nconst telemEventKey = 'mapbox.eventData';\n\nfunction parseAccessToken(accessToken: ?string) {\n if (!accessToken) {\n return null;\n }\n\n const parts = accessToken.split('.');\n if (!parts || parts.length !== 3) {\n return null;\n }\n\n try {\n const jsonData = JSON.parse(b64DecodeUnicode(parts[1]));\n return jsonData;\n } catch (e) {\n return null;\n }\n}\n\ntype TelemetryEventType = 'appUserTurnstile' | 'map.load' | 'map.auth';\n\nclass TelemetryEvent {\n eventData: any;\n anonId: ?string;\n queue: Array<any>;\n type: TelemetryEventType;\n pendingRequest: ?Cancelable;\n _customAccessToken: ?string;\n\n constructor(type: TelemetryEventType) {\n this.type = type;\n this.anonId = null;\n this.eventData = {};\n this.queue = [];\n this.pendingRequest = null;\n }\n\n getStorageKey(domain: ?string): string {\n const tokenData = parseAccessToken(config.ACCESS_TOKEN);\n let u = '';\n if (tokenData && tokenData['u']) {\n u = b64EncodeUnicode(tokenData['u']);\n } else {\n u = config.ACCESS_TOKEN || '';\n }\n return domain ?\n `${telemEventKey}.${domain}:${u}` :\n `${telemEventKey}:${u}`;\n }\n\n fetchEventData() {\n const isLocalStorageAvailable = storageAvailable('localStorage');\n const storageKey = this.getStorageKey();\n const uuidKey = this.getStorageKey('uuid');\n\n if (isLocalStorageAvailable) {\n //Retrieve cached data\n try {\n const data = window.localStorage.getItem(storageKey);\n if (data) {\n this.eventData = JSON.parse(data);\n }\n\n const uuid = window.localStorage.getItem(uuidKey);\n if (uuid) this.anonId = uuid;\n } catch (e) {\n warnOnce('Unable to read from LocalStorage');\n }\n }\n }\n\n saveEventData() {\n const isLocalStorageAvailable = storageAvailable('localStorage');\n const storageKey = this.getStorageKey();\n const uuidKey = this.getStorageKey('uuid');\n if (isLocalStorageAvailable) {\n try {\n window.localStorage.setItem(uuidKey, this.anonId);\n if (Object.keys(this.eventData).length >= 1) {\n window.localStorage.setItem(storageKey, JSON.stringify(this.eventData));\n }\n } catch (e) {\n warnOnce('Unable to write to LocalStorage');\n }\n }\n\n }\n\n processRequests(_: ?string) {}\n\n /*\n * If any event data should be persisted after the POST request, the callback should modify eventData`\n * to the values that should be saved. For this reason, the callback should be invoked prior to the call\n * to TelemetryEvent#saveData\n */\n postEvent(timestamp: number, additionalPayload: {[_: string]: any}, callback: EventCallback, customAccessToken?: ?string) {\n if (!config.EVENTS_URL) return;\n const eventsUrlObject: UrlObject = parseUrl(config.EVENTS_URL);\n eventsUrlObject.params.push(`access_token=${customAccessToken || config.ACCESS_TOKEN || ''}`);\n\n const payload: Object = {\n event: this.type,\n created: new Date(timestamp).toISOString(),\n sdkIdentifier: 'mapbox-gl-js',\n sdkVersion,\n skuId: SKU_ID,\n userId: this.anonId\n };\n\n const finalPayload = additionalPayload ? extend(payload, additionalPayload) : payload;\n const request: RequestParameters = {\n url: formatUrl(eventsUrlObject),\n headers: {\n 'Content-Type': 'text/plain' //Skip the pre-flight OPTIONS request\n },\n body: JSON.stringify([finalPayload])\n };\n\n this.pendingRequest = postData(request, (error) => {\n this.pendingRequest = null;\n callback(error);\n this.saveEventData();\n this.processRequests(customAccessToken);\n });\n }\n\n queueRequest(event: number | {id: number, timestamp: number}, customAccessToken?: ?string) {\n this.queue.push(event);\n this.processRequests(customAccessToken);\n }\n}\n\nexport class MapLoadEvent extends TelemetryEvent {\n +success: {[_: number]: boolean};\n skuToken: string;\n errorCb: EventCallback;\n\n constructor() {\n super('map.load');\n this.success = {};\n this.skuToken = '';\n }\n\n postMapLoadEvent(mapId: number, skuToken: string, customAccessToken: ?string, callback: EventCallback) {\n this.skuToken = skuToken;\n this.errorCb = callback;\n\n if (config.EVENTS_URL) {\n if (customAccessToken || config.ACCESS_TOKEN) {\n this.queueRequest({id: mapId, timestamp: Date.now()}, customAccessToken);\n } else {\n this.errorCb(new Error(AUTH_ERR_MSG));\n }\n }\n }\n\n processRequests(customAccessToken?: ?string) {\n if (this.pendingRequest || this.queue.length === 0) return;\n const {id, timestamp} = this.queue.shift();\n\n // Only one load event should fire per map\n if (id && this.success[id]) return;\n\n if (!this.anonId) {\n this.fetchEventData();\n }\n\n if (!validateUuid(this.anonId)) {\n this.anonId = uuid();\n }\n\n this.postEvent(timestamp, {skuToken: this.skuToken}, (err) => {\n if (err) {\n this.errorCb(err);\n } else {\n if (id) this.success[id] = true;\n }\n\n }, customAccessToken);\n }\n}\n\nexport class MapSessionAPI extends TelemetryEvent {\n +success: {[_: number]: boolean};\n skuToken: string;\n errorCb: EventCallback;\n\n constructor() {\n super('map.auth');\n this.success = {};\n this.skuToken = '';\n }\n\n getSession(timestamp: number, token: string, callback: EventCallback, customAccessToken?: ?string) {\n if (!config.API_URL || !config.SESSION_PATH) return;\n const authUrlObject: UrlObject = parseUrl(config.API_URL + config.SESSION_PATH);\n authUrlObject.params.push(`sku=${token || ''}`);\n authUrlObject.params.push(`access_token=${customAccessToken || config.ACCESS_TOKEN || ''}`);\n\n const request: RequestParameters = {\n url: formatUrl(authUrlObject),\n headers: {\n 'Content-Type': 'text/plain', //Skip the pre-flight OPTIONS request\n }\n };\n\n this.pendingRequest = getData(request, (error) => {\n this.pendingRequest = null;\n callback(error);\n this.saveEventData();\n this.processRequests(customAccessToken);\n });\n }\n\n getSessionAPI(mapId: number, skuToken: string, customAccessToken: ?string, callback: EventCallback) {\n this.skuToken = skuToken;\n this.errorCb = callback;\n\n if (config.SESSION_PATH && config.API_URL) {\n if (customAccessToken || config.ACCESS_TOKEN) {\n this.queueRequest({id: mapId, timestamp: Date.now()}, customAccessToken);\n } else {\n this.errorCb(new Error(AUTH_ERR_MSG));\n }\n }\n }\n\n processRequests(customAccessToken?: ?string) {\n if (this.pendingRequest || this.queue.length === 0) return;\n const {id, timestamp} = this.queue.shift();\n\n // Only one load event should fire per map\n if (id && this.success[id]) return;\n\n this.getSession(timestamp, this.skuToken, (err) => {\n if (err) {\n this.errorCb(err);\n } else {\n if (id) this.success[id] = true;\n }\n }, customAccessToken);\n }\n}\n\nexport class TurnstileEvent extends TelemetryEvent {\n constructor(customAccessToken?: ?string) {\n super('appUserTurnstile');\n this._customAccessToken = customAccessToken;\n }\n\n postTurnstileEvent(tileUrls: Array<string>, customAccessToken?: ?string) {\n //Enabled only when Mapbox Access Token is set and a source uses\n // mapbox tiles.\n if (config.EVENTS_URL &&\n config.ACCESS_TOKEN &&\n Array.isArray(tileUrls) &&\n tileUrls.some(url => isMapboxURL(url) || isMapboxHTTPURL(url))) {\n this.queueRequest(Date.now(), customAccessToken);\n }\n }\n\n processRequests(customAccessToken?: ?string) {\n if (this.pendingRequest || this.queue.length === 0) {\n return;\n }\n\n if (!this.anonId || !this.eventData.lastSuccess || !this.eventData.tokenU) {\n //Retrieve cached data\n this.fetchEventData();\n }\n\n const tokenData = parseAccessToken(config.ACCESS_TOKEN);\n const tokenU = tokenData ? tokenData['u'] : config.ACCESS_TOKEN;\n //Reset event data cache if the access token owner changed.\n let dueForEvent = tokenU !== this.eventData.tokenU;\n\n if (!validateUuid(this.anonId)) {\n this.anonId = uuid();\n dueForEvent = true;\n }\n\n const nextUpdate = this.queue.shift();\n // Record turnstile event once per calendar day.\n if (this.eventData.lastSuccess) {\n const lastUpdate = new Date(this.eventData.lastSuccess);\n const nextDate = new Date(nextUpdate);\n const daysElapsed = (nextUpdate - this.eventData.lastSuccess) / (24 * 60 * 60 * 1000);\n dueForEvent = dueForEvent || daysElapsed >= 1 || daysElapsed < -1 || lastUpdate.getDate() !== nextDate.getDate();\n } else {\n dueForEvent = true;\n }\n\n if (!dueForEvent) {\n this.processRequests();\n return;\n }\n\n this.postEvent(nextUpdate, {\"enabled.telemetry\": false}, (err) => {\n if (!err) {\n this.eventData.lastSuccess = nextUpdate;\n this.eventData.tokenU = tokenU;\n }\n }, customAccessToken);\n }\n}\n\nconst turnstileEvent_ = new TurnstileEvent();\nexport const postTurnstileEvent: (tileUrls: Array<string>, customAccessToken?: ?string) => void = turnstileEvent_.postTurnstileEvent.bind(turnstileEvent_);\n\nconst mapLoadEvent_ = new MapLoadEvent();\nexport const postMapLoadEvent: (number, string, ?string, EventCallback) => void = mapLoadEvent_.postMapLoadEvent.bind(mapLoadEvent_);\n\nconst mapSessionAPI_ = new MapSessionAPI();\nexport const getMapSessionAPI: (number, string, ?string, EventCallback) => void = mapSessionAPI_.getSessionAPI.bind(mapSessionAPI_);\n\nconst authenticatedMaps = new Set();\nexport function storeAuthState(gl: WebGLRenderingContext, state: boolean) {\n if (state) {\n authenticatedMaps.add(gl);\n } else {\n authenticatedMaps.delete(gl);\n }\n}\n\nexport function isMapAuthenticated(gl: WebGLRenderingContext): boolean {\n return authenticatedMaps.has(gl);\n}\n\nexport function removeAuthState(gl: WebGLRenderingContext) {\n authenticatedMaps.delete(gl);\n}\n\n/***** END WARNING - REMOVAL OR MODIFICATION OF THE\nPRECEDING CODE VIOLATES THE MAPBOX TERMS OF SERVICE ******/\n","// @flow\n\nimport {warnOnce, parseCacheControl} from './util.js';\nimport window from './window.js';\n\nimport type Dispatcher from './dispatcher.js';\n\nconst CACHE_NAME = 'mapbox-tiles';\nlet cacheLimit = 500; // 50MB / (100KB/tile) ~= 500 tiles\nlet cacheCheckThreshold = 50;\n\nconst MIN_TIME_UNTIL_EXPIRY = 1000 * 60 * 7; // 7 minutes. Skip caching tiles with a short enough max age.\n\nexport type ResponseOptions = {\n status: number,\n statusText: string,\n headers: Headers\n};\n\n// We're using a global shared cache object. Normally, requesting ad-hoc Cache objects is fine, but\n// Safari has a memory leak in which it fails to release memory when requesting keys() from a Cache\n// object. See https://bugs.webkit.org/show_bug.cgi?id=203991 for more information.\nlet sharedCaches = {};\n\nfunction getCacheName(url: string) {\n const queryParams = getQueryParameters(url);\n let language;\n let worldview;\n\n if (queryParams) {\n queryParams.forEach(param => {\n const entry = param.split('=');\n if (entry[0] === 'language') {\n language = entry[1];\n } else if (entry[0] === 'worldview') {\n worldview = entry[1];\n }\n });\n }\n\n let cacheName = CACHE_NAME;\n if (language) cacheName += `-${language}`;\n if (worldview) cacheName += `-${worldview}`;\n return cacheName;\n}\n\nfunction cacheOpen(cacheName: string) {\n if (window.caches && !sharedCaches[cacheName]) {\n sharedCaches[cacheName] = window.caches.open(cacheName);\n }\n}\n\n// We're never closing the cache, but our unit tests rely on changing out the global window.caches\n// object, so we have a function specifically for unit tests that allows resetting the shared cache.\nexport function cacheClose() {\n sharedCaches = {};\n}\n\nlet responseConstructorSupportsReadableStream;\nfunction prepareBody(response: Response, callback) {\n if (responseConstructorSupportsReadableStream === undefined) {\n try {\n new Response(new ReadableStream()); // eslint-disable-line no-undef\n responseConstructorSupportsReadableStream = true;\n } catch (e) {\n // Edge\n responseConstructorSupportsReadableStream = false;\n }\n }\n\n if (responseConstructorSupportsReadableStream) {\n callback(response.body);\n } else {\n response.blob().then(callback);\n }\n}\n\nexport function cachePut(request: Request, response: Response, requestTime: number) {\n const cacheName = getCacheName(request.url);\n cacheOpen(cacheName);\n if (!sharedCaches[cacheName]) return;\n\n const options: ResponseOptions = {\n status: response.status,\n statusText: response.statusText,\n headers: new window.Headers()\n };\n response.headers.forEach((v, k) => options.headers.set(k, v));\n\n const cacheControl = parseCacheControl(response.headers.get('Cache-Control') || '');\n if (cacheControl['no-store']) {\n return;\n }\n if (cacheControl['max-age']) {\n options.headers.set('Expires', new Date(requestTime + cacheControl['max-age'] * 1000).toUTCString());\n }\n\n const expires = options.headers.get('Expires');\n if (!expires) return;\n const timeUntilExpiry = new Date(expires).getTime() - requestTime;\n if (timeUntilExpiry < MIN_TIME_UNTIL_EXPIRY) return;\n\n prepareBody(response, body => {\n const clonedResponse = new window.Response(body, options);\n\n cacheOpen(cacheName);\n if (!sharedCaches[cacheName]) return;\n sharedCaches[cacheName]\n .then(cache => cache.put(stripQueryParameters(request.url), clonedResponse))\n .catch(e => warnOnce(e.message));\n });\n}\n\nfunction getQueryParameters(url: string) {\n const paramStart = url.indexOf('?');\n return paramStart > 0 ? url.slice(paramStart + 1).split('&') : [];\n}\n\nfunction stripQueryParameters(url: string) {\n const start = url.indexOf('?');\n\n if (start < 0) return url;\n\n const params = getQueryParameters(url);\n const filteredParams = params.filter(param => {\n const entry = param.split('=');\n return entry[0] === 'language' || entry[0] === 'worldview';\n });\n\n if (filteredParams.length) {\n return `${url.slice(0, start)}?${filteredParams.join('&')}`;\n }\n\n return url.slice(0, start);\n}\n\nexport function cacheGet(request: Request, callback: (error: ?any, response: ?Response, fresh: ?boolean) => void): void {\n const cacheName = getCacheName(request.url);\n cacheOpen(cacheName);\n if (!sharedCaches[cacheName]) return callback(null);\n\n const strippedURL = stripQueryParameters(request.url);\n\n sharedCaches[cacheName]\n .then(cache => {\n // manually strip URL instead of `ignoreSearch: true` because of a known\n // performance issue in Chrome https://github.com/mapbox/mapbox-gl-js/issues/8431\n cache.match(strippedURL)\n .then(response => {\n const fresh = isFresh(response);\n\n // Reinsert into cache so that order of keys in the cache is the order of access.\n // This line makes the cache a LRU instead of a FIFO cache.\n cache.delete(strippedURL);\n if (fresh) {\n cache.put(strippedURL, response.clone());\n }\n\n callback(null, response, fresh);\n })\n .catch(callback);\n })\n .catch(callback);\n\n}\n\nfunction isFresh(response) {\n if (!response) return false;\n const expires = new Date(response.headers.get('Expires') || 0);\n const cacheControl = parseCacheControl(response.headers.get('Cache-Control') || '');\n return expires > Date.now() && !cacheControl['no-cache'];\n}\n\n// `Infinity` triggers a cache check after the first tile is loaded\n// so that a check is run at least once on each page load.\nlet globalEntryCounter = Infinity;\n\n// The cache check gets run on a worker. The reason for this is that\n// profiling sometimes shows this as taking up significant time on the\n// thread it gets called from. And sometimes it doesn't. It *may* be\n// fine to run this on the main thread but out of caution this is being\n// dispatched on a worker. This can be investigated further in the future.\nexport function cacheEntryPossiblyAdded(dispatcher: Dispatcher) {\n globalEntryCounter++;\n if (globalEntryCounter > cacheCheckThreshold) {\n dispatcher.getActor().send('enforceCacheSizeLimit', cacheLimit);\n globalEntryCounter = 0;\n }\n}\n\n// runs on worker, see above comment\nexport function enforceCacheSizeLimit(limit: number) {\n for (const sharedCache in sharedCaches) {\n cacheOpen(sharedCache);\n\n sharedCaches[sharedCache].then(cache => {\n cache.keys().then(keys => {\n for (let i = 0; i < keys.length - limit; i++) {\n cache.delete(keys[i]);\n }\n });\n });\n }\n}\n\nexport function clearTileCache(callback?: (err: ?Error) => void) {\n const promises = [];\n for (const cache in sharedCaches) {\n promises.push(window.caches.delete(cache));\n delete sharedCaches[cache];\n }\n\n if (callback) {\n Promise.all(promises).catch(callback).then(() => callback());\n }\n}\n\nexport function setCacheLimits(limit: number, checkThreshold: number) {\n cacheLimit = limit;\n cacheCheckThreshold = checkThreshold;\n}\n","// @flow\n\nimport window from './window.js';\nimport {extend, warnOnce, isWorker} from './util.js';\nimport {isMapboxHTTPURL, hasCacheDefeatingSku} from './mapbox.js';\nimport config from './config.js';\nimport assert from 'assert';\nimport {cacheGet, cachePut} from './tile_request_cache.js';\nimport webpSupported from './webp_supported.js';\n\nimport type {Callback} from '../types/callback.js';\nimport type {Cancelable} from '../types/cancelable.js';\n\n/**\n * The type of a resource.\n * @private\n * @readonly\n * @enum {string}\n */\nconst ResourceType = {\n Unknown: 'Unknown',\n Style: 'Style',\n Source: 'Source',\n Tile: 'Tile',\n Glyphs: 'Glyphs',\n SpriteImage: 'SpriteImage',\n SpriteJSON: 'SpriteJSON',\n Image: 'Image'\n};\nexport {ResourceType};\n\nif (typeof Object.freeze == 'function') {\n Object.freeze(ResourceType);\n}\n\n/**\n * A `RequestParameters` object to be returned from Map.options.transformRequest callbacks.\n * @typedef {Object} RequestParameters\n * @property {string} url The URL to be requested.\n * @property {Object} headers The headers to be sent with the request.\n * @property {string} method Request method `'GET' | 'POST' | 'PUT'`.\n * @property {string} body Request body.\n * @property {string} type Response body type to be returned `'string' | 'json' | 'arrayBuffer'`.\n * @property {string} credentials `'same-origin'|'include'` Use 'include' to send cookies with cross-origin requests.\n * @property {boolean} collectResourceTiming If true, Resource Timing API information will be collected for these transformed requests and returned in a resourceTiming property of relevant data events.\n * @example\n * // use transformRequest to modify requests that begin with `http://myHost`\n * const map = new Map({\n * container: 'map',\n * style: 'mapbox://styles/mapbox/streets-v11',\n * transformRequest: (url, resourceType) => {\n * if (resourceType === 'Source' && url.indexOf('http://myHost') > -1) {\n * return {\n * url: url.replace('http', 'https'),\n * headers: {'my-custom-header': true},\n * credentials: 'include' // Include cookies for cross-origin requests\n * };\n * }\n * }\n * });\n *\n */\nexport type RequestParameters = {\n url: string,\n headers?: Object,\n method?: 'GET' | 'POST' | 'PUT',\n body?: string,\n type?: 'string' | 'json' | 'arrayBuffer',\n credentials?: 'same-origin' | 'include',\n collectResourceTiming?: boolean\n};\n\nexport type ResponseCallback<T> = (error: ?Error, data: ?T, cacheControl: ?string, expires: ?string) => void;\n\nexport class AJAXError extends Error {\n status: number;\n url: string;\n constructor(message: string, status: number, url: string) {\n if (status === 401 && isMapboxHTTPURL(url)) {\n message += ': you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes';\n }\n super(message);\n this.status = status;\n this.url = url;\n }\n\n toString(): string {\n return `${this.name}: ${this.message} (${this.status}): ${this.url}`;\n }\n}\n\n// Ensure that we're sending the correct referrer from blob URL worker bundles.\n// For files loaded from the local file system, `location.origin` will be set\n// to the string(!) \"null\" (Firefox), or \"file://\" (Chrome, Safari, Edge, IE),\n// and we will set an empty referrer. Otherwise, we're using the document's URL.\n/* global self */\nexport const getReferrer: (() => string) = isWorker() ?\n () => self.worker && self.worker.referrer :\n () => (window.location.protocol === 'blob:' ? window.parent : window).location.href;\n\n// Determines whether a URL is a file:// URL. This is obviously the case if it begins\n// with file://. Relative URLs are also file:// URLs iff the original document was loaded\n// via a file:// URL.\nconst isFileURL = url => /^file:/.test(url) || (/^file:/.test(getReferrer()) && !/^\\w+:/.test(url));\n\nfunction makeFetchRequest(requestParameters: RequestParameters, callback: ResponseCallback<any>): Cancelable {\n const controller = new window.AbortController();\n const request = new window.Request(requestParameters.url, {\n method: requestParameters.method || 'GET',\n body: requestParameters.body,\n credentials: requestParameters.credentials,\n headers: requestParameters.headers,\n referrer: getReferrer(),\n signal: controller.signal\n });\n let complete = false;\n let aborted = false;\n\n const cacheIgnoringSearch = hasCacheDefeatingSku(request.url);\n\n if (requestParameters.type === 'json') {\n request.headers.set('Accept', 'application/json');\n }\n\n const validateOrFetch = (err, cachedResponse, responseIsFresh) => {\n if (aborted) return;\n\n if (err) {\n // Do fetch in case of cache error.\n // HTTP pages in Edge trigger a security error that can be ignored.\n if (err.message !== 'SecurityError') {\n warnOnce(err);\n }\n }\n\n if (cachedResponse && responseIsFresh) {\n return finishRequest(cachedResponse);\n }\n\n if (cachedResponse) {\n // We can't do revalidation with 'If-None-Match' because then the\n // request doesn't have simple cors headers.\n }\n\n const requestTime = Date.now();\n\n window.fetch(request).then(response => {\n if (response.ok) {\n const cacheableResponse = cacheIgnoringSearch ? response.clone() : null;\n return finishRequest(response, cacheableResponse, requestTime);\n\n } else {\n return callback(new AJAXError(response.statusText, response.status, requestParameters.url));\n }\n }).catch(error => {\n if (error.code === 20) {\n // silence expected AbortError\n return;\n }\n callback(new Error(error.message));\n });\n };\n\n const finishRequest = (response, cacheableResponse, requestTime) => {\n (\n requestParameters.type === 'arrayBuffer' ? response.arrayBuffer() :\n requestParameters.type === 'json' ? response.json() :\n response.text()\n ).then(result => {\n if (aborted) return;\n if (cacheableResponse && requestTime) {\n // The response needs to be inserted into the cache after it has completely loaded.\n // Until it is fully loaded there is a chance it will be aborted. Aborting while\n // reading the body can cause the cache insertion to error. We could catch this error\n // in most browsers but in Firefox it seems to sometimes crash the tab. Adding\n // it to the cache here avoids that error.\n cachePut(request, cacheableResponse, requestTime);\n }\n complete = true;\n callback(null, result, response.headers.get('Cache-Control'), response.headers.get('Expires'));\n }).catch(err => {\n if (!aborted) callback(new Error(err.message));\n });\n };\n\n if (cacheIgnoringSearch) {\n cacheGet(request, validateOrFetch);\n } else {\n validateOrFetch(null, null);\n }\n\n return {cancel: () => {\n aborted = true;\n if (!complete) controller.abort();\n }};\n}\n\nfunction makeXMLHttpRequest(requestParameters: RequestParameters, callback: ResponseCallback<any>): Cancelable {\n const xhr: XMLHttpRequest = new window.XMLHttpRequest();\n\n xhr.open(requestParameters.method || 'GET', requestParameters.url, true);\n if (requestParameters.type === 'arrayBuffer') {\n xhr.responseType = 'arraybuffer';\n }\n for (const k in requestParameters.headers) {\n xhr.setRequestHeader(k, requestParameters.headers[k]);\n }\n if (requestParameters.type === 'json') {\n xhr.responseType = 'text';\n xhr.setRequestHeader('Accept', 'application/json');\n }\n xhr.withCredentials = requestParameters.credentials === 'include';\n xhr.onerror = () => {\n callback(new Error(xhr.statusText));\n };\n xhr.onload = () => {\n if (((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) && xhr.response !== null) {\n let data: mixed = xhr.response;\n if (requestParameters.type === 'json') {\n // We're manually parsing JSON here to get better error messages.\n try {\n data = JSON.parse(xhr.response);\n } catch (err) {\n return callback(err);\n }\n }\n callback(null, data, xhr.getResponseHeader('Cache-Control'), xhr.getResponseHeader('Expires'));\n } else {\n callback(new AJAXError(xhr.statusText, xhr.status, requestParameters.url));\n }\n };\n xhr.send(requestParameters.body);\n return {cancel: () => xhr.abort()};\n}\n\nexport const makeRequest = function(requestParameters: RequestParameters, callback: ResponseCallback<any>): Cancelable {\n // We're trying to use the Fetch API if possible. However, in some situations we can't use it:\n // - Safari exposes window.AbortController, but it doesn't work actually abort any requests in\n // older versions (see https://bugs.webkit.org/show_bug.cgi?id=174980#c2). In this case,\n // we dispatch the request to the main thread so that we can get an accurate referrer header.\n // - Requests for resources with the file:// URI scheme don't work with the Fetch API either. In\n // this case we unconditionally use XHR on the current thread since referrers don't matter.\n if (!isFileURL(requestParameters.url)) {\n if (window.fetch && window.Request && window.AbortController && window.Request.prototype.hasOwnProperty('signal')) {\n return makeFetchRequest(requestParameters, callback);\n }\n if (isWorker() && self.worker && self.worker.actor) {\n const queueOnMainThread = true;\n return self.worker.actor.send('getResource', requestParameters, callback, undefined, queueOnMainThread);\n }\n }\n return makeXMLHttpRequest(requestParameters, callback);\n};\n\nexport const getJSON = function(requestParameters: RequestParameters, callback: ResponseCallback<Object>): Cancelable {\n return makeRequest(extend(requestParameters, {type: 'json'}), callback);\n};\n\nexport const getArrayBuffer = function(requestParameters: RequestParameters, callback: ResponseCallback<ArrayBuffer>): Cancelable {\n return makeRequest(extend(requestParameters, {type: 'arrayBuffer'}), callback);\n};\n\nexport const postData = function(requestParameters: RequestParameters, callback: ResponseCallback<string>): Cancelable {\n return makeRequest(extend(requestParameters, {method: 'POST'}), callback);\n};\n\nexport const getData = function(requestParameters: RequestParameters, callback: ResponseCallback<string>): Cancelable {\n return makeRequest(extend(requestParameters, {method: 'GET'}), callback);\n};\n\nfunction sameOrigin(url) {\n const a: HTMLAnchorElement = window.document.createElement('a');\n a.href = url;\n return a.protocol === window.document.location.protocol && a.host === window.document.location.host;\n}\n\nconst transparentPngUrl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=';\n\nfunction arrayBufferToImage(data: ArrayBuffer, callback: Callback<HTMLImageElement>) {\n const img: HTMLImageElement = new window.Image();\n const URL = window.URL;\n img.onload = () => {\n callback(null, img);\n URL.revokeObjectURL(img.src);\n // prevent image dataURI memory leak in Safari;\n // but don't free the image immediately because it might be uploaded in the next frame\n // https://github.com/mapbox/mapbox-gl-js/issues/10226\n img.onload = null;\n window.requestAnimationFrame(() => { img.src = transparentPngUrl; });\n };\n img.onerror = () => callback(new Error('Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.'));\n const blob: Blob = new window.Blob([new Uint8Array(data)], {type: 'image/png'});\n img.src = data.byteLength ? URL.createObjectURL(blob) : transparentPngUrl;\n}\n\nfunction arrayBufferToImageBitmap(data: ArrayBuffer, callback: Callback<ImageBitmap>) {\n const blob: Blob = new window.Blob([new Uint8Array(data)], {type: 'image/png'});\n window.createImageBitmap(blob).then((imgBitmap) => {\n callback(null, imgBitmap);\n }).catch((e) => {\n callback(new Error(`Could not load image because of ${e.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`));\n });\n}\n\nlet imageQueue, numImageRequests;\nexport const resetImageRequestQueue = () => {\n imageQueue = [];\n numImageRequests = 0;\n};\nresetImageRequestQueue();\n\nexport const getImage = function(requestParameters: RequestParameters, callback: ResponseCallback<HTMLImageElement | ImageBitmap>): Cancelable {\n if (webpSupported.supported) {\n if (!requestParameters.headers) {\n requestParameters.headers = {};\n }\n requestParameters.headers.accept = 'image/webp,*/*';\n }\n\n // limit concurrent image loads to help with raster sources performance on big screens\n if (numImageRequests >= config.MAX_PARALLEL_IMAGE_REQUESTS) {\n const queued = {\n requestParameters,\n callback,\n cancelled: false,\n cancel() { this.cancelled = true; }\n };\n imageQueue.push(queued);\n return queued;\n }\n numImageRequests++;\n\n let advanced = false;\n const advanceImageRequestQueue = () => {\n if (advanced) return;\n advanced = true;\n numImageRequests--;\n assert(numImageRequests >= 0);\n while (imageQueue.length && numImageRequests < config.MAX_PARALLEL_IMAGE_REQUESTS) { // eslint-disable-line\n const request = imageQueue.shift();\n const {requestParameters, callback, cancelled} = request;\n if (!cancelled) {\n request.cancel = getImage(requestParameters, callback).cancel;\n }\n }\n };\n\n // request the image with XHR to work around caching issues\n // see https://github.com/mapbox/mapbox-gl-js/issues/1470\n const request = getArrayBuffer(requestParameters, (err: ?Error, data: ?ArrayBuffer, cacheControl: ?string, expires: ?string) => {\n\n advanceImageRequestQueue();\n\n if (err) {\n callback(err);\n } else if (data) {\n if (window.createImageBitmap) {\n arrayBufferToImageBitmap(data, (err, imgBitmap) => callback(err, imgBitmap, cacheControl, expires));\n } else {\n arrayBufferToImage(data, (err, img) => callback(err, img, cacheControl, expires));\n }\n }\n });\n\n return {\n cancel: () => {\n request.cancel();\n advanceImageRequestQueue();\n }\n };\n};\n\nexport const getVideo = function(urls: Array<string>, callback: Callback<HTMLVideoElement>): Cancelable {\n const video: HTMLVideoElement = window.document.createElement('video');\n video.muted = true;\n video.onloadstart = function() {\n callback(null, video);\n };\n for (let i = 0; i < urls.length; i++) {\n const s: HTMLSourceElement = window.document.createElement('source');\n if (!sameOrigin(urls[i])) {\n video.crossOrigin = 'Anonymous';\n }\n s.src = urls[i];\n video.appendChild(s);\n }\n return {cancel: () => {}};\n};\n","// @flow\n\nimport {extend} from './util.js';\n\ntype Listener = (Object) => any;\ntype Listeners = {[_: string]: Array<Listener> };\n\nfunction _addEventListener(type: string, listener: Listener, listenerList: Listeners) {\n const listenerExists = listenerList[type] && listenerList[type].indexOf(listener) !== -1;\n if (!listenerExists) {\n listenerList[type] = listenerList[type] || [];\n listenerList[type].push(listener);\n }\n}\n\nfunction _removeEventListener(type: string, listener: Listener, listenerList: Listeners) {\n if (listenerList && listenerList[type]) {\n const index = listenerList[type].indexOf(listener);\n if (index !== -1) {\n listenerList[type].splice(index, 1);\n }\n }\n}\n\nexport class Event {\n +type: string;\n\n constructor(type: string, data: Object = {}) {\n extend(this, data);\n this.type = type;\n }\n}\n\ninterface ErrorLike {\n message: string;\n}\n\nexport class ErrorEvent extends Event {\n error: ErrorLike;\n\n constructor(error: ErrorLike, data: Object = {}) {\n super('error', extend({error}, data));\n }\n}\n\n/**\n * `Evented` mixes methods into other classes for event capabilities.\n *\n * Unless you are developing a plugin you will most likely use these methods through classes like `Map` or `Popup`.\n *\n * For lists of events you can listen for, see API documentation for specific classes: [`Map`](https://docs.mapbox.com/mapbox-gl-js/api/map/#map-events), [`Marker`](https://docs.mapbox.com/mapbox-gl-js/api/map/#map-events), [`Popup`](https://docs.mapbox.com/mapbox-gl-js/api/map/#map-events), and [`GeolocationControl`](https://docs.mapbox.com/mapbox-gl-js/api/map/#map-events).\n *\n * @mixin Evented\n */\nexport class Evented {\n _listeners: Listeners;\n _oneTimeListeners: Listeners;\n _eventedParent: ?Evented;\n _eventedParentData: ?(Object | () => Object);\n\n /**\n * Adds a listener to a specified event type.\n *\n * @param {string} type The event type to add a listen for.\n * @param {Function} listener The function to be called when the event is fired.\n * The listener function is called with the data object passed to `fire`,\n * extended with `target` and `type` properties.\n * @returns {Object} Returns itself to allow for method chaining.\n */\n on(type: *, listener: Listener): this {\n this._listeners = this._listeners || {};\n _addEventListener(type, listener, this._listeners);\n\n return this;\n }\n\n /**\n * Removes a previously registered event listener.\n *\n * @param {string} type The event type to remove listeners for.\n * @param {Function} listener The listener function to remove.\n * @returns {Object} Returns itself to allow for method chaining.\n */\n off(type: *, listener: Listener): this {\n _removeEventListener(type, listener, this._listeners);\n _removeEventListener(type, listener, this._oneTimeListeners);\n\n return this;\n }\n\n /**\n * Adds a listener that will be called only once to a specified event type.\n *\n * The listener will be called first time the event fires after the listener is registered.\n *\n * @param {string} type The event type to listen for.\n * @param {Function} listener (Optional) The function to be called when the event is fired once.\n * If not provided, returns a Promise that will be resolved when the event is fired once.\n * @returns {Object} Returns `this` | Promise.\n */\n once(type: *, listener?: Listener): this | Promise<Event> {\n if (!listener) {\n return new Promise(resolve => this.once(type, resolve));\n }\n\n this._oneTimeListeners = this._oneTimeListeners || {};\n _addEventListener(type, listener, this._oneTimeListeners);\n\n return this;\n }\n\n fire(event: Event, properties?: Object): this {\n // Compatibility with (type: string, properties: Object) signature from previous versions.\n // See https://github.com/mapbox/mapbox-gl-js/issues/6522,\n // https://github.com/mapbox/mapbox-gl-draw/issues/766\n if (typeof event === 'string') {\n event = new Event(event, properties || {});\n }\n\n const type = event.type;\n\n if (this.listens(type)) {\n (event: any).target = this;\n\n // make sure adding or removing listeners inside other listeners won't cause an infinite loop\n const listeners = this._listeners && this._listeners[type] ? this._listeners[type].slice() : [];\n\n for (const listener of listeners) {\n listener.call(this, event);\n }\n\n const oneTimeListeners = this._oneTimeListeners && this._oneTimeListeners[type] ? this._oneTimeListeners[type].slice() : [];\n for (const listener of oneTimeListeners) {\n _removeEventListener(type, listener, this._oneTimeListeners);\n listener.call(this, event);\n }\n\n const parent = this._eventedParent;\n if (parent) {\n extend(\n event,\n typeof this._eventedParentData === 'function' ? this._eventedParentData() : this._eventedParentData\n );\n parent.fire(event);\n }\n\n // To ensure that no error events are dropped, print them to the\n // console if they have no listeners.\n } else if (event instanceof ErrorEvent) {\n console.error(event.error);\n }\n\n return this;\n }\n\n /**\n * Returns true if this instance of Evented or any forwarded instances of Evented have a listener for the specified type.\n *\n * @param {string} type The event type.\n * @returns {boolean} Returns `true` if there is at least one registered listener for specified event type, `false` otherwise.\n * @private\n */\n listens(type: string): boolean {\n return !!(\n (this._listeners && this._listeners[type] && this._listeners[type].length > 0) ||\n (this._oneTimeListeners && this._oneTimeListeners[type] && this._oneTimeListeners[type].length > 0) ||\n (this._eventedParent && this._eventedParent.listens(type))\n );\n }\n\n /**\n * Bubble all events fired by this instance of Evented to this parent instance of Evented.\n *\n * @returns {Object} `this`\n * @private\n */\n setEventedParent(parent: ?Evented, data?: Object | () => Object): this {\n this._eventedParent = parent;\n this._eventedParentData = data;\n\n return this;\n }\n}\n","// @flow\n\nexport default function (output: any, ...inputs: Array<any>): any {\n for (const input of inputs) {\n for (const k in input) {\n output[k] = input[k];\n }\n }\n return output;\n}\n","// @flow\n\n// Turn jsonlint-lines-primitives objects into primitive objects\nexport function unbundle(value: mixed): mixed {\n if (value instanceof Number || value instanceof String || value instanceof Boolean) {\n return value.valueOf();\n } else {\n return value;\n }\n}\n\nexport function deepUnbundle(value: mixed): mixed {\n if (Array.isArray(value)) {\n return value.map(deepUnbundle);\n } else if (value instanceof Object && !(value instanceof Number || value instanceof String || value instanceof Boolean)) {\n const unbundledValue: { [key: string]: mixed } = {};\n for (const key in value) {\n unbundledValue[key] = deepUnbundle(value[key]);\n }\n return unbundledValue;\n }\n\n return unbundle(value);\n}\n","// @flow\n\nclass ParsingError extends Error {\n key: string;\n message: string;\n constructor(key: string, message: string) {\n super(message);\n this.message = message;\n this.key = key;\n }\n}\n\nexport default ParsingError;\n","// @flow\n\nimport type {Expression} from './expression.js';\n\n/**\n * Tracks `let` bindings during expression parsing.\n * @private\n */\nclass Scope {\n parent: ?Scope;\n bindings: {[_: string]: Expression};\n constructor(parent?: Scope, bindings: Array<[string, Expression]> = []) {\n this.parent = parent;\n this.bindings = {};\n for (const [name, expression] of bindings) {\n this.bindings[name] = expression;\n }\n }\n\n concat(bindings: Array<[string, Expression]>): Scope {\n return new Scope(this, bindings);\n }\n\n get(name: string): Expression {\n if (this.bindings[name]) { return this.bindings[name]; }\n if (this.parent) { return this.parent.get(name); }\n throw new Error(`${name} not found in scope.`);\n }\n\n has(name: string): boolean {\n if (this.bindings[name]) return true;\n return this.parent ? this.parent.has(name) : false;\n }\n}\n\nexport default Scope;\n","// @flow\n\nexport type NullTypeT = { kind: 'null' };\nexport type NumberTypeT = { kind: 'number' };\nexport type StringTypeT = { kind: 'string' };\nexport type BooleanTypeT = { kind: 'boolean' };\nexport type ColorTypeT = { kind: 'color' };\nexport type ObjectTypeT = { kind: 'object' };\nexport type ValueTypeT = { kind: 'value' };\nexport type ErrorTypeT = { kind: 'error' };\nexport type CollatorTypeT = { kind: 'collator' };\nexport type FormattedTypeT = { kind: 'formatted' };\nexport type ResolvedImageTypeT = { kind: 'resolvedImage' };\n\nexport type EvaluationKind = 'constant' | 'source' | 'camera' | 'composite';\n\nexport type Type =\n NullTypeT |\n NumberTypeT |\n StringTypeT |\n BooleanTypeT |\n ColorTypeT |\n ObjectTypeT |\n ValueTypeT |\n ArrayType | // eslint-disable-line no-use-before-define\n ErrorTypeT |\n CollatorTypeT |\n FormattedTypeT |\n ResolvedImageTypeT\n\nexport type ArrayType = {\n kind: 'array',\n itemType: Type,\n N: ?number\n}\n\nexport type NativeType = 'number' | 'string' | 'boolean' | 'null' | 'array' | 'object'\n\nexport const NullType = {kind: 'null'};\nexport const NumberType = {kind: 'number'};\nexport const StringType = {kind: 'string'};\nexport const BooleanType = {kind: 'boolean'};\nexport const ColorType = {kind: 'color'};\nexport const ObjectType = {kind: 'object'};\nexport const ValueType = {kind: 'value'};\nexport const ErrorType = {kind: 'error'};\nexport const CollatorType = {kind: 'collator'};\nexport const FormattedType = {kind: 'formatted'};\nexport const ResolvedImageType = {kind: 'resolvedImage'};\n\nexport function array(itemType: Type, N: ?number): ArrayType {\n return {\n kind: 'array',\n itemType,\n N\n };\n}\n\nexport function toString(type: Type): string {\n if (type.kind === 'array') {\n const itemType = toString(type.itemType);\n return typeof type.N === 'number' ?\n `array<${itemType}, ${type.N}>` :\n type.itemType.kind === 'value' ? 'array' : `array<${itemType}>`;\n } else {\n return type.kind;\n }\n}\n\nconst valueMemberTypes = [\n NullType,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n FormattedType,\n ObjectType,\n array(ValueType),\n ResolvedImageType\n];\n\n/**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message.\n * @private\n */\nexport function checkSubtype(expected: Type, t: Type): ?string {\n if (t.kind === 'error') {\n // Error is a subtype of every type\n return null;\n } else if (expected.kind === 'array') {\n if (t.kind === 'array' &&\n ((t.N === 0 && t.itemType.kind === 'value') || !checkSubtype(expected.itemType, t.itemType)) &&\n (typeof expected.N !== 'number' || expected.N === t.N)) {\n return null;\n }\n } else if (expected.kind === t.kind) {\n return null;\n } else if (expected.kind === 'value') {\n for (const memberType of valueMemberTypes) {\n if (!checkSubtype(memberType, t)) {\n return null;\n }\n }\n }\n\n return `Expected ${toString(expected)} but found ${toString(t)} instead.`;\n}\n\nexport function isValidType(provided: Type, allowedTypes: Array<Type>): boolean {\n return allowedTypes.some(t => t.kind === provided.kind);\n}\n\nexport function isValidNativeType(provided: any, allowedTypes: Array<NativeType>): boolean {\n return allowedTypes.some(t => {\n if (t === 'null') {\n return provided === null;\n } else if (t === 'array') {\n return Array.isArray(provided);\n } else if (t === 'object') {\n return provided && !Array.isArray(provided) && typeof provided === 'object';\n } else {\n return t === typeof provided;\n }\n });\n}\n","// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"rebeccapurple\": [102,51,153,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n","// @flow\n\nimport {parseCSSColor} from 'csscolorparser';\n\n/**\n * An RGBA color value. Create instances from color strings using the static\n * method `Color.parse`. The constructor accepts RGB channel values in the range\n * `[0, 1]`, premultiplied by A.\n *\n * @param {number} r The red channel.\n * @param {number} g The green channel.\n * @param {number} b The blue channel.\n * @param {number} a The alpha channel.\n * @private\n */\nclass Color {\n r: number;\n g: number;\n b: number;\n a: number;\n\n constructor(r: number, g: number, b: number, a: number = 1) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n static black: Color;\n static white: Color;\n static transparent: Color;\n static red: Color;\n static blue: Color;\n\n /**\n * Parses valid CSS color strings and returns a `Color` instance.\n * @returns A `Color` instance, or `undefined` if the input is not a valid color string.\n */\n static parse(input?: string | Color | null): Color | void {\n if (!input) {\n return undefined;\n }\n\n if (input instanceof Color) {\n return input;\n }\n\n if (typeof input !== 'string') {\n return undefined;\n }\n\n const rgba = parseCSSColor(input);\n if (!rgba) {\n return undefined;\n }\n\n return new Color(\n rgba[0] / 255 * rgba[3],\n rgba[1] / 255 * rgba[3],\n rgba[2] / 255 * rgba[3],\n rgba[3]\n );\n }\n\n /**\n * Returns an RGBA string representing the color value.\n *\n * @returns An RGBA string.\n * @example\n * var purple = new Color.parse('purple');\n * purple.toString; // = \"rgba(128,0,128,1)\"\n * var translucentGreen = new Color.parse('rgba(26, 207, 26, .73)');\n * translucentGreen.toString(); // = \"rgba(26,207,26,0.73)\"\n */\n toString(): string {\n const [r, g, b, a] = this.toArray();\n return `rgba(${Math.round(r)},${Math.round(g)},${Math.round(b)},${a})`;\n }\n\n /**\n * Returns an RGBA array of values representing the color, unpremultiplied by A.\n *\n * @returns An array of RGBA color values in the range [0, 255].\n */\n toArray(): [number, number, number, number] {\n const {r, g, b, a} = this;\n return a === 0 ? [0, 0, 0, 0] : [\n r * 255 / a,\n g * 255 / a,\n b * 255 / a,\n a\n ];\n }\n\n /**\n * Returns a RGBA array of float values representing the color, unpremultiplied by A.\n *\n * @returns An array of RGBA color values in the range [0, 1].\n */\n toArray01(): [number, number, number, number] {\n const {r, g, b, a} = this;\n return a === 0 ? [0, 0, 0, 0] : [\n r / a,\n g / a,\n b / a,\n a\n ];\n }\n\n /**\n * Returns an RGBA array of values representing the color, premultiplied by A.\n *\n * @returns An array of RGBA color values in the range [0, 1].\n */\n toArray01PremultipliedAlpha(): [number, number, number, number] {\n const {r, g, b, a} = this;\n return [\n r,\n g,\n b,\n a\n ];\n }\n}\n\nColor.black = new Color(0, 0, 0, 1);\nColor.white = new Color(1, 1, 1, 1);\nColor.transparent = new Color(0, 0, 0, 0);\nColor.red = new Color(1, 0, 0, 1);\nColor.blue = new Color(0, 0, 1, 1);\n\nexport default Color;\n","// @flow\n\n// Flow type declarations for Intl cribbed from\n// https://github.com/facebook/flow/issues/1270\n\ndeclare var Intl: {\n Collator: Class<Intl$Collator>\n};\n\ndeclare class Intl$Collator {\n constructor (\n locales?: string | string[],\n options?: CollatorOptions\n ): Intl$Collator;\n\n static (\n locales?: string | string[],\n options?: CollatorOptions\n ): Intl$Collator;\n\n compare (a: string, b: string): number;\n\n resolvedOptions(): any;\n}\n\ntype CollatorOptions = {\n localeMatcher?: 'lookup' | 'best fit',\n usage?: 'sort' | 'search',\n sensitivity?: 'base' | 'accent' | 'case' | 'variant',\n ignorePunctuation?: boolean,\n numeric?: boolean,\n caseFirst?: 'upper' | 'lower' | 'false'\n}\n\nexport default class Collator {\n locale: string | null;\n sensitivity: 'base' | 'accent' | 'case' | 'variant';\n collator: Intl$Collator;\n\n constructor(caseSensitive: boolean, diacriticSensitive: boolean, locale: string | null) {\n if (caseSensitive)\n this.sensitivity = diacriticSensitive ? 'variant' : 'case';\n else\n this.sensitivity = diacriticSensitive ? 'accent' : 'base';\n\n this.locale = locale;\n this.collator = new Intl.Collator(this.locale ? this.locale : [],\n {sensitivity: this.sensitivity, usage: 'search'});\n }\n\n compare(lhs: string, rhs: string): number {\n return this.collator.compare(lhs, rhs);\n }\n\n resolvedLocale(): string {\n // We create a Collator without \"usage: search\" because we don't want\n // the search options encoded in our result (e.g. \"en-u-co-search\")\n return new Intl.Collator(this.locale ? this.locale : [])\n .resolvedOptions().locale;\n }\n}\n","// @flow\nimport type Color from '../../util/color.js';\nimport type ResolvedImage from '../types/resolved_image.js';\n\nexport class FormattedSection {\n text: string;\n image: ResolvedImage | null;\n scale: number | null;\n fontStack: string | null;\n textColor: Color | null;\n\n constructor(text: string, image: ResolvedImage | null, scale: number | null, fontStack: string | null, textColor: Color | null) {\n // combine characters so that diacritic marks are not separate code points\n this.text = text.normalize ? text.normalize() : text;\n this.image = image;\n this.scale = scale;\n this.fontStack = fontStack;\n this.textColor = textColor;\n }\n}\n\nexport default class Formatted {\n sections: Array<FormattedSection>;\n\n constructor(sections: Array<FormattedSection>) {\n this.sections = sections;\n }\n\n static fromString(unformatted: string): Formatted {\n return new Formatted([new FormattedSection(unformatted, null, null, null, null)]);\n }\n\n isEmpty(): boolean {\n if (this.sections.length === 0) return true;\n return !this.sections.some(section => section.text.length !== 0 ||\n (section.image && section.image.name.length !== 0));\n }\n\n static factory(text: Formatted | string): Formatted {\n if (text instanceof Formatted) {\n return text;\n } else {\n return Formatted.fromString(text);\n }\n }\n\n toString(): string {\n if (this.sections.length === 0) return '';\n return this.sections.map(section => section.text).join('');\n }\n\n serialize(): Array<mixed> {\n const serialized: Array<mixed> = [\"format\"];\n for (const section of this.sections) {\n if (section.image) {\n serialized.push([\"image\", section.image.name]);\n continue;\n }\n serialized.push(section.text);\n const options: { [key: string]: mixed } = {};\n if (section.fontStack) {\n options[\"text-font\"] = [\"literal\", section.fontStack.split(',')];\n }\n if (section.scale) {\n options[\"font-scale\"] = section.scale;\n }\n if (section.textColor) {\n options[\"text-color\"] = ([\"rgba\"]: Array<mixed>).concat(section.textColor.toArray());\n }\n serialized.push(options);\n }\n return serialized;\n }\n}\n","// @flow\n\nexport type ResolvedImageOptions = {\n name: string,\n available: boolean\n};\n\nexport default class ResolvedImage {\n name: string;\n available: boolean;\n\n constructor(options: ResolvedImageOptions) {\n this.name = options.name;\n this.available = options.available;\n }\n\n toString(): string {\n return this.name;\n }\n\n static fromString(name: string): ResolvedImage | null {\n if (!name) return null; // treat empty values as no image\n return new ResolvedImage({name, available: false});\n }\n\n serialize(): Array<string> {\n return [\"image\", this.name];\n }\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport Color from '../util/color.js';\nimport Collator from './types/collator.js';\nimport Formatted from './types/formatted.js';\nimport ResolvedImage from './types/resolved_image.js';\nimport {NullType, NumberType, StringType, BooleanType, ColorType, ObjectType, ValueType, CollatorType, FormattedType, ResolvedImageType, array} from './types.js';\n\nimport type {Type} from './types.js';\n\nexport function validateRGBA(r: mixed, g: mixed, b: mixed, a?: mixed): string | null {\n if (!(\n typeof r === 'number' && r >= 0 && r <= 255 &&\n typeof g === 'number' && g >= 0 && g <= 255 &&\n typeof b === 'number' && b >= 0 && b <= 255\n )) {\n const value = typeof a === 'number' ? [r, g, b, a] : [r, g, b];\n return `Invalid rgba value [${value.join(', ')}]: 'r', 'g', and 'b' must be between 0 and 255.`;\n }\n\n if (!(\n typeof a === 'undefined' || (typeof a === 'number' && a >= 0 && a <= 1)\n )) {\n return `Invalid rgba value [${[r, g, b, a].join(', ')}]: 'a' must be between 0 and 1.`;\n }\n\n return null;\n}\n\nexport type Value = null | string | boolean | number | Color | Collator | Formatted | ResolvedImage | $ReadOnlyArray<Value> | { +[string]: Value }\n\nexport function isValue(mixed: mixed): boolean {\n if (mixed === null) {\n return true;\n } else if (typeof mixed === 'string') {\n return true;\n } else if (typeof mixed === 'boolean') {\n return true;\n } else if (typeof mixed === 'number') {\n return true;\n } else if (mixed instanceof Color) {\n return true;\n } else if (mixed instanceof Collator) {\n return true;\n } else if (mixed instanceof Formatted) {\n return true;\n } else if (mixed instanceof ResolvedImage) {\n return true;\n } else if (Array.isArray(mixed)) {\n for (const item of mixed) {\n if (!isValue(item)) {\n return false;\n }\n }\n return true;\n } else if (typeof mixed === 'object') {\n for (const key in mixed) {\n if (!isValue(mixed[key])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n}\n\nexport function typeOf(value: Value): Type {\n if (value === null) {\n return NullType;\n } else if (typeof value === 'string') {\n return StringType;\n } else if (typeof value === 'boolean') {\n return BooleanType;\n } else if (typeof value === 'number') {\n return NumberType;\n } else if (value instanceof Color) {\n return ColorType;\n } else if (value instanceof Collator) {\n return CollatorType;\n } else if (value instanceof Formatted) {\n return FormattedType;\n } else if (value instanceof ResolvedImage) {\n return ResolvedImageType;\n } else if (Array.isArray(value)) {\n const length = value.length;\n let itemType: Type | typeof undefined;\n\n for (const item of value) {\n const t = typeOf(item);\n if (!itemType) {\n itemType = t;\n } else if (itemType === t) {\n continue;\n } else {\n itemType = ValueType;\n break;\n }\n }\n\n return array(itemType || ValueType, length);\n } else {\n assert(typeof value === 'object');\n return ObjectType;\n }\n}\n\nexport function toString(value: Value): string {\n const type = typeof value;\n if (value === null) {\n return '';\n } else if (type === 'string' || type === 'number' || type === 'boolean') {\n return String(value);\n } else if (value instanceof Color || value instanceof Formatted || value instanceof ResolvedImage) {\n return value.toString();\n } else {\n return JSON.stringify(value);\n }\n}\n\nexport {Color, Collator};\n","// @flow\n\nimport assert from 'assert';\nimport {isValue, typeOf, Color} from '../values.js';\nimport Formatted from '../types/formatted.js';\n\nimport type {Type} from '../types.js';\nimport type {Value} from '../values.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\n\nclass Literal implements Expression {\n type: Type;\n value: Value;\n\n constructor(type: Type, value: Value) {\n this.type = type;\n this.value = value;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): void | Literal {\n if (args.length !== 2)\n return context.error(`'literal' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n\n if (!isValue(args[1]))\n return context.error(`invalid value`);\n\n const value = (args[1]: any);\n let type = typeOf(value);\n\n // special case: infer the item type if possible for zero-length arrays\n const expected = context.expectedType;\n if (\n type.kind === 'array' &&\n type.N === 0 &&\n expected &&\n expected.kind === 'array' &&\n (typeof expected.N !== 'number' || expected.N === 0)\n ) {\n type = expected;\n }\n\n return new Literal(type, value);\n }\n\n evaluate(): Value {\n return this.value;\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): SerializedExpression {\n if (this.type.kind === 'array' || this.type.kind === 'object') {\n return [\"literal\", this.value];\n } else if (this.value instanceof Color) {\n // Constant-folding can generate Literal expressions that you\n // couldn't actually generate with a \"literal\" expression,\n // so we have to implement an equivalent serialization here\n return [\"rgba\"].concat(this.value.toArray());\n } else if (this.value instanceof Formatted) {\n // Same as Color\n return this.value.serialize();\n } else {\n assert(this.value === null ||\n typeof this.value === 'string' ||\n typeof this.value === 'number' ||\n typeof this.value === 'boolean');\n return (this.value: any);\n }\n }\n}\n\nexport default Literal;\n","// @flow\n\nclass RuntimeError {\n name: string;\n message: string;\n\n constructor(message: string) {\n this.name = 'ExpressionEvaluationError';\n this.message = message;\n }\n\n toJSON(): string {\n return this.message;\n }\n}\n\nexport default RuntimeError;\n","// @flow\n\nimport assert from 'assert';\n\nimport {\n ObjectType,\n ValueType,\n StringType,\n NumberType,\n BooleanType,\n checkSubtype,\n toString,\n array\n} from '../types.js';\nimport RuntimeError from '../runtime_error.js';\nimport {typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nconst types = {\n string: StringType,\n number: NumberType,\n boolean: BooleanType,\n object: ObjectType\n};\n\nclass Assertion implements Expression {\n type: Type;\n args: Array<Expression>;\n\n constructor(type: Type, args: Array<Expression>) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n if (args.length < 2)\n return context.error(`Expected at least one argument.`);\n\n let i = 1;\n let type;\n\n const name: string = (args[0]: any);\n if (name === 'array') {\n let itemType;\n if (args.length > 2) {\n const type = args[1];\n if (typeof type !== 'string' || !(type in types) || type === 'object')\n return context.error('The item type argument of \"array\" must be one of string, number, boolean', 1);\n itemType = types[type];\n i++;\n } else {\n itemType = ValueType;\n }\n\n let N;\n if (args.length > 3) {\n if (args[2] !== null &&\n (typeof args[2] !== 'number' ||\n args[2] < 0 ||\n args[2] !== Math.floor(args[2]))\n ) {\n return context.error('The length argument to \"array\" must be a positive integer literal', 2);\n }\n N = args[2];\n i++;\n }\n\n type = array(itemType, N);\n } else {\n assert(types[name], name);\n type = types[name];\n }\n\n const parsed = [];\n for (; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input) return null;\n parsed.push(input);\n }\n\n return new Assertion(type, parsed);\n }\n\n evaluate(ctx: EvaluationContext): any | null {\n for (let i = 0; i < this.args.length; i++) {\n const value = this.args[i].evaluate(ctx);\n const error = checkSubtype(this.type, typeOf(value));\n if (!error) {\n return value;\n } else if (i === this.args.length - 1) {\n throw new RuntimeError(`Expected value to be of type ${toString(this.type)}, but found ${toString(typeOf(value))} instead.`);\n }\n }\n\n assert(false);\n return null;\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n\n serialize(): SerializedExpression {\n const type = this.type;\n const serialized = [type.kind];\n if (type.kind === 'array') {\n const itemType = type.itemType;\n if (itemType.kind === 'string' ||\n itemType.kind === 'number' ||\n itemType.kind === 'boolean') {\n serialized.push(itemType.kind);\n const N = type.N;\n if (typeof N === 'number' || this.args.length > 1) {\n serialized.push(N);\n }\n }\n }\n return serialized.concat(this.args.map(arg => arg.serialize()));\n }\n}\n\nexport default Assertion;\n","// @flow\n\nimport {NumberType, ValueType, FormattedType, array, StringType, ColorType, ResolvedImageType} from '../types.js';\nimport Formatted, {FormattedSection} from '../types/formatted.js';\nimport {toString, typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\n\ntype FormattedSectionExpression = {\n // Content of a section may be Image expression or other\n // type of expression that is coercable to 'string'.\n content: Expression,\n scale: Expression | null;\n font: Expression | null;\n textColor: Expression | null;\n}\n\nexport default class FormatExpression implements Expression {\n type: Type;\n sections: Array<FormattedSectionExpression>;\n\n constructor(sections: Array<FormattedSectionExpression>) {\n this.type = FormattedType;\n this.sections = sections;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n if (args.length < 2) {\n return context.error(`Expected at least one argument.`);\n }\n\n const firstArg = args[1];\n if (!Array.isArray(firstArg) && typeof firstArg === 'object') {\n return context.error(`First argument must be an image or text section.`);\n }\n\n const sections: Array<FormattedSectionExpression> = [];\n let nextTokenMayBeObject = false;\n for (let i = 1; i <= args.length - 1; ++i) {\n const arg = (args[i]: any);\n\n if (nextTokenMayBeObject && typeof arg === \"object\" && !Array.isArray(arg)) {\n nextTokenMayBeObject = false;\n\n let scale = null;\n if (arg['font-scale']) {\n scale = context.parse(arg['font-scale'], 1, NumberType);\n if (!scale) return null;\n }\n\n let font = null;\n if (arg['text-font']) {\n font = context.parse(arg['text-font'], 1, array(StringType));\n if (!font) return null;\n }\n\n let textColor = null;\n if (arg['text-color']) {\n textColor = context.parse(arg['text-color'], 1, ColorType);\n if (!textColor) return null;\n }\n\n const lastExpression = sections[sections.length - 1];\n lastExpression.scale = scale;\n lastExpression.font = font;\n lastExpression.textColor = textColor;\n } else {\n const content = context.parse(args[i], 1, ValueType);\n if (!content) return null;\n\n const kind = content.type.kind;\n if (kind !== 'string' && kind !== 'value' && kind !== 'null' && kind !== 'resolvedImage')\n return context.error(`Formatted text type must be 'string', 'value', 'image' or 'null'.`);\n\n nextTokenMayBeObject = true;\n sections.push({content, scale: null, font: null, textColor: null});\n }\n }\n\n return new FormatExpression(sections);\n }\n\n evaluate(ctx: EvaluationContext): Formatted {\n const evaluateSection = section => {\n const evaluatedContent = section.content.evaluate(ctx);\n if (typeOf(evaluatedContent) === ResolvedImageType) {\n return new FormattedSection('', evaluatedContent, null, null, null);\n }\n\n return new FormattedSection(\n toString(evaluatedContent),\n null,\n section.scale ? section.scale.evaluate(ctx) : null,\n section.font ? section.font.evaluate(ctx).join(',') : null,\n section.textColor ? section.textColor.evaluate(ctx) : null\n );\n };\n\n return new Formatted(this.sections.map(evaluateSection));\n }\n\n eachChild(fn: (_: Expression) => void) {\n for (const section of this.sections) {\n fn(section.content);\n if (section.scale) {\n fn(section.scale);\n }\n if (section.font) {\n fn(section.font);\n }\n if (section.textColor) {\n fn(section.textColor);\n }\n }\n }\n\n outputDefined(): boolean {\n // Technically the combinatoric set of all children\n // Usually, this.text will be undefined anyway\n return false;\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"format\"];\n for (const section of this.sections) {\n serialized.push(section.content.serialize());\n const options = {};\n if (section.scale) {\n options['font-scale'] = section.scale.serialize();\n }\n if (section.font) {\n options['text-font'] = section.font.serialize();\n }\n if (section.textColor) {\n options['text-color'] = section.textColor.serialize();\n }\n serialized.push(options);\n }\n return serialized;\n }\n}\n","// @flow\n\nimport {ResolvedImageType, StringType} from '../types.js';\nimport ResolvedImage from '../types/resolved_image.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\n\nexport default class ImageExpression implements Expression {\n type: Type;\n input: Expression;\n\n constructor(input: Expression) {\n this.type = ResolvedImageType;\n this.input = input;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n if (args.length !== 2) {\n return context.error(`Expected two arguments.`);\n }\n\n const name = context.parse(args[1], 1, StringType);\n if (!name) return context.error(`No image name provided.`);\n\n return new ImageExpression(name);\n }\n\n evaluate(ctx: EvaluationContext): null | ResolvedImage {\n const evaluatedImageName = this.input.evaluate(ctx);\n\n const value = ResolvedImage.fromString(evaluatedImageName);\n if (value && ctx.availableImages) value.available = ctx.availableImages.indexOf(evaluatedImageName) > -1;\n\n return value;\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n }\n\n outputDefined(): boolean {\n // The output of image is determined by the list of available images in the evaluation context\n return false;\n }\n\n serialize(): SerializedExpression {\n return [\"image\", this.input.serialize()];\n }\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport {BooleanType, ColorType, NumberType, StringType, ValueType} from '../types.js';\nimport {Color, toString as valueToString, validateRGBA} from '../values.js';\nimport RuntimeError from '../runtime_error.js';\nimport Formatted from '../types/formatted.js';\nimport FormatExpression from '../definitions/format.js';\nimport ImageExpression from '../definitions/image.js';\nimport ResolvedImage from '../types/resolved_image.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nconst types = {\n 'to-boolean': BooleanType,\n 'to-color': ColorType,\n 'to-number': NumberType,\n 'to-string': StringType\n};\n\n/**\n * Special form for error-coalescing coercion expressions \"to-number\",\n * \"to-color\". Since these coercions can fail at runtime, they accept multiple\n * arguments, only evaluating one at a time until one succeeds.\n *\n * @private\n */\nclass Coercion implements Expression {\n type: Type;\n args: Array<Expression>;\n\n constructor(type: Type, args: Array<Expression>) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n if (args.length < 2)\n return context.error(`Expected at least one argument.`);\n\n const name: string = (args[0]: any);\n assert(types[name], name);\n\n if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2)\n return context.error(`Expected one argument.`);\n\n const type = types[name];\n\n const parsed = [];\n for (let i = 1; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input) return null;\n parsed.push(input);\n }\n\n return new Coercion(type, parsed);\n }\n\n evaluate(ctx: EvaluationContext): null | boolean | number | string | Color | Formatted | ResolvedImage {\n if (this.type.kind === 'boolean') {\n return Boolean(this.args[0].evaluate(ctx));\n } else if (this.type.kind === 'color') {\n let input;\n let error;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n error = null;\n if (input instanceof Color) {\n return input;\n } else if (typeof input === 'string') {\n const c = ctx.parseColor(input);\n if (c) return c;\n } else if (Array.isArray(input)) {\n if (input.length < 3 || input.length > 4) {\n error = `Invalid rbga value ${JSON.stringify(input)}: expected an array containing either three or four numeric values.`;\n } else {\n error = validateRGBA(input[0], input[1], input[2], input[3]);\n }\n if (!error) {\n return new Color((input[0]: any) / 255, (input[1]: any) / 255, (input[2]: any) / 255, (input[3]: any));\n }\n }\n }\n throw new RuntimeError(error || `Could not parse color from value '${typeof input === 'string' ? input : String(JSON.stringify(input))}'`);\n } else if (this.type.kind === 'number') {\n let value = null;\n for (const arg of this.args) {\n value = arg.evaluate(ctx);\n if (value === null) return 0;\n const num = Number(value);\n if (isNaN(num)) continue;\n return num;\n }\n throw new RuntimeError(`Could not convert ${JSON.stringify(value)} to number.`);\n } else if (this.type.kind === 'formatted') {\n // There is no explicit 'to-formatted' but this coercion can be implicitly\n // created by properties that expect the 'formatted' type.\n return Formatted.fromString(valueToString(this.args[0].evaluate(ctx)));\n } else if (this.type.kind === 'resolvedImage') {\n return ResolvedImage.fromString(valueToString(this.args[0].evaluate(ctx)));\n } else {\n return valueToString(this.args[0].evaluate(ctx));\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n\n serialize(): SerializedExpression {\n if (this.type.kind === 'formatted') {\n return new FormatExpression([{content: this.args[0], scale: null, font: null, textColor: null}]).serialize();\n }\n\n if (this.type.kind === 'resolvedImage') {\n return new ImageExpression(this.args[0]).serialize();\n }\n\n const serialized = [`to-${this.type.kind}`];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Coercion;\n","// @flow\n\nimport {Color} from './values.js';\n\nimport type Point from '@mapbox/point-geometry';\nimport type {FormattedSection} from './types/formatted.js';\nimport type {GlobalProperties, Feature, FeatureState} from './index.js';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type {FeatureDistanceData} from '../feature_filter/index.js';\n\nconst geometryTypes = ['Unknown', 'Point', 'LineString', 'Polygon'];\n\nclass EvaluationContext {\n globals: GlobalProperties;\n feature: ?Feature;\n featureState: ?FeatureState;\n formattedSection: ?FormattedSection;\n availableImages: ?Array<string>;\n canonical: null | CanonicalTileID;\n featureTileCoord: ?Point;\n featureDistanceData: ?FeatureDistanceData;\n\n _parseColorCache: {[_: string]: ?Color};\n\n constructor() {\n this.globals = (null: any);\n this.feature = null;\n this.featureState = null;\n this.formattedSection = null;\n this._parseColorCache = {};\n this.availableImages = null;\n this.canonical = null;\n this.featureTileCoord = null;\n this.featureDistanceData = null;\n }\n\n id(): number | null {\n return this.feature && 'id' in this.feature && this.feature.id ? this.feature.id : null;\n }\n\n geometryType(): null | string {\n return this.feature ? typeof this.feature.type === 'number' ? geometryTypes[this.feature.type] : this.feature.type : null;\n }\n\n geometry(): ?Array<Array<Point>> {\n return this.feature && 'geometry' in this.feature ? this.feature.geometry : null;\n }\n\n canonicalID(): null | CanonicalTileID {\n return this.canonical;\n }\n\n properties(): {[string]: any} {\n return (this.feature && this.feature.properties) || {};\n }\n\n distanceFromCenter(): number {\n if (this.featureTileCoord && this.featureDistanceData) {\n\n const c = this.featureDistanceData.center;\n const scale = this.featureDistanceData.scale;\n const {x, y} = this.featureTileCoord;\n\n // Calculate the distance vector `d` (left handed)\n const dX = x * scale - c[0];\n const dY = y * scale - c[1];\n\n // The bearing vector `b` (left handed)\n const bX = this.featureDistanceData.bearing[0];\n const bY = this.featureDistanceData.bearing[1];\n\n // Distance is calculated as `dot(d, v)`\n const dist = (bX * dX + bY * dY);\n return dist;\n }\n\n return 0;\n }\n\n parseColor(input: string): ?Color {\n let cached = this._parseColorCache[input];\n if (!cached) {\n cached = this._parseColorCache[input] = Color.parse(input);\n }\n return cached;\n }\n}\n\nexport default EvaluationContext;\n","// @flow\n\nimport {toString} from './types.js';\n\nimport ParsingContext from './parsing_context.js';\nimport EvaluationContext from './evaluation_context.js';\nimport assert from 'assert';\n\nimport type {Expression, ExpressionRegistry} from './expression.js';\nimport type {Type} from './types.js';\nimport type {Value} from './values.js';\n\nexport type Varargs = {| type: Type |};\ntype Signature = Array<Type> | Varargs;\ntype Evaluate = (EvaluationContext, Array<Expression>) => Value;\ntype Definition = [Type, Signature, Evaluate] |\n {|type: Type, overloads: Array<[Signature, Evaluate]>|};\n\nclass CompoundExpression implements Expression {\n name: string;\n type: Type;\n _evaluate: Evaluate;\n args: Array<Expression>;\n\n static definitions: {[_: string]: Definition };\n\n constructor(name: string, type: Type, evaluate: Evaluate, args: Array<Expression>) {\n this.name = name;\n this.type = type;\n this._evaluate = evaluate;\n this.args = args;\n }\n\n evaluate(ctx: EvaluationContext): Value {\n return this._evaluate(ctx, this.args);\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): Array<mixed> {\n return [this.name].concat(this.args.map(arg => arg.serialize()));\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n const op: string = (args[0]: any);\n const definition = CompoundExpression.definitions[op];\n if (!definition) {\n return context.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n }\n\n // Now check argument types against each signature\n const type = Array.isArray(definition) ?\n definition[0] : definition.type;\n\n const availableOverloads = Array.isArray(definition) ?\n [[definition[1], definition[2]]] :\n definition.overloads;\n\n const overloads = availableOverloads.filter(([signature]) => (\n !Array.isArray(signature) || // varags\n signature.length === args.length - 1 // correct param count\n ));\n\n let signatureContext: ParsingContext = (null: any);\n\n for (const [params, evaluate] of overloads) {\n // Use a fresh context for each attempted signature so that, if\n // we eventually succeed, we haven't polluted `context.errors`.\n signatureContext = new ParsingContext(context.registry, context.path, null, context.scope);\n\n // First parse all the args, potentially coercing to the\n // types expected by this overload.\n const parsedArgs: Array<Expression> = [];\n let argParseFailed = false;\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n const expectedType = Array.isArray(params) ?\n params[i - 1] :\n params.type;\n\n const parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType);\n if (!parsed) {\n argParseFailed = true;\n break;\n }\n parsedArgs.push(parsed);\n }\n if (argParseFailed) {\n // Couldn't coerce args of this overload to expected type, move\n // on to next one.\n continue;\n }\n\n if (Array.isArray(params)) {\n if (params.length !== parsedArgs.length) {\n signatureContext.error(`Expected ${params.length} arguments, but found ${parsedArgs.length} instead.`);\n continue;\n }\n }\n\n for (let i = 0; i < parsedArgs.length; i++) {\n const expected = Array.isArray(params) ? params[i] : params.type;\n const arg = parsedArgs[i];\n signatureContext.concat(i + 1).checkSubtype(expected, arg.type);\n }\n\n if (signatureContext.errors.length === 0) {\n return new CompoundExpression(op, type, evaluate, parsedArgs);\n }\n }\n\n assert(!signatureContext || signatureContext.errors.length > 0);\n\n if (overloads.length === 1) {\n context.errors.push(...signatureContext.errors);\n } else {\n const expected = overloads.length ? overloads : availableOverloads;\n const signatures = expected\n .map(([params]) => stringifySignature(params))\n .join(' | ');\n\n const actualTypes = [];\n // For error message, re-parse arguments without trying to\n // apply any coercions\n for (let i = 1; i < args.length; i++) {\n const parsed = context.parse(args[i], 1 + actualTypes.length);\n if (!parsed) return null;\n actualTypes.push(toString(parsed.type));\n }\n context.error(`Expected arguments of type ${signatures}, but found (${actualTypes.join(', ')}) instead.`);\n }\n\n return null;\n }\n\n static register(\n registry: ExpressionRegistry,\n definitions: {[_: string]: Definition }\n ) {\n assert(!CompoundExpression.definitions);\n CompoundExpression.definitions = definitions;\n for (const name in definitions) {\n registry[name] = CompoundExpression;\n }\n }\n}\n\nfunction stringifySignature(signature: Signature): string {\n if (Array.isArray(signature)) {\n return `(${signature.map(toString).join(', ')})`;\n } else {\n return `(${toString(signature.type)}...)`;\n }\n}\n\nexport default CompoundExpression;\n","// @flow\n\nimport {StringType, BooleanType, CollatorType} from '../types.js';\nimport Collator from '../types/collator.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\n\nexport default class CollatorExpression implements Expression {\n type: Type;\n caseSensitive: Expression;\n diacriticSensitive: Expression;\n locale: Expression | null;\n\n constructor(caseSensitive: Expression, diacriticSensitive: Expression, locale: Expression | null) {\n this.type = CollatorType;\n this.locale = locale;\n this.caseSensitive = caseSensitive;\n this.diacriticSensitive = diacriticSensitive;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n if (args.length !== 2)\n return context.error(`Expected one argument.`);\n\n const options = (args[1]: any);\n if (typeof options !== \"object\" || Array.isArray(options))\n return context.error(`Collator options argument must be an object.`);\n\n const caseSensitive = context.parse(\n options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType);\n if (!caseSensitive) return null;\n\n const diacriticSensitive = context.parse(\n options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType);\n if (!diacriticSensitive) return null;\n\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale) return null;\n }\n\n return new CollatorExpression(caseSensitive, diacriticSensitive, locale);\n }\n\n evaluate(ctx: EvaluationContext): Collator {\n return new Collator(this.caseSensitive.evaluate(ctx), this.diacriticSensitive.evaluate(ctx), this.locale ? this.locale.evaluate(ctx) : null);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.caseSensitive);\n fn(this.diacriticSensitive);\n if (this.locale) {\n fn(this.locale);\n }\n }\n\n outputDefined(): boolean {\n // Technically the set of possible outputs is the combinatoric set of Collators produced\n // by all possible outputs of locale/caseSensitive/diacriticSensitive\n // But for the primary use of Collators in comparison operators, we ignore the Collator's\n // possible outputs anyway, so we can get away with leaving this false for now.\n return false;\n }\n\n serialize(): SerializedExpression {\n const options = {};\n options['case-sensitive'] = this.caseSensitive.serialize();\n options['diacritic-sensitive'] = this.diacriticSensitive.serialize();\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n return [\"collator\", options];\n }\n}\n","// @flow\n\nimport {isValue} from '../values.js';\nimport type {Type} from '../types.js';\nimport {BooleanType} from '../types.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {GeoJSON, GeoJSONPolygon, GeoJSONMultiPolygon} from '@mapbox/geojson-types';\nimport Point from '@mapbox/point-geometry';\nimport type {CanonicalTileID} from '../../../source/tile_id.js';\n\ntype GeoJSONPolygons =| GeoJSONPolygon | GeoJSONMultiPolygon;\n\n// minX, minY, maxX, maxY\ntype BBox = [number, number, number, number];\nconst EXTENT = 8192;\n\nfunction updateBBox(bbox: BBox, coord: Point) {\n bbox[0] = Math.min(bbox[0], coord[0]);\n bbox[1] = Math.min(bbox[1], coord[1]);\n bbox[2] = Math.max(bbox[2], coord[0]);\n bbox[3] = Math.max(bbox[3], coord[1]);\n}\n\nfunction mercatorXfromLng(lng: number) {\n return (180 + lng) / 360;\n}\n\nfunction mercatorYfromLat(lat: number) {\n return (180 - (180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360)))) / 360;\n}\n\nfunction boxWithinBox(bbox1: BBox, bbox2: BBox) {\n if (bbox1[0] <= bbox2[0]) return false;\n if (bbox1[2] >= bbox2[2]) return false;\n if (bbox1[1] <= bbox2[1]) return false;\n if (bbox1[3] >= bbox2[3]) return false;\n return true;\n}\n\nfunction getTileCoordinates(p, canonical: CanonicalTileID) {\n const x = mercatorXfromLng(p[0]);\n const y = mercatorYfromLat(p[1]);\n const tilesAtZoom = Math.pow(2, canonical.z);\n return [Math.round(x * tilesAtZoom * EXTENT), Math.round(y * tilesAtZoom * EXTENT)];\n}\n\nfunction onBoundary(p, p1, p2) {\n const x1 = p[0] - p1[0];\n const y1 = p[1] - p1[1];\n const x2 = p[0] - p2[0];\n const y2 = p[1] - p2[1];\n return (x1 * y2 - x2 * y1 === 0) && (x1 * x2 <= 0) && (y1 * y2 <= 0);\n}\n\nfunction rayIntersect(p, p1, p2) {\n return ((p1[1] > p[1]) !== (p2[1] > p[1])) && (p[0] < (p2[0] - p1[0]) * (p[1] - p1[1]) / (p2[1] - p1[1]) + p1[0]);\n}\n\n// ray casting algorithm for detecting if point is in polygon\nfunction pointWithinPolygon(point, rings) {\n let inside = false;\n for (let i = 0, len = rings.length; i < len; i++) {\n const ring = rings[i];\n for (let j = 0, len2 = ring.length; j < len2 - 1; j++) {\n if (onBoundary(point, ring[j], ring[j + 1])) return false;\n if (rayIntersect(point, ring[j], ring[j + 1])) inside = !inside;\n }\n }\n return inside;\n}\n\nfunction pointWithinPolygons(point, polygons) {\n for (let i = 0; i < polygons.length; i++) {\n if (pointWithinPolygon(point, polygons[i])) return true;\n }\n return false;\n}\n\nfunction perp(v1, v2) {\n return (v1[0] * v2[1] - v1[1] * v2[0]);\n}\n\n// check if p1 and p2 are in different sides of line segment q1->q2\nfunction twoSided(p1, p2, q1, q2) {\n // q1->p1 (x1, y1), q1->p2 (x2, y2), q1->q2 (x3, y3)\n const x1 = p1[0] - q1[0];\n const y1 = p1[1] - q1[1];\n const x2 = p2[0] - q1[0];\n const y2 = p2[1] - q1[1];\n const x3 = q2[0] - q1[0];\n const y3 = q2[1] - q1[1];\n const det1 = (x1 * y3 - x3 * y1);\n const det2 = (x2 * y3 - x3 * y2);\n if ((det1 > 0 && det2 < 0) || (det1 < 0 && det2 > 0)) return true;\n return false;\n}\n// a, b are end points for line segment1, c and d are end points for line segment2\nfunction lineIntersectLine(a, b, c, d) {\n // check if two segments are parallel or not\n // precondition is end point a, b is inside polygon, if line a->b is\n // parallel to polygon edge c->d, then a->b won't intersect with c->d\n const vectorP = [b[0] - a[0], b[1] - a[1]];\n const vectorQ = [d[0] - c[0], d[1] - c[1]];\n if (perp(vectorQ, vectorP) === 0) return false;\n\n // If lines are intersecting with each other, the relative location should be:\n // a and b lie in different sides of segment c->d\n // c and d lie in different sides of segment a->b\n if (twoSided(a, b, c, d) && twoSided(c, d, a, b)) return true;\n return false;\n}\n\nfunction lineIntersectPolygon(p1, p2, polygon) {\n for (const ring of polygon) {\n // loop through every edge of the ring\n for (let j = 0; j < ring.length - 1; ++j) {\n if (lineIntersectLine(p1, p2, ring[j], ring[j + 1])) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction lineStringWithinPolygon(line, polygon) {\n // First, check if geometry points of line segments are all inside polygon\n for (let i = 0; i < line.length; ++i) {\n if (!pointWithinPolygon(line[i], polygon)) {\n return false;\n }\n }\n\n // Second, check if there is line segment intersecting polygon edge\n for (let i = 0; i < line.length - 1; ++i) {\n if (lineIntersectPolygon(line[i], line[i + 1], polygon)) {\n return false;\n }\n }\n return true;\n}\n\nfunction lineStringWithinPolygons(line, polygons) {\n for (let i = 0; i < polygons.length; i++) {\n if (lineStringWithinPolygon(line, polygons[i])) return true;\n }\n return false;\n}\n\nfunction getTilePolygon(coordinates, bbox: BBox, canonical: CanonicalTileID) {\n const polygon = [];\n for (let i = 0; i < coordinates.length; i++) {\n const ring = [];\n for (let j = 0; j < coordinates[i].length; j++) {\n const coord = getTileCoordinates(coordinates[i][j], canonical);\n updateBBox(bbox, coord);\n ring.push(coord);\n }\n polygon.push(ring);\n }\n return polygon;\n}\n\nfunction getTilePolygons(coordinates, bbox, canonical: CanonicalTileID) {\n const polygons = [];\n for (let i = 0; i < coordinates.length; i++) {\n const polygon = getTilePolygon(coordinates[i], bbox, canonical);\n polygons.push(polygon);\n }\n return polygons;\n}\n\nfunction updatePoint(p, bbox, polyBBox, worldSize) {\n if (p[0] < polyBBox[0] || p[0] > polyBBox[2]) {\n const halfWorldSize = worldSize * 0.5;\n let shift = (p[0] - polyBBox[0] > halfWorldSize) ? -worldSize : (polyBBox[0] - p[0] > halfWorldSize) ? worldSize : 0;\n if (shift === 0) {\n shift = (p[0] - polyBBox[2] > halfWorldSize) ? -worldSize : (polyBBox[2] - p[0] > halfWorldSize) ? worldSize : 0;\n }\n p[0] += shift;\n }\n updateBBox(bbox, p);\n}\n\nfunction resetBBox(bbox) {\n bbox[0] = bbox[1] = Infinity;\n bbox[2] = bbox[3] = -Infinity;\n}\n\nfunction getTilePoints(geometry, pointBBox, polyBBox, canonical: CanonicalTileID) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tilePoints = [];\n if (!geometry) return tilePoints;\n for (const points of geometry) {\n for (const point of points) {\n const p = [point.x + shifts[0], point.y + shifts[1]];\n updatePoint(p, pointBBox, polyBBox, worldSize);\n tilePoints.push(p);\n }\n }\n return tilePoints;\n}\n\nfunction getTileLines(geometry, lineBBox, polyBBox, canonical: CanonicalTileID) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tileLines = [];\n if (!geometry) return tileLines;\n for (const line of geometry) {\n const tileLine = [];\n for (const point of line) {\n const p = [point.x + shifts[0], point.y + shifts[1]];\n updateBBox(lineBBox, p);\n tileLine.push(p);\n }\n tileLines.push(tileLine);\n }\n if (lineBBox[2] - lineBBox[0] <= worldSize / 2) {\n resetBBox(lineBBox);\n for (const line of tileLines) {\n for (const p of line) {\n updatePoint(p, lineBBox, polyBBox, worldSize);\n }\n }\n }\n return tileLines;\n}\n\nfunction pointsWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPolygons) {\n const pointBBox = [Infinity, Infinity, -Infinity, -Infinity];\n const polyBBox = [Infinity, Infinity, -Infinity, -Infinity];\n\n const canonical = ctx.canonicalID();\n if (!canonical) {\n return false;\n }\n\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox)) return false;\n\n for (const point of tilePoints) {\n if (!pointWithinPolygon(point, tilePolygon)) return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox)) return false;\n\n for (const point of tilePoints) {\n if (!pointWithinPolygons(point, tilePolygons)) return false;\n }\n }\n\n return true;\n}\n\nfunction linesWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPolygons) {\n const lineBBox = [Infinity, Infinity, -Infinity, -Infinity];\n const polyBBox = [Infinity, Infinity, -Infinity, -Infinity];\n\n const canonical = ctx.canonicalID();\n if (!canonical) {\n return false;\n }\n\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox)) return false;\n\n for (const line of tileLines) {\n if (!lineStringWithinPolygon(line, tilePolygon)) return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox)) return false;\n\n for (const line of tileLines) {\n if (!lineStringWithinPolygons(line, tilePolygons)) return false;\n }\n }\n return true;\n}\n\nclass Within implements Expression {\n type: Type;\n geojson: GeoJSON\n geometries: GeoJSONPolygons;\n\n constructor(geojson: GeoJSON, geometries: GeoJSONPolygons) {\n this.type = BooleanType;\n this.geojson = geojson;\n this.geometries = geometries;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Within {\n if (args.length !== 2)\n return context.error(`'within' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n if (isValue(args[1])) {\n const geojson = (args[1]: Object);\n if (geojson.type === 'FeatureCollection') {\n for (let i = 0; i < geojson.features.length; ++i) {\n const type = geojson.features[i].geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.features[i].geometry);\n }\n }\n } else if (geojson.type === 'Feature') {\n const type = geojson.geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.geometry);\n }\n } else if (geojson.type === 'Polygon' || geojson.type === 'MultiPolygon') {\n return new Within(geojson, geojson);\n }\n }\n return context.error(`'within' expression requires valid geojson object that contains polygon geometry type.`);\n }\n\n evaluate(ctx: EvaluationContext): boolean {\n if (ctx.geometry() != null && ctx.canonicalID() != null) {\n if (ctx.geometryType() === 'Point') {\n return pointsWithinPolygons(ctx, this.geometries);\n } else if (ctx.geometryType() === 'LineString') {\n return linesWithinPolygons(ctx, this.geometries);\n }\n }\n return false;\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): SerializedExpression {\n return [\"within\", this.geojson];\n }\n\n}\n\nexport default Within;\n","// @flow\n\nimport CompoundExpression from './compound_expression.js';\nimport Within from './definitions/within.js';\nimport type {Expression} from './expression.js';\n\nfunction isFeatureConstant(e: Expression): boolean {\n if (e instanceof CompoundExpression) {\n if (e.name === 'get' && e.args.length === 1) {\n return false;\n } else if (e.name === 'feature-state') {\n return false;\n } else if (e.name === 'has' && e.args.length === 1) {\n return false;\n } else if (\n e.name === 'properties' ||\n e.name === 'geometry-type' ||\n e.name === 'id'\n ) {\n return false;\n } else if (/^filter-/.test(e.name)) {\n return false;\n }\n }\n\n if (e instanceof Within) {\n return false;\n }\n\n let result = true;\n e.eachChild(arg => {\n if (result && !isFeatureConstant(arg)) { result = false; }\n });\n return result;\n}\n\nfunction isStateConstant(e: Expression): boolean {\n if (e instanceof CompoundExpression) {\n if (e.name === 'feature-state') {\n return false;\n }\n }\n let result = true;\n e.eachChild(arg => {\n if (result && !isStateConstant(arg)) { result = false; }\n });\n return result;\n}\n\nfunction isGlobalPropertyConstant(e: Expression, properties: Array<string>): boolean {\n if (e instanceof CompoundExpression && properties.indexOf(e.name) >= 0) { return false; }\n let result = true;\n e.eachChild((arg) => {\n if (result && !isGlobalPropertyConstant(arg, properties)) { result = false; }\n });\n return result;\n}\n\nexport {isFeatureConstant, isGlobalPropertyConstant, isStateConstant};\n","// @flow\n\nimport type {Type} from '../types.js';\nimport type {Expression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\n\nclass Var implements Expression {\n type: Type;\n name: string;\n boundExpression: Expression;\n\n constructor(name: string, boundExpression: Expression) {\n this.type = boundExpression.type;\n this.name = name;\n this.boundExpression = boundExpression;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): void | Var {\n if (args.length !== 2 || typeof args[1] !== 'string')\n return context.error(`'var' expression requires exactly one string literal argument.`);\n\n const name = args[1];\n if (!context.scope.has(name)) {\n return context.error(`Unknown variable \"${name}\". Make sure \"${name}\" has been bound in an enclosing \"let\" expression before using it.`, 1);\n }\n\n return new Var(name, context.scope.get(name));\n }\n\n evaluate(ctx: EvaluationContext): any {\n return this.boundExpression.evaluate(ctx);\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): Array<string> {\n return [\"var\", this.name];\n }\n}\n\nexport default Var;\n","// @flow\n\nimport Scope from './scope.js';\nimport {checkSubtype} from './types.js';\nimport ParsingError from './parsing_error.js';\nimport Literal from './definitions/literal.js';\nimport Assertion from './definitions/assertion.js';\nimport Coercion from './definitions/coercion.js';\nimport EvaluationContext from './evaluation_context.js';\nimport CompoundExpression from './compound_expression.js';\nimport CollatorExpression from './definitions/collator.js';\nimport Within from './definitions/within.js';\nimport {isGlobalPropertyConstant, isFeatureConstant} from './is_constant.js';\nimport Var from './definitions/var.js';\n\nimport type {Expression, ExpressionRegistry} from './expression.js';\nimport type {Type} from './types.js';\n\n/**\n * State associated parsing at a given point in an expression tree.\n * @private\n */\nclass ParsingContext {\n registry: ExpressionRegistry;\n path: Array<number>;\n key: string;\n scope: Scope;\n errors: Array<ParsingError>;\n\n // The expected type of this expression. Provided only to allow Expression\n // implementations to infer argument types: Expression#parse() need not\n // check that the output type of the parsed expression matches\n // `expectedType`.\n expectedType: ?Type;\n\n constructor(\n registry: ExpressionRegistry,\n path: Array<number> = [],\n expectedType: ?Type,\n scope: Scope = new Scope(),\n errors: Array<ParsingError> = []\n ) {\n this.registry = registry;\n this.path = path;\n this.key = path.map(part => `[${part}]`).join('');\n this.scope = scope;\n this.errors = errors;\n this.expectedType = expectedType;\n }\n\n /**\n * @param expr the JSON expression to parse\n * @param index the optional argument index if this expression is an argument of a parent expression that's being parsed\n * @param options\n * @param options.omitTypeAnnotations set true to omit inferred type annotations. Caller beware: with this option set, the parsed expression's type will NOT satisfy `expectedType` if it would normally be wrapped in an inferred annotation.\n * @private\n */\n parse(\n expr: mixed,\n index?: number,\n expectedType?: ?Type,\n bindings?: Array<[string, Expression]>,\n options: {typeAnnotation?: 'assert' | 'coerce' | 'omit'} = {}\n ): ?Expression {\n if (index) {\n return this.concat(index, expectedType, bindings)._parse(expr, options);\n }\n return this._parse(expr, options);\n }\n\n _parse(expr: mixed, options: {typeAnnotation?: 'assert' | 'coerce' | 'omit'}): ?Expression {\n if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') {\n expr = ['literal', expr];\n }\n\n function annotate(parsed, type, typeAnnotation: 'assert' | 'coerce' | 'omit') {\n if (typeAnnotation === 'assert') {\n return new Assertion(type, [parsed]);\n } else if (typeAnnotation === 'coerce') {\n return new Coercion(type, [parsed]);\n } else {\n return parsed;\n }\n }\n\n if (Array.isArray(expr)) {\n if (expr.length === 0) {\n return this.error(`Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].`);\n }\n\n const op = expr[0];\n if (typeof op !== 'string') {\n this.error(`Expression name must be a string, but found ${typeof op} instead. If you wanted a literal array, use [\"literal\", [...]].`, 0);\n return null;\n }\n\n const Expr = this.registry[op];\n if (Expr) {\n let parsed = Expr.parse(expr, this);\n if (!parsed) return null;\n\n if (this.expectedType) {\n const expected = this.expectedType;\n const actual = parsed.type;\n\n // When we expect a number, string, boolean, or array but have a value, wrap it in an assertion.\n // When we expect a color or formatted string, but have a string or value, wrap it in a coercion.\n // Otherwise, we do static type-checking.\n //\n // These behaviors are overridable for:\n // * The \"coalesce\" operator, which needs to omit type annotations.\n // * String-valued properties (e.g. `text-field`), where coercion is more convenient than assertion.\n //\n if ((expected.kind === 'string' || expected.kind === 'number' || expected.kind === 'boolean' || expected.kind === 'object' || expected.kind === 'array') && actual.kind === 'value') {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'assert');\n } else if ((expected.kind === 'color' || expected.kind === 'formatted' || expected.kind === 'resolvedImage') && (actual.kind === 'value' || actual.kind === 'string')) {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n } else if (this.checkSubtype(expected, actual)) {\n return null;\n }\n }\n\n // If an expression's arguments are all literals, we can evaluate\n // it immediately and replace it with a literal value in the\n // parsed/compiled result. Expressions that expect an image should\n // not be resolved here so we can later get the available images.\n if (!(parsed instanceof Literal) && (parsed.type.kind !== 'resolvedImage') && isConstant(parsed)) {\n const ec = new EvaluationContext();\n try {\n parsed = new Literal(parsed.type, parsed.evaluate(ec));\n } catch (e) {\n this.error(e.message);\n return null;\n }\n }\n\n return parsed;\n }\n\n return this.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n } else if (typeof expr === 'undefined') {\n return this.error(`'undefined' value invalid. Use null instead.`);\n } else if (typeof expr === 'object') {\n return this.error(`Bare objects invalid. Use [\"literal\", {...}] instead.`);\n } else {\n return this.error(`Expected an array, but found ${typeof expr} instead.`);\n }\n }\n\n /**\n * Returns a copy of this context suitable for parsing the subexpression at\n * index `index`, optionally appending to 'let' binding map.\n *\n * Note that `errors` property, intended for collecting errors while\n * parsing, is copied by reference rather than cloned.\n * @private\n */\n concat(index: number, expectedType?: ?Type, bindings?: Array<[string, Expression]>): ParsingContext {\n const path = typeof index === 'number' ? this.path.concat(index) : this.path;\n const scope = bindings ? this.scope.concat(bindings) : this.scope;\n return new ParsingContext(\n this.registry,\n path,\n expectedType || null,\n scope,\n this.errors\n );\n }\n\n /**\n * Push a parsing (or type checking) error into the `this.errors`\n * @param error The message\n * @param keys Optionally specify the source of the error at a child\n * of the current expression at `this.key`.\n * @private\n */\n error(error: string, ...keys: Array<number>) {\n const key = `${this.key}${keys.map(k => `[${k}]`).join('')}`;\n this.errors.push(new ParsingError(key, error));\n }\n\n /**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message and also pushes it to `this.errors`.\n */\n checkSubtype(expected: Type, t: Type): ?string {\n const error = checkSubtype(expected, t);\n if (error) this.error(error);\n return error;\n }\n}\n\nexport default ParsingContext;\n\nfunction isConstant(expression: Expression) {\n if (expression instanceof Var) {\n return isConstant(expression.boundExpression);\n } else if (expression instanceof CompoundExpression && expression.name === 'error') {\n return false;\n } else if (expression instanceof CollatorExpression) {\n // Although the results of a Collator expression with fixed arguments\n // generally shouldn't change between executions, we can't serialize them\n // as constant expressions because results change based on environment.\n return false;\n } else if (expression instanceof Within) {\n return false;\n }\n\n const isTypeAnnotation = expression instanceof Coercion ||\n expression instanceof Assertion;\n\n let childrenConstant = true;\n expression.eachChild(child => {\n // We can _almost_ assume that if `expressions` children are constant,\n // they would already have been evaluated to Literal values when they\n // were parsed. Type annotations are the exception, because they might\n // have been inferred and added after a child was parsed.\n\n // So we recurse into isConstant() for the children of type annotations,\n // but otherwise simply check whether they are Literals.\n if (isTypeAnnotation) {\n childrenConstant = childrenConstant && isConstant(child);\n } else {\n childrenConstant = childrenConstant && child instanceof Literal;\n }\n });\n if (!childrenConstant) {\n return false;\n }\n\n return isFeatureConstant(expression) &&\n isGlobalPropertyConstant(expression, ['zoom', 'heatmap-density', 'line-progress', 'sky-radial-progress', 'accumulated', 'is-supported-script', 'pitch', 'distance-from-center']);\n}\n","// @flow\n\nimport RuntimeError from './runtime_error.js';\n\nimport type {Expression} from './expression.js';\n\nexport type Stops = Array<[number, Expression]>;\n\n/**\n * Returns the index of the last stop <= input, or 0 if it doesn't exist.\n * @private\n */\nexport function findStopLessThanOrEqualTo(stops: Array<number>, input: number): number {\n const lastIndex = stops.length - 1;\n let lowerIndex = 0;\n let upperIndex = lastIndex;\n let currentIndex = 0;\n let currentValue, nextValue;\n\n while (lowerIndex <= upperIndex) {\n currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n currentValue = stops[currentIndex];\n nextValue = stops[currentIndex + 1];\n\n if (currentValue <= input) {\n if (currentIndex === lastIndex || input < nextValue) { // Search complete\n return currentIndex;\n }\n\n lowerIndex = currentIndex + 1;\n } else if (currentValue > input) {\n upperIndex = currentIndex - 1;\n } else {\n throw new RuntimeError('Input is not a number.');\n }\n }\n\n return 0;\n}\n","// @flow\n\nimport {NumberType} from '../types.js';\n\nimport {findStopLessThanOrEqualTo} from '../stops.js';\n\nimport type {Stops} from '../stops.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nclass Step implements Expression {\n type: Type;\n\n input: Expression;\n labels: Array<number>;\n outputs: Array<Expression>;\n\n constructor(type: Type, input: Expression, stops: Stops) {\n this.type = type;\n this.input = input;\n\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Step {\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n }\n\n if ((args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n\n const input = context.parse(args[1], 1, NumberType);\n if (!input) return null;\n\n const stops: Stops = [];\n\n let outputType: Type = (null: any);\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n for (let i = 1; i < args.length; i += 2) {\n const label = i === 1 ? -Infinity : args[i];\n const value = args[i + 1];\n\n const labelKey = i;\n const valueKey = i + 1;\n\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n\n return new Step(outputType, input, stops);\n }\n\n evaluate(ctx: EvaluationContext): any {\n const labels = this.labels;\n const outputs = this.outputs;\n\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n\n const value = ((this.input.evaluate(ctx): any): number);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n\n const index = findStopLessThanOrEqualTo(labels, value);\n return outputs[index].evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined());\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"step\", this.input.serialize()];\n for (let i = 0; i < this.labels.length; i++) {\n if (i > 0) {\n serialized.push(this.labels[i]);\n }\n serialized.push(this.outputs[i].serialize());\n }\n return serialized;\n }\n}\n\nexport default Step;\n","// @flow\n\nimport Color from './color.js';\n\nexport function number(a: number, b: number, t: number): number {\n return (a * (1 - t)) + (b * t);\n}\n\nexport function color(from: Color, to: Color, t: number): Color {\n return new Color(\n number(from.r, to.r, t),\n number(from.g, to.g, t),\n number(from.b, to.b, t),\n number(from.a, to.a, t)\n );\n}\n\nexport function array(from: Array<number>, to: Array<number>, t: number): Array<number> {\n return from.map((d, i) => {\n return number(d, to[i], t);\n });\n}\n","// @flow\n\nimport Color from './color.js';\n\nimport {number as interpolateNumber} from './interpolate.js';\n\ntype LABColor = {\n l: number,\n a: number,\n b: number,\n alpha: number\n};\n\ntype HCLColor = {\n h: number,\n c: number,\n l: number,\n alpha: number\n};\n\n// Constants\nconst Xn = 0.950470, // D65 standard referent\n Yn = 1,\n Zn = 1.088830,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1,\n deg2rad = Math.PI / 180,\n rad2deg = 180 / Math.PI;\n\n// Utilities\nfunction xyz2lab(t: number) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t: number) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction xyz2rgb(x: number) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2xyz(x: number) {\n x /= 255;\n return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\n// LAB\nfunction rgbToLab(rgbColor: Color): LABColor {\n const b = rgb2xyz(rgbColor.r),\n a = rgb2xyz(rgbColor.g),\n l = rgb2xyz(rgbColor.b),\n x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n\n return {\n l: 116 * y - 16,\n a: 500 * (x - y),\n b: 200 * (y - z),\n alpha: rgbColor.a\n };\n}\n\nfunction labToRgb(labColor: LABColor): Color {\n let y = (labColor.l + 16) / 116,\n x = isNaN(labColor.a) ? y : y + labColor.a / 500,\n z = isNaN(labColor.b) ? y : y - labColor.b / 200;\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return new Color(\n xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),\n xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z),\n labColor.alpha\n );\n}\n\nfunction interpolateLab(from: LABColor, to: LABColor, t: number): LABColor {\n return {\n l: interpolateNumber(from.l, to.l, t),\n a: interpolateNumber(from.a, to.a, t),\n b: interpolateNumber(from.b, to.b, t),\n alpha: interpolateNumber(from.alpha, to.alpha, t)\n };\n}\n\n// HCL\nfunction rgbToHcl(rgbColor: Color): HCLColor {\n const {l, a, b} = rgbToLab(rgbColor);\n const h = Math.atan2(b, a) * rad2deg;\n return {\n h: h < 0 ? h + 360 : h,\n c: Math.sqrt(a * a + b * b),\n l,\n alpha: rgbColor.a\n };\n}\n\nfunction hclToRgb(hclColor: HCLColor): Color {\n const h = hclColor.h * deg2rad,\n c = hclColor.c,\n l = hclColor.l;\n return labToRgb({\n l,\n a: Math.cos(h) * c,\n b: Math.sin(h) * c,\n alpha: hclColor.alpha\n });\n}\n\nfunction interpolateHue(a: number, b: number, t: number) {\n const d = b - a;\n return a + t * (d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d);\n}\n\nfunction interpolateHcl(from: HCLColor, to: HCLColor, t: number): HCLColor {\n return {\n h: interpolateHue(from.h, to.h, t),\n c: interpolateNumber(from.c, to.c, t),\n l: interpolateNumber(from.l, to.l, t),\n alpha: interpolateNumber(from.alpha, to.alpha, t)\n };\n}\n\nexport const lab = {\n forward: rgbToLab,\n reverse: labToRgb,\n interpolate: interpolateLab\n};\n\nexport const hcl = {\n forward: rgbToHcl,\n reverse: hclToRgb,\n interpolate: interpolateHcl\n};\n","// @flow\n\nimport UnitBezier from '@mapbox/unitbezier';\n\nimport * as interpolate from '../../util/interpolate.js';\nimport {toString, NumberType, ColorType} from '../types.js';\nimport {findStopLessThanOrEqualTo} from '../stops.js';\nimport {hcl, lab} from '../../util/color_spaces.js';\nimport Color from '../../util/color.js';\n\nimport type {Stops} from '../stops.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nexport type InterpolationType =\n { name: 'linear' } |\n { name: 'exponential', base: number } |\n { name: 'cubic-bezier', controlPoints: [number, number, number, number] };\n\nclass Interpolate implements Expression {\n type: Type;\n\n operator: 'interpolate' | 'interpolate-hcl' | 'interpolate-lab';\n interpolation: InterpolationType;\n input: Expression;\n labels: Array<number>;\n outputs: Array<Expression>;\n\n constructor(type: Type, operator: 'interpolate' | 'interpolate-hcl' | 'interpolate-lab', interpolation: InterpolationType, input: Expression, stops: Stops) {\n this.type = type;\n this.operator = operator;\n this.interpolation = interpolation;\n this.input = input;\n\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n\n static interpolationFactor(interpolation: InterpolationType, input: number, lower: number, upper: number): number {\n let t = 0;\n if (interpolation.name === 'exponential') {\n t = exponentialInterpolation(input, interpolation.base, lower, upper);\n } else if (interpolation.name === 'linear') {\n t = exponentialInterpolation(input, 1, lower, upper);\n } else if (interpolation.name === 'cubic-bezier') {\n const c = interpolation.controlPoints;\n const ub = new UnitBezier(c[0], c[1], c[2], c[3]);\n t = ub.solve(exponentialInterpolation(input, 1, lower, upper));\n }\n return t;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Interpolate {\n let [operator, interpolation, input, ...rest] = args;\n\n if (!Array.isArray(interpolation) || interpolation.length === 0) {\n return context.error(`Expected an interpolation type expression.`, 1);\n }\n\n if (interpolation[0] === 'linear') {\n interpolation = {name: 'linear'};\n } else if (interpolation[0] === 'exponential') {\n const base = interpolation[1];\n if (typeof base !== 'number')\n return context.error(`Exponential interpolation requires a numeric base.`, 1, 1);\n interpolation = {\n name: 'exponential',\n base\n };\n } else if (interpolation[0] === 'cubic-bezier') {\n const controlPoints = interpolation.slice(1);\n if (\n controlPoints.length !== 4 ||\n controlPoints.some(t => typeof t !== 'number' || t < 0 || t > 1)\n ) {\n return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1);\n }\n\n interpolation = {\n name: 'cubic-bezier',\n controlPoints: (controlPoints: any)\n };\n } else {\n return context.error(`Unknown interpolation type ${String(interpolation[0])}`, 1, 0);\n }\n\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n }\n\n if ((args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n\n input = context.parse(input, 2, NumberType);\n if (!input) return null;\n\n const stops: Stops = [];\n\n let outputType: Type = (null: any);\n if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') {\n outputType = ColorType;\n } else if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n for (let i = 0; i < rest.length; i += 2) {\n const label = rest[i];\n const value = rest[i + 1];\n\n const labelKey = i + 3;\n const valueKey = i + 4;\n\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n\n if (outputType.kind !== 'number' &&\n outputType.kind !== 'color' &&\n !(\n outputType.kind === 'array' &&\n outputType.itemType.kind === 'number' &&\n typeof outputType.N === 'number'\n )\n ) {\n return context.error(`Type ${toString(outputType)} is not interpolatable.`);\n }\n\n return new Interpolate(outputType, (operator: any), interpolation, input, stops);\n }\n\n evaluate(ctx: EvaluationContext): Color {\n const labels = this.labels;\n const outputs = this.outputs;\n\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n\n const value = ((this.input.evaluate(ctx): any): number);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n\n const index = findStopLessThanOrEqualTo(labels, value);\n const lower = labels[index];\n const upper = labels[index + 1];\n const t = Interpolate.interpolationFactor(this.interpolation, value, lower, upper);\n\n const outputLower = outputs[index].evaluate(ctx);\n const outputUpper = outputs[index + 1].evaluate(ctx);\n\n if (this.operator === 'interpolate') {\n return (interpolate[this.type.kind.toLowerCase()]: any)(outputLower, outputUpper, t); // eslint-disable-line import/namespace\n } else if (this.operator === 'interpolate-hcl') {\n return hcl.reverse(hcl.interpolate(hcl.forward(outputLower), hcl.forward(outputUpper), t));\n } else {\n return lab.reverse(lab.interpolate(lab.forward(outputLower), lab.forward(outputUpper), t));\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined());\n }\n\n serialize(): SerializedExpression {\n let interpolation;\n if (this.interpolation.name === 'linear') {\n interpolation = [\"linear\"];\n } else if (this.interpolation.name === 'exponential') {\n if (this.interpolation.base === 1) {\n interpolation = [\"linear\"];\n } else {\n interpolation = [\"exponential\", this.interpolation.base];\n }\n } else {\n interpolation = [\"cubic-bezier\" ].concat(this.interpolation.controlPoints);\n }\n\n const serialized = [this.operator, interpolation, this.input.serialize()];\n\n for (let i = 0; i < this.labels.length; i++) {\n serialized.push(\n this.labels[i],\n this.outputs[i].serialize()\n );\n }\n return serialized;\n }\n}\n\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n * How it works: Two consecutive stop values define a (scaled and shifted) exponential function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n*/\nfunction exponentialInterpolation(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n\nexport default Interpolate;\n","// @flow\n\nimport assert from 'assert';\n\nimport {checkSubtype, ValueType} from '../types.js';\nimport ResolvedImage from '../types/resolved_image.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nclass Coalesce implements Expression {\n type: Type;\n args: Array<Expression>;\n\n constructor(type: Type, args: Array<Expression>) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Coalesce {\n if (args.length < 2) {\n return context.error(\"Expectected at least one argument.\");\n }\n let outputType: Type = (null: any);\n const expectedType = context.expectedType;\n if (expectedType && expectedType.kind !== 'value') {\n outputType = expectedType;\n }\n const parsedArgs = [];\n\n for (const arg of args.slice(1)) {\n const parsed = context.parse(arg, 1 + parsedArgs.length, outputType, undefined, {typeAnnotation: 'omit'});\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n parsedArgs.push(parsed);\n }\n assert(outputType);\n\n // Above, we parse arguments without inferred type annotation so that\n // they don't produce a runtime error for `null` input, which would\n // preempt the desired null-coalescing behavior.\n // Thus, if any of our arguments would have needed an annotation, we\n // need to wrap the enclosing coalesce expression with it instead.\n const needsAnnotation = expectedType &&\n parsedArgs.some(arg => checkSubtype(expectedType, arg.type));\n\n return needsAnnotation ?\n new Coalesce(ValueType, parsedArgs) :\n new Coalesce((outputType: any), parsedArgs);\n }\n\n evaluate(ctx: EvaluationContext): any | null {\n let result = null;\n let argCount = 0;\n let firstImage;\n for (const arg of this.args) {\n argCount++;\n result = arg.evaluate(ctx);\n // we need to keep track of the first requested image in a coalesce statement\n // if coalesce can't find a valid image, we return the first image so styleimagemissing can fire\n if (result && result instanceof ResolvedImage && !result.available) {\n // set to first image\n if (!firstImage) {\n firstImage = result;\n }\n result = null;\n // if we reach the end, return the first image\n if (argCount === this.args.length) {\n return firstImage;\n }\n }\n\n if (result !== null) break;\n }\n return result;\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"coalesce\"];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Coalesce;\n","// @flow\n\nimport type {Type} from '../types.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\n\nclass Let implements Expression {\n type: Type;\n bindings: Array<[string, Expression]>;\n result: Expression;\n\n constructor(bindings: Array<[string, Expression]>, result: Expression) {\n this.type = result.type;\n this.bindings = [].concat(bindings);\n this.result = result;\n }\n\n evaluate(ctx: EvaluationContext): any {\n return this.result.evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n for (const binding of this.bindings) {\n fn(binding[1]);\n }\n fn(this.result);\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Let {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found ${args.length - 1} instead.`);\n\n const bindings: Array<[string, Expression]> = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const name = args[i];\n\n if (typeof name !== 'string') {\n return context.error(`Expected string, but found ${typeof name} instead.`, i);\n }\n\n if (/[^a-zA-Z0-9_]/.test(name)) {\n return context.error(`Variable names must contain only alphanumeric characters or '_'.`, i);\n }\n\n const value = context.parse(args[i + 1], i + 1);\n if (!value) return null;\n\n bindings.push([name, value]);\n }\n\n const result = context.parse(args[args.length - 1], args.length - 1, context.expectedType, bindings);\n if (!result) return null;\n\n return new Let(bindings, result);\n }\n\n outputDefined(): boolean {\n return this.result.outputDefined();\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"let\"];\n for (const [name, expr] of this.bindings) {\n serialized.push(name, expr.serialize());\n }\n serialized.push(this.result.serialize());\n return serialized;\n }\n}\n\nexport default Let;\n","// @flow\n\nimport {array, ValueType, NumberType} from '../types.js';\n\nimport RuntimeError from '../runtime_error.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type, ArrayType} from '../types.js';\nimport type {Value} from '../values.js';\n\nclass At implements Expression {\n type: Type;\n index: Expression;\n input: Expression;\n\n constructor(type: Type, index: Expression, input: Expression) {\n this.type = type;\n this.index = index;\n this.input = input;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?At {\n if (args.length !== 3)\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n\n const index = context.parse(args[1], 1, NumberType);\n const input = context.parse(args[2], 2, array(context.expectedType || ValueType));\n\n if (!index || !input) return null;\n\n const t: ArrayType = (input.type: any);\n return new At(t.itemType, index, input);\n }\n\n evaluate(ctx: EvaluationContext): Value {\n const index = ((this.index.evaluate(ctx): any): number);\n const array = ((this.input.evaluate(ctx): any): Array<Value>);\n\n if (index < 0) {\n throw new RuntimeError(`Array index out of bounds: ${index} < 0.`);\n }\n\n if (index >= array.length) {\n throw new RuntimeError(`Array index out of bounds: ${index} > ${array.length - 1}.`);\n }\n\n if (index !== Math.floor(index)) {\n throw new RuntimeError(`Array index must be an integer, but found ${index} instead.`);\n }\n\n return array[index];\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.index);\n fn(this.input);\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n return [\"at\", this.index.serialize(), this.input.serialize()];\n }\n}\n\nexport default At;\n","// @flow\n\nimport {BooleanType, StringType, ValueType, NullType, toString, NumberType, isValidType, isValidNativeType} from '../types.js';\nimport RuntimeError from '../runtime_error.js';\nimport {typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nclass In implements Expression {\n type: Type;\n needle: Expression;\n haystack: Expression;\n\n constructor(needle: Expression, haystack: Expression) {\n this.type = BooleanType;\n this.needle = needle;\n this.haystack = haystack;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?In {\n if (args.length !== 3) {\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n }\n\n const needle = context.parse(args[1], 1, ValueType);\n\n const haystack = context.parse(args[2], 2, ValueType);\n\n if (!needle || !haystack) return null;\n\n if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`);\n }\n\n return new In(needle, haystack);\n }\n\n evaluate(ctx: EvaluationContext): boolean {\n const needle = (this.needle.evaluate(ctx): any);\n const haystack = (this.haystack.evaluate(ctx): any);\n\n if (haystack == null) return false;\n\n if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) {\n throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${toString(typeOf(needle))} instead.`);\n }\n\n if (!isValidNativeType(haystack, ['string', 'array'])) {\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${toString(typeOf(haystack))} instead.`);\n }\n\n return haystack.indexOf(needle) >= 0;\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.needle);\n fn(this.haystack);\n }\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): SerializedExpression {\n return [\"in\", this.needle.serialize(), this.haystack.serialize()];\n }\n}\n\nexport default In;\n","// @flow\n\nimport {BooleanType, StringType, ValueType, NullType, toString, NumberType, isValidType, isValidNativeType} from '../types.js';\nimport RuntimeError from '../runtime_error.js';\nimport {typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nclass IndexOf implements Expression {\n type: Type;\n needle: Expression;\n haystack: Expression;\n fromIndex: ?Expression;\n\n constructor(needle: Expression, haystack: Expression, fromIndex?: Expression) {\n this.type = NumberType;\n this.needle = needle;\n this.haystack = haystack;\n this.fromIndex = fromIndex;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?IndexOf {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);\n }\n\n const needle = context.parse(args[1], 1, ValueType);\n\n const haystack = context.parse(args[2], 2, ValueType);\n\n if (!needle || !haystack) return null;\n if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`);\n }\n\n if (args.length === 4) {\n const fromIndex = context.parse(args[3], 3, NumberType);\n if (!fromIndex) return null;\n return new IndexOf(needle, haystack, fromIndex);\n } else {\n return new IndexOf(needle, haystack);\n }\n }\n\n evaluate(ctx: EvaluationContext): any {\n const needle = (this.needle.evaluate(ctx): any);\n const haystack = (this.haystack.evaluate(ctx): any);\n\n if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) {\n throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${toString(typeOf(needle))} instead.`);\n }\n\n if (!isValidNativeType(haystack, ['string', 'array'])) {\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${toString(typeOf(haystack))} instead.`);\n }\n\n if (this.fromIndex) {\n const fromIndex = (this.fromIndex.evaluate(ctx): number);\n return haystack.indexOf(needle, fromIndex);\n }\n\n return haystack.indexOf(needle);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.needle);\n fn(this.haystack);\n if (this.fromIndex) {\n fn(this.fromIndex);\n }\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n if (this.fromIndex != null && this.fromIndex !== undefined) {\n const fromIndex = this.fromIndex.serialize();\n return [\"index-of\", this.needle.serialize(), this.haystack.serialize(), fromIndex];\n }\n return [\"index-of\", this.needle.serialize(), this.haystack.serialize()];\n }\n}\n\nexport default IndexOf;\n","// @flow\n\nimport assert from 'assert';\n\nimport {typeOf} from '../values.js';\nimport {ValueType, type Type} from '../types.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\n\n// Map input label values to output expression index\ntype Cases = {[number | string]: number};\n\nclass Match implements Expression {\n type: Type;\n inputType: Type;\n\n input: Expression;\n cases: Cases;\n outputs: Array<Expression>;\n otherwise: Expression;\n\n constructor(inputType: Type, outputType: Type, input: Expression, cases: Cases, outputs: Array<Expression>, otherwise: Expression) {\n this.inputType = inputType;\n this.type = outputType;\n this.input = input;\n this.cases = cases;\n this.outputs = outputs;\n this.otherwise = otherwise;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Match {\n if (args.length < 5)\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n if (args.length % 2 !== 1)\n return context.error(`Expected an even number of arguments.`);\n\n let inputType;\n let outputType;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n const cases = {};\n const outputs = [];\n for (let i = 2; i < args.length - 1; i += 2) {\n let labels = args[i];\n const value = args[i + 1];\n\n if (!Array.isArray(labels)) {\n labels = [labels];\n }\n\n const labelContext = context.concat(i);\n if (labels.length === 0) {\n return labelContext.error('Expected at least one branch label.');\n }\n\n for (const label of labels) {\n if (typeof label !== 'number' && typeof label !== 'string') {\n return labelContext.error(`Branch labels must be numbers or strings.`);\n } else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) {\n return labelContext.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);\n\n } else if (typeof label === 'number' && Math.floor(label) !== label) {\n return labelContext.error(`Numeric branch labels must be integer values.`);\n\n } else if (!inputType) {\n inputType = typeOf(label);\n } else if (labelContext.checkSubtype(inputType, typeOf(label))) {\n return null;\n }\n\n if (typeof cases[String(label)] !== 'undefined') {\n return labelContext.error('Branch labels must be unique.');\n }\n\n cases[String(label)] = outputs.length;\n }\n\n const result = context.parse(value, i, outputType);\n if (!result) return null;\n outputType = outputType || result.type;\n outputs.push(result);\n }\n\n const input = context.parse(args[1], 1, ValueType);\n if (!input) return null;\n\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise) return null;\n\n assert(inputType && outputType);\n\n if (input.type.kind !== 'value' && context.concat(1).checkSubtype((inputType: any), input.type)) {\n return null;\n }\n\n return new Match((inputType: any), (outputType: any), input, cases, outputs, otherwise);\n }\n\n evaluate(ctx: EvaluationContext): any {\n const input = (this.input.evaluate(ctx): any);\n const output = (typeOf(input) === this.inputType && this.outputs[this.cases[input]]) || this.otherwise;\n return output.evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n this.outputs.forEach(fn);\n fn(this.otherwise);\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined()) && this.otherwise.outputDefined();\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"match\", this.input.serialize()];\n\n // Sort so serialization has an arbitrary defined order, even though\n // branch order doesn't affect evaluation\n const sortedLabels = Object.keys(this.cases).sort();\n\n // Group branches by unique match expression to support condensed\n // serializations of the form [case1, case2, ...] -> matchExpression\n const groupedByOutput: Array<[number, Array<number | string>]> = [];\n const outputLookup: {[index: number]: number} = {}; // lookup index into groupedByOutput for a given output expression\n for (const label of sortedLabels) {\n const outputIndex = outputLookup[this.cases[label]];\n if (outputIndex === undefined) {\n // First time seeing this output, add it to the end of the grouped list\n outputLookup[this.cases[label]] = groupedByOutput.length;\n groupedByOutput.push([this.cases[label], [label]]);\n } else {\n // We've seen this expression before, add the label to that output's group\n groupedByOutput[outputIndex][1].push(label);\n }\n }\n\n const coerceLabel = (label) => this.inputType.kind === 'number' ? Number(label) : label;\n\n for (const [outputIndex, labels] of groupedByOutput) {\n if (labels.length === 1) {\n // Only a single label matches this output expression\n serialized.push(coerceLabel(labels[0]));\n } else {\n // Array of literal labels pointing to this output expression\n serialized.push(labels.map(coerceLabel));\n }\n serialized.push(this.outputs[outputIndex].serialize());\n }\n serialized.push(this.otherwise.serialize());\n return serialized;\n }\n}\n\nexport default Match;\n","// @flow\n\nimport assert from 'assert';\n\nimport {BooleanType} from '../types.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\ntype Branches = Array<[Expression, Expression]>;\n\nclass Case implements Expression {\n type: Type;\n\n branches: Branches;\n otherwise: Expression;\n\n constructor(type: Type, branches: Branches, otherwise: Expression) {\n this.type = type;\n this.branches = branches;\n this.otherwise = otherwise;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Case {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`);\n if (args.length % 2 !== 0)\n return context.error(`Expected an odd number of arguments.`);\n\n let outputType: ?Type;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n const branches = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const test = context.parse(args[i], i, BooleanType);\n if (!test) return null;\n\n const result = context.parse(args[i + 1], i + 1, outputType);\n if (!result) return null;\n\n branches.push([test, result]);\n\n outputType = outputType || result.type;\n }\n\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise) return null;\n\n assert(outputType);\n return new Case((outputType: any), branches, otherwise);\n }\n\n evaluate(ctx: EvaluationContext): any {\n for (const [test, expression] of this.branches) {\n if (test.evaluate(ctx)) {\n return expression.evaluate(ctx);\n }\n }\n return this.otherwise.evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n for (const [test, expression] of this.branches) {\n fn(test);\n fn(expression);\n }\n fn(this.otherwise);\n }\n\n outputDefined(): boolean {\n return this.branches.every(([_, out]) => out.outputDefined()) && this.otherwise.outputDefined();\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"case\"];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Case;\n","// @flow\n\nimport {ValueType, NumberType, StringType, array, toString, isValidType, isValidNativeType} from '../types.js';\nimport RuntimeError from '../runtime_error.js';\nimport {typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nclass Slice implements Expression {\n type: Type;\n input: Expression;\n beginIndex: Expression;\n endIndex: ?Expression;\n\n constructor(type: Type, input: Expression, beginIndex: Expression, endIndex?: Expression) {\n this.type = type;\n this.input = input;\n this.beginIndex = beginIndex;\n this.endIndex = endIndex;\n\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Slice {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);\n }\n\n const input = context.parse(args[1], 1, ValueType);\n const beginIndex = context.parse(args[2], 2, NumberType);\n\n if (!input || !beginIndex) return null;\n\n if (!isValidType(input.type, [array(ValueType), StringType, ValueType])) {\n return context.error(`Expected first argument to be of type array or string, but found ${toString(input.type)} instead`);\n }\n\n if (args.length === 4) {\n const endIndex = context.parse(args[3], 3, NumberType);\n if (!endIndex) return null;\n return new Slice(input.type, input, beginIndex, endIndex);\n } else {\n return new Slice(input.type, input, beginIndex);\n }\n }\n\n evaluate(ctx: EvaluationContext): any {\n const input = (this.input.evaluate(ctx): any);\n const beginIndex = (this.beginIndex.evaluate(ctx): number);\n\n if (!isValidNativeType(input, ['string', 'array'])) {\n throw new RuntimeError(`Expected first argument to be of type array or string, but found ${toString(typeOf(input))} instead.`);\n }\n\n if (this.endIndex) {\n const endIndex = (this.endIndex.evaluate(ctx): number);\n return input.slice(beginIndex, endIndex);\n }\n\n return input.slice(beginIndex);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n fn(this.beginIndex);\n if (this.endIndex) {\n fn(this.endIndex);\n }\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n if (this.endIndex != null && this.endIndex !== undefined) {\n const endIndex = this.endIndex.serialize();\n return [\"slice\", this.input.serialize(), this.beginIndex.serialize(), endIndex];\n }\n return [\"slice\", this.input.serialize(), this.beginIndex.serialize()];\n }\n}\n\nexport default Slice;\n","// @flow\n\nimport {toString, ValueType, BooleanType, CollatorType} from '../types.js';\nimport Assertion from './assertion.js';\nimport {typeOf} from '../values.js';\nimport RuntimeError from '../runtime_error.js';\n\nimport type {Expression, SerializedExpression, ExpressionRegistration} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\n\ntype ComparisonOperator = '==' | '!=' | '<' | '>' | '<=' | '>=' ;\n\nfunction isComparableType(op: ComparisonOperator, type: Type) {\n if (op === '==' || op === '!=') {\n // equality operator\n return type.kind === 'boolean' ||\n type.kind === 'string' ||\n type.kind === 'number' ||\n type.kind === 'null' ||\n type.kind === 'value';\n } else {\n // ordering operator\n return type.kind === 'string' ||\n type.kind === 'number' ||\n type.kind === 'value';\n }\n}\n\nfunction eq(ctx: EvaluationContext, a: any, b: any): boolean { return a === b; }\nfunction neq(ctx: EvaluationContext, a: any, b: any): boolean { return a !== b; }\nfunction lt(ctx: EvaluationContext, a: any, b: any): boolean { return a < b; }\nfunction gt(ctx: EvaluationContext, a: any, b: any): boolean { return a > b; }\nfunction lteq(ctx: EvaluationContext, a: any, b: any): boolean { return a <= b; }\nfunction gteq(ctx: EvaluationContext, a: any, b: any): boolean { return a >= b; }\n\nfunction eqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) === 0; }\nfunction neqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return !eqCollate(ctx, a, b, c); }\nfunction ltCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) < 0; }\nfunction gtCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) > 0; }\nfunction lteqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) <= 0; }\nfunction gteqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) >= 0; }\n\n/**\n * Special form for comparison operators, implementing the signatures:\n * - (T, T, ?Collator) => boolean\n * - (T, value, ?Collator) => boolean\n * - (value, T, ?Collator) => boolean\n *\n * For inequalities, T must be either value, string, or number. For ==/!=, it\n * can also be boolean or null.\n *\n * Equality semantics are equivalent to Javascript's strict equality (===/!==)\n * -- i.e., when the arguments' types don't match, == evaluates to false, != to\n * true.\n *\n * When types don't match in an ordering comparison, a runtime error is thrown.\n *\n * @private\n */\nfunction makeComparison(op: ComparisonOperator, compareBasic: (EvaluationContext, any, any) => boolean, compareWithCollator: (EvaluationContext, any, any, any) => boolean): ExpressionRegistration {\n const isOrderComparison = op !== '==' && op !== '!=';\n\n return class Comparison implements Expression {\n type: Type;\n lhs: Expression;\n rhs: Expression;\n collator: ?Expression;\n hasUntypedArgument: boolean;\n\n constructor(lhs: Expression, rhs: Expression, collator: ?Expression) {\n this.type = BooleanType;\n this.lhs = lhs;\n this.rhs = rhs;\n this.collator = collator;\n this.hasUntypedArgument = lhs.type.kind === 'value' || rhs.type.kind === 'value';\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n if (args.length !== 3 && args.length !== 4)\n return context.error(`Expected two or three arguments.`);\n\n const op: ComparisonOperator = (args[0]: any);\n\n let lhs = context.parse(args[1], 1, ValueType);\n if (!lhs) return null;\n if (!isComparableType(op, lhs.type)) {\n return context.concat(1).error(`\"${op}\" comparisons are not supported for type '${toString(lhs.type)}'.`);\n }\n let rhs = context.parse(args[2], 2, ValueType);\n if (!rhs) return null;\n if (!isComparableType(op, rhs.type)) {\n return context.concat(2).error(`\"${op}\" comparisons are not supported for type '${toString(rhs.type)}'.`);\n }\n\n if (\n lhs.type.kind !== rhs.type.kind &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value'\n ) {\n return context.error(`Cannot compare types '${toString(lhs.type)}' and '${toString(rhs.type)}'.`);\n }\n\n if (isOrderComparison) {\n // typing rules specific to less/greater than operators\n if (lhs.type.kind === 'value' && rhs.type.kind !== 'value') {\n // (value, T)\n lhs = new Assertion(rhs.type, [lhs]);\n } else if (lhs.type.kind !== 'value' && rhs.type.kind === 'value') {\n // (T, value)\n rhs = new Assertion(lhs.type, [rhs]);\n }\n }\n\n let collator = null;\n if (args.length === 4) {\n if (\n lhs.type.kind !== 'string' &&\n rhs.type.kind !== 'string' &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value'\n ) {\n return context.error(`Cannot use collator to compare non-string types.`);\n }\n collator = context.parse(args[3], 3, CollatorType);\n if (!collator) return null;\n }\n\n return new Comparison(lhs, rhs, collator);\n }\n\n evaluate(ctx: EvaluationContext): boolean {\n const lhs = this.lhs.evaluate(ctx);\n const rhs = this.rhs.evaluate(ctx);\n\n if (isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n // check that type is string or number, and equal\n if (lt.kind !== rt.kind || !(lt.kind === 'string' || lt.kind === 'number')) {\n throw new RuntimeError(`Expected arguments for \"${op}\" to be (string, string) or (number, number), but found (${lt.kind}, ${rt.kind}) instead.`);\n }\n }\n\n if (this.collator && !isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n if (lt.kind !== 'string' || rt.kind !== 'string') {\n return compareBasic(ctx, lhs, rhs);\n }\n }\n\n return this.collator ?\n compareWithCollator(ctx, lhs, rhs, this.collator.evaluate(ctx)) :\n compareBasic(ctx, lhs, rhs);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.lhs);\n fn(this.rhs);\n if (this.collator) {\n fn(this.collator);\n }\n }\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): SerializedExpression {\n const serialized = [op];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n };\n}\n\nexport const Equals: $Call<typeof makeComparison, '==', typeof eq, typeof eqCollate> = makeComparison('==', eq, eqCollate);\nexport const NotEquals: $Call<typeof makeComparison, '!=', typeof neq, typeof neqCollate> = makeComparison('!=', neq, neqCollate);\nexport const LessThan: $Call<typeof makeComparison, '<', typeof lt, typeof ltCollate> = makeComparison('<', lt, ltCollate);\nexport const GreaterThan: $Call<typeof makeComparison, '>', typeof gt, typeof gtCollate> = makeComparison('>', gt, gtCollate);\nexport const LessThanOrEqual: $Call<typeof makeComparison, '<=', typeof lteq, typeof lteqCollate> = makeComparison('<=', lteq, lteqCollate);\nexport const GreaterThanOrEqual: $Call<typeof makeComparison, '>=', typeof gteq, typeof gteqCollate> = makeComparison('>=', gteq, gteqCollate);\n","// @flow\n\nimport {StringType, NumberType} from '../types.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\n\ndeclare var Intl: {\n NumberFormat: Class<Intl$NumberFormat>\n};\n\ndeclare class Intl$NumberFormat {\n constructor (\n locales?: string | string[],\n options?: NumberFormatOptions\n ): Intl$NumberFormat;\n\n static (\n locales?: string | string[],\n options?: NumberFormatOptions\n ): Intl$NumberFormat;\n\n format(a: number): string;\n\n resolvedOptions(): any;\n}\n\ntype NumberFormatOptions = {\n style?: 'decimal' | 'currency' | 'percent';\n currency?: null | string;\n minimumFractionDigits?: null | string;\n maximumFractionDigits?: null | string;\n};\n\nexport default class NumberFormat implements Expression {\n type: Type;\n number: Expression;\n locale: Expression | null; // BCP 47 language tag\n currency: Expression | null; // ISO 4217 currency code, required if style=currency\n minFractionDigits: Expression | null; // Default 0\n maxFractionDigits: Expression | null; // Default 3\n\n constructor(number: Expression,\n locale: Expression | null,\n currency: Expression | null,\n minFractionDigits: Expression | null,\n maxFractionDigits: Expression | null) {\n this.type = StringType;\n this.number = number;\n this.locale = locale;\n this.currency = currency;\n this.minFractionDigits = minFractionDigits;\n this.maxFractionDigits = maxFractionDigits;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n if (args.length !== 3)\n return context.error(`Expected two arguments.`);\n\n const number = context.parse(args[1], 1, NumberType);\n if (!number) return null;\n\n const options = (args[2]: any);\n if (typeof options !== \"object\" || Array.isArray(options))\n return context.error(`NumberFormat options argument must be an object.`);\n\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale) return null;\n }\n\n let currency = null;\n if (options['currency']) {\n currency = context.parse(options['currency'], 1, StringType);\n if (!currency) return null;\n }\n\n let minFractionDigits = null;\n if (options['min-fraction-digits']) {\n minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType);\n if (!minFractionDigits) return null;\n }\n\n let maxFractionDigits = null;\n if (options['max-fraction-digits']) {\n maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType);\n if (!maxFractionDigits) return null;\n }\n\n return new NumberFormat(number, locale, currency, minFractionDigits, maxFractionDigits);\n }\n\n evaluate(ctx: EvaluationContext): string {\n return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [],\n {\n style: this.currency ? \"currency\" : \"decimal\",\n currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : undefined,\n maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : undefined,\n }).format(this.number.evaluate(ctx));\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.number);\n if (this.locale) {\n fn(this.locale);\n }\n if (this.currency) {\n fn(this.currency);\n }\n if (this.minFractionDigits) {\n fn(this.minFractionDigits);\n }\n if (this.maxFractionDigits) {\n fn(this.maxFractionDigits);\n }\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n const options = {};\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n if (this.currency) {\n options['currency'] = this.currency.serialize();\n }\n if (this.minFractionDigits) {\n options['min-fraction-digits'] = this.minFractionDigits.serialize();\n }\n if (this.maxFractionDigits) {\n options['max-fraction-digits'] = this.maxFractionDigits.serialize();\n }\n return [\"number-format\", this.number.serialize(), options];\n }\n}\n","// @flow\n\nimport {NumberType, toString} from '../types.js';\n\nimport {typeOf} from '../values.js';\nimport RuntimeError from '../runtime_error.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nclass Length implements Expression {\n type: Type;\n input: Expression;\n\n constructor(input: Expression) {\n this.type = NumberType;\n this.input = input;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Length {\n if (args.length !== 2)\n return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`);\n\n const input = context.parse(args[1], 1);\n if (!input) return null;\n\n if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value')\n return context.error(`Expected argument of type string or array, but found ${toString(input.type)} instead.`);\n\n return new Length(input);\n }\n\n evaluate(ctx: EvaluationContext): any | number {\n const input = this.input.evaluate(ctx);\n if (typeof input === 'string') {\n return input.length;\n } else if (Array.isArray(input)) {\n return input.length;\n } else {\n throw new RuntimeError(`Expected value to be of type string or array, but found ${toString(typeOf(input))} instead.`);\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"length\"];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Length;\n","// @flow\n\nimport {\n type Type,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n ObjectType,\n ValueType,\n ErrorType,\n CollatorType,\n array,\n toString as typeToString\n} from '../types.js';\n\nimport {typeOf, Color, validateRGBA, toString as valueToString} from '../values.js';\nimport CompoundExpression from '../compound_expression.js';\nimport RuntimeError from '../runtime_error.js';\nimport Let from './let.js';\nimport Var from './var.js';\nimport Literal from './literal.js';\nimport Assertion from './assertion.js';\nimport Coercion from './coercion.js';\nimport At from './at.js';\nimport In from './in.js';\nimport IndexOf from './index_of.js';\nimport Match from './match.js';\nimport Case from './case.js';\nimport Slice from './slice.js';\nimport Step from './step.js';\nimport Interpolate from './interpolate.js';\nimport Coalesce from './coalesce.js';\nimport {\n Equals,\n NotEquals,\n LessThan,\n GreaterThan,\n LessThanOrEqual,\n GreaterThanOrEqual\n} from './comparison.js';\nimport CollatorExpression from './collator.js';\nimport NumberFormat from './number_format.js';\nimport FormatExpression from './format.js';\nimport ImageExpression from './image.js';\nimport Length from './length.js';\nimport Within from './within.js';\n\nimport type {Varargs} from '../compound_expression.js';\nimport type {ExpressionRegistry} from '../expression.js';\n\nconst expressions: ExpressionRegistry = {\n // special forms\n '==': Equals,\n '!=': NotEquals,\n '>': GreaterThan,\n '<': LessThan,\n '>=': GreaterThanOrEqual,\n '<=': LessThanOrEqual,\n 'array': Assertion,\n 'at': At,\n 'boolean': Assertion,\n 'case': Case,\n 'coalesce': Coalesce,\n 'collator': CollatorExpression,\n 'format': FormatExpression,\n 'image': ImageExpression,\n 'in': In,\n 'index-of': IndexOf,\n 'interpolate': Interpolate,\n 'interpolate-hcl': Interpolate,\n 'interpolate-lab': Interpolate,\n 'length': Length,\n 'let': Let,\n 'literal': Literal,\n 'match': Match,\n 'number': Assertion,\n 'number-format': NumberFormat,\n 'object': Assertion,\n 'slice': Slice,\n 'step': Step,\n 'string': Assertion,\n 'to-boolean': Coercion,\n 'to-color': Coercion,\n 'to-number': Coercion,\n 'to-string': Coercion,\n 'var': Var,\n 'within': Within\n};\n\nfunction rgba(ctx, [r, g, b, a]) {\n r = r.evaluate(ctx);\n g = g.evaluate(ctx);\n b = b.evaluate(ctx);\n const alpha = a ? a.evaluate(ctx) : 1;\n const error = validateRGBA(r, g, b, alpha);\n if (error) throw new RuntimeError(error);\n return new Color(r / 255 * alpha, g / 255 * alpha, b / 255 * alpha, alpha);\n}\n\nfunction has(key, obj) {\n return key in obj;\n}\n\nfunction get(key, obj) {\n const v = obj[key];\n return typeof v === 'undefined' ? null : v;\n}\n\nfunction binarySearch(v, a, i, j) {\n while (i <= j) {\n const m = (i + j) >> 1;\n if (a[m] === v)\n return true;\n if (a[m] > v)\n j = m - 1;\n else\n i = m + 1;\n }\n return false;\n}\n\nfunction varargs(type: Type): Varargs {\n return {type};\n}\n\nCompoundExpression.register(expressions, {\n 'error': [\n ErrorType,\n [StringType],\n (ctx, [v]) => { throw new RuntimeError(v.evaluate(ctx)); }\n ],\n 'typeof': [\n StringType,\n [ValueType],\n (ctx, [v]) => typeToString(typeOf(v.evaluate(ctx)))\n ],\n 'to-rgba': [\n array(NumberType, 4),\n [ColorType],\n (ctx, [v]) => {\n return v.evaluate(ctx).toArray();\n }\n ],\n 'rgb': [\n ColorType,\n [NumberType, NumberType, NumberType],\n rgba\n ],\n 'rgba': [\n ColorType,\n [NumberType, NumberType, NumberType, NumberType],\n rgba\n ],\n 'has': {\n type: BooleanType,\n overloads: [\n [\n [StringType],\n (ctx, [key]) => has(key.evaluate(ctx), ctx.properties())\n ], [\n [StringType, ObjectType],\n (ctx, [key, obj]) => has(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'get': {\n type: ValueType,\n overloads: [\n [\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.properties())\n ], [\n [StringType, ObjectType],\n (ctx, [key, obj]) => get(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'feature-state': [\n ValueType,\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.featureState || {})\n ],\n 'properties': [\n ObjectType,\n [],\n (ctx) => ctx.properties()\n ],\n 'geometry-type': [\n StringType,\n [],\n (ctx) => ctx.geometryType()\n ],\n 'id': [\n ValueType,\n [],\n (ctx) => ctx.id()\n ],\n 'zoom': [\n NumberType,\n [],\n (ctx) => ctx.globals.zoom\n ],\n 'pitch': [\n NumberType,\n [],\n (ctx) => ctx.globals.pitch || 0\n ],\n 'distance-from-center': [\n NumberType,\n [],\n (ctx) => ctx.distanceFromCenter()\n ],\n 'heatmap-density': [\n NumberType,\n [],\n (ctx) => ctx.globals.heatmapDensity || 0\n ],\n 'line-progress': [\n NumberType,\n [],\n (ctx) => ctx.globals.lineProgress || 0\n ],\n 'sky-radial-progress': [\n NumberType,\n [],\n (ctx) => ctx.globals.skyRadialProgress || 0\n ],\n 'accumulated': [\n ValueType,\n [],\n (ctx) => ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated\n ],\n '+': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 0;\n for (const arg of args) {\n result += arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '*': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 1;\n for (const arg of args) {\n result *= arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '-': {\n type: NumberType,\n overloads: [\n [\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) - b.evaluate(ctx)\n ], [\n [NumberType],\n (ctx, [a]) => -a.evaluate(ctx)\n ]\n ]\n },\n '/': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) / b.evaluate(ctx)\n ],\n '%': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) % b.evaluate(ctx)\n ],\n 'ln2': [\n NumberType,\n [],\n () => Math.LN2\n ],\n 'pi': [\n NumberType,\n [],\n () => Math.PI\n ],\n 'e': [\n NumberType,\n [],\n () => Math.E\n ],\n '^': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx))\n ],\n 'sqrt': [\n NumberType,\n [NumberType],\n (ctx, [x]) => Math.sqrt(x.evaluate(ctx))\n ],\n 'log10': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10\n ],\n 'ln': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx))\n ],\n 'log2': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN2\n ],\n 'sin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.sin(n.evaluate(ctx))\n ],\n 'cos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.cos(n.evaluate(ctx))\n ],\n 'tan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.tan(n.evaluate(ctx))\n ],\n 'asin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.asin(n.evaluate(ctx))\n ],\n 'acos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.acos(n.evaluate(ctx))\n ],\n 'atan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.atan(n.evaluate(ctx))\n ],\n 'min': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.min(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'max': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.max(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'abs': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.abs(n.evaluate(ctx))\n ],\n 'round': [\n NumberType,\n [NumberType],\n (ctx, [n]) => {\n const v = n.evaluate(ctx);\n // Javascript's Math.round() rounds towards +Infinity for halfway\n // values, even when they're negative. It's more common to round\n // away from 0 (e.g., this is what python and C++ do)\n return v < 0 ? -Math.round(-v) : Math.round(v);\n }\n ],\n 'floor': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.floor(n.evaluate(ctx))\n ],\n 'ceil': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.ceil(n.evaluate(ctx))\n ],\n 'filter-==': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => ctx.properties()[(k: any).value] === (v: any).value\n ],\n 'filter-id-==': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => ctx.id() === (v: any).value\n ],\n 'filter-type-==': [\n BooleanType,\n [StringType],\n (ctx, [v]) => ctx.geometryType() === (v: any).value\n ],\n 'filter-<': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k: any).value];\n const b = (v: any).value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter-id-<': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v: any).value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter->': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k: any).value];\n const b = (v: any).value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-id->': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v: any).value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-<=': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k: any).value];\n const b = (v: any).value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter-id-<=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v: any).value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter->=': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k: any).value];\n const b = (v: any).value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-id->=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v: any).value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-has': [\n BooleanType,\n [ValueType],\n (ctx, [k]) => (k: any).value in ctx.properties()\n ],\n 'filter-has-id': [\n BooleanType,\n [],\n (ctx) => (ctx.id() !== null && ctx.id() !== undefined)\n ],\n 'filter-type-in': [\n BooleanType,\n [array(StringType)],\n (ctx, [v]) => (v: any).value.indexOf(ctx.geometryType()) >= 0\n ],\n 'filter-id-in': [\n BooleanType,\n [array(ValueType)],\n (ctx, [v]) => (v: any).value.indexOf(ctx.id()) >= 0\n ],\n 'filter-in-small': [\n BooleanType,\n [StringType, array(ValueType)],\n // assumes v is an array literal\n (ctx, [k, v]) => (v: any).value.indexOf(ctx.properties()[(k: any).value]) >= 0\n ],\n 'filter-in-large': [\n BooleanType,\n [StringType, array(ValueType)],\n // assumes v is a array literal with values sorted in ascending order and of a single type\n (ctx, [k, v]) => binarySearch(ctx.properties()[(k: any).value], (v: any).value, 0, (v: any).value.length - 1)\n ],\n 'all': {\n type: BooleanType,\n overloads: [\n [\n [BooleanType, BooleanType],\n (ctx, [a, b]) => a.evaluate(ctx) && b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (!arg.evaluate(ctx))\n return false;\n }\n return true;\n }\n ]\n ]\n },\n 'any': {\n type: BooleanType,\n overloads: [\n [\n [BooleanType, BooleanType],\n (ctx, [a, b]) => a.evaluate(ctx) || b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (arg.evaluate(ctx))\n return true;\n }\n return false;\n }\n ]\n ]\n },\n '!': [\n BooleanType,\n [BooleanType],\n (ctx, [b]) => !b.evaluate(ctx)\n ],\n 'is-supported-script': [\n BooleanType,\n [StringType],\n // At parse time this will always return true, so we need to exclude this expression with isGlobalPropertyConstant\n (ctx, [s]) => {\n const isSupportedScript = ctx.globals && ctx.globals.isSupportedScript;\n if (isSupportedScript) {\n return isSupportedScript(s.evaluate(ctx));\n }\n return true;\n }\n ],\n 'upcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toUpperCase()\n ],\n 'downcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toLowerCase()\n ],\n 'concat': [\n StringType,\n varargs(ValueType),\n (ctx, args) => args.map(arg => valueToString(arg.evaluate(ctx))).join('')\n ],\n 'resolved-locale': [\n StringType,\n [CollatorType],\n (ctx, [collator]) => collator.evaluate(ctx).resolvedLocale()\n ]\n});\n\nexport default expressions;\n","// @flow\n\n/**\n * A type used for returning and propagating errors. The first element of the union\n * represents success and contains a value, and the second represents an error and\n * contains an error value.\n * @private\n */\nexport type Result<T, E> =\n | {| result: 'success', value: T |}\n | {| result: 'error', value: E |};\n\nexport function success<T, E>(value: T): Result<T, E> {\n return {result: 'success', value};\n}\n\nexport function error<T, E>(value: E): Result<T, E> {\n return {result: 'error', value};\n}\n","// @flow\n\nimport type {StylePropertySpecification} from '../style-spec.js';\n\nexport function supportsPropertyExpression(spec: StylePropertySpecification): boolean {\n return spec['property-type'] === 'data-driven' || spec['property-type'] === 'cross-faded-data-driven';\n}\n\nexport function supportsZoomExpression(spec: StylePropertySpecification): boolean {\n return !!spec.expression && spec.expression.parameters.indexOf('zoom') > -1;\n}\n\nexport function supportsInterpolation(spec: StylePropertySpecification): boolean {\n return !!spec.expression && spec.expression.interpolated;\n}\n","// @flow\n\nexport default function getType(val: mixed): string {\n if (val instanceof Number) {\n return 'number';\n } else if (val instanceof String) {\n return 'string';\n } else if (val instanceof Boolean) {\n return 'boolean';\n } else if (Array.isArray(val)) {\n return 'array';\n } else if (val === null) {\n return 'null';\n } else {\n return typeof val;\n }\n}\n","\nimport * as colorSpaces from '../util/color_spaces.js';\nimport Color from '../util/color.js';\nimport extend from '../util/extend.js';\nimport getType from '../util/get_type.js';\nimport * as interpolate from '../util/interpolate.js';\nimport Interpolate from '../expression/definitions/interpolate.js';\nimport Formatted from '../expression/types/formatted.js';\nimport ResolvedImage from '../expression/types/resolved_image.js';\nimport {supportsInterpolation} from '../util/properties.js';\nimport {findStopLessThanOrEqualTo} from '../expression/stops.js';\n\nexport function isFunction(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction identityFunction(x) {\n return x;\n}\n\nexport function createFunction(parameters, propertySpec) {\n const isColor = propertySpec.type === 'color';\n const zoomAndFeatureDependent = parameters.stops && typeof parameters.stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n const type = parameters.type || (supportsInterpolation(propertySpec) ? 'exponential' : 'interval');\n\n if (isColor) {\n parameters = extend({}, parameters);\n\n if (parameters.stops) {\n parameters.stops = parameters.stops.map((stop) => {\n return [stop[0], Color.parse(stop[1])];\n });\n }\n\n if (parameters.default) {\n parameters.default = Color.parse(parameters.default);\n } else {\n parameters.default = Color.parse(propertySpec.default);\n }\n }\n\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb' && !colorSpaces[parameters.colorSpace]) { // eslint-disable-line import/namespace\n throw new Error(`Unknown color space: ${parameters.colorSpace}`);\n }\n\n let innerFun;\n let hashedStops;\n let categoricalKeyType;\n if (type === 'exponential') {\n innerFun = evaluateExponentialFunction;\n } else if (type === 'interval') {\n innerFun = evaluateIntervalFunction;\n } else if (type === 'categorical') {\n innerFun = evaluateCategoricalFunction;\n\n // For categorical functions, generate an Object as a hashmap of the stops for fast searching\n hashedStops = Object.create(null);\n for (const stop of parameters.stops) {\n hashedStops[stop[0]] = stop[1];\n }\n\n // Infer key type based on first stop key-- used to encforce strict type checking later\n categoricalKeyType = typeof parameters.stops[0][0];\n\n } else if (type === 'identity') {\n innerFun = evaluateIdentityFunction;\n } else {\n throw new Error(`Unknown function type \"${type}\"`);\n }\n\n if (zoomAndFeatureDependent) {\n const featureFunctions = {};\n const zoomStops = [];\n for (let s = 0; s < parameters.stops.length; s++) {\n const stop = parameters.stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctions[zoom] === undefined) {\n featureFunctions[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default,\n stops: []\n };\n zoomStops.push(zoom);\n }\n featureFunctions[zoom].stops.push([stop[0].value, stop[1]]);\n }\n\n const featureFunctionStops = [];\n for (const z of zoomStops) {\n featureFunctionStops.push([featureFunctions[z].zoom, createFunction(featureFunctions[z], propertySpec)]);\n }\n\n const interpolationType = {name: 'linear'};\n return {\n kind: 'composite',\n interpolationType,\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n zoomStops: featureFunctionStops.map(s => s[0]),\n evaluate({zoom}, properties) {\n return evaluateExponentialFunction({\n stops: featureFunctionStops,\n base: parameters.base\n }, propertySpec, zoom).evaluate(zoom, properties);\n }\n };\n } else if (zoomDependent) {\n const interpolationType = type === 'exponential' ?\n {name: 'exponential', base: parameters.base !== undefined ? parameters.base : 1} : null;\n return {\n kind: 'camera',\n interpolationType,\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n zoomStops: parameters.stops.map(s => s[0]),\n evaluate: ({zoom}) => innerFun(parameters, propertySpec, zoom, hashedStops, categoricalKeyType)\n };\n } else {\n return {\n kind: 'source',\n evaluate(_, feature) {\n const value = feature && feature.properties ? feature.properties[parameters.property] : undefined;\n if (value === undefined) {\n return coalesce(parameters.default, propertySpec.default);\n }\n return innerFun(parameters, propertySpec, value, hashedStops, categoricalKeyType);\n }\n };\n }\n}\n\nfunction coalesce(a, b, c) {\n if (a !== undefined) return a;\n if (b !== undefined) return b;\n if (c !== undefined) return c;\n}\n\nfunction evaluateCategoricalFunction(parameters, propertySpec, input, hashedStops, keyType) {\n const evaluated = typeof input === keyType ? hashedStops[input] : undefined; // Enforce strict typing on input\n return coalesce(evaluated, parameters.default, propertySpec.default);\n}\n\nfunction evaluateIntervalFunction(parameters, propertySpec, input) {\n // Edge cases\n if (getType(input) !== 'number') return coalesce(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1) return parameters.stops[0][1];\n if (input <= parameters.stops[0][0]) return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0]) return parameters.stops[n - 1][1];\n\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n\n return parameters.stops[index][1];\n}\n\nfunction evaluateExponentialFunction(parameters, propertySpec, input) {\n const base = parameters.base !== undefined ? parameters.base : 1;\n\n // Edge cases\n if (getType(input) !== 'number') return coalesce(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1) return parameters.stops[0][1];\n if (input <= parameters.stops[0][0]) return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0]) return parameters.stops[n - 1][1];\n\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n const t = interpolationFactor(\n input, base,\n parameters.stops[index][0],\n parameters.stops[index + 1][0]);\n\n const outputLower = parameters.stops[index][1];\n const outputUpper = parameters.stops[index + 1][1];\n let interp = interpolate[propertySpec.type] || identityFunction; // eslint-disable-line import/namespace\n\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb') {\n const colorspace = colorSpaces[parameters.colorSpace]; // eslint-disable-line import/namespace\n interp = (a, b) => colorspace.reverse(colorspace.interpolate(colorspace.forward(a), colorspace.forward(b), t));\n }\n\n if (typeof outputLower.evaluate === 'function') {\n return {\n evaluate(...args) {\n const evaluatedLower = outputLower.evaluate.apply(undefined, args);\n const evaluatedUpper = outputUpper.evaluate.apply(undefined, args);\n // Special case for fill-outline-color, which has no spec default.\n if (evaluatedLower === undefined || evaluatedUpper === undefined) {\n return undefined;\n }\n return interp(evaluatedLower, evaluatedUpper, t);\n }\n };\n }\n\n return interp(outputLower, outputUpper, t);\n}\n\nfunction evaluateIdentityFunction(parameters, propertySpec, input) {\n if (propertySpec.type === 'color') {\n input = Color.parse(input);\n } else if (propertySpec.type === 'formatted') {\n input = Formatted.fromString(input.toString());\n } else if (propertySpec.type === 'resolvedImage') {\n input = ResolvedImage.fromString(input.toString());\n } else if (getType(input) !== propertySpec.type && (propertySpec.type !== 'enum' || !propertySpec.values[input])) {\n input = undefined;\n }\n return coalesce(input, parameters.default, propertySpec.default);\n}\n\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n *\n * How it works:\n * Two consecutive stop values define a (scaled and shifted) exponential\n * function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n */\nfunction interpolationFactor(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport extend from '../util/extend.js';\nimport ParsingError from './parsing_error.js';\nimport ParsingContext from './parsing_context.js';\nimport EvaluationContext from './evaluation_context.js';\nimport CompoundExpression from './compound_expression.js';\nimport Step from './definitions/step.js';\nimport Interpolate from './definitions/interpolate.js';\nimport Coalesce from './definitions/coalesce.js';\nimport Let from './definitions/let.js';\nimport definitions from './definitions/index.js';\nimport * as isConstant from './is_constant.js';\nimport RuntimeError from './runtime_error.js';\nimport {success, error} from '../util/result.js';\nimport {supportsPropertyExpression, supportsZoomExpression, supportsInterpolation} from '../util/properties.js';\n\nimport type {Type, EvaluationKind} from './types.js';\nimport type {Value} from './values.js';\nimport type {Expression} from './expression.js';\nimport type {StylePropertySpecification} from '../style-spec.js';\nimport type {Result} from '../util/result.js';\nimport type {InterpolationType} from './definitions/interpolate.js';\nimport type {PropertyValueSpecification} from '../types.js';\nimport type {FormattedSection} from './types/formatted.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type {FeatureDistanceData} from '../feature_filter/index.js';\n\nexport type Feature = {\n +type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | 'Polygon' | 'MultiPolygon',\n +id?: number | null,\n +properties: {[_: string]: any},\n +patterns?: {[_: string]: {\"min\": string, \"mid\": string, \"max\": string}},\n +geometry?: Array<Array<Point>>\n};\n\nexport type FeatureState = {[_: string]: any};\n\nexport type GlobalProperties = $ReadOnly<{\n zoom: number,\n pitch?: number,\n heatmapDensity?: number,\n lineProgress?: number,\n skyRadialProgress?: number,\n isSupportedScript?: (_: string) => boolean,\n accumulated?: Value\n}>;\n\nexport class StyleExpression {\n expression: Expression;\n\n _evaluator: EvaluationContext;\n _defaultValue: Value;\n _warningHistory: {[key: string]: boolean};\n _enumValues: ?{[_: string]: any};\n\n constructor(expression: Expression, propertySpec: ?StylePropertySpecification) {\n this.expression = expression;\n this._warningHistory = {};\n this._evaluator = new EvaluationContext();\n this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;\n this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;\n }\n\n evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection, featureTileCoord?: Point, featureDistanceData?: FeatureDistanceData): any {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature;\n this._evaluator.featureState = featureState;\n this._evaluator.canonical = canonical || null;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection;\n this._evaluator.featureTileCoord = featureTileCoord || null;\n this._evaluator.featureDistanceData = featureDistanceData || null;\n\n return this.expression.evaluate(this._evaluator);\n }\n\n evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection, featureTileCoord?: Point, featureDistanceData?: FeatureDistanceData): any {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature || null;\n this._evaluator.featureState = featureState || null;\n this._evaluator.canonical = canonical || null;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection || null;\n this._evaluator.featureTileCoord = featureTileCoord || null;\n this._evaluator.featureDistanceData = featureDistanceData || null;\n\n try {\n const val = this.expression.evaluate(this._evaluator);\n // eslint-disable-next-line no-self-compare\n if (val === null || val === undefined || (typeof val === 'number' && val !== val)) {\n return this._defaultValue;\n }\n if (this._enumValues && !(val in this._enumValues)) {\n throw new RuntimeError(`Expected value to be one of ${Object.keys(this._enumValues).map(v => JSON.stringify(v)).join(', ')}, but found ${JSON.stringify(val)} instead.`);\n }\n return val;\n } catch (e) {\n if (!this._warningHistory[e.message]) {\n this._warningHistory[e.message] = true;\n if (typeof console !== 'undefined') {\n console.warn(e.message);\n }\n }\n return this._defaultValue;\n }\n }\n}\n\nexport function isExpression(expression: mixed): boolean {\n return Array.isArray(expression) && expression.length > 0 &&\n typeof expression[0] === 'string' && expression[0] in definitions;\n}\n\n/**\n * Parse and typecheck the given style spec JSON expression. If\n * options.defaultValue is provided, then the resulting StyleExpression's\n * `evaluate()` method will handle errors by logging a warning (once per\n * message) and returning the default value. Otherwise, it will throw\n * evaluation errors.\n *\n * @private\n */\nexport function createExpression(expression: mixed, propertySpec: ?StylePropertySpecification): Result<StyleExpression, Array<ParsingError>> {\n const parser = new ParsingContext(definitions, [], propertySpec ? getExpectedType(propertySpec) : undefined);\n\n // For string-valued properties, coerce to string at the top level rather than asserting.\n const parsed = parser.parse(expression, undefined, undefined, undefined,\n propertySpec && propertySpec.type === 'string' ? {typeAnnotation: 'coerce'} : undefined);\n\n if (!parsed) {\n assert(parser.errors.length > 0);\n return error(parser.errors);\n }\n\n return success(new StyleExpression(parsed, propertySpec));\n}\n\nexport class ZoomConstantExpression<Kind: EvaluationKind> {\n kind: Kind;\n isStateDependent: boolean;\n _styleExpression: StyleExpression;\n\n constructor(kind: Kind, expression: StyleExpression) {\n this.kind = kind;\n this._styleExpression = expression;\n this.isStateDependent = kind !== ('constant': EvaluationKind) && !isConstant.isStateConstant(expression.expression);\n }\n\n evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n}\n\nexport class ZoomDependentExpression<Kind: EvaluationKind> {\n kind: Kind;\n zoomStops: Array<number>;\n isStateDependent: boolean;\n\n _styleExpression: StyleExpression;\n interpolationType: ?InterpolationType;\n\n constructor(kind: Kind, expression: StyleExpression, zoomStops: Array<number>, interpolationType?: InterpolationType) {\n this.kind = kind;\n this.zoomStops = zoomStops;\n this._styleExpression = expression;\n this.isStateDependent = kind !== ('camera': EvaluationKind) && !isConstant.isStateConstant(expression.expression);\n this.interpolationType = interpolationType;\n }\n\n evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n interpolationFactor(input: number, lower: number, upper: number): number {\n if (this.interpolationType) {\n return Interpolate.interpolationFactor(this.interpolationType, input, lower, upper);\n } else {\n return 0;\n }\n }\n}\n\nexport type ConstantExpression = {\n kind: 'constant',\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>) => any,\n}\n\nexport type SourceExpression = {\n kind: 'source',\n isStateDependent: boolean,\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection) => any,\n};\n\nexport type CameraExpression = {\n kind: 'camera',\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>) => any,\n +interpolationFactor: (input: number, lower: number, upper: number) => number,\n zoomStops: Array<number>,\n interpolationType: ?InterpolationType\n};\n\nexport type CompositeExpression = {\n kind: 'composite',\n isStateDependent: boolean,\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>, formattedSection?: FormattedSection) => any,\n +interpolationFactor: (input: number, lower: number, upper: number) => number,\n zoomStops: Array<number>,\n interpolationType: ?InterpolationType\n};\n\nexport type StylePropertyExpression =\n | ConstantExpression\n | SourceExpression\n | CameraExpression\n | CompositeExpression;\n\nexport function createPropertyExpression(expression: mixed, propertySpec: StylePropertySpecification): Result<StylePropertyExpression, Array<ParsingError>> {\n expression = createExpression(expression, propertySpec);\n if (expression.result === 'error') {\n return expression;\n }\n\n const parsed = expression.value.expression;\n\n const isFeatureConstant = isConstant.isFeatureConstant(parsed);\n if (!isFeatureConstant && !supportsPropertyExpression(propertySpec)) {\n return error([new ParsingError('', 'data expressions not supported')]);\n }\n\n const isZoomConstant = isConstant.isGlobalPropertyConstant(parsed, ['zoom', 'pitch', 'distance-from-center']);\n if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {\n return error([new ParsingError('', 'zoom expressions not supported')]);\n }\n\n const zoomCurve = findZoomCurve(parsed);\n if (!zoomCurve && !isZoomConstant) {\n return error([new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')]);\n } else if (zoomCurve instanceof ParsingError) {\n return error([zoomCurve]);\n } else if (zoomCurve instanceof Interpolate && !supportsInterpolation(propertySpec)) {\n return error([new ParsingError('', '\"interpolate\" expressions cannot be used with this property')]);\n }\n\n if (!zoomCurve) {\n return success(isFeatureConstant ?\n (new ZoomConstantExpression('constant', expression.value): ConstantExpression) :\n (new ZoomConstantExpression('source', expression.value): SourceExpression));\n }\n\n const interpolationType = zoomCurve instanceof Interpolate ? zoomCurve.interpolation : undefined;\n\n return success(isFeatureConstant ?\n (new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType): CameraExpression) :\n (new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType): CompositeExpression));\n}\n\nimport {isFunction, createFunction} from '../function/index.js';\nimport {Color} from './values.js';\n\n// serialization wrapper for old-style stop functions normalized to the\n// expression interface\nexport class StylePropertyFunction<T> {\n _parameters: PropertyValueSpecification<T>;\n _specification: StylePropertySpecification;\n\n kind: EvaluationKind;\n evaluate: (globals: GlobalProperties, feature?: Feature) => any;\n interpolationFactor: ?(input: number, lower: number, upper: number) => number;\n zoomStops: ?Array<number>;\n\n constructor(parameters: PropertyValueSpecification<T>, specification: StylePropertySpecification) {\n this._parameters = parameters;\n this._specification = specification;\n extend(this, createFunction(this._parameters, this._specification));\n }\n\n static deserialize(serialized: {_parameters: PropertyValueSpecification<T>, _specification: StylePropertySpecification}): StylePropertyFunction<T> {\n return new StylePropertyFunction(serialized._parameters, serialized._specification);\n }\n\n static serialize(input: StylePropertyFunction<T>): {_parameters: PropertyValueSpecification<T>, _specification: StylePropertySpecification} {\n return {\n _parameters: input._parameters,\n _specification: input._specification\n };\n }\n}\n\nexport function normalizePropertyExpression<T>(value: PropertyValueSpecification<T>, specification: StylePropertySpecification): StylePropertyExpression {\n if (isFunction(value)) {\n return (new StylePropertyFunction(value, specification): any);\n\n } else if (isExpression(value)) {\n const expression = createPropertyExpression(value, specification);\n if (expression.result === 'error') {\n // this should have been caught in validation\n throw new Error(expression.value.map(err => `${err.key}: ${err.message}`).join(', '));\n }\n return expression.value;\n\n } else {\n let constant: any = value;\n if (typeof value === 'string' && specification.type === 'color') {\n constant = Color.parse(value);\n }\n return {\n kind: 'constant',\n evaluate: () => constant\n };\n }\n}\n\n// Zoom-dependent expressions may only use [\"zoom\"] as the input to a top-level \"step\" or \"interpolate\"\n// expression (collectively referred to as a \"curve\"). The curve may be wrapped in one or more \"let\" or\n// \"coalesce\" expressions.\nfunction findZoomCurve(expression: Expression): Step | Interpolate | ParsingError | null {\n let result = null;\n if (expression instanceof Let) {\n result = findZoomCurve(expression.result);\n\n } else if (expression instanceof Coalesce) {\n for (const arg of expression.args) {\n result = findZoomCurve(arg);\n if (result) {\n break;\n }\n }\n\n } else if ((expression instanceof Step || expression instanceof Interpolate) &&\n expression.input instanceof CompoundExpression &&\n expression.input.name === 'zoom') {\n\n result = expression;\n }\n\n if (result instanceof ParsingError) {\n return result;\n }\n\n expression.eachChild((child) => {\n const childResult = findZoomCurve(child);\n if (childResult instanceof ParsingError) {\n result = childResult;\n } else if (!result && childResult) {\n result = new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.');\n } else if (result && childResult && result !== childResult) {\n result = new ParsingError('', 'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.');\n }\n });\n\n return result;\n}\n\nimport {ColorType, StringType, NumberType, BooleanType, ValueType, FormattedType, ResolvedImageType, array} from './types.js';\n\nfunction getExpectedType(spec: StylePropertySpecification): Type {\n const types = {\n color: ColorType,\n string: StringType,\n number: NumberType,\n enum: StringType,\n boolean: BooleanType,\n formatted: FormattedType,\n resolvedImage: ResolvedImageType\n };\n\n if (spec.type === 'array') {\n return array(types[spec.value] || ValueType, spec.length);\n }\n\n return types[spec.type];\n}\n\nfunction getDefaultValue(spec: StylePropertySpecification): Value {\n if (spec.type === 'color' && (isFunction(spec.default) || Array.isArray(spec.default))) {\n // Special case for heatmap-color: it uses the 'default:' to define a\n // default color ramp, but createExpression expects a simple value to fall\n // back to in case of runtime errors\n return new Color(0, 0, 0, 0);\n } else if (spec.type === 'color') {\n return Color.parse(spec.default) || null;\n } else if (spec.default === undefined) {\n return null;\n } else {\n return spec.default;\n }\n}\n","// @flow\n\n// Note: Do not inherit from Error. It breaks when transpiling to ES5.\n\nexport default class ValidationError {\n message: string;\n identifier: ?string;\n line: ?number;\n\n constructor(key: ?string, value: ?{ __line__: number }, message: string, identifier: ?string) {\n this.message = (key ? `${key}: ` : '') + message;\n if (identifier) this.identifier = identifier;\n\n if (value !== null && value !== undefined && value.__line__) {\n this.line = value.__line__;\n }\n }\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport validateSpec from './validate.js';\n\nimport type {ValidationOptions} from './validate.js';\n\ntype Options = ValidationOptions & {\n objectElementValidators?: Function;\n};\n\nexport default function validateObject(options: Options): Array<ValidationError> {\n const key = options.key;\n const object = options.value;\n const elementSpecs = options.valueSpec || {};\n const elementValidators = options.objectElementValidators || {};\n const style = options.style;\n const styleSpec = options.styleSpec;\n let errors = [];\n\n const type = getType(object);\n if (type !== 'object') {\n return [new ValidationError(key, object, `object expected, ${type} found`)];\n }\n\n for (const objectKey in object) {\n const elementSpecKey = objectKey.split('.')[0]; // treat 'paint.*' as 'paint'\n const elementSpec = elementSpecs[elementSpecKey] || elementSpecs['*'];\n\n let validateElement;\n if (elementValidators[elementSpecKey]) {\n validateElement = elementValidators[elementSpecKey];\n } else if (elementSpecs[elementSpecKey]) {\n validateElement = validateSpec;\n } else if (elementValidators['*']) {\n validateElement = elementValidators['*'];\n } else if (elementSpecs['*']) {\n validateElement = validateSpec;\n }\n\n if (!validateElement) {\n errors.push(new ValidationError(key, object[objectKey], `unknown property \"${objectKey}\"`));\n continue;\n }\n\n errors = errors.concat(validateElement({\n key: (key ? `${key}.` : key) + objectKey,\n value: object[objectKey],\n valueSpec: elementSpec,\n style,\n styleSpec,\n object,\n objectKey\n // $FlowFixMe[extra-arg]\n }, object));\n }\n\n for (const elementSpecKey in elementSpecs) {\n // Don't check `required` when there's a custom validator for that property.\n if (elementValidators[elementSpecKey]) {\n continue;\n }\n\n if (elementSpecs[elementSpecKey].required && elementSpecs[elementSpecKey]['default'] === undefined && object[elementSpecKey] === undefined) {\n errors.push(new ValidationError(key, object, `missing required property \"${elementSpecKey}\"`));\n }\n }\n\n return errors;\n}\n","// @flow\n\nimport getType from '../util/get_type.js';\nimport validate from './validate.js';\nimport ValidationError from '../error/validation_error.js';\n\nimport type {ValidationOptions} from './validate.js';\n\ntype Options = ValidationOptions & {\n arrayElementValidator: Function;\n};\n\nexport default function validateArray(options: Options): Array<ValidationError> {\n const array = options.value;\n const arraySpec = options.valueSpec;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const key = options.key;\n const validateArrayElement = options.arrayElementValidator || validate;\n\n if (getType(array) !== 'array') {\n return [new ValidationError(key, array, `array expected, ${getType(array)} found`)];\n }\n\n if (arraySpec.length && array.length !== arraySpec.length) {\n return [new ValidationError(key, array, `array length ${arraySpec.length} expected, length ${array.length} found`)];\n }\n\n if (arraySpec['min-length'] && array.length < arraySpec['min-length']) {\n return [new ValidationError(key, array, `array length at least ${arraySpec['min-length']} expected, length ${array.length} found`)];\n }\n\n let arrayElementSpec = {\n \"type\": arraySpec.value,\n \"values\": arraySpec.values,\n \"minimum\": arraySpec.minimum,\n \"maximum\": arraySpec.maximum,\n function: undefined\n };\n\n if (styleSpec.$version < 7) {\n arrayElementSpec.function = arraySpec.function;\n }\n\n if (getType(arraySpec.value) === 'object') {\n arrayElementSpec = arraySpec.value;\n }\n\n let errors = [];\n for (let i = 0; i < array.length; i++) {\n errors = errors.concat(validateArrayElement({\n array,\n arrayIndex: i,\n value: array[i],\n valueSpec: arrayElementSpec,\n style,\n styleSpec,\n key: `${key}[${i}]`\n }));\n }\n return errors;\n}\n","// @flow\n\nimport getType from '../util/get_type.js';\nimport ValidationError from '../error/validation_error.js';\n\nimport type {ValidationOptions} from './validate.js';\n\ntype Options = ValidationOptions & {\n arrayIndex: number;\n}\n\nexport default function validateNumber(options: Options): Array<ValidationError> {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n let type = getType(value);\n\n // eslint-disable-next-line no-self-compare\n if (type === 'number' && value !== value) {\n type = 'NaN';\n }\n\n if (type !== 'number') {\n return [new ValidationError(key, value, `number expected, ${type} found`)];\n }\n\n if ('minimum' in valueSpec) {\n let specMin = valueSpec.minimum;\n if (getType(valueSpec.minimum) === 'array') {\n const i = options.arrayIndex;\n specMin = valueSpec.minimum[i];\n }\n if (value < specMin) {\n return [new ValidationError(key, value, `${value} is less than the minimum value ${specMin}`)];\n }\n }\n\n if ('maximum' in valueSpec) {\n let specMax = valueSpec.maximum;\n if (getType(valueSpec.maximum) === 'array') {\n const i = options.arrayIndex;\n specMax = valueSpec.maximum[i];\n }\n if (value > specMax) {\n return [new ValidationError(key, value, `${value} is greater than the maximum value ${specMax}`)];\n }\n }\n\n return [];\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport validate from './validate.js';\nimport validateObject from './validate_object.js';\nimport validateArray from './validate_array.js';\nimport validateNumber from './validate_number.js';\nimport {isExpression} from '../expression/index.js';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport {\n supportsPropertyExpression,\n supportsZoomExpression,\n supportsInterpolation\n} from '../util/properties.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateFunction(options: ValidationOptions): any {\n const functionValueSpec = options.valueSpec;\n const functionType = unbundle(options.value.type);\n let stopKeyType;\n let stopDomainValues: {[string | number]: boolean} = {};\n let previousStopDomainValue;\n let previousStopDomainZoom;\n\n const isZoomFunction = functionType !== 'categorical' && options.value.property === undefined;\n const isPropertyFunction = !isZoomFunction;\n const isZoomAndPropertyFunction =\n getType(options.value.stops) === 'array' &&\n getType(options.value.stops[0]) === 'array' &&\n getType(options.value.stops[0][0]) === 'object';\n\n const errors = validateObject({\n key: options.key,\n value: options.value,\n valueSpec: options.styleSpec.function,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n stops: validateFunctionStops,\n default: validateFunctionDefault\n }\n });\n\n if (functionType === 'identity' && isZoomFunction) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"property\"'));\n }\n\n if (functionType !== 'identity' && !options.value.stops) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"stops\"'));\n }\n\n if (functionType === 'exponential' && options.valueSpec.expression && !supportsInterpolation(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'exponential functions not supported'));\n }\n\n if (options.styleSpec.$version >= 8) {\n if (isPropertyFunction && !supportsPropertyExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'property functions not supported'));\n } else if (isZoomFunction && !supportsZoomExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'zoom functions not supported'));\n }\n }\n\n if ((functionType === 'categorical' || isZoomAndPropertyFunction) && options.value.property === undefined) {\n errors.push(new ValidationError(options.key, options.value, '\"property\" property is required'));\n }\n\n return errors;\n\n function validateFunctionStops(options: ValidationOptions) {\n if (functionType === 'identity') {\n return [new ValidationError(options.key, options.value, 'identity function may not have a \"stops\" property')];\n }\n\n let errors = [];\n const value = options.value;\n\n errors = errors.concat(validateArray({\n key: options.key,\n value,\n valueSpec: options.valueSpec,\n style: options.style,\n styleSpec: options.styleSpec,\n arrayElementValidator: validateFunctionStop\n }));\n\n if (getType(value) === 'array' && value.length === 0) {\n errors.push(new ValidationError(options.key, value, 'array must have at least one stop'));\n }\n\n return errors;\n }\n\n function validateFunctionStop(options: ValidationOptions) {\n let errors = [];\n const value = options.value;\n const key = options.key;\n\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n\n if (value.length !== 2) {\n return [new ValidationError(key, value, `array length 2 expected, length ${value.length} found`)];\n }\n\n if (isZoomAndPropertyFunction) {\n if (getType(value[0]) !== 'object') {\n return [new ValidationError(key, value, `object expected, ${getType(value[0])} found`)];\n }\n if (value[0].zoom === undefined) {\n return [new ValidationError(key, value, 'object stop key must have zoom')];\n }\n if (value[0].value === undefined) {\n return [new ValidationError(key, value, 'object stop key must have value')];\n }\n\n const nextStopDomainZoom = unbundle(value[0].zoom);\n if (typeof nextStopDomainZoom !== 'number') {\n return [new ValidationError(key, value[0].zoom, 'stop zoom values must be numbers')];\n }\n\n if (previousStopDomainZoom && previousStopDomainZoom > nextStopDomainZoom) {\n return [new ValidationError(key, value[0].zoom, 'stop zoom values must appear in ascending order')];\n }\n if (nextStopDomainZoom !== previousStopDomainZoom) {\n previousStopDomainZoom = nextStopDomainZoom;\n previousStopDomainValue = undefined;\n stopDomainValues = {};\n }\n errors = errors.concat(validateObject({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: {zoom: {}},\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {zoom: validateNumber, value: validateStopDomainValue}\n }));\n } else {\n errors = errors.concat(validateStopDomainValue({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: {},\n style: options.style,\n styleSpec: options.styleSpec\n }, value));\n }\n\n if (isExpression(deepUnbundle(value[1]))) {\n return errors.concat([new ValidationError(`${key}[1]`, value[1], 'expressions are not allowed in function stops.')]);\n }\n\n return errors.concat(validate({\n key: `${key}[1]`,\n value: value[1],\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n\n function validateStopDomainValue(options: ValidationOptions, stop) {\n const type = getType(options.value);\n const value = unbundle(options.value);\n\n const reportValue = options.value !== null ? options.value : stop;\n\n if (!stopKeyType) {\n stopKeyType = type;\n } else if (type !== stopKeyType) {\n return [new ValidationError(options.key, reportValue, `${type} stop domain type must match previous stop domain type ${stopKeyType}`)];\n }\n\n if (type !== 'number' && type !== 'string' && type !== 'boolean' && typeof value !== 'number' && typeof value !== 'string' && typeof value !== 'boolean') {\n return [new ValidationError(options.key, reportValue, 'stop domain value must be a number, string, or boolean')];\n }\n\n if (type !== 'number' && functionType !== 'categorical') {\n let message = `number expected, ${type} found`;\n if (supportsPropertyExpression(functionValueSpec) && functionType === undefined) {\n message += '\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.';\n }\n return [new ValidationError(options.key, reportValue, message)];\n }\n\n if (functionType === 'categorical' && type === 'number' && (typeof value !== 'number' || !isFinite(value) || Math.floor(value) !== value)) {\n return [new ValidationError(options.key, reportValue, `integer expected, found ${String(value)}`)];\n }\n\n if (functionType !== 'categorical' && type === 'number' && typeof value === 'number' && typeof previousStopDomainValue === 'number' && previousStopDomainValue !== undefined && value < previousStopDomainValue) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must appear in ascending order')];\n } else {\n previousStopDomainValue = value;\n }\n\n if (functionType === 'categorical' && (value: any) in stopDomainValues) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must be unique')];\n } else {\n stopDomainValues[(value: any)] = true;\n }\n\n return [];\n }\n\n function validateFunctionDefault(options: ValidationOptions) {\n return validate({\n key: options.key,\n value: options.value,\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n });\n }\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\n\nimport {createExpression, createPropertyExpression} from '../expression/index.js';\nimport {deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport {isStateConstant, isGlobalPropertyConstant, isFeatureConstant} from '../expression/is_constant.js';\nimport CompoundExpression from '../expression/compound_expression.js';\n\nimport type {Expression} from '../expression/expression.js';\n\nexport default function validateExpression(options: any): Array<ValidationError> {\n const expression = (options.expressionContext === 'property' ? createPropertyExpression : createExpression)(deepUnbundle(options.value), options.valueSpec);\n if (expression.result === 'error') {\n return expression.value.map((error) => {\n return new ValidationError(`${options.key}${error.key}`, options.value, error.message);\n });\n }\n\n const expressionObj = (expression.value: any).expression || (expression.value: any)._styleExpression.expression;\n\n if (options.expressionContext === 'property' && (options.propertyKey === 'text-font') &&\n !expressionObj.outputDefined()) {\n return [new ValidationError(options.key, options.value, `Invalid data expression for \"${options.propertyKey}\". Output values must be contained as literals within the expression.`)];\n }\n\n if (options.expressionContext === 'property' && options.propertyType === 'layout' &&\n (!isStateConstant(expressionObj))) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with layout properties.')];\n }\n\n if (options.expressionContext === 'filter') {\n return disallowedFilterParameters(expressionObj, options);\n }\n\n if (options.expressionContext && options.expressionContext.indexOf('cluster') === 0) {\n if (!isGlobalPropertyConstant(expressionObj, ['zoom', 'feature-state'])) {\n return [new ValidationError(options.key, options.value, '\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];\n }\n if (options.expressionContext === 'cluster-initial' && !isFeatureConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, 'Feature data expressions are not supported with initial expression part of cluster properties.')];\n }\n }\n\n return [];\n}\n\nexport function disallowedFilterParameters(e: Expression, options: any): Array<ValidationError> {\n const disallowedParameters = new Set([\n 'zoom',\n 'feature-state',\n 'pitch',\n 'distance-from-center'\n ]);\n\n if (options.valueSpec && options.valueSpec.expression) {\n for (const param of options.valueSpec.expression.parameters) {\n disallowedParameters.delete(param);\n }\n }\n\n if (disallowedParameters.size === 0) {\n return [];\n }\n const errors = [];\n\n if (e instanceof CompoundExpression) {\n if (disallowedParameters.has(e.name)) {\n return [new ValidationError(options.key, options.value, `[\"${e.name}\"] expression is not supported in a filter for a ${options.object.type} layer with id: ${options.object.id}`)];\n }\n }\n e.eachChild((arg) => {\n errors.push(...disallowedFilterParameters(arg, options));\n });\n\n return errors;\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport {unbundle} from '../util/unbundle_jsonlint.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateEnum(options: ValidationOptions): Array<ValidationError> {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n const errors = [];\n\n if (Array.isArray(valueSpec.values)) { // <=v7\n if (valueSpec.values.indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${valueSpec.values.join(', ')}], ${JSON.stringify(value)} found`));\n }\n } else { // >=v8\n if (Object.keys(valueSpec.values).indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${Object.keys(valueSpec.values).join(', ')}], ${JSON.stringify(value)} found`));\n }\n }\n return errors;\n}\n","// @flow\n\nimport {createExpression} from '../expression/index.js';\nimport {isFeatureConstant} from '../expression/is_constant.js';\nimport {deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport latest from '../reference/latest.js';\nimport type {GlobalProperties, Feature} from '../expression/index.js';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type Point from '@mapbox/point-geometry';\n\nexport type FeatureDistanceData = {bearing: [number, number], center: [number, number], scale: number};\nexport type FilterExpression = (globalProperties: GlobalProperties, feature: Feature, canonical?: CanonicalTileID, featureTileCoord?: Point, featureDistanceData?: FeatureDistanceData) => boolean;\nexport type FeatureFilter = {filter: FilterExpression, dynamicFilter?: FilterExpression, needGeometry: boolean, needFeature: boolean};\n\nexport default createFilter;\nexport {isExpressionFilter, isDynamicFilter, extractStaticFilter};\n\nfunction isExpressionFilter(filter: any): boolean {\n if (filter === true || filter === false) {\n return true;\n }\n\n if (!Array.isArray(filter) || filter.length === 0) {\n return false;\n }\n switch (filter[0]) {\n case 'has':\n return filter.length >= 2 && filter[1] !== '$id' && filter[1] !== '$type';\n\n case 'in':\n return filter.length >= 3 && (typeof filter[1] !== 'string' || Array.isArray(filter[2]));\n\n case '!in':\n case '!has':\n case 'none':\n return false;\n\n case '==':\n case '!=':\n case '>':\n case '>=':\n case '<':\n case '<=':\n return filter.length !== 3 || (Array.isArray(filter[1]) || Array.isArray(filter[2]));\n\n case 'any':\n case 'all':\n for (const f of filter.slice(1)) {\n if (!isExpressionFilter(f) && typeof f !== 'boolean') {\n return false;\n }\n }\n return true;\n\n default:\n return true;\n }\n}\n\n/**\n * Given a filter expressed as nested arrays, return a new function\n * that evaluates whether a given feature (with a .properties or .tags property)\n * passes its test.\n *\n * @private\n * @param {Array} filter mapbox gl filter\n * @param {string} layerType the type of the layer this filter will be applied to.\n * @returns {Function} filter-evaluating function\n */\nfunction createFilter(filter: any, layerType?: string = 'fill'): FeatureFilter {\n if (filter === null || filter === undefined) {\n return {filter: () => true, needGeometry: false, needFeature: false};\n }\n\n if (!isExpressionFilter(filter)) {\n filter = convertFilter(filter);\n }\n const filterExp = ((filter: any): string[] | string | boolean);\n\n let staticFilter = true;\n try {\n staticFilter = extractStaticFilter(filterExp);\n } catch (e) {\n console.warn(\n`Failed to extract static filter. Filter will continue working, but at higher memory usage and slower framerate.\nThis is most likely a bug, please report this via https://github.com/mapbox/mapbox-gl-js/issues/new?assignees=&labels=&template=Bug_report.md\nand paste the contents of this message in the report.\nThank you!\nFilter Expression:\n${JSON.stringify(filterExp, null, 2)}\n `);\n }\n\n // Compile the static component of the filter\n const filterSpec = latest[`filter_${layerType}`];\n const compiledStaticFilter = createExpression(staticFilter, filterSpec);\n\n let filterFunc = null;\n if (compiledStaticFilter.result === 'error') {\n throw new Error(compiledStaticFilter.value.map(err => `${err.key}: ${err.message}`).join(', '));\n } else {\n filterFunc = (globalProperties: GlobalProperties, feature: Feature, canonical?: CanonicalTileID) => compiledStaticFilter.value.evaluate(globalProperties, feature, {}, canonical);\n }\n\n // If the static component is not equal to the entire filter then we have a dynamic component\n // Compile the dynamic component separately\n let dynamicFilterFunc = null;\n let needFeature = null;\n if (staticFilter !== filterExp) {\n const compiledDynamicFilter = createExpression(filterExp, filterSpec);\n\n if (compiledDynamicFilter.result === 'error') {\n throw new Error(compiledDynamicFilter.value.map(err => `${err.key}: ${err.message}`).join(', '));\n } else {\n dynamicFilterFunc = (globalProperties: GlobalProperties, feature: Feature, canonical?: CanonicalTileID, featureTileCoord?: Point, featureDistanceData?: FeatureDistanceData) => compiledDynamicFilter.value.evaluate(globalProperties, feature, {}, canonical, undefined, undefined, featureTileCoord, featureDistanceData);\n needFeature = !isFeatureConstant(compiledDynamicFilter.value.expression);\n }\n }\n\n filterFunc = ((filterFunc: any): FilterExpression);\n const needGeometry = geometryNeeded(staticFilter);\n\n return {\n filter: filterFunc,\n dynamicFilter: dynamicFilterFunc ? dynamicFilterFunc : undefined,\n needGeometry,\n needFeature: !!needFeature\n };\n}\n\nfunction extractStaticFilter(filter: any): any {\n if (!isDynamicFilter(filter)) {\n return filter;\n }\n\n // Shallow copy so we can replace expressions in-place\n let result = deepUnbundle(filter);\n\n // 1. Union branches\n unionDynamicBranches(result);\n\n // 2. Collapse dynamic conditions to `true`\n result = collapseDynamicBooleanExpressions(result);\n\n return result;\n}\n\nfunction collapseDynamicBooleanExpressions(expression: any): any {\n if (!Array.isArray(expression)) {\n return expression;\n }\n\n const collapsed = collapsedExpression(expression);\n if (collapsed === true) {\n return collapsed;\n } else {\n return collapsed.map((subExpression) => collapseDynamicBooleanExpressions(subExpression));\n }\n}\n\n/**\n * Traverses the expression and replaces all instances of branching on a\n * `dynamic` conditional (such as `['pitch']` or `['distance-from-center']`)\n * into an `any` expression.\n * This ensures that all possible outcomes of a `dynamic` branch are considered\n * when evaluating the expression upfront during filtering.\n *\n * @param {Array<any>} filter the filter expression mutated in-place.\n */\nfunction unionDynamicBranches(filter: any) {\n let isBranchingDynamically = false;\n const branches = [];\n\n if (filter[0] === 'case') {\n for (let i = 1; i < filter.length - 1; i += 2) {\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[i]);\n branches.push(filter[i + 1]);\n }\n\n branches.push(filter[filter.length - 1]);\n } else if (filter[0] === 'match') {\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[1]);\n\n for (let i = 2; i < filter.length - 1; i += 2) {\n branches.push(filter[i + 1]);\n }\n branches.push(filter[filter.length - 1]);\n } else if (filter[0] === 'step') {\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[1]);\n\n for (let i = 1; i < filter.length - 1; i += 2) {\n branches.push(filter[i + 1]);\n }\n }\n\n if (isBranchingDynamically) {\n filter.length = 0;\n filter.push('any', ...branches);\n }\n\n // traverse and recurse into children\n for (let i = 1; i < filter.length; i++) {\n unionDynamicBranches(filter[i]);\n }\n}\n\nfunction isDynamicFilter(filter: any): boolean {\n // Base Cases\n if (!Array.isArray(filter)) {\n return false;\n }\n if (isRootExpressionDynamic(filter[0])) {\n return true;\n }\n\n for (let i = 1; i < filter.length; i++) {\n const child = filter[i];\n if (isDynamicFilter(child)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isRootExpressionDynamic(expression: string): boolean {\n return expression === 'pitch' ||\n expression === 'distance-from-center';\n}\n\nconst dynamicConditionExpressions = new Set([\n 'in',\n '==',\n '!=',\n '>',\n '>=',\n '<',\n '<=',\n 'to-boolean'\n]);\n\nfunction collapsedExpression(expression: any): any {\n if (dynamicConditionExpressions.has(expression[0])) {\n\n for (let i = 1; i < expression.length; i++) {\n const param = expression[i];\n if (isDynamicFilter(param)) {\n return true;\n }\n }\n }\n return expression;\n}\n\n// Comparison function to sort numbers and strings\nfunction compare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nfunction geometryNeeded(filter) {\n if (!Array.isArray(filter)) return false;\n if (filter[0] === 'within') return true;\n for (let index = 1; index < filter.length; index++) {\n if (geometryNeeded(filter[index])) return true;\n }\n return false;\n}\n\nfunction convertFilter(filter: ?Array<any>): mixed {\n if (!filter) return true;\n const op = filter[0];\n if (filter.length <= 1) return (op !== 'any');\n const converted =\n op === '==' ? convertComparisonOp(filter[1], filter[2], '==') :\n op === '!=' ? convertNegation(convertComparisonOp(filter[1], filter[2], '==')) :\n op === '<' ||\n op === '>' ||\n op === '<=' ||\n op === '>=' ? convertComparisonOp(filter[1], filter[2], op) :\n op === 'any' ? convertDisjunctionOp(filter.slice(1)) :\n op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter)) :\n op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter).map(convertNegation)) :\n op === 'in' ? convertInOp(filter[1], filter.slice(2)) :\n op === '!in' ? convertNegation(convertInOp(filter[1], filter.slice(2))) :\n op === 'has' ? convertHasOp(filter[1]) :\n op === '!has' ? convertNegation(convertHasOp(filter[1])) :\n op === 'within' ? filter :\n true;\n return converted;\n}\n\nfunction convertComparisonOp(property: string, value: any, op: string) {\n switch (property) {\n case '$type':\n return [`filter-type-${op}`, value];\n case '$id':\n return [`filter-id-${op}`, value];\n default:\n return [`filter-${op}`, property, value];\n }\n}\n\nfunction convertDisjunctionOp(filters: Array<Array<any>>) {\n return ['any'].concat(filters.map(convertFilter));\n}\n\nfunction convertInOp(property: string, values: Array<any>) {\n if (values.length === 0) { return false; }\n switch (property) {\n case '$type':\n return [`filter-type-in`, ['literal', values]];\n case '$id':\n return [`filter-id-in`, ['literal', values]];\n default:\n if (values.length > 200 && !values.some(v => typeof v !== typeof values[0])) {\n return ['filter-in-large', property, ['literal', values.sort(compare)]];\n } else {\n return ['filter-in-small', property, ['literal', values]];\n }\n }\n}\n\nfunction convertHasOp(property: string) {\n switch (property) {\n case '$type':\n return true;\n case '$id':\n return [`filter-has-id`];\n default:\n return [`filter-has`, property];\n }\n}\n\nfunction convertNegation(filter: mixed) {\n return ['!', filter];\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport validateExpression from './validate_expression.js';\nimport validateEnum from './validate_enum.js';\nimport getType from '../util/get_type.js';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport extend from '../util/extend.js';\nimport {isExpressionFilter} from '../feature_filter/index.js';\n\nimport type {ValidationOptions} from './validate.js';\n\ntype Options = ValidationOptions & {\n layerType: string;\n}\n\nexport default function validateFilter(options: Options): Array<ValidationError> {\n if (isExpressionFilter(deepUnbundle(options.value))) {\n // We default to a layerType of `fill` because that points to a non-dynamic filter definition within the style-spec.\n const layerType = options.layerType || 'fill';\n\n return validateExpression(extend({}, options, {\n expressionContext: 'filter',\n valueSpec: options.styleSpec[`filter_${layerType}`]\n }));\n } else {\n return validateNonExpressionFilter(options);\n }\n}\n\nfunction validateNonExpressionFilter(options) {\n const value = options.value;\n const key = options.key;\n\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n\n const styleSpec = options.styleSpec;\n let type;\n\n let errors = [];\n\n if (value.length < 1) {\n return [new ValidationError(key, value, 'filter array must have at least 1 element')];\n }\n\n errors = errors.concat(validateEnum({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: styleSpec.filter_operator,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n\n switch (unbundle(value[0])) {\n case '<':\n case '<=':\n case '>':\n case '>=':\n if (value.length >= 2 && unbundle(value[1]) === '$type') {\n errors.push(new ValidationError(key, value, `\"$type\" cannot be use with operator \"${value[0]}\"`));\n }\n /* falls through */\n case '==':\n case '!=':\n if (value.length !== 3) {\n errors.push(new ValidationError(key, value, `filter array for operator \"${value[0]}\" must have 3 elements`));\n }\n /* falls through */\n case 'in':\n case '!in':\n if (value.length >= 2) {\n type = getType(value[1]);\n if (type !== 'string') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n }\n }\n for (let i = 2; i < value.length; i++) {\n type = getType(value[i]);\n if (unbundle(value[1]) === '$type') {\n errors = errors.concat(validateEnum({\n key: `${key}[${i}]`,\n value: value[i],\n valueSpec: styleSpec.geometry_type,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n } else if (type !== 'string' && type !== 'number' && type !== 'boolean') {\n errors.push(new ValidationError(`${key}[${i}]`, value[i], `string, number, or boolean expected, ${type} found`));\n }\n }\n break;\n\n case 'any':\n case 'all':\n case 'none':\n for (let i = 1; i < value.length; i++) {\n errors = errors.concat(validateNonExpressionFilter({\n key: `${key}[${i}]`,\n value: value[i],\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n break;\n\n case 'has':\n case '!has':\n type = getType(value[1]);\n if (value.length !== 2) {\n errors.push(new ValidationError(key, value, `filter array for \"${value[0]}\" operator must have 2 elements`));\n } else if (type !== 'string') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n }\n break;\n case 'within':\n type = getType(value[1]);\n if (value.length !== 2) {\n errors.push(new ValidationError(key, value, `filter array for \"${value[0]}\" operator must have 2 elements`));\n } else if (type !== 'object') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `object expected, ${type} found`));\n }\n break;\n }\n return errors;\n}\n","// @flow\n\nimport validate from './validate.js';\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport {isFunction} from '../function/index.js';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport {supportsPropertyExpression} from '../util/properties.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport type PropertyValidationOptions = ValidationOptions & {\n objectKey: string;\n layerType: string;\n}\n\nexport default function validateProperty(options: PropertyValidationOptions, propertyType: string): Array<ValidationError> {\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const value = options.value;\n const propertyKey = options.objectKey;\n const layerSpec = styleSpec[`${propertyType}_${options.layerType}`];\n\n if (!layerSpec) return [];\n\n const transitionMatch = propertyKey.match(/^(.*)-transition$/);\n if (propertyType === 'paint' && transitionMatch && layerSpec[transitionMatch[1]] && layerSpec[transitionMatch[1]].transition) {\n return validate({\n key,\n value,\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n });\n }\n\n const valueSpec = options.valueSpec || layerSpec[propertyKey];\n if (!valueSpec) {\n return [new ValidationError(key, value, `unknown property \"${propertyKey}\"`)];\n }\n\n let tokenMatch;\n if (getType(value) === 'string' && supportsPropertyExpression(valueSpec) && !valueSpec.tokens && (tokenMatch = /^{([^}]+)}$/.exec(value))) {\n return [new ValidationError(\n key, value,\n `\"${propertyKey}\" does not support interpolation syntax\\n` +\n `Use an identity property function instead: \\`{ \"type\": \"identity\", \"property\": ${JSON.stringify(tokenMatch[1])} }\\`.`)];\n }\n\n const errors = [];\n\n if (options.layerType === 'symbol') {\n if (propertyKey === 'text-field' && style && !style.glyphs) {\n errors.push(new ValidationError(key, value, 'use of \"text-field\" requires a style \"glyphs\" property'));\n }\n if (propertyKey === 'text-font' && isFunction(deepUnbundle(value)) && unbundle(value.type) === 'identity') {\n errors.push(new ValidationError(key, value, '\"text-font\" does not support identity functions'));\n }\n }\n\n return errors.concat(validate({\n key: options.key,\n value,\n valueSpec,\n style,\n styleSpec,\n expressionContext: 'property',\n propertyType,\n propertyKey\n }));\n}\n","// @flow\n\nimport validateProperty from './validate_property.js';\n\nimport type ValidationError from '../error/validation_error.js';\nimport type {PropertyValidationOptions} from './validate_property.js';\n\nexport default function validatePaintProperty(options: PropertyValidationOptions): Array<ValidationError> {\n return validateProperty(options, 'paint');\n}\n","// @flow\n\nimport validateProperty from './validate_property.js';\n\nimport type ValidationError from '../error/validation_error.js';\nimport type {PropertyValidationOptions} from './validate_property.js';\n\nexport default function validateLayoutProperty(options: PropertyValidationOptions): Array<ValidationError> {\n return validateProperty(options, 'layout');\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport {unbundle} from '../util/unbundle_jsonlint.js';\nimport validateObject from './validate_object.js';\nimport validateFilter from './validate_filter.js';\nimport validatePaintProperty from './validate_paint_property.js';\nimport validateLayoutProperty from './validate_layout_property.js';\nimport validateSpec from './validate.js';\nimport extend from '../util/extend.js';\n\nimport type {ValidationOptions} from './validate.js';\nimport type {LayerSpecification} from '../types.js';\n\ntype Options = ValidationOptions & {\n value: LayerSpecification;\n arrayIndex: number;\n}\n\nexport default function validateLayer(options: Options): Array<ValidationError> {\n let errors = [];\n\n const layer = options.value;\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n\n if (!layer.type && !layer.ref) {\n errors.push(new ValidationError(key, layer, 'either \"type\" or \"ref\" is required'));\n }\n let type = unbundle(layer.type);\n const ref = unbundle(layer.ref);\n\n if (layer.id) {\n const layerId = unbundle(layer.id);\n for (let i = 0; i < options.arrayIndex; i++) {\n const otherLayer = style.layers[i];\n if (unbundle(otherLayer.id) === layerId) {\n // $FlowFixMe[prop-missing] - id.__line__ is added dynamically during the readStyle step\n errors.push(new ValidationError(key, layer.id, `duplicate layer id \"${layer.id}\", previously used at line ${otherLayer.id.__line__}`));\n }\n }\n }\n\n if ('ref' in layer) {\n ['type', 'source', 'source-layer', 'filter', 'layout'].forEach((p) => {\n if (p in layer) {\n errors.push(new ValidationError(key, layer[p], `\"${p}\" is prohibited for ref layers`));\n }\n });\n\n let parent;\n\n style.layers.forEach((layer) => {\n if (unbundle(layer.id) === ref) parent = layer;\n });\n\n if (!parent) {\n if (typeof ref === 'string')\n errors.push(new ValidationError(key, layer.ref, `ref layer \"${ref}\" not found`));\n } else if (parent.ref) {\n errors.push(new ValidationError(key, layer.ref, 'ref cannot reference another ref layer'));\n } else {\n type = unbundle(parent.type);\n }\n } else if (!(type === 'background' || type === 'sky')) {\n if (!layer.source) {\n errors.push(new ValidationError(key, layer, 'missing required property \"source\"'));\n } else {\n const source = style.sources && style.sources[layer.source];\n const sourceType = source && unbundle(source.type);\n if (!source) {\n errors.push(new ValidationError(key, layer.source, `source \"${layer.source}\" not found`));\n } else if (sourceType === 'vector' && type === 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a raster source`));\n } else if (sourceType === 'raster' && type !== 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a vector source`));\n } else if (sourceType === 'vector' && !layer['source-layer']) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" must specify a \"source-layer\"`));\n } else if (sourceType === 'raster-dem' && type !== 'hillshade') {\n errors.push(new ValidationError(key, layer.source, 'raster-dem source can only be used with layer type \\'hillshade\\'.'));\n } else if (type === 'line' && layer.paint && (layer.paint['line-gradient'] || layer.paint['line-trim-offset']) &&\n (sourceType !== 'geojson' || !source.lineMetrics)) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`));\n }\n }\n }\n\n errors = errors.concat(validateObject({\n key,\n value: layer,\n valueSpec: styleSpec.layer,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'() {\n return [];\n },\n // We don't want to enforce the spec's `\"requires\": true` for backward compatibility with refs;\n // the actual requirement is validated above. See https://github.com/mapbox/mapbox-gl-js/issues/5772.\n type() {\n return validateSpec({\n key: `${key}.type`,\n value: layer.type,\n valueSpec: styleSpec.layer.type,\n style: options.style,\n styleSpec: options.styleSpec,\n object: layer,\n objectKey: 'type'\n });\n },\n filter(options) {\n return validateFilter(extend({layerType: type}, options));\n },\n layout(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n valueSpec: {},\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'(options) {\n return validateLayoutProperty(extend({layerType: type}, options));\n }\n }\n });\n },\n paint(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n valueSpec: {},\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'(options) {\n return validatePaintProperty(extend({layerType: type}, options));\n }\n }\n });\n }\n }\n }));\n\n return errors;\n}\n","// @flow\n\nimport getType from '../util/get_type.js';\nimport ValidationError from '../error/validation_error.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateString(options: $Shape<ValidationOptions>): Array<ValidationError> {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n\n if (type !== 'string') {\n return [new ValidationError(key, value, `string expected, ${type} found`)];\n }\n\n return [];\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport {unbundle} from '../util/unbundle_jsonlint.js';\nimport validateObject from './validate_object.js';\nimport validateEnum from './validate_enum.js';\nimport validateExpression from './validate_expression.js';\nimport validateString from './validate_string.js';\nimport getType from '../util/get_type.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nconst objectElementValidators = {\n promoteId: validatePromoteId\n};\n\nexport default function validateSource(options: ValidationOptions): Array<ValidationError> {\n const value = options.value;\n const key = options.key;\n const styleSpec = options.styleSpec;\n const style = options.style;\n\n if (!value.type) {\n return [new ValidationError(key, value, '\"type\" is required')];\n }\n\n const type = unbundle(value.type);\n let errors;\n\n switch (type) {\n case 'vector':\n case 'raster':\n case 'raster-dem':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec[`source_${type.replace('-', '_')}`],\n style: options.style,\n styleSpec,\n objectElementValidators\n });\n return errors;\n\n case 'geojson':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec.source_geojson,\n style,\n styleSpec,\n objectElementValidators\n });\n if (value.cluster) {\n for (const prop in value.clusterProperties) {\n const [operator, mapExpr] = value.clusterProperties[prop];\n const reduceExpr = typeof operator === 'string' ? [operator, ['accumulated'], ['get', prop]] : operator;\n\n errors.push(...validateExpression({\n key: `${key}.${prop}.map`,\n value: mapExpr,\n expressionContext: 'cluster-map'\n }));\n errors.push(...validateExpression({\n key: `${key}.${prop}.reduce`,\n value: reduceExpr,\n expressionContext: 'cluster-reduce'\n }));\n }\n }\n return errors;\n\n case 'video':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_video,\n style,\n styleSpec\n });\n\n case 'image':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_image,\n style,\n styleSpec\n });\n\n case 'canvas':\n return [new ValidationError(key, null, `Please use runtime APIs to add canvas sources, rather than including them in stylesheets.`, 'source.canvas')];\n\n default:\n return validateEnum({\n key: `${key}.type`,\n value: value.type,\n valueSpec: {values: ['vector', 'raster', 'raster-dem', 'geojson', 'video', 'image']},\n style,\n styleSpec\n });\n }\n}\n\nfunction validatePromoteId({key, value}) {\n if (getType(value) === 'string') {\n return validateString({key, value});\n } else {\n const errors = [];\n for (const prop in value) {\n errors.push(...validateString({key: `${key}.${prop}`, value: value[prop]}));\n }\n return errors;\n }\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport validate from './validate.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateLight(options: ValidationOptions): Array<ValidationError> {\n const light = options.value;\n const styleSpec = options.styleSpec;\n const lightSpec = styleSpec.light;\n const style = options.style;\n\n let errors = [];\n\n const rootType = getType(light);\n if (light === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('light', light, `object expected, ${rootType} found`)]);\n return errors;\n }\n\n for (const key in light) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n\n if (transitionMatch && lightSpec[transitionMatch[1]] && lightSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n } else if (lightSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n valueSpec: lightSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, light[key], `unknown property \"${key}\"`)]);\n }\n }\n\n return errors;\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport validate from './validate.js';\nimport getType from '../util/get_type.js';\nimport {unbundle} from '../util/unbundle_jsonlint.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateTerrain(options: ValidationOptions): Array<ValidationError> {\n const terrain = options.value;\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const terrainSpec = styleSpec.terrain;\n let errors = [];\n\n const rootType = getType(terrain);\n if (terrain === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('terrain', terrain, `object expected, ${rootType} found`)]);\n return errors;\n }\n\n for (const key in terrain) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n\n if (transitionMatch && terrainSpec[transitionMatch[1]] && terrainSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: terrain[key],\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n } else if (terrainSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: terrain[key],\n valueSpec: terrainSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, terrain[key], `unknown property \"${key}\"`)]);\n }\n }\n\n if (!terrain.source) {\n errors.push(new ValidationError(key, terrain, `terrain is missing required property \"source\"`));\n } else {\n const source = style.sources && style.sources[terrain.source];\n const sourceType = source && unbundle(source.type);\n if (!source) {\n errors.push(new ValidationError(key, terrain.source, `source \"${terrain.source}\" not found`));\n } else if (sourceType !== 'raster-dem') {\n errors.push(new ValidationError(key, terrain.source, `terrain cannot be used with a source of type ${String(sourceType)}, it only be used with a \"raster-dem\" source type`));\n }\n }\n\n return errors;\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport validate from './validate.js';\nimport getType from '../util/get_type.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateFog(options: ValidationOptions): Array<ValidationError> {\n const fog = options.value;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const fogSpec = styleSpec.fog;\n let errors = [];\n\n const rootType = getType(fog);\n if (fog === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('fog', fog, `object expected, ${rootType} found`)]);\n return errors;\n }\n\n for (const key in fog) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n\n if (transitionMatch && fogSpec[transitionMatch[1]] && fogSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: fog[key],\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n } else if (fogSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: fog[key],\n valueSpec: fogSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, fog[key], `unknown property \"${key}\"`)]);\n }\n }\n\n return errors;\n}\n","// @flow\n\nimport extend from '../util/extend.js';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport {isExpression} from '../expression/index.js';\nimport {isFunction} from '../function/index.js';\n\nimport validateFunction from './validate_function.js';\nimport validateExpression from './validate_expression.js';\nimport validateObject from './validate_object.js';\nimport validateArray from './validate_array.js';\nimport validateBoolean from './validate_boolean.js';\nimport validateNumber from './validate_number.js';\nimport validateColor from './validate_color.js';\nimport validateEnum from './validate_enum.js';\nimport validateFilter from './validate_filter.js';\nimport validateLayer from './validate_layer.js';\nimport validateSource from './validate_source.js';\nimport validateLight from './validate_light.js';\nimport validateTerrain from './validate_terrain.js';\nimport validateFog from './validate_fog.js';\nimport validateString from './validate_string.js';\nimport validateFormatted from './validate_formatted.js';\nimport validateImage from './validate_image.js';\nimport validateProjection from './validate_projection.js';\n\nimport type {StyleReference} from '../reference/latest.js';\nimport type {StyleSpecification} from '../types.js';\nimport type ValidationError from '../error/validation_error.js';\n\nconst VALIDATORS = {\n '*'() {\n return [];\n },\n 'array': validateArray,\n 'boolean': validateBoolean,\n 'number': validateNumber,\n 'color': validateColor,\n 'enum': validateEnum,\n 'filter': validateFilter,\n 'function': validateFunction,\n 'layer': validateLayer,\n 'object': validateObject,\n 'source': validateSource,\n 'light': validateLight,\n 'terrain': validateTerrain,\n 'fog': validateFog,\n 'string': validateString,\n 'formatted': validateFormatted,\n 'resolvedImage': validateImage,\n 'projection': validateProjection\n};\n\n// Main recursive validation function. Tracks:\n//\n// - key: string representing location of validation in style tree. Used only\n// for more informative error reporting.\n// - value: current value from style being evaluated. May be anything from a\n// high level object that needs to be descended into deeper or a simple\n// scalar value.\n// - valueSpec: current spec being evaluated. Tracks value.\n// - styleSpec: current full spec being evaluated.\nexport type ValidationOptions = {\n key: string;\n value: Object;\n valueSpec: Object;\n style: $Shape<StyleSpecification>;\n styleSpec: StyleReference;\n}\n\nexport default function validate(options: ValidationOptions): Array<ValidationError> {\n const value = options.value;\n const valueSpec = options.valueSpec;\n const styleSpec = options.styleSpec;\n\n if (valueSpec.expression && isFunction(unbundle(value))) {\n return validateFunction(options);\n\n } else if (valueSpec.expression && isExpression(deepUnbundle(value))) {\n return validateExpression(options);\n\n } else if (valueSpec.type && VALIDATORS[valueSpec.type]) {\n return VALIDATORS[valueSpec.type](options);\n\n } else {\n const valid = validateObject(extend({}, options, {\n valueSpec: valueSpec.type ? styleSpec[valueSpec.type] : valueSpec\n }));\n return valid;\n }\n}\n","// @flow\n\nimport getType from '../util/get_type.js';\nimport ValidationError from '../error/validation_error.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateBoolean(options: ValidationOptions): Array<ValidationError> {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n\n if (type !== 'boolean') {\n return [new ValidationError(key, value, `boolean expected, ${type} found`)];\n }\n\n return [];\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport {parseCSSColor} from 'csscolorparser';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateColor(options: ValidationOptions): Array<ValidationError> {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n\n if (type !== 'string') {\n return [new ValidationError(key, value, `color expected, ${type} found`)];\n }\n\n if (parseCSSColor(value) === null) {\n return [new ValidationError(key, value, `color expected, \"${value}\" found`)];\n }\n\n return [];\n}\n","// @flow\n\nimport validateExpression from './validate_expression.js';\nimport validateString from './validate_string.js';\n\nimport type {ValidationOptions} from './validate.js';\nimport type ValidationError from '../error/validation_error.js';\n\nexport default function validateFormatted(options: ValidationOptions): Array<ValidationError> {\n if (validateString(options).length === 0) {\n return [];\n }\n\n return validateExpression(options);\n}\n","// @flow\n\nimport validateExpression from './validate_expression.js';\nimport validateString from './validate_string.js';\n\nimport type {ValidationOptions} from './validate.js';\nimport type ValidationError from '../error/validation_error.js';\n\nexport default function validateImage(options: ValidationOptions): Array<ValidationError> {\n if (validateString(options).length === 0) {\n return [];\n }\n\n return validateExpression(options);\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport validate from './validate.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateProjection(options: ValidationOptions): Array<ValidationError> {\n const projection = options.value;\n const styleSpec = options.styleSpec;\n const projectionSpec = styleSpec.projection;\n const style = options.style;\n\n let errors = [];\n\n const rootType = getType(projection);\n\n if (rootType === 'object') {\n for (const key in projection) {\n errors = errors.concat(validate({\n key,\n value: projection[key],\n valueSpec: projectionSpec[key],\n style,\n styleSpec\n }));\n }\n } else if (rootType !== 'string') {\n errors = errors.concat([new ValidationError('projection', projection, `object or string expected, ${rootType} found`)]);\n }\n\n return errors;\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport validateString from './validate_string.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function(options: ValidationOptions): Array<ValidationError> {\n const value = options.value;\n const key = options.key;\n\n const errors = validateString(options);\n if (errors.length) return errors;\n\n if (value.indexOf('{fontstack}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{fontstack}\" token'));\n }\n\n if (value.indexOf('{range}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{range}\" token'));\n }\n\n return errors;\n}\n","// @flow\nimport validate from './validate/validate.js';\nimport latestStyleSpec from './reference/latest.js';\nimport validateGlyphsURL from './validate/validate_glyphs_url.js';\n\nimport _validateSource from './validate/validate_source.js';\nimport _validateLight from './validate/validate_light.js';\nimport _validateTerrain from './validate/validate_terrain.js';\nimport _validateFog from './validate/validate_fog.js';\nimport _validateLayer from './validate/validate_layer.js';\nimport _validateFilter from './validate/validate_filter.js';\nimport _validatePaintProperty from './validate/validate_paint_property.js';\nimport _validateLayoutProperty from './validate/validate_layout_property.js';\n\nimport type {StyleSpecification} from './types.js';\n\nexport type ValidationError = {\n message: string;\n identifier?: ?string;\n line?: ?number;\n};\nexport type ValidationErrors = $ReadOnlyArray<ValidationError>;\nexport type Validator = (Object) => ValidationErrors;\n\n/**\n * Validate a Mapbox GL style against the style specification. This entrypoint,\n * `mapbox-gl-style-spec/lib/validate_style.min`, is designed to produce as\n * small a browserify bundle as possible by omitting unnecessary functionality\n * and legacy style specifications.\n *\n * @private\n * @param {Object} style The style to be validated.\n * @param {Object} [styleSpec] The style specification to validate against.\n * If omitted, the latest style spec is used.\n * @returns {Array<ValidationError>}\n * @example\n * var validate = require('mapbox-gl-style-spec/lib/validate_style.min');\n * var errors = validate(style);\n */\nexport function validateStyle(style: StyleSpecification, styleSpec: Object = latestStyleSpec): ValidationErrors {\n\n const errors = validate({\n key: '',\n value: style,\n valueSpec: styleSpec.$root,\n styleSpec,\n style,\n objectElementValidators: {\n glyphs: validateGlyphsURL,\n '*': () => []\n }\n });\n return sortErrors(errors);\n}\n\nexport const validateSource: Validator = opts => sortErrors(_validateSource(opts));\nexport const validateLight: Validator = opts => sortErrors(_validateLight(opts));\nexport const validateTerrain: Validator = opts => sortErrors(_validateTerrain(opts));\nexport const validateFog: Validator = opts => sortErrors(_validateFog(opts));\nexport const validateLayer: Validator = opts => sortErrors(_validateLayer(opts));\nexport const validateFilter: Validator = opts => sortErrors(_validateFilter(opts));\nexport const validatePaintProperty: Validator = opts => sortErrors(_validatePaintProperty(opts));\nexport const validateLayoutProperty: Validator = opts => sortErrors(_validateLayoutProperty(opts));\n\nfunction sortErrors(errors) {\n return errors.slice().sort((a, b) => a.line && b.line ? a.line - b.line : 0);\n}\n","// @flow\nimport {ErrorEvent} from '../util/evented.js';\n\nimport type {Evented} from '../util/evented.js';\nimport type {ValidationErrors as _ValidationErrors} from '../style-spec/validate_style.min.js';\n\nexport type {Validator, ValidationErrors} from '../style-spec/validate_style.min.js';\n\nexport function emitValidationErrors(emitter: Evented, errors: ?_ValidationErrors): boolean {\n let hasErrors = false;\n if (errors && errors.length) {\n for (const error of errors) {\n emitter.fire(new ErrorEvent(new Error(error.message)));\n hasErrors = true;\n }\n }\n return hasErrors;\n}\n\nexport {\n validateStyle,\n validateSource,\n validateLight,\n validateTerrain,\n validateFog,\n validateLayer,\n validateFilter,\n validatePaintProperty,\n validateLayoutProperty\n} from '../style-spec/validate_style.min.js';\n","'use strict';\n\nmodule.exports = GridIndex;\n\nvar NUM_PARAMS = 3;\n\nfunction GridIndex(extent, n, padding) {\n var cells = this.cells = [];\n\n if (extent instanceof ArrayBuffer) {\n this.arrayBuffer = extent;\n var array = new Int32Array(this.arrayBuffer);\n extent = array[0];\n n = array[1];\n padding = array[2];\n\n this.d = n + 2 * padding;\n for (var k = 0; k < this.d * this.d; k++) {\n var start = array[NUM_PARAMS + k];\n var end = array[NUM_PARAMS + k + 1];\n cells.push(start === end ?\n null :\n array.subarray(start, end));\n }\n var keysOffset = array[NUM_PARAMS + cells.length];\n var bboxesOffset = array[NUM_PARAMS + cells.length + 1];\n this.keys = array.subarray(keysOffset, bboxesOffset);\n this.bboxes = array.subarray(bboxesOffset);\n\n this.insert = this._insertReadonly;\n\n } else {\n this.d = n + 2 * padding;\n for (var i = 0; i < this.d * this.d; i++) {\n cells.push([]);\n }\n this.keys = [];\n this.bboxes = [];\n }\n\n this.n = n;\n this.extent = extent;\n this.padding = padding;\n this.scale = n / extent;\n this.uid = 0;\n\n var p = (padding / n) * extent;\n this.min = -p;\n this.max = extent + p;\n}\n\n\nGridIndex.prototype.insert = function(key, x1, y1, x2, y2) {\n this._forEachCell(x1, y1, x2, y2, this._insertCell, this.uid++);\n this.keys.push(key);\n this.bboxes.push(x1);\n this.bboxes.push(y1);\n this.bboxes.push(x2);\n this.bboxes.push(y2);\n};\n\nGridIndex.prototype._insertReadonly = function() {\n throw 'Cannot insert into a GridIndex created from an ArrayBuffer.';\n};\n\nGridIndex.prototype._insertCell = function(x1, y1, x2, y2, cellIndex, uid) {\n this.cells[cellIndex].push(uid);\n};\n\nGridIndex.prototype.query = function(x1, y1, x2, y2, intersectionTest) {\n var min = this.min;\n var max = this.max;\n if (x1 <= min && y1 <= min && max <= x2 && max <= y2 && !intersectionTest) {\n // We use `Array#slice` because `this.keys` may be a `Int32Array` and\n // some browsers (Safari and IE) do not support `TypedArray#slice`\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/slice#Browser_compatibility\n return Array.prototype.slice.call(this.keys);\n\n } else {\n var result = [];\n var seenUids = {};\n this._forEachCell(x1, y1, x2, y2, this._queryCell, result, seenUids, intersectionTest);\n return result;\n }\n};\n\nGridIndex.prototype._queryCell = function(x1, y1, x2, y2, cellIndex, result, seenUids, intersectionTest) {\n var cell = this.cells[cellIndex];\n if (cell !== null) {\n var keys = this.keys;\n var bboxes = this.bboxes;\n for (var u = 0; u < cell.length; u++) {\n var uid = cell[u];\n if (seenUids[uid] === undefined) {\n var offset = uid * 4;\n if (intersectionTest ?\n intersectionTest(bboxes[offset + 0], bboxes[offset + 1], bboxes[offset + 2], bboxes[offset + 3]) :\n ((x1 <= bboxes[offset + 2]) &&\n (y1 <= bboxes[offset + 3]) &&\n (x2 >= bboxes[offset + 0]) &&\n (y2 >= bboxes[offset + 1]))) {\n seenUids[uid] = true;\n result.push(keys[uid]);\n } else {\n seenUids[uid] = false;\n }\n }\n }\n }\n};\n\nGridIndex.prototype._forEachCell = function(x1, y1, x2, y2, fn, arg1, arg2, intersectionTest) {\n var cx1 = this._convertToCellCoord(x1);\n var cy1 = this._convertToCellCoord(y1);\n var cx2 = this._convertToCellCoord(x2);\n var cy2 = this._convertToCellCoord(y2);\n for (var x = cx1; x <= cx2; x++) {\n for (var y = cy1; y <= cy2; y++) {\n var cellIndex = this.d * y + x;\n if (intersectionTest && !intersectionTest(\n this._convertFromCellCoord(x),\n this._convertFromCellCoord(y),\n this._convertFromCellCoord(x + 1),\n this._convertFromCellCoord(y + 1))) continue;\n if (fn.call(this, x1, y1, x2, y2, cellIndex, arg1, arg2, intersectionTest)) return;\n }\n }\n};\n\nGridIndex.prototype._convertFromCellCoord = function(x) {\n return (x - this.padding) / this.scale;\n};\n\nGridIndex.prototype._convertToCellCoord = function(x) {\n return Math.max(0, Math.min(this.d - 1, Math.floor(x * this.scale) + this.padding));\n};\n\nGridIndex.prototype.toArrayBuffer = function() {\n if (this.arrayBuffer) return this.arrayBuffer;\n\n var cells = this.cells;\n\n var metadataLength = NUM_PARAMS + this.cells.length + 1 + 1;\n var totalCellLength = 0;\n for (var i = 0; i < this.cells.length; i++) {\n totalCellLength += this.cells[i].length;\n }\n\n var array = new Int32Array(metadataLength + totalCellLength + this.keys.length + this.bboxes.length);\n array[0] = this.extent;\n array[1] = this.n;\n array[2] = this.padding;\n\n var offset = metadataLength;\n for (var k = 0; k < cells.length; k++) {\n var cell = cells[k];\n array[NUM_PARAMS + k] = offset;\n array.set(cell, offset);\n offset += cell.length;\n }\n\n array[NUM_PARAMS + cells.length] = offset;\n array.set(this.keys, offset);\n offset += this.keys.length;\n\n array[NUM_PARAMS + cells.length + 1] = offset;\n array.set(this.bboxes, offset);\n offset += this.bboxes.length;\n\n return array.buffer;\n};\n","// @flow\n\nimport assert from 'assert';\n\nimport Grid from 'grid-index';\nimport Color from '../style-spec/util/color.js';\nimport {StylePropertyFunction, StyleExpression, ZoomDependentExpression, ZoomConstantExpression} from '../style-spec/expression/index.js';\nimport CompoundExpression from '../style-spec/expression/compound_expression.js';\nimport expressions from '../style-spec/expression/definitions/index.js';\nimport ResolvedImage from '../style-spec/expression/types/resolved_image.js';\nimport window from './window.js';\nimport {AJAXError} from './ajax.js';\n\nimport type {Transferable} from '../types/transferable.js';\n\ntype SerializedObject = {[_: string]: Serialized }; // eslint-disable-line\nexport type Serialized =\n | null\n | void\n | boolean\n | number\n | string\n | Boolean\n | Number\n | String\n | Date\n | RegExp\n | ArrayBuffer\n | $ArrayBufferView\n | ImageData\n | Array<Serialized>\n | SerializedObject;\n\ntype Registry = {\n [_: string]: {\n klass: Class<any>,\n omit: $ReadOnlyArray<string>\n }\n};\n\ntype RegisterOptions<T> = {\n omit?: $ReadOnlyArray<$Keys<T>>\n}\n\nconst registry: Registry = {};\n\n/**\n * Register the given class as serializable.\n *\n * @param options\n * @param options.omit List of properties to omit from serialization (e.g., cached/computed properties)\n *\n * @private\n */\nexport function register<T: any>(klass: Class<T>, name: string, options: RegisterOptions<T> = {}) {\n assert(name, 'Can\\'t register a class without a name.');\n assert(!registry[name], `${name} is already registered.`);\n (Object.defineProperty: any)(klass, '_classRegistryKey', {\n value: name,\n writeable: false\n });\n registry[name] = {\n klass,\n omit: options.omit || []\n };\n}\n\nregister(Object, 'Object');\n\ntype SerializedGrid = { buffer: ArrayBuffer };\n\n(Grid: any).serialize = function serialize(grid: Grid, transferables?: Array<Transferable>): SerializedGrid {\n const buffer = grid.toArrayBuffer();\n if (transferables) {\n transferables.push(buffer);\n }\n return {buffer};\n};\n\n(Grid: any).deserialize = function deserialize(serialized: SerializedGrid): Grid {\n return new Grid(serialized.buffer);\n};\n\nObject.defineProperty(Grid, 'name', {value: 'Grid'});\n\nregister(Grid, 'Grid');\n\nregister(Color, 'Color');\nregister(Error, 'Error');\nregister(AJAXError, 'AJAXError');\nregister(ResolvedImage, 'ResolvedImage');\nregister(StylePropertyFunction, 'StylePropertyFunction');\nregister(StyleExpression, 'StyleExpression', {omit: ['_evaluator']});\n\nregister(ZoomDependentExpression, 'ZoomDependentExpression');\nregister(ZoomConstantExpression, 'ZoomConstantExpression');\nregister(CompoundExpression, 'CompoundExpression', {omit: ['_evaluate']});\nfor (const name in expressions) {\n if (!registry[(expressions[name]: any)._classRegistryKey]) register(expressions[name], `Expression${name}`);\n}\n\nfunction isArrayBuffer(val: any): boolean {\n return val && typeof ArrayBuffer !== 'undefined' &&\n (val instanceof ArrayBuffer || (val.constructor && val.constructor.name === 'ArrayBuffer'));\n}\n\nfunction isImageBitmap(val: any): boolean {\n return window.ImageBitmap &&\n val instanceof window.ImageBitmap;\n}\n\n/**\n * Serialize the given object for transfer to or from a web worker.\n *\n * For non-builtin types, recursively serialize each property (possibly\n * omitting certain properties - see register()), and package the result along\n * with the constructor's `name` so that the appropriate constructor can be\n * looked up in `deserialize()`.\n *\n * If a `transferables` array is provided, add any transferable objects (i.e.,\n * any ArrayBuffers or ArrayBuffer views) to the list. (If a copy is needed,\n * this should happen in the client code, before using serialize().)\n *\n * @private\n */\nexport function serialize(input: mixed, transferables: ?Array<Transferable>): Serialized {\n if (input === null ||\n input === undefined ||\n typeof input === 'boolean' ||\n typeof input === 'number' ||\n typeof input === 'string' ||\n input instanceof Boolean ||\n input instanceof Number ||\n input instanceof String ||\n input instanceof Date ||\n input instanceof RegExp) {\n return input;\n }\n\n if (isArrayBuffer(input) || isImageBitmap(input)) {\n if (transferables) {\n transferables.push(((input: any): ArrayBuffer));\n }\n return (input: any);\n }\n\n if (ArrayBuffer.isView(input)) {\n const view: $ArrayBufferView = (input: any);\n if (transferables) {\n transferables.push(view.buffer);\n }\n return view;\n }\n\n if (input instanceof window.ImageData) {\n if (transferables) {\n transferables.push(input.data.buffer);\n }\n return input;\n }\n\n if (Array.isArray(input)) {\n const serialized: Array<Serialized> = [];\n for (const item of input) {\n serialized.push(serialize(item, transferables));\n }\n return serialized;\n }\n\n if (typeof input === 'object') {\n const klass = (input.constructor: any);\n const name = klass._classRegistryKey;\n if (!name) {\n throw new Error(`can't serialize object of unregistered class ${name}`);\n }\n assert(registry[name]);\n\n const properties: SerializedObject = klass.serialize ?\n // (Temporary workaround) allow a class to provide static\n // `serialize()` and `deserialize()` methods to bypass the generic\n // approach.\n // This temporary workaround lets us use the generic serialization\n // approach for objects whose members include instances of dynamic\n // StructArray types. Once we refactor StructArray to be static,\n // we can remove this complexity.\n (klass.serialize(input, transferables): SerializedObject) : {};\n\n if (!klass.serialize) {\n for (const key in input) {\n // any cast due to https://github.com/facebook/flow/issues/5393\n if (!(input: any).hasOwnProperty(key)) continue;\n if (registry[name].omit.indexOf(key) >= 0) continue;\n const property = (input: any)[key];\n properties[key] = serialize(property, transferables);\n }\n if (input instanceof Error) {\n properties.message = input.message;\n }\n } else {\n // make sure statically serialized object survives transfer of $name property\n assert(!transferables || properties !== transferables[transferables.length - 1]);\n }\n\n if (properties.$name) {\n throw new Error('$name property is reserved for worker serialization logic.');\n }\n if (name !== 'Object') {\n properties.$name = name;\n }\n\n return properties;\n }\n\n throw new Error(`can't serialize object of type ${typeof input}`);\n}\n\nexport function deserialize(input: Serialized): mixed {\n if (input === null ||\n input === undefined ||\n typeof input === 'boolean' ||\n typeof input === 'number' ||\n typeof input === 'string' ||\n input instanceof Boolean ||\n input instanceof Number ||\n input instanceof String ||\n input instanceof Date ||\n input instanceof RegExp ||\n isArrayBuffer(input) ||\n isImageBitmap(input) ||\n ArrayBuffer.isView(input) ||\n input instanceof window.ImageData) {\n return input;\n }\n\n if (Array.isArray(input)) {\n return input.map(deserialize);\n }\n\n if (typeof input === 'object') {\n const name = (input: any).$name || 'Object';\n\n const {klass} = registry[name];\n if (!klass) {\n throw new Error(`can't deserialize unregistered class ${name}`);\n }\n\n if (klass.deserialize) {\n return (klass.deserialize: typeof deserialize)(input);\n }\n\n const result = Object.create(klass.prototype);\n\n for (const key of Object.keys(input)) {\n if (key === '$name') continue;\n const value = (input: SerializedObject)[key];\n result[key] = deserialize(value);\n }\n\n return result;\n }\n\n throw new Error(`can't deserialize object of type ${typeof input}`);\n}\n","// @flow\n\nclass ZoomHistory {\n lastZoom: number;\n lastFloorZoom: number;\n lastIntegerZoom: number;\n lastIntegerZoomTime: number;\n first: boolean;\n\n constructor() {\n this.first = true;\n }\n\n update(z: number, now: number): boolean {\n const floorZ = Math.floor(z);\n\n if (this.first) {\n this.first = false;\n this.lastIntegerZoom = floorZ;\n this.lastIntegerZoomTime = 0;\n this.lastZoom = z;\n this.lastFloorZoom = floorZ;\n return true;\n }\n\n if (this.lastFloorZoom > floorZ) {\n this.lastIntegerZoom = floorZ + 1;\n this.lastIntegerZoomTime = now;\n } else if (this.lastFloorZoom < floorZ) {\n this.lastIntegerZoom = floorZ;\n this.lastIntegerZoomTime = now;\n }\n\n if (z !== this.lastZoom) {\n this.lastZoom = z;\n this.lastFloorZoom = floorZ;\n return true;\n }\n\n return false;\n }\n}\n\nexport default ZoomHistory;\n","// @flow\n\n// The following table comes from <http://www.unicode.org/Public/12.0.0/ucd/Blocks.txt>.\n// Keep it synchronized with <http://www.unicode.org/Public/UCD/latest/ucd/Blocks.txt>.\n\ntype UnicodeBlockLookup = {[key: string]: (char: number) => boolean};\n\nconst unicodeBlockLookup: UnicodeBlockLookup = {\n // 'Basic Latin': (char) => char >= 0x0000 && char <= 0x007F,\n 'Latin-1 Supplement': (char) => char >= 0x0080 && char <= 0x00FF,\n // 'Latin Extended-A': (char) => char >= 0x0100 && char <= 0x017F,\n // 'Latin Extended-B': (char) => char >= 0x0180 && char <= 0x024F,\n // 'IPA Extensions': (char) => char >= 0x0250 && char <= 0x02AF,\n // 'Spacing Modifier Letters': (char) => char >= 0x02B0 && char <= 0x02FF,\n // 'Combining Diacritical Marks': (char) => char >= 0x0300 && char <= 0x036F,\n // 'Greek and Coptic': (char) => char >= 0x0370 && char <= 0x03FF,\n // 'Cyrillic': (char) => char >= 0x0400 && char <= 0x04FF,\n // 'Cyrillic Supplement': (char) => char >= 0x0500 && char <= 0x052F,\n // 'Armenian': (char) => char >= 0x0530 && char <= 0x058F,\n //'Hebrew': (char) => char >= 0x0590 && char <= 0x05FF,\n 'Arabic': (char) => char >= 0x0600 && char <= 0x06FF,\n //'Syriac': (char) => char >= 0x0700 && char <= 0x074F,\n 'Arabic Supplement': (char) => char >= 0x0750 && char <= 0x077F,\n // 'Thaana': (char) => char >= 0x0780 && char <= 0x07BF,\n // 'NKo': (char) => char >= 0x07C0 && char <= 0x07FF,\n // 'Samaritan': (char) => char >= 0x0800 && char <= 0x083F,\n // 'Mandaic': (char) => char >= 0x0840 && char <= 0x085F,\n // 'Syriac Supplement': (char) => char >= 0x0860 && char <= 0x086F,\n 'Arabic Extended-A': (char) => char >= 0x08A0 && char <= 0x08FF,\n // 'Devanagari': (char) => char >= 0x0900 && char <= 0x097F,\n // 'Bengali': (char) => char >= 0x0980 && char <= 0x09FF,\n // 'Gurmukhi': (char) => char >= 0x0A00 && char <= 0x0A7F,\n // 'Gujarati': (char) => char >= 0x0A80 && char <= 0x0AFF,\n // 'Oriya': (char) => char >= 0x0B00 && char <= 0x0B7F,\n // 'Tamil': (char) => char >= 0x0B80 && char <= 0x0BFF,\n // 'Telugu': (char) => char >= 0x0C00 && char <= 0x0C7F,\n // 'Kannada': (char) => char >= 0x0C80 && char <= 0x0CFF,\n // 'Malayalam': (char) => char >= 0x0D00 && char <= 0x0D7F,\n // 'Sinhala': (char) => char >= 0x0D80 && char <= 0x0DFF,\n // 'Thai': (char) => char >= 0x0E00 && char <= 0x0E7F,\n // 'Lao': (char) => char >= 0x0E80 && char <= 0x0EFF,\n // 'Tibetan': (char) => char >= 0x0F00 && char <= 0x0FFF,\n // 'Myanmar': (char) => char >= 0x1000 && char <= 0x109F,\n // 'Georgian': (char) => char >= 0x10A0 && char <= 0x10FF,\n 'Hangul Jamo': (char) => char >= 0x1100 && char <= 0x11FF,\n // 'Ethiopic': (char) => char >= 0x1200 && char <= 0x137F,\n // 'Ethiopic Supplement': (char) => char >= 0x1380 && char <= 0x139F,\n // 'Cherokee': (char) => char >= 0x13A0 && char <= 0x13FF,\n 'Unified Canadian Aboriginal Syllabics': (char) => char >= 0x1400 && char <= 0x167F,\n // 'Ogham': (char) => char >= 0x1680 && char <= 0x169F,\n // 'Runic': (char) => char >= 0x16A0 && char <= 0x16FF,\n // 'Tagalog': (char) => char >= 0x1700 && char <= 0x171F,\n // 'Hanunoo': (char) => char >= 0x1720 && char <= 0x173F,\n // 'Buhid': (char) => char >= 0x1740 && char <= 0x175F,\n // 'Tagbanwa': (char) => char >= 0x1760 && char <= 0x177F,\n 'Khmer': (char) => char >= 0x1780 && char <= 0x17FF,\n // 'Mongolian': (char) => char >= 0x1800 && char <= 0x18AF,\n 'Unified Canadian Aboriginal Syllabics Extended': (char) => char >= 0x18B0 && char <= 0x18FF,\n // 'Limbu': (char) => char >= 0x1900 && char <= 0x194F,\n // 'Tai Le': (char) => char >= 0x1950 && char <= 0x197F,\n // 'New Tai Lue': (char) => char >= 0x1980 && char <= 0x19DF,\n // 'Khmer Symbols': (char) => char >= 0x19E0 && char <= 0x19FF,\n // 'Buginese': (char) => char >= 0x1A00 && char <= 0x1A1F,\n // 'Tai Tham': (char) => char >= 0x1A20 && char <= 0x1AAF,\n // 'Combining Diacritical Marks Extended': (char) => char >= 0x1AB0 && char <= 0x1AFF,\n // 'Balinese': (char) => char >= 0x1B00 && char <= 0x1B7F,\n // 'Sundanese': (char) => char >= 0x1B80 && char <= 0x1BBF,\n // 'Batak': (char) => char >= 0x1BC0 && char <= 0x1BFF,\n // 'Lepcha': (char) => char >= 0x1C00 && char <= 0x1C4F,\n // 'Ol Chiki': (char) => char >= 0x1C50 && char <= 0x1C7F,\n // 'Cyrillic Extended-C': (char) => char >= 0x1C80 && char <= 0x1C8F,\n // 'Georgian Extended': (char) => char >= 0x1C90 && char <= 0x1CBF,\n // 'Sundanese Supplement': (char) => char >= 0x1CC0 && char <= 0x1CCF,\n // 'Vedic Extensions': (char) => char >= 0x1CD0 && char <= 0x1CFF,\n // 'Phonetic Extensions': (char) => char >= 0x1D00 && char <= 0x1D7F,\n // 'Phonetic Extensions Supplement': (char) => char >= 0x1D80 && char <= 0x1DBF,\n // 'Combining Diacritical Marks Supplement': (char) => char >= 0x1DC0 && char <= 0x1DFF,\n // 'Latin Extended Additional': (char) => char >= 0x1E00 && char <= 0x1EFF,\n // 'Greek Extended': (char) => char >= 0x1F00 && char <= 0x1FFF,\n 'General Punctuation': (char) => char >= 0x2000 && char <= 0x206F,\n // 'Superscripts and Subscripts': (char) => char >= 0x2070 && char <= 0x209F,\n // 'Currency Symbols': (char) => char >= 0x20A0 && char <= 0x20CF,\n // 'Combining Diacritical Marks for Symbols': (char) => char >= 0x20D0 && char <= 0x20FF,\n 'Letterlike Symbols': (char) => char >= 0x2100 && char <= 0x214F,\n 'Number Forms': (char) => char >= 0x2150 && char <= 0x218F,\n // 'Arrows': (char) => char >= 0x2190 && char <= 0x21FF,\n // 'Mathematical Operators': (char) => char >= 0x2200 && char <= 0x22FF,\n 'Miscellaneous Technical': (char) => char >= 0x2300 && char <= 0x23FF,\n 'Control Pictures': (char) => char >= 0x2400 && char <= 0x243F,\n 'Optical Character Recognition': (char) => char >= 0x2440 && char <= 0x245F,\n 'Enclosed Alphanumerics': (char) => char >= 0x2460 && char <= 0x24FF,\n // 'Box Drawing': (char) => char >= 0x2500 && char <= 0x257F,\n // 'Block Elements': (char) => char >= 0x2580 && char <= 0x259F,\n 'Geometric Shapes': (char) => char >= 0x25A0 && char <= 0x25FF,\n 'Miscellaneous Symbols': (char) => char >= 0x2600 && char <= 0x26FF,\n // 'Dingbats': (char) => char >= 0x2700 && char <= 0x27BF,\n // 'Miscellaneous Mathematical Symbols-A': (char) => char >= 0x27C0 && char <= 0x27EF,\n // 'Supplemental Arrows-A': (char) => char >= 0x27F0 && char <= 0x27FF,\n // 'Braille Patterns': (char) => char >= 0x2800 && char <= 0x28FF,\n // 'Supplemental Arrows-B': (char) => char >= 0x2900 && char <= 0x297F,\n // 'Miscellaneous Mathematical Symbols-B': (char) => char >= 0x2980 && char <= 0x29FF,\n // 'Supplemental Mathematical Operators': (char) => char >= 0x2A00 && char <= 0x2AFF,\n 'Miscellaneous Symbols and Arrows': (char) => char >= 0x2B00 && char <= 0x2BFF,\n // 'Glagolitic': (char) => char >= 0x2C00 && char <= 0x2C5F,\n // 'Latin Extended-C': (char) => char >= 0x2C60 && char <= 0x2C7F,\n // 'Coptic': (char) => char >= 0x2C80 && char <= 0x2CFF,\n // 'Georgian Supplement': (char) => char >= 0x2D00 && char <= 0x2D2F,\n // 'Tifinagh': (char) => char >= 0x2D30 && char <= 0x2D7F,\n // 'Ethiopic Extended': (char) => char >= 0x2D80 && char <= 0x2DDF,\n // 'Cyrillic Extended-A': (char) => char >= 0x2DE0 && char <= 0x2DFF,\n // 'Supplemental Punctuation': (char) => char >= 0x2E00 && char <= 0x2E7F,\n 'CJK Radicals Supplement': (char) => char >= 0x2E80 && char <= 0x2EFF,\n 'Kangxi Radicals': (char) => char >= 0x2F00 && char <= 0x2FDF,\n 'Ideographic Description Characters': (char) => char >= 0x2FF0 && char <= 0x2FFF,\n 'CJK Symbols and Punctuation': (char) => char >= 0x3000 && char <= 0x303F,\n 'Hiragana': (char) => char >= 0x3040 && char <= 0x309F,\n 'Katakana': (char) => char >= 0x30A0 && char <= 0x30FF,\n 'Bopomofo': (char) => char >= 0x3100 && char <= 0x312F,\n 'Hangul Compatibility Jamo': (char) => char >= 0x3130 && char <= 0x318F,\n 'Kanbun': (char) => char >= 0x3190 && char <= 0x319F,\n 'Bopomofo Extended': (char) => char >= 0x31A0 && char <= 0x31BF,\n 'CJK Strokes': (char) => char >= 0x31C0 && char <= 0x31EF,\n 'Katakana Phonetic Extensions': (char) => char >= 0x31F0 && char <= 0x31FF,\n 'Enclosed CJK Letters and Months': (char) => char >= 0x3200 && char <= 0x32FF,\n 'CJK Compatibility': (char) => char >= 0x3300 && char <= 0x33FF,\n 'CJK Unified Ideographs Extension A': (char) => char >= 0x3400 && char <= 0x4DBF,\n 'Yijing Hexagram Symbols': (char) => char >= 0x4DC0 && char <= 0x4DFF,\n 'CJK Unified Ideographs': (char) => char >= 0x4E00 && char <= 0x9FFF,\n 'Yi Syllables': (char) => char >= 0xA000 && char <= 0xA48F,\n 'Yi Radicals': (char) => char >= 0xA490 && char <= 0xA4CF,\n // 'Lisu': (char) => char >= 0xA4D0 && char <= 0xA4FF,\n // 'Vai': (char) => char >= 0xA500 && char <= 0xA63F,\n // 'Cyrillic Extended-B': (char) => char >= 0xA640 && char <= 0xA69F,\n // 'Bamum': (char) => char >= 0xA6A0 && char <= 0xA6FF,\n // 'Modifier Tone Letters': (char) => char >= 0xA700 && char <= 0xA71F,\n // 'Latin Extended-D': (char) => char >= 0xA720 && char <= 0xA7FF,\n // 'Syloti Nagri': (char) => char >= 0xA800 && char <= 0xA82F,\n // 'Common Indic Number Forms': (char) => char >= 0xA830 && char <= 0xA83F,\n // 'Phags-pa': (char) => char >= 0xA840 && char <= 0xA87F,\n // 'Saurashtra': (char) => char >= 0xA880 && char <= 0xA8DF,\n // 'Devanagari Extended': (char) => char >= 0xA8E0 && char <= 0xA8FF,\n // 'Kayah Li': (char) => char >= 0xA900 && char <= 0xA92F,\n // 'Rejang': (char) => char >= 0xA930 && char <= 0xA95F,\n 'Hangul Jamo Extended-A': (char) => char >= 0xA960 && char <= 0xA97F,\n // 'Javanese': (char) => char >= 0xA980 && char <= 0xA9DF,\n // 'Myanmar Extended-B': (char) => char >= 0xA9E0 && char <= 0xA9FF,\n // 'Cham': (char) => char >= 0xAA00 && char <= 0xAA5F,\n // 'Myanmar Extended-A': (char) => char >= 0xAA60 && char <= 0xAA7F,\n // 'Tai Viet': (char) => char >= 0xAA80 && char <= 0xAADF,\n // 'Meetei Mayek Extensions': (char) => char >= 0xAAE0 && char <= 0xAAFF,\n // 'Ethiopic Extended-A': (char) => char >= 0xAB00 && char <= 0xAB2F,\n // 'Latin Extended-E': (char) => char >= 0xAB30 && char <= 0xAB6F,\n // 'Cherokee Supplement': (char) => char >= 0xAB70 && char <= 0xABBF,\n // 'Meetei Mayek': (char) => char >= 0xABC0 && char <= 0xABFF,\n 'Hangul Syllables': (char) => char >= 0xAC00 && char <= 0xD7AF,\n 'Hangul Jamo Extended-B': (char) => char >= 0xD7B0 && char <= 0xD7FF,\n // 'High Surrogates': (char) => char >= 0xD800 && char <= 0xDB7F,\n // 'High Private Use Surrogates': (char) => char >= 0xDB80 && char <= 0xDBFF,\n // 'Low Surrogates': (char) => char >= 0xDC00 && char <= 0xDFFF,\n 'Private Use Area': (char) => char >= 0xE000 && char <= 0xF8FF,\n 'CJK Compatibility Ideographs': (char) => char >= 0xF900 && char <= 0xFAFF,\n // 'Alphabetic Presentation Forms': (char) => char >= 0xFB00 && char <= 0xFB4F,\n 'Arabic Presentation Forms-A': (char) => char >= 0xFB50 && char <= 0xFDFF,\n // 'Variation Selectors': (char) => char >= 0xFE00 && char <= 0xFE0F,\n 'Vertical Forms': (char) => char >= 0xFE10 && char <= 0xFE1F,\n // 'Combining Half Marks': (char) => char >= 0xFE20 && char <= 0xFE2F,\n 'CJK Compatibility Forms': (char) => char >= 0xFE30 && char <= 0xFE4F,\n 'Small Form Variants': (char) => char >= 0xFE50 && char <= 0xFE6F,\n 'Arabic Presentation Forms-B': (char) => char >= 0xFE70 && char <= 0xFEFF,\n 'Halfwidth and Fullwidth Forms': (char) => char >= 0xFF00 && char <= 0xFFEF\n // 'Specials': (char) => char >= 0xFFF0 && char <= 0xFFFF,\n // 'Linear B Syllabary': (char) => char >= 0x10000 && char <= 0x1007F,\n // 'Linear B Ideograms': (char) => char >= 0x10080 && char <= 0x100FF,\n // 'Aegean Numbers': (char) => char >= 0x10100 && char <= 0x1013F,\n // 'Ancient Greek Numbers': (char) => char >= 0x10140 && char <= 0x1018F,\n // 'Ancient Symbols': (char) => char >= 0x10190 && char <= 0x101CF,\n // 'Phaistos Disc': (char) => char >= 0x101D0 && char <= 0x101FF,\n // 'Lycian': (char) => char >= 0x10280 && char <= 0x1029F,\n // 'Carian': (char) => char >= 0x102A0 && char <= 0x102DF,\n // 'Coptic Epact Numbers': (char) => char >= 0x102E0 && char <= 0x102FF,\n // 'Old Italic': (char) => char >= 0x10300 && char <= 0x1032F,\n // 'Gothic': (char) => char >= 0x10330 && char <= 0x1034F,\n // 'Old Permic': (char) => char >= 0x10350 && char <= 0x1037F,\n // 'Ugaritic': (char) => char >= 0x10380 && char <= 0x1039F,\n // 'Old Persian': (char) => char >= 0x103A0 && char <= 0x103DF,\n // 'Deseret': (char) => char >= 0x10400 && char <= 0x1044F,\n // 'Shavian': (char) => char >= 0x10450 && char <= 0x1047F,\n // 'Osmanya': (char) => char >= 0x10480 && char <= 0x104AF,\n // 'Osage': (char) => char >= 0x104B0 && char <= 0x104FF,\n // 'Elbasan': (char) => char >= 0x10500 && char <= 0x1052F,\n // 'Caucasian Albanian': (char) => char >= 0x10530 && char <= 0x1056F,\n // 'Linear A': (char) => char >= 0x10600 && char <= 0x1077F,\n // 'Cypriot Syllabary': (char) => char >= 0x10800 && char <= 0x1083F,\n // 'Imperial Aramaic': (char) => char >= 0x10840 && char <= 0x1085F,\n // 'Palmyrene': (char) => char >= 0x10860 && char <= 0x1087F,\n // 'Nabataean': (char) => char >= 0x10880 && char <= 0x108AF,\n // 'Hatran': (char) => char >= 0x108E0 && char <= 0x108FF,\n // 'Phoenician': (char) => char >= 0x10900 && char <= 0x1091F,\n // 'Lydian': (char) => char >= 0x10920 && char <= 0x1093F,\n // 'Meroitic Hieroglyphs': (char) => char >= 0x10980 && char <= 0x1099F,\n // 'Meroitic Cursive': (char) => char >= 0x109A0 && char <= 0x109FF,\n // 'Kharoshthi': (char) => char >= 0x10A00 && char <= 0x10A5F,\n // 'Old South Arabian': (char) => char >= 0x10A60 && char <= 0x10A7F,\n // 'Old North Arabian': (char) => char >= 0x10A80 && char <= 0x10A9F,\n // 'Manichaean': (char) => char >= 0x10AC0 && char <= 0x10AFF,\n // 'Avestan': (char) => char >= 0x10B00 && char <= 0x10B3F,\n // 'Inscriptional Parthian': (char) => char >= 0x10B40 && char <= 0x10B5F,\n // 'Inscriptional Pahlavi': (char) => char >= 0x10B60 && char <= 0x10B7F,\n // 'Psalter Pahlavi': (char) => char >= 0x10B80 && char <= 0x10BAF,\n // 'Old Turkic': (char) => char >= 0x10C00 && char <= 0x10C4F,\n // 'Old Hungarian': (char) => char >= 0x10C80 && char <= 0x10CFF,\n // 'Hanifi Rohingya': (char) => char >= 0x10D00 && char <= 0x10D3F,\n // 'Rumi Numeral Symbols': (char) => char >= 0x10E60 && char <= 0x10E7F,\n // 'Old Sogdian': (char) => char >= 0x10F00 && char <= 0x10F2F,\n // 'Sogdian': (char) => char >= 0x10F30 && char <= 0x10F6F,\n // 'Elymaic': (char) => char >= 0x10FE0 && char <= 0x10FFF,\n // 'Brahmi': (char) => char >= 0x11000 && char <= 0x1107F,\n // 'Kaithi': (char) => char >= 0x11080 && char <= 0x110CF,\n // 'Sora Sompeng': (char) => char >= 0x110D0 && char <= 0x110FF,\n // 'Chakma': (char) => char >= 0x11100 && char <= 0x1114F,\n // 'Mahajani': (char) => char >= 0x11150 && char <= 0x1117F,\n // 'Sharada': (char) => char >= 0x11180 && char <= 0x111DF,\n // 'Sinhala Archaic Numbers': (char) => char >= 0x111E0 && char <= 0x111FF,\n // 'Khojki': (char) => char >= 0x11200 && char <= 0x1124F,\n // 'Multani': (char) => char >= 0x11280 && char <= 0x112AF,\n // 'Khudawadi': (char) => char >= 0x112B0 && char <= 0x112FF,\n // 'Grantha': (char) => char >= 0x11300 && char <= 0x1137F,\n // 'Newa': (char) => char >= 0x11400 && char <= 0x1147F,\n // 'Tirhuta': (char) => char >= 0x11480 && char <= 0x114DF,\n // 'Siddham': (char) => char >= 0x11580 && char <= 0x115FF,\n // 'Modi': (char) => char >= 0x11600 && char <= 0x1165F,\n // 'Mongolian Supplement': (char) => char >= 0x11660 && char <= 0x1167F,\n // 'Takri': (char) => char >= 0x11680 && char <= 0x116CF,\n // 'Ahom': (char) => char >= 0x11700 && char <= 0x1173F,\n // 'Dogra': (char) => char >= 0x11800 && char <= 0x1184F,\n // 'Warang Citi': (char) => char >= 0x118A0 && char <= 0x118FF,\n // 'Nandinagari': (char) => char >= 0x119A0 && char <= 0x119FF,\n // 'Zanabazar Square': (char) => char >= 0x11A00 && char <= 0x11A4F,\n // 'Soyombo': (char) => char >= 0x11A50 && char <= 0x11AAF,\n // 'Pau Cin Hau': (char) => char >= 0x11AC0 && char <= 0x11AFF,\n // 'Bhaiksuki': (char) => char >= 0x11C00 && char <= 0x11C6F,\n // 'Marchen': (char) => char >= 0x11C70 && char <= 0x11CBF,\n // 'Masaram Gondi': (char) => char >= 0x11D00 && char <= 0x11D5F,\n // 'Gunjala Gondi': (char) => char >= 0x11D60 && char <= 0x11DAF,\n // 'Makasar': (char) => char >= 0x11EE0 && char <= 0x11EFF,\n // 'Tamil Supplement': (char) => char >= 0x11FC0 && char <= 0x11FFF,\n // 'Cuneiform': (char) => char >= 0x12000 && char <= 0x123FF,\n // 'Cuneiform Numbers and Punctuation': (char) => char >= 0x12400 && char <= 0x1247F,\n // 'Early Dynastic Cuneiform': (char) => char >= 0x12480 && char <= 0x1254F,\n // 'Egyptian Hieroglyphs': (char) => char >= 0x13000 && char <= 0x1342F,\n // 'Egyptian Hieroglyph Format Controls': (char) => char >= 0x13430 && char <= 0x1343F,\n // 'Anatolian Hieroglyphs': (char) => char >= 0x14400 && char <= 0x1467F,\n // 'Bamum Supplement': (char) => char >= 0x16800 && char <= 0x16A3F,\n // 'Mro': (char) => char >= 0x16A40 && char <= 0x16A6F,\n // 'Bassa Vah': (char) => char >= 0x16AD0 && char <= 0x16AFF,\n // 'Pahawh Hmong': (char) => char >= 0x16B00 && char <= 0x16B8F,\n // 'Medefaidrin': (char) => char >= 0x16E40 && char <= 0x16E9F,\n // 'Miao': (char) => char >= 0x16F00 && char <= 0x16F9F,\n // 'Ideographic Symbols and Punctuation': (char) => char >= 0x16FE0 && char <= 0x16FFF,\n // 'Tangut': (char) => char >= 0x17000 && char <= 0x187FF,\n // 'Tangut Components': (char) => char >= 0x18800 && char <= 0x18AFF,\n // 'Kana Supplement': (char) => char >= 0x1B000 && char <= 0x1B0FF,\n // 'Kana Extended-A': (char) => char >= 0x1B100 && char <= 0x1B12F,\n // 'Small Kana Extension': (char) => char >= 0x1B130 && char <= 0x1B16F,\n // 'Nushu': (char) => char >= 0x1B170 && char <= 0x1B2FF,\n // 'Duployan': (char) => char >= 0x1BC00 && char <= 0x1BC9F,\n // 'Shorthand Format Controls': (char) => char >= 0x1BCA0 && char <= 0x1BCAF,\n // 'Byzantine Musical Symbols': (char) => char >= 0x1D000 && char <= 0x1D0FF,\n // 'Musical Symbols': (char) => char >= 0x1D100 && char <= 0x1D1FF,\n // 'Ancient Greek Musical Notation': (char) => char >= 0x1D200 && char <= 0x1D24F,\n // 'Mayan Numerals': (char) => char >= 0x1D2E0 && char <= 0x1D2FF,\n // 'Tai Xuan Jing Symbols': (char) => char >= 0x1D300 && char <= 0x1D35F,\n // 'Counting Rod Numerals': (char) => char >= 0x1D360 && char <= 0x1D37F,\n // 'Mathematical Alphanumeric Symbols': (char) => char >= 0x1D400 && char <= 0x1D7FF,\n // 'Sutton SignWriting': (char) => char >= 0x1D800 && char <= 0x1DAAF,\n // 'Glagolitic Supplement': (char) => char >= 0x1E000 && char <= 0x1E02F,\n // 'Nyiakeng Puachue Hmong': (char) => char >= 0x1E100 && char <= 0x1E14F,\n // 'Wancho': (char) => char >= 0x1E2C0 && char <= 0x1E2FF,\n // 'Mende Kikakui': (char) => char >= 0x1E800 && char <= 0x1E8DF,\n // 'Adlam': (char) => char >= 0x1E900 && char <= 0x1E95F,\n // 'Indic Siyaq Numbers': (char) => char >= 0x1EC70 && char <= 0x1ECBF,\n // 'Ottoman Siyaq Numbers': (char) => char >= 0x1ED00 && char <= 0x1ED4F,\n // 'Arabic Mathematical Alphabetic Symbols': (char) => char >= 0x1EE00 && char <= 0x1EEFF,\n // 'Mahjong Tiles': (char) => char >= 0x1F000 && char <= 0x1F02F,\n // 'Domino Tiles': (char) => char >= 0x1F030 && char <= 0x1F09F,\n // 'Playing Cards': (char) => char >= 0x1F0A0 && char <= 0x1F0FF,\n // 'Enclosed Alphanumeric Supplement': (char) => char >= 0x1F100 && char <= 0x1F1FF,\n // 'Enclosed Ideographic Supplement': (char) => char >= 0x1F200 && char <= 0x1F2FF,\n // 'Miscellaneous Symbols and Pictographs': (char) => char >= 0x1F300 && char <= 0x1F5FF,\n // 'Emoticons': (char) => char >= 0x1F600 && char <= 0x1F64F,\n // 'Ornamental Dingbats': (char) => char >= 0x1F650 && char <= 0x1F67F,\n // 'Transport and Map Symbols': (char) => char >= 0x1F680 && char <= 0x1F6FF,\n // 'Alchemical Symbols': (char) => char >= 0x1F700 && char <= 0x1F77F,\n // 'Geometric Shapes Extended': (char) => char >= 0x1F780 && char <= 0x1F7FF,\n // 'Supplemental Arrows-C': (char) => char >= 0x1F800 && char <= 0x1F8FF,\n // 'Supplemental Symbols and Pictographs': (char) => char >= 0x1F900 && char <= 0x1F9FF,\n // 'Chess Symbols': (char) => char >= 0x1FA00 && char <= 0x1FA6F,\n // 'Symbols and Pictographs Extended-A': (char) => char >= 0x1FA70 && char <= 0x1FAFF,\n // 'CJK Unified Ideographs Extension B': (char) => char >= 0x20000 && char <= 0x2A6DF,\n // 'CJK Unified Ideographs Extension C': (char) => char >= 0x2A700 && char <= 0x2B73F,\n // 'CJK Unified Ideographs Extension D': (char) => char >= 0x2B740 && char <= 0x2B81F,\n // 'CJK Unified Ideographs Extension E': (char) => char >= 0x2B820 && char <= 0x2CEAF,\n // 'CJK Unified Ideographs Extension F': (char) => char >= 0x2CEB0 && char <= 0x2EBEF,\n // 'CJK Compatibility Ideographs Supplement': (char) => char >= 0x2F800 && char <= 0x2FA1F,\n // 'Tags': (char) => char >= 0xE0000 && char <= 0xE007F,\n // 'Variation Selectors Supplement': (char) => char >= 0xE0100 && char <= 0xE01EF,\n // 'Supplementary Private Use Area-A': (char) => char >= 0xF0000 && char <= 0xFFFFF,\n // 'Supplementary Private Use Area-B': (char) => char >= 0x100000 && char <= 0x10FFFF,\n};\n\nexport default unicodeBlockLookup;\n","// @flow\n\n/* eslint-disable new-cap */\n\nimport isChar from './is_char_in_unicode_block.js';\n\nexport function allowsIdeographicBreaking(chars: string): boolean {\n for (const char of chars) {\n if (!charAllowsIdeographicBreaking(char.charCodeAt(0))) return false;\n }\n return true;\n}\n\nexport function allowsVerticalWritingMode(chars: string): boolean {\n for (const char of chars) {\n if (charHasUprightVerticalOrientation(char.charCodeAt(0))) return true;\n }\n return false;\n}\n\nexport function allowsLetterSpacing(chars: string): boolean {\n for (const char of chars) {\n if (!charAllowsLetterSpacing(char.charCodeAt(0))) return false;\n }\n return true;\n}\n\nexport function charAllowsLetterSpacing(char: number): boolean {\n if (isChar['Arabic'](char)) return false;\n if (isChar['Arabic Supplement'](char)) return false;\n if (isChar['Arabic Extended-A'](char)) return false;\n if (isChar['Arabic Presentation Forms-A'](char)) return false;\n if (isChar['Arabic Presentation Forms-B'](char)) return false;\n\n return true;\n}\n\nexport function charAllowsIdeographicBreaking(char: number): boolean {\n // Return early for characters outside all ideographic ranges.\n if (char < 0x2E80) return false;\n\n if (isChar['Bopomofo Extended'](char)) return true;\n if (isChar['Bopomofo'](char)) return true;\n if (isChar['CJK Compatibility Forms'](char)) return true;\n if (isChar['CJK Compatibility Ideographs'](char)) return true;\n if (isChar['CJK Compatibility'](char)) return true;\n if (isChar['CJK Radicals Supplement'](char)) return true;\n if (isChar['CJK Strokes'](char)) return true;\n if (isChar['CJK Symbols and Punctuation'](char)) return true;\n if (isChar['CJK Unified Ideographs Extension A'](char)) return true;\n if (isChar['CJK Unified Ideographs'](char)) return true;\n if (isChar['Enclosed CJK Letters and Months'](char)) return true;\n if (isChar['Halfwidth and Fullwidth Forms'](char)) return true;\n if (isChar['Hiragana'](char)) return true;\n if (isChar['Ideographic Description Characters'](char)) return true;\n if (isChar['Kangxi Radicals'](char)) return true;\n if (isChar['Katakana Phonetic Extensions'](char)) return true;\n if (isChar['Katakana'](char)) return true;\n if (isChar['Vertical Forms'](char)) return true;\n if (isChar['Yi Radicals'](char)) return true;\n if (isChar['Yi Syllables'](char)) return true;\n\n return false;\n}\n\n// The following logic comes from\n// <http://www.unicode.org/Public/12.0.0/ucd/VerticalOrientation.txt>.\n// Keep it synchronized with\n// <http://www.unicode.org/Public/UCD/latest/ucd/VerticalOrientation.txt>.\n// The data file denotes with “U” or “Tu” any codepoint that may be drawn\n// upright in vertical text but does not distinguish between upright and\n// “neutral” characters.\n\n// Blocks in the Unicode supplementary planes are excluded from this module due\n// to <https://github.com/mapbox/mapbox-gl/issues/29>.\n\n/**\n * Returns true if the given Unicode codepoint identifies a character with\n * upright orientation.\n *\n * A character has upright orientation if it is drawn upright (unrotated)\n * whether the line is oriented horizontally or vertically, even if both\n * adjacent characters can be rotated. For example, a Chinese character is\n * always drawn upright. An uprightly oriented character causes an adjacent\n * “neutral” character to be drawn upright as well.\n * @private\n */\nexport function charHasUprightVerticalOrientation(char: number): boolean {\n if (char === 0x02EA /* modifier letter yin departing tone mark */ ||\n char === 0x02EB /* modifier letter yang departing tone mark */) {\n return true;\n }\n\n // Return early for characters outside all ranges whose characters remain\n // upright in vertical writing mode.\n if (char < 0x1100) return false;\n\n if (isChar['Bopomofo Extended'](char)) return true;\n if (isChar['Bopomofo'](char)) return true;\n if (isChar['CJK Compatibility Forms'](char)) {\n if (!((char >= 0xFE49 /* dashed overline */ && char <= 0xFE4F) /* wavy low line */)) {\n return true;\n }\n }\n if (isChar['CJK Compatibility Ideographs'](char)) return true;\n if (isChar['CJK Compatibility'](char)) return true;\n if (isChar['CJK Radicals Supplement'](char)) return true;\n if (isChar['CJK Strokes'](char)) return true;\n if (isChar['CJK Symbols and Punctuation'](char)) {\n if (!((char >= 0x3008 /* left angle bracket */ && char <= 0x3011) /* right black lenticular bracket */) &&\n !((char >= 0x3014 /* left tortoise shell bracket */ && char <= 0x301F) /* low double prime quotation mark */) &&\n char !== 0x3030 /* wavy dash */) {\n return true;\n }\n }\n if (isChar['CJK Unified Ideographs Extension A'](char)) return true;\n if (isChar['CJK Unified Ideographs'](char)) return true;\n if (isChar['Enclosed CJK Letters and Months'](char)) return true;\n if (isChar['Hangul Compatibility Jamo'](char)) return true;\n if (isChar['Hangul Jamo Extended-A'](char)) return true;\n if (isChar['Hangul Jamo Extended-B'](char)) return true;\n if (isChar['Hangul Jamo'](char)) return true;\n if (isChar['Hangul Syllables'](char)) return true;\n if (isChar['Hiragana'](char)) return true;\n if (isChar['Ideographic Description Characters'](char)) return true;\n if (isChar['Kanbun'](char)) return true;\n if (isChar['Kangxi Radicals'](char)) return true;\n if (isChar['Katakana Phonetic Extensions'](char)) return true;\n if (isChar['Katakana'](char)) {\n if (char !== 0x30FC /* katakana-hiragana prolonged sound mark */) {\n return true;\n }\n }\n if (isChar['Halfwidth and Fullwidth Forms'](char)) {\n if (char !== 0xFF08 /* fullwidth left parenthesis */ &&\n char !== 0xFF09 /* fullwidth right parenthesis */ &&\n char !== 0xFF0D /* fullwidth hyphen-minus */ &&\n !((char >= 0xFF1A /* fullwidth colon */ && char <= 0xFF1E) /* fullwidth greater-than sign */) &&\n char !== 0xFF3B /* fullwidth left square bracket */ &&\n char !== 0xFF3D /* fullwidth right square bracket */ &&\n char !== 0xFF3F /* fullwidth low line */ &&\n !(char >= 0xFF5B /* fullwidth left curly bracket */ && char <= 0xFFDF) &&\n char !== 0xFFE3 /* fullwidth macron */ &&\n !(char >= 0xFFE8 /* halfwidth forms light vertical */ && char <= 0xFFEF)) {\n return true;\n }\n }\n if (isChar['Small Form Variants'](char)) {\n if (!((char >= 0xFE58 /* small em dash */ && char <= 0xFE5E) /* small right tortoise shell bracket */) &&\n !((char >= 0xFE63 /* small hyphen-minus */ && char <= 0xFE66) /* small equals sign */)) {\n return true;\n }\n }\n if (isChar['Unified Canadian Aboriginal Syllabics'](char)) return true;\n if (isChar['Unified Canadian Aboriginal Syllabics Extended'](char)) return true;\n if (isChar['Vertical Forms'](char)) return true;\n if (isChar['Yijing Hexagram Symbols'](char)) return true;\n if (isChar['Yi Syllables'](char)) return true;\n if (isChar['Yi Radicals'](char)) return true;\n\n return false;\n}\n\n/**\n * Returns true if the given Unicode codepoint identifies a character with\n * neutral orientation.\n *\n * A character has neutral orientation if it may be drawn rotated or unrotated\n * when the line is oriented vertically, depending on the orientation of the\n * adjacent characters. For example, along a verticlly oriented line, the vulgar\n * fraction ½ is drawn upright among Chinese characters but rotated among Latin\n * letters. A neutrally oriented character does not influence whether an\n * adjacent character is drawn upright or rotated.\n * @private\n */\nexport function charHasNeutralVerticalOrientation(char: number): boolean {\n if (isChar['Latin-1 Supplement'](char)) {\n if (char === 0x00A7 /* section sign */ ||\n char === 0x00A9 /* copyright sign */ ||\n char === 0x00AE /* registered sign */ ||\n char === 0x00B1 /* plus-minus sign */ ||\n char === 0x00BC /* vulgar fraction one quarter */ ||\n char === 0x00BD /* vulgar fraction one half */ ||\n char === 0x00BE /* vulgar fraction three quarters */ ||\n char === 0x00D7 /* multiplication sign */ ||\n char === 0x00F7 /* division sign */) {\n return true;\n }\n }\n if (isChar['General Punctuation'](char)) {\n if (char === 0x2016 /* double vertical line */ ||\n char === 0x2020 /* dagger */ ||\n char === 0x2021 /* double dagger */ ||\n char === 0x2030 /* per mille sign */ ||\n char === 0x2031 /* per ten thousand sign */ ||\n char === 0x203B /* reference mark */ ||\n char === 0x203C /* double exclamation mark */ ||\n char === 0x2042 /* asterism */ ||\n char === 0x2047 /* double question mark */ ||\n char === 0x2048 /* question exclamation mark */ ||\n char === 0x2049 /* exclamation question mark */ ||\n char === 0x2051 /* two asterisks aligned vertically */) {\n return true;\n }\n }\n if (isChar['Letterlike Symbols'](char)) return true;\n if (isChar['Number Forms'](char)) return true;\n if (isChar['Miscellaneous Technical'](char)) {\n if ((char >= 0x2300 /* diameter sign */ && char <= 0x2307 /* wavy line */) ||\n (char >= 0x230C /* bottom right crop */ && char <= 0x231F /* bottom right corner */) ||\n (char >= 0x2324 /* up arrowhead between two horizontal bars */ && char <= 0x2328 /* keyboard */) ||\n char === 0x232B /* erase to the left */ ||\n (char >= 0x237D /* shouldered open box */ && char <= 0x239A /* clear screen symbol */) ||\n (char >= 0x23BE /* dentistry symbol light vertical and top right */ && char <= 0x23CD /* square foot */) ||\n char === 0x23CF /* eject symbol */ ||\n (char >= 0x23D1 /* metrical breve */ && char <= 0x23DB /* fuse */) ||\n (char >= 0x23E2 /* white trapezium */ && char <= 0x23FF)) {\n return true;\n }\n }\n if (isChar['Control Pictures'](char) && char !== 0x2423 /* open box */) return true;\n if (isChar['Optical Character Recognition'](char)) return true;\n if (isChar['Enclosed Alphanumerics'](char)) return true;\n if (isChar['Geometric Shapes'](char)) return true;\n if (isChar['Miscellaneous Symbols'](char)) {\n if (!((char >= 0x261A /* black left pointing index */ && char <= 0x261F) /* white down pointing index */)) {\n return true;\n }\n }\n if (isChar['Miscellaneous Symbols and Arrows'](char)) {\n if ((char >= 0x2B12 /* square with top half black */ && char <= 0x2B2F /* white vertical ellipse */) ||\n (char >= 0x2B50 /* white medium star */ && char <= 0x2B59 /* heavy circled saltire */) ||\n (char >= 0x2BB8 /* upwards white arrow from bar with horizontal bar */ && char <= 0x2BEB)) {\n return true;\n }\n }\n if (isChar['CJK Symbols and Punctuation'](char)) return true;\n if (isChar['Katakana'](char)) return true;\n if (isChar['Private Use Area'](char)) return true;\n if (isChar['CJK Compatibility Forms'](char)) return true;\n if (isChar['Small Form Variants'](char)) return true;\n if (isChar['Halfwidth and Fullwidth Forms'](char)) return true;\n\n if (char === 0x221E /* infinity */ ||\n char === 0x2234 /* therefore */ ||\n char === 0x2235 /* because */ ||\n (char >= 0x2700 /* black safety scissors */ && char <= 0x2767 /* rotated floral heart bullet */) ||\n (char >= 0x2776 /* dingbat negative circled digit one */ && char <= 0x2793 /* dingbat negative circled sans-serif number ten */) ||\n char === 0xFFFC /* object replacement character */ ||\n char === 0xFFFD /* replacement character */) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Returns true if the given Unicode codepoint identifies a character with\n * rotated orientation.\n *\n * A character has rotated orientation if it is drawn rotated when the line is\n * oriented vertically, even if both adjacent characters are upright. For\n * example, a Latin letter is drawn rotated along a vertical line. A rotated\n * character causes an adjacent “neutral” character to be drawn rotated as well.\n * @private\n */\nexport function charHasRotatedVerticalOrientation(char: number): boolean {\n return !(charHasUprightVerticalOrientation(char) ||\n charHasNeutralVerticalOrientation(char));\n}\n\nexport function charInComplexShapingScript(char: number): boolean {\n return isChar['Arabic'](char) ||\n isChar['Arabic Supplement'](char) ||\n isChar['Arabic Extended-A'](char) ||\n isChar['Arabic Presentation Forms-A'](char) ||\n isChar['Arabic Presentation Forms-B'](char);\n}\n\nexport function charInRTLScript(char: number): boolean {\n // Main blocks for Hebrew, Arabic, Thaana and other RTL scripts\n return (char >= 0x0590 && char <= 0x08FF) ||\n isChar['Arabic Presentation Forms-A'](char) ||\n isChar['Arabic Presentation Forms-B'](char);\n}\n\nexport function charInSupportedScript(char: number, canRenderRTL: boolean): boolean {\n // This is a rough heuristic: whether we \"can render\" a script\n // actually depends on the properties of the font being used\n // and whether differences from the ideal rendering are considered\n // semantically significant.\n\n // Even in Latin script, we \"can't render\" combinations such as the fi\n // ligature, but we don't consider that semantically significant.\n if (!canRenderRTL && charInRTLScript(char)) {\n return false;\n }\n if ((char >= 0x0900 && char <= 0x0DFF) ||\n // Main blocks for Indic scripts and Sinhala\n (char >= 0x0F00 && char <= 0x109F) ||\n // Main blocks for Tibetan and Myanmar\n isChar['Khmer'](char)) {\n // These blocks cover common scripts that require\n // complex text shaping, based on unicode script metadata:\n // http://www.unicode.org/repos/cldr/trunk/common/properties/scriptMetadata.txt\n // where \"Web Rank <= 32\" \"Shaping Required = YES\"\n return false;\n }\n return true;\n}\n\nexport function stringContainsRTLText(chars: string): boolean {\n for (const char of chars) {\n if (charInRTLScript(char.charCodeAt(0))) {\n return true;\n }\n }\n return false;\n}\n\nexport function isStringInSupportedScript(chars: string, canRenderRTL: boolean): boolean {\n for (const char of chars) {\n if (!charInSupportedScript(char.charCodeAt(0), canRenderRTL)) {\n return false;\n }\n }\n return true;\n}\n","// @flow\n\nimport {Event, Evented} from '../util/evented.js';\nimport {getArrayBuffer} from '../util/ajax.js';\nimport browser from '../util/browser.js';\nimport assert from 'assert';\nimport {isWorker} from '../util/util.js';\nimport type {Callback} from '../types/callback.js';\n\nconst status = {\n unavailable: 'unavailable', // Not loaded\n deferred: 'deferred', // The plugin URL has been specified, but loading has been deferred\n loading: 'loading', // request in-flight\n loaded: 'loaded',\n error: 'error'\n};\n\nexport type PluginState = {\n pluginStatus: $Values<typeof status>;\n pluginURL: ?string\n};\n\ntype PluginStateSyncCallback = (state: PluginState) => void;\nlet _completionCallback = null;\n\n//Variables defining the current state of the plugin\nlet pluginStatus = status.unavailable;\nlet pluginURL = null;\n\nexport const triggerPluginCompletionEvent = function(error: ?Error) {\n // NetworkError's are not correctly reflected by the plugin status which prevents reloading plugin\n if (error && typeof error === 'string' && error.indexOf('NetworkError') > -1) {\n pluginStatus = status.error;\n }\n\n if (_completionCallback) {\n _completionCallback(error);\n }\n};\n\nfunction sendPluginStateToWorker() {\n evented.fire(new Event('pluginStateChange', {pluginStatus, pluginURL}));\n}\n\nexport const evented: Evented = new Evented();\n\nexport const getRTLTextPluginStatus = function (): string {\n return pluginStatus;\n};\n\nexport const registerForPluginStateChange = function(callback: PluginStateSyncCallback): PluginStateSyncCallback {\n // Do an initial sync of the state\n callback({pluginStatus, pluginURL});\n // Listen for all future state changes\n evented.on('pluginStateChange', callback);\n return callback;\n};\n\nexport const clearRTLTextPlugin = function() {\n pluginStatus = status.unavailable;\n pluginURL = null;\n};\n\nexport const setRTLTextPlugin = function(url: string, callback: ?Callback<{err: ?Error}>, deferred: boolean = false) {\n if (pluginStatus === status.deferred || pluginStatus === status.loading || pluginStatus === status.loaded) {\n throw new Error('setRTLTextPlugin cannot be called multiple times.');\n }\n pluginURL = browser.resolveURL(url);\n pluginStatus = status.deferred;\n _completionCallback = callback;\n sendPluginStateToWorker();\n\n //Start downloading the plugin immediately if not intending to lazy-load\n if (!deferred) {\n downloadRTLTextPlugin();\n }\n};\n\nexport const downloadRTLTextPlugin = function() {\n if (pluginStatus !== status.deferred || !pluginURL) {\n throw new Error('rtl-text-plugin cannot be downloaded unless a pluginURL is specified');\n }\n pluginStatus = status.loading;\n sendPluginStateToWorker();\n if (pluginURL) {\n getArrayBuffer({url: pluginURL}, (error) => {\n if (error) {\n triggerPluginCompletionEvent(error);\n } else {\n pluginStatus = status.loaded;\n sendPluginStateToWorker();\n }\n });\n }\n};\n\nexport const plugin: {\n applyArabicShaping: ?Function,\n processBidirectionalText: ?(string, Array<number>) => Array<string>,\n processStyledBidirectionalText: ?(string, Array<number>, Array<number>) => Array<[string, Array<number>]>,\n isLoaded: () => boolean,\n isLoading: () => boolean,\n setState: (state: PluginState) => void,\n isParsed: () => boolean,\n getPluginURL: () => ?string\n} = {\n applyArabicShaping: null,\n processBidirectionalText: null,\n processStyledBidirectionalText: null,\n isLoaded() {\n return pluginStatus === status.loaded || // Main Thread: loaded if the completion callback returned successfully\n plugin.applyArabicShaping != null; // Web-worker: loaded if the plugin functions have been compiled\n },\n isLoading() { // Main Thread Only: query the loading status, this function does not return the correct value in the worker context.\n return pluginStatus === status.loading;\n },\n setState(state: PluginState) { // Worker thread only: this tells the worker threads that the plugin is available on the Main thread\n assert(isWorker(), 'Cannot set the state of the rtl-text-plugin when not in the web-worker context');\n\n pluginStatus = state.pluginStatus;\n pluginURL = state.pluginURL;\n },\n isParsed(): boolean {\n assert(isWorker(), 'rtl-text-plugin is only parsed on the worker-threads');\n\n return plugin.applyArabicShaping != null &&\n plugin.processBidirectionalText != null &&\n plugin.processStyledBidirectionalText != null;\n },\n getPluginURL(): ?string {\n assert(isWorker(), 'rtl-text-plugin url can only be queried from the worker threads');\n return pluginURL;\n }\n};\n\nexport const lazyLoadRTLTextPlugin = function() {\n if (!plugin.isLoading() &&\n !plugin.isLoaded() &&\n getRTLTextPluginStatus() === 'deferred'\n ) {\n downloadRTLTextPlugin();\n }\n};\n","// @flow\n\nimport ZoomHistory from './zoom_history.js';\nimport {isStringInSupportedScript} from '../util/script_detection.js';\nimport {plugin as rtlTextPlugin} from '../source/rtl_text_plugin.js';\n\nimport type {TransitionSpecification} from '../style-spec/types.js';\n\nexport type CrossfadeParameters = {\n fromScale: number,\n toScale: number,\n t: number\n};\n\nclass EvaluationParameters {\n zoom: number;\n pitch: number;\n now: number;\n fadeDuration: number;\n zoomHistory: ZoomHistory;\n transition: TransitionSpecification;\n\n // \"options\" may also be another EvaluationParameters to copy, see CrossFadedProperty.possiblyEvaluate\n constructor(zoom: number, options?: *) {\n this.zoom = zoom;\n\n if (options) {\n this.now = options.now;\n this.fadeDuration = options.fadeDuration;\n this.zoomHistory = options.zoomHistory;\n this.transition = options.transition;\n this.pitch = options.pitch;\n } else {\n this.now = 0;\n this.fadeDuration = 0;\n this.zoomHistory = new ZoomHistory();\n this.transition = {};\n this.pitch = 0;\n }\n }\n\n isSupportedScript(str: string): boolean {\n return isStringInSupportedScript(str, rtlTextPlugin.isLoaded());\n }\n\n crossFadingFactor(): number {\n if (this.fadeDuration === 0) {\n return 1;\n } else {\n return Math.min((this.now - this.zoomHistory.lastIntegerZoomTime) / this.fadeDuration, 1);\n }\n }\n\n getCrossfadeParameters(): CrossfadeParameters {\n const z = this.zoom;\n const fraction = z - Math.floor(z);\n const t = this.crossFadingFactor();\n\n return z > this.zoomHistory.lastIntegerZoom ?\n {fromScale: 2, toScale: 1, t: fraction + (1 - fraction) * t} :\n {fromScale: 0.5, toScale: 1, t: 1 - (1 - t) * fraction};\n }\n}\n\nexport default EvaluationParameters;\n","// @flow\n\nimport assert from 'assert';\nimport {clone, extend, easeCubicInOut} from '../util/util.js';\nimport * as interpolate from '../style-spec/util/interpolate.js';\nimport {normalizePropertyExpression} from '../style-spec/expression/index.js';\nimport Color from '../style-spec/util/color.js';\nimport {register} from '../util/web_worker_transfer.js';\nimport EvaluationParameters from './evaluation_parameters.js';\n\nimport type {CanonicalTileID} from '../source/tile_id.js';\nimport type {StylePropertySpecification} from '../style-spec/style-spec.js';\nimport type {\n TransitionSpecification,\n PropertyValueSpecification\n} from '../style-spec/types.js';\n\nimport type {\n Feature,\n FeatureState,\n StylePropertyExpression,\n SourceExpression,\n CompositeExpression\n} from '../style-spec/expression/index.js';\n\ntype TimePoint = number;\n\nexport type CrossFaded<T> = {\n to: T,\n from: T,\n other?: T\n};\n\n/**\n * Implements a number of classes that define state and behavior for paint and layout properties, most\n * importantly their respective evaluation chains:\n *\n * Transitionable paint property value\n * → Transitioning paint property value\n * → Possibly evaluated paint property value\n * → Fully evaluated paint property value\n *\n * Layout property value\n * → Possibly evaluated layout property value\n * → Fully evaluated layout property value\n *\n * @module\n * @private\n */\n\n/**\n * Implementations of the `Property` interface:\n *\n * * Hold metadata about a property that's independent of any specific value: stuff like the type of the value,\n * the default value, etc. This comes from the style specification JSON.\n * * Define behavior that needs to be polymorphic across different properties: \"possibly evaluating\"\n * an input value (see below), and interpolating between two possibly-evaluted values.\n *\n * The type `T` is the fully-evaluated value type (e.g. `number`, `string`, `Color`).\n * The type `R` is the intermediate \"possibly evaluated\" value type. See below.\n *\n * There are two main implementations of the interface -- one for properties that allow data-driven values,\n * and one for properties that don't. There are a few \"special case\" implementations as well: one for properties\n * which cross-fade between two values rather than interpolating, one for `heatmap-color` and `line-gradient`,\n * and one for `light-position`.\n *\n * @private\n */\nexport interface Property<T, R> {\n specification: StylePropertySpecification;\n possiblyEvaluate(value: PropertyValue<T, R>, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): R;\n interpolate(a: R, b: R, t: number): R;\n}\n\n/**\n * `PropertyValue` represents the value part of a property key-value unit. It's used to represent both\n * paint and layout property values, and regardless of whether or not their property supports data-driven\n * expressions.\n *\n * `PropertyValue` stores the raw input value as seen in a style or a runtime styling API call, i.e. one of the\n * following:\n *\n * * A constant value of the type appropriate for the property\n * * A function which produces a value of that type (but functions are quasi-deprecated in favor of expressions)\n * * An expression which produces a value of that type\n * * \"undefined\"/\"not present\", in which case the property is assumed to take on its default value.\n *\n * In addition to storing the original input value, `PropertyValue` also stores a normalized representation,\n * effectively treating functions as if they are expressions, and constant or default values as if they are\n * (constant) expressions.\n *\n * @private\n */\nexport class PropertyValue<T, R> {\n property: Property<T, R>;\n value: PropertyValueSpecification<T> | void;\n expression: StylePropertyExpression;\n\n constructor(property: Property<T, R>, value: PropertyValueSpecification<T> | void) {\n this.property = property;\n this.value = value;\n this.expression = normalizePropertyExpression(value === undefined ? property.specification.default : value, property.specification);\n }\n\n isDataDriven(): boolean {\n return this.expression.kind === 'source' || this.expression.kind === 'composite';\n }\n\n possiblyEvaluate(parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): R {\n return this.property.possiblyEvaluate(this, parameters, canonical, availableImages);\n }\n}\n\n// ------- Transitionable -------\n\nexport type TransitionParameters = {\n now: TimePoint,\n transition: TransitionSpecification\n};\n\n/**\n * Paint properties are _transitionable_: they can change in a fluid manner, interpolating or cross-fading between\n * old and new value. The duration of the transition, and the delay before it begins, is configurable.\n *\n * `TransitionablePropertyValue` is a compositional class that stores both the property value and that transition\n * configuration.\n *\n * A `TransitionablePropertyValue` can calculate the next step in the evaluation chain for paint property values:\n * `TransitioningPropertyValue`.\n *\n * @private\n */\nclass TransitionablePropertyValue<T, R> {\n property: Property<T, R>;\n value: PropertyValue<T, R>;\n transition: TransitionSpecification | void;\n\n constructor(property: Property<T, R>) {\n this.property = property;\n this.value = new PropertyValue(property, undefined);\n }\n\n transitioned(parameters: TransitionParameters,\n prior: TransitioningPropertyValue<T, R>): TransitioningPropertyValue<T, R> {\n return new TransitioningPropertyValue(this.property, this.value, prior, // eslint-disable-line no-use-before-define\n extend({}, parameters.transition, this.transition), parameters.now);\n }\n\n untransitioned(): TransitioningPropertyValue<T, R> {\n return new TransitioningPropertyValue(this.property, this.value, null, {}, 0); // eslint-disable-line no-use-before-define\n }\n}\n\n/**\n * A helper type: given an object type `Properties` whose values are each of type `Property<T, R>`, it calculates\n * an object type with the same keys and values of type `TransitionablePropertyValue<T, R>`.\n *\n * @private\n */\ntype TransitionablePropertyValues<Props: Object>\n = $Exact<$ObjMap<Props, <T, R>(p: Property<T, R>) => TransitionablePropertyValue<T, R>>>\n\n/**\n * `Transitionable` stores a map of all (property name, `TransitionablePropertyValue`) pairs for paint properties of a\n * given layer type. It can calculate the `TransitioningPropertyValue`s for all of them at once, producing a\n * `Transitioning` instance for the same set of properties.\n *\n * @private\n */\nexport class Transitionable<Props: Object> {\n _properties: Properties<Props>;\n _values: TransitionablePropertyValues<Props>;\n\n constructor(properties: Properties<Props>) {\n this._properties = properties;\n this._values = (Object.create(properties.defaultTransitionablePropertyValues): any);\n }\n\n getValue<S: string, T>(name: S): PropertyValueSpecification<T> | void {\n return clone(this._values[name].value.value);\n }\n\n setValue<S: string, T>(name: S, value: PropertyValueSpecification<T> | void) {\n if (!this._values.hasOwnProperty(name)) {\n this._values[name] = new TransitionablePropertyValue(this._values[name].property);\n }\n // Note that we do not _remove_ an own property in the case where a value is being reset\n // to the default: the transition might still be non-default.\n this._values[name].value = new PropertyValue(this._values[name].property, value === null ? undefined : clone(value));\n }\n\n getTransition<S: string>(name: S): TransitionSpecification | void {\n return clone(this._values[name].transition);\n }\n\n setTransition<S: string>(name: S, value: TransitionSpecification | void) {\n if (!this._values.hasOwnProperty(name)) {\n this._values[name] = new TransitionablePropertyValue(this._values[name].property);\n }\n this._values[name].transition = clone(value) || undefined;\n }\n\n serialize(): PropertyValueSpecifications<Props> {\n const result: Object = {};\n for (const property of Object.keys(this._values)) {\n const value = this.getValue(property);\n if (value !== undefined) {\n result[property] = value;\n }\n\n const transition = this.getTransition(property);\n if (transition !== undefined) {\n result[`${property}-transition`] = transition;\n }\n }\n return result;\n }\n\n transitioned(parameters: TransitionParameters, prior: Transitioning<Props>): Transitioning<Props> {\n const result = new Transitioning(this._properties); // eslint-disable-line no-use-before-define\n for (const property of Object.keys(this._values)) {\n result._values[property] = this._values[property].transitioned(parameters, prior._values[property]);\n }\n return result;\n }\n\n untransitioned(): Transitioning<Props> {\n const result = new Transitioning(this._properties); // eslint-disable-line no-use-before-define\n for (const property of Object.keys(this._values)) {\n result._values[property] = this._values[property].untransitioned();\n }\n return result;\n }\n}\n\n// ------- Transitioning -------\n\n/**\n * `TransitioningPropertyValue` implements the first of two intermediate steps in the evaluation chain of a paint\n * property value. In this step, transitions between old and new values are handled: as long as the transition is in\n * progress, `TransitioningPropertyValue` maintains a reference to the prior value, and interpolates between it and\n * the new value based on the current time and the configured transition duration and delay. The product is the next\n * step in the evaluation chain: the \"possibly evaluated\" result type `R`. See below for more on this concept.\n *\n * @private\n */\nclass TransitioningPropertyValue<T, R> {\n property: Property<T, R>;\n value: PropertyValue<T, R>;\n prior: ?TransitioningPropertyValue<T, R>;\n begin: TimePoint;\n end: TimePoint;\n\n constructor(property: Property<T, R>,\n value: PropertyValue<T, R>,\n prior: ?TransitioningPropertyValue<T, R>,\n transition: TransitionSpecification,\n now: TimePoint) {\n const delay = transition.delay || 0;\n const duration = transition.duration || 0;\n now = now || 0;\n this.property = property;\n this.value = value;\n this.begin = now + delay;\n this.end = this.begin + duration;\n if (property.specification.transition && (transition.delay || transition.duration)) {\n this.prior = prior;\n }\n }\n\n possiblyEvaluate(parameters: EvaluationParameters, canonical: CanonicalTileID, availableImages: Array<string>): R {\n const now = parameters.now || 0;\n const finalValue = this.value.possiblyEvaluate(parameters, canonical, availableImages);\n const prior = this.prior;\n if (!prior) {\n // No prior value.\n return finalValue;\n } else if (now > this.end) {\n // Transition from prior value is now complete.\n this.prior = null;\n return finalValue;\n } else if (this.value.isDataDriven()) {\n // Transitions to data-driven properties are not supported.\n // We snap immediately to the data-driven value so that, when we perform layout,\n // we see the data-driven function and can use it to populate vertex buffers.\n this.prior = null;\n return finalValue;\n } else if (now < this.begin) {\n // Transition hasn't started yet.\n return prior.possiblyEvaluate(parameters, canonical, availableImages);\n } else {\n // Interpolate between recursively-calculated prior value and final.\n const t = (now - this.begin) / (this.end - this.begin);\n return this.property.interpolate(prior.possiblyEvaluate(parameters, canonical, availableImages), finalValue, easeCubicInOut(t));\n }\n }\n}\n\n/**\n * A helper type: given an object type `Properties` whose values are each of type `Property<T, R>`, it calculates\n * an object type with the same keys and values of type `TransitioningPropertyValue<T, R>`.\n *\n * @private\n */\ntype TransitioningPropertyValues<Props: Object>\n = $Exact<$ObjMap<Props, <T, R>(p: Property<T, R>) => TransitioningPropertyValue<T, R>>>\n\n/**\n * `Transitioning` stores a map of all (property name, `TransitioningPropertyValue`) pairs for paint properties of a\n * given layer type. It can calculate the possibly-evaluated values for all of them at once, producing a\n * `PossiblyEvaluated` instance for the same set of properties.\n *\n * @private\n */\nexport class Transitioning<Props: Object> {\n _properties: Properties<Props>;\n _values: TransitioningPropertyValues<Props>;\n\n constructor(properties: Properties<Props>) {\n this._properties = properties;\n this._values = (Object.create(properties.defaultTransitioningPropertyValues): any);\n }\n\n possiblyEvaluate(parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): PossiblyEvaluated<Props> {\n const result = new PossiblyEvaluated(this._properties); // eslint-disable-line no-use-before-define\n for (const property of Object.keys(this._values)) {\n result._values[property] = this._values[property].possiblyEvaluate(parameters, canonical, availableImages);\n }\n return result;\n }\n\n hasTransition(): boolean {\n for (const property of Object.keys(this._values)) {\n if (this._values[property].prior) {\n return true;\n }\n }\n return false;\n }\n}\n\n// ------- Layout -------\n\n/**\n * A helper type: given an object type `Properties` whose values are each of type `Property<T, R>`, it calculates\n * an object type with the same keys and values of type `PropertyValue<T, R>`.\n *\n * @private\n */\ntype PropertyValues<Props: Object>\n = $Exact<$ObjMap<Props, <T, R>(p: Property<T, R>) => PropertyValue<T, R>>>\n\n/**\n * A helper type: given an object type `Properties` whose values are each of type `Property<T, R>`, it calculates\n * an object type with the same keys and values of type `PropertyValueSpecification<T>`.\n *\n * @private\n */\ntype PropertyValueSpecifications<Props: Object>\n = $Exact<$ObjMap<Props, <T, R>(p: Property<T, R>) => PropertyValueSpecification<T>>>\n\n/**\n * Because layout properties are not transitionable, they have a simpler representation and evaluation chain than\n * paint properties: `PropertyValue`s are possibly evaluated, producing possibly evaluated values, which are then\n * fully evaluated.\n *\n * `Layout` stores a map of all (property name, `PropertyValue`) pairs for layout properties of a\n * given layer type. It can calculate the possibly-evaluated values for all of them at once, producing a\n * `PossiblyEvaluated` instance for the same set of properties.\n *\n * @private\n */\nexport class Layout<Props: Object> {\n _properties: Properties<Props>;\n _values: PropertyValues<Props>;\n\n constructor(properties: Properties<Props>) {\n this._properties = properties;\n this._values = (Object.create(properties.defaultPropertyValues): any);\n }\n\n getValue<S: string, T>(name: S): PropertyValueSpecification<T> | void {\n return clone(this._values[name].value);\n }\n\n setValue<S: string>(name: S, value: *) {\n this._values[name] = new PropertyValue(this._values[name].property, value === null ? undefined : clone(value));\n }\n\n serialize(): PropertyValueSpecifications<Props> {\n const result: Object = {};\n for (const property of Object.keys(this._values)) {\n const value = this.getValue(property);\n if (value !== undefined) {\n result[property] = value;\n }\n }\n return result;\n }\n\n possiblyEvaluate(parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): PossiblyEvaluated<Props> {\n const result = new PossiblyEvaluated(this._properties); // eslint-disable-line no-use-before-define\n for (const property of Object.keys(this._values)) {\n result._values[property] = this._values[property].possiblyEvaluate(parameters, canonical, availableImages);\n }\n return result;\n }\n}\n\n// ------- PossiblyEvaluated -------\n\n/**\n * \"Possibly evaluated value\" is an intermediate stage in the evaluation chain for both paint and layout property\n * values. The purpose of this stage is to optimize away unnecessary recalculations for data-driven properties. Code\n * which uses data-driven property values must assume that the value is dependent on feature data, and request that it\n * be evaluated for each feature. But when that property value is in fact a constant or camera function, the calculation\n * will not actually depend on the feature, and we can benefit from returning the prior result of having done the\n * evaluation once, ahead of time, in an intermediate step whose inputs are just the value and \"global\" parameters\n * such as current zoom level.\n *\n * `PossiblyEvaluatedValue` represents the three possible outcomes of this step: if the input value was a constant or\n * camera expression, then the \"possibly evaluated\" result is a constant value. Otherwise, the input value was either\n * a source or composite expression, and we must defer final evaluation until supplied a feature. We separate\n * the source and composite cases because they are handled differently when generating GL attributes, buffers, and\n * uniforms.\n *\n * Note that `PossiblyEvaluatedValue` (and `PossiblyEvaluatedPropertyValue`, below) are _not_ used for properties that\n * do not allow data-driven values. For such properties, we know that the \"possibly evaluated\" result is always a constant\n * scalar value. See below.\n *\n * @private\n */\ntype PossiblyEvaluatedValue<T> =\n | {kind: 'constant', value: T}\n | SourceExpression\n | CompositeExpression;\n\n/**\n * `PossiblyEvaluatedPropertyValue` is used for data-driven paint and layout property values. It holds a\n * `PossiblyEvaluatedValue` and the `GlobalProperties` that were used to generate it. You're not allowed to supply\n * a different set of `GlobalProperties` when performing the final evaluation because they would be ignored in the\n * case where the input value was a constant or camera function.\n *\n * @private\n */\nexport class PossiblyEvaluatedPropertyValue<T> {\n property: DataDrivenProperty<T>;\n value: PossiblyEvaluatedValue<T>;\n parameters: EvaluationParameters;\n\n constructor(property: DataDrivenProperty<T>, value: PossiblyEvaluatedValue<T>, parameters: EvaluationParameters) {\n this.property = property;\n this.value = value;\n this.parameters = parameters;\n }\n\n isConstant(): boolean {\n return this.value.kind === 'constant';\n }\n\n constantOr(value: T): T {\n if (this.value.kind === 'constant') {\n return this.value.value;\n } else {\n return value;\n }\n }\n\n evaluate(feature: Feature, featureState: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>): T {\n return this.property.evaluate(this.value, this.parameters, feature, featureState, canonical, availableImages);\n }\n}\n\n/**\n * A helper type: given an object type `Properties` whose values are each of type `Property<T, R>`, it calculates\n * an object type with the same keys, and values of type `R`.\n *\n * For properties that don't allow data-driven values, `R` is a scalar type such as `number`, `string`, or `Color`.\n * For data-driven properties, it is `PossiblyEvaluatedPropertyValue`. Critically, the type definitions are set up\n * in a way that allows flow to know which of these two cases applies for any given property name, and if you attempt\n * to use a `PossiblyEvaluatedPropertyValue` as if it was a scalar, or vice versa, you will get a type error. (However,\n * there's at least one case in which flow fails to produce a type error that you should be aware of: in a context such\n * as `layer.paint.get('foo-opacity') === 0`, if `foo-opacity` is data-driven, than the left-hand side is of type\n * `PossiblyEvaluatedPropertyValue<number>`, but flow will not complain about comparing this to a number using `===`.\n * See https://github.com/facebook/flow/issues/2359.)\n *\n * There's also a third, special case possiblity for `R`: for cross-faded properties, it's `?CrossFaded<T>`.\n *\n * @private\n */\ntype PossiblyEvaluatedPropertyValues<Props: Object>\n = $Exact<$ObjMap<Props, <T, R>(p: Property<T, R>) => R>>\n\n/**\n * `PossiblyEvaluated` stores a map of all (property name, `R`) pairs for paint or layout properties of a\n * given layer type.\n * @private\n */\nexport class PossiblyEvaluated<Props: Object> {\n _properties: Properties<Props>;\n _values: PossiblyEvaluatedPropertyValues<Props>;\n\n constructor(properties: Properties<Props>) {\n this._properties = properties;\n this._values = (Object.create(properties.defaultPossiblyEvaluatedValues): any);\n }\n\n get<S: string>(name: S): $ElementType<PossiblyEvaluatedPropertyValues<Props>, S> {\n return this._values[name];\n }\n}\n\n/**\n * An implementation of `Property` for properties that do not permit data-driven (source or composite) expressions.\n * This restriction allows us to declare statically that the result of possibly evaluating this kind of property\n * is in fact always the scalar type `T`, and can be used without further evaluating the value on a per-feature basis.\n *\n * @private\n */\nexport class DataConstantProperty<T> implements Property<T, T> {\n specification: StylePropertySpecification;\n\n constructor(specification: StylePropertySpecification) {\n this.specification = specification;\n }\n\n possiblyEvaluate(value: PropertyValue<T, T>, parameters: EvaluationParameters): T {\n assert(!value.isDataDriven());\n return value.expression.evaluate(parameters);\n }\n\n interpolate(a: T, b: T, t: number): T {\n const interp: ?(a: T, b: T, t: number) => T = (interpolate: any)[this.specification.type];\n if (interp) {\n return interp(a, b, t);\n } else {\n return a;\n }\n }\n}\n\n/**\n * An implementation of `Property` for properties that permit data-driven (source or composite) expressions.\n * The result of possibly evaluating this kind of property is `PossiblyEvaluatedPropertyValue<T>`; obtaining\n * a scalar value `T` requires further evaluation on a per-feature basis.\n *\n * @private\n */\nexport class DataDrivenProperty<T> implements Property<T, PossiblyEvaluatedPropertyValue<T>> {\n specification: StylePropertySpecification;\n overrides: ?Object;\n\n constructor(specification: StylePropertySpecification, overrides?: Object) {\n this.specification = specification;\n this.overrides = overrides;\n }\n\n possiblyEvaluate(value: PropertyValue<T, PossiblyEvaluatedPropertyValue<T>>, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): PossiblyEvaluatedPropertyValue<T> {\n if (value.expression.kind === 'constant' || value.expression.kind === 'camera') {\n return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: value.expression.evaluate(parameters, (null: any), {}, canonical, availableImages)}, parameters);\n } else {\n return new PossiblyEvaluatedPropertyValue(this, value.expression, parameters);\n }\n }\n\n interpolate(a: PossiblyEvaluatedPropertyValue<T>,\n b: PossiblyEvaluatedPropertyValue<T>,\n t: number): PossiblyEvaluatedPropertyValue<T> {\n // If either possibly-evaluated value is non-constant, give up: we aren't able to interpolate data-driven values.\n if (a.value.kind !== 'constant' || b.value.kind !== 'constant') {\n return a;\n }\n\n // Special case hack solely for fill-outline-color. The undefined value is subsequently handled in\n // FillStyleLayer#recalculate, which sets fill-outline-color to the fill-color value if the former\n // is a PossiblyEvaluatedPropertyValue containing a constant undefined value. In addition to the\n // return value here, the other source of a PossiblyEvaluatedPropertyValue containing a constant\n // undefined value is the \"default value\" for fill-outline-color held in\n // `Properties#defaultPossiblyEvaluatedValues`, which serves as the prototype of\n // `PossiblyEvaluated#_values`.\n if (a.value.value === undefined || b.value.value === undefined) {\n return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: (undefined: any)}, a.parameters);\n }\n\n const interp: ?(a: T, b: T, t: number) => T = (interpolate: any)[this.specification.type];\n if (interp) {\n return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: interp(a.value.value, b.value.value, t)}, a.parameters);\n } else {\n return a;\n }\n }\n\n evaluate(value: PossiblyEvaluatedValue<T>, parameters: EvaluationParameters, feature: Feature, featureState: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>): T {\n if (value.kind === 'constant') {\n return value.value;\n } else {\n return value.evaluate(parameters, feature, featureState, canonical, availableImages);\n }\n }\n}\n\n/**\n * An implementation of `Property` for data driven `line-pattern` which are transitioned by cross-fading\n * rather than interpolation.\n *\n * @private\n */\n\nexport class CrossFadedDataDrivenProperty<T> extends DataDrivenProperty<?CrossFaded<T>> {\n\n possiblyEvaluate(value: PropertyValue<?CrossFaded<T>, PossiblyEvaluatedPropertyValue<?CrossFaded<T>>>, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): PossiblyEvaluatedPropertyValue<?CrossFaded<T>> {\n if (value.value === undefined) {\n return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: undefined}, parameters);\n } else if (value.expression.kind === 'constant') {\n const evaluatedValue = value.expression.evaluate(parameters, (null: any), {}, canonical, availableImages);\n const isImageExpression = value.property.specification.type === 'resolvedImage';\n const constantValue = isImageExpression && typeof evaluatedValue !== 'string' ? evaluatedValue.name : evaluatedValue;\n const constant = this._calculate(constantValue, constantValue, constantValue, parameters);\n return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: constant}, parameters);\n } else if (value.expression.kind === 'camera') {\n const cameraVal = this._calculate(\n value.expression.evaluate({zoom: parameters.zoom - 1.0}),\n value.expression.evaluate({zoom: parameters.zoom}),\n value.expression.evaluate({zoom: parameters.zoom + 1.0}),\n parameters);\n return new PossiblyEvaluatedPropertyValue(this, {kind: 'constant', value: cameraVal}, parameters);\n } else {\n // source or composite expression\n return new PossiblyEvaluatedPropertyValue(this, value.expression, parameters);\n }\n }\n\n evaluate(value: PossiblyEvaluatedValue<?CrossFaded<T>>, globals: EvaluationParameters, feature: Feature, featureState: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>): ?CrossFaded<T> {\n if (value.kind === 'source') {\n const constant = value.evaluate(globals, feature, featureState, canonical, availableImages);\n return this._calculate(constant, constant, constant, globals);\n } else if (value.kind === 'composite') {\n return this._calculate(\n value.evaluate({zoom: Math.floor(globals.zoom) - 1.0}, feature, featureState),\n value.evaluate({zoom: Math.floor(globals.zoom)}, feature, featureState),\n value.evaluate({zoom: Math.floor(globals.zoom) + 1.0}, feature, featureState),\n globals);\n } else {\n return value.value;\n }\n }\n\n _calculate(min: T, mid: T, max: T, parameters: EvaluationParameters): CrossFaded<T> {\n const z = parameters.zoom;\n // ugly hack alert: when evaluating non-constant dashes on the worker side,\n // we need all three values to pack into the atlas; the if condition is always false there;\n // will be removed after removing cross-fading\n return z > parameters.zoomHistory.lastIntegerZoom ?\n {from: min, to: mid, other: max} :\n {from: max, to: mid, other: min};\n }\n\n interpolate(a: PossiblyEvaluatedPropertyValue<?CrossFaded<T>>): PossiblyEvaluatedPropertyValue<?CrossFaded<T>> {\n return a;\n }\n}\n/**\n * An implementation of `Property` for `*-pattern` and `line-dasharray`, which are transitioned by cross-fading\n * rather than interpolation.\n *\n * @private\n */\nexport class CrossFadedProperty<T> implements Property<T, ?CrossFaded<T>> {\n specification: StylePropertySpecification;\n\n constructor(specification: StylePropertySpecification) {\n this.specification = specification;\n }\n\n possiblyEvaluate(value: PropertyValue<T, ?CrossFaded<T>>, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): ?CrossFaded<T> {\n if (value.value === undefined) {\n return undefined;\n } else if (value.expression.kind === 'constant') {\n const constant = value.expression.evaluate(parameters, (null: any), {}, canonical, availableImages);\n return this._calculate(constant, constant, constant, parameters);\n } else {\n assert(!value.isDataDriven());\n return this._calculate(\n value.expression.evaluate(new EvaluationParameters(Math.floor(parameters.zoom - 1.0), parameters)),\n value.expression.evaluate(new EvaluationParameters(Math.floor(parameters.zoom), parameters)),\n value.expression.evaluate(new EvaluationParameters(Math.floor(parameters.zoom + 1.0), parameters)),\n parameters);\n }\n }\n\n _calculate(min: T, mid: T, max: T, parameters: EvaluationParameters): ?CrossFaded<T> {\n const z = parameters.zoom;\n return z > parameters.zoomHistory.lastIntegerZoom ? {from: min, to: mid} : {from: max, to: mid};\n }\n\n interpolate(a: ?CrossFaded<T>): ?CrossFaded<T> {\n return a;\n }\n}\n\n/**\n * An implementation of `Property` for `heatmap-color` and `line-gradient`. Interpolation is a no-op, and\n * evaluation returns a boolean value in order to indicate its presence, but the real\n * evaluation happens in StyleLayer classes.\n *\n * @private\n */\n\nexport class ColorRampProperty implements Property<Color, boolean> {\n specification: StylePropertySpecification;\n\n constructor(specification: StylePropertySpecification) {\n this.specification = specification;\n }\n\n possiblyEvaluate(value: PropertyValue<Color, boolean>, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): boolean {\n return !!value.expression.evaluate(parameters, (null: any), {}, canonical, availableImages);\n }\n\n interpolate(): boolean { return false; }\n}\n\n/**\n * `Properties` holds objects containing default values for the layout or paint property set of a given\n * layer type. These objects are immutable, and they are used as the prototypes for the `_values` members of\n * `Transitionable`, `Transitioning`, `Layout`, and `PossiblyEvaluated`. This allows these classes to avoid\n * doing work in the common case where a property has no explicit value set and should be considered to take\n * on the default value: using `for (const property of Object.keys(this._values))`, they can iterate over\n * only the _own_ properties of `_values`, skipping repeated calculation of transitions and possible/final\n * evaluations for defaults, the result of which will always be the same.\n *\n * @private\n */\nexport class Properties<Props: Object> {\n properties: Props;\n defaultPropertyValues: PropertyValues<Props>;\n defaultTransitionablePropertyValues: TransitionablePropertyValues<Props>;\n defaultTransitioningPropertyValues: TransitioningPropertyValues<Props>;\n defaultPossiblyEvaluatedValues: PossiblyEvaluatedPropertyValues<Props>;\n overridableProperties: Array<string>;\n\n constructor(properties: Props) {\n this.properties = properties;\n this.defaultPropertyValues = ({}: any);\n this.defaultTransitionablePropertyValues = ({}: any);\n this.defaultTransitioningPropertyValues = ({}: any);\n this.defaultPossiblyEvaluatedValues = ({}: any);\n this.overridableProperties = ([]: any);\n\n const defaultParameters = new EvaluationParameters(0, {});\n for (const property in properties) {\n const prop = properties[property];\n if (prop.specification.overridable) {\n this.overridableProperties.push(property);\n }\n const defaultPropertyValue = this.defaultPropertyValues[property] =\n new PropertyValue(prop, undefined);\n const defaultTransitionablePropertyValue = this.defaultTransitionablePropertyValues[property] =\n new TransitionablePropertyValue(prop);\n this.defaultTransitioningPropertyValues[property] =\n defaultTransitionablePropertyValue.untransitioned();\n this.defaultPossiblyEvaluatedValues[property] =\n defaultPropertyValue.possiblyEvaluate(defaultParameters);\n }\n }\n}\n\nregister(DataDrivenProperty, 'DataDrivenProperty');\nregister(DataConstantProperty, 'DataConstantProperty');\nregister(CrossFadedDataDrivenProperty, 'CrossFadedDataDrivenProperty');\nregister(CrossFadedProperty, 'CrossFadedProperty');\nregister(ColorRampProperty, 'ColorRampProperty');\n","// @flow\n\nimport {clamp} from '../util/util.js';\n\n/**\n * Packs two numbers, interpreted as 8-bit unsigned integers, into a single\n * float. Unpack them in the shader using the `unpack_float()` function,\n * defined in _prelude.vertex.glsl\n *\n * @private\n */\nexport function packUint8ToFloat(a: number, b: number): number {\n // coerce a and b to 8-bit ints\n a = clamp(Math.floor(a), 0, 255);\n b = clamp(Math.floor(b), 0, 255);\n return 256 * a + b;\n}\n","// @flow\n\n// Note: all \"sizes\" are measured in bytes\n\nimport assert from 'assert';\n\nimport type {Transferable} from '../types/transferable.js';\n\nconst viewTypes = {\n 'Int8': Int8Array,\n 'Uint8': Uint8Array,\n 'Int16': Int16Array,\n 'Uint16': Uint16Array,\n 'Int32': Int32Array,\n 'Uint32': Uint32Array,\n 'Float32': Float32Array\n};\n\nexport type ViewType = $Keys<typeof viewTypes>;\n\n/**\n * @private\n */\nclass Struct {\n _pos1: number;\n _pos2: number;\n _pos4: number;\n _pos8: number;\n +_structArray: StructArray;\n\n // The following properties are defined on the prototype of sub classes.\n size: number;\n\n /**\n * @param {StructArray} structArray The StructArray the struct is stored in\n * @param {number} index The index of the struct in the StructArray.\n * @private\n */\n constructor(structArray: StructArray, index: number) {\n (this: any)._structArray = structArray;\n this._pos1 = index * this.size;\n this._pos2 = this._pos1 / 2;\n this._pos4 = this._pos1 / 4;\n this._pos8 = this._pos1 / 8;\n }\n}\n\nconst DEFAULT_CAPACITY = 128;\nconst RESIZE_MULTIPLIER = 5;\n\nexport type StructArrayMember = {\n name: string,\n type: ViewType,\n components: number,\n offset: number\n};\n\nexport type StructArrayLayout = {\n members: Array<StructArrayMember>,\n size: number,\n alignment: ?number\n}\n\nexport type SerializedStructArray = {\n length: number,\n arrayBuffer: ArrayBuffer\n};\n\n/**\n * `StructArray` provides an abstraction over `ArrayBuffer` and `TypedArray`\n * making it behave like an array of typed structs.\n *\n * Conceptually, a StructArray is comprised of elements, i.e., instances of its\n * associated struct type. Each particular struct type, together with an\n * alignment size, determines the memory layout of a StructArray whose elements\n * are of that type. Thus, for each such layout that we need, we have\n * a corrseponding StructArrayLayout class, inheriting from StructArray and\n * implementing `emplaceBack()` and `_refreshViews()`.\n *\n * In some cases, where we need to access particular elements of a StructArray,\n * we implement a more specific subclass that inherits from one of the\n * StructArrayLayouts and adds a `get(i): T` accessor that returns a structured\n * object whose properties are proxies into the underlying memory space for the\n * i-th element. This affords the convience of working with (seemingly) plain\n * Javascript objects without the overhead of serializing/deserializing them\n * into ArrayBuffers for efficient web worker transfer.\n *\n * @private\n */\nclass StructArray {\n capacity: number;\n length: number;\n isTransferred: boolean;\n arrayBuffer: ArrayBuffer;\n uint8: Uint8Array;\n\n // The following properties are defined on the prototype.\n members: Array<StructArrayMember>;\n bytesPerElement: number;\n +emplaceBack: Function;\n +emplace: Function;\n\n constructor() {\n this.isTransferred = false;\n this.capacity = -1;\n this.resize(0);\n }\n\n /**\n * Serialize a StructArray instance. Serializes both the raw data and the\n * metadata needed to reconstruct the StructArray base class during\n * deserialization.\n * @private\n */\n static serialize(array: StructArray, transferables?: Array<Transferable>): SerializedStructArray {\n assert(!array.isTransferred);\n\n array._trim();\n\n if (transferables) {\n array.isTransferred = true;\n transferables.push(array.arrayBuffer);\n }\n\n return {\n length: array.length,\n arrayBuffer: array.arrayBuffer,\n };\n }\n\n static deserialize(input: SerializedStructArray): StructArray {\n // $FlowFixMe not-an-object - newer Flow doesn't understand this pattern, silence for now\n const structArray = Object.create(this.prototype);\n structArray.arrayBuffer = input.arrayBuffer;\n structArray.length = input.length;\n structArray.capacity = input.arrayBuffer.byteLength / structArray.bytesPerElement;\n structArray._refreshViews();\n return ((structArray: any): StructArray);\n }\n\n /**\n * Resize the array to discard unused capacity.\n */\n _trim() {\n if (this.length !== this.capacity) {\n this.capacity = this.length;\n this.arrayBuffer = this.arrayBuffer.slice(0, this.length * this.bytesPerElement);\n this._refreshViews();\n }\n }\n\n /**\n * Resets the the length of the array to 0 without de-allocating capcacity.\n */\n clear() {\n this.length = 0;\n }\n\n /**\n * Resize the array.\n * If `n` is greater than the current length then additional elements with undefined values are added.\n * If `n` is less than the current length then the array will be reduced to the first `n` elements.\n * @param {number} n The new size of the array.\n */\n resize(n: number) {\n assert(!this.isTransferred);\n this.reserve(n);\n this.length = n;\n }\n\n /**\n * Indicate a planned increase in size, so that any necessary allocation may\n * be done once, ahead of time.\n * @param {number} n The expected size of the array.\n */\n reserve(n: number) {\n if (n > this.capacity) {\n this.capacity = Math.max(n, Math.floor(this.capacity * RESIZE_MULTIPLIER), DEFAULT_CAPACITY);\n this.arrayBuffer = new ArrayBuffer(this.capacity * this.bytesPerElement);\n\n const oldUint8Array = this.uint8;\n this._refreshViews();\n if (oldUint8Array) this.uint8.set(oldUint8Array);\n }\n }\n\n /**\n * Create TypedArray views for the current ArrayBuffer.\n */\n _refreshViews() {\n throw new Error('_refreshViews() must be implemented by each concrete StructArray layout');\n }\n\n destroy() {\n // $FlowFixMe\n this.int8 = this.uint8 = this.int16 = this.uint16 = this.int32 = this.uint32 = this.float32 = null;\n this.arrayBuffer = (null: any);\n }\n}\n\n/**\n * Given a list of member fields, create a full StructArrayLayout, in\n * particular calculating the correct byte offset for each field. This data\n * is used at build time to generate StructArrayLayout_*#emplaceBack() and\n * other accessors, and at runtime for binding vertex buffer attributes.\n *\n * @private\n */\nfunction createLayout(\n members: Array<{ name: string, type: ViewType, +components?: number, }>,\n alignment: number = 1\n): StructArrayLayout {\n\n let offset = 0;\n let maxSize = 0;\n const layoutMembers = members.map((member) => {\n assert(member.name.length);\n const typeSize = sizeOf(member.type);\n const memberOffset = offset = align(offset, Math.max(alignment, typeSize));\n const components = member.components || 1;\n\n maxSize = Math.max(maxSize, typeSize);\n offset += typeSize * components;\n\n return {\n name: member.name,\n type: member.type,\n components,\n offset: memberOffset,\n };\n });\n\n const size = align(offset, Math.max(maxSize, alignment));\n\n return {\n members: layoutMembers,\n size,\n alignment\n };\n}\n\nfunction sizeOf(type: ViewType): number {\n return viewTypes[type].BYTES_PER_ELEMENT;\n}\n\nfunction align(offset: number, size: number): number {\n return Math.ceil(offset / size) * size;\n}\n\nexport {StructArray, Struct, viewTypes, createLayout};\n","// This file is generated. Edit build/generate-struct-arrays.js, then run `yarn run codegen`.\n/* eslint-disable camelcase */\n// @flow\n\nimport assert from 'assert';\nimport {Struct, StructArray} from '../util/struct_array.js';\nimport {register} from '../util/web_worker_transfer.js';\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Int16[2]\n *\n * @private\n */\nclass StructArrayLayout2i4 extends StructArray {\n uint8: Uint8Array;\n int16: Int16Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.int16 = new Int16Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1);\n }\n\n emplace(i: number, v0: number, v1: number): number {\n const o2 = i * 2;\n this.int16[o2 + 0] = v0;\n this.int16[o2 + 1] = v1;\n return i;\n }\n}\n\nStructArrayLayout2i4.prototype.bytesPerElement = 4;\nregister(StructArrayLayout2i4, 'StructArrayLayout2i4');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Int16[3]\n *\n * @private\n */\nclass StructArrayLayout3i6 extends StructArray {\n uint8: Uint8Array;\n int16: Int16Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.int16 = new Int16Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number): number {\n const o2 = i * 3;\n this.int16[o2 + 0] = v0;\n this.int16[o2 + 1] = v1;\n this.int16[o2 + 2] = v2;\n return i;\n }\n}\n\nStructArrayLayout3i6.prototype.bytesPerElement = 6;\nregister(StructArrayLayout3i6, 'StructArrayLayout3i6');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Int16[4]\n *\n * @private\n */\nclass StructArrayLayout4i8 extends StructArray {\n uint8: Uint8Array;\n int16: Int16Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.int16 = new Int16Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number): number {\n const o2 = i * 4;\n this.int16[o2 + 0] = v0;\n this.int16[o2 + 1] = v1;\n this.int16[o2 + 2] = v2;\n this.int16[o2 + 3] = v3;\n return i;\n }\n}\n\nStructArrayLayout4i8.prototype.bytesPerElement = 8;\nregister(StructArrayLayout4i8, 'StructArrayLayout4i8');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Int16[2]\n * [4]: Uint8[4]\n * [8]: Float32[1]\n *\n * @private\n */\nclass StructArrayLayout2i4ub1f12 extends StructArray {\n uint8: Uint8Array;\n int16: Int16Array;\n float32: Float32Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.int16 = new Int16Array(this.arrayBuffer);\n this.float32 = new Float32Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3, v4, v5, v6);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number): number {\n const o2 = i * 6;\n const o1 = i * 12;\n const o4 = i * 3;\n this.int16[o2 + 0] = v0;\n this.int16[o2 + 1] = v1;\n this.uint8[o1 + 4] = v2;\n this.uint8[o1 + 5] = v3;\n this.uint8[o1 + 6] = v4;\n this.uint8[o1 + 7] = v5;\n this.float32[o4 + 2] = v6;\n return i;\n }\n}\n\nStructArrayLayout2i4ub1f12.prototype.bytesPerElement = 12;\nregister(StructArrayLayout2i4ub1f12, 'StructArrayLayout2i4ub1f12');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Float32[4]\n *\n * @private\n */\nclass StructArrayLayout4f16 extends StructArray {\n uint8: Uint8Array;\n float32: Float32Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.float32 = new Float32Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number): number {\n const o4 = i * 4;\n this.float32[o4 + 0] = v0;\n this.float32[o4 + 1] = v1;\n this.float32[o4 + 2] = v2;\n this.float32[o4 + 3] = v3;\n return i;\n }\n}\n\nStructArrayLayout4f16.prototype.bytesPerElement = 16;\nregister(StructArrayLayout4f16, 'StructArrayLayout4f16');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Uint16[10]\n *\n * @private\n */\nclass StructArrayLayout10ui20 extends StructArray {\n uint8: Uint8Array;\n uint16: Uint16Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.uint16 = new Uint16Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number): number {\n const o2 = i * 10;\n this.uint16[o2 + 0] = v0;\n this.uint16[o2 + 1] = v1;\n this.uint16[o2 + 2] = v2;\n this.uint16[o2 + 3] = v3;\n this.uint16[o2 + 4] = v4;\n this.uint16[o2 + 5] = v5;\n this.uint16[o2 + 6] = v6;\n this.uint16[o2 + 7] = v7;\n this.uint16[o2 + 8] = v8;\n this.uint16[o2 + 9] = v9;\n return i;\n }\n}\n\nStructArrayLayout10ui20.prototype.bytesPerElement = 20;\nregister(StructArrayLayout10ui20, 'StructArrayLayout10ui20');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Uint16[8]\n *\n * @private\n */\nclass StructArrayLayout8ui16 extends StructArray {\n uint8: Uint8Array;\n uint16: Uint16Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.uint16 = new Uint16Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number): number {\n const o2 = i * 8;\n this.uint16[o2 + 0] = v0;\n this.uint16[o2 + 1] = v1;\n this.uint16[o2 + 2] = v2;\n this.uint16[o2 + 3] = v3;\n this.uint16[o2 + 4] = v4;\n this.uint16[o2 + 5] = v5;\n this.uint16[o2 + 6] = v6;\n this.uint16[o2 + 7] = v7;\n return i;\n }\n}\n\nStructArrayLayout8ui16.prototype.bytesPerElement = 16;\nregister(StructArrayLayout8ui16, 'StructArrayLayout8ui16');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Int16[6]\n *\n * @private\n */\nclass StructArrayLayout6i12 extends StructArray {\n uint8: Uint8Array;\n int16: Int16Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.int16 = new Int16Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3, v4, v5);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number): number {\n const o2 = i * 6;\n this.int16[o2 + 0] = v0;\n this.int16[o2 + 1] = v1;\n this.int16[o2 + 2] = v2;\n this.int16[o2 + 3] = v3;\n this.int16[o2 + 4] = v4;\n this.int16[o2 + 5] = v5;\n return i;\n }\n}\n\nStructArrayLayout6i12.prototype.bytesPerElement = 12;\nregister(StructArrayLayout6i12, 'StructArrayLayout6i12');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Int16[4]\n * [8]: Uint16[4]\n * [16]: Int16[4]\n *\n * @private\n */\nclass StructArrayLayout4i4ui4i24 extends StructArray {\n uint8: Uint8Array;\n int16: Int16Array;\n uint16: Uint16Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.int16 = new Int16Array(this.arrayBuffer);\n this.uint16 = new Uint16Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number): number {\n const o2 = i * 12;\n this.int16[o2 + 0] = v0;\n this.int16[o2 + 1] = v1;\n this.int16[o2 + 2] = v2;\n this.int16[o2 + 3] = v3;\n this.uint16[o2 + 4] = v4;\n this.uint16[o2 + 5] = v5;\n this.uint16[o2 + 6] = v6;\n this.uint16[o2 + 7] = v7;\n this.int16[o2 + 8] = v8;\n this.int16[o2 + 9] = v9;\n this.int16[o2 + 10] = v10;\n this.int16[o2 + 11] = v11;\n return i;\n }\n}\n\nStructArrayLayout4i4ui4i24.prototype.bytesPerElement = 24;\nregister(StructArrayLayout4i4ui4i24, 'StructArrayLayout4i4ui4i24');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Int16[3]\n * [8]: Float32[3]\n *\n * @private\n */\nclass StructArrayLayout3i3f20 extends StructArray {\n uint8: Uint8Array;\n int16: Int16Array;\n float32: Float32Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.int16 = new Int16Array(this.arrayBuffer);\n this.float32 = new Float32Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3, v4, v5);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number): number {\n const o2 = i * 10;\n const o4 = i * 5;\n this.int16[o2 + 0] = v0;\n this.int16[o2 + 1] = v1;\n this.int16[o2 + 2] = v2;\n this.float32[o4 + 2] = v3;\n this.float32[o4 + 3] = v4;\n this.float32[o4 + 4] = v5;\n return i;\n }\n}\n\nStructArrayLayout3i3f20.prototype.bytesPerElement = 20;\nregister(StructArrayLayout3i3f20, 'StructArrayLayout3i3f20');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Uint32[1]\n *\n * @private\n */\nclass StructArrayLayout1ul4 extends StructArray {\n uint8: Uint8Array;\n uint32: Uint32Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.uint32 = new Uint32Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0);\n }\n\n emplace(i: number, v0: number): number {\n const o4 = i * 1;\n this.uint32[o4 + 0] = v0;\n return i;\n }\n}\n\nStructArrayLayout1ul4.prototype.bytesPerElement = 4;\nregister(StructArrayLayout1ul4, 'StructArrayLayout1ul4');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Int16[5]\n * [12]: Float32[4]\n * [28]: Int16[1]\n * [32]: Uint32[1]\n * [36]: Uint16[2]\n *\n * @private\n */\nclass StructArrayLayout5i4f1i1ul2ui40 extends StructArray {\n uint8: Uint8Array;\n int16: Int16Array;\n float32: Float32Array;\n uint32: Uint32Array;\n uint16: Uint16Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.int16 = new Int16Array(this.arrayBuffer);\n this.float32 = new Float32Array(this.arrayBuffer);\n this.uint32 = new Uint32Array(this.arrayBuffer);\n this.uint16 = new Uint16Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number): number {\n const o2 = i * 20;\n const o4 = i * 10;\n this.int16[o2 + 0] = v0;\n this.int16[o2 + 1] = v1;\n this.int16[o2 + 2] = v2;\n this.int16[o2 + 3] = v3;\n this.int16[o2 + 4] = v4;\n this.float32[o4 + 3] = v5;\n this.float32[o4 + 4] = v6;\n this.float32[o4 + 5] = v7;\n this.float32[o4 + 6] = v8;\n this.int16[o2 + 14] = v9;\n this.uint32[o4 + 8] = v10;\n this.uint16[o2 + 18] = v11;\n this.uint16[o2 + 19] = v12;\n return i;\n }\n}\n\nStructArrayLayout5i4f1i1ul2ui40.prototype.bytesPerElement = 40;\nregister(StructArrayLayout5i4f1i1ul2ui40, 'StructArrayLayout5i4f1i1ul2ui40');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Int16[3]\n * [8]: Int16[2]\n * [12]: Int16[2]\n *\n * @private\n */\nclass StructArrayLayout3i2i2i16 extends StructArray {\n uint8: Uint8Array;\n int16: Int16Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.int16 = new Int16Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3, v4, v5, v6);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number): number {\n const o2 = i * 8;\n this.int16[o2 + 0] = v0;\n this.int16[o2 + 1] = v1;\n this.int16[o2 + 2] = v2;\n this.int16[o2 + 4] = v3;\n this.int16[o2 + 5] = v4;\n this.int16[o2 + 6] = v5;\n this.int16[o2 + 7] = v6;\n return i;\n }\n}\n\nStructArrayLayout3i2i2i16.prototype.bytesPerElement = 16;\nregister(StructArrayLayout3i2i2i16, 'StructArrayLayout3i2i2i16');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Float32[2]\n * [8]: Float32[1]\n * [12]: Int16[2]\n *\n * @private\n */\nclass StructArrayLayout2f1f2i16 extends StructArray {\n uint8: Uint8Array;\n float32: Float32Array;\n int16: Int16Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.float32 = new Float32Array(this.arrayBuffer);\n this.int16 = new Int16Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3, v4);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number): number {\n const o4 = i * 4;\n const o2 = i * 8;\n this.float32[o4 + 0] = v0;\n this.float32[o4 + 1] = v1;\n this.float32[o4 + 2] = v2;\n this.int16[o2 + 6] = v3;\n this.int16[o2 + 7] = v4;\n return i;\n }\n}\n\nStructArrayLayout2f1f2i16.prototype.bytesPerElement = 16;\nregister(StructArrayLayout2f1f2i16, 'StructArrayLayout2f1f2i16');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Uint8[2]\n * [4]: Float32[2]\n *\n * @private\n */\nclass StructArrayLayout2ub2f12 extends StructArray {\n uint8: Uint8Array;\n float32: Float32Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.float32 = new Float32Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number): number {\n const o1 = i * 12;\n const o4 = i * 3;\n this.uint8[o1 + 0] = v0;\n this.uint8[o1 + 1] = v1;\n this.float32[o4 + 1] = v2;\n this.float32[o4 + 2] = v3;\n return i;\n }\n}\n\nStructArrayLayout2ub2f12.prototype.bytesPerElement = 12;\nregister(StructArrayLayout2ub2f12, 'StructArrayLayout2ub2f12');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Float32[3]\n *\n * @private\n */\nclass StructArrayLayout3f12 extends StructArray {\n uint8: Uint8Array;\n float32: Float32Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.float32 = new Float32Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number): number {\n const o4 = i * 3;\n this.float32[o4 + 0] = v0;\n this.float32[o4 + 1] = v1;\n this.float32[o4 + 2] = v2;\n return i;\n }\n}\n\nStructArrayLayout3f12.prototype.bytesPerElement = 12;\nregister(StructArrayLayout3f12, 'StructArrayLayout3f12');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Uint16[3]\n *\n * @private\n */\nclass StructArrayLayout3ui6 extends StructArray {\n uint8: Uint8Array;\n uint16: Uint16Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.uint16 = new Uint16Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number): number {\n const o2 = i * 3;\n this.uint16[o2 + 0] = v0;\n this.uint16[o2 + 1] = v1;\n this.uint16[o2 + 2] = v2;\n return i;\n }\n}\n\nStructArrayLayout3ui6.prototype.bytesPerElement = 6;\nregister(StructArrayLayout3ui6, 'StructArrayLayout3ui6');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Int16[3]\n * [8]: Float32[2]\n * [16]: Uint16[2]\n * [20]: Uint32[3]\n * [32]: Uint16[3]\n * [40]: Float32[2]\n * [48]: Uint8[3]\n * [52]: Uint32[1]\n * [56]: Int16[1]\n * [58]: Uint8[1]\n *\n * @private\n */\nclass StructArrayLayout3i2f2ui3ul3ui2f3ub1ul1i1ub60 extends StructArray {\n uint8: Uint8Array;\n int16: Int16Array;\n float32: Float32Array;\n uint16: Uint16Array;\n uint32: Uint32Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.int16 = new Int16Array(this.arrayBuffer);\n this.float32 = new Float32Array(this.arrayBuffer);\n this.uint16 = new Uint16Array(this.arrayBuffer);\n this.uint32 = new Uint32Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number, v17: number, v18: number, v19: number, v20: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number, v17: number, v18: number, v19: number, v20: number): number {\n const o2 = i * 30;\n const o4 = i * 15;\n const o1 = i * 60;\n this.int16[o2 + 0] = v0;\n this.int16[o2 + 1] = v1;\n this.int16[o2 + 2] = v2;\n this.float32[o4 + 2] = v3;\n this.float32[o4 + 3] = v4;\n this.uint16[o2 + 8] = v5;\n this.uint16[o2 + 9] = v6;\n this.uint32[o4 + 5] = v7;\n this.uint32[o4 + 6] = v8;\n this.uint32[o4 + 7] = v9;\n this.uint16[o2 + 16] = v10;\n this.uint16[o2 + 17] = v11;\n this.uint16[o2 + 18] = v12;\n this.float32[o4 + 10] = v13;\n this.float32[o4 + 11] = v14;\n this.uint8[o1 + 48] = v15;\n this.uint8[o1 + 49] = v16;\n this.uint8[o1 + 50] = v17;\n this.uint32[o4 + 13] = v18;\n this.int16[o2 + 28] = v19;\n this.uint8[o1 + 58] = v20;\n return i;\n }\n}\n\nStructArrayLayout3i2f2ui3ul3ui2f3ub1ul1i1ub60.prototype.bytesPerElement = 60;\nregister(StructArrayLayout3i2f2ui3ul3ui2f3ub1ul1i1ub60, 'StructArrayLayout3i2f2ui3ul3ui2f3ub1ul1i1ub60');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Int16[3]\n * [8]: Float32[2]\n * [16]: Int16[6]\n * [28]: Uint16[15]\n * [60]: Uint32[1]\n * [64]: Float32[3]\n *\n * @private\n */\nclass StructArrayLayout3i2f6i15ui1ul3f76 extends StructArray {\n uint8: Uint8Array;\n int16: Int16Array;\n float32: Float32Array;\n uint16: Uint16Array;\n uint32: Uint32Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.int16 = new Int16Array(this.arrayBuffer);\n this.float32 = new Float32Array(this.arrayBuffer);\n this.uint16 = new Uint16Array(this.arrayBuffer);\n this.uint32 = new Uint32Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number, v17: number, v18: number, v19: number, v20: number, v21: number, v22: number, v23: number, v24: number, v25: number, v26: number, v27: number, v28: number, v29: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number, v17: number, v18: number, v19: number, v20: number, v21: number, v22: number, v23: number, v24: number, v25: number, v26: number, v27: number, v28: number, v29: number): number {\n const o2 = i * 38;\n const o4 = i * 19;\n this.int16[o2 + 0] = v0;\n this.int16[o2 + 1] = v1;\n this.int16[o2 + 2] = v2;\n this.float32[o4 + 2] = v3;\n this.float32[o4 + 3] = v4;\n this.int16[o2 + 8] = v5;\n this.int16[o2 + 9] = v6;\n this.int16[o2 + 10] = v7;\n this.int16[o2 + 11] = v8;\n this.int16[o2 + 12] = v9;\n this.int16[o2 + 13] = v10;\n this.uint16[o2 + 14] = v11;\n this.uint16[o2 + 15] = v12;\n this.uint16[o2 + 16] = v13;\n this.uint16[o2 + 17] = v14;\n this.uint16[o2 + 18] = v15;\n this.uint16[o2 + 19] = v16;\n this.uint16[o2 + 20] = v17;\n this.uint16[o2 + 21] = v18;\n this.uint16[o2 + 22] = v19;\n this.uint16[o2 + 23] = v20;\n this.uint16[o2 + 24] = v21;\n this.uint16[o2 + 25] = v22;\n this.uint16[o2 + 26] = v23;\n this.uint16[o2 + 27] = v24;\n this.uint16[o2 + 28] = v25;\n this.uint32[o4 + 15] = v26;\n this.float32[o4 + 16] = v27;\n this.float32[o4 + 17] = v28;\n this.float32[o4 + 18] = v29;\n return i;\n }\n}\n\nStructArrayLayout3i2f6i15ui1ul3f76.prototype.bytesPerElement = 76;\nregister(StructArrayLayout3i2f6i15ui1ul3f76, 'StructArrayLayout3i2f6i15ui1ul3f76');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Float32[1]\n *\n * @private\n */\nclass StructArrayLayout1f4 extends StructArray {\n uint8: Uint8Array;\n float32: Float32Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.float32 = new Float32Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0);\n }\n\n emplace(i: number, v0: number): number {\n const o4 = i * 1;\n this.float32[o4 + 0] = v0;\n return i;\n }\n}\n\nStructArrayLayout1f4.prototype.bytesPerElement = 4;\nregister(StructArrayLayout1f4, 'StructArrayLayout1f4');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Float32[7]\n *\n * @private\n */\nclass StructArrayLayout7f28 extends StructArray {\n uint8: Uint8Array;\n float32: Float32Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.float32 = new Float32Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3, v4, v5, v6);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number): number {\n const o4 = i * 7;\n this.float32[o4 + 0] = v0;\n this.float32[o4 + 1] = v1;\n this.float32[o4 + 2] = v2;\n this.float32[o4 + 3] = v3;\n this.float32[o4 + 4] = v4;\n this.float32[o4 + 5] = v5;\n this.float32[o4 + 6] = v6;\n return i;\n }\n}\n\nStructArrayLayout7f28.prototype.bytesPerElement = 28;\nregister(StructArrayLayout7f28, 'StructArrayLayout7f28');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Float32[5]\n *\n * @private\n */\nclass StructArrayLayout5f20 extends StructArray {\n uint8: Uint8Array;\n float32: Float32Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.float32 = new Float32Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3, v4);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number): number {\n const o4 = i * 5;\n this.float32[o4 + 0] = v0;\n this.float32[o4 + 1] = v1;\n this.float32[o4 + 2] = v2;\n this.float32[o4 + 3] = v3;\n this.float32[o4 + 4] = v4;\n return i;\n }\n}\n\nStructArrayLayout5f20.prototype.bytesPerElement = 20;\nregister(StructArrayLayout5f20, 'StructArrayLayout5f20');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Uint32[1]\n * [4]: Uint16[3]\n *\n * @private\n */\nclass StructArrayLayout1ul3ui12 extends StructArray {\n uint8: Uint8Array;\n uint32: Uint32Array;\n uint16: Uint16Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.uint32 = new Uint32Array(this.arrayBuffer);\n this.uint16 = new Uint16Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number, v2: number, v3: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1, v2, v3);\n }\n\n emplace(i: number, v0: number, v1: number, v2: number, v3: number): number {\n const o4 = i * 3;\n const o2 = i * 6;\n this.uint32[o4 + 0] = v0;\n this.uint16[o2 + 2] = v1;\n this.uint16[o2 + 3] = v2;\n this.uint16[o2 + 4] = v3;\n return i;\n }\n}\n\nStructArrayLayout1ul3ui12.prototype.bytesPerElement = 12;\nregister(StructArrayLayout1ul3ui12, 'StructArrayLayout1ul3ui12');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Uint16[2]\n *\n * @private\n */\nclass StructArrayLayout2ui4 extends StructArray {\n uint8: Uint8Array;\n uint16: Uint16Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.uint16 = new Uint16Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1);\n }\n\n emplace(i: number, v0: number, v1: number): number {\n const o2 = i * 2;\n this.uint16[o2 + 0] = v0;\n this.uint16[o2 + 1] = v1;\n return i;\n }\n}\n\nStructArrayLayout2ui4.prototype.bytesPerElement = 4;\nregister(StructArrayLayout2ui4, 'StructArrayLayout2ui4');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Uint16[1]\n *\n * @private\n */\nclass StructArrayLayout1ui2 extends StructArray {\n uint8: Uint8Array;\n uint16: Uint16Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.uint16 = new Uint16Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0);\n }\n\n emplace(i: number, v0: number): number {\n const o2 = i * 1;\n this.uint16[o2 + 0] = v0;\n return i;\n }\n}\n\nStructArrayLayout1ui2.prototype.bytesPerElement = 2;\nregister(StructArrayLayout1ui2, 'StructArrayLayout1ui2');\n\n/**\n * Implementation of the StructArray layout:\n * [0]: Float32[2]\n *\n * @private\n */\nclass StructArrayLayout2f8 extends StructArray {\n uint8: Uint8Array;\n float32: Float32Array;\n\n _refreshViews() {\n this.uint8 = new Uint8Array(this.arrayBuffer);\n this.float32 = new Float32Array(this.arrayBuffer);\n }\n\n emplaceBack(v0: number, v1: number): number {\n const i = this.length;\n this.resize(i + 1);\n return this.emplace(i, v0, v1);\n }\n\n emplace(i: number, v0: number, v1: number): number {\n const o4 = i * 2;\n this.float32[o4 + 0] = v0;\n this.float32[o4 + 1] = v1;\n return i;\n }\n}\n\nStructArrayLayout2f8.prototype.bytesPerElement = 8;\nregister(StructArrayLayout2f8, 'StructArrayLayout2f8');\n\nclass FillExtrusionExtStruct extends Struct {\n _structArray: FillExtrusionExtArray;\n get a_pos_30(): number { return this._structArray.int16[this._pos2 + 0]; }\n get a_pos_31(): number { return this._structArray.int16[this._pos2 + 1]; }\n get a_pos_32(): number { return this._structArray.int16[this._pos2 + 2]; }\n get a_pos_normal_30(): number { return this._structArray.int16[this._pos2 + 3]; }\n get a_pos_normal_31(): number { return this._structArray.int16[this._pos2 + 4]; }\n get a_pos_normal_32(): number { return this._structArray.int16[this._pos2 + 5]; }\n}\n\nFillExtrusionExtStruct.prototype.size = 12;\n\nexport type FillExtrusionExt = FillExtrusionExtStruct;\n\n/**\n * @private\n */\nexport class FillExtrusionExtArray extends StructArrayLayout6i12 {\n /**\n * Return the FillExtrusionExtStruct at the given location in the array.\n * @param {number} index The index of the element.\n * @private\n */\n get(index: number): FillExtrusionExtStruct {\n assert(!this.isTransferred);\n return new FillExtrusionExtStruct(this, index);\n }\n}\n\nregister(FillExtrusionExtArray, 'FillExtrusionExtArray');\n\nclass CollisionBoxStruct extends Struct {\n _structArray: CollisionBoxArray;\n get projectedAnchorX(): number { return this._structArray.int16[this._pos2 + 0]; }\n get projectedAnchorY(): number { return this._structArray.int16[this._pos2 + 1]; }\n get projectedAnchorZ(): number { return this._structArray.int16[this._pos2 + 2]; }\n get tileAnchorX(): number { return this._structArray.int16[this._pos2 + 3]; }\n get tileAnchorY(): number { return this._structArray.int16[this._pos2 + 4]; }\n get x1(): number { return this._structArray.float32[this._pos4 + 3]; }\n get y1(): number { return this._structArray.float32[this._pos4 + 4]; }\n get x2(): number { return this._structArray.float32[this._pos4 + 5]; }\n get y2(): number { return this._structArray.float32[this._pos4 + 6]; }\n get padding(): number { return this._structArray.int16[this._pos2 + 14]; }\n get featureIndex(): number { return this._structArray.uint32[this._pos4 + 8]; }\n get sourceLayerIndex(): number { return this._structArray.uint16[this._pos2 + 18]; }\n get bucketIndex(): number { return this._structArray.uint16[this._pos2 + 19]; }\n}\n\nCollisionBoxStruct.prototype.size = 40;\n\nexport type CollisionBox = CollisionBoxStruct;\n\n/**\n * @private\n */\nexport class CollisionBoxArray extends StructArrayLayout5i4f1i1ul2ui40 {\n /**\n * Return the CollisionBoxStruct at the given location in the array.\n * @param {number} index The index of the element.\n * @private\n */\n get(index: number): CollisionBoxStruct {\n assert(!this.isTransferred);\n return new CollisionBoxStruct(this, index);\n }\n}\n\nregister(CollisionBoxArray, 'CollisionBoxArray');\n\nclass PlacedSymbolStruct extends Struct {\n _structArray: PlacedSymbolArray;\n get projectedAnchorX(): number { return this._structArray.int16[this._pos2 + 0]; }\n get projectedAnchorY(): number { return this._structArray.int16[this._pos2 + 1]; }\n get projectedAnchorZ(): number { return this._structArray.int16[this._pos2 + 2]; }\n get tileAnchorX(): number { return this._structArray.float32[this._pos4 + 2]; }\n get tileAnchorY(): number { return this._structArray.float32[this._pos4 + 3]; }\n get glyphStartIndex(): number { return this._structArray.uint16[this._pos2 + 8]; }\n get numGlyphs(): number { return this._structArray.uint16[this._pos2 + 9]; }\n get vertexStartIndex(): number { return this._structArray.uint32[this._pos4 + 5]; }\n get lineStartIndex(): number { return this._structArray.uint32[this._pos4 + 6]; }\n get lineLength(): number { return this._structArray.uint32[this._pos4 + 7]; }\n get segment(): number { return this._structArray.uint16[this._pos2 + 16]; }\n get lowerSize(): number { return this._structArray.uint16[this._pos2 + 17]; }\n get upperSize(): number { return this._structArray.uint16[this._pos2 + 18]; }\n get lineOffsetX(): number { return this._structArray.float32[this._pos4 + 10]; }\n get lineOffsetY(): number { return this._structArray.float32[this._pos4 + 11]; }\n get writingMode(): number { return this._structArray.uint8[this._pos1 + 48]; }\n get placedOrientation(): number { return this._structArray.uint8[this._pos1 + 49]; }\n set placedOrientation(x: number) { this._structArray.uint8[this._pos1 + 49] = x; }\n get hidden(): number { return this._structArray.uint8[this._pos1 + 50]; }\n set hidden(x: number) { this._structArray.uint8[this._pos1 + 50] = x; }\n get crossTileID(): number { return this._structArray.uint32[this._pos4 + 13]; }\n set crossTileID(x: number) { this._structArray.uint32[this._pos4 + 13] = x; }\n get associatedIconIndex(): number { return this._structArray.int16[this._pos2 + 28]; }\n get flipState(): number { return this._structArray.uint8[this._pos1 + 58]; }\n set flipState(x: number) { this._structArray.uint8[this._pos1 + 58] = x; }\n}\n\nPlacedSymbolStruct.prototype.size = 60;\n\nexport type PlacedSymbol = PlacedSymbolStruct;\n\n/**\n * @private\n */\nexport class PlacedSymbolArray extends StructArrayLayout3i2f2ui3ul3ui2f3ub1ul1i1ub60 {\n /**\n * Return the PlacedSymbolStruct at the given location in the array.\n * @param {number} index The index of the element.\n * @private\n */\n get(index: number): PlacedSymbolStruct {\n assert(!this.isTransferred);\n return new PlacedSymbolStruct(this, index);\n }\n}\n\nregister(PlacedSymbolArray, 'PlacedSymbolArray');\n\nclass SymbolInstanceStruct extends Struct {\n _structArray: SymbolInstanceArray;\n get projectedAnchorX(): number { return this._structArray.int16[this._pos2 + 0]; }\n get projectedAnchorY(): number { return this._structArray.int16[this._pos2 + 1]; }\n get projectedAnchorZ(): number { return this._structArray.int16[this._pos2 + 2]; }\n get tileAnchorX(): number { return this._structArray.float32[this._pos4 + 2]; }\n get tileAnchorY(): number { return this._structArray.float32[this._pos4 + 3]; }\n get rightJustifiedTextSymbolIndex(): number { return this._structArray.int16[this._pos2 + 8]; }\n get centerJustifiedTextSymbolIndex(): number { return this._structArray.int16[this._pos2 + 9]; }\n get leftJustifiedTextSymbolIndex(): number { return this._structArray.int16[this._pos2 + 10]; }\n get verticalPlacedTextSymbolIndex(): number { return this._structArray.int16[this._pos2 + 11]; }\n get placedIconSymbolIndex(): number { return this._structArray.int16[this._pos2 + 12]; }\n get verticalPlacedIconSymbolIndex(): number { return this._structArray.int16[this._pos2 + 13]; }\n get key(): number { return this._structArray.uint16[this._pos2 + 14]; }\n get textBoxStartIndex(): number { return this._structArray.uint16[this._pos2 + 15]; }\n get textBoxEndIndex(): number { return this._structArray.uint16[this._pos2 + 16]; }\n get verticalTextBoxStartIndex(): number { return this._structArray.uint16[this._pos2 + 17]; }\n get verticalTextBoxEndIndex(): number { return this._structArray.uint16[this._pos2 + 18]; }\n get iconBoxStartIndex(): number { return this._structArray.uint16[this._pos2 + 19]; }\n get iconBoxEndIndex(): number { return this._structArray.uint16[this._pos2 + 20]; }\n get verticalIconBoxStartIndex(): number { return this._structArray.uint16[this._pos2 + 21]; }\n get verticalIconBoxEndIndex(): number { return this._structArray.uint16[this._pos2 + 22]; }\n get featureIndex(): number { return this._structArray.uint16[this._pos2 + 23]; }\n get numHorizontalGlyphVertices(): number { return this._structArray.uint16[this._pos2 + 24]; }\n get numVerticalGlyphVertices(): number { return this._structArray.uint16[this._pos2 + 25]; }\n get numIconVertices(): number { return this._structArray.uint16[this._pos2 + 26]; }\n get numVerticalIconVertices(): number { return this._structArray.uint16[this._pos2 + 27]; }\n get useRuntimeCollisionCircles(): number { return this._structArray.uint16[this._pos2 + 28]; }\n get crossTileID(): number { return this._structArray.uint32[this._pos4 + 15]; }\n set crossTileID(x: number) { this._structArray.uint32[this._pos4 + 15] = x; }\n get textOffset0(): number { return this._structArray.float32[this._pos4 + 16]; }\n get textOffset1(): number { return this._structArray.float32[this._pos4 + 17]; }\n get collisionCircleDiameter(): number { return this._structArray.float32[this._pos4 + 18]; }\n}\n\nSymbolInstanceStruct.prototype.size = 76;\n\nexport type SymbolInstance = SymbolInstanceStruct;\n\n/**\n * @private\n */\nexport class SymbolInstanceArray extends StructArrayLayout3i2f6i15ui1ul3f76 {\n /**\n * Return the SymbolInstanceStruct at the given location in the array.\n * @param {number} index The index of the element.\n * @private\n */\n get(index: number): SymbolInstanceStruct {\n assert(!this.isTransferred);\n return new SymbolInstanceStruct(this, index);\n }\n}\n\nregister(SymbolInstanceArray, 'SymbolInstanceArray');\n\n/**\n * @private\n */\nexport class GlyphOffsetArray extends StructArrayLayout1f4 {\n getoffsetX(index: number): number { return this.float32[index * 1 + 0]; }\n}\n\nregister(GlyphOffsetArray, 'GlyphOffsetArray');\n\n/**\n * @private\n */\nexport class SymbolLineVertexArray extends StructArrayLayout3i6 {\n getx(index: number): number { return this.int16[index * 3 + 0]; }\n gety(index: number): number { return this.int16[index * 3 + 1]; }\n gettileUnitDistanceFromAnchor(index: number): number { return this.int16[index * 3 + 2]; }\n}\n\nregister(SymbolLineVertexArray, 'SymbolLineVertexArray');\n\nclass FeatureIndexStruct extends Struct {\n _structArray: FeatureIndexArray;\n get featureIndex(): number { return this._structArray.uint32[this._pos4 + 0]; }\n get sourceLayerIndex(): number { return this._structArray.uint16[this._pos2 + 2]; }\n get bucketIndex(): number { return this._structArray.uint16[this._pos2 + 3]; }\n get layoutVertexArrayOffset(): number { return this._structArray.uint16[this._pos2 + 4]; }\n}\n\nFeatureIndexStruct.prototype.size = 12;\n\nexport type FeatureIndex = FeatureIndexStruct;\n\n/**\n * @private\n */\nexport class FeatureIndexArray extends StructArrayLayout1ul3ui12 {\n /**\n * Return the FeatureIndexStruct at the given location in the array.\n * @param {number} index The index of the element.\n * @private\n */\n get(index: number): FeatureIndexStruct {\n assert(!this.isTransferred);\n return new FeatureIndexStruct(this, index);\n }\n}\n\nregister(FeatureIndexArray, 'FeatureIndexArray');\n\nclass FillExtrusionCentroidStruct extends Struct {\n _structArray: FillExtrusionCentroidArray;\n get a_centroid_pos0(): number { return this._structArray.uint16[this._pos2 + 0]; }\n get a_centroid_pos1(): number { return this._structArray.uint16[this._pos2 + 1]; }\n}\n\nFillExtrusionCentroidStruct.prototype.size = 4;\n\nexport type FillExtrusionCentroid = FillExtrusionCentroidStruct;\n\n/**\n * @private\n */\nexport class FillExtrusionCentroidArray extends StructArrayLayout2ui4 {\n /**\n * Return the FillExtrusionCentroidStruct at the given location in the array.\n * @param {number} index The index of the element.\n * @private\n */\n get(index: number): FillExtrusionCentroidStruct {\n assert(!this.isTransferred);\n return new FillExtrusionCentroidStruct(this, index);\n }\n}\n\nregister(FillExtrusionCentroidArray, 'FillExtrusionCentroidArray');\n\nclass CircleGlobeExtStruct extends Struct {\n _structArray: CircleGlobeExtArray;\n get a_pos_30(): number { return this._structArray.int16[this._pos2 + 0]; }\n get a_pos_31(): number { return this._structArray.int16[this._pos2 + 1]; }\n get a_pos_32(): number { return this._structArray.int16[this._pos2 + 2]; }\n get a_pos_normal_30(): number { return this._structArray.int16[this._pos2 + 3]; }\n get a_pos_normal_31(): number { return this._structArray.int16[this._pos2 + 4]; }\n get a_pos_normal_32(): number { return this._structArray.int16[this._pos2 + 5]; }\n}\n\nCircleGlobeExtStruct.prototype.size = 12;\n\nexport type CircleGlobeExt = CircleGlobeExtStruct;\n\n/**\n * @private\n */\nexport class CircleGlobeExtArray extends StructArrayLayout6i12 {\n /**\n * Return the CircleGlobeExtStruct at the given location in the array.\n * @param {number} index The index of the element.\n * @private\n */\n get(index: number): CircleGlobeExtStruct {\n assert(!this.isTransferred);\n return new CircleGlobeExtStruct(this, index);\n }\n}\n\nregister(CircleGlobeExtArray, 'CircleGlobeExtArray');\n\nexport {\n StructArrayLayout2i4,\n StructArrayLayout3i6,\n StructArrayLayout4i8,\n StructArrayLayout2i4ub1f12,\n StructArrayLayout4f16,\n StructArrayLayout10ui20,\n StructArrayLayout8ui16,\n StructArrayLayout6i12,\n StructArrayLayout4i4ui4i24,\n StructArrayLayout3i3f20,\n StructArrayLayout1ul4,\n StructArrayLayout5i4f1i1ul2ui40,\n StructArrayLayout3i2i2i16,\n StructArrayLayout2f1f2i16,\n StructArrayLayout2ub2f12,\n StructArrayLayout3f12,\n StructArrayLayout3ui6,\n StructArrayLayout3i2f2ui3ul3ui2f3ub1ul1i1ub60,\n StructArrayLayout3i2f6i15ui1ul3f76,\n StructArrayLayout1f4,\n StructArrayLayout7f28,\n StructArrayLayout5f20,\n StructArrayLayout1ul3ui12,\n StructArrayLayout2ui4,\n StructArrayLayout1ui2,\n StructArrayLayout2f8,\n StructArrayLayout2i4 as PosArray,\n StructArrayLayout3i6 as PosGlobeExtArray,\n StructArrayLayout4i8 as RasterBoundsArray,\n StructArrayLayout2i4 as CircleLayoutArray,\n StructArrayLayout2i4 as FillLayoutArray,\n StructArrayLayout4i8 as FillExtrusionLayoutArray,\n StructArrayLayout2i4 as HeatmapLayoutArray,\n StructArrayLayout2i4ub1f12 as LineLayoutArray,\n StructArrayLayout4f16 as LineExtLayoutArray,\n StructArrayLayout10ui20 as PatternLayoutArray,\n StructArrayLayout8ui16 as DashLayoutArray,\n StructArrayLayout4i4ui4i24 as SymbolLayoutArray,\n StructArrayLayout3i3f20 as SymbolGlobeExtArray,\n StructArrayLayout4f16 as SymbolDynamicLayoutArray,\n StructArrayLayout1ul4 as SymbolOpacityArray,\n StructArrayLayout3i2i2i16 as CollisionBoxLayoutArray,\n StructArrayLayout2f1f2i16 as CollisionCircleLayoutArray,\n StructArrayLayout2ub2f12 as CollisionVertexArray,\n StructArrayLayout3f12 as CollisionVertexExtArray,\n StructArrayLayout3ui6 as QuadTriangleArray,\n StructArrayLayout7f28 as GlobeVertexArray,\n StructArrayLayout5f20 as AtmosphereVertexArray,\n StructArrayLayout3ui6 as TriangleIndexArray,\n StructArrayLayout2ui4 as LineIndexArray,\n StructArrayLayout1ui2 as LineStripIndexArray,\n StructArrayLayout3f12 as SkyboxVertexArray,\n StructArrayLayout4i8 as TileBoundsArray\n};\n","// @flow\nimport {createLayout} from '../../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../../util/struct_array.js';\n\nconst patternAttributes: StructArrayLayout = createLayout([\n // [tl.x, tl.y, br.x, br.y]\n {name: 'a_pattern_to', components: 4, type: 'Uint16'},\n {name: 'a_pattern_from', components: 4, type: 'Uint16'},\n {name: 'a_pixel_ratio_to', components: 1, type: 'Uint16'},\n {name: 'a_pixel_ratio_from', components: 1, type: 'Uint16'},\n]);\n\nexport default patternAttributes;\n","// @flow\nimport {createLayout} from '../../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../../util/struct_array.js';\n\nconst dashAttributes: StructArrayLayout = createLayout([\n {name: 'a_dash_to', components: 4, type: 'Uint16'}, // [x, y, width, unused]\n {name: 'a_dash_from', components: 4, type: 'Uint16'}\n]);\n\nexport default dashAttributes;\n","/**\n * JS Implementation of MurmurHash3 (r136) (as of May 20, 2011)\n * \n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n * \n * @param {string} key ASCII only\n * @param {number} seed Positive integer only\n * @return {number} 32-bit positive integer hash \n */\n\nfunction murmurhash3_32_gc(key, seed) {\n\tvar remainder, bytes, h1, h1b, c1, c1b, c2, c2b, k1, i;\n\t\n\tremainder = key.length & 3; // key.length % 4\n\tbytes = key.length - remainder;\n\th1 = seed;\n\tc1 = 0xcc9e2d51;\n\tc2 = 0x1b873593;\n\ti = 0;\n\t\n\twhile (i < bytes) {\n\t \tk1 = \n\t \t ((key.charCodeAt(i) & 0xff)) |\n\t \t ((key.charCodeAt(++i) & 0xff) << 8) |\n\t \t ((key.charCodeAt(++i) & 0xff) << 16) |\n\t \t ((key.charCodeAt(++i) & 0xff) << 24);\n\t\t++i;\n\t\t\n\t\tk1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\n\t\tk1 = (k1 << 15) | (k1 >>> 17);\n\t\tk1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\n\n\t\th1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n\t\th1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\n\t\th1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\n\t}\n\t\n\tk1 = 0;\n\t\n\tswitch (remainder) {\n\t\tcase 3: k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\n\t\tcase 2: k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\n\t\tcase 1: k1 ^= (key.charCodeAt(i) & 0xff);\n\t\t\n\t\tk1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n\t\tk1 = (k1 << 15) | (k1 >>> 17);\n\t\tk1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n\t\th1 ^= k1;\n\t}\n\t\n\th1 ^= key.length;\n\n\th1 ^= h1 >>> 16;\n\th1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\n\th1 ^= h1 >>> 13;\n\th1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\n\th1 ^= h1 >>> 16;\n\n\treturn h1 >>> 0;\n}\n\nif(typeof module !== \"undefined\") {\n module.exports = murmurhash3_32_gc\n}","/**\n * JS Implementation of MurmurHash2\n * \n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n * \n * @param {string} str ASCII only\n * @param {number} seed Positive integer only\n * @return {number} 32-bit positive integer hash\n */\n\nfunction murmurhash2_32_gc(str, seed) {\n var\n l = str.length,\n h = seed ^ l,\n i = 0,\n k;\n \n while (l >= 4) {\n \tk = \n \t ((str.charCodeAt(i) & 0xff)) |\n \t ((str.charCodeAt(++i) & 0xff) << 8) |\n \t ((str.charCodeAt(++i) & 0xff) << 16) |\n \t ((str.charCodeAt(++i) & 0xff) << 24);\n \n k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n k ^= k >>> 24;\n k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n\n\th = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16)) ^ k;\n\n l -= 4;\n ++i;\n }\n \n switch (l) {\n case 3: h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n case 2: h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n case 1: h ^= (str.charCodeAt(i) & 0xff);\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n }\n\n h ^= h >>> 13;\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n h ^= h >>> 15;\n\n return h >>> 0;\n}\n\nif(typeof module !== undefined) {\n module.exports = murmurhash2_32_gc\n}\n","var murmur3 = require(\"./murmurhash3_gc.js\")\nvar murmur2 = require(\"./murmurhash2_gc.js\")\n\nmodule.exports = murmur3\nmodule.exports.murmur3 = murmur3\nmodule.exports.murmur2 = murmur2\n","// @flow\n\nimport murmur3 from 'murmurhash-js';\nimport {register} from '../util/web_worker_transfer.js';\nimport assert from 'assert';\n\ntype SerializedFeaturePositionMap = {\n ids: Float64Array;\n positions: Uint32Array;\n};\n\ntype FeaturePosition = {\n index: number;\n start: number;\n end: number;\n};\n\n// A transferable data structure that maps feature ids to their indices and buffer offsets\nexport default class FeaturePositionMap {\n ids: Array<number>;\n positions: Array<number>;\n indexed: boolean;\n\n constructor() {\n this.ids = [];\n this.positions = [];\n this.indexed = false;\n }\n\n add(id: mixed, index: number, start: number, end: number) {\n this.ids.push(getNumericId(id));\n this.positions.push(index, start, end);\n }\n\n getPositions(id: mixed): Array<FeaturePosition> {\n assert(this.indexed);\n\n const intId = getNumericId(id);\n\n // binary search for the first occurrence of id in this.ids;\n // relies on ids/positions being sorted by id, which happens in serialization\n let i = 0;\n let j = this.ids.length - 1;\n while (i < j) {\n const m = (i + j) >> 1;\n if (this.ids[m] >= intId) {\n j = m;\n } else {\n i = m + 1;\n }\n }\n const positions = [];\n while (this.ids[i] === intId) {\n const index = this.positions[3 * i];\n const start = this.positions[3 * i + 1];\n const end = this.positions[3 * i + 2];\n positions.push({index, start, end});\n i++;\n }\n return positions;\n }\n\n static serialize(map: FeaturePositionMap, transferables: Array<ArrayBuffer>): SerializedFeaturePositionMap {\n const ids = new Float64Array(map.ids);\n const positions = new Uint32Array(map.positions);\n\n sort(ids, positions, 0, ids.length - 1);\n\n if (transferables) {\n transferables.push(ids.buffer, positions.buffer);\n }\n\n return {ids, positions};\n }\n\n static deserialize(obj: SerializedFeaturePositionMap): FeaturePositionMap {\n const map = new FeaturePositionMap();\n // after transferring, we only use these arrays statically (no pushes),\n // so TypedArray vs Array distinction that flow points out doesn't matter\n map.ids = (obj.ids: any);\n map.positions = (obj.positions: any);\n map.indexed = true;\n return map;\n }\n}\n\nfunction getNumericId(value: mixed) {\n const numValue = +value;\n if (!isNaN(numValue) && Number.MIN_SAFE_INTEGER <= numValue && numValue <= Number.MAX_SAFE_INTEGER) {\n return numValue;\n }\n return murmur3(String(value));\n}\n\n// custom quicksort that sorts ids, indices and offsets together (by ids)\n// uses Hoare partitioning & manual tail call optimization to avoid worst case scenarios\nfunction sort(ids, positions, left, right) {\n while (left < right) {\n const pivot = ids[(left + right) >> 1];\n let i = left - 1;\n let j = right + 1;\n\n while (true) {\n do i++; while (ids[i] < pivot);\n do j--; while (ids[j] > pivot);\n if (i >= j) break;\n swap(ids, i, j);\n swap(positions, 3 * i, 3 * j);\n swap(positions, 3 * i + 1, 3 * j + 1);\n swap(positions, 3 * i + 2, 3 * j + 2);\n }\n\n if (j - left < right - j) {\n sort(ids, positions, left, j);\n left = j + 1;\n } else {\n sort(ids, positions, j + 1, right);\n right = j;\n }\n }\n}\n\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nregister(FeaturePositionMap, 'FeaturePositionMap');\n","// @flow\n\nimport Color from '../style-spec/util/color.js';\n\nimport type Context from '../gl/context.js';\n\nexport type UniformValues<Us: Object>\n = $Exact<$ObjMap<Us, <V>(u: Uniform<V>) => V>>;\nexport type UniformLocations = {[_: string]: WebGLUniformLocation};\n\nclass Uniform<T> {\n gl: WebGLRenderingContext;\n location: ?WebGLUniformLocation;\n current: T;\n\n constructor(context: Context, location: WebGLUniformLocation) {\n this.gl = context.gl;\n this.location = location;\n }\n\n +set: (v: T) => void;\n}\n\nclass Uniform1i extends Uniform<number> {\n constructor(context: Context, location: WebGLUniformLocation) {\n super(context, location);\n this.current = 0;\n }\n\n set(v: number): void {\n if (this.current !== v) {\n this.current = v;\n this.gl.uniform1i(this.location, v);\n }\n }\n}\n\nclass Uniform1f extends Uniform<number> {\n constructor(context: Context, location: WebGLUniformLocation) {\n super(context, location);\n this.current = 0;\n }\n\n set(v: number): void {\n if (this.current !== v) {\n this.current = v;\n this.gl.uniform1f(this.location, v);\n }\n }\n}\n\nclass Uniform2f extends Uniform<[number, number]> {\n constructor(context: Context, location: WebGLUniformLocation) {\n super(context, location);\n this.current = [0, 0];\n }\n\n set(v: [number, number]): void {\n if (v[0] !== this.current[0] || v[1] !== this.current[1]) {\n this.current = v;\n this.gl.uniform2f(this.location, v[0], v[1]);\n }\n }\n}\n\nclass Uniform3f extends Uniform<[number, number, number]> {\n constructor(context: Context, location: WebGLUniformLocation) {\n super(context, location);\n this.current = [0, 0, 0];\n }\n\n set(v: [number, number, number]): void {\n if (v[0] !== this.current[0] || v[1] !== this.current[1] || v[2] !== this.current[2]) {\n this.current = v;\n this.gl.uniform3f(this.location, v[0], v[1], v[2]);\n }\n }\n}\n\nclass Uniform4f extends Uniform<[number, number, number, number]> {\n constructor(context: Context, location: WebGLUniformLocation) {\n super(context, location);\n this.current = [0, 0, 0, 0];\n }\n\n set(v: [number, number, number, number]): void {\n if (v[0] !== this.current[0] || v[1] !== this.current[1] ||\n v[2] !== this.current[2] || v[3] !== this.current[3]) {\n this.current = v;\n this.gl.uniform4f(this.location, v[0], v[1], v[2], v[3]);\n }\n }\n}\n\nclass UniformColor extends Uniform<Color> {\n constructor(context: Context, location: WebGLUniformLocation) {\n super(context, location);\n this.current = Color.transparent;\n }\n\n set(v: Color): void {\n if (v.r !== this.current.r || v.g !== this.current.g ||\n v.b !== this.current.b || v.a !== this.current.a) {\n this.current = v;\n this.gl.uniform4f(this.location, v.r, v.g, v.b, v.a);\n }\n }\n}\n\nconst emptyMat4 = new Float32Array(16);\nclass UniformMatrix4f extends Uniform<Float32Array> {\n constructor(context: Context, location: WebGLUniformLocation) {\n super(context, location);\n this.current = emptyMat4;\n }\n\n set(v: Float32Array): void {\n // The vast majority of matrix comparisons that will trip this set\n // happen at i=12 or i=0, so we check those first to avoid lots of\n // unnecessary iteration:\n if (v[12] !== this.current[12] || v[0] !== this.current[0]) {\n this.current = v;\n this.gl.uniformMatrix4fv(this.location, false, v);\n return;\n }\n for (let i = 1; i < 16; i++) {\n if (v[i] !== this.current[i]) {\n this.current = v;\n this.gl.uniformMatrix4fv(this.location, false, v);\n break;\n }\n }\n }\n}\n\nconst emptyMat3 = new Float32Array(9);\nclass UniformMatrix3f extends Uniform<Float32Array> {\n constructor(context: Context, location: WebGLUniformLocation) {\n super(context, location);\n this.current = emptyMat3;\n }\n\n set(v: Float32Array): void {\n for (let i = 0; i < 9; i++) {\n if (v[i] !== this.current[i]) {\n this.current = v;\n this.gl.uniformMatrix3fv(this.location, false, v);\n break;\n }\n }\n }\n}\n\nconst emptyMat2 = new Float32Array(4);\nclass UniformMatrix2f extends Uniform<Float32Array> {\n constructor(context: Context, location: WebGLUniformLocation) {\n super(context, location);\n this.current = emptyMat2;\n }\n\n set(v: Float32Array): void {\n for (let i = 0; i < 4; i++) {\n if (v[i] !== this.current[i]) {\n this.current = v;\n this.gl.uniformMatrix2fv(this.location, false, v);\n break;\n }\n }\n }\n}\n\nexport {\n Uniform,\n Uniform1i,\n Uniform1f,\n Uniform2f,\n Uniform3f,\n Uniform4f,\n UniformColor,\n UniformMatrix2f,\n UniformMatrix3f,\n UniformMatrix4f\n};\n\nexport type UniformBindings = {[_: string]: Uniform<any>};\n","// @flow\n\nimport {packUint8ToFloat} from '../shaders/encode_attribute.js';\nimport Color from '../style-spec/util/color.js';\nimport {supportsPropertyExpression} from '../style-spec/util/properties.js';\nimport {register} from '../util/web_worker_transfer.js';\nimport {PossiblyEvaluatedPropertyValue} from '../style/properties.js';\nimport {StructArrayLayout1f4, StructArrayLayout2f8, StructArrayLayout4f16, PatternLayoutArray, DashLayoutArray} from './array_types.js';\nimport {clamp} from '../util/util.js';\nimport patternAttributes from './bucket/pattern_attributes.js';\nimport dashAttributes from './bucket/dash_attributes.js';\nimport EvaluationParameters from '../style/evaluation_parameters.js';\nimport FeaturePositionMap from './feature_position_map.js';\nimport {\n Uniform,\n Uniform1f,\n UniformColor,\n Uniform4f,\n type UniformLocations\n} from '../render/uniform_binding.js';\n\nimport type {CanonicalTileID} from '../source/tile_id.js';\nimport type Context from '../gl/context.js';\nimport type {TypedStyleLayer} from '../style/style_layer/typed_style_layer.js';\nimport type {CrossfadeParameters} from '../style/evaluation_parameters.js';\nimport type {StructArray, StructArrayMember} from '../util/struct_array.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type {SpritePosition, SpritePositions} from '../util/image.js';\nimport type {\n Feature,\n FeatureState,\n GlobalProperties,\n SourceExpression,\n CompositeExpression\n} from '../style-spec/expression/index.js';\nimport type {PossiblyEvaluated} from '../style/properties.js';\nimport type {FeatureStates} from '../source/source_state.js';\nimport type {FormattedSection} from '../style-spec/expression/types/formatted.js';\nimport assert from 'assert';\n\nexport type BinderUniform = {\n name: string,\n property: string,\n binding: Uniform<any>\n};\n\nfunction packColor(color: Color): [number, number] {\n return [\n packUint8ToFloat(255 * color.r, 255 * color.g),\n packUint8ToFloat(255 * color.b, 255 * color.a)\n ];\n}\n\n/**\n * `Binder` is the interface definition for the strategies for constructing,\n * uploading, and binding paint property data as GLSL attributes. Most style-\n * spec properties have a 1:1 relationship to shader attribute/uniforms, but\n * some require multiple values per feature to be passed to the GPU, and in\n * those cases we bind multiple attributes/uniforms.\n *\n * It has three implementations, one for each of the three strategies we use:\n *\n * * For _constant_ properties -- those whose value is a constant, or the constant\n * result of evaluating a camera expression at a particular camera position -- we\n * don't need a vertex attribute buffer, and instead use a uniform.\n * * For data expressions, we use a vertex buffer with a single attribute value,\n * the evaluated result of the source function for the given feature.\n * * For composite expressions, we use a vertex buffer with two attributes: min and\n * max values covering the range of zooms at which we expect the tile to be\n * displayed. These values are calculated by evaluating the composite expression for\n * the given feature at strategically chosen zoom levels. In addition to this\n * attribute data, we also use a uniform value which the shader uses to interpolate\n * between the min and max value at the final displayed zoom level. The use of a\n * uniform allows us to cheaply update the value on every frame.\n *\n * Note that the shader source varies depending on whether we're using a uniform or\n * attribute. We dynamically compile shaders at runtime to accommodate this.\n *\n * @private\n */\n\ninterface AttributeBinder {\n populatePaintArray(length: number, feature: Feature, imagePositions: SpritePositions, availableImages: Array<string>, canonical?: CanonicalTileID, formattedSection?: FormattedSection): void;\n updatePaintArray(start: number, length: number, feature: Feature, featureState: FeatureState, availableImages: Array<string>, imagePositions: SpritePositions): void;\n upload(Context): void;\n destroy(): void;\n}\n\ninterface UniformBinder {\n uniformNames: Array<string>;\n setUniform(uniform: Uniform<*>, globals: GlobalProperties, currentValue: PossiblyEvaluatedPropertyValue<*>, uniformName: string): void;\n getBinding(context: Context, location: WebGLUniformLocation, name: string): $Shape<Uniform<*>>;\n}\n\nclass ConstantBinder implements UniformBinder {\n value: mixed;\n type: string;\n uniformNames: Array<string>;\n\n constructor(value: mixed, names: Array<string>, type: string) {\n this.value = value;\n this.uniformNames = names.map(name => `u_${name}`);\n this.type = type;\n }\n\n setUniform(uniform: Uniform<*>, globals: GlobalProperties, currentValue: PossiblyEvaluatedPropertyValue<mixed>): void {\n uniform.set(currentValue.constantOr(this.value));\n }\n\n getBinding(context: Context, location: WebGLUniformLocation, _: string): $Shape<Uniform<any>> {\n return (this.type === 'color') ?\n new UniformColor(context, location) :\n new Uniform1f(context, location);\n }\n}\n\nclass CrossFadedConstantBinder implements UniformBinder {\n uniformNames: Array<string>;\n patternFrom: ?Array<number>;\n patternTo: ?Array<number>;\n pixelRatioFrom: number;\n pixelRatioTo: number;\n\n constructor(value: mixed, names: Array<string>) {\n this.uniformNames = names.map(name => `u_${name}`);\n this.patternFrom = null;\n this.patternTo = null;\n this.pixelRatioFrom = 1;\n this.pixelRatioTo = 1;\n }\n\n setConstantPatternPositions(posTo: SpritePosition, posFrom: SpritePosition) {\n this.pixelRatioFrom = posFrom.pixelRatio || 1;\n this.pixelRatioTo = posTo.pixelRatio || 1;\n this.patternFrom = posFrom.tl.concat(posFrom.br);\n this.patternTo = posTo.tl.concat(posTo.br);\n }\n\n setUniform(uniform: Uniform<*>, globals: GlobalProperties, currentValue: PossiblyEvaluatedPropertyValue<mixed>, uniformName: string) {\n const pos =\n uniformName === 'u_pattern_to' || uniformName === 'u_dash_to' ? this.patternTo :\n uniformName === 'u_pattern_from' || uniformName === 'u_dash_from' ? this.patternFrom :\n uniformName === 'u_pixel_ratio_to' ? this.pixelRatioTo :\n uniformName === 'u_pixel_ratio_from' ? this.pixelRatioFrom : null;\n if (pos) uniform.set(pos);\n }\n\n getBinding(context: Context, location: WebGLUniformLocation, name: string): $Shape<Uniform<any>> {\n return name === 'u_pattern_from' || name === 'u_pattern_to' || name === 'u_dash_from' || name === 'u_dash_to' ?\n new Uniform4f(context, location) :\n new Uniform1f(context, location);\n }\n}\n\nclass SourceExpressionBinder implements AttributeBinder {\n expression: SourceExpression;\n type: string;\n maxValue: number;\n\n paintVertexArray: StructArray;\n paintVertexAttributes: Array<StructArrayMember>;\n paintVertexBuffer: ?VertexBuffer;\n\n constructor(expression: SourceExpression, names: Array<string>, type: string, PaintVertexArray: Class<StructArray>) {\n this.expression = expression;\n this.type = type;\n this.maxValue = 0;\n this.paintVertexAttributes = names.map((name) => ({\n name: `a_${name}`,\n type: 'Float32',\n components: type === 'color' ? 2 : 1,\n offset: 0\n }));\n this.paintVertexArray = new PaintVertexArray();\n }\n\n populatePaintArray(newLength: number, feature: Feature, imagePositions: SpritePositions, availableImages: Array<string>, canonical?: CanonicalTileID, formattedSection?: FormattedSection) {\n const start = this.paintVertexArray.length;\n assert(Array.isArray(availableImages));\n const value = this.expression.evaluate(new EvaluationParameters(0), feature, {}, canonical, availableImages, formattedSection);\n this.paintVertexArray.resize(newLength);\n this._setPaintValue(start, newLength, value);\n }\n\n updatePaintArray(start: number, end: number, feature: Feature, featureState: FeatureState, availableImages: Array<string>) {\n const value = this.expression.evaluate({zoom: 0}, feature, featureState, undefined, availableImages);\n this._setPaintValue(start, end, value);\n }\n\n _setPaintValue(start, end, value) {\n if (this.type === 'color') {\n const color = packColor(value);\n for (let i = start; i < end; i++) {\n this.paintVertexArray.emplace(i, color[0], color[1]);\n }\n } else {\n for (let i = start; i < end; i++) {\n this.paintVertexArray.emplace(i, value);\n }\n this.maxValue = Math.max(this.maxValue, Math.abs(value));\n }\n }\n\n upload(context: Context) {\n if (this.paintVertexArray && this.paintVertexArray.arrayBuffer) {\n if (this.paintVertexBuffer && this.paintVertexBuffer.buffer) {\n this.paintVertexBuffer.updateData(this.paintVertexArray);\n } else {\n this.paintVertexBuffer = context.createVertexBuffer(this.paintVertexArray, this.paintVertexAttributes, this.expression.isStateDependent);\n }\n }\n }\n\n destroy() {\n if (this.paintVertexBuffer) {\n this.paintVertexBuffer.destroy();\n }\n }\n}\n\nclass CompositeExpressionBinder implements AttributeBinder, UniformBinder {\n expression: CompositeExpression;\n uniformNames: Array<string>;\n type: string;\n useIntegerZoom: boolean;\n zoom: number;\n maxValue: number;\n\n paintVertexArray: StructArray;\n paintVertexAttributes: Array<StructArrayMember>;\n paintVertexBuffer: ?VertexBuffer;\n\n constructor(expression: CompositeExpression, names: Array<string>, type: string, useIntegerZoom: boolean, zoom: number, PaintVertexArray: Class<StructArray>) {\n this.expression = expression;\n this.uniformNames = names.map(name => `u_${name}_t`);\n this.type = type;\n this.useIntegerZoom = useIntegerZoom;\n this.zoom = zoom;\n this.maxValue = 0;\n this.paintVertexAttributes = names.map((name) => ({\n name: `a_${name}`,\n type: 'Float32',\n components: type === 'color' ? 4 : 2,\n offset: 0\n }));\n this.paintVertexArray = new PaintVertexArray();\n }\n\n populatePaintArray(newLength: number, feature: Feature, imagePositions: SpritePositions, availableImages: Array<string>, canonical?: CanonicalTileID, formattedSection?: FormattedSection) {\n const min = this.expression.evaluate(new EvaluationParameters(this.zoom), feature, {}, canonical, availableImages, formattedSection);\n const max = this.expression.evaluate(new EvaluationParameters(this.zoom + 1), feature, {}, canonical, availableImages, formattedSection);\n const start = this.paintVertexArray.length;\n this.paintVertexArray.resize(newLength);\n this._setPaintValue(start, newLength, min, max);\n }\n\n updatePaintArray(start: number, end: number, feature: Feature, featureState: FeatureState, availableImages: Array<string>) {\n const min = this.expression.evaluate({zoom: this.zoom}, feature, featureState, undefined, availableImages);\n const max = this.expression.evaluate({zoom: this.zoom + 1}, feature, featureState, undefined, availableImages);\n this._setPaintValue(start, end, min, max);\n }\n\n _setPaintValue(start, end, min, max) {\n if (this.type === 'color') {\n const minColor = packColor(min);\n const maxColor = packColor(max);\n for (let i = start; i < end; i++) {\n this.paintVertexArray.emplace(i, minColor[0], minColor[1], maxColor[0], maxColor[1]);\n }\n } else {\n for (let i = start; i < end; i++) {\n this.paintVertexArray.emplace(i, min, max);\n }\n this.maxValue = Math.max(this.maxValue, Math.abs(min), Math.abs(max));\n }\n }\n\n upload(context: Context) {\n if (this.paintVertexArray && this.paintVertexArray.arrayBuffer) {\n if (this.paintVertexBuffer && this.paintVertexBuffer.buffer) {\n this.paintVertexBuffer.updateData(this.paintVertexArray);\n } else {\n this.paintVertexBuffer = context.createVertexBuffer(this.paintVertexArray, this.paintVertexAttributes, this.expression.isStateDependent);\n }\n }\n }\n\n destroy() {\n if (this.paintVertexBuffer) {\n this.paintVertexBuffer.destroy();\n }\n }\n\n setUniform(uniform: Uniform<*>, globals: GlobalProperties): void {\n const currentZoom = this.useIntegerZoom ? Math.floor(globals.zoom) : globals.zoom;\n const factor = clamp(this.expression.interpolationFactor(currentZoom, this.zoom, this.zoom + 1), 0, 1);\n uniform.set(factor);\n }\n\n getBinding(context: Context, location: WebGLUniformLocation, _: string): Uniform1f {\n return new Uniform1f(context, location);\n }\n}\n\nclass CrossFadedCompositeBinder implements AttributeBinder {\n expression: CompositeExpression;\n type: string;\n useIntegerZoom: boolean;\n zoom: number;\n layerId: string;\n\n zoomInPaintVertexArray: StructArray;\n zoomOutPaintVertexArray: StructArray;\n zoomInPaintVertexBuffer: ?VertexBuffer;\n zoomOutPaintVertexBuffer: ?VertexBuffer;\n paintVertexAttributes: Array<StructArrayMember>;\n\n constructor(expression: CompositeExpression, names: Array<string>, type: string, useIntegerZoom: boolean, zoom: number, PaintVertexArray: Class<StructArray>, layerId: string) {\n this.expression = expression;\n this.type = type;\n this.useIntegerZoom = useIntegerZoom;\n this.zoom = zoom;\n this.layerId = layerId;\n\n this.paintVertexAttributes = (type === 'array' ? dashAttributes : patternAttributes).members;\n for (let i = 0; i < names.length; ++i) {\n assert(`a_${names[i]}` === this.paintVertexAttributes[i].name);\n }\n\n this.zoomInPaintVertexArray = new PaintVertexArray();\n this.zoomOutPaintVertexArray = new PaintVertexArray();\n }\n\n populatePaintArray(length: number, feature: Feature, imagePositions: SpritePositions) {\n const start = this.zoomInPaintVertexArray.length;\n this.zoomInPaintVertexArray.resize(length);\n this.zoomOutPaintVertexArray.resize(length);\n this._setPaintValues(start, length, feature.patterns && feature.patterns[this.layerId], imagePositions);\n }\n\n updatePaintArray(start: number, end: number, feature: Feature, featureState: FeatureState, availableImages: Array<string>, imagePositions: SpritePositions) {\n this._setPaintValues(start, end, feature.patterns && feature.patterns[this.layerId], imagePositions);\n }\n\n _setPaintValues(start, end, patterns, positions) {\n if (!positions || !patterns) return;\n\n const {min, mid, max} = patterns;\n const imageMin = positions[min];\n const imageMid = positions[mid];\n const imageMax = positions[max];\n if (!imageMin || !imageMid || !imageMax) return;\n\n // We populate two paint arrays because, for cross-faded properties, we don't know which direction\n // we're cross-fading to at layout time. In order to keep vertex attributes to a minimum and not pass\n // unnecessary vertex data to the shaders, we determine which to upload at draw time.\n for (let i = start; i < end; i++) {\n this._setPaintValue(this.zoomInPaintVertexArray, i, imageMid, imageMin);\n this._setPaintValue(this.zoomOutPaintVertexArray, i, imageMid, imageMax);\n }\n }\n\n _setPaintValue(array, i, posA, posB) {\n array.emplace(i,\n posA.tl[0], posA.tl[1], posA.br[0], posA.br[1],\n posB.tl[0], posB.tl[1], posB.br[0], posB.br[1],\n posA.pixelRatio, posB.pixelRatio\n );\n }\n\n upload(context: Context) {\n if (this.zoomInPaintVertexArray && this.zoomInPaintVertexArray.arrayBuffer && this.zoomOutPaintVertexArray && this.zoomOutPaintVertexArray.arrayBuffer) {\n this.zoomInPaintVertexBuffer = context.createVertexBuffer(this.zoomInPaintVertexArray, this.paintVertexAttributes, this.expression.isStateDependent);\n this.zoomOutPaintVertexBuffer = context.createVertexBuffer(this.zoomOutPaintVertexArray, this.paintVertexAttributes, this.expression.isStateDependent);\n }\n }\n\n destroy() {\n if (this.zoomOutPaintVertexBuffer) this.zoomOutPaintVertexBuffer.destroy();\n if (this.zoomInPaintVertexBuffer) this.zoomInPaintVertexBuffer.destroy();\n }\n}\n\n/**\n * ProgramConfiguration contains the logic for binding style layer properties and tile\n * layer feature data into GL program uniforms and vertex attributes.\n *\n * Non-data-driven property values are bound to shader uniforms. Data-driven property\n * values are bound to vertex attributes. In order to support a uniform GLSL syntax over\n * both, [Mapbox GL Shaders](https://github.com/mapbox/mapbox-gl-shaders) defines a `#pragma`\n * abstraction, which ProgramConfiguration is responsible for implementing. At runtime,\n * it examines the attributes of a particular layer, combines this with fixed knowledge\n * about how layers of the particular type are implemented, and determines which uniforms\n * and vertex attributes will be required. It can then substitute the appropriate text\n * into the shader source code, create and link a program, and bind the uniforms and\n * vertex attributes in preparation for drawing.\n *\n * When a vector tile is parsed, this same configuration information is used to\n * populate the attribute buffers needed for data-driven styling using the zoom\n * level and feature property data.\n *\n * @private\n */\nexport default class ProgramConfiguration {\n binders: {[_: string]: (AttributeBinder | UniformBinder) };\n cacheKey: string;\n\n _buffers: Array<VertexBuffer>;\n\n constructor(layer: TypedStyleLayer, zoom: number, filterProperties: (_: string) => boolean = () => true) {\n this.binders = {};\n this._buffers = [];\n\n const keys = [];\n\n for (const property in layer.paint._values) {\n if (!filterProperties(property)) continue;\n const value = layer.paint.get(property);\n if (!(value instanceof PossiblyEvaluatedPropertyValue) || !supportsPropertyExpression(value.property.specification)) {\n continue;\n }\n const names = paintAttributeNames(property, layer.type);\n const expression = value.value;\n const type = value.property.specification.type;\n const useIntegerZoom = value.property.useIntegerZoom;\n const propType = value.property.specification['property-type'];\n const isCrossFaded = propType === 'cross-faded' || propType === 'cross-faded-data-driven';\n\n const sourceException = String(property) === 'line-dasharray' && (layer.layout: any).get('line-cap').value.kind !== 'constant';\n\n if (expression.kind === 'constant' && !sourceException) {\n this.binders[property] = isCrossFaded ?\n new CrossFadedConstantBinder(expression.value, names) :\n new ConstantBinder(expression.value, names, type);\n keys.push(`/u_${property}`);\n\n } else if (expression.kind === 'source' || sourceException || isCrossFaded) {\n const StructArrayLayout = layoutType(property, type, 'source');\n this.binders[property] = isCrossFaded ?\n new CrossFadedCompositeBinder(expression, names, type, useIntegerZoom, zoom, StructArrayLayout, layer.id) :\n new SourceExpressionBinder(expression, names, type, StructArrayLayout);\n keys.push(`/a_${property}`);\n\n } else {\n const StructArrayLayout = layoutType(property, type, 'composite');\n this.binders[property] = new CompositeExpressionBinder(expression, names, type, useIntegerZoom, zoom, StructArrayLayout);\n keys.push(`/z_${property}`);\n }\n }\n\n this.cacheKey = keys.sort().join('');\n }\n\n getMaxValue(property: string): number {\n const binder = this.binders[property];\n return binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder ? binder.maxValue : 0;\n }\n\n populatePaintArrays(newLength: number, feature: Feature, imagePositions: SpritePositions, availableImages: Array<string>, canonical?: CanonicalTileID, formattedSection?: FormattedSection) {\n for (const property in this.binders) {\n const binder = this.binders[property];\n if (binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder || binder instanceof CrossFadedCompositeBinder)\n (binder: AttributeBinder).populatePaintArray(newLength, feature, imagePositions, availableImages, canonical, formattedSection);\n }\n }\n setConstantPatternPositions(posTo: SpritePosition, posFrom: SpritePosition) {\n for (const property in this.binders) {\n const binder = this.binders[property];\n if (binder instanceof CrossFadedConstantBinder)\n binder.setConstantPatternPositions(posTo, posFrom);\n }\n }\n\n updatePaintArrays(featureStates: FeatureStates, featureMap: FeaturePositionMap, vtLayer: VectorTileLayer, layer: TypedStyleLayer, availableImages: Array<string>, imagePositions: SpritePositions): boolean {\n let dirty: boolean = false;\n for (const id in featureStates) {\n const positions = featureMap.getPositions(id);\n\n for (const pos of positions) {\n const feature = vtLayer.feature(pos.index);\n\n for (const property in this.binders) {\n const binder = this.binders[property];\n if ((binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder ||\n binder instanceof CrossFadedCompositeBinder) && (binder: any).expression.isStateDependent === true) {\n //AHM: Remove after https://github.com/mapbox/mapbox-gl-js/issues/6255\n const value = layer.paint.get(property);\n (binder: any).expression = value.value;\n (binder: AttributeBinder).updatePaintArray(pos.start, pos.end, feature, featureStates[id], availableImages, imagePositions);\n dirty = true;\n }\n }\n }\n }\n return dirty;\n }\n\n defines(): Array<string> {\n const result = [];\n for (const property in this.binders) {\n const binder = this.binders[property];\n if (binder instanceof ConstantBinder || binder instanceof CrossFadedConstantBinder) {\n result.push(...binder.uniformNames.map(name => `#define HAS_UNIFORM_${name}`));\n }\n }\n return result;\n }\n\n getBinderAttributes(): Array<string> {\n const result = [];\n for (const property in this.binders) {\n const binder = this.binders[property];\n if (binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder || binder instanceof CrossFadedCompositeBinder) {\n for (let i = 0; i < binder.paintVertexAttributes.length; i++) {\n result.push(binder.paintVertexAttributes[i].name);\n }\n }\n }\n return result;\n }\n\n getBinderUniforms(): Array<string> {\n const uniforms = [];\n for (const property in this.binders) {\n const binder = this.binders[property];\n if (binder instanceof ConstantBinder || binder instanceof CrossFadedConstantBinder || binder instanceof CompositeExpressionBinder) {\n for (const uniformName of binder.uniformNames) {\n uniforms.push(uniformName);\n }\n }\n }\n return uniforms;\n }\n\n getPaintVertexBuffers(): Array<VertexBuffer> {\n return this._buffers;\n }\n\n getUniforms(context: Context, locations: UniformLocations): Array<BinderUniform> {\n const uniforms = [];\n for (const property in this.binders) {\n const binder = this.binders[property];\n if (binder instanceof ConstantBinder || binder instanceof CrossFadedConstantBinder || binder instanceof CompositeExpressionBinder) {\n for (const name of binder.uniformNames) {\n if (locations[name]) {\n const binding = binder.getBinding(context, locations[name], name);\n uniforms.push({name, property, binding});\n }\n }\n }\n }\n return uniforms;\n }\n\n setUniforms<Properties: Object>(context: Context, binderUniforms: Array<BinderUniform>, properties: PossiblyEvaluated<Properties>, globals: GlobalProperties) {\n // Uniform state bindings are owned by the Program, but we set them\n // from within the ProgramConfiguration's binder members.\n for (const {name, property, binding} of binderUniforms) {\n (this.binders[property]: any).setUniform(binding, globals, properties.get(property), name);\n }\n }\n\n updatePaintBuffers(crossfade?: CrossfadeParameters) {\n this._buffers = [];\n\n for (const property in this.binders) {\n const binder = this.binders[property];\n if (crossfade && binder instanceof CrossFadedCompositeBinder) {\n const patternVertexBuffer = crossfade.fromScale === 2 ? binder.zoomInPaintVertexBuffer : binder.zoomOutPaintVertexBuffer;\n if (patternVertexBuffer) this._buffers.push(patternVertexBuffer);\n\n } else if ((binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder) && binder.paintVertexBuffer) {\n this._buffers.push(binder.paintVertexBuffer);\n }\n }\n }\n\n upload(context: Context) {\n for (const property in this.binders) {\n const binder = this.binders[property];\n if (binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder || binder instanceof CrossFadedCompositeBinder)\n binder.upload(context);\n }\n this.updatePaintBuffers();\n }\n\n destroy() {\n for (const property in this.binders) {\n const binder = this.binders[property];\n if (binder instanceof SourceExpressionBinder || binder instanceof CompositeExpressionBinder || binder instanceof CrossFadedCompositeBinder)\n binder.destroy();\n }\n }\n}\n\nexport class ProgramConfigurationSet<Layer: TypedStyleLayer> {\n programConfigurations: {[_: string]: ProgramConfiguration};\n needsUpload: boolean;\n _featureMap: FeaturePositionMap;\n _bufferOffset: number;\n\n constructor(layers: $ReadOnlyArray<Layer>, zoom: number, filterProperties: (_: string) => boolean = () => true) {\n this.programConfigurations = {};\n for (const layer of layers) {\n this.programConfigurations[layer.id] = new ProgramConfiguration(layer, zoom, filterProperties);\n }\n this.needsUpload = false;\n this._featureMap = new FeaturePositionMap();\n this._bufferOffset = 0;\n }\n\n populatePaintArrays(length: number, feature: Feature, index: number, imagePositions: SpritePositions, availableImages: Array<string>, canonical: CanonicalTileID, formattedSection?: FormattedSection) {\n for (const key in this.programConfigurations) {\n this.programConfigurations[key].populatePaintArrays(length, feature, imagePositions, availableImages, canonical, formattedSection);\n }\n\n if (feature.id !== undefined) {\n this._featureMap.add(feature.id, index, this._bufferOffset, length);\n }\n this._bufferOffset = length;\n\n this.needsUpload = true;\n }\n\n updatePaintArrays(featureStates: FeatureStates, vtLayer: VectorTileLayer, layers: $ReadOnlyArray<TypedStyleLayer>, availableImages: Array<string>, imagePositions: SpritePositions) {\n for (const layer of layers) {\n this.needsUpload = this.programConfigurations[layer.id].updatePaintArrays(featureStates, this._featureMap, vtLayer, layer, availableImages, imagePositions) || this.needsUpload;\n }\n }\n\n get(layerId: string): ProgramConfiguration {\n return this.programConfigurations[layerId];\n }\n\n upload(context: Context) {\n if (!this.needsUpload) return;\n for (const layerId in this.programConfigurations) {\n this.programConfigurations[layerId].upload(context);\n }\n this.needsUpload = false;\n }\n\n destroy() {\n for (const layerId in this.programConfigurations) {\n this.programConfigurations[layerId].destroy();\n }\n }\n}\n\nconst attributeNameExceptions = {\n 'text-opacity': ['opacity'],\n 'icon-opacity': ['opacity'],\n 'text-color': ['fill_color'],\n 'icon-color': ['fill_color'],\n 'text-halo-color': ['halo_color'],\n 'icon-halo-color': ['halo_color'],\n 'text-halo-blur': ['halo_blur'],\n 'icon-halo-blur': ['halo_blur'],\n 'text-halo-width': ['halo_width'],\n 'icon-halo-width': ['halo_width'],\n 'line-gap-width': ['gapwidth'],\n 'line-pattern': ['pattern_to', 'pattern_from', 'pixel_ratio_to', 'pixel_ratio_from'],\n 'fill-pattern': ['pattern_to', 'pattern_from', 'pixel_ratio_to', 'pixel_ratio_from'],\n 'fill-extrusion-pattern': ['pattern_to', 'pattern_from', 'pixel_ratio_to', 'pixel_ratio_from'],\n 'line-dasharray': ['dash_to', 'dash_from']\n};\n\nfunction paintAttributeNames(property, type) {\n return attributeNameExceptions[property] || [property.replace(`${type}-`, '').replace(/-/g, '_')];\n}\n\nconst propertyExceptions = {\n 'line-pattern': {\n 'source': PatternLayoutArray,\n 'composite': PatternLayoutArray\n },\n 'fill-pattern': {\n 'source': PatternLayoutArray,\n 'composite': PatternLayoutArray\n },\n 'fill-extrusion-pattern':{\n 'source': PatternLayoutArray,\n 'composite': PatternLayoutArray\n },\n 'line-dasharray': { // temporary layout\n 'source': DashLayoutArray,\n 'composite': DashLayoutArray\n }\n};\n\nconst defaultLayouts = {\n 'color': {\n 'source': StructArrayLayout2f8,\n 'composite': StructArrayLayout4f16\n },\n 'number': {\n 'source': StructArrayLayout1f4,\n 'composite': StructArrayLayout2f8\n }\n};\n\nfunction layoutType(property, type, binderType) {\n const layoutException = propertyExceptions[property];\n return (layoutException && layoutException[binderType]) || defaultLayouts[type][binderType];\n}\n\nregister(ConstantBinder, 'ConstantBinder');\nregister(CrossFadedConstantBinder, 'CrossFadedConstantBinder');\nregister(SourceExpressionBinder, 'SourceExpressionBinder');\nregister(CrossFadedCompositeBinder, 'CrossFadedCompositeBinder');\nregister(CompositeExpressionBinder, 'CompositeExpressionBinder');\nregister(ProgramConfiguration, 'ProgramConfiguration', {omit: ['_buffers']});\nregister(ProgramConfigurationSet, 'ProgramConfigurationSet');\n","// @flow\n\nimport {endsWith, filterObject} from '../util/util.js';\n\nimport styleSpec from '../style-spec/reference/latest.js';\nimport {\n validateStyle,\n validateLayoutProperty,\n validatePaintProperty,\n emitValidationErrors\n} from './validate_style.js';\nimport {Evented} from '../util/evented.js';\nimport {Layout, Transitionable, Transitioning, Properties, PossiblyEvaluated, PossiblyEvaluatedPropertyValue} from './properties.js';\nimport {supportsPropertyExpression} from '../style-spec/util/properties.js';\nimport ProgramConfiguration from '../data/program_configuration.js';\nimport featureFilter from '../style-spec/feature_filter/index.js';\n\nimport type {FeatureState} from '../style-spec/expression/index.js';\nimport type {Bucket} from '../data/bucket.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {FeatureFilter, FilterExpression} from '../style-spec/feature_filter/index.js';\nimport type {TransitionParameters, PropertyValue} from './properties.js';\nimport type EvaluationParameters, {CrossfadeParameters} from './evaluation_parameters.js';\nimport type Transform from '../geo/transform.js';\nimport type {\n LayerSpecification,\n FilterSpecification,\n TransitionSpecification,\n PropertyValueSpecification\n} from '../style-spec/types.js';\nimport type {CustomLayerInterface} from './style_layer/custom_style_layer.js';\nimport type Map from '../ui/map.js';\nimport type {StyleSetterOptions} from './style.js';\nimport type {TilespaceQueryGeometry} from './query_geometry.js';\nimport type {DEMSampler} from '../terrain/elevation.js';\n\nconst TRANSITION_SUFFIX = '-transition';\n\nclass StyleLayer extends Evented {\n id: string;\n metadata: mixed;\n type: string;\n source: string;\n sourceLayer: ?string;\n minzoom: ?number;\n maxzoom: ?number;\n filter: FilterSpecification | void;\n visibility: 'visible' | 'none' | void;\n _crossfadeParameters: CrossfadeParameters;\n\n _unevaluatedLayout: Layout<any>;\n +layout: mixed;\n\n _transitionablePaint: Transitionable<any>;\n _transitioningPaint: Transitioning<any>;\n +paint: mixed;\n\n _featureFilter: FeatureFilter;\n _filterCompiled: boolean;\n\n +queryRadius: (bucket: Bucket) => number;\n +queryIntersectsFeature: (queryGeometry: TilespaceQueryGeometry,\n feature: VectorTileFeature,\n featureState: FeatureState,\n geometry: Array<Array<Point>>,\n zoom: number,\n transform: Transform,\n pixelPosMatrix: Float32Array,\n elevationHelper: ?DEMSampler,\n layoutVertexArrayOffset: number) => boolean | number;\n\n +onAdd: ?(map: Map) => void;\n +onRemove: ?(map: Map) => void;\n\n constructor(layer: LayerSpecification | CustomLayerInterface, properties: $ReadOnly<{layout?: Properties<*>, paint?: Properties<*>}>) {\n super();\n\n this.id = layer.id;\n this.type = layer.type;\n this._featureFilter = {filter: () => true, needGeometry: false, needFeature: false};\n this._filterCompiled = false;\n\n if (layer.type === 'custom') return;\n\n layer = ((layer: any): LayerSpecification);\n\n this.metadata = layer.metadata;\n this.minzoom = layer.minzoom;\n this.maxzoom = layer.maxzoom;\n\n if (layer.type !== 'background' && layer.type !== 'sky') {\n this.source = layer.source;\n this.sourceLayer = layer['source-layer'];\n this.filter = layer.filter;\n }\n\n if (properties.layout) {\n this._unevaluatedLayout = new Layout(properties.layout);\n }\n\n if (properties.paint) {\n this._transitionablePaint = new Transitionable(properties.paint);\n\n for (const property in layer.paint) {\n this.setPaintProperty(property, layer.paint[property], {validate: false});\n }\n for (const property in layer.layout) {\n this.setLayoutProperty(property, layer.layout[property], {validate: false});\n }\n\n this._transitioningPaint = this._transitionablePaint.untransitioned();\n //$FlowFixMe\n this.paint = new PossiblyEvaluated(properties.paint);\n }\n }\n\n getCrossfadeParameters(): CrossfadeParameters {\n return this._crossfadeParameters;\n }\n\n getLayoutProperty(name: string): PropertyValueSpecification<mixed> {\n if (name === 'visibility') {\n return this.visibility;\n }\n\n return this._unevaluatedLayout.getValue(name);\n }\n\n setLayoutProperty(name: string, value: any, options: StyleSetterOptions = {}) {\n if (value !== null && value !== undefined) {\n const key = `layers.${this.id}.layout.${name}`;\n if (this._validate(validateLayoutProperty, key, name, value, options)) {\n return;\n }\n }\n\n if (name === 'visibility') {\n this.visibility = value;\n return;\n }\n\n this._unevaluatedLayout.setValue(name, value);\n }\n\n getPaintProperty(name: string): void | TransitionSpecification | PropertyValueSpecification<mixed> {\n if (endsWith(name, TRANSITION_SUFFIX)) {\n return this._transitionablePaint.getTransition(name.slice(0, -TRANSITION_SUFFIX.length));\n } else {\n return this._transitionablePaint.getValue(name);\n }\n }\n\n setPaintProperty(name: string, value: mixed, options: StyleSetterOptions = {}): boolean {\n if (value !== null && value !== undefined) {\n const key = `layers.${this.id}.paint.${name}`;\n if (this._validate(validatePaintProperty, key, name, value, options)) {\n return false;\n }\n }\n\n if (endsWith(name, TRANSITION_SUFFIX)) {\n this._transitionablePaint.setTransition(name.slice(0, -TRANSITION_SUFFIX.length), (value: any) || undefined);\n return false;\n } else {\n const transitionable = this._transitionablePaint._values[name];\n const isCrossFadedProperty = transitionable.property.specification[\"property-type\"] === 'cross-faded-data-driven';\n const wasDataDriven = transitionable.value.isDataDriven();\n const oldValue = transitionable.value;\n\n this._transitionablePaint.setValue(name, value);\n this._handleSpecialPaintPropertyUpdate(name);\n\n const newValue = this._transitionablePaint._values[name].value;\n const isDataDriven = newValue.isDataDriven();\n\n // if a cross-faded value is changed, we need to make sure the new icons get added to each tile's iconAtlas\n // so a call to _updateLayer is necessary, and we return true from this function so it gets called in\n // Style#setPaintProperty\n return isDataDriven || wasDataDriven || isCrossFadedProperty || this._handleOverridablePaintPropertyUpdate(name, oldValue, newValue);\n }\n }\n\n _handleSpecialPaintPropertyUpdate(_: string) {\n // No-op; can be overridden by derived classes.\n }\n\n getProgramIds(): string[] | null {\n // No-op; can be overridden by derived classes.\n return null;\n }\n\n getProgramConfiguration(_: number): ProgramConfiguration | null {\n // No-op; can be overridden by derived classes.\n return null;\n }\n\n // eslint-disable-next-line no-unused-vars\n _handleOverridablePaintPropertyUpdate<T, R>(name: string, oldValue: PropertyValue<T, R>, newValue: PropertyValue<T, R>): boolean {\n // No-op; can be overridden by derived classes.\n return false;\n }\n\n isHidden(zoom: number): boolean {\n if (this.minzoom && zoom < this.minzoom) return true;\n if (this.maxzoom && zoom >= this.maxzoom) return true;\n return this.visibility === 'none';\n }\n\n updateTransitions(parameters: TransitionParameters) {\n this._transitioningPaint = this._transitionablePaint.transitioned(parameters, this._transitioningPaint);\n }\n\n hasTransition(): boolean {\n return this._transitioningPaint.hasTransition();\n }\n\n recalculate(parameters: EvaluationParameters, availableImages: Array<string>) {\n if (parameters.getCrossfadeParameters) {\n this._crossfadeParameters = parameters.getCrossfadeParameters();\n }\n\n if (this._unevaluatedLayout) {\n (this: any).layout = this._unevaluatedLayout.possiblyEvaluate(parameters, undefined, availableImages);\n }\n\n (this: any).paint = this._transitioningPaint.possiblyEvaluate(parameters, undefined, availableImages);\n }\n\n serialize(): LayerSpecification {\n const output: any = {\n 'id': this.id,\n 'type': this.type,\n 'source': this.source,\n 'source-layer': this.sourceLayer,\n 'metadata': this.metadata,\n 'minzoom': this.minzoom,\n 'maxzoom': this.maxzoom,\n 'filter': this.filter,\n 'layout': this._unevaluatedLayout && this._unevaluatedLayout.serialize(),\n 'paint': this._transitionablePaint && this._transitionablePaint.serialize()\n };\n\n if (this.visibility) {\n output.layout = output.layout || {};\n output.layout.visibility = this.visibility;\n }\n\n return filterObject(output, (value, key) => {\n return value !== undefined &&\n !(key === 'layout' && !Object.keys(value).length) &&\n !(key === 'paint' && !Object.keys(value).length);\n });\n }\n\n _validate(validate: Function, key: string, name: string, value: mixed, options: StyleSetterOptions = {}): boolean {\n if (options && options.validate === false) {\n return false;\n }\n return emitValidationErrors(this, validate.call(validateStyle, {\n key,\n layerType: this.type,\n objectKey: name,\n value,\n styleSpec,\n // Workaround for https://github.com/mapbox/mapbox-gl-js/issues/2407\n style: {glyphs: true, sprite: true}\n }));\n }\n\n is3D(): boolean {\n return false;\n }\n\n isSky(): boolean {\n return false;\n }\n\n isTileClipped(): boolean {\n return false;\n }\n\n hasOffscreenPass(): boolean {\n return false;\n }\n\n resize() {\n // noop\n }\n\n isStateDependent(): boolean {\n for (const property in (this: any).paint._values) {\n const value = (this: any).paint.get(property);\n if (!(value instanceof PossiblyEvaluatedPropertyValue) || !supportsPropertyExpression(value.property.specification)) {\n continue;\n }\n\n if ((value.value.kind === 'source' || value.value.kind === 'composite') &&\n value.value.isStateDependent) {\n return true;\n }\n }\n return false;\n }\n\n compileFilter() {\n if (!this._filterCompiled) {\n this._featureFilter = featureFilter(this.filter);\n this._filterCompiled = true;\n }\n }\n\n invalidateCompiledFilter() {\n this._filterCompiled = false;\n }\n\n dynamicFilter(): ?FilterExpression {\n return this._featureFilter.dynamicFilter;\n }\n\n dynamicFilterNeedsFeature(): boolean {\n return this._featureFilter.needFeature;\n }\n}\n\nexport default StyleLayer;\n","// @flow\nimport {createLayout} from '../../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../../util/struct_array.js';\n\nexport const circleAttributes: StructArrayLayout = createLayout([\n {name: 'a_pos', components: 2, type: 'Int16'}\n], 4);\n\nexport const circleGlobeAttributesExt: StructArrayLayout = createLayout([\n {name: 'a_pos_3', components: 3, type: 'Int16'},\n {name: 'a_pos_normal_3', components: 3, type: 'Int16'}\n]);\n\nexport const {members, size, alignment} = circleAttributes;\n","// @flow\n\nimport {warnOnce} from '../util/util.js';\n\nimport {register} from '../util/web_worker_transfer.js';\n\nimport type VertexArrayObject from '../render/vertex_array_object.js';\nimport type {StructArray} from '../util/struct_array.js';\n\nexport type Segment = {\n sortKey: number | void,\n vertexOffset: number,\n primitiveOffset: number,\n vertexLength: number,\n primitiveLength: number,\n vaos: {[_: string]: VertexArrayObject}\n}\n\nclass SegmentVector {\n static MAX_VERTEX_ARRAY_LENGTH: number;\n segments: Array<Segment>;\n\n constructor(segments?: Array<Segment> = []) {\n this.segments = segments;\n }\n\n prepareSegment(numVertices: number, layoutVertexArray: StructArray, indexArray: StructArray, sortKey?: number): Segment {\n let segment: Segment = this.segments[this.segments.length - 1];\n if (numVertices > SegmentVector.MAX_VERTEX_ARRAY_LENGTH) warnOnce(`Max vertices per segment is ${SegmentVector.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${numVertices}`);\n if (!segment || segment.vertexLength + numVertices > SegmentVector.MAX_VERTEX_ARRAY_LENGTH || segment.sortKey !== sortKey) {\n segment = ({\n vertexOffset: layoutVertexArray.length,\n primitiveOffset: indexArray.length,\n vertexLength: 0,\n primitiveLength: 0\n }: any);\n if (sortKey !== undefined) segment.sortKey = sortKey;\n this.segments.push(segment);\n }\n return segment;\n }\n\n get(): Array<Segment> {\n return this.segments;\n }\n\n destroy() {\n for (const segment of this.segments) {\n for (const k in segment.vaos) {\n segment.vaos[k].destroy();\n }\n }\n }\n\n static simpleSegment(vertexOffset: number, primitiveOffset: number, vertexLength: number, primitiveLength: number): SegmentVector {\n return new SegmentVector([{\n vertexOffset,\n primitiveOffset,\n vertexLength,\n primitiveLength,\n vaos: {},\n sortKey: 0\n }]);\n }\n}\n\n/*\n * The maximum size of a vertex array. This limit is imposed by WebGL's 16 bit\n * addressing of vertex buffers.\n * @private\n * @readonly\n */\nSegmentVector.MAX_VERTEX_ARRAY_LENGTH = Math.pow(2, 16) - 1;\n\nregister(SegmentVector, 'SegmentVector');\nexport default SegmentVector;\n","// @flow\n\n/**\n * The maximum value of a coordinate in the internal tile coordinate system. Coordinates of\n * all source features normalized to this extent upon load.\n *\n * The value is a consequence of the following:\n *\n * * Vertex buffer store positions as signed 16 bit integers.\n * * One bit is lost for signedness to support tile buffers.\n * * One bit is lost because the line vertex buffer used to pack 1 bit of other data into the int.\n * * One bit is lost to support features extending past the extent on the right edge of the tile.\n * * This leaves us with 2^13 = 8192\n *\n * @private\n * @readonly\n */\nexport default 8192;\n","// @flow\n\nimport LngLat from './lng_lat.js';\n\nimport type {LngLatLike} from './lng_lat.js';\n\n/**\n * A `LngLatBounds` object represents a geographical bounding box,\n * defined by its southwest and northeast points in longitude and latitude.\n *\n * If no arguments are provided to the constructor, a `null` bounding box is created.\n *\n * Note that any Mapbox GL method that accepts a `LngLatBounds` object as an argument or option\n * can also accept an `Array` of two {@link LngLatLike} constructs and will perform an implicit conversion.\n * This flexible type is documented as {@link LngLatBoundsLike}.\n *\n * @param {LngLatLike} [sw] The southwest corner of the bounding box.\n * @param {LngLatLike} [ne] The northeast corner of the bounding box.\n * @example\n * const sw = new mapboxgl.LngLat(-73.9876, 40.7661);\n * const ne = new mapboxgl.LngLat(-73.9397, 40.8002);\n * const llb = new mapboxgl.LngLatBounds(sw, ne);\n */\nclass LngLatBounds {\n _ne: LngLat;\n _sw: LngLat;\n\n // This constructor is too flexible to type. It should not be so flexible.\n constructor(sw: any, ne: any) {\n if (!sw) {\n // noop\n } else if (ne) {\n this.setSouthWest(sw).setNorthEast(ne);\n } else if (sw.length === 4) {\n this.setSouthWest([sw[0], sw[1]]).setNorthEast([sw[2], sw[3]]);\n } else {\n this.setSouthWest(sw[0]).setNorthEast(sw[1]);\n }\n }\n\n /**\n * Set the northeast corner of the bounding box.\n *\n * @param {LngLatLike} ne A {@link LngLatLike} object describing the northeast corner of the bounding box.\n * @returns {LngLatBounds} Returns itself to allow for method chaining.\n * @example\n * const sw = new mapboxgl.LngLat(-73.9876, 40.7661);\n * const ne = new mapboxgl.LngLat(-73.9397, 40.8002);\n * const llb = new mapboxgl.LngLatBounds(sw, ne);\n * llb.setNorthEast([-73.9397, 42.8002]);\n */\n setNorthEast(ne: LngLatLike): this {\n this._ne = ne instanceof LngLat ? new LngLat(ne.lng, ne.lat) : LngLat.convert(ne);\n return this;\n }\n\n /**\n * Set the southwest corner of the bounding box.\n *\n * @param {LngLatLike} sw A {@link LngLatLike} object describing the southwest corner of the bounding box.\n * @returns {LngLatBounds} Returns itself to allow for method chaining.\n * @example\n * const sw = new mapboxgl.LngLat(-73.9876, 40.7661);\n * const ne = new mapboxgl.LngLat(-73.9397, 40.8002);\n * const llb = new mapboxgl.LngLatBounds(sw, ne);\n * llb.setSouthWest([-73.9876, 40.2661]);\n */\n setSouthWest(sw: LngLatLike): this {\n this._sw = sw instanceof LngLat ? new LngLat(sw.lng, sw.lat) : LngLat.convert(sw);\n return this;\n }\n\n /**\n * Extend the bounds to include a given LngLatLike or LngLatBoundsLike.\n *\n * @param {LngLatLike|LngLatBoundsLike} obj Object to extend to.\n * @returns {LngLatBounds} Returns itself to allow for method chaining.\n * @example\n * const sw = new mapboxgl.LngLat(-73.9876, 40.7661);\n * const ne = new mapboxgl.LngLat(-73.9397, 40.8002);\n * const llb = new mapboxgl.LngLatBounds(sw, ne);\n * llb.extend([-72.9876, 42.2661]);\n */\n extend(obj: LngLatLike | LngLatBoundsLike): this {\n const sw = this._sw,\n ne = this._ne;\n let sw2, ne2;\n\n if (obj instanceof LngLat) {\n sw2 = obj;\n ne2 = obj;\n\n } else if (obj instanceof LngLatBounds) {\n sw2 = obj._sw;\n ne2 = obj._ne;\n\n if (!sw2 || !ne2) return this;\n\n } else {\n if (Array.isArray(obj)) {\n if (obj.length === 4 || obj.every(Array.isArray)) {\n const lngLatBoundsObj = ((obj: any): LngLatBoundsLike);\n return this.extend(LngLatBounds.convert(lngLatBoundsObj));\n } else {\n const lngLatObj = ((obj: any): LngLatLike);\n return this.extend(LngLat.convert(lngLatObj));\n }\n }\n return this;\n }\n\n if (!sw && !ne) {\n this._sw = new LngLat(sw2.lng, sw2.lat);\n this._ne = new LngLat(ne2.lng, ne2.lat);\n\n } else {\n sw.lng = Math.min(sw2.lng, sw.lng);\n sw.lat = Math.min(sw2.lat, sw.lat);\n ne.lng = Math.max(ne2.lng, ne.lng);\n ne.lat = Math.max(ne2.lat, ne.lat);\n }\n\n return this;\n }\n\n /**\n * Returns the geographical coordinate equidistant from the bounding box's corners.\n *\n * @returns {LngLat} The bounding box's center.\n * @example\n * const llb = new mapboxgl.LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);\n * llb.getCenter(); // = LngLat {lng: -73.96365, lat: 40.78315}\n */\n getCenter(): LngLat {\n return new LngLat((this._sw.lng + this._ne.lng) / 2, (this._sw.lat + this._ne.lat) / 2);\n }\n\n /**\n * Returns the southwest corner of the bounding box.\n *\n * @returns {LngLat} The southwest corner of the bounding box.\n * @example\n * const llb = new mapboxgl.LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);\n * llb.getSouthWest(); // LngLat {lng: -73.9876, lat: 40.7661}\n */\n getSouthWest(): LngLat { return this._sw; }\n\n /**\n * Returns the northeast corner of the bounding box.\n *\n * @returns {LngLat} The northeast corner of the bounding box.\n * @example\n * const llb = new mapboxgl.LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);\n * llb.getNorthEast(); // LngLat {lng: -73.9397, lat: 40.8002}\n */\n getNorthEast(): LngLat { return this._ne; }\n\n /**\n * Returns the northwest corner of the bounding box.\n *\n * @returns {LngLat} The northwest corner of the bounding box.\n * @example\n * const llb = new mapboxgl.LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);\n * llb.getNorthWest(); // LngLat {lng: -73.9876, lat: 40.8002}\n */\n getNorthWest(): LngLat { return new LngLat(this.getWest(), this.getNorth()); }\n\n /**\n * Returns the southeast corner of the bounding box.\n *\n * @returns {LngLat} The southeast corner of the bounding box.\n * @example\n * const llb = new mapboxgl.LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);\n * llb.getSouthEast(); // LngLat {lng: -73.9397, lat: 40.7661}\n */\n getSouthEast(): LngLat { return new LngLat(this.getEast(), this.getSouth()); }\n\n /**\n * Returns the west edge of the bounding box.\n *\n * @returns {number} The west edge of the bounding box.\n * @example\n * const llb = new mapboxgl.LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);\n * llb.getWest(); // -73.9876\n */\n getWest(): number { return this._sw.lng; }\n\n /**\n * Returns the south edge of the bounding box.\n *\n * @returns {number} The south edge of the bounding box.\n * @example\n * const llb = new mapboxgl.LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);\n * llb.getSouth(); // 40.7661\n */\n getSouth(): number { return this._sw.lat; }\n\n /**\n * Returns the east edge of the bounding box.\n *\n * @returns {number} The east edge of the bounding box.\n * @example\n * const llb = new mapboxgl.LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);\n * llb.getEast(); // -73.9397\n */\n getEast(): number { return this._ne.lng; }\n\n /**\n * Returns the north edge of the bounding box.\n *\n * @returns {number} The north edge of the bounding box.\n * @example\n * const llb = new mapboxgl.LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);\n * llb.getNorth(); // 40.8002\n */\n getNorth(): number { return this._ne.lat; }\n\n /**\n * Returns the bounding box represented as an array.\n *\n * @returns {Array<Array<number>>} The bounding box represented as an array, consisting of the\n * southwest and northeast coordinates of the bounding represented as arrays of numbers.\n * @example\n * const llb = new mapboxgl.LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);\n * llb.toArray(); // = [[-73.9876, 40.7661], [-73.9397, 40.8002]]\n */\n toArray(): [[number, number], [number, number]] {\n return [this._sw.toArray(), this._ne.toArray()];\n }\n\n /**\n * Return the bounding box represented as a string.\n *\n * @returns {string} The bounding box represents as a string of the format\n * `'LngLatBounds(LngLat(lng, lat), LngLat(lng, lat))'`.\n * @example\n * const llb = new mapboxgl.LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);\n * llb.toString(); // = \"LngLatBounds(LngLat(-73.9876, 40.7661), LngLat(-73.9397, 40.8002))\"\n */\n toString(): string {\n return `LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`;\n }\n\n /**\n * Check if the bounding box is an empty/`null`-type box.\n *\n * @returns {boolean} True if bounds have been defined, otherwise false.\n * @example\n * const llb = new mapboxgl.LngLatBounds();\n * llb.isEmpty(); // true\n * llb.setNorthEast([-73.9876, 40.7661]);\n * llb.setSouthWest([-73.9397, 40.8002]);\n * llb.isEmpty(); // false\n */\n isEmpty(): boolean {\n return !(this._sw && this._ne);\n }\n\n /**\n * Check if the point is within the bounding box.\n *\n * @param {LngLatLike} lnglat Geographic point to check against.\n * @returns {boolean} True if the point is within the bounding box.\n * @example\n * const llb = new mapboxgl.LngLatBounds(\n * new mapboxgl.LngLat(-73.9876, 40.7661),\n * new mapboxgl.LngLat(-73.9397, 40.8002)\n * );\n *\n * const ll = new mapboxgl.LngLat(-73.9567, 40.7789);\n *\n * console.log(llb.contains(ll)); // = true\n */\n contains(lnglat: LngLatLike): boolean {\n const {lng, lat} = LngLat.convert(lnglat);\n\n const containsLatitude = this._sw.lat <= lat && lat <= this._ne.lat;\n let containsLongitude = this._sw.lng <= lng && lng <= this._ne.lng;\n if (this._sw.lng > this._ne.lng) { // wrapped coordinates\n containsLongitude = this._sw.lng >= lng && lng >= this._ne.lng;\n }\n\n return containsLatitude && containsLongitude;\n }\n\n /**\n * Converts an array to a `LngLatBounds` object.\n *\n * If a `LngLatBounds` object is passed in, the function returns it unchanged.\n *\n * Internally, the function calls `LngLat#convert` to convert arrays to `LngLat` values.\n *\n * @param {LngLatBoundsLike} input An array of two coordinates to convert, or a `LngLatBounds` object to return.\n * @returns {LngLatBounds} A new `LngLatBounds` object, if a conversion occurred, or the original `LngLatBounds` object.\n * @example\n * const arr = [[-73.9876, 40.7661], [-73.9397, 40.8002]];\n * const llb = mapboxgl.LngLatBounds.convert(arr);\n * console.log(llb); // = LngLatBounds {_sw: LngLat {lng: -73.9876, lat: 40.7661}, _ne: LngLat {lng: -73.9397, lat: 40.8002}}\n */\n static convert(input: LngLatBoundsLike): LngLatBounds {\n if (!input || input instanceof LngLatBounds) return input;\n return new LngLatBounds(input);\n }\n}\n\n/**\n * A {@link LngLatBounds} object, an array of {@link LngLatLike} objects in [sw, ne] order,\n * or an array of numbers in [west, south, east, north] order.\n *\n * @typedef {LngLatBounds | [LngLatLike, LngLatLike] | [number, number, number, number]} LngLatBoundsLike\n * @example\n * const v1 = new mapboxgl.LngLatBounds(\n * new mapboxgl.LngLat(-73.9876, 40.7661),\n * new mapboxgl.LngLat(-73.9397, 40.8002)\n * );\n * const v2 = new mapboxgl.LngLatBounds([-73.9876, 40.7661], [-73.9397, 40.8002]);\n * const v3 = [[-73.9876, 40.7661], [-73.9397, 40.8002]];\n */\nexport type LngLatBoundsLike = LngLatBounds | [LngLatLike, LngLatLike] | [number, number, number, number];\n\nexport default LngLatBounds;\n","// @flow\n\nimport {wrap} from '../util/util.js';\nimport LngLatBounds from './lng_lat_bounds.js';\n\n/*\n* Approximate radius of the earth in meters.\n* Uses the WGS-84 approximation. The radius at the equator is ~6378137 and at the poles is ~6356752. https://en.wikipedia.org/wiki/World_Geodetic_System#WGS84\n* 6371008.8 is one published \"average radius\" see https://en.wikipedia.org/wiki/Earth_radius#Mean_radius, or ftp://athena.fsv.cvut.cz/ZFG/grs80-Moritz.pdf p.4\n*/\nexport const earthRadius = 6371008.8;\n\n/**\n * A `LngLat` object represents a given longitude and latitude coordinate, measured in degrees.\n * These coordinates use longitude, latitude coordinate order (as opposed to latitude, longitude)\n * to match the [GeoJSON specification](https://datatracker.ietf.org/doc/html/rfc7946#section-4),\n * which is equivalent to the OGC:CRS84 coordinate reference system.\n *\n * Note that any Mapbox GL method that accepts a `LngLat` object as an argument or option\n * can also accept an `Array` of two numbers and will perform an implicit conversion.\n * This flexible type is documented as {@link LngLatLike}.\n *\n * @param {number} lng Longitude, measured in degrees.\n * @param {number} lat Latitude, measured in degrees.\n * @example\n * const ll = new mapboxgl.LngLat(-123.9749, 40.7736);\n * console.log(ll.lng); // = -123.9749\n * @see [Example: Get coordinates of the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/mouse-position/)\n * @see [Example: Display a popup](https://www.mapbox.com/mapbox-gl-js/example/popup/)\n * @see [Example: Highlight features within a bounding box](https://www.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n * @see [Example: Create a timeline animation](https://www.mapbox.com/mapbox-gl-js/example/timeline-animation/)\n */\nclass LngLat {\n lng: number;\n lat: number;\n\n constructor(lng: number, lat: number) {\n if (isNaN(lng) || isNaN(lat)) {\n throw new Error(`Invalid LngLat object: (${lng}, ${lat})`);\n }\n this.lng = +lng;\n this.lat = +lat;\n if (this.lat > 90 || this.lat < -90) {\n throw new Error('Invalid LngLat latitude value: must be between -90 and 90');\n }\n }\n\n /**\n * Returns a new `LngLat` object whose longitude is wrapped to the range (-180, 180).\n *\n * @returns {LngLat} The wrapped `LngLat` object.\n * @example\n * const ll = new mapboxgl.LngLat(286.0251, 40.7736);\n * const wrapped = ll.wrap();\n * console.log(wrapped.lng); // = -73.9749\n */\n wrap(): LngLat {\n return new LngLat(wrap(this.lng, -180, 180), this.lat);\n }\n\n /**\n * Returns the coordinates represented as an array of two numbers.\n *\n * @returns {Array<number>} The coordinates represeted as an array of longitude and latitude.\n * @example\n * const ll = new mapboxgl.LngLat(-73.9749, 40.7736);\n * ll.toArray(); // = [-73.9749, 40.7736]\n */\n toArray(): [number, number] {\n return [this.lng, this.lat];\n }\n\n /**\n * Returns the coordinates represent as a string.\n *\n * @returns {string} The coordinates represented as a string of the format `'LngLat(lng, lat)'`.\n * @example\n * const ll = new mapboxgl.LngLat(-73.9749, 40.7736);\n * ll.toString(); // = \"LngLat(-73.9749, 40.7736)\"\n */\n toString(): string {\n return `LngLat(${this.lng}, ${this.lat})`;\n }\n\n /**\n * Returns the approximate distance between a pair of coordinates in meters.\n * Uses the Haversine Formula (from R.W. Sinnott, \"Virtues of the Haversine\", Sky and Telescope, vol. 68, no. 2, 1984, p. 159).\n *\n * @param {LngLat} lngLat Coordinates to compute the distance to.\n * @returns {number} Distance in meters between the two coordinates.\n * @example\n * const newYork = new mapboxgl.LngLat(-74.0060, 40.7128);\n * const losAngeles = new mapboxgl.LngLat(-118.2437, 34.0522);\n * newYork.distanceTo(losAngeles); // = 3935751.690893987, \"true distance\" using a non-spherical approximation is ~3966km\n */\n distanceTo(lngLat: LngLat): number {\n const rad = Math.PI / 180;\n const lat1 = this.lat * rad;\n const lat2 = lngLat.lat * rad;\n const a = Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos((lngLat.lng - this.lng) * rad);\n\n const maxMeters = earthRadius * Math.acos(Math.min(a, 1));\n return maxMeters;\n }\n\n /**\n * Returns a `LngLatBounds` from the coordinates extended by a given `radius`. The returned `LngLatBounds` completely contains the `radius`.\n *\n * @param {number} [radius=0] Distance in meters from the coordinates to extend the bounds.\n * @returns {LngLatBounds} A new `LngLatBounds` object representing the coordinates extended by the `radius`.\n * @example\n * const ll = new mapboxgl.LngLat(-73.9749, 40.7736);\n * ll.toBounds(100).toArray(); // = [[-73.97501862141328, 40.77351016847229], [-73.97478137858673, 40.77368983152771]]\n */\n toBounds(radius?: number = 0): LngLatBounds {\n const earthCircumferenceInMetersAtEquator = 40075017;\n const latAccuracy = 360 * radius / earthCircumferenceInMetersAtEquator,\n lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\n\n return new LngLatBounds(new LngLat(this.lng - lngAccuracy, this.lat - latAccuracy),\n new LngLat(this.lng + lngAccuracy, this.lat + latAccuracy));\n }\n\n /**\n * Converts an array of two numbers or an object with `lng` and `lat` or `lon` and `lat` properties\n * to a `LngLat` object.\n *\n * If a `LngLat` object is passed in, the function returns it unchanged.\n *\n * @param {LngLatLike} input An array of two numbers or object to convert, or a `LngLat` object to return.\n * @returns {LngLat} A new `LngLat` object, if a conversion occurred, or the original `LngLat` object.\n * @example\n * const arr = [-73.9749, 40.7736];\n * const ll = mapboxgl.LngLat.convert(arr);\n * console.log(ll); // = LngLat {lng: -73.9749, lat: 40.7736}\n */\n static convert(input: LngLatLike): LngLat {\n if (input instanceof LngLat) {\n return input;\n }\n if (Array.isArray(input) && (input.length === 2 || input.length === 3)) {\n return new LngLat(Number(input[0]), Number(input[1]));\n }\n if (!Array.isArray(input) && typeof input === 'object' && input !== null) {\n return new LngLat(\n // flow can't refine this to have one of lng or lat, so we have to cast to any\n Number('lng' in input ? (input: any).lng : (input: any).lon),\n Number(input.lat)\n );\n }\n throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]\");\n }\n}\n\n/**\n * A {@link LngLat} object, an array of two numbers representing longitude and latitude,\n * or an object with `lng` and `lat` or `lon` and `lat` properties.\n *\n * @typedef {LngLat | {lng: number, lat: number} | {lon: number, lat: number} | [number, number]} LngLatLike\n * @example\n * const v1 = new mapboxgl.LngLat(-122.420679, 37.772537);\n * const v2 = [-122.420679, 37.772537];\n * const v3 = {lon: -122.420679, lat: 37.772537};\n */\nexport type LngLatLike = LngLat | {lng: number, lat: number} | {lon: number, lat: number} | [number, number];\n\nexport default LngLat;\n","// @flow\n\nimport LngLat, {earthRadius} from '../geo/lng_lat.js';\nimport type {LngLatLike} from '../geo/lng_lat.js';\n\n/*\n * The average circumference of the world in meters.\n */\nconst earthCircumference = 2 * Math.PI * earthRadius; // meters\n\n/*\n * The circumference at a line of latitude in meters.\n */\nexport function circumferenceAtLatitude(latitude: number): number {\n return earthCircumference * Math.cos(latitude * Math.PI / 180);\n}\n\nexport function mercatorXfromLng(lng: number): number {\n return (180 + lng) / 360;\n}\n\nexport function mercatorYfromLat(lat: number): number {\n return (180 - (180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360)))) / 360;\n}\n\nexport function mercatorZfromAltitude(altitude: number, lat: number): number {\n return altitude / circumferenceAtLatitude(lat);\n}\n\nexport function lngFromMercatorX(x: number): number {\n return x * 360 - 180;\n}\n\nexport function latFromMercatorY(y: number): number {\n const y2 = 180 - y * 360;\n return 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90;\n}\n\nexport function altitudeFromMercatorZ(z: number, y: number): number {\n return z * circumferenceAtLatitude(latFromMercatorY(y));\n}\n\nexport const MAX_MERCATOR_LATITUDE = 85.051129;\n\n/**\n * Determine the Mercator scale factor for a given latitude, see\n * https://en.wikipedia.org/wiki/Mercator_projection#Scale_factor\n *\n * At the equator the scale factor will be 1, which increases at higher latitudes.\n *\n * @param {number} lat Latitude\n * @returns {number} scale factor\n * @private\n */\nexport function mercatorScale(lat: number): number {\n return 1 / Math.cos(lat * Math.PI / 180);\n}\n\n/**\n * A `MercatorCoordinate` object represents a projected three dimensional position.\n *\n * `MercatorCoordinate` uses the web mercator projection ([EPSG:3857](https://epsg.io/3857)) with slightly different units:\n * - the size of 1 unit is the width of the projected world instead of the \"mercator meter\"\n * - the origin of the coordinate space is at the north-west corner instead of the middle.\n *\n * For example, `MercatorCoordinate(0, 0, 0)` is the north-west corner of the mercator world and\n * `MercatorCoordinate(1, 1, 0)` is the south-east corner. If you are familiar with\n * [vector tiles](https://github.com/mapbox/vector-tile-spec) it may be helpful to think\n * of the coordinate space as the `0/0/0` tile with an extent of `1`.\n *\n * The `z` dimension of `MercatorCoordinate` is conformal. A cube in the mercator coordinate space would be rendered as a cube.\n *\n * @param {number} x The x component of the position.\n * @param {number} y The y component of the position.\n * @param {number} z The z component of the position.\n * @example\n * const nullIsland = new mapboxgl.MercatorCoordinate(0.5, 0.5, 0);\n *\n * @see [Example: Add a custom style layer](https://www.mapbox.com/mapbox-gl-js/example/custom-style-layer/)\n */\nclass MercatorCoordinate {\n x: number;\n y: number;\n z: number;\n\n constructor(x: number, y: number, z: number = 0) {\n this.x = +x;\n this.y = +y;\n this.z = +z;\n }\n\n /**\n * Project a `LngLat` to a `MercatorCoordinate`.\n *\n * @param {LngLatLike} lngLatLike The location to project.\n * @param {number} altitude The altitude in meters of the position.\n * @returns {MercatorCoordinate} The projected mercator coordinate.\n * @example\n * const coord = mapboxgl.MercatorCoordinate.fromLngLat({lng: 0, lat: 0}, 0);\n * console.log(coord); // MercatorCoordinate(0.5, 0.5, 0)\n */\n static fromLngLat(lngLatLike: LngLatLike, altitude: number = 0): MercatorCoordinate {\n const lngLat = LngLat.convert(lngLatLike);\n\n return new MercatorCoordinate(\n mercatorXfromLng(lngLat.lng),\n mercatorYfromLat(lngLat.lat),\n mercatorZfromAltitude(altitude, lngLat.lat));\n }\n\n /**\n * Returns the `LngLat` for the coordinate.\n *\n * @returns {LngLat} The `LngLat` object.\n * @example\n * const coord = new mapboxgl.MercatorCoordinate(0.5, 0.5, 0);\n * const lngLat = coord.toLngLat(); // LngLat(0, 0)\n */\n toLngLat(): LngLat {\n return new LngLat(\n lngFromMercatorX(this.x),\n latFromMercatorY(this.y));\n }\n\n /**\n * Returns the altitude in meters of the coordinate.\n *\n * @returns {number} The altitude in meters.\n * @example\n * const coord = new mapboxgl.MercatorCoordinate(0, 0, 0.02);\n * coord.toAltitude(); // 6914.281956295339\n */\n toAltitude(): number {\n return altitudeFromMercatorZ(this.z, this.y);\n }\n\n /**\n * Returns the distance of 1 meter in `MercatorCoordinate` units at this latitude.\n *\n * For coordinates in real world units using meters, this naturally provides the scale\n * to transform into `MercatorCoordinate`s.\n *\n * @returns {number} Distance of 1 meter in `MercatorCoordinate` units.\n * @example\n * // Calculate a new MercatorCoordinate that is 150 meters west of the other coord.\n * const coord = new mapboxgl.MercatorCoordinate(0.5, 0.25, 0);\n * const offsetInMeters = 150;\n * const offsetInMercatorCoordinateUnits = offsetInMeters * coord.meterInMercatorCoordinateUnits();\n * const westCoord = new mapboxgl.MercatorCoordinate(coord.x - offsetInMercatorCoordinateUnits, coord.y, coord.z);\n */\n meterInMercatorCoordinateUnits(): number {\n // 1 meter / circumference at equator in meters * Mercator projection scale factor at this latitude\n return 1 / earthCircumference * mercatorScale(latFromMercatorY(this.y));\n }\n\n}\n\nexport default MercatorCoordinate;\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nfunction pointToLineDist(px, py, ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return Math.abs((ay - py) * dx - (ax - px) * dy) / Math.hypot(dx, dy);\n}\n\nfunction addResampled(resampled, mx0, my0, mx2, my2, start, end, reproject, tolerance) {\n const mx1 = (mx0 + mx2) / 2;\n const my1 = (my0 + my2) / 2;\n const mid = new Point(mx1, my1);\n reproject(mid);\n const err = pointToLineDist(mid.x, mid.y, start.x, start.y, end.x, end.y);\n\n // if reprojected midPoint is too far from geometric midpoint, recurse into two halves\n if (err >= tolerance) {\n // we're very unlikely to hit max call stack exceeded here,\n // but we might want to safeguard against it in the future\n addResampled(resampled, mx0, my0, mx1, my1, start, mid, reproject, tolerance);\n addResampled(resampled, mx1, my1, mx2, my2, mid, end, reproject, tolerance);\n\n } else { // otherwise, just add the point\n resampled.push(end);\n }\n}\n\n// reproject and resample a line, adding point where necessary for lines that become curves;\n// note that this operation is mutable (modifying original points) for performance\nexport default function resample(line: Array<Point>, reproject: (Point) => Point, tolerance: number): Array<Point> {\n let prev = line[0];\n let mx0 = prev.x;\n let my0 = prev.y;\n reproject(prev);\n const resampled = [prev];\n\n for (let i = 1; i < line.length; i++) {\n const point = line[i];\n const {x, y} = point;\n reproject(point);\n addResampled(resampled, mx0, my0, x, y, prev, point, reproject, tolerance);\n mx0 = x;\n my0 = y;\n prev = point;\n }\n\n return resampled;\n}\n\nfunction addResampledPred(resampled: Point[], a: Point, b: Point, reproject, pred) {\n const split = pred(a, b);\n\n // if the predicate condition is met, recurse into two halves\n if (split) {\n const mid = a.add(b).mult(0.5);\n reproject(mid);\n\n addResampledPred(resampled, a, mid, reproject, pred);\n addResampledPred(resampled, mid, b, reproject, pred);\n\n } else {\n resampled.push(b);\n }\n}\n\nexport function resamplePred(line: Point[], reproject: (Point) => Point, predicate: (Point, Point) => boolean): Point[] {\n let prev = line[0];\n reproject(prev);\n const resampled = [prev];\n\n for (let i = 1; i < line.length; i++) {\n const point = line[i];\n reproject(point);\n addResampledPred(resampled, prev, point, reproject, predicate);\n prev = point;\n }\n\n return resampled;\n}\n","// @flow\n\nimport {warnOnce, clamp} from '../util/util.js';\n\nimport EXTENT from './extent.js';\nimport {lngFromMercatorX, latFromMercatorY} from '../geo/mercator_coordinate.js';\nimport resample from '../geo/projection/resample.js';\nimport Point from '@mapbox/point-geometry';\n\nimport type {CanonicalTileID} from '../source/tile_id.js';\nimport type {TileTransform} from '../geo/projection/tile_transform.js';\n\n// These bounds define the minimum and maximum supported coordinate values.\n// While visible coordinates are within [0, EXTENT], tiles may theoretically\n// contain coordinates within [-Infinity, Infinity]. Our range is limited by the\n// number of bits used to represent the coordinate.\nconst BITS = 15;\nconst MAX = Math.pow(2, BITS - 1) - 1;\nconst MIN = -MAX - 1;\n\nfunction preparePoint(point: Point, scale: number) {\n const x = Math.round(point.x * scale);\n const y = Math.round(point.y * scale);\n point.x = clamp(x, MIN, MAX);\n point.y = clamp(y, MIN, MAX);\n if (x < point.x || x > point.x + 1 || y < point.y || y > point.y + 1) {\n // warn when exceeding allowed extent except for the 1-px-off case\n // https://github.com/mapbox/mapbox-gl-js/issues/8992\n warnOnce('Geometry exceeds allowed extent, reduce your vector tile buffer size');\n }\n return point;\n}\n\n// a subset of VectorTileGeometry\ntype FeatureWithGeometry = {\n extent: number;\n type: 1 | 2 | 3;\n loadGeometry(): Array<Array<Point>>;\n}\n\n/**\n * Loads a geometry from a VectorTileFeature and scales it to the common extent\n * used internally.\n * @param {VectorTileFeature} feature\n * @private\n */\nexport default function loadGeometry(feature: FeatureWithGeometry, canonical?: CanonicalTileID, tileTransform?: TileTransform): Array<Array<Point>> {\n const geometry = feature.loadGeometry();\n const extent = feature.extent;\n const extentScale = EXTENT / extent;\n\n if (canonical && tileTransform && tileTransform.projection.isReprojectedInTileSpace) {\n const z2 = 1 << canonical.z;\n const {scale, x, y, projection} = tileTransform;\n\n const reproject = (p) => {\n const lng = lngFromMercatorX((canonical.x + p.x / extent) / z2);\n const lat = latFromMercatorY((canonical.y + p.y / extent) / z2);\n const p2 = projection.project(lng, lat);\n p.x = (p2.x * scale - x) * extent;\n p.y = (p2.y * scale - y) * extent;\n };\n\n for (let i = 0; i < geometry.length; i++) {\n if (feature.type !== 1) {\n geometry[i] = resample(geometry[i], reproject, 1); // resample lines and polygons\n\n } else { // points\n const line = [];\n for (const p of geometry[i]) {\n // filter out point features outside tile boundaries now; it'd be harder to do later\n // when the coords are reprojected and no longer axis-aligned; ideally this would happen\n // or not depending on how the geometry is used, but we forego the complexity for now\n if (p.x < 0 || p.x >= extent || p.y < 0 || p.y >= extent) continue;\n reproject(p);\n line.push(p);\n }\n geometry[i] = line;\n }\n }\n }\n\n for (const line of geometry) {\n for (const p of line) {\n preparePoint(p, extentScale);\n }\n }\n\n return geometry;\n}\n","// @flow\n\nimport loadGeometry from './load_geometry.js';\n\nimport type Point from '@mapbox/point-geometry';\n\ntype EvaluationFeature = {\n +type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | 'Polygon' | 'MultiPolygon',\n +id?: any,\n +properties: {[_: string]: any},\n +patterns?: {[_: string]: {\"min\": string, \"mid\": string, \"max\": string}},\n geometry: Array<Array<Point>>\n};\n\n/**\n * Construct a new feature based on a VectorTileFeature for expression evaluation, the geometry of which\n * will be loaded based on necessity.\n * @param {VectorTileFeature} feature\n * @param {boolean} needGeometry\n * @private\n */\nexport default function toEvaluationFeature(feature: VectorTileFeature, needGeometry: boolean): EvaluationFeature {\n return {type: feature.type,\n id: feature.id,\n properties:feature.properties,\n geometry: needGeometry ? loadGeometry(feature) : []};\n}\n","// @flow\n\nimport {CircleLayoutArray, CircleGlobeExtArray} from '../array_types.js';\n\nimport {circleAttributes, circleGlobeAttributesExt} from './circle_attributes.js';\nimport SegmentVector from '../segment.js';\nimport {ProgramConfigurationSet} from '../program_configuration.js';\nimport {TriangleIndexArray} from '../index_array_type.js';\nimport loadGeometry from '../load_geometry.js';\nimport toEvaluationFeature from '../evaluation_feature.js';\nimport EXTENT from '../extent.js';\nimport {register} from '../../util/web_worker_transfer.js';\nimport EvaluationParameters from '../../style/evaluation_parameters.js';\n\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type {\n Bucket,\n BucketParameters,\n BucketFeature,\n IndexedFeature,\n PopulateParameters\n} from '../bucket.js';\nimport type CircleStyleLayer from '../../style/style_layer/circle_style_layer.js';\nimport type HeatmapStyleLayer from '../../style/style_layer/heatmap_style_layer.js';\nimport type Context from '../../gl/context.js';\nimport type IndexBuffer from '../../gl/index_buffer.js';\nimport type VertexBuffer from '../../gl/vertex_buffer.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {FeatureStates} from '../../source/source_state.js';\nimport type {SpritePositions} from '../../util/image.js';\nimport type {TileTransform} from '../../geo/projection/tile_transform.js';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type Projection from '../../geo/projection/projection.js';\nimport type {Vec3} from 'gl-matrix';\n\nfunction addCircleVertex(layoutVertexArray, x, y, extrudeX, extrudeY) {\n layoutVertexArray.emplaceBack(\n (x * 2) + ((extrudeX + 1) / 2),\n (y * 2) + ((extrudeY + 1) / 2));\n}\n\nfunction addGlobeExtVertex(vertexArray: CircleGlobeExtArray, pos: {x: number, y: number, z: number}, normal: Vec3) {\n const encode = 1 << 14;\n vertexArray.emplaceBack(\n pos.x, pos.y, pos.z,\n normal[0] * encode, normal[1] * encode, normal[2] * encode);\n}\n\n/**\n * Circles are represented by two triangles.\n *\n * Each corner has a pos that is the center of the circle and an extrusion\n * vector that is where it points.\n * @private\n */\nclass CircleBucket<Layer: CircleStyleLayer | HeatmapStyleLayer> implements Bucket {\n index: number;\n zoom: number;\n overscaling: number;\n layerIds: Array<string>;\n layers: Array<Layer>;\n stateDependentLayers: Array<Layer>;\n stateDependentLayerIds: Array<string>;\n\n layoutVertexArray: CircleLayoutArray;\n layoutVertexBuffer: VertexBuffer;\n globeExtVertexArray: ?CircleGlobeExtArray;\n globeExtVertexBuffer: ?VertexBuffer;\n\n indexArray: TriangleIndexArray;\n indexBuffer: IndexBuffer;\n\n hasPattern: boolean;\n programConfigurations: ProgramConfigurationSet<Layer>;\n segments: SegmentVector;\n uploaded: boolean;\n projection: ProjectionSpecification;\n\n constructor(options: BucketParameters<Layer>) {\n this.zoom = options.zoom;\n this.overscaling = options.overscaling;\n this.layers = options.layers;\n this.layerIds = this.layers.map(layer => layer.id);\n this.index = options.index;\n this.hasPattern = false;\n this.projection = options.projection;\n\n this.layoutVertexArray = new CircleLayoutArray();\n this.indexArray = new TriangleIndexArray();\n this.segments = new SegmentVector();\n this.programConfigurations = new ProgramConfigurationSet(options.layers, options.zoom);\n this.stateDependentLayerIds = this.layers.filter((l) => l.isStateDependent()).map((l) => l.id);\n }\n\n populate(features: Array<IndexedFeature>, options: PopulateParameters, canonical: CanonicalTileID, tileTransform: TileTransform) {\n const styleLayer = this.layers[0];\n const bucketFeatures = [];\n let circleSortKey = null;\n\n // Heatmap layers are handled in this bucket and have no evaluated properties, so we check our access\n if (styleLayer.type === 'circle') {\n circleSortKey = ((styleLayer: any): CircleStyleLayer).layout.get('circle-sort-key');\n }\n\n for (const {feature, id, index, sourceLayerIndex} of features) {\n const needGeometry = this.layers[0]._featureFilter.needGeometry;\n const evaluationFeature = toEvaluationFeature(feature, needGeometry);\n\n if (!this.layers[0]._featureFilter.filter(new EvaluationParameters(this.zoom), evaluationFeature, canonical)) continue;\n\n const sortKey = circleSortKey ?\n circleSortKey.evaluate(evaluationFeature, {}, canonical) :\n undefined;\n\n const bucketFeature: BucketFeature = {\n id,\n properties: feature.properties,\n type: feature.type,\n sourceLayerIndex,\n index,\n geometry: needGeometry ? evaluationFeature.geometry : loadGeometry(feature, canonical, tileTransform),\n patterns: {},\n sortKey\n };\n\n bucketFeatures.push(bucketFeature);\n\n }\n\n if (circleSortKey) {\n bucketFeatures.sort((a, b) => {\n // a.sortKey is always a number when in use\n return ((a.sortKey: any): number) - ((b.sortKey: any): number);\n });\n }\n\n let globeProjection: ?Projection = null;\n\n if (tileTransform.projection.name === 'globe') {\n // Extend vertex attributes if the globe projection is enabled\n this.globeExtVertexArray = new CircleGlobeExtArray();\n globeProjection = tileTransform.projection;\n }\n\n for (const bucketFeature of bucketFeatures) {\n const {geometry, index, sourceLayerIndex} = bucketFeature;\n const feature = features[index].feature;\n\n this.addFeature(bucketFeature, geometry, index, options.availableImages, canonical, globeProjection);\n options.featureIndex.insert(feature, geometry, index, sourceLayerIndex, this.index);\n }\n }\n\n update(states: FeatureStates, vtLayer: VectorTileLayer, availableImages: Array<string>, imagePositions: SpritePositions) {\n if (!this.stateDependentLayers.length) return;\n this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, availableImages, imagePositions);\n }\n\n isEmpty(): boolean {\n return this.layoutVertexArray.length === 0;\n }\n\n uploadPending(): boolean {\n return !this.uploaded || this.programConfigurations.needsUpload;\n }\n\n upload(context: Context) {\n if (!this.uploaded) {\n this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, circleAttributes.members);\n this.indexBuffer = context.createIndexBuffer(this.indexArray);\n\n if (this.globeExtVertexArray) {\n this.globeExtVertexBuffer = context.createVertexBuffer(this.globeExtVertexArray, circleGlobeAttributesExt.members);\n }\n }\n this.programConfigurations.upload(context);\n this.uploaded = true;\n }\n\n destroy() {\n if (!this.layoutVertexBuffer) return;\n this.layoutVertexBuffer.destroy();\n this.indexBuffer.destroy();\n this.programConfigurations.destroy();\n this.segments.destroy();\n if (this.globeExtVertexBuffer) {\n this.globeExtVertexBuffer.destroy();\n }\n }\n\n addFeature(feature: BucketFeature, geometry: Array<Array<Point>>, index: number, availableImages: Array<string>, canonical: CanonicalTileID, projection?: ?Projection) {\n for (const ring of geometry) {\n for (const point of ring) {\n const x = point.x;\n const y = point.y;\n\n // Do not include points that are outside the tile boundaries.\n if (x < 0 || x >= EXTENT || y < 0 || y >= EXTENT) continue;\n\n // this geometry will be of the Point type, and we'll derive\n // two triangles from it.\n //\n // ┌─────────┐\n // │ 3 2 │\n // │ │\n // │ 0 1 │\n // └─────────┘\n\n if (projection) {\n const projectedPoint = projection.projectTilePoint(x, y, canonical);\n const normal = projection.upVector(canonical, x, y);\n const array: any = this.globeExtVertexArray;\n\n addGlobeExtVertex(array, projectedPoint, normal);\n addGlobeExtVertex(array, projectedPoint, normal);\n addGlobeExtVertex(array, projectedPoint, normal);\n addGlobeExtVertex(array, projectedPoint, normal);\n }\n const segment = this.segments.prepareSegment(4, this.layoutVertexArray, this.indexArray, feature.sortKey);\n const index = segment.vertexLength;\n\n addCircleVertex(this.layoutVertexArray, x, y, -1, -1);\n addCircleVertex(this.layoutVertexArray, x, y, 1, -1);\n addCircleVertex(this.layoutVertexArray, x, y, 1, 1);\n addCircleVertex(this.layoutVertexArray, x, y, -1, 1);\n\n this.indexArray.emplaceBack(index, index + 1, index + 2);\n this.indexArray.emplaceBack(index, index + 2, index + 3);\n\n segment.vertexLength += 4;\n segment.primitiveLength += 2;\n }\n }\n\n this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, feature, index, {}, availableImages, canonical);\n }\n}\n\nregister(CircleBucket, 'CircleBucket', {omit: ['layers']});\n\nexport default CircleBucket;\n","// @flow\n\nimport {isCounterClockwise} from './util.js';\n\nimport Point from '@mapbox/point-geometry';\n\nexport {polygonIntersectsBufferedPoint, polygonIntersectsMultiPolygon, polygonIntersectsBufferedMultiLine, polygonIntersectsPolygon, distToSegmentSquared, polygonIntersectsBox, polygonContainsPoint};\n\ntype Line = Array<Point>;\ntype MultiLine = Array<Line>;\ntype Ring = Array<Point>;\ntype Polygon = Array<Point>;\ntype MultiPolygon = Array<Polygon>;\n\nfunction polygonIntersectsPolygon(polygonA: Polygon, polygonB: Polygon): boolean {\n for (let i = 0; i < polygonA.length; i++) {\n if (polygonContainsPoint(polygonB, polygonA[i])) return true;\n }\n\n for (let i = 0; i < polygonB.length; i++) {\n if (polygonContainsPoint(polygonA, polygonB[i])) return true;\n }\n\n if (lineIntersectsLine(polygonA, polygonB)) return true;\n\n return false;\n}\n\nfunction polygonIntersectsBufferedPoint(polygon: Polygon, point: Point, radius: number): boolean {\n if (polygonContainsPoint(polygon, point)) return true;\n if (pointIntersectsBufferedLine(point, polygon, radius)) return true;\n return false;\n}\n\nfunction polygonIntersectsMultiPolygon(polygon: Polygon, multiPolygon: MultiPolygon): boolean {\n\n if (polygon.length === 1) {\n return multiPolygonContainsPoint(multiPolygon, polygon[0]);\n }\n\n for (let m = 0; m < multiPolygon.length; m++) {\n const ring = multiPolygon[m];\n for (let n = 0; n < ring.length; n++) {\n if (polygonContainsPoint(polygon, ring[n])) return true;\n }\n }\n\n for (let i = 0; i < polygon.length; i++) {\n if (multiPolygonContainsPoint(multiPolygon, polygon[i])) return true;\n }\n\n for (let k = 0; k < multiPolygon.length; k++) {\n if (lineIntersectsLine(polygon, multiPolygon[k])) return true;\n }\n\n return false;\n}\n\nfunction polygonIntersectsBufferedMultiLine(polygon: Polygon, multiLine: MultiLine, radius: number): boolean {\n for (let i = 0; i < multiLine.length; i++) {\n const line = multiLine[i];\n\n if (polygon.length >= 3) {\n for (let k = 0; k < line.length; k++) {\n if (polygonContainsPoint(polygon, line[k])) return true;\n }\n }\n\n if (lineIntersectsBufferedLine(polygon, line, radius)) return true;\n }\n return false;\n}\n\nfunction lineIntersectsBufferedLine(lineA: Line, lineB: Line, radius: number) {\n\n if (lineA.length > 1) {\n if (lineIntersectsLine(lineA, lineB)) return true;\n\n // Check whether any point in either line is within radius of the other line\n for (let j = 0; j < lineB.length; j++) {\n if (pointIntersectsBufferedLine(lineB[j], lineA, radius)) return true;\n }\n }\n\n for (let k = 0; k < lineA.length; k++) {\n if (pointIntersectsBufferedLine(lineA[k], lineB, radius)) return true;\n }\n\n return false;\n}\n\nfunction lineIntersectsLine(lineA: Line, lineB: Line) {\n if (lineA.length === 0 || lineB.length === 0) return false;\n for (let i = 0; i < lineA.length - 1; i++) {\n const a0 = lineA[i];\n const a1 = lineA[i + 1];\n for (let j = 0; j < lineB.length - 1; j++) {\n const b0 = lineB[j];\n const b1 = lineB[j + 1];\n if (lineSegmentIntersectsLineSegment(a0, a1, b0, b1)) return true;\n }\n }\n return false;\n}\n\nfunction lineSegmentIntersectsLineSegment(a0: Point, a1: Point, b0: Point, b1: Point) {\n return isCounterClockwise(a0, b0, b1) !== isCounterClockwise(a1, b0, b1) &&\n isCounterClockwise(a0, a1, b0) !== isCounterClockwise(a0, a1, b1);\n}\n\nfunction pointIntersectsBufferedLine(p: Point, line: Line, radius: number) {\n const radiusSquared = radius * radius;\n\n if (line.length === 1) return p.distSqr(line[0]) < radiusSquared;\n\n for (let i = 1; i < line.length; i++) {\n // Find line segments that have a distance <= radius^2 to p\n // In that case, we treat the line as \"containing point p\".\n const v = line[i - 1], w = line[i];\n if (distToSegmentSquared(p, v, w) < radiusSquared) return true;\n }\n return false;\n}\n\n// Code from http://stackoverflow.com/a/1501725/331379.\nfunction distToSegmentSquared(p: Point, v: Point, w: Point): number {\n const l2 = v.distSqr(w);\n if (l2 === 0) return p.distSqr(v);\n const t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n if (t < 0) return p.distSqr(v);\n if (t > 1) return p.distSqr(w);\n return p.distSqr(w.sub(v)._mult(t)._add(v));\n}\n\n// point in polygon ray casting algorithm\nfunction multiPolygonContainsPoint(rings: Array<Ring>, p: Point) {\n let c = false,\n ring, p1, p2;\n\n for (let k = 0; k < rings.length; k++) {\n ring = rings[k];\n for (let i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n if (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) {\n c = !c;\n }\n }\n }\n return c;\n}\n\nfunction polygonContainsPoint(ring: Ring, p: Point): boolean {\n let c = false;\n for (let i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n const p1 = ring[i];\n const p2 = ring[j];\n if (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) {\n c = !c;\n }\n }\n return c;\n}\n\nfunction polygonIntersectsBox(ring: Ring, boxX1: number, boxY1: number, boxX2: number, boxY2: number): boolean {\n for (const p of ring) {\n if (boxX1 <= p.x &&\n boxY1 <= p.y &&\n boxX2 >= p.x &&\n boxY2 >= p.y) return true;\n }\n\n const corners = [\n new Point(boxX1, boxY1),\n new Point(boxX1, boxY2),\n new Point(boxX2, boxY2),\n new Point(boxX2, boxY1)];\n\n if (ring.length > 2) {\n for (const corner of corners) {\n if (polygonContainsPoint(ring, corner)) return true;\n }\n }\n\n for (let i = 0; i < ring.length - 1; i++) {\n const p1 = ring[i];\n const p2 = ring[i + 1];\n if (edgeIntersectsBox(p1, p2, corners)) return true;\n }\n\n return false;\n}\n\nfunction edgeIntersectsBox(e1: Point, e2: Point, corners: Array<Point>) {\n const tl = corners[0];\n const br = corners[2];\n // the edge and box do not intersect in either the x or y dimensions\n if (((e1.x < tl.x) && (e2.x < tl.x)) ||\n ((e1.x > br.x) && (e2.x > br.x)) ||\n ((e1.y < tl.y) && (e2.y < tl.y)) ||\n ((e1.y > br.y) && (e2.y > br.y))) return false;\n\n // check if all corners of the box are on the same side of the edge\n const dir = isCounterClockwise(e1, e2, corners[0]);\n return dir !== isCounterClockwise(e1, e2, corners[1]) ||\n dir !== isCounterClockwise(e1, e2, corners[2]) ||\n dir !== isCounterClockwise(e1, e2, corners[3]);\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nimport type {PossiblyEvaluatedPropertyValue} from './properties.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type CircleBucket from '../data/bucket/circle_bucket.js';\nimport type LineBucket from '../data/bucket/line_bucket.js';\n\nexport function getMaximumPaintValue(property: string, layer: StyleLayer, bucket: CircleBucket<*> | LineBucket): number {\n const value = ((layer.paint: any).get(property): PossiblyEvaluatedPropertyValue<any>).value;\n if (value.kind === 'constant') {\n return value.value;\n } else {\n return bucket.programConfigurations.get(layer.id).getMaxValue(property);\n }\n}\n\nexport function translateDistance(translate: [number, number]): number {\n return Math.sqrt(translate[0] * translate[0] + translate[1] * translate[1]);\n}\n\nexport function translate(queryGeometry: Array<Point>,\n translate: [number, number],\n translateAnchor: 'viewport' | 'map',\n bearing: number,\n pixelsToTileUnits: number): Array<Point> {\n if (!translate[0] && !translate[1]) {\n return queryGeometry;\n }\n const pt = Point.convert(translate)._mult(pixelsToTileUnits);\n\n if (translateAnchor === \"viewport\") {\n pt._rotate(-bearing);\n }\n\n const translated = [];\n for (let i = 0; i < queryGeometry.length; i++) {\n const point = queryGeometry[i];\n translated.push(point.sub(pt));\n }\n return translated;\n}\n\nexport function tilespaceTranslate(translate: [number, number],\n translateAnchor: 'viewport' | 'map',\n bearing: number,\n pixelsToTileUnits: number): Point {\n const pt = Point.convert(translate)._mult(pixelsToTileUnits);\n\n if (translateAnchor === \"viewport\") {\n pt._rotate(-bearing);\n }\n\n return pt;\n}\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n CrossFadedDataDrivenProperty,\n CrossFadedProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\nexport type LayoutProps = {|\n \"circle-sort-key\": DataDrivenProperty<number>,\n|};\n\nconst layout: Properties<LayoutProps> = new Properties({\n \"circle-sort-key\": new DataDrivenProperty(styleSpec[\"layout_circle\"][\"circle-sort-key\"]),\n});\n\nexport type PaintProps = {|\n \"circle-radius\": DataDrivenProperty<number>,\n \"circle-color\": DataDrivenProperty<Color>,\n \"circle-blur\": DataDrivenProperty<number>,\n \"circle-opacity\": DataDrivenProperty<number>,\n \"circle-translate\": DataConstantProperty<[number, number]>,\n \"circle-translate-anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n \"circle-pitch-scale\": DataConstantProperty<\"map\" | \"viewport\">,\n \"circle-pitch-alignment\": DataConstantProperty<\"map\" | \"viewport\">,\n \"circle-stroke-width\": DataDrivenProperty<number>,\n \"circle-stroke-color\": DataDrivenProperty<Color>,\n \"circle-stroke-opacity\": DataDrivenProperty<number>,\n|};\n\nconst paint: Properties<PaintProps> = new Properties({\n \"circle-radius\": new DataDrivenProperty(styleSpec[\"paint_circle\"][\"circle-radius\"]),\n \"circle-color\": new DataDrivenProperty(styleSpec[\"paint_circle\"][\"circle-color\"]),\n \"circle-blur\": new DataDrivenProperty(styleSpec[\"paint_circle\"][\"circle-blur\"]),\n \"circle-opacity\": new DataDrivenProperty(styleSpec[\"paint_circle\"][\"circle-opacity\"]),\n \"circle-translate\": new DataConstantProperty(styleSpec[\"paint_circle\"][\"circle-translate\"]),\n \"circle-translate-anchor\": new DataConstantProperty(styleSpec[\"paint_circle\"][\"circle-translate-anchor\"]),\n \"circle-pitch-scale\": new DataConstantProperty(styleSpec[\"paint_circle\"][\"circle-pitch-scale\"]),\n \"circle-pitch-alignment\": new DataConstantProperty(styleSpec[\"paint_circle\"][\"circle-pitch-alignment\"]),\n \"circle-stroke-width\": new DataDrivenProperty(styleSpec[\"paint_circle\"][\"circle-stroke-width\"]),\n \"circle-stroke-color\": new DataDrivenProperty(styleSpec[\"paint_circle\"][\"circle-stroke-color\"]),\n \"circle-stroke-opacity\": new DataDrivenProperty(styleSpec[\"paint_circle\"][\"circle-stroke-opacity\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint, layout }: $Exact<{\n paint: Properties<PaintProps>, layout: Properties<LayoutProps>\n}>);\n","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(9);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nexport function translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nexport function normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nexport var perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nexport var ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\nimport * as mat3 from \"./mat3.js\";\nimport * as vec3 from \"./vec3.js\";\nimport * as vec4 from \"./vec4.js\";\n/**\n * Quaternion\n * @module quat\n */\n\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n out[3] = 1;\n return out;\n}\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyVec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\n\nexport function setAxisAngle(out, axis, rad) {\n rad = rad * 0.5;\n var s = Math.sin(rad);\n out[0] = s * axis[0];\n out[1] = s * axis[1];\n out[2] = s * axis[2];\n out[3] = Math.cos(rad);\n return out;\n}\n/**\n * Gets the rotation axis and angle for a given\n * quaternion. If a quaternion is created with\n * setAxisAngle, this method will return the same\n * values as providied in the original parameter list\n * OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n * angle -90 is the same as the quaternion formed by\n * [0, 0, 1] and 270. This method favors the latter.\n * @param {vec3} out_axis Vector receiving the axis of rotation\n * @param {ReadonlyQuat} q Quaternion to be decomposed\n * @return {Number} Angle, in radians, of the rotation\n */\n\nexport function getAxisAngle(out_axis, q) {\n var rad = Math.acos(q[3]) * 2.0;\n var s = Math.sin(rad / 2.0);\n\n if (s > glMatrix.EPSILON) {\n out_axis[0] = q[0] / s;\n out_axis[1] = q[1] / s;\n out_axis[2] = q[2] / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n out_axis[0] = 1;\n out_axis[1] = 0;\n out_axis[2] = 0;\n }\n\n return rad;\n}\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param {ReadonlyQuat} a Origin unit quaternion\n * @param {ReadonlyQuat} b Destination unit quaternion\n * @return {Number} Angle, in radians, between the two quaternions\n */\n\nexport function getAngle(a, b) {\n var dotproduct = dot(a, b);\n return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n */\n\nexport function multiply(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateX(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + aw * bx;\n out[1] = ay * bw + az * bx;\n out[2] = az * bw - ay * bx;\n out[3] = aw * bw - ax * bx;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateY(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var by = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw - az * by;\n out[1] = ay * bw + aw * by;\n out[2] = az * bw + ax * by;\n out[3] = aw * bw - ay * by;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateZ(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bz = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + ay * bz;\n out[1] = ay * bw - ax * bz;\n out[2] = az * bw + aw * bz;\n out[3] = aw * bw - az * bz;\n return out;\n}\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate W component of\n * @returns {quat} out\n */\n\nexport function calculateW(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n return out;\n}\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function exp(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var et = Math.exp(w);\n var s = r > 0 ? et * Math.sin(r) / r : 0;\n out[0] = x * s;\n out[1] = y * s;\n out[2] = z * s;\n out[3] = et * Math.cos(r);\n return out;\n}\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function ln(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var t = r > 0 ? Math.atan2(r, w) / r : 0;\n out[0] = x * t;\n out[1] = y * t;\n out[2] = z * t;\n out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n return out;\n}\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @param {Number} b amount to scale the quaternion by\n * @returns {quat} out\n */\n\nexport function pow(out, a, b) {\n ln(out, a);\n scale(out, out, b);\n exp(out, out);\n return out;\n}\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport function slerp(out, a, b, t) {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n var omega, cosom, sinom, scale0, scale1; // calc cosine\n\n cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n } // calculate coefficients\n\n\n if (1.0 - cosom > glMatrix.EPSILON) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n } // calculate final values\n\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n}\n/**\n * Generates a random unit quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function random(out) {\n // Implementation of http://planning.cs.uiuc.edu/node198.html\n // TODO: Calling random 3 times is probably not the fastest solution\n var u1 = glMatrix.RANDOM();\n var u2 = glMatrix.RANDOM();\n var u3 = glMatrix.RANDOM();\n var sqrt1MinusU1 = Math.sqrt(1 - u1);\n var sqrtU1 = Math.sqrt(u1);\n out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n return out;\n}\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate inverse of\n * @returns {quat} out\n */\n\nexport function invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n out[0] = -a0 * invDot;\n out[1] = -a1 * invDot;\n out[2] = -a2 * invDot;\n out[3] = a3 * invDot;\n return out;\n}\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate conjugate of\n * @returns {quat} out\n */\n\nexport function conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyMat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\n\nexport function fromMat3(out, m) {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n var fTrace = m[0] + m[4] + m[8];\n var fRoot;\n\n if (fTrace > 0.0) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\n\n out[3] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot; // 1/(4w)\n\n out[0] = (m[5] - m[7]) * fRoot;\n out[1] = (m[6] - m[2]) * fRoot;\n out[2] = (m[1] - m[3]) * fRoot;\n } else {\n // |w| <= 1/2\n var i = 0;\n if (m[4] > m[0]) i = 1;\n if (m[8] > m[i * 3 + i]) i = 2;\n var j = (i + 1) % 3;\n var k = (i + 2) % 3;\n fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n out[i] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot;\n out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n }\n\n return out;\n}\n/**\n * Creates a quaternion from the given euler angle x, y, z.\n *\n * @param {quat} out the receiving quaternion\n * @param {x} Angle to rotate around X axis in degrees.\n * @param {y} Angle to rotate around Y axis in degrees.\n * @param {z} Angle to rotate around Z axis in degrees.\n * @returns {quat} out\n * @function\n */\n\nexport function fromEuler(out, x, y, z) {\n var halfToRad = 0.5 * Math.PI / 180.0;\n x *= halfToRad;\n y *= halfToRad;\n z *= halfToRad;\n var sx = Math.sin(x);\n var cx = Math.cos(x);\n var sy = Math.sin(y);\n var cy = Math.cos(y);\n var sz = Math.sin(z);\n var cz = Math.cos(z);\n out[0] = sx * cy * cz - cx * sy * sz;\n out[1] = cx * sy * cz + sx * cy * sz;\n out[2] = cx * cy * sz - sx * sy * cz;\n out[3] = cx * cy * cz + sx * sy * sz;\n return out;\n}\n/**\n * Returns a string representation of a quatenion\n *\n * @param {ReadonlyQuat} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var clone = vec4.clone;\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var fromValues = vec4.fromValues;\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the source quaternion\n * @returns {quat} out\n * @function\n */\n\nexport var copy = vec4.copy;\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\n\nexport var set = vec4.set;\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n * @function\n */\n\nexport var add = vec4.add;\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {ReadonlyQuat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\n\nexport var scale = vec4.scale;\n/**\n * Calculates the dot product of two quat's\n *\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nexport var dot = vec4.dot;\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n * @function\n */\n\nexport var lerp = vec4.lerp;\n/**\n * Calculates the length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport var length = vec4.length;\n/**\n * Alias for {@link quat.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Calculates the squared length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nexport var squaredLength = vec4.squaredLength;\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\n\nexport var normalize = vec4.normalize;\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat} a The first quaternion.\n * @param {ReadonlyQuat} b The second quaternion.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var exactEquals = vec4.exactEquals;\n/**\n * Returns whether or not the quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat} a The first vector.\n * @param {ReadonlyQuat} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var equals = vec4.equals;\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {ReadonlyVec3} a the initial vector\n * @param {ReadonlyVec3} b the destination vector\n * @returns {quat} out\n */\n\nexport var rotationTo = function () {\n var tmpvec3 = vec3.create();\n var xUnitVec3 = vec3.fromValues(1, 0, 0);\n var yUnitVec3 = vec3.fromValues(0, 1, 0);\n return function (out, a, b) {\n var dot = vec3.dot(a, b);\n\n if (dot < -0.999999) {\n vec3.cross(tmpvec3, xUnitVec3, a);\n if (vec3.len(tmpvec3) < 0.000001) vec3.cross(tmpvec3, yUnitVec3, a);\n vec3.normalize(tmpvec3, tmpvec3);\n setAxisAngle(out, tmpvec3, Math.PI);\n return out;\n } else if (dot > 0.999999) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n } else {\n vec3.cross(tmpvec3, a, b);\n out[0] = tmpvec3[0];\n out[1] = tmpvec3[1];\n out[2] = tmpvec3[2];\n out[3] = 1 + dot;\n return normalize(out, out);\n }\n };\n}();\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {ReadonlyQuat} c the third operand\n * @param {ReadonlyQuat} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport var sqlerp = function () {\n var temp1 = create();\n var temp2 = create();\n return function (out, a, b, c, d, t) {\n slerp(temp1, a, d, t);\n slerp(temp2, b, c, t);\n slerp(out, temp1, temp2, 2 * t * (1 - t));\n return out;\n };\n}();\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {ReadonlyVec3} view the vector representing the viewing direction\n * @param {ReadonlyVec3} right the vector representing the local \"right\" direction\n * @param {ReadonlyVec3} up the vector representing the local \"up\" direction\n * @returns {quat} out\n */\n\nexport var setAxes = function () {\n var matr = mat3.create();\n return function (out, view, right, up) {\n matr[0] = right[0];\n matr[3] = right[1];\n matr[6] = right[2];\n matr[1] = up[0];\n matr[4] = up[1];\n matr[7] = up[2];\n matr[2] = -view[0];\n matr[5] = -view[1];\n matr[8] = -view[2];\n return normalize(out, fromMat3(out, matr));\n };\n}();","// @flow\n\nimport {vec3, vec4} from 'gl-matrix';\nimport assert from 'assert';\n\nimport type {Vec3} from 'gl-matrix';\n\nclass Ray {\n pos: Vec3;\n dir: Vec3;\n\n constructor(pos_: Vec3, dir_: Vec3) {\n this.pos = pos_;\n this.dir = dir_;\n }\n\n intersectsPlane(pt: Vec3, normal: Vec3, out: Vec3): boolean {\n const D = vec3.dot(normal, this.dir);\n\n // ray is parallel to plane, so it misses\n if (Math.abs(D) < 1e-6) { return false; }\n\n const t = (\n (pt[0] - this.pos[0]) * normal[0] +\n (pt[1] - this.pos[1]) * normal[1] +\n (pt[2] - this.pos[2]) * normal[2]) / D;\n\n out[0] = this.pos[0] + this.dir[0] * t;\n out[1] = this.pos[1] + this.dir[1] * t;\n out[2] = this.pos[2] + this.dir[2] * t;\n\n return true;\n }\n\n closestPointOnSphere(center: Vec3, r: number, out: Vec3): boolean {\n assert(vec3.squaredLength(this.dir) > 0.0 && r >= 0.0);\n\n if (vec3.equals(this.pos, center) || r === 0.0) {\n out[0] = out[1] = out[2] = 0;\n return false;\n }\n\n const [dx, dy, dz] = this.dir;\n\n const px = this.pos[0] - center[0];\n const py = this.pos[1] - center[1];\n const pz = this.pos[2] - center[2];\n\n const a = dx * dx + dy * dy + dz * dz;\n const b = 2.0 * (px * dx + py * dy + pz * dz);\n const c = (px * px + py * py + pz * pz) - r * r;\n const d = b * b - 4 * a * c;\n\n if (d < 0.0) {\n // No intersection, find distance between closest points\n const t = Math.max(-b / 2, 0.0);\n const gx = px + dx * t; // point to globe\n const gy = py + dy * t;\n const gz = pz + dz * t;\n const glen = Math.hypot(gx, gy, gz);\n out[0] = gx * r / glen;\n out[1] = gy * r / glen;\n out[2] = gz * r / glen;\n return false;\n\n } else {\n assert(a > 0.0);\n const t = (-b - Math.sqrt(d)) / (2.0 * a);\n\n if (t < 0.0) {\n // Ray is pointing away from the sphere\n const plen = Math.hypot(px, py, pz);\n out[0] = px * r / plen;\n out[1] = py * r / plen;\n out[2] = pz * r / plen;\n return false;\n\n } else {\n out[0] = px + dx * t;\n out[1] = py + dy * t;\n out[2] = pz + dz * t;\n return true;\n }\n }\n }\n}\n\nclass FrustumCorners {\n TL: [number, number, number];\n TR: [number, number, number];\n BR: [number, number, number];\n BL: [number, number, number];\n horizon: number;\n\n constructor(TL_: [number, number, number], TR_: [number, number, number], BR_: [number, number, number], BL_: [number, number, number], horizon_: number) {\n this.TL = TL_;\n this.TR = TR_;\n this.BR = BR_;\n this.BL = BL_;\n this.horizon = horizon_;\n }\n\n static fromInvProjectionMatrix(invProj: Array<number>, horizonFromTop: number, viewportHeight: number): FrustumCorners {\n const TLClip = [-1, 1, 1];\n const TRClip = [1, 1, 1];\n const BRClip = [1, -1, 1];\n const BLClip = [-1, -1, 1];\n\n const TL = vec3.transformMat4(TLClip, TLClip, invProj);\n const TR = vec3.transformMat4(TRClip, TRClip, invProj);\n const BR = vec3.transformMat4(BRClip, BRClip, invProj);\n const BL = vec3.transformMat4(BLClip, BLClip, invProj);\n\n return new FrustumCorners(TL, TR, BR, BL, horizonFromTop / viewportHeight);\n }\n}\n\nclass Frustum {\n points: Array<Array<number>>;\n planes: Array<Array<number>>;\n\n constructor(points_: Array<Array<number>>, planes_: Array<Array<number>>) {\n this.points = points_;\n this.planes = planes_;\n }\n\n static fromInvProjectionMatrix(invProj: Float64Array, worldSize: number, zoom: number, zInMeters: boolean): Frustum {\n const clipSpaceCorners = [\n [-1, 1, -1, 1],\n [ 1, 1, -1, 1],\n [ 1, -1, -1, 1],\n [-1, -1, -1, 1],\n [-1, 1, 1, 1],\n [ 1, 1, 1, 1],\n [ 1, -1, 1, 1],\n [-1, -1, 1, 1]\n ];\n\n const scale = Math.pow(2, zoom);\n\n // Transform frustum corner points from clip space to tile space\n const frustumCoords = clipSpaceCorners\n .map(v => {\n const s = vec4.transformMat4([], v, invProj);\n const k = 1.0 / s[3] / worldSize * scale;\n // Z scale in meters.\n return vec4.mul(s, s, [k, k, zInMeters ? 1.0 / s[3] : k, k]);\n });\n\n const frustumPlanePointIndices = [\n [0, 1, 2], // near\n [6, 5, 4], // far\n [0, 3, 7], // left\n [2, 1, 5], // right\n [3, 2, 6], // bottom\n [0, 4, 5] // top\n ];\n\n const frustumPlanes = frustumPlanePointIndices.map((p: Array<number>) => {\n const a = vec3.sub([], frustumCoords[p[0]], frustumCoords[p[1]]);\n const b = vec3.sub([], frustumCoords[p[2]], frustumCoords[p[1]]);\n const n = vec3.normalize([], vec3.cross([], a, b));\n const d = -vec3.dot(n, frustumCoords[p[1]]);\n return n.concat(d);\n });\n\n return new Frustum(frustumCoords, frustumPlanes);\n }\n}\n\nclass Aabb {\n min: Vec3;\n max: Vec3;\n center: Vec3;\n\n constructor(min_: Vec3, max_: Vec3) {\n this.min = min_;\n this.max = max_;\n this.center = vec3.scale([], vec3.add([], this.min, this.max), 0.5);\n }\n\n quadrant(index: number): Aabb {\n const split = [(index % 2) === 0, index < 2];\n const qMin = vec3.clone(this.min);\n const qMax = vec3.clone(this.max);\n for (let axis = 0; axis < split.length; axis++) {\n qMin[axis] = split[axis] ? this.min[axis] : this.center[axis];\n qMax[axis] = split[axis] ? this.center[axis] : this.max[axis];\n }\n // Temporarily, elevation is constant, hence quadrant.max.z = this.max.z\n qMax[2] = this.max[2];\n return new Aabb(qMin, qMax);\n }\n\n distanceX(point: Array<number>): number {\n const pointOnAabb = Math.max(Math.min(this.max[0], point[0]), this.min[0]);\n return pointOnAabb - point[0];\n }\n\n distanceY(point: Array<number>): number {\n const pointOnAabb = Math.max(Math.min(this.max[1], point[1]), this.min[1]);\n return pointOnAabb - point[1];\n }\n\n distanceZ(point: Array<number>): number {\n const pointOnAabb = Math.max(Math.min(this.max[2], point[2]), this.min[2]);\n return pointOnAabb - point[2];\n }\n\n getCorners(): Array<Array<number>> {\n const mn = this.min;\n const mx = this.max;\n return [\n [mn[0], mn[1], mn[2]],\n [mx[0], mn[1], mn[2]],\n [mx[0], mx[1], mn[2]],\n [mn[0], mx[1], mn[2]],\n [mn[0], mn[1], mx[2]],\n [mx[0], mn[1], mx[2]],\n [mx[0], mx[1], mx[2]],\n [mn[0], mx[1], mx[2]],\n ];\n }\n\n // Performs a frustum-aabb intersection test. Returns 0 if there's no intersection,\n // 1 if shapes are intersecting and 2 if the aabb if fully inside the frustum.\n intersects(frustum: Frustum): number {\n // Execute separating axis test between two convex objects to find intersections\n // Each frustum plane together with 3 major axes define the separating axes\n\n const aabbPoints = this.getCorners();\n let fullyInside = true;\n\n for (let p = 0; p < frustum.planes.length; p++) {\n const plane = frustum.planes[p];\n let pointsInside = 0;\n\n for (let i = 0; i < aabbPoints.length; i++) {\n pointsInside += vec3.dot(plane, aabbPoints[i]) + plane[3] >= 0;\n }\n\n if (pointsInside === 0)\n return 0;\n\n if (pointsInside !== aabbPoints.length)\n fullyInside = false;\n }\n\n if (fullyInside)\n return 2;\n\n for (let axis = 0; axis < 3; axis++) {\n let projMin = Number.MAX_VALUE;\n let projMax = -Number.MAX_VALUE;\n\n for (let p = 0; p < frustum.points.length; p++) {\n const projectedPoint = frustum.points[p][axis] - this.min[axis];\n\n projMin = Math.min(projMin, projectedPoint);\n projMax = Math.max(projMax, projectedPoint);\n }\n\n if (projMax < 0 || projMin > this.max[axis] - this.min[axis])\n return 0;\n }\n\n return 1;\n }\n}\nexport {\n Aabb,\n Frustum,\n FrustumCorners,\n Ray\n};\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\n\nimport CircleBucket from '../../data/bucket/circle_bucket.js';\nimport {polygonIntersectsBufferedPoint} from '../../util/intersection_tests.js';\nimport {getMaximumPaintValue, translateDistance, tilespaceTranslate} from '../query_utils.js';\nimport properties from './circle_style_layer_properties.js';\nimport {Transitionable, Transitioning, Layout, PossiblyEvaluated} from '../properties.js';\nimport {vec4, vec3} from 'gl-matrix';\nimport Point from '@mapbox/point-geometry';\nimport ProgramConfiguration from '../../data/program_configuration.js';\nimport {Ray} from '../../util/primitives.js';\nimport assert from 'assert';\nimport {latFromMercatorY, mercatorZfromAltitude} from '../../geo/mercator_coordinate.js';\nimport EXTENT from '../../data/extent.js';\n\nimport type {FeatureState} from '../../style-spec/expression/index.js';\nimport type Transform from '../../geo/transform.js';\nimport type {Bucket, BucketParameters} from '../../data/bucket.js';\nimport type {LayoutProps, PaintProps} from './circle_style_layer_properties.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\nimport type {TilespaceQueryGeometry} from '../query_geometry.js';\nimport type {DEMSampler} from '../../terrain/elevation.js';\n\nclass CircleStyleLayer extends StyleLayer {\n _unevaluatedLayout: Layout<LayoutProps>;\n layout: PossiblyEvaluated<LayoutProps>;\n\n _transitionablePaint: Transitionable<PaintProps>;\n _transitioningPaint: Transitioning<PaintProps>;\n paint: PossiblyEvaluated<PaintProps>;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n }\n\n createBucket(parameters: BucketParameters<*>): CircleBucket<CircleStyleLayer> {\n return new CircleBucket(parameters);\n }\n\n queryRadius(bucket: Bucket): number {\n const circleBucket: CircleBucket<CircleStyleLayer> = (bucket: any);\n return getMaximumPaintValue('circle-radius', this, circleBucket) +\n getMaximumPaintValue('circle-stroke-width', this, circleBucket) +\n translateDistance(this.paint.get('circle-translate'));\n }\n\n queryIntersectsFeature(queryGeometry: TilespaceQueryGeometry,\n feature: VectorTileFeature,\n featureState: FeatureState,\n geometry: Array<Array<Point>>,\n zoom: number,\n transform: Transform,\n pixelPosMatrix: Float32Array,\n elevationHelper: ?DEMSampler): boolean {\n\n const translation = tilespaceTranslate(\n this.paint.get('circle-translate'),\n this.paint.get('circle-translate-anchor'),\n transform.angle, queryGeometry.pixelToTileUnitsFactor);\n\n const size = this.paint.get('circle-radius').evaluate(feature, featureState) +\n this.paint.get('circle-stroke-width').evaluate(feature, featureState);\n\n return queryIntersectsCircle(queryGeometry, geometry, transform, pixelPosMatrix, elevationHelper,\n this.paint.get('circle-pitch-alignment') === 'map',\n this.paint.get('circle-pitch-scale') === 'map', translation, size);\n }\n\n getProgramIds(): Array<string> {\n return ['circle'];\n }\n\n getProgramConfiguration(zoom: number): ProgramConfiguration {\n return new ProgramConfiguration(this, zoom);\n }\n}\n\nexport function queryIntersectsCircle(queryGeometry: TilespaceQueryGeometry,\n geometry: Array<Array<Point>>,\n transform: Transform,\n pixelPosMatrix: Float32Array,\n elevationHelper: ?DEMSampler,\n alignWithMap: boolean,\n scaleWithMap: boolean,\n translation: Point,\n size: number): boolean {\n if (alignWithMap && queryGeometry.queryGeometry.isAboveHorizon) return false;\n\n // For pitch-alignment: map, compare feature geometry to query geometry in the plane of the tile\n // // Otherwise, compare geometry in the plane of the viewport\n // // A circle with fixed scaling relative to the viewport gets larger in tile space as it moves into the distance\n // // A circle with fixed scaling relative to the map gets smaller in viewport space as it moves into the distance\n if (alignWithMap) size *= queryGeometry.pixelToTileUnitsFactor;\n\n const tileId = queryGeometry.tileID.canonical;\n const elevationScale = transform.projection.upVectorScale(tileId, transform.center.lat, transform.worldSize).metersToTile;\n\n for (const ring of geometry) {\n for (const point of ring) {\n const translatedPoint = point.add(translation);\n const z = (elevationHelper && transform.elevation) ?\n transform.elevation.exaggeration() * elevationHelper.getElevationAt(translatedPoint.x, translatedPoint.y, true) :\n 0;\n\n // Reproject tile coordinate to the local coordinate space used by the projection\n const reproj = transform.projection.projectTilePoint(translatedPoint.x, translatedPoint.y, tileId);\n\n if (z > 0) {\n const dir = transform.projection.upVector(tileId, translatedPoint.x, translatedPoint.y);\n reproj.x += dir[0] * elevationScale * z;\n reproj.y += dir[1] * elevationScale * z;\n reproj.z += dir[2] * elevationScale * z;\n }\n\n const transformedPoint = alignWithMap ? translatedPoint : projectPoint(reproj.x, reproj.y, reproj.z, pixelPosMatrix);\n const transformedPolygon = alignWithMap ?\n queryGeometry.tilespaceRays.map((r) => intersectAtHeight(r, z)) :\n queryGeometry.queryGeometry.screenGeometry;\n\n const projectedCenter = vec4.transformMat4([], [reproj.x, reproj.y, reproj.z, 1], pixelPosMatrix);\n if (!scaleWithMap && alignWithMap) {\n size *= projectedCenter[3] / transform.cameraToCenterDistance;\n } else if (scaleWithMap && !alignWithMap) {\n size *= transform.cameraToCenterDistance / projectedCenter[3];\n }\n\n if (alignWithMap) {\n // Apply extra scaling to cover different pixelPerMeter ratios at different latitudes\n const lat = latFromMercatorY((point.y / EXTENT + tileId.y) / (1 << tileId.z));\n const scale = transform.projection.pixelsPerMeter(lat, 1) / mercatorZfromAltitude(1, lat);\n\n size /= scale;\n }\n\n if (polygonIntersectsBufferedPoint(transformedPolygon, transformedPoint, size)) return true;\n }\n }\n\n return false;\n}\n\nfunction projectPoint(x: number, y: number, z: number, pixelPosMatrix: Float32Array) {\n const point = vec4.transformMat4([], [x, y, z, 1], pixelPosMatrix);\n return new Point(point[0] / point[3], point[1] / point[3]);\n}\n\nconst origin = vec3.fromValues(0, 0, 0);\nconst up = vec3.fromValues(0, 0, 1);\n\nfunction intersectAtHeight(r: Ray, z: number): Point {\n const intersectionPt = vec3.create();\n origin[2] = z;\n const intersects = r.intersectsPlane(origin, up, intersectionPt);\n assert(intersects, 'tilespacePoint should always be below horizon, and since camera cannot have pitch >90, ray should always intersect');\n\n return new Point(intersectionPt[0], intersectionPt[1]);\n}\n\nexport default CircleStyleLayer;\n","// @flow\n\nimport CircleBucket from './circle_bucket.js';\n\nimport {register} from '../../util/web_worker_transfer.js';\n\nimport type HeatmapStyleLayer from '../../style/style_layer/heatmap_style_layer.js';\n\nclass HeatmapBucket extends CircleBucket<HeatmapStyleLayer> {\n // Needed for flow to accept omit: ['layers'] below, due to\n // https://github.com/facebook/flow/issues/4262\n layers: Array<HeatmapStyleLayer>;\n}\n\nregister(HeatmapBucket, 'HeatmapBucket', {omit: ['layers']});\n\nexport default HeatmapBucket;\n","// @flow\n\nimport assert from 'assert';\n\nimport {register} from './web_worker_transfer.js';\n\nexport type Size = {\n width: number,\n height: number\n};\n\nexport interface SpritePosition {\n +tl: [number, number],\n +br: [number, number],\n +pixelRatio?: number\n}\nexport type SpritePositions = {[_: string]: SpritePosition};\n\ntype Point = {\n x: number,\n y: number\n};\n\nfunction createImage<T: AlphaImage | RGBAImage>(image: T, {width, height}: Size, channels: number, data?: Uint8Array | Uint8ClampedArray): T {\n if (!data) {\n data = new Uint8Array(width * height * channels);\n } else if (data instanceof Uint8ClampedArray) {\n data = new Uint8Array(data.buffer);\n } else if (data.length !== width * height * channels) {\n throw new RangeError('mismatched image size');\n }\n image.width = width;\n image.height = height;\n image.data = data;\n return image;\n}\n\nfunction resizeImage<T: AlphaImage | RGBAImage>(image: T, newImage: T, channels: number) {\n const {width, height} = newImage;\n if (width === image.width && height === image.height) {\n return;\n }\n\n copyImage(image, newImage, {x: 0, y: 0}, {x: 0, y: 0}, {\n width: Math.min(image.width, width),\n height: Math.min(image.height, height)\n }, channels);\n\n image.width = width;\n image.height = height;\n image.data = newImage.data;\n}\n\nfunction copyImage<T: RGBAImage | AlphaImage>(srcImg: T | ImageData, dstImg: T, srcPt: Point, dstPt: Point, size: Size, channels: number): T {\n if (size.width === 0 || size.height === 0) {\n return dstImg;\n }\n\n if (size.width > srcImg.width ||\n size.height > srcImg.height ||\n srcPt.x > srcImg.width - size.width ||\n srcPt.y > srcImg.height - size.height) {\n throw new RangeError('out of range source coordinates for image copy');\n }\n\n if (size.width > dstImg.width ||\n size.height > dstImg.height ||\n dstPt.x > dstImg.width - size.width ||\n dstPt.y > dstImg.height - size.height) {\n throw new RangeError('out of range destination coordinates for image copy');\n }\n\n const srcData = srcImg.data;\n const dstData = dstImg.data;\n\n assert(srcData !== dstData);\n\n for (let y = 0; y < size.height; y++) {\n const srcOffset = ((srcPt.y + y) * srcImg.width + srcPt.x) * channels;\n const dstOffset = ((dstPt.y + y) * dstImg.width + dstPt.x) * channels;\n for (let i = 0; i < size.width * channels; i++) {\n dstData[dstOffset + i] = srcData[srcOffset + i];\n }\n }\n return dstImg;\n}\n\nexport class AlphaImage {\n width: number;\n height: number;\n data: Uint8Array;\n\n constructor(size: Size, data?: Uint8Array | Uint8ClampedArray) {\n createImage(this, size, 1, data);\n }\n\n resize(size: Size) {\n resizeImage(this, new AlphaImage(size), 1);\n }\n\n clone(): AlphaImage {\n return new AlphaImage({width: this.width, height: this.height}, new Uint8Array(this.data));\n }\n\n static copy(srcImg: AlphaImage, dstImg: AlphaImage, srcPt: Point, dstPt: Point, size: Size) {\n copyImage(srcImg, dstImg, srcPt, dstPt, size, 1);\n }\n}\n\n// Not premultiplied, because ImageData is not premultiplied.\n// UNPACK_PREMULTIPLY_ALPHA_WEBGL must be used when uploading to a texture.\nexport class RGBAImage {\n width: number;\n height: number;\n\n // data must be a Uint8Array instead of Uint8ClampedArray because texImage2D does not\n // support Uint8ClampedArray in all browsers\n data: Uint8Array;\n\n constructor(size: Size, data?: Uint8Array | Uint8ClampedArray) {\n createImage(this, size, 4, data);\n }\n\n resize(size: Size) {\n resizeImage(this, new RGBAImage(size), 4);\n }\n\n replace(data: Uint8Array | Uint8ClampedArray, copy?: boolean) {\n if (copy) {\n this.data.set(data);\n } else if (data instanceof Uint8ClampedArray) {\n this.data = new Uint8Array(data.buffer);\n } else {\n this.data = data;\n }\n }\n\n clone(): RGBAImage {\n return new RGBAImage({width: this.width, height: this.height}, new Uint8Array(this.data));\n }\n\n static copy(srcImg: RGBAImage | ImageData, dstImg: RGBAImage, srcPt: Point, dstPt: Point, size: Size) {\n copyImage(srcImg, dstImg, srcPt, dstPt, size, 4);\n }\n}\n\nregister(AlphaImage, 'AlphaImage');\nregister(RGBAImage, 'RGBAImage');\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n CrossFadedDataDrivenProperty,\n CrossFadedProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\n\nexport type PaintProps = {|\n \"heatmap-radius\": DataDrivenProperty<number>,\n \"heatmap-weight\": DataDrivenProperty<number>,\n \"heatmap-intensity\": DataConstantProperty<number>,\n \"heatmap-color\": ColorRampProperty,\n \"heatmap-opacity\": DataConstantProperty<number>,\n|};\n\nconst paint: Properties<PaintProps> = new Properties({\n \"heatmap-radius\": new DataDrivenProperty(styleSpec[\"paint_heatmap\"][\"heatmap-radius\"]),\n \"heatmap-weight\": new DataDrivenProperty(styleSpec[\"paint_heatmap\"][\"heatmap-weight\"]),\n \"heatmap-intensity\": new DataConstantProperty(styleSpec[\"paint_heatmap\"][\"heatmap-intensity\"]),\n \"heatmap-color\": new ColorRampProperty(styleSpec[\"paint_heatmap\"][\"heatmap-color\"]),\n \"heatmap-opacity\": new DataConstantProperty(styleSpec[\"paint_heatmap\"][\"heatmap-opacity\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint }: $Exact<{\n paint: Properties<PaintProps>\n}>);\n","// @flow\n\nimport {RGBAImage} from './image.js';\nimport {isPowerOfTwo} from './util.js';\nimport assert from 'assert';\n\nimport type {StylePropertyExpression} from '../style-spec/expression/index.js';\n\nexport type ColorRampParams = {\n expression: StylePropertyExpression;\n evaluationKey: string;\n resolution?: number;\n image?: RGBAImage;\n clips?: Array<Object>;\n}\n\n/**\n * Given an expression that should evaluate to a color ramp,\n * return a RGBA image representing that ramp expression.\n *\n * @private\n */\nexport function renderColorRamp(params: ColorRampParams): RGBAImage {\n const evaluationGlobals = {};\n const width = params.resolution || 256;\n const height = params.clips ? params.clips.length : 1;\n const image = params.image || new RGBAImage({width, height});\n\n assert(isPowerOfTwo(width));\n\n const renderPixel = (stride, index, progress) => {\n evaluationGlobals[params.evaluationKey] = progress;\n const pxColor = params.expression.evaluate((evaluationGlobals: any));\n // the colors are being unpremultiplied because Color uses\n // premultiplied values, and the Texture class expects unpremultiplied ones\n image.data[stride + index + 0] = Math.floor(pxColor.r * 255 / pxColor.a);\n image.data[stride + index + 1] = Math.floor(pxColor.g * 255 / pxColor.a);\n image.data[stride + index + 2] = Math.floor(pxColor.b * 255 / pxColor.a);\n image.data[stride + index + 3] = Math.floor(pxColor.a * 255);\n };\n\n if (!params.clips) {\n for (let i = 0, j = 0; i < width; i++, j += 4) {\n const progress = i / (width - 1);\n\n renderPixel(0, j, progress);\n }\n } else {\n for (let clip = 0, stride = 0; clip < height; ++clip, stride += width * 4) {\n for (let i = 0, j = 0; i < width; i++, j += 4) {\n // Remap progress between clips\n const progress = i / (width - 1);\n const {start, end} = params.clips[clip];\n const evaluationProgress = start * (1 - progress) + end * progress;\n renderPixel(stride, j, evaluationProgress);\n }\n }\n }\n\n return image;\n}\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n CrossFadedDataDrivenProperty,\n CrossFadedProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\n\nexport type PaintProps = {|\n \"hillshade-illumination-direction\": DataConstantProperty<number>,\n \"hillshade-illumination-anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n \"hillshade-exaggeration\": DataConstantProperty<number>,\n \"hillshade-shadow-color\": DataConstantProperty<Color>,\n \"hillshade-highlight-color\": DataConstantProperty<Color>,\n \"hillshade-accent-color\": DataConstantProperty<Color>,\n|};\n\nconst paint: Properties<PaintProps> = new Properties({\n \"hillshade-illumination-direction\": new DataConstantProperty(styleSpec[\"paint_hillshade\"][\"hillshade-illumination-direction\"]),\n \"hillshade-illumination-anchor\": new DataConstantProperty(styleSpec[\"paint_hillshade\"][\"hillshade-illumination-anchor\"]),\n \"hillshade-exaggeration\": new DataConstantProperty(styleSpec[\"paint_hillshade\"][\"hillshade-exaggeration\"]),\n \"hillshade-shadow-color\": new DataConstantProperty(styleSpec[\"paint_hillshade\"][\"hillshade-shadow-color\"]),\n \"hillshade-highlight-color\": new DataConstantProperty(styleSpec[\"paint_hillshade\"][\"hillshade-highlight-color\"]),\n \"hillshade-accent-color\": new DataConstantProperty(styleSpec[\"paint_hillshade\"][\"hillshade-accent-color\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint }: $Exact<{\n paint: Properties<PaintProps>\n}>);\n","// @flow\nimport {createLayout} from '../../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../../util/struct_array.js';\n\nconst layout: StructArrayLayout = createLayout([\n {name: 'a_pos', components: 2, type: 'Int16'}\n], 4);\n\nexport default layout;\nexport const {members, size, alignment} = layout;\n","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n var filteredBridge = filterPoints(bridge, bridge.next);\n filterPoints(bridgeReverse, bridgeReverse.next);\n\n // Check if input node was removed by the filtering\n return outerNode === bridge ? filteredBridge : outerNode;\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","\nexport default function quickselect(arr, k, left, right, compare) {\n quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n while (right > left) {\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselectStep(arr, k, newLeft, newRight, compare);\n }\n\n var t = arr[k];\n var i = left;\n var j = right;\n\n swap(arr, left, k);\n if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (compare(arr[i], t) < 0) i++;\n while (compare(arr[j], t) > 0) j--;\n }\n\n if (compare(arr[left], t) === 0) swap(arr, left, j);\n else {\n j++;\n swap(arr, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\nfunction swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n","// @flow\n\nimport quickselect from 'quickselect';\n\nimport {calculateSignedArea} from './util.js';\n\nimport type Point from '@mapbox/point-geometry';\n\n// classifies an array of rings into polygons with outer rings and holes\nexport default function classifyRings(rings: Array<Array<Point>>, maxRings: number): Array<Array<Array<Point>>> {\n const len = rings.length;\n\n if (len <= 1) return [rings];\n\n const polygons = [];\n let polygon,\n ccw;\n\n for (let i = 0; i < len; i++) {\n const area = calculateSignedArea(rings[i]);\n if (area === 0) continue;\n\n (rings[i]: any).area = Math.abs(area);\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n if (polygon) polygons.push(polygon);\n polygon = [rings[i]];\n\n } else {\n (polygon: any).push(rings[i]);\n }\n }\n if (polygon) polygons.push(polygon);\n\n // Earcut performance degrades with the # of rings in a polygon. For this\n // reason, we limit strip out all but the `maxRings` largest rings.\n if (maxRings > 1) {\n for (let j = 0; j < polygons.length; j++) {\n if (polygons[j].length <= maxRings) continue;\n quickselect(polygons[j], maxRings, 1, polygons[j].length - 1, compareAreas);\n polygons[j] = polygons[j].slice(0, maxRings);\n }\n }\n\n return polygons;\n}\n\nfunction compareAreas(a, b) {\n return b.area - a.area;\n}\n","// @flow\nimport type FillStyleLayer from '../../style/style_layer/fill_style_layer.js';\nimport type FillExtrusionStyleLayer from '../../style/style_layer/fill_extrusion_style_layer.js';\nimport type LineStyleLayer from '../../style/style_layer/line_style_layer.js';\n\nimport type {\n BucketFeature,\n PopulateParameters\n} from '../bucket.js';\n\ntype PatternStyleLayers =\n Array<LineStyleLayer> |\n Array<FillStyleLayer> |\n Array<FillExtrusionStyleLayer>;\n\nexport function hasPattern(type: string, layers: PatternStyleLayers, options: PopulateParameters): boolean {\n const patterns = options.patternDependencies;\n let hasPattern = false;\n\n for (const layer of layers) {\n const patternProperty = layer.paint.get(`${type}-pattern`);\n if (!patternProperty.isConstant()) {\n hasPattern = true;\n }\n\n const constantPattern = patternProperty.constantOr(null);\n if (constantPattern) {\n hasPattern = true;\n patterns[constantPattern.to] = true;\n patterns[constantPattern.from] = true;\n }\n }\n\n return hasPattern;\n}\n\nexport function addPatternDependencies(type: string, layers: PatternStyleLayers, patternFeature: BucketFeature, zoom: number, options: PopulateParameters): BucketFeature {\n const patterns = options.patternDependencies;\n for (const layer of layers) {\n const patternProperty = layer.paint.get(`${type}-pattern`);\n\n const patternPropertyValue = patternProperty.value;\n if (patternPropertyValue.kind !== \"constant\") {\n let min = patternPropertyValue.evaluate({zoom: zoom - 1}, patternFeature, {}, options.availableImages);\n let mid = patternPropertyValue.evaluate({zoom}, patternFeature, {}, options.availableImages);\n let max = patternPropertyValue.evaluate({zoom: zoom + 1}, patternFeature, {}, options.availableImages);\n min = min && min.name ? min.name : min;\n mid = mid && mid.name ? mid.name : mid;\n max = max && max.name ? max.name : max;\n // add to patternDependencies\n patterns[min] = true;\n patterns[mid] = true;\n patterns[max] = true;\n\n // save for layout\n patternFeature.patterns[layer.id] = {min, mid, max};\n }\n }\n return patternFeature;\n}\n","// @flow\n\nimport {FillLayoutArray} from '../array_types.js';\n\nimport {members as layoutAttributes} from './fill_attributes.js';\nimport SegmentVector from '../segment.js';\nimport {ProgramConfigurationSet} from '../program_configuration.js';\nimport {LineIndexArray, TriangleIndexArray} from '../index_array_type.js';\nimport earcut from 'earcut';\nimport classifyRings from '../../util/classify_rings.js';\nimport assert from 'assert';\nconst EARCUT_MAX_RINGS = 500;\nimport {register} from '../../util/web_worker_transfer.js';\nimport {hasPattern, addPatternDependencies} from './pattern_bucket_features.js';\nimport loadGeometry from '../load_geometry.js';\nimport toEvaluationFeature from '../evaluation_feature.js';\nimport EvaluationParameters from '../../style/evaluation_parameters.js';\n\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type {\n Bucket,\n BucketParameters,\n BucketFeature,\n IndexedFeature,\n PopulateParameters\n} from '../bucket.js';\nimport type FillStyleLayer from '../../style/style_layer/fill_style_layer.js';\nimport type Context from '../../gl/context.js';\nimport type IndexBuffer from '../../gl/index_buffer.js';\nimport type VertexBuffer from '../../gl/vertex_buffer.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {FeatureStates} from '../../source/source_state.js';\nimport type {SpritePositions} from '../../util/image.js';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {TileTransform} from '../../geo/projection/tile_transform.js';\n\nclass FillBucket implements Bucket {\n index: number;\n zoom: number;\n overscaling: number;\n layers: Array<FillStyleLayer>;\n layerIds: Array<string>;\n stateDependentLayers: Array<FillStyleLayer>;\n stateDependentLayerIds: Array<string>;\n patternFeatures: Array<BucketFeature>;\n\n layoutVertexArray: FillLayoutArray;\n layoutVertexBuffer: VertexBuffer;\n\n indexArray: TriangleIndexArray;\n indexBuffer: IndexBuffer;\n\n indexArray2: LineIndexArray;\n indexBuffer2: IndexBuffer;\n\n hasPattern: boolean;\n programConfigurations: ProgramConfigurationSet<FillStyleLayer>;\n segments: SegmentVector;\n segments2: SegmentVector;\n uploaded: boolean;\n projection: ProjectionSpecification;\n\n constructor(options: BucketParameters<FillStyleLayer>) {\n this.zoom = options.zoom;\n this.overscaling = options.overscaling;\n this.layers = options.layers;\n this.layerIds = this.layers.map(layer => layer.id);\n this.index = options.index;\n this.hasPattern = false;\n this.patternFeatures = [];\n\n this.layoutVertexArray = new FillLayoutArray();\n this.indexArray = new TriangleIndexArray();\n this.indexArray2 = new LineIndexArray();\n this.programConfigurations = new ProgramConfigurationSet(options.layers, options.zoom);\n this.segments = new SegmentVector();\n this.segments2 = new SegmentVector();\n this.stateDependentLayerIds = this.layers.filter((l) => l.isStateDependent()).map((l) => l.id);\n this.projection = options.projection;\n }\n\n populate(features: Array<IndexedFeature>, options: PopulateParameters, canonical: CanonicalTileID, tileTransform: TileTransform) {\n this.hasPattern = hasPattern('fill', this.layers, options);\n const fillSortKey = this.layers[0].layout.get('fill-sort-key');\n const bucketFeatures = [];\n\n for (const {feature, id, index, sourceLayerIndex} of features) {\n const needGeometry = this.layers[0]._featureFilter.needGeometry;\n const evaluationFeature = toEvaluationFeature(feature, needGeometry);\n\n if (!this.layers[0]._featureFilter.filter(new EvaluationParameters(this.zoom), evaluationFeature, canonical)) continue;\n\n const sortKey = fillSortKey ?\n fillSortKey.evaluate(evaluationFeature, {}, canonical, options.availableImages) :\n undefined;\n\n const bucketFeature: BucketFeature = {\n id,\n properties: feature.properties,\n type: feature.type,\n sourceLayerIndex,\n index,\n geometry: needGeometry ? evaluationFeature.geometry : loadGeometry(feature, canonical, tileTransform),\n patterns: {},\n sortKey\n };\n\n bucketFeatures.push(bucketFeature);\n }\n\n if (fillSortKey) {\n bucketFeatures.sort((a, b) => {\n // a.sortKey is always a number when in use\n return ((a.sortKey: any): number) - ((b.sortKey: any): number);\n });\n }\n\n for (const bucketFeature of bucketFeatures) {\n const {geometry, index, sourceLayerIndex} = bucketFeature;\n\n if (this.hasPattern) {\n const patternFeature = addPatternDependencies('fill', this.layers, bucketFeature, this.zoom, options);\n // pattern features are added only once the pattern is loaded into the image atlas\n // so are stored during populate until later updated with positions by tile worker in addFeatures\n this.patternFeatures.push(patternFeature);\n } else {\n this.addFeature(bucketFeature, geometry, index, canonical, {}, options.availableImages);\n }\n\n const feature = features[index].feature;\n options.featureIndex.insert(feature, geometry, index, sourceLayerIndex, this.index);\n }\n }\n\n update(states: FeatureStates, vtLayer: VectorTileLayer, availableImages: Array<string>, imagePositions: SpritePositions) {\n if (!this.stateDependentLayers.length) return;\n this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, availableImages, imagePositions);\n }\n\n addFeatures(options: PopulateParameters, canonical: CanonicalTileID, imagePositions: SpritePositions, availableImages: Array<string>, _: TileTransform) {\n for (const feature of this.patternFeatures) {\n this.addFeature(feature, feature.geometry, feature.index, canonical, imagePositions, availableImages);\n }\n }\n\n isEmpty(): boolean {\n return this.layoutVertexArray.length === 0;\n }\n\n uploadPending(): boolean {\n return !this.uploaded || this.programConfigurations.needsUpload;\n }\n upload(context: Context) {\n if (!this.uploaded) {\n this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, layoutAttributes);\n this.indexBuffer = context.createIndexBuffer(this.indexArray);\n this.indexBuffer2 = context.createIndexBuffer(this.indexArray2);\n }\n this.programConfigurations.upload(context);\n this.uploaded = true;\n }\n\n destroy() {\n if (!this.layoutVertexBuffer) return;\n this.layoutVertexBuffer.destroy();\n this.indexBuffer.destroy();\n this.indexBuffer2.destroy();\n this.programConfigurations.destroy();\n this.segments.destroy();\n this.segments2.destroy();\n }\n\n addFeature(feature: BucketFeature, geometry: Array<Array<Point>>, index: number, canonical: CanonicalTileID, imagePositions: SpritePositions, availableImages: Array<string> = []) {\n for (const polygon of classifyRings(geometry, EARCUT_MAX_RINGS)) {\n let numVertices = 0;\n for (const ring of polygon) {\n numVertices += ring.length;\n }\n\n const triangleSegment = this.segments.prepareSegment(numVertices, this.layoutVertexArray, this.indexArray);\n const triangleIndex = triangleSegment.vertexLength;\n\n const flattened = [];\n const holeIndices = [];\n\n for (const ring of polygon) {\n if (ring.length === 0) {\n continue;\n }\n\n if (ring !== polygon[0]) {\n holeIndices.push(flattened.length / 2);\n }\n\n const lineSegment = this.segments2.prepareSegment(ring.length, this.layoutVertexArray, this.indexArray2);\n const lineIndex = lineSegment.vertexLength;\n\n this.layoutVertexArray.emplaceBack(ring[0].x, ring[0].y);\n this.indexArray2.emplaceBack(lineIndex + ring.length - 1, lineIndex);\n flattened.push(ring[0].x);\n flattened.push(ring[0].y);\n\n for (let i = 1; i < ring.length; i++) {\n this.layoutVertexArray.emplaceBack(ring[i].x, ring[i].y);\n this.indexArray2.emplaceBack(lineIndex + i - 1, lineIndex + i);\n flattened.push(ring[i].x);\n flattened.push(ring[i].y);\n }\n\n lineSegment.vertexLength += ring.length;\n lineSegment.primitiveLength += ring.length;\n }\n\n const indices = earcut(flattened, holeIndices);\n assert(indices.length % 3 === 0);\n\n for (let i = 0; i < indices.length; i += 3) {\n this.indexArray.emplaceBack(\n triangleIndex + indices[i],\n triangleIndex + indices[i + 1],\n triangleIndex + indices[i + 2]);\n }\n\n triangleSegment.vertexLength += numVertices;\n triangleSegment.primitiveLength += indices.length / 3;\n }\n this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, feature, index, imagePositions, availableImages, canonical);\n }\n}\n\nregister(FillBucket, 'FillBucket', {omit: ['layers', 'patternFeatures']});\n\nexport default FillBucket;\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n CrossFadedDataDrivenProperty,\n CrossFadedProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\nexport type LayoutProps = {|\n \"fill-sort-key\": DataDrivenProperty<number>,\n|};\n\nconst layout: Properties<LayoutProps> = new Properties({\n \"fill-sort-key\": new DataDrivenProperty(styleSpec[\"layout_fill\"][\"fill-sort-key\"]),\n});\n\nexport type PaintProps = {|\n \"fill-antialias\": DataConstantProperty<boolean>,\n \"fill-opacity\": DataDrivenProperty<number>,\n \"fill-color\": DataDrivenProperty<Color>,\n \"fill-outline-color\": DataDrivenProperty<Color>,\n \"fill-translate\": DataConstantProperty<[number, number]>,\n \"fill-translate-anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n \"fill-pattern\": CrossFadedDataDrivenProperty<ResolvedImage>,\n|};\n\nconst paint: Properties<PaintProps> = new Properties({\n \"fill-antialias\": new DataConstantProperty(styleSpec[\"paint_fill\"][\"fill-antialias\"]),\n \"fill-opacity\": new DataDrivenProperty(styleSpec[\"paint_fill\"][\"fill-opacity\"]),\n \"fill-color\": new DataDrivenProperty(styleSpec[\"paint_fill\"][\"fill-color\"]),\n \"fill-outline-color\": new DataDrivenProperty(styleSpec[\"paint_fill\"][\"fill-outline-color\"]),\n \"fill-translate\": new DataConstantProperty(styleSpec[\"paint_fill\"][\"fill-translate\"]),\n \"fill-translate-anchor\": new DataConstantProperty(styleSpec[\"paint_fill\"][\"fill-translate-anchor\"]),\n \"fill-pattern\": new CrossFadedDataDrivenProperty(styleSpec[\"paint_fill\"][\"fill-pattern\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint, layout }: $Exact<{\n paint: Properties<PaintProps>, layout: Properties<LayoutProps>\n}>);\n","// @flow\nimport {createLayout} from '../../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../../util/struct_array.js';\n\nexport const fillExtrusionAttributes: StructArrayLayout = createLayout([\n {name: 'a_pos_normal_ed', components: 4, type: 'Int16'}\n]);\n\nexport const centroidAttributes: StructArrayLayout = createLayout([\n {name: 'a_centroid_pos', components: 2, type: 'Uint16'}\n]);\n\nexport const fillExtrusionAttributesExt: StructArrayLayout = createLayout([\n {name: 'a_pos_3', components: 3, type: 'Int16'},\n {name: 'a_pos_normal_3', components: 3, type: 'Int16'}\n]);\n\nexport const {members, size, alignment} = fillExtrusionAttributes;\n","'use strict';\n\nvar Point = require('@mapbox/point-geometry');\n\nmodule.exports = VectorTileFeature;\n\nfunction VectorTileFeature(pbf, end, extent, keys, values) {\n // Public\n this.properties = {};\n this.extent = extent;\n this.type = 0;\n\n // Private\n this._pbf = pbf;\n this._geometry = -1;\n this._keys = keys;\n this._values = values;\n\n pbf.readFields(readFeature, this, end);\n}\n\nfunction readFeature(tag, feature, pbf) {\n if (tag == 1) feature.id = pbf.readVarint();\n else if (tag == 2) readTag(pbf, feature);\n else if (tag == 3) feature.type = pbf.readVarint();\n else if (tag == 4) feature._geometry = pbf.pos;\n}\n\nfunction readTag(pbf, feature) {\n var end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n var key = feature._keys[pbf.readVarint()],\n value = feature._values[pbf.readVarint()];\n feature.properties[key] = value;\n }\n}\n\nVectorTileFeature.types = ['Unknown', 'Point', 'LineString', 'Polygon'];\n\nVectorTileFeature.prototype.loadGeometry = function() {\n var pbf = this._pbf;\n pbf.pos = this._geometry;\n\n var end = pbf.readVarint() + pbf.pos,\n cmd = 1,\n length = 0,\n x = 0,\n y = 0,\n lines = [],\n line;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n var cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n\n if (cmd === 1) { // moveTo\n if (line) lines.push(line);\n line = [];\n }\n\n line.push(new Point(x, y));\n\n } else if (cmd === 7) {\n\n // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90\n if (line) {\n line.push(line[0].clone()); // closePolygon\n }\n\n } else {\n throw new Error('unknown command ' + cmd);\n }\n }\n\n if (line) lines.push(line);\n\n return lines;\n};\n\nVectorTileFeature.prototype.bbox = function() {\n var pbf = this._pbf;\n pbf.pos = this._geometry;\n\n var end = pbf.readVarint() + pbf.pos,\n cmd = 1,\n length = 0,\n x = 0,\n y = 0,\n x1 = Infinity,\n x2 = -Infinity,\n y1 = Infinity,\n y2 = -Infinity;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n var cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n if (x < x1) x1 = x;\n if (x > x2) x2 = x;\n if (y < y1) y1 = y;\n if (y > y2) y2 = y;\n\n } else if (cmd !== 7) {\n throw new Error('unknown command ' + cmd);\n }\n }\n\n return [x1, y1, x2, y2];\n};\n\nVectorTileFeature.prototype.toGeoJSON = function(x, y, z) {\n var size = this.extent * Math.pow(2, z),\n x0 = this.extent * x,\n y0 = this.extent * y,\n coords = this.loadGeometry(),\n type = VectorTileFeature.types[this.type],\n i, j;\n\n function project(line) {\n for (var j = 0; j < line.length; j++) {\n var p = line[j], y2 = 180 - (p.y + y0) * 360 / size;\n line[j] = [\n (p.x + x0) * 360 / size - 180,\n 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90\n ];\n }\n }\n\n switch (this.type) {\n case 1:\n var points = [];\n for (i = 0; i < coords.length; i++) {\n points[i] = coords[i][0];\n }\n coords = points;\n project(coords);\n break;\n\n case 2:\n for (i = 0; i < coords.length; i++) {\n project(coords[i]);\n }\n break;\n\n case 3:\n coords = classifyRings(coords);\n for (i = 0; i < coords.length; i++) {\n for (j = 0; j < coords[i].length; j++) {\n project(coords[i][j]);\n }\n }\n break;\n }\n\n if (coords.length === 1) {\n coords = coords[0];\n } else {\n type = 'Multi' + type;\n }\n\n var result = {\n type: \"Feature\",\n geometry: {\n type: type,\n coordinates: coords\n },\n properties: this.properties\n };\n\n if ('id' in this) {\n result.id = this.id;\n }\n\n return result;\n};\n\n// classifies an array of rings into polygons with outer rings and holes\n\nfunction classifyRings(rings) {\n var len = rings.length;\n\n if (len <= 1) return [rings];\n\n var polygons = [],\n polygon,\n ccw;\n\n for (var i = 0; i < len; i++) {\n var area = signedArea(rings[i]);\n if (area === 0) continue;\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n if (polygon) polygons.push(polygon);\n polygon = [rings[i]];\n\n } else {\n polygon.push(rings[i]);\n }\n }\n if (polygon) polygons.push(polygon);\n\n return polygons;\n}\n\nfunction signedArea(ring) {\n var sum = 0;\n for (var i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n sum += (p2.x - p1.x) * (p1.y + p2.y);\n }\n return sum;\n}\n","'use strict';\n\nvar VectorTileFeature = require('./vectortilefeature.js');\n\nmodule.exports = VectorTileLayer;\n\nfunction VectorTileLayer(pbf, end) {\n // Public\n this.version = 1;\n this.name = null;\n this.extent = 4096;\n this.length = 0;\n\n // Private\n this._pbf = pbf;\n this._keys = [];\n this._values = [];\n this._features = [];\n\n pbf.readFields(readLayer, this, end);\n\n this.length = this._features.length;\n}\n\nfunction readLayer(tag, layer, pbf) {\n if (tag === 15) layer.version = pbf.readVarint();\n else if (tag === 1) layer.name = pbf.readString();\n else if (tag === 5) layer.extent = pbf.readVarint();\n else if (tag === 2) layer._features.push(pbf.pos);\n else if (tag === 3) layer._keys.push(pbf.readString());\n else if (tag === 4) layer._values.push(readValueMessage(pbf));\n}\n\nfunction readValueMessage(pbf) {\n var value = null,\n end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n var tag = pbf.readVarint() >> 3;\n\n value = tag === 1 ? pbf.readString() :\n tag === 2 ? pbf.readFloat() :\n tag === 3 ? pbf.readDouble() :\n tag === 4 ? pbf.readVarint64() :\n tag === 5 ? pbf.readVarint() :\n tag === 6 ? pbf.readSVarint() :\n tag === 7 ? pbf.readBoolean() : null;\n }\n\n return value;\n}\n\n// return feature `i` from this layer as a `VectorTileFeature`\nVectorTileLayer.prototype.feature = function(i) {\n if (i < 0 || i >= this._features.length) throw new Error('feature index out of bounds');\n\n this._pbf.pos = this._features[i];\n\n var end = this._pbf.readVarint() + this._pbf.pos;\n return new VectorTileFeature(this._pbf, end, this.extent, this._keys, this._values);\n};\n","'use strict';\n\nvar VectorTileLayer = require('./vectortilelayer');\n\nmodule.exports = VectorTile;\n\nfunction VectorTile(pbf, end) {\n this.layers = pbf.readFields(readTile, {}, end);\n}\n\nfunction readTile(tag, layers, pbf) {\n if (tag === 3) {\n var layer = new VectorTileLayer(pbf, pbf.readVarint() + pbf.pos);\n if (layer.length) layers[layer.name] = layer;\n }\n}\n\n","module.exports.VectorTile = require('./lib/vectortile.js');\nmodule.exports.VectorTileFeature = require('./lib/vectortilefeature.js');\nmodule.exports.VectorTileLayer = require('./lib/vectortilelayer.js');\n","// @flow\n\nimport assert from 'assert';\nimport Point from '@mapbox/point-geometry';\n\nexport type ClippedPolygon = {\n polygon: Array<Array<Point>>,\n bounds: [Point, Point]\n};\n\nfunction clipPolygon(polygons: Array<Array<Point>>, clipAxis1: number, clipAxis2: number, axis: number): Array<Array<Point>> {\n const intersectX = (ring, ax, ay, bx, by, x) => {\n ring.push(new Point(x, ay + (by - ay) * ((x - ax) / (bx - ax))));\n };\n const intersectY = (ring, ax, ay, bx, by, y) => {\n ring.push(new Point(ax + (bx - ax) * ((y - ay) / (by - ay)), y));\n };\n\n const polygonsClipped = [];\n const intersect = axis === 0 ? intersectX : intersectY;\n for (const polygon of polygons) {\n const polygonClipped = [];\n for (const ring of polygon) {\n if (ring.length <= 2) {\n continue;\n }\n\n const clipped = [];\n for (let i = 0; i < ring.length - 1; i++) {\n const ax = ring[i].x;\n const ay = ring[i].y;\n const bx = ring[i + 1].x;\n const by = ring[i + 1].y;\n const a = axis === 0 ? ax : ay;\n const b = axis === 0 ? bx : by;\n if (a < clipAxis1) {\n if (b > clipAxis1) {\n intersect(clipped, ax, ay, bx, by, clipAxis1);\n }\n } else if (a > clipAxis2) {\n if (b < clipAxis2) {\n intersect(clipped, ax, ay, bx, by, clipAxis2);\n }\n } else {\n clipped.push(ring[i]);\n }\n if (b < clipAxis1 && a >= clipAxis1) {\n intersect(clipped, ax, ay, bx, by, clipAxis1);\n }\n if (b > clipAxis2 && a <= clipAxis2) {\n intersect(clipped, ax, ay, bx, by, clipAxis2);\n }\n }\n\n let last = ring[ring.length - 1];\n const a = axis === 0 ? last.x : last.y;\n if (a >= clipAxis1 && a <= clipAxis2) {\n clipped.push(last);\n }\n if (clipped.length) {\n last = clipped[clipped.length - 1];\n if (clipped[0].x !== last.x || clipped[0].y !== last.y) {\n clipped.push(clipped[0]);\n }\n polygonClipped.push(clipped);\n }\n }\n if (polygonClipped.length) {\n polygonsClipped.push(polygonClipped);\n }\n }\n\n return polygonsClipped;\n}\n\nexport function subdividePolygons(polygons: Array<Array<Point>>, bounds: [Point, Point], gridSizeX: number, gridSizeY: number, padding: number = 0.0, splitFn: Function): Array<ClippedPolygon> {\n const outPolygons = [];\n\n if (!polygons.length || !gridSizeX || !gridSizeY) {\n return outPolygons;\n }\n\n const addResult = (clipped, bounds) => {\n for (const polygon of clipped) {\n outPolygons.push({polygon, bounds});\n }\n };\n\n const hSplits = Math.ceil(Math.log2(gridSizeX));\n const vSplits = Math.ceil(Math.log2(gridSizeY));\n\n const initialSplits = hSplits - vSplits;\n\n const splits = [];\n for (let i = 0; i < Math.abs(initialSplits); i++) {\n splits.push(initialSplits > 0 ? 0 : 1);\n }\n\n for (let i = 0; i < Math.min(hSplits, vSplits); i++) {\n splits.push(0); // x\n splits.push(1); // y\n }\n\n let split = polygons;\n\n split = clipPolygon(split, bounds[0].y - padding, bounds[1].y + padding, 1);\n split = clipPolygon(split, bounds[0].x - padding, bounds[1].x + padding, 0);\n\n if (!split.length) {\n return outPolygons;\n }\n\n const stack = [];\n if (splits.length) {\n stack.push({polygons: split, bounds, depth: 0});\n } else {\n addResult(split, bounds);\n }\n\n while (stack.length) {\n const frame = stack.pop();\n\n assert(frame.polygons.length > 0);\n\n const depth = frame.depth;\n const axis = splits[depth];\n\n const bboxMin = frame.bounds[0];\n const bboxMax = frame.bounds[1];\n\n const splitMin = axis === 0 ? bboxMin.x : bboxMin.y;\n const splitMax = axis === 0 ? bboxMax.x : bboxMax.y;\n\n const splitMid = splitFn ? splitFn(axis, splitMin, splitMax) : 0.5 * (splitMin + splitMax);\n\n const lclip = clipPolygon(frame.polygons, splitMin - padding, splitMid + padding, axis);\n const rclip = clipPolygon(frame.polygons, splitMid - padding, splitMax + padding, axis);\n\n if (lclip.length) {\n const bbMaxX = axis === 0 ? splitMid : bboxMax.x;\n const bbMaxY = axis === 1 ? splitMid : bboxMax.y;\n\n const bbMax = new Point(bbMaxX, bbMaxY);\n\n const lclipBounds = [bboxMin, bbMax];\n\n if (splits.length > depth + 1) {\n stack.push({polygons: lclip, bounds: lclipBounds, depth: depth + 1});\n } else {\n addResult(lclip, lclipBounds);\n }\n }\n\n if (rclip.length) {\n const bbMinX = axis === 0 ? splitMid : bboxMin.x;\n const bbMinY = axis === 1 ? splitMid : bboxMin.y;\n\n const bbMin = new Point(bbMinX, bbMinY);\n\n const rclipBounds = [bbMin, bboxMax];\n\n if (splits.length > depth + 1) {\n stack.push({polygons: rclip, bounds: rclipBounds, depth: depth + 1});\n } else {\n addResult(rclip, rclipBounds);\n }\n }\n }\n\n return outPolygons;\n}\n","// @flow\n\nimport {FillExtrusionLayoutArray, FillExtrusionExtArray, FillExtrusionCentroidArray} from '../array_types.js';\n\nimport {members as layoutAttributes, centroidAttributes, fillExtrusionAttributesExt} from './fill_extrusion_attributes.js';\nimport SegmentVector from '../segment.js';\nimport {ProgramConfigurationSet} from '../program_configuration.js';\nimport {TriangleIndexArray} from '../index_array_type.js';\nimport EXTENT from '../extent.js';\nimport earcut from 'earcut';\nimport mvt from '@mapbox/vector-tile';\nconst vectorTileFeatureTypes = mvt.VectorTileFeature.types;\nimport classifyRings from '../../util/classify_rings.js';\nimport assert from 'assert';\nconst EARCUT_MAX_RINGS = 500;\nimport {register} from '../../util/web_worker_transfer.js';\nimport {hasPattern, addPatternDependencies} from './pattern_bucket_features.js';\nimport loadGeometry from '../load_geometry.js';\nimport toEvaluationFeature from '../evaluation_feature.js';\nimport EvaluationParameters from '../../style/evaluation_parameters.js';\nimport Point from '@mapbox/point-geometry';\nimport {number as interpolate} from '../../style-spec/util/interpolate.js';\nimport {lngFromMercatorX, latFromMercatorY, mercatorYfromLat} from '../../geo/mercator_coordinate.js';\nimport {subdividePolygons} from '../../util/polygon_clipping.js';\nimport type {ClippedPolygon} from '../../util/polygon_clipping.js';\nimport type {Vec3} from 'gl-matrix';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type {\n Bucket,\n BucketParameters,\n BucketFeature,\n IndexedFeature,\n PopulateParameters\n} from '../bucket.js';\n\nimport type FillExtrusionStyleLayer from '../../style/style_layer/fill_extrusion_style_layer.js';\nimport type Context from '../../gl/context.js';\nimport type IndexBuffer from '../../gl/index_buffer.js';\nimport type VertexBuffer from '../../gl/vertex_buffer.js';\nimport type {FeatureStates} from '../../source/source_state.js';\nimport type {SpritePositions} from '../../util/image.js';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {TileTransform} from '../../geo/projection/tile_transform.js';\nimport {earthRadius} from '../../geo/lng_lat.js';\n\nconst FACTOR = Math.pow(2, 13);\n\n// Also declared in _prelude_terrain.vertex.glsl\n// Used to scale most likely elevation values to fit well in an uint16\n// (Elevation of Dead Sea + ELEVATION_OFFSET) * ELEVATION_SCALE is roughly 0\n// (Height of mt everest + ELEVATION_OFFSET) * ELEVATION_SCALE is roughly 64k\nexport const ELEVATION_SCALE = 7.0;\nexport const ELEVATION_OFFSET = 450;\n\nfunction addVertex(vertexArray, x, y, nxRatio, nySign, normalUp, top, e) {\n vertexArray.emplaceBack(\n // a_pos_normal_ed:\n // Encode top and side/up normal using the least significant bits\n (x << 1) + top,\n (y << 1) + normalUp,\n // dxdy is signed, encode quadrant info using the least significant bit\n (Math.floor(nxRatio * FACTOR) << 1) + nySign,\n // edgedistance (used for wrapping patterns around extrusion sides)\n Math.round(e)\n );\n}\n\nfunction addGlobeExtVertex(vertexArray: FillExtrusionExtArray, pos: {x: number, y: number, z: number}, normal: Vec3) {\n const encode = 1 << 14;\n vertexArray.emplaceBack(\n pos.x, pos.y, pos.z,\n normal[0] * encode, normal[1] * encode, normal[2] * encode);\n}\n\nclass PartMetadata {\n acc: Point;\n min: Point;\n max: Point;\n polyCount: Array<{edges: number, top: number}>;\n currentPolyCount: {edges: number, top: number};\n borders: Array<[number, number]>; // Array<[min, max]>\n vertexArrayOffset: number;\n\n constructor() {\n this.acc = new Point(0, 0);\n this.polyCount = [];\n }\n\n startRing(p: Point) {\n this.currentPolyCount = {edges: 0, top: 0};\n this.polyCount.push(this.currentPolyCount);\n if (this.min) return;\n this.min = new Point(p.x, p.y);\n this.max = new Point(p.x, p.y);\n }\n\n append(p: Point, prev: Point) {\n this.currentPolyCount.edges++;\n\n this.acc._add(p);\n const min = this.min, max = this.max;\n if (p.x < min.x) {\n min.x = p.x;\n } else if (p.x > max.x) {\n max.x = p.x;\n }\n if (p.y < min.y) {\n min.y = p.y;\n } else if (p.y > max.y) {\n max.y = p.y;\n }\n if (((p.x === 0 || p.x === EXTENT) && p.x === prev.x) !== ((p.y === 0 || p.y === EXTENT) && p.y === prev.y)) {\n // Custom defined geojson buildings are cut on borders. Points are\n // repeated when edge cuts tile corner (reason for using xor).\n this.processBorderOverlap(p, prev);\n }\n // check border intersection\n if ((prev.x < 0) !== (p.x < 0)) {\n this.addBorderIntersection(0, interpolate(prev.y, p.y, (0 - prev.x) / (p.x - prev.x)));\n }\n if ((prev.x > EXTENT) !== (p.x > EXTENT)) {\n this.addBorderIntersection(1, interpolate(prev.y, p.y, (EXTENT - prev.x) / (p.x - prev.x)));\n }\n if ((prev.y < 0) !== (p.y < 0)) {\n this.addBorderIntersection(2, interpolate(prev.x, p.x, (0 - prev.y) / (p.y - prev.y)));\n }\n if ((prev.y > EXTENT) !== (p.y > EXTENT)) {\n this.addBorderIntersection(3, interpolate(prev.x, p.x, (EXTENT - prev.y) / (p.y - prev.y)));\n }\n }\n\n addBorderIntersection(index: 0 | 1 | 2 | 3, i: number) {\n if (!this.borders) {\n this.borders = [\n [Number.MAX_VALUE, -Number.MAX_VALUE],\n [Number.MAX_VALUE, -Number.MAX_VALUE],\n [Number.MAX_VALUE, -Number.MAX_VALUE],\n [Number.MAX_VALUE, -Number.MAX_VALUE]\n ];\n }\n const b = this.borders[index];\n if (i < b[0]) b[0] = i;\n if (i > b[1]) b[1] = i;\n }\n\n processBorderOverlap(p: Point, prev: Point) {\n if (p.x === prev.x) {\n if (p.y === prev.y) return; // custom defined geojson could have points repeated.\n const index = p.x === 0 ? 0 : 1;\n this.addBorderIntersection(index, prev.y);\n this.addBorderIntersection(index, p.y);\n } else {\n assert(p.y === prev.y);\n const index = p.y === 0 ? 2 : 3;\n this.addBorderIntersection(index, prev.x);\n this.addBorderIntersection(index, p.x);\n }\n }\n\n centroid(): Point {\n const count = this.polyCount.reduce((acc, p) => acc + p.edges, 0);\n return count !== 0 ? this.acc.div(count)._round() : new Point(0, 0);\n }\n\n span(): Point {\n return new Point(this.max.x - this.min.x, this.max.y - this.min.y);\n }\n\n intersectsCount(): number {\n return this.borders.reduce((acc, p) => acc + +(p[0] !== Number.MAX_VALUE), 0);\n }\n}\n\nclass FillExtrusionBucket implements Bucket {\n index: number;\n zoom: number;\n canonical: CanonicalTileID;\n overscaling: number;\n enableTerrain: boolean;\n layers: Array<FillExtrusionStyleLayer>;\n layerIds: Array<string>;\n stateDependentLayers: Array<FillExtrusionStyleLayer>;\n stateDependentLayerIds: Array<string>;\n\n layoutVertexArray: FillExtrusionLayoutArray;\n layoutVertexBuffer: VertexBuffer;\n\n centroidVertexArray: FillExtrusionCentroidArray;\n centroidVertexBuffer: VertexBuffer;\n\n layoutVertexExtArray: ?FillExtrusionExtArray;\n layoutVertexExtBuffer: ?VertexBuffer;\n\n indexArray: TriangleIndexArray;\n indexBuffer: IndexBuffer;\n\n hasPattern: boolean;\n programConfigurations: ProgramConfigurationSet<FillExtrusionStyleLayer>;\n segments: SegmentVector;\n uploaded: boolean;\n features: Array<BucketFeature>;\n\n featuresOnBorder: Array<PartMetadata>;\n // borders / borderDoneWithNeighborZ: 0 - left, 1, right, 2 - top, 3 - bottom\n borders: Array<Array<number>>; // For each side, indices into featuresOnBorder array.\n borderDoneWithNeighborZ: Array<number>;\n needsCentroidUpdate: boolean;\n tileToMeter: number; // cache conversion.\n projection: ProjectionSpecification;\n\n constructor(options: BucketParameters<FillExtrusionStyleLayer>) {\n this.zoom = options.zoom;\n this.canonical = options.canonical;\n this.overscaling = options.overscaling;\n this.layers = options.layers;\n this.layerIds = this.layers.map(layer => layer.id);\n this.index = options.index;\n this.hasPattern = false;\n this.projection = options.projection;\n\n this.layoutVertexArray = new FillExtrusionLayoutArray();\n this.centroidVertexArray = new FillExtrusionCentroidArray();\n this.indexArray = new TriangleIndexArray();\n this.programConfigurations = new ProgramConfigurationSet(options.layers, options.zoom);\n this.segments = new SegmentVector();\n this.stateDependentLayerIds = this.layers.filter((l) => l.isStateDependent()).map((l) => l.id);\n this.enableTerrain = options.enableTerrain;\n }\n\n populate(features: Array<IndexedFeature>, options: PopulateParameters, canonical: CanonicalTileID, tileTransform: TileTransform) {\n this.features = [];\n this.hasPattern = hasPattern('fill-extrusion', this.layers, options);\n this.featuresOnBorder = [];\n this.borders = [[], [], [], []];\n this.borderDoneWithNeighborZ = [-1, -1, -1, -1];\n this.tileToMeter = tileToMeter(canonical);\n\n for (const {feature, id, index, sourceLayerIndex} of features) {\n const needGeometry = this.layers[0]._featureFilter.needGeometry;\n const evaluationFeature = toEvaluationFeature(feature, needGeometry);\n\n if (!this.layers[0]._featureFilter.filter(new EvaluationParameters(this.zoom), evaluationFeature, canonical)) continue;\n\n const bucketFeature: BucketFeature = {\n id,\n sourceLayerIndex,\n index,\n geometry: needGeometry ? evaluationFeature.geometry : loadGeometry(feature, canonical, tileTransform),\n properties: feature.properties,\n type: feature.type,\n patterns: {}\n };\n\n const vertexArrayOffset = this.layoutVertexArray.length;\n if (this.hasPattern) {\n this.features.push(addPatternDependencies('fill-extrusion', this.layers, bucketFeature, this.zoom, options));\n } else {\n this.addFeature(bucketFeature, bucketFeature.geometry, index, canonical, {}, options.availableImages, tileTransform);\n }\n\n options.featureIndex.insert(feature, bucketFeature.geometry, index, sourceLayerIndex, this.index, vertexArrayOffset);\n }\n this.sortBorders();\n }\n\n addFeatures(options: PopulateParameters, canonical: CanonicalTileID, imagePositions: SpritePositions, availableImages: Array<string>, tileTransform: TileTransform) {\n for (const feature of this.features) {\n const {geometry} = feature;\n this.addFeature(feature, geometry, feature.index, canonical, imagePositions, availableImages, tileTransform);\n }\n this.sortBorders();\n }\n\n update(states: FeatureStates, vtLayer: VectorTileLayer, availableImages: Array<string>, imagePositions: SpritePositions) {\n if (!this.stateDependentLayers.length) return;\n this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, availableImages, imagePositions);\n }\n\n isEmpty(): boolean {\n return this.layoutVertexArray.length === 0;\n }\n\n uploadPending(): boolean {\n return !this.uploaded || this.programConfigurations.needsUpload;\n }\n\n upload(context: Context) {\n if (!this.uploaded) {\n this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, layoutAttributes);\n this.indexBuffer = context.createIndexBuffer(this.indexArray);\n\n if (this.layoutVertexExtArray) {\n this.layoutVertexExtBuffer = context.createVertexBuffer(this.layoutVertexExtArray, fillExtrusionAttributesExt.members, true);\n }\n }\n this.programConfigurations.upload(context);\n this.uploaded = true;\n }\n\n uploadCentroid(context: Context) {\n if (this.centroidVertexArray.length === 0) return;\n if (!this.centroidVertexBuffer) {\n this.centroidVertexBuffer = context.createVertexBuffer(this.centroidVertexArray, centroidAttributes.members, true);\n } else if (this.needsCentroidUpdate) {\n this.centroidVertexBuffer.updateData(this.centroidVertexArray);\n }\n this.needsCentroidUpdate = false;\n }\n\n destroy() {\n if (!this.layoutVertexBuffer) return;\n this.layoutVertexBuffer.destroy();\n if (this.centroidVertexBuffer) {\n this.centroidVertexBuffer.destroy();\n }\n if (this.layoutVertexExtBuffer) {\n this.layoutVertexExtBuffer.destroy();\n }\n this.indexBuffer.destroy();\n this.programConfigurations.destroy();\n this.segments.destroy();\n }\n\n addFeature(feature: BucketFeature, geometry: Array<Array<Point>>, index: number, canonical: CanonicalTileID, imagePositions: SpritePositions, availableImages: Array<string>, tileTransform: TileTransform) {\n const tileBounds = [new Point(0, 0), new Point(EXTENT, EXTENT)];\n const projection = tileTransform.projection;\n const isGlobe = projection.name === 'globe';\n const metadata = this.enableTerrain && !isGlobe ? new PartMetadata() : null;\n\n if (isGlobe && !this.layoutVertexExtArray) {\n this.layoutVertexExtArray = new FillExtrusionExtArray();\n }\n\n const polygons = classifyRings(geometry, EARCUT_MAX_RINGS);\n\n for (let i = polygons.length - 1; i >= 0; i--) {\n const polygon = polygons[i];\n if (polygon.length === 0 || isEntirelyOutside(polygon[0])) {\n polygons.splice(i, 1);\n }\n }\n\n let clippedPolygons: ClippedPolygon[];\n if (isGlobe) {\n // Perform tesselation for polygons of tiles in order to support long planar\n // triangles on the curved surface of the globe. This is done for all polygons\n // regardless of their size in order guarantee identical results on all sides of\n // tile boundaries.\n //\n // The globe is subdivided into a 32x16 grid. The number of subdivisions done\n // for a tile depends on the zoom level. For example tile with z=0 requires 2⁴\n // subdivisions, tile with z=1 2³ etc. The subdivision is done in polar coordinates\n // instead of tile coordinates.\n clippedPolygons = resampleFillExtrusionPolygonsForGlobe(polygons, tileBounds, canonical);\n } else {\n clippedPolygons = [];\n for (const polygon of polygons) {\n clippedPolygons.push({polygon, bounds: tileBounds});\n }\n }\n\n for (const clippedPolygon of clippedPolygons) {\n const polygon = clippedPolygon.polygon;\n let numVertices = 0;\n let segment = this.segments.prepareSegment(4, this.layoutVertexArray, this.indexArray);\n\n for (let i = 0; i < polygon.length; i++) {\n const ring = polygon[i];\n if (ring.length === 0) {\n continue;\n }\n numVertices += ring.length;\n\n let edgeDistance = 0;\n if (metadata) metadata.startRing(ring[0]);\n\n for (let p = 0; p < ring.length; p++) {\n const p1 = ring[p];\n\n if (p >= 1) {\n const p2 = ring[p - 1];\n if (!isBoundaryEdge(p1, p2, clippedPolygon.bounds)) {\n if (metadata) metadata.append(p1, p2);\n if (segment.vertexLength + 4 > SegmentVector.MAX_VERTEX_ARRAY_LENGTH) {\n segment = this.segments.prepareSegment(4, this.layoutVertexArray, this.indexArray);\n }\n\n const d = p1.sub(p2)._perp();\n // Given that nz === 0, encode nx / (abs(nx) + abs(ny)) and signs.\n // This information is sufficient to reconstruct normal vector in vertex shader.\n const nxRatio = d.x / (Math.abs(d.x) + Math.abs(d.y));\n const nySign = d.y > 0 ? 1 : 0;\n const dist = p2.dist(p1);\n if (edgeDistance + dist > 32768) edgeDistance = 0;\n\n addVertex(this.layoutVertexArray, p1.x, p1.y, nxRatio, nySign, 0, 0, edgeDistance);\n addVertex(this.layoutVertexArray, p1.x, p1.y, nxRatio, nySign, 0, 1, edgeDistance);\n\n edgeDistance += dist;\n\n addVertex(this.layoutVertexArray, p2.x, p2.y, nxRatio, nySign, 0, 0, edgeDistance);\n addVertex(this.layoutVertexArray, p2.x, p2.y, nxRatio, nySign, 0, 1, edgeDistance);\n\n const bottomRight = segment.vertexLength;\n\n // ┌──────┐\n // │ 0 1 │ Counter-clockwise winding order.\n // │ │ Triangle 1: 0 => 2 => 1\n // │ 2 3 │ Triangle 2: 1 => 2 => 3\n // └──────┘\n this.indexArray.emplaceBack(bottomRight, bottomRight + 2, bottomRight + 1);\n this.indexArray.emplaceBack(bottomRight + 1, bottomRight + 2, bottomRight + 3);\n\n segment.vertexLength += 4;\n segment.primitiveLength += 2;\n\n if (isGlobe) {\n const array: any = this.layoutVertexExtArray;\n\n const projectedP1 = projection.projectTilePoint(p1.x, p1.y, canonical);\n const projectedP2 = projection.projectTilePoint(p2.x, p2.y, canonical);\n\n const n1 = projection.upVector(canonical, p1.x, p1.y);\n const n2 = projection.upVector(canonical, p2.x, p2.y);\n\n addGlobeExtVertex(array, projectedP1, n1);\n addGlobeExtVertex(array, projectedP1, n1);\n addGlobeExtVertex(array, projectedP2, n2);\n addGlobeExtVertex(array, projectedP2, n2);\n }\n }\n }\n }\n }\n\n if (segment.vertexLength + numVertices > SegmentVector.MAX_VERTEX_ARRAY_LENGTH) {\n segment = this.segments.prepareSegment(numVertices, this.layoutVertexArray, this.indexArray);\n }\n\n //Only triangulate and draw the area of the feature if it is a polygon\n //Other feature types (e.g. LineString) do not have area, so triangulation is pointless / undefined\n if (vectorTileFeatureTypes[feature.type] !== 'Polygon')\n continue;\n\n const flattened = [];\n const holeIndices = [];\n const triangleIndex = segment.vertexLength;\n\n for (let i = 0; i < polygon.length; i++) {\n const ring = polygon[i];\n if (ring.length === 0) {\n continue;\n }\n\n if (ring !== polygon[0]) {\n holeIndices.push(flattened.length / 2);\n }\n\n for (let i = 0; i < ring.length; i++) {\n const p = ring[i];\n\n addVertex(this.layoutVertexArray, p.x, p.y, 0, 0, 1, 1, 0);\n\n flattened.push(p.x);\n flattened.push(p.y);\n if (metadata) metadata.currentPolyCount.top++;\n\n if (isGlobe) {\n const array: any = this.layoutVertexExtArray;\n const projectedP = projection.projectTilePoint(p.x, p.y, canonical);\n const n = projection.upVector(canonical, p.x, p.y);\n addGlobeExtVertex(array, projectedP, n);\n }\n }\n }\n\n const indices = earcut(flattened, holeIndices);\n assert(indices.length % 3 === 0);\n\n for (let j = 0; j < indices.length; j += 3) {\n // Counter-clockwise winding order.\n this.indexArray.emplaceBack(\n triangleIndex + indices[j],\n triangleIndex + indices[j + 2],\n triangleIndex + indices[j + 1]);\n }\n\n segment.primitiveLength += indices.length / 3;\n segment.vertexLength += numVertices;\n }\n\n assert(!isGlobe || (this.layoutVertexExtArray && this.layoutVertexExtArray.length === this.layoutVertexArray.length));\n\n if (metadata && metadata.polyCount.length > 0) {\n // When building is split between tiles, don't handle flat roofs here.\n if (metadata.borders) {\n // Store to the bucket. Flat roofs are handled in flatRoofsUpdate,\n // after joining parts that lay in different buckets.\n metadata.vertexArrayOffset = this.centroidVertexArray.length;\n const borders = metadata.borders;\n const index = this.featuresOnBorder.push(metadata) - 1;\n for (let i = 0; i < 4; i++) {\n if (borders[i][0] !== Number.MAX_VALUE) { this.borders[i].push(index); }\n }\n }\n this.encodeCentroid(metadata.borders ? undefined : metadata.centroid(), metadata);\n assert(!this.centroidVertexArray.length || this.centroidVertexArray.length === this.layoutVertexArray.length);\n }\n\n this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, feature, index, imagePositions, availableImages, canonical);\n }\n\n sortBorders() {\n for (let i = 0; i < 4; i++) {\n // Sort by border intersection area minimums, ascending.\n this.borders[i].sort((a, b) => this.featuresOnBorder[a].borders[i][0] - this.featuresOnBorder[b].borders[i][0]);\n }\n }\n\n encodeCentroid(c: Point, metadata: PartMetadata, append: boolean = true) {\n let x, y;\n // Encoded centroid x and y:\n // x y\n // ---------------------------------------------\n // 0 0 Default, no flat roof.\n // 0 1 Hide, used to hide parts of buildings on border while expecting the other side to get loaded\n // >0 0 Elevation encoded to uint16 word\n // >0 >0 Encoded centroid position and x & y span\n if (c) {\n if (c.y !== 0) {\n const span = metadata.span()._mult(this.tileToMeter);\n x = (Math.max(c.x, 1) << 3) + Math.min(7, Math.round(span.x / 10));\n y = (Math.max(c.y, 1) << 3) + Math.min(7, Math.round(span.y / 10));\n } else { // encode height:\n x = Math.ceil((c.x + ELEVATION_OFFSET) * ELEVATION_SCALE);\n y = 0;\n }\n } else {\n // Use the impossible situation (building that has width and doesn't cross border cannot have centroid\n // at border) to encode unprocessed border building: it is initially (append === true) hidden until\n // computing centroid for joined building parts in rendering thread (flatRoofsUpdate). If it intersects more than\n // two borders, flat roof approach is not applied.\n x = 0;\n y = +append; // Hide (1) initially when creating - visibility is changed in draw_fill_extrusion as soon as neighbor tile gets loaded.\n }\n\n assert(append || metadata.vertexArrayOffset !== undefined);\n let offset = append ? this.centroidVertexArray.length : metadata.vertexArrayOffset;\n for (const polyInfo of metadata.polyCount) {\n if (append) {\n this.centroidVertexArray.resize(this.centroidVertexArray.length + polyInfo.edges * 4 + polyInfo.top);\n }\n for (let i = 0; i < polyInfo.edges * 2; i++) {\n this.centroidVertexArray.emplace(offset++, 0, y);\n this.centroidVertexArray.emplace(offset++, x, y);\n }\n for (let i = 0; i < polyInfo.top; i++) {\n this.centroidVertexArray.emplace(offset++, x, y);\n }\n }\n }\n}\n\nregister(FillExtrusionBucket, 'FillExtrusionBucket', {omit: ['layers', 'features']});\nregister(PartMetadata, 'PartMetadata');\n\nexport default FillExtrusionBucket;\n\nfunction isBoundaryEdge(p1, p2, bounds) {\n return (p1.x === p2.x && (p1.x < bounds[0].x || p1.x > bounds[1].x)) ||\n (p1.y === p2.y && (p1.y < bounds[0].y || p1.y > bounds[1].y));\n}\n\nfunction isEntirelyOutside(ring) {\n // Discard rings with corners on border if all other vertices are outside: they get defined\n // also in the tile across the border. Eventual zero area rings at border are discarded by classifyRings\n // and there is no need to handle that case here.\n return ring.every(p => p.x <= 0) ||\n ring.every(p => p.x >= EXTENT) ||\n ring.every(p => p.y <= 0) ||\n ring.every(p => p.y >= EXTENT);\n}\n\nfunction tileToMeter(canonical: CanonicalTileID) {\n const circumferenceAtEquator = 40075017;\n const mercatorY = canonical.y / (1 << canonical.z);\n const exp = Math.exp(Math.PI * (1 - 2 * mercatorY));\n // simplify cos(2 * atan(e) - PI/2) from mercator_coordinate.js, remove trigonometrics.\n return circumferenceAtEquator * 2 * exp / (exp * exp + 1) / EXTENT / (1 << canonical.z);\n}\n\nexport function fillExtrusionHeightLift(): number {\n // A rectangle covering globe is subdivided into a grid of 32 cells\n // This information can be used to deduce a minimum lift value so that\n // fill extrusions with 0 height will never go below the ground.\n const angle = Math.PI / 32.0;\n const tanAngle = Math.tan(angle);\n const r = earthRadius;\n return r * Math.sqrt(1.0 + 2.0 * tanAngle * tanAngle) - r;\n}\n\n// Resamples fill extrusion polygons by subdividing them into 32x16 cells in mercator space.\n// The idea is to allow reprojection of large continuous planar shapes on the surface of the globe\nexport function resampleFillExtrusionPolygonsForGlobe(polygons: Point[][][], tileBounds: [Point, Point], tileID: CanonicalTileID): ClippedPolygon[] {\n const cellCount = 360.0 / 32.0;\n const tiles = 1 << tileID.z;\n const leftLng = lngFromMercatorX(tileID.x / tiles);\n const rightLng = lngFromMercatorX((tileID.x + 1) / tiles);\n const topLat = latFromMercatorY(tileID.y / tiles);\n const bottomLat = latFromMercatorY((tileID.y + 1) / tiles);\n const cellCountOnXAxis = Math.ceil((rightLng - leftLng) / cellCount);\n const cellCountOnYAxis = Math.ceil((topLat - bottomLat) / cellCount);\n\n const splitFn = (axis, min, max) => {\n if (axis === 0) {\n return 0.5 * (min + max);\n } else {\n const maxLat = latFromMercatorY((tileID.y + min / EXTENT) / tiles);\n const minLat = latFromMercatorY((tileID.y + max / EXTENT) / tiles);\n const midLat = 0.5 * (minLat + maxLat);\n return (mercatorYfromLat(midLat) * tiles - tileID.y) * EXTENT;\n }\n };\n\n return subdividePolygons(polygons, tileBounds, cellCountOnXAxis, cellCountOnYAxis, 1.0, splitFn);\n}\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n CrossFadedDataDrivenProperty,\n CrossFadedProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\n\nexport type PaintProps = {|\n \"fill-extrusion-opacity\": DataConstantProperty<number>,\n \"fill-extrusion-color\": DataDrivenProperty<Color>,\n \"fill-extrusion-translate\": DataConstantProperty<[number, number]>,\n \"fill-extrusion-translate-anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n \"fill-extrusion-pattern\": CrossFadedDataDrivenProperty<ResolvedImage>,\n \"fill-extrusion-height\": DataDrivenProperty<number>,\n \"fill-extrusion-base\": DataDrivenProperty<number>,\n \"fill-extrusion-vertical-gradient\": DataConstantProperty<boolean>,\n|};\n\nconst paint: Properties<PaintProps> = new Properties({\n \"fill-extrusion-opacity\": new DataConstantProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-opacity\"]),\n \"fill-extrusion-color\": new DataDrivenProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-color\"]),\n \"fill-extrusion-translate\": new DataConstantProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-translate\"]),\n \"fill-extrusion-translate-anchor\": new DataConstantProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-translate-anchor\"]),\n \"fill-extrusion-pattern\": new CrossFadedDataDrivenProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-pattern\"]),\n \"fill-extrusion-height\": new DataDrivenProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-height\"]),\n \"fill-extrusion-base\": new DataDrivenProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-base\"]),\n \"fill-extrusion-vertical-gradient\": new DataConstantProperty(styleSpec[\"paint_fill-extrusion\"][\"fill-extrusion-vertical-gradient\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint }: $Exact<{\n paint: Properties<PaintProps>\n}>);\n","export { getURL, getTileBBox, getMercCoords };\n\n\n/**\n * getURL\n *\n * @param {String} baseUrl Base url of the WMS server\n * @param {String} layer Layer name\n * @param {Number} x Tile coordinate x\n * @param {Number} y Tile coordinate y\n * @param {Number} z Tile zoom\n * @param {Object} [options]\n * @param {String} [options.format='image/png']\n * @param {String} [options.service='WMS']\n * @param {String} [options.version='1.1.1']\n * @param {String} [options.request='GetMap']\n * @param {String} [options.srs='EPSG:3857']\n * @param {Number} [options.width='256']\n * @param {Number} [options.height='256']\n * @returns {String} url\n * @example\n * var baseUrl = 'http://geodata.state.nj.us/imagerywms/Natural2015';\n * var layer = 'Natural2015';\n * var url = whoots.getURL(baseUrl, layer, 154308, 197167, 19);\n */\nfunction getURL(baseUrl, layer, x, y, z, options) {\n options = options || {};\n\n var url = baseUrl + '?' + [\n 'bbox=' + getTileBBox(x, y, z),\n 'format=' + (options.format || 'image/png'),\n 'service=' + (options.service || 'WMS'),\n 'version=' + (options.version || '1.1.1'),\n 'request=' + (options.request || 'GetMap'),\n 'srs=' + (options.srs || 'EPSG:3857'),\n 'width=' + (options.width || 256),\n 'height=' + (options.height || 256),\n 'layers=' + layer\n ].join('&');\n\n return url;\n}\n\n\n/**\n * getTileBBox\n *\n * @param {Number} x Tile coordinate x\n * @param {Number} y Tile coordinate y\n * @param {Number} z Tile zoom\n * @returns {String} String of the bounding box\n */\nfunction getTileBBox(x, y, z) {\n // for Google/OSM tile scheme we need to alter the y\n y = (Math.pow(2, z) - y - 1);\n\n var min = getMercCoords(x * 256, y * 256, z),\n max = getMercCoords((x + 1) * 256, (y + 1) * 256, z);\n\n return min[0] + ',' + min[1] + ',' + max[0] + ',' + max[1];\n}\n\n\n/**\n * getMercCoords\n *\n * @param {Number} x Pixel coordinate x\n * @param {Number} y Pixel coordinate y\n * @param {Number} z Tile zoom\n * @returns {Array} [x, y]\n */\nfunction getMercCoords(x, y, z) {\n var resolution = (2 * Math.PI * 6378137 / 256) / Math.pow(2, z),\n merc_x = (x * resolution - 2 * Math.PI * 6378137 / 2.0),\n merc_y = (y * resolution - 2 * Math.PI * 6378137 / 2.0);\n\n return [merc_x, merc_y];\n}\n","// @flow\n\nimport {getTileBBox} from '@mapbox/whoots-js';\nimport assert from 'assert';\nimport {register} from '../util/web_worker_transfer.js';\n\nexport class CanonicalTileID {\n z: number;\n x: number;\n y: number;\n key: number;\n\n constructor(z: number, x: number, y: number) {\n assert(z >= 0 && z <= 25);\n assert(x >= 0 && x < Math.pow(2, z));\n assert(y >= 0 && y < Math.pow(2, z));\n this.z = z;\n this.x = x;\n this.y = y;\n this.key = calculateKey(0, z, z, x, y);\n }\n\n equals(id: CanonicalTileID): boolean {\n return this.z === id.z && this.x === id.x && this.y === id.y;\n }\n\n // given a list of urls, choose a url template and return a tile URL\n url(urls: Array<string>, scheme: ?string): string {\n const bbox = getTileBBox(this.x, this.y, this.z);\n const quadkey = getQuadkey(this.z, this.x, this.y);\n\n return urls[(this.x + this.y) % urls.length]\n .replace('{prefix}', (this.x % 16).toString(16) + (this.y % 16).toString(16))\n .replace(/{z}/g, String(this.z))\n .replace(/{x}/g, String(this.x))\n .replace(/{y}/g, String(scheme === 'tms' ? (Math.pow(2, this.z) - this.y - 1) : this.y))\n .replace('{quadkey}', quadkey)\n .replace('{bbox-epsg-3857}', bbox);\n }\n\n toString(): string {\n return `${this.z}/${this.x}/${this.y}`;\n }\n}\n\nexport class UnwrappedTileID {\n wrap: number;\n canonical: CanonicalTileID;\n key: number;\n\n constructor(wrap: number, canonical: CanonicalTileID) {\n this.wrap = wrap;\n this.canonical = canonical;\n this.key = calculateKey(wrap, canonical.z, canonical.z, canonical.x, canonical.y);\n }\n}\n\nexport class OverscaledTileID {\n overscaledZ: number;\n wrap: number;\n canonical: CanonicalTileID;\n key: number;\n projMatrix: Float32Array;\n\n constructor(overscaledZ: number, wrap: number, z: number, x: number, y: number) {\n assert(overscaledZ >= z);\n this.overscaledZ = overscaledZ;\n this.wrap = wrap;\n this.canonical = new CanonicalTileID(z, +x, +y);\n this.key = wrap === 0 && overscaledZ === z ? this.canonical.key : calculateKey(wrap, overscaledZ, z, x, y);\n }\n\n equals(id: OverscaledTileID): boolean {\n return this.overscaledZ === id.overscaledZ && this.wrap === id.wrap && this.canonical.equals(id.canonical);\n }\n\n scaledTo(targetZ: number): OverscaledTileID {\n assert(targetZ <= this.overscaledZ);\n const zDifference = this.canonical.z - targetZ;\n if (targetZ > this.canonical.z) {\n return new OverscaledTileID(targetZ, this.wrap, this.canonical.z, this.canonical.x, this.canonical.y);\n } else {\n return new OverscaledTileID(targetZ, this.wrap, targetZ, this.canonical.x >> zDifference, this.canonical.y >> zDifference);\n }\n }\n\n /*\n * calculateScaledKey is an optimization:\n * when withWrap == true, implements the same as this.scaledTo(z).key,\n * when withWrap == false, implements the same as this.scaledTo(z).wrapped().key.\n */\n calculateScaledKey(targetZ: number, withWrap: boolean = true): number {\n if (this.overscaledZ === targetZ && withWrap) return this.key;\n if (targetZ > this.canonical.z) {\n return calculateKey(this.wrap * +withWrap, targetZ, this.canonical.z, this.canonical.x, this.canonical.y);\n } else {\n const zDifference = this.canonical.z - targetZ;\n return calculateKey(this.wrap * +withWrap, targetZ, targetZ, this.canonical.x >> zDifference, this.canonical.y >> zDifference);\n }\n }\n\n isChildOf(parent: OverscaledTileID): boolean {\n if (parent.wrap !== this.wrap) {\n // We can't be a child if we're in a different world copy\n return false;\n }\n const zDifference = this.canonical.z - parent.canonical.z;\n // We're first testing for z == 0, to avoid a 32 bit shift, which is undefined.\n return parent.overscaledZ === 0 || (\n parent.overscaledZ < this.overscaledZ &&\n parent.canonical.x === (this.canonical.x >> zDifference) &&\n parent.canonical.y === (this.canonical.y >> zDifference));\n }\n\n children(sourceMaxZoom: number): Array<OverscaledTileID> {\n if (this.overscaledZ >= sourceMaxZoom) {\n // return a single tile coord representing a an overscaled tile\n return [new OverscaledTileID(this.overscaledZ + 1, this.wrap, this.canonical.z, this.canonical.x, this.canonical.y)];\n }\n\n const z = this.canonical.z + 1;\n const x = this.canonical.x * 2;\n const y = this.canonical.y * 2;\n return [\n new OverscaledTileID(z, this.wrap, z, x, y),\n new OverscaledTileID(z, this.wrap, z, x + 1, y),\n new OverscaledTileID(z, this.wrap, z, x, y + 1),\n new OverscaledTileID(z, this.wrap, z, x + 1, y + 1)\n ];\n }\n\n isLessThan(rhs: OverscaledTileID): boolean {\n if (this.wrap < rhs.wrap) return true;\n if (this.wrap > rhs.wrap) return false;\n\n if (this.overscaledZ < rhs.overscaledZ) return true;\n if (this.overscaledZ > rhs.overscaledZ) return false;\n\n if (this.canonical.x < rhs.canonical.x) return true;\n if (this.canonical.x > rhs.canonical.x) return false;\n\n if (this.canonical.y < rhs.canonical.y) return true;\n return false;\n }\n\n wrapped(): OverscaledTileID {\n return new OverscaledTileID(this.overscaledZ, 0, this.canonical.z, this.canonical.x, this.canonical.y);\n }\n\n unwrapTo(wrap: number): OverscaledTileID {\n return new OverscaledTileID(this.overscaledZ, wrap, this.canonical.z, this.canonical.x, this.canonical.y);\n }\n\n overscaleFactor(): number {\n return Math.pow(2, this.overscaledZ - this.canonical.z);\n }\n\n toUnwrapped(): UnwrappedTileID {\n return new UnwrappedTileID(this.wrap, this.canonical);\n }\n\n toString(): string {\n return `${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`;\n }\n}\n\nfunction calculateKey(wrap: number, overscaledZ: number, z: number, x: number, y: number): number {\n // only use 22 bits for x & y so that the key fits into MAX_SAFE_INTEGER\n const dim = 1 << Math.min(z, 22);\n let xy = dim * (y % dim) + (x % dim);\n\n // zigzag-encode wrap if we have the room for it\n if (wrap && z < 22) {\n const bitsAvailable = 2 * (22 - z);\n xy += dim * dim * ((wrap < 0 ? -2 * wrap - 1 : 2 * wrap) % (1 << bitsAvailable));\n }\n\n // encode z into 5 bits (24 max) and overscaledZ into 4 bits (10 max)\n const key = ((xy * 32) + z) * 16 + (overscaledZ - z);\n assert(key >= 0 && key <= Number.MAX_SAFE_INTEGER);\n\n return key;\n}\n\nfunction getQuadkey(z, x, y) {\n let quadkey = '', mask;\n for (let i = z; i > 0; i--) {\n mask = 1 << (i - 1);\n quadkey += ((x & mask ? 1 : 0) + (y & mask ? 2 : 0));\n }\n return quadkey;\n}\n\nregister(CanonicalTileID, 'CanonicalTileID');\nregister(OverscaledTileID, 'OverscaledTileID', {omit: ['projMatrix']});\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\nimport FillExtrusionBucket, {ELEVATION_SCALE, ELEVATION_OFFSET, fillExtrusionHeightLift, resampleFillExtrusionPolygonsForGlobe} from '../../data/bucket/fill_extrusion_bucket.js';\nimport {polygonIntersectsPolygon, polygonIntersectsMultiPolygon} from '../../util/intersection_tests.js';\nimport {translateDistance, tilespaceTranslate} from '../query_utils.js';\nimport properties from './fill_extrusion_style_layer_properties.js';\nimport {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js';\nimport Point from '@mapbox/point-geometry';\nimport ProgramConfiguration from '../../data/program_configuration.js';\nimport {vec3, vec4} from 'gl-matrix';\nimport EXTENT from '../../data/extent.js';\nimport {CanonicalTileID} from '../../source/tile_id.js';\n\nimport type {FeatureState} from '../../style-spec/expression/index.js';\nimport type {BucketParameters} from '../../data/bucket.js';\nimport type {PaintProps} from './fill_extrusion_style_layer_properties.js';\nimport type Transform from '../../geo/transform.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\nimport type {TilespaceQueryGeometry} from '../query_geometry.js';\nimport type {DEMSampler} from '../../terrain/elevation.js';\nimport type {Vec2, Vec4} from 'gl-matrix';\n\nclass FillExtrusionStyleLayer extends StyleLayer {\n _transitionablePaint: Transitionable<PaintProps>;\n _transitioningPaint: Transitioning<PaintProps>;\n paint: PossiblyEvaluated<PaintProps>;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n }\n\n createBucket(parameters: BucketParameters<FillExtrusionStyleLayer>): FillExtrusionBucket {\n return new FillExtrusionBucket(parameters);\n }\n\n queryRadius(): number {\n return translateDistance(this.paint.get('fill-extrusion-translate'));\n }\n\n is3D(): boolean {\n return true;\n }\n\n getProgramIds(): string[] {\n const patternProperty = this.paint.get('fill-extrusion-pattern');\n const image = patternProperty.constantOr((1: any));\n return [image ? 'fillExtrusionPattern' : 'fillExtrusion'];\n }\n\n getProgramConfiguration(zoom: number): ProgramConfiguration {\n return new ProgramConfiguration(this, zoom);\n }\n\n queryIntersectsFeature(queryGeometry: TilespaceQueryGeometry,\n feature: VectorTileFeature,\n featureState: FeatureState,\n geometry: Array<Array<Point>>,\n zoom: number,\n transform: Transform,\n pixelPosMatrix: Float32Array,\n elevationHelper: ?DEMSampler,\n layoutVertexArrayOffset: number): boolean | number {\n\n const translation = tilespaceTranslate(this.paint.get('fill-extrusion-translate'),\n this.paint.get('fill-extrusion-translate-anchor'),\n transform.angle,\n queryGeometry.pixelToTileUnitsFactor);\n const height = this.paint.get('fill-extrusion-height').evaluate(feature, featureState);\n const base = this.paint.get('fill-extrusion-base').evaluate(feature, featureState);\n\n const centroid = [0, 0];\n const terrainVisible = elevationHelper && transform.elevation;\n const exaggeration = transform.elevation ? transform.elevation.exaggeration() : 1;\n const bucket = queryGeometry.tile.getBucket(this);\n if (terrainVisible && bucket instanceof FillExtrusionBucket) {\n const centroidVertexArray = bucket.centroidVertexArray;\n\n // See FillExtrusionBucket#encodeCentroid(), centroid is inserted at vertexOffset + 1\n const centroidOffset = layoutVertexArrayOffset + 1;\n if (centroidOffset < centroidVertexArray.length) {\n const centroidVertexObject = centroidVertexArray.get(centroidOffset);\n centroid[0] = centroidVertexObject.a_centroid_pos0;\n centroid[1] = centroidVertexObject.a_centroid_pos1;\n }\n }\n\n // Early exit if fill extrusion is still hidden while waiting for backfill\n const isHidden = centroid[0] === 0 && centroid[1] === 1;\n if (isHidden) return false;\n\n if (transform.projection.name === 'globe') {\n // Fill extrusion geometry has to be resampled so that large planar polygons\n // can be rendered on the curved surface\n const bounds = [new Point(0, 0), new Point(EXTENT, EXTENT)];\n const resampledGeometry = resampleFillExtrusionPolygonsForGlobe([geometry], bounds, queryGeometry.tileID.canonical);\n geometry = resampledGeometry.map(clipped => clipped.polygon).flat();\n }\n\n const demSampler = terrainVisible ? elevationHelper : null;\n const projected = projectExtrusion(transform, geometry, base, height, translation, pixelPosMatrix, demSampler, centroid, exaggeration, transform.center.lat, queryGeometry.tileID.canonical);\n const projectedBase = projected[0];\n const projectedTop = projected[1];\n\n const screenQuery = queryGeometry.queryGeometry;\n const projectedQueryGeometry = screenQuery.isPointQuery() ? screenQuery.screenBounds : screenQuery.screenGeometry;\n return checkIntersection(projectedBase, projectedTop, projectedQueryGeometry);\n }\n}\n\nfunction dot(a, b) {\n return a.x * b.x + a.y * b.y;\n}\n\nexport function getIntersectionDistance(projectedQueryGeometry: Array<Point>, projectedFace: Array<Point>): number {\n\n if (projectedQueryGeometry.length === 1) {\n // For point queries calculate the z at which the point intersects the face\n // using barycentric coordinates.\n\n // Find the barycentric coordinates of the projected point within the first\n // triangle of the face, using only the xy plane. It doesn't matter if the\n // point is outside the first triangle because all the triangles in the face\n // are in the same plane.\n //\n // Check whether points are coincident and use other points if they are.\n let i = 0;\n const a = projectedFace[i++];\n let b;\n while (!b || a.equals(b)) {\n b = projectedFace[i++];\n if (!b) return Infinity;\n }\n\n // Loop until point `c` is not colinear with points `a` and `b`.\n for (; i < projectedFace.length; i++) {\n const c = projectedFace[i];\n\n const p = projectedQueryGeometry[0];\n\n const ab = b.sub(a);\n const ac = c.sub(a);\n const ap = p.sub(a);\n\n const dotABAB = dot(ab, ab);\n const dotABAC = dot(ab, ac);\n const dotACAC = dot(ac, ac);\n const dotAPAB = dot(ap, ab);\n const dotAPAC = dot(ap, ac);\n const denom = dotABAB * dotACAC - dotABAC * dotABAC;\n\n const v = (dotACAC * dotAPAB - dotABAC * dotAPAC) / denom;\n const w = (dotABAB * dotAPAC - dotABAC * dotAPAB) / denom;\n const u = 1 - v - w;\n\n // Use the barycentric weighting along with the original triangle z coordinates to get the point of intersection.\n const distance = a.z * u + b.z * v + c.z * w;\n\n if (isFinite(distance)) return distance;\n }\n\n return Infinity;\n\n } else {\n // The counts as closest is less clear when the query is a box. This\n // returns the distance to the nearest point on the face, whether it is\n // within the query or not. It could be more correct to return the\n // distance to the closest point within the query box but this would be\n // more complicated and expensive to calculate with little benefit.\n let closestDistance = Infinity;\n for (const p of projectedFace) {\n closestDistance = Math.min(closestDistance, p.z);\n }\n return closestDistance;\n }\n}\n\nfunction checkIntersection(projectedBase: Array<Point>, projectedTop: Array<Point>, projectedQueryGeometry: Array<Point>) {\n let closestDistance = Infinity;\n\n if (polygonIntersectsMultiPolygon(projectedQueryGeometry, projectedTop)) {\n closestDistance = getIntersectionDistance(projectedQueryGeometry, projectedTop[0]);\n }\n\n for (let r = 0; r < projectedTop.length; r++) {\n const ringTop = projectedTop[r];\n const ringBase = projectedBase[r];\n for (let p = 0; p < ringTop.length - 1; p++) {\n const topA = ringTop[p];\n const topB = ringTop[p + 1];\n const baseA = ringBase[p];\n const baseB = ringBase[p + 1];\n const face = [topA, topB, baseB, baseA, topA];\n if (polygonIntersectsPolygon(projectedQueryGeometry, face)) {\n closestDistance = Math.min(closestDistance, getIntersectionDistance(projectedQueryGeometry, face));\n }\n }\n }\n\n return closestDistance === Infinity ? false : closestDistance;\n}\n\nfunction projectExtrusion(tr: Transform, geometry: Array<Array<Point>>, zBase: number, zTop: number, translation: Point, m: Float32Array, demSampler: ?DEMSampler, centroid: Vec2, exaggeration: number, lat: number, tileID: CanonicalTileID) {\n if (tr.projection.name === 'globe') {\n return projectExtrusionGlobe(tr, geometry, zBase, zTop, translation, m, demSampler, centroid, exaggeration, lat, tileID);\n } else {\n if (demSampler) {\n return projectExtrusion3D(geometry, zBase, zTop, translation, m, demSampler, centroid, exaggeration, lat);\n } else {\n return projectExtrusion2D(geometry, zBase, zTop, translation, m);\n }\n }\n}\n\nfunction projectExtrusionGlobe(tr: Transform, geometry: Array<Array<Point>>, zBase: number, zTop: number, translation: Point, m: Float32Array, demSampler: ?DEMSampler, centroid: Vec2, exaggeration: number, lat: number, tileID: CanonicalTileID) {\n const projectedBase = [];\n const projectedTop = [];\n const elevationScale = tr.projection.upVectorScale(tileID, tr.center.lat, tr.worldSize).metersToTile;\n const basePoint = [0, 0, 0, 1];\n const topPoint = [0, 0, 0, 1];\n\n const setPoint = (point, x, y, z) => {\n point[0] = x;\n point[1] = y;\n point[2] = z;\n point[3] = 1;\n };\n\n // Fixed \"lift\" value is added to height so that 0-height fill extrusions wont clip with globe's surface\n const lift = fillExtrusionHeightLift();\n\n if (zBase > 0) {\n zBase += lift;\n }\n zTop += lift;\n\n for (const r of geometry) {\n const ringBase = [];\n const ringTop = [];\n for (const p of r) {\n const x = p.x + translation.x;\n const y = p.y + translation.y;\n\n // Reproject tile coordinate into ecef and apply elevation to correct direction\n const reproj = tr.projection.projectTilePoint(x, y, tileID);\n const dir = tr.projection.upVector(tileID, p.x, p.y);\n\n let zBasePoint = zBase;\n let zTopPoint = zTop;\n\n if (demSampler) {\n const offset = getTerrainHeightOffset(x, y, zBase, zTop, demSampler, centroid, exaggeration, lat);\n\n zBasePoint += offset.base;\n zTopPoint += offset.top;\n }\n\n if (zBase !== 0) {\n setPoint(\n basePoint,\n reproj.x + dir[0] * elevationScale * zBasePoint,\n reproj.y + dir[1] * elevationScale * zBasePoint,\n reproj.z + dir[2] * elevationScale * zBasePoint);\n } else {\n setPoint(basePoint, reproj.x, reproj.y, reproj.z);\n }\n\n setPoint(\n topPoint,\n reproj.x + dir[0] * elevationScale * zTopPoint,\n reproj.y + dir[1] * elevationScale * zTopPoint,\n reproj.z + dir[2] * elevationScale * zTopPoint);\n\n vec3.transformMat4(basePoint, basePoint, m);\n vec3.transformMat4(topPoint, topPoint, m);\n\n ringBase.push(toPoint(basePoint));\n ringTop.push(toPoint(topPoint));\n }\n projectedBase.push(ringBase);\n projectedTop.push(ringTop);\n }\n\n return [projectedBase, projectedTop];\n}\n\n/*\n * Project the geometry using matrix `m`. This is essentially doing\n * `vec4.transformMat4([], [p.x, p.y, z, 1], m)` but the multiplication\n * is inlined so that parts of the projection that are the same across\n * different points can only be done once. This produced a measurable\n * performance improvement.\n */\nfunction projectExtrusion2D(geometry: Array<Array<Point>>, zBase: number, zTop: number, translation: Point, m: Float32Array) {\n const projectedBase = [];\n const projectedTop = [];\n\n const baseXZ = m[8] * zBase;\n const baseYZ = m[9] * zBase;\n const baseZZ = m[10] * zBase;\n const baseWZ = m[11] * zBase;\n const topXZ = m[8] * zTop;\n const topYZ = m[9] * zTop;\n const topZZ = m[10] * zTop;\n const topWZ = m[11] * zTop;\n\n for (const r of geometry) {\n const ringBase = [];\n const ringTop = [];\n for (const p of r) {\n const x = p.x + translation.x;\n const y = p.y + translation.y;\n\n const sX = m[0] * x + m[4] * y + m[12];\n const sY = m[1] * x + m[5] * y + m[13];\n const sZ = m[2] * x + m[6] * y + m[14];\n const sW = m[3] * x + m[7] * y + m[15];\n\n const baseX = sX + baseXZ;\n const baseY = sY + baseYZ;\n const baseZ = sZ + baseZZ;\n const baseW = Math.max(sW + baseWZ, 0.00001);\n\n const topX = sX + topXZ;\n const topY = sY + topYZ;\n const topZ = sZ + topZZ;\n const topW = Math.max(sW + topWZ, 0.00001);\n\n const b = new Point(baseX / baseW, baseY / baseW);\n b.z = baseZ / baseW;\n ringBase.push(b);\n\n const t = new Point(topX / topW, topY / topW);\n t.z = topZ / topW;\n ringTop.push(t);\n }\n projectedBase.push(ringBase);\n projectedTop.push(ringTop);\n }\n return [projectedBase, projectedTop];\n}\n\n/*\n * Projects a fill extrusion vertices to screen while accounting for terrain.\n * This and its dependent functions are ported directly from `fill_extrusion.vertex.glsl`\n * with a few co-ordinate space differences.\n *\n * - Matrix `m` projects to screen-pixel space instead of to gl-coordinates (NDC)\n * - Texture querying is performed in texture pixel coordinates instead of normalized uv coordinates.\n * - Height offset calculation for fill-extrusion-base is offset with -1 instead of -5 to prevent underground picking.\n */\nfunction projectExtrusion3D(geometry: Array<Array<Point>>, zBase: number, zTop: number, translation: Point, m: Float32Array, demSampler: DEMSampler, centroid: Vec2, exaggeration: number, lat: number) {\n const projectedBase = [];\n const projectedTop = [];\n const v = [0, 0, 0, 1];\n\n for (const r of geometry) {\n const ringBase = [];\n const ringTop = [];\n for (const p of r) {\n const x = p.x + translation.x;\n const y = p.y + translation.y;\n const heightOffset = getTerrainHeightOffset(x, y, zBase, zTop, demSampler, centroid, exaggeration, lat);\n\n v[0] = x;\n v[1] = y;\n v[2] = heightOffset.base;\n v[3] = 1;\n vec4.transformMat4(v, v, m);\n v[3] = Math.max(v[3], 0.00001);\n const base = toPoint([v[0] / v[3], v[1] / v[3], v[2] / v[3]]);\n\n v[0] = x;\n v[1] = y;\n v[2] = heightOffset.top;\n v[3] = 1;\n vec4.transformMat4(v, v, m);\n v[3] = Math.max(v[3], 0.00001);\n const top = toPoint([v[0] / v[3], v[1] / v[3], v[2] / v[3]]);\n\n ringBase.push(base);\n ringTop.push(top);\n }\n projectedBase.push(ringBase);\n projectedTop.push(ringTop);\n }\n return [projectedBase, projectedTop];\n}\n\nfunction toPoint(v: Vec4): Point {\n const p = new Point(v[0], v[1]);\n p.z = v[2];\n return p;\n}\n\nfunction getTerrainHeightOffset(x: number, y: number, zBase: number, zTop: number, demSampler: DEMSampler, centroid: Vec2, exaggeration: number, lat: number): { base: number, top: number} {\n const ele = exaggeration * demSampler.getElevationAt(x, y, true, true);\n const flatRoof = centroid[0] !== 0;\n const centroidElevation = flatRoof ? centroid[1] === 0 ? exaggeration * elevationFromUint16(centroid[0]) : exaggeration * flatElevation(demSampler, centroid, lat) : ele;\n return {\n base: ele + (zBase === 0) ? -1 : zBase, // Use -1 instead of -5 in shader to prevent picking underground\n top: flatRoof ? Math.max(centroidElevation + zTop, ele + zBase + 2) : ele + zTop\n };\n}\n\n// Elevation is encoded into unit16 in fill_extrusion_bucket.js FillExtrusionBucket#encodeCentroid\nfunction elevationFromUint16(n: number): number {\n return n / ELEVATION_SCALE - ELEVATION_OFFSET;\n}\n\n// Equivalent GPU side function is in _prelude_terrain.vertex.glsl\nfunction flatElevation(demSampler: DEMSampler, centroid: Vec2, lat: number): number {\n // Span and pos are packed two 16 bit uint16 values in fill_extrusion_bucket.js FillExtrusionBucket#encodeCentroid\n // pos is encoded by << by 3 bits thus dividing by 8 performs equivalent of right shifting it back.\n const posX = Math.floor(centroid[0] / 8);\n const posY = Math.floor(centroid[1] / 8);\n\n // Span is stored in the lower three bits in multiples of 10\n const spanX = 10 * (centroid[0] - posX * 8);\n const spanY = 10 * (centroid[1] - posY * 8);\n\n // Get height at centroid\n const z = demSampler.getElevationAt(posX, posY, true, true);\n const meterToDEM = demSampler.getMeterToDEM(lat);\n\n const wX = Math.floor(0.5 * (spanX * meterToDEM - 1));\n const wY = Math.floor(0.5 * (spanY * meterToDEM - 1));\n\n const posPx = demSampler.tileCoordToPixel(posX, posY);\n\n const offsetX = 2 * wX + 1;\n const offsetY = 2 * wY + 1;\n const corners = fourSample(demSampler, posPx.x - wX, posPx.y - wY, offsetX, offsetY);\n\n const diffX = Math.abs(corners[0] - corners[1]);\n const diffY = Math.abs(corners[2] - corners[3]);\n const diffZ = Math.abs(corners[0] - corners[2]);\n const diffW = Math.abs(corners[1] - corners[3]);\n\n const diffSumX = diffX + diffY;\n const diffSumY = diffZ + diffW;\n\n const slopeX = Math.min(0.25, meterToDEM * 0.5 * diffSumX / offsetX);\n const slopeY = Math.min(0.25, meterToDEM * 0.5 * diffSumY / offsetY);\n\n return z + Math.max(slopeX * spanX, slopeY * spanY);\n}\n\nfunction fourSample(demSampler: DEMSampler, posX: number, posY: number, offsetX: number, offsetY: number): Vec4 {\n return [\n demSampler.getElevationAtPixel(posX, posY, true),\n demSampler.getElevationAtPixel(posX + offsetY, posY, true),\n demSampler.getElevationAtPixel(posX, posY + offsetY, true),\n demSampler.getElevationAtPixel(posX + offsetX, posY + offsetY, true)\n ];\n}\n\nexport default FillExtrusionStyleLayer;\n","// @flow\nimport {createLayout} from '../../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../../util/struct_array.js';\n\nconst lineLayoutAttributes: StructArrayLayout = createLayout([\n {name: 'a_pos_normal', components: 2, type: 'Int16'},\n {name: 'a_data', components: 4, type: 'Uint8'},\n {name: 'a_linesofar', components: 1, type: 'Float32'}\n], 4);\n\nexport default lineLayoutAttributes;\nexport const {members, size, alignment} = lineLayoutAttributes;\n","// @flow\nimport {createLayout} from '../../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../../util/struct_array.js';\n\nconst lineLayoutAttributesExt: StructArrayLayout = createLayout([\n {name: 'a_packed', components: 4, type: 'Float32'}\n]);\n\nexport default lineLayoutAttributesExt;\nexport const {members, size, alignment} = lineLayoutAttributesExt;\n","// @flow\n\nimport {LineLayoutArray, LineExtLayoutArray} from '../array_types.js';\n\nimport {members as layoutAttributes} from './line_attributes.js';\nimport {members as layoutAttributesExt} from './line_attributes_ext.js';\nimport SegmentVector from '../segment.js';\nimport {ProgramConfigurationSet} from '../program_configuration.js';\nimport {TriangleIndexArray} from '../index_array_type.js';\nimport EXTENT from '../extent.js';\nimport mvt from '@mapbox/vector-tile';\nconst vectorTileFeatureTypes = mvt.VectorTileFeature.types;\nimport {register} from '../../util/web_worker_transfer.js';\nimport {hasPattern, addPatternDependencies} from './pattern_bucket_features.js';\nimport loadGeometry from '../load_geometry.js';\nimport toEvaluationFeature from '../evaluation_feature.js';\nimport EvaluationParameters from '../../style/evaluation_parameters.js';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type {\n Bucket,\n BucketParameters,\n BucketFeature,\n IndexedFeature,\n PopulateParameters\n} from '../bucket.js';\nimport type LineStyleLayer from '../../style/style_layer/line_style_layer.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {Segment} from '../segment.js';\nimport type {RGBAImage, SpritePositions} from '../../util/image.js';\nimport type Context from '../../gl/context.js';\nimport type Texture from '../../render/texture.js';\nimport type IndexBuffer from '../../gl/index_buffer.js';\nimport type VertexBuffer from '../../gl/vertex_buffer.js';\nimport type {FeatureStates} from '../../source/source_state.js';\nimport type LineAtlas from '../../render/line_atlas.js';\nimport type {TileTransform} from '../../geo/projection/tile_transform.js';\n\n// NOTE ON EXTRUDE SCALE:\n// scale the extrusion vector so that the normal length is this value.\n// contains the \"texture\" normals (-1..1). this is distinct from the extrude\n// normals for line joins, because the x-value remains 0 for the texture\n// normal array, while the extrude normal actually moves the vertex to create\n// the acute/bevelled line join.\nconst EXTRUDE_SCALE = 63;\n\n/*\n * Sharp corners cause dashed lines to tilt because the distance along the line\n * is the same at both the inner and outer corners. To improve the appearance of\n * dashed lines we add extra points near sharp corners so that a smaller part\n * of the line is tilted.\n *\n * COS_HALF_SHARP_CORNER controls how sharp a corner has to be for us to add an\n * extra vertex. The default is 75 degrees.\n *\n * The newly created vertices are placed SHARP_CORNER_OFFSET pixels from the corner.\n */\nconst COS_HALF_SHARP_CORNER = Math.cos(75 / 2 * (Math.PI / 180));\nconst SHARP_CORNER_OFFSET = 15;\n\n// Angle per triangle for approximating round line joins.\nconst DEG_PER_TRIANGLE = 20;\n\ntype LineClips = {\n start: number;\n end: number;\n}\n\ntype GradientTexture = {\n texture: Texture;\n gradient: ?RGBAImage;\n version: number;\n}\n\n/**\n * @private\n */\nclass LineBucket implements Bucket {\n distance: number;\n totalDistance: number;\n maxLineLength: number;\n scaledDistance: number;\n lineSoFar: number;\n lineClips: ?LineClips;\n\n e1: number;\n e2: number;\n\n index: number;\n zoom: number;\n overscaling: number;\n layers: Array<LineStyleLayer>;\n layerIds: Array<string>;\n gradients: {[string]: GradientTexture};\n stateDependentLayers: Array<any>;\n stateDependentLayerIds: Array<string>;\n patternFeatures: Array<BucketFeature>;\n lineClipsArray: Array<LineClips>;\n\n layoutVertexArray: LineLayoutArray;\n layoutVertexBuffer: VertexBuffer;\n layoutVertexArray2: LineExtLayoutArray;\n layoutVertexBuffer2: VertexBuffer;\n\n indexArray: TriangleIndexArray;\n indexBuffer: IndexBuffer;\n\n hasPattern: boolean;\n programConfigurations: ProgramConfigurationSet<LineStyleLayer>;\n segments: SegmentVector;\n uploaded: boolean;\n projection: ProjectionSpecification;\n\n constructor(options: BucketParameters<LineStyleLayer>) {\n this.zoom = options.zoom;\n this.overscaling = options.overscaling;\n this.layers = options.layers;\n this.layerIds = this.layers.map(layer => layer.id);\n this.index = options.index;\n this.projection = options.projection;\n this.hasPattern = false;\n this.patternFeatures = [];\n this.lineClipsArray = [];\n this.gradients = {};\n this.layers.forEach(layer => {\n this.gradients[layer.id] = {};\n });\n\n this.layoutVertexArray = new LineLayoutArray();\n this.layoutVertexArray2 = new LineExtLayoutArray();\n this.indexArray = new TriangleIndexArray();\n this.programConfigurations = new ProgramConfigurationSet(options.layers, options.zoom);\n this.segments = new SegmentVector();\n this.maxLineLength = 0;\n\n this.stateDependentLayerIds = this.layers.filter((l) => l.isStateDependent()).map((l) => l.id);\n }\n\n populate(features: Array<IndexedFeature>, options: PopulateParameters, canonical: CanonicalTileID, tileTransform: TileTransform) {\n this.hasPattern = hasPattern('line', this.layers, options);\n const lineSortKey = this.layers[0].layout.get('line-sort-key');\n const bucketFeatures = [];\n\n for (const {feature, id, index, sourceLayerIndex} of features) {\n const needGeometry = this.layers[0]._featureFilter.needGeometry;\n const evaluationFeature = toEvaluationFeature(feature, needGeometry);\n\n if (!this.layers[0]._featureFilter.filter(new EvaluationParameters(this.zoom), evaluationFeature, canonical)) continue;\n\n const sortKey = lineSortKey ?\n lineSortKey.evaluate(evaluationFeature, {}, canonical) :\n undefined;\n\n const bucketFeature: BucketFeature = {\n id,\n properties: feature.properties,\n type: feature.type,\n sourceLayerIndex,\n index,\n geometry: needGeometry ? evaluationFeature.geometry : loadGeometry(feature, canonical, tileTransform),\n patterns: {},\n sortKey\n };\n\n bucketFeatures.push(bucketFeature);\n }\n\n if (lineSortKey) {\n bucketFeatures.sort((a, b) => {\n // a.sortKey is always a number when in use\n return ((a.sortKey: any): number) - ((b.sortKey: any): number);\n });\n }\n\n const {lineAtlas, featureIndex} = options;\n const hasFeatureDashes = this.addConstantDashes(lineAtlas);\n\n for (const bucketFeature of bucketFeatures) {\n const {geometry, index, sourceLayerIndex} = bucketFeature;\n\n if (hasFeatureDashes) {\n this.addFeatureDashes(bucketFeature, lineAtlas);\n }\n\n if (this.hasPattern) {\n const patternBucketFeature = addPatternDependencies('line', this.layers, bucketFeature, this.zoom, options);\n // pattern features are added only once the pattern is loaded into the image atlas\n // so are stored during populate until later updated with positions by tile worker in addFeatures\n this.patternFeatures.push(patternBucketFeature);\n\n } else {\n this.addFeature(bucketFeature, geometry, index, canonical, lineAtlas.positions, options.availableImages);\n }\n\n const feature = features[index].feature;\n featureIndex.insert(feature, geometry, index, sourceLayerIndex, this.index);\n }\n }\n\n addConstantDashes(lineAtlas: LineAtlas): boolean {\n let hasFeatureDashes = false;\n\n for (const layer of this.layers) {\n const dashPropertyValue = layer.paint.get('line-dasharray').value;\n const capPropertyValue = layer.layout.get('line-cap').value;\n\n if (dashPropertyValue.kind !== 'constant' || capPropertyValue.kind !== 'constant') {\n hasFeatureDashes = true;\n\n } else {\n const constCap = capPropertyValue.value;\n const constDash = dashPropertyValue.value;\n if (!constDash) continue;\n lineAtlas.addDash(constDash.from, constCap);\n lineAtlas.addDash(constDash.to, constCap);\n if (constDash.other) lineAtlas.addDash(constDash.other, constCap);\n }\n }\n\n return hasFeatureDashes;\n }\n\n addFeatureDashes(feature: BucketFeature, lineAtlas: LineAtlas) {\n\n const zoom = this.zoom;\n\n for (const layer of this.layers) {\n const dashPropertyValue = layer.paint.get('line-dasharray').value;\n const capPropertyValue = layer.layout.get('line-cap').value;\n\n if (dashPropertyValue.kind === 'constant' && capPropertyValue.kind === 'constant') continue;\n\n let minDashArray, midDashArray, maxDashArray, minCap, midCap, maxCap;\n\n if (dashPropertyValue.kind === 'constant') {\n const constDash = dashPropertyValue.value;\n if (!constDash) continue;\n minDashArray = constDash.other || constDash.to;\n midDashArray = constDash.to;\n maxDashArray = constDash.from;\n\n } else {\n minDashArray = dashPropertyValue.evaluate({zoom: zoom - 1}, feature);\n midDashArray = dashPropertyValue.evaluate({zoom}, feature);\n maxDashArray = dashPropertyValue.evaluate({zoom: zoom + 1}, feature);\n }\n\n if (capPropertyValue.kind === 'constant') {\n minCap = midCap = maxCap = capPropertyValue.value;\n\n } else {\n minCap = capPropertyValue.evaluate({zoom: zoom - 1}, feature);\n midCap = capPropertyValue.evaluate({zoom}, feature);\n maxCap = capPropertyValue.evaluate({zoom: zoom + 1}, feature);\n }\n\n lineAtlas.addDash(minDashArray, minCap);\n lineAtlas.addDash(midDashArray, midCap);\n lineAtlas.addDash(maxDashArray, maxCap);\n\n const min = lineAtlas.getKey(minDashArray, minCap);\n const mid = lineAtlas.getKey(midDashArray, midCap);\n const max = lineAtlas.getKey(maxDashArray, maxCap);\n\n // save positions for paint array\n feature.patterns[layer.id] = {min, mid, max};\n }\n\n }\n\n update(states: FeatureStates, vtLayer: VectorTileLayer, availableImages: Array<string>, imagePositions: SpritePositions) {\n if (!this.stateDependentLayers.length) return;\n this.programConfigurations.updatePaintArrays(states, vtLayer, this.stateDependentLayers, availableImages, imagePositions);\n }\n\n addFeatures(options: PopulateParameters, canonical: CanonicalTileID, imagePositions: SpritePositions, availableImages: Array<string>, _: TileTransform) {\n for (const feature of this.patternFeatures) {\n this.addFeature(feature, feature.geometry, feature.index, canonical, imagePositions, availableImages);\n }\n }\n\n isEmpty(): boolean {\n return this.layoutVertexArray.length === 0;\n }\n\n uploadPending(): boolean {\n return !this.uploaded || this.programConfigurations.needsUpload;\n }\n\n upload(context: Context) {\n if (!this.uploaded) {\n if (this.layoutVertexArray2.length !== 0) {\n this.layoutVertexBuffer2 = context.createVertexBuffer(this.layoutVertexArray2, layoutAttributesExt);\n }\n this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, layoutAttributes);\n this.indexBuffer = context.createIndexBuffer(this.indexArray);\n }\n this.programConfigurations.upload(context);\n this.uploaded = true;\n }\n\n destroy() {\n if (!this.layoutVertexBuffer) return;\n this.layoutVertexBuffer.destroy();\n this.indexBuffer.destroy();\n this.programConfigurations.destroy();\n this.segments.destroy();\n }\n\n lineFeatureClips(feature: BucketFeature): ?LineClips {\n if (!!feature.properties && feature.properties.hasOwnProperty('mapbox_clip_start') && feature.properties.hasOwnProperty('mapbox_clip_end')) {\n const start = +feature.properties['mapbox_clip_start'];\n const end = +feature.properties['mapbox_clip_end'];\n return {start, end};\n }\n }\n\n addFeature(feature: BucketFeature, geometry: Array<Array<Point>>, index: number, canonical: CanonicalTileID, imagePositions: SpritePositions, availableImages: Array<string>) {\n const layout = this.layers[0].layout;\n const join = layout.get('line-join').evaluate(feature, {});\n const cap = layout.get('line-cap').evaluate(feature, {});\n const miterLimit = layout.get('line-miter-limit');\n const roundLimit = layout.get('line-round-limit');\n this.lineClips = this.lineFeatureClips(feature);\n\n for (const line of geometry) {\n this.addLine(line, feature, join, cap, miterLimit, roundLimit);\n }\n\n this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length, feature, index, imagePositions, availableImages, canonical);\n }\n\n addLine(vertices: Array<Point>, feature: BucketFeature, join: string, cap: string, miterLimit: number, roundLimit: number) {\n this.distance = 0;\n this.scaledDistance = 0;\n this.totalDistance = 0;\n this.lineSoFar = 0;\n\n if (this.lineClips) {\n this.lineClipsArray.push(this.lineClips);\n // Calculate the total distance, in tile units, of this tiled line feature\n for (let i = 0; i < vertices.length - 1; i++) {\n this.totalDistance += vertices[i].dist(vertices[i + 1]);\n }\n this.updateScaledDistance();\n this.maxLineLength = Math.max(this.maxLineLength, this.totalDistance);\n }\n\n const isPolygon = vectorTileFeatureTypes[feature.type] === 'Polygon';\n\n // If the line has duplicate vertices at the ends, adjust start/length to remove them.\n let len = vertices.length;\n while (len >= 2 && vertices[len - 1].equals(vertices[len - 2])) {\n len--;\n }\n let first = 0;\n while (first < len - 1 && vertices[first].equals(vertices[first + 1])) {\n first++;\n }\n\n // Ignore invalid geometry.\n if (len < (isPolygon ? 3 : 2)) return;\n\n if (join === 'bevel') miterLimit = 1.05;\n\n const sharpCornerOffset = this.overscaling <= 16 ?\n SHARP_CORNER_OFFSET * EXTENT / (512 * this.overscaling) :\n 0;\n\n // we could be more precise, but it would only save a negligible amount of space\n const segment = this.segments.prepareSegment(len * 10, this.layoutVertexArray, this.indexArray);\n\n let currentVertex;\n let prevVertex = ((undefined: any): Point);\n let nextVertex = ((undefined: any): Point);\n let prevNormal = ((undefined: any): Point);\n let nextNormal = ((undefined: any): Point);\n\n // the last two vertices added\n this.e1 = this.e2 = -1;\n\n if (isPolygon) {\n currentVertex = vertices[len - 2];\n nextNormal = vertices[first].sub(currentVertex)._unit()._perp();\n }\n\n for (let i = first; i < len; i++) {\n\n nextVertex = i === len - 1 ?\n (isPolygon ? vertices[first + 1] : (undefined: any)) : // if it's a polygon, treat the last vertex like the first\n vertices[i + 1]; // just the next vertex\n\n // if two consecutive vertices exist, skip the current one\n if (nextVertex && vertices[i].equals(nextVertex)) continue;\n\n if (nextNormal) prevNormal = nextNormal;\n if (currentVertex) prevVertex = currentVertex;\n\n currentVertex = vertices[i];\n\n // Calculate the normal towards the next vertex in this line. In case\n // there is no next vertex, pretend that the line is continuing straight,\n // meaning that we are just using the previous normal.\n nextNormal = nextVertex ? nextVertex.sub(currentVertex)._unit()._perp() : prevNormal;\n\n // If we still don't have a previous normal, this is the beginning of a\n // non-closed line, so we're doing a straight \"join\".\n prevNormal = prevNormal || nextNormal;\n\n // Determine the normal of the join extrusion. It is the angle bisector\n // of the segments between the previous line and the next line.\n // In the case of 180° angles, the prev and next normals cancel each other out:\n // prevNormal + nextNormal = (0, 0), its magnitude is 0, so the unit vector would be\n // undefined. In that case, we're keeping the joinNormal at (0, 0), so that the cosHalfAngle\n // below will also become 0 and miterLength will become Infinity.\n let joinNormal = prevNormal.add(nextNormal);\n if (joinNormal.x !== 0 || joinNormal.y !== 0) {\n joinNormal._unit();\n }\n /* joinNormal prevNormal\n * ↖ ↑\n * .________. prevVertex\n * |\n * nextNormal ← | currentVertex\n * |\n * nextVertex !\n *\n */\n\n // calculate cosines of the angle (and its half) using dot product\n const cosAngle = prevNormal.x * nextNormal.x + prevNormal.y * nextNormal.y;\n const cosHalfAngle = joinNormal.x * nextNormal.x + joinNormal.y * nextNormal.y;\n\n // Calculate the length of the miter (the ratio of the miter to the width)\n // as the inverse of cosine of the angle between next and join normals\n const miterLength = cosHalfAngle !== 0 ? 1 / cosHalfAngle : Infinity;\n\n // approximate angle from cosine\n const approxAngle = 2 * Math.sqrt(2 - 2 * cosHalfAngle);\n\n const isSharpCorner = cosHalfAngle < COS_HALF_SHARP_CORNER && prevVertex && nextVertex;\n const lineTurnsLeft = prevNormal.x * nextNormal.y - prevNormal.y * nextNormal.x > 0;\n\n if (isSharpCorner && i > first) {\n const prevSegmentLength = currentVertex.dist(prevVertex);\n if (prevSegmentLength > 2 * sharpCornerOffset) {\n const newPrevVertex = currentVertex.sub(currentVertex.sub(prevVertex)._mult(sharpCornerOffset / prevSegmentLength)._round());\n this.updateDistance(prevVertex, newPrevVertex);\n this.addCurrentVertex(newPrevVertex, prevNormal, 0, 0, segment);\n prevVertex = newPrevVertex;\n }\n }\n\n // The join if a middle vertex, otherwise the cap.\n const middleVertex = prevVertex && nextVertex;\n let currentJoin = middleVertex ? join : isPolygon ? 'butt' : cap;\n\n if (middleVertex && currentJoin === 'round') {\n if (miterLength < roundLimit) {\n currentJoin = 'miter';\n } else if (miterLength <= 2) {\n currentJoin = 'fakeround';\n }\n }\n\n if (currentJoin === 'miter' && miterLength > miterLimit) {\n currentJoin = 'bevel';\n }\n\n if (currentJoin === 'bevel') {\n // The maximum extrude length is 128 / 63 = 2 times the width of the line\n // so if miterLength >= 2 we need to draw a different type of bevel here.\n if (miterLength > 2) currentJoin = 'flipbevel';\n\n // If the miterLength is really small and the line bevel wouldn't be visible,\n // just draw a miter join to save a triangle.\n if (miterLength < miterLimit) currentJoin = 'miter';\n }\n\n // Calculate how far along the line the currentVertex is\n if (prevVertex) this.updateDistance(prevVertex, currentVertex);\n\n if (currentJoin === 'miter') {\n\n joinNormal._mult(miterLength);\n this.addCurrentVertex(currentVertex, joinNormal, 0, 0, segment);\n\n } else if (currentJoin === 'flipbevel') {\n // miter is too big, flip the direction to make a beveled join\n\n if (miterLength > 100) {\n // Almost parallel lines\n joinNormal = nextNormal.mult(-1);\n\n } else {\n const bevelLength = miterLength * prevNormal.add(nextNormal).mag() / prevNormal.sub(nextNormal).mag();\n joinNormal._perp()._mult(bevelLength * (lineTurnsLeft ? -1 : 1));\n }\n this.addCurrentVertex(currentVertex, joinNormal, 0, 0, segment);\n this.addCurrentVertex(currentVertex, joinNormal.mult(-1), 0, 0, segment);\n\n } else if (currentJoin === 'bevel' || currentJoin === 'fakeround') {\n const offset = -Math.sqrt(miterLength * miterLength - 1);\n const offsetA = lineTurnsLeft ? offset : 0;\n const offsetB = lineTurnsLeft ? 0 : offset;\n\n // Close previous segment with a bevel\n if (prevVertex) {\n this.addCurrentVertex(currentVertex, prevNormal, offsetA, offsetB, segment);\n }\n\n if (currentJoin === 'fakeround') {\n // The join angle is sharp enough that a round join would be visible.\n // Bevel joins fill the gap between segments with a single pie slice triangle.\n // Create a round join by adding multiple pie slices. The join isn't actually round, but\n // it looks like it is at the sizes we render lines at.\n\n // pick the number of triangles for approximating round join by based on the angle between normals\n const n = Math.round((approxAngle * 180 / Math.PI) / DEG_PER_TRIANGLE);\n\n for (let m = 1; m < n; m++) {\n let t = m / n;\n if (t !== 0.5) {\n // approximate spherical interpolation https://observablehq.com/@mourner/approximating-geometric-slerp\n const t2 = t - 0.5;\n const A = 1.0904 + cosAngle * (-3.2452 + cosAngle * (3.55645 - cosAngle * 1.43519));\n const B = 0.848013 + cosAngle * (-1.06021 + cosAngle * 0.215638);\n t = t + t * t2 * (t - 1) * (A * t2 * t2 + B);\n }\n const extrude = nextNormal.sub(prevNormal)._mult(t)._add(prevNormal)._unit()._mult(lineTurnsLeft ? -1 : 1);\n this.addHalfVertex(currentVertex, extrude.x, extrude.y, false, lineTurnsLeft, 0, segment);\n }\n }\n\n if (nextVertex) {\n // Start next segment\n this.addCurrentVertex(currentVertex, nextNormal, -offsetA, -offsetB, segment);\n }\n\n } else if (currentJoin === 'butt') {\n this.addCurrentVertex(currentVertex, joinNormal, 0, 0, segment); // butt cap\n\n } else if (currentJoin === 'square') {\n const offset = prevVertex ? 1 : -1; // closing or starting square cap\n\n if (!prevVertex) {\n this.addCurrentVertex(currentVertex, joinNormal, offset, offset, segment);\n }\n\n // make the cap it's own quad to avoid the cap affecting the line distance\n this.addCurrentVertex(currentVertex, joinNormal, 0, 0, segment);\n\n if (prevVertex) {\n this.addCurrentVertex(currentVertex, joinNormal, offset, offset, segment);\n }\n\n } else if (currentJoin === 'round') {\n\n if (prevVertex) {\n // Close previous segment with butt\n this.addCurrentVertex(currentVertex, prevNormal, 0, 0, segment);\n\n // Add round cap or linejoin at end of segment\n this.addCurrentVertex(currentVertex, prevNormal, 1, 1, segment, true);\n }\n if (nextVertex) {\n // Add round cap before first segment\n this.addCurrentVertex(currentVertex, nextNormal, -1, -1, segment, true);\n\n // Start next segment with a butt\n this.addCurrentVertex(currentVertex, nextNormal, 0, 0, segment);\n }\n }\n\n if (isSharpCorner && i < len - 1) {\n const nextSegmentLength = currentVertex.dist(nextVertex);\n if (nextSegmentLength > 2 * sharpCornerOffset) {\n const newCurrentVertex = currentVertex.add(nextVertex.sub(currentVertex)._mult(sharpCornerOffset / nextSegmentLength)._round());\n this.updateDistance(currentVertex, newCurrentVertex);\n this.addCurrentVertex(newCurrentVertex, nextNormal, 0, 0, segment);\n currentVertex = newCurrentVertex;\n }\n }\n }\n }\n\n /**\n * Add two vertices to the buffers.\n *\n * @param p the line vertex to add buffer vertices for\n * @param normal vertex normal\n * @param endLeft extrude to shift the left vertex along the line\n * @param endRight extrude to shift the left vertex along the line\n * @param segment the segment object to add the vertex to\n * @param round whether this is a round cap\n * @private\n */\n addCurrentVertex(p: Point, normal: Point, endLeft: number, endRight: number, segment: Segment, round: boolean = false) {\n // left and right extrude vectors, perpendicularly shifted by endLeft/endRight\n const leftX = normal.x + normal.y * endLeft;\n const leftY = normal.y - normal.x * endLeft;\n const rightX = -normal.x + normal.y * endRight;\n const rightY = -normal.y - normal.x * endRight;\n\n this.addHalfVertex(p, leftX, leftY, round, false, endLeft, segment);\n this.addHalfVertex(p, rightX, rightY, round, true, -endRight, segment);\n }\n\n addHalfVertex({x, y}: Point, extrudeX: number, extrudeY: number, round: boolean, up: boolean, dir: number, segment: Segment) {\n this.layoutVertexArray.emplaceBack(\n // a_pos_normal\n // Encode round/up the least significant bits\n (x << 1) + (round ? 1 : 0),\n (y << 1) + (up ? 1 : 0),\n // a_data\n // add 128 to store a byte in an unsigned byte\n Math.round(EXTRUDE_SCALE * extrudeX) + 128,\n Math.round(EXTRUDE_SCALE * extrudeY) + 128,\n ((dir === 0 ? 0 : (dir < 0 ? -1 : 1)) + 1),\n 0, // unused\n // a_linesofar\n this.lineSoFar);\n\n // Constructs a second vertex buffer with higher precision line progress\n if (this.lineClips) {\n this.layoutVertexArray2.emplaceBack(this.scaledDistance, this.lineClipsArray.length, this.lineClips.start, this.lineClips.end);\n }\n\n const e = segment.vertexLength++;\n if (this.e1 >= 0 && this.e2 >= 0) {\n this.indexArray.emplaceBack(this.e1, this.e2, e);\n segment.primitiveLength++;\n }\n if (up) {\n this.e2 = e;\n } else {\n this.e1 = e;\n }\n }\n\n updateScaledDistance() {\n // Knowing the ratio of the full linestring covered by this tiled feature, as well\n // as the total distance (in tile units) of this tiled feature, and the distance\n // (in tile units) of the current vertex, we can determine the relative distance\n // of this vertex along the full linestring feature.\n if (this.lineClips) {\n const featureShare = this.lineClips.end - this.lineClips.start;\n const totalFeatureLength = this.totalDistance / featureShare;\n this.scaledDistance = this.distance / this.totalDistance;\n this.lineSoFar = totalFeatureLength * this.lineClips.start + this.distance;\n } else {\n this.lineSoFar = this.distance;\n }\n }\n\n updateDistance(prev: Point, next: Point) {\n this.distance += prev.dist(next);\n this.updateScaledDistance();\n }\n}\n\nregister(LineBucket, 'LineBucket', {omit: ['layers', 'patternFeatures']});\n\nexport default LineBucket;\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n CrossFadedDataDrivenProperty,\n CrossFadedProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\nexport type LayoutProps = {|\n \"line-cap\": DataDrivenProperty<\"butt\" | \"round\" | \"square\">,\n \"line-join\": DataDrivenProperty<\"bevel\" | \"round\" | \"miter\">,\n \"line-miter-limit\": DataConstantProperty<number>,\n \"line-round-limit\": DataConstantProperty<number>,\n \"line-sort-key\": DataDrivenProperty<number>,\n|};\n\nconst layout: Properties<LayoutProps> = new Properties({\n \"line-cap\": new DataDrivenProperty(styleSpec[\"layout_line\"][\"line-cap\"]),\n \"line-join\": new DataDrivenProperty(styleSpec[\"layout_line\"][\"line-join\"]),\n \"line-miter-limit\": new DataConstantProperty(styleSpec[\"layout_line\"][\"line-miter-limit\"]),\n \"line-round-limit\": new DataConstantProperty(styleSpec[\"layout_line\"][\"line-round-limit\"]),\n \"line-sort-key\": new DataDrivenProperty(styleSpec[\"layout_line\"][\"line-sort-key\"]),\n});\n\nexport type PaintProps = {|\n \"line-opacity\": DataDrivenProperty<number>,\n \"line-color\": DataDrivenProperty<Color>,\n \"line-translate\": DataConstantProperty<[number, number]>,\n \"line-translate-anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n \"line-width\": DataDrivenProperty<number>,\n \"line-gap-width\": DataDrivenProperty<number>,\n \"line-offset\": DataDrivenProperty<number>,\n \"line-blur\": DataDrivenProperty<number>,\n \"line-dasharray\": CrossFadedDataDrivenProperty<Array<number>>,\n \"line-pattern\": CrossFadedDataDrivenProperty<ResolvedImage>,\n \"line-gradient\": ColorRampProperty,\n \"line-trim-offset\": DataConstantProperty<[number, number]>,\n|};\n\nconst paint: Properties<PaintProps> = new Properties({\n \"line-opacity\": new DataDrivenProperty(styleSpec[\"paint_line\"][\"line-opacity\"]),\n \"line-color\": new DataDrivenProperty(styleSpec[\"paint_line\"][\"line-color\"]),\n \"line-translate\": new DataConstantProperty(styleSpec[\"paint_line\"][\"line-translate\"]),\n \"line-translate-anchor\": new DataConstantProperty(styleSpec[\"paint_line\"][\"line-translate-anchor\"]),\n \"line-width\": new DataDrivenProperty(styleSpec[\"paint_line\"][\"line-width\"]),\n \"line-gap-width\": new DataDrivenProperty(styleSpec[\"paint_line\"][\"line-gap-width\"]),\n \"line-offset\": new DataDrivenProperty(styleSpec[\"paint_line\"][\"line-offset\"]),\n \"line-blur\": new DataDrivenProperty(styleSpec[\"paint_line\"][\"line-blur\"]),\n \"line-dasharray\": new CrossFadedDataDrivenProperty(styleSpec[\"paint_line\"][\"line-dasharray\"]),\n \"line-pattern\": new CrossFadedDataDrivenProperty(styleSpec[\"paint_line\"][\"line-pattern\"]),\n \"line-gradient\": new ColorRampProperty(styleSpec[\"paint_line\"][\"line-gradient\"]),\n \"line-trim-offset\": new DataConstantProperty(styleSpec[\"paint_line\"][\"line-trim-offset\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint, layout }: $Exact<{\n paint: Properties<PaintProps>, layout: Properties<LayoutProps>\n}>);\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nimport StyleLayer from '../style_layer.js';\nimport LineBucket from '../../data/bucket/line_bucket.js';\nimport {polygonIntersectsBufferedMultiLine} from '../../util/intersection_tests.js';\nimport {getMaximumPaintValue, translateDistance, translate} from '../query_utils.js';\nimport properties from './line_style_layer_properties.js';\nimport {extend} from '../../util/util.js';\nimport EvaluationParameters from '../evaluation_parameters.js';\nimport {Transitionable, Transitioning, Layout, PossiblyEvaluated, DataDrivenProperty} from '../properties.js';\nimport ProgramConfiguration from '../../data/program_configuration.js';\n\nimport Step from '../../style-spec/expression/definitions/step.js';\nimport type {FeatureState, ZoomConstantExpression, StylePropertyExpression} from '../../style-spec/expression/index.js';\nimport type {Bucket, BucketParameters} from '../../data/bucket.js';\nimport type {LayoutProps, PaintProps} from './line_style_layer_properties.js';\nimport type Transform from '../../geo/transform.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\nimport type {TilespaceQueryGeometry} from '../query_geometry.js';\n\nclass LineFloorwidthProperty extends DataDrivenProperty<number> {\n useIntegerZoom: true;\n\n possiblyEvaluate(value, parameters) {\n parameters = new EvaluationParameters(Math.floor(parameters.zoom), {\n now: parameters.now,\n fadeDuration: parameters.fadeDuration,\n zoomHistory: parameters.zoomHistory,\n transition: parameters.transition\n });\n return super.possiblyEvaluate(value, parameters);\n }\n\n evaluate(value, globals, feature, featureState) {\n globals = extend({}, globals, {zoom: Math.floor(globals.zoom)});\n return super.evaluate(value, globals, feature, featureState);\n }\n}\n\nconst lineFloorwidthProperty = new LineFloorwidthProperty(properties.paint.properties['line-width'].specification);\nlineFloorwidthProperty.useIntegerZoom = true;\n\nclass LineStyleLayer extends StyleLayer {\n _unevaluatedLayout: Layout<LayoutProps>;\n layout: PossiblyEvaluated<LayoutProps>;\n\n gradientVersion: number;\n stepInterpolant: boolean;\n\n _transitionablePaint: Transitionable<PaintProps>;\n _transitioningPaint: Transitioning<PaintProps>;\n paint: PossiblyEvaluated<PaintProps>;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n this.gradientVersion = 0;\n }\n\n _handleSpecialPaintPropertyUpdate(name: string) {\n if (name === 'line-gradient') {\n const expression: ZoomConstantExpression<'source'> = ((this._transitionablePaint._values['line-gradient'].value.expression): any);\n this.stepInterpolant = expression._styleExpression && expression._styleExpression.expression instanceof Step;\n this.gradientVersion = (this.gradientVersion + 1) % Number.MAX_SAFE_INTEGER;\n }\n }\n\n gradientExpression(): StylePropertyExpression {\n return this._transitionablePaint._values['line-gradient'].value.expression;\n }\n\n recalculate(parameters: EvaluationParameters, availableImages: Array<string>) {\n super.recalculate(parameters, availableImages);\n\n (this.paint._values: any)['line-floorwidth'] =\n lineFloorwidthProperty.possiblyEvaluate(this._transitioningPaint._values['line-width'].value, parameters);\n }\n\n createBucket(parameters: BucketParameters<*>): LineBucket {\n return new LineBucket(parameters);\n }\n\n getProgramIds(): string[] {\n const patternProperty = this.paint.get('line-pattern');\n const image = patternProperty.constantOr((1: any));\n const programId = image ? 'linePattern' : 'line';\n return [programId];\n }\n\n getProgramConfiguration(zoom: number): ProgramConfiguration {\n return new ProgramConfiguration(this, zoom);\n }\n\n queryRadius(bucket: Bucket): number {\n const lineBucket: LineBucket = (bucket: any);\n const width = getLineWidth(\n getMaximumPaintValue('line-width', this, lineBucket),\n getMaximumPaintValue('line-gap-width', this, lineBucket));\n const offset = getMaximumPaintValue('line-offset', this, lineBucket);\n return width / 2 + Math.abs(offset) + translateDistance(this.paint.get('line-translate'));\n }\n\n queryIntersectsFeature(queryGeometry: TilespaceQueryGeometry,\n feature: VectorTileFeature,\n featureState: FeatureState,\n geometry: Array<Array<Point>>,\n zoom: number,\n transform: Transform): boolean {\n if (queryGeometry.queryGeometry.isAboveHorizon) return false;\n\n const translatedPolygon = translate(queryGeometry.tilespaceGeometry,\n this.paint.get('line-translate'),\n this.paint.get('line-translate-anchor'),\n transform.angle, queryGeometry.pixelToTileUnitsFactor);\n const halfWidth = queryGeometry.pixelToTileUnitsFactor / 2 * getLineWidth(\n this.paint.get('line-width').evaluate(feature, featureState),\n this.paint.get('line-gap-width').evaluate(feature, featureState));\n const lineOffset = this.paint.get('line-offset').evaluate(feature, featureState);\n if (lineOffset) {\n geometry = offsetLine(geometry, lineOffset * queryGeometry.pixelToTileUnitsFactor);\n }\n\n return polygonIntersectsBufferedMultiLine(translatedPolygon, geometry, halfWidth);\n }\n\n isTileClipped(): boolean {\n return true;\n }\n}\n\nexport default LineStyleLayer;\n\nfunction getLineWidth(lineWidth, lineGapWidth) {\n if (lineGapWidth > 0) {\n return lineGapWidth + 2 * lineWidth;\n } else {\n return lineWidth;\n }\n}\n\nfunction offsetLine(rings, offset) {\n const newRings = [];\n const zero = new Point(0, 0);\n for (let k = 0; k < rings.length; k++) {\n const ring = rings[k];\n const newRing = [];\n for (let i = 0; i < ring.length; i++) {\n const a = ring[i - 1];\n const b = ring[i];\n const c = ring[i + 1];\n const aToB = i === 0 ? zero : b.sub(a)._unit()._perp();\n const bToC = i === ring.length - 1 ? zero : c.sub(b)._unit()._perp();\n const extrude = aToB._add(bToC)._unit();\n\n const cosHalfAngle = extrude.x * bToC.x + extrude.y * bToC.y;\n extrude._mult(1 / cosHalfAngle);\n\n newRing.push(extrude._mult(offset)._add(b));\n }\n newRings.push(newRing);\n }\n return newRings;\n}\n","// @flow\nimport {createLayout} from '../../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../../util/struct_array.js';\n\nexport const symbolLayoutAttributes: StructArrayLayout = createLayout([\n {name: 'a_pos_offset', components: 4, type: 'Int16'},\n {name: 'a_tex_size', components: 4, type: 'Uint16'},\n {name: 'a_pixeloffset', components: 4, type: 'Int16'}\n], 4);\n\nexport const symbolGlobeExtAttributes: StructArrayLayout = createLayout([\n {name: 'a_globe_anchor', components: 3, type: 'Int16'},\n {name: 'a_globe_normal', components: 3, type: 'Float32'},\n], 4);\n\nexport const dynamicLayoutAttributes: StructArrayLayout = createLayout([\n {name: 'a_projected_pos', components: 4, type: 'Float32'}\n], 4);\n\nexport const placementOpacityAttributes: StructArrayLayout = createLayout([\n {name: 'a_fade_opacity', components: 1, type: 'Uint32'}\n], 4);\n\nexport const collisionVertexAttributes: StructArrayLayout = createLayout([\n {name: 'a_placed', components: 2, type: 'Uint8'},\n {name: 'a_shift', components: 2, type: 'Float32'},\n]);\n\nexport const collisionVertexAttributesExt: StructArrayLayout = createLayout([\n {name: 'a_size_scale', components: 1, type: 'Float32'},\n {name: 'a_padding', components: 2, type: 'Float32'},\n]);\n\nexport const collisionBox: StructArrayLayout = createLayout([\n // the box is centered around the anchor point\n {type: 'Int16', name: 'projectedAnchorX'},\n {type: 'Int16', name: 'projectedAnchorY'},\n {type: 'Int16', name: 'projectedAnchorZ'},\n\n {type: 'Int16', name: 'tileAnchorX'},\n {type: 'Int16', name: 'tileAnchorY'},\n\n // distances to the edges from the anchor\n {type: 'Float32', name: 'x1'},\n {type: 'Float32', name: 'y1'},\n {type: 'Float32', name: 'x2'},\n {type: 'Float32', name: 'y2'},\n\n {type: 'Int16', name: 'padding'},\n\n // the index of the feature in the original vectortile\n {type: 'Uint32', name: 'featureIndex'},\n // the source layer the feature appears in\n {type: 'Uint16', name: 'sourceLayerIndex'},\n // the bucket the feature appears in\n {type: 'Uint16', name: 'bucketIndex'},\n]);\n\nexport const collisionBoxLayout: StructArrayLayout = createLayout([ // used to render collision boxes for debugging purposes\n {name: 'a_pos', components: 3, type: 'Int16'},\n {name: 'a_anchor_pos', components: 2, type: 'Int16'},\n {name: 'a_extrude', components: 2, type: 'Int16'}\n], 4);\n\nexport const collisionCircleLayout: StructArrayLayout = createLayout([ // used to render collision circles for debugging purposes\n {name: 'a_pos_2f', components: 2, type: 'Float32'},\n {name: 'a_radius', components: 1, type: 'Float32'},\n {name: 'a_flags', components: 2, type: 'Int16'}\n], 4);\n\nexport const quadTriangle: StructArrayLayout = createLayout([\n {name: 'triangle', components: 3, type: 'Uint16'},\n]);\n\nexport const placement: StructArrayLayout = createLayout([\n {type: 'Int16', name: 'projectedAnchorX'},\n {type: 'Int16', name: 'projectedAnchorY'},\n {type: 'Int16', name: 'projectedAnchorZ'},\n {type: 'Float32', name: 'tileAnchorX'},\n {type: 'Float32', name: 'tileAnchorY'},\n {type: 'Uint16', name: 'glyphStartIndex'},\n {type: 'Uint16', name: 'numGlyphs'},\n {type: 'Uint32', name: 'vertexStartIndex'},\n {type: 'Uint32', name: 'lineStartIndex'},\n {type: 'Uint32', name: 'lineLength'},\n {type: 'Uint16', name: 'segment'},\n {type: 'Uint16', name: 'lowerSize'},\n {type: 'Uint16', name: 'upperSize'},\n {type: 'Float32', name: 'lineOffsetX'},\n {type: 'Float32', name: 'lineOffsetY'},\n {type: 'Uint8', name: 'writingMode'},\n {type: 'Uint8', name: 'placedOrientation'},\n {type: 'Uint8', name: 'hidden'},\n {type: 'Uint32', name: 'crossTileID'},\n {type: 'Int16', name: 'associatedIconIndex'},\n {type: 'Uint8', name: 'flipState'}\n]);\n\nexport const symbolInstance: StructArrayLayout = createLayout([\n {type: 'Int16', name: 'projectedAnchorX'},\n {type: 'Int16', name: 'projectedAnchorY'},\n {type: 'Int16', name: 'projectedAnchorZ'},\n {type: 'Float32', name: 'tileAnchorX'},\n {type: 'Float32', name: 'tileAnchorY'},\n {type: 'Int16', name: 'rightJustifiedTextSymbolIndex'},\n {type: 'Int16', name: 'centerJustifiedTextSymbolIndex'},\n {type: 'Int16', name: 'leftJustifiedTextSymbolIndex'},\n {type: 'Int16', name: 'verticalPlacedTextSymbolIndex'},\n {type: 'Int16', name: 'placedIconSymbolIndex'},\n {type: 'Int16', name: 'verticalPlacedIconSymbolIndex'},\n {type: 'Uint16', name: 'key'},\n {type: 'Uint16', name: 'textBoxStartIndex'},\n {type: 'Uint16', name: 'textBoxEndIndex'},\n {type: 'Uint16', name: 'verticalTextBoxStartIndex'},\n {type: 'Uint16', name: 'verticalTextBoxEndIndex'},\n {type: 'Uint16', name: 'iconBoxStartIndex'},\n {type: 'Uint16', name: 'iconBoxEndIndex'},\n {type: 'Uint16', name: 'verticalIconBoxStartIndex'},\n {type: 'Uint16', name: 'verticalIconBoxEndIndex'},\n {type: 'Uint16', name: 'featureIndex'},\n {type: 'Uint16', name: 'numHorizontalGlyphVertices'},\n {type: 'Uint16', name: 'numVerticalGlyphVertices'},\n {type: 'Uint16', name: 'numIconVertices'},\n {type: 'Uint16', name: 'numVerticalIconVertices'},\n {type: 'Uint16', name: 'useRuntimeCollisionCircles'},\n {type: 'Uint32', name: 'crossTileID'},\n {type: 'Float32', components: 2, name: 'textOffset'},\n {type: 'Float32', name: 'collisionCircleDiameter'},\n]);\n\nexport const glyphOffset: StructArrayLayout = createLayout([\n {type: 'Float32', name: 'offsetX'}\n]);\n\nexport const lineVertex: StructArrayLayout = createLayout([\n {type: 'Int16', name: 'x'},\n {type: 'Int16', name: 'y'},\n {type: 'Int16', name: 'tileUnitDistanceFromAnchor'}\n]);\n","// @flow\n// ONE_EM constant used to go between \"em\" units used in style spec and \"points\" used internally for layout\n\nexport default 24;\n","// @flow\n\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\nimport Interpolate from '../style-spec/expression/definitions/interpolate.js';\nimport {clamp} from '../util/util.js';\nimport EvaluationParameters from '../style/evaluation_parameters.js';\n\nimport type {PropertyValue, PossiblyEvaluatedPropertyValue} from '../style/properties.js';\nimport type {InterpolationType} from '../style-spec/expression/definitions/interpolate.js';\n\nconst SIZE_PACK_FACTOR = 128;\n\nexport {getSizeData, evaluateSizeForFeature, evaluateSizeForZoom, SIZE_PACK_FACTOR};\n\nexport type SizeData = {\n kind: 'constant',\n layoutSize: number\n} | {\n kind: 'source'\n} | {\n kind: 'camera',\n minZoom: number,\n maxZoom: number,\n minSize: number,\n maxSize: number,\n interpolationType: ?InterpolationType\n} | {\n kind: 'composite',\n minZoom: number,\n maxZoom: number,\n interpolationType: ?InterpolationType\n};\n\nexport type InterpolatedSize = {|\n uSize: number,\n uSizeT: number\n|};\n\n// For {text,icon}-size, get the bucket-level data that will be needed by\n// the painter to set symbol-size-related uniforms\nfunction getSizeData(tileZoom: number, value: PropertyValue<number, PossiblyEvaluatedPropertyValue<number>>): SizeData {\n const {expression} = value;\n\n if (expression.kind === 'constant') {\n const layoutSize = expression.evaluate(new EvaluationParameters(tileZoom + 1));\n return {kind: 'constant', layoutSize};\n\n } else if (expression.kind === 'source') {\n return {kind: 'source'};\n\n } else {\n const {zoomStops, interpolationType} = expression;\n\n // calculate covering zoom stops for zoom-dependent values\n let lower = 0;\n while (lower < zoomStops.length && zoomStops[lower] <= tileZoom) lower++;\n lower = Math.max(0, lower - 1);\n let upper = lower;\n while (upper < zoomStops.length && zoomStops[upper] < tileZoom + 1) upper++;\n upper = Math.min(zoomStops.length - 1, upper);\n\n const minZoom = zoomStops[lower];\n const maxZoom = zoomStops[upper];\n\n // We'd like to be able to use CameraExpression or CompositeExpression in these\n // return types rather than ExpressionSpecification, but the former are not\n // transferrable across Web Worker boundaries.\n if (expression.kind === 'composite') {\n return {kind: 'composite', minZoom, maxZoom, interpolationType};\n }\n\n // for camera functions, also save off the function values\n // evaluated at the covering zoom levels\n const minSize = expression.evaluate(new EvaluationParameters(minZoom));\n const maxSize = expression.evaluate(new EvaluationParameters(maxZoom));\n\n return {kind: 'camera', minZoom, maxZoom, minSize, maxSize, interpolationType};\n }\n}\n\nfunction evaluateSizeForFeature(sizeData: SizeData,\n {uSize, uSizeT}: InterpolatedSize,\n {lowerSize, upperSize}: { lowerSize: number, upperSize: number}): number {\n if (sizeData.kind === 'source') {\n return lowerSize / SIZE_PACK_FACTOR;\n } else if (sizeData.kind === 'composite') {\n return interpolate(lowerSize / SIZE_PACK_FACTOR, upperSize / SIZE_PACK_FACTOR, uSizeT);\n }\n return uSize;\n}\n\nfunction evaluateSizeForZoom(sizeData: SizeData, zoom: number): InterpolatedSize {\n let uSizeT = 0;\n let uSize = 0;\n\n if (sizeData.kind === 'constant') {\n uSize = sizeData.layoutSize;\n\n } else if (sizeData.kind !== 'source') {\n const {interpolationType, minZoom, maxZoom} = sizeData;\n\n // Even though we could get the exact value of the camera function\n // at z = tr.zoom, we intentionally do not: instead, we interpolate\n // between the camera function values at a pair of zoom stops covering\n // [tileZoom, tileZoom + 1] in order to be consistent with this\n // restriction on composite functions\n const t = !interpolationType ? 0 : clamp(\n Interpolate.interpolationFactor(interpolationType, zoom, minZoom, maxZoom), 0, 1);\n\n if (sizeData.kind === 'camera') {\n uSize = interpolate(sizeData.minSize, sizeData.maxSize, t);\n } else {\n uSizeT = t;\n }\n }\n\n return {uSizeT, uSize};\n}\n","// @flow\n\nimport {plugin as rtlTextPlugin} from '../source/rtl_text_plugin.js';\n\nimport type SymbolStyleLayer from '../style/style_layer/symbol_style_layer.js';\nimport type {Feature} from '../style-spec/expression/index.js';\nimport Formatted from '../style-spec/expression/types/formatted.js';\n\nfunction transformText(text: string, layer: SymbolStyleLayer, feature: Feature) {\n const transform = layer.layout.get('text-transform').evaluate(feature, {});\n if (transform === 'uppercase') {\n text = text.toLocaleUpperCase();\n } else if (transform === 'lowercase') {\n text = text.toLocaleLowerCase();\n }\n\n if (rtlTextPlugin.applyArabicShaping) {\n text = rtlTextPlugin.applyArabicShaping(text);\n }\n\n return text;\n}\n\nexport default function(text: Formatted, layer: SymbolStyleLayer, feature: Feature): Formatted {\n text.sections.forEach(section => {\n section.text = transformText(section.text, layer, feature);\n });\n return text;\n}\n","// @flow\n\nimport {charHasRotatedVerticalOrientation} from './script_detection.js';\n\nexport const verticalizedCharacterMap = {\n '!': '︕',\n '#': '#',\n '$': '$',\n '%': '%',\n '&': '&',\n '(': '︵',\n ')': '︶',\n '*': '*',\n '+': '+',\n ',': '︐',\n '-': '︲',\n '.': '・',\n '/': '/',\n ':': '︓',\n ';': '︔',\n '<': '︿',\n '=': '=',\n '>': '﹀',\n '?': '︖',\n '@': '@',\n '[': '﹇',\n '\\\\': '\',\n ']': '﹈',\n '^': '^',\n '_': '︳',\n '`': '`',\n '{': '︷',\n '|': '―',\n '}': '︸',\n '~': '~',\n '¢': '¢',\n '£': '£',\n '¥': '¥',\n '¦': '¦',\n '¬': '¬',\n '¯': ' ̄',\n '–': '︲',\n '—': '︱',\n '‘': '﹃',\n '’': '﹄',\n '“': '﹁',\n '”': '﹂',\n '…': '︙',\n '‧': '・',\n '₩': '₩',\n '、': '︑',\n '。': '︒',\n '〈': '︿',\n '〉': '﹀',\n '《': '︽',\n '》': '︾',\n '「': '﹁',\n '」': '﹂',\n '『': '﹃',\n '』': '﹄',\n '【': '︻',\n '】': '︼',\n '〔': '︹',\n '〕': '︺',\n '〖': '︗',\n '〗': '︘',\n '!': '︕',\n '(': '︵',\n ')': '︶',\n ',': '︐',\n '-': '︲',\n '.': '・',\n ':': '︓',\n ';': '︔',\n '<': '︿',\n '>': '﹀',\n '?': '︖',\n '[': '﹇',\n ']': '﹈',\n '_': '︳',\n '{': '︷',\n '|': '―',\n '}': '︸',\n '⦅': '︵',\n '⦆': '︶',\n '。': '︒',\n '「': '﹁',\n '」': '﹂'\n};\n\nexport default function verticalizePunctuation(input: string, skipContextChecking: boolean): string {\n let output = '';\n\n for (let i = 0; i < input.length; i++) {\n const nextCharCode = input.charCodeAt(i + 1) || null;\n const prevCharCode = input.charCodeAt(i - 1) || null;\n\n const canReplacePunctuation = skipContextChecking || (\n (!nextCharCode || !charHasRotatedVerticalOrientation(nextCharCode) || verticalizedCharacterMap[input[i + 1]]) &&\n (!prevCharCode || !charHasRotatedVerticalOrientation(prevCharCode) || verticalizedCharacterMap[input[i - 1]])\n );\n\n if (canReplacePunctuation && verticalizedCharacterMap[input[i]]) {\n output += verticalizedCharacterMap[input[i]];\n } else {\n output += input[i];\n }\n }\n\n return output;\n}\n\nexport function isVerticalClosePunctuation(chr: string): boolean {\n return chr === '︶' || chr === '﹈' || chr === '︸' || chr === '﹄' || chr === '﹂' || chr === '︾' ||\n chr === '︼' || chr === '︺' || chr === '︘' || chr === '﹀' || chr === '︐' || chr === '︓' ||\n chr === '︔' || chr === '`' || chr === ' ̄' || chr === '︑' || chr === '︒';\n}\n\nexport function isVerticalOpenPunctuation(chr: string): boolean {\n return chr === '︵' || chr === '﹇' || chr === '︷' || chr === '﹃' || chr === '﹁' || chr === '︽' ||\n chr === '︻' || chr === '︹' || chr === '︗' || chr === '︿';\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n}\n\nPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nvar TEXT_DECODER_MIN_LENGTH = 12;\nvar utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf8');\n\nPbf.prototype = {\n\n destroy: function() {\n this.buf = null;\n },\n\n // === READING =================================================================\n\n readFields: function(readField, result, end) {\n end = end || this.length;\n\n while (this.pos < end) {\n var val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n },\n\n readMessage: function(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n },\n\n readFixed32: function() {\n var val = readUInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n readSFixed32: function() {\n var val = readInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readSFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readFloat: function() {\n var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n this.pos += 4;\n return val;\n },\n\n readDouble: function() {\n var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n this.pos += 8;\n return val;\n },\n\n readVarint: function(isSigned) {\n var buf = this.buf,\n val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n },\n\n readVarint64: function() { // for compatibility with v2.0.1\n return this.readVarint(true);\n },\n\n readSVarint: function() {\n var num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n },\n\n readBoolean: function() {\n return Boolean(this.readVarint());\n },\n\n readString: function() {\n var end = this.readVarint() + this.pos;\n var pos = this.pos;\n this.pos = end;\n\n if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n // longer strings are fast with the built-in browser TextDecoder API\n return readUtf8TextDecoder(this.buf, pos, end);\n }\n // short strings are fast with our custom implementation\n return readUtf8(this.buf, pos, end);\n },\n\n readBytes: function() {\n var end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n },\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n readPackedVarint: function(arr, isSigned) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned));\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n },\n readPackedSVarint: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n },\n readPackedBoolean: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n },\n readPackedFloat: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFloat());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n },\n readPackedDouble: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readDouble());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n },\n readPackedFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n },\n readPackedSFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n },\n readPackedFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n },\n readPackedSFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n },\n\n skip: function(val) {\n var type = val & 0x7;\n if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n else if (type === Pbf.Fixed32) this.pos += 4;\n else if (type === Pbf.Fixed64) this.pos += 8;\n else throw new Error('Unimplemented type: ' + type);\n },\n\n // === WRITING =================================================================\n\n writeTag: function(tag, type) {\n this.writeVarint((tag << 3) | type);\n },\n\n realloc: function(min) {\n var length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n var buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.length = length;\n }\n },\n\n finish: function() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n },\n\n writeFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeSFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeSFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeVarint: function(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n },\n\n writeSVarint: function(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n },\n\n writeBoolean: function(val) {\n this.writeVarint(Boolean(val));\n },\n\n writeString: function(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n var startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeFloat: function(val) {\n this.realloc(4);\n ieee754.write(this.buf, val, this.pos, true, 23, 4);\n this.pos += 4;\n },\n\n writeDouble: function(val) {\n this.realloc(8);\n ieee754.write(this.buf, val, this.pos, true, 52, 8);\n this.pos += 8;\n },\n\n writeBytes: function(buffer) {\n var len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n },\n\n writeRawMessage: function(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n var startPos = this.pos;\n fn(obj, this);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeMessage: function(tag, fn, obj) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeRawMessage(fn, obj);\n },\n\n writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); },\n writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); },\n writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); },\n writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); },\n writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); },\n writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); },\n writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); },\n writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); },\n writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); },\n\n writeBytesField: function(tag, buffer) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeBytes(buffer);\n },\n writeFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFixed32(val);\n },\n writeSFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeSFixed32(val);\n },\n writeFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeFixed64(val);\n },\n writeSFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeSFixed64(val);\n },\n writeVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeVarint(val);\n },\n writeSVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeSVarint(val);\n },\n writeStringField: function(tag, str) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeString(str);\n },\n writeFloatField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFloat(val);\n },\n writeDoubleField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeDouble(val);\n },\n writeBooleanField: function(tag, val) {\n this.writeVarintField(tag, Boolean(val));\n }\n};\n\nfunction readVarintRemainder(l, s, p) {\n var buf = p.buf,\n h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n return pbf.type === Pbf.Bytes ?\n pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n if (isSigned) {\n return high * 0x100000000 + (low >>> 0);\n }\n\n return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n var low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n var lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n var extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }\nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }\nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }\nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); }\nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); }\nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n buf[pos] = val;\n buf[pos + 1] = (val >>> 8);\n buf[pos + 2] = (val >>> 16);\n buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n var str = '';\n var i = pos;\n\n while (i < end) {\n var b0 = buf[i];\n var c = null; // codepoint\n var bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n var b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\nfunction readUtf8TextDecoder(buf, pos, end) {\n return utf8TextDecoder.decode(buf.subarray(pos, end));\n}\n\nfunction writeUtf8(buf, str, pos) {\n for (var i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\n","// @flow\n\nimport {AlphaImage} from '../util/image.js';\n\nimport Protobuf from 'pbf';\nconst border = 3;\n\nimport type {StyleGlyph} from './style_glyph.js';\n\nfunction readFontstacks(tag: number, glyphData: {glyphs: Array<StyleGlyph>, ascender?: number, descender?: number}, pbf: Protobuf) {\n glyphData.glyphs = [];\n if (tag === 1) {\n pbf.readMessage(readFontstack, glyphData);\n }\n}\n\nfunction readFontstack(tag: number, glyphData: {glyphs: Array<StyleGlyph>, ascender?: number, descender?: number}, pbf: Protobuf) {\n if (tag === 3) {\n const {id, bitmap, width, height, left, top, advance} = pbf.readMessage(readGlyph, {});\n glyphData.glyphs.push({\n id,\n bitmap: new AlphaImage({\n width: width + 2 * border,\n height: height + 2 * border\n }, bitmap),\n metrics: {width, height, left, top, advance}\n });\n } else if (tag === 4) {\n glyphData.ascender = pbf.readSVarint();\n } else if (tag === 5) {\n glyphData.descender = pbf.readSVarint();\n }\n}\n\nfunction readGlyph(tag: number, glyph: Object, pbf: Protobuf) {\n if (tag === 1) glyph.id = pbf.readVarint();\n else if (tag === 2) glyph.bitmap = pbf.readBytes();\n else if (tag === 3) glyph.width = pbf.readVarint();\n else if (tag === 4) glyph.height = pbf.readVarint();\n else if (tag === 5) glyph.left = pbf.readSVarint();\n else if (tag === 6) glyph.top = pbf.readSVarint();\n else if (tag === 7) glyph.advance = pbf.readVarint();\n}\n\nexport default function (data: ArrayBuffer | Uint8Array): {glyphs: Array<StyleGlyph>, ascender?: number, descender?: number} {\n return new Protobuf(data).readFields(readFontstacks, {});\n}\n\nexport const GLYPH_PBF_BORDER = border;\n","\nexport default function potpack(boxes) {\n\n // calculate total box area and maximum box width\n let area = 0;\n let maxWidth = 0;\n\n for (const box of boxes) {\n area += box.w * box.h;\n maxWidth = Math.max(maxWidth, box.w);\n }\n\n // sort the boxes for insertion by height, descending\n boxes.sort((a, b) => b.h - a.h);\n\n // aim for a squarish resulting container,\n // slightly adjusted for sub-100% space utilization\n const startWidth = Math.max(Math.ceil(Math.sqrt(area / 0.95)), maxWidth);\n\n // start with a single empty space, unbounded at the bottom\n const spaces = [{x: 0, y: 0, w: startWidth, h: Infinity}];\n\n let width = 0;\n let height = 0;\n\n for (const box of boxes) {\n // look through spaces backwards so that we check smaller spaces first\n for (let i = spaces.length - 1; i >= 0; i--) {\n const space = spaces[i];\n\n // look for empty spaces that can accommodate the current box\n if (box.w > space.w || box.h > space.h) continue;\n\n // found the space; add the box to its top-left corner\n // |-------|-------|\n // | box | |\n // |_______| |\n // | space |\n // |_______________|\n box.x = space.x;\n box.y = space.y;\n\n height = Math.max(height, box.y + box.h);\n width = Math.max(width, box.x + box.w);\n\n if (box.w === space.w && box.h === space.h) {\n // space matches the box exactly; remove it\n const last = spaces.pop();\n if (i < spaces.length) spaces[i] = last;\n\n } else if (box.h === space.h) {\n // space matches the box height; update it accordingly\n // |-------|---------------|\n // | box | updated space |\n // |_______|_______________|\n space.x += box.w;\n space.w -= box.w;\n\n } else if (box.w === space.w) {\n // space matches the box width; update it accordingly\n // |---------------|\n // | box |\n // |_______________|\n // | updated space |\n // |_______________|\n space.y += box.h;\n space.h -= box.h;\n\n } else {\n // otherwise the box splits the space into two spaces\n // |-------|-----------|\n // | box | new space |\n // |_______|___________|\n // | updated space |\n // |___________________|\n spaces.push({\n x: space.x + box.w,\n y: space.y,\n w: space.w - box.w,\n h: box.h\n });\n space.y += box.h;\n space.h -= box.h;\n }\n break;\n }\n }\n\n return {\n w: width, // container width\n h: height, // container height\n fill: (area / (width * height)) || 0 // space utilization\n };\n}\n","// @flow\n\nimport {RGBAImage} from '../util/image.js';\nimport {register} from '../util/web_worker_transfer.js';\nimport potpack from 'potpack';\n\nimport type {StyleImage} from '../style/style_image.js';\nimport type ImageManager from './image_manager.js';\nimport type Texture from './texture.js';\nimport type {SpritePosition} from '../util/image.js';\n\nconst IMAGE_PADDING: number = 1;\nexport {IMAGE_PADDING};\n\ntype Rect = {\n x: number,\n y: number,\n w: number,\n h: number\n};\n\nexport class ImagePosition implements SpritePosition {\n paddedRect: Rect;\n pixelRatio: number;\n version: number;\n stretchY: ?Array<[number, number]>;\n stretchX: ?Array<[number, number]>;\n content: ?[number, number, number, number];\n\n constructor(paddedRect: Rect, {pixelRatio, version, stretchX, stretchY, content}: StyleImage) {\n this.paddedRect = paddedRect;\n this.pixelRatio = pixelRatio;\n this.stretchX = stretchX;\n this.stretchY = stretchY;\n this.content = content;\n this.version = version;\n }\n\n get tl(): [number, number] {\n return [\n this.paddedRect.x + IMAGE_PADDING,\n this.paddedRect.y + IMAGE_PADDING\n ];\n }\n\n get br(): [number, number] {\n return [\n this.paddedRect.x + this.paddedRect.w - IMAGE_PADDING,\n this.paddedRect.y + this.paddedRect.h - IMAGE_PADDING\n ];\n }\n\n get displaySize(): [number, number] {\n return [\n (this.paddedRect.w - IMAGE_PADDING * 2) / this.pixelRatio,\n (this.paddedRect.h - IMAGE_PADDING * 2) / this.pixelRatio\n ];\n }\n}\n\nexport default class ImageAtlas {\n image: RGBAImage;\n iconPositions: {[_: string]: ImagePosition};\n patternPositions: {[_: string]: ImagePosition};\n haveRenderCallbacks: Array<string>;\n uploaded: ?boolean;\n\n constructor(icons: {[_: string]: StyleImage}, patterns: {[_: string]: StyleImage}) {\n const iconPositions = {}, patternPositions = {};\n this.haveRenderCallbacks = [];\n\n const bins = [];\n\n this.addImages(icons, iconPositions, bins);\n this.addImages(patterns, patternPositions, bins);\n\n const {w, h} = potpack(bins);\n const image = new RGBAImage({width: w || 1, height: h || 1});\n\n for (const id in icons) {\n const src = icons[id];\n const bin = iconPositions[id].paddedRect;\n RGBAImage.copy(src.data, image, {x: 0, y: 0}, {x: bin.x + IMAGE_PADDING, y: bin.y + IMAGE_PADDING}, src.data);\n }\n\n for (const id in patterns) {\n const src = patterns[id];\n const bin = patternPositions[id].paddedRect;\n const x = bin.x + IMAGE_PADDING,\n y = bin.y + IMAGE_PADDING,\n w = src.data.width,\n h = src.data.height;\n\n RGBAImage.copy(src.data, image, {x: 0, y: 0}, {x, y}, src.data);\n // Add 1 pixel wrapped padding on each side of the image.\n RGBAImage.copy(src.data, image, {x: 0, y: h - 1}, {x, y: y - 1}, {width: w, height: 1}); // T\n RGBAImage.copy(src.data, image, {x: 0, y: 0}, {x, y: y + h}, {width: w, height: 1}); // B\n RGBAImage.copy(src.data, image, {x: w - 1, y: 0}, {x: x - 1, y}, {width: 1, height: h}); // L\n RGBAImage.copy(src.data, image, {x: 0, y: 0}, {x: x + w, y}, {width: 1, height: h}); // R\n }\n\n this.image = image;\n this.iconPositions = iconPositions;\n this.patternPositions = patternPositions;\n }\n\n addImages(images: {[_: string]: StyleImage}, positions: {[_: string]: ImagePosition}, bins: Array<Rect>) {\n for (const id in images) {\n const src = images[id];\n const bin = {\n x: 0,\n y: 0,\n w: src.data.width + 2 * IMAGE_PADDING,\n h: src.data.height + 2 * IMAGE_PADDING,\n };\n bins.push(bin);\n positions[id] = new ImagePosition(bin, src);\n\n if (src.hasRenderCallback) {\n this.haveRenderCallbacks.push(id);\n }\n }\n }\n\n patchUpdatedImages(imageManager: ImageManager, texture: Texture) {\n this.haveRenderCallbacks = this.haveRenderCallbacks.filter(id => imageManager.hasImage(id));\n imageManager.dispatchRenderCallbacks(this.haveRenderCallbacks);\n for (const name in imageManager.updatedImages) {\n this.patchUpdatedImage(this.iconPositions[name], imageManager.getImage(name), texture);\n this.patchUpdatedImage(this.patternPositions[name], imageManager.getImage(name), texture);\n }\n }\n\n patchUpdatedImage(position: ?ImagePosition, image: ?StyleImage, texture: Texture) {\n if (!position || !image) return;\n\n if (position.version === image.version) return;\n\n position.version = image.version;\n const [x, y] = position.tl;\n texture.update(image.data, undefined, {x, y});\n }\n\n}\n\nregister(ImagePosition, 'ImagePosition');\nregister(ImageAtlas, 'ImageAtlas');\n","// @flow\n\nimport assert from 'assert';\nimport {\n charHasUprightVerticalOrientation,\n charAllowsIdeographicBreaking,\n charInComplexShapingScript\n} from '../util/script_detection.js';\nimport verticalizePunctuation from '../util/verticalize_punctuation.js';\nimport {plugin as rtlTextPlugin} from '../source/rtl_text_plugin.js';\nimport ONE_EM from './one_em.js';\nimport {warnOnce} from '../util/util.js';\n\nimport type {StyleGlyph, GlyphMetrics} from '../style/style_glyph.js';\nimport {GLYPH_PBF_BORDER} from '../style/parse_glyph_pbf.js';\nimport type {ImagePosition} from '../render/image_atlas.js';\nimport {IMAGE_PADDING} from '../render/image_atlas.js';\nimport type {GlyphRect, GlyphPositions} from '../render/glyph_atlas.js';\nimport Formatted, {FormattedSection} from '../style-spec/expression/types/formatted.js';\n\nconst WritingMode = {\n horizontal: 1,\n vertical: 2,\n horizontalOnly: 3\n};\n\nconst SHAPING_DEFAULT_OFFSET = -17;\nexport {shapeText, shapeIcon, fitIconToText, getAnchorAlignment, WritingMode, SHAPING_DEFAULT_OFFSET};\n\n// The position of a glyph relative to the text's anchor point.\nexport type PositionedGlyph = {\n glyph: number,\n imageName: string | null,\n x: number,\n y: number,\n vertical: boolean,\n scale: number,\n fontStack: string,\n sectionIndex: number,\n metrics: GlyphMetrics,\n rect: GlyphRect | null,\n localGlyph?: boolean\n};\n\nexport type PositionedLine = {\n positionedGlyphs: Array<PositionedGlyph>,\n lineOffset: number\n};\n\n// A collection of positioned glyphs and some metadata\nexport type Shaping = {\n positionedLines: Array<PositionedLine>,\n top: number,\n bottom: number,\n left: number,\n right: number,\n writingMode: 1 | 2,\n text: string,\n iconsInText: boolean,\n verticalizable: boolean,\n hasBaseline: boolean\n};\n\ntype AnchorAlignment = {|\n horizontalAlign: number,\n verticalAlign: number\n|};\n\nfunction isEmpty(positionedLines: Array<PositionedLine>) {\n for (const line of positionedLines) {\n if (line.positionedGlyphs.length !== 0) {\n return false;\n }\n }\n return true;\n}\n\nexport type SymbolAnchor = 'center' | 'left' | 'right' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\nexport type TextJustify = 'left' | 'center' | 'right';\n\n// Max number of images in label is 6401 U+E000–U+F8FF that covers\n// Basic Multilingual Plane Unicode Private Use Area (PUA).\nconst PUAbegin = 0xE000;\nconst PUAend = 0xF8FF;\n\nclass SectionOptions {\n // Text options\n scale: number;\n fontStack: string;\n // Image options\n imageName: string | null;\n\n constructor() {\n this.scale = 1.0;\n this.fontStack = \"\";\n this.imageName = null;\n }\n\n static forText(scale: number | null, fontStack: string) {\n const textOptions = new SectionOptions();\n textOptions.scale = scale || 1;\n textOptions.fontStack = fontStack;\n return textOptions;\n }\n\n static forImage(imageName: string) {\n const imageOptions = new SectionOptions();\n imageOptions.imageName = imageName;\n return imageOptions;\n }\n\n}\n\nclass TaggedString {\n text: string;\n sectionIndex: Array<number> // maps each character in 'text' to its corresponding entry in 'sections'\n sections: Array<SectionOptions>\n imageSectionID: number | null;\n\n constructor() {\n this.text = \"\";\n this.sectionIndex = [];\n this.sections = [];\n this.imageSectionID = null;\n }\n\n static fromFeature(text: Formatted, defaultFontStack: string) {\n const result = new TaggedString();\n for (let i = 0; i < text.sections.length; i++) {\n const section = text.sections[i];\n if (!section.image) {\n result.addTextSection(section, defaultFontStack);\n } else {\n result.addImageSection(section);\n }\n }\n return result;\n }\n\n length(): number {\n return this.text.length;\n }\n\n getSection(index: number): SectionOptions {\n return this.sections[this.sectionIndex[index]];\n }\n\n getSections(): Array<SectionOptions> {\n return this.sections;\n }\n\n getSectionIndex(index: number): number {\n return this.sectionIndex[index];\n }\n\n getCharCode(index: number): number {\n return this.text.charCodeAt(index);\n }\n\n verticalizePunctuation(skipContextChecking: boolean) {\n this.text = verticalizePunctuation(this.text, skipContextChecking);\n }\n\n trim() {\n let beginningWhitespace = 0;\n for (let i = 0;\n i < this.text.length && whitespace[this.text.charCodeAt(i)];\n i++) {\n beginningWhitespace++;\n }\n let trailingWhitespace = this.text.length;\n for (let i = this.text.length - 1;\n i >= 0 && i >= beginningWhitespace && whitespace[this.text.charCodeAt(i)];\n i--) {\n trailingWhitespace--;\n }\n this.text = this.text.substring(beginningWhitespace, trailingWhitespace);\n this.sectionIndex = this.sectionIndex.slice(beginningWhitespace, trailingWhitespace);\n }\n\n substring(start: number, end: number): TaggedString {\n const substring = new TaggedString();\n substring.text = this.text.substring(start, end);\n substring.sectionIndex = this.sectionIndex.slice(start, end);\n substring.sections = this.sections;\n return substring;\n }\n\n toString(): string {\n return this.text;\n }\n\n getMaxScale() {\n return this.sectionIndex.reduce((max, index) => Math.max(max, this.sections[index].scale), 0);\n }\n\n addTextSection(section: FormattedSection, defaultFontStack: string) {\n this.text += section.text;\n this.sections.push(SectionOptions.forText(section.scale, section.fontStack || defaultFontStack));\n const index = this.sections.length - 1;\n for (let i = 0; i < section.text.length; ++i) {\n this.sectionIndex.push(index);\n }\n }\n\n addImageSection(section: FormattedSection) {\n const imageName = section.image ? section.image.name : '';\n if (imageName.length === 0) {\n warnOnce(`Can't add FormattedSection with an empty image.`);\n return;\n }\n\n const nextImageSectionCharCode = this.getNextImageSectionCharCode();\n if (!nextImageSectionCharCode) {\n warnOnce(`Reached maximum number of images ${PUAend - PUAbegin + 2}`);\n return;\n }\n\n this.text += String.fromCharCode(nextImageSectionCharCode);\n this.sections.push(SectionOptions.forImage(imageName));\n this.sectionIndex.push(this.sections.length - 1);\n }\n\n getNextImageSectionCharCode(): number | null {\n if (!this.imageSectionID) {\n this.imageSectionID = PUAbegin;\n return this.imageSectionID;\n }\n\n if (this.imageSectionID >= PUAend) return null;\n return ++this.imageSectionID;\n }\n}\n\nfunction breakLines(input: TaggedString, lineBreakPoints: Array<number>): Array<TaggedString> {\n const lines = [];\n const text = input.text;\n let start = 0;\n for (const lineBreak of lineBreakPoints) {\n lines.push(input.substring(start, lineBreak));\n start = lineBreak;\n }\n\n if (start < text.length) {\n lines.push(input.substring(start, text.length));\n }\n return lines;\n}\n\nfunction shapeText(text: Formatted,\n glyphMap: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}},\n glyphPositions: GlyphPositions,\n imagePositions: {[_: string]: ImagePosition},\n defaultFontStack: string,\n maxWidth: number,\n lineHeight: number,\n textAnchor: SymbolAnchor,\n textJustify: TextJustify,\n spacing: number,\n translate: [number, number],\n writingMode: 1 | 2,\n allowVerticalPlacement: boolean,\n symbolPlacement: string,\n layoutTextSize: number,\n layoutTextSizeThisZoom: number): Shaping | false {\n const logicalInput = TaggedString.fromFeature(text, defaultFontStack);\n\n if (writingMode === WritingMode.vertical) {\n logicalInput.verticalizePunctuation(allowVerticalPlacement);\n }\n\n let lines: Array<TaggedString>;\n\n const {processBidirectionalText, processStyledBidirectionalText} = rtlTextPlugin;\n if (processBidirectionalText && logicalInput.sections.length === 1) {\n // Bidi doesn't have to be style-aware\n lines = [];\n const untaggedLines =\n processBidirectionalText(logicalInput.toString(),\n determineLineBreaks(logicalInput, spacing, maxWidth, glyphMap, imagePositions, symbolPlacement, layoutTextSize));\n for (const line of untaggedLines) {\n const taggedLine = new TaggedString();\n taggedLine.text = line;\n taggedLine.sections = logicalInput.sections;\n for (let i = 0; i < line.length; i++) {\n taggedLine.sectionIndex.push(0);\n }\n lines.push(taggedLine);\n }\n } else if (processStyledBidirectionalText) {\n // Need version of mapbox-gl-rtl-text with style support for combining RTL text\n // with formatting\n lines = [];\n const processedLines =\n processStyledBidirectionalText(logicalInput.text,\n logicalInput.sectionIndex,\n determineLineBreaks(logicalInput, spacing, maxWidth, glyphMap, imagePositions, symbolPlacement, layoutTextSize));\n for (const line of processedLines) {\n const taggedLine = new TaggedString();\n taggedLine.text = line[0];\n taggedLine.sectionIndex = line[1];\n taggedLine.sections = logicalInput.sections;\n lines.push(taggedLine);\n }\n } else {\n lines = breakLines(logicalInput, determineLineBreaks(logicalInput, spacing, maxWidth, glyphMap, imagePositions, symbolPlacement, layoutTextSize));\n }\n\n const positionedLines = [];\n const shaping = {\n positionedLines,\n text: logicalInput.toString(),\n top: translate[1],\n bottom: translate[1],\n left: translate[0],\n right: translate[0],\n writingMode,\n iconsInText: false,\n verticalizable: false,\n hasBaseline: false\n };\n\n shapeLines(shaping, glyphMap, glyphPositions, imagePositions, lines, lineHeight, textAnchor, textJustify, writingMode, spacing, allowVerticalPlacement, layoutTextSizeThisZoom);\n if (isEmpty(positionedLines)) return false;\n\n return shaping;\n}\n\n// using computed properties due to https://github.com/facebook/flow/issues/380\n/* eslint no-useless-computed-key: 0 */\n\nconst whitespace: {[_: number]: boolean} = {\n [0x09]: true, // tab\n [0x0a]: true, // newline\n [0x0b]: true, // vertical tab\n [0x0c]: true, // form feed\n [0x0d]: true, // carriage return\n [0x20]: true, // space\n};\n\nconst breakable: {[_: number]: boolean} = {\n [0x0a]: true, // newline\n [0x20]: true, // space\n [0x26]: true, // ampersand\n [0x28]: true, // left parenthesis\n [0x29]: true, // right parenthesis\n [0x2b]: true, // plus sign\n [0x2d]: true, // hyphen-minus\n [0x2f]: true, // solidus\n [0xad]: true, // soft hyphen\n [0xb7]: true, // middle dot\n [0x200b]: true, // zero-width space\n [0x2010]: true, // hyphen\n [0x2013]: true, // en dash\n [0x2027]: true // interpunct\n // Many other characters may be reasonable breakpoints\n // Consider \"neutral orientation\" characters at scriptDetection.charHasNeutralVerticalOrientation\n // See https://github.com/mapbox/mapbox-gl-js/issues/3658\n};\n\nfunction getGlyphAdvance(codePoint: number,\n section: SectionOptions,\n glyphMap: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}},\n imagePositions: {[_: string]: ImagePosition},\n spacing: number,\n layoutTextSize: number): number {\n if (!section.imageName) {\n const positions = glyphMap[section.fontStack];\n const glyph = positions && positions.glyphs[codePoint];\n if (!glyph) return 0;\n return glyph.metrics.advance * section.scale + spacing;\n } else {\n const imagePosition = imagePositions[section.imageName];\n if (!imagePosition) return 0;\n return imagePosition.displaySize[0] * section.scale * ONE_EM / layoutTextSize + spacing;\n }\n}\n\nfunction determineAverageLineWidth(logicalInput: TaggedString,\n spacing: number,\n maxWidth: number,\n glyphMap: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}},\n imagePositions: {[_: string]: ImagePosition},\n layoutTextSize: number) {\n let totalWidth = 0;\n\n for (let index = 0; index < logicalInput.length(); index++) {\n const section = logicalInput.getSection(index);\n totalWidth += getGlyphAdvance(logicalInput.getCharCode(index), section, glyphMap, imagePositions, spacing, layoutTextSize);\n }\n\n const lineCount = Math.max(1, Math.ceil(totalWidth / maxWidth));\n return totalWidth / lineCount;\n}\n\nfunction calculateBadness(lineWidth: number,\n targetWidth: number,\n penalty: number,\n isLastBreak: boolean) {\n const raggedness = Math.pow(lineWidth - targetWidth, 2);\n if (isLastBreak) {\n // Favor finals lines shorter than average over longer than average\n if (lineWidth < targetWidth) {\n return raggedness / 2;\n } else {\n return raggedness * 2;\n }\n }\n\n return raggedness + Math.abs(penalty) * penalty;\n}\n\nfunction calculatePenalty(codePoint: number, nextCodePoint: number, penalizableIdeographicBreak: boolean) {\n let penalty = 0;\n // Force break on newline\n if (codePoint === 0x0a) {\n penalty -= 10000;\n }\n // Penalize breaks between characters that allow ideographic breaking because\n // they are less preferable than breaks at spaces (or zero width spaces).\n if (penalizableIdeographicBreak) {\n penalty += 150;\n }\n\n // Penalize open parenthesis at end of line\n if (codePoint === 0x28 || codePoint === 0xff08) {\n penalty += 50;\n }\n\n // Penalize close parenthesis at beginning of line\n if (nextCodePoint === 0x29 || nextCodePoint === 0xff09) {\n penalty += 50;\n }\n return penalty;\n}\n\ntype Break = {\n index: number,\n x: number,\n priorBreak: ?Break,\n badness: number\n};\n\nfunction evaluateBreak(breakIndex: number,\n breakX: number,\n targetWidth: number,\n potentialBreaks: Array<Break>,\n penalty: number,\n isLastBreak: boolean): Break {\n // We could skip evaluating breaks where the line length (breakX - priorBreak.x) > maxWidth\n // ...but in fact we allow lines longer than maxWidth (if there's no break points)\n // ...and when targetWidth and maxWidth are close, strictly enforcing maxWidth can give\n // more lopsided results.\n\n let bestPriorBreak: ?Break = null;\n let bestBreakBadness = calculateBadness(breakX, targetWidth, penalty, isLastBreak);\n\n for (const potentialBreak of potentialBreaks) {\n const lineWidth = breakX - potentialBreak.x;\n const breakBadness =\n calculateBadness(lineWidth, targetWidth, penalty, isLastBreak) + potentialBreak.badness;\n if (breakBadness <= bestBreakBadness) {\n bestPriorBreak = potentialBreak;\n bestBreakBadness = breakBadness;\n }\n }\n\n return {\n index: breakIndex,\n x: breakX,\n priorBreak: bestPriorBreak,\n badness: bestBreakBadness\n };\n}\n\nfunction leastBadBreaks(lastLineBreak: ?Break): Array<number> {\n if (!lastLineBreak) {\n return [];\n }\n return leastBadBreaks(lastLineBreak.priorBreak).concat(lastLineBreak.index);\n}\n\nfunction determineLineBreaks(logicalInput: TaggedString,\n spacing: number,\n maxWidth: number,\n glyphMap: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}},\n imagePositions: {[_: string]: ImagePosition},\n symbolPlacement: string,\n layoutTextSize: number): Array<number> {\n if (symbolPlacement !== 'point')\n return [];\n\n if (!logicalInput)\n return [];\n\n const potentialLineBreaks = [];\n const targetWidth = determineAverageLineWidth(logicalInput, spacing, maxWidth, glyphMap, imagePositions, layoutTextSize);\n\n const hasServerSuggestedBreakpoints = logicalInput.text.indexOf(\"\\u200b\") >= 0;\n\n let currentX = 0;\n\n for (let i = 0; i < logicalInput.length(); i++) {\n const section = logicalInput.getSection(i);\n const codePoint = logicalInput.getCharCode(i);\n if (!whitespace[codePoint]) currentX += getGlyphAdvance(codePoint, section, glyphMap, imagePositions, spacing, layoutTextSize);\n\n // Ideographic characters, spaces, and word-breaking punctuation that often appear without\n // surrounding spaces.\n if ((i < logicalInput.length() - 1)) {\n const ideographicBreak = charAllowsIdeographicBreaking(codePoint);\n if (breakable[codePoint] || ideographicBreak || section.imageName) {\n\n potentialLineBreaks.push(\n evaluateBreak(\n i + 1,\n currentX,\n targetWidth,\n potentialLineBreaks,\n calculatePenalty(codePoint, logicalInput.getCharCode(i + 1), ideographicBreak && hasServerSuggestedBreakpoints),\n false));\n }\n }\n }\n\n return leastBadBreaks(\n evaluateBreak(\n logicalInput.length(),\n currentX,\n targetWidth,\n potentialLineBreaks,\n 0,\n true));\n}\n\nfunction getAnchorAlignment(anchor: SymbolAnchor): AnchorAlignment {\n let horizontalAlign = 0.5, verticalAlign = 0.5;\n\n switch (anchor) {\n case 'right':\n case 'top-right':\n case 'bottom-right':\n horizontalAlign = 1;\n break;\n case 'left':\n case 'top-left':\n case 'bottom-left':\n horizontalAlign = 0;\n break;\n }\n\n switch (anchor) {\n case 'bottom':\n case 'bottom-right':\n case 'bottom-left':\n verticalAlign = 1;\n break;\n case 'top':\n case 'top-right':\n case 'top-left':\n verticalAlign = 0;\n break;\n }\n\n return {horizontalAlign, verticalAlign};\n}\n\nfunction shapeLines(shaping: Shaping,\n glyphMap: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}},\n glyphPositions: GlyphPositions,\n imagePositions: {[_: string]: ImagePosition},\n lines: Array<TaggedString>,\n lineHeight: number,\n textAnchor: SymbolAnchor,\n textJustify: TextJustify,\n writingMode: 1 | 2,\n spacing: number,\n allowVerticalPlacement: boolean,\n layoutTextSizeThisZoom: number) {\n\n let x = 0;\n let y = 0;\n\n let maxLineLength = 0;\n let maxLineHeight = 0;\n\n const justify =\n textJustify === 'right' ? 1 :\n textJustify === 'left' ? 0 : 0.5;\n\n let hasBaseline = false;\n for (const line of lines) {\n const sections = line.getSections();\n for (const section of sections) {\n if (section.imageName) continue;\n\n const glyphData = glyphMap[section.fontStack];\n if (!glyphData) continue;\n\n hasBaseline = glyphData.ascender !== undefined && glyphData.descender !== undefined;\n if (!hasBaseline) break;\n }\n if (!hasBaseline) break;\n }\n\n let lineIndex = 0;\n for (const line of lines) {\n line.trim();\n\n const lineMaxScale = line.getMaxScale();\n const maxLineOffset = (lineMaxScale - 1) * ONE_EM;\n const positionedLine = {positionedGlyphs: [], lineOffset: 0};\n shaping.positionedLines[lineIndex] = positionedLine;\n const positionedGlyphs = positionedLine.positionedGlyphs;\n let lineOffset = 0.0;\n\n if (!line.length()) {\n y += lineHeight; // Still need a line feed after empty line\n ++lineIndex;\n continue;\n }\n\n let biggestHeight = 0;\n let baselineOffset = 0;\n for (let i = 0; i < line.length(); i++) {\n const section = line.getSection(i);\n const sectionIndex = line.getSectionIndex(i);\n const codePoint = line.getCharCode(i);\n\n let sectionScale = section.scale;\n let metrics = null;\n let rect = null;\n let imageName = null;\n let verticalAdvance = ONE_EM;\n let glyphOffset = 0;\n\n const vertical = !(writingMode === WritingMode.horizontal ||\n // Don't verticalize glyphs that have no upright orientation if vertical placement is disabled.\n (!allowVerticalPlacement && !charHasUprightVerticalOrientation(codePoint)) ||\n // If vertical placement is enabled, don't verticalize glyphs that\n // are from complex text layout script, or whitespaces.\n (allowVerticalPlacement && (whitespace[codePoint] || charInComplexShapingScript(codePoint))));\n\n if (!section.imageName) {\n // Find glyph position in the glyph atlas, if bitmap is null,\n // glyphPosition will not exit in the glyphPosition map\n const glyphPositionData = glyphPositions[section.fontStack];\n if (!glyphPositionData) continue;\n if (glyphPositionData[codePoint]) {\n rect = glyphPositionData[codePoint];\n }\n const glyphData = glyphMap[section.fontStack];\n if (!glyphData) continue;\n const glyph = glyphData.glyphs[codePoint];\n if (!glyph) continue;\n\n metrics = glyph.metrics;\n verticalAdvance = codePoint !== 0x200b ? ONE_EM : 0;\n\n // In order to make different fonts aligned, they must share a general baseline that aligns with every\n // font's real baseline. Glyph's offset is counted from the top left corner, where the ascender line\n // starts.\n // First of all, each glyph's baseline lies on the center line of the shaping line. Since ascender\n // is above the baseline, the glyphOffset is the negative shift. Then, in order to make glyphs fit in\n // the shaping box, for each line, we shift the glyph with biggest height(with scale) to make its center\n // lie on the center line of the line, which will lead to a baseline shift. Then adjust the whole line\n // with the baseline offset we calculated from the shift.\n if (hasBaseline) {\n const ascender = glyphData.ascender !== undefined ? Math.abs(glyphData.ascender) : 0;\n const descender = glyphData.descender !== undefined ? Math.abs(glyphData.descender) : 0;\n const value = (ascender + descender) * sectionScale;\n if (biggestHeight < value) {\n biggestHeight = value;\n baselineOffset = (ascender - descender) / 2 * sectionScale;\n }\n glyphOffset = -ascender * sectionScale;\n } else {\n // If font's baseline is not applicable, fall back to use a default baseline offset, see\n // Shaping::yOffset. Since we're laying out at 24 points, we need also calculate how much it will\n // move when we scale up or down.\n glyphOffset = SHAPING_DEFAULT_OFFSET + (lineMaxScale - sectionScale) * ONE_EM;\n }\n } else {\n const imagePosition = imagePositions[section.imageName];\n if (!imagePosition) continue;\n imageName = section.imageName;\n shaping.iconsInText = shaping.iconsInText || true;\n rect = imagePosition.paddedRect;\n const size = imagePosition.displaySize;\n // If needed, allow to set scale factor for an image using\n // alias \"image-scale\" that could be alias for \"font-scale\"\n // when FormattedSection is an image section.\n sectionScale = sectionScale * ONE_EM / layoutTextSizeThisZoom;\n\n metrics = {width: size[0],\n height: size[1],\n left: IMAGE_PADDING,\n top: -GLYPH_PBF_BORDER,\n advance: vertical ? size[1] : size[0],\n localGlyph: false};\n\n if (!hasBaseline) {\n glyphOffset = SHAPING_DEFAULT_OFFSET + lineMaxScale * ONE_EM - size[1] * sectionScale;\n } else {\n // Based on node-fontnik: 'top = heightAboveBaseline - Ascender'(it is not valid for locally\n // generated glyph). Since the top is a constant: glyph's borderSize. So if we set image glyph with\n // 'ascender = height', it means we pull down the glyph under baseline with a distance of glyph's borderSize.\n const imageAscender = metrics.height;\n glyphOffset = -imageAscender * sectionScale;\n\n }\n verticalAdvance = metrics.advance;\n\n // Difference between height of an image and one EM at max line scale.\n // Pushes current line down if an image size is over 1 EM at max line scale.\n const offset = (vertical ? size[0] : size[1]) * sectionScale - ONE_EM * lineMaxScale;\n if (offset > 0 && offset > lineOffset) {\n lineOffset = offset;\n }\n }\n\n if (!vertical) {\n positionedGlyphs.push({glyph: codePoint, imageName, x, y: y + glyphOffset, vertical, scale: sectionScale, localGlyph: metrics.localGlyph, fontStack: section.fontStack, sectionIndex, metrics, rect});\n x += metrics.advance * sectionScale + spacing;\n } else {\n shaping.verticalizable = true;\n positionedGlyphs.push({glyph: codePoint, imageName, x, y: y + glyphOffset, vertical, scale: sectionScale, localGlyph: metrics.localGlyph, fontStack: section.fontStack, sectionIndex, metrics, rect});\n x += verticalAdvance * sectionScale + spacing;\n }\n }\n\n // Only justify if we placed at least one glyph\n if (positionedGlyphs.length !== 0) {\n const lineLength = x - spacing;\n maxLineLength = Math.max(lineLength, maxLineLength);\n // Justify the line so that its top is aligned with the current height of y, and its horizontal coordinates\n // are justified according to the TextJustifyType\n if (hasBaseline) {\n justifyLine(positionedGlyphs, justify, lineOffset, baselineOffset, lineHeight * lineMaxScale / 2);\n } else {\n // Scaled line height offset is counted in glyphOffset, so here just use an unscaled line height\n justifyLine(positionedGlyphs, justify, lineOffset, 0, lineHeight / 2);\n }\n }\n\n x = 0;\n const currentLineHeight = lineHeight * lineMaxScale + lineOffset;\n positionedLine.lineOffset = Math.max(lineOffset, maxLineOffset);\n y += currentLineHeight;\n maxLineHeight = Math.max(currentLineHeight, maxLineHeight);\n ++lineIndex;\n }\n\n const height = y;\n const {horizontalAlign, verticalAlign} = getAnchorAlignment(textAnchor);\n align(shaping.positionedLines, justify, horizontalAlign, verticalAlign, maxLineLength, height);\n // Calculate the bounding box\n shaping.top += -verticalAlign * height;\n shaping.bottom = shaping.top + height;\n shaping.left += -horizontalAlign * maxLineLength;\n shaping.right = shaping.left + maxLineLength;\n shaping.hasBaseline = hasBaseline;\n}\n\n// justify right = 1, left = 0, center = 0.5\nfunction justifyLine(positionedGlyphs: Array<PositionedGlyph>,\n justify: 1 | 0 | 0.5,\n lineOffset: number,\n baselineOffset: number,\n halfLineHeight: number) {\n if (!justify && !lineOffset && !baselineOffset && !halfLineHeight) {\n return;\n }\n const end = positionedGlyphs.length - 1;\n const lastGlyph = positionedGlyphs[end];\n const lastAdvance = lastGlyph.metrics.advance * lastGlyph.scale;\n const lineIndent = (lastGlyph.x + lastAdvance) * justify;\n\n for (let j = 0; j <= end; j++) {\n positionedGlyphs[j].x -= lineIndent;\n positionedGlyphs[j].y += lineOffset + baselineOffset + halfLineHeight;\n }\n}\n\nfunction align(positionedLines: Array<PositionedLine>,\n justify: number,\n horizontalAlign: number,\n verticalAlign: number,\n maxLineLength: number,\n blockHeight: number) {\n const shiftX = (justify - horizontalAlign) * maxLineLength;\n\n const shiftY = -blockHeight * verticalAlign;\n for (const line of positionedLines) {\n for (const positionedGlyph of line.positionedGlyphs) {\n positionedGlyph.x += shiftX;\n positionedGlyph.y += shiftY;\n }\n }\n}\n\nexport type PositionedIcon = {\n image: ImagePosition,\n top: number,\n bottom: number,\n left: number,\n right: number,\n collisionPadding?: [number, number, number, number]\n};\n\nfunction shapeIcon(image: ImagePosition, iconOffset: [number, number], iconAnchor: SymbolAnchor): PositionedIcon {\n const {horizontalAlign, verticalAlign} = getAnchorAlignment(iconAnchor);\n const dx = iconOffset[0];\n const dy = iconOffset[1];\n const x1 = dx - image.displaySize[0] * horizontalAlign;\n const x2 = x1 + image.displaySize[0];\n const y1 = dy - image.displaySize[1] * verticalAlign;\n const y2 = y1 + image.displaySize[1];\n return {image, top: y1, bottom: y2, left: x1, right: x2};\n}\n\nfunction fitIconToText(shapedIcon: PositionedIcon, shapedText: Shaping,\n textFit: string,\n padding: [ number, number, number, number ],\n iconOffset: [ number, number ], fontScale: number): PositionedIcon {\n assert(textFit !== 'none');\n assert(Array.isArray(padding) && padding.length === 4);\n assert(Array.isArray(iconOffset) && iconOffset.length === 2);\n\n const image = shapedIcon.image;\n\n let collisionPadding;\n if (image.content) {\n const content = image.content;\n const pixelRatio = image.pixelRatio || 1;\n collisionPadding = [\n content[0] / pixelRatio,\n content[1] / pixelRatio,\n image.displaySize[0] - content[2] / pixelRatio,\n image.displaySize[1] - content[3] / pixelRatio\n ];\n }\n\n // We don't respect the icon-anchor, because icon-text-fit is set. Instead,\n // the icon will be centered on the text, then stretched in the given\n // dimensions.\n\n const textLeft = shapedText.left * fontScale;\n const textRight = shapedText.right * fontScale;\n\n let top, right, bottom, left;\n if (textFit === 'width' || textFit === 'both') {\n // Stretched horizontally to the text width\n left = iconOffset[0] + textLeft - padding[3];\n right = iconOffset[0] + textRight + padding[1];\n } else {\n // Centered on the text\n left = iconOffset[0] + (textLeft + textRight - image.displaySize[0]) / 2;\n right = left + image.displaySize[0];\n }\n\n const textTop = shapedText.top * fontScale;\n const textBottom = shapedText.bottom * fontScale;\n if (textFit === 'height' || textFit === 'both') {\n // Stretched vertically to the text height\n top = iconOffset[1] + textTop - padding[0];\n bottom = iconOffset[1] + textBottom + padding[2];\n } else {\n // Centered on the text\n top = iconOffset[1] + (textTop + textBottom - image.displaySize[1]) / 2;\n bottom = top + image.displaySize[1];\n }\n\n return {image, top, right, bottom, left, collisionPadding};\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nimport {register} from '../util/web_worker_transfer.js';\n\nclass Anchor extends Point {\n angle: any;\n z: number;\n segment: number | void;\n\n constructor(x: number, y: number, z: number, angle: number, segment?: number) {\n super(x, y);\n this.angle = angle;\n this.z = z;\n if (segment !== undefined) {\n this.segment = segment;\n }\n }\n\n clone(): Anchor {\n return new Anchor(this.x, this.y, this.z, this.angle, this.segment);\n }\n}\n\nregister(Anchor, 'Anchor');\n\nexport default Anchor;\n","// @flow\n\nexport default checkMaxAngle;\n\nimport type Point from '@mapbox/point-geometry';\nimport type Anchor from './anchor.js';\n\n/**\n * Labels placed around really sharp angles aren't readable. Check if any\n * part of the potential label has a combined angle that is too big.\n *\n * @param line\n * @param anchor The point on the line around which the label is anchored.\n * @param labelLength The length of the label in geometry units.\n * @param windowSize The check fails if the combined angles within a part of the line that is `windowSize` long is too big.\n * @param maxAngle The maximum combined angle that any window along the label is allowed to have.\n *\n * @returns {boolean} whether the label should be placed\n * @private\n */\nfunction checkMaxAngle(line: Array<Point>, anchor: Anchor, labelLength: number, windowSize: number, maxAngle: number): boolean {\n\n // horizontal labels always pass\n if (anchor.segment === undefined) return true;\n\n let p = anchor;\n let index = anchor.segment + 1;\n let anchorDistance = 0;\n\n // move backwards along the line to the first segment the label appears on\n while (anchorDistance > -labelLength / 2) {\n index--;\n\n // there isn't enough room for the label after the beginning of the line\n if (index < 0) return false;\n\n anchorDistance -= line[index].dist(p);\n p = line[index];\n }\n\n anchorDistance += line[index].dist(line[index + 1]);\n index++;\n\n // store recent corners and their total angle difference\n const recentCorners = [];\n let recentAngleDelta = 0;\n\n // move forwards by the length of the label and check angles along the way\n while (anchorDistance < labelLength / 2) {\n const prev = line[index - 1];\n const current = line[index];\n const next = line[index + 1];\n\n // there isn't enough room for the label before the end of the line\n if (!next) return false;\n\n let angleDelta = prev.angleTo(current) - current.angleTo(next);\n // restrict angle to -pi..pi range\n angleDelta = Math.abs(((angleDelta + 3 * Math.PI) % (Math.PI * 2)) - Math.PI);\n\n recentCorners.push({\n distance: anchorDistance,\n angleDelta\n });\n recentAngleDelta += angleDelta;\n\n // remove corners that are far enough away from the list of recent anchors\n while (anchorDistance - recentCorners[0].distance > windowSize) {\n recentAngleDelta -= recentCorners.shift().angleDelta;\n }\n\n // the sum of angles within the window area exceeds the maximum allowed value. check fails.\n if (recentAngleDelta > maxAngle) return false;\n\n index++;\n anchorDistance += current.dist(next);\n }\n\n // no part of the line had an angle greater than the maximum allowed. check passes.\n return true;\n}\n","// @flow\n\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\n\nimport Anchor from '../symbol/anchor.js';\nimport checkMaxAngle from './check_max_angle.js';\n\nimport type Point from '@mapbox/point-geometry';\nimport type {Shaping, PositionedIcon} from './shaping.js';\n\nexport {getAnchors, getCenterAnchor};\n\nfunction getLineLength(line: Array<Point>): number {\n let lineLength = 0;\n for (let k = 0; k < line.length - 1; k++) {\n lineLength += line[k].dist(line[k + 1]);\n }\n return lineLength;\n}\n\nfunction getAngleWindowSize(shapedText: ?Shaping,\n glyphSize: number,\n boxScale: number): number {\n return shapedText ?\n 3 / 5 * glyphSize * boxScale :\n 0;\n}\n\nfunction getShapedLabelLength(shapedText: ?Shaping, shapedIcon: ?PositionedIcon): number {\n return Math.max(\n shapedText ? shapedText.right - shapedText.left : 0,\n shapedIcon ? shapedIcon.right - shapedIcon.left : 0);\n}\n\nfunction getCenterAnchor(line: Array<Point>,\n maxAngle: number,\n shapedText: ?Shaping,\n shapedIcon: ?PositionedIcon,\n glyphSize: number,\n boxScale: number): ?Anchor {\n const angleWindowSize = getAngleWindowSize(shapedText, glyphSize, boxScale);\n const labelLength = getShapedLabelLength(shapedText, shapedIcon) * boxScale;\n\n let prevDistance = 0;\n const centerDistance = getLineLength(line) / 2;\n\n for (let i = 0; i < line.length - 1; i++) {\n\n const a = line[i],\n b = line[i + 1];\n\n const segmentDistance = a.dist(b);\n\n if (prevDistance + segmentDistance > centerDistance) {\n // The center is on this segment\n const t = (centerDistance - prevDistance) / segmentDistance,\n x = interpolate(a.x, b.x, t),\n y = interpolate(a.y, b.y, t);\n\n const anchor = new Anchor(x, y, 0, b.angleTo(a), i);\n if (!angleWindowSize || checkMaxAngle(line, anchor, labelLength, angleWindowSize, maxAngle)) {\n return anchor;\n } else {\n return;\n }\n }\n\n prevDistance += segmentDistance;\n }\n}\n\nfunction getAnchors(line: Array<Point>,\n spacing: number,\n maxAngle: number,\n shapedText: ?Shaping,\n shapedIcon: ?PositionedIcon,\n glyphSize: number,\n boxScale: number,\n overscaling: number,\n tileExtent: number): Array<Anchor> {\n\n // Resample a line to get anchor points for labels and check that each\n // potential label passes text-max-angle check and has enough froom to fit\n // on the line.\n\n const angleWindowSize = getAngleWindowSize(shapedText, glyphSize, boxScale);\n const shapedLabelLength = getShapedLabelLength(shapedText, shapedIcon);\n const labelLength = shapedLabelLength * boxScale;\n\n // Is the line continued from outside the tile boundary?\n const isLineContinued = line[0].x === 0 || line[0].x === tileExtent || line[0].y === 0 || line[0].y === tileExtent;\n\n // Is the label long, relative to the spacing?\n // If so, adjust the spacing so there is always a minimum space of `spacing / 4` between label edges.\n if (spacing - labelLength < spacing / 4) {\n spacing = labelLength + spacing / 4;\n }\n\n // Offset the first anchor by:\n // Either half the label length plus a fixed extra offset if the line is not continued\n // Or half the spacing if the line is continued.\n\n // For non-continued lines, add a bit of fixed extra offset to avoid collisions at T intersections.\n const fixedExtraOffset = glyphSize * 2;\n\n const offset = !isLineContinued ?\n ((shapedLabelLength / 2 + fixedExtraOffset) * boxScale * overscaling) % spacing :\n (spacing / 2 * overscaling) % spacing;\n\n return resample(line, offset, spacing, angleWindowSize, maxAngle, labelLength, isLineContinued, false, tileExtent);\n}\n\nfunction resample(line, offset, spacing, angleWindowSize, maxAngle, labelLength, isLineContinued, placeAtMiddle, tileExtent) {\n\n const halfLabelLength = labelLength / 2;\n const lineLength = getLineLength(line);\n\n let distance = 0,\n markedDistance = offset - spacing;\n\n let anchors = [];\n\n for (let i = 0; i < line.length - 1; i++) {\n\n const a = line[i],\n b = line[i + 1];\n\n const segmentDist = a.dist(b),\n angle = b.angleTo(a);\n\n while (markedDistance + spacing < distance + segmentDist) {\n markedDistance += spacing;\n\n const t = (markedDistance - distance) / segmentDist,\n x = interpolate(a.x, b.x, t),\n y = interpolate(a.y, b.y, t);\n\n // Check that the point is within the tile boundaries and that\n // the label would fit before the beginning and end of the line\n // if placed at this point.\n if (x >= 0 && x < tileExtent && y >= 0 && y < tileExtent &&\n markedDistance - halfLabelLength >= 0 &&\n markedDistance + halfLabelLength <= lineLength) {\n const anchor = new Anchor(x, y, 0, angle, i);\n anchor._round();\n\n if (!angleWindowSize || checkMaxAngle(line, anchor, labelLength, angleWindowSize, maxAngle)) {\n anchors.push(anchor);\n }\n }\n }\n\n distance += segmentDist;\n }\n\n if (!placeAtMiddle && !anchors.length && !isLineContinued) {\n // The first attempt at finding anchors at which labels can be placed failed.\n // Try again, but this time just try placing one anchor at the middle of the line.\n // This has the most effect for short lines in overscaled tiles, since the\n // initial offset used in overscaled tiles is calculated to align labels with positions in\n // parent tiles instead of placing the label as close to the beginning as possible.\n anchors = resample(line, distance / 2, spacing, angleWindowSize, maxAngle, labelLength, isLineContinued, true, tileExtent);\n }\n\n return anchors;\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nexport default clipLine;\n\n/**\n * Returns the part of a multiline that intersects with the provided rectangular box.\n *\n * @param lines\n * @param x1 the left edge of the box\n * @param y1 the top edge of the box\n * @param x2 the right edge of the box\n * @param y2 the bottom edge of the box\n * @returns lines\n * @private\n */\nfunction clipLine(lines: Array<Array<Point>>, x1: number, y1: number, x2: number, y2: number): Array<Array<Point>> {\n const clippedLines = [];\n\n for (let l = 0; l < lines.length; l++) {\n const line = lines[l];\n let clippedLine;\n\n for (let i = 0; i < line.length - 1; i++) {\n let p0 = line[i];\n let p1 = line[i + 1];\n\n if (p0.x < x1 && p1.x < x1) {\n continue;\n } else if (p0.x < x1) {\n p0 = new Point(x1, p0.y + (p1.y - p0.y) * ((x1 - p0.x) / (p1.x - p0.x)))._round();\n } else if (p1.x < x1) {\n p1 = new Point(x1, p0.y + (p1.y - p0.y) * ((x1 - p0.x) / (p1.x - p0.x)))._round();\n }\n\n if (p0.y < y1 && p1.y < y1) {\n continue;\n } else if (p0.y < y1) {\n p0 = new Point(p0.x + (p1.x - p0.x) * ((y1 - p0.y) / (p1.y - p0.y)), y1)._round();\n } else if (p1.y < y1) {\n p1 = new Point(p0.x + (p1.x - p0.x) * ((y1 - p0.y) / (p1.y - p0.y)), y1)._round();\n }\n\n if (p0.x >= x2 && p1.x >= x2) {\n continue;\n } else if (p0.x >= x2) {\n p0 = new Point(x2, p0.y + (p1.y - p0.y) * ((x2 - p0.x) / (p1.x - p0.x)))._round();\n } else if (p1.x >= x2) {\n p1 = new Point(x2, p0.y + (p1.y - p0.y) * ((x2 - p0.x) / (p1.x - p0.x)))._round();\n }\n\n if (p0.y >= y2 && p1.y >= y2) {\n continue;\n } else if (p0.y >= y2) {\n p0 = new Point(p0.x + (p1.x - p0.x) * ((y2 - p0.y) / (p1.y - p0.y)), y2)._round();\n } else if (p1.y >= y2) {\n p1 = new Point(p0.x + (p1.x - p0.x) * ((y2 - p0.y) / (p1.y - p0.y)), y2)._round();\n }\n\n if (!clippedLine || !p0.equals(clippedLine[clippedLine.length - 1])) {\n clippedLine = [p0];\n clippedLines.push(clippedLine);\n }\n\n clippedLine.push(p1);\n }\n }\n\n return clippedLines;\n}\n","const INF = 1e20;\n\nexport default class TinySDF {\n constructor({\n fontSize = 24,\n buffer = 3,\n radius = 8,\n cutoff = 0.25,\n fontFamily = 'sans-serif',\n fontWeight = 'normal',\n fontStyle = 'normal'\n } = {}) {\n this.buffer = buffer;\n this.cutoff = cutoff;\n this.radius = radius;\n\n // make the canvas size big enough to both have the specified buffer around the glyph\n // for \"halo\", and account for some glyphs possibly being larger than their font size\n const size = this.size = fontSize + buffer * 4;\n\n const canvas = this._createCanvas(size);\n const ctx = this.ctx = canvas.getContext('2d', {willReadFrequently: true});\n ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n\n ctx.textBaseline = 'alphabetic';\n ctx.textAlign = 'left'; // Necessary so that RTL text doesn't have different alignment\n ctx.fillStyle = 'black';\n\n // temporary arrays for the distance transform\n this.gridOuter = new Float64Array(size * size);\n this.gridInner = new Float64Array(size * size);\n this.f = new Float64Array(size);\n this.z = new Float64Array(size + 1);\n this.v = new Uint16Array(size);\n }\n\n _createCanvas(size) {\n const canvas = document.createElement('canvas');\n canvas.width = canvas.height = size;\n return canvas;\n }\n\n draw(char) {\n const {\n width: glyphAdvance,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n actualBoundingBoxLeft,\n actualBoundingBoxRight\n } = this.ctx.measureText(char);\n\n // The integer/pixel part of the top alignment is encoded in metrics.glyphTop\n // The remainder is implicitly encoded in the rasterization\n const glyphTop = Math.ceil(actualBoundingBoxAscent);\n const glyphLeft = 0;\n\n // If the glyph overflows the canvas size, it will be clipped at the bottom/right\n const glyphWidth = Math.min(this.size - this.buffer, Math.ceil(actualBoundingBoxRight - actualBoundingBoxLeft));\n const glyphHeight = Math.min(this.size - this.buffer, glyphTop + Math.ceil(actualBoundingBoxDescent));\n\n const width = glyphWidth + 2 * this.buffer;\n const height = glyphHeight + 2 * this.buffer;\n\n const len = Math.max(width * height, 0);\n const data = new Uint8ClampedArray(len);\n const glyph = {data, width, height, glyphWidth, glyphHeight, glyphTop, glyphLeft, glyphAdvance};\n if (glyphWidth === 0 || glyphHeight === 0) return glyph;\n\n const {ctx, buffer, gridInner, gridOuter} = this;\n ctx.clearRect(buffer, buffer, glyphWidth, glyphHeight);\n ctx.fillText(char, buffer, buffer + glyphTop);\n const imgData = ctx.getImageData(buffer, buffer, glyphWidth, glyphHeight);\n\n // Initialize grids outside the glyph range to alpha 0\n gridOuter.fill(INF, 0, len);\n gridInner.fill(0, 0, len);\n\n for (let y = 0; y < glyphHeight; y++) {\n for (let x = 0; x < glyphWidth; x++) {\n const a = imgData.data[4 * (y * glyphWidth + x) + 3] / 255; // alpha value\n if (a === 0) continue; // empty pixels\n\n const j = (y + buffer) * width + x + buffer;\n\n if (a === 1) { // fully drawn pixels\n gridOuter[j] = 0;\n gridInner[j] = INF;\n\n } else { // aliased pixels\n const d = 0.5 - a;\n gridOuter[j] = d > 0 ? d * d : 0;\n gridInner[j] = d < 0 ? d * d : 0;\n }\n }\n }\n\n edt(gridOuter, 0, 0, width, height, width, this.f, this.v, this.z);\n edt(gridInner, buffer, buffer, glyphWidth, glyphHeight, width, this.f, this.v, this.z);\n\n for (let i = 0; i < len; i++) {\n const d = Math.sqrt(gridOuter[i]) - Math.sqrt(gridInner[i]);\n data[i] = Math.round(255 - 255 * (d / this.radius + this.cutoff));\n }\n\n return glyph;\n }\n}\n\n// 2D Euclidean squared distance transform by Felzenszwalb & Huttenlocher https://cs.brown.edu/~pff/papers/dt-final.pdf\nfunction edt(data, x0, y0, width, height, gridSize, f, v, z) {\n for (let x = x0; x < x0 + width; x++) edt1d(data, y0 * gridSize + x, gridSize, height, f, v, z);\n for (let y = y0; y < y0 + height; y++) edt1d(data, y * gridSize + x0, 1, width, f, v, z);\n}\n\n// 1D squared distance transform\nfunction edt1d(grid, offset, stride, length, f, v, z) {\n v[0] = 0;\n z[0] = -INF;\n z[1] = INF;\n f[0] = grid[offset];\n\n for (let q = 1, k = 0, s = 0; q < length; q++) {\n f[q] = grid[offset + q * stride];\n const q2 = q * q;\n do {\n const r = v[k];\n s = (f[q] - f[r] + q2 - r * r) / (q - r) / 2;\n } while (s <= z[k] && --k > -1);\n\n k++;\n v[k] = q;\n z[k] = s;\n z[k + 1] = INF;\n }\n\n for (let q = 0, k = 0; q < length; q++) {\n while (z[k + 1] < q) k++;\n const r = v[k];\n const qr = q - r;\n grid[offset + q * stride] = f[r] + qr * qr;\n }\n}\n","// @flow\n\nimport loadGlyphRange from '../style/load_glyph_range.js';\n\nimport TinySDF from '@mapbox/tiny-sdf';\nimport isChar from '../util/is_char_in_unicode_block.js';\nimport {asyncAll} from '../util/util.js';\nimport {AlphaImage} from '../util/image.js';\n\nimport type {StyleGlyph} from '../style/style_glyph.js';\nimport type {RequestManager} from '../util/mapbox.js';\nimport type {Callback} from '../types/callback.js';\n\n/*\n SDF_SCALE controls the pixel density of locally generated glyphs relative\n to \"normal\" SDFs which are generated at 24pt font and a \"pixel ratio\" of 1.\n The GlyphManager will generate glyphs SDF_SCALE times as large,\n but with the same glyph metrics, and the quad generation code will scale them\n back down so they display at the same size.\n\n The choice of SDF_SCALE is a trade-off between performance and quality.\n Glyph generation time grows quadratically with the the scale, while quality\n improvements drop off rapidly when the scale is higher than the pixel ratio\n of the device. The scale of 2 buys noticeable improvements on HDPI screens\n at acceptable cost.\n\n The scale can be any value, but in order to avoid small distortions, these\n pixel-based values must come out to integers:\n - \"localGlyphPadding\" in GlyphAtlas\n - Font/Canvas/Buffer size for TinySDF\n localGlyphPadding + buffer should equal 4 * SDF_SCALE. So if you wanted to\n use an SDF_SCALE of 1.75, you could manually set localGlyphAdding to 2 and\n buffer to 5.\n*/\nexport const SDF_SCALE = 2;\n\ntype Entry = {\n // null means we've requested the range, but the glyph wasn't included in the result.\n glyphs: {[id: number]: StyleGlyph | null},\n requests: {[range: number]: Array<Callback<{glyphs: {[number]: StyleGlyph | null}, ascender?: number, descender?: number}>>},\n ranges: {[range: number]: boolean | null},\n tinySDF?: TinySDF,\n ascender?: number,\n descender?: number\n};\n\nexport const LocalGlyphMode = {\n none: 0,\n ideographs: 1,\n all: 2\n};\n\nclass GlyphManager {\n requestManager: RequestManager;\n localFontFamily: ?string;\n localGlyphMode: number;\n entries: {[_: string]: Entry};\n // Multiple fontstacks may share the same local glyphs, so keep an index\n // into the glyphs based soley on font weight\n localGlyphs: {[_: string]: {glyphs: {[id: number]: StyleGlyph | null}, ascender: ?number, descender: ?number}};\n url: ?string;\n\n // exposed as statics to enable stubbing in unit tests\n static loadGlyphRange: typeof loadGlyphRange;\n static TinySDF: Class<TinySDF>;\n\n constructor(requestManager: RequestManager, localGlyphMode: number, localFontFamily: ?string) {\n this.requestManager = requestManager;\n this.localGlyphMode = localGlyphMode;\n this.localFontFamily = localFontFamily;\n this.entries = {};\n this.localGlyphs = {\n // Only these four font weights are supported\n '200': {},\n '400': {},\n '500': {},\n '900': {}\n };\n }\n\n setURL(url: ?string) {\n this.url = url;\n }\n\n getGlyphs(glyphs: {[stack: string]: Array<number>}, callback: Callback<{[stack: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}}>) {\n const all = [];\n\n for (const stack in glyphs) {\n for (const id of glyphs[stack]) {\n all.push({stack, id});\n }\n }\n\n asyncAll(all, ({stack, id}, fnCallback: Callback<{stack: string, id: number, glyph: ?StyleGlyph}>) => {\n let entry = this.entries[stack];\n if (!entry) {\n entry = this.entries[stack] = {\n glyphs: {},\n requests: {},\n ranges: {},\n ascender: undefined,\n descender: undefined\n };\n }\n\n let glyph = entry.glyphs[id];\n if (glyph !== undefined) {\n fnCallback(null, {stack, id, glyph});\n return;\n }\n\n glyph = this._tinySDF(entry, stack, id);\n if (glyph) {\n entry.glyphs[id] = glyph;\n fnCallback(null, {stack, id, glyph});\n return;\n }\n\n const range = Math.floor(id / 256);\n if (range * 256 > 65535) {\n fnCallback(new Error('glyphs > 65535 not supported'));\n return;\n }\n\n if (entry.ranges[range]) {\n fnCallback(null, {stack, id, glyph});\n return;\n }\n\n let requests = entry.requests[range];\n if (!requests) {\n requests = entry.requests[range] = [];\n GlyphManager.loadGlyphRange(stack, range, (this.url: any), this.requestManager,\n (err, response: ?{glyphs: {[_: number]: StyleGlyph | null}, ascender?: number, descender?: number}) => {\n if (response) {\n entry.ascender = response.ascender;\n entry.descender = response.descender;\n for (const id in response.glyphs) {\n if (!this._doesCharSupportLocalGlyph(+id)) {\n entry.glyphs[+id] = response.glyphs[+id];\n }\n }\n entry.ranges[range] = true;\n }\n for (const cb of requests) {\n cb(err, response);\n }\n delete entry.requests[range];\n });\n }\n\n requests.push((err, result: ?{glyphs: {[_: number]: StyleGlyph | null}, ascender?: number, descender?: number}) => {\n if (err) {\n fnCallback(err);\n } else if (result) {\n fnCallback(null, {stack, id, glyph: result.glyphs[id] || null});\n }\n });\n }, (err, glyphs: ?Array<{stack: string, id: number, glyph: ?StyleGlyph}>) => {\n if (err) {\n callback(err);\n } else if (glyphs) {\n const result = {};\n\n for (const {stack, id, glyph} of glyphs) {\n // Clone the glyph so that our own copy of its ArrayBuffer doesn't get transferred.\n if (result[stack] === undefined) result[stack] = {};\n if (result[stack].glyphs === undefined) result[stack].glyphs = {};\n result[stack].glyphs[id] = glyph && {\n id: glyph.id,\n bitmap: glyph.bitmap.clone(),\n metrics: glyph.metrics\n };\n result[stack].ascender = this.entries[stack].ascender;\n result[stack].descender = this.entries[stack].descender;\n }\n\n callback(null, result);\n }\n });\n }\n\n _doesCharSupportLocalGlyph(id: number): boolean {\n if (this.localGlyphMode === LocalGlyphMode.none) {\n return false;\n } else if (this.localGlyphMode === LocalGlyphMode.all) {\n return !!this.localFontFamily;\n } else {\n /* eslint-disable new-cap */\n return !!this.localFontFamily &&\n ((isChar['CJK Unified Ideographs'](id) ||\n isChar['Hangul Syllables'](id) ||\n isChar['Hiragana'](id) ||\n isChar['Katakana'](id)) ||\n // gl-native parity: Extend Ideographs rasterization range to include CJK symbols and punctuations\n isChar['CJK Symbols and Punctuation'](id));\n /* eslint-enable new-cap */\n }\n }\n\n _tinySDF(entry: Entry, stack: string, id: number): ?StyleGlyph {\n const fontFamily = this.localFontFamily;\n if (!fontFamily || !this._doesCharSupportLocalGlyph(id)) return;\n\n let tinySDF = entry.tinySDF;\n if (!tinySDF) {\n let fontWeight = '400';\n if (/bold/i.test(stack)) {\n fontWeight = '900';\n } else if (/medium/i.test(stack)) {\n fontWeight = '500';\n } else if (/light/i.test(stack)) {\n fontWeight = '200';\n }\n\n const fontSize = 24 * SDF_SCALE;\n const buffer = 3 * SDF_SCALE;\n const radius = 8 * SDF_SCALE;\n tinySDF = entry.tinySDF = new GlyphManager.TinySDF({fontFamily, fontWeight, fontSize, buffer, radius});\n tinySDF.fontWeight = fontWeight;\n }\n\n if (this.localGlyphs[tinySDF.fontWeight][id]) {\n return this.localGlyphs[tinySDF.fontWeight][id];\n }\n\n const char = String.fromCharCode(id);\n const {data, width, height, glyphWidth, glyphHeight, glyphLeft, glyphTop, glyphAdvance} = tinySDF.draw(char);\n /*\n TinySDF's \"top\" is the distance from the alphabetic baseline to the\n top of the glyph.\n\n Server-generated fonts specify \"top\" relative to an origin above the\n em box (the origin comes from FreeType, but I'm unclear on exactly\n how it's derived)\n ref: https://github.com/mapbox/sdf-glyph-foundry\n\n Server fonts don't yet include baseline information, so we can't line\n up exactly with them (and they don't line up with each other)\n ref: https://github.com/mapbox/node-fontnik/pull/160\n\n To approximately align TinySDF glyphs with server-provided glyphs, we\n use this baseline adjustment factor calibrated to be in between DIN Pro\n and Arial Unicode (but closer to Arial Unicode)\n */\n const baselineAdjustment = 27;\n\n const glyph = this.localGlyphs[tinySDF.fontWeight][id] = {\n id,\n bitmap: new AlphaImage({width, height}, data),\n metrics: {\n width: glyphWidth / SDF_SCALE,\n height: glyphHeight / SDF_SCALE,\n left: glyphLeft / SDF_SCALE,\n top: glyphTop / SDF_SCALE - baselineAdjustment,\n advance: glyphAdvance / SDF_SCALE,\n localGlyph: true\n }\n };\n return glyph;\n }\n}\n\nGlyphManager.loadGlyphRange = loadGlyphRange;\nGlyphManager.TinySDF = TinySDF;\n\nexport default GlyphManager;\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nimport {GLYPH_PBF_BORDER} from '../style/parse_glyph_pbf.js';\n\nimport type Anchor from './anchor.js';\nimport type {PositionedIcon, Shaping} from './shaping.js';\nimport {IMAGE_PADDING} from '../render/image_atlas.js';\nimport {SDF_SCALE} from '../render/glyph_manager.js';\nimport type SymbolStyleLayer from '../style/style_layer/symbol_style_layer.js';\nimport type {Feature} from '../style-spec/expression/index.js';\nimport type {StyleImage} from '../style/style_image.js';\nimport {isVerticalClosePunctuation, isVerticalOpenPunctuation} from '../util/verticalize_punctuation.js';\nimport ONE_EM from './one_em.js';\nimport {warnOnce} from '../util/util.js';\n\n/**\n * A textured quad for rendering a single icon or glyph.\n *\n * The zoom range the glyph can be shown is defined by minScale and maxScale.\n *\n * @param tl The offset of the top left corner from the anchor.\n * @param tr The offset of the top right corner from the anchor.\n * @param bl The offset of the bottom left corner from the anchor.\n * @param br The offset of the bottom right corner from the anchor.\n * @param tex The texture coordinates.\n *\n * @private\n */\nexport type SymbolQuad = {\n tl: Point,\n tr: Point,\n bl: Point,\n br: Point,\n tex: {\n x: number,\n y: number,\n w: number,\n h: number\n },\n pixelOffsetTL: Point,\n pixelOffsetBR: Point,\n writingMode: any | void,\n glyphOffset: [number, number],\n sectionIndex: number,\n isSDF: boolean,\n minFontScaleX: number,\n minFontScaleY: number\n};\n\n// If you have a 10px icon that isn't perfectly aligned to the pixel grid it will cover 11 actual\n// pixels. The quad needs to be padded to account for this, otherwise they'll look slightly clipped\n// on one edge in some cases.\nconst border = IMAGE_PADDING;\n\n/**\n * Create the quads used for rendering an icon.\n * @private\n */\nexport function getIconQuads(\n shapedIcon: PositionedIcon,\n iconRotate: number,\n isSDFIcon: boolean,\n hasIconTextFit: boolean): Array<SymbolQuad> {\n const quads = [];\n\n const image = shapedIcon.image;\n const pixelRatio = image.pixelRatio;\n const imageWidth = image.paddedRect.w - 2 * border;\n const imageHeight = image.paddedRect.h - 2 * border;\n\n const iconWidth = shapedIcon.right - shapedIcon.left;\n const iconHeight = shapedIcon.bottom - shapedIcon.top;\n\n const stretchX = image.stretchX || [[0, imageWidth]];\n const stretchY = image.stretchY || [[0, imageHeight]];\n\n const reduceRanges = (sum, range) => sum + range[1] - range[0];\n const stretchWidth = stretchX.reduce(reduceRanges, 0);\n const stretchHeight = stretchY.reduce(reduceRanges, 0);\n const fixedWidth = imageWidth - stretchWidth;\n const fixedHeight = imageHeight - stretchHeight;\n\n let stretchOffsetX = 0;\n let stretchContentWidth = stretchWidth;\n let stretchOffsetY = 0;\n let stretchContentHeight = stretchHeight;\n let fixedOffsetX = 0;\n let fixedContentWidth = fixedWidth;\n let fixedOffsetY = 0;\n let fixedContentHeight = fixedHeight;\n\n if (image.content && hasIconTextFit) {\n const content = image.content;\n stretchOffsetX = sumWithinRange(stretchX, 0, content[0]);\n stretchOffsetY = sumWithinRange(stretchY, 0, content[1]);\n stretchContentWidth = sumWithinRange(stretchX, content[0], content[2]);\n stretchContentHeight = sumWithinRange(stretchY, content[1], content[3]);\n fixedOffsetX = content[0] - stretchOffsetX;\n fixedOffsetY = content[1] - stretchOffsetY;\n fixedContentWidth = content[2] - content[0] - stretchContentWidth;\n fixedContentHeight = content[3] - content[1] - stretchContentHeight;\n }\n\n const makeBox = (left, top, right, bottom) => {\n\n const leftEm = getEmOffset(left.stretch - stretchOffsetX, stretchContentWidth, iconWidth, shapedIcon.left);\n const leftPx = getPxOffset(left.fixed - fixedOffsetX, fixedContentWidth, left.stretch, stretchWidth);\n\n const topEm = getEmOffset(top.stretch - stretchOffsetY, stretchContentHeight, iconHeight, shapedIcon.top);\n const topPx = getPxOffset(top.fixed - fixedOffsetY, fixedContentHeight, top.stretch, stretchHeight);\n\n const rightEm = getEmOffset(right.stretch - stretchOffsetX, stretchContentWidth, iconWidth, shapedIcon.left);\n const rightPx = getPxOffset(right.fixed - fixedOffsetX, fixedContentWidth, right.stretch, stretchWidth);\n\n const bottomEm = getEmOffset(bottom.stretch - stretchOffsetY, stretchContentHeight, iconHeight, shapedIcon.top);\n const bottomPx = getPxOffset(bottom.fixed - fixedOffsetY, fixedContentHeight, bottom.stretch, stretchHeight);\n\n const tl = new Point(leftEm, topEm);\n const tr = new Point(rightEm, topEm);\n const br = new Point(rightEm, bottomEm);\n const bl = new Point(leftEm, bottomEm);\n const pixelOffsetTL = new Point(leftPx / pixelRatio, topPx / pixelRatio);\n const pixelOffsetBR = new Point(rightPx / pixelRatio, bottomPx / pixelRatio);\n\n const angle = iconRotate * Math.PI / 180;\n\n if (angle) {\n const sin = Math.sin(angle),\n cos = Math.cos(angle),\n matrix = [cos, -sin, sin, cos];\n\n tl._matMult(matrix);\n tr._matMult(matrix);\n bl._matMult(matrix);\n br._matMult(matrix);\n }\n\n const x1 = left.stretch + left.fixed;\n const x2 = right.stretch + right.fixed;\n const y1 = top.stretch + top.fixed;\n const y2 = bottom.stretch + bottom.fixed;\n\n const subRect = {\n x: image.paddedRect.x + border + x1,\n y: image.paddedRect.y + border + y1,\n w: x2 - x1,\n h: y2 - y1\n };\n\n const minFontScaleX = fixedContentWidth / pixelRatio / iconWidth;\n const minFontScaleY = fixedContentHeight / pixelRatio / iconHeight;\n\n // Icon quad is padded, so texture coordinates also need to be padded.\n return {tl, tr, bl, br, tex: subRect, writingMode: undefined, glyphOffset: [0, 0], sectionIndex: 0, pixelOffsetTL, pixelOffsetBR, minFontScaleX, minFontScaleY, isSDF: isSDFIcon};\n };\n\n if (!hasIconTextFit || (!image.stretchX && !image.stretchY)) {\n quads.push(makeBox(\n {fixed: 0, stretch: -1},\n {fixed: 0, stretch: -1},\n {fixed: 0, stretch: imageWidth + 1},\n {fixed: 0, stretch: imageHeight + 1}));\n } else {\n const xCuts = stretchZonesToCuts(stretchX, fixedWidth, stretchWidth);\n const yCuts = stretchZonesToCuts(stretchY, fixedHeight, stretchHeight);\n\n for (let xi = 0; xi < xCuts.length - 1; xi++) {\n const x1 = xCuts[xi];\n const x2 = xCuts[xi + 1];\n for (let yi = 0; yi < yCuts.length - 1; yi++) {\n const y1 = yCuts[yi];\n const y2 = yCuts[yi + 1];\n quads.push(makeBox(x1, y1, x2, y2));\n }\n }\n }\n\n return quads;\n}\n\nfunction sumWithinRange(ranges, min, max) {\n let sum = 0;\n for (const range of ranges) {\n sum += Math.max(min, Math.min(max, range[1])) - Math.max(min, Math.min(max, range[0]));\n }\n return sum;\n}\n\nfunction stretchZonesToCuts(stretchZones, fixedSize, stretchSize) {\n const cuts = [{fixed: -border, stretch: 0}];\n\n for (const [c1, c2] of stretchZones) {\n const last = cuts[cuts.length - 1];\n cuts.push({\n fixed: c1 - last.stretch,\n stretch: last.stretch\n });\n cuts.push({\n fixed: c1 - last.stretch,\n stretch: last.stretch + (c2 - c1)\n });\n }\n cuts.push({\n fixed: fixedSize + border,\n stretch: stretchSize\n });\n return cuts;\n}\n\nfunction getEmOffset(stretchOffset, stretchSize, iconSize, iconOffset) {\n return stretchOffset / stretchSize * iconSize + iconOffset;\n}\n\nfunction getPxOffset(fixedOffset, fixedSize, stretchOffset, stretchSize) {\n return fixedOffset - fixedSize * stretchOffset / stretchSize;\n}\n\nfunction getRotateOffset(textOffset: [number, number]) {\n const x = textOffset[0], y = textOffset[1];\n const product = x * y;\n if (product > 0) {\n return [x, -y];\n } else if (product < 0) {\n return [-x, y];\n } else if (x === 0) {\n return [y, x];\n } else {\n return [y, -x];\n }\n}\n\nfunction getMidlineOffset(shaping, lineHeight, previousOffset, lineIndex) {\n const currentLineHeight = (lineHeight + shaping.positionedLines[lineIndex].lineOffset);\n if (lineIndex === 0) {\n return previousOffset + currentLineHeight / 2.0;\n }\n const aboveLineHeight = (lineHeight + shaping.positionedLines[lineIndex - 1].lineOffset);\n return previousOffset + (currentLineHeight + aboveLineHeight) / 2.0;\n}\n\n/**\n * Create the quads used for rendering a text label.\n * @private\n */\nexport function getGlyphQuads(anchor: Anchor,\n shaping: Shaping,\n textOffset: [number, number],\n layer: SymbolStyleLayer,\n alongLine: boolean,\n feature: Feature,\n imageMap: {[_: string]: StyleImage},\n allowVerticalPlacement: boolean): Array<SymbolQuad> {\n const quads = [];\n if (shaping.positionedLines.length === 0) return quads;\n\n const textRotate = layer.layout.get('text-rotate').evaluate(feature, {}) * Math.PI / 180;\n const rotateOffset = getRotateOffset(textOffset);\n\n let shapingHeight = Math.abs(shaping.top - shaping.bottom);\n for (const line of shaping.positionedLines) {\n shapingHeight -= line.lineOffset;\n }\n const lineCounts = shaping.positionedLines.length;\n const lineHeight = shapingHeight / lineCounts;\n let currentOffset = shaping.top - textOffset[1];\n for (let lineIndex = 0; lineIndex < lineCounts; ++lineIndex) {\n const line = shaping.positionedLines[lineIndex];\n currentOffset = getMidlineOffset(shaping, lineHeight, currentOffset, lineIndex);\n for (const positionedGlyph of line.positionedGlyphs) {\n if (!positionedGlyph.rect) continue;\n const textureRect = positionedGlyph.rect || {};\n\n // The rects have an additional buffer that is not included in their size.\n const glyphPadding = 1.0;\n let rectBuffer = GLYPH_PBF_BORDER + glyphPadding;\n let isSDF = true;\n let pixelRatio = 1.0;\n let lineOffset = 0.0;\n if (positionedGlyph.imageName) {\n const image = imageMap[positionedGlyph.imageName];\n if (!image) continue;\n if (image.sdf) {\n warnOnce(\"SDF images are not supported in formatted text and will be ignored.\");\n continue;\n }\n isSDF = false;\n pixelRatio = image.pixelRatio;\n rectBuffer = IMAGE_PADDING / pixelRatio;\n }\n\n const rotateVerticalGlyph = (alongLine || allowVerticalPlacement) && positionedGlyph.vertical;\n const halfAdvance = positionedGlyph.metrics.advance * positionedGlyph.scale / 2;\n const metrics = positionedGlyph.metrics;\n const rect = positionedGlyph.rect;\n if (rect === null) continue;\n\n // Align images and scaled glyphs in the middle of a vertical line.\n if (allowVerticalPlacement && shaping.verticalizable) {\n // image's advance for vertical shaping is its height, so that we have to take the difference into\n // account after image glyph is rotated\n lineOffset = positionedGlyph.imageName ? halfAdvance - positionedGlyph.metrics.width * positionedGlyph.scale / 2.0 : 0;\n }\n\n const glyphOffset = alongLine ?\n [positionedGlyph.x + halfAdvance, positionedGlyph.y] :\n [0, 0];\n\n let builtInOffset = [0, 0];\n let verticalizedLabelOffset = [0, 0];\n let useRotateOffset = false;\n if (!alongLine) {\n if (rotateVerticalGlyph) {\n // Vertical POI labels that are rotated 90deg CW and whose glyphs must preserve upright orientation\n // need to be rotated 90deg CCW. After a quad is rotated, it is translated to the original built-in offset.\n verticalizedLabelOffset =\n [positionedGlyph.x + halfAdvance + rotateOffset[0], positionedGlyph.y + rotateOffset[1] - lineOffset];\n useRotateOffset = true;\n } else {\n builtInOffset = [positionedGlyph.x + halfAdvance + textOffset[0], positionedGlyph.y + textOffset[1] - lineOffset];\n }\n }\n\n const paddedWidth =\n rect.w * positionedGlyph.scale / (pixelRatio * (positionedGlyph.localGlyph ? SDF_SCALE : 1));\n const paddedHeight =\n rect.h * positionedGlyph.scale / (pixelRatio * (positionedGlyph.localGlyph ? SDF_SCALE : 1));\n\n let tl, tr, bl, br;\n if (!rotateVerticalGlyph) {\n const x1 = (metrics.left - rectBuffer) * positionedGlyph.scale - halfAdvance + builtInOffset[0];\n const y1 = (-metrics.top - rectBuffer) * positionedGlyph.scale + builtInOffset[1];\n const x2 = x1 + paddedWidth;\n const y2 = y1 + paddedHeight;\n\n tl = new Point(x1, y1);\n tr = new Point(x2, y1);\n bl = new Point(x1, y2);\n br = new Point(x2, y2);\n } else {\n // For vertical glyph placement, follow the steps to put the glyph bitmap in right coordinates:\n // 1. Rotate the glyph by using original glyph coordinates instead of padded coordinates, since the\n // rotation center and xOffsetCorrection are all based on original glyph's size.\n // 2. Do x offset correction so that 'tl' is shifted to the same x coordinate before rotation.\n // 3. Adjust glyph positon for 'tl' by applying vertial padding and horizontal shift, now 'tl' is the\n // coordinate where we draw the glyph bitmap.\n // 4. Calculate other three bitmap coordinates.\n\n // Vertical-supporting glyphs are laid out in 24x24 point boxes (1 square em)\n // In horizontal orientation, the \"yShift\" is the negative value of the height that\n // the glyph is above the horizontal midline.\n // By rotating counter-clockwise around the point at the center of the left\n // edge of a 24x24 layout box centered below the midline, we align the midline\n // of the rotated glyphs with the horizontal midline, so the yShift is no longer\n // necessary, but we also pull the glyph to the left along the x axis.\n const yShift = (positionedGlyph.y - currentOffset);\n const center = new Point(-halfAdvance, halfAdvance - yShift);\n const verticalRotation = -Math.PI / 2;\n const verticalOffsetCorrection = new Point(...verticalizedLabelOffset);\n // Relative position before rotation\n // tl ----- tr\n // | |\n // | |\n // bl ----- br\n tl = new Point(-halfAdvance + builtInOffset[0], builtInOffset[1]);\n tl._rotateAround(verticalRotation, center)._add(verticalOffsetCorrection);\n\n // Relative position after rotating\n // tr ----- br\n // | |\n // | |\n // tl ----- bl\n // After rotation, glyph lies on the horizontal midline.\n // Shift back to tl's original x coordinate before rotation by applying 'xOffsetCorrection'.\n tl.x += -yShift + halfAdvance;\n\n // Add padding for y coordinate's justification\n tl.y -= (metrics.left - rectBuffer) * positionedGlyph.scale;\n\n // Adjust x coordinate according to glyph bitmap's height and the vectical advance\n const verticalAdvance = positionedGlyph.imageName ? metrics.advance * positionedGlyph.scale :\n ONE_EM * positionedGlyph.scale;\n // Check wether the glyph is generated from server side or locally\n const chr = String.fromCharCode(positionedGlyph.glyph);\n if (isVerticalClosePunctuation(chr)) {\n // Place vertical punctuation in right place, pull down 1 pixel's space for close punctuations\n tl.x += (-rectBuffer + 1) * positionedGlyph.scale;\n } else if (isVerticalOpenPunctuation(chr)) {\n const xOffset = verticalAdvance - metrics.height * positionedGlyph.scale;\n // Place vertical punctuation in right place, pull up 1 pixel's space for open punctuations\n tl.x += xOffset + (-rectBuffer - 1) * positionedGlyph.scale;\n } else if (!positionedGlyph.imageName &&\n ((metrics.width + rectBuffer * 2) !== rect.w || metrics.height + rectBuffer * 2 !== rect.h)) {\n // Locally generated glyphs' bitmap do not have exact 'rectBuffer' padded around the glyphs,\n // but the original tl do have distance of rectBuffer padded to the top of the glyph.\n const perfectPaddedHeight = (metrics.height + rectBuffer * 2) * positionedGlyph.scale;\n const delta = verticalAdvance - perfectPaddedHeight;\n tl.x += delta / 2;\n } else {\n // Place the glyph bitmap right in the center of the 24x24 point boxes\n const delta = verticalAdvance - paddedHeight;\n tl.x += delta / 2;\n }\n // Calculate other three points\n tr = new Point(tl.x, tl.y - paddedWidth);\n bl = new Point(tl.x + paddedHeight, tl.y);\n br = new Point(tl.x + paddedHeight, tl.y - paddedWidth);\n }\n\n if (textRotate) {\n let center;\n if (!alongLine) {\n if (useRotateOffset) {\n center = new Point(rotateOffset[0], rotateOffset[1]);\n } else {\n center = new Point(textOffset[0], textOffset[1]);\n }\n } else {\n center = new Point(0, 0);\n }\n tl._rotateAround(textRotate, center);\n tr._rotateAround(textRotate, center);\n bl._rotateAround(textRotate, center);\n br._rotateAround(textRotate, center);\n }\n\n const pixelOffsetTL = new Point(0, 0);\n const pixelOffsetBR = new Point(0, 0);\n const minFontScaleX = 0;\n const minFontScaleY = 0;\n quads.push({tl, tr, bl, br, tex: textureRect, writingMode: shaping.writingMode, glyphOffset, sectionIndex: positionedGlyph.sectionIndex, isSDF, pixelOffsetTL, pixelOffsetBR, minFontScaleX, minFontScaleY});\n }\n }\n\n return quads;\n}\n","// @flow\n\nimport {getArrayBuffer, ResourceType} from '../util/ajax.js';\n\nimport parseGlyphPBF from './parse_glyph_pbf.js';\n\nimport type {StyleGlyph} from './style_glyph.js';\nimport type {RequestManager} from '../util/mapbox.js';\nimport type {Callback} from '../types/callback.js';\n\nexport default function (fontstack: string,\n range: number,\n urlTemplate: string,\n requestManager: RequestManager,\n callback: Callback<{glyphs: {[number]: StyleGlyph | null}, ascender?: number, descender?: number}>) {\n const begin = range * 256;\n const end = begin + 255;\n\n const request = requestManager.transformRequest(\n requestManager.normalizeGlyphsURL(urlTemplate)\n .replace('{fontstack}', fontstack)\n .replace('{range}', `${begin}-${end}`),\n ResourceType.Glyphs);\n\n getArrayBuffer(request, (err: ?Error, data: ?ArrayBuffer) => {\n if (err) {\n callback(err);\n } else if (data) {\n const glyphs = {};\n const glyphData = parseGlyphPBF(data);\n for (const glyph of glyphData.glyphs) {\n glyphs[glyph.id] = glyph;\n }\n callback(null, {glyphs, ascender: glyphData.ascender, descender: glyphData.descender});\n }\n });\n}\n","\nexport default class TinyQueue {\n constructor(data = [], compare = defaultCompare) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare;\n\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n\n push(item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n }\n\n pop() {\n if (this.length === 0) return undefined;\n\n const top = this.data[0];\n const bottom = this.data.pop();\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n\n return top;\n }\n\n peek() {\n return this.data[0];\n }\n\n _up(pos) {\n const {data, compare} = this;\n const item = data[pos];\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n }\n\n _down(pos) {\n const {data, compare} = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n\n while (pos < halfLength) {\n let left = (pos << 1) + 1;\n let best = data[left];\n const right = left + 1;\n\n if (right < this.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) break;\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n","// @flow\n\nimport Queue from 'tinyqueue';\n\nimport Point from '@mapbox/point-geometry';\nimport {distToSegmentSquared} from './intersection_tests.js';\n\n/**\n * Finds an approximation of a polygon's Pole Of Inaccessibility https://en.wikipedia.org/wiki/Pole_of_inaccessibility\n * This is a copy of http://github.com/mapbox/polylabel adapted to use Points\n *\n * @param polygonRings first item in array is the outer ring followed optionally by the list of holes, should be an element of the result of util/classify_rings\n * @param precision Specified in input coordinate units. If 0 returns after first run, if > 0 repeatedly narrows the search space until the radius of the area searched for the best pole is less than precision\n * @param debug Print some statistics to the console during execution\n * @returns Pole of Inaccessibility.\n * @private\n */\nexport default function (polygonRings: Array<Array<Point>>, precision?: number = 1, debug?: boolean = false): Point {\n // find the bounding box of the outer ring\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n const outerRing = polygonRings[0];\n for (let i = 0; i < outerRing.length; i++) {\n const p = outerRing[i];\n if (!i || p.x < minX) minX = p.x;\n if (!i || p.y < minY) minY = p.y;\n if (!i || p.x > maxX) maxX = p.x;\n if (!i || p.y > maxY) maxY = p.y;\n }\n\n const width = maxX - minX;\n const height = maxY - minY;\n const cellSize = Math.min(width, height);\n let h = cellSize / 2;\n\n // a priority queue of cells in order of their \"potential\" (max distance to polygon)\n const cellQueue = new Queue([], compareMax);\n\n if (cellSize === 0) return new Point(minX, minY);\n\n // cover polygon with initial cells\n for (let x = minX; x < maxX; x += cellSize) {\n for (let y = minY; y < maxY; y += cellSize) {\n cellQueue.push(new Cell(x + h, y + h, h, polygonRings));\n }\n }\n\n // take centroid as the first best guess\n let bestCell = getCentroidCell(polygonRings);\n let numProbes = cellQueue.length;\n\n while (cellQueue.length) {\n // pick the most promising cell from the queue\n const cell = cellQueue.pop();\n\n // update the best cell if we found a better one\n if (cell.d > bestCell.d || !bestCell.d) {\n bestCell = cell;\n if (debug) console.log('found best %d after %d probes', Math.round(1e4 * cell.d) / 1e4, numProbes);\n }\n\n // do not drill down further if there's no chance of a better solution\n if (cell.max - bestCell.d <= precision) continue;\n\n // split the cell into four cells\n h = cell.h / 2;\n cellQueue.push(new Cell(cell.p.x - h, cell.p.y - h, h, polygonRings));\n cellQueue.push(new Cell(cell.p.x + h, cell.p.y - h, h, polygonRings));\n cellQueue.push(new Cell(cell.p.x - h, cell.p.y + h, h, polygonRings));\n cellQueue.push(new Cell(cell.p.x + h, cell.p.y + h, h, polygonRings));\n numProbes += 4;\n }\n\n if (debug) {\n console.log(`num probes: ${numProbes}`);\n console.log(`best distance: ${bestCell.d}`);\n }\n\n return bestCell.p;\n}\n\nfunction compareMax(a, b) {\n return b.max - a.max;\n}\n\nfunction Cell(x, y, h, polygon) {\n this.p = new Point(x, y);\n this.h = h; // half the cell size\n this.d = pointToPolygonDist(this.p, polygon); // distance from cell center to polygon\n this.max = this.d + this.h * Math.SQRT2; // max distance to polygon within a cell\n}\n\n// signed distance from point to polygon outline (negative if point is outside)\nfunction pointToPolygonDist(p, polygon) {\n let inside = false;\n let minDistSq = Infinity;\n\n for (let k = 0; k < polygon.length; k++) {\n const ring = polygon[k];\n\n for (let i = 0, len = ring.length, j = len - 1; i < len; j = i++) {\n const a = ring[i];\n const b = ring[j];\n\n if ((a.y > p.y !== b.y > p.y) &&\n (p.x < (b.x - a.x) * (p.y - a.y) / (b.y - a.y) + a.x)) inside = !inside;\n\n minDistSq = Math.min(minDistSq, distToSegmentSquared(p, a, b));\n }\n }\n\n return (inside ? 1 : -1) * Math.sqrt(minDistSq);\n}\n\n// get polygon centroid\nfunction getCentroidCell(polygon) {\n let area = 0;\n let x = 0;\n let y = 0;\n const points = polygon[0];\n for (let i = 0, len = points.length, j = len - 1; i < len; j = i++) {\n const a = points[i];\n const b = points[j];\n const f = a.x * b.y - b.x * a.y;\n x += (a.x + b.x) * f;\n y += (a.y + b.y) * f;\n area += f * 3;\n }\n return new Cell(x / area, y / area, 0, polygon);\n}\n","// @flow\n\nimport Anchor from './anchor.js';\n\nimport {getAnchors, getCenterAnchor} from './get_anchors.js';\nimport clipLine from './clip_line.js';\nimport {shapeText, shapeIcon, WritingMode, fitIconToText} from './shaping.js';\nimport {getGlyphQuads, getIconQuads} from './quads.js';\nimport {warnOnce, degToRad} from '../util/util.js';\nimport {\n allowsVerticalWritingMode,\n allowsLetterSpacing\n} from '../util/script_detection.js';\nimport findPoleOfInaccessibility from '../util/find_pole_of_inaccessibility.js';\nimport classifyRings from '../util/classify_rings.js';\nimport EXTENT from '../data/extent.js';\nimport SymbolBucket from '../data/bucket/symbol_bucket.js';\nimport EvaluationParameters from '../style/evaluation_parameters.js';\nimport {SIZE_PACK_FACTOR} from './symbol_size.js';\nimport ONE_EM from './one_em.js';\nimport type {CanonicalTileID} from '../source/tile_id.js';\nimport type {Shaping, PositionedIcon, TextJustify} from './shaping.js';\nimport type {CollisionBoxArray} from '../data/array_types.js';\nimport type {SymbolFeature} from '../data/bucket/symbol_bucket.js';\nimport type {StyleImage} from '../style/style_image.js';\nimport type {StyleGlyph} from '../style/style_glyph.js';\nimport type SymbolStyleLayer from '../style/style_layer/symbol_style_layer.js';\nimport type {ImagePosition} from '../render/image_atlas.js';\nimport type {GlyphPositions} from '../render/glyph_atlas.js';\nimport type {PossiblyEvaluatedPropertyValue} from '../style/properties.js';\nimport type Projection from '../geo/projection/projection.js';\nimport type {Vec3} from 'gl-matrix';\n\nimport Point from '@mapbox/point-geometry';\nimport murmur3 from 'murmurhash-js';\n\n// The symbol layout process needs `text-size` evaluated at up to five different zoom levels, and\n// `icon-size` at up to three:\n//\n// 1. `text-size` at the zoom level of the bucket. Used to calculate a per-feature size for source `text-size`\n// expressions, and to calculate the box dimensions for icon-text-fit.\n// 2. `icon-size` at the zoom level of the bucket. Used to calculate a per-feature size for source `icon-size`\n// expressions.\n// 3. `text-size` and `icon-size` at the zoom level of the bucket, plus one. Used to calculate collision boxes.\n// 4. `text-size` at zoom level 18. Used for something line-symbol-placement-related.\n// 5. For composite `*-size` expressions: two zoom levels of curve stops that \"cover\" the zoom level of the\n// bucket. These go into a vertex buffer and are used by the shader to interpolate the size at render time.\n//\n// (1) and (2) are stored in `bucket.layers[0].layout`. The remainder are below.\n//\ntype Sizes = {\n layoutTextSize: PossiblyEvaluatedPropertyValue<number>, // (3)\n layoutIconSize: PossiblyEvaluatedPropertyValue<number>, // (3)\n textMaxSize: PossiblyEvaluatedPropertyValue<number>, // (4)\n compositeTextSizes: [PossiblyEvaluatedPropertyValue<number>, PossiblyEvaluatedPropertyValue<number>], // (5)\n compositeIconSizes: [PossiblyEvaluatedPropertyValue<number>, PossiblyEvaluatedPropertyValue<number>], // (5)\n};\n\nexport type TextAnchor = 'center' | 'left' | 'right' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n\n// The radial offset is to the edge of the text box\n// In the horizontal direction, the edge of the text box is where glyphs start\n// But in the vertical direction, the glyphs appear to \"start\" at the baseline\n// We don't actually load baseline data, but we assume an offset of ONE_EM - 17\n// (see \"yOffset\" in shaping.js)\nconst baselineOffset = 7;\nconst INVALID_TEXT_OFFSET = Number.POSITIVE_INFINITY;\nconst sqrt2 = Math.sqrt(2);\n\nexport function evaluateVariableOffset(anchor: TextAnchor, offset: [number, number]): [number, number] {\n\n function fromRadialOffset(anchor: TextAnchor, radialOffset: number) {\n let x = 0, y = 0;\n if (radialOffset < 0) radialOffset = 0; // Ignore negative offset.\n // solve for r where r^2 + r^2 = radialOffset^2\n const hypotenuse = radialOffset / sqrt2;\n switch (anchor) {\n case 'top-right':\n case 'top-left':\n y = hypotenuse - baselineOffset;\n break;\n case 'bottom-right':\n case 'bottom-left':\n y = -hypotenuse + baselineOffset;\n break;\n case 'bottom':\n y = -radialOffset + baselineOffset;\n break;\n case 'top':\n y = radialOffset - baselineOffset;\n break;\n }\n\n switch (anchor) {\n case 'top-right':\n case 'bottom-right':\n x = -hypotenuse;\n break;\n case 'top-left':\n case 'bottom-left':\n x = hypotenuse;\n break;\n case 'left':\n x = radialOffset;\n break;\n case 'right':\n x = -radialOffset;\n break;\n }\n\n return [x, y];\n }\n\n function fromTextOffset(anchor: TextAnchor, offsetX: number, offsetY: number) {\n let x = 0, y = 0;\n // Use absolute offset values.\n offsetX = Math.abs(offsetX);\n offsetY = Math.abs(offsetY);\n\n switch (anchor) {\n case 'top-right':\n case 'top-left':\n case 'top':\n y = offsetY - baselineOffset;\n break;\n case 'bottom-right':\n case 'bottom-left':\n case 'bottom':\n y = -offsetY + baselineOffset;\n break;\n }\n\n switch (anchor) {\n case 'top-right':\n case 'bottom-right':\n case 'right':\n x = -offsetX;\n break;\n case 'top-left':\n case 'bottom-left':\n case 'left':\n x = offsetX;\n break;\n }\n\n return [x, y];\n }\n\n return (offset[1] !== INVALID_TEXT_OFFSET) ? fromTextOffset(anchor, offset[0], offset[1]) : fromRadialOffset(anchor, offset[0]);\n}\n\nexport function performSymbolLayout(bucket: SymbolBucket,\n glyphMap: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}},\n glyphPositions: GlyphPositions,\n imageMap: {[_: string]: StyleImage},\n imagePositions: {[_: string]: ImagePosition},\n showCollisionBoxes: boolean,\n availableImages: Array<string>,\n canonical: CanonicalTileID,\n tileZoom: number,\n projection: Projection) {\n bucket.createArrays();\n\n const tileSize = 512 * bucket.overscaling;\n bucket.tilePixelRatio = EXTENT / tileSize;\n bucket.compareText = {};\n bucket.iconsNeedLinear = false;\n\n const layout = bucket.layers[0].layout;\n const unevaluatedLayoutValues = bucket.layers[0]._unevaluatedLayout._values;\n\n const sizes = {};\n\n if (bucket.textSizeData.kind === 'composite') {\n const {minZoom, maxZoom} = bucket.textSizeData;\n sizes.compositeTextSizes = [\n unevaluatedLayoutValues['text-size'].possiblyEvaluate(new EvaluationParameters(minZoom), canonical),\n unevaluatedLayoutValues['text-size'].possiblyEvaluate(new EvaluationParameters(maxZoom), canonical)\n ];\n }\n\n if (bucket.iconSizeData.kind === 'composite') {\n const {minZoom, maxZoom} = bucket.iconSizeData;\n sizes.compositeIconSizes = [\n unevaluatedLayoutValues['icon-size'].possiblyEvaluate(new EvaluationParameters(minZoom), canonical),\n unevaluatedLayoutValues['icon-size'].possiblyEvaluate(new EvaluationParameters(maxZoom), canonical)\n ];\n }\n\n sizes.layoutTextSize = unevaluatedLayoutValues['text-size'].possiblyEvaluate(new EvaluationParameters(tileZoom + 1), canonical);\n sizes.layoutIconSize = unevaluatedLayoutValues['icon-size'].possiblyEvaluate(new EvaluationParameters(tileZoom + 1), canonical);\n sizes.textMaxSize = unevaluatedLayoutValues['text-size'].possiblyEvaluate(new EvaluationParameters(18), canonical);\n\n const textAlongLine = layout.get('text-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point';\n const textSize = layout.get('text-size');\n\n for (const feature of bucket.features) {\n const fontstack = layout.get('text-font').evaluate(feature, {}, canonical).join(',');\n const layoutTextSizeThisZoom = textSize.evaluate(feature, {}, canonical);\n const layoutTextSize = sizes.layoutTextSize.evaluate(feature, {}, canonical);\n const layoutIconSize = sizes.layoutIconSize.evaluate(feature, {}, canonical);\n\n const shapedTextOrientations = {\n horizontal: {},\n vertical: undefined\n };\n const text = feature.text;\n let textOffset: [number, number] = [0, 0];\n if (text) {\n const unformattedText = text.toString();\n const spacing = layout.get('text-letter-spacing').evaluate(feature, {}, canonical) * ONE_EM;\n const lineHeight = layout.get('text-line-height').evaluate(feature, {}, canonical) * ONE_EM;\n const spacingIfAllowed = allowsLetterSpacing(unformattedText) ? spacing : 0;\n\n const textAnchor = layout.get('text-anchor').evaluate(feature, {}, canonical);\n const variableTextAnchor = layout.get('text-variable-anchor');\n\n if (!variableTextAnchor) {\n const radialOffset = layout.get('text-radial-offset').evaluate(feature, {}, canonical);\n // Layers with variable anchors use the `text-radial-offset` property and the [x, y] offset vector\n // is calculated at placement time instead of layout time\n if (radialOffset) {\n // The style spec says don't use `text-offset` and `text-radial-offset` together\n // but doesn't actually specify what happens if you use both. We go with the radial offset.\n textOffset = evaluateVariableOffset(textAnchor, [radialOffset * ONE_EM, INVALID_TEXT_OFFSET]);\n } else {\n textOffset = (layout.get('text-offset').evaluate(feature, {}, canonical).map(t => t * ONE_EM): any);\n }\n }\n\n let textJustify = textAlongLine ?\n \"center\" :\n layout.get('text-justify').evaluate(feature, {}, canonical);\n\n const symbolPlacement = layout.get('symbol-placement');\n const isPointPlacement = symbolPlacement === 'point';\n const maxWidth = symbolPlacement === 'point' ?\n layout.get('text-max-width').evaluate(feature, {}, canonical) * ONE_EM :\n 0;\n\n const addVerticalShapingIfNeeded = (textJustify) => {\n if (bucket.allowVerticalPlacement && allowsVerticalWritingMode(unformattedText)) {\n // Vertical POI label placement is meant to be used for scripts that support vertical\n // writing mode, thus, default left justification is used. If Latin\n // scripts would need to be supported, this should take into account other justifications.\n shapedTextOrientations.vertical = shapeText(text, glyphMap, glyphPositions, imagePositions, fontstack, maxWidth, lineHeight, textAnchor,\n textJustify, spacingIfAllowed, textOffset, WritingMode.vertical, true, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);\n }\n };\n\n // If this layer uses text-variable-anchor, generate shapings for all justification possibilities.\n if (!textAlongLine && variableTextAnchor) {\n const justifications = textJustify === \"auto\" ?\n variableTextAnchor.map(a => getAnchorJustification(a)) :\n [textJustify];\n\n let singleLine = false;\n for (let i = 0; i < justifications.length; i++) {\n const justification: TextJustify = justifications[i];\n if (shapedTextOrientations.horizontal[justification]) continue;\n if (singleLine) {\n // If the shaping for the first justification was only a single line, we\n // can re-use it for the other justifications\n shapedTextOrientations.horizontal[justification] = shapedTextOrientations.horizontal[0];\n } else {\n // If using text-variable-anchor for the layer, we use a center anchor for all shapings and apply\n // the offsets for the anchor in the placement step.\n const shaping = shapeText(text, glyphMap, glyphPositions, imagePositions, fontstack, maxWidth, lineHeight, 'center',\n justification, spacingIfAllowed, textOffset, WritingMode.horizontal, false, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);\n if (shaping) {\n shapedTextOrientations.horizontal[justification] = shaping;\n singleLine = shaping.positionedLines.length === 1;\n }\n }\n }\n\n addVerticalShapingIfNeeded('left');\n } else {\n if (textJustify === \"auto\") {\n textJustify = getAnchorJustification(textAnchor);\n }\n // Add horizontal shaping for all point labels and line labels that need horizontal writing mode.\n if (isPointPlacement || ((layout.get(\"text-writing-mode\").indexOf('horizontal') >= 0) || !allowsVerticalWritingMode(unformattedText))) {\n const shaping = shapeText(text, glyphMap, glyphPositions, imagePositions, fontstack, maxWidth, lineHeight, textAnchor, textJustify, spacingIfAllowed,\n textOffset, WritingMode.horizontal, false, symbolPlacement, layoutTextSize, layoutTextSizeThisZoom);\n if (shaping) shapedTextOrientations.horizontal[textJustify] = shaping;\n }\n\n // Vertical point label (if allowVerticalPlacement is enabled).\n addVerticalShapingIfNeeded(symbolPlacement === 'point' ? 'left' : textJustify);\n }\n }\n\n let shapedIcon;\n let isSDFIcon = false;\n if (feature.icon && feature.icon.name) {\n const image = imageMap[feature.icon.name];\n if (image) {\n shapedIcon = shapeIcon(\n imagePositions[feature.icon.name],\n layout.get('icon-offset').evaluate(feature, {}, canonical),\n layout.get('icon-anchor').evaluate(feature, {}, canonical));\n isSDFIcon = image.sdf;\n if (bucket.sdfIcons === undefined) {\n bucket.sdfIcons = image.sdf;\n } else if (bucket.sdfIcons !== image.sdf) {\n warnOnce('Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer');\n }\n if (image.pixelRatio !== bucket.pixelRatio) {\n bucket.iconsNeedLinear = true;\n } else if (layout.get('icon-rotate').constantOr(1) !== 0) {\n bucket.iconsNeedLinear = true;\n }\n }\n }\n\n const shapedText = getDefaultHorizontalShaping(shapedTextOrientations.horizontal) || shapedTextOrientations.vertical;\n if (!bucket.iconsInText) {\n bucket.iconsInText = shapedText ? shapedText.iconsInText : false;\n }\n if (shapedText || shapedIcon) {\n addFeature(bucket, feature, shapedTextOrientations, shapedIcon, imageMap, sizes, layoutTextSize, layoutIconSize, textOffset, isSDFIcon, availableImages, canonical, projection);\n }\n }\n\n if (showCollisionBoxes) {\n bucket.generateCollisionDebugBuffers(tileZoom, bucket.collisionBoxArray);\n }\n}\n\n// Choose the justification that matches the direction of the TextAnchor\nexport function getAnchorJustification(anchor: TextAnchor): TextJustify {\n switch (anchor) {\n case 'right':\n case 'top-right':\n case 'bottom-right':\n return 'right';\n case 'left':\n case 'top-left':\n case 'bottom-left':\n return 'left';\n }\n return 'center';\n}\n\n/**\n * for \"very\" overscaled tiles (overscaleFactor > 2) on high zoom levels (z > 18)\n * we use the tile pixel ratio from the previous zoom level and clamp it to 1\n * in order to thin out labels density and save memory and CPU .\n * @private\n */\nfunction tilePixelRatioForSymbolSpacing(overscaleFactor, overscaledZ) {\n if (overscaledZ > 18 && overscaleFactor > 2) {\n overscaleFactor >>= 1;\n }\n const tilePixelRatio = EXTENT / (512 * overscaleFactor);\n return Math.max(tilePixelRatio, 1);\n}\n\n/**\n * Given a feature and its shaped text and icon data, add a 'symbol\n * instance' for each _possible_ placement of the symbol feature.\n * (At render timePlaceSymbols#place() selects which of these instances to\n * show or hide based on collisions with symbols in other layers.)\n * @private\n */\nfunction addFeature(bucket: SymbolBucket,\n feature: SymbolFeature,\n shapedTextOrientations: any,\n shapedIcon: PositionedIcon | void,\n imageMap: {[_: string]: StyleImage},\n sizes: Sizes,\n layoutTextSize: number,\n layoutIconSize: number,\n textOffset: [number, number],\n isSDFIcon: boolean,\n availableImages: Array<string>,\n canonical: CanonicalTileID,\n projection: Projection) {\n // To reduce the number of labels that jump around when zooming we need\n // to use a text-size value that is the same for all zoom levels.\n // bucket calculates text-size at a high zoom level so that all tiles can\n // use the same value when calculating anchor positions.\n let textMaxSize = sizes.textMaxSize.evaluate(feature, {}, canonical);\n if (textMaxSize === undefined) {\n textMaxSize = layoutTextSize;\n }\n const layout = bucket.layers[0].layout;\n const iconOffset = layout.get('icon-offset').evaluate(feature, {}, canonical);\n const defaultShaping = getDefaultHorizontalShaping(shapedTextOrientations.horizontal) || shapedTextOrientations.vertical;\n const isGlobe = projection.name === 'globe';\n\n const glyphSize = ONE_EM,\n fontScale = layoutTextSize / glyphSize,\n textMaxBoxScale = bucket.tilePixelRatio * textMaxSize / glyphSize,\n iconBoxScale = bucket.tilePixelRatio * layoutIconSize,\n symbolMinDistance = tilePixelRatioForSymbolSpacing(bucket.overscaling, bucket.zoom) * layout.get('symbol-spacing'),\n textPadding = layout.get('text-padding') * bucket.tilePixelRatio,\n iconPadding = layout.get('icon-padding') * bucket.tilePixelRatio,\n textMaxAngle = degToRad(layout.get('text-max-angle')),\n textAlongLine = layout.get('text-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point',\n iconAlongLine = layout.get('icon-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point',\n symbolPlacement = layout.get('symbol-placement'),\n textRepeatDistance = symbolMinDistance / 2;\n\n const iconTextFit = layout.get('icon-text-fit');\n let verticallyShapedIcon;\n\n // Adjust shaped icon size when icon-text-fit is used.\n if (shapedIcon && iconTextFit !== 'none') {\n if (bucket.allowVerticalPlacement && shapedTextOrientations.vertical) {\n verticallyShapedIcon = fitIconToText(shapedIcon, shapedTextOrientations.vertical, iconTextFit,\n layout.get('icon-text-fit-padding'), iconOffset, fontScale);\n }\n if (defaultShaping) {\n shapedIcon = fitIconToText(shapedIcon, defaultShaping, iconTextFit,\n layout.get('icon-text-fit-padding'), iconOffset, fontScale);\n }\n }\n\n const addSymbolAtAnchor = (line, anchor, canonicalId) => {\n if (anchor.x < 0 || anchor.x >= EXTENT || anchor.y < 0 || anchor.y >= EXTENT) {\n // Symbol layers are drawn across tile boundaries, We filter out symbols\n // outside our tile boundaries (which may be included in vector tile buffers)\n // to prevent double-drawing symbols.\n return;\n }\n\n let globe: ?{anchor: Anchor, up: Vec3} = null;\n if (isGlobe) {\n const {x, y, z} = projection.projectTilePoint(anchor.x, anchor.y, canonicalId);\n globe = {\n anchor: new Anchor(x, y, z, 0, undefined),\n up: projection.upVector(canonicalId, anchor.x, anchor.y)\n };\n }\n\n addSymbol(bucket, anchor, globe, line, shapedTextOrientations, shapedIcon, imageMap, verticallyShapedIcon, bucket.layers[0],\n bucket.collisionBoxArray, feature.index, feature.sourceLayerIndex,\n bucket.index, textPadding, textAlongLine, textOffset,\n iconBoxScale, iconPadding, iconAlongLine, iconOffset,\n feature, sizes, isSDFIcon, availableImages, canonical);\n };\n\n if (symbolPlacement === 'line') {\n for (const line of clipLine(feature.geometry, 0, 0, EXTENT, EXTENT)) {\n const anchors = getAnchors(\n line,\n symbolMinDistance,\n textMaxAngle,\n shapedTextOrientations.vertical || defaultShaping,\n shapedIcon,\n glyphSize,\n textMaxBoxScale,\n bucket.overscaling,\n EXTENT\n );\n for (const anchor of anchors) {\n const shapedText = defaultShaping;\n if (!shapedText || !anchorIsTooClose(bucket, shapedText.text, textRepeatDistance, anchor)) {\n addSymbolAtAnchor(line, anchor, canonical);\n }\n }\n }\n } else if (symbolPlacement === 'line-center') {\n // No clipping, multiple lines per feature are allowed\n // \"lines\" with only one point are ignored as in clipLines\n for (const line of feature.geometry) {\n if (line.length > 1) {\n const anchor = getCenterAnchor(\n line,\n textMaxAngle,\n shapedTextOrientations.vertical || defaultShaping,\n shapedIcon,\n glyphSize,\n textMaxBoxScale);\n if (anchor) {\n addSymbolAtAnchor(line, anchor, canonical);\n }\n }\n }\n } else if (feature.type === 'Polygon') {\n for (const polygon of classifyRings(feature.geometry, 0)) {\n // 16 here represents 2 pixels\n const poi = findPoleOfInaccessibility(polygon, 16);\n addSymbolAtAnchor(polygon[0], new Anchor(poi.x, poi.y, 0, 0, undefined), canonical);\n }\n } else if (feature.type === 'LineString') {\n // https://github.com/mapbox/mapbox-gl-js/issues/3808\n for (const line of feature.geometry) {\n addSymbolAtAnchor(line, new Anchor(line[0].x, line[0].y, 0, 0, undefined), canonical);\n }\n } else if (feature.type === 'Point') {\n for (const points of feature.geometry) {\n for (const point of points) {\n addSymbolAtAnchor([point], new Anchor(point.x, point.y, 0, 0, undefined), canonical);\n }\n }\n }\n}\n\nconst MAX_GLYPH_ICON_SIZE = 255;\nconst MAX_PACKED_SIZE = MAX_GLYPH_ICON_SIZE * SIZE_PACK_FACTOR;\nexport {MAX_PACKED_SIZE};\n\nfunction addTextVertices(bucket: SymbolBucket,\n globe: ?{ anchor: Anchor, up: Vec3 },\n tileAnchor: Anchor,\n shapedText: Shaping,\n imageMap: {[_: string]: StyleImage},\n layer: SymbolStyleLayer,\n textAlongLine: boolean,\n feature: SymbolFeature,\n textOffset: [number, number],\n lineArray: {lineStartIndex: number, lineLength: number},\n writingMode: number,\n placementTypes: Array<'vertical' | 'center' | 'left' | 'right'>,\n placedTextSymbolIndices: {[_: string]: number},\n placedIconIndex: number,\n sizes: Sizes,\n availableImages: Array<string>,\n canonical: CanonicalTileID) {\n const glyphQuads = getGlyphQuads(tileAnchor, shapedText, textOffset,\n layer, textAlongLine, feature, imageMap, bucket.allowVerticalPlacement);\n\n const sizeData = bucket.textSizeData;\n let textSizeData = null;\n\n if (sizeData.kind === 'source') {\n textSizeData = [\n SIZE_PACK_FACTOR * layer.layout.get('text-size').evaluate(feature, {}, canonical)\n ];\n if (textSizeData[0] > MAX_PACKED_SIZE) {\n warnOnce(`${bucket.layerIds[0]}: Value for \"text-size\" is >= ${MAX_GLYPH_ICON_SIZE}. Reduce your \"text-size\".`);\n }\n } else if (sizeData.kind === 'composite') {\n textSizeData = [\n SIZE_PACK_FACTOR * sizes.compositeTextSizes[0].evaluate(feature, {}, canonical),\n SIZE_PACK_FACTOR * sizes.compositeTextSizes[1].evaluate(feature, {}, canonical)\n ];\n if (textSizeData[0] > MAX_PACKED_SIZE || textSizeData[1] > MAX_PACKED_SIZE) {\n warnOnce(`${bucket.layerIds[0]}: Value for \"text-size\" is >= ${MAX_GLYPH_ICON_SIZE}. Reduce your \"text-size\".`);\n }\n }\n\n bucket.addSymbols(\n bucket.text,\n glyphQuads,\n textSizeData,\n textOffset,\n textAlongLine,\n feature,\n writingMode,\n globe,\n tileAnchor,\n lineArray.lineStartIndex,\n lineArray.lineLength,\n placedIconIndex,\n availableImages,\n canonical);\n\n // The placedSymbolArray is used at render time in drawTileSymbols\n // These indices allow access to the array at collision detection time\n for (const placementType of placementTypes) {\n placedTextSymbolIndices[placementType] = bucket.text.placedSymbolArray.length - 1;\n }\n\n return glyphQuads.length * 4;\n}\n\nfunction getDefaultHorizontalShaping(horizontalShaping: {[_: TextJustify]: Shaping}): Shaping | null {\n // We don't care which shaping we get because this is used for collision purposes\n // and all the justifications have the same collision box\n for (const justification: any in horizontalShaping) {\n return horizontalShaping[justification];\n }\n return null;\n}\n\nexport function evaluateBoxCollisionFeature(collisionBoxArray: CollisionBoxArray,\n projectedAnchor: Anchor,\n tileAnchor: Anchor,\n featureIndex: number,\n sourceLayerIndex: number,\n bucketIndex: number,\n shaped: Object,\n padding: number,\n rotate: number,\n textOffset: ?[number, number]): number {\n let y1 = shaped.top;\n let y2 = shaped.bottom;\n let x1 = shaped.left;\n let x2 = shaped.right;\n\n const collisionPadding = shaped.collisionPadding;\n if (collisionPadding) {\n x1 -= collisionPadding[0];\n y1 -= collisionPadding[1];\n x2 += collisionPadding[2];\n y2 += collisionPadding[3];\n }\n\n if (rotate) {\n // Account for *-rotate in point collision boxes\n // See https://github.com/mapbox/mapbox-gl-js/issues/6075\n // Doesn't account for icon-text-fit\n\n const tl = new Point(x1, y1);\n const tr = new Point(x2, y1);\n const bl = new Point(x1, y2);\n const br = new Point(x2, y2);\n\n const rotateRadians = degToRad(rotate);\n let rotateCenter = new Point(0, 0);\n\n if (textOffset) {\n rotateCenter = new Point(textOffset[0], textOffset[1]);\n }\n\n tl._rotateAround(rotateRadians, rotateCenter);\n tr._rotateAround(rotateRadians, rotateCenter);\n bl._rotateAround(rotateRadians, rotateCenter);\n br._rotateAround(rotateRadians, rotateCenter);\n\n // Collision features require an \"on-axis\" geometry,\n // so take the envelope of the rotated geometry\n // (may be quite large for wide labels rotated 45 degrees)\n x1 = Math.min(tl.x, tr.x, bl.x, br.x);\n x2 = Math.max(tl.x, tr.x, bl.x, br.x);\n y1 = Math.min(tl.y, tr.y, bl.y, br.y);\n y2 = Math.max(tl.y, tr.y, bl.y, br.y);\n }\n\n collisionBoxArray.emplaceBack(projectedAnchor.x, projectedAnchor.y, projectedAnchor.z, tileAnchor.x, tileAnchor.y, x1, y1, x2, y2, padding, featureIndex, sourceLayerIndex, bucketIndex);\n\n return collisionBoxArray.length - 1;\n}\n\nexport function evaluateCircleCollisionFeature(shaped: Object): number | null {\n if (shaped.collisionPadding) {\n // Compute height of the shape in glyph metrics and apply padding.\n // Note that the pixel based 'text-padding' is applied at runtime\n shaped.top -= shaped.collisionPadding[1];\n shaped.bottom += shaped.collisionPadding[3];\n }\n\n // Set minimum box height to avoid very many small labels\n const height = shaped.bottom - shaped.top;\n return height > 0 ? Math.max(10, height) : null;\n}\n\n/**\n * Add a single label & icon placement.\n *\n * @private\n */\nfunction addSymbol(bucket: SymbolBucket,\n anchor: Anchor,\n globe: ?{ anchor: Anchor, up: Vec3 },\n line: Array<Point>,\n shapedTextOrientations: any,\n shapedIcon: PositionedIcon | void,\n imageMap: {[_: string]: StyleImage},\n verticallyShapedIcon: PositionedIcon | void,\n layer: SymbolStyleLayer,\n collisionBoxArray: CollisionBoxArray,\n featureIndex: number,\n sourceLayerIndex: number,\n bucketIndex: number,\n textPadding: number,\n textAlongLine: boolean,\n textOffset: [number, number],\n iconBoxScale: number,\n iconPadding: number,\n iconAlongLine: boolean,\n iconOffset: [number, number],\n feature: SymbolFeature,\n sizes: Sizes,\n isSDFIcon: boolean,\n availableImages: Array<string>,\n canonical: CanonicalTileID) {\n const lineArray = bucket.addToLineVertexArray(anchor, line);\n let textBoxIndex, iconBoxIndex, verticalTextBoxIndex, verticalIconBoxIndex;\n let textCircle, verticalTextCircle, verticalIconCircle;\n\n let numIconVertices = 0;\n let numVerticalIconVertices = 0;\n let numHorizontalGlyphVertices = 0;\n let numVerticalGlyphVertices = 0;\n let placedIconSymbolIndex = -1;\n let verticalPlacedIconSymbolIndex = -1;\n const placedTextSymbolIndices = {};\n let key = murmur3('');\n const collisionFeatureAnchor: Anchor = globe ? globe.anchor : anchor;\n\n let textOffset0 = 0;\n let textOffset1 = 0;\n if (layer._unevaluatedLayout.getValue('text-radial-offset') === undefined) {\n [textOffset0, textOffset1] = (layer.layout.get('text-offset').evaluate(feature, {}, canonical).map(t => t * ONE_EM): any);\n } else {\n textOffset0 = layer.layout.get('text-radial-offset').evaluate(feature, {}, canonical) * ONE_EM;\n textOffset1 = INVALID_TEXT_OFFSET;\n }\n\n if (bucket.allowVerticalPlacement && shapedTextOrientations.vertical) {\n const verticalShaping = shapedTextOrientations.vertical;\n if (textAlongLine) {\n verticalTextCircle = evaluateCircleCollisionFeature(verticalShaping);\n if (verticallyShapedIcon) {\n verticalIconCircle = evaluateCircleCollisionFeature(verticallyShapedIcon);\n }\n } else {\n const textRotation = layer.layout.get('text-rotate').evaluate(feature, {}, canonical);\n const verticalTextRotation = textRotation + 90.0;\n verticalTextBoxIndex = evaluateBoxCollisionFeature(collisionBoxArray, collisionFeatureAnchor, anchor, featureIndex, sourceLayerIndex, bucketIndex, verticalShaping, textPadding, verticalTextRotation, textOffset);\n if (verticallyShapedIcon) {\n verticalIconBoxIndex = evaluateBoxCollisionFeature(collisionBoxArray, collisionFeatureAnchor, anchor, featureIndex, sourceLayerIndex, bucketIndex, verticallyShapedIcon, iconPadding, verticalTextRotation);\n }\n }\n }\n\n //Place icon first, so text can have a reference to its index in the placed symbol array.\n //Text symbols can lazily shift at render-time because of variable anchor placement.\n //If the style specifies an `icon-text-fit` then the icon would have to shift along with it.\n // For more info check `updateVariableAnchors` in `draw_symbol.js` .\n if (shapedIcon) {\n const iconRotate = layer.layout.get('icon-rotate').evaluate(feature, {}, canonical);\n const hasIconTextFit = layer.layout.get('icon-text-fit') !== 'none';\n const iconQuads = getIconQuads(shapedIcon, iconRotate, isSDFIcon, hasIconTextFit);\n const verticalIconQuads = verticallyShapedIcon ? getIconQuads(verticallyShapedIcon, iconRotate, isSDFIcon, hasIconTextFit) : undefined;\n iconBoxIndex = evaluateBoxCollisionFeature(collisionBoxArray, collisionFeatureAnchor, anchor, featureIndex, sourceLayerIndex, bucketIndex, shapedIcon, iconPadding, iconRotate);\n numIconVertices = iconQuads.length * 4;\n\n const sizeData = bucket.iconSizeData;\n let iconSizeData = null;\n\n if (sizeData.kind === 'source') {\n iconSizeData = [\n SIZE_PACK_FACTOR * layer.layout.get('icon-size').evaluate(feature, {}, canonical)\n ];\n if (iconSizeData[0] > MAX_PACKED_SIZE) {\n warnOnce(`${bucket.layerIds[0]}: Value for \"icon-size\" is >= ${MAX_GLYPH_ICON_SIZE}. Reduce your \"icon-size\".`);\n }\n } else if (sizeData.kind === 'composite') {\n iconSizeData = [\n SIZE_PACK_FACTOR * sizes.compositeIconSizes[0].evaluate(feature, {}, canonical),\n SIZE_PACK_FACTOR * sizes.compositeIconSizes[1].evaluate(feature, {}, canonical)\n ];\n if (iconSizeData[0] > MAX_PACKED_SIZE || iconSizeData[1] > MAX_PACKED_SIZE) {\n warnOnce(`${bucket.layerIds[0]}: Value for \"icon-size\" is >= ${MAX_GLYPH_ICON_SIZE}. Reduce your \"icon-size\".`);\n }\n }\n\n bucket.addSymbols(\n bucket.icon,\n iconQuads,\n iconSizeData,\n iconOffset,\n iconAlongLine,\n feature,\n false,\n globe,\n anchor,\n lineArray.lineStartIndex,\n lineArray.lineLength,\n // The icon itself does not have an associated symbol since the text isnt placed yet\n -1,\n availableImages,\n canonical);\n\n placedIconSymbolIndex = bucket.icon.placedSymbolArray.length - 1;\n\n if (verticalIconQuads) {\n numVerticalIconVertices = verticalIconQuads.length * 4;\n\n bucket.addSymbols(\n bucket.icon,\n verticalIconQuads,\n iconSizeData,\n iconOffset,\n iconAlongLine,\n feature,\n WritingMode.vertical,\n globe,\n anchor,\n lineArray.lineStartIndex,\n lineArray.lineLength,\n // The icon itself does not have an associated symbol since the text isnt placed yet\n -1,\n availableImages,\n canonical);\n\n verticalPlacedIconSymbolIndex = bucket.icon.placedSymbolArray.length - 1;\n }\n }\n\n for (const justification: any in shapedTextOrientations.horizontal) {\n const shaping = shapedTextOrientations.horizontal[justification];\n\n if (!textBoxIndex) {\n key = murmur3(shaping.text);\n // As a collision approximation, we can use either the vertical or any of the horizontal versions of the feature\n // We're counting on all versions having similar dimensions\n if (textAlongLine) {\n textCircle = evaluateCircleCollisionFeature(shaping);\n } else {\n const textRotate = layer.layout.get('text-rotate').evaluate(feature, {}, canonical);\n textBoxIndex = evaluateBoxCollisionFeature(collisionBoxArray, collisionFeatureAnchor, anchor, featureIndex, sourceLayerIndex, bucketIndex, shaping, textPadding, textRotate, textOffset);\n }\n }\n\n const singleLine = shaping.positionedLines.length === 1;\n numHorizontalGlyphVertices += addTextVertices(\n bucket, globe, anchor, shaping, imageMap, layer, textAlongLine, feature, textOffset, lineArray,\n shapedTextOrientations.vertical ? WritingMode.horizontal : WritingMode.horizontalOnly,\n singleLine ? (Object.keys(shapedTextOrientations.horizontal): any) : [justification],\n placedTextSymbolIndices, placedIconSymbolIndex, sizes, availableImages, canonical);\n\n if (singleLine) {\n break;\n }\n }\n\n if (shapedTextOrientations.vertical) {\n numVerticalGlyphVertices += addTextVertices(\n bucket, globe, anchor, shapedTextOrientations.vertical, imageMap, layer, textAlongLine, feature,\n textOffset, lineArray, WritingMode.vertical, ['vertical'], placedTextSymbolIndices, verticalPlacedIconSymbolIndex, sizes, availableImages, canonical);\n }\n\n // Check if runtime collision circles should be used for any of the collision features.\n // It is enough to choose the tallest feature shape as circles are always placed on a line.\n // All measurements are in glyph metrics and later converted into pixels using proper font size \"layoutTextSize\"\n let collisionCircleDiameter = -1;\n\n const getCollisionCircleHeight = (diameter: ?number, prevHeight: number): number => {\n return diameter ? Math.max(diameter, prevHeight) : prevHeight;\n };\n\n collisionCircleDiameter = getCollisionCircleHeight(textCircle, collisionCircleDiameter);\n collisionCircleDiameter = getCollisionCircleHeight(verticalTextCircle, collisionCircleDiameter);\n collisionCircleDiameter = getCollisionCircleHeight(verticalIconCircle, collisionCircleDiameter);\n const useRuntimeCollisionCircles = (collisionCircleDiameter > -1) ? 1 : 0;\n\n if (bucket.glyphOffsetArray.length >= SymbolBucket.MAX_GLYPHS) warnOnce(\n \"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"\n );\n\n if (feature.sortKey !== undefined) {\n bucket.addToSortKeyRanges(bucket.symbolInstances.length, feature.sortKey);\n }\n\n const projectedAnchor = collisionFeatureAnchor;\n\n bucket.symbolInstances.emplaceBack(\n projectedAnchor.x,\n projectedAnchor.y,\n projectedAnchor.z,\n anchor.x,\n anchor.y,\n placedTextSymbolIndices.right >= 0 ? placedTextSymbolIndices.right : -1,\n placedTextSymbolIndices.center >= 0 ? placedTextSymbolIndices.center : -1,\n placedTextSymbolIndices.left >= 0 ? placedTextSymbolIndices.left : -1,\n placedTextSymbolIndices.vertical >= 0 ? placedTextSymbolIndices.vertical : -1,\n placedIconSymbolIndex,\n verticalPlacedIconSymbolIndex,\n key,\n textBoxIndex !== undefined ? textBoxIndex : bucket.collisionBoxArray.length,\n textBoxIndex !== undefined ? textBoxIndex + 1 : bucket.collisionBoxArray.length,\n verticalTextBoxIndex !== undefined ? verticalTextBoxIndex : bucket.collisionBoxArray.length,\n verticalTextBoxIndex !== undefined ? verticalTextBoxIndex + 1 : bucket.collisionBoxArray.length,\n iconBoxIndex !== undefined ? iconBoxIndex : bucket.collisionBoxArray.length,\n iconBoxIndex !== undefined ? iconBoxIndex + 1 : bucket.collisionBoxArray.length,\n verticalIconBoxIndex ? verticalIconBoxIndex : bucket.collisionBoxArray.length,\n verticalIconBoxIndex ? verticalIconBoxIndex + 1 : bucket.collisionBoxArray.length,\n featureIndex,\n numHorizontalGlyphVertices,\n numVerticalGlyphVertices,\n numIconVertices,\n numVerticalIconVertices,\n useRuntimeCollisionCircles,\n 0,\n textOffset0,\n textOffset1,\n collisionCircleDiameter);\n}\n\nfunction anchorIsTooClose(bucket: any, text: string, repeatDistance: number, anchor: Point) {\n const compareText = bucket.compareText;\n if (!(text in compareText)) {\n compareText[text] = [];\n } else {\n const otherAnchors = compareText[text];\n for (let k = otherAnchors.length - 1; k >= 0; k--) {\n if (anchor.dist(otherAnchors[k]) < repeatDistance) {\n // If it's within repeatDistance of one anchor, stop looking\n return true;\n }\n }\n }\n // If anchor is not within repeatDistance of any other anchor, add to array\n compareText[text].push(anchor);\n return false;\n}\n","// @flow\nimport {createLayout} from '../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../util/struct_array.js';\n\nconst layout: StructArrayLayout = createLayout([\n {type: 'Float32', name: 'a_globe_pos', components: 3},\n {type: 'Float32', name: 'a_merc_pos', components: 2},\n {type: 'Float32', name: 'a_uv', components: 2}\n]);\n\nexport default layout;\nexport const {members, size, alignment} = layout;\n","// @flow\nimport {createLayout} from '../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../util/struct_array.js';\n\nexport const posAttributesGlobeExt: StructArrayLayout = createLayout([\n {name: 'a_pos_3', components: 3, type: 'Int16'},\n]);\n\nexport default (createLayout([\n {name: 'a_pos', type: 'Int16', components: 2}\n]): StructArrayLayout);\n","// @flow\nimport MercatorCoordinate, {\n lngFromMercatorX,\n latFromMercatorY,\n mercatorZfromAltitude,\n mercatorXfromLng,\n mercatorYfromLat,\n MAX_MERCATOR_LATITUDE\n} from '../mercator_coordinate.js';\nimport EXTENT from '../../data/extent.js';\nimport {number as interpolate} from '../../style-spec/util/interpolate.js';\nimport {degToRad, radToDeg, clamp, smoothstep, getColumn, shortestAngle} from '../../util/util.js';\nimport {vec3, vec4, mat4} from 'gl-matrix';\nimport SegmentVector from '../../data/segment.js';\nimport {members as globeLayoutAttributes} from '../../terrain/globe_attributes.js';\nimport posAttributes from '../../data/pos_attributes.js';\nimport {TriangleIndexArray, GlobeVertexArray, LineIndexArray, PosArray} from '../../data/array_types.js';\nimport {Aabb, Ray} from '../../util/primitives.js';\nimport LngLatBounds from '../lng_lat_bounds.js';\nimport type Painter from '../../render/painter.js';\n\nimport type LngLat from '../lng_lat.js';\nimport type {CanonicalTileID, UnwrappedTileID} from '../../source/tile_id.js';\nimport type Context from '../../gl/context.js';\nimport type {Vec3, Mat4} from 'gl-matrix';\nimport type IndexBuffer from '../../gl/index_buffer.js';\nimport type VertexBuffer from '../../gl/vertex_buffer.js';\nimport type Transform from '../transform.js';\nimport Point from '@mapbox/point-geometry';\n\nexport const GLOBE_ZOOM_THRESHOLD_MIN = 5;\nexport const GLOBE_ZOOM_THRESHOLD_MAX = 6;\n\n// At low zoom levels the globe gets rendered so that the scale at this\n// latitude matches it's scale in a mercator map. The choice of latitude is\n// a bit arbitrary. Different choices will match mercator more closely in different\n// views. 45 is a good enough choice because:\n// - it's half way from the pole to the equator\n// - matches most middle latitudes reasonably well\n// - biases towards increasing size rather than decreasing\n// - makes the globe slightly larger at very low zoom levels, where it already\n// covers less pixels than mercator (due to the curved surface)\n//\n// Changing this value will change how large a globe is rendered and could affect\n// end users. This should only be done of the tradeoffs between change and improvement\n// are carefully considered.\nexport const GLOBE_SCALE_MATCH_LATITUDE = 45;\n\nexport const GLOBE_RADIUS = EXTENT / Math.PI / 2.0;\nexport const GLOBE_METERS_TO_ECEF = mercatorZfromAltitude(1, 0.0) * 2.0 * GLOBE_RADIUS * Math.PI;\nconst GLOBE_NORMALIZATION_BIT_RANGE = 15;\nconst GLOBE_NORMALIZATION_MASK = (1 << (GLOBE_NORMALIZATION_BIT_RANGE - 1)) - 1;\nconst GLOBE_VERTEX_GRID_SIZE = 64;\nconst GLOBE_LATITUDINAL_GRID_LOD_TABLE = [GLOBE_VERTEX_GRID_SIZE, GLOBE_VERTEX_GRID_SIZE / 2, GLOBE_VERTEX_GRID_SIZE / 4];\nconst TILE_SIZE = 512;\n\nconst GLOBE_MIN = -GLOBE_RADIUS;\nconst GLOBE_MAX = GLOBE_RADIUS;\n\nconst GLOBE_LOW_ZOOM_TILE_AABBS = [\n // z == 0\n new Aabb([GLOBE_MIN, GLOBE_MIN, GLOBE_MIN], [GLOBE_MAX, GLOBE_MAX, GLOBE_MAX]),\n // z == 1\n new Aabb([GLOBE_MIN, GLOBE_MIN, GLOBE_MIN], [0, 0, GLOBE_MAX]), // x=0, y=0\n new Aabb([0, GLOBE_MIN, GLOBE_MIN], [GLOBE_MAX, 0, GLOBE_MAX]), // x=1, y=0\n new Aabb([GLOBE_MIN, 0, GLOBE_MIN], [0, GLOBE_MAX, GLOBE_MAX]), // x=0, y=1\n new Aabb([0, 0, GLOBE_MIN], [GLOBE_MAX, GLOBE_MAX, GLOBE_MAX]) // x=1, y=1\n];\n\nexport function globePointCoordinate(tr: Transform, x: number, y: number, clampToHorizon: boolean = true): ?MercatorCoordinate {\n const point0 = vec3.scale([], tr._camera.position, tr.worldSize);\n const point1 = [x, y, 1, 1];\n\n vec4.transformMat4(point1, point1, tr.pixelMatrixInverse);\n vec4.scale(point1, point1, 1 / point1[3]);\n\n const p0p1 = vec3.sub([], point1, point0);\n const dir = vec3.normalize([], p0p1);\n\n // Find closest point on the sphere to the ray. This is a bit more involving operation\n // if the ray is not intersecting with the sphere, in which case we \"clamp\" the ray\n // to the surface of the sphere, i.e. find a tangent vector that originates from the camera position\n const m = tr.globeMatrix;\n const globeCenter = [m[12], m[13], m[14]];\n const p0toCenter = vec3.sub([], globeCenter, point0);\n const p0toCenterDist = vec3.length(p0toCenter);\n const centerDir = vec3.normalize([], p0toCenter);\n const radius = tr.worldSize / (2.0 * Math.PI);\n const cosAngle = vec3.dot(centerDir, dir);\n\n const origoTangentAngle = Math.asin(radius / p0toCenterDist);\n const origoDirAngle = Math.acos(cosAngle);\n\n if (origoTangentAngle < origoDirAngle) {\n if (!clampToHorizon) return null;\n\n // Find the tangent vector by interpolating between camera-to-globe and camera-to-click vectors.\n // First we'll find a point P1 on the clicked ray that forms a right-angled triangle with the camera position\n // and the center of the globe. Angle of the tanget vector is then used as the interpolation factor\n const clampedP1 = [], origoToP1 = [];\n\n vec3.scale(clampedP1, dir, p0toCenterDist / cosAngle);\n vec3.normalize(origoToP1, vec3.sub(origoToP1, clampedP1, p0toCenter));\n vec3.normalize(dir, vec3.add(dir, p0toCenter, vec3.scale(dir, origoToP1, Math.tan(origoTangentAngle) * p0toCenterDist)));\n }\n\n const pointOnGlobe = [];\n const ray = new Ray(point0, dir);\n\n ray.closestPointOnSphere(globeCenter, radius, pointOnGlobe);\n\n // Transform coordinate axes to find lat & lng of the position\n const xa = vec3.normalize([], getColumn(m, 0));\n const ya = vec3.normalize([], getColumn(m, 1));\n const za = vec3.normalize([], getColumn(m, 2));\n\n const xp = vec3.dot(xa, pointOnGlobe);\n const yp = vec3.dot(ya, pointOnGlobe);\n const zp = vec3.dot(za, pointOnGlobe);\n\n const lat = radToDeg(Math.asin(-yp / radius));\n let lng = radToDeg(Math.atan2(xp, zp));\n\n // Check that the returned longitude angle is not wrapped\n lng = tr.center.lng + shortestAngle(tr.center.lng, lng);\n\n const mx = mercatorXfromLng(lng);\n const my = clamp(mercatorYfromLat(lat), 0, 1);\n\n return new MercatorCoordinate(mx, my);\n}\n\nexport class Arc {\n constructor(p0: Vec3, p1: Vec3, center: Vec3) {\n this.a = vec3.sub([], p0, center);\n this.b = vec3.sub([], p1, center);\n this.center = center;\n const an = vec3.normalize([], this.a);\n const bn = vec3.normalize([], this.b);\n this.angle = Math.acos(vec3.dot(an, bn));\n }\n\n a: Vec3;\n b: Vec3;\n center: Vec3;\n angle: number;\n}\n\nexport function slerp(a: number, b: number, angle: number, t: number): number {\n const sina = Math.sin(angle);\n return a * (Math.sin((1.0 - t) * angle) / sina) + b * (Math.sin(t * angle) / sina);\n}\n\n// Computes local extremum point of an arc on one of the dimensions (x, y or z),\n// i.e. value of a point where d/dt*f(x,y,t) == 0\nexport function localExtremum(arc: Arc, dim: number): ?number {\n // d/dt*slerp(x,y,t) = 0\n // => t = (1/a)*atan(y/(x*sin(a))-1/tan(a)), x > 0\n // => t = (1/a)*(pi/2), x == 0\n if (arc.angle === 0) {\n return null;\n }\n\n let t: number;\n if (arc.a[dim] === 0) {\n t = (1.0 / arc.angle) * 0.5 * Math.PI;\n } else {\n t = 1.0 / arc.angle * Math.atan(arc.b[dim] / arc.a[dim] / Math.sin(arc.angle) - 1.0 / Math.tan(arc.angle));\n }\n\n if (t < 0 || t > 1) {\n return null;\n }\n\n return slerp(arc.a[dim], arc.b[dim], arc.angle, clamp(t, 0.0, 1.0)) + arc.center[dim];\n}\n\nexport function globeTileBounds(id: CanonicalTileID): Aabb {\n if (id.z <= 1) {\n return GLOBE_LOW_ZOOM_TILE_AABBS[id.z + id.y * 2 + id.x];\n }\n\n // After zoom 1 surface function is monotonic for all tile patches\n // => it is enough to project corner points\n const [min, max] = globeTileLatLngCorners(id);\n\n const corners = [\n latLngToECEF(min[0], min[1]),\n latLngToECEF(min[0], max[1]),\n latLngToECEF(max[0], min[1]),\n latLngToECEF(max[0], max[1])\n ];\n\n const bMin = [GLOBE_MAX, GLOBE_MAX, GLOBE_MAX];\n const bMax = [GLOBE_MIN, GLOBE_MIN, GLOBE_MIN];\n\n for (const p of corners) {\n bMin[0] = Math.min(bMin[0], p[0]);\n bMin[1] = Math.min(bMin[1], p[1]);\n bMin[2] = Math.min(bMin[2], p[2]);\n\n bMax[0] = Math.max(bMax[0], p[0]);\n bMax[1] = Math.max(bMax[1], p[1]);\n bMax[2] = Math.max(bMax[2], p[2]);\n }\n\n return new Aabb(bMin, bMax);\n}\n\nexport function aabbForTileOnGlobe(tr: Transform, numTiles: number, tileId: CanonicalTileID): Aabb {\n const scale = numTiles / tr.worldSize;\n\n const mx = Number.MAX_VALUE;\n const cornerMax = [-mx, -mx, -mx];\n const cornerMin = [mx, mx, mx];\n const m = mat4.identity(new Float64Array(16));\n mat4.scale(m, m, [scale, scale, scale]);\n mat4.multiply(m, m, tr.globeMatrix);\n\n if (tileId.z <= 1) {\n // Compute minimum bounding box that fully encapsulates\n // transformed corners of the local aabb\n const aabb = globeTileBounds(tileId);\n const corners = aabb.getCorners();\n\n for (let i = 0; i < corners.length; i++) {\n vec3.transformMat4(corners[i], corners[i], m);\n vec3.min(cornerMin, cornerMin, corners[i]);\n vec3.max(cornerMax, cornerMax, corners[i]);\n }\n\n return new Aabb(cornerMin, cornerMax);\n }\n\n // Find minimal aabb for a tile. Correct solution would be to compute bounding box that\n // fully encapsulates the curved patch that represents the tile on globes surface.\n // This can be simplified a bit as the globe transformation is constrained:\n // 1. Camera always faces the center point on the map\n // 2. Camera is always above (z-coordinate) all of the tiles\n // 3. Up direction of the coordinate space (pixel space) is always +z. This means that\n // the \"highest\" point of the map is at the center.\n // 4. z-coordinate of any point in any tile descends as a function of the distance from the center\n\n // Simplified aabb is computed by first encapsulating 4 transformed corner points of the tile.\n // The resulting aabb is not complete yet as curved edges of the tile might span outside of the boundaries.\n // It is enough to extend the aabb to contain only the edge that's closest to the center point.\n const [nw, se] = globeTileLatLngCorners(tileId);\n const bounds = new LngLatBounds();\n bounds.setSouthWest([nw[1], se[0]]);\n bounds.setNorthEast([se[1], nw[0]]);\n\n const corners = [\n latLngToECEF(bounds.getSouth(), bounds.getWest()),\n latLngToECEF(bounds.getSouth(), bounds.getEast()),\n latLngToECEF(bounds.getNorth(), bounds.getEast()),\n latLngToECEF(bounds.getNorth(), bounds.getWest())\n ];\n\n // Note that here we're transforming the corners to world space while finding the min/max values.\n for (let i = 0; i < corners.length; i++) {\n vec3.transformMat4(corners[i], corners[i], m);\n vec3.min(cornerMin, cornerMin, corners[i]);\n vec3.max(cornerMax, cornerMax, corners[i]);\n }\n\n if (bounds.contains(tr.center)) {\n // Extend the aabb by encapsulating the center point\n cornerMax[2] = 0.0;\n const point = tr.point;\n const center = [point.x * scale, point.y * scale, 0];\n vec3.min(cornerMin, cornerMin, center);\n vec3.max(cornerMax, cornerMax, center);\n\n return new Aabb(cornerMin, cornerMax);\n }\n\n // Compute parameters describing edges of the tile (i.e. arcs) on the globe surface.\n // Vertical edges revolves around the globe origin whereas horizontal edges revolves around the y-axis.\n const globeCenter = [m[12], m[13], m[14]];\n\n const centerLng = tr.center.lng;\n const centerLat = clamp(tr.center.lat, -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n const center = [mercatorXfromLng(centerLng), mercatorYfromLat(centerLat)];\n\n const tileCenterLng = bounds.getCenter().lng;\n const tileCenterLat = clamp(bounds.getCenter().lat, -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n const tileCenter = [mercatorXfromLng(tileCenterLng), mercatorYfromLat(tileCenterLat)];\n let arcCenter = new Array(3);\n let closestArcIdx = 0;\n\n let dx = center[0] - tileCenter[0];\n const dy = center[1] - tileCenter[1];\n\n // Shortest distance might be across the antimeridian\n if (dx > .5) {\n dx -= 1;\n } else if (dx < -.5) {\n dx += 1;\n }\n\n // Here we determine the arc which is closest to the map center point.\n // Horizontal arcs origin = globeCenter.\n // Vertical arcs origin = globeCenter + yAxis * shift.\n // Where `shift` is determined by latitude.\n if (Math.abs(dx) > Math.abs(dy)) {\n closestArcIdx = dx >= 0 ? 1 : 3;\n arcCenter = globeCenter;\n } else {\n closestArcIdx = dy >= 0 ? 0 : 2;\n const yAxis = [m[4], m[5], m[6]];\n let shift: number;\n if (dy >= 0) {\n shift = -Math.sin(degToRad(bounds.getSouth())) * GLOBE_RADIUS;\n } else {\n shift = -Math.sin(degToRad(bounds.getNorth())) * GLOBE_RADIUS;\n }\n arcCenter = vec3.scaleAndAdd(arcCenter, globeCenter, yAxis, shift);\n }\n\n const arcA = corners[closestArcIdx];\n const arcB = corners[(closestArcIdx + 1) % 4];\n\n const closestArc = new Arc(arcA, arcB, arcCenter);\n const arcBounds = [(localExtremum(closestArc, 0) || arcA[0]),\n (localExtremum(closestArc, 1) || arcA[1]),\n (localExtremum(closestArc, 2) || arcA[2])];\n\n // Reduce height of the aabb to match height of the closest arc. This reduces false positives\n // of tiles farther away from the center as they would otherwise intersect with far end\n // of the view frustum\n cornerMin[2] = Math.min(arcA[2], arcB[2]);\n\n vec3.min(cornerMin, cornerMin, arcBounds);\n vec3.max(cornerMax, cornerMax, arcBounds);\n\n return new Aabb(cornerMin, cornerMax);\n}\n\nexport function globeTileLatLngCorners(id: CanonicalTileID): [[number, number], [number, number]] {\n const tileScale = 1 << id.z;\n const left = id.x / tileScale;\n const right = (id.x + 1) / tileScale;\n const top = id.y / tileScale;\n const bottom = (id.y + 1) / tileScale;\n\n const latLngTL = [ latFromMercatorY(top), lngFromMercatorX(left) ];\n const latLngBR = [ latFromMercatorY(bottom), lngFromMercatorX(right) ];\n\n return [latLngTL, latLngBR];\n}\n\nfunction csLatLngToECEF(cosLat: number, sinLat: number, lng: number, radius: number = GLOBE_RADIUS): Array<number> {\n lng = degToRad(lng);\n\n // Convert lat & lng to spherical representation. Use zoom=0 as a reference\n const sx = cosLat * Math.sin(lng) * radius;\n const sy = -sinLat * radius;\n const sz = cosLat * Math.cos(lng) * radius;\n\n return [sx, sy, sz];\n}\n\nexport function latLngToECEF(lat: number, lng: number, radius?: number): Array<number> {\n return csLatLngToECEF(Math.cos(degToRad(lat)), Math.sin(degToRad(lat)), lng, radius);\n}\n\nexport function tileCoordToECEF(x: number, y: number, id: CanonicalTileID): Array<number> {\n const tiles = Math.pow(2.0, id.z);\n const mx = (x / EXTENT + id.x) / tiles;\n const my = (y / EXTENT + id.y) / tiles;\n const lat = latFromMercatorY(my);\n const lng = lngFromMercatorX(mx);\n const pos = latLngToECEF(lat, lng);\n return pos;\n}\n\nexport function globeECEFOrigin(tileMatrix: Mat4, id: UnwrappedTileID): [number, number, number] {\n const origin = [0, 0, 0];\n const bounds = globeTileBounds(id.canonical);\n const normalizationMatrix = globeNormalizeECEF(bounds);\n vec3.transformMat4(origin, origin, normalizationMatrix);\n vec3.transformMat4(origin, origin, tileMatrix);\n return origin;\n}\n\nexport function globeECEFNormalizationScale(bounds: Aabb): number {\n const maxExt = Math.max(...vec3.sub([], bounds.max, bounds.min));\n return GLOBE_NORMALIZATION_MASK / maxExt;\n}\n\nexport function globeNormalizeECEF(bounds: Aabb): Float64Array {\n const m = mat4.identity(new Float64Array(16));\n const scale = globeECEFNormalizationScale(bounds);\n mat4.scale(m, m, [scale, scale, scale]);\n mat4.translate(m, m, vec3.negate([], bounds.min));\n return m;\n}\n\nexport function globeDenormalizeECEF(bounds: Aabb): Float64Array {\n const m = mat4.identity(new Float64Array(16));\n const scale = 1.0 / globeECEFNormalizationScale(bounds);\n mat4.translate(m, m, bounds.min);\n mat4.scale(m, m, [scale, scale, scale]);\n return m;\n}\n\nexport function globeECEFUnitsToPixelScale(worldSize: number): number {\n const localRadius = EXTENT / (2.0 * Math.PI);\n const wsRadius = worldSize / (2.0 * Math.PI);\n return wsRadius / localRadius;\n}\n\nexport function globePixelsToTileUnits(zoom: number, id: CanonicalTileID): number {\n const ecefPerPixel = EXTENT / (TILE_SIZE * Math.pow(2, zoom));\n const normCoeff = globeECEFNormalizationScale(globeTileBounds(id));\n\n return ecefPerPixel * normCoeff;\n}\n\nfunction calculateGlobePosMatrix(x, y, worldSize, lng, lat): Float64Array {\n // transform the globe from reference coordinate space to world space\n const scale = globeECEFUnitsToPixelScale(worldSize);\n const offset = [x, y, -worldSize / (2.0 * Math.PI)];\n const m = mat4.identity(new Float64Array(16));\n mat4.translate(m, m, offset);\n mat4.scale(m, m, [scale, scale, scale]);\n mat4.rotateX(m, m, degToRad(-lat));\n mat4.rotateY(m, m, degToRad(-lng));\n return m;\n}\n\nexport function calculateGlobeMatrix(tr: Transform): Float64Array {\n const {x, y} = tr.point;\n const {lng, lat} = tr._center;\n return calculateGlobePosMatrix(x, y, tr.worldSize, lng, lat);\n}\n\nexport function calculateGlobeLabelMatrix(tr: Transform, id: CanonicalTileID): Float64Array {\n const {x, y} = tr.point;\n\n // Map aligned label space for globe view is the non-rotated globe itself in pixel coordinates.\n\n // Camera is moved closer towards the ground near poles as part of\n // compesanting the reprojection. This has to be compensated for the\n // map aligned label space. Whithout this logic map aligned symbols\n // would appear larger than intended.\n const m = calculateGlobePosMatrix(x, y, tr.worldSize / tr._projectionScaler, 0, 0);\n return mat4.multiply(m, m, globeDenormalizeECEF(globeTileBounds(id)));\n}\n\nexport function calculateGlobeMercatorMatrix(tr: Transform): Float32Array {\n const worldSize = tr.worldSize;\n const point = tr.point;\n\n const mercatorZ = mercatorZfromAltitude(1, tr.center.lat) * worldSize;\n const projectionScaler = mercatorZ / tr.pixelsPerMeter;\n const zScale = tr.pixelsPerMeter;\n const ws = worldSize / projectionScaler;\n\n const posMatrix = mat4.identity(new Float64Array(16));\n mat4.translate(posMatrix, posMatrix, [point.x, point.y, 0.0]);\n mat4.scale(posMatrix, posMatrix, [ws, ws, zScale]);\n\n return Float32Array.from(posMatrix);\n}\n\nexport function globeToMercatorTransition(zoom: number): number {\n return smoothstep(GLOBE_ZOOM_THRESHOLD_MIN, GLOBE_ZOOM_THRESHOLD_MAX, zoom);\n}\n\nexport function globeMatrixForTile(id: CanonicalTileID, globeMatrix: Float64Array): Float32Array {\n const decode = globeDenormalizeECEF(globeTileBounds(id));\n return mat4.mul(mat4.create(), globeMatrix, decode);\n}\n\nexport function globePoleMatrixForTile(z: number, x: number, tr: Transform): Float32Array {\n const poleMatrix = mat4.identity(new Float64Array(16));\n const numTiles = 1 << z;\n const xOffsetAngle = (x / numTiles - 0.5) * 360;\n const point = tr.point;\n const ws = tr.worldSize;\n const s = tr.worldSize / (tr.tileSize * numTiles);\n\n mat4.translate(poleMatrix, poleMatrix, [point.x, point.y, -(ws / Math.PI / 2.0)]);\n mat4.scale(poleMatrix, poleMatrix, [s, s, s]);\n mat4.rotateX(poleMatrix, poleMatrix, degToRad(-tr._center.lat));\n mat4.rotateY(poleMatrix, poleMatrix, degToRad(-tr._center.lng + xOffsetAngle));\n\n return Float32Array.from(poleMatrix);\n}\n\nexport function globeUseCustomAntiAliasing(painter: Painter, context: Context, transform: Transform): boolean {\n const transitionT = globeToMercatorTransition(transform.zoom);\n const useContextAA = painter.style.map._antialias;\n const hasStandardDerivatives = !!context.extStandardDerivatives;\n const disabled = context.extStandardDerivativesForceOff || (painter.terrain && painter.terrain.exaggeration() > 0.0);\n return transitionT === 0.0 && !useContextAA && !disabled && hasStandardDerivatives;\n}\n\nexport function getGridMatrix(id: CanonicalTileID, corners: [[number, number], [number, number]], latitudinalLod: number): Array<number> {\n const [tl, br] = corners;\n const S = 1.0 / GLOBE_VERTEX_GRID_SIZE;\n const x = (br[1] - tl[1]) * S;\n const latitudinalSubdivs = GLOBE_LATITUDINAL_GRID_LOD_TABLE[latitudinalLod];\n const y = (br[0] - tl[0]) / latitudinalSubdivs;\n const tileZoom = 1 << id.z;\n return [0, x, tileZoom, y, 0, id.y, tl[0], tl[1], S];\n}\n\nexport function getLatitudinalLod(lat: number): number {\n const UPPER_LATITUDE = MAX_MERCATOR_LATITUDE - 5.0;\n lat = clamp(lat, -UPPER_LATITUDE, UPPER_LATITUDE) / UPPER_LATITUDE * 90.0;\n // const t = Math.pow(1.0 - Math.cos(degToRad(lat)), 2);\n const t = Math.pow(Math.abs(Math.sin(degToRad(lat))), 3);\n const lod = Math.round(t * (GLOBE_LATITUDINAL_GRID_LOD_TABLE.length - 1));\n return lod;\n}\n\nexport function globeCenterToScreenPoint(tr: Transform): Point {\n const pos = [0, 0, 0];\n const matrix = mat4.identity(new Float64Array(16));\n mat4.multiply(matrix, tr.pixelMatrix, tr.globeMatrix);\n vec3.transformMat4(pos, pos, matrix);\n return new Point(pos[0], pos[1]);\n}\n\nfunction cameraPositionInECEF(tr: Transform): Array<number> {\n // Here \"center\" is the center of the globe. We refer to transform._center\n // (the surface of the map on the center of the screen) as \"pivot\" to avoid confusion.\n const centerToPivot = latLngToECEF(tr._center.lat, tr._center.lng);\n\n // Set axis to East-West line tangent to sphere at pivot\n const south = vec3.fromValues(0, 1, 0);\n let axis = vec3.cross([], south, centerToPivot);\n\n // Rotate axis around pivot by bearing\n const rotation = mat4.fromRotation([], -tr.angle, centerToPivot);\n axis = vec3.transformMat4(axis, axis, rotation);\n\n // Rotate camera around axis by pitch\n mat4.fromRotation(rotation, -tr._pitch, axis);\n\n const pivotToCamera = vec3.normalize([], centerToPivot);\n vec3.scale(pivotToCamera, pivotToCamera, tr.cameraToCenterDistance / tr.pixelsPerMeter * GLOBE_METERS_TO_ECEF);\n vec3.transformMat4(pivotToCamera, pivotToCamera, rotation);\n\n return vec3.add([], centerToPivot, pivotToCamera);\n}\n\n// Return the angle of the normal vector of the sphere relative to the camera.\n// i.e. how much to tilt map-aligned markers.\nexport function globeTiltAtLngLat(tr: Transform, lngLat: LngLat): number {\n const centerToPoint = latLngToECEF(lngLat.lat, lngLat.lng);\n const centerToCamera = cameraPositionInECEF(tr);\n const pointToCamera = vec3.subtract([], centerToCamera, centerToPoint);\n return vec3.angle(pointToCamera, centerToPoint);\n}\n\nexport function isLngLatBehindGlobe(tr: Transform, lngLat: LngLat): boolean {\n // We consider 1% past the horizon not occluded, this allows popups to be dragged around the globe edge without fading.\n return (globeTiltAtLngLat(tr, lngLat) > Math.PI / 2 * 1.01);\n}\n\nconst POLE_RAD = degToRad(85.0);\nconst POLE_COS = Math.cos(POLE_RAD);\nconst POLE_SIN = Math.sin(POLE_RAD);\n\nexport class GlobeSharedBuffers {\n _poleNorthVertexBuffer: VertexBuffer;\n _poleSouthVertexBuffer: VertexBuffer;\n _poleIndexBuffer: IndexBuffer;\n _poleSegments: Array<SegmentVector>;\n\n _gridBuffer: VertexBuffer;\n _gridIndexBuffer: IndexBuffer;\n _gridSegments: Array<SegmentVector>;\n\n _wireframeIndexBuffer: IndexBuffer;\n _wireframeSegments: Array<SegmentVector>;\n\n constructor(context: Context) {\n this._createGrid(context);\n this._createPoles(context);\n }\n\n destroy() {\n this._poleIndexBuffer.destroy();\n this._gridBuffer.destroy();\n this._gridIndexBuffer.destroy();\n this._poleNorthVertexBuffer.destroy();\n this._poleSouthVertexBuffer.destroy();\n for (const segments of this._poleSegments) segments.destroy();\n for (const segments of this._gridSegments) segments.destroy();\n\n if (this._wireframeIndexBuffer) {\n this._wireframeIndexBuffer.destroy();\n for (const segments of this._wireframeSegments) segments.destroy();\n }\n }\n\n _createGrid(context: Context) {\n const gridVertices = new PosArray();\n const gridIndices = new TriangleIndexArray();\n\n const quadExt = GLOBE_VERTEX_GRID_SIZE;\n const vertexExt = quadExt + 1;\n\n for (let j = 0; j < vertexExt; j++)\n for (let i = 0; i < vertexExt; i++)\n gridVertices.emplaceBack(i, j);\n\n this._gridSegments = [];\n for (let k = 0, primitiveOffset = 0; k < GLOBE_LATITUDINAL_GRID_LOD_TABLE.length; k++) {\n const latitudinalLod = GLOBE_LATITUDINAL_GRID_LOD_TABLE[k];\n for (let j = 0; j < latitudinalLod; j++) {\n for (let i = 0; i < quadExt; i++) {\n const index = j * vertexExt + i;\n gridIndices.emplaceBack(index + 1, index, index + vertexExt);\n gridIndices.emplaceBack(index + vertexExt, index + vertexExt + 1, index + 1);\n }\n }\n\n const numVertices = (latitudinalLod + 1) * vertexExt;\n const numPrimitives = latitudinalLod * quadExt * 2;\n\n this._gridSegments.push(SegmentVector.simpleSegment(0, primitiveOffset, numVertices, numPrimitives));\n primitiveOffset += numPrimitives;\n }\n\n this._gridBuffer = context.createVertexBuffer(gridVertices, posAttributes.members);\n this._gridIndexBuffer = context.createIndexBuffer(gridIndices, true);\n }\n\n _createPoles(context: Context) {\n const poleIndices = new TriangleIndexArray();\n for (let i = 0; i <= GLOBE_VERTEX_GRID_SIZE; i++) {\n poleIndices.emplaceBack(0, i + 1, i + 2);\n }\n this._poleIndexBuffer = context.createIndexBuffer(poleIndices, true);\n\n const northVertices = new GlobeVertexArray();\n const southVertices = new GlobeVertexArray();\n const polePrimitives = GLOBE_VERTEX_GRID_SIZE;\n const poleVertices = GLOBE_VERTEX_GRID_SIZE + 2;\n this._poleSegments = [];\n\n for (let zoom = 0, offset = 0; zoom < GLOBE_ZOOM_THRESHOLD_MIN; zoom++) {\n const tiles = 1 << zoom;\n const radius = tiles * TILE_SIZE / Math.PI / 2.0;\n const endAngle = 360.0 / tiles;\n\n northVertices.emplaceBack(0, -radius, 0, 0, 0, 0.5, 0); // place the tip\n southVertices.emplaceBack(0, -radius, 0, 0, 0, 0.5, 1);\n\n for (let i = 0; i <= GLOBE_VERTEX_GRID_SIZE; i++) {\n const uvX = i / GLOBE_VERTEX_GRID_SIZE;\n const angle = interpolate(0, endAngle, uvX);\n const [gx, gy, gz] = csLatLngToECEF(POLE_COS, POLE_SIN, angle, radius);\n northVertices.emplaceBack(gx, gy, gz, 0, 0, uvX, 0);\n southVertices.emplaceBack(gx, gy, gz, 0, 0, uvX, 1);\n }\n\n this._poleSegments.push(SegmentVector.simpleSegment(offset, 0, poleVertices, polePrimitives));\n\n offset += poleVertices;\n }\n\n this._poleNorthVertexBuffer = context.createVertexBuffer(northVertices, globeLayoutAttributes, false);\n this._poleSouthVertexBuffer = context.createVertexBuffer(southVertices, globeLayoutAttributes, false);\n }\n\n getGridBuffers(latitudinalLod: number): [VertexBuffer, IndexBuffer, SegmentVector] {\n return [this._gridBuffer, this._gridIndexBuffer, this._gridSegments[latitudinalLod]];\n }\n\n getPoleBuffers(z: number): [VertexBuffer, VertexBuffer, IndexBuffer, SegmentVector] {\n return [this._poleNorthVertexBuffer, this._poleSouthVertexBuffer, this._poleIndexBuffer, this._poleSegments[z]];\n }\n\n getWirefameBuffers(context: Context, lod: number): [VertexBuffer, IndexBuffer, SegmentVector] {\n if (!this._wireframeSegments) {\n const wireframeIndices = new LineIndexArray();\n const quadExt = GLOBE_VERTEX_GRID_SIZE;\n const vertexExt = quadExt + 1;\n\n this._wireframeSegments = [];\n for (let k = 0, primitiveOffset = 0; k < GLOBE_LATITUDINAL_GRID_LOD_TABLE.length; k++) {\n const latitudinalLod = GLOBE_LATITUDINAL_GRID_LOD_TABLE[k];\n for (let j = 0; j < latitudinalLod; j++) {\n for (let i = 0; i < quadExt; i++) {\n const index = j * vertexExt + i;\n wireframeIndices.emplaceBack(index, index + 1);\n wireframeIndices.emplaceBack(index, index + vertexExt);\n wireframeIndices.emplaceBack(index, index + vertexExt + 1);\n }\n }\n\n const numVertices = (latitudinalLod + 1) * vertexExt;\n const numPrimitives = latitudinalLod * quadExt * 3;\n\n this._wireframeSegments.push(SegmentVector.simpleSegment(0, primitiveOffset, numVertices, numPrimitives));\n primitiveOffset += numPrimitives;\n }\n\n this._wireframeIndexBuffer = context.createIndexBuffer(wireframeIndices);\n }\n return [this._gridBuffer, this._wireframeIndexBuffer, this._wireframeSegments[lod]];\n }\n}\n","// @flow\nimport {vec3} from 'gl-matrix';\nimport {Ray} from '../../util/primitives.js';\nimport type Transform from '../transform.js';\n\nexport function farthestPixelDistanceOnPlane(tr: Transform, pixelsPerMeter: number): number {\n // Find the distance from the center point [width/2 + offset.x, height/2 + offset.y] to the\n // center top point [width/2 + offset.x, 0] in Z units, using the law of sines.\n // 1 Z unit is equivalent to 1 horizontal px at the center of the map\n // (the distance between[width/2, height/2] and [width/2 + 1, height/2])\n const fovAboveCenter = tr.fovAboveCenter;\n\n // Adjust distance to MSL by the minimum possible elevation visible on screen,\n // this way the far plane is pushed further in the case of negative elevation.\n const minElevationInPixels = tr.elevation ?\n tr.elevation.getMinElevationBelowMSL() * pixelsPerMeter :\n 0;\n const cameraToSeaLevelDistance = ((tr._camera.position[2] * tr.worldSize) - minElevationInPixels) / Math.cos(tr._pitch);\n const topHalfSurfaceDistance = Math.sin(fovAboveCenter) * cameraToSeaLevelDistance / Math.sin(Math.max(Math.PI / 2.0 - tr._pitch - fovAboveCenter, 0.01));\n\n // Calculate z distance of the farthest fragment that should be rendered.\n const furthestDistance = Math.sin(tr._pitch) * topHalfSurfaceDistance + cameraToSeaLevelDistance;\n const horizonDistance = cameraToSeaLevelDistance * (1 / tr._horizonShift);\n\n // Add a bit extra to avoid precision problems when a fragment's distance is exactly `furthestDistance`\n return Math.min(furthestDistance * 1.01, horizonDistance);\n}\n\nexport function farthestPixelDistanceOnSphere(tr: Transform, pixelsPerMeter: number): number {\n // Find farthest distance of the globe that is potentially visible to the camera.\n // First check if the view frustum is fully covered by the map by casting a ray\n // from the top left/right corner and see if it intersects with the globe. In case\n // of no intersection we need to find distance to the horizon point where the\n // surface normal is perpendicular to the camera forward direction.\n const cameraDistance = tr.cameraToCenterDistance;\n const centerPixelAltitude = tr._centerAltitude * pixelsPerMeter;\n\n const camera = tr._camera;\n const forward = tr._camera.forward();\n const cameraPosition = vec3.add([], vec3.scale([], forward, -cameraDistance), [0, 0, centerPixelAltitude]);\n\n const globeRadius = tr.worldSize / (2.0 * Math.PI);\n const globeCenter = [0, 0, -globeRadius];\n\n const aspectRatio = tr.width / tr.height;\n const tanFovAboveCenter = Math.tan(tr.fovAboveCenter);\n\n const up = vec3.scale([], camera.up(), tanFovAboveCenter);\n const right = vec3.scale([], camera.right(), tanFovAboveCenter * aspectRatio);\n const dir = vec3.normalize([], vec3.add([], vec3.add([], forward, up), right));\n\n const pointOnGlobe = [];\n const ray = new Ray(cameraPosition, dir);\n\n let pixelDistance;\n if (ray.closestPointOnSphere(globeCenter, globeRadius, pointOnGlobe)) {\n const p0 = vec3.add([], pointOnGlobe, globeCenter);\n const p1 = vec3.sub([], p0, cameraPosition);\n // Globe is fully covering the view frustum. Project the intersection\n // point to the camera view vector in order to find the pixel distance\n pixelDistance = Math.cos(tr.fovAboveCenter) * vec3.length(p1);\n } else {\n // Background space is visible. Find distance to the point of the\n // globe where surface normal is parallel to the view vector\n const globeCenterToCamera = vec3.sub([], cameraPosition, globeCenter);\n const cameraToGlobe = vec3.sub([], globeCenter, cameraPosition);\n vec3.normalize(cameraToGlobe, cameraToGlobe);\n\n const cameraHeight = vec3.length(globeCenterToCamera) - globeRadius;\n pixelDistance = Math.sqrt(cameraHeight * (cameraHeight + 2 * globeRadius));\n const angle = Math.acos(pixelDistance / (globeRadius + cameraHeight)) - Math.acos(vec3.dot(forward, cameraToGlobe));\n pixelDistance *= Math.cos(angle);\n }\n\n return pixelDistance * 1.01;\n}\n","// @flow\nimport Point from '@mapbox/point-geometry';\nimport MercatorCoordinate, {altitudeFromMercatorZ, lngFromMercatorX, latFromMercatorY} from '../mercator_coordinate.js';\nimport EXTENT from '../../data/extent.js';\nimport {vec3} from 'gl-matrix';\nimport {Aabb} from '../../util/primitives.js';\nimport {aabbForTileOnGlobe} from './globe_util.js';\nimport assert from 'assert';\nimport {CanonicalTileID} from '../../source/tile_id.js';\n\nimport type {Vec3} from 'gl-matrix';\nimport type Projection from './projection.js';\nimport type Transform from '../transform.js';\n\nexport type TileTransform = {\n scale: number,\n x: number,\n y: number,\n x2: number,\n y2: number,\n projection: Projection\n};\n\nexport default function tileTransform(id: Object, projection: Projection): TileTransform {\n if (!projection.isReprojectedInTileSpace) {\n return {scale: 1 << id.z, x: id.x, y: id.y, x2: id.x + 1, y2: id.y + 1, projection};\n }\n\n const s = Math.pow(2, -id.z);\n\n const x1 = (id.x) * s;\n const x2 = (id.x + 1) * s;\n const y1 = (id.y) * s;\n const y2 = (id.y + 1) * s;\n\n const lng1 = lngFromMercatorX(x1);\n const lng2 = lngFromMercatorX(x2);\n const lat1 = latFromMercatorY(y1);\n const lat2 = latFromMercatorY(y2);\n\n const p0 = projection.project(lng1, lat1);\n const p1 = projection.project(lng2, lat1);\n const p2 = projection.project(lng2, lat2);\n const p3 = projection.project(lng1, lat2);\n\n let minX = Math.min(p0.x, p1.x, p2.x, p3.x);\n let minY = Math.min(p0.y, p1.y, p2.y, p3.y);\n let maxX = Math.max(p0.x, p1.x, p2.x, p3.x);\n let maxY = Math.max(p0.y, p1.y, p2.y, p3.y);\n\n // we pick an error threshold for calculating the bbox that balances between performance and precision\n const maxErr = s / 16;\n\n function processSegment(pa, pb, ax, ay, bx, by) {\n const mx = (ax + bx) / 2;\n const my = (ay + by) / 2;\n\n const pm = projection.project(lngFromMercatorX(mx), latFromMercatorY(my));\n const err = Math.max(0, minX - pm.x, minY - pm.y, pm.x - maxX, pm.y - maxY);\n\n minX = Math.min(minX, pm.x);\n maxX = Math.max(maxX, pm.x);\n minY = Math.min(minY, pm.y);\n maxY = Math.max(maxY, pm.y);\n\n if (err > maxErr) {\n processSegment(pa, pm, ax, ay, mx, my);\n processSegment(pm, pb, mx, my, bx, by);\n }\n }\n\n processSegment(p0, p1, x1, y1, x2, y1);\n processSegment(p1, p2, x2, y1, x2, y2);\n processSegment(p2, p3, x2, y2, x1, y2);\n processSegment(p3, p0, x1, y2, x1, y1);\n\n // extend the bbox by max error to make sure coords don't go past tile extent\n minX -= maxErr;\n minY -= maxErr;\n maxX += maxErr;\n maxY += maxErr;\n\n const max = Math.max(maxX - minX, maxY - minY);\n const scale = 1 / max;\n\n return {\n scale,\n x: minX * scale,\n y: minY * scale,\n x2: maxX * scale,\n y2: maxY * scale,\n projection\n };\n}\n\nexport function tileAABB(tr: Transform, numTiles: number, z: number, x: number, y: number, wrap: number, min: number, max: number, projection: Projection): Aabb {\n if (projection.name === 'globe') {\n const tileId = new CanonicalTileID(z, x, y);\n return aabbForTileOnGlobe(tr, numTiles, tileId);\n }\n\n const tt = tileTransform({z, x, y}, projection);\n const tx = tt.x / tt.scale;\n const ty = tt.y / tt.scale;\n const tx2 = tt.x2 / tt.scale;\n const ty2 = tt.y2 / tt.scale;\n\n if (isNaN(tx) || isNaN(tx2) || isNaN(ty) || isNaN(ty2)) {\n assert(false);\n }\n\n return new Aabb(\n [(wrap + tx) * numTiles, numTiles * ty, min],\n [(wrap + tx2) * numTiles, numTiles * ty2, max]);\n}\n\nexport function getTilePoint(tileTransform: TileTransform, {x, y}: {x: number, y: number}, wrap: number = 0): Point {\n return new Point(\n ((x - wrap) * tileTransform.scale - tileTransform.x) * EXTENT,\n (y * tileTransform.scale - tileTransform.y) * EXTENT);\n}\n\nexport function getTileVec3(tileTransform: TileTransform, coord: MercatorCoordinate, wrap: number = 0): Vec3 {\n const x = ((coord.x - wrap) * tileTransform.scale - tileTransform.x) * EXTENT;\n const y = (coord.y * tileTransform.scale - tileTransform.y) * EXTENT;\n return vec3.fromValues(x, y, altitudeFromMercatorZ(coord.z, coord.y));\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {mercatorZfromAltitude} from '../mercator_coordinate.js';\nimport Point from '@mapbox/point-geometry';\nimport {farthestPixelDistanceOnPlane} from './far_z.js';\nimport {mat4} from 'gl-matrix';\nimport EXTENT from '../../data/extent.js';\nimport tileTransform from './tile_transform.js';\n\nimport type Transform from '../../geo/transform.js';\nimport type {Vec3} from 'gl-matrix';\nimport type MercatorCoordinate from '../mercator_coordinate.js';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {CanonicalTileID, UnwrappedTileID} from '../../source/tile_id.js';\n\nexport type ProjectedPoint = {\n x: number;\n y: number;\n z: number;\n};\n\nexport type ElevationScale = {\n // `metersToTile` converts meters to units used to describe elevation in tile space.\n // Default units in mercator space are x & y: [0, 8192] and z: meters\n metersToTile: number\n}\n\nconst identity = mat4.identity(new Float32Array(16));\n\nexport default class Projection {\n name: string;\n wrap: boolean;\n conic: boolean;\n requiresDraping: boolean;\n supportsWorldCopies: boolean;\n supportsTerrain: boolean;\n supportsFog: boolean;\n supportsFreeCamera: boolean;\n zAxisUnit: 'meters' | 'pixels';\n isReprojectedInTileSpace: boolean;\n center: [number, number];\n range: ?[number, number];\n parallels: ?[number, number];\n unsupportedLayers: Array<string>;\n spec: ProjectionSpecification;\n\n constructor(options: ProjectionSpecification) {\n this.spec = options;\n this.name = options.name;\n this.wrap = false;\n this.requiresDraping = false;\n this.supportsWorldCopies = false;\n this.supportsTerrain = false;\n this.supportsFog = false;\n this.supportsFreeCamera = false;\n this.zAxisUnit = 'meters';\n this.isReprojectedInTileSpace = true;\n this.unsupportedLayers = ['custom'];\n this.center = [0, 0];\n this.range = [3.5, 7];\n }\n\n project(lng: number, lat: number): ProjectedPoint { // eslint-disable-line\n return {x: 0, y: 0, z: 0}; // overriden in subclasses\n }\n\n unproject(x: number, y: number): LngLat { // eslint-disable-line\n return new LngLat(0, 0); // overriden in subclasses\n }\n\n projectTilePoint(x: number, y: number, _: CanonicalTileID): ProjectedPoint {\n return {x, y, z: 0};\n }\n\n locationPoint(tr: Transform, lngLat: LngLat, terrain: boolean = true): Point {\n return tr._coordinatePoint(tr.locationCoordinate(lngLat), terrain);\n }\n\n pixelsPerMeter(lat: number, worldSize: number): number {\n return mercatorZfromAltitude(1, lat) * worldSize;\n }\n\n // pixels-per-meter is used to describe relation between real world and pixel distances.\n // `pixelSpaceConversion` can be used to convert the ratio from mercator projection to\n // the currently active projection.\n //\n // `pixelSpaceConversion` is useful for converting between pixel spaces where some logic\n // expects mercator pixels, such as raycasting where the scale is expected to be in\n // mercator pixels.\n pixelSpaceConversion(lat: number, worldSize: number, interpolationT: number): number { // eslint-disable-line\n return 1.0;\n }\n\n farthestPixelDistance(tr: Transform): number {\n return farthestPixelDistanceOnPlane(tr, tr.pixelsPerMeter);\n }\n\n pointCoordinate(tr: Transform, x: number, y: number, z: number): MercatorCoordinate {\n const horizonOffset = tr.horizonLineFromTop(false);\n const clamped = new Point(x, Math.max(horizonOffset, y));\n return tr.rayIntersectionCoordinate(tr.pointRayIntersection(clamped, z));\n }\n\n pointCoordinate3D(tr: Transform, x: number, y: number): ?Vec3 {\n const p = new Point(x, y);\n if (tr.elevation) {\n return tr.elevation.pointCoordinate(p);\n } else {\n const mc = this.pointCoordinate(tr, p.x, p.y, 0);\n return [mc.x, mc.y, mc.z];\n }\n }\n\n isPointAboveHorizon(tr: Transform, p: Point): boolean {\n if (tr.elevation) {\n const raycastOnTerrain = this.pointCoordinate3D(tr, p.x, p.y);\n return !raycastOnTerrain;\n }\n const horizon = tr.horizonLineFromTop();\n return p.y < horizon;\n }\n\n createInversionMatrix(tr: Transform, id: CanonicalTileID): Float32Array { // eslint-disable-line\n return identity;\n }\n\n createTileMatrix(tr: Transform, worldSize: number, id: UnwrappedTileID): Float64Array {\n let scale, scaledX, scaledY;\n const canonical = id.canonical;\n const posMatrix = mat4.identity(new Float64Array(16));\n\n if (this.isReprojectedInTileSpace) {\n const cs = tileTransform(canonical, this);\n scale = 1;\n scaledX = cs.x + id.wrap * cs.scale;\n scaledY = cs.y;\n mat4.scale(posMatrix, posMatrix, [scale / cs.scale, scale / cs.scale, tr.pixelsPerMeter / worldSize]);\n } else {\n scale = worldSize / tr.zoomScale(canonical.z);\n const unwrappedX = canonical.x + Math.pow(2, canonical.z) * id.wrap;\n scaledX = unwrappedX * scale;\n scaledY = canonical.y * scale;\n }\n\n mat4.translate(posMatrix, posMatrix, [scaledX, scaledY, 0]);\n mat4.scale(posMatrix, posMatrix, [scale / EXTENT, scale / EXTENT, 1]);\n\n return posMatrix;\n }\n\n upVector(id: CanonicalTileID, x: number, y: number): Vec3 { // eslint-disable-line\n return [0, 0, 1];\n }\n\n upVectorScale(id: CanonicalTileID, latitude: number, worldSize: number): ElevationScale { // eslint-disable-line\n return {metersToTile: 1};\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {clamp, wrap, degToRad, radToDeg} from '../../util/util.js';\nimport {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {ProjectedPoint} from './projection.js';\n\n// based on https://github.com/d3/d3-geo-projection, MIT-licensed\nexport default class Albers extends Projection {\n n: number;\n c: number;\n r0: number;\n\n constructor(options: ProjectionSpecification) {\n super(options);\n this.range = [4, 7];\n this.center = options.center || [-96, 37.5];\n const [lat0, lat1] = this.parallels = options.parallels || [29.5, 45.5];\n\n const sy0 = Math.sin(degToRad(lat0));\n this.n = (sy0 + Math.sin(degToRad(lat1))) / 2;\n this.c = 1 + sy0 * (2 * this.n - sy0);\n this.r0 = Math.sqrt(this.c) / this.n;\n }\n\n project(lng: number, lat: number): ProjectedPoint {\n const {n, c, r0} = this;\n const lambda = degToRad(lng - this.center[0]);\n const phi = degToRad(lat);\n\n const r = Math.sqrt(c - 2 * n * Math.sin(phi)) / n;\n const x = r * Math.sin(lambda * n);\n const y = r * Math.cos(lambda * n) - r0;\n return {x, y, z: 0};\n }\n\n unproject(x: number, y: number): LngLat {\n const {n, c, r0} = this;\n const r0y = r0 + y;\n let l = Math.atan2(x, Math.abs(r0y)) * Math.sign(r0y);\n if (r0y * n < 0) {\n l -= Math.PI * Math.sign(x) * Math.sign(r0y);\n }\n const dt = degToRad(this.center[0]) * n;\n l = wrap(l, -Math.PI - dt, Math.PI - dt);\n\n const lng = radToDeg(l / n) + this.center[0];\n const phi = Math.asin(clamp((c - (x * x + r0y * r0y) * n * n) / (2 * n), -1, 1));\n const lat = clamp(radToDeg(phi), -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n\n return new LngLat(lng, lat);\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {clamp} from '../../util/util.js';\nimport {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectedPoint} from './projection.js';\n\nconst a1 = 1.340264;\nconst a2 = -0.081106;\nconst a3 = 0.000893;\nconst a4 = 0.003796;\nconst M = Math.sqrt(3) / 2;\n\nexport default class EqualEarth extends Projection {\n\n project(lng: number, lat: number): ProjectedPoint {\n // based on https://github.com/d3/d3-geo, MIT-licensed\n lat = lat / 180 * Math.PI;\n lng = lng / 180 * Math.PI;\n const theta = Math.asin(M * Math.sin(lat));\n const theta2 = theta * theta;\n const theta6 = theta2 * theta2 * theta2;\n const x = lng * Math.cos(theta) / (M * (a1 + 3 * a2 * theta2 + theta6 * (7 * a3 + 9 * a4 * theta2)));\n const y = theta * (a1 + a2 * theta2 + theta6 * (a3 + a4 * theta2));\n\n return {\n x: (x / Math.PI + 0.5) * 0.5,\n y: 1 - (y / Math.PI + 1) * 0.5,\n z: 0\n };\n }\n\n unproject(x: number, y: number): LngLat {\n // based on https://github.com/d3/d3-geo, MIT-licensed\n x = (2 * x - 0.5) * Math.PI;\n y = (2 * (1 - y) - 1) * Math.PI;\n let theta = y;\n let theta2 = theta * theta;\n let theta6 = theta2 * theta2 * theta2;\n\n for (let i = 0, delta, fy, fpy; i < 12; ++i) {\n fy = theta * (a1 + a2 * theta2 + theta6 * (a3 + a4 * theta2)) - y;\n fpy = a1 + 3 * a2 * theta2 + theta6 * (7 * a3 + 9 * a4 * theta2);\n delta = fy / fpy;\n theta = clamp(theta - delta, -Math.PI / 3, Math.PI / 3);\n theta2 = theta * theta;\n theta6 = theta2 * theta2 * theta2;\n if (Math.abs(delta) < 1e-12) break;\n }\n\n const lambda = M * x * (a1 + 3 * a2 * theta2 + theta6 * (7 * a3 + 9 * a4 * theta2)) / Math.cos(theta);\n const phi = Math.asin(Math.sin(theta) / M);\n const lng = clamp(lambda * 180 / Math.PI, -180, 180);\n const lat = clamp(phi * 180 / Math.PI, -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n\n return new LngLat(lng, lat);\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {clamp} from '../../util/util.js';\nimport {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {ProjectedPoint} from './projection.js';\n\nexport default class Equirectangular extends Projection {\n\n constructor(options: ProjectionSpecification) {\n super(options);\n this.wrap = true;\n this.supportsWorldCopies = true;\n }\n\n project(lng: number, lat: number): ProjectedPoint {\n const x = 0.5 + lng / 360;\n const y = 0.5 - lat / 360;\n return {x, y, z: 0};\n }\n\n unproject(x: number, y: number): LngLat {\n const lng = (x - 0.5) * 360;\n const lat = clamp((0.5 - y) * 360, -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n return new LngLat(lng, lat);\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {clamp, degToRad, radToDeg} from '../../util/util.js';\nimport {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {ProjectedPoint} from './projection.js';\n\nconst halfPi = Math.PI / 2;\n\nfunction tany(y) {\n return Math.tan((halfPi + y) / 2);\n}\n\n// based on https://github.com/d3/d3-geo, MIT-licensed\nexport default class LambertConformalConic extends Projection {\n n: number;\n f: number;\n\n constructor(options: ProjectionSpecification) {\n super(options);\n this.center = options.center || [0, 30];\n const [lat0, lat1] = this.parallels = options.parallels || [30, 30];\n\n const y0 = degToRad(lat0);\n const y1 = degToRad(lat1);\n const cy0 = Math.cos(y0);\n this.n = y0 === y1 ? Math.sin(y0) : Math.log(cy0 / Math.cos(y1)) / Math.log(tany(y1) / tany(y0));\n this.f = cy0 * Math.pow(tany(y0), this.n) / this.n;\n }\n\n project(lng: number, lat: number): ProjectedPoint {\n lat = degToRad(lat);\n lng = degToRad(lng - this.center[0]);\n\n const epsilon = 1e-6;\n const {n, f} = this;\n\n if (f > 0) {\n if (lat < -halfPi + epsilon) lat = -halfPi + epsilon;\n } else {\n if (lat > halfPi - epsilon) lat = halfPi - epsilon;\n }\n\n const r = f / Math.pow(tany(lat), n);\n const x = r * Math.sin(n * lng);\n const y = f - r * Math.cos(n * lng);\n\n return {\n x: (x / Math.PI + 0.5) * 0.5,\n y: 1 - (y / Math.PI + 0.5) * 0.5,\n z: 0\n };\n }\n\n unproject(x: number, y: number): LngLat {\n x = (2 * x - 0.5) * Math.PI;\n y = (2 * (1 - y) - 0.5) * Math.PI;\n const {n, f} = this;\n const fy = f - y;\n const signFy = Math.sign(fy);\n const r = Math.sign(n) * Math.sqrt(x * x + fy * fy);\n let l = Math.atan2(x, Math.abs(fy)) * signFy;\n\n if (fy * n < 0) l -= Math.PI * Math.sign(x) * signFy;\n\n const lng = clamp(radToDeg(l / n) + this.center[0], -180, 180);\n const phi = 2 * Math.atan(Math.pow(f / r, 1 / n)) - halfPi;\n const lat = clamp(radToDeg(phi), -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n\n return new LngLat(lng, lat);\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {mercatorXfromLng, mercatorYfromLat, lngFromMercatorX, latFromMercatorY} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {ProjectedPoint} from './projection.js';\n\nexport default class Mercator extends Projection {\n\n constructor(options: ProjectionSpecification) {\n super(options);\n this.wrap = true;\n this.supportsWorldCopies = true;\n this.supportsTerrain = true;\n this.supportsFog = true;\n this.supportsFreeCamera = true;\n this.isReprojectedInTileSpace = false;\n this.unsupportedLayers = [];\n this.range = null;\n }\n\n project(lng: number, lat: number): ProjectedPoint {\n const x = mercatorXfromLng(lng);\n const y = mercatorYfromLat(lat);\n return {x, y, z: 0};\n }\n\n unproject(x: number, y: number): LngLat {\n const lng = lngFromMercatorX(x);\n const lat = latFromMercatorY(y);\n return new LngLat(lng, lat);\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {clamp, degToRad, radToDeg} from '../../util/util.js';\nimport {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectedPoint} from './projection.js';\n\nconst maxPhi = degToRad(MAX_MERCATOR_LATITUDE);\n\nexport default class NaturalEarth extends Projection {\n\n project(lng: number, lat: number): ProjectedPoint {\n // based on https://github.com/d3/d3-geo, MIT-licensed\n lat = degToRad(lat);\n lng = degToRad(lng);\n\n const phi2 = lat * lat;\n const phi4 = phi2 * phi2;\n const x = lng * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4)));\n const y = lat * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)));\n\n return {\n x: (x / Math.PI + 0.5) * 0.5,\n y: 1 - (y / Math.PI + 1) * 0.5,\n z: 0\n };\n }\n\n unproject(x: number, y: number): LngLat {\n // based on https://github.com/d3/d3-geo, MIT-licensed\n x = (2 * x - 0.5) * Math.PI;\n y = (2 * (1 - y) - 1) * Math.PI;\n const epsilon = 1e-6;\n let phi = y;\n let i = 25;\n let delta = 0;\n let phi2 = phi * phi;\n\n do {\n phi2 = phi * phi;\n const phi4 = phi2 * phi2;\n delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n phi = clamp(phi - delta, -maxPhi, maxPhi);\n } while (Math.abs(delta) > epsilon && --i > 0);\n\n phi2 = phi * phi;\n const lambda = x / (0.8707 + phi2 * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2))));\n\n const lng = clamp(radToDeg(lambda), -180, 180);\n const lat = radToDeg(phi);\n\n return new LngLat(lng, lat);\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {clamp, degToRad, radToDeg} from '../../util/util.js';\nimport {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectedPoint} from './projection.js';\n\nconst maxPhi = degToRad(MAX_MERCATOR_LATITUDE);\n\nexport default class WinkelTripel extends Projection {\n\n project(lng: number, lat: number): ProjectedPoint {\n lat = degToRad(lat);\n lng = degToRad(lng);\n const cosLat = Math.cos(lat);\n const twoOverPi = 2 / Math.PI;\n const alpha = Math.acos(cosLat * Math.cos(lng / 2));\n const sinAlphaOverAlpha = Math.sin(alpha) / alpha;\n const x = 0.5 * (lng * twoOverPi + (2 * cosLat * Math.sin(lng / 2)) / sinAlphaOverAlpha) || 0;\n const y = 0.5 * (lat + Math.sin(lat) / sinAlphaOverAlpha) || 0;\n return {\n x: (x / Math.PI + 0.5) * 0.5,\n y: 1 - (y / Math.PI + 1) * 0.5,\n z: 0\n };\n }\n\n unproject(x: number, y: number): LngLat {\n // based on https://github.com/d3/d3-geo-projection, MIT-licensed\n x = (2 * x - 0.5) * Math.PI;\n y = (2 * (1 - y) - 1) * Math.PI;\n let lambda = x;\n let phi = y;\n let i = 25;\n const epsilon = 1e-6;\n let dlambda = 0, dphi = 0;\n do {\n const cosphi = Math.cos(phi),\n sinphi = Math.sin(phi),\n sinphi2 = 2 * sinphi * cosphi,\n sin2phi = sinphi * sinphi,\n cos2phi = cosphi * cosphi,\n coslambda2 = Math.cos(lambda / 2),\n sinlambda2 = Math.sin(lambda / 2),\n sinlambda = 2 * coslambda2 * sinlambda2,\n sin2lambda2 = sinlambda2 * sinlambda2,\n C = 1 - cos2phi * coslambda2 * coslambda2,\n F = C ? 1 / C : 0,\n E = C ? Math.acos(cosphi * coslambda2) * Math.sqrt(1 / C) : 0,\n fx = 0.5 * (2 * E * cosphi * sinlambda2 + lambda * 2 / Math.PI) - x,\n fy = 0.5 * (E * sinphi + phi) - y,\n dxdlambda = 0.5 * F * (cos2phi * sin2lambda2 + E * cosphi * coslambda2 * sin2phi) + 1 / Math.PI,\n dxdphi = F * (sinlambda * sinphi2 / 4 - E * sinphi * sinlambda2),\n dydlambda = 0.125 * F * (sinphi2 * sinlambda2 - E * sinphi * cos2phi * sinlambda),\n dydphi = 0.5 * F * (sin2phi * coslambda2 + E * sin2lambda2 * cosphi) + 0.5,\n denominator = dxdphi * dydlambda - dydphi * dxdlambda;\n\n dlambda = (fy * dxdphi - fx * dydphi) / denominator;\n dphi = (fx * dydlambda - fy * dxdlambda) / denominator;\n lambda = clamp(lambda - dlambda, -Math.PI, Math.PI);\n phi = clamp(phi - dphi, -maxPhi, maxPhi);\n\n } while ((Math.abs(dlambda) > epsilon || Math.abs(dphi) > epsilon) && --i > 0);\n\n return new LngLat(radToDeg(lambda), radToDeg(phi));\n }\n}\n","// @flow\nimport LngLat from '../lng_lat.js';\nimport {clamp, degToRad, radToDeg} from '../../util/util.js';\nimport {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport Projection from './projection.js';\n\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {ProjectedPoint} from './projection.js';\n\nexport default class CylindricalEqualArea extends Projection {\n cosPhi: number;\n scale: number;\n\n constructor(options: ProjectionSpecification) {\n super(options);\n this.center = options.center || [0, 0];\n this.parallels = options.parallels || [0, 0];\n this.cosPhi = Math.max(0.01, Math.cos(degToRad(this.parallels[0])));\n // scale coordinates between 0 and 1 to avoid constraint issues\n this.scale = 1 / (2 * Math.max(Math.PI * this.cosPhi, 1 / this.cosPhi));\n this.wrap = true;\n this.supportsWorldCopies = true;\n }\n\n project(lng: number, lat: number): ProjectedPoint {\n const {scale, cosPhi} = this;\n const x = degToRad(lng) * cosPhi;\n const y = Math.sin(degToRad(lat)) / cosPhi;\n\n return {\n x: (x * scale) + 0.5,\n y: (-y * scale) + 0.5,\n z: 0\n };\n }\n\n unproject(x: number, y: number): LngLat {\n const {scale, cosPhi} = this;\n const x_ = (x - 0.5) / scale;\n const y_ = -(y - 0.5) / scale;\n const lng = clamp(radToDeg(x_) / cosPhi, -180, 180);\n const y2 = y_ * cosPhi;\n const y3 = Math.asin(clamp(y2, -1, 1));\n const lat = clamp(radToDeg(y3), -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n\n return new LngLat(lng, lat);\n }\n}\n","// @flow\nimport {mat4, vec3} from 'gl-matrix';\nimport EXTENT from '../../data/extent.js';\nimport LngLat from '../lng_lat.js';\nimport {degToRad} from '../../util/util.js';\nimport MercatorCoordinate, {\n lngFromMercatorX,\n latFromMercatorY,\n mercatorZfromAltitude,\n} from '../mercator_coordinate.js';\nimport Mercator from './mercator.js';\nimport Point from '@mapbox/point-geometry';\nimport {farthestPixelDistanceOnPlane, farthestPixelDistanceOnSphere} from './far_z.js';\nimport {number as interpolate} from '../../style-spec/util/interpolate.js';\nimport {\n GLOBE_METERS_TO_ECEF,\n GLOBE_SCALE_MATCH_LATITUDE,\n latLngToECEF,\n globeTileBounds,\n globeNormalizeECEF,\n globeDenormalizeECEF,\n globeECEFNormalizationScale,\n globeToMercatorTransition,\n globePointCoordinate\n} from './globe_util.js';\n\nimport type Transform from '../transform.js';\nimport type {ElevationScale} from './projection.js';\nimport type {Vec3} from 'gl-matrix';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type {CanonicalTileID, UnwrappedTileID} from '../../source/tile_id.js';\n\nexport default class Globe extends Mercator {\n\n constructor(options: ProjectionSpecification) {\n super(options);\n this.requiresDraping = true;\n this.supportsWorldCopies = false;\n this.supportsFog = true;\n this.zAxisUnit = \"pixels\";\n this.unsupportedLayers = ['debug', 'custom'];\n this.range = [3, 5];\n }\n\n projectTilePoint(x: number, y: number, id: CanonicalTileID): {x: number, y: number, z: number} {\n const tiles = Math.pow(2.0, id.z);\n const mx = (x / EXTENT + id.x) / tiles;\n const my = (y / EXTENT + id.y) / tiles;\n const lat = latFromMercatorY(my);\n const lng = lngFromMercatorX(mx);\n const pos = latLngToECEF(lat, lng);\n\n const bounds = globeTileBounds(id);\n const normalizationMatrix = globeNormalizeECEF(bounds);\n vec3.transformMat4(pos, pos, normalizationMatrix);\n\n return {x: pos[0], y: pos[1], z: pos[2]};\n }\n\n locationPoint(tr: Transform, lngLat: LngLat): Point {\n const pos = latLngToECEF(lngLat.lat, lngLat.lng);\n const up = vec3.normalize([], pos);\n\n const elevation = tr.elevation ?\n tr.elevation.getAtPointOrZero(tr.locationCoordinate(lngLat), tr._centerAltitude) :\n tr._centerAltitude;\n\n const upScale = mercatorZfromAltitude(1, 0) * EXTENT * elevation;\n vec3.scaleAndAdd(pos, pos, up, upScale);\n const matrix = mat4.identity(new Float64Array(16));\n mat4.multiply(matrix, tr.pixelMatrix, tr.globeMatrix);\n vec3.transformMat4(pos, pos, matrix);\n\n return new Point(pos[0], pos[1]);\n }\n\n pixelsPerMeter(lat: number, worldSize: number): number {\n return mercatorZfromAltitude(1, 0) * worldSize;\n }\n\n pixelSpaceConversion(lat: number, worldSize: number, interpolationT: number): number {\n // Using only the center latitude to determine scale causes the globe to rapidly change\n // size as you pan up and down. As you approach the pole, the globe's size approaches infinity.\n // This is because zoom levels are based on mercator.\n //\n // Instead, use a fixed reference latitude at lower zoom levels. And transition between\n // this latitude and the center's latitude as you zoom in. This is a compromise that\n // makes globe view more usable with existing camera parameters, styles and data.\n const referenceScale = mercatorZfromAltitude(1, GLOBE_SCALE_MATCH_LATITUDE) * worldSize;\n const centerScale = mercatorZfromAltitude(1, lat) * worldSize;\n const combinedScale = interpolate(referenceScale, centerScale, interpolationT);\n return this.pixelsPerMeter(lat, worldSize) / combinedScale;\n }\n\n createTileMatrix(tr: Transform, worldSize: number, id: UnwrappedTileID): Float64Array {\n const decode = globeDenormalizeECEF(globeTileBounds(id.canonical));\n return mat4.multiply(new Float64Array(16), tr.globeMatrix, decode);\n }\n\n createInversionMatrix(tr: Transform, id: CanonicalTileID): Float32Array {\n const {center} = tr;\n const matrix = mat4.identity(new Float64Array(16));\n const encode = globeNormalizeECEF(globeTileBounds(id));\n mat4.multiply(matrix, matrix, encode);\n mat4.rotateY(matrix, matrix, degToRad(center.lng));\n mat4.rotateX(matrix, matrix, degToRad(center.lat));\n mat4.scale(matrix, matrix, [tr._projectionScaler, tr._projectionScaler, 1.0]);\n return Float32Array.from(matrix);\n }\n\n pointCoordinate(tr: Transform, x: number, y: number, _: number): MercatorCoordinate {\n const coord = globePointCoordinate(tr, x, y, true);\n if (!coord) { return new MercatorCoordinate(0, 0); } // This won't happen, is here for Flow\n return coord;\n }\n\n pointCoordinate3D(tr: Transform, x: number, y: number): ?Vec3 {\n const coord = this.pointCoordinate(tr, x, y, 0);\n return [coord.x, coord.y, coord.z];\n }\n\n isPointAboveHorizon(tr: Transform, p: Point): boolean {\n const raycastOnGlobe = globePointCoordinate(tr, p.x, p.y, false);\n return !raycastOnGlobe;\n }\n\n farthestPixelDistance(tr: Transform): number {\n const pixelsPerMeter = this.pixelsPerMeter(tr.center.lat, tr.worldSize);\n const globePixelDistance = farthestPixelDistanceOnSphere(tr, pixelsPerMeter);\n const t = globeToMercatorTransition(tr.zoom);\n if (t > 0.0) {\n const mercatorPixelsPerMeter = mercatorZfromAltitude(1, tr.center.lat) * tr.worldSize;\n const mercatorPixelDistance = farthestPixelDistanceOnPlane(tr, mercatorPixelsPerMeter);\n const pixelRadius = tr.worldSize / (2.0 * Math.PI);\n const approxTileArcHalfAngle = Math.max(tr.width, tr.height) / tr.worldSize * Math.PI;\n const padding = pixelRadius * (1.0 - Math.cos(approxTileArcHalfAngle));\n\n // During transition to mercator we would like to keep\n // the far plane lower to ensure that geometries (e.g. circles) that are far away and are not supposed\n // to be rendered get culled out correctly. see https://github.com/mapbox/mapbox-gl-js/issues/11476\n // To achieve this we dampen the interpolation.\n return interpolate(globePixelDistance, mercatorPixelDistance + padding, Math.pow(t, 10.0));\n }\n return globePixelDistance;\n }\n\n upVector(id: CanonicalTileID, x: number, y: number): Vec3 {\n const tiles = 1 << id.z;\n const mercX = (x / EXTENT + id.x) / tiles;\n const mercY = (y / EXTENT + id.y) / tiles;\n return latLngToECEF(latFromMercatorY(mercY), lngFromMercatorX(mercX), 1.0);\n }\n\n upVectorScale(id: CanonicalTileID): ElevationScale {\n return {metersToTile: GLOBE_METERS_TO_ECEF * globeECEFNormalizationScale(globeTileBounds(id))};\n }\n}\n","// @flow\nimport Albers from './albers.js';\nimport EqualEarth from './equal_earth.js';\nimport Equirectangular from './equirectangular.js';\nimport LambertConformalConic from './lambert.js';\nimport Mercator from './mercator.js';\nimport NaturalEarth from './natural_earth.js';\nimport WinkelTripel from './winkel_tripel.js';\nimport CylindricalEqualArea from './cylindrical_equal_area.js';\nimport Globe from './globe.js';\n\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport type Projection from './projection.js';\n\nexport function getProjection(config: ProjectionSpecification): Projection {\n\n const parallels = config.parallels;\n const isDegenerateConic = parallels ? Math.abs(parallels[0] + parallels[1]) < 0.01 : false;\n\n switch (config.name) {\n case 'mercator':\n return new Mercator(config);\n case 'equirectangular':\n return new Equirectangular(config);\n case 'naturalEarth':\n return new NaturalEarth(config);\n case 'equalEarth':\n return new EqualEarth(config);\n case 'winkelTripel':\n return new WinkelTripel(config);\n case 'albers':\n return isDegenerateConic ? new CylindricalEqualArea(config) : new Albers(config);\n case 'lambertConformalConic':\n return isDegenerateConic ? new CylindricalEqualArea(config) : new LambertConformalConic(config);\n case 'globe':\n return new Globe(config);\n }\n\n throw new Error(`Invalid projection name: ${config.name}`);\n}\n\n","// @flow\n\nimport {symbolLayoutAttributes,\n symbolGlobeExtAttributes,\n collisionVertexAttributes,\n collisionVertexAttributesExt,\n collisionBoxLayout,\n dynamicLayoutAttributes\n} from './symbol_attributes.js';\n\nimport {SymbolLayoutArray,\n SymbolGlobeExtArray,\n SymbolDynamicLayoutArray,\n SymbolOpacityArray,\n CollisionBoxLayoutArray,\n CollisionVertexExtArray,\n CollisionVertexArray,\n PlacedSymbolArray,\n SymbolInstanceArray,\n GlyphOffsetArray,\n SymbolLineVertexArray\n} from '../array_types.js';\n\nimport ONE_EM from '../../symbol/one_em.js';\nimport * as symbolSize from '../../symbol/symbol_size.js';\nimport Point from '@mapbox/point-geometry';\nimport SegmentVector from '../segment.js';\nimport {ProgramConfigurationSet} from '../program_configuration.js';\nimport {TriangleIndexArray, LineIndexArray} from '../index_array_type.js';\nimport transformText from '../../symbol/transform_text.js';\nimport mergeLines from '../../symbol/mergelines.js';\nimport {allowsVerticalWritingMode, stringContainsRTLText} from '../../util/script_detection.js';\nimport {WritingMode} from '../../symbol/shaping.js';\nimport loadGeometry from '../load_geometry.js';\nimport toEvaluationFeature from '../evaluation_feature.js';\nimport mvt from '@mapbox/vector-tile';\nconst vectorTileFeatureTypes = mvt.VectorTileFeature.types;\nimport {verticalizedCharacterMap} from '../../util/verticalize_punctuation.js';\nimport Anchor from '../../symbol/anchor.js';\nimport {getSizeData} from '../../symbol/symbol_size.js';\nimport {MAX_PACKED_SIZE} from '../../symbol/symbol_layout.js';\nimport {register} from '../../util/web_worker_transfer.js';\nimport EvaluationParameters from '../../style/evaluation_parameters.js';\nimport Formatted from '../../style-spec/expression/types/formatted.js';\nimport ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\nimport {plugin as globalRTLTextPlugin, getRTLTextPluginStatus} from '../../source/rtl_text_plugin.js';\nimport {resamplePred} from '../../geo/projection/resample.js';\nimport {lngFromMercatorX, latFromMercatorY} from '../../geo/mercator_coordinate.js';\nimport {latLngToECEF} from '../../geo/projection/globe_util.js';\nimport type {ProjectionSpecification} from '../../style-spec/types.js';\nimport {getProjection} from '../../geo/projection/index.js';\nimport type Projection from '../../geo/projection/projection.js';\nimport {mat4, vec3} from 'gl-matrix';\nimport EXTENT from '../extent.js';\n\nimport type {CanonicalTileID, OverscaledTileID} from '../../source/tile_id.js';\nimport type {\n Bucket,\n BucketParameters,\n IndexedFeature,\n PopulateParameters\n} from '../bucket.js';\nimport type {CollisionBoxArray, CollisionBox, SymbolInstance} from '../array_types.js';\nimport type {StructArray, StructArrayMember} from '../../util/struct_array.js';\nimport SymbolStyleLayer from '../../style/style_layer/symbol_style_layer.js';\nimport type Context from '../../gl/context.js';\nimport type IndexBuffer from '../../gl/index_buffer.js';\nimport type VertexBuffer from '../../gl/vertex_buffer.js';\nimport type {SymbolQuad} from '../../symbol/quads.js';\nimport type {SizeData} from '../../symbol/symbol_size.js';\nimport type {FeatureStates} from '../../source/source_state.js';\nimport type {TileTransform} from '../../geo/projection/tile_transform.js';\nexport type SingleCollisionBox = {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n padding: number;\n projectedAnchorX: number;\n projectedAnchorY: number;\n projectedAnchorZ: number;\n tileAnchorX: number;\n tileAnchorY: number;\n elevation?: number;\n tileID?: OverscaledTileID;\n};\nimport type {Mat4, Vec3} from 'gl-matrix';\nimport type {SpritePositions} from '../../util/image.js';\n\nexport type CollisionArrays = {\n textBox?: SingleCollisionBox;\n verticalTextBox?: SingleCollisionBox;\n iconBox?: SingleCollisionBox;\n verticalIconBox?: SingleCollisionBox;\n textFeatureIndex?: number;\n verticalTextFeatureIndex?: number;\n iconFeatureIndex?: number;\n verticalIconFeatureIndex?: number;\n};\n\nexport type SymbolFeature = {|\n sortKey: number | void,\n text: Formatted | void,\n icon: ?ResolvedImage,\n index: number,\n sourceLayerIndex: number,\n geometry: Array<Array<Point>>,\n properties: Object,\n type: 'Point' | 'LineString' | 'Polygon',\n id?: any\n|};\n\nexport type SortKeyRange = {\n sortKey: number,\n symbolInstanceStart: number,\n symbolInstanceEnd: number\n};\n\ntype LineVertexRange = {|\n lineLength: number,\n lineStartIndex: number\n|};\n\n// Opacity arrays are frequently updated but don't contain a lot of information, so we pack them\n// tight. Each Uint32 is actually four duplicate Uint8s for the four corners of a glyph\n// 7 bits are for the current opacity, and the lowest bit is the target opacity\n\n// actually defined in symbol_attributes.js\n// const placementOpacityAttributes = [\n// { name: 'a_fade_opacity', components: 1, type: 'Uint32' }\n// ];\nconst shaderOpacityAttributes = [\n {name: 'a_fade_opacity', components: 1, type: 'Uint8', offset: 0}\n];\n\nfunction addVertex(array, tileAnchorX, tileAnchorY, ox, oy, tx, ty, sizeVertex, isSDF: boolean, pixelOffsetX, pixelOffsetY, minFontScaleX, minFontScaleY) {\n const aSizeX = sizeVertex ? Math.min(MAX_PACKED_SIZE, Math.round(sizeVertex[0])) : 0;\n const aSizeY = sizeVertex ? Math.min(MAX_PACKED_SIZE, Math.round(sizeVertex[1])) : 0;\n\n array.emplaceBack(\n // a_pos_offset\n tileAnchorX,\n tileAnchorY,\n Math.round(ox * 32),\n Math.round(oy * 32),\n\n // a_data\n tx, // x coordinate of symbol on glyph atlas texture\n ty, // y coordinate of symbol on glyph atlas texture\n (aSizeX << 1) + (isSDF ? 1 : 0),\n aSizeY,\n pixelOffsetX * 16,\n pixelOffsetY * 16,\n minFontScaleX * 256,\n minFontScaleY * 256\n );\n}\n\nfunction addGlobeVertex(array, projAnchorX, projAnchorY, projAnchorZ, normX, normY, normZ) {\n array.emplaceBack(\n // a_globe_anchor\n projAnchorX,\n projAnchorY,\n projAnchorZ,\n\n // a_globe_normal\n normX,\n normY,\n normZ\n );\n}\n\nfunction updateGlobeVertexNormal(array: SymbolGlobeExtArray, vertexIdx: number, normX: number, normY: number, normZ: number) {\n // Modify float32 array directly. 20 bytes per entry, 3xInt16 for position, 3xfloat32 for normal\n const offset = vertexIdx * 5 + 2;\n array.float32[offset + 0] = normX;\n array.float32[offset + 1] = normY;\n array.float32[offset + 2] = normZ;\n}\n\nfunction addDynamicAttributes(dynamicLayoutVertexArray: StructArray, x: number, y: number, z: number, angle: number) {\n dynamicLayoutVertexArray.emplaceBack(x, y, z, angle);\n dynamicLayoutVertexArray.emplaceBack(x, y, z, angle);\n dynamicLayoutVertexArray.emplaceBack(x, y, z, angle);\n dynamicLayoutVertexArray.emplaceBack(x, y, z, angle);\n}\n\nfunction containsRTLText(formattedText: Formatted): boolean {\n for (const section of formattedText.sections) {\n if (stringContainsRTLText(section.text)) {\n return true;\n }\n }\n return false;\n}\n\nexport class SymbolBuffers {\n layoutVertexArray: SymbolLayoutArray;\n layoutVertexBuffer: VertexBuffer;\n\n indexArray: TriangleIndexArray;\n indexBuffer: IndexBuffer;\n\n programConfigurations: ProgramConfigurationSet<SymbolStyleLayer>;\n segments: SegmentVector;\n\n dynamicLayoutVertexArray: SymbolDynamicLayoutArray;\n dynamicLayoutVertexBuffer: VertexBuffer;\n\n opacityVertexArray: SymbolOpacityArray;\n opacityVertexBuffer: VertexBuffer;\n\n globeExtVertexArray: SymbolGlobeExtArray;\n globeExtVertexBuffer: VertexBuffer;\n\n placedSymbolArray: PlacedSymbolArray;\n\n constructor(programConfigurations: ProgramConfigurationSet<SymbolStyleLayer>) {\n this.layoutVertexArray = new SymbolLayoutArray();\n this.indexArray = new TriangleIndexArray();\n this.programConfigurations = programConfigurations;\n this.segments = new SegmentVector();\n this.dynamicLayoutVertexArray = new SymbolDynamicLayoutArray();\n this.opacityVertexArray = new SymbolOpacityArray();\n this.placedSymbolArray = new PlacedSymbolArray();\n this.globeExtVertexArray = new SymbolGlobeExtArray();\n }\n\n isEmpty(): boolean {\n return this.layoutVertexArray.length === 0 &&\n this.indexArray.length === 0 &&\n this.dynamicLayoutVertexArray.length === 0 &&\n this.opacityVertexArray.length === 0;\n }\n\n upload(context: Context, dynamicIndexBuffer: boolean, upload?: boolean, update?: boolean) {\n if (this.isEmpty()) {\n return;\n }\n\n if (upload) {\n this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, symbolLayoutAttributes.members);\n this.indexBuffer = context.createIndexBuffer(this.indexArray, dynamicIndexBuffer);\n this.dynamicLayoutVertexBuffer = context.createVertexBuffer(this.dynamicLayoutVertexArray, dynamicLayoutAttributes.members, true);\n this.opacityVertexBuffer = context.createVertexBuffer(this.opacityVertexArray, shaderOpacityAttributes, true);\n if (this.globeExtVertexArray.length > 0) {\n this.globeExtVertexBuffer = context.createVertexBuffer(this.globeExtVertexArray, symbolGlobeExtAttributes.members, true);\n }\n // This is a performance hack so that we can write to opacityVertexArray with uint32s\n // even though the shaders read uint8s\n this.opacityVertexBuffer.itemSize = 1;\n }\n if (upload || update) {\n this.programConfigurations.upload(context);\n }\n }\n\n destroy() {\n if (!this.layoutVertexBuffer) return;\n this.layoutVertexBuffer.destroy();\n this.indexBuffer.destroy();\n this.programConfigurations.destroy();\n this.segments.destroy();\n this.dynamicLayoutVertexBuffer.destroy();\n this.opacityVertexBuffer.destroy();\n if (this.globeExtVertexBuffer) {\n this.globeExtVertexBuffer.destroy();\n }\n }\n}\n\nregister(SymbolBuffers, 'SymbolBuffers');\n\nclass CollisionBuffers {\n layoutVertexArray: StructArray;\n layoutAttributes: Array<StructArrayMember>;\n layoutVertexBuffer: VertexBuffer;\n\n indexArray: TriangleIndexArray | LineIndexArray;\n indexBuffer: IndexBuffer;\n\n segments: SegmentVector;\n\n collisionVertexArray: CollisionVertexArray;\n collisionVertexBuffer: VertexBuffer;\n\n collisionVertexArrayExt: CollisionVertexExtArray;\n collisionVertexBufferExt: VertexBuffer;\n\n constructor(LayoutArray: Class<StructArray>,\n layoutAttributes: Array<StructArrayMember>,\n IndexArray: Class<TriangleIndexArray | LineIndexArray>) {\n this.layoutVertexArray = new LayoutArray();\n this.layoutAttributes = layoutAttributes;\n this.indexArray = new IndexArray();\n this.segments = new SegmentVector();\n this.collisionVertexArray = new CollisionVertexArray();\n this.collisionVertexArrayExt = new CollisionVertexExtArray();\n }\n\n upload(context: Context) {\n this.layoutVertexBuffer = context.createVertexBuffer(this.layoutVertexArray, this.layoutAttributes);\n this.indexBuffer = context.createIndexBuffer(this.indexArray);\n this.collisionVertexBuffer = context.createVertexBuffer(this.collisionVertexArray, collisionVertexAttributes.members, true);\n this.collisionVertexBufferExt = context.createVertexBuffer(this.collisionVertexArrayExt, collisionVertexAttributesExt.members, true);\n }\n\n destroy() {\n if (!this.layoutVertexBuffer) return;\n this.layoutVertexBuffer.destroy();\n this.indexBuffer.destroy();\n this.segments.destroy();\n this.collisionVertexBuffer.destroy();\n this.collisionVertexBufferExt.destroy();\n }\n}\n\nregister(CollisionBuffers, 'CollisionBuffers');\n\n/**\n * Unlike other buckets, which simply implement #addFeature with type-specific\n * logic for (essentially) triangulating feature geometries, SymbolBucket\n * requires specialized behavior:\n *\n * 1. WorkerTile#parse(), the logical owner of the bucket creation process,\n * calls SymbolBucket#populate(), which resolves text and icon tokens on\n * each feature, adds each glyphs and symbols needed to the passed-in\n * collections options.glyphDependencies and options.iconDependencies, and\n * stores the feature data for use in subsequent step (this.features).\n *\n * 2. WorkerTile asynchronously requests from the main thread all of the glyphs\n * and icons needed (by this bucket and any others). When glyphs and icons\n * have been received, the WorkerTile creates a CollisionIndex and invokes:\n *\n * 3. performSymbolLayout(bucket, stacks, icons) perform texts shaping and\n * layout on a Symbol Bucket. This step populates:\n * `this.symbolInstances`: metadata on generated symbols\n * `collisionBoxArray`: collision data for use by foreground\n * `this.text`: SymbolBuffers for text symbols\n * `this.icons`: SymbolBuffers for icons\n * `this.iconCollisionBox`: Debug SymbolBuffers for icon collision boxes\n * `this.textCollisionBox`: Debug SymbolBuffers for text collision boxes\n * The results are sent to the foreground for rendering\n *\n * 4. performSymbolPlacement(bucket, collisionIndex) is run on the foreground,\n * and uses the CollisionIndex along with current camera settings to determine\n * which symbols can actually show on the map. Collided symbols are hidden\n * using a dynamic \"OpacityVertexArray\".\n *\n * @private\n */\nclass SymbolBucket implements Bucket {\n static MAX_GLYPHS: number;\n static addDynamicAttributes: typeof addDynamicAttributes;\n\n collisionBoxArray: CollisionBoxArray;\n zoom: number;\n overscaling: number;\n layers: Array<SymbolStyleLayer>;\n layerIds: Array<string>;\n stateDependentLayers: Array<SymbolStyleLayer>;\n stateDependentLayerIds: Array<string>;\n\n index: number;\n sdfIcons: boolean;\n iconsInText: boolean;\n iconsNeedLinear: boolean;\n bucketInstanceId: number;\n justReloaded: boolean;\n hasPattern: boolean;\n fullyClipped: boolean;\n\n textSizeData: SizeData;\n iconSizeData: SizeData;\n\n glyphOffsetArray: GlyphOffsetArray;\n lineVertexArray: SymbolLineVertexArray;\n features: Array<SymbolFeature>;\n symbolInstances: SymbolInstanceArray;\n collisionArrays: Array<CollisionArrays>;\n sortKeyRanges: Array<SortKeyRange>;\n pixelRatio: number;\n tilePixelRatio: number;\n compareText: {[_: string]: Array<Point>};\n fadeStartTime: number;\n sortFeaturesByKey: boolean;\n sortFeaturesByY: boolean;\n canOverlap: boolean;\n sortedAngle: number;\n featureSortOrder: Array<number>;\n\n collisionCircleArray: Array<number>;\n placementInvProjMatrix: Mat4;\n placementViewportMatrix: Mat4;\n\n text: SymbolBuffers;\n icon: SymbolBuffers;\n textCollisionBox: CollisionBuffers;\n iconCollisionBox: CollisionBuffers;\n uploaded: boolean;\n sourceLayerIndex: number;\n sourceID: string;\n symbolInstanceIndexes: Array<number>;\n writingModes: Array<number>;\n allowVerticalPlacement: boolean;\n hasRTLText: boolean;\n projection: ProjectionSpecification;\n projectionInstance: ?Projection;\n\n constructor(options: BucketParameters<SymbolStyleLayer>) {\n this.collisionBoxArray = options.collisionBoxArray;\n this.zoom = options.zoom;\n this.overscaling = options.overscaling;\n this.layers = options.layers;\n this.layerIds = this.layers.map(layer => layer.id);\n this.index = options.index;\n this.pixelRatio = options.pixelRatio;\n this.sourceLayerIndex = options.sourceLayerIndex;\n this.hasPattern = false;\n this.hasRTLText = false;\n this.fullyClipped = false;\n this.sortKeyRanges = [];\n\n this.collisionCircleArray = [];\n this.placementInvProjMatrix = mat4.identity([]);\n this.placementViewportMatrix = mat4.identity([]);\n\n const layer = this.layers[0];\n const unevaluatedLayoutValues = layer._unevaluatedLayout._values;\n\n this.textSizeData = getSizeData(this.zoom, unevaluatedLayoutValues['text-size']);\n this.iconSizeData = getSizeData(this.zoom, unevaluatedLayoutValues['icon-size']);\n\n const layout = this.layers[0].layout;\n const sortKey = layout.get('symbol-sort-key');\n const zOrder = layout.get('symbol-z-order');\n this.canOverlap =\n layout.get('text-allow-overlap') ||\n layout.get('icon-allow-overlap') ||\n layout.get('text-ignore-placement') ||\n layout.get('icon-ignore-placement');\n this.sortFeaturesByKey = zOrder !== 'viewport-y' && sortKey.constantOr(1) !== undefined;\n const zOrderByViewportY = zOrder === 'viewport-y' || (zOrder === 'auto' && !this.sortFeaturesByKey);\n this.sortFeaturesByY = zOrderByViewportY && this.canOverlap;\n\n this.writingModes = layout.get('text-writing-mode').map(wm => WritingMode[wm]);\n\n this.stateDependentLayerIds = this.layers.filter((l) => l.isStateDependent()).map((l) => l.id);\n\n this.sourceID = options.sourceID;\n this.projection = options.projection;\n }\n\n createArrays() {\n this.text = new SymbolBuffers(new ProgramConfigurationSet(this.layers, this.zoom, property => /^text/.test(property)));\n this.icon = new SymbolBuffers(new ProgramConfigurationSet(this.layers, this.zoom, property => /^icon/.test(property)));\n\n this.glyphOffsetArray = new GlyphOffsetArray();\n this.lineVertexArray = new SymbolLineVertexArray();\n this.symbolInstances = new SymbolInstanceArray();\n }\n\n calculateGlyphDependencies(text: string, stack: {[_: number]: boolean}, textAlongLine: boolean, allowVerticalPlacement: boolean, doesAllowVerticalWritingMode: boolean) {\n for (let i = 0; i < text.length; i++) {\n stack[text.charCodeAt(i)] = true;\n if (allowVerticalPlacement && doesAllowVerticalWritingMode) {\n const verticalChar = verticalizedCharacterMap[text.charAt(i)];\n if (verticalChar) {\n stack[verticalChar.charCodeAt(0)] = true;\n }\n }\n }\n }\n\n populate(features: Array<IndexedFeature>, options: PopulateParameters, canonical: CanonicalTileID, tileTransform: TileTransform) {\n const layer = this.layers[0];\n const layout = layer.layout;\n const isGlobe = this.projection.name === 'globe';\n\n const textFont = layout.get('text-font');\n const textField = layout.get('text-field');\n const iconImage = layout.get('icon-image');\n const hasText =\n (textField.value.kind !== 'constant' ||\n (textField.value.value instanceof Formatted && !textField.value.value.isEmpty()) ||\n textField.value.value.toString().length > 0) &&\n (textFont.value.kind !== 'constant' || textFont.value.value.length > 0);\n // we should always resolve the icon-image value if the property was defined in the style\n // this allows us to fire the styleimagemissing event if image evaluation returns null\n // the only way to distinguish between null returned from a coalesce statement with no valid images\n // and null returned because icon-image wasn't defined is to check whether or not iconImage.parameters is an empty object\n const hasIcon = iconImage.value.kind !== 'constant' || !!iconImage.value.value || Object.keys(iconImage.parameters).length > 0;\n const symbolSortKey = layout.get('symbol-sort-key');\n\n this.features = [];\n\n if (!hasText && !hasIcon) {\n return;\n }\n\n const icons = options.iconDependencies;\n const stacks = options.glyphDependencies;\n const availableImages = options.availableImages;\n const globalProperties = new EvaluationParameters(this.zoom);\n\n for (const {feature, id, index, sourceLayerIndex} of features) {\n\n const needGeometry = layer._featureFilter.needGeometry;\n const evaluationFeature = toEvaluationFeature(feature, needGeometry);\n if (!layer._featureFilter.filter(globalProperties, evaluationFeature, canonical)) {\n continue;\n }\n\n if (!needGeometry) evaluationFeature.geometry = loadGeometry(feature, canonical, tileTransform);\n\n if (isGlobe && feature.type !== 1 && canonical.z <= 5) {\n // Resample long lines and polygons in globe view so that their length wont exceed ~0.19 radians (360/32 degrees).\n // Otherwise lines could clip through the globe as the resolution is not enough to represent curved paths.\n // The threshold value follows subdivision size used with fill extrusions\n const geom = evaluationFeature.geometry;\n const tiles = 1 << canonical.z;\n const mx = canonical.x;\n const my = canonical.y;\n\n // cos(11.25 degrees) = 0.98078528056\n const cosAngleThreshold = 0.98078528056;\n\n for (let i = 0; i < geom.length; i++) {\n geom[i] = resamplePred(\n geom[i],\n p => p,\n (a, b) => {\n const v0 = latLngToECEF(latFromMercatorY((a.y / EXTENT + my) / tiles), lngFromMercatorX((a.x / EXTENT + mx) / tiles), 1);\n const v1 = latLngToECEF(latFromMercatorY((b.y / EXTENT + my) / tiles), lngFromMercatorX((b.x / EXTENT + mx) / tiles), 1);\n return vec3.dot(v0, v1) < cosAngleThreshold;\n });\n }\n }\n\n let text: Formatted | void;\n if (hasText) {\n // Expression evaluation will automatically coerce to Formatted\n // but plain string token evaluation skips that pathway so do the\n // conversion here.\n const resolvedTokens = layer.getValueAndResolveTokens('text-field', evaluationFeature, canonical, availableImages);\n const formattedText = Formatted.factory(resolvedTokens);\n if (containsRTLText(formattedText)) {\n this.hasRTLText = true;\n }\n if (\n !this.hasRTLText || // non-rtl text so can proceed safely\n getRTLTextPluginStatus() === 'unavailable' || // We don't intend to lazy-load the rtl text plugin, so proceed with incorrect shaping\n (this.hasRTLText && globalRTLTextPlugin.isParsed()) // Use the rtlText plugin to shape text\n ) {\n text = transformText(formattedText, layer, evaluationFeature);\n }\n }\n\n let icon: ?ResolvedImage;\n if (hasIcon) {\n // Expression evaluation will automatically coerce to Image\n // but plain string token evaluation skips that pathway so do the\n // conversion here.\n const resolvedTokens = layer.getValueAndResolveTokens('icon-image', evaluationFeature, canonical, availableImages);\n if (resolvedTokens instanceof ResolvedImage) {\n icon = resolvedTokens;\n } else {\n icon = ResolvedImage.fromString(resolvedTokens);\n }\n }\n\n if (!text && !icon) {\n continue;\n }\n const sortKey = this.sortFeaturesByKey ?\n symbolSortKey.evaluate(evaluationFeature, {}, canonical) :\n undefined;\n\n const symbolFeature: SymbolFeature = {\n id,\n text,\n icon,\n index,\n sourceLayerIndex,\n geometry: evaluationFeature.geometry,\n properties: feature.properties,\n type: vectorTileFeatureTypes[feature.type],\n sortKey\n };\n this.features.push(symbolFeature);\n\n if (icon) {\n icons[icon.name] = true;\n }\n\n if (text) {\n const fontStack = textFont.evaluate(evaluationFeature, {}, canonical).join(',');\n const textAlongLine = layout.get('text-rotation-alignment') === 'map' && layout.get('symbol-placement') !== 'point';\n this.allowVerticalPlacement = this.writingModes && this.writingModes.indexOf(WritingMode.vertical) >= 0;\n for (const section of text.sections) {\n if (!section.image) {\n const doesAllowVerticalWritingMode = allowsVerticalWritingMode(text.toString());\n const sectionFont = section.fontStack || fontStack;\n const sectionStack = stacks[sectionFont] = stacks[sectionFont] || {};\n this.calculateGlyphDependencies(section.text, sectionStack, textAlongLine, this.allowVerticalPlacement, doesAllowVerticalWritingMode);\n } else {\n // Add section image to the list of dependencies.\n icons[section.image.name] = true;\n }\n }\n }\n }\n\n if (layout.get('symbol-placement') === 'line') {\n // Merge adjacent lines with the same text to improve labelling.\n // It's better to place labels on one long line than on many short segments.\n this.features = mergeLines(this.features);\n }\n\n if (this.sortFeaturesByKey) {\n this.features.sort((a, b) => {\n // a.sortKey is always a number when sortFeaturesByKey is true\n return ((a.sortKey: any): number) - ((b.sortKey: any): number);\n });\n }\n }\n\n update(states: FeatureStates, vtLayer: VectorTileLayer, availableImages: Array<string>, imagePositions: SpritePositions) {\n if (!this.stateDependentLayers.length) return;\n this.text.programConfigurations.updatePaintArrays(states, vtLayer, this.layers, availableImages, imagePositions);\n this.icon.programConfigurations.updatePaintArrays(states, vtLayer, this.layers, availableImages, imagePositions);\n }\n\n isEmpty(): boolean {\n // When the bucket encounters only rtl-text but the plugin isn't loaded, no symbol instances will be created.\n // In order for the bucket to be serialized, and not discarded as an empty bucket both checks are necessary.\n return this.symbolInstances.length === 0 && !this.hasRTLText;\n }\n\n uploadPending(): boolean {\n return !this.uploaded || this.text.programConfigurations.needsUpload || this.icon.programConfigurations.needsUpload;\n }\n\n upload(context: Context) {\n if (!this.uploaded && this.hasDebugData()) {\n this.textCollisionBox.upload(context);\n this.iconCollisionBox.upload(context);\n }\n this.text.upload(context, this.sortFeaturesByY, !this.uploaded, this.text.programConfigurations.needsUpload);\n this.icon.upload(context, this.sortFeaturesByY, !this.uploaded, this.icon.programConfigurations.needsUpload);\n this.uploaded = true;\n }\n\n destroyDebugData() {\n this.textCollisionBox.destroy();\n this.iconCollisionBox.destroy();\n }\n\n getProjection(): Projection {\n if (!this.projectionInstance) {\n this.projectionInstance = getProjection(this.projection);\n }\n return this.projectionInstance;\n }\n\n destroy() {\n this.text.destroy();\n this.icon.destroy();\n\n if (this.hasDebugData()) {\n this.destroyDebugData();\n }\n }\n\n addToLineVertexArray(anchor: Anchor, line: any): LineVertexRange {\n const lineStartIndex = this.lineVertexArray.length;\n const segment = anchor.segment;\n if (segment !== undefined) {\n let sumForwardLength = anchor.dist(line[segment + 1]);\n let sumBackwardLength = anchor.dist(line[segment]);\n const vertices = {};\n for (let i = segment + 1; i < line.length; i++) {\n vertices[i] = {x: line[i].x, y: line[i].y, tileUnitDistanceFromAnchor: sumForwardLength};\n if (i < line.length - 1) {\n sumForwardLength += line[i + 1].dist(line[i]);\n }\n }\n for (let i = segment || 0; i >= 0; i--) {\n vertices[i] = {x: line[i].x, y: line[i].y, tileUnitDistanceFromAnchor: sumBackwardLength};\n if (i > 0) {\n sumBackwardLength += line[i - 1].dist(line[i]);\n }\n }\n for (let i = 0; i < line.length; i++) {\n const vertex = vertices[i];\n this.lineVertexArray.emplaceBack(vertex.x, vertex.y, vertex.tileUnitDistanceFromAnchor);\n }\n }\n return {\n lineStartIndex,\n lineLength: this.lineVertexArray.length - lineStartIndex\n };\n }\n\n addSymbols(arrays: SymbolBuffers,\n quads: Array<SymbolQuad>,\n sizeVertex: any,\n lineOffset: [number, number],\n alongLine: boolean,\n feature: SymbolFeature,\n writingMode: any,\n globe: ?{ anchor: Anchor, up: Vec3 },\n tileAnchor: Anchor,\n lineStartIndex: number,\n lineLength: number,\n associatedIconIndex: number,\n availableImages: Array<string>,\n canonical: CanonicalTileID) {\n const indexArray = arrays.indexArray;\n const layoutVertexArray = arrays.layoutVertexArray;\n const globeExtVertexArray = arrays.globeExtVertexArray;\n\n const segment = arrays.segments.prepareSegment(4 * quads.length, layoutVertexArray, indexArray, this.canOverlap ? feature.sortKey : undefined);\n const glyphOffsetArrayStart = this.glyphOffsetArray.length;\n const vertexStartIndex = segment.vertexLength;\n\n const angle = (this.allowVerticalPlacement && writingMode === WritingMode.vertical) ? Math.PI / 2 : 0;\n\n const sections = feature.text && feature.text.sections;\n\n for (let i = 0; i < quads.length; i++) {\n const {tl, tr, bl, br, tex, pixelOffsetTL, pixelOffsetBR, minFontScaleX, minFontScaleY, glyphOffset, isSDF, sectionIndex} = quads[i];\n const index = segment.vertexLength;\n\n const y = glyphOffset[1];\n addVertex(layoutVertexArray, tileAnchor.x, tileAnchor.y, tl.x, y + tl.y, tex.x, tex.y, sizeVertex, isSDF, pixelOffsetTL.x, pixelOffsetTL.y, minFontScaleX, minFontScaleY);\n addVertex(layoutVertexArray, tileAnchor.x, tileAnchor.y, tr.x, y + tr.y, tex.x + tex.w, tex.y, sizeVertex, isSDF, pixelOffsetBR.x, pixelOffsetTL.y, minFontScaleX, minFontScaleY);\n addVertex(layoutVertexArray, tileAnchor.x, tileAnchor.y, bl.x, y + bl.y, tex.x, tex.y + tex.h, sizeVertex, isSDF, pixelOffsetTL.x, pixelOffsetBR.y, minFontScaleX, minFontScaleY);\n addVertex(layoutVertexArray, tileAnchor.x, tileAnchor.y, br.x, y + br.y, tex.x + tex.w, tex.y + tex.h, sizeVertex, isSDF, pixelOffsetBR.x, pixelOffsetBR.y, minFontScaleX, minFontScaleY);\n\n if (globe) {\n const globeAnchor = globe.anchor;\n const up = globe.up;\n addGlobeVertex(globeExtVertexArray, globeAnchor.x, globeAnchor.y, globeAnchor.z, up[0], up[1], up[2]);\n addGlobeVertex(globeExtVertexArray, globeAnchor.x, globeAnchor.y, globeAnchor.z, up[0], up[1], up[2]);\n addGlobeVertex(globeExtVertexArray, globeAnchor.x, globeAnchor.y, globeAnchor.z, up[0], up[1], up[2]);\n addGlobeVertex(globeExtVertexArray, globeAnchor.x, globeAnchor.y, globeAnchor.z, up[0], up[1], up[2]);\n\n addDynamicAttributes(arrays.dynamicLayoutVertexArray, globeAnchor.x, globeAnchor.y, globeAnchor.z, angle);\n } else {\n addDynamicAttributes(arrays.dynamicLayoutVertexArray, tileAnchor.x, tileAnchor.y, tileAnchor.z, angle);\n }\n\n indexArray.emplaceBack(index, index + 1, index + 2);\n indexArray.emplaceBack(index + 1, index + 2, index + 3);\n\n segment.vertexLength += 4;\n segment.primitiveLength += 2;\n\n this.glyphOffsetArray.emplaceBack(glyphOffset[0]);\n\n if (i === quads.length - 1 || sectionIndex !== quads[i + 1].sectionIndex) {\n arrays.programConfigurations.populatePaintArrays(layoutVertexArray.length, feature, feature.index, {}, availableImages, canonical, sections && sections[sectionIndex]);\n }\n }\n\n const projectedAnchor = globe ? globe.anchor : tileAnchor;\n\n arrays.placedSymbolArray.emplaceBack(projectedAnchor.x, projectedAnchor.y, projectedAnchor.z, tileAnchor.x, tileAnchor.y,\n glyphOffsetArrayStart, this.glyphOffsetArray.length - glyphOffsetArrayStart, vertexStartIndex,\n lineStartIndex, lineLength, (tileAnchor.segment: any),\n sizeVertex ? sizeVertex[0] : 0, sizeVertex ? sizeVertex[1] : 0,\n lineOffset[0], lineOffset[1],\n writingMode,\n // placedOrientation is null initially; will be updated to horizontal(1)/vertical(2) if placed\n 0,\n (false: any),\n // The crossTileID is only filled/used on the foreground for dynamic text anchors\n 0,\n associatedIconIndex,\n // flipState is unknown initially; will be updated to flipRequired(1)/flipNotRequired(2) during line label reprojection\n 0\n );\n }\n\n _commitLayoutVertex(array: StructArray, boxTileAnchorX: number, boxTileAnchorY: number, boxTileAnchorZ: number, tileAnchorX: number, tileAnchorY: number, extrude: Point) {\n array.emplaceBack(\n // pos\n boxTileAnchorX,\n boxTileAnchorY,\n boxTileAnchorZ,\n // a_anchor_pos\n tileAnchorX,\n tileAnchorY,\n // extrude\n Math.round(extrude.x),\n Math.round(extrude.y));\n }\n\n _addCollisionDebugVertices(box: CollisionBox, scale: number, arrays: CollisionBuffers, boxTileAnchorX: number, boxTileAnchorY: number, boxTileAnchorZ: number, symbolInstance: SymbolInstance) {\n const segment = arrays.segments.prepareSegment(4, arrays.layoutVertexArray, arrays.indexArray);\n const index = segment.vertexLength;\n const symbolTileAnchorX = symbolInstance.tileAnchorX;\n const symbolTileAnchorY = symbolInstance.tileAnchorY;\n\n for (let i = 0; i < 4; i++) {\n arrays.collisionVertexArray.emplaceBack(0, 0, 0, 0);\n }\n\n arrays.collisionVertexArrayExt.emplaceBack(scale, -box.padding, -box.padding);\n arrays.collisionVertexArrayExt.emplaceBack(scale, box.padding, -box.padding);\n arrays.collisionVertexArrayExt.emplaceBack(scale, box.padding, box.padding);\n arrays.collisionVertexArrayExt.emplaceBack(scale, -box.padding, box.padding);\n\n this._commitLayoutVertex(arrays.layoutVertexArray, boxTileAnchorX, boxTileAnchorY, boxTileAnchorZ, symbolTileAnchorX, symbolTileAnchorY, new Point(box.x1, box.y1));\n this._commitLayoutVertex(arrays.layoutVertexArray, boxTileAnchorX, boxTileAnchorY, boxTileAnchorZ, symbolTileAnchorX, symbolTileAnchorY, new Point(box.x2, box.y1));\n this._commitLayoutVertex(arrays.layoutVertexArray, boxTileAnchorX, boxTileAnchorY, boxTileAnchorZ, symbolTileAnchorX, symbolTileAnchorY, new Point(box.x2, box.y2));\n this._commitLayoutVertex(arrays.layoutVertexArray, boxTileAnchorX, boxTileAnchorY, boxTileAnchorZ, symbolTileAnchorX, symbolTileAnchorY, new Point(box.x1, box.y2));\n\n segment.vertexLength += 4;\n\n const indexArray: LineIndexArray = (arrays.indexArray: any);\n indexArray.emplaceBack(index, index + 1);\n indexArray.emplaceBack(index + 1, index + 2);\n indexArray.emplaceBack(index + 2, index + 3);\n indexArray.emplaceBack(index + 3, index);\n\n segment.primitiveLength += 4;\n }\n\n _addTextDebugCollisionBoxes(size: any, zoom: number, collisionBoxArray: CollisionBoxArray, startIndex: number, endIndex: number, instance: SymbolInstance) {\n for (let b = startIndex; b < endIndex; b++) {\n const box: CollisionBox = (collisionBoxArray.get(b): any);\n const scale = this.getSymbolInstanceTextSize(size, instance, zoom, b);\n\n this._addCollisionDebugVertices(box, scale, this.textCollisionBox, box.projectedAnchorX, box.projectedAnchorY, box.projectedAnchorZ, instance);\n }\n }\n\n _addIconDebugCollisionBoxes(size: any, zoom: number, collisionBoxArray: CollisionBoxArray, startIndex: number, endIndex: number, instance: SymbolInstance) {\n for (let b = startIndex; b < endIndex; b++) {\n const box: CollisionBox = (collisionBoxArray.get(b): any);\n const scale = this.getSymbolInstanceIconSize(size, zoom, b);\n\n this._addCollisionDebugVertices(box, scale, this.iconCollisionBox, box.projectedAnchorX, box.projectedAnchorY, box.projectedAnchorZ, instance);\n }\n }\n\n generateCollisionDebugBuffers(zoom: number, collisionBoxArray: CollisionBoxArray) {\n if (this.hasDebugData()) {\n this.destroyDebugData();\n }\n\n this.textCollisionBox = new CollisionBuffers(CollisionBoxLayoutArray, collisionBoxLayout.members, LineIndexArray);\n this.iconCollisionBox = new CollisionBuffers(CollisionBoxLayoutArray, collisionBoxLayout.members, LineIndexArray);\n\n const iconSize = symbolSize.evaluateSizeForZoom(this.iconSizeData, zoom);\n const textSize = symbolSize.evaluateSizeForZoom(this.textSizeData, zoom);\n\n for (let i = 0; i < this.symbolInstances.length; i++) {\n const symbolInstance = this.symbolInstances.get(i);\n this._addTextDebugCollisionBoxes(textSize, zoom, collisionBoxArray, symbolInstance.textBoxStartIndex, symbolInstance.textBoxEndIndex, symbolInstance);\n this._addTextDebugCollisionBoxes(textSize, zoom, collisionBoxArray, symbolInstance.verticalTextBoxStartIndex, symbolInstance.verticalTextBoxEndIndex, symbolInstance);\n this._addIconDebugCollisionBoxes(iconSize, zoom, collisionBoxArray, symbolInstance.iconBoxStartIndex, symbolInstance.iconBoxEndIndex, symbolInstance);\n this._addIconDebugCollisionBoxes(iconSize, zoom, collisionBoxArray, symbolInstance.verticalIconBoxStartIndex, symbolInstance.verticalIconBoxEndIndex, symbolInstance);\n }\n }\n\n getSymbolInstanceTextSize(textSize: any, instance: SymbolInstance, zoom: number, boxIndex: number): number {\n const symbolIndex = instance.rightJustifiedTextSymbolIndex >= 0 ?\n instance.rightJustifiedTextSymbolIndex : instance.centerJustifiedTextSymbolIndex >= 0 ?\n instance.centerJustifiedTextSymbolIndex : instance.leftJustifiedTextSymbolIndex >= 0 ?\n instance.leftJustifiedTextSymbolIndex : instance.verticalPlacedTextSymbolIndex >= 0 ?\n instance.verticalPlacedTextSymbolIndex : boxIndex;\n\n const symbol: any = this.text.placedSymbolArray.get(symbolIndex);\n const featureSize = symbolSize.evaluateSizeForFeature(this.textSizeData, textSize, symbol) / ONE_EM;\n\n return this.tilePixelRatio * featureSize;\n }\n\n getSymbolInstanceIconSize(iconSize: any, zoom: number, index: number): number {\n const symbol: any = this.icon.placedSymbolArray.get(index);\n const featureSize = symbolSize.evaluateSizeForFeature(this.iconSizeData, iconSize, symbol);\n\n return this.tilePixelRatio * featureSize;\n }\n\n _commitDebugCollisionVertexUpdate(array: StructArray, scale: number, padding: number) {\n array.emplaceBack(scale, -padding, -padding);\n array.emplaceBack(scale, padding, -padding);\n array.emplaceBack(scale, padding, padding);\n array.emplaceBack(scale, -padding, padding);\n }\n\n _updateTextDebugCollisionBoxes(size: any, zoom: number, collisionBoxArray: CollisionBoxArray, startIndex: number, endIndex: number, instance: SymbolInstance) {\n for (let b = startIndex; b < endIndex; b++) {\n const box: CollisionBox = (collisionBoxArray.get(b): any);\n const scale = this.getSymbolInstanceTextSize(size, instance, zoom, b);\n const array = this.textCollisionBox.collisionVertexArrayExt;\n this._commitDebugCollisionVertexUpdate(array, scale, box.padding);\n }\n }\n\n _updateIconDebugCollisionBoxes(size: any, zoom: number, collisionBoxArray: CollisionBoxArray, startIndex: number, endIndex: number) {\n for (let b = startIndex; b < endIndex; b++) {\n const box: CollisionBox = (collisionBoxArray.get(b): any);\n const scale = this.getSymbolInstanceIconSize(size, zoom, b);\n const array = this.iconCollisionBox.collisionVertexArrayExt;\n this._commitDebugCollisionVertexUpdate(array, scale, box.padding);\n }\n }\n\n updateCollisionDebugBuffers(zoom: number, collisionBoxArray: CollisionBoxArray) {\n if (!this.hasDebugData()) {\n return;\n }\n\n if (this.hasTextCollisionBoxData()) this.textCollisionBox.collisionVertexArrayExt.clear();\n if (this.hasIconCollisionBoxData()) this.iconCollisionBox.collisionVertexArrayExt.clear();\n\n const iconSize = symbolSize.evaluateSizeForZoom(this.iconSizeData, zoom);\n const textSize = symbolSize.evaluateSizeForZoom(this.textSizeData, zoom);\n\n for (let i = 0; i < this.symbolInstances.length; i++) {\n const symbolInstance = this.symbolInstances.get(i);\n this._updateTextDebugCollisionBoxes(textSize, zoom, collisionBoxArray, symbolInstance.textBoxStartIndex, symbolInstance.textBoxEndIndex, symbolInstance);\n this._updateTextDebugCollisionBoxes(textSize, zoom, collisionBoxArray, symbolInstance.verticalTextBoxStartIndex, symbolInstance.verticalTextBoxEndIndex, symbolInstance);\n this._updateIconDebugCollisionBoxes(iconSize, zoom, collisionBoxArray, symbolInstance.iconBoxStartIndex, symbolInstance.iconBoxEndIndex);\n this._updateIconDebugCollisionBoxes(iconSize, zoom, collisionBoxArray, symbolInstance.verticalIconBoxStartIndex, symbolInstance.verticalIconBoxEndIndex);\n }\n\n if (this.hasTextCollisionBoxData() && this.textCollisionBox.collisionVertexBufferExt) {\n this.textCollisionBox.collisionVertexBufferExt.updateData(this.textCollisionBox.collisionVertexArrayExt);\n }\n if (this.hasIconCollisionBoxData() && this.iconCollisionBox.collisionVertexBufferExt) {\n this.iconCollisionBox.collisionVertexBufferExt.updateData(this.iconCollisionBox.collisionVertexArrayExt);\n }\n }\n\n // These flat arrays are meant to be quicker to iterate over than the source\n // CollisionBoxArray\n _deserializeCollisionBoxesForSymbol(collisionBoxArray: CollisionBoxArray,\n textStartIndex: number, textEndIndex: number,\n verticalTextStartIndex: number, verticalTextEndIndex: number,\n iconStartIndex: number, iconEndIndex: number,\n verticalIconStartIndex: number, verticalIconEndIndex: number): CollisionArrays {\n\n const collisionArrays = {};\n for (let k = textStartIndex; k < textEndIndex; k++) {\n const box: CollisionBox = (collisionBoxArray.get(k): any);\n collisionArrays.textBox = {x1: box.x1, y1: box.y1, x2: box.x2, y2: box.y2, padding: box.padding, projectedAnchorX: box.projectedAnchorX, projectedAnchorY: box.projectedAnchorY, projectedAnchorZ: box.projectedAnchorZ, tileAnchorX: box.tileAnchorX, tileAnchorY: box.tileAnchorY};\n collisionArrays.textFeatureIndex = box.featureIndex;\n break; // Only one box allowed per instance\n }\n for (let k = verticalTextStartIndex; k < verticalTextEndIndex; k++) {\n const box: CollisionBox = (collisionBoxArray.get(k): any);\n collisionArrays.verticalTextBox = {x1: box.x1, y1: box.y1, x2: box.x2, y2: box.y2, padding: box.padding, projectedAnchorX: box.projectedAnchorX, projectedAnchorY: box.projectedAnchorY, projectedAnchorZ: box.projectedAnchorZ, tileAnchorX: box.tileAnchorX, tileAnchorY: box.tileAnchorY};\n collisionArrays.verticalTextFeatureIndex = box.featureIndex;\n break; // Only one box allowed per instance\n }\n for (let k = iconStartIndex; k < iconEndIndex; k++) {\n // An icon can only have one box now, so this indexing is a bit vestigial...\n const box: CollisionBox = (collisionBoxArray.get(k): any);\n collisionArrays.iconBox = {x1: box.x1, y1: box.y1, x2: box.x2, y2: box.y2, padding: box.padding, projectedAnchorX: box.projectedAnchorX, projectedAnchorY: box.projectedAnchorY, projectedAnchorZ: box.projectedAnchorZ, tileAnchorX: box.tileAnchorX, tileAnchorY: box.tileAnchorY};\n collisionArrays.iconFeatureIndex = box.featureIndex;\n break; // Only one box allowed per instance\n }\n for (let k = verticalIconStartIndex; k < verticalIconEndIndex; k++) {\n // An icon can only have one box now, so this indexing is a bit vestigial...\n const box: CollisionBox = (collisionBoxArray.get(k): any);\n collisionArrays.verticalIconBox = {x1: box.x1, y1: box.y1, x2: box.x2, y2: box.y2, padding: box.padding, projectedAnchorX: box.projectedAnchorX, projectedAnchorY: box.projectedAnchorY, projectedAnchorZ: box.projectedAnchorZ, tileAnchorX: box.tileAnchorX, tileAnchorY: box.tileAnchorY};\n collisionArrays.verticalIconFeatureIndex = box.featureIndex;\n break; // Only one box allowed per instance\n }\n return collisionArrays;\n }\n\n deserializeCollisionBoxes(collisionBoxArray: CollisionBoxArray) {\n this.collisionArrays = [];\n for (let i = 0; i < this.symbolInstances.length; i++) {\n const symbolInstance = this.symbolInstances.get(i);\n this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(\n collisionBoxArray,\n symbolInstance.textBoxStartIndex,\n symbolInstance.textBoxEndIndex,\n symbolInstance.verticalTextBoxStartIndex,\n symbolInstance.verticalTextBoxEndIndex,\n symbolInstance.iconBoxStartIndex,\n symbolInstance.iconBoxEndIndex,\n symbolInstance.verticalIconBoxStartIndex,\n symbolInstance.verticalIconBoxEndIndex\n ));\n }\n }\n\n hasTextData(): boolean {\n return this.text.segments.get().length > 0;\n }\n\n hasIconData(): boolean {\n return this.icon.segments.get().length > 0;\n }\n\n hasDebugData(): CollisionBuffers {\n return this.textCollisionBox && this.iconCollisionBox;\n }\n\n hasTextCollisionBoxData(): boolean {\n return this.hasDebugData() && this.textCollisionBox.segments.get().length > 0;\n }\n\n hasIconCollisionBoxData(): boolean {\n return this.hasDebugData() && this.iconCollisionBox.segments.get().length > 0;\n }\n\n addIndicesForPlacedSymbol(iconOrText: SymbolBuffers, placedSymbolIndex: number) {\n const placedSymbol = iconOrText.placedSymbolArray.get(placedSymbolIndex);\n\n const endIndex = placedSymbol.vertexStartIndex + placedSymbol.numGlyphs * 4;\n for (let vertexIndex = placedSymbol.vertexStartIndex; vertexIndex < endIndex; vertexIndex += 4) {\n iconOrText.indexArray.emplaceBack(vertexIndex, vertexIndex + 1, vertexIndex + 2);\n iconOrText.indexArray.emplaceBack(vertexIndex + 1, vertexIndex + 2, vertexIndex + 3);\n }\n }\n\n getSortedSymbolIndexes(angle: number): Array<number> {\n if (this.sortedAngle === angle && this.symbolInstanceIndexes !== undefined) {\n return this.symbolInstanceIndexes;\n }\n const sin = Math.sin(angle);\n const cos = Math.cos(angle);\n const rotatedYs = [];\n const featureIndexes = [];\n const result = [];\n\n for (let i = 0; i < this.symbolInstances.length; ++i) {\n result.push(i);\n const symbolInstance = this.symbolInstances.get(i);\n rotatedYs.push(Math.round(sin * symbolInstance.tileAnchorX + cos * symbolInstance.tileAnchorY) | 0);\n featureIndexes.push(symbolInstance.featureIndex);\n }\n\n result.sort((aIndex, bIndex) => {\n return (rotatedYs[aIndex] - rotatedYs[bIndex]) ||\n (featureIndexes[bIndex] - featureIndexes[aIndex]);\n });\n\n return result;\n }\n\n addToSortKeyRanges(symbolInstanceIndex: number, sortKey: number) {\n const last = this.sortKeyRanges[this.sortKeyRanges.length - 1];\n if (last && last.sortKey === sortKey) {\n last.symbolInstanceEnd = symbolInstanceIndex + 1;\n } else {\n this.sortKeyRanges.push({\n sortKey,\n symbolInstanceStart: symbolInstanceIndex,\n symbolInstanceEnd: symbolInstanceIndex + 1\n });\n }\n }\n\n sortFeatures(angle: number) {\n if (!this.sortFeaturesByY) return;\n if (this.sortedAngle === angle) return;\n\n // The current approach to sorting doesn't sort across segments so don't try.\n // Sorting within segments separately seemed not to be worth the complexity.\n if (this.text.segments.get().length > 1 || this.icon.segments.get().length > 1) return;\n\n // If the symbols are allowed to overlap sort them by their vertical screen position.\n // The index array buffer is rewritten to reference the (unchanged) vertices in the\n // sorted order.\n\n // To avoid sorting the actual symbolInstance array we sort an array of indexes.\n this.symbolInstanceIndexes = this.getSortedSymbolIndexes(angle);\n this.sortedAngle = angle;\n\n this.text.indexArray.clear();\n this.icon.indexArray.clear();\n\n this.featureSortOrder = [];\n\n for (const i of this.symbolInstanceIndexes) {\n const symbolInstance = this.symbolInstances.get(i);\n this.featureSortOrder.push(symbolInstance.featureIndex);\n\n [\n symbolInstance.rightJustifiedTextSymbolIndex,\n symbolInstance.centerJustifiedTextSymbolIndex,\n symbolInstance.leftJustifiedTextSymbolIndex\n ].forEach((index, i, array) => {\n // Only add a given index the first time it shows up,\n // to avoid duplicate opacity entries when multiple justifications\n // share the same glyphs.\n if (index >= 0 && array.indexOf(index) === i) {\n this.addIndicesForPlacedSymbol(this.text, index);\n }\n });\n\n if (symbolInstance.verticalPlacedTextSymbolIndex >= 0) {\n this.addIndicesForPlacedSymbol(this.text, symbolInstance.verticalPlacedTextSymbolIndex);\n }\n\n if (symbolInstance.placedIconSymbolIndex >= 0) {\n this.addIndicesForPlacedSymbol(this.icon, symbolInstance.placedIconSymbolIndex);\n }\n\n if (symbolInstance.verticalPlacedIconSymbolIndex >= 0) {\n this.addIndicesForPlacedSymbol(this.icon, symbolInstance.verticalPlacedIconSymbolIndex);\n }\n }\n\n if (this.text.indexBuffer) this.text.indexBuffer.updateData(this.text.indexArray);\n if (this.icon.indexBuffer) this.icon.indexBuffer.updateData(this.icon.indexArray);\n }\n}\n\nregister(SymbolBucket, 'SymbolBucket', {\n omit: ['layers', 'collisionBoxArray', 'features', 'compareText']\n});\n\n// this constant is based on the size of StructArray indexes used in a symbol\n// bucket--namely, glyphOffsetArrayStart\n// eg the max valid UInt16 is 65,535\n// See https://github.com/mapbox/mapbox-gl-js/issues/2907 for motivation\n// lineStartIndex and textBoxStartIndex could potentially be concerns\n// but we expect there to be many fewer boxes/lines than glyphs\nSymbolBucket.MAX_GLYPHS = 65535;\n\nSymbolBucket.addDynamicAttributes = addDynamicAttributes;\n\nexport default SymbolBucket;\nexport {addDynamicAttributes, updateGlobeVertexNormal};\n","// @flow\n\nimport type {SymbolFeature} from '../data/bucket/symbol_bucket.js';\n\nexport default function (features: Array<SymbolFeature>): Array<SymbolFeature> {\n const leftIndex: {[_: string]: number} = {};\n const rightIndex: {[_: string]: number} = {};\n const mergedFeatures = [];\n let mergedIndex = 0;\n\n function add(k) {\n mergedFeatures.push(features[k]);\n mergedIndex++;\n }\n\n function mergeFromRight(leftKey: string, rightKey: string, geom) {\n const i = rightIndex[leftKey];\n delete rightIndex[leftKey];\n rightIndex[rightKey] = i;\n\n mergedFeatures[i].geometry[0].pop();\n mergedFeatures[i].geometry[0] = mergedFeatures[i].geometry[0].concat(geom[0]);\n return i;\n }\n\n function mergeFromLeft(leftKey: string, rightKey: string, geom) {\n const i = leftIndex[rightKey];\n delete leftIndex[rightKey];\n leftIndex[leftKey] = i;\n\n mergedFeatures[i].geometry[0].shift();\n mergedFeatures[i].geometry[0] = geom[0].concat(mergedFeatures[i].geometry[0]);\n return i;\n }\n\n function getKey(text, geom, onRight) {\n const point = onRight ? geom[0][geom[0].length - 1] : geom[0][0];\n return `${text}:${point.x}:${point.y}`;\n }\n\n for (let k = 0; k < features.length; k++) {\n const feature = features[k];\n const geom = feature.geometry;\n const text = feature.text ? feature.text.toString() : null;\n\n if (!text) {\n add(k);\n continue;\n }\n\n const leftKey = getKey(text, geom),\n rightKey = getKey(text, geom, true);\n\n if ((leftKey in rightIndex) && (rightKey in leftIndex) && (rightIndex[leftKey] !== leftIndex[rightKey])) {\n // found lines with the same text adjacent to both ends of the current line, merge all three\n const j = mergeFromLeft(leftKey, rightKey, geom);\n const i = mergeFromRight(leftKey, rightKey, mergedFeatures[j].geometry);\n\n delete leftIndex[leftKey];\n delete rightIndex[rightKey];\n\n rightIndex[getKey(text, mergedFeatures[i].geometry, true)] = i;\n mergedFeatures[j].geometry = (null: any);\n\n } else if (leftKey in rightIndex) {\n // found mergeable line adjacent to the start of the current line, merge\n mergeFromRight(leftKey, rightKey, geom);\n\n } else if (rightKey in leftIndex) {\n // found mergeable line adjacent to the end of the current line, merge\n mergeFromLeft(leftKey, rightKey, geom);\n\n } else {\n // no adjacent lines, add as a new item\n add(k);\n leftIndex[leftKey] = mergedIndex - 1;\n rightIndex[rightKey] = mergedIndex - 1;\n }\n }\n\n return mergedFeatures.filter((f) => f.geometry);\n}\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n CrossFadedDataDrivenProperty,\n CrossFadedProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\nimport {\n ColorType\n} from '../../style-spec/expression/types.js';\n\nexport type LayoutProps = {|\n \"symbol-placement\": DataConstantProperty<\"point\" | \"line\" | \"line-center\">,\n \"symbol-spacing\": DataConstantProperty<number>,\n \"symbol-avoid-edges\": DataConstantProperty<boolean>,\n \"symbol-sort-key\": DataDrivenProperty<number>,\n \"symbol-z-order\": DataConstantProperty<\"auto\" | \"viewport-y\" | \"source\">,\n \"icon-allow-overlap\": DataConstantProperty<boolean>,\n \"icon-ignore-placement\": DataConstantProperty<boolean>,\n \"icon-optional\": DataConstantProperty<boolean>,\n \"icon-rotation-alignment\": DataConstantProperty<\"map\" | \"viewport\" | \"auto\">,\n \"icon-size\": DataDrivenProperty<number>,\n \"icon-text-fit\": DataConstantProperty<\"none\" | \"width\" | \"height\" | \"both\">,\n \"icon-text-fit-padding\": DataConstantProperty<[number, number, number, number]>,\n \"icon-image\": DataDrivenProperty<ResolvedImage>,\n \"icon-rotate\": DataDrivenProperty<number>,\n \"icon-padding\": DataConstantProperty<number>,\n \"icon-keep-upright\": DataConstantProperty<boolean>,\n \"icon-offset\": DataDrivenProperty<[number, number]>,\n \"icon-anchor\": DataDrivenProperty<\"center\" | \"left\" | \"right\" | \"top\" | \"bottom\" | \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\">,\n \"icon-pitch-alignment\": DataConstantProperty<\"map\" | \"viewport\" | \"auto\">,\n \"text-pitch-alignment\": DataConstantProperty<\"map\" | \"viewport\" | \"auto\">,\n \"text-rotation-alignment\": DataConstantProperty<\"map\" | \"viewport\" | \"auto\">,\n \"text-field\": DataDrivenProperty<Formatted>,\n \"text-font\": DataDrivenProperty<Array<string>>,\n \"text-size\": DataDrivenProperty<number>,\n \"text-max-width\": DataDrivenProperty<number>,\n \"text-line-height\": DataDrivenProperty<number>,\n \"text-letter-spacing\": DataDrivenProperty<number>,\n \"text-justify\": DataDrivenProperty<\"auto\" | \"left\" | \"center\" | \"right\">,\n \"text-radial-offset\": DataDrivenProperty<number>,\n \"text-variable-anchor\": DataConstantProperty<Array<\"center\" | \"left\" | \"right\" | \"top\" | \"bottom\" | \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\">>,\n \"text-anchor\": DataDrivenProperty<\"center\" | \"left\" | \"right\" | \"top\" | \"bottom\" | \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\">,\n \"text-max-angle\": DataConstantProperty<number>,\n \"text-writing-mode\": DataConstantProperty<Array<\"horizontal\" | \"vertical\">>,\n \"text-rotate\": DataDrivenProperty<number>,\n \"text-padding\": DataConstantProperty<number>,\n \"text-keep-upright\": DataConstantProperty<boolean>,\n \"text-transform\": DataDrivenProperty<\"none\" | \"uppercase\" | \"lowercase\">,\n \"text-offset\": DataDrivenProperty<[number, number]>,\n \"text-allow-overlap\": DataConstantProperty<boolean>,\n \"text-ignore-placement\": DataConstantProperty<boolean>,\n \"text-optional\": DataConstantProperty<boolean>,\n|};\n\nconst layout: Properties<LayoutProps> = new Properties({\n \"symbol-placement\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"symbol-placement\"]),\n \"symbol-spacing\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"symbol-spacing\"]),\n \"symbol-avoid-edges\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"symbol-avoid-edges\"]),\n \"symbol-sort-key\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"symbol-sort-key\"]),\n \"symbol-z-order\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"symbol-z-order\"]),\n \"icon-allow-overlap\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-allow-overlap\"]),\n \"icon-ignore-placement\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-ignore-placement\"]),\n \"icon-optional\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-optional\"]),\n \"icon-rotation-alignment\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-rotation-alignment\"]),\n \"icon-size\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"icon-size\"]),\n \"icon-text-fit\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-text-fit\"]),\n \"icon-text-fit-padding\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-text-fit-padding\"]),\n \"icon-image\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"icon-image\"]),\n \"icon-rotate\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"icon-rotate\"]),\n \"icon-padding\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-padding\"]),\n \"icon-keep-upright\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-keep-upright\"]),\n \"icon-offset\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"icon-offset\"]),\n \"icon-anchor\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"icon-anchor\"]),\n \"icon-pitch-alignment\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"icon-pitch-alignment\"]),\n \"text-pitch-alignment\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-pitch-alignment\"]),\n \"text-rotation-alignment\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-rotation-alignment\"]),\n \"text-field\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-field\"]),\n \"text-font\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-font\"]),\n \"text-size\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-size\"]),\n \"text-max-width\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-max-width\"]),\n \"text-line-height\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-line-height\"]),\n \"text-letter-spacing\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-letter-spacing\"]),\n \"text-justify\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-justify\"]),\n \"text-radial-offset\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-radial-offset\"]),\n \"text-variable-anchor\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-variable-anchor\"]),\n \"text-anchor\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-anchor\"]),\n \"text-max-angle\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-max-angle\"]),\n \"text-writing-mode\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-writing-mode\"]),\n \"text-rotate\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-rotate\"]),\n \"text-padding\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-padding\"]),\n \"text-keep-upright\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-keep-upright\"]),\n \"text-transform\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-transform\"]),\n \"text-offset\": new DataDrivenProperty(styleSpec[\"layout_symbol\"][\"text-offset\"]),\n \"text-allow-overlap\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-allow-overlap\"]),\n \"text-ignore-placement\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-ignore-placement\"]),\n \"text-optional\": new DataConstantProperty(styleSpec[\"layout_symbol\"][\"text-optional\"]),\n});\n\nexport type PaintProps = {|\n \"icon-opacity\": DataDrivenProperty<number>,\n \"icon-color\": DataDrivenProperty<Color>,\n \"icon-halo-color\": DataDrivenProperty<Color>,\n \"icon-halo-width\": DataDrivenProperty<number>,\n \"icon-halo-blur\": DataDrivenProperty<number>,\n \"icon-translate\": DataConstantProperty<[number, number]>,\n \"icon-translate-anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n \"text-opacity\": DataDrivenProperty<number>,\n \"text-color\": DataDrivenProperty<Color>,\n \"text-halo-color\": DataDrivenProperty<Color>,\n \"text-halo-width\": DataDrivenProperty<number>,\n \"text-halo-blur\": DataDrivenProperty<number>,\n \"text-translate\": DataConstantProperty<[number, number]>,\n \"text-translate-anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n|};\n\nconst paint: Properties<PaintProps> = new Properties({\n \"icon-opacity\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"icon-opacity\"]),\n \"icon-color\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"icon-color\"]),\n \"icon-halo-color\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"icon-halo-color\"]),\n \"icon-halo-width\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"icon-halo-width\"]),\n \"icon-halo-blur\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"icon-halo-blur\"]),\n \"icon-translate\": new DataConstantProperty(styleSpec[\"paint_symbol\"][\"icon-translate\"]),\n \"icon-translate-anchor\": new DataConstantProperty(styleSpec[\"paint_symbol\"][\"icon-translate-anchor\"]),\n \"text-opacity\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"text-opacity\"]),\n \"text-color\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"text-color\"], { runtimeType: ColorType, getOverride: (o) => o.textColor, hasOverride: (o) => !!o.textColor }),\n \"text-halo-color\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"text-halo-color\"]),\n \"text-halo-width\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"text-halo-width\"]),\n \"text-halo-blur\": new DataDrivenProperty(styleSpec[\"paint_symbol\"][\"text-halo-blur\"]),\n \"text-translate\": new DataConstantProperty(styleSpec[\"paint_symbol\"][\"text-translate\"]),\n \"text-translate-anchor\": new DataConstantProperty(styleSpec[\"paint_symbol\"][\"text-translate-anchor\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint, layout }: $Exact<{\n paint: Properties<PaintProps>, layout: Properties<LayoutProps>\n}>);\n","// @flow\n\nimport assert from 'assert';\nimport type {Expression} from '../style-spec/expression/expression.js';\nimport type EvaluationContext from '../style-spec/expression/evaluation_context.js';\nimport type {Type} from '../style-spec/expression/types.js';\nimport type {ZoomConstantExpression} from '../style-spec/expression/index.js';\nimport {NullType} from '../style-spec/expression/types.js';\nimport {PossiblyEvaluatedPropertyValue} from './properties.js';\nimport {register} from '../util/web_worker_transfer.js';\n\n// This is an internal expression class. It is only used in GL JS and\n// has GL JS dependencies which can break the standalone style-spec module\nexport default class FormatSectionOverride<T> implements Expression {\n type: Type;\n defaultValue: PossiblyEvaluatedPropertyValue<T>;\n\n constructor(defaultValue: PossiblyEvaluatedPropertyValue<T>) {\n assert(defaultValue.property.overrides !== undefined);\n this.type = defaultValue.property.overrides ? defaultValue.property.overrides.runtimeType : NullType;\n this.defaultValue = defaultValue;\n }\n\n evaluate(ctx: EvaluationContext): T {\n if (ctx.formattedSection) {\n const overrides = this.defaultValue.property.overrides;\n if (overrides && overrides.hasOverride(ctx.formattedSection)) {\n return overrides.getOverride(ctx.formattedSection);\n }\n }\n\n if (ctx.feature && ctx.featureState) {\n return this.defaultValue.evaluate(ctx.feature, ctx.featureState);\n }\n\n // not sure how to make Flow refine the type properly here — will need investigation\n return ((this.defaultValue.property.specification.default: any): T);\n }\n\n eachChild(fn: (_: Expression) => void) {\n if (!this.defaultValue.isConstant()) {\n const expr: ZoomConstantExpression<'source'> = ((this.defaultValue.value): any);\n fn(expr._styleExpression.expression);\n }\n }\n\n // Cannot be statically evaluated, as the output depends on the evaluation context.\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): null {\n return null;\n }\n}\n\nregister(FormatSectionOverride, 'FormatSectionOverride', {omit: ['defaultValue']});\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\n\nimport assert from 'assert';\nimport SymbolBucket from '../../data/bucket/symbol_bucket.js';\nimport resolveTokens from '../../util/resolve_tokens.js';\nimport properties from './symbol_style_layer_properties.js';\n\nimport {\n Transitionable,\n Transitioning,\n Layout,\n PossiblyEvaluated,\n PossiblyEvaluatedPropertyValue,\n PropertyValue\n} from '../properties.js';\n\nimport {\n isExpression,\n StyleExpression,\n ZoomConstantExpression,\n ZoomDependentExpression\n} from '../../style-spec/expression/index.js';\n\nimport type {BucketParameters} from '../../data/bucket.js';\nimport type {LayoutProps, PaintProps} from './symbol_style_layer_properties.js';\nimport type EvaluationParameters from '../evaluation_parameters.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\nimport type {Feature, SourceExpression, CompositeExpression} from '../../style-spec/expression/index.js';\nimport type {Expression} from '../../style-spec/expression/expression.js';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport {FormattedType} from '../../style-spec/expression/types.js';\nimport {typeOf} from '../../style-spec/expression/values.js';\nimport Formatted from '../../style-spec/expression/types/formatted.js';\nimport FormatSectionOverride from '../format_section_override.js';\nimport FormatExpression from '../../style-spec/expression/definitions/format.js';\nimport Literal from '../../style-spec/expression/definitions/literal.js';\nimport ProgramConfiguration from '../../data/program_configuration.js';\n\nclass SymbolStyleLayer extends StyleLayer {\n _unevaluatedLayout: Layout<LayoutProps>;\n layout: PossiblyEvaluated<LayoutProps>;\n\n _transitionablePaint: Transitionable<PaintProps>;\n _transitioningPaint: Transitioning<PaintProps>;\n paint: PossiblyEvaluated<PaintProps>;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n }\n\n recalculate(parameters: EvaluationParameters, availableImages: Array<string>) {\n super.recalculate(parameters, availableImages);\n\n if (this.layout.get('icon-rotation-alignment') === 'auto') {\n if (this.layout.get('symbol-placement') !== 'point') {\n this.layout._values['icon-rotation-alignment'] = 'map';\n } else {\n this.layout._values['icon-rotation-alignment'] = 'viewport';\n }\n }\n\n if (this.layout.get('text-rotation-alignment') === 'auto') {\n if (this.layout.get('symbol-placement') !== 'point') {\n this.layout._values['text-rotation-alignment'] = 'map';\n } else {\n this.layout._values['text-rotation-alignment'] = 'viewport';\n }\n }\n\n // If unspecified, `*-pitch-alignment` inherits `*-rotation-alignment`\n if (this.layout.get('text-pitch-alignment') === 'auto') {\n this.layout._values['text-pitch-alignment'] = this.layout.get('text-rotation-alignment');\n }\n if (this.layout.get('icon-pitch-alignment') === 'auto') {\n this.layout._values['icon-pitch-alignment'] = this.layout.get('icon-rotation-alignment');\n }\n\n const writingModes = this.layout.get('text-writing-mode');\n if (writingModes) {\n // remove duplicates, preserving order\n const deduped = [];\n for (const m of writingModes) {\n if (deduped.indexOf(m) < 0) deduped.push(m);\n }\n this.layout._values['text-writing-mode'] = deduped;\n } else if (this.layout.get('symbol-placement') === 'point') {\n // default value for 'point' placement symbols\n this.layout._values['text-writing-mode'] = ['horizontal'];\n } else {\n // default value for 'line' placement symbols\n this.layout._values['text-writing-mode'] = ['horizontal', 'vertical'];\n }\n\n this._setPaintOverrides();\n }\n\n getValueAndResolveTokens(name: *, feature: Feature, canonical: CanonicalTileID, availableImages: Array<string>): string {\n const value = this.layout.get(name).evaluate(feature, {}, canonical, availableImages);\n const unevaluated = this._unevaluatedLayout._values[name];\n if (!unevaluated.isDataDriven() && !isExpression(unevaluated.value) && value) {\n return resolveTokens(feature.properties, value);\n }\n\n return value;\n }\n\n createBucket(parameters: BucketParameters<*>): SymbolBucket {\n return new SymbolBucket(parameters);\n }\n\n queryRadius(): number {\n return 0;\n }\n\n queryIntersectsFeature(): boolean {\n assert(false); // Should take a different path in FeatureIndex\n return false;\n }\n\n _setPaintOverrides() {\n for (const overridable of properties.paint.overridableProperties) {\n if (!SymbolStyleLayer.hasPaintOverride(this.layout, overridable)) {\n continue;\n }\n const overriden = this.paint.get(overridable);\n const override = new FormatSectionOverride(overriden);\n const styleExpression = new StyleExpression(override, overriden.property.specification);\n let expression = null;\n if (overriden.value.kind === 'constant' || overriden.value.kind === 'source') {\n expression = (new ZoomConstantExpression('source', styleExpression): SourceExpression);\n } else {\n expression = (new ZoomDependentExpression('composite',\n styleExpression,\n overriden.value.zoomStops,\n overriden.value._interpolationType): CompositeExpression);\n }\n this.paint._values[overridable] = new PossiblyEvaluatedPropertyValue(overriden.property,\n expression,\n overriden.parameters);\n }\n }\n\n _handleOverridablePaintPropertyUpdate<T, R>(name: string, oldValue: PropertyValue<T, R>, newValue: PropertyValue<T, R>): boolean {\n if (!this.layout || oldValue.isDataDriven() || newValue.isDataDriven()) {\n return false;\n }\n return SymbolStyleLayer.hasPaintOverride(this.layout, name);\n }\n\n static hasPaintOverride(layout: PossiblyEvaluated<LayoutProps>, propertyName: string): boolean {\n const textField = layout.get('text-field');\n const property = properties.paint.properties[propertyName];\n let hasOverrides = false;\n\n const checkSections = (sections) => {\n for (const section of sections) {\n if (property.overrides && property.overrides.hasOverride(section)) {\n hasOverrides = true;\n return;\n }\n }\n };\n\n if (textField.value.kind === 'constant' && textField.value.value instanceof Formatted) {\n checkSections(textField.value.value.sections);\n } else if (textField.value.kind === 'source') {\n\n const checkExpression = (expression: Expression) => {\n if (hasOverrides) return;\n\n if (expression instanceof Literal && typeOf(expression.value) === FormattedType) {\n const formatted: Formatted = ((expression.value): any);\n checkSections(formatted.sections);\n } else if (expression instanceof FormatExpression) {\n checkSections(expression.sections);\n } else {\n expression.eachChild(checkExpression);\n }\n };\n\n const expr: ZoomConstantExpression<'source'> = ((textField.value): any);\n if (expr._styleExpression) {\n checkExpression(expr._styleExpression.expression);\n }\n }\n\n return hasOverrides;\n }\n\n getProgramConfiguration(zoom: number): ProgramConfiguration {\n return new ProgramConfiguration(this, zoom);\n }\n}\n\nexport default SymbolStyleLayer;\n","// @flow\nexport default resolveTokens;\n\n/**\n * Replace tokens in a string template with values in an object\n *\n * @param properties a key/value relationship between tokens and replacements\n * @param text the template string\n * @returns the template with tokens replaced\n * @private\n */\nfunction resolveTokens(properties: {+[string]: mixed}, text: string): string {\n return text.replace(/{([^{}]+)}/g, (match, key: string) => {\n return key in properties ? String(properties[key]) : '';\n });\n}\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n CrossFadedDataDrivenProperty,\n CrossFadedProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\n\nexport type PaintProps = {|\n \"background-color\": DataConstantProperty<Color>,\n \"background-pattern\": CrossFadedProperty<ResolvedImage>,\n \"background-opacity\": DataConstantProperty<number>,\n|};\n\nconst paint: Properties<PaintProps> = new Properties({\n \"background-color\": new DataConstantProperty(styleSpec[\"paint_background\"][\"background-color\"]),\n \"background-pattern\": new CrossFadedProperty(styleSpec[\"paint_background\"][\"background-pattern\"]),\n \"background-opacity\": new DataConstantProperty(styleSpec[\"paint_background\"][\"background-opacity\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint }: $Exact<{\n paint: Properties<PaintProps>\n}>);\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n CrossFadedDataDrivenProperty,\n CrossFadedProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\n\nexport type PaintProps = {|\n \"raster-opacity\": DataConstantProperty<number>,\n \"raster-hue-rotate\": DataConstantProperty<number>,\n \"raster-brightness-min\": DataConstantProperty<number>,\n \"raster-brightness-max\": DataConstantProperty<number>,\n \"raster-saturation\": DataConstantProperty<number>,\n \"raster-contrast\": DataConstantProperty<number>,\n \"raster-resampling\": DataConstantProperty<\"linear\" | \"nearest\">,\n \"raster-fade-duration\": DataConstantProperty<number>,\n|};\n\nconst paint: Properties<PaintProps> = new Properties({\n \"raster-opacity\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-opacity\"]),\n \"raster-hue-rotate\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-hue-rotate\"]),\n \"raster-brightness-min\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-brightness-min\"]),\n \"raster-brightness-max\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-brightness-max\"]),\n \"raster-saturation\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-saturation\"]),\n \"raster-contrast\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-contrast\"]),\n \"raster-resampling\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-resampling\"]),\n \"raster-fade-duration\": new DataConstantProperty(styleSpec[\"paint_raster\"][\"raster-fade-duration\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint }: $Exact<{\n paint: Properties<PaintProps>\n}>);\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\nimport type Map from '../../ui/map.js';\nimport assert from 'assert';\nimport type {ValidationErrors} from '../validate_style.js';\n\ntype CustomRenderMethod = (gl: WebGLRenderingContext, matrix: Array<number>) => void;\n\n/**\n * Interface for custom style layers. This is a specification for\n * implementers to model: it is not an exported method or class.\n *\n * Custom layers allow a user to render directly into the map's GL context using the map's camera.\n * These layers can be added between any regular layers using {@link Map#addLayer}.\n *\n * Custom layers must have a unique `id` and must have the `type` of `\"custom\"`.\n * They must implement `render` and may implement `prerender`, `onAdd` and `onRemove`.\n * They can trigger rendering using {@link Map#triggerRepaint}\n * and they should appropriately handle {@link Map.event:webglcontextlost} and\n * {@link Map.event:webglcontextrestored}.\n *\n * The `renderingMode` property controls whether the layer is treated as a `\"2d\"` or `\"3d\"` map layer. Use:\n * - `\"renderingMode\": \"3d\"` to use the depth buffer and share it with other layers\n * - `\"renderingMode\": \"2d\"` to add a layer with no depth. If you need to use the depth buffer for a `\"2d\"` layer you must use an offscreen\n * framebuffer and {@link CustomLayerInterface#prerender}.\n *\n * @interface CustomLayerInterface\n * @property {string} id A unique layer id.\n * @property {string} type The layer's type. Must be `\"custom\"`.\n * @property {string} renderingMode Either `\"2d\"` or `\"3d\"`. Defaults to `\"2d\"`.\n * @example\n * // Custom layer implemented as ES6 class\n * class NullIslandLayer {\n * constructor() {\n * this.id = 'null-island';\n * this.type = 'custom';\n * this.renderingMode = '2d';\n * }\n *\n * onAdd(map, gl) {\n * const vertexSource = `\n * uniform mat4 u_matrix;\n * void main() {\n * gl_Position = u_matrix * vec4(0.5, 0.5, 0.0, 1.0);\n * gl_PointSize = 20.0;\n * }`;\n *\n * const fragmentSource = `\n * void main() {\n * gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n * }`;\n *\n * const vertexShader = gl.createShader(gl.VERTEX_SHADER);\n * gl.shaderSource(vertexShader, vertexSource);\n * gl.compileShader(vertexShader);\n * const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n * gl.shaderSource(fragmentShader, fragmentSource);\n * gl.compileShader(fragmentShader);\n *\n * this.program = gl.createProgram();\n * gl.attachShader(this.program, vertexShader);\n * gl.attachShader(this.program, fragmentShader);\n * gl.linkProgram(this.program);\n * }\n *\n * render(gl, matrix) {\n * gl.useProgram(this.program);\n * gl.uniformMatrix4fv(gl.getUniformLocation(this.program, \"u_matrix\"), false, matrix);\n * gl.drawArrays(gl.POINTS, 0, 1);\n * }\n * }\n *\n * map.on('load', () => {\n * map.addLayer(new NullIslandLayer());\n * });\n * @see [Example: Add a custom style layer](https://docs.mapbox.com/mapbox-gl-js/example/custom-style-layer/)\n * @see [Example: Add a 3D model](https://docs.mapbox.com/mapbox-gl-js/example/add-3d-model/)\n */\n\n/**\n * Optional method called when the layer has been added to the Map with {@link Map#addLayer}. This\n * gives the layer a chance to initialize gl resources and register event listeners.\n *\n * @function\n * @memberof CustomLayerInterface\n * @instance\n * @name onAdd\n * @param {Map} map The Map this custom layer was just added to.\n * @param {WebGLRenderingContext} gl The gl context for the map.\n */\n\n/**\n * Optional method called when the layer has been removed from the Map with {@link Map#removeLayer}. This\n * gives the layer a chance to clean up gl resources and event listeners.\n *\n * @function\n * @memberof CustomLayerInterface\n * @instance\n * @name onRemove\n * @param {Map} map The Map this custom layer was just added to.\n * @param {WebGLRenderingContext} gl The gl context for the map.\n */\n\n/**\n * Optional method called during a render frame to allow a layer to prepare resources or render into a texture.\n *\n * The layer cannot make any assumptions about the current GL state and must bind a framebuffer before rendering.\n *\n * @function\n * @memberof CustomLayerInterface\n * @instance\n * @name prerender\n * @param {WebGLRenderingContext} gl The map's gl context.\n * @param {Array<number>} matrix The map's camera matrix. It projects spherical mercator\n * coordinates to gl coordinates. The mercator coordinate `[0, 0]` represents the\n * top left corner of the mercator world and `[1, 1]` represents the bottom right corner. When\n * the `renderingMode` is `\"3d\"`, the z coordinate is conformal. A box with identical x, y, and z\n * lengths in mercator units would be rendered as a cube. {@link MercatorCoordinate}.fromLngLat\n * can be used to project a `LngLat` to a mercator coordinate.\n */\n\n/**\n * Called during a render frame allowing the layer to draw into the GL context.\n *\n * The layer can assume blending and depth state is set to allow the layer to properly\n * blend and clip other layers. The layer cannot make any other assumptions about the\n * current GL state.\n *\n * If the layer needs to render to a texture, it should implement the `prerender` method\n * to do this and only use the `render` method for drawing directly into the main framebuffer.\n *\n * The blend function is set to `gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA)`. This expects\n * colors to be provided in premultiplied alpha form where the `r`, `g` and `b` values are already\n * multiplied by the `a` value. If you are unable to provide colors in premultiplied form you\n * may want to change the blend function to\n * `gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA)`.\n *\n * @function\n * @memberof CustomLayerInterface\n * @instance\n * @name render\n * @param {WebGLRenderingContext} gl The map's gl context.\n * @param {Array<number>} matrix The map's camera matrix. It projects spherical mercator\n * coordinates to gl coordinates. The spherical mercator coordinate `[0, 0]` represents the\n * top left corner of the mercator world and `[1, 1]` represents the bottom right corner. When\n * the `renderingMode` is `\"3d\"`, the z coordinate is conformal. A box with identical x, y, and z\n * lengths in mercator units would be rendered as a cube. {@link MercatorCoordinate}.fromLngLat\n * can be used to project a `LngLat` to a mercator coordinate.\n */\nexport type CustomLayerInterface = {\n id: string,\n type: \"custom\",\n renderingMode: \"2d\" | \"3d\",\n render: CustomRenderMethod,\n prerender: ?CustomRenderMethod,\n onAdd: ?(map: Map, gl: WebGLRenderingContext) => void,\n onRemove: ?(map: Map, gl: WebGLRenderingContext) => void\n}\n\nexport function validateCustomStyleLayer(layerObject: CustomLayerInterface): ValidationErrors {\n const errors = [];\n const id = layerObject.id;\n\n if (id === undefined) {\n errors.push({\n message: `layers.${id}: missing required property \"id\"`\n });\n }\n\n if (layerObject.render === undefined) {\n errors.push({\n message: `layers.${id}: missing required method \"render\"`\n });\n }\n\n if (layerObject.renderingMode &&\n layerObject.renderingMode !== '2d' &&\n layerObject.renderingMode !== '3d') {\n errors.push({\n message: `layers.${id}: property \"renderingMode\" must be either \"2d\" or \"3d\"`\n });\n }\n\n return errors;\n}\n\nclass CustomStyleLayer extends StyleLayer {\n\n implementation: CustomLayerInterface;\n\n constructor(implementation: CustomLayerInterface) {\n super(implementation, {});\n this.implementation = implementation;\n }\n\n is3D(): boolean {\n return this.implementation.renderingMode === '3d';\n }\n\n hasOffscreenPass(): boolean {\n return this.implementation.prerender !== undefined;\n }\n\n recalculate() {}\n updateTransitions() {}\n hasTransition(): boolean {\n return false;\n }\n\n // $FlowFixMe[incompatible-extend] - CustomStyleLayer is not serializable\n serialize() {\n assert(false, \"Custom layers cannot be serialized\");\n }\n\n onAdd(map: Map) {\n if (this.implementation.onAdd) {\n this.implementation.onAdd(map, map.painter.context.gl);\n }\n }\n\n onRemove(map: Map) {\n if (this.implementation.onRemove) {\n this.implementation.onRemove(map, map.painter.context.gl);\n }\n }\n}\n\nexport default CustomStyleLayer;\n","// This file is generated. Edit build/generate-style-code.js, then run `yarn run codegen`.\n// @flow\n/* eslint-disable */\n\nimport styleSpec from '../../style-spec/reference/latest.js';\n\nimport {\n Properties,\n DataConstantProperty,\n DataDrivenProperty,\n CrossFadedDataDrivenProperty,\n CrossFadedProperty,\n ColorRampProperty\n} from '../properties.js';\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport type Formatted from '../../style-spec/expression/types/formatted.js';\n\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\n\nexport type PaintProps = {|\n \"sky-type\": DataConstantProperty<\"gradient\" | \"atmosphere\">,\n \"sky-atmosphere-sun\": DataConstantProperty<[number, number]>,\n \"sky-atmosphere-sun-intensity\": DataConstantProperty<number>,\n \"sky-gradient-center\": DataConstantProperty<[number, number]>,\n \"sky-gradient-radius\": DataConstantProperty<number>,\n \"sky-gradient\": ColorRampProperty,\n \"sky-atmosphere-halo-color\": DataConstantProperty<Color>,\n \"sky-atmosphere-color\": DataConstantProperty<Color>,\n \"sky-opacity\": DataConstantProperty<number>,\n|};\n\nconst paint: Properties<PaintProps> = new Properties({\n \"sky-type\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-type\"]),\n \"sky-atmosphere-sun\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-atmosphere-sun\"]),\n \"sky-atmosphere-sun-intensity\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-atmosphere-sun-intensity\"]),\n \"sky-gradient-center\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-gradient-center\"]),\n \"sky-gradient-radius\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-gradient-radius\"]),\n \"sky-gradient\": new ColorRampProperty(styleSpec[\"paint_sky\"][\"sky-gradient\"]),\n \"sky-atmosphere-halo-color\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-atmosphere-halo-color\"]),\n \"sky-atmosphere-color\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-atmosphere-color\"]),\n \"sky-opacity\": new DataConstantProperty(styleSpec[\"paint_sky\"][\"sky-opacity\"]),\n});\n\n// Note: without adding the explicit type annotation, Flow infers weaker types\n// for these objects from their use in the constructor to StyleLayer, as\n// {layout?: Properties<...>, paint: Properties<...>}\nexport default ({ paint }: $Exact<{\n paint: Properties<PaintProps>\n}>);\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\nimport properties from './sky_style_layer_properties.js';\nimport {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js';\nimport {renderColorRamp} from '../../util/color_ramp.js';\nimport type {PaintProps} from './sky_style_layer_properties.js';\nimport type Texture from '../../render/texture.js';\nimport type Painter from '../../render/painter.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\nimport type Framebuffer from '../../gl/framebuffer.js';\nimport type {RGBAImage} from '../../util/image.js';\nimport type SkyboxGeometry from '../../render/skybox_geometry.js';\nimport type {LightPosition} from '../light.js';\nimport {warnOnce, degToRad} from '../../util/util.js';\nimport {vec3, quat} from 'gl-matrix';\nimport assert from 'assert';\n\nfunction getCelestialDirection(azimuth: number, altitude: number, leftHanded: boolean) {\n const up = [0, 0, 1];\n const rotation = quat.identity([]);\n\n quat.rotateY(rotation, rotation, leftHanded ? -degToRad(azimuth) + Math.PI : degToRad(azimuth));\n quat.rotateX(rotation, rotation, -degToRad(altitude));\n vec3.transformQuat(up, up, rotation);\n\n return vec3.normalize(up, up);\n}\n\nclass SkyLayer extends StyleLayer {\n _transitionablePaint: Transitionable<PaintProps>;\n _transitioningPaint: Transitioning<PaintProps>;\n paint: PossiblyEvaluated<PaintProps>;\n _lightPosition: LightPosition;\n\n skyboxFbo: ?Framebuffer;\n skyboxTexture: ?WebGLTexture;\n _skyboxInvalidated: ?boolean;\n\n colorRamp: RGBAImage;\n colorRampTexture: ?Texture;\n\n skyboxGeometry: SkyboxGeometry;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n this._updateColorRamp();\n }\n\n _handleSpecialPaintPropertyUpdate(name: string) {\n if (name === 'sky-gradient') {\n this._updateColorRamp();\n } else if (name === 'sky-atmosphere-sun' ||\n name === 'sky-atmosphere-halo-color' ||\n name === 'sky-atmosphere-color' ||\n name === 'sky-atmosphere-sun-intensity') {\n this._skyboxInvalidated = true;\n }\n }\n\n _updateColorRamp() {\n const expression = this._transitionablePaint._values['sky-gradient'].value.expression;\n this.colorRamp = renderColorRamp({\n expression,\n evaluationKey: 'skyRadialProgress'\n });\n if (this.colorRampTexture) {\n this.colorRampTexture.destroy();\n this.colorRampTexture = null;\n }\n }\n\n needsSkyboxCapture(painter: Painter): boolean {\n if (!!this._skyboxInvalidated || !this.skyboxTexture || !this.skyboxGeometry) {\n return true;\n }\n if (!this.paint.get('sky-atmosphere-sun')) {\n const lightPosition = painter.style.light.properties.get('position');\n return this._lightPosition.azimuthal !== lightPosition.azimuthal ||\n this._lightPosition.polar !== lightPosition.polar;\n }\n return false;\n }\n\n getCenter(painter: Painter, leftHanded: boolean): [number, number, number] {\n const type = this.paint.get('sky-type');\n if (type === 'atmosphere') {\n const sunPosition = this.paint.get('sky-atmosphere-sun');\n const useLightPosition = !sunPosition;\n const light = painter.style.light;\n const lightPosition = light.properties.get('position');\n\n if (useLightPosition && light.properties.get('anchor') === 'viewport') {\n warnOnce('The sun direction is attached to a light with viewport anchor, lighting may behave unexpectedly.');\n }\n\n return useLightPosition ?\n getCelestialDirection(lightPosition.azimuthal, -lightPosition.polar + 90, leftHanded) :\n getCelestialDirection(sunPosition[0], -sunPosition[1] + 90, leftHanded);\n }\n assert(type === 'gradient');\n const direction = this.paint.get('sky-gradient-center');\n return getCelestialDirection(direction[0], -direction[1] + 90, leftHanded);\n }\n\n is3D(): boolean {\n return false;\n }\n\n isSky(): boolean {\n return true;\n }\n\n markSkyboxValid(painter: Painter) {\n this._skyboxInvalidated = false;\n this._lightPosition = painter.style.light.properties.get('position');\n }\n\n hasOffscreenPass(): boolean {\n return true;\n }\n\n getProgramIds(): string[] | null {\n const type = this.paint.get('sky-type');\n if (type === 'atmosphere') {\n return ['skyboxCapture', 'skybox'];\n } else if (type === 'gradient') {\n return ['skyboxGradient'];\n }\n return null;\n }\n}\n\nexport default SkyLayer;\n","// @flow\n\nimport type StyleLayer from './style_layer.js';\nimport circle from './style_layer/circle_style_layer.js';\nimport heatmap from './style_layer/heatmap_style_layer.js';\nimport hillshade from './style_layer/hillshade_style_layer.js';\nimport fill from './style_layer/fill_style_layer.js';\nimport fillExtrusion from './style_layer/fill_extrusion_style_layer.js';\nimport line from './style_layer/line_style_layer.js';\nimport symbol from './style_layer/symbol_style_layer.js';\nimport background from './style_layer/background_style_layer.js';\nimport raster from './style_layer/raster_style_layer.js';\nimport CustomStyleLayer from './style_layer/custom_style_layer.js';\nimport sky from './style_layer/sky_style_layer.js';\nimport type {CustomLayerInterface} from './style_layer/custom_style_layer.js';\n\nimport type {LayerSpecification} from '../style-spec/types.js';\n\nconst subclasses = {\n circle,\n heatmap,\n hillshade,\n fill,\n 'fill-extrusion': fillExtrusion,\n line,\n symbol,\n background,\n raster,\n sky\n};\n\nexport default function createStyleLayer(layer: LayerSpecification | CustomLayerInterface): StyleLayer | CustomStyleLayer {\n if (layer.type === 'custom') {\n return new CustomStyleLayer(layer);\n } else {\n return new subclasses[layer.type](layer);\n }\n}\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\n\nimport HeatmapBucket from '../../data/bucket/heatmap_bucket.js';\nimport {RGBAImage} from '../../util/image.js';\nimport properties from './heatmap_style_layer_properties.js';\nimport {renderColorRamp} from '../../util/color_ramp.js';\nimport {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js';\nimport {queryIntersectsCircle} from './circle_style_layer.js';\nimport {getMaximumPaintValue} from '../query_utils.js';\nimport Point from '@mapbox/point-geometry';\n\nimport type {Bucket, BucketParameters} from '../../data/bucket.js';\nimport type Texture from '../../render/texture.js';\nimport type Framebuffer from '../../gl/framebuffer.js';\nimport type {PaintProps} from './heatmap_style_layer_properties.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\nimport ProgramConfiguration from '../../data/program_configuration.js';\nimport type {TilespaceQueryGeometry} from '../query_geometry.js';\nimport type {DEMSampler} from '../../terrain/elevation.js';\nimport type {FeatureState} from '../../style-spec/expression/index.js';\nimport type Transform from '../../geo/transform.js';\nimport type CircleBucket from '../../data/bucket/circle_bucket.js';\n\nclass HeatmapStyleLayer extends StyleLayer {\n\n heatmapFbo: ?Framebuffer;\n colorRamp: RGBAImage;\n colorRampTexture: ?Texture;\n\n _transitionablePaint: Transitionable<PaintProps>;\n _transitioningPaint: Transitioning<PaintProps>;\n paint: PossiblyEvaluated<PaintProps>;\n\n createBucket(parameters: BucketParameters<*>): HeatmapBucket {\n return new HeatmapBucket(parameters);\n }\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n\n // make sure color ramp texture is generated for default heatmap color too\n this._updateColorRamp();\n }\n\n _handleSpecialPaintPropertyUpdate(name: string) {\n if (name === 'heatmap-color') {\n this._updateColorRamp();\n }\n }\n\n _updateColorRamp() {\n const expression = this._transitionablePaint._values['heatmap-color'].value.expression;\n this.colorRamp = renderColorRamp({\n expression,\n evaluationKey: 'heatmapDensity',\n image: this.colorRamp\n });\n this.colorRampTexture = null;\n }\n\n resize() {\n if (this.heatmapFbo) {\n this.heatmapFbo.destroy();\n this.heatmapFbo = null;\n }\n }\n\n queryRadius(bucket: Bucket): number {\n return getMaximumPaintValue('heatmap-radius', this, ((bucket: any): CircleBucket<*>));\n }\n\n queryIntersectsFeature(queryGeometry: TilespaceQueryGeometry,\n feature: VectorTileFeature,\n featureState: FeatureState,\n geometry: Array<Array<Point>>,\n zoom: number,\n transform: Transform,\n pixelPosMatrix: Float32Array,\n elevationHelper: ?DEMSampler): boolean {\n\n const size = this.paint.get('heatmap-radius').evaluate(feature, featureState);\n return queryIntersectsCircle(\n queryGeometry, geometry, transform, pixelPosMatrix, elevationHelper,\n true, true, new Point(0, 0), size);\n }\n\n hasOffscreenPass(): boolean {\n return this.paint.get('heatmap-opacity') !== 0 && this.visibility !== 'none';\n }\n\n getProgramIds(): Array<string> {\n return ['heatmap', 'heatmapTexture'];\n }\n\n getProgramConfiguration(zoom: number): ProgramConfiguration {\n return new ProgramConfiguration(this, zoom);\n }\n}\n\nexport default HeatmapStyleLayer;\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\n\nimport properties from './hillshade_style_layer_properties.js';\nimport {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js';\n\nimport type {PaintProps} from './hillshade_style_layer_properties.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\n\nclass HillshadeStyleLayer extends StyleLayer {\n _transitionablePaint: Transitionable<PaintProps>;\n _transitioningPaint: Transitioning<PaintProps>;\n paint: PossiblyEvaluated<PaintProps>;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n }\n\n hasOffscreenPass(): boolean {\n return this.paint.get('hillshade-exaggeration') !== 0 && this.visibility !== 'none';\n }\n\n getProgramIds(): Array<string> {\n return ['hillshade', 'hillshadePrepare'];\n }\n}\n\nexport default HillshadeStyleLayer;\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\n\nimport FillBucket from '../../data/bucket/fill_bucket.js';\nimport {polygonIntersectsMultiPolygon} from '../../util/intersection_tests.js';\nimport {translateDistance, translate} from '../query_utils.js';\nimport properties from './fill_style_layer_properties.js';\nimport {Transitionable, Transitioning, Layout, PossiblyEvaluated} from '../properties.js';\nimport ProgramConfiguration from '../../data/program_configuration.js';\n\nimport type {FeatureState} from '../../style-spec/expression/index.js';\nimport type {BucketParameters} from '../../data/bucket.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {LayoutProps, PaintProps} from './fill_style_layer_properties.js';\nimport type EvaluationParameters from '../evaluation_parameters.js';\nimport type Transform from '../../geo/transform.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\nimport type {TilespaceQueryGeometry} from '../query_geometry.js';\n\nclass FillStyleLayer extends StyleLayer {\n _unevaluatedLayout: Layout<LayoutProps>;\n layout: PossiblyEvaluated<LayoutProps>;\n\n _transitionablePaint: Transitionable<PaintProps>;\n _transitioningPaint: Transitioning<PaintProps>;\n paint: PossiblyEvaluated<PaintProps>;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n }\n\n getProgramIds(): string[] {\n const pattern = this.paint.get('fill-pattern');\n const image = pattern && pattern.constantOr((1: any));\n\n const ids = [image ? 'fillPattern' : 'fill'];\n\n if (this.paint.get('fill-antialias')) {\n ids.push(image && !this.getPaintProperty('fill-outline-color') ? 'fillOutlinePattern' : 'fillOutline');\n }\n\n return ids;\n }\n\n getProgramConfiguration(zoom: number): ProgramConfiguration {\n return new ProgramConfiguration(this, zoom);\n }\n\n recalculate(parameters: EvaluationParameters, availableImages: Array<string>) {\n super.recalculate(parameters, availableImages);\n\n const outlineColor = this.paint._values['fill-outline-color'];\n if (outlineColor.value.kind === 'constant' && outlineColor.value.value === undefined) {\n this.paint._values['fill-outline-color'] = this.paint._values['fill-color'];\n }\n }\n\n createBucket(parameters: BucketParameters<*>): FillBucket {\n return new FillBucket(parameters);\n }\n\n queryRadius(): number {\n return translateDistance(this.paint.get('fill-translate'));\n }\n\n queryIntersectsFeature(queryGeometry: TilespaceQueryGeometry,\n feature: VectorTileFeature,\n featureState: FeatureState,\n geometry: Array<Array<Point>>,\n zoom: number,\n transform: Transform): boolean {\n if (queryGeometry.queryGeometry.isAboveHorizon) return false;\n\n const translatedPolygon = translate(queryGeometry.tilespaceGeometry,\n this.paint.get('fill-translate'),\n this.paint.get('fill-translate-anchor'),\n transform.angle, queryGeometry.pixelToTileUnitsFactor);\n return polygonIntersectsMultiPolygon(translatedPolygon, geometry);\n }\n\n isTileClipped(): boolean {\n return true;\n }\n}\n\nexport default FillStyleLayer;\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\n\nimport properties from './background_style_layer_properties.js';\nimport {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js';\n\nimport type {PaintProps} from './background_style_layer_properties.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\n\nclass BackgroundStyleLayer extends StyleLayer {\n _transitionablePaint: Transitionable<PaintProps>;\n _transitioningPaint: Transitioning<PaintProps>;\n paint: PossiblyEvaluated<PaintProps>;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n }\n\n getProgramIds(): Array<string> {\n const image = this.paint.get('background-pattern');\n return [image ? 'backgroundPattern' : 'background'];\n }\n}\n\nexport default BackgroundStyleLayer;\n","// @flow\n\nimport StyleLayer from '../style_layer.js';\n\nimport properties from './raster_style_layer_properties.js';\nimport {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js';\n\nimport type {PaintProps} from './raster_style_layer_properties.js';\nimport type {LayerSpecification} from '../../style-spec/types.js';\n\nclass RasterStyleLayer extends StyleLayer {\n _transitionablePaint: Transitionable<PaintProps>;\n _transitioningPaint: Transitioning<PaintProps>;\n paint: PossiblyEvaluated<PaintProps>;\n\n constructor(layer: LayerSpecification) {\n super(layer, properties);\n }\n\n getProgramIds(): Array<string> {\n return ['raster'];\n }\n}\n\nexport default RasterStyleLayer;\n","// @flow\n\nimport window from '../util/window.js';\n\nimport type Context from '../gl/context.js';\nimport type {RGBAImage, AlphaImage} from '../util/image.js';\n\nexport type TextureFormat =\n | $PropertyType<WebGLRenderingContext, 'RGBA'>\n | $PropertyType<WebGLRenderingContext, 'ALPHA'>;\nexport type TextureFilter =\n | $PropertyType<WebGLRenderingContext, 'LINEAR'>\n | $PropertyType<WebGLRenderingContext, 'LINEAR_MIPMAP_NEAREST'>\n | $PropertyType<WebGLRenderingContext, 'NEAREST'>;\nexport type TextureWrap =\n | $PropertyType<WebGLRenderingContext, 'REPEAT'>\n | $PropertyType<WebGLRenderingContext, 'CLAMP_TO_EDGE'>\n | $PropertyType<WebGLRenderingContext, 'MIRRORED_REPEAT'>;\n\ntype EmptyImage = {\n width: number,\n height: number,\n data: null\n}\n\nexport type TextureImage =\n | RGBAImage\n | AlphaImage\n | HTMLImageElement\n | HTMLCanvasElement\n | HTMLVideoElement\n | ImageData\n | EmptyImage\n | ImageBitmap;\n\nclass Texture {\n context: Context;\n size: [number, number];\n texture: WebGLTexture;\n format: TextureFormat;\n filter: ?TextureFilter;\n wrap: ?TextureWrap;\n useMipmap: boolean;\n\n constructor(context: Context, image: TextureImage, format: TextureFormat, options: ?{ premultiply?: boolean, useMipmap?: boolean }) {\n this.context = context;\n this.format = format;\n this.texture = context.gl.createTexture();\n this.update(image, options);\n }\n\n update(image: TextureImage, options: ?{premultiply?: boolean, useMipmap?: boolean}, position?: { x: number, y: number }) {\n const {width, height} = image;\n const {context} = this;\n const {gl} = context;\n const {HTMLImageElement, HTMLCanvasElement, HTMLVideoElement, ImageData, ImageBitmap} = window;\n\n gl.bindTexture(gl.TEXTURE_2D, this.texture);\n\n context.pixelStoreUnpackFlipY.set(false);\n context.pixelStoreUnpack.set(1);\n context.pixelStoreUnpackPremultiplyAlpha.set(this.format === gl.RGBA && (!options || options.premultiply !== false));\n\n if (!position && (!this.size || this.size[0] !== width || this.size[1] !== height)) {\n this.size = [width, height];\n\n if (image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof HTMLVideoElement || image instanceof ImageData || (ImageBitmap && image instanceof ImageBitmap)) {\n gl.texImage2D(gl.TEXTURE_2D, 0, this.format, this.format, gl.UNSIGNED_BYTE, image);\n } else {\n // $FlowFixMe prop-missing - Flow can't refine image type here\n gl.texImage2D(gl.TEXTURE_2D, 0, this.format, width, height, 0, this.format, gl.UNSIGNED_BYTE, image.data);\n }\n\n } else {\n const {x, y} = position || {x: 0, y: 0};\n if (image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof HTMLVideoElement || image instanceof ImageData || (ImageBitmap && image instanceof ImageBitmap)) {\n gl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, gl.RGBA, gl.UNSIGNED_BYTE, image);\n } else {\n // $FlowFixMe prop-missing - Flow can't refine image type here\n gl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, image.data);\n }\n }\n\n this.useMipmap = Boolean(options && options.useMipmap && this.isSizePowerOfTwo());\n if (this.useMipmap) {\n gl.generateMipmap(gl.TEXTURE_2D);\n }\n }\n\n bind(filter: TextureFilter, wrap: TextureWrap) {\n const {context} = this;\n const {gl} = context;\n gl.bindTexture(gl.TEXTURE_2D, this.texture);\n\n if (filter !== this.filter) {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER,\n this.useMipmap ? (filter === gl.NEAREST ? gl.NEAREST_MIPMAP_NEAREST : gl.LINEAR_MIPMAP_NEAREST) : filter\n );\n this.filter = filter;\n }\n\n if (wrap !== this.wrap) {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrap);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrap);\n this.wrap = wrap;\n }\n }\n\n isSizePowerOfTwo(): boolean {\n return this.size[0] === this.size[1] && (Math.log(this.size[0]) / Math.LN2) % 1 === 0;\n }\n\n destroy() {\n const {gl} = this.context;\n gl.deleteTexture(this.texture);\n this.texture = (null: any);\n }\n}\n\nexport default Texture;\n","// @flow\n\nimport {warnOnce, nextPowerOfTwo} from '../util/util.js';\nimport {AlphaImage} from '../util/image.js';\nimport {register} from '../util/web_worker_transfer.js';\n\nimport type {SpritePosition, SpritePositions} from '../util/image.js';\n\ntype DashRange = {|\n isDash: boolean,\n left: number,\n right: number,\n zeroLength: boolean\n|};\n\n/**\n * A LineAtlas lets us reuse rendered dashed lines\n * by writing many of them to a texture and then fetching their positions\n * using .getDash.\n *\n * @param {number} width\n * @param {number} height\n * @private\n */\nclass LineAtlas {\n width: number;\n height: number;\n nextRow: number;\n image: AlphaImage;\n positions: SpritePositions;\n uploaded: boolean;\n\n constructor(width: number, height: number) {\n this.width = width;\n this.height = height;\n this.nextRow = 0;\n this.image = new AlphaImage({width, height});\n this.positions = {};\n this.uploaded = false;\n }\n\n /**\n * Get a dash line pattern.\n *\n * @param {Array<number>} dasharray\n * @param {string} lineCap the type of line caps to be added to dashes\n * @returns {Object} position of dash texture in { y, height, width }\n * @private\n */\n getDash(dasharray: Array<number>, lineCap: string): SpritePosition {\n const key = this.getKey(dasharray, lineCap);\n return this.positions[key];\n }\n\n trim() {\n const width = this.width;\n const height = this.height = nextPowerOfTwo(this.nextRow);\n this.image.resize({width, height});\n }\n\n getKey(dasharray: Array<number>, lineCap: string): string {\n return dasharray.join(',') + lineCap;\n }\n\n getDashRanges(dasharray: Array<number>, lineAtlasWidth: number, stretch: number): Array<DashRange> {\n // If dasharray has an odd length, both the first and last parts\n // are dashes and should be joined seamlessly.\n const oddDashArray = dasharray.length % 2 === 1;\n\n const ranges = [];\n\n let left = oddDashArray ? -dasharray[dasharray.length - 1] * stretch : 0;\n let right = dasharray[0] * stretch;\n let isDash = true;\n\n ranges.push({left, right, isDash, zeroLength: dasharray[0] === 0});\n\n let currentDashLength = dasharray[0];\n for (let i = 1; i < dasharray.length; i++) {\n isDash = !isDash;\n\n const dashLength = dasharray[i];\n left = currentDashLength * stretch;\n currentDashLength += dashLength;\n right = currentDashLength * stretch;\n\n ranges.push({left, right, isDash, zeroLength: dashLength === 0});\n }\n\n return ranges;\n }\n\n addRoundDash(ranges: Array<DashRange>, stretch: number, n: number) {\n const halfStretch = stretch / 2;\n\n for (let y = -n; y <= n; y++) {\n const row = this.nextRow + n + y;\n const index = this.width * row;\n let currIndex = 0;\n let range = ranges[currIndex];\n\n for (let x = 0; x < this.width; x++) {\n if (x / range.right > 1) { range = ranges[++currIndex]; }\n\n const distLeft = Math.abs(x - range.left);\n const distRight = Math.abs(x - range.right);\n const minDist = Math.min(distLeft, distRight);\n let signedDistance;\n\n const distMiddle = y / n * (halfStretch + 1);\n if (range.isDash) {\n const distEdge = halfStretch - Math.abs(distMiddle);\n signedDistance = Math.sqrt(minDist * minDist + distEdge * distEdge);\n } else {\n signedDistance = halfStretch - Math.sqrt(minDist * minDist + distMiddle * distMiddle);\n }\n\n this.image.data[index + x] = Math.max(0, Math.min(255, signedDistance + 128));\n }\n }\n }\n\n addRegularDash(ranges: Array<DashRange>, capLength: number) {\n\n // Collapse any zero-length range\n // Collapse neighbouring same-type parts into a single part\n for (let i = ranges.length - 1; i >= 0; --i) {\n const part = ranges[i];\n const next = ranges[i + 1];\n if (part.zeroLength) {\n ranges.splice(i, 1);\n } else if (next && next.isDash === part.isDash) {\n next.left = part.left;\n ranges.splice(i, 1);\n }\n }\n\n // Combine the first and last parts if possible\n const first = ranges[0];\n const last = ranges[ranges.length - 1];\n if (first.isDash === last.isDash) {\n first.left = last.left - this.width;\n last.right = first.right + this.width;\n }\n\n const index = this.width * this.nextRow;\n let currIndex = 0;\n let range = ranges[currIndex];\n\n for (let x = 0; x < this.width; x++) {\n if (x / range.right > 1) {\n range = ranges[++currIndex];\n }\n\n const distLeft = Math.abs(x - range.left);\n const distRight = Math.abs(x - range.right);\n\n const minDist = Math.min(distLeft, distRight);\n const signedDistance = (range.isDash ? minDist : -minDist) + capLength;\n\n this.image.data[index + x] = Math.max(0, Math.min(255, signedDistance + 128));\n }\n }\n\n addDash(dasharray: Array<number>, lineCap: string): null | SpritePosition {\n const key = this.getKey(dasharray, lineCap);\n if (this.positions[key]) return this.positions[key];\n\n const round = lineCap === 'round';\n const n = round ? 7 : 0;\n const height = 2 * n + 1;\n\n if (this.nextRow + height > this.height) {\n warnOnce('LineAtlas out of space');\n return null;\n }\n\n // dasharray is empty, draws a full line (no dash or no gap length represented, default behavior)\n if (dasharray.length === 0) {\n // insert a single dash range in order to draw a full line\n dasharray.push(1);\n }\n\n let length = 0;\n for (let i = 0; i < dasharray.length; i++) {\n if (dasharray[i] < 0) {\n warnOnce('Negative value is found in line dasharray, replacing values with 0');\n dasharray[i] = 0;\n }\n length += dasharray[i];\n }\n\n if (length !== 0) {\n const stretch = this.width / length;\n const ranges = this.getDashRanges(dasharray, this.width, stretch);\n\n if (round) {\n this.addRoundDash(ranges, stretch, n);\n } else {\n const capLength = lineCap === 'square' ? 0.5 * stretch : 0;\n this.addRegularDash(ranges, capLength);\n }\n }\n\n const y = this.nextRow + n;\n\n this.nextRow += height;\n\n const pos = {\n tl: [y, n],\n br: [length, 0]\n };\n this.positions[key] = pos;\n return pos;\n }\n}\n\nregister(LineAtlas, 'LineAtlas');\n\nexport default LineAtlas;\n","// @flow\n\n/**\n * Invokes the wrapped function in a non-blocking way when trigger() is called. Invocation requests\n * are ignored until the function was actually invoked.\n *\n * @private\n */\nclass ThrottledInvoker {\n _channel: ?MessageChannel;\n _triggered: boolean;\n _callback: Function\n\n constructor(callback: Function) {\n this._callback = callback;\n this._triggered = false;\n if (typeof MessageChannel !== 'undefined') {\n this._channel = new MessageChannel();\n this._channel.port2.onmessage = () => {\n this._triggered = false;\n this._callback();\n };\n }\n }\n\n trigger() {\n if (!this._triggered) {\n this._triggered = true;\n if (this._channel) {\n this._channel.port1.postMessage(true);\n } else {\n setTimeout(() => {\n this._triggered = false;\n this._callback();\n }, 0);\n }\n }\n }\n\n remove() {\n this._channel = undefined;\n this._callback = () => {};\n }\n}\n\nexport default ThrottledInvoker;\n","// @flow\n\nimport ThrottledInvoker from './throttled_invoker.js';\nimport {bindAll, isWorker} from './util.js';\nimport {PerformanceUtils} from './performance.js';\n\nimport type {Cancelable} from '../types/cancelable.js';\n\ntype TaskMetadata = {\n type: 'message' | 'maybePrepare' | 'parseTile',\n isSymbolTile: ?boolean,\n zoom?: number\n};\n\ntype TaskFunction = () => void;\n\ntype Task = {\n fn: TaskFunction,\n metadata: TaskMetadata,\n priority: number,\n id: number\n};\n\nclass Scheduler {\n\n tasks: { [number]: Task };\n taskQueue: Array<number>;\n invoker: ThrottledInvoker;\n nextId: number;\n\n constructor() {\n this.tasks = {};\n this.taskQueue = [];\n bindAll(['process'], this);\n this.invoker = new ThrottledInvoker(this.process);\n\n this.nextId = 0;\n }\n\n add(fn: TaskFunction, metadata: TaskMetadata): Cancelable {\n const id = this.nextId++;\n const priority = getPriority(metadata);\n\n if (priority === 0) {\n // Process tasks with priority 0 immediately. Do not yield to the event loop.\n const m = isWorker() ? PerformanceUtils.beginMeasure('workerTask') : undefined;\n try {\n fn();\n } finally {\n if (m) PerformanceUtils.endMeasure(m);\n }\n return {\n cancel: () => {}\n };\n }\n\n this.tasks[id] = {fn, metadata, priority, id};\n this.taskQueue.push(id);\n this.invoker.trigger();\n return {\n cancel: () => {\n delete this.tasks[id];\n }\n };\n }\n\n process() {\n const m = isWorker() ? PerformanceUtils.beginMeasure('workerTask') : undefined;\n try {\n this.taskQueue = this.taskQueue.filter(id => !!this.tasks[id]);\n\n if (!this.taskQueue.length) {\n return;\n }\n const id = this.pick();\n if (id === null) return;\n\n const task = this.tasks[id];\n delete this.tasks[id];\n // Schedule another process call if we know there's more to process _before_ invoking the\n // current task. This is necessary so that processing continues even if the current task\n // doesn't execute successfully.\n if (this.taskQueue.length) {\n this.invoker.trigger();\n }\n if (!task) {\n // If the task ID doesn't have associated task data anymore, it was canceled.\n return;\n }\n\n task.fn();\n } finally {\n if (m) PerformanceUtils.endMeasure(m);\n }\n }\n\n pick(): null | number {\n let minIndex = null;\n let minPriority = Infinity;\n for (let i = 0; i < this.taskQueue.length; i++) {\n const id = this.taskQueue[i];\n const task = this.tasks[id];\n if (task.priority < minPriority) {\n minPriority = task.priority;\n minIndex = i;\n }\n }\n if (minIndex === null) return null;\n const id = this.taskQueue[minIndex];\n this.taskQueue.splice(minIndex, 1);\n return id;\n }\n\n remove() {\n this.invoker.remove();\n }\n}\n\nfunction getPriority({type, isSymbolTile, zoom}: TaskMetadata): number {\n zoom = zoom || 0;\n if (type === 'message') return 0;\n if (type === 'maybePrepare' && !isSymbolTile) return 100 - zoom;\n if (type === 'parseTile' && !isSymbolTile) return 200 - zoom;\n if (type === 'parseTile' && isSymbolTile) return 300 - zoom;\n if (type === 'maybePrepare' && isSymbolTile) return 400 - zoom;\n return 500;\n}\n\nexport default Scheduler;\n","// @flow strict\n\nimport assert from 'assert';\n\nclass DictionaryCoder {\n _stringToNumber: {[_: string]: number };\n _numberToString: Array<string>;\n\n constructor(strings: Array<string>) {\n this._stringToNumber = {};\n this._numberToString = [];\n for (let i = 0; i < strings.length; i++) {\n const string = strings[i];\n this._stringToNumber[string] = i;\n this._numberToString[i] = string;\n }\n }\n\n encode(string: string): number {\n assert(string in this._stringToNumber);\n return this._stringToNumber[string];\n }\n\n decode(n: number): string {\n assert(n < this._numberToString.length);\n return this._numberToString[n];\n }\n}\n\nexport default DictionaryCoder;\n","// @flow\nimport type {LayerSpecification} from '../style-spec/types.js';\nimport type {GeoJSONGeometry, GeoJSONFeature} from '@mapbox/geojson-types';\n\n// we augment GeoJSON with custom properties in query*Features results\nexport type QueryFeature = $ReadOnly<GeoJSONFeature> & {\n layer?: ?LayerSpecification;\n [key: string]: mixed;\n};\n\nconst customProps = ['tile', 'layer', 'source', 'sourceLayer', 'state'];\n\nclass Feature {\n type: 'Feature';\n _geometry: ?GeoJSONGeometry;\n properties: {};\n id: number | string | void;\n _vectorTileFeature: VectorTileFeature;\n _x: number;\n _y: number;\n _z: number;\n\n tile: ?mixed;\n layer: ?LayerSpecification;\n source: ?mixed;\n sourceLayer: ?mixed;\n state: ?mixed;\n\n constructor(vectorTileFeature: VectorTileFeature, z: number, x: number, y: number, id: string | number | void) {\n this.type = 'Feature';\n\n this._vectorTileFeature = vectorTileFeature;\n this._z = z;\n this._x = x;\n this._y = y;\n\n this.properties = vectorTileFeature.properties;\n this.id = id;\n }\n\n get geometry(): ?GeoJSONGeometry {\n if (this._geometry === undefined) {\n this._geometry = this._vectorTileFeature.toGeoJSON(this._x, this._y, this._z).geometry;\n }\n return this._geometry;\n }\n\n set geometry(g: ?GeoJSONGeometry) {\n this._geometry = g;\n }\n\n toJSON(): QueryFeature {\n const json: QueryFeature = {\n type: 'Feature',\n geometry: this.geometry,\n properties: this.properties\n };\n if (this.id !== undefined) json.id = this.id;\n for (const key of customProps) {\n // Flow doesn't support indexed access for classes https://github.com/facebook/flow/issues/1323\n if ((this: any)[key] !== undefined) json[key] = (this: any)[key];\n }\n return json;\n }\n}\n\nexport default Feature;\n","// @flow\n// logic for generating non-Mercator adaptive raster tile reprojection meshes with MARTINI\n\nimport tileTransform from '../geo/projection/tile_transform.js';\nimport EXTENT from '../data/extent.js';\nimport {lngFromMercatorX, latFromMercatorY} from '../geo/mercator_coordinate.js';\nimport {TileBoundsArray, TriangleIndexArray} from '../data/array_types.js';\n\nimport type {CanonicalTileID} from './tile_id.js';\nimport type Projection from '../geo/projection/projection.js';\n\nconst meshSize = 32;\nconst gridSize = meshSize + 1;\n\nconst numTriangles = meshSize * meshSize * 2 - 2;\nconst numParentTriangles = numTriangles - meshSize * meshSize;\n\nconst coords = new Uint16Array(numTriangles * 4);\n\n// precalculate RTIN triangle coordinates\nfor (let i = 0; i < numTriangles; i++) {\n let id = i + 2;\n let ax = 0, ay = 0, bx = 0, by = 0, cx = 0, cy = 0;\n\n if (id & 1) {\n bx = by = cx = meshSize; // bottom-left triangle\n\n } else {\n ax = ay = cy = meshSize; // top-right triangle\n }\n\n while ((id >>= 1) > 1) {\n const mx = (ax + bx) >> 1;\n const my = (ay + by) >> 1;\n\n if (id & 1) { // left half\n bx = ax; by = ay;\n ax = cx; ay = cy;\n\n } else { // right half\n ax = bx; ay = by;\n bx = cx; by = cy;\n }\n\n cx = mx; cy = my;\n }\n\n const k = i * 4;\n coords[k + 0] = ax;\n coords[k + 1] = ay;\n coords[k + 2] = bx;\n coords[k + 3] = by;\n}\n\n// temporary arrays we'll reuse for MARTINI mesh code\nconst reprojectedCoords = new Uint16Array(gridSize * gridSize * 2);\nconst used = new Uint8Array(gridSize * gridSize);\nconst indexMap = new Uint16Array(gridSize * gridSize);\n\ntype TileMesh = {\n vertices: TileBoundsArray,\n indices: TriangleIndexArray\n};\n\n// There can be visible seams between neighbouring tiles because of precision issues\n// and resampling differences. Adding a bit of padding around the edges of tiles hides\n// most of these issues.\nconst commonRasterTileSize = 256;\nconst paddingSize = meshSize / commonRasterTileSize / 4;\nfunction seamPadding(n) {\n if (n === 0) return -paddingSize;\n else if (n === gridSize - 1) return paddingSize;\n else return 0;\n}\n\nexport default function getTileMesh(canonical: CanonicalTileID, projection: Projection): TileMesh {\n const cs = tileTransform(canonical, projection);\n const z2 = Math.pow(2, canonical.z);\n\n for (let y = 0; y < gridSize; y++) {\n for (let x = 0; x < gridSize; x++) {\n const lng = lngFromMercatorX((canonical.x + (x + seamPadding(x)) / meshSize) / z2);\n const lat = latFromMercatorY((canonical.y + (y + seamPadding(y)) / meshSize) / z2);\n const p = projection.project(lng, lat);\n const k = y * gridSize + x;\n reprojectedCoords[2 * k + 0] = Math.round((p.x * cs.scale - cs.x) * EXTENT);\n reprojectedCoords[2 * k + 1] = Math.round((p.y * cs.scale - cs.y) * EXTENT);\n }\n }\n\n used.fill(0);\n indexMap.fill(0);\n\n // iterate over all possible triangles, starting from the smallest level\n for (let i = numTriangles - 1; i >= 0; i--) {\n const k = i * 4;\n const ax = coords[k + 0];\n const ay = coords[k + 1];\n const bx = coords[k + 2];\n const by = coords[k + 3];\n const mx = (ax + bx) >> 1;\n const my = (ay + by) >> 1;\n const cx = mx + my - ay;\n const cy = my + ax - mx;\n\n const aIndex = ay * gridSize + ax;\n const bIndex = by * gridSize + bx;\n const mIndex = my * gridSize + mx;\n\n // calculate error in the middle of the long edge of the triangle\n const rax = reprojectedCoords[2 * aIndex + 0];\n const ray = reprojectedCoords[2 * aIndex + 1];\n const rbx = reprojectedCoords[2 * bIndex + 0];\n const rby = reprojectedCoords[2 * bIndex + 1];\n const rmx = reprojectedCoords[2 * mIndex + 0];\n const rmy = reprojectedCoords[2 * mIndex + 1];\n\n // raster tiles are typically 512px, and we use 1px as an error threshold; 8192 / 512 = 16\n const isUsed = Math.hypot((rax + rbx) / 2 - rmx, (ray + rby) / 2 - rmy) >= 16;\n\n used[mIndex] = used[mIndex] || (isUsed ? 1 : 0);\n\n if (i < numParentTriangles) { // bigger triangles; accumulate error with children\n const leftChildIndex = ((ay + cy) >> 1) * gridSize + ((ax + cx) >> 1);\n const rightChildIndex = ((by + cy) >> 1) * gridSize + ((bx + cx) >> 1);\n used[mIndex] = used[mIndex] || used[leftChildIndex] || used[rightChildIndex];\n }\n }\n\n const vertices = new TileBoundsArray();\n const indices = new TriangleIndexArray();\n\n let numVertices = 0;\n\n function addVertex(x, y) {\n const k = y * gridSize + x;\n\n if (indexMap[k] === 0) {\n vertices.emplaceBack(\n reprojectedCoords[2 * k + 0],\n reprojectedCoords[2 * k + 1],\n x * EXTENT / meshSize,\n y * EXTENT / meshSize);\n\n // save new vertex index so that we can reuse it\n indexMap[k] = ++numVertices;\n }\n\n return indexMap[k] - 1;\n }\n\n function addTriangles(ax, ay, bx, by, cx, cy) {\n const mx = (ax + bx) >> 1;\n const my = (ay + by) >> 1;\n\n if (Math.abs(ax - cx) + Math.abs(ay - cy) > 1 && used[my * gridSize + mx]) {\n // triangle doesn't approximate the surface well enough; drill down further\n addTriangles(cx, cy, ax, ay, mx, my);\n addTriangles(bx, by, cx, cy, mx, my);\n\n } else {\n const ai = addVertex(ax, ay);\n const bi = addVertex(bx, by);\n const ci = addVertex(cx, cy);\n indices.emplaceBack(ai, bi, ci);\n }\n }\n\n addTriangles(0, 0, meshSize, meshSize, meshSize, 0);\n addTriangles(meshSize, meshSize, 0, 0, 0, meshSize);\n\n return {vertices, indices};\n}\n","// @flow\nimport {createLayout} from '../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../util/struct_array.js';\n\nexport default (createLayout([\n {name: 'a_pos', type: 'Int16', components: 2},\n {name: 'a_texture_pos', type: 'Int16', components: 2}\n]): StructArrayLayout);\n","// @flow\n\nimport {uniqueId, parseCacheControl} from '../util/util.js';\nimport {deserialize as deserializeBucket} from '../data/bucket.js';\nimport FeatureIndex from '../data/feature_index.js';\nimport GeoJSONFeature from '../util/vectortile_to_geojson.js';\nimport featureFilter from '../style-spec/feature_filter/index.js';\nimport SymbolBucket from '../data/bucket/symbol_bucket.js';\nimport {CollisionBoxArray, TileBoundsArray, PosArray, TriangleIndexArray, LineStripIndexArray, PosGlobeExtArray} from '../data/array_types.js';\nimport Texture from '../render/texture.js';\nimport browser from '../util/browser.js';\nimport {Debug} from '../util/debug.js';\nimport toEvaluationFeature from '../data/evaluation_feature.js';\nimport EvaluationParameters from '../style/evaluation_parameters.js';\nimport SourceFeatureState from '../source/source_state.js';\nimport {lazyLoadRTLTextPlugin} from './rtl_text_plugin.js';\nimport {TileSpaceDebugBuffer} from '../data/debug_viz.js';\nimport Color from '../style-spec/util/color.js';\nimport loadGeometry from '../data/load_geometry.js';\nimport earcut from 'earcut';\nimport getTileMesh from './tile_mesh.js';\nimport tileTransform from '../geo/projection/tile_transform.js';\n\nimport boundsAttributes from '../data/bounds_attributes.js';\nimport posAttributes, {posAttributesGlobeExt} from '../data/pos_attributes.js';\n\nimport EXTENT from '../data/extent.js';\nimport Point from '@mapbox/point-geometry';\nimport SegmentVector from '../data/segment.js';\n\nconst CLOCK_SKEW_RETRY_TIMEOUT = 30000;\n\nimport type {Bucket} from '../data/bucket.js';\nimport FillBucket from '../data/bucket/fill_bucket.js';\nimport LineBucket from '../data/bucket/line_bucket.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type {WorkerTileResult} from './worker_source.js';\nimport type Actor from '../util/actor.js';\nimport type DEMData from '../data/dem_data.js';\nimport type {AlphaImage, SpritePositions} from '../util/image.js';\nimport type ImageAtlas from '../render/image_atlas.js';\nimport type LineAtlas from '../render/line_atlas.js';\nimport type ImageManager from '../render/image_manager.js';\nimport type Context from '../gl/context.js';\nimport type {CanonicalTileID, OverscaledTileID} from './tile_id.js';\nimport type Framebuffer from '../gl/framebuffer.js';\nimport type Transform from '../geo/transform.js';\nimport type {LayerFeatureStates} from './source_state.js';\nimport type {Cancelable} from '../types/cancelable.js';\nimport type {FilterSpecification} from '../style-spec/types.js';\nimport type {TilespaceQueryGeometry} from '../style/query_geometry.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type Projection from '../geo/projection/projection.js';\nimport type {TileTransform} from '../geo/projection/tile_transform.js';\nimport type {QueryResult} from '../data/feature_index.js';\nimport type Painter from '../render/painter.js';\nimport type {QueryFeature} from '../util/vectortile_to_geojson.js';\nimport {globeTileBounds, globeNormalizeECEF, tileCoordToECEF} from '../geo/projection/globe_util.js';\nimport {vec3} from 'gl-matrix';\nimport type {TextureImage} from '../render/texture.js';\n\nexport type TileState =\n | 'loading' // Tile data is in the process of loading.\n | 'loaded' // Tile data has been loaded. Tile can be rendered.\n | 'reloading' // Tile data has been loaded and is being updated. Tile can be rendered.\n | 'unloaded' // Tile data has been deleted.\n | 'errored' // Tile data was not loaded because of an error.\n | 'expired'; /* Tile data was previously loaded, but has expired per its\n * HTTP headers and is in the process of refreshing. */\n\n// a tile bounds outline used for getting reprojected tile geometry in non-mercator projections\nconst BOUNDS_FEATURE = (() => {\n return {\n type: 2,\n extent: EXTENT,\n loadGeometry() {\n return [[\n new Point(0, 0),\n new Point(EXTENT + 1, 0),\n new Point(EXTENT + 1, EXTENT + 1),\n new Point(0, EXTENT + 1),\n new Point(0, 0)\n ]];\n }\n };\n})();\n\n/**\n * A tile object is the combination of a Coordinate, which defines\n * its place, as well as a unique ID and data tracking for its content\n *\n * @private\n */\nclass Tile {\n tileID: OverscaledTileID;\n uid: number;\n uses: number;\n tileSize: number;\n tileZoom: number;\n buckets: {[_: string]: Bucket};\n latestFeatureIndex: ?FeatureIndex;\n latestRawTileData: ?ArrayBuffer;\n imageAtlas: ?ImageAtlas;\n imageAtlasTexture: Texture;\n lineAtlas: ?LineAtlas;\n lineAtlasTexture: Texture;\n glyphAtlasImage: ?AlphaImage;\n glyphAtlasTexture: Texture;\n expirationTime: any;\n expiredRequestCount: number;\n state: TileState;\n timeAdded: any;\n fadeEndTime: any;\n collisionBoxArray: ?CollisionBoxArray;\n redoWhenDone: boolean;\n showCollisionBoxes: boolean;\n placementSource: any;\n actor: ?Actor;\n vtLayers: {[_: string]: VectorTileLayer};\n isSymbolTile: ?boolean;\n isRaster: ?boolean;\n _tileTransform: TileTransform;\n\n neighboringTiles: ?Object;\n dem: ?DEMData;\n aborted: ?boolean;\n needsHillshadePrepare: ?boolean;\n needsDEMTextureUpload: ?boolean;\n request: ?Cancelable;\n texture: any;\n fbo: ?Framebuffer;\n demTexture: ?Texture;\n refreshedUponExpiration: boolean;\n reloadCallback: any;\n resourceTiming: ?Array<PerformanceResourceTiming>;\n queryPadding: number;\n\n symbolFadeHoldUntil: ?number;\n hasSymbolBuckets: boolean;\n hasRTLText: boolean;\n dependencies: Object;\n projection: Projection;\n\n queryGeometryDebugViz: ?TileSpaceDebugBuffer;\n queryBoundsDebugViz: ?TileSpaceDebugBuffer;\n\n _tileDebugBuffer: ?VertexBuffer;\n _tileBoundsBuffer: ?VertexBuffer;\n _tileDebugIndexBuffer: IndexBuffer;\n _tileBoundsIndexBuffer: IndexBuffer;\n _tileDebugSegments: SegmentVector;\n _tileBoundsSegments: SegmentVector;\n _globeTileDebugBorderBuffer: ?VertexBuffer;\n _tileDebugTextBuffer: ?VertexBuffer;\n _tileDebugTextSegments: SegmentVector;\n _tileDebugTextIndexBuffer: IndexBuffer;\n _globeTileDebugTextBuffer: ?VertexBuffer;\n\n /**\n * @param {OverscaledTileID} tileID\n * @param size\n * @private\n */\n constructor(tileID: OverscaledTileID, size: number, tileZoom: number, painter: any, isRaster?: boolean) {\n this.tileID = tileID;\n this.uid = uniqueId();\n this.uses = 0;\n this.tileSize = size;\n this.tileZoom = tileZoom;\n this.buckets = {};\n this.expirationTime = null;\n this.queryPadding = 0;\n this.hasSymbolBuckets = false;\n this.hasRTLText = false;\n this.dependencies = {};\n this.isRaster = isRaster;\n\n // Counts the number of times a response was already expired when\n // received. We're using this to add a delay when making a new request\n // so we don't have to keep retrying immediately in case of a server\n // serving expired tiles.\n this.expiredRequestCount = 0;\n\n this.state = 'loading';\n\n if (painter && painter.transform) {\n this.projection = painter.transform.projection;\n }\n }\n\n registerFadeDuration(duration: number) {\n const fadeEndTime = duration + this.timeAdded;\n if (fadeEndTime < browser.now()) return;\n if (this.fadeEndTime && fadeEndTime < this.fadeEndTime) return;\n\n this.fadeEndTime = fadeEndTime;\n }\n\n wasRequested(): boolean {\n return this.state === 'errored' || this.state === 'loaded' || this.state === 'reloading';\n }\n\n get tileTransform(): TileTransform {\n if (!this._tileTransform) {\n this._tileTransform = tileTransform(this.tileID.canonical, this.projection);\n }\n return this._tileTransform;\n }\n\n /**\n * Given a data object with a 'buffers' property, load it into\n * this tile's elementGroups and buffers properties and set loaded\n * to true. If the data is null, like in the case of an empty\n * GeoJSON tile, no-op but still set loaded to true.\n * @param {Object} data\n * @param painter\n * @returns {undefined}\n * @private\n */\n loadVectorData(data: ?WorkerTileResult, painter: any, justReloaded: ?boolean) {\n this.unloadVectorData();\n\n this.state = 'loaded';\n\n // empty GeoJSON tile\n if (!data) {\n this.collisionBoxArray = new CollisionBoxArray();\n return;\n }\n\n if (data.featureIndex) {\n this.latestFeatureIndex = data.featureIndex;\n if (data.rawTileData) {\n // Only vector tiles have rawTileData, and they won't update it for\n // 'reloadTile'\n this.latestRawTileData = data.rawTileData;\n this.latestFeatureIndex.rawTileData = data.rawTileData;\n } else if (this.latestRawTileData) {\n // If rawTileData hasn't updated, hold onto a pointer to the last\n // one we received\n this.latestFeatureIndex.rawTileData = this.latestRawTileData;\n }\n }\n this.collisionBoxArray = data.collisionBoxArray;\n this.buckets = deserializeBucket(data.buckets, painter.style);\n\n this.hasSymbolBuckets = false;\n for (const id in this.buckets) {\n const bucket = this.buckets[id];\n if (bucket instanceof SymbolBucket) {\n this.hasSymbolBuckets = true;\n if (justReloaded) {\n bucket.justReloaded = true;\n } else {\n break;\n }\n }\n }\n\n this.hasRTLText = false;\n if (this.hasSymbolBuckets) {\n for (const id in this.buckets) {\n const bucket = this.buckets[id];\n if (bucket instanceof SymbolBucket) {\n if (bucket.hasRTLText) {\n this.hasRTLText = true;\n lazyLoadRTLTextPlugin();\n break;\n }\n }\n }\n }\n\n this.queryPadding = 0;\n for (const id in this.buckets) {\n const bucket = this.buckets[id];\n this.queryPadding = Math.max(this.queryPadding, painter.style.getLayer(id).queryRadius(bucket));\n }\n\n if (data.imageAtlas) {\n this.imageAtlas = data.imageAtlas;\n }\n if (data.glyphAtlasImage) {\n this.glyphAtlasImage = data.glyphAtlasImage;\n }\n if (data.lineAtlas) {\n this.lineAtlas = data.lineAtlas;\n }\n }\n\n /**\n * Release any data or WebGL resources referenced by this tile.\n * @returns {undefined}\n * @private\n */\n unloadVectorData() {\n if (!this.hasData()) return;\n\n for (const id in this.buckets) {\n this.buckets[id].destroy();\n }\n this.buckets = {};\n\n if (this.imageAtlas) {\n this.imageAtlas = null;\n }\n\n if (this.lineAtlas) {\n this.lineAtlas = null;\n }\n\n if (this.imageAtlasTexture) {\n this.imageAtlasTexture.destroy();\n }\n\n if (this.glyphAtlasTexture) {\n this.glyphAtlasTexture.destroy();\n }\n\n if (this.lineAtlasTexture) {\n this.lineAtlasTexture.destroy();\n }\n\n if (this._tileBoundsBuffer) {\n this._tileBoundsBuffer.destroy();\n this._tileBoundsIndexBuffer.destroy();\n this._tileBoundsSegments.destroy();\n this._tileBoundsBuffer = null;\n }\n\n if (this._tileDebugBuffer) {\n this._tileDebugBuffer.destroy();\n this._tileDebugIndexBuffer.destroy();\n this._tileDebugSegments.destroy();\n this._tileDebugBuffer = null;\n }\n\n if (this._globeTileDebugBorderBuffer) {\n this._globeTileDebugBorderBuffer.destroy();\n this._globeTileDebugBorderBuffer = null;\n }\n\n if (this._tileDebugTextBuffer) {\n this._tileDebugTextBuffer.destroy();\n this._tileDebugTextSegments.destroy();\n this._tileDebugTextIndexBuffer.destroy();\n this._tileDebugTextBuffer = null;\n }\n\n if (this._globeTileDebugTextBuffer) {\n this._globeTileDebugTextBuffer.destroy();\n this._globeTileDebugTextBuffer = null;\n }\n\n Debug.run(() => {\n if (this.queryGeometryDebugViz) {\n this.queryGeometryDebugViz.unload();\n delete this.queryGeometryDebugViz;\n }\n if (this.queryBoundsDebugViz) {\n this.queryBoundsDebugViz.unload();\n delete this.queryBoundsDebugViz;\n }\n });\n this.latestFeatureIndex = null;\n this.state = 'unloaded';\n }\n\n getBucket(layer: StyleLayer): Bucket {\n return this.buckets[layer.id];\n }\n\n upload(context: Context) {\n for (const id in this.buckets) {\n const bucket = this.buckets[id];\n if (bucket.uploadPending()) {\n bucket.upload(context);\n }\n }\n\n const gl = context.gl;\n if (this.imageAtlas && !this.imageAtlas.uploaded) {\n this.imageAtlasTexture = new Texture(context, this.imageAtlas.image, gl.RGBA);\n this.imageAtlas.uploaded = true;\n }\n\n if (this.glyphAtlasImage) {\n this.glyphAtlasTexture = new Texture(context, this.glyphAtlasImage, gl.ALPHA);\n this.glyphAtlasImage = null;\n }\n\n if (this.lineAtlas && !this.lineAtlas.uploaded) {\n this.lineAtlasTexture = new Texture(context, this.lineAtlas.image, gl.ALPHA);\n this.lineAtlas.uploaded = true;\n }\n }\n\n prepare(imageManager: ImageManager) {\n if (this.imageAtlas) {\n this.imageAtlas.patchUpdatedImages(imageManager, this.imageAtlasTexture);\n }\n }\n\n // Queries non-symbol features rendered for this tile.\n // Symbol features are queried globally\n queryRenderedFeatures(layers: {[_: string]: StyleLayer},\n serializedLayers: {[string]: Object},\n sourceFeatureState: SourceFeatureState,\n tileResult: TilespaceQueryGeometry,\n params: { filter: FilterSpecification, layers: Array<string>, availableImages: Array<string> },\n transform: Transform,\n pixelPosMatrix: Float32Array,\n visualizeQueryGeometry: boolean): QueryResult {\n Debug.run(() => {\n if (visualizeQueryGeometry) {\n let geometryViz = this.queryGeometryDebugViz;\n let boundsViz = this.queryBoundsDebugViz;\n if (!geometryViz) {\n geometryViz = this.queryGeometryDebugViz = new TileSpaceDebugBuffer(this.tileSize);\n }\n if (!boundsViz) {\n boundsViz = this.queryBoundsDebugViz = new TileSpaceDebugBuffer(this.tileSize, Color.blue);\n }\n\n geometryViz.addPoints(tileResult.tilespaceGeometry);\n boundsViz.addPoints(tileResult.bufferedTilespaceGeometry);\n }\n });\n\n if (!this.latestFeatureIndex || !this.latestFeatureIndex.rawTileData)\n return {};\n\n return this.latestFeatureIndex.query({\n tileResult,\n pixelPosMatrix,\n transform,\n params,\n tileTransform: this.tileTransform\n }, layers, serializedLayers, sourceFeatureState);\n }\n\n querySourceFeatures(result: Array<QueryFeature>, params: any) {\n const featureIndex = this.latestFeatureIndex;\n if (!featureIndex || !featureIndex.rawTileData) return;\n\n const vtLayers = featureIndex.loadVTLayers();\n\n const sourceLayer = params ? params.sourceLayer : '';\n const layer = vtLayers._geojsonTileLayer || vtLayers[sourceLayer];\n\n if (!layer) return;\n\n const filter = featureFilter(params && params.filter);\n const {z, x, y} = this.tileID.canonical;\n const coord = {z, x, y};\n\n for (let i = 0; i < layer.length; i++) {\n const feature = layer.feature(i);\n if (filter.needGeometry) {\n const evaluationFeature = toEvaluationFeature(feature, true);\n if (!filter.filter(new EvaluationParameters(this.tileID.overscaledZ), evaluationFeature, this.tileID.canonical)) continue;\n } else if (!filter.filter(new EvaluationParameters(this.tileID.overscaledZ), feature)) {\n continue;\n }\n const id = featureIndex.getId(feature, sourceLayer);\n const geojsonFeature = new GeoJSONFeature(feature, z, x, y, id);\n geojsonFeature.tile = coord;\n\n result.push(geojsonFeature);\n }\n }\n\n hasData(): boolean {\n return this.state === 'loaded' || this.state === 'reloading' || this.state === 'expired';\n }\n\n patternsLoaded(): boolean {\n return !!this.imageAtlas && !!Object.keys(this.imageAtlas.patternPositions).length;\n }\n\n setExpiryData(data: any) {\n const prior = this.expirationTime;\n\n if (data.cacheControl) {\n const parsedCC = parseCacheControl(data.cacheControl);\n if (parsedCC['max-age']) this.expirationTime = Date.now() + parsedCC['max-age'] * 1000;\n } else if (data.expires) {\n this.expirationTime = new Date(data.expires).getTime();\n }\n\n if (this.expirationTime) {\n const now = Date.now();\n let isExpired = false;\n\n if (this.expirationTime > now) {\n isExpired = false;\n } else if (!prior) {\n isExpired = true;\n } else if (this.expirationTime < prior) {\n // Expiring date is going backwards:\n // fall back to exponential backoff\n isExpired = true;\n\n } else {\n const delta = this.expirationTime - prior;\n\n if (!delta) {\n // Server is serving the same expired resource over and over: fall\n // back to exponential backoff.\n isExpired = true;\n\n } else {\n // Assume that either the client or the server clock is wrong and\n // try to interpolate a valid expiration date (from the client POV)\n // observing a minimum timeout.\n this.expirationTime = now + Math.max(delta, CLOCK_SKEW_RETRY_TIMEOUT);\n\n }\n }\n\n if (isExpired) {\n this.expiredRequestCount++;\n this.state = 'expired';\n } else {\n this.expiredRequestCount = 0;\n }\n }\n }\n\n getExpiryTimeout(): void | number {\n if (this.expirationTime) {\n if (this.expiredRequestCount) {\n return 1000 * (1 << Math.min(this.expiredRequestCount - 1, 31));\n } else {\n // Max value for `setTimeout` implementations is a 32 bit integer; cap this accordingly\n return Math.min(this.expirationTime - new Date().getTime(), Math.pow(2, 31) - 1);\n }\n }\n }\n\n setFeatureState(states: LayerFeatureStates, painter: ?Painter) {\n if (!this.latestFeatureIndex ||\n !this.latestFeatureIndex.rawTileData ||\n Object.keys(states).length === 0 ||\n !painter) {\n return;\n }\n\n const vtLayers = this.latestFeatureIndex.loadVTLayers();\n const availableImages = painter.style.listImages();\n\n for (const id in this.buckets) {\n if (!painter.style.hasLayer(id)) continue;\n\n const bucket = this.buckets[id];\n // Buckets are grouped by common source-layer\n const sourceLayerId = bucket.layers[0]['sourceLayer'] || '_geojsonTileLayer';\n const sourceLayer = vtLayers[sourceLayerId];\n const sourceLayerStates = states[sourceLayerId];\n if (!sourceLayer || !sourceLayerStates || Object.keys(sourceLayerStates).length === 0) continue;\n\n // $FlowFixMe[incompatible-type] Flow can't interpret ImagePosition as SpritePosition for some reason here\n const imagePositions: SpritePositions = (this.imageAtlas && this.imageAtlas.patternPositions) || {};\n bucket.update(sourceLayerStates, sourceLayer, availableImages, imagePositions);\n if (bucket instanceof LineBucket || bucket instanceof FillBucket) {\n const sourceCache = painter.style._getSourceCache(bucket.layers[0].source);\n if (painter._terrain && painter._terrain.enabled && sourceCache && bucket.programConfigurations.needsUpload) {\n painter._terrain._clearRenderCacheForTile(sourceCache.id, this.tileID);\n }\n }\n const layer = painter && painter.style && painter.style.getLayer(id);\n if (layer) {\n this.queryPadding = Math.max(this.queryPadding, layer.queryRadius(bucket));\n }\n }\n }\n\n holdingForFade(): boolean {\n return this.symbolFadeHoldUntil !== undefined;\n }\n\n symbolFadeFinished(): boolean {\n return !this.symbolFadeHoldUntil || this.symbolFadeHoldUntil < browser.now();\n }\n\n clearFadeHold() {\n this.symbolFadeHoldUntil = undefined;\n }\n\n setHoldDuration(duration: number) {\n this.symbolFadeHoldUntil = browser.now() + duration;\n }\n\n setTexture(img: TextureImage, painter: Painter) {\n const context = painter.context;\n const gl = context.gl;\n this.texture = painter.getTileTexture(img.width);\n if (this.texture) {\n this.texture.update(img, {useMipmap: true});\n } else {\n this.texture = new Texture(context, img, gl.RGBA, {useMipmap: true});\n this.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n\n if (context.extTextureFilterAnisotropic) {\n gl.texParameterf(gl.TEXTURE_2D, context.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT, context.extTextureFilterAnisotropicMax);\n }\n }\n }\n\n setDependencies(namespace: string, dependencies: Array<string>) {\n const index = {};\n for (const dep of dependencies) {\n index[dep] = true;\n }\n this.dependencies[namespace] = index;\n }\n\n hasDependency(namespaces: Array<string>, keys: Array<string>): boolean {\n for (const namespace of namespaces) {\n const dependencies = this.dependencies[namespace];\n if (dependencies) {\n for (const key of keys) {\n if (dependencies[key]) {\n return true;\n }\n }\n }\n }\n return false;\n }\n\n clearQueryDebugViz() {\n Debug.run(() => {\n if (this.queryGeometryDebugViz) {\n this.queryGeometryDebugViz.clearPoints();\n }\n if (this.queryBoundsDebugViz) {\n this.queryBoundsDebugViz.clearPoints();\n }\n });\n }\n\n _makeDebugTileBoundsBuffers(context: Context, projection: Projection) {\n if (!projection || projection.name === 'mercator' || this._tileDebugBuffer) return;\n\n // reproject tile outline with adaptive resampling\n const boundsLine = loadGeometry(BOUNDS_FEATURE, this.tileID.canonical, this.tileTransform)[0];\n\n // generate vertices for debugging tile boundaries\n const debugVertices = new PosArray();\n const debugIndices = new LineStripIndexArray();\n\n for (let i = 0; i < boundsLine.length; i++) {\n const {x, y} = boundsLine[i];\n debugVertices.emplaceBack(x, y);\n debugIndices.emplaceBack(i);\n }\n debugIndices.emplaceBack(0);\n\n this._tileDebugIndexBuffer = context.createIndexBuffer(debugIndices);\n this._tileDebugBuffer = context.createVertexBuffer(debugVertices, posAttributes.members);\n this._tileDebugSegments = SegmentVector.simpleSegment(0, 0, debugVertices.length, debugIndices.length);\n }\n\n _makeTileBoundsBuffers(context: Context, projection: Projection) {\n if (this._tileBoundsBuffer || !projection || projection.name === 'mercator') return;\n\n // reproject tile outline with adaptive resampling\n const boundsLine = loadGeometry(BOUNDS_FEATURE, this.tileID.canonical, this.tileTransform)[0];\n\n let boundsVertices, boundsIndices;\n if (this.isRaster) {\n // for raster tiles, generate an adaptive MARTINI mesh\n const mesh = getTileMesh(this.tileID.canonical, projection);\n boundsVertices = mesh.vertices;\n boundsIndices = mesh.indices;\n\n } else {\n // for vector tiles, generate an Earcut triangulation of the outline\n boundsVertices = new TileBoundsArray();\n boundsIndices = new TriangleIndexArray();\n\n for (const {x, y} of boundsLine) {\n boundsVertices.emplaceBack(x, y, 0, 0);\n }\n const indices = earcut(boundsVertices.int16, undefined, 4);\n for (let i = 0; i < indices.length; i += 3) {\n boundsIndices.emplaceBack(indices[i], indices[i + 1], indices[i + 2]);\n }\n }\n this._tileBoundsBuffer = context.createVertexBuffer(boundsVertices, boundsAttributes.members);\n this._tileBoundsIndexBuffer = context.createIndexBuffer(boundsIndices);\n this._tileBoundsSegments = SegmentVector.simpleSegment(0, 0, boundsVertices.length, boundsIndices.length);\n }\n\n _makeGlobeTileDebugBuffers(context: Context, projection: Projection) {\n if (this._globeTileDebugBorderBuffer || this._globeTileDebugTextBuffer || !projection || projection.name !== 'globe') return;\n\n const id = this.tileID.canonical;\n const bounds = globeTileBounds(id);\n const normalizationMatrix = globeNormalizeECEF(bounds);\n\n this._makeGlobeTileDebugBorderBuffer(context, id, normalizationMatrix);\n this._makeGlobeTileDebugTextBuffer(context, id, normalizationMatrix);\n }\n\n _makeGlobeTileDebugBorderBuffer(context: Context, id: CanonicalTileID, normalizationMatrix: Float64Array) {\n const vertices = new PosArray();\n const indices = new LineStripIndexArray();\n const extraGlobe = new PosGlobeExtArray();\n\n const addLine = (sx: number, sy: number, ex: number, ey: number, pointCount: number) => {\n const stepX = (ex - sx) / (pointCount - 1);\n const stepY = (ey - sy) / (pointCount - 1);\n\n const vOffset = vertices.length;\n\n for (let i = 0; i < pointCount; i++) {\n const x = sx + i * stepX;\n const y = sy + i * stepY;\n vertices.emplaceBack(x, y);\n\n // The next two lines are equivalent to doing projection.projectTilePoint.\n // This way we don't recompute the normalization matrix everytime since it remains the same for all points.\n const ecef = tileCoordToECEF(x, y, id);\n const gp = vec3.transformMat4(ecef, ecef, normalizationMatrix);\n\n extraGlobe.emplaceBack(gp[0], gp[1], gp[2]);\n indices.emplaceBack(vOffset + i);\n }\n };\n\n const e = EXTENT;\n addLine(0, 0, e, 0, 16);\n addLine(e, 0, e, e, 16);\n addLine(e, e, 0, e, 16);\n addLine(0, e, 0, 0, 16);\n\n this._tileDebugIndexBuffer = context.createIndexBuffer(indices);\n this._tileDebugBuffer = context.createVertexBuffer(vertices, posAttributes.members);\n this._globeTileDebugBorderBuffer = context.createVertexBuffer(extraGlobe, posAttributesGlobeExt.members);\n this._tileDebugSegments = SegmentVector.simpleSegment(0, 0, vertices.length, indices.length);\n }\n\n _makeGlobeTileDebugTextBuffer(context: Context, id: CanonicalTileID, normalizationMatrix: Float64Array) {\n const SEGMENTS = 4;\n const numVertices = SEGMENTS + 1;\n const step = EXTENT / SEGMENTS;\n\n const vertices = new PosArray();\n const indices = new TriangleIndexArray();\n const extraGlobe = new PosGlobeExtArray();\n\n const totalVertices = numVertices * numVertices;\n const totalTriangles = SEGMENTS * SEGMENTS * 2;\n indices.reserve(totalTriangles);\n vertices.reserve(totalVertices);\n extraGlobe.reserve(totalVertices);\n\n const toIndex = (j: number, i: number): number => {\n return totalVertices * j + i;\n };\n\n // add vertices.\n for (let j = 0; j < totalVertices; j++) {\n const y = j * step;\n for (let i = 0; i < totalVertices; i++) {\n const x = i * step;\n vertices.emplaceBack(x, y);\n\n const ecef = tileCoordToECEF(x, y, id);\n const gp = vec3.transformMat4(ecef, ecef, normalizationMatrix);\n extraGlobe.emplaceBack(gp[0], gp[1], gp[2]);\n }\n }\n\n // add indices.\n for (let j = 0; j < SEGMENTS; j++) {\n for (let i = 0; i < SEGMENTS; i++) {\n const tl = toIndex(j, i);\n const tr = toIndex(j, i + 1);\n const bl = toIndex(j + 1, i);\n const br = toIndex(j + 1, i + 1);\n\n // first triangle of the sub-patch.\n indices.emplaceBack(tl, tr, bl);\n\n // second triangle of the sub-patch.\n indices.emplaceBack(bl, tr, br);\n }\n }\n\n this._tileDebugTextIndexBuffer = context.createIndexBuffer(indices);\n this._tileDebugTextBuffer = context.createVertexBuffer(vertices, posAttributes.members);\n this._globeTileDebugTextBuffer = context.createVertexBuffer(extraGlobe, posAttributesGlobeExt.members);\n this._tileDebugTextSegments = SegmentVector.simpleSegment(0, 0, totalVertices, totalTriangles);\n }\n}\n\nexport default Tile;\n","// @flow\n\nimport type {CollisionBoxArray} from './array_types.js';\nimport type Style from '../style/style.js';\nimport type {TypedStyleLayer} from '../style/style_layer/typed_style_layer.js';\nimport type FeatureIndex from './feature_index.js';\nimport type Context from '../gl/context.js';\nimport type {FeatureStates} from '../source/source_state.js';\nimport type {SpritePositions} from '../util/image.js';\nimport type LineAtlas from '../render/line_atlas.js';\nimport type {CanonicalTileID} from '../source/tile_id.js';\nimport type {TileTransform} from '../geo/projection/tile_transform.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {ProjectionSpecification} from '../style-spec/types.js';\n\nexport type BucketParameters<Layer: TypedStyleLayer> = {\n index: number,\n layers: Array<Layer>,\n zoom: number,\n canonical: CanonicalTileID,\n pixelRatio: number,\n overscaling: number,\n collisionBoxArray: CollisionBoxArray,\n sourceLayerIndex: number,\n sourceID: string,\n enableTerrain: boolean,\n projection: ProjectionSpecification\n}\n\nexport type PopulateParameters = {\n featureIndex: FeatureIndex,\n iconDependencies: {},\n patternDependencies: {},\n glyphDependencies: {},\n availableImages: Array<string>,\n lineAtlas: LineAtlas\n}\n\nexport type IndexedFeature = {\n feature: VectorTileFeature,\n id: number | string | void,\n index: number,\n sourceLayerIndex: number,\n}\n\nexport type BucketFeature = {|\n index: number,\n sourceLayerIndex: number,\n geometry: Array<Array<Point>>,\n properties: Object,\n type: 1 | 2 | 3,\n id?: any,\n +patterns: {[_: string]: {\"min\": string, \"mid\": string, \"max\": string}},\n sortKey?: number\n|};\n\n/**\n * The `Bucket` interface is the single point of knowledge about turning vector\n * tiles into WebGL buffers.\n *\n * `Bucket` is an abstract interface. An implementation exists for each style layer type.\n * Create a bucket via the `StyleLayer#createBucket` method.\n *\n * The concrete bucket types, using layout options from the style layer,\n * transform feature geometries into vertex and index data for use by the\n * vertex shader. They also (via `ProgramConfiguration`) use feature\n * properties and the zoom level to populate the attributes needed for\n * data-driven styling.\n *\n * Buckets are designed to be built on a worker thread and then serialized and\n * transferred back to the main thread for rendering. On the worker side, a\n * bucket's vertex, index, and attribute data is stored in `bucket.arrays:\n * ArrayGroup`. When a bucket's data is serialized and sent back to the main\n * thread, is gets deserialized (using `new Bucket(serializedBucketData)`, with\n * the array data now stored in `bucket.buffers: BufferGroup`. BufferGroups\n * hold the same data as ArrayGroups, but are tuned for consumption by WebGL.\n *\n * @private\n */\nexport interface Bucket {\n layerIds: Array<string>;\n hasPattern: boolean;\n +layers: Array<any>;\n +stateDependentLayers: Array<any>;\n +stateDependentLayerIds: Array<string>;\n populate(features: Array<IndexedFeature>, options: PopulateParameters, canonical: CanonicalTileID, tileTransform: TileTransform): void;\n update(states: FeatureStates, vtLayer: VectorTileLayer, availableImages: Array<string>, imagePositions: SpritePositions): void;\n isEmpty(): boolean;\n\n upload(context: Context): void;\n uploadPending(): boolean;\n\n /**\n * Release the WebGL resources associated with the buffers. Note that because\n * buckets are shared between layers having the same layout properties, they\n * must be destroyed in groups (all buckets for a tile, or all symbol buckets).\n *\n * @private\n */\n destroy(): void;\n}\n\nexport function deserialize(input: Array<Bucket>, style: Style): {[_: string]: Bucket} {\n const output = {};\n\n // Guard against the case where the map's style has been set to null while\n // this bucket has been parsing.\n if (!style) return output;\n\n for (const bucket of input) {\n const layers = bucket.layerIds\n .map((id) => style.getLayer(id))\n .filter(Boolean);\n\n if (layers.length === 0) {\n continue;\n }\n\n // look up StyleLayer objects from layer ids (since we don't\n // want to waste time serializing/copying them from the worker)\n (bucket: any).layers = layers;\n if ((bucket: any).stateDependentLayerIds) {\n (bucket: any).stateDependentLayers = (bucket: any).stateDependentLayerIds.map((lId) => layers.filter((l) => l.id === lId)[0]);\n }\n for (const layer of layers) {\n output[layer.id] = bucket;\n }\n }\n\n return output;\n}\n","// @flow\n\nimport {extend} from '../util/util.js';\nimport Tile from './tile.js';\nimport type {FeatureState} from '../style-spec/expression/index.js';\nimport type Painter from '../render/painter.js';\n\nexport type FeatureStates = {[feature_id: string]: FeatureState};\nexport type LayerFeatureStates = {[layer: string]: FeatureStates};\n\n/**\n * SourceFeatureState manages the state and pending changes\n * to features in a source, separated by source layer.\n * stateChanges and deletedStates batch all changes to the tile (updates and removes, respectively)\n * between coalesce() events. addFeatureState() and removeFeatureState() also update their counterpart's\n * list of changes, such that coalesce() can apply the proper state changes while agnostic to the order of operations.\n * In deletedStates, all null's denote complete removal of state at that scope\n * @private\n*/\nclass SourceFeatureState {\n state: LayerFeatureStates;\n stateChanges: LayerFeatureStates;\n deletedStates: {};\n\n constructor() {\n this.state = {};\n this.stateChanges = {};\n this.deletedStates = {};\n }\n\n updateState(sourceLayer: string, featureId: number | string, newState: Object) {\n const feature = String(featureId);\n this.stateChanges[sourceLayer] = this.stateChanges[sourceLayer] || {};\n this.stateChanges[sourceLayer][feature] = this.stateChanges[sourceLayer][feature] || {};\n extend(this.stateChanges[sourceLayer][feature], newState);\n\n if (this.deletedStates[sourceLayer] === null) {\n this.deletedStates[sourceLayer] = {};\n for (const ft in this.state[sourceLayer]) {\n if (ft !== feature) this.deletedStates[sourceLayer][ft] = null;\n }\n } else {\n const featureDeletionQueued = this.deletedStates[sourceLayer] && this.deletedStates[sourceLayer][feature] === null;\n if (featureDeletionQueued) {\n this.deletedStates[sourceLayer][feature] = {};\n for (const prop in this.state[sourceLayer][feature]) {\n if (!newState[prop]) this.deletedStates[sourceLayer][feature][prop] = null;\n }\n } else {\n for (const key in newState) {\n const deletionInQueue = this.deletedStates[sourceLayer] && this.deletedStates[sourceLayer][feature] && this.deletedStates[sourceLayer][feature][key] === null;\n if (deletionInQueue) delete this.deletedStates[sourceLayer][feature][key];\n }\n }\n }\n }\n\n removeFeatureState(sourceLayer: string, featureId?: number | string, key?: string) {\n const sourceLayerDeleted = this.deletedStates[sourceLayer] === null;\n if (sourceLayerDeleted) return;\n\n const feature = String(featureId);\n\n this.deletedStates[sourceLayer] = this.deletedStates[sourceLayer] || {};\n\n if (key && featureId !== undefined) {\n if (this.deletedStates[sourceLayer][feature] !== null) {\n this.deletedStates[sourceLayer][feature] = this.deletedStates[sourceLayer][feature] || {};\n this.deletedStates[sourceLayer][feature][key] = null;\n }\n } else if (featureId !== undefined) {\n const updateInQueue = this.stateChanges[sourceLayer] && this.stateChanges[sourceLayer][feature];\n if (updateInQueue) {\n this.deletedStates[sourceLayer][feature] = {};\n for (key in this.stateChanges[sourceLayer][feature]) this.deletedStates[sourceLayer][feature][key] = null;\n\n } else {\n this.deletedStates[sourceLayer][feature] = null;\n }\n } else {\n this.deletedStates[sourceLayer] = null;\n }\n }\n\n getState(sourceLayer: string, featureId: number | string): FeatureStates {\n const feature = String(featureId);\n const base = this.state[sourceLayer] || {};\n const changes = this.stateChanges[sourceLayer] || {};\n\n const reconciledState = extend({}, base[feature], changes[feature]);\n\n //return empty object if the whole source layer is awaiting deletion\n if (this.deletedStates[sourceLayer] === null) return {};\n else if (this.deletedStates[sourceLayer]) {\n const featureDeletions = this.deletedStates[sourceLayer][featureId];\n if (featureDeletions === null) return {};\n for (const prop in featureDeletions) delete reconciledState[prop];\n }\n return reconciledState;\n }\n\n initializeTileState(tile: Tile, painter: ?Painter) {\n tile.setFeatureState(this.state, painter);\n }\n\n coalesceChanges(tiles: {[_: any]: Tile}, painter: any) {\n //track changes with full state objects, but only for features that got modified\n const featuresChanged: LayerFeatureStates = {};\n\n for (const sourceLayer in this.stateChanges) {\n this.state[sourceLayer] = this.state[sourceLayer] || {};\n const layerStates = {};\n for (const feature in this.stateChanges[sourceLayer]) {\n if (!this.state[sourceLayer][feature]) this.state[sourceLayer][feature] = {};\n extend(this.state[sourceLayer][feature], this.stateChanges[sourceLayer][feature]);\n layerStates[feature] = this.state[sourceLayer][feature];\n }\n featuresChanged[sourceLayer] = layerStates;\n }\n\n for (const sourceLayer in this.deletedStates) {\n this.state[sourceLayer] = this.state[sourceLayer] || {};\n const layerStates = {};\n\n if (this.deletedStates[sourceLayer] === null) {\n for (const ft in this.state[sourceLayer]) {\n layerStates[ft] = {};\n this.state[sourceLayer][ft] = {};\n }\n } else {\n for (const feature in this.deletedStates[sourceLayer]) {\n const deleteWholeFeatureState = this.deletedStates[sourceLayer][feature] === null;\n if (deleteWholeFeatureState) this.state[sourceLayer][feature] = {};\n else {\n for (const key of Object.keys(this.deletedStates[sourceLayer][feature])) {\n delete this.state[sourceLayer][feature][key];\n }\n }\n layerStates[feature] = this.state[sourceLayer][feature];\n }\n }\n\n featuresChanged[sourceLayer] = featuresChanged[sourceLayer] || {};\n extend(featuresChanged[sourceLayer], layerStates);\n }\n\n this.stateChanges = {};\n this.deletedStates = {};\n\n if (Object.keys(featuresChanged).length === 0) return;\n\n for (const id in tiles) {\n const tile = tiles[id];\n tile.setFeatureState(featuresChanged, painter);\n }\n }\n}\n\nexport default SourceFeatureState;\n","// @flow\n\nimport DEMData from \"./dem_data.js\";\nimport {vec3} from 'gl-matrix';\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\nimport {clamp} from '../util/util.js';\n\nimport type {Vec3} from 'gl-matrix';\n\nclass MipLevel {\n size: number;\n minimums: Array<number>;\n maximums: Array<number>;\n leaves: Array<number>;\n\n constructor(size_: number) {\n this.size = size_;\n this.minimums = [];\n this.maximums = [];\n this.leaves = [];\n }\n\n getElevation(x: number, y: number): { min: number, max: number} {\n const idx = this.toIdx(x, y);\n return {\n min: this.minimums[idx],\n max: this.maximums[idx]\n };\n }\n\n isLeaf(x: number, y: number): number {\n return this.leaves[this.toIdx(x, y)];\n }\n\n toIdx(x: number, y: number): number {\n return y * this.size + x;\n }\n}\n\nfunction aabbRayIntersect(min: Vec3, max: Vec3, pos: Vec3, dir: Vec3): ?number {\n let tMin = 0;\n let tMax = Number.MAX_VALUE;\n\n const epsilon = 1e-15;\n\n for (let i = 0; i < 3; i++) {\n if (Math.abs(dir[i]) < epsilon) {\n // Parallel ray\n if (pos[i] < min[i] || pos[i] > max[i])\n return null;\n } else {\n const ood = 1.0 / dir[i];\n let t1 = (min[i] - pos[i]) * ood;\n let t2 = (max[i] - pos[i]) * ood;\n if (t1 > t2) {\n const temp = t1;\n t1 = t2;\n t2 = temp;\n }\n if (t1 > tMin)\n tMin = t1;\n if (t2 < tMax)\n tMax = t2;\n if (tMin > tMax)\n return null;\n }\n }\n\n return tMin;\n}\n\nfunction triangleRayIntersect(ax, ay, az, bx, by, bz, cx, cy, cz, pos: Vec3, dir: Vec3): ?number {\n // Compute barycentric coordinates u and v to find the intersection\n const abX = bx - ax;\n const abY = by - ay;\n const abZ = bz - az;\n\n const acX = cx - ax;\n const acY = cy - ay;\n const acZ = cz - az;\n\n // pvec = cross(dir, a), det = dot(ab, pvec)\n const pvecX = dir[1] * acZ - dir[2] * acY;\n const pvecY = dir[2] * acX - dir[0] * acZ;\n const pvecZ = dir[0] * acY - dir[1] * acX;\n const det = abX * pvecX + abY * pvecY + abZ * pvecZ;\n\n if (Math.abs(det) < 1e-15)\n return null;\n\n const invDet = 1.0 / det;\n const tvecX = pos[0] - ax;\n const tvecY = pos[1] - ay;\n const tvecZ = pos[2] - az;\n const u = (tvecX * pvecX + tvecY * pvecY + tvecZ * pvecZ) * invDet;\n\n if (u < 0.0 || u > 1.0)\n return null;\n\n // qvec = cross(tvec, ab)\n const qvecX = tvecY * abZ - tvecZ * abY;\n const qvecY = tvecZ * abX - tvecX * abZ;\n const qvecZ = tvecX * abY - tvecY * abX;\n const v = (dir[0] * qvecX + dir[1] * qvecY + dir[2] * qvecZ) * invDet;\n\n if (v < 0.0 || u + v > 1.0)\n return null;\n\n return (acX * qvecX + acY * qvecY + acZ * qvecZ) * invDet;\n}\n\nfunction frac(v, lo, hi) {\n return (v - lo) / (hi - lo);\n}\n\nfunction decodeBounds(x, y, depth, boundsMinx, boundsMiny, boundsMaxx, boundsMaxy, outMin, outMax) {\n const scale = 1 << depth;\n const rangex = boundsMaxx - boundsMinx;\n const rangey = boundsMaxy - boundsMiny;\n\n const minX = (x + 0) / scale * rangex + boundsMinx;\n const maxX = (x + 1) / scale * rangex + boundsMinx;\n const minY = (y + 0) / scale * rangey + boundsMiny;\n const maxY = (y + 1) / scale * rangey + boundsMiny;\n\n outMin[0] = minX;\n outMin[1] = minY;\n outMax[0] = maxX;\n outMax[1] = maxY;\n}\n\n// A small padding value is used with bounding boxes to extend the bottom below sea level\nconst aabbSkirtPadding = 100;\n\n// A sparse min max quad tree for performing accelerated queries against dem elevation data.\n// Each tree node stores the minimum and maximum elevation of its children nodes and a flag whether the node is a leaf.\n// Node data is stored in non-interleaved arrays where the root is at index 0.\nexport default class DemMinMaxQuadTree {\n maximums: Array<number>;\n minimums: Array<number>;\n leaves: Array<number>;\n childOffsets: Array<number>;\n nodeCount: number;\n dem: DEMData;\n _siblingOffset: Array<Array<number>>;\n\n constructor(dem_: DEMData) {\n this.maximums = [];\n this.minimums = [];\n this.leaves = [];\n this.childOffsets = [];\n this.nodeCount = 0;\n this.dem = dem_;\n\n // Precompute the order of 4 sibling nodes in the memory. Top-left, top-right, bottom-left, bottom-right\n this._siblingOffset = [\n [0, 0],\n [1, 0],\n [0, 1],\n [1, 1]\n ];\n\n if (!this.dem)\n return;\n\n const mips = buildDemMipmap(this.dem);\n const maxLvl = mips.length - 1;\n\n // Create the root node\n const rootMip = mips[maxLvl];\n const min = rootMip.minimums;\n const max = rootMip.maximums;\n const leaves = rootMip.leaves;\n this._addNode(min[0], max[0], leaves[0]);\n\n // Construct the rest of the tree recursively\n this._construct(mips, 0, 0, maxLvl, 0);\n }\n\n // Performs raycast against the tree root only. Min and max coordinates defines the size of the root node\n raycastRoot(minx: number, miny: number, maxx: number, maxy: number, p: Vec3, d: Vec3, exaggeration: number = 1): ?number {\n const min = [minx, miny, -aabbSkirtPadding];\n const max = [maxx, maxy, this.maximums[0] * exaggeration];\n return aabbRayIntersect(min, max, p, d);\n }\n\n raycast(rootMinx: number, rootMiny: number, rootMaxx: number, rootMaxy: number, p: Vec3, d: Vec3, exaggeration: number = 1): ?number {\n if (!this.nodeCount)\n return null;\n\n const t = this.raycastRoot(rootMinx, rootMiny, rootMaxx, rootMaxy, p, d, exaggeration);\n if (t == null)\n return null;\n\n const tHits = [];\n const sortedHits = [];\n const boundsMin = [];\n const boundsMax = [];\n\n const stack = [{\n idx: 0,\n t,\n nodex: 0,\n nodey: 0,\n depth: 0\n }];\n\n // Traverse the tree until something is hit or the ray escapes\n while (stack.length > 0) {\n const {idx, t, nodex, nodey, depth} = stack.pop();\n\n if (this.leaves[idx]) {\n // Create 2 triangles to approximate the surface plane for more precise tests\n decodeBounds(nodex, nodey, depth, rootMinx, rootMiny, rootMaxx, rootMaxy, boundsMin, boundsMax);\n\n const scale = 1 << depth;\n const minxUv = (nodex + 0) / scale;\n const maxxUv = (nodex + 1) / scale;\n const minyUv = (nodey + 0) / scale;\n const maxyUv = (nodey + 1) / scale;\n\n // 4 corner points A, B, C and D defines the (quad) area covered by this node\n const az = sampleElevation(minxUv, minyUv, this.dem) * exaggeration;\n const bz = sampleElevation(maxxUv, minyUv, this.dem) * exaggeration;\n const cz = sampleElevation(maxxUv, maxyUv, this.dem) * exaggeration;\n const dz = sampleElevation(minxUv, maxyUv, this.dem) * exaggeration;\n\n const t0: any = triangleRayIntersect(\n boundsMin[0], boundsMin[1], az, // A\n boundsMax[0], boundsMin[1], bz, // B\n boundsMax[0], boundsMax[1], cz, // C\n p, d);\n\n const t1: any = triangleRayIntersect(\n boundsMax[0], boundsMax[1], cz,\n boundsMin[0], boundsMax[1], dz,\n boundsMin[0], boundsMin[1], az,\n p, d);\n\n const tMin = Math.min(\n t0 !== null ? t0 : Number.MAX_VALUE,\n t1 !== null ? t1 : Number.MAX_VALUE);\n\n // The ray might go below the two surface triangles but hit one of the sides.\n // This covers the case of skirt geometry between two dem tiles of different zoom level\n if (tMin === Number.MAX_VALUE) {\n const hitPos = vec3.scaleAndAdd([], p, d, t);\n const fracx = frac(hitPos[0], boundsMin[0], boundsMax[0]);\n const fracy = frac(hitPos[1], boundsMin[1], boundsMax[1]);\n\n if (bilinearLerp(az, bz, dz, cz, fracx, fracy) >= hitPos[2])\n return t;\n } else {\n return tMin;\n }\n\n continue;\n }\n\n // Perform intersection tests agains each of the 4 child nodes and store results from closest to furthest.\n let hitCount = 0;\n\n for (let i = 0; i < this._siblingOffset.length; i++) {\n\n const childNodeX = (nodex << 1) + this._siblingOffset[i][0];\n const childNodeY = (nodey << 1) + this._siblingOffset[i][1];\n\n // Decode node aabb from the morton code\n decodeBounds(childNodeX, childNodeY, depth + 1, rootMinx, rootMiny, rootMaxx, rootMaxy, boundsMin, boundsMax);\n\n boundsMin[2] = -aabbSkirtPadding;\n boundsMax[2] = this.maximums[this.childOffsets[idx] + i] * exaggeration;\n\n const result = aabbRayIntersect(boundsMin, boundsMax, p, d);\n if (result != null) {\n // Build the result list from furthest to closest hit.\n // The order will be inversed when building the stack\n const tHit: number = result;\n tHits[i] = tHit;\n\n let added = false;\n for (let j = 0; j < hitCount && !added; j++) {\n if (tHit >= tHits[sortedHits[j]]) {\n sortedHits.splice(j, 0, i);\n added = true;\n }\n }\n if (!added)\n sortedHits[hitCount] = i;\n hitCount++;\n }\n }\n\n // Continue recursion from closest to furthest\n for (let i = 0; i < hitCount; i++) {\n const hitIdx = sortedHits[i];\n stack.push({\n idx: this.childOffsets[idx] + hitIdx,\n t: tHits[hitIdx],\n nodex: (nodex << 1) + this._siblingOffset[hitIdx][0],\n nodey: (nodey << 1) + this._siblingOffset[hitIdx][1],\n depth: depth + 1\n });\n }\n }\n\n return null;\n }\n\n _addNode(min: number, max: number, leaf: number): number {\n this.minimums.push(min);\n this.maximums.push(max);\n this.leaves.push(leaf);\n this.childOffsets.push(0);\n return this.nodeCount++;\n }\n\n _construct(mips: Array<MipLevel>, x: number, y: number, lvl: number, parentIdx: number) {\n if (mips[lvl].isLeaf(x, y) === 1) {\n return;\n }\n\n // Update parent offset\n if (!this.childOffsets[parentIdx])\n this.childOffsets[parentIdx] = this.nodeCount;\n\n // Construct all 4 children and place them next to each other in memory\n const childLvl = lvl - 1;\n const childMip = mips[childLvl];\n\n let leafMask = 0;\n let firstNodeIdx = 0;\n\n for (let i = 0; i < this._siblingOffset.length; i++) {\n const childX = x * 2 + this._siblingOffset[i][0];\n const childY = y * 2 + this._siblingOffset[i][1];\n\n const elevation = childMip.getElevation(childX, childY);\n const leaf = childMip.isLeaf(childX, childY);\n const nodeIdx = this._addNode(elevation.min, elevation.max, leaf);\n\n if (leaf)\n leafMask |= 1 << i;\n if (!firstNodeIdx)\n firstNodeIdx = nodeIdx;\n }\n\n // Continue construction of the tree recursively to non-leaf nodes.\n for (let i = 0; i < this._siblingOffset.length; i++) {\n if (!(leafMask & (1 << i))) {\n this._construct(mips, x * 2 + this._siblingOffset[i][0], y * 2 + this._siblingOffset[i][1], childLvl, firstNodeIdx + i);\n }\n }\n }\n}\n\nfunction bilinearLerp(p00: any, p10: any, p01: any, p11: any, x: number, y: number): any {\n return interpolate(\n interpolate(p00, p01, y),\n interpolate(p10, p11, y),\n x);\n}\n\n// Sample elevation in normalized uv-space ([0, 0] is the top left)\n// This function does not account for exaggeration\nexport function sampleElevation(fx: number, fy: number, dem: DEMData): number {\n // Sample position in texels\n const demSize = dem.dim;\n const x = clamp(fx * demSize - 0.5, 0, demSize - 1);\n const y = clamp(fy * demSize - 0.5, 0, demSize - 1);\n\n // Compute 4 corner points for bilinear interpolation\n const ixMin = Math.floor(x);\n const iyMin = Math.floor(y);\n const ixMax = Math.min(ixMin + 1, demSize - 1);\n const iyMax = Math.min(iyMin + 1, demSize - 1);\n\n const e00 = dem.get(ixMin, iyMin);\n const e10 = dem.get(ixMax, iyMin);\n const e01 = dem.get(ixMin, iyMax);\n const e11 = dem.get(ixMax, iyMax);\n\n return bilinearLerp(e00, e10, e01, e11, x - ixMin, y - iyMin);\n}\n\nexport function buildDemMipmap(dem: DEMData): Array<MipLevel> {\n const demSize = dem.dim;\n\n const elevationDiffThreshold = 5;\n const texelSizeOfMip0 = 8;\n const levelCount = Math.ceil(Math.log2(demSize / texelSizeOfMip0));\n const mips: Array<MipLevel> = [];\n\n let blockCount = Math.ceil(Math.pow(2, levelCount));\n const blockSize = 1 / blockCount;\n\n const blockSamples = (x, y, size, exclusive, outBounds) => {\n const padding = exclusive ? 1 : 0;\n const minx = x * size;\n const maxx = (x + 1) * size - padding;\n const miny = y * size;\n const maxy = (y + 1) * size - padding;\n\n outBounds[0] = minx;\n outBounds[1] = miny;\n outBounds[2] = maxx;\n outBounds[3] = maxy;\n };\n\n // The first mip (0) is built by sampling 4 corner points of each 8x8 texel block\n let mip = new MipLevel(blockCount);\n const blockBounds = [];\n\n for (let idx = 0; idx < blockCount * blockCount; idx++) {\n const y = Math.floor(idx / blockCount);\n const x = idx % blockCount;\n\n blockSamples(x, y, blockSize, false, blockBounds);\n\n const e0 = sampleElevation(blockBounds[0], blockBounds[1], dem); // minx, miny\n const e1 = sampleElevation(blockBounds[2], blockBounds[1], dem); // maxx, miny\n const e2 = sampleElevation(blockBounds[2], blockBounds[3], dem); // maxx, maxy\n const e3 = sampleElevation(blockBounds[0], blockBounds[3], dem); // minx, maxy\n\n mip.minimums.push(Math.min(e0, e1, e2, e3));\n mip.maximums.push(Math.max(e0, e1, e2, e3));\n mip.leaves.push(1);\n }\n\n mips.push(mip);\n\n // Construct the rest of the mip levels from bottom to up\n for (blockCount /= 2; blockCount >= 1; blockCount /= 2) {\n const prevMip = mips[mips.length - 1];\n\n mip = new MipLevel(blockCount);\n\n for (let idx = 0; idx < blockCount * blockCount; idx++) {\n const y = Math.floor(idx / blockCount);\n const x = idx % blockCount;\n\n // Sample elevation of all 4 children mip texels. 4 leaf nodes can be concatenated into a single\n // leaf if the total elevation difference is below the threshold value\n blockSamples(x, y, 2, true, blockBounds);\n\n const e0 = prevMip.getElevation(blockBounds[0], blockBounds[1]);\n const e1 = prevMip.getElevation(blockBounds[2], blockBounds[1]);\n const e2 = prevMip.getElevation(blockBounds[2], blockBounds[3]);\n const e3 = prevMip.getElevation(blockBounds[0], blockBounds[3]);\n\n const l0 = prevMip.isLeaf(blockBounds[0], blockBounds[1]);\n const l1 = prevMip.isLeaf(blockBounds[2], blockBounds[1]);\n const l2 = prevMip.isLeaf(blockBounds[2], blockBounds[3]);\n const l3 = prevMip.isLeaf(blockBounds[0], blockBounds[3]);\n\n const minElevation = Math.min(e0.min, e1.min, e2.min, e3.min);\n const maxElevation = Math.max(e0.max, e1.max, e2.max, e3.max);\n const canConcatenate = l0 && l1 && l2 && l3;\n\n mip.maximums.push(maxElevation);\n mip.minimums.push(minElevation);\n\n if (maxElevation - minElevation <= elevationDiffThreshold && canConcatenate) {\n // All samples have uniform elevation. Mark this as a leaf\n mip.leaves.push(1);\n } else {\n mip.leaves.push(0);\n }\n }\n\n mips.push(mip);\n }\n\n return mips;\n}\n","// @flow\nimport {RGBAImage} from '../util/image.js';\n\nimport {warnOnce, clamp} from '../util/util.js';\nimport {register} from '../util/web_worker_transfer.js';\nimport DemMinMaxQuadTree from './dem_tree.js';\nimport assert from 'assert';\n\n// DEMData is a data structure for decoding, backfilling, and storing elevation data for processing in the hillshade shaders\n// data can be populated either from a pngraw image tile or from serliazed data sent back from a worker. When data is initially\n// loaded from a image tile, we decode the pixel values using the appropriate decoding formula, but we store the\n// elevation data as an Int32 value. we add 65536 (2^16) to eliminate negative values and enable the use of\n// integer overflow when creating the texture used in the hillshadePrepare step.\n\n// DEMData also handles the backfilling of data from a tile's neighboring tiles. This is necessary because we use a pixel's 8\n// surrounding pixel values to compute the slope at that pixel, and we cannot accurately calculate the slope at pixels on a\n// tile's edge without backfilling from neighboring tiles.\n\nexport type DEMEncoding = \"mapbox\" | \"terrarium\";\n\nconst unpackVectors = {\n mapbox: [6553.6, 25.6, 0.1, 10000.0],\n terrarium: [256.0, 1.0, 1.0 / 256.0, 32768.0]\n};\n\nexport default class DEMData {\n uid: number;\n pixels: Uint8Array;\n stride: number;\n dim: number;\n encoding: DEMEncoding;\n borderReady: boolean;\n _tree: DemMinMaxQuadTree;\n get tree(): DemMinMaxQuadTree {\n if (!this._tree) this._buildQuadTree();\n return this._tree;\n }\n\n // RGBAImage data has uniform 1px padding on all sides: square tile edge size defines stride\n // and dim is calculated as stride - 2.\n constructor(uid: number, data: ImageData, encoding: DEMEncoding, borderReady: boolean = false, buildQuadTree: boolean = false): void {\n this.uid = uid;\n if (data.height !== data.width) throw new RangeError('DEM tiles must be square');\n if (encoding && encoding !== \"mapbox\" && encoding !== \"terrarium\") return warnOnce(\n `\"${encoding}\" is not a valid encoding type. Valid types include \"mapbox\" and \"terrarium\".`\n );\n this.stride = data.height;\n const dim = this.dim = data.height - 2;\n const values = new Uint32Array(data.data.buffer);\n this.pixels = new Uint8Array(data.data.buffer);\n this.encoding = encoding || 'mapbox';\n this.borderReady = borderReady;\n\n if (borderReady) return;\n\n // in order to avoid flashing seams between tiles, here we are initially populating a 1px border of pixels around the image\n // with the data of the nearest pixel from the image. this data is eventually replaced when the tile's neighboring\n // tiles are loaded and the accurate data can be backfilled using DEMData#backfillBorder\n for (let x = 0; x < dim; x++) {\n // left vertical border\n values[this._idx(-1, x)] = values[this._idx(0, x)];\n // right vertical border\n values[this._idx(dim, x)] = values[this._idx(dim - 1, x)];\n // left horizontal border\n values[this._idx(x, -1)] = values[this._idx(x, 0)];\n // right horizontal border\n values[this._idx(x, dim)] = values[this._idx(x, dim - 1)];\n }\n // corners\n values[this._idx(-1, -1)] = values[this._idx(0, 0)];\n values[this._idx(dim, -1)] = values[this._idx(dim - 1, 0)];\n values[this._idx(-1, dim)] = values[this._idx(0, dim - 1)];\n values[this._idx(dim, dim)] = values[this._idx(dim - 1, dim - 1)];\n if (buildQuadTree) this._buildQuadTree();\n }\n\n _buildQuadTree() {\n assert(!this._tree);\n // Construct the implicit sparse quad tree by traversing mips from top to down\n this._tree = new DemMinMaxQuadTree(this);\n }\n\n get(x: number, y: number, clampToEdge: boolean = false): number {\n if (clampToEdge) {\n x = clamp(x, -1, this.dim);\n y = clamp(y, -1, this.dim);\n }\n const index = this._idx(x, y) * 4;\n const unpack = this.encoding === \"terrarium\" ? this._unpackTerrarium : this._unpackMapbox;\n return unpack(this.pixels[index], this.pixels[index + 1], this.pixels[index + 2]);\n }\n\n static getUnpackVector(encoding: DEMEncoding): [number, number, number, number] {\n return unpackVectors[encoding];\n }\n\n get unpackVector(): [number, number, number, number] {\n return unpackVectors[this.encoding];\n }\n\n _idx(x: number, y: number): number {\n if (x < -1 || x >= this.dim + 1 || y < -1 || y >= this.dim + 1) throw new RangeError('out of range source coordinates for DEM data');\n return (y + 1) * this.stride + (x + 1);\n }\n\n _unpackMapbox(r: number, g: number, b: number): number {\n // unpacking formula for mapbox.terrain-rgb:\n // https://www.mapbox.com/help/access-elevation-data/#mapbox-terrain-rgb\n return ((r * 256 * 256 + g * 256.0 + b) / 10.0 - 10000.0);\n }\n\n _unpackTerrarium(r: number, g: number, b: number): number {\n // unpacking formula for mapzen terrarium:\n // https://aws.amazon.com/public-datasets/terrain/\n return ((r * 256 + g + b / 256) - 32768.0);\n }\n\n static pack(altitude: number, encoding: DEMEncoding): [number, number, number, number] {\n const color = [0, 0, 0, 0];\n const vector = DEMData.getUnpackVector(encoding);\n let v = Math.floor((altitude + vector[3]) / vector[2]);\n color[2] = v % 256;\n v = Math.floor(v / 256);\n color[1] = v % 256;\n v = Math.floor(v / 256);\n color[0] = v;\n return color;\n }\n\n getPixels(): RGBAImage {\n return new RGBAImage({width: this.stride, height: this.stride}, this.pixels);\n }\n\n backfillBorder(borderTile: DEMData, dx: number, dy: number) {\n if (this.dim !== borderTile.dim) throw new Error('dem dimension mismatch');\n\n let xMin = dx * this.dim,\n xMax = dx * this.dim + this.dim,\n yMin = dy * this.dim,\n yMax = dy * this.dim + this.dim;\n\n switch (dx) {\n case -1:\n xMin = xMax - 1;\n break;\n case 1:\n xMax = xMin + 1;\n break;\n }\n\n switch (dy) {\n case -1:\n yMin = yMax - 1;\n break;\n case 1:\n yMax = yMin + 1;\n break;\n }\n\n const ox = -dx * this.dim;\n const oy = -dy * this.dim;\n for (let y = yMin; y < yMax; y++) {\n for (let x = xMin; x < xMax; x++) {\n const i = 4 * this._idx(x, y);\n const j = 4 * this._idx(x + ox, y + oy);\n this.pixels[i + 0] = borderTile.pixels[j + 0];\n this.pixels[i + 1] = borderTile.pixels[j + 1];\n this.pixels[i + 2] = borderTile.pixels[j + 2];\n this.pixels[i + 3] = borderTile.pixels[j + 3];\n }\n }\n }\n\n onDeserialize() {\n if (this._tree) this._tree.dem = this;\n }\n}\n\nregister(DEMData, 'DEMData');\nregister(DemMinMaxQuadTree, 'DemMinMaxQuadTree', {omit: ['dem']});\n","// @flow\n\nimport {OverscaledTileID} from './tile_id.js';\nimport type Tile from './tile.js';\n\n/**\n * A [least-recently-used cache](http://en.wikipedia.org/wiki/Cache_algorithms)\n * with hash lookup made possible by keeping a list of keys in parallel to\n * an array of dictionary of values\n *\n * @private\n */\nclass TileCache {\n max: number;\n data: {[key: string | number]: Array<{ value: Tile, timeout: ?TimeoutID}>};\n order: Array<number>;\n onRemove: (element: Tile) => void;\n /**\n * @param {number} max The max number of permitted values.\n * @private\n * @param {Function} onRemove The callback called with items when they expire.\n */\n constructor(max: number, onRemove: (element: Tile) => void) {\n this.max = max;\n this.onRemove = onRemove;\n this.reset();\n }\n\n /**\n * Clear the cache.\n *\n * @returns {TileCache} Returns itself to allow for method chaining.\n * @private\n */\n reset(): this {\n for (const key in this.data) {\n for (const removedData of this.data[key]) {\n if (removedData.timeout) clearTimeout(removedData.timeout);\n this.onRemove(removedData.value);\n }\n }\n\n this.data = {};\n this.order = [];\n\n return this;\n }\n\n /**\n * Add a key, value combination to the cache, trimming its size if this pushes\n * it over max length.\n *\n * @param {OverscaledTileID} tileID lookup key for the item\n * @param {*} data any value\n *\n * @returns {TileCache} Returns itself to allow for method chaining.\n * @private\n */\n add(tileID: OverscaledTileID, data: Tile, expiryTimeout: number | void): this {\n const key = tileID.wrapped().key;\n if (this.data[key] === undefined) {\n this.data[key] = [];\n }\n\n const dataWrapper = {\n value: data,\n timeout: undefined\n };\n\n if (expiryTimeout !== undefined) {\n dataWrapper.timeout = setTimeout(() => {\n this.remove(tileID, dataWrapper);\n }, expiryTimeout);\n }\n\n this.data[key].push(dataWrapper);\n this.order.push(key);\n\n if (this.order.length > this.max) {\n const removedData = this._getAndRemoveByKey(this.order[0]);\n if (removedData) this.onRemove(removedData);\n }\n\n return this;\n }\n\n /**\n * Determine whether the value attached to `key` is present\n *\n * @param {OverscaledTileID} tileID the key to be looked-up\n * @returns {boolean} whether the cache has this value\n * @private\n */\n has(tileID: OverscaledTileID): boolean {\n return tileID.wrapped().key in this.data;\n }\n\n /**\n * Get the value attached to a specific key and remove data from cache.\n * If the key is not found, returns `null`\n *\n * @param {OverscaledTileID} tileID the key to look up\n * @returns {*} the data, or null if it isn't found\n * @private\n */\n getAndRemove(tileID: OverscaledTileID): ?Tile {\n if (!this.has(tileID)) { return null; }\n return this._getAndRemoveByKey(tileID.wrapped().key);\n }\n\n /*\n * Get and remove the value with the specified key.\n */\n _getAndRemoveByKey(key: number): ?Tile {\n const data = this.data[key].shift();\n if (data.timeout) clearTimeout(data.timeout);\n\n if (this.data[key].length === 0) {\n delete this.data[key];\n }\n this.order.splice(this.order.indexOf(key), 1);\n\n return data.value;\n }\n\n /*\n * Get the value with the specified (wrapped tile) key.\n */\n getByKey(key: number): ?Tile {\n const data = this.data[key];\n return data ? data[0].value : null;\n }\n\n /**\n * Get the value attached to a specific key without removing data\n * from the cache. If the key is not found, returns `null`\n *\n * @param {OverscaledTileID} tileID the key to look up\n * @returns {*} the data, or null if it isn't found\n * @private\n */\n get(tileID: OverscaledTileID): ?Tile {\n if (!this.has(tileID)) { return null; }\n\n const data = this.data[tileID.wrapped().key][0];\n return data.value;\n }\n\n /**\n * Remove a key/value combination from the cache.\n *\n * @param {OverscaledTileID} tileID the key for the pair to delete\n * @param {Tile} value If a value is provided, remove that exact version of the value.\n * @returns {TileCache} this cache\n * @private\n */\n remove(tileID: OverscaledTileID, value: ?{ value: Tile, timeout: ?TimeoutID}): this {\n if (!this.has(tileID)) { return this; }\n const key = tileID.wrapped().key;\n\n const dataIndex = value === undefined ? 0 : this.data[key].indexOf(value);\n const data = this.data[key][dataIndex];\n this.data[key].splice(dataIndex, 1);\n if (data.timeout) clearTimeout(data.timeout);\n if (this.data[key].length === 0) {\n delete this.data[key];\n }\n this.onRemove(data.value);\n this.order.splice(this.order.indexOf(key), 1);\n\n return this;\n }\n\n /**\n * Change the max size of the cache.\n *\n * @param {number} max the max size of the cache\n * @returns {TileCache} this cache\n * @private\n */\n setMaxSize(max: number): TileCache {\n this.max = max;\n\n while (this.order.length > this.max) {\n const removedData = this._getAndRemoveByKey(this.order[0]);\n if (removedData) this.onRemove(removedData);\n }\n\n return this;\n }\n\n /**\n * Remove entries that do not pass a filter function. Used for removing\n * stale tiles from the cache.\n *\n * @private\n * @param {function} filterFn Determines whether the tile is filtered. If the supplied function returns false, the tile will be filtered out.\n */\n filter(filterFn: (tile: Tile) => boolean) {\n const removed = [];\n for (const key in this.data) {\n for (const entry of this.data[key]) {\n if (!filterFn(entry.value)) {\n removed.push(entry);\n }\n }\n }\n for (const r of removed) {\n this.remove(r.value.tileID, r);\n }\n }\n}\n\nexport default TileCache;\n","// @flow\nimport type {DepthFuncType, DepthMaskType, DepthRangeType} from './types.js';\n\nconst ALWAYS = 0x0207;\n\nclass DepthMode {\n func: DepthFuncType;\n mask: DepthMaskType;\n range: DepthRangeType;\n\n // DepthMask enums\n static ReadOnly: boolean;\n static ReadWrite: boolean;\n\n constructor(depthFunc: DepthFuncType, depthMask: DepthMaskType, depthRange: DepthRangeType) {\n this.func = depthFunc;\n this.mask = depthMask;\n this.range = depthRange;\n }\n\n static disabled: $ReadOnly<DepthMode>;\n}\n\nDepthMode.ReadOnly = false;\nDepthMode.ReadWrite = true;\n\nDepthMode.disabled = new DepthMode(ALWAYS, DepthMode.ReadOnly, [0, 1]);\n\nexport default DepthMode;\n","// @flow\nimport type {StencilOpConstant, StencilTest} from './types.js';\n\nconst ALWAYS = 0x0207;\nconst KEEP = 0x1E00;\n\nclass StencilMode {\n test: StencilTest;\n ref: number;\n mask: number;\n fail: StencilOpConstant;\n depthFail: StencilOpConstant;\n pass: StencilOpConstant;\n\n constructor(test: StencilTest, ref: number, mask: number, fail: StencilOpConstant,\n depthFail: StencilOpConstant, pass: StencilOpConstant) {\n this.test = test;\n this.ref = ref;\n this.mask = mask;\n this.fail = fail;\n this.depthFail = depthFail;\n this.pass = pass;\n }\n\n static disabled: $ReadOnly<StencilMode>;\n}\n\nStencilMode.disabled = new StencilMode({func: ALWAYS, mask: 0}, 0, 0, KEEP, KEEP, KEEP);\n\nexport default StencilMode;\n","// @flow\nimport Color from '../style-spec/util/color.js';\n\nimport type {BlendFuncType, ColorMaskType} from './types.js';\n\nconst ZERO = 0x0000;\nconst ONE = 0x0001;\nconst ONE_MINUS_SRC_ALPHA = 0x0303;\n\nclass ColorMode {\n blendFunction: BlendFuncType;\n blendColor: Color;\n mask: ColorMaskType;\n\n constructor(blendFunction: BlendFuncType, blendColor: Color, mask: ColorMaskType) {\n this.blendFunction = blendFunction;\n this.blendColor = blendColor;\n this.mask = mask;\n }\n\n static Replace: BlendFuncType;\n\n static disabled: $ReadOnly<ColorMode>;\n static unblended: $ReadOnly<ColorMode>;\n static alphaBlended: $ReadOnly<ColorMode>;\n}\n\nColorMode.Replace = [ONE, ZERO];\n\nColorMode.disabled = new ColorMode(ColorMode.Replace, Color.transparent, [false, false, false, false]);\nColorMode.unblended = new ColorMode(ColorMode.Replace, Color.transparent, [true, true, true, true]);\nColorMode.alphaBlended = new ColorMode([ONE, ONE_MINUS_SRC_ALPHA], Color.transparent, [true, true, true, true]);\n\nexport default ColorMode;\n","// @flow\n\nimport type {CullFaceModeType, FrontFaceType} from './types.js';\n\nconst BACK = 0x0405;\nconst FRONT = 0x0404;\nconst CCW = 0x0901;\nconst CW = 0x0900;\n\nclass CullFaceMode {\n enable: boolean;\n mode: CullFaceModeType;\n frontFace: FrontFaceType;\n\n constructor(enable: boolean, mode: CullFaceModeType, frontFace: FrontFaceType) {\n this.enable = enable;\n this.mode = mode;\n this.frontFace = frontFace;\n }\n\n static disabled: $ReadOnly<CullFaceMode>;\n static backCCW: $ReadOnly<CullFaceMode>;\n static backCW: $ReadOnly<CullFaceMode>;\n static frontCW: $ReadOnly<CullFaceMode>;\n static frontCCW: $ReadOnly<CullFaceMode>;\n}\n\nCullFaceMode.disabled = new CullFaceMode(false, BACK, CCW);\nCullFaceMode.backCCW = new CullFaceMode(true, BACK, CCW);\nCullFaceMode.backCW = new CullFaceMode(true, BACK, CW);\nCullFaceMode.frontCW = new CullFaceMode(true, FRONT, CW);\nCullFaceMode.frontCCW = new CullFaceMode(true, FRONT, CCW);\n\nexport default CullFaceMode;\n","// @flow\n\nimport Tile from './tile.js';\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\nimport TileCache from './tile_cache.js';\nimport {asyncAll, keysDifference, values, clamp} from '../util/util.js';\nimport Context from '../gl/context.js';\nimport Point from '@mapbox/point-geometry';\nimport browser from '../util/browser.js';\nimport {OverscaledTileID, CanonicalTileID} from './tile_id.js';\nimport assert from 'assert';\nimport SourceFeatureState from './source_state.js';\nimport {mercatorXfromLng} from '../geo/mercator_coordinate.js';\n\nimport type {Source} from './source.js';\nimport type {SourceSpecification} from '../style-spec/types.js';\nimport type {default as MapboxMap} from '../ui/map.js';\nimport type Style from '../style/style.js';\nimport type Transform from '../geo/transform.js';\nimport type {TileState} from './tile.js';\nimport type {Callback} from '../types/callback.js';\nimport type {FeatureStates} from './source_state.js';\nimport type {QueryGeometry, TilespaceQueryGeometry} from '../style/query_geometry.js';\n\n/**\n * `SourceCache` is responsible for\n *\n * - creating an instance of `Source`\n * - forwarding events from `Source`\n * - caching tiles loaded from an instance of `Source`\n * - loading the tiles needed to render a given viewport\n * - unloading the cached tiles not needed to render a given viewport\n *\n * @private\n */\nclass SourceCache extends Evented {\n id: string;\n map: MapboxMap;\n style: Style;\n\n _source: Source;\n _sourceLoaded: boolean;\n _sourceErrored: boolean;\n _tiles: {[_: string | number]: Tile};\n _prevLng: number | void;\n _cache: TileCache;\n _timers: {[_: any]: TimeoutID};\n _cacheTimers: {[_: any]: TimeoutID};\n _minTileCacheSize: ?number;\n _maxTileCacheSize: ?number;\n _paused: boolean;\n _isRaster: boolean;\n _shouldReloadOnResume: boolean;\n _coveredTiles: {[_: number | string]: boolean};\n transform: Transform;\n _isIdRenderable: (id: number, symbolLayer?: boolean) => boolean;\n used: boolean;\n usedForTerrain: boolean;\n _state: SourceFeatureState;\n _loadedParentTiles: {[_: number | string]: ?Tile};\n _onlySymbols: ?boolean;\n\n static maxUnderzooming: number;\n static maxOverzooming: number;\n\n constructor(id: string, source: Source, onlySymbols?: boolean) {\n super();\n this.id = id;\n this._onlySymbols = onlySymbols;\n\n source.on('data', (e) => {\n // this._sourceLoaded signifies that the TileJSON is loaded if applicable.\n // if the source type does not come with a TileJSON, the flag signifies the\n // source data has loaded (in other words, GeoJSON has been tiled on the worker and is ready)\n if (e.dataType === 'source' && e.sourceDataType === 'metadata') this._sourceLoaded = true;\n\n // for sources with mutable data, this event fires when the underlying data\n // to a source is changed (for example, using [GeoJSONSource#setData](https://docs.mapbox.com/mapbox-gl-js/api/sources/#geojsonsource#setdata) or [ImageSource#setCoordinates](https://docs.mapbox.com/mapbox-gl-js/api/sources/#imagesource#setcoordinates))\n if (this._sourceLoaded && !this._paused && e.dataType === \"source\" && e.sourceDataType === 'content') {\n this.reload();\n if (this.transform) {\n this.update(this.transform);\n }\n }\n });\n\n source.on('error', () => {\n this._sourceErrored = true;\n });\n\n this._source = source;\n this._tiles = {};\n this._cache = new TileCache(0, this._unloadTile.bind(this));\n this._timers = {};\n this._cacheTimers = {};\n this._minTileCacheSize = source.minTileCacheSize;\n this._maxTileCacheSize = source.maxTileCacheSize;\n this._loadedParentTiles = {};\n\n this._coveredTiles = {};\n this._state = new SourceFeatureState();\n this._isRaster =\n this._source.type === 'raster' ||\n this._source.type === 'raster-dem' ||\n // $FlowFixMe[prop-missing]\n (this._source.type === 'custom' && this._source._dataType === 'raster');\n }\n\n onAdd(map: MapboxMap) {\n this.map = map;\n this._minTileCacheSize = this._minTileCacheSize === undefined && map ? map._minTileCacheSize : this._minTileCacheSize;\n this._maxTileCacheSize = this._maxTileCacheSize === undefined && map ? map._maxTileCacheSize : this._maxTileCacheSize;\n }\n\n /**\n * Return true if no tile data is pending, tiles will not change unless\n * an additional API call is received.\n * @private\n */\n loaded(): boolean {\n if (this._sourceErrored) { return true; }\n if (!this._sourceLoaded) { return false; }\n if (!this._source.loaded()) { return false; }\n for (const t in this._tiles) {\n const tile = this._tiles[t];\n if (tile.state !== 'loaded' && tile.state !== 'errored')\n return false;\n }\n return true;\n }\n\n getSource(): Source {\n return this._source;\n }\n\n pause() {\n this._paused = true;\n }\n\n resume() {\n if (!this._paused) return;\n const shouldReload = this._shouldReloadOnResume;\n this._paused = false;\n this._shouldReloadOnResume = false;\n if (shouldReload) this.reload();\n if (this.transform) this.update(this.transform);\n }\n\n _loadTile(tile: Tile, callback: Callback<void>): void {\n tile.isSymbolTile = this._onlySymbols;\n return this._source.loadTile(tile, callback);\n }\n\n _unloadTile(tile: Tile): void {\n if (this._source.unloadTile)\n return this._source.unloadTile(tile, () => {});\n }\n\n _abortTile(tile: Tile): void {\n if (this._source.abortTile)\n return this._source.abortTile(tile, () => {});\n }\n\n serialize(): SourceSpecification {\n return this._source.serialize();\n }\n\n prepare(context: Context) {\n if (this._source.prepare) {\n this._source.prepare();\n }\n\n this._state.coalesceChanges(this._tiles, this.map ? this.map.painter : null);\n\n if (this._source.prepareTile) {\n for (const i in this._tiles) {\n const tile = this._tiles[i];\n const data = this._source.prepareTile(tile);\n if (data && this.map.painter.terrain) {\n this.map.painter.terrain._clearRenderCacheForTile(this.id, tile.tileID);\n }\n\n tile.upload(context);\n tile.prepare(this.map.style.imageManager);\n }\n\n return;\n }\n\n for (const i in this._tiles) {\n const tile = this._tiles[i];\n tile.upload(context);\n tile.prepare(this.map.style.imageManager);\n }\n }\n\n /**\n * Return all tile ids ordered with z-order, and cast to numbers\n * @private\n */\n getIds(): Array<number> {\n return values((this._tiles: any)).map((tile: Tile) => tile.tileID).sort(compareTileId).map(id => id.key);\n }\n\n getRenderableIds(symbolLayer?: boolean): Array<number> {\n const renderables: Array<Tile> = [];\n for (const id in this._tiles) {\n if (this._isIdRenderable(+id, symbolLayer)) renderables.push(this._tiles[id]);\n }\n if (symbolLayer) {\n return renderables.sort((a_: Tile, b_: Tile) => {\n const a = a_.tileID;\n const b = b_.tileID;\n const rotatedA = (new Point(a.canonical.x, a.canonical.y))._rotate(this.transform.angle);\n const rotatedB = (new Point(b.canonical.x, b.canonical.y))._rotate(this.transform.angle);\n return a.overscaledZ - b.overscaledZ || rotatedB.y - rotatedA.y || rotatedB.x - rotatedA.x;\n }).map(tile => tile.tileID.key);\n }\n return renderables.map(tile => tile.tileID).sort(compareTileId).map(id => id.key);\n }\n\n hasRenderableParent(tileID: OverscaledTileID): boolean {\n const parentTile = this.findLoadedParent(tileID, 0);\n if (parentTile) {\n return this._isIdRenderable(parentTile.tileID.key);\n }\n return false;\n }\n\n _isIdRenderable(id: number, symbolLayer?: boolean): boolean {\n return this._tiles[id] && this._tiles[id].hasData() &&\n !this._coveredTiles[id] && (symbolLayer || !this._tiles[id].holdingForFade());\n }\n\n reload() {\n if (this._paused) {\n this._shouldReloadOnResume = true;\n return;\n }\n\n this._cache.reset();\n\n for (const i in this._tiles) {\n if (this._tiles[i].state !== \"errored\") this._reloadTile(+i, 'reloading');\n }\n }\n\n _reloadTile(id: number, state: TileState) {\n const tile = this._tiles[id];\n\n // this potentially does not address all underlying\n // issues https://github.com/mapbox/mapbox-gl-js/issues/4252\n // - hard to tell without repro steps\n if (!tile) return;\n\n // The difference between \"loading\" tiles and \"reloading\" or \"expired\"\n // tiles is that \"reloading\"/\"expired\" tiles are \"renderable\".\n // Therefore, a \"loading\" tile cannot become a \"reloading\" tile without\n // first becoming a \"loaded\" tile.\n if (tile.state !== 'loading') {\n tile.state = state;\n }\n\n this._loadTile(tile, this._tileLoaded.bind(this, tile, id, state));\n }\n\n _tileLoaded(tile: Tile, id: number, previousState: TileState, err: ?Error) {\n if (err) {\n tile.state = 'errored';\n if ((err: any).status !== 404) this._source.fire(new ErrorEvent(err, {tile}));\n else {\n // continue to try loading parent/children tiles if a tile doesn't exist (404)\n const updateForTerrain = this._source.type === 'raster-dem' && this.usedForTerrain;\n if (updateForTerrain && this.map.painter.terrain) {\n const terrain = this.map.painter.terrain;\n this.update(this.transform, terrain.getScaledDemTileSize(), true);\n terrain.resetTileLookupCache(this.id);\n } else {\n this.update(this.transform);\n }\n }\n return;\n }\n\n tile.timeAdded = browser.now();\n if (previousState === 'expired') tile.refreshedUponExpiration = true;\n this._setTileReloadTimer(id, tile);\n if (this._source.type === 'raster-dem' && tile.dem) this._backfillDEM(tile);\n this._state.initializeTileState(tile, this.map ? this.map.painter : null);\n\n this._source.fire(new Event('data', {dataType: 'source', tile, coord: tile.tileID, 'sourceCacheId': this.id}));\n }\n\n /**\n * For raster terrain source, backfill DEM to eliminate visible tile boundaries\n * @private\n */\n _backfillDEM(tile: Tile) {\n const renderables = this.getRenderableIds();\n for (let i = 0; i < renderables.length; i++) {\n const borderId = renderables[i];\n if (tile.neighboringTiles && tile.neighboringTiles[borderId]) {\n const borderTile = this.getTileByID(borderId);\n fillBorder(tile, borderTile);\n fillBorder(borderTile, tile);\n }\n }\n\n function fillBorder(tile, borderTile) {\n if (!tile.dem || tile.dem.borderReady) return;\n tile.needsHillshadePrepare = true;\n tile.needsDEMTextureUpload = true;\n let dx = borderTile.tileID.canonical.x - tile.tileID.canonical.x;\n const dy = borderTile.tileID.canonical.y - tile.tileID.canonical.y;\n const dim = Math.pow(2, tile.tileID.canonical.z);\n const borderId = borderTile.tileID.key;\n if (dx === 0 && dy === 0) return;\n\n if (Math.abs(dy) > 1) {\n return;\n }\n if (Math.abs(dx) > 1) {\n // Adjust the delta coordinate for world wraparound.\n if (Math.abs(dx + dim) === 1) {\n dx += dim;\n } else if (Math.abs(dx - dim) === 1) {\n dx -= dim;\n }\n }\n if (!borderTile.dem || !tile.dem) return;\n tile.dem.backfillBorder(borderTile.dem, dx, dy);\n if (tile.neighboringTiles && tile.neighboringTiles[borderId])\n tile.neighboringTiles[borderId].backfilled = true;\n }\n }\n /**\n * Get a specific tile by TileID\n * @private\n */\n getTile(tileID: OverscaledTileID): Tile {\n return this.getTileByID(tileID.key);\n }\n\n /**\n * Get a specific tile by id\n * @private\n */\n getTileByID(id: number): Tile {\n return this._tiles[id];\n }\n\n /**\n * For a given set of tiles, retain children that are loaded and have a zoom\n * between `zoom` (exclusive) and `maxCoveringZoom` (inclusive)\n * @private\n */\n _retainLoadedChildren(\n idealTiles: {[number | string]: OverscaledTileID},\n zoom: number,\n maxCoveringZoom: number,\n retain: {[number | string]: OverscaledTileID}\n ) {\n for (const id in this._tiles) {\n let tile = this._tiles[id];\n\n // only consider renderable tiles up to maxCoveringZoom\n if (retain[id] ||\n !tile.hasData() ||\n tile.tileID.overscaledZ <= zoom ||\n tile.tileID.overscaledZ > maxCoveringZoom\n ) continue;\n\n // loop through parents and retain the topmost loaded one if found\n let topmostLoadedID = tile.tileID;\n while (tile && tile.tileID.overscaledZ > zoom + 1) {\n const parentID = tile.tileID.scaledTo(tile.tileID.overscaledZ - 1);\n\n tile = this._tiles[parentID.key];\n\n if (tile && tile.hasData()) {\n topmostLoadedID = parentID;\n }\n }\n\n // loop through ancestors of the topmost loaded child to see if there's one that needed it\n let tileID = topmostLoadedID;\n while (tileID.overscaledZ > zoom) {\n tileID = tileID.scaledTo(tileID.overscaledZ - 1);\n\n if (idealTiles[tileID.key]) {\n // found a parent that needed a loaded child; retain that child\n retain[topmostLoadedID.key] = topmostLoadedID;\n break;\n }\n }\n }\n }\n\n /**\n * Find a loaded parent of the given tile (up to minCoveringZoom)\n * @private\n */\n findLoadedParent(tileID: OverscaledTileID, minCoveringZoom: number): ?Tile {\n if (tileID.key in this._loadedParentTiles) {\n const parent = this._loadedParentTiles[tileID.key];\n if (parent && parent.tileID.overscaledZ >= minCoveringZoom) {\n return parent;\n } else {\n return null;\n }\n }\n for (let z = tileID.overscaledZ - 1; z >= minCoveringZoom; z--) {\n const parentTileID = tileID.scaledTo(z);\n const tile = this._getLoadedTile(parentTileID);\n if (tile) {\n return tile;\n }\n }\n }\n\n _getLoadedTile(tileID: OverscaledTileID): ?Tile {\n const tile = this._tiles[tileID.key];\n if (tile && tile.hasData()) {\n return tile;\n }\n // TileCache ignores wrap in lookup.\n const cachedTile = this._cache.getByKey(this._source.reparseOverscaled ? tileID.wrapped().key : tileID.canonical.key);\n return cachedTile;\n }\n\n /**\n * Resizes the tile cache based on the current viewport's size\n * or the minTileCacheSize and maxTileCacheSize options passed during map creation\n *\n * Larger viewports use more tiles and need larger caches. Larger viewports\n * are more likely to be found on devices with more memory and on pages where\n * the map is more important.\n * @private\n */\n updateCacheSize(transform: Transform, tileSize?: number) {\n tileSize = tileSize || this._source.tileSize;\n const widthInTiles = Math.ceil(transform.width / tileSize) + 1;\n const heightInTiles = Math.ceil(transform.height / tileSize) + 1;\n const approxTilesInView = widthInTiles * heightInTiles;\n const commonZoomRange = 5;\n\n const viewDependentMaxSize = Math.floor(approxTilesInView * commonZoomRange);\n const minSize = typeof this._minTileCacheSize === 'number' ? Math.max(this._minTileCacheSize, viewDependentMaxSize) : viewDependentMaxSize;\n const maxSize = typeof this._maxTileCacheSize === 'number' ? Math.min(this._maxTileCacheSize, minSize) : minSize;\n\n this._cache.setMaxSize(maxSize);\n }\n\n handleWrapJump(lng: number) {\n // On top of the regular z/x/y values, TileIDs have a `wrap` value that specify\n // which copy of the world the tile belongs to. For example, at `lng: 10` you\n // might render z/x/y/0 while at `lng: 370` you would render z/x/y/1.\n //\n // When lng values get wrapped (going from `lng: 370` to `long: 10`) you expect\n // to see the same thing on the screen (370 degrees and 10 degrees is the same\n // place in the world) but all the TileIDs will have different wrap values.\n //\n // In order to make this transition seamless, we calculate the rounded difference of\n // \"worlds\" between the last frame and the current frame. If the map panned by\n // a world, then we can assign all the tiles new TileIDs with updated wrap values.\n // For example, assign z/x/y/1 a new id: z/x/y/0. It is the same tile, just rendered\n // in a different position.\n //\n // This enables us to reuse the tiles at more ideal locations and prevent flickering.\n const prevLng = this._prevLng === undefined ? lng : this._prevLng;\n const lngDifference = lng - prevLng;\n const worldDifference = lngDifference / 360;\n const wrapDelta = Math.round(worldDifference);\n this._prevLng = lng;\n\n if (wrapDelta) {\n const tiles: {[_: string | number]: Tile} = {};\n for (const key in this._tiles) {\n const tile = this._tiles[key];\n tile.tileID = tile.tileID.unwrapTo(tile.tileID.wrap + wrapDelta);\n tiles[tile.tileID.key] = tile;\n }\n this._tiles = tiles;\n\n // Reset tile reload timers\n for (const id in this._timers) {\n clearTimeout(this._timers[id]);\n delete this._timers[id];\n }\n for (const id in this._tiles) {\n const tile = this._tiles[id];\n this._setTileReloadTimer(+id, tile);\n }\n }\n }\n\n /**\n * Removes tiles that are outside the viewport and adds new tiles that\n * are inside the viewport.\n * @private\n * @param {boolean} updateForTerrain Signals to update tiles even if the\n * source is not used (this.used) by layers: it is used for terrain.\n * @param {tileSize} tileSize If needed to get lower resolution ideal cover,\n * override source.tileSize used in tile cover calculation.\n */\n update(transform: Transform, tileSize?: number, updateForTerrain?: boolean) {\n this.transform = transform;\n if (!this._sourceLoaded || this._paused || this.transform.freezeTileCoverage) { return; }\n assert(!(updateForTerrain && !this.usedForTerrain));\n if (this.usedForTerrain && !updateForTerrain) {\n // If source is used for both terrain and hillshade, don't update it twice.\n return;\n }\n\n this.updateCacheSize(transform, tileSize);\n if (this.transform.projection.name !== 'globe') {\n this.handleWrapJump(this.transform.center.lng);\n }\n\n // Covered is a list of retained tiles who's areas are fully covered by other,\n // better, retained tiles. They are not drawn separately.\n this._coveredTiles = {};\n\n let idealTileIDs;\n if (!this.used && !this.usedForTerrain) {\n idealTileIDs = [];\n } else if (this._source.tileID) {\n idealTileIDs = transform.getVisibleUnwrappedCoordinates(this._source.tileID)\n .map((unwrapped) => new OverscaledTileID(unwrapped.canonical.z, unwrapped.wrap, unwrapped.canonical.z, unwrapped.canonical.x, unwrapped.canonical.y));\n } else {\n idealTileIDs = transform.coveringTiles({\n tileSize: tileSize || this._source.tileSize,\n minzoom: this._source.minzoom,\n maxzoom: this._source.maxzoom,\n roundZoom: this._source.roundZoom && !updateForTerrain,\n reparseOverscaled: this._source.reparseOverscaled,\n isTerrainDEM: this.usedForTerrain\n });\n\n if (this._source.hasTile) {\n idealTileIDs = idealTileIDs.filter((coord) => (this._source.hasTile: any)(coord));\n }\n }\n\n // Retain is a list of tiles that we shouldn't delete, even if they are not\n // the most ideal tile for the current viewport. This may include tiles like\n // parent or child tiles that are *already* loaded.\n const retain = this._updateRetainedTiles(idealTileIDs);\n\n if (isRasterType(this._source.type) && idealTileIDs.length !== 0) {\n const parentsForFading: {[_: string | number]: OverscaledTileID} = {};\n const fadingTiles = {};\n const ids = Object.keys(retain);\n for (const id of ids) {\n const tileID = retain[id];\n assert(tileID.key === +id);\n\n const tile = this._tiles[id];\n if (!tile || (tile.fadeEndTime && tile.fadeEndTime <= browser.now())) continue;\n\n // if the tile is loaded but still fading in, find parents to cross-fade with it\n const parentTile = this.findLoadedParent(tileID, Math.max(tileID.overscaledZ - SourceCache.maxOverzooming, this._source.minzoom));\n if (parentTile) {\n this._addTile(parentTile.tileID);\n parentsForFading[parentTile.tileID.key] = parentTile.tileID;\n }\n\n fadingTiles[id] = tileID;\n }\n\n // for children tiles with parent tiles still fading in,\n // retain the children so the parent can fade on top\n const minZoom = idealTileIDs[idealTileIDs.length - 1].overscaledZ;\n for (const id in this._tiles) {\n const childTile = this._tiles[id];\n if (retain[id] || !childTile.hasData()) {\n continue;\n }\n\n let parentID = childTile.tileID;\n while (parentID.overscaledZ > minZoom) {\n parentID = parentID.scaledTo(parentID.overscaledZ - 1);\n const tile = this._tiles[parentID.key];\n if (tile && tile.hasData() && fadingTiles[parentID.key]) {\n retain[id] = childTile.tileID;\n break;\n }\n }\n }\n\n for (const id in parentsForFading) {\n if (!retain[id]) {\n // If a tile is only needed for fading, mark it as covered so that it isn't rendered on it's own.\n this._coveredTiles[id] = true;\n retain[id] = parentsForFading[id];\n }\n }\n }\n\n for (const retainedId in retain) {\n // Make sure retained tiles always clear any existing fade holds\n // so that if they're removed again their fade timer starts fresh.\n this._tiles[retainedId].clearFadeHold();\n }\n\n // Remove the tiles we don't need anymore.\n const remove = keysDifference((this._tiles: any), (retain: any));\n for (const tileID of remove) {\n const tile = this._tiles[tileID];\n if (tile.hasSymbolBuckets && !tile.holdingForFade()) {\n tile.setHoldDuration(this.map._fadeDuration);\n } else if (!tile.hasSymbolBuckets || tile.symbolFadeFinished()) {\n this._removeTile(+tileID);\n }\n }\n\n // Construct a cache of loaded parents\n this._updateLoadedParentTileCache();\n\n if (this._onlySymbols && this._source.afterUpdate) {\n this._source.afterUpdate();\n }\n }\n\n releaseSymbolFadeTiles() {\n for (const id in this._tiles) {\n if (this._tiles[id].holdingForFade()) {\n this._removeTile(+id);\n }\n }\n }\n\n _updateRetainedTiles(idealTileIDs: Array<OverscaledTileID>): {[_: number | string]: OverscaledTileID} {\n const retain: {[_: number | string]: OverscaledTileID} = {};\n if (idealTileIDs.length === 0) { return retain; }\n\n const checked: {[_: number | string]: boolean } = {};\n const minZoom = idealTileIDs.reduce((min, id) => Math.min(min, id.overscaledZ), Infinity);\n const maxZoom = idealTileIDs[0].overscaledZ;\n assert(minZoom <= maxZoom);\n const minCoveringZoom = Math.max(maxZoom - SourceCache.maxOverzooming, this._source.minzoom);\n const maxCoveringZoom = Math.max(maxZoom + SourceCache.maxUnderzooming, this._source.minzoom);\n\n const missingTiles = {};\n for (const tileID of idealTileIDs) {\n const tile = this._addTile(tileID);\n\n // retain the tile even if it's not loaded because it's an ideal tile.\n retain[tileID.key] = tileID;\n\n if (tile.hasData()) continue;\n\n if (minZoom < this._source.maxzoom) {\n // save missing tiles that potentially have loaded children\n missingTiles[tileID.key] = tileID;\n }\n }\n\n // retain any loaded children of ideal tiles up to maxCoveringZoom\n this._retainLoadedChildren(missingTiles, minZoom, maxCoveringZoom, retain);\n\n for (const tileID of idealTileIDs) {\n let tile = this._tiles[tileID.key];\n\n if (tile.hasData()) continue;\n\n // The tile we require is not yet loaded or does not exist;\n // Attempt to find children that fully cover it.\n\n if (tileID.canonical.z >= this._source.maxzoom) {\n // We're looking for an overzoomed child tile.\n const childCoord = tileID.children(this._source.maxzoom)[0];\n const childTile = this.getTile(childCoord);\n if (!!childTile && childTile.hasData()) {\n retain[childCoord.key] = childCoord;\n continue; // tile is covered by overzoomed child\n }\n } else {\n // Check if all 4 immediate children are loaded (in other words, the missing ideal tile is covered)\n const children = tileID.children(this._source.maxzoom);\n\n if (retain[children[0].key] &&\n retain[children[1].key] &&\n retain[children[2].key] &&\n retain[children[3].key]) continue; // tile is covered by children\n }\n\n // We couldn't find child tiles that entirely cover the ideal tile; look for parents now.\n\n // As we ascend up the tile pyramid of the ideal tile, we check whether the parent\n // tile has been previously requested (and errored because we only loop over tiles with no data)\n // in order to determine if we need to request its parent.\n let parentWasRequested = tile.wasRequested();\n\n for (let overscaledZ = tileID.overscaledZ - 1; overscaledZ >= minCoveringZoom; --overscaledZ) {\n const parentId = tileID.scaledTo(overscaledZ);\n\n // Break parent tile ascent if this route has been previously checked by another child.\n if (checked[parentId.key]) break;\n checked[parentId.key] = true;\n\n tile = this.getTile(parentId);\n if (!tile && parentWasRequested) {\n tile = this._addTile(parentId);\n }\n if (tile) {\n retain[parentId.key] = parentId;\n // Save the current values, since they're the parent of the next iteration\n // of the parent tile ascent loop.\n parentWasRequested = tile.wasRequested();\n if (tile.hasData()) break;\n }\n }\n }\n\n return retain;\n }\n\n _updateLoadedParentTileCache() {\n this._loadedParentTiles = {};\n\n for (const tileKey in this._tiles) {\n const path = [];\n let parentTile: ?Tile;\n let currentId = this._tiles[tileKey].tileID;\n\n // Find the closest loaded ancestor by traversing the tile tree towards the root and\n // caching results along the way\n while (currentId.overscaledZ > 0) {\n\n // Do we have a cached result from previous traversals?\n if (currentId.key in this._loadedParentTiles) {\n parentTile = this._loadedParentTiles[currentId.key];\n break;\n }\n\n path.push(currentId.key);\n\n // Is the parent loaded?\n const parentId = currentId.scaledTo(currentId.overscaledZ - 1);\n parentTile = this._getLoadedTile(parentId);\n if (parentTile) {\n break;\n }\n\n currentId = parentId;\n }\n\n // Cache the result of this traversal to all newly visited tiles\n for (const key of path) {\n this._loadedParentTiles[key] = parentTile;\n }\n }\n }\n\n /**\n * Add a tile, given its coordinate, to the pyramid.\n * @private\n */\n _addTile(tileID: OverscaledTileID): Tile {\n let tile = this._tiles[tileID.key];\n if (tile) {\n if (this._source.prepareTile) this._source.prepareTile(tile);\n return tile;\n }\n\n tile = this._cache.getAndRemove(tileID);\n if (tile) {\n this._setTileReloadTimer(tileID.key, tile);\n // set the tileID because the cached tile could have had a different wrap value\n tile.tileID = tileID;\n this._state.initializeTileState(tile, this.map ? this.map.painter : null);\n if (this._cacheTimers[tileID.key]) {\n clearTimeout(this._cacheTimers[tileID.key]);\n delete this._cacheTimers[tileID.key];\n this._setTileReloadTimer(tileID.key, tile);\n }\n }\n\n const cached = Boolean(tile);\n if (!cached) {\n const painter = this.map ? this.map.painter : null;\n tile = new Tile(tileID, this._source.tileSize * tileID.overscaleFactor(), this.transform.tileZoom, painter, this._isRaster);\n if (this._source.prepareTile) {\n const data = this._source.prepareTile(tile);\n if (!data) this._loadTile(tile, this._tileLoaded.bind(this, tile, tileID.key, tile.state));\n } else {\n this._loadTile(tile, this._tileLoaded.bind(this, tile, tileID.key, tile.state));\n }\n }\n\n // Impossible, but silence flow.\n if (!tile) return (null: any);\n\n tile.uses++;\n this._tiles[tileID.key] = tile;\n if (!cached) this._source.fire(new Event('dataloading', {tile, coord: tile.tileID, dataType: 'source'}));\n\n return tile;\n }\n\n _setTileReloadTimer(id: number, tile: Tile) {\n if (id in this._timers) {\n clearTimeout(this._timers[id]);\n delete this._timers[id];\n }\n\n const expiryTimeout = tile.getExpiryTimeout();\n if (expiryTimeout) {\n this._timers[id] = setTimeout(() => {\n this._reloadTile(id, 'expired');\n delete this._timers[id];\n }, expiryTimeout);\n }\n }\n\n /**\n * Remove a tile, given its id, from the pyramid\n * @private\n */\n _removeTile(id: number) {\n const tile = this._tiles[id];\n if (!tile)\n return;\n\n tile.uses--;\n delete this._tiles[id];\n if (this._timers[id]) {\n clearTimeout(this._timers[id]);\n delete this._timers[id];\n }\n\n if (tile.uses > 0)\n return;\n\n if (tile.hasData() && tile.state !== 'reloading') {\n this._cache.add(tile.tileID, tile, tile.getExpiryTimeout());\n } else {\n tile.aborted = true;\n this._abortTile(tile);\n this._unloadTile(tile);\n }\n }\n\n /**\n * Remove all tiles from this pyramid.\n * @private\n */\n clearTiles() {\n this._shouldReloadOnResume = false;\n this._paused = false;\n\n for (const id in this._tiles)\n this._removeTile(+id);\n\n if (this._source._clear) this._source._clear();\n\n this._cache.reset();\n\n if (this.map && this.usedForTerrain && this.map.painter.terrain) {\n this.map.painter.terrain.resetTileLookupCache(this.id);\n }\n }\n\n /**\n * Search through our current tiles and attempt to find the tiles that cover the given `queryGeometry`.\n *\n * @param {QueryGeometry} queryGeometry\n * @param {boolean} [visualizeQueryGeometry=false]\n * @param {boolean} use3DQuery\n * @returns\n * @private\n */\n tilesIn(queryGeometry: QueryGeometry, use3DQuery: boolean, visualizeQueryGeometry: boolean): TilespaceQueryGeometry[] {\n const tileResults = [];\n\n const transform = this.transform;\n if (!transform) return tileResults;\n\n const isGlobe = transform.projection.name === 'globe';\n const centerX = mercatorXfromLng(transform.center.lng);\n\n for (const tileID in this._tiles) {\n const tile = this._tiles[tileID];\n if (visualizeQueryGeometry) {\n tile.clearQueryDebugViz();\n }\n if (tile.holdingForFade()) {\n // Tiles held for fading are covered by tiles that are closer to ideal\n continue;\n }\n\n // An array of wrap values for the tile [-1, 0, 1]. The default value is 0 but -1 or 1 wrapping\n // might be required in globe view due to globe's surface being continuous.\n let tilesToCheck;\n\n if (isGlobe) {\n // Compare distances to copies of the tile to see if a wrapped one should be used.\n const id = tile.tileID.canonical;\n assert(tile.tileID.wrap === 0);\n\n if (id.z === 0) {\n // Render the zoom level 0 tile twice as the query polygon might span over the antimeridian\n const distances = [\n Math.abs(clamp(centerX, ...tileBoundsX(id, -1)) - centerX),\n Math.abs(clamp(centerX, ...tileBoundsX(id, 1)) - centerX)\n ];\n\n tilesToCheck = [0, distances.indexOf(Math.min(...distances)) * 2 - 1];\n } else {\n const distances = [\n Math.abs(clamp(centerX, ...tileBoundsX(id, -1)) - centerX),\n Math.abs(clamp(centerX, ...tileBoundsX(id, 0)) - centerX),\n Math.abs(clamp(centerX, ...tileBoundsX(id, 1)) - centerX)\n ];\n\n tilesToCheck = [distances.indexOf(Math.min(...distances)) - 1];\n }\n } else {\n tilesToCheck = [0];\n }\n\n for (const wrap of tilesToCheck) {\n const tileResult = queryGeometry.containsTile(tile, transform, use3DQuery, wrap);\n if (tileResult) {\n tileResults.push(tileResult);\n }\n }\n }\n return tileResults;\n }\n\n getVisibleCoordinates(symbolLayer?: boolean): Array<OverscaledTileID> {\n const coords = this.getRenderableIds(symbolLayer).map((id) => this._tiles[id].tileID);\n for (const coord of coords) {\n coord.projMatrix = this.transform.calculateProjMatrix(coord.toUnwrapped());\n }\n return coords;\n }\n\n hasTransition(): boolean {\n if (this._source.hasTransition()) {\n return true;\n }\n\n if (isRasterType(this._source.type)) {\n for (const id in this._tiles) {\n const tile = this._tiles[id];\n if (tile.fadeEndTime !== undefined && tile.fadeEndTime >= browser.now()) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * Set the value of a particular state for a feature\n * @private\n */\n setFeatureState(sourceLayer?: string, featureId: number | string, state: Object) {\n sourceLayer = sourceLayer || '_geojsonTileLayer';\n this._state.updateState(sourceLayer, featureId, state);\n }\n\n /**\n * Resets the value of a particular state key for a feature\n * @private\n */\n removeFeatureState(sourceLayer?: string, featureId?: number | string, key?: string) {\n sourceLayer = sourceLayer || '_geojsonTileLayer';\n this._state.removeFeatureState(sourceLayer, featureId, key);\n }\n\n /**\n * Get the entire state object for a feature\n * @private\n */\n getFeatureState(sourceLayer?: string, featureId: number | string): FeatureStates {\n sourceLayer = sourceLayer || '_geojsonTileLayer';\n return this._state.getState(sourceLayer, featureId);\n }\n\n /**\n * Sets the set of keys that the tile depends on. This allows tiles to\n * be reloaded when their dependencies change.\n * @private\n */\n setDependencies(tileKey: number, namespace: string, dependencies: Array<string>) {\n const tile = this._tiles[tileKey];\n if (tile) {\n tile.setDependencies(namespace, dependencies);\n }\n }\n\n /**\n * Reloads all tiles that depend on the given keys.\n * @private\n */\n reloadTilesForDependencies(namespaces: Array<string>, keys: Array<string>) {\n for (const id in this._tiles) {\n const tile = this._tiles[id];\n if (tile.hasDependency(namespaces, keys)) {\n this._reloadTile(+id, 'reloading');\n }\n }\n this._cache.filter(tile => !tile.hasDependency(namespaces, keys));\n }\n\n /**\n * Preloads all tiles that will be requested for one or a series of transformations\n *\n * @private\n * @returns {Object} Returns `this` | Promise.\n */\n _preloadTiles(transform: Transform | Array<Transform>, callback: Callback<any>) {\n const coveringTilesIDs: Map<number, OverscaledTileID> = new Map();\n const transforms = Array.isArray(transform) ? transform : [transform];\n\n const terrain = this.map.painter.terrain;\n const tileSize = this.usedForTerrain && terrain ? terrain.getScaledDemTileSize() : this._source.tileSize;\n\n for (const tr of transforms) {\n const tileIDs = tr.coveringTiles({\n tileSize,\n minzoom: this._source.minzoom,\n maxzoom: this._source.maxzoom,\n roundZoom: this._source.roundZoom && !this.usedForTerrain,\n reparseOverscaled: this._source.reparseOverscaled,\n isTerrainDEM: this.usedForTerrain\n });\n\n for (const tileID of tileIDs) {\n coveringTilesIDs.set(tileID.key, tileID);\n }\n\n if (this.usedForTerrain) {\n tr.updateElevation(false);\n }\n }\n\n const tileIDs = Array.from(coveringTilesIDs.values());\n\n asyncAll(tileIDs, (tileID, done) => {\n const tile = new Tile(tileID, this._source.tileSize * tileID.overscaleFactor(), this.transform.tileZoom, this.map.painter, this._isRaster);\n this._loadTile(tile, (err) => {\n if (this._source.type === 'raster-dem' && tile.dem) this._backfillDEM(tile);\n done(err, tile);\n });\n }, callback);\n }\n}\n\nSourceCache.maxOverzooming = 10;\nSourceCache.maxUnderzooming = 3;\n\nfunction compareTileId(a: OverscaledTileID, b: OverscaledTileID): number {\n // Different copies of the world are sorted based on their distance to the center.\n // Wrap values are converted to unsigned distances by reserving odd number for copies\n // with negative wrap and even numbers for copies with positive wrap.\n const aWrap = Math.abs(a.wrap * 2) - +(a.wrap < 0);\n const bWrap = Math.abs(b.wrap * 2) - +(b.wrap < 0);\n return a.overscaledZ - b.overscaledZ || bWrap - aWrap || b.canonical.y - a.canonical.y || b.canonical.x - a.canonical.x;\n}\n\nfunction isRasterType(type): boolean {\n return type === 'raster' || type === 'image' || type === 'video';\n}\n\nfunction tileBoundsX(id: CanonicalTileID, wrap: number): [number, number] {\n const tiles = 1 << id.z;\n return [id.x / tiles + wrap, (id.x + 1) / tiles + wrap];\n}\n\nexport default SourceCache;\n","// @flow\n\nimport MercatorCoordinate, {mercatorZfromAltitude} from '../geo/mercator_coordinate.js';\nimport DEMData from '../data/dem_data.js';\nimport SourceCache from '../source/source_cache.js';\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\nimport EXTENT from '../data/extent.js';\nimport {vec3} from 'gl-matrix';\nimport Point from '@mapbox/point-geometry';\nimport {OverscaledTileID} from '../source/tile_id.js';\n\nimport type Projection from '../geo/projection/projection.js';\nimport type Tile from '../source/tile.js';\nimport type {Vec3} from 'gl-matrix';\n\n/**\n * Options common to {@link Map#queryTerrainElevation} and {@link Map#unproject3d}, used to control how elevation\n * data is returned.\n *\n * @typedef {Object} ElevationQueryOptions\n * @property {boolean} exaggerated When set to `true` returns the value of the elevation with the terrains `exaggeration` on the style already applied,\n * when`false` it returns the raw value of the underlying data without styling applied.\n */\nexport type ElevationQueryOptions = {\n exaggerated: boolean\n};\n\n/**\n * Provides access to elevation data from raster-dem source cache.\n */\nexport class Elevation {\n\n /**\n * Helper that checks whether DEM data is available at a given mercator coordinate.\n * @param {MercatorCoordinate} point Mercator coordinate of the point to check against.\n * @returns {boolean} `true` indicating whether the data is available at `point`, and `false` otherwise.\n */\n isDataAvailableAtPoint(point: MercatorCoordinate): boolean {\n const sourceCache = this._source();\n if (!sourceCache || point.y < 0.0 || point.y > 1.0) {\n return false;\n }\n\n const cache: SourceCache = sourceCache;\n const z = cache.getSource().maxzoom;\n const tiles = 1 << z;\n const wrap = Math.floor(point.x);\n const px = point.x - wrap;\n const x = Math.floor(px * tiles);\n const y = Math.floor(point.y * tiles);\n const demTile = this.findDEMTileFor(new OverscaledTileID(z, wrap, z, x, y));\n\n return !!(demTile && demTile.dem);\n }\n\n /**\n * Helper around `getAtPoint` that guarantees that a numeric value is returned.\n * @param {MercatorCoordinate} point Mercator coordinate of the point.\n * @param {number} defaultIfNotLoaded Value that is returned if the dem tile of the provided point is not loaded.\n * @returns {number} Altitude in meters.\n */\n getAtPointOrZero(point: MercatorCoordinate, defaultIfNotLoaded: number = 0): number {\n return this.getAtPoint(point, defaultIfNotLoaded) || 0;\n }\n\n /**\n * Altitude above sea level in meters at specified point.\n * @param {MercatorCoordinate} point Mercator coordinate of the point.\n * @param {number} defaultIfNotLoaded Value that is returned if the DEM tile of the provided point is not loaded.\n * @param {boolean} exaggerated `true` if styling exaggeration should be applied to the resulting elevation.\n * @returns {number} Altitude in meters.\n * If there is no loaded tile that carries information for the requested\n * point elevation, returns `defaultIfNotLoaded`.\n * Doesn't invoke network request to fetch the data.\n */\n getAtPoint(point: MercatorCoordinate, defaultIfNotLoaded: ?number, exaggerated: boolean = true): number | null {\n // Force a cast to null for both null and undefined\n if (defaultIfNotLoaded == null) defaultIfNotLoaded = null;\n\n const src = this._source();\n if (!src) return defaultIfNotLoaded;\n if (point.y < 0.0 || point.y > 1.0) {\n return defaultIfNotLoaded;\n }\n const cache: SourceCache = src;\n const z = cache.getSource().maxzoom;\n const tiles = 1 << z;\n const wrap = Math.floor(point.x);\n const px = point.x - wrap;\n const tileID = new OverscaledTileID(z, wrap, z, Math.floor(px * tiles), Math.floor(point.y * tiles));\n const demTile = this.findDEMTileFor(tileID);\n if (!(demTile && demTile.dem)) { return defaultIfNotLoaded; }\n const dem: DEMData = demTile.dem;\n const tilesAtTileZoom = 1 << demTile.tileID.canonical.z;\n const x = (px * tilesAtTileZoom - demTile.tileID.canonical.x) * dem.dim;\n const y = (point.y * tilesAtTileZoom - demTile.tileID.canonical.y) * dem.dim;\n const i = Math.floor(x);\n const j = Math.floor(y);\n const exaggeration = exaggerated ? this.exaggeration() : 1;\n\n return exaggeration * interpolate(\n interpolate(dem.get(i, j), dem.get(i, j + 1), y - j),\n interpolate(dem.get(i + 1, j), dem.get(i + 1, j + 1), y - j),\n x - i);\n }\n\n /*\n * x and y are offset within tile, in 0 .. EXTENT coordinate space.\n */\n getAtTileOffset(tileID: OverscaledTileID, x: number, y: number): number {\n const tilesAtTileZoom = 1 << tileID.canonical.z;\n return this.getAtPointOrZero(new MercatorCoordinate(\n tileID.wrap + (tileID.canonical.x + x / EXTENT) / tilesAtTileZoom,\n (tileID.canonical.y + y / EXTENT) / tilesAtTileZoom));\n }\n\n getAtTileOffsetFunc(tileID: OverscaledTileID, lat: number, worldSize: number, projection: Projection): Function {\n return (p => {\n const elevation = this.getAtTileOffset(tileID, p.x, p.y);\n const upVector = projection.upVector(tileID.canonical, p.x, p.y);\n const upVectorScale = projection.upVectorScale(tileID.canonical, lat, worldSize).metersToTile;\n // $FlowFixMe can't yet resolve tuple vs array incompatibilities\n vec3.scale(upVector, upVector, elevation * upVectorScale);\n return upVector;\n });\n }\n\n /*\n * Batch fetch for multiple tile points: points holds input and return value:\n * vec3's items on index 0 and 1 define x and y offset within tile, in [0 .. EXTENT]\n * range, respectively. vec3 item at index 2 is output value, in meters.\n * If a DEM tile that covers tileID is loaded, true is returned, otherwise false.\n * Nearest filter sampling on dem data is done (no interpolation).\n */\n getForTilePoints(tileID: OverscaledTileID, points: Array<Vec3>, interpolated: ?boolean, useDemTile: ?Tile): boolean {\n const helper = DEMSampler.create(this, tileID, useDemTile);\n if (!helper) { return false; }\n\n points.forEach(p => {\n p[2] = this.exaggeration() * helper.getElevationAt(p[0], p[1], interpolated);\n });\n return true;\n }\n\n /**\n * Get elevation minimum and maximum for tile identified by `tileID`.\n * @param {OverscaledTileID} tileID The `tileId` is a sub tile (or covers the same space) of the DEM tile we read the information from.\n * @returns {?{min: number, max: number}} The min and max elevation.\n */\n getMinMaxForTile(tileID: OverscaledTileID): ?{min: number, max: number} {\n const demTile = this.findDEMTileFor(tileID);\n if (!(demTile && demTile.dem)) { return null; }\n const dem: DEMData = demTile.dem;\n const tree = dem.tree;\n const demTileID = demTile.tileID;\n const scale = 1 << tileID.canonical.z - demTileID.canonical.z;\n let xOffset = tileID.canonical.x / scale - demTileID.canonical.x;\n let yOffset = tileID.canonical.y / scale - demTileID.canonical.y;\n let index = 0; // Start from DEM tree root.\n for (let i = 0; i < tileID.canonical.z - demTileID.canonical.z; i++) {\n if (tree.leaves[index]) break;\n xOffset *= 2;\n yOffset *= 2;\n const childOffset = 2 * Math.floor(yOffset) + Math.floor(xOffset);\n index = tree.childOffsets[index] + childOffset;\n xOffset = xOffset % 1;\n yOffset = yOffset % 1;\n }\n return {min: this.exaggeration() * tree.minimums[index], max: this.exaggeration() * tree.maximums[index]};\n }\n\n /**\n * Get elevation minimum below MSL for the visible tiles. This function accounts\n * for terrain exaggeration and is conservative based on the maximum DEM error,\n * do not expect accurate values from this function.\n * If no negative elevation is visible, this function returns 0.\n * @returns {number} The min elevation below sea level of all visible tiles.\n */\n getMinElevationBelowMSL(): number {\n throw new Error('Pure virtual method called.');\n }\n\n /**\n * Performs raycast against visible DEM tiles on the screen and returns the distance travelled along the ray.\n * `x` & `y` components of the position are expected to be in normalized mercator coordinates [0, 1] and z in meters.\n * @param {vec3} position The ray origin.\n * @param {vec3} dir The ray direction.\n * @param {number} exaggeration The terrain exaggeration.\n */\n raycast(position: Vec3, dir: Vec3, exaggeration: number): ?number {\n throw new Error('Pure virtual method called.');\n }\n\n /**\n * Given a point on screen, returns 3D MercatorCoordinate on terrain.\n * Helper function that wraps `raycast`.\n *\n * @param {Point} screenPoint Screen point in pixels in top-left origin coordinate system.\n * @returns {vec3} If there is intersection with terrain, returns 3D MercatorCoordinate's of\n * intersection, as vec3(x, y, z), otherwise null.\n */ /* eslint no-unused-vars: [\"error\", { \"args\": \"none\" }] */\n pointCoordinate(screenPoint: Point): ?Vec3 {\n throw new Error('Pure virtual method called.');\n }\n\n /*\n * Implementation provides SourceCache of raster-dem source type cache, in\n * order to access already loaded cached tiles.\n */\n _source(): ?SourceCache {\n throw new Error('Pure virtual method called.');\n }\n\n /*\n * A multiplier defined by style as terrain exaggeration. Elevation provided\n * by getXXXX methods is multiplied by this.\n */\n exaggeration(): number {\n throw new Error('Pure virtual method called.');\n }\n\n /**\n * Lookup DEM tile that corresponds to (covers) tileID.\n * @private\n */\n findDEMTileFor(_: OverscaledTileID): ?Tile {\n throw new Error('Pure virtual method called.');\n }\n\n /**\n * Get list of DEM tiles used to render current frame.\n * @private\n */\n get visibleDemTiles(): Array<Tile> {\n throw new Error('Getter must be implemented in subclass.');\n }\n}\n\n/**\n * Helper class computes and caches data required to lookup elevation offsets at the tile level.\n */\nexport class DEMSampler {\n _demTile: Tile;\n _dem: DEMData;\n _scale: number;\n _offset: [number, number];\n\n constructor(demTile: Tile, scale: number, offset: [number, number]) {\n this._demTile = demTile;\n // demTile.dem will always exist because the factory method `create` does the check\n // Make flow happy with a cast through any\n this._dem = (((this._demTile.dem): any): DEMData);\n this._scale = scale;\n this._offset = offset;\n }\n\n static create(elevation: Elevation, tileID: OverscaledTileID, useDemTile: ?Tile): ?DEMSampler {\n const demTile = useDemTile || elevation.findDEMTileFor(tileID);\n if (!(demTile && demTile.dem)) { return; }\n const dem: DEMData = demTile.dem;\n const demTileID = demTile.tileID;\n const scale = 1 << tileID.canonical.z - demTileID.canonical.z;\n const xOffset = (tileID.canonical.x / scale - demTileID.canonical.x) * dem.dim;\n const yOffset = (tileID.canonical.y / scale - demTileID.canonical.y) * dem.dim;\n const k = demTile.tileSize / EXTENT / scale;\n\n return new DEMSampler(demTile, k, [xOffset, yOffset]);\n }\n\n tileCoordToPixel(x: number, y: number): Point {\n const px = x * this._scale + this._offset[0];\n const py = y * this._scale + this._offset[1];\n const i = Math.floor(px);\n const j = Math.floor(py);\n return new Point(i, j);\n }\n\n getElevationAt(x: number, y: number, interpolated: ?boolean, clampToEdge: ?boolean): number {\n const px = x * this._scale + this._offset[0];\n const py = y * this._scale + this._offset[1];\n const i = Math.floor(px);\n const j = Math.floor(py);\n const dem = this._dem;\n\n clampToEdge = !!clampToEdge;\n\n return interpolated ? interpolate(\n interpolate(dem.get(i, j, clampToEdge), dem.get(i, j + 1, clampToEdge), py - j),\n interpolate(dem.get(i + 1, j, clampToEdge), dem.get(i + 1, j + 1, clampToEdge), py - j),\n px - i) :\n dem.get(i, j, clampToEdge);\n }\n\n getElevationAtPixel(x: number, y: number, clampToEdge: ?boolean): number {\n return this._dem.get(x, y, !!clampToEdge);\n }\n\n getMeterToDEM(lat: number): number {\n return (1 << this._demTile.tileID.canonical.z) * mercatorZfromAltitude(1, lat) * this._dem.stride;\n }\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nimport loadGeometry from './load_geometry.js';\nimport toEvaluationFeature from './evaluation_feature.js';\nimport EXTENT from './extent.js';\nimport featureFilter from '../style-spec/feature_filter/index.js';\nimport Grid from 'grid-index';\nimport DictionaryCoder from '../util/dictionary_coder.js';\nimport vt from '@mapbox/vector-tile';\nimport Protobuf from 'pbf';\nimport GeoJSONFeature from '../util/vectortile_to_geojson.js';\nimport {arraysIntersect, mapObject, extend} from '../util/util.js';\nimport {OverscaledTileID} from '../source/tile_id.js';\nimport {register} from '../util/web_worker_transfer.js';\nimport EvaluationParameters from '../style/evaluation_parameters.js';\nimport SourceFeatureState from '../source/source_state.js';\nimport {polygonIntersectsBox} from '../util/intersection_tests.js';\nimport {PossiblyEvaluated} from '../style/properties.js';\nimport {FeatureIndexArray} from './array_types.js';\nimport {DEMSampler} from '../terrain/elevation.js';\n\nimport type StyleLayer from '../style/style_layer.js';\nimport type {QueryFeature} from '../util/vectortile_to_geojson.js';\nimport type {FeatureFilter} from '../style-spec/feature_filter/index.js';\nimport type Transform from '../geo/transform.js';\nimport type {FilterSpecification, PromoteIdSpecification} from '../style-spec/types.js';\nimport type {TilespaceQueryGeometry} from '../style/query_geometry.js';\nimport type {FeatureIndex as FeatureIndexStruct} from './array_types.js';\nimport type {TileTransform} from '../geo/projection/tile_transform.js';\n\ntype QueryParameters = {\n pixelPosMatrix: Float32Array,\n transform: Transform,\n tileResult: TilespaceQueryGeometry,\n tileTransform: TileTransform,\n params: {\n filter: FilterSpecification,\n layers: Array<string>,\n availableImages: Array<string>\n }\n}\n\nexport type QueryResult = {[_: string]: Array<{ featureIndex: number, feature: QueryFeature }>};\n\ntype FeatureIndices = {\n bucketIndex: number,\n sourceLayerIndex: number,\n featureIndex: number,\n layoutVertexArrayOffset: number\n} | FeatureIndexStruct;\n\nclass FeatureIndex {\n tileID: OverscaledTileID;\n x: number;\n y: number;\n z: number;\n grid: Grid;\n featureIndexArray: FeatureIndexArray;\n promoteId: ?PromoteIdSpecification;\n\n rawTileData: ArrayBuffer;\n bucketLayerIDs: Array<Array<string>>;\n\n vtLayers: {[_: string]: VectorTileLayer};\n vtFeatures: {[_: string]: VectorTileFeature[]};\n sourceLayerCoder: DictionaryCoder;\n\n constructor(tileID: OverscaledTileID, promoteId?: ?PromoteIdSpecification) {\n this.tileID = tileID;\n this.x = tileID.canonical.x;\n this.y = tileID.canonical.y;\n this.z = tileID.canonical.z;\n this.grid = new Grid(EXTENT, 16, 0);\n this.featureIndexArray = new FeatureIndexArray();\n this.promoteId = promoteId;\n }\n\n insert(feature: VectorTileFeature, geometry: Array<Array<Point>>, featureIndex: number, sourceLayerIndex: number, bucketIndex: number, layoutVertexArrayOffset: number = 0) {\n const key = this.featureIndexArray.length;\n this.featureIndexArray.emplaceBack(featureIndex, sourceLayerIndex, bucketIndex, layoutVertexArrayOffset);\n\n const grid = this.grid;\n\n for (let r = 0; r < geometry.length; r++) {\n const ring = geometry[r];\n\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (let i = 0; i < ring.length; i++) {\n const p = ring[i];\n bbox[0] = Math.min(bbox[0], p.x);\n bbox[1] = Math.min(bbox[1], p.y);\n bbox[2] = Math.max(bbox[2], p.x);\n bbox[3] = Math.max(bbox[3], p.y);\n }\n\n if (bbox[0] < EXTENT &&\n bbox[1] < EXTENT &&\n bbox[2] >= 0 &&\n bbox[3] >= 0) {\n grid.insert(key, bbox[0], bbox[1], bbox[2], bbox[3]);\n }\n }\n }\n\n loadVTLayers(): {[_: string]: VectorTileLayer} {\n if (!this.vtLayers) {\n this.vtLayers = new vt.VectorTile(new Protobuf(this.rawTileData)).layers;\n this.sourceLayerCoder = new DictionaryCoder(this.vtLayers ? Object.keys(this.vtLayers).sort() : ['_geojsonTileLayer']);\n this.vtFeatures = {};\n for (const layer in this.vtLayers) {\n this.vtFeatures[layer] = [];\n }\n }\n return this.vtLayers;\n }\n\n // Finds non-symbol features in this tile at a particular position.\n query(args: QueryParameters, styleLayers: {[_: string]: StyleLayer}, serializedLayers: {[_: string]: Object}, sourceFeatureState: SourceFeatureState): QueryResult {\n this.loadVTLayers();\n const params = args.params || {},\n filter = featureFilter(params.filter);\n const tilespaceGeometry = args.tileResult;\n const transform = args.transform;\n\n const bounds = tilespaceGeometry.bufferedTilespaceBounds;\n const queryPredicate = (bx1, by1, bx2, by2) => {\n return polygonIntersectsBox(tilespaceGeometry.bufferedTilespaceGeometry, bx1, by1, bx2, by2);\n };\n const matching = this.grid.query(bounds.min.x, bounds.min.y, bounds.max.x, bounds.max.y, queryPredicate);\n matching.sort(topDownFeatureComparator);\n\n let elevationHelper = null;\n if (transform.elevation && matching.length > 0) {\n elevationHelper = DEMSampler.create(transform.elevation, this.tileID);\n }\n\n const result = {};\n let previousIndex;\n for (let k = 0; k < matching.length; k++) {\n const index = matching[k];\n\n // don't check the same feature more than once\n if (index === previousIndex) continue;\n previousIndex = index;\n\n const match = this.featureIndexArray.get(index);\n let featureGeometry = null;\n this.loadMatchingFeature(\n result,\n match,\n filter,\n params.layers,\n params.availableImages,\n styleLayers,\n serializedLayers,\n sourceFeatureState,\n (feature: VectorTileFeature, styleLayer: StyleLayer, featureState: Object, layoutVertexArrayOffset: number = 0) => {\n if (!featureGeometry) {\n featureGeometry = loadGeometry(feature, this.tileID.canonical, args.tileTransform);\n }\n\n return styleLayer.queryIntersectsFeature(tilespaceGeometry, feature, featureState, featureGeometry, this.z, args.transform, args.pixelPosMatrix, elevationHelper, layoutVertexArrayOffset);\n }\n );\n }\n\n return result;\n }\n\n loadMatchingFeature(\n result: QueryResult,\n featureIndexData: FeatureIndices,\n filter: FeatureFilter,\n filterLayerIDs: Array<string>,\n availableImages: Array<string>,\n styleLayers: {[_: string]: StyleLayer},\n serializedLayers: {[_: string]: Object},\n sourceFeatureState?: SourceFeatureState,\n intersectionTest?: (feature: VectorTileFeature, styleLayer: StyleLayer, featureState: Object, layoutVertexArrayOffset: number) => boolean | number) {\n\n const {featureIndex, bucketIndex, sourceLayerIndex, layoutVertexArrayOffset} = featureIndexData;\n const layerIDs = this.bucketLayerIDs[bucketIndex];\n if (filterLayerIDs && !arraysIntersect(filterLayerIDs, layerIDs))\n return;\n\n const sourceLayerName = this.sourceLayerCoder.decode(sourceLayerIndex);\n const sourceLayer = this.vtLayers[sourceLayerName];\n const feature = sourceLayer.feature(featureIndex);\n\n if (filter.needGeometry) {\n const evaluationFeature = toEvaluationFeature(feature, true);\n if (!filter.filter(new EvaluationParameters(this.tileID.overscaledZ), evaluationFeature, this.tileID.canonical)) {\n return;\n }\n } else if (!filter.filter(new EvaluationParameters(this.tileID.overscaledZ), feature)) {\n return;\n }\n\n const id = this.getId(feature, sourceLayerName);\n\n for (let l = 0; l < layerIDs.length; l++) {\n const layerID = layerIDs[l];\n\n if (filterLayerIDs && filterLayerIDs.indexOf(layerID) < 0) {\n continue;\n }\n\n const styleLayer = styleLayers[layerID];\n\n if (!styleLayer) continue;\n\n let featureState = {};\n if (id !== undefined && sourceFeatureState) {\n // `feature-state` expression evaluation requires feature state to be available\n featureState = sourceFeatureState.getState(styleLayer.sourceLayer || '_geojsonTileLayer', id);\n }\n\n const serializedLayer = extend({}, serializedLayers[layerID]);\n\n serializedLayer.paint = evaluateProperties(serializedLayer.paint, styleLayer.paint, feature, featureState, availableImages);\n serializedLayer.layout = evaluateProperties(serializedLayer.layout, styleLayer.layout, feature, featureState, availableImages);\n\n const intersectionZ = !intersectionTest || intersectionTest(feature, styleLayer, featureState, layoutVertexArrayOffset);\n if (!intersectionZ) {\n // Only applied for non-symbol features\n continue;\n }\n\n const geojsonFeature = new GeoJSONFeature(feature, this.z, this.x, this.y, id);\n geojsonFeature.layer = serializedLayer;\n let layerResult = result[layerID];\n if (layerResult === undefined) {\n layerResult = result[layerID] = [];\n }\n\n layerResult.push({featureIndex, feature: geojsonFeature, intersectionZ});\n }\n }\n\n // Given a set of symbol indexes that have already been looked up,\n // return a matching set of GeoJSONFeatures\n lookupSymbolFeatures(symbolFeatureIndexes: Array<number>,\n serializedLayers: {[string]: StyleLayer},\n bucketIndex: number,\n sourceLayerIndex: number,\n filterSpec: FilterSpecification,\n filterLayerIDs: Array<string>,\n availableImages: Array<string>,\n styleLayers: {[_: string]: StyleLayer}): QueryResult {\n const result = {};\n this.loadVTLayers();\n\n const filter = featureFilter(filterSpec);\n\n for (const symbolFeatureIndex of symbolFeatureIndexes) {\n this.loadMatchingFeature(\n result, {\n bucketIndex,\n sourceLayerIndex,\n featureIndex: symbolFeatureIndex,\n layoutVertexArrayOffset: 0\n },\n filter,\n filterLayerIDs,\n availableImages,\n styleLayers,\n serializedLayers\n );\n\n }\n return result;\n }\n\n loadFeature(featureIndexData: FeatureIndices): VectorTileFeature {\n const {featureIndex, sourceLayerIndex} = featureIndexData;\n\n this.loadVTLayers();\n const sourceLayerName = this.sourceLayerCoder.decode(sourceLayerIndex);\n\n const featureCache = this.vtFeatures[sourceLayerName];\n if (featureCache[featureIndex]) {\n return featureCache[featureIndex];\n }\n const sourceLayer = this.vtLayers[sourceLayerName];\n const feature = sourceLayer.feature(featureIndex);\n featureCache[featureIndex] = feature;\n\n return feature;\n }\n\n hasLayer(id: string): boolean {\n for (const layerIDs of this.bucketLayerIDs) {\n for (const layerID of layerIDs) {\n if (id === layerID) return true;\n }\n }\n\n return false;\n }\n\n getId(feature: VectorTileFeature, sourceLayerId: string): string | number | void {\n let id = feature.id;\n if (this.promoteId) {\n const propName = typeof this.promoteId === 'string' ? this.promoteId : this.promoteId[sourceLayerId];\n id = feature.properties[propName];\n if (typeof id === 'boolean') id = Number(id);\n }\n return id;\n }\n}\n\nregister(FeatureIndex, 'FeatureIndex', {omit: ['rawTileData', 'sourceLayerCoder']});\n\nexport default FeatureIndex;\n\nfunction evaluateProperties(serializedProperties, styleLayerProperties, feature, featureState, availableImages) {\n return mapObject(serializedProperties, (property, key) => {\n const prop = styleLayerProperties instanceof PossiblyEvaluated ? styleLayerProperties.get(key) : null;\n return prop && prop.evaluate ? prop.evaluate(feature, featureState, availableImages) : prop;\n });\n}\n\nfunction topDownFeatureComparator(a, b) {\n return b - a;\n}\n","// @flow\n\nimport {SDF_SCALE} from '../render/glyph_manager.js';\nimport {AlphaImage} from '../util/image.js';\nimport {register} from '../util/web_worker_transfer.js';\nimport potpack from 'potpack';\n\nimport type {StyleGlyph} from '../style/style_glyph.js';\n\nconst glyphPadding = 1;\n/*\n The glyph padding is just to prevent sampling errors at the boundaries between\n glyphs in the atlas texture, and for that purpose there's no need to make it\n bigger with high-res SDFs. However, layout is done based on the glyph size\n including this padding, so scaling this padding is the easiest way to keep\n layout exactly the same as the SDF_SCALE changes.\n*/\nconst localGlyphPadding = glyphPadding * SDF_SCALE;\n\nexport type GlyphRect = {\n x: number,\n y: number,\n w: number,\n h: number\n};\n// {glyphID: glyphRect}\nexport type GlyphPositionMap = { [_: number]: GlyphRect };\n\n// {fontStack: glyphPoistionMap}\nexport type GlyphPositions = { [_: string]: GlyphPositionMap };\n\nexport default class GlyphAtlas {\n image: AlphaImage;\n positions: GlyphPositions;\n constructor(stacks: {[_: string]: {glyphs: {[_: number]: ?StyleGlyph }, ascender?: number, descender?: number }}) {\n const positions = {};\n const bins = [];\n\n for (const stack in stacks) {\n const glyphData = stacks[stack];\n const glyphPositionMap = positions[stack] = {};\n\n for (const id in glyphData.glyphs) {\n const src = glyphData.glyphs[+id];\n if (!src || src.bitmap.width === 0 || src.bitmap.height === 0) continue;\n\n const padding = src.metrics.localGlyph ? localGlyphPadding : glyphPadding;\n const bin = {\n x: 0,\n y: 0,\n w: src.bitmap.width + 2 * padding,\n h: src.bitmap.height + 2 * padding\n };\n bins.push(bin);\n glyphPositionMap[id] = bin;\n }\n }\n\n const {w, h} = potpack(bins);\n const image = new AlphaImage({width: w || 1, height: h || 1});\n\n for (const stack in stacks) {\n const glyphData = stacks[stack];\n\n for (const id in glyphData.glyphs) {\n const src = glyphData.glyphs[+id];\n if (!src || src.bitmap.width === 0 || src.bitmap.height === 0) continue;\n const bin = positions[stack][id];\n const padding = src.metrics.localGlyph ? localGlyphPadding : glyphPadding;\n AlphaImage.copy(src.bitmap, image, {x: 0, y: 0}, {x: bin.x + padding, y: bin.y + padding}, src.bitmap);\n }\n }\n\n this.image = image;\n this.positions = positions;\n }\n}\n\nregister(GlyphAtlas, 'GlyphAtlas');\n","// @flow\n\nimport FeatureIndex from '../data/feature_index.js';\n\nimport {performSymbolLayout} from '../symbol/symbol_layout.js';\nimport {CollisionBoxArray} from '../data/array_types.js';\nimport DictionaryCoder from '../util/dictionary_coder.js';\nimport SymbolBucket from '../data/bucket/symbol_bucket.js';\nimport LineBucket from '../data/bucket/line_bucket.js';\nimport FillBucket from '../data/bucket/fill_bucket.js';\nimport FillExtrusionBucket from '../data/bucket/fill_extrusion_bucket.js';\nimport {warnOnce, mapObject, values} from '../util/util.js';\nimport assert from 'assert';\nimport LineAtlas from '../render/line_atlas.js';\nimport ImageAtlas from '../render/image_atlas.js';\nimport GlyphAtlas from '../render/glyph_atlas.js';\nimport EvaluationParameters from '../style/evaluation_parameters.js';\nimport {CanonicalTileID, OverscaledTileID} from './tile_id.js';\nimport {PerformanceUtils} from '../util/performance.js';\nimport tileTransform from '../geo/projection/tile_transform.js';\nimport type Projection from '../geo/projection/projection.js';\nimport type {Bucket} from '../data/bucket.js';\nimport type Actor from '../util/actor.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type StyleLayerIndex from '../style/style_layer_index.js';\nimport type {StyleImage} from '../style/style_image.js';\nimport type {StyleGlyph} from '../style/style_glyph.js';\nimport type {SpritePositions} from '../util/image.js';\nimport type {\n WorkerTileParameters,\n WorkerTileCallback,\n} from '../source/worker_source.js';\nimport type {PromoteIdSpecification} from '../style-spec/types.js';\nimport type {TileTransform} from '../geo/projection/tile_transform.js';\n\nclass WorkerTile {\n tileID: OverscaledTileID;\n uid: number;\n zoom: number;\n tileZoom: number;\n canonical: CanonicalTileID;\n pixelRatio: number;\n tileSize: number;\n source: string;\n promoteId: ?PromoteIdSpecification;\n overscaling: number;\n showCollisionBoxes: boolean;\n collectResourceTiming: boolean;\n returnDependencies: boolean;\n enableTerrain: boolean;\n isSymbolTile: ?boolean;\n projection: Projection;\n tileTransform: TileTransform;\n\n status: 'parsing' | 'done';\n data: VectorTile;\n collisionBoxArray: CollisionBoxArray;\n\n abort: ?() => void;\n reloadCallback: ?WorkerTileCallback;\n vectorTile: VectorTile;\n\n constructor(params: WorkerTileParameters) {\n this.tileID = new OverscaledTileID(params.tileID.overscaledZ, params.tileID.wrap, params.tileID.canonical.z, params.tileID.canonical.x, params.tileID.canonical.y);\n this.tileZoom = params.tileZoom;\n this.uid = params.uid;\n this.zoom = params.zoom;\n this.canonical = params.tileID.canonical;\n this.pixelRatio = params.pixelRatio;\n this.tileSize = params.tileSize;\n this.source = params.source;\n this.overscaling = this.tileID.overscaleFactor();\n this.showCollisionBoxes = params.showCollisionBoxes;\n this.collectResourceTiming = !!params.collectResourceTiming;\n this.returnDependencies = !!params.returnDependencies;\n this.promoteId = params.promoteId;\n this.enableTerrain = !!params.enableTerrain;\n this.isSymbolTile = params.isSymbolTile;\n this.tileTransform = tileTransform(params.tileID.canonical, params.projection);\n this.projection = params.projection;\n }\n\n parse(data: VectorTile, layerIndex: StyleLayerIndex, availableImages: Array<string>, actor: Actor, callback: WorkerTileCallback) {\n const m = PerformanceUtils.beginMeasure('parseTile1');\n this.status = 'parsing';\n this.data = data;\n\n this.collisionBoxArray = new CollisionBoxArray();\n const sourceLayerCoder = new DictionaryCoder(Object.keys(data.layers).sort());\n\n const featureIndex = new FeatureIndex(this.tileID, this.promoteId);\n featureIndex.bucketLayerIDs = [];\n\n const buckets: {[_: string]: Bucket} = {};\n\n // we initially reserve space for a 256x256 atlas, but trim it after processing all line features\n const lineAtlas = new LineAtlas(256, 256);\n\n const options = {\n featureIndex,\n iconDependencies: {},\n patternDependencies: {},\n glyphDependencies: {},\n lineAtlas,\n availableImages\n };\n\n const layerFamilies = layerIndex.familiesBySource[this.source];\n for (const sourceLayerId in layerFamilies) {\n const sourceLayer = data.layers[sourceLayerId];\n if (!sourceLayer) {\n continue;\n }\n\n let anySymbolLayers = false;\n let anyOtherLayers = false;\n for (const family of layerFamilies[sourceLayerId]) {\n if (family[0].type === 'symbol') {\n anySymbolLayers = true;\n } else {\n anyOtherLayers = true;\n }\n }\n\n if (this.isSymbolTile === true && !anySymbolLayers) {\n continue;\n } else if (this.isSymbolTile === false && !anyOtherLayers) {\n continue;\n }\n\n if (sourceLayer.version === 1) {\n warnOnce(`Vector tile source \"${this.source}\" layer \"${sourceLayerId}\" ` +\n `does not use vector tile spec v2 and therefore may have some rendering errors.`);\n }\n\n const sourceLayerIndex = sourceLayerCoder.encode(sourceLayerId);\n const features = [];\n for (let index = 0; index < sourceLayer.length; index++) {\n const feature = sourceLayer.feature(index);\n const id = featureIndex.getId(feature, sourceLayerId);\n features.push({feature, id, index, sourceLayerIndex});\n }\n\n for (const family of layerFamilies[sourceLayerId]) {\n const layer = family[0];\n if (this.isSymbolTile !== undefined && (layer.type === 'symbol') !== this.isSymbolTile) continue;\n\n assert(layer.source === this.source);\n if (layer.minzoom && this.zoom < Math.floor(layer.minzoom)) continue;\n if (layer.maxzoom && this.zoom >= layer.maxzoom) continue;\n if (layer.visibility === 'none') continue;\n\n recalculateLayers(family, this.zoom, availableImages);\n\n const bucket = buckets[layer.id] = layer.createBucket({\n index: featureIndex.bucketLayerIDs.length,\n layers: family,\n zoom: this.zoom,\n canonical: this.canonical,\n pixelRatio: this.pixelRatio,\n overscaling: this.overscaling,\n collisionBoxArray: this.collisionBoxArray,\n sourceLayerIndex,\n sourceID: this.source,\n enableTerrain: this.enableTerrain,\n projection: this.projection.spec,\n availableImages\n });\n\n assert(this.tileTransform.projection.name === this.projection.name);\n bucket.populate(features, options, this.tileID.canonical, this.tileTransform);\n featureIndex.bucketLayerIDs.push(family.map((l) => l.id));\n }\n }\n\n lineAtlas.trim();\n\n let error: ?Error;\n let glyphMap: ?{[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}};\n let iconMap: ?{[_: string]: StyleImage};\n let patternMap: ?{[_: string]: StyleImage};\n const taskMetadata = {type: 'maybePrepare', isSymbolTile: this.isSymbolTile, zoom: this.zoom};\n\n const stacks = mapObject(options.glyphDependencies, (glyphs) => Object.keys(glyphs).map(Number));\n if (Object.keys(stacks).length) {\n actor.send('getGlyphs', {uid: this.uid, stacks}, (err, result) => {\n if (!error) {\n error = err;\n glyphMap = result;\n maybePrepare.call(this);\n }\n }, undefined, false, taskMetadata);\n } else {\n glyphMap = {};\n }\n\n const icons = Object.keys(options.iconDependencies);\n if (icons.length) {\n actor.send('getImages', {icons, source: this.source, tileID: this.tileID, type: 'icons'}, (err, result) => {\n if (!error) {\n error = err;\n iconMap = result;\n maybePrepare.call(this);\n }\n }, undefined, false, taskMetadata);\n } else {\n iconMap = {};\n }\n\n const patterns = Object.keys(options.patternDependencies);\n if (patterns.length) {\n actor.send('getImages', {icons: patterns, source: this.source, tileID: this.tileID, type: 'patterns'}, (err, result) => {\n if (!error) {\n error = err;\n patternMap = result;\n maybePrepare.call(this);\n }\n }, undefined, false, taskMetadata);\n } else {\n patternMap = {};\n }\n\n PerformanceUtils.endMeasure(m);\n\n maybePrepare.call(this);\n\n function maybePrepare() {\n if (error) {\n return callback(error);\n } else if (glyphMap && iconMap && patternMap) {\n const m = PerformanceUtils.beginMeasure('parseTile2');\n const glyphAtlas = new GlyphAtlas(glyphMap);\n const imageAtlas = new ImageAtlas(iconMap, patternMap);\n\n for (const key in buckets) {\n const bucket = buckets[key];\n if (bucket instanceof SymbolBucket) {\n recalculateLayers(bucket.layers, this.zoom, availableImages);\n performSymbolLayout(bucket,\n glyphMap,\n glyphAtlas.positions,\n iconMap,\n imageAtlas.iconPositions,\n this.showCollisionBoxes,\n availableImages,\n this.tileID.canonical,\n this.tileZoom,\n this.projection);\n } else if (bucket.hasPattern &&\n (bucket instanceof LineBucket ||\n bucket instanceof FillBucket ||\n bucket instanceof FillExtrusionBucket)) {\n recalculateLayers(bucket.layers, this.zoom, availableImages);\n // $FlowFixMe[incompatible-type] Flow can't interpret ImagePosition as SpritePosition for some reason here\n const imagePositions: SpritePositions = imageAtlas.patternPositions;\n bucket.addFeatures(options, this.tileID.canonical, imagePositions, availableImages, this.tileTransform);\n }\n }\n\n this.status = 'done';\n callback(null, {\n buckets: values(buckets).filter(b => !b.isEmpty()),\n featureIndex,\n collisionBoxArray: this.collisionBoxArray,\n glyphAtlasImage: glyphAtlas.image,\n lineAtlas,\n imageAtlas,\n // Only used for benchmarking:\n glyphMap: this.returnDependencies ? glyphMap : null,\n iconMap: this.returnDependencies ? iconMap : null,\n glyphPositions: this.returnDependencies ? glyphAtlas.positions : null\n });\n PerformanceUtils.endMeasure(m);\n }\n }\n }\n}\n\nfunction recalculateLayers(layers: $ReadOnlyArray<StyleLayer>, zoom: number, availableImages: Array<string>) {\n // Layers are shared and may have been used by a WorkerTile with a different zoom.\n const parameters = new EvaluationParameters(zoom);\n for (const layer of layers) {\n layer.recalculate(parameters, availableImages);\n }\n}\n\nexport default WorkerTile;\n","// @flow\n\nimport {getArrayBuffer} from '../util/ajax.js';\n\nimport vt from '@mapbox/vector-tile';\nimport Protobuf from 'pbf';\nimport WorkerTile from './worker_tile.js';\nimport {extend} from '../util/util.js';\nimport {getPerformanceMeasurement} from '../util/performance.js';\nimport {Evented} from '../util/evented.js';\nimport tileTransform from '../geo/projection/tile_transform.js';\n\nimport type {\n WorkerSource,\n WorkerTileParameters,\n RequestedTileParameters,\n WorkerTileCallback,\n TileParameters\n} from '../source/worker_source.js';\n\nimport type Actor from '../util/actor.js';\nimport type StyleLayerIndex from '../style/style_layer_index.js';\nimport type {Callback} from '../types/callback.js';\nimport type Scheduler from '../util/scheduler.js';\n\nexport type LoadVectorTileResult = {\n rawData: ArrayBuffer;\n vectorTile?: VectorTile;\n expires?: any;\n cacheControl?: any;\n resourceTiming?: Array<PerformanceResourceTiming>;\n};\n\n/**\n * @callback LoadVectorDataCallback\n * @param error\n * @param vectorTile\n * @private\n */\nexport type LoadVectorDataCallback = Callback<?LoadVectorTileResult>;\n\nexport type AbortVectorData = () => void;\nexport type LoadVectorData = (params: RequestedTileParameters, callback: LoadVectorDataCallback) => ?AbortVectorData;\nexport class DedupedRequest {\n entries: { [string]: Object };\n scheduler: ?Scheduler;\n\n constructor(scheduler?: Scheduler) {\n this.entries = {};\n this.scheduler = scheduler;\n }\n\n request(key: string, metadata: Object, request: any, callback: LoadVectorDataCallback): (() => void) {\n const entry = this.entries[key] = this.entries[key] || {callbacks: []};\n\n if (entry.result) {\n const [err, result] = entry.result;\n if (this.scheduler) {\n this.scheduler.add(() => {\n callback(err, result);\n }, metadata);\n } else {\n callback(err, result);\n }\n return () => {};\n }\n\n entry.callbacks.push(callback);\n\n if (!entry.cancel) {\n entry.cancel = request((err, result) => {\n entry.result = [err, result];\n for (const cb of entry.callbacks) {\n if (this.scheduler) {\n this.scheduler.add(() => {\n cb(err, result);\n }, metadata);\n } else {\n cb(err, result);\n }\n }\n setTimeout(() => delete this.entries[key], 1000 * 3);\n });\n }\n\n return () => {\n if (entry.result) return;\n entry.callbacks = entry.callbacks.filter(cb => cb !== callback);\n if (!entry.callbacks.length) {\n entry.cancel();\n delete this.entries[key];\n }\n };\n }\n}\n\n/**\n * @private\n */\nexport function loadVectorTile(params: RequestedTileParameters, callback: LoadVectorDataCallback, skipParse?: boolean): (() => void) {\n const key = JSON.stringify(params.request);\n\n const makeRequest = (callback) => {\n const request = getArrayBuffer(params.request, (err: ?Error, data: ?ArrayBuffer, cacheControl: ?string, expires: ?string) => {\n if (err) {\n callback(err);\n } else if (data) {\n callback(null, {\n vectorTile: skipParse ? undefined : new vt.VectorTile(new Protobuf(data)),\n rawData: data,\n cacheControl,\n expires\n });\n }\n });\n return () => {\n request.cancel();\n callback();\n };\n };\n\n if (params.data) {\n // if we already got the result earlier (on the main thread), return it directly\n (this.deduped: DedupedRequest).entries[key] = {result: [null, params.data]};\n }\n\n const callbackMetadata = {type: 'parseTile', isSymbolTile: params.isSymbolTile, zoom: params.tileZoom};\n return (this.deduped: DedupedRequest).request(key, callbackMetadata, makeRequest, callback);\n}\n\n/**\n * The {@link WorkerSource} implementation that supports {@link VectorTileSource}.\n * This class is designed to be easily reused to support custom source types\n * for data formats that can be parsed/converted into an in-memory VectorTile\n * representation. To do so, create it with\n * `new VectorTileWorkerSource(actor, styleLayers, customLoadVectorDataFunction)`.\n *\n * @private\n */\nclass VectorTileWorkerSource extends Evented implements WorkerSource {\n actor: Actor;\n layerIndex: StyleLayerIndex;\n availableImages: Array<string>;\n loadVectorData: LoadVectorData;\n loading: {[_: number]: WorkerTile };\n loaded: {[_: number]: WorkerTile };\n deduped: DedupedRequest;\n isSpriteLoaded: boolean;\n scheduler: ?Scheduler;\n\n /**\n * @param [loadVectorData] Optional method for custom loading of a VectorTile\n * object based on parameters passed from the main-thread Source. See\n * {@link VectorTileWorkerSource#loadTile}. The default implementation simply\n * loads the pbf at `params.url`.\n * @private\n */\n constructor(actor: Actor, layerIndex: StyleLayerIndex, availableImages: Array<string>, isSpriteLoaded: boolean, loadVectorData: ?LoadVectorData) {\n super();\n this.actor = actor;\n this.layerIndex = layerIndex;\n this.availableImages = availableImages;\n this.loadVectorData = loadVectorData || loadVectorTile;\n this.loading = {};\n this.loaded = {};\n this.deduped = new DedupedRequest(actor.scheduler);\n this.isSpriteLoaded = isSpriteLoaded;\n this.scheduler = actor.scheduler;\n }\n\n /**\n * Implements {@link WorkerSource#loadTile}. Delegates to\n * {@link VectorTileWorkerSource#loadVectorData} (which by default expects\n * a `params.url` property) for fetching and producing a VectorTile object.\n * @private\n */\n loadTile(params: WorkerTileParameters, callback: WorkerTileCallback) {\n const uid = params.uid;\n\n const requestParam = params && params.request;\n const perf = requestParam && requestParam.collectResourceTiming;\n\n const workerTile = this.loading[uid] = new WorkerTile(params);\n workerTile.abort = this.loadVectorData(params, (err, response) => {\n\n const aborted = !this.loading[uid];\n\n delete this.loading[uid];\n\n if (aborted || err || !response) {\n workerTile.status = 'done';\n if (!aborted) this.loaded[uid] = workerTile;\n return callback(err);\n }\n\n const rawTileData = response.rawData;\n const cacheControl = {};\n if (response.expires) cacheControl.expires = response.expires;\n if (response.cacheControl) cacheControl.cacheControl = response.cacheControl;\n\n // response.vectorTile will be present in the GeoJSON worker case (which inherits from this class)\n // because we stub the vector tile interface around JSON data instead of parsing it directly\n workerTile.vectorTile = response.vectorTile || new vt.VectorTile(new Protobuf(rawTileData));\n const parseTile = () => {\n workerTile.parse(workerTile.vectorTile, this.layerIndex, this.availableImages, this.actor, (err, result) => {\n if (err || !result) return callback(err);\n\n const resourceTiming = {};\n if (perf) {\n // Transferring a copy of rawTileData because the worker needs to retain its copy.\n const resourceTimingData = getPerformanceMeasurement(requestParam);\n // it's necessary to eval the result of getEntriesByName() here via parse/stringify\n // late evaluation in the main thread causes TypeError: illegal invocation\n if (resourceTimingData.length > 0) {\n resourceTiming.resourceTiming = JSON.parse(JSON.stringify(resourceTimingData));\n }\n }\n callback(null, extend({rawTileData: rawTileData.slice(0)}, result, cacheControl, resourceTiming));\n });\n };\n\n if (this.isSpriteLoaded) {\n parseTile();\n } else {\n this.once('isSpriteLoaded', () => {\n if (this.scheduler) {\n const metadata = {type: 'parseTile', isSymbolTile: params.isSymbolTile, zoom: params.tileZoom};\n this.scheduler.add(parseTile, metadata);\n } else {\n parseTile();\n }\n });\n }\n\n this.loaded = this.loaded || {};\n this.loaded[uid] = workerTile;\n });\n }\n\n /**\n * Implements {@link WorkerSource#reloadTile}.\n * @private\n */\n reloadTile(params: WorkerTileParameters, callback: WorkerTileCallback) {\n const loaded = this.loaded,\n uid = params.uid,\n vtSource = this;\n if (loaded && loaded[uid]) {\n const workerTile = loaded[uid];\n workerTile.showCollisionBoxes = params.showCollisionBoxes;\n workerTile.enableTerrain = !!params.enableTerrain;\n workerTile.projection = params.projection;\n workerTile.tileTransform = tileTransform(params.tileID.canonical, params.projection);\n\n const done = (err, data) => {\n const reloadCallback = workerTile.reloadCallback;\n if (reloadCallback) {\n delete workerTile.reloadCallback;\n workerTile.parse(workerTile.vectorTile, vtSource.layerIndex, this.availableImages, vtSource.actor, reloadCallback);\n }\n callback(err, data);\n };\n\n if (workerTile.status === 'parsing') {\n workerTile.reloadCallback = done;\n } else if (workerTile.status === 'done') {\n // if there was no vector tile data on the initial load, don't try and re-parse tile\n if (workerTile.vectorTile) {\n workerTile.parse(workerTile.vectorTile, this.layerIndex, this.availableImages, this.actor, done);\n } else {\n done();\n }\n }\n }\n }\n\n /**\n * Implements {@link WorkerSource#abortTile}.\n *\n * @param params\n * @param params.uid The UID for this tile.\n * @private\n */\n abortTile(params: TileParameters, callback: WorkerTileCallback) {\n const uid = params.uid;\n const tile = this.loading[uid];\n if (tile) {\n if (tile.abort) tile.abort();\n delete this.loading[uid];\n }\n callback();\n }\n\n /**\n * Implements {@link WorkerSource#removeTile}.\n *\n * @param params\n * @param params.uid The UID for this tile.\n * @private\n */\n removeTile(params: TileParameters, callback: WorkerTileCallback) {\n const loaded = this.loaded,\n uid = params.uid;\n if (loaded && loaded[uid]) {\n delete loaded[uid];\n }\n callback();\n }\n}\n\nexport default VectorTileWorkerSource;\n","// @flow\n\nimport {bindAll, isWorker, isSafari} from './util.js';\nimport window from './window.js';\nimport {serialize, deserialize} from './web_worker_transfer.js';\nimport Scheduler from './scheduler.js';\n\nimport type {Transferable} from '../types/transferable.js';\nimport type {Cancelable} from '../types/cancelable.js';\n\n/**\n * An implementation of the [Actor design pattern](http://en.wikipedia.org/wiki/Actor_model)\n * that maintains the relationship between asynchronous tasks and the objects\n * that spin them off - in this case, tasks like parsing parts of styles,\n * owned by the styles\n *\n * @param {WebWorker} target\n * @param {WebWorker} parent\n * @param {string|number} mapId A unique identifier for the Map instance using this Actor.\n * @private\n */\nclass Actor {\n target: any;\n parent: any;\n mapId: ?number;\n callbacks: { number: any };\n name: string;\n cancelCallbacks: { number: Cancelable };\n globalScope: any;\n scheduler: Scheduler;\n\n constructor(target: any, parent: any, mapId: ?number) {\n this.target = target;\n this.parent = parent;\n this.mapId = mapId;\n this.callbacks = {};\n this.cancelCallbacks = {};\n bindAll(['receive'], this);\n this.target.addEventListener('message', this.receive, false);\n this.globalScope = isWorker() ? target : window;\n this.scheduler = new Scheduler();\n }\n\n /**\n * Sends a message from a main-thread map to a Worker or from a Worker back to\n * a main-thread map instance.\n *\n * @param type The name of the target method to invoke or '[source-type].[source-name].name' for a method on a WorkerSource.\n * @param targetMapId A particular mapId to which to send this message.\n * @private\n */\n send(type: string, data: mixed, callback: ?Function, targetMapId: ?string, mustQueue: boolean = false, callbackMetadata?: Object): ?Cancelable {\n // We're using a string ID instead of numbers because they are being used as object keys\n // anyway, and thus stringified implicitly. We use random IDs because an actor may receive\n // message from multiple other actors which could run in different execution context. A\n // linearly increasing ID could produce collisions.\n const id = Math.round((Math.random() * 1e18)).toString(36).substring(0, 10);\n if (callback) {\n callback.metadata = callbackMetadata;\n this.callbacks[id] = callback;\n }\n const buffers: ?Array<Transferable> = isSafari(this.globalScope) ? undefined : [];\n this.target.postMessage({\n id,\n type,\n hasCallback: !!callback,\n targetMapId,\n mustQueue,\n sourceMapId: this.mapId,\n data: serialize(data, buffers)\n }, buffers);\n return {\n cancel: () => {\n if (callback) {\n // Set the callback to null so that it never fires after the request is aborted.\n delete this.callbacks[id];\n }\n this.target.postMessage({\n id,\n type: '<cancel>',\n targetMapId,\n sourceMapId: this.mapId\n });\n }\n };\n }\n\n receive(message: Object) {\n const data = message.data,\n id = data.id;\n\n if (!id) {\n return;\n }\n\n if (data.targetMapId && this.mapId !== data.targetMapId) {\n return;\n }\n\n if (data.type === '<cancel>') {\n // Remove the original request from the queue. This is only possible if it\n // hasn't been kicked off yet. The id will remain in the queue, but because\n // there is no associated task, it will be dropped once it's time to execute it.\n const cancel = this.cancelCallbacks[id];\n delete this.cancelCallbacks[id];\n if (cancel) {\n cancel.cancel();\n }\n } else {\n if (data.mustQueue || isWorker()) {\n // for worker tasks that are often cancelled, such as loadTile, store them before actually\n // processing them. This is necessary because we want to keep receiving <cancel> messages.\n // Some tasks may take a while in the worker thread, so before executing the next task\n // in our queue, postMessage preempts this and <cancel> messages can be processed.\n // We're using a MessageChannel object to get throttle the process() flow to one at a time.\n const callback = this.callbacks[id];\n const metadata = (callback && callback.metadata) || {type: \"message\"};\n this.cancelCallbacks[id] = this.scheduler.add(() => this.processTask(id, data), metadata);\n } else {\n // In the main thread, process messages immediately so that other work does not slip in\n // between getting partial data back from workers.\n this.processTask(id, data);\n }\n }\n }\n\n processTask(id: number, task: any) {\n if (task.type === '<response>') {\n // The done() function in the counterpart has been called, and we are now\n // firing the callback in the originating actor, if there is one.\n const callback = this.callbacks[id];\n delete this.callbacks[id];\n if (callback) {\n // If we get a response, but don't have a callback, the request was canceled.\n if (task.error) {\n callback(deserialize(task.error));\n } else {\n callback(null, deserialize(task.data));\n }\n }\n } else {\n const buffers: ?Array<Transferable> = isSafari(this.globalScope) ? undefined : [];\n const done = task.hasCallback ? (err, data) => {\n delete this.cancelCallbacks[id];\n this.target.postMessage({\n id,\n type: '<response>',\n sourceMapId: this.mapId,\n error: err ? serialize(err) : null,\n data: serialize(data, buffers)\n }, buffers);\n } : (_) => {\n };\n\n const params = (deserialize(task.data): any);\n if (this.parent[task.type]) {\n // task.type == 'loadTile', 'removeTile', etc.\n this.parent[task.type](task.sourceMapId, params, done);\n } else if (this.parent.getWorkerSource) {\n // task.type == sourcetype.method\n const keys = task.type.split('.');\n const scope = (this.parent: any).getWorkerSource(task.sourceMapId, keys[0], params.source);\n scope[keys[1]](params, done);\n } else {\n // No function was found.\n done(new Error(`Could not find function ${task.type}`));\n }\n }\n }\n\n remove() {\n this.scheduler.remove();\n this.target.removeEventListener('message', this.receive, false);\n }\n}\n\nexport default Actor;\n","// @flow\nexport default ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\n","// @flow\n\nimport type {LayerSpecification} from './types.js';\n\nimport refProperties from './util/ref_properties.js';\n\nfunction stringify(obj) {\n if (typeof obj === 'number' || typeof obj === 'boolean' || typeof obj === 'string' || obj === undefined || obj === null)\n return JSON.stringify(obj);\n\n if (Array.isArray(obj)) {\n let str = '[';\n for (const val of obj) {\n str += `${stringify(val)},`;\n }\n return `${str}]`;\n }\n\n let str = '{';\n for (const key of Object.keys(obj).sort()) {\n str += `${key}:${stringify((obj: any)[key])},`;\n }\n return `${str}}`;\n}\n\nfunction getKey(layer) {\n let key = '';\n for (const k of refProperties) {\n key += `/${stringify((layer: any)[k])}`;\n }\n return key;\n}\n\n/**\n * Given an array of layers, return an array of arrays of layers where all\n * layers in each group have identical layout-affecting properties. These\n * are the properties that were formerly used by explicit `ref` mechanism\n * for layers: 'type', 'source', 'source-layer', 'minzoom', 'maxzoom',\n * 'filter', and 'layout'.\n *\n * The input is not modified. The output layers are references to the\n * input layers.\n *\n * @private\n * @param {Array<Layer>} layers\n * @param {Object} [cachedKeys] - an object to keep already calculated keys.\n * @returns {Array<Array<Layer>>}\n */\nexport default function groupByLayout(layers: Array<LayerSpecification>, cachedKeys: {[id: string]: string}): Array<Array<LayerSpecification>> {\n const groups = {};\n\n for (let i = 0; i < layers.length; i++) {\n\n const k = (cachedKeys && cachedKeys[layers[i].id]) || getKey(layers[i]);\n // update the cache if there is one\n if (cachedKeys)\n cachedKeys[layers[i].id] = k;\n\n let group = groups[k];\n if (!group) {\n group = groups[k] = [];\n }\n group.push(layers[i]);\n }\n\n const result = [];\n\n for (const k in groups) {\n result.push(groups[k]);\n }\n\n return result;\n}\n","// @flow\n\nimport createStyleLayer from './create_style_layer.js';\n\nimport {values} from '../util/util.js';\nimport groupByLayout from '../style-spec/group_by_layout.js';\n\nimport type {TypedStyleLayer} from './style_layer/typed_style_layer.js';\nimport type {LayerSpecification} from '../style-spec/types.js';\n\nexport type LayerConfigs = {[_: string]: LayerSpecification };\nexport type Family<Layer: TypedStyleLayer> = Array<Layer>;\n\nclass StyleLayerIndex {\n familiesBySource: { [source: string]: { [sourceLayer: string]: Array<Family<TypedStyleLayer>> } };\n keyCache: { [source: string]: string };\n\n _layerConfigs: LayerConfigs;\n _layers: {[_: string]: TypedStyleLayer };\n\n constructor(layerConfigs: ?Array<LayerSpecification>) {\n this.keyCache = {};\n if (layerConfigs) {\n this.replace(layerConfigs);\n }\n }\n\n replace(layerConfigs: Array<LayerSpecification>) {\n this._layerConfigs = {};\n this._layers = {};\n this.update(layerConfigs, []);\n }\n\n update(layerConfigs: Array<LayerSpecification>, removedIds: Array<string>) {\n for (const layerConfig of layerConfigs) {\n this._layerConfigs[layerConfig.id] = layerConfig;\n\n const layer = this._layers[layerConfig.id] = ((createStyleLayer(layerConfig): any): TypedStyleLayer);\n layer.compileFilter();\n if (this.keyCache[layerConfig.id])\n delete this.keyCache[layerConfig.id];\n }\n for (const id of removedIds) {\n delete this.keyCache[id];\n delete this._layerConfigs[id];\n delete this._layers[id];\n }\n\n this.familiesBySource = {};\n\n const groups = groupByLayout(values(this._layerConfigs), this.keyCache);\n\n for (const layerConfigs of groups) {\n const layers = layerConfigs.map((layerConfig) => this._layers[layerConfig.id]);\n\n const layer = layers[0];\n if (layer.visibility === 'none') {\n continue;\n }\n\n const sourceId = layer.source || '';\n let sourceGroup = this.familiesBySource[sourceId];\n if (!sourceGroup) {\n sourceGroup = this.familiesBySource[sourceId] = {};\n }\n\n const sourceLayerId = layer.sourceLayer || '_geojsonTileLayer';\n let sourceLayerFamilies = sourceGroup[sourceLayerId];\n if (!sourceLayerFamilies) {\n sourceLayerFamilies = sourceGroup[sourceLayerId] = [];\n }\n\n sourceLayerFamilies.push(layers);\n }\n }\n}\n\nexport default StyleLayerIndex;\n","// @flow\n\nimport DEMData from '../data/dem_data.js';\nimport window from '../util/window.js';\n\nimport type Actor from '../util/actor.js';\nimport type {WorkerDEMTileParameters, WorkerDEMTileCallback} from './worker_source.js';\n\nclass RasterDEMTileWorkerSource {\n actor: Actor;\n offscreenCanvas: OffscreenCanvas;\n offscreenCanvasContext: CanvasRenderingContext2D;\n\n loadTile(params: WorkerDEMTileParameters, callback: WorkerDEMTileCallback) {\n const {uid, encoding, rawImageData, padding, buildQuadTree} = params;\n // Main thread will transfer ImageBitmap if offscreen decode with OffscreenCanvas is supported, else it will transfer an already decoded image.\n // Flow struggles to refine ImageBitmap type, likely due to the JSDom shim\n const imagePixels = window.ImageBitmap && rawImageData instanceof window.ImageBitmap ? this.getImageData(rawImageData, padding) : ((rawImageData: any): ImageData);\n const dem = new DEMData(uid, imagePixels, encoding, padding < 1, buildQuadTree);\n callback(null, dem);\n }\n\n getImageData(imgBitmap: ImageBitmap, padding: number): ImageData {\n // Lazily initialize OffscreenCanvas\n if (!this.offscreenCanvas || !this.offscreenCanvasContext) {\n // Dem tiles are typically 256x256\n this.offscreenCanvas = new OffscreenCanvas(imgBitmap.width, imgBitmap.height);\n this.offscreenCanvasContext = this.offscreenCanvas.getContext('2d');\n }\n\n this.offscreenCanvas.width = imgBitmap.width;\n this.offscreenCanvas.height = imgBitmap.height;\n\n this.offscreenCanvasContext.drawImage(imgBitmap, 0, 0, imgBitmap.width, imgBitmap.height);\n // Insert or remove defined padding around the image to allow backfilling for neighboring data.\n const imgData = this.offscreenCanvasContext.getImageData(-padding, -padding, imgBitmap.width + 2 * padding, imgBitmap.height + 2 * padding);\n this.offscreenCanvasContext.clearRect(0, 0, this.offscreenCanvas.width, this.offscreenCanvas.height);\n return imgData;\n }\n}\n\nexport default RasterDEMTileWorkerSource;\n","\nmodule.exports = rewind;\n\nfunction rewind(gj, outer) {\n var type = gj && gj.type, i;\n\n if (type === 'FeatureCollection') {\n for (i = 0; i < gj.features.length; i++) rewind(gj.features[i], outer);\n\n } else if (type === 'GeometryCollection') {\n for (i = 0; i < gj.geometries.length; i++) rewind(gj.geometries[i], outer);\n\n } else if (type === 'Feature') {\n rewind(gj.geometry, outer);\n\n } else if (type === 'Polygon') {\n rewindRings(gj.coordinates, outer);\n\n } else if (type === 'MultiPolygon') {\n for (i = 0; i < gj.coordinates.length; i++) rewindRings(gj.coordinates[i], outer);\n }\n\n return gj;\n}\n\nfunction rewindRings(rings, outer) {\n if (rings.length === 0) return;\n\n rewindRing(rings[0], outer);\n for (var i = 1; i < rings.length; i++) {\n rewindRing(rings[i], !outer);\n }\n}\n\nfunction rewindRing(ring, dir) {\n var area = 0, err = 0;\n for (var i = 0, len = ring.length, j = len - 1; i < len; j = i++) {\n var k = (ring[i][0] - ring[j][0]) * (ring[j][1] + ring[i][1]);\n var m = area + k;\n err += Math.abs(area) >= Math.abs(k) ? area - m + k : k - m + area;\n area = m;\n }\n if (area + err >= 0 !== !!dir) ring.reverse();\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nimport mvt from '@mapbox/vector-tile';\nconst toGeoJSON = mvt.VectorTileFeature.prototype.toGeoJSON;\nimport EXTENT from '../data/extent.js';\n\n// The feature type used by geojson-vt and supercluster. Should be extracted to\n// global type and used in module definitions for those two modules.\ntype Feature = {\n type: 1,\n id: mixed,\n tags: {[_: string]: string | number | boolean},\n geometry: Array<[number, number]>,\n} | {\n type: 2 | 3,\n id: mixed,\n tags: {[_: string]: string | number | boolean},\n geometry: Array<Array<[number, number]>>,\n}\n\nclass FeatureWrapper implements VectorTileFeature {\n _feature: Feature;\n\n extent: number;\n type: 1 | 2 | 3;\n id: number;\n properties: {[_: string]: string | number | boolean};\n\n constructor(feature: Feature) {\n this._feature = feature;\n\n this.extent = EXTENT;\n this.type = feature.type;\n this.properties = feature.tags;\n\n // If the feature has a top-level `id` property, copy it over, but only\n // if it can be coerced to an integer, because this wrapper is used for\n // serializing geojson feature data into vector tile PBF data, and the\n // vector tile spec only supports integer values for feature ids --\n // allowing non-integer values here results in a non-compliant PBF\n // that causes an exception when it is parsed with vector-tile-js\n if ('id' in feature && !isNaN(feature.id)) {\n this.id = parseInt(feature.id, 10);\n }\n }\n\n loadGeometry() {\n if (this._feature.type === 1) {\n const geometry = [];\n for (const point of this._feature.geometry) {\n geometry.push([new Point(point[0], point[1])]);\n }\n return geometry;\n } else {\n const geometry = [];\n for (const ring of this._feature.geometry) {\n const newRing = [];\n for (const point of ring) {\n newRing.push(new Point(point[0], point[1]));\n }\n geometry.push(newRing);\n }\n return geometry;\n }\n }\n\n toGeoJSON(x: number, y: number, z: number) {\n return toGeoJSON.call(this, x, y, z);\n }\n}\n\nclass GeoJSONWrapper implements VectorTile, VectorTileLayer {\n layers: {[_: string]: VectorTileLayer};\n name: string;\n extent: number;\n length: number;\n _features: Array<Feature>;\n\n constructor(features: Array<Feature>) {\n this.layers = {'_geojsonTileLayer': this};\n this.name = '_geojsonTileLayer';\n this.extent = EXTENT;\n this.length = features.length;\n this._features = features;\n }\n\n feature(i: number): VectorTileFeature {\n return new FeatureWrapper(this._features[i]);\n }\n}\n\nexport default GeoJSONWrapper;\n","'use strict'\n\nvar Point = require('@mapbox/point-geometry')\nvar VectorTileFeature = require('@mapbox/vector-tile').VectorTileFeature\n\nmodule.exports = GeoJSONWrapper\n\n// conform to vectortile api\nfunction GeoJSONWrapper (features, options) {\n this.options = options || {}\n this.features = features\n this.length = features.length\n}\n\nGeoJSONWrapper.prototype.feature = function (i) {\n return new FeatureWrapper(this.features[i], this.options.extent)\n}\n\nfunction FeatureWrapper (feature, extent) {\n this.id = typeof feature.id === 'number' ? feature.id : undefined\n this.type = feature.type\n this.rawGeometry = feature.type === 1 ? [feature.geometry] : feature.geometry\n this.properties = feature.tags\n this.extent = extent || 4096\n}\n\nFeatureWrapper.prototype.loadGeometry = function () {\n var rings = this.rawGeometry\n this.geometry = []\n\n for (var i = 0; i < rings.length; i++) {\n var ring = rings[i]\n var newRing = []\n for (var j = 0; j < ring.length; j++) {\n newRing.push(new Point(ring[j][0], ring[j][1]))\n }\n this.geometry.push(newRing)\n }\n return this.geometry\n}\n\nFeatureWrapper.prototype.bbox = function () {\n if (!this.geometry) this.loadGeometry()\n\n var rings = this.geometry\n var x1 = Infinity\n var x2 = -Infinity\n var y1 = Infinity\n var y2 = -Infinity\n\n for (var i = 0; i < rings.length; i++) {\n var ring = rings[i]\n\n for (var j = 0; j < ring.length; j++) {\n var coord = ring[j]\n\n x1 = Math.min(x1, coord.x)\n x2 = Math.max(x2, coord.x)\n y1 = Math.min(y1, coord.y)\n y2 = Math.max(y2, coord.y)\n }\n }\n\n return [x1, y1, x2, y2]\n}\n\nFeatureWrapper.prototype.toGeoJSON = VectorTileFeature.prototype.toGeoJSON\n","var Pbf = require('pbf')\nvar GeoJSONWrapper = require('./lib/geojson_wrapper')\n\nmodule.exports = fromVectorTileJs\nmodule.exports.fromVectorTileJs = fromVectorTileJs\nmodule.exports.fromGeojsonVt = fromGeojsonVt\nmodule.exports.GeoJSONWrapper = GeoJSONWrapper\n\n/**\n * Serialize a vector-tile-js-created tile to pbf\n *\n * @param {Object} tile\n * @return {Buffer} uncompressed, pbf-serialized tile data\n */\nfunction fromVectorTileJs (tile) {\n var out = new Pbf()\n writeTile(tile, out)\n return out.finish()\n}\n\n/**\n * Serialized a geojson-vt-created tile to pbf.\n *\n * @param {Object} layers - An object mapping layer names to geojson-vt-created vector tile objects\n * @param {Object} [options] - An object specifying the vector-tile specification version and extent that were used to create `layers`.\n * @param {Number} [options.version=1] - Version of vector-tile spec used\n * @param {Number} [options.extent=4096] - Extent of the vector tile\n * @return {Buffer} uncompressed, pbf-serialized tile data\n */\nfunction fromGeojsonVt (layers, options) {\n options = options || {}\n var l = {}\n for (var k in layers) {\n l[k] = new GeoJSONWrapper(layers[k].features, options)\n l[k].name = k\n l[k].version = options.version\n l[k].extent = options.extent\n }\n return fromVectorTileJs({ layers: l })\n}\n\nfunction writeTile (tile, pbf) {\n for (var key in tile.layers) {\n pbf.writeMessage(3, writeLayer, tile.layers[key])\n }\n}\n\nfunction writeLayer (layer, pbf) {\n pbf.writeVarintField(15, layer.version || 1)\n pbf.writeStringField(1, layer.name || '')\n pbf.writeVarintField(5, layer.extent || 4096)\n\n var i\n var context = {\n keys: [],\n values: [],\n keycache: {},\n valuecache: {}\n }\n\n for (i = 0; i < layer.length; i++) {\n context.feature = layer.feature(i)\n pbf.writeMessage(2, writeFeature, context)\n }\n\n var keys = context.keys\n for (i = 0; i < keys.length; i++) {\n pbf.writeStringField(3, keys[i])\n }\n\n var values = context.values\n for (i = 0; i < values.length; i++) {\n pbf.writeMessage(4, writeValue, values[i])\n }\n}\n\nfunction writeFeature (context, pbf) {\n var feature = context.feature\n\n if (feature.id !== undefined) {\n pbf.writeVarintField(1, feature.id)\n }\n\n pbf.writeMessage(2, writeProperties, context)\n pbf.writeVarintField(3, feature.type)\n pbf.writeMessage(4, writeGeometry, feature)\n}\n\nfunction writeProperties (context, pbf) {\n var feature = context.feature\n var keys = context.keys\n var values = context.values\n var keycache = context.keycache\n var valuecache = context.valuecache\n\n for (var key in feature.properties) {\n var value = feature.properties[key]\n\n var keyIndex = keycache[key]\n if (value === null) continue // don't encode null value properties\n\n if (typeof keyIndex === 'undefined') {\n keys.push(key)\n keyIndex = keys.length - 1\n keycache[key] = keyIndex\n }\n pbf.writeVarint(keyIndex)\n\n var type = typeof value\n if (type !== 'string' && type !== 'boolean' && type !== 'number') {\n value = JSON.stringify(value)\n }\n var valueKey = type + ':' + value\n var valueIndex = valuecache[valueKey]\n if (typeof valueIndex === 'undefined') {\n values.push(value)\n valueIndex = values.length - 1\n valuecache[valueKey] = valueIndex\n }\n pbf.writeVarint(valueIndex)\n }\n}\n\nfunction command (cmd, length) {\n return (length << 3) + (cmd & 0x7)\n}\n\nfunction zigzag (num) {\n return (num << 1) ^ (num >> 31)\n}\n\nfunction writeGeometry (feature, pbf) {\n var geometry = feature.loadGeometry()\n var type = feature.type\n var x = 0\n var y = 0\n var rings = geometry.length\n for (var r = 0; r < rings; r++) {\n var ring = geometry[r]\n var count = 1\n if (type === 1) {\n count = ring.length\n }\n pbf.writeVarint(command(1, count)) // moveto\n // do not write polygon closing path as lineto\n var lineCount = type === 3 ? ring.length - 1 : ring.length\n for (var i = 0; i < lineCount; i++) {\n if (i === 1 && type !== 1) {\n pbf.writeVarint(command(2, lineCount - 1)) // lineto\n }\n var dx = ring[i].x - x\n var dy = ring[i].y - y\n pbf.writeVarint(zigzag(dx))\n pbf.writeVarint(zigzag(dy))\n x += dx\n y += dy\n }\n if (type === 3) {\n pbf.writeVarint(command(7, 1)) // closepath\n }\n }\n}\n\nfunction writeValue (value, pbf) {\n var type = typeof value\n if (type === 'string') {\n pbf.writeStringField(1, value)\n } else if (type === 'boolean') {\n pbf.writeBooleanField(7, value)\n } else if (type === 'number') {\n if (value % 1 !== 0) {\n pbf.writeDoubleField(3, value)\n } else if (value < 0) {\n pbf.writeSVarintField(6, value)\n } else {\n pbf.writeVarintField(5, value)\n }\n }\n}\n","\nexport default function sortKD(ids, coords, nodeSize, left, right, depth) {\n if (right - left <= nodeSize) return;\n\n const m = (left + right) >> 1;\n\n select(ids, coords, m, left, right, depth % 2);\n\n sortKD(ids, coords, nodeSize, left, m - 1, depth + 1);\n sortKD(ids, coords, nodeSize, m + 1, right, depth + 1);\n}\n\nfunction select(ids, coords, k, left, right, inc) {\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n select(ids, coords, k, newLeft, newRight, inc);\n }\n\n const t = coords[2 * k + inc];\n let i = left;\n let j = right;\n\n swapItem(ids, coords, left, k);\n if (coords[2 * right + inc] > t) swapItem(ids, coords, left, right);\n\n while (i < j) {\n swapItem(ids, coords, i, j);\n i++;\n j--;\n while (coords[2 * i + inc] < t) i++;\n while (coords[2 * j + inc] > t) j--;\n }\n\n if (coords[2 * left + inc] === t) swapItem(ids, coords, left, j);\n else {\n j++;\n swapItem(ids, coords, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\nfunction swapItem(ids, coords, i, j) {\n swap(ids, i, j);\n swap(coords, 2 * i, 2 * j);\n swap(coords, 2 * i + 1, 2 * j + 1);\n}\n\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n","\nexport default function within(ids, coords, qx, qy, r, nodeSize) {\n const stack = [0, ids.length - 1, 0];\n const result = [];\n const r2 = r * r;\n\n while (stack.length) {\n const axis = stack.pop();\n const right = stack.pop();\n const left = stack.pop();\n\n if (right - left <= nodeSize) {\n for (let i = left; i <= right; i++) {\n if (sqDist(coords[2 * i], coords[2 * i + 1], qx, qy) <= r2) result.push(ids[i]);\n }\n continue;\n }\n\n const m = Math.floor((left + right) / 2);\n\n const x = coords[2 * m];\n const y = coords[2 * m + 1];\n\n if (sqDist(x, y, qx, qy) <= r2) result.push(ids[m]);\n\n const nextAxis = (axis + 1) % 2;\n\n if (axis === 0 ? qx - r <= x : qy - r <= y) {\n stack.push(left);\n stack.push(m - 1);\n stack.push(nextAxis);\n }\n if (axis === 0 ? qx + r >= x : qy + r >= y) {\n stack.push(m + 1);\n stack.push(right);\n stack.push(nextAxis);\n }\n }\n\n return result;\n}\n\nfunction sqDist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\n","\nimport sort from './sort';\nimport range from './range';\nimport within from './within';\n\nconst defaultGetX = p => p[0];\nconst defaultGetY = p => p[1];\n\nexport default class KDBush {\n constructor(points, getX = defaultGetX, getY = defaultGetY, nodeSize = 64, ArrayType = Float64Array) {\n this.nodeSize = nodeSize;\n this.points = points;\n\n const IndexArrayType = points.length < 65536 ? Uint16Array : Uint32Array;\n\n const ids = this.ids = new IndexArrayType(points.length);\n const coords = this.coords = new ArrayType(points.length * 2);\n\n for (let i = 0; i < points.length; i++) {\n ids[i] = i;\n coords[2 * i] = getX(points[i]);\n coords[2 * i + 1] = getY(points[i]);\n }\n\n sort(ids, coords, nodeSize, 0, ids.length - 1, 0);\n }\n\n range(minX, minY, maxX, maxY) {\n return range(this.ids, this.coords, minX, minY, maxX, maxY, this.nodeSize);\n }\n\n within(x, y, r) {\n return within(this.ids, this.coords, x, y, r, this.nodeSize);\n }\n}\n","\nexport default function range(ids, coords, minX, minY, maxX, maxY, nodeSize) {\n const stack = [0, ids.length - 1, 0];\n const result = [];\n let x, y;\n\n while (stack.length) {\n const axis = stack.pop();\n const right = stack.pop();\n const left = stack.pop();\n\n if (right - left <= nodeSize) {\n for (let i = left; i <= right; i++) {\n x = coords[2 * i];\n y = coords[2 * i + 1];\n if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[i]);\n }\n continue;\n }\n\n const m = Math.floor((left + right) / 2);\n\n x = coords[2 * m];\n y = coords[2 * m + 1];\n\n if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[m]);\n\n const nextAxis = (axis + 1) % 2;\n\n if (axis === 0 ? minX <= x : minY <= y) {\n stack.push(left);\n stack.push(m - 1);\n stack.push(nextAxis);\n }\n if (axis === 0 ? maxX >= x : maxY >= y) {\n stack.push(m + 1);\n stack.push(right);\n stack.push(nextAxis);\n }\n }\n\n return result;\n}\n","\nimport KDBush from 'kdbush';\n\nconst defaultOptions = {\n minZoom: 0, // min zoom to generate clusters on\n maxZoom: 16, // max zoom level to cluster the points on\n minPoints: 2, // minimum points to form a cluster\n radius: 40, // cluster radius in pixels\n extent: 512, // tile extent (radius is calculated relative to it)\n nodeSize: 64, // size of the KD-tree leaf node, affects performance\n log: false, // whether to log timing info\n\n // whether to generate numeric ids for input features (in vector tiles)\n generateId: false,\n\n // a reduce function for calculating custom cluster properties\n reduce: null, // (accumulated, props) => { accumulated.sum += props.sum; }\n\n // properties to use for individual points when running the reducer\n map: props => props // props => ({sum: props.my_value})\n};\n\nconst fround = Math.fround || (tmp => ((x) => { tmp[0] = +x; return tmp[0]; }))(new Float32Array(1));\n\nexport default class Supercluster {\n constructor(options) {\n this.options = extend(Object.create(defaultOptions), options);\n this.trees = new Array(this.options.maxZoom + 1);\n }\n\n load(points) {\n const {log, minZoom, maxZoom, nodeSize} = this.options;\n\n if (log) console.time('total time');\n\n const timerId = `prepare ${ points.length } points`;\n if (log) console.time(timerId);\n\n this.points = points;\n\n // generate a cluster object for each point and index input points into a KD-tree\n let clusters = [];\n for (let i = 0; i < points.length; i++) {\n if (!points[i].geometry) continue;\n clusters.push(createPointCluster(points[i], i));\n }\n this.trees[maxZoom + 1] = new KDBush(clusters, getX, getY, nodeSize, Float32Array);\n\n if (log) console.timeEnd(timerId);\n\n // cluster points on max zoom, then cluster the results on previous zoom, etc.;\n // results in a cluster hierarchy across zoom levels\n for (let z = maxZoom; z >= minZoom; z--) {\n const now = +Date.now();\n\n // create a new set of clusters for the zoom and index them with a KD-tree\n clusters = this._cluster(clusters, z);\n this.trees[z] = new KDBush(clusters, getX, getY, nodeSize, Float32Array);\n\n if (log) console.log('z%d: %d clusters in %dms', z, clusters.length, +Date.now() - now);\n }\n\n if (log) console.timeEnd('total time');\n\n return this;\n }\n\n getClusters(bbox, zoom) {\n let minLng = ((bbox[0] + 180) % 360 + 360) % 360 - 180;\n const minLat = Math.max(-90, Math.min(90, bbox[1]));\n let maxLng = bbox[2] === 180 ? 180 : ((bbox[2] + 180) % 360 + 360) % 360 - 180;\n const maxLat = Math.max(-90, Math.min(90, bbox[3]));\n\n if (bbox[2] - bbox[0] >= 360) {\n minLng = -180;\n maxLng = 180;\n } else if (minLng > maxLng) {\n const easternHem = this.getClusters([minLng, minLat, 180, maxLat], zoom);\n const westernHem = this.getClusters([-180, minLat, maxLng, maxLat], zoom);\n return easternHem.concat(westernHem);\n }\n\n const tree = this.trees[this._limitZoom(zoom)];\n const ids = tree.range(lngX(minLng), latY(maxLat), lngX(maxLng), latY(minLat));\n const clusters = [];\n for (const id of ids) {\n const c = tree.points[id];\n clusters.push(c.numPoints ? getClusterJSON(c) : this.points[c.index]);\n }\n return clusters;\n }\n\n getChildren(clusterId) {\n const originId = this._getOriginId(clusterId);\n const originZoom = this._getOriginZoom(clusterId);\n const errorMsg = 'No cluster with the specified id.';\n\n const index = this.trees[originZoom];\n if (!index) throw new Error(errorMsg);\n\n const origin = index.points[originId];\n if (!origin) throw new Error(errorMsg);\n\n const r = this.options.radius / (this.options.extent * Math.pow(2, originZoom - 1));\n const ids = index.within(origin.x, origin.y, r);\n const children = [];\n for (const id of ids) {\n const c = index.points[id];\n if (c.parentId === clusterId) {\n children.push(c.numPoints ? getClusterJSON(c) : this.points[c.index]);\n }\n }\n\n if (children.length === 0) throw new Error(errorMsg);\n\n return children;\n }\n\n getLeaves(clusterId, limit, offset) {\n limit = limit || 10;\n offset = offset || 0;\n\n const leaves = [];\n this._appendLeaves(leaves, clusterId, limit, offset, 0);\n\n return leaves;\n }\n\n getTile(z, x, y) {\n const tree = this.trees[this._limitZoom(z)];\n const z2 = Math.pow(2, z);\n const {extent, radius} = this.options;\n const p = radius / extent;\n const top = (y - p) / z2;\n const bottom = (y + 1 + p) / z2;\n\n const tile = {\n features: []\n };\n\n this._addTileFeatures(\n tree.range((x - p) / z2, top, (x + 1 + p) / z2, bottom),\n tree.points, x, y, z2, tile);\n\n if (x === 0) {\n this._addTileFeatures(\n tree.range(1 - p / z2, top, 1, bottom),\n tree.points, z2, y, z2, tile);\n }\n if (x === z2 - 1) {\n this._addTileFeatures(\n tree.range(0, top, p / z2, bottom),\n tree.points, -1, y, z2, tile);\n }\n\n return tile.features.length ? tile : null;\n }\n\n getClusterExpansionZoom(clusterId) {\n let expansionZoom = this._getOriginZoom(clusterId) - 1;\n while (expansionZoom <= this.options.maxZoom) {\n const children = this.getChildren(clusterId);\n expansionZoom++;\n if (children.length !== 1) break;\n clusterId = children[0].properties.cluster_id;\n }\n return expansionZoom;\n }\n\n _appendLeaves(result, clusterId, limit, offset, skipped) {\n const children = this.getChildren(clusterId);\n\n for (const child of children) {\n const props = child.properties;\n\n if (props && props.cluster) {\n if (skipped + props.point_count <= offset) {\n // skip the whole cluster\n skipped += props.point_count;\n } else {\n // enter the cluster\n skipped = this._appendLeaves(result, props.cluster_id, limit, offset, skipped);\n // exit the cluster\n }\n } else if (skipped < offset) {\n // skip a single point\n skipped++;\n } else {\n // add a single point\n result.push(child);\n }\n if (result.length === limit) break;\n }\n\n return skipped;\n }\n\n _addTileFeatures(ids, points, x, y, z2, tile) {\n for (const i of ids) {\n const c = points[i];\n const isCluster = c.numPoints;\n\n let tags, px, py;\n if (isCluster) {\n tags = getClusterProperties(c);\n px = c.x;\n py = c.y;\n } else {\n const p = this.points[c.index];\n tags = p.properties;\n px = lngX(p.geometry.coordinates[0]);\n py = latY(p.geometry.coordinates[1]);\n }\n\n const f = {\n type: 1,\n geometry: [[\n Math.round(this.options.extent * (px * z2 - x)),\n Math.round(this.options.extent * (py * z2 - y))\n ]],\n tags\n };\n\n // assign id\n let id;\n if (isCluster) {\n id = c.id;\n } else if (this.options.generateId) {\n // optionally generate id\n id = c.index;\n } else if (this.points[c.index].id) {\n // keep id if already assigned\n id = this.points[c.index].id;\n }\n\n if (id !== undefined) f.id = id;\n\n tile.features.push(f);\n }\n }\n\n _limitZoom(z) {\n return Math.max(this.options.minZoom, Math.min(+z, this.options.maxZoom + 1));\n }\n\n _cluster(points, zoom) {\n const clusters = [];\n const {radius, extent, reduce, minPoints} = this.options;\n const r = radius / (extent * Math.pow(2, zoom));\n\n // loop through each point\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n // if we've already visited the point at this zoom level, skip it\n if (p.zoom <= zoom) continue;\n p.zoom = zoom;\n\n // find all nearby points\n const tree = this.trees[zoom + 1];\n const neighborIds = tree.within(p.x, p.y, r);\n\n const numPointsOrigin = p.numPoints || 1;\n let numPoints = numPointsOrigin;\n\n // count the number of points in a potential cluster\n for (const neighborId of neighborIds) {\n const b = tree.points[neighborId];\n // filter out neighbors that are already processed\n if (b.zoom > zoom) numPoints += b.numPoints || 1;\n }\n\n // if there were neighbors to merge, and there are enough points to form a cluster\n if (numPoints > numPointsOrigin && numPoints >= minPoints) {\n let wx = p.x * numPointsOrigin;\n let wy = p.y * numPointsOrigin;\n\n let clusterProperties = reduce && numPointsOrigin > 1 ? this._map(p, true) : null;\n\n // encode both zoom and point index on which the cluster originated -- offset by total length of features\n const id = (i << 5) + (zoom + 1) + this.points.length;\n\n for (const neighborId of neighborIds) {\n const b = tree.points[neighborId];\n\n if (b.zoom <= zoom) continue;\n b.zoom = zoom; // save the zoom (so it doesn't get processed twice)\n\n const numPoints2 = b.numPoints || 1;\n wx += b.x * numPoints2; // accumulate coordinates for calculating weighted center\n wy += b.y * numPoints2;\n\n b.parentId = id;\n\n if (reduce) {\n if (!clusterProperties) clusterProperties = this._map(p, true);\n reduce(clusterProperties, this._map(b));\n }\n }\n\n p.parentId = id;\n clusters.push(createCluster(wx / numPoints, wy / numPoints, id, numPoints, clusterProperties));\n\n } else { // left points as unclustered\n clusters.push(p);\n\n if (numPoints > 1) {\n for (const neighborId of neighborIds) {\n const b = tree.points[neighborId];\n if (b.zoom <= zoom) continue;\n b.zoom = zoom;\n clusters.push(b);\n }\n }\n }\n }\n\n return clusters;\n }\n\n // get index of the point from which the cluster originated\n _getOriginId(clusterId) {\n return (clusterId - this.points.length) >> 5;\n }\n\n // get zoom of the point from which the cluster originated\n _getOriginZoom(clusterId) {\n return (clusterId - this.points.length) % 32;\n }\n\n _map(point, clone) {\n if (point.numPoints) {\n return clone ? extend({}, point.properties) : point.properties;\n }\n const original = this.points[point.index].properties;\n const result = this.options.map(original);\n return clone && result === original ? extend({}, result) : result;\n }\n}\n\nfunction createCluster(x, y, id, numPoints, properties) {\n return {\n x: fround(x), // weighted cluster center; round for consistency with Float32Array index\n y: fround(y),\n zoom: Infinity, // the last zoom the cluster was processed at\n id, // encodes index of the first child of the cluster and its zoom level\n parentId: -1, // parent cluster id\n numPoints,\n properties\n };\n}\n\nfunction createPointCluster(p, id) {\n const [x, y] = p.geometry.coordinates;\n return {\n x: fround(lngX(x)), // projected point coordinates\n y: fround(latY(y)),\n zoom: Infinity, // the last zoom the point was processed at\n index: id, // index of the source feature in the original input array,\n parentId: -1 // parent cluster id\n };\n}\n\nfunction getClusterJSON(cluster) {\n return {\n type: 'Feature',\n id: cluster.id,\n properties: getClusterProperties(cluster),\n geometry: {\n type: 'Point',\n coordinates: [xLng(cluster.x), yLat(cluster.y)]\n }\n };\n}\n\nfunction getClusterProperties(cluster) {\n const count = cluster.numPoints;\n const abbrev =\n count >= 10000 ? `${Math.round(count / 1000) }k` :\n count >= 1000 ? `${Math.round(count / 100) / 10 }k` : count;\n return extend(extend({}, cluster.properties), {\n cluster: true,\n cluster_id: cluster.id,\n point_count: count,\n point_count_abbreviated: abbrev\n });\n}\n\n// longitude/latitude to spherical mercator in [0..1] range\nfunction lngX(lng) {\n return lng / 360 + 0.5;\n}\nfunction latY(lat) {\n const sin = Math.sin(lat * Math.PI / 180);\n const y = (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI);\n return y < 0 ? 0 : y > 1 ? 1 : y;\n}\n\n// spherical mercator to longitude/latitude\nfunction xLng(x) {\n return (x - 0.5) * 360;\n}\nfunction yLat(y) {\n const y2 = (180 - y * 360) * Math.PI / 180;\n return 360 * Math.atan(Math.exp(y2)) / Math.PI - 90;\n}\n\nfunction extend(dest, src) {\n for (const id in src) dest[id] = src[id];\n return dest;\n}\n\nfunction getX(p) {\n return p.x;\n}\nfunction getY(p) {\n return p.y;\n}\n","\n// calculate simplification data using optimized Douglas-Peucker algorithm\n\nexport default function simplify(coords, first, last, sqTolerance) {\n var maxSqDist = sqTolerance;\n var mid = (last - first) >> 1;\n var minPosToMid = last - first;\n var index;\n\n var ax = coords[first];\n var ay = coords[first + 1];\n var bx = coords[last];\n var by = coords[last + 1];\n\n for (var i = first + 3; i < last; i += 3) {\n var d = getSqSegDist(coords[i], coords[i + 1], ax, ay, bx, by);\n\n if (d > maxSqDist) {\n index = i;\n maxSqDist = d;\n\n } else if (d === maxSqDist) {\n // a workaround to ensure we choose a pivot close to the middle of the list,\n // reducing recursion depth, for certain degenerate inputs\n // https://github.com/mapbox/geojson-vt/issues/104\n var posToMid = Math.abs(i - mid);\n if (posToMid < minPosToMid) {\n index = i;\n minPosToMid = posToMid;\n }\n }\n }\n\n if (maxSqDist > sqTolerance) {\n if (index - first > 3) simplify(coords, first, index, sqTolerance);\n coords[index + 2] = maxSqDist;\n if (last - index > 3) simplify(coords, index, last, sqTolerance);\n }\n}\n\n// square distance from a point to a segment\nfunction getSqSegDist(px, py, x, y, bx, by) {\n\n var dx = bx - x;\n var dy = by - y;\n\n if (dx !== 0 || dy !== 0) {\n\n var t = ((px - x) * dx + (py - y) * dy) / (dx * dx + dy * dy);\n\n if (t > 1) {\n x = bx;\n y = by;\n\n } else if (t > 0) {\n x += dx * t;\n y += dy * t;\n }\n }\n\n dx = px - x;\n dy = py - y;\n\n return dx * dx + dy * dy;\n}\n","\nexport default function createFeature(id, type, geom, tags) {\n var feature = {\n id: typeof id === 'undefined' ? null : id,\n type: type,\n geometry: geom,\n tags: tags,\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n };\n calcBBox(feature);\n return feature;\n}\n\nfunction calcBBox(feature) {\n var geom = feature.geometry;\n var type = feature.type;\n\n if (type === 'Point' || type === 'MultiPoint' || type === 'LineString') {\n calcLineBBox(feature, geom);\n\n } else if (type === 'Polygon' || type === 'MultiLineString') {\n for (var i = 0; i < geom.length; i++) {\n calcLineBBox(feature, geom[i]);\n }\n\n } else if (type === 'MultiPolygon') {\n for (i = 0; i < geom.length; i++) {\n for (var j = 0; j < geom[i].length; j++) {\n calcLineBBox(feature, geom[i][j]);\n }\n }\n }\n}\n\nfunction calcLineBBox(feature, geom) {\n for (var i = 0; i < geom.length; i += 3) {\n feature.minX = Math.min(feature.minX, geom[i]);\n feature.minY = Math.min(feature.minY, geom[i + 1]);\n feature.maxX = Math.max(feature.maxX, geom[i]);\n feature.maxY = Math.max(feature.maxY, geom[i + 1]);\n }\n}\n","\nimport simplify from './simplify';\nimport createFeature from './feature';\n\n// converts GeoJSON feature into an intermediate projected JSON vector format with simplification data\n\nexport default function convert(data, options) {\n var features = [];\n if (data.type === 'FeatureCollection') {\n for (var i = 0; i < data.features.length; i++) {\n convertFeature(features, data.features[i], options, i);\n }\n\n } else if (data.type === 'Feature') {\n convertFeature(features, data, options);\n\n } else {\n // single geometry or a geometry collection\n convertFeature(features, {geometry: data}, options);\n }\n\n return features;\n}\n\nfunction convertFeature(features, geojson, options, index) {\n if (!geojson.geometry) return;\n\n var coords = geojson.geometry.coordinates;\n var type = geojson.geometry.type;\n var tolerance = Math.pow(options.tolerance / ((1 << options.maxZoom) * options.extent), 2);\n var geometry = [];\n var id = geojson.id;\n if (options.promoteId) {\n id = geojson.properties[options.promoteId];\n } else if (options.generateId) {\n id = index || 0;\n }\n if (type === 'Point') {\n convertPoint(coords, geometry);\n\n } else if (type === 'MultiPoint') {\n for (var i = 0; i < coords.length; i++) {\n convertPoint(coords[i], geometry);\n }\n\n } else if (type === 'LineString') {\n convertLine(coords, geometry, tolerance, false);\n\n } else if (type === 'MultiLineString') {\n if (options.lineMetrics) {\n // explode into linestrings to be able to track metrics\n for (i = 0; i < coords.length; i++) {\n geometry = [];\n convertLine(coords[i], geometry, tolerance, false);\n features.push(createFeature(id, 'LineString', geometry, geojson.properties));\n }\n return;\n } else {\n convertLines(coords, geometry, tolerance, false);\n }\n\n } else if (type === 'Polygon') {\n convertLines(coords, geometry, tolerance, true);\n\n } else if (type === 'MultiPolygon') {\n for (i = 0; i < coords.length; i++) {\n var polygon = [];\n convertLines(coords[i], polygon, tolerance, true);\n geometry.push(polygon);\n }\n } else if (type === 'GeometryCollection') {\n for (i = 0; i < geojson.geometry.geometries.length; i++) {\n convertFeature(features, {\n id: id,\n geometry: geojson.geometry.geometries[i],\n properties: geojson.properties\n }, options, index);\n }\n return;\n } else {\n throw new Error('Input data is not a valid GeoJSON object.');\n }\n\n features.push(createFeature(id, type, geometry, geojson.properties));\n}\n\nfunction convertPoint(coords, out) {\n out.push(projectX(coords[0]));\n out.push(projectY(coords[1]));\n out.push(0);\n}\n\nfunction convertLine(ring, out, tolerance, isPolygon) {\n var x0, y0;\n var size = 0;\n\n for (var j = 0; j < ring.length; j++) {\n var x = projectX(ring[j][0]);\n var y = projectY(ring[j][1]);\n\n out.push(x);\n out.push(y);\n out.push(0);\n\n if (j > 0) {\n if (isPolygon) {\n size += (x0 * y - x * y0) / 2; // area\n } else {\n size += Math.sqrt(Math.pow(x - x0, 2) + Math.pow(y - y0, 2)); // length\n }\n }\n x0 = x;\n y0 = y;\n }\n\n var last = out.length - 3;\n out[2] = 1;\n simplify(out, 0, last, tolerance);\n out[last + 2] = 1;\n\n out.size = Math.abs(size);\n out.start = 0;\n out.end = out.size;\n}\n\nfunction convertLines(rings, out, tolerance, isPolygon) {\n for (var i = 0; i < rings.length; i++) {\n var geom = [];\n convertLine(rings[i], geom, tolerance, isPolygon);\n out.push(geom);\n }\n}\n\nfunction projectX(x) {\n return x / 360 + 0.5;\n}\n\nfunction projectY(y) {\n var sin = Math.sin(y * Math.PI / 180);\n var y2 = 0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI;\n return y2 < 0 ? 0 : y2 > 1 ? 1 : y2;\n}\n","\nimport createFeature from './feature';\n\n/* clip features between two axis-parallel lines:\n * | |\n * ___|___ | /\n * / | \\____|____/\n * | |\n */\n\nexport default function clip(features, scale, k1, k2, axis, minAll, maxAll, options) {\n\n k1 /= scale;\n k2 /= scale;\n\n if (minAll >= k1 && maxAll < k2) return features; // trivial accept\n else if (maxAll < k1 || minAll >= k2) return null; // trivial reject\n\n var clipped = [];\n\n for (var i = 0; i < features.length; i++) {\n\n var feature = features[i];\n var geometry = feature.geometry;\n var type = feature.type;\n\n var min = axis === 0 ? feature.minX : feature.minY;\n var max = axis === 0 ? feature.maxX : feature.maxY;\n\n if (min >= k1 && max < k2) { // trivial accept\n clipped.push(feature);\n continue;\n } else if (max < k1 || min >= k2) { // trivial reject\n continue;\n }\n\n var newGeometry = [];\n\n if (type === 'Point' || type === 'MultiPoint') {\n clipPoints(geometry, newGeometry, k1, k2, axis);\n\n } else if (type === 'LineString') {\n clipLine(geometry, newGeometry, k1, k2, axis, false, options.lineMetrics);\n\n } else if (type === 'MultiLineString') {\n clipLines(geometry, newGeometry, k1, k2, axis, false);\n\n } else if (type === 'Polygon') {\n clipLines(geometry, newGeometry, k1, k2, axis, true);\n\n } else if (type === 'MultiPolygon') {\n for (var j = 0; j < geometry.length; j++) {\n var polygon = [];\n clipLines(geometry[j], polygon, k1, k2, axis, true);\n if (polygon.length) {\n newGeometry.push(polygon);\n }\n }\n }\n\n if (newGeometry.length) {\n if (options.lineMetrics && type === 'LineString') {\n for (j = 0; j < newGeometry.length; j++) {\n clipped.push(createFeature(feature.id, type, newGeometry[j], feature.tags));\n }\n continue;\n }\n\n if (type === 'LineString' || type === 'MultiLineString') {\n if (newGeometry.length === 1) {\n type = 'LineString';\n newGeometry = newGeometry[0];\n } else {\n type = 'MultiLineString';\n }\n }\n if (type === 'Point' || type === 'MultiPoint') {\n type = newGeometry.length === 3 ? 'Point' : 'MultiPoint';\n }\n\n clipped.push(createFeature(feature.id, type, newGeometry, feature.tags));\n }\n }\n\n return clipped.length ? clipped : null;\n}\n\nfunction clipPoints(geom, newGeom, k1, k2, axis) {\n for (var i = 0; i < geom.length; i += 3) {\n var a = geom[i + axis];\n\n if (a >= k1 && a <= k2) {\n newGeom.push(geom[i]);\n newGeom.push(geom[i + 1]);\n newGeom.push(geom[i + 2]);\n }\n }\n}\n\nfunction clipLine(geom, newGeom, k1, k2, axis, isPolygon, trackMetrics) {\n\n var slice = newSlice(geom);\n var intersect = axis === 0 ? intersectX : intersectY;\n var len = geom.start;\n var segLen, t;\n\n for (var i = 0; i < geom.length - 3; i += 3) {\n var ax = geom[i];\n var ay = geom[i + 1];\n var az = geom[i + 2];\n var bx = geom[i + 3];\n var by = geom[i + 4];\n var a = axis === 0 ? ax : ay;\n var b = axis === 0 ? bx : by;\n var exited = false;\n\n if (trackMetrics) segLen = Math.sqrt(Math.pow(ax - bx, 2) + Math.pow(ay - by, 2));\n\n if (a < k1) {\n // ---|--> | (line enters the clip region from the left)\n if (b > k1) {\n t = intersect(slice, ax, ay, bx, by, k1);\n if (trackMetrics) slice.start = len + segLen * t;\n }\n } else if (a > k2) {\n // | <--|--- (line enters the clip region from the right)\n if (b < k2) {\n t = intersect(slice, ax, ay, bx, by, k2);\n if (trackMetrics) slice.start = len + segLen * t;\n }\n } else {\n addPoint(slice, ax, ay, az);\n }\n if (b < k1 && a >= k1) {\n // <--|--- | or <--|-----|--- (line exits the clip region on the left)\n t = intersect(slice, ax, ay, bx, by, k1);\n exited = true;\n }\n if (b > k2 && a <= k2) {\n // | ---|--> or ---|-----|--> (line exits the clip region on the right)\n t = intersect(slice, ax, ay, bx, by, k2);\n exited = true;\n }\n\n if (!isPolygon && exited) {\n if (trackMetrics) slice.end = len + segLen * t;\n newGeom.push(slice);\n slice = newSlice(geom);\n }\n\n if (trackMetrics) len += segLen;\n }\n\n // add the last point\n var last = geom.length - 3;\n ax = geom[last];\n ay = geom[last + 1];\n az = geom[last + 2];\n a = axis === 0 ? ax : ay;\n if (a >= k1 && a <= k2) addPoint(slice, ax, ay, az);\n\n // close the polygon if its endpoints are not the same after clipping\n last = slice.length - 3;\n if (isPolygon && last >= 3 && (slice[last] !== slice[0] || slice[last + 1] !== slice[1])) {\n addPoint(slice, slice[0], slice[1], slice[2]);\n }\n\n // add the final slice\n if (slice.length) {\n newGeom.push(slice);\n }\n}\n\nfunction newSlice(line) {\n var slice = [];\n slice.size = line.size;\n slice.start = line.start;\n slice.end = line.end;\n return slice;\n}\n\nfunction clipLines(geom, newGeom, k1, k2, axis, isPolygon) {\n for (var i = 0; i < geom.length; i++) {\n clipLine(geom[i], newGeom, k1, k2, axis, isPolygon, false);\n }\n}\n\nfunction addPoint(out, x, y, z) {\n out.push(x);\n out.push(y);\n out.push(z);\n}\n\nfunction intersectX(out, ax, ay, bx, by, x) {\n var t = (x - ax) / (bx - ax);\n out.push(x);\n out.push(ay + (by - ay) * t);\n out.push(1);\n return t;\n}\n\nfunction intersectY(out, ax, ay, bx, by, y) {\n var t = (y - ay) / (by - ay);\n out.push(ax + (bx - ax) * t);\n out.push(y);\n out.push(1);\n return t;\n}\n","\nimport clip from './clip';\nimport createFeature from './feature';\n\nexport default function wrap(features, options) {\n var buffer = options.buffer / options.extent;\n var merged = features;\n var left = clip(features, 1, -1 - buffer, buffer, 0, -1, 2, options); // left world copy\n var right = clip(features, 1, 1 - buffer, 2 + buffer, 0, -1, 2, options); // right world copy\n\n if (left || right) {\n merged = clip(features, 1, -buffer, 1 + buffer, 0, -1, 2, options) || []; // center world copy\n\n if (left) merged = shiftFeatureCoords(left, 1).concat(merged); // merge left into center\n if (right) merged = merged.concat(shiftFeatureCoords(right, -1)); // merge right into center\n }\n\n return merged;\n}\n\nfunction shiftFeatureCoords(features, offset) {\n var newFeatures = [];\n\n for (var i = 0; i < features.length; i++) {\n var feature = features[i],\n type = feature.type;\n\n var newGeometry;\n\n if (type === 'Point' || type === 'MultiPoint' || type === 'LineString') {\n newGeometry = shiftCoords(feature.geometry, offset);\n\n } else if (type === 'MultiLineString' || type === 'Polygon') {\n newGeometry = [];\n for (var j = 0; j < feature.geometry.length; j++) {\n newGeometry.push(shiftCoords(feature.geometry[j], offset));\n }\n } else if (type === 'MultiPolygon') {\n newGeometry = [];\n for (j = 0; j < feature.geometry.length; j++) {\n var newPolygon = [];\n for (var k = 0; k < feature.geometry[j].length; k++) {\n newPolygon.push(shiftCoords(feature.geometry[j][k], offset));\n }\n newGeometry.push(newPolygon);\n }\n }\n\n newFeatures.push(createFeature(feature.id, type, newGeometry, feature.tags));\n }\n\n return newFeatures;\n}\n\nfunction shiftCoords(points, offset) {\n var newPoints = [];\n newPoints.size = points.size;\n\n if (points.start !== undefined) {\n newPoints.start = points.start;\n newPoints.end = points.end;\n }\n\n for (var i = 0; i < points.length; i += 3) {\n newPoints.push(points[i] + offset, points[i + 1], points[i + 2]);\n }\n return newPoints;\n}\n","\n// Transforms the coordinates of each feature in the given tile from\n// mercator-projected space into (extent x extent) tile space.\nexport default function transformTile(tile, extent) {\n if (tile.transformed) return tile;\n\n var z2 = 1 << tile.z,\n tx = tile.x,\n ty = tile.y,\n i, j, k;\n\n for (i = 0; i < tile.features.length; i++) {\n var feature = tile.features[i],\n geom = feature.geometry,\n type = feature.type;\n\n feature.geometry = [];\n\n if (type === 1) {\n for (j = 0; j < geom.length; j += 2) {\n feature.geometry.push(transformPoint(geom[j], geom[j + 1], extent, z2, tx, ty));\n }\n } else {\n for (j = 0; j < geom.length; j++) {\n var ring = [];\n for (k = 0; k < geom[j].length; k += 2) {\n ring.push(transformPoint(geom[j][k], geom[j][k + 1], extent, z2, tx, ty));\n }\n feature.geometry.push(ring);\n }\n }\n }\n\n tile.transformed = true;\n\n return tile;\n}\n\nfunction transformPoint(x, y, extent, z2, tx, ty) {\n return [\n Math.round(extent * (x * z2 - tx)),\n Math.round(extent * (y * z2 - ty))];\n}\n","\nexport default function createTile(features, z, tx, ty, options) {\n var tolerance = z === options.maxZoom ? 0 : options.tolerance / ((1 << z) * options.extent);\n var tile = {\n features: [],\n numPoints: 0,\n numSimplified: 0,\n numFeatures: 0,\n source: null,\n x: tx,\n y: ty,\n z: z,\n transformed: false,\n minX: 2,\n minY: 1,\n maxX: -1,\n maxY: 0\n };\n for (var i = 0; i < features.length; i++) {\n tile.numFeatures++;\n addFeature(tile, features[i], tolerance, options);\n\n var minX = features[i].minX;\n var minY = features[i].minY;\n var maxX = features[i].maxX;\n var maxY = features[i].maxY;\n\n if (minX < tile.minX) tile.minX = minX;\n if (minY < tile.minY) tile.minY = minY;\n if (maxX > tile.maxX) tile.maxX = maxX;\n if (maxY > tile.maxY) tile.maxY = maxY;\n }\n return tile;\n}\n\nfunction addFeature(tile, feature, tolerance, options) {\n\n var geom = feature.geometry,\n type = feature.type,\n simplified = [];\n\n if (type === 'Point' || type === 'MultiPoint') {\n for (var i = 0; i < geom.length; i += 3) {\n simplified.push(geom[i]);\n simplified.push(geom[i + 1]);\n tile.numPoints++;\n tile.numSimplified++;\n }\n\n } else if (type === 'LineString') {\n addLine(simplified, geom, tile, tolerance, false, false);\n\n } else if (type === 'MultiLineString' || type === 'Polygon') {\n for (i = 0; i < geom.length; i++) {\n addLine(simplified, geom[i], tile, tolerance, type === 'Polygon', i === 0);\n }\n\n } else if (type === 'MultiPolygon') {\n\n for (var k = 0; k < geom.length; k++) {\n var polygon = geom[k];\n for (i = 0; i < polygon.length; i++) {\n addLine(simplified, polygon[i], tile, tolerance, true, i === 0);\n }\n }\n }\n\n if (simplified.length) {\n var tags = feature.tags || null;\n if (type === 'LineString' && options.lineMetrics) {\n tags = {};\n for (var key in feature.tags) tags[key] = feature.tags[key];\n tags['mapbox_clip_start'] = geom.start / geom.size;\n tags['mapbox_clip_end'] = geom.end / geom.size;\n }\n var tileFeature = {\n geometry: simplified,\n type: type === 'Polygon' || type === 'MultiPolygon' ? 3 :\n type === 'LineString' || type === 'MultiLineString' ? 2 : 1,\n tags: tags\n };\n if (feature.id !== null) {\n tileFeature.id = feature.id;\n }\n tile.features.push(tileFeature);\n }\n}\n\nfunction addLine(result, geom, tile, tolerance, isPolygon, isOuter) {\n var sqTolerance = tolerance * tolerance;\n\n if (tolerance > 0 && (geom.size < (isPolygon ? sqTolerance : tolerance))) {\n tile.numPoints += geom.length / 3;\n return;\n }\n\n var ring = [];\n\n for (var i = 0; i < geom.length; i += 3) {\n if (tolerance === 0 || geom[i + 2] > sqTolerance) {\n tile.numSimplified++;\n ring.push(geom[i]);\n ring.push(geom[i + 1]);\n }\n tile.numPoints++;\n }\n\n if (isPolygon) rewind(ring, isOuter);\n\n result.push(ring);\n}\n\nfunction rewind(ring, clockwise) {\n var area = 0;\n for (var i = 0, len = ring.length, j = len - 2; i < len; j = i, i += 2) {\n area += (ring[i] - ring[j]) * (ring[i + 1] + ring[j + 1]);\n }\n if (area > 0 === clockwise) {\n for (i = 0, len = ring.length; i < len / 2; i += 2) {\n var x = ring[i];\n var y = ring[i + 1];\n ring[i] = ring[len - 2 - i];\n ring[i + 1] = ring[len - 1 - i];\n ring[len - 2 - i] = x;\n ring[len - 1 - i] = y;\n }\n }\n}\n","\nimport convert from './convert'; // GeoJSON conversion and preprocessing\nimport clip from './clip'; // stripe clipping algorithm\nimport wrap from './wrap'; // date line processing\nimport transform from './transform'; // coordinate transformation\nimport createTile from './tile'; // final simplified tile generation\n\nexport default function geojsonvt(data, options) {\n return new GeoJSONVT(data, options);\n}\n\nfunction GeoJSONVT(data, options) {\n options = this.options = extend(Object.create(this.options), options);\n\n var debug = options.debug;\n\n if (debug) console.time('preprocess data');\n\n if (options.maxZoom < 0 || options.maxZoom > 24) throw new Error('maxZoom should be in the 0-24 range');\n if (options.promoteId && options.generateId) throw new Error('promoteId and generateId cannot be used together.');\n\n var features = convert(data, options);\n\n this.tiles = {};\n this.tileCoords = [];\n\n if (debug) {\n console.timeEnd('preprocess data');\n console.log('index: maxZoom: %d, maxPoints: %d', options.indexMaxZoom, options.indexMaxPoints);\n console.time('generate tiles');\n this.stats = {};\n this.total = 0;\n }\n\n features = wrap(features, options);\n\n // start slicing from the top tile down\n if (features.length) this.splitTile(features, 0, 0, 0);\n\n if (debug) {\n if (features.length) console.log('features: %d, points: %d', this.tiles[0].numFeatures, this.tiles[0].numPoints);\n console.timeEnd('generate tiles');\n console.log('tiles generated:', this.total, JSON.stringify(this.stats));\n }\n}\n\nGeoJSONVT.prototype.options = {\n maxZoom: 14, // max zoom to preserve detail on\n indexMaxZoom: 5, // max zoom in the tile index\n indexMaxPoints: 100000, // max number of points per tile in the tile index\n tolerance: 3, // simplification tolerance (higher means simpler)\n extent: 4096, // tile extent\n buffer: 64, // tile buffer on each side\n lineMetrics: false, // whether to calculate line metrics\n promoteId: null, // name of a feature property to be promoted to feature.id\n generateId: false, // whether to generate feature ids. Cannot be used with promoteId\n debug: 0 // logging level (0, 1 or 2)\n};\n\nGeoJSONVT.prototype.splitTile = function (features, z, x, y, cz, cx, cy) {\n\n var stack = [features, z, x, y],\n options = this.options,\n debug = options.debug;\n\n // avoid recursion by using a processing queue\n while (stack.length) {\n y = stack.pop();\n x = stack.pop();\n z = stack.pop();\n features = stack.pop();\n\n var z2 = 1 << z,\n id = toID(z, x, y),\n tile = this.tiles[id];\n\n if (!tile) {\n if (debug > 1) console.time('creation');\n\n tile = this.tiles[id] = createTile(features, z, x, y, options);\n this.tileCoords.push({z: z, x: x, y: y});\n\n if (debug) {\n if (debug > 1) {\n console.log('tile z%d-%d-%d (features: %d, points: %d, simplified: %d)',\n z, x, y, tile.numFeatures, tile.numPoints, tile.numSimplified);\n console.timeEnd('creation');\n }\n var key = 'z' + z;\n this.stats[key] = (this.stats[key] || 0) + 1;\n this.total++;\n }\n }\n\n // save reference to original geometry in tile so that we can drill down later if we stop now\n tile.source = features;\n\n // if it's the first-pass tiling\n if (!cz) {\n // stop tiling if we reached max zoom, or if the tile is too simple\n if (z === options.indexMaxZoom || tile.numPoints <= options.indexMaxPoints) continue;\n\n // if a drilldown to a specific tile\n } else {\n // stop tiling if we reached base zoom or our target tile zoom\n if (z === options.maxZoom || z === cz) continue;\n\n // stop tiling if it's not an ancestor of the target tile\n var m = 1 << (cz - z);\n if (x !== Math.floor(cx / m) || y !== Math.floor(cy / m)) continue;\n }\n\n // if we slice further down, no need to keep source geometry\n tile.source = null;\n\n if (features.length === 0) continue;\n\n if (debug > 1) console.time('clipping');\n\n // values we'll use for clipping\n var k1 = 0.5 * options.buffer / options.extent,\n k2 = 0.5 - k1,\n k3 = 0.5 + k1,\n k4 = 1 + k1,\n tl, bl, tr, br, left, right;\n\n tl = bl = tr = br = null;\n\n left = clip(features, z2, x - k1, x + k3, 0, tile.minX, tile.maxX, options);\n right = clip(features, z2, x + k2, x + k4, 0, tile.minX, tile.maxX, options);\n features = null;\n\n if (left) {\n tl = clip(left, z2, y - k1, y + k3, 1, tile.minY, tile.maxY, options);\n bl = clip(left, z2, y + k2, y + k4, 1, tile.minY, tile.maxY, options);\n left = null;\n }\n\n if (right) {\n tr = clip(right, z2, y - k1, y + k3, 1, tile.minY, tile.maxY, options);\n br = clip(right, z2, y + k2, y + k4, 1, tile.minY, tile.maxY, options);\n right = null;\n }\n\n if (debug > 1) console.timeEnd('clipping');\n\n stack.push(tl || [], z + 1, x * 2, y * 2);\n stack.push(bl || [], z + 1, x * 2, y * 2 + 1);\n stack.push(tr || [], z + 1, x * 2 + 1, y * 2);\n stack.push(br || [], z + 1, x * 2 + 1, y * 2 + 1);\n }\n};\n\nGeoJSONVT.prototype.getTile = function (z, x, y) {\n var options = this.options,\n extent = options.extent,\n debug = options.debug;\n\n if (z < 0 || z > 24) return null;\n\n var z2 = 1 << z;\n x = ((x % z2) + z2) % z2; // wrap tile x coordinate\n\n var id = toID(z, x, y);\n if (this.tiles[id]) return transform(this.tiles[id], extent);\n\n if (debug > 1) console.log('drilling down to z%d-%d-%d', z, x, y);\n\n var z0 = z,\n x0 = x,\n y0 = y,\n parent;\n\n while (!parent && z0 > 0) {\n z0--;\n x0 = Math.floor(x0 / 2);\n y0 = Math.floor(y0 / 2);\n parent = this.tiles[toID(z0, x0, y0)];\n }\n\n if (!parent || !parent.source) return null;\n\n // if we found a parent tile containing the original geometry, we can drill down from it\n if (debug > 1) console.log('found parent tile z%d-%d-%d', z0, x0, y0);\n\n if (debug > 1) console.time('drilling down');\n this.splitTile(parent.source, z0, x0, y0, z, x, y);\n if (debug > 1) console.timeEnd('drilling down');\n\n return this.tiles[id] ? transform(this.tiles[id], extent) : null;\n};\n\nfunction toID(z, x, y) {\n return (((1 << z) * y + x) * 32) + z;\n}\n\nfunction extend(dest, src) {\n for (var i in src) dest[i] = src[i];\n return dest;\n}\n","// @flow\n\nimport {getJSON} from '../util/ajax.js';\n\nimport {getPerformanceMeasurement} from '../util/performance.js';\nimport rewind from '@mapbox/geojson-rewind';\nimport GeoJSONWrapper from './geojson_wrapper.js';\nimport vtpbf from 'vt-pbf';\nimport Supercluster from 'supercluster';\nimport geojsonvt from 'geojson-vt';\nimport assert from 'assert';\nimport VectorTileWorkerSource from './vector_tile_worker_source.js';\nimport {createExpression} from '../style-spec/expression/index.js';\n\nimport type {\n RequestedTileParameters,\n WorkerTileParameters,\n WorkerTileCallback,\n} from '../source/worker_source.js';\n\nimport type Actor from '../util/actor.js';\nimport type StyleLayerIndex from '../style/style_layer_index.js';\n\nimport type {LoadVectorDataCallback} from './vector_tile_worker_source.js';\nimport type {RequestParameters, ResponseCallback} from '../util/ajax.js';\nimport type {Callback} from '../types/callback.js';\nimport type {GeoJSONFeature} from '@mapbox/geojson-types';\n\nexport type GeoJSONWorkerOptions = {\n source: string,\n cluster: boolean,\n superclusterOptions?: Object,\n geojsonVtOptions?: Object,\n clusterProperties?: Object,\n filter?: Array<mixed>\n};\n\nexport type LoadGeoJSONParameters = GeoJSONWorkerOptions & {\n request?: RequestParameters,\n data?: string\n};\n\nexport type LoadGeoJSON = (params: LoadGeoJSONParameters, callback: ResponseCallback<Object>) => void;\n\nexport interface GeoJSONIndex {\n getTile(z: number, x: number, y: number): Object;\n\n // supercluster methods\n getClusterExpansionZoom(clusterId: number): number;\n getChildren(clusterId: number): Array<GeoJSONFeature>;\n getLeaves(clusterId: number, limit: number, offset: number): Array<GeoJSONFeature>;\n}\n\nfunction loadGeoJSONTile(params: RequestedTileParameters, callback: LoadVectorDataCallback) {\n const canonical = params.tileID.canonical;\n\n if (!this._geoJSONIndex) {\n return callback(null, null); // we couldn't load the file\n }\n\n const geoJSONTile = this._geoJSONIndex.getTile(canonical.z, canonical.x, canonical.y);\n if (!geoJSONTile) {\n return callback(null, null); // nothing in the given tile\n }\n\n const geojsonWrapper = new GeoJSONWrapper(geoJSONTile.features);\n\n // Encode the geojson-vt tile into binary vector tile form. This\n // is a convenience that allows `FeatureIndex` to operate the same way\n // across `VectorTileSource` and `GeoJSONSource` data.\n let pbf = vtpbf(geojsonWrapper);\n if (pbf.byteOffset !== 0 || pbf.byteLength !== pbf.buffer.byteLength) {\n // Compatibility with node Buffer (https://github.com/mapbox/pbf/issues/35)\n pbf = new Uint8Array(pbf);\n }\n\n callback(null, {\n vectorTile: geojsonWrapper,\n rawData: pbf.buffer\n });\n}\n\n/**\n * The {@link WorkerSource} implementation that supports {@link GeoJSONSource}.\n * This class is designed to be easily reused to support custom source types\n * for data formats that can be parsed/converted into an in-memory GeoJSON\n * representation. To do so, create it with\n * `new GeoJSONWorkerSource(actor, layerIndex, customLoadGeoJSONFunction)`.\n * For a full example, see [mapbox-gl-topojson](https://github.com/developmentseed/mapbox-gl-topojson).\n *\n * @private\n */\nclass GeoJSONWorkerSource extends VectorTileWorkerSource {\n loadGeoJSON: LoadGeoJSON;\n _geoJSONIndex: GeoJSONIndex\n\n /**\n * @param [loadGeoJSON] Optional method for custom loading/parsing of\n * GeoJSON based on parameters passed from the main-thread Source.\n * See {@link GeoJSONWorkerSource#loadGeoJSON}.\n * @private\n */\n constructor(actor: Actor, layerIndex: StyleLayerIndex, availableImages: Array<string>, isSpriteLoaded: boolean, loadGeoJSON: ?LoadGeoJSON) {\n super(actor, layerIndex, availableImages, isSpriteLoaded, loadGeoJSONTile);\n if (loadGeoJSON) {\n this.loadGeoJSON = loadGeoJSON;\n }\n }\n\n /**\n * Fetches (if appropriate), parses, and index geojson data into tiles. This\n * preparatory method must be called before {@link GeoJSONWorkerSource#loadTile}\n * can correctly serve up tiles.\n *\n * Defers to {@link GeoJSONWorkerSource#loadGeoJSON} for the fetching/parsing,\n * expecting `callback(error, data)` to be called with either an error or a\n * parsed GeoJSON object.\n *\n * When `loadData` requests come in faster than they can be processed,\n * they are coalesced into a single request using the latest data.\n * See {@link GeoJSONWorkerSource#coalesce}\n *\n * @param params\n * @param callback\n * @private\n */\n loadData(params: LoadGeoJSONParameters, callback: Callback<{resourceTiming?: {[_: string]: Array<PerformanceResourceTiming>}}>) {\n const requestParam = params && params.request;\n const perf = requestParam && requestParam.collectResourceTiming;\n\n this.loadGeoJSON(params, (err: ?Error, data: ?Object) => {\n if (err || !data) {\n return callback(err);\n } else if (typeof data !== 'object') {\n return callback(new Error(`Input data given to '${params.source}' is not a valid GeoJSON object.`));\n } else {\n rewind(data, true);\n\n try {\n if (params.filter) {\n const compiled = createExpression(params.filter, {type: 'boolean', 'property-type': 'data-driven', overridable: false, transition: false});\n if (compiled.result === 'error')\n throw new Error(compiled.value.map(err => `${err.key}: ${err.message}`).join(', '));\n\n const features = data.features.filter(feature => compiled.value.evaluate({zoom: 0}, feature));\n data = {type: 'FeatureCollection', features};\n }\n\n this._geoJSONIndex = params.cluster ?\n new Supercluster(getSuperclusterOptions(params)).load(data.features) :\n geojsonvt(data, params.geojsonVtOptions);\n } catch (err) {\n return callback(err);\n }\n\n this.loaded = {};\n\n const result = {};\n if (perf) {\n const resourceTimingData = getPerformanceMeasurement(requestParam);\n // it's necessary to eval the result of getEntriesByName() here via parse/stringify\n // late evaluation in the main thread causes TypeError: illegal invocation\n if (resourceTimingData) {\n result.resourceTiming = {};\n result.resourceTiming[params.source] = JSON.parse(JSON.stringify(resourceTimingData));\n }\n }\n callback(null, result);\n }\n });\n }\n\n /**\n * Implements {@link WorkerSource#reloadTile}.\n *\n * If the tile is loaded, uses the implementation in VectorTileWorkerSource.\n * Otherwise, such as after a setData() call, we load the tile fresh.\n *\n * @param params\n * @param params.uid The UID for this tile.\n * @private\n */\n reloadTile(params: WorkerTileParameters, callback: WorkerTileCallback): void {\n const loaded = this.loaded,\n uid = params.uid;\n\n if (loaded && loaded[uid]) {\n return super.reloadTile(params, callback);\n } else {\n return this.loadTile(params, callback);\n }\n }\n\n /**\n * Fetch and parse GeoJSON according to the given params. Calls `callback`\n * with `(err, data)`, where `data` is a parsed GeoJSON object.\n *\n * GeoJSON is loaded and parsed from `params.url` if it exists, or else\n * expected as a literal (string or object) `params.data`.\n *\n * @param params\n * @param [params.url] A URL to the remote GeoJSON data.\n * @param [params.data] Literal GeoJSON data. Must be provided if `params.url` is not.\n * @private\n */\n loadGeoJSON(params: LoadGeoJSONParameters, callback: ResponseCallback<Object>): void {\n // Because of same origin issues, urls must either include an explicit\n // origin or absolute path.\n // ie: /foo/bar.json or http://example.com/bar.json\n // but not ../foo/bar.json\n if (params.request) {\n getJSON(params.request, callback);\n } else if (typeof params.data === 'string') {\n try {\n return callback(null, JSON.parse(params.data));\n } catch (e) {\n return callback(new Error(`Input data given to '${params.source}' is not a valid GeoJSON object.`));\n }\n } else {\n return callback(new Error(`Input data given to '${params.source}' is not a valid GeoJSON object.`));\n }\n }\n\n getClusterExpansionZoom(params: {clusterId: number}, callback: Callback<number>) {\n try {\n callback(null, this._geoJSONIndex.getClusterExpansionZoom(params.clusterId));\n } catch (e) {\n callback(e);\n }\n }\n\n getClusterChildren(params: {clusterId: number}, callback: Callback<Array<GeoJSONFeature>>) {\n try {\n callback(null, this._geoJSONIndex.getChildren(params.clusterId));\n } catch (e) {\n callback(e);\n }\n }\n\n getClusterLeaves(params: {clusterId: number, limit: number, offset: number}, callback: Callback<Array<GeoJSONFeature>>) {\n try {\n callback(null, this._geoJSONIndex.getLeaves(params.clusterId, params.limit, params.offset));\n } catch (e) {\n callback(e);\n }\n }\n}\n\nfunction getSuperclusterOptions({superclusterOptions, clusterProperties}) {\n if (!clusterProperties || !superclusterOptions) return superclusterOptions;\n\n const mapExpressions = {};\n const reduceExpressions = {};\n const globals = {accumulated: null, zoom: 0};\n const feature = {properties: null};\n const propertyNames = Object.keys(clusterProperties);\n\n for (const key of propertyNames) {\n const [operator, mapExpression] = clusterProperties[key];\n\n const mapExpressionParsed = createExpression(mapExpression);\n const reduceExpressionParsed = createExpression(\n typeof operator === 'string' ? [operator, ['accumulated'], ['get', key]] : operator);\n\n assert(mapExpressionParsed.result === 'success');\n assert(reduceExpressionParsed.result === 'success');\n\n mapExpressions[key] = mapExpressionParsed.value;\n reduceExpressions[key] = reduceExpressionParsed.value;\n }\n\n superclusterOptions.map = (pointProperties) => {\n feature.properties = pointProperties;\n const properties = {};\n for (const key of propertyNames) {\n properties[key] = mapExpressions[key].evaluate(globals, feature);\n }\n return properties;\n };\n superclusterOptions.reduce = (accumulated, clusterProperties) => {\n feature.properties = clusterProperties;\n for (const key of propertyNames) {\n globals.accumulated = accumulated[key];\n accumulated[key] = reduceExpressions[key].evaluate(globals, feature);\n }\n };\n\n return superclusterOptions;\n}\n\nexport default GeoJSONWorkerSource;\n","// @flow\n\nimport Actor from '../util/actor.js';\n\nimport StyleLayerIndex from '../style/style_layer_index.js';\nimport VectorTileWorkerSource from './vector_tile_worker_source.js';\nimport RasterDEMTileWorkerSource from './raster_dem_tile_worker_source.js';\nimport GeoJSONWorkerSource from './geojson_worker_source.js';\nimport assert from 'assert';\nimport {plugin as globalRTLTextPlugin} from './rtl_text_plugin.js';\nimport {enforceCacheSizeLimit} from '../util/tile_request_cache.js';\nimport {extend} from '../util/util.js';\nimport {PerformanceUtils} from '../util/performance.js';\nimport {Event} from '../util/evented.js';\nimport {getProjection} from '../geo/projection/index.js';\n\nimport type {\n WorkerSource,\n WorkerTileParameters,\n WorkerDEMTileParameters,\n WorkerTileCallback,\n WorkerDEMTileCallback,\n TileParameters\n} from '../source/worker_source.js';\n\nimport type {WorkerGlobalScopeInterface} from '../util/web_worker.js';\nimport type {Callback} from '../types/callback.js';\nimport type {LayerSpecification, ProjectionSpecification} from '../style-spec/types.js';\nimport type {PluginState} from './rtl_text_plugin.js';\nimport type Projection from '../geo/projection/projection.js';\n\n/**\n * @private\n */\nexport default class Worker {\n self: WorkerGlobalScopeInterface;\n actor: Actor;\n layerIndexes: {[_: string]: StyleLayerIndex };\n availableImages: {[_: string]: Array<string> };\n workerSourceTypes: {[_: string]: Class<WorkerSource> };\n workerSources: {[_: string]: {[_: string]: {[_: string]: WorkerSource } } };\n demWorkerSources: {[_: string]: {[_: string]: RasterDEMTileWorkerSource } };\n projections: {[_: string]: Projection };\n defaultProjection: Projection;\n isSpriteLoaded: {[_: string]: boolean };\n referrer: ?string;\n terrain: ?boolean;\n\n constructor(self: WorkerGlobalScopeInterface) {\n PerformanceUtils.measure('workerEvaluateScript');\n this.self = self;\n this.actor = new Actor(self, this);\n\n this.layerIndexes = {};\n this.availableImages = {};\n this.isSpriteLoaded = {};\n\n this.projections = {};\n this.defaultProjection = getProjection({name: 'mercator'});\n\n this.workerSourceTypes = {\n vector: VectorTileWorkerSource,\n geojson: GeoJSONWorkerSource\n };\n\n // [mapId][sourceType][sourceName] => worker source instance\n this.workerSources = {};\n this.demWorkerSources = {};\n\n this.self.registerWorkerSource = (name: string, WorkerSource: Class<WorkerSource>) => {\n if (this.workerSourceTypes[name]) {\n throw new Error(`Worker source with name \"${name}\" already registered.`);\n }\n this.workerSourceTypes[name] = WorkerSource;\n };\n\n // This is invoked by the RTL text plugin when the download via the `importScripts` call has finished, and the code has been parsed.\n this.self.registerRTLTextPlugin = (rtlTextPlugin: {applyArabicShaping: Function, processBidirectionalText: Function, processStyledBidirectionalText?: Function}) => {\n if (globalRTLTextPlugin.isParsed()) {\n throw new Error('RTL text plugin already registered.');\n }\n globalRTLTextPlugin['applyArabicShaping'] = rtlTextPlugin.applyArabicShaping;\n globalRTLTextPlugin['processBidirectionalText'] = rtlTextPlugin.processBidirectionalText;\n globalRTLTextPlugin['processStyledBidirectionalText'] = rtlTextPlugin.processStyledBidirectionalText;\n };\n }\n\n clearCaches(mapId: string, unused: mixed, callback: WorkerTileCallback) {\n delete this.layerIndexes[mapId];\n delete this.availableImages[mapId];\n delete this.workerSources[mapId];\n delete this.demWorkerSources[mapId];\n callback();\n }\n\n checkIfReady(mapID: string, unused: mixed, callback: WorkerTileCallback) {\n // noop, used to check if a worker is fully set up and ready to receive messages\n callback();\n }\n\n setReferrer(mapID: string, referrer: string) {\n this.referrer = referrer;\n }\n\n spriteLoaded(mapId: string, bool: boolean) {\n this.isSpriteLoaded[mapId] = bool;\n for (const workerSource in this.workerSources[mapId]) {\n const ws = this.workerSources[mapId][workerSource];\n for (const source in ws) {\n if (ws[source] instanceof VectorTileWorkerSource) {\n ws[source].isSpriteLoaded = bool;\n ws[source].fire(new Event('isSpriteLoaded'));\n }\n }\n }\n }\n\n setImages(mapId: string, images: Array<string>, callback: WorkerTileCallback) {\n this.availableImages[mapId] = images;\n for (const workerSource in this.workerSources[mapId]) {\n const ws = this.workerSources[mapId][workerSource];\n for (const source in ws) {\n ws[source].availableImages = images;\n }\n }\n callback();\n }\n\n enableTerrain(mapId: string, enable: boolean, callback: WorkerTileCallback) {\n this.terrain = enable;\n callback();\n }\n\n setProjection(mapId: string, config: ProjectionSpecification) {\n this.projections[mapId] = getProjection(config);\n }\n\n setLayers(mapId: string, layers: Array<LayerSpecification>, callback: WorkerTileCallback) {\n this.getLayerIndex(mapId).replace(layers);\n callback();\n }\n\n updateLayers(mapId: string, params: {layers: Array<LayerSpecification>, removedIds: Array<string>}, callback: WorkerTileCallback) {\n this.getLayerIndex(mapId).update(params.layers, params.removedIds);\n callback();\n }\n\n loadTile(mapId: string, params: WorkerTileParameters & {type: string}, callback: WorkerTileCallback) {\n assert(params.type);\n const p = this.enableTerrain ? extend({enableTerrain: this.terrain}, params) : params;\n p.projection = this.projections[mapId] || this.defaultProjection;\n this.getWorkerSource(mapId, params.type, params.source).loadTile(p, callback);\n }\n\n loadDEMTile(mapId: string, params: WorkerDEMTileParameters, callback: WorkerDEMTileCallback) {\n const p = this.enableTerrain ? extend({buildQuadTree: this.terrain}, params) : params;\n this.getDEMWorkerSource(mapId, params.source).loadTile(p, callback);\n }\n\n reloadTile(mapId: string, params: WorkerTileParameters & {type: string}, callback: WorkerTileCallback) {\n assert(params.type);\n const p = this.enableTerrain ? extend({enableTerrain: this.terrain}, params) : params;\n p.projection = this.projections[mapId] || this.defaultProjection;\n this.getWorkerSource(mapId, params.type, params.source).reloadTile(p, callback);\n }\n\n abortTile(mapId: string, params: TileParameters & {type: string}, callback: WorkerTileCallback) {\n assert(params.type);\n this.getWorkerSource(mapId, params.type, params.source).abortTile(params, callback);\n }\n\n removeTile(mapId: string, params: TileParameters & {type: string}, callback: WorkerTileCallback) {\n assert(params.type);\n this.getWorkerSource(mapId, params.type, params.source).removeTile(params, callback);\n }\n\n removeSource(mapId: string, params: {source: string} & {type: string}, callback: WorkerTileCallback) {\n assert(params.type);\n assert(params.source);\n\n if (!this.workerSources[mapId] ||\n !this.workerSources[mapId][params.type] ||\n !this.workerSources[mapId][params.type][params.source]) {\n return;\n }\n\n const worker = this.workerSources[mapId][params.type][params.source];\n delete this.workerSources[mapId][params.type][params.source];\n\n if (worker.removeSource !== undefined) {\n worker.removeSource(params, callback);\n } else {\n callback();\n }\n }\n\n /**\n * Load a {@link WorkerSource} script at params.url. The script is run\n * (using importScripts) with `registerWorkerSource` in scope, which is a\n * function taking `(name, workerSourceObject)`.\n * @private\n */\n loadWorkerSource(map: string, params: { url: string }, callback: Callback<void>) {\n try {\n this.self.importScripts(params.url);\n callback();\n } catch (e) {\n callback(e.toString());\n }\n }\n\n syncRTLPluginState(map: string, state: PluginState, callback: Callback<boolean>) {\n try {\n globalRTLTextPlugin.setState(state);\n const pluginURL = globalRTLTextPlugin.getPluginURL();\n if (\n globalRTLTextPlugin.isLoaded() &&\n !globalRTLTextPlugin.isParsed() &&\n pluginURL != null // Not possible when `isLoaded` is true, but keeps flow happy\n ) {\n this.self.importScripts(pluginURL);\n const complete = globalRTLTextPlugin.isParsed();\n const error = complete ? undefined : new Error(`RTL Text Plugin failed to import scripts from ${pluginURL}`);\n callback(error, complete);\n }\n } catch (e) {\n callback(e.toString());\n }\n }\n\n getAvailableImages(mapId: string): Array<string> {\n let availableImages = this.availableImages[mapId];\n\n if (!availableImages) {\n availableImages = [];\n }\n\n return availableImages;\n }\n\n getLayerIndex(mapId: string): StyleLayerIndex {\n let layerIndexes = this.layerIndexes[mapId];\n if (!layerIndexes) {\n layerIndexes = this.layerIndexes[mapId] = new StyleLayerIndex();\n }\n return layerIndexes;\n }\n\n getWorkerSource(mapId: string, type: string, source: string): WorkerSource {\n if (!this.workerSources[mapId])\n this.workerSources[mapId] = {};\n if (!this.workerSources[mapId][type])\n this.workerSources[mapId][type] = {};\n\n if (!this.workerSources[mapId][type][source]) {\n // use a wrapped actor so that we can attach a target mapId param\n // to any messages invoked by the WorkerSource\n const actor = {\n send: (type, data, callback, _, mustQueue, metadata) => {\n this.actor.send(type, data, callback, mapId, mustQueue, metadata);\n },\n scheduler: this.actor.scheduler\n };\n this.workerSources[mapId][type][source] = new (this.workerSourceTypes[type]: any)((actor: any), this.getLayerIndex(mapId), this.getAvailableImages(mapId), this.isSpriteLoaded[mapId]);\n }\n\n return this.workerSources[mapId][type][source];\n }\n\n getDEMWorkerSource(mapId: string, source: string): RasterDEMTileWorkerSource {\n if (!this.demWorkerSources[mapId])\n this.demWorkerSources[mapId] = {};\n\n if (!this.demWorkerSources[mapId][source]) {\n this.demWorkerSources[mapId][source] = new RasterDEMTileWorkerSource();\n }\n\n return this.demWorkerSources[mapId][source];\n }\n\n enforceCacheSizeLimit(mapId: string, limit: number) {\n enforceCacheSizeLimit(limit);\n }\n\n getWorkerPerformanceMetrics(mapId: string, params: any, callback: (error: ?Error, result: ?Object) => void) {\n callback(undefined, PerformanceUtils.getWorkerPerformanceMetrics());\n }\n}\n\n/* global self, WorkerGlobalScope */\nif (typeof WorkerGlobalScope !== 'undefined' &&\n typeof self !== 'undefined' &&\n self instanceof WorkerGlobalScope) {\n self.worker = new Worker(self);\n}\n","// @flow\n\n/**\n * Deeply compares two object literals.\n *\n * @private\n */\nfunction deepEqual(a: ?mixed, b: ?mixed): boolean {\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) return false;\n }\n return true;\n }\n if (typeof a === 'object' && a !== null && b !== null) {\n if (!(typeof b === 'object')) return false;\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n for (const key in a) {\n if (!deepEqual(a[key], b[key])) return false;\n }\n return true;\n }\n return a === b;\n}\n\nexport default deepEqual;\n","'use strict';\n\nexports.supported = isSupported;\nexports.notSupportedReason = notSupportedReason;\n\n/**\n * Test whether the current browser supports Mapbox GL JS\n * @param {Object} options\n * @param {boolean} [options.failIfMajorPerformanceCaveat=false] Return `false`\n * if the performance of Mapbox GL JS would be dramatically worse than\n * expected (i.e. a software renderer is would be used)\n * @return {boolean}\n */\nfunction isSupported(options) {\n return !notSupportedReason(options);\n}\n\nfunction notSupportedReason(options) {\n if (!isBrowser()) return 'not a browser';\n if (!isArraySupported()) return 'insufficent Array support';\n if (!isFunctionSupported()) return 'insufficient Function support';\n if (!isObjectSupported()) return 'insufficient Object support';\n if (!isJSONSupported()) return 'insufficient JSON support';\n if (!isWorkerSupported()) return 'insufficient worker support';\n if (!isUint8ClampedArraySupported()) return 'insufficient Uint8ClampedArray support';\n if (!isArrayBufferSupported()) return 'insufficient ArrayBuffer support';\n if (!isCanvasGetImageDataSupported()) return 'insufficient Canvas/getImageData support';\n if (!isWebGLSupportedCached(options && options.failIfMajorPerformanceCaveat)) return 'insufficient WebGL support';\n if (!isNotIE()) return 'insufficient ECMAScript 6 support';\n}\n\nfunction isBrowser() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nfunction isArraySupported() {\n return (\n Array.prototype &&\n Array.prototype.every &&\n Array.prototype.filter &&\n Array.prototype.forEach &&\n Array.prototype.indexOf &&\n Array.prototype.lastIndexOf &&\n Array.prototype.map &&\n Array.prototype.some &&\n Array.prototype.reduce &&\n Array.prototype.reduceRight &&\n Array.isArray\n );\n}\n\nfunction isFunctionSupported() {\n return Function.prototype && Function.prototype.bind;\n}\n\nfunction isObjectSupported() {\n return (\n Object.keys &&\n Object.create &&\n Object.getPrototypeOf &&\n Object.getOwnPropertyNames &&\n Object.isSealed &&\n Object.isFrozen &&\n Object.isExtensible &&\n Object.getOwnPropertyDescriptor &&\n Object.defineProperty &&\n Object.defineProperties &&\n Object.seal &&\n Object.freeze &&\n Object.preventExtensions\n );\n}\n\nfunction isJSONSupported() {\n return 'JSON' in window && 'parse' in JSON && 'stringify' in JSON;\n}\n\nfunction isWorkerSupported() {\n if (!('Worker' in window && 'Blob' in window && 'URL' in window)) {\n return false;\n }\n\n var blob = new Blob([''], { type: 'text/javascript' });\n var workerURL = URL.createObjectURL(blob);\n var supported;\n var worker;\n\n try {\n worker = new Worker(workerURL);\n supported = true;\n } catch (e) {\n supported = false;\n }\n\n if (worker) {\n worker.terminate();\n }\n URL.revokeObjectURL(workerURL);\n\n return supported;\n}\n\n// IE11 only supports `Uint8ClampedArray` as of version\n// [KB2929437](https://support.microsoft.com/en-us/kb/2929437)\nfunction isUint8ClampedArraySupported() {\n return 'Uint8ClampedArray' in window;\n}\n\n// https://github.com/mapbox/mapbox-gl-supported/issues/19\nfunction isArrayBufferSupported() {\n return ArrayBuffer.isView;\n}\n\n// Some browsers or browser extensions block access to canvas data to prevent fingerprinting.\n// Mapbox GL uses this API to load sprites and images in general.\nfunction isCanvasGetImageDataSupported() {\n var canvas = document.createElement('canvas');\n canvas.width = canvas.height = 1;\n var context = canvas.getContext('2d');\n if (!context) {\n return false;\n }\n var imageData = context.getImageData(0, 0, 1, 1);\n return imageData && imageData.width === canvas.width;\n}\n\nvar isWebGLSupportedCache = {};\nfunction isWebGLSupportedCached(failIfMajorPerformanceCaveat) {\n\n if (isWebGLSupportedCache[failIfMajorPerformanceCaveat] === undefined) {\n isWebGLSupportedCache[failIfMajorPerformanceCaveat] = isWebGLSupported(failIfMajorPerformanceCaveat);\n }\n\n return isWebGLSupportedCache[failIfMajorPerformanceCaveat];\n}\n\nisSupported.webGLContextAttributes = {\n antialias: false,\n alpha: true,\n stencil: true,\n depth: true\n};\n\nfunction getWebGLContext(failIfMajorPerformanceCaveat) {\n var canvas = document.createElement('canvas');\n\n var attributes = Object.create(isSupported.webGLContextAttributes);\n attributes.failIfMajorPerformanceCaveat = failIfMajorPerformanceCaveat;\n\n return (\n canvas.getContext('webgl', attributes) ||\n canvas.getContext('experimental-webgl', attributes)\n );\n}\n\nfunction isWebGLSupported(failIfMajorPerformanceCaveat) {\n var gl = getWebGLContext(failIfMajorPerformanceCaveat);\n if (!gl) {\n return false;\n }\n\n // Try compiling a shader and get its compile status. Some browsers like Brave block this API\n // to prevent fingerprinting. Unfortunately, this also means that Mapbox GL won't work.\n var shader;\n try {\n shader = gl.createShader(gl.VERTEX_SHADER);\n } catch (e) {\n // some older browsers throw an exception that `createShader` is not defined\n // so handle this separately from the case where browsers block `createShader`\n // for security reasons\n return false;\n }\n\n if (!shader || gl.isContextLost()) {\n return false;\n }\n gl.shaderSource(shader, 'void main() {}');\n gl.compileShader(shader);\n return gl.getShaderParameter(shader, gl.COMPILE_STATUS) === true;\n}\n\nfunction isNotIE() {\n return !document.documentMode;\n}\n","// @flow strict\n\nimport Point from '@mapbox/point-geometry';\n\nimport window from './window.js';\nimport assert from 'assert';\n\n// refine the return type based on tagName, e.g. 'button' -> HTMLButtonElement\nexport function create<T: string>(tagName: T, className: ?string, container?: HTMLElement): $Call<typeof document.createElement, T> {\n const el = window.document.createElement(tagName);\n if (className !== undefined) el.className = className;\n if (container) container.appendChild(el);\n return el;\n}\n\nexport function createSVG(tagName: string, attributes: {[string]: string | number}, container?: Element): Element {\n const el = window.document.createElementNS('http://www.w3.org/2000/svg', tagName);\n for (const name of Object.keys(attributes)) {\n el.setAttributeNS(null, name, attributes[name]);\n }\n if (container) container.appendChild(el);\n return el;\n}\n\nconst docStyle = window.document && window.document.documentElement.style;\nconst selectProp = docStyle && docStyle.userSelect !== undefined ? 'userSelect' : 'WebkitUserSelect';\nlet userSelect;\n\nexport function disableDrag() {\n if (docStyle && selectProp) {\n userSelect = docStyle[selectProp];\n docStyle[selectProp] = 'none';\n }\n}\n\nexport function enableDrag() {\n if (docStyle && selectProp) {\n docStyle[selectProp] = userSelect;\n }\n}\n\n// Suppress the next click, but only if it's immediate.\nfunction suppressClickListener(e) {\n e.preventDefault();\n e.stopPropagation();\n window.removeEventListener('click', suppressClickListener, true);\n}\n\nexport function suppressClick() {\n window.addEventListener('click', suppressClickListener, true);\n window.setTimeout(() => {\n window.removeEventListener('click', suppressClickListener, true);\n }, 0);\n}\n\nexport function mousePos(el: HTMLElement, e: MouseEvent | WheelEvent): Point {\n const rect = el.getBoundingClientRect();\n return getScaledPoint(el, rect, e);\n}\n\nexport function touchPos(el: HTMLElement, touches: TouchList): Array<Point> {\n const rect = el.getBoundingClientRect(),\n points = [];\n\n for (let i = 0; i < touches.length; i++) {\n points.push(getScaledPoint(el, rect, touches[i]));\n }\n return points;\n}\n\nexport function mouseButton(e: MouseEvent): number {\n assert(e.type === 'mousedown' || e.type === 'mouseup');\n if (typeof window.InstallTrigger !== 'undefined' && e.button === 2 && e.ctrlKey &&\n window.navigator.platform.toUpperCase().indexOf('MAC') >= 0) {\n // Fix for https://github.com/mapbox/mapbox-gl-js/issues/3131:\n // Firefox (detected by InstallTrigger) on Mac determines e.button = 2 when\n // using Control + left click\n return 0;\n }\n return e.button;\n}\n\nfunction getScaledPoint(el: HTMLElement, rect: ClientRect, e: MouseEvent | WheelEvent | Touch) {\n // Until we get support for pointer events (https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent)\n // we use this dirty trick which would not work for the case of rotated transforms, but works well for\n // the case of simple scaling.\n // Note: `el.offsetWidth === rect.width` eliminates the `0/0` case.\n const scaling = el.offsetWidth === rect.width ? 1 : el.offsetWidth / rect.width;\n return new Point(\n (e.clientX - rect.left) * scaling,\n (e.clientY - rect.top) * scaling\n );\n}\n","import * as glMatrix from \"./common.js\";\n/**\n * 2x2 Matrix\n * @module mat2\n */\n\n/**\n * Creates a new identity mat2\n *\n * @returns {mat2} a new 2x2 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n }\n\n out[0] = 1;\n out[3] = 1;\n return out;\n}\n/**\n * Creates a new mat2 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat2} a matrix to clone\n * @returns {mat2} a new 2x2 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Copy the values from one mat2 to another\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set a mat2 to the identity matrix\n *\n * @param {mat2} out the receiving matrix\n * @returns {mat2} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Create a new mat2 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out A new 2x2 matrix\n */\n\nexport function fromValues(m00, m01, m10, m11) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = m00;\n out[1] = m01;\n out[2] = m10;\n out[3] = m11;\n return out;\n}\n/**\n * Set the components of a mat2 to the given values\n *\n * @param {mat2} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out\n */\n\nexport function set(out, m00, m01, m10, m11) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m10;\n out[3] = m11;\n return out;\n}\n/**\n * Transpose the values of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache\n // some values\n if (out === a) {\n var a1 = a[1];\n out[1] = a[2];\n out[2] = a1;\n } else {\n out[0] = a[0];\n out[1] = a[2];\n out[2] = a[1];\n out[3] = a[3];\n }\n\n return out;\n}\n/**\n * Inverts a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3]; // Calculate the determinant\n\n var det = a0 * a3 - a2 * a1;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = a3 * det;\n out[1] = -a1 * det;\n out[2] = -a2 * det;\n out[3] = a0 * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function adjoint(out, a) {\n // Caching this value is nessecary if out == a\n var a0 = a[0];\n out[0] = a[3];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a0;\n return out;\n}\n/**\n * Calculates the determinant of a mat2\n *\n * @param {ReadonlyMat2} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n return a[0] * a[3] - a[2] * a[1];\n}\n/**\n * Multiplies two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function multiply(out, a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = a0 * b0 + a2 * b1;\n out[1] = a1 * b0 + a3 * b1;\n out[2] = a0 * b2 + a2 * b3;\n out[3] = a1 * b2 + a3 * b3;\n return out;\n}\n/**\n * Rotates a mat2 by the given angle\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\n\nexport function rotate(out, a, rad) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = a0 * c + a2 * s;\n out[1] = a1 * c + a3 * s;\n out[2] = a0 * -s + a2 * c;\n out[3] = a1 * -s + a3 * c;\n return out;\n}\n/**\n * Scales the mat2 by the dimensions in the given vec2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat2} out\n **/\n\nexport function scale(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0 * v0;\n out[1] = a1 * v0;\n out[2] = a2 * v1;\n out[3] = a3 * v1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.rotate(dest, dest, rad);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = -s;\n out[3] = c;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.scale(dest, dest, vec);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat2} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = v[1];\n return out;\n}\n/**\n * Returns a string representation of a mat2\n *\n * @param {ReadonlyMat2} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat2\n *\n * @param {ReadonlyMat2} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3]);\n}\n/**\n * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix\n * @param {ReadonlyMat2} L the lower triangular matrix\n * @param {ReadonlyMat2} D the diagonal matrix\n * @param {ReadonlyMat2} U the upper triangular matrix\n * @param {ReadonlyMat2} a the input matrix to factorize\n */\n\nexport function LDU(L, D, U, a) {\n L[2] = a[2] / a[0];\n U[0] = a[0];\n U[1] = a[1];\n U[3] = a[3] - L[2] * U[1];\n return [L, D, U];\n}\n/**\n * Adds two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat2} a The first matrix.\n * @param {ReadonlyMat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat2} a The first matrix.\n * @param {ReadonlyMat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat2} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two mat2's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat2} out the receiving vector\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat2} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Alias for {@link mat2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat2.subtract}\n * @function\n */\n\nexport var sub = subtract;","// @flow\n\nimport {RGBAImage} from '../util/image.js';\n\nimport type Map from '../ui/map.js';\n\nexport type StyleImageData = {\n data: RGBAImage,\n version: number,\n hasRenderCallback?: boolean,\n userImage?: StyleImageInterface\n};\n\nexport type StyleImageMetadata = {\n pixelRatio: number,\n sdf: boolean,\n stretchX?: Array<[number, number]>,\n stretchY?: Array<[number, number]>,\n content?: [number, number, number, number]\n};\n\nexport type StyleImage = StyleImageData & StyleImageMetadata;\n\nexport type StyleImageInterface = {\n width: number,\n height: number,\n data: Uint8Array | Uint8ClampedArray,\n render?: () => boolean,\n onAdd?: (map: Map, id: string) => void,\n onRemove?: () => void\n};\n\nexport function renderStyleImage(image: StyleImage): boolean {\n const {userImage} = image;\n if (userImage && userImage.render) {\n const updated = userImage.render();\n if (updated) {\n image.data.replace(new Uint8Array(userImage.data.buffer));\n return true;\n }\n }\n return false;\n}\n\n/**\n * Interface for dynamically generated style images. This is a specification for\n * implementers to model: it is not an exported method or class.\n *\n * Images implementing this interface can be redrawn for every frame. They can be used to animate\n * icons and patterns or make them respond to user input. Style images can implement a\n * {@link StyleImageInterface#render} method. The method is called every frame and\n * can be used to update the image.\n *\n * @interface StyleImageInterface\n * @property {number} width Width in pixels.\n * @property {number} height Height in pixels.\n * @property {Uint8Array | Uint8ClampedArray} data Byte array representing the image. To ensure space for all four channels in an RGBA color, size must be width × height × 4.\n *\n * @see [Example: Add an animated icon to the map.](https://docs.mapbox.com/mapbox-gl-js/example/add-image-animated/)\n *\n * @example\n * const flashingSquare = {\n * width: 64,\n * height: 64,\n * data: new Uint8Array(64 * 64 * 4),\n *\n * onAdd(map) {\n * this.map = map;\n * },\n *\n * render() {\n * // keep repainting while the icon is on the map\n * this.map.triggerRepaint();\n *\n * // alternate between black and white based on the time\n * const value = Math.round(Date.now() / 1000) % 2 === 0 ? 255 : 0;\n *\n * // check if image needs to be changed\n * if (value !== this.previousValue) {\n * this.previousValue = value;\n *\n * const bytesPerPixel = 4;\n * for (let x = 0; x < this.width; x++) {\n * for (let y = 0; y < this.height; y++) {\n * const offset = (y * this.width + x) * bytesPerPixel;\n * this.data[offset + 0] = value;\n * this.data[offset + 1] = value;\n * this.data[offset + 2] = value;\n * this.data[offset + 3] = 255;\n * }\n * }\n *\n * // return true to indicate that the image changed\n * return true;\n * }\n * }\n * };\n *\n * map.addImage('flashing_square', flashingSquare);\n */\n\n/**\n * This method is called once before every frame where the icon will be used.\n * The method can optionally update the image's `data` member with a new image.\n *\n * If the method updates the image it must return `true` to commit the change.\n * If the method returns `false` or nothing the image is assumed to not have changed.\n *\n * If updates are infrequent it maybe easier to use {@link Map#updateImage} to update\n * the image instead of implementing this method.\n *\n * @function\n * @memberof StyleImageInterface\n * @instance\n * @name render\n * @return {boolean} `true` if this method updated the image. `false` if the image was not changed.\n */\n\n/**\n * Optional method called when the layer has been added to the Map with {@link Map#addImage}.\n *\n * @function\n * @memberof StyleImageInterface\n * @instance\n * @name onAdd\n * @param {Map} map The Map this custom layer was just added to.\n */\n\n/**\n * Optional method called when the icon is removed from the map with {@link Map#removeImage}.\n * This gives the image a chance to clean up resources and event listeners.\n *\n * @function\n * @memberof StyleImageInterface\n * @instance\n * @name onRemove\n */\n","// @flow\n\nimport potpack from 'potpack';\n\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\nimport {RGBAImage} from '../util/image.js';\nimport {ImagePosition} from './image_atlas.js';\nimport Texture from './texture.js';\nimport assert from 'assert';\nimport {renderStyleImage} from '../style/style_image.js';\nimport {warnOnce} from '../util/util.js';\n\nimport type {StyleImage} from '../style/style_image.js';\nimport type Context from '../gl/context.js';\nimport type {Bin} from 'potpack';\nimport type {Callback} from '../types/callback.js';\nimport type {Size} from '../util/image.js';\n\ntype Pattern = {\n bin: Bin,\n position: ImagePosition\n};\n\n// When copied into the atlas texture, image data is padded by one pixel on each side. Icon\n// images are padded with fully transparent pixels, while pattern images are padded with a\n// copy of the image data wrapped from the opposite side. In both cases, this ensures the\n// correct behavior of GL_LINEAR texture sampling mode.\nconst padding = 1;\n\n/*\n ImageManager does three things:\n\n 1. Tracks requests for icon images from tile workers and sends responses when the requests are fulfilled.\n 2. Builds a texture atlas for pattern images.\n 3. Rerenders renderable images once per frame\n\n These are disparate responsibilities and should eventually be handled by different classes. When we implement\n data-driven support for `*-pattern`, we'll likely use per-bucket pattern atlases, and that would be a good time\n to refactor this.\n*/\nclass ImageManager extends Evented {\n images: {[_: string]: StyleImage};\n updatedImages: {[_: string]: boolean};\n callbackDispatchedThisFrame: {[_: string]: boolean};\n loaded: boolean;\n requestors: Array<{ids: Array<string>, callback: Callback<{[_: string]: StyleImage}>}>;\n\n patterns: {[_: string]: Pattern};\n atlasImage: RGBAImage;\n atlasTexture: ?Texture;\n dirty: boolean;\n\n constructor() {\n super();\n this.images = {};\n this.updatedImages = {};\n this.callbackDispatchedThisFrame = {};\n this.loaded = false;\n this.requestors = [];\n\n this.patterns = {};\n this.atlasImage = new RGBAImage({width: 1, height: 1});\n this.dirty = true;\n }\n\n isLoaded(): boolean {\n return this.loaded;\n }\n\n setLoaded(loaded: boolean) {\n if (this.loaded === loaded) {\n return;\n }\n\n this.loaded = loaded;\n\n if (loaded) {\n for (const {ids, callback} of this.requestors) {\n this._notify(ids, callback);\n }\n this.requestors = [];\n }\n }\n\n hasImage(id: string): boolean {\n return !!this.getImage(id);\n }\n\n getImage(id: string): ?StyleImage {\n return this.images[id];\n }\n\n addImage(id: string, image: StyleImage) {\n assert(!this.images[id]);\n if (this._validate(id, image)) {\n this.images[id] = image;\n }\n }\n\n _validate(id: string, image: StyleImage): boolean {\n let valid = true;\n if (!this._validateStretch(image.stretchX, image.data && image.data.width)) {\n this.fire(new ErrorEvent(new Error(`Image \"${id}\" has invalid \"stretchX\" value`)));\n valid = false;\n }\n if (!this._validateStretch(image.stretchY, image.data && image.data.height)) {\n this.fire(new ErrorEvent(new Error(`Image \"${id}\" has invalid \"stretchY\" value`)));\n valid = false;\n }\n if (!this._validateContent(image.content, image)) {\n this.fire(new ErrorEvent(new Error(`Image \"${id}\" has invalid \"content\" value`)));\n valid = false;\n }\n return valid;\n }\n\n _validateStretch(stretch: ?Array<[number, number]> | void, size: number): boolean {\n if (!stretch) return true;\n let last = 0;\n for (const part of stretch) {\n if (part[0] < last || part[1] < part[0] || size < part[1]) return false;\n last = part[1];\n }\n return true;\n }\n\n _validateContent(content: ?[number, number, number, number] | void, image: StyleImage): boolean {\n if (!content) return true;\n if (content.length !== 4) return false;\n if (content[0] < 0 || image.data.width < content[0]) return false;\n if (content[1] < 0 || image.data.height < content[1]) return false;\n if (content[2] < 0 || image.data.width < content[2]) return false;\n if (content[3] < 0 || image.data.height < content[3]) return false;\n if (content[2] < content[0]) return false;\n if (content[3] < content[1]) return false;\n return true;\n }\n\n updateImage(id: string, image: StyleImage) {\n const oldImage = this.images[id];\n assert(oldImage);\n assert(oldImage.data.width === image.data.width);\n assert(oldImage.data.height === image.data.height);\n image.version = oldImage.version + 1;\n this.images[id] = image;\n this.updatedImages[id] = true;\n }\n\n removeImage(id: string) {\n assert(this.images[id]);\n const image = this.images[id];\n delete this.images[id];\n delete this.patterns[id];\n\n if (image.userImage && image.userImage.onRemove) {\n image.userImage.onRemove();\n }\n }\n\n listImages(): Array<string> {\n return Object.keys(this.images);\n }\n\n getImages(ids: Array<string>, callback: Callback<{[_: string]: StyleImage}>) {\n // If the sprite has been loaded, or if all the icon dependencies are already present\n // (i.e. if they've been added via runtime styling), then notify the requestor immediately.\n // Otherwise, delay notification until the sprite is loaded. At that point, if any of the\n // dependencies are still unavailable, we'll just assume they are permanently missing.\n let hasAllDependencies = true;\n if (!this.isLoaded()) {\n for (const id of ids) {\n if (!this.images[id]) {\n hasAllDependencies = false;\n }\n }\n }\n if (this.isLoaded() || hasAllDependencies) {\n this._notify(ids, callback);\n } else {\n this.requestors.push({ids, callback});\n }\n }\n\n _notify(ids: Array<string>, callback: Callback<{[_: string]: StyleImage}>) {\n const response = {};\n\n for (const id of ids) {\n if (!this.images[id]) {\n this.fire(new Event('styleimagemissing', {id}));\n }\n const image = this.images[id];\n if (image) {\n // Clone the image so that our own copy of its ArrayBuffer doesn't get transferred.\n response[id] = {\n data: image.data.clone(),\n pixelRatio: image.pixelRatio,\n sdf: image.sdf,\n version: image.version,\n stretchX: image.stretchX,\n stretchY: image.stretchY,\n content: image.content,\n hasRenderCallback: Boolean(image.userImage && image.userImage.render)\n };\n } else {\n warnOnce(`Image \"${id}\" could not be loaded. Please make sure you have added the image with map.addImage() or a \"sprite\" property in your style. You can provide missing images by listening for the \"styleimagemissing\" map event.`);\n }\n }\n\n callback(null, response);\n }\n\n // Pattern stuff\n\n getPixelSize(): Size {\n const {width, height} = this.atlasImage;\n return {width, height};\n }\n\n getPattern(id: string): ?ImagePosition {\n const pattern = this.patterns[id];\n\n const image = this.getImage(id);\n if (!image) {\n return null;\n }\n\n if (pattern && pattern.position.version === image.version) {\n return pattern.position;\n }\n\n if (!pattern) {\n const w = image.data.width + padding * 2;\n const h = image.data.height + padding * 2;\n const bin = {w, h, x: 0, y: 0};\n const position = new ImagePosition(bin, image);\n this.patterns[id] = {bin, position};\n } else {\n pattern.position.version = image.version;\n }\n\n this._updatePatternAtlas();\n\n return this.patterns[id].position;\n }\n\n bind(context: Context) {\n const gl = context.gl;\n if (!this.atlasTexture) {\n this.atlasTexture = new Texture(context, this.atlasImage, gl.RGBA);\n } else if (this.dirty) {\n this.atlasTexture.update(this.atlasImage);\n this.dirty = false;\n }\n\n this.atlasTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n }\n\n _updatePatternAtlas() {\n const bins = [];\n for (const id in this.patterns) {\n bins.push(this.patterns[id].bin);\n }\n\n const {w, h} = potpack(bins);\n\n const dst = this.atlasImage;\n dst.resize({width: w || 1, height: h || 1});\n\n for (const id in this.patterns) {\n const {bin} = this.patterns[id];\n const x = bin.x + padding;\n const y = bin.y + padding;\n const src = this.images[id].data;\n const w = src.width;\n const h = src.height;\n\n RGBAImage.copy(src, dst, {x: 0, y: 0}, {x, y}, {width: w, height: h});\n\n // Add 1 pixel wrapped padding on each side of the image.\n RGBAImage.copy(src, dst, {x: 0, y: h - 1}, {x, y: y - 1}, {width: w, height: 1}); // T\n RGBAImage.copy(src, dst, {x: 0, y: 0}, {x, y: y + h}, {width: w, height: 1}); // B\n RGBAImage.copy(src, dst, {x: w - 1, y: 0}, {x: x - 1, y}, {width: 1, height: h}); // L\n RGBAImage.copy(src, dst, {x: 0, y: 0}, {x: x + w, y}, {width: 1, height: h}); // R\n }\n\n this.dirty = true;\n }\n\n beginFrame() {\n this.callbackDispatchedThisFrame = {};\n }\n\n dispatchRenderCallbacks(ids: Array<string>) {\n for (const id of ids) {\n\n // the callback for the image was already dispatched for a different frame\n if (this.callbackDispatchedThisFrame[id]) continue;\n this.callbackDispatchedThisFrame[id] = true;\n\n const image = this.images[id];\n assert(image);\n\n const updated = renderStyleImage(image);\n if (updated) {\n this.updateImage(id, image);\n }\n }\n }\n}\n\nexport default ImageManager;\n","// @flow\n\nimport styleSpec from '../style-spec/reference/latest.js';\n\nimport {endsWith, extend, degToRad} from '../util/util.js';\nimport {Evented} from '../util/evented.js';\nimport {\n validateStyle,\n validateLight,\n emitValidationErrors\n} from './validate_style.js';\nimport Color from '../style-spec/util/color.js';\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\nimport {Properties, Transitionable, Transitioning, PossiblyEvaluated, DataConstantProperty} from './properties.js';\n\nimport type {StylePropertySpecification} from '../style-spec/style-spec.js';\nimport type EvaluationParameters from './evaluation_parameters.js';\nimport type {StyleSetterOptions} from '../style/style.js';\nimport type {\n Property,\n PropertyValue,\n TransitionParameters\n} from './properties.js';\n\nimport type {LightSpecification} from '../style-spec/types.js';\n\nexport type LightPosition = {\n x: number,\n y: number,\n z: number,\n azimuthal: number,\n polar: number,\n};\n\n/**\n * Converts spherical coordinates to cartesian LightPosition coordinates.\n *\n * @private\n * @param spherical Spherical coordinates, in [radial, azimuthal, polar]\n * @return LightPosition cartesian coordinates\n */\nexport function sphericalToCartesian([r, azimuthal, polar]: [number, number, number]): LightPosition {\n // We abstract \"north\"/\"up\" (compass-wise) to be 0° when really this is 90° (π/2):\n // correct for that here\n const a = degToRad(azimuthal + 90), p = degToRad(polar);\n\n return {\n x: r * Math.cos(a) * Math.sin(p),\n y: r * Math.sin(a) * Math.sin(p),\n z: r * Math.cos(p),\n azimuthal, polar\n };\n}\n\nclass LightPositionProperty implements Property<[number, number, number], LightPosition> {\n specification: StylePropertySpecification;\n\n constructor() {\n this.specification = styleSpec.light.position;\n }\n\n possiblyEvaluate(value: PropertyValue<[number, number, number], LightPosition>, parameters: EvaluationParameters): LightPosition {\n return sphericalToCartesian(value.expression.evaluate(parameters));\n }\n\n interpolate(a: LightPosition, b: LightPosition, t: number): LightPosition {\n return {\n x: interpolate(a.x, b.x, t),\n y: interpolate(a.y, b.y, t),\n z: interpolate(a.z, b.z, t),\n azimuthal: interpolate(a.azimuthal, b.azimuthal, t),\n polar: interpolate(a.polar, b.polar, t),\n };\n }\n}\n\ntype Props = {|\n \"anchor\": DataConstantProperty<\"map\" | \"viewport\">,\n \"position\": LightPositionProperty,\n \"color\": DataConstantProperty<Color>,\n \"intensity\": DataConstantProperty<number>,\n|};\n\nconst properties: Properties<Props> = new Properties({\n \"anchor\": new DataConstantProperty(styleSpec.light.anchor),\n \"position\": new LightPositionProperty(),\n \"color\": new DataConstantProperty(styleSpec.light.color),\n \"intensity\": new DataConstantProperty(styleSpec.light.intensity),\n});\n\nconst TRANSITION_SUFFIX = '-transition';\n\n/*\n * Represents the light used to light extruded features.\n */\nclass Light extends Evented {\n _transitionable: Transitionable<Props>;\n _transitioning: Transitioning<Props>;\n properties: PossiblyEvaluated<Props>;\n\n constructor(lightOptions?: LightSpecification) {\n super();\n this._transitionable = new Transitionable(properties);\n this.setLight(lightOptions);\n this._transitioning = this._transitionable.untransitioned();\n }\n\n getLight(): LightSpecification {\n return (this._transitionable.serialize(): any);\n }\n\n setLight(light?: LightSpecification, options: StyleSetterOptions = {}) {\n if (this._validate(validateLight, light, options)) {\n return;\n }\n\n for (const name in light) {\n const value = light[name];\n if (endsWith(name, TRANSITION_SUFFIX)) {\n this._transitionable.setTransition(name.slice(0, -TRANSITION_SUFFIX.length), value);\n } else {\n this._transitionable.setValue(name, value);\n }\n }\n }\n\n updateTransitions(parameters: TransitionParameters) {\n this._transitioning = this._transitionable.transitioned(parameters, this._transitioning);\n }\n\n hasTransition(): boolean {\n return this._transitioning.hasTransition();\n }\n\n recalculate(parameters: EvaluationParameters) {\n this.properties = this._transitioning.possiblyEvaluate(parameters);\n }\n\n _validate(validate: Function, value: mixed, options?: {validate?: boolean}): boolean {\n if (options && options.validate === false) {\n return false;\n }\n\n return emitValidationErrors(this, validate.call(validateStyle, extend({\n value,\n // Workaround for https://github.com/mapbox/mapbox-gl-js/issues/2407\n style: {glyphs: true, sprite: true},\n styleSpec\n })));\n }\n}\n\nexport default Light;\n","// @flow\n\nimport styleSpec from '../style-spec/reference/latest.js';\nimport {endsWith} from '../util/util.js';\nimport {Evented} from '../util/evented.js';\nimport {Properties, Transitionable, Transitioning, PossiblyEvaluated, DataConstantProperty} from './properties.js';\n\nimport type EvaluationParameters from './evaluation_parameters.js';\nimport type {TransitionParameters} from './properties.js';\nimport type {TerrainSpecification} from '../style-spec/types.js';\n\ntype Props = {|\n \"source\": DataConstantProperty<string>,\n \"exaggeration\": DataConstantProperty<number>,\n|};\n\nexport const DrapeRenderMode = {\n deferred: 0,\n elevated: 1\n};\n\nconst properties: Properties<Props> = new Properties({\n \"source\": new DataConstantProperty(styleSpec.terrain.source),\n \"exaggeration\": new DataConstantProperty(styleSpec.terrain.exaggeration),\n});\n\nconst TRANSITION_SUFFIX = '-transition';\n\nclass Terrain extends Evented {\n _transitionable: Transitionable<Props>;\n _transitioning: Transitioning<Props>;\n properties: PossiblyEvaluated<Props>;\n drapeRenderMode: number;\n\n constructor(terrainOptions: TerrainSpecification, drapeRenderMode: number) {\n super();\n this._transitionable = new Transitionable(properties);\n this.set(terrainOptions);\n this._transitioning = this._transitionable.untransitioned();\n this.drapeRenderMode = drapeRenderMode;\n }\n\n get(): TerrainSpecification {\n return (this._transitionable.serialize(): any);\n }\n\n set(terrain: TerrainSpecification) {\n for (const name in terrain) {\n const value = terrain[name];\n if (endsWith(name, TRANSITION_SUFFIX)) {\n this._transitionable.setTransition(name.slice(0, -TRANSITION_SUFFIX.length), value);\n } else {\n this._transitionable.setValue(name, value);\n }\n }\n }\n\n updateTransitions(parameters: TransitionParameters) {\n this._transitioning = this._transitionable.transitioned(parameters, this._transitioning);\n }\n\n hasTransition(): boolean {\n return this._transitioning.hasTransition();\n }\n\n recalculate(parameters: EvaluationParameters) {\n this.properties = this._transitioning.possiblyEvaluate(parameters);\n }\n}\n\nexport default Terrain;\n","// @flow\nimport {vec3} from 'gl-matrix';\nimport MercatorCoordinate from '../geo/mercator_coordinate.js';\nimport {smoothstep} from '../util/util.js';\nimport type LngLat from '../geo/lng_lat.js';\nimport type {UnwrappedTileID} from '../source/tile_id.js';\nimport type Transform from '../geo/transform.js';\n\nexport const FOG_PITCH_START = 45;\nexport const FOG_PITCH_END = 65;\nexport const FOG_SYMBOL_CLIPPING_THRESHOLD = 0.9;\n\nexport type FogState = {\n range: [number, number],\n horizonBlend: number,\n alpha: number\n};\n\n// As defined in _prelude_fog.fragment.glsl#fog_opacity\nexport function getFogOpacity(state: FogState, pos: Array<number>, pitch: number, fov: number): number {\n const fogPitchOpacity = smoothstep(FOG_PITCH_START, FOG_PITCH_END, pitch);\n const [start, end] = getFovAdjustedFogRange(state, fov);\n\n // The output of this function must match _prelude_fog.fragment.glsl\n // For further details, refer to the implementation in the shader code\n const decay = 6;\n const depth = vec3.length(pos);\n const fogRange = (depth - start) / (end - start);\n let falloff = 1.0 - Math.min(1, Math.exp(-decay * fogRange));\n\n falloff *= falloff * falloff;\n falloff = Math.min(1.0, 1.00747 * falloff);\n\n return falloff * fogPitchOpacity * state.alpha;\n}\n\nexport function getFovAdjustedFogRange(state: FogState, fov: number): [number, number] {\n // This function computes a shifted fog range so that the appearance is unchanged\n // when the fov changes. We define range=0 starting at the camera position given\n // the default fov. We avoid starting the fog range at the camera center so that\n // ranges aren't generally negative unless the FOV is modified.\n const shift = 0.5 / Math.tan(fov * 0.5);\n return [state.range[0] + shift, state.range[1] + shift];\n}\n\nexport function getFogOpacityAtTileCoord(state: FogState, x: number, y: number, z: number, tileId: UnwrappedTileID, transform: Transform): number {\n const mat = transform.calculateFogTileMatrix(tileId);\n const pos = [x, y, z];\n vec3.transformMat4(pos, pos, mat);\n\n return getFogOpacity(state, pos, transform.pitch, transform._fov);\n}\n\nexport function getFogOpacityAtLngLat(state: FogState, lngLat: LngLat, transform: Transform): number {\n const meters = MercatorCoordinate.fromLngLat(lngLat);\n const elevation = transform.elevation ? transform.elevation.getAtPointOrZero(meters) : 0;\n const pos = [meters.x, meters.y, elevation];\n vec3.transformMat4(pos, pos, transform.mercatorFogMatrix);\n\n return getFogOpacity(state, pos, transform.pitch, transform._fov);\n}\n","// @flow\n\nimport styleSpec from '../style-spec/reference/latest.js';\nimport {endsWith, extend, smoothstep} from '../util/util.js';\nimport {Evented} from '../util/evented.js';\nimport {validateStyle, validateFog, emitValidationErrors} from './validate_style.js';\nimport {Properties, Transitionable, Transitioning, PossiblyEvaluated, DataConstantProperty} from './properties.js';\nimport Color from '../style-spec/util/color.js';\nimport {FOG_PITCH_START, FOG_PITCH_END, getFogOpacityAtLngLat, getFovAdjustedFogRange} from './fog_helpers.js';\nimport type {FogSpecification} from '../style-spec/types.js';\nimport type EvaluationParameters from './evaluation_parameters.js';\nimport type {TransitionParameters} from './properties.js';\nimport type LngLat from '../geo/lng_lat.js';\nimport type Transform from '../geo/transform.js';\nimport type {StyleSetterOptions} from '../style/style.js';\nimport type {FogState} from './fog_helpers.js';\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\nimport {globeToMercatorTransition} from '../geo/projection/globe_util.js';\n\ntype Props = {|\n \"range\": DataConstantProperty<[number, number]>,\n \"color\": DataConstantProperty<Color>,\n \"high-color\": DataConstantProperty<Color>,\n \"space-color\": DataConstantProperty<Color>,\n \"horizon-blend\": DataConstantProperty<number>,\n \"star-intensity\": DataConstantProperty<number>,\n|};\n\nconst fogProperties: Properties<Props> = new Properties({\n \"range\": new DataConstantProperty(styleSpec.fog.range),\n \"color\": new DataConstantProperty(styleSpec.fog.color),\n \"high-color\": new DataConstantProperty(styleSpec.fog[\"high-color\"]),\n \"space-color\": new DataConstantProperty(styleSpec.fog[\"space-color\"]),\n \"horizon-blend\": new DataConstantProperty(styleSpec.fog[\"horizon-blend\"]),\n \"star-intensity\": new DataConstantProperty(styleSpec.fog[\"star-intensity\"]),\n});\n\nconst TRANSITION_SUFFIX = '-transition';\n\nclass Fog extends Evented {\n _transitionable: Transitionable<Props>;\n _transitioning: Transitioning<Props>;\n properties: PossiblyEvaluated<Props>;\n\n // Alternate projections do not yet support fog.\n // Hold on to transform so that we know whether a projection is set.\n _transform: Transform;\n\n constructor(fogOptions?: FogSpecification, transform: Transform) {\n super();\n this._transitionable = new Transitionable(fogProperties);\n this.set(fogOptions);\n this._transitioning = this._transitionable.untransitioned();\n this._transform = transform;\n }\n\n get state(): FogState {\n const tr = this._transform;\n const isGlobe = tr.projection.name === 'globe';\n const transitionT = globeToMercatorTransition(tr.zoom);\n const range = this.properties.get('range');\n const globeFixedFogRange = [0.5, 3];\n return {\n range: isGlobe ? [\n interpolate(globeFixedFogRange[0], range[0], transitionT),\n interpolate(globeFixedFogRange[1], range[1], transitionT)\n ] : range,\n horizonBlend: this.properties.get('horizon-blend'),\n alpha: this.properties.get('color').a\n };\n }\n\n get(): FogSpecification {\n return (this._transitionable.serialize(): any);\n }\n\n set(fog?: FogSpecification, options: StyleSetterOptions = {}) {\n if (this._validate(validateFog, fog, options)) {\n return;\n }\n\n for (const name of Object.keys(styleSpec.fog)) {\n // Fallback to use default style specification when the properties wasn't set\n if (fog && fog[name] === undefined) {\n fog[name] = styleSpec.fog[name].default;\n }\n }\n\n for (const name in fog) {\n const value = fog[name];\n if (endsWith(name, TRANSITION_SUFFIX)) {\n this._transitionable.setTransition(name.slice(0, -TRANSITION_SUFFIX.length), value);\n } else {\n this._transitionable.setValue(name, value);\n }\n }\n }\n\n getOpacity(pitch: number): number {\n if (!this._transform.projection.supportsFog) return 0;\n\n const fogColor = (this.properties && this.properties.get('color')) || 1.0;\n const isGlobe = this._transform.projection.name === 'globe';\n const pitchFactor = isGlobe ? 1.0 : smoothstep(FOG_PITCH_START, FOG_PITCH_END, pitch);\n return pitchFactor * fogColor.a;\n }\n\n getOpacityAtLatLng(lngLat: LngLat, transform: Transform): number {\n if (!this._transform.projection.supportsFog) return 0;\n\n return getFogOpacityAtLngLat(this.state, lngLat, transform);\n }\n\n getFovAdjustedRange(fov: number): [number, number] {\n // We can return any arbitrary range because we expect opacity=0 to clean it up\n if (!this._transform.projection.supportsFog) return [0, 1];\n\n return getFovAdjustedFogRange(this.state, fov);\n }\n\n updateTransitions(parameters: TransitionParameters) {\n this._transitioning = this._transitionable.transitioned(parameters, this._transitioning);\n }\n\n hasTransition(): boolean {\n return this._transitioning.hasTransition();\n }\n\n recalculate(parameters: EvaluationParameters) {\n this.properties = this._transitioning.possiblyEvaluate(parameters);\n }\n\n _validate(validate: Function, value: mixed, options?: {validate?: boolean}): boolean {\n if (options && options.validate === false) {\n return false;\n }\n\n return emitValidationErrors(this, validate.call(validateStyle, extend({\n value,\n style: {glyphs: true, sprite: true},\n styleSpec\n })));\n }\n}\n\nexport default Fog;\n","// @flow\n\nimport {uniqueId, asyncAll} from './util.js';\nimport Actor from './actor.js';\nimport assert from 'assert';\n\nimport type WorkerPool from './worker_pool.js';\n\n/**\n * Responsible for sending messages from a {@link Source} to an associated\n * {@link WorkerSource}.\n *\n * @private\n */\nclass Dispatcher {\n workerPool: WorkerPool;\n actors: Array<Actor>;\n currentActor: number;\n id: number;\n ready: boolean;\n\n // exposed to allow stubbing in unit tests\n static Actor: Class<Actor>;\n\n constructor(workerPool: WorkerPool, parent: any) {\n this.workerPool = workerPool;\n this.actors = [];\n this.currentActor = 0;\n this.id = uniqueId();\n const workers = this.workerPool.acquire(this.id);\n for (let i = 0; i < workers.length; i++) {\n const worker = workers[i];\n const actor = new Dispatcher.Actor(worker, parent, this.id);\n actor.name = `Worker ${i}`;\n this.actors.push(actor);\n }\n assert(this.actors.length);\n\n // track whether all workers are instantiated and ready to receive messages;\n // used for optimizations on initial map load\n this.ready = false;\n this.broadcast('checkIfReady', null, () => { this.ready = true; });\n }\n\n /**\n * Broadcast a message to all Workers.\n * @private\n */\n broadcast(type: string, data: mixed, cb?: Function) {\n assert(this.actors.length);\n cb = cb || function () {};\n asyncAll(this.actors, (actor, done) => {\n actor.send(type, data, done);\n }, cb);\n }\n\n /**\n * Acquires an actor to dispatch messages to. The actors are distributed in round-robin fashion.\n * @returns {Actor} An actor object backed by a web worker for processing messages.\n */\n getActor(): Actor {\n assert(this.actors.length);\n this.currentActor = (this.currentActor + 1) % this.actors.length;\n return this.actors[this.currentActor];\n }\n\n remove() {\n this.actors.forEach((actor) => { actor.remove(); });\n this.actors = [];\n this.workerPool.release(this.id);\n }\n}\n\nDispatcher.Actor = Actor;\n\nexport default Dispatcher;\n","// @flow\n\nimport {mat2} from 'gl-matrix';\n\nimport EXTENT from '../data/extent.js';\n\nimport type {OverscaledTileID} from './tile_id.js';\nimport type Transform from '../geo/transform.js';\nimport type {TileTransform} from '../geo/projection/tile_transform.js';\n\n/**\n * Converts a pixel value at a the given zoom level to tile units.\n *\n * The shaders mostly calculate everything in tile units so style\n * properties need to be converted from pixels to tile units using this.\n *\n * For example, a translation by 30 pixels at zoom 6.5 will be a\n * translation by pixelsToTileUnits(30, 6.5) tile units.\n *\n * @returns value in tile units\n * @private\n */\nexport default function(tile: {tileID: OverscaledTileID, tileSize: number}, pixelValue: number, z: number): number {\n return pixelValue * (EXTENT / (tile.tileSize * Math.pow(2, z - tile.tileID.overscaledZ)));\n}\n\nexport function getPixelsToTileUnitsMatrix(tile: {tileID: OverscaledTileID, tileSize: number, +tileTransform: TileTransform}, transform: Transform): Float32Array {\n const {scale} = tile.tileTransform;\n const s = scale * EXTENT / (tile.tileSize * Math.pow(2, transform.zoom - tile.tileID.overscaledZ + tile.tileID.canonical.z));\n return mat2.scale(new Float32Array(4), transform.inverseAdjustmentMatrix, [s, s]);\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\nimport {getBounds, clamp, polygonizeBounds, bufferConvexPolygon} from '../util/util.js';\nimport {polygonIntersectsBox, polygonContainsPoint} from '../util/intersection_tests.js';\nimport EXTENT from '../data/extent.js';\nimport type {PointLike} from '@mapbox/point-geometry';\nimport type Transform from '../geo/transform.js';\nimport type Tile from '../source/tile.js';\nimport pixelsToTileUnits from '../source/pixels_to_tile_units.js';\nimport {vec3, vec4, mat4} from 'gl-matrix';\nimport {Ray} from '../util/primitives.js';\nimport MercatorCoordinate, {mercatorXfromLng} from '../geo/mercator_coordinate.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport {getTilePoint, getTileVec3} from '../geo/projection/tile_transform.js';\nimport resample from '../geo/projection/resample.js';\nimport {GLOBE_RADIUS} from '../geo/projection/globe_util.js';\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\n\ntype CachedPolygon = {\n // Query rectangle projected on the map plane\n polygon: MercatorCoordinate[];\n\n // A flag tellingwhether the query polygon might span across mercator boundaries [0, 1]\n unwrapped: boolean;\n};\n\n/**\n * A data-class that represents a screenspace query from `Map#queryRenderedFeatures`.\n * All the internal geometries and data are intented to be immutable and read-only.\n * Its lifetime is only for the duration of the query and fixed state of the map while the query is being processed.\n *\n * @class QueryGeometry\n */\nexport class QueryGeometry {\n screenBounds: Point[];\n cameraPoint: Point;\n screenGeometry: Point[];\n screenGeometryMercator: CachedPolygon;\n\n _screenRaycastCache: { [_: number]: CachedPolygon};\n _cameraRaycastCache: { [_: number]: CachedPolygon};\n\n isAboveHorizon: boolean;\n\n constructor(screenBounds: Point[], cameraPoint: Point, aboveHorizon: boolean, transform: Transform) {\n this.screenBounds = screenBounds;\n this.cameraPoint = cameraPoint;\n this._screenRaycastCache = {};\n this._cameraRaycastCache = {};\n this.isAboveHorizon = aboveHorizon;\n\n this.screenGeometry = this.bufferedScreenGeometry(0);\n this.screenGeometryMercator = this._bufferedScreenMercator(0, transform);\n }\n\n /**\n * Factory method to help contruct an instance while accounting for current map state.\n *\n * @static\n * @param {(PointLike | [PointLike, PointLike])} geometry The query geometry.\n * @param {Transform} transform The current map transform.\n * @returns {QueryGeometry} An instance of the QueryGeometry class.\n */\n static createFromScreenPoints(geometry: PointLike | [PointLike, PointLike], transform: Transform): QueryGeometry {\n let screenGeometry;\n let aboveHorizon;\n if (geometry instanceof Point || typeof geometry[0] === 'number') {\n const pt = Point.convert(geometry);\n screenGeometry = [Point.convert(geometry)];\n aboveHorizon = transform.isPointAboveHorizon(pt);\n } else {\n const tl = Point.convert(geometry[0]);\n const br = Point.convert(geometry[1]);\n screenGeometry = [tl, br];\n aboveHorizon = polygonizeBounds(tl, br).every((p) => transform.isPointAboveHorizon(p));\n }\n\n return new QueryGeometry(screenGeometry, transform.getCameraPoint(), aboveHorizon, transform);\n }\n\n /**\n * Returns true if the initial query by the user was a single point.\n *\n * @returns {boolean} Returns `true` if the initial query geometry was a single point.\n */\n isPointQuery(): boolean {\n return this.screenBounds.length === 1;\n }\n\n /**\n * Due to data-driven styling features do not uniform size(eg `circle-radius`) and can be offset differntly\n * from their original location(for example with `*-translate`). This means we have to expand our query region for\n * each tile to account for variation in these properties.\n * Each tile calculates a tile level max padding value (in screenspace pixels) when its parsed, this function\n * lets us calculate a buffered version of the screenspace query geometry for each tile.\n *\n * @param {number} buffer The tile padding in screenspace pixels.\n * @returns {Point[]} The buffered query geometry.\n */\n bufferedScreenGeometry(buffer: number): Point[] {\n return polygonizeBounds(\n this.screenBounds[0],\n this.screenBounds.length === 1 ? this.screenBounds[0] : this.screenBounds[1],\n buffer\n );\n }\n\n /**\n * When the map is pitched, some of the 3D features that intersect a query will not intersect\n * the query at the surface of the earth. Instead the feature may be closer and only intersect\n * the query because it extrudes into the air.\n *\n * This returns a geometry that is a convex polygon that encompasses the query frustum and the point underneath the camera.\n * Similar to `bufferedScreenGeometry`, buffering is added to account for variation in paint properties.\n *\n * Case 1: point underneath camera is exactly behind query volume\n * +----------+\n * | |\n * | |\n * | |\n * + +\n * X X\n * X X\n * X X\n * X X\n * XX.\n *\n * Case 2: point is behind and to the right\n * +----------+\n * | X\n * | X\n * | XX\n * + X\n * XXX XX\n * XXXX X\n * XXX XX\n * XX X\n * XXX.\n *\n * Case 3: point is behind and to the left\n * +----------+\n * X |\n * X |\n * XX |\n * X +\n * X XXXX\n * XX XXX\n * X XXXX\n * X XXXX\n * XXX.\n *\n * @param {number} buffer The tile padding in screenspace pixels.\n * @returns {Point[]} The buffered query geometry.\n */\n bufferedCameraGeometry(buffer: number): Point[] {\n const min = this.screenBounds[0];\n const max = this.screenBounds.length === 1 ? this.screenBounds[0].add(new Point(1, 1)) : this.screenBounds[1];\n const cameraPolygon = polygonizeBounds(min, max, 0, false);\n\n // Only need to account for point underneath camera if its behind query volume\n if (this.cameraPoint.y > max.y) {\n //case 1: insert point in the middle\n if (this.cameraPoint.x > min.x && this.cameraPoint.x < max.x) {\n cameraPolygon.splice(3, 0, this.cameraPoint);\n //case 2: replace btm right point\n } else if (this.cameraPoint.x >= max.x) {\n cameraPolygon[2] = this.cameraPoint;\n //case 3: replace btm left point\n } else if (this.cameraPoint.x <= min.x) {\n cameraPolygon[3] = this.cameraPoint;\n }\n }\n\n return bufferConvexPolygon(cameraPolygon, buffer);\n }\n\n // Creates a convex polygon in screen coordinates that encompasses the query frustum and\n // the camera location at globe's surface. Camera point can be at any side of the query polygon as\n // opposed to `bufferedCameraGeometry` which restricts the location to underneath the polygon.\n bufferedCameraGeometryGlobe(buffer: number): Point[] {\n const min = this.screenBounds[0];\n const max = this.screenBounds.length === 1 ? this.screenBounds[0].add(new Point(1, 1)) : this.screenBounds[1];\n\n // Padding is added to the query polygon before inclusion of the camera location.\n // Otherwise the buffered (narrow) polygon could penetrate the globe creating a lot of false positives\n const cameraPolygon = polygonizeBounds(min, max, buffer);\n\n const camPos = this.cameraPoint.clone();\n const column = (camPos.x > min.x) + (camPos.x > max.x);\n const row = (camPos.y > min.y) + (camPos.y > max.y);\n const sector = row * 3 + column;\n\n switch (sector) {\n case 0: // replace top-left point (closed polygon)\n cameraPolygon[0] = camPos;\n cameraPolygon[4] = camPos.clone();\n break;\n case 1: // insert point in the middle of top-left and top-right\n cameraPolygon.splice(1, 0, camPos);\n break;\n case 2: // replace top-right point\n cameraPolygon[1] = camPos;\n break;\n case 3: // insert point in the middle of top-left and bottom-left\n cameraPolygon.splice(4, 0, camPos);\n break;\n case 5: // insert point in the middle of top-right and bottom-right\n cameraPolygon.splice(2, 0, camPos);\n break;\n case 6: // replace bottom-left point\n cameraPolygon[3] = camPos;\n break;\n case 7: // insert point in the middle of bottom-left and bottom-right\n cameraPolygon.splice(3, 0, camPos);\n break;\n case 8: // replace bottom-right point\n cameraPolygon[2] = camPos;\n break;\n }\n\n return cameraPolygon;\n }\n\n /**\n * Checks if a tile is contained within this query geometry.\n *\n * @param {Tile} tile The tile to check.\n * @param {Transform} transform The current map transform.\n * @param {boolean} use3D A boolean indicating whether to query 3D features.\n * @param {number} cameraWrap A wrap value for offsetting the camera position.\n * @returns {?TilespaceQueryGeometry} Returns `undefined` if the tile does not intersect.\n */\n containsTile(tile: Tile, transform: Transform, use3D: boolean, cameraWrap: number = 0): ?TilespaceQueryGeometry {\n // The buffer around the query geometry is applied in screen-space.\n // transform._projectionScaler is used to compensate any extra scaling applied from the currently active projection.\n // Floating point errors when projecting into tilespace could leave a feature\n // outside the query volume even if it looks like it overlaps visually, a 1px bias value overcomes that.\n const bias = 1;\n const padding = tile.queryPadding / transform._projectionScaler + bias;\n\n const cachedQuery = use3D ?\n this._bufferedCameraMercator(padding, transform) :\n this._bufferedScreenMercator(padding, transform);\n\n let wrap = tile.tileID.wrap + (cachedQuery.unwrapped ? cameraWrap : 0);\n const geometryForTileCheck = cachedQuery.polygon.map((p) => getTilePoint(tile.tileTransform, p, wrap));\n\n if (!polygonIntersectsBox(geometryForTileCheck, 0, 0, EXTENT, EXTENT)) {\n return undefined;\n }\n\n wrap = tile.tileID.wrap + (this.screenGeometryMercator.unwrapped ? cameraWrap : 0);\n const tilespaceVec3s = this.screenGeometryMercator.polygon.map((p) => getTileVec3(tile.tileTransform, p, wrap));\n const tilespaceGeometry = tilespaceVec3s.map((v) => new Point(v[0], v[1]));\n\n const cameraMercator = transform.getFreeCameraOptions().position || new MercatorCoordinate(0, 0, 0);\n const tilespaceCameraPosition = getTileVec3(tile.tileTransform, cameraMercator, wrap);\n const tilespaceRays = tilespaceVec3s.map((tileVec) => {\n const dir = vec3.sub(tileVec, tileVec, tilespaceCameraPosition);\n vec3.normalize(dir, dir);\n return new Ray(tilespaceCameraPosition, dir);\n });\n const pixelToTileUnitsFactor = pixelsToTileUnits(tile, 1, transform.zoom) * transform._projectionScaler;\n\n return {\n queryGeometry: this,\n tilespaceGeometry,\n tilespaceRays,\n bufferedTilespaceGeometry: geometryForTileCheck,\n bufferedTilespaceBounds: clampBoundsToTileExtents(getBounds(geometryForTileCheck)),\n tile,\n tileID: tile.tileID,\n pixelToTileUnitsFactor\n };\n }\n\n /**\n * These methods add caching on top of the terrain raycasting provided by `Transform#pointCoordinate3d`.\n * Tiles come with different values of padding, however its very likely that multiple tiles share the same value of padding\n * based on the style. In that case we want to reuse the result from a previously computed terrain raycast.\n */\n\n _bufferedScreenMercator(padding: number, transform: Transform): CachedPolygon {\n const key = cacheKey(padding);\n if (this._screenRaycastCache[key]) {\n return this._screenRaycastCache[key];\n } else {\n let poly: CachedPolygon;\n\n if (transform.projection.name === 'globe') {\n poly = this._projectAndResample(this.bufferedScreenGeometry(padding), transform);\n } else {\n poly = {\n polygon: this.bufferedScreenGeometry(padding).map((p) => transform.pointCoordinate3D(p)),\n unwrapped: true\n };\n }\n\n this._screenRaycastCache[key] = poly;\n return poly;\n }\n }\n\n _bufferedCameraMercator(padding: number, transform: Transform): CachedPolygon {\n const key = cacheKey(padding);\n if (this._cameraRaycastCache[key]) {\n return this._cameraRaycastCache[key];\n } else {\n let poly: CachedPolygon;\n\n if (transform.projection.name === 'globe') {\n poly = this._projectAndResample(this.bufferedCameraGeometryGlobe(padding), transform);\n } else {\n poly = {\n polygon: this.bufferedCameraGeometry(padding).map((p) => transform.pointCoordinate3D(p)),\n unwrapped: true\n };\n }\n\n this._cameraRaycastCache[key] = poly;\n return poly;\n }\n }\n\n _projectAndResample(polygon: Point[], transform: Transform): CachedPolygon {\n // Handle a special case where either north or south pole is inside the query polygon\n const polePolygon: ?CachedPolygon = projectPolygonCoveringPoles(polygon, transform);\n\n if (polePolygon) {\n return polePolygon;\n }\n\n // Resample the polygon by adding intermediate points so that straight lines of the shape\n // are correctly projected on the surface of the globe.\n const resampled = unwrapQueryPolygon(resamplePolygon(polygon, transform).map(p => new Point(wrap(p.x), p.y)), transform);\n\n return {\n polygon: resampled.polygon.map(p => new MercatorCoordinate(p.x, p.y)),\n unwrapped: resampled.unwrapped\n };\n }\n}\n\n// Checks whether the provided polygon is crossing the antimeridian line and unwraps it if necessary.\n// The resulting polygon is continuous\nexport function unwrapQueryPolygon(polygon: Point[], tr: Transform): {polygon: Point[], unwrapped: boolean} {\n let unwrapped = false;\n\n // Traverse edges of the polygon and unwrap vertices that are crossing the antimeridian.\n let maxX = -Infinity;\n let startEdge = 0;\n\n for (let e = 0; e < polygon.length - 1; e++) {\n if (polygon[e].x > maxX) {\n maxX = polygon[e].x;\n startEdge = e;\n }\n }\n\n for (let i = 0; i < polygon.length - 1; i++) {\n const edge = (startEdge + i) % (polygon.length - 1);\n const a = polygon[edge];\n const b = polygon[edge + 1];\n\n if (Math.abs(a.x - b.x) > 0.5) {\n // A straight line drawn on the globe can't have longer length than 0.5 on the x-axis\n // without crossing the antimeridian\n if (a.x < b.x) {\n a.x += 1;\n\n if (edge === 0) {\n // First and last points are duplicate for closed polygons\n polygon[polygon.length - 1].x += 1;\n }\n } else {\n b.x += 1;\n\n if (edge + 1 === polygon.length - 1) {\n polygon[0].x += 1;\n }\n }\n\n unwrapped = true;\n }\n }\n\n const cameraX = mercatorXfromLng(tr.center.lng);\n if (unwrapped && cameraX < Math.abs(cameraX - 1)) {\n polygon.forEach(p => { p.x -= 1; });\n }\n\n return {\n polygon,\n unwrapped\n };\n}\n\n// Special function for handling scenarios where one of the poles is inside the query polygon.\n// Finding projection of these kind of polygons is more involving as projecting just the corners will\n// produce a degenerate (self-intersecting, non-continuous, etc.) polygon in mercator coordinates\nexport function projectPolygonCoveringPoles(polygon: Point[], tr: Transform): ?CachedPolygon {\n const matrix = mat4.multiply([], tr.pixelMatrix, tr.globeMatrix);\n\n // Transform north and south pole coordinates to the screen to see if they're\n // inside the query polygon\n const northPole = [0, -GLOBE_RADIUS, 0, 1];\n const southPole = [0, GLOBE_RADIUS, 0, 1];\n const center = [0, 0, 0, 1];\n\n vec4.transformMat4(northPole, northPole, matrix);\n vec4.transformMat4(southPole, southPole, matrix);\n vec4.transformMat4(center, center, matrix);\n\n const screenNp = new Point(northPole[0] / northPole[3], northPole[1] / northPole[3]);\n const screenSp = new Point(southPole[0] / southPole[3], southPole[1] / southPole[3]);\n const containsNp = polygonContainsPoint(polygon, screenNp) && northPole[3] < center[3];\n const containsSp = polygonContainsPoint(polygon, screenSp) && southPole[3] < center[3];\n\n if (!containsNp && !containsSp) {\n return null;\n }\n\n // Project corner points of the polygon and traverse the ring to find the edge that's\n // crossing the zero longitude border.\n const result = findEdgeCrossingAntimeridian(polygon, tr, containsNp ? -1 : 1);\n\n if (!result) {\n return null;\n }\n\n // Start constructing the new polygon by resampling edges until the crossing edge\n const {idx, t} = result;\n let partA = idx > 1 ? resamplePolygon(polygon.slice(0, idx), tr) : [];\n let partB = idx < polygon.length ? resamplePolygon(polygon.slice(idx), tr) : [];\n\n partA = partA.map(p => new Point(wrap(p.x), p.y));\n partB = partB.map(p => new Point(wrap(p.x), p.y));\n\n // Resample first section of the ring (up to the edge that crosses the 0-line)\n const resampled = [...partA];\n\n if (resampled.length === 0) {\n resampled.push(partB[partB.length - 1]);\n }\n\n // Find location of the crossing by interpolating mercator coordinates.\n // This will produce slightly off result as the crossing edge is not actually\n // linear on the globe.\n const a = resampled[resampled.length - 1];\n const b = partB.length === 0 ? partA[0] : partB[0];\n const intersectionY = interpolate(a.y, b.y, t);\n\n let mid;\n\n if (containsNp) {\n mid = [\n new Point(0, intersectionY),\n new Point(0, 0),\n new Point(1, 0),\n new Point(1, intersectionY)\n ];\n } else {\n mid = [\n new Point(1, intersectionY),\n new Point(1, 1),\n new Point(0, 1),\n new Point(0, intersectionY)\n ];\n }\n\n resampled.push(...mid);\n\n // Resample to the second section of the ring\n if (partB.length === 0) {\n resampled.push(partA[0]);\n } else {\n resampled.push(...partB);\n }\n\n return {\n polygon: resampled.map(p => new MercatorCoordinate(p.x, p.y)),\n unwrapped: false\n };\n}\n\nfunction resamplePolygon(polygon: Point[], transform: Transform): Point[] {\n // Choose a tolerance value for the resampling logic that produces sufficiently\n // accurate polygons without creating too many points. The value 1 / 256 was chosen\n // based on empirical testing\n const tolerance = 1.0 / 256.0;\n return resample(\n polygon,\n p => {\n const mc = transform.pointCoordinate3D(p);\n p.x = mc.x;\n p.y = mc.y;\n },\n tolerance);\n}\n\nfunction wrap(mercatorX: number): number {\n return mercatorX < 0 ? 1 + (mercatorX % 1) : mercatorX % 1;\n}\n\nfunction findEdgeCrossingAntimeridian(polygon: Point[], tr: Transform, direction: number): ?{idx: number, t: number} {\n for (let i = 1; i < polygon.length; i++) {\n const a = wrap(tr.pointCoordinate3D(polygon[i - 1]).x);\n const b = wrap(tr.pointCoordinate3D(polygon[i]).x);\n\n // direction < 0: mercator coordinate 0 will be crossed from left\n // direction > 0: mercator coordinate 1 will be crossed from right\n if (direction < 0) {\n if (a < b) {\n return {idx: i, t: -a / (b - 1 - a)};\n }\n } else {\n if (b < a) {\n return {idx: i, t: (1 - a) / (b + 1 - a)};\n }\n }\n }\n\n return null;\n}\n\n//Padding is in screen pixels and is only used as a coarse check, so 2 decimal places of precision should be good enough for a cache.\nfunction cacheKey(padding: number): number {\n return (padding * 100) | 0;\n}\n\nexport type TilespaceQueryGeometry = {\n queryGeometry: QueryGeometry,\n tilespaceGeometry: Point[],\n tilespaceRays: Ray[],\n bufferedTilespaceGeometry: Point[],\n bufferedTilespaceBounds: { min: Point, max: Point},\n tile: Tile,\n tileID: OverscaledTileID,\n pixelToTileUnitsFactor: number\n};\n\nfunction clampBoundsToTileExtents(bounds: {min: Point, max: Point}): {min: Point, max: Point} {\n bounds.min.x = clamp(bounds.min.x, 0, EXTENT);\n bounds.min.y = clamp(bounds.min.y, 0, EXTENT);\n\n bounds.max.x = clamp(bounds.max.x, 0, EXTENT);\n bounds.max.y = clamp(bounds.max.y, 0, EXTENT);\n return bounds;\n}\n","// @flow\n\nimport {pick, extend} from '../util/util.js';\n\nimport {getJSON, ResourceType} from '../util/ajax.js';\nimport browser from '../util/browser.js';\n\nimport type {RequestManager} from '../util/mapbox.js';\nimport type {Callback} from '../types/callback.js';\nimport type {TileJSON} from '../types/tilejson.js';\nimport type {Cancelable} from '../types/cancelable.js';\n\nexport default function(options: any, requestManager: RequestManager, language: ?string, worldview: ?string, callback: Callback<TileJSON>): Cancelable {\n const loaded = function(err: ?Error, tileJSON: ?Object) {\n if (err) {\n return callback(err);\n } else if (tileJSON) {\n const result: any = pick(\n // explicit source options take precedence over TileJSON\n extend(tileJSON, options),\n ['tiles', 'minzoom', 'maxzoom', 'attribution', 'mapbox_logo', 'bounds', 'scheme', 'tileSize', 'encoding']\n );\n\n if (tileJSON.vector_layers) {\n result.vectorLayers = tileJSON.vector_layers;\n result.vectorLayerIds = result.vectorLayers.map((layer) => { return layer.id; });\n }\n\n /**\n * A tileset supports language localization if the TileJSON contains\n * a `language_options` object in the response.\n */\n if (tileJSON.language_options) {\n result.languageOptions = tileJSON.language_options;\n }\n\n if (tileJSON.language && tileJSON.language[tileJSON.id]) {\n result.language = tileJSON.language[tileJSON.id];\n }\n\n /**\n * A tileset supports different worldviews if the TileJSON contains\n * a `worldview_options` object in the repsonse as well as a `worldview_default` key.\n */\n if (tileJSON.worldview_options) {\n result.worldviewOptions = tileJSON.worldview_options;\n }\n\n if (tileJSON.worldview) {\n result.worldview = tileJSON.worldview[tileJSON.id];\n } else if (tileJSON.worldview_default) {\n result.worldview = tileJSON.worldview_default;\n }\n\n result.tiles = requestManager.canonicalizeTileset(result, options.url);\n callback(null, result);\n }\n };\n\n if (options.url) {\n return getJSON(requestManager.transformRequest(requestManager.normalizeSourceURL(options.url, null, language, worldview), ResourceType.Source), loaded);\n } else {\n return browser.frame(() => loaded(null, options));\n }\n}\n","// @flow\n\nimport LngLatBounds from '../geo/lng_lat_bounds.js';\nimport {mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate.js';\n\nimport type {CanonicalTileID} from './tile_id.js';\n\nclass TileBounds {\n bounds: LngLatBounds;\n minzoom: number;\n maxzoom: number;\n\n constructor(bounds: [number, number, number, number], minzoom: ?number, maxzoom: ?number) {\n this.bounds = LngLatBounds.convert(this.validateBounds(bounds));\n this.minzoom = minzoom || 0;\n this.maxzoom = maxzoom || 24;\n }\n\n validateBounds(bounds: [number, number, number, number]): [number, number, number, number] {\n // make sure the bounds property contains valid longitude and latitudes\n if (!Array.isArray(bounds) || bounds.length !== 4) return [-180, -90, 180, 90];\n return [Math.max(-180, bounds[0]), Math.max(-90, bounds[1]), Math.min(180, bounds[2]), Math.min(90, bounds[3])];\n }\n\n contains(tileID: CanonicalTileID): boolean {\n const worldSize = Math.pow(2, tileID.z);\n const level = {\n minX: Math.floor(mercatorXfromLng(this.bounds.getWest()) * worldSize),\n minY: Math.floor(mercatorYfromLat(this.bounds.getNorth()) * worldSize),\n maxX: Math.ceil(mercatorXfromLng(this.bounds.getEast()) * worldSize),\n maxY: Math.ceil(mercatorYfromLat(this.bounds.getSouth()) * worldSize)\n };\n const hit = tileID.x >= level.minX && tileID.x < level.maxX && tileID.y >= level.minY && tileID.y < level.maxY;\n return hit;\n }\n}\n\nexport default TileBounds;\n","// @flow\nimport assert from 'assert';\n\nimport type {StructArray} from '../util/struct_array.js';\nimport type {TriangleIndexArray, LineIndexArray, LineStripIndexArray} from '../data/index_array_type.js';\nimport type Context from '../gl/context.js';\n\nclass IndexBuffer {\n context: Context;\n buffer: WebGLBuffer;\n dynamicDraw: boolean;\n\n constructor(context: Context, array: TriangleIndexArray | LineIndexArray | LineStripIndexArray, dynamicDraw?: boolean) {\n this.context = context;\n const gl = context.gl;\n this.buffer = gl.createBuffer();\n this.dynamicDraw = Boolean(dynamicDraw);\n\n // The bound index buffer is part of vertex array object state. We don't want to\n // modify whatever VAO happens to be currently bound, so make sure the default\n // vertex array provided by the context is bound instead.\n this.context.unbindVAO();\n\n context.bindElementBuffer.set(this.buffer);\n gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, array.arrayBuffer, this.dynamicDraw ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW);\n\n if (!this.dynamicDraw) {\n array.destroy();\n }\n }\n\n bind() {\n this.context.bindElementBuffer.set(this.buffer);\n }\n\n updateData(array: StructArray) {\n const gl = this.context.gl;\n assert(this.dynamicDraw);\n // The right VAO will get this buffer re-bound later in VertexArrayObject#bind\n // See https://github.com/mapbox/mapbox-gl-js/issues/5620\n this.context.unbindVAO();\n this.bind();\n gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER, 0, array.arrayBuffer);\n }\n\n destroy() {\n const gl = this.context.gl;\n if (this.buffer) {\n gl.deleteBuffer(this.buffer);\n delete this.buffer;\n }\n }\n}\n\nexport default IndexBuffer;\n","// @flow\n\nimport assert from 'assert';\n\nimport type {\n StructArray,\n StructArrayMember\n} from '../util/struct_array.js';\n\nimport type Program from '../render/program.js';\nimport type Context from '../gl/context.js';\n\n/**\n * @enum {string} AttributeType\n * @private\n * @readonly\n */\nconst AttributeType = {\n Int8: 'BYTE',\n Uint8: 'UNSIGNED_BYTE',\n Int16: 'SHORT',\n Uint16: 'UNSIGNED_SHORT',\n Int32: 'INT',\n Uint32: 'UNSIGNED_INT',\n Float32: 'FLOAT'\n};\n\n/**\n * The `VertexBuffer` class turns a `StructArray` into a WebGL buffer. Each member of the StructArray's\n * Struct type is converted to a WebGL atribute.\n * @private\n */\nclass VertexBuffer {\n length: number;\n attributes: $ReadOnlyArray<StructArrayMember>;\n itemSize: number;\n dynamicDraw: ?boolean;\n context: Context;\n buffer: WebGLBuffer;\n\n /**\n * @param dynamicDraw Whether this buffer will be repeatedly updated.\n * @private\n */\n constructor(context: Context, array: StructArray, attributes: $ReadOnlyArray<StructArrayMember>, dynamicDraw?: boolean) {\n this.length = array.length;\n this.attributes = attributes;\n this.itemSize = array.bytesPerElement;\n this.dynamicDraw = dynamicDraw;\n\n this.context = context;\n const gl = context.gl;\n this.buffer = gl.createBuffer();\n context.bindVertexBuffer.set(this.buffer);\n gl.bufferData(gl.ARRAY_BUFFER, array.arrayBuffer, this.dynamicDraw ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW);\n\n if (!this.dynamicDraw) {\n array.destroy();\n }\n }\n\n bind() {\n this.context.bindVertexBuffer.set(this.buffer);\n }\n\n updateData(array: StructArray) {\n assert(array.length === this.length);\n const gl = this.context.gl;\n this.bind();\n gl.bufferSubData(gl.ARRAY_BUFFER, 0, array.arrayBuffer);\n }\n\n enableAttributes(gl: WebGLRenderingContext, program: Program<*>) {\n for (let j = 0; j < this.attributes.length; j++) {\n const member = this.attributes[j];\n const attribIndex: number | void = program.attributes[member.name];\n if (attribIndex !== undefined) {\n gl.enableVertexAttribArray(attribIndex);\n }\n }\n }\n\n /**\n * Set the attribute pointers in a WebGL context.\n * @param gl The WebGL context.\n * @param program The active WebGL program.\n * @param vertexOffset Index of the starting vertex of the segment.\n */\n setVertexAttribPointers(gl: WebGLRenderingContext, program: Program<*>, vertexOffset: ?number) {\n for (let j = 0; j < this.attributes.length; j++) {\n const member = this.attributes[j];\n const attribIndex: number | void = program.attributes[member.name];\n\n if (attribIndex !== undefined) {\n gl.vertexAttribPointer(\n attribIndex,\n member.components,\n (gl: any)[AttributeType[member.type]],\n false,\n this.itemSize,\n member.offset + (this.itemSize * (vertexOffset || 0))\n );\n }\n }\n }\n\n /**\n * Destroy the GL buffer bound to the given WebGL context.\n */\n destroy() {\n const gl = this.context.gl;\n if (this.buffer) {\n gl.deleteBuffer(this.buffer);\n delete this.buffer;\n }\n }\n}\n\nexport default VertexBuffer;\n","// @flow\n\nimport Color from '../style-spec/util/color.js';\nimport assert from 'assert';\n\nimport type Context from './context.js';\nimport type {\n BlendFuncType,\n BlendEquationType,\n ColorMaskType,\n DepthRangeType,\n DepthMaskType,\n StencilFuncType,\n StencilOpType,\n DepthFuncType,\n TextureUnitType,\n ViewportType,\n CullFaceModeType,\n FrontFaceType,\n} from './types.js';\n\nexport interface Value<T> {\n current: T;\n default: T;\n dirty: boolean;\n get(): T;\n setDefault(): void;\n set(value: T): void;\n}\n\nclass BaseValue<T> implements Value<T> {\n gl: WebGLRenderingContext;\n current: T;\n default: T;\n dirty: boolean;\n\n constructor(context: Context) {\n this.gl = context.gl;\n this.default = this.getDefault();\n this.current = this.default;\n this.dirty = false;\n }\n\n get(): T {\n return this.current;\n }\n set(value: T) { // eslint-disable-line\n // overridden in child classes;\n }\n\n getDefault(): T {\n return this.default; // overriden in child classes\n }\n setDefault() {\n this.set(this.default);\n }\n}\n\nexport class ClearColor extends BaseValue<Color> {\n getDefault(): Color {\n return Color.transparent;\n }\n set(v: Color) {\n const c = this.current;\n if (v.r === c.r && v.g === c.g && v.b === c.b && v.a === c.a && !this.dirty) return;\n this.gl.clearColor(v.r, v.g, v.b, v.a);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class ClearDepth extends BaseValue<number> {\n getDefault(): number {\n return 1;\n }\n set(v: number) {\n if (v === this.current && !this.dirty) return;\n this.gl.clearDepth(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class ClearStencil extends BaseValue<number> {\n getDefault(): number {\n return 0;\n }\n set(v: number) {\n if (v === this.current && !this.dirty) return;\n this.gl.clearStencil(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class ColorMask extends BaseValue<ColorMaskType> {\n getDefault(): ColorMaskType {\n return [true, true, true, true];\n }\n set(v: ColorMaskType) {\n const c = this.current;\n if (v[0] === c[0] && v[1] === c[1] && v[2] === c[2] && v[3] === c[3] && !this.dirty) return;\n this.gl.colorMask(v[0], v[1], v[2], v[3]);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class DepthMask extends BaseValue<DepthMaskType> {\n getDefault(): DepthMaskType {\n return true;\n }\n set(v: DepthMaskType): void {\n if (v === this.current && !this.dirty) return;\n this.gl.depthMask(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class StencilMask extends BaseValue<number> {\n getDefault(): number {\n return 0xFF;\n }\n set(v: number): void {\n if (v === this.current && !this.dirty) return;\n this.gl.stencilMask(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class StencilFunc extends BaseValue<StencilFuncType> {\n getDefault(): StencilFuncType {\n return {\n func: this.gl.ALWAYS,\n ref: 0,\n mask: 0xFF\n };\n }\n set(v: StencilFuncType): void {\n const c = this.current;\n if (v.func === c.func && v.ref === c.ref && v.mask === c.mask && !this.dirty) return;\n // Assume UNSIGNED_INT_24_8 storage, with 8 bits dedicated to stencil.\n // Please revise your stencil values if this threshold is triggered.\n assert(v.ref >= 0 && v.ref <= 255);\n this.gl.stencilFunc(v.func, v.ref, v.mask);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class StencilOp extends BaseValue<StencilOpType> {\n getDefault(): StencilOpType {\n const gl = this.gl;\n return [gl.KEEP, gl.KEEP, gl.KEEP];\n }\n set(v: StencilOpType) {\n const c = this.current;\n if (v[0] === c[0] && v[1] === c[1] && v[2] === c[2] && !this.dirty) return;\n this.gl.stencilOp(v[0], v[1], v[2]);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class StencilTest extends BaseValue<boolean> {\n getDefault(): boolean {\n return false;\n }\n set(v: boolean) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n if (v) {\n gl.enable(gl.STENCIL_TEST);\n } else {\n gl.disable(gl.STENCIL_TEST);\n }\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class DepthRange extends BaseValue<DepthRangeType> {\n getDefault(): DepthRangeType {\n return [0, 1];\n }\n set(v: DepthRangeType) {\n const c = this.current;\n if (v[0] === c[0] && v[1] === c[1] && !this.dirty) return;\n this.gl.depthRange(v[0], v[1]);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class DepthTest extends BaseValue<boolean> {\n getDefault(): boolean {\n return false;\n }\n set(v: boolean) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n if (v) {\n gl.enable(gl.DEPTH_TEST);\n } else {\n gl.disable(gl.DEPTH_TEST);\n }\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class DepthFunc extends BaseValue<DepthFuncType> {\n getDefault(): DepthFuncType {\n return this.gl.LESS;\n }\n set(v: DepthFuncType) {\n if (v === this.current && !this.dirty) return;\n this.gl.depthFunc(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class Blend extends BaseValue<boolean> {\n getDefault(): boolean {\n return false;\n }\n set(v: boolean) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n if (v) {\n gl.enable(gl.BLEND);\n } else {\n gl.disable(gl.BLEND);\n }\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BlendFunc extends BaseValue<BlendFuncType> {\n getDefault(): BlendFuncType {\n const gl = this.gl;\n return [gl.ONE, gl.ZERO];\n }\n set(v: BlendFuncType) {\n const c = this.current;\n if (v[0] === c[0] && v[1] === c[1] && !this.dirty) return;\n this.gl.blendFunc(v[0], v[1]);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BlendColor extends BaseValue<Color> {\n getDefault(): Color {\n return Color.transparent;\n }\n set(v: Color) {\n const c = this.current;\n if (v.r === c.r && v.g === c.g && v.b === c.b && v.a === c.a && !this.dirty) return;\n this.gl.blendColor(v.r, v.g, v.b, v.a);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BlendEquation extends BaseValue<BlendEquationType> {\n getDefault(): BlendEquationType {\n return this.gl.FUNC_ADD;\n }\n set(v: BlendEquationType) {\n if (v === this.current && !this.dirty) return;\n this.gl.blendEquation(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class CullFace extends BaseValue<boolean> {\n getDefault(): boolean {\n return false;\n }\n set(v: boolean) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n if (v) {\n gl.enable(gl.CULL_FACE);\n } else {\n gl.disable(gl.CULL_FACE);\n }\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class CullFaceSide extends BaseValue<CullFaceModeType> {\n getDefault(): CullFaceModeType {\n return this.gl.BACK;\n }\n set(v: CullFaceModeType) {\n if (v === this.current && !this.dirty) return;\n this.gl.cullFace(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class FrontFace extends BaseValue<FrontFaceType> {\n getDefault(): FrontFaceType {\n return this.gl.CCW;\n }\n set(v: FrontFaceType) {\n if (v === this.current && !this.dirty) return;\n this.gl.frontFace(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class Program extends BaseValue<?WebGLProgram> {\n getDefault(): WebGLProgram {\n return null;\n }\n set(v: ?WebGLProgram) {\n if (v === this.current && !this.dirty) return;\n this.gl.useProgram(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class ActiveTextureUnit extends BaseValue<TextureUnitType> {\n getDefault(): TextureUnitType {\n return this.gl.TEXTURE0;\n }\n set(v: TextureUnitType) {\n if (v === this.current && !this.dirty) return;\n this.gl.activeTexture(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class Viewport extends BaseValue<ViewportType> {\n getDefault(): ViewportType {\n const gl = this.gl;\n return [0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight];\n }\n set(v: ViewportType) {\n const c = this.current;\n if (v[0] === c[0] && v[1] === c[1] && v[2] === c[2] && v[3] === c[3] && !this.dirty) return;\n this.gl.viewport(v[0], v[1], v[2], v[3]);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BindFramebuffer extends BaseValue<?WebGLFramebuffer> {\n getDefault(): WebGLFramebuffer {\n return null;\n }\n set(v: ?WebGLFramebuffer) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BindRenderbuffer extends BaseValue<?WebGLRenderbuffer> {\n getDefault(): WebGLRenderbuffer {\n return null;\n }\n set(v: ?WebGLRenderbuffer) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n gl.bindRenderbuffer(gl.RENDERBUFFER, v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BindTexture extends BaseValue<?WebGLTexture> {\n getDefault(): WebGLTexture {\n return null;\n }\n set(v: ?WebGLTexture) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n gl.bindTexture(gl.TEXTURE_2D, v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BindVertexBuffer extends BaseValue<?WebGLBuffer> {\n getDefault(): WebGLBuffer {\n return null;\n }\n set(v: ?WebGLBuffer) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n gl.bindBuffer(gl.ARRAY_BUFFER, v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BindElementBuffer extends BaseValue<?WebGLBuffer> {\n getDefault(): WebGLBuffer {\n return null;\n }\n set(v: ?WebGLBuffer) {\n // Always rebind\n const gl = this.gl;\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class BindVertexArrayOES extends BaseValue<any> {\n vao: any;\n\n constructor(context: Context) {\n super(context);\n this.vao = context.extVertexArrayObject;\n }\n getDefault(): any {\n return null;\n }\n set(v: any) {\n if (!this.vao || (v === this.current && !this.dirty)) return;\n this.vao.bindVertexArrayOES(v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class PixelStoreUnpack extends BaseValue<number> {\n getDefault(): number {\n return 4;\n }\n set(v: number) {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class PixelStoreUnpackPremultiplyAlpha extends BaseValue<boolean> {\n getDefault(): boolean {\n return false;\n }\n set(v: boolean): void {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, (v: any));\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class PixelStoreUnpackFlipY extends BaseValue<boolean> {\n getDefault(): boolean {\n return false;\n }\n set(v: boolean): void {\n if (v === this.current && !this.dirty) return;\n const gl = this.gl;\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, (v: any));\n this.current = v;\n this.dirty = false;\n }\n}\n\nclass FramebufferAttachment<T> extends BaseValue<?T> {\n parent: WebGLFramebuffer;\n context: Context;\n\n constructor(context: Context, parent: WebGLFramebuffer) {\n super(context);\n this.context = context;\n this.parent = parent;\n }\n getDefault(): null {\n return null;\n }\n}\n\nexport class ColorAttachment extends FramebufferAttachment<WebGLTexture> {\n setDirty() {\n this.dirty = true;\n }\n set(v: ?WebGLTexture): void {\n if (v === this.current && !this.dirty) return;\n this.context.bindFramebuffer.set(this.parent);\n // note: it's possible to attach a renderbuffer to the color\n // attachment point, but thus far MBGL only uses textures for color\n const gl = this.gl;\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, v, 0);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class DepthAttachment extends FramebufferAttachment<WebGLRenderbuffer> {\n attachment(): number { return this.gl.DEPTH_ATTACHMENT; }\n set(v: ?WebGLRenderbuffer): void {\n if (v === this.current && !this.dirty) return;\n this.context.bindFramebuffer.set(this.parent);\n // note: it's possible to attach a texture to the depth attachment\n // point, but thus far MBGL only uses renderbuffers for depth\n const gl = this.gl;\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, this.attachment(), gl.RENDERBUFFER, v);\n this.current = v;\n this.dirty = false;\n }\n}\n\nexport class DepthStencilAttachment extends DepthAttachment {\n attachment(): number { return this.gl.DEPTH_STENCIL_ATTACHMENT; }\n}\n","// @flow\nimport {ColorAttachment, DepthAttachment} from './value.js';\n\nimport type Context from './context.js';\nimport assert from 'assert';\n\nclass Framebuffer {\n context: Context;\n width: number;\n height: number;\n framebuffer: WebGLFramebuffer;\n colorAttachment: ColorAttachment;\n depthAttachment: DepthAttachment;\n\n constructor(context: Context, width: number, height: number, hasDepth: boolean) {\n this.context = context;\n this.width = width;\n this.height = height;\n const gl = context.gl;\n const fbo = this.framebuffer = gl.createFramebuffer();\n\n this.colorAttachment = new ColorAttachment(context, fbo);\n if (hasDepth) {\n this.depthAttachment = new DepthAttachment(context, fbo);\n }\n assert(gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE);\n }\n\n destroy() {\n const gl = this.context.gl;\n\n const texture = this.colorAttachment.get();\n if (texture) gl.deleteTexture(texture);\n\n if (this.depthAttachment) {\n const renderbuffer = this.depthAttachment.get();\n if (renderbuffer) gl.deleteRenderbuffer(renderbuffer);\n }\n\n gl.deleteFramebuffer(this.framebuffer);\n }\n}\n\nexport default Framebuffer;\n","// @flow\nimport IndexBuffer from './index_buffer.js';\n\nimport VertexBuffer from './vertex_buffer.js';\nimport Framebuffer from './framebuffer.js';\nimport DepthMode from './depth_mode.js';\nimport StencilMode from './stencil_mode.js';\nimport ColorMode from './color_mode.js';\nimport CullFaceMode from './cull_face_mode.js';\nimport {deepEqual} from '../util/util.js';\nimport {ClearColor, ClearDepth, ClearStencil, ColorMask, DepthMask, StencilMask, StencilFunc, StencilOp, StencilTest, DepthRange, DepthTest, DepthFunc, Blend, BlendFunc, BlendColor, BlendEquation, CullFace, CullFaceSide, FrontFace, Program, ActiveTextureUnit, Viewport, BindFramebuffer, BindRenderbuffer, BindTexture, BindVertexBuffer, BindElementBuffer, BindVertexArrayOES, PixelStoreUnpack, PixelStoreUnpackPremultiplyAlpha, PixelStoreUnpackFlipY} from './value.js';\n\nimport type {TriangleIndexArray, LineIndexArray, LineStripIndexArray} from '../data/index_array_type.js';\nimport type {\n StructArray,\n StructArrayMember\n} from '../util/struct_array.js';\nimport type Color from '../style-spec/util/color.js';\n\ntype ClearArgs = {\n color?: Color,\n depth?: number,\n stencil?: number\n};\n\nclass Context {\n gl: WebGLRenderingContext;\n extVertexArrayObject: any;\n currentNumAttributes: ?number;\n maxTextureSize: number;\n\n clearColor: ClearColor;\n clearDepth: ClearDepth;\n clearStencil: ClearStencil;\n colorMask: ColorMask;\n depthMask: DepthMask;\n stencilMask: StencilMask;\n stencilFunc: StencilFunc;\n stencilOp: StencilOp;\n stencilTest: StencilTest;\n depthRange: DepthRange;\n depthTest: DepthTest;\n depthFunc: DepthFunc;\n blend: Blend;\n blendFunc: BlendFunc;\n blendColor: BlendColor;\n blendEquation: BlendEquation;\n cullFace: CullFace;\n cullFaceSide: CullFaceSide;\n frontFace: FrontFace;\n program: Program;\n activeTexture: ActiveTextureUnit;\n viewport: Viewport;\n bindFramebuffer: BindFramebuffer;\n bindRenderbuffer: BindRenderbuffer;\n bindTexture: BindTexture;\n bindVertexBuffer: BindVertexBuffer;\n bindElementBuffer: BindElementBuffer;\n bindVertexArrayOES: BindVertexArrayOES;\n pixelStoreUnpack: PixelStoreUnpack;\n pixelStoreUnpackPremultiplyAlpha: PixelStoreUnpackPremultiplyAlpha;\n pixelStoreUnpackFlipY: PixelStoreUnpackFlipY;\n\n extTextureFilterAnisotropic: any;\n extTextureFilterAnisotropicMax: any;\n extTextureHalfFloat: any;\n extRenderToTextureHalfFloat: any;\n extStandardDerivatives: any;\n extTimerQuery: any;\n\n extTextureFilterAnisotropicForceOff: boolean;\n extStandardDerivativesForceOff: boolean;\n\n constructor(gl: WebGLRenderingContext) {\n this.gl = gl;\n this.extVertexArrayObject = this.gl.getExtension('OES_vertex_array_object');\n\n this.clearColor = new ClearColor(this);\n this.clearDepth = new ClearDepth(this);\n this.clearStencil = new ClearStencil(this);\n this.colorMask = new ColorMask(this);\n this.depthMask = new DepthMask(this);\n this.stencilMask = new StencilMask(this);\n this.stencilFunc = new StencilFunc(this);\n this.stencilOp = new StencilOp(this);\n this.stencilTest = new StencilTest(this);\n this.depthRange = new DepthRange(this);\n this.depthTest = new DepthTest(this);\n this.depthFunc = new DepthFunc(this);\n this.blend = new Blend(this);\n this.blendFunc = new BlendFunc(this);\n this.blendColor = new BlendColor(this);\n this.blendEquation = new BlendEquation(this);\n this.cullFace = new CullFace(this);\n this.cullFaceSide = new CullFaceSide(this);\n this.frontFace = new FrontFace(this);\n this.program = new Program(this);\n this.activeTexture = new ActiveTextureUnit(this);\n this.viewport = new Viewport(this);\n this.bindFramebuffer = new BindFramebuffer(this);\n this.bindRenderbuffer = new BindRenderbuffer(this);\n this.bindTexture = new BindTexture(this);\n this.bindVertexBuffer = new BindVertexBuffer(this);\n this.bindElementBuffer = new BindElementBuffer(this);\n this.bindVertexArrayOES = this.extVertexArrayObject && new BindVertexArrayOES(this);\n this.pixelStoreUnpack = new PixelStoreUnpack(this);\n this.pixelStoreUnpackPremultiplyAlpha = new PixelStoreUnpackPremultiplyAlpha(this);\n this.pixelStoreUnpackFlipY = new PixelStoreUnpackFlipY(this);\n\n this.extTextureFilterAnisotropic = (\n gl.getExtension('EXT_texture_filter_anisotropic') ||\n gl.getExtension('MOZ_EXT_texture_filter_anisotropic') ||\n gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic')\n );\n if (this.extTextureFilterAnisotropic) {\n this.extTextureFilterAnisotropicMax = gl.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT);\n }\n this.extTextureFilterAnisotropicForceOff = false;\n this.extStandardDerivativesForceOff = false;\n\n this.extTextureHalfFloat = gl.getExtension('OES_texture_half_float');\n if (this.extTextureHalfFloat) {\n gl.getExtension('OES_texture_half_float_linear');\n this.extRenderToTextureHalfFloat = gl.getExtension('EXT_color_buffer_half_float');\n }\n this.extStandardDerivatives = gl.getExtension('OES_standard_derivatives');\n\n this.extTimerQuery = gl.getExtension('EXT_disjoint_timer_query');\n this.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n }\n\n setDefault() {\n this.unbindVAO();\n\n this.clearColor.setDefault();\n this.clearDepth.setDefault();\n this.clearStencil.setDefault();\n this.colorMask.setDefault();\n this.depthMask.setDefault();\n this.stencilMask.setDefault();\n this.stencilFunc.setDefault();\n this.stencilOp.setDefault();\n this.stencilTest.setDefault();\n this.depthRange.setDefault();\n this.depthTest.setDefault();\n this.depthFunc.setDefault();\n this.blend.setDefault();\n this.blendFunc.setDefault();\n this.blendColor.setDefault();\n this.blendEquation.setDefault();\n this.cullFace.setDefault();\n this.cullFaceSide.setDefault();\n this.frontFace.setDefault();\n this.program.setDefault();\n this.activeTexture.setDefault();\n this.bindFramebuffer.setDefault();\n this.pixelStoreUnpack.setDefault();\n this.pixelStoreUnpackPremultiplyAlpha.setDefault();\n this.pixelStoreUnpackFlipY.setDefault();\n }\n\n setDirty() {\n this.clearColor.dirty = true;\n this.clearDepth.dirty = true;\n this.clearStencil.dirty = true;\n this.colorMask.dirty = true;\n this.depthMask.dirty = true;\n this.stencilMask.dirty = true;\n this.stencilFunc.dirty = true;\n this.stencilOp.dirty = true;\n this.stencilTest.dirty = true;\n this.depthRange.dirty = true;\n this.depthTest.dirty = true;\n this.depthFunc.dirty = true;\n this.blend.dirty = true;\n this.blendFunc.dirty = true;\n this.blendColor.dirty = true;\n this.blendEquation.dirty = true;\n this.cullFace.dirty = true;\n this.cullFaceSide.dirty = true;\n this.frontFace.dirty = true;\n this.program.dirty = true;\n this.activeTexture.dirty = true;\n this.viewport.dirty = true;\n this.bindFramebuffer.dirty = true;\n this.bindRenderbuffer.dirty = true;\n this.bindTexture.dirty = true;\n this.bindVertexBuffer.dirty = true;\n this.bindElementBuffer.dirty = true;\n if (this.extVertexArrayObject) {\n this.bindVertexArrayOES.dirty = true;\n }\n this.pixelStoreUnpack.dirty = true;\n this.pixelStoreUnpackPremultiplyAlpha.dirty = true;\n this.pixelStoreUnpackFlipY.dirty = true;\n }\n\n createIndexBuffer(array: TriangleIndexArray | LineIndexArray | LineStripIndexArray, dynamicDraw?: boolean): IndexBuffer {\n return new IndexBuffer(this, array, dynamicDraw);\n }\n\n createVertexBuffer(array: StructArray, attributes: $ReadOnlyArray<StructArrayMember>, dynamicDraw?: boolean): VertexBuffer {\n return new VertexBuffer(this, array, attributes, dynamicDraw);\n }\n\n createRenderbuffer(storageFormat: number, width: number, height: number): ?WebGLRenderbuffer {\n const gl = this.gl;\n\n const rbo = gl.createRenderbuffer();\n this.bindRenderbuffer.set(rbo);\n gl.renderbufferStorage(gl.RENDERBUFFER, storageFormat, width, height);\n this.bindRenderbuffer.set(null);\n\n return rbo;\n }\n\n createFramebuffer(width: number, height: number, hasDepth: boolean): Framebuffer {\n return new Framebuffer(this, width, height, hasDepth);\n }\n\n clear({color, depth, stencil}: ClearArgs) {\n const gl = this.gl;\n let mask = 0;\n\n if (color) {\n mask |= gl.COLOR_BUFFER_BIT;\n this.clearColor.set(color);\n this.colorMask.set([true, true, true, true]);\n }\n\n if (typeof depth !== 'undefined') {\n mask |= gl.DEPTH_BUFFER_BIT;\n\n // Workaround for platforms where clearDepth doesn't seem to work\n // without reseting the depthRange. See https://github.com/mapbox/mapbox-gl-js/issues/3437\n this.depthRange.set([0, 1]);\n\n this.clearDepth.set(depth);\n this.depthMask.set(true);\n }\n\n if (typeof stencil !== 'undefined') {\n mask |= gl.STENCIL_BUFFER_BIT;\n this.clearStencil.set(stencil);\n this.stencilMask.set(0xFF);\n }\n\n gl.clear(mask);\n }\n\n setCullFace(cullFaceMode: $ReadOnly<CullFaceMode>) {\n if (cullFaceMode.enable === false) {\n this.cullFace.set(false);\n } else {\n this.cullFace.set(true);\n this.cullFaceSide.set(cullFaceMode.mode);\n this.frontFace.set(cullFaceMode.frontFace);\n }\n }\n\n setDepthMode(depthMode: $ReadOnly<DepthMode>) {\n if (depthMode.func === this.gl.ALWAYS && !depthMode.mask) {\n this.depthTest.set(false);\n } else {\n this.depthTest.set(true);\n this.depthFunc.set(depthMode.func);\n this.depthMask.set(depthMode.mask);\n this.depthRange.set(depthMode.range);\n }\n }\n\n setStencilMode(stencilMode: $ReadOnly<StencilMode>) {\n if (stencilMode.test.func === this.gl.ALWAYS && !stencilMode.mask) {\n this.stencilTest.set(false);\n } else {\n this.stencilTest.set(true);\n this.stencilMask.set(stencilMode.mask);\n this.stencilOp.set([stencilMode.fail, stencilMode.depthFail, stencilMode.pass]);\n this.stencilFunc.set({\n func: stencilMode.test.func,\n ref: stencilMode.ref,\n mask: stencilMode.test.mask\n });\n }\n }\n\n setColorMode(colorMode: $ReadOnly<ColorMode>) {\n if (deepEqual(colorMode.blendFunction, ColorMode.Replace)) {\n this.blend.set(false);\n } else {\n this.blend.set(true);\n this.blendFunc.set(colorMode.blendFunction);\n this.blendColor.set(colorMode.blendColor);\n }\n\n this.colorMask.set(colorMode.mask);\n }\n\n unbindVAO() {\n // Unbinding the VAO prevents other things (custom layers, new buffer creation) from\n // unintentionally changing the state of the last VAO used.\n if (this.extVertexArrayObject) {\n this.bindVertexArrayOES.set(null);\n }\n }\n}\n\nexport default Context;\n","// @flow\n\nimport {extend, pick} from '../util/util.js';\n\nimport {getImage, ResourceType} from '../util/ajax.js';\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\nimport loadTileJSON from './load_tilejson.js';\nimport {postTurnstileEvent} from '../util/mapbox.js';\nimport TileBounds from './tile_bounds.js';\nimport browser from '../util/browser.js';\n\nimport {cacheEntryPossiblyAdded} from '../util/tile_request_cache.js';\n\nimport type {Source} from './source.js';\nimport type {OverscaledTileID} from './tile_id.js';\nimport type Map from '../ui/map.js';\nimport type Painter from '../render/painter.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type Tile from './tile.js';\nimport type {Callback} from '../types/callback.js';\nimport type {Cancelable} from '../types/cancelable.js';\nimport type {TextureImage} from '../render/texture.js';\nimport type {\n RasterSourceSpecification,\n RasterDEMSourceSpecification\n} from '../style-spec/types.js';\n\nclass RasterTileSource extends Evented implements Source {\n type: 'raster' | 'raster-dem';\n id: string;\n minzoom: number;\n maxzoom: number;\n url: string;\n scheme: string;\n tileSize: number;\n\n bounds: ?[number, number, number, number];\n tileBounds: TileBounds;\n roundZoom: boolean;\n dispatcher: Dispatcher;\n map: Map;\n tiles: Array<string>;\n\n _loaded: boolean;\n _options: RasterSourceSpecification | RasterDEMSourceSpecification;\n _tileJSONRequest: ?Cancelable;\n\n constructor(id: string, options: RasterSourceSpecification | RasterDEMSourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) {\n super();\n this.id = id;\n this.dispatcher = dispatcher;\n this.setEventedParent(eventedParent);\n\n this.type = 'raster';\n this.minzoom = 0;\n this.maxzoom = 22;\n this.roundZoom = true;\n this.scheme = 'xyz';\n this.tileSize = 512;\n this._loaded = false;\n\n this._options = extend({type: 'raster'}, options);\n extend(this, pick(options, ['url', 'scheme', 'tileSize']));\n }\n\n load() {\n this._loaded = false;\n this.fire(new Event('dataloading', {dataType: 'source'}));\n this._tileJSONRequest = loadTileJSON(this._options, this.map._requestManager, null, null, (err, tileJSON) => {\n this._tileJSONRequest = null;\n this._loaded = true;\n if (err) {\n this.fire(new ErrorEvent(err));\n } else if (tileJSON) {\n extend(this, tileJSON);\n if (tileJSON.bounds) this.tileBounds = new TileBounds(tileJSON.bounds, this.minzoom, this.maxzoom);\n\n postTurnstileEvent(tileJSON.tiles);\n\n // `content` is included here to prevent a race condition where `Style#_updateSources` is called\n // before the TileJSON arrives. this makes sure the tiles needed are loaded once TileJSON arrives\n // ref: https://github.com/mapbox/mapbox-gl-js/pull/4347#discussion_r104418088\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'metadata'}));\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'content'}));\n }\n });\n }\n\n loaded(): boolean {\n return this._loaded;\n }\n\n onAdd(map: Map) {\n this.map = map;\n this.load();\n }\n\n onRemove() {\n if (this._tileJSONRequest) {\n this._tileJSONRequest.cancel();\n this._tileJSONRequest = null;\n }\n }\n\n serialize(): RasterSourceSpecification | RasterDEMSourceSpecification {\n return extend({}, this._options);\n }\n\n hasTile(tileID: OverscaledTileID): boolean {\n return !this.tileBounds || this.tileBounds.contains(tileID.canonical);\n }\n\n loadTile(tile: Tile, callback: Callback<void>) {\n const use2x = browser.devicePixelRatio >= 2;\n const url = this.map._requestManager.normalizeTileURL(tile.tileID.canonical.url(this.tiles, this.scheme), use2x, this.tileSize);\n tile.request = getImage(this.map._requestManager.transformRequest(url, ResourceType.Tile), (error, data, cacheControl, expires) => {\n delete tile.request;\n\n if (tile.aborted) {\n tile.state = 'unloaded';\n return callback(null);\n }\n\n if (error) {\n tile.state = 'errored';\n return callback(error);\n }\n\n if (!data) return callback(null);\n\n if (this.map._refreshExpiredTiles) tile.setExpiryData({cacheControl, expires});\n tile.setTexture(data, this.map.painter);\n tile.state = 'loaded';\n\n cacheEntryPossiblyAdded(this.dispatcher);\n callback(null);\n });\n }\n\n static loadTileData(tile: Tile, data: TextureImage, painter: Painter) {\n tile.setTexture(data, painter);\n }\n\n static unloadTileData(tile: Tile, painter: Painter) {\n if (tile.texture) {\n painter.saveTileTexture(tile.texture);\n }\n }\n\n abortTile(tile: Tile, callback: Callback<void>) {\n if (tile.request) {\n tile.request.cancel();\n delete tile.request;\n }\n callback();\n }\n\n unloadTile(tile: Tile, callback: Callback<void>) {\n if (tile.texture) this.map.painter.saveTileTexture(tile.texture);\n callback();\n }\n\n hasTransition(): boolean {\n return false;\n }\n}\n\nexport default RasterTileSource;\n","// @flow\nimport window from './window.js';\n\nlet supportsOffscreenCanvas: ?boolean;\n\nexport default function offscreenCanvasSupported(): boolean {\n if (supportsOffscreenCanvas == null) {\n supportsOffscreenCanvas = window.OffscreenCanvas &&\n new window.OffscreenCanvas(1, 1).getContext('2d') &&\n typeof window.createImageBitmap === 'function';\n }\n\n return supportsOffscreenCanvas;\n}\n","// @flow\n\nimport {CanonicalTileID} from './tile_id.js';\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\nimport {getImage, ResourceType} from '../util/ajax.js';\nimport EXTENT from '../data/extent.js';\nimport {RasterBoundsArray} from '../data/array_types.js';\nimport boundsAttributes from '../data/bounds_attributes.js';\nimport SegmentVector from '../data/segment.js';\nimport Texture from '../render/texture.js';\nimport MercatorCoordinate from '../geo/mercator_coordinate.js';\nimport browser from '../util/browser.js';\nimport tileTransform, {getTilePoint} from '../geo/projection/tile_transform.js';\nimport {mat3, vec3} from 'gl-matrix';\nimport window from '../util/window.js';\n\nimport type {Source} from './source.js';\nimport type {CanvasSourceSpecification} from './canvas_source.js';\nimport type Map from '../ui/map.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type Tile from './tile.js';\nimport type {Callback} from '../types/callback.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type {\n ImageSourceSpecification,\n VideoSourceSpecification\n} from '../style-spec/types.js';\nimport type Context from '../gl/context.js';\n\ntype Coordinates = [[number, number], [number, number], [number, number], [number, number]];\n\n// perspective correction for texture mapping, see https://github.com/mapbox/mapbox-gl-js/issues/9158\n// adapted from https://math.stackexchange.com/a/339033/48653\n\nfunction basisToPoints(x1, y1, x2, y2, x3, y3, x4, y4) {\n const m = [x1, x2, x3, y1, y2, y3, 1, 1, 1];\n const s = [x4, y4, 1];\n const ma = mat3.adjoint([], m);\n const [sx, sy, sz] = vec3.transformMat3(s, s, mat3.transpose(ma, ma));\n return mat3.multiply(m, [sx, 0, 0, 0, sy, 0, 0, 0, sz], m);\n}\n\nfunction getPerspectiveTransform(w, h, x1, y1, x2, y2, x3, y3, x4, y4) {\n const s = basisToPoints(0, 0, w, 0, 0, h, w, h);\n const m = basisToPoints(x1, y1, x2, y2, x3, y3, x4, y4);\n mat3.multiply(m, mat3.adjoint(s, s), m);\n return [\n m[6] / m[8] * w / EXTENT,\n m[7] / m[8] * h / EXTENT\n ];\n}\n\n/**\n * A data source containing an image.\n * See the [Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/#sources-image) for detailed documentation of options.\n *\n * @example\n * // add to map\n * map.addSource('some id', {\n * type: 'image',\n * url: 'https://www.mapbox.com/images/foo.png',\n * coordinates: [\n * [-76.54, 39.18],\n * [-76.52, 39.18],\n * [-76.52, 39.17],\n * [-76.54, 39.17]\n * ]\n * });\n *\n * // update coordinates\n * const mySource = map.getSource('some id');\n * mySource.setCoordinates([\n * [-76.54335737228394, 39.18579907229748],\n * [-76.52803659439087, 39.1838364847587],\n * [-76.5295386314392, 39.17683392507606],\n * [-76.54520273208618, 39.17876344106642]\n * ]);\n *\n * // update url and coordinates simultaneously\n * mySource.updateImage({\n * url: 'https://www.mapbox.com/images/bar.png',\n * coordinates: [\n * [-76.54335737228394, 39.18579907229748],\n * [-76.52803659439087, 39.1838364847587],\n * [-76.5295386314392, 39.17683392507606],\n * [-76.54520273208618, 39.17876344106642]\n * ]\n * });\n *\n * map.removeSource('some id'); // remove\n * @see [Example: Add an image](https://www.mapbox.com/mapbox-gl-js/example/image-on-a-map/)\n * @see [Example: Animate a series of images](https://www.mapbox.com/mapbox-gl-js/example/animate-images/)\n */\nclass ImageSource extends Evented implements Source {\n type: string;\n id: string;\n minzoom: number;\n maxzoom: number;\n tileSize: number;\n url: string;\n width: number;\n height: number;\n\n coordinates: Coordinates;\n tiles: {[_: string]: Tile};\n options: any;\n dispatcher: Dispatcher;\n map: Map;\n texture: Texture | null;\n image: HTMLImageElement | ImageBitmap | ImageData;\n tileID: CanonicalTileID;\n _boundsArray: ?RasterBoundsArray;\n boundsBuffer: ?VertexBuffer;\n boundsSegments: ?SegmentVector;\n _loaded: boolean;\n perspectiveTransform: [number, number];\n\n /**\n * @private\n */\n constructor(id: string, options: ImageSourceSpecification | VideoSourceSpecification | CanvasSourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) {\n super();\n this.id = id;\n this.dispatcher = dispatcher;\n this.coordinates = options.coordinates;\n\n this.type = 'image';\n this.minzoom = 0;\n this.maxzoom = 22;\n this.tileSize = 512;\n this.tiles = {};\n this._loaded = false;\n\n this.setEventedParent(eventedParent);\n\n this.options = options;\n }\n\n load(newCoordinates?: Coordinates, loaded?: boolean) {\n this._loaded = loaded || false;\n this.fire(new Event('dataloading', {dataType: 'source'}));\n\n this.url = this.options.url;\n\n getImage(this.map._requestManager.transformRequest(this.url, ResourceType.Image), (err, image) => {\n this._loaded = true;\n if (err) {\n this.fire(new ErrorEvent(err));\n } else if (image) {\n const {HTMLImageElement} = window;\n if (image instanceof HTMLImageElement) {\n this.image = browser.getImageData(image);\n } else {\n this.image = image;\n }\n this.width = this.image.width;\n this.height = this.image.height;\n if (newCoordinates) {\n this.coordinates = newCoordinates;\n }\n this._finishLoading();\n }\n });\n }\n\n loaded(): boolean {\n return this._loaded;\n }\n\n /**\n * Updates the image URL and, optionally, the coordinates. To avoid having the image flash after changing,\n * set the `raster-fade-duration` paint property on the raster layer to 0.\n *\n * @param {Object} options Options object.\n * @param {string} [options.url] Required image URL.\n * @param {Array<Array<number>>} [options.coordinates] Four geographical coordinates,\n * represented as arrays of longitude and latitude numbers, which define the corners of the image.\n * The coordinates start at the top left corner of the image and proceed in clockwise order.\n * They do not have to represent a rectangle.\n * @returns {ImageSource} Returns itself to allow for method chaining.\n * @example\n * // Add to an image source to the map with some initial URL and coordinates\n * map.addSource('image_source_id', {\n * type: 'image',\n * url: 'https://www.mapbox.com/images/foo.png',\n * coordinates: [\n * [-76.54, 39.18],\n * [-76.52, 39.18],\n * [-76.52, 39.17],\n * [-76.54, 39.17]\n * ]\n * });\n * // Then update the image URL and coordinates\n * imageSource.updateImage({\n * url: 'https://www.mapbox.com/images/bar.png',\n * coordinates: [\n * [-76.5433, 39.1857],\n * [-76.5280, 39.1838],\n * [-76.5295, 39.1768],\n * [-76.5452, 39.1787]\n * ]\n * });\n */\n updateImage(options: {url: string, coordinates?: Coordinates}): this {\n if (!this.image || !options.url) {\n return this;\n }\n this.options.url = options.url;\n this.load(options.coordinates, this._loaded);\n return this;\n }\n\n _finishLoading() {\n if (this.map) {\n this.setCoordinates(this.coordinates);\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'metadata'}));\n }\n }\n\n onAdd(map: Map) {\n this.map = map;\n this.load();\n }\n\n onRemove() {\n if (this.texture) this.texture.destroy();\n }\n\n /**\n * Sets the image's coordinates and re-renders the map.\n *\n * @param {Array<Array<number>>} coordinates Four geographical coordinates,\n * represented as arrays of longitude and latitude numbers, which define the corners of the image.\n * The coordinates start at the top left corner of the image and proceed in clockwise order.\n * They do not have to represent a rectangle.\n * @returns {ImageSource} Returns itself to allow for method chaining.\n * @example\n * // Add an image source to the map with some initial coordinates\n * map.addSource('image_source_id', {\n * type: 'image',\n * url: 'https://www.mapbox.com/images/foo.png',\n * coordinates: [\n * [-76.54, 39.18],\n * [-76.52, 39.18],\n * [-76.52, 39.17],\n * [-76.54, 39.17]\n * ]\n * });\n * // Then update the image coordinates\n * imageSource.setCoordinates([\n * [-76.5433, 39.1857],\n * [-76.5280, 39.1838],\n * [-76.5295, 39.1768],\n * [-76.5452, 39.1787]\n * ]);\n */\n setCoordinates(coordinates: Coordinates): this {\n this.coordinates = coordinates;\n this._boundsArray = undefined;\n\n // Calculate which mercator tile is suitable for rendering the video in\n // and create a buffer with the corner coordinates. These coordinates\n // may be outside the tile, because raster tiles aren't clipped when rendering.\n\n // transform the geo coordinates into (zoom 0) tile space coordinates\n const cornerCoords = coordinates.map(MercatorCoordinate.fromLngLat);\n\n // Compute the coordinates of the tile we'll use to hold this image's\n // render data\n this.tileID = getCoordinatesCenterTileID(cornerCoords);\n\n // Constrain min/max zoom to our tile's zoom level in order to force\n // SourceCache to request this tile (no matter what the map's zoom\n // level)\n this.minzoom = this.maxzoom = this.tileID.z;\n\n this.fire(new Event('data', {dataType:'source', sourceDataType: 'content'}));\n return this;\n }\n\n _clear() {\n this._boundsArray = undefined;\n }\n\n _prepareData(context: Context) {\n for (const w in this.tiles) {\n const tile = this.tiles[w];\n if (tile.state !== 'loaded') {\n tile.state = 'loaded';\n tile.texture = this.texture;\n }\n }\n\n if (this._boundsArray) return;\n\n const tileTr = tileTransform(this.tileID, this.map.transform.projection);\n\n // Transform the corner coordinates into the coordinate space of our tile.\n const [tl, tr, br, bl] = this.coordinates.map((coord) => {\n const projectedCoord = tileTr.projection.project(coord[0], coord[1]);\n return getTilePoint(tileTr, projectedCoord)._round();\n });\n\n this.perspectiveTransform = getPerspectiveTransform(\n this.width, this.height, tl.x, tl.y, tr.x, tr.y, bl.x, bl.y, br.x, br.y);\n\n const boundsArray = this._boundsArray = new RasterBoundsArray();\n boundsArray.emplaceBack(tl.x, tl.y, 0, 0);\n boundsArray.emplaceBack(tr.x, tr.y, EXTENT, 0);\n boundsArray.emplaceBack(bl.x, bl.y, 0, EXTENT);\n boundsArray.emplaceBack(br.x, br.y, EXTENT, EXTENT);\n\n if (this.boundsBuffer) {\n this.boundsBuffer.destroy();\n }\n this.boundsBuffer = context.createVertexBuffer(boundsArray, boundsAttributes.members);\n this.boundsSegments = SegmentVector.simpleSegment(0, 0, 4, 2);\n }\n\n prepare() {\n if (Object.keys(this.tiles).length === 0 || !this.image) return;\n\n const context = this.map.painter.context;\n const gl = context.gl;\n\n if (!this.texture) {\n this.texture = new Texture(context, this.image, gl.RGBA);\n this.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n } else {\n this.texture.update(this.image);\n }\n\n this._prepareData(context);\n }\n\n loadTile(tile: Tile, callback: Callback<void>) {\n // We have a single tile -- whoose coordinates are this.tileID -- that\n // covers the image we want to render. If that's the one being\n // requested, set it up with the image; otherwise, mark the tile as\n // `errored` to indicate that we have no data for it.\n // If the world wraps, we may have multiple \"wrapped\" copies of the\n // single tile.\n if (this.tileID && this.tileID.equals(tile.tileID.canonical)) {\n this.tiles[String(tile.tileID.wrap)] = tile;\n tile.buckets = {};\n callback(null);\n } else {\n tile.state = 'errored';\n callback(null);\n }\n }\n\n serialize(): Object {\n return {\n type: 'image',\n url: this.options.url,\n coordinates: this.coordinates\n };\n }\n\n hasTransition(): boolean {\n return false;\n }\n}\n\n/**\n * Given a list of coordinates, get their center as a coordinate.\n *\n * @returns centerpoint\n * @private\n */\nexport function getCoordinatesCenterTileID(coords: Array<MercatorCoordinate>): CanonicalTileID {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (const coord of coords) {\n minX = Math.min(minX, coord.x);\n minY = Math.min(minY, coord.y);\n maxX = Math.max(maxX, coord.x);\n maxY = Math.max(maxY, coord.y);\n }\n\n const dx = maxX - minX;\n const dy = maxY - minY;\n const dMax = Math.max(dx, dy);\n const zoom = Math.max(0, Math.floor(-Math.log(dMax) / Math.LN2));\n const tilesAtZoom = Math.pow(2, zoom);\n\n return new CanonicalTileID(\n zoom,\n Math.floor((minX + maxX) / 2 * tilesAtZoom),\n Math.floor((minY + maxY) / 2 * tilesAtZoom));\n}\n\nexport default ImageSource;\n","// @flow\n\nimport {bindAll} from '../util/util.js';\n\nimport type Dispatcher from '../util/dispatcher.js';\nimport type {Event, Evented} from '../util/evented.js';\nimport type Map from '../ui/map.js';\nimport type Tile from './tile.js';\nimport type {OverscaledTileID} from './tile_id.js';\nimport type {Callback} from '../types/callback.js';\nimport {CanonicalTileID} from './tile_id.js';\n\n/**\n * The `Source` interface must be implemented by each source type, including \"core\" types like `vector`, `raster`,\n * or `video`) and all custom, third-party types.\n *\n * @private\n *\n * @param {string} id The id for the source. Must not be used by any existing source.\n * @param {Object} options Source options, specific to the source type (except for `options.type`, which is always\n * required).\n * @param {string} options.type The source type, matching the value of `name` used in {@link Style#addSourceType}.\n * @param {Dispatcher} dispatcher A {@link Dispatcher} instance, which can be used to send messages to the workers.\n *\n * @fires Map.event:data Fires `data` with `{dataType: 'source', sourceDataType: 'metadata'}`\n * to indicate that any necessary metadata has been loaded so that it's okay to call `loadTile`;\n * fires `data` with `{dataType: 'source', sourceDataType: 'content'}`\n * to indicate that the source data has changed, so that any current caches should be flushed.\n * @property {string} id The id for the source. Must match the id passed to the constructor.\n * @property {number} minzoom\n * @property {number} maxzoom\n * @property {boolean} isTileClipped `false` if tiles can be drawn outside their boundaries, `true` if they cannot.\n * @property {boolean} reparseOverscaled `true` if tiles should be sent back to the worker for each overzoomed zoom\n * level, `false` if not.\n * @property {boolean} roundZoom `true` if zoom levels are rounded to the nearest integer in the source data, `false`\n * if they are floor-ed to the nearest integer.\n */\nexport interface Source {\n +type: string;\n id: string;\n minzoom: number,\n maxzoom: number,\n tileSize: number,\n attribution?: string,\n\n roundZoom?: boolean,\n isTileClipped?: boolean,\n mapbox_logo?: boolean,\n tileID?: CanonicalTileID;\n reparseOverscaled?: boolean,\n vectorLayerIds?: Array<string>,\n minTileCacheSize?: ?number;\n maxTileCacheSize?: ?number;\n language?: ?string;\n worldview?: ?string;\n\n hasTransition(): boolean;\n loaded(): boolean;\n\n fire(event: Event): mixed;\n on(type: *, listener: (Object) => any): Evented;\n setEventedParent(parent: ?Evented, data?: Object | () => Object): Evented;\n\n +onAdd?: (map: Map) => void;\n +onRemove?: (map: Map) => void;\n\n loadTile(tile: Tile, callback: Callback<void>, tileWorkers?: {[string]: Actor}): void;\n +hasTile?: (tileID: OverscaledTileID) => boolean;\n +abortTile?: (tile: Tile, callback: Callback<void>) => void;\n +unloadTile?: (tile: Tile, callback: Callback<void>) => void;\n +prepareTile?: (tile: Tile) => ?any;\n +_setLanguage?: (language?: ?string) => Source;\n +_setWorldview?: (worldview?: ?string) => Source;\n\n /**\n * @returns A plain (stringifiable) JS object representing the current state of the source.\n * Creating a source using the returned object as the `options` should result in a Source that is\n * equivalent to this one.\n * @private\n */\n serialize(): Object;\n\n +prepare?: () => void;\n\n +afterUpdate?: () => void;\n +_clear?: () => void;\n}\n\ntype SourceStatics = {\n /*\n * An optional URL to a script which, when run by a Worker, registers a {@link WorkerSource}\n * implementation for this Source type by calling `self.registerWorkerSource(workerSource: WorkerSource)`.\n */\n workerSourceURL?: URL;\n};\n\nexport type SourceClass = Class<Source> & SourceStatics;\n\nimport vector from '../source/vector_tile_source.js';\nimport raster from '../source/raster_tile_source.js';\nimport rasterDem from '../source/raster_dem_tile_source.js';\nimport geojson from '../source/geojson_source.js';\nimport video from '../source/video_source.js';\nimport image from '../source/image_source.js';\nimport canvas from '../source/canvas_source.js';\nimport custom from '../source/custom_source.js';\n\nimport type {SourceSpecification} from '../style-spec/types.js';\n\nconst sourceTypes = {\n vector,\n raster,\n 'raster-dem': rasterDem,\n geojson,\n video,\n image,\n canvas,\n custom\n};\n\n/*\n * Creates a tiled data source instance given an options object.\n *\n * @param id\n * @param {Object} source A source definition object compliant with\n * [`mapbox-gl-style-spec`](https://www.mapbox.com/mapbox-gl-style-spec/#sources) or, for a third-party source type,\n * with that type's requirements.\n * @param {Dispatcher} dispatcher\n * @returns {Source}\n */\nexport const create = function(id: string, specification: SourceSpecification, dispatcher: Dispatcher, eventedParent: Evented): Source {\n const source = new sourceTypes[specification.type](id, (specification: any), dispatcher, eventedParent);\n\n if (source.id !== id) {\n throw new Error(`Expected Source id to be ${id} instead of ${source.id}`);\n }\n\n bindAll(['load', 'abort', 'unload', 'serialize', 'prepare'], source);\n return source;\n};\n\nexport const getType = function (name: string): Class<Source> {\n return sourceTypes[name];\n};\n\nexport const setType = function (name: string, type: Class<Source>) {\n sourceTypes[name] = type;\n};\n\nexport interface Actor {\n send(type: string, data: Object, callback: Callback<any>): void;\n}\n","// @flow\n\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\n\nimport {extend, pick} from '../util/util.js';\nimport loadTileJSON from './load_tilejson.js';\nimport {postTurnstileEvent} from '../util/mapbox.js';\nimport TileBounds from './tile_bounds.js';\nimport {ResourceType} from '../util/ajax.js';\nimport browser from '../util/browser.js';\nimport {cacheEntryPossiblyAdded} from '../util/tile_request_cache.js';\nimport {DedupedRequest, loadVectorTile} from './vector_tile_worker_source.js';\n\nimport type {Source} from './source.js';\nimport type {OverscaledTileID} from './tile_id.js';\nimport type Map from '../ui/map.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type Tile from './tile.js';\nimport type {Callback} from '../types/callback.js';\nimport type {Cancelable} from '../types/cancelable.js';\nimport type {VectorSourceSpecification, PromoteIdSpecification} from '../style-spec/types.js';\nimport type Actor from '../util/actor.js';\nimport type {LoadVectorTileResult} from './vector_tile_worker_source.js';\n\n/**\n * A source containing vector tiles in [Mapbox Vector Tile format](https://docs.mapbox.com/vector-tiles/reference/).\n * See the [Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/#vector) for detailed documentation of options.\n *\n * @example\n * map.addSource('some id', {\n * type: 'vector',\n * url: 'mapbox://mapbox.mapbox-streets-v8'\n * });\n *\n * @example\n * map.addSource('some id', {\n * type: 'vector',\n * tiles: ['https://d25uarhxywzl1j.cloudfront.net/v0.1/{z}/{x}/{y}.mvt'],\n * minzoom: 6,\n * maxzoom: 14\n * });\n *\n * @example\n * map.getSource('some id').setUrl(\"mapbox://mapbox.mapbox-streets-v8\");\n *\n * @example\n * map.getSource('some id').setTiles(['https://d25uarhxywzl1j.cloudfront.net/v0.1/{z}/{x}/{y}.mvt']);\n * @see [Example: Add a vector tile source](https://docs.mapbox.com/mapbox-gl-js/example/vector-source/)\n * @see [Example: Add a third party vector tile source](https://docs.mapbox.com/mapbox-gl-js/example/third-party/)\n */\nclass VectorTileSource extends Evented implements Source {\n type: 'vector';\n id: string;\n minzoom: number;\n maxzoom: number;\n url: string;\n scheme: string;\n tileSize: number;\n promoteId: ?PromoteIdSpecification;\n\n _options: VectorSourceSpecification;\n _collectResourceTiming: boolean;\n dispatcher: Dispatcher;\n map: Map;\n bounds: ?[number, number, number, number];\n tiles: Array<string>;\n tileBounds: TileBounds;\n reparseOverscaled: boolean;\n isTileClipped: boolean;\n _tileJSONRequest: ?Cancelable;\n _loaded: boolean;\n _tileWorkers: {[string]: Actor};\n _deduped: DedupedRequest;\n language: ?string;\n languageOptions: ?{[string]: string};\n worldview: ?string;\n worldviewOptions: ?{[string]: string};\n\n constructor(id: string, options: VectorSourceSpecification & {collectResourceTiming: boolean}, dispatcher: Dispatcher, eventedParent: Evented) {\n super();\n this.id = id;\n this.dispatcher = dispatcher;\n\n this.type = 'vector';\n this.minzoom = 0;\n this.maxzoom = 22;\n this.scheme = 'xyz';\n this.tileSize = 512;\n this.reparseOverscaled = true;\n this.isTileClipped = true;\n this._loaded = false;\n\n extend(this, pick(options, ['url', 'scheme', 'tileSize', 'promoteId']));\n this._options = extend({type: 'vector'}, options);\n\n this._collectResourceTiming = options.collectResourceTiming;\n\n if (this.tileSize !== 512) {\n throw new Error('vector tile sources must have a tileSize of 512');\n }\n\n this.setEventedParent(eventedParent);\n\n this._tileWorkers = {};\n this._deduped = new DedupedRequest();\n }\n\n load(callback?: Callback<void>) {\n this._loaded = false;\n this.fire(new Event('dataloading', {dataType: 'source'}));\n const language = this.language || this.map._language;\n const worldview = this.worldview || this.map._worldview;\n this._tileJSONRequest = loadTileJSON(this._options, this.map._requestManager, language, worldview, (err, tileJSON) => {\n this._tileJSONRequest = null;\n this._loaded = true;\n if (err) {\n if (language) console.warn(`Ensure that your requested language string is a valid BCP-47 code. Found: ${language}`);\n if (worldview && worldview.length !== 2) console.warn(`Requested worldview strings must be a valid ISO alpha-2 code. Found: ${worldview}`);\n\n this.fire(new ErrorEvent(err));\n } else if (tileJSON) {\n extend(this, tileJSON);\n if (tileJSON.bounds) this.tileBounds = new TileBounds(tileJSON.bounds, this.minzoom, this.maxzoom);\n postTurnstileEvent(tileJSON.tiles, this.map._requestManager._customAccessToken);\n\n // `content` is included here to prevent a race condition where `Style#_updateSources` is called\n // before the TileJSON arrives. this makes sure the tiles needed are loaded once TileJSON arrives\n // ref: https://github.com/mapbox/mapbox-gl-js/pull/4347#discussion_r104418088\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'metadata'}));\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'content'}));\n }\n\n if (callback) callback(err);\n });\n }\n\n loaded(): boolean {\n return this._loaded;\n }\n\n hasTile(tileID: OverscaledTileID): boolean {\n return !this.tileBounds || this.tileBounds.contains(tileID.canonical);\n }\n\n onAdd(map: Map) {\n this.map = map;\n this.load();\n }\n\n setSourceProperty(callback: Function) {\n if (this._tileJSONRequest) {\n this._tileJSONRequest.cancel();\n }\n\n callback();\n\n // Reload current tiles after TileJSON is loaded\n this.load(() => {\n const sourceCaches = this.map.style._getSourceCaches(this.id);\n for (const sourceCache of sourceCaches) {\n sourceCache.clearTiles();\n }\n });\n }\n\n /**\n * Sets the source `tiles` property and re-renders the map.\n *\n * @param {string[]} tiles An array of one or more tile source URLs, as in the TileJSON spec.\n * @returns {VectorTileSource} Returns itself to allow for method chaining.\n * @example\n * map.addSource('vector_source_id', {\n * type: 'vector',\n * tiles: ['https://some_end_point.net/{z}/{x}/{y}.mvt'],\n * minzoom: 6,\n * maxzoom: 14\n * });\n *\n * const vectorTileSource = map.getSource('vector_source_id');\n *\n * // Set the endpoint associated with a vector tile source.\n * vectorTileSource.setTiles(['https://another_end_point.net/{z}/{x}/{y}.mvt']);\n */\n setTiles(tiles: Array<string>): this {\n this.setSourceProperty(() => {\n this._options.tiles = tiles;\n });\n\n return this;\n }\n\n /**\n * Sets the source `url` property and re-renders the map.\n *\n * @param {string} url A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://<Tileset ID>`.\n * @returns {VectorTileSource} Returns itself to allow for method chaining.\n * @example\n * map.addSource('vector_source_id', {\n * type: 'vector',\n * url: 'mapbox://mapbox.mapbox-streets-v7'\n * });\n *\n * const vectorTileSource = map.getSource('vector_source_id');\n *\n * // Update vector tile source to a new URL endpoint\n * vectorTileSource.setUrl(\"mapbox://mapbox.mapbox-streets-v8\");\n */\n setUrl(url: string): this {\n this.setSourceProperty(() => {\n this.url = url;\n this._options.url = url;\n });\n\n return this;\n }\n\n _setLanguage(language?: ?string): this {\n if (language === this.language) return this;\n\n this.setSourceProperty(() => {\n this.language = language;\n });\n\n return this;\n }\n\n _setWorldview(worldview?: ?string): this {\n if (worldview === this.worldview) return this;\n if (this.worldviewOptions && worldview && !this.worldviewOptions[worldview]) {\n console.warn(`Vector tile source \"${this.id}\" does not support worldview \"${worldview}\".`);\n return this;\n }\n\n this.setSourceProperty(() => {\n this.worldview = worldview;\n });\n\n return this;\n }\n\n onRemove() {\n if (this._tileJSONRequest) {\n this._tileJSONRequest.cancel();\n this._tileJSONRequest = null;\n }\n }\n\n serialize(): VectorSourceSpecification {\n return extend({}, this._options);\n }\n\n loadTile(tile: Tile, callback: Callback<void>) {\n const url = this.map._requestManager.normalizeTileURL(tile.tileID.canonical.url(this.tiles, this.scheme));\n const request = this.map._requestManager.transformRequest(url, ResourceType.Tile);\n\n const params = {\n request,\n data: undefined,\n uid: tile.uid,\n tileID: tile.tileID,\n tileZoom: tile.tileZoom,\n zoom: tile.tileID.overscaledZ,\n tileSize: this.tileSize * tile.tileID.overscaleFactor(),\n type: this.type,\n source: this.id,\n pixelRatio: browser.devicePixelRatio,\n showCollisionBoxes: this.map.showCollisionBoxes,\n promoteId: this.promoteId,\n isSymbolTile: tile.isSymbolTile\n };\n params.request.collectResourceTiming = this._collectResourceTiming;\n\n if (!tile.actor || tile.state === 'expired') {\n tile.actor = this._tileWorkers[url] = this._tileWorkers[url] || this.dispatcher.getActor();\n\n // if workers are not ready to receive messages yet, use the idle time to preemptively\n // load tiles on the main thread and pass the result instead of requesting a worker to do so\n if (!this.dispatcher.ready) {\n const cancel = loadVectorTile.call({deduped: this._deduped}, params, (err: ?Error, data: ?LoadVectorTileResult) => {\n if (err || !data) {\n done.call(this, err);\n } else {\n // the worker will skip the network request if the data is already there\n params.data = {\n cacheControl: data.cacheControl,\n expires: data.expires,\n rawData: data.rawData.slice(0)\n };\n if (tile.actor) tile.actor.send('loadTile', params, done.bind(this), undefined, true);\n }\n }, true);\n tile.request = {cancel};\n\n } else {\n tile.request = tile.actor.send('loadTile', params, done.bind(this), undefined, true);\n }\n\n } else if (tile.state === 'loading') {\n // schedule tile reloading after it has been loaded\n tile.reloadCallback = callback;\n\n } else {\n tile.request = tile.actor.send('reloadTile', params, done.bind(this));\n }\n\n function done(err, data) {\n delete tile.request;\n\n if (tile.aborted)\n return callback(null);\n\n if (err && err.status !== 404) {\n return callback(err);\n }\n\n if (data && data.resourceTiming)\n tile.resourceTiming = data.resourceTiming;\n\n if (this.map._refreshExpiredTiles && data) tile.setExpiryData(data);\n tile.loadVectorData(data, this.map.painter);\n\n cacheEntryPossiblyAdded(this.dispatcher);\n\n callback(null);\n\n if (tile.reloadCallback) {\n this.loadTile(tile, tile.reloadCallback);\n tile.reloadCallback = null;\n }\n }\n }\n\n abortTile(tile: Tile) {\n if (tile.request) {\n tile.request.cancel();\n delete tile.request;\n }\n if (tile.actor) {\n tile.actor.send('abortTile', {uid: tile.uid, type: this.type, source: this.id});\n }\n }\n\n unloadTile(tile: Tile) {\n tile.unloadVectorData();\n if (tile.actor) {\n tile.actor.send('removeTile', {uid: tile.uid, type: this.type, source: this.id});\n }\n }\n\n hasTransition(): boolean {\n return false;\n }\n\n afterUpdate() {\n this._tileWorkers = {};\n }\n}\n\nexport default VectorTileSource;\n","// @flow\n\nimport {getImage, ResourceType} from '../util/ajax.js';\nimport {extend, prevPowerOfTwo} from '../util/util.js';\nimport {Evented} from '../util/evented.js';\nimport browser from '../util/browser.js';\nimport window from '../util/window.js';\nimport offscreenCanvasSupported from '../util/offscreen_canvas_supported.js';\nimport {OverscaledTileID} from './tile_id.js';\nimport RasterTileSource from './raster_tile_source.js';\n// ensure DEMData is registered for worker transfer on main thread:\nimport '../data/dem_data.js';\n\nimport type {Source} from './source.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type Tile from './tile.js';\nimport type {Callback} from '../types/callback.js';\nimport type {RasterDEMSourceSpecification} from '../style-spec/types.js';\n\nclass RasterDEMTileSource extends RasterTileSource implements Source {\n encoding: \"mapbox\" | \"terrarium\";\n\n constructor(id: string, options: RasterDEMSourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) {\n super(id, options, dispatcher, eventedParent);\n this.type = 'raster-dem';\n this.maxzoom = 22;\n this._options = extend({type: 'raster-dem'}, options);\n this.encoding = options.encoding || \"mapbox\";\n }\n\n loadTile(tile: Tile, callback: Callback<void>) {\n const url = this.map._requestManager.normalizeTileURL(tile.tileID.canonical.url(this.tiles, this.scheme), false, this.tileSize);\n tile.request = getImage(this.map._requestManager.transformRequest(url, ResourceType.Tile), imageLoaded.bind(this));\n\n function imageLoaded(err, img, cacheControl, expires) {\n delete tile.request;\n if (tile.aborted) {\n tile.state = 'unloaded';\n callback(null);\n } else if (err) {\n tile.state = 'errored';\n callback(err);\n } else if (img) {\n if (this.map._refreshExpiredTiles) tile.setExpiryData({cacheControl, expires});\n const transfer = window.ImageBitmap && img instanceof window.ImageBitmap && offscreenCanvasSupported();\n // DEMData uses 1px padding. Handle cases with image buffer of 1 and 2 pxs, the rest assume default buffer 0\n // in order to keep the previous implementation working (no validation against tileSize).\n const buffer = (img.width - prevPowerOfTwo(img.width)) / 2;\n // padding is used in getImageData. As DEMData has 1px padding, if DEM tile buffer is 2px, discard outermost pixels.\n const padding = 1 - buffer;\n const borderReady = padding < 1;\n if (!borderReady && !tile.neighboringTiles) {\n tile.neighboringTiles = this._getNeighboringTiles(tile.tileID);\n }\n const rawImageData = transfer ? img : browser.getImageData(img, padding);\n const params = {\n uid: tile.uid,\n coord: tile.tileID,\n source: this.id,\n rawImageData,\n encoding: this.encoding,\n padding\n };\n\n if (!tile.actor || tile.state === 'expired') {\n tile.actor = this.dispatcher.getActor();\n tile.actor.send('loadDEMTile', params, done.bind(this), undefined, true);\n }\n }\n }\n\n function done(err, dem) {\n if (err) {\n tile.state = 'errored';\n callback(err);\n }\n\n if (dem) {\n tile.dem = dem;\n tile.dem.onDeserialize();\n tile.needsHillshadePrepare = true;\n tile.needsDEMTextureUpload = true;\n tile.state = 'loaded';\n callback(null);\n }\n }\n }\n\n _getNeighboringTiles(tileID: OverscaledTileID): {[number]: {backfilled: boolean}} {\n const canonical = tileID.canonical;\n const dim = Math.pow(2, canonical.z);\n\n const px = (canonical.x - 1 + dim) % dim;\n const pxw = canonical.x === 0 ? tileID.wrap - 1 : tileID.wrap;\n const nx = (canonical.x + 1 + dim) % dim;\n const nxw = canonical.x + 1 === dim ? tileID.wrap + 1 : tileID.wrap;\n\n const neighboringTiles = {};\n // add adjacent tiles\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, pxw, canonical.z, px, canonical.y).key] = {backfilled: false};\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, nxw, canonical.z, nx, canonical.y).key] = {backfilled: false};\n\n // Add upper neighboringTiles\n if (canonical.y > 0) {\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, pxw, canonical.z, px, canonical.y - 1).key] = {backfilled: false};\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, tileID.wrap, canonical.z, canonical.x, canonical.y - 1).key] = {backfilled: false};\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, nxw, canonical.z, nx, canonical.y - 1).key] = {backfilled: false};\n }\n // Add lower neighboringTiles\n if (canonical.y + 1 < dim) {\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, pxw, canonical.z, px, canonical.y + 1).key] = {backfilled: false};\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, tileID.wrap, canonical.z, canonical.x, canonical.y + 1).key] = {backfilled: false};\n neighboringTiles[new OverscaledTileID(tileID.overscaledZ, nxw, canonical.z, nx, canonical.y + 1).key] = {backfilled: false};\n }\n\n return neighboringTiles;\n }\n\n unloadTile(tile: Tile) {\n if (tile.demTexture) this.map.painter.saveTileTexture(tile.demTexture);\n if (tile.fbo) {\n tile.fbo.destroy();\n delete tile.fbo;\n }\n if (tile.dem) delete tile.dem;\n delete tile.neighboringTiles;\n\n tile.state = 'unloaded';\n }\n\n}\n\nexport default RasterDEMTileSource;\n","// @flow\n\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\n\nimport {extend} from '../util/util.js';\nimport EXTENT from '../data/extent.js';\nimport {ResourceType} from '../util/ajax.js';\nimport browser from '../util/browser.js';\n\nimport type {Source} from './source.js';\nimport type Map from '../ui/map.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type Tile from './tile.js';\nimport type Actor from '../util/actor.js';\nimport type {Callback} from '../types/callback.js';\nimport type {GeoJSONWorkerOptions} from './geojson_worker_source.js';\nimport type {GeoJSON, GeoJSONFeature} from '@mapbox/geojson-types';\nimport type {GeoJSONSourceSpecification, PromoteIdSpecification} from '../style-spec/types.js';\nimport type {Cancelable} from '../types/cancelable.js';\n\n/**\n * A source containing GeoJSON.\n * See the [Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson) for detailed documentation of options.\n *\n * @example\n * map.addSource('some id', {\n * type: 'geojson',\n * data: 'https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_10m_ports.geojson'\n * });\n *\n * @example\n * map.addSource('some id', {\n * type: 'geojson',\n * data: {\n * \"type\": \"FeatureCollection\",\n * \"features\": [{\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [\n * -76.53063297271729,\n * 39.18174077994108\n * ]\n * }\n * }]\n * }\n * });\n *\n * @example\n * map.getSource('some id').setData({\n * \"type\": \"FeatureCollection\",\n * \"features\": [{\n * \"type\": \"Feature\",\n * \"properties\": {\"name\": \"Null Island\"},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [ 0, 0 ]\n * }\n * }]\n * });\n * @see [Example: Draw GeoJSON points](https://www.mapbox.com/mapbox-gl-js/example/geojson-markers/)\n * @see [Example: Add a GeoJSON line](https://www.mapbox.com/mapbox-gl-js/example/geojson-line/)\n * @see [Example: Create a heatmap from points](https://www.mapbox.com/mapbox-gl-js/example/heatmap/)\n * @see [Example: Create and style clusters](https://www.mapbox.com/mapbox-gl-js/example/cluster/)\n */\nclass GeoJSONSource extends Evented implements Source {\n type: 'geojson';\n id: string;\n minzoom: number;\n maxzoom: number;\n tileSize: number;\n attribution: string;\n promoteId: ?PromoteIdSpecification;\n\n isTileClipped: boolean;\n reparseOverscaled: boolean;\n _data: GeoJSON | string;\n _options: GeoJSONSourceSpecification;\n workerOptions: GeoJSONWorkerOptions;\n map: Map;\n actor: Actor;\n _loaded: boolean;\n _coalesce: ?boolean;\n _metadataFired: ?boolean;\n _collectResourceTiming: boolean;\n _pendingLoad: ?Cancelable;\n\n /**\n * @private\n */\n constructor(id: string, options: GeoJSONSourceSpecification & {workerOptions?: GeoJSONWorkerOptions, collectResourceTiming: boolean}, dispatcher: Dispatcher, eventedParent: Evented) {\n super();\n\n this.id = id;\n\n // `type` is a property rather than a constant to make it easy for 3rd\n // parties to use GeoJSONSource to build their own source types.\n this.type = 'geojson';\n\n this.minzoom = 0;\n this.maxzoom = 18;\n this.tileSize = 512;\n this.isTileClipped = true;\n this.reparseOverscaled = true;\n this._loaded = false;\n\n this.actor = dispatcher.getActor();\n this.setEventedParent(eventedParent);\n\n this._data = (options.data: any);\n this._options = extend({}, options);\n\n this._collectResourceTiming = options.collectResourceTiming;\n\n if (options.maxzoom !== undefined) this.maxzoom = options.maxzoom;\n if (options.type) this.type = options.type;\n if (options.attribution) this.attribution = options.attribution;\n this.promoteId = options.promoteId;\n\n const scale = EXTENT / this.tileSize;\n\n // sent to the worker, along with `url: ...` or `data: literal geojson`,\n // so that it can load/parse/index the geojson data\n // extending with `options.workerOptions` helps to make it easy for\n // third-party sources to hack/reuse GeoJSONSource.\n this.workerOptions = extend({\n source: this.id,\n cluster: options.cluster || false,\n geojsonVtOptions: {\n buffer: (options.buffer !== undefined ? options.buffer : 128) * scale,\n tolerance: (options.tolerance !== undefined ? options.tolerance : 0.375) * scale,\n extent: EXTENT,\n maxZoom: this.maxzoom,\n lineMetrics: options.lineMetrics || false,\n generateId: options.generateId || false\n },\n superclusterOptions: {\n maxZoom: options.clusterMaxZoom !== undefined ? options.clusterMaxZoom : this.maxzoom - 1,\n minPoints: Math.max(2, options.clusterMinPoints || 2),\n extent: EXTENT,\n radius: (options.clusterRadius !== undefined ? options.clusterRadius : 50) * scale,\n log: false,\n generateId: options.generateId || false\n },\n clusterProperties: options.clusterProperties,\n filter: options.filter\n }, options.workerOptions);\n }\n\n onAdd(map: Map) {\n this.map = map;\n this.setData(this._data);\n }\n\n /**\n * Sets the GeoJSON data and re-renders the map.\n *\n * @param {Object | string} data A GeoJSON data object or a URL to one. The latter is preferable in the case of large GeoJSON files.\n * @returns {GeoJSONSource} Returns itself to allow for method chaining.\n * @example\n * map.addSource('source_id', {\n * type: 'geojson',\n * data: {\n * type: 'FeatureCollection',\n * features: []\n * }\n * });\n * const geojsonSource = map.getSource('source_id');\n * // Update the data after the GeoJSON source was created\n * geojsonSource.setData({\n * \"type\": \"FeatureCollection\",\n * \"features\": [{\n * \"type\": \"Feature\",\n * \"properties\": {\"name\": \"Null Island\"},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [ 0, 0 ]\n * }\n * }]\n * });\n */\n setData(data: GeoJSON | string): this {\n this._data = data;\n this._updateWorkerData();\n return this;\n }\n\n /**\n * For clustered sources, fetches the zoom at which the given cluster expands.\n *\n * @param {number} clusterId The value of the cluster's `cluster_id` property.\n * @param {Function} callback A callback to be called when the zoom value is retrieved (`(error, zoom) => { ... }`).\n * @returns {GeoJSONSource} Returns itself to allow for method chaining.\n * @example\n * // Assuming the map has a layer named 'clusters' and a source 'earthquakes'\n * // The following creates a camera animation on cluster feature click\n * map.on('click', 'clusters', (e) => {\n * const features = map.queryRenderedFeatures(e.point, {\n * layers: ['clusters']\n * });\n *\n * const clusterId = features[0].properties.cluster_id;\n *\n * // Ease the camera to the next cluster expansion\n * map.getSource('earthquakes').getClusterExpansionZoom(\n * clusterId,\n * (err, zoom) => {\n * if (!err) {\n * map.easeTo({\n * center: features[0].geometry.coordinates,\n * zoom\n * });\n * }\n * }\n * );\n * });\n */\n getClusterExpansionZoom(clusterId: number, callback: Callback<number>): this {\n this.actor.send('geojson.getClusterExpansionZoom', {clusterId, source: this.id}, callback);\n return this;\n }\n\n /**\n * For clustered sources, fetches the children of the given cluster on the next zoom level (as an array of GeoJSON features).\n *\n * @param {number} clusterId The value of the cluster's `cluster_id` property.\n * @param {Function} callback A callback to be called when the features are retrieved (`(error, features) => { ... }`).\n * @returns {GeoJSONSource} Returns itself to allow for method chaining.\n * @example\n * // Retrieve cluster children on click\n * map.on('click', 'clusters', (e) => {\n * const features = map.queryRenderedFeatures(e.point, {\n * layers: ['clusters']\n * });\n *\n * const clusterId = features[0].properties.cluster_id;\n *\n * clusterSource.getClusterChildren(clusterId, (error, features) => {\n * if (!error) {\n * console.log('Cluster children:', features);\n * }\n * });\n * });\n *\n */\n getClusterChildren(clusterId: number, callback: Callback<Array<GeoJSONFeature>>): this {\n this.actor.send('geojson.getClusterChildren', {clusterId, source: this.id}, callback);\n return this;\n }\n\n /**\n * For clustered sources, fetches the original points that belong to the cluster (as an array of GeoJSON features).\n *\n * @param {number} clusterId The value of the cluster's `cluster_id` property.\n * @param {number} limit The maximum number of features to return. Defaults to `10` if a falsy value is given.\n * @param {number} offset The number of features to skip (for example, for pagination). Defaults to `0` if a falsy value is given.\n * @param {Function} callback A callback to be called when the features are retrieved (`(error, features) => { ... }`).\n * @returns {GeoJSONSource} Returns itself to allow for method chaining.\n * @example\n * // Retrieve cluster leaves on click\n * map.on('click', 'clusters', (e) => {\n * const features = map.queryRenderedFeatures(e.point, {\n * layers: ['clusters']\n * });\n *\n * const clusterId = features[0].properties.cluster_id;\n * const pointCount = features[0].properties.point_count;\n * const clusterSource = map.getSource('clusters');\n *\n * clusterSource.getClusterLeaves(clusterId, pointCount, 0, (error, features) => {\n * // Print cluster leaves in the console\n * console.log('Cluster leaves:', error, features);\n * });\n * });\n */\n getClusterLeaves(clusterId: number, limit: number, offset: number, callback: Callback<Array<GeoJSONFeature>>): this {\n this.actor.send('geojson.getClusterLeaves', {\n source: this.id,\n clusterId,\n limit,\n offset\n }, callback);\n return this;\n }\n\n /*\n * Responsible for invoking WorkerSource's geojson.loadData target, which\n * handles loading the geojson data and preparing to serve it up as tiles,\n * using geojson-vt or supercluster as appropriate.\n */\n _updateWorkerData() {\n // if there's an earlier loadData to finish, wait until it finishes and then do another update\n if (this._pendingLoad) {\n this._coalesce = true;\n return;\n }\n\n this.fire(new Event('dataloading', {dataType: 'source'}));\n\n this._loaded = false;\n const options = extend({}, this.workerOptions);\n const data = this._data;\n if (typeof data === 'string') {\n options.request = this.map._requestManager.transformRequest(browser.resolveURL(data), ResourceType.Source);\n options.request.collectResourceTiming = this._collectResourceTiming;\n } else {\n options.data = JSON.stringify(data);\n }\n\n // target {this.type}.loadData rather than literally geojson.loadData,\n // so that other geojson-like source types can easily reuse this\n // implementation\n this._pendingLoad = this.actor.send(`${this.type}.loadData`, options, (err, result) => {\n this._loaded = true;\n this._pendingLoad = null;\n\n if (err) {\n this.fire(new ErrorEvent(err));\n\n } else {\n // although GeoJSON sources contain no metadata, we fire this event at first\n // to let the SourceCache know its ok to start requesting tiles.\n const data: Object = {dataType: 'source', sourceDataType: this._metadataFired ? 'content' : 'metadata'};\n if (this._collectResourceTiming && result && result.resourceTiming && result.resourceTiming[this.id]) {\n data.resourceTiming = result.resourceTiming[this.id];\n }\n this.fire(new Event('data', data));\n this._metadataFired = true;\n }\n\n if (this._coalesce) {\n this._updateWorkerData();\n this._coalesce = false;\n }\n });\n }\n\n loaded(): boolean {\n return this._loaded;\n }\n\n loadTile(tile: Tile, callback: Callback<void>) {\n const message = !tile.actor ? 'loadTile' : 'reloadTile';\n tile.actor = this.actor;\n const params = {\n type: this.type,\n uid: tile.uid,\n tileID: tile.tileID,\n tileZoom: tile.tileZoom,\n zoom: tile.tileID.overscaledZ,\n maxZoom: this.maxzoom,\n tileSize: this.tileSize,\n source: this.id,\n pixelRatio: browser.devicePixelRatio,\n showCollisionBoxes: this.map.showCollisionBoxes,\n promoteId: this.promoteId\n };\n\n tile.request = this.actor.send(message, params, (err, data) => {\n delete tile.request;\n tile.unloadVectorData();\n\n if (tile.aborted) {\n return callback(null);\n }\n\n if (err) {\n return callback(err);\n }\n\n tile.loadVectorData(data, this.map.painter, message === 'reloadTile');\n\n return callback(null);\n }, undefined, message === 'loadTile');\n }\n\n abortTile(tile: Tile) {\n if (tile.request) {\n tile.request.cancel();\n delete tile.request;\n }\n tile.aborted = true;\n }\n\n unloadTile(tile: Tile) {\n tile.unloadVectorData();\n this.actor.send('removeTile', {uid: tile.uid, type: this.type, source: this.id});\n }\n\n onRemove() {\n if (this._pendingLoad) {\n this._pendingLoad.cancel();\n }\n }\n\n serialize(): GeoJSONSourceSpecification {\n return extend({}, this._options, {\n type: this.type,\n data: this._data\n });\n }\n\n hasTransition(): boolean {\n return false;\n }\n}\n\nexport default GeoJSONSource;\n","// @flow\n\nimport {getVideo, ResourceType} from '../util/ajax.js';\n\nimport ImageSource from './image_source.js';\nimport Texture from '../render/texture.js';\nimport {ErrorEvent} from '../util/evented.js';\nimport ValidationError from '../style-spec/error/validation_error.js';\n\nimport type Map from '../ui/map.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type {Evented} from '../util/evented.js';\nimport type {VideoSourceSpecification} from '../style-spec/types.js';\n\n/**\n * A data source containing video.\n * See the [Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/#sources-video) for detailed documentation of options.\n *\n * @example\n * // add to map\n * map.addSource('some id', {\n * type: 'video',\n * url: [\n * 'https://www.mapbox.com/blog/assets/baltimore-smoke.mp4',\n * 'https://www.mapbox.com/blog/assets/baltimore-smoke.webm'\n * ],\n * coordinates: [\n * [-76.54, 39.18],\n * [-76.52, 39.18],\n * [-76.52, 39.17],\n * [-76.54, 39.17]\n * ]\n * });\n *\n * // update\n * const mySource = map.getSource('some id');\n * mySource.setCoordinates([\n * [-76.54335737228394, 39.18579907229748],\n * [-76.52803659439087, 39.1838364847587],\n * [-76.5295386314392, 39.17683392507606],\n * [-76.54520273208618, 39.17876344106642]\n * ]);\n *\n * map.removeSource('some id'); // remove\n * @see [Example: Add a video](https://www.mapbox.com/mapbox-gl-js/example/video-on-a-map/)\n */\nclass VideoSource extends ImageSource {\n options: VideoSourceSpecification;\n urls: Array<string>;\n video: HTMLVideoElement;\n roundZoom: boolean;\n\n /**\n * @private\n */\n constructor(id: string, options: VideoSourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) {\n super(id, options, dispatcher, eventedParent);\n this.roundZoom = true;\n this.type = 'video';\n this.options = options;\n }\n\n load() {\n this._loaded = false;\n const options = this.options;\n\n this.urls = [];\n for (const url of options.urls) {\n this.urls.push(this.map._requestManager.transformRequest(url, ResourceType.Source).url);\n }\n\n getVideo(this.urls, (err, video) => {\n this._loaded = true;\n if (err) {\n this.fire(new ErrorEvent(err));\n } else if (video) {\n this.video = video;\n this.video.loop = true;\n\n // Prevent the video from taking over the screen in iOS\n this.video.setAttribute('playsinline', '');\n\n // Start repainting when video starts playing. hasTransition() will then return\n // true to trigger additional frames as long as the videos continues playing.\n this.video.addEventListener('playing', () => {\n this.map.triggerRepaint();\n });\n\n if (this.map) {\n this.video.play();\n }\n\n this._finishLoading();\n }\n });\n }\n\n /**\n * Pauses the video.\n *\n * @example\n * // Assuming a video source identified by video_source_id was added to the map\n * const videoSource = map.getSource('video_source_id');\n *\n * // Pauses the video\n * videoSource.pause();\n */\n pause() {\n if (this.video) {\n this.video.pause();\n }\n }\n\n /**\n * Plays the video.\n *\n * @example\n * // Assuming a video source identified by video_source_id was added to the map\n * const videoSource = map.getSource('video_source_id');\n *\n * // Starts the video\n * videoSource.play();\n */\n play() {\n if (this.video) {\n this.video.play();\n }\n }\n\n /**\n * Sets playback to a timestamp, in seconds.\n * @private\n */\n seek(seconds: number) {\n if (this.video) {\n const seekableRange = this.video.seekable;\n if (seconds < seekableRange.start(0) || seconds > seekableRange.end(0)) {\n this.fire(new ErrorEvent(new ValidationError(`sources.${this.id}`, null, `Playback for this video can be set only between the ${seekableRange.start(0)} and ${seekableRange.end(0)}-second mark.`)));\n } else this.video.currentTime = seconds;\n }\n }\n\n /**\n * Returns the HTML `video` element.\n *\n * @returns {HTMLVideoElement} The HTML `video` element.\n * @example\n * // Assuming a video source identified by video_source_id was added to the map\n * const videoSource = map.getSource('video_source_id');\n *\n * videoSource.getVideo(); // <video crossorigin=\"Anonymous\" loop=\"\">...</video>\n */\n getVideo(): HTMLVideoElement {\n return this.video;\n }\n\n onAdd(map: Map) {\n if (this.map) return;\n this.map = map;\n this.load();\n if (this.video) {\n this.video.play();\n this.setCoordinates(this.coordinates);\n }\n }\n\n /**\n * Sets the video's coordinates and re-renders the map.\n *\n * @method setCoordinates\n * @instance\n * @memberof VideoSource\n * @returns {VideoSource} Returns itself to allow for method chaining.\n * @example\n * // Add a video source to the map to map\n * map.addSource('video_source_id', {\n * type: 'video',\n * url: [\n * 'https://www.mapbox.com/blog/assets/baltimore-smoke.mp4',\n * 'https://www.mapbox.com/blog/assets/baltimore-smoke.webm'\n * ],\n * coordinates: [\n * [-76.54, 39.18],\n * [-76.52, 39.18],\n * [-76.52, 39.17],\n * [-76.54, 39.17]\n * ]\n * });\n *\n * // Then update the video source coordinates by new coordinates\n * const videoSource = map.getSource('video_source_id');\n * videoSource.setCoordinates([\n * [-76.5433, 39.1857],\n * [-76.5280, 39.1838],\n * [-76.5295, 39.1768],\n * [-76.5452, 39.1787]\n * ]);\n */\n // setCoordinates inherited from ImageSource\n\n prepare() {\n if (Object.keys(this.tiles).length === 0 || this.video.readyState < 2) {\n return; // not enough data for current position\n }\n\n const context = this.map.painter.context;\n const gl = context.gl;\n\n if (!this.texture) {\n this.texture = new Texture(context, this.video, gl.RGBA);\n this.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n this.width = this.video.videoWidth;\n this.height = this.video.videoHeight;\n\n } else if (!this.video.paused) {\n this.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, this.video);\n }\n\n this._prepareData(context);\n }\n\n serialize(): VideoSourceSpecification {\n return {\n type: 'video',\n urls: this.urls,\n coordinates: this.coordinates\n };\n }\n\n hasTransition(): boolean {\n return this.video && !this.video.paused;\n }\n}\n\nexport default VideoSource;\n","// @flow\n\nimport ImageSource from './image_source.js';\n\nimport window from '../util/window.js';\nimport Texture from '../render/texture.js';\nimport {ErrorEvent} from '../util/evented.js';\nimport ValidationError from '../style-spec/error/validation_error.js';\n\nimport type Map from '../ui/map.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type {Evented} from '../util/evented.js';\n\nexport type CanvasSourceSpecification = {|\n \"type\": \"canvas\",\n \"coordinates\": [[number, number], [number, number], [number, number], [number, number]],\n \"animate\"?: boolean,\n \"canvas\": string | HTMLCanvasElement\n|};\n\n/**\n * Options to add a canvas source type to the map.\n *\n * @typedef {Object} CanvasSourceOptions\n * @property {string} type Source type. Must be `\"canvas\"`.\n * @property {string|HTMLCanvasElement} canvas Canvas source from which to read pixels. Can be a string representing the ID of the canvas element, or the `HTMLCanvasElement` itself.\n * @property {Array<Array<number>>} coordinates Four geographical coordinates denoting where to place the corners of the canvas, specified in `[longitude, latitude]` pairs.\n * @property {boolean} [animate=true] Whether the canvas source is animated. If the canvas is static (pixels do not need to be re-read on every frame), `animate` should be set to `false` to improve performance.\n */\n\n/**\n * A data source containing the contents of an HTML canvas. See {@link CanvasSourceOptions} for detailed documentation of options.\n *\n * @example\n * // add to map\n * map.addSource('some id', {\n * type: 'canvas',\n * canvas: 'idOfMyHTMLCanvas',\n * animate: true,\n * coordinates: [\n * [-76.54, 39.18],\n * [-76.52, 39.18],\n * [-76.52, 39.17],\n * [-76.54, 39.17]\n * ]\n * });\n *\n * // update\n * const mySource = map.getSource('some id');\n * mySource.setCoordinates([\n * [-76.54335737228394, 39.18579907229748],\n * [-76.52803659439087, 39.1838364847587],\n * [-76.5295386314392, 39.17683392507606],\n * [-76.54520273208618, 39.17876344106642]\n * ]);\n *\n * map.removeSource('some id'); // remove\n * @see [Example: Add a canvas source](https://docs.mapbox.com/mapbox-gl-js/example/canvas-source/)\n */\nclass CanvasSource extends ImageSource {\n options: CanvasSourceSpecification;\n animate: boolean;\n canvas: HTMLCanvasElement;\n play: () => void;\n pause: () => void;\n _playing: boolean;\n\n /**\n * @private\n */\n constructor(id: string, options: CanvasSourceSpecification, dispatcher: Dispatcher, eventedParent: Evented) {\n super(id, options, dispatcher, eventedParent);\n\n // We build in some validation here, since canvas sources aren't included in the style spec:\n if (!options.coordinates) {\n this.fire(new ErrorEvent(new ValidationError(`sources.${id}`, null, 'missing required property \"coordinates\"')));\n } else if (!Array.isArray(options.coordinates) || options.coordinates.length !== 4 ||\n options.coordinates.some(c => !Array.isArray(c) || c.length !== 2 || c.some(l => typeof l !== 'number'))) {\n this.fire(new ErrorEvent(new ValidationError(`sources.${id}`, null, '\"coordinates\" property must be an array of 4 longitude/latitude array pairs')));\n }\n\n if (options.animate && typeof options.animate !== 'boolean') {\n this.fire(new ErrorEvent(new ValidationError(`sources.${id}`, null, 'optional \"animate\" property must be a boolean value')));\n }\n\n if (!options.canvas) {\n this.fire(new ErrorEvent(new ValidationError(`sources.${id}`, null, 'missing required property \"canvas\"')));\n } else if (typeof options.canvas !== 'string' && !(options.canvas instanceof window.HTMLCanvasElement)) {\n this.fire(new ErrorEvent(new ValidationError(`sources.${id}`, null, '\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance')));\n }\n\n this.options = options;\n this.animate = options.animate !== undefined ? options.animate : true;\n }\n\n /**\n * Enables animation. The image will be copied from the canvas to the map on each frame.\n *\n * @method play\n * @instance\n * @memberof CanvasSource\n */\n\n /**\n * Disables animation. The map will display a static copy of the canvas image.\n *\n * @method pause\n * @instance\n * @memberof CanvasSource\n */\n\n load() {\n this._loaded = true;\n if (!this.canvas) {\n this.canvas = (this.options.canvas instanceof window.HTMLCanvasElement) ?\n this.options.canvas :\n window.document.getElementById(this.options.canvas);\n }\n this.width = this.canvas.width;\n this.height = this.canvas.height;\n\n if (this._hasInvalidDimensions()) {\n this.fire(new ErrorEvent(new Error('Canvas dimensions cannot be less than or equal to zero.')));\n return;\n }\n\n this.play = function() {\n this._playing = true;\n this.map.triggerRepaint();\n };\n\n this.pause = function() {\n if (this._playing) {\n this.prepare();\n this._playing = false;\n }\n };\n\n this._finishLoading();\n }\n\n /**\n * Returns the HTML `canvas` element.\n *\n * @returns {HTMLCanvasElement} The HTML `canvas` element.\n * @example\n * // Assuming the following canvas is added to your page\n * // <canvas id=\"canvasID\" width=\"400\" height=\"400\"></canvas>\n * map.addSource('canvas-source', {\n * type: 'canvas',\n * canvas: 'canvasID',\n * coordinates: [\n * [91.4461, 21.5006],\n * [100.3541, 21.5006],\n * [100.3541, 13.9706],\n * [91.4461, 13.9706]\n * ]\n * });\n * map.getSource('canvas-source').getCanvas(); // <canvas id=\"canvasID\" width=\"400\" height=\"400\"></canvas>\n */\n getCanvas(): HTMLCanvasElement {\n return this.canvas;\n }\n\n onAdd(map: Map) {\n this.map = map;\n this.load();\n if (this.canvas) {\n if (this.animate) this.play();\n }\n }\n\n onRemove() {\n this.pause();\n }\n\n /**\n * Sets the canvas's coordinates and re-renders the map.\n *\n * @method setCoordinates\n * @instance\n * @memberof CanvasSource\n * @param {Array<Array<number>>} coordinates Four geographical coordinates,\n * represented as arrays of longitude and latitude numbers, which define the corners of the canvas.\n * The coordinates start at the top left corner of the canvas and proceed in clockwise order.\n * They do not have to represent a rectangle.\n * @returns {CanvasSource} Returns itself to allow for method chaining.\n */\n\n // setCoordinates inherited from ImageSource\n\n prepare() {\n let resize = false;\n if (this.canvas.width !== this.width) {\n this.width = this.canvas.width;\n resize = true;\n }\n if (this.canvas.height !== this.height) {\n this.height = this.canvas.height;\n resize = true;\n }\n\n if (this._hasInvalidDimensions()) return;\n\n if (Object.keys(this.tiles).length === 0) return; // not enough data for current position\n\n const context = this.map.painter.context;\n\n if (!this.texture) {\n this.texture = new Texture(context, this.canvas, context.gl.RGBA, {premultiply: true});\n } else if (resize || this._playing) {\n this.texture.update(this.canvas, {premultiply: true});\n }\n\n this._prepareData(context);\n }\n\n serialize(): Object {\n return {\n type: 'canvas',\n coordinates: this.coordinates\n };\n }\n\n hasTransition(): boolean {\n return this._playing;\n }\n\n _hasInvalidDimensions(): boolean {\n for (const x of [this.canvas.width, this.canvas.height]) {\n if (isNaN(x) || x <= 0) return true;\n }\n return false;\n }\n}\n\nexport default CanvasSource;\n","// @flow\n\nimport Tile from './tile.js';\nimport window from '../util/window.js';\nimport TileBounds from './tile_bounds.js';\nimport RasterTileSource from './raster_tile_source.js';\nimport {extend, pick} from '../util/util.js';\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\n\nimport type Map from '../ui/map.js';\nimport type Dispatcher from '../util/dispatcher.js';\nimport type {Source} from './source.js';\nimport type {Callback} from '../types/callback.js';\nimport type {OverscaledTileID} from './tile_id.js';\n\ntype DataType = 'raster';\n\nfunction isRaster(data: any): boolean {\n return data instanceof window.ImageData ||\n data instanceof window.ImageBitmap ||\n data instanceof window.HTMLCanvasElement;\n}\n\n/**\n * Interface for custom sources. This is a specification for\n * implementers to model: it is not an exported method or class.\n *\n * Custom sources allow a user to load and modify their own tiles.\n * These sources can be added between any regular sources using {@link Map#addSource}.\n *\n * Custom sources must have a unique `id` and must have the `type` of `\"custom\"`.\n * They must implement `loadTile` and may implement `unloadTile`, `prepareTile`, `onAdd` and `onRemove`.\n * They can trigger rendering using {@link Map#triggerRepaint}.\n *\n * @interface CustomSourceInterface\n * @property {string} id A unique source id.\n * @property {string} type The source's type. Must be `\"custom\"`.\n * @example\n * // Custom source implemented as ES6 class\n * class CustomSource {\n * constructor() {\n * this.id = 'custom-source';\n * this.type = 'custom';\n * this.tileSize = 256;\n * this.tilesUrl = 'https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.jpg';\n * this.attribution = 'Map tiles by Stamen Design, under CC BY 3.0';\n * }\n *\n * async loadTile(tile, {signal}) {\n * const url = this.tilesUrl\n * .replace('{z}', String(tile.z))\n * .replace('{x}', String(tile.x))\n * .replace('{y}', String(tile.y));\n *\n * const response = await fetch(url, {signal});\n * const data = await response.arrayBuffer();\n *\n * const blob = new window.Blob([new Uint8Array(data)], {type: 'image/png'});\n * const imageBitmap = await window.createImageBitmap(blob);\n *\n * return imageBitmap;\n * }\n * }\n *\n * map.on('load', () => {\n * map.addSource('custom-source', new CustomSource());\n * map.addLayer({\n * id: 'layer',\n * type: 'raster',\n * source: 'custom-source'\n * });\n * });\n */\n\n/**\n * Optional method called when the source has been added to the Map with {@link Map#addSource}.\n * This gives the source a chance to initialize resources and register event listeners.\n *\n * @function\n * @memberof CustomSourceInterface\n * @instance\n * @name onAdd\n * @param {Map} map The Map this custom source was just added to.\n */\n\n/**\n * Optional method called when the source has been removed from the Map with {@link Map#removeSource}.\n * This gives the source a chance to clean up resources and event listeners.\n *\n * @function\n * @memberof CustomSourceInterface\n * @instance\n * @name onRemove\n * @param {Map} map The Map this custom source was added to.\n */\n\n/**\n * Optional method called after the tile is unloaded from the map viewport. This\n * gives the source a chance to clean up resources and event listeners.\n *\n * @function\n * @memberof CustomSourceInterface\n * @instance\n * @name unloadTile\n * @param {{ z: number, x: number, y: number }} tile Tile name to unload in the XYZ scheme format.\n */\n\n/**\n * Optional method called during a render frame to check if there is a tile to render.\n *\n * @function\n * @memberof CustomSourceInterface\n * @instance\n * @name hasTile\n * @param {{ z: number, x: number, y: number }} tile Tile name to prepare in the XYZ scheme format.\n * @returns {boolean} True if tile exists, otherwise false.\n */\n\n/**\n * Optional method called during a render frame to allow a source to prepare and modify a tile texture if needed.\n *\n * @function\n * @memberof CustomSourceInterface\n * @instance\n * @name prepareTile\n * @param {{ z: number, x: number, y: number }} tile Tile name to prepare in the XYZ scheme format.\n * @returns {TextureImage} The tile image data as an `HTMLImageElement`, `ImageData`, `ImageBitmap` or object with `width`, `height`, and `data`.\n */\n\n/**\n * Called when the map starts loading tile for the current animation frame.\n *\n * @function\n * @memberof CustomSourceInterface\n * @instance\n * @name loadTile\n * @param {{ z: number, x: number, y: number }} tile Tile name to load in the XYZ scheme format.\n * @param {Object} options Options.\n * @param {AbortSignal} options.signal A signal object that allows the map to cancel tile loading request.\n * @returns {Promise<TextureImage>} The tile image data as an `HTMLImageElement`, `ImageData`, `ImageBitmap` or object with `width`, `height`, and `data`.\n */\nexport type CustomSourceInterface<T> = {\n id: string;\n type: 'custom',\n dataType: ?DataType,\n minzoom: ?number,\n maxzoom: ?number,\n scheme: ?string;\n tileSize: ?number,\n attribution: ?string,\n bounds: ?[number, number, number, number];\n hasTile: ?(tileID: { z: number, x: number, y: number }) => boolean,\n loadTile: (tileID: { z: number, x: number, y: number }, options: { signal: AbortSignal }) => Promise<T>,\n prepareTile: ?(tileID: { z: number, x: number, y: number }) => ?T,\n unloadTile: ?(tileID: { z: number, x: number, y: number }) => void,\n onAdd: ?(map: Map) => void,\n onRemove: ?(map: Map) => void,\n}\n\nclass CustomSource<T> extends Evented implements Source {\n\n id: string;\n type: 'custom';\n scheme: string;\n minzoom: number;\n maxzoom: number;\n tileSize: number;\n attribution: string;\n\n roundZoom: boolean;\n tileBounds: ?TileBounds;\n minTileCacheSize: ?number;\n maxTileCacheSize: ?number;\n\n _map: Map;\n _loaded: boolean;\n _dispatcher: Dispatcher;\n _dataType: ?DataType;\n _implementation: CustomSourceInterface<T>;\n\n constructor(id: string, implementation: CustomSourceInterface<T>, dispatcher: Dispatcher, eventedParent: Evented) {\n super();\n this.id = id;\n this.type = 'custom';\n this._dataType = 'raster';\n this._dispatcher = dispatcher;\n this._implementation = implementation;\n this.setEventedParent(eventedParent);\n\n this.scheme = 'xyz';\n this.minzoom = 0;\n this.maxzoom = 22;\n this.tileSize = 512;\n\n this._loaded = false;\n this.roundZoom = true;\n\n if (!this._implementation) {\n this.fire(new ErrorEvent(new Error(`Missing implementation for ${this.id} custom source`)));\n }\n\n if (!this._implementation.loadTile) {\n this.fire(new ErrorEvent(new Error(`Missing loadTile implementation for ${this.id} custom source`)));\n }\n\n if (this._implementation.bounds) {\n this.tileBounds = new TileBounds(this._implementation.bounds, this.minzoom, this.maxzoom);\n }\n\n // $FlowFixMe[prop-missing]\n implementation.update = this._update.bind(this);\n\n // $FlowFixMe[prop-missing]\n implementation.coveringTiles = this._coveringTiles.bind(this);\n\n extend(this, pick(implementation, ['dataType', 'scheme', 'minzoom', 'maxzoom', 'tileSize', 'attribution', 'minTileCacheSize', 'maxTileCacheSize']));\n }\n\n serialize(): Source {\n return pick(this, ['type', 'scheme', 'minzoom', 'maxzoom', 'tileSize', 'attribution']);\n }\n\n load() {\n this._loaded = true;\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'metadata'}));\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'content'}));\n }\n\n loaded(): boolean {\n return this._loaded;\n }\n\n onAdd(map: Map): void {\n this._map = map;\n this._loaded = false;\n this.fire(new Event('dataloading', {dataType: 'source'}));\n if (this._implementation.onAdd) this._implementation.onAdd(map);\n this.load();\n }\n\n onRemove(map: Map): void {\n if (this._implementation.onRemove) {\n this._implementation.onRemove(map);\n }\n }\n\n hasTile(tileID: OverscaledTileID): boolean {\n if (this._implementation.hasTile) {\n const {x, y, z} = tileID.canonical;\n return this._implementation.hasTile({x, y, z});\n }\n\n return !this.tileBounds || this.tileBounds.contains(tileID.canonical);\n }\n\n loadTile(tile: Tile, callback: Callback<void>): void {\n const {x, y, z} = tile.tileID.canonical;\n const controller = new window.AbortController();\n const signal = controller.signal;\n\n const request = this._implementation.loadTile({x, y, z}, {signal});\n if (!request) {\n // Create an empty image and set the tile state to `loaded`\n // if the implementation didn't return the async tile request\n const emptyImage = {width: this.tileSize, height: this.tileSize, data: null};\n this.loadTileData(tile, (emptyImage: any));\n tile.state = 'loaded';\n return callback(null);\n }\n\n // $FlowFixMe[prop-missing]\n request.cancel = () => controller.abort();\n\n // $FlowFixMe[prop-missing]\n tile.request = request.then(tileLoaded.bind(this))\n .catch(error => {\n // silence AbortError\n if (error.code === 20) return;\n tile.state = 'errored';\n callback(error);\n });\n\n function tileLoaded(data) {\n delete tile.request;\n\n if (tile.aborted) {\n tile.state = 'unloaded';\n return callback(null);\n }\n\n if (!data) {\n // Create an empty image and set the tile state to `loaded`\n // if the implementation returned no tile data\n const emptyImage = {width: this.tileSize, height: this.tileSize, data: null};\n this.loadTileData(tile, (emptyImage: any));\n tile.state = 'loaded';\n return callback(null);\n }\n\n if (!isRaster(data)) {\n tile.state = 'errored';\n return callback(new Error(`Can't infer data type for ${this.id}, only raster data supported at the moment`));\n }\n\n this.loadTileData(tile, data);\n tile.state = 'loaded';\n callback(null);\n }\n }\n\n loadTileData(tile: Tile, data: T): void {\n // Only raster data supported at the moment\n RasterTileSource.loadTileData(tile, (data: any), this._map.painter);\n }\n\n unloadTileData(tile: Tile): void {\n // Only raster data supported at the moment\n RasterTileSource.unloadTileData(tile, this._map.painter);\n }\n\n prepareTile(tile: Tile): ?T {\n if (!this._implementation.prepareTile) return null;\n\n const {x, y, z} = tile.tileID.canonical;\n const data = this._implementation.prepareTile({x, y, z});\n if (!data) return null;\n\n this.loadTileData(tile, data);\n tile.state = 'loaded';\n return data;\n }\n\n unloadTile(tile: Tile, callback: Callback<void>): void {\n this.unloadTileData(tile);\n if (this._implementation.unloadTile) {\n const {x, y, z} = tile.tileID.canonical;\n this._implementation.unloadTile({x, y, z});\n }\n\n callback();\n }\n\n abortTile(tile: Tile, callback: Callback<void>): void {\n if (tile.request && tile.request.cancel) {\n tile.request.cancel();\n delete tile.request;\n }\n\n callback();\n }\n\n hasTransition(): boolean {\n return false;\n }\n\n _coveringTiles(): { z: number, x: number, y: number }[] {\n const tileIDs = this._map.transform.coveringTiles({\n tileSize: this.tileSize,\n minzoom: this.minzoom,\n maxzoom: this.maxzoom,\n roundZoom: this.roundZoom\n });\n\n return tileIDs.map(tileID => ({x: tileID.canonical.x, y: tileID.canonical.y, z: tileID.canonical.z}));\n }\n\n _update() {\n this.fire(new Event('data', {dataType: 'source', sourceDataType: 'content'}));\n }\n}\n\nexport default CustomSource;\n","// @flow\n\nimport type SourceCache from './source_cache.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type CollisionIndex from '../symbol/collision_index.js';\nimport type Transform from '../geo/transform.js';\nimport type {RetainedQueryData} from '../symbol/placement.js';\nimport type {FilterSpecification} from '../style-spec/types.js';\nimport type {QueryGeometry} from '../style/query_geometry.js';\nimport assert from 'assert';\nimport {mat4} from 'gl-matrix';\n\nimport type Point from '@mapbox/point-geometry';\nimport type {QueryResult} from '../data/feature_index.js';\nimport type {QueryFeature} from '../util/vectortile_to_geojson.js';\n\nexport type RenderedFeatureLayers = Array<{\n wrappedTileID: number;\n queryResults: QueryResult\n}>;\n\n/*\n * Returns a matrix that can be used to convert from tile coordinates to viewport pixel coordinates.\n */\nfunction getPixelPosMatrix(transform, tileID) {\n const t = mat4.identity([]);\n mat4.scale(t, t, [transform.width * 0.5, -transform.height * 0.5, 1]);\n mat4.translate(t, t, [1, -1, 0]);\n mat4.multiply(t, t, transform.calculateProjMatrix(tileID.toUnwrapped()));\n return Float32Array.from(t);\n}\n\nexport function queryRenderedFeatures(sourceCache: SourceCache,\n styleLayers: {[_: string]: StyleLayer},\n serializedLayers: {[_: string]: Object},\n queryGeometry: QueryGeometry,\n params: { filter: FilterSpecification, layers: Array<string>, availableImages: Array<string> },\n transform: Transform,\n use3DQuery: boolean,\n visualizeQueryGeometry: boolean = false): QueryResult {\n const tileResults = sourceCache.tilesIn(queryGeometry, use3DQuery, visualizeQueryGeometry);\n tileResults.sort(sortTilesIn);\n const renderedFeatureLayers = [];\n for (const tileResult of tileResults) {\n renderedFeatureLayers.push({\n wrappedTileID: tileResult.tile.tileID.wrapped().key,\n queryResults: tileResult.tile.queryRenderedFeatures(\n styleLayers,\n serializedLayers,\n sourceCache._state,\n tileResult,\n params,\n transform,\n getPixelPosMatrix(sourceCache.transform, tileResult.tile.tileID),\n visualizeQueryGeometry)\n });\n }\n\n const result = mergeRenderedFeatureLayers(renderedFeatureLayers);\n\n // Merge state from SourceCache into the results\n for (const layerID in result) {\n result[layerID].forEach((featureWrapper) => {\n const feature = featureWrapper.feature;\n const layer = feature.layer;\n\n if (!layer || layer.type === 'background' || layer.type === 'sky') return;\n\n feature.source = layer.source;\n if (layer['source-layer']) {\n feature.sourceLayer = layer['source-layer'];\n }\n feature.state = feature.id !== undefined ? sourceCache.getFeatureState(layer['source-layer'], feature.id) : {};\n });\n }\n return result;\n}\n\nexport function queryRenderedSymbols(styleLayers: {[_: string]: StyleLayer},\n serializedLayers: {[_: string]: StyleLayer},\n getLayerSourceCache: (layer: StyleLayer) => SourceCache,\n queryGeometry: Array<Point>,\n params: { filter: FilterSpecification, layers: Array<string>, availableImages: Array<string> },\n collisionIndex: CollisionIndex,\n retainedQueryData: {[_: number]: RetainedQueryData}): QueryResult {\n const result = {};\n const renderedSymbols = collisionIndex.queryRenderedSymbols(queryGeometry);\n const bucketQueryData = [];\n for (const bucketInstanceId of Object.keys(renderedSymbols).map(Number)) {\n bucketQueryData.push(retainedQueryData[bucketInstanceId]);\n }\n bucketQueryData.sort(sortTilesIn);\n\n for (const queryData of bucketQueryData) {\n const bucketSymbols = queryData.featureIndex.lookupSymbolFeatures(\n renderedSymbols[queryData.bucketInstanceId],\n serializedLayers,\n queryData.bucketIndex,\n queryData.sourceLayerIndex,\n params.filter,\n params.layers,\n params.availableImages,\n styleLayers);\n\n for (const layerID in bucketSymbols) {\n const resultFeatures = result[layerID] = result[layerID] || [];\n const layerSymbols = bucketSymbols[layerID];\n layerSymbols.sort((a, b) => {\n // Match topDownFeatureComparator from FeatureIndex, but using\n // most recent sorting of features from bucket.sortFeatures\n const featureSortOrder = queryData.featureSortOrder;\n if (featureSortOrder) {\n // queryRenderedSymbols documentation says we'll return features in\n // \"top-to-bottom\" rendering order (aka last-to-first).\n // Actually there can be multiple symbol instances per feature, so\n // we sort each feature based on the first matching symbol instance.\n const sortedA = featureSortOrder.indexOf(a.featureIndex);\n const sortedB = featureSortOrder.indexOf(b.featureIndex);\n assert(sortedA >= 0);\n assert(sortedB >= 0);\n return sortedB - sortedA;\n } else {\n // Bucket hasn't been re-sorted based on angle, so use the\n // reverse of the order the features appeared in the data.\n return b.featureIndex - a.featureIndex;\n }\n });\n for (const symbolFeature of layerSymbols) {\n resultFeatures.push(symbolFeature);\n }\n }\n }\n\n // Merge state from SourceCache into the results\n for (const layerName in result) {\n result[layerName].forEach((featureWrapper) => {\n const feature = featureWrapper.feature;\n const layer = styleLayers[layerName];\n const sourceCache = getLayerSourceCache(layer);\n const state = sourceCache.getFeatureState(feature.layer['source-layer'], feature.id);\n feature.source = feature.layer.source;\n if (feature.layer['source-layer']) {\n feature.sourceLayer = feature.layer['source-layer'];\n }\n feature.state = state;\n });\n }\n return result;\n}\n\nexport function querySourceFeatures(sourceCache: SourceCache, params: any): Array<QueryFeature> {\n const tiles = sourceCache.getRenderableIds().map((id) => {\n return sourceCache.getTileByID(id);\n });\n\n const result = [];\n\n const dataTiles = {};\n for (let i = 0; i < tiles.length; i++) {\n const tile = tiles[i];\n const dataID = tile.tileID.canonical.key;\n if (!dataTiles[dataID]) {\n dataTiles[dataID] = true;\n tile.querySourceFeatures(result, params);\n }\n }\n\n return result;\n}\n\nfunction sortTilesIn(a, b) {\n const idA = a.tileID;\n const idB = b.tileID;\n return (idA.overscaledZ - idB.overscaledZ) || (idA.canonical.y - idB.canonical.y) || (idA.wrap - idB.wrap) || (idA.canonical.x - idB.canonical.x);\n}\n\nfunction mergeRenderedFeatureLayers(tiles: RenderedFeatureLayers): QueryResult {\n // Merge results from all tiles, but if two tiles share the same\n // wrapped ID, don't duplicate features between the two tiles\n const result = {};\n const wrappedIDLayerMap = {};\n for (const tile of tiles) {\n const queryResults = tile.queryResults;\n const wrappedID = tile.wrappedTileID;\n const wrappedIDLayers = wrappedIDLayerMap[wrappedID] = wrappedIDLayerMap[wrappedID] || {};\n for (const layerID in queryResults) {\n const tileFeatures = queryResults[layerID];\n const wrappedIDFeatures = wrappedIDLayers[layerID] = wrappedIDLayers[layerID] || {};\n const resultFeatures = result[layerID] = result[layerID] || [];\n for (const tileFeature of tileFeatures) {\n if (!wrappedIDFeatures[tileFeature.featureIndex]) {\n wrappedIDFeatures[tileFeature.featureIndex] = true;\n resultFeatures.push(tileFeature);\n }\n }\n }\n }\n return result;\n}\n","// @flow\n\nimport window from '../window.js';\nimport mapboxgl from '../../index.js';\n\nimport type {WorkerInterface} from '../web_worker.js';\n\nexport default function (): WorkerInterface {\n return (mapboxgl.workerClass != null) ? new mapboxgl.workerClass() : (new window.Worker(mapboxgl.workerUrl): any); // eslint-disable-line new-cap\n}\n","// @flow\n\nimport WebWorker from './web_worker.js';\nimport type {WorkerInterface} from './web_worker.js';\n\nexport const PRELOAD_POOL_ID = 'mapboxgl_preloaded_worker_pool';\n\n/**\n * Constructs a worker pool.\n * @private\n */\nexport default class WorkerPool {\n static workerCount: number;\n\n active: {[_: number | string]: boolean};\n workers: Array<WorkerInterface>;\n\n constructor() {\n this.active = {};\n }\n\n acquire(mapId: number | string): Array<WorkerInterface> {\n if (!this.workers) {\n // Lazily look up the value of mapboxgl.workerCount so that\n // client code has had a chance to set it.\n this.workers = [];\n while (this.workers.length < WorkerPool.workerCount) {\n this.workers.push(new WebWorker());\n }\n }\n\n this.active[mapId] = true;\n return this.workers.slice();\n }\n\n release(mapId: number | string) {\n delete this.active[mapId];\n if (this.numActive() === 0) {\n this.workers.forEach((w) => {\n w.terminate();\n });\n this.workers = (null: any);\n }\n }\n\n isPreloaded(): boolean {\n return !!this.active[PRELOAD_POOL_ID];\n }\n\n numActive(): number {\n return Object.keys(this.active).length;\n }\n}\n\n// extensive benchmarking showed 2 to be the best default for both desktop and mobile devices;\n// we can't rely on hardwareConcurrency because of wild inconsistency of reported numbers between browsers\nWorkerPool.workerCount = 2;\n","// @flow\n\nimport WorkerPool, {PRELOAD_POOL_ID} from './worker_pool.js';\n\nlet globalWorkerPool;\n\n/**\n * Creates (if necessary) and returns the single, global WorkerPool instance\n * to be shared across each Map\n * @private\n */\nexport default function getGlobalWorkerPool (): WorkerPool {\n if (!globalWorkerPool) {\n globalWorkerPool = new WorkerPool();\n }\n return globalWorkerPool;\n}\n\nexport function prewarm() {\n const workerPool = getGlobalWorkerPool();\n workerPool.acquire(PRELOAD_POOL_ID);\n}\n\nexport function clearPrewarmedResources() {\n const pool = globalWorkerPool;\n if (pool) {\n // Remove the pool only if all maps that referenced the preloaded global worker pool have been removed.\n if (pool.isPreloaded() && pool.numActive() === 1) {\n pool.release(PRELOAD_POOL_ID);\n globalWorkerPool = null;\n } else {\n console.warn('Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()');\n }\n }\n}\n","// @flow\n\nimport refProperties from './util/ref_properties.js';\n\nimport type {LayerSpecification} from './types.js';\n\nfunction deref(layer: LayerSpecification, parent: LayerSpecification): LayerSpecification {\n const result = {};\n\n for (const k in layer) {\n if (k !== 'ref') {\n result[k] = layer[k];\n }\n }\n\n refProperties.forEach((k) => {\n if (k in parent) {\n result[k] = (parent: any)[k];\n }\n });\n\n return ((result: any): LayerSpecification);\n}\n\n/**\n * Given an array of layers, some of which may contain `ref` properties\n * whose value is the `id` of another property, return a new array where\n * such layers have been augmented with the 'type', 'source', etc. properties\n * from the parent layer, and the `ref` property has been removed.\n *\n * The input is not modified. The output may contain references to portions\n * of the input.\n *\n * @private\n * @param {Array<Layer>} layers\n * @returns {Array<Layer>}\n */\nexport default function derefLayers(layers: Array<LayerSpecification>): Array<LayerSpecification> {\n layers = layers.slice();\n\n const map = Object.create(null);\n for (let i = 0; i < layers.length; i++) {\n map[layers[i].id] = layers[i];\n }\n\n for (let i = 0; i < layers.length; i++) {\n if ('ref' in layers[i]) {\n layers[i] = deref(layers[i], map[(layers[i]: any).ref]);\n }\n }\n\n return layers;\n}\n","// @flow\n\nimport isEqual from './util/deep_equal.js';\n\nimport type {StyleSpecification} from './types.js';\n\ntype Command = {\n command: string;\n args: Array<any>;\n};\n\nexport const operations: {[_: string]: string} = {\n\n /*\n * { command: 'setStyle', args: [stylesheet] }\n */\n setStyle: 'setStyle',\n\n /*\n * { command: 'addLayer', args: [layer, 'beforeLayerId'] }\n */\n addLayer: 'addLayer',\n\n /*\n * { command: 'removeLayer', args: ['layerId'] }\n */\n removeLayer: 'removeLayer',\n\n /*\n * { command: 'setPaintProperty', args: ['layerId', 'prop', value] }\n */\n setPaintProperty: 'setPaintProperty',\n\n /*\n * { command: 'setLayoutProperty', args: ['layerId', 'prop', value] }\n */\n setLayoutProperty: 'setLayoutProperty',\n\n /*\n * { command: 'setFilter', args: ['layerId', filter] }\n */\n setFilter: 'setFilter',\n\n /*\n * { command: 'addSource', args: ['sourceId', source] }\n */\n addSource: 'addSource',\n\n /*\n * { command: 'removeSource', args: ['sourceId'] }\n */\n removeSource: 'removeSource',\n\n /*\n * { command: 'setGeoJSONSourceData', args: ['sourceId', data] }\n */\n setGeoJSONSourceData: 'setGeoJSONSourceData',\n\n /*\n * { command: 'setLayerZoomRange', args: ['layerId', 0, 22] }\n */\n setLayerZoomRange: 'setLayerZoomRange',\n\n /*\n * { command: 'setLayerProperty', args: ['layerId', 'prop', value] }\n */\n setLayerProperty: 'setLayerProperty',\n\n /*\n * { command: 'setCenter', args: [[lon, lat]] }\n */\n setCenter: 'setCenter',\n\n /*\n * { command: 'setZoom', args: [zoom] }\n */\n setZoom: 'setZoom',\n\n /*\n * { command: 'setBearing', args: [bearing] }\n */\n setBearing: 'setBearing',\n\n /*\n * { command: 'setPitch', args: [pitch] }\n */\n setPitch: 'setPitch',\n\n /*\n * { command: 'setSprite', args: ['spriteUrl'] }\n */\n setSprite: 'setSprite',\n\n /*\n * { command: 'setGlyphs', args: ['glyphsUrl'] }\n */\n setGlyphs: 'setGlyphs',\n\n /*\n * { command: 'setTransition', args: [transition] }\n */\n setTransition: 'setTransition',\n\n /*\n * { command: 'setLighting', args: [lightProperties] }\n */\n setLight: 'setLight',\n\n /*\n * { command: 'setTerrain', args: [terrainProperties] }\n */\n setTerrain: 'setTerrain',\n\n /*\n * { command: 'setFog', args: [fogProperties] }\n */\n setFog: 'setFog',\n\n /*\n * { command: 'setProjection', args: [projectionProperties] }\n */\n setProjection: 'setProjection'\n};\n\nfunction addSource(sourceId, after, commands) {\n commands.push({command: operations.addSource, args: [sourceId, after[sourceId]]});\n}\n\nfunction removeSource(sourceId, commands, sourcesRemoved) {\n commands.push({command: operations.removeSource, args: [sourceId]});\n sourcesRemoved[sourceId] = true;\n}\n\nfunction updateSource(sourceId, after, commands, sourcesRemoved) {\n removeSource(sourceId, commands, sourcesRemoved);\n addSource(sourceId, after, commands);\n}\n\nfunction canUpdateGeoJSON(before, after, sourceId) {\n let prop;\n for (prop in before[sourceId]) {\n if (!before[sourceId].hasOwnProperty(prop)) continue;\n if (prop !== 'data' && !isEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n for (prop in after[sourceId]) {\n if (!after[sourceId].hasOwnProperty(prop)) continue;\n if (prop !== 'data' && !isEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n return true;\n}\n\nfunction diffSources(before, after, commands, sourcesRemoved) {\n before = before || {};\n after = after || {};\n\n let sourceId;\n\n // look for sources to remove\n for (sourceId in before) {\n if (!before.hasOwnProperty(sourceId)) continue;\n if (!after.hasOwnProperty(sourceId)) {\n removeSource(sourceId, commands, sourcesRemoved);\n }\n }\n\n // look for sources to add/update\n for (sourceId in after) {\n if (!after.hasOwnProperty(sourceId)) continue;\n if (!before.hasOwnProperty(sourceId)) {\n addSource(sourceId, after, commands);\n } else if (!isEqual(before[sourceId], after[sourceId])) {\n if (before[sourceId].type === 'geojson' && after[sourceId].type === 'geojson' && canUpdateGeoJSON(before, after, sourceId)) {\n commands.push({command: operations.setGeoJSONSourceData, args: [sourceId, after[sourceId].data]});\n } else {\n // no update command, must remove then add\n updateSource(sourceId, after, commands, sourcesRemoved);\n }\n }\n }\n}\n\nfunction diffLayerPropertyChanges(before, after, commands, layerId, klass, command) {\n before = before || {};\n after = after || {};\n\n let prop;\n\n for (prop in before) {\n if (!before.hasOwnProperty(prop)) continue;\n if (!isEqual(before[prop], after[prop])) {\n commands.push({command, args: [layerId, prop, after[prop], klass]});\n }\n }\n for (prop in after) {\n if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop)) continue;\n if (!isEqual(before[prop], after[prop])) {\n commands.push({command, args: [layerId, prop, after[prop], klass]});\n }\n }\n}\n\nfunction pluckId(layer) {\n return layer.id;\n}\nfunction indexById(group, layer) {\n group[layer.id] = layer;\n return group;\n}\n\nfunction diffLayers(before, after, commands) {\n before = before || [];\n after = after || [];\n\n // order of layers by id\n const beforeOrder = before.map(pluckId);\n const afterOrder = after.map(pluckId);\n\n // index of layer by id\n const beforeIndex = before.reduce(indexById, {});\n const afterIndex = after.reduce(indexById, {});\n\n // track order of layers as if they have been mutated\n const tracker = beforeOrder.slice();\n\n // layers that have been added do not need to be diffed\n const clean = Object.create(null);\n\n let i, d, layerId, beforeLayer, afterLayer, insertBeforeLayerId, prop;\n\n // remove layers\n for (i = 0, d = 0; i < beforeOrder.length; i++) {\n layerId = beforeOrder[i];\n if (!afterIndex.hasOwnProperty(layerId)) {\n commands.push({command: operations.removeLayer, args: [layerId]});\n tracker.splice(tracker.indexOf(layerId, d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n }\n\n // add/reorder layers\n for (i = 0, d = 0; i < afterOrder.length; i++) {\n // work backwards as insert is before an existing layer\n layerId = afterOrder[afterOrder.length - 1 - i];\n\n if (tracker[tracker.length - 1 - i] === layerId) continue;\n\n if (beforeIndex.hasOwnProperty(layerId)) {\n // remove the layer before we insert at the correct position\n commands.push({command: operations.removeLayer, args: [layerId]});\n tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n\n // add layer at correct position\n insertBeforeLayerId = tracker[tracker.length - i];\n commands.push({command: operations.addLayer, args: [afterIndex[layerId], insertBeforeLayerId]});\n tracker.splice(tracker.length - i, 0, layerId);\n clean[layerId] = true;\n }\n\n // update layers\n for (i = 0; i < afterOrder.length; i++) {\n layerId = afterOrder[i];\n beforeLayer = beforeIndex[layerId];\n afterLayer = afterIndex[layerId];\n\n // no need to update if previously added (new or moved)\n if (clean[layerId] || isEqual(beforeLayer, afterLayer)) continue;\n\n // If source, source-layer, or type have changes, then remove the layer\n // and add it back 'from scratch'.\n if (!isEqual(beforeLayer.source, afterLayer.source) || !isEqual(beforeLayer['source-layer'], afterLayer['source-layer']) || !isEqual(beforeLayer.type, afterLayer.type)) {\n commands.push({command: operations.removeLayer, args: [layerId]});\n // we add the layer back at the same position it was already in, so\n // there's no need to update the `tracker`\n insertBeforeLayerId = tracker[tracker.lastIndexOf(layerId) + 1];\n commands.push({command: operations.addLayer, args: [afterLayer, insertBeforeLayerId]});\n continue;\n }\n\n // layout, paint, filter, minzoom, maxzoom\n diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, operations.setLayoutProperty);\n diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, operations.setPaintProperty);\n if (!isEqual(beforeLayer.filter, afterLayer.filter)) {\n commands.push({command: operations.setFilter, args: [layerId, afterLayer.filter]});\n }\n if (!isEqual(beforeLayer.minzoom, afterLayer.minzoom) || !isEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n commands.push({command: operations.setLayerZoomRange, args: [layerId, afterLayer.minzoom, afterLayer.maxzoom]});\n }\n\n // handle all other layer props, including paint.*\n for (prop in beforeLayer) {\n if (!beforeLayer.hasOwnProperty(prop)) continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({command: operations.setLayerProperty, args: [layerId, prop, afterLayer[prop]]});\n }\n }\n for (prop in afterLayer) {\n if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop)) continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({command: operations.setLayerProperty, args: [layerId, prop, afterLayer[prop]]});\n }\n }\n }\n}\n\n/**\n * Diff two stylesheet\n *\n * Creates semanticly aware diffs that can easily be applied at runtime.\n * Operations produced by the diff closely resemble the mapbox-gl-js API. Any\n * error creating the diff will fall back to the 'setStyle' operation.\n *\n * Example diff:\n * [\n * { command: 'setConstant', args: ['@water', '#0000FF'] },\n * { command: 'setPaintProperty', args: ['background', 'background-color', 'black'] }\n * ]\n *\n * @private\n * @param {*} [before] stylesheet to compare from\n * @param {*} after stylesheet to compare to\n * @returns Array list of changes\n */\nexport default function diffStyles(before: StyleSpecification, after: StyleSpecification): Array<Command> {\n if (!before) return [{command: operations.setStyle, args: [after]}];\n\n let commands = [];\n\n try {\n // Handle changes to top-level properties\n if (!isEqual(before.version, after.version)) {\n return [{command: operations.setStyle, args: [after]}];\n }\n if (!isEqual(before.center, after.center)) {\n commands.push({command: operations.setCenter, args: [after.center]});\n }\n if (!isEqual(before.zoom, after.zoom)) {\n commands.push({command: operations.setZoom, args: [after.zoom]});\n }\n if (!isEqual(before.bearing, after.bearing)) {\n commands.push({command: operations.setBearing, args: [after.bearing]});\n }\n if (!isEqual(before.pitch, after.pitch)) {\n commands.push({command: operations.setPitch, args: [after.pitch]});\n }\n if (!isEqual(before.sprite, after.sprite)) {\n commands.push({command: operations.setSprite, args: [after.sprite]});\n }\n if (!isEqual(before.glyphs, after.glyphs)) {\n commands.push({command: operations.setGlyphs, args: [after.glyphs]});\n }\n if (!isEqual(before.transition, after.transition)) {\n commands.push({command: operations.setTransition, args: [after.transition]});\n }\n if (!isEqual(before.light, after.light)) {\n commands.push({command: operations.setLight, args: [after.light]});\n }\n if (!isEqual(before.fog, after.fog)) {\n commands.push({command: operations.setFog, args: [after.fog]});\n }\n if (!isEqual(before.projection, after.projection)) {\n commands.push({command: operations.setProjection, args: [after.projection]});\n }\n\n // Handle changes to `sources`\n // If a source is to be removed, we also--before the removeSource\n // command--need to remove all the style layers that depend on it.\n const sourcesRemoved = {};\n\n // First collect the {add,remove}Source commands\n const removeOrAddSourceCommands = [];\n diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved);\n\n // Push a removeLayer command for each style layer that depends on a\n // source that's being removed.\n // Also, exclude any such layers them from the input to `diffLayers`\n // below, so that diffLayers produces the appropriate `addLayers`\n // command\n const beforeLayers = [];\n if (before.layers) {\n before.layers.forEach((layer) => {\n if (layer.source && sourcesRemoved[layer.source]) {\n commands.push({command: operations.removeLayer, args: [layer.id]});\n } else {\n beforeLayers.push(layer);\n }\n });\n }\n\n // Remove the terrain if the source for that terrain is being removed\n let beforeTerrain = before.terrain;\n if (beforeTerrain) {\n if (sourcesRemoved[beforeTerrain.source]) {\n commands.push({command: operations.setTerrain, args: [undefined]});\n beforeTerrain = undefined;\n }\n }\n\n commands = commands.concat(removeOrAddSourceCommands);\n\n // Even though terrain is a top-level property\n // Its like a layer in the sense that it depends on a source being present.\n if (!isEqual(beforeTerrain, after.terrain)) {\n commands.push({command: operations.setTerrain, args: [after.terrain]});\n }\n\n // Handle changes to `layers`\n diffLayers(beforeLayers, after.layers, commands);\n\n } catch (e) {\n // fall back to setStyle\n console.warn('Unable to compute style diff:', e);\n commands = [{command: operations.setStyle, args: [after]}];\n }\n\n return commands;\n}\n","// @flow\n\nimport {clamp} from '../util/util.js';\nimport Point from '@mapbox/point-geometry';\nimport assert from 'assert';\n\nclass PathInterpolator {\n points: Array<Point>;\n length: number;\n paddedLength: number;\n padding: number;\n _distances: Array<number>;\n\n constructor(points_: ?Array<Point>, padding_: ?number) {\n this.reset(points_, padding_);\n }\n\n reset(points_: ?Array<Point>, padding_: ?number) {\n this.points = points_ || [];\n\n // Compute cumulative distance from first point to every other point in the segment.\n // Last entry in the array is total length of the path\n this._distances = [0.0];\n\n for (let i = 1; i < this.points.length; i++) {\n this._distances[i] = this._distances[i - 1] + this.points[i].dist(this.points[i - 1]);\n }\n\n this.length = this._distances[this._distances.length - 1];\n this.padding = Math.min(padding_ || 0, this.length * 0.5);\n this.paddedLength = this.length - this.padding * 2.0;\n }\n\n lerp(t: number): Point {\n assert(this.points.length > 0);\n if (this.points.length === 1) {\n return this.points[0];\n }\n\n t = clamp(t, 0, 1);\n\n // Find the correct segment [p0, p1] where p0 <= x < p1\n let currentIndex = 1;\n let distOfCurrentIdx = this._distances[currentIndex];\n const distToTarget = t * this.paddedLength + this.padding;\n\n while (distOfCurrentIdx < distToTarget && currentIndex < this._distances.length) {\n distOfCurrentIdx = this._distances[++currentIndex];\n }\n\n // Interpolate between the two points of the segment\n const idxOfPrevPoint = currentIndex - 1;\n const distOfPrevIdx = this._distances[idxOfPrevPoint];\n const segmentLength = distOfCurrentIdx - distOfPrevIdx;\n const segmentT = segmentLength > 0 ? (distToTarget - distOfPrevIdx) / segmentLength : 0;\n\n return this.points[idxOfPrevPoint].mult(1.0 - segmentT).add(this.points[currentIndex].mult(segmentT));\n }\n}\n\nexport default PathInterpolator;\n","// @flow\n\ntype GridItem = {\n key: any,\n x1: number,\n y1: number,\n x2: number,\n y2: number\n};\n\n/**\n * GridIndex is a data structure for testing the intersection of\n * circles and rectangles in a 2d plane.\n * It is optimized for rapid insertion and querying.\n * GridIndex splits the plane into a set of \"cells\" and keeps track\n * of which geometries intersect with each cell. At query time,\n * full geometry comparisons are only done for items that share\n * at least one cell. As long as the geometries are relatively\n * uniformly distributed across the plane, this greatly reduces\n * the number of comparisons necessary.\n *\n * @private\n */\nclass GridIndex {\n circleKeys: Array<any>;\n boxKeys: Array<any>;\n boxCells: Array<Array<number>>;\n circleCells: Array<Array<number>>;\n bboxes: Array<number>;\n circles: Array<number>;\n xCellCount: number;\n yCellCount: number;\n width: number;\n height: number;\n xScale: number;\n yScale: number;\n boxUid: number;\n circleUid: number;\n\n constructor (width: number, height: number, cellSize: number) {\n const boxCells = this.boxCells = [];\n const circleCells = this.circleCells = [];\n\n // More cells -> fewer geometries to check per cell, but items tend\n // to be split across more cells.\n // Sweet spot allows most small items to fit in one cell\n this.xCellCount = Math.ceil(width / cellSize);\n this.yCellCount = Math.ceil(height / cellSize);\n\n for (let i = 0; i < this.xCellCount * this.yCellCount; i++) {\n boxCells.push([]);\n circleCells.push([]);\n }\n this.circleKeys = [];\n this.boxKeys = [];\n this.bboxes = [];\n this.circles = [];\n\n this.width = width;\n this.height = height;\n this.xScale = this.xCellCount / width;\n this.yScale = this.yCellCount / height;\n this.boxUid = 0;\n this.circleUid = 0;\n }\n\n keysLength(): number {\n return this.boxKeys.length + this.circleKeys.length;\n }\n\n insert(key: any, x1: number, y1: number, x2: number, y2: number) {\n this._forEachCell(x1, y1, x2, y2, this._insertBoxCell, this.boxUid++);\n this.boxKeys.push(key);\n this.bboxes.push(x1);\n this.bboxes.push(y1);\n this.bboxes.push(x2);\n this.bboxes.push(y2);\n }\n\n insertCircle(key: any, x: number, y: number, radius: number) {\n // Insert circle into grid for all cells in the circumscribing square\n // It's more than necessary (by a factor of 4/PI), but fast to insert\n this._forEachCell(x - radius, y - radius, x + radius, y + radius, this._insertCircleCell, this.circleUid++);\n this.circleKeys.push(key);\n this.circles.push(x);\n this.circles.push(y);\n this.circles.push(radius);\n }\n\n _insertBoxCell(x1: number, y1: number, x2: number, y2: number, cellIndex: number, uid: number) {\n this.boxCells[cellIndex].push(uid);\n }\n\n _insertCircleCell(x1: number, y1: number, x2: number, y2: number, cellIndex: number, uid: number) {\n this.circleCells[cellIndex].push(uid);\n }\n\n _query(x1: number, y1: number, x2: number, y2: number, hitTest: boolean, predicate?: any): boolean | Array<GridItem> {\n if (x2 < 0 || x1 > this.width || y2 < 0 || y1 > this.height) {\n return hitTest ? false : [];\n }\n const result = [];\n if (x1 <= 0 && y1 <= 0 && this.width <= x2 && this.height <= y2) {\n if (hitTest) {\n return true;\n }\n for (let boxUid = 0; boxUid < this.boxKeys.length; boxUid++) {\n result.push({\n key: this.boxKeys[boxUid],\n x1: this.bboxes[boxUid * 4],\n y1: this.bboxes[boxUid * 4 + 1],\n x2: this.bboxes[boxUid * 4 + 2],\n y2: this.bboxes[boxUid * 4 + 3]\n });\n }\n for (let circleUid = 0; circleUid < this.circleKeys.length; circleUid++) {\n const x = this.circles[circleUid * 3];\n const y = this.circles[circleUid * 3 + 1];\n const radius = this.circles[circleUid * 3 + 2];\n result.push({\n key: this.circleKeys[circleUid],\n x1: x - radius,\n y1: y - radius,\n x2: x + radius,\n y2: y + radius\n });\n }\n return predicate ? result.filter(predicate) : result;\n } else {\n const queryArgs = {\n hitTest,\n seenUids: {box: {}, circle: {}}\n };\n this._forEachCell(x1, y1, x2, y2, this._queryCell, result, queryArgs, predicate);\n return hitTest ? result.length > 0 : result;\n }\n }\n\n _queryCircle(x: number, y: number, radius: number, hitTest: boolean, predicate?: any): boolean | Array<GridItem> {\n // Insert circle into grid for all cells in the circumscribing square\n // It's more than necessary (by a factor of 4/PI), but fast to insert\n const x1 = x - radius;\n const x2 = x + radius;\n const y1 = y - radius;\n const y2 = y + radius;\n if (x2 < 0 || x1 > this.width || y2 < 0 || y1 > this.height) {\n return hitTest ? false : [];\n }\n\n // Box query early exits if the bounding box is larger than the grid, but we don't do\n // the equivalent calculation for circle queries because early exit is less likely\n // and the calculation is more expensive\n const result = [];\n const queryArgs = {\n hitTest,\n circle: {x, y, radius},\n seenUids: {box: {}, circle: {}}\n };\n this._forEachCell(x1, y1, x2, y2, this._queryCellCircle, result, queryArgs, predicate);\n return hitTest ? result.length > 0 : result;\n }\n\n query(x1: number, y1: number, x2: number, y2: number, predicate?: any): Array<GridItem> {\n return (this._query(x1, y1, x2, y2, false, predicate): any);\n }\n\n hitTest(x1: number, y1: number, x2: number, y2: number, predicate?: any): boolean {\n return (this._query(x1, y1, x2, y2, true, predicate): any);\n }\n\n hitTestCircle(x: number, y: number, radius: number, predicate?: any): boolean {\n return (this._queryCircle(x, y, radius, true, predicate): any);\n }\n\n _queryCell(x1: number, y1: number, x2: number, y2: number, cellIndex: number, result: any, queryArgs: any, predicate?: any): void | boolean {\n const seenUids = queryArgs.seenUids;\n const boxCell = this.boxCells[cellIndex];\n if (boxCell !== null) {\n const bboxes = this.bboxes;\n for (const boxUid of boxCell) {\n if (!seenUids.box[boxUid]) {\n seenUids.box[boxUid] = true;\n const offset = boxUid * 4;\n if ((x1 <= bboxes[offset + 2]) &&\n (y1 <= bboxes[offset + 3]) &&\n (x2 >= bboxes[offset + 0]) &&\n (y2 >= bboxes[offset + 1]) &&\n (!predicate || predicate(this.boxKeys[boxUid]))) {\n if (queryArgs.hitTest) {\n result.push(true);\n return true;\n } else {\n result.push({\n key: this.boxKeys[boxUid],\n x1: bboxes[offset],\n y1: bboxes[offset + 1],\n x2: bboxes[offset + 2],\n y2: bboxes[offset + 3]\n });\n }\n }\n }\n }\n }\n const circleCell = this.circleCells[cellIndex];\n if (circleCell !== null) {\n const circles = this.circles;\n for (const circleUid of circleCell) {\n if (!seenUids.circle[circleUid]) {\n seenUids.circle[circleUid] = true;\n const offset = circleUid * 3;\n if (this._circleAndRectCollide(\n circles[offset],\n circles[offset + 1],\n circles[offset + 2],\n x1,\n y1,\n x2,\n y2) &&\n (!predicate || predicate(this.circleKeys[circleUid]))) {\n if (queryArgs.hitTest) {\n result.push(true);\n return true;\n } else {\n const x = circles[offset];\n const y = circles[offset + 1];\n const radius = circles[offset + 2];\n result.push({\n key: this.circleKeys[circleUid],\n x1: x - radius,\n y1: y - radius,\n x2: x + radius,\n y2: y + radius\n });\n }\n }\n }\n }\n }\n }\n\n _queryCellCircle(x1: number, y1: number, x2: number, y2: number, cellIndex: number, result: any, queryArgs: any, predicate?: any): void | boolean {\n const circle = queryArgs.circle;\n const seenUids = queryArgs.seenUids;\n const boxCell = this.boxCells[cellIndex];\n if (boxCell !== null) {\n const bboxes = this.bboxes;\n for (const boxUid of boxCell) {\n if (!seenUids.box[boxUid]) {\n seenUids.box[boxUid] = true;\n const offset = boxUid * 4;\n if (this._circleAndRectCollide(\n circle.x,\n circle.y,\n circle.radius,\n bboxes[offset + 0],\n bboxes[offset + 1],\n bboxes[offset + 2],\n bboxes[offset + 3]) &&\n (!predicate || predicate(this.boxKeys[boxUid]))) {\n result.push(true);\n return true;\n }\n }\n }\n }\n\n const circleCell = this.circleCells[cellIndex];\n if (circleCell !== null) {\n const circles = this.circles;\n for (const circleUid of circleCell) {\n if (!seenUids.circle[circleUid]) {\n seenUids.circle[circleUid] = true;\n const offset = circleUid * 3;\n if (this._circlesCollide(\n circles[offset],\n circles[offset + 1],\n circles[offset + 2],\n circle.x,\n circle.y,\n circle.radius) &&\n (!predicate || predicate(this.circleKeys[circleUid]))) {\n result.push(true);\n return true;\n }\n }\n }\n }\n }\n\n _forEachCell(x1: number, y1: number, x2: number, y2: number, fn: any, arg1: any, arg2?: any, predicate?: any) {\n const cx1 = this._convertToXCellCoord(x1);\n const cy1 = this._convertToYCellCoord(y1);\n const cx2 = this._convertToXCellCoord(x2);\n const cy2 = this._convertToYCellCoord(y2);\n\n for (let x = cx1; x <= cx2; x++) {\n for (let y = cy1; y <= cy2; y++) {\n const cellIndex = this.xCellCount * y + x;\n if (fn.call(this, x1, y1, x2, y2, cellIndex, arg1, arg2, predicate)) return;\n }\n }\n }\n\n _convertToXCellCoord(x: number): number {\n return Math.max(0, Math.min(this.xCellCount - 1, Math.floor(x * this.xScale)));\n }\n\n _convertToYCellCoord(y: number): number {\n return Math.max(0, Math.min(this.yCellCount - 1, Math.floor(y * this.yScale)));\n }\n\n _circlesCollide(x1: number, y1: number, r1: number, x2: number, y2: number, r2: number): boolean {\n const dx = x2 - x1;\n const dy = y2 - y1;\n const bothRadii = r1 + r2;\n return (bothRadii * bothRadii) > (dx * dx + dy * dy);\n }\n\n _circleAndRectCollide(circleX: number, circleY: number, radius: number, x1: number, y1: number, x2: number, y2: number): boolean {\n const halfRectWidth = (x2 - x1) / 2;\n const distX = Math.abs(circleX - (x1 + halfRectWidth));\n if (distX > (halfRectWidth + radius)) {\n return false;\n }\n\n const halfRectHeight = (y2 - y1) / 2;\n const distY = Math.abs(circleY - (y1 + halfRectHeight));\n if (distY > (halfRectHeight + radius)) {\n return false;\n }\n\n if (distX <= halfRectWidth || distY <= halfRectHeight) {\n return true;\n }\n\n const dx = distX - halfRectWidth;\n const dy = distY - halfRectHeight;\n return (dx * dx + dy * dy <= (radius * radius));\n }\n}\n\nexport default GridIndex;\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\n\nimport {mat2, mat4, vec3, vec4} from 'gl-matrix';\nimport * as symbolSize from './symbol_size.js';\nimport {addDynamicAttributes, updateGlobeVertexNormal} from '../data/bucket/symbol_bucket.js';\nimport type Projection from '../geo/projection/projection.js';\nimport type Painter from '../render/painter.js';\nimport type Transform from '../geo/transform.js';\nimport type SymbolBucket from '../data/bucket/symbol_bucket.js';\nimport type {\n GlyphOffsetArray,\n SymbolLineVertexArray,\n SymbolDynamicLayoutArray,\n SymbolGlobeExtArray\n} from '../data/array_types.js';\nimport type {Mat4, Vec3, Vec4} from 'gl-matrix';\n\nimport {WritingMode} from '../symbol/shaping.js';\nimport {CanonicalTileID, OverscaledTileID} from '../source/tile_id.js';\nimport {calculateGlobeLabelMatrix} from '../geo/projection/globe_util.js';\nexport {updateLineLabels, hideGlyphs, getLabelPlaneMatrixForRendering, getLabelPlaneMatrixForPlacement, getGlCoordMatrix, project, projectVector, projectClamped, getPerspectiveRatio, placeFirstAndLastGlyph, placeGlyphAlongLine, xyTransformMat4};\n\ntype ProjectedSymbol = {|\n point: Vec3,\n signedDistanceFromCamera: number\n|};\ntype PlacedGlyph = {|\n angle: number,\n path: Array<Vec3>,\n point: Vec3,\n tilePath: Array<Point>,\n up: Vec3\n|}\n\nconst FlipState = {\n unknown: 0,\n flipRequired: 1,\n flipNotRequired: 2\n};\n\nconst maxTangent = Math.tan(85 * Math.PI / 180);\n\n/*\n * # Overview of coordinate spaces\n *\n * ## Tile coordinate spaces\n * Each label has an anchor. Some labels have corresponding line geometries.\n * The points for both anchors and lines are stored in tile units. Each tile has it's own\n * coordinate space going from (0, 0) at the top left to (EXTENT, EXTENT) at the bottom right.\n *\n * ## GL coordinate space\n * At the end of everything, the vertex shader needs to produce a position in GL coordinate space,\n * which is (-1, 1) at the top left and (1, -1) in the bottom right.\n *\n * ## Map pixel coordinate spaces\n * Each tile has a pixel coordinate space. It's just the tile units scaled so that one unit is\n * whatever counts as 1 pixel at the current zoom.\n * This space is used for pitch-alignment=map, rotation-alignment=map\n *\n * ## Rotated map pixel coordinate spaces\n * Like the above, but rotated so axis of the space are aligned with the viewport instead of the tile.\n * This space is used for pitch-alignment=map, rotation-alignment=viewport\n *\n * ## Viewport pixel coordinate space\n * (0, 0) is at the top left of the canvas and (pixelWidth, pixelHeight) is at the bottom right corner\n * of the canvas. This space is used for pitch-alignment=viewport\n *\n *\n * # Vertex projection\n * It goes roughly like this:\n * 1. project the anchor and line from tile units into the correct label coordinate space\n * - map pixel space pitch-alignment=map rotation-alignment=map\n * - rotated map pixel space pitch-alignment=map rotation-alignment=viewport\n * - viewport pixel space pitch-alignment=viewport rotation-alignment=*\n * 2. if the label follows a line, find the point along the line that is the correct distance from the anchor.\n * 3. add the glyph's corner offset to the point from step 3\n * 4. convert from the label coordinate space to gl coordinates\n *\n * For horizontal labels we want to do step 1 in the shader for performance reasons (no cpu work).\n * This is what `u_label_plane_matrix` is used for.\n * For labels aligned with lines we have to steps 1 and 2 on the cpu since we need access to the line geometry.\n * This is what `updateLineLabels(...)` does.\n * Since the conversion is handled on the cpu we just set `u_label_plane_matrix` to an identity matrix.\n *\n * Steps 3 and 4 are done in the shaders for all labels.\n */\n\n/*\n * Returns a matrix for converting from tile units to the correct label coordinate space.\n * This variation of the function returns a label space matrix specialized for rendering.\n * It transforms coordinates as-is to whatever the target space is (either 2D or 3D).\n * See also `getLabelPlaneMatrixForPlacement`\n */\nfunction getLabelPlaneMatrixForRendering(posMatrix: Float32Array,\n tileID: CanonicalTileID,\n pitchWithMap: boolean,\n rotateWithMap: boolean,\n transform: Transform,\n projection: Projection,\n pixelsToTileUnits: Float32Array): Float32Array {\n const m = mat4.create();\n\n if (pitchWithMap) {\n if (projection.name === 'globe') {\n const lm = calculateGlobeLabelMatrix(transform, tileID);\n mat4.multiply(m, m, lm);\n } else {\n const s = mat2.invert([], pixelsToTileUnits);\n m[0] = s[0];\n m[1] = s[1];\n m[4] = s[2];\n m[5] = s[3];\n if (!rotateWithMap) {\n mat4.rotateZ(m, m, transform.angle);\n }\n }\n } else {\n mat4.multiply(m, transform.labelPlaneMatrix, posMatrix);\n }\n\n return m;\n}\n\n/*\n * Returns a matrix for converting from tile units to the correct label coordinate space.\n * This variation of the function returns a matrix specialized for placement logic.\n * Coordinates will be clamped to x&y 2D plane which is used with viewport and map aligned placement\n * logic in most cases. Certain projections such as globe view will use 3D space for map aligned\n * label placement.\n */\nfunction getLabelPlaneMatrixForPlacement(posMatrix: Float32Array,\n tileID: CanonicalTileID,\n pitchWithMap: boolean,\n rotateWithMap: boolean,\n transform: Transform,\n projection: Projection,\n pixelsToTileUnits: Float32Array): Float32Array {\n const m = getLabelPlaneMatrixForRendering(posMatrix, tileID, pitchWithMap, rotateWithMap, transform, projection, pixelsToTileUnits);\n\n // Symbol placement logic is performed in 2D in most scenarios.\n // For this reason project all coordinates to the xy-plane by discarding the z-component\n if (projection.name !== 'globe' || !pitchWithMap) {\n // Pre-multiply by scaling z to 0\n m[2] = m[6] = m[10] = m[14] = 0;\n }\n\n return m;\n}\n\n/*\n * Returns a matrix for converting from the correct label coordinate space to gl coords.\n */\nfunction getGlCoordMatrix(posMatrix: Float32Array,\n tileID: CanonicalTileID,\n pitchWithMap: boolean,\n rotateWithMap: boolean,\n transform: Transform,\n projection: Projection,\n pixelsToTileUnits: Float32Array): Float32Array {\n if (pitchWithMap) {\n if (projection.name === 'globe') {\n const m = getLabelPlaneMatrixForRendering(posMatrix, tileID, pitchWithMap, rotateWithMap, transform, projection, pixelsToTileUnits);\n mat4.invert(m, m);\n mat4.multiply(m, posMatrix, m);\n return m;\n } else {\n const m = mat4.clone(posMatrix);\n const s = mat4.identity([]);\n s[0] = pixelsToTileUnits[0];\n s[1] = pixelsToTileUnits[1];\n s[4] = pixelsToTileUnits[2];\n s[5] = pixelsToTileUnits[3];\n mat4.multiply(m, m, s);\n if (!rotateWithMap) {\n mat4.rotateZ(m, m, -transform.angle);\n }\n return m;\n }\n } else {\n return transform.glCoordMatrix;\n }\n}\n\nfunction project(point: Point, matrix: Mat4, elevation: number = 0): ProjectedSymbol {\n const pos = [point.x, point.y, elevation, 1];\n if (elevation) {\n vec4.transformMat4(pos, pos, matrix);\n } else {\n xyTransformMat4(pos, pos, matrix);\n }\n const w = pos[3];\n return {\n point: [pos[0] / w, pos[1] / w, pos[2] / w],\n signedDistanceFromCamera: w\n };\n}\n\nfunction projectVector(point: [number, number, number], matrix: Mat4): ProjectedSymbol {\n const pos = [point[0], point[1], point[2], 1];\n vec4.transformMat4(pos, pos, matrix);\n const w = pos[3];\n return {\n point: [pos[0] / w, pos[1] / w, pos[2] / w],\n signedDistanceFromCamera: w\n };\n}\n\nfunction projectClamped(point: [number, number, number], matrix: Mat4): Vec4 {\n const pos = [point[0], point[1], point[2], 1];\n vec4.transformMat4(pos, pos, matrix);\n\n // Clamp distance to a positive value so we can avoid screen coordinate\n // being flipped possibly due to perspective projection\n const w = Math.max(pos[3], 0.000001);\n\n return [pos[0] / w, pos[1] / w, pos[2] / w, w];\n}\n\nfunction getPerspectiveRatio(cameraToCenterDistance: number, signedDistanceFromCamera: number): number {\n return Math.min(0.5 + 0.5 * (cameraToCenterDistance / signedDistanceFromCamera), 1.5);\n}\n\nfunction isVisible(anchorPos: [number, number, number, number],\n clippingBuffer: [number, number]) {\n const x = anchorPos[0] / anchorPos[3];\n const y = anchorPos[1] / anchorPos[3];\n const inPaddedViewport = (\n x >= -clippingBuffer[0] &&\n x <= clippingBuffer[0] &&\n y >= -clippingBuffer[1] &&\n y <= clippingBuffer[1]);\n return inPaddedViewport;\n}\n\n/*\n * Update the `dynamicLayoutVertexBuffer` for the buffer with the correct glyph positions for the current map view.\n * This is only run on labels that are aligned with lines. Horizontal labels are handled entirely in the shader.\n */\nfunction updateLineLabels(bucket: SymbolBucket,\n posMatrix: Float32Array,\n painter: Painter,\n isText: boolean,\n labelPlaneMatrix: Float32Array,\n glCoordMatrix: Float32Array,\n pitchWithMap: boolean,\n keepUpright: boolean,\n getElevation: ?((p: Point) => Array<number>),\n tileID: OverscaledTileID) {\n\n const tr = painter.transform;\n const sizeData = isText ? bucket.textSizeData : bucket.iconSizeData;\n const partiallyEvaluatedSize = symbolSize.evaluateSizeForZoom(sizeData, painter.transform.zoom);\n const isGlobe = tr.projection.name === 'globe';\n\n const clippingBuffer = [256 / painter.width * 2 + 1, 256 / painter.height * 2 + 1];\n\n const dynamicLayoutVertexArray = isText ?\n bucket.text.dynamicLayoutVertexArray :\n bucket.icon.dynamicLayoutVertexArray;\n dynamicLayoutVertexArray.clear();\n\n let globeExtVertexArray: ?SymbolGlobeExtArray = null;\n if (isGlobe) {\n globeExtVertexArray = isText ?\n bucket.text.globeExtVertexArray :\n bucket.icon.globeExtVertexArray;\n }\n\n const lineVertexArray = bucket.lineVertexArray;\n const placedSymbols = isText ? bucket.text.placedSymbolArray : bucket.icon.placedSymbolArray;\n\n const aspectRatio = painter.transform.width / painter.transform.height;\n\n let useVertical = false;\n\n for (let s = 0; s < placedSymbols.length; s++) {\n const symbol: any = placedSymbols.get(s);\n\n // Normally, the 'Horizontal|Vertical' writing mode is followed by a 'Vertical' counterpart, this\n // is not true for 'Vertical' only line labels. For this case, we'll have to overwrite the 'useVertical'\n // status before further checks.\n if (symbol.writingMode === WritingMode.vertical && !useVertical) {\n if (s === 0 || placedSymbols.get(s - 1).writingMode !== WritingMode.horizontal) {\n useVertical = true;\n }\n }\n\n // Don't do calculations for vertical glyphs unless the previous symbol was horizontal\n // and we determined that vertical glyphs were necessary.\n // Also don't do calculations for symbols that are collided and fully faded out\n if ((symbol.hidden || symbol.writingMode === WritingMode.vertical) && !useVertical) {\n hideGlyphs(symbol.numGlyphs, dynamicLayoutVertexArray);\n continue;\n }\n // Awkward... but we're counting on the paired \"vertical\" symbol coming immediately after its horizontal counterpart\n useVertical = false;\n\n // Project tile anchor to globe anchor\n const tileAnchorPoint = new Point(symbol.tileAnchorX, symbol.tileAnchorY);\n const elevation = getElevation ? getElevation(tileAnchorPoint) : [0, 0, 0];\n const projectedAnchor = tr.projection.projectTilePoint(tileAnchorPoint.x, tileAnchorPoint.y, tileID.canonical);\n const elevatedAnchor = [projectedAnchor.x + elevation[0], projectedAnchor.y + elevation[1], projectedAnchor.z + elevation[2]];\n const anchorPos = [...elevatedAnchor, 1.0];\n\n vec4.transformMat4(anchorPos, anchorPos, posMatrix);\n\n // Don't bother calculating the correct point for invisible labels.\n if (!isVisible(anchorPos, clippingBuffer)) {\n hideGlyphs(symbol.numGlyphs, dynamicLayoutVertexArray);\n continue;\n }\n const cameraToAnchorDistance = anchorPos[3];\n const perspectiveRatio = getPerspectiveRatio(painter.transform.cameraToCenterDistance, cameraToAnchorDistance);\n\n const fontSize = symbolSize.evaluateSizeForFeature(sizeData, partiallyEvaluatedSize, symbol);\n const pitchScaledFontSize = pitchWithMap ? fontSize / perspectiveRatio : fontSize * perspectiveRatio;\n\n const labelPlaneAnchorPoint = project(new Point(elevatedAnchor[0], elevatedAnchor[1]), labelPlaneMatrix, elevatedAnchor[2]);\n\n // Skip labels behind the camera\n if (labelPlaneAnchorPoint.signedDistanceFromCamera <= 0.0) {\n hideGlyphs(symbol.numGlyphs, dynamicLayoutVertexArray);\n continue;\n }\n\n let projectionCache: {[_: number]: Vec3} = {};\n\n const getElevationForPlacement = pitchWithMap ? null : getElevation; // When pitchWithMap, we're projecting to scaled tile coordinate space: there is no need to get elevation as it doesn't affect projection.\n const placeUnflipped: any = placeGlyphsAlongLine(symbol, pitchScaledFontSize, false /*unflipped*/, keepUpright, posMatrix, labelPlaneMatrix, glCoordMatrix,\n bucket.glyphOffsetArray, lineVertexArray, dynamicLayoutVertexArray, globeExtVertexArray, labelPlaneAnchorPoint.point, tileAnchorPoint, projectionCache, aspectRatio, getElevationForPlacement, tr.projection, tileID, pitchWithMap);\n\n useVertical = placeUnflipped.useVertical;\n\n if (getElevationForPlacement && placeUnflipped.needsFlipping) projectionCache = {}; // Truncated points should be recalculated.\n if (placeUnflipped.notEnoughRoom || useVertical ||\n (placeUnflipped.needsFlipping &&\n placeGlyphsAlongLine(symbol, pitchScaledFontSize, true /*flipped*/, keepUpright, posMatrix, labelPlaneMatrix, glCoordMatrix,\n bucket.glyphOffsetArray, lineVertexArray, dynamicLayoutVertexArray, globeExtVertexArray, labelPlaneAnchorPoint.point, tileAnchorPoint, projectionCache, aspectRatio, getElevationForPlacement, tr.projection, tileID, pitchWithMap).notEnoughRoom)) {\n hideGlyphs(symbol.numGlyphs, dynamicLayoutVertexArray);\n }\n }\n\n if (isText) {\n bucket.text.dynamicLayoutVertexBuffer.updateData(dynamicLayoutVertexArray);\n if (globeExtVertexArray) {\n bucket.text.globeExtVertexBuffer.updateData(globeExtVertexArray);\n }\n } else {\n bucket.icon.dynamicLayoutVertexBuffer.updateData(dynamicLayoutVertexArray);\n if (globeExtVertexArray) {\n bucket.icon.globeExtVertexBuffer.updateData(globeExtVertexArray);\n }\n }\n}\n\nfunction placeFirstAndLastGlyph(\n fontScale: number,\n glyphOffsetArray: GlyphOffsetArray,\n lineOffsetX: number,\n lineOffsetY: number,\n flip: boolean,\n anchorPoint: Vec3,\n tileAnchorPoint: Point,\n symbol: any,\n lineVertexArray: SymbolLineVertexArray,\n labelPlaneMatrix: Float32Array,\n projectionCache: any,\n getElevation: ?((p: Point) => Array<number>),\n returnPathInTileCoords: ?boolean,\n projection: Projection,\n tileID: OverscaledTileID,\n pitchWithMap: boolean): null | {|first: PlacedGlyph, last: PlacedGlyph|} {\n\n const glyphEndIndex = symbol.glyphStartIndex + symbol.numGlyphs;\n const lineStartIndex = symbol.lineStartIndex;\n const lineEndIndex = symbol.lineStartIndex + symbol.lineLength;\n\n const firstGlyphOffset = glyphOffsetArray.getoffsetX(symbol.glyphStartIndex);\n const lastGlyphOffset = glyphOffsetArray.getoffsetX(glyphEndIndex - 1);\n\n const firstPlacedGlyph = placeGlyphAlongLine(fontScale * firstGlyphOffset, lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, symbol.segment,\n lineStartIndex, lineEndIndex, lineVertexArray, labelPlaneMatrix, projectionCache, getElevation, returnPathInTileCoords, true, projection, tileID, pitchWithMap);\n if (!firstPlacedGlyph)\n return null;\n\n const lastPlacedGlyph = placeGlyphAlongLine(fontScale * lastGlyphOffset, lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, symbol.segment,\n lineStartIndex, lineEndIndex, lineVertexArray, labelPlaneMatrix, projectionCache, getElevation, returnPathInTileCoords, true, projection, tileID, pitchWithMap);\n if (!lastPlacedGlyph)\n return null;\n\n return {first: firstPlacedGlyph, last: lastPlacedGlyph};\n}\n\n// Check in the glCoordinate space, the rough estimation of angle between the text line and the Y axis.\n// If the angle if less or equal to 5 degree, then keep the text glyphs unflipped even if it is required.\nfunction isInFlipRetainRange(firstPoint, lastPoint, aspectRatio) {\n const deltaY = lastPoint.y - firstPoint.y;\n const deltaX = (lastPoint.x - firstPoint.x) * aspectRatio;\n if (deltaX === 0.0) {\n return true;\n }\n const absTangent = Math.abs(deltaY / deltaX);\n return (absTangent > maxTangent);\n}\n\nfunction requiresOrientationChange(symbol, firstPoint, lastPoint, aspectRatio) {\n if (symbol.writingMode === WritingMode.horizontal) {\n // On top of choosing whether to flip, choose whether to render this version of the glyphs or the alternate\n // vertical glyphs. We can't just filter out vertical glyphs in the horizontal range because the horizontal\n // and vertical versions can have slightly different projections which could lead to angles where both or\n // neither showed.\n const rise = Math.abs(lastPoint.y - firstPoint.y);\n const run = Math.abs(lastPoint.x - firstPoint.x) * aspectRatio;\n if (rise > run) {\n return {useVertical: true};\n }\n }\n // Check if flipping is required for \"verticalOnly\" case.\n if (symbol.writingMode === WritingMode.vertical) {\n return (firstPoint.y < lastPoint.y) ? {needsFlipping: true} : null;\n }\n\n // symbol's flipState stores the flip decision from the previous frame, and that\n // decision is reused when the symbol is in the retain range.\n if (symbol.flipState !== FlipState.unknown && isInFlipRetainRange(firstPoint, lastPoint, aspectRatio)) {\n return (symbol.flipState === FlipState.flipRequired) ? {needsFlipping: true} : null;\n }\n\n // Check if flipping is required for \"horizontal\" case.\n return (firstPoint.x > lastPoint.x) ? {needsFlipping: true} : null;\n}\n\nfunction placeGlyphsAlongLine(symbol, fontSize, flip, keepUpright, posMatrix, labelPlaneMatrix, glCoordMatrix, glyphOffsetArray, lineVertexArray, dynamicLayoutVertexArray, globeExtVertexArray, anchorPoint, tileAnchorPoint, projectionCache, aspectRatio, getElevation, projection, tileID, pitchWithMap) {\n const fontScale = fontSize / 24;\n const lineOffsetX = symbol.lineOffsetX * fontScale;\n const lineOffsetY = symbol.lineOffsetY * fontScale;\n\n let placedGlyphs;\n if (symbol.numGlyphs > 1) {\n const glyphEndIndex = symbol.glyphStartIndex + symbol.numGlyphs;\n const lineStartIndex = symbol.lineStartIndex;\n const lineEndIndex = symbol.lineStartIndex + symbol.lineLength;\n\n // Place the first and the last glyph in the label first, so we can figure out\n // the overall orientation of the label and determine whether it needs to be flipped in keepUpright mode\n const firstAndLastGlyph = placeFirstAndLastGlyph(fontScale, glyphOffsetArray, lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, symbol, lineVertexArray, labelPlaneMatrix, projectionCache, getElevation, false, projection, tileID, pitchWithMap);\n if (!firstAndLastGlyph) {\n return {notEnoughRoom: true};\n }\n const firstVec = projectVector((firstAndLastGlyph.first.point: any), glCoordMatrix).point;\n const lastVec = projectVector((firstAndLastGlyph.last.point: any), glCoordMatrix).point;\n\n const firstPoint = new Point(firstVec[0], firstVec[1]);\n const lastPoint = new Point(lastVec[0], lastVec[1]);\n\n if (keepUpright && !flip) {\n const orientationChange = requiresOrientationChange(symbol, firstPoint, lastPoint, aspectRatio);\n symbol.flipState = orientationChange && orientationChange.needsFlipping ? FlipState.flipRequired : FlipState.flipNotRequired;\n if (orientationChange) {\n return orientationChange;\n }\n }\n\n placedGlyphs = [firstAndLastGlyph.first];\n for (let glyphIndex = symbol.glyphStartIndex + 1; glyphIndex < glyphEndIndex - 1; glyphIndex++) {\n // Since first and last glyph fit on the line, we're sure that the rest of the glyphs can be placed\n // $FlowFixMe\n placedGlyphs.push(placeGlyphAlongLine(fontScale * glyphOffsetArray.getoffsetX(glyphIndex), lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, symbol.segment,\n lineStartIndex, lineEndIndex, lineVertexArray, labelPlaneMatrix, projectionCache, getElevation, false, false, projection, tileID, pitchWithMap));\n }\n placedGlyphs.push(firstAndLastGlyph.last);\n } else {\n // Only a single glyph to place\n // So, determine whether to flip based on projected angle of the line segment it's on\n if (keepUpright && !flip) {\n const a = project(tileAnchorPoint, posMatrix).point;\n const tileVertexIndex = (symbol.lineStartIndex + symbol.segment + 1);\n // $FlowFixMe\n const tileSegmentEnd = new Point(lineVertexArray.getx(tileVertexIndex), lineVertexArray.gety(tileVertexIndex));\n const projectedVertex = project(tileSegmentEnd, posMatrix);\n // We know the anchor will be in the viewport, but the end of the line segment may be\n // behind the plane of the camera, in which case we can use a point at any arbitrary (closer)\n // point on the segment.\n const b = (projectedVertex.signedDistanceFromCamera > 0) ?\n projectedVertex.point :\n projectTruncatedLineSegment(tileAnchorPoint, tileSegmentEnd, a, 1, posMatrix, undefined, projection, tileID.canonical);\n\n const orientationChange = requiresOrientationChange(symbol, new Point(a[0], a[1]), new Point(b[0], b[1]), aspectRatio);\n symbol.flipState = orientationChange && orientationChange.needsFlipping ? FlipState.flipRequired : FlipState.flipNotRequired;\n if (orientationChange) {\n return orientationChange;\n }\n }\n // $FlowFixMe\n const singleGlyph = placeGlyphAlongLine(fontScale * glyphOffsetArray.getoffsetX(symbol.glyphStartIndex), lineOffsetX, lineOffsetY, flip, anchorPoint, tileAnchorPoint, symbol.segment,\n symbol.lineStartIndex, symbol.lineStartIndex + symbol.lineLength, lineVertexArray, labelPlaneMatrix, projectionCache, getElevation, false, false, projection, tileID, pitchWithMap);\n if (!singleGlyph)\n return {notEnoughRoom: true};\n\n placedGlyphs = [singleGlyph];\n }\n\n if (globeExtVertexArray) {\n for (const glyph: any of placedGlyphs) {\n updateGlobeVertexNormal(globeExtVertexArray, dynamicLayoutVertexArray.length + 0, glyph.up[0], glyph.up[1], glyph.up[2]);\n updateGlobeVertexNormal(globeExtVertexArray, dynamicLayoutVertexArray.length + 1, glyph.up[0], glyph.up[1], glyph.up[2]);\n updateGlobeVertexNormal(globeExtVertexArray, dynamicLayoutVertexArray.length + 2, glyph.up[0], glyph.up[1], glyph.up[2]);\n updateGlobeVertexNormal(globeExtVertexArray, dynamicLayoutVertexArray.length + 3, glyph.up[0], glyph.up[1], glyph.up[2]);\n addDynamicAttributes(dynamicLayoutVertexArray, glyph.point[0], glyph.point[1], glyph.point[2], glyph.angle);\n }\n } else {\n for (const glyph: any of placedGlyphs) {\n addDynamicAttributes(dynamicLayoutVertexArray, glyph.point[0], glyph.point[1], glyph.point[2], glyph.angle);\n }\n }\n return {};\n}\n\nfunction elevatePointAndProject(p: Point, tileID: CanonicalTileID, posMatrix: Float32Array, projection: Projection, getElevation: ?((p: Point) => Array<number>)) {\n const point = projection.projectTilePoint(p.x, p.y, tileID);\n if (!getElevation) {\n return project(point, posMatrix, point.z);\n }\n\n const elevation = getElevation(p);\n return project(new Point(point.x + elevation[0], point.y + elevation[1]), posMatrix, point.z + elevation[2]);\n}\n\nfunction projectTruncatedLineSegment(previousTilePoint: Point, currentTilePoint: Point, previousProjectedPoint: Vec3, minimumLength: number, projectionMatrix: Float32Array, getElevation: ?((p: Point) => Array<number>), projection: Projection, tileID: CanonicalTileID): Vec3 {\n // We are assuming \"previousTilePoint\" won't project to a point within one unit of the camera plane\n // If it did, that would mean our label extended all the way out from within the viewport to a (very distant)\n // point near the plane of the camera. We wouldn't be able to render the label anyway once it crossed the\n // plane of the camera.\n const unitVertex = previousTilePoint.add(previousTilePoint.sub(currentTilePoint)._unit());\n const projectedUnitVertex = elevatePointAndProject(unitVertex, tileID, projectionMatrix, projection, getElevation).point;\n const projectedUnitSegment = vec3.sub([], previousProjectedPoint, projectedUnitVertex);\n\n return vec3.scaleAndAdd([], previousProjectedPoint, projectedUnitSegment, minimumLength / vec3.length(projectedUnitSegment));\n}\n\nfunction placeGlyphAlongLine(\n offsetX: number,\n lineOffsetX: number,\n lineOffsetY: number,\n flip: boolean,\n anchorPoint: Vec3,\n tileAnchorPoint: Point,\n anchorSegment: number,\n lineStartIndex: number,\n lineEndIndex: number,\n lineVertexArray: SymbolLineVertexArray,\n labelPlaneMatrix: Float32Array,\n projectionCache: {[_: number]: Vec3},\n getElevation: ?((p: Point) => Array<number>),\n returnPathInTileCoords: ?boolean,\n endGlyph: ?boolean,\n reprojection: Projection,\n tileID: OverscaledTileID,\n pitchWithMap: boolean): null | PlacedGlyph {\n\n const combinedOffsetX = flip ?\n offsetX - lineOffsetX :\n offsetX + lineOffsetX;\n\n let dir = combinedOffsetX > 0 ? 1 : -1;\n\n let angle = 0;\n if (flip) {\n // The label needs to be flipped to keep text upright.\n // Iterate in the reverse direction.\n dir *= -1;\n angle = Math.PI;\n }\n\n if (dir < 0) angle += Math.PI;\n\n let currentIndex = dir > 0 ?\n lineStartIndex + anchorSegment :\n lineStartIndex + anchorSegment + 1;\n\n let current = anchorPoint;\n let prev = anchorPoint;\n let distanceToPrev = 0;\n let currentSegmentDistance = 0;\n const absOffsetX = Math.abs(combinedOffsetX);\n const pathVertices = [];\n const tilePath = [];\n let currentVertex = tileAnchorPoint;\n\n const previousTilePoint = () => {\n const previousLineVertexIndex = currentIndex - dir;\n return distanceToPrev === 0 ?\n tileAnchorPoint :\n new Point(lineVertexArray.getx(previousLineVertexIndex), lineVertexArray.gety(previousLineVertexIndex));\n };\n\n const getTruncatedLineSegment = () => {\n return projectTruncatedLineSegment(previousTilePoint(), currentVertex, prev, absOffsetX - distanceToPrev + 1, labelPlaneMatrix, getElevation, reprojection, tileID.canonical);\n };\n\n while (distanceToPrev + currentSegmentDistance <= absOffsetX) {\n currentIndex += dir;\n\n // offset does not fit on the projected line\n if (currentIndex < lineStartIndex || currentIndex >= lineEndIndex)\n return null;\n\n prev = current;\n pathVertices.push(current);\n if (returnPathInTileCoords) tilePath.push(currentVertex || previousTilePoint());\n\n current = projectionCache[currentIndex];\n if (current === undefined) {\n currentVertex = new Point(lineVertexArray.getx(currentIndex), lineVertexArray.gety(currentIndex));\n const projection = elevatePointAndProject(currentVertex, tileID.canonical, labelPlaneMatrix, reprojection, getElevation);\n if (projection.signedDistanceFromCamera > 0) {\n current = projectionCache[currentIndex] = projection.point;\n } else {\n // The vertex is behind the plane of the camera, so we can't project it\n // Instead, we'll create a vertex along the line that's far enough to include the glyph\n // Don't cache because the new vertex might not be far enough out for future glyphs on the same segment\n current = getTruncatedLineSegment();\n }\n } else {\n currentVertex = null; // null stale data\n }\n\n distanceToPrev += currentSegmentDistance;\n currentSegmentDistance = vec3.distance(prev, current);\n }\n\n currentVertex = currentVertex || new Point(lineVertexArray.getx(currentIndex), lineVertexArray.gety(currentIndex));\n const prevVertex = previousTilePoint();\n\n if (endGlyph && getElevation) {\n // For terrain, always truncate end points in order to handle terrain curvature.\n // If previously truncated, on signedDistanceFromCamera < 0, don't do it.\n // Cache as end point. The cache is cleared if there is need for flipping in updateLineLabels.\n projectionCache[currentIndex] = current = (projectionCache[currentIndex] === undefined) ? current : getTruncatedLineSegment();\n currentSegmentDistance = vec3.distance(prev, current);\n }\n\n // The point is on the current segment. Interpolate to find it. Compute points on both label plane and tile space\n const segmentInterpolationT = (absOffsetX - distanceToPrev) / currentSegmentDistance;\n const tilePoint = currentVertex.sub(prevVertex).mult(segmentInterpolationT)._add(prevVertex);\n const prevToCurrent = vec3.sub([], current, prev);\n const labelPlanePoint = vec3.scaleAndAdd([], prev, prevToCurrent, segmentInterpolationT);\n\n let axisZ = [0, 0, 1];\n let diffX = prevToCurrent[0];\n let diffY = prevToCurrent[1];\n\n if (pitchWithMap) {\n axisZ = reprojection.upVector(tileID.canonical, tilePoint.x, tilePoint.y);\n\n if (axisZ[0] !== 0 || axisZ[1] !== 0 || axisZ[2] !== 1) {\n // Compute coordinate frame that is aligned to the tangent of the surface\n const axisX = [1, 0, 0];\n const axisY = [0, 1, 0];\n\n axisX[0] = axisZ[2];\n axisX[1] = 0;\n axisX[2] = -axisZ[0];\n vec3.cross(axisY, axisZ, axisX);\n vec3.normalize(axisX, axisX);\n vec3.normalize(axisY, axisY);\n\n diffX = vec3.dot(prevToCurrent, axisX);\n diffY = vec3.dot(prevToCurrent, axisY);\n }\n }\n\n // offset the point from the line to text-offset and icon-offset\n if (lineOffsetY) {\n // Find a coordinate frame for the vertical offset\n const offsetDir = vec3.cross([], axisZ, prevToCurrent);\n vec3.normalize(offsetDir, offsetDir);\n vec3.scaleAndAdd(labelPlanePoint, labelPlanePoint, offsetDir, lineOffsetY * dir);\n }\n\n const segmentAngle = angle + Math.atan2(diffY, diffX);\n\n pathVertices.push(labelPlanePoint);\n if (returnPathInTileCoords) {\n tilePath.push(tilePoint);\n }\n\n return {\n point: labelPlanePoint,\n angle: segmentAngle,\n path: pathVertices,\n tilePath,\n up: axisZ\n };\n}\n\nconst hiddenGlyphAttributes = new Float32Array([-Infinity, -Infinity, 0, -Infinity, -Infinity, 0, -Infinity, -Infinity, 0, -Infinity, -Infinity, 0, -Infinity, -Infinity, 0]);\n\n// Hide them by moving them offscreen. We still need to add them to the buffer\n// because the dynamic buffer is paired with a static buffer that doesn't get updated.\nfunction hideGlyphs(num: number, dynamicLayoutVertexArray: SymbolDynamicLayoutArray) {\n for (let i = 0; i < num; i++) {\n const offset = dynamicLayoutVertexArray.length;\n dynamicLayoutVertexArray.resize(offset + 4);\n // Since all hidden glyphs have the same attributes, we can build up the array faster with a single call to Float32Array.set\n // for each set of four vertices, instead of calling addDynamicAttributes for each vertex.\n dynamicLayoutVertexArray.float32.set(hiddenGlyphAttributes, offset * 4);\n }\n}\n\n// For line label layout, we're not using z output and our w input is always 1\n// This custom matrix transformation ignores those components to make projection faster\nfunction xyTransformMat4(out: Vec4, a: Vec4, m: Mat4): Vec4 {\n const x = a[0], y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n out[3] = m[3] * x + m[7] * y + m[15];\n return out;\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\nimport clipLine from './clip_line.js';\nimport PathInterpolator from './path_interpolator.js';\n\nimport * as intersectionTests from '../util/intersection_tests.js';\nimport Grid from './grid_index.js';\nimport {mat4, vec4} from 'gl-matrix';\nimport ONE_EM from '../symbol/one_em.js';\n\nimport {FOG_SYMBOL_CLIPPING_THRESHOLD, getFogOpacityAtTileCoord} from '../style/fog_helpers.js';\nimport assert from 'assert';\nimport {OverscaledTileID} from '../source/tile_id.js';\nimport * as projection from '../symbol/projection.js';\nimport type Transform from '../geo/transform.js';\nimport type Projection from '../geo/projection/projection.js';\nimport type SymbolBucket, {SingleCollisionBox} from '../data/bucket/symbol_bucket.js';\nimport type {\n GlyphOffsetArray,\n SymbolLineVertexArray\n} from '../data/array_types.js';\nimport type {FogState} from '../style/fog_helpers.js';\nimport type {Vec3, Mat4} from 'gl-matrix';\n\ntype PlacedCollisionBox = {|\n box: Array<number>,\n offscreen: boolean,\n occluded: boolean\n|};\ntype PlacedCollisionCircles = {|\n circles: Array<number>,\n offscreen: boolean,\n collisionDetected: boolean,\n occluded: boolean\n|};\ntype ScreenAnchorPoint = {|\n occluded: boolean,\n perspectiveRatio: number,\n point: Point,\n signedDistanceFromCamera: number,\n|};\n\n// When a symbol crosses the edge that causes it to be included in\n// collision detection, it will cause changes in the symbols around\n// it. This constant specifies how many pixels to pad the edge of\n// the viewport for collision detection so that the bulk of the changes\n// occur offscreen. Making this constant greater increases label\n// stability, but it's expensive.\nconst viewportPadding = 100;\n\n/**\n * A collision index used to prevent symbols from overlapping. It keep tracks of\n * where previous symbols have been placed and is used to check if a new\n * symbol overlaps with any previously added symbols.\n *\n * There are two steps to insertion: first placeCollisionBox/Circles checks if\n * there's room for a symbol, then insertCollisionBox/Circles actually puts the\n * symbol in the index. The two step process allows paired symbols to be inserted\n * together even if they overlap.\n *\n * @private\n */\nclass CollisionIndex {\n grid: Grid;\n ignoredGrid: Grid;\n transform: Transform;\n pitchfactor: number;\n screenRightBoundary: number;\n screenBottomBoundary: number;\n gridRightBoundary: number;\n gridBottomBoundary: number;\n fogState: ?FogState;\n\n constructor(\n transform: Transform,\n fogState: ?FogState,\n grid: Grid = new Grid(transform.width + 2 * viewportPadding, transform.height + 2 * viewportPadding, 25),\n ignoredGrid: Grid = new Grid(transform.width + 2 * viewportPadding, transform.height + 2 * viewportPadding, 25)\n ) {\n this.transform = transform;\n\n this.grid = grid;\n this.ignoredGrid = ignoredGrid;\n this.pitchfactor = Math.cos(transform._pitch) * transform.cameraToCenterDistance;\n\n this.screenRightBoundary = transform.width + viewportPadding;\n this.screenBottomBoundary = transform.height + viewportPadding;\n this.gridRightBoundary = transform.width + 2 * viewportPadding;\n this.gridBottomBoundary = transform.height + 2 * viewportPadding;\n this.fogState = fogState;\n }\n\n placeCollisionBox(bucket: SymbolBucket, scale: number, collisionBox: SingleCollisionBox, shift: Point, allowOverlap: boolean, textPixelRatio: number, posMatrix: Mat4, collisionGroupPredicate?: any): PlacedCollisionBox {\n assert(!this.transform.elevation || collisionBox.elevation !== undefined);\n\n let anchorX = collisionBox.projectedAnchorX;\n let anchorY = collisionBox.projectedAnchorY;\n let anchorZ = collisionBox.projectedAnchorZ;\n\n // Apply elevation vector to the anchor point\n const elevation = collisionBox.elevation;\n const tileID = collisionBox.tileID;\n if (elevation && tileID) {\n const up = bucket.getProjection().upVector(tileID.canonical, collisionBox.tileAnchorX, collisionBox.tileAnchorY);\n const upScale = bucket.getProjection().upVectorScale(tileID.canonical, this.transform.center.lat, this.transform.worldSize).metersToTile;\n\n anchorX += up[0] * elevation * upScale;\n anchorY += up[1] * elevation * upScale;\n anchorZ += up[2] * elevation * upScale;\n }\n\n const checkOcclusion = bucket.projection.name === 'globe' || !!elevation || this.transform.pitch > 0;\n const projectedPoint = this.projectAndGetPerspectiveRatio(posMatrix, [anchorX, anchorY, anchorZ], collisionBox.tileID, checkOcclusion, bucket.getProjection());\n\n const tileToViewport = textPixelRatio * projectedPoint.perspectiveRatio;\n const tlX = (collisionBox.x1 * scale + shift.x - collisionBox.padding) * tileToViewport + projectedPoint.point.x;\n const tlY = (collisionBox.y1 * scale + shift.y - collisionBox.padding) * tileToViewport + projectedPoint.point.y;\n const brX = (collisionBox.x2 * scale + shift.x + collisionBox.padding) * tileToViewport + projectedPoint.point.x;\n const brY = (collisionBox.y2 * scale + shift.y + collisionBox.padding) * tileToViewport + projectedPoint.point.y;\n // Clip at 10 times the distance of the map center or, said otherwise, when the label\n // would be drawn at 10% the size of the features around it without scaling. Refer:\n // https://github.com/mapbox/mapbox-gl-native/wiki/Text-Rendering#perspective-scaling\n // 0.55 === projection.getPerspectiveRatio(camera_to_center, camera_to_center * 10)\n const minPerspectiveRatio = 0.55;\n const isClipped = projectedPoint.perspectiveRatio <= minPerspectiveRatio || projectedPoint.occluded;\n\n if (!this.isInsideGrid(tlX, tlY, brX, brY) ||\n (!allowOverlap && this.grid.hitTest(tlX, tlY, brX, brY, collisionGroupPredicate)) ||\n isClipped) {\n return {\n box: [],\n offscreen: false,\n occluded: projectedPoint.occluded\n };\n }\n\n return {\n box: [tlX, tlY, brX, brY],\n offscreen: this.isOffscreen(tlX, tlY, brX, brY),\n occluded: false\n };\n }\n\n placeCollisionCircles(bucket: SymbolBucket,\n allowOverlap: boolean,\n symbol: any,\n lineVertexArray: SymbolLineVertexArray,\n glyphOffsetArray: GlyphOffsetArray,\n fontSize: number,\n posMatrix: Float32Array,\n labelPlaneMatrix: Float32Array,\n labelToScreenMatrix?: Mat4,\n showCollisionCircles: boolean,\n pitchWithMap: boolean,\n collisionGroupPredicate?: any,\n circlePixelDiameter: number,\n textPixelPadding: number,\n tileID: OverscaledTileID): PlacedCollisionCircles {\n const placedCollisionCircles = [];\n const elevation = this.transform.elevation;\n const getElevation = elevation ? elevation.getAtTileOffsetFunc(tileID, this.transform.center.lat, this.transform.worldSize, bucket.getProjection()) : (_ => [0, 0, 0]);\n const tileUnitAnchorPoint = new Point(symbol.tileAnchorX, symbol.tileAnchorY);\n const projectedAnchor = bucket.getProjection().projectTilePoint(symbol.tileAnchorX, symbol.tileAnchorY, tileID.canonical);\n const anchorElevation = getElevation(tileUnitAnchorPoint);\n const elevatedAnchor = [projectedAnchor.x + anchorElevation[0], projectedAnchor.y + anchorElevation[1], projectedAnchor.z + anchorElevation[2]];\n const isGlobe = bucket.projection.name === 'globe';\n const checkOcclusion = isGlobe || !!elevation || this.transform.pitch > 0;\n const screenAnchorPoint = this.projectAndGetPerspectiveRatio(posMatrix, [elevatedAnchor[0], elevatedAnchor[1], elevatedAnchor[2]], tileID, checkOcclusion, bucket.getProjection());\n const {perspectiveRatio} = screenAnchorPoint;\n const labelPlaneFontSize = pitchWithMap ? fontSize / perspectiveRatio : fontSize * perspectiveRatio;\n const labelPlaneFontScale = labelPlaneFontSize / ONE_EM;\n const labelPlaneAnchorPoint = projection.project(new Point(elevatedAnchor[0], elevatedAnchor[1]), labelPlaneMatrix, elevatedAnchor[2]).point;\n\n const projectionCache = {};\n const lineOffsetX = symbol.lineOffsetX * labelPlaneFontScale;\n const lineOffsetY = symbol.lineOffsetY * labelPlaneFontScale;\n\n const firstAndLastGlyph = screenAnchorPoint.signedDistanceFromCamera > 0 ? projection.placeFirstAndLastGlyph(\n labelPlaneFontScale,\n glyphOffsetArray,\n lineOffsetX,\n lineOffsetY,\n /*flip*/ false,\n labelPlaneAnchorPoint,\n tileUnitAnchorPoint,\n symbol,\n lineVertexArray,\n labelPlaneMatrix,\n projectionCache,\n elevation && !pitchWithMap ? getElevation : null, // pitchWithMap: no need to sample elevation as it has no effect when projecting using scale/rotate to tile space labelPlaneMatrix.\n pitchWithMap && !!elevation,\n bucket.getProjection(),\n tileID,\n pitchWithMap\n ) : null;\n\n let collisionDetected = false;\n let inGrid = false;\n let entirelyOffscreen = true;\n\n if (firstAndLastGlyph && !screenAnchorPoint.occluded) {\n const radius = circlePixelDiameter * 0.5 * perspectiveRatio + textPixelPadding;\n const screenPlaneMin = new Point(-viewportPadding, -viewportPadding);\n const screenPlaneMax = new Point(this.screenRightBoundary, this.screenBottomBoundary);\n const interpolator = new PathInterpolator();\n\n // Construct a projected path from projected line vertices. Anchor points are ignored and removed\n const first = firstAndLastGlyph.first;\n const last = firstAndLastGlyph.last;\n\n let projectedPath: Vec3[] = [];\n for (let i = first.path.length - 1; i >= 1; i--) {\n projectedPath.push(first.path[i]);\n }\n for (let i = 1; i < last.path.length; i++) {\n projectedPath.push(last.path[i]);\n }\n assert(projectedPath.length >= 2);\n\n // Tolerate a slightly longer distance than one diameter between two adjacent circles\n const circleDist = radius * 2.5;\n\n // The path might need to be converted into screen space if a pitched map is used as the label space\n if (labelToScreenMatrix) {\n assert(pitchWithMap);\n const screenSpacePath = (elevation && !isGlobe) ?\n projectedPath.map((p, index) => {\n const elevation = getElevation(index < first.path.length - 1 ? first.tilePath[first.path.length - 1 - index] : last.tilePath[index - first.path.length + 2]);\n p[2] = elevation[2];\n return projection.projectVector((p: any), labelToScreenMatrix);\n }) :\n projectedPath.map(p => projection.projectVector((p: any), labelToScreenMatrix));\n\n // Do not try to place collision circles if even of the points is behind the camera.\n // This is a plausible scenario with big camera pitch angles\n if (screenSpacePath.some(point => point.signedDistanceFromCamera <= 0)) {\n projectedPath = [];\n } else {\n projectedPath = screenSpacePath.map(p => p.point);\n }\n }\n\n let segments = [];\n\n if (projectedPath.length > 0) {\n const screenSpacePath = projectedPath.map(p => new Point(p[0], p[1]));\n\n // Quickly check if the path is fully inside or outside of the padded collision region.\n // For overlapping paths we'll only create collision circles for the visible segments\n let minx = Infinity;\n let maxx = -Infinity;\n let miny = Infinity;\n let maxy = -Infinity;\n\n for (let i = 0; i < screenSpacePath.length; i++) {\n minx = Math.min(minx, screenSpacePath[i].x);\n miny = Math.min(miny, screenSpacePath[i].y);\n maxx = Math.max(maxx, screenSpacePath[i].x);\n maxy = Math.max(maxy, screenSpacePath[i].y);\n }\n\n if (minx >= screenPlaneMin.x && maxx <= screenPlaneMax.x &&\n miny >= screenPlaneMin.y && maxy <= screenPlaneMax.y) {\n // Quad fully visible\n segments = [screenSpacePath];\n } else if (maxx < screenPlaneMin.x || minx > screenPlaneMax.x ||\n maxy < screenPlaneMin.y || miny > screenPlaneMax.y) {\n // Not visible\n segments = [];\n } else {\n segments = clipLine([screenSpacePath], screenPlaneMin.x, screenPlaneMin.y, screenPlaneMax.x, screenPlaneMax.y);\n }\n }\n\n for (const seg of segments) {\n // interpolate positions for collision circles. Add a small padding to both ends of the segment\n assert(seg.length > 0);\n interpolator.reset(seg, radius * 0.25);\n\n let numCircles = 0;\n\n if (interpolator.length <= 0.5 * radius) {\n numCircles = 1;\n } else {\n numCircles = Math.ceil(interpolator.paddedLength / circleDist) + 1;\n }\n\n for (let i = 0; i < numCircles; i++) {\n const t = i / Math.max(numCircles - 1, 1);\n const circlePosition = interpolator.lerp(t);\n\n // add viewport padding to the position and perform initial collision check\n const centerX = circlePosition.x + viewportPadding;\n const centerY = circlePosition.y + viewportPadding;\n\n placedCollisionCircles.push(centerX, centerY, radius, 0);\n\n const x1 = centerX - radius;\n const y1 = centerY - radius;\n const x2 = centerX + radius;\n const y2 = centerY + radius;\n\n entirelyOffscreen = entirelyOffscreen && this.isOffscreen(x1, y1, x2, y2);\n inGrid = inGrid || this.isInsideGrid(x1, y1, x2, y2);\n\n if (!allowOverlap) {\n if (this.grid.hitTestCircle(centerX, centerY, radius, collisionGroupPredicate)) {\n // Don't early exit if we're showing the debug circles because we still want to calculate\n // which circles are in use\n collisionDetected = true;\n if (!showCollisionCircles) {\n return {\n circles: [],\n offscreen: false,\n collisionDetected,\n occluded: false\n };\n }\n }\n }\n }\n }\n }\n\n return {\n circles: ((!showCollisionCircles && collisionDetected) || !inGrid) ? [] : placedCollisionCircles,\n offscreen: entirelyOffscreen,\n collisionDetected,\n occluded: screenAnchorPoint.occluded\n };\n }\n\n /**\n * Because the geometries in the CollisionIndex are an approximation of the shape of\n * symbols on the map, we use the CollisionIndex to look up the symbol part of\n * `queryRenderedFeatures`.\n *\n * @private\n */\n queryRenderedSymbols(viewportQueryGeometry: Array<Point>): {[id: number]: Array<number>} {\n if (viewportQueryGeometry.length === 0 || (this.grid.keysLength() === 0 && this.ignoredGrid.keysLength() === 0)) {\n return {};\n }\n\n const query = [];\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const point of viewportQueryGeometry) {\n const gridPoint = new Point(point.x + viewportPadding, point.y + viewportPadding);\n minX = Math.min(minX, gridPoint.x);\n minY = Math.min(minY, gridPoint.y);\n maxX = Math.max(maxX, gridPoint.x);\n maxY = Math.max(maxY, gridPoint.y);\n query.push(gridPoint);\n }\n\n const features = this.grid.query(minX, minY, maxX, maxY)\n .concat(this.ignoredGrid.query(minX, minY, maxX, maxY));\n\n const seenFeatures = {};\n const result = {};\n\n for (const feature of features) {\n const featureKey = feature.key;\n // Skip already seen features.\n if (seenFeatures[featureKey.bucketInstanceId] === undefined) {\n seenFeatures[featureKey.bucketInstanceId] = {};\n }\n if (seenFeatures[featureKey.bucketInstanceId][featureKey.featureIndex]) {\n continue;\n }\n\n // Check if query intersects with the feature box\n // \"Collision Circles\" for line labels are treated as boxes here\n // Since there's no actual collision taking place, the circle vs. square\n // distinction doesn't matter as much, and box geometry is easier\n // to work with.\n const bbox = [\n new Point(feature.x1, feature.y1),\n new Point(feature.x2, feature.y1),\n new Point(feature.x2, feature.y2),\n new Point(feature.x1, feature.y2)\n ];\n if (!intersectionTests.polygonIntersectsPolygon(query, bbox)) {\n continue;\n }\n\n seenFeatures[featureKey.bucketInstanceId][featureKey.featureIndex] = true;\n if (result[featureKey.bucketInstanceId] === undefined) {\n result[featureKey.bucketInstanceId] = [];\n }\n result[featureKey.bucketInstanceId].push(featureKey.featureIndex);\n }\n\n return result;\n }\n\n insertCollisionBox(collisionBox: Array<number>, ignorePlacement: boolean, bucketInstanceId: number, featureIndex: number, collisionGroupID: number) {\n const grid = ignorePlacement ? this.ignoredGrid : this.grid;\n\n const key = {bucketInstanceId, featureIndex, collisionGroupID};\n grid.insert(key, collisionBox[0], collisionBox[1], collisionBox[2], collisionBox[3]);\n }\n\n insertCollisionCircles(collisionCircles: Array<number>, ignorePlacement: boolean, bucketInstanceId: number, featureIndex: number, collisionGroupID: number) {\n const grid = ignorePlacement ? this.ignoredGrid : this.grid;\n\n const key = {bucketInstanceId, featureIndex, collisionGroupID};\n for (let k = 0; k < collisionCircles.length; k += 4) {\n grid.insertCircle(key, collisionCircles[k], collisionCircles[k + 1], collisionCircles[k + 2]);\n }\n }\n\n projectAndGetPerspectiveRatio(posMatrix: Mat4, point: Vec3, tileID: ?OverscaledTileID, checkOcclusion: boolean, bucketProjection: Projection): ScreenAnchorPoint {\n const p = [point[0], point[1], point[2], 1];\n let behindFog = false;\n if (point[2] || this.transform.pitch > 0) {\n vec4.transformMat4(p, p, posMatrix);\n // Do not perform symbol occlusion on globe due to fog fixed range\n const isGlobe = bucketProjection.name === 'globe';\n if (this.fogState && tileID && !isGlobe) {\n const fogOpacity = getFogOpacityAtTileCoord(this.fogState, point[0], point[1], point[2], tileID.toUnwrapped(), this.transform);\n behindFog = fogOpacity > FOG_SYMBOL_CLIPPING_THRESHOLD;\n }\n } else {\n projection.xyTransformMat4(p, p, posMatrix);\n }\n const a = new Point(\n (((p[0] / p[3] + 1) / 2) * this.transform.width) + viewportPadding,\n (((-p[1] / p[3] + 1) / 2) * this.transform.height) + viewportPadding\n );\n\n return {\n point: a,\n // See perspective ratio comment in symbol_sdf.vertex\n // We're doing collision detection in viewport space so we need\n // to scale down boxes in the distance\n perspectiveRatio: Math.min(0.5 + 0.5 * (this.transform.getCameraToCenterDistance(bucketProjection) / p[3]), 1.5),\n signedDistanceFromCamera: p[3],\n occluded: (checkOcclusion && p[2] > p[3]) || behindFog // Occluded by the far plane\n };\n }\n\n isOffscreen(x1: number, y1: number, x2: number, y2: number): boolean {\n return x2 < viewportPadding || x1 >= this.screenRightBoundary || y2 < viewportPadding || y1 > this.screenBottomBoundary;\n }\n\n isInsideGrid(x1: number, y1: number, x2: number, y2: number): boolean {\n return x2 >= 0 && x1 < this.gridRightBoundary && y2 >= 0 && y1 < this.gridBottomBoundary;\n }\n\n /*\n * Returns a matrix for transforming collision shapes to viewport coordinate space.\n * Use this function to render e.g. collision circles on the screen.\n * example transformation: clipPos = glCoordMatrix * viewportMatrix * circle_pos\n */\n getViewportMatrix(): Mat4 {\n const m = mat4.identity([]);\n mat4.translate(m, m, [-viewportPadding, -viewportPadding, 0.0]);\n return m;\n }\n}\n\nexport default CollisionIndex;\n","// @flow\nimport type {OverscaledTileID} from '../../source/tile_id.js';\nimport type SymbolBucket from '../../data/bucket/symbol_bucket.js';\nimport type Transform from '../../geo/transform.js';\nimport type Projection from './projection.js';\nimport {mat4} from 'gl-matrix';\nimport assert from 'assert';\n\nfunction reconstructTileMatrix(transform: Transform, projection: Projection, coord: OverscaledTileID) {\n // Bucket being rendered is built for different map projection\n // than is currently being used. Reconstruct correct matrices.\n // This code path may happen during a Globe - Mercator transition\n const tileMatrix = projection.createTileMatrix(transform, transform.worldSize, coord.toUnwrapped());\n return mat4.multiply(new Float32Array(16), transform.projMatrix, tileMatrix);\n}\n\nexport function getCollisionDebugTileProjectionMatrix(coord: OverscaledTileID, bucket: SymbolBucket, transform: Transform): Float32Array {\n if (bucket.projection.name === transform.projection.name) {\n assert(coord.projMatrix);\n return coord.projMatrix;\n }\n const tr = transform.clone();\n tr.setProjection(bucket.projection);\n return reconstructTileMatrix(tr, bucket.getProjection(), coord);\n}\n\nexport function getSymbolTileProjectionMatrix(coord: OverscaledTileID, bucketProjection: Projection, transform: Transform): Float32Array {\n if (bucketProjection.name === transform.projection.name) {\n assert(coord.projMatrix);\n return coord.projMatrix;\n }\n return reconstructTileMatrix(transform, bucketProjection, coord);\n}\n\nexport function getSymbolPlacementTileProjectionMatrix(coord: OverscaledTileID, bucketProjection: Projection, transform: Transform, runtimeProjection: string): Float32Array {\n if (bucketProjection.name === runtimeProjection) {\n return transform.calculateProjMatrix(coord.toUnwrapped());\n }\n assert(transform.projection.name === bucketProjection.name);\n return reconstructTileMatrix(transform, bucketProjection, coord);\n}\n","// @flow\n\nimport CollisionIndex from './collision_index.js';\nimport EXTENT from '../data/extent.js';\nimport ONE_EM from './one_em.js';\nimport * as symbolSize from './symbol_size.js';\nimport * as projection from './projection.js';\nimport {getAnchorJustification, evaluateVariableOffset} from './symbol_layout.js';\nimport {getAnchorAlignment, WritingMode} from './shaping.js';\nimport {mat4} from 'gl-matrix';\nimport assert from 'assert';\nimport Point from '@mapbox/point-geometry';\nimport type Transform from '../geo/transform.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type Tile from '../source/tile.js';\nimport type SymbolBucket, {CollisionArrays, SingleCollisionBox} from '../data/bucket/symbol_bucket.js';\nimport type {CollisionBoxArray, CollisionVertexArray, SymbolInstance} from '../data/array_types.js';\nimport type FeatureIndex from '../data/feature_index.js';\nimport {getSymbolPlacementTileProjectionMatrix} from '../geo/projection/projection_util.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport type {TextAnchor} from './symbol_layout.js';\nimport type {FogState} from '../style/fog_helpers.js';\nimport type {Mat4} from 'gl-matrix';\n\nclass OpacityState {\n opacity: number;\n placed: boolean;\n constructor(prevState: ?OpacityState, increment: number, placed: boolean, skipFade: ?boolean) {\n if (prevState) {\n this.opacity = Math.max(0, Math.min(1, prevState.opacity + (prevState.placed ? increment : -increment)));\n } else {\n this.opacity = (skipFade && placed) ? 1 : 0;\n }\n this.placed = placed;\n }\n isHidden(): boolean {\n return this.opacity === 0 && !this.placed;\n }\n}\n\nclass JointOpacityState {\n text: OpacityState;\n icon: OpacityState;\n clipped: boolean;\n constructor(prevState: ?JointOpacityState, increment: number, placedText: boolean, placedIcon: boolean, skipFade: ?boolean, clipped: boolean = false) {\n this.text = new OpacityState(prevState ? prevState.text : null, increment, placedText, skipFade);\n this.icon = new OpacityState(prevState ? prevState.icon : null, increment, placedIcon, skipFade);\n\n this.clipped = clipped;\n }\n isHidden(): boolean {\n return this.text.isHidden() && this.icon.isHidden();\n }\n}\n\nclass JointPlacement {\n text: boolean;\n icon: boolean;\n // skipFade = outside viewport, but within CollisionIndex::viewportPadding px of the edge\n // Because these symbols aren't onscreen yet, we can skip the \"fade in\" animation,\n // and if a subsequent viewport change brings them into view, they'll be fully\n // visible right away.\n skipFade: boolean;\n\n clipped: boolean\n constructor(text: boolean, icon: boolean, skipFade: boolean, clipped: boolean = false) {\n this.text = text;\n this.icon = icon;\n this.skipFade = skipFade;\n this.clipped = clipped;\n }\n}\n\nclass CollisionCircleArray {\n // Stores collision circles and placement matrices of a bucket for debug rendering.\n invProjMatrix: Mat4;\n viewportMatrix: Mat4;\n circles: Array<number>;\n\n constructor() {\n this.invProjMatrix = mat4.create();\n this.viewportMatrix = mat4.create();\n this.circles = [];\n }\n}\n\nexport class RetainedQueryData {\n bucketInstanceId: number;\n featureIndex: FeatureIndex;\n sourceLayerIndex: number;\n bucketIndex: number;\n tileID: OverscaledTileID;\n featureSortOrder: ?Array<number>\n constructor(bucketInstanceId: number,\n featureIndex: FeatureIndex,\n sourceLayerIndex: number,\n bucketIndex: number,\n tileID: OverscaledTileID) {\n this.bucketInstanceId = bucketInstanceId;\n this.featureIndex = featureIndex;\n this.sourceLayerIndex = sourceLayerIndex;\n this.bucketIndex = bucketIndex;\n this.tileID = tileID;\n }\n}\n\ntype CollisionGroup = {|ID: number, predicate?: any|};\n\nclass CollisionGroups {\n collisionGroups: {[groupName: string]: CollisionGroup};\n maxGroupID: number;\n crossSourceCollisions: boolean;\n\n constructor(crossSourceCollisions: boolean) {\n this.crossSourceCollisions = crossSourceCollisions;\n this.maxGroupID = 0;\n this.collisionGroups = {};\n }\n\n get(sourceID: string): CollisionGroup {\n // The predicate/groupID mechanism allows for arbitrary grouping,\n // but the current interface defines one source == one group when\n // crossSourceCollisions == true.\n if (!this.crossSourceCollisions) {\n if (!this.collisionGroups[sourceID]) {\n const nextGroupID = ++this.maxGroupID;\n this.collisionGroups[sourceID] = {\n ID: nextGroupID,\n predicate: (key) => {\n return key.collisionGroupID === nextGroupID;\n }\n };\n }\n return this.collisionGroups[sourceID];\n } else {\n return {ID: 0, predicate: null};\n }\n }\n}\n\nfunction calculateVariableLayoutShift(anchor: TextAnchor, width: number, height: number, textOffset: [number, number], textScale: number): Point {\n const {horizontalAlign, verticalAlign} = getAnchorAlignment(anchor);\n const shiftX = -(horizontalAlign - 0.5) * width;\n const shiftY = -(verticalAlign - 0.5) * height;\n const offset = evaluateVariableOffset(anchor, textOffset);\n return new Point(\n shiftX + offset[0] * textScale,\n shiftY + offset[1] * textScale\n );\n}\n\nfunction offsetShift(shiftX: number, shiftY: number, rotateWithMap: boolean, pitchWithMap: boolean, angle: number): Point {\n const shift = new Point(shiftX, shiftY);\n if (rotateWithMap) {\n shift._rotate(pitchWithMap ? angle : -angle);\n }\n return shift;\n}\n\nexport type VariableOffset = {\n textOffset: [number, number],\n width: number,\n height: number,\n anchor: TextAnchor,\n textScale: number,\n prevAnchor?: TextAnchor\n};\n\ntype TileLayerParameters = {\n bucket: SymbolBucket,\n layout: any,\n posMatrix: Mat4,\n textLabelPlaneMatrix: Mat4,\n labelToScreenMatrix: ?Mat4,\n scale: number,\n textPixelRatio: number,\n holdingForFade: boolean,\n collisionBoxArray: ?CollisionBoxArray,\n partiallyEvaluatedTextSize: any,\n collisionGroup: any\n};\n\nexport type BucketPart = {\n sortKey?: number | void,\n symbolInstanceStart: number,\n symbolInstanceEnd: number,\n parameters: TileLayerParameters\n};\n\nexport type CrossTileID = string | number;\n\nexport class Placement {\n projection: string;\n transform: Transform;\n collisionIndex: CollisionIndex;\n placements: { [_: CrossTileID]: JointPlacement };\n opacities: { [_: CrossTileID]: JointOpacityState };\n variableOffsets: {[_: CrossTileID]: VariableOffset };\n placedOrientations: {[_: CrossTileID]: number };\n commitTime: number;\n prevZoomAdjustment: number;\n lastPlacementChangeTime: number;\n stale: boolean;\n fadeDuration: number;\n retainedQueryData: {[_: number]: RetainedQueryData};\n collisionGroups: CollisionGroups;\n prevPlacement: ?Placement;\n zoomAtLastRecencyCheck: number;\n collisionCircleArrays: {[any]: CollisionCircleArray};\n\n constructor(transform: Transform, fadeDuration: number, crossSourceCollisions: boolean, prevPlacement?: Placement, fogState: ?FogState) {\n this.transform = transform.clone();\n this.projection = transform.projection.name;\n this.collisionIndex = new CollisionIndex(this.transform, fogState);\n this.placements = {};\n this.opacities = {};\n this.variableOffsets = {};\n this.stale = false;\n this.commitTime = 0;\n this.fadeDuration = fadeDuration;\n this.retainedQueryData = {};\n this.collisionGroups = new CollisionGroups(crossSourceCollisions);\n this.collisionCircleArrays = {};\n\n this.prevPlacement = prevPlacement;\n if (prevPlacement) {\n prevPlacement.prevPlacement = undefined; // Only hold on to one placement back\n }\n\n this.placedOrientations = {};\n }\n\n getBucketParts(results: Array<BucketPart>, styleLayer: StyleLayer, tile: Tile, sortAcrossTiles: boolean) {\n const symbolBucket = ((tile.getBucket(styleLayer): any): SymbolBucket);\n const bucketFeatureIndex = tile.latestFeatureIndex;\n\n if (!symbolBucket || !bucketFeatureIndex || styleLayer.id !== symbolBucket.layerIds[0])\n return;\n\n const layout = symbolBucket.layers[0].layout;\n\n const collisionBoxArray = tile.collisionBoxArray;\n const scale = Math.pow(2, this.transform.zoom - tile.tileID.overscaledZ);\n const textPixelRatio = tile.tileSize / EXTENT;\n const unwrappedTileID = tile.tileID.toUnwrapped();\n\n this.transform.setProjection(symbolBucket.projection);\n\n const posMatrix = getSymbolPlacementTileProjectionMatrix(tile.tileID, symbolBucket.getProjection(), this.transform, this.projection);\n\n const pitchWithMap = layout.get('text-pitch-alignment') === 'map';\n const rotateWithMap = layout.get('text-rotation-alignment') === 'map';\n\n styleLayer.compileFilter();\n\n const dynamicFilter = styleLayer.dynamicFilter();\n const dynamicFilterNeedsFeature = styleLayer.dynamicFilterNeedsFeature();\n const pixelsToTiles = this.transform.calculatePixelsToTileUnitsMatrix(tile);\n\n const textLabelPlaneMatrix = projection.getLabelPlaneMatrixForPlacement(posMatrix,\n tile.tileID.canonical,\n pitchWithMap,\n rotateWithMap,\n this.transform,\n symbolBucket.getProjection(),\n pixelsToTiles);\n\n let labelToScreenMatrix = null;\n\n if (pitchWithMap) {\n const glMatrix = projection.getGlCoordMatrix(\n posMatrix,\n tile.tileID.canonical,\n pitchWithMap,\n rotateWithMap,\n this.transform,\n symbolBucket.getProjection(),\n pixelsToTiles);\n\n labelToScreenMatrix = mat4.multiply([], this.transform.labelPlaneMatrix, glMatrix);\n }\n\n let clippingData = null;\n assert(!!tile.latestFeatureIndex);\n if (!!dynamicFilter && tile.latestFeatureIndex) {\n\n clippingData = {\n unwrappedTileID,\n dynamicFilter,\n dynamicFilterNeedsFeature,\n featureIndex: tile.latestFeatureIndex\n };\n }\n\n // As long as this placement lives, we have to hold onto this bucket's\n // matching FeatureIndex/data for querying purposes\n this.retainedQueryData[symbolBucket.bucketInstanceId] = new RetainedQueryData(\n symbolBucket.bucketInstanceId,\n bucketFeatureIndex,\n symbolBucket.sourceLayerIndex,\n symbolBucket.index,\n tile.tileID\n );\n\n const parameters = {\n bucket: symbolBucket,\n layout,\n posMatrix,\n textLabelPlaneMatrix,\n labelToScreenMatrix,\n clippingData,\n scale,\n textPixelRatio,\n holdingForFade: tile.holdingForFade(),\n collisionBoxArray,\n partiallyEvaluatedTextSize: symbolSize.evaluateSizeForZoom(symbolBucket.textSizeData, this.transform.zoom),\n partiallyEvaluatedIconSize: symbolSize.evaluateSizeForZoom(symbolBucket.iconSizeData, this.transform.zoom),\n collisionGroup: this.collisionGroups.get(symbolBucket.sourceID)\n };\n\n if (sortAcrossTiles) {\n for (const range of symbolBucket.sortKeyRanges) {\n const {sortKey, symbolInstanceStart, symbolInstanceEnd} = range;\n results.push({sortKey, symbolInstanceStart, symbolInstanceEnd, parameters});\n }\n } else {\n results.push({\n symbolInstanceStart: 0,\n symbolInstanceEnd: symbolBucket.symbolInstances.length,\n parameters\n });\n }\n }\n\n attemptAnchorPlacement(anchor: TextAnchor, textBox: SingleCollisionBox, width: number, height: number,\n textScale: number, rotateWithMap: boolean, pitchWithMap: boolean, textPixelRatio: number,\n posMatrix: Mat4, collisionGroup: CollisionGroup, textAllowOverlap: boolean,\n symbolInstance: SymbolInstance, symbolIndex: number, bucket: SymbolBucket,\n orientation: number, iconBox: ?SingleCollisionBox, textSize: any, iconSize: any): ?{ shift: Point, placedGlyphBoxes: { box: Array<number>, offscreen: boolean, occluded: boolean } } {\n\n const textOffset = [symbolInstance.textOffset0, symbolInstance.textOffset1];\n const shift = calculateVariableLayoutShift(anchor, width, height, textOffset, textScale);\n\n const placedGlyphBoxes = this.collisionIndex.placeCollisionBox(\n bucket, textScale, textBox, offsetShift(shift.x, shift.y, rotateWithMap, pitchWithMap, this.transform.angle),\n textAllowOverlap, textPixelRatio, posMatrix, collisionGroup.predicate);\n\n if (iconBox) {\n const placedIconBoxes = this.collisionIndex.placeCollisionBox(\n bucket, bucket.getSymbolInstanceIconSize(iconSize, this.transform.zoom, symbolIndex),\n iconBox, offsetShift(shift.x, shift.y, rotateWithMap, pitchWithMap, this.transform.angle),\n textAllowOverlap, textPixelRatio, posMatrix, collisionGroup.predicate);\n if (placedIconBoxes.box.length === 0) return;\n }\n\n if (placedGlyphBoxes.box.length > 0) {\n let prevAnchor;\n // If this label was placed in the previous placement, record the anchor position\n // to allow us to animate the transition\n if (this.prevPlacement &&\n this.prevPlacement.variableOffsets[symbolInstance.crossTileID] &&\n this.prevPlacement.placements[symbolInstance.crossTileID] &&\n this.prevPlacement.placements[symbolInstance.crossTileID].text) {\n prevAnchor = this.prevPlacement.variableOffsets[symbolInstance.crossTileID].anchor;\n }\n assert(symbolInstance.crossTileID !== 0);\n this.variableOffsets[symbolInstance.crossTileID] = {\n textOffset,\n width,\n height,\n anchor,\n textScale,\n prevAnchor\n };\n this.markUsedJustification(bucket, anchor, symbolInstance, orientation);\n\n if (bucket.allowVerticalPlacement) {\n this.markUsedOrientation(bucket, orientation, symbolInstance);\n this.placedOrientations[symbolInstance.crossTileID] = orientation;\n }\n\n return {shift, placedGlyphBoxes};\n }\n }\n\n placeLayerBucketPart(bucketPart: Object, seenCrossTileIDs: { [string | number]: boolean }, showCollisionBoxes: boolean, updateCollisionBoxIfNecessary: boolean) {\n\n const {\n bucket,\n layout,\n posMatrix,\n textLabelPlaneMatrix,\n labelToScreenMatrix,\n clippingData,\n textPixelRatio,\n holdingForFade,\n collisionBoxArray,\n partiallyEvaluatedTextSize,\n partiallyEvaluatedIconSize,\n collisionGroup\n } = bucketPart.parameters;\n\n const textOptional = layout.get('text-optional');\n const iconOptional = layout.get('icon-optional');\n const textAllowOverlap = layout.get('text-allow-overlap');\n const iconAllowOverlap = layout.get('icon-allow-overlap');\n const rotateWithMap = layout.get('text-rotation-alignment') === 'map';\n const pitchWithMap = layout.get('text-pitch-alignment') === 'map';\n const hasIconTextFit = layout.get('icon-text-fit') !== 'none';\n const zOrderByViewportY = layout.get('symbol-z-order') === 'viewport-y';\n\n this.transform.setProjection(bucket.projection);\n\n // This logic is similar to the \"defaultOpacityState\" logic below in updateBucketOpacities\n // If we know a symbol is always supposed to show, force it to be marked visible even if\n // it wasn't placed into the collision index (because some or all of it was outside the range\n // of the collision grid).\n // There is a subtle edge case here we're accepting:\n // Symbol A has text-allow-overlap: true, icon-allow-overlap: true, icon-optional: false\n // A's icon is outside the grid, so doesn't get placed\n // A's text would be inside grid, but doesn't get placed because of icon-optional: false\n // We still show A because of the allow-overlap settings.\n // Symbol B has allow-overlap: false, and gets placed where A's text would be\n // On panning in, there is a short period when Symbol B and Symbol A will overlap\n // This is the reverse of our normal policy of \"fade in on pan\", but should look like any other\n // collision and hopefully not be too noticeable.\n // See https://github.com/mapbox/mapbox-gl-js/issues/7172\n let alwaysShowText = textAllowOverlap && (iconAllowOverlap || !bucket.hasIconData() || iconOptional);\n let alwaysShowIcon = iconAllowOverlap && (textAllowOverlap || !bucket.hasTextData() || textOptional);\n\n if (!bucket.collisionArrays && collisionBoxArray) {\n bucket.deserializeCollisionBoxes(collisionBoxArray);\n }\n\n if (showCollisionBoxes && updateCollisionBoxIfNecessary) {\n bucket.updateCollisionDebugBuffers(this.transform.zoom, collisionBoxArray);\n }\n\n const placeSymbol = (symbolInstance: SymbolInstance, symbolIndex: number, collisionArrays: CollisionArrays) => {\n if (clippingData) {\n // Setup globals\n const globals = {\n zoom: this.transform.zoom,\n pitch: this.transform.pitch,\n };\n\n // Deserialize feature only if necessary\n let feature = null;\n if (clippingData.dynamicFilterNeedsFeature) {\n const featureIndex = clippingData.featureIndex;\n const retainedQueryData = this.retainedQueryData[bucket.bucketInstanceId];\n feature = featureIndex.loadFeature({\n featureIndex: symbolInstance.featureIndex,\n bucketIndex: retainedQueryData.bucketIndex,\n sourceLayerIndex: retainedQueryData.sourceLayerIndex,\n layoutVertexArrayOffset: 0\n });\n }\n const canonicalTileId = this.retainedQueryData[bucket.bucketInstanceId].tileID.canonical;\n\n const filterFunc = clippingData.dynamicFilter;\n const shouldClip = !filterFunc(globals, feature, canonicalTileId, new Point(symbolInstance.tileAnchorX, symbolInstance.tileAnchorY), this.transform.calculateDistanceTileData(clippingData.unwrappedTileID));\n\n if (shouldClip) {\n this.placements[symbolInstance.crossTileID] = new JointPlacement(false, false, false, true);\n seenCrossTileIDs[symbolInstance.crossTileID] = true;\n return;\n }\n }\n\n if (seenCrossTileIDs[symbolInstance.crossTileID]) return;\n if (holdingForFade) {\n // Mark all symbols from this tile as \"not placed\", but don't add to seenCrossTileIDs, because we don't\n // know yet if we have a duplicate in a parent tile that _should_ be placed.\n this.placements[symbolInstance.crossTileID] = new JointPlacement(false, false, false);\n return;\n }\n let placeText = false;\n let placeIcon = false;\n let offscreen = true;\n let textOccluded = false;\n let iconOccluded = false;\n let shift = null;\n\n let placed = {box: null, offscreen: null, occluded: null};\n let placedVerticalText = {box: null, offscreen: null, occluded: null};\n\n let placedGlyphBoxes = null;\n let placedGlyphCircles = null;\n let placedIconBoxes = null;\n let textFeatureIndex = 0;\n let verticalTextFeatureIndex = 0;\n let iconFeatureIndex = 0;\n\n if (collisionArrays.textFeatureIndex) {\n textFeatureIndex = collisionArrays.textFeatureIndex;\n } else if (symbolInstance.useRuntimeCollisionCircles) {\n textFeatureIndex = symbolInstance.featureIndex;\n }\n if (collisionArrays.verticalTextFeatureIndex) {\n verticalTextFeatureIndex = collisionArrays.verticalTextFeatureIndex;\n }\n\n const updateBoxData = (box: SingleCollisionBox) => {\n box.tileID = this.retainedQueryData[bucket.bucketInstanceId].tileID;\n if (!this.transform.elevation && !box.elevation) return;\n box.elevation = this.transform.elevation ? this.transform.elevation.getAtTileOffset(\n this.retainedQueryData[bucket.bucketInstanceId].tileID,\n box.tileAnchorX, box.tileAnchorY) : 0;\n };\n\n const textBox = collisionArrays.textBox;\n if (textBox) {\n updateBoxData(textBox);\n const updatePreviousOrientationIfNotPlaced = (isPlaced) => {\n let previousOrientation = WritingMode.horizontal;\n if (bucket.allowVerticalPlacement && !isPlaced && this.prevPlacement) {\n const prevPlacedOrientation = this.prevPlacement.placedOrientations[symbolInstance.crossTileID];\n if (prevPlacedOrientation) {\n this.placedOrientations[symbolInstance.crossTileID] = prevPlacedOrientation;\n previousOrientation = prevPlacedOrientation;\n this.markUsedOrientation(bucket, previousOrientation, symbolInstance);\n }\n }\n return previousOrientation;\n };\n\n const placeTextForPlacementModes = (placeHorizontalFn, placeVerticalFn) => {\n if (bucket.allowVerticalPlacement && symbolInstance.numVerticalGlyphVertices > 0 && collisionArrays.verticalTextBox) {\n for (const placementMode of bucket.writingModes) {\n if (placementMode === WritingMode.vertical) {\n placed = placeVerticalFn();\n placedVerticalText = placed;\n } else {\n placed = placeHorizontalFn();\n }\n if (placed && placed.box && placed.box.length) break;\n }\n } else {\n placed = placeHorizontalFn();\n }\n };\n\n if (!layout.get('text-variable-anchor')) {\n const placeBox = (collisionTextBox, orientation) => {\n const textScale = bucket.getSymbolInstanceTextSize(partiallyEvaluatedTextSize, symbolInstance, this.transform.zoom, symbolIndex);\n const placedFeature = this.collisionIndex.placeCollisionBox(bucket, textScale, collisionTextBox,\n new Point(0, 0), textAllowOverlap, textPixelRatio, posMatrix, collisionGroup.predicate);\n if (placedFeature && placedFeature.box && placedFeature.box.length) {\n this.markUsedOrientation(bucket, orientation, symbolInstance);\n this.placedOrientations[symbolInstance.crossTileID] = orientation;\n }\n return placedFeature;\n };\n\n const placeHorizontal = () => {\n return placeBox(textBox, WritingMode.horizontal);\n };\n\n const placeVertical = () => {\n const verticalTextBox = collisionArrays.verticalTextBox;\n if (bucket.allowVerticalPlacement && symbolInstance.numVerticalGlyphVertices > 0 && verticalTextBox) {\n updateBoxData(verticalTextBox);\n return placeBox(verticalTextBox, WritingMode.vertical);\n }\n return {box: null, offscreen: null, occluded: null};\n };\n\n placeTextForPlacementModes(placeHorizontal, placeVertical);\n updatePreviousOrientationIfNotPlaced(placed && placed.box && placed.box.length);\n\n } else {\n let anchors = layout.get('text-variable-anchor');\n\n // If this symbol was in the last placement, shift the previously used\n // anchor to the front of the anchor list, only if the previous anchor\n // is still in the anchor list\n if (this.prevPlacement && this.prevPlacement.variableOffsets[symbolInstance.crossTileID]) {\n const prevOffsets = this.prevPlacement.variableOffsets[symbolInstance.crossTileID];\n if (anchors.indexOf(prevOffsets.anchor) > 0) {\n anchors = anchors.filter(anchor => anchor !== prevOffsets.anchor);\n anchors.unshift(prevOffsets.anchor);\n }\n }\n\n const placeBoxForVariableAnchors = (collisionTextBox, collisionIconBox, orientation) => {\n const textScale = bucket.getSymbolInstanceTextSize(partiallyEvaluatedTextSize, symbolInstance, this.transform.zoom, symbolIndex);\n const width = (collisionTextBox.x2 - collisionTextBox.x1) * textScale + 2.0 * collisionTextBox.padding;\n const height = (collisionTextBox.y2 - collisionTextBox.y1) * textScale + 2.0 * collisionTextBox.padding;\n\n const variableIconBox = hasIconTextFit && !iconAllowOverlap ? collisionIconBox : null;\n if (variableIconBox) updateBoxData(variableIconBox);\n\n let placedBox: ?{ box: Array<number>, offscreen: boolean, occluded: boolean } = {box: [], offscreen: false, occluded: false};\n const placementAttempts = textAllowOverlap ? anchors.length * 2 : anchors.length;\n for (let i = 0; i < placementAttempts; ++i) {\n const anchor = anchors[i % anchors.length];\n const allowOverlap = (i >= anchors.length);\n const result = this.attemptAnchorPlacement(\n anchor, collisionTextBox, width, height, textScale, rotateWithMap,\n pitchWithMap, textPixelRatio, posMatrix, collisionGroup, allowOverlap,\n symbolInstance, symbolIndex, bucket, orientation, variableIconBox,\n partiallyEvaluatedTextSize, partiallyEvaluatedIconSize);\n\n if (result) {\n placedBox = result.placedGlyphBoxes;\n if (placedBox && placedBox.box && placedBox.box.length) {\n placeText = true;\n shift = result.shift;\n break;\n }\n }\n }\n\n return placedBox;\n };\n\n const placeHorizontal = () => {\n return placeBoxForVariableAnchors(textBox, collisionArrays.iconBox, WritingMode.horizontal);\n };\n\n const placeVertical = () => {\n const verticalTextBox = collisionArrays.verticalTextBox;\n if (verticalTextBox) updateBoxData(verticalTextBox);\n const wasPlaced = placed && placed.box && placed.box.length;\n if (bucket.allowVerticalPlacement && !wasPlaced && symbolInstance.numVerticalGlyphVertices > 0 && verticalTextBox) {\n return placeBoxForVariableAnchors(verticalTextBox, collisionArrays.verticalIconBox, WritingMode.vertical);\n }\n return {box: null, offscreen: null, occluded: null};\n };\n\n placeTextForPlacementModes(placeHorizontal, placeVertical);\n\n if (placed) {\n placeText = placed.box;\n offscreen = placed.offscreen;\n textOccluded = placed.occluded;\n }\n\n const prevOrientation = updatePreviousOrientationIfNotPlaced(placed && placed.box);\n\n // If we didn't get placed, we still need to copy our position from the last placement for\n // fade animations\n if (!placeText && this.prevPlacement) {\n const prevOffset = this.prevPlacement.variableOffsets[symbolInstance.crossTileID];\n if (prevOffset) {\n this.variableOffsets[symbolInstance.crossTileID] = prevOffset;\n this.markUsedJustification(bucket, prevOffset.anchor, symbolInstance, prevOrientation);\n }\n }\n\n }\n }\n\n placedGlyphBoxes = placed;\n\n placeText = placedGlyphBoxes && placedGlyphBoxes.box && placedGlyphBoxes.box.length > 0;\n offscreen = placedGlyphBoxes && placedGlyphBoxes.offscreen;\n textOccluded = placedGlyphBoxes && placedGlyphBoxes.occluded;\n\n if (symbolInstance.useRuntimeCollisionCircles) {\n const placedSymbolIndex = symbolInstance.centerJustifiedTextSymbolIndex >= 0 ? symbolInstance.centerJustifiedTextSymbolIndex : symbolInstance.verticalPlacedTextSymbolIndex;\n const placedSymbol = bucket.text.placedSymbolArray.get(placedSymbolIndex);\n const fontSize = symbolSize.evaluateSizeForFeature(bucket.textSizeData, partiallyEvaluatedTextSize, placedSymbol);\n\n const textPixelPadding = layout.get('text-padding');\n // Convert circle collision height into pixels\n const circlePixelDiameter = symbolInstance.collisionCircleDiameter * fontSize / ONE_EM;\n\n placedGlyphCircles = this.collisionIndex.placeCollisionCircles(\n bucket,\n textAllowOverlap,\n placedSymbol,\n bucket.lineVertexArray,\n bucket.glyphOffsetArray,\n fontSize,\n posMatrix,\n textLabelPlaneMatrix,\n labelToScreenMatrix,\n showCollisionBoxes,\n pitchWithMap,\n collisionGroup.predicate,\n circlePixelDiameter,\n textPixelPadding,\n this.retainedQueryData[bucket.bucketInstanceId].tileID);\n\n assert(!placedGlyphCircles.circles.length || (!placedGlyphCircles.collisionDetected || showCollisionBoxes));\n // If text-allow-overlap is set, force \"placedCircles\" to true\n // In theory there should always be at least one circle placed\n // in this case, but for now quirks in text-anchor\n // and text-offset may prevent that from being true.\n placeText = textAllowOverlap || (placedGlyphCircles.circles.length > 0 && !placedGlyphCircles.collisionDetected);\n offscreen = offscreen && placedGlyphCircles.offscreen;\n textOccluded = placedGlyphCircles.occluded;\n }\n\n if (collisionArrays.iconFeatureIndex) {\n iconFeatureIndex = collisionArrays.iconFeatureIndex;\n }\n\n if (collisionArrays.iconBox) {\n\n const placeIconFeature = iconBox => {\n updateBoxData(iconBox);\n const shiftPoint: Point = hasIconTextFit && shift ?\n offsetShift(shift.x, shift.y, rotateWithMap, pitchWithMap, this.transform.angle) :\n new Point(0, 0);\n const iconScale = bucket.getSymbolInstanceIconSize(partiallyEvaluatedIconSize, this.transform.zoom, symbolIndex);\n return this.collisionIndex.placeCollisionBox(bucket, iconScale, iconBox, shiftPoint,\n iconAllowOverlap, textPixelRatio, posMatrix, collisionGroup.predicate);\n };\n\n if (placedVerticalText && placedVerticalText.box && placedVerticalText.box.length && collisionArrays.verticalIconBox) {\n placedIconBoxes = placeIconFeature(collisionArrays.verticalIconBox);\n placeIcon = placedIconBoxes.box.length > 0;\n } else {\n placedIconBoxes = placeIconFeature(collisionArrays.iconBox);\n placeIcon = placedIconBoxes.box.length > 0;\n }\n offscreen = offscreen && placedIconBoxes.offscreen;\n iconOccluded = placedIconBoxes.occluded;\n }\n\n const iconWithoutText = textOptional ||\n (symbolInstance.numHorizontalGlyphVertices === 0 && symbolInstance.numVerticalGlyphVertices === 0);\n const textWithoutIcon = iconOptional || symbolInstance.numIconVertices === 0;\n\n // Combine the scales for icons and text.\n if (!iconWithoutText && !textWithoutIcon) {\n placeIcon = placeText = placeIcon && placeText;\n } else if (!textWithoutIcon) {\n placeText = placeIcon && placeText;\n } else if (!iconWithoutText) {\n placeIcon = placeIcon && placeText;\n }\n\n if (placeText && placedGlyphBoxes && placedGlyphBoxes.box) {\n if (placedVerticalText && placedVerticalText.box && verticalTextFeatureIndex) {\n this.collisionIndex.insertCollisionBox(placedGlyphBoxes.box, layout.get('text-ignore-placement'),\n bucket.bucketInstanceId, verticalTextFeatureIndex, collisionGroup.ID);\n } else {\n this.collisionIndex.insertCollisionBox(placedGlyphBoxes.box, layout.get('text-ignore-placement'),\n bucket.bucketInstanceId, textFeatureIndex, collisionGroup.ID);\n }\n\n }\n if (placeIcon && placedIconBoxes) {\n this.collisionIndex.insertCollisionBox(placedIconBoxes.box, layout.get('icon-ignore-placement'),\n bucket.bucketInstanceId, iconFeatureIndex, collisionGroup.ID);\n }\n if (placedGlyphCircles) {\n if (placeText) {\n this.collisionIndex.insertCollisionCircles(placedGlyphCircles.circles, layout.get('text-ignore-placement'),\n bucket.bucketInstanceId, textFeatureIndex, collisionGroup.ID);\n }\n\n if (showCollisionBoxes) {\n const id = bucket.bucketInstanceId;\n let circleArray = this.collisionCircleArrays[id];\n\n // Group collision circles together by bucket. Circles can't be pushed forward for rendering yet as the symbol placement\n // for a bucket is not guaranteed to be complete before the commit-function has been called\n if (circleArray === undefined)\n circleArray = this.collisionCircleArrays[id] = new CollisionCircleArray();\n\n for (let i = 0; i < placedGlyphCircles.circles.length; i += 4) {\n circleArray.circles.push(placedGlyphCircles.circles[i + 0]); // x\n circleArray.circles.push(placedGlyphCircles.circles[i + 1]); // y\n circleArray.circles.push(placedGlyphCircles.circles[i + 2]); // radius\n circleArray.circles.push(placedGlyphCircles.collisionDetected ? 1 : 0); // collisionDetected-flag\n }\n }\n }\n\n assert(symbolInstance.crossTileID !== 0);\n assert(bucket.bucketInstanceId !== 0);\n\n const notGlobe = bucket.projection.name !== 'globe';\n alwaysShowText = alwaysShowText && (notGlobe || !textOccluded);\n alwaysShowIcon = alwaysShowIcon && (notGlobe || !iconOccluded);\n\n this.placements[symbolInstance.crossTileID] = new JointPlacement(placeText || alwaysShowText, placeIcon || alwaysShowIcon, offscreen || bucket.justReloaded);\n seenCrossTileIDs[symbolInstance.crossTileID] = true;\n };\n\n if (zOrderByViewportY) {\n assert(bucketPart.symbolInstanceStart === 0);\n const symbolIndexes = bucket.getSortedSymbolIndexes(this.transform.angle);\n for (let i = symbolIndexes.length - 1; i >= 0; --i) {\n const symbolIndex = symbolIndexes[i];\n placeSymbol(bucket.symbolInstances.get(symbolIndex), symbolIndex, bucket.collisionArrays[symbolIndex]);\n }\n } else {\n for (let i = bucketPart.symbolInstanceStart; i < bucketPart.symbolInstanceEnd; i++) {\n placeSymbol(bucket.symbolInstances.get(i), i, bucket.collisionArrays[i]);\n }\n }\n\n if (showCollisionBoxes && bucket.bucketInstanceId in this.collisionCircleArrays) {\n const circleArray = this.collisionCircleArrays[bucket.bucketInstanceId];\n\n // Store viewport and inverse projection matrices per bucket\n mat4.invert(circleArray.invProjMatrix, posMatrix);\n circleArray.viewportMatrix = this.collisionIndex.getViewportMatrix();\n }\n\n bucket.justReloaded = false;\n }\n\n markUsedJustification(bucket: SymbolBucket, placedAnchor: TextAnchor, symbolInstance: SymbolInstance, orientation: number) {\n const justifications = {\n \"left\": symbolInstance.leftJustifiedTextSymbolIndex,\n \"center\": symbolInstance.centerJustifiedTextSymbolIndex,\n \"right\": symbolInstance.rightJustifiedTextSymbolIndex\n };\n\n let autoIndex;\n if (orientation === WritingMode.vertical) {\n autoIndex = symbolInstance.verticalPlacedTextSymbolIndex;\n } else {\n autoIndex = justifications[getAnchorJustification(placedAnchor)];\n }\n\n const indexes = [\n symbolInstance.leftJustifiedTextSymbolIndex,\n symbolInstance.centerJustifiedTextSymbolIndex,\n symbolInstance.rightJustifiedTextSymbolIndex,\n symbolInstance.verticalPlacedTextSymbolIndex\n ];\n\n for (const index of indexes) {\n if (index >= 0) {\n if (autoIndex >= 0 && index !== autoIndex) {\n // There are multiple justifications and this one isn't it: shift offscreen\n bucket.text.placedSymbolArray.get(index).crossTileID = 0;\n } else {\n // Either this is the chosen justification or the justification is hardwired: use this one\n bucket.text.placedSymbolArray.get(index).crossTileID = symbolInstance.crossTileID;\n }\n }\n }\n }\n\n markUsedOrientation(bucket: SymbolBucket, orientation: number, symbolInstance: SymbolInstance) {\n const horizontal = (orientation === WritingMode.horizontal || orientation === WritingMode.horizontalOnly) ? orientation : 0;\n const vertical = orientation === WritingMode.vertical ? orientation : 0;\n\n const horizontalIndexes = [\n symbolInstance.leftJustifiedTextSymbolIndex,\n symbolInstance.centerJustifiedTextSymbolIndex,\n symbolInstance.rightJustifiedTextSymbolIndex\n ];\n\n for (const index of horizontalIndexes) {\n bucket.text.placedSymbolArray.get(index).placedOrientation = horizontal;\n }\n\n if (symbolInstance.verticalPlacedTextSymbolIndex) {\n bucket.text.placedSymbolArray.get(symbolInstance.verticalPlacedTextSymbolIndex).placedOrientation = vertical;\n }\n }\n\n commit(now: number): void {\n this.commitTime = now;\n this.zoomAtLastRecencyCheck = this.transform.zoom;\n\n const prevPlacement = this.prevPlacement;\n let placementChanged = false;\n\n this.prevZoomAdjustment = prevPlacement ? prevPlacement.zoomAdjustment(this.transform.zoom) : 0;\n const increment = prevPlacement ? prevPlacement.symbolFadeChange(now) : 1;\n\n const prevOpacities = prevPlacement ? prevPlacement.opacities : {};\n const prevOffsets = prevPlacement ? prevPlacement.variableOffsets : {};\n const prevOrientations = prevPlacement ? prevPlacement.placedOrientations : {};\n\n // add the opacities from the current placement, and copy their current values from the previous placement\n for (const crossTileID in this.placements) {\n const jointPlacement = this.placements[crossTileID];\n const prevOpacity = prevOpacities[crossTileID];\n if (prevOpacity) {\n this.opacities[crossTileID] = new JointOpacityState(prevOpacity, increment, jointPlacement.text, jointPlacement.icon, null, jointPlacement.clipped);\n placementChanged = placementChanged ||\n jointPlacement.text !== prevOpacity.text.placed ||\n jointPlacement.icon !== prevOpacity.icon.placed;\n } else {\n this.opacities[crossTileID] = new JointOpacityState(null, increment, jointPlacement.text, jointPlacement.icon, jointPlacement.skipFade, jointPlacement.clipped);\n placementChanged = placementChanged || jointPlacement.text || jointPlacement.icon;\n }\n }\n\n // copy and update values from the previous placement that aren't in the current placement but haven't finished fading\n for (const crossTileID in prevOpacities) {\n const prevOpacity = prevOpacities[crossTileID];\n if (!this.opacities[crossTileID]) {\n const jointOpacity = new JointOpacityState(prevOpacity, increment, false, false);\n if (!jointOpacity.isHidden()) {\n this.opacities[crossTileID] = jointOpacity;\n placementChanged = placementChanged || prevOpacity.text.placed || prevOpacity.icon.placed;\n }\n }\n }\n for (const crossTileID in prevOffsets) {\n if (!this.variableOffsets[crossTileID] && this.opacities[crossTileID] && !this.opacities[crossTileID].isHidden()) {\n this.variableOffsets[crossTileID] = prevOffsets[crossTileID];\n }\n }\n\n for (const crossTileID in prevOrientations) {\n if (!this.placedOrientations[crossTileID] && this.opacities[crossTileID] && !this.opacities[crossTileID].isHidden()) {\n this.placedOrientations[crossTileID] = prevOrientations[crossTileID];\n }\n }\n\n // this.lastPlacementChangeTime is the time of the last commit() that\n // resulted in a placement change -- in other words, the start time of\n // the last symbol fade animation\n assert(!prevPlacement || prevPlacement.lastPlacementChangeTime !== undefined);\n if (placementChanged) {\n this.lastPlacementChangeTime = now;\n } else if (typeof this.lastPlacementChangeTime !== 'number') {\n this.lastPlacementChangeTime = prevPlacement ? prevPlacement.lastPlacementChangeTime : now;\n }\n }\n\n updateLayerOpacities(styleLayer: StyleLayer, tiles: Array<Tile>) {\n const seenCrossTileIDs = {};\n for (const tile of tiles) {\n const symbolBucket = ((tile.getBucket(styleLayer): any): SymbolBucket);\n if (symbolBucket && tile.latestFeatureIndex && styleLayer.id === symbolBucket.layerIds[0]) {\n this.updateBucketOpacities(symbolBucket, seenCrossTileIDs, tile.collisionBoxArray);\n }\n }\n }\n\n updateBucketOpacities(bucket: SymbolBucket, seenCrossTileIDs: { [string | number]: boolean }, collisionBoxArray: ?CollisionBoxArray) {\n if (bucket.hasTextData()) bucket.text.opacityVertexArray.clear();\n if (bucket.hasIconData()) bucket.icon.opacityVertexArray.clear();\n if (bucket.hasIconCollisionBoxData()) bucket.iconCollisionBox.collisionVertexArray.clear();\n if (bucket.hasTextCollisionBoxData()) bucket.textCollisionBox.collisionVertexArray.clear();\n\n const layout = bucket.layers[0].layout;\n const hasClipping = !!bucket.layers[0].dynamicFilter();\n const duplicateOpacityState = new JointOpacityState(null, 0, false, false, true);\n const textAllowOverlap = layout.get('text-allow-overlap');\n const iconAllowOverlap = layout.get('icon-allow-overlap');\n const variablePlacement = layout.get('text-variable-anchor');\n const rotateWithMap = layout.get('text-rotation-alignment') === 'map';\n const pitchWithMap = layout.get('text-pitch-alignment') === 'map';\n const hasIconTextFit = layout.get('icon-text-fit') !== 'none';\n // If allow-overlap is true, we can show symbols before placement runs on them\n // But we have to wait for placement if we potentially depend on a paired icon/text\n // with allow-overlap: false.\n // See https://github.com/mapbox/mapbox-gl-js/issues/7032\n const defaultOpacityState = new JointOpacityState(null, 0,\n textAllowOverlap && (iconAllowOverlap || !bucket.hasIconData() || layout.get('icon-optional')),\n iconAllowOverlap && (textAllowOverlap || !bucket.hasTextData() || layout.get('text-optional')),\n true);\n\n if (!bucket.collisionArrays && collisionBoxArray && ((bucket.hasIconCollisionBoxData() || bucket.hasTextCollisionBoxData()))) {\n bucket.deserializeCollisionBoxes(collisionBoxArray);\n }\n\n const addOpacities = (iconOrText, numVertices: number, opacity: number) => {\n for (let i = 0; i < numVertices / 4; i++) {\n iconOrText.opacityVertexArray.emplaceBack(opacity);\n }\n };\n\n let visibleInstanceCount = 0;\n\n for (let s = 0; s < bucket.symbolInstances.length; s++) {\n const symbolInstance = bucket.symbolInstances.get(s);\n const {\n numHorizontalGlyphVertices,\n numVerticalGlyphVertices,\n crossTileID\n } = symbolInstance;\n\n const isDuplicate = seenCrossTileIDs[crossTileID];\n\n let opacityState = this.opacities[crossTileID];\n if (isDuplicate) {\n opacityState = duplicateOpacityState;\n } else if (!opacityState) {\n opacityState = defaultOpacityState;\n // store the state so that future placements use it as a starting point\n this.opacities[crossTileID] = opacityState;\n }\n\n seenCrossTileIDs[crossTileID] = true;\n\n const hasText = numHorizontalGlyphVertices > 0 || numVerticalGlyphVertices > 0;\n const hasIcon = symbolInstance.numIconVertices > 0;\n\n const placedOrientation = this.placedOrientations[symbolInstance.crossTileID];\n const horizontalHidden = placedOrientation === WritingMode.vertical;\n const verticalHidden = placedOrientation === WritingMode.horizontal || placedOrientation === WritingMode.horizontalOnly;\n if ((hasText || hasIcon) && !opacityState.isHidden()) visibleInstanceCount++;\n\n if (hasText) {\n const packedOpacity = packOpacity(opacityState.text);\n // Vertical text fades in/out on collision the same way as corresponding\n // horizontal text. Switch between vertical/horizontal should be instantaneous\n const horizontalOpacity = horizontalHidden ? PACKED_HIDDEN_OPACITY : packedOpacity;\n addOpacities(bucket.text, numHorizontalGlyphVertices, horizontalOpacity);\n const verticalOpacity = verticalHidden ? PACKED_HIDDEN_OPACITY : packedOpacity;\n addOpacities(bucket.text, numVerticalGlyphVertices, verticalOpacity);\n\n // If this label is completely faded, mark it so that we don't have to calculate\n // its position at render time. If this layer has variable placement, shift the various\n // symbol instances appropriately so that symbols from buckets that have yet to be placed\n // offset appropriately.\n const symbolHidden = opacityState.text.isHidden();\n [\n symbolInstance.rightJustifiedTextSymbolIndex,\n symbolInstance.centerJustifiedTextSymbolIndex,\n symbolInstance.leftJustifiedTextSymbolIndex\n ].forEach(index => {\n if (index >= 0) {\n bucket.text.placedSymbolArray.get(index).hidden = symbolHidden || horizontalHidden ? 1 : 0;\n }\n });\n\n if (symbolInstance.verticalPlacedTextSymbolIndex >= 0) {\n bucket.text.placedSymbolArray.get(symbolInstance.verticalPlacedTextSymbolIndex).hidden = symbolHidden || verticalHidden ? 1 : 0;\n }\n\n const prevOffset = this.variableOffsets[symbolInstance.crossTileID];\n if (prevOffset) {\n this.markUsedJustification(bucket, prevOffset.anchor, symbolInstance, placedOrientation);\n }\n\n const prevOrientation = this.placedOrientations[symbolInstance.crossTileID];\n if (prevOrientation) {\n this.markUsedJustification(bucket, 'left', symbolInstance, prevOrientation);\n this.markUsedOrientation(bucket, prevOrientation, symbolInstance);\n }\n }\n\n if (hasIcon) {\n const packedOpacity = packOpacity(opacityState.icon);\n\n if (symbolInstance.placedIconSymbolIndex >= 0) {\n const horizontalOpacity = !horizontalHidden ? packedOpacity : PACKED_HIDDEN_OPACITY;\n addOpacities(bucket.icon, symbolInstance.numIconVertices, horizontalOpacity);\n bucket.icon.placedSymbolArray.get(symbolInstance.placedIconSymbolIndex).hidden =\n (opacityState.icon.isHidden(): any);\n }\n\n if (symbolInstance.verticalPlacedIconSymbolIndex >= 0) {\n const verticalOpacity = !verticalHidden ? packedOpacity : PACKED_HIDDEN_OPACITY;\n addOpacities(bucket.icon, symbolInstance.numVerticalIconVertices, verticalOpacity);\n bucket.icon.placedSymbolArray.get(symbolInstance.verticalPlacedIconSymbolIndex).hidden =\n (opacityState.icon.isHidden(): any);\n }\n }\n\n if (bucket.hasIconCollisionBoxData() || bucket.hasTextCollisionBoxData()) {\n const collisionArrays = bucket.collisionArrays[s];\n if (collisionArrays) {\n let shift = new Point(0, 0);\n let used = true;\n if (collisionArrays.textBox || collisionArrays.verticalTextBox) {\n if (variablePlacement) {\n const variableOffset = this.variableOffsets[crossTileID];\n if (variableOffset) {\n // This will show either the currently placed position or the last\n // successfully placed position (so you can visualize what collision\n // just made the symbol disappear, and the most likely place for the\n // symbol to come back)\n shift = calculateVariableLayoutShift(variableOffset.anchor,\n variableOffset.width,\n variableOffset.height,\n variableOffset.textOffset,\n variableOffset.textScale);\n if (rotateWithMap) {\n shift._rotate(pitchWithMap ? this.transform.angle : -this.transform.angle);\n }\n } else {\n // No offset -> this symbol hasn't been placed since coming on-screen\n // No single box is particularly meaningful and all of them would be too noisy\n // Use the center box just to show something's there, but mark it \"not used\"\n used = false;\n }\n }\n\n if (hasClipping) {\n used = !opacityState.clipped;\n }\n\n if (collisionArrays.textBox) {\n updateCollisionVertices(bucket.textCollisionBox.collisionVertexArray, opacityState.text.placed, !used || horizontalHidden, shift.x, shift.y);\n }\n if (collisionArrays.verticalTextBox) {\n updateCollisionVertices(bucket.textCollisionBox.collisionVertexArray, opacityState.text.placed, !used || verticalHidden, shift.x, shift.y);\n }\n }\n\n const verticalIconUsed = used && Boolean(!verticalHidden && collisionArrays.verticalIconBox);\n\n if (collisionArrays.iconBox) {\n updateCollisionVertices(bucket.iconCollisionBox.collisionVertexArray, opacityState.icon.placed, verticalIconUsed,\n hasIconTextFit ? shift.x : 0,\n hasIconTextFit ? shift.y : 0);\n }\n\n if (collisionArrays.verticalIconBox) {\n updateCollisionVertices(bucket.iconCollisionBox.collisionVertexArray, opacityState.icon.placed, !verticalIconUsed,\n hasIconTextFit ? shift.x : 0,\n hasIconTextFit ? shift.y : 0);\n }\n }\n }\n }\n bucket.fullyClipped = visibleInstanceCount === 0;\n bucket.sortFeatures(this.transform.angle);\n if (this.retainedQueryData[bucket.bucketInstanceId]) {\n this.retainedQueryData[bucket.bucketInstanceId].featureSortOrder = bucket.featureSortOrder;\n }\n\n if (bucket.hasTextData() && bucket.text.opacityVertexBuffer) {\n bucket.text.opacityVertexBuffer.updateData(bucket.text.opacityVertexArray);\n }\n if (bucket.hasIconData() && bucket.icon.opacityVertexBuffer) {\n bucket.icon.opacityVertexBuffer.updateData(bucket.icon.opacityVertexArray);\n }\n if (bucket.hasIconCollisionBoxData() && bucket.iconCollisionBox.collisionVertexBuffer) {\n bucket.iconCollisionBox.collisionVertexBuffer.updateData(bucket.iconCollisionBox.collisionVertexArray);\n }\n if (bucket.hasTextCollisionBoxData() && bucket.textCollisionBox.collisionVertexBuffer) {\n bucket.textCollisionBox.collisionVertexBuffer.updateData(bucket.textCollisionBox.collisionVertexArray);\n }\n\n assert(bucket.text.opacityVertexArray.length === bucket.text.layoutVertexArray.length / 4);\n assert(bucket.icon.opacityVertexArray.length === bucket.icon.layoutVertexArray.length / 4);\n\n // Push generated collision circles to the bucket for debug rendering\n if (bucket.bucketInstanceId in this.collisionCircleArrays) {\n const instance = this.collisionCircleArrays[bucket.bucketInstanceId];\n\n bucket.placementInvProjMatrix = instance.invProjMatrix;\n bucket.placementViewportMatrix = instance.viewportMatrix;\n bucket.collisionCircleArray = instance.circles;\n\n delete this.collisionCircleArrays[bucket.bucketInstanceId];\n }\n }\n\n symbolFadeChange(now: number): number {\n return this.fadeDuration === 0 ?\n 1 :\n ((now - this.commitTime) / this.fadeDuration + this.prevZoomAdjustment);\n }\n\n zoomAdjustment(zoom: number): number {\n // When zooming out quickly, labels can overlap each other. This\n // adjustment is used to reduce the interval between placement calculations\n // and to reduce the fade duration when zooming out quickly. Discovering the\n // collisions more quickly and fading them more quickly reduces the unwanted effect.\n return Math.max(0, (this.transform.zoom - zoom) / 1.5);\n }\n\n hasTransitions(now: number): boolean {\n return this.stale ||\n now - this.lastPlacementChangeTime < this.fadeDuration;\n }\n\n stillRecent(now: number, zoom: number): boolean {\n // The adjustment makes placement more frequent when zooming.\n // This condition applies the adjustment only after the map has\n // stopped zooming. This avoids adding extra jank while zooming.\n const durationAdjustment = this.zoomAtLastRecencyCheck === zoom ?\n (1 - this.zoomAdjustment(zoom)) :\n 1;\n this.zoomAtLastRecencyCheck = zoom;\n\n return this.commitTime + this.fadeDuration * durationAdjustment > now;\n }\n\n setStale() {\n this.stale = true;\n }\n}\n\nfunction updateCollisionVertices(collisionVertexArray: CollisionVertexArray, placed: boolean, notUsed: boolean | number, shiftX?: number, shiftY?: number) {\n collisionVertexArray.emplaceBack(placed ? 1 : 0, notUsed ? 1 : 0, shiftX || 0, shiftY || 0);\n collisionVertexArray.emplaceBack(placed ? 1 : 0, notUsed ? 1 : 0, shiftX || 0, shiftY || 0);\n collisionVertexArray.emplaceBack(placed ? 1 : 0, notUsed ? 1 : 0, shiftX || 0, shiftY || 0);\n collisionVertexArray.emplaceBack(placed ? 1 : 0, notUsed ? 1 : 0, shiftX || 0, shiftY || 0);\n}\n\n// All four vertices for a glyph will have the same opacity state\n// So we pack the opacity into a uint8, and then repeat it four times\n// to make a single uint32 that we can upload for each glyph in the\n// label.\nconst shift25 = Math.pow(2, 25);\nconst shift24 = Math.pow(2, 24);\nconst shift17 = Math.pow(2, 17);\nconst shift16 = Math.pow(2, 16);\nconst shift9 = Math.pow(2, 9);\nconst shift8 = Math.pow(2, 8);\nconst shift1 = Math.pow(2, 1);\nfunction packOpacity(opacityState: OpacityState): number {\n if (opacityState.opacity === 0 && !opacityState.placed) {\n return 0;\n } else if (opacityState.opacity === 1 && opacityState.placed) {\n return 4294967295;\n }\n const targetBit = opacityState.placed ? 1 : 0;\n const opacityBits = Math.floor(opacityState.opacity * 127);\n return opacityBits * shift25 + targetBit * shift24 +\n opacityBits * shift17 + targetBit * shift16 +\n opacityBits * shift9 + targetBit * shift8 +\n opacityBits * shift1 + targetBit;\n}\n\nconst PACKED_HIDDEN_OPACITY = 0;\n","// @flow\n\nimport browser from '../util/browser.js';\n\nimport {Placement} from '../symbol/placement.js';\nimport {PerformanceUtils} from '../util/performance.js';\n\nimport type Transform from '../geo/transform.js';\nimport type StyleLayer from './style_layer.js';\nimport type SymbolStyleLayer from './style_layer/symbol_style_layer.js';\nimport type Tile from '../source/tile.js';\nimport type {BucketPart} from '../symbol/placement.js';\nimport type {FogState} from './fog_helpers.js';\n\nclass LayerPlacement {\n _sortAcrossTiles: boolean;\n _currentTileIndex: number;\n _currentPartIndex: number;\n _seenCrossTileIDs: { [string | number]: boolean };\n _bucketParts: Array<BucketPart>;\n\n constructor(styleLayer: SymbolStyleLayer) {\n this._sortAcrossTiles = styleLayer.layout.get('symbol-z-order') !== 'viewport-y' &&\n styleLayer.layout.get('symbol-sort-key').constantOr(1) !== undefined;\n\n this._currentTileIndex = 0;\n this._currentPartIndex = 0;\n this._seenCrossTileIDs = {};\n this._bucketParts = [];\n }\n\n continuePlacement(tiles: Array<Tile>, placement: Placement, showCollisionBoxes: boolean, styleLayer: StyleLayer, shouldPausePlacement: () => boolean): boolean {\n const bucketParts = this._bucketParts;\n\n while (this._currentTileIndex < tiles.length) {\n const tile = tiles[this._currentTileIndex];\n placement.getBucketParts(bucketParts, styleLayer, tile, this._sortAcrossTiles);\n\n this._currentTileIndex++;\n if (shouldPausePlacement()) {\n return true;\n }\n }\n\n if (this._sortAcrossTiles) {\n this._sortAcrossTiles = false;\n bucketParts.sort((a, b) => ((a.sortKey: any): number) - ((b.sortKey: any): number));\n }\n\n while (this._currentPartIndex < bucketParts.length) {\n const bucketPart = bucketParts[this._currentPartIndex];\n placement.placeLayerBucketPart(bucketPart, this._seenCrossTileIDs, showCollisionBoxes, bucketPart.symbolInstanceStart === 0);\n this._currentPartIndex++;\n if (shouldPausePlacement()) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass PauseablePlacement {\n placement: Placement;\n _done: boolean;\n _currentPlacementIndex: number;\n _forceFullPlacement: boolean;\n _showCollisionBoxes: boolean;\n _inProgressLayer: ?LayerPlacement;\n\n constructor(transform: Transform, order: Array<string>,\n forceFullPlacement: boolean,\n showCollisionBoxes: boolean,\n fadeDuration: number,\n crossSourceCollisions: boolean,\n prevPlacement?: Placement,\n fogState: ?FogState) {\n\n this.placement = new Placement(transform, fadeDuration, crossSourceCollisions, prevPlacement, fogState);\n this._currentPlacementIndex = order.length - 1;\n this._forceFullPlacement = forceFullPlacement;\n this._showCollisionBoxes = showCollisionBoxes;\n this._done = false;\n }\n\n isDone(): boolean {\n return this._done;\n }\n\n continuePlacement(order: Array<string>, layers: {[_: string]: StyleLayer}, layerTiles: {[_: string]: Array<Tile>}) {\n const startTime = browser.now();\n\n const shouldPausePlacement = () => {\n const elapsedTime = browser.now() - startTime;\n return this._forceFullPlacement ? false : elapsedTime > 2;\n };\n\n while (this._currentPlacementIndex >= 0) {\n const layerId = order[this._currentPlacementIndex];\n const layer = layers[layerId];\n const placementZoom = this.placement.collisionIndex.transform.zoom;\n if (layer.type === 'symbol' &&\n (!layer.minzoom || layer.minzoom <= placementZoom) &&\n (!layer.maxzoom || layer.maxzoom > placementZoom)) {\n\n if (!this._inProgressLayer) {\n this._inProgressLayer = new LayerPlacement(((layer: any): SymbolStyleLayer));\n }\n\n const pausePlacement = this._inProgressLayer.continuePlacement(layerTiles[layer.source], this.placement, this._showCollisionBoxes, layer, shouldPausePlacement);\n\n if (pausePlacement) {\n PerformanceUtils.recordPlacementTime(browser.now() - startTime);\n // We didn't finish placing all layers within 2ms,\n // but we can keep rendering with a partial placement\n // We'll resume here on the next frame\n return;\n }\n\n delete this._inProgressLayer;\n }\n\n this._currentPlacementIndex--;\n }\n PerformanceUtils.recordPlacementTime(browser.now() - startTime);\n this._done = true;\n }\n\n commit(now: number): Placement {\n this.placement.commit(now);\n return this.placement;\n }\n}\n\nexport default PauseablePlacement;\n","// @flow\n\nimport EXTENT from '../data/extent.js';\n\nimport {SymbolInstanceArray} from '../data/array_types.js';\nimport type Projection from '../geo/projection/projection.js';\nimport type {SymbolInstance} from '../data/array_types.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport type SymbolBucket from '../data/bucket/symbol_bucket.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type Tile from '../source/tile.js';\n\n/*\n The CrossTileSymbolIndex generally works on the assumption that\n a conceptual \"unique symbol\" can be identified by the text of\n the label combined with the anchor point. The goal is to assign\n these conceptual \"unique symbols\" a shared crossTileID that can be\n used by Placement to keep fading opacity states consistent and to\n deduplicate labels.\n\n The CrossTileSymbolIndex indexes all the current symbol instances and\n their crossTileIDs. When a symbol bucket gets added or updated, the\n index assigns a crossTileID to each of it's symbol instances by either\n matching it with an existing id or assigning a new one.\n*/\n\n// Round anchor positions to roughly 4 pixel grid\nconst roundingFactor = 512 / EXTENT / 2;\n\nclass TileLayerIndex {\n tileID: OverscaledTileID;\n indexedSymbolInstances: {[_: number]: Array<{\n crossTileID: number,\n coord: {\n x: number,\n y: number\n }\n }>};\n bucketInstanceId: number;\n\n constructor(tileID: OverscaledTileID, symbolInstances: SymbolInstanceArray, bucketInstanceId: number) {\n this.tileID = tileID;\n this.indexedSymbolInstances = {};\n this.bucketInstanceId = bucketInstanceId;\n\n for (let i = 0; i < symbolInstances.length; i++) {\n const symbolInstance = symbolInstances.get(i);\n const key = symbolInstance.key;\n if (!this.indexedSymbolInstances[key]) {\n this.indexedSymbolInstances[key] = [];\n }\n // This tile may have multiple symbol instances with the same key\n // Store each one along with its coordinates\n this.indexedSymbolInstances[key].push({\n crossTileID: symbolInstance.crossTileID,\n coord: this.getScaledCoordinates(symbolInstance, tileID)\n });\n }\n }\n\n // Converts the coordinates of the input symbol instance into coordinates that be can compared\n // against other symbols in this index. Coordinates are:\n // (1) world-based (so after conversion the source tile is irrelevant)\n // (2) converted to the z-scale of this TileLayerIndex\n // (3) down-sampled by \"roundingFactor\" from tile coordinate precision in order to be\n // more tolerant of small differences between tiles.\n getScaledCoordinates(symbolInstance: SymbolInstance, childTileID: OverscaledTileID): {|x: number, y: number|} {\n const zDifference = childTileID.canonical.z - this.tileID.canonical.z;\n const scale = roundingFactor / Math.pow(2, zDifference);\n return {\n x: Math.floor((childTileID.canonical.x * EXTENT + symbolInstance.tileAnchorX) * scale),\n y: Math.floor((childTileID.canonical.y * EXTENT + symbolInstance.tileAnchorY) * scale)\n };\n }\n\n findMatches(symbolInstances: SymbolInstanceArray, newTileID: OverscaledTileID, zoomCrossTileIDs: {[crossTileID: number]: boolean}) {\n const tolerance = this.tileID.canonical.z < newTileID.canonical.z ? 1 : Math.pow(2, this.tileID.canonical.z - newTileID.canonical.z);\n\n for (let i = 0; i < symbolInstances.length; i++) {\n const symbolInstance = symbolInstances.get(i);\n if (symbolInstance.crossTileID) {\n // already has a match, skip\n continue;\n }\n\n const indexedInstances = this.indexedSymbolInstances[symbolInstance.key];\n if (!indexedInstances) {\n // No symbol with this key in this bucket\n continue;\n }\n\n const scaledSymbolCoord = this.getScaledCoordinates(symbolInstance, newTileID);\n\n for (const thisTileSymbol of indexedInstances) {\n // Return any symbol with the same keys whose coordinates are within 1\n // grid unit. (with a 4px grid, this covers a 12px by 12px area)\n if (Math.abs(thisTileSymbol.coord.x - scaledSymbolCoord.x) <= tolerance &&\n Math.abs(thisTileSymbol.coord.y - scaledSymbolCoord.y) <= tolerance &&\n !zoomCrossTileIDs[thisTileSymbol.crossTileID]) {\n // Once we've marked ourselves duplicate against this parent symbol,\n // don't let any other symbols at the same zoom level duplicate against\n // the same parent (see issue #5993)\n zoomCrossTileIDs[thisTileSymbol.crossTileID] = true;\n symbolInstance.crossTileID = thisTileSymbol.crossTileID;\n break;\n }\n }\n }\n }\n}\n\nclass CrossTileIDs {\n maxCrossTileID: number;\n constructor() {\n this.maxCrossTileID = 0;\n }\n generate(): number {\n return ++this.maxCrossTileID;\n }\n}\n\nclass CrossTileSymbolLayerIndex {\n indexes: {[zoom: string | number]: {[tileId: string | number]: TileLayerIndex}};\n usedCrossTileIDs: {[zoom: string | number]: {[crossTileID: number]: boolean}};\n lng: number;\n\n constructor() {\n this.indexes = {};\n this.usedCrossTileIDs = {};\n this.lng = 0;\n }\n\n /*\n * Sometimes when a user pans across the antimeridian the longitude value gets wrapped.\n * To prevent labels from flashing out and in we adjust the tileID values in the indexes\n * so that they match the new wrapped version of the map.\n */\n handleWrapJump(lng: number) {\n const wrapDelta = Math.round((lng - this.lng) / 360);\n if (wrapDelta !== 0) {\n for (const zoom in this.indexes) {\n const zoomIndexes = this.indexes[zoom];\n const newZoomIndex = {};\n for (const key in zoomIndexes) {\n // change the tileID's wrap and add it to a new index\n const index = zoomIndexes[key];\n index.tileID = index.tileID.unwrapTo(index.tileID.wrap + wrapDelta);\n newZoomIndex[index.tileID.key] = index;\n }\n this.indexes[zoom] = newZoomIndex;\n }\n }\n this.lng = lng;\n }\n\n addBucket(tileID: OverscaledTileID, bucket: SymbolBucket, crossTileIDs: CrossTileIDs): boolean {\n if (this.indexes[tileID.overscaledZ] &&\n this.indexes[tileID.overscaledZ][tileID.key]) {\n if (this.indexes[tileID.overscaledZ][tileID.key].bucketInstanceId ===\n bucket.bucketInstanceId) {\n return false;\n } else {\n // We're replacing this bucket with an updated version\n // Remove the old bucket's \"used crossTileIDs\" now so that\n // the new bucket can claim them.\n // The old index entries themselves stick around until\n // 'removeStaleBuckets' is called.\n this.removeBucketCrossTileIDs(tileID.overscaledZ,\n this.indexes[tileID.overscaledZ][tileID.key]);\n }\n }\n\n for (let i = 0; i < bucket.symbolInstances.length; i++) {\n const symbolInstance = bucket.symbolInstances.get(i);\n symbolInstance.crossTileID = 0;\n }\n\n if (!this.usedCrossTileIDs[tileID.overscaledZ]) {\n this.usedCrossTileIDs[tileID.overscaledZ] = {};\n }\n const zoomCrossTileIDs = this.usedCrossTileIDs[tileID.overscaledZ];\n\n for (const zoom in this.indexes) {\n const zoomIndexes = this.indexes[zoom];\n if (Number(zoom) > tileID.overscaledZ) {\n for (const id in zoomIndexes) {\n const childIndex = zoomIndexes[id];\n if (childIndex.tileID.isChildOf(tileID)) {\n childIndex.findMatches(bucket.symbolInstances, tileID, zoomCrossTileIDs);\n }\n }\n } else {\n const parentCoord = tileID.scaledTo(Number(zoom));\n const parentIndex = zoomIndexes[parentCoord.key];\n if (parentIndex) {\n parentIndex.findMatches(bucket.symbolInstances, tileID, zoomCrossTileIDs);\n }\n }\n }\n\n for (let i = 0; i < bucket.symbolInstances.length; i++) {\n const symbolInstance = bucket.symbolInstances.get(i);\n if (!symbolInstance.crossTileID) {\n // symbol did not match any known symbol, assign a new id\n symbolInstance.crossTileID = crossTileIDs.generate();\n zoomCrossTileIDs[symbolInstance.crossTileID] = true;\n }\n }\n\n if (this.indexes[tileID.overscaledZ] === undefined) {\n this.indexes[tileID.overscaledZ] = {};\n }\n this.indexes[tileID.overscaledZ][tileID.key] = new TileLayerIndex(tileID, bucket.symbolInstances, bucket.bucketInstanceId);\n\n return true;\n }\n\n removeBucketCrossTileIDs(zoom: string | number, removedBucket: TileLayerIndex) {\n for (const key in removedBucket.indexedSymbolInstances) {\n for (const symbolInstance of removedBucket.indexedSymbolInstances[(key: any)]) {\n delete this.usedCrossTileIDs[zoom][symbolInstance.crossTileID];\n }\n }\n }\n\n removeStaleBuckets(currentIDs: { [string | number]: boolean }): boolean {\n let tilesChanged = false;\n for (const z in this.indexes) {\n const zoomIndexes = this.indexes[z];\n for (const tileKey in zoomIndexes) {\n if (!currentIDs[zoomIndexes[tileKey].bucketInstanceId]) {\n this.removeBucketCrossTileIDs(z, zoomIndexes[tileKey]);\n delete zoomIndexes[tileKey];\n tilesChanged = true;\n }\n }\n }\n return tilesChanged;\n }\n}\n\nclass CrossTileSymbolIndex {\n layerIndexes: {[layerId: string]: CrossTileSymbolLayerIndex};\n crossTileIDs: CrossTileIDs;\n maxBucketInstanceId: number;\n bucketsInCurrentPlacement: {[_: number]: boolean};\n\n constructor() {\n this.layerIndexes = {};\n this.crossTileIDs = new CrossTileIDs();\n this.maxBucketInstanceId = 0;\n this.bucketsInCurrentPlacement = {};\n }\n\n addLayer(styleLayer: StyleLayer, tiles: Array<Tile>, lng: number, projection: Projection): boolean {\n let layerIndex = this.layerIndexes[styleLayer.id];\n if (layerIndex === undefined) {\n layerIndex = this.layerIndexes[styleLayer.id] = new CrossTileSymbolLayerIndex();\n }\n\n let symbolBucketsChanged = false;\n const currentBucketIDs = {};\n\n if (projection.name !== 'globe') {\n layerIndex.handleWrapJump(lng);\n }\n\n for (const tile of tiles) {\n const symbolBucket = ((tile.getBucket(styleLayer): any): SymbolBucket);\n if (!symbolBucket || styleLayer.id !== symbolBucket.layerIds[0])\n continue;\n\n if (!symbolBucket.bucketInstanceId) {\n symbolBucket.bucketInstanceId = ++this.maxBucketInstanceId;\n }\n\n if (layerIndex.addBucket(tile.tileID, symbolBucket, this.crossTileIDs)) {\n symbolBucketsChanged = true;\n }\n currentBucketIDs[symbolBucket.bucketInstanceId] = true;\n }\n\n if (layerIndex.removeStaleBuckets(currentBucketIDs)) {\n symbolBucketsChanged = true;\n }\n\n return symbolBucketsChanged;\n }\n\n pruneUnusedLayers(usedLayers: Array<string>) {\n const usedLayerMap = {};\n usedLayers.forEach((usedLayer) => {\n usedLayerMap[usedLayer] = true;\n });\n for (const layerId in this.layerIndexes) {\n if (!usedLayerMap[layerId]) {\n delete this.layerIndexes[layerId];\n }\n }\n }\n}\n\nexport default CrossTileSymbolIndex;\n","// @flow\n\nimport assert from 'assert';\n\nimport {Event, ErrorEvent, Evented} from '../util/evented.js';\nimport StyleLayer from './style_layer.js';\nimport createStyleLayer from './create_style_layer.js';\nimport loadSprite from './load_sprite.js';\nimport ImageManager from '../render/image_manager.js';\nimport GlyphManager, {LocalGlyphMode} from '../render/glyph_manager.js';\nimport Light from './light.js';\nimport Terrain, {DrapeRenderMode} from './terrain.js';\nimport Fog from './fog.js';\nimport LineAtlas from '../render/line_atlas.js';\nimport {pick, clone, extend, deepEqual, filterObject} from '../util/util.js';\nimport {getJSON, getReferrer, makeRequest, ResourceType} from '../util/ajax.js';\nimport {isMapboxURL} from '../util/mapbox.js';\nimport browser from '../util/browser.js';\nimport Dispatcher from '../util/dispatcher.js';\nimport {\n validateStyle,\n validateSource,\n validateLayer,\n validateFilter,\n validateTerrain,\n emitValidationErrors as _emitValidationErrors\n} from './validate_style.js';\nimport {QueryGeometry} from '../style/query_geometry.js';\nimport {\n create as createSource,\n getType as getSourceType,\n setType as setSourceType,\n type SourceClass\n} from '../source/source.js';\nimport {queryRenderedFeatures, queryRenderedSymbols, querySourceFeatures} from '../source/query_features.js';\nimport SourceCache from '../source/source_cache.js';\nimport GeoJSONSource from '../source/geojson_source.js';\nimport styleSpec from '../style-spec/reference/latest.js';\nimport getWorkerPool from '../util/global_worker_pool.js';\nimport deref from '../style-spec/deref.js';\nimport emptyStyle from '../style-spec/empty.js';\nimport diffStyles, {operations as diffOperations} from '../style-spec/diff.js';\nimport {\n registerForPluginStateChange,\n evented as rtlTextPluginEvented,\n triggerPluginCompletionEvent\n} from '../source/rtl_text_plugin.js';\nimport PauseablePlacement from './pauseable_placement.js';\nimport ZoomHistory from './zoom_history.js';\nimport CrossTileSymbolIndex from '../symbol/cross_tile_symbol_index.js';\nimport {validateCustomStyleLayer} from './style_layer/custom_style_layer.js';\n\n// We're skipping validation errors with the `source.canvas` identifier in order\n// to continue to allow canvas sources to be added at runtime/updated in\n// smart setStyle (see https://github.com/mapbox/mapbox-gl-js/pull/6424):\nconst emitValidationErrors = (evented: Evented, errors: ?ValidationErrors) =>\n _emitValidationErrors(evented, errors && errors.filter(error => error.identifier !== 'source.canvas'));\n\nimport type Map from '../ui/map.js';\nimport type Transform from '../geo/transform.js';\nimport type {StyleImage} from './style_image.js';\nimport type {StyleGlyph} from './style_glyph.js';\nimport type {Callback} from '../types/callback.js';\nimport type EvaluationParameters from './evaluation_parameters.js';\nimport type {Placement} from '../symbol/placement.js';\nimport type {Cancelable} from '../types/cancelable.js';\nimport type {RequestParameters, ResponseCallback} from '../util/ajax.js';\nimport type {GeoJSON} from '@mapbox/geojson-types';\nimport type {\n LayerSpecification,\n FilterSpecification,\n StyleSpecification,\n LightSpecification,\n SourceSpecification,\n TerrainSpecification,\n FogSpecification,\n ProjectionSpecification,\n TransitionSpecification,\n PropertyValueSpecification\n} from '../style-spec/types.js';\nimport type {CustomLayerInterface} from './style_layer/custom_style_layer.js';\nimport type {Validator, ValidationErrors} from './validate_style.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport type {QueryResult} from '../data/feature_index.js';\nimport type {QueryFeature} from '../util/vectortile_to_geojson.js';\nimport type {FeatureStates} from '../source/source_state.js';\nimport type {PointLike} from '@mapbox/point-geometry';\nimport type {Source} from '../source/source.js';\nimport type {TransitionParameters} from './properties.js';\n\nconst supportedDiffOperations = pick(diffOperations, [\n 'addLayer',\n 'removeLayer',\n 'setPaintProperty',\n 'setLayoutProperty',\n 'setFilter',\n 'addSource',\n 'removeSource',\n 'setLayerZoomRange',\n 'setLight',\n 'setTransition',\n 'setGeoJSONSourceData',\n 'setTerrain',\n 'setFog',\n 'setProjection'\n // 'setGlyphs',\n // 'setSprite',\n]);\n\nconst ignoredDiffOperations = pick(diffOperations, [\n 'setCenter',\n 'setZoom',\n 'setBearing',\n 'setPitch'\n]);\n\nconst empty = emptyStyle();\n\nexport type StyleOptions = {\n validate?: boolean,\n localFontFamily?: string,\n localIdeographFontFamily?: string\n};\n\nexport type StyleSetterOptions = {\n validate?: boolean\n};\n\n// Symbols are draped only for specific cases: see isLayerDraped\nconst drapedLayers = {'fill': true, 'line': true, 'background': true, \"hillshade\": true, \"raster\": true};\n\n/**\n * @private\n */\nclass Style extends Evented {\n map: Map;\n stylesheet: StyleSpecification;\n dispatcher: Dispatcher;\n imageManager: ImageManager;\n glyphManager: GlyphManager;\n lineAtlas: LineAtlas;\n light: Light;\n terrain: ?Terrain;\n fog: ?Fog;\n\n _request: ?Cancelable;\n _spriteRequest: ?Cancelable;\n _layers: {[_: string]: StyleLayer};\n _num3DLayers: number;\n _numSymbolLayers: number;\n _numCircleLayers: number;\n _serializedLayers: {[_: string]: Object};\n _order: Array<string>;\n _drapedFirstOrder: Array<string>;\n _sourceCaches: {[_: string]: SourceCache};\n _otherSourceCaches: {[_: string]: SourceCache};\n _symbolSourceCaches: {[_: string]: SourceCache};\n zoomHistory: ZoomHistory;\n _loaded: boolean;\n _rtlTextPluginCallback: Function;\n _changed: boolean;\n _updatedSources: {[_: string]: 'clear' | 'reload'};\n _updatedLayers: {[_: string]: true};\n _removedLayers: {[_: string]: StyleLayer};\n _changedImages: {[_: string]: true};\n _updatedPaintProps: {[layer: string]: true};\n _layerOrderChanged: boolean;\n _availableImages: Array<string>;\n _markersNeedUpdate: boolean;\n\n crossTileSymbolIndex: CrossTileSymbolIndex;\n pauseablePlacement: PauseablePlacement;\n placement: Placement;\n z: number;\n\n // exposed to allow stubbing by unit tests\n static getSourceType: typeof getSourceType;\n static setSourceType: typeof setSourceType;\n static registerForPluginStateChange: typeof registerForPluginStateChange;\n\n constructor(map: Map, options: StyleOptions = {}) {\n super();\n\n this.map = map;\n this.dispatcher = new Dispatcher(getWorkerPool(), this);\n this.imageManager = new ImageManager();\n this.imageManager.setEventedParent(this);\n this.glyphManager = new GlyphManager(map._requestManager,\n options.localFontFamily ?\n LocalGlyphMode.all :\n (options.localIdeographFontFamily ? LocalGlyphMode.ideographs : LocalGlyphMode.none),\n options.localFontFamily || options.localIdeographFontFamily);\n this.lineAtlas = new LineAtlas(256, 512);\n this.crossTileSymbolIndex = new CrossTileSymbolIndex();\n\n this._layers = {};\n this._num3DLayers = 0;\n this._numSymbolLayers = 0;\n this._numCircleLayers = 0;\n this._serializedLayers = {};\n this._sourceCaches = {};\n this._otherSourceCaches = {};\n this._symbolSourceCaches = {};\n this.zoomHistory = new ZoomHistory();\n this._loaded = false;\n this._availableImages = [];\n this._order = [];\n this._drapedFirstOrder = [];\n this._markersNeedUpdate = false;\n\n this._resetUpdates();\n\n this.dispatcher.broadcast('setReferrer', getReferrer());\n\n const self = this;\n this._rtlTextPluginCallback = Style.registerForPluginStateChange((event) => {\n const state = {\n pluginStatus: event.pluginStatus,\n pluginURL: event.pluginURL\n };\n self.dispatcher.broadcast('syncRTLPluginState', state, (err, results) => {\n triggerPluginCompletionEvent(err);\n if (results) {\n const allComplete = results.every((elem) => elem);\n if (allComplete) {\n for (const id in self._sourceCaches) {\n const sourceCache = self._sourceCaches[id];\n const sourceCacheType = sourceCache.getSource().type;\n if (sourceCacheType === 'vector' || sourceCacheType === 'geojson') {\n sourceCache.reload(); // Should be a no-op if the plugin loads before any tiles load\n }\n }\n }\n }\n\n });\n });\n\n this.on('data', (event) => {\n if (event.dataType !== 'source' || event.sourceDataType !== 'metadata') {\n return;\n }\n\n const source = this.getSource(event.sourceId);\n if (!source || !source.vectorLayerIds) {\n return;\n }\n\n for (const layerId in this._layers) {\n const layer = this._layers[layerId];\n if (layer.source === source.id) {\n this._validateLayer(layer);\n }\n }\n });\n }\n\n loadURL(url: string, options: {\n validate?: boolean,\n accessToken?: string\n } = {}) {\n this.fire(new Event('dataloading', {dataType: 'style'}));\n\n const validate = typeof options.validate === 'boolean' ?\n options.validate : !isMapboxURL(url);\n\n url = this.map._requestManager.normalizeStyleURL(url, options.accessToken);\n const request = this.map._requestManager.transformRequest(url, ResourceType.Style);\n this._request = getJSON(request, (error: ?Error, json: ?Object) => {\n this._request = null;\n if (error) {\n this.fire(new ErrorEvent(error));\n } else if (json) {\n this._load(json, validate);\n }\n });\n }\n\n loadJSON(json: StyleSpecification, options: StyleSetterOptions = {}) {\n this.fire(new Event('dataloading', {dataType: 'style'}));\n\n this._request = browser.frame(() => {\n this._request = null;\n this._load(json, options.validate !== false);\n });\n }\n\n loadEmpty() {\n this.fire(new Event('dataloading', {dataType: 'style'}));\n this._load(empty, false);\n }\n\n _updateLayerCount(layer: StyleLayer, add: boolean) {\n // Typed layer bookkeeping\n const count = add ? 1 : -1;\n if (layer.is3D()) {\n this._num3DLayers += count;\n }\n if (layer.type === 'circle') {\n this._numCircleLayers += count;\n }\n if (layer.type === 'symbol') {\n this._numSymbolLayers += count;\n }\n }\n\n _load(json: StyleSpecification, validate: boolean) {\n if (validate && emitValidationErrors(this, validateStyle(json))) {\n return;\n }\n\n this._loaded = true;\n this.stylesheet = clone(json);\n this._updateMapProjection();\n\n for (const id in json.sources) {\n this.addSource(id, json.sources[id], {validate: false});\n }\n this._changed = false; // avoid triggering redundant style update after adding initial sources\n if (json.sprite) {\n this._loadSprite(json.sprite);\n } else {\n this.imageManager.setLoaded(true);\n this.dispatcher.broadcast('spriteLoaded', true);\n }\n\n this.glyphManager.setURL(json.glyphs);\n\n const layers = deref(this.stylesheet.layers);\n\n this._order = layers.map((layer) => layer.id);\n\n this._layers = {};\n this._serializedLayers = {};\n for (let layer of layers) {\n layer = createStyleLayer(layer);\n layer.setEventedParent(this, {layer: {id: layer.id}});\n this._layers[layer.id] = layer;\n this._serializedLayers[layer.id] = layer.serialize();\n this._updateLayerCount(layer, true);\n }\n\n this.dispatcher.broadcast('setLayers', this._serializeLayers(this._order));\n\n this.light = new Light(this.stylesheet.light);\n if (this.stylesheet.terrain && !this.terrainSetForDrapingOnly()) {\n this._createTerrain(this.stylesheet.terrain, DrapeRenderMode.elevated);\n }\n if (this.stylesheet.fog) {\n this._createFog(this.stylesheet.fog);\n }\n this._updateDrapeFirstLayers();\n\n this.fire(new Event('data', {dataType: 'style'}));\n this.fire(new Event('style.load'));\n }\n\n terrainSetForDrapingOnly(): boolean {\n return !!this.terrain && this.terrain.drapeRenderMode === DrapeRenderMode.deferred;\n }\n\n setProjection(projection?: ?ProjectionSpecification) {\n if (projection) {\n this.stylesheet.projection = projection;\n } else {\n delete this.stylesheet.projection;\n }\n if (!this.map._explicitProjection) {\n this.map._updateProjection();\n }\n }\n\n _updateMapProjection() {\n if (!this.map._explicitProjection) { // Update the visible projection if map's is null\n this.map._updateProjection();\n } else { // Ensure that style is consistent with current projection on style load\n this.applyProjectionUpdate();\n }\n }\n\n applyProjectionUpdate() {\n if (!this._loaded) return;\n this.dispatcher.broadcast('setProjection', this.map.transform.projectionOptions);\n\n if (this.map.transform.projection.requiresDraping) {\n const hasTerrain = this.getTerrain() || this.stylesheet.terrain;\n if (!hasTerrain) {\n this.setTerrainForDraping();\n }\n } else if (this.terrainSetForDrapingOnly()) {\n this.setTerrain(null);\n }\n }\n\n _loadSprite(url: string) {\n this._spriteRequest = loadSprite(url, this.map._requestManager, (err, images) => {\n this._spriteRequest = null;\n if (err) {\n this.fire(new ErrorEvent(err));\n } else if (images) {\n for (const id in images) {\n this.imageManager.addImage(id, images[id]);\n }\n }\n\n this.imageManager.setLoaded(true);\n this._availableImages = this.imageManager.listImages();\n this.dispatcher.broadcast('setImages', this._availableImages);\n this.dispatcher.broadcast('spriteLoaded', true);\n this.fire(new Event('data', {dataType: 'style'}));\n });\n }\n\n _validateLayer(layer: StyleLayer) {\n const source = this.getSource(layer.source);\n if (!source) {\n return;\n }\n\n const sourceLayer = layer.sourceLayer;\n if (!sourceLayer) {\n return;\n }\n\n if (source.type === 'geojson' || (source.vectorLayerIds && source.vectorLayerIds.indexOf(sourceLayer) === -1)) {\n this.fire(new ErrorEvent(new Error(\n `Source layer \"${sourceLayer}\" ` +\n `does not exist on source \"${source.id}\" ` +\n `as specified by style layer \"${layer.id}\"`\n )));\n }\n }\n\n loaded(): boolean {\n if (!this._loaded)\n return false;\n\n if (Object.keys(this._updatedSources).length)\n return false;\n\n for (const id in this._sourceCaches)\n if (!this._sourceCaches[id].loaded())\n return false;\n\n if (!this.imageManager.isLoaded())\n return false;\n\n return true;\n }\n\n _serializeLayers(ids: Array<string>): Array<Object> {\n const serializedLayers = [];\n for (const id of ids) {\n const layer = this._layers[id];\n if (layer.type !== 'custom') {\n serializedLayers.push(layer.serialize());\n }\n }\n return serializedLayers;\n }\n\n hasTransitions(): boolean {\n if (this.light && this.light.hasTransition()) {\n return true;\n }\n\n if (this.fog && this.fog.hasTransition()) {\n return true;\n }\n\n for (const id in this._sourceCaches) {\n if (this._sourceCaches[id].hasTransition()) {\n return true;\n }\n }\n\n for (const id in this._layers) {\n if (this._layers[id].hasTransition()) {\n return true;\n }\n }\n\n return false;\n }\n\n get order(): Array<string> {\n if (this.map._optimizeForTerrain && this.terrain) {\n assert(this._drapedFirstOrder.length === this._order.length);\n return this._drapedFirstOrder;\n }\n return this._order;\n }\n\n isLayerDraped(layer: StyleLayer): boolean {\n if (!this.terrain) return false;\n return drapedLayers[layer.type];\n }\n\n _checkLoaded() {\n if (!this._loaded) {\n throw new Error('Style is not done loading');\n }\n }\n\n /**\n * Apply queued style updates in a batch and recalculate zoom-dependent paint properties.\n * @private\n */\n update(parameters: EvaluationParameters) {\n if (!this._loaded) {\n return;\n }\n\n const changed = this._changed;\n if (this._changed) {\n const updatedIds = Object.keys(this._updatedLayers);\n const removedIds = Object.keys(this._removedLayers);\n\n if (updatedIds.length || removedIds.length) {\n this._updateWorkerLayers(updatedIds, removedIds);\n }\n for (const id in this._updatedSources) {\n const action = this._updatedSources[id];\n assert(action === 'reload' || action === 'clear');\n if (action === 'reload') {\n this._reloadSource(id);\n } else if (action === 'clear') {\n this._clearSource(id);\n }\n }\n\n this._updateTilesForChangedImages();\n\n for (const id in this._updatedPaintProps) {\n this._layers[id].updateTransitions(parameters);\n }\n\n this.light.updateTransitions(parameters);\n if (this.fog) {\n this.fog.updateTransitions(parameters);\n }\n\n this._resetUpdates();\n }\n\n const sourcesUsedBefore = {};\n\n for (const sourceId in this._sourceCaches) {\n const sourceCache = this._sourceCaches[sourceId];\n sourcesUsedBefore[sourceId] = sourceCache.used;\n sourceCache.used = false;\n }\n\n for (const layerId of this._order) {\n const layer = this._layers[layerId];\n\n layer.recalculate(parameters, this._availableImages);\n if (!layer.isHidden(parameters.zoom)) {\n const sourceCache = this._getLayerSourceCache(layer);\n if (sourceCache) sourceCache.used = true;\n }\n\n const painter = this.map.painter;\n if (painter) {\n const programIds = layer.getProgramIds();\n if (!programIds) continue;\n\n const programConfiguration = layer.getProgramConfiguration(parameters.zoom);\n\n for (const programId of programIds) {\n painter.useProgram(programId, programConfiguration);\n }\n }\n }\n\n for (const sourceId in sourcesUsedBefore) {\n const sourceCache = this._sourceCaches[sourceId];\n if (sourcesUsedBefore[sourceId] !== sourceCache.used) {\n sourceCache.getSource().fire(new Event('data', {sourceDataType: 'visibility', dataType:'source', sourceId: sourceCache.getSource().id}));\n }\n }\n\n this.light.recalculate(parameters);\n if (this.terrain) {\n this.terrain.recalculate(parameters);\n }\n if (this.fog) {\n this.fog.recalculate(parameters);\n }\n this.z = parameters.zoom;\n\n if (this._markersNeedUpdate) {\n this._updateMarkersOpacity();\n this._markersNeedUpdate = false;\n }\n\n if (changed) {\n this.fire(new Event('data', {dataType: 'style'}));\n }\n }\n\n /*\n * Apply any queued image changes.\n */\n _updateTilesForChangedImages() {\n const changedImages = Object.keys(this._changedImages);\n if (changedImages.length) {\n for (const name in this._sourceCaches) {\n this._sourceCaches[name].reloadTilesForDependencies(['icons', 'patterns'], changedImages);\n }\n this._changedImages = {};\n }\n }\n\n _updateWorkerLayers(updatedIds: Array<string>, removedIds: Array<string>) {\n this.dispatcher.broadcast('updateLayers', {\n layers: this._serializeLayers(updatedIds),\n removedIds\n });\n }\n\n _resetUpdates() {\n this._changed = false;\n\n this._updatedLayers = {};\n this._removedLayers = {};\n\n this._updatedSources = {};\n this._updatedPaintProps = {};\n\n this._changedImages = {};\n }\n\n /**\n * Update this style's state to match the given style JSON, performing only\n * the necessary mutations.\n *\n * May throw an Error ('Unimplemented: METHOD') if the mapbox-gl-style-spec\n * diff algorithm produces an operation that is not supported.\n *\n * @returns {boolean} true if any changes were made; false otherwise\n * @private\n */\n setState(nextState: StyleSpecification): boolean {\n this._checkLoaded();\n\n if (emitValidationErrors(this, validateStyle(nextState))) return false;\n\n nextState = clone(nextState);\n nextState.layers = deref(nextState.layers);\n\n const changes = diffStyles(this.serialize(), nextState)\n .filter(op => !(op.command in ignoredDiffOperations));\n\n if (changes.length === 0) {\n return false;\n }\n\n const unimplementedOps = changes.filter(op => !(op.command in supportedDiffOperations));\n if (unimplementedOps.length > 0) {\n throw new Error(`Unimplemented: ${unimplementedOps.map(op => op.command).join(', ')}.`);\n }\n\n changes.forEach((op) => {\n if (op.command === 'setTransition') {\n // `transition` is always read directly off of\n // `this.stylesheet`, which we update below\n return;\n }\n (this: any)[op.command].apply(this, op.args);\n });\n\n this.stylesheet = nextState;\n this._updateMapProjection();\n\n return true;\n }\n\n addImage(id: string, image: StyleImage): this {\n if (this.getImage(id)) {\n return this.fire(new ErrorEvent(new Error('An image with this name already exists.')));\n }\n this.imageManager.addImage(id, image);\n this._afterImageUpdated(id);\n return this;\n }\n\n updateImage(id: string, image: StyleImage) {\n this.imageManager.updateImage(id, image);\n }\n\n getImage(id: string): ?StyleImage {\n return this.imageManager.getImage(id);\n }\n\n removeImage(id: string): this {\n if (!this.getImage(id)) {\n return this.fire(new ErrorEvent(new Error('No image with this name exists.')));\n }\n this.imageManager.removeImage(id);\n this._afterImageUpdated(id);\n return this;\n }\n\n _afterImageUpdated(id: string) {\n this._availableImages = this.imageManager.listImages();\n this._changedImages[id] = true;\n this._changed = true;\n this.dispatcher.broadcast('setImages', this._availableImages);\n this.fire(new Event('data', {dataType: 'style'}));\n }\n\n listImages(): Array<string> {\n this._checkLoaded();\n return this._availableImages.slice();\n }\n\n addSource(id: string, source: SourceSpecification, options: StyleSetterOptions = {}) {\n this._checkLoaded();\n\n if (this.getSource(id) !== undefined) {\n throw new Error('There is already a source with this ID');\n }\n\n if (!source.type) {\n throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(source).join(', ')}.`);\n }\n\n const builtIns = ['vector', 'raster', 'geojson', 'video', 'image'];\n const shouldValidate = builtIns.indexOf(source.type) >= 0;\n if (shouldValidate && this._validate(validateSource, `sources.${id}`, source, null, options)) return;\n\n if (this.map && this.map._collectResourceTiming) (source: any).collectResourceTiming = true;\n\n const sourceInstance = createSource(id, source, this.dispatcher, this);\n\n sourceInstance.setEventedParent(this, () => ({\n isSourceLoaded: this._isSourceCacheLoaded(id),\n source: sourceInstance.serialize(),\n sourceId: id\n }));\n\n const addSourceCache = (onlySymbols) => {\n const sourceCacheId = (onlySymbols ? 'symbol:' : 'other:') + id;\n const sourceCache = this._sourceCaches[sourceCacheId] = new SourceCache(sourceCacheId, sourceInstance, onlySymbols);\n (onlySymbols ? this._symbolSourceCaches : this._otherSourceCaches)[id] = sourceCache;\n sourceCache.style = this;\n\n sourceCache.onAdd(this.map);\n };\n\n addSourceCache(false);\n if (source.type === 'vector' || source.type === 'geojson') {\n addSourceCache(true);\n }\n\n if (sourceInstance.onAdd) sourceInstance.onAdd(this.map);\n\n this._changed = true;\n }\n\n /**\n * Remove a source from this stylesheet, given its ID.\n * @param {string} id ID of the source to remove.\n * @throws {Error} If no source is found with the given ID.\n * @returns {Map} The {@link Map} object.\n */\n removeSource(id: string): this {\n this._checkLoaded();\n\n const source = this.getSource(id);\n if (!source) {\n throw new Error('There is no source with this ID');\n }\n for (const layerId in this._layers) {\n if (this._layers[layerId].source === id) {\n return this.fire(new ErrorEvent(new Error(`Source \"${id}\" cannot be removed while layer \"${layerId}\" is using it.`)));\n }\n }\n if (this.terrain && this.terrain.get().source === id) {\n return this.fire(new ErrorEvent(new Error(`Source \"${id}\" cannot be removed while terrain is using it.`)));\n }\n\n const sourceCaches = this._getSourceCaches(id);\n for (const sourceCache of sourceCaches) {\n delete this._sourceCaches[sourceCache.id];\n delete this._updatedSources[sourceCache.id];\n sourceCache.fire(new Event('data', {sourceDataType: 'metadata', dataType:'source', sourceId: sourceCache.getSource().id}));\n sourceCache.setEventedParent(null);\n sourceCache.clearTiles();\n }\n delete this._otherSourceCaches[id];\n delete this._symbolSourceCaches[id];\n\n source.setEventedParent(null);\n if (source.onRemove) {\n source.onRemove(this.map);\n }\n this._changed = true;\n return this;\n }\n\n /**\n * Set the data of a GeoJSON source, given its ID.\n * @param {string} id ID of the source.\n * @param {GeoJSON|string} data GeoJSON source.\n */\n setGeoJSONSourceData(id: string, data: GeoJSON | string) {\n this._checkLoaded();\n\n assert(this.getSource(id) !== undefined, 'There is no source with this ID');\n const geojsonSource: GeoJSONSource = (this.getSource(id): any);\n assert(geojsonSource.type === 'geojson');\n\n geojsonSource.setData(data);\n this._changed = true;\n }\n\n /**\n * Get a source by ID.\n * @param {string} id ID of the desired source.\n * @returns {?Source} The source object.\n */\n getSource(id: string): ?Source {\n const sourceCache = this._getSourceCache(id);\n return sourceCache && sourceCache.getSource();\n }\n\n /**\n * Add a layer to the map style. The layer will be inserted before the layer with\n * ID `before`, or appended if `before` is omitted.\n * @param {Object | CustomLayerInterface} layerObject The style layer to add.\n * @param {string} [before] ID of an existing layer to insert before.\n * @param {Object} options Style setter options.\n * @returns {Map} The {@link Map} object.\n */\n addLayer(layerObject: LayerSpecification | CustomLayerInterface, before?: string, options: StyleSetterOptions = {}) {\n this._checkLoaded();\n\n const id = layerObject.id;\n\n if (this.getLayer(id)) {\n this.fire(new ErrorEvent(new Error(`Layer with id \"${id}\" already exists on this map`)));\n return;\n }\n\n let layer;\n if (layerObject.type === 'custom') {\n\n if (emitValidationErrors(this, validateCustomStyleLayer(layerObject))) return;\n\n layer = createStyleLayer(layerObject);\n\n } else {\n if (typeof layerObject.source === 'object') {\n this.addSource(id, layerObject.source);\n layerObject = clone(layerObject);\n layerObject = (extend(layerObject, {source: id}): any);\n }\n\n // this layer is not in the style.layers array, so we pass an impossible array index\n if (this._validate(validateLayer,\n `layers.${id}`, layerObject, {arrayIndex: -1}, options)) return;\n\n layer = createStyleLayer(layerObject);\n this._validateLayer(layer);\n\n layer.setEventedParent(this, {layer: {id}});\n this._serializedLayers[layer.id] = layer.serialize();\n this._updateLayerCount(layer, true);\n }\n\n const index = before ? this._order.indexOf(before) : this._order.length;\n if (before && index === -1) {\n this.fire(new ErrorEvent(new Error(`Layer with id \"${before}\" does not exist on this map.`)));\n return;\n }\n\n this._order.splice(index, 0, id);\n this._layerOrderChanged = true;\n\n this._layers[id] = layer;\n\n const sourceCache = this._getLayerSourceCache(layer);\n if (this._removedLayers[id] && layer.source && sourceCache && layer.type !== 'custom') {\n // If, in the current batch, we have already removed this layer\n // and we are now re-adding it with a different `type`, then we\n // need to clear (rather than just reload) the underyling source's\n // tiles. Otherwise, tiles marked 'reloading' will have buckets /\n // buffers that are set up for the _previous_ version of this\n // layer, causing, e.g.:\n // https://github.com/mapbox/mapbox-gl-js/issues/3633\n const removed = this._removedLayers[id];\n delete this._removedLayers[id];\n if (removed.type !== layer.type) {\n this._updatedSources[layer.source] = 'clear';\n } else {\n this._updatedSources[layer.source] = 'reload';\n sourceCache.pause();\n }\n }\n this._updateLayer(layer);\n\n if (layer.onAdd) {\n layer.onAdd(this.map);\n }\n\n this._updateDrapeFirstLayers();\n }\n\n /**\n * Moves a layer to a different z-position. The layer will be inserted before the layer with\n * ID `before`, or appended if `before` is omitted.\n * @param {string} id ID of the layer to move.\n * @param {string} [before] ID of an existing layer to insert before.\n */\n moveLayer(id: string, before?: string) {\n this._checkLoaded();\n this._changed = true;\n\n const layer = this._layers[id];\n if (!layer) {\n this.fire(new ErrorEvent(new Error(`The layer '${id}' does not exist in the map's style and cannot be moved.`)));\n return;\n }\n\n if (id === before) {\n return;\n }\n\n const index = this._order.indexOf(id);\n this._order.splice(index, 1);\n\n const newIndex = before ? this._order.indexOf(before) : this._order.length;\n if (before && newIndex === -1) {\n this.fire(new ErrorEvent(new Error(`Layer with id \"${before}\" does not exist on this map.`)));\n return;\n }\n this._order.splice(newIndex, 0, id);\n\n this._layerOrderChanged = true;\n\n this._updateDrapeFirstLayers();\n }\n\n /**\n * Remove the layer with the given id from the style.\n *\n * If no such layer exists, an `error` event is fired.\n *\n * @param {string} id ID of the layer to remove.\n * @fires Map.event:error\n */\n removeLayer(id: string) {\n this._checkLoaded();\n\n const layer = this._layers[id];\n if (!layer) {\n this.fire(new ErrorEvent(new Error(`The layer '${id}' does not exist in the map's style and cannot be removed.`)));\n return;\n }\n\n layer.setEventedParent(null);\n\n this._updateLayerCount(layer, false);\n\n const index = this._order.indexOf(id);\n this._order.splice(index, 1);\n\n this._layerOrderChanged = true;\n this._changed = true;\n this._removedLayers[id] = layer;\n delete this._layers[id];\n delete this._serializedLayers[id];\n delete this._updatedLayers[id];\n delete this._updatedPaintProps[id];\n\n if (layer.onRemove) {\n layer.onRemove(this.map);\n }\n\n this._updateDrapeFirstLayers();\n }\n\n /**\n * Return the style layer object with the given `id`.\n *\n * @param {string} id ID of the desired layer.\n * @returns {?StyleLayer} A layer, if one with the given `id` exists.\n */\n getLayer(id: string): ?StyleLayer {\n return this._layers[id];\n }\n\n /**\n * Checks if a specific layer is present within the style.\n *\n * @param {string} id ID of the desired layer.\n * @returns {boolean} A boolean specifying if the given layer is present.\n */\n hasLayer(id: string): boolean {\n return id in this._layers;\n }\n\n /**\n * Checks if a specific layer type is present within the style.\n *\n * @param {string} type Type of the desired layer.\n * @returns {boolean} A boolean specifying if the given layer type is present.\n */\n hasLayerType(type: string): boolean {\n for (const layerId in this._layers) {\n const layer = this._layers[layerId];\n if (layer.type === type) {\n return true;\n }\n }\n return false;\n }\n\n setLayerZoomRange(layerId: string, minzoom: ?number, maxzoom: ?number) {\n this._checkLoaded();\n\n const layer = this.getLayer(layerId);\n if (!layer) {\n this.fire(new ErrorEvent(new Error(`The layer '${layerId}' does not exist in the map's style and cannot have zoom extent.`)));\n return;\n }\n\n if (layer.minzoom === minzoom && layer.maxzoom === maxzoom) return;\n\n if (minzoom != null) {\n layer.minzoom = minzoom;\n }\n if (maxzoom != null) {\n layer.maxzoom = maxzoom;\n }\n this._updateLayer(layer);\n }\n\n setFilter(layerId: string, filter: ?FilterSpecification, options: StyleSetterOptions = {}) {\n this._checkLoaded();\n\n const layer = this.getLayer(layerId);\n if (!layer) {\n this.fire(new ErrorEvent(new Error(`The layer '${layerId}' does not exist in the map's style and cannot be filtered.`)));\n return;\n }\n\n if (deepEqual(layer.filter, filter)) {\n return;\n }\n\n if (filter === null || filter === undefined) {\n layer.filter = undefined;\n this._updateLayer(layer);\n return;\n }\n\n if (this._validate(validateFilter, `layers.${layer.id}.filter`, filter, {layerType: layer.type}, options)) {\n return;\n }\n\n layer.filter = clone(filter);\n this._updateLayer(layer);\n }\n\n /**\n * Get a layer's filter object.\n * @param {string} layerId The layer to inspect.\n * @returns {*} The layer's filter, if any.\n */\n getFilter(layerId: string): ?FilterSpecification {\n const layer = this.getLayer(layerId);\n return layer && clone(layer.filter);\n }\n\n setLayoutProperty(layerId: string, name: string, value: any, options: StyleSetterOptions = {}) {\n this._checkLoaded();\n\n const layer = this.getLayer(layerId);\n if (!layer) {\n this.fire(new ErrorEvent(new Error(`The layer '${layerId}' does not exist in the map's style and cannot be styled.`)));\n return;\n }\n\n if (deepEqual(layer.getLayoutProperty(name), value)) return;\n\n layer.setLayoutProperty(name, value, options);\n this._updateLayer(layer);\n }\n\n /**\n * Get a layout property's value from a given layer.\n * @param {string} layerId The layer to inspect.\n * @param {string} name The name of the layout property.\n * @returns {*} The property value.\n */\n getLayoutProperty(layerId: string, name: string): ?PropertyValueSpecification<mixed> {\n const layer = this.getLayer(layerId);\n if (!layer) {\n this.fire(new ErrorEvent(new Error(`The layer '${layerId}' does not exist in the map's style.`)));\n return;\n }\n\n return layer.getLayoutProperty(name);\n }\n\n setPaintProperty(layerId: string, name: string, value: any, options: StyleSetterOptions = {}) {\n this._checkLoaded();\n\n const layer = this.getLayer(layerId);\n if (!layer) {\n this.fire(new ErrorEvent(new Error(`The layer '${layerId}' does not exist in the map's style and cannot be styled.`)));\n return;\n }\n\n if (deepEqual(layer.getPaintProperty(name), value)) return;\n\n const requiresRelayout = layer.setPaintProperty(name, value, options);\n if (requiresRelayout) {\n this._updateLayer(layer);\n }\n\n this._changed = true;\n this._updatedPaintProps[layerId] = true;\n }\n\n getPaintProperty(layerId: string, name: string): void | TransitionSpecification | PropertyValueSpecification<mixed> {\n const layer = this.getLayer(layerId);\n return layer && layer.getPaintProperty(name);\n }\n\n setFeatureState(target: { source: string; sourceLayer?: string; id: string | number; }, state: Object) {\n this._checkLoaded();\n const sourceId = target.source;\n const sourceLayer = target.sourceLayer;\n const source = this.getSource(sourceId);\n\n if (!source) {\n this.fire(new ErrorEvent(new Error(`The source '${sourceId}' does not exist in the map's style.`)));\n return;\n }\n const sourceType = source.type;\n if (sourceType === 'geojson' && sourceLayer) {\n this.fire(new ErrorEvent(new Error(`GeoJSON sources cannot have a sourceLayer parameter.`)));\n return;\n }\n if (sourceType === 'vector' && !sourceLayer) {\n this.fire(new ErrorEvent(new Error(`The sourceLayer parameter must be provided for vector source types.`)));\n return;\n }\n if (target.id === undefined) {\n this.fire(new ErrorEvent(new Error(`The feature id parameter must be provided.`)));\n }\n\n const sourceCaches = this._getSourceCaches(sourceId);\n for (const sourceCache of sourceCaches) {\n sourceCache.setFeatureState(sourceLayer, target.id, state);\n }\n }\n\n removeFeatureState(target: { source: string; sourceLayer?: string; id?: string | number; }, key?: string) {\n this._checkLoaded();\n const sourceId = target.source;\n const source = this.getSource(sourceId);\n\n if (!source) {\n this.fire(new ErrorEvent(new Error(`The source '${sourceId}' does not exist in the map's style.`)));\n return;\n }\n\n const sourceType = source.type;\n const sourceLayer = sourceType === 'vector' ? target.sourceLayer : undefined;\n\n if (sourceType === 'vector' && !sourceLayer) {\n this.fire(new ErrorEvent(new Error(`The sourceLayer parameter must be provided for vector source types.`)));\n return;\n }\n\n if (key && (typeof target.id !== 'string' && typeof target.id !== 'number')) {\n this.fire(new ErrorEvent(new Error(`A feature id is required to remove its specific state property.`)));\n return;\n }\n\n const sourceCaches = this._getSourceCaches(sourceId);\n for (const sourceCache of sourceCaches) {\n sourceCache.removeFeatureState(sourceLayer, target.id, key);\n }\n }\n\n getFeatureState(target: { source: string; sourceLayer?: string; id: string | number; }): ?FeatureStates {\n this._checkLoaded();\n const sourceId = target.source;\n const sourceLayer = target.sourceLayer;\n const source = this.getSource(sourceId);\n\n if (!source) {\n this.fire(new ErrorEvent(new Error(`The source '${sourceId}' does not exist in the map's style.`)));\n return;\n }\n const sourceType = source.type;\n if (sourceType === 'vector' && !sourceLayer) {\n this.fire(new ErrorEvent(new Error(`The sourceLayer parameter must be provided for vector source types.`)));\n return;\n }\n if (target.id === undefined) {\n this.fire(new ErrorEvent(new Error(`The feature id parameter must be provided.`)));\n }\n\n const sourceCaches = this._getSourceCaches(sourceId);\n return sourceCaches[0].getFeatureState(sourceLayer, target.id);\n }\n\n getTransition(): TransitionSpecification {\n return extend({duration: 300, delay: 0}, this.stylesheet && this.stylesheet.transition);\n }\n\n serialize(): StyleSpecification {\n const sources = {};\n for (const cacheId in this._sourceCaches) {\n const source = this._sourceCaches[cacheId].getSource();\n if (!sources[source.id]) {\n sources[source.id] = source.serialize();\n }\n }\n return filterObject({\n version: this.stylesheet.version,\n name: this.stylesheet.name,\n metadata: this.stylesheet.metadata,\n light: this.stylesheet.light,\n terrain: this.stylesheet.terrain,\n fog: this.stylesheet.fog,\n center: this.stylesheet.center,\n zoom: this.stylesheet.zoom,\n bearing: this.stylesheet.bearing,\n pitch: this.stylesheet.pitch,\n sprite: this.stylesheet.sprite,\n glyphs: this.stylesheet.glyphs,\n transition: this.stylesheet.transition,\n projection: this.stylesheet.projection,\n sources,\n layers: this._serializeLayers(this._order)\n }, (value) => { return value !== undefined; });\n }\n\n _updateLayer(layer: StyleLayer) {\n this._updatedLayers[layer.id] = true;\n const sourceCache = this._getLayerSourceCache(layer);\n if (layer.source && !this._updatedSources[layer.source] &&\n //Skip for raster layers (https://github.com/mapbox/mapbox-gl-js/issues/7865)\n sourceCache &&\n sourceCache.getSource().type !== 'raster') {\n this._updatedSources[layer.source] = 'reload';\n sourceCache.pause();\n }\n this._changed = true;\n layer.invalidateCompiledFilter();\n\n }\n\n _flattenAndSortRenderedFeatures(sourceResults: Array<any>): Array<mixed> {\n // Feature order is complicated.\n // The order between features in two 2D layers is always determined by layer order.\n // The order between features in two 3D layers is always determined by depth.\n // The order between a feature in a 2D layer and a 3D layer is tricky:\n // Most often layer order determines the feature order in this case. If\n // a line layer is above a extrusion layer the line feature will be rendered\n // above the extrusion. If the line layer is below the extrusion layer,\n // it will be rendered below it.\n //\n // There is a weird case though.\n // You have layers in this order: extrusion_layer_a, line_layer, extrusion_layer_b\n // Each layer has a feature that overlaps the other features.\n // The feature in extrusion_layer_a is closer than the feature in extrusion_layer_b so it is rendered above.\n // The feature in line_layer is rendered above extrusion_layer_a.\n // This means that that the line_layer feature is above the extrusion_layer_b feature despite\n // it being in an earlier layer.\n\n const isLayer3D = layerId => this._layers[layerId].type === 'fill-extrusion';\n\n const layerIndex = {};\n const features3D = [];\n for (let l = this._order.length - 1; l >= 0; l--) {\n const layerId = this._order[l];\n if (isLayer3D(layerId)) {\n layerIndex[layerId] = l;\n for (const sourceResult of sourceResults) {\n const layerFeatures = sourceResult[layerId];\n if (layerFeatures) {\n for (const featureWrapper of layerFeatures) {\n features3D.push(featureWrapper);\n }\n }\n }\n }\n }\n\n features3D.sort((a, b) => {\n return b.intersectionZ - a.intersectionZ;\n });\n\n const features = [];\n for (let l = this._order.length - 1; l >= 0; l--) {\n const layerId = this._order[l];\n\n if (isLayer3D(layerId)) {\n // add all 3D features that are in or above the current layer\n for (let i = features3D.length - 1; i >= 0; i--) {\n const topmost3D = features3D[i].feature;\n if (layerIndex[topmost3D.layer.id] < l) break;\n features.push(topmost3D);\n features3D.pop();\n }\n } else {\n for (const sourceResult of sourceResults) {\n const layerFeatures = sourceResult[layerId];\n if (layerFeatures) {\n for (const featureWrapper of layerFeatures) {\n features.push(featureWrapper.feature);\n }\n }\n }\n }\n }\n\n return features;\n }\n\n queryRenderedFeatures(queryGeometry: PointLike | [PointLike, PointLike], params: any, transform: Transform): Array<QueryResult> {\n if (params && params.filter) {\n this._validate(validateFilter, 'queryRenderedFeatures.filter', params.filter, null, params);\n }\n\n const includedSources = {};\n if (params && params.layers) {\n if (!Array.isArray(params.layers)) {\n this.fire(new ErrorEvent(new Error('parameters.layers must be an Array.')));\n return [];\n }\n for (const layerId of params.layers) {\n const layer = this._layers[layerId];\n if (!layer) {\n // this layer is not in the style.layers array\n this.fire(new ErrorEvent(new Error(`The layer '${layerId}' does not exist in the map's style and cannot be queried for features.`)));\n return [];\n }\n includedSources[layer.source] = true;\n }\n }\n\n const sourceResults: Array<QueryResult> = [];\n\n params.availableImages = this._availableImages;\n\n const has3DLayer = (params && params.layers) ?\n params.layers.some((layerId) => {\n const layer = this.getLayer(layerId);\n return layer && layer.is3D();\n }) :\n this.has3DLayers();\n const queryGeometryStruct = QueryGeometry.createFromScreenPoints(queryGeometry, transform);\n\n for (const id in this._sourceCaches) {\n const sourceId = this._sourceCaches[id].getSource().id;\n if (params.layers && !includedSources[sourceId]) continue;\n sourceResults.push(\n queryRenderedFeatures(\n this._sourceCaches[id],\n this._layers,\n this._serializedLayers,\n queryGeometryStruct,\n params,\n transform,\n has3DLayer,\n !!this.map._showQueryGeometry)\n );\n }\n\n if (this.placement) {\n // If a placement has run, query against its CollisionIndex\n // for symbol results, and treat it as an extra source to merge\n sourceResults.push(\n queryRenderedSymbols(\n this._layers,\n this._serializedLayers,\n this._getLayerSourceCache.bind(this),\n queryGeometryStruct.screenGeometry,\n params,\n this.placement.collisionIndex,\n this.placement.retainedQueryData)\n );\n }\n\n return (this._flattenAndSortRenderedFeatures(sourceResults): any);\n }\n\n querySourceFeatures(sourceID: string, params: ?{sourceLayer: ?string, filter: ?Array<any>, validate?: boolean}): Array<QueryFeature> {\n if (params && params.filter) {\n this._validate(validateFilter, 'querySourceFeatures.filter', params.filter, null, params);\n }\n const sourceCaches = this._getSourceCaches(sourceID);\n let results = [];\n for (const sourceCache of sourceCaches) {\n results = results.concat(querySourceFeatures(sourceCache, params));\n }\n return results;\n }\n\n addSourceType(name: string, SourceType: SourceClass, callback: Callback<void>): void {\n if (Style.getSourceType(name)) {\n return callback(new Error(`A source type called \"${name}\" already exists.`));\n }\n\n Style.setSourceType(name, SourceType);\n\n if (!SourceType.workerSourceURL) {\n return callback(null, null);\n }\n\n this.dispatcher.broadcast('loadWorkerSource', {\n name,\n url: SourceType.workerSourceURL\n }, callback);\n }\n\n getLight(): LightSpecification {\n return this.light.getLight();\n }\n\n setLight(lightOptions: LightSpecification, options: StyleSetterOptions = {}) {\n this._checkLoaded();\n\n const light = this.light.getLight();\n let _update = false;\n for (const key in lightOptions) {\n if (!deepEqual(lightOptions[key], light[key])) {\n _update = true;\n break;\n }\n }\n if (!_update) return;\n\n const parameters = this._setTransitionParameters({duration: 300, delay: 0});\n\n this.light.setLight(lightOptions, options);\n this.light.updateTransitions(parameters);\n }\n\n getTerrain(): ?TerrainSpecification {\n return this.terrain && this.terrain.drapeRenderMode === DrapeRenderMode.elevated ? this.terrain.get() : null;\n }\n\n setTerrainForDraping() {\n const mockTerrainOptions = {source: '', exaggeration: 0};\n this.setTerrain(mockTerrainOptions, DrapeRenderMode.deferred);\n }\n\n // eslint-disable-next-line no-warning-comments\n // TODO: generic approach for root level property: light, terrain, skybox.\n // It is not done here to prevent rebasing issues.\n setTerrain(terrainOptions: ?TerrainSpecification, drapeRenderMode: number = DrapeRenderMode.elevated) {\n this._checkLoaded();\n\n // Disabling\n if (!terrainOptions) {\n delete this.terrain;\n delete this.stylesheet.terrain;\n this.dispatcher.broadcast('enableTerrain', false);\n this._force3DLayerUpdate();\n this._markersNeedUpdate = true;\n return;\n }\n\n if (drapeRenderMode === DrapeRenderMode.elevated) {\n // Input validation and source object unrolling\n if (typeof terrainOptions.source === 'object') {\n const id = 'terrain-dem-src';\n this.addSource(id, ((terrainOptions.source): any));\n terrainOptions = clone(terrainOptions);\n terrainOptions = (extend(terrainOptions, {source: id}): any);\n }\n\n if (this._validate(validateTerrain, 'terrain', terrainOptions)) {\n return;\n }\n }\n\n // Enabling\n if (!this.terrain || (this.terrain && drapeRenderMode !== this.terrain.drapeRenderMode)) {\n this._createTerrain(terrainOptions, drapeRenderMode);\n } else { // Updating\n const terrain = this.terrain;\n const currSpec = terrain.get();\n\n for (const name of Object.keys(styleSpec.terrain)) {\n // Fallback to use default style specification when the properties wasn't set\n if (!terrainOptions.hasOwnProperty(name) && !!styleSpec.terrain[name].default) {\n terrainOptions[name] = styleSpec.terrain[name].default;\n }\n }\n for (const key in terrainOptions) {\n if (!deepEqual(terrainOptions[key], currSpec[key])) {\n terrain.set(terrainOptions);\n this.stylesheet.terrain = terrainOptions;\n const parameters = this._setTransitionParameters({duration: 0});\n terrain.updateTransitions(parameters);\n break;\n }\n }\n }\n\n this._updateDrapeFirstLayers();\n this._markersNeedUpdate = true;\n }\n\n _createFog(fogOptions: FogSpecification) {\n const fog = this.fog = new Fog(fogOptions, this.map.transform);\n this.stylesheet.fog = fogOptions;\n const parameters = this._setTransitionParameters({duration: 0});\n fog.updateTransitions(parameters);\n }\n\n _updateMarkersOpacity() {\n if (this.map._markers.length === 0) {\n return;\n }\n this.map._requestDomTask(() => {\n for (const marker of this.map._markers) {\n marker._evaluateOpacity();\n }\n });\n }\n\n getFog(): ?FogSpecification {\n return this.fog ? this.fog.get() : null;\n }\n\n setFog(fogOptions: FogSpecification) {\n this._checkLoaded();\n\n if (!fogOptions) {\n // Remove fog\n delete this.fog;\n delete this.stylesheet.fog;\n this._markersNeedUpdate = true;\n return;\n }\n\n if (!this.fog) {\n // Initialize Fog\n this._createFog(fogOptions);\n } else {\n // Updating fog\n const fog = this.fog;\n const currSpec = fog.get();\n\n // empty object should pass through to set default values\n if (Object.keys(fogOptions).length === 0) fog.set(fogOptions);\n\n for (const key in fogOptions) {\n if (!deepEqual(fogOptions[key], currSpec[key])) {\n fog.set(fogOptions);\n this.stylesheet.fog = fogOptions;\n const parameters = this._setTransitionParameters({duration: 0});\n fog.updateTransitions(parameters);\n break;\n }\n }\n }\n\n this._markersNeedUpdate = true;\n }\n\n _setTransitionParameters(transitionOptions: Object): TransitionParameters {\n return {\n now: browser.now(),\n transition: extend(\n transitionOptions,\n this.stylesheet.transition)\n };\n }\n\n _updateDrapeFirstLayers() {\n if (!this.map._optimizeForTerrain || !this.terrain) {\n return;\n }\n\n const draped = this._order.filter((id) => {\n return this.isLayerDraped(this._layers[id]);\n });\n\n const nonDraped = this._order.filter((id) => {\n return !this.isLayerDraped(this._layers[id]);\n });\n this._drapedFirstOrder = [];\n this._drapedFirstOrder.push(...draped);\n this._drapedFirstOrder.push(...nonDraped);\n }\n\n _createTerrain(terrainOptions: TerrainSpecification, drapeRenderMode: number) {\n const terrain = this.terrain = new Terrain(terrainOptions, drapeRenderMode);\n this.stylesheet.terrain = terrainOptions;\n this.dispatcher.broadcast('enableTerrain', !this.terrainSetForDrapingOnly());\n this._force3DLayerUpdate();\n const parameters = this._setTransitionParameters({duration: 0});\n terrain.updateTransitions(parameters);\n }\n\n _force3DLayerUpdate() {\n for (const layerId in this._layers) {\n const layer = this._layers[layerId];\n if (layer.type === 'fill-extrusion') {\n this._updateLayer(layer);\n }\n }\n }\n\n _forceSymbolLayerUpdate() {\n for (const layerId in this._layers) {\n const layer = this._layers[layerId];\n if (layer.type === 'symbol') {\n this._updateLayer(layer);\n }\n }\n }\n\n _validate(validate: Validator, key: string, value: any, props: any, options: { validate?: boolean } = {}): boolean {\n if (options && options.validate === false) {\n return false;\n }\n return emitValidationErrors(this, validate.call(validateStyle, extend({\n key,\n style: this.serialize(),\n value,\n styleSpec\n }, props)));\n }\n\n _remove() {\n if (this._request) {\n this._request.cancel();\n this._request = null;\n }\n if (this._spriteRequest) {\n this._spriteRequest.cancel();\n this._spriteRequest = null;\n }\n rtlTextPluginEvented.off('pluginStateChange', this._rtlTextPluginCallback);\n for (const layerId in this._layers) {\n const layer: StyleLayer = this._layers[layerId];\n layer.setEventedParent(null);\n }\n for (const id in this._sourceCaches) {\n this._sourceCaches[id].clearTiles();\n this._sourceCaches[id].setEventedParent(null);\n }\n this.imageManager.setEventedParent(null);\n this.setEventedParent(null);\n this.dispatcher.remove();\n }\n\n _clearSource(id: string) {\n const sourceCaches = this._getSourceCaches(id);\n for (const sourceCache of sourceCaches) {\n sourceCache.clearTiles();\n }\n }\n\n _reloadSource(id: string) {\n const sourceCaches = this._getSourceCaches(id);\n for (const sourceCache of sourceCaches) {\n sourceCache.resume();\n sourceCache.reload();\n }\n }\n\n _updateSources(transform: Transform) {\n for (const id in this._sourceCaches) {\n this._sourceCaches[id].update(transform);\n }\n }\n\n _generateCollisionBoxes() {\n for (const id in this._sourceCaches) {\n const sourceCache = this._sourceCaches[id];\n sourceCache.resume();\n sourceCache.reload();\n }\n }\n\n _updatePlacement(transform: Transform, showCollisionBoxes: boolean, fadeDuration: number, crossSourceCollisions: boolean, forceFullPlacement: boolean = false): boolean {\n let symbolBucketsChanged = false;\n let placementCommitted = false;\n\n const layerTiles = {};\n\n for (const layerID of this._order) {\n const styleLayer = this._layers[layerID];\n if (styleLayer.type !== 'symbol') continue;\n\n if (!layerTiles[styleLayer.source]) {\n const sourceCache = this._getLayerSourceCache(styleLayer);\n if (!sourceCache) continue;\n layerTiles[styleLayer.source] = sourceCache.getRenderableIds(true)\n .map((id) => sourceCache.getTileByID(id))\n .sort((a, b) => (b.tileID.overscaledZ - a.tileID.overscaledZ) || (a.tileID.isLessThan(b.tileID) ? -1 : 1));\n }\n\n const layerBucketsChanged = this.crossTileSymbolIndex.addLayer(styleLayer, layerTiles[styleLayer.source], transform.center.lng, transform.projection);\n symbolBucketsChanged = symbolBucketsChanged || layerBucketsChanged;\n }\n this.crossTileSymbolIndex.pruneUnusedLayers(this._order);\n\n // Anything that changes our \"in progress\" layer and tile indices requires us\n // to start over. When we start over, we do a full placement instead of incremental\n // to prevent starvation.\n // We need to restart placement to keep layer indices in sync.\n // Also force full placement when fadeDuration === 0 to ensure that newly loaded\n // tiles will fully display symbols in their first frame\n forceFullPlacement = forceFullPlacement || this._layerOrderChanged || fadeDuration === 0;\n\n if (this._layerOrderChanged) {\n this.fire(new Event('neworder'));\n }\n\n if (forceFullPlacement || !this.pauseablePlacement || (this.pauseablePlacement.isDone() && !this.placement.stillRecent(browser.now(), transform.zoom))) {\n const fogState = this.fog && transform.projection.supportsFog ? this.fog.state : null;\n this.pauseablePlacement = new PauseablePlacement(transform, this._order, forceFullPlacement, showCollisionBoxes, fadeDuration, crossSourceCollisions, this.placement, fogState);\n this._layerOrderChanged = false;\n }\n\n if (this.pauseablePlacement.isDone()) {\n // the last placement finished running, but the next one hasn’t\n // started yet because of the `stillRecent` check immediately\n // above, so mark it stale to ensure that we request another\n // render frame\n this.placement.setStale();\n } else {\n this.pauseablePlacement.continuePlacement(this._order, this._layers, layerTiles);\n\n if (this.pauseablePlacement.isDone()) {\n this.placement = this.pauseablePlacement.commit(browser.now());\n placementCommitted = true;\n }\n\n if (symbolBucketsChanged) {\n // since the placement gets split over multiple frames it is possible\n // these buckets were processed before they were changed and so the\n // placement is already stale while it is in progress\n this.pauseablePlacement.placement.setStale();\n }\n }\n\n if (placementCommitted || symbolBucketsChanged) {\n for (const layerID of this._order) {\n const styleLayer = this._layers[layerID];\n if (styleLayer.type !== 'symbol') continue;\n this.placement.updateLayerOpacities(styleLayer, layerTiles[styleLayer.source]);\n }\n }\n\n // needsRender is false when we have just finished a placement that didn't change the visibility of any symbols\n const needsRerender = !this.pauseablePlacement.isDone() || this.placement.hasTransitions(browser.now());\n return needsRerender;\n }\n\n _releaseSymbolFadeTiles() {\n for (const id in this._sourceCaches) {\n this._sourceCaches[id].releaseSymbolFadeTiles();\n }\n }\n\n // Callbacks from web workers\n\n getImages(mapId: string, params: {icons: Array<string>, source: string, tileID: OverscaledTileID, type: string}, callback: Callback<{[_: string]: StyleImage}>) {\n\n this.imageManager.getImages(params.icons, callback);\n\n // Apply queued image changes before setting the tile's dependencies so that the tile\n // is not reloaded unecessarily. Without this forced update the reload could happen in cases\n // like this one:\n // - icons contains \"my-image\"\n // - imageManager.getImages(...) triggers `onstyleimagemissing`\n // - the user adds \"my-image\" within the callback\n // - addImage adds \"my-image\" to this._changedImages\n // - the next frame triggers a reload of this tile even though it already has the latest version\n this._updateTilesForChangedImages();\n\n const setDependencies = (sourceCache: SourceCache) => {\n if (sourceCache) {\n sourceCache.setDependencies(params.tileID.key, params.type, params.icons);\n }\n };\n setDependencies(this._otherSourceCaches[params.source]);\n setDependencies(this._symbolSourceCaches[params.source]);\n }\n\n getGlyphs(mapId: string, params: {stacks: {[_: string]: Array<number>}}, callback: Callback<{[_: string]: {glyphs: {[_: number]: ?StyleGlyph}, ascender?: number, descender?: number}}>) {\n this.glyphManager.getGlyphs(params.stacks, callback);\n }\n\n getResource(mapId: string, params: RequestParameters, callback: ResponseCallback<any>): Cancelable {\n return makeRequest(params, callback);\n }\n\n _getSourceCache(source: string): SourceCache | void {\n return this._otherSourceCaches[source];\n }\n\n _getLayerSourceCache(layer: StyleLayer): SourceCache | void {\n return layer.type === 'symbol' ?\n this._symbolSourceCaches[layer.source] :\n this._otherSourceCaches[layer.source];\n }\n\n _getSourceCaches(source: string): Array<SourceCache> {\n const sourceCaches = [];\n if (this._otherSourceCaches[source]) {\n sourceCaches.push(this._otherSourceCaches[source]);\n }\n if (this._symbolSourceCaches[source]) {\n sourceCaches.push(this._symbolSourceCaches[source]);\n }\n return sourceCaches;\n }\n\n _isSourceCacheLoaded(source: string): boolean {\n const sourceCaches = this._getSourceCaches(source);\n if (sourceCaches.length === 0) {\n this.fire(new ErrorEvent(new Error(`There is no source with ID '${source}'`)));\n return false;\n }\n return sourceCaches.every(sc => sc.loaded());\n }\n\n has3DLayers(): boolean {\n return this._num3DLayers > 0;\n }\n\n hasSymbolLayers(): boolean {\n return this._numSymbolLayers > 0;\n }\n\n hasCircleLayers(): boolean {\n return this._numCircleLayers > 0;\n }\n\n _clearWorkerCaches() {\n this.dispatcher.broadcast('clearCaches');\n }\n\n destroy() {\n this._clearWorkerCaches();\n if (this.terrainSetForDrapingOnly()) {\n delete this.terrain;\n delete this.stylesheet.terrain;\n }\n }\n}\n\nStyle.getSourceType = getSourceType;\nStyle.setSourceType = setSourceType;\nStyle.registerForPluginStateChange = registerForPluginStateChange;\n\nexport default Style;\n","// @flow\nimport type {StyleSpecification} from './types.js';\n\nexport default function emptyStyle(): StyleSpecification {\n return {\n version: 8,\n layers: [],\n sources: {}\n };\n}\n","// @flow\n\nimport {getJSON, getImage, ResourceType} from '../util/ajax.js';\n\nimport browser from '../util/browser.js';\nimport {RGBAImage} from '../util/image.js';\n\nimport type {StyleImage} from './style_image.js';\nimport type {RequestManager} from '../util/mapbox.js';\nimport type {Callback} from '../types/callback.js';\nimport type {Cancelable} from '../types/cancelable.js';\n\nexport default function(baseURL: string,\n requestManager: RequestManager,\n callback: Callback<{[_: string]: StyleImage}>): Cancelable {\n let json: any, image, error;\n const format = browser.devicePixelRatio > 1 ? '@2x' : '';\n\n let jsonRequest = getJSON(requestManager.transformRequest(requestManager.normalizeSpriteURL(baseURL, format, '.json'), ResourceType.SpriteJSON), (err: ?Error, data: ?Object) => {\n jsonRequest = null;\n if (!error) {\n error = err;\n json = data;\n maybeComplete();\n }\n });\n\n let imageRequest = getImage(requestManager.transformRequest(requestManager.normalizeSpriteURL(baseURL, format, '.png'), ResourceType.SpriteImage), (err, img) => {\n imageRequest = null;\n if (!error) {\n error = err;\n image = img;\n maybeComplete();\n }\n });\n\n function maybeComplete() {\n if (error) {\n callback(error);\n } else if (json && image) {\n const imageData = browser.getImageData(image);\n const result = {};\n\n for (const id in json) {\n const {width, height, x, y, sdf, pixelRatio, stretchX, stretchY, content} = json[id];\n const data = new RGBAImage({width, height});\n RGBAImage.copy(imageData, data, {x, y}, {x: 0, y: 0}, {width, height});\n result[id] = {data, pixelRatio, sdf, stretchX, stretchY, content};\n }\n\n callback(null, result);\n }\n }\n\n return {\n cancel() {\n if (jsonRequest) {\n jsonRequest.cancel();\n jsonRequest = null;\n }\n if (imageRequest) {\n imageRequest.cancel();\n imageRequest = null;\n }\n }\n };\n}\n","\n// Disable Flow annotations here because Flow doesn't support importing GLSL files\n/* eslint-disable flowtype/require-valid-file-annotation */\n\nimport preludeCommon from './_prelude.glsl';\nimport preludeFrag from './_prelude.fragment.glsl';\nimport preludeVert from './_prelude.vertex.glsl';\nimport backgroundFrag from './background.fragment.glsl';\nimport backgroundVert from './background.vertex.glsl';\nimport backgroundPatternFrag from './background_pattern.fragment.glsl';\nimport backgroundPatternVert from './background_pattern.vertex.glsl';\nimport circleFrag from './circle.fragment.glsl';\nimport circleVert from './circle.vertex.glsl';\nimport clippingMaskFrag from './clipping_mask.fragment.glsl';\nimport clippingMaskVert from './clipping_mask.vertex.glsl';\nimport heatmapFrag from './heatmap.fragment.glsl';\nimport heatmapVert from './heatmap.vertex.glsl';\nimport heatmapTextureFrag from './heatmap_texture.fragment.glsl';\nimport heatmapTextureVert from './heatmap_texture.vertex.glsl';\nimport collisionBoxFrag from './collision_box.fragment.glsl';\nimport collisionBoxVert from './collision_box.vertex.glsl';\nimport collisionCircleFrag from './collision_circle.fragment.glsl';\nimport collisionCircleVert from './collision_circle.vertex.glsl';\nimport debugFrag from './debug.fragment.glsl';\nimport debugVert from './debug.vertex.glsl';\nimport fillFrag from './fill.fragment.glsl';\nimport fillVert from './fill.vertex.glsl';\nimport fillOutlineFrag from './fill_outline.fragment.glsl';\nimport fillOutlineVert from './fill_outline.vertex.glsl';\nimport fillOutlinePatternFrag from './fill_outline_pattern.fragment.glsl';\nimport fillOutlinePatternVert from './fill_outline_pattern.vertex.glsl';\nimport fillPatternFrag from './fill_pattern.fragment.glsl';\nimport fillPatternVert from './fill_pattern.vertex.glsl';\nimport fillExtrusionFrag from './fill_extrusion.fragment.glsl';\nimport fillExtrusionVert from './fill_extrusion.vertex.glsl';\nimport fillExtrusionPatternFrag from './fill_extrusion_pattern.fragment.glsl';\nimport fillExtrusionPatternVert from './fill_extrusion_pattern.vertex.glsl';\nimport hillshadePrepareFrag from './hillshade_prepare.fragment.glsl';\nimport hillshadePrepareVert from './hillshade_prepare.vertex.glsl';\nimport hillshadeFrag from './hillshade.fragment.glsl';\nimport hillshadeVert from './hillshade.vertex.glsl';\nimport lineFrag from './line.fragment.glsl';\nimport lineVert from './line.vertex.glsl';\nimport linePatternFrag from './line_pattern.fragment.glsl';\nimport linePatternVert from './line_pattern.vertex.glsl';\nimport rasterFrag from './raster.fragment.glsl';\nimport rasterVert from './raster.vertex.glsl';\nimport symbolIconFrag from './symbol_icon.fragment.glsl';\nimport symbolIconVert from './symbol_icon.vertex.glsl';\nimport symbolSDFFrag from './symbol_sdf.fragment.glsl';\nimport symbolSDFVert from './symbol_sdf.vertex.glsl';\nimport symbolTextAndIconFrag from './symbol_text_and_icon.fragment.glsl';\nimport symbolTextAndIconVert from './symbol_text_and_icon.vertex.glsl';\nimport skyboxFrag from './skybox.fragment.glsl';\nimport skyboxGradientFrag from './skybox_gradient.fragment.glsl';\nimport skyboxVert from './skybox.vertex.glsl';\nimport terrainRasterFrag from './terrain_raster.fragment.glsl';\nimport terrainRasterVert from './terrain_raster.vertex.glsl';\nimport terrainDepthFrag from './terrain_depth.fragment.glsl';\nimport terrainDepthVert from './terrain_depth.vertex.glsl';\nimport preludeTerrainVert from './_prelude_terrain.vertex.glsl';\nimport preludeFogVert from './_prelude_fog.vertex.glsl';\nimport preludeFogFrag from './_prelude_fog.fragment.glsl';\nimport skyboxCaptureFrag from './skybox_capture.fragment.glsl';\nimport skyboxCaptureVert from './skybox_capture.vertex.glsl';\nimport globeFrag from './globe_raster.fragment.glsl';\nimport globeVert from './globe_raster.vertex.glsl';\nimport atmosphereFrag from './atmosphere.fragment.glsl';\nimport atmosphereVert from './atmosphere.vertex.glsl';\n\nexport let preludeTerrain = {};\nexport let preludeFog = {};\n\npreludeTerrain = compile('', preludeTerrainVert, true);\npreludeFog = compile(preludeFogFrag, preludeFogVert, true);\n\nexport const prelude = compile(preludeFrag, preludeVert);\nexport const preludeCommonSource = preludeCommon;\n\nexport const preludeVertPrecisionQualifiers = `\n#ifdef GL_ES\nprecision highp float;\n#else\n\n#if !defined(lowp)\n#define lowp\n#endif\n\n#if !defined(mediump)\n#define mediump\n#endif\n\n#if !defined(highp)\n#define highp\n#endif\n\n#endif`;\nexport const preludeFragPrecisionQualifiers = `\n#ifdef GL_ES\nprecision mediump float;\n#else\n\n#if !defined(lowp)\n#define lowp\n#endif\n\n#if !defined(mediump)\n#define mediump\n#endif\n\n#if !defined(highp)\n#define highp\n#endif\n\n#endif`;\n\nexport const standardDerivativesExt = '#extension GL_OES_standard_derivatives : enable\\n';\n\nexport default {\n background: compile(backgroundFrag, backgroundVert),\n backgroundPattern: compile(backgroundPatternFrag, backgroundPatternVert),\n circle: compile(circleFrag, circleVert),\n clippingMask: compile(clippingMaskFrag, clippingMaskVert),\n heatmap: compile(heatmapFrag, heatmapVert),\n heatmapTexture: compile(heatmapTextureFrag, heatmapTextureVert),\n collisionBox: compile(collisionBoxFrag, collisionBoxVert),\n collisionCircle: compile(collisionCircleFrag, collisionCircleVert),\n debug: compile(debugFrag, debugVert),\n fill: compile(fillFrag, fillVert),\n fillOutline: compile(fillOutlineFrag, fillOutlineVert),\n fillOutlinePattern: compile(fillOutlinePatternFrag, fillOutlinePatternVert),\n fillPattern: compile(fillPatternFrag, fillPatternVert),\n fillExtrusion: compile(fillExtrusionFrag, fillExtrusionVert),\n fillExtrusionPattern: compile(fillExtrusionPatternFrag, fillExtrusionPatternVert),\n hillshadePrepare: compile(hillshadePrepareFrag, hillshadePrepareVert),\n hillshade: compile(hillshadeFrag, hillshadeVert),\n line: compile(lineFrag, lineVert),\n linePattern: compile(linePatternFrag, linePatternVert),\n raster: compile(rasterFrag, rasterVert),\n symbolIcon: compile(symbolIconFrag, symbolIconVert),\n symbolSDF: compile(symbolSDFFrag, symbolSDFVert),\n symbolTextAndIcon: compile(symbolTextAndIconFrag, symbolTextAndIconVert),\n terrainRaster: compile(terrainRasterFrag, terrainRasterVert),\n terrainDepth: compile(terrainDepthFrag, terrainDepthVert),\n skybox: compile(skyboxFrag, skyboxVert),\n skyboxGradient: compile(skyboxGradientFrag, skyboxVert),\n skyboxCapture: compile(skyboxCaptureFrag, skyboxCaptureVert),\n globeRaster: compile(globeFrag, globeVert),\n globeAtmosphere: compile(atmosphereFrag, atmosphereVert)\n};\n\n// Expand #pragmas to #ifdefs.\nfunction compile(fragmentSource, vertexSource, isGlobalPrelude) {\n const pragmaRegex = /#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g;\n const uniformRegex = /uniform (highp |mediump |lowp )?([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g;\n const attributeRegex = /attribute (highp |mediump |lowp )?([\\w]+) ([\\w]+)/g;\n\n const staticAttributes = vertexSource.match(attributeRegex);\n const fragmentUniforms = fragmentSource.match(uniformRegex);\n const vertexUniforms = vertexSource.match(uniformRegex);\n const commonUniforms = preludeCommon.match(uniformRegex);\n\n let staticUniforms = vertexUniforms ? vertexUniforms.concat(fragmentUniforms) : fragmentUniforms;\n\n if (!isGlobalPrelude) {\n if (preludeTerrain.staticUniforms) {\n staticUniforms = preludeTerrain.staticUniforms.concat(staticUniforms);\n }\n if (preludeFog.staticUniforms) {\n staticUniforms = preludeFog.staticUniforms.concat(staticUniforms);\n }\n }\n\n if (staticUniforms) {\n staticUniforms = staticUniforms.concat(commonUniforms);\n }\n\n const fragmentPragmas = {};\n\n fragmentSource = fragmentSource.replace(pragmaRegex, (match, operation, precision, type, name) => {\n fragmentPragmas[name] = true;\n if (operation === 'define') {\n return `\n#ifndef HAS_UNIFORM_u_${name}\nvarying ${precision} ${type} ${name};\n#else\nuniform ${precision} ${type} u_${name};\n#endif\n`;\n } else /* if (operation === 'initialize') */ {\n return `\n#ifdef HAS_UNIFORM_u_${name}\n ${precision} ${type} ${name} = u_${name};\n#endif\n`;\n }\n });\n\n vertexSource = vertexSource.replace(pragmaRegex, (match, operation, precision, type, name) => {\n const attrType = type === 'float' ? 'vec2' : 'vec4';\n const unpackType = name.match(/color/) ? 'color' : attrType;\n\n if (fragmentPragmas[name]) {\n if (operation === 'define') {\n return `\n#ifndef HAS_UNIFORM_u_${name}\nuniform lowp float u_${name}_t;\nattribute ${precision} ${attrType} a_${name};\nvarying ${precision} ${type} ${name};\n#else\nuniform ${precision} ${type} u_${name};\n#endif\n`;\n } else /* if (operation === 'initialize') */ {\n if (unpackType === 'vec4') {\n // vec4 attributes are only used for cross-faded properties, and are not packed\n return `\n#ifndef HAS_UNIFORM_u_${name}\n ${name} = a_${name};\n#else\n ${precision} ${type} ${name} = u_${name};\n#endif\n`;\n } else {\n return `\n#ifndef HAS_UNIFORM_u_${name}\n ${name} = unpack_mix_${unpackType}(a_${name}, u_${name}_t);\n#else\n ${precision} ${type} ${name} = u_${name};\n#endif\n`;\n }\n }\n } else {\n if (operation === 'define') {\n return `\n#ifndef HAS_UNIFORM_u_${name}\nuniform lowp float u_${name}_t;\nattribute ${precision} ${attrType} a_${name};\n#else\nuniform ${precision} ${type} u_${name};\n#endif\n`;\n } else /* if (operation === 'initialize') */ {\n if (unpackType === 'vec4') {\n // vec4 attributes are only used for cross-faded properties, and are not packed\n return `\n#ifndef HAS_UNIFORM_u_${name}\n ${precision} ${type} ${name} = a_${name};\n#else\n ${precision} ${type} ${name} = u_${name};\n#endif\n`;\n } else /* */{\n return `\n#ifndef HAS_UNIFORM_u_${name}\n ${precision} ${type} ${name} = unpack_mix_${unpackType}(a_${name}, u_${name}_t);\n#else\n ${precision} ${type} ${name} = u_${name};\n#endif\n`;\n }\n }\n }\n });\n\n return {fragmentSource, vertexSource, staticAttributes, staticUniforms};\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport type Program from './program.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type Context from '../gl/context.js';\n\nclass VertexArrayObject {\n context: Context;\n boundProgram: ?Program<*>;\n boundLayoutVertexBuffer: ?VertexBuffer;\n boundPaintVertexBuffers: Array<VertexBuffer>;\n boundIndexBuffer: ?IndexBuffer;\n boundVertexOffset: ?number;\n boundDynamicVertexBuffer: ?VertexBuffer;\n boundDynamicVertexBuffer2: ?VertexBuffer;\n boundDynamicVertexBuffer3: ?VertexBuffer;\n vao: any;\n\n constructor() {\n this.boundProgram = null;\n this.boundLayoutVertexBuffer = null;\n this.boundPaintVertexBuffers = [];\n this.boundIndexBuffer = null;\n this.boundVertexOffset = null;\n this.boundDynamicVertexBuffer = null;\n this.vao = null;\n }\n\n bind(context: Context,\n program: Program<*>,\n layoutVertexBuffer: VertexBuffer,\n paintVertexBuffers: Array<VertexBuffer>,\n indexBuffer: ?IndexBuffer,\n vertexOffset: ?number,\n dynamicVertexBuffer: ?VertexBuffer,\n dynamicVertexBuffer2: ?VertexBuffer,\n dynamicVertexBuffer3: ?VertexBuffer) {\n\n this.context = context;\n\n let paintBuffersDiffer = this.boundPaintVertexBuffers.length !== paintVertexBuffers.length;\n for (let i = 0; !paintBuffersDiffer && i < paintVertexBuffers.length; i++) {\n if (this.boundPaintVertexBuffers[i] !== paintVertexBuffers[i]) {\n paintBuffersDiffer = true;\n }\n }\n\n const isFreshBindRequired = (\n !this.vao ||\n this.boundProgram !== program ||\n this.boundLayoutVertexBuffer !== layoutVertexBuffer ||\n paintBuffersDiffer ||\n this.boundIndexBuffer !== indexBuffer ||\n this.boundVertexOffset !== vertexOffset ||\n this.boundDynamicVertexBuffer !== dynamicVertexBuffer ||\n this.boundDynamicVertexBuffer2 !== dynamicVertexBuffer2 ||\n this.boundDynamicVertexBuffer3 !== dynamicVertexBuffer3\n );\n\n if (!context.extVertexArrayObject || isFreshBindRequired) {\n this.freshBind(program, layoutVertexBuffer, paintVertexBuffers, indexBuffer, vertexOffset, dynamicVertexBuffer, dynamicVertexBuffer2, dynamicVertexBuffer3);\n } else {\n context.bindVertexArrayOES.set(this.vao);\n\n if (dynamicVertexBuffer) {\n // The buffer may have been updated. Rebind to upload data.\n dynamicVertexBuffer.bind();\n }\n\n if (indexBuffer && indexBuffer.dynamicDraw) {\n indexBuffer.bind();\n }\n\n if (dynamicVertexBuffer2) {\n dynamicVertexBuffer2.bind();\n }\n\n if (dynamicVertexBuffer3) {\n dynamicVertexBuffer3.bind();\n }\n }\n }\n\n freshBind(program: Program<*>,\n layoutVertexBuffer: VertexBuffer,\n paintVertexBuffers: Array<VertexBuffer>,\n indexBuffer: ?IndexBuffer,\n vertexOffset: ?number,\n dynamicVertexBuffer: ?VertexBuffer,\n dynamicVertexBuffer2: ?VertexBuffer,\n dynamicVertexBuffer3: ?VertexBuffer) {\n let numPrevAttributes;\n const numNextAttributes = program.numAttributes;\n\n const context = this.context;\n const gl = context.gl;\n\n if (context.extVertexArrayObject) {\n if (this.vao) this.destroy();\n this.vao = context.extVertexArrayObject.createVertexArrayOES();\n context.bindVertexArrayOES.set(this.vao);\n numPrevAttributes = 0;\n\n // store the arguments so that we can verify them when the vao is bound again\n this.boundProgram = program;\n this.boundLayoutVertexBuffer = layoutVertexBuffer;\n this.boundPaintVertexBuffers = paintVertexBuffers;\n this.boundIndexBuffer = indexBuffer;\n this.boundVertexOffset = vertexOffset;\n this.boundDynamicVertexBuffer = dynamicVertexBuffer;\n this.boundDynamicVertexBuffer2 = dynamicVertexBuffer2;\n this.boundDynamicVertexBuffer3 = dynamicVertexBuffer3;\n\n } else {\n numPrevAttributes = context.currentNumAttributes || 0;\n\n // Disable all attributes from the previous program that aren't used in\n // the new program. Note: attribute indices are *not* program specific!\n for (let i = numNextAttributes; i < numPrevAttributes; i++) {\n // WebGL breaks if you disable attribute 0.\n // http://stackoverflow.com/questions/20305231\n assert(i !== 0);\n gl.disableVertexAttribArray(i);\n }\n }\n\n layoutVertexBuffer.enableAttributes(gl, program);\n for (const vertexBuffer of paintVertexBuffers) {\n vertexBuffer.enableAttributes(gl, program);\n }\n\n if (dynamicVertexBuffer) {\n dynamicVertexBuffer.enableAttributes(gl, program);\n }\n if (dynamicVertexBuffer2) {\n dynamicVertexBuffer2.enableAttributes(gl, program);\n }\n if (dynamicVertexBuffer3) {\n dynamicVertexBuffer3.enableAttributes(gl, program);\n }\n\n layoutVertexBuffer.bind();\n layoutVertexBuffer.setVertexAttribPointers(gl, program, vertexOffset);\n for (const vertexBuffer of paintVertexBuffers) {\n vertexBuffer.bind();\n vertexBuffer.setVertexAttribPointers(gl, program, vertexOffset);\n }\n\n if (dynamicVertexBuffer) {\n dynamicVertexBuffer.bind();\n dynamicVertexBuffer.setVertexAttribPointers(gl, program, vertexOffset);\n }\n if (indexBuffer) {\n indexBuffer.bind();\n }\n if (dynamicVertexBuffer2) {\n dynamicVertexBuffer2.bind();\n dynamicVertexBuffer2.setVertexAttribPointers(gl, program, vertexOffset);\n }\n if (dynamicVertexBuffer3) {\n dynamicVertexBuffer3.bind();\n dynamicVertexBuffer3.setVertexAttribPointers(gl, program, vertexOffset);\n }\n\n context.currentNumAttributes = numNextAttributes;\n }\n\n destroy() {\n if (this.vao) {\n this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao);\n this.vao = null;\n }\n }\n}\n\nexport default VertexArrayObject;\n","// @flow\n\nimport {mat4} from 'gl-matrix';\n\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n UniformColor,\n UniformMatrix4f,\n Uniform4f\n} from '../uniform_binding.js';\nimport EXTENT from '../../data/extent.js';\nimport MercatorCoordinate from '../../geo/mercator_coordinate.js';\n\nimport type Context from '../../gl/context.js';\nimport type {UniformValues, UniformLocations} from '../uniform_binding.js';\nimport type Tile from '../../source/tile.js';\nimport type Painter from '../painter.js';\nimport type HillshadeStyleLayer from '../../style/style_layer/hillshade_style_layer.js';\nimport type DEMData from '../../data/dem_data.js';\nimport type {OverscaledTileID} from '../../source/tile_id.js';\n\nexport type HillshadeUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_image': Uniform1i,\n 'u_latrange': Uniform2f,\n 'u_light': Uniform2f,\n 'u_shadow': UniformColor,\n 'u_highlight': UniformColor,\n 'u_accent': UniformColor\n|};\n\nexport type HillshadePrepareUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_image': Uniform1i,\n 'u_dimension': Uniform2f,\n 'u_zoom': Uniform1f,\n 'u_unpack': Uniform4f\n|};\n\nconst hillshadeUniforms = (context: Context, locations: UniformLocations): HillshadeUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_image': new Uniform1i(context, locations.u_image),\n 'u_latrange': new Uniform2f(context, locations.u_latrange),\n 'u_light': new Uniform2f(context, locations.u_light),\n 'u_shadow': new UniformColor(context, locations.u_shadow),\n 'u_highlight': new UniformColor(context, locations.u_highlight),\n 'u_accent': new UniformColor(context, locations.u_accent)\n});\n\nconst hillshadePrepareUniforms = (context: Context, locations: UniformLocations): HillshadePrepareUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_image': new Uniform1i(context, locations.u_image),\n 'u_dimension': new Uniform2f(context, locations.u_dimension),\n 'u_zoom': new Uniform1f(context, locations.u_zoom),\n 'u_unpack': new Uniform4f(context, locations.u_unpack)\n});\n\nconst hillshadeUniformValues = (\n painter: Painter,\n tile: Tile,\n layer: HillshadeStyleLayer,\n matrix: ?Float32Array\n): UniformValues<HillshadeUniformsType> => {\n const shadow = layer.paint.get(\"hillshade-shadow-color\");\n const highlight = layer.paint.get(\"hillshade-highlight-color\");\n const accent = layer.paint.get(\"hillshade-accent-color\");\n\n let azimuthal = layer.paint.get('hillshade-illumination-direction') * (Math.PI / 180);\n // modify azimuthal angle by map rotation if light is anchored at the viewport\n if (layer.paint.get('hillshade-illumination-anchor') === 'viewport') {\n azimuthal -= painter.transform.angle;\n }\n const align = !painter.options.moving;\n return {\n 'u_matrix': matrix ? matrix : painter.transform.calculateProjMatrix(tile.tileID.toUnwrapped(), align),\n 'u_image': 0,\n 'u_latrange': getTileLatRange(painter, tile.tileID),\n 'u_light': [layer.paint.get('hillshade-exaggeration'), azimuthal],\n 'u_shadow': shadow,\n 'u_highlight': highlight,\n 'u_accent': accent\n };\n};\n\nconst hillshadeUniformPrepareValues = (\n tileID: OverscaledTileID, dem: DEMData\n): UniformValues<HillshadePrepareUniformsType> => {\n\n const stride = dem.stride;\n const matrix = mat4.create();\n // Flip rendering at y axis.\n mat4.ortho(matrix, 0, EXTENT, -EXTENT, 0, 0, 1);\n mat4.translate(matrix, matrix, [0, -EXTENT, 0]);\n\n return {\n 'u_matrix': matrix,\n 'u_image': 1,\n 'u_dimension': [stride, stride],\n 'u_zoom': tileID.overscaledZ,\n 'u_unpack': dem.unpackVector\n };\n};\n\nfunction getTileLatRange(painter: Painter, tileID: OverscaledTileID) {\n // for scaling the magnitude of a points slope by its latitude\n const tilesAtZoom = Math.pow(2, tileID.canonical.z);\n const y = tileID.canonical.y;\n return [\n new MercatorCoordinate(0, y / tilesAtZoom).toLngLat().lat,\n new MercatorCoordinate(0, (y + 1) / tilesAtZoom).toLngLat().lat];\n}\n\nexport {\n hillshadeUniforms,\n hillshadePrepareUniforms,\n hillshadeUniformValues,\n hillshadeUniformPrepareValues\n};\n","// @flow\n\nimport Texture from './texture.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {\n hillshadeUniformValues,\n hillshadeUniformPrepareValues\n} from './program/hillshade_program.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type Tile from '../source/tile.js';\nimport type HillshadeStyleLayer from '../style/style_layer/hillshade_style_layer.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport assert from 'assert';\nimport DEMData from '../data/dem_data.js';\n\nexport default drawHillshade;\n\nfunction drawHillshade(painter: Painter, sourceCache: SourceCache, layer: HillshadeStyleLayer, tileIDs: Array<OverscaledTileID>) {\n if (painter.renderPass !== 'offscreen' && painter.renderPass !== 'translucent') return;\n\n const context = painter.context;\n\n const depthMode = painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n const colorMode = painter.colorModeForRenderPass();\n\n // When rendering to texture, coordinates are already sorted: primary by\n // proxy id and secondary sort is by Z.\n const renderingToTexture = painter.terrain && painter.terrain.renderingToTexture;\n const [stencilModes, coords] = painter.renderPass === 'translucent' && !renderingToTexture ?\n painter.stencilConfigForOverlap(tileIDs) : [{}, tileIDs];\n\n for (const coord of coords) {\n const tile = sourceCache.getTile(coord);\n if (tile.needsHillshadePrepare && painter.renderPass === 'offscreen') {\n prepareHillshade(painter, tile, layer, depthMode, StencilMode.disabled, colorMode);\n } else if (painter.renderPass === 'translucent') {\n const stencilMode = renderingToTexture && painter.terrain ?\n painter.terrain.stencilModeForRTTOverlap(coord) : stencilModes[coord.overscaledZ];\n renderHillshade(painter, coord, tile, layer, depthMode, stencilMode, colorMode);\n }\n }\n\n context.viewport.set([0, 0, painter.width, painter.height]);\n\n painter.resetStencilClippingMasks();\n}\n\nfunction renderHillshade(painter, coord, tile, layer, depthMode, stencilMode, colorMode) {\n const context = painter.context;\n const gl = context.gl;\n const fbo = tile.fbo;\n if (!fbo) return;\n painter.prepareDrawTile();\n\n const program = painter.useProgram('hillshade');\n\n context.activeTexture.set(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, fbo.colorAttachment.get());\n\n const uniformValues = hillshadeUniformValues(painter, tile, layer, painter.terrain ? coord.projMatrix : null);\n\n painter.prepareDrawProgram(context, program, coord.toUnwrapped());\n\n const {tileBoundsBuffer, tileBoundsIndexBuffer, tileBoundsSegments} = painter.getTileBoundsBuffers(tile);\n\n program.draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n uniformValues, layer.id, tileBoundsBuffer,\n tileBoundsIndexBuffer, tileBoundsSegments);\n}\n\nexport function prepareDEMTexture(painter: Painter, tile: Tile, dem: DEMData) {\n if (!tile.needsDEMTextureUpload) return;\n\n const context = painter.context;\n const gl = context.gl;\n\n context.pixelStoreUnpackPremultiplyAlpha.set(false);\n const textureStride = dem.stride;\n tile.demTexture = tile.demTexture || painter.getTileTexture(textureStride);\n const pixelData = dem.getPixels();\n if (tile.demTexture) {\n tile.demTexture.update(pixelData, {premultiply: false});\n } else {\n tile.demTexture = new Texture(context, pixelData, gl.RGBA, {premultiply: false});\n }\n tile.needsDEMTextureUpload = false;\n}\n\n// hillshade rendering is done in two steps. the prepare step first calculates the slope of the terrain in the x and y\n// directions for each pixel, and saves those values to a framebuffer texture in the r and g channels.\nfunction prepareHillshade(painter, tile, layer, depthMode, stencilMode, colorMode) {\n const context = painter.context;\n const gl = context.gl;\n if (!tile.dem) return;\n const dem: DEMData = tile.dem;\n\n context.activeTexture.set(gl.TEXTURE1);\n prepareDEMTexture(painter, tile, dem);\n assert(tile.demTexture);\n if (!tile.demTexture) return; // Silence flow.\n tile.demTexture.bind(gl.NEAREST, gl.CLAMP_TO_EDGE);\n const tileSize = dem.dim;\n\n context.activeTexture.set(gl.TEXTURE0);\n let fbo = tile.fbo;\n if (!fbo) {\n const renderTexture = new Texture(context, {width: tileSize, height: tileSize, data: null}, gl.RGBA);\n renderTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n\n fbo = tile.fbo = context.createFramebuffer(tileSize, tileSize, true);\n fbo.colorAttachment.set(renderTexture.texture);\n }\n\n context.bindFramebuffer.set(fbo.framebuffer);\n context.viewport.set([0, 0, tileSize, tileSize]);\n\n const {tileBoundsBuffer, tileBoundsIndexBuffer, tileBoundsSegments} = painter.getMercatorTileBoundsBuffers();\n\n painter.useProgram('hillshadePrepare').draw(context, gl.TRIANGLES,\n depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n hillshadeUniformPrepareValues(tile.tileID, dem),\n layer.id, tileBoundsBuffer,\n tileBoundsIndexBuffer, tileBoundsSegments);\n\n tile.needsHillshadePrepare = false;\n}\n","// @flow\n\nimport {\n Uniform1i,\n Uniform1f,\n UniformMatrix4f\n} from '../render/uniform_binding.js';\n\nimport type Context from '../gl/context.js';\nimport type {UniformValues, UniformLocations} from '../render/uniform_binding.js';\n\nexport type TerrainRasterUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_image0': Uniform1i,\n 'u_skirt_height': Uniform1f\n|};\n\nconst terrainRasterUniforms = (context: Context, locations: UniformLocations): TerrainRasterUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_image0': new Uniform1i(context, locations.u_image0),\n 'u_skirt_height': new Uniform1f(context, locations.u_skirt_height)\n});\n\nconst terrainRasterUniformValues = (\n matrix: Float32Array,\n skirtHeight: number\n): UniformValues<TerrainRasterUniformsType> => ({\n 'u_matrix': matrix,\n 'u_image0': 0,\n 'u_skirt_height': skirtHeight\n});\n\nexport {terrainRasterUniforms, terrainRasterUniformValues};\n","// @flow\n\nimport {\n Uniform1i,\n Uniform2f,\n Uniform3f,\n Uniform4f,\n UniformMatrix4f,\n Uniform1f,\n UniformMatrix3f\n} from '../render/uniform_binding.js';\nimport browser from '../util/browser.js';\n\nimport type Context from '../gl/context.js';\nimport type {UniformValues, UniformLocations} from '../render/uniform_binding.js';\n\nexport type GlobeRasterUniformsType = {|\n 'u_proj_matrix': UniformMatrix4f,\n 'u_globe_matrix': UniformMatrix4f,\n 'u_normalize_matrix': UniformMatrix4f,\n 'u_merc_matrix': UniformMatrix4f,\n 'u_zoom_transition': Uniform1f,\n 'u_merc_center': Uniform2f,\n 'u_image0': Uniform1i,\n 'u_grid_matrix': UniformMatrix3f,\n 'u_frustum_tl': Uniform3f,\n 'u_frustum_tr': Uniform3f,\n 'u_frustum_br': Uniform3f,\n 'u_frustum_bl': Uniform3f,\n 'u_globe_pos': Uniform3f,\n 'u_globe_radius': Uniform1f,\n 'u_viewport': Uniform2f\n|};\n\nexport type AtmosphereUniformsType = {|\n 'u_frustum_tl': Uniform3f,\n 'u_frustum_tr': Uniform3f,\n 'u_frustum_br': Uniform3f,\n 'u_frustum_bl': Uniform3f,\n 'u_horizon': Uniform1f,\n 'u_transition': Uniform1f,\n 'u_fadeout_range': Uniform1f,\n 'u_color': Uniform4f,\n 'u_high_color': Uniform4f,\n 'u_space_color': Uniform4f,\n 'u_star_intensity': Uniform1f,\n 'u_star_size': Uniform1f,\n 'u_star_density': Uniform1f,\n 'u_temporal_offset': Uniform1f,\n 'u_horizon_angle': Uniform1f,\n 'u_rotation_matrix': UniformMatrix4f\n|};\n\nconst globeRasterUniforms = (context: Context, locations: UniformLocations): GlobeRasterUniformsType => ({\n 'u_proj_matrix': new UniformMatrix4f(context, locations.u_proj_matrix),\n 'u_globe_matrix': new UniformMatrix4f(context, locations.u_globe_matrix),\n 'u_normalize_matrix': new UniformMatrix4f(context, locations.u_normalize_matrix),\n 'u_merc_matrix': new UniformMatrix4f(context, locations.u_merc_matrix),\n 'u_zoom_transition': new Uniform1f(context, locations.u_zoom_transition),\n 'u_merc_center': new Uniform2f(context, locations.u_merc_center),\n 'u_image0': new Uniform1i(context, locations.u_image0),\n 'u_grid_matrix': new UniformMatrix3f(context, locations.u_grid_matrix),\n 'u_frustum_tl': new Uniform3f(context, locations.u_frustum_tl),\n 'u_frustum_tr': new Uniform3f(context, locations.u_frustum_tr),\n 'u_frustum_br': new Uniform3f(context, locations.u_frustum_br),\n 'u_frustum_bl': new Uniform3f(context, locations.u_frustum_bl),\n 'u_globe_pos': new Uniform3f(context, locations.u_globe_pos),\n 'u_globe_radius': new Uniform1f(context, locations.u_globe_radius),\n 'u_viewport': new Uniform2f(context, locations.u_viewport)\n});\n\nconst atmosphereUniforms = (context: Context, locations: UniformLocations): AtmosphereUniformsType => ({\n 'u_frustum_tl': new Uniform3f(context, locations.u_frustum_tl),\n 'u_frustum_tr': new Uniform3f(context, locations.u_frustum_tr),\n 'u_frustum_br': new Uniform3f(context, locations.u_frustum_br),\n 'u_frustum_bl': new Uniform3f(context, locations.u_frustum_bl),\n 'u_horizon': new Uniform1f(context, locations.u_horizon),\n 'u_transition': new Uniform1f(context, locations.u_transition),\n 'u_fadeout_range': new Uniform1f(context, locations.u_fadeout_range),\n 'u_color': new Uniform4f(context, locations.u_color),\n 'u_high_color': new Uniform4f(context, locations.u_high_color),\n 'u_space_color': new Uniform4f(context, locations.u_space_color),\n 'u_star_intensity': new Uniform1f(context, locations.u_star_intensity),\n 'u_star_density': new Uniform1f(context, locations.u_star_density),\n 'u_star_size': new Uniform1f(context, locations.u_star_size),\n 'u_temporal_offset': new Uniform1f(context, locations.u_temporal_offset),\n 'u_horizon_angle': new Uniform1f(context, locations.u_horizon_angle),\n 'u_rotation_matrix': new UniformMatrix4f(context, locations.u_rotation_matrix)\n});\n\nconst globeRasterUniformValues = (\n projMatrix: Array<number>,\n globeMatrix: Float32Array,\n globeMercatorMatrix: Float32Array,\n normalizeMatrix: Float64Array,\n zoomTransition: number,\n mercCenter: [number, number],\n frustumDirTl: [number, number, number],\n frustumDirTr: [number, number, number],\n frustumDirBr: [number, number, number],\n frustumDirBl: [number, number, number],\n globePosition: [number, number, number],\n globeRadius: number,\n viewport: [number, number],\n gridMatrix: ?Array<number>\n): UniformValues<GlobeRasterUniformsType> => ({\n 'u_proj_matrix': Float32Array.from(projMatrix),\n 'u_globe_matrix': globeMatrix,\n 'u_normalize_matrix': Float32Array.from(normalizeMatrix),\n 'u_merc_matrix': globeMercatorMatrix,\n 'u_zoom_transition': zoomTransition,\n 'u_merc_center': mercCenter,\n 'u_image0': 0,\n 'u_frustum_tl': frustumDirTl,\n 'u_frustum_tr': frustumDirTr,\n 'u_frustum_br': frustumDirBr,\n 'u_frustum_bl': frustumDirBl,\n 'u_globe_pos': globePosition,\n 'u_globe_radius': globeRadius,\n 'u_viewport': viewport,\n 'u_grid_matrix': gridMatrix ? Float32Array.from(gridMatrix) : new Float32Array(9)\n});\n\nconst atmosphereUniformValues = (\n frustumDirTl: [number, number, number],\n frustumDirTr: [number, number, number],\n frustumDirBr: [number, number, number],\n frustumDirBl: [number, number, number],\n horizon: number,\n transitionT: number,\n fadeoutRange: number,\n color: [number, number, number, number],\n highColor: [number, number, number, number],\n spaceColor: [number, number, number, number],\n starIntensity: number,\n temporalOffset: number,\n horizonAngle: number,\n rotationMatrix: Float32Array\n): UniformValues<AtmosphereUniformsType> => ({\n 'u_frustum_tl': frustumDirTl,\n 'u_frustum_tr': frustumDirTr,\n 'u_frustum_br': frustumDirBr,\n 'u_frustum_bl': frustumDirBl,\n 'u_horizon': horizon,\n 'u_transition': transitionT,\n 'u_fadeout_range': fadeoutRange,\n 'u_color': color,\n 'u_high_color': highColor,\n 'u_space_color': spaceColor,\n 'u_star_intensity': starIntensity,\n 'u_star_size': 5.0 * browser.devicePixelRatio,\n 'u_star_density': 0.0,\n 'u_temporal_offset': temporalOffset,\n 'u_horizon_angle': horizonAngle,\n 'u_rotation_matrix': rotationMatrix\n});\n\nexport {globeRasterUniforms, globeRasterUniformValues, atmosphereUniforms, atmosphereUniformValues};\n\nexport type GlobeDefinesType = 'PROJECTION_GLOBE_VIEW' | 'GLOBE_POLES' | 'CUSTOM_ANTIALIASING';\n","// @flow\n\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {terrainRasterUniformValues} from './terrain_raster_program.js';\nimport {globeRasterUniformValues} from './globe_raster_program.js';\nimport {Terrain} from './terrain.js';\nimport Tile from '../source/tile.js';\nimport assert from 'assert';\nimport {easeCubicInOut} from '../util/util.js';\nimport browser from '../util/browser.js';\nimport {mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate.js';\nimport type Painter from '../render/painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport {OverscaledTileID, CanonicalTileID} from '../source/tile_id.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport ColorMode from '../gl/color_mode.js';\nimport {mat4} from 'gl-matrix';\nimport {\n calculateGlobeMercatorMatrix,\n globeToMercatorTransition,\n globePoleMatrixForTile,\n getGridMatrix,\n globeTileLatLngCorners,\n globeNormalizeECEF,\n globeTileBounds,\n globeUseCustomAntiAliasing,\n getLatitudinalLod\n} from '../geo/projection/globe_util.js';\nimport extend from '../style-spec/util/extend.js';\n\nexport {\n drawTerrainRaster,\n drawTerrainDepth\n};\n\ntype DEMChain = {\n startTime: number,\n phase: number,\n duration: number, // Interpolation duration in milliseconds\n from: Tile,\n to: Tile,\n queued: ?Tile\n};\n\nclass VertexMorphing {\n operations: {[string | number]: DEMChain };\n\n constructor() {\n this.operations = {};\n }\n\n newMorphing(key: number, from: Tile, to: Tile, now: number, duration: number) {\n assert(from.demTexture && to.demTexture);\n assert(from.tileID.key !== to.tileID.key);\n\n if (key in this.operations) {\n const op = this.operations[key];\n assert(op.from && op.to);\n // Queue the target tile unless it's being morphed to already\n if (op.to.tileID.key !== to.tileID.key)\n op.queued = to;\n } else {\n this.operations[key] = {\n startTime: now,\n phase: 0.0,\n duration,\n from,\n to,\n queued: null\n };\n }\n }\n\n getMorphValuesForProxy(key: number): ?{from: Tile, to: Tile, phase: number} {\n if (!(key in this.operations))\n return null;\n\n const op = this.operations[key];\n const from = op.from;\n const to = op.to;\n assert(from && to);\n\n return {from, to, phase: op.phase};\n }\n\n update(now: number) {\n for (const key in this.operations) {\n const op = this.operations[key];\n assert(op.from && op.to);\n\n op.phase = (now - op.startTime) / op.duration;\n\n // Start the queued operation if the current one is finished or the data has expired\n while (op.phase >= 1.0 || !this._validOp(op)) {\n if (!this._nextOp(op, now)) {\n delete this.operations[key];\n break;\n }\n }\n }\n }\n\n _nextOp(op: DEMChain, now: number): boolean {\n if (!op.queued)\n return false;\n op.from = op.to;\n op.to = op.queued;\n op.queued = null;\n op.phase = 0.0;\n op.startTime = now;\n return true;\n }\n\n _validOp(op: DEMChain): boolean {\n return op.from.hasData() && op.to.hasData();\n }\n}\n\nfunction demTileChanged(prev: ?Tile, next: ?Tile): boolean {\n if (prev == null || next == null)\n return false;\n if (!prev.hasData() || !next.hasData())\n return false;\n if (prev.demTexture == null || next.demTexture == null)\n return false;\n return prev.tileID.key !== next.tileID.key;\n}\n\nconst vertexMorphing = new VertexMorphing();\nconst SHADER_DEFAULT = 0;\nconst SHADER_MORPHING = 1;\nconst SHADER_TERRAIN_WIREFRAME = 2;\nconst defaultDuration = 250;\n\nconst shaderDefines = {\n \"0\": null,\n \"1\": 'TERRAIN_VERTEX_MORPHING',\n \"2\": 'TERRAIN_WIREFRAME'\n};\n\nfunction drawTerrainForGlobe(painter: Painter, terrain: Terrain, sourceCache: SourceCache, tileIDs: Array<OverscaledTileID>, now: number) {\n const context = painter.context;\n const gl = context.gl;\n\n let program, programMode;\n const showWireframe = painter.options.showTerrainWireframe ? SHADER_TERRAIN_WIREFRAME : SHADER_DEFAULT;\n const tr = painter.transform;\n const useCustomAntialiasing = globeUseCustomAntiAliasing(painter, context, tr);\n\n const setShaderMode = (mode, isWireframe) => {\n if (programMode === mode) return;\n const defines = [shaderDefines[mode], 'PROJECTION_GLOBE_VIEW'];\n\n if (useCustomAntialiasing) defines.push('CUSTOM_ANTIALIASING');\n if (isWireframe) defines.push(shaderDefines[showWireframe]);\n\n program = painter.useProgram('globeRaster', null, defines);\n programMode = mode;\n };\n\n const colorMode = painter.colorModeForRenderPass();\n const depthMode = new DepthMode(gl.LEQUAL, DepthMode.ReadWrite, painter.depthRangeFor3D);\n vertexMorphing.update(now);\n const globeMercatorMatrix = calculateGlobeMercatorMatrix(tr);\n const mercatorCenter = [mercatorXfromLng(tr.center.lng), mercatorYfromLat(tr.center.lat)];\n const batches = showWireframe ? [false, true] : [false];\n const sharedBuffers = painter.globeSharedBuffers;\n const viewport = [tr.width * browser.devicePixelRatio, tr.height * browser.devicePixelRatio];\n\n batches.forEach(isWireframe => {\n // This code assumes the rendering is batched into mesh terrain and then wireframe\n // terrain (if applicable) so that this is enough to ensure the correct program is\n // set when we switch from one to the other.\n programMode = -1;\n\n const primitive = isWireframe ? gl.LINES : gl.TRIANGLES;\n\n for (const coord of tileIDs) {\n const tile = sourceCache.getTile(coord);\n const stencilMode = StencilMode.disabled;\n\n const prevDemTile = terrain.prevTerrainTileForTile[coord.key];\n const nextDemTile = terrain.terrainTileForTile[coord.key];\n\n if (demTileChanged(prevDemTile, nextDemTile)) {\n vertexMorphing.newMorphing(coord.key, prevDemTile, nextDemTile, now, defaultDuration);\n }\n\n // Bind the main draped texture\n context.activeTexture.set(gl.TEXTURE0);\n tile.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n\n const morph = vertexMorphing.getMorphValuesForProxy(coord.key);\n const shaderMode = morph ? SHADER_MORPHING : SHADER_DEFAULT;\n const elevationOptions = {useDenormalizedUpVectorScale: true};\n\n if (morph) {\n extend(elevationOptions, {morphing: {srcDemTile: morph.from, dstDemTile: morph.to, phase: easeCubicInOut(morph.phase)}});\n }\n\n const globeMatrix = Float32Array.from(tr.globeMatrix);\n const tileCornersLatLng = globeTileLatLngCorners(coord.canonical);\n const tileCenterLatitude = (tileCornersLatLng[0][0] + tileCornersLatLng[1][0]) / 2.0;\n const latitudinalLod = getLatitudinalLod(tileCenterLatitude);\n const gridMatrix = getGridMatrix(coord.canonical, tileCornersLatLng, latitudinalLod);\n const normalizeMatrix = globeNormalizeECEF(globeTileBounds(coord.canonical));\n const uniformValues = globeRasterUniformValues(\n tr.projMatrix, globeMatrix, globeMercatorMatrix, normalizeMatrix, globeToMercatorTransition(tr.zoom),\n mercatorCenter, tr.frustumCorners.TL, tr.frustumCorners.TR, tr.frustumCorners.BR,\n tr.frustumCorners.BL, tr.globeCenterInViewSpace, tr.globeRadius, viewport, gridMatrix);\n\n setShaderMode(shaderMode, isWireframe);\n\n terrain.setupElevationDraw(tile, program, elevationOptions);\n\n painter.prepareDrawProgram(context, program, coord.toUnwrapped());\n\n if (sharedBuffers) {\n const [buffer, indexBuffer, segments] = isWireframe ?\n sharedBuffers.getWirefameBuffers(painter.context, latitudinalLod) :\n sharedBuffers.getGridBuffers(latitudinalLod);\n\n program.draw(context, primitive, depthMode, stencilMode, colorMode, CullFaceMode.backCCW,\n uniformValues, \"globe_raster\", buffer, indexBuffer, segments);\n }\n }\n });\n\n // Render the poles.\n if (sharedBuffers) {\n const defines = ['GLOBE_POLES', 'PROJECTION_GLOBE_VIEW'];\n if (useCustomAntialiasing) defines.push('CUSTOM_ANTIALIASING');\n\n program = painter.useProgram('globeRaster', null, defines);\n for (const coord of tileIDs) {\n // Fill poles by extrapolating adjacent border tiles\n const {x, y, z} = coord.canonical;\n const topCap = y === 0;\n const bottomCap = y === (1 << z) - 1;\n\n const [northPoleBuffer, southPoleBuffer, indexBuffer, segment] = sharedBuffers.getPoleBuffers(z);\n\n if (segment && (topCap || bottomCap)) {\n const tile = sourceCache.getTile(coord);\n\n // Bind the main draped texture\n context.activeTexture.set(gl.TEXTURE0);\n tile.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n\n let poleMatrix = globePoleMatrixForTile(z, x, tr);\n const normalizeMatrix = globeNormalizeECEF(globeTileBounds(coord.canonical));\n\n const drawPole = (program, vertexBuffer) => program.draw(\n context, gl.TRIANGLES, depthMode, StencilMode.disabled, colorMode, CullFaceMode.disabled,\n globeRasterUniformValues(tr.projMatrix, poleMatrix, poleMatrix, normalizeMatrix, 0.0, mercatorCenter,\n tr.frustumCorners.TL, tr.frustumCorners.TR, tr.frustumCorners.BR, tr.frustumCorners.BL,\n tr.globeCenterInViewSpace, tr.globeRadius, viewport), \"globe_pole_raster\", vertexBuffer,\n indexBuffer, segment);\n\n terrain.setupElevationDraw(tile, program, {});\n\n painter.prepareDrawProgram(context, program, coord.toUnwrapped());\n\n if (topCap) {\n drawPole(program, northPoleBuffer);\n }\n if (bottomCap) {\n poleMatrix = mat4.scale(mat4.create(), poleMatrix, [1, -1, 1]);\n drawPole(program, southPoleBuffer);\n }\n }\n }\n }\n}\n\nfunction drawTerrainRaster(painter: Painter, terrain: Terrain, sourceCache: SourceCache, tileIDs: Array<OverscaledTileID>, now: number) {\n if (painter.transform.projection.name === 'globe') {\n drawTerrainForGlobe(painter, terrain, sourceCache, tileIDs, now);\n } else {\n const context = painter.context;\n const gl = context.gl;\n\n let program, programMode;\n const showWireframe = painter.options.showTerrainWireframe ? SHADER_TERRAIN_WIREFRAME : SHADER_DEFAULT;\n\n const setShaderMode = (mode, isWireframe) => {\n if (programMode === mode)\n return;\n const modes = [shaderDefines[mode]];\n if (isWireframe) modes.push(shaderDefines[showWireframe]);\n program = painter.useProgram('terrainRaster', null, modes);\n programMode = mode;\n };\n\n const colorMode = painter.colorModeForRenderPass();\n const depthMode = new DepthMode(gl.LEQUAL, DepthMode.ReadWrite, painter.depthRangeFor3D);\n vertexMorphing.update(now);\n const tr = painter.transform;\n const skirt = skirtHeight(tr.zoom) * terrain.exaggeration();\n\n const batches = showWireframe ? [false, true] : [false];\n\n batches.forEach(isWireframe => {\n // This code assumes the rendering is batched into mesh terrain and then wireframe\n // terrain (if applicable) so that this is enough to ensure the correct program is\n // set when we switch from one to the other.\n programMode = -1;\n\n const primitive = isWireframe ? gl.LINES : gl.TRIANGLES;\n const [buffer, segments] = isWireframe ? terrain.getWirefameBuffer() : [terrain.gridIndexBuffer, terrain.gridSegments];\n\n for (const coord of tileIDs) {\n const tile = sourceCache.getTile(coord);\n const stencilMode = StencilMode.disabled;\n\n const prevDemTile = terrain.prevTerrainTileForTile[coord.key];\n const nextDemTile = terrain.terrainTileForTile[coord.key];\n\n if (demTileChanged(prevDemTile, nextDemTile)) {\n vertexMorphing.newMorphing(coord.key, prevDemTile, nextDemTile, now, defaultDuration);\n }\n\n // Bind the main draped texture\n context.activeTexture.set(gl.TEXTURE0);\n tile.texture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE, gl.LINEAR_MIPMAP_NEAREST);\n\n const morph = vertexMorphing.getMorphValuesForProxy(coord.key);\n const shaderMode = morph ? SHADER_MORPHING : SHADER_DEFAULT;\n let elevationOptions;\n\n if (morph) {\n elevationOptions = {morphing: {srcDemTile: morph.from, dstDemTile: morph.to, phase: easeCubicInOut(morph.phase)}};\n }\n\n const uniformValues = terrainRasterUniformValues(coord.projMatrix, isEdgeTile(coord.canonical, tr.renderWorldCopies) ? skirt / 10 : skirt);\n setShaderMode(shaderMode, isWireframe);\n\n terrain.setupElevationDraw(tile, program, elevationOptions);\n\n painter.prepareDrawProgram(context, program, coord.toUnwrapped());\n\n program.draw(context, primitive, depthMode, stencilMode, colorMode, CullFaceMode.backCCW,\n uniformValues, \"terrain_raster\", terrain.gridBuffer, buffer, segments);\n }\n });\n }\n}\n\nfunction drawTerrainDepth(painter: Painter, terrain: Terrain, sourceCache: SourceCache, tileIDs: Array<OverscaledTileID>) {\n if (painter.transform.projection.name === 'globe') {\n return;\n }\n\n assert(painter.renderPass === 'offscreen');\n\n const context = painter.context;\n const gl = context.gl;\n\n context.clear({depth: 1});\n const program = painter.useProgram('terrainDepth');\n const depthMode = new DepthMode(gl.LESS, DepthMode.ReadWrite, painter.depthRangeFor3D);\n\n for (const coord of tileIDs) {\n const tile = sourceCache.getTile(coord);\n const uniformValues = terrainRasterUniformValues(coord.projMatrix, 0);\n terrain.setupElevationDraw(tile, program);\n\n program.draw(context, gl.TRIANGLES, depthMode, StencilMode.disabled, ColorMode.unblended, CullFaceMode.backCCW,\n uniformValues, \"terrain_depth\", terrain.gridBuffer, terrain.gridIndexBuffer, terrain.gridNoSkirtSegments);\n }\n}\n\nfunction skirtHeight(zoom) {\n // Skirt height calculation is heuristic: provided value hides\n // seams between tiles and it is not too large: 9 at zoom 22, ~20000m at zoom 0.\n return 6 * Math.pow(1.5, 22 - zoom);\n}\n\nfunction isEdgeTile(cid: CanonicalTileID, renderWorldCopies: boolean): boolean {\n const numTiles = 1 << cid.z;\n return (!renderWorldCopies && (cid.x === 0 || cid.x === numTiles - 1)) || cid.y === 0 || cid.y === numTiles - 1;\n}\n\nexport {\n VertexMorphing\n};\n","// @flow\n\nimport {UniformMatrix4f} from '../uniform_binding.js';\n\nimport type Context from '../../gl/context.js';\nimport type {UniformValues, UniformLocations} from '../uniform_binding.js';\n\nexport type ClippingMaskUniformsType = {|\n 'u_matrix': UniformMatrix4f\n|};\n\nconst clippingMaskUniforms = (context: Context, locations: UniformLocations): ClippingMaskUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix)\n});\n\nconst clippingMaskUniformValues = (matrix: Float32Array): UniformValues<ClippingMaskUniformsType> => ({\n 'u_matrix': matrix\n});\n\nexport {clippingMaskUniforms, clippingMaskUniformValues};\n","// @flow\n\nimport type SourceCache from '../source/source_cache.js';\nimport {clamp} from '../util/util.js';\nimport browser from '../util/browser.js';\nimport Tile from '../source/tile.js';\nimport type Transform from '../geo/transform.js';\n\nexport type RasterFade = {|\n opacity: number,\n mix: number,\n|};\n\nfunction rasterFade(tile: Tile, parentTile: ?Tile, sourceCache: SourceCache, transform: Transform, fadeDuration: number): RasterFade {\n if (fadeDuration > 0) {\n const now = browser.now();\n const sinceTile = (now - tile.timeAdded) / fadeDuration;\n const sinceParent = parentTile ? (now - parentTile.timeAdded) / fadeDuration : -1;\n\n const source = sourceCache.getSource();\n const idealZ = transform.coveringZoomLevel({\n tileSize: source.tileSize,\n roundZoom: source.roundZoom\n });\n\n // if no parent or parent is older, fade in; if parent is younger, fade out\n const fadeIn = !parentTile || Math.abs(parentTile.tileID.overscaledZ - idealZ) > Math.abs(tile.tileID.overscaledZ - idealZ);\n\n const childOpacity = (fadeIn && tile.refreshedUponExpiration) ? 1 : clamp(fadeIn ? sinceTile : 1 - sinceParent, 0, 1);\n\n // we don't crossfade tiles that were just refreshed upon expiring:\n // once they're old enough to pass the crossfading threshold\n // (fadeDuration), unset the `refreshedUponExpiration` flag so we don't\n // incorrectly fail to crossfade them when zooming\n if (tile.refreshedUponExpiration && sinceTile >= 1) tile.refreshedUponExpiration = false;\n\n if (parentTile) {\n return {\n opacity: 1,\n mix: 1 - childOpacity\n };\n } else {\n return {\n opacity: childOpacity,\n mix: 0\n };\n }\n } else {\n return {\n opacity: 1,\n mix: 0\n };\n }\n}\n\nexport default rasterFade;\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\nimport SourceCache from '../source/source_cache.js';\nimport {OverscaledTileID} from '../source/tile_id.js';\nimport Tile from '../source/tile.js';\nimport boundsAttributes from '../data/bounds_attributes.js';\nimport {RasterBoundsArray, TriangleIndexArray, LineIndexArray} from '../data/array_types.js';\nimport SegmentVector from '../data/segment.js';\nimport Texture from '../render/texture.js';\nimport Program from '../render/program.js';\nimport {Uniform1i, Uniform1f, Uniform2f, Uniform3f, Uniform4f, UniformMatrix4f} from '../render/uniform_binding.js';\nimport {prepareDEMTexture} from '../render/draw_hillshade.js';\nimport EXTENT from '../data/extent.js';\nimport {clamp, warnOnce} from '../util/util.js';\nimport assert from 'assert';\nimport {vec3, mat4, vec4} from 'gl-matrix';\nimport getWorkerPool from '../util/global_worker_pool.js';\nimport Dispatcher from '../util/dispatcher.js';\nimport GeoJSONSource from '../source/geojson_source.js';\nimport ImageSource from '../source/image_source.js';\nimport RasterDEMTileSource from '../source/raster_dem_tile_source.js';\nimport RasterTileSource from '../source/raster_tile_source.js';\nimport Color from '../style-spec/util/color.js';\nimport type {Callback} from '../types/callback.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport {DepthStencilAttachment} from '../gl/value.js';\nimport {drawTerrainRaster, drawTerrainDepth} from './draw_terrain_raster.js';\nimport type RasterStyleLayer from '../style/style_layer/raster_style_layer.js';\nimport {Elevation} from './elevation.js';\nimport Framebuffer from '../gl/framebuffer.js';\nimport ColorMode from '../gl/color_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {clippingMaskUniformValues} from '../render/program/clipping_mask_program.js';\nimport MercatorCoordinate, {mercatorZfromAltitude} from '../geo/mercator_coordinate.js';\nimport browser from '../util/browser.js';\nimport DEMData from '../data/dem_data.js';\nimport {DrapeRenderMode} from '../style/terrain.js';\nimport rasterFade from '../render/raster_fade.js';\nimport {create as createSource} from '../source/source.js';\nimport {RGBAImage} from '../util/image.js';\nimport {GLOBE_METERS_TO_ECEF} from '../geo/projection/globe_util.js';\n\nimport type Map from '../ui/map.js';\nimport type Painter from '../render/painter.js';\nimport type Style from '../style/style.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type Context from '../gl/context.js';\nimport type {UniformLocations, UniformValues} from '../render/uniform_binding.js';\nimport type Transform from '../geo/transform.js';\nimport type {DEMEncoding} from '../data/dem_data.js';\nimport type {Vec3, Vec4} from 'gl-matrix';\n\nconst GRID_DIM = 128;\n\nconst FBO_POOL_SIZE = 5;\nconst RENDER_CACHE_MAX_SIZE = 50;\n\ntype RenderBatch = {\n start: number;\n end: number;\n}\n\nclass MockSourceCache extends SourceCache {\n constructor(map: Map) {\n const sourceSpec = {type: 'raster-dem', maxzoom: map.transform.maxZoom};\n const sourceDispatcher = new Dispatcher(getWorkerPool(), null);\n const source = createSource('mock-dem', sourceSpec, sourceDispatcher, map.style);\n\n super('mock-dem', source, false);\n\n source.setEventedParent(this);\n\n this._sourceLoaded = true;\n }\n\n _loadTile(tile: Tile, callback: Callback<void>) {\n tile.state = 'loaded';\n callback(null);\n }\n}\n\n/**\n * Proxy source cache gets ideal screen tile cover coordinates. All the other\n * source caches's coordinates get mapped to subrects of proxy coordinates (or\n * vice versa, subrects of larger tiles from all source caches get mapped to\n * full proxy tile). This happens on every draw call in Terrain.updateTileBinding.\n * Approach is used here for terrain : all the visible source tiles of all the\n * source caches get rendered to proxy source cache textures and then draped over\n * terrain. It is in future reusable for handling overscalling as buckets could be\n * constructed only for proxy tile content, not for full overscalled vector tile.\n */\nclass ProxySourceCache extends SourceCache {\n renderCache: Array<FBO>;\n renderCachePool: Array<number>;\n proxyCachedFBO: {[string | number]: {[string | number]: number}};\n\n constructor(map: Map) {\n\n const source = createSource('proxy', {\n type: 'geojson',\n maxzoom: map.transform.maxZoom\n }, new Dispatcher(getWorkerPool(), null), map.style);\n\n super('proxy', source, false);\n\n source.setEventedParent(this);\n\n // This source is not to be added as a map source: we use it's tile management.\n // For that, initialize internal structures used for tile cover update.\n this.map = ((this.getSource(): any): GeoJSONSource).map = map;\n this.used = this._sourceLoaded = true;\n this.renderCache = [];\n this.renderCachePool = [];\n this.proxyCachedFBO = {};\n }\n\n // Override for transient nature of cover here: don't cache and retain.\n update(transform: Transform, tileSize?: number, updateForTerrain?: boolean) { // eslint-disable-line no-unused-vars\n if (transform.freezeTileCoverage) { return; }\n this.transform = transform;\n const idealTileIDs = transform.coveringTiles({\n tileSize: this._source.tileSize,\n minzoom: this._source.minzoom,\n maxzoom: this._source.maxzoom,\n roundZoom: this._source.roundZoom,\n reparseOverscaled: this._source.reparseOverscaled\n });\n\n const incoming: {[string]: string} = idealTileIDs.reduce((acc, tileID) => {\n acc[tileID.key] = '';\n if (!this._tiles[tileID.key]) {\n const tile = new Tile(tileID, this._source.tileSize * tileID.overscaleFactor(), transform.tileZoom);\n tile.state = 'loaded';\n this._tiles[tileID.key] = tile;\n }\n return acc;\n }, {});\n\n for (const id in this._tiles) {\n if (!(id in incoming)) {\n this.freeFBO(id);\n this._tiles[id].unloadVectorData();\n delete this._tiles[id];\n }\n }\n }\n\n freeFBO(id: string) {\n const fbos = this.proxyCachedFBO[id];\n if (fbos !== undefined) {\n const fboIds = ((Object.values(fbos): any): Array<number>);\n this.renderCachePool.push(...fboIds);\n delete this.proxyCachedFBO[id];\n }\n }\n\n deallocRenderCache() {\n this.renderCache.forEach(fbo => fbo.fb.destroy());\n this.renderCache = [];\n this.renderCachePool = [];\n this.proxyCachedFBO = {};\n }\n}\n\n/**\n * Canonical, wrap and overscaledZ contain information of original source cache tile.\n * This tile gets ortho-rendered to proxy tile (defined by proxyTileKey).\n * `posMatrix` holds orthographic, scaling and translation information that is used\n * for rendering original tile content to a proxy tile. Proxy tile covers whole\n * or sub-rectangle of the original tile.\n */\nclass ProxiedTileID extends OverscaledTileID {\n proxyTileKey: number;\n\n constructor(tileID: OverscaledTileID, proxyTileKey: number, projMatrix: Float32Array) {\n super(tileID.overscaledZ, tileID.wrap, tileID.canonical.z, tileID.canonical.x, tileID.canonical.y);\n this.proxyTileKey = proxyTileKey;\n this.projMatrix = projMatrix;\n }\n}\n\ntype OverlapStencilType = false | 'Clip' | 'Mask';\ntype FBO = {fb: Framebuffer, tex: Texture, dirty: boolean};\n\nexport class Terrain extends Elevation {\n terrainTileForTile: {[number | string]: Tile};\n prevTerrainTileForTile: {[number | string]: Tile};\n painter: Painter;\n sourceCache: SourceCache;\n gridBuffer: VertexBuffer;\n gridIndexBuffer: IndexBuffer;\n gridSegments: SegmentVector;\n gridNoSkirtSegments: SegmentVector;\n wireframeSegments: SegmentVector;\n wireframeIndexBuffer: IndexBuffer;\n proxiedCoords: {[string]: Array<ProxiedTileID>};\n proxyCoords: Array<OverscaledTileID>;\n proxyToSource: {[number]: {[string]: Array<ProxiedTileID>}};\n proxySourceCache: ProxySourceCache;\n renderingToTexture: boolean;\n _style: Style;\n _mockSourceCache: MockSourceCache;\n orthoMatrix: Float32Array;\n enabled: boolean;\n renderMode: number;\n\n _visibleDemTiles: Array<Tile>;\n _sourceTilesOverlap: {[string]: boolean};\n _overlapStencilMode: StencilMode;\n _overlapStencilType: OverlapStencilType;\n _stencilRef: number;\n\n _exaggeration: number;\n _depthFBO: ?Framebuffer;\n _depthTexture: ?Texture;\n _previousZoom: number;\n _updateTimestamp: number;\n _useVertexMorphing: boolean;\n pool: Array<FBO>;\n renderedToTile: boolean;\n _drapedRenderBatches: Array<RenderBatch>;\n _sharedDepthStencil: WebGLRenderbuffer;\n\n _findCoveringTileCache: {[string]: {[number]: ?number}};\n\n _tilesDirty: {[string]: {[number]: boolean}};\n _invalidateRenderCache: boolean;\n\n _emptyDepthBufferTexture: ?Texture;\n _emptyDEMTexture: ?Texture;\n _initializing: ?boolean;\n _emptyDEMTextureDirty: ?boolean;\n\n constructor(painter: Painter, style: Style) {\n super();\n this.painter = painter;\n this.terrainTileForTile = {};\n this.prevTerrainTileForTile = {};\n\n // Terrain rendering grid is 129x129 cell grid, made by 130x130 points.\n // 130 vertices map to 128 DEM data + 1px padding on both sides.\n // DEM texture is padded (1, 1, 1, 1) and padding pixels are backfilled\n // by neighboring tile edges. This way we achieve tile stitching as\n // edge vertices from neighboring tiles evaluate to the same 3D point.\n const [triangleGridArray, triangleGridIndices, skirtIndicesOffset] = createGrid(GRID_DIM + 1);\n const context = painter.context;\n this.gridBuffer = context.createVertexBuffer(triangleGridArray, boundsAttributes.members);\n this.gridIndexBuffer = context.createIndexBuffer(triangleGridIndices);\n this.gridSegments = SegmentVector.simpleSegment(0, 0, triangleGridArray.length, triangleGridIndices.length);\n this.gridNoSkirtSegments = SegmentVector.simpleSegment(0, 0, triangleGridArray.length, skirtIndicesOffset);\n this.proxyCoords = [];\n this.proxiedCoords = {};\n this._visibleDemTiles = [];\n this._drapedRenderBatches = [];\n this._sourceTilesOverlap = {};\n this.proxySourceCache = new ProxySourceCache(style.map);\n this.orthoMatrix = mat4.create();\n mat4.ortho(this.orthoMatrix, 0, EXTENT, 0, EXTENT, 0, 1);\n const gl = context.gl;\n this._overlapStencilMode = new StencilMode({func: gl.GEQUAL, mask: 0xFF}, 0, 0xFF, gl.KEEP, gl.KEEP, gl.REPLACE);\n this._previousZoom = painter.transform.zoom;\n this.pool = [];\n this._findCoveringTileCache = {};\n this._tilesDirty = {};\n this.style = style;\n this._useVertexMorphing = true;\n this._exaggeration = 1;\n this._mockSourceCache = new MockSourceCache(style.map);\n }\n\n set style(style: Style) {\n style.on('data', this._onStyleDataEvent.bind(this));\n style.on('neworder', this._checkRenderCacheEfficiency.bind(this));\n this._style = style;\n this._checkRenderCacheEfficiency();\n }\n\n /*\n * Validate terrain and update source cache used for elevation.\n * Explicitly pass transform to update elevation (Transform.updateElevation)\n * before using transform for source cache update.\n * cameraChanging is true when camera is zooming, panning or orbiting.\n */\n update(style: Style, transform: Transform, cameraChanging: boolean) {\n if (style && style.terrain) {\n if (this._style !== style) {\n this.style = style;\n }\n this.enabled = true;\n const terrainProps = style.terrain.properties;\n const isDrapeModeDeferred = style.terrain.drapeRenderMode === DrapeRenderMode.deferred;\n this.sourceCache = isDrapeModeDeferred ? this._mockSourceCache :\n ((style._getSourceCache(terrainProps.get('source')): any): SourceCache);\n this._exaggeration = terrainProps.get('exaggeration');\n\n const updateSourceCache = () => {\n if (this.sourceCache.used) {\n warnOnce(`Raster DEM source '${this.sourceCache.id}' is used both for terrain and as layer source.\\n` +\n 'This leads to lower resolution of hillshade. For full hillshade resolution but higher memory consumption, define another raster DEM source.');\n }\n // Lower tile zoom is sufficient for terrain, given the size of terrain grid.\n const scaledDemTileSize = this.getScaledDemTileSize();\n // Dem tile needs to be parent or at least of the same zoom level as proxy tile.\n // Tile cover roundZoom behavior is set to the same as for proxy (false) in SourceCache.update().\n this.sourceCache.update(transform, scaledDemTileSize, true);\n // As a result of update, we get new set of tiles: reset lookup cache.\n this.resetTileLookupCache(this.sourceCache.id);\n };\n\n if (!this.sourceCache.usedForTerrain) {\n // Init cache entry.\n this.resetTileLookupCache(this.sourceCache.id);\n // When toggling terrain on/off load available terrain tiles from cache\n // before reading elevation at center.\n this.sourceCache.usedForTerrain = true;\n updateSourceCache();\n this._initializing = true;\n }\n\n updateSourceCache();\n // Camera, when changing, gets constrained over terrain. Issue constrainCameraOverTerrain = true\n // here to cover potential under terrain situation on data or style change.\n transform.updateElevation(!cameraChanging);\n\n // Reset tile lookup cache and update draped tiles coordinates.\n this.resetTileLookupCache(this.proxySourceCache.id);\n this.proxySourceCache.update(transform);\n\n this._emptyDEMTextureDirty = true;\n } else {\n this._disable();\n }\n }\n\n resetTileLookupCache(sourceCacheID: string) {\n this._findCoveringTileCache[sourceCacheID] = {};\n }\n\n getScaledDemTileSize(): number {\n const demScale = this.sourceCache.getSource().tileSize / GRID_DIM;\n const proxyTileSize = this.proxySourceCache.getSource().tileSize;\n return demScale * proxyTileSize;\n }\n\n _checkRenderCacheEfficiency() {\n const renderCacheInfo = this.renderCacheEfficiency(this._style);\n if (this._style.map._optimizeForTerrain) {\n assert(renderCacheInfo.efficiency === 100);\n } else if (renderCacheInfo.efficiency !== 100) {\n warnOnce(`Terrain render cache efficiency is not optimal (${renderCacheInfo.efficiency}%) and performance\n may be affected negatively, consider placing all background, fill and line layers before layer\n with id '${renderCacheInfo.firstUndrapedLayer}' or create a map using optimizeForTerrain: true option.`);\n }\n }\n\n _onStyleDataEvent(event: any) {\n if (event.coord && event.dataType === 'source') {\n this._clearRenderCacheForTile(event.sourceCacheId, event.coord);\n } else if (event.dataType === 'style') {\n this._invalidateRenderCache = true;\n }\n }\n\n // Terrain\n _disable() {\n if (!this.enabled) return;\n this.enabled = false;\n this._sharedDepthStencil = undefined;\n this.proxySourceCache.deallocRenderCache();\n if (this._style) {\n for (const id in this._style._sourceCaches) {\n this._style._sourceCaches[id].usedForTerrain = false;\n }\n }\n }\n\n destroy() {\n this._disable();\n if (this._emptyDEMTexture) this._emptyDEMTexture.destroy();\n if (this._emptyDepthBufferTexture) this._emptyDepthBufferTexture.destroy();\n this.pool.forEach(fbo => fbo.fb.destroy());\n this.pool = [];\n if (this._depthFBO) {\n this._depthFBO.destroy();\n this._depthFBO = undefined;\n this._depthTexture = undefined;\n }\n }\n\n // Implements Elevation::_source.\n _source(): ?SourceCache {\n return this.enabled ? this.sourceCache : null;\n }\n\n // Implements Elevation::exaggeration.\n exaggeration(): number {\n return this._exaggeration;\n }\n\n get visibleDemTiles(): Array<Tile> {\n return this._visibleDemTiles;\n }\n\n get drapeBufferSize(): [number, number] {\n const extent = this.proxySourceCache.getSource().tileSize * 2; // *2 is to avoid upscaling bitmap on zoom.\n return [extent, extent];\n }\n\n set useVertexMorphing(enable: boolean) {\n this._useVertexMorphing = enable;\n }\n\n // For every renderable coordinate in every source cache, assign one proxy\n // tile (see _setupProxiedCoordsForOrtho). Mapping of source tile to proxy\n // tile is modeled by ProxiedTileID. In general case, source and proxy tile\n // are of different zoom: ProxiedTileID.projMatrix models ortho, scale and\n // translate from source to proxy. This matrix is used when rendering source\n // tile to proxy tile's texture.\n // One proxy tile can have multiple source tiles, or pieces of source tiles,\n // that get rendered to it.\n // For each proxy tile we assign one terrain tile (_assignTerrainTiles). The\n // terrain tile provides elevation data when rendering (draping) proxy tile\n // texture over terrain grid.\n updateTileBinding(sourcesCoords: {[string]: Array<OverscaledTileID>}) {\n if (!this.enabled) return;\n this.prevTerrainTileForTile = this.terrainTileForTile;\n\n const psc = this.proxySourceCache;\n const tr = this.painter.transform;\n if (this._initializing) {\n // Don't activate terrain until center tile gets loaded.\n this._initializing = tr._centerAltitude === 0 && this.getAtPointOrZero(MercatorCoordinate.fromLngLat(tr.center), -1) === -1;\n this._emptyDEMTextureDirty = !this._initializing;\n }\n\n const coords = this.proxyCoords = psc.getIds().map((id) => {\n const tileID = psc.getTileByID(id).tileID;\n tileID.projMatrix = tr.calculateProjMatrix(tileID.toUnwrapped());\n return tileID;\n });\n sortByDistanceToCamera(coords, this.painter);\n this._previousZoom = tr.zoom;\n\n const previousProxyToSource = this.proxyToSource || {};\n this.proxyToSource = {};\n coords.forEach((tileID) => {\n this.proxyToSource[tileID.key] = {};\n });\n\n this.terrainTileForTile = {};\n const sourceCaches = this._style._sourceCaches;\n for (const id in sourceCaches) {\n const sourceCache = sourceCaches[id];\n if (!sourceCache.used) continue;\n if (sourceCache !== this.sourceCache) this.resetTileLookupCache(sourceCache.id);\n this._setupProxiedCoordsForOrtho(sourceCache, sourcesCoords[id], previousProxyToSource);\n if (sourceCache.usedForTerrain) continue;\n const coordinates = sourcesCoords[id];\n if (sourceCache.getSource().reparseOverscaled) {\n // Do this for layers that are not rasterized to proxy tile.\n this._assignTerrainTiles(coordinates);\n }\n }\n\n // Background has no source. Using proxy coords with 1-1 ortho (this.proxiedCoords[psc.id])\n // when rendering background to proxy tiles.\n this.proxiedCoords[psc.id] = coords.map(tileID => new ProxiedTileID(tileID, tileID.key, this.orthoMatrix));\n this._assignTerrainTiles(coords);\n this._prepareDEMTextures();\n this._setupDrapedRenderBatches();\n this._initFBOPool();\n this._setupRenderCache(previousProxyToSource);\n\n this.renderingToTexture = false;\n this._updateTimestamp = browser.now();\n\n // Gather all dem tiles that are assigned to proxy tiles\n const visibleKeys = {};\n this._visibleDemTiles = [];\n\n for (const id of this.proxyCoords) {\n const demTile = this.terrainTileForTile[id.key];\n if (!demTile)\n continue;\n const key = demTile.tileID.key;\n if (key in visibleKeys)\n continue;\n this._visibleDemTiles.push(demTile);\n visibleKeys[key] = key;\n }\n\n }\n\n _assignTerrainTiles(coords: Array<OverscaledTileID>) {\n if (this._initializing) return;\n coords.forEach((tileID) => {\n if (this.terrainTileForTile[tileID.key]) return;\n const demTile = this._findTileCoveringTileID(tileID, this.sourceCache);\n if (demTile) this.terrainTileForTile[tileID.key] = demTile;\n });\n }\n\n _prepareDEMTextures() {\n const context = this.painter.context;\n const gl = context.gl;\n for (const key in this.terrainTileForTile) {\n const tile = this.terrainTileForTile[key];\n const dem = tile.dem;\n if (dem && (!tile.demTexture || tile.needsDEMTextureUpload)) {\n context.activeTexture.set(gl.TEXTURE1);\n prepareDEMTexture(this.painter, tile, dem);\n }\n }\n }\n\n _prepareDemTileUniforms(proxyTile: Tile, demTile: ?Tile, uniforms: UniformValues<TerrainUniformsType>, uniformSuffix: ?string): boolean {\n if (!demTile || demTile.demTexture == null)\n return false;\n\n assert(demTile.dem);\n const proxyId = proxyTile.tileID.canonical;\n const demId = demTile.tileID.canonical;\n const demScaleBy = Math.pow(2, demId.z - proxyId.z);\n const suffix = uniformSuffix || \"\";\n uniforms[`u_dem_tl${suffix}`] = [proxyId.x * demScaleBy % 1, proxyId.y * demScaleBy % 1];\n uniforms[`u_dem_scale${suffix}`] = demScaleBy;\n return true;\n }\n\n get emptyDEMTexture(): Texture {\n return !this._emptyDEMTextureDirty && this._emptyDEMTexture ?\n this._emptyDEMTexture : this._updateEmptyDEMTexture();\n }\n\n get emptyDepthBufferTexture(): Texture {\n const context = this.painter.context;\n const gl = context.gl;\n if (!this._emptyDepthBufferTexture) {\n const image = new RGBAImage({width: 1, height: 1}, Uint8Array.of(255, 255, 255, 255));\n this._emptyDepthBufferTexture = new Texture(context, image, gl.RGBA, {premultiply: false});\n }\n return this._emptyDepthBufferTexture;\n }\n\n _getLoadedAreaMinimum(): number {\n let nonzero = 0;\n const min = this._visibleDemTiles.reduce((acc, tile) => {\n if (!tile.dem) return acc;\n const m = tile.dem.tree.minimums[0];\n acc += m;\n if (m > 0) nonzero++;\n return acc;\n }, 0);\n return nonzero ? min / nonzero : 0;\n }\n\n _updateEmptyDEMTexture(): Texture {\n const context = this.painter.context;\n const gl = context.gl;\n context.activeTexture.set(gl.TEXTURE2);\n\n const min = this._getLoadedAreaMinimum();\n const image = new RGBAImage(\n {width: 1, height: 1},\n new Uint8Array(DEMData.pack(min, ((this.sourceCache.getSource(): any): RasterDEMTileSource).encoding))\n );\n\n this._emptyDEMTextureDirty = false;\n let texture = this._emptyDEMTexture;\n if (!texture) {\n texture = this._emptyDEMTexture = new Texture(context, image, gl.RGBA, {premultiply: false});\n } else {\n texture.update(image, {premultiply: false});\n }\n return texture;\n }\n\n // useDepthForOcclusion: Pre-rendered depth to texture (this._depthTexture) is\n // used to hide (actually moves all object's vertices out of viewport).\n // useMeterToDem: u_meter_to_dem uniform is not used for all terrain programs,\n // optimization to avoid unnecessary computation and upload.\n setupElevationDraw(tile: Tile, program: Program<*>,\n options?: {\n useDepthForOcclusion?: boolean,\n useMeterToDem?: boolean,\n labelPlaneMatrixInv?: ?Float32Array,\n morphing?: { srcDemTile: Tile, dstDemTile: Tile, phase: number },\n useDenormalizedUpVectorScale?: boolean\n }) {\n const context = this.painter.context;\n const gl = context.gl;\n const uniforms = defaultTerrainUniforms(((this.sourceCache.getSource(): any): RasterDEMTileSource).encoding);\n uniforms['u_dem_size'] = this.sourceCache.getSource().tileSize;\n uniforms['u_exaggeration'] = this.exaggeration();\n\n const tr = this.painter.transform;\n const projection = tr.projection;\n\n const id = tile.tileID.canonical;\n uniforms['u_tile_tl_up'] = (projection.upVector(id, 0, 0): any);\n uniforms['u_tile_tr_up'] = (projection.upVector(id, EXTENT, 0): any);\n uniforms['u_tile_br_up'] = (projection.upVector(id, EXTENT, EXTENT): any);\n uniforms['u_tile_bl_up'] = (projection.upVector(id, 0, EXTENT): any);\n if (options && options.useDenormalizedUpVectorScale) {\n uniforms['u_tile_up_scale'] = GLOBE_METERS_TO_ECEF;\n } else {\n uniforms['u_tile_up_scale'] = projection.upVectorScale(id, tr.center.lat, tr.worldSize).metersToTile;\n }\n\n let demTile = null;\n let prevDemTile = null;\n let morphingPhase = 1.0;\n\n if (options && options.morphing && this._useVertexMorphing) {\n const srcTile = options.morphing.srcDemTile;\n const dstTile = options.morphing.dstDemTile;\n morphingPhase = options.morphing.phase;\n\n if (srcTile && dstTile) {\n if (this._prepareDemTileUniforms(tile, srcTile, uniforms, \"_prev\"))\n prevDemTile = srcTile;\n if (this._prepareDemTileUniforms(tile, dstTile, uniforms))\n demTile = dstTile;\n }\n }\n\n if (prevDemTile && demTile) {\n // Both DEM textures are expected to be correctly set if geomorphing is enabled\n context.activeTexture.set(gl.TEXTURE2);\n (demTile.demTexture: any).bind(gl.NEAREST, gl.CLAMP_TO_EDGE, gl.NEAREST);\n context.activeTexture.set(gl.TEXTURE4);\n (prevDemTile.demTexture: any).bind(gl.NEAREST, gl.CLAMP_TO_EDGE, gl.NEAREST);\n\n uniforms[\"u_dem_lerp\"] = morphingPhase;\n } else {\n demTile = this.terrainTileForTile[tile.tileID.key];\n context.activeTexture.set(gl.TEXTURE2);\n const demTexture = this._prepareDemTileUniforms(tile, demTile, uniforms) ?\n (demTile.demTexture: any) : this.emptyDEMTexture;\n demTexture.bind(gl.NEAREST, gl.CLAMP_TO_EDGE);\n }\n\n context.activeTexture.set(gl.TEXTURE3);\n if (options && options.useDepthForOcclusion) {\n if (this._depthTexture) this._depthTexture.bind(gl.NEAREST, gl.CLAMP_TO_EDGE);\n if (this._depthFBO) uniforms['u_depth_size_inv'] = [1 / this._depthFBO.width, 1 / this._depthFBO.height];\n } else {\n this.emptyDepthBufferTexture.bind(gl.NEAREST, gl.CLAMP_TO_EDGE);\n uniforms['u_depth_size_inv'] = [1, 1];\n }\n\n if (options && options.useMeterToDem && demTile) {\n const meterToDEM = (1 << demTile.tileID.canonical.z) * mercatorZfromAltitude(1, this.painter.transform.center.lat) * this.sourceCache.getSource().tileSize;\n uniforms['u_meter_to_dem'] = meterToDEM;\n }\n if (options && options.labelPlaneMatrixInv) {\n uniforms['u_label_plane_matrix_inv'] = options.labelPlaneMatrixInv;\n }\n program.setTerrainUniformValues(context, uniforms);\n }\n\n renderToBackBuffer(accumulatedDrapes: Array<OverscaledTileID>) {\n const painter = this.painter;\n const context = this.painter.context;\n\n if (accumulatedDrapes.length === 0) {\n return;\n }\n\n context.bindFramebuffer.set(null);\n context.viewport.set([0, 0, painter.width, painter.height]);\n\n painter.gpuTimingDeferredRenderStart();\n\n this.renderingToTexture = false;\n drawTerrainRaster(painter, this, this.proxySourceCache, accumulatedDrapes, this._updateTimestamp);\n this.renderingToTexture = true;\n\n painter.gpuTimingDeferredRenderEnd();\n\n accumulatedDrapes.splice(0, accumulatedDrapes.length);\n }\n\n // For each proxy tile, render all layers until the non-draped layer (and\n // render the tile to the screen) before advancing to the next proxy tile.\n // Returns the last drawn index that is used as a start\n // layer for interleaved draped rendering.\n // Apart to layer-by-layer rendering used in 2D, here we have proxy-tile-by-proxy-tile\n // rendering.\n renderBatch(startLayerIndex: number): number {\n if (this._drapedRenderBatches.length === 0) {\n return startLayerIndex + 1;\n }\n\n this.renderingToTexture = true;\n const painter = this.painter;\n const context = this.painter.context;\n const psc = this.proxySourceCache;\n const proxies = this.proxiedCoords[psc.id];\n\n // Consume batch of sequential drape layers and move next\n const drapedLayerBatch = this._drapedRenderBatches.shift();\n assert(drapedLayerBatch.start === startLayerIndex);\n\n const accumulatedDrapes = [];\n const layerIds = painter.style.order;\n\n let poolIndex = 0;\n for (const proxy of proxies) {\n // bind framebuffer and assign texture to the tile (texture used in drawTerrainRaster).\n const tile = psc.getTileByID(proxy.proxyTileKey);\n const renderCacheIndex = psc.proxyCachedFBO[proxy.key] ? psc.proxyCachedFBO[proxy.key][startLayerIndex] : undefined;\n const fbo = renderCacheIndex !== undefined ? psc.renderCache[renderCacheIndex] : this.pool[poolIndex++];\n const useRenderCache = renderCacheIndex !== undefined;\n\n tile.texture = fbo.tex;\n\n if (useRenderCache && !fbo.dirty) {\n // Use cached render from previous pass, no need to render again.\n accumulatedDrapes.push(tile.tileID);\n continue;\n }\n\n context.bindFramebuffer.set(fbo.fb.framebuffer);\n this.renderedToTile = false; // reset flag.\n if (fbo.dirty) {\n // Clear on start.\n context.clear({color: Color.transparent, stencil: 0});\n fbo.dirty = false;\n }\n\n let currentStencilSource; // There is no need to setup stencil for the same source for consecutive layers.\n for (let j = drapedLayerBatch.start; j <= drapedLayerBatch.end; ++j) {\n const layer = painter.style._layers[layerIds[j]];\n const hidden = layer.isHidden(painter.transform.zoom);\n assert(this._style.isLayerDraped(layer) || hidden);\n if (hidden) continue;\n\n const sourceCache = painter.style._getLayerSourceCache(layer);\n const proxiedCoords = sourceCache ? this.proxyToSource[proxy.key][sourceCache.id] : [proxy];\n if (!proxiedCoords) continue; // when tile is not loaded yet for the source cache.\n\n const coords = ((proxiedCoords: any): Array<OverscaledTileID>);\n context.viewport.set([0, 0, fbo.fb.width, fbo.fb.height]);\n if (currentStencilSource !== (sourceCache ? sourceCache.id : null)) {\n this._setupStencil(fbo, proxiedCoords, layer, sourceCache);\n currentStencilSource = sourceCache ? sourceCache.id : null;\n }\n painter.renderLayer(painter, sourceCache, layer, coords);\n }\n\n if (this.renderedToTile) {\n fbo.dirty = true;\n accumulatedDrapes.push(tile.tileID);\n } else if (!useRenderCache) {\n --poolIndex;\n assert(poolIndex >= 0);\n }\n if (poolIndex === FBO_POOL_SIZE) {\n poolIndex = 0;\n this.renderToBackBuffer(accumulatedDrapes);\n }\n }\n\n // Reset states and render last drapes\n this.renderToBackBuffer(accumulatedDrapes);\n this.renderingToTexture = false;\n\n context.bindFramebuffer.set(null);\n context.viewport.set([0, 0, painter.width, painter.height]);\n\n return drapedLayerBatch.end + 1;\n }\n\n postRender() {\n // Make sure we consumed all the draped terrain batches at this point\n assert(this._drapedRenderBatches.length === 0);\n }\n\n renderCacheEfficiency(style: Style): Object {\n const layerCount = style.order.length;\n\n if (layerCount === 0) {\n return {efficiency: 100.0};\n }\n\n let uncacheableLayerCount = 0;\n let drapedLayerCount = 0;\n let reachedUndrapedLayer = false;\n let firstUndrapedLayer;\n\n for (let i = 0; i < layerCount; ++i) {\n const layer = style._layers[style.order[i]];\n if (!this._style.isLayerDraped(layer)) {\n if (!reachedUndrapedLayer) {\n reachedUndrapedLayer = true;\n firstUndrapedLayer = layer.id;\n }\n } else {\n if (reachedUndrapedLayer) {\n ++uncacheableLayerCount;\n }\n ++drapedLayerCount;\n }\n }\n\n if (drapedLayerCount === 0) {\n return {efficiency: 100.0};\n }\n\n return {efficiency: (1.0 - uncacheableLayerCount / drapedLayerCount) * 100.0, firstUndrapedLayer};\n }\n\n getMinElevationBelowMSL(): number {\n let min = 0.0;\n // The maximum DEM error in meters to be conservative (SRTM).\n const maxDEMError = 30.0;\n this._visibleDemTiles.filter(tile => tile.dem).forEach(tile => {\n const minMaxTree = (tile.dem: any).tree;\n min = Math.min(min, minMaxTree.minimums[0]);\n });\n return min === 0.0 ? min : (min - maxDEMError) * this._exaggeration;\n }\n\n // Performs raycast against visible DEM tiles on the screen and returns the distance travelled along the ray.\n // x & y components of the position are expected to be in normalized mercator coordinates [0, 1] and z in meters.\n raycast(pos: Vec3, dir: Vec3, exaggeration: number): ?number {\n if (!this._visibleDemTiles)\n return null;\n\n // Perform initial raycasts against root nodes of the available dem tiles\n // and use this information to sort them from closest to furthest.\n const preparedTiles = this._visibleDemTiles.filter(tile => tile.dem).map(tile => {\n const id = tile.tileID;\n const tiles = Math.pow(2.0, id.overscaledZ);\n const {x, y} = id.canonical;\n\n // Compute tile boundaries in mercator coordinates\n const minx = x / tiles;\n const maxx = (x + 1) / tiles;\n const miny = y / tiles;\n const maxy = (y + 1) / tiles;\n const tree = (tile.dem: any).tree;\n\n return {\n minx, miny, maxx, maxy,\n t: tree.raycastRoot(minx, miny, maxx, maxy, pos, dir, exaggeration),\n tile\n };\n });\n\n preparedTiles.sort((a, b) => {\n const at = a.t !== null ? a.t : Number.MAX_VALUE;\n const bt = b.t !== null ? b.t : Number.MAX_VALUE;\n return at - bt;\n });\n\n for (const obj of preparedTiles) {\n if (obj.t == null)\n return null;\n\n // Perform more accurate raycast against the dem tree. First intersection is the closest on\n // as all tiles are sorted from closest to furthest\n const tree = (obj.tile.dem: any).tree;\n const t = tree.raycast(obj.minx, obj.miny, obj.maxx, obj.maxy, pos, dir, exaggeration);\n\n if (t != null)\n return t;\n }\n\n return null;\n }\n\n _createFBO(): FBO {\n const painter = this.painter;\n const context = painter.context;\n const gl = context.gl;\n const bufferSize = this.drapeBufferSize;\n context.activeTexture.set(gl.TEXTURE0);\n const tex = new Texture(context, {width: bufferSize[0], height: bufferSize[1], data: null}, gl.RGBA);\n tex.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n const fb = context.createFramebuffer(bufferSize[0], bufferSize[1], false);\n fb.colorAttachment.set(tex.texture);\n fb.depthAttachment = new DepthStencilAttachment(context, fb.framebuffer);\n\n if (this._sharedDepthStencil === undefined) {\n this._sharedDepthStencil = context.createRenderbuffer(context.gl.DEPTH_STENCIL, bufferSize[0], bufferSize[1]);\n this._stencilRef = 0;\n fb.depthAttachment.set(this._sharedDepthStencil);\n context.clear({stencil: 0});\n } else {\n fb.depthAttachment.set(this._sharedDepthStencil);\n }\n\n if (context.extTextureFilterAnisotropic && !context.extTextureFilterAnisotropicForceOff) {\n gl.texParameterf(gl.TEXTURE_2D,\n context.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,\n context.extTextureFilterAnisotropicMax);\n }\n\n return {fb, tex, dirty: false};\n }\n\n _initFBOPool() {\n while (this.pool.length < Math.min(FBO_POOL_SIZE, this.proxyCoords.length)) {\n this.pool.push(this._createFBO());\n }\n }\n\n _shouldDisableRenderCache(): boolean {\n // Disable render caches on dynamic events due to fading or transitioning.\n if (this._style.light && this._style.light.hasTransition()) {\n return true;\n }\n\n for (const id in this._style._sourceCaches) {\n if (this._style._sourceCaches[id].hasTransition()) {\n return true;\n }\n }\n\n const fadingOrTransitioning = id => {\n const layer = this._style._layers[id];\n const isHidden = layer.isHidden(this.painter.transform.zoom);\n const crossFade = layer.getCrossfadeParameters();\n const isFading = !!crossFade && crossFade.t !== 1;\n const isTransitioning = layer.hasTransition();\n return layer.type !== 'custom' && !isHidden && (isFading || isTransitioning);\n };\n return this._style.order.some(fadingOrTransitioning);\n }\n\n _clearRasterFadeFromRenderCache() {\n let hasRasterSource = false;\n for (const id in this._style._sourceCaches) {\n if (this._style._sourceCaches[id]._source instanceof RasterTileSource) {\n hasRasterSource = true;\n break;\n }\n }\n if (!hasRasterSource) {\n return;\n }\n\n // Check if any raster tile is in a fading state\n for (let i = 0; i < this._style.order.length; ++i) {\n const layer = this._style._layers[this._style.order[i]];\n const isHidden = layer.isHidden(this.painter.transform.zoom);\n const sourceCache = this._style._getLayerSourceCache(layer);\n if (layer.type !== 'raster' || isHidden || !sourceCache) { continue; }\n\n const rasterLayer = ((layer: any): RasterStyleLayer);\n const fadeDuration = rasterLayer.paint.get('raster-fade-duration');\n for (const proxy of this.proxyCoords) {\n const proxiedCoords = this.proxyToSource[proxy.key][sourceCache.id];\n const coords = ((proxiedCoords: any): Array<OverscaledTileID>);\n if (!coords) { continue; }\n\n for (const coord of coords) {\n const tile = sourceCache.getTile(coord);\n const parent = sourceCache.findLoadedParent(coord, 0);\n const fade = rasterFade(tile, parent, sourceCache, this.painter.transform, fadeDuration);\n const isFading = fade.opacity !== 1 || fade.mix !== 0;\n if (isFading) {\n this._clearRenderCacheForTile(sourceCache.id, coord);\n }\n }\n }\n }\n }\n\n _setupDrapedRenderBatches() {\n const layerIds = this._style.order;\n const layerCount = layerIds.length;\n if (layerCount === 0) {\n return;\n }\n\n const batches = [];\n\n let currentLayer = 0;\n let layer = this._style._layers[layerIds[currentLayer]];\n while (!this._style.isLayerDraped(layer) && layer.isHidden(this.painter.transform.zoom) && ++currentLayer < layerCount) {\n layer = this._style._layers[layerIds[currentLayer]];\n }\n\n let batchStart;\n for (; currentLayer < layerCount; ++currentLayer) {\n const layer = this._style._layers[layerIds[currentLayer]];\n if (layer.isHidden(this.painter.transform.zoom)) {\n continue;\n }\n if (!this._style.isLayerDraped(layer)) {\n if (batchStart !== undefined) {\n batches.push({start: batchStart, end: currentLayer - 1});\n batchStart = undefined;\n }\n continue;\n }\n if (batchStart === undefined) {\n batchStart = currentLayer;\n }\n }\n\n if (batchStart !== undefined) {\n batches.push({start: batchStart, end: currentLayer - 1});\n }\n\n if (this._style.map._optimizeForTerrain) {\n // Draped first approach should result in a single or no batch\n assert(batches.length === 1 || batches.length === 0);\n }\n\n this._drapedRenderBatches = batches;\n }\n\n _setupRenderCache(previousProxyToSource: {[number]: {[string]: Array<ProxiedTileID>}}) {\n const psc = this.proxySourceCache;\n if (this._shouldDisableRenderCache() || this._invalidateRenderCache) {\n this._invalidateRenderCache = false;\n if (psc.renderCache.length > psc.renderCachePool.length) {\n const used = ((Object.values(psc.proxyCachedFBO): any): Array<{[string | number]: number}>);\n psc.proxyCachedFBO = {};\n for (let i = 0; i < used.length; ++i) {\n const fbos = ((Object.values(used[i]): any): Array<number>);\n psc.renderCachePool.push(...fbos);\n }\n assert(psc.renderCache.length === psc.renderCachePool.length);\n }\n return;\n }\n\n this._clearRasterFadeFromRenderCache();\n\n const coords = this.proxyCoords;\n const dirty = this._tilesDirty;\n for (let i = coords.length - 1; i >= 0; i--) {\n const proxy = coords[i];\n const tile = psc.getTileByID(proxy.key);\n\n if (psc.proxyCachedFBO[proxy.key] !== undefined) {\n assert(tile.texture);\n const prev = previousProxyToSource[proxy.key];\n assert(prev);\n // Reuse previous render from cache if there was no change of\n // content that was used to render proxy tile.\n const current = this.proxyToSource[proxy.key];\n let equal = 0;\n for (const source in current) {\n const tiles = current[source];\n const prevTiles = prev[source];\n if (!prevTiles || prevTiles.length !== tiles.length ||\n tiles.some((t, index) =>\n (t !== prevTiles[index] ||\n (dirty[source] && dirty[source].hasOwnProperty(t.key)\n )))\n ) {\n equal = -1;\n break;\n }\n ++equal;\n }\n // dirty === false: doesn't need to be rendered to, just use cached render.\n for (const proxyFBO in psc.proxyCachedFBO[proxy.key]) {\n psc.renderCache[psc.proxyCachedFBO[proxy.key][proxyFBO]].dirty = equal < 0 || equal !== Object.values(prev).length;\n }\n }\n }\n\n const sortedRenderBatches = [...this._drapedRenderBatches];\n sortedRenderBatches.sort((batchA, batchB) => {\n const batchASize = batchA.end - batchA.start;\n const batchBSize = batchB.end - batchB.start;\n return batchBSize - batchASize;\n });\n\n for (const batch of sortedRenderBatches) {\n for (const id of coords) {\n if (psc.proxyCachedFBO[id.key]) {\n continue;\n }\n\n // Assign renderCache FBO if there are available FBOs in pool.\n let index = psc.renderCachePool.pop();\n if (index === undefined && psc.renderCache.length < RENDER_CACHE_MAX_SIZE) {\n index = psc.renderCache.length;\n psc.renderCache.push(this._createFBO());\n }\n if (index !== undefined) {\n psc.proxyCachedFBO[id.key] = {};\n psc.proxyCachedFBO[id.key][batch.start] = index;\n psc.renderCache[index].dirty = true; // needs to be rendered to.\n }\n }\n }\n this._tilesDirty = {};\n }\n\n _setupStencil(fbo: FBO, proxiedCoords: Array<ProxiedTileID>, layer: StyleLayer, sourceCache?: SourceCache) {\n if (!sourceCache || !this._sourceTilesOverlap[sourceCache.id]) {\n if (this._overlapStencilType) this._overlapStencilType = false;\n return;\n }\n const context = this.painter.context;\n const gl = context.gl;\n\n // If needed, setup stencilling. Don't bother to remove when there is no\n // more need: in such case, if there is no overlap, stencilling is disabled.\n if (proxiedCoords.length <= 1) { this._overlapStencilType = false; return; }\n\n let stencilRange;\n if (layer.isTileClipped()) {\n stencilRange = proxiedCoords.length;\n this._overlapStencilMode.test = {func: gl.EQUAL, mask: 0xFF};\n this._overlapStencilType = 'Clip';\n } else if (proxiedCoords[0].overscaledZ > proxiedCoords[proxiedCoords.length - 1].overscaledZ) {\n stencilRange = 1;\n this._overlapStencilMode.test = {func: gl.GREATER, mask: 0xFF};\n this._overlapStencilType = 'Mask';\n } else {\n this._overlapStencilType = false;\n return;\n }\n if (this._stencilRef + stencilRange > 255) {\n context.clear({stencil: 0});\n this._stencilRef = 0;\n }\n this._stencilRef += stencilRange;\n this._overlapStencilMode.ref = this._stencilRef;\n if (layer.isTileClipped()) {\n this._renderTileClippingMasks(proxiedCoords, this._overlapStencilMode.ref);\n }\n }\n\n clipOrMaskOverlapStencilType(): boolean {\n return this._overlapStencilType === 'Clip' || this._overlapStencilType === 'Mask';\n }\n\n stencilModeForRTTOverlap(id: OverscaledTileID): $ReadOnly<StencilMode> {\n if (!this.renderingToTexture || !this._overlapStencilType) {\n return StencilMode.disabled;\n }\n // All source tiles contributing to the same proxy are processed in sequence, in zoom descending order.\n // For raster / hillshade overlap masking, ref is based on zoom dif.\n // For vector layer clipping, every tile gets dedicated stencil ref.\n if (this._overlapStencilType === 'Clip') {\n // In immediate 2D mode, we render rects to mark clipping area and handle behavior on tile borders.\n // Here, there is no need for now for this:\n // 1. overlap is handled by proxy render to texture tiles (there is no overlap there)\n // 2. here we handle only brief zoom out semi-transparent color intensity flickering\n // and that is avoided fine by stenciling primitives as part of drawing (instead of additional tile quad step).\n this._overlapStencilMode.ref = this.painter._tileClippingMaskIDs[id.key];\n } // else this._overlapStencilMode.ref is set to a single value used per proxy tile, in _setupStencil.\n return this._overlapStencilMode;\n }\n\n _renderTileClippingMasks(proxiedCoords: Array<ProxiedTileID>, ref: number) {\n const painter = this.painter;\n const context = this.painter.context;\n const gl = context.gl;\n painter._tileClippingMaskIDs = {};\n context.setColorMode(ColorMode.disabled);\n context.setDepthMode(DepthMode.disabled);\n\n const program = painter.useProgram('clippingMask');\n\n for (const tileID of proxiedCoords) {\n const id = painter._tileClippingMaskIDs[tileID.key] = --ref;\n program.draw(context, gl.TRIANGLES, DepthMode.disabled,\n // Tests will always pass, and ref value will be written to stencil buffer.\n new StencilMode({func: gl.ALWAYS, mask: 0}, id, 0xFF, gl.KEEP, gl.KEEP, gl.REPLACE),\n ColorMode.disabled, CullFaceMode.disabled, clippingMaskUniformValues(tileID.projMatrix),\n '$clipping', painter.tileExtentBuffer,\n painter.quadTriangleIndexBuffer, painter.tileExtentSegments);\n }\n }\n\n // Casts a ray from a point on screen and returns the intersection point with the terrain.\n // The returned point contains the mercator coordinates in its first 3 components, and elevation\n // in meter in its 4th coordinate.\n pointCoordinate(screenPoint: Point): ?Vec4 {\n const transform = this.painter.transform;\n if (screenPoint.x < 0 || screenPoint.x > transform.width ||\n screenPoint.y < 0 || screenPoint.y > transform.height) {\n return null;\n }\n\n const far = [screenPoint.x, screenPoint.y, 1, 1];\n vec4.transformMat4(far, far, transform.pixelMatrixInverse);\n vec4.scale(far, far, 1.0 / far[3]);\n // x & y in pixel coordinates, z is altitude in meters\n far[0] /= transform.worldSize;\n far[1] /= transform.worldSize;\n const camera = transform._camera.position;\n const mercatorZScale = mercatorZfromAltitude(1, transform.center.lat);\n const p = [camera[0], camera[1], camera[2] / mercatorZScale, 0.0];\n const dir = vec3.subtract([], far.slice(0, 3), p);\n vec3.normalize(dir, dir);\n\n const exaggeration = this._exaggeration;\n const distanceAlongRay = this.raycast(p, dir, exaggeration);\n\n if (distanceAlongRay === null || !distanceAlongRay) return null;\n vec3.scaleAndAdd(p, p, dir, distanceAlongRay);\n p[3] = p[2];\n p[2] *= mercatorZScale;\n return p;\n }\n\n drawDepth() {\n const painter = this.painter;\n const context = painter.context;\n const psc = this.proxySourceCache;\n\n const width = Math.ceil(painter.width), height = Math.ceil(painter.height);\n if (this._depthFBO && (this._depthFBO.width !== width || this._depthFBO.height !== height)) {\n this._depthFBO.destroy();\n this._depthFBO = undefined;\n this._depthTexture = undefined;\n }\n if (!this._depthFBO) {\n const gl = context.gl;\n const fbo = context.createFramebuffer(width, height, true);\n context.activeTexture.set(gl.TEXTURE0);\n const texture = new Texture(context, {width, height, data: null}, gl.RGBA);\n texture.bind(gl.NEAREST, gl.CLAMP_TO_EDGE);\n fbo.colorAttachment.set(texture.texture);\n const renderbuffer = context.createRenderbuffer(context.gl.DEPTH_COMPONENT16, width, height);\n fbo.depthAttachment.set(renderbuffer);\n this._depthFBO = fbo;\n this._depthTexture = texture;\n }\n context.bindFramebuffer.set(this._depthFBO.framebuffer);\n context.viewport.set([0, 0, width, height]);\n\n drawTerrainDepth(painter, this, psc, this.proxyCoords);\n }\n\n _setupProxiedCoordsForOrtho(sourceCache: SourceCache, sourceCoords: Array<OverscaledTileID>, previousProxyToSource: {[number]: {[string]: Array<ProxiedTileID>}}): void {\n if (sourceCache.getSource() instanceof ImageSource) {\n return this._setupProxiedCoordsForImageSource(sourceCache, sourceCoords, previousProxyToSource);\n }\n this._findCoveringTileCache[sourceCache.id] = this._findCoveringTileCache[sourceCache.id] || {};\n const coords = this.proxiedCoords[sourceCache.id] = [];\n const proxys = this.proxyCoords;\n for (let i = 0; i < proxys.length; i++) {\n const proxyTileID = proxys[i];\n const proxied = this._findTileCoveringTileID(proxyTileID, sourceCache);\n if (proxied) {\n assert(proxied.hasData());\n const id = this._createProxiedId(proxyTileID, proxied, previousProxyToSource[proxyTileID.key] && previousProxyToSource[proxyTileID.key][sourceCache.id]);\n coords.push(id);\n this.proxyToSource[proxyTileID.key][sourceCache.id] = [id];\n }\n }\n let hasOverlap = false;\n for (let i = 0; i < sourceCoords.length; i++) {\n const tile = sourceCache.getTile(sourceCoords[i]);\n if (!tile || !tile.hasData()) continue;\n const proxy = this._findTileCoveringTileID(tile.tileID, this.proxySourceCache);\n // Don't add the tile if already added in loop above.\n if (proxy && proxy.tileID.canonical.z !== tile.tileID.canonical.z) {\n const array = this.proxyToSource[proxy.tileID.key][sourceCache.id];\n const id = this._createProxiedId(proxy.tileID, tile, previousProxyToSource[proxy.tileID.key] && previousProxyToSource[proxy.tileID.key][sourceCache.id]);\n if (!array) {\n this.proxyToSource[proxy.tileID.key][sourceCache.id] = [id];\n } else {\n // The last element is parent added in loop above. This way we get\n // a list in Z descending order which is needed for stencil masking.\n array.splice(array.length - 1, 0, id);\n }\n coords.push(id);\n hasOverlap = true;\n }\n }\n this._sourceTilesOverlap[sourceCache.id] = hasOverlap;\n }\n\n _setupProxiedCoordsForImageSource(sourceCache: SourceCache, sourceCoords: Array<OverscaledTileID>, previousProxyToSource: {[number]: {[string]: Array<ProxiedTileID>}}) {\n if (!sourceCache.getSource().loaded()) return;\n\n const coords = this.proxiedCoords[sourceCache.id] = [];\n const proxys = this.proxyCoords;\n const imageSource: ImageSource = ((sourceCache.getSource(): any): ImageSource);\n\n const anchor = new Point(imageSource.tileID.x, imageSource.tileID.y)._div(1 << imageSource.tileID.z);\n const aabb = imageSource.coordinates.map(MercatorCoordinate.fromLngLat).reduce((acc, coord) => {\n acc.min.x = Math.min(acc.min.x, coord.x - anchor.x);\n acc.min.y = Math.min(acc.min.y, coord.y - anchor.y);\n acc.max.x = Math.max(acc.max.x, coord.x - anchor.x);\n acc.max.y = Math.max(acc.max.y, coord.y - anchor.y);\n return acc;\n }, {min: new Point(Number.MAX_VALUE, Number.MAX_VALUE), max: new Point(-Number.MAX_VALUE, -Number.MAX_VALUE)});\n\n // Fast conservative check using aabb: content outside proxy tile gets clipped out by on render, anyway.\n const tileOutsideImage = (tileID, imageTileID) => {\n const x = tileID.wrap + tileID.canonical.x / (1 << tileID.canonical.z);\n const y = tileID.canonical.y / (1 << tileID.canonical.z);\n const d = EXTENT / (1 << tileID.canonical.z);\n\n const ix = imageTileID.wrap + imageTileID.canonical.x / (1 << imageTileID.canonical.z);\n const iy = imageTileID.canonical.y / (1 << imageTileID.canonical.z);\n\n return x + d < ix + aabb.min.x || x > ix + aabb.max.x || y + d < iy + aabb.min.y || y > iy + aabb.max.y;\n };\n\n for (let i = 0; i < proxys.length; i++) {\n const proxyTileID = proxys[i];\n for (let j = 0; j < sourceCoords.length; j++) {\n const tile = sourceCache.getTile(sourceCoords[j]);\n if (!tile || !tile.hasData()) continue;\n\n // Setup proxied -> proxy mapping only if image on given tile wrap intersects the proxy tile.\n if (tileOutsideImage(proxyTileID, tile.tileID)) continue;\n\n const id = this._createProxiedId(proxyTileID, tile, previousProxyToSource[proxyTileID.key] && previousProxyToSource[proxyTileID.key][sourceCache.id]);\n const array = this.proxyToSource[proxyTileID.key][sourceCache.id];\n if (!array) {\n this.proxyToSource[proxyTileID.key][sourceCache.id] = [id];\n } else {\n array.push(id);\n }\n coords.push(id);\n }\n }\n }\n\n // recycle is previous pass content that likely contains proxied ID combining proxy and source tile.\n _createProxiedId(proxyTileID: OverscaledTileID, tile: Tile, recycle: Array<ProxiedTileID>): ProxiedTileID {\n let matrix = this.orthoMatrix;\n if (recycle) {\n const recycled = recycle.find(proxied => (proxied.key === tile.tileID.key));\n if (recycled) return recycled;\n }\n if (tile.tileID.key !== proxyTileID.key) {\n const scale = proxyTileID.canonical.z - tile.tileID.canonical.z;\n matrix = mat4.create();\n let size, xOffset, yOffset;\n const wrap = (tile.tileID.wrap - proxyTileID.wrap) << proxyTileID.overscaledZ;\n if (scale > 0) {\n size = EXTENT >> scale;\n xOffset = size * ((tile.tileID.canonical.x << scale) - proxyTileID.canonical.x + wrap);\n yOffset = size * ((tile.tileID.canonical.y << scale) - proxyTileID.canonical.y);\n } else {\n size = EXTENT << -scale;\n xOffset = EXTENT * (tile.tileID.canonical.x - ((proxyTileID.canonical.x + wrap) << -scale));\n yOffset = EXTENT * (tile.tileID.canonical.y - (proxyTileID.canonical.y << -scale));\n }\n mat4.ortho(matrix, 0, size, 0, size, 0, 1);\n mat4.translate(matrix, matrix, [xOffset, yOffset, 0]);\n }\n return new ProxiedTileID(tile.tileID, proxyTileID.key, matrix);\n }\n\n // A variant of SourceCache.findLoadedParent that considers only visible\n // tiles (and doesn't check SourceCache._cache). Another difference is in\n // caching \"not found\" results along the lookup, to leave the lookup early.\n // Not found is cached by this._findCoveringTileCache[key] = null;\n _findTileCoveringTileID(tileID: OverscaledTileID, sourceCache: SourceCache): ?Tile {\n let tile = sourceCache.getTile(tileID);\n if (tile && tile.hasData()) return tile;\n\n const lookup = this._findCoveringTileCache[sourceCache.id];\n const key = lookup[tileID.key];\n tile = key ? sourceCache.getTileByID(key) : null;\n if ((tile && tile.hasData()) || key === null) return tile;\n\n assert(!key || tile);\n\n let sourceTileID = tile ? tile.tileID : tileID;\n let z = sourceTileID.overscaledZ;\n const minzoom = sourceCache.getSource().minzoom;\n const path = [];\n if (!key) {\n const maxzoom = sourceCache.getSource().maxzoom;\n if (tileID.canonical.z >= maxzoom) {\n const downscale = tileID.canonical.z - maxzoom;\n if (sourceCache.getSource().reparseOverscaled) {\n z = Math.max(tileID.canonical.z + 2, sourceCache.transform.tileZoom);\n sourceTileID = new OverscaledTileID(z, tileID.wrap, maxzoom,\n tileID.canonical.x >> downscale, tileID.canonical.y >> downscale);\n } else if (downscale !== 0) {\n z = maxzoom;\n sourceTileID = new OverscaledTileID(z, tileID.wrap, maxzoom,\n tileID.canonical.x >> downscale, tileID.canonical.y >> downscale);\n }\n }\n if (sourceTileID.key !== tileID.key) {\n path.push(sourceTileID.key);\n tile = sourceCache.getTile(sourceTileID);\n }\n }\n\n const pathToLookup = (key) => {\n path.forEach(id => { lookup[id] = key; });\n path.length = 0;\n };\n\n for (z = z - 1; z >= minzoom && !(tile && tile.hasData()); z--) {\n if (tile) {\n pathToLookup(tile.tileID.key); // Store lookup to parents not loaded (yet).\n }\n const id = sourceTileID.calculateScaledKey(z);\n tile = sourceCache.getTileByID(id);\n if (tile && tile.hasData()) break;\n const key = lookup[id];\n if (key === null) {\n break; // There's no tile loaded and no point searching further.\n } else if (key !== undefined) {\n tile = sourceCache.getTileByID(key);\n assert(tile);\n continue;\n }\n path.push(id);\n }\n\n pathToLookup(tile ? tile.tileID.key : null);\n return tile && tile.hasData() ? tile : null;\n }\n\n findDEMTileFor(tileID: OverscaledTileID): ?Tile {\n return this.enabled ? this._findTileCoveringTileID(tileID, this.sourceCache) : null;\n }\n\n /*\n * Bookkeeping if something gets rendered to the tile.\n */\n prepareDrawTile() {\n this.renderedToTile = true;\n }\n\n _clearRenderCacheForTile(source: string, coord: OverscaledTileID) {\n let sourceTiles = this._tilesDirty[source];\n if (!sourceTiles) sourceTiles = this._tilesDirty[source] = {};\n sourceTiles[coord.key] = true;\n }\n\n /*\n * Lazily instantiate the wireframe index buffer and segment vector so that we don't\n * allocate the geometry for rendering a debug wireframe until it's needed.\n */\n getWirefameBuffer(): [IndexBuffer, SegmentVector] {\n if (!this.wireframeSegments) {\n const wireframeGridIndices = createWireframeGrid(GRID_DIM + 1);\n this.wireframeIndexBuffer = this.painter.context.createIndexBuffer(wireframeGridIndices);\n this.wireframeSegments = SegmentVector.simpleSegment(0, 0, this.gridBuffer.length, wireframeGridIndices.length);\n }\n return [this.wireframeIndexBuffer, this.wireframeSegments];\n }\n\n}\n\nfunction sortByDistanceToCamera(tileIDs, painter) {\n const cameraCoordinate = painter.transform.pointCoordinate(painter.transform.getCameraPoint());\n const cameraPoint = new Point(cameraCoordinate.x, cameraCoordinate.y);\n tileIDs.sort((a, b) => {\n if (b.overscaledZ - a.overscaledZ) return b.overscaledZ - a.overscaledZ;\n const aPoint = new Point(a.canonical.x + (1 << a.canonical.z) * a.wrap, a.canonical.y);\n const bPoint = new Point(b.canonical.x + (1 << b.canonical.z) * b.wrap, b.canonical.y);\n const cameraScaled = cameraPoint.mult(1 << a.canonical.z);\n cameraScaled.x -= 0.5;\n cameraScaled.y -= 0.5;\n return cameraScaled.distSqr(aPoint) - cameraScaled.distSqr(bPoint);\n });\n}\n\n/**\n * Creates uniform grid of triangles, covering EXTENT x EXTENT square, with two\n * adjustent traigles forming a quad, so that there are |count| columns and rows\n * of these quads in EXTENT x EXTENT square.\n * e.g. for count of 2:\n * -------------\n * | /| /|\n * | / | / |\n * |/ |/ |\n * -------------\n * | /| /|\n * | / | / |\n * |/ |/ |\n * -------------\n * @param {number} count Count of rows and columns\n * @private\n */\nfunction createGrid(count: number): [RasterBoundsArray, TriangleIndexArray, number] {\n const boundsArray = new RasterBoundsArray();\n // Around the grid, add one more row/column padding for \"skirt\".\n const indexArray = new TriangleIndexArray();\n const size = count + 2;\n boundsArray.reserve(size * size);\n indexArray.reserve((size - 1) * (size - 1) * 2);\n const step = EXTENT / (count - 1);\n const gridBound = EXTENT + step / 2;\n const bound = gridBound + step;\n\n // Skirt offset of 0x5FFF is chosen randomly to encode boolean value (skirt\n // on/off) with x position (max value EXTENT = 4096) to 16-bit signed integer.\n const skirtOffset = 24575; // 0x5FFF\n for (let y = -step; y < bound; y += step) {\n for (let x = -step; x < bound; x += step) {\n const offset = (x < 0 || x > gridBound || y < 0 || y > gridBound) ? skirtOffset : 0;\n const xi = clamp(Math.round(x), 0, EXTENT);\n const yi = clamp(Math.round(y), 0, EXTENT);\n boundsArray.emplaceBack(xi + offset, yi, xi, yi);\n }\n }\n\n // For cases when there's no need to render \"skirt\", the \"inner\" grid indices\n // are followed by skirt indices.\n const skirtIndicesOffset = (size - 3) * (size - 3) * 2;\n const quad = (i, j) => {\n const index = j * size + i;\n indexArray.emplaceBack(index + 1, index, index + size);\n indexArray.emplaceBack(index + size, index + size + 1, index + 1);\n };\n for (let j = 1; j < size - 2; j++) {\n for (let i = 1; i < size - 2; i++) {\n quad(i, j);\n }\n }\n // Padding (skirt) indices:\n [0, size - 2].forEach(j => {\n for (let i = 0; i < size - 1; i++) {\n quad(i, j);\n quad(j, i);\n }\n });\n return [boundsArray, indexArray, skirtIndicesOffset];\n}\n\n/**\n * Creates a grid of indices corresponding to the grid constructed by createGrid\n * in order to render that grid as a wireframe rather than a solid mesh. It does\n * not create a skirt and so only goes from 1 to count + 1, e.g. for count of 2:\n * -------------\n * | /| /|\n * | / | / |\n * |/ |/ |\n * -------------\n * | /| /|\n * | / | / |\n * |/ |/ |\n * -------------\n * @param {number} count Count of rows and columns\n * @private\n */\nfunction createWireframeGrid(count: number): LineIndexArray {\n let index = 0;\n const indexArray = new LineIndexArray();\n const size = count + 2;\n // Draw two edges of a quad and its diagonal. The very last row and column have\n // an additional line to close off the grid.\n for (let j = 1; j < count; j++) {\n for (let i = 1; i < count; i++) {\n index = j * size + i;\n indexArray.emplaceBack(index, index + 1);\n indexArray.emplaceBack(index, index + size);\n indexArray.emplaceBack(index + 1, index + size);\n\n // Place an extra line at the end of each row\n if (j === count - 1) indexArray.emplaceBack(index + size, index + size + 1);\n }\n // Place an extra line at the end of each col\n indexArray.emplaceBack(index + 1, index + 1 + size);\n }\n return indexArray;\n}\n\nexport type TerrainUniformsType = {|\n 'u_dem': Uniform1i,\n 'u_dem_prev': Uniform1i,\n 'u_dem_unpack': Uniform4f,\n 'u_dem_tl': Uniform2f,\n 'u_dem_scale': Uniform1f,\n 'u_dem_tl_prev': Uniform2f,\n 'u_dem_scale_prev': Uniform1f,\n 'u_dem_size': Uniform1f,\n 'u_dem_lerp': Uniform1f,\n \"u_exaggeration\": Uniform1f,\n 'u_depth': Uniform1i,\n 'u_depth_size_inv': Uniform2f,\n 'u_meter_to_dem'?: Uniform1f,\n 'u_label_plane_matrix_inv'?: UniformMatrix4f,\n 'u_tile_tl_up': Uniform3f,\n 'u_tile_tr_up': Uniform3f,\n 'u_tile_br_up': Uniform3f,\n 'u_tile_bl_up': Uniform3f,\n 'u_tile_up_scale': Uniform1f\n|};\n\nexport const terrainUniforms = (context: Context, locations: UniformLocations): TerrainUniformsType => ({\n 'u_dem': new Uniform1i(context, locations.u_dem),\n 'u_dem_prev': new Uniform1i(context, locations.u_dem_prev),\n 'u_dem_unpack': new Uniform4f(context, locations.u_dem_unpack),\n 'u_dem_tl': new Uniform2f(context, locations.u_dem_tl),\n 'u_dem_scale': new Uniform1f(context, locations.u_dem_scale),\n 'u_dem_tl_prev': new Uniform2f(context, locations.u_dem_tl_prev),\n 'u_dem_scale_prev': new Uniform1f(context, locations.u_dem_scale_prev),\n 'u_dem_size': new Uniform1f(context, locations.u_dem_size),\n 'u_dem_lerp': new Uniform1f(context, locations.u_dem_lerp),\n 'u_exaggeration': new Uniform1f(context, locations.u_exaggeration),\n 'u_depth': new Uniform1i(context, locations.u_depth),\n 'u_depth_size_inv': new Uniform2f(context, locations.u_depth_size_inv),\n 'u_meter_to_dem': new Uniform1f(context, locations.u_meter_to_dem),\n 'u_label_plane_matrix_inv': new UniformMatrix4f(context, locations.u_label_plane_matrix_inv),\n 'u_tile_tl_up': new Uniform3f(context, locations.u_tile_tl_up),\n 'u_tile_tr_up': new Uniform3f(context, locations.u_tile_tr_up),\n 'u_tile_br_up': new Uniform3f(context, locations.u_tile_br_up),\n 'u_tile_bl_up': new Uniform3f(context, locations.u_tile_bl_up),\n 'u_tile_up_scale': new Uniform1f(context, locations.u_tile_up_scale)\n});\n\nfunction defaultTerrainUniforms(encoding: DEMEncoding): UniformValues<TerrainUniformsType> {\n return {\n 'u_dem': 2,\n 'u_dem_prev': 4,\n 'u_dem_unpack': DEMData.getUnpackVector(encoding),\n 'u_dem_tl': [0, 0],\n 'u_dem_tl_prev': [0, 0],\n 'u_dem_scale': 0,\n 'u_dem_scale_prev': 0,\n 'u_dem_size': 0,\n 'u_dem_lerp': 1.0,\n 'u_depth': 3,\n 'u_depth_size_inv': [0, 0],\n 'u_exaggeration': 0,\n 'u_tile_tl_up': [0, 0, 1],\n 'u_tile_tr_up': [0, 0, 1],\n 'u_tile_br_up': [0, 0, 1],\n 'u_tile_bl_up': [0, 0, 1],\n 'u_tile_up_scale': 1\n };\n}\n","// @flow\n\nimport {\n prelude,\n preludeFragPrecisionQualifiers,\n preludeVertPrecisionQualifiers,\n preludeTerrain,\n preludeFog,\n preludeCommonSource,\n standardDerivativesExt\n} from '../shaders/shaders.js';\nimport assert from 'assert';\nimport ProgramConfiguration from '../data/program_configuration.js';\nimport VertexArrayObject from './vertex_array_object.js';\nimport Context from '../gl/context.js';\nimport {terrainUniforms} from '../terrain/terrain.js';\nimport type {TerrainUniformsType} from '../terrain/terrain.js';\nimport {fogUniforms} from './fog.js';\nimport type {FogUniformsType} from './fog.js';\n\nimport type SegmentVector from '../data/segment.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type DepthMode from '../gl/depth_mode.js';\nimport type StencilMode from '../gl/stencil_mode.js';\nimport type ColorMode from '../gl/color_mode.js';\nimport type CullFaceMode from '../gl/cull_face_mode.js';\nimport type {UniformBindings, UniformValues, UniformLocations} from './uniform_binding.js';\nimport type {BinderUniform} from '../data/program_configuration.js';\n\nexport type DrawMode =\n | $PropertyType<WebGLRenderingContext, 'LINES'>\n | $PropertyType<WebGLRenderingContext, 'TRIANGLES'>\n | $PropertyType<WebGLRenderingContext, 'LINE_STRIP'>;\n\nfunction getTokenizedAttributesAndUniforms (array: Array<string>): Array<string> {\n const result = [];\n\n for (let i = 0; i < array.length; i++) {\n if (array[i] === null) continue;\n const token = array[i].split(' ');\n result.push(token.pop());\n }\n return result;\n}\nclass Program<Us: UniformBindings> {\n program: WebGLProgram;\n attributes: {[_: string]: number};\n numAttributes: number;\n fixedUniforms: Us;\n binderUniforms: Array<BinderUniform>;\n failedToCreate: boolean;\n terrainUniforms: ?TerrainUniformsType;\n fogUniforms: ?FogUniformsType;\n\n static cacheKey(name: string, defines: string[], programConfiguration: ?ProgramConfiguration): string {\n let key = `${name}${programConfiguration ? programConfiguration.cacheKey : ''}`;\n for (const define of defines) {\n key += `/${define}`;\n }\n return key;\n }\n\n constructor(context: Context,\n name: string,\n source: {fragmentSource: string, vertexSource: string, staticAttributes: Array<string>, staticUniforms: Array<string>},\n configuration: ?ProgramConfiguration,\n fixedUniforms: (Context, UniformLocations) => Us,\n fixedDefines: string[]) {\n const gl = context.gl;\n this.program = gl.createProgram();\n\n const staticAttrInfo = getTokenizedAttributesAndUniforms(source.staticAttributes);\n const dynamicAttrInfo = configuration ? configuration.getBinderAttributes() : [];\n const allAttrInfo = staticAttrInfo.concat(dynamicAttrInfo);\n\n const staticUniformsInfo = source.staticUniforms ? getTokenizedAttributesAndUniforms(source.staticUniforms) : [];\n const dynamicUniformsInfo = configuration ? configuration.getBinderUniforms() : [];\n // remove duplicate uniforms\n const uniformList = staticUniformsInfo.concat(dynamicUniformsInfo);\n const allUniformsInfo = [];\n for (const uniform of uniformList) {\n if (allUniformsInfo.indexOf(uniform) < 0) allUniformsInfo.push(uniform);\n }\n\n let defines = configuration ? configuration.defines() : [];\n defines = defines.concat(fixedDefines.map((define) => `#define ${define}`));\n\n const fragmentSource = defines.concat(\n context.extStandardDerivatives ? standardDerivativesExt.concat(preludeFragPrecisionQualifiers) : preludeFragPrecisionQualifiers,\n preludeFragPrecisionQualifiers,\n preludeCommonSource,\n prelude.fragmentSource,\n preludeFog.fragmentSource,\n source.fragmentSource).join('\\n');\n const vertexSource = defines.concat(\n preludeVertPrecisionQualifiers,\n preludeCommonSource,\n prelude.vertexSource,\n preludeFog.vertexSource,\n preludeTerrain.vertexSource,\n source.vertexSource).join('\\n');\n const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n if (gl.isContextLost()) {\n this.failedToCreate = true;\n return;\n }\n gl.shaderSource(fragmentShader, fragmentSource);\n gl.compileShader(fragmentShader);\n assert(gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS), (gl.getShaderInfoLog(fragmentShader): any));\n gl.attachShader(this.program, fragmentShader);\n\n const vertexShader = gl.createShader(gl.VERTEX_SHADER);\n if (gl.isContextLost()) {\n this.failedToCreate = true;\n return;\n }\n gl.shaderSource(vertexShader, vertexSource);\n gl.compileShader(vertexShader);\n assert(gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS), (gl.getShaderInfoLog(vertexShader): any));\n gl.attachShader(this.program, vertexShader);\n\n this.attributes = {};\n const uniformLocations = {};\n\n this.numAttributes = allAttrInfo.length;\n\n for (let i = 0; i < this.numAttributes; i++) {\n if (allAttrInfo[i]) {\n gl.bindAttribLocation(this.program, i, allAttrInfo[i]);\n this.attributes[allAttrInfo[i]] = i;\n }\n }\n\n gl.linkProgram(this.program);\n assert(gl.getProgramParameter(this.program, gl.LINK_STATUS), (gl.getProgramInfoLog(this.program): any));\n\n gl.deleteShader(vertexShader);\n gl.deleteShader(fragmentShader);\n\n for (let it = 0; it < allUniformsInfo.length; it++) {\n const uniform = allUniformsInfo[it];\n if (uniform && !uniformLocations[uniform]) {\n const uniformLocation = gl.getUniformLocation(this.program, uniform);\n if (uniformLocation) {\n uniformLocations[uniform] = uniformLocation;\n }\n }\n }\n\n this.fixedUniforms = fixedUniforms(context, uniformLocations);\n this.binderUniforms = configuration ? configuration.getUniforms(context, uniformLocations) : [];\n if (fixedDefines.indexOf('TERRAIN') !== -1) {\n this.terrainUniforms = terrainUniforms(context, uniformLocations);\n }\n if (fixedDefines.indexOf('FOG') !== -1) {\n this.fogUniforms = fogUniforms(context, uniformLocations);\n }\n }\n\n setTerrainUniformValues(context: Context, terrainUniformValues: UniformValues<TerrainUniformsType>) {\n if (!this.terrainUniforms) return;\n const uniforms: TerrainUniformsType = this.terrainUniforms;\n\n if (this.failedToCreate) return;\n context.program.set(this.program);\n\n for (const name in terrainUniformValues) {\n uniforms[name].set(terrainUniformValues[name]);\n }\n }\n\n setFogUniformValues(context: Context, fogUniformsValues: UniformValues<FogUniformsType>) {\n if (!this.fogUniforms) return;\n const uniforms: FogUniformsType = this.fogUniforms;\n\n if (this.failedToCreate) return;\n context.program.set(this.program);\n\n for (const name in fogUniformsValues) {\n if (uniforms[name].location) {\n uniforms[name].set(fogUniformsValues[name]);\n }\n }\n }\n\n draw(\n context: Context,\n drawMode: DrawMode,\n depthMode: $ReadOnly<DepthMode>,\n stencilMode: $ReadOnly<StencilMode>,\n colorMode: $ReadOnly<ColorMode>,\n cullFaceMode: $ReadOnly<CullFaceMode>,\n uniformValues: UniformValues<Us>,\n layerID: string,\n layoutVertexBuffer: VertexBuffer,\n indexBuffer: IndexBuffer,\n segments: SegmentVector,\n currentProperties: any,\n zoom: ?number,\n configuration: ?ProgramConfiguration,\n dynamicLayoutBuffer: ?VertexBuffer,\n dynamicLayoutBuffer2: ?VertexBuffer,\n dynamicLayoutBuffer3: ?VertexBuffer) {\n\n const gl = context.gl;\n\n if (this.failedToCreate) return;\n\n context.program.set(this.program);\n context.setDepthMode(depthMode);\n context.setStencilMode(stencilMode);\n context.setColorMode(colorMode);\n context.setCullFace(cullFaceMode);\n\n for (const name of Object.keys(this.fixedUniforms)) {\n this.fixedUniforms[name].set(uniformValues[name]);\n }\n\n if (configuration) {\n configuration.setUniforms(context, this.binderUniforms, currentProperties, {zoom: (zoom: any)});\n }\n\n const primitiveSize = {\n [gl.LINES]: 2,\n [gl.TRIANGLES]: 3,\n [gl.LINE_STRIP]: 1\n }[drawMode];\n\n for (const segment of segments.get()) {\n const vaos = segment.vaos || (segment.vaos = {});\n const vao: VertexArrayObject = vaos[layerID] || (vaos[layerID] = new VertexArrayObject());\n\n vao.bind(\n context,\n this,\n layoutVertexBuffer,\n configuration ? configuration.getPaintVertexBuffers() : [],\n indexBuffer,\n segment.vertexOffset,\n dynamicLayoutBuffer,\n dynamicLayoutBuffer2,\n dynamicLayoutBuffer3\n );\n\n gl.drawElements(\n drawMode,\n segment.primitiveLength * primitiveSize,\n gl.UNSIGNED_SHORT,\n segment.primitiveOffset * primitiveSize * 2);\n }\n }\n}\n\nexport default Program;\n","// @flow\n\nimport Context from '../gl/context.js';\nimport type {UniformLocations, UniformValues} from './uniform_binding.js';\nimport type {UnwrappedTileID} from '../source/tile_id.js';\nimport Painter from './painter.js';\nimport Fog from '../style/fog.js';\nimport {Uniform1f, Uniform1i, Uniform2f, Uniform3f, Uniform4f, UniformMatrix4f} from './uniform_binding.js';\nimport {globeToMercatorTransition} from '../geo/projection/globe_util.js';\n\nexport type FogUniformsType = {|\n 'u_fog_matrix': UniformMatrix4f,\n 'u_fog_range': Uniform2f,\n 'u_fog_color': Uniform4f,\n 'u_fog_horizon_blend': Uniform1f,\n 'u_fog_temporal_offset': Uniform1f,\n 'u_frustum_tl': Uniform3f,\n 'u_frustum_tr': Uniform3f,\n 'u_frustum_br': Uniform3f,\n 'u_frustum_bl': Uniform3f,\n 'u_globe_pos': Uniform3f,\n 'u_globe_radius': Uniform1f,\n 'u_globe_transition': Uniform1f,\n 'u_is_globe': Uniform1i,\n 'u_viewport': Uniform2f,\n|};\n\nexport const fogUniforms = (context: Context, locations: UniformLocations): FogUniformsType => ({\n 'u_fog_matrix': new UniformMatrix4f(context, locations.u_fog_matrix),\n 'u_fog_range': new Uniform2f(context, locations.u_fog_range),\n 'u_fog_color': new Uniform4f(context, locations.u_fog_color),\n 'u_fog_horizon_blend': new Uniform1f(context, locations.u_fog_horizon_blend),\n 'u_fog_temporal_offset': new Uniform1f(context, locations.u_fog_temporal_offset),\n 'u_frustum_tl': new Uniform3f(context, locations.u_frustum_tl),\n 'u_frustum_tr': new Uniform3f(context, locations.u_frustum_tr),\n 'u_frustum_br': new Uniform3f(context, locations.u_frustum_br),\n 'u_frustum_bl': new Uniform3f(context, locations.u_frustum_bl),\n 'u_globe_pos': new Uniform3f(context, locations.u_globe_pos),\n 'u_globe_radius': new Uniform1f(context, locations.u_globe_radius),\n 'u_globe_transition': new Uniform1f(context, locations.u_globe_transition),\n 'u_is_globe': new Uniform1i(context, locations.u_is_globe),\n 'u_viewport': new Uniform2f(context, locations.u_viewport)\n});\n\nexport const fogUniformValues = (\n painter: Painter,\n fog: Fog,\n tileID: ?UnwrappedTileID,\n fogOpacity: number,\n frustumDirTl: [number, number, number],\n frustumDirTr: [number, number, number],\n frustumDirBr: [number, number, number],\n frustumDirBl: [number, number, number],\n globePosition: [number, number, number],\n globeRadius: number,\n viewport: [number, number]\n): UniformValues<FogUniformsType> => {\n const tr = painter.transform;\n const fogColor = fog.properties.get('color').toArray01();\n fogColor[3] = fogOpacity; // Update Alpha\n const temporalOffset = (painter.frameCounter / 1000.0) % 1;\n return {\n 'u_fog_matrix': tileID ? tr.calculateFogTileMatrix(tileID) : painter.identityMat,\n 'u_fog_range': fog.getFovAdjustedRange(tr._fov),\n 'u_fog_color': fogColor,\n 'u_fog_horizon_blend': fog.properties.get('horizon-blend'),\n 'u_fog_temporal_offset': temporalOffset,\n 'u_frustum_tl': frustumDirTl,\n 'u_frustum_tr': frustumDirTr,\n 'u_frustum_br': frustumDirBr,\n 'u_frustum_bl': frustumDirBl,\n 'u_globe_pos': globePosition,\n 'u_globe_radius': globeRadius,\n 'u_viewport': viewport,\n 'u_globe_transition': globeToMercatorTransition(tr.zoom),\n 'u_is_globe': +(tr.projection.name === 'globe')\n };\n};\n","// @flow\n\nimport assert from 'assert';\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n Uniform3f\n} from '../uniform_binding.js';\nimport pixelsToTileUnits from '../../source/pixels_to_tile_units.js';\n\nimport type Painter from '../painter.js';\nimport type {OverscaledTileID} from '../../source/tile_id.js';\nimport type {CrossFaded} from '../../style/properties.js';\nimport type {CrossfadeParameters} from '../../style/evaluation_parameters.js';\nimport type {UniformValues} from '../uniform_binding.js';\nimport type Tile from '../../source/tile.js';\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\ntype BackgroundPatternUniformsType = {|\n 'u_image': Uniform1i,\n 'u_pattern_tl_a': Uniform2f,\n 'u_pattern_br_a': Uniform2f,\n 'u_pattern_tl_b': Uniform2f,\n 'u_pattern_br_b': Uniform2f,\n 'u_texsize': Uniform2f,\n 'u_mix': Uniform1f,\n 'u_pattern_size_a': Uniform2f,\n 'u_pattern_size_b': Uniform2f,\n 'u_scale_a': Uniform1f,\n 'u_scale_b': Uniform1f,\n 'u_pixel_coord_upper': Uniform2f,\n 'u_pixel_coord_lower': Uniform2f,\n 'u_tile_units_to_pixels': Uniform1f\n|};\n\nexport type PatternUniformsType = {|\n // pattern uniforms:\n 'u_image': Uniform1i,\n 'u_texsize': Uniform2f,\n 'u_scale': Uniform3f,\n 'u_fade': Uniform1f,\n 'u_pixel_coord_upper': Uniform2f,\n 'u_pixel_coord_lower': Uniform2f\n|};\n\nfunction patternUniformValues(crossfade: CrossfadeParameters, painter: Painter,\n tile: Tile\n): UniformValues<PatternUniformsType> {\n\n const tileRatio = 1 / pixelsToTileUnits(tile, 1, painter.transform.tileZoom);\n\n const numTiles = Math.pow(2, tile.tileID.overscaledZ);\n const tileSizeAtNearestZoom = tile.tileSize * Math.pow(2, painter.transform.tileZoom) / numTiles;\n\n const pixelX = tileSizeAtNearestZoom * (tile.tileID.canonical.x + tile.tileID.wrap * numTiles);\n const pixelY = tileSizeAtNearestZoom * tile.tileID.canonical.y;\n\n return {\n 'u_image': 0,\n 'u_texsize': tile.imageAtlasTexture.size,\n 'u_scale': [tileRatio, crossfade.fromScale, crossfade.toScale],\n 'u_fade': crossfade.t,\n // split the pixel coord into two pairs of 16 bit numbers. The glsl spec only guarantees 16 bits of precision.\n 'u_pixel_coord_upper': [pixelX >> 16, pixelY >> 16],\n 'u_pixel_coord_lower': [pixelX & 0xFFFF, pixelY & 0xFFFF]\n };\n}\n\nfunction bgPatternUniformValues(image: CrossFaded<ResolvedImage>, crossfade: CrossfadeParameters, painter: Painter,\n tile: {tileID: OverscaledTileID, tileSize: number}\n): UniformValues<BackgroundPatternUniformsType> {\n const imagePosA = painter.imageManager.getPattern(image.from.toString());\n const imagePosB = painter.imageManager.getPattern(image.to.toString());\n assert(imagePosA && imagePosB);\n const {width, height} = painter.imageManager.getPixelSize();\n\n const numTiles = Math.pow(2, tile.tileID.overscaledZ);\n const tileSizeAtNearestZoom = tile.tileSize * Math.pow(2, painter.transform.tileZoom) / numTiles;\n\n const pixelX = tileSizeAtNearestZoom * (tile.tileID.canonical.x + tile.tileID.wrap * numTiles);\n const pixelY = tileSizeAtNearestZoom * tile.tileID.canonical.y;\n\n return {\n 'u_image': 0,\n 'u_pattern_tl_a': (imagePosA: any).tl,\n 'u_pattern_br_a': (imagePosA: any).br,\n 'u_pattern_tl_b': (imagePosB: any).tl,\n 'u_pattern_br_b': (imagePosB: any).br,\n 'u_texsize': [width, height],\n 'u_mix': crossfade.t,\n 'u_pattern_size_a': (imagePosA: any).displaySize,\n 'u_pattern_size_b': (imagePosB: any).displaySize,\n 'u_scale_a': crossfade.fromScale,\n 'u_scale_b': crossfade.toScale,\n 'u_tile_units_to_pixels': 1 / pixelsToTileUnits(tile, 1, painter.transform.tileZoom),\n // split the pixel coord into two pairs of 16 bit numbers. The glsl spec only guarantees 16 bits of precision.\n 'u_pixel_coord_upper': [pixelX >> 16, pixelY >> 16],\n 'u_pixel_coord_lower': [pixelX & 0xFFFF, pixelY & 0xFFFF]\n };\n}\nexport {bgPatternUniformValues, patternUniformValues};\n","// @flow\n\nimport {patternUniformValues} from './pattern.js';\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n Uniform3f,\n UniformMatrix4f\n} from '../uniform_binding.js';\nimport {mat3, mat4, vec3} from 'gl-matrix';\nimport {extend} from '../../util/util.js';\nimport type Context from '../../gl/context.js';\nimport type Painter from '../painter.js';\nimport type {UniformValues, UniformLocations} from '../uniform_binding.js';\nimport type {CrossfadeParameters} from '../../style/evaluation_parameters.js';\nimport type Tile from '../../source/tile.js';\nimport {CanonicalTileID, OverscaledTileID} from '../../source/tile_id.js';\nimport EXTENT from '../../data/extent.js';\n\nexport type FillExtrusionUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_lightpos': Uniform3f,\n 'u_lightintensity': Uniform1f,\n 'u_lightcolor': Uniform3f,\n 'u_vertical_gradient': Uniform1f,\n 'u_opacity': Uniform1f,\n // globe uniforms:\n 'u_tile_id': Uniform3f,\n 'u_zoom_transition': Uniform1f,\n 'u_inv_rot_matrix': UniformMatrix4f,\n 'u_merc_center': Uniform2f,\n 'u_up_dir': Uniform3f,\n 'u_height_lift': Uniform1f\n|};\n\nexport type FillExtrusionPatternUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_lightpos': Uniform3f,\n 'u_lightintensity': Uniform1f,\n 'u_lightcolor': Uniform3f,\n 'u_height_factor': Uniform1f,\n 'u_vertical_gradient': Uniform1f,\n // globe uniforms:\n 'u_tile_id': Uniform3f,\n 'u_zoom_transition': Uniform1f,\n 'u_inv_rot_matrix': UniformMatrix4f,\n 'u_merc_center': Uniform2f,\n 'u_up_dir': Uniform3f,\n 'u_height_lift': Uniform1f,\n // pattern uniforms:\n 'u_texsize': Uniform2f,\n 'u_image': Uniform1i,\n 'u_pixel_coord_upper': Uniform2f,\n 'u_pixel_coord_lower': Uniform2f,\n 'u_scale': Uniform3f,\n 'u_fade': Uniform1f,\n 'u_opacity': Uniform1f\n|};\n\nconst fillExtrusionUniforms = (context: Context, locations: UniformLocations): FillExtrusionUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_lightpos': new Uniform3f(context, locations.u_lightpos),\n 'u_lightintensity': new Uniform1f(context, locations.u_lightintensity),\n 'u_lightcolor': new Uniform3f(context, locations.u_lightcolor),\n 'u_vertical_gradient': new Uniform1f(context, locations.u_vertical_gradient),\n 'u_opacity': new Uniform1f(context, locations.u_opacity),\n // globe uniforms:\n 'u_tile_id': new Uniform3f(context, locations.u_tile_id),\n 'u_zoom_transition': new Uniform1f(context, locations.u_zoom_transition),\n 'u_inv_rot_matrix': new UniformMatrix4f(context, locations.u_inv_rot_matrix),\n 'u_merc_center': new Uniform2f(context, locations.u_merc_center),\n 'u_up_dir': new Uniform3f(context, locations.u_up_dir),\n 'u_height_lift': new Uniform1f(context, locations.u_height_lift)\n});\n\nconst fillExtrusionPatternUniforms = (context: Context, locations: UniformLocations): FillExtrusionPatternUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_lightpos': new Uniform3f(context, locations.u_lightpos),\n 'u_lightintensity': new Uniform1f(context, locations.u_lightintensity),\n 'u_lightcolor': new Uniform3f(context, locations.u_lightcolor),\n 'u_vertical_gradient': new Uniform1f(context, locations.u_vertical_gradient),\n 'u_height_factor': new Uniform1f(context, locations.u_height_factor),\n // globe uniforms:\n 'u_tile_id': new Uniform3f(context, locations.u_tile_id),\n 'u_zoom_transition': new Uniform1f(context, locations.u_zoom_transition),\n 'u_inv_rot_matrix': new UniformMatrix4f(context, locations.u_inv_rot_matrix),\n 'u_merc_center': new Uniform2f(context, locations.u_merc_center),\n 'u_up_dir': new Uniform3f(context, locations.u_up_dir),\n 'u_height_lift': new Uniform1f(context, locations.u_height_lift),\n // pattern uniforms\n 'u_image': new Uniform1i(context, locations.u_image),\n 'u_texsize': new Uniform2f(context, locations.u_texsize),\n 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper),\n 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower),\n 'u_scale': new Uniform3f(context, locations.u_scale),\n 'u_fade': new Uniform1f(context, locations.u_fade),\n 'u_opacity': new Uniform1f(context, locations.u_opacity)\n});\n\nconst identityMatrix = mat4.create();\n\nconst fillExtrusionUniformValues = (\n matrix: Float32Array,\n painter: Painter,\n shouldUseVerticalGradient: boolean,\n opacity: number,\n coord: OverscaledTileID,\n heightLift: number,\n zoomTransition: number,\n mercatorCenter: [number, number],\n invMatrix: Float32Array\n): UniformValues<FillExtrusionUniformsType> => {\n const light = painter.style.light;\n const _lp = light.properties.get('position');\n const lightPos = [_lp.x, _lp.y, _lp.z];\n const lightMat = mat3.create();\n const anchor = light.properties.get('anchor');\n if (anchor === 'viewport') {\n mat3.fromRotation(lightMat, -painter.transform.angle);\n vec3.transformMat3(lightPos, lightPos, lightMat);\n }\n\n const lightColor = light.properties.get('color');\n const tr = painter.transform;\n\n const uniformValues = {\n 'u_matrix': matrix,\n 'u_lightpos': lightPos,\n 'u_lightintensity': light.properties.get('intensity'),\n 'u_lightcolor': [lightColor.r, lightColor.g, lightColor.b],\n 'u_vertical_gradient': +shouldUseVerticalGradient,\n 'u_opacity': opacity,\n 'u_tile_id': [0, 0, 0],\n 'u_zoom_transition': 0,\n 'u_inv_rot_matrix': identityMatrix,\n 'u_merc_center': [0, 0],\n 'u_up_dir': [0, 0, 0],\n 'u_height_lift': 0\n };\n\n if (tr.projection.name === 'globe') {\n uniformValues['u_tile_id'] = [coord.canonical.x, coord.canonical.y, 1 << coord.canonical.z];\n uniformValues['u_zoom_transition'] = zoomTransition;\n uniformValues['u_inv_rot_matrix'] = invMatrix;\n uniformValues['u_merc_center'] = mercatorCenter;\n uniformValues['u_up_dir'] = (tr.projection.upVector(new CanonicalTileID(0, 0, 0), mercatorCenter[0] * EXTENT, mercatorCenter[1] * EXTENT): any);\n uniformValues['u_height_lift'] = heightLift;\n }\n\n return uniformValues;\n};\n\nconst fillExtrusionPatternUniformValues = (\n matrix: Float32Array,\n painter: Painter,\n shouldUseVerticalGradient: boolean,\n opacity: number,\n coord: OverscaledTileID,\n crossfade: CrossfadeParameters,\n tile: Tile,\n heightLift: number,\n zoomTransition: number,\n mercatorCenter: [number, number],\n invMatrix: Float32Array\n): UniformValues<FillExtrusionPatternUniformsType> => {\n const uniformValues = fillExtrusionUniformValues(\n matrix, painter, shouldUseVerticalGradient, opacity, coord,\n heightLift, zoomTransition, mercatorCenter, invMatrix);\n const heightFactorUniform = {\n 'u_height_factor': -Math.pow(2, coord.overscaledZ) / tile.tileSize / 8\n };\n return extend(uniformValues, patternUniformValues(crossfade, painter, tile), heightFactorUniform);\n};\n\nexport {\n fillExtrusionUniforms,\n fillExtrusionPatternUniforms,\n fillExtrusionUniformValues,\n fillExtrusionPatternUniformValues\n};\n","// @flow\n\nimport {patternUniformValues} from './pattern.js';\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n Uniform3f,\n UniformMatrix4f\n} from '../uniform_binding.js';\nimport {extend} from '../../util/util.js';\n\nimport type Painter from '../painter.js';\nimport type {UniformValues, UniformLocations} from '../uniform_binding.js';\nimport type Context from '../../gl/context.js';\nimport type {CrossfadeParameters} from '../../style/evaluation_parameters.js';\nimport type Tile from '../../source/tile.js';\n\nexport type FillUniformsType = {|\n 'u_matrix': UniformMatrix4f\n|};\n\nexport type FillOutlineUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_world': Uniform2f\n|};\n\nexport type FillPatternUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n // pattern uniforms:\n 'u_texsize': Uniform2f,\n 'u_image': Uniform1i,\n 'u_pixel_coord_upper': Uniform2f,\n 'u_pixel_coord_lower': Uniform2f,\n 'u_scale': Uniform3f,\n 'u_fade': Uniform1f\n|};\n\nexport type FillOutlinePatternUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_world': Uniform2f,\n // pattern uniforms:\n 'u_texsize': Uniform2f,\n 'u_image': Uniform1i,\n 'u_pixel_coord_upper': Uniform2f,\n 'u_pixel_coord_lower': Uniform2f,\n 'u_scale': Uniform3f,\n 'u_fade': Uniform1f\n|};\n\nconst fillUniforms = (context: Context, locations: UniformLocations): FillUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix)\n});\n\nconst fillPatternUniforms = (context: Context, locations: UniformLocations): FillPatternUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_image': new Uniform1i(context, locations.u_image),\n 'u_texsize': new Uniform2f(context, locations.u_texsize),\n 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper),\n 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower),\n 'u_scale': new Uniform3f(context, locations.u_scale),\n 'u_fade': new Uniform1f(context, locations.u_fade)\n\n});\n\nconst fillOutlineUniforms = (context: Context, locations: UniformLocations): FillOutlineUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_world': new Uniform2f(context, locations.u_world)\n});\n\nconst fillOutlinePatternUniforms = (context: Context, locations: UniformLocations): FillOutlinePatternUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_world': new Uniform2f(context, locations.u_world),\n 'u_image': new Uniform1i(context, locations.u_image),\n 'u_texsize': new Uniform2f(context, locations.u_texsize),\n 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper),\n 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower),\n 'u_scale': new Uniform3f(context, locations.u_scale),\n 'u_fade': new Uniform1f(context, locations.u_fade)\n});\n\nconst fillUniformValues = (matrix: Float32Array): UniformValues<FillUniformsType> => ({\n 'u_matrix': matrix\n});\n\nconst fillPatternUniformValues = (\n matrix: Float32Array,\n painter: Painter,\n crossfade: CrossfadeParameters,\n tile: Tile\n): UniformValues<FillPatternUniformsType> => extend(\n fillUniformValues(matrix),\n patternUniformValues(crossfade, painter, tile)\n);\n\nconst fillOutlineUniformValues = (\n matrix: Float32Array,\n drawingBufferSize: [number, number]\n): UniformValues<FillOutlineUniformsType> => ({\n 'u_matrix': matrix,\n 'u_world': drawingBufferSize\n});\n\nconst fillOutlinePatternUniformValues = (\n matrix: Float32Array,\n painter: Painter,\n crossfade: CrossfadeParameters,\n tile: Tile,\n drawingBufferSize: [number, number]\n): UniformValues<FillOutlinePatternUniformsType> => extend(\n fillPatternUniformValues(matrix, painter, crossfade, tile),\n {\n 'u_world': drawingBufferSize\n }\n);\n\nexport {\n fillUniforms,\n fillPatternUniforms,\n fillOutlineUniforms,\n fillOutlinePatternUniforms,\n fillUniformValues,\n fillPatternUniformValues,\n fillOutlineUniformValues,\n fillOutlinePatternUniformValues\n};\n","// @flow\n\nimport {\n Uniform1f,\n Uniform2f,\n Uniform3f,\n UniformMatrix2f,\n UniformMatrix4f\n} from '../uniform_binding.js';\n\nimport type Context from '../../gl/context.js';\nimport type {UniformValues, UniformLocations} from '../uniform_binding.js';\nimport {CanonicalTileID, OverscaledTileID} from '../../source/tile_id.js';\nimport type Tile from '../../source/tile.js';\nimport type CircleStyleLayer from '../../style/style_layer/circle_style_layer.js';\nimport type Painter from '../painter.js';\nimport browser from '../../util/browser.js';\nimport {mat4} from 'gl-matrix';\nimport {globeToMercatorTransition, globePixelsToTileUnits} from '../../geo/projection/globe_util.js';\nimport EXTENT from '../../data/extent.js';\n\nexport type CircleUniformsType = {|\n 'u_camera_to_center_distance': Uniform1f,\n 'u_extrude_scale': UniformMatrix2f,\n 'u_device_pixel_ratio': Uniform1f,\n 'u_matrix': UniformMatrix4f,\n 'u_inv_rot_matrix': UniformMatrix4f,\n 'u_merc_center': Uniform2f,\n 'u_tile_id': Uniform3f,\n 'u_zoom_transition': Uniform1f,\n 'u_up_dir': Uniform3f,\n|};\n\nexport type CircleDefinesType = 'PITCH_WITH_MAP' | 'SCALE_WITH_MAP' | 'PROJECTION_GLOBE_VIEW';\n\nconst circleUniforms = (context: Context, locations: UniformLocations): CircleUniformsType => ({\n 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance),\n 'u_extrude_scale': new UniformMatrix2f(context, locations.u_extrude_scale),\n 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio),\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_inv_rot_matrix': new UniformMatrix4f(context, locations.u_inv_rot_matrix),\n 'u_merc_center': new Uniform2f(context, locations.u_merc_center),\n 'u_tile_id': new Uniform3f(context, locations.u_tile_id),\n 'u_zoom_transition': new Uniform1f(context, locations.u_zoom_transition),\n 'u_up_dir': new Uniform3f(context, locations.u_up_dir),\n});\n\nconst identityMatrix = mat4.create();\n\nconst circleUniformValues = (\n painter: Painter,\n coord: OverscaledTileID,\n tile: Tile,\n invMatrix: Float32Array,\n mercatorCenter: [number, number],\n layer: CircleStyleLayer\n): UniformValues<CircleUniformsType> => {\n const transform = painter.transform;\n const isGlobe = transform.projection.name === 'globe';\n\n let extrudeScale;\n if (layer.paint.get('circle-pitch-alignment') === 'map') {\n if (isGlobe) {\n const s = globePixelsToTileUnits(transform.zoom, coord.canonical) * transform._projectionScaler;\n extrudeScale = Float32Array.from([s, 0, 0, s]);\n } else {\n extrudeScale = transform.calculatePixelsToTileUnitsMatrix(tile);\n }\n } else {\n extrudeScale = new Float32Array([\n transform.pixelsToGLUnits[0],\n 0,\n 0,\n transform.pixelsToGLUnits[1]]);\n }\n\n const values = {\n 'u_camera_to_center_distance': transform.cameraToCenterDistance,\n 'u_matrix': painter.translatePosMatrix(\n coord.projMatrix,\n tile,\n layer.paint.get('circle-translate'),\n layer.paint.get('circle-translate-anchor')),\n 'u_device_pixel_ratio': browser.devicePixelRatio,\n 'u_extrude_scale': extrudeScale,\n 'u_inv_rot_matrix': identityMatrix,\n 'u_merc_center': [0, 0],\n 'u_tile_id': [0, 0, 0],\n 'u_zoom_transition': 0,\n 'u_up_dir': [0, 0, 0]\n };\n\n if (isGlobe) {\n values['u_inv_rot_matrix'] = invMatrix;\n values['u_merc_center'] = mercatorCenter;\n values['u_tile_id'] = [coord.canonical.x, coord.canonical.y, 1 << coord.canonical.z];\n values['u_zoom_transition'] = globeToMercatorTransition(transform.zoom);\n const x = mercatorCenter[0] * EXTENT;\n const y = mercatorCenter[1] * EXTENT;\n values['u_up_dir'] = (transform.projection.upVector(new CanonicalTileID(0, 0, 0), x, y): any);\n }\n\n return values;\n};\n\nconst circleDefinesValues = (layer: CircleStyleLayer): CircleDefinesType[] => {\n const values = [];\n if (layer.paint.get('circle-pitch-alignment') === 'map') values.push('PITCH_WITH_MAP');\n if (layer.paint.get('circle-pitch-scale') === 'map') values.push('SCALE_WITH_MAP');\n\n return values;\n};\n\nexport {circleUniforms, circleUniformValues, circleDefinesValues};\n","// @flow\n\nimport {\n Uniform1f,\n Uniform2f,\n UniformMatrix4f\n} from '../uniform_binding.js';\nimport EXTENT from '../../data/extent.js';\nimport type Context from '../../gl/context.js';\nimport type {UniformValues, UniformLocations} from '../uniform_binding.js';\nimport type Transform from '../../geo/transform.js';\nimport type Tile from '../../source/tile.js';\nimport type Projection from '../../geo/projection/projection.js';\n\nexport type CollisionUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_camera_to_center_distance': Uniform1f,\n 'u_extrude_scale': Uniform2f\n|};\n\nexport type CollisionCircleUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_inv_matrix': UniformMatrix4f,\n 'u_camera_to_center_distance': Uniform1f,\n 'u_viewport_size': Uniform2f\n|};\n\nconst collisionUniforms = (context: Context, locations: UniformLocations): CollisionUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance),\n 'u_extrude_scale': new Uniform2f(context, locations.u_extrude_scale)\n});\n\nconst collisionCircleUniforms = (context: Context, locations: UniformLocations): CollisionCircleUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_inv_matrix': new UniformMatrix4f(context, locations.u_inv_matrix),\n 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance),\n 'u_viewport_size': new Uniform2f(context, locations.u_viewport_size)\n});\n\nconst collisionUniformValues = (\n matrix: Float32Array,\n transform: Transform,\n tile: Tile,\n projection: Projection\n): UniformValues<CollisionUniformsType> => {\n const pixelRatio = EXTENT / tile.tileSize;\n\n return {\n 'u_matrix': matrix,\n 'u_camera_to_center_distance': transform.getCameraToCenterDistance(projection),\n 'u_extrude_scale': [transform.pixelsToGLUnits[0] / pixelRatio,\n transform.pixelsToGLUnits[1] / pixelRatio]\n };\n};\n\nconst collisionCircleUniformValues = (\n matrix: Float32Array,\n invMatrix: Float32Array,\n transform: Transform,\n projection: Projection\n): UniformValues<CollisionCircleUniformsType> => {\n return {\n 'u_matrix': matrix,\n 'u_inv_matrix': invMatrix,\n 'u_camera_to_center_distance': transform.getCameraToCenterDistance(projection),\n 'u_viewport_size': [transform.width, transform.height]\n };\n};\n\nexport {collisionUniforms, collisionUniformValues, collisionCircleUniforms, collisionCircleUniformValues};\n","// @flow\n\nimport {\n UniformColor,\n UniformMatrix4f,\n Uniform1i,\n Uniform1f\n} from '../uniform_binding.js';\n\nimport type Context from '../../gl/context.js';\nimport type {UniformValues, UniformLocations} from '../uniform_binding.js';\nimport type Color from '../../style-spec/util/color.js';\n\nexport type DebugUniformsType = {|\n 'u_color': UniformColor,\n 'u_matrix': UniformMatrix4f,\n 'u_overlay': Uniform1i,\n 'u_overlay_scale': Uniform1f\n|};\n\nconst debugUniforms = (context: Context, locations: UniformLocations): DebugUniformsType => ({\n 'u_color': new UniformColor(context, locations.u_color),\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_overlay': new Uniform1i(context, locations.u_overlay),\n 'u_overlay_scale': new Uniform1f(context, locations.u_overlay_scale),\n});\n\nconst debugUniformValues = (matrix: Float32Array, color: Color, scaleRatio: number = 1): UniformValues<DebugUniformsType> => ({\n 'u_matrix': matrix,\n 'u_color': color,\n 'u_overlay': 0,\n 'u_overlay_scale': scaleRatio\n});\n\nexport {debugUniforms, debugUniformValues};\n\nexport type DebugDefinesType = 'PROJECTION_GLOBE_VIEW';\n","// @flow\n\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n Uniform3f,\n UniformMatrix4f\n} from '../uniform_binding.js';\nimport pixelsToTileUnits from '../../source/pixels_to_tile_units.js';\n\nimport type Context from '../../gl/context.js';\nimport type Tile from '../../source/tile.js';\nimport type {UniformValues, UniformLocations} from '../uniform_binding.js';\nimport type Painter from '../painter.js';\nimport type HeatmapStyleLayer from '../../style/style_layer/heatmap_style_layer.js';\nimport {CanonicalTileID, OverscaledTileID} from '../../source/tile_id.js';\nimport {mat4} from 'gl-matrix';\nimport {globeToMercatorTransition, globePixelsToTileUnits} from '../../geo/projection/globe_util.js';\nimport EXTENT from '../../data/extent.js';\n\nexport type HeatmapUniformsType = {|\n 'u_extrude_scale': Uniform1f,\n 'u_intensity': Uniform1f,\n 'u_matrix': UniformMatrix4f,\n 'u_inv_rot_matrix': UniformMatrix4f,\n 'u_merc_center': Uniform2f,\n 'u_tile_id': Uniform3f,\n 'u_zoom_transition': Uniform1f,\n 'u_up_dir': Uniform3f,\n|};\n\nexport type HeatmapTextureUniformsType = {|\n 'u_image': Uniform1i,\n 'u_color_ramp': Uniform1i,\n 'u_opacity': Uniform1f\n|};\n\nconst heatmapUniforms = (context: Context, locations: UniformLocations): HeatmapUniformsType => ({\n 'u_extrude_scale': new Uniform1f(context, locations.u_extrude_scale),\n 'u_intensity': new Uniform1f(context, locations.u_intensity),\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_inv_rot_matrix': new UniformMatrix4f(context, locations.u_inv_rot_matrix),\n 'u_merc_center': new Uniform2f(context, locations.u_merc_center),\n 'u_tile_id': new Uniform3f(context, locations.u_tile_id),\n 'u_zoom_transition': new Uniform1f(context, locations.u_zoom_transition),\n 'u_up_dir': new Uniform3f(context, locations.u_up_dir)\n});\n\nconst heatmapTextureUniforms = (context: Context, locations: UniformLocations): HeatmapTextureUniformsType => ({\n 'u_image': new Uniform1i(context, locations.u_image),\n 'u_color_ramp': new Uniform1i(context, locations.u_color_ramp),\n 'u_opacity': new Uniform1f(context, locations.u_opacity)\n});\n\nconst identityMatrix = mat4.create();\n\nconst heatmapUniformValues = (\n painter: Painter,\n coord: OverscaledTileID,\n tile: Tile,\n invMatrix: Float32Array,\n mercatorCenter: [number, number],\n zoom: number,\n intensity: number\n): UniformValues<HeatmapUniformsType> => {\n const transform = painter.transform;\n const isGlobe = transform.projection.name === 'globe';\n const extrudeScale = isGlobe ? globePixelsToTileUnits(transform.zoom, coord.canonical) * transform._projectionScaler : pixelsToTileUnits(tile, 1, zoom);\n\n const values = {\n 'u_matrix': coord.projMatrix,\n 'u_extrude_scale': extrudeScale,\n 'u_intensity': intensity,\n 'u_inv_rot_matrix': identityMatrix,\n 'u_merc_center': [0, 0],\n 'u_tile_id': [0, 0, 0],\n 'u_zoom_transition': 0,\n 'u_up_dir': [0, 0, 0],\n };\n\n if (isGlobe) {\n values['u_inv_rot_matrix'] = invMatrix;\n values['u_merc_center'] = mercatorCenter;\n values['u_tile_id'] = [coord.canonical.x, coord.canonical.y, 1 << coord.canonical.z];\n values['u_zoom_transition'] = globeToMercatorTransition(transform.zoom);\n const x = mercatorCenter[0] * EXTENT;\n const y = mercatorCenter[1] * EXTENT;\n values['u_up_dir'] = (transform.projection.upVector(new CanonicalTileID(0, 0, 0), x, y): any);\n }\n\n return values;\n};\n\nconst heatmapTextureUniformValues = (\n painter: Painter,\n layer: HeatmapStyleLayer,\n textureUnit: number,\n colorRampUnit: number\n): UniformValues<HeatmapTextureUniformsType> => {\n return {\n 'u_image': textureUnit,\n 'u_color_ramp': colorRampUnit,\n 'u_opacity': layer.paint.get('heatmap-opacity')\n };\n};\n\nexport {\n heatmapUniforms,\n heatmapTextureUniforms,\n heatmapUniformValues,\n heatmapTextureUniformValues\n};\n\nexport type HeatmapDefinesType = 'PROJECTION_GLOBE_VIEW';\n","// @flow\n\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n Uniform3f,\n UniformMatrix2f,\n UniformMatrix4f\n} from '../uniform_binding.js';\nimport pixelsToTileUnits from '../../source/pixels_to_tile_units.js';\n\nimport type Context from '../../gl/context.js';\nimport type {UniformValues, UniformLocations} from '../uniform_binding.js';\nimport type Transform from '../../geo/transform.js';\nimport type Tile from '../../source/tile.js';\nimport type LineStyleLayer from '../../style/style_layer/line_style_layer.js';\nimport type Painter from '../painter.js';\nimport type {CrossfadeParameters} from '../../style/evaluation_parameters.js';\n\nexport type LineUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_pixels_to_tile_units': UniformMatrix2f,\n 'u_device_pixel_ratio': Uniform1f,\n 'u_units_to_pixels': Uniform2f,\n 'u_dash_image': Uniform1i,\n 'u_gradient_image': Uniform1i,\n 'u_image_height': Uniform1f,\n 'u_texsize': Uniform2f,\n 'u_scale': Uniform3f,\n 'u_mix': Uniform1f,\n 'u_alpha_discard_threshold': Uniform1f,\n 'u_trim_offset': Uniform2f\n|};\n\nexport type LinePatternUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_texsize': Uniform2f,\n 'u_pixels_to_tile_units': UniformMatrix2f,\n 'u_device_pixel_ratio': Uniform1f,\n 'u_units_to_pixels': Uniform2f,\n 'u_image': Uniform1i,\n 'u_scale': Uniform3f,\n 'u_fade': Uniform1f,\n 'u_alpha_discard_threshold': Uniform1f\n|};\n\nexport type LineDefinesType = 'RENDER_LINE_GRADIENT' | 'RENDER_LINE_DASH' | 'RENDER_LINE_ALPHA_DISCARD' | 'RENDER_LINE_TRIM_OFFSET';\n\nconst lineUniforms = (context: Context, locations: UniformLocations): LineUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_pixels_to_tile_units': new UniformMatrix2f(context, locations.u_pixels_to_tile_units),\n 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio),\n 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels),\n 'u_dash_image': new Uniform1i(context, locations.u_dash_image),\n 'u_gradient_image': new Uniform1i(context, locations.u_gradient_image),\n 'u_image_height': new Uniform1f(context, locations.u_image_height),\n 'u_texsize': new Uniform2f(context, locations.u_texsize),\n 'u_scale': new Uniform3f(context, locations.u_scale),\n 'u_mix': new Uniform1f(context, locations.u_mix),\n 'u_alpha_discard_threshold': new Uniform1f(context, locations.u_alpha_discard_threshold),\n 'u_trim_offset': new Uniform2f(context, locations.u_trim_offset)\n});\n\nconst linePatternUniforms = (context: Context, locations: UniformLocations): LinePatternUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_texsize': new Uniform2f(context, locations.u_texsize),\n 'u_pixels_to_tile_units': new UniformMatrix2f(context, locations.u_pixels_to_tile_units),\n 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio),\n 'u_image': new Uniform1i(context, locations.u_image),\n 'u_units_to_pixels': new Uniform2f(context, locations.u_units_to_pixels),\n 'u_scale': new Uniform3f(context, locations.u_scale),\n 'u_fade': new Uniform1f(context, locations.u_fade),\n 'u_alpha_discard_threshold': new Uniform1f(context, locations.u_alpha_discard_threshold)\n});\n\nconst lineUniformValues = (\n painter: Painter,\n tile: Tile,\n layer: LineStyleLayer,\n crossfade: CrossfadeParameters,\n matrix: ?Float32Array,\n imageHeight: number,\n pixelRatio: number,\n trimOffset: [number, number],\n): UniformValues<LineUniformsType> => {\n const transform = painter.transform;\n const pixelsToTileUnits = transform.calculatePixelsToTileUnitsMatrix(tile);\n\n const values = {\n 'u_matrix': calculateMatrix(painter, tile, layer, matrix),\n 'u_pixels_to_tile_units': pixelsToTileUnits,\n 'u_device_pixel_ratio': pixelRatio,\n 'u_units_to_pixels': [\n 1 / transform.pixelsToGLUnits[0],\n 1 / transform.pixelsToGLUnits[1]\n ],\n 'u_dash_image': 0,\n 'u_gradient_image': 1,\n 'u_image_height': imageHeight,\n 'u_texsize': [0, 0],\n 'u_scale': [0, 0, 0],\n 'u_mix': 0,\n 'u_alpha_discard_threshold': 0.0,\n 'u_trim_offset': trimOffset\n };\n if (hasDash(layer)) {\n const tileZoomRatio = calculateTileRatio(tile, painter.transform);\n values['u_texsize'] = tile.lineAtlasTexture.size;\n values['u_scale'] = [tileZoomRatio, crossfade.fromScale, crossfade.toScale];\n values['u_mix'] = crossfade.t;\n }\n return values;\n};\n\nconst linePatternUniformValues = (\n painter: Painter,\n tile: Tile,\n layer: LineStyleLayer,\n crossfade: CrossfadeParameters,\n matrix: ?Float32Array,\n pixelRatio: number\n): UniformValues<LinePatternUniformsType> => {\n const transform = painter.transform;\n const tileZoomRatio = calculateTileRatio(tile, transform);\n return {\n 'u_matrix': calculateMatrix(painter, tile, layer, matrix),\n 'u_texsize': tile.imageAtlasTexture.size,\n // camera zoom ratio\n 'u_pixels_to_tile_units': transform.calculatePixelsToTileUnitsMatrix(tile),\n 'u_device_pixel_ratio': pixelRatio,\n 'u_image': 0,\n 'u_scale': [tileZoomRatio, crossfade.fromScale, crossfade.toScale],\n 'u_fade': crossfade.t,\n 'u_units_to_pixels': [\n 1 / transform.pixelsToGLUnits[0],\n 1 / transform.pixelsToGLUnits[1]\n ],\n 'u_alpha_discard_threshold': 0.0\n };\n};\n\nfunction calculateTileRatio(tile: Tile, transform: Transform) {\n return 1 / pixelsToTileUnits(tile, 1, transform.tileZoom);\n}\n\nfunction calculateMatrix(painter, tile, layer, matrix) {\n return painter.translatePosMatrix(\n matrix ? matrix : tile.tileID.projMatrix,\n tile,\n layer.paint.get('line-translate'),\n layer.paint.get('line-translate-anchor')\n );\n}\n\nconst lineDefinesValues = (layer: LineStyleLayer): LineDefinesType[] => {\n const values = [];\n if (hasDash(layer)) values.push('RENDER_LINE_DASH');\n if (layer.paint.get('line-gradient')) values.push('RENDER_LINE_GRADIENT');\n\n const trimOffset = layer.paint.get('line-trim-offset');\n if (trimOffset[0] !== 0 || trimOffset[1] !== 0) {\n values.push('RENDER_LINE_TRIM_OFFSET');\n }\n\n const hasPattern = layer.paint.get('line-pattern').constantOr((1: any));\n const hasOpacity = layer.paint.get('line-opacity').constantOr(1.0) !== 1.0;\n if (!hasPattern && hasOpacity) {\n values.push('RENDER_LINE_ALPHA_DISCARD');\n }\n return values;\n};\n\nfunction hasDash(layer) {\n const dashPropertyValue = layer.paint.get('line-dasharray').value;\n return dashPropertyValue.value || dashPropertyValue.kind !== \"constant\";\n}\n\nexport {\n lineUniforms,\n linePatternUniforms,\n lineUniformValues,\n linePatternUniformValues,\n lineDefinesValues\n};\n","// @flow\n\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n Uniform3f,\n UniformMatrix4f\n} from '../uniform_binding.js';\n\nimport type Context from '../../gl/context.js';\nimport type {UniformValues, UniformLocations} from '../uniform_binding.js';\nimport type RasterStyleLayer from '../../style/style_layer/raster_style_layer.js';\n\nexport type RasterUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_tl_parent': Uniform2f,\n 'u_scale_parent': Uniform1f,\n 'u_fade_t': Uniform1f,\n 'u_opacity': Uniform1f,\n 'u_image0': Uniform1i,\n 'u_image1': Uniform1i,\n 'u_brightness_low': Uniform1f,\n 'u_brightness_high': Uniform1f,\n 'u_saturation_factor': Uniform1f,\n 'u_contrast_factor': Uniform1f,\n 'u_spin_weights': Uniform3f,\n 'u_perspective_transform': Uniform2f\n|};\n\nconst rasterUniforms = (context: Context, locations: UniformLocations): RasterUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_tl_parent': new Uniform2f(context, locations.u_tl_parent),\n 'u_scale_parent': new Uniform1f(context, locations.u_scale_parent),\n 'u_fade_t': new Uniform1f(context, locations.u_fade_t),\n 'u_opacity': new Uniform1f(context, locations.u_opacity),\n 'u_image0': new Uniform1i(context, locations.u_image0),\n 'u_image1': new Uniform1i(context, locations.u_image1),\n 'u_brightness_low': new Uniform1f(context, locations.u_brightness_low),\n 'u_brightness_high': new Uniform1f(context, locations.u_brightness_high),\n 'u_saturation_factor': new Uniform1f(context, locations.u_saturation_factor),\n 'u_contrast_factor': new Uniform1f(context, locations.u_contrast_factor),\n 'u_spin_weights': new Uniform3f(context, locations.u_spin_weights),\n 'u_perspective_transform': new Uniform2f(context, locations.u_perspective_transform)\n});\n\nconst rasterUniformValues = (\n matrix: Float32Array,\n parentTL: [number, number],\n parentScaleBy: number,\n fade: {mix: number, opacity: number},\n layer: RasterStyleLayer,\n perspectiveTransform: [number, number]\n): UniformValues<RasterUniformsType> => ({\n 'u_matrix': matrix,\n 'u_tl_parent': parentTL,\n 'u_scale_parent': parentScaleBy,\n 'u_fade_t': fade.mix,\n 'u_opacity': fade.opacity * layer.paint.get('raster-opacity'),\n 'u_image0': 0,\n 'u_image1': 1,\n 'u_brightness_low': layer.paint.get('raster-brightness-min'),\n 'u_brightness_high': layer.paint.get('raster-brightness-max'),\n 'u_saturation_factor': saturationFactor(layer.paint.get('raster-saturation')),\n 'u_contrast_factor': contrastFactor(layer.paint.get('raster-contrast')),\n 'u_spin_weights': spinWeights(layer.paint.get('raster-hue-rotate')),\n 'u_perspective_transform': perspectiveTransform\n});\n\nfunction spinWeights(angle) {\n angle *= Math.PI / 180;\n const s = Math.sin(angle);\n const c = Math.cos(angle);\n return [\n (2 * c + 1) / 3,\n (-Math.sqrt(3) * s - c + 1) / 3,\n (Math.sqrt(3) * s - c + 1) / 3\n ];\n}\n\nfunction contrastFactor(contrast) {\n return contrast > 0 ?\n 1 / (1 - contrast) :\n 1 + contrast;\n}\n\nfunction saturationFactor(saturation) {\n return saturation > 0 ?\n 1 - 1 / (1.001 - saturation) :\n -saturation;\n}\n\nexport {rasterUniforms, rasterUniformValues};\n","// @flow\n\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n Uniform3f,\n UniformMatrix4f\n} from '../uniform_binding.js';\nimport {mat4} from 'gl-matrix';\nimport {extend} from '../../util/util.js';\nimport browser from '../../util/browser.js';\nimport {OverscaledTileID} from '../../source/tile_id.js';\nimport type Context from '../../gl/context.js';\nimport type Painter from '../painter.js';\nimport type {UniformValues, UniformLocations} from '../uniform_binding.js';\nimport {globeECEFOrigin} from '../../geo/projection/globe_util.js';\nimport type Projection from '../../geo/projection/projection.js';\n\nimport type {InterpolatedSize} from '../../symbol/symbol_size.js';\n\nexport type SymbolIconUniformsType = {|\n 'u_is_size_zoom_constant': Uniform1i,\n 'u_is_size_feature_constant': Uniform1i,\n 'u_size_t': Uniform1f,\n 'u_size': Uniform1f,\n 'u_camera_to_center_distance': Uniform1f,\n 'u_rotate_symbol': Uniform1i,\n 'u_aspect_ratio': Uniform1f,\n 'u_fade_change': Uniform1f,\n 'u_matrix': UniformMatrix4f,\n 'u_label_plane_matrix': UniformMatrix4f,\n 'u_coord_matrix': UniformMatrix4f,\n 'u_is_text': Uniform1i,\n 'u_pitch_with_map': Uniform1i,\n 'u_texsize': Uniform2f,\n 'u_tile_id': Uniform3f,\n 'u_zoom_transition': Uniform1f,\n 'u_inv_rot_matrix': UniformMatrix4f,\n 'u_merc_center': Uniform2f,\n 'u_camera_forward': Uniform3f,\n 'u_tile_matrix': UniformMatrix4f,\n 'u_up_vector': Uniform3f,\n 'u_ecef_origin': Uniform3f,\n 'u_texture': Uniform1i\n|};\n\nexport type SymbolSDFUniformsType = {|\n 'u_is_size_zoom_constant': Uniform1i,\n 'u_is_size_feature_constant': Uniform1i,\n 'u_size_t': Uniform1f,\n 'u_size': Uniform1f,\n 'u_camera_to_center_distance': Uniform1f,\n 'u_rotate_symbol': Uniform1i,\n 'u_aspect_ratio': Uniform1f,\n 'u_fade_change': Uniform1f,\n 'u_matrix': UniformMatrix4f,\n 'u_label_plane_matrix': UniformMatrix4f,\n 'u_coord_matrix': UniformMatrix4f,\n 'u_is_text': Uniform1i,\n 'u_pitch_with_map': Uniform1i,\n 'u_texsize': Uniform2f,\n 'u_texture': Uniform1i,\n 'u_gamma_scale': Uniform1f,\n 'u_device_pixel_ratio': Uniform1f,\n 'u_tile_id': Uniform3f,\n 'u_zoom_transition': Uniform1f,\n 'u_inv_rot_matrix': UniformMatrix4f,\n 'u_merc_center': Uniform2f,\n 'u_camera_forward': Uniform3f,\n 'u_tile_matrix': UniformMatrix4f,\n 'u_up_vector': Uniform3f,\n 'u_ecef_origin': Uniform3f,\n 'u_is_halo': Uniform1i\n|};\n\nexport type symbolTextAndIconUniformsType = {|\n 'u_is_size_zoom_constant': Uniform1i,\n 'u_is_size_feature_constant': Uniform1i,\n 'u_size_t': Uniform1f,\n 'u_size': Uniform1f,\n 'u_camera_to_center_distance': Uniform1f,\n 'u_rotate_symbol': Uniform1i,\n 'u_aspect_ratio': Uniform1f,\n 'u_fade_change': Uniform1f,\n 'u_matrix': UniformMatrix4f,\n 'u_label_plane_matrix': UniformMatrix4f,\n 'u_coord_matrix': UniformMatrix4f,\n 'u_is_text': Uniform1i,\n 'u_pitch_with_map': Uniform1i,\n 'u_texsize': Uniform2f,\n 'u_texsize_icon': Uniform2f,\n 'u_texture': Uniform1i,\n 'u_texture_icon': Uniform1i,\n 'u_gamma_scale': Uniform1f,\n 'u_device_pixel_ratio': Uniform1f,\n 'u_is_halo': Uniform1i\n|};\n\nexport type SymbolDefinesType = 'PITCH_WITH_MAP_TERRAIN';\n\nconst symbolIconUniforms = (context: Context, locations: UniformLocations): SymbolIconUniformsType => ({\n 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant),\n 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant),\n 'u_size_t': new Uniform1f(context, locations.u_size_t),\n 'u_size': new Uniform1f(context, locations.u_size),\n 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance),\n 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol),\n 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio),\n 'u_fade_change': new Uniform1f(context, locations.u_fade_change),\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix),\n 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix),\n 'u_is_text': new Uniform1i(context, locations.u_is_text),\n 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map),\n 'u_texsize': new Uniform2f(context, locations.u_texsize),\n 'u_tile_id': new Uniform3f(context, locations.u_tile_id),\n 'u_zoom_transition': new Uniform1f(context, locations.u_zoom_transition),\n 'u_inv_rot_matrix': new UniformMatrix4f(context, locations.u_inv_rot_matrix),\n 'u_merc_center': new Uniform2f(context, locations.u_merc_center),\n 'u_camera_forward': new Uniform3f(context, locations.u_camera_forward),\n 'u_tile_matrix': new UniformMatrix4f(context, locations.u_tile_matrix),\n 'u_up_vector': new Uniform3f(context, locations.u_up_vector),\n 'u_ecef_origin': new Uniform3f(context, locations.u_ecef_origin),\n 'u_texture': new Uniform1i(context, locations.u_texture)\n});\n\nconst symbolSDFUniforms = (context: Context, locations: UniformLocations): SymbolSDFUniformsType => ({\n 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant),\n 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant),\n 'u_size_t': new Uniform1f(context, locations.u_size_t),\n 'u_size': new Uniform1f(context, locations.u_size),\n 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance),\n 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol),\n 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio),\n 'u_fade_change': new Uniform1f(context, locations.u_fade_change),\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix),\n 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix),\n 'u_is_text': new Uniform1i(context, locations.u_is_text),\n 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map),\n 'u_texsize': new Uniform2f(context, locations.u_texsize),\n 'u_texture': new Uniform1i(context, locations.u_texture),\n 'u_gamma_scale': new Uniform1f(context, locations.u_gamma_scale),\n 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio),\n 'u_tile_id': new Uniform3f(context, locations.u_tile_id),\n 'u_zoom_transition': new Uniform1f(context, locations.u_zoom_transition),\n 'u_inv_rot_matrix': new UniformMatrix4f(context, locations.u_inv_rot_matrix),\n 'u_merc_center': new Uniform2f(context, locations.u_merc_center),\n 'u_camera_forward': new Uniform3f(context, locations.u_camera_forward),\n 'u_tile_matrix': new UniformMatrix4f(context, locations.u_tile_matrix),\n 'u_up_vector': new Uniform3f(context, locations.u_up_vector),\n 'u_ecef_origin': new Uniform3f(context, locations.u_ecef_origin),\n 'u_is_halo': new Uniform1i(context, locations.u_is_halo)\n});\n\nconst symbolTextAndIconUniforms = (context: Context, locations: UniformLocations): symbolTextAndIconUniformsType => ({\n 'u_is_size_zoom_constant': new Uniform1i(context, locations.u_is_size_zoom_constant),\n 'u_is_size_feature_constant': new Uniform1i(context, locations.u_is_size_feature_constant),\n 'u_size_t': new Uniform1f(context, locations.u_size_t),\n 'u_size': new Uniform1f(context, locations.u_size),\n 'u_camera_to_center_distance': new Uniform1f(context, locations.u_camera_to_center_distance),\n 'u_rotate_symbol': new Uniform1i(context, locations.u_rotate_symbol),\n 'u_aspect_ratio': new Uniform1f(context, locations.u_aspect_ratio),\n 'u_fade_change': new Uniform1f(context, locations.u_fade_change),\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_label_plane_matrix': new UniformMatrix4f(context, locations.u_label_plane_matrix),\n 'u_coord_matrix': new UniformMatrix4f(context, locations.u_coord_matrix),\n 'u_is_text': new Uniform1i(context, locations.u_is_text),\n 'u_pitch_with_map': new Uniform1i(context, locations.u_pitch_with_map),\n 'u_texsize': new Uniform2f(context, locations.u_texsize),\n 'u_texsize_icon': new Uniform2f(context, locations.u_texsize_icon),\n 'u_texture': new Uniform1i(context, locations.u_texture),\n 'u_texture_icon': new Uniform1i(context, locations.u_texture_icon),\n 'u_gamma_scale': new Uniform1f(context, locations.u_gamma_scale),\n 'u_device_pixel_ratio': new Uniform1f(context, locations.u_device_pixel_ratio),\n 'u_is_halo': new Uniform1i(context, locations.u_is_halo)\n});\n\nconst identityMatrix = mat4.create();\n\nconst symbolIconUniformValues = (\n functionType: string,\n size: ?InterpolatedSize,\n rotateInShader: boolean,\n pitchWithMap: boolean,\n painter: Painter,\n matrix: Float32Array,\n labelPlaneMatrix: Float32Array,\n glCoordMatrix: Float32Array,\n isText: boolean,\n texSize: [number, number],\n coord: OverscaledTileID,\n zoomTransition: number,\n mercatorCenter: [number, number],\n invMatrix: Float32Array,\n upVector: [number, number, number],\n projection: Projection\n): UniformValues<SymbolIconUniformsType> => {\n const transform = painter.transform;\n\n const values = {\n 'u_is_size_zoom_constant': +(functionType === 'constant' || functionType === 'source'),\n 'u_is_size_feature_constant': +(functionType === 'constant' || functionType === 'camera'),\n 'u_size_t': size ? size.uSizeT : 0,\n 'u_size': size ? size.uSize : 0,\n 'u_camera_to_center_distance': transform.cameraToCenterDistance,\n 'u_rotate_symbol': +rotateInShader,\n 'u_aspect_ratio': transform.width / transform.height,\n 'u_fade_change': painter.options.fadeDuration ? painter.symbolFadeChange : 1,\n 'u_matrix': matrix,\n 'u_label_plane_matrix': labelPlaneMatrix,\n 'u_coord_matrix': glCoordMatrix,\n 'u_is_text': +isText,\n 'u_pitch_with_map': +pitchWithMap,\n 'u_texsize': texSize,\n 'u_texture': 0,\n 'u_tile_id': [0, 0, 0],\n 'u_zoom_transition': 0,\n 'u_inv_rot_matrix': identityMatrix,\n 'u_merc_center': [0, 0],\n 'u_camera_forward': [0, 0, 0],\n 'u_ecef_origin': [0, 0, 0],\n 'u_tile_matrix': identityMatrix,\n 'u_up_vector': [0, -1, 0]\n };\n\n if (projection.name === 'globe') {\n values['u_tile_id'] = [coord.canonical.x, coord.canonical.y, 1 << coord.canonical.z];\n values['u_zoom_transition'] = zoomTransition;\n values['u_inv_rot_matrix'] = invMatrix;\n values['u_merc_center'] = mercatorCenter;\n values['u_camera_forward'] = ((transform._camera.forward(): any): [number, number, number]);\n values['u_ecef_origin'] = globeECEFOrigin(transform.globeMatrix, coord.toUnwrapped());\n values['u_tile_matrix'] = Float32Array.from(transform.globeMatrix);\n values['u_up_vector'] = upVector;\n }\n\n return values;\n};\n\nconst symbolSDFUniformValues = (\n functionType: string,\n size: ?InterpolatedSize,\n rotateInShader: boolean,\n pitchWithMap: boolean,\n painter: Painter,\n matrix: Float32Array,\n labelPlaneMatrix: Float32Array,\n glCoordMatrix: Float32Array,\n isText: boolean,\n texSize: [number, number],\n isHalo: boolean,\n coord: OverscaledTileID,\n zoomTransition: number,\n mercatorCenter: [number, number],\n invMatrix: Float32Array,\n upVector: [number, number, number],\n projection: Projection\n): UniformValues<SymbolSDFUniformsType> => {\n return extend(symbolIconUniformValues(functionType, size, rotateInShader,\n pitchWithMap, painter, matrix, labelPlaneMatrix, glCoordMatrix, isText,\n texSize, coord, zoomTransition, mercatorCenter, invMatrix, upVector, projection), {\n 'u_gamma_scale': pitchWithMap ? painter.transform.cameraToCenterDistance * Math.cos(painter.terrain ? 0 : painter.transform._pitch) : 1,\n 'u_device_pixel_ratio': browser.devicePixelRatio,\n 'u_is_halo': +isHalo\n });\n};\n\nconst symbolTextAndIconUniformValues = (\n functionType: string,\n size: ?InterpolatedSize,\n rotateInShader: boolean,\n pitchWithMap: boolean,\n painter: Painter,\n matrix: Float32Array,\n labelPlaneMatrix: Float32Array,\n glCoordMatrix: Float32Array,\n texSizeSDF: [number, number],\n texSizeIcon: [number, number],\n coord: OverscaledTileID,\n zoomTransition: number,\n mercatorCenter: [number, number],\n invMatrix: Float32Array,\n upVector: [number, number, number],\n projection: Projection\n): UniformValues<SymbolIconUniformsType> => {\n return extend(symbolSDFUniformValues(functionType, size, rotateInShader,\n pitchWithMap, painter, matrix, labelPlaneMatrix, glCoordMatrix, true, texSizeSDF,\n true, coord, zoomTransition, mercatorCenter, invMatrix, upVector, projection), {\n 'u_texsize_icon': texSizeIcon,\n 'u_texture_icon': 1\n });\n};\n\nexport {symbolIconUniforms, symbolSDFUniforms, symbolIconUniformValues, symbolSDFUniformValues, symbolTextAndIconUniformValues, symbolTextAndIconUniforms};\n","// @flow\n\nimport {bgPatternUniformValues} from './pattern.js';\nimport {\n Uniform1i,\n Uniform1f,\n Uniform2f,\n UniformColor,\n UniformMatrix4f\n} from '../uniform_binding.js';\nimport {extend} from '../../util/util.js';\n\nimport type Painter from '../painter.js';\nimport type {UniformValues, UniformLocations} from '../uniform_binding.js';\nimport type Context from '../../gl/context.js';\nimport type Color from '../../style-spec/util/color.js';\nimport type {CrossFaded} from '../../style/properties.js';\nimport type {CrossfadeParameters} from '../../style/evaluation_parameters.js';\nimport type {OverscaledTileID} from '../../source/tile_id.js';\nimport type ResolvedImage from '../../style-spec/expression/types/resolved_image.js';\n\nexport type BackgroundUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_opacity': Uniform1f,\n 'u_color': UniformColor\n|};\n\nexport type BackgroundPatternUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_opacity': Uniform1f,\n // pattern uniforms:\n 'u_image': Uniform1i,\n 'u_pattern_tl_a': Uniform2f,\n 'u_pattern_br_a': Uniform2f,\n 'u_pattern_tl_b': Uniform2f,\n 'u_pattern_br_b': Uniform2f,\n 'u_texsize': Uniform2f,\n 'u_mix': Uniform1f,\n 'u_pattern_size_a': Uniform2f,\n 'u_pattern_size_b': Uniform2f,\n 'u_scale_a': Uniform1f,\n 'u_scale_b': Uniform1f,\n 'u_pixel_coord_upper': Uniform2f,\n 'u_pixel_coord_lower': Uniform2f,\n 'u_tile_units_to_pixels': Uniform1f\n|};\n\nconst backgroundUniforms = (context: Context, locations: UniformLocations): BackgroundUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_opacity': new Uniform1f(context, locations.u_opacity),\n 'u_color': new UniformColor(context, locations.u_color)\n});\n\nconst backgroundPatternUniforms = (context: Context, locations: UniformLocations): BackgroundPatternUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_opacity': new Uniform1f(context, locations.u_opacity),\n 'u_image': new Uniform1i(context, locations.u_image),\n 'u_pattern_tl_a': new Uniform2f(context, locations.u_pattern_tl_a),\n 'u_pattern_br_a': new Uniform2f(context, locations.u_pattern_br_a),\n 'u_pattern_tl_b': new Uniform2f(context, locations.u_pattern_tl_b),\n 'u_pattern_br_b': new Uniform2f(context, locations.u_pattern_br_b),\n 'u_texsize': new Uniform2f(context, locations.u_texsize),\n 'u_mix': new Uniform1f(context, locations.u_mix),\n 'u_pattern_size_a': new Uniform2f(context, locations.u_pattern_size_a),\n 'u_pattern_size_b': new Uniform2f(context, locations.u_pattern_size_b),\n 'u_scale_a': new Uniform1f(context, locations.u_scale_a),\n 'u_scale_b': new Uniform1f(context, locations.u_scale_b),\n 'u_pixel_coord_upper': new Uniform2f(context, locations.u_pixel_coord_upper),\n 'u_pixel_coord_lower': new Uniform2f(context, locations.u_pixel_coord_lower),\n 'u_tile_units_to_pixels': new Uniform1f(context, locations.u_tile_units_to_pixels)\n});\n\nconst backgroundUniformValues = (\n matrix: Float32Array,\n opacity: number,\n color: Color\n): UniformValues<BackgroundUniformsType> => ({\n 'u_matrix': matrix,\n 'u_opacity': opacity,\n 'u_color': color\n});\n\nconst backgroundPatternUniformValues = (\n matrix: Float32Array,\n opacity: number,\n painter: Painter,\n image: CrossFaded<ResolvedImage>,\n tile: {tileID: OverscaledTileID, tileSize: number},\n crossfade: CrossfadeParameters\n): UniformValues<BackgroundPatternUniformsType> => extend(\n bgPatternUniformValues(image, crossfade, painter, tile),\n {\n 'u_matrix': matrix,\n 'u_opacity': opacity\n }\n);\n\nexport {\n backgroundUniforms,\n backgroundPatternUniforms,\n backgroundUniformValues,\n backgroundPatternUniformValues\n};\n","// @flow\n\nimport type {CircleDefinesType} from './circle_program.js';\nimport type {SymbolDefinesType} from './symbol_program.js';\nimport type {LineDefinesType} from './line_program.js';\nimport {fillExtrusionUniforms, fillExtrusionPatternUniforms} from './fill_extrusion_program.js';\nimport {fillUniforms, fillPatternUniforms, fillOutlineUniforms, fillOutlinePatternUniforms} from './fill_program.js';\nimport {circleUniforms} from './circle_program.js';\nimport {collisionUniforms, collisionCircleUniforms} from './collision_program.js';\nimport {debugUniforms} from './debug_program.js';\nimport {clippingMaskUniforms} from './clipping_mask_program.js';\nimport {heatmapUniforms, heatmapTextureUniforms} from './heatmap_program.js';\nimport {hillshadeUniforms, hillshadePrepareUniforms} from './hillshade_program.js';\nimport {lineUniforms, linePatternUniforms} from './line_program.js';\nimport {rasterUniforms} from './raster_program.js';\nimport {symbolIconUniforms, symbolSDFUniforms, symbolTextAndIconUniforms} from './symbol_program.js';\nimport {backgroundUniforms, backgroundPatternUniforms} from './background_program.js';\nimport {terrainRasterUniforms} from '../../terrain/terrain_raster_program.js';\nimport {skyboxUniforms, skyboxGradientUniforms} from './skybox_program.js';\nimport {skyboxCaptureUniforms} from './skybox_capture_program.js';\nimport {globeRasterUniforms, atmosphereUniforms} from '../../terrain/globe_raster_program.js';\nimport type {HeatmapDefinesType} from './heatmap_program.js';\nimport type {DebugDefinesType} from './debug_program.js';\nimport type {GlobeDefinesType} from '../../terrain/globe_raster_program.js';\n\nexport type DynamicDefinesType = CircleDefinesType | SymbolDefinesType | LineDefinesType | HeatmapDefinesType | DebugDefinesType | GlobeDefinesType;\n\nexport const programUniforms = {\n fillExtrusion: fillExtrusionUniforms,\n fillExtrusionPattern: fillExtrusionPatternUniforms,\n fill: fillUniforms,\n fillPattern: fillPatternUniforms,\n fillOutline: fillOutlineUniforms,\n fillOutlinePattern: fillOutlinePatternUniforms,\n circle: circleUniforms,\n collisionBox: collisionUniforms,\n collisionCircle: collisionCircleUniforms,\n debug: debugUniforms,\n clippingMask: clippingMaskUniforms,\n heatmap: heatmapUniforms,\n heatmapTexture: heatmapTextureUniforms,\n hillshade: hillshadeUniforms,\n hillshadePrepare: hillshadePrepareUniforms,\n line: lineUniforms,\n linePattern: linePatternUniforms,\n raster: rasterUniforms,\n symbolIcon: symbolIconUniforms,\n symbolSDF: symbolSDFUniforms,\n symbolTextAndIcon: symbolTextAndIconUniforms,\n background: backgroundUniforms,\n backgroundPattern: backgroundPatternUniforms,\n terrainRaster: terrainRasterUniforms,\n terrainDepth: terrainRasterUniforms,\n skybox: skyboxUniforms,\n skyboxGradient: skyboxGradientUniforms,\n skyboxCapture: skyboxCaptureUniforms,\n globeRaster: globeRasterUniforms,\n globeAtmosphere: atmosphereUniforms,\n};\n","// @flow\n\nimport {\n UniformMatrix4f,\n Uniform1i,\n Uniform3f,\n Uniform1f\n} from '../uniform_binding.js';\nimport {degToRad} from '../../util/util.js';\n\nimport type {UniformValues, UniformLocations} from '../uniform_binding.js';\nimport type Context from '../../gl/context.js';\n\nexport type SkyboxUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_sun_direction': Uniform3f,\n 'u_cubemap': Uniform1i,\n 'u_opacity': Uniform1f,\n 'u_temporal_offset': Uniform1f\n|};\n\nexport type SkyboxGradientlUniformsType = {|\n 'u_matrix': UniformMatrix4f,\n 'u_color_ramp': Uniform1i,\n 'u_center_direction': Uniform3f,\n 'u_radius': Uniform1f,\n 'u_opacity': Uniform1f,\n 'u_temporal_offset': Uniform1f,\n|};\n\nconst skyboxUniforms = (context: Context, locations: UniformLocations): SkyboxUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_sun_direction': new Uniform3f(context, locations.u_sun_direction),\n 'u_cubemap': new Uniform1i(context, locations.u_cubemap),\n 'u_opacity': new Uniform1f(context, locations.u_opacity),\n 'u_temporal_offset': new Uniform1f(context, locations.u_temporal_offset)\n\n});\n\nconst skyboxUniformValues = (\n matrix: Float32Array,\n sunDirection: [number, number, number],\n cubemap: number,\n opacity: number,\n temporalOffset: number\n): UniformValues<SkyboxUniformsType> => ({\n 'u_matrix': matrix,\n 'u_sun_direction': sunDirection,\n 'u_cubemap': cubemap,\n 'u_opacity': opacity,\n 'u_temporal_offset': temporalOffset\n});\n\nconst skyboxGradientUniforms = (context: Context, locations: UniformLocations): SkyboxGradientlUniformsType => ({\n 'u_matrix': new UniformMatrix4f(context, locations.u_matrix),\n 'u_color_ramp': new Uniform1i(context, locations.u_color_ramp),\n // radial gradient uniforms\n 'u_center_direction': new Uniform3f(context, locations.u_center_direction),\n 'u_radius': new Uniform1f(context, locations.u_radius),\n 'u_opacity': new Uniform1f(context, locations.u_opacity),\n 'u_temporal_offset': new Uniform1f(context, locations.u_temporal_offset)\n});\n\nconst skyboxGradientUniformValues = (\n matrix: Float32Array,\n centerDirection: [number, number, number],\n radius: number, //degrees\n opacity: number,\n temporalOffset: number\n): UniformValues<SkyboxGradientlUniformsType> => {\n return {\n 'u_matrix': matrix,\n 'u_color_ramp': 0,\n 'u_center_direction': centerDirection,\n 'u_radius': degToRad(radius),\n 'u_opacity': opacity,\n 'u_temporal_offset': temporalOffset\n };\n};\n\nexport {\n skyboxUniforms,\n skyboxUniformValues,\n skyboxGradientUniforms,\n skyboxGradientUniformValues\n};\n","// @flow\n\nimport type Color from '../../style-spec/util/color.js';\n\nimport {\n UniformMatrix3f,\n Uniform1f,\n Uniform3f,\n Uniform4f,\n} from '../uniform_binding.js';\nimport type {\n UniformValues,\n UniformLocations,\n} from '../uniform_binding.js';\nimport type Context from '../../gl/context.js';\n\nexport type SkyboxCaptureUniformsType = {|\n 'u_matrix_3f': UniformMatrix3f,\n 'u_sun_direction': Uniform3f,\n 'u_sun_intensity': Uniform1f,\n 'u_color_tint_r': Uniform4f,\n 'u_color_tint_m': Uniform4f,\n 'u_luminance': Uniform1f,\n|};\n\nconst skyboxCaptureUniforms = (context: Context, locations: UniformLocations): SkyboxCaptureUniformsType => ({\n 'u_matrix_3f': new UniformMatrix3f(context, locations.u_matrix_3f),\n 'u_sun_direction': new Uniform3f(context, locations.u_sun_direction),\n 'u_sun_intensity': new Uniform1f(context, locations.u_sun_intensity),\n 'u_color_tint_r': new Uniform4f(context, locations.u_color_tint_r),\n 'u_color_tint_m': new Uniform4f(context, locations.u_color_tint_m),\n 'u_luminance': new Uniform1f(context, locations.u_luminance),\n});\n\nconst skyboxCaptureUniformValues = (\n matrix: Float32Array,\n sunDirection: [number, number, number],\n sunIntensity: number,\n atmosphereColor: Color,\n atmosphereHaloColor: Color\n): UniformValues<SkyboxCaptureUniformsType> => ({\n 'u_matrix_3f': matrix,\n 'u_sun_direction': sunDirection,\n 'u_sun_intensity': sunIntensity,\n 'u_color_tint_r': [\n atmosphereColor.r,\n atmosphereColor.g,\n atmosphereColor.b,\n atmosphereColor.a\n ],\n 'u_color_tint_m': [\n atmosphereHaloColor.r,\n atmosphereHaloColor.g,\n atmosphereHaloColor.b,\n atmosphereHaloColor.a\n ],\n 'u_luminance': 5e-5,\n});\n\nexport {\n skyboxCaptureUniforms,\n skyboxCaptureUniformValues,\n};\n","// @flow\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport type SymbolBucket from '../data/bucket/symbol_bucket.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {collisionUniformValues, collisionCircleUniformValues} from './program/collision_program.js';\nimport {QuadTriangleArray, CollisionCircleLayoutArray} from '../data/array_types.js';\nimport {collisionCircleLayout} from '../data/bucket/symbol_attributes.js';\nimport SegmentVector from '../data/segment.js';\nimport {mat4} from 'gl-matrix';\nimport type Projection from '../geo/projection/projection.js';\nimport {getCollisionDebugTileProjectionMatrix} from '../geo/projection/projection_util.js';\nimport VertexBuffer from '../gl/vertex_buffer.js';\nimport IndexBuffer from '../gl/index_buffer.js';\n\nexport default drawCollisionDebug;\n\ntype TileBatch = {\n circleArray: Array<number>,\n circleOffset: number,\n transform: Float32Array,\n invTransform: Float32Array,\n projection: Projection\n};\n\nlet quadTriangles: ?QuadTriangleArray;\n\nfunction drawCollisionDebug(painter: Painter, sourceCache: SourceCache, layer: StyleLayer, coords: Array<OverscaledTileID>, translate: [number, number], translateAnchor: 'map' | 'viewport', isText: boolean) {\n const context = painter.context;\n const gl = context.gl;\n const tr = painter.transform;\n const program = painter.useProgram('collisionBox');\n const tileBatches: Array<TileBatch> = [];\n let circleCount = 0;\n let circleOffset = 0;\n\n for (let i = 0; i < coords.length; i++) {\n const coord = coords[i];\n const tile = sourceCache.getTile(coord);\n const bucket: ?SymbolBucket = (tile.getBucket(layer): any);\n if (!bucket) continue;\n\n const tileMatrix = getCollisionDebugTileProjectionMatrix(coord, bucket, tr);\n\n let posMatrix = tileMatrix;\n if (translate[0] !== 0 || translate[1] !== 0) {\n posMatrix = painter.translatePosMatrix(tileMatrix, tile, translate, translateAnchor);\n }\n const buffers = isText ? bucket.textCollisionBox : bucket.iconCollisionBox;\n // Get collision circle data of this bucket\n const circleArray: Array<number> = bucket.collisionCircleArray;\n if (circleArray.length > 0) {\n // We need to know the projection matrix that was used for projecting collision circles to the screen.\n // This might vary between buckets as the symbol placement is a continous process. This matrix is\n // required for transforming points from previous screen space to the current one\n const invTransform = mat4.create();\n const transform = posMatrix;\n\n mat4.mul(invTransform, bucket.placementInvProjMatrix, tr.glCoordMatrix);\n mat4.mul(invTransform, invTransform, bucket.placementViewportMatrix);\n\n tileBatches.push({\n circleArray,\n circleOffset,\n transform,\n invTransform,\n projection: bucket.getProjection()\n });\n\n circleCount += circleArray.length / 4; // 4 values per circle\n circleOffset = circleCount;\n }\n if (!buffers) continue;\n if (painter.terrain) painter.terrain.setupElevationDraw(tile, program);\n program.draw(context, gl.LINES,\n DepthMode.disabled, StencilMode.disabled,\n painter.colorModeForRenderPass(),\n CullFaceMode.disabled,\n collisionUniformValues(posMatrix, tr, tile, bucket.getProjection()),\n layer.id, buffers.layoutVertexBuffer, buffers.indexBuffer,\n buffers.segments, null, tr.zoom, null,\n buffers.collisionVertexBuffer,\n buffers.collisionVertexBufferExt);\n }\n\n if (!isText || !tileBatches.length) {\n return;\n }\n\n // Render collision circles\n const circleProgram = painter.useProgram('collisionCircle');\n\n // Construct vertex data\n const vertexData = new CollisionCircleLayoutArray();\n vertexData.resize(circleCount * 4);\n vertexData._trim();\n\n let vertexOffset = 0;\n\n for (const batch of tileBatches) {\n for (let i = 0; i < batch.circleArray.length / 4; i++) {\n const circleIdx = i * 4;\n const x = batch.circleArray[circleIdx + 0];\n const y = batch.circleArray[circleIdx + 1];\n const radius = batch.circleArray[circleIdx + 2];\n const collision = batch.circleArray[circleIdx + 3];\n\n // 4 floats per vertex, 4 vertices per quad\n vertexData.emplace(vertexOffset++, x, y, radius, collision, 0);\n vertexData.emplace(vertexOffset++, x, y, radius, collision, 1);\n vertexData.emplace(vertexOffset++, x, y, radius, collision, 2);\n vertexData.emplace(vertexOffset++, x, y, radius, collision, 3);\n }\n }\n if (!quadTriangles || quadTriangles.length < circleCount * 2) {\n quadTriangles = createQuadTriangles(circleCount);\n }\n\n const indexBuffer: IndexBuffer = context.createIndexBuffer(quadTriangles, true);\n const vertexBuffer: VertexBuffer = context.createVertexBuffer(vertexData, collisionCircleLayout.members, true);\n\n // Render batches\n for (const batch of tileBatches) {\n const uniforms = collisionCircleUniformValues(batch.transform, batch.invTransform, tr, batch.projection);\n\n circleProgram.draw(\n context,\n gl.TRIANGLES,\n DepthMode.disabled,\n StencilMode.disabled,\n painter.colorModeForRenderPass(),\n CullFaceMode.disabled,\n uniforms,\n layer.id,\n vertexBuffer,\n indexBuffer,\n SegmentVector.simpleSegment(0, batch.circleOffset * 2, batch.circleArray.length, batch.circleArray.length / 2),\n null,\n tr.zoom);\n }\n\n vertexBuffer.destroy();\n indexBuffer.destroy();\n}\n\nfunction createQuadTriangles(quadCount: number): QuadTriangleArray {\n const triCount = quadCount * 2;\n const array = new QuadTriangleArray();\n\n array.resize(triCount);\n array._trim();\n\n // Two triangles and 4 vertices per quad.\n for (let i = 0; i < triCount; i++) {\n const idx = i * 6;\n\n array.uint16[idx + 0] = i * 4 + 0;\n array.uint16[idx + 1] = i * 4 + 1;\n array.uint16[idx + 2] = i * 4 + 2;\n array.uint16[idx + 3] = i * 4 + 2;\n array.uint16[idx + 4] = i * 4 + 3;\n array.uint16[idx + 5] = i * 4 + 0;\n }\n\n return array;\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\nimport drawCollisionDebug from './draw_collision_debug.js';\n\nimport SegmentVector from '../data/segment.js';\nimport * as symbolProjection from '../symbol/projection.js';\nimport * as symbolSize from '../symbol/symbol_size.js';\nimport {mat4, vec3, vec4} from 'gl-matrix';\nconst identityMat4 = mat4.create();\nimport StencilMode from '../gl/stencil_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {addDynamicAttributes} from '../data/bucket/symbol_bucket.js';\nimport {getAnchorAlignment, WritingMode} from '../symbol/shaping.js';\nimport ONE_EM from '../symbol/one_em.js';\nimport {evaluateVariableOffset} from '../symbol/symbol_layout.js';\nimport Tile from '../source/tile.js';\nimport type Transform from '../geo/transform.js';\nimport {\n mercatorXfromLng,\n mercatorYfromLat\n} from '../geo/mercator_coordinate.js';\nimport {globeToMercatorTransition} from '../geo/projection/globe_util.js';\n\nimport {\n symbolIconUniformValues,\n symbolSDFUniformValues,\n symbolTextAndIconUniformValues\n} from './program/symbol_program.js';\nimport {getSymbolTileProjectionMatrix} from '../geo/projection/projection_util.js';\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type SymbolStyleLayer from '../style/style_layer/symbol_style_layer.js';\nimport type SymbolBucket, {SymbolBuffers} from '../data/bucket/symbol_bucket.js';\nimport type Texture from '../render/texture.js';\nimport {OverscaledTileID} from '../source/tile_id.js';\nimport type {UniformValues} from './uniform_binding.js';\nimport type {SymbolSDFUniformsType} from '../render/program/symbol_program.js';\nimport type {CrossTileID, VariableOffset} from '../symbol/placement.js';\nimport type {Vec3} from 'gl-matrix';\n\nexport default drawSymbols;\n\ntype SymbolTileRenderState = {\n segments: SegmentVector,\n sortKey: number,\n state: {\n program: any,\n buffers: SymbolBuffers,\n uniformValues: any,\n atlasTexture: Texture,\n atlasTextureIcon: Texture | null,\n atlasInterpolation: any,\n atlasInterpolationIcon: any,\n isSDF: boolean,\n hasHalo: boolean,\n tile: Tile,\n labelPlaneMatrixInv: ?Float32Array\n }\n};\n\nfunction drawSymbols(painter: Painter, sourceCache: SourceCache, layer: SymbolStyleLayer, coords: Array<OverscaledTileID>, variableOffsets: {[_: CrossTileID]: VariableOffset}) {\n if (painter.renderPass !== 'translucent') return;\n\n // Disable the stencil test so that labels aren't clipped to tile boundaries.\n const stencilMode = StencilMode.disabled;\n const colorMode = painter.colorModeForRenderPass();\n const variablePlacement = layer.layout.get('text-variable-anchor');\n\n //Compute variable-offsets before painting since icons and text data positioning\n //depend on each other in this case.\n if (variablePlacement) {\n updateVariableAnchors(coords, painter, layer, sourceCache,\n layer.layout.get('text-rotation-alignment'),\n layer.layout.get('text-pitch-alignment'),\n variableOffsets\n );\n }\n\n if (layer.paint.get('icon-opacity').constantOr(1) !== 0) {\n drawLayerSymbols(painter, sourceCache, layer, coords, false,\n layer.paint.get('icon-translate'),\n layer.paint.get('icon-translate-anchor'),\n layer.layout.get('icon-rotation-alignment'),\n layer.layout.get('icon-pitch-alignment'),\n layer.layout.get('icon-keep-upright'),\n stencilMode, colorMode\n );\n }\n\n if (layer.paint.get('text-opacity').constantOr(1) !== 0) {\n drawLayerSymbols(painter, sourceCache, layer, coords, true,\n layer.paint.get('text-translate'),\n layer.paint.get('text-translate-anchor'),\n layer.layout.get('text-rotation-alignment'),\n layer.layout.get('text-pitch-alignment'),\n layer.layout.get('text-keep-upright'),\n stencilMode, colorMode\n );\n }\n\n if (sourceCache.map.showCollisionBoxes) {\n drawCollisionDebug(painter, sourceCache, layer, coords, layer.paint.get('text-translate'),\n layer.paint.get('text-translate-anchor'), true);\n drawCollisionDebug(painter, sourceCache, layer, coords, layer.paint.get('icon-translate'),\n layer.paint.get('icon-translate-anchor'), false);\n }\n}\n\nfunction computeGlobeCameraUp(transform: Transform): [number, number, number] {\n const viewMatrix = transform._camera.getWorldToCamera(transform.worldSize, 1);\n const viewToEcef = mat4.multiply([], viewMatrix, transform.globeMatrix);\n mat4.invert(viewToEcef, viewToEcef);\n\n const cameraUpVector = [0, 0, 0];\n const up = [0, 1, 0, 0];\n vec4.transformMat4(up, up, viewToEcef);\n cameraUpVector[0] = up[0];\n cameraUpVector[1] = up[1];\n cameraUpVector[2] = up[2];\n vec3.normalize(cameraUpVector, cameraUpVector);\n\n return cameraUpVector;\n}\n\nfunction calculateVariableRenderShift(anchor, width, height, textOffset, textScale, renderTextSize): Point {\n const {horizontalAlign, verticalAlign} = getAnchorAlignment(anchor);\n const shiftX = -(horizontalAlign - 0.5) * width;\n const shiftY = -(verticalAlign - 0.5) * height;\n const variableOffset = evaluateVariableOffset(anchor, textOffset);\n return new Point(\n (shiftX / textScale + variableOffset[0]) * renderTextSize,\n (shiftY / textScale + variableOffset[1]) * renderTextSize\n );\n}\n\nfunction updateVariableAnchors(coords, painter, layer, sourceCache, rotationAlignment, pitchAlignment, variableOffsets) {\n const tr = painter.transform;\n const rotateWithMap = rotationAlignment === 'map';\n const pitchWithMap = pitchAlignment === 'map';\n\n for (const coord of coords) {\n const tile = sourceCache.getTile(coord);\n const bucket: SymbolBucket = (tile.getBucket(layer): any);\n if (!bucket || !bucket.text || !bucket.text.segments.get().length) {\n continue;\n }\n\n const sizeData = bucket.textSizeData;\n const size = symbolSize.evaluateSizeForZoom(sizeData, tr.zoom);\n const tileMatrix = getSymbolTileProjectionMatrix(coord, bucket.getProjection(), tr);\n\n const pixelsToTileUnits = tr.calculatePixelsToTileUnitsMatrix(tile);\n const labelPlaneMatrix = symbolProjection.getLabelPlaneMatrixForRendering(tileMatrix, tile.tileID.canonical, pitchWithMap, rotateWithMap, tr, bucket.getProjection(), pixelsToTileUnits);\n const updateTextFitIcon = layer.layout.get('icon-text-fit') !== 'none' && bucket.hasIconData();\n\n if (size) {\n const tileScale = Math.pow(2, tr.zoom - tile.tileID.overscaledZ);\n updateVariableAnchorsForBucket(bucket, rotateWithMap, pitchWithMap, variableOffsets, symbolSize,\n tr, labelPlaneMatrix, coord, tileScale, size, updateTextFitIcon);\n }\n }\n}\n\nfunction updateVariableAnchorsForBucket(bucket, rotateWithMap, pitchWithMap, variableOffsets, symbolSize,\n transform, labelPlaneMatrix, coord, tileScale, size, updateTextFitIcon) {\n const placedSymbols = bucket.text.placedSymbolArray;\n const dynamicTextLayoutVertexArray = bucket.text.dynamicLayoutVertexArray;\n const dynamicIconLayoutVertexArray = bucket.icon.dynamicLayoutVertexArray;\n const placedTextShifts = {};\n const tileMatrix = getSymbolTileProjectionMatrix(coord, bucket.getProjection(), transform);\n const elevation = transform.elevation;\n const upVectorScale = bucket.getProjection().upVectorScale(coord.canonical, transform.center.lat, transform.worldSize);\n\n dynamicTextLayoutVertexArray.clear();\n for (let s = 0; s < placedSymbols.length; s++) {\n const symbol: any = placedSymbols.get(s);\n const skipOrientation = bucket.allowVerticalPlacement && !symbol.placedOrientation;\n const variableOffset = (!symbol.hidden && symbol.crossTileID && !skipOrientation) ? variableOffsets[symbol.crossTileID] : null;\n\n if (!variableOffset) {\n // These symbols are from a justification that is not being used, or a label that wasn't placed\n // so we don't need to do the extra math to figure out what incremental shift to apply.\n symbolProjection.hideGlyphs(symbol.numGlyphs, dynamicTextLayoutVertexArray);\n } else {\n const tileAnchor = new Point(symbol.tileAnchorX, symbol.tileAnchorY);\n const upDir = bucket.getProjection().upVector(coord.canonical, tileAnchor.x, tileAnchor.y);\n const anchorElevation = elevation ? elevation.getAtTileOffset(coord, tileAnchor.x, tileAnchor.y) : 0.0;\n const reprojectedAnchor = [\n symbol.projectedAnchorX + anchorElevation * upDir[0] * upVectorScale.metersToTile,\n symbol.projectedAnchorY + anchorElevation * upDir[1] * upVectorScale.metersToTile,\n symbol.projectedAnchorZ + anchorElevation * upDir[2] * upVectorScale.metersToTile\n ];\n\n const projectedAnchor = symbolProjection.projectVector(reprojectedAnchor, pitchWithMap ? tileMatrix : labelPlaneMatrix);\n const perspectiveRatio = symbolProjection.getPerspectiveRatio(transform.getCameraToCenterDistance(bucket.getProjection()), projectedAnchor.signedDistanceFromCamera);\n let renderTextSize = symbolSize.evaluateSizeForFeature(bucket.textSizeData, size, symbol) * perspectiveRatio / ONE_EM;\n if (pitchWithMap) {\n // Go from size in pixels to equivalent size in tile units\n renderTextSize *= bucket.tilePixelRatio / tileScale;\n }\n\n const {width, height, anchor, textOffset, textScale} = variableOffset;\n\n const shift = calculateVariableRenderShift(\n anchor, width, height, textOffset, textScale, renderTextSize);\n\n // Usual case is that we take the projected anchor and add the pixel-based shift\n // calculated above. In the (somewhat weird) case of pitch-aligned text, we add an equivalent\n // tile-unit based shift to the anchor before projecting to the label plane.\n let shiftedAnchor: Vec3;\n\n if (pitchWithMap) {\n const shiftedTileAnchor = tileAnchor.add(shift);\n const {x, y, z} = bucket.getProjection().projectTilePoint(shiftedTileAnchor.x, shiftedTileAnchor.y, coord.canonical);\n\n const reprojectedShiftedAnchor = [\n x + anchorElevation * upDir[0] * upVectorScale.metersToTile,\n y + anchorElevation * upDir[1] * upVectorScale.metersToTile,\n z + anchorElevation * upDir[2] * upVectorScale.metersToTile\n ];\n\n shiftedAnchor = symbolProjection.projectVector(reprojectedShiftedAnchor, labelPlaneMatrix).point;\n } else {\n const rotatedShift = rotateWithMap ? shift.rotate(-transform.angle) : shift;\n shiftedAnchor = [projectedAnchor.point[0] + rotatedShift.x, projectedAnchor.point[1] + rotatedShift.y, 0];\n }\n\n const angle = (bucket.allowVerticalPlacement && symbol.placedOrientation === WritingMode.vertical) ? Math.PI / 2 : 0;\n for (let g = 0; g < symbol.numGlyphs; g++) {\n addDynamicAttributes(dynamicTextLayoutVertexArray, shiftedAnchor[0], shiftedAnchor[1], shiftedAnchor[2], angle);\n }\n //Only offset horizontal text icons\n if (updateTextFitIcon && symbol.associatedIconIndex >= 0) {\n placedTextShifts[symbol.associatedIconIndex] = {shiftedAnchor, angle};\n }\n }\n }\n\n if (updateTextFitIcon) {\n dynamicIconLayoutVertexArray.clear();\n const placedIcons = bucket.icon.placedSymbolArray;\n for (let i = 0; i < placedIcons.length; i++) {\n const placedIcon = placedIcons.get(i);\n if (placedIcon.hidden) {\n symbolProjection.hideGlyphs(placedIcon.numGlyphs, dynamicIconLayoutVertexArray);\n } else {\n const shift = placedTextShifts[i];\n if (!shift) {\n symbolProjection.hideGlyphs(placedIcon.numGlyphs, dynamicIconLayoutVertexArray);\n } else {\n for (let g = 0; g < placedIcon.numGlyphs; g++) {\n addDynamicAttributes(dynamicIconLayoutVertexArray, shift.shiftedAnchor[0], shift.shiftedAnchor[1], shift.shiftedAnchor[2], shift.angle);\n }\n }\n }\n }\n bucket.icon.dynamicLayoutVertexBuffer.updateData(dynamicIconLayoutVertexArray);\n }\n bucket.text.dynamicLayoutVertexBuffer.updateData(dynamicTextLayoutVertexArray);\n}\n\nfunction getSymbolProgramName(isSDF: boolean, isText: boolean, bucket: SymbolBucket) {\n if (bucket.iconsInText && isText) {\n return 'symbolTextAndIcon';\n } else if (isSDF) {\n return 'symbolSDF';\n } else {\n return 'symbolIcon';\n }\n}\n\nfunction drawLayerSymbols(painter, sourceCache, layer, coords, isText, translate, translateAnchor,\n rotationAlignment, pitchAlignment, keepUpright, stencilMode, colorMode) {\n const context = painter.context;\n const gl = context.gl;\n const tr = painter.transform;\n\n const rotateWithMap = rotationAlignment === 'map';\n const pitchWithMap = pitchAlignment === 'map';\n const alongLine = rotateWithMap && layer.layout.get('symbol-placement') !== 'point';\n\n // Line label rotation happens in `updateLineLabels`\n // Pitched point labels are automatically rotated by the labelPlaneMatrix projection\n // Unpitched point labels need to have their rotation applied after projection\n const rotateInShader = rotateWithMap && !pitchWithMap && !alongLine;\n\n const hasSortKey = layer.layout.get('symbol-sort-key').constantOr(1) !== undefined;\n let sortFeaturesByKey = false;\n\n const depthMode = painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n const mercatorCenter = [\n mercatorXfromLng(tr.center.lng),\n mercatorYfromLat(tr.center.lat)\n ];\n const variablePlacement = layer.layout.get('text-variable-anchor');\n const isGlobeProjection = tr.projection.name === 'globe';\n const tileRenderState: Array<SymbolTileRenderState> = [];\n\n const mercatorCameraUp = [0, -1, 0];\n\n let globeCameraUp = mercatorCameraUp;\n if ((isGlobeProjection || tr.mercatorFromTransition) && !rotateWithMap) {\n // Each symbol rotating with the viewport requires per-instance information about\n // how to align with the viewport. In 2D case rotation is shared between all of the symbols and\n // hence embedded in the label plane matrix but in globe view this needs to be computed at runtime.\n // Camera up vector together with surface normals can be used to find the correct orientation for each symbol.\n globeCameraUp = computeGlobeCameraUp(tr);\n }\n\n for (const coord of coords) {\n const tile = sourceCache.getTile(coord);\n const bucket: SymbolBucket = (tile.getBucket(layer): any);\n if (!bucket) continue;\n // Allow rendering of buckets built for globe projection in mercator mode\n // until the substitute tile has been loaded\n if (bucket.projection.name === 'mercator' && isGlobeProjection) {\n continue;\n }\n const buffers = isText ? bucket.text : bucket.icon;\n if (!buffers || bucket.fullyClipped || !buffers.segments.get().length) continue;\n const programConfiguration = buffers.programConfigurations.get(layer.id);\n\n const isSDF = isText || bucket.sdfIcons;\n\n const sizeData = isText ? bucket.textSizeData : bucket.iconSizeData;\n const transformed = pitchWithMap || tr.pitch !== 0;\n\n const size = symbolSize.evaluateSizeForZoom(sizeData, tr.zoom);\n\n let texSize: [number, number];\n let texSizeIcon: [number, number] = [0, 0];\n let atlasTexture;\n let atlasInterpolation;\n let atlasTextureIcon = null;\n let atlasInterpolationIcon;\n if (isText) {\n atlasTexture = tile.glyphAtlasTexture;\n atlasInterpolation = gl.LINEAR;\n texSize = tile.glyphAtlasTexture.size;\n if (bucket.iconsInText) {\n texSizeIcon = tile.imageAtlasTexture.size;\n atlasTextureIcon = tile.imageAtlasTexture;\n const zoomDependentSize = sizeData.kind === 'composite' || sizeData.kind === 'camera';\n atlasInterpolationIcon = transformed || painter.options.rotating || painter.options.zooming || zoomDependentSize ? gl.LINEAR : gl.NEAREST;\n }\n } else {\n const iconScaled = layer.layout.get('icon-size').constantOr(0) !== 1 || bucket.iconsNeedLinear;\n atlasTexture = tile.imageAtlasTexture;\n atlasInterpolation = isSDF || painter.options.rotating || painter.options.zooming || iconScaled || transformed ?\n gl.LINEAR :\n gl.NEAREST;\n texSize = tile.imageAtlasTexture.size;\n }\n\n const bucketIsGlobeProjection = bucket.projection.name === 'globe';\n const cameraUpVector = bucketIsGlobeProjection ? globeCameraUp : mercatorCameraUp;\n const globeToMercator = bucketIsGlobeProjection ? globeToMercatorTransition(tr.zoom) : 0.0;\n const tileMatrix = getSymbolTileProjectionMatrix(coord, bucket.getProjection(), tr);\n\n const s = tr.calculatePixelsToTileUnitsMatrix(tile);\n const labelPlaneMatrixRendering = symbolProjection.getLabelPlaneMatrixForRendering(tileMatrix, tile.tileID.canonical, pitchWithMap, rotateWithMap, tr, bucket.getProjection(), s);\n // labelPlaneMatrixInv is used for converting vertex pos to tile coordinates needed for sampling elevation.\n const labelPlaneMatrixInv = painter.terrain && pitchWithMap && alongLine ? mat4.invert(mat4.create(), labelPlaneMatrixRendering) : identityMat4;\n const glCoordMatrix = symbolProjection.getGlCoordMatrix(tileMatrix, tile.tileID.canonical, pitchWithMap, rotateWithMap, tr, bucket.getProjection(), s);\n\n const hasVariableAnchors = variablePlacement && bucket.hasTextData();\n const updateTextFitIcon = layer.layout.get('icon-text-fit') !== 'none' &&\n hasVariableAnchors &&\n bucket.hasIconData();\n\n if (alongLine) {\n const elevation = tr.elevation;\n const getElevation = elevation ? elevation.getAtTileOffsetFunc(coord, tr.center.lat, tr.worldSize, bucket.getProjection()) : (_ => [0, 0, 0]);\n const labelPlaneMatrixPlacement = symbolProjection.getLabelPlaneMatrixForPlacement(tileMatrix, tile.tileID.canonical, pitchWithMap, rotateWithMap, tr, bucket.getProjection(), s);\n\n symbolProjection.updateLineLabels(bucket, tileMatrix, painter, isText, labelPlaneMatrixPlacement, glCoordMatrix, pitchWithMap, keepUpright, getElevation, coord);\n }\n\n const projectedPosOnLabelSpace = alongLine || (isText && variablePlacement) || updateTextFitIcon;\n const matrix = painter.translatePosMatrix(tileMatrix, tile, translate, translateAnchor);\n const uLabelPlaneMatrix = projectedPosOnLabelSpace ? identityMat4 : labelPlaneMatrixRendering;\n const uglCoordMatrix = painter.translatePosMatrix(glCoordMatrix, tile, translate, translateAnchor, true);\n const invMatrix = bucket.getProjection().createInversionMatrix(tr, coord.canonical);\n\n const baseDefines = ([]: any);\n if (painter.terrain && pitchWithMap) {\n baseDefines.push('PITCH_WITH_MAP_TERRAIN');\n }\n if (bucketIsGlobeProjection) {\n baseDefines.push('PROJECTION_GLOBE_VIEW');\n }\n if (projectedPosOnLabelSpace) {\n baseDefines.push('PROJECTED_POS_ON_VIEWPORT');\n }\n\n const hasHalo = isSDF && layer.paint.get(isText ? 'text-halo-width' : 'icon-halo-width').constantOr(1) !== 0;\n\n let uniformValues;\n if (isSDF) {\n if (!bucket.iconsInText) {\n uniformValues = symbolSDFUniformValues(sizeData.kind, size, rotateInShader, pitchWithMap, painter,\n matrix, uLabelPlaneMatrix, uglCoordMatrix, isText, texSize, true, coord, globeToMercator, mercatorCenter, invMatrix, cameraUpVector, bucket.getProjection());\n } else {\n uniformValues = symbolTextAndIconUniformValues(sizeData.kind, size, rotateInShader, pitchWithMap, painter,\n matrix, uLabelPlaneMatrix, uglCoordMatrix, texSize, texSizeIcon, coord, globeToMercator, mercatorCenter, invMatrix, cameraUpVector, bucket.getProjection());\n }\n } else {\n uniformValues = symbolIconUniformValues(sizeData.kind, size, rotateInShader, pitchWithMap, painter, matrix,\n uLabelPlaneMatrix, uglCoordMatrix, isText, texSize, coord, globeToMercator, mercatorCenter, invMatrix, cameraUpVector, bucket.getProjection());\n }\n\n const program = painter.useProgram(getSymbolProgramName(isSDF, isText, bucket), programConfiguration, baseDefines);\n\n const state = {\n program,\n buffers,\n uniformValues,\n atlasTexture,\n atlasTextureIcon,\n atlasInterpolation,\n atlasInterpolationIcon,\n isSDF,\n hasHalo,\n tile,\n labelPlaneMatrixInv\n };\n\n if (hasSortKey && bucket.canOverlap) {\n sortFeaturesByKey = true;\n const oldSegments = buffers.segments.get();\n for (const segment of oldSegments) {\n tileRenderState.push({\n segments: new SegmentVector([segment]),\n sortKey: ((segment.sortKey: any): number),\n state\n });\n }\n } else {\n tileRenderState.push({\n segments: buffers.segments,\n sortKey: 0,\n state\n });\n }\n }\n\n if (sortFeaturesByKey) {\n tileRenderState.sort((a, b) => a.sortKey - b.sortKey);\n }\n\n for (const segmentState of tileRenderState) {\n const state = segmentState.state;\n if (painter.terrain) {\n const options = {\n useDepthForOcclusion: !isGlobeProjection,\n labelPlaneMatrixInv: state.labelPlaneMatrixInv\n };\n painter.terrain.setupElevationDraw(state.tile, state.program, options);\n }\n context.activeTexture.set(gl.TEXTURE0);\n state.atlasTexture.bind(state.atlasInterpolation, gl.CLAMP_TO_EDGE);\n if (state.atlasTextureIcon) {\n context.activeTexture.set(gl.TEXTURE1);\n if (state.atlasTextureIcon) {\n state.atlasTextureIcon.bind(state.atlasInterpolationIcon, gl.CLAMP_TO_EDGE);\n }\n }\n\n if (state.isSDF) {\n const uniformValues = ((state.uniformValues: any): UniformValues<SymbolSDFUniformsType>);\n if (state.hasHalo) {\n uniformValues['u_is_halo'] = 1;\n drawSymbolElements(state.buffers, segmentState.segments, layer, painter, state.program, depthMode, stencilMode, colorMode, uniformValues);\n }\n uniformValues['u_is_halo'] = 0;\n }\n drawSymbolElements(state.buffers, segmentState.segments, layer, painter, state.program, depthMode, stencilMode, colorMode, state.uniformValues);\n }\n}\n\nfunction drawSymbolElements(buffers, segments, layer, painter, program, depthMode, stencilMode, colorMode, uniformValues) {\n const context = painter.context;\n const gl = context.gl;\n program.draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n uniformValues, layer.id, buffers.layoutVertexBuffer,\n buffers.indexBuffer, segments, layer.paint,\n painter.transform.zoom, buffers.programConfigurations.get(layer.id),\n buffers.dynamicLayoutVertexBuffer, buffers.opacityVertexBuffer, buffers.globeExtVertexBuffer);\n}\n","// @flow\n\nimport Color from '../style-spec/util/color.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {\n fillUniformValues,\n fillPatternUniformValues,\n fillOutlineUniformValues,\n fillOutlinePatternUniformValues\n} from './program/fill_program.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type FillStyleLayer from '../style/style_layer/fill_style_layer.js';\nimport type FillBucket from '../data/bucket/fill_bucket.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\n\nexport default drawFill;\n\nfunction drawFill(painter: Painter, sourceCache: SourceCache, layer: FillStyleLayer, coords: Array<OverscaledTileID>) {\n const color = layer.paint.get('fill-color');\n const opacity = layer.paint.get('fill-opacity');\n\n if (opacity.constantOr(1) === 0) {\n return;\n }\n\n const colorMode = painter.colorModeForRenderPass();\n\n const pattern = layer.paint.get('fill-pattern');\n const pass = painter.opaquePassEnabledForLayer() &&\n (!pattern.constantOr((1: any)) &&\n color.constantOr(Color.transparent).a === 1 &&\n opacity.constantOr(0) === 1) ? 'opaque' : 'translucent';\n\n // Draw fill\n if (painter.renderPass === pass) {\n const depthMode = painter.depthModeForSublayer(\n 1, painter.renderPass === 'opaque' ? DepthMode.ReadWrite : DepthMode.ReadOnly);\n drawFillTiles(painter, sourceCache, layer, coords, depthMode, colorMode, false);\n }\n\n // Draw stroke\n if (painter.renderPass === 'translucent' && layer.paint.get('fill-antialias')) {\n\n // If we defined a different color for the fill outline, we are\n // going to ignore the bits in 0x07 and just care about the global\n // clipping mask.\n // Otherwise, we only want to drawFill the antialiased parts that are\n // *outside* the current shape. This is important in case the fill\n // or stroke color is translucent. If we wouldn't clip to outside\n // the current shape, some pixels from the outline stroke overlapped\n // the (non-antialiased) fill.\n const depthMode = painter.depthModeForSublayer(\n layer.getPaintProperty('fill-outline-color') ? 2 : 0, DepthMode.ReadOnly);\n drawFillTiles(painter, sourceCache, layer, coords, depthMode, colorMode, true);\n }\n}\n\nfunction drawFillTiles(painter, sourceCache, layer, coords, depthMode, colorMode, isOutline) {\n const gl = painter.context.gl;\n\n const patternProperty = layer.paint.get('fill-pattern');\n const image = patternProperty && patternProperty.constantOr((1: any));\n const crossfade = layer.getCrossfadeParameters();\n let drawMode, programName, uniformValues, indexBuffer, segments;\n\n if (!isOutline) {\n programName = image ? 'fillPattern' : 'fill';\n drawMode = gl.TRIANGLES;\n } else {\n programName = image && !layer.getPaintProperty('fill-outline-color') ? 'fillOutlinePattern' : 'fillOutline';\n drawMode = gl.LINES;\n }\n\n for (const coord of coords) {\n const tile = sourceCache.getTile(coord);\n if (image && !tile.patternsLoaded()) continue;\n\n const bucket: ?FillBucket = (tile.getBucket(layer): any);\n if (!bucket) continue;\n painter.prepareDrawTile();\n\n const programConfiguration = bucket.programConfigurations.get(layer.id);\n const program = painter.useProgram(programName, programConfiguration);\n\n if (image) {\n painter.context.activeTexture.set(gl.TEXTURE0);\n tile.imageAtlasTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n programConfiguration.updatePaintBuffers(crossfade);\n }\n\n const constantPattern = patternProperty.constantOr(null);\n if (constantPattern && tile.imageAtlas) {\n const atlas = tile.imageAtlas;\n const posTo = atlas.patternPositions[constantPattern.to.toString()];\n const posFrom = atlas.patternPositions[constantPattern.from.toString()];\n if (posTo && posFrom) programConfiguration.setConstantPatternPositions(posTo, posFrom);\n }\n\n const tileMatrix = painter.translatePosMatrix(coord.projMatrix, tile,\n layer.paint.get('fill-translate'), layer.paint.get('fill-translate-anchor'));\n\n if (!isOutline) {\n indexBuffer = bucket.indexBuffer;\n segments = bucket.segments;\n uniformValues = image ?\n fillPatternUniformValues(tileMatrix, painter, crossfade, tile) :\n fillUniformValues(tileMatrix);\n } else {\n indexBuffer = bucket.indexBuffer2;\n segments = bucket.segments2;\n const drawingBufferSize = (painter.terrain && painter.terrain.renderingToTexture) ? painter.terrain.drapeBufferSize : [gl.drawingBufferWidth, gl.drawingBufferHeight];\n uniformValues = (programName === 'fillOutlinePattern' && image) ?\n fillOutlinePatternUniformValues(tileMatrix, painter, crossfade, tile, drawingBufferSize) :\n fillOutlineUniformValues(tileMatrix, drawingBufferSize);\n }\n\n painter.prepareDrawProgram(painter.context, program, coord.toUnwrapped());\n\n program.draw(painter.context, drawMode, depthMode,\n painter.stencilModeForClipping(coord), colorMode, CullFaceMode.disabled, uniformValues,\n layer.id, bucket.layoutVertexBuffer, indexBuffer, segments,\n layer.paint, painter.transform.zoom, programConfiguration);\n }\n}\n","// @flow\n\nimport DepthMode from '../gl/depth_mode.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport ColorMode from '../gl/color_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport EXTENT from '../data/extent.js';\nimport FillExtrusionBucket, {fillExtrusionHeightLift} from '../data/bucket/fill_extrusion_bucket.js';\nimport {\n fillExtrusionUniformValues,\n fillExtrusionPatternUniformValues,\n} from './program/fill_extrusion_program.js';\nimport Point from '@mapbox/point-geometry';\nimport {OverscaledTileID} from '../source/tile_id.js';\nimport assert from 'assert';\nimport {mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate.js';\nimport {globeToMercatorTransition} from '../geo/projection/globe_util.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type FillExtrusionStyleLayer from '../style/style_layer/fill_extrusion_style_layer.js';\n\nexport default draw;\n\nfunction draw(painter: Painter, source: SourceCache, layer: FillExtrusionStyleLayer, coords: Array<OverscaledTileID>) {\n const opacity = layer.paint.get('fill-extrusion-opacity');\n if (opacity === 0) {\n return;\n }\n\n if (painter.renderPass === 'translucent') {\n const depthMode = new DepthMode(painter.context.gl.LEQUAL, DepthMode.ReadWrite, painter.depthRangeFor3D);\n\n if (opacity === 1 && !layer.paint.get('fill-extrusion-pattern').constantOr((1: any))) {\n const colorMode = painter.colorModeForRenderPass();\n drawExtrusionTiles(painter, source, layer, coords, depthMode, StencilMode.disabled, colorMode);\n\n } else {\n // Draw transparent buildings in two passes so that only the closest surface is drawn.\n // First draw all the extrusions into only the depth buffer. No colors are drawn.\n drawExtrusionTiles(painter, source, layer, coords, depthMode,\n StencilMode.disabled,\n ColorMode.disabled);\n\n // Then draw all the extrusions a second type, only coloring fragments if they have the\n // same depth value as the closest fragment in the previous pass. Use the stencil buffer\n // to prevent the second draw in cases where we have coincident polygons.\n drawExtrusionTiles(painter, source, layer, coords, depthMode,\n painter.stencilModeFor3D(),\n painter.colorModeForRenderPass());\n\n painter.resetStencilClippingMasks();\n }\n }\n}\n\nfunction drawExtrusionTiles(painter, source, layer, coords, depthMode, stencilMode, colorMode) {\n const context = painter.context;\n const gl = context.gl;\n const tr = painter.transform;\n const patternProperty = layer.paint.get('fill-extrusion-pattern');\n const image = patternProperty.constantOr((1: any));\n const crossfade = layer.getCrossfadeParameters();\n const opacity = layer.paint.get('fill-extrusion-opacity');\n const heightLift = tr.projection.name === 'globe' ? fillExtrusionHeightLift() : 0;\n const isGlobeProjection = tr.projection.name === 'globe';\n const globeToMercator = isGlobeProjection ? globeToMercatorTransition(tr.zoom) : 0.0;\n const mercatorCenter = [mercatorXfromLng(tr.center.lng), mercatorYfromLat(tr.center.lat)];\n const baseDefines = ([]: any);\n if (isGlobeProjection) {\n baseDefines.push('PROJECTION_GLOBE_VIEW');\n }\n\n for (const coord of coords) {\n const tile = source.getTile(coord);\n const bucket: ?FillExtrusionBucket = (tile.getBucket(layer): any);\n if (!bucket || bucket.projection.name !== tr.projection.name) continue;\n\n const programConfiguration = bucket.programConfigurations.get(layer.id);\n const program = painter.useProgram(image ? 'fillExtrusionPattern' : 'fillExtrusion', programConfiguration, baseDefines);\n\n if (painter.terrain) {\n const terrain = painter.terrain;\n if (painter.style.terrainSetForDrapingOnly()) {\n terrain.setupElevationDraw(tile, program, {useMeterToDem: true});\n } else {\n if (!bucket.enableTerrain) continue;\n terrain.setupElevationDraw(tile, program, {useMeterToDem: true});\n flatRoofsUpdate(context, source, coord, bucket, layer, terrain);\n if (!bucket.centroidVertexBuffer) {\n const attrIndex: number | void = program.attributes['a_centroid_pos'];\n if (attrIndex !== undefined) gl.vertexAttrib2f(attrIndex, 0, 0);\n }\n }\n }\n\n if (image) {\n painter.context.activeTexture.set(gl.TEXTURE0);\n tile.imageAtlasTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n programConfiguration.updatePaintBuffers(crossfade);\n }\n const constantPattern = patternProperty.constantOr(null);\n if (constantPattern && tile.imageAtlas) {\n const atlas = tile.imageAtlas;\n const posTo = atlas.patternPositions[constantPattern.to.toString()];\n const posFrom = atlas.patternPositions[constantPattern.from.toString()];\n if (posTo && posFrom) programConfiguration.setConstantPatternPositions(posTo, posFrom);\n }\n\n const matrix = painter.translatePosMatrix(\n coord.projMatrix,\n tile,\n layer.paint.get('fill-extrusion-translate'),\n layer.paint.get('fill-extrusion-translate-anchor'));\n\n const invMatrix = tr.projection.createInversionMatrix(tr, coord.canonical);\n\n const shouldUseVerticalGradient = layer.paint.get('fill-extrusion-vertical-gradient');\n const uniformValues = image ?\n fillExtrusionPatternUniformValues(matrix, painter, shouldUseVerticalGradient, opacity, coord,\n crossfade, tile, heightLift, globeToMercator, mercatorCenter, invMatrix) :\n fillExtrusionUniformValues(matrix, painter, shouldUseVerticalGradient, opacity, coord,\n heightLift, globeToMercator, mercatorCenter, invMatrix);\n\n painter.prepareDrawProgram(context, program, coord.toUnwrapped());\n\n assert(!isGlobeProjection || bucket.layoutVertexExtBuffer);\n\n program.draw(context, context.gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.backCCW,\n uniformValues, layer.id, bucket.layoutVertexBuffer, bucket.indexBuffer,\n bucket.segments, layer.paint, painter.transform.zoom,\n programConfiguration,\n painter.terrain ? bucket.centroidVertexBuffer : null,\n isGlobeProjection ? bucket.layoutVertexExtBuffer : null);\n }\n}\n\n// Flat roofs array is prepared in the bucket, except for buildings that are on tile borders.\n// For them, join pieces, calculate joined size here, and then upload data.\nfunction flatRoofsUpdate(context, source, coord, bucket, layer, terrain) {\n // For all four borders: 0 - left, 1, right, 2 - top, 3 - bottom\n const neighborCoord = [\n coord => {\n let x = coord.canonical.x - 1;\n let w = coord.wrap;\n if (x < 0) {\n x = (1 << coord.canonical.z) - 1;\n w--;\n }\n return new OverscaledTileID(coord.overscaledZ, w, coord.canonical.z, x, coord.canonical.y);\n },\n coord => {\n let x = coord.canonical.x + 1;\n let w = coord.wrap;\n if (x === 1 << coord.canonical.z) {\n x = 0;\n w++;\n }\n return new OverscaledTileID(coord.overscaledZ, w, coord.canonical.z, x, coord.canonical.y);\n },\n coord => new OverscaledTileID(coord.overscaledZ, coord.wrap, coord.canonical.z, coord.canonical.x,\n (coord.canonical.y === 0 ? 1 << coord.canonical.z : coord.canonical.y) - 1),\n coord => new OverscaledTileID(coord.overscaledZ, coord.wrap, coord.canonical.z, coord.canonical.x,\n coord.canonical.y === (1 << coord.canonical.z) - 1 ? 0 : coord.canonical.y + 1)\n ];\n\n const getLoadedBucket = (nid) => {\n const minzoom = source.getSource().minzoom;\n const getBucket = (key) => {\n const n = source.getTileByID(key);\n if (n && n.hasData()) {\n return n.getBucket(layer);\n }\n };\n // Look one tile zoom above and under. We do this to avoid flickering and\n // use the content in Z-1 and Z+1 buckets until Z bucket is loaded or handle\n // behavior on borders between different zooms.\n const zoomLevels = [0, -1, 1];\n for (const i of zoomLevels) {\n const z = nid.overscaledZ + i;\n if (z < minzoom) continue;\n const key = nid.calculateScaledKey(nid.overscaledZ + i);\n const b = getBucket(key);\n if (b) {\n return b;\n }\n }\n };\n\n const projectedToBorder = [0, 0, 0]; // [min, max, maxOffsetFromBorder]\n const xjoin = (a, b) => {\n projectedToBorder[0] = Math.min(a.min.y, b.min.y);\n projectedToBorder[1] = Math.max(a.max.y, b.max.y);\n projectedToBorder[2] = EXTENT - b.min.x > a.max.x ? b.min.x - EXTENT : a.max.x;\n return projectedToBorder;\n };\n const yjoin = (a, b) => {\n projectedToBorder[0] = Math.min(a.min.x, b.min.x);\n projectedToBorder[1] = Math.max(a.max.x, b.max.x);\n projectedToBorder[2] = EXTENT - b.min.y > a.max.y ? b.min.y - EXTENT : a.max.y;\n return projectedToBorder;\n };\n const projectCombinedSpanToBorder = [\n (a, b) => xjoin(a, b),\n (a, b) => xjoin(b, a),\n (a, b) => yjoin(a, b),\n (a, b) => yjoin(b, a)\n ];\n\n const centroid = new Point(0, 0);\n const error = 3; // Allow intrusion of a building to the building with adjacent wall.\n\n let demTile, neighborDEMTile, neighborTileID;\n\n const flatBase = (min, max, edge, verticalEdge, maxOffsetFromBorder) => {\n const points = [[verticalEdge ? edge : min, verticalEdge ? min : edge, 0], [verticalEdge ? edge : max, verticalEdge ? max : edge, 0]];\n\n const coord3 = maxOffsetFromBorder < 0 ? EXTENT + maxOffsetFromBorder : maxOffsetFromBorder;\n const thirdPoint = [verticalEdge ? coord3 : (min + max) / 2, verticalEdge ? (min + max) / 2 : coord3, 0];\n if ((edge === 0 && maxOffsetFromBorder < 0) || (edge !== 0 && maxOffsetFromBorder > 0)) {\n // Third point is inside neighbor tile, not in the |coord| tile.\n terrain.getForTilePoints(neighborTileID, [thirdPoint], true, neighborDEMTile);\n } else {\n points.push(thirdPoint);\n }\n terrain.getForTilePoints(coord, points, true, demTile);\n return Math.max(points[0][2], points[1][2], thirdPoint[2]) / terrain.exaggeration();\n };\n\n // Process all four borders: get neighboring tile\n for (let i = 0; i < 4; i++) {\n // borders / borderDoneWithNeighborZ: 0 - left, 1, right, 2 - top, 3 - bottom\n // bucket's border i is neighboring bucket's border j:\n const j = (i < 2 ? 1 : 5) - i;\n // Sort by border intersection area minimums, ascending.\n const a = bucket.borders[i];\n if (a.length === 0) continue;\n const nid = neighborTileID = neighborCoord[i](coord);\n const nBucket = getLoadedBucket(nid);\n if (!nBucket || !(nBucket instanceof FillExtrusionBucket) || !nBucket.enableTerrain) continue;\n if (bucket.borderDoneWithNeighborZ[i] === nBucket.canonical.z &&\n nBucket.borderDoneWithNeighborZ[j] === bucket.canonical.z) {\n continue;\n }\n\n neighborDEMTile = terrain.findDEMTileFor(nid);\n if (!neighborDEMTile || !neighborDEMTile.dem) continue;\n if (!demTile) {\n const dem = terrain.findDEMTileFor(coord);\n if (!(dem && dem.dem)) return; // defer update until an elevation tile is available.\n demTile = dem;\n }\n const b = nBucket.borders[j];\n let ib = 0;\n\n const updateNeighbor = nBucket.borderDoneWithNeighborZ[j] !== bucket.canonical.z;\n // If neighbors are of different canonical z, we cannot join parts but show\n // all without flat roofs.\n if (bucket.canonical.z !== nBucket.canonical.z) {\n for (const index of a) {\n bucket.encodeCentroid(undefined, bucket.featuresOnBorder[index], false);\n }\n if (updateNeighbor) {\n for (const index of b) {\n nBucket.encodeCentroid(undefined, nBucket.featuresOnBorder[index], false);\n }\n nBucket.borderDoneWithNeighborZ[j] = bucket.canonical.z;\n nBucket.needsCentroidUpdate = true;\n }\n bucket.borderDoneWithNeighborZ[i] = nBucket.canonical.z;\n bucket.needsCentroidUpdate = true;\n continue;\n }\n\n for (let ia = 0; ia < a.length; ia++) {\n const parta = bucket.featuresOnBorder[a[ia]];\n const partABorderRange = parta.borders[i];\n // Find all nBucket parts that share the border overlap.\n let partb;\n while (ib < b.length) {\n // Pass all that are before the overlap.\n partb = nBucket.featuresOnBorder[b[ib]];\n const partBBorderRange = partb.borders[j];\n if (partBBorderRange[1] > partABorderRange[0] + error) break;\n if (updateNeighbor) nBucket.encodeCentroid(undefined, partb, false);\n ib++;\n }\n if (partb && ib < b.length) {\n const saveIb = ib;\n let count = 0;\n while (true) {\n // Collect all parts overlapping parta on the edge, to make sure it is only one.\n const partBBorderRange = partb.borders[j];\n if (partBBorderRange[0] > partABorderRange[1] - error) break;\n count++;\n if (++ib === b.length) break;\n partb = nBucket.featuresOnBorder[b[ib]];\n }\n partb = nBucket.featuresOnBorder[b[saveIb]];\n\n // If any of a or b crosses more than one tile edge, don't support flat roof.\n if (parta.intersectsCount() > 1 || partb.intersectsCount() > 1 || count !== 1) {\n if (count !== 1) {\n ib = saveIb; // rewind unprocessed ib so that it is processed again for the next ia.\n }\n\n bucket.encodeCentroid(undefined, parta, false);\n if (updateNeighbor) nBucket.encodeCentroid(undefined, partb, false);\n continue;\n }\n\n // Now we have 1-1 matching of parts in both tiles that share the edge. Calculate flat base elevation\n // as average of three points: 2 are edge points (combined span projected to border) and one is point of\n // span that has maximum offset to border.\n const span = projectCombinedSpanToBorder[i](parta, partb);\n const edge = (i % 2) ? EXTENT - 1 : 0;\n centroid.x = flatBase(span[0], Math.min(EXTENT - 1, span[1]), edge, i < 2, span[2]);\n centroid.y = 0;\n assert(parta.vertexArrayOffset !== undefined && parta.vertexArrayOffset < bucket.layoutVertexArray.length);\n bucket.encodeCentroid(centroid, parta, false);\n\n assert(partb.vertexArrayOffset !== undefined && partb.vertexArrayOffset < nBucket.layoutVertexArray.length);\n if (updateNeighbor) nBucket.encodeCentroid(centroid, partb, false);\n } else {\n assert(parta.intersectsCount() > 1 || (partb && partb.intersectsCount() > 1)); // expected at the end of border, when buildings cover corner (show building w/o flat roof).\n bucket.encodeCentroid(undefined, parta, false);\n }\n }\n\n bucket.borderDoneWithNeighborZ[i] = nBucket.canonical.z;\n bucket.needsCentroidUpdate = true;\n if (updateNeighbor) {\n nBucket.borderDoneWithNeighborZ[j] = bucket.canonical.z;\n nBucket.needsCentroidUpdate = true;\n }\n }\n\n if (bucket.needsCentroidUpdate || (!bucket.centroidVertexBuffer && bucket.centroidVertexArray.length !== 0)) {\n bucket.uploadCentroid(context);\n }\n}\n","// @flow\n\nimport DepthMode from '../gl/depth_mode.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {debugUniformValues} from './program/debug_program.js';\nimport Color from '../style-spec/util/color.js';\nimport ColorMode from '../gl/color_mode.js';\nimport browser from '../util/browser.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\n\nexport default drawDebug;\n\nconst topColor = new Color(1, 0, 0, 1);\nconst btmColor = new Color(0, 1, 0, 1);\nconst leftColor = new Color(0, 0, 1, 1);\nconst rightColor = new Color(1, 0, 1, 1);\nconst centerColor = new Color(0, 1, 1, 1);\n\nexport function drawDebugPadding(painter: Painter) {\n const padding = painter.transform.padding;\n const lineWidth = 3;\n // Top\n drawHorizontalLine(painter, painter.transform.height - (padding.top || 0), lineWidth, topColor);\n // Bottom\n drawHorizontalLine(painter, padding.bottom || 0, lineWidth, btmColor);\n // Left\n drawVerticalLine(painter, padding.left || 0, lineWidth, leftColor);\n // Right\n drawVerticalLine(painter, painter.transform.width - (padding.right || 0), lineWidth, rightColor);\n // Center\n const center = painter.transform.centerPoint;\n drawCrosshair(painter, center.x, painter.transform.height - center.y, centerColor);\n}\n\nexport function drawDebugQueryGeometry(painter: Painter, sourceCache: SourceCache, coords: Array<OverscaledTileID>) {\n for (let i = 0; i < coords.length; i++) {\n drawTileQueryGeometry(painter, sourceCache, coords[i]);\n }\n}\n\nfunction drawCrosshair(painter: Painter, x: number, y: number, color: Color) {\n const size = 20;\n const lineWidth = 2;\n //Vertical line\n drawDebugSSRect(painter, x - lineWidth / 2, y - size / 2, lineWidth, size, color);\n //Horizontal line\n drawDebugSSRect(painter, x - size / 2, y - lineWidth / 2, size, lineWidth, color);\n}\n\nfunction drawHorizontalLine(painter: Painter, y: number, lineWidth: number, color: Color) {\n drawDebugSSRect(painter, 0, y + lineWidth / 2, painter.transform.width, lineWidth, color);\n}\n\nfunction drawVerticalLine(painter: Painter, x: number, lineWidth: number, color: Color) {\n drawDebugSSRect(painter, x - lineWidth / 2, 0, lineWidth, painter.transform.height, color);\n}\n\nfunction drawDebugSSRect(painter: Painter, x: number, y: number, width: number, height: number, color: Color) {\n const context = painter.context;\n const gl = context.gl;\n\n gl.enable(gl.SCISSOR_TEST);\n gl.scissor(x * browser.devicePixelRatio, y * browser.devicePixelRatio, width * browser.devicePixelRatio, height * browser.devicePixelRatio);\n context.clear({color});\n gl.disable(gl.SCISSOR_TEST);\n}\n\nfunction drawDebug(painter: Painter, sourceCache: SourceCache, coords: Array<OverscaledTileID>) {\n for (let i = 0; i < coords.length; i++) {\n drawDebugTile(painter, sourceCache, coords[i]);\n }\n}\n\nfunction drawTileQueryGeometry(painter, sourceCache, coord: OverscaledTileID) {\n const context = painter.context;\n const gl = context.gl;\n\n const posMatrix = coord.projMatrix;\n const program = painter.useProgram('debug');\n const tile = sourceCache.getTileByID(coord.key);\n if (painter.terrain) painter.terrain.setupElevationDraw(tile, program);\n\n const depthMode = DepthMode.disabled;\n const stencilMode = StencilMode.disabled;\n const colorMode = painter.colorModeForRenderPass();\n const id = '$debug';\n\n context.activeTexture.set(gl.TEXTURE0);\n // Bind the empty texture for drawing outlines\n painter.emptyTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n\n const queryViz = tile.queryGeometryDebugViz;\n const boundsViz = tile.queryBoundsDebugViz;\n\n if (queryViz && queryViz.vertices.length > 0) {\n queryViz.lazyUpload(context);\n const vertexBuffer = queryViz.vertexBuffer;\n const indexBuffer = queryViz.indexBuffer;\n const segments = queryViz.segments;\n if (vertexBuffer != null && indexBuffer != null && segments != null) {\n program.draw(context, gl.LINE_STRIP, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n debugUniformValues(posMatrix, queryViz.color), id,\n vertexBuffer, indexBuffer, segments);\n }\n }\n\n if (boundsViz && boundsViz.vertices.length > 0) {\n boundsViz.lazyUpload(context);\n const vertexBuffer = boundsViz.vertexBuffer;\n const indexBuffer = boundsViz.indexBuffer;\n const segments = boundsViz.segments;\n if (vertexBuffer != null && indexBuffer != null && segments != null) {\n program.draw(context, gl.LINE_STRIP, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n debugUniformValues(posMatrix, boundsViz.color), id,\n vertexBuffer, indexBuffer, segments);\n }\n }\n}\n\nfunction drawDebugTile(painter, sourceCache, coord: OverscaledTileID) {\n const context = painter.context;\n const gl = context.gl;\n\n const isGlobeProjection = painter.transform.projection.name === 'globe';\n const definesValues = isGlobeProjection ? ['PROJECTION_GLOBE_VIEW'] : null;\n\n const posMatrix = coord.projMatrix;\n const program = painter.useProgram('debug', null, definesValues);\n const tile = sourceCache.getTileByID(coord.key);\n if (painter.terrain) painter.terrain.setupElevationDraw(tile, program);\n\n const depthMode = DepthMode.disabled;\n const stencilMode = StencilMode.disabled;\n const colorMode = painter.colorModeForRenderPass();\n const id = '$debug';\n\n context.activeTexture.set(gl.TEXTURE0);\n // Bind the empty texture for drawing outlines\n painter.emptyTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n\n if (isGlobeProjection) {\n tile._makeGlobeTileDebugBuffers(painter.context, painter.transform.projection);\n } else {\n tile._makeDebugTileBoundsBuffers(painter.context, painter.transform.projection);\n }\n\n const debugBuffer = tile._tileDebugBuffer || painter.debugBuffer;\n const debugIndexBuffer = tile._tileDebugIndexBuffer || painter.debugIndexBuffer;\n const debugSegments = tile._tileDebugSegments || painter.debugSegments;\n\n program.draw(context, gl.LINE_STRIP, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n debugUniformValues(posMatrix, Color.red), id,\n debugBuffer, debugIndexBuffer, debugSegments,\n null, null, null, tile._globeTileDebugBorderBuffer);\n\n const tileRawData = tile.latestRawTileData;\n const tileByteLength = (tileRawData && tileRawData.byteLength) || 0;\n const tileSizeKb = Math.floor(tileByteLength / 1024);\n const tileSize = sourceCache.getTile(coord).tileSize;\n const scaleRatio = (512 / Math.min(tileSize, 512) * (coord.overscaledZ / painter.transform.zoom)) * 0.5;\n let tileIdText = coord.canonical.toString();\n if (coord.overscaledZ !== coord.canonical.z) {\n tileIdText += ` => ${coord.overscaledZ}`;\n }\n const tileLabel = `${tileIdText} ${tileSizeKb}kb`;\n drawTextToOverlay(painter, tileLabel);\n\n const debugTextBuffer = tile._tileDebugTextBuffer || painter.debugBuffer;\n const debugTextIndexBuffer = tile._tileDebugTextIndexBuffer || painter.quadTriangleIndexBuffer;\n const debugTextSegments = tile._tileDebugTextSegments || painter.debugSegments;\n\n program.draw(context, gl.TRIANGLES, depthMode, stencilMode, ColorMode.alphaBlended, CullFaceMode.disabled,\n debugUniformValues(posMatrix, Color.transparent, scaleRatio), id,\n debugTextBuffer, debugTextIndexBuffer, debugTextSegments,\n null, null, null, tile._globeTileDebugTextBuffer);\n}\n\nfunction drawTextToOverlay(painter: Painter, text: string) {\n painter.initDebugOverlayCanvas();\n const canvas = painter.debugOverlayCanvas;\n const gl = painter.context.gl;\n const ctx2d = painter.debugOverlayCanvas.getContext('2d');\n ctx2d.clearRect(0, 0, canvas.width, canvas.height);\n\n ctx2d.shadowColor = 'white';\n ctx2d.shadowBlur = 2;\n ctx2d.lineWidth = 1.5;\n ctx2d.strokeStyle = 'white';\n ctx2d.textBaseline = 'top';\n ctx2d.font = `bold ${36}px Open Sans, sans-serif`;\n ctx2d.fillText(text, 5, 5);\n ctx2d.strokeText(text, 5, 5);\n\n painter.debugOverlayTexture.update(canvas);\n painter.debugOverlayTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n}\n","// @flow\nimport {createLayout} from '../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../util/struct_array.js';\n\nexport const skyboxAttributes: StructArrayLayout = createLayout([\n {name: 'a_pos_3f', components: 3, type: 'Float32'}\n]);\n\nexport default skyboxAttributes;\nexport const {members, size, alignment} = skyboxAttributes;\n","// @flow\n\nimport {members as skyboxAttributes} from './skybox_attributes.js';\nimport {SkyboxVertexArray, TriangleIndexArray} from '../data/array_types.js';\nimport SegmentVector from '../data/segment.js';\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type Context from '../gl/context.js';\n\nfunction addVertex(vertexArray, x, y, z) {\n vertexArray.emplaceBack(\n // a_pos\n x,\n y,\n z\n );\n}\n\nclass SkyboxGeometry {\n vertexArray: SkyboxVertexArray;\n vertexBuffer: VertexBuffer;\n indices: TriangleIndexArray;\n indexBuffer: IndexBuffer;\n segment: SegmentVector;\n\n constructor(context: Context) {\n this.vertexArray = new SkyboxVertexArray();\n this.indices = new TriangleIndexArray();\n\n addVertex(this.vertexArray, -1.0, -1.0, 1.0);\n addVertex(this.vertexArray, 1.0, -1.0, 1.0);\n addVertex(this.vertexArray, -1.0, 1.0, 1.0);\n addVertex(this.vertexArray, 1.0, 1.0, 1.0);\n addVertex(this.vertexArray, -1.0, -1.0, -1.0);\n addVertex(this.vertexArray, 1.0, -1.0, -1.0);\n addVertex(this.vertexArray, -1.0, 1.0, -1.0);\n addVertex(this.vertexArray, 1.0, 1.0, -1.0);\n\n // +x\n this.indices.emplaceBack(5, 1, 3);\n this.indices.emplaceBack(3, 7, 5);\n // -x\n this.indices.emplaceBack(6, 2, 0);\n this.indices.emplaceBack(0, 4, 6);\n // +y\n this.indices.emplaceBack(2, 6, 7);\n this.indices.emplaceBack(7, 3, 2);\n // -y\n this.indices.emplaceBack(5, 4, 0);\n this.indices.emplaceBack(0, 1, 5);\n // +z\n this.indices.emplaceBack(0, 2, 3);\n this.indices.emplaceBack(3, 1, 0);\n // -z\n this.indices.emplaceBack(7, 6, 4);\n this.indices.emplaceBack(4, 5, 7);\n\n this.vertexBuffer = context.createVertexBuffer(this.vertexArray, skyboxAttributes);\n this.indexBuffer = context.createIndexBuffer(this.indices);\n\n this.segment = SegmentVector.simpleSegment(0, 0, 36, 12);\n }\n}\n\nexport default SkyboxGeometry;\n","// @flow\n\nimport StencilMode from '../gl/stencil_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport ColorMode from '../gl/color_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport Context from '../gl/context.js';\nimport Texture from './texture.js';\nimport Program from './program.js';\nimport {smoothstep} from '../util/util.js';\nimport type SourceCache from '../source/source_cache.js';\nimport SkyboxGeometry from './skybox_geometry.js';\nimport {skyboxUniformValues, skyboxGradientUniformValues} from './program/skybox_program.js';\nimport {skyboxCaptureUniformValues} from './program/skybox_capture_program.js';\nimport SkyLayer from '../style/style_layer/sky_style_layer.js';\nimport type Painter from './painter.js';\nimport {mat3, mat4} from 'gl-matrix';\nimport assert from 'assert';\n\nimport type {Mat4} from 'gl-matrix';\n\nexport default drawSky;\n\nconst TRANSITION_OPACITY_ZOOM_START = 7;\nconst TRANSITION_OPACITY_ZOOM_END = 8;\n\nfunction drawSky(painter: Painter, sourceCache: SourceCache, layer: SkyLayer) {\n const tr = painter.transform;\n const globeOrMercator = (tr.projection.name === 'mercator' || tr.projection.name === 'globe');\n // For non-mercator projection, use a forced opacity transition. This transition is set to be\n // 1.0 after the sheer adjustment upper bound which ensures to be in the mercator projection.\n // Note: we only render sky for globe projection during the transition to mercator.\n const transitionOpacity = globeOrMercator ? 1.0 : smoothstep(TRANSITION_OPACITY_ZOOM_START, TRANSITION_OPACITY_ZOOM_END, tr.zoom);\n const opacity = layer.paint.get('sky-opacity') * transitionOpacity;\n if (opacity === 0) {\n return;\n }\n\n const context = painter.context;\n const type = layer.paint.get('sky-type');\n const depthMode = new DepthMode(context.gl.LEQUAL, DepthMode.ReadOnly, [0, 1]);\n const temporalOffset = (painter.frameCounter / 1000.0) % 1;\n\n if (type === 'atmosphere') {\n if (painter.renderPass === 'offscreen') {\n if (layer.needsSkyboxCapture(painter)) {\n captureSkybox(painter, layer, 32, 32);\n layer.markSkyboxValid(painter);\n }\n } else if (painter.renderPass === 'sky') {\n drawSkyboxFromCapture(painter, layer, depthMode, opacity, temporalOffset);\n }\n } else if (type === 'gradient') {\n if (painter.renderPass === 'sky') {\n drawSkyboxGradient(painter, layer, depthMode, opacity, temporalOffset);\n }\n } else {\n assert(false, `${type} is unsupported sky-type`);\n }\n}\n\nfunction drawSkyboxGradient(painter: Painter, layer: SkyLayer, depthMode: DepthMode, opacity: number, temporalOffset: number) {\n const context = painter.context;\n const gl = context.gl;\n const transform = painter.transform;\n const program = painter.useProgram('skyboxGradient');\n\n // Lazily initialize geometry and texture if they havent been created yet.\n if (!layer.skyboxGeometry) {\n layer.skyboxGeometry = new SkyboxGeometry(context);\n }\n context.activeTexture.set(gl.TEXTURE0);\n let colorRampTexture = layer.colorRampTexture;\n if (!colorRampTexture) {\n colorRampTexture = layer.colorRampTexture = new Texture(context, layer.colorRamp, gl.RGBA);\n }\n colorRampTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n const uniformValues = skyboxGradientUniformValues(\n transform.skyboxMatrix,\n layer.getCenter(painter, false),\n layer.paint.get('sky-gradient-radius'),\n opacity,\n temporalOffset\n );\n\n painter.prepareDrawProgram(context, program);\n\n program.draw(context, gl.TRIANGLES, depthMode, StencilMode.disabled,\n painter.colorModeForRenderPass(), CullFaceMode.backCW,\n uniformValues, 'skyboxGradient', layer.skyboxGeometry.vertexBuffer,\n layer.skyboxGeometry.indexBuffer, layer.skyboxGeometry.segment);\n}\n\nfunction drawSkyboxFromCapture(painter: Painter, layer: SkyLayer, depthMode: DepthMode, opacity: number, temporalOffset: number) {\n const context = painter.context;\n const gl = context.gl;\n const transform = painter.transform;\n const program = painter.useProgram('skybox');\n\n context.activeTexture.set(gl.TEXTURE0);\n\n gl.bindTexture(gl.TEXTURE_CUBE_MAP, layer.skyboxTexture);\n\n const uniformValues = skyboxUniformValues(transform.skyboxMatrix, layer.getCenter(painter, false), 0, opacity, temporalOffset);\n\n painter.prepareDrawProgram(context, program);\n\n program.draw(context, gl.TRIANGLES, depthMode, StencilMode.disabled,\n painter.colorModeForRenderPass(), CullFaceMode.backCW,\n uniformValues, 'skybox', layer.skyboxGeometry.vertexBuffer,\n layer.skyboxGeometry.indexBuffer, layer.skyboxGeometry.segment);\n}\n\nfunction drawSkyboxFace(context: Context, layer: SkyLayer, program: Program<any>, faceRotate: Mat4, sunDirection: [number, number, number], i: number) {\n const gl = context.gl;\n\n const atmosphereColor = layer.paint.get('sky-atmosphere-color');\n const atmosphereHaloColor = layer.paint.get('sky-atmosphere-halo-color');\n const sunIntensity = layer.paint.get('sky-atmosphere-sun-intensity');\n\n const uniformValues = skyboxCaptureUniformValues(\n mat3.fromMat4(mat3.create(), faceRotate),\n sunDirection,\n sunIntensity,\n atmosphereColor,\n atmosphereHaloColor);\n\n const glFace = gl.TEXTURE_CUBE_MAP_POSITIVE_X + i;\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, glFace, layer.skyboxTexture, 0);\n\n program.draw(context, gl.TRIANGLES, DepthMode.disabled, StencilMode.disabled, ColorMode.unblended, CullFaceMode.frontCW,\n uniformValues, 'skyboxCapture', layer.skyboxGeometry.vertexBuffer,\n layer.skyboxGeometry.indexBuffer, layer.skyboxGeometry.segment);\n}\n\nfunction captureSkybox(painter: Painter, layer: SkyLayer, width: number, height: number) {\n const context = painter.context;\n const gl = context.gl;\n let fbo = layer.skyboxFbo;\n\n // Using absence of fbo as a signal for lazy initialization of all resources, cache resources in layer object\n if (!fbo) {\n fbo = layer.skyboxFbo = context.createFramebuffer(width, height, false);\n layer.skyboxGeometry = new SkyboxGeometry(context);\n layer.skyboxTexture = context.gl.createTexture();\n\n gl.bindTexture(gl.TEXTURE_CUBE_MAP, layer.skyboxTexture);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n\n for (let i = 0; i < 6; ++i) {\n const glFace = gl.TEXTURE_CUBE_MAP_POSITIVE_X + i;\n\n // The format here could be RGB, but render tests are not happy with rendering to such a format\n gl.texImage2D(glFace, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n }\n }\n\n context.bindFramebuffer.set(fbo.framebuffer);\n context.viewport.set([0, 0, width, height]);\n\n const sunDirection = layer.getCenter(painter, true);\n const program = painter.useProgram('skyboxCapture');\n const faceRotate = new Float64Array(16);\n\n // +x;\n mat4.identity(faceRotate);\n mat4.rotateY(faceRotate, faceRotate, -Math.PI * 0.5);\n drawSkyboxFace(context, layer, program, faceRotate, sunDirection, 0);\n // -x\n mat4.identity(faceRotate);\n mat4.rotateY(faceRotate, faceRotate, Math.PI * 0.5);\n drawSkyboxFace(context, layer, program, faceRotate, sunDirection, 1);\n // +y\n mat4.identity(faceRotate);\n mat4.rotateX(faceRotate, faceRotate, -Math.PI * 0.5);\n drawSkyboxFace(context, layer, program, faceRotate, sunDirection, 2);\n // -y\n mat4.identity(faceRotate);\n mat4.rotateX(faceRotate, faceRotate, Math.PI * 0.5);\n drawSkyboxFace(context, layer, program, faceRotate, sunDirection, 3);\n // +z\n mat4.identity(faceRotate);\n drawSkyboxFace(context, layer, program, faceRotate, sunDirection, 4);\n // -z\n mat4.identity(faceRotate);\n mat4.rotateY(faceRotate, faceRotate, Math.PI);\n drawSkyboxFace(context, layer, program, faceRotate, sunDirection, 5);\n\n context.viewport.set([0, 0, painter.width, painter.height]);\n}\n","// @flow\nimport {createLayout} from '../util/struct_array.js';\n\nimport type {StructArrayLayout} from '../util/struct_array.js';\n\nexport const atmosphereLayout: StructArrayLayout = createLayout([\n {type: 'Float32', name: 'a_pos', components: 3},\n {type: 'Float32', name: 'a_uv', components: 2}\n]);\n","// @flow\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport SegmentVector from '../data/segment.js';\nimport type Context from '../gl/context.js';\nimport {atmosphereLayout} from './atmosphere_attributes.js';\nimport {TriangleIndexArray, AtmosphereVertexArray} from '../data/array_types.js';\n\nexport class AtmosphereBuffer {\n vertexBuffer: VertexBuffer;\n indexBuffer: IndexBuffer;\n segments: SegmentVector;\n\n constructor(context: Context) {\n const vertices = new AtmosphereVertexArray();\n vertices.emplaceBack(-1, 1, 1, 0, 0);\n vertices.emplaceBack(1, 1, 1, 1, 0);\n vertices.emplaceBack(1, -1, 1, 1, 1);\n vertices.emplaceBack(-1, -1, 1, 0, 1);\n\n const triangles = new TriangleIndexArray();\n triangles.emplaceBack(0, 1, 2);\n triangles.emplaceBack(2, 3, 0);\n\n this.vertexBuffer = context.createVertexBuffer(vertices, atmosphereLayout.members);\n this.indexBuffer = context.createIndexBuffer(triangles);\n this.segments = SegmentVector.simpleSegment(0, 0, 4, 2);\n }\n\n destroy() {\n this.vertexBuffer.destroy();\n this.indexBuffer.destroy();\n this.segments.destroy();\n }\n}\n","// @flow\n\nimport browser from '../util/browser.js';\nimport window from '../util/window.js';\n\nimport {mat4} from 'gl-matrix';\nimport SourceCache from '../source/source_cache.js';\nimport EXTENT from '../data/extent.js';\nimport pixelsToTileUnits from '../source/pixels_to_tile_units.js';\nimport SegmentVector from '../data/segment.js';\nimport {PosArray, TileBoundsArray, TriangleIndexArray, LineStripIndexArray} from '../data/array_types.js';\nimport {values} from '../util/util.js';\nimport {isMapAuthenticated} from '../util/mapbox.js';\nimport posAttributes from '../data/pos_attributes.js';\nimport boundsAttributes from '../data/bounds_attributes.js';\nimport ProgramConfiguration from '../data/program_configuration.js';\nimport CrossTileSymbolIndex from '../symbol/cross_tile_symbol_index.js';\nimport shaders from '../shaders/shaders.js';\nimport Program from './program.js';\nimport {programUniforms} from './program/program_uniforms.js';\nimport Context from '../gl/context.js';\nimport {fogUniformValues} from '../render/fog.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport ColorMode from '../gl/color_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport Texture from './texture.js';\nimport {clippingMaskUniformValues} from './program/clipping_mask_program.js';\nimport Color from '../style-spec/util/color.js';\nimport symbol from './draw_symbol.js';\nimport circle from './draw_circle.js';\nimport assert from 'assert';\nimport heatmap from './draw_heatmap.js';\nimport line from './draw_line.js';\nimport fill from './draw_fill.js';\nimport fillExtrusion from './draw_fill_extrusion.js';\nimport hillshade from './draw_hillshade.js';\nimport raster from './draw_raster.js';\nimport background from './draw_background.js';\nimport debug, {drawDebugPadding, drawDebugQueryGeometry} from './draw_debug.js';\nimport custom from './draw_custom.js';\nimport sky from './draw_sky.js';\nimport drawAtmosphere from './draw_atmosphere.js';\nimport {GlobeSharedBuffers, globeToMercatorTransition} from '../geo/projection/globe_util.js';\nimport {AtmosphereBuffer} from '../render/atmosphere_buffer.js';\nimport {Terrain} from '../terrain/terrain.js';\nimport {Debug} from '../util/debug.js';\nimport Tile from '../source/tile.js';\nimport {RGBAImage} from '../util/image.js';\n\nconst draw = {\n symbol,\n circle,\n heatmap,\n line,\n fill,\n 'fill-extrusion': fillExtrusion,\n hillshade,\n raster,\n background,\n sky,\n debug,\n custom\n};\n\nimport type Transform from '../geo/transform.js';\nimport type {OverscaledTileID, UnwrappedTileID} from '../source/tile_id.js';\nimport type Style from '../style/style.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type {CrossFaded} from '../style/properties.js';\nimport type LineAtlas from './line_atlas.js';\nimport type ImageManager from './image_manager.js';\nimport type GlyphManager from './glyph_manager.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type {DepthRangeType, DepthMaskType, DepthFuncType} from '../gl/types.js';\nimport type ResolvedImage from '../style-spec/expression/types/resolved_image.js';\nimport type {DynamicDefinesType} from './program/program_uniforms.js';\n\nexport type RenderPass = 'offscreen' | 'opaque' | 'translucent' | 'sky';\nexport type CanvasCopyInstances = {\n canvasCopies: WebGLTexture[],\n timeStamps: number[]\n}\n\ntype PainterOptions = {\n showOverdrawInspector: boolean,\n showTileBoundaries: boolean,\n showTerrainWireframe: boolean,\n showQueryGeometry: boolean,\n showPadding: boolean,\n rotating: boolean,\n zooming: boolean,\n moving: boolean,\n gpuTiming: boolean,\n gpuTimingDeferredRender: boolean,\n fadeDuration: number,\n isInitialLoad: boolean,\n speedIndexTiming: boolean\n}\n\ntype TileBoundsBuffers = {|\n tileBoundsBuffer: VertexBuffer,\n tileBoundsIndexBuffer: IndexBuffer,\n tileBoundsSegments: SegmentVector,\n|};\n\ntype GPUTimers = {[layerId: string]: any};\n\n/**\n * Initialize a new painter object.\n *\n * @param {Canvas} gl an experimental-webgl drawing context\n * @private\n */\nclass Painter {\n context: Context;\n transform: Transform;\n _tileTextures: {[_: number]: Array<Texture> };\n numSublayers: number;\n depthEpsilon: number;\n emptyProgramConfiguration: ProgramConfiguration;\n width: number;\n height: number;\n tileExtentBuffer: VertexBuffer;\n tileExtentSegments: SegmentVector;\n debugBuffer: VertexBuffer;\n debugIndexBuffer: IndexBuffer;\n debugSegments: SegmentVector;\n viewportBuffer: VertexBuffer;\n viewportSegments: SegmentVector;\n quadTriangleIndexBuffer: IndexBuffer;\n mercatorBoundsBuffer: VertexBuffer;\n mercatorBoundsSegments: SegmentVector;\n _tileClippingMaskIDs: {[_: number]: number };\n stencilClearMode: StencilMode;\n style: Style;\n options: PainterOptions;\n lineAtlas: LineAtlas;\n imageManager: ImageManager;\n glyphManager: GlyphManager;\n depthRangeFor3D: DepthRangeType;\n opaquePassCutoff: number;\n frameCounter: number;\n renderPass: RenderPass;\n currentLayer: number;\n currentStencilSource: ?string;\n nextStencilID: number;\n id: string;\n _showOverdrawInspector: boolean;\n cache: {[_: string]: Program<*> };\n crossTileSymbolIndex: CrossTileSymbolIndex;\n symbolFadeChange: number;\n gpuTimers: GPUTimers;\n deferredRenderGpuTimeQueries: Array<any>;\n emptyTexture: Texture;\n identityMat: Float32Array;\n debugOverlayTexture: Texture;\n debugOverlayCanvas: HTMLCanvasElement;\n _terrain: ?Terrain;\n globeSharedBuffers: ?GlobeSharedBuffers;\n atmosphereBuffer: AtmosphereBuffer;\n tileLoaded: boolean;\n frameCopies: Array<WebGLTexture>;\n loadTimeStamps: Array<number>;\n _backgroundTiles: {[key: number]: Tile};\n\n constructor(gl: WebGLRenderingContext, transform: Transform) {\n this.context = new Context(gl);\n this.transform = transform;\n this._tileTextures = {};\n this.frameCopies = [];\n this.loadTimeStamps = [];\n\n this.setup();\n\n // Within each layer there are multiple distinct z-planes that can be drawn to.\n // This is implemented using the WebGL depth buffer.\n this.numSublayers = SourceCache.maxUnderzooming + SourceCache.maxOverzooming + 1;\n this.depthEpsilon = 1 / Math.pow(2, 16);\n\n this.crossTileSymbolIndex = new CrossTileSymbolIndex();\n\n this.deferredRenderGpuTimeQueries = [];\n this.gpuTimers = {};\n this.frameCounter = 0;\n this._backgroundTiles = {};\n }\n\n updateTerrain(style: Style, cameraChanging: boolean) {\n const enabled = !!style && !!style.terrain && this.transform.projection.supportsTerrain;\n if (!enabled && (!this._terrain || !this._terrain.enabled)) return;\n if (!this._terrain) {\n this._terrain = new Terrain(this, style);\n }\n const terrain: Terrain = this._terrain;\n this.transform.elevation = enabled ? terrain : null;\n terrain.update(style, this.transform, cameraChanging);\n }\n\n _updateFog(style: Style) {\n // Globe makes use of thin fog overlay with a fixed fog range,\n // so we can skip updating fog tile culling for this projection\n const isGlobe = this.transform.projection.name === 'globe';\n\n const fog = style.fog;\n if (!fog || isGlobe || fog.getOpacity(this.transform.pitch) < 1 || fog.properties.get('horizon-blend') < 0.03) {\n this.transform.fogCullDistSq = null;\n return;\n }\n\n // We start culling where the fog opacity function hits\n // 98% which leaves a non-noticeable change threshold.\n const [start, end] = fog.getFovAdjustedRange(this.transform._fov);\n\n if (start > end) {\n this.transform.fogCullDistSq = null;\n return;\n }\n\n const fogBoundFraction = 0.78;\n const fogCullDist = start + (end - start) * fogBoundFraction;\n\n this.transform.fogCullDistSq = fogCullDist * fogCullDist;\n }\n\n get terrain(): ?Terrain {\n return this.transform._terrainEnabled() && this._terrain && this._terrain.enabled ? this._terrain : null;\n }\n\n /*\n * Update the GL viewport, projection matrix, and transforms to compensate\n * for a new width and height value.\n */\n resize(width: number, height: number) {\n this.width = width * browser.devicePixelRatio;\n this.height = height * browser.devicePixelRatio;\n this.context.viewport.set([0, 0, this.width, this.height]);\n\n if (this.style) {\n for (const layerId of this.style.order) {\n this.style._layers[layerId].resize();\n }\n }\n }\n\n setup() {\n const context = this.context;\n\n const tileExtentArray = new PosArray();\n tileExtentArray.emplaceBack(0, 0);\n tileExtentArray.emplaceBack(EXTENT, 0);\n tileExtentArray.emplaceBack(0, EXTENT);\n tileExtentArray.emplaceBack(EXTENT, EXTENT);\n this.tileExtentBuffer = context.createVertexBuffer(tileExtentArray, posAttributes.members);\n this.tileExtentSegments = SegmentVector.simpleSegment(0, 0, 4, 2);\n\n const debugArray = new PosArray();\n debugArray.emplaceBack(0, 0);\n debugArray.emplaceBack(EXTENT, 0);\n debugArray.emplaceBack(0, EXTENT);\n debugArray.emplaceBack(EXTENT, EXTENT);\n this.debugBuffer = context.createVertexBuffer(debugArray, posAttributes.members);\n this.debugSegments = SegmentVector.simpleSegment(0, 0, 4, 5);\n\n const viewportArray = new PosArray();\n viewportArray.emplaceBack(-1, -1);\n viewportArray.emplaceBack(1, -1);\n viewportArray.emplaceBack(-1, 1);\n viewportArray.emplaceBack(1, 1);\n this.viewportBuffer = context.createVertexBuffer(viewportArray, posAttributes.members);\n this.viewportSegments = SegmentVector.simpleSegment(0, 0, 4, 2);\n\n const tileBoundsArray = new TileBoundsArray();\n tileBoundsArray.emplaceBack(0, 0, 0, 0);\n tileBoundsArray.emplaceBack(EXTENT, 0, EXTENT, 0);\n tileBoundsArray.emplaceBack(0, EXTENT, 0, EXTENT);\n tileBoundsArray.emplaceBack(EXTENT, EXTENT, EXTENT, EXTENT);\n this.mercatorBoundsBuffer = context.createVertexBuffer(tileBoundsArray, boundsAttributes.members);\n this.mercatorBoundsSegments = SegmentVector.simpleSegment(0, 0, 4, 2);\n\n const quadTriangleIndices = new TriangleIndexArray();\n quadTriangleIndices.emplaceBack(0, 1, 2);\n quadTriangleIndices.emplaceBack(2, 1, 3);\n this.quadTriangleIndexBuffer = context.createIndexBuffer(quadTriangleIndices);\n\n const tileLineStripIndices = new LineStripIndexArray();\n for (const i of [0, 1, 3, 2, 0]) tileLineStripIndices.emplaceBack(i);\n this.debugIndexBuffer = context.createIndexBuffer(tileLineStripIndices);\n\n this.emptyTexture = new Texture(context,\n new RGBAImage({width: 1, height: 1}, Uint8Array.of(0, 0, 0, 0)), context.gl.RGBA);\n\n this.identityMat = mat4.create();\n\n const gl = this.context.gl;\n this.stencilClearMode = new StencilMode({func: gl.ALWAYS, mask: 0}, 0x0, 0xFF, gl.ZERO, gl.ZERO, gl.ZERO);\n this.loadTimeStamps.push(window.performance.now());\n\n this.atmosphereBuffer = new AtmosphereBuffer(this.context);\n }\n\n getMercatorTileBoundsBuffers(): TileBoundsBuffers {\n return {\n tileBoundsBuffer: this.mercatorBoundsBuffer,\n tileBoundsIndexBuffer: this.quadTriangleIndexBuffer,\n tileBoundsSegments: this.mercatorBoundsSegments\n };\n }\n\n getTileBoundsBuffers(tile: Tile): TileBoundsBuffers {\n tile._makeTileBoundsBuffers(this.context, this.transform.projection);\n if (tile._tileBoundsBuffer) {\n const tileBoundsBuffer = tile._tileBoundsBuffer;\n const tileBoundsIndexBuffer = tile._tileBoundsIndexBuffer;\n const tileBoundsSegments = tile._tileBoundsSegments;\n return {tileBoundsBuffer, tileBoundsIndexBuffer, tileBoundsSegments};\n } else {\n return this.getMercatorTileBoundsBuffers();\n }\n }\n\n /*\n * Reset the drawing canvas by clearing the stencil buffer so that we can draw\n * new tiles at the same location, while retaining previously drawn pixels.\n */\n clearStencil() {\n const context = this.context;\n const gl = context.gl;\n\n this.nextStencilID = 1;\n this.currentStencilSource = undefined;\n this._tileClippingMaskIDs = {};\n\n // As a temporary workaround for https://github.com/mapbox/mapbox-gl-js/issues/5490,\n // pending an upstream fix, we draw a fullscreen stencil=0 clipping mask here,\n // effectively clearing the stencil buffer: once an upstream patch lands, remove\n // this function in favor of context.clear({ stencil: 0x0 })\n this.useProgram('clippingMask').draw(context, gl.TRIANGLES,\n DepthMode.disabled, this.stencilClearMode, ColorMode.disabled, CullFaceMode.disabled,\n clippingMaskUniformValues(this.identityMat),\n '$clipping', this.viewportBuffer,\n this.quadTriangleIndexBuffer, this.viewportSegments);\n }\n\n resetStencilClippingMasks() {\n if (!this.terrain) {\n this.currentStencilSource = undefined;\n this._tileClippingMaskIDs = {};\n }\n }\n\n _renderTileClippingMasks(layer: StyleLayer, sourceCache?: SourceCache, tileIDs?: Array<OverscaledTileID>) {\n if (!sourceCache || this.currentStencilSource === sourceCache.id || !layer.isTileClipped() || !tileIDs || tileIDs.length === 0) {\n return;\n }\n\n if (this._tileClippingMaskIDs && !this.terrain) {\n let dirtyStencilClippingMasks = false;\n // Equivalent tile set is already rendered in stencil\n for (const coord of tileIDs) {\n if (this._tileClippingMaskIDs[coord.key] === undefined) {\n dirtyStencilClippingMasks = true;\n break;\n }\n }\n if (!dirtyStencilClippingMasks) {\n return;\n }\n }\n\n this.currentStencilSource = sourceCache.id;\n\n const context = this.context;\n const gl = context.gl;\n\n if (this.nextStencilID + tileIDs.length > 256) {\n // we'll run out of fresh IDs so we need to clear and start from scratch\n this.clearStencil();\n }\n\n context.setColorMode(ColorMode.disabled);\n context.setDepthMode(DepthMode.disabled);\n\n const program = this.useProgram('clippingMask');\n\n this._tileClippingMaskIDs = {};\n\n for (const tileID of tileIDs) {\n const tile = sourceCache.getTile(tileID);\n const id = this._tileClippingMaskIDs[tileID.key] = this.nextStencilID++;\n const {tileBoundsBuffer, tileBoundsIndexBuffer, tileBoundsSegments} = this.getTileBoundsBuffers(tile);\n\n program.draw(context, gl.TRIANGLES, DepthMode.disabled,\n // Tests will always pass, and ref value will be written to stencil buffer.\n new StencilMode({func: gl.ALWAYS, mask: 0}, id, 0xFF, gl.KEEP, gl.KEEP, gl.REPLACE),\n ColorMode.disabled, CullFaceMode.disabled, clippingMaskUniformValues(tileID.projMatrix),\n '$clipping', tileBoundsBuffer,\n tileBoundsIndexBuffer, tileBoundsSegments);\n }\n }\n\n stencilModeFor3D(): StencilMode {\n this.currentStencilSource = undefined;\n\n if (this.nextStencilID + 1 > 256) {\n this.clearStencil();\n }\n\n const id = this.nextStencilID++;\n const gl = this.context.gl;\n return new StencilMode({func: gl.NOTEQUAL, mask: 0xFF}, id, 0xFF, gl.KEEP, gl.KEEP, gl.REPLACE);\n }\n\n stencilModeForClipping(tileID: OverscaledTileID): $ReadOnly<StencilMode> {\n if (this.terrain) return this.terrain.stencilModeForRTTOverlap(tileID);\n const gl = this.context.gl;\n return new StencilMode({func: gl.EQUAL, mask: 0xFF}, this._tileClippingMaskIDs[tileID.key], 0x00, gl.KEEP, gl.KEEP, gl.REPLACE);\n }\n\n /*\n * Sort coordinates by Z as drawing tiles is done in Z-descending order.\n * All children with the same Z write the same stencil value. Children\n * stencil values are greater than parent's. This is used only for raster\n * and raster-dem tiles, which are already clipped to tile boundaries, to\n * mask area of tile overlapped by children tiles.\n * Stencil ref values continue range used in _tileClippingMaskIDs.\n *\n * Returns [StencilMode for tile overscaleZ map, sortedCoords].\n */\n stencilConfigForOverlap(tileIDs: Array<OverscaledTileID>): [{[_: number]: $ReadOnly<StencilMode>}, Array<OverscaledTileID>] {\n const gl = this.context.gl;\n const coords = tileIDs.sort((a, b) => b.overscaledZ - a.overscaledZ);\n const minTileZ = coords[coords.length - 1].overscaledZ;\n const stencilValues = coords[0].overscaledZ - minTileZ + 1;\n if (stencilValues > 1) {\n this.currentStencilSource = undefined;\n if (this.nextStencilID + stencilValues > 256) {\n this.clearStencil();\n }\n const zToStencilMode = {};\n for (let i = 0; i < stencilValues; i++) {\n zToStencilMode[i + minTileZ] = new StencilMode({func: gl.GEQUAL, mask: 0xFF}, i + this.nextStencilID, 0xFF, gl.KEEP, gl.KEEP, gl.REPLACE);\n }\n this.nextStencilID += stencilValues;\n return [zToStencilMode, coords];\n }\n return [{[minTileZ]: StencilMode.disabled}, coords];\n }\n\n colorModeForRenderPass(): $ReadOnly<ColorMode> {\n const gl = this.context.gl;\n if (this._showOverdrawInspector) {\n const numOverdrawSteps = 8;\n const a = 1 / numOverdrawSteps;\n\n return new ColorMode([gl.CONSTANT_COLOR, gl.ONE], new Color(a, a, a, 0), [true, true, true, true]);\n } else if (this.renderPass === 'opaque') {\n return ColorMode.unblended;\n } else {\n return ColorMode.alphaBlended;\n }\n }\n\n depthModeForSublayer(n: number, mask: DepthMaskType, func: ?DepthFuncType): $ReadOnly<DepthMode> {\n if (!this.opaquePassEnabledForLayer()) return DepthMode.disabled;\n const depth = 1 - ((1 + this.currentLayer) * this.numSublayers + n) * this.depthEpsilon;\n return new DepthMode(func || this.context.gl.LEQUAL, mask, [depth, depth]);\n }\n\n /*\n * The opaque pass and 3D layers both use the depth buffer.\n * Layers drawn above 3D layers need to be drawn using the\n * painter's algorithm so that they appear above 3D features.\n * This returns true for layers that can be drawn using the\n * opaque pass.\n */\n opaquePassEnabledForLayer(): boolean {\n return this.currentLayer < this.opaquePassCutoff;\n }\n\n render(style: Style, options: PainterOptions) {\n this.style = style;\n this.options = options;\n\n this.lineAtlas = style.lineAtlas;\n this.imageManager = style.imageManager;\n this.glyphManager = style.glyphManager;\n\n this.symbolFadeChange = style.placement.symbolFadeChange(browser.now());\n\n this.imageManager.beginFrame();\n\n const layerIds = this.style.order;\n const sourceCaches = this.style._sourceCaches;\n\n for (const id in sourceCaches) {\n const sourceCache = sourceCaches[id];\n if (sourceCache.used) {\n sourceCache.prepare(this.context);\n }\n }\n\n const coordsAscending: {[_: string]: Array<OverscaledTileID>} = {};\n const coordsDescending: {[_: string]: Array<OverscaledTileID>} = {};\n const coordsDescendingSymbol: {[_: string]: Array<OverscaledTileID>} = {};\n\n for (const id in sourceCaches) {\n const sourceCache = sourceCaches[id];\n coordsAscending[id] = sourceCache.getVisibleCoordinates();\n coordsDescending[id] = coordsAscending[id].slice().reverse();\n coordsDescendingSymbol[id] = sourceCache.getVisibleCoordinates(true).reverse();\n }\n\n this.opaquePassCutoff = Infinity;\n for (let i = 0; i < layerIds.length; i++) {\n const layerId = layerIds[i];\n if (this.style._layers[layerId].is3D()) {\n this.opaquePassCutoff = i;\n break;\n }\n }\n\n if (this.terrain) {\n this.terrain.updateTileBinding(coordsDescendingSymbol);\n // All render to texture is done in translucent pass to remove need\n // for depth buffer allocation per tile.\n this.opaquePassCutoff = 0;\n }\n\n if (this.transform.projection.name === 'globe' && !this.globeSharedBuffers) {\n this.globeSharedBuffers = new GlobeSharedBuffers(this.context);\n }\n\n // Following line is billing related code. Do not change. See LICENSE.txt\n if (!isMapAuthenticated(this.context.gl)) return;\n\n // Offscreen pass ===============================================\n // We first do all rendering that requires rendering to a separate\n // framebuffer, and then save those for rendering back to the map\n // later: in doing this we avoid doing expensive framebuffer restores.\n this.renderPass = 'offscreen';\n\n for (const layerId of layerIds) {\n const layer = this.style._layers[layerId];\n const sourceCache = style._getLayerSourceCache(layer);\n if (!layer.hasOffscreenPass() || layer.isHidden(this.transform.zoom)) continue;\n\n const coords = sourceCache ? coordsDescending[sourceCache.id] : undefined;\n if (!(layer.type === 'custom' || layer.isSky()) && !(coords && coords.length)) continue;\n\n this.renderLayer(this, sourceCache, layer, coords);\n }\n\n this.depthRangeFor3D = [0, 1 - ((style.order.length + 2) * this.numSublayers * this.depthEpsilon)];\n\n // Terrain depth offscreen render pass ==========================\n // With terrain on, renders the depth buffer into a texture.\n // This texture is used for occlusion testing (labels)\n if (this.terrain && (this.style.hasSymbolLayers() || this.style.hasCircleLayers())) {\n this.terrain.drawDepth();\n }\n\n // Rebind the main framebuffer now that all offscreen layers have been rendered:\n this.context.bindFramebuffer.set(null);\n this.context.viewport.set([0, 0, this.width, this.height]);\n\n // Clear buffers in preparation for drawing to the main framebuffer\n this.context.clear({color: options.showOverdrawInspector ? Color.black : Color.transparent, depth: 1});\n this.clearStencil();\n\n this._showOverdrawInspector = options.showOverdrawInspector;\n\n // Opaque pass ===============================================\n // Draw opaque layers top-to-bottom first.\n this.renderPass = 'opaque';\n\n if (!this.terrain) {\n for (this.currentLayer = layerIds.length - 1; this.currentLayer >= 0; this.currentLayer--) {\n const layer = this.style._layers[layerIds[this.currentLayer]];\n const sourceCache = style._getLayerSourceCache(layer);\n if (layer.isSky()) continue;\n const coords = sourceCache ? coordsDescending[sourceCache.id] : undefined;\n\n this._renderTileClippingMasks(layer, sourceCache, coords);\n this.renderLayer(this, sourceCache, layer, coords);\n }\n }\n\n if (this.style.fog && this.transform.projection.supportsFog) {\n drawAtmosphere(this, this.style.fog);\n }\n\n // Sky pass ======================================================\n // Draw all sky layers bottom to top.\n // They are drawn at max depth, they are drawn after opaque and before\n // translucent to fail depth testing and mix with translucent objects.\n this.renderPass = 'sky';\n const isTransitioning = globeToMercatorTransition(this.transform.zoom) > 0.0;\n if ((isTransitioning || this.transform.projection.name !== 'globe') && this.transform.isHorizonVisible()) {\n for (this.currentLayer = 0; this.currentLayer < layerIds.length; this.currentLayer++) {\n const layer = this.style._layers[layerIds[this.currentLayer]];\n const sourceCache = style._getLayerSourceCache(layer);\n if (!layer.isSky()) continue;\n const coords = sourceCache ? coordsDescending[sourceCache.id] : undefined;\n\n this.renderLayer(this, sourceCache, layer, coords);\n }\n }\n\n // Translucent pass ===============================================\n // Draw all other layers bottom-to-top.\n this.renderPass = 'translucent';\n\n this.currentLayer = 0;\n while (this.currentLayer < layerIds.length) {\n const layer = this.style._layers[layerIds[this.currentLayer]];\n const sourceCache = style._getLayerSourceCache(layer);\n\n // Nothing to draw in translucent pass for sky layers, advance\n if (layer.isSky()) {\n ++this.currentLayer;\n continue;\n }\n\n // With terrain on and for draped layers only, issue rendering and progress\n // this.currentLayer until the next non-draped layer.\n // Otherwise we interleave terrain draped render with non-draped layers on top\n if (this.terrain && this.style.isLayerDraped(layer)) {\n if (layer.isHidden(this.transform.zoom)) {\n ++this.currentLayer;\n continue;\n }\n const terrain = (((this.terrain): any): Terrain);\n const prevLayer = this.currentLayer;\n this.currentLayer = terrain.renderBatch(this.currentLayer);\n assert(this.context.bindFramebuffer.current === null);\n assert(this.currentLayer > prevLayer);\n continue;\n }\n\n // For symbol layers in the translucent pass, we add extra tiles to the renderable set\n // for cross-tile symbol fading. Symbol layers don't use tile clipping, so no need to render\n // separate clipping masks\n const coords = sourceCache ?\n (layer.type === 'symbol' ? coordsDescendingSymbol : coordsDescending)[sourceCache.id] :\n undefined;\n\n this._renderTileClippingMasks(layer, sourceCache, sourceCache ? coordsAscending[sourceCache.id] : undefined);\n this.renderLayer(this, sourceCache, layer, coords);\n\n ++this.currentLayer;\n }\n\n if (this.terrain) {\n this.terrain.postRender();\n }\n\n if (this.options.showTileBoundaries || this.options.showQueryGeometry) {\n //Use source with highest maxzoom\n let selectedSource = null;\n const layers = values(this.style._layers);\n layers.forEach((layer) => {\n const sourceCache = style._getLayerSourceCache(layer);\n if (sourceCache && !layer.isHidden(this.transform.zoom)) {\n if (!selectedSource || (selectedSource.getSource().maxzoom < sourceCache.getSource().maxzoom)) {\n selectedSource = sourceCache;\n }\n }\n });\n if (selectedSource) {\n if (this.options.showTileBoundaries) {\n draw.debug(this, selectedSource, selectedSource.getVisibleCoordinates());\n }\n\n Debug.run(() => {\n if (this.options.showQueryGeometry && selectedSource) {\n drawDebugQueryGeometry(this, selectedSource, selectedSource.getVisibleCoordinates());\n }\n });\n }\n }\n\n if (this.options.showPadding) {\n drawDebugPadding(this);\n }\n\n // Set defaults for most GL values so that anyone using the state after the render\n // encounters more expected values.\n this.context.setDefault();\n this.frameCounter = (this.frameCounter + 1) % Number.MAX_SAFE_INTEGER;\n\n if (this.tileLoaded && this.options.speedIndexTiming) {\n this.loadTimeStamps.push(window.performance.now());\n this.saveCanvasCopy();\n }\n }\n\n renderLayer(painter: Painter, sourceCache?: SourceCache, layer: StyleLayer, coords?: Array<OverscaledTileID>) {\n if (layer.isHidden(this.transform.zoom)) return;\n if (layer.type !== 'background' && layer.type !== 'sky' && layer.type !== 'custom' && !(coords && coords.length)) return;\n this.id = layer.id;\n\n this.gpuTimingStart(layer);\n if (!painter.transform.projection.unsupportedLayers || !painter.transform.projection.unsupportedLayers.includes(layer.type)) {\n draw[layer.type](painter, sourceCache, layer, coords, this.style.placement.variableOffsets, this.options.isInitialLoad);\n }\n this.gpuTimingEnd();\n }\n\n gpuTimingStart(layer: StyleLayer) {\n if (!this.options.gpuTiming) return;\n const ext = this.context.extTimerQuery;\n // This tries to time the draw call itself, but note that the cost for drawing a layer\n // may be dominated by the cost of uploading vertices to the GPU.\n // To instrument that, we'd need to pass the layerTimers object down into the bucket\n // uploading logic.\n let layerTimer = this.gpuTimers[layer.id];\n if (!layerTimer) {\n layerTimer = this.gpuTimers[layer.id] = {\n calls: 0,\n cpuTime: 0,\n query: ext.createQueryEXT()\n };\n }\n layerTimer.calls++;\n ext.beginQueryEXT(ext.TIME_ELAPSED_EXT, layerTimer.query);\n }\n\n gpuTimingDeferredRenderStart() {\n if (this.options.gpuTimingDeferredRender) {\n const ext = this.context.extTimerQuery;\n const query = ext.createQueryEXT();\n this.deferredRenderGpuTimeQueries.push(query);\n ext.beginQueryEXT(ext.TIME_ELAPSED_EXT, query);\n }\n }\n\n gpuTimingDeferredRenderEnd() {\n if (!this.options.gpuTimingDeferredRender) return;\n const ext = this.context.extTimerQuery;\n ext.endQueryEXT(ext.TIME_ELAPSED_EXT);\n }\n\n gpuTimingEnd() {\n if (!this.options.gpuTiming) return;\n const ext = this.context.extTimerQuery;\n ext.endQueryEXT(ext.TIME_ELAPSED_EXT);\n }\n\n collectGpuTimers(): GPUTimers {\n const currentLayerTimers = this.gpuTimers;\n this.gpuTimers = {};\n return currentLayerTimers;\n }\n\n collectDeferredRenderGpuQueries(): Array<any> {\n const currentQueries = this.deferredRenderGpuTimeQueries;\n this.deferredRenderGpuTimeQueries = [];\n return currentQueries;\n }\n\n queryGpuTimers(gpuTimers: GPUTimers): {[layerId: string]: number} {\n const layers = {};\n for (const layerId in gpuTimers) {\n const gpuTimer = gpuTimers[layerId];\n const ext = this.context.extTimerQuery;\n const gpuTime = ext.getQueryObjectEXT(gpuTimer.query, ext.QUERY_RESULT_EXT) / (1000 * 1000);\n ext.deleteQueryEXT(gpuTimer.query);\n layers[layerId] = (gpuTime: number);\n }\n return layers;\n }\n\n queryGpuTimeDeferredRender(gpuQueries: Array<any>): number {\n if (!this.options.gpuTimingDeferredRender) return 0;\n const ext = this.context.extTimerQuery;\n\n let gpuTime = 0;\n for (const query of gpuQueries) {\n gpuTime += ext.getQueryObjectEXT(query, ext.QUERY_RESULT_EXT) / (1000 * 1000);\n ext.deleteQueryEXT(query);\n }\n\n return gpuTime;\n }\n\n /**\n * Transform a matrix to incorporate the *-translate and *-translate-anchor properties into it.\n * @param inViewportPixelUnitsUnits True when the units accepted by the matrix are in viewport pixels instead of tile units.\n * @returns {Float32Array} matrix\n * @private\n */\n translatePosMatrix(matrix: Float32Array, tile: Tile, translate: [number, number], translateAnchor: 'map' | 'viewport', inViewportPixelUnitsUnits?: boolean): Float32Array {\n if (!translate[0] && !translate[1]) return matrix;\n\n const angle = inViewportPixelUnitsUnits ?\n (translateAnchor === 'map' ? this.transform.angle : 0) :\n (translateAnchor === 'viewport' ? -this.transform.angle : 0);\n\n if (angle) {\n const sinA = Math.sin(angle);\n const cosA = Math.cos(angle);\n translate = [\n translate[0] * cosA - translate[1] * sinA,\n translate[0] * sinA + translate[1] * cosA\n ];\n }\n\n const translation = [\n inViewportPixelUnitsUnits ? translate[0] : pixelsToTileUnits(tile, translate[0], this.transform.zoom),\n inViewportPixelUnitsUnits ? translate[1] : pixelsToTileUnits(tile, translate[1], this.transform.zoom),\n 0\n ];\n\n const translatedMatrix = new Float32Array(16);\n mat4.translate(translatedMatrix, matrix, translation);\n return translatedMatrix;\n }\n\n saveTileTexture(texture: Texture) {\n const textures = this._tileTextures[texture.size[0]];\n if (!textures) {\n this._tileTextures[texture.size[0]] = [texture];\n } else {\n textures.push(texture);\n }\n }\n\n getTileTexture(size: number): null | Texture {\n const textures = this._tileTextures[size];\n return textures && textures.length > 0 ? textures.pop() : null;\n }\n\n /**\n * Checks whether a pattern image is needed, and if it is, whether it is not loaded.\n *\n* @returns true if a needed image is missing and rendering needs to be skipped.\n * @private\n */\n isPatternMissing(image: ?CrossFaded<ResolvedImage>): boolean {\n if (!image) return false;\n if (!image.from || !image.to) return true;\n const imagePosA = this.imageManager.getPattern(image.from.toString());\n const imagePosB = this.imageManager.getPattern(image.to.toString());\n return !imagePosA || !imagePosB;\n }\n\n /**\n * Returns #defines that would need to be injected into every Program\n * based on the current state of Painter.\n *\n * @returns {string[]}\n * @private\n */\n currentGlobalDefines(): string[] {\n const terrain = this.terrain && !this.terrain.renderingToTexture; // Enables elevation sampling in vertex shader.\n const rtt = this.terrain && this.terrain.renderingToTexture;\n const fog = this.style && this.style.fog;\n const defines = [];\n\n if (terrain) defines.push('TERRAIN');\n // When terrain is active, fog is rendered as part of draping, not as part of tile\n // rendering. Removing the fog flag during tile rendering avoids additional defines.\n if (fog && !rtt && fog.getOpacity(this.transform.pitch) !== 0.0) {\n defines.push('FOG');\n }\n if (rtt) defines.push('RENDER_TO_TEXTURE');\n if (this._showOverdrawInspector) defines.push('OVERDRAW_INSPECTOR');\n return defines;\n }\n\n useProgram(name: string, programConfiguration: ?ProgramConfiguration, fixedDefines: ?DynamicDefinesType[]): Program<any> {\n this.cache = this.cache || {};\n const defines = (((fixedDefines || []): any): string[]);\n\n const globalDefines = this.currentGlobalDefines();\n const allDefines = globalDefines.concat(defines);\n const key = Program.cacheKey(name, allDefines, programConfiguration);\n\n if (!this.cache[key]) {\n this.cache[key] = new Program(this.context, name, shaders[name], programConfiguration, programUniforms[name], allDefines);\n }\n return this.cache[key];\n }\n\n /*\n * Reset some GL state to default values to avoid hard-to-debug bugs\n * in custom layers.\n */\n setCustomLayerDefaults() {\n // Prevent custom layers from unintentionally modify the last VAO used.\n // All other state is state is restored on it's own, but for VAOs it's\n // simpler to unbind so that we don't have to track the state of VAOs.\n this.context.unbindVAO();\n\n // The default values for this state is meaningful and often expected.\n // Leaving this state dirty could cause a lot of confusion for users.\n this.context.cullFace.setDefault();\n this.context.frontFace.setDefault();\n this.context.cullFaceSide.setDefault();\n this.context.activeTexture.setDefault();\n this.context.pixelStoreUnpack.setDefault();\n this.context.pixelStoreUnpackPremultiplyAlpha.setDefault();\n this.context.pixelStoreUnpackFlipY.setDefault();\n }\n\n /*\n * Set GL state that is shared by all layers.\n */\n setBaseState() {\n const gl = this.context.gl;\n this.context.cullFace.set(false);\n this.context.viewport.set([0, 0, this.width, this.height]);\n this.context.blendEquation.set(gl.FUNC_ADD);\n }\n\n initDebugOverlayCanvas() {\n if (this.debugOverlayCanvas == null) {\n this.debugOverlayCanvas = window.document.createElement('canvas');\n this.debugOverlayCanvas.width = 512;\n this.debugOverlayCanvas.height = 512;\n const gl = this.context.gl;\n this.debugOverlayTexture = new Texture(this.context, this.debugOverlayCanvas, gl.RGBA);\n }\n }\n\n destroy() {\n if (this._terrain) {\n this._terrain.destroy();\n }\n if (this.globeSharedBuffers) {\n this.globeSharedBuffers.destroy();\n }\n this.emptyTexture.destroy();\n if (this.debugOverlayTexture) {\n this.debugOverlayTexture.destroy();\n }\n if (this.atmosphereBuffer) {\n this.atmosphereBuffer.destroy();\n }\n }\n\n prepareDrawTile() {\n if (this.terrain) {\n this.terrain.prepareDrawTile();\n }\n }\n\n prepareDrawProgram(context: Context, program: Program<*>, tileID: ?UnwrappedTileID) {\n\n // Fog is not enabled when rendering to texture so we\n // can safely skip uploading uniforms in that case\n if (this.terrain && this.terrain.renderingToTexture) {\n return;\n }\n\n const fog = this.style.fog;\n\n if (fog) {\n const fogOpacity = fog.getOpacity(this.transform.pitch);\n const fogUniforms = fogUniformValues(\n this, fog, tileID, fogOpacity,\n this.transform.frustumCorners.TL,\n this.transform.frustumCorners.TR,\n this.transform.frustumCorners.BR,\n this.transform.frustumCorners.BL,\n this.transform.globeCenterInViewSpace,\n this.transform.globeRadius,\n [\n this.transform.width * browser.devicePixelRatio,\n this.transform.height * browser.devicePixelRatio\n ]);\n\n program.setFogUniformValues(context, fogUniforms);\n }\n }\n\n setTileLoadedFlag(flag: boolean) {\n this.tileLoaded = flag;\n }\n\n saveCanvasCopy() {\n this.frameCopies.push(this.canvasCopy());\n this.tileLoaded = false;\n }\n\n canvasCopy(): ?WebGLTexture {\n const gl = this.context.gl;\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.copyTexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, 0);\n return texture;\n }\n\n getCanvasCopiesAndTimestamps(): CanvasCopyInstances {\n return {\n canvasCopies: this.frameCopies,\n timeStamps: this.loadTimeStamps\n };\n }\n\n averageElevationNeedsEasing(): boolean {\n if (!this.transform._elevation) return false;\n\n const fog = this.style && this.style.fog;\n if (!fog) return false;\n\n const fogOpacity = fog.getOpacity(this.transform.pitch);\n if (fogOpacity === 0) return false;\n\n return true;\n }\n\n getBackgroundTiles(): {[key: number]: Tile} {\n const oldTiles = this._backgroundTiles;\n const newTiles = this._backgroundTiles = {};\n\n const tileSize = 512;\n const tileIDs = this.transform.coveringTiles({tileSize});\n for (const tileID of tileIDs) {\n newTiles[tileID.key] = oldTiles[tileID.key] || new Tile(tileID, tileSize, this.transform.tileZoom, this);\n }\n return newTiles;\n }\n\n clearBackgroundTiles() {\n this._backgroundTiles = {};\n }\n}\n\nexport default Painter;\n","// @flow\n\nimport StencilMode from '../gl/stencil_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport Program from './program.js';\nimport {circleUniformValues, circleDefinesValues} from './program/circle_program.js';\nimport SegmentVector from '../data/segment.js';\nimport {OverscaledTileID} from '../source/tile_id.js';\nimport {mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type CircleStyleLayer from '../style/style_layer/circle_style_layer.js';\nimport type CircleBucket from '../data/bucket/circle_bucket.js';\nimport type ProgramConfiguration from '../data/program_configuration.js';\nimport type VertexBuffer from '../gl/vertex_buffer.js';\nimport type IndexBuffer from '../gl/index_buffer.js';\nimport type {UniformValues} from './uniform_binding.js';\nimport type {CircleUniformsType} from './program/circle_program.js';\nimport type Tile from '../source/tile.js';\nimport type {DynamicDefinesType} from './program/program_uniforms.js';\n\nexport default drawCircles;\n\ntype TileRenderState = {\n programConfiguration: ProgramConfiguration,\n program: Program<*>,\n layoutVertexBuffer: VertexBuffer,\n globeExtVertexBuffer: ?VertexBuffer,\n indexBuffer: IndexBuffer,\n uniformValues: UniformValues<CircleUniformsType>,\n tile: Tile\n};\n\ntype SegmentsTileRenderState = {\n segments: SegmentVector,\n sortKey: number,\n state: TileRenderState\n};\n\nfunction drawCircles(painter: Painter, sourceCache: SourceCache, layer: CircleStyleLayer, coords: Array<OverscaledTileID>) {\n if (painter.renderPass !== 'translucent') return;\n\n const opacity = layer.paint.get('circle-opacity');\n const strokeWidth = layer.paint.get('circle-stroke-width');\n const strokeOpacity = layer.paint.get('circle-stroke-opacity');\n const sortFeaturesByKey = layer.layout.get('circle-sort-key').constantOr(1) !== undefined;\n\n if (opacity.constantOr(1) === 0 && (strokeWidth.constantOr(1) === 0 || strokeOpacity.constantOr(1) === 0)) {\n return;\n }\n\n const context = painter.context;\n const gl = context.gl;\n const tr = painter.transform;\n\n const depthMode = painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n // Turn off stencil testing to allow circles to be drawn across boundaries,\n // so that large circles are not clipped to tiles\n const stencilMode = StencilMode.disabled;\n const colorMode = painter.colorModeForRenderPass();\n const isGlobeProjection = tr.projection.name === 'globe';\n const mercatorCenter = [mercatorXfromLng(tr.center.lng), mercatorYfromLat(tr.center.lat)];\n\n const segmentsRenderStates: Array<SegmentsTileRenderState> = [];\n\n for (let i = 0; i < coords.length; i++) {\n const coord = coords[i];\n\n const tile = sourceCache.getTile(coord);\n const bucket: ?CircleBucket<*> = (tile.getBucket(layer): any);\n if (!bucket || bucket.projection.name !== tr.projection.name) continue;\n\n const programConfiguration = bucket.programConfigurations.get(layer.id);\n const definesValues = circleDefinesValues(layer);\n if (isGlobeProjection) {\n definesValues.push('PROJECTION_GLOBE_VIEW');\n }\n const program = painter.useProgram('circle', programConfiguration, ((definesValues: any): DynamicDefinesType[]));\n const layoutVertexBuffer = bucket.layoutVertexBuffer;\n const globeExtVertexBuffer = bucket.globeExtVertexBuffer;\n const indexBuffer = bucket.indexBuffer;\n const invMatrix = tr.projection.createInversionMatrix(tr, coord.canonical);\n const uniformValues = circleUniformValues(painter, coord, tile, invMatrix, mercatorCenter, layer);\n\n const state: TileRenderState = {\n programConfiguration,\n program,\n layoutVertexBuffer,\n globeExtVertexBuffer,\n indexBuffer,\n uniformValues,\n tile\n };\n\n if (sortFeaturesByKey) {\n const oldSegments = bucket.segments.get();\n for (const segment of oldSegments) {\n segmentsRenderStates.push({\n segments: new SegmentVector([segment]),\n sortKey: ((segment.sortKey: any): number),\n state\n });\n }\n } else {\n segmentsRenderStates.push({\n segments: bucket.segments,\n sortKey: 0,\n state\n });\n }\n\n }\n\n if (sortFeaturesByKey) {\n segmentsRenderStates.sort((a, b) => a.sortKey - b.sortKey);\n }\n\n const terrainOptions = {useDepthForOcclusion: !isGlobeProjection};\n\n for (const segmentsState of segmentsRenderStates) {\n const {programConfiguration, program, layoutVertexBuffer, globeExtVertexBuffer, indexBuffer, uniformValues, tile} = segmentsState.state;\n const segments = segmentsState.segments;\n\n if (painter.terrain) painter.terrain.setupElevationDraw(tile, program, terrainOptions);\n\n painter.prepareDrawProgram(context, program, tile.tileID.toUnwrapped());\n\n program.draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n uniformValues, layer.id,\n layoutVertexBuffer, indexBuffer, segments,\n layer.paint, tr.zoom, programConfiguration,\n isGlobeProjection ? globeExtVertexBuffer : null);\n }\n}\n","// @flow\n\nimport Texture from './texture.js';\nimport Color from '../style-spec/util/color.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport ColorMode from '../gl/color_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {\n heatmapUniformValues,\n heatmapTextureUniformValues\n} from './program/heatmap_program.js';\nimport {mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type HeatmapStyleLayer from '../style/style_layer/heatmap_style_layer.js';\nimport type HeatmapBucket from '../data/bucket/heatmap_bucket.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\n\nexport default drawHeatmap;\n\nfunction drawHeatmap(painter: Painter, sourceCache: SourceCache, layer: HeatmapStyleLayer, coords: Array<OverscaledTileID>) {\n if (layer.paint.get('heatmap-opacity') === 0) {\n return;\n }\n\n if (painter.renderPass === 'offscreen') {\n const context = painter.context;\n const gl = context.gl;\n\n // Allow kernels to be drawn across boundaries, so that\n // large kernels are not clipped to tiles\n const stencilMode = StencilMode.disabled;\n // Turn on additive blending for kernels, which is a key aspect of kernel density estimation formula\n const colorMode = new ColorMode([gl.ONE, gl.ONE], Color.transparent, [true, true, true, true]);\n const resolutionScaling = painter.transform.projection.name === 'globe' ? 0.5 : 0.25;\n\n bindFramebuffer(context, painter, layer, resolutionScaling);\n\n context.clear({color: Color.transparent});\n\n const tr = painter.transform;\n\n const isGlobeProjection = tr.projection.name === 'globe';\n\n const definesValues = isGlobeProjection ? ['PROJECTION_GLOBE_VIEW'] : null;\n const cullMode = isGlobeProjection ? CullFaceMode.frontCCW : CullFaceMode.disabled;\n\n const mercatorCenter = [mercatorXfromLng(tr.center.lng), mercatorYfromLat(tr.center.lat)];\n\n for (let i = 0; i < coords.length; i++) {\n const coord = coords[i];\n\n // Skip tiles that have uncovered parents to avoid flickering; we don't need\n // to use complex tile masking here because the change between zoom levels is subtle,\n // so it's fine to simply render the parent until all its 4 children are loaded\n if (sourceCache.hasRenderableParent(coord)) continue;\n\n const tile = sourceCache.getTile(coord);\n const bucket: ?HeatmapBucket = (tile.getBucket(layer): any);\n if (!bucket || bucket.projection.name !== tr.projection.name) continue;\n\n const programConfiguration = bucket.programConfigurations.get(layer.id);\n const program = painter.useProgram('heatmap', programConfiguration, definesValues);\n const {zoom} = painter.transform;\n if (painter.terrain) painter.terrain.setupElevationDraw(tile, program);\n\n painter.prepareDrawProgram(context, program, coord.toUnwrapped());\n\n const invMatrix = tr.projection.createInversionMatrix(tr, coord.canonical);\n\n program.draw(context, gl.TRIANGLES, DepthMode.disabled, stencilMode, colorMode, cullMode,\n heatmapUniformValues(painter, coord,\n tile, invMatrix, mercatorCenter, zoom, layer.paint.get('heatmap-intensity')),\n layer.id, bucket.layoutVertexBuffer, bucket.indexBuffer,\n bucket.segments, layer.paint, painter.transform.zoom,\n programConfiguration,\n isGlobeProjection ? bucket.globeExtVertexBuffer : null);\n }\n\n context.viewport.set([0, 0, painter.width, painter.height]);\n\n } else if (painter.renderPass === 'translucent') {\n painter.context.setColorMode(painter.colorModeForRenderPass());\n renderTextureToMap(painter, layer);\n }\n}\n\nfunction bindFramebuffer(context, painter, layer, scaling) {\n const gl = context.gl;\n const width = painter.width * scaling;\n const height = painter.height * scaling;\n\n context.activeTexture.set(gl.TEXTURE1);\n context.viewport.set([0, 0, width, height]);\n\n let fbo = layer.heatmapFbo;\n\n if (!fbo || (fbo && (fbo.width !== width || fbo.height !== height))) {\n if (fbo) { fbo.destroy(); }\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n\n fbo = layer.heatmapFbo = context.createFramebuffer(width, height, false);\n\n bindTextureToFramebuffer(context, painter, texture, fbo, width, height);\n\n } else {\n gl.bindTexture(gl.TEXTURE_2D, fbo.colorAttachment.get());\n context.bindFramebuffer.set(fbo.framebuffer);\n }\n}\n\nfunction bindTextureToFramebuffer(context, painter, texture, fbo, width, height) {\n const gl = context.gl;\n // Use the higher precision half-float texture where available (producing much smoother looking heatmaps);\n // Otherwise, fall back to a low precision texture\n const internalFormat = context.extRenderToTextureHalfFloat ? context.extTextureHalfFloat.HALF_FLOAT_OES : gl.UNSIGNED_BYTE;\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, internalFormat, null);\n fbo.colorAttachment.set(texture);\n}\n\nfunction renderTextureToMap(painter, layer) {\n const context = painter.context;\n const gl = context.gl;\n\n // Here we bind two different textures from which we'll sample in drawing\n // heatmaps: the kernel texture, prepared in the offscreen pass, and a\n // color ramp texture.\n const fbo = layer.heatmapFbo;\n if (!fbo) return;\n context.activeTexture.set(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, fbo.colorAttachment.get());\n\n context.activeTexture.set(gl.TEXTURE1);\n let colorRampTexture = layer.colorRampTexture;\n if (!colorRampTexture) {\n colorRampTexture = layer.colorRampTexture = new Texture(context, layer.colorRamp, gl.RGBA);\n }\n colorRampTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n\n painter.useProgram('heatmapTexture').draw(context, gl.TRIANGLES,\n DepthMode.disabled, StencilMode.disabled, painter.colorModeForRenderPass(), CullFaceMode.disabled,\n heatmapTextureUniformValues(painter, layer, 0, 1),\n layer.id, painter.viewportBuffer, painter.quadTriangleIndexBuffer,\n painter.viewportSegments, layer.paint, painter.transform.zoom);\n}\n","// @flow\n\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport Texture from './texture.js';\nimport {\n lineUniformValues,\n linePatternUniformValues,\n lineDefinesValues\n} from './program/line_program.js';\nimport browser from '../util/browser.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type LineStyleLayer from '../style/style_layer/line_style_layer.js';\nimport type LineBucket from '../data/bucket/line_bucket.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport type {DynamicDefinesType} from './program/program_uniforms.js';\nimport {clamp, nextPowerOfTwo} from '../util/util.js';\nimport {renderColorRamp} from '../util/color_ramp.js';\nimport EXTENT from '../data/extent.js';\n\nexport default function drawLine(painter: Painter, sourceCache: SourceCache, layer: LineStyleLayer, coords: Array<OverscaledTileID>) {\n if (painter.renderPass !== 'translucent') return;\n\n const opacity = layer.paint.get('line-opacity');\n const width = layer.paint.get('line-width');\n if (opacity.constantOr(1) === 0 || width.constantOr(1) === 0) return;\n\n const depthMode = painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n const colorMode = painter.colorModeForRenderPass();\n const pixelRatio = (painter.terrain && painter.terrain.renderingToTexture) ? 1.0 : browser.devicePixelRatio;\n\n const dasharrayProperty = layer.paint.get('line-dasharray');\n const dasharray = dasharrayProperty.constantOr((1: any));\n const capProperty = layer.layout.get('line-cap');\n const patternProperty = layer.paint.get('line-pattern');\n const image = patternProperty.constantOr((1: any));\n\n const gradient = layer.paint.get('line-gradient');\n const crossfade = layer.getCrossfadeParameters();\n\n const programId = image ? 'linePattern' : 'line';\n\n const context = painter.context;\n const gl = context.gl;\n\n const definesValues = lineDefinesValues(layer);\n let useStencilMaskRenderPass = definesValues.includes('RENDER_LINE_ALPHA_DISCARD');\n if (painter.terrain && painter.terrain.clipOrMaskOverlapStencilType()) {\n useStencilMaskRenderPass = false;\n }\n\n for (const coord of coords) {\n const tile = sourceCache.getTile(coord);\n if (image && !tile.patternsLoaded()) continue;\n\n const bucket: ?LineBucket = (tile.getBucket(layer): any);\n if (!bucket) continue;\n painter.prepareDrawTile();\n\n const programConfiguration = bucket.programConfigurations.get(layer.id);\n const program = painter.useProgram(programId, programConfiguration, ((definesValues: any): DynamicDefinesType[]));\n\n const constantPattern = patternProperty.constantOr(null);\n if (constantPattern && tile.imageAtlas) {\n const atlas = tile.imageAtlas;\n const posTo = atlas.patternPositions[constantPattern.to.toString()];\n const posFrom = atlas.patternPositions[constantPattern.from.toString()];\n if (posTo && posFrom) programConfiguration.setConstantPatternPositions(posTo, posFrom);\n }\n\n const constantDash = dasharrayProperty.constantOr(null);\n const constantCap = capProperty.constantOr((null: any));\n\n if (!image && constantDash && constantCap && tile.lineAtlas) {\n const atlas = tile.lineAtlas;\n const posTo = atlas.getDash(constantDash.to, constantCap);\n const posFrom = atlas.getDash(constantDash.from, constantCap);\n if (posTo && posFrom) programConfiguration.setConstantPatternPositions(posTo, posFrom);\n }\n\n let [trimStart, trimEnd] = layer.paint.get('line-trim-offset');\n // When line cap is 'round' or 'square', the whole line progress will beyond 1.0 or less than 0.0.\n // If trim_offset begin is line begin (0.0), or trim_offset end is line end (1.0), adjust the trim\n // offset with fake offset shift so that the line_progress < 0.0 or line_progress > 1.0 part will be\n // correctly covered.\n if (constantCap === 'round' || constantCap === 'square') {\n // Fake the percentage so that it will cover the round/square cap that is beyond whole line\n const fakeOffsetShift = 1.0;\n // To make sure that the trim offset range is effecive\n if (trimStart !== trimEnd) {\n if (trimStart === 0.0) {\n trimStart -= fakeOffsetShift;\n }\n if (trimEnd === 1.0) {\n trimEnd += fakeOffsetShift;\n }\n }\n }\n\n const matrix = painter.terrain ? coord.projMatrix : null;\n const uniformValues = image ?\n linePatternUniformValues(painter, tile, layer, crossfade, matrix, pixelRatio) :\n lineUniformValues(painter, tile, layer, crossfade, matrix, bucket.lineClipsArray.length, pixelRatio, [trimStart, trimEnd]);\n\n if (gradient) {\n const layerGradient = bucket.gradients[layer.id];\n let gradientTexture = layerGradient.texture;\n if (layer.gradientVersion !== layerGradient.version) {\n let textureResolution = 256;\n if (layer.stepInterpolant) {\n const sourceMaxZoom = sourceCache.getSource().maxzoom;\n const potentialOverzoom = coord.canonical.z === sourceMaxZoom ?\n Math.ceil(1 << (painter.transform.maxZoom - coord.canonical.z)) : 1;\n const lineLength = bucket.maxLineLength / EXTENT;\n // Logical pixel tile size is 512px, and 1024px right before current zoom + 1\n const maxTilePixelSize = 1024;\n // Maximum possible texture coverage heuristic, bound by hardware max texture size\n const maxTextureCoverage = lineLength * maxTilePixelSize * potentialOverzoom;\n textureResolution = clamp(nextPowerOfTwo(maxTextureCoverage), 256, context.maxTextureSize);\n }\n layerGradient.gradient = renderColorRamp({\n expression: layer.gradientExpression(),\n evaluationKey: 'lineProgress',\n resolution: textureResolution,\n image: layerGradient.gradient || undefined,\n clips: bucket.lineClipsArray\n });\n if (layerGradient.texture) {\n layerGradient.texture.update(layerGradient.gradient);\n } else {\n layerGradient.texture = new Texture(context, layerGradient.gradient, gl.RGBA);\n }\n layerGradient.version = layer.gradientVersion;\n gradientTexture = layerGradient.texture;\n }\n context.activeTexture.set(gl.TEXTURE1);\n gradientTexture.bind(layer.stepInterpolant ? gl.NEAREST : gl.LINEAR, gl.CLAMP_TO_EDGE);\n }\n if (dasharray) {\n context.activeTexture.set(gl.TEXTURE0);\n tile.lineAtlasTexture.bind(gl.LINEAR, gl.REPEAT);\n programConfiguration.updatePaintBuffers(crossfade);\n }\n if (image) {\n context.activeTexture.set(gl.TEXTURE0);\n tile.imageAtlasTexture.bind(gl.LINEAR, gl.CLAMP_TO_EDGE);\n programConfiguration.updatePaintBuffers(crossfade);\n }\n\n painter.prepareDrawProgram(context, program, coord.toUnwrapped());\n\n const renderLine = (stencilMode) => {\n program.draw(context, gl.TRIANGLES, depthMode,\n stencilMode, colorMode, CullFaceMode.disabled, uniformValues,\n layer.id, bucket.layoutVertexBuffer, bucket.indexBuffer, bucket.segments,\n layer.paint, painter.transform.zoom, programConfiguration, bucket.layoutVertexBuffer2);\n };\n\n if (useStencilMaskRenderPass) {\n const stencilId = painter.stencilModeForClipping(coord).ref;\n // When terrain is on, ensure that the stencil buffer has 0 values.\n // As stencil may be disabled when it is not in overlapping stencil\n // mode. Refer to stencilModeForRTTOverlap logic.\n if (stencilId === 0 && painter.terrain) {\n context.clear({stencil: 0});\n }\n const stencilFunc = {func: gl.EQUAL, mask: 0xFF};\n\n // Allow line geometry fragment to be drawn only once:\n // - Invert the stencil identifier left by stencil clipping, this\n // ensures that we are not conflicting with neighborhing tiles.\n // - Draw Anti-Aliased pixels with a threshold set to 0.8, this\n // may draw Anti-Aliased pixels more than once, but due to their\n // low opacity, these pixels are usually invisible and potential\n // overlapping pixel artifacts locally minimized.\n uniformValues['u_alpha_discard_threshold'] = 0.8;\n renderLine(new StencilMode(stencilFunc, stencilId, 0xFF, gl.KEEP, gl.KEEP, gl.INVERT));\n uniformValues['u_alpha_discard_threshold'] = 0.0;\n renderLine(new StencilMode(stencilFunc, stencilId, 0xFF, gl.KEEP, gl.KEEP, gl.KEEP));\n } else {\n renderLine(painter.stencilModeForClipping(coord));\n }\n }\n\n // When rendering to stencil, reset the mask to make sure that the tile\n // clipping reverts the stencil mask we may have drawn in the buffer.\n // The stamp could be reverted by an extra draw call of line geometry,\n // but tile clipping drawing is usually faster to draw than lines.\n if (useStencilMaskRenderPass) {\n painter.resetStencilClippingMasks();\n if (painter.terrain) { context.clear({stencil: 0}); }\n }\n}\n","// @flow\n\nimport ImageSource from '../source/image_source.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {rasterUniformValues} from './program/raster_program.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type RasterStyleLayer from '../style/style_layer/raster_style_layer.js';\nimport type {OverscaledTileID} from '../source/tile_id.js';\nimport rasterFade from './raster_fade.js';\n\nexport default drawRaster;\n\nfunction drawRaster(painter: Painter, sourceCache: SourceCache, layer: RasterStyleLayer, tileIDs: Array<OverscaledTileID>, variableOffsets: any, isInitialLoad: boolean) {\n if (painter.renderPass !== 'translucent') return;\n if (layer.paint.get('raster-opacity') === 0) return;\n if (!tileIDs.length) return;\n\n const context = painter.context;\n const gl = context.gl;\n const source = sourceCache.getSource();\n const program = painter.useProgram('raster');\n\n const colorMode = painter.colorModeForRenderPass();\n\n // When rendering to texture, coordinates are already sorted: primary by\n // proxy id and secondary sort is by Z.\n const renderingToTexture = painter.terrain && painter.terrain.renderingToTexture;\n\n const [stencilModes, coords] = source instanceof ImageSource || renderingToTexture ? [{}, tileIDs] :\n painter.stencilConfigForOverlap(tileIDs);\n\n const minTileZ = coords[coords.length - 1].overscaledZ;\n\n const align = !painter.options.moving;\n for (const coord of coords) {\n // Set the lower zoom level to sublayer 0, and higher zoom levels to higher sublayers\n // Use gl.LESS to prevent double drawing in areas where tiles overlap.\n const depthMode = renderingToTexture ? DepthMode.disabled : painter.depthModeForSublayer(coord.overscaledZ - minTileZ,\n layer.paint.get('raster-opacity') === 1 ? DepthMode.ReadWrite : DepthMode.ReadOnly, gl.LESS);\n\n const unwrappedTileID = coord.toUnwrapped();\n const tile = sourceCache.getTile(coord);\n if (renderingToTexture && !(tile && tile.hasData())) continue;\n\n const projMatrix = (renderingToTexture) ? coord.projMatrix :\n painter.transform.calculateProjMatrix(unwrappedTileID, align);\n\n const stencilMode = painter.terrain && renderingToTexture ?\n painter.terrain.stencilModeForRTTOverlap(coord) :\n stencilModes[coord.overscaledZ];\n\n const rasterFadeDuration = isInitialLoad ? 0 : layer.paint.get('raster-fade-duration');\n tile.registerFadeDuration(rasterFadeDuration);\n\n const parentTile = sourceCache.findLoadedParent(coord, 0);\n const fade = rasterFade(tile, parentTile, sourceCache, painter.transform, rasterFadeDuration);\n if (painter.terrain) painter.terrain.prepareDrawTile();\n\n let parentScaleBy, parentTL;\n\n const textureFilter = layer.paint.get('raster-resampling') === 'nearest' ? gl.NEAREST : gl.LINEAR;\n\n context.activeTexture.set(gl.TEXTURE0);\n tile.texture.bind(textureFilter, gl.CLAMP_TO_EDGE);\n\n context.activeTexture.set(gl.TEXTURE1);\n\n if (parentTile) {\n parentTile.texture.bind(textureFilter, gl.CLAMP_TO_EDGE);\n parentScaleBy = Math.pow(2, parentTile.tileID.overscaledZ - tile.tileID.overscaledZ);\n parentTL = [tile.tileID.canonical.x * parentScaleBy % 1, tile.tileID.canonical.y * parentScaleBy % 1];\n\n } else {\n tile.texture.bind(textureFilter, gl.CLAMP_TO_EDGE);\n }\n\n const perspectiveTransform = source instanceof ImageSource ? source.perspectiveTransform : [0, 0];\n const uniformValues = rasterUniformValues(projMatrix, parentTL || [0, 0], parentScaleBy || 1, fade, layer, perspectiveTransform);\n\n painter.prepareDrawProgram(context, program, unwrappedTileID);\n\n if (source instanceof ImageSource) {\n if (source.boundsBuffer && source.boundsSegments) program.draw(\n context, gl.TRIANGLES, depthMode, StencilMode.disabled, colorMode, CullFaceMode.disabled,\n uniformValues, layer.id, source.boundsBuffer,\n painter.quadTriangleIndexBuffer, source.boundsSegments);\n } else {\n const {tileBoundsBuffer, tileBoundsIndexBuffer, tileBoundsSegments} = painter.getTileBoundsBuffers(tile);\n\n program.draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n uniformValues, layer.id, tileBoundsBuffer,\n tileBoundsIndexBuffer, tileBoundsSegments);\n }\n }\n\n painter.resetStencilClippingMasks();\n}\n\n","// @flow\n\nimport StencilMode from '../gl/stencil_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport Tile from '../source/tile.js';\nimport {\n backgroundUniformValues,\n backgroundPatternUniformValues\n} from './program/background_program.js';\nimport {OverscaledTileID} from '../source/tile_id.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type BackgroundStyleLayer from '../style/style_layer/background_style_layer.js';\n\nexport default drawBackground;\n\nfunction drawBackground(painter: Painter, sourceCache: SourceCache, layer: BackgroundStyleLayer, coords: Array<OverscaledTileID>) {\n const color = layer.paint.get('background-color');\n const opacity = layer.paint.get('background-opacity');\n\n if (opacity === 0) return;\n\n const context = painter.context;\n const gl = context.gl;\n const transform = painter.transform;\n const tileSize = transform.tileSize;\n const image = layer.paint.get('background-pattern');\n if (painter.isPatternMissing(image)) return;\n\n const pass = (!image && color.a === 1 && opacity === 1 && painter.opaquePassEnabledForLayer()) ? 'opaque' : 'translucent';\n if (painter.renderPass !== pass) return;\n\n const stencilMode = StencilMode.disabled;\n const depthMode = painter.depthModeForSublayer(0, pass === 'opaque' ? DepthMode.ReadWrite : DepthMode.ReadOnly);\n const colorMode = painter.colorModeForRenderPass();\n\n const program = painter.useProgram(image ? 'backgroundPattern' : 'background');\n\n let tileIDs = coords;\n let backgroundTiles;\n if (!tileIDs) {\n backgroundTiles = painter.getBackgroundTiles();\n tileIDs = Object.values(backgroundTiles).map(tile => (tile: any).tileID);\n }\n\n if (image) {\n context.activeTexture.set(gl.TEXTURE0);\n painter.imageManager.bind(painter.context);\n }\n\n const crossfade = layer.getCrossfadeParameters();\n for (const tileID of tileIDs) {\n const unwrappedTileID = tileID.toUnwrapped();\n const matrix = coords ? tileID.projMatrix : painter.transform.calculateProjMatrix(unwrappedTileID);\n painter.prepareDrawTile();\n\n const tile = sourceCache ? sourceCache.getTile(tileID) :\n backgroundTiles ? backgroundTiles[tileID.key] : new Tile(tileID, tileSize, transform.zoom, painter);\n\n const uniformValues = image ?\n backgroundPatternUniformValues(matrix, opacity, painter, image, {tileID, tileSize}, crossfade) :\n backgroundUniformValues(matrix, opacity, color);\n\n painter.prepareDrawProgram(context, program, unwrappedTileID);\n\n const {tileBoundsBuffer, tileBoundsIndexBuffer, tileBoundsSegments} = painter.getTileBoundsBuffers(tile);\n\n program.draw(context, gl.TRIANGLES, depthMode, stencilMode, colorMode, CullFaceMode.disabled,\n uniformValues, layer.id, tileBoundsBuffer,\n tileBoundsIndexBuffer, tileBoundsSegments);\n }\n}\n","// @flow\n\nexport default drawCustom;\n\nimport DepthMode from '../gl/depth_mode.js';\nimport StencilMode from '../gl/stencil_mode.js';\nimport {warnOnce} from '../util/util.js';\n\nimport type Painter from './painter.js';\nimport type SourceCache from '../source/source_cache.js';\nimport type CustomStyleLayer from '../style/style_layer/custom_style_layer.js';\n\nfunction drawCustom(painter: Painter, sourceCache: SourceCache, layer: CustomStyleLayer) {\n\n const context = painter.context;\n const implementation = layer.implementation;\n\n if (painter.transform.projection.unsupportedLayers && painter.transform.projection.unsupportedLayers.includes(\"custom\")) {\n warnOnce('Custom layers are not yet supported with non-mercator projections. Use mercator to enable custom layers.');\n return;\n }\n\n if (painter.renderPass === 'offscreen') {\n\n const prerender = implementation.prerender;\n if (prerender) {\n painter.setCustomLayerDefaults();\n context.setColorMode(painter.colorModeForRenderPass());\n\n prerender.call(implementation, context.gl, painter.transform.customLayerMatrix());\n\n context.setDirty();\n painter.setBaseState();\n }\n\n } else if (painter.renderPass === 'translucent') {\n\n painter.setCustomLayerDefaults();\n\n context.setColorMode(painter.colorModeForRenderPass());\n context.setStencilMode(StencilMode.disabled);\n\n const depthMode = implementation.renderingMode === '3d' ?\n new DepthMode(painter.context.gl.LEQUAL, DepthMode.ReadWrite, painter.depthRangeFor3D) :\n painter.depthModeForSublayer(0, DepthMode.ReadOnly);\n\n context.setDepthMode(depthMode);\n\n implementation.render(context.gl, painter.transform.customLayerMatrix());\n\n context.setDirty();\n painter.setBaseState();\n context.bindFramebuffer.set(null);\n }\n}\n","// @flow\n\nimport StencilMode from '../gl/stencil_mode.js';\nimport DepthMode from '../gl/depth_mode.js';\nimport ColorMode from '../gl/color_mode.js';\nimport CullFaceMode from '../gl/cull_face_mode.js';\nimport {\n globeToMercatorTransition,\n globeUseCustomAntiAliasing\n} from './../geo/projection/globe_util.js';\nimport {atmosphereUniformValues} from '../terrain/globe_raster_program.js';\nimport type Painter from './painter.js';\nimport type {DynamicDefinesType} from '../render/program/program_uniforms.js';\nimport {degToRad, mapValue} from '../util/util.js';\nimport {vec3, mat4, quat} from 'gl-matrix';\nimport Fog from '../style/fog.js';\n\nexport default drawAtmosphere;\n\nfunction drawAtmosphere(painter: Painter, fog: Fog) {\n const context = painter.context;\n const gl = context.gl;\n const tr = painter.transform;\n const depthMode = new DepthMode(gl.LEQUAL, DepthMode.ReadOnly, [0, 1]);\n const defines = tr.projection.name === 'globe' ? ['PROJECTION_GLOBE_VIEW', 'FOG'] : ['FOG'];\n const program = painter.useProgram('globeAtmosphere', null, ((defines: any): DynamicDefinesType[]));\n\n const transitionT = globeToMercatorTransition(tr.zoom);\n\n const fogColor = fog.properties.get('color').toArray01();\n const highColor = fog.properties.get('high-color').toArray01();\n const spaceColor = fog.properties.get('space-color').toArray01PremultipliedAlpha();\n\n const orientation = quat.identity([]);\n\n quat.rotateY(orientation, orientation, -degToRad(tr._center.lng));\n quat.rotateX(orientation, orientation, degToRad(tr._center.lat));\n\n quat.rotateZ(orientation, orientation, tr.angle);\n quat.rotateX(orientation, orientation, -tr._pitch);\n\n const rotationMatrix = mat4.fromQuat(new Float32Array(16), orientation);\n\n const starIntensity = mapValue(fog.properties.get('star-intensity'), 0.0, 1.0, 0.0, 0.25);\n // https://www.desmos.com/calculator/oanvvpr36d\n // Ensure horizon blend is 0-exclusive to prevent division by 0 in the shader\n const minHorizonBlend = 0.0005;\n const horizonBlend = mapValue(fog.properties.get('horizon-blend'), 0.0, 1.0, minHorizonBlend, 0.25);\n\n // Use a slightly smaller size of the globe to account for custom\n // antialiasing that reduces the size of the globe of two pixels\n // https://www.desmos.com/calculator/xpgmzghc37\n const globeRadius = globeUseCustomAntiAliasing(painter, context, tr) && horizonBlend === minHorizonBlend ?\n tr.worldSize / (2.0 * Math.PI * 1.025) - 1.0 : tr.globeRadius;\n\n const temporalOffset = (painter.frameCounter / 1000.0) % 1;\n const globeCenterInViewSpace = (((tr.globeCenterInViewSpace): any): Array<number>);\n const globeCenterDistance = vec3.length(globeCenterInViewSpace);\n const distanceToHorizon = Math.sqrt(Math.pow(globeCenterDistance, 2.0) - Math.pow(globeRadius, 2.0));\n const horizonAngle = Math.acos(distanceToHorizon / globeCenterDistance);\n\n const uniforms = atmosphereUniformValues(\n tr.frustumCorners.TL,\n tr.frustumCorners.TR,\n tr.frustumCorners.BR,\n tr.frustumCorners.BL,\n tr.frustumCorners.horizon,\n transitionT,\n horizonBlend,\n fogColor,\n highColor,\n spaceColor,\n starIntensity,\n temporalOffset,\n horizonAngle,\n rotationMatrix);\n\n painter.prepareDrawProgram(context, program);\n\n const buffer = painter.atmosphereBuffer;\n if (buffer) {\n program.draw(context, gl.TRIANGLES, depthMode, StencilMode.disabled,\n ColorMode.alphaBlended, CullFaceMode.backCW, uniforms, \"skybox\",\n buffer.vertexBuffer, buffer.indexBuffer, buffer.segments);\n }\n}\n","// @flow\nimport {number} from \"../style-spec/util/interpolate.js\";\nimport Point from \"@mapbox/point-geometry\";\nimport {clamp} from \"../util/util.js\";\n\n/**\n * @private\n * An `EdgeInset` object represents screen space padding applied to the edges of the viewport.\n * This shifts the apparent center or the vanishing point of the map. This is useful for adding floating UI elements\n * on top of the map and having the vanishing point shift as UI elements resize.\n *\n * @param {number} [top=0]\n * @param {number} [bottom=0]\n * @param {number} [left=0]\n * @param {number} [right=0]\n */\nclass EdgeInsets {\n top: number;\n bottom: number;\n left: number;\n right: number;\n\n constructor(top: number = 0, bottom: number = 0, left: number = 0, right: number = 0) {\n if (isNaN(top) || top < 0 ||\n isNaN(bottom) || bottom < 0 ||\n isNaN(left) || left < 0 ||\n isNaN(right) || right < 0\n ) {\n throw new Error('Invalid value for edge-insets, top, bottom, left and right must all be numbers');\n }\n\n this.top = top;\n this.bottom = bottom;\n this.left = left;\n this.right = right;\n }\n\n /**\n * Interpolates the inset in-place.\n * This maintains the current inset value for any inset not present in `target`.\n *\n * @private\n * @param {PaddingOptions | EdgeInsets} start The initial padding options.\n * @param {PaddingOptions} target The target padding options.\n * @param {number} t The interpolation variable.\n * @returns {EdgeInsets} The interpolated edge insets.\n * @memberof EdgeInsets\n */\n interpolate(start: PaddingOptions | EdgeInsets, target: PaddingOptions, t: number): EdgeInsets {\n if (target.top != null && start.top != null) this.top = number(start.top, target.top, t);\n if (target.bottom != null && start.bottom != null) this.bottom = number(start.bottom, target.bottom, t);\n if (target.left != null && start.left != null) this.left = number(start.left, target.left, t);\n if (target.right != null && start.right != null) this.right = number(start.right, target.right, t);\n\n return this;\n }\n\n /**\n * Utility method that computes the new apprent center or vanishing point after applying insets.\n * This is in pixels and with the top left being (0.0) and +y being downwards.\n *\n * @private\n * @param {number} width The width of the map in pixels.\n * @param {number} height The height of the map in pixels.\n * @returns {Point} The apparent center or vanishing point of the map.\n * @memberof EdgeInsets\n */\n getCenter(width: number, height: number): Point {\n // Clamp insets so they never overflow width/height and always calculate a valid center\n const x = clamp((this.left + width - this.right) / 2, 0, width);\n const y = clamp((this.top + height - this.bottom) / 2, 0, height);\n\n return new Point(x, y);\n }\n\n equals(other: PaddingOptions): boolean {\n return this.top === other.top &&\n this.bottom === other.bottom &&\n this.left === other.left &&\n this.right === other.right;\n }\n\n clone(): EdgeInsets {\n return new EdgeInsets(this.top, this.bottom, this.left, this.right);\n }\n\n /**\n * Returns the current state as json, useful when you want to have a\n * read-only representation of the inset.\n *\n * @private\n * @returns {PaddingOptions} The current padding options.\n * @memberof EdgeInsets\n */\n toJSON(): PaddingOptions {\n return {\n top: this.top,\n bottom: this.bottom,\n left: this.left,\n right: this.right\n };\n }\n}\n\nexport type PaddingOptions = {+top: ?number, +bottom: ?number, +right: ?number, +left: ?number};\n\nexport default EdgeInsets;\n","// @flow\n\nimport MercatorCoordinate, {mercatorZfromAltitude} from '../geo/mercator_coordinate.js';\nimport {degToRad, wrap, getColumn, setColumn} from '../util/util.js';\nimport {vec3, quat, mat4} from 'gl-matrix';\n\nimport type {Elevation} from '../terrain/elevation.js';\nimport type {LngLatLike} from '../geo/lng_lat.js';\nimport type {Mat4, Vec3, Vec4, Quat} from 'gl-matrix';\n\nfunction updateTransformOrientation(matrix: Mat4, orientation: Quat) {\n // Take temporary copy of position to prevent it from being overwritten\n const position: Vec4 = getColumn(matrix, 3);\n\n // Convert quaternion to rotation matrix\n mat4.fromQuat(matrix, orientation);\n setColumn(matrix, 3, position);\n}\n\nfunction updateTransformPosition(matrix: Mat4, position: Vec3) {\n setColumn(matrix, 3, [position[0], position[1], position[2], 1.0]);\n}\n\nfunction orientationFromPitchBearing(pitch: number, bearing: number): Quat {\n // Both angles are considered to define CW rotation around their respective axes.\n // Values have to be negated to achieve the proper quaternion in left handed coordinate space\n const orientation = quat.identity([]);\n quat.rotateZ(orientation, orientation, -bearing);\n quat.rotateX(orientation, orientation, -pitch);\n return orientation;\n}\n\nexport function orientationFromFrame(forward: Vec3, up: Vec3): ?Quat {\n // Find right-vector of the resulting coordinate frame. Up-vector has to be\n // sanitized first in order to remove the roll component from the orientation\n const xyForward = [forward[0], forward[1], 0];\n const xyUp = [up[0], up[1], 0];\n\n const epsilon = 1e-15;\n\n if (vec3.length(xyForward) >= epsilon) {\n // Roll rotation can be seen as the right vector not being on the xy-plane, ie. right[2] != 0.0.\n // It can be negated by projecting the up vector on top of the forward vector.\n const xyDir = vec3.normalize([], xyForward);\n vec3.scale(xyUp, xyDir, vec3.dot(xyUp, xyDir));\n\n up[0] = xyUp[0];\n up[1] = xyUp[1];\n }\n\n const right = vec3.cross([], up, forward);\n if (vec3.len(right) < epsilon) {\n return null;\n }\n\n const bearing = Math.atan2(-right[1], right[0]);\n const pitch = Math.atan2(Math.sqrt(forward[0] * forward[0] + forward[1] * forward[1]), -forward[2]);\n\n return orientationFromPitchBearing(pitch, bearing);\n}\n\n/**\n * Options for accessing physical properties of the underlying camera entity.\n * Direct access to these properties allows more flexible and precise controlling of the camera.\n * These options are also fully compatible and interchangeable with CameraOptions. All fields are optional.\n * See {@link Map#setFreeCameraOptions} and {@link Map#getFreeCameraOptions}.\n *\n * @param {MercatorCoordinate} position Position of the camera in slightly modified web mercator coordinates.\n - The size of 1 unit is the width of the projected world instead of the \"mercator meter\".\n Coordinate [0, 0, 0] is the north-west corner and [1, 1, 0] is the south-east corner.\n - Z coordinate is conformal and must respect minimum and maximum zoom values.\n - Zoom is automatically computed from the altitude (z).\n * @param {quat} orientation Orientation of the camera represented as a unit quaternion [x, y, z, w] in a left-handed coordinate space.\n Direction of the rotation is clockwise around the respective axis.\n The default pose of the camera is such that the forward vector is looking up the -Z axis.\n The up vector is aligned with north orientation of the map:\n forward: [0, 0, -1]\n up: [0, -1, 0]\n right [1, 0, 0]\n Orientation can be set freely but certain constraints still apply:\n - Orientation must be representable with only pitch and bearing.\n - Pitch has an upper limit\n * @example\n * const camera = map.getFreeCameraOptions();\n *\n * const position = [138.72649, 35.33974];\n * const altitude = 3000;\n *\n * camera.position = mapboxgl.MercatorCoordinate.fromLngLat(position, altitude);\n * camera.lookAtPoint([138.73036, 35.36197]);\n *\n * map.setFreeCameraOptions(camera);\n * @see [Example: Animate the camera around a point in 3D terrain](https://docs.mapbox.com/mapbox-gl-js/example/free-camera-point/)\n * @see [Example: Animate the camera along a path](https://docs.mapbox.com/mapbox-gl-js/example/free-camera-path/)\n*/\nclass FreeCameraOptions {\n orientation: ?Quat;\n _position: ?MercatorCoordinate;\n _elevation: ?Elevation;\n _renderWorldCopies: boolean;\n\n constructor(position: ?MercatorCoordinate, orientation: ?Quat) {\n this.position = position;\n this.orientation = orientation;\n }\n\n get position(): ?MercatorCoordinate {\n return this._position;\n }\n\n set position(position: ?MercatorCoordinate | Vec3) {\n if (!position) {\n this._position = null;\n } else {\n const mercatorCoordinate = position instanceof MercatorCoordinate ? position : new MercatorCoordinate(position[0], position[1], position[2]);\n if (this._renderWorldCopies) {\n mercatorCoordinate.x = wrap(mercatorCoordinate.x, 0, 1);\n }\n this._position = mercatorCoordinate;\n }\n }\n\n /**\n * Helper function for setting orientation of the camera by defining a focus point\n * on the map.\n *\n * @param {LngLatLike} location Location of the focus point on the map.\n * @param {vec3?} up Up vector of the camera is necessary in certain scenarios where bearing can't be deduced\n * from the viewing direction.\n * @example\n * const camera = map.getFreeCameraOptions();\n *\n * const position = [138.72649, 35.33974];\n * const altitude = 3000;\n *\n * camera.position = mapboxgl.MercatorCoordinate.fromLngLat(position, altitude);\n * camera.lookAtPoint([138.73036, 35.36197]);\n * // Apply camera changes\n * map.setFreeCameraOptions(camera);\n */\n lookAtPoint(location: LngLatLike, up?: Vec3) {\n this.orientation = null;\n if (!this.position) {\n return;\n }\n\n const altitude = this._elevation ? this._elevation.getAtPointOrZero(MercatorCoordinate.fromLngLat(location)) : 0;\n const pos: MercatorCoordinate = this.position;\n const target = MercatorCoordinate.fromLngLat(location, altitude);\n const forward = [target.x - pos.x, target.y - pos.y, target.z - pos.z];\n if (!up)\n up = [0, 0, 1];\n\n // flip z-component if the up vector is pointing downwards\n up[2] = Math.abs(up[2]);\n\n this.orientation = orientationFromFrame(forward, up);\n }\n\n /**\n * Helper function for setting the orientation of the camera as a pitch and a bearing.\n *\n * @param {number} pitch Pitch angle in degrees.\n * @param {number} bearing Bearing angle in degrees.\n * @example\n * const camera = map.getFreeCameraOptions();\n *\n * // Update camera pitch and bearing\n * camera.setPitchBearing(80, 90);\n * // Apply changes\n * map.setFreeCameraOptions(camera);\n */\n setPitchBearing(pitch: number, bearing: number) {\n this.orientation = orientationFromPitchBearing(degToRad(pitch), degToRad(-bearing));\n }\n}\n\n/**\n * While using the free camera API the outcome value of isZooming, isMoving and isRotating\n * is not a result of the free camera API.\n * If the user sets the map.interactive to true, there will be conflicting behaviors while\n * interacting with map via zooming or moving using mouse or/and keyboard which will result\n * in isZooming, isMoving and isRotating to return true while using free camera API. In order\n * to prevent the confilicting behavior please set map.interactive to false which will result\n * in muting the following events: zoom, zoomend, zoomstart, rotate, rotateend, rotatestart,\n * move, moveend, movestart, pitch, pitchend, pitchstart.\n */\n\nclass FreeCamera {\n _transform: Mat4;\n _orientation: Quat;\n\n constructor(position: ?Vec3, orientation: ?Quat) {\n this._transform = mat4.identity([]);\n this.orientation = orientation;\n this.position = position;\n }\n\n get mercatorPosition(): MercatorCoordinate {\n const pos = this.position;\n return new MercatorCoordinate(pos[0], pos[1], pos[2]);\n }\n\n get position(): Vec3 {\n const col: Vec4 = getColumn(this._transform, 3);\n return [col[0], col[1], col[2]];\n }\n\n set position(value: ?Vec3) {\n if (value) {\n updateTransformPosition(this._transform, value);\n }\n }\n\n get orientation(): Quat {\n return this._orientation;\n }\n\n set orientation(value: ?Quat) {\n this._orientation = value || quat.identity([]);\n if (value) {\n updateTransformOrientation(this._transform, this._orientation);\n }\n }\n\n getPitchBearing(): {pitch: number, bearing: number} {\n const f = this.forward();\n const r = this.right();\n\n return {\n bearing: Math.atan2(-r[1], r[0]),\n pitch: Math.atan2(Math.sqrt(f[0] * f[0] + f[1] * f[1]), -f[2])\n };\n }\n\n setPitchBearing(pitch: number, bearing: number) {\n this._orientation = orientationFromPitchBearing(pitch, bearing);\n updateTransformOrientation(this._transform, this._orientation);\n }\n\n forward(): Vec3 {\n const col: Vec4 = getColumn(this._transform, 2);\n // Forward direction is towards the negative Z-axis\n return [-col[0], -col[1], -col[2]];\n }\n\n up(): Vec3 {\n const col: Vec4 = getColumn(this._transform, 1);\n // Up direction has to be flipped to point towards north\n return [-col[0], -col[1], -col[2]];\n }\n\n right(): Vec3 {\n const col: Vec4 = getColumn(this._transform, 0);\n return [col[0], col[1], col[2]];\n }\n\n getCameraToWorld(worldSize: number, pixelsPerMeter: number): Float64Array {\n const cameraToWorld = new Float64Array(16);\n mat4.invert(cameraToWorld, this.getWorldToCamera(worldSize, pixelsPerMeter));\n return cameraToWorld;\n }\n\n getWorldToCameraPosition(worldSize: number, pixelsPerMeter: number, uniformScale: number): Float64Array {\n const invPosition = this.position;\n\n vec3.scale(invPosition, invPosition, -worldSize);\n const matrix = new Float64Array(16);\n mat4.fromScaling(matrix, [uniformScale, uniformScale, uniformScale]);\n mat4.translate(matrix, matrix, invPosition);\n\n // Adjust scale on z (3rd column 3rd row)\n matrix[10] *= pixelsPerMeter;\n\n return matrix;\n }\n\n getWorldToCamera(worldSize: number, pixelsPerMeter: number): Float64Array {\n // transformation chain from world space to camera space:\n // 1. Height value (z) of renderables is in meters. Scale z coordinate by pixelsPerMeter\n // 2. Transform from pixel coordinates to camera space with cameraMatrix^-1\n // 3. flip Y if required\n\n // worldToCamera: flip * cam^-1 * zScale\n // cameraToWorld: (flip * cam^-1 * zScale)^-1 => (zScale^-1 * cam * flip^-1)\n const matrix = new Float64Array(16);\n\n // Compute inverse of camera matrix and post-multiply negated translation\n const invOrientation = new Float64Array(4);\n const invPosition = this.position;\n\n quat.conjugate(invOrientation, this._orientation);\n vec3.scale(invPosition, invPosition, -worldSize);\n\n mat4.fromQuat(matrix, invOrientation);\n\n mat4.translate(matrix, matrix, invPosition);\n\n // Pre-multiply y (2nd row)\n matrix[1] *= -1.0;\n matrix[5] *= -1.0;\n matrix[9] *= -1.0;\n matrix[13] *= -1.0;\n\n // Post-multiply z (3rd column)\n matrix[8] *= pixelsPerMeter;\n matrix[9] *= pixelsPerMeter;\n matrix[10] *= pixelsPerMeter;\n matrix[11] *= pixelsPerMeter;\n\n return matrix;\n }\n\n getCameraToClipPerspective(fovy: number, aspectRatio: number, nearZ: number, farZ: number): Float64Array {\n const matrix = new Float64Array(16);\n mat4.perspective(matrix, fovy, aspectRatio, nearZ, farZ);\n return matrix;\n }\n\n getDistanceToElevation(elevationMeters: number): number {\n const z0 = elevationMeters === 0 ? 0 : mercatorZfromAltitude(elevationMeters, this.position[1]);\n const f = this.forward();\n return (z0 - this.position[2]) / f[2];\n }\n\n clone(): FreeCamera {\n return new FreeCamera([...this.position], [...this.orientation]);\n }\n}\n\nexport {\n FreeCamera,\n FreeCameraOptions\n};\n","// @flow\n\nimport LngLat from '../lng_lat.js';\nimport MercatorCoordinate, {MAX_MERCATOR_LATITUDE} from '../mercator_coordinate.js';\nimport {mat4, mat2} from 'gl-matrix';\nimport {clamp, smoothstep} from '../../util/util.js';\n\nimport type Projection from './projection.js';\nimport type Transform from '../transform.js';\n\nexport default function getProjectionAdjustments(transform: Transform, withoutRotation?: boolean): Array<number> {\n const interpT = getProjectionInterpolationT(transform.projection, transform.zoom, transform.width, transform.height);\n const matrix = getShearAdjustment(transform.projection, transform.zoom, transform.center, interpT, withoutRotation);\n\n const scaleAdjustment = getScaleAdjustment(transform);\n mat4.scale(matrix, matrix, [scaleAdjustment, scaleAdjustment, 1]);\n\n return matrix;\n}\n\nexport function getScaleAdjustment(transform: Transform): number {\n const projection = transform.projection;\n const interpT = getProjectionInterpolationT(transform.projection, transform.zoom, transform.width, transform.height);\n const zoomAdjustment = getZoomAdjustment(projection, transform.center);\n const zoomAdjustmentOrigin = getZoomAdjustment(projection, LngLat.convert(projection.center));\n const scaleAdjustment = Math.pow(2, zoomAdjustment * interpT + (1 - interpT) * zoomAdjustmentOrigin);\n return scaleAdjustment;\n}\n\nexport function getProjectionAdjustmentInverted(transform: Transform): Array<number> {\n const m = getProjectionAdjustments(transform, true);\n return mat2.invert([], [\n m[0], m[1],\n m[4], m[5]]);\n}\n\nexport function getProjectionInterpolationT(projection: Projection, zoom: number, width: number, height: number, maxSize: number = Infinity): number {\n const range = projection.range;\n if (!range) return 0;\n\n const size = Math.min(maxSize, Math.max(width, height));\n // The interpolation ranges are manually defined based on what makes\n // sense in a 1024px wide map. Adjust the ranges to the current size\n // of the map. The smaller the map, the earlier you can start unskewing.\n const rangeAdjustment = Math.log(size / 1024) / Math.LN2;\n const zoomA = range[0] + rangeAdjustment;\n const zoomB = range[1] + rangeAdjustment;\n const t = smoothstep(zoomA, zoomB, zoom);\n return t;\n}\n\n// approx. kilometers per longitude degree at equator\nconst offset = 1 / 40000;\n\n/*\n * Calculates the scale difference between Mercator and the given projection at a certain location.\n */\nfunction getZoomAdjustment(projection: Projection, loc: LngLat) {\n // make sure we operate within mercator space for adjustments (they can go over for other projections)\n const lat = clamp(loc.lat, -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n\n const loc1 = new LngLat(loc.lng - 180 * offset, lat);\n const loc2 = new LngLat(loc.lng + 180 * offset, lat);\n\n const p1 = projection.project(loc1.lng, lat);\n const p2 = projection.project(loc2.lng, lat);\n\n const m1 = MercatorCoordinate.fromLngLat(loc1);\n const m2 = MercatorCoordinate.fromLngLat(loc2);\n\n const pdx = p2.x - p1.x;\n const pdy = p2.y - p1.y;\n const mdx = m2.x - m1.x;\n const mdy = m2.y - m1.y;\n\n const scale = Math.sqrt((mdx * mdx + mdy * mdy) / (pdx * pdx + pdy * pdy));\n\n return Math.log(scale) / Math.LN2;\n}\n\nfunction getShearAdjustment(projection, zoom, loc, interpT, withoutRotation?: boolean) {\n\n // create two locations a tiny amount (~1km) east and west of the given location\n const locw = new LngLat(loc.lng - 180 * offset, loc.lat);\n const loce = new LngLat(loc.lng + 180 * offset, loc.lat);\n\n const pw = projection.project(locw.lng, locw.lat);\n const pe = projection.project(loce.lng, loce.lat);\n\n const pdx = pe.x - pw.x;\n const pdy = pe.y - pw.y;\n\n // Calculate how much the map would need to be rotated to make east-west in\n // projected coordinates be left-right\n const angleAdjust = -Math.atan2(pdy, pdx);\n\n // Pick a location identical to the original one except for poles to make sure we're within mercator bounds\n const mc2 = MercatorCoordinate.fromLngLat(loc);\n mc2.y = clamp(mc2.y, -1 + offset, 1 - offset);\n const loc2 = mc2.toLngLat();\n const p2 = projection.project(loc2.lng, loc2.lat);\n\n // Find the projected coordinates of two locations, one slightly south and one slightly east.\n // Then calculate the transform that would make the projected coordinates of the two locations be:\n // - equal distances from the original location\n // - perpendicular to one another\n //\n // Only the position of the coordinate to the north is adjusted.\n // The coordinate to the east stays where it is.\n const mc3 = MercatorCoordinate.fromLngLat(loc2);\n mc3.x += offset;\n const loc3 = mc3.toLngLat();\n const p3 = projection.project(loc3.lng, loc3.lat);\n const pdx3 = p3.x - p2.x;\n const pdy3 = p3.y - p2.y;\n const delta3 = rotate(pdx3, pdy3, angleAdjust);\n\n const mc4 = MercatorCoordinate.fromLngLat(loc2);\n mc4.y += offset;\n const loc4 = mc4.toLngLat();\n const p4 = projection.project(loc4.lng, loc4.lat);\n const pdx4 = p4.x - p2.x;\n const pdy4 = p4.y - p2.y;\n const delta4 = rotate(pdx4, pdy4, angleAdjust);\n\n const scale = Math.abs(delta3.x) / Math.abs(delta4.y);\n\n const unrotate = mat4.identity([]);\n mat4.rotateZ(unrotate, unrotate, (-angleAdjust) * (1 - (withoutRotation ? 0 : interpT)));\n\n // unskew\n const shear = mat4.identity([]);\n mat4.scale(shear, shear, [1, 1 - (1 - scale) * interpT, 1]);\n shear[4] = -delta4.x / delta4.y * interpT;\n\n // unrotate\n mat4.rotateZ(shear, shear, angleAdjust);\n\n mat4.multiply(shear, unrotate, shear);\n\n return shear;\n}\n\nfunction rotate(x, y, angle) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n return {\n x: x * cos - y * sin,\n y: x * sin + y * cos\n };\n}\n","// @flow\n\nimport LngLat from './lng_lat.js';\nimport LngLatBounds from './lng_lat_bounds.js';\nimport MercatorCoordinate, {mercatorXfromLng, mercatorYfromLat, mercatorZfromAltitude, latFromMercatorY, MAX_MERCATOR_LATITUDE, circumferenceAtLatitude} from './mercator_coordinate.js';\nimport {getProjection} from './projection/index.js';\nimport {tileAABB} from '../geo/projection/tile_transform.js';\nimport Point from '@mapbox/point-geometry';\nimport {wrap, clamp, pick, radToDeg, degToRad, getAABBPointSquareDist, furthestTileCorner, warnOnce, deepEqual} from '../util/util.js';\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\nimport EXTENT from '../data/extent.js';\nimport {vec4, mat4, mat2, vec3, quat} from 'gl-matrix';\nimport {Frustum, FrustumCorners, Ray} from '../util/primitives.js';\nimport EdgeInsets from './edge_insets.js';\nimport {FreeCamera, FreeCameraOptions, orientationFromFrame} from '../ui/free_camera.js';\nimport assert from 'assert';\nimport getProjectionAdjustments, {getProjectionAdjustmentInverted, getScaleAdjustment, getProjectionInterpolationT} from './projection/adjustments.js';\nimport {getPixelsToTileUnitsMatrix} from '../source/pixels_to_tile_units.js';\nimport {UnwrappedTileID, OverscaledTileID, CanonicalTileID} from '../source/tile_id.js';\nimport {calculateGlobeMatrix, GLOBE_ZOOM_THRESHOLD_MIN, GLOBE_SCALE_MATCH_LATITUDE} from '../geo/projection/globe_util.js';\nimport {projectClamped} from '../symbol/projection.js';\n\nimport type Projection from '../geo/projection/projection.js';\nimport type {Elevation} from '../terrain/elevation.js';\nimport type {PaddingOptions} from './edge_insets.js';\nimport type Tile from '../source/tile.js';\nimport type {ProjectionSpecification} from '../style-spec/types.js';\nimport type {FeatureDistanceData} from '../style-spec/feature_filter/index.js';\nimport type {Vec3, Vec4, Quat} from 'gl-matrix';\n\nconst NUM_WORLD_COPIES = 3;\nconst DEFAULT_MIN_ZOOM = 0;\n\ntype RayIntersectionResult = { p0: Vec4, p1: Vec4, t: number};\ntype ElevationReference = \"sea\" | \"ground\";\n\n/**\n * A single transform, generally used for a single tile to be\n * scaled, rotated, and zoomed.\n * @private\n */\nclass Transform {\n tileSize: number;\n tileZoom: number;\n maxBounds: ?LngLatBounds;\n\n // 2^zoom (worldSize = tileSize * scale)\n scale: number;\n\n // Map viewport size (not including the pixel ratio)\n width: number;\n height: number;\n\n // Bearing, radians, in [-pi, pi]\n angle: number;\n\n // 2D rotation matrix in the horizontal plane, as a function of bearing\n rotationMatrix: Float32Array;\n\n // Zoom, modulo 1\n zoomFraction: number;\n\n // The scale factor component of the conversion from pixels ([0, w] x [h, 0]) to GL\n // NDC ([1, -1] x [1, -1]) (note flipped y)\n pixelsToGLUnits: [number, number];\n\n // Distance from camera to the center, in screen pixel units, independent of zoom\n cameraToCenterDistance: number;\n\n // Projection from mercator coordinates ([0, 0] nw, [1, 1] se) to GL clip coordinates\n mercatorMatrix: Array<number>;\n\n // Translate points in mercator coordinates to be centered about the camera, with units chosen\n // for screen-height-independent scaling of fog. Not affected by orientation of camera.\n mercatorFogMatrix: Float32Array;\n\n // Projection from world coordinates (mercator scaled by worldSize) to clip coordinates\n projMatrix: Array<number>;\n invProjMatrix: Float64Array;\n\n // Same as projMatrix, pixel-aligned to avoid fractional pixels for raster tiles\n alignedProjMatrix: Float64Array;\n\n // From world coordinates to screen pixel coordinates (projMatrix premultiplied by labelPlaneMatrix)\n pixelMatrix: Float64Array;\n pixelMatrixInverse: Float64Array;\n\n worldToFogMatrix: Float64Array;\n skyboxMatrix: Float32Array;\n\n // Transform from screen coordinates to GL NDC, [0, w] x [h, 0] --> [-1, 1] x [-1, 1]\n // Roughly speaking, applies pixelsToGLUnits scaling with a translation\n glCoordMatrix: Float32Array;\n\n // Inverse of glCoordMatrix, from NDC to screen coordinates, [-1, 1] x [-1, 1] --> [0, w] x [h, 0]\n labelPlaneMatrix: Float32Array;\n\n // globe coordinate transformation matrix\n globeMatrix: Float64Array;\n\n globeCenterInViewSpace: [number, number, number];\n globeRadius: number;\n\n inverseAdjustmentMatrix: Array<number>;\n\n mercatorFromTransition: boolean;\n\n minLng: number;\n maxLng: number;\n minLat: number;\n maxLat: number;\n worldMinX: number;\n worldMaxX: number;\n worldMinY: number;\n worldMaxY: number;\n\n frustumCorners: FrustumCorners;\n\n freezeTileCoverage: boolean;\n cameraElevationReference: ElevationReference;\n fogCullDistSq: ?number;\n _averageElevation: number;\n projectionOptions: ProjectionSpecification;\n projection: Projection;\n _elevation: ?Elevation;\n _fov: number;\n _pitch: number;\n _zoom: number;\n _seaLevelZoom: ?number;\n _unmodified: boolean;\n _renderWorldCopies: boolean;\n _minZoom: number;\n _maxZoom: number;\n _minPitch: number;\n _maxPitch: number;\n _center: LngLat;\n _edgeInsets: EdgeInsets;\n _constraining: boolean;\n _projMatrixCache: {[_: number]: Float32Array};\n _alignedProjMatrixCache: {[_: number]: Float32Array};\n _pixelsToTileUnitsCache: {[_: number]: Float32Array};\n _fogTileMatrixCache: {[_: number]: Float32Array};\n _distanceTileDataCache: {[_: number]: FeatureDistanceData};\n _camera: FreeCamera;\n _centerAltitude: number;\n _centerAltitudeValidForExaggeration: ?number;\n _horizonShift: number;\n _projectionScaler: number;\n _nearZ: number;\n _farZ: number;\n _mercatorScaleRatio: number;\n\n constructor(minZoom: ?number, maxZoom: ?number, minPitch: ?number, maxPitch: ?number, renderWorldCopies: boolean | void, projection?: ?ProjectionSpecification, bounds: ?LngLatBounds) {\n this.tileSize = 512; // constant\n\n this._renderWorldCopies = renderWorldCopies === undefined ? true : renderWorldCopies;\n this._minZoom = minZoom || DEFAULT_MIN_ZOOM;\n this._maxZoom = maxZoom || 22;\n\n this._minPitch = (minPitch === undefined || minPitch === null) ? 0 : minPitch;\n this._maxPitch = (maxPitch === undefined || maxPitch === null) ? 60 : maxPitch;\n\n this.setProjection(projection);\n this.setMaxBounds(bounds);\n\n this.width = 0;\n this.height = 0;\n this._center = new LngLat(0, 0);\n this.zoom = 0;\n this.angle = 0;\n this._fov = 0.6435011087932844;\n this._pitch = 0;\n this._nearZ = 0;\n this._farZ = 0;\n this._unmodified = true;\n this._edgeInsets = new EdgeInsets();\n this._projMatrixCache = {};\n this._alignedProjMatrixCache = {};\n this._fogTileMatrixCache = {};\n this._distanceTileDataCache = {};\n this._camera = new FreeCamera();\n this._centerAltitude = 0;\n this._averageElevation = 0;\n this.cameraElevationReference = \"ground\";\n this._projectionScaler = 1.0;\n this.globeRadius = 0;\n this.globeCenterInViewSpace = [0, 0, 0];\n\n // Move the horizon closer to the center. 0 would not shift the horizon. 1 would put the horizon at the center.\n this._horizonShift = 0.1;\n }\n\n clone(): Transform {\n const clone = new Transform(this._minZoom, this._maxZoom, this._minPitch, this.maxPitch, this._renderWorldCopies, this.getProjection());\n clone._elevation = this._elevation;\n clone._centerAltitude = this._centerAltitude;\n clone._centerAltitudeValidForExaggeration = this._centerAltitudeValidForExaggeration;\n clone.tileSize = this.tileSize;\n clone.width = this.width;\n clone.height = this.height;\n clone.cameraElevationReference = this.cameraElevationReference;\n clone._center = this._center;\n clone._setZoom(this.zoom);\n clone._seaLevelZoom = this._seaLevelZoom;\n clone.angle = this.angle;\n clone._fov = this._fov;\n clone._pitch = this._pitch;\n clone._nearZ = this._nearZ;\n clone._farZ = this._farZ;\n clone._averageElevation = this._averageElevation;\n clone._unmodified = this._unmodified;\n clone._edgeInsets = this._edgeInsets.clone();\n clone._camera = this._camera.clone();\n clone._calcMatrices();\n clone.freezeTileCoverage = this.freezeTileCoverage;\n clone.frustumCorners = this.frustumCorners;\n return clone;\n }\n\n get elevation(): ?Elevation { return this._elevation; }\n set elevation(elevation: ?Elevation) {\n if (this._elevation === elevation) return;\n this._elevation = elevation;\n this._updateCameraOnTerrain();\n this._calcMatrices();\n }\n updateElevation(constrainCameraOverTerrain: boolean) { // On render, no need for higher granularity on update reasons.\n const centerAltitudeChanged = this._elevation && this._elevation.exaggeration() !== this._centerAltitudeValidForExaggeration;\n if (this._seaLevelZoom == null || centerAltitudeChanged) {\n this._updateCameraOnTerrain();\n }\n if (constrainCameraOverTerrain || centerAltitudeChanged) {\n this._constrainCameraAltitude();\n }\n this._calcMatrices();\n }\n\n getProjection(): ProjectionSpecification {\n return (pick(this.projection, ['name', 'center', 'parallels']): ProjectionSpecification);\n }\n\n // Returns whether the projection changes\n setProjection(projection?: ?ProjectionSpecification): boolean {\n this.projectionOptions = projection || {name: 'mercator'};\n\n const oldProjection = this.projection ? this.getProjection() : undefined;\n this.projection = getProjection(this.projectionOptions);\n const newProjection = this.getProjection();\n\n const projectionHasChanged = !deepEqual(oldProjection, newProjection);\n if (projectionHasChanged) {\n this._calcMatrices();\n }\n\n return projectionHasChanged;\n }\n\n get minZoom(): number { return this._minZoom; }\n set minZoom(zoom: number) {\n if (this._minZoom === zoom) return;\n this._minZoom = zoom;\n this.zoom = Math.max(this.zoom, zoom);\n }\n\n get maxZoom(): number { return this._maxZoom; }\n set maxZoom(zoom: number) {\n if (this._maxZoom === zoom) return;\n this._maxZoom = zoom;\n this.zoom = Math.min(this.zoom, zoom);\n }\n\n get minPitch(): number { return this._minPitch; }\n set minPitch(pitch: number) {\n if (this._minPitch === pitch) return;\n this._minPitch = pitch;\n this.pitch = Math.max(this.pitch, pitch);\n }\n\n get maxPitch(): number { return this._maxPitch; }\n set maxPitch(pitch: number) {\n if (this._maxPitch === pitch) return;\n this._maxPitch = pitch;\n this.pitch = Math.min(this.pitch, pitch);\n }\n\n get renderWorldCopies(): boolean {\n return this._renderWorldCopies && this.projection.supportsWorldCopies === true;\n }\n set renderWorldCopies(renderWorldCopies?: ?boolean) {\n if (renderWorldCopies === undefined) {\n renderWorldCopies = true;\n } else if (renderWorldCopies === null) {\n renderWorldCopies = false;\n }\n\n this._renderWorldCopies = renderWorldCopies;\n }\n\n get worldSize(): number {\n return this.tileSize * this.scale;\n }\n\n get cameraWorldSize(): number {\n const distance = Math.max(this._camera.getDistanceToElevation(this._averageElevation), Number.EPSILON);\n return this._worldSizeFromZoom(this._zoomFromMercatorZ(distance));\n }\n\n get pixelsPerMeter(): number {\n return this.projection.pixelsPerMeter(this.center.lat, this.worldSize);\n }\n\n get cameraPixelsPerMeter(): number {\n return mercatorZfromAltitude(this.center.lat, this.cameraWorldSize);\n }\n\n get centerOffset(): Point {\n return this.centerPoint._sub(this.size._div(2));\n }\n\n get size(): Point {\n return new Point(this.width, this.height);\n }\n\n get bearing(): number {\n return wrap(this.rotation, -180, 180);\n }\n\n set bearing(bearing: number) {\n this.rotation = bearing;\n }\n\n get rotation(): number {\n return -this.angle / Math.PI * 180;\n }\n\n set rotation(rotation: number) {\n const b = -rotation * Math.PI / 180;\n if (this.angle === b) return;\n this._unmodified = false;\n this.angle = b;\n this._calcMatrices();\n\n // 2x2 matrix for rotating points\n this.rotationMatrix = mat2.create();\n mat2.rotate(this.rotationMatrix, this.rotationMatrix, this.angle);\n }\n\n get pitch(): number {\n return this._pitch / Math.PI * 180;\n }\n set pitch(pitch: number) {\n const p = clamp(pitch, this.minPitch, this.maxPitch) / 180 * Math.PI;\n if (this._pitch === p) return;\n this._unmodified = false;\n this._pitch = p;\n this._calcMatrices();\n }\n\n get fov(): number {\n return this._fov / Math.PI * 180;\n }\n set fov(fov: number) {\n fov = Math.max(0.01, Math.min(60, fov));\n if (this._fov === fov) return;\n this._unmodified = false;\n this._fov = fov / 180 * Math.PI;\n this._calcMatrices();\n }\n\n get averageElevation(): number {\n return this._averageElevation;\n }\n set averageElevation(averageElevation: number) {\n this._averageElevation = averageElevation;\n this._calcFogMatrices();\n this._distanceTileDataCache = {};\n }\n\n get zoom(): number { return this._zoom; }\n set zoom(zoom: number) {\n const z = Math.min(Math.max(zoom, this.minZoom), this.maxZoom);\n if (this._zoom === z) return;\n this._unmodified = false;\n this._setZoom(z);\n this._updateSeaLevelZoom();\n this._constrain();\n this._calcMatrices();\n }\n _setZoom(z: number) {\n this._zoom = z;\n this.scale = this.zoomScale(z);\n this.tileZoom = Math.floor(z);\n this.zoomFraction = z - this.tileZoom;\n }\n\n _updateCameraOnTerrain() {\n if (!this._elevation || !this._elevation.isDataAvailableAtPoint(this.locationCoordinate(this.center))) {\n // Elevation data not loaded yet, reset\n this._centerAltitude = 0;\n this._seaLevelZoom = null;\n this._centerAltitudeValidForExaggeration = undefined;\n return;\n }\n const elevation: Elevation = this._elevation;\n this._centerAltitude = elevation.getAtPointOrZero(this.locationCoordinate(this.center));\n this._centerAltitudeValidForExaggeration = elevation.exaggeration();\n this._updateSeaLevelZoom();\n }\n\n _updateSeaLevelZoom() {\n if (this._centerAltitudeValidForExaggeration === undefined) {\n return;\n }\n const height = this.cameraToCenterDistance;\n const terrainElevation = this.pixelsPerMeter * this._centerAltitude;\n const mercatorZ = (terrainElevation + height) / this.worldSize;\n\n // MSL (Mean Sea Level) zoom describes the distance of the camera to the sea level (altitude).\n // It is used only for manipulating the camera location. The standard zoom (this._zoom)\n // defines the camera distance to the terrain (height). Its behavior and conceptual\n // meaning in determining which tiles to stream is same with or without the terrain.\n this._seaLevelZoom = this._zoomFromMercatorZ(mercatorZ);\n }\n\n sampleAverageElevation(): number {\n if (!this._elevation) return 0;\n const elevation: Elevation = this._elevation;\n\n const elevationSamplePoints = [\n [0.5, 0.2],\n [0.3, 0.5],\n [0.5, 0.5],\n [0.7, 0.5],\n [0.5, 0.8]\n ];\n\n const horizon = this.horizonLineFromTop();\n\n let elevationSum = 0.0;\n let weightSum = 0.0;\n for (let i = 0; i < elevationSamplePoints.length; i++) {\n const pt = new Point(\n elevationSamplePoints[i][0] * this.width,\n horizon + elevationSamplePoints[i][1] * (this.height - horizon)\n );\n const hit = elevation.pointCoordinate(pt);\n if (!hit) continue;\n\n const distanceToHit = Math.hypot(hit[0] - this._camera.position[0], hit[1] - this._camera.position[1]);\n const weight = 1 / distanceToHit;\n elevationSum += hit[3] * weight;\n weightSum += weight;\n }\n\n if (weightSum === 0) return NaN;\n return elevationSum / weightSum;\n }\n\n get center(): LngLat { return this._center; }\n set center(center: LngLat) {\n if (center.lat === this._center.lat && center.lng === this._center.lng) return;\n\n this._unmodified = false;\n this._center = center;\n if (this._terrainEnabled()) {\n if (this.cameraElevationReference === \"ground\") {\n this._updateCameraOnTerrain();\n } else {\n this._updateZoomFromElevation();\n }\n }\n this._constrain();\n this._calcMatrices();\n }\n\n _updateZoomFromElevation() {\n if (this._seaLevelZoom == null || !this._elevation)\n return;\n\n // Compute zoom level from the height of the camera relative to the terrain\n const seaLevelZoom: number = this._seaLevelZoom;\n const elevationAtCenter = this._elevation.getAtPointOrZero(this.locationCoordinate(this.center));\n const mercatorElevation = this.pixelsPerMeter / this.worldSize * elevationAtCenter;\n const altitude = this._mercatorZfromZoom(seaLevelZoom);\n const minHeight = this._mercatorZfromZoom(this._maxZoom);\n const height = Math.max(altitude - mercatorElevation, minHeight);\n\n this._setZoom(this._zoomFromMercatorZ(height));\n }\n\n get padding(): PaddingOptions { return this._edgeInsets.toJSON(); }\n set padding(padding: PaddingOptions) {\n if (this._edgeInsets.equals(padding)) return;\n this._unmodified = false;\n //Update edge-insets inplace\n this._edgeInsets.interpolate(this._edgeInsets, padding, 1);\n this._calcMatrices();\n }\n\n /**\n * Computes a zoom value relative to a map plane that goes through the provided mercator position.\n *\n * @param {MercatorCoordinate} position A position defining the altitude of the the map plane.\n * @returns {number} The zoom value.\n */\n computeZoomRelativeTo(position: MercatorCoordinate): number {\n // Find map center position on the target plane by casting a ray from screen center towards the plane.\n // Direct distance to the target position is used if the target position is above camera position.\n const centerOnTargetAltitude = this.rayIntersectionCoordinate(this.pointRayIntersection(this.centerPoint, position.toAltitude()));\n\n let targetPosition: ?Vec3;\n if (position.z < this._camera.position[2]) {\n targetPosition = [centerOnTargetAltitude.x, centerOnTargetAltitude.y, centerOnTargetAltitude.z];\n } else {\n targetPosition = [position.x, position.y, position.z];\n }\n\n const distToTarget = vec3.length(vec3.sub([], this._camera.position, targetPosition));\n return clamp(this._zoomFromMercatorZ(distToTarget), this._minZoom, this._maxZoom);\n }\n\n setFreeCameraOptions(options: FreeCameraOptions) {\n if (!this.height)\n return;\n\n if (!options.position && !options.orientation)\n return;\n\n // Camera state must be up-to-date before accessing its getters\n this._updateCameraState();\n\n let changed = false;\n if (options.orientation && !quat.exactEquals(options.orientation, this._camera.orientation)) {\n changed = this._setCameraOrientation(options.orientation);\n }\n\n if (options.position) {\n const newPosition = [options.position.x, options.position.y, options.position.z];\n if (!vec3.exactEquals(newPosition, this._camera.position)) {\n this._setCameraPosition(newPosition);\n changed = true;\n }\n }\n\n if (changed) {\n this._updateStateFromCamera();\n this.recenterOnTerrain();\n }\n }\n\n getFreeCameraOptions(): FreeCameraOptions {\n this._updateCameraState();\n const pos = this._camera.position;\n const options = new FreeCameraOptions();\n options.position = new MercatorCoordinate(pos[0], pos[1], pos[2]);\n options.orientation = this._camera.orientation;\n options._elevation = this.elevation;\n options._renderWorldCopies = this.renderWorldCopies;\n\n return options;\n }\n\n _setCameraOrientation(orientation: Quat): boolean {\n // zero-length quaternions are not valid\n if (!quat.length(orientation))\n return false;\n\n quat.normalize(orientation, orientation);\n\n // The new orientation must be sanitized by making sure it can be represented\n // with a pitch and bearing. Roll-component must be removed and the camera can't be upside down\n const forward = vec3.transformQuat([], [0, 0, -1], orientation);\n const up = vec3.transformQuat([], [0, -1, 0], orientation);\n\n if (up[2] < 0.0)\n return false;\n\n const updatedOrientation = orientationFromFrame(forward, up);\n if (!updatedOrientation)\n return false;\n\n this._camera.orientation = updatedOrientation;\n return true;\n }\n\n _setCameraPosition(position: Vec3) {\n // Altitude must be clamped to respect min and max zoom\n const minWorldSize = this.zoomScale(this.minZoom) * this.tileSize;\n const maxWorldSize = this.zoomScale(this.maxZoom) * this.tileSize;\n const distToCenter = this.cameraToCenterDistance;\n\n position[2] = clamp(position[2], distToCenter / maxWorldSize, distToCenter / minWorldSize);\n this._camera.position = position;\n }\n\n /**\n * The center of the screen in pixels with the top-left corner being (0,0)\n * and +y axis pointing downwards. This accounts for padding.\n *\n * @readonly\n * @type {Point}\n * @memberof Transform\n */\n get centerPoint(): Point {\n return this._edgeInsets.getCenter(this.width, this.height);\n }\n\n /**\n * Returns the vertical half-fov, accounting for padding, in radians.\n *\n * @readonly\n * @type {number}\n * @private\n */\n get fovAboveCenter(): number {\n return this._fov * (0.5 + this.centerOffset.y / this.height);\n }\n\n /**\n * Returns true if the padding options are equal.\n *\n * @param {PaddingOptions} padding The padding options to compare.\n * @returns {boolean} True if the padding options are equal.\n * @memberof Transform\n */\n isPaddingEqual(padding: PaddingOptions): boolean {\n return this._edgeInsets.equals(padding);\n }\n\n /**\n * Helper method to update edge-insets inplace.\n *\n * @param {PaddingOptions} start The initial padding options.\n * @param {PaddingOptions} target The target padding options.\n * @param {number} t The interpolation variable.\n * @memberof Transform\n */\n interpolatePadding(start: PaddingOptions, target: PaddingOptions, t: number) {\n this._unmodified = false;\n this._edgeInsets.interpolate(start, target, t);\n this._constrain();\n this._calcMatrices();\n }\n\n /**\n * Return the highest zoom level that fully includes all tiles within the transform's boundaries.\n * @param {Object} options Options.\n * @param {number} options.tileSize Tile size, expressed in screen pixels.\n * @param {boolean} options.roundZoom Target zoom level. If true, the value will be rounded to the closest integer. Otherwise the value will be floored.\n * @returns {number} An integer zoom level at which all tiles will be visible.\n */\n coveringZoomLevel(options: {roundZoom?: boolean, tileSize: number}): number {\n const z = (options.roundZoom ? Math.round : Math.floor)(\n this.zoom + this.scaleZoom(this.tileSize / options.tileSize)\n );\n // At negative zoom levels load tiles from z0 because negative tile zoom levels don't exist.\n return Math.max(0, z);\n }\n\n /**\n * Return any \"wrapped\" copies of a given tile coordinate that are visible\n * in the current view.\n *\n * @private\n */\n getVisibleUnwrappedCoordinates(tileID: CanonicalTileID): Array<UnwrappedTileID> {\n const result = [new UnwrappedTileID(0, tileID)];\n if (this.renderWorldCopies) {\n const utl = this.pointCoordinate(new Point(0, 0));\n const utr = this.pointCoordinate(new Point(this.width, 0));\n const ubl = this.pointCoordinate(new Point(this.width, this.height));\n const ubr = this.pointCoordinate(new Point(0, this.height));\n const w0 = Math.floor(Math.min(utl.x, utr.x, ubl.x, ubr.x));\n const w1 = Math.floor(Math.max(utl.x, utr.x, ubl.x, ubr.x));\n\n // Add an extra copy of the world on each side to properly render ImageSources and CanvasSources.\n // Both sources draw outside the tile boundaries of the tile that \"contains them\" so we need\n // to add extra copies on both sides in case offscreen tiles need to draw into on-screen ones.\n const extraWorldCopy = 1;\n\n for (let w = w0 - extraWorldCopy; w <= w1 + extraWorldCopy; w++) {\n if (w === 0) continue;\n result.push(new UnwrappedTileID(w, tileID));\n }\n }\n return result;\n }\n\n /**\n * Return all coordinates that could cover this transform for a covering\n * zoom level.\n * @param {Object} options\n * @param {number} options.tileSize\n * @param {number} options.minzoom\n * @param {number} options.maxzoom\n * @param {boolean} options.roundZoom\n * @param {boolean} options.reparseOverscaled\n * @returns {Array<OverscaledTileID>} OverscaledTileIDs\n * @private\n */\n coveringTiles(\n options: {\n tileSize: number,\n minzoom?: number,\n maxzoom?: number,\n roundZoom?: boolean,\n reparseOverscaled?: boolean,\n renderWorldCopies?: boolean,\n isTerrainDEM?: boolean\n }\n ): Array<OverscaledTileID> {\n let z = this.coveringZoomLevel(options);\n const actualZ = z;\n\n const useElevationData = this.elevation && !options.isTerrainDEM;\n const isMercator = this.projection.name === 'mercator';\n\n if (options.minzoom !== undefined && z < options.minzoom) return [];\n if (options.maxzoom !== undefined && z > options.maxzoom) z = options.maxzoom;\n\n const centerCoord = this.locationCoordinate(this.center);\n const centerLatitude = this.center.lat;\n const numTiles = 1 << z;\n const centerPoint = [numTiles * centerCoord.x, numTiles * centerCoord.y, 0];\n const isGlobe = this.projection.name === 'globe';\n const zInMeters = !isGlobe;\n const cameraFrustum = Frustum.fromInvProjectionMatrix(this.invProjMatrix, this.worldSize, z, zInMeters);\n const cameraCoord = isGlobe ? this._camera.mercatorPosition : this.pointCoordinate(this.getCameraPoint());\n const meterToTile = numTiles * mercatorZfromAltitude(1, this.center.lat);\n const cameraAltitude = this._camera.position[2] / mercatorZfromAltitude(1, this.center.lat);\n const cameraPoint = [numTiles * cameraCoord.x, numTiles * cameraCoord.y, cameraAltitude * (zInMeters ? 1 : meterToTile)];\n // Let's consider an example for !roundZoom: e.g. tileZoom 16 is used from zoom 16 all the way to zoom 16.99.\n // This would mean that the minimal distance to split would be based on distance from camera to center of 16.99 zoom.\n // The same is already incorporated in logic behind roundZoom for raster (so there is no adjustment needed in following line).\n // 0.02 added to compensate for precision errors, see \"coveringTiles for terrain\" test in transform.test.js.\n const zoomSplitDistance = this.cameraToCenterDistance / options.tileSize * (options.roundZoom ? 1 : 0.502);\n\n // No change of LOD behavior for pitch lower than 60 and when there is no top padding: return only tile ids from the requested zoom level\n const minZoom = this.pitch <= 60.0 && this._edgeInsets.top <= this._edgeInsets.bottom && !this._elevation && !this.projection.isReprojectedInTileSpace ? z : 0;\n\n // When calculating tile cover for terrain, create deep AABB for nodes, to ensure they intersect frustum: for sources,\n // other than DEM, use minimum of visible DEM tiles and center altitude as upper bound (pitch is always less than 90°).\n const maxRange = options.isTerrainDEM && this._elevation ? this._elevation.exaggeration() * 10000 : this._centerAltitude;\n const minRange = options.isTerrainDEM ? -maxRange : this._elevation ? this._elevation.getMinElevationBelowMSL() : 0;\n\n const scaleAdjustment = this.projection.isReprojectedInTileSpace ? getScaleAdjustment(this) : 1.0;\n\n const relativeScaleAtMercatorCoord = mc => {\n // Calculate how scale compares between projected coordinates and mercator coordinates.\n // Returns a length. The units don't matter since the result is only\n // used in a ratio with other values returned by this function.\n\n // Construct a small square in Mercator coordinates.\n const offset = 1 / 40000;\n const mcEast = new MercatorCoordinate(mc.x + offset, mc.y, mc.z);\n const mcSouth = new MercatorCoordinate(mc.x, mc.y + offset, mc.z);\n\n // Convert the square to projected coordinates.\n const ll = mc.toLngLat();\n const llEast = mcEast.toLngLat();\n const llSouth = mcSouth.toLngLat();\n const p = this.locationCoordinate(ll);\n const pEast = this.locationCoordinate(llEast);\n const pSouth = this.locationCoordinate(llSouth);\n\n // Calculate the size of each edge of the reprojected square\n const dx = Math.hypot(pEast.x - p.x, pEast.y - p.y);\n const dy = Math.hypot(pSouth.x - p.x, pSouth.y - p.y);\n\n // Calculate the size of a projected square that would have the\n // same area as the reprojected square.\n return Math.sqrt(dx * dy) * scaleAdjustment / offset;\n };\n\n const newRootTile = (wrap: number): any => {\n const max = maxRange;\n const min = minRange;\n return {\n // With elevation, this._elevation provides z coordinate values. For 2D:\n // All tiles are on zero elevation plane => z difference is zero\n aabb: tileAABB(this, numTiles, 0, 0, 0, wrap, min, max, this.projection),\n zoom: 0,\n x: 0,\n y: 0,\n minZ: min,\n maxZ: max,\n wrap,\n fullyVisible: false\n };\n };\n\n // Do a depth-first traversal to find visible tiles and proper levels of detail\n const stack = [];\n let result = [];\n const maxZoom = z;\n const overscaledZ = options.reparseOverscaled ? actualZ : z;\n const square = a => a * a;\n const cameraHeightSqr = square((cameraAltitude - this._centerAltitude) * meterToTile); // in tile coordinates.\n\n const getAABBFromElevation = (it) => {\n assert(this._elevation);\n if (!this._elevation || !it.tileID || !isMercator) return; // To silence flow.\n const minmax = this._elevation.getMinMaxForTile(it.tileID);\n const aabb = it.aabb;\n if (minmax) {\n aabb.min[2] = minmax.min;\n aabb.max[2] = minmax.max;\n aabb.center[2] = (aabb.min[2] + aabb.max[2]) / 2;\n } else {\n it.shouldSplit = shouldSplit(it);\n if (!it.shouldSplit) {\n // At final zoom level, while corresponding DEM tile is not loaded yet,\n // assume center elevation. This covers ground to horizon and prevents\n // loading unnecessary tiles until DEM cover is fully loaded.\n aabb.min[2] = aabb.max[2] = aabb.center[2] = this._centerAltitude;\n }\n }\n };\n\n // Scale distance to split for acute angles.\n // dzSqr: z component of camera to tile distance, square.\n // dSqr: 3D distance of camera to tile, square.\n const distToSplitScale = (dzSqr, dSqr) => {\n // When the angle between camera to tile ray and tile plane is smaller\n // than acuteAngleThreshold, scale the distance to split. Scaling is adaptive: smaller\n // the angle, the scale gets lower value. Although it seems early to start at 45,\n // it is not: scaling kicks in around 60 degrees pitch.\n const acuteAngleThresholdSin = 0.707; // Math.sin(45)\n const stretchTile = 1.1;\n // Distances longer than 'dz / acuteAngleThresholdSin' gets scaled\n // following geometric series sum: every next dz length in distance can be\n // 'stretchTile times' longer. It is further, the angle is sharper. Total,\n // adjusted, distance would then be:\n // = dz / acuteAngleThresholdSin + (dz * stretchTile + dz * stretchTile ^ 2 + ... + dz * stretchTile ^ k),\n // where k = (d - dz / acuteAngleThresholdSin) / dz = d / dz - 1 / acuteAngleThresholdSin;\n // = dz / acuteAngleThresholdSin + dz * ((stretchTile ^ (k + 1) - 1) / (stretchTile - 1) - 1)\n // or put differently, given that k is based on d and dz, tile on distance d could be used on distance scaled by:\n // 1 / acuteAngleThresholdSin + (stretchTile ^ (k + 1) - 1) / (stretchTile - 1) - 1\n if (dSqr * square(acuteAngleThresholdSin) < dzSqr) return 1.0; // Early return, no scale.\n const r = Math.sqrt(dSqr / dzSqr);\n const k = r - 1 / acuteAngleThresholdSin;\n return r / (1 / acuteAngleThresholdSin + (Math.pow(stretchTile, k + 1) - 1) / (stretchTile - 1) - 1);\n };\n\n const shouldSplit = (it) => {\n if (it.zoom < minZoom) {\n return true;\n } else if (it.zoom === maxZoom) {\n return false;\n }\n if (it.shouldSplit != null) {\n return it.shouldSplit;\n }\n const dx = it.aabb.distanceX(cameraPoint);\n const dy = it.aabb.distanceY(cameraPoint);\n let dzSqr = cameraHeightSqr;\n\n let tileScaleAdjustment = 1;\n if (isGlobe) {\n dzSqr = square(it.aabb.distanceZ(cameraPoint));\n // Compensate physical sizes of the tiles when determining which zoom level to use.\n // In practice tiles closer to poles should use more aggressive LOD as their\n // physical size is already smaller than size of tiles near the equator.\n const tilesAtZoom = Math.pow(2, it.zoom);\n const minLat = latFromMercatorY((it.y + 1) / tilesAtZoom);\n const maxLat = latFromMercatorY((it.y) / tilesAtZoom);\n const closestLat = Math.min(Math.max(centerLatitude, minLat), maxLat);\n\n const relativeTileScale = circumferenceAtLatitude(closestLat) / circumferenceAtLatitude(centerLatitude);\n\n // With globe, the rendered scale does not exactly match the mercator scale at low zoom levels.\n // Account for this difference during LOD of loading so that you load the correct size tiles.\n // We try to compromise between two conflicting requirements:\n // - loading tiles at the camera's zoom level (for visual and styling consistency)\n // - loading correct size tiles (to reduce the number of tiles loaded)\n // These are arbitrarily balanced:\n if (closestLat === centerLatitude) {\n // For tiles that are in the middle of the viewport, prioritize matching the camera\n // zoom and allow divergence from the true scale.\n const maxDivergence = 0.3;\n tileScaleAdjustment = 1 / Math.max(1, this._mercatorScaleRatio - maxDivergence);\n } else {\n // For other tiles, use the real scale to reduce tile counts near poles.\n tileScaleAdjustment = Math.min(1, relativeTileScale / this._mercatorScaleRatio);\n }\n\n // Ensure that all tiles near the center have the same zoom level.\n // With LOD tile loading, tile zoom levels can change when scale slightly changes.\n // These differences can be pretty different in globe view. Work around this by\n // making more tiles match the center tile's zoom level. If the tiles are nearly big enough,\n // round up. Only apply this adjustment before the transition to mercator rendering has started.\n if (this.zoom <= GLOBE_ZOOM_THRESHOLD_MIN && it.zoom === maxZoom - 1 && relativeTileScale >= 0.9) {\n return true;\n }\n } else {\n assert(zInMeters);\n if (useElevationData) {\n dzSqr = square(it.aabb.distanceZ(cameraPoint) * meterToTile);\n }\n if (this.projection.isReprojectedInTileSpace && actualZ <= 5) {\n // In other projections, not all tiles are the same size.\n // Account for the tile size difference by adjusting the distToSplit.\n // Adjust by the ratio of the area at the tile center to the area at the map center.\n // Adjustments are only needed at lower zooms where tiles are not similarly sized.\n const numTiles = Math.pow(2, it.zoom);\n const relativeScale = relativeScaleAtMercatorCoord(new MercatorCoordinate((it.x + 0.5) / numTiles, (it.y + 0.5) / numTiles));\n // Fudge the ratio slightly so that all tiles near the center have the same zoom level.\n tileScaleAdjustment = relativeScale > 0.85 ? 1 : relativeScale;\n }\n }\n\n const distanceSqr = dx * dx + dy * dy + dzSqr;\n const distToSplit = (1 << maxZoom - it.zoom) * zoomSplitDistance * tileScaleAdjustment;\n const distToSplitSqr = square(distToSplit * distToSplitScale(Math.max(dzSqr, cameraHeightSqr), distanceSqr));\n\n return distanceSqr < distToSplitSqr;\n };\n\n if (this.renderWorldCopies) {\n // Render copy of the globe thrice on both sides\n for (let i = 1; i <= NUM_WORLD_COPIES; i++) {\n stack.push(newRootTile(-i));\n stack.push(newRootTile(i));\n }\n }\n\n stack.push(newRootTile(0));\n\n while (stack.length > 0) {\n const it = stack.pop();\n const x = it.x;\n const y = it.y;\n let fullyVisible = it.fullyVisible;\n\n // Visibility of a tile is not required if any of its ancestor is fully inside the frustum\n if (!fullyVisible) {\n const intersectResult = it.aabb.intersects(cameraFrustum);\n\n if (intersectResult === 0)\n continue;\n\n fullyVisible = intersectResult === 2;\n }\n\n // Have we reached the target depth or is the tile too far away to be any split further?\n if (it.zoom === maxZoom || !shouldSplit(it)) {\n const tileZoom = it.zoom === maxZoom ? overscaledZ : it.zoom;\n if (!!options.minzoom && options.minzoom > tileZoom) {\n // Not within source tile range.\n continue;\n }\n\n const dx = centerPoint[0] - ((0.5 + x + (it.wrap << it.zoom)) * (1 << (z - it.zoom)));\n const dy = centerPoint[1] - 0.5 - y;\n const id = it.tileID ? it.tileID : new OverscaledTileID(tileZoom, it.wrap, it.zoom, x, y);\n result.push({tileID: id, distanceSq: dx * dx + dy * dy});\n continue;\n }\n\n for (let i = 0; i < 4; i++) {\n const childX = (x << 1) + (i % 2);\n const childY = (y << 1) + (i >> 1);\n\n const aabb = isMercator ? it.aabb.quadrant(i) : tileAABB(this, numTiles, it.zoom + 1, childX, childY, it.wrap, it.minZ, it.maxZ, this.projection);\n const child = {aabb, zoom: it.zoom + 1, x: childX, y: childY, wrap: it.wrap, fullyVisible, tileID: undefined, shouldSplit: undefined, minZ: it.minZ, maxZ: it.maxZ};\n if (useElevationData && !isGlobe) {\n child.tileID = new OverscaledTileID(it.zoom + 1 === maxZoom ? overscaledZ : it.zoom + 1, it.wrap, it.zoom + 1, childX, childY);\n getAABBFromElevation(child);\n }\n stack.push(child);\n }\n }\n\n if (this.fogCullDistSq) {\n const fogCullDistSq = this.fogCullDistSq;\n const horizonLineFromTop = this.horizonLineFromTop();\n result = result.filter(entry => {\n const min = [0, 0, 0, 1];\n const max = [EXTENT, EXTENT, 0, 1];\n\n const fogTileMatrix = this.calculateFogTileMatrix(entry.tileID.toUnwrapped());\n\n vec4.transformMat4(min, min, fogTileMatrix);\n vec4.transformMat4(max, max, fogTileMatrix);\n\n const sqDist = getAABBPointSquareDist(min, max);\n\n if (sqDist === 0) { return true; }\n\n let overHorizonLine = false;\n\n // Terrain loads at one zoom level lower than the raster data,\n // so the following checks whether the terrain sits above the horizon and ensures that\n // when mountains stick out above the fog (due to horizon-blend),\n // we haven’t accidentally culled some of the raster tiles we need to draw on them.\n // If we don’t do this, the terrain is default black color and may flash in and out as we move toward it.\n\n const elevation = this._elevation;\n\n if (elevation && sqDist > fogCullDistSq && horizonLineFromTop !== 0) {\n const projMatrix = this.calculateProjMatrix(entry.tileID.toUnwrapped());\n\n let minmax;\n if (!options.isTerrainDEM) {\n minmax = elevation.getMinMaxForTile(entry.tileID);\n }\n\n if (!minmax) { minmax = {min: minRange, max: maxRange}; }\n\n // ensure that we want `this.rotation` instead of `this.bearing` here\n const cornerFar = furthestTileCorner(this.rotation);\n\n const farX = cornerFar[0] * EXTENT;\n const farY = cornerFar[1] * EXTENT;\n\n const worldFar = [farX, farY, minmax.max];\n\n // World to NDC\n vec3.transformMat4(worldFar, worldFar, projMatrix);\n\n // NDC to Screen\n const screenCoordY = (1 - worldFar[1]) * this.height * 0.5;\n\n // Prevent cutting tiles crossing over the horizon line to\n // prevent pop-in and out within the fog culling range\n overHorizonLine = screenCoordY < horizonLineFromTop;\n }\n\n return sqDist < fogCullDistSq || overHorizonLine;\n });\n }\n\n const cover = result.sort((a, b) => a.distanceSq - b.distanceSq).map(a => a.tileID);\n // Relax the assertion on terrain, on high zoom we use distance to center of tile\n // while camera might be closer to selected center of map.\n assert(!cover.length || this.elevation || cover[0].overscaledZ === overscaledZ || !isMercator);\n return cover;\n }\n\n resize(width: number, height: number) {\n this.width = width;\n this.height = height;\n\n this.pixelsToGLUnits = [2 / width, -2 / height];\n this._constrain();\n this._calcMatrices();\n }\n\n get unmodified(): boolean { return this._unmodified; }\n\n zoomScale(zoom: number): number { return Math.pow(2, zoom); }\n scaleZoom(scale: number): number { return Math.log(scale) / Math.LN2; }\n\n // Transform from LngLat to Point in world coordinates [-180, 180] x [90, -90] --> [0, this.worldSize] x [0, this.worldSize]\n project(lnglat: LngLat): Point {\n const lat = clamp(lnglat.lat, -MAX_MERCATOR_LATITUDE, MAX_MERCATOR_LATITUDE);\n const projectedLngLat = this.projection.project(lnglat.lng, lat);\n return new Point(\n projectedLngLat.x * this.worldSize,\n projectedLngLat.y * this.worldSize);\n }\n\n // Transform from Point in world coordinates to LngLat [0, this.worldSize] x [0, this.worldSize] --> [-180, 180] x [90, -90]\n unproject(point: Point): LngLat {\n return this.projection.unproject(point.x / this.worldSize, point.y / this.worldSize);\n }\n\n // Point at center in world coordinates.\n get point(): Point { return this.project(this.center); }\n\n setLocationAtPoint(lnglat: LngLat, point: Point) {\n let x, y;\n const centerPoint = this.centerPoint;\n\n if (this.projection.name === 'globe') {\n // Pixel coordinates are applied directly to the globe\n const worldSize = this.worldSize;\n x = (point.x - centerPoint.x) / worldSize;\n y = (point.y - centerPoint.y) / worldSize;\n } else {\n const a = this.pointCoordinate(point);\n const b = this.pointCoordinate(centerPoint);\n x = a.x - b.x;\n y = a.y - b.y;\n }\n\n const loc = this.locationCoordinate(lnglat);\n this.setLocation(new MercatorCoordinate(loc.x - x, loc.y - y));\n }\n\n setLocation(location: MercatorCoordinate) {\n this.center = this.coordinateLocation(location);\n if (this.projection.wrap) {\n this.center = this.center.wrap();\n }\n }\n\n /**\n * Given a location, return the screen point that corresponds to it. In 3D mode\n * (with terrain) this behaves the same as in 2D mode.\n * This method is coupled with {@see pointLocation} in 3D mode to model map manipulation\n * using flat plane approach to keep constant elevation above ground.\n * @param {LngLat} lnglat location\n * @returns {Point} screen point\n * @private\n */\n locationPoint(lnglat: LngLat): Point {\n return this.projection.locationPoint(this, lnglat);\n }\n\n /**\n * Given a location, return the screen point that corresponds to it\n * In 3D mode (when terrain is enabled) elevation is sampled for the point before\n * projecting it. In 2D mode, behaves the same locationPoint.\n * @param {LngLat} lnglat location\n * @returns {Point} screen point\n * @private\n */\n locationPoint3D(lnglat: LngLat): Point {\n return this.projection.locationPoint(this, lnglat, true);\n }\n\n /**\n * Given a point on screen, return its lnglat\n * @param {Point} p screen point\n * @returns {LngLat} lnglat location\n * @private\n */\n pointLocation(p: Point): LngLat {\n return this.coordinateLocation(this.pointCoordinate(p));\n }\n\n /**\n * Given a point on screen, return its lnglat\n * In 3D mode (map with terrain) returns location of terrain raycast point.\n * In 2D mode, behaves the same as {@see pointLocation}.\n * @param {Point} p screen point\n * @returns {LngLat} lnglat location\n * @private\n */\n pointLocation3D(p: Point): LngLat {\n return this.coordinateLocation(this.pointCoordinate3D(p));\n }\n\n /**\n * Given a geographical lngLat, return an unrounded\n * coordinate that represents it at this transform's zoom level.\n * @param {LngLat} lngLat\n * @returns {Coordinate}\n * @private\n */\n locationCoordinate(lngLat: LngLat, altitude?: number): MercatorCoordinate {\n const z = altitude ?\n mercatorZfromAltitude(altitude, lngLat.lat) :\n undefined;\n const projectedLngLat = this.projection.project(lngLat.lng, lngLat.lat);\n return new MercatorCoordinate(\n projectedLngLat.x,\n projectedLngLat.y,\n z);\n }\n\n /**\n * Given a Coordinate, return its geographical position.\n * @param {Coordinate} coord\n * @returns {LngLat} lngLat\n * @private\n */\n coordinateLocation(coord: MercatorCoordinate): LngLat {\n return this.projection.unproject(coord.x, coord.y);\n }\n\n /**\n * Casts a ray from a point on screen and returns the Ray,\n * and the extent along it, at which it intersects the map plane.\n *\n * @param {Point} p Viewport pixel co-ordinates.\n * @param {number} z Optional altitude of the map plane, defaulting to elevation at center.\n * @returns {{ p0: Vec4, p1: Vec4, t: number }} p0,p1 are two points on the ray.\n * t is the fractional extent along the ray at which the ray intersects the map plane.\n * @private\n */\n pointRayIntersection(p: Point, z: ?number): RayIntersectionResult {\n const targetZ = (z !== undefined && z !== null) ? z : this._centerAltitude;\n // Since we don't know the correct projected z value for the point,\n // unproject two points to get a line and then find the point on that\n // line with z=0.\n\n const p0 = [p.x, p.y, 0, 1];\n const p1 = [p.x, p.y, 1, 1];\n\n vec4.transformMat4(p0, p0, this.pixelMatrixInverse);\n vec4.transformMat4(p1, p1, this.pixelMatrixInverse);\n\n const w0 = p0[3];\n const w1 = p1[3];\n vec4.scale(p0, p0, 1 / w0);\n vec4.scale(p1, p1, 1 / w1);\n\n const z0 = p0[2];\n const z1 = p1[2];\n\n const t = z0 === z1 ? 0 : (targetZ - z0) / (z1 - z0);\n\n return {p0, p1, t};\n }\n\n screenPointToMercatorRay(p: Point): Ray {\n const p0 = [p.x, p.y, 0, 1];\n const p1 = [p.x, p.y, 1, 1];\n\n vec4.transformMat4(p0, p0, this.pixelMatrixInverse);\n vec4.transformMat4(p1, p1, this.pixelMatrixInverse);\n\n vec4.scale(p0, p0, 1 / p0[3]);\n vec4.scale(p1, p1, 1 / p1[3]);\n\n // Convert altitude from meters to pixels.\n p0[2] = mercatorZfromAltitude(p0[2], this._center.lat) * this.worldSize;\n p1[2] = mercatorZfromAltitude(p1[2], this._center.lat) * this.worldSize;\n\n vec4.scale(p0, p0, 1 / this.worldSize);\n vec4.scale(p1, p1, 1 / this.worldSize);\n\n return new Ray([p0[0], p0[1], p0[2]], vec3.normalize([], vec3.sub([], p1, p0)));\n }\n\n /**\n * Helper method to convert the ray intersection with the map plane to MercatorCoordinate.\n *\n * @param {RayIntersectionResult} rayIntersection\n * @returns {MercatorCoordinate}\n * @private\n */\n rayIntersectionCoordinate(rayIntersection: RayIntersectionResult): MercatorCoordinate {\n const {p0, p1, t} = rayIntersection;\n\n const z0 = mercatorZfromAltitude(p0[2], this._center.lat);\n const z1 = mercatorZfromAltitude(p1[2], this._center.lat);\n\n return new MercatorCoordinate(\n interpolate(p0[0], p1[0], t) / this.worldSize,\n interpolate(p0[1], p1[1], t) / this.worldSize,\n interpolate(z0, z1, t));\n }\n\n /**\n * Given a point on screen, returns MercatorCoordinate.\n * @param {Point} p Top left origin screen point, in pixels.\n * @param {number} z Optional altitude of the map plane, defaulting to elevation at center.\n * @private\n */\n pointCoordinate(p: Point, z?: number = this._centerAltitude): MercatorCoordinate {\n return this.projection.pointCoordinate(this, p.x, p.y, z);\n }\n\n /**\n * Given a point on screen, returns MercatorCoordinate.\n * In 3D mode, raycast to terrain. In 2D mode, behaves the same as {@see pointCoordinate}.\n * For p above terrain, don't return point behind camera but clamp p.y at the top of terrain.\n * @param {Point} p top left origin screen point, in pixels.\n * @private\n */\n pointCoordinate3D(p: Point): MercatorCoordinate {\n if (!this.elevation) return this.pointCoordinate(p);\n let raycast: ?Vec3 = this.projection.pointCoordinate3D(this, p.x, p.y);\n if (raycast) return new MercatorCoordinate(raycast[0], raycast[1], raycast[2]);\n let start = 0, end = this.horizonLineFromTop();\n if (p.y > end) return this.pointCoordinate(p); // holes between tiles below horizon line or below bottom.\n const samples = 10;\n const threshold = 0.02 * end;\n const r = p.clone();\n\n for (let i = 0; i < samples && end - start > threshold; i++) {\n r.y = interpolate(start, end, 0.66); // non uniform binary search favoring points closer to horizon.\n const rCast = this.projection.pointCoordinate3D(this, r.x, r.y);\n if (rCast) {\n end = r.y;\n raycast = rCast;\n } else {\n start = r.y;\n }\n }\n return raycast ? new MercatorCoordinate(raycast[0], raycast[1], raycast[2]) : this.pointCoordinate(p);\n }\n\n /**\n * Returns true if a screenspace Point p, is above the horizon.\n * In non-globe projections, this approximates the map as an infinite plane and does not account for z0-z3\n * wherein the map is small quad with whitespace above the north pole and below the south pole.\n *\n * @param {Point} p\n * @returns {boolean}\n * @private\n */\n isPointAboveHorizon(p: Point): boolean {\n return this.projection.isPointAboveHorizon(this, p);\n }\n\n /**\n * Given a coordinate, return the screen point that corresponds to it\n * @param {Coordinate} coord\n * @param {boolean} sampleTerrainIn3D in 3D mode (terrain enabled), sample elevation for the point.\n * If false, do the same as in 2D mode, assume flat camera elevation plane for all points.\n * @returns {Point} screen point\n * @private\n */\n _coordinatePoint(coord: MercatorCoordinate, sampleTerrainIn3D: boolean): Point {\n const elevation = sampleTerrainIn3D && this.elevation ? this.elevation.getAtPointOrZero(coord, this._centerAltitude) : this._centerAltitude;\n const p = [coord.x * this.worldSize, coord.y * this.worldSize, elevation + coord.toAltitude(), 1];\n vec4.transformMat4(p, p, this.pixelMatrix);\n return p[3] > 0 ?\n new Point(p[0] / p[3], p[1] / p[3]) :\n new Point(Number.MAX_VALUE, Number.MAX_VALUE);\n }\n\n _getBounds(min: number, max: number): LngLatBounds {\n const topLeft = new Point(this._edgeInsets.left, this._edgeInsets.top);\n const topRight = new Point(this.width - this._edgeInsets.right, this._edgeInsets.top);\n const bottomRight = new Point(this.width - this._edgeInsets.right, this.height - this._edgeInsets.bottom);\n const bottomLeft = new Point(this._edgeInsets.left, this.height - this._edgeInsets.bottom);\n\n // Consider far points at the maximum possible elevation\n // and near points at the minimum to ensure full coverage.\n let tl = this.pointCoordinate(topLeft, min);\n let tr = this.pointCoordinate(topRight, min);\n const br = this.pointCoordinate(bottomRight, max);\n const bl = this.pointCoordinate(bottomLeft, max);\n\n // Snap points if off the edges of map (Latitude is too high or low).\n const slope = (p1, p2) => (p2.y - p1.y) / (p2.x - p1.x);\n\n if (tl.y > 1 && tr.y >= 0) tl = new MercatorCoordinate((1 - bl.y) / slope(bl, tl) + bl.x, 1);\n else if (tl.y < 0 && tr.y <= 1) tl = new MercatorCoordinate(-bl.y / slope(bl, tl) + bl.x, 0);\n\n if (tr.y > 1 && tl.y >= 0) tr = new MercatorCoordinate((1 - br.y) / slope(br, tr) + br.x, 1);\n else if (tr.y < 0 && tl.y <= 1) tr = new MercatorCoordinate(-br.y / slope(br, tr) + br.x, 0);\n\n return new LngLatBounds()\n .extend(this.coordinateLocation(tl))\n .extend(this.coordinateLocation(tr))\n .extend(this.coordinateLocation(bl))\n .extend(this.coordinateLocation(br));\n }\n\n _getBounds3D(): LngLatBounds {\n assert(this.elevation);\n const elevation = ((this.elevation: any): Elevation);\n if (!elevation.visibleDemTiles.length) { return this._getBounds(0, 0); }\n const minmax = elevation.visibleDemTiles.reduce((acc, t) => {\n if (t.dem) {\n const tree = t.dem.tree;\n acc.min = Math.min(acc.min, tree.minimums[0]);\n acc.max = Math.max(acc.max, tree.maximums[0]);\n }\n return acc;\n }, {min: Number.MAX_VALUE, max: 0});\n assert(minmax.min !== Number.MAX_VALUE);\n return this._getBounds(minmax.min * elevation.exaggeration(), minmax.max * elevation.exaggeration());\n }\n\n /**\n * Returns the map's geographical bounds. When the bearing or pitch is non-zero, the visible region is not\n * an axis-aligned rectangle, and the result is the smallest bounds that encompasses the visible region.\n *\n * @returns {LngLatBounds} Returns a {@link LngLatBounds} object describing the map's geographical bounds.\n */\n getBounds(): LngLatBounds {\n if (this._terrainEnabled()) return this._getBounds3D();\n return this._getBounds(0, 0);\n }\n\n /**\n * Returns position of horizon line from the top of the map in pixels.\n * If horizon is not visible, returns 0 by default or a negative value if called with clampToTop = false.\n * @private\n */\n horizonLineFromTop(clampToTop: boolean = true): number {\n // h is height of space above map center to horizon.\n const h = this.height / 2 / Math.tan(this._fov / 2) / Math.tan(Math.max(this._pitch, 0.1)) + this.centerOffset.y;\n const offset = this.height / 2 - h * (1 - this._horizonShift);\n return clampToTop ? Math.max(0, offset) : offset;\n }\n\n /**\n * Returns the maximum geographical bounds the map is constrained to, or `null` if none set.\n * @returns {LngLatBounds} {@link LngLatBounds}.\n */\n getMaxBounds(): ?LngLatBounds {\n return this.maxBounds;\n }\n\n /**\n * Sets or clears the map's geographical constraints.\n *\n * @param {LngLatBounds} bounds A {@link LngLatBounds} object describing the new geographic boundaries of the map.\n */\n setMaxBounds(bounds: ?LngLatBounds) {\n this.maxBounds = bounds;\n\n this.minLat = -MAX_MERCATOR_LATITUDE;\n this.maxLat = MAX_MERCATOR_LATITUDE;\n this.minLng = -180;\n this.maxLng = 180;\n\n if (bounds) {\n this.minLat = bounds.getSouth();\n this.maxLat = bounds.getNorth();\n this.minLng = bounds.getWest();\n this.maxLng = bounds.getEast();\n if (this.maxLng < this.minLng) this.maxLng += 360;\n }\n\n this.worldMinX = mercatorXfromLng(this.minLng) * this.tileSize;\n this.worldMaxX = mercatorXfromLng(this.maxLng) * this.tileSize;\n this.worldMinY = mercatorYfromLat(this.maxLat) * this.tileSize;\n this.worldMaxY = mercatorYfromLat(this.minLat) * this.tileSize;\n\n this._constrain();\n }\n\n calculatePosMatrix(unwrappedTileID: UnwrappedTileID, worldSize: number): Float64Array {\n return this.projection.createTileMatrix(this, worldSize, unwrappedTileID);\n }\n\n calculateDistanceTileData(unwrappedTileID: UnwrappedTileID): FeatureDistanceData {\n const distanceDataKey = unwrappedTileID.key;\n const cache = this._distanceTileDataCache;\n if (cache[distanceDataKey]) {\n return cache[distanceDataKey];\n }\n\n //Calculate the offset of the tile\n const canonical = unwrappedTileID.canonical;\n const windowScaleFactor = 1 / this.height;\n const scale = this.cameraWorldSize / this.zoomScale(canonical.z);\n const unwrappedX = canonical.x + Math.pow(2, canonical.z) * unwrappedTileID.wrap;\n const tX = unwrappedX * scale;\n const tY = canonical.y * scale;\n\n const center = this.point;\n\n // Calculate the bearing vector by rotating unit vector [0, -1] clockwise\n const angle = this.angle;\n const bX = Math.sin(-angle);\n const bY = -Math.cos(-angle);\n\n const cX = (center.x - tX) * windowScaleFactor;\n const cY = (center.y - tY) * windowScaleFactor;\n cache[distanceDataKey] = {\n bearing: [bX, bY],\n center: [cX, cY],\n scale: (scale / EXTENT) * windowScaleFactor\n };\n\n return cache[distanceDataKey];\n }\n\n /**\n * Calculate the fogTileMatrix that, given a tile coordinate, can be used to\n * calculate its position relative to the camera in units of pixels divided\n * by the map height. Used with fog for consistent computation of distance\n * from camera.\n *\n * @param {UnwrappedTileID} unwrappedTileID;\n * @private\n */\n calculateFogTileMatrix(unwrappedTileID: UnwrappedTileID): Float32Array {\n const fogTileMatrixKey = unwrappedTileID.key;\n const cache = this._fogTileMatrixCache;\n if (cache[fogTileMatrixKey]) {\n return cache[fogTileMatrixKey];\n }\n\n const posMatrix = this.projection.createTileMatrix(this, this.cameraWorldSize, unwrappedTileID);\n mat4.multiply(posMatrix, this.worldToFogMatrix, posMatrix);\n\n cache[fogTileMatrixKey] = new Float32Array(posMatrix);\n return cache[fogTileMatrixKey];\n }\n\n /**\n * Calculate the projMatrix that, given a tile coordinate, would be used to display the tile on the screen.\n * @param {UnwrappedTileID} unwrappedTileID;\n * @private\n */\n calculateProjMatrix(unwrappedTileID: UnwrappedTileID, aligned: boolean = false): Float32Array {\n const projMatrixKey = unwrappedTileID.key;\n const cache = aligned ? this._alignedProjMatrixCache : this._projMatrixCache;\n if (cache[projMatrixKey]) {\n return cache[projMatrixKey];\n }\n\n const posMatrix = this.calculatePosMatrix(unwrappedTileID, this.worldSize);\n const projMatrix = this.projection.isReprojectedInTileSpace ?\n this.mercatorMatrix : (aligned ? this.alignedProjMatrix : this.projMatrix);\n mat4.multiply(posMatrix, projMatrix, posMatrix);\n\n cache[projMatrixKey] = new Float32Array(posMatrix);\n return cache[projMatrixKey];\n }\n\n calculatePixelsToTileUnitsMatrix(tile: Tile): Float32Array {\n const key = tile.tileID.key;\n const cache = this._pixelsToTileUnitsCache;\n if (cache[key]) {\n return cache[key];\n }\n\n const matrix = getPixelsToTileUnitsMatrix(tile, this);\n cache[key] = matrix;\n return cache[key];\n }\n\n customLayerMatrix(): Array<number> {\n return this.mercatorMatrix.slice();\n }\n\n recenterOnTerrain() {\n\n if (!this._elevation || this.projection.name === 'globe')\n return;\n\n const elevation: Elevation = this._elevation;\n this._updateCameraState();\n\n // Cast a ray towards the sea level and find the intersection point with the terrain.\n // We need to use a camera position that exists in the same coordinate space as the data.\n // The default camera position might have been compensated by the active projection model.\n const mercPixelsPerMeter = mercatorZfromAltitude(1, this._center.lat) * this.worldSize;\n const start = this._computeCameraPosition(mercPixelsPerMeter);\n const dir = this._camera.forward();\n\n // The raycast function expects z-component to be in meters\n const metersToMerc = mercatorZfromAltitude(1.0, this._center.lat);\n start[2] /= metersToMerc;\n dir[2] /= metersToMerc;\n vec3.normalize(dir, dir);\n\n const t = elevation.raycast(start, dir, elevation.exaggeration());\n\n if (t) {\n const point = vec3.scaleAndAdd([], start, dir, t);\n const newCenter = new MercatorCoordinate(point[0], point[1], mercatorZfromAltitude(point[2], latFromMercatorY(point[1])));\n\n const camToNew = [newCenter.x - start[0], newCenter.y - start[1], newCenter.z - start[2] * metersToMerc];\n const maxAltitude = (newCenter.z + vec3.length(camToNew)) * this._projectionScaler;\n this._seaLevelZoom = this._zoomFromMercatorZ(maxAltitude);\n\n // Camera zoom has to be updated as the orbit distance might have changed\n this._centerAltitude = newCenter.toAltitude();\n this._center = this.coordinateLocation(newCenter);\n this._updateZoomFromElevation();\n this._constrain();\n this._calcMatrices();\n }\n }\n\n _constrainCameraAltitude() {\n if (!this._elevation)\n return;\n\n const elevation: Elevation = this._elevation;\n this._updateCameraState();\n\n // Find uncompensated camera position for elevation sampling.\n // The default camera position might have been compensated by the active projection model.\n const mercPixelsPerMeter = mercatorZfromAltitude(1, this._center.lat) * this.worldSize;\n const pos = this._computeCameraPosition(mercPixelsPerMeter);\n\n const elevationAtCamera = elevation.getAtPointOrZero(new MercatorCoordinate(...pos));\n const minHeight = this._minimumHeightOverTerrain() * Math.cos(degToRad(this._maxPitch));\n const terrainElevation = this.pixelsPerMeter / this.worldSize * elevationAtCamera;\n const cameraHeight = this._camera.position[2] - terrainElevation;\n\n if (cameraHeight < minHeight) {\n const center = this.locationCoordinate(this._center, this._centerAltitude);\n const cameraToCenter = [center.x - pos[0], center.y - pos[1], center.z - pos[2]];\n const prevDistToCamera = vec3.length(cameraToCenter);\n\n // Adjust the camera vector so that the camera is placed above the terrain.\n // Distance between the camera and the center point is kept constant.\n cameraToCenter[2] -= (minHeight - cameraHeight) / this._projectionScaler;\n\n const newDistToCamera = vec3.length(cameraToCenter);\n if (newDistToCamera === 0)\n return;\n\n vec3.scale(cameraToCenter, cameraToCenter, prevDistToCamera / newDistToCamera * this._projectionScaler);\n this._camera.position = [center.x - cameraToCenter[0], center.y - cameraToCenter[1], center.z * this._projectionScaler - cameraToCenter[2]];\n\n this._camera.orientation = orientationFromFrame(cameraToCenter, this._camera.up());\n this._updateStateFromCamera();\n }\n }\n\n _constrain() {\n if (!this.center || !this.width || !this.height || this._constraining) return;\n\n this._constraining = true;\n\n // alternate constraining for non-Mercator projections\n if (this.projection.isReprojectedInTileSpace) {\n const center = this.center;\n center.lat = clamp(center.lat, this.minLat, this.maxLat);\n if (this.maxBounds || !this.renderWorldCopies) center.lng = clamp(center.lng, this.minLng, this.maxLng);\n this.center = center;\n this._constraining = false;\n return;\n }\n\n const unmodified = this._unmodified;\n const {x, y} = this.point;\n let s = 0;\n let x2 = x;\n let y2 = y;\n const w2 = this.width / 2;\n const h2 = this.height / 2;\n\n const minY = this.worldMinY * this.scale;\n const maxY = this.worldMaxY * this.scale;\n if (y - h2 < minY) y2 = minY + h2;\n if (y + h2 > maxY) y2 = maxY - h2;\n if (maxY - minY < this.height) {\n s = Math.max(s, this.height / (maxY - minY));\n y2 = (maxY + minY) / 2;\n }\n\n if (this.maxBounds || !this._renderWorldCopies || !this.projection.wrap) {\n const minX = this.worldMinX * this.scale;\n const maxX = this.worldMaxX * this.scale;\n\n // Translate to positive positions with the map center in the center position.\n // This ensures that the map snaps to the correct edge.\n const shift = this.worldSize / 2 - (minX + maxX) / 2;\n x2 = (x + shift + this.worldSize) % this.worldSize - shift;\n\n if (x2 - w2 < minX) x2 = minX + w2;\n if (x2 + w2 > maxX) x2 = maxX - w2;\n if (maxX - minX < this.width) {\n s = Math.max(s, this.width / (maxX - minX));\n x2 = (maxX + minX) / 2;\n }\n }\n\n if (x2 !== x || y2 !== y) { // pan the map to fit the range\n this.center = this.unproject(new Point(x2, y2));\n }\n if (s) { // scale the map to fit the range\n this.zoom += this.scaleZoom(s);\n }\n\n this._constrainCameraAltitude();\n this._unmodified = unmodified;\n this._constraining = false;\n }\n\n /**\n * Returns the minimum zoom at which `this.width` can fit max longitude range\n * and `this.height` can fit max latitude range.\n *\n * @returns {number} The zoom value.\n */\n _minZoomForBounds(): number {\n let minZoom = Math.max(0, this.scaleZoom(this.height / (this.worldMaxY - this.worldMinY)));\n if (this.maxBounds) {\n minZoom = Math.max(minZoom, this.scaleZoom(this.width / (this.worldMaxX - this.worldMinX)));\n }\n return minZoom;\n }\n\n /**\n * Returns the maximum distance of the camera from the center of the bounds, such that\n * `this.width` can fit max longitude range and `this.height` can fit max latitude range.\n * In mercator units.\n *\n * @returns {number} The mercator z coordinate.\n */\n _maxCameraBoundsDistance(): number {\n return this._mercatorZfromZoom(this._minZoomForBounds());\n }\n\n _calcMatrices() {\n if (!this.height) return;\n\n const offset = this.centerOffset;\n\n // Z-axis uses pixel coordinates when globe mode is enabled\n const pixelsPerMeter = this.pixelsPerMeter;\n\n if (this.projection.name === 'globe') {\n const centerScale = mercatorZfromAltitude(1, this.center.lat) * this.worldSize;\n const refScale = mercatorZfromAltitude(1, GLOBE_SCALE_MATCH_LATITUDE) * this.worldSize;\n this._mercatorScaleRatio = centerScale / refScale;\n }\n\n const projectionT = getProjectionInterpolationT(this.projection, this.zoom, this.width, this.height, 1024);\n this._projectionScaler = this.projection.pixelSpaceConversion(this.center.lat, this.worldSize, projectionT);\n\n this.cameraToCenterDistance = this.getCameraToCenterDistance(this.projection);\n\n this._updateCameraState();\n\n this._farZ = this.projection.farthestPixelDistance(this);\n\n // The larger the value of nearZ is\n // - the more depth precision is available for features (good)\n // - clipping starts appearing sooner when the camera is close to 3d features (bad)\n //\n // Smaller values worked well for mapbox-gl-js but deckgl was encountering precision issues\n // when rendering it's layers using custom layers. This value was experimentally chosen and\n // seems to solve z-fighting issues in deckgl while not clipping buildings too close to the camera.\n this._nearZ = this.height / 50;\n\n const zUnit = this.projection.zAxisUnit === \"meters\" ? pixelsPerMeter : 1.0;\n const worldToCamera = this._camera.getWorldToCamera(this.worldSize, zUnit);\n const cameraToClip = this._camera.getCameraToClipPerspective(this._fov, this.width / this.height, this._nearZ, this._farZ);\n\n // Apply center of perspective offset\n cameraToClip[8] = -offset.x * 2 / this.width;\n cameraToClip[9] = offset.y * 2 / this.height;\n\n let m = mat4.mul([], cameraToClip, worldToCamera);\n\n if (this.projection.isReprojectedInTileSpace) {\n // Projections undistort as you zoom in (shear, scale, rotate).\n // Apply the undistortion around the center of the map.\n const mc = this.locationCoordinate(this.center);\n const adjustments = mat4.identity([]);\n mat4.translate(adjustments, adjustments, [mc.x * this.worldSize, mc.y * this.worldSize, 0]);\n mat4.multiply(adjustments, adjustments, getProjectionAdjustments(this));\n mat4.translate(adjustments, adjustments, [-mc.x * this.worldSize, -mc.y * this.worldSize, 0]);\n mat4.multiply(m, m, adjustments);\n this.inverseAdjustmentMatrix = getProjectionAdjustmentInverted(this);\n } else {\n this.inverseAdjustmentMatrix = [1, 0, 0, 1];\n }\n\n // The mercatorMatrix can be used to transform points from mercator coordinates\n // ([0, 0] nw, [1, 1] se) to GL coordinates.\n this.mercatorMatrix = mat4.scale([], m, [this.worldSize, this.worldSize, this.worldSize / pixelsPerMeter, 1.0]);\n\n this.projMatrix = m;\n\n // For tile cover calculation, use inverted of base (non elevated) matrix\n // as tile elevations are in tile coordinates and relative to center elevation.\n this.invProjMatrix = mat4.invert(new Float64Array(16), this.projMatrix);\n\n const clipToCamera = mat4.invert([], cameraToClip);\n this.frustumCorners = FrustumCorners.fromInvProjectionMatrix(clipToCamera, this.horizonLineFromTop(), this.height);\n\n const view = new Float32Array(16);\n mat4.identity(view);\n mat4.scale(view, view, [1, -1, 1]);\n mat4.rotateX(view, view, this._pitch);\n mat4.rotateZ(view, view, this.angle);\n\n const projection = mat4.perspective(new Float32Array(16), this._fov, this.width / this.height, this._nearZ, this._farZ);\n // The distance in pixels the skybox needs to be shifted down by to meet the shifted horizon.\n const skyboxHorizonShift = (Math.PI / 2 - this._pitch) * (this.height / this._fov) * this._horizonShift;\n // Apply center of perspective offset to skybox projection\n projection[8] = -offset.x * 2 / this.width;\n projection[9] = (offset.y + skyboxHorizonShift) * 2 / this.height;\n this.skyboxMatrix = mat4.multiply(view, projection, view);\n\n // Make a second projection matrix that is aligned to a pixel grid for rendering raster tiles.\n // We're rounding the (floating point) x/y values to achieve to avoid rendering raster images to fractional\n // coordinates. Additionally, we adjust by half a pixel in either direction in case that viewport dimension\n // is an odd integer to preserve rendering to the pixel grid. We're rotating this shift based on the angle\n // of the transformation so that 0°, 90°, 180°, and 270° rasters are crisp, and adjust the shift so that\n // it is always <= 0.5 pixels.\n const point = this.point;\n const x = point.x, y = point.y;\n const xShift = (this.width % 2) / 2, yShift = (this.height % 2) / 2,\n angleCos = Math.cos(this.angle), angleSin = Math.sin(this.angle),\n dx = x - Math.round(x) + angleCos * xShift + angleSin * yShift,\n dy = y - Math.round(y) + angleCos * yShift + angleSin * xShift;\n const alignedM = new Float64Array(m);\n mat4.translate(alignedM, alignedM, [ dx > 0.5 ? dx - 1 : dx, dy > 0.5 ? dy - 1 : dy, 0 ]);\n this.alignedProjMatrix = alignedM;\n\n m = mat4.create();\n mat4.scale(m, m, [this.width / 2, -this.height / 2, 1]);\n mat4.translate(m, m, [1, -1, 0]);\n this.labelPlaneMatrix = m;\n\n m = mat4.create();\n mat4.scale(m, m, [1, -1, 1]);\n mat4.translate(m, m, [-1, -1, 0]);\n mat4.scale(m, m, [2 / this.width, 2 / this.height, 1]);\n this.glCoordMatrix = m;\n\n // matrix for conversion from location to screen coordinates\n this.pixelMatrix = mat4.multiply(new Float64Array(16), this.labelPlaneMatrix, this.projMatrix);\n\n this._calcFogMatrices();\n this._distanceTileDataCache = {};\n\n // inverse matrix for conversion from screen coordinates to location\n m = mat4.invert(new Float64Array(16), this.pixelMatrix);\n if (!m) throw new Error(\"failed to invert matrix\");\n this.pixelMatrixInverse = m;\n\n if (this.projection.name === 'globe' || this.mercatorFromTransition) {\n this.globeMatrix = calculateGlobeMatrix(this);\n\n const globeCenter = [this.globeMatrix[12], this.globeMatrix[13], this.globeMatrix[14]];\n\n this.globeCenterInViewSpace = vec3.transformMat4(globeCenter, globeCenter, worldToCamera);\n this.globeRadius = this.worldSize / 2.0 / Math.PI - 1.0;\n } else {\n this.globeMatrix = m;\n }\n\n this._projMatrixCache = {};\n this._alignedProjMatrixCache = {};\n this._pixelsToTileUnitsCache = {};\n }\n\n _calcFogMatrices() {\n this._fogTileMatrixCache = {};\n\n const cameraWorldSize = this.cameraWorldSize;\n const cameraPixelsPerMeter = this.cameraPixelsPerMeter;\n const cameraPos = this._camera.position;\n\n // The mercator fog matrix encodes transformation necessary to transform a position to camera fog space (in meters):\n // translates p to camera origin and transforms it from pixels to meters. The windowScaleFactor is used to have a\n // consistent transformation across different window sizes.\n // - p = p - cameraOrigin\n // - p.xy = p.xy * cameraWorldSize * windowScaleFactor\n // - p.z = p.z * cameraPixelsPerMeter * windowScaleFactor\n const windowScaleFactor = 1 / this.height / this._projectionScaler;\n const metersToPixel = [cameraWorldSize, cameraWorldSize, cameraPixelsPerMeter];\n vec3.scale(metersToPixel, metersToPixel, windowScaleFactor);\n vec3.scale(cameraPos, cameraPos, -1);\n vec3.multiply(cameraPos, cameraPos, metersToPixel);\n\n const m = mat4.create();\n mat4.translate(m, m, cameraPos);\n mat4.scale(m, m, metersToPixel);\n this.mercatorFogMatrix = m;\n\n // The worldToFogMatrix can be used for conversion from world coordinates to relative camera position in\n // units of fractions of the map height. Later composed with tile position to construct the fog tile matrix.\n this.worldToFogMatrix = this._camera.getWorldToCameraPosition(cameraWorldSize, cameraPixelsPerMeter, windowScaleFactor);\n }\n\n _computeCameraPosition(targetPixelsPerMeter: ?number): Vec3 {\n targetPixelsPerMeter = targetPixelsPerMeter || this.pixelsPerMeter;\n const pixelSpaceConversion = targetPixelsPerMeter / this.pixelsPerMeter;\n\n const dir = this._camera.forward();\n const center = this.point;\n\n // Compute camera position using the following vector math: camera.position = map.center - camera.forward * cameraToCenterDist\n // Camera distance to the center can be found in mercator units by subtracting the center elevation from\n // camera's zenith position (which can be deduced from the zoom level)\n const zoom = this._seaLevelZoom ? this._seaLevelZoom : this._zoom;\n const altitude = this._mercatorZfromZoom(zoom) * pixelSpaceConversion;\n const distance = altitude - targetPixelsPerMeter / this.worldSize * this._centerAltitude;\n\n return [\n center.x / this.worldSize - dir[0] * distance,\n center.y / this.worldSize - dir[1] * distance,\n targetPixelsPerMeter / this.worldSize * this._centerAltitude - dir[2] * distance\n ];\n }\n\n _updateCameraState() {\n if (!this.height) return;\n\n // Set camera orientation and move it to a proper distance from the map\n this._camera.setPitchBearing(this._pitch, this.angle);\n this._camera.position = this._computeCameraPosition();\n }\n\n /**\n * Apply a 3d translation to the camera position, but clamping it so that\n * it respects the maximum longitude and latitude range set.\n *\n * @param {vec3} translation The translation vector.\n */\n _translateCameraConstrained(translation: Vec3) {\n const maxDistance = this._maxCameraBoundsDistance();\n // Define a ceiling in mercator Z\n const maxZ = maxDistance * Math.cos(this._pitch);\n const z = this._camera.position[2];\n const deltaZ = translation[2];\n let t = 1;\n // we only need to clamp if the camera is moving upwards\n if (deltaZ > 0) {\n t = Math.min((maxZ - z) / deltaZ, 1);\n }\n\n this._camera.position = vec3.scaleAndAdd([], this._camera.position, translation, t);\n this._updateStateFromCamera();\n\n if (this.projection.wrap)\n this.center = this.center.wrap();\n }\n\n _updateStateFromCamera() {\n const position = this._camera.position;\n const dir = this._camera.forward();\n const {pitch, bearing} = this._camera.getPitchBearing();\n\n // Compute zoom from the distance between camera and terrain\n const centerAltitude = mercatorZfromAltitude(this._centerAltitude, this.center.lat) * this._projectionScaler;\n const minHeight = this._mercatorZfromZoom(this._maxZoom) * Math.cos(degToRad(this._maxPitch));\n const height = Math.max((position[2] - centerAltitude) / Math.cos(pitch), minHeight);\n const zoom = this._zoomFromMercatorZ(height);\n\n // Cast a ray towards the ground to find the center point\n vec3.scaleAndAdd(position, position, dir, height);\n\n this._pitch = clamp(pitch, degToRad(this.minPitch), degToRad(this.maxPitch));\n this.angle = wrap(bearing, -Math.PI, Math.PI);\n this._setZoom(clamp(zoom, this._minZoom, this._maxZoom));\n this._updateSeaLevelZoom();\n\n this._center = this.coordinateLocation(new MercatorCoordinate(position[0], position[1], position[2]));\n this._unmodified = false;\n this._constrain();\n this._calcMatrices();\n }\n\n _worldSizeFromZoom(zoom: number): number {\n return Math.pow(2.0, zoom) * this.tileSize;\n }\n\n _mercatorZfromZoom(zoom: number): number {\n return this.cameraToCenterDistance / this._worldSizeFromZoom(zoom);\n }\n\n _minimumHeightOverTerrain(): number {\n // Determine minimum height for the camera over the terrain related to current zoom.\n // Values above than 2 allow max-pitch camera closer to e.g. top of the hill, exposing\n // drape raster overscale artifacts or cut terrain (see under it) as it gets clipped on\n // near plane. Returned value is in mercator coordinates.\n const MAX_DRAPE_OVERZOOM = 2;\n const zoom = Math.min((this._seaLevelZoom != null ? this._seaLevelZoom : this._zoom) + MAX_DRAPE_OVERZOOM, this._maxZoom);\n return this._mercatorZfromZoom(zoom);\n }\n\n _zoomFromMercatorZ(z: number): number {\n return this.scaleZoom(this.cameraToCenterDistance / (z * this.tileSize));\n }\n\n _terrainEnabled(): boolean {\n if (!this._elevation) return false;\n if (!this.projection.supportsTerrain) {\n warnOnce('Terrain is not yet supported with alternate projections. Use mercator or globe to enable terrain.');\n return false;\n }\n return true;\n }\n\n // Check if any of the four corners are off the edge of the rendered map\n // This function will return `false` for all non-mercator projection\n anyCornerOffEdge(p0: Point, p1: Point): boolean {\n const minX = Math.min(p0.x, p1.x);\n const maxX = Math.max(p0.x, p1.x);\n const minY = Math.min(p0.y, p1.y);\n const maxY = Math.max(p0.y, p1.y);\n\n const horizon = this.horizonLineFromTop(false);\n if (minY < horizon) return true;\n\n if (this.projection.name !== 'mercator') {\n return false;\n }\n\n const min = new Point(minX, minY);\n const max = new Point(maxX, maxY);\n\n const corners = [\n min, max,\n new Point(minX, maxY),\n new Point(maxX, minY),\n ];\n\n const minWX = (this.renderWorldCopies) ? -NUM_WORLD_COPIES : 0;\n const maxWX = (this.renderWorldCopies) ? 1 + NUM_WORLD_COPIES : 1;\n const minWY = 0;\n const maxWY = 1;\n\n for (const corner of corners) {\n const rayIntersection = this.pointRayIntersection(corner);\n // Point is above the horizon\n if (rayIntersection.t < 0) {\n return true;\n }\n // Point is off the bondaries of the map\n const coordinate = this.rayIntersectionCoordinate(rayIntersection);\n if (coordinate.x < minWX || coordinate.y < minWY ||\n coordinate.x > maxWX || coordinate.y > maxWY) {\n return true;\n }\n }\n\n return false;\n }\n\n // Checks the four corners of the frustum to see if they lie in the map's quad.\n //\n isHorizonVisible(): boolean {\n\n // we consider the horizon as visible if the angle between\n // a the top plane of the frustum and the map plane is smaller than this threshold.\n const horizonAngleEpsilon = 2;\n if (this.pitch + radToDeg(this.fovAboveCenter) > (90 - horizonAngleEpsilon)) {\n return true;\n }\n\n return this.anyCornerOffEdge(new Point(0, 0), new Point(this.width, this.height));\n }\n\n /**\n * Converts a zoom delta value into a physical distance travelled in web mercator coordinates.\n *\n * @param {vec3} center Destination mercator point of the movement.\n * @param {number} zoomDelta Change in the zoom value.\n * @returns {number} The distance in mercator coordinates.\n */\n zoomDeltaToMovement(center: Vec3, zoomDelta: number): number {\n const distance = vec3.length(vec3.sub([], this._camera.position, center));\n const relativeZoom = this._zoomFromMercatorZ(distance) + zoomDelta;\n return distance - this._mercatorZfromZoom(relativeZoom);\n }\n\n /*\n * The camera looks at the map from a 3D (lng, lat, altitude) location. Let's use `cameraLocation`\n * as the name for the location under the camera and on the surface of the earth (lng, lat, 0).\n * `cameraPoint` is the projected position of the `cameraLocation`.\n *\n * This point is useful to us because only fill-extrusions that are between `cameraPoint` and\n * the query point on the surface of the earth can extend and intersect the query.\n *\n * When the map is not pitched the `cameraPoint` is equivalent to the center of the map because\n * the camera is right above the center of the map.\n */\n getCameraPoint(): Point {\n if (this.projection.name === 'globe') {\n // Find precise location of the projected camera position on the curved surface\n const center = [this.globeMatrix[12], this.globeMatrix[13], this.globeMatrix[14]];\n const pos = projectClamped(center, this.pixelMatrix);\n return new Point(pos[0], pos[1]);\n } else {\n const pitch = this._pitch;\n const yOffset = Math.tan(pitch) * (this.cameraToCenterDistance || 1);\n return this.centerPoint.add(new Point(0, yOffset));\n }\n }\n\n getCameraToCenterDistance(projection: Projection): number {\n const t = getProjectionInterpolationT(projection, this.zoom, this.width, this.height, 1024);\n const projectionScaler = projection.pixelSpaceConversion(this.center.lat, this.worldSize, t);\n return 0.5 / Math.tan(this._fov * 0.5) * this.height * projectionScaler;\n }\n}\n\nexport default Transform;\n","// @flow strict\n\n/**\n * Throttle the given function to run at most every `period` milliseconds.\n * @private\n */\nexport default function throttle(fn: () => void, time: number): () => ?TimeoutID {\n let pending = false;\n let timerId: ?TimeoutID = null;\n\n const later = () => {\n timerId = null;\n if (pending) {\n fn();\n timerId = setTimeout(later, time);\n pending = false;\n }\n };\n\n return () => {\n pending = true;\n if (!timerId) {\n later();\n }\n return timerId;\n };\n}\n","// @flow\n\nimport {bindAll} from '../util/util.js';\nimport window from '../util/window.js';\nimport throttle from '../util/throttle.js';\n\nimport type Map from './map.js';\n\n/*\n * Adds the map's position to its page's location hash.\n * Passed as an option to the map object.\n *\n * @returns {Hash} `this`\n */\nclass Hash {\n _map: ?Map;\n _updateHash: () => ?TimeoutID;\n _hashName: ?string;\n\n constructor(hashName: ?string) {\n this._hashName = hashName && encodeURIComponent(hashName);\n bindAll([\n '_getCurrentHash',\n '_onHashChange',\n '_updateHash'\n ], this);\n\n // Mobile Safari doesn't allow updating the hash more than 100 times per 30 seconds.\n this._updateHash = throttle(this._updateHashUnthrottled.bind(this), 30 * 1000 / 100);\n }\n\n /*\n * Map element to listen for coordinate changes\n *\n * @param {Object} map\n * @returns {Hash} `this`\n */\n addTo(map: Map): this {\n this._map = map;\n window.addEventListener('hashchange', this._onHashChange, false);\n map.on('moveend', this._updateHash);\n return this;\n }\n\n /*\n * Removes hash\n *\n * @returns {Popup} `this`\n */\n remove(): this {\n if (!this._map) return this;\n\n this._map.off('moveend', this._updateHash);\n window.removeEventListener('hashchange', this._onHashChange, false);\n clearTimeout(this._updateHash());\n\n this._map = undefined;\n return this;\n }\n\n getHashString(mapFeedback?: boolean): string {\n const map = this._map;\n if (!map) return '';\n const center = map.getCenter(),\n zoom = Math.round(map.getZoom() * 100) / 100,\n // derived from equation: 512px * 2^z / 360 / 10^d < 0.5px\n precision = Math.ceil((zoom * Math.LN2 + Math.log(512 / 360 / 0.5)) / Math.LN10),\n m = Math.pow(10, precision),\n lng = Math.round(center.lng * m) / m,\n lat = Math.round(center.lat * m) / m,\n bearing = map.getBearing(),\n pitch = map.getPitch();\n let hash = '';\n if (mapFeedback) {\n // new map feedback site has some constraints that don't allow\n // us to use the same hash format as we do for the Map hash option.\n hash += `/${lng}/${lat}/${zoom}`;\n } else {\n hash += `${zoom}/${lat}/${lng}`;\n }\n\n if (bearing || pitch) hash += (`/${Math.round(bearing * 10) / 10}`);\n if (pitch) hash += (`/${Math.round(pitch)}`);\n\n if (this._hashName) {\n const hashName = this._hashName;\n let found = false;\n const parts = window.location.hash.slice(1).split('&').map(part => {\n const key = part.split('=')[0];\n if (key === hashName) {\n found = true;\n return `${key}=${hash}`;\n }\n return part;\n }).filter(a => a);\n if (!found) {\n parts.push(`${hashName}=${hash}`);\n }\n return `#${parts.join('&')}`;\n }\n\n return `#${hash}`;\n }\n\n _getCurrentHash(): Array<string> {\n // Get the current hash from location, stripped from its number sign\n const hash = window.location.hash.replace('#', '');\n if (this._hashName) {\n // Split the parameter-styled hash into parts and find the value we need\n let keyval;\n hash.split('&').map(\n part => part.split('=')\n ).forEach(part => {\n if (part[0] === this._hashName) {\n keyval = part;\n }\n });\n return (keyval ? keyval[1] || '' : '').split('/');\n }\n return hash.split('/');\n }\n\n _onHashChange(): boolean {\n const map = this._map;\n if (!map) return false;\n const loc = this._getCurrentHash();\n if (loc.length >= 3 && !loc.some(v => isNaN(v))) {\n const bearing = map.dragRotate.isEnabled() && map.touchZoomRotate.isEnabled() ? +(loc[3] || 0) : map.getBearing();\n map.jumpTo({\n center: [+loc[2], +loc[1]],\n zoom: +loc[0],\n bearing,\n pitch: +(loc[4] || 0)\n });\n return true;\n }\n return false;\n }\n\n _updateHashUnthrottled() {\n // Replace if already present, else append the updated hash string\n const location = window.location.href.replace(/(#.+)?$/, this.getHashString());\n window.history.replaceState(window.history.state, null, location);\n }\n\n}\n\nexport default Hash;\n","// @flow\n\nimport browser from '../util/browser.js';\nimport type Map from './map.js';\nimport {bezier, clamp, extend} from '../util/util.js';\nimport Point from '@mapbox/point-geometry';\n\nimport type {DragPanOptions} from './handler/shim/drag_pan.js';\nimport type {EasingOptions} from '../ui/camera.js';\n\nconst defaultInertiaOptions = {\n linearity: 0.3,\n easing: bezier(0, 0, 0.3, 1),\n};\n\nconst defaultPanInertiaOptions = extend({\n deceleration: 2500,\n maxSpeed: 1400\n}, defaultInertiaOptions);\n\nconst defaultZoomInertiaOptions = extend({\n deceleration: 20,\n maxSpeed: 1400\n}, defaultInertiaOptions);\n\nconst defaultBearingInertiaOptions = extend({\n deceleration: 1000,\n maxSpeed: 360\n}, defaultInertiaOptions);\n\nconst defaultPitchInertiaOptions = extend({\n deceleration: 1000,\n maxSpeed: 90\n}, defaultInertiaOptions);\n\nexport type InertiaOptions = {\n linearity: number;\n easing: (t: number) => number;\n deceleration: number;\n maxSpeed: number;\n};\n\nexport type InputEvent = MouseEvent | TouchEvent | KeyboardEvent | WheelEvent;\n\nexport default class HandlerInertia {\n _map: Map;\n _inertiaBuffer: Array<{ time: number, settings: Object }>;\n\n constructor(map: Map) {\n this._map = map;\n this.clear();\n }\n\n clear() {\n this._inertiaBuffer = [];\n }\n\n record(settings: any) {\n this._drainInertiaBuffer();\n this._inertiaBuffer.push({time: browser.now(), settings});\n }\n\n _drainInertiaBuffer() {\n const inertia = this._inertiaBuffer,\n now = browser.now(),\n cutoff = 160; //msec\n\n while (inertia.length > 0 && now - inertia[0].time > cutoff)\n inertia.shift();\n }\n\n _onMoveEnd(panInertiaOptions?: DragPanOptions): ?(EasingOptions & {easeId?: string, preloadOnly?: boolean}) {\n this._drainInertiaBuffer();\n if (this._inertiaBuffer.length < 2) {\n return;\n }\n\n const deltas = {\n zoom: 0,\n bearing: 0,\n pitch: 0,\n pan: new Point(0, 0),\n pinchAround: undefined,\n around: undefined\n };\n\n for (const {settings} of this._inertiaBuffer) {\n deltas.zoom += settings.zoomDelta || 0;\n deltas.bearing += settings.bearingDelta || 0;\n deltas.pitch += settings.pitchDelta || 0;\n if (settings.panDelta) deltas.pan._add(settings.panDelta);\n if (settings.around) deltas.around = settings.around;\n if (settings.pinchAround) deltas.pinchAround = settings.pinchAround;\n }\n\n const lastEntry = this._inertiaBuffer[this._inertiaBuffer.length - 1];\n const duration = (lastEntry.time - this._inertiaBuffer[0].time);\n\n const easeOptions = {};\n\n if (deltas.pan.mag()) {\n const result = calculateEasing(deltas.pan.mag(), duration, extend({}, defaultPanInertiaOptions, panInertiaOptions || {}));\n easeOptions.offset = deltas.pan.mult(result.amount / deltas.pan.mag());\n easeOptions.center = this._map.transform.center;\n extendDuration(easeOptions, result);\n }\n\n if (deltas.zoom) {\n const result = calculateEasing(deltas.zoom, duration, defaultZoomInertiaOptions);\n easeOptions.zoom = this._map.transform.zoom + result.amount;\n extendDuration(easeOptions, result);\n }\n\n if (deltas.bearing) {\n const result = calculateEasing(deltas.bearing, duration, defaultBearingInertiaOptions);\n easeOptions.bearing = this._map.transform.bearing + clamp(result.amount, -179, 179);\n extendDuration(easeOptions, result);\n }\n\n if (deltas.pitch) {\n const result = calculateEasing(deltas.pitch, duration, defaultPitchInertiaOptions);\n easeOptions.pitch = this._map.transform.pitch + result.amount;\n extendDuration(easeOptions, result);\n }\n\n if (easeOptions.zoom || easeOptions.bearing) {\n const last = deltas.pinchAround === undefined ? deltas.around : deltas.pinchAround;\n easeOptions.around = last ? this._map.unproject(last) : this._map.getCenter();\n }\n\n this.clear();\n easeOptions.noMoveStart = true;\n return easeOptions;\n }\n}\n\n// Unfortunately zoom, bearing, etc can't have different durations and easings so\n// we need to choose one. We use the longest duration and it's corresponding easing.\nfunction extendDuration(easeOptions, result) {\n if (!easeOptions.duration || easeOptions.duration < result.duration) {\n easeOptions.duration = result.duration;\n easeOptions.easing = result.easing;\n }\n}\n\nfunction calculateEasing(amount, inertiaDuration: number, inertiaOptions) {\n const {maxSpeed, linearity, deceleration} = inertiaOptions;\n const speed = clamp(\n amount * linearity / (inertiaDuration / 1000),\n -maxSpeed,\n maxSpeed);\n const duration = Math.abs(speed) / (deceleration * linearity);\n return {\n easing: inertiaOptions.easing,\n duration: duration * 1000,\n amount: speed * (duration / 2)\n };\n}\n","// @flow\n\nimport {Event} from '../util/evented.js';\n\nimport * as DOM from '../util/dom.js';\nimport Point from '@mapbox/point-geometry';\nimport {extend} from '../util/util.js';\n\nimport type Map from './map.js';\nimport type LngLat from '../geo/lng_lat.js';\n\n/**\n * `MapMouseEvent` is a class used by other classes to generate\n * mouse events of specific types such as 'click' or 'hover'.\n * For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n *\n * @extends {Object}\n * @example\n * // Example of a MapMouseEvent of type \"click\"\n * map.on('click', (e) => {\n * console.log(e);\n * // {\n * // lngLat: {\n * // lng: 40.203,\n * // lat: -74.451\n * // },\n * // originalEvent: {...},\n * // point: {\n * // x: 266,\n * // y: 464\n * // },\n * // target: {...},\n * // type: \"click\"\n * // }\n * });\n * @see [Reference: `Map` events API documentation](https://docs.mapbox.com/mapbox-gl-js/api/map/#map-events)\n * @see [Example: Display popup on click](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-click/)\n * @see [Example: Display popup on hover](https://www.mapbox.com/mapbox-gl-js/example/popup-on-hover/)\n */\nexport class MapMouseEvent extends Event {\n /**\n * The type of originating event. For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n */\n type: 'mousedown'\n | 'mouseup'\n | 'preclick'\n | 'click'\n | 'dblclick'\n | 'mousemove'\n | 'mouseover'\n | 'mouseenter'\n | 'mouseleave'\n | 'mouseout'\n | 'contextmenu';\n\n /**\n * The `Map` object that fired the event.\n */\n target: Map;\n\n /**\n * The DOM event which caused the map event.\n */\n originalEvent: MouseEvent;\n\n /**\n * The pixel coordinates of the mouse cursor, relative to the map and measured from the top left corner.\n */\n point: Point;\n\n /**\n * The geographic location on the map of the mouse cursor.\n */\n lngLat: LngLat;\n\n /**\n * If a single `layerId`(as a single string) or multiple `layerIds` (as an array of strings) were specified when adding the event listener with {@link Map#on},\n * `features` will be an array of [GeoJSON](http://geojson.org/) [Feature objects](https://tools.ietf.org/html/rfc7946#section-3.2).\n * The array will contain all features from that layer that are rendered at the event's point,\n * in the order that they are rendered with the topmost feature being at the start of the array.\n * The `features` are identical to those returned by {@link Map#queryRenderedFeatures}.\n *\n * If no `layerId` was specified when adding the event listener, `features` will be `undefined`.\n * You can get the features at the point with `map.queryRenderedFeatures(e.point)`.\n *\n * @example\n * // logging features for a specific layer (with `e.features`)\n * map.on('click', 'myLayerId', (e) => {\n * console.log(`There are ${e.features.length} features at point ${e.point}`);\n * });\n *\n * @example\n * // logging features for two layers (with `e.features`)\n * map.on('click', ['layer1', 'layer2'], (e) => {\n * console.log(`There are ${e.features.length} features at point ${e.point}`);\n * });\n *\n * @example\n * // logging all features for all layers (without `e.features`)\n * map.on('click', (e) => {\n * const features = map.queryRenderedFeatures(e.point);\n * console.log(`There are ${features.length} features at point ${e.point}`);\n * });\n */\n features: Array<Object> | void;\n\n /**\n * Prevents subsequent default processing of the event by the map.\n *\n * Calling this method will prevent the following default map behaviors:\n *\n * * On `mousedown` events, the behavior of {@link DragPanHandler}.\n * * On `mousedown` events, the behavior of {@link DragRotateHandler}.\n * * On `mousedown` events, the behavior of {@link BoxZoomHandler}.\n * * On `dblclick` events, the behavior of {@link DoubleClickZoomHandler}.\n *\n * @example\n * map.on('click', (e) => {\n * e.preventDefault();\n * });\n */\n preventDefault() {\n this._defaultPrevented = true;\n }\n\n /**\n * `true` if `preventDefault` has been called.\n * @private\n */\n get defaultPrevented(): boolean {\n return this._defaultPrevented;\n }\n\n _defaultPrevented: boolean;\n\n /**\n * @private\n */\n constructor(type: string, map: Map, originalEvent: MouseEvent, data: Object = {}) {\n const point = DOM.mousePos(map.getCanvasContainer(), originalEvent);\n const lngLat = map.unproject(point);\n super(type, extend({point, lngLat, originalEvent}, data));\n this._defaultPrevented = false;\n this.target = map;\n }\n}\n\n/**\n * `MapTouchEvent` is a class used by other classes to generate\n * mouse events of specific types such as 'touchstart' or 'touchend'.\n * For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n *\n * @extends {Object}\n *\n * @example\n * // Example of a MapTouchEvent of type \"touch\"\n * map.on('touchstart', (e) => {\n * console.log(e);\n * // {\n * // lngLat: {\n * // lng: 40.203,\n * // lat: -74.451\n * // },\n * // lngLats: [\n * // {\n * // lng: 40.203,\n * // lat: -74.451\n * // }\n * // ],\n * // originalEvent: {...},\n * // point: {\n * // x: 266,\n * // y: 464\n * // },\n * // points: [\n * // {\n * // x: 266,\n * // y: 464\n * // }\n * // ]\n * // preventDefault(),\n * // target: {...},\n * // type: \"touchstart\"\n * // }\n * });\n * @see [Reference: `Map` events API documentation](https://docs.mapbox.com/mapbox-gl-js/api/map/#map-events)\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\nexport class MapTouchEvent extends Event {\n /**\n * The type of originating event. For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n */\n type: 'touchstart'\n | 'touchend'\n | 'touchcancel';\n\n /**\n * The `Map` object that fired the event.\n */\n target: Map;\n\n /**\n * The DOM event which caused the map event.\n */\n originalEvent: TouchEvent;\n\n /**\n * The geographic location on the map of the center of the touch event points.\n */\n lngLat: LngLat;\n\n /**\n * The pixel coordinates of the center of the touch event points, relative to the map and measured from the top left\n * corner.\n */\n point: Point;\n\n /**\n * The array of pixel coordinates corresponding to a\n * [touch event's `touches`](https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/touches) property.\n */\n points: Array<Point>;\n\n /**\n * The geographical locations on the map corresponding to a\n * [touch event's `touches`](https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/touches) property.\n */\n lngLats: Array<LngLat>;\n\n /**\n * If a `layerId` was specified when adding the event listener with {@link Map#on}, `features` will be an array of\n * [GeoJSON](http://geojson.org/) [Feature objects](https://tools.ietf.org/html/rfc7946#section-3.2).\n * The array will contain all features from that layer that are rendered at the event's point.\n * The `features` are identical to those returned by {@link Map#queryRenderedFeatures}.\n *\n * If no `layerId` was specified when adding the event listener, `features` will be `undefined`.\n * You can get the features at the point with `map.queryRenderedFeatures(e.point)`.\n *\n * @example\n * // logging features for a specific layer (with `e.features`)\n * map.on('touchstart', 'myLayerId', (e) => {\n * console.log(`There are ${e.features.length} features at point ${e.point}`);\n * });\n *\n * @example\n * // logging all features for all layers (without `e.features`)\n * map.on('touchstart', (e) => {\n * const features = map.queryRenderedFeatures(e.point);\n * console.log(`There are ${features.length} features at point ${e.point}`);\n * });\n */\n features: Array<Object> | void;\n\n /**\n * Prevents subsequent default processing of the event by the map.\n *\n * Calling this method will prevent the following default map behaviors:\n *\n * * On `touchstart` events, the behavior of {@link DragPanHandler}.\n * * On `touchstart` events, the behavior of {@link TouchZoomRotateHandler}.\n *\n * @example\n * map.on('touchstart', (e) => {\n * e.preventDefault();\n * });\n */\n preventDefault() {\n this._defaultPrevented = true;\n }\n\n /**\n * Returns `true` if `preventDefault` has been called.\n * @private\n */\n get defaultPrevented(): boolean {\n return this._defaultPrevented;\n }\n\n _defaultPrevented: boolean;\n\n /**\n * @private\n */\n constructor(type: string, map: Map, originalEvent: TouchEvent) {\n const touches = type === \"touchend\" ? originalEvent.changedTouches : originalEvent.touches;\n const points = DOM.touchPos(map.getCanvasContainer(), touches);\n const lngLats = points.map((t) => map.unproject(t));\n const point = points.reduce((prev, curr, i, arr) => {\n return prev.add(curr.div(arr.length));\n }, new Point(0, 0));\n const lngLat = map.unproject(point);\n super(type, {points, point, lngLats, lngLat, originalEvent});\n this._defaultPrevented = false;\n }\n}\n\n/**\n * `MapWheelEvent` is a class used by other classes to generate\n * mouse events of specific types such as 'wheel'.\n * For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n *\n * @extends {Object}\n * @example\n * // Example event trigger for a MapWheelEvent of type \"wheel\"\n * map.on('wheel', (e) => {\n * console.log('event type:', e.type);\n * // event type: wheel\n * });\n * @example\n * // Example of a MapWheelEvent of type \"wheel\"\n * // {\n * // originalEvent: WheelEvent {...},\n * // \t target: Map {...},\n * // \t type: \"wheel\"\n * // }\n * @see [Reference: `Map` events API documentation](https://docs.mapbox.com/mapbox-gl-js/api/map/#map-events)\n */\nexport class MapWheelEvent extends Event {\n /**\n * The type of originating event. For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n */\n type: 'wheel';\n\n /**\n * The `Map` object that fired the event.\n */\n target: Map;\n\n /**\n * The DOM event which caused the map event.\n */\n originalEvent: WheelEvent;\n\n /**\n * Prevents subsequent default processing of the event by the map.\n * Calling this method will prevent the the behavior of {@link ScrollZoomHandler}.\n *\n * @example\n * map.on('wheel', (e) => {\n * // Prevent the default map scroll zoom behavior.\n * e.preventDefault();\n * });\n */\n preventDefault() {\n this._defaultPrevented = true;\n }\n\n /**\n * `true` if `preventDefault` has been called.\n * @private\n */\n get defaultPrevented(): boolean {\n return this._defaultPrevented;\n }\n\n _defaultPrevented: boolean;\n\n /**\n * @private\n */\n constructor(type: string, map: Map, originalEvent: WheelEvent) {\n super(type, {originalEvent});\n this._defaultPrevented = false;\n }\n}\n\n/**\n * `MapBoxZoomEvent` is a class used to generate\n * the events 'boxzoomstart', 'boxzoomend', and 'boxzoomcancel'.\n * For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n *\n * @typedef {Object} MapBoxZoomEvent\n * @property {MouseEvent} originalEvent The DOM event that triggered the boxzoom event. Can be a `MouseEvent` or `KeyboardEvent`.\n * @property {('boxzoomstart' | 'boxzoomend' | 'boxzoomcancel')} type The type of originating event. For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n * @property {Map} target The `Map` instance that triggered the event.\n * @example\n * // Example trigger of a BoxZoomEvent of type \"boxzoomstart\"\n * map.on('boxzoomstart', (e) => {\n * console.log('event type:', e.type);\n * // event type: boxzoomstart\n * });\n * @example\n * // Example of a BoxZoomEvent of type \"boxzoomstart\"\n * // {\n * // originalEvent: {...},\n * // type: \"boxzoomstart\",\n * // target: {...}\n * // }\n * @see [Reference: `Map` events API documentation](https://docs.mapbox.com/mapbox-gl-js/api/map/#map-events)\n * @see [Example: Highlight features within a bounding box](https://docs.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n */\nexport type MapBoxZoomEvent = {\n type: 'boxzoomstart'\n | 'boxzoomend'\n | 'boxzoomcancel',\n target: Map,\n originalEvent: MouseEvent\n};\n\n/**\n * `MapDataEvent` is a class used to generate\n * events related to loading data, styles, and sources.\n * For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n *\n * @typedef {Object} MapDataEvent\n * @property {('data' | 'dataloading' | 'styledata' | 'styledataloading' | 'sourcedata'| 'sourcedataloading')} type The type of originating event. For a full list of available events, see [`Map` events](/mapbox-gl-js/api/map/#map-events).\n * @property {('source' | 'style')} dataType The type of data that has changed. One of `'source'` or `'style'`, where `'source'` refers to the data associated with any source, and `'style'` refers to the entire [style](https://docs.mapbox.com/help/glossary/style/) used by the map.\n * @property {boolean} [isSourceLoaded] True if the event has a `dataType` of `source` and the source has no outstanding network requests.\n * @property {Object} [source] The [style spec representation of the source](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/) if the event has a `dataType` of `source`.\n * @property {string} [sourceId] The `id` of the [`source`](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/) that triggered the event, if the event has a `dataType` of `source`. Same as the `id` of the object in the `source` property.\n * @property {string} [sourceDataType] Included if the event has a `dataType` of `source` and the event signals\n * that internal data has been received or changed. Possible values are `metadata`, `content` and `visibility`.\n * @property {Object} [tile] The tile being loaded or changed, if the event has a `dataType` of `source` and\n * the event is related to loading of a tile.\n * @property {Coordinate} [coord] The coordinate of the tile if the event has a `dataType` of `source` and\n * the event is related to loading of a tile.\n * @example\n * // Example of a MapDataEvent of type \"sourcedata\"\n * map.on('sourcedata', (e) => {\n * console.log(e);\n * // {\n * // dataType: \"source\",\n * // isSourceLoaded: false,\n * // source: {\n * // type: \"vector\",\n * // url: \"mapbox://mapbox.mapbox-streets-v8,mapbox.mapbox-terrain-v2\"\n * // },\n * // sourceDataType: \"visibility\",\n * // sourceId: \"composite\",\n * // style: {...},\n * // target: {...},\n * // type: \"sourcedata\"\n * // }\n * });\n * @see [Reference: `Map` events API documentation](https://docs.mapbox.com/mapbox-gl-js/api/map/#map-events)\n * @see [Example: Change a map's style](https://docs.mapbox.com/mapbox-gl-js/example/setstyle/)\n * @see [Example: Add a GeoJSON line](https://docs.mapbox.com/mapbox-gl-js/example/geojson-line/)\n */\nexport type MapDataEvent = {\n type: 'data'\n | 'dataloading'\n | 'styledata'\n | 'styledataloading'\n | 'sourcedata'\n | 'sourcedataloading',\n dataType: 'source'\n | 'style'\n};\n\nexport type MapContextEvent = {\n type: 'webglcontextlost' | 'webglcontextrestored',\n originalEvent: WebGLContextEvent\n}\n\nexport type MapEvent =\n /** @section {Interaction}\n * @event\n * @instance\n * @memberof Map */\n\n /**\n * Fired when a pointing device (usually a mouse) is pressed within the map.\n *\n * **Note:** This event is compatible with the optional `layerId` parameter.\n * If `layerId` is included as the second argument in {@link Map#on}, the event listener will fire only when the\n * the cursor is pressed while inside a visible portion of the specifed layer.\n *\n * @event mousedown\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener\n * map.on('mousedown', () => {\n * console.log('A mousedown event has occurred.');\n * });\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener for a specific layer\n * map.on('mousedown', 'poi-label', () => {\n * console.log('A mousedown event has occurred on a visible portion of the poi-label layer.');\n * });\n * @see [Example: Highlight features within a bounding box](https://docs.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\n | 'mousedown'\n\n /**\n * Fired when a pointing device (usually a mouse) is released within the map.\n *\n * **Note:** This event is compatible with the optional `layerId` parameter.\n * If `layerId` is included as the second argument in {@link Map#on}, the event listener will fire only when the\n * the cursor is released while inside a visible portion of the specifed layer.\n *\n * @event mouseup\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener\n * map.on('mouseup', () => {\n * console.log('A mouseup event has occurred.');\n * });\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener for a specific layer\n * map.on('mouseup', 'poi-label', () => {\n * console.log('A mouseup event has occurred on a visible portion of the poi-label layer.');\n * });\n * @see [Example: Highlight features within a bounding box](https://docs.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\n | 'mouseup'\n\n /**\n * Fired when a pointing device (usually a mouse) is moved within the map.\n * As you move the cursor across a web page containing a map,\n * the event will fire each time it enters the map or any child elements.\n *\n * **Note:** This event is compatible with the optional `layerId` parameter.\n * If `layerId` is included as the second argument in {@link Map#on}, the event listener will fire only when the\n * the cursor is moved inside a visible portion of the specifed layer.\n *\n * @event mouseover\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener\n * map.on('mouseover', () => {\n * console.log('A mouseover event has occurred.');\n * });\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener for a specific layer\n * map.on('mouseover', 'poi-label', () => {\n * console.log('A mouseover event has occurred on a visible portion of the poi-label layer.');\n * });\n * @see [Example: Get coordinates of the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/mouse-position/)\n * @see [Example: Highlight features under the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/hover-styles/)\n * @see [Example: Display a popup on hover](https://www.mapbox.com/mapbox-gl-js/example/popup-on-hover/)\n */\n | 'mouseover'\n\n /**\n * Fired when a pointing device (usually a mouse) is moved while the cursor is inside the map.\n * As you move the cursor across the map, the event will fire every time the cursor changes position within the map.\n *\n * **Note:** This event is compatible with the optional `layerId` parameter.\n * If `layerId` is included as the second argument in {@link Map#on}, the event listener will fire only when the\n * the cursor is inside a visible portion of the specified layer.\n *\n * @event mousemove\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener\n * map.on('mousemove', () => {\n * console.log('A mousemove event has occurred.');\n * });\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener for a specific layer\n * map.on('mousemove', 'poi-label', () => {\n * console.log('A mousemove event has occurred on a visible portion of the poi-label layer.');\n * });\n * @see [Example: Get coordinates of the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/mouse-position/)\n * @see [Example: Highlight features under the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/hover-styles/)\n * @see [Example: Display a popup on over](https://www.mapbox.com/mapbox-gl-js/example/popup-on-hover/)\n */\n | 'mousemove'\n\n /**\n * Triggered when a click event occurs and is fired before the click event.\n * Primarily implemented to ensure closeOnClick for pop-ups is fired before any other listeners.\n *\n * @event preclick\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n */\n | 'preclick'\n\n /**\n * Fired when a pointing device (usually a mouse) is pressed and released at the same point on the map.\n *\n * **Note:** This event is compatible with the optional `layerId` parameter.\n * If `layerId` is included as the second argument in {@link Map#on}, the event listener will fire only when the\n * point that is pressed and released contains a visible portion of the specifed layer.\n *\n * @event click\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener\n * map.on('click', (e) => {\n * console.log(`A click event has occurred at ${e.lngLat}`);\n * });\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener for a specific layer\n * map.on('click', 'poi-label', (e) => {\n * console.log(`A click event has occurred on a visible portion of the poi-label layer at ${e.lngLat}`);\n * });\n * @see [Example: Measure distances](https://www.mapbox.com/mapbox-gl-js/example/measure/)\n * @see [Example: Center the map on a clicked symbol](https://www.mapbox.com/mapbox-gl-js/example/center-on-symbol/)\n */\n | 'click'\n\n /**\n * Fired when a pointing device (usually a mouse) is pressed and released twice at the same point on\n * the map in rapid succession.\n *\n * **Note:** This event is compatible with the optional `layerId` parameter.\n * If `layerId` is included as the second argument in {@link Map#on}, the event listener will fire only\n * when the point that is clicked twice contains a visible portion of the specifed layer.\n *\n * @event dblclick\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener\n * map.on('dblclick', (e) => {\n * console.log(`A dblclick event has occurred at ${e.lngLat}`);\n * });\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener for a specific layer\n * map.on('dblclick', 'poi-label', (e) => {\n * console.log(`A dblclick event has occurred on a visible portion of the poi-label layer at ${e.lngLat}`);\n * });\n */\n | 'dblclick'\n\n /**\n * Fired when a pointing device (usually a mouse) enters a visible portion of a specified layer from\n * outside that layer or outside the map canvas.\n *\n * **Important:** This event can only be listened for when {@link Map#on} includes three arguments,\n * where the second argument specifies the desired layer.\n *\n * @event mouseenter\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener\n * map.on('mouseenter', 'water', () => {\n * console.log('A mouseenter event occurred on a visible portion of the water layer.');\n * });\n * @see [Example: Center the map on a clicked symbol](https://docs.mapbox.com/mapbox-gl-js/example/center-on-symbol/)\n * @see [Example: Display a popup on click](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-click/)\n */\n | 'mouseenter'\n\n /**\n * Fired when a pointing device (usually a mouse) leaves a visible portion of a specified layer or moves\n * from the specified layer to outside the map canvas.\n *\n * **Note:** To detect when the mouse leaves the canvas, independent of layer, use {@link Map.event:mouseout} instead.\n *\n * **Important:** This event can only be listened for when {@link Map#on} includes three arguments,\n * where the second argument specifies the desired layer.\n *\n * @event mouseleave\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the pointing device leaves\n * // a visible portion of the specified layer.\n * map.on('mouseleave', 'water', () => {\n * console.log('A mouseleave event occurred.');\n * });\n * @see [Example: Highlight features under the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/hover-styles/)\n * @see [Example: Display a popup on click](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-click/)\n */\n | 'mouseleave'\n\n /**\n * Fired when a point device (usually a mouse) leaves the map's canvas.\n *\n * @event mouseout\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the pointing device leaves\n * // the map's canvas.\n * map.on('mouseout', () => {\n * console.log('A mouseout event occurred.');\n * });\n */\n | 'mouseout'\n\n /**\n * Fired when the right button of the mouse is clicked or the context menu key is pressed within the map.\n *\n * @event contextmenu\n * @memberof Map\n * @instance\n * @type {MapMouseEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the right mouse button is\n * // pressed within the map.\n * map.on('contextmenu', () => {\n * console.log('A contextmenu event occurred.');\n * });\n */\n | 'contextmenu'\n\n /**\n * Fired when a [`wheel`](https://developer.mozilla.org/en-US/docs/Web/Events/wheel) event occurs within the map.\n *\n * @event wheel\n * @memberof Map\n * @instance\n * @type {MapWheelEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when a wheel event occurs within the map.\n * map.on('wheel', () => {\n * console.log('A wheel event occurred.');\n * });\n */\n | 'wheel'\n\n /**\n * Fired when a [`touchstart`](https://developer.mozilla.org/en-US/docs/Web/Events/touchstart) event occurs within the map.\n *\n * @event touchstart\n * @memberof Map\n * @instance\n * @type {MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when a `touchstart` event occurs within the map.\n * map.on('touchstart', () => {\n * console.log('A touchstart event occurred.');\n * });\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\n | 'touchstart'\n\n /**\n * Fired when a [`touchend`](https://developer.mozilla.org/en-US/docs/Web/Events/touchend) event occurs within the map.\n *\n * @event touchend\n * @memberof Map\n * @instance\n * @type {MapTouchEvent}\n * @example\n * // Initialize the map.\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires when a `touchstart` event occurs within the map.\n * map.on('touchstart', () => {\n * console.log('A touchstart event occurred.');\n * });\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\n | 'touchend'\n\n /**\n * Fired when a [`touchmove`](https://developer.mozilla.org/en-US/docs/Web/Events/touchmove) event occurs within the map.\n *\n * @event touchmove\n * @memberof Map\n * @instance\n * @type {MapTouchEvent}\n * @example\n * // Initialize the map.\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires when a touchmove event occurs within the map.\n * map.on('touchmove', () => {\n * console.log('A touchmove event occurred.');\n * });\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\n | 'touchmove'\n\n /**\n * Fired when a [`touchcancel`](https://developer.mozilla.org/en-US/docs/Web/Events/touchcancel) event occurs within the map.\n *\n * @event touchcancel\n * @memberof Map\n * @instance\n * @type {MapTouchEvent}\n * @example\n * // Initialize the map.\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires when a `touchcancel` event occurs within the map.\n * map.on('touchcancel', () => {\n * console.log('A touchcancel event occurred.');\n * });\n */\n | 'touchcancel'\n\n /** @section {Movement}\n * @event\n * @instance\n * @memberof Map */\n\n /**\n * Fired just before the map begins a transition from one view to another, as the result of either user interaction or methods such as {@link Map#jumpTo}.\n *\n * @event movestart\n * @memberof Map\n * @instance\n * @type {DragEvent}\n * @example\n * // Initialize the map.\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires just before the map begins a transition from one view to another.\n * map.on('movestart', () => {\n * console.log('A movestart` event occurred.');\n * });\n */\n | 'movestart'\n\n /**\n * Fired repeatedly during an animated transition from one view to another, as the result of either user interaction or methods such as {@link Map#flyTo}.\n *\n * @event move\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map.\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires repeatedly during an animated transition.\n * map.on('move', () => {\n * console.log('A move event occurred.');\n * });\n * @see [Example: Display HTML clusters with custom properties](https://docs.mapbox.com/mapbox-gl-js/example/cluster-html/)\n * @see [Example: Filter features within map view](https://docs.mapbox.com/mapbox-gl-js/example/filter-features-within-map-view/)\n */\n | 'move'\n\n /**\n * Fired just after the map completes a transition from one\n * view to another, as the result of either user interaction or methods such as {@link Map#jumpTo}.\n *\n * @event moveend\n * @memberof Map\n * @instance\n * @type {DragEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just after the map completes a transition.\n * map.on('moveend', () => {\n * console.log('A moveend event occurred.');\n * });\n * @see [Example: Play map locations as a slideshow](https://www.mapbox.com/mapbox-gl-js/example/playback-locations/)\n * @see [Example: Filter features within map view](https://www.mapbox.com/mapbox-gl-js/example/filter-features-within-map-view/)\n * @see [Example: Display HTML clusters with custom properties](https://docs.mapbox.com/mapbox-gl-js/example/cluster-html/)\n */\n | 'moveend'\n\n /**\n * Fired when a \"drag to pan\" interaction starts. See {@link DragPanHandler}.\n *\n * @event dragstart\n * @memberof Map\n * @instance\n * @type {DragEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when a \"drag to pan\" interaction starts.\n * map.on('dragstart', () => {\n * console.log('A dragstart event occurred.');\n * });\n */\n | 'dragstart'\n\n /**\n * Fired repeatedly during a \"drag to pan\" interaction. See {@link DragPanHandler}.\n *\n * @event drag\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // repeatedly during a \"drag to pan\" interaction.\n * map.on('drag', () => {\n * console.log('A drag event occurred.');\n * });\n */\n | 'drag'\n\n /**\n * Fired when a \"drag to pan\" interaction ends. See {@link DragPanHandler}.\n *\n * @event dragend\n * @memberof Map\n * @instance\n * @type {DragEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when a \"drag to pan\" interaction ends.\n * map.on('dragend', () => {\n * console.log('A dragend event occurred.');\n * });\n * @see [Example: Create a draggable marker](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-marker/)\n */\n | 'dragend'\n\n /**\n * Fired just before the map begins a transition from one zoom level to another,\n * as the result of either user interaction or methods such as {@link Map#flyTo}.\n *\n * @event zoomstart\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just before a zoom transition starts.\n * map.on('zoomstart', () => {\n * console.log('A zoomstart event occurred.');\n * });\n */\n | 'zoomstart'\n\n /**\n * Fired repeatedly during an animated transition from one zoom level to another,\n * as the result of either user interaction or methods such as {@link Map#flyTo}.\n *\n * @event zoom\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // repeatedly during a zoom transition.\n * map.on('zoom', () => {\n * console.log('A zoom event occurred.');\n * });\n * @see [Example: Update a choropleth layer by zoom level](https://www.mapbox.com/mapbox-gl-js/example/updating-choropleth/)\n */\n | 'zoom'\n\n /**\n * Fired just after the map completes a transition from one zoom level to another\n * as the result of either user interaction or methods such as {@link Map#flyTo}.\n * The zoom transition will usually end before rendering is finished, so if you\n * need to wait for rendering to finish, use the {@link Map.event:idle} event instead.\n *\n * @event zoomend\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just after a zoom transition finishes.\n * map.on('zoomend', () => {\n * console.log('A zoomend event occurred.');\n * });\n */\n | 'zoomend'\n\n /**\n * Fired when a \"drag to rotate\" interaction starts. See {@link DragRotateHandler}.\n *\n * @event rotatestart\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just before a \"drag to rotate\" interaction starts.\n * map.on('rotatestart', () => {\n * console.log('A rotatestart event occurred.');\n * });\n */\n | 'rotatestart'\n\n /**\n * Fired repeatedly during a \"drag to rotate\" interaction. See {@link DragRotateHandler}.\n *\n * @event rotate\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // repeatedly during \"drag to rotate\" interaction.\n * map.on('rotate', () => {\n * console.log('A rotate event occurred.');\n * });\n */\n | 'rotate'\n\n /**\n * Fired when a \"drag to rotate\" interaction ends. See {@link DragRotateHandler}.\n *\n * @event rotateend\n * @memberof Map\n * @instance\n * @type {MapMouseEvent | MapTouchEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just after a \"drag to rotate\" interaction ends.\n * map.on('rotateend', () => {\n * console.log('A rotateend event occurred.');\n * });\n */\n | 'rotateend'\n\n /**\n * Fired whenever the map's pitch (tilt) begins a change as\n * the result of either user interaction or methods such as {@link Map#flyTo} .\n *\n * @event pitchstart\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just before a pitch (tilt) transition starts.\n * map.on('pitchstart', () => {\n * console.log('A pitchstart event occurred.');\n * });\n */\n | 'pitchstart'\n\n /**\n * Fired repeatedly during the map's pitch (tilt) animation between\n * one state and another as the result of either user interaction\n * or methods such as {@link Map#flyTo}.\n *\n * @event pitch\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // repeatedly during a pitch (tilt) transition.\n * map.on('pitch', () => {\n * console.log('A pitch event occurred.');\n * });\n */\n | 'pitch'\n\n /**\n * Fired immediately after the map's pitch (tilt) finishes changing as\n * the result of either user interaction or methods such as {@link Map#flyTo}.\n *\n * @event pitchend\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just after a pitch (tilt) transition ends.\n * map.on('pitchend', () => {\n * console.log('A pitchend event occurred.');\n * });\n */\n | 'pitchend'\n\n /**\n * Fired when a \"box zoom\" interaction starts. See {@link BoxZoomHandler}.\n *\n * @event boxzoomstart\n * @memberof Map\n * @instance\n * @type {MapBoxZoomEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just before a \"box zoom\" interaction starts.\n * map.on('boxzoomstart', () => {\n * console.log('A boxzoomstart event occurred.');\n * });\n */\n | 'boxzoomstart'\n\n /**\n * Fired when a \"box zoom\" interaction ends. See {@link BoxZoomHandler}.\n *\n * @event boxzoomend\n * @memberof Map\n * @instance\n * @type {Object}\n * @type {MapBoxZoomEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just after a \"box zoom\" interaction ends.\n * map.on('boxzoomend', () => {\n * console.log('A boxzoomend event occurred.');\n * });\n */\n | 'boxzoomend'\n\n /**\n * Fired when the user cancels a \"box zoom\" interaction, or when the bounding box does not meet the minimum size threshold.\n * See {@link BoxZoomHandler}.\n *\n * @event boxzoomcancel\n * @memberof Map\n * @instance\n * @type {MapBoxZoomEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // the user cancels a \"box zoom\" interaction.\n * map.on('boxzoomcancel', () => {\n * console.log('A boxzoomcancel event occurred.');\n * });\n */\n | 'boxzoomcancel'\n\n /**\n * Fired immediately after the map has been resized.\n *\n * @event resize\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // immediately after the map has been resized.\n * map.on('resize', () => {\n * console.log('A resize event occurred.');\n * });\n */\n | 'resize'\n\n /** @section {Lifecycle}\n * @event\n * @instance\n * @memberof Map */\n\n /**\n * Fired immediately after all necessary resources have been downloaded\n * and the first visually complete rendering of the map has occurred.\n *\n * @event load\n * @memberof Map\n * @instance\n * @type {Object}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the map has finished loading.\n * map.on('load', () => {\n * console.log('A load event occurred.');\n * });\n * @see [Example: Draw GeoJSON points](https://www.mapbox.com/mapbox-gl-js/example/geojson-markers/)\n * @see [Example: Add live realtime data](https://www.mapbox.com/mapbox-gl-js/example/live-geojson/)\n * @see [Example: Animate a point](https://www.mapbox.com/mapbox-gl-js/example/animate-point-along-line/)\n */\n | 'load'\n\n /**\n * Fired whenever the map is drawn to the screen, as the result of:\n *\n * - a change to the map's position, zoom, pitch, or bearing\n * - a change to the map's style\n * - a change to a GeoJSON source\n * - the loading of a vector tile, GeoJSON file, glyph, or sprite.\n *\n * @event render\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // whenever the map is drawn to the screen.\n * map.on('render', () => {\n * console.log('A render event occurred.');\n * });\n */\n | 'render'\n\n /**\n * Fired after the last frame rendered before the map enters an\n * \"idle\" state:\n *\n * - No camera transitions are in progress\n * - All currently requested tiles have loaded\n * - All fade/transition animations have completed.\n *\n * @event idle\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just before the map enters an \"idle\" state.\n * map.on('idle', () => {\n * console.log('A idle event occurred.');\n * });\n */\n | 'idle'\n\n /**\n * Fired immediately after the map has been removed with {@link Map.event:remove}.\n *\n * @event remove\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // just after the map is removed.\n * map.on('remove', () => {\n * console.log('A remove event occurred.');\n * });\n */\n | 'remove'\n\n /**\n * Fired when an error occurs. This is Mapbox GL JS's primary error reporting\n * mechanism. We use an event instead of `throw` to better accommodate\n * asyncronous operations. If no listeners are bound to the `error` event, the\n * error will be printed to the console.\n *\n * @event error\n * @memberof Map\n * @instance\n * @property {string} message Error message.\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when an error occurs.\n * map.on('error', () => {\n * console.log('A error event occurred.');\n * });\n */\n | 'error'\n\n /**\n * Fired when the WebGL context is lost.\n *\n * @event webglcontextlost\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the WebGL context is lost.\n * map.on('webglcontextlost', () => {\n * console.log('A webglcontextlost event occurred.');\n * });\n */\n | 'webglcontextlost'\n\n /**\n * Fired when the WebGL context is restored.\n *\n * @event webglcontextrestored\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the WebGL context is restored.\n * map.on('webglcontextrestored', () => {\n * console.log('A webglcontextrestored event occurred.');\n * });\n */\n | 'webglcontextrestored'\n\n /** @section {Data loading}\n * @event\n * @instance\n * @memberof Map */\n\n /**\n * Fired when any map data loads or changes. See {@link MapDataEvent}\n * for more information.\n *\n * @event data\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when map data loads or changes.\n * map.on('data', () => {\n * console.log('A data event occurred.');\n * });\n * @see [Example: Display HTML clusters with custom properties](https://docs.mapbox.com/mapbox-gl-js/example/cluster-html/)\n */\n | 'data'\n\n /**\n * Fired when the map's style loads or changes. See\n * {@link MapDataEvent} for more information.\n *\n * @event styledata\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the map's style loads or changes.\n * map.on('styledata', () => {\n * console.log('A styledata event occurred.');\n * });\n */\n | 'styledata'\n\n /**\n * Fired when one of the map's sources loads or changes, including if a tile belonging\n * to a source loads or changes. See {@link MapDataEvent} for more information.\n *\n * @event sourcedata\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when one of the map's sources loads or changes.\n * map.on('sourcedata', () => {\n * console.log('A sourcedata event occurred.');\n * });\n */\n | 'sourcedata'\n\n /**\n * Fired when any map data (style, source, tile, etc) begins loading or\n * changing asynchronously. All `dataloading` events are followed by a `data`\n * or `error` event. See {@link MapDataEvent} for more information.\n *\n * @event dataloading\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when any map data begins loading\n * // or changing asynchronously.\n * map.on('dataloading', () => {\n * console.log('A dataloading event occurred.');\n * });\n */\n | 'dataloading'\n\n /**\n * Fired when the map's style begins loading or changing asynchronously.\n * All `styledataloading` events are followed by a `styledata`\n * or `error` event. See {@link MapDataEvent} for more information.\n *\n * @event styledataloading\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the map's style begins loading or\n * // changing asynchronously.\n * map.on('styledataloading', () => {\n * console.log('A styledataloading event occurred.');\n * });\n */\n | 'styledataloading'\n\n /**\n * Fired when one of the map's sources begins loading or changing asynchronously.\n * All `sourcedataloading` events are followed by a `sourcedata` or `error` event.\n * See {@link MapDataEvent} for more information.\n *\n * @event sourcedataloading\n * @memberof Map\n * @instance\n * @type {MapDataEvent}\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when the map's sources begin loading or\n * // changing asynchronously.\n * map.on('sourcedataloading', () => {\n * console.log('A sourcedataloading event occurred.');\n * });\n */\n | 'sourcedataloading'\n\n /**\n * Fired when an icon or pattern needed by the style is missing. The missing image can\n * be added with {@link Map#addImage} within this event listener callback to prevent the image from\n * being skipped. This event can be used to dynamically generate icons and patterns.\n *\n * @event styleimagemissing\n * @memberof Map\n * @instance\n * @property {string} id The id of the missing image.\n * @example\n * // Initialize the map\n * const map = new mapboxgl.Map({});\n * // Set an event listener that fires\n * // when an icon or pattern is missing.\n * map.on('styleimagemissing', () => {\n * console.log('A styleimagemissing event occurred.');\n * });\n * @see [Example: Generate and add a missing icon to the map](https://mapbox.com/mapbox-gl-js/example/add-image-missing-generated/)\n */\n | 'styleimagemissing'\n\n /**\n * @event style.load\n * @memberof Map\n * @instance\n * @private\n */\n | 'style.load'\n\n /**\n * Fired after speed index calculation is completed if `speedIndexTiming` option has been set to `true`.\n *\n * @private\n * @event speedindexcompleted\n * @memberof Map\n * @instance\n * @example\n * // Initialize the map\n * var map = new mapboxgl.Map({});\n * map.speedIndexTiming = true;\n * // Set an event listener that fires\n * // after speed index calculation is completed.\n * map.on('speedindexcompleted', function() {\n * console.log(`speed index is ${map.speedIndexNumber}`);\n * });\n */\n | 'speedindexcompleted'\n;\n","// @flow\n\nimport {extend} from '../../util/util.js';\nimport {MapMouseEvent, MapTouchEvent, MapWheelEvent} from '../events.js';\n\nimport type Map from '../map.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {HandlerResult} from '../handler_manager.js';\n\nexport class MapEventHandler {\n\n _mousedownPos: ?Point;\n _clickTolerance: number;\n _map: Map;\n\n constructor(map: Map, options: { clickTolerance: number }) {\n this._map = map;\n this._clickTolerance = options.clickTolerance;\n }\n\n reset() {\n this._mousedownPos = undefined;\n }\n\n wheel(e: WheelEvent): ?HandlerResult {\n // If mapEvent.preventDefault() is called by the user, prevent handlers such as:\n // - ScrollZoom\n return this._firePreventable(new MapWheelEvent(e.type, this._map, e));\n }\n\n mousedown(e: MouseEvent, point: Point): ?HandlerResult {\n this._mousedownPos = point;\n // If mapEvent.preventDefault() is called by the user, prevent handlers such as:\n // - MousePan\n // - MouseRotate\n // - MousePitch\n // - DblclickHandler\n return this._firePreventable(new MapMouseEvent(e.type, this._map, e));\n }\n\n mouseup(e: MouseEvent) {\n this._map.fire(new MapMouseEvent(e.type, this._map, e));\n }\n\n preclick(e: MouseEvent) {\n const synth = extend({}, e);\n synth.type = 'preclick';\n this._map.fire(new MapMouseEvent(synth.type, this._map, synth));\n }\n\n click(e: MouseEvent, point: Point) {\n if (this._mousedownPos && this._mousedownPos.dist(point) >= this._clickTolerance) return;\n this.preclick(e);\n this._map.fire(new MapMouseEvent(e.type, this._map, e));\n }\n\n dblclick(e: MouseEvent): ?HandlerResult {\n // If mapEvent.preventDefault() is called by the user, prevent handlers such as:\n // - DblClickZoom\n return this._firePreventable(new MapMouseEvent(e.type, this._map, e));\n }\n\n mouseover(e: MouseEvent) {\n this._map.fire(new MapMouseEvent(e.type, this._map, e));\n }\n\n mouseout(e: MouseEvent) {\n this._map.fire(new MapMouseEvent(e.type, this._map, e));\n }\n\n touchstart(e: TouchEvent): ?HandlerResult {\n // If mapEvent.preventDefault() is called by the user, prevent handlers such as:\n // - TouchPan\n // - TouchZoom\n // - TouchRotate\n // - TouchPitch\n // - TapZoom\n // - SwipeZoom\n return this._firePreventable(new MapTouchEvent(e.type, this._map, e));\n }\n\n touchmove(e: TouchEvent) {\n this._map.fire(new MapTouchEvent(e.type, this._map, e));\n }\n\n touchend(e: TouchEvent) {\n this._map.fire(new MapTouchEvent(e.type, this._map, e));\n }\n\n touchcancel(e: TouchEvent) {\n this._map.fire(new MapTouchEvent(e.type, this._map, e));\n }\n\n _firePreventable(mapEvent: MapMouseEvent | MapTouchEvent | MapWheelEvent): ?HandlerResult {\n this._map.fire(mapEvent);\n if (mapEvent.defaultPrevented) {\n // returning an object marks the handler as active and resets other handlers\n return {};\n }\n }\n\n isEnabled(): boolean {\n return true;\n }\n\n isActive(): boolean {\n return false;\n }\n enable() {}\n disable() {}\n}\n\nexport class BlockableMapEventHandler {\n _map: Map;\n _delayContextMenu: boolean;\n _contextMenuEvent: ?MouseEvent;\n\n constructor(map: Map) {\n this._map = map;\n }\n\n reset() {\n this._delayContextMenu = false;\n this._contextMenuEvent = undefined;\n }\n\n mousemove(e: MouseEvent) {\n // mousemove map events should not be fired when interaction handlers (pan, rotate, etc) are active\n this._map.fire(new MapMouseEvent(e.type, this._map, e));\n }\n\n mousedown() {\n this._delayContextMenu = true;\n }\n\n mouseup() {\n this._delayContextMenu = false;\n if (this._contextMenuEvent) {\n this._map.fire(new MapMouseEvent('contextmenu', this._map, this._contextMenuEvent));\n delete this._contextMenuEvent;\n }\n }\n contextmenu(e: MouseEvent) {\n if (this._delayContextMenu) {\n // Mac: contextmenu fired on mousedown; we save it until mouseup for consistency's sake\n this._contextMenuEvent = e;\n } else {\n // Windows: contextmenu fired on mouseup, so fire event now\n this._map.fire(new MapMouseEvent(e.type, this._map, e));\n }\n\n // prevent browser context menu when necessary\n if (this._map.listens('contextmenu')) {\n e.preventDefault();\n }\n }\n\n isEnabled(): boolean {\n return true;\n }\n\n isActive(): boolean {\n return false;\n }\n enable() {}\n disable() {}\n}\n","// @flow\n\nimport * as DOM from '../../util/dom.js';\n\nimport {Event} from '../../util/evented.js';\n\nimport type Map from '../map.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {HandlerResult} from '../handler_manager.js';\n\n/**\n * The `BoxZoomHandler` allows the user to zoom the map to fit within a bounding box.\n * The bounding box is defined by clicking and holding `shift` while dragging the cursor.\n *\n * @see [Example: Toggle interactions](https://docs.mapbox.com/mapbox-gl-js/example/toggle-interaction-handlers/)\n * @see [Example: Highlight features within a bounding box](https://docs.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n */\nclass BoxZoomHandler {\n _map: Map;\n _el: HTMLElement;\n _container: HTMLElement;\n _enabled: boolean;\n _active: boolean;\n _startPos: Point;\n _lastPos: Point;\n _box: HTMLElement;\n _clickTolerance: number;\n\n /**\n * @private\n */\n constructor(map: Map, options: {\n clickTolerance: number\n }) {\n this._map = map;\n this._el = map.getCanvasContainer();\n this._container = map.getContainer();\n this._clickTolerance = options.clickTolerance || 1;\n }\n\n /**\n * Returns a Boolean indicating whether the \"box zoom\" interaction is enabled.\n *\n * @returns {boolean} Returns `true` if the \"box zoom\" interaction is enabled.\n * @example\n * const isBoxZoomEnabled = map.boxZoom.isEnabled();\n */\n isEnabled(): boolean {\n return !!this._enabled;\n }\n\n /**\n * Returns a Boolean indicating whether the \"box zoom\" interaction is active (currently being used).\n *\n * @returns {boolean} Returns `true` if the \"box zoom\" interaction is active.\n * @example\n * const isBoxZoomActive = map.boxZoom.isActive();\n */\n isActive(): boolean {\n return !!this._active;\n }\n\n /**\n * Enables the \"box zoom\" interaction.\n *\n * @example\n * map.boxZoom.enable();\n */\n enable() {\n if (this.isEnabled()) return;\n this._enabled = true;\n }\n\n /**\n * Disables the \"box zoom\" interaction.\n *\n * @example\n * map.boxZoom.disable();\n */\n disable() {\n if (!this.isEnabled()) return;\n this._enabled = false;\n }\n\n mousedown(e: MouseEvent, point: Point) {\n if (!this.isEnabled()) return;\n if (!(e.shiftKey && e.button === 0)) return;\n\n DOM.disableDrag();\n this._startPos = this._lastPos = point;\n this._active = true;\n }\n\n mousemoveWindow(e: MouseEvent, point: Point) {\n if (!this._active) return;\n\n const pos = point;\n\n if (this._lastPos.equals(pos) || (!this._box && pos.dist(this._startPos) < this._clickTolerance)) {\n return;\n }\n\n const p0 = this._startPos;\n this._lastPos = pos;\n\n if (!this._box) {\n this._box = DOM.create('div', 'mapboxgl-boxzoom', this._container);\n this._container.classList.add('mapboxgl-crosshair');\n this._fireEvent('boxzoomstart', e);\n }\n\n const minX = Math.min(p0.x, pos.x),\n maxX = Math.max(p0.x, pos.x),\n minY = Math.min(p0.y, pos.y),\n maxY = Math.max(p0.y, pos.y);\n\n this._map._requestDomTask(() => {\n if (this._box) {\n this._box.style.transform = `translate(${minX}px,${minY}px)`;\n this._box.style.width = `${maxX - minX}px`;\n this._box.style.height = `${maxY - minY}px`;\n }\n });\n }\n\n mouseupWindow(e: MouseEvent, point: Point): ?HandlerResult {\n if (!this._active) return;\n\n if (e.button !== 0) return;\n\n const p0 = this._startPos,\n p1 = point;\n\n this.reset();\n\n DOM.suppressClick();\n\n if (p0.x === p1.x && p0.y === p1.y) {\n this._fireEvent('boxzoomcancel', e);\n } else {\n this._map.fire(new Event('boxzoomend', {originalEvent: e}));\n return {\n cameraAnimation: (map: Map) => map.fitScreenCoordinates(p0, p1, this._map.getBearing(), {linear: false})\n };\n }\n }\n\n keydown(e: KeyboardEvent) {\n if (!this._active) return;\n\n if (e.keyCode === 27) {\n this.reset();\n this._fireEvent('boxzoomcancel', e);\n }\n }\n\n blur() {\n this.reset();\n }\n\n reset() {\n this._active = false;\n\n this._container.classList.remove('mapboxgl-crosshair');\n\n if (this._box) {\n this._box.remove();\n this._box = (null: any);\n }\n\n DOM.enableDrag();\n\n delete this._startPos;\n delete this._lastPos;\n }\n\n _fireEvent(type: string, e: *): Map {\n return this._map.fire(new Event(type, {originalEvent: e}));\n }\n}\n\nexport default BoxZoomHandler;\n","// @flow\n\nimport assert from 'assert';\n\nimport type Point from '@mapbox/point-geometry';\n\nexport function indexTouches(touches: Array<Touch>, points: Array<Point>): {[number | string]: Point} {\n assert(touches.length === points.length);\n const obj = {};\n for (let i = 0; i < touches.length; i++) {\n obj[touches[i].identifier] = points[i];\n }\n return obj;\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\nimport {indexTouches} from './handler_util.js';\n\nfunction getCentroid(points: Array<Point>) {\n const sum = new Point(0, 0);\n for (const point of points) {\n sum._add(point);\n }\n return sum.div(points.length);\n}\n\nexport const MAX_TAP_INTERVAL = 500;\nconst MAX_TOUCH_TIME = 500;\nconst MAX_DIST = 30;\n\nexport class SingleTapRecognizer {\n\n numTouches: number;\n centroid: ?Point;\n startTime: number;\n aborted: boolean;\n touches: { [number | string]: Point };\n\n constructor(options: { numTouches: number }) {\n this.reset();\n this.numTouches = options.numTouches;\n }\n\n reset() {\n this.centroid = undefined;\n this.startTime = 0;\n this.touches = {};\n this.aborted = false;\n }\n\n touchstart(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) {\n\n if (this.centroid || mapTouches.length > this.numTouches) {\n this.aborted = true;\n }\n if (this.aborted) {\n return;\n }\n\n if (this.startTime === 0) {\n this.startTime = e.timeStamp;\n }\n\n if (mapTouches.length === this.numTouches) {\n this.centroid = getCentroid(points);\n this.touches = indexTouches(mapTouches, points);\n }\n }\n\n touchmove(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) {\n if (this.aborted || !this.centroid) return;\n\n const newTouches = indexTouches(mapTouches, points);\n for (const id in this.touches) {\n const prevPos = this.touches[id];\n const pos = newTouches[id];\n if (!pos || pos.dist(prevPos) > MAX_DIST) {\n this.aborted = true;\n }\n }\n }\n\n touchend(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>): ?Point {\n if (!this.centroid || e.timeStamp - this.startTime > MAX_TOUCH_TIME) {\n this.aborted = true;\n }\n\n if (mapTouches.length === 0) {\n const centroid = !this.aborted && this.centroid;\n this.reset();\n if (centroid) return centroid;\n }\n }\n\n}\n\nexport class TapRecognizer {\n\n singleTap: SingleTapRecognizer;\n numTaps: number;\n lastTime: number;\n lastTap: ?Point;\n count: number;\n\n constructor(options: { numTaps: number, numTouches: number }) {\n this.singleTap = new SingleTapRecognizer(options);\n this.numTaps = options.numTaps;\n this.reset();\n }\n\n reset() {\n this.lastTime = Infinity;\n this.lastTap = undefined;\n this.count = 0;\n this.singleTap.reset();\n }\n\n touchstart(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) {\n this.singleTap.touchstart(e, points, mapTouches);\n }\n\n touchmove(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) {\n this.singleTap.touchmove(e, points, mapTouches);\n }\n\n touchend(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>): ?Point {\n const tap = this.singleTap.touchend(e, points, mapTouches);\n if (tap) {\n const soonEnough = e.timeStamp - this.lastTime < MAX_TAP_INTERVAL;\n const closeEnough = !this.lastTap || this.lastTap.dist(tap) < MAX_DIST;\n\n if (!soonEnough || !closeEnough) {\n this.reset();\n }\n\n this.count++;\n this.lastTime = e.timeStamp;\n this.lastTap = tap;\n\n if (this.count === this.numTaps) {\n this.reset();\n return tap;\n }\n }\n }\n}\n","// @flow\n\nimport {TapRecognizer} from './tap_recognizer.js';\nimport type Point from '@mapbox/point-geometry';\nimport type Map from '../map.js';\nimport type {HandlerResult} from '../handler_manager.js';\n\nexport default class TapZoomHandler {\n\n _enabled: boolean;\n _active: boolean;\n _zoomIn: TapRecognizer;\n _zoomOut: TapRecognizer;\n\n constructor() {\n this._zoomIn = new TapRecognizer({\n numTouches: 1,\n numTaps: 2\n });\n\n this._zoomOut = new TapRecognizer({\n numTouches: 2,\n numTaps: 1\n });\n\n this.reset();\n }\n\n reset() {\n this._active = false;\n this._zoomIn.reset();\n this._zoomOut.reset();\n }\n\n touchstart(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) {\n this._zoomIn.touchstart(e, points, mapTouches);\n this._zoomOut.touchstart(e, points, mapTouches);\n }\n\n touchmove(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) {\n this._zoomIn.touchmove(e, points, mapTouches);\n this._zoomOut.touchmove(e, points, mapTouches);\n }\n\n touchend(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>): ?HandlerResult {\n const zoomInPoint = this._zoomIn.touchend(e, points, mapTouches);\n const zoomOutPoint = this._zoomOut.touchend(e, points, mapTouches);\n\n if (zoomInPoint) {\n this._active = true;\n e.preventDefault();\n setTimeout(() => this.reset(), 0);\n return {\n cameraAnimation: (map: Map) => map.easeTo({\n duration: 300,\n zoom: map.getZoom() + 1,\n around: map.unproject(zoomInPoint)\n }, {originalEvent: e})\n };\n } else if (zoomOutPoint) {\n this._active = true;\n e.preventDefault();\n setTimeout(() => this.reset(), 0);\n return {\n cameraAnimation: (map: Map) => map.easeTo({\n duration: 300,\n zoom: map.getZoom() - 1,\n around: map.unproject(zoomOutPoint)\n }, {originalEvent: e})\n };\n }\n }\n\n touchcancel() {\n this.reset();\n }\n\n enable() {\n this._enabled = true;\n }\n\n disable() {\n this._enabled = false;\n this.reset();\n }\n\n isEnabled(): boolean {\n return this._enabled;\n }\n\n isActive(): boolean {\n return this._active;\n }\n}\n","// @flow\n\nimport * as DOM from '../../util/dom.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {HandlerResult} from '../handler_manager.js';\n\nconst LEFT_BUTTON = 0;\nconst RIGHT_BUTTON = 2;\n\n// the values for each button in MouseEvent.buttons\nconst BUTTONS_FLAGS = {\n [LEFT_BUTTON]: 1,\n [RIGHT_BUTTON]: 2\n};\n\nfunction buttonStillPressed(e: MouseEvent, button: number) {\n const flag = BUTTONS_FLAGS[button];\n return e.buttons === undefined || (e.buttons & flag) !== flag;\n}\n\nclass MouseHandler {\n\n _enabled: boolean;\n _active: boolean;\n _lastPoint: ?Point;\n _eventButton: ?number;\n _moved: boolean;\n _clickTolerance: number;\n\n constructor(options: { clickTolerance: number }) {\n this.reset();\n this._clickTolerance = options.clickTolerance || 1;\n }\n\n blur() {\n this.reset();\n }\n\n reset() {\n this._active = false;\n this._moved = false;\n this._lastPoint = undefined;\n this._eventButton = undefined;\n }\n\n _correctButton(e: MouseEvent, button: number): boolean { //eslint-disable-line\n return false; // implemented by child\n }\n\n _move(lastPoint: Point, point: Point): ?HandlerResult { //eslint-disable-line\n return {}; // implemented by child\n }\n\n mousedown(e: MouseEvent, point: Point) {\n if (this._lastPoint) return;\n\n const eventButton = DOM.mouseButton(e);\n if (!this._correctButton(e, eventButton)) return;\n\n this._lastPoint = point;\n this._eventButton = eventButton;\n }\n\n mousemoveWindow(e: MouseEvent, point: Point): ?HandlerResult {\n const lastPoint = this._lastPoint;\n if (!lastPoint) return;\n e.preventDefault();\n\n if (this._eventButton != null && buttonStillPressed(e, this._eventButton)) {\n // Some browsers don't fire a `mouseup` when the mouseup occurs outside\n // the window or iframe:\n // https://github.com/mapbox/mapbox-gl-js/issues/4622\n //\n // If the button is no longer pressed during this `mousemove` it may have\n // been released outside of the window or iframe.\n this.reset();\n return;\n }\n\n if (!this._moved && point.dist(lastPoint) < this._clickTolerance) return;\n this._moved = true;\n this._lastPoint = point;\n\n // implemented by child class\n return this._move(lastPoint, point);\n }\n\n mouseupWindow(e: MouseEvent) {\n if (!this._lastPoint) return;\n const eventButton = DOM.mouseButton(e);\n if (eventButton !== this._eventButton) return;\n if (this._moved) DOM.suppressClick();\n this.reset();\n }\n\n enable() {\n this._enabled = true;\n }\n\n disable() {\n this._enabled = false;\n this.reset();\n }\n\n isEnabled(): boolean {\n return this._enabled;\n }\n\n isActive(): boolean {\n return this._active;\n }\n}\n\nexport class MousePanHandler extends MouseHandler {\n\n mousedown(e: MouseEvent, point: Point) {\n super.mousedown(e, point);\n if (this._lastPoint) this._active = true;\n }\n _correctButton(e: MouseEvent, button: number): boolean {\n return button === LEFT_BUTTON && !e.ctrlKey;\n }\n\n _move(lastPoint: Point, point: Point): ?HandlerResult {\n return {\n around: point,\n panDelta: point.sub(lastPoint)\n };\n }\n}\n\nexport class MouseRotateHandler extends MouseHandler {\n _correctButton(e: MouseEvent, button: number): boolean {\n return (button === LEFT_BUTTON && e.ctrlKey) || (button === RIGHT_BUTTON);\n }\n\n _move(lastPoint: Point, point: Point): ?HandlerResult {\n const degreesPerPixelMoved = 0.8;\n const bearingDelta = (point.x - lastPoint.x) * degreesPerPixelMoved;\n if (bearingDelta) {\n this._active = true;\n return {bearingDelta};\n }\n }\n\n contextmenu(e: MouseEvent) {\n // prevent browser context menu when necessary; we don't allow it with rotation\n // because we can't discern rotation gesture start from contextmenu on Mac\n e.preventDefault();\n }\n}\n\nexport class MousePitchHandler extends MouseHandler {\n _correctButton(e: MouseEvent, button: number): boolean {\n return (button === LEFT_BUTTON && e.ctrlKey) || (button === RIGHT_BUTTON);\n }\n\n _move(lastPoint: Point, point: Point): ?HandlerResult {\n const degreesPerPixelMoved = -0.5;\n const pitchDelta = (point.y - lastPoint.y) * degreesPerPixelMoved;\n if (pitchDelta) {\n this._active = true;\n return {pitchDelta};\n }\n }\n\n contextmenu(e: MouseEvent) {\n // prevent browser context menu when necessary; we don't allow it with rotation\n // because we can't discern rotation gesture start from contextmenu on Mac\n e.preventDefault();\n }\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\nimport type Map from '../map.js';\nimport {indexTouches} from './handler_util.js';\nimport {bindAll} from '../../util/util.js';\nimport * as DOM from '../../util/dom.js';\nimport type {HandlerResult} from '../handler_manager.js';\n\nexport default class TouchPanHandler {\n\n _map: Map;\n _el: HTMLElement;\n _enabled: boolean;\n _active: boolean;\n _touches: { [string | number]: Point };\n _minTouches: number;\n _clickTolerance: number;\n _sum: Point;\n _alertContainer: HTMLElement;\n _alertTimer: TimeoutID;\n\n constructor(map: Map, options: { clickTolerance: number }) {\n this._map = map;\n this._el = map.getCanvasContainer();\n this._minTouches = 1;\n this._clickTolerance = options.clickTolerance || 1;\n this.reset();\n bindAll(['_addTouchPanBlocker', '_showTouchPanBlockerAlert'], this);\n }\n\n reset() {\n this._active = false;\n this._touches = {};\n this._sum = new Point(0, 0);\n }\n\n touchstart(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>): ?HandlerResult {\n return this._calculateTransform(e, points, mapTouches);\n }\n\n touchmove(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>): ?HandlerResult {\n if (!this._active || mapTouches.length < this._minTouches) return;\n\n // if cooperative gesture handling is set to true, require two fingers to touch pan\n if (this._map._cooperativeGestures && !this._map.isMoving()) {\n if (mapTouches.length === 1) {\n this._showTouchPanBlockerAlert();\n return;\n } else if (this._alertContainer.style.visibility !== 'hidden') {\n // immediately hide alert if it is visible when two fingers are used to pan.\n this._alertContainer.style.visibility = 'hidden';\n clearTimeout(this._alertTimer);\n }\n }\n\n e.preventDefault();\n\n return this._calculateTransform(e, points, mapTouches);\n }\n\n touchend(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) {\n this._calculateTransform(e, points, mapTouches);\n\n if (this._active && mapTouches.length < this._minTouches) {\n this.reset();\n }\n }\n\n touchcancel() {\n this.reset();\n }\n\n _calculateTransform(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>): ?HandlerResult {\n if (mapTouches.length > 0) this._active = true;\n\n const touches = indexTouches(mapTouches, points);\n\n const touchPointSum = new Point(0, 0);\n const touchDeltaSum = new Point(0, 0);\n let touchDeltaCount = 0;\n\n for (const identifier in touches) {\n const point = touches[identifier];\n const prevPoint = this._touches[identifier];\n if (prevPoint) {\n touchPointSum._add(point);\n touchDeltaSum._add(point.sub(prevPoint));\n touchDeltaCount++;\n touches[identifier] = point;\n }\n }\n\n this._touches = touches;\n\n if (touchDeltaCount < this._minTouches || !touchDeltaSum.mag()) return;\n\n const panDelta = touchDeltaSum.div(touchDeltaCount);\n this._sum._add(panDelta);\n if (this._sum.mag() < this._clickTolerance) return;\n\n const around = touchPointSum.div(touchDeltaCount);\n\n return {\n around,\n panDelta\n };\n }\n\n enable() {\n this._enabled = true;\n if (this._map._cooperativeGestures) {\n this._addTouchPanBlocker();\n // override touch-action css property to enable scrolling page over map\n this._el.classList.add('mapboxgl-touch-pan-blocker-override', 'mapboxgl-scrollable-page');\n }\n }\n\n disable() {\n this._enabled = false;\n if (this._map._cooperativeGestures) {\n clearTimeout(this._alertTimer);\n this._alertContainer.remove();\n this._el.classList.remove('mapboxgl-touch-pan-blocker-override', 'mapboxgl-scrollable-page');\n }\n this.reset();\n }\n\n isEnabled(): boolean {\n return this._enabled;\n }\n\n isActive(): boolean {\n return this._active;\n }\n\n _addTouchPanBlocker() {\n if (this._map && !this._alertContainer) {\n this._alertContainer = DOM.create('div', 'mapboxgl-touch-pan-blocker', this._map._container);\n\n this._alertContainer.textContent = this._map._getUIString('TouchPanBlocker.Message');\n\n // dynamically set the font size of the touch pan blocker alert message\n this._alertContainer.style.fontSize = `${Math.max(10, Math.min(24, Math.floor(this._el.clientWidth * 0.05)))}px`;\n }\n }\n\n _showTouchPanBlockerAlert() {\n if (this._alertContainer.style.visibility === 'hidden') this._alertContainer.style.visibility = 'visible';\n\n this._alertContainer.classList.add('mapboxgl-touch-pan-blocker-show');\n\n clearTimeout(this._alertTimer);\n\n this._alertTimer = setTimeout(() => {\n this._alertContainer.classList.remove('mapboxgl-touch-pan-blocker-show');\n }, 500);\n }\n\n}\n","// @flow\n\nimport Point from '@mapbox/point-geometry';\nimport * as DOM from '../../util/dom.js';\nimport type Map from '../map.js';\nimport type {HandlerResult} from '../handler_manager.js';\n\nclass TwoTouchHandler {\n\n _enabled: boolean;\n _active: boolean;\n _firstTwoTouches: ?[number, number];\n _vector: ?Point;\n _startVector: ?Point;\n _aroundCenter: boolean;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this._active = false;\n this._firstTwoTouches = undefined;\n }\n\n _start(points: [Point, Point]) {} //eslint-disable-line\n _move(points: [Point, Point], pinchAround: Point, e: TouchEvent): ?HandlerResult { return {}; } //eslint-disable-line\n\n touchstart(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) {\n //console.log(e.target, e.targetTouches.length ? e.targetTouches[0].target : null);\n //log('touchstart', points, e.target.innerHTML, e.targetTouches.length ? e.targetTouches[0].target.innerHTML: undefined);\n if (this._firstTwoTouches || mapTouches.length < 2) return;\n\n this._firstTwoTouches = [\n mapTouches[0].identifier,\n mapTouches[1].identifier\n ];\n\n // implemented by child classes\n this._start([points[0], points[1]]);\n }\n\n touchmove(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>): ?HandlerResult {\n const firstTouches = this._firstTwoTouches;\n if (!firstTouches) return;\n\n e.preventDefault();\n\n const [idA, idB] = firstTouches;\n const a = getTouchById(mapTouches, points, idA);\n const b = getTouchById(mapTouches, points, idB);\n if (!a || !b) return;\n const pinchAround = this._aroundCenter ? null : a.add(b).div(2);\n\n // implemented by child classes\n return this._move([a, b], pinchAround, e);\n\n }\n\n touchend(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) {\n if (!this._firstTwoTouches) return;\n\n const [idA, idB] = this._firstTwoTouches;\n const a = getTouchById(mapTouches, points, idA);\n const b = getTouchById(mapTouches, points, idB);\n if (a && b) return;\n\n if (this._active) DOM.suppressClick();\n\n this.reset();\n }\n\n touchcancel() {\n this.reset();\n }\n\n enable(options: ?{around?: 'center'}) {\n this._enabled = true;\n this._aroundCenter = !!options && options.around === 'center';\n }\n\n disable() {\n this._enabled = false;\n this.reset();\n }\n\n isEnabled(): boolean {\n return this._enabled;\n }\n\n isActive(): boolean {\n return this._active;\n }\n}\n\nfunction getTouchById(mapTouches: Array<Touch>, points: Array<Point>, identifier: number) {\n for (let i = 0; i < mapTouches.length; i++) {\n if (mapTouches[i].identifier === identifier) return points[i];\n }\n}\n\n/* ZOOM */\n\nconst ZOOM_THRESHOLD = 0.1;\n\nfunction getZoomDelta(distance, lastDistance) {\n return Math.log(distance / lastDistance) / Math.LN2;\n}\n\nexport class TouchZoomHandler extends TwoTouchHandler {\n\n _distance: number;\n _startDistance: number;\n\n reset() {\n super.reset();\n this._distance = 0;\n this._startDistance = 0;\n }\n\n _start(points: [Point, Point]) {\n this._startDistance = this._distance = points[0].dist(points[1]);\n }\n\n _move(points: [Point, Point], pinchAround: Point): ?HandlerResult {\n const lastDistance = this._distance;\n this._distance = points[0].dist(points[1]);\n if (!this._active && Math.abs(getZoomDelta(this._distance, this._startDistance)) < ZOOM_THRESHOLD) return;\n this._active = true;\n return {\n zoomDelta: getZoomDelta(this._distance, lastDistance),\n pinchAround\n };\n }\n}\n\n/* ROTATE */\n\nconst ROTATION_THRESHOLD = 25; // pixels along circumference of touch circle\n\nfunction getBearingDelta(a, b) {\n return a.angleWith(b) * 180 / Math.PI;\n}\n\nexport class TouchRotateHandler extends TwoTouchHandler {\n _minDiameter: number;\n\n reset() {\n super.reset();\n this._minDiameter = 0;\n this._startVector = undefined;\n this._vector = undefined;\n }\n\n _start(points: [Point, Point]) {\n this._startVector = this._vector = points[0].sub(points[1]);\n this._minDiameter = points[0].dist(points[1]);\n }\n\n _move(points: [Point, Point], pinchAround: Point): ?HandlerResult {\n const lastVector = this._vector;\n this._vector = points[0].sub(points[1]);\n\n if (!this._active && this._isBelowThreshold(this._vector)) return;\n this._active = true;\n\n return {\n bearingDelta: getBearingDelta(this._vector, lastVector),\n pinchAround\n };\n }\n\n _isBelowThreshold(vector: Point): boolean {\n /*\n * The threshold before a rotation actually happens is configured in\n * pixels alongth circumference of the circle formed by the two fingers.\n * This makes the threshold in degrees larger when the fingers are close\n * together and smaller when the fingers are far apart.\n *\n * Use the smallest diameter from the whole gesture to reduce sensitivity\n * when pinching in and out.\n */\n\n this._minDiameter = Math.min(this._minDiameter, vector.mag());\n const circumference = Math.PI * this._minDiameter;\n const threshold = ROTATION_THRESHOLD / circumference * 360;\n\n const bearingDeltaSinceStart = getBearingDelta(vector, this._startVector);\n return Math.abs(bearingDeltaSinceStart) < threshold;\n }\n}\n\n/* PITCH */\n\nfunction isVertical(vector) {\n return Math.abs(vector.y) > Math.abs(vector.x);\n}\n\nconst ALLOWED_SINGLE_TOUCH_TIME = 100;\n\n/**\n * The `TouchPitchHandler` allows the user to pitch the map by dragging up and down with two fingers.\n *\n * @see [Example: Set pitch and bearing](https://docs.mapbox.com/mapbox-gl-js/example/set-perspective/)\n*/\nexport class TouchPitchHandler extends TwoTouchHandler {\n\n _valid: boolean | void;\n _firstMove: ?number;\n _lastPoints: ?[Point, Point];\n _map: Map;\n\n constructor(map: Map) {\n super();\n this._map = map;\n }\n\n reset() {\n super.reset();\n this._valid = undefined;\n this._firstMove = undefined;\n this._lastPoints = undefined;\n }\n\n _start(points: [Point, Point]) {\n this._lastPoints = points;\n if (isVertical(points[0].sub(points[1]))) {\n // fingers are more horizontal than vertical\n this._valid = false;\n }\n\n }\n\n _move(points: [Point, Point], center: Point, e: TouchEvent): ?HandlerResult {\n const lastPoints = this._lastPoints;\n if (!lastPoints) return;\n const vectorA = points[0].sub(lastPoints[0]);\n const vectorB = points[1].sub(lastPoints[1]);\n\n if (this._map._cooperativeGestures && e.touches.length < 3) return;\n\n this._valid = this.gestureBeginsVertically(vectorA, vectorB, e.timeStamp);\n\n if (!this._valid) return;\n\n this._lastPoints = points;\n this._active = true;\n const yDeltaAverage = (vectorA.y + vectorB.y) / 2;\n const degreesPerPixelMoved = -0.5;\n return {\n pitchDelta: yDeltaAverage * degreesPerPixelMoved\n };\n }\n\n gestureBeginsVertically(vectorA: Point, vectorB: Point, timeStamp: number): void | boolean {\n if (this._valid !== undefined) return this._valid;\n\n const threshold = 2;\n const movedA = vectorA.mag() >= threshold;\n const movedB = vectorB.mag() >= threshold;\n\n // neither finger has moved a meaningful amount, wait\n if (!movedA && !movedB) return;\n\n // One finger has moved and the other has not.\n // If enough time has passed, decide it is not a pitch.\n if (!movedA || !movedB) {\n if (this._firstMove == null) {\n this._firstMove = timeStamp;\n }\n\n if (timeStamp - this._firstMove < ALLOWED_SINGLE_TOUCH_TIME) {\n // still waiting for a movement from the second finger\n return undefined;\n } else {\n return false;\n }\n }\n\n const isSameDirection = vectorA.y > 0 === vectorB.y > 0;\n return isVertical(vectorA) && isVertical(vectorB) && isSameDirection;\n }\n}\n","// @flow\n\nimport type Map from '../map.js';\nimport type {HandlerResult} from '../handler_manager.js';\n\nconst defaultOptions = {\n panStep: 100,\n bearingStep: 15,\n pitchStep: 10\n};\n\n/**\n * The `KeyboardHandler` allows the user to zoom, rotate, and pan the map using\n * the following keyboard shortcuts:\n *\n * - `=` / `+`: Increase the zoom level by 1.\n * - `Shift-=` / `Shift-+`: Increase the zoom level by 2.\n * - `-`: Decrease the zoom level by 1.\n * - `Shift--`: Decrease the zoom level by 2.\n * - Arrow keys: Pan by 100 pixels.\n * - `Shift+⇢`: Increase the rotation by 15 degrees.\n * - `Shift+⇠`: Decrease the rotation by 15 degrees.\n * - `Shift+⇡`: Increase the pitch by 10 degrees.\n * - `Shift+⇣`: Decrease the pitch by 10 degrees.\n *\n * @see [Example: Toggle interactions](https://docs.mapbox.com/mapbox-gl-js/example/toggle-interaction-handlers/)\n * @see [Example: Navigate the map with game-like controls](https://docs.mapbox.com/mapbox-gl-js/example/game-controls/)\n * @see [Example: Display map navigation controls](https://docs.mapbox.com/mapbox-gl-js/example/navigation/)\n */\nclass KeyboardHandler {\n _enabled: boolean;\n _active: boolean;\n _panStep: number;\n _bearingStep: number;\n _pitchStep: number;\n _rotationDisabled: boolean;\n\n /**\n * @private\n */\n constructor() {\n const stepOptions = defaultOptions;\n this._panStep = stepOptions.panStep;\n this._bearingStep = stepOptions.bearingStep;\n this._pitchStep = stepOptions.pitchStep;\n this._rotationDisabled = false;\n }\n\n blur() {\n this.reset();\n }\n\n reset() {\n this._active = false;\n }\n\n keydown(e: KeyboardEvent): ?HandlerResult {\n if (e.altKey || e.ctrlKey || e.metaKey) return;\n\n let zoomDir = 0;\n let bearingDir = 0;\n let pitchDir = 0;\n let xDir = 0;\n let yDir = 0;\n\n switch (e.keyCode) {\n case 61:\n case 107:\n case 171:\n case 187:\n zoomDir = 1;\n break;\n\n case 189:\n case 109:\n case 173:\n zoomDir = -1;\n break;\n\n case 37:\n if (e.shiftKey) {\n bearingDir = -1;\n } else {\n e.preventDefault();\n xDir = -1;\n }\n break;\n\n case 39:\n if (e.shiftKey) {\n bearingDir = 1;\n } else {\n e.preventDefault();\n xDir = 1;\n }\n break;\n\n case 38:\n if (e.shiftKey) {\n pitchDir = 1;\n } else {\n e.preventDefault();\n yDir = -1;\n }\n break;\n\n case 40:\n if (e.shiftKey) {\n pitchDir = -1;\n } else {\n e.preventDefault();\n yDir = 1;\n }\n break;\n\n default:\n return;\n }\n\n if (this._rotationDisabled) {\n bearingDir = 0;\n pitchDir = 0;\n }\n\n return {\n cameraAnimation: (map: Map) => {\n const zoom = map.getZoom();\n map.easeTo({\n duration: 300,\n easeId: 'keyboardHandler',\n easing: easeOut,\n\n zoom: zoomDir ? Math.round(zoom) + zoomDir * (e.shiftKey ? 2 : 1) : zoom,\n bearing: map.getBearing() + bearingDir * this._bearingStep,\n pitch: map.getPitch() + pitchDir * this._pitchStep,\n offset: [-xDir * this._panStep, -yDir * this._panStep],\n center: map.getCenter()\n }, {originalEvent: e});\n }\n };\n }\n\n /**\n * Enables the \"keyboard rotate and zoom\" interaction.\n *\n * @example\n * map.keyboard.enable();\n */\n enable() {\n this._enabled = true;\n }\n\n /**\n * Disables the \"keyboard rotate and zoom\" interaction.\n *\n * @example\n * map.keyboard.disable();\n */\n disable() {\n this._enabled = false;\n this.reset();\n }\n\n /**\n * Returns a Boolean indicating whether the \"keyboard rotate and zoom\"\n * interaction is enabled.\n *\n * @returns {boolean} `true` if the \"keyboard rotate and zoom\"\n * interaction is enabled.\n * @example\n * const isKeyboardEnabled = map.keyboard.isEnabled();\n */\n isEnabled(): boolean {\n return this._enabled;\n }\n\n /**\n * Returns true if the handler is enabled and has detected the start of a\n * zoom/rotate gesture.\n *\n * @returns {boolean} `true` if the handler is enabled and has detected the\n * start of a zoom/rotate gesture.\n * @example\n * const isKeyboardActive = map.keyboard.isActive();\n */\n isActive(): boolean {\n return this._active;\n }\n\n /**\n * Disables the \"keyboard pan/rotate\" interaction, leaving the\n * \"keyboard zoom\" interaction enabled.\n *\n * @example\n * map.keyboard.disableRotation();\n */\n disableRotation() {\n this._rotationDisabled = true;\n }\n\n /**\n * Enables the \"keyboard pan/rotate\" interaction.\n *\n * @example\n * map.keyboard.enable();\n * map.keyboard.enableRotation();\n */\n enableRotation() {\n this._rotationDisabled = false;\n }\n}\n\nfunction easeOut(t: number) {\n return t * (2 - t);\n}\n\nexport default KeyboardHandler;\n","// @flow\n\nimport assert from 'assert';\nimport * as DOM from '../../util/dom.js';\n\nimport {ease as _ease, bindAll, bezier} from '../../util/util.js';\nimport browser from '../../util/browser.js';\nimport window from '../../util/window.js';\nimport {number as interpolate} from '../../style-spec/util/interpolate.js';\nimport Point from '@mapbox/point-geometry';\n\nimport type Map from '../map.js';\nimport type HandlerManager, {HandlerResult} from '../handler_manager.js';\nimport MercatorCoordinate from '../../geo/mercator_coordinate.js';\n\n// deltaY value for mouse scroll wheel identification\nconst wheelZoomDelta = 4.000244140625;\n\n// These magic numbers control the rate of zoom. Trackpad events fire at a greater\n// frequency than mouse scroll wheel, so reduce the zoom rate per wheel tick\nconst defaultZoomRate = 1 / 100;\nconst wheelZoomRate = 1 / 450;\n\n// upper bound on how much we scale the map in any single render frame; this\n// is used to limit zoom rate in the case of very fast scrolling\nconst maxScalePerFrame = 2;\n\n/**\n * The `ScrollZoomHandler` allows the user to zoom the map by scrolling.\n *\n * @see [Example: Toggle interactions](https://docs.mapbox.com/mapbox-gl-js/example/toggle-interaction-handlers/)\n * @see [Example: Disable scroll zoom](https://docs.mapbox.com/mapbox-gl-js/example/disable-scroll-zoom/)\n */\nclass ScrollZoomHandler {\n _map: Map;\n _el: HTMLElement;\n _enabled: boolean;\n _active: boolean;\n _zooming: boolean;\n _aroundCenter: boolean;\n _aroundPoint: Point;\n _aroundCoord: MercatorCoordinate;\n _type: 'wheel' | 'trackpad' | null;\n _lastValue: number;\n _timeout: ?TimeoutID; // used for delayed-handling of a single wheel movement\n _finishTimeout: ?TimeoutID; // used to delay final '{move,zoom}end' events\n\n _lastWheelEvent: any;\n _lastWheelEventTime: number;\n\n _startZoom: ?number;\n _targetZoom: ?number;\n _delta: number;\n _easing: ?((number) => number);\n _prevEase: ?{start: number, duration: number, easing: (_: number) => number};\n\n _frameId: ?boolean;\n _handler: HandlerManager;\n\n _defaultZoomRate: number;\n _wheelZoomRate: number;\n\n _alertContainer: HTMLElement; // used to display the scroll zoom blocker alert\n _alertTimer: TimeoutID;\n\n /**\n * @private\n */\n constructor(map: Map, handler: HandlerManager) {\n this._map = map;\n this._el = map.getCanvasContainer();\n this._handler = handler;\n\n this._delta = 0;\n\n this._defaultZoomRate = defaultZoomRate;\n this._wheelZoomRate = wheelZoomRate;\n\n bindAll(['_onTimeout', '_addScrollZoomBlocker', '_showBlockerAlert', '_isFullscreen'], this);\n\n }\n\n /**\n * Sets the zoom rate of a trackpad.\n *\n * @param {number} [zoomRate=1/100] The rate used to scale trackpad movement to a zoom value.\n * @example\n * // Speed up trackpad zoom\n * map.scrollZoom.setZoomRate(1 / 25);\n */\n setZoomRate(zoomRate: number) {\n this._defaultZoomRate = zoomRate;\n }\n\n /**\n * Sets the zoom rate of a mouse wheel.\n *\n * @param {number} [wheelZoomRate=1/450] The rate used to scale mouse wheel movement to a zoom value.\n * @example\n * // Slow down zoom of mouse wheel\n * map.scrollZoom.setWheelZoomRate(1 / 600);\n */\n setWheelZoomRate(wheelZoomRate: number) {\n this._wheelZoomRate = wheelZoomRate;\n }\n\n /**\n * Returns a Boolean indicating whether the \"scroll to zoom\" interaction is enabled.\n *\n * @returns {boolean} `true` if the \"scroll to zoom\" interaction is enabled.\n * @example\n * const isScrollZoomEnabled = map.scrollZoom.isEnabled();\n */\n isEnabled(): boolean {\n return !!this._enabled;\n }\n\n /*\n * Active state is turned on and off with every scroll wheel event and is set back to false before the map\n * render is called, so _active is not a good candidate for determining if a scroll zoom animation is in\n * progress.\n */\n isActive(): boolean {\n return !!this._active || this._finishTimeout !== undefined;\n }\n\n isZooming(): boolean {\n return !!this._zooming;\n }\n\n /**\n * Enables the \"scroll to zoom\" interaction.\n *\n * @param {Object} [options] Options object.\n * @param {string} [options.around] If \"center\" is passed, map will zoom around center of map.\n *\n * @example\n * map.scrollZoom.enable();\n * @example\n * map.scrollZoom.enable({around: 'center'});\n */\n enable(options: ?{around?: 'center'}) {\n if (this.isEnabled()) return;\n this._enabled = true;\n this._aroundCenter = !!options && options.around === 'center';\n if (this._map._cooperativeGestures) this._addScrollZoomBlocker();\n }\n\n /**\n * Disables the \"scroll to zoom\" interaction.\n *\n * @example\n * map.scrollZoom.disable();\n */\n disable() {\n if (!this.isEnabled()) return;\n this._enabled = false;\n if (this._map._cooperativeGestures) {\n clearTimeout(this._alertTimer);\n this._alertContainer.remove();\n }\n }\n\n wheel(e: WheelEvent) {\n if (!this.isEnabled()) return;\n\n if (this._map._cooperativeGestures) {\n if (!e.ctrlKey && !e.metaKey && !this.isZooming() && !this._isFullscreen()) {\n this._showBlockerAlert();\n return;\n } else if (this._alertContainer.style.visibility !== 'hidden') {\n // immediately hide alert if it is visible when ctrl or ⌘ is pressed while scroll zooming.\n this._alertContainer.style.visibility = 'hidden';\n clearTimeout(this._alertTimer);\n }\n }\n\n // Remove `any` cast when https://github.com/facebook/flow/issues/4879 is fixed.\n let value = e.deltaMode === (window.WheelEvent: any).DOM_DELTA_LINE ? e.deltaY * 40 : e.deltaY;\n const now = browser.now(),\n timeDelta = now - (this._lastWheelEventTime || 0);\n\n this._lastWheelEventTime = now;\n\n if (value !== 0 && (value % wheelZoomDelta) === 0) {\n // This one is definitely a mouse wheel event.\n this._type = 'wheel';\n\n } else if (value !== 0 && Math.abs(value) < 4) {\n // This one is definitely a trackpad event because it is so small.\n this._type = 'trackpad';\n\n } else if (timeDelta > 400) {\n // This is likely a new scroll action.\n this._type = null;\n this._lastValue = value;\n\n // Start a timeout in case this was a singular event, and delay it by up to 40ms.\n this._timeout = setTimeout(this._onTimeout, 40, e);\n\n } else if (!this._type) {\n // This is a repeating event, but we don't know the type of event just yet.\n // If the delta per time is small, we assume it's a fast trackpad; otherwise we switch into wheel mode.\n this._type = (Math.abs(timeDelta * value) < 200) ? 'trackpad' : 'wheel';\n\n // Make sure our delayed event isn't fired again, because we accumulate\n // the previous event (which was less than 40ms ago) into this event.\n if (this._timeout) {\n clearTimeout(this._timeout);\n this._timeout = null;\n value += this._lastValue;\n }\n }\n\n // Slow down zoom if shift key is held for more precise zooming\n if (e.shiftKey && value) value = value / 4;\n\n // Only fire the callback if we actually know what type of scrolling device the user uses.\n if (this._type) {\n this._lastWheelEvent = e;\n this._delta -= value;\n if (!this._active) {\n this._start(e);\n }\n }\n\n e.preventDefault();\n }\n\n _onTimeout(initialEvent: WheelEvent) {\n this._type = 'wheel';\n this._delta -= this._lastValue;\n if (!this._active) {\n this._start(initialEvent);\n }\n }\n\n _start(e: WheelEvent) {\n if (!this._delta) return;\n\n if (this._frameId) {\n this._frameId = null;\n }\n\n this._active = true;\n if (!this.isZooming()) {\n this._zooming = true;\n }\n\n if (this._finishTimeout) {\n clearTimeout(this._finishTimeout);\n delete this._finishTimeout;\n }\n\n const pos = DOM.mousePos(this._el, e);\n this._aroundPoint = this._aroundCenter ? this._map.transform.centerPoint : pos;\n this._aroundCoord = this._map.transform.pointCoordinate3D(this._aroundPoint);\n this._targetZoom = undefined;\n\n if (!this._frameId) {\n this._frameId = true;\n this._handler._triggerRenderFrame();\n }\n }\n\n renderFrame(): ?HandlerResult {\n if (!this._frameId) return;\n this._frameId = null;\n\n if (!this.isActive()) return;\n\n const tr = this._map.transform;\n\n const startingZoom = () => {\n return (tr._terrainEnabled() && this._aroundCoord) ? tr.computeZoomRelativeTo(this._aroundCoord) : tr.zoom;\n };\n\n // if we've had scroll events since the last render frame, consume the\n // accumulated delta, and update the target zoom level accordingly\n if (this._delta !== 0) {\n // For trackpad events and single mouse wheel ticks, use the default zoom rate\n const zoomRate = (this._type === 'wheel' && Math.abs(this._delta) > wheelZoomDelta) ? this._wheelZoomRate : this._defaultZoomRate;\n // Scale by sigmoid of scroll wheel delta.\n let scale = maxScalePerFrame / (1 + Math.exp(-Math.abs(this._delta * zoomRate)));\n\n if (this._delta < 0 && scale !== 0) {\n scale = 1 / scale;\n }\n\n const startZoom = startingZoom();\n const startScale = Math.pow(2.0, startZoom);\n\n const fromScale = typeof this._targetZoom === 'number' ? tr.zoomScale(this._targetZoom) : startScale;\n this._targetZoom = Math.min(tr.maxZoom, Math.max(tr.minZoom, tr.scaleZoom(fromScale * scale)));\n\n // if this is a mouse wheel, refresh the starting zoom and easing\n // function we're using to smooth out the zooming between wheel\n // events\n if (this._type === 'wheel') {\n this._startZoom = startingZoom();\n this._easing = this._smoothOutEasing(200);\n }\n\n this._delta = 0;\n }\n const targetZoom = typeof this._targetZoom === 'number' ?\n this._targetZoom : startingZoom();\n const startZoom = this._startZoom;\n const easing = this._easing;\n\n let finished = false;\n let zoom;\n if (this._type === 'wheel' && startZoom && easing) {\n assert(easing && typeof startZoom === 'number');\n\n const t = Math.min((browser.now() - this._lastWheelEventTime) / 200, 1);\n const k = easing(t);\n zoom = interpolate(startZoom, targetZoom, k);\n if (t < 1) {\n if (!this._frameId) {\n this._frameId = true;\n }\n } else {\n finished = true;\n }\n } else {\n zoom = targetZoom;\n finished = true;\n }\n\n this._active = true;\n\n if (finished) {\n this._active = false;\n this._finishTimeout = setTimeout(() => {\n this._zooming = false;\n this._handler._triggerRenderFrame();\n delete this._targetZoom;\n delete this._finishTimeout;\n }, 200);\n }\n\n return {\n noInertia: true,\n needsRenderFrame: !finished,\n zoomDelta: zoom - startingZoom(),\n around: this._aroundPoint,\n aroundCoord: this._aroundCoord,\n originalEvent: this._lastWheelEvent\n };\n }\n\n _smoothOutEasing(duration: number): (number) => number {\n let easing = _ease;\n\n if (this._prevEase) {\n const ease = this._prevEase,\n t = (browser.now() - ease.start) / ease.duration,\n speed = ease.easing(t + 0.01) - ease.easing(t),\n\n // Quick hack to make new bezier that is continuous with last\n x = 0.27 / Math.sqrt(speed * speed + 0.0001) * 0.01,\n y = Math.sqrt(0.27 * 0.27 - x * x);\n\n easing = bezier(x, y, 0.25, 1);\n }\n\n this._prevEase = {\n start: browser.now(),\n duration,\n easing\n };\n\n return easing;\n }\n\n blur() {\n this.reset();\n }\n\n reset() {\n this._active = false;\n }\n\n _addScrollZoomBlocker() {\n if (this._map && !this._alertContainer) {\n this._alertContainer = DOM.create('div', 'mapboxgl-scroll-zoom-blocker', this._map._container);\n\n if (/(Mac|iPad)/i.test(window.navigator.userAgent)) {\n this._alertContainer.textContent = this._map._getUIString('ScrollZoomBlocker.CmdMessage');\n } else {\n this._alertContainer.textContent = this._map._getUIString('ScrollZoomBlocker.CtrlMessage');\n }\n\n // dynamically set the font size of the scroll zoom blocker alert message\n this._alertContainer.style.fontSize = `${Math.max(10, Math.min(24, Math.floor(this._el.clientWidth * 0.05)))}px`;\n }\n }\n\n _isFullscreen(): boolean {\n return !!window.document.fullscreenElement || !!window.document.webkitFullscreenElement;\n }\n\n _showBlockerAlert() {\n if (this._alertContainer.style.visibility === 'hidden') this._alertContainer.style.visibility = 'visible';\n this._alertContainer.classList.add('mapboxgl-scroll-zoom-blocker-show');\n\n clearTimeout(this._alertTimer);\n\n this._alertTimer = setTimeout(() => {\n this._alertContainer.classList.remove('mapboxgl-scroll-zoom-blocker-show');\n }, 200);\n }\n\n}\n\nexport default ScrollZoomHandler;\n","// @flow\n\nimport type ClickZoomHandler from '../click_zoom.js';\nimport type TapZoomHandler from './../tap_zoom.js';\n\n/**\n * The `DoubleClickZoomHandler` allows the user to zoom the map at a point by\n * double clicking or double tapping.\n *\n * @see [Example: Toggle interactions](https://docs.mapbox.com/mapbox-gl-js/example/toggle-interaction-handlers/)\n */\nexport default class DoubleClickZoomHandler {\n\n _clickZoom: ClickZoomHandler;\n _tapZoom: TapZoomHandler;\n\n /**\n * @private\n */\n constructor(clickZoom: ClickZoomHandler, TapZoom: TapZoomHandler) {\n this._clickZoom = clickZoom;\n this._tapZoom = TapZoom;\n }\n\n /**\n * Enables the \"double click to zoom\" interaction.\n *\n * @example\n * map.doubleClickZoom.enable();\n */\n enable() {\n this._clickZoom.enable();\n this._tapZoom.enable();\n }\n\n /**\n * Disables the \"double click to zoom\" interaction.\n *\n * @example\n * map.doubleClickZoom.disable();\n */\n disable() {\n this._clickZoom.disable();\n this._tapZoom.disable();\n }\n\n /**\n * Returns a Boolean indicating whether the \"double click to zoom\" interaction is enabled.\n *\n * @returns {boolean} Returns `true` if the \"double click to zoom\" interaction is enabled.\n * @example\n * const isDoubleClickZoomEnabled = map.doubleClickZoom.isEnabled();\n */\n isEnabled(): boolean {\n return this._clickZoom.isEnabled() && this._tapZoom.isEnabled();\n }\n\n /**\n * Returns a Boolean indicating whether the \"double click to zoom\" interaction is active (currently being used).\n *\n * @returns {boolean} Returns `true` if the \"double click to zoom\" interaction is active.\n * @example\n * const isDoubleClickZoomActive = map.doubleClickZoom.isActive();\n */\n isActive(): boolean {\n return this._clickZoom.isActive() || this._tapZoom.isActive();\n }\n}\n","// @flow\n\nimport type Point from '@mapbox/point-geometry';\nimport type Map from '../map.js';\nimport type {HandlerResult} from '../handler_manager.js';\n\nexport default class ClickZoomHandler {\n\n _enabled: boolean;\n _active: boolean;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this._active = false;\n }\n\n blur() {\n this.reset();\n }\n\n dblclick(e: MouseEvent, point: Point): HandlerResult {\n e.preventDefault();\n return {\n cameraAnimation: (map: Map) => {\n map.easeTo({\n duration: 300,\n zoom: map.getZoom() + (e.shiftKey ? -1 : 1),\n around: map.unproject(point)\n }, {originalEvent: e});\n }\n };\n }\n\n enable() {\n this._enabled = true;\n }\n\n disable() {\n this._enabled = false;\n this.reset();\n }\n\n isEnabled(): boolean {\n return this._enabled;\n }\n\n isActive(): boolean {\n return this._active;\n }\n}\n","// @flow\n\nimport {TapRecognizer, MAX_TAP_INTERVAL} from './tap_recognizer.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {HandlerResult} from '../handler_manager.js';\n\nexport default class TapDragZoomHandler {\n\n _enabled: boolean;\n _active: boolean;\n _swipePoint: ?Point;\n _swipeTouch: number;\n _tapTime: number;\n _tap: TapRecognizer;\n\n constructor() {\n\n this._tap = new TapRecognizer({\n numTouches: 1,\n numTaps: 1\n });\n\n this.reset();\n }\n\n reset() {\n this._active = false;\n this._swipePoint = undefined;\n this._swipeTouch = 0;\n this._tapTime = 0;\n this._tap.reset();\n }\n\n touchstart(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) {\n if (this._swipePoint) return;\n\n if (this._tapTime && e.timeStamp - this._tapTime > MAX_TAP_INTERVAL) {\n this.reset();\n }\n\n if (!this._tapTime) {\n this._tap.touchstart(e, points, mapTouches);\n } else if (mapTouches.length > 0) {\n this._swipePoint = points[0];\n this._swipeTouch = mapTouches[0].identifier;\n }\n\n }\n\n touchmove(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>): ?HandlerResult {\n if (!this._tapTime) {\n this._tap.touchmove(e, points, mapTouches);\n } else if (this._swipePoint) {\n if (mapTouches[0].identifier !== this._swipeTouch) {\n return;\n }\n\n const newSwipePoint = points[0];\n const dist = newSwipePoint.y - this._swipePoint.y;\n this._swipePoint = newSwipePoint;\n\n e.preventDefault();\n this._active = true;\n\n return {\n zoomDelta: dist / 128\n };\n }\n }\n\n touchend(e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) {\n if (!this._tapTime) {\n const point = this._tap.touchend(e, points, mapTouches);\n if (point) {\n this._tapTime = e.timeStamp;\n }\n } else if (this._swipePoint) {\n if (mapTouches.length === 0) {\n this.reset();\n }\n }\n }\n\n touchcancel() {\n this.reset();\n }\n\n enable() {\n this._enabled = true;\n }\n\n disable() {\n this._enabled = false;\n this.reset();\n }\n\n isEnabled(): boolean {\n return this._enabled;\n }\n\n isActive(): boolean {\n return this._active;\n }\n}\n","// @flow\n\nimport type {MousePanHandler} from '../mouse.js';\nimport type TouchPanHandler from './../touch_pan.js';\n\nexport type DragPanOptions = {\n linearity?: number;\n easing?: (t: number) => number;\n deceleration?: number;\n maxSpeed?: number;\n};\n\n/**\n * The `DragPanHandler` allows the user to pan the map by clicking and dragging\n * the cursor.\n *\n * @see [Example: Toggle interactions](https://docs.mapbox.com/mapbox-gl-js/example/toggle-interaction-handlers/)\n * @see [Example: Highlight features within a bounding box](https://docs.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n */\nexport default class DragPanHandler {\n\n _el: HTMLElement;\n _mousePan: MousePanHandler;\n _touchPan: TouchPanHandler;\n _inertiaOptions: DragPanOptions\n\n /**\n * @private\n */\n constructor(el: HTMLElement, mousePan: MousePanHandler, touchPan: TouchPanHandler) {\n this._el = el;\n this._mousePan = mousePan;\n this._touchPan = touchPan;\n }\n\n /**\n * Enables the \"drag to pan\" interaction and accepts options to control the behavior of the panning inertia.\n *\n * @param {Object} [options] Options object.\n * @param {number} [options.linearity=0] Factor used to scale the drag velocity.\n * @param {Function} [options.easing] Optional easing function applied to {@link Map#panTo} when applying the drag. Defaults to bezier function using [@mapbox/unitbezier](https://github.com/mapbox/unitbezier).\n * @param {number} [options.maxSpeed=1400] The maximum value of the drag velocity.\n * @param {number} [options.deceleration=2500] The rate at which the speed reduces after the pan ends.\n *\n * @example\n * map.dragPan.enable();\n * @example\n * map.dragPan.enable({\n * linearity: 0.3,\n * easing: t => t,\n * maxSpeed: 1400,\n * deceleration: 2500\n * });\n * @see [Example: Highlight features within a bounding box](https://docs.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n */\n enable(options?: DragPanOptions) {\n this._inertiaOptions = options || {};\n this._mousePan.enable();\n this._touchPan.enable();\n this._el.classList.add('mapboxgl-touch-drag-pan');\n }\n\n /**\n * Disables the \"drag to pan\" interaction.\n *\n * @example\n * map.dragPan.disable();\n */\n disable() {\n this._mousePan.disable();\n this._touchPan.disable();\n this._el.classList.remove('mapboxgl-touch-drag-pan');\n }\n\n /**\n * Returns a Boolean indicating whether the \"drag to pan\" interaction is enabled.\n *\n * @returns {boolean} Returns `true` if the \"drag to pan\" interaction is enabled.\n * @example\n * const isDragPanEnabled = map.dragPan.isEnabled();\n */\n isEnabled(): boolean {\n return this._mousePan.isEnabled() && this._touchPan.isEnabled();\n }\n\n /**\n * Returns a Boolean indicating whether the \"drag to pan\" interaction is active (currently being used).\n *\n * @returns {boolean} Returns `true` if the \"drag to pan\" interaction is active.\n * @example\n * const isDragPanActive = map.dragPan.isActive();\n */\n isActive(): boolean {\n return this._mousePan.isActive() || this._touchPan.isActive();\n }\n}\n","// @flow\n\nimport type {MouseRotateHandler, MousePitchHandler} from '../mouse.js';\n\n/**\n * The `DragRotateHandler` allows the user to rotate the map by clicking and\n * dragging the cursor while holding the right mouse button or `ctrl` key.\n *\n * @see [Example: Toggle interactions](https://docs.mapbox.com/mapbox-gl-js/example/toggle-interaction-handlers/)\n * @see [Example: Disable map rotation](https://docs.mapbox.com/mapbox-gl-js/example/disable-rotation/)\n */\nexport default class DragRotateHandler {\n\n _mouseRotate: MouseRotateHandler;\n _mousePitch: MousePitchHandler;\n _pitchWithRotate: boolean;\n\n /**\n * @param {Object} [options]\n * @param {number} [options.bearingSnap] The threshold, measured in degrees, that determines when the map's\n * bearing will snap to north.\n * @param {bool} [options.pitchWithRotate=true] Control the map pitch in addition to the bearing\n * @private\n */\n constructor(options: {pitchWithRotate: boolean}, mouseRotate: MouseRotateHandler, mousePitch: MousePitchHandler) {\n this._pitchWithRotate = options.pitchWithRotate;\n this._mouseRotate = mouseRotate;\n this._mousePitch = mousePitch;\n }\n\n /**\n * Enables the \"drag to rotate\" interaction.\n *\n * @example\n * map.dragRotate.enable();\n */\n enable() {\n this._mouseRotate.enable();\n if (this._pitchWithRotate) this._mousePitch.enable();\n }\n\n /**\n * Disables the \"drag to rotate\" interaction.\n *\n * @example\n * map.dragRotate.disable();\n */\n disable() {\n this._mouseRotate.disable();\n this._mousePitch.disable();\n }\n\n /**\n * Returns a Boolean indicating whether the \"drag to rotate\" interaction is enabled.\n *\n * @returns {boolean} `true` if the \"drag to rotate\" interaction is enabled.\n * @example\n * const isDragRotateEnabled = map.dragRotate.isEnabled();\n */\n isEnabled(): boolean {\n return this._mouseRotate.isEnabled() && (!this._pitchWithRotate || this._mousePitch.isEnabled());\n }\n\n /**\n * Returns a Boolean indicating whether the \"drag to rotate\" interaction is active (currently being used).\n *\n * @returns {boolean} Returns `true` if the \"drag to rotate\" interaction is active.\n * @example\n * const isDragRotateActive = map.dragRotate.isActive();\n */\n isActive(): boolean {\n return this._mouseRotate.isActive() || this._mousePitch.isActive();\n }\n}\n","// @flow\n\nimport type {TouchZoomHandler, TouchRotateHandler} from '../touch_zoom_rotate.js';\nimport type TapDragZoomHandler from '../tap_drag_zoom.js';\n\n/**\n * The `TouchZoomRotateHandler` allows the user to zoom and rotate the map by\n * pinching on a touchscreen.\n *\n * They can zoom with one finger by double tapping and dragging. On the second tap,\n * hold the finger down and drag up or down to zoom in or out.\n *\n * @see [Example: Toggle interactions](https://docs.mapbox.com/mapbox-gl-js/example/toggle-interaction-handlers/)\n */\nexport default class TouchZoomRotateHandler {\n\n _el: HTMLElement;\n _touchZoom: TouchZoomHandler;\n _touchRotate: TouchRotateHandler;\n _tapDragZoom: TapDragZoomHandler;\n _rotationDisabled: boolean;\n _enabled: boolean;\n\n /**\n * @private\n */\n constructor(el: HTMLElement, touchZoom: TouchZoomHandler, touchRotate: TouchRotateHandler, tapDragZoom: TapDragZoomHandler) {\n this._el = el;\n this._touchZoom = touchZoom;\n this._touchRotate = touchRotate;\n this._tapDragZoom = tapDragZoom;\n this._rotationDisabled = false;\n this._enabled = true;\n }\n\n /**\n * Enables the \"pinch to rotate and zoom\" interaction.\n *\n * @param {Object} [options] Options object.\n * @param {string} [options.around] If \"center\" is passed, map will zoom around the center.\n *\n * @example\n * map.touchZoomRotate.enable();\n * @example\n * map.touchZoomRotate.enable({around: 'center'});\n */\n enable(options: ?{around?: 'center'}) {\n this._touchZoom.enable(options);\n if (!this._rotationDisabled) this._touchRotate.enable(options);\n this._tapDragZoom.enable();\n this._el.classList.add('mapboxgl-touch-zoom-rotate');\n }\n\n /**\n * Disables the \"pinch to rotate and zoom\" interaction.\n *\n * @example\n * map.touchZoomRotate.disable();\n */\n disable() {\n this._touchZoom.disable();\n this._touchRotate.disable();\n this._tapDragZoom.disable();\n this._el.classList.remove('mapboxgl-touch-zoom-rotate');\n }\n\n /**\n * Returns a Boolean indicating whether the \"pinch to rotate and zoom\" interaction is enabled.\n *\n * @returns {boolean} `true` if the \"pinch to rotate and zoom\" interaction is enabled.\n * @example\n * const isTouchZoomRotateEnabled = map.touchZoomRotate.isEnabled();\n */\n isEnabled(): boolean {\n return this._touchZoom.isEnabled() &&\n (this._rotationDisabled || this._touchRotate.isEnabled()) &&\n this._tapDragZoom.isEnabled();\n }\n\n /**\n * Returns true if the handler is enabled and has detected the start of a zoom/rotate gesture.\n *\n * @returns {boolean} `true` if enabled and a zoom/rotate gesture was detected.\n * @example\n * const isTouchZoomRotateActive = map.touchZoomRotate.isActive();\n */\n isActive(): boolean {\n return this._touchZoom.isActive() || this._touchRotate.isActive() || this._tapDragZoom.isActive();\n }\n\n /**\n * Disables the \"pinch to rotate\" interaction, leaving the \"pinch to zoom\"\n * interaction enabled.\n *\n * @example\n * map.touchZoomRotate.disableRotation();\n */\n disableRotation() {\n this._rotationDisabled = true;\n this._touchRotate.disable();\n }\n\n /**\n * Enables the \"pinch to rotate\" interaction.\n *\n * @example\n * map.touchZoomRotate.enable();\n * map.touchZoomRotate.enableRotation();\n */\n enableRotation() {\n this._rotationDisabled = false;\n if (this._touchZoom.isEnabled()) this._touchRotate.enable();\n }\n}\n","// @flow\n\nimport {Event} from '../util/evented.js';\nimport * as DOM from '../util/dom.js';\nimport type Map from './map.js';\nimport HandlerInertia from './handler_inertia.js';\nimport {MapEventHandler, BlockableMapEventHandler} from './handler/map_event.js';\nimport BoxZoomHandler from './handler/box_zoom.js';\nimport TapZoomHandler from './handler/tap_zoom.js';\nimport {MousePanHandler, MouseRotateHandler, MousePitchHandler} from './handler/mouse.js';\nimport TouchPanHandler from './handler/touch_pan.js';\nimport {TouchZoomHandler, TouchRotateHandler, TouchPitchHandler} from './handler/touch_zoom_rotate.js';\nimport KeyboardHandler from './handler/keyboard.js';\nimport ScrollZoomHandler from './handler/scroll_zoom.js';\nimport DoubleClickZoomHandler from './handler/shim/dblclick_zoom.js';\nimport ClickZoomHandler from './handler/click_zoom.js';\nimport TapDragZoomHandler from './handler/tap_drag_zoom.js';\nimport DragPanHandler from './handler/shim/drag_pan.js';\nimport DragRotateHandler from './handler/shim/drag_rotate.js';\nimport TouchZoomRotateHandler from './handler/shim/touch_zoom_rotate.js';\nimport {bindAll, extend} from '../util/util.js';\nimport window from '../util/window.js';\nimport Point from '@mapbox/point-geometry';\nimport assert from 'assert';\nimport {vec3} from 'gl-matrix';\nimport MercatorCoordinate, {latFromMercatorY, mercatorZfromAltitude} from '../geo/mercator_coordinate.js';\n\nimport type {Vec3} from 'gl-matrix';\n\nexport type InputEvent = MouseEvent | TouchEvent | KeyboardEvent | WheelEvent;\n\nconst isMoving = p => p.zoom || p.drag || p.pitch || p.rotate;\n\nclass RenderFrameEvent extends Event {\n type: 'renderFrame';\n timeStamp: number;\n}\n\nclass TrackingEllipsoid {\n constants: Array<number>;\n radius: number;\n\n constructor() {\n // a, b, c in the equation x²/a² + y²/b² + z²/c² = 1\n this.constants = [1, 1, 0.01];\n this.radius = 0;\n }\n\n setup(center: Vec3, pointOnSurface: Vec3) {\n const centerToSurface = vec3.sub([], pointOnSurface, center);\n if (centerToSurface[2] < 0) {\n this.radius = vec3.length(vec3.div([], centerToSurface, this.constants));\n } else {\n // The point on surface is above the center. This can happen for example when the camera is\n // below the clicked point (like a mountain) Use slightly shorter radius for less aggressive movement\n this.radius = vec3.length([centerToSurface[0], centerToSurface[1], 0]);\n }\n }\n\n // Cast a ray from the center of the ellipsoid and the intersection point.\n projectRay(dir: Vec3): Vec3 {\n // Perform the intersection test against a unit sphere\n vec3.div(dir, dir, this.constants);\n vec3.normalize(dir, dir);\n vec3.mul(dir, dir, this.constants);\n\n const intersection = vec3.scale([], dir, this.radius);\n\n if (intersection[2] > 0) {\n // The intersection point is above horizon so special handling is required.\n // Otherwise direction of the movement would be inverted due to the ellipsoid shape\n const h = vec3.scale([], [0, 0, 1], vec3.dot(intersection, [0, 0, 1]));\n const r = vec3.scale([], vec3.normalize([], [intersection[0], intersection[1], 0]), this.radius);\n const p = vec3.add([], intersection, vec3.scale([], vec3.sub([], vec3.add([], r, h), intersection), 2));\n\n intersection[0] = p[0];\n intersection[1] = p[1];\n }\n\n return intersection;\n }\n}\n\n// Handlers interpret dom events and return camera changes that should be\n// applied to the map (`HandlerResult`s). The camera changes are all deltas.\n// The handler itself should have no knowledge of the map's current state.\n// This makes it easier to merge multiple results and keeps handlers simpler.\n// For example, if there is a mousedown and mousemove, the mousePan handler\n// would return a `panDelta` on the mousemove.\nexport interface Handler {\n enable(): void;\n disable(): void;\n isEnabled(): boolean;\n isActive(): boolean;\n\n // `reset` can be called by the manager at any time and must reset everything to it's original state\n reset(): void;\n\n // Handlers can optionally implement these methods.\n // They are called with dom events whenever those dom evens are received.\n +touchstart?: (e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) => ?HandlerResult;\n +touchmove?: (e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) => ?HandlerResult;\n +touchend?: (e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) => ?HandlerResult;\n +touchcancel?: (e: TouchEvent, points: Array<Point>, mapTouches: Array<Touch>) => ?HandlerResult;\n +mousedown?: (e: MouseEvent, point: Point) => ?HandlerResult;\n +mousemove?: (e: MouseEvent, point: Point) => ?HandlerResult;\n +mouseup?: (e: MouseEvent, point: Point) => ?HandlerResult;\n +dblclick?: (e: MouseEvent, point: Point) => ?HandlerResult;\n +wheel?: (e: WheelEvent, point: Point) => ?HandlerResult;\n +keydown?: (e: KeyboardEvent) => ?HandlerResult;\n +keyup?: (e: KeyboardEvent) => ?HandlerResult;\n\n // `renderFrame` is the only non-dom event. It is called during render\n // frames and can be used to smooth camera changes (see scroll handler).\n +renderFrame?: () => ?HandlerResult;\n}\n\n// All handler methods that are called with events can optionally return a `HandlerResult`.\nexport type HandlerResult = {\n panDelta?: Point,\n zoomDelta?: number,\n bearingDelta?: number,\n pitchDelta?: number,\n // the point to not move when changing the camera\n around?: Point | null,\n // same as above, except for pinch actions, which are given higher priority\n pinchAround?: Point | null,\n // the point to not move when changing the camera in mercator coordinates\n aroundCoord?: MercatorCoordinate | null,\n // A method that can fire a one-off easing by directly changing the map's camera.\n cameraAnimation?: (map: Map) => any;\n\n // The last three properties are needed by only one handler: scrollzoom.\n // The DOM event to be used as the `originalEvent` on any camera change events.\n originalEvent?: any,\n // Makes the manager trigger a frame, allowing the handler to return multiple results over time (see scrollzoom).\n needsRenderFrame?: boolean,\n // The camera changes won't get recorded for inertial zooming.\n noInertia?: boolean\n};\n\nfunction hasChange(result: HandlerResult) {\n return (result.panDelta && result.panDelta.mag()) || result.zoomDelta || result.bearingDelta || result.pitchDelta;\n}\n\nclass HandlerManager {\n _map: Map;\n _el: HTMLElement;\n _handlers: Array<{ handlerName: string, handler: Handler, allowed: any }>;\n _eventsInProgress: Object;\n _frameId: ?number;\n _inertia: HandlerInertia;\n _bearingSnap: number;\n _handlersById: { [string]: Handler };\n _updatingCamera: boolean;\n _changes: Array<[HandlerResult, Object, any]>;\n _previousActiveHandlers: { [string]: Handler };\n _listeners: Array<[HTMLElement, string, void | EventListenerOptionsOrUseCapture]>;\n _trackingEllipsoid: TrackingEllipsoid;\n _dragOrigin: ?Vec3;\n\n constructor(map: Map, options: { interactive: boolean, pitchWithRotate: boolean, clickTolerance: number, bearingSnap: number}) {\n this._map = map;\n this._el = this._map.getCanvasContainer();\n this._handlers = [];\n this._handlersById = {};\n this._changes = [];\n\n this._inertia = new HandlerInertia(map);\n this._bearingSnap = options.bearingSnap;\n this._previousActiveHandlers = {};\n this._trackingEllipsoid = new TrackingEllipsoid();\n this._dragOrigin = null;\n\n // Track whether map is currently moving, to compute start/move/end events\n this._eventsInProgress = {};\n\n this._addDefaultHandlers(options);\n\n bindAll(['handleEvent', 'handleWindowEvent'], this);\n\n const el = this._el;\n\n this._listeners = [\n // This needs to be `passive: true` so that a double tap fires two\n // pairs of touchstart/end events in iOS Safari 13. If this is set to\n // `passive: false` then the second pair of events is only fired if\n // preventDefault() is called on the first touchstart. Calling preventDefault()\n // undesirably prevents click events.\n [el, 'touchstart', {passive: true}],\n // This needs to be `passive: false` so that scrolls and pinches can be\n // prevented in browsers that don't support `touch-actions: none`, for example iOS Safari 12.\n [el, 'touchmove', {passive: false}],\n [el, 'touchend', undefined],\n [el, 'touchcancel', undefined],\n\n [el, 'mousedown', undefined],\n [el, 'mousemove', undefined],\n [el, 'mouseup', undefined],\n\n // Bind window-level event listeners for move and up/end events. In the absence of\n // the pointer capture API, which is not supported by all necessary platforms,\n // window-level event listeners give us the best shot at capturing events that\n // fall outside the map canvas element. Use `{capture: true}` for the move event\n // to prevent map move events from being fired during a drag.\n [window.document, 'mousemove', {capture: true}],\n [window.document, 'mouseup', undefined],\n\n [el, 'mouseover', undefined],\n [el, 'mouseout', undefined],\n [el, 'dblclick', undefined],\n [el, 'click', undefined],\n\n [el, 'keydown', {capture: false}],\n [el, 'keyup', undefined],\n\n [el, 'wheel', {passive: false}],\n [el, 'contextmenu', undefined],\n\n [window, 'blur', undefined]\n ];\n\n for (const [target, type, listenerOptions] of this._listeners) {\n const listener = target === window.document ? this.handleWindowEvent : this.handleEvent;\n target.addEventListener((type: any), (listener: any), listenerOptions);\n }\n }\n\n destroy() {\n for (const [target, type, listenerOptions] of this._listeners) {\n const listener = target === window.document ? this.handleWindowEvent : this.handleEvent;\n target.removeEventListener((type: any), (listener: any), listenerOptions);\n }\n }\n\n _addDefaultHandlers(options: { interactive: boolean, pitchWithRotate: boolean, clickTolerance: number }) {\n const map = this._map;\n const el = map.getCanvasContainer();\n this._add('mapEvent', new MapEventHandler(map, options));\n\n const boxZoom = map.boxZoom = new BoxZoomHandler(map, options);\n this._add('boxZoom', boxZoom);\n\n const tapZoom = new TapZoomHandler();\n const clickZoom = new ClickZoomHandler();\n map.doubleClickZoom = new DoubleClickZoomHandler(clickZoom, tapZoom);\n this._add('tapZoom', tapZoom);\n this._add('clickZoom', clickZoom);\n\n const tapDragZoom = new TapDragZoomHandler();\n this._add('tapDragZoom', tapDragZoom);\n\n const touchPitch = map.touchPitch = new TouchPitchHandler(map);\n this._add('touchPitch', touchPitch);\n\n const mouseRotate = new MouseRotateHandler(options);\n const mousePitch = new MousePitchHandler(options);\n map.dragRotate = new DragRotateHandler(options, mouseRotate, mousePitch);\n this._add('mouseRotate', mouseRotate, ['mousePitch']);\n this._add('mousePitch', mousePitch, ['mouseRotate']);\n\n const mousePan = new MousePanHandler(options);\n const touchPan = new TouchPanHandler(map, options);\n map.dragPan = new DragPanHandler(el, mousePan, touchPan);\n this._add('mousePan', mousePan);\n this._add('touchPan', touchPan, ['touchZoom', 'touchRotate']);\n\n const touchRotate = new TouchRotateHandler();\n const touchZoom = new TouchZoomHandler();\n map.touchZoomRotate = new TouchZoomRotateHandler(el, touchZoom, touchRotate, tapDragZoom);\n this._add('touchRotate', touchRotate, ['touchPan', 'touchZoom']);\n this._add('touchZoom', touchZoom, ['touchPan', 'touchRotate']);\n\n this._add('blockableMapEvent', new BlockableMapEventHandler(map));\n\n const scrollZoom = map.scrollZoom = new ScrollZoomHandler(map, this);\n this._add('scrollZoom', scrollZoom, ['mousePan']);\n\n const keyboard = map.keyboard = new KeyboardHandler();\n this._add('keyboard', keyboard);\n\n for (const name of ['boxZoom', 'doubleClickZoom', 'tapDragZoom', 'touchPitch', 'dragRotate', 'dragPan', 'touchZoomRotate', 'scrollZoom', 'keyboard']) {\n if (options.interactive && (options: any)[name]) {\n (map: any)[name].enable((options: any)[name]);\n }\n }\n }\n\n _add(handlerName: string, handler: Handler, allowed?: Array<string>) {\n this._handlers.push({handlerName, handler, allowed});\n this._handlersById[handlerName] = handler;\n }\n\n stop(allowEndAnimation: boolean) {\n // do nothing if this method was triggered by a gesture update\n if (this._updatingCamera) return;\n\n for (const {handler} of this._handlers) {\n handler.reset();\n }\n this._inertia.clear();\n this._fireEvents({}, {}, allowEndAnimation);\n this._changes = [];\n }\n\n isActive(): boolean {\n for (const {handler} of this._handlers) {\n if (handler.isActive()) return true;\n }\n return false;\n }\n\n isZooming(): boolean {\n return !!this._eventsInProgress.zoom || this._map.scrollZoom.isZooming();\n }\n\n isRotating(): boolean {\n return !!this._eventsInProgress.rotate;\n }\n\n isMoving(): boolean {\n return !!isMoving(this._eventsInProgress) || this.isZooming();\n }\n\n _blockedByActive(activeHandlers: { [string]: Handler }, allowed: Array<string>, myName: string): boolean {\n for (const name in activeHandlers) {\n if (name === myName) continue;\n if (!allowed || allowed.indexOf(name) < 0) {\n return true;\n }\n }\n return false;\n }\n\n handleWindowEvent(e: InputEvent) {\n this.handleEvent(e, `${e.type}Window`);\n }\n\n _getMapTouches(touches: TouchList): TouchList {\n const mapTouches = [];\n for (const t of touches) {\n const target = ((t.target: any): Node);\n if (this._el.contains(target)) {\n mapTouches.push(t);\n }\n }\n return ((mapTouches: any): TouchList);\n }\n\n handleEvent(e: InputEvent | RenderFrameEvent, eventName?: string) {\n\n this._updatingCamera = true;\n assert(e.timeStamp !== undefined);\n\n const isRenderFrame = e.type === 'renderFrame';\n const inputEvent = isRenderFrame ? undefined : ((e: any): InputEvent);\n\n /*\n * We don't call e.preventDefault() for any events by default.\n * Handlers are responsible for calling it where necessary.\n */\n\n const mergedHandlerResult: HandlerResult = {needsRenderFrame: false};\n const eventsInProgress = {};\n const activeHandlers = {};\n\n const mapTouches = e.touches ? this._getMapTouches(((e: any): TouchEvent).touches) : undefined;\n const points = mapTouches ? DOM.touchPos(this._el, mapTouches) :\n isRenderFrame ? undefined : // renderFrame event doesn't have any points\n DOM.mousePos(this._el, ((e: any): MouseEvent));\n\n for (const {handlerName, handler, allowed} of this._handlers) {\n if (!handler.isEnabled()) continue;\n\n let data: ?HandlerResult;\n if (this._blockedByActive(activeHandlers, allowed, handlerName)) {\n handler.reset();\n\n } else {\n if ((handler: any)[eventName || e.type]) {\n data = (handler: any)[eventName || e.type](e, points, mapTouches);\n this.mergeHandlerResult(mergedHandlerResult, eventsInProgress, data, handlerName, inputEvent);\n if (data && data.needsRenderFrame) {\n this._triggerRenderFrame();\n }\n }\n }\n\n if (data || handler.isActive()) {\n activeHandlers[handlerName] = handler;\n }\n }\n\n const deactivatedHandlers = {};\n for (const name in this._previousActiveHandlers) {\n if (!activeHandlers[name]) {\n deactivatedHandlers[name] = inputEvent;\n }\n }\n this._previousActiveHandlers = activeHandlers;\n\n if (Object.keys(deactivatedHandlers).length || hasChange(mergedHandlerResult)) {\n this._changes.push([mergedHandlerResult, eventsInProgress, deactivatedHandlers]);\n this._triggerRenderFrame();\n }\n\n if (Object.keys(activeHandlers).length || hasChange(mergedHandlerResult)) {\n this._map._stop(true);\n }\n\n this._updatingCamera = false;\n\n const {cameraAnimation} = mergedHandlerResult;\n if (cameraAnimation) {\n this._inertia.clear();\n this._fireEvents({}, {}, true);\n this._changes = [];\n cameraAnimation(this._map);\n }\n }\n\n mergeHandlerResult(mergedHandlerResult: HandlerResult, eventsInProgress: Object, handlerResult: HandlerResult, name: string, e?: InputEvent) {\n if (!handlerResult) return;\n\n extend(mergedHandlerResult, handlerResult);\n\n const eventData = {handlerName: name, originalEvent: handlerResult.originalEvent || e};\n\n // track which handler changed which camera property\n if (handlerResult.zoomDelta !== undefined) {\n eventsInProgress.zoom = eventData;\n }\n if (handlerResult.panDelta !== undefined) {\n eventsInProgress.drag = eventData;\n }\n if (handlerResult.pitchDelta !== undefined) {\n eventsInProgress.pitch = eventData;\n }\n if (handlerResult.bearingDelta !== undefined) {\n eventsInProgress.rotate = eventData;\n }\n }\n\n _applyChanges() {\n const combined = {};\n const combinedEventsInProgress = {};\n const combinedDeactivatedHandlers = {};\n\n for (const [change, eventsInProgress, deactivatedHandlers] of this._changes) {\n\n if (change.panDelta) combined.panDelta = (combined.panDelta || new Point(0, 0))._add(change.panDelta);\n if (change.zoomDelta) combined.zoomDelta = (combined.zoomDelta || 0) + change.zoomDelta;\n if (change.bearingDelta) combined.bearingDelta = (combined.bearingDelta || 0) + change.bearingDelta;\n if (change.pitchDelta) combined.pitchDelta = (combined.pitchDelta || 0) + change.pitchDelta;\n if (change.around !== undefined) combined.around = change.around;\n if (change.aroundCoord !== undefined) combined.aroundCoord = change.aroundCoord;\n if (change.pinchAround !== undefined) combined.pinchAround = change.pinchAround;\n if (change.noInertia) combined.noInertia = change.noInertia;\n\n extend(combinedEventsInProgress, eventsInProgress);\n extend(combinedDeactivatedHandlers, deactivatedHandlers);\n }\n\n this._updateMapTransform(combined, combinedEventsInProgress, combinedDeactivatedHandlers);\n this._changes = [];\n }\n\n _updateMapTransform(combinedResult: any, combinedEventsInProgress: Object, deactivatedHandlers: Object) {\n\n const map = this._map;\n const tr = map.transform;\n\n const eventStarted = (type) => {\n const newEvent = combinedEventsInProgress[type];\n return newEvent && !this._eventsInProgress[type];\n };\n\n const eventEnded = (type) => {\n const event = this._eventsInProgress[type];\n return event && !this._handlersById[event.handlerName].isActive();\n };\n\n const toVec3 = (p: MercatorCoordinate): Vec3 => [p.x, p.y, p.z];\n\n if (eventEnded(\"drag\") && !hasChange(combinedResult)) {\n const preZoom = tr.zoom;\n tr.cameraElevationReference = \"sea\";\n tr.recenterOnTerrain();\n tr.cameraElevationReference = \"ground\";\n // Map zoom might change during the pan operation due to terrain elevation.\n if (preZoom !== tr.zoom) this._map._update(true);\n }\n\n if (!hasChange(combinedResult)) {\n this._fireEvents(combinedEventsInProgress, deactivatedHandlers, true);\n return;\n }\n let {panDelta, zoomDelta, bearingDelta, pitchDelta, around, aroundCoord, pinchAround} = combinedResult;\n\n if (pinchAround !== undefined) {\n around = pinchAround;\n }\n\n if (eventStarted(\"drag\") && around) {\n this._dragOrigin = toVec3(tr.pointCoordinate3D(around));\n // Construct the tracking ellipsoid every time user changes the drag origin.\n // Direction of the ray will define size of the shape and hence defining the available range of movement\n this._trackingEllipsoid.setup(tr._camera.position, this._dragOrigin);\n }\n\n // All movement of the camera is done relative to the sea level\n tr.cameraElevationReference = \"sea\";\n\n // stop any ongoing camera animations (easeTo, flyTo)\n map._stop(true);\n\n around = around || map.transform.centerPoint;\n if (bearingDelta) tr.bearing += bearingDelta;\n if (pitchDelta) tr.pitch += pitchDelta;\n tr._updateCameraState();\n\n // Compute Mercator 3D camera offset based on screenspace panDelta\n const panVec = [0, 0, 0];\n if (panDelta) {\n assert(this._dragOrigin, '_dragOrigin should have been setup with a previous dragstart');\n\n const startPoint = tr.pointCoordinate(around);\n if (tr.projection.name === 'globe') {\n const startLat = latFromMercatorY(startPoint.y);\n const centerLat = tr.center.lat;\n\n // Compute pan vector directly in pixel coordinates for the globe.\n // Rotate the globe a bit faster when dragging near poles to compensate\n // different pixel-per-meter ratios (ie. pixel-to-physical-rotation is lower)\n const scale = Math.min(mercatorZfromAltitude(1, startLat) / mercatorZfromAltitude(1, centerLat), 2);\n\n panDelta = panDelta.rotate(-tr.angle);\n\n panVec[0] = -panDelta.x / tr.worldSize * scale;\n panVec[1] = -panDelta.y / tr.worldSize * scale;\n } else {\n const endPoint = tr.pointCoordinate(around.sub(panDelta));\n\n if (startPoint && endPoint) {\n panVec[0] = endPoint.x - startPoint.x;\n panVec[1] = endPoint.y - startPoint.y;\n }\n }\n }\n\n const originalZoom = tr.zoom;\n // Compute Mercator 3D camera offset based on screenspace requested ZoomDelta\n const zoomVec = [0, 0, 0];\n if (zoomDelta) {\n // Zoom value has to be computed relative to a secondary map plane that is created from the terrain position below the cursor.\n // This way the zoom interpolation can be kept linear and independent of the (possible) terrain elevation\n const pickedPosition: Vec3 = aroundCoord ? toVec3(aroundCoord) : toVec3(tr.pointCoordinate3D(around));\n\n const aroundRay = {dir: vec3.normalize([], vec3.sub([], pickedPosition, tr._camera.position))};\n if (aroundRay.dir[2] < 0) {\n // Special handling is required if the ray created from the cursor is heading up.\n // This scenario is possible if user is trying to zoom towards a feature like a hill or a mountain.\n // Convert zoomDelta to a movement vector as if the camera would be orbiting around the picked point\n const movement = tr.zoomDeltaToMovement(pickedPosition, zoomDelta);\n vec3.scale(zoomVec, aroundRay.dir, movement);\n }\n }\n\n // Mutate camera state via CameraAPI\n const translation = vec3.add(panVec, panVec, zoomVec);\n tr._translateCameraConstrained(translation);\n\n if (zoomDelta && Math.abs(tr.zoom - originalZoom) > 0.0001) {\n tr.recenterOnTerrain();\n }\n\n tr.cameraElevationReference = \"ground\";\n\n this._map._update();\n if (!combinedResult.noInertia) this._inertia.record(combinedResult);\n this._fireEvents(combinedEventsInProgress, deactivatedHandlers, true);\n\n }\n\n _fireEvents(newEventsInProgress: { [string]: Object }, deactivatedHandlers: Object, allowEndAnimation: boolean) {\n\n const wasMoving = isMoving(this._eventsInProgress);\n const nowMoving = isMoving(newEventsInProgress);\n\n const startEvents = {};\n\n for (const eventName in newEventsInProgress) {\n const {originalEvent} = newEventsInProgress[eventName];\n if (!this._eventsInProgress[eventName]) {\n startEvents[`${eventName}start`] = originalEvent;\n }\n this._eventsInProgress[eventName] = newEventsInProgress[eventName];\n }\n\n // fire start events only after this._eventsInProgress has been updated\n if (!wasMoving && nowMoving) {\n this._fireEvent('movestart', nowMoving.originalEvent);\n }\n\n for (const name in startEvents) {\n this._fireEvent(name, startEvents[name]);\n }\n\n if (nowMoving) {\n this._fireEvent('move', nowMoving.originalEvent);\n }\n\n for (const eventName in newEventsInProgress) {\n const {originalEvent} = newEventsInProgress[eventName];\n this._fireEvent(eventName, originalEvent);\n }\n\n const endEvents = {};\n\n let originalEndEvent;\n for (const eventName in this._eventsInProgress) {\n const {handlerName, originalEvent} = this._eventsInProgress[eventName];\n if (!this._handlersById[handlerName].isActive()) {\n delete this._eventsInProgress[eventName];\n originalEndEvent = deactivatedHandlers[handlerName] || originalEvent;\n endEvents[`${eventName}end`] = originalEndEvent;\n }\n }\n\n for (const name in endEvents) {\n this._fireEvent(name, endEvents[name]);\n }\n\n const stillMoving = isMoving(this._eventsInProgress);\n if (allowEndAnimation && (wasMoving || nowMoving) && !stillMoving) {\n this._updatingCamera = true;\n const inertialEase = this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions);\n\n const shouldSnapToNorth = bearing => bearing !== 0 && -this._bearingSnap < bearing && bearing < this._bearingSnap;\n\n if (inertialEase) {\n if (shouldSnapToNorth(inertialEase.bearing || this._map.getBearing())) {\n inertialEase.bearing = 0;\n }\n this._map.easeTo(inertialEase, {originalEvent: originalEndEvent});\n } else {\n this._map.fire(new Event('moveend', {originalEvent: originalEndEvent}));\n if (shouldSnapToNorth(this._map.getBearing())) {\n this._map.resetNorth();\n }\n }\n this._updatingCamera = false;\n }\n\n }\n\n _fireEvent(type: string, e: *) {\n this._map.fire(new Event(type, e ? {originalEvent: e} : {}));\n }\n\n _requestFrame(): number {\n this._map.triggerRepaint();\n return this._map._renderTaskQueue.add(timeStamp => {\n this._frameId = undefined;\n this.handleEvent(new RenderFrameEvent('renderFrame', {timeStamp}));\n this._applyChanges();\n });\n }\n\n _triggerRenderFrame() {\n if (this._frameId === undefined) {\n this._frameId = this._requestFrame();\n }\n }\n}\n\nexport default HandlerManager;\n","// @flow\n\nimport {\n bindAll,\n extend,\n warnOnce,\n clamp,\n wrap,\n ease as defaultEasing,\n pick,\n degToRad\n} from '../util/util.js';\nimport {number as interpolate} from '../style-spec/util/interpolate.js';\nimport browser from '../util/browser.js';\nimport LngLat from '../geo/lng_lat.js';\nimport LngLatBounds from '../geo/lng_lat_bounds.js';\nimport Point from '@mapbox/point-geometry';\nimport {Event, Evented} from '../util/evented.js';\nimport assert from 'assert';\nimport {Debug} from '../util/debug.js';\nimport MercatorCoordinate, {mercatorZfromAltitude, mercatorXfromLng, mercatorYfromLat} from '../geo/mercator_coordinate.js';\nimport {vec3} from 'gl-matrix';\nimport type {FreeCameraOptions} from './free_camera.js';\nimport type Transform from '../geo/transform.js';\nimport type {LngLatLike} from '../geo/lng_lat.js';\nimport type {LngLatBoundsLike} from '../geo/lng_lat_bounds.js';\nimport type {TaskID} from '../util/task_queue.js';\nimport type {Callback} from '../types/callback.js';\nimport type {PointLike} from '@mapbox/point-geometry';\nimport {Aabb, Frustum} from '../util/primitives.js';\nimport type {PaddingOptions} from '../geo/edge_insets.js';\nimport type {Vec3} from 'gl-matrix';\n\n/**\n * A helper type: converts all Object type values to non-maybe types.\n */\ntype Required<T> = $ObjMap<T, <V>(v: V) => $NonMaybeType<V>>;\n\n/**\n * Options common to {@link Map#jumpTo}, {@link Map#easeTo}, and {@link Map#flyTo}, controlling the desired location,\n * zoom, bearing, and pitch of the camera. All properties are optional, and when a property is omitted, the current\n * camera value for that property will remain unchanged.\n *\n * @typedef {Object} CameraOptions\n * @property {LngLatLike} center The location to place at the screen center.\n * @property {number} zoom The desired zoom level.\n * @property {number} bearing The desired bearing in degrees. The bearing is the compass direction that\n * is \"up\". For example, `bearing: 90` orients the map so that east is up.\n * @property {number} pitch The desired pitch in degrees. The pitch is the angle towards the horizon\n * measured in degrees with a range between 0 and 85 degrees. For example, pitch: 0 provides the appearance\n * of looking straight down at the map, while pitch: 60 tilts the user's perspective towards the horizon.\n * Increasing the pitch value is often used to display 3D objects.\n * @property {LngLatLike} around The location serving as the origin for a change in `zoom`, `pitch` and/or `bearing`.\n * This location will remain at the same screen position following the transform.\n * This is useful for drawing attention to a location that is not in the screen center.\n * `center` is ignored if `around` is included.\n * @property {PaddingOptions} padding Dimensions in pixels applied on each side of the viewport for shifting the vanishing point.\n * @example\n * // set the map's initial perspective with CameraOptions\n * const map = new mapboxgl.Map({\n * container: 'map',\n * style: 'mapbox://styles/mapbox/streets-v11',\n * center: [-73.5804, 45.53483],\n * pitch: 60,\n * bearing: -60,\n * zoom: 10\n * });\n * @see [Example: Set pitch and bearing](https://docs.mapbox.com/mapbox-gl-js/example/set-perspective/)\n * @see [Example: Jump to a series of locations](https://docs.mapbox.com/mapbox-gl-js/example/jump-to/)\n * @see [Example: Fly to a location](https://docs.mapbox.com/mapbox-gl-js/example/flyto/)\n * @see [Example: Display buildings in 3D](https://docs.mapbox.com/mapbox-gl-js/example/3d-buildings/)\n */\nexport type CameraOptions = {\n center?: LngLatLike,\n zoom?: number,\n bearing?: number,\n pitch?: number,\n around?: LngLatLike,\n padding?: PaddingOptions,\n offset?: PointLike\n};\n\nexport type FullCameraOptions = {\n maxZoom: number,\n offset: PointLike,\n padding: Required<PaddingOptions>\n} & CameraOptions\n\n/**\n * Options common to map movement methods that involve animation, such as {@link Map#panBy} and\n * {@link Map#easeTo}, controlling the duration and easing function of the animation. All properties\n * are optional.\n *\n * @typedef {Object} AnimationOptions\n * @property {number} duration The animation's duration, measured in milliseconds.\n * @property {Function} easing A function taking a time in the range 0..1 and returning a number where 0 is\n * the initial state and 1 is the final state.\n * @property {PointLike} offset The target center's offset relative to real map container center at the end of animation.\n * @property {boolean} animate If `false`, no animation will occur.\n * @property {boolean} essential If `true`, then the animation is considered essential and will not be affected by\n * [`prefers-reduced-motion`](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion).\n * @see [Example: Slowly fly to a location](https://docs.mapbox.com/mapbox-gl-js/example/flyto-options/)\n * @see [Example: Customize camera animations](https://docs.mapbox.com/mapbox-gl-js/example/camera-animation/)\n * @see [Example: Navigate the map with game-like controls](https://docs.mapbox.com/mapbox-gl-js/example/game-controls/)\n*/\nexport type AnimationOptions = {\n duration?: number,\n easing?: (_: number) => number,\n offset?: PointLike,\n animate?: boolean,\n essential?: boolean\n};\n\nexport type EasingOptions = CameraOptions & AnimationOptions;\n\nexport type ElevationBoxRaycast = {\n minLngLat: LngLat,\n maxLngLat: LngLat,\n minAltitude: number,\n maxAltitude: number\n};\n\nconst freeCameraNotSupportedWarning = 'map.setFreeCameraOptions(...) and map.getFreeCameraOptions() are not yet supported for non-mercator projections.';\n\n/**\n * Options for setting padding on calls to methods such as {@link Map#fitBounds}, {@link Map#fitScreenCoordinates}, and {@link Map#setPadding}. Adjust these options to set the amount of padding in pixels added to the edges of the canvas. Set a uniform padding on all edges or individual values for each edge. All properties of this object must be\n * non-negative integers.\n *\n * @typedef {Object} PaddingOptions\n * @property {number} top Padding in pixels from the top of the map canvas.\n * @property {number} bottom Padding in pixels from the bottom of the map canvas.\n * @property {number} left Padding in pixels from the left of the map canvas.\n * @property {number} right Padding in pixels from the right of the map canvas.\n *\n * @example\n * const bbox = [[-79, 43], [-73, 45]];\n * map.fitBounds(bbox, {\n * padding: {top: 10, bottom:25, left: 15, right: 5}\n * });\n *\n * @example\n * const bbox = [[-79, 43], [-73, 45]];\n * map.fitBounds(bbox, {\n * padding: 20\n * });\n * @see [Example: Fit to the bounds of a LineString](https://docs.mapbox.com/mapbox-gl-js/example/zoomto-linestring/)\n * @see [Example: Fit a map to a bounding box](https://docs.mapbox.com/mapbox-gl-js/example/fitbounds/)\n */\n\nclass Camera extends Evented {\n transform: Transform;\n _moving: boolean;\n _zooming: boolean;\n _rotating: boolean;\n _pitching: boolean;\n _padding: boolean;\n\n _bearingSnap: number;\n _easeStart: number;\n _easeOptions: {duration: number, easing: (_: number) => number};\n _easeId: string | void;\n\n _onEaseFrame: ?(_: number) => Transform | void;\n _onEaseEnd: ?(easeId?: string) => void;\n _easeFrameId: ?TaskID;\n\n +_requestRenderFrame: (() => void) => TaskID;\n +_cancelRenderFrame: (_: TaskID) => void;\n\n +_preloadTiles: (transform: Transform | Array<Transform>, callback?: Callback<any>) => any;\n\n constructor(transform: Transform, options: {bearingSnap: number}) {\n super();\n this._moving = false;\n this._zooming = false;\n this.transform = transform;\n this._bearingSnap = options.bearingSnap;\n\n bindAll(['_renderFrameCallback'], this);\n\n //addAssertions(this);\n }\n\n /** @section {Camera}\n * @method\n * @instance\n * @memberof Map */\n\n /**\n * Returns the map's geographical centerpoint.\n *\n * @memberof Map#\n * @returns {LngLat} The map's geographical centerpoint.\n * @example\n * // Return a LngLat object such as {lng: 0, lat: 0}.\n * const center = map.getCenter();\n * // Access longitude and latitude values directly.\n * const {lng, lat} = map.getCenter();\n * @see [Tutorial: Use Mapbox GL JS in a React app](https://docs.mapbox.com/help/tutorials/use-mapbox-gl-js-with-react/#store-the-new-coordinates)\n */\n getCenter(): LngLat { return new LngLat(this.transform.center.lng, this.transform.center.lat); }\n\n /**\n * Sets the map's geographical centerpoint. Equivalent to `jumpTo({center: center})`.\n *\n * @memberof Map#\n * @param {LngLatLike} center The centerpoint to set.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setCenter([-74, 38]);\n */\n setCenter(center: LngLatLike, eventData?: Object): this {\n return this.jumpTo({center}, eventData);\n }\n\n /**\n * Pans the map by the specified offset.\n *\n * @memberof Map#\n * @param {PointLike} offset The `x` and `y` coordinates by which to pan the map.\n * @param {AnimationOptions | null} options An options object describing the destination and animation of the transition. We do not recommend using `options.offset` since this value will override the value of the `offset` parameter.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} `this` Returns itself to allow for method chaining.\n * @example\n * map.panBy([-74, 38]);\n * @example\n * // panBy with an animation of 5 seconds.\n * map.panBy([-74, 38], {duration: 5000});\n * @see [Example: Navigate the map with game-like controls](https://www.mapbox.com/mapbox-gl-js/example/game-controls/)\n */\n panBy(offset: PointLike, options?: AnimationOptions, eventData?: Object): this {\n offset = Point.convert(offset).mult(-1);\n return this.panTo(this.transform.center, extend({offset}, options), eventData);\n }\n\n /**\n * Pans the map to the specified location with an animated transition.\n *\n * @memberof Map#\n * @param {LngLatLike} lnglat The location to pan the map to.\n * @param {AnimationOptions | null} options Options describing the destination and animation of the transition.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.panTo([-74, 38]);\n * @example\n * // Specify that the panTo animation should last 5000 milliseconds.\n * map.panTo([-74, 38], {duration: 5000});\n * @see [Example: Update a feature in realtime](https://docs.mapbox.com/mapbox-gl-js/example/live-update-feature/)\n */\n panTo(lnglat: LngLatLike, options?: AnimationOptions, eventData?: Object): this {\n return this.easeTo(extend({\n center: lnglat\n }, options), eventData);\n }\n\n /**\n * Returns the map's current zoom level.\n *\n * @memberof Map#\n * @returns {number} The map's current zoom level.\n * @example\n * map.getZoom();\n */\n getZoom(): number { return this.transform.zoom; }\n\n /**\n * Sets the map's zoom level. Equivalent to `jumpTo({zoom: zoom})`.\n *\n * @memberof Map#\n * @param {number} zoom The zoom level to set (0-20).\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Zoom to the zoom level 5 without an animated transition\n * map.setZoom(5);\n */\n setZoom(zoom: number, eventData?: Object): this {\n this.jumpTo({zoom}, eventData);\n return this;\n }\n\n /**\n * Zooms the map to the specified zoom level, with an animated transition.\n *\n * @memberof Map#\n * @param {number} zoom The zoom level to transition to.\n * @param {AnimationOptions | null} options Options object.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Zoom to the zoom level 5 without an animated transition\n * map.zoomTo(5);\n * // Zoom to the zoom level 8 with an animated transition\n * map.zoomTo(8, {\n * duration: 2000,\n * offset: [100, 50]\n * });\n */\n zoomTo(zoom: number, options: ? AnimationOptions, eventData?: Object): this {\n return this.easeTo(extend({\n zoom\n }, options), eventData);\n }\n\n /**\n * Increases the map's zoom level by 1.\n *\n * @memberof Map#\n * @param {AnimationOptions | null} options Options object.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // zoom the map in one level with a custom animation duration\n * map.zoomIn({duration: 1000});\n */\n zoomIn(options?: AnimationOptions, eventData?: Object): this {\n this.zoomTo(this.getZoom() + 1, options, eventData);\n return this;\n }\n\n /**\n * Decreases the map's zoom level by 1.\n *\n * @memberof Map#\n * @param {AnimationOptions | null} options Options object.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // zoom the map out one level with a custom animation offset\n * map.zoomOut({offset: [80, 60]});\n */\n zoomOut(options?: AnimationOptions, eventData?: Object): this {\n this.zoomTo(this.getZoom() - 1, options, eventData);\n return this;\n }\n\n /**\n * Returns the map's current bearing. The bearing is the compass direction that is \"up\"; for example, a bearing\n * of 90° orients the map so that east is up.\n *\n * @memberof Map#\n * @returns {number} The map's current bearing.\n * @example\n * const bearing = map.getBearing();\n * @see [Example: Navigate the map with game-like controls](https://www.mapbox.com/mapbox-gl-js/example/game-controls/)\n */\n getBearing(): number {\n return this.transform.bearing;\n }\n\n /**\n * Sets the map's bearing (rotation). The bearing is the compass direction that is \"up\"; for example, a bearing\n * of 90° orients the map so that east is up.\n *\n * Equivalent to `jumpTo({bearing: bearing})`.\n *\n * @memberof Map#\n * @param {number} bearing The desired bearing.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Rotate the map to 90 degrees.\n * map.setBearing(90);\n */\n setBearing(bearing: number, eventData?: Object): this {\n this.jumpTo({bearing}, eventData);\n return this;\n }\n\n /**\n * Returns the current padding applied around the map viewport.\n *\n * @memberof Map#\n * @returns {PaddingOptions} The current padding around the map viewport.\n * @example\n * const padding = map.getPadding();\n */\n getPadding(): PaddingOptions { return this.transform.padding; }\n\n /**\n * Sets the padding in pixels around the viewport.\n *\n * Equivalent to `jumpTo({padding: padding})`.\n *\n * @memberof Map#\n * @param {PaddingOptions} padding The desired padding. Format: {left: number, right: number, top: number, bottom: number}.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Sets a left padding of 300px, and a top padding of 50px\n * map.setPadding({left: 300, top: 50});\n */\n setPadding(padding: PaddingOptions, eventData?: Object): this {\n this.jumpTo({padding}, eventData);\n return this;\n }\n\n /**\n * Rotates the map to the specified bearing, with an animated transition. The bearing is the compass direction\n * that is \\\"up\\\"; for example, a bearing of 90° orients the map so that east is up.\n *\n * @memberof Map#\n * @param {number} bearing The desired bearing.\n * @param {EasingOptions | null} options Options describing the destination and animation of the transition.\n * Accepts {@link CameraOptions} and {@link AnimationOptions}.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.rotateTo(30);\n * @example\n * // rotateTo with an animation of 2 seconds.\n * map.rotateTo(30, {duration: 2000});\n */\n rotateTo(bearing: number, options?: EasingOptions, eventData?: Object): this {\n return this.easeTo(extend({\n bearing\n }, options), eventData);\n }\n\n /**\n * Rotates the map so that north is up (0° bearing), with an animated transition.\n *\n * @memberof Map#\n * @param {EasingOptions | null} options Options describing the destination and animation of the transition.\n * Accepts {@link CameraOptions} and {@link AnimationOptions}.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // resetNorth with an animation of 2 seconds.\n * map.resetNorth({duration: 2000});\n */\n resetNorth(options?: EasingOptions, eventData?: Object): this {\n this.rotateTo(0, extend({duration: 1000}, options), eventData);\n return this;\n }\n\n /**\n * Rotates and pitches the map so that north is up (0° bearing) and pitch is 0°, with an animated transition.\n *\n * @memberof Map#\n * @param {EasingOptions | null} options Options describing the destination and animation of the transition.\n * Accepts {@link CameraOptions} and {@link AnimationOptions}.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // resetNorthPitch with an animation of 2 seconds.\n * map.resetNorthPitch({duration: 2000});\n */\n resetNorthPitch(options?: EasingOptions, eventData?: Object): this {\n this.easeTo(extend({\n bearing: 0,\n pitch: 0,\n duration: 1000\n }, options), eventData);\n return this;\n }\n\n /**\n * Snaps the map so that north is up (0° bearing), if the current bearing is\n * close enough to it (within the `bearingSnap` threshold).\n *\n * @memberof Map#\n * @param {EasingOptions | null} options Options describing the destination and animation of the transition.\n * Accepts {@link CameraOptions} and {@link AnimationOptions}.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // snapToNorth with an animation of 2 seconds.\n * map.snapToNorth({duration: 2000});\n */\n snapToNorth(options?: EasingOptions, eventData?: Object): this {\n if (Math.abs(this.getBearing()) < this._bearingSnap) {\n return this.resetNorth(options, eventData);\n }\n return this;\n }\n\n /**\n * Returns the map's current [pitch](https://docs.mapbox.com/help/glossary/camera/) (tilt).\n *\n * @memberof Map#\n * @returns {number} The map's current pitch, measured in degrees away from the plane of the screen.\n * @example\n * const pitch = map.getPitch();\n */\n getPitch(): number { return this.transform.pitch; }\n\n /**\n * Sets the map's [pitch](https://docs.mapbox.com/help/glossary/camera/) (tilt). Equivalent to `jumpTo({pitch: pitch})`.\n *\n * @memberof Map#\n * @param {number} pitch The pitch to set, measured in degrees away from the plane of the screen (0-60).\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:pitchstart\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // setPitch with an animation of 2 seconds.\n * map.setPitch(80, {duration: 2000});\n */\n setPitch(pitch: number, eventData?: Object): this {\n this.jumpTo({pitch}, eventData);\n return this;\n }\n\n /**\n * Returns a {@link CameraOptions} object for the highest zoom level\n * up to and including `Map#getMaxZoom()` that fits the bounds\n * in the viewport at the specified bearing.\n * This function isn't supported with globe projection.\n *\n * @memberof Map#\n * @param {LngLatBoundsLike} bounds Calculate the center for these bounds in the viewport and use\n * the highest zoom level up to and including `Map#getMaxZoom()` that fits\n * in the viewport. LngLatBounds represent a box that is always axis-aligned with bearing 0.\n * @param {CameraOptions | null} options Options object.\n * @param {number | PaddingOptions} [options.padding] The amount of padding in pixels to add to the given bounds.\n * @param {number} [options.bearing=0] Desired map bearing at end of animation, in degrees.\n * @param {PointLike} [options.offset=[0, 0]] The center of the given bounds relative to the map's center, measured in pixels.\n * @param {number} [options.maxZoom] The maximum zoom level to allow when the camera would transition to the specified bounds.\n * @returns {CameraOptions | void} If map is able to fit to provided bounds, returns `CameraOptions` with\n * `center`, `zoom`, and `bearing`. If map is unable to fit, method will warn and return undefined.\n * @example\n * const bbox = [[-79, 43], [-73, 45]];\n * const newCameraTransform = map.cameraForBounds(bbox, {\n * padding: {top: 10, bottom:25, left: 15, right: 5}\n * });\n */\n cameraForBounds(bounds: LngLatBoundsLike, options?: CameraOptions): ?EasingOptions {\n if (this.transform.projection.name === 'globe') {\n warnOnce('Globe projection does not support cameraForBounds API, this API may behave unexpectedly.\"');\n }\n\n bounds = LngLatBounds.convert(bounds);\n const bearing = (options && options.bearing) || 0;\n return this._cameraForBoxAndBearing(bounds.getNorthWest(), bounds.getSouthEast(), bearing, options);\n }\n\n _extendCameraOptions(options?: CameraOptions): FullCameraOptions {\n const defaultPadding = {\n top: 0,\n bottom: 0,\n right: 0,\n left: 0\n };\n options = extend({\n padding: defaultPadding,\n offset: [0, 0],\n maxZoom: this.transform.maxZoom\n }, options);\n\n if (typeof options.padding === 'number') {\n const p = options.padding;\n options.padding = {\n top: p,\n bottom: p,\n right: p,\n left: p\n };\n }\n options.padding = extend(defaultPadding, options.padding);\n return options;\n }\n\n /**\n * Calculate the center of these two points in the viewport and use\n * the highest zoom level up to and including `Map#getMaxZoom()` that fits\n * the points in the viewport at the specified bearing.\n * @memberof Map#\n * @param {LngLatLike} p0 First point\n * @param {LngLatLike} p1 Second point\n * @param {number} bearing Desired map bearing at end of animation, in degrees\n * @param {CameraOptions | null} options\n * @param {number | PaddingOptions} [options.padding] The amount of padding in pixels to add to the given bounds.\n * @param {PointLike} [options.offset=[0, 0]] The center of the given bounds relative to the map's center, measured in pixels.\n * @param {number} [options.maxZoom] The maximum zoom level to allow when the camera would transition to the specified bounds.\n * @returns {CameraOptions | void} If map is able to fit to provided bounds, returns `CameraOptions` with\n * `center`, `zoom`, and `bearing`. If map is unable to fit, method will warn and return undefined.\n * @private\n * @example\n * var p0 = [-79, 43];\n * var p1 = [-73, 45];\n * var bearing = 90;\n * var newCameraTransform = map._cameraForBoxAndBearing(p0, p1, bearing, {\n * padding: {top: 10, bottom:25, left: 15, right: 5}\n * });\n */\n _cameraForBoxAndBearing(p0: LngLatLike, p1: LngLatLike, bearing: number, options?: CameraOptions): ?EasingOptions {\n const eOptions = this._extendCameraOptions(options);\n const tr = this.transform;\n const edgePadding = tr.padding;\n\n // We want to calculate the corners of the box defined by p0 and p1 in a coordinate system\n // rotated to match the destination bearing. All four corners of the box must be taken\n // into account because of camera rotation.\n const p0world = tr.project(LngLat.convert(p0));\n const p1world = tr.project(LngLat.convert(p1));\n const p2world = new Point(p0world.x, p1world.y);\n const p3world = new Point(p1world.x, p0world.y);\n\n const angleRadians = -degToRad(bearing);\n const p0rotated = p0world.rotate(angleRadians);\n const p1rotated = p1world.rotate(angleRadians);\n const p2rotated = p2world.rotate(angleRadians);\n const p3rotated = p3world.rotate(angleRadians);\n\n const upperRight = new Point(\n Math.max(p0rotated.x, p1rotated.x, p2rotated.x, p3rotated.x),\n Math.max(p0rotated.y, p1rotated.y, p2rotated.y, p3rotated.y)\n );\n const lowerLeft = new Point(\n Math.min(p0rotated.x, p1rotated.x, p2rotated.x, p3rotated.x),\n Math.min(p0rotated.y, p1rotated.y, p2rotated.y, p3rotated.y)\n );\n\n // Calculate zoom: consider the original bbox and padding.\n const size = upperRight.sub(lowerLeft);\n const scaleX = (tr.width - ((edgePadding.left || 0) + (edgePadding.right || 0) + eOptions.padding.left + eOptions.padding.right)) / size.x;\n const scaleY = (tr.height - ((edgePadding.top || 0) + (edgePadding.bottom || 0) + eOptions.padding.top + eOptions.padding.bottom)) / size.y;\n\n if (scaleY < 0 || scaleX < 0) {\n warnOnce(\n 'Map cannot fit within canvas with the given bounds, padding, and/or offset.'\n );\n return;\n }\n const zoom = Math.min(tr.scaleZoom(tr.scale * Math.min(scaleX, scaleY)), eOptions.maxZoom);\n\n // Calculate center: apply the zoom, the configured offset, as well as offset that exists as a result of padding.\n const offset = (typeof eOptions.offset.x === 'number' && typeof eOptions.offset.y === 'number') ?\n new Point(eOptions.offset.x, eOptions.offset.y) :\n Point.convert(eOptions.offset);\n\n const paddingOffsetX = (eOptions.padding.left - eOptions.padding.right) / 2;\n const paddingOffsetY = (eOptions.padding.top - eOptions.padding.bottom) / 2;\n const paddingOffset = new Point(paddingOffsetX, paddingOffsetY);\n const rotatedPaddingOffset = paddingOffset.rotate(bearing * Math.PI / 180);\n const offsetAtInitialZoom = offset.add(rotatedPaddingOffset);\n const offsetAtFinalZoom = offsetAtInitialZoom.mult(tr.scale / tr.zoomScale(zoom));\n\n const center = tr.unproject(p0world.add(p1world).div(2).sub(offsetAtFinalZoom));\n\n return {\n center,\n zoom,\n bearing\n };\n }\n\n /**\n * Finds the best camera fit for two given viewport point coordinates.\n * The method will iteratively ray march towards the target and stops\n * when any of the given input points collides with the view frustum.\n * @memberof Map#\n * @param {LngLatLike} p0 First point\n * @param {LngLatLike} p1 Second point\n * @param {number} minAltitude Optional min altitude in meters\n * @param {number} maxAltitude Optional max altitude in meters\n * @param {CameraOptions | null} options\n * @param {number | PaddingOptions} [options.padding] The amount of padding in pixels to add to the given bounds.\n * @returns {CameraOptions | void} If map is able to fit to provided bounds, returns `CameraOptions` with\n * `center`, `zoom`, `bearing` and `pitch`. If map is unable to fit, method will warn and return undefined.\n * @private\n */\n _cameraForBox(p0: LngLatLike, p1: LngLatLike, minAltitude?: number, maxAltitude?: number, options?: CameraOptions): ?EasingOptions {\n const eOptions = this._extendCameraOptions(options);\n\n minAltitude = minAltitude || 0;\n maxAltitude = maxAltitude || 0;\n\n p0 = LngLat.convert(p0);\n p1 = LngLat.convert(p1);\n\n const tr = this.transform.clone();\n tr.padding = eOptions.padding;\n\n const camera = this.getFreeCameraOptions();\n const focus = new LngLat((p0.lng + p1.lng) * 0.5, (p0.lat + p1.lat) * 0.5);\n const focusAltitude = (minAltitude + maxAltitude) * 0.5;\n\n if (tr._camera.position[2] < mercatorZfromAltitude(focusAltitude, focus.lat)) {\n warnOnce('Map cannot fit within canvas with the given bounds, padding, and/or offset.');\n return;\n }\n\n camera.lookAtPoint(focus);\n\n tr.setFreeCameraOptions(camera);\n\n const coord0 = MercatorCoordinate.fromLngLat(p0);\n const coord1 = MercatorCoordinate.fromLngLat(p1);\n\n const toVec3 = (p: MercatorCoordinate): Vec3 => [p.x, p.y, p.z];\n\n const centerIntersectionPoint = tr.pointRayIntersection(tr.centerPoint, focusAltitude);\n const centerIntersectionCoord = toVec3(tr.rayIntersectionCoordinate(centerIntersectionPoint));\n const centerMercatorRay = tr.screenPointToMercatorRay(tr.centerPoint);\n const zInMeters = tr.projection.name !== 'globe';\n\n const maxMarchingSteps = 10;\n\n let steps = 0;\n let halfDistanceToGround;\n do {\n const z = Math.floor(tr.zoom);\n const z2 = 1 << z;\n\n const minX = Math.min(z2 * coord0.x, z2 * coord1.x);\n const minY = Math.min(z2 * coord0.y, z2 * coord1.y);\n const maxX = Math.max(z2 * coord0.x, z2 * coord1.x);\n const maxY = Math.max(z2 * coord0.y, z2 * coord1.y);\n\n const aabb = new Aabb([minX, minY, minAltitude], [maxX, maxY, maxAltitude]);\n\n const frustum = Frustum.fromInvProjectionMatrix(tr.invProjMatrix, tr.worldSize, z, zInMeters);\n\n // Stop marching when frustum intersection\n // reports any aabb point not fully inside\n if (aabb.intersects(frustum) !== 2) {\n // Went too far, step one iteration back\n if (halfDistanceToGround) {\n tr._camera.position = vec3.scaleAndAdd([], tr._camera.position, centerMercatorRay.dir, -halfDistanceToGround);\n tr._updateStateFromCamera();\n }\n break;\n }\n\n const cameraPositionToGround = vec3.sub([], tr._camera.position, centerIntersectionCoord);\n halfDistanceToGround = 0.5 * vec3.length(cameraPositionToGround);\n\n // March the camera position forward by half the distance to the ground\n tr._camera.position = vec3.scaleAndAdd([], tr._camera.position, centerMercatorRay.dir, halfDistanceToGround);\n try {\n tr._updateStateFromCamera();\n } catch (e) {\n warnOnce('Map cannot fit within canvas with the given bounds, padding, and/or offset.');\n return;\n }\n } while (++steps < maxMarchingSteps);\n\n return {\n center: tr.center,\n zoom: tr.zoom,\n bearing: tr.bearing,\n pitch: tr.pitch\n };\n }\n\n /**\n * Pans and zooms the map to contain its visible area within the specified geographical bounds.\n * This function will also reset the map's bearing to 0 if bearing is nonzero.\n * If a padding is set on the map, the bounds are fit to the inset.\n * This function isn't supported with globe projection.\n *\n * @memberof Map#\n * @param {LngLatBoundsLike} bounds Center these bounds in the viewport and use the highest\n * zoom level up to and including `Map#getMaxZoom()` that fits them in the viewport.\n * @param {Object} [options] Options supports all properties from {@link AnimationOptions} and {@link CameraOptions} in addition to the fields below.\n * @param {number | PaddingOptions} [options.padding] The amount of padding in pixels to add to the given bounds.\n * @param {boolean} [options.linear=false] If `true`, the map transitions using\n * {@link Map#easeTo}. If `false`, the map transitions using {@link Map#flyTo}. See\n * those functions and {@link AnimationOptions} for information about options available.\n * @param {Function} [options.easing] An easing function for the animated transition. See {@link AnimationOptions}.\n * @param {PointLike} [options.offset=[0, 0]] The center of the given bounds relative to the map's center, measured in pixels.\n * @param {number} [options.maxZoom] The maximum zoom level to allow when the map view transitions to the specified bounds.\n * @param {Object} [eventData] Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * const bbox = [[-79, 43], [-73, 45]];\n * map.fitBounds(bbox, {\n * padding: {top: 10, bottom:25, left: 15, right: 5}\n * });\n * @see [Example: Fit a map to a bounding box](https://www.mapbox.com/mapbox-gl-js/example/fitbounds/)\n */\n fitBounds(bounds: LngLatBoundsLike, options?: EasingOptions, eventData?: Object): this {\n if (this.transform.projection.name === 'globe') {\n warnOnce('Globe projection does not support fitBounds API, this API may behave unexpectedly.');\n }\n\n return this._fitInternal(\n this.cameraForBounds(bounds, options),\n options,\n eventData);\n }\n\n _raycastElevationBox(point0: Point, point1: Point): ?ElevationBoxRaycast {\n const elevation = this.transform.elevation;\n\n if (!elevation) return;\n\n const point2 = new Point(point0.x, point1.y);\n const point3 = new Point(point1.x, point0.y);\n\n const r0 = elevation.pointCoordinate(point0);\n if (!r0) return;\n const r1 = elevation.pointCoordinate(point1);\n if (!r1) return;\n const r2 = elevation.pointCoordinate(point2);\n if (!r2) return;\n const r3 = elevation.pointCoordinate(point3);\n if (!r3) return;\n\n const m0 = new MercatorCoordinate(r0[0], r0[1]).toLngLat();\n const m1 = new MercatorCoordinate(r1[0], r1[1]).toLngLat();\n const m2 = new MercatorCoordinate(r2[0], r2[1]).toLngLat();\n const m3 = new MercatorCoordinate(r3[0], r3[1]).toLngLat();\n\n const minLng = Math.min(m0.lng, Math.min(m1.lng, Math.min(m2.lng, m3.lng)));\n const minLat = Math.min(m0.lat, Math.min(m1.lat, Math.min(m2.lat, m3.lat)));\n\n const maxLng = Math.max(m0.lng, Math.max(m1.lng, Math.max(m2.lng, m3.lng)));\n const maxLat = Math.max(m0.lat, Math.max(m1.lat, Math.max(m2.lat, m3.lat)));\n\n const minAltitude = Math.min(r0[3], Math.min(r1[3], Math.min(r2[3], r3[3])));\n const maxAltitude = Math.max(r0[3], Math.max(r1[3], Math.max(r2[3], r3[3])));\n\n const minLngLat = new LngLat(minLng, minLat);\n const maxLngLat = new LngLat(maxLng, maxLat);\n\n return {minLngLat, maxLngLat, minAltitude, maxAltitude};\n }\n\n /**\n * Pans, rotates and zooms the map to to fit the box made by points p0 and p1\n * once the map is rotated to the specified bearing. To zoom without rotating,\n * pass in the current map bearing.\n * This function isn't supported with globe projection.\n *\n * @memberof Map#\n * @param {PointLike} p0 First point on screen, in pixel coordinates.\n * @param {PointLike} p1 Second point on screen, in pixel coordinates.\n * @param {number} bearing Desired map bearing at end of animation, in degrees. This value is ignored if the map has non-zero pitch.\n * @param {CameraOptions | null} options Options object.\n * @param {number | PaddingOptions} [options.padding] The amount of padding in pixels to add to the given bounds.\n * @param {boolean} [options.linear=false] If `true`, the map transitions using\n * {@link Map#easeTo}. If `false`, the map transitions using {@link Map#flyTo}. See\n * those functions and {@link AnimationOptions} for information about options available.\n * @param {Function} [options.easing] An easing function for the animated transition. See {@link AnimationOptions}.\n * @param {PointLike} [options.offset=[0, 0]] The center of the given bounds relative to the map's center, measured in pixels.\n * @param {number} [options.maxZoom] The maximum zoom level to allow when the map view transitions to the specified bounds.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:moveend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * const p0 = [220, 400];\n * const p1 = [500, 900];\n * map.fitScreenCoordinates(p0, p1, map.getBearing(), {\n * padding: {top: 10, bottom:25, left: 15, right: 5}\n * });\n * @see Used by {@link BoxZoomHandler}\n */\n fitScreenCoordinates(p0: PointLike, p1: PointLike, bearing: number, options?: EasingOptions, eventData?: Object): this {\n if (this.transform.projection.name === 'globe') {\n warnOnce('Globe projection does not support fitScreenCoordinates API, this API may behave unexpectedly.');\n }\n\n let lngLat0, lngLat1, minAltitude, maxAltitude;\n const point0 = Point.convert(p0);\n const point1 = Point.convert(p1);\n\n const raycast = this._raycastElevationBox(point0, point1);\n\n if (!raycast) {\n if (this.transform.anyCornerOffEdge(point0, point1)) {\n return this;\n }\n\n lngLat0 = this.transform.pointLocation(point0);\n lngLat1 = this.transform.pointLocation(point1);\n } else {\n lngLat0 = raycast.minLngLat;\n lngLat1 = raycast.maxLngLat;\n minAltitude = raycast.minAltitude;\n maxAltitude = raycast.maxAltitude;\n }\n\n if (this.transform.pitch === 0) {\n return this._fitInternal(\n this._cameraForBoxAndBearing(\n this.transform.pointLocation(Point.convert(p0)),\n this.transform.pointLocation(Point.convert(p1)),\n bearing,\n options),\n options,\n eventData);\n }\n\n return this._fitInternal(\n this._cameraForBox(\n lngLat0,\n lngLat1,\n minAltitude,\n maxAltitude,\n options),\n options, eventData);\n }\n\n _fitInternal(calculatedOptions?: ?EasingOptions, options?: EasingOptions, eventData?: Object): this {\n // cameraForBounds warns + returns undefined if unable to fit:\n if (!calculatedOptions) return this;\n\n options = extend(calculatedOptions, options);\n // Explicitly remove the padding field because, calculatedOptions already accounts for padding by setting zoom and center accordingly.\n delete options.padding;\n\n return options.linear ?\n this.easeTo(options, eventData) :\n this.flyTo(options, eventData);\n }\n\n /**\n * Changes any combination of center, zoom, bearing, and pitch, without\n * an animated transition. The map will retain its current values for any\n * details not specified in `options`.\n *\n * @memberof Map#\n * @param {CameraOptions} options Options object.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:pitchstart\n * @fires Map.event:rotate\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:pitch\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @fires Map.event:pitchend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // jump to coordinates at current zoom\n * map.jumpTo({center: [0, 0]});\n * // jump with zoom, pitch, and bearing options\n * map.jumpTo({\n * center: [0, 0],\n * zoom: 8,\n * pitch: 45,\n * bearing: 90\n * });\n * @see [Example: Jump to a series of locations](https://docs.mapbox.com/mapbox-gl-js/example/jump-to/)\n * @see [Example: Update a feature in realtime](https://docs.mapbox.com/mapbox-gl-js/example/live-update-feature/)\n */\n jumpTo(options: CameraOptions & {preloadOnly?: boolean}, eventData?: Object): this {\n this.stop();\n\n const tr = options.preloadOnly ? this.transform.clone() : this.transform;\n let zoomChanged = false,\n bearingChanged = false,\n pitchChanged = false;\n\n if ('zoom' in options && tr.zoom !== +options.zoom) {\n zoomChanged = true;\n tr.zoom = +options.zoom;\n }\n\n if (options.center !== undefined) {\n tr.center = LngLat.convert(options.center);\n }\n\n if ('bearing' in options && tr.bearing !== +options.bearing) {\n bearingChanged = true;\n tr.bearing = +options.bearing;\n }\n\n if ('pitch' in options && tr.pitch !== +options.pitch) {\n pitchChanged = true;\n tr.pitch = +options.pitch;\n }\n\n if (options.padding != null && !tr.isPaddingEqual(options.padding)) {\n tr.padding = options.padding;\n }\n\n if (options.preloadOnly) {\n this._preloadTiles(tr);\n return this;\n }\n\n this.fire(new Event('movestart', eventData))\n .fire(new Event('move', eventData));\n\n if (zoomChanged) {\n this.fire(new Event('zoomstart', eventData))\n .fire(new Event('zoom', eventData))\n .fire(new Event('zoomend', eventData));\n }\n\n if (bearingChanged) {\n this.fire(new Event('rotatestart', eventData))\n .fire(new Event('rotate', eventData))\n .fire(new Event('rotateend', eventData));\n }\n\n if (pitchChanged) {\n this.fire(new Event('pitchstart', eventData))\n .fire(new Event('pitch', eventData))\n .fire(new Event('pitchend', eventData));\n }\n\n return this.fire(new Event('moveend', eventData));\n }\n\n /**\n * Returns position and orientation of the camera entity.\n *\n * This method is not supported for projections other than mercator.\n *\n * @memberof Map#\n * @returns {FreeCameraOptions} The camera state.\n * @example\n * const camera = map.getFreeCameraOptions();\n *\n * const position = [138.72649, 35.33974];\n * const altitude = 3000;\n *\n * camera.position = mapboxgl.MercatorCoordinate.fromLngLat(position, altitude);\n * camera.lookAtPoint([138.73036, 35.36197]);\n *\n * map.setFreeCameraOptions(camera);\n */\n getFreeCameraOptions(): FreeCameraOptions {\n if (!this.transform.projection.supportsFreeCamera) {\n warnOnce(freeCameraNotSupportedWarning);\n }\n return this.transform.getFreeCameraOptions();\n }\n\n /**\n * `FreeCameraOptions` provides more direct access to the underlying camera entity.\n * For backwards compatibility the state set using this API must be representable with\n * `CameraOptions` as well. Parameters are clamped into a valid range or discarded as invalid\n * if the conversion to the pitch and bearing presentation is ambiguous. For example orientation\n * can be invalid if it leads to the camera being upside down, the quaternion has zero length,\n * or the pitch is over the maximum pitch limit.\n *\n * This method is not supported for projections other than mercator.\n *\n * @memberof Map#\n * @param {FreeCameraOptions} options `FreeCameraOptions` object.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:pitchstart\n * @fires Map.event:rotate\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:pitch\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @fires Map.event:pitchend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * const camera = map.getFreeCameraOptions();\n *\n * const position = [138.72649, 35.33974];\n * const altitude = 3000;\n *\n * camera.position = mapboxgl.MercatorCoordinate.fromLngLat(position, altitude);\n * camera.lookAtPoint([138.73036, 35.36197]);\n *\n * map.setFreeCameraOptions(camera);\n */\n setFreeCameraOptions(options: FreeCameraOptions, eventData?: Object): this {\n const tr = this.transform;\n\n if (!tr.projection.supportsFreeCamera) {\n warnOnce(freeCameraNotSupportedWarning);\n return this;\n }\n\n this.stop();\n\n const prevZoom = tr.zoom;\n const prevPitch = tr.pitch;\n const prevBearing = tr.bearing;\n\n tr.setFreeCameraOptions(options);\n\n const zoomChanged = prevZoom !== tr.zoom;\n const pitchChanged = prevPitch !== tr.pitch;\n const bearingChanged = prevBearing !== tr.bearing;\n\n this.fire(new Event('movestart', eventData))\n .fire(new Event('move', eventData));\n\n if (zoomChanged) {\n this.fire(new Event('zoomstart', eventData))\n .fire(new Event('zoom', eventData))\n .fire(new Event('zoomend', eventData));\n }\n\n if (bearingChanged) {\n this.fire(new Event('rotatestart', eventData))\n .fire(new Event('rotate', eventData))\n .fire(new Event('rotateend', eventData));\n }\n\n if (pitchChanged) {\n this.fire(new Event('pitchstart', eventData))\n .fire(new Event('pitch', eventData))\n .fire(new Event('pitchend', eventData));\n }\n\n this.fire(new Event('moveend', eventData));\n return this;\n }\n\n /**\n * Changes any combination of `center`, `zoom`, `bearing`, `pitch`, and `padding` with an animated transition\n * between old and new values. The map will retain its current values for any\n * details not specified in `options`.\n *\n * Note: The transition will happen instantly if the user has enabled\n * the `reduced motion` accessibility feature enabled in their operating system,\n * unless `options` includes `essential: true`.\n *\n * @memberof Map#\n * @param {EasingOptions} options Options describing the destination and animation of the transition.\n * Accepts {@link CameraOptions} and {@link AnimationOptions}.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:pitchstart\n * @fires Map.event:rotate\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:pitch\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @fires Map.event:pitchend\n * @returns {Map} `this` Returns itself to allow for method chaining.\n * @example\n * // Ease with default options to null island for 5 seconds.\n * map.easeTo({center: [0, 0], zoom: 9, duration: 5000});\n * @example\n * // Using easeTo options.\n * map.easeTo({\n * center: [0, 0],\n * zoom: 9,\n * speed: 0.2,\n * curve: 1,\n * duration: 5000,\n * easing(t) {\n * return t;\n * }\n * });\n * @see [Example: Navigate the map with game-like controls](https://www.mapbox.com/mapbox-gl-js/example/game-controls/)\n */\n easeTo(options: EasingOptions & {easeId?: string, preloadOnly?: boolean}, eventData?: Object): this {\n this._stop(false, options.easeId);\n\n options = extend({\n offset: [0, 0],\n duration: 500,\n easing: defaultEasing\n }, options);\n\n if (options.animate === false || (!options.essential && browser.prefersReducedMotion)) options.duration = 0;\n\n const tr = this.transform,\n startZoom = this.getZoom(),\n startBearing = this.getBearing(),\n startPitch = this.getPitch(),\n startPadding = this.getPadding(),\n\n zoom = 'zoom' in options ? +options.zoom : startZoom,\n bearing = 'bearing' in options ? this._normalizeBearing(options.bearing, startBearing) : startBearing,\n pitch = 'pitch' in options ? +options.pitch : startPitch,\n padding = 'padding' in options ? options.padding : tr.padding;\n\n const offsetAsPoint = Point.convert(options.offset);\n\n let pointAtOffset;\n let from;\n let delta;\n\n if (tr.projection.name === 'globe') {\n // Pixel coordinates will be applied directly to translate the globe\n const centerCoord = MercatorCoordinate.fromLngLat(tr.center);\n\n const rotatedOffset = offsetAsPoint.rotate(-tr.angle);\n centerCoord.x += rotatedOffset.x / tr.worldSize;\n centerCoord.y += rotatedOffset.y / tr.worldSize;\n\n const locationAtOffset = centerCoord.toLngLat();\n const center = LngLat.convert(options.center || locationAtOffset);\n this._normalizeCenter(center);\n\n pointAtOffset = tr.centerPoint.add(rotatedOffset);\n from = new Point(centerCoord.x, centerCoord.y).mult(tr.worldSize);\n delta = new Point(mercatorXfromLng(center.lng), mercatorYfromLat(center.lat)).mult(tr.worldSize).sub(from);\n } else {\n pointAtOffset = tr.centerPoint.add(offsetAsPoint);\n const locationAtOffset = tr.pointLocation(pointAtOffset);\n const center = LngLat.convert(options.center || locationAtOffset);\n this._normalizeCenter(center);\n\n from = tr.project(locationAtOffset);\n delta = tr.project(center).sub(from);\n }\n const finalScale = tr.zoomScale(zoom - startZoom);\n\n let around, aroundPoint;\n\n if (options.around) {\n around = LngLat.convert(options.around);\n aroundPoint = tr.locationPoint(around);\n }\n\n const zoomChanged = this._zooming || (zoom !== startZoom);\n const bearingChanged = this._rotating || (startBearing !== bearing);\n const pitchChanged = this._pitching || (pitch !== startPitch);\n const paddingChanged = !tr.isPaddingEqual(padding);\n\n const frame = (tr) => (k) => {\n if (zoomChanged) {\n tr.zoom = interpolate(startZoom, zoom, k);\n }\n if (bearingChanged) {\n tr.bearing = interpolate(startBearing, bearing, k);\n }\n if (pitchChanged) {\n tr.pitch = interpolate(startPitch, pitch, k);\n }\n if (paddingChanged) {\n tr.interpolatePadding(startPadding, padding, k);\n // When padding is being applied, Transform#centerPoint is changing continuously,\n // thus we need to recalculate offsetPoint every fra,e\n pointAtOffset = tr.centerPoint.add(offsetAsPoint);\n }\n\n if (around) {\n tr.setLocationAtPoint(around, aroundPoint);\n } else {\n const scale = tr.zoomScale(tr.zoom - startZoom);\n const base = zoom > startZoom ?\n Math.min(2, finalScale) :\n Math.max(0.5, finalScale);\n const speedup = Math.pow(base, 1 - k);\n const newCenter = tr.unproject(from.add(delta.mult(k * speedup)).mult(scale));\n tr.setLocationAtPoint(tr.renderWorldCopies ? newCenter.wrap() : newCenter, pointAtOffset);\n }\n\n if (!options.preloadOnly) {\n this._fireMoveEvents(eventData);\n }\n\n return tr;\n };\n\n if (options.preloadOnly) {\n const predictedTransforms = this._emulate(frame, options.duration, tr);\n this._preloadTiles(predictedTransforms);\n return this;\n }\n\n const currently = {\n moving: this._moving,\n zooming: this._zooming,\n rotating: this._rotating,\n pitching: this._pitching\n };\n\n this._zooming = zoomChanged;\n this._rotating = bearingChanged;\n this._pitching = pitchChanged;\n this._padding = paddingChanged;\n\n this._easeId = options.easeId;\n this._prepareEase(eventData, options.noMoveStart, currently);\n\n this._ease(frame(tr), (interruptingEaseId?: string) => {\n tr.recenterOnTerrain();\n this._afterEase(eventData, interruptingEaseId);\n }, options);\n\n return this;\n }\n\n _prepareEase(eventData?: Object, noMoveStart: boolean, currently: Object = {}) {\n this._moving = true;\n this.transform.cameraElevationReference = \"sea\";\n\n if (!noMoveStart && !currently.moving) {\n this.fire(new Event('movestart', eventData));\n }\n if (this._zooming && !currently.zooming) {\n this.fire(new Event('zoomstart', eventData));\n }\n if (this._rotating && !currently.rotating) {\n this.fire(new Event('rotatestart', eventData));\n }\n if (this._pitching && !currently.pitching) {\n this.fire(new Event('pitchstart', eventData));\n }\n }\n\n _fireMoveEvents(eventData?: Object) {\n this.fire(new Event('move', eventData));\n if (this._zooming) {\n this.fire(new Event('zoom', eventData));\n }\n if (this._rotating) {\n this.fire(new Event('rotate', eventData));\n }\n if (this._pitching) {\n this.fire(new Event('pitch', eventData));\n }\n }\n\n _afterEase(eventData?: Object, easeId?: string) {\n // if this easing is being stopped to start another easing with\n // the same id then don't fire any events to avoid extra start/stop events\n if (this._easeId && easeId && this._easeId === easeId) {\n return;\n }\n this._easeId = undefined;\n this.transform.cameraElevationReference = \"ground\";\n\n const wasZooming = this._zooming;\n const wasRotating = this._rotating;\n const wasPitching = this._pitching;\n this._moving = false;\n this._zooming = false;\n this._rotating = false;\n this._pitching = false;\n this._padding = false;\n\n if (wasZooming) {\n this.fire(new Event('zoomend', eventData));\n }\n if (wasRotating) {\n this.fire(new Event('rotateend', eventData));\n }\n if (wasPitching) {\n this.fire(new Event('pitchend', eventData));\n }\n this.fire(new Event('moveend', eventData));\n }\n\n /**\n * Changes any combination of center, zoom, bearing, and pitch, animating the transition along a curve that\n * evokes flight. The animation seamlessly incorporates zooming and panning to help\n * the user maintain their bearings even after traversing a great distance.\n *\n * If a user has the `reduced motion` accessibility feature enabled in their\n * operating system, the animation will be skipped and this will behave\n * equivalently to `jumpTo`, unless 'options' includes `essential: true`.\n *\n * @memberof Map#\n * @param {Object} options Options describing the destination and animation of the transition.\n * Accepts {@link CameraOptions}, {@link AnimationOptions},\n * and the following additional options.\n * @param {number} [options.curve=1.42] The zooming \"curve\" that will occur along the\n * flight path. A high value maximizes zooming for an exaggerated animation, while a low\n * value minimizes zooming for an effect closer to {@link Map#easeTo}. 1.42 is the average\n * value selected by participants in the user study discussed in\n * [van Wijk (2003)](https://www.win.tue.nl/~vanwijk/zoompan.pdf). A value of\n * `Math.pow(6, 0.25)` would be equivalent to the root mean squared average velocity. A\n * value of 1 would produce a circular motion. If `options.minZoom` is specified, this option will be ignored.\n * @param {number} [options.minZoom] The zero-based zoom level at the peak of the flight path. If\n * this option is specified, `options.curve` will be ignored.\n * @param {number} [options.speed=1.2] The average speed of the animation defined in relation to\n * `options.curve`. A speed of 1.2 means that the map appears to move along the flight path\n * by 1.2 times `options.curve` screenfuls every second. A _screenful_ is the map's visible span.\n * It does not correspond to a fixed physical distance, but varies by zoom level.\n * @param {number} [options.screenSpeed] The average speed of the animation measured in screenfuls\n * per second, assuming a linear timing curve. If `options.speed` is specified, this option is ignored.\n * @param {number} [options.maxDuration] The animation's maximum duration, measured in milliseconds.\n * If duration exceeds maximum duration, it resets to 0.\n * @param {Object | null} eventData Additional properties to be added to event objects of events triggered by this method.\n * @fires Map.event:movestart\n * @fires Map.event:zoomstart\n * @fires Map.event:pitchstart\n * @fires Map.event:move\n * @fires Map.event:zoom\n * @fires Map.event:rotate\n * @fires Map.event:pitch\n * @fires Map.event:moveend\n * @fires Map.event:zoomend\n * @fires Map.event:pitchend\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // fly with default options to null island\n * map.flyTo({center: [0, 0], zoom: 9});\n * // using flyTo options\n * map.flyTo({\n * center: [0, 0],\n * zoom: 9,\n * speed: 0.2,\n * curve: 1,\n * easing(t) {\n * return t;\n * }\n * });\n * @see [Example: Fly to a location](https://www.mapbox.com/mapbox-gl-js/example/flyto/)\n * @see [Example: Slowly fly to a location](https://www.mapbox.com/mapbox-gl-js/example/flyto-options/)\n * @see [Example: Fly to a location based on scroll position](https://www.mapbox.com/mapbox-gl-js/example/scroll-fly-to/)\n */\n flyTo(options: EasingOptions & {preloadOnly?: boolean}, eventData?: Object): this {\n // Fall through to jumpTo if user has set prefers-reduced-motion\n if (!options.essential && browser.prefersReducedMotion) {\n const coercedOptions = pick(options, ['center', 'zoom', 'bearing', 'pitch', 'around']);\n return this.jumpTo(coercedOptions, eventData);\n }\n\n // This method implements an “optimal path” animation, as detailed in:\n //\n // Van Wijk, Jarke J.; Nuij, Wim A. A. “Smooth and efficient zooming and panning.” INFOVIS\n // ’03. pp. 15–22. <https://www.win.tue.nl/~vanwijk/zoompan.pdf#page=5>.\n //\n // Where applicable, local variable documentation begins with the associated variable or\n // function in van Wijk (2003).\n\n this.stop();\n\n options = extend({\n offset: [0, 0],\n speed: 1.2,\n curve: 1.42,\n easing: defaultEasing\n }, options);\n\n const tr = this.transform,\n startZoom = this.getZoom(),\n startBearing = this.getBearing(),\n startPitch = this.getPitch(),\n startPadding = this.getPadding();\n\n const zoom = 'zoom' in options ? clamp(+options.zoom, tr.minZoom, tr.maxZoom) : startZoom;\n const bearing = 'bearing' in options ? this._normalizeBearing(options.bearing, startBearing) : startBearing;\n const pitch = 'pitch' in options ? +options.pitch : startPitch;\n const padding = 'padding' in options ? options.padding : tr.padding;\n\n const scale = tr.zoomScale(zoom - startZoom);\n const offsetAsPoint = Point.convert(options.offset);\n let pointAtOffset = tr.centerPoint.add(offsetAsPoint);\n const locationAtOffset = tr.pointLocation(pointAtOffset);\n const center = LngLat.convert(options.center || locationAtOffset);\n this._normalizeCenter(center);\n\n const from = tr.project(locationAtOffset);\n const delta = tr.project(center).sub(from);\n\n let rho = options.curve;\n\n // w₀: Initial visible span, measured in pixels at the initial scale.\n const w0 = Math.max(tr.width, tr.height),\n // w₁: Final visible span, measured in pixels with respect to the initial scale.\n w1 = w0 / scale,\n // Length of the flight path as projected onto the ground plane, measured in pixels from\n // the world image origin at the initial scale.\n u1 = delta.mag();\n\n if ('minZoom' in options) {\n const minZoom = clamp(Math.min(options.minZoom, startZoom, zoom), tr.minZoom, tr.maxZoom);\n // w<sub>m</sub>: Maximum visible span, measured in pixels with respect to the initial\n // scale.\n const wMax = w0 / tr.zoomScale(minZoom - startZoom);\n rho = Math.sqrt(wMax / u1 * 2);\n }\n\n // ρ²\n const rho2 = rho * rho;\n\n /**\n * rᵢ: Returns the zoom-out factor at one end of the animation.\n *\n * @param i 0 for the ascent or 1 for the descent.\n * @private\n */\n function r(i) {\n const b = (w1 * w1 - w0 * w0 + (i ? -1 : 1) * rho2 * rho2 * u1 * u1) / (2 * (i ? w1 : w0) * rho2 * u1);\n return Math.log(Math.sqrt(b * b + 1) - b);\n }\n\n function sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; }\n function cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; }\n function tanh(n) { return sinh(n) / cosh(n); }\n\n // r₀: Zoom-out factor during ascent.\n const r0 = r(0);\n\n // w(s): Returns the visible span on the ground, measured in pixels with respect to the\n // initial scale. Assumes an angular field of view of 2 arctan ½ ≈ 53°.\n let w: (_: number) => number = function (s) {\n return (cosh(r0) / cosh(r0 + rho * s));\n };\n\n // u(s): Returns the distance along the flight path as projected onto the ground plane,\n // measured in pixels from the world image origin at the initial scale.\n let u: (_: number) => number = function (s) {\n return w0 * ((cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2) / u1;\n };\n\n // S: Total length of the flight path, measured in ρ-screenfuls.\n let S = (r(1) - r0) / rho;\n\n // When u₀ = u₁, the optimal path doesn’t require both ascent and descent.\n if (Math.abs(u1) < 0.000001 || !isFinite(S)) {\n // Perform a more or less instantaneous transition if the path is too short.\n if (Math.abs(w0 - w1) < 0.000001) return this.easeTo(options, eventData);\n\n const k = w1 < w0 ? -1 : 1;\n S = Math.abs(Math.log(w1 / w0)) / rho;\n\n u = function() { return 0; };\n w = function(s) { return Math.exp(k * rho * s); };\n }\n\n if ('duration' in options) {\n options.duration = +options.duration;\n } else {\n const V = 'screenSpeed' in options ? +options.screenSpeed / rho : +options.speed;\n options.duration = 1000 * S / V;\n }\n\n if (options.maxDuration && options.duration > options.maxDuration) {\n options.duration = 0;\n }\n\n const zoomChanged = true;\n const bearingChanged = (startBearing !== bearing);\n const pitchChanged = (pitch !== startPitch);\n const paddingChanged = !tr.isPaddingEqual(padding);\n\n const frame = (tr) => (k) => {\n // s: The distance traveled along the flight path, measured in ρ-screenfuls.\n const s = k * S;\n const scale = 1 / w(s);\n tr.zoom = k === 1 ? zoom : startZoom + tr.scaleZoom(scale);\n\n if (bearingChanged) {\n tr.bearing = interpolate(startBearing, bearing, k);\n }\n if (pitchChanged) {\n tr.pitch = interpolate(startPitch, pitch, k);\n }\n if (paddingChanged) {\n tr.interpolatePadding(startPadding, padding, k);\n // When padding is being applied, Transform#centerPoint is changing continuously,\n // thus we need to recalculate offsetPoint every frame\n pointAtOffset = tr.centerPoint.add(offsetAsPoint);\n }\n\n const newCenter = k === 1 ? center : tr.unproject(from.add(delta.mult(u(s))).mult(scale));\n tr.setLocationAtPoint(tr.renderWorldCopies ? newCenter.wrap() : newCenter, pointAtOffset);\n tr._updateCameraOnTerrain();\n\n if (!options.preloadOnly) {\n this._fireMoveEvents(eventData);\n }\n\n return tr;\n };\n\n if (options.preloadOnly) {\n const predictedTransforms = this._emulate(frame, options.duration, tr);\n this._preloadTiles(predictedTransforms);\n return this;\n }\n\n this._zooming = zoomChanged;\n this._rotating = bearingChanged;\n this._pitching = pitchChanged;\n this._padding = paddingChanged;\n\n this._prepareEase(eventData, false);\n this._ease(frame(tr), () => this._afterEase(eventData), options);\n\n return this;\n }\n\n isEasing(): boolean {\n return !!this._easeFrameId;\n }\n\n /**\n * Stops any animated transition underway.\n *\n * @memberof Map#\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.stop();\n */\n stop(): this {\n return this._stop();\n }\n\n _stop(allowGestures?: boolean, easeId?: string): this {\n if (this._easeFrameId) {\n this._cancelRenderFrame(this._easeFrameId);\n this._easeFrameId = undefined;\n this._onEaseFrame = undefined;\n }\n\n if (this._onEaseEnd) {\n // The _onEaseEnd function might emit events which trigger new\n // animation, which sets a new _onEaseEnd. Ensure we don't delete\n // it unintentionally.\n const onEaseEnd = this._onEaseEnd;\n this._onEaseEnd = undefined;\n onEaseEnd.call(this, easeId);\n }\n if (!allowGestures) {\n const handlers = (this: any).handlers;\n if (handlers) handlers.stop(false);\n }\n return this;\n }\n\n _ease(frame: (_: number) => Transform | void,\n finish: () => void,\n options: {animate: boolean, duration: number, easing: (_: number) => number}) {\n if (options.animate === false || options.duration === 0) {\n frame(1);\n finish();\n } else {\n this._easeStart = browser.now();\n this._easeOptions = options;\n this._onEaseFrame = frame;\n this._onEaseEnd = finish;\n this._easeFrameId = this._requestRenderFrame(this._renderFrameCallback);\n }\n }\n\n // Callback for map._requestRenderFrame\n _renderFrameCallback() {\n const t = Math.min((browser.now() - this._easeStart) / this._easeOptions.duration, 1);\n const frame = this._onEaseFrame;\n if (frame) frame(this._easeOptions.easing(t));\n if (t < 1) {\n this._easeFrameId = this._requestRenderFrame(this._renderFrameCallback);\n } else {\n this.stop();\n }\n }\n\n // convert bearing so that it's numerically close to the current one so that it interpolates properly\n _normalizeBearing(bearing: number, currentBearing: number): number {\n bearing = wrap(bearing, -180, 180);\n const diff = Math.abs(bearing - currentBearing);\n if (Math.abs(bearing - 360 - currentBearing) < diff) bearing -= 360;\n if (Math.abs(bearing + 360 - currentBearing) < diff) bearing += 360;\n return bearing;\n }\n\n // If a path crossing the antimeridian would be shorter, extend the final coordinate so that\n // interpolating between the two endpoints will cross it.\n _normalizeCenter(center: LngLat) {\n const tr = this.transform;\n if (!tr.renderWorldCopies || tr.maxBounds) return;\n\n const delta = center.lng - tr.center.lng;\n center.lng +=\n delta > 180 ? -360 :\n delta < -180 ? 360 : 0;\n }\n\n // emulates frame function for some transform\n _emulate(frame: Function, duration: number, initialTransform: Transform): Array<Transform> {\n const frameRate = 15;\n const numFrames = Math.ceil(duration * frameRate / 1000);\n\n const transforms = [];\n const emulateFrame = frame(initialTransform.clone());\n for (let i = 0; i <= numFrames; i++) {\n const transform = emulateFrame(i / numFrames);\n transforms.push(transform.clone());\n }\n\n return transforms;\n }\n}\n\n// In debug builds, check that camera change events are fired in the correct order.\n// - ___start events needs to be fired before ___ and ___end events\n// - another ___start event can't be fired before a ___end event has been fired for the previous one\nfunction addAssertions(camera: Camera) { //eslint-disable-line\n Debug.run(() => {\n const inProgress = {};\n\n ['drag', 'zoom', 'rotate', 'pitch', 'move'].forEach(name => {\n inProgress[name] = false;\n\n camera.on(`${name}start`, () => {\n assert(!inProgress[name], `\"${name}start\" fired twice without a \"${name}end\"`);\n inProgress[name] = true;\n assert(inProgress.move);\n });\n\n camera.on(name, () => {\n assert(inProgress[name]);\n assert(inProgress.move);\n });\n\n camera.on(`${name}end`, () => {\n assert(inProgress.move);\n assert(inProgress[name]);\n inProgress[name] = false;\n });\n });\n\n // Canary used to test whether this function is stripped in prod build\n canary = 'canary debug run'; //eslint-disable-line\n });\n}\n\nlet canary; //eslint-disable-line\n\nexport default Camera;\n","// @flow\n\nimport * as DOM from '../../util/dom.js';\nimport {bindAll} from '../../util/util.js';\nimport config from '../../util/config.js';\n\nimport type Map, {ControlPosition} from '../map.js';\n\ntype Options = {\n compact?: boolean,\n customAttribution?: string | Array<string>\n};\n\n/**\n * An `AttributionControl` control presents the map's [attribution information](https://docs.mapbox.com/help/how-mapbox-works/attribution/).\n * Add this control to a map using {@link Map#addControl}.\n *\n * @implements {IControl}\n * @param {Object} [options]\n * @param {boolean} [options.compact] If `true`, force a compact attribution that shows the full attribution on mouse hover. If `false`, force the full attribution control. The default is a responsive attribution that collapses when the map is less than 640 pixels wide. **Attribution should not be collapsed if it can comfortably fit on the map. `compact` should only be used to modify default attribution when map size makes it impossible to fit [default attribution](https://docs.mapbox.com/help/how-mapbox-works/attribution/) and when the automatic compact resizing for default settings are not sufficient**.\n * @param {string | Array<string>} [options.customAttribution] String or strings to show in addition to any other attributions. You can also set a custom attribution when initializing your map with {@link https://docs.mapbox.com/mapbox-gl-js/api/map/#map-parameters the customAttribution option}.\n * @example\n * const map = new mapboxgl.Map({attributionControl: false})\n * .addControl(new mapboxgl.AttributionControl({\n * customAttribution: 'Map design by me'\n * }));\n */\nclass AttributionControl {\n options: Options;\n _map: Map;\n _container: HTMLElement;\n _innerContainer: HTMLElement;\n _compactButton: HTMLButtonElement;\n _editLink: ?HTMLAnchorElement;\n _attribHTML: string;\n styleId: string;\n styleOwner: string;\n\n constructor(options: Options = {}) {\n this.options = options;\n\n bindAll([\n '_toggleAttribution',\n '_updateEditLink',\n '_updateData',\n '_updateCompact'\n ], this);\n }\n\n getDefaultPosition(): ControlPosition {\n return 'bottom-right';\n }\n\n onAdd(map: Map): HTMLElement {\n const compact = this.options && this.options.compact;\n\n this._map = map;\n this._container = DOM.create('div', 'mapboxgl-ctrl mapboxgl-ctrl-attrib');\n this._compactButton = DOM.create('button', 'mapboxgl-ctrl-attrib-button', this._container);\n DOM.create('span', `mapboxgl-ctrl-icon`, this._compactButton).setAttribute('aria-hidden', 'true');\n this._compactButton.type = 'button';\n this._compactButton.addEventListener('click', this._toggleAttribution);\n this._setElementTitle(this._compactButton, 'ToggleAttribution');\n this._innerContainer = DOM.create('div', 'mapboxgl-ctrl-attrib-inner', this._container);\n this._innerContainer.setAttribute('role', 'list');\n\n if (compact) {\n this._container.classList.add('mapboxgl-compact');\n }\n\n this._updateAttributions();\n this._updateEditLink();\n\n this._map.on('styledata', this._updateData);\n this._map.on('sourcedata', this._updateData);\n this._map.on('moveend', this._updateEditLink);\n\n if (compact === undefined) {\n this._map.on('resize', this._updateCompact);\n this._updateCompact();\n }\n\n return this._container;\n }\n\n onRemove() {\n this._container.remove();\n\n this._map.off('styledata', this._updateData);\n this._map.off('sourcedata', this._updateData);\n this._map.off('moveend', this._updateEditLink);\n this._map.off('resize', this._updateCompact);\n\n this._map = (undefined: any);\n this._attribHTML = (undefined: any);\n }\n\n _setElementTitle(element: HTMLElement, title: string) {\n const str = this._map._getUIString(`AttributionControl.${title}`);\n element.setAttribute('aria-label', str);\n element.removeAttribute('title');\n if (element.firstElementChild) element.firstElementChild.setAttribute('title', str);\n }\n\n _toggleAttribution() {\n if (this._container.classList.contains('mapboxgl-compact-show')) {\n this._container.classList.remove('mapboxgl-compact-show');\n this._compactButton.setAttribute('aria-expanded', 'false');\n } else {\n this._container.classList.add('mapboxgl-compact-show');\n this._compactButton.setAttribute('aria-expanded', 'true');\n }\n }\n\n _updateEditLink() {\n let editLink = this._editLink;\n if (!editLink) {\n editLink = this._editLink = (this._container.querySelector('.mapbox-improve-map'): any);\n }\n\n const params = [\n {key: 'owner', value: this.styleOwner},\n {key: 'id', value: this.styleId},\n {key: 'access_token', value: this._map._requestManager._customAccessToken || config.ACCESS_TOKEN}\n ];\n\n if (editLink) {\n const paramString = params.reduce((acc, next, i) => {\n if (next.value) {\n acc += `${next.key}=${next.value}${i < params.length - 1 ? '&' : ''}`;\n }\n return acc;\n }, `?`);\n editLink.href = `${config.FEEDBACK_URL}/${paramString}${this._map._hash ? this._map._hash.getHashString(true) : ''}`;\n editLink.rel = 'noopener nofollow';\n this._setElementTitle(editLink, 'MapFeedback');\n }\n }\n\n _updateData(e: any) {\n if (e && (e.sourceDataType === 'metadata' || e.sourceDataType === 'visibility' || e.dataType === 'style')) {\n this._updateAttributions();\n this._updateEditLink();\n }\n }\n\n _updateAttributions() {\n if (!this._map.style) return;\n let attributions: Array<string> = [];\n\n if (this._map.style.stylesheet) {\n const stylesheet: any = this._map.style.stylesheet;\n this.styleOwner = stylesheet.owner;\n this.styleId = stylesheet.id;\n }\n\n const sourceCaches = this._map.style._sourceCaches;\n for (const id in sourceCaches) {\n const sourceCache = sourceCaches[id];\n if (sourceCache.used) {\n const source = sourceCache.getSource();\n if (source.attribution && attributions.indexOf(source.attribution) < 0) {\n attributions.push(source.attribution);\n }\n }\n }\n\n // remove any entries that are substrings of another entry.\n // first sort by length so that substrings come first\n attributions.sort((a, b) => a.length - b.length);\n attributions = attributions.filter((attrib, i) => {\n for (let j = i + 1; j < attributions.length; j++) {\n if (attributions[j].indexOf(attrib) >= 0) { return false; }\n }\n return true;\n });\n\n if (this.options.customAttribution) {\n if (Array.isArray(this.options.customAttribution)) {\n attributions = [...this.options.customAttribution, ...attributions];\n } else {\n attributions.unshift(this.options.customAttribution);\n }\n }\n\n // check if attribution string is different to minimize DOM changes\n const attribHTML = attributions.join(' | ');\n if (attribHTML === this._attribHTML) return;\n\n this._attribHTML = attribHTML;\n\n if (attributions.length) {\n this._innerContainer.innerHTML = attribHTML;\n this._container.classList.remove('mapboxgl-attrib-empty');\n } else {\n this._container.classList.add('mapboxgl-attrib-empty');\n }\n // remove old DOM node from _editLink\n this._editLink = null;\n }\n\n _updateCompact() {\n if (this._map.getCanvasContainer().offsetWidth <= 640) {\n this._container.classList.add('mapboxgl-compact');\n } else {\n this._container.classList.remove('mapboxgl-compact', 'mapboxgl-compact-show');\n }\n }\n\n}\n\nexport default AttributionControl;\n","// @flow\n\nimport * as DOM from '../../util/dom.js';\nimport {bindAll} from '../../util/util.js';\n\nimport type Map, {ControlPosition} from '../map.js';\n\n/**\n * A `LogoControl` is a control that adds the Mapbox watermark\n * to the map as required by the [terms of service](https://www.mapbox.com/tos/) for Mapbox\n * vector tiles and core styles.\n * Add this control to a map using {@link Map#addControl}.\n *\n * @implements {IControl}\n * @private\n**/\n\nclass LogoControl {\n _map: Map;\n _container: HTMLElement;\n\n constructor() {\n bindAll(['_updateLogo', '_updateCompact'], this);\n }\n\n onAdd(map: Map): HTMLElement {\n this._map = map;\n this._container = DOM.create('div', 'mapboxgl-ctrl');\n const anchor = DOM.create('a', 'mapboxgl-ctrl-logo');\n anchor.target = \"_blank\";\n anchor.rel = \"noopener nofollow\";\n anchor.href = \"https://www.mapbox.com/\";\n anchor.setAttribute(\"aria-label\", this._map._getUIString('LogoControl.Title'));\n anchor.setAttribute(\"rel\", \"noopener nofollow\");\n this._container.appendChild(anchor);\n this._container.style.display = 'none';\n\n this._map.on('sourcedata', this._updateLogo);\n this._updateLogo();\n\n this._map.on('resize', this._updateCompact);\n this._updateCompact();\n\n return this._container;\n }\n\n onRemove() {\n this._container.remove();\n this._map.off('sourcedata', this._updateLogo);\n this._map.off('resize', this._updateCompact);\n }\n\n getDefaultPosition(): ControlPosition {\n return 'bottom-left';\n }\n\n _updateLogo(e: any) {\n if (!e || e.sourceDataType === 'metadata') {\n this._container.style.display = this._logoRequired() ? 'block' : 'none';\n }\n }\n\n _logoRequired(): boolean {\n if (!this._map.style) return true;\n const sourceCaches = this._map.style._sourceCaches;\n if (Object.entries(sourceCaches).length === 0) return true;\n for (const id in sourceCaches) {\n const source = sourceCaches[id].getSource();\n if (source.hasOwnProperty('mapbox_logo') && !source.mapbox_logo) {\n return false;\n }\n }\n\n return true;\n }\n\n _updateCompact() {\n const containerChildren = this._container.children;\n if (containerChildren.length) {\n const anchor = containerChildren[0];\n if (this._map.getCanvasContainer().offsetWidth < 250) {\n anchor.classList.add('mapboxgl-compact');\n } else {\n anchor.classList.remove('mapboxgl-compact');\n }\n }\n }\n\n}\n\nexport default LogoControl;\n","// @flow strict\nimport assert from 'assert';\n\nexport type TaskID = number; // can't mark opaque due to https://github.com/flowtype/flow-remove-types/pull/61\ntype Task = {\n callback: (timeStamp: number) => void;\n id: TaskID;\n cancelled: boolean;\n};\n\nclass TaskQueue {\n _queue: Array<Task>;\n _id: TaskID;\n _cleared: boolean;\n _currentlyRunning: Array<Task> | false;\n\n constructor() {\n this._queue = [];\n this._id = 0;\n this._cleared = false;\n this._currentlyRunning = false;\n }\n\n add(callback: (timeStamp: number) => void): TaskID {\n const id = ++this._id;\n const queue = this._queue;\n queue.push({callback, id, cancelled: false});\n return id;\n }\n\n remove(id: TaskID) {\n const running = this._currentlyRunning;\n const queue = running ? this._queue.concat(running) : this._queue;\n for (const task of queue) {\n if (task.id === id) {\n task.cancelled = true;\n return;\n }\n }\n }\n\n run(timeStamp: number = 0) {\n assert(!this._currentlyRunning);\n const queue = this._currentlyRunning = this._queue;\n\n // Tasks queued by callbacks in the current queue should be executed\n // on the next run, not the current run.\n this._queue = [];\n\n for (const task of queue) {\n if (task.cancelled) continue;\n task.callback(timeStamp);\n if (this._cleared) break;\n }\n\n this._cleared = false;\n this._currentlyRunning = false;\n }\n\n clear() {\n if (this._currentlyRunning) {\n this._cleared = true;\n }\n this._queue = [];\n }\n}\n\nexport default TaskQueue;\n","// @flow\n\nimport LngLat from '../geo/lng_lat.js';\n\nimport type Point from '@mapbox/point-geometry';\nimport type Transform from '../geo/transform.js';\n\n/**\n * Given a LngLat, prior projected position, and a transform, return a new LngLat shifted\n * n × 360° east or west for some n ≥ 0 such that:\n *\n * * the projected location of the result is on screen, if possible, and secondarily:\n * * the difference between the projected location of the result and the prior position\n * is minimized.\n *\n * The object is to preserve perceived object constancy for Popups and Markers as much as\n * possible; they should avoid shifting large distances across the screen, even when the\n * map center changes by ±360° due to automatic wrapping, and when about to go off screen,\n * should wrap just enough to avoid doing so.\n *\n * @private\n */\nexport default function(lngLat: LngLat, priorPos: ?Point, transform: Transform): LngLat {\n lngLat = new LngLat(lngLat.lng, lngLat.lat);\n\n // First, try shifting one world in either direction, and see if either is closer to the\n // prior position. Don't shift away if it new position is further from center.\n // This preserves object constancy when the map center is auto-wrapped during animations,\n // but don't allow it to run away on horizon (points towards horizon get closer and closer).\n if (priorPos) {\n const left = new LngLat(lngLat.lng - 360, lngLat.lat);\n const right = new LngLat(lngLat.lng + 360, lngLat.lat);\n // Unless offscreen, keep the marker within same wrap distance to center. This is to prevent\n // running it to infinity `lng` near horizon when bearing is ~90°.\n const withinWrap = Math.ceil(Math.abs(lngLat.lng - transform.center.lng) / 360) * 360;\n const delta = transform.locationPoint(lngLat).distSqr(priorPos);\n const offscreen = priorPos.x < 0 || priorPos.y < 0 || priorPos.x > transform.width || priorPos.y > transform.height;\n if (transform.locationPoint(left).distSqr(priorPos) < delta && (offscreen || Math.abs(left.lng - transform.center.lng) < withinWrap)) {\n lngLat = left;\n } else if (transform.locationPoint(right).distSqr(priorPos) < delta && (offscreen || Math.abs(right.lng - transform.center.lng) < withinWrap)) {\n lngLat = right;\n }\n }\n\n // Second, wrap toward the center until the new position is on screen, or we can't get\n // any closer.\n while (Math.abs(lngLat.lng - transform.center.lng) > 180) {\n const pos = transform.locationPoint(lngLat);\n if (pos.x >= 0 && pos.y >= 0 && pos.x <= transform.width && pos.y <= transform.height) {\n break;\n }\n if (lngLat.lng > transform.center.lng) {\n lngLat.lng -= 360;\n } else {\n lngLat.lng += 360;\n }\n }\n\n return lngLat;\n}\n","// @flow\n\nexport type Anchor =\n | 'center'\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right';\n\nexport const anchorTranslate: {[_: Anchor]: string} = {\n 'center': 'translate(-50%,-50%)',\n 'top': 'translate(-50%,0)',\n 'top-left': 'translate(0,0)',\n 'top-right': 'translate(-100%,0)',\n 'bottom': 'translate(-50%,-100%)',\n 'bottom-left': 'translate(0,-100%)',\n 'bottom-right': 'translate(-100%,-100%)',\n 'left': 'translate(0,-50%)',\n 'right': 'translate(-100%,-50%)'\n};\n","// @flow\n\nimport * as DOM from '../util/dom.js';\nimport window from '../util/window.js';\nimport LngLat from '../geo/lng_lat.js';\nimport Point from '@mapbox/point-geometry';\nimport smartWrap from '../util/smart_wrap.js';\nimport {bindAll, extend, radToDeg} from '../util/util.js';\nimport {type Anchor, anchorTranslate} from './anchor.js';\nimport {Event, Evented} from '../util/evented.js';\nimport type Map from './map.js';\nimport type Popup from './popup.js';\nimport type {LngLatLike} from \"../geo/lng_lat.js\";\nimport type {MapMouseEvent, MapTouchEvent} from './events.js';\nimport type {PointLike} from '@mapbox/point-geometry';\nimport {globeTiltAtLngLat, globeCenterToScreenPoint, isLngLatBehindGlobe} from '../geo/projection/globe_util.js';\n\ntype Options = {\n element?: HTMLElement,\n offset?: PointLike,\n anchor?: Anchor,\n color?: string,\n scale?: number,\n draggable?: boolean,\n clickTolerance?: number,\n rotation?: number,\n rotationAlignment?: string,\n pitchAlignment?: string\n};\n\nexport const TERRAIN_OCCLUDED_OPACITY = 0.2;\n\n/**\n * Creates a marker component.\n *\n * @param {Object} [options]\n * @param {HTMLElement} [options.element] DOM element to use as a marker. The default is a light blue, droplet-shaped SVG marker.\n * @param {string} [options.anchor='center'] A string indicating the part of the Marker that should be positioned closest to the coordinate set via {@link Marker#setLngLat}.\n * Options are `'center'`, `'top'`, `'bottom'`, `'left'`, `'right'`, `'top-left'`, `'top-right'`, `'bottom-left'`, and `'bottom-right'`.\n * @param {PointLike} [options.offset] The offset in pixels as a {@link PointLike} object to apply relative to the element's center. Negatives indicate left and up.\n * @param {string} [options.color='#3FB1CE'] The color to use for the default marker if `options.element` is not provided. The default is light blue.\n * @param {number} [options.scale=1] The scale to use for the default marker if `options.element` is not provided. The default scale corresponds to a height of `41px` and a width of `27px`.\n * @param {boolean} [options.draggable=false] A boolean indicating whether or not a marker is able to be dragged to a new position on the map.\n * @param {number} [options.clickTolerance=0] The max number of pixels a user can shift the mouse pointer during a click on the marker for it to be considered a valid click (as opposed to a marker drag). The default is to inherit map's `clickTolerance`.\n * @param {number} [options.rotation=0] The rotation angle of the marker in degrees, relative to its respective `rotationAlignment` setting. A positive value will rotate the marker clockwise.\n * @param {string} [options.pitchAlignment='auto'] `map` aligns the `Marker` to the plane of the map. `viewport` aligns the `Marker` to the plane of the viewport. `auto` automatically matches the value of `rotationAlignment`.\n * @param {string} [options.rotationAlignment='auto'] `map` aligns the `Marker`'s rotation relative to the map, maintaining a bearing as the map rotates. `viewport` aligns the `Marker`'s rotation relative to the viewport, agnostic to map rotations. `auto` is equivalent to `viewport`.\n * @example\n * // Create a new marker.\n * const marker = new mapboxgl.Marker()\n * .setLngLat([30.5, 50.5])\n * .addTo(map);\n * @example\n * // Set marker options.\n * const marker = new mapboxgl.Marker({\n * color: \"#FFFFFF\",\n * draggable: true\n * }).setLngLat([30.5, 50.5])\n * .addTo(map);\n * @see [Example: Add custom icons with Markers](https://www.mapbox.com/mapbox-gl-js/example/custom-marker-icons/)\n * @see [Example: Create a draggable Marker](https://www.mapbox.com/mapbox-gl-js/example/drag-a-marker/)\n */\nexport default class Marker extends Evented {\n _map: ?Map;\n _anchor: Anchor;\n _offset: Point;\n _element: HTMLElement;\n _popup: ?Popup;\n _lngLat: LngLat;\n _pos: ?Point;\n _color: string;\n _scale: number;\n _defaultMarker: boolean;\n _draggable: boolean;\n _clickTolerance: number;\n _isDragging: boolean;\n _state: 'inactive' | 'pending' | 'active'; // used for handling drag events\n _positionDelta: ?Point;\n _pointerdownPos: ?Point;\n _rotation: number;\n _pitchAlignment: string;\n _rotationAlignment: string;\n _originalTabIndex: ?string; // original tabindex of _element\n _fadeTimer: ?TimeoutID;\n _updateFrameId: number;\n _updateMoving: () => void;\n\n constructor(options?: Options, legacyOptions?: Options) {\n super();\n // For backward compatibility -- the constructor used to accept the element as a\n // required first argument, before it was made optional.\n if (options instanceof window.HTMLElement || legacyOptions) {\n options = extend({element: options}, legacyOptions);\n }\n\n bindAll([\n '_update',\n '_onMove',\n '_onUp',\n '_addDragHandler',\n '_onMapClick',\n '_onKeyPress',\n '_clearFadeTimer'\n ], this);\n\n this._anchor = (options && options.anchor) || 'center';\n this._color = (options && options.color) || '#3FB1CE';\n this._scale = (options && options.scale) || 1;\n this._draggable = (options && options.draggable) || false;\n this._clickTolerance = (options && options.clickTolerance) || 0;\n this._isDragging = false;\n this._state = 'inactive';\n this._rotation = (options && options.rotation) || 0;\n this._rotationAlignment = (options && options.rotationAlignment) || 'auto';\n this._pitchAlignment = (options && options.pitchAlignment && options.pitchAlignment) || 'auto';\n this._updateMoving = () => this._update(true);\n\n if (!options || !options.element) {\n this._defaultMarker = true;\n this._element = DOM.create('div');\n\n // create default map marker SVG\n const defaultHeight = 41;\n const defaultWidth = 27;\n\n const svg = DOM.createSVG('svg', {\n display: 'block',\n height: `${defaultHeight * this._scale}px`,\n width: `${defaultWidth * this._scale}px`,\n viewBox: `0 0 ${defaultWidth} ${defaultHeight}`\n }, this._element);\n\n const gradient = DOM.createSVG('radialGradient', {id: 'shadowGradient'}, DOM.createSVG('defs', {}, svg));\n DOM.createSVG('stop', {offset: '10%', 'stop-opacity': 0.4}, gradient);\n DOM.createSVG('stop', {offset: '100%', 'stop-opacity': 0.05}, gradient);\n DOM.createSVG('ellipse', {cx: 13.5, cy: 34.8, rx: 10.5, ry: 5.25, fill: 'url(#shadowGradient)'}, svg); // shadow\n\n DOM.createSVG('path', { // marker shape\n fill: this._color,\n d: 'M27,13.5C27,19.07 20.25,27 14.75,34.5C14.02,35.5 12.98,35.5 12.25,34.5C6.75,27 0,19.22 0,13.5C0,6.04 6.04,0 13.5,0C20.96,0 27,6.04 27,13.5Z'\n }, svg);\n DOM.createSVG('path', { // border\n opacity: 0.25,\n d: 'M13.5,0C6.04,0 0,6.04 0,13.5C0,19.22 6.75,27 12.25,34.5C13,35.52 14.02,35.5 14.75,34.5C20.25,27 27,19.07 27,13.5C27,6.04 20.96,0 13.5,0ZM13.5,1C20.42,1 26,6.58 26,13.5C26,15.9 24.5,19.18 22.22,22.74C19.95,26.3 16.71,30.14 13.94,33.91C13.74,34.18 13.61,34.32 13.5,34.44C13.39,34.32 13.26,34.18 13.06,33.91C10.28,30.13 7.41,26.31 5.02,22.77C2.62,19.23 1,15.95 1,13.5C1,6.58 6.58,1 13.5,1Z'\n }, svg);\n\n DOM.createSVG('circle', {fill: 'white', cx: 13.5, cy: 13.5, r: 5.5}, svg); // circle\n\n // if no element and no offset option given apply an offset for the default marker\n // the -14 as the y value of the default marker offset was determined as follows\n //\n // the marker tip is at the center of the shadow ellipse from the default svg\n // the y value of the center of the shadow ellipse relative to the svg top left is 34.8\n // offset to the svg center \"height (41 / 2)\" gives 34.8 - (41 / 2) and rounded for an integer pixel offset gives 14\n // negative is used to move the marker up from the center so the tip is at the Marker lngLat\n this._offset = Point.convert((options && options.offset) || [0, -14]);\n } else {\n this._element = options.element;\n this._offset = Point.convert((options && options.offset) || [0, 0]);\n }\n\n if (!this._element.hasAttribute('aria-label')) this._element.setAttribute('aria-label', 'Map marker');\n this._element.classList.add('mapboxgl-marker');\n this._element.addEventListener('dragstart', (e: DragEvent) => {\n e.preventDefault();\n });\n this._element.addEventListener('mousedown', (e: MouseEvent) => {\n // prevent focusing on click\n e.preventDefault();\n });\n const classList = this._element.classList;\n for (const key in anchorTranslate) {\n classList.remove(`mapboxgl-marker-anchor-${key}`);\n }\n classList.add(`mapboxgl-marker-anchor-${this._anchor}`);\n\n this._popup = null;\n }\n\n /**\n * Attaches the `Marker` to a `Map` object.\n *\n * @param {Map} map The Mapbox GL JS map to add the marker to.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * const marker = new mapboxgl.Marker()\n * .setLngLat([30.5, 50.5])\n * .addTo(map); // add the marker to the map\n */\n addTo(map: Map): this {\n if (map === this._map) {\n return this;\n }\n this.remove();\n this._map = map;\n map.getCanvasContainer().appendChild(this._element);\n map.on('move', this._updateMoving);\n map.on('moveend', this._update);\n map.on('remove', this._clearFadeTimer);\n map._addMarker(this);\n this.setDraggable(this._draggable);\n this._update();\n\n // If we attached the `click` listener to the marker element, the popup\n // would close once the event propogated to `map` due to the\n // `Popup#_onClickClose` listener.\n map.on('click', this._onMapClick);\n\n return this;\n }\n\n /**\n * Removes the marker from a map.\n *\n * @example\n * const marker = new mapboxgl.Marker().addTo(map);\n * marker.remove();\n * @returns {Marker} Returns itself to allow for method chaining.\n */\n remove(): this {\n const map = this._map;\n if (map) {\n map.off('click', this._onMapClick);\n map.off('move', this._updateMoving);\n map.off('moveend', this._update);\n map.off('mousedown', this._addDragHandler);\n map.off('touchstart', this._addDragHandler);\n map.off('mouseup', this._onUp);\n map.off('touchend', this._onUp);\n map.off('mousemove', this._onMove);\n map.off('touchmove', this._onMove);\n map.off('remove', this._clearFadeTimer);\n map._removeMarker(this);\n this._map = undefined;\n }\n this._clearFadeTimer();\n this._element.remove();\n if (this._popup) this._popup.remove();\n return this;\n }\n\n /**\n * Get the marker's geographical location.\n *\n * The longitude of the result may differ by a multiple of 360 degrees from the longitude previously\n * set by `setLngLat` because `Marker` wraps the anchor longitude across copies of the world to keep\n * the marker on screen.\n *\n * @returns {LngLat} A {@link LngLat} describing the marker's location.\n * @example\n * // Store the marker's longitude and latitude coordinates in a variable\n * const lngLat = marker.getLngLat();\n * // Print the marker's longitude and latitude values in the console\n * console.log(`Longitude: ${lngLat.lng}, Latitude: ${lngLat.lat}`);\n * @see [Example: Create a draggable Marker](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-marker/)\n */\n getLngLat(): LngLat {\n return this._lngLat;\n }\n\n /**\n * Set the marker's geographical position and move it.\n *\n * @param {LngLat} lnglat A {@link LngLat} describing where the marker should be located.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * // Create a new marker, set the longitude and latitude, and add it to the map.\n * new mapboxgl.Marker()\n * .setLngLat([-65.017, -16.457])\n * .addTo(map);\n * @see [Example: Add custom icons with Markers](https://docs.mapbox.com/mapbox-gl-js/example/custom-marker-icons/)\n * @see [Example: Create a draggable Marker](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-marker/)\n * @see [Example: Add a marker using a place name](https://docs.mapbox.com/mapbox-gl-js/example/marker-from-geocode/)\n */\n setLngLat(lnglat: LngLatLike): this {\n this._lngLat = LngLat.convert(lnglat);\n this._pos = null;\n if (this._popup) this._popup.setLngLat(this._lngLat);\n this._update(true);\n return this;\n }\n\n /**\n * Returns the `Marker`'s HTML element.\n *\n * @returns {HTMLElement} Returns the marker element.\n * @example\n * const element = marker.getElement();\n */\n getElement(): HTMLElement {\n return this._element;\n }\n\n /**\n * Binds a {@link Popup} to the {@link Marker}.\n *\n * @param {Popup | null} popup An instance of the {@link Popup} class. If undefined or null, any popup\n * set on this {@link Marker} instance is unset.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * const marker = new mapboxgl.Marker()\n * .setLngLat([0, 0])\n * .setPopup(new mapboxgl.Popup().setHTML(\"<h1>Hello World!</h1>\")) // add popup\n * .addTo(map);\n * @see [Example: Attach a popup to a marker instance](https://docs.mapbox.com/mapbox-gl-js/example/set-popup/)\n */\n setPopup(popup: ?Popup): this {\n if (this._popup) {\n this._popup.remove();\n this._popup = null;\n this._element.removeAttribute('role');\n this._element.removeEventListener('keypress', this._onKeyPress);\n\n if (!this._originalTabIndex) {\n this._element.removeAttribute('tabindex');\n }\n }\n\n if (popup) {\n if (!('offset' in popup.options)) {\n const markerHeight = 41 - (5.8 / 2);\n const markerRadius = 13.5;\n const linearOffset = Math.sqrt(Math.pow(markerRadius, 2) / 2);\n popup.options.offset = this._defaultMarker ? {\n 'top': [0, 0],\n 'top-left': [0, 0],\n 'top-right': [0, 0],\n 'bottom': [0, -markerHeight],\n 'bottom-left': [linearOffset, (markerHeight - markerRadius + linearOffset) * -1],\n 'bottom-right': [-linearOffset, (markerHeight - markerRadius + linearOffset) * -1],\n 'left': [markerRadius, (markerHeight - markerRadius) * -1],\n 'right': [-markerRadius, (markerHeight - markerRadius) * -1]\n } : this._offset;\n }\n this._popup = popup;\n popup._marker = this;\n if (this._lngLat) this._popup.setLngLat(this._lngLat);\n\n this._element.setAttribute('role', 'button');\n this._originalTabIndex = this._element.getAttribute('tabindex');\n if (!this._originalTabIndex) {\n this._element.setAttribute('tabindex', '0');\n }\n this._element.addEventListener('keypress', this._onKeyPress);\n this._element.setAttribute('aria-expanded', 'false');\n }\n\n return this;\n }\n\n _onKeyPress(e: KeyboardEvent) {\n const code = e.code;\n const legacyCode = e.charCode || e.keyCode;\n\n if (\n (code === 'Space') || (code === 'Enter') ||\n (legacyCode === 32) || (legacyCode === 13) // space or enter\n ) {\n this.togglePopup();\n }\n }\n\n _onMapClick(e: MapMouseEvent) {\n const targetElement = e.originalEvent.target;\n const element = this._element;\n\n if (this._popup && (targetElement === element || element.contains((targetElement: any)))) {\n this.togglePopup();\n }\n }\n\n /**\n * Returns the {@link Popup} instance that is bound to the {@link Marker}.\n *\n * @returns {Popup} Returns the popup.\n * @example\n * const marker = new mapboxgl.Marker()\n * .setLngLat([0, 0])\n * .setPopup(new mapboxgl.Popup().setHTML(\"<h1>Hello World!</h1>\"))\n * .addTo(map);\n *\n * console.log(marker.getPopup()); // return the popup instance\n */\n getPopup(): ?Popup {\n return this._popup;\n }\n\n /**\n * Opens or closes the {@link Popup} instance that is bound to the {@link Marker}, depending on the current state of the {@link Popup}.\n *\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * const marker = new mapboxgl.Marker()\n * .setLngLat([0, 0])\n * .setPopup(new mapboxgl.Popup().setHTML(\"<h1>Hello World!</h1>\"))\n * .addTo(map);\n *\n * marker.togglePopup(); // toggle popup open or closed\n */\n togglePopup(): this {\n const popup = this._popup;\n if (!popup) {\n return this;\n } else if (popup.isOpen()) {\n popup.remove();\n this._element.setAttribute('aria-expanded', 'false');\n } else if (this._map) {\n popup.addTo(this._map);\n this._element.setAttribute('aria-expanded', 'true');\n }\n return this;\n }\n\n _behindTerrain(): boolean {\n const map = this._map;\n if (!map) return false;\n const unprojected = map.unproject(this._pos);\n const camera = map.getFreeCameraOptions();\n if (!camera.position) return false;\n const cameraLngLat = camera.position.toLngLat();\n const toClosestSurface = cameraLngLat.distanceTo(unprojected);\n const toMarker = cameraLngLat.distanceTo(this._lngLat);\n return toClosestSurface < toMarker * 0.9;\n\n }\n\n _evaluateOpacity() {\n const map = this._map;\n if (!map) return;\n\n const pos = this._pos;\n\n if (!pos || pos.x < 0 || pos.x > map.transform.width || pos.y < 0 || pos.y > map.transform.height) {\n this._clearFadeTimer();\n return;\n }\n const mapLocation = map.unproject(pos);\n let opacity;\n if (map._usingGlobe() && isLngLatBehindGlobe(map.transform, this._lngLat)) {\n opacity = 0;\n } else {\n opacity = 1 - map._queryFogOpacity(mapLocation);\n if (map.transform._terrainEnabled() && map.getTerrain() && this._behindTerrain()) {\n opacity *= TERRAIN_OCCLUDED_OPACITY;\n }\n }\n\n this._element.style.opacity = `${opacity}`;\n this._element.style.pointerEvents = opacity > 0 ? 'auto' : 'none';\n if (this._popup) {\n this._popup._setOpacity(opacity);\n }\n\n this._fadeTimer = null;\n }\n\n _clearFadeTimer() {\n if (this._fadeTimer) {\n clearTimeout(this._fadeTimer);\n this._fadeTimer = null;\n }\n }\n\n _updateDOM() {\n const pos = this._pos;\n const map = this._map;\n if (!pos || !map) { return; }\n\n const rotation = this._calculateXYTransform() + this._calculateZTransform();\n const offset = this._offset.mult(this._scale);\n\n this._element.style.transform = `\n translate(${pos.x}px,${pos.y}px) ${anchorTranslate[this._anchor]}\n ${rotation}\n translate(${offset.x}px,${offset.y}px)\n `;\n }\n\n _calculateXYTransform(): string {\n const pos = this._pos;\n const map = this._map;\n\n if (this.getPitchAlignment() !== 'map' || !map || !pos) { return ''; }\n if (!map._usingGlobe()) {\n const pitch = map.getPitch();\n return pitch ? `rotateX(${pitch}deg)` : '';\n }\n const tilt = radToDeg(globeTiltAtLngLat(map.transform, this._lngLat));\n const posFromCenter = pos.sub(globeCenterToScreenPoint(map.transform));\n const tiltOverDist = tilt / (Math.abs(posFromCenter.x) + Math.abs(posFromCenter.y));\n const yTilt = posFromCenter.x * tiltOverDist;\n const xTilt = -posFromCenter.y * tiltOverDist;\n if (!xTilt && !yTilt) { return ''; }\n return `rotateX(${xTilt}deg) rotateY(${yTilt}deg)`;\n }\n\n _calculateZTransform(): string {\n const spin = this._calculateRotation();\n return spin ? `rotateZ(${spin}deg)` : ``;\n }\n\n _calculateRotation(): number {\n if (this._rotationAlignment === \"viewport\" || this._rotationAlignment === \"auto\") {\n return this._rotation;\n } if (this._map && this._rotationAlignment === \"map\") {\n const pos = this._pos;\n const map = this._map;\n if (pos && map && map._usingGlobe()) {\n const north = map.project(new LngLat(this._lngLat.lng, this._lngLat.lat + .001));\n const south = map.project(new LngLat(this._lngLat.lng, this._lngLat.lat - .001));\n const diff = south.sub(north);\n return this._rotation + radToDeg(Math.atan2(diff.y, diff.x)) - 90;\n }\n return this._rotation - this._map.getBearing();\n }\n return 0;\n }\n\n _update(delaySnap?: boolean) {\n window.cancelAnimationFrame(this._updateFrameId);\n const map = this._map;\n if (!map) return;\n\n if (map.transform.renderWorldCopies) {\n this._lngLat = smartWrap(this._lngLat, this._pos, map.transform);\n }\n\n this._pos = map.project(this._lngLat);\n\n // because rounding the coordinates at every `move` event causes stuttered zooming\n // we only round them when _update is called with `moveend` or when its called with\n // no arguments (when the Marker is initialized or Marker#setLngLat is invoked).\n if (delaySnap === true) {\n this._updateFrameId = window.requestAnimationFrame(() => {\n if (this._element && this._pos && this._anchor) {\n this._pos = this._pos.round();\n this._updateDOM();\n }\n });\n } else {\n this._pos = this._pos.round();\n }\n\n map._requestDomTask(() => {\n if (!this._map) return;\n\n if (this._element && this._pos && this._anchor) {\n this._updateDOM();\n }\n\n if ((map._usingGlobe() || map.getTerrain() || map.getFog()) && !this._fadeTimer) {\n this._fadeTimer = setTimeout(this._evaluateOpacity.bind(this), 60);\n }\n });\n }\n\n /**\n * Get the marker's offset.\n *\n * @returns {Point} The marker's screen coordinates in pixels.\n * @example\n * const offset = marker.getOffset();\n */\n getOffset(): Point {\n return this._offset;\n }\n\n /**\n * Sets the offset of the marker.\n *\n * @param {PointLike} offset The offset in pixels as a {@link PointLike} object to apply relative to the element's center. Negatives indicate left and up.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * marker.setOffset([0, 1]);\n */\n setOffset(offset: PointLike): this {\n this._offset = Point.convert(offset);\n this._update();\n return this;\n }\n\n _onMove(e: MapMouseEvent | MapTouchEvent) {\n const map = this._map;\n if (!map) return;\n\n if (!this._isDragging) {\n const clickTolerance = this._clickTolerance || map._clickTolerance;\n this._isDragging = e.point.dist(this._pointerdownPos) >= clickTolerance;\n }\n if (!this._isDragging) return;\n\n this._pos = e.point.sub(this._positionDelta);\n this._lngLat = map.unproject(this._pos);\n this.setLngLat(this._lngLat);\n // suppress click event so that popups don't toggle on drag\n this._element.style.pointerEvents = 'none';\n\n // make sure dragstart only fires on the first move event after mousedown.\n // this can't be on mousedown because that event doesn't necessarily\n // imply that a drag is about to happen.\n if (this._state === 'pending') {\n this._state = 'active';\n\n /**\n * Fired when dragging starts.\n *\n * @event dragstart\n * @memberof Marker\n * @instance\n * @type {Object}\n * @property {Marker} marker The object that is being dragged.\n */\n this.fire(new Event('dragstart'));\n }\n\n /**\n * Fired while dragging.\n *\n * @event drag\n * @memberof Marker\n * @instance\n * @type {Object}\n * @property {Marker} marker The object that is being dragged.\n */\n this.fire(new Event('drag'));\n }\n\n _onUp() {\n // revert to normal pointer event handling\n this._element.style.pointerEvents = 'auto';\n this._positionDelta = null;\n this._pointerdownPos = null;\n this._isDragging = false;\n\n const map = this._map;\n if (map) {\n map.off('mousemove', this._onMove);\n map.off('touchmove', this._onMove);\n }\n\n // only fire dragend if it was preceded by at least one drag event\n if (this._state === 'active') {\n /**\n * Fired when the marker is finished being dragged.\n *\n * @event dragend\n * @memberof Marker\n * @instance\n * @type {Object}\n * @property {Marker} marker The object that was dragged.\n */\n this.fire(new Event('dragend'));\n }\n\n this._state = 'inactive';\n }\n\n _addDragHandler(e: MapMouseEvent | MapTouchEvent) {\n const map = this._map;\n if (!map) return;\n\n if (this._element.contains((e.originalEvent.target: any))) {\n e.preventDefault();\n\n // We need to calculate the pixel distance between the click point\n // and the marker position, with the offset accounted for. Then we\n // can subtract this distance from the mousemove event's position\n // to calculate the new marker position.\n // If we don't do this, the marker 'jumps' to the click position\n // creating a jarring UX effect.\n this._positionDelta = e.point.sub(this._pos);\n\n this._pointerdownPos = e.point;\n\n this._state = 'pending';\n map.on('mousemove', this._onMove);\n map.on('touchmove', this._onMove);\n map.once('mouseup', this._onUp);\n map.once('touchend', this._onUp);\n }\n }\n\n /**\n * Sets the `draggable` property and functionality of the marker.\n *\n * @param {boolean} [shouldBeDraggable=false] Turns drag functionality on/off.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * marker.setDraggable(true);\n */\n setDraggable(shouldBeDraggable: boolean): this {\n this._draggable = !!shouldBeDraggable; // convert possible undefined value to false\n\n // handle case where map may not exist yet\n // for example, when setDraggable is called before addTo\n const map = this._map;\n if (map) {\n if (shouldBeDraggable) {\n map.on('mousedown', this._addDragHandler);\n map.on('touchstart', this._addDragHandler);\n } else {\n map.off('mousedown', this._addDragHandler);\n map.off('touchstart', this._addDragHandler);\n }\n }\n\n return this;\n }\n\n /**\n * Returns true if the marker can be dragged.\n *\n * @returns {boolean} True if the marker is draggable.\n * @example\n * const isMarkerDraggable = marker.isDraggable();\n */\n isDraggable(): boolean {\n return this._draggable;\n }\n\n /**\n * Sets the `rotation` property of the marker.\n *\n * @param {number} [rotation=0] The rotation angle of the marker (clockwise, in degrees), relative to its respective {@link Marker#setRotationAlignment} setting.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * marker.setRotation(45);\n */\n setRotation(rotation: number): this {\n this._rotation = rotation || 0;\n this._update();\n return this;\n }\n\n /**\n * Returns the current rotation angle of the marker (in degrees).\n *\n * @returns {number} The current rotation angle of the marker.\n * @example\n * const rotation = marker.getRotation();\n */\n getRotation(): number {\n return this._rotation;\n }\n\n /**\n * Sets the `rotationAlignment` property of the marker.\n *\n * @param {string} [alignment='auto'] Sets the `rotationAlignment` property of the marker.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * marker.setRotationAlignment('viewport');\n */\n setRotationAlignment(alignment: string): this {\n this._rotationAlignment = alignment || 'auto';\n this._update();\n return this;\n }\n\n /**\n * Returns the current `rotationAlignment` property of the marker.\n *\n * @returns {string} The current rotational alignment of the marker.\n * @example\n * const alignment = marker.getRotationAlignment();\n */\n getRotationAlignment(): string {\n return this._rotationAlignment === `auto` ? 'viewport' : this._rotationAlignment;\n }\n\n /**\n * Sets the `pitchAlignment` property of the marker.\n *\n * @param {string} [alignment] Sets the `pitchAlignment` property of the marker. If alignment is 'auto', it will automatically match `rotationAlignment`.\n * @returns {Marker} Returns itself to allow for method chaining.\n * @example\n * marker.setPitchAlignment('map');\n */\n setPitchAlignment(alignment: string): this {\n this._pitchAlignment = alignment || 'auto';\n this._update();\n return this;\n }\n\n /**\n * Returns the current `pitchAlignment` behavior of the marker.\n *\n * @returns {string} The current pitch alignment of the marker.\n * @example\n * const alignment = marker.getPitchAlignment();\n */\n getPitchAlignment(): string {\n return this._pitchAlignment === `auto` ? this.getRotationAlignment() : this._pitchAlignment;\n }\n}\n","// @flow\n\nimport {easeCubicInOut} from './util.js';\n\n/**\n * An object for maintaining just enough state to ease a variable.\n *\n * @private\n */\nclass EasedVariable {\n _start: number;\n _end: number;\n _startTime: number;\n _endTime: number;\n\n constructor(initialValue: number) {\n this.jumpTo(initialValue);\n }\n\n /**\n * Evaluate the current value, given a timestamp.\n *\n * @param timeStamp {number} Time at which to evaluate.\n *\n * @returns {number} Evaluated value.\n */\n getValue(timeStamp: number): number {\n if (timeStamp <= this._startTime) return this._start;\n if (timeStamp >= this._endTime) return this._end;\n\n const t = easeCubicInOut((timeStamp - this._startTime) / (this._endTime - this._startTime));\n return this._start * (1 - t) + this._end * t;\n }\n\n /**\n * Check if an ease is in progress.\n *\n * @param timeStamp {number} Current time stamp.\n *\n * @returns {boolean} Returns `true` if ease is in progress.\n */\n isEasing(timeStamp: number): boolean {\n return timeStamp >= this._startTime && timeStamp <= this._endTime;\n }\n\n /**\n * Set the value without easing and cancel any in progress ease.\n *\n * @param value {number} New value.\n */\n jumpTo(value: number) {\n this._startTime = -Infinity;\n this._endTime = -Infinity;\n\n this._start = value;\n this._end = value;\n }\n\n /**\n * Cancel any in-progress ease and begin a new ease.\n *\n * @param value {number} New value to which to ease.\n * @param timeStamp {number} Current time stamp.\n * @param duration {number} Ease duration, in same units as timeStamp.\n */\n easeTo(value: number, timeStamp: number, duration: number) {\n this._start = this.getValue(timeStamp);\n this._end = value;\n\n this._startTime = timeStamp;\n this._endTime = timeStamp + duration;\n }\n}\n\nexport default EasedVariable;\n","// @flow\n\nconst defaultLocale = {\n 'AttributionControl.ToggleAttribution': 'Toggle attribution',\n 'AttributionControl.MapFeedback': 'Map feedback',\n 'FullscreenControl.Enter': 'Enter fullscreen',\n 'FullscreenControl.Exit': 'Exit fullscreen',\n 'GeolocateControl.FindMyLocation': 'Find my location',\n 'GeolocateControl.LocationNotAvailable': 'Location not available',\n 'LogoControl.Title': 'Mapbox logo',\n 'Map.Title': 'Map',\n 'NavigationControl.ResetBearing': 'Reset bearing to north',\n 'NavigationControl.ZoomIn': 'Zoom in',\n 'NavigationControl.ZoomOut': 'Zoom out',\n 'ScrollZoomBlocker.CtrlMessage': 'Use ctrl + scroll to zoom the map',\n 'ScrollZoomBlocker.CmdMessage': 'Use ⌘ + scroll to zoom the map',\n 'TouchPanBlocker.Message': 'Use two fingers to move the map'\n};\n\nexport default defaultLocale;\n","// @flow\n\nimport {version} from '../../package.json';\nimport {asyncAll, extend, bindAll, warnOnce, uniqueId, isSafariWithAntialiasingBug} from '../util/util.js';\nimport browser from '../util/browser.js';\nimport window from '../util/window.js';\nimport * as DOM from '../util/dom.js';\nimport {getImage, getJSON, ResourceType} from '../util/ajax.js';\nimport {RequestManager, getMapSessionAPI, postMapLoadEvent, AUTH_ERR_MSG, storeAuthState, removeAuthState} from '../util/mapbox.js';\nimport Style from '../style/style.js';\nimport EvaluationParameters from '../style/evaluation_parameters.js';\nimport Painter from '../render/painter.js';\nimport Transform from '../geo/transform.js';\nimport Hash from './hash.js';\nimport HandlerManager from './handler_manager.js';\nimport Camera from './camera.js';\nimport LngLat from '../geo/lng_lat.js';\nimport MercatorCoordinate from '../geo/mercator_coordinate.js';\nimport LngLatBounds from '../geo/lng_lat_bounds.js';\nimport Point from '@mapbox/point-geometry';\nimport AttributionControl from './control/attribution_control.js';\nimport LogoControl from './control/logo_control.js';\nimport {supported} from '@mapbox/mapbox-gl-supported';\nimport {RGBAImage} from '../util/image.js';\nimport {Event, ErrorEvent} from '../util/evented.js';\nimport {MapMouseEvent} from './events.js';\nimport TaskQueue from '../util/task_queue.js';\nimport webpSupported from '../util/webp_supported.js';\nimport {PerformanceMarkers, PerformanceUtils} from '../util/performance.js';\nimport Marker from '../ui/marker.js';\nimport EasedVariable from '../util/eased_variable.js';\nimport SourceCache from '../source/source_cache.js';\nimport {GLOBE_ZOOM_THRESHOLD_MAX} from '../geo/projection/globe_util.js';\n\nimport {setCacheLimits} from '../util/tile_request_cache.js';\n\nimport type {PointLike} from '@mapbox/point-geometry';\nimport type {RequestTransformFunction} from '../util/mapbox.js';\nimport type {LngLatLike} from '../geo/lng_lat.js';\nimport type {LngLatBoundsLike} from '../geo/lng_lat_bounds.js';\nimport type {StyleOptions, StyleSetterOptions} from '../style/style.js';\nimport type {MapEvent, MapDataEvent} from './events.js';\nimport type {CustomLayerInterface} from '../style/style_layer/custom_style_layer.js';\nimport type {StyleImageInterface, StyleImageMetadata} from '../style/style_image.js';\n\nimport type ScrollZoomHandler from './handler/scroll_zoom.js';\nimport type BoxZoomHandler from './handler/box_zoom.js';\nimport type {TouchPitchHandler} from './handler/touch_zoom_rotate.js';\nimport type DragRotateHandler from './handler/shim/drag_rotate.js';\nimport type DragPanHandler, {DragPanOptions} from './handler/shim/drag_pan.js';\nimport type KeyboardHandler from './handler/keyboard.js';\nimport type DoubleClickZoomHandler from './handler/shim/dblclick_zoom.js';\nimport type TouchZoomRotateHandler from './handler/shim/touch_zoom_rotate.js';\nimport defaultLocale from './default_locale.js';\nimport type {TaskID} from '../util/task_queue.js';\nimport type {Cancelable} from '../types/cancelable.js';\nimport type {\n LayerSpecification,\n FilterSpecification,\n StyleSpecification,\n LightSpecification,\n TerrainSpecification,\n FogSpecification,\n SourceSpecification,\n ProjectionSpecification,\n PropertyValueSpecification,\n TransitionSpecification\n} from '../style-spec/types.js';\nimport type StyleLayer from '../style/style_layer.js';\nimport type {ElevationQueryOptions} from '../terrain/elevation.js';\nimport type {Source} from '../source/source.js';\nimport type {QueryFeature} from '../util/vectortile_to_geojson.js';\nimport type {QueryResult} from '../data/feature_index.js';\n\nexport type ControlPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n/* eslint-disable no-use-before-define */\ntype IControl = {\n onAdd(map: Map): HTMLElement;\n onRemove(map: Map): void;\n\n +getDefaultPosition?: () => ControlPosition;\n +_setLanguage?: (language: ?string) => void;\n}\n/* eslint-enable no-use-before-define */\n\nexport const AVERAGE_ELEVATION_SAMPLING_INTERVAL = 500; // ms\nexport const AVERAGE_ELEVATION_EASE_TIME = 300; // ms\nexport const AVERAGE_ELEVATION_EASE_THRESHOLD = 1; // meters\nexport const AVERAGE_ELEVATION_CHANGE_THRESHOLD = 1e-4; // meters\n\ntype MapOptions = {\n hash?: boolean | string,\n interactive?: boolean,\n container: HTMLElement | string,\n bearingSnap?: number,\n attributionControl?: boolean,\n customAttribution?: string | Array<string>,\n logoPosition?: ControlPosition,\n failIfMajorPerformanceCaveat?: boolean,\n preserveDrawingBuffer?: boolean,\n antialias?: boolean,\n refreshExpiredTiles?: boolean,\n maxBounds?: LngLatBoundsLike,\n scrollZoom?: boolean,\n minZoom?: ?number,\n maxZoom?: ?number,\n minPitch?: ?number,\n maxPitch?: ?number,\n boxZoom?: boolean,\n dragRotate?: boolean,\n dragPan?: DragPanOptions,\n keyboard?: boolean,\n doubleClickZoom?: boolean,\n touchZoomRotate?: boolean,\n touchPitch?: boolean,\n cooperativeGestures?: boolean,\n trackResize?: boolean,\n center?: LngLatLike,\n zoom?: number,\n bearing?: number,\n pitch?: number,\n optimizeForTerrain?: boolean,\n renderWorldCopies?: boolean,\n minTileCacheSize?: number,\n maxTileCacheSize?: number,\n transformRequest?: RequestTransformFunction,\n accessToken: string,\n testMode: ?boolean,\n locale?: Object,\n projection?: ProjectionSpecification | string,\n language?: string,\n worldview?: string\n};\n\nconst defaultMinZoom = -2;\nconst defaultMaxZoom = 22;\n\n// the default values, but also the valid range\nconst defaultMinPitch = 0;\nconst defaultMaxPitch = 85;\n\nconst defaultOptions = {\n center: [0, 0],\n zoom: 0,\n bearing: 0,\n pitch: 0,\n\n minZoom: defaultMinZoom,\n maxZoom: defaultMaxZoom,\n\n minPitch: defaultMinPitch,\n maxPitch: defaultMaxPitch,\n\n interactive: true,\n scrollZoom: true,\n boxZoom: true,\n dragRotate: true,\n dragPan: true,\n keyboard: true,\n doubleClickZoom: true,\n touchZoomRotate: true,\n touchPitch: true,\n cooperativeGestures: false,\n\n bearingSnap: 7,\n clickTolerance: 3,\n pitchWithRotate: true,\n\n hash: false,\n attributionControl: true,\n\n failIfMajorPerformanceCaveat: false,\n preserveDrawingBuffer: false,\n trackResize: true,\n optimizeForTerrain: true,\n renderWorldCopies: true,\n refreshExpiredTiles: true,\n minTileCacheSize: null,\n maxTileCacheSize: null,\n localIdeographFontFamily: 'sans-serif',\n localFontFamily: null,\n transformRequest: null,\n accessToken: null,\n fadeDuration: 300,\n crossSourceCollisions: true\n};\n\n/**\n * The `Map` object represents the map on your page. It exposes methods\n * and properties that enable you to programmatically change the map,\n * and fires events as users interact with it.\n *\n * You create a `Map` by specifying a `container` and other options.\n * Then Mapbox GL JS initializes the map on the page and returns your `Map`\n * object.\n *\n * @extends Evented\n * @param {Object} options\n * @param {HTMLElement|string} options.container The HTML element in which Mapbox GL JS will render the map, or the element's string `id`. The specified element must have no children.\n * @param {number} [options.minZoom=0] The minimum zoom level of the map (0-24).\n * @param {number} [options.maxZoom=22] The maximum zoom level of the map (0-24).\n * @param {number} [options.minPitch=0] The minimum pitch of the map (0-85).\n * @param {number} [options.maxPitch=85] The maximum pitch of the map (0-85).\n * @param {Object | string} options.style The map's Mapbox style. This must be an a JSON object conforming to\n * the schema described in the [Mapbox Style Specification](https://mapbox.com/mapbox-gl-style-spec/), or a URL\n * to such JSON. Can accept a null value to allow adding a style manually.\n *\n * To load a style from the Mapbox API, you can use a URL of the form `mapbox://styles/:owner/:style`,\n * where `:owner` is your Mapbox account name and `:style` is the style ID. You can also use a\n * [Mapbox-owned style](https://docs.mapbox.com/api/maps/styles/#mapbox-styles):\n *\n * * `mapbox://styles/mapbox/streets-v11`\n * * `mapbox://styles/mapbox/outdoors-v11`\n * * `mapbox://styles/mapbox/light-v10`\n * * `mapbox://styles/mapbox/dark-v10`\n * * `mapbox://styles/mapbox/satellite-v9`\n * * `mapbox://styles/mapbox/satellite-streets-v11`\n * * `mapbox://styles/mapbox/navigation-day-v1`\n * * `mapbox://styles/mapbox/navigation-night-v1`.\n *\n * Tilesets hosted with Mapbox can be style-optimized if you append `?optimize=true` to the end of your style URL, like `mapbox://styles/mapbox/streets-v11?optimize=true`.\n * Learn more about style-optimized vector tiles in our [API documentation](https://www.mapbox.com/api-documentation/maps/#retrieve-tiles).\n *\n * @param {(boolean|string)} [options.hash=false] If `true`, the map's [position](https://docs.mapbox.com/help/glossary/camera) (zoom, center latitude, center longitude, bearing, and pitch) will be synced with the hash fragment of the page's URL.\n * For example, `http://path/to/my/page.html#2.59/39.26/53.07/-24.1/60`.\n * An additional string may optionally be provided to indicate a parameter-styled hash,\n * for example http://path/to/my/page.html#map=2.59/39.26/53.07/-24.1/60&foo=bar, where `foo`\n * is a custom parameter and `bar` is an arbitrary hash distinct from the map hash.\n * @param {boolean} [options.interactive=true] If `false`, no mouse, touch, or keyboard listeners will be attached to the map, so it will not respond to interaction.\n * @param {number} [options.bearingSnap=7] The threshold, measured in degrees, that determines when the map's\n * bearing will snap to north. For example, with a `bearingSnap` of 7, if the user rotates\n * the map within 7 degrees of north, the map will automatically snap to exact north.\n * @param {boolean} [options.pitchWithRotate=true] If `false`, the map's pitch (tilt) control with \"drag to rotate\" interaction will be disabled.\n * @param {number} [options.clickTolerance=3] The max number of pixels a user can shift the mouse pointer during a click for it to be considered a valid click (as opposed to a mouse drag).\n * @param {boolean} [options.attributionControl=true] If `true`, an {@link AttributionControl} will be added to the map.\n * @param {string | Array<string>} [options.customAttribution=null] String or strings to show in an {@link AttributionControl}. Only applicable if `options.attributionControl` is `true`.\n * @param {string} [options.logoPosition='bottom-left'] A string representing the position of the Mapbox wordmark on the map. Valid options are `top-left`,`top-right`, `bottom-left`, `bottom-right`.\n * @param {boolean} [options.failIfMajorPerformanceCaveat=false] If `true`, map creation will fail if the performance of Mapbox GL JS would be dramatically worse than expected (a software renderer would be used).\n * @param {boolean} [options.preserveDrawingBuffer=false] If `true`, the map's canvas can be exported to a PNG using `map.getCanvas().toDataURL()`. This is `false` by default as a performance optimization.\n * @param {boolean} [options.antialias=false] If `true`, the gl context will be created with [MSAA antialiasing](https://en.wikipedia.org/wiki/Multisample_anti-aliasing), which can be useful for antialiasing custom layers. This is `false` by default as a performance optimization.\n * @param {boolean} [options.refreshExpiredTiles=true] If `false`, the map won't attempt to re-request tiles once they expire per their HTTP `cacheControl`/`expires` headers.\n * @param {LngLatBoundsLike} [options.maxBounds=null] If set, the map will be constrained to the given bounds.\n * @param {boolean|Object} [options.scrollZoom=true] If `true`, the \"scroll to zoom\" interaction is enabled. An `Object` value is passed as options to {@link ScrollZoomHandler#enable}.\n * @param {boolean} [options.boxZoom=true] If `true`, the \"box zoom\" interaction is enabled (see {@link BoxZoomHandler}).\n * @param {boolean} [options.dragRotate=true] If `true`, the \"drag to rotate\" interaction is enabled (see {@link DragRotateHandler}).\n * @param {boolean | Object} [options.dragPan=true] If `true`, the \"drag to pan\" interaction is enabled. An `Object` value is passed as options to {@link DragPanHandler#enable}.\n * @param {boolean} [options.keyboard=true] If `true`, keyboard shortcuts are enabled (see {@link KeyboardHandler}).\n * @param {boolean} [options.doubleClickZoom=true] If `true`, the \"double click to zoom\" interaction is enabled (see {@link DoubleClickZoomHandler}).\n * @param {boolean | Object} [options.touchZoomRotate=true] If `true`, the \"pinch to rotate and zoom\" interaction is enabled. An `Object` value is passed as options to {@link TouchZoomRotateHandler#enable}.\n * @param {boolean | Object} [options.touchPitch=true] If `true`, the \"drag to pitch\" interaction is enabled. An `Object` value is passed as options to {@link TouchPitchHandler}.\n * @param {boolean} [options.cooperativeGestures] If `true`, scroll zoom will require pressing the ctrl or ⌘ key while scrolling to zoom map, and touch pan will require using two fingers while panning to move the map. Touch pitch will require three fingers to activate if enabled.\n * @param {boolean} [options.trackResize=true] If `true`, the map will automatically resize when the browser window resizes.\n * @param {LngLatLike} [options.center=[0, 0]] The initial geographical [centerpoint](https://docs.mapbox.com/help/glossary/camera#center) of the map. If `center` is not specified in the constructor options, Mapbox GL JS will look for it in the map's style object. If it is not specified in the style, either, it will default to `[0, 0]` Note: Mapbox GL uses longitude, latitude coordinate order (as opposed to latitude, longitude) to match GeoJSON.\n * @param {number} [options.zoom=0] The initial [zoom](https://docs.mapbox.com/help/glossary/camera#zoom) level of the map. If `zoom` is not specified in the constructor options, Mapbox GL JS will look for it in the map's style object. If it is not specified in the style, either, it will default to `0`.\n * @param {number} [options.bearing=0] The initial [bearing](https://docs.mapbox.com/help/glossary/camera#bearing) (rotation) of the map, measured in degrees counter-clockwise from north. If `bearing` is not specified in the constructor options, Mapbox GL JS will look for it in the map's style object. If it is not specified in the style, either, it will default to `0`.\n * @param {number} [options.pitch=0] The initial [pitch](https://docs.mapbox.com/help/glossary/camera#pitch) (tilt) of the map, measured in degrees away from the plane of the screen (0-85). If `pitch` is not specified in the constructor options, Mapbox GL JS will look for it in the map's style object. If it is not specified in the style, either, it will default to `0`.\n * @param {LngLatBoundsLike} [options.bounds=null] The initial bounds of the map. If `bounds` is specified, it overrides `center` and `zoom` constructor options.\n * @param {Object} [options.fitBoundsOptions] A {@link Map#fitBounds} options object to use _only_ when fitting the initial `bounds` provided above.\n * @param {string} [options.language=null] A string representing the language used for the map's data and UI components. Languages can only be set on Mapbox vector tile sources.\n * By default, GL JS will not set a language so that the language of Mapbox tiles will be determined by the vector tile source's TileJSON.\n * Valid language strings must be a [BCP-47 language code](https://en.wikipedia.org/wiki/IETF_language_tag#List_of_subtags). Unsupported BCP-47 codes will not include any translations. Invalid codes will result in an recoverable error.\n * If a label has no translation for the selected language, it will display in the label's local language.\n * If option is set to `auto`, GL JS will select a user's preferred language as determined by the browser's `window.navigator.language` property.\n * If the `locale` property is not set separately, this language will also be used to localize the UI for supported languages.\n * @param {string} [options.worldview] Sets the map's worldview. A worldview determines the way that certain disputed boundaries\n * are rendered. By default, GL JS will not set a worldview so that the worldview of Mapbox tiles will be determined by the vector tile source's TileJSON.\n * Valid worldview strings must be an [ISO alpha-2 country code](https://en.wikipedia.org/wiki/ISO_3166-1#Current_codes). Unsupported\n * ISO alpha-2 codes will fall back to the TileJSON's default worldview. Invalid codes will result in a recoverable error.\n * @param {boolean} [options.optimizeForTerrain=true] With terrain on, if `true`, the map will render for performance priority, which may lead to layer reordering allowing to maximize performance (layers that are draped over terrain will be drawn first, including fill, line, background, hillshade and raster). Otherwise, if set to `false`, the map will always be drawn for layer order priority.\n * @param {boolean} [options.renderWorldCopies=true] If `true`, multiple copies of the world will be rendered side by side beyond -180 and 180 degrees longitude. If set to `false`:\n * - When the map is zoomed out far enough that a single representation of the world does not fill the map's entire\n * container, there will be blank space beyond 180 and -180 degrees longitude.\n * - Features that cross 180 and -180 degrees longitude will be cut in two (with one portion on the right edge of the\n * map and the other on the left edge of the map) at every zoom level.\n * @param {number} [options.minTileCacheSize=null] The minimum number of tiles stored in the tile cache for a given source. Larger viewports use more tiles and need larger caches. Larger viewports are more likely to be found on devices with more memory and on pages where the map is more important. If omitted, the cache will be dynamically sized based on the current viewport.\n * @param {number} [options.maxTileCacheSize=null] The maximum number of tiles stored in the tile cache for a given source. If omitted, the cache will be dynamically sized based on the current viewport.\n * @param {string} [options.localIdeographFontFamily='sans-serif'] Defines a CSS font-family for locally overriding generation of glyphs in the 'CJK Unified Ideographs', 'Hiragana', 'Katakana', 'Hangul Syllables' and 'CJK Symbols and Punctuation' ranges.\n * In these ranges, font settings from the map's style will be ignored, except for font-weight keywords (light/regular/medium/bold).\n * Set to `false`, to enable font settings from the map's style for these glyph ranges. Note that [Mapbox Studio](https://studio.mapbox.com/) sets this value to `false` by default.\n * The purpose of this option is to avoid bandwidth-intensive glyph server requests. For an example of this option in use, see [Use locally generated ideographs](https://www.mapbox.com/mapbox-gl-js/example/local-ideographs).\n * @param {string} [options.localFontFamily=false] Defines a CSS\n * font-family for locally overriding generation of all glyphs. Font settings from the map's style will be ignored, except for font-weight keywords (light/regular/medium/bold).\n * If set, this option overrides the setting in localIdeographFontFamily.\n * @param {RequestTransformFunction} [options.transformRequest=null] A callback run before the Map makes a request for an external URL. The callback can be used to modify the url, set headers, or set the credentials property for cross-origin requests.\n * Expected to return a {@link RequestParameters} object with a `url` property and optionally `headers` and `credentials` properties.\n * @param {boolean} [options.collectResourceTiming=false] If `true`, Resource Timing API information will be collected for requests made by GeoJSON and Vector Tile web workers (this information is normally inaccessible from the main Javascript thread). Information will be returned in a `resourceTiming` property of relevant `data` events.\n * @param {number} [options.fadeDuration=300] Controls the duration of the fade-in/fade-out animation for label collisions, in milliseconds. This setting affects all symbol layers. This setting does not affect the duration of runtime styling transitions or raster tile cross-fading.\n * @param {boolean} [options.crossSourceCollisions=true] If `true`, symbols from multiple sources can collide with each other during collision detection. If `false`, collision detection is run separately for the symbols in each source.\n * @param {string} [options.accessToken=null] If specified, map will use this [token](https://docs.mapbox.com/help/glossary/access-token/) instead of the one defined in `mapboxgl.accessToken`.\n * @param {Object} [options.locale=null] A patch to apply to the default localization table for UI strings such as control tooltips. The `locale` object maps namespaced UI string IDs to translated strings in the target language;\n * see [`src/ui/default_locale.js`](https://github.com/mapbox/mapbox-gl-js/blob/main/src/ui/default_locale.js) for an example with all supported string IDs. The object may specify all UI strings (thereby adding support for a new translation) or only a subset of strings (thereby patching the default translation table).\n * @param {boolean} [options.testMode=false] Silences errors and warnings generated due to an invalid accessToken, useful when using the library to write unit tests.\n * @param {ProjectionSpecification} [options.projection='mercator'] The [projection](https://docs.mapbox.com/mapbox-gl-js/style-spec/projection/) the map should be rendered in.\n * Supported projections are:\n * * [Albers](https://en.wikipedia.org/wiki/Albers_projection) equal-area conic projection as `albers`\n * * [Equal Earth](https://en.wikipedia.org/wiki/Equal_Earth_projection) equal-area pseudocylindrical projection as `equalEarth`\n * * [Equirectangular](https://en.wikipedia.org/wiki/Equirectangular_projection) (Plate Carrée/WGS84) as `equirectangular`\n * * 3d Globe as `globe`\n * * [Lambert Conformal Conic](https://en.wikipedia.org/wiki/Lambert_conformal_conic_projection) as `lambertConformalConic`\n * * [Mercator](https://en.wikipedia.org/wiki/Mercator_projection) cylindrical map projection as `mercator`\n * * [Natural Earth](https://en.wikipedia.org/wiki/Natural_Earth_projection) pseudocylindrical map projection as `naturalEarth`\n * * [Winkel Tripel](https://en.wikipedia.org/wiki/Winkel_tripel_projection) azimuthal map projection as `winkelTripel`\n * Conic projections such as Albers and Lambert have configurable `center` and `parallels` properties that allow developers to define the region in which the projection has minimal distortion; see the example for how to configure these properties.\n * @example\n * const map = new mapboxgl.Map({\n * container: 'map', // container ID\n * center: [-122.420679, 37.772537], // starting position [lng, lat]\n * zoom: 13, // starting zoom\n * style: 'mapbox://styles/mapbox/streets-v11', // style URL or style object\n * hash: true, // sync `center`, `zoom`, `pitch`, and `bearing` with URL\n * // Use `transformRequest` to modify requests that begin with `http://myHost`.\n * transformRequest: (url, resourceType) => {\n * if (resourceType === 'Source' && url.startsWith('http://myHost')) {\n * return {\n * url: url.replace('http', 'https'),\n * headers: {'my-custom-header': true},\n * credentials: 'include' // Include cookies for cross-origin requests\n * };\n * }\n * }\n * });\n * @see [Example: Display a map on a webpage](https://docs.mapbox.com/mapbox-gl-js/example/simple-map/)\n * @see [Example: Display a map with a custom style](https://docs.mapbox.com/mapbox-gl-js/example/custom-style-id/)\n * @see [Example: Check if Mapbox GL JS is supported](https://docs.mapbox.com/mapbox-gl-js/example/check-for-support/)\n */\nclass Map extends Camera {\n style: Style;\n painter: Painter;\n handlers: ?HandlerManager;\n\n _container: HTMLElement;\n _missingCSSCanary: HTMLElement;\n _canvasContainer: HTMLElement;\n _controlContainer: HTMLElement;\n _controlPositions: {[_: string]: HTMLElement};\n _interactive: ?boolean;\n _showTileBoundaries: ?boolean;\n _showTerrainWireframe: ?boolean;\n _showQueryGeometry: ?boolean;\n _showCollisionBoxes: ?boolean;\n _showPadding: ?boolean;\n _showOverdrawInspector: boolean;\n _repaint: ?boolean;\n _vertices: ?boolean;\n _canvas: HTMLCanvasElement;\n _minTileCacheSize: number;\n _maxTileCacheSize: number;\n _frame: ?Cancelable;\n _renderNextFrame: ?boolean;\n _styleDirty: ?boolean;\n _sourcesDirty: ?boolean;\n _placementDirty: ?boolean;\n _loaded: boolean;\n _fullyLoaded: boolean; // accounts for placement finishing as well\n _trackResize: boolean;\n _preserveDrawingBuffer: boolean;\n _failIfMajorPerformanceCaveat: boolean;\n _antialias: boolean;\n _refreshExpiredTiles: boolean;\n _hash: Hash;\n _delegatedListeners: any;\n _isInitialLoad: boolean;\n _shouldCheckAccess: boolean;\n _fadeDuration: number;\n _crossSourceCollisions: boolean;\n _crossFadingFactor: number;\n _collectResourceTiming: boolean;\n _optimizeForTerrain: boolean;\n _renderTaskQueue: TaskQueue;\n _domRenderTaskQueue: TaskQueue;\n _controls: Array<IControl>;\n _markers: Array<Marker>;\n _logoControl: IControl;\n _mapId: number;\n _localIdeographFontFamily: string;\n _localFontFamily: string;\n _requestManager: RequestManager;\n _locale: Object;\n _removed: boolean;\n _speedIndexTiming: boolean;\n _clickTolerance: number;\n _cooperativeGestures: boolean;\n _silenceAuthErrors: boolean;\n _averageElevationLastSampledAt: number;\n _averageElevationExaggeration: number;\n _averageElevation: EasedVariable;\n _containerWidth: number;\n _containerHeight: number;\n _language: ?string;\n _worldview: ?string;\n\n // `_explicitProjection represents projection as set by a call to map.setProjection()\n // For the actual projection displayed, use `transform.projection`.\n // (The two diverge above the transition zoom threshold in Globe view or when _explicitProjection === null\n // a null _explicitProjection indicates the map defaults to first the stylesheet projection if present, then Mercator)\n _explicitProjection: ProjectionSpecification | null;\n\n /** @section {Interaction handlers} */\n\n /**\n * The map's {@link ScrollZoomHandler}, which implements zooming in and out with a scroll wheel or trackpad.\n * Find more details and examples using `scrollZoom` in the {@link ScrollZoomHandler} section.\n */\n scrollZoom: ScrollZoomHandler;\n\n /**\n * The map's {@link BoxZoomHandler}, which implements zooming using a drag gesture with the Shift key pressed.\n * Find more details and examples using `boxZoom` in the {@link BoxZoomHandler} section.\n */\n boxZoom: BoxZoomHandler;\n\n /**\n * The map's {@link DragRotateHandler}, which implements rotating the map while dragging with the right\n * mouse button or with the Control key pressed. Find more details and examples using `dragRotate`\n * in the {@link DragRotateHandler} section.\n */\n dragRotate: DragRotateHandler;\n\n /**\n * The map's {@link DragPanHandler}, which implements dragging the map with a mouse or touch gesture.\n * Find more details and examples using `dragPan` in the {@link DragPanHandler} section.\n */\n dragPan: DragPanHandler;\n\n /**\n * The map's {@link KeyboardHandler}, which allows the user to zoom, rotate, and pan the map using keyboard\n * shortcuts. Find more details and examples using `keyboard` in the {@link KeyboardHandler} section.\n */\n keyboard: KeyboardHandler;\n\n /**\n * The map's {@link DoubleClickZoomHandler}, which allows the user to zoom by double clicking.\n * Find more details and examples using `doubleClickZoom` in the {@link DoubleClickZoomHandler} section.\n */\n doubleClickZoom: DoubleClickZoomHandler;\n\n /**\n * The map's {@link TouchZoomRotateHandler}, which allows the user to zoom or rotate the map with touch gestures.\n * Find more details and examples using `touchZoomRotate` in the {@link TouchZoomRotateHandler} section.\n */\n touchZoomRotate: TouchZoomRotateHandler;\n\n /**\n * The map's {@link TouchPitchHandler}, which allows the user to pitch the map with touch gestures.\n * Find more details and examples using `touchPitch` in the {@link TouchPitchHandler} section.\n */\n touchPitch: TouchPitchHandler;\n\n constructor(options: MapOptions) {\n PerformanceUtils.mark(PerformanceMarkers.create);\n\n options = extend({}, defaultOptions, options);\n\n if (options.minZoom != null && options.maxZoom != null && options.minZoom > options.maxZoom) {\n throw new Error(`maxZoom must be greater than or equal to minZoom`);\n }\n\n if (options.minPitch != null && options.maxPitch != null && options.minPitch > options.maxPitch) {\n throw new Error(`maxPitch must be greater than or equal to minPitch`);\n }\n\n if (options.minPitch != null && options.minPitch < defaultMinPitch) {\n throw new Error(`minPitch must be greater than or equal to ${defaultMinPitch}`);\n }\n\n if (options.maxPitch != null && options.maxPitch > defaultMaxPitch) {\n throw new Error(`maxPitch must be less than or equal to ${defaultMaxPitch}`);\n }\n\n // disable antialias with OS/iOS 15.4 and 15.5 due to rendering bug\n if (options.antialias && isSafariWithAntialiasingBug(window)) {\n options.antialias = false;\n warnOnce('Antialiasing is disabled for this WebGL context to avoid browser bug: https://github.com/mapbox/mapbox-gl-js/issues/11609');\n }\n\n const transform = new Transform(options.minZoom, options.maxZoom, options.minPitch, options.maxPitch, options.renderWorldCopies);\n super(transform, options);\n\n this._interactive = options.interactive;\n this._minTileCacheSize = options.minTileCacheSize;\n this._maxTileCacheSize = options.maxTileCacheSize;\n this._failIfMajorPerformanceCaveat = options.failIfMajorPerformanceCaveat;\n this._preserveDrawingBuffer = options.preserveDrawingBuffer;\n this._antialias = options.antialias;\n this._trackResize = options.trackResize;\n this._bearingSnap = options.bearingSnap;\n this._refreshExpiredTiles = options.refreshExpiredTiles;\n this._fadeDuration = options.fadeDuration;\n this._isInitialLoad = true;\n this._crossSourceCollisions = options.crossSourceCollisions;\n this._crossFadingFactor = 1;\n this._collectResourceTiming = options.collectResourceTiming;\n this._optimizeForTerrain = options.optimizeForTerrain;\n this._language = options.language === 'auto' ? window.navigator.language : options.language;\n this._worldview = options.worldview;\n this._renderTaskQueue = new TaskQueue();\n this._domRenderTaskQueue = new TaskQueue();\n this._controls = [];\n this._markers = [];\n this._mapId = uniqueId();\n this._locale = extend({}, defaultLocale, options.locale);\n this._clickTolerance = options.clickTolerance;\n this._cooperativeGestures = options.cooperativeGestures;\n this._containerWidth = 0;\n this._containerHeight = 0;\n\n this._averageElevationLastSampledAt = -Infinity;\n this._averageElevationExaggeration = 0;\n this._averageElevation = new EasedVariable(0);\n\n this._explicitProjection = null; // Fallback to stylesheet by default\n\n this._requestManager = new RequestManager(options.transformRequest, options.accessToken, options.testMode);\n this._silenceAuthErrors = !!options.testMode;\n\n if (typeof options.container === 'string') {\n this._container = window.document.getElementById(options.container);\n\n if (!this._container) {\n throw new Error(`Container '${options.container}' not found.`);\n }\n } else if (options.container instanceof window.HTMLElement) {\n this._container = options.container;\n } else {\n throw new Error(`Invalid type: 'container' must be a String or HTMLElement.`);\n }\n\n if (this._container.childNodes.length > 0) {\n warnOnce(`The map container element should be empty, otherwise the map's interactivity will be negatively impacted. If you want to display a message when WebGL is not supported, use the Mapbox GL Supported plugin instead.`);\n }\n\n if (options.maxBounds) {\n this.setMaxBounds(options.maxBounds);\n }\n\n bindAll([\n '_onWindowOnline',\n '_onWindowResize',\n '_onMapScroll',\n '_contextLost',\n '_contextRestored'\n ], this);\n\n this._setupContainer();\n this._setupPainter();\n if (this.painter === undefined) {\n throw new Error(`Failed to initialize WebGL.`);\n }\n\n this.on('move', () => this._update(false));\n this.on('moveend', () => this._update(false));\n this.on('zoom', () => this._update(true));\n\n if (typeof window !== 'undefined') {\n window.addEventListener('online', this._onWindowOnline, false);\n window.addEventListener('resize', this._onWindowResize, false);\n window.addEventListener('orientationchange', this._onWindowResize, false);\n window.addEventListener('webkitfullscreenchange', this._onWindowResize, false);\n }\n\n this.handlers = new HandlerManager(this, options);\n\n this._localFontFamily = options.localFontFamily;\n this._localIdeographFontFamily = options.localIdeographFontFamily;\n\n if (options.style) {\n this.setStyle(options.style, {localFontFamily: this._localFontFamily, localIdeographFontFamily: this._localIdeographFontFamily});\n }\n\n if (options.projection) {\n this.setProjection(options.projection);\n }\n\n const hashName = (typeof options.hash === 'string' && options.hash) || undefined;\n this._hash = options.hash && (new Hash(hashName)).addTo(this);\n // don't set position from options if set through hash\n if (!this._hash || !this._hash._onHashChange()) {\n this.jumpTo({\n center: options.center,\n zoom: options.zoom,\n bearing: options.bearing,\n pitch: options.pitch\n });\n\n if (options.bounds) {\n this.resize();\n this.fitBounds(options.bounds, extend({}, options.fitBoundsOptions, {duration: 0}));\n }\n }\n\n this.resize();\n\n if (options.attributionControl)\n this.addControl(new AttributionControl({customAttribution: options.customAttribution}));\n\n this._logoControl = new LogoControl();\n this.addControl(this._logoControl, options.logoPosition);\n\n this.on('style.load', () => {\n if (this.transform.unmodified) {\n this.jumpTo((this.style.stylesheet: any));\n }\n });\n this.on('data', (event: MapDataEvent) => {\n this._update(event.dataType === 'style');\n this.fire(new Event(`${event.dataType}data`, event));\n });\n this.on('dataloading', (event: MapDataEvent) => {\n this.fire(new Event(`${event.dataType}dataloading`, event));\n });\n }\n\n /*\n * Returns a unique number for this map instance which is used for the MapLoadEvent\n * to make sure we only fire one event per instantiated map object.\n * @private\n * @returns {number}\n */\n _getMapId(): number {\n return this._mapId;\n }\n\n /** @section {Controls} */\n\n /**\n * Adds an {@link IControl} to the map, calling `control.onAdd(this)`.\n *\n * @param {IControl} control The {@link IControl} to add.\n * @param {string} [position] Position on the map to which the control will be added.\n * Valid values are `'top-left'`, `'top-right'`, `'bottom-left'`, and `'bottom-right'`. Defaults to `'top-right'`.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Add zoom and rotation controls to the map.\n * map.addControl(new mapboxgl.NavigationControl());\n * @see [Example: Display map navigation controls](https://www.mapbox.com/mapbox-gl-js/example/navigation/)\n */\n addControl(control: IControl, position?: ControlPosition): this {\n if (position === undefined) {\n if (control.getDefaultPosition) {\n position = control.getDefaultPosition();\n } else {\n position = 'top-right';\n }\n }\n if (!control || !control.onAdd) {\n return this.fire(new ErrorEvent(new Error(\n 'Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.')));\n }\n const controlElement = control.onAdd(this);\n this._controls.push(control);\n\n const positionContainer = this._controlPositions[position];\n if (position.indexOf('bottom') !== -1) {\n positionContainer.insertBefore(controlElement, positionContainer.firstChild);\n } else {\n positionContainer.appendChild(controlElement);\n }\n return this;\n }\n\n /**\n * Removes the control from the map.\n *\n * @param {IControl} control The {@link IControl} to remove.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Define a new navigation control.\n * const navigation = new mapboxgl.NavigationControl();\n * // Add zoom and rotation controls to the map.\n * map.addControl(navigation);\n * // Remove zoom and rotation controls from the map.\n * map.removeControl(navigation);\n */\n removeControl(control: IControl): this {\n if (!control || !control.onRemove) {\n return this.fire(new ErrorEvent(new Error(\n 'Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.')));\n }\n const ci = this._controls.indexOf(control);\n if (ci > -1) this._controls.splice(ci, 1);\n control.onRemove(this);\n return this;\n }\n\n /**\n * Checks if a control is on the map.\n *\n * @param {IControl} control The {@link IControl} to check.\n * @returns {boolean} True if map contains control.\n * @example\n * // Define a new navigation control.\n * const navigation = new mapboxgl.NavigationControl();\n * // Add zoom and rotation controls to the map.\n * map.addControl(navigation);\n * // Check that the navigation control exists on the map.\n * const added = map.hasControl(navigation);\n * // added === true\n */\n hasControl(control: IControl): boolean {\n return this._controls.indexOf(control) > -1;\n }\n\n /**\n * Returns the map's containing HTML element.\n *\n * @returns {HTMLElement} The map's container.\n * @example\n * const container = map.getContainer();\n */\n getContainer(): HTMLElement {\n return this._container;\n }\n\n /**\n * Returns the HTML element containing the map's `<canvas>` element.\n *\n * If you want to add non-GL overlays to the map, you should append them to this element.\n *\n * This is the element to which event bindings for map interactivity (such as panning and zooming) are\n * attached. It will receive bubbled events from child elements such as the `<canvas>`, but not from\n * map controls.\n *\n * @returns {HTMLElement} The container of the map's `<canvas>`.\n * @example\n * const canvasContainer = map.getCanvasContainer();\n * @see [Example: Create a draggable point](https://www.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n * @see [Example: Highlight features within a bounding box](https://www.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n */\n getCanvasContainer(): HTMLElement {\n return this._canvasContainer;\n }\n\n /**\n * Returns the map's `<canvas>` element.\n *\n * @returns {HTMLCanvasElement} The map's `<canvas>` element.\n * @example\n * const canvas = map.getCanvas();\n * @see [Example: Measure distances](https://www.mapbox.com/mapbox-gl-js/example/measure/)\n * @see [Example: Display a popup on hover](https://www.mapbox.com/mapbox-gl-js/example/popup-on-hover/)\n * @see [Example: Center the map on a clicked symbol](https://www.mapbox.com/mapbox-gl-js/example/center-on-symbol/)\n */\n getCanvas(): HTMLCanvasElement {\n return this._canvas;\n }\n\n /** @section {Map constraints} */\n\n /**\n * Resizes the map according to the dimensions of its\n * `container` element.\n *\n * Checks if the map container size changed and updates the map if it has changed.\n * This method must be called after the map's `container` is resized programmatically\n * or when the map is shown after being initially hidden with CSS.\n *\n * @param {Object | null} eventData Additional properties to be passed to `movestart`, `move`, `resize`, and `moveend`\n * events that get triggered as a result of resize. This can be useful for differentiating the\n * source of an event (for example, user-initiated or programmatically-triggered events).\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Resize the map when the map container is shown\n * // after being initially hidden with CSS.\n * const mapDiv = document.getElementById('map');\n * if (mapDiv.style.visibility === true) map.resize();\n */\n resize(eventData?: Object): this {\n this._updateContainerDimensions();\n\n // do nothing if container remained the same size\n if (this._containerWidth === this.transform.width && this._containerHeight === this.transform.height) return this;\n\n this._resizeCanvas(this._containerWidth, this._containerHeight);\n\n this.transform.resize(this._containerWidth, this._containerHeight);\n this.painter.resize(Math.ceil(this._containerWidth), Math.ceil(this._containerHeight));\n\n const fireMoving = !this._moving;\n if (fireMoving) {\n this.fire(new Event('movestart', eventData))\n .fire(new Event('move', eventData));\n }\n\n this.fire(new Event('resize', eventData));\n\n if (fireMoving) this.fire(new Event('moveend', eventData));\n\n return this;\n }\n\n /**\n * Returns the map's geographical bounds. When the bearing or pitch is non-zero, the visible region is not\n * an axis-aligned rectangle, and the result is the smallest bounds that encompasses the visible region.\n * If a padding is set on the map, the bounds returned are for the inset.\n * This function isn't supported with globe projection.\n *\n * @returns {LngLatBounds} The geographical bounds of the map as {@link LngLatBounds}.\n * @example\n * const bounds = map.getBounds();\n */\n getBounds(): LngLatBounds | null {\n if (this.transform.projection.name === 'globe') {\n warnOnce('Globe projection does not support getBounds API, this API may behave unexpectedly.\"');\n }\n return this.transform.getBounds();\n }\n\n /**\n * Returns the maximum geographical bounds the map is constrained to, or `null` if none set.\n *\n * @returns {Map} The map object.\n *\n * @example\n * const maxBounds = map.getMaxBounds();\n */\n getMaxBounds(): LngLatBounds | null {\n return this.transform.getMaxBounds() || null;\n }\n\n /**\n * Sets or clears the map's geographical bounds.\n *\n * Pan and zoom operations are constrained within these bounds.\n * If a pan or zoom is performed that would\n * display regions outside these bounds, the map will\n * instead display a position and zoom level\n * as close as possible to the operation's request while still\n * remaining within the bounds.\n *\n * @param {LngLatBoundsLike | null | undefined} bounds The maximum bounds to set. If `null` or `undefined` is provided, the function removes the map's maximum bounds.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Define bounds that conform to the `LngLatBoundsLike` object.\n * const bounds = [\n * [-74.04728, 40.68392], // [west, south]\n * [-73.91058, 40.87764] // [east, north]\n * ];\n * // Set the map's max bounds.\n * map.setMaxBounds(bounds);\n */\n setMaxBounds(bounds: LngLatBoundsLike): this {\n this.transform.setMaxBounds(LngLatBounds.convert(bounds));\n return this._update();\n }\n\n /**\n * Sets or clears the map's minimum zoom level.\n * If the map's current zoom level is lower than the new minimum,\n * the map will zoom to the new minimum.\n *\n * It is not always possible to zoom out and reach the set `minZoom`.\n * Other factors such as map height may restrict zooming. For example,\n * if the map is 512px tall it will not be possible to zoom below zoom 0\n * no matter what the `minZoom` is set to.\n *\n * @param {number | null | undefined} minZoom The minimum zoom level to set (-2 - 24).\n * If `null` or `undefined` is provided, the function removes the current minimum zoom and it will be reset to -2.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setMinZoom(12.25);\n */\n setMinZoom(minZoom?: ?number): this {\n\n minZoom = minZoom === null || minZoom === undefined ? defaultMinZoom : minZoom;\n\n if (minZoom >= defaultMinZoom && minZoom <= this.transform.maxZoom) {\n this.transform.minZoom = minZoom;\n this._update();\n\n if (this.getZoom() < minZoom) {\n this.setZoom(minZoom);\n } else {\n this.fire(new Event('zoomstart'))\n .fire(new Event('zoom'))\n .fire(new Event('zoomend'));\n }\n\n return this;\n\n } else throw new Error(`minZoom must be between ${defaultMinZoom} and the current maxZoom, inclusive`);\n }\n\n /**\n * Returns the map's minimum allowable zoom level.\n *\n * @returns {number} Returns `minZoom`.\n * @example\n * const minZoom = map.getMinZoom();\n */\n getMinZoom(): number { return this.transform.minZoom; }\n\n /**\n * Sets or clears the map's maximum zoom level.\n * If the map's current zoom level is higher than the new maximum,\n * the map will zoom to the new maximum.\n *\n * @param {number | null | undefined} maxZoom The maximum zoom level to set.\n * If `null` or `undefined` is provided, the function removes the current maximum zoom (sets it to 22).\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setMaxZoom(18.75);\n */\n setMaxZoom(maxZoom?: ?number): this {\n\n maxZoom = maxZoom === null || maxZoom === undefined ? defaultMaxZoom : maxZoom;\n\n if (maxZoom >= this.transform.minZoom) {\n this.transform.maxZoom = maxZoom;\n this._update();\n\n if (this.getZoom() > maxZoom) {\n this.setZoom(maxZoom);\n } else {\n this.fire(new Event('zoomstart'))\n .fire(new Event('zoom'))\n .fire(new Event('zoomend'));\n }\n\n return this;\n\n } else throw new Error(`maxZoom must be greater than the current minZoom`);\n }\n\n /**\n * Returns the map's maximum allowable zoom level.\n *\n * @returns {number} Returns `maxZoom`.\n * @example\n * const maxZoom = map.getMaxZoom();\n */\n getMaxZoom(): number { return this.transform.maxZoom; }\n\n /**\n * Sets or clears the map's minimum pitch.\n * If the map's current pitch is lower than the new minimum,\n * the map will pitch to the new minimum.\n *\n * @param {number | null | undefined} minPitch The minimum pitch to set (0-85). If `null` or `undefined` is provided, the function removes the current minimum pitch and resets it to 0.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setMinPitch(5);\n */\n setMinPitch(minPitch?: ?number): this {\n\n minPitch = minPitch === null || minPitch === undefined ? defaultMinPitch : minPitch;\n\n if (minPitch < defaultMinPitch) {\n throw new Error(`minPitch must be greater than or equal to ${defaultMinPitch}`);\n }\n\n if (minPitch >= defaultMinPitch && minPitch <= this.transform.maxPitch) {\n this.transform.minPitch = minPitch;\n this._update();\n\n if (this.getPitch() < minPitch) {\n this.setPitch(minPitch);\n } else {\n this.fire(new Event('pitchstart'))\n .fire(new Event('pitch'))\n .fire(new Event('pitchend'));\n }\n\n return this;\n\n } else throw new Error(`minPitch must be between ${defaultMinPitch} and the current maxPitch, inclusive`);\n }\n\n /**\n * Returns the map's minimum allowable pitch.\n *\n * @returns {number} Returns `minPitch`.\n * @example\n * const minPitch = map.getMinPitch();\n */\n getMinPitch(): number { return this.transform.minPitch; }\n\n /**\n * Sets or clears the map's maximum pitch.\n * If the map's current pitch is higher than the new maximum,\n * the map will pitch to the new maximum.\n *\n * @param {number | null | undefined} maxPitch The maximum pitch to set.\n * If `null` or `undefined` is provided, the function removes the current maximum pitch (sets it to 85).\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setMaxPitch(70);\n */\n setMaxPitch(maxPitch?: ?number): this {\n\n maxPitch = maxPitch === null || maxPitch === undefined ? defaultMaxPitch : maxPitch;\n\n if (maxPitch > defaultMaxPitch) {\n throw new Error(`maxPitch must be less than or equal to ${defaultMaxPitch}`);\n }\n\n if (maxPitch >= this.transform.minPitch) {\n this.transform.maxPitch = maxPitch;\n this._update();\n\n if (this.getPitch() > maxPitch) {\n this.setPitch(maxPitch);\n } else {\n this.fire(new Event('pitchstart'))\n .fire(new Event('pitch'))\n .fire(new Event('pitchend'));\n }\n\n return this;\n\n } else throw new Error(`maxPitch must be greater than or equal to minPitch`);\n }\n\n /**\n * Returns the map's maximum allowable pitch.\n *\n * @returns {number} Returns `maxPitch`.\n * @example\n * const maxPitch = map.getMaxPitch();\n */\n getMaxPitch(): number { return this.transform.maxPitch; }\n\n /**\n * Returns the state of `renderWorldCopies`. If `true`, multiple copies of the world will be rendered side by side beyond -180 and 180 degrees longitude. If set to `false`:\n * - When the map is zoomed out far enough that a single representation of the world does not fill the map's entire\n * container, there will be blank space beyond 180 and -180 degrees longitude.\n * - Features that cross 180 and -180 degrees longitude will be cut in two (with one portion on the right edge of the\n * map and the other on the left edge of the map) at every zoom level.\n *\n * @returns {boolean} Returns `renderWorldCopies` boolean.\n * @example\n * const worldCopiesRendered = map.getRenderWorldCopies();\n * @see [Example: Render world copies](https://docs.mapbox.com/mapbox-gl-js/example/render-world-copies/)\n */\n getRenderWorldCopies(): boolean { return this.transform.renderWorldCopies; }\n\n /**\n * Sets the state of `renderWorldCopies`.\n *\n * @param {boolean} renderWorldCopies If `true`, multiple copies of the world will be rendered side by side beyond -180 and 180 degrees longitude. If set to `false`:\n * - When the map is zoomed out far enough that a single representation of the world does not fill the map's entire\n * container, there will be blank space beyond 180 and -180 degrees longitude.\n * - Features that cross 180 and -180 degrees longitude will be cut in two (with one portion on the right edge of the\n * map and the other on the left edge of the map) at every zoom level.\n *\n * `undefined` is treated as `true`, `null` is treated as `false`.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setRenderWorldCopies(true);\n * @see [Example: Render world copies](https://docs.mapbox.com/mapbox-gl-js/example/render-world-copies/)\n */\n setRenderWorldCopies(renderWorldCopies?: ?boolean): this {\n this.transform.renderWorldCopies = renderWorldCopies;\n return this._update();\n }\n\n /**\n * Returns the code for the map's language which is used for translating map labels.\n *\n * @private\n * @returns {string} Returns the map's language code.\n * @example\n * const language = map.getLanguage();\n */\n getLanguage(): ?string {\n return this._language;\n }\n\n /**\n * Sets the map's language.\n *\n * @private\n * @param {string} language A string representing the desired language. `undefined` or `null` will remove the current map language and reset the map to the default language as determined by `window.navigator.language`.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setLanguage('es');\n *\n * @example\n * map.setLanguage('auto');\n */\n setLanguage(language?: ?string): this {\n this._language = language === 'auto' ? window.navigator.language : language;\n\n if (this.style) {\n for (const id in this.style._sourceCaches) {\n const source = this.style._sourceCaches[id]._source;\n if (source._setLanguage) {\n source._setLanguage(this._language);\n }\n }\n }\n\n for (const control of this._controls) {\n if (control._setLanguage) {\n control._setLanguage(this._language);\n }\n }\n\n return this;\n }\n\n /**\n * Returns the code for the map's worldview.\n *\n * @private\n * @returns {string} Returns the map's worldview code.\n * @example\n * const worldview = map.getWorldview();\n */\n getWorldview(): ?string {\n return this._worldview;\n }\n\n /**\n * Sets the map's worldview.\n *\n * @private\n * @param {string} worldview A string representing the desired worldview. `undefined` or `null` will cause the map to fall back to the TileJSON's default worldview.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setWorldView('JP');\n */\n setWorldview(worldview?: ?string): this {\n this._worldview = worldview;\n if (this.style) {\n for (const id in this.style._sourceCaches) {\n const source = this.style._sourceCaches[id]._source;\n if (source._setWorldview) {\n source._setWorldview(worldview);\n }\n }\n }\n return this;\n }\n\n /** @section {Point conversion} */\n\n /**\n * Returns a [projection](https://docs.mapbox.com/mapbox-gl-js/style-spec/projection/) object that defines the current map projection.\n *\n * @returns {ProjectionSpecification} The [projection](https://docs.mapbox.com/mapbox-gl-js/style-spec/projection/) defining the current map projection.\n * @example\n * const projection = map.getProjection();\n */\n getProjection(): ProjectionSpecification {\n if (this._explicitProjection) {\n return this._explicitProjection;\n }\n if (this.style && this.style.stylesheet && this.style.stylesheet.projection) {\n return this.style.stylesheet.projection;\n }\n return {name: \"mercator\", center:[0, 0]};\n }\n\n /**\n * Returns true if map [projection](https://docs.mapbox.com/mapbox-gl-js/style-spec/projection/) has been set to globe AND the map is at a low enough zoom level that globe view is enabled.\n * @private\n * @returns {boolean} Returns `globe-is-active` boolean.\n * @example\n * if (map._usingGlobe()) {\n * // do globe things here\n * }\n */\n _usingGlobe(): boolean { return this.transform.projection.name === 'globe'; }\n\n /**\n * Sets the map's projection. If called with `null` or `undefined`, the map will reset to Mercator.\n *\n * @param {ProjectionSpecification | string | null | undefined} projection The projection that the map should be rendered in.\n * This can be a [projection](https://docs.mapbox.com/mapbox-gl-js/style-spec/projection/) object or a string of the projection's name.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setProjection('albers');\n * map.setProjection({\n * name: 'albers',\n * center: [35, 55],\n * parallels: [20, 60]\n * });\n * @see [Example: Display a web map using an alternate projection](https://docs.mapbox.com/mapbox-gl-js/example/map-projection/)\n * @see [Example: Use different map projections for web maps](https://docs.mapbox.com/mapbox-gl-js/example/projections/)\n */\n setProjection(projection?: ?ProjectionSpecification | string): this {\n this._lazyInitEmptyStyle();\n if (!projection) {\n projection = null;\n } else if (typeof projection === 'string') {\n projection = (({name: projection}: any): ProjectionSpecification);\n }\n return this._updateProjection(projection);\n }\n\n _updateProjection(explicitProjection?: ProjectionSpecification | null): this {\n const prevProjection = this.getProjection();\n if (explicitProjection === null) {\n this._explicitProjection = null;\n }\n const projection = explicitProjection || this.getProjection();\n\n let projectionHasChanged;\n // At high zoom on globe, set transform projection to Mercator while _explicitProjection stays globe.\n if (projection && projection.name === 'globe' && this.transform.zoom >= GLOBE_ZOOM_THRESHOLD_MAX) {\n projectionHasChanged = this.transform.setProjection({name: 'mercator'});\n this.transform.mercatorFromTransition = true;\n } else {\n projectionHasChanged = this.transform.setProjection(projection);\n this.transform.mercatorFromTransition = false;\n }\n\n // When called through setProjection, update _explicitProjection\n if (explicitProjection) {\n this._explicitProjection = (explicitProjection.name === \"globe\" ?\n {name:'globe', center:[0, 0]} :\n this.transform.getProjection());\n }\n\n this.style.applyProjectionUpdate();\n\n if (projectionHasChanged) {\n // If a zoom transition on globe\n if (prevProjection.name === 'globe' && this.getProjection().name === 'globe') {\n this.style._forceSymbolLayerUpdate();\n } else {\n // If a switch between different projections\n this.painter.clearBackgroundTiles();\n for (const id in this.style._sourceCaches) {\n this.style._sourceCaches[id].clearTiles();\n }\n }\n this._update(true);\n }\n\n return this;\n }\n\n /**\n * Returns a {@link Point} representing pixel coordinates, relative to the map's `container`,\n * that correspond to the specified geographical location.\n *\n * When the map is pitched and `lnglat` is completely behind the camera, there are no pixel\n * coordinates corresponding to that location. In that case,\n * the `x` and `y` components of the returned {@link Point} are set to Number.MAX_VALUE.\n *\n * @param {LngLatLike} lnglat The geographical location to project.\n * @returns {Point} The {@link Point} corresponding to `lnglat`, relative to the map's `container`.\n * @example\n * const coordinate = [-122.420679, 37.772537];\n * const point = map.project(coordinate);\n */\n project(lnglat: LngLatLike): Point {\n return this.transform.locationPoint3D(LngLat.convert(lnglat));\n }\n\n /**\n * Returns a {@link LngLat} representing geographical coordinates that correspond\n * to the specified pixel coordinates. If horizon is visible, and specified pixel is\n * above horizon, returns a {@link LngLat} corresponding to point on horizon, nearest\n * to the point.\n *\n * @param {PointLike} point The pixel coordinates to unproject.\n * @returns {LngLat} The {@link LngLat} corresponding to `point`.\n * @example\n * map.on('click', (e) => {\n * // When the map is clicked, get the geographic coordinate.\n * const coordinate = map.unproject(e.point);\n * });\n */\n unproject(point: PointLike): LngLat {\n return this.transform.pointLocation3D(Point.convert(point));\n }\n\n /** @section {Movement state} */\n\n /**\n * Returns true if the map is panning, zooming, rotating, or pitching due to a camera animation or user gesture.\n *\n * @returns {boolean} True if the map is moving.\n * @example\n * const isMoving = map.isMoving();\n */\n isMoving(): boolean {\n return this._moving || (this.handlers && this.handlers.isMoving()) || false;\n }\n\n /**\n * Returns true if the map is zooming due to a camera animation or user gesture.\n *\n * @returns {boolean} True if the map is zooming.\n * @example\n * const isZooming = map.isZooming();\n */\n isZooming(): boolean {\n return this._zooming || (this.handlers && this.handlers.isZooming()) || false;\n }\n\n /**\n * Returns true if the map is rotating due to a camera animation or user gesture.\n *\n * @returns {boolean} True if the map is rotating.\n * @example\n * map.isRotating();\n */\n isRotating(): boolean {\n return this._rotating || (this.handlers && this.handlers.isRotating()) || false;\n }\n\n _createDelegatedListener(type: MapEvent, layers: Array<any>, listener: any): any {\n if (type === 'mouseenter' || type === 'mouseover') {\n let mousein = false;\n const mousemove = (e) => {\n const filteredLayers = layers.filter(layerId => this.getLayer(layerId));\n const features = filteredLayers.length ? this.queryRenderedFeatures(e.point, {layers: filteredLayers}) : [];\n if (!features.length) {\n mousein = false;\n } else if (!mousein) {\n mousein = true;\n listener.call(this, new MapMouseEvent(type, this, e.originalEvent, {features}));\n }\n };\n const mouseout = () => {\n mousein = false;\n };\n\n return {layers: new Set(layers), listener, delegates: {mousemove, mouseout}};\n } else if (type === 'mouseleave' || type === 'mouseout') {\n let mousein = false;\n const mousemove = (e) => {\n const filteredLayers = layers.filter(layerId => this.getLayer(layerId));\n const features = filteredLayers.length ? this.queryRenderedFeatures(e.point, {layers: filteredLayers}) : [];\n if (features.length) {\n mousein = true;\n } else if (mousein) {\n mousein = false;\n listener.call(this, new MapMouseEvent(type, this, e.originalEvent));\n }\n };\n const mouseout = (e) => {\n if (mousein) {\n mousein = false;\n listener.call(this, new MapMouseEvent(type, this, e.originalEvent));\n }\n };\n\n return {layers: new Set(layers), listener, delegates: {mousemove, mouseout}};\n } else {\n const delegate = (e) => {\n const filteredLayers = layers.filter(layerId => this.getLayer(layerId));\n const features = filteredLayers.length ? this.queryRenderedFeatures(e.point, {layers: filteredLayers}) : [];\n if (features.length) {\n // Here we need to mutate the original event, so that preventDefault works as expected.\n e.features = features;\n listener.call(this, e);\n delete e.features;\n }\n };\n\n return {layers: new Set(layers), listener, delegates: {[(type: string)]: delegate}};\n }\n }\n\n /** @section {Working with events} */\n\n /**\n * Adds a listener for events of a specified type,\n * optionally limited to features in a specified style layer.\n *\n * @param {string} type The event type to listen for. Events compatible with the optional `layerId` parameter are triggered\n * when the cursor enters a visible portion of the specified layer from outside that layer or outside the map canvas.\n *\n * | Event | Compatible with `layerId` |\n * |-----------------------------------------------------------|---------------------------|\n * | [`mousedown`](#map.event:mousedown) | yes |\n * | [`mouseup`](#map.event:mouseup) | yes |\n * | [`mouseover`](#map.event:mouseover) | yes |\n * | [`mouseout`](#map.event:mouseout) | yes |\n * | [`mousemove`](#map.event:mousemove) | yes |\n * | [`mouseenter`](#map.event:mouseenter) | yes (required) |\n * | [`mouseleave`](#map.event:mouseleave) | yes (required) |\n * | [`preclick`](#map.event:preclick) | |\n * | [`click`](#map.event:click) | yes |\n * | [`dblclick`](#map.event:dblclick) | yes |\n * | [`contextmenu`](#map.event:contextmenu) | yes |\n * | [`touchstart`](#map.event:touchstart) | yes |\n * | [`touchend`](#map.event:touchend) | yes |\n * | [`touchcancel`](#map.event:touchcancel) | yes |\n * | [`wheel`](#map.event:wheel) | |\n * | [`resize`](#map.event:resize) | |\n * | [`remove`](#map.event:remove) | |\n * | [`touchmove`](#map.event:touchmove) | |\n * | [`movestart`](#map.event:movestart) | |\n * | [`move`](#map.event:move) | |\n * | [`moveend`](#map.event:moveend) | |\n * | [`dragstart`](#map.event:dragstart) | |\n * | [`drag`](#map.event:drag) | |\n * | [`dragend`](#map.event:dragend) | |\n * | [`zoomstart`](#map.event:zoomstart) | |\n * | [`zoom`](#map.event:zoom) | |\n * | [`zoomend`](#map.event:zoomend) | |\n * | [`rotatestart`](#map.event:rotatestart) | |\n * | [`rotate`](#map.event:rotate) | |\n * | [`rotateend`](#map.event:rotateend) | |\n * | [`pitchstart`](#map.event:pitchstart) | |\n * | [`pitch`](#map.event:pitch) | |\n * | [`pitchend`](#map.event:pitchend) | |\n * | [`boxzoomstart`](#map.event:boxzoomstart) | |\n * | [`boxzoomend`](#map.event:boxzoomend) | |\n * | [`boxzoomcancel`](#map.event:boxzoomcancel) | |\n * | [`webglcontextlost`](#map.event:webglcontextlost) | |\n * | [`webglcontextrestored`](#map.event:webglcontextrestored) | |\n * | [`load`](#map.event:load) | |\n * | [`render`](#map.event:render) | |\n * | [`idle`](#map.event:idle) | |\n * | [`error`](#map.event:error) | |\n * | [`data`](#map.event:data) | |\n * | [`styledata`](#map.event:styledata) | |\n * | [`sourcedata`](#map.event:sourcedata) | |\n * | [`dataloading`](#map.event:dataloading) | |\n * | [`styledataloading`](#map.event:styledataloading) | |\n * | [`sourcedataloading`](#map.event:sourcedataloading) | |\n * | [`styleimagemissing`](#map.event:styleimagemissing) | |\n *\n * @param {string | Array<string>} layerIds (optional) The ID(s) of a style layer(s). If you provide a `layerId`,\n * the listener will be triggered only if its location is within a visible feature in these layers,\n * and the event will have a `features` property containing an array of the matching features.\n * If you do not provide `layerIds`, the listener will be triggered by a corresponding event\n * happening anywhere on the map, and the event will not have a `features` property.\n * Note that many event types are not compatible with the optional `layerIds` parameter.\n * @param {Function} listener The function to be called when the event is fired.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Set an event listener that will fire\n * // when the map has finished loading.\n * map.on('load', () => {\n * // Add a new layer.\n * map.addLayer({\n * id: 'points-of-interest',\n * source: {\n * type: 'vector',\n * url: 'mapbox://mapbox.mapbox-streets-v8'\n * },\n * 'source-layer': 'poi_label',\n * type: 'circle',\n * paint: {\n * // Mapbox Style Specification paint properties\n * },\n * layout: {\n * // Mapbox Style Specification layout properties\n * }\n * });\n * });\n * @example\n * // Set an event listener that will fire\n * // when a feature on the countries layer of the map is clicked.\n * map.on('click', 'countries', (e) => {\n * new mapboxgl.Popup()\n * .setLngLat(e.lngLat)\n * .setHTML(`Country name: ${e.features[0].properties.name}`)\n * .addTo(map);\n * });\n * @example\n * // Set an event listener that will fire\n * // when a feature on the countries or background layers of the map is clicked.\n * map.on('click', ['countries', 'background'], (e) => {\n * new mapboxgl.Popup()\n * .setLngLat(e.lngLat)\n * .setHTML(`Country name: ${e.features[0].properties.name}`)\n * .addTo(map);\n * });\n * @see [Example: Add 3D terrain to a map](https://docs.mapbox.com/mapbox-gl-js/example/add-terrain/)\n * @see [Example: Center the map on a clicked symbol](https://docs.mapbox.com/mapbox-gl-js/example/center-on-symbol/)\n * @see [Example: Create a draggable marker](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n * @see [Example: Create a hover effect](https://docs.mapbox.com/mapbox-gl-js/example/hover-styles/)\n * @see [Example: Display popup on click](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-click/)\n */\n on(type: MapEvent, layerIds: any, listener: any): this {\n if (listener === undefined) {\n return super.on(type, layerIds);\n }\n\n if (!Array.isArray(layerIds)) {\n layerIds = [layerIds];\n }\n const delegatedListener = this._createDelegatedListener(type, layerIds, listener);\n\n this._delegatedListeners = this._delegatedListeners || {};\n this._delegatedListeners[type] = this._delegatedListeners[type] || [];\n this._delegatedListeners[type].push(delegatedListener);\n\n for (const event in delegatedListener.delegates) {\n this.on((event: any), delegatedListener.delegates[event]);\n }\n\n return this;\n }\n\n /**\n * Adds a listener that will be called only once to a specified event type,\n * optionally limited to events occurring on features in a specified style layer.\n *\n * @param {string} type The event type to listen for; one of `'mousedown'`, `'mouseup'`, `'preclick'`, `'click'`, `'dblclick'`,\n * `'mousemove'`, `'mouseenter'`, `'mouseleave'`, `'mouseover'`, `'mouseout'`, `'contextmenu'`, `'touchstart'`,\n * `'touchend'`, or `'touchcancel'`. `mouseenter` and `mouseover` events are triggered when the cursor enters\n * a visible portion of the specified layer from outside that layer or outside the map canvas. `mouseleave`\n * and `mouseout` events are triggered when the cursor leaves a visible portion of the specified layer, or leaves\n * the map canvas.\n * @param {string | Array<string>} layerIds (optional) The ID(s) of a style layer(s). If you provide `layerIds`,\n * the listener will be triggered only if its location is within a visible feature in these layers,\n * and the event will have a `features` property containing an array of the matching features.\n * If you do not provide `layerIds`, the listener will be triggered by a corresponding event\n * happening anywhere on the map, and the event will not have a `features` property.\n * Note that many event types are not compatible with the optional `layerIds` parameter.\n * @param {Function} listener The function to be called when the event is fired.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Log the coordinates of a user's first map touch.\n * map.once('touchstart', (e) => {\n * console.log(`The first map touch was at: ${e.lnglat}`);\n * });\n * @example\n * // Log the coordinates of a user's first map touch\n * // on a specific layer.\n * map.once('touchstart', 'my-point-layer', (e) => {\n * console.log(`The first map touch on the point layer was at: ${e.lnglat}`);\n * });\n * @example\n * // Log the coordinates of a user's first map touch\n * // on specific layers.\n * map.once('touchstart', ['my-point-layer', 'my-point-layer-2'], (e) => {\n * console.log(`The first map touch on the point layer was at: ${e.lnglat}`);\n * });\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n * @see [Example: Animate the camera around a point with 3D terrain](https://docs.mapbox.com/mapbox-gl-js/example/free-camera-point/)\n * @see [Example: Play map locations as a slideshow](https://docs.mapbox.com/mapbox-gl-js/example/playback-locations/)\n */\n once(type: MapEvent, layerIds: any, listener: any): this | Promise<Event> {\n\n if (listener === undefined) {\n return super.once(type, layerIds);\n }\n\n if (!Array.isArray(layerIds)) {\n layerIds = [layerIds];\n }\n const delegatedListener = this._createDelegatedListener(type, layerIds, listener);\n\n for (const event in delegatedListener.delegates) {\n this.once((event: any), delegatedListener.delegates[event]);\n }\n\n return this;\n }\n\n /**\n * Removes an event listener previously added with {@link Map#on},\n * optionally limited to layer-specific events.\n *\n * @param {string} type The event type previously used to install the listener.\n * @param {string | Array<string>} layerIds (optional) The layer ID(s) previously used to install the listener.\n * @param {Function} listener The function previously installed as a listener.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * // Create a function to print coordinates while a mouse is moving.\n * function onMove(e) {\n * console.log(`The mouse is moving: ${e.lngLat}`);\n * }\n * // Create a function to unbind the `mousemove` event.\n * function onUp(e) {\n * console.log(`The final coordinates are: ${e.lngLat}`);\n * map.off('mousemove', onMove);\n * }\n * // When a click occurs, bind both functions to mouse events.\n * map.on('mousedown', (e) => {\n * map.on('mousemove', onMove);\n * map.once('mouseup', onUp);\n * });\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\n off(type: MapEvent, layerIds: any, listener: any): this {\n if (listener === undefined) {\n return super.off(type, layerIds);\n }\n\n layerIds = new Set(Array.isArray(layerIds) ? layerIds : [layerIds]);\n const areLayerArraysEqual = (hash1, hash2) => {\n if (hash1.size !== hash2.size) {\n return false; // at-least 1 arr has duplicate value(s)\n }\n\n // comparing values\n for (const value of hash1) {\n if (!hash2.has(value)) return false;\n }\n return true;\n };\n\n const removeDelegatedListeners = (listeners: Array<any>) => {\n for (let i = 0; i < listeners.length; i++) {\n const delegatedListener = listeners[i];\n if (delegatedListener.listener === listener && areLayerArraysEqual(delegatedListener.layers, layerIds)) {\n for (const event in delegatedListener.delegates) {\n this.off((event: any), delegatedListener.delegates[event]);\n }\n listeners.splice(i, 1);\n return this;\n }\n }\n };\n\n const delegatedListeners = this._delegatedListeners ? this._delegatedListeners[type] : undefined;\n if (delegatedListeners) {\n removeDelegatedListeners(delegatedListeners);\n }\n\n return this;\n }\n\n /** @section {Querying features} */\n\n /**\n * Returns an array of [GeoJSON](http://geojson.org/)\n * [Feature objects](https://tools.ietf.org/html/rfc7946#section-3.2)\n * representing visible features that satisfy the query parameters.\n *\n * @param {PointLike|Array<PointLike>} [geometry] - The geometry of the query region in pixels:\n * either a single point or bottom left and top right points describing a bounding box, where the origin is at the top left.\n * Omitting this parameter (by calling {@link Map#queryRenderedFeatures} with zero arguments,\n * or with only an `options` argument) is equivalent to passing a bounding box encompassing the entire\n * map viewport.\n * Only values within the existing viewport are supported.\n * @param {Object} [options] Options object.\n * @param {Array<string>} [options.layers] An array of [style layer IDs](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layer-id) for the query to inspect.\n * Only features within these layers will be returned. If this parameter is undefined, all layers will be checked.\n * @param {Array} [options.filter] A [filter](https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#filter)\n * to limit query results.\n * @param {boolean} [options.validate=true] Whether to check if the [options.filter] conforms to the Mapbox GL Style Specification. Disabling validation is a performance optimization that should only be used if you have previously validated the values you will be passing to this function.\n *\n * @returns {Array<Object>} An array of [GeoJSON](http://geojson.org/)\n * [feature objects](https://tools.ietf.org/html/rfc7946#section-3.2).\n *\n * The `properties` value of each returned feature object contains the properties of its source feature. For GeoJSON sources, only\n * string and numeric property values are supported. `null`, `Array`, and `Object` values are not supported.\n *\n * Each feature includes top-level `layer`, `source`, and `sourceLayer` properties. The `layer` property is an object\n * representing the style layer to which the feature belongs. Layout and paint properties in this object contain values\n * which are fully evaluated for the given zoom level and feature.\n *\n * Only features that are currently rendered are included. Some features will **not** be included, like:\n *\n * - Features from layers whose `visibility` property is `\"none\"`.\n * - Features from layers whose zoom range excludes the current zoom level.\n * - Symbol features that have been hidden due to text or icon collision.\n *\n * Features from all other layers are included, including features that may have no visible\n * contribution to the rendered result; for example, because the layer's opacity or color alpha component is set to\n * 0.\n *\n * The topmost rendered feature appears first in the returned array, and subsequent features are sorted by\n * descending z-order. Features that are rendered multiple times (due to wrapping across the antimeridian at low\n * zoom levels) are returned only once (though subject to the following caveat).\n *\n * Because features come from tiled vector data or GeoJSON data that is converted to tiles internally, feature\n * geometries may be split or duplicated across tile boundaries and, as a result, features may appear multiple\n * times in query results. For example, suppose there is a highway running through the bounding rectangle of a query.\n * The results of the query will be those parts of the highway that lie within the map tiles covering the bounding\n * rectangle, even if the highway extends into other tiles, and the portion of the highway within each map tile\n * will be returned as a separate feature. Similarly, a point feature near a tile boundary may appear in multiple\n * tiles due to tile buffering.\n *\n * @example\n * // Find all features at a point\n * const features = map.queryRenderedFeatures(\n * [20, 35],\n * {layers: ['my-layer-name']}\n * );\n *\n * @example\n * // Find all features within a static bounding box\n * const features = map.queryRenderedFeatures(\n * [[10, 20], [30, 50]],\n * {layers: ['my-layer-name']}\n * );\n *\n * @example\n * // Find all features within a bounding box around a point\n * const width = 10;\n * const height = 20;\n * const features = map.queryRenderedFeatures([\n * [point.x - width / 2, point.y - height / 2],\n * [point.x + width / 2, point.y + height / 2]\n * ], {layers: ['my-layer-name']});\n *\n * @example\n * // Query all rendered features from a single layer\n * const features = map.queryRenderedFeatures({layers: ['my-layer-name']});\n * @see [Example: Get features under the mouse pointer](https://www.mapbox.com/mapbox-gl-js/example/queryrenderedfeatures/)\n * @see [Example: Highlight features within a bounding box](https://www.mapbox.com/mapbox-gl-js/example/using-box-queryrenderedfeatures/)\n * @see [Example: Filter features within map view](https://www.mapbox.com/mapbox-gl-js/example/filter-features-within-map-view/)\n */\n queryRenderedFeatures(geometry?: PointLike | [PointLike, PointLike], options?: Object): Array<QueryResult> {\n // The first parameter can be omitted entirely, making this effectively an overloaded method\n // with two signatures:\n //\n // queryRenderedFeatures(geometry: PointLike | [PointLike, PointLike], options?: Object)\n // queryRenderedFeatures(options?: Object)\n //\n // There no way to express that in a way that's compatible with both flow and documentation.js.\n // Related: https://github.com/facebook/flow/issues/1556\n\n if (!this.style) {\n return [];\n }\n\n if (options === undefined && geometry !== undefined && !(geometry instanceof Point) && !Array.isArray(geometry)) {\n options = (geometry: Object);\n geometry = undefined;\n }\n\n options = options || {};\n geometry = geometry || [[0, 0], [this.transform.width, this.transform.height]];\n\n return this.style.queryRenderedFeatures(geometry, options, this.transform);\n }\n\n /**\n * Returns an array of [GeoJSON](http://geojson.org/)\n * [Feature objects](https://tools.ietf.org/html/rfc7946#section-3.2)\n * representing features within the specified vector tile or GeoJSON source that satisfy the query parameters.\n *\n * @param {string} sourceId The ID of the vector tile or GeoJSON source to query.\n * @param {Object} [parameters] Options object.\n * @param {string} [parameters.sourceLayer] The name of the [source layer](https://docs.mapbox.com/help/glossary/source-layer/)\n * to query. *For vector tile sources, this parameter is required.* For GeoJSON sources, it is ignored.\n * @param {Array} [parameters.filter] A [filter](https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#filter)\n * to limit query results.\n * @param {boolean} [parameters.validate=true] Whether to check if the [parameters.filter] conforms to the Mapbox GL Style Specification. Disabling validation is a performance optimization that should only be used if you have previously validated the values you will be passing to this function.\n *\n * @returns {Array<Object>} An array of [GeoJSON](http://geojson.org/)\n * [Feature objects](https://tools.ietf.org/html/rfc7946#section-3.2).\n *\n * In contrast to {@link Map#queryRenderedFeatures}, this function returns all features matching the query parameters,\n * whether or not they are rendered by the current style (in other words, are visible). The domain of the query includes all currently-loaded\n * vector tiles and GeoJSON source tiles: this function does not check tiles outside the currently\n * visible viewport.\n *\n * Because features come from tiled vector data or GeoJSON data that is converted to tiles internally, feature\n * geometries may be split or duplicated across tile boundaries and, as a result, features may appear multiple\n * times in query results. For example, suppose there is a highway running through the bounding rectangle of a query.\n * The results of the query will be those parts of the highway that lie within the map tiles covering the bounding\n * rectangle, even if the highway extends into other tiles, and the portion of the highway within each map tile\n * will be returned as a separate feature. Similarly, a point feature near a tile boundary may appear in multiple\n * tiles due to tile buffering.\n *\n * @example\n * // Find all features in one source layer in a vector source\n * const features = map.querySourceFeatures('your-source-id', {\n * sourceLayer: 'your-source-layer'\n * });\n *\n * @see [Example: Highlight features containing similar data](https://www.mapbox.com/mapbox-gl-js/example/query-similar-features/)\n */\n querySourceFeatures(sourceId: string, parameters: ?{sourceLayer: ?string, filter: ?Array<any>, validate?: boolean}): Array<QueryFeature> {\n return this.style.querySourceFeatures(sourceId, parameters);\n }\n\n /**\n * Queries the currently loaded data for elevation at a geographical location. The elevation is returned in `meters` relative to mean sea-level.\n * Returns `null` if `terrain` is disabled or if terrain data for the location hasn't been loaded yet.\n *\n * In order to guarantee that the terrain data is loaded ensure that the geographical location is visible and wait for the `idle` event to occur.\n *\n * @param {LngLatLike} lnglat The geographical location at which to query.\n * @param {ElevationQueryOptions} [options] Options object.\n * @param {boolean} [options.exaggerated=true] When `true` returns the terrain elevation with the value of `exaggeration` from the style already applied.\n * When `false`, returns the raw value of the underlying data without styling applied.\n * @returns {number | null} The elevation in meters.\n * @example\n * const coordinate = [-122.420679, 37.772537];\n * const elevation = map.queryTerrainElevation(coordinate);\n * @see [Example: Query terrain elevation](https://docs.mapbox.com/mapbox-gl-js/example/query-terrain-elevation/)\n */\n queryTerrainElevation(lnglat: LngLatLike, options: ElevationQueryOptions): number | null {\n const elevation = this.transform.elevation;\n if (elevation) {\n options = extend({}, {exaggerated: true}, options);\n return elevation.getAtPoint(MercatorCoordinate.fromLngLat(lnglat), null, options.exaggerated);\n }\n return null;\n }\n\n /** @section {Working with styles} */\n\n /**\n * Updates the map's Mapbox style object with a new value.\n *\n * If a style is already set when this is used and the `diff` option is set to `true`, the map renderer will attempt to compare the given style\n * against the map's current state and perform only the changes necessary to make the map style match the desired state. Changes in sprites\n * (images used for icons and patterns) and glyphs (fonts for label text) **cannot** be diffed. If the sprites or fonts used in the current\n * style and the given style are different in any way, the map renderer will force a full update, removing the current style and building\n * the given one from scratch.\n *\n * @param {Object | string| null} style A JSON object conforming to the schema described in the\n * [Mapbox Style Specification](https://mapbox.com/mapbox-gl-style-spec/), or a URL to such JSON.\n * @param {Object} [options] Options object.\n * @param {boolean} [options.diff=true] If false, force a 'full' update, removing the current style\n * and building the given one instead of attempting a diff-based update.\n * @param {string} [options.localIdeographFontFamily='sans-serif'] Defines a CSS\n * font-family for locally overriding generation of glyphs in the 'CJK Unified Ideographs', 'Hiragana', 'Katakana' and 'Hangul Syllables' ranges.\n * In these ranges, font settings from the map's style will be ignored, except for font-weight keywords (light/regular/medium/bold).\n * Set to `false`, to enable font settings from the map's style for these glyph ranges.\n * Forces a full update.\n * @returns {Map} Returns itself to allow for method chaining.\n *\n * @example\n * map.setStyle(\"mapbox://styles/mapbox/streets-v11\");\n *\n * @see [Example: Change a map's style](https://www.mapbox.com/mapbox-gl-js/example/setstyle/)\n */\n setStyle(style: StyleSpecification | string | null, options?: {diff?: boolean} & StyleOptions): this {\n options = extend({}, {localIdeographFontFamily: this._localIdeographFontFamily, localFontFamily: this._localFontFamily}, options);\n\n if ((options.diff !== false &&\n options.localIdeographFontFamily === this._localIdeographFontFamily &&\n options.localFontFamily === this._localFontFamily) && this.style && style) {\n this._diffStyle(style, options);\n return this;\n } else {\n this._localIdeographFontFamily = options.localIdeographFontFamily;\n this._localFontFamily = options.localFontFamily;\n return this._updateStyle(style, options);\n }\n }\n\n _getUIString(key: string): string {\n const str = this._locale[key];\n if (str == null) {\n throw new Error(`Missing UI string '${key}'`);\n }\n\n return str;\n }\n\n _updateStyle(style: StyleSpecification | string | null, options?: {diff?: boolean} & StyleOptions): this {\n if (this.style) {\n this.style.setEventedParent(null);\n this.style._remove();\n this.style = (undefined: any); // we lazy-init it so it's never undefined when accessed\n }\n\n if (style) {\n this.style = new Style(this, options || {});\n this.style.setEventedParent(this, {style: this.style});\n\n if (typeof style === 'string') {\n this.style.loadURL(style);\n } else {\n this.style.loadJSON(style);\n }\n }\n this._updateTerrain();\n return this;\n }\n\n _lazyInitEmptyStyle() {\n if (!this.style) {\n this.style = new Style(this, {});\n this.style.setEventedParent(this, {style: this.style});\n this.style.loadEmpty();\n }\n }\n\n _diffStyle(style: StyleSpecification | string, options?: {diff?: boolean} & StyleOptions) {\n if (typeof style === 'string') {\n const url = this._requestManager.normalizeStyleURL(style);\n const request = this._requestManager.transformRequest(url, ResourceType.Style);\n getJSON(request, (error: ?Error, json: ?Object) => {\n if (error) {\n this.fire(new ErrorEvent(error));\n } else if (json) {\n this._updateDiff(json, options);\n }\n });\n } else if (typeof style === 'object') {\n this._updateDiff(style, options);\n }\n }\n\n _updateDiff(style: StyleSpecification, options?: {diff?: boolean} & StyleOptions) {\n try {\n if (this.style.setState(style)) {\n this._update(true);\n }\n } catch (e) {\n warnOnce(\n `Unable to perform style diff: ${e.message || e.error || e}. Rebuilding the style from scratch.`\n );\n this._updateStyle(style, options);\n }\n }\n\n /**\n * Returns the map's Mapbox [style](https://docs.mapbox.com/help/glossary/style/) object, a JSON object which can be used to recreate the map's style.\n *\n * @returns {Object} The map's style JSON object.\n *\n * @example\n * map.on('load', () => {\n * const styleJson = map.getStyle();\n * });\n *\n */\n getStyle(): ?StyleSpecification {\n if (this.style) {\n return this.style.serialize();\n }\n }\n\n /**\n * Returns a Boolean indicating whether the map's style is fully loaded.\n *\n * @returns {boolean} A Boolean indicating whether the style is fully loaded.\n *\n * @example\n * const styleLoadStatus = map.isStyleLoaded();\n */\n isStyleLoaded(): boolean {\n if (!this.style) {\n warnOnce('There is no style added to the map.');\n return false;\n }\n return this.style.loaded();\n }\n\n /** @section {Sources} */\n\n /**\n * Adds a source to the map's style.\n *\n * @param {string} id The ID of the source to add. Must not conflict with existing sources.\n * @param {Object} source The source object, conforming to the\n * Mapbox Style Specification's [source definition](https://www.mapbox.com/mapbox-gl-style-spec/#sources) or\n * {@link CanvasSourceOptions}.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.addSource('my-data', {\n * type: 'vector',\n * url: 'mapbox://myusername.tilesetid'\n * });\n * @example\n * map.addSource('my-data', {\n * \"type\": \"geojson\",\n * \"data\": {\n * \"type\": \"Feature\",\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [-77.0323, 38.9131]\n * },\n * \"properties\": {\n * \"title\": \"Mapbox DC\",\n * \"marker-symbol\": \"monument\"\n * }\n * }\n * });\n * @see Example: Vector source: [Show and hide layers](https://docs.mapbox.com/mapbox-gl-js/example/toggle-layers/)\n * @see Example: GeoJSON source: [Add live realtime data](https://docs.mapbox.com/mapbox-gl-js/example/live-geojson/)\n * @see Example: Raster DEM source: [Add hillshading](https://docs.mapbox.com/mapbox-gl-js/example/hillshade/)\n */\n addSource(id: string, source: SourceSpecification): this {\n this._lazyInitEmptyStyle();\n this.style.addSource(id, source);\n return this._update(true);\n }\n\n /**\n * Returns a Boolean indicating whether the source is loaded. Returns `true` if the source with\n * the given ID in the map's style has no outstanding network requests, otherwise `false`.\n *\n * @param {string} id The ID of the source to be checked.\n * @returns {boolean} A Boolean indicating whether the source is loaded.\n * @example\n * const sourceLoaded = map.isSourceLoaded('bathymetry-data');\n */\n isSourceLoaded(id: string): boolean {\n return !!this.style && this.style._isSourceCacheLoaded(id);\n }\n\n /**\n * Returns a Boolean indicating whether all tiles in the viewport from all sources on\n * the style are loaded.\n *\n * @returns {boolean} A Boolean indicating whether all tiles are loaded.\n * @example\n * const tilesLoaded = map.areTilesLoaded();\n */\n\n areTilesLoaded(): boolean {\n const sources = this.style && this.style._sourceCaches;\n for (const id in sources) {\n const source = sources[id];\n const tiles = source._tiles;\n for (const t in tiles) {\n const tile = tiles[t];\n if (!(tile.state === 'loaded' || tile.state === 'errored')) return false;\n }\n }\n return true;\n }\n\n /**\n * Adds a [custom source type](#Custom Sources), making it available for use with\n * {@link Map#addSource}.\n * @private\n * @param {string} name The name of the source type; source definition objects use this name in the `{type: ...}` field.\n * @param {Function} SourceType A {@link Source} constructor.\n * @param {Function} callback Called when the source type is ready or with an error argument if there is an error.\n */\n addSourceType(name: string, SourceType: any, callback: Function) {\n this._lazyInitEmptyStyle();\n this.style.addSourceType(name, SourceType, callback);\n }\n\n /**\n * Removes a source from the map's style.\n *\n * @param {string} id The ID of the source to remove.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.removeSource('bathymetry-data');\n */\n removeSource(id: string): this {\n this.style.removeSource(id);\n this._updateTerrain();\n return this._update(true);\n }\n\n /**\n * Returns the source with the specified ID in the map's style.\n *\n * This method is often used to update a source using the instance members for the relevant\n * source type as defined in [Sources](#sources).\n * For example, setting the `data` for a GeoJSON source or updating the `url` and `coordinates`\n * of an image source.\n *\n * @param {string} id The ID of the source to get.\n * @returns {?Object} The style source with the specified ID or `undefined` if the ID\n * corresponds to no existing sources.\n * The shape of the object varies by source type.\n * A list of options for each source type is available on the Mapbox Style Specification's\n * [Sources](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/) page.\n * @example\n * const sourceObject = map.getSource('points');\n * @see [Example: Create a draggable point](https://docs.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n * @see [Example: Animate a point](https://docs.mapbox.com/mapbox-gl-js/example/animate-point-along-line/)\n * @see [Example: Add live realtime data](https://docs.mapbox.com/mapbox-gl-js/example/live-geojson/)\n */\n getSource(id: string): ?Source {\n return this.style.getSource(id);\n }\n\n /** @section {Images} */\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * Add an image to the style. This image can be displayed on the map like any other icon in the style's\n * [sprite](https://docs.mapbox.com/mapbox-gl-js/style-spec/sprite/) using the image's ID with\n * [`icon-image`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layout-symbol-icon-image),\n * [`background-pattern`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-background-background-pattern),\n * [`fill-pattern`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-fill-fill-pattern),\n * or [`line-pattern`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-line-line-pattern).\n * A {@link Map.event:error} event will be fired if there is not enough space in the sprite to add this image.\n *\n * @param {string} id The ID of the image.\n * @param {HTMLImageElement | ImageBitmap | ImageData | {width: number, height: number, data: (Uint8Array | Uint8ClampedArray)} | StyleImageInterface} image The image as an `HTMLImageElement`, `ImageData`, `ImageBitmap` or object with `width`, `height`, and `data`\n * properties with the same format as `ImageData`.\n * @param {Object | null} options Options object.\n * @param {number} options.pixelRatio The ratio of pixels in the image to physical pixels on the screen.\n * @param {boolean} options.sdf Whether the image should be interpreted as an SDF image.\n * @param {[number, number, number, number]} options.content `[x1, y1, x2, y2]` If `icon-text-fit` is used in a layer with this image, this option defines the part of the image that can be covered by the content in `text-field`.\n * @param {Array<[number, number]>} options.stretchX `[[x1, x2], ...]` If `icon-text-fit` is used in a layer with this image, this option defines the part(s) of the image that can be stretched horizontally.\n * @param {Array<[number, number]>} options.stretchY `[[y1, y2], ...]` If `icon-text-fit` is used in a layer with this image, this option defines the part(s) of the image that can be stretched vertically.\n *\n * @example\n * // If the style's sprite does not already contain an image with ID 'cat',\n * // add the image 'cat-icon.png' to the style's sprite with the ID 'cat'.\n * map.loadImage('https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Cat_silhouette.svg/400px-Cat_silhouette.svg.png', (error, image) => {\n * if (error) throw error;\n * if (!map.hasImage('cat')) map.addImage('cat', image);\n * });\n *\n * // Add a stretchable image that can be used with `icon-text-fit`\n * // In this example, the image is 600px wide by 400px high.\n * map.loadImage('https://upload.wikimedia.org/wikipedia/commons/8/89/Black_and_White_Boxed_%28bordered%29.png', (error, image) => {\n * if (error) throw error;\n * if (!map.hasImage('border-image')) {\n * map.addImage('border-image', image, {\n * content: [16, 16, 300, 384], // place text over left half of image, avoiding the 16px border\n * stretchX: [[16, 584]], // stretch everything horizontally except the 16px border\n * stretchY: [[16, 384]], // stretch everything vertically except the 16px border\n * });\n * }\n * });\n *\n *\n * @see Example: Use `HTMLImageElement`: [Add an icon to the map](https://www.mapbox.com/mapbox-gl-js/example/add-image/)\n * @see Example: Use `ImageData`: [Add a generated icon to the map](https://www.mapbox.com/mapbox-gl-js/example/add-image-generated/)\n */\n addImage(id: string,\n image: HTMLImageElement | ImageBitmap | ImageData | {width: number, height: number, data: Uint8Array | Uint8ClampedArray} | StyleImageInterface,\n {pixelRatio = 1, sdf = false, stretchX, stretchY, content}: $Shape<StyleImageMetadata> = {}) {\n this._lazyInitEmptyStyle();\n const version = 0;\n\n if (image instanceof window.HTMLImageElement || (window.ImageBitmap && image instanceof window.ImageBitmap)) {\n const {width, height, data} = browser.getImageData(image);\n this.style.addImage(id, {data: new RGBAImage({width, height}, data), pixelRatio, stretchX, stretchY, content, sdf, version});\n } else if (image.width === undefined || image.height === undefined) {\n this.fire(new ErrorEvent(new Error(\n 'Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, ' +\n 'or object with `width`, `height`, and `data` properties with the same format as `ImageData`')));\n } else {\n const {width, height} = image;\n const userImage = ((image: any): StyleImageInterface);\n const data = userImage.data;\n\n this.style.addImage(id, {\n data: new RGBAImage({width, height}, new Uint8Array(data)),\n pixelRatio,\n stretchX,\n stretchY,\n content,\n sdf,\n version,\n userImage\n });\n\n if (userImage.onAdd) {\n userImage.onAdd(this, id);\n }\n }\n }\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * Update an existing image in a style. This image can be displayed on the map like any other icon in the style's\n * [sprite](https://docs.mapbox.com/help/glossary/sprite/) using the image's ID with\n * [`icon-image`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layout-symbol-icon-image),\n * [`background-pattern`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-background-background-pattern),\n * [`fill-pattern`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-fill-fill-pattern),\n * or [`line-pattern`](https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-line-line-pattern).\n *\n * @param {string} id The ID of the image.\n * @param {HTMLImageElement | ImageBitmap | ImageData | StyleImageInterface} image The image as an `HTMLImageElement`, [`ImageData`](https://developer.mozilla.org/en-US/docs/Web/API/ImageData), [`ImageBitmap`](https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap) or object with `width`, `height`, and `data`\n * properties with the same format as `ImageData`.\n *\n * @example\n * // Load an image from an external URL.\n * map.loadImage('http://placekitten.com/50/50', (error, image) => {\n * if (error) throw error;\n * // If an image with the ID 'cat' already exists in the style's sprite,\n * // replace that image with a new image, 'other-cat-icon.png'.\n * if (map.hasImage('cat')) map.updateImage('cat', image);\n * });\n */\n updateImage(id: string,\n image: HTMLImageElement | ImageBitmap | ImageData | {width: number, height: number, data: Uint8Array | Uint8ClampedArray} | StyleImageInterface) {\n\n const existingImage = this.style.getImage(id);\n if (!existingImage) {\n this.fire(new ErrorEvent(new Error(\n 'The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.')));\n return;\n }\n const imageData = (image instanceof window.HTMLImageElement || (window.ImageBitmap && image instanceof window.ImageBitmap)) ? browser.getImageData(image) : image;\n const {width, height} = imageData;\n // Flow can't refine the type enough to exclude ImageBitmap\n const data = ((imageData: any).data: Uint8Array | Uint8ClampedArray);\n\n if (width === undefined || height === undefined) {\n this.fire(new ErrorEvent(new Error(\n 'Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, ' +\n 'or object with `width`, `height`, and `data` properties with the same format as `ImageData`')));\n return;\n }\n\n if (width !== existingImage.data.width || height !== existingImage.data.height) {\n this.fire(new ErrorEvent(new Error(\n `The width and height of the updated image (${width}, ${height})\n must be that same as the previous version of the image\n (${existingImage.data.width}, ${existingImage.data.height})`)));\n return;\n }\n\n const copy = !(image instanceof window.HTMLImageElement || (window.ImageBitmap && image instanceof window.ImageBitmap));\n existingImage.data.replace(data, copy);\n\n this.style.updateImage(id, existingImage);\n }\n\n /**\n * Check whether or not an image with a specific ID exists in the style. This checks both images\n * in the style's original [sprite](https://docs.mapbox.com/help/glossary/sprite/) and any images\n * that have been added at runtime using {@link Map#addImage}.\n *\n * @param {string} id The ID of the image.\n *\n * @returns {boolean} A Boolean indicating whether the image exists.\n * @example\n * // Check if an image with the ID 'cat' exists in\n * // the style's sprite.\n * const catIconExists = map.hasImage('cat');\n */\n hasImage(id: string): boolean {\n if (!id) {\n this.fire(new ErrorEvent(new Error('Missing required image id')));\n return false;\n }\n\n return !!this.style.getImage(id);\n }\n\n /**\n * Remove an image from a style. This can be an image from the style's original\n * [sprite](https://docs.mapbox.com/help/glossary/sprite/) or any images\n * that have been added at runtime using {@link Map#addImage}.\n *\n * @param {string} id The ID of the image.\n *\n * @example\n * // If an image with the ID 'cat' exists in\n * // the style's sprite, remove it.\n * if (map.hasImage('cat')) map.removeImage('cat');\n */\n removeImage(id: string) {\n this.style.removeImage(id);\n }\n\n /**\n * Load an image from an external URL to be used with {@link Map#addImage}. External\n * domains must support [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS).\n *\n * @param {string} url The URL of the image file. Image file must be in png, webp, or jpg format.\n * @param {Function} callback Expecting `callback(error, data)`. Called when the image has loaded or with an error argument if there is an error.\n *\n * @example\n * // Load an image from an external URL.\n * map.loadImage('http://placekitten.com/50/50', (error, image) => {\n * if (error) throw error;\n * // Add the loaded image to the style's sprite with the ID 'kitten'.\n * map.addImage('kitten', image);\n * });\n *\n * @see [Example: Add an icon to the map](https://www.mapbox.com/mapbox-gl-js/example/add-image/)\n */\n loadImage(url: string, callback: Function) {\n getImage(this._requestManager.transformRequest(url, ResourceType.Image), (err, img) => {\n callback(err, img instanceof window.HTMLImageElement ? browser.getImageData(img) : img);\n });\n }\n\n /**\n * Returns an Array of strings containing the IDs of all images currently available in the map.\n * This includes both images from the style's original [sprite](https://docs.mapbox.com/help/glossary/sprite/)\n * and any images that have been added at runtime using {@link Map#addImage}.\n *\n * @returns {Array<string>} An Array of strings containing the names of all sprites/images currently available in the map.\n *\n * @example\n * const allImages = map.listImages();\n *\n */\n listImages(): Array<string> {\n return this.style.listImages();\n }\n\n /** @section {Layers} */\n\n /**\n * Adds a [Mapbox style layer](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layers)\n * to the map's style.\n *\n * A layer defines how data from a specified source will be styled. Read more about layer types\n * and available paint and layout properties in the [Mapbox Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layers).\n *\n * @param {Object | CustomLayerInterface} layer The layer to add, conforming to either the Mapbox Style Specification's [layer definition](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layers) or, less commonly, the {@link CustomLayerInterface} specification.\n * The Mapbox Style Specification's layer definition is appropriate for most layers.\n *\n * @param {string} layer.id A unique identifier that you define.\n * @param {string} layer.type The type of layer (for example `fill` or `symbol`).\n * A list of layer types is available in the [Mapbox Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#type).\n *\n * This can also be `custom`. For more information, see {@link CustomLayerInterface}.\n * @param {string | Object} [layer.source] The data source for the layer.\n * Reference a source that has _already been defined_ using the source's unique id.\n * Reference a _new source_ using a source object (as defined in the [Mapbox Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/)) directly.\n * This is **required** for all `layer.type` options _except_ for `custom` and `background`.\n * @param {string} [layer.sourceLayer] (optional) The name of the [source layer](https://docs.mapbox.com/help/glossary/source-layer/) within the specified `layer.source` to use for this style layer.\n * This is only applicable for vector tile sources and is **required** when `layer.source` is of the type `vector`.\n * @param {Array} [layer.filter] (optional) An expression specifying conditions on source features.\n * Only features that match the filter are displayed.\n * The Mapbox Style Specification includes more information on the limitations of the [`filter`](https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#filter) parameter\n * and a complete list of available [expressions](https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/).\n * If no filter is provided, all features in the source (or source layer for vector tilesets) will be displayed.\n * @param {Object} [layer.paint] (optional) Paint properties for the layer.\n * Available paint properties vary by `layer.type`.\n * A full list of paint properties for each layer type is available in the [Mapbox Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/).\n * If no paint properties are specified, default values will be used.\n * @param {Object} [layer.layout] (optional) Layout properties for the layer.\n * Available layout properties vary by `layer.type`.\n * A full list of layout properties for each layer type is available in the [Mapbox Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/).\n * If no layout properties are specified, default values will be used.\n * @param {number} [layer.maxzoom] (optional) The maximum zoom level for the layer.\n * At zoom levels equal to or greater than the maxzoom, the layer will be hidden.\n * The value can be any number between `0` and `24` (inclusive).\n * If no maxzoom is provided, the layer will be visible at all zoom levels for which there are tiles available.\n * @param {number} [layer.minzoom] (optional) The minimum zoom level for the layer.\n * At zoom levels less than the minzoom, the layer will be hidden.\n * The value can be any number between `0` and `24` (inclusive).\n * If no minzoom is provided, the layer will be visible at all zoom levels for which there are tiles available.\n * @param {Object} [layer.metadata] (optional) Arbitrary properties useful to track with the layer, but do not influence rendering.\n * @param {string} [layer.renderingMode] This is only applicable for layers with the type `custom`.\n * See {@link CustomLayerInterface} for more information.\n * @param {string} [beforeId] The ID of an existing layer to insert the new layer before,\n * resulting in the new layer appearing visually beneath the existing layer.\n * If this argument is not specified, the layer will be appended to the end of the layers array\n * and appear visually above all other layers.\n *\n * @returns {Map} Returns itself to allow for method chaining.\n *\n * @example\n * // Add a circle layer with a vector source\n * map.addLayer({\n * id: 'points-of-interest',\n * source: {\n * type: 'vector',\n * url: 'mapbox://mapbox.mapbox-streets-v8'\n * },\n * 'source-layer': 'poi_label',\n * type: 'circle',\n * paint: {\n * // Mapbox Style Specification paint properties\n * },\n * layout: {\n * // Mapbox Style Specification layout properties\n * }\n * });\n *\n * @example\n * // Define a source before using it to create a new layer\n * map.addSource('state-data', {\n * type: 'geojson',\n * data: 'path/to/data.geojson'\n * });\n *\n * map.addLayer({\n * id: 'states',\n * // References the GeoJSON source defined above\n * // and does not require a `source-layer`\n * source: 'state-data',\n * type: 'symbol',\n * layout: {\n * // Set the label content to the\n * // feature's `name` property\n * 'text-field': ['get', 'name']\n * }\n * });\n *\n * @example\n * // Add a new symbol layer before an existing layer\n * map.addLayer({\n * id: 'states',\n * // References a source that's already been defined\n * source: 'state-data',\n * type: 'symbol',\n * layout: {\n * // Set the label content to the\n * // feature's `name` property\n * 'text-field': ['get', 'name']\n * }\n * // Add the layer before the existing `cities` layer\n * }, 'cities');\n *\n * @see [Example: Select features around a clicked point](https://docs.mapbox.com/mapbox-gl-js/example/queryrenderedfeatures-around-point/) (fill layer)\n * @see [Example: Add a new layer below labels](https://docs.mapbox.com/mapbox-gl-js/example/geojson-layer-in-stack/)\n * @see [Example: Create and style clusters](https://docs.mapbox.com/mapbox-gl-js/example/cluster/) (circle layer)\n * @see [Example: Add a vector tile source](https://docs.mapbox.com/mapbox-gl-js/example/vector-source/) (line layer)\n * @see [Example: Add a WMS layer](https://docs.mapbox.com/mapbox-gl-js/example/wms/) (raster layer)\n */\n addLayer(layer: LayerSpecification | CustomLayerInterface, beforeId?: string): this {\n this._lazyInitEmptyStyle();\n this.style.addLayer(layer, beforeId);\n return this._update(true);\n }\n\n /**\n * Moves a layer to a different z-position.\n *\n * @param {string} id The ID of the layer to move.\n * @param {string} [beforeId] The ID of an existing layer to insert the new layer before. When viewing the map, the `id` layer will appear beneath the `beforeId` layer. If `beforeId` is omitted, the layer will be appended to the end of the layers array and appear above all other layers on the map.\n * @returns {Map} Returns itself to allow for method chaining.\n *\n * @example\n * // Move a layer with ID 'polygon' before the layer with ID 'country-label'. The `polygon` layer will appear beneath the `country-label` layer on the map.\n * map.moveLayer('polygon', 'country-label');\n */\n moveLayer(id: string, beforeId?: string): this {\n this.style.moveLayer(id, beforeId);\n return this._update(true);\n }\n\n /**\n * Removes the layer with the given ID from the map's style.\n *\n * If no such layer exists, an `error` event is fired.\n *\n * @param {string} id ID of the layer to remove.\n * @returns {Map} Returns itself to allow for method chaining.\n * @fires Map.event:error\n *\n * @example\n * // If a layer with ID 'state-data' exists, remove it.\n * if (map.getLayer('state-data')) map.removeLayer('state-data');\n */\n removeLayer(id: string): this {\n this.style.removeLayer(id);\n return this._update(true);\n }\n\n /**\n * Returns the layer with the specified ID in the map's style.\n *\n * @param {string} id The ID of the layer to get.\n * @returns {?Object} The layer with the specified ID, or `undefined`\n * if the ID corresponds to no existing layers.\n *\n * @example\n * const stateDataLayer = map.getLayer('state-data');\n *\n * @see [Example: Filter symbols by toggling a list](https://www.mapbox.com/mapbox-gl-js/example/filter-markers/)\n * @see [Example: Filter symbols by text input](https://www.mapbox.com/mapbox-gl-js/example/filter-markers-by-input/)\n */\n getLayer(id: string): ?StyleLayer {\n return this.style.getLayer(id);\n }\n\n /**\n * Sets the zoom extent for the specified style layer. The zoom extent includes the\n * [minimum zoom level](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layer-minzoom)\n * and [maximum zoom level](https://docs.mapbox.com/mapbox-gl-js/style-spec/#layer-maxzoom))\n * at which the layer will be rendered.\n *\n * Note: For style layers using vector sources, style layers cannot be rendered at zoom levels lower than the\n * minimum zoom level of the _source layer_ because the data does not exist at those zoom levels. If the minimum\n * zoom level of the source layer is higher than the minimum zoom level defined in the style layer, the style\n * layer will not be rendered at all zoom levels in the zoom range.\n *\n * @param {string} layerId The ID of the layer to which the zoom extent will be applied.\n * @param {number} minzoom The minimum zoom to set (0-24).\n * @param {number} maxzoom The maximum zoom to set (0-24).\n * @returns {Map} Returns itself to allow for method chaining.\n *\n * @example\n * map.setLayerZoomRange('my-layer', 2, 5);\n *\n */\n setLayerZoomRange(layerId: string, minzoom: number, maxzoom: number): this {\n this.style.setLayerZoomRange(layerId, minzoom, maxzoom);\n return this._update(true);\n }\n\n /**\n * Sets the filter for the specified style layer.\n *\n * Filters control which features a style layer renders from its source.\n * Any feature for which the filter expression evaluates to `true` will be\n * rendered on the map. Those that are false will be hidden.\n *\n * Use `setFilter` to show a subset of your source data.\n *\n * To clear the filter, pass `null` or `undefined` as the second parameter.\n *\n * @param {string} layerId The ID of the layer to which the filter will be applied.\n * @param {Array | null | undefined} filter The filter, conforming to the Mapbox Style Specification's\n * [filter definition](https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#filter). If `null` or `undefined` is provided, the function removes any existing filter from the layer.\n * @param {Object} [options] Options object.\n * @param {boolean} [options.validate=true] Whether to check if the filter conforms to the Mapbox GL Style Specification. Disabling validation is a performance optimization that should only be used if you have previously validated the values you will be passing to this function.\n * @returns {Map} Returns itself to allow for method chaining.\n *\n * @example\n * // display only features with the 'name' property 'USA'\n * map.setFilter('my-layer', ['==', ['get', 'name'], 'USA']);\n * @example\n * // display only features with five or more 'available-spots'\n * map.setFilter('bike-docks', ['>=', ['get', 'available-spots'], 5]);\n * @example\n * // remove the filter for the 'bike-docks' style layer\n * map.setFilter('bike-docks', null);\n *\n * @see [Example: Filter features within map view](https://www.mapbox.com/mapbox-gl-js/example/filter-features-within-map-view/)\n * @see [Example: Highlight features containing similar data](https://www.mapbox.com/mapbox-gl-js/example/query-similar-features/)\n * @see [Example: Create a timeline animation](https://www.mapbox.com/mapbox-gl-js/example/timeline-animation/)\n * @see [Tutorial: Show changes over time](https://docs.mapbox.com/help/tutorials/show-changes-over-time/)\n */\n setFilter(layerId: string, filter: ?FilterSpecification, options: StyleSetterOptions = {}): this {\n this.style.setFilter(layerId, filter, options);\n return this._update(true);\n }\n\n /**\n * Returns the filter applied to the specified style layer.\n *\n * @param {string} layerId The ID of the style layer whose filter to get.\n * @returns {Array} The layer's filter.\n * @example\n * const filter = map.getFilter('myLayer');\n */\n getFilter(layerId: string): ?FilterSpecification {\n return this.style.getFilter(layerId);\n }\n\n /**\n * Sets the value of a paint property in the specified style layer.\n *\n * @param {string} layerId The ID of the layer to set the paint property in.\n * @param {string} name The name of the paint property to set.\n * @param {*} value The value of the paint property to set.\n * Must be of a type appropriate for the property, as defined in the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/).\n * @param {Object} [options] Options object.\n * @param {boolean} [options.validate=true] Whether to check if `value` conforms to the Mapbox GL Style Specification. Disabling validation is a performance optimization that should only be used if you have previously validated the values you will be passing to this function.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setPaintProperty('my-layer', 'fill-color', '#faafee');\n * @see [Example: Change a layer's color with buttons](https://www.mapbox.com/mapbox-gl-js/example/color-switcher/)\n * @see [Example: Adjust a layer's opacity](https://www.mapbox.com/mapbox-gl-js/example/adjust-layer-opacity/)\n * @see [Example: Create a draggable point](https://www.mapbox.com/mapbox-gl-js/example/drag-a-point/)\n */\n setPaintProperty(layerId: string, name: string, value: any, options: StyleSetterOptions = {}): this {\n this.style.setPaintProperty(layerId, name, value, options);\n return this._update(true);\n }\n\n /**\n * Returns the value of a paint property in the specified style layer.\n *\n * @param {string} layerId The ID of the layer to get the paint property from.\n * @param {string} name The name of a paint property to get.\n * @returns {*} The value of the specified paint property.\n * @example\n * const paintProperty = map.getPaintProperty('mySymbolLayer', 'icon-color');\n */\n getPaintProperty(layerId: string, name: string): void | TransitionSpecification | PropertyValueSpecification<mixed> {\n return this.style.getPaintProperty(layerId, name);\n }\n\n /**\n * Sets the value of a layout property in the specified style layer.\n *\n * @param {string} layerId The ID of the layer to set the layout property in.\n * @param {string} name The name of the layout property to set.\n * @param {*} value The value of the layout property. Must be of a type appropriate for the property, as defined in the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/).\n * @param {Object} [options] Options object.\n * @param {boolean} [options.validate=true] Whether to check if `value` conforms to the Mapbox GL Style Specification. Disabling validation is a performance optimization that should only be used if you have previously validated the values you will be passing to this function.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setLayoutProperty('my-layer', 'visibility', 'none');\n * @see [Example: Show and hide layers](https://docs.mapbox.com/mapbox-gl-js/example/toggle-layers/)\n */\n setLayoutProperty(layerId: string, name: string, value: any, options: StyleSetterOptions = {}): this {\n this.style.setLayoutProperty(layerId, name, value, options);\n return this._update(true);\n }\n\n /**\n * Returns the value of a layout property in the specified style layer.\n *\n * @param {string} layerId The ID of the layer to get the layout property from.\n * @param {string} name The name of the layout property to get.\n * @returns {*} The value of the specified layout property.\n * @example\n * const layoutProperty = map.getLayoutProperty('mySymbolLayer', 'icon-anchor');\n */\n getLayoutProperty(layerId: string, name: string): ?PropertyValueSpecification<mixed> {\n return this.style.getLayoutProperty(layerId, name);\n }\n\n /** @section {Style properties} */\n\n /**\n * Sets the any combination of light values.\n *\n * @param {LightSpecification} light Light properties to set. Must conform to the [Light Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/#light).\n * @param {Object} [options] Options object.\n * @param {boolean} [options.validate=true] Whether to check if the filter conforms to the Mapbox GL Style Specification. Disabling validation is a performance optimization that should only be used if you have previously validated the values you will be passing to this function.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setLight({\n * \"anchor\": \"viewport\",\n * \"color\": \"blue\",\n * \"intensity\": 0.5\n * });\n */\n setLight(light: LightSpecification, options: StyleSetterOptions = {}): this {\n this._lazyInitEmptyStyle();\n this.style.setLight(light, options);\n return this._update(true);\n }\n\n /**\n * Returns the value of the light object.\n *\n * @returns {LightSpecification} Light properties of the style.\n * @example\n * const light = map.getLight();\n */\n getLight(): LightSpecification {\n return this.style.getLight();\n }\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * Sets the terrain property of the style.\n *\n * @param {TerrainSpecification} terrain Terrain properties to set. Must conform to the [Terrain Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/terrain/).\n * If `null` or `undefined` is provided, function removes terrain.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.addSource('mapbox-dem', {\n * 'type': 'raster-dem',\n * 'url': 'mapbox://mapbox.mapbox-terrain-dem-v1',\n * 'tileSize': 512,\n * 'maxzoom': 14\n * });\n * // add the DEM source as a terrain layer with exaggerated height\n * map.setTerrain({'source': 'mapbox-dem', 'exaggeration': 1.5});\n */\n setTerrain(terrain: TerrainSpecification): this {\n this._lazyInitEmptyStyle();\n if (!terrain && this.transform.projection.requiresDraping) {\n this.style.setTerrainForDraping();\n } else {\n this.style.setTerrain(terrain);\n }\n this._averageElevationLastSampledAt = -Infinity;\n return this._update(true);\n }\n\n /**\n * Returns the terrain specification or `null` if terrain isn't set on the map.\n *\n * @returns {TerrainSpecification | null} Terrain specification properties of the style.\n * @example\n * const terrain = map.getTerrain();\n */\n getTerrain(): ?TerrainSpecification {\n return this.style ? this.style.getTerrain() : null;\n }\n\n /**\n * Sets the fog property of the style.\n *\n * @param {FogSpecification} fog The fog properties to set. Must conform to the [Fog Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/fog/).\n * If `null` or `undefined` is provided, this function call removes the fog from the map.\n * @returns {Map} Returns itself to allow for method chaining.\n * @example\n * map.setFog({\n * \"range\": [0.8, 8],\n * \"color\": \"#dc9f9f\",\n * \"horizon-blend\": 0.5,\n * \"high-color\": \"#245bde\",\n * \"space-color\": \"#000000\",\n * \"star-intensity\": 0.15\n * });\n * @see [Example: Add fog to a map](https://docs.mapbox.com/mapbox-gl-js/example/add-fog/)\n */\n setFog(fog: FogSpecification): this {\n this._lazyInitEmptyStyle();\n this.style.setFog(fog);\n return this._update(true);\n }\n\n /**\n * Returns the fog specification or `null` if fog is not set on the map.\n *\n * @returns {FogSpecification} Fog specification properties of the style.\n * @example\n * const fog = map.getFog();\n */\n getFog(): ?FogSpecification {\n return this.style ? this.style.getFog() : null;\n }\n\n /**\n * Returns the fog opacity for a given location.\n *\n * An opacity of 0 means that there is no fog contribution for the given location\n * while a fog opacity of 1.0 means the location is fully obscured by the fog effect.\n *\n * If there is no fog set on the map, this function will return 0.\n *\n * @param {LngLatLike} lnglat The geographical location to evaluate the fog on.\n * @returns {number} A value between 0 and 1 representing the fog opacity, where 1 means fully within, and 0 means not affected by the fog effect.\n * @private\n */\n _queryFogOpacity(lnglat: LngLatLike): number {\n if (!this.style || !this.style.fog) return 0.0;\n return this.style.fog.getOpacityAtLatLng(LngLat.convert(lnglat), this.transform);\n }\n\n /** @section {Feature state} */\n\n /**\n * Sets the `state` of a feature.\n * A feature's `state` is a set of user-defined key-value pairs that are assigned to a feature at runtime.\n * When using this method, the `state` object is merged with any existing key-value pairs in the feature's state.\n * Features are identified by their `id` attribute, which can be any number or string.\n *\n * This method can only be used with sources that have a `id` attribute. The `id` attribute can be defined in three ways:\n * - For vector or GeoJSON sources, including an `id` attribute in the original data file.\n * - For vector or GeoJSON sources, using the [`promoteId`](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/#vector-promoteId) option at the time the source is defined.\n * - For GeoJSON sources, using the [`generateId`](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/#geojson-generateId) option to auto-assign an `id` based on the feature's index in the source data. If you change feature data using `map.getSource('some id').setData(...)`, you may need to re-apply state taking into account updated `id` values.\n *\n * _Note: You can use the [`feature-state` expression](https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/#feature-state) to access the values in a feature's state object for the purposes of styling_.\n *\n * @param {Object} feature Feature identifier. Feature objects returned from\n * {@link Map#queryRenderedFeatures} or event handlers can be used as feature identifiers.\n * @param {number | string} feature.id Unique id of the feature. Can be an integer or a string, but supports string values only when the [`promoteId`](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/#vector-promoteId) option has been applied to the source or the string can be cast to an integer.\n * @param {string} feature.source The id of the vector or GeoJSON source for the feature.\n * @param {string} [feature.sourceLayer] (optional) *For vector tile sources, `sourceLayer` is required*.\n * @param {Object} state A set of key-value pairs. The values should be valid JSON types.\n * @returns {Map} The map object.\n * @example\n * // When the mouse moves over the `my-layer` layer, update\n * // the feature state for the feature under the mouse\n * map.on('mousemove', 'my-layer', (e) => {\n * if (e.features.length > 0) {\n * map.setFeatureState({\n * source: 'my-source',\n * sourceLayer: 'my-source-layer',\n * id: e.features[0].id,\n * }, {\n * hover: true\n * });\n * }\n * });\n *\n * @see [Example: Create a hover effect](https://docs.mapbox.com/mapbox-gl-js/example/hover-styles/)\n * @see [Tutorial: Create interactive hover effects with Mapbox GL JS](https://docs.mapbox.com/help/tutorials/create-interactive-hover-effects-with-mapbox-gl-js/)\n */\n setFeatureState(feature: { source: string; sourceLayer?: string; id: string | number; }, state: Object): this {\n this.style.setFeatureState(feature, state);\n return this._update();\n }\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * Removes the `state` of a feature, setting it back to the default behavior.\n * If only a `feature.source` is specified, it will remove the state for all features from that source.\n * If `feature.id` is also specified, it will remove all keys for that feature's state.\n * If `key` is also specified, it removes only that key from that feature's state.\n * Features are identified by their `feature.id` attribute, which can be any number or string.\n *\n * @param {Object} feature Identifier of where to remove state. It can be a source, a feature, or a specific key of feature.\n * Feature objects returned from {@link Map#queryRenderedFeatures} or event handlers can be used as feature identifiers.\n * @param {number | string} feature.id Unique id of the feature. Can be an integer or a string, but supports string values only when the [`promoteId`](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/#vector-promoteId) option has been applied to the source or the string can be cast to an integer.\n * @param {string} feature.source The id of the vector or GeoJSON source for the feature.\n * @param {string} [feature.sourceLayer] (optional) For vector tile sources, `sourceLayer` is required.\n * @param {string} key (optional) The key in the feature state to reset.\n *\n * @example\n * // Reset the entire state object for all features\n * // in the `my-source` source\n * map.removeFeatureState({\n * source: 'my-source'\n * });\n *\n * @example\n * // When the mouse leaves the `my-layer` layer,\n * // reset the entire state object for the\n * // feature under the mouse\n * map.on('mouseleave', 'my-layer', (e) => {\n * map.removeFeatureState({\n * source: 'my-source',\n * sourceLayer: 'my-source-layer',\n * id: e.features[0].id\n * });\n * });\n *\n * @example\n * // When the mouse leaves the `my-layer` layer,\n * // reset only the `hover` key-value pair in the\n * // state for the feature under the mouse\n * map.on('mouseleave', 'my-layer', (e) => {\n * map.removeFeatureState({\n * source: 'my-source',\n * sourceLayer: 'my-source-layer',\n * id: e.features[0].id\n * }, 'hover');\n * });\n *\n */\n removeFeatureState(feature: { source: string; sourceLayer?: string; id?: string | number; }, key?: string): this {\n this.style.removeFeatureState(feature, key);\n return this._update();\n }\n\n /**\n * Gets the `state` of a feature.\n * A feature's `state` is a set of user-defined key-value pairs that are assigned to a feature at runtime.\n * Features are identified by their `id` attribute, which can be any number or string.\n *\n * _Note: To access the values in a feature's state object for the purposes of styling the feature, use the [`feature-state` expression](https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/#feature-state)_.\n *\n * @param {Object} feature Feature identifier. Feature objects returned from\n * {@link Map#queryRenderedFeatures} or event handlers can be used as feature identifiers.\n * @param {number | string} feature.id Unique id of the feature. Can be an integer or a string, but supports string values only when the [`promoteId`](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/#vector-promoteId) option has been applied to the source or the string can be cast to an integer.\n * @param {string} feature.source The id of the vector or GeoJSON source for the feature.\n * @param {string} [feature.sourceLayer] (optional) *For vector tile sources, `sourceLayer` is required*.\n *\n * @returns {Object} The state of the feature: a set of key-value pairs that was assigned to the feature at runtime.\n *\n * @example\n * // When the mouse moves over the `my-layer` layer,\n * // get the feature state for the feature under the mouse\n * map.on('mousemove', 'my-layer', (e) => {\n * if (e.features.length > 0) {\n * map.getFeatureState({\n * source: 'my-source',\n * sourceLayer: 'my-source-layer',\n * id: e.features[0].id\n * });\n * }\n * });\n *\n */\n getFeatureState(feature: { source: string; sourceLayer?: string; id: string | number; }): any {\n return this.style.getFeatureState(feature);\n }\n\n _updateContainerDimensions() {\n if (!this._container) return;\n\n const width = this._container.getBoundingClientRect().width || 400;\n const height = this._container.getBoundingClientRect().height || 300;\n\n let transformValues;\n let transformScaleWidth;\n let transformScaleHeight;\n let el = this._container;\n while (el && (!transformScaleWidth || !transformScaleHeight)) {\n const transformMatrix = window.getComputedStyle(el).transform;\n if (transformMatrix && transformMatrix !== 'none') {\n transformValues = transformMatrix.match(/matrix.*\\((.+)\\)/)[1].split(', ');\n if (transformValues[0] && transformValues[0] !== '0' && transformValues[0] !== '1') transformScaleWidth = transformValues[0];\n if (transformValues[3] && transformValues[3] !== '0' && transformValues[3] !== '1') transformScaleHeight = transformValues[3];\n }\n el = el.parentElement;\n }\n\n this._containerWidth = transformScaleWidth ? Math.abs(width / transformScaleWidth) : width;\n this._containerHeight = transformScaleHeight ? Math.abs(height / transformScaleHeight) : height;\n }\n\n _detectMissingCSS(): void {\n const computedColor = window.getComputedStyle(this._missingCSSCanary).getPropertyValue('background-color');\n if (computedColor !== 'rgb(250, 128, 114)') {\n warnOnce('This page appears to be missing CSS declarations for ' +\n 'Mapbox GL JS, which may cause the map to display incorrectly. ' +\n 'Please ensure your page includes mapbox-gl.css, as described ' +\n 'in https://www.mapbox.com/mapbox-gl-js/api/.');\n }\n }\n\n _setupContainer() {\n const container = this._container;\n container.classList.add('mapboxgl-map');\n\n const missingCSSCanary = this._missingCSSCanary = DOM.create('div', 'mapboxgl-canary', container);\n missingCSSCanary.style.visibility = 'hidden';\n this._detectMissingCSS();\n\n const canvasContainer = this._canvasContainer = DOM.create('div', 'mapboxgl-canvas-container', container);\n if (this._interactive) {\n canvasContainer.classList.add('mapboxgl-interactive');\n }\n\n this._canvas = DOM.create('canvas', 'mapboxgl-canvas', canvasContainer);\n this._canvas.addEventListener('webglcontextlost', this._contextLost, false);\n this._canvas.addEventListener('webglcontextrestored', this._contextRestored, false);\n this._canvas.setAttribute('tabindex', '0');\n this._canvas.setAttribute('aria-label', this._getUIString('Map.Title'));\n this._canvas.setAttribute('role', 'region');\n\n this._updateContainerDimensions();\n this._resizeCanvas(this._containerWidth, this._containerHeight);\n\n const controlContainer = this._controlContainer = DOM.create('div', 'mapboxgl-control-container', container);\n const positions = this._controlPositions = {};\n ['top-left', 'top-right', 'bottom-left', 'bottom-right'].forEach((positionName) => {\n positions[positionName] = DOM.create('div', `mapboxgl-ctrl-${positionName}`, controlContainer);\n });\n\n this._container.addEventListener('scroll', this._onMapScroll, false);\n }\n\n _resizeCanvas(width: number, height: number) {\n const pixelRatio = browser.devicePixelRatio || 1;\n\n // Request the required canvas size (rounded up) taking the pixelratio into account.\n this._canvas.width = pixelRatio * Math.ceil(width);\n this._canvas.height = pixelRatio * Math.ceil(height);\n\n // Maintain the same canvas size, potentially downscaling it for HiDPI displays\n this._canvas.style.width = `${width}px`;\n this._canvas.style.height = `${height}px`;\n }\n\n _addMarker(marker: Marker) {\n this._markers.push(marker);\n }\n\n _removeMarker(marker: Marker) {\n const index = this._markers.indexOf(marker);\n if (index !== -1) {\n this._markers.splice(index, 1);\n }\n }\n\n _setupPainter() {\n const attributes = extend({}, supported.webGLContextAttributes, {\n failIfMajorPerformanceCaveat: this._failIfMajorPerformanceCaveat,\n preserveDrawingBuffer: this._preserveDrawingBuffer,\n antialias: this._antialias || false\n });\n\n const gl = this._canvas.getContext('webgl', attributes) ||\n this._canvas.getContext('experimental-webgl', attributes);\n\n if (!gl) {\n this.fire(new ErrorEvent(new Error('Failed to initialize WebGL')));\n return;\n }\n\n storeAuthState(gl, true);\n\n this.painter = new Painter(gl, this.transform);\n this.on('data', (event: MapDataEvent) => {\n if (event.dataType === 'source') {\n this.painter.setTileLoadedFlag(true);\n }\n });\n\n webpSupported.testSupport(gl);\n }\n\n _contextLost(event: *) {\n event.preventDefault();\n if (this._frame) {\n this._frame.cancel();\n this._frame = null;\n }\n this.fire(new Event('webglcontextlost', {originalEvent: event}));\n }\n\n _contextRestored(event: *) {\n this._setupPainter();\n this.resize();\n this._update();\n this.fire(new Event('webglcontextrestored', {originalEvent: event}));\n }\n\n _onMapScroll(event: *): ?boolean {\n if (event.target !== this._container) return;\n\n // Revert any scroll which would move the canvas outside of the view\n this._container.scrollTop = 0;\n this._container.scrollLeft = 0;\n return false;\n }\n\n /** @section {Lifecycle} */\n\n /**\n * Returns a Boolean indicating whether the map is fully loaded.\n *\n * Returns `false` if the style is not yet fully loaded,\n * or if there has been a change to the sources or style that\n * has not yet fully loaded.\n *\n * @returns {boolean} A Boolean indicating whether the map is fully loaded.\n * @example\n * const isLoaded = map.loaded();\n */\n loaded(): boolean {\n return !this._styleDirty && !this._sourcesDirty && !!this.style && this.style.loaded();\n }\n\n /**\n * Update this map's style and sources, and re-render the map.\n *\n * @param {boolean} updateStyle mark the map's style for reprocessing as\n * well as its sources\n * @returns {Map} this\n * @private\n */\n _update(updateStyle?: boolean): this {\n if (!this.style) return this;\n\n this._styleDirty = this._styleDirty || updateStyle;\n this._sourcesDirty = true;\n this.triggerRepaint();\n\n return this;\n }\n\n /**\n * Request that the given callback be executed during the next render\n * frame. Schedule a render frame if one is not already scheduled.\n * @returns An id that can be used to cancel the callback\n * @private\n */\n _requestRenderFrame(callback: () => void): TaskID {\n this._update();\n return this._renderTaskQueue.add(callback);\n }\n\n _cancelRenderFrame(id: TaskID) {\n this._renderTaskQueue.remove(id);\n }\n\n /**\n * Request that the given callback be executed during the next render frame if the map is not\n * idle. Otherwise it is executed immediately, to avoid triggering a new render.\n * @private\n */\n _requestDomTask(callback: () => void) {\n // This condition means that the map is idle: the callback needs to be called right now as\n // there won't be a triggered render to run the queue.\n if (!this.loaded() || (this.loaded() && !this.isMoving())) {\n callback();\n } else {\n this._domRenderTaskQueue.add(callback);\n }\n }\n\n /**\n * Call when a (re-)render of the map is required:\n * - The style has changed (`setPaintProperty()`, etc.)\n * - Source data has changed (for example, tiles have finished loading)\n * - The map has is moving (or just finished moving)\n * - A transition is in progress\n *\n * @param {number} paintStartTimeStamp The time when the animation frame began executing.\n *\n * @returns {Map} this\n * @private\n */\n _render(paintStartTimeStamp: number) {\n const m = PerformanceUtils.beginMeasure('render');\n\n let gpuTimer;\n const extTimerQuery = this.painter.context.extTimerQuery;\n const frameStartTime = browser.now();\n if (this.listens('gpu-timing-frame')) {\n gpuTimer = extTimerQuery.createQueryEXT();\n extTimerQuery.beginQueryEXT(extTimerQuery.TIME_ELAPSED_EXT, gpuTimer);\n }\n\n // A custom layer may have used the context asynchronously. Mark the state as dirty.\n this.painter.context.setDirty();\n this.painter.setBaseState();\n\n this._renderTaskQueue.run(paintStartTimeStamp);\n this._domRenderTaskQueue.run(paintStartTimeStamp);\n // A task queue callback may have fired a user event which may have removed the map\n if (this._removed) return;\n\n // In globe view, change to/from Mercator when zoom threshold is crossed.\n if (this.getProjection().name === 'globe') {\n if (this.transform.zoom >= GLOBE_ZOOM_THRESHOLD_MAX) {\n if (this.transform.projection.name === 'globe') {\n this._updateProjection();\n }\n } else if (this.transform.projection.name === 'mercator') {\n this._updateProjection();\n }\n }\n\n let crossFading = false;\n const fadeDuration = this._isInitialLoad ? 0 : this._fadeDuration;\n\n // If the style has changed, the map is being zoomed, or a transition or fade is in progress:\n // - Apply style changes (in a batch)\n // - Recalculate paint properties.\n if (this.style && this._styleDirty) {\n this._styleDirty = false;\n\n const zoom = this.transform.zoom;\n const pitch = this.transform.pitch;\n const now = browser.now();\n this.style.zoomHistory.update(zoom, now);\n\n const parameters = new EvaluationParameters(zoom, {\n now,\n fadeDuration,\n pitch,\n zoomHistory: this.style.zoomHistory,\n transition: this.style.getTransition()\n });\n\n const factor = parameters.crossFadingFactor();\n if (factor !== 1 || factor !== this._crossFadingFactor) {\n crossFading = true;\n this._crossFadingFactor = factor;\n }\n\n this.style.update(parameters);\n }\n\n const fogIsTransitioning = this.style && this.style.fog && this.style.fog.hasTransition();\n\n if (fogIsTransitioning) {\n this.style._markersNeedUpdate = true;\n this._sourcesDirty = true;\n }\n\n // If we are in _render for any reason other than an in-progress paint\n // transition, update source caches to check for and load any tiles we\n // need for the current transform\n let averageElevationChanged = false;\n if (this.style && this._sourcesDirty) {\n this._sourcesDirty = false;\n this.painter._updateFog(this.style);\n this._updateTerrain(); // Terrain DEM source updates here and skips update in style._updateSources.\n averageElevationChanged = this._updateAverageElevation(frameStartTime);\n this.style._updateSources(this.transform);\n // Update positions of markers on enabling/disabling terrain\n this._forceMarkerUpdate();\n } else {\n averageElevationChanged = this._updateAverageElevation(frameStartTime);\n }\n\n this._placementDirty = this.style && this.style._updatePlacement(this.painter.transform, this.showCollisionBoxes, fadeDuration, this._crossSourceCollisions);\n\n // Actually draw\n if (this.style) {\n this.painter.render(this.style, {\n showTileBoundaries: this.showTileBoundaries,\n showTerrainWireframe: this.showTerrainWireframe,\n showOverdrawInspector: this._showOverdrawInspector,\n showQueryGeometry: !!this._showQueryGeometry,\n rotating: this.isRotating(),\n zooming: this.isZooming(),\n moving: this.isMoving(),\n fadeDuration,\n isInitialLoad: this._isInitialLoad,\n showPadding: this.showPadding,\n gpuTiming: !!this.listens('gpu-timing-layer'),\n gpuTimingDeferredRender: !!this.listens('gpu-timing-deferred-render'),\n speedIndexTiming: this.speedIndexTiming,\n });\n }\n\n this.fire(new Event('render'));\n\n if (this.loaded() && !this._loaded) {\n this._loaded = true;\n PerformanceUtils.mark(PerformanceMarkers.load);\n this.fire(new Event('load'));\n }\n\n if (this.style && (this.style.hasTransitions() || crossFading)) {\n this._styleDirty = true;\n }\n\n if (this.style && !this._placementDirty) {\n // Since no fade operations are in progress, we can release\n // all tiles held for fading. If we didn't do this, the tiles\n // would just sit in the SourceCaches until the next render\n this.style._releaseSymbolFadeTiles();\n }\n\n if (gpuTimer) {\n const renderCPUTime = browser.now() - frameStartTime;\n extTimerQuery.endQueryEXT(extTimerQuery.TIME_ELAPSED_EXT, gpuTimer);\n setTimeout(() => {\n const renderGPUTime = extTimerQuery.getQueryObjectEXT(gpuTimer, extTimerQuery.QUERY_RESULT_EXT) / (1000 * 1000);\n extTimerQuery.deleteQueryEXT(gpuTimer);\n this.fire(new Event('gpu-timing-frame', {\n cpuTime: renderCPUTime,\n gpuTime: renderGPUTime\n }));\n window.performance.mark('frame-gpu', {\n startTime: frameStartTime,\n detail: {\n gpuTime: renderGPUTime\n }\n });\n }, 50); // Wait 50ms to give time for all GPU calls to finish before querying\n }\n\n PerformanceUtils.endMeasure(m);\n\n if (this.listens('gpu-timing-layer')) {\n // Resetting the Painter's per-layer timing queries here allows us to isolate\n // the queries to individual frames.\n const frameLayerQueries = this.painter.collectGpuTimers();\n\n setTimeout(() => {\n const renderedLayerTimes = this.painter.queryGpuTimers(frameLayerQueries);\n\n this.fire(new Event('gpu-timing-layer', {\n layerTimes: renderedLayerTimes\n }));\n }, 50); // Wait 50ms to give time for all GPU calls to finish before querying\n }\n\n if (this.listens('gpu-timing-deferred-render')) {\n const deferredRenderQueries = this.painter.collectDeferredRenderGpuQueries();\n\n setTimeout(() => {\n const gpuTime = this.painter.queryGpuTimeDeferredRender(deferredRenderQueries);\n this.fire(new Event('gpu-timing-deferred-render', {gpuTime}));\n }, 50); // Wait 50ms to give time for all GPU calls to finish before querying\n }\n\n // Schedule another render frame if it's needed.\n //\n // Even though `_styleDirty` and `_sourcesDirty` are reset in this\n // method, synchronous events fired during Style#update or\n // Style#_updateSources could have caused them to be set again.\n const somethingDirty = this._sourcesDirty || this._styleDirty || this._placementDirty || averageElevationChanged;\n if (somethingDirty || this._repaint) {\n this.triggerRepaint();\n } else {\n const willIdle = !this.isMoving() && this.loaded();\n if (willIdle) {\n // Before idling, we perform one last sample so that if the average elevation\n // does not exactly match the terrain, we skip idle and ease it to its final state.\n averageElevationChanged = this._updateAverageElevation(frameStartTime, true);\n }\n\n if (averageElevationChanged) {\n this.triggerRepaint();\n } else {\n this._triggerFrame(false);\n if (willIdle) {\n this.fire(new Event('idle'));\n this._isInitialLoad = false;\n // check the options to see if need to calculate the speed index\n if (this.speedIndexTiming) {\n const speedIndexNumber = this._calculateSpeedIndex();\n this.fire(new Event('speedindexcompleted', {speedIndex: speedIndexNumber}));\n this.speedIndexTiming = false;\n }\n }\n }\n }\n\n if (this._loaded && !this._fullyLoaded && !somethingDirty) {\n this._fullyLoaded = true;\n // Following line is billing related code. Do not change. See LICENSE.txt\n this._authenticate();\n PerformanceUtils.mark(PerformanceMarkers.fullLoad);\n }\n }\n\n _forceMarkerUpdate() {\n for (const marker of this._markers) {\n marker._update();\n }\n }\n\n /**\n * Update the average visible elevation by sampling terrain\n *\n * @returns {boolean} true if elevation has changed from the last sampling\n * @private\n */\n _updateAverageElevation(timeStamp: number, ignoreTimeout: boolean = false): boolean {\n const applyUpdate = value => {\n this.transform.averageElevation = value;\n this._update(false);\n return true;\n };\n\n if (!this.painter.averageElevationNeedsEasing()) {\n if (this.transform.averageElevation !== 0) return applyUpdate(0);\n return false;\n }\n\n const timeoutElapsed = ignoreTimeout || timeStamp - this._averageElevationLastSampledAt > AVERAGE_ELEVATION_SAMPLING_INTERVAL;\n\n if (timeoutElapsed && !this._averageElevation.isEasing(timeStamp)) {\n const currentElevation = this.transform.averageElevation;\n let newElevation = this.transform.sampleAverageElevation();\n let exaggerationChanged = false;\n if (this.transform.elevation) {\n exaggerationChanged = this.transform.elevation.exaggeration() !== this._averageElevationExaggeration;\n // $FlowIgnore[incompatible-use]\n this._averageElevationExaggeration = this.transform.elevation.exaggeration();\n }\n\n // New elevation is NaN if no terrain tiles were available\n if (isNaN(newElevation)) {\n newElevation = 0;\n } else {\n // Don't activate the timeout if no data was available\n this._averageElevationLastSampledAt = timeStamp;\n }\n const elevationChange = Math.abs(currentElevation - newElevation);\n\n if (elevationChange > AVERAGE_ELEVATION_EASE_THRESHOLD) {\n if (this._isInitialLoad || exaggerationChanged) {\n this._averageElevation.jumpTo(newElevation);\n return applyUpdate(newElevation);\n } else {\n this._averageElevation.easeTo(newElevation, timeStamp, AVERAGE_ELEVATION_EASE_TIME);\n }\n } else if (elevationChange > AVERAGE_ELEVATION_CHANGE_THRESHOLD) {\n this._averageElevation.jumpTo(newElevation);\n return applyUpdate(newElevation);\n }\n }\n\n if (this._averageElevation.isEasing(timeStamp)) {\n return applyUpdate(this._averageElevation.getValue(timeStamp));\n }\n\n return false;\n }\n\n /***** START WARNING - REMOVAL OR MODIFICATION OF THE\n * FOLLOWING CODE VIOLATES THE MAPBOX TERMS OF SERVICE ******\n * The following code is used to access Mapbox's APIs. Removal or modification\n * of this code can result in higher fees and/or\n * termination of your account with Mapbox.\n *\n * Under the Mapbox Terms of Service, you may not use this code to access Mapbox\n * Mapping APIs other than through Mapbox SDKs.\n *\n * The Mapping APIs documentation is available at https://docs.mapbox.com/api/maps/#maps\n * and the Mapbox Terms of Service are available at https://www.mapbox.com/tos/\n ******************************************************************************/\n\n _authenticate() {\n getMapSessionAPI(this._getMapId(), this._requestManager._skuToken, this._requestManager._customAccessToken, (err) => {\n if (err) {\n // throwing an error here will cause the callback to be called again unnecessarily\n if (err.message === AUTH_ERR_MSG || (err: any).status === 401) {\n const gl = this.painter.context.gl;\n storeAuthState(gl, false);\n if (this._logoControl instanceof LogoControl) {\n this._logoControl._updateLogo();\n }\n if (gl) gl.clear(gl.DEPTH_BUFFER_BIT | gl.COLOR_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);\n\n if (!this._silenceAuthErrors) {\n this.fire(new ErrorEvent(new Error('A valid Mapbox access token is required to use Mapbox GL JS. To create an account or a new access token, visit https://account.mapbox.com/')));\n }\n }\n }\n });\n postMapLoadEvent(this._getMapId(), this._requestManager._skuToken, this._requestManager._customAccessToken, () => {});\n }\n\n /***** END WARNING - REMOVAL OR MODIFICATION OF THE\n PRECEDING CODE VIOLATES THE MAPBOX TERMS OF SERVICE ******/\n\n _updateTerrain() {\n // Recalculate if enabled/disabled and calculate elevation cover. As camera is using elevation tiles before\n // render (and deferred update after zoom recalculation), this needs to be called when removing terrain source.\n this.painter.updateTerrain(this.style, this.isMoving() || this.isRotating() || this.isZooming());\n }\n\n _calculateSpeedIndex(): number {\n const finalFrame = this.painter.canvasCopy();\n const canvasCopyInstances = this.painter.getCanvasCopiesAndTimestamps();\n canvasCopyInstances.timeStamps.push(performance.now());\n\n const gl = this.painter.context.gl;\n const framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n\n function read(texture) {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n const pixels = new Uint8Array(gl.drawingBufferWidth * gl.drawingBufferHeight * 4);\n gl.readPixels(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, gl.RGBA, gl.UNSIGNED_BYTE, pixels);\n return pixels;\n }\n\n return this._canvasPixelComparison(read(finalFrame), canvasCopyInstances.canvasCopies.map(read), canvasCopyInstances.timeStamps);\n }\n\n _canvasPixelComparison(finalFrame: Uint8Array, allFrames: Uint8Array[], timeStamps: number[]): number {\n let finalScore = timeStamps[1] - timeStamps[0];\n const numPixels = finalFrame.length / 4;\n\n for (let i = 0; i < allFrames.length; i++) {\n const frame = allFrames[i];\n let cnt = 0;\n for (let j = 0; j < frame.length; j += 4) {\n if (frame[j] === finalFrame[j] &&\n frame[j + 1] === finalFrame[j + 1] &&\n frame[j + 2] === finalFrame[j + 2] &&\n frame[j + 3] === finalFrame[j + 3]) {\n cnt = cnt + 1;\n }\n }\n //calculate the % visual completeness\n const interval = timeStamps[i + 2] - timeStamps[i + 1];\n const visualCompletness = cnt / numPixels;\n finalScore += interval * (1 - visualCompletness);\n }\n return finalScore;\n }\n\n /**\n * Clean up and release all internal resources associated with this map.\n *\n * This includes DOM elements, event bindings, web workers, and WebGL resources.\n *\n * Use this method when you are done using the map and wish to ensure that it no\n * longer consumes browser resources. Afterwards, you must not call any other\n * methods on the map.\n *\n * @example\n * map.remove();\n */\n remove() {\n if (this._hash) this._hash.remove();\n\n for (const control of this._controls) control.onRemove(this);\n this._controls = [];\n\n if (this._frame) {\n this._frame.cancel();\n this._frame = null;\n }\n this._renderTaskQueue.clear();\n this._domRenderTaskQueue.clear();\n if (this.style) {\n this.style.destroy();\n }\n this.painter.destroy();\n if (this.handlers) this.handlers.destroy();\n this.handlers = undefined;\n this.setStyle(null);\n\n if (typeof window !== 'undefined') {\n window.removeEventListener('resize', this._onWindowResize, false);\n window.removeEventListener('orientationchange', this._onWindowResize, false);\n window.removeEventListener('webkitfullscreenchange', this._onWindowResize, false);\n window.removeEventListener('online', this._onWindowOnline, false);\n }\n\n const extension = this.painter.context.gl.getExtension('WEBGL_lose_context');\n if (extension) extension.loseContext();\n removeNode(this._canvasContainer);\n removeNode(this._controlContainer);\n removeNode(this._missingCSSCanary);\n this._container.classList.remove('mapboxgl-map');\n\n PerformanceUtils.clearMetrics();\n removeAuthState(this.painter.context.gl);\n this._removed = true;\n this.fire(new Event('remove'));\n }\n\n /**\n * Trigger the rendering of a single frame. Use this method with custom layers to\n * repaint the map when the layer's properties or properties associated with the\n * layer's source change. Calling this multiple times before the\n * next frame is rendered will still result in only a single frame being rendered.\n *\n * @example\n * map.triggerRepaint();\n * @see [Example: Add a 3D model](https://docs.mapbox.com/mapbox-gl-js/example/add-3d-model/)\n * @see [Example: Add an animated icon to the map](https://docs.mapbox.com/mapbox-gl-js/example/add-image-animated/)\n */\n triggerRepaint() {\n this._triggerFrame(true);\n }\n\n _triggerFrame(render: boolean) {\n this._renderNextFrame = this._renderNextFrame || render;\n if (this.style && !this._frame) {\n this._frame = browser.frame((paintStartTimeStamp: number) => {\n const isRenderFrame = !!this._renderNextFrame;\n PerformanceUtils.frame(paintStartTimeStamp, isRenderFrame);\n this._frame = null;\n this._renderNextFrame = null;\n if (isRenderFrame) {\n this._render(paintStartTimeStamp);\n }\n });\n }\n }\n\n /**\n * Preloads all tiles that will be requested for one or a series of transformations\n *\n * @private\n * @returns {Object} Returns `this` | Promise.\n */\n _preloadTiles(transform: Transform | Array<Transform>): this {\n const sources: Array<SourceCache> = this.style ? (Object.values(this.style._sourceCaches): any) : [];\n asyncAll(sources, (source, done) => source._preloadTiles(transform, done), () => {\n this.triggerRepaint();\n });\n\n return this;\n }\n\n _onWindowOnline() {\n this._update();\n }\n\n _onWindowResize(event: Event) {\n if (this._trackResize) {\n this.resize({originalEvent: event})._update();\n }\n }\n\n /** @section {Debug features} */\n\n /**\n * Gets and sets a Boolean indicating whether the map will render an outline\n * around each tile and the tile ID. These tile boundaries are useful for\n * debugging.\n *\n * The uncompressed file size of the first vector source is drawn in the top left\n * corner of each tile, next to the tile ID.\n *\n * @name showTileBoundaries\n * @type {boolean}\n * @instance\n * @memberof Map\n * @example\n * map.showTileBoundaries = true;\n */\n get showTileBoundaries(): boolean { return !!this._showTileBoundaries; }\n set showTileBoundaries(value: boolean) {\n if (this._showTileBoundaries === value) return;\n this._showTileBoundaries = value;\n this._update();\n }\n\n /**\n * Gets and sets a Boolean indicating whether the map will render a wireframe\n * on top of the displayed terrain. Useful for debugging.\n *\n * The wireframe is always red and is drawn only when terrain is active.\n *\n * @name showTerrainWireframe\n * @type {boolean}\n * @instance\n * @memberof Map\n * @example\n * map.showTerrainWireframe = true;\n */\n get showTerrainWireframe(): boolean { return !!this._showTerrainWireframe; }\n set showTerrainWireframe(value: boolean) {\n if (this._showTerrainWireframe === value) return;\n this._showTerrainWireframe = value;\n this._update();\n }\n\n /**\n * Gets and sets a Boolean indicating whether the speedindex metric calculation is on or off\n *\n * @private\n * @name speedIndexTiming\n * @type {boolean}\n * @instance\n * @memberof Map\n * @example\n * map.speedIndexTiming = true;\n */\n get speedIndexTiming(): boolean { return !!this._speedIndexTiming; }\n set speedIndexTiming(value: boolean) {\n if (this._speedIndexTiming === value) return;\n this._speedIndexTiming = value;\n this._update();\n }\n\n /**\n * Gets and sets a Boolean indicating whether the map will visualize\n * the padding offsets.\n *\n * @name showPadding\n * @type {boolean}\n * @instance\n * @memberof Map\n */\n get showPadding(): boolean { return !!this._showPadding; }\n set showPadding(value: boolean) {\n if (this._showPadding === value) return;\n this._showPadding = value;\n this._update();\n }\n\n /**\n * Gets and sets a Boolean indicating whether the map will render boxes\n * around all symbols in the data source, revealing which symbols\n * were rendered or which were hidden due to collisions.\n * This information is useful for debugging.\n *\n * @name showCollisionBoxes\n * @type {boolean}\n * @instance\n * @memberof Map\n */\n get showCollisionBoxes(): boolean { return !!this._showCollisionBoxes; }\n set showCollisionBoxes(value: boolean) {\n if (this._showCollisionBoxes === value) return;\n this._showCollisionBoxes = value;\n if (value) {\n // When we turn collision boxes on we have to generate them for existing tiles\n // When we turn them off, there's no cost to leaving existing boxes in place\n this.style._generateCollisionBoxes();\n } else {\n // Otherwise, call an update to remove collision boxes\n this._update();\n }\n }\n\n /*\n * Gets and sets a Boolean indicating whether the map should color-code\n * each fragment to show how many times it has been shaded.\n * White fragments have been shaded 8 or more times.\n * Black fragments have been shaded 0 times.\n * This information is useful for debugging.\n *\n * @name showOverdraw\n * @type {boolean}\n * @instance\n * @memberof Map\n */\n get showOverdrawInspector(): boolean { return !!this._showOverdrawInspector; }\n set showOverdrawInspector(value: boolean) {\n if (this._showOverdrawInspector === value) return;\n this._showOverdrawInspector = value;\n this._update();\n }\n\n /**\n * Gets and sets a Boolean indicating whether the map will\n * continuously repaint. This information is useful for analyzing performance.\n *\n * @name repaint\n * @type {boolean}\n * @instance\n * @memberof Map\n */\n get repaint(): boolean { return !!this._repaint; }\n set repaint(value: boolean) {\n if (this._repaint !== value) {\n this._repaint = value;\n this.triggerRepaint();\n }\n }\n // show vertices\n get vertices(): boolean { return !!this._vertices; }\n set vertices(value: boolean) { this._vertices = value; this._update(); }\n\n // for cache browser tests\n _setCacheLimits(limit: number, checkThreshold: number) {\n setCacheLimits(limit, checkThreshold);\n }\n\n /**\n * The version of Mapbox GL JS in use as specified in package.json, CHANGELOG.md, and the GitHub release.\n *\n * @name version\n * @instance\n * @memberof Map\n * @var {string} version\n */\n\n get version(): string { return version; }\n}\n\nexport default Map;\n\nfunction removeNode(node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\n\n/**\n * Interface for interactive controls added to the map. This is a\n * specification for implementers to model: it is not\n * an exported method or class.\n *\n * Controls must implement `onAdd` and `onRemove`, and must own an\n * element, which is often a `div` element. To use Mapbox GL JS's\n * default control styling, add the `mapboxgl-ctrl` class to your control's\n * node.\n *\n * @interface IControl\n * @example\n * // Control implemented as ES6 class\n * class HelloWorldControl {\n * onAdd(map) {\n * this._map = map;\n * this._container = document.createElement('div');\n * this._container.className = 'mapboxgl-ctrl';\n * this._container.textContent = 'Hello, world';\n * return this._container;\n * }\n *\n * onRemove() {\n * this._container.parentNode.removeChild(this._container);\n * this._map = undefined;\n * }\n * }\n *\n * @example\n * // Control implemented as ES5 prototypical class\n * function HelloWorldControl() { }\n *\n * HelloWorldControl.prototype.onAdd = function(map) {\n * this._map = map;\n * this._container = document.createElement('div');\n * this._container.className = 'mapboxgl-ctrl';\n * this._container.textContent = 'Hello, world';\n * return this._container;\n * };\n *\n * HelloWorldControl.prototype.onRemove = function () {\n * this._container.parentNode.removeChild(this._container);\n * this._map = undefined;\n * };\n */\n\n/**\n * Register a control on the map and give it a chance to register event listeners\n * and resources. This method is called by {@link Map#addControl}\n * internally.\n *\n * @function\n * @memberof IControl\n * @instance\n * @name onAdd\n * @param {Map} map The Map this control will be added to.\n * @returns {HTMLElement} The control's container element. This should\n * be created by the control and returned by onAdd without being attached\n * to the DOM: the map will insert the control's element into the DOM\n * as necessary.\n */\n\n/**\n * Unregister a control on the map and give it a chance to detach event listeners\n * and resources. This method is called by {@link Map#removeControl}\n * internally.\n *\n * @function\n * @memberof IControl\n * @instance\n * @name onRemove\n * @param {Map} map The Map this control will be removed from.\n * @returns {undefined} There is no required return value for this method.\n */\n\n/**\n * Optionally provide a default position for this control. If this method\n * is implemented and {@link Map#addControl} is called without the `position`\n * parameter, the value returned by getDefaultPosition will be used as the\n * control's position.\n *\n * @function\n * @memberof IControl\n * @instance\n * @name getDefaultPosition\n * @returns {string} A control position, one of the values valid in addControl.\n */\n\n/**\n * A [`Point` geometry](https://github.com/mapbox/point-geometry) object, which has\n * `x` and `y` properties representing screen coordinates in pixels.\n *\n * @typedef {Point} Point\n * @example\n * const point = new mapboxgl.Point(-77, 38);\n */\n\n/**\n * A {@link Point} or an array of two numbers representing `x` and `y` screen coordinates in pixels.\n *\n * @typedef {(Point | Array<number>)} PointLike\n * @example\n * const p1 = new mapboxgl.Point(-77, 38); // a PointLike which is a Point\n * const p2 = [-77, 38]; // a PointLike which is an array of two numbers\n */\n","// @flow\n\nimport * as DOM from '../../util/dom.js';\nimport {extend, bindAll} from '../../util/util.js';\nimport {MouseRotateHandler, MousePitchHandler} from '../handler/mouse.js';\nimport window from '../../util/window.js';\n\nimport type Map from '../map.js';\nimport type Point from '@mapbox/point-geometry';\n\ntype Options = {\n showCompass?: boolean,\n showZoom?: boolean,\n visualizePitch?: boolean\n};\n\nconst defaultOptions: Options = {\n showCompass: true,\n showZoom: true,\n visualizePitch: false\n};\n\n/**\n * A `NavigationControl` control contains zoom buttons and a compass.\n * Add this control to a map using {@link Map#addControl}.\n *\n * @implements {IControl}\n * @param {Object} [options]\n * @param {boolean} [options.showCompass=true] If `true` the compass button is included.\n * @param {boolean} [options.showZoom=true] If `true` the zoom-in and zoom-out buttons are included.\n * @param {boolean} [options.visualizePitch=false] If `true` the pitch is visualized by rotating X-axis of compass.\n * @example\n * const nav = new mapboxgl.NavigationControl();\n * map.addControl(nav, 'top-left');\n * @example\n * const nav = new mapboxgl.NavigationControl({\n * visualizePitch: true\n * });\n * map.addControl(nav, 'bottom-right');\n * @see [Example: Display map navigation controls](https://www.mapbox.com/mapbox-gl-js/example/navigation/)\n * @see [Example: Add a third party vector tile source](https://www.mapbox.com/mapbox-gl-js/example/third-party/)\n */\nclass NavigationControl {\n _map: ?Map;\n options: Options;\n _container: HTMLElement;\n _zoomInButton: HTMLButtonElement;\n _zoomOutButton: HTMLButtonElement;\n _compass: HTMLButtonElement;\n _compassIcon: HTMLElement;\n _handler: ?MouseRotateWrapper;\n\n constructor(options: Options) {\n this.options = extend({}, defaultOptions, options);\n\n this._container = DOM.create('div', 'mapboxgl-ctrl mapboxgl-ctrl-group');\n this._container.addEventListener('contextmenu', (e: MouseEvent) => e.preventDefault());\n\n if (this.options.showZoom) {\n bindAll([\n '_setButtonTitle',\n '_updateZoomButtons'\n ], this);\n this._zoomInButton = this._createButton('mapboxgl-ctrl-zoom-in', (e) => { if (this._map) this._map.zoomIn({}, {originalEvent: e}); });\n DOM.create('span', `mapboxgl-ctrl-icon`, this._zoomInButton).setAttribute('aria-hidden', 'true');\n this._zoomOutButton = this._createButton('mapboxgl-ctrl-zoom-out', (e) => { if (this._map) this._map.zoomOut({}, {originalEvent: e}); });\n DOM.create('span', `mapboxgl-ctrl-icon`, this._zoomOutButton).setAttribute('aria-hidden', 'true');\n }\n if (this.options.showCompass) {\n bindAll([\n '_rotateCompassArrow'\n ], this);\n this._compass = this._createButton('mapboxgl-ctrl-compass', (e) => {\n const map = this._map;\n if (!map) return;\n if (this.options.visualizePitch) {\n map.resetNorthPitch({}, {originalEvent: e});\n } else {\n map.resetNorth({}, {originalEvent: e});\n }\n });\n this._compassIcon = DOM.create('span', 'mapboxgl-ctrl-icon', this._compass);\n this._compassIcon.setAttribute('aria-hidden', 'true');\n }\n }\n\n _updateZoomButtons() {\n const map = this._map;\n if (!map) return;\n\n const zoom = map.getZoom();\n const isMax = zoom === map.getMaxZoom();\n const isMin = zoom === map.getMinZoom();\n this._zoomInButton.disabled = isMax;\n this._zoomOutButton.disabled = isMin;\n this._zoomInButton.setAttribute('aria-disabled', isMax.toString());\n this._zoomOutButton.setAttribute('aria-disabled', isMin.toString());\n }\n\n _rotateCompassArrow() {\n const map = this._map;\n if (!map) return;\n\n const rotate = this.options.visualizePitch ?\n `scale(${1 / Math.pow(Math.cos(map.transform.pitch * (Math.PI / 180)), 0.5)}) rotateX(${map.transform.pitch}deg) rotateZ(${map.transform.angle * (180 / Math.PI)}deg)` :\n `rotate(${map.transform.angle * (180 / Math.PI)}deg)`;\n\n map._requestDomTask(() => {\n if (this._compassIcon) {\n this._compassIcon.style.transform = rotate;\n }\n });\n }\n\n onAdd(map: Map): HTMLElement {\n this._map = map;\n if (this.options.showZoom) {\n this._setButtonTitle(this._zoomInButton, 'ZoomIn');\n this._setButtonTitle(this._zoomOutButton, 'ZoomOut');\n map.on('zoom', this._updateZoomButtons);\n this._updateZoomButtons();\n }\n if (this.options.showCompass) {\n this._setButtonTitle(this._compass, 'ResetBearing');\n if (this.options.visualizePitch) {\n map.on('pitch', this._rotateCompassArrow);\n }\n map.on('rotate', this._rotateCompassArrow);\n this._rotateCompassArrow();\n this._handler = new MouseRotateWrapper(map, this._compass, this.options.visualizePitch);\n }\n return this._container;\n }\n\n onRemove() {\n const map = this._map;\n if (!map) return;\n this._container.remove();\n if (this.options.showZoom) {\n map.off('zoom', this._updateZoomButtons);\n }\n if (this.options.showCompass) {\n if (this.options.visualizePitch) {\n map.off('pitch', this._rotateCompassArrow);\n }\n map.off('rotate', this._rotateCompassArrow);\n if (this._handler) this._handler.off();\n this._handler = undefined;\n }\n this._map = undefined;\n }\n\n _createButton(className: string, fn: () => mixed): HTMLButtonElement {\n const a = DOM.create('button', className, this._container);\n a.type = 'button';\n a.addEventListener('click', fn);\n return a;\n }\n\n _setButtonTitle(button: HTMLButtonElement, title: string) {\n if (!this._map) return;\n const str = this._map._getUIString(`NavigationControl.${title}`);\n button.setAttribute('aria-label', str);\n if (button.firstElementChild) button.firstElementChild.setAttribute('title', str);\n }\n}\n\nclass MouseRotateWrapper {\n\n map: Map;\n _clickTolerance: number;\n element: HTMLElement;\n mouseRotate: MouseRotateHandler;\n mousePitch: MousePitchHandler;\n _startPos: Point;\n _lastPos: Point;\n\n constructor(map: Map, element: HTMLElement, pitch?: boolean = false) {\n this._clickTolerance = 10;\n this.element = element;\n this.mouseRotate = new MouseRotateHandler({clickTolerance: map.dragRotate._mouseRotate._clickTolerance});\n this.map = map;\n if (pitch) this.mousePitch = new MousePitchHandler({clickTolerance: map.dragRotate._mousePitch._clickTolerance});\n\n bindAll(['mousedown', 'mousemove', 'mouseup', 'touchstart', 'touchmove', 'touchend', 'reset'], this);\n element.addEventListener('mousedown', this.mousedown);\n element.addEventListener('touchstart', this.touchstart, {passive: false});\n element.addEventListener('touchmove', this.touchmove);\n element.addEventListener('touchend', this.touchend);\n element.addEventListener('touchcancel', this.reset);\n }\n\n down(e: MouseEvent, point: Point) {\n this.mouseRotate.mousedown(e, point);\n if (this.mousePitch) this.mousePitch.mousedown(e, point);\n DOM.disableDrag();\n }\n\n move(e: MouseEvent, point: Point) {\n const map = this.map;\n const r = this.mouseRotate.mousemoveWindow(e, point);\n const delta = r && r.bearingDelta;\n if (delta) map.setBearing(map.getBearing() + delta);\n if (this.mousePitch) {\n const p = this.mousePitch.mousemoveWindow(e, point);\n const delta = p && p.pitchDelta;\n if (delta) map.setPitch(map.getPitch() + delta);\n }\n }\n\n off() {\n const element = this.element;\n element.removeEventListener('mousedown', this.mousedown);\n element.removeEventListener('touchstart', this.touchstart, {passive: false});\n element.removeEventListener('touchmove', this.touchmove);\n element.removeEventListener('touchend', this.touchend);\n element.removeEventListener('touchcancel', this.reset);\n this.offTemp();\n }\n\n offTemp() {\n DOM.enableDrag();\n window.removeEventListener('mousemove', this.mousemove);\n window.removeEventListener('mouseup', this.mouseup);\n }\n\n mousedown(e: MouseEvent) {\n this.down(extend({}, e, {ctrlKey: true, preventDefault: () => e.preventDefault()}), DOM.mousePos(this.element, e));\n window.addEventListener('mousemove', this.mousemove);\n window.addEventListener('mouseup', this.mouseup);\n }\n\n mousemove(e: MouseEvent) {\n this.move(e, DOM.mousePos(this.element, e));\n }\n\n mouseup(e: MouseEvent) {\n this.mouseRotate.mouseupWindow(e);\n if (this.mousePitch) this.mousePitch.mouseupWindow(e);\n this.offTemp();\n }\n\n touchstart(e: TouchEvent) {\n if (e.targetTouches.length !== 1) {\n this.reset();\n } else {\n this._startPos = this._lastPos = DOM.touchPos(this.element, e.targetTouches)[0];\n this.down((({type: 'mousedown', button: 0, ctrlKey: true, preventDefault: () => e.preventDefault()}: any): MouseEvent), this._startPos);\n }\n }\n\n touchmove(e: TouchEvent) {\n if (e.targetTouches.length !== 1) {\n this.reset();\n } else {\n this._lastPos = DOM.touchPos(this.element, e.targetTouches)[0];\n this.move((({preventDefault: () => e.preventDefault()}: any): MouseEvent), this._lastPos);\n }\n }\n\n touchend(e: TouchEvent) {\n if (e.targetTouches.length === 0 &&\n this._startPos &&\n this._lastPos &&\n this._startPos.dist(this._lastPos) < this._clickTolerance) {\n this.element.click();\n }\n this.reset();\n }\n\n reset() {\n this.mouseRotate.reset();\n if (this.mousePitch) this.mousePitch.reset();\n delete this._startPos;\n delete this._lastPos;\n this.offTemp();\n }\n}\n\nexport default NavigationControl;\n","// @flow\n\nimport {Event, Evented} from '../../util/evented.js';\nimport * as DOM from '../../util/dom.js';\nimport window from '../../util/window.js';\nimport {extend, bindAll, warnOnce} from '../../util/util.js';\nimport assert from 'assert';\nimport Marker from '../marker.js';\nimport LngLat from '../../geo/lng_lat.js';\nimport throttle from '../../util/throttle.js';\nimport {mercatorZfromAltitude} from '../../geo/mercator_coordinate.js';\n\nimport type Map from '../map.js';\nimport type {AnimationOptions, CameraOptions} from '../camera.js';\n\ntype Options = {\n positionOptions: PositionOptions,\n fitBoundsOptions: AnimationOptions & CameraOptions,\n trackUserLocation: boolean,\n showAccuracyCircle: boolean,\n showUserLocation: boolean,\n showUserHeading: boolean,\n geolocation: Geolocation,\n};\n\ntype DeviceOrientationEvent = {\n absolute: boolean,\n alpha: number,\n beta: number,\n gamma: number,\n requestPermission: Promise<String>,\n webkitCompassHeading?: number,\n}\n\nconst defaultOptions = {\n positionOptions: {\n enableHighAccuracy: false,\n maximumAge: 0,\n timeout: 6000 /* 6 sec */\n },\n fitBoundsOptions: {\n maxZoom: 15\n },\n trackUserLocation: false,\n showAccuracyCircle: true,\n showUserLocation: true,\n showUserHeading: false\n};\n\n/**\n * A `GeolocateControl` control provides a button that uses the browser's geolocation\n * API to locate the user on the map.\n * Add this control to a map using {@link Map#addControl}.\n *\n * Not all browsers support geolocation,\n * and some users may disable the feature. Geolocation support for modern\n * browsers including Chrome requires sites to be served over HTTPS. If\n * geolocation support is not available, the GeolocateControl will show\n * as disabled.\n *\n * The [zoom level](https://docs.mapbox.com/help/glossary/zoom-level/) applied depends on the accuracy of the geolocation provided by the device.\n *\n * The GeolocateControl has two modes. If `trackUserLocation` is `false` (default) the control acts as a button, which when pressed will set the map's camera to target the user location. If the user moves, the map won't update. This is most suited for the desktop. If `trackUserLocation` is `true` the control acts as a toggle button that when active the user's location is actively monitored for changes. In this mode the GeolocateControl has three interaction states:\n * * active - The map's camera automatically updates as the user's location changes, keeping the location dot in the center. This is the initial state, and the state upon clicking the `GeolocateControl` button.\n * * passive - The user's location dot automatically updates, but the map's camera does not. Occurs upon the user initiating a map movement.\n * * disabled - Occurs if geolocation is not available, disabled, or denied.\n *\n * These interaction states can't be controlled programmatically. Instead, they are set based on user interactions.\n *\n * @implements {IControl}\n * @param {Object} [options]\n * @param {Object} [options.positionOptions={enableHighAccuracy: false, timeout: 6000}] A Geolocation API [PositionOptions](https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions) object.\n * @param {Object} [options.fitBoundsOptions={maxZoom: 15}] A {@link Map#fitBounds} options object to use when the map is panned and zoomed to the user's location. The default is to use a `maxZoom` of 15 to limit how far the map will zoom in for very accurate locations.\n * @param {Object} [options.trackUserLocation=false] If `true` the GeolocateControl becomes a toggle button and when active the map will receive updates to the user's location as it changes.\n * @param {Object} [options.showAccuracyCircle=true] By default, if `showUserLocation` is `true`, a transparent circle will be drawn around the user location indicating the accuracy (95% confidence level) of the user's location. Set to `false` to disable. Always disabled when `showUserLocation` is `false`.\n * @param {Object} [options.showUserLocation=true] By default a dot will be shown on the map at the user's location. Set to `false` to disable.\n * @param {Object} [options.showUserHeading=false] If `true` an arrow will be drawn next to the user location dot indicating the device's heading. This only has affect when `trackUserLocation` is `true`.\n * @param {Object} [options.geolocation=window.navigator.geolocation] `window.navigator.geolocation` by default; you can provide an object with the same shape to customize geolocation handling.\n *\n * @example\n * map.addControl(new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true,\n * showUserHeading: true\n * }));\n * @see [Example: Locate the user](https://www.mapbox.com/mapbox-gl-js/example/locate-user/)\n */\nclass GeolocateControl extends Evented {\n _map: Map;\n options: Options;\n _container: HTMLElement;\n _dotElement: HTMLElement;\n _circleElement: HTMLElement;\n _geolocateButton: HTMLButtonElement;\n _geolocationWatchID: number;\n _timeoutId: ?TimeoutID;\n _watchState: 'OFF' | 'ACTIVE_LOCK' | 'WAITING_ACTIVE' | 'ACTIVE_ERROR' | 'BACKGROUND' | 'BACKGROUND_ERROR';\n _lastKnownPosition: any;\n _userLocationDotMarker: Marker;\n _accuracyCircleMarker: Marker;\n _accuracy: number;\n _setup: boolean; // set to true once the control has been setup\n _heading: ?number;\n _updateMarkerRotationThrottled: Function;\n\n _numberOfWatches: number;\n _noTimeout: boolean;\n _supportsGeolocation: boolean;\n\n constructor(options: $Shape<Options>) {\n super();\n const geolocation = window.navigator.geolocation;\n this.options = extend({geolocation}, defaultOptions, options);\n\n bindAll([\n '_onSuccess',\n '_onError',\n '_onZoom',\n '_finish',\n '_setupUI',\n '_updateCamera',\n '_updateMarker',\n '_updateMarkerRotation',\n '_onDeviceOrientation'\n ], this);\n\n this._updateMarkerRotationThrottled = throttle(this._updateMarkerRotation, 20);\n this._numberOfWatches = 0;\n }\n\n onAdd(map: Map): HTMLElement {\n this._map = map;\n this._container = DOM.create('div', `mapboxgl-ctrl mapboxgl-ctrl-group`);\n this._checkGeolocationSupport(this._setupUI);\n return this._container;\n }\n\n onRemove() {\n // clear the geolocation watch if exists\n if (this._geolocationWatchID !== undefined) {\n this.options.geolocation.clearWatch(this._geolocationWatchID);\n this._geolocationWatchID = (undefined: any);\n }\n\n // clear the markers from the map\n if (this.options.showUserLocation && this._userLocationDotMarker) {\n this._userLocationDotMarker.remove();\n }\n if (this.options.showAccuracyCircle && this._accuracyCircleMarker) {\n this._accuracyCircleMarker.remove();\n }\n\n this._container.remove();\n this._map.off('zoom', this._onZoom);\n this._map = (undefined: any);\n this._numberOfWatches = 0;\n this._noTimeout = false;\n }\n\n _checkGeolocationSupport(callback: (supported: boolean) => any) {\n if (this._supportsGeolocation !== undefined) {\n callback(this._supportsGeolocation);\n } else if (window.navigator.permissions !== undefined) {\n // navigator.permissions has incomplete browser support\n // http://caniuse.com/#feat=permissions-api\n // Test for the case where a browser disables Geolocation because of an\n // insecure origin\n window.navigator.permissions.query({name: 'geolocation'}).then((p) => {\n this._supportsGeolocation = p.state !== 'denied';\n callback(this._supportsGeolocation);\n });\n } else {\n this._supportsGeolocation = !!this.options.geolocation;\n callback(this._supportsGeolocation);\n }\n }\n\n /**\n * Check if the Geolocation API Position is outside the map's maxbounds.\n *\n * @param {Position} position the Geolocation API Position\n * @returns {boolean} Returns `true` if position is outside the map's maxbounds, otherwise returns `false`.\n * @private\n */\n _isOutOfMapMaxBounds(position: Position): boolean {\n const bounds = this._map.getMaxBounds();\n const coordinates = position.coords;\n\n return !!bounds && (\n coordinates.longitude < bounds.getWest() ||\n coordinates.longitude > bounds.getEast() ||\n coordinates.latitude < bounds.getSouth() ||\n coordinates.latitude > bounds.getNorth()\n );\n }\n\n _setErrorState() {\n switch (this._watchState) {\n case 'WAITING_ACTIVE':\n this._watchState = 'ACTIVE_ERROR';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active-error');\n break;\n case 'ACTIVE_LOCK':\n this._watchState = 'ACTIVE_ERROR';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active-error');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n // turn marker grey\n break;\n case 'BACKGROUND':\n this._watchState = 'BACKGROUND_ERROR';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background-error');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n // turn marker grey\n break;\n case 'ACTIVE_ERROR':\n break;\n default:\n assert(false, `Unexpected watchState ${this._watchState}`);\n }\n }\n\n /**\n * When the Geolocation API returns a new location, update the GeolocateControl.\n *\n * @param {Position} position the Geolocation API Position\n * @private\n */\n _onSuccess(position: Position) {\n if (!this._map) {\n // control has since been removed\n return;\n }\n\n if (this._isOutOfMapMaxBounds(position)) {\n this._setErrorState();\n\n this.fire(new Event('outofmaxbounds', position));\n this._updateMarker();\n this._finish();\n\n return;\n }\n\n if (this.options.trackUserLocation) {\n // keep a record of the position so that if the state is BACKGROUND and the user\n // clicks the button, we can move to ACTIVE_LOCK immediately without waiting for\n // watchPosition to trigger _onSuccess\n this._lastKnownPosition = position;\n\n switch (this._watchState) {\n case 'WAITING_ACTIVE':\n case 'ACTIVE_LOCK':\n case 'ACTIVE_ERROR':\n this._watchState = 'ACTIVE_LOCK';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active-error');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active');\n break;\n case 'BACKGROUND':\n case 'BACKGROUND_ERROR':\n this._watchState = 'BACKGROUND';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background-error');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background');\n break;\n default:\n assert(false, `Unexpected watchState ${this._watchState}`);\n }\n }\n\n // if showUserLocation and the watch state isn't off then update the marker location\n if (this.options.showUserLocation && this._watchState !== 'OFF') {\n this._updateMarker(position);\n }\n\n // if in normal mode (not watch mode), or if in watch mode and the state is active watch\n // then update the camera\n if (!this.options.trackUserLocation || this._watchState === 'ACTIVE_LOCK') {\n this._updateCamera(position);\n }\n\n if (this.options.showUserLocation) {\n this._dotElement.classList.remove('mapboxgl-user-location-dot-stale');\n }\n\n this.fire(new Event('geolocate', position));\n this._finish();\n }\n\n /**\n * Update the camera location to center on the current position\n *\n * @param {Position} position the Geolocation API Position\n * @private\n */\n _updateCamera(position: Position) {\n const center = new LngLat(position.coords.longitude, position.coords.latitude);\n const radius = position.coords.accuracy;\n const bearing = this._map.getBearing();\n const options = extend({bearing}, this.options.fitBoundsOptions);\n\n this._map.fitBounds(center.toBounds(radius), options, {\n geolocateSource: true // tag this camera change so it won't cause the control to change to background state\n });\n }\n\n /**\n * Update the user location dot Marker to the current position\n *\n * @param {Position} [position] the Geolocation API Position\n * @private\n */\n _updateMarker(position: ?Position) {\n if (position) {\n const center = new LngLat(position.coords.longitude, position.coords.latitude);\n this._accuracyCircleMarker.setLngLat(center).addTo(this._map);\n this._userLocationDotMarker.setLngLat(center).addTo(this._map);\n this._accuracy = position.coords.accuracy;\n if (this.options.showUserLocation && this.options.showAccuracyCircle) {\n this._updateCircleRadius();\n }\n } else {\n this._userLocationDotMarker.remove();\n this._accuracyCircleMarker.remove();\n }\n }\n\n _updateCircleRadius() {\n assert(this._circleElement);\n const map = this._map;\n const tr = map.transform;\n\n const pixelsPerMeter = mercatorZfromAltitude(1.0, tr._center.lat) * tr.worldSize;\n assert(pixelsPerMeter !== 0.0);\n const circleDiameter = Math.ceil(2.0 * this._accuracy * pixelsPerMeter);\n\n this._circleElement.style.width = `${circleDiameter}px`;\n this._circleElement.style.height = `${circleDiameter}px`;\n }\n\n _onZoom() {\n if (this.options.showUserLocation && this.options.showAccuracyCircle) {\n this._updateCircleRadius();\n }\n }\n\n /**\n * Update the user location dot Marker rotation to the current heading\n *\n * @private\n */\n _updateMarkerRotation() {\n if (this._userLocationDotMarker && typeof this._heading === 'number') {\n this._userLocationDotMarker.setRotation(this._heading);\n this._dotElement.classList.add('mapboxgl-user-location-show-heading');\n } else {\n this._dotElement.classList.remove('mapboxgl-user-location-show-heading');\n this._userLocationDotMarker.setRotation(0);\n }\n }\n\n _onError(error: PositionError) {\n if (!this._map) {\n // control has since been removed\n return;\n }\n\n if (this.options.trackUserLocation) {\n if (error.code === 1) {\n // PERMISSION_DENIED\n this._watchState = 'OFF';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active-error');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background-error');\n this._geolocateButton.disabled = true;\n const title = this._map._getUIString('GeolocateControl.LocationNotAvailable');\n this._geolocateButton.setAttribute('aria-label', title);\n if (this._geolocateButton.firstElementChild) this._geolocateButton.firstElementChild.setAttribute('title', title);\n\n if (this._geolocationWatchID !== undefined) {\n this._clearWatch();\n }\n } else if (error.code === 3 && this._noTimeout) {\n // this represents a forced error state\n // this was triggered to force immediate geolocation when a watch is already present\n // see https://github.com/mapbox/mapbox-gl-js/issues/8214\n // and https://w3c.github.io/geolocation-api/#example-5-forcing-the-user-agent-to-return-a-fresh-cached-position\n return;\n } else {\n this._setErrorState();\n }\n }\n\n if (this._watchState !== 'OFF' && this.options.showUserLocation) {\n this._dotElement.classList.add('mapboxgl-user-location-dot-stale');\n }\n\n this.fire(new Event('error', error));\n\n this._finish();\n }\n\n _finish() {\n if (this._timeoutId) { clearTimeout(this._timeoutId); }\n this._timeoutId = undefined;\n }\n\n _setupUI(supported: boolean) {\n this._container.addEventListener('contextmenu', (e: MouseEvent) => e.preventDefault());\n this._geolocateButton = DOM.create('button', `mapboxgl-ctrl-geolocate`, this._container);\n DOM.create('span', `mapboxgl-ctrl-icon`, this._geolocateButton).setAttribute('aria-hidden', 'true');\n\n this._geolocateButton.type = 'button';\n\n if (supported === false) {\n warnOnce('Geolocation support is not available so the GeolocateControl will be disabled.');\n const title = this._map._getUIString('GeolocateControl.LocationNotAvailable');\n this._geolocateButton.disabled = true;\n this._geolocateButton.setAttribute('aria-label', title);\n if (this._geolocateButton.firstElementChild) this._geolocateButton.firstElementChild.setAttribute('title', title);\n } else {\n const title = this._map._getUIString('GeolocateControl.FindMyLocation');\n this._geolocateButton.setAttribute('aria-label', title);\n if (this._geolocateButton.firstElementChild) this._geolocateButton.firstElementChild.setAttribute('title', title);\n }\n\n if (this.options.trackUserLocation) {\n this._geolocateButton.setAttribute('aria-pressed', 'false');\n this._watchState = 'OFF';\n }\n\n // when showUserLocation is enabled, keep the Geolocate button disabled until the device location marker is setup on the map\n if (this.options.showUserLocation) {\n this._dotElement = DOM.create('div', 'mapboxgl-user-location');\n this._dotElement.appendChild(DOM.create('div', 'mapboxgl-user-location-dot'));\n this._dotElement.appendChild(DOM.create('div', 'mapboxgl-user-location-heading'));\n\n this._userLocationDotMarker = new Marker({\n element: this._dotElement,\n rotationAlignment: 'map',\n pitchAlignment: 'map'\n });\n\n this._circleElement = DOM.create('div', 'mapboxgl-user-location-accuracy-circle');\n this._accuracyCircleMarker = new Marker({element: this._circleElement, pitchAlignment: 'map'});\n\n if (this.options.trackUserLocation) this._watchState = 'OFF';\n\n this._map.on('zoom', this._onZoom);\n }\n\n this._geolocateButton.addEventListener('click',\n this.trigger.bind(this));\n\n this._setup = true;\n\n // when the camera is changed (and it's not as a result of the Geolocation Control) change\n // the watch mode to background watch, so that the marker is updated but not the camera.\n if (this.options.trackUserLocation) {\n this._map.on('movestart', (event) => {\n const fromResize = event.originalEvent && event.originalEvent.type === 'resize';\n if (!event.geolocateSource && this._watchState === 'ACTIVE_LOCK' && !fromResize) {\n this._watchState = 'BACKGROUND';\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n\n this.fire(new Event('trackuserlocationend'));\n }\n });\n }\n }\n\n /**\n * Programmatically request and move the map to the user's location.\n *\n * @returns {boolean} Returns `false` if called before control was added to a map, otherwise returns `true`.\n * Called on a deviceorientation event.\n *\n * @param deviceOrientationEvent {DeviceOrientationEvent}\n * @private\n * @example\n * // Initialize the GeolocateControl.\n * var geolocate = new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true\n * });\n * // Add the control to the map.\n * map.addControl(geolocate);\n * map.on('load', function() {\n * geolocate.trigger();\n * });\n */\n _onDeviceOrientation(deviceOrientationEvent: DeviceOrientationEvent) {\n // absolute is true if the orientation data is provided as the difference between the Earth's coordinate frame and the device's coordinate frame, or false if the orientation data is being provided in reference to some arbitrary, device-determined coordinate frame.\n if (this._userLocationDotMarker) {\n if (deviceOrientationEvent.webkitCompassHeading) {\n // Safari\n this._heading = deviceOrientationEvent.webkitCompassHeading;\n } else if (deviceOrientationEvent.absolute === true) {\n // non-Safari alpha increases counter clockwise around the z axis\n this._heading = deviceOrientationEvent.alpha * -1;\n }\n this._updateMarkerRotationThrottled();\n }\n }\n\n /**\n * Trigger a geolocation event.\n *\n * @example\n * // Initialize the geolocate control.\n * const geolocate = new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true\n * });\n * // Add the control to the map.\n * map.addControl(geolocate);\n * map.on('load', () => {\n * geolocate.trigger();\n * });\n * @returns {boolean} Returns `false` if called before control was added to a map, otherwise returns `true`.\n */\n trigger(): boolean {\n if (!this._setup) {\n warnOnce('Geolocate control triggered before added to a map');\n return false;\n }\n if (this.options.trackUserLocation) {\n // update watchState and do any outgoing state cleanup\n switch (this._watchState) {\n case 'OFF':\n // turn on the GeolocateControl\n this._watchState = 'WAITING_ACTIVE';\n\n this.fire(new Event('trackuserlocationstart'));\n break;\n case 'WAITING_ACTIVE':\n case 'ACTIVE_LOCK':\n case 'ACTIVE_ERROR':\n case 'BACKGROUND_ERROR':\n // turn off the Geolocate Control\n this._numberOfWatches--;\n this._noTimeout = false;\n this._watchState = 'OFF';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active-error');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background');\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background-error');\n\n this.fire(new Event('trackuserlocationend'));\n break;\n case 'BACKGROUND':\n this._watchState = 'ACTIVE_LOCK';\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-background');\n // set camera to last known location\n if (this._lastKnownPosition) this._updateCamera(this._lastKnownPosition);\n\n this.fire(new Event('trackuserlocationstart'));\n break;\n default:\n assert(false, `Unexpected watchState ${this._watchState}`);\n }\n\n // incoming state setup\n switch (this._watchState) {\n case 'WAITING_ACTIVE':\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active');\n break;\n case 'ACTIVE_LOCK':\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active');\n break;\n case 'ACTIVE_ERROR':\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-active-error');\n break;\n case 'BACKGROUND':\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background');\n break;\n case 'BACKGROUND_ERROR':\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background-error');\n break;\n case 'OFF':\n break;\n default:\n assert(false, `Unexpected watchState ${this._watchState}`);\n }\n\n // manage geolocation.watchPosition / geolocation.clearWatch\n if (this._watchState === 'OFF' && this._geolocationWatchID !== undefined) {\n // clear watchPosition as we've changed to an OFF state\n this._clearWatch();\n } else if (this._geolocationWatchID === undefined) {\n // enable watchPosition since watchState is not OFF and there is no watchPosition already running\n\n this._geolocateButton.classList.add('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.setAttribute('aria-pressed', 'true');\n\n this._numberOfWatches++;\n let positionOptions;\n if (this._numberOfWatches > 1) {\n positionOptions = {maximumAge:600000, timeout:0};\n this._noTimeout = true;\n } else {\n positionOptions = this.options.positionOptions;\n this._noTimeout = false;\n }\n\n this._geolocationWatchID = this.options.geolocation.watchPosition(\n this._onSuccess, this._onError, positionOptions);\n\n if (this.options.showUserHeading) {\n this._addDeviceOrientationListener();\n }\n }\n } else {\n this.options.geolocation.getCurrentPosition(\n this._onSuccess, this._onError, this.options.positionOptions);\n\n // This timeout ensures that we still call finish() even if\n // the user declines to share their location in Firefox\n this._timeoutId = setTimeout(this._finish, 10000 /* 10sec */);\n }\n\n return true;\n }\n\n _addDeviceOrientationListener() {\n const addListener = () => {\n if ('ondeviceorientationabsolute' in window) {\n window.addEventListener('deviceorientationabsolute', this._onDeviceOrientation);\n } else {\n window.addEventListener('deviceorientation', this._onDeviceOrientation);\n }\n };\n\n if (typeof window.DeviceMotionEvent !== \"undefined\" &&\n typeof window.DeviceMotionEvent.requestPermission === 'function') {\n // $FlowFixMe\n DeviceOrientationEvent.requestPermission()\n .then(response => {\n if (response === 'granted') {\n addListener();\n }\n })\n .catch(console.error);\n } else {\n addListener();\n }\n }\n\n _clearWatch() {\n this.options.geolocation.clearWatch(this._geolocationWatchID);\n\n window.removeEventListener('deviceorientation', this._onDeviceOrientation);\n window.removeEventListener('deviceorientationabsolute', this._onDeviceOrientation);\n\n this._geolocationWatchID = (undefined: any);\n this._geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-waiting');\n this._geolocateButton.setAttribute('aria-pressed', 'false');\n\n if (this.options.showUserLocation) {\n this._updateMarker(null);\n }\n }\n}\n\nexport default GeolocateControl;\n\n/* GeolocateControl Watch States\n * This is the private state of the control.\n *\n * OFF\n * off/inactive\n * WAITING_ACTIVE\n * GeolocateControl was clicked but still waiting for Geolocation API response with user location\n * ACTIVE_LOCK\n * Showing the user location as a dot AND tracking the camera to be fixed to their location. If their location changes the map moves to follow.\n * ACTIVE_ERROR\n * There was en error from the Geolocation API while trying to show and track the user location.\n * BACKGROUND\n * Showing the user location as a dot but the camera doesn't follow their location as it changes.\n * BACKGROUND_ERROR\n * There was an error from the Geolocation API while trying to show (but not track) the user location.\n */\n\n/**\n * Fired on each Geolocation API position update that returned as success.\n *\n * @event geolocate\n * @memberof GeolocateControl\n * @instance\n * @property {Position} data The returned [Position](https://developer.mozilla.org/en-US/docs/Web/API/Position) object from the callback in [Geolocation.getCurrentPosition()](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition) or [Geolocation.watchPosition()](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition).\n * @example\n * // Initialize the GeolocateControl.\n * const geolocate = new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true\n * });\n * // Add the control to the map.\n * map.addControl(geolocate);\n * // Set an event listener that fires\n * // when a geolocate event occurs.\n * geolocate.on('geolocate', () => {\n * console.log('A geolocate event has occurred.');\n * });\n *\n */\n\n/**\n * Fired on each Geolocation API position update that returned as an error.\n *\n * @event error\n * @memberof GeolocateControl\n * @instance\n * @property {PositionError} data The returned [PositionError](https://developer.mozilla.org/en-US/docs/Web/API/PositionError) object from the callback in [Geolocation.getCurrentPosition()](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition) or [Geolocation.watchPosition()](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition).\n * @example\n * // Initialize the GeolocateControl.\n * const geolocate = new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true\n * });\n * // Add the control to the map.\n * map.addControl(geolocate);\n * // Set an event listener that fires\n * // when an error event occurs.\n * geolocate.on('error', () => {\n * console.log('An error event has occurred.');\n * });\n *\n */\n\n/**\n * Fired on each Geolocation API position update that returned as success but user position is out of map `maxBounds`.\n *\n * @event outofmaxbounds\n * @memberof GeolocateControl\n * @instance\n * @property {Position} data The returned [Position](https://developer.mozilla.org/en-US/docs/Web/API/Position) object from the callback in [Geolocation.getCurrentPosition()](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition) or [Geolocation.watchPosition()](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition).\n * @example\n * // Initialize the GeolocateControl.\n * const geolocate = new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true\n * });\n * // Add the control to the map.\n * map.addControl(geolocate);\n * // Set an event listener that fires\n * // when an outofmaxbounds event occurs.\n * geolocate.on('outofmaxbounds', () => {\n * console.log('An outofmaxbounds event has occurred.');\n * });\n *\n */\n\n/**\n * Fired when the GeolocateControl changes to the active lock state, which happens either upon first obtaining a successful Geolocation API position for the user (a geolocate event will follow), or when the user clicks the geolocate button when in the background state, which uses the last known position to recenter the map and enter active lock state (no geolocate event will follow unless the users's location changes).\n *\n * @event trackuserlocationstart\n * @memberof GeolocateControl\n * @instance\n * @example\n * // Initialize the GeolocateControl.\n * const geolocate = new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true\n * });\n * // Add the control to the map.\n * map.addControl(geolocate);\n * // Set an event listener that fires\n * // when a trackuserlocationstart event occurs.\n * geolocate.on('trackuserlocationstart', () => {\n * console.log('A trackuserlocationstart event has occurred.');\n * });\n *\n */\n\n/**\n * Fired when the GeolocateControl changes to the background state, which happens when a user changes the camera during an active position lock. This only applies when trackUserLocation is true. In the background state, the dot on the map will update with location updates but the camera will not.\n *\n * @event trackuserlocationend\n * @memberof GeolocateControl\n * @instance\n * @example\n * // Initialize the GeolocateControl.\n * const geolocate = new mapboxgl.GeolocateControl({\n * positionOptions: {\n * enableHighAccuracy: true\n * },\n * trackUserLocation: true\n * });\n * // Add the control to the map.\n * map.addControl(geolocate);\n * // Set an event listener that fires\n * // when a trackuserlocationend event occurs.\n * geolocate.on('trackuserlocationend', () => {\n * console.log('A trackuserlocationend event has occurred.');\n * });\n *\n */\n","// @flow\n\nimport * as DOM from '../../util/dom.js';\nimport {extend, bindAll} from '../../util/util.js';\n\nimport type Map, {ControlPosition} from '../map.js';\n\ntype Unit = 'imperial' | 'metric' | 'nautical';\n\ntype Options = {\n maxWidth?: number,\n unit?: Unit;\n};\n\nconst defaultOptions: Options = {\n maxWidth: 100,\n unit: 'metric'\n};\n\n/**\n * A `ScaleControl` control displays the ratio of a distance on the map to the corresponding distance on the ground.\n * Add this control to a map using {@link Map#addControl}.\n *\n * @implements {IControl}\n * @param {Object} [options]\n * @param {number} [options.maxWidth='100'] The maximum length of the scale control in pixels.\n * @param {string} [options.unit='metric'] Unit of the distance (`'imperial'`, `'metric'` or `'nautical'`).\n * @example\n * const scale = new mapboxgl.ScaleControl({\n * maxWidth: 80,\n * unit: 'imperial'\n * });\n * map.addControl(scale);\n *\n * scale.setUnit('metric');\n */\nclass ScaleControl {\n _map: Map;\n _container: HTMLElement;\n _language: ?string;\n options: Options;\n\n constructor(options: Options) {\n this.options = extend({}, defaultOptions, options);\n\n // Some old browsers (e.g., Safari < 14.1) don't support the \"unit\" style.\n // This is a workaround to display the scale without proper internationalization support.\n if (!isNumberFormatSupported()) {\n // $FlowIgnore[cannot-write]\n this._setScale = legacySetScale.bind(this);\n }\n\n bindAll([\n '_update',\n '_setScale',\n 'setUnit'\n ], this);\n }\n\n getDefaultPosition(): ControlPosition {\n return 'bottom-left';\n }\n\n _update() {\n // A horizontal scale is imagined to be present at center of the map\n // container with maximum length (Default) as 100px.\n // Using spherical law of cosines approximation, the real distance is\n // found between the two coordinates.\n const maxWidth = this.options.maxWidth || 100;\n\n const map = this._map;\n const y = map._containerHeight / 2;\n const x = (map._containerWidth / 2) - maxWidth / 2;\n const left = map.unproject([x, y]);\n const right = map.unproject([x + maxWidth, y]);\n const maxMeters = left.distanceTo(right);\n // The real distance corresponding to 100px scale length is rounded off to\n // near pretty number and the scale length for the same is found out.\n // Default unit of the scale is based on User's locale.\n if (this.options.unit === 'imperial') {\n const maxFeet = 3.2808 * maxMeters;\n if (maxFeet > 5280) {\n const maxMiles = maxFeet / 5280;\n this._setScale(maxWidth, maxMiles, 'mile');\n } else {\n this._setScale(maxWidth, maxFeet, 'foot');\n }\n } else if (this.options.unit === 'nautical') {\n const maxNauticals = maxMeters / 1852;\n this._setScale(maxWidth, maxNauticals, 'nautical-mile');\n } else if (maxMeters >= 1000) {\n this._setScale(maxWidth, maxMeters / 1000, 'kilometer');\n } else {\n this._setScale(maxWidth, maxMeters, 'meter');\n }\n }\n\n _setScale(maxWidth: number, maxDistance: number, unit: string) {\n const distance = getRoundNum(maxDistance);\n const ratio = distance / maxDistance;\n\n this._map._requestDomTask(() => {\n this._container.style.width = `${maxWidth * ratio}px`;\n\n // Intl.NumberFormat doesn't support nautical-mile as a unit,\n // so we are hardcoding `nm` as a unit symbol for all locales\n if (unit === 'nautical-mile') {\n this._container.innerHTML = `${distance} nm`;\n return;\n }\n\n // $FlowFixMe — flow v0.142.0 doesn't support optional `locales` argument and `unit` style option\n this._container.innerHTML = new Intl.NumberFormat(this._language, {style: 'unit', unitDisplay: 'narrow', unit}).format(distance);\n });\n }\n\n onAdd(map: Map): HTMLElement {\n this._map = map;\n this._language = map.getLanguage();\n this._container = DOM.create('div', 'mapboxgl-ctrl mapboxgl-ctrl-scale', map.getContainer());\n this._container.dir = 'auto';\n\n this._map.on('move', this._update);\n this._update();\n\n return this._container;\n }\n\n onRemove() {\n this._container.remove();\n this._map.off('move', this._update);\n this._map = (undefined: any);\n }\n\n _setLanguage(language: string) {\n this._language = language;\n this._update();\n }\n\n /**\n * Set the scale's unit of the distance.\n *\n * @param {'imperial' | 'metric' | 'nautical'} unit Unit of the distance (`'imperial'`, `'metric'` or `'nautical'`).\n */\n setUnit(unit: Unit) {\n this.options.unit = unit;\n this._update();\n }\n}\n\nexport default ScaleControl;\n\nfunction isNumberFormatSupported() {\n try {\n // $FlowIgnore\n new Intl.NumberFormat('en', {style: 'unit', unitDisplay: 'narrow', unit: 'meter'});\n return true;\n } catch (_) {\n return false;\n }\n}\n\nfunction legacySetScale(maxWidth: number, maxDistance: number, unit: string) {\n const distance = getRoundNum(maxDistance);\n const ratio = distance / maxDistance;\n\n const unitAbbr = {\n kilometer: 'km',\n meter: 'm',\n mile: 'mi',\n foot: 'ft',\n 'nautical-mile': 'nm',\n }[unit];\n\n this._map._requestDomTask(() => {\n this._container.style.width = `${maxWidth * ratio}px`;\n this._container.innerHTML = `${distance} ${unitAbbr}`;\n });\n}\n\nfunction getDecimalRoundNum(d) {\n const multiplier = Math.pow(10, Math.ceil(-Math.log(d) / Math.LN10));\n return Math.round(d * multiplier) / multiplier;\n}\n\nfunction getRoundNum(num) {\n const pow10 = Math.pow(10, (`${Math.floor(num)}`).length - 1);\n let d = num / pow10;\n\n d = d >= 10 ? 10 :\n d >= 5 ? 5 :\n d >= 3 ? 3 :\n d >= 2 ? 2 :\n d >= 1 ? 1 : getDecimalRoundNum(d);\n\n return pow10 * d;\n}\n","// @flow\n\nimport {extend, bindAll} from '../util/util.js';\nimport {Event, Evented} from '../util/evented.js';\nimport {MapMouseEvent} from '../ui/events.js';\nimport * as DOM from '../util/dom.js';\nimport LngLat from '../geo/lng_lat.js';\nimport Point from '@mapbox/point-geometry';\nimport window from '../util/window.js';\nimport smartWrap from '../util/smart_wrap.js';\nimport {type Anchor, anchorTranslate} from './anchor.js';\nimport {isLngLatBehindGlobe} from '../geo/projection/globe_util.js';\n\nimport type Map from './map.js';\nimport type {LngLatLike} from '../geo/lng_lat.js';\nimport type {PointLike} from '@mapbox/point-geometry';\nimport type Marker from './marker.js';\n\nconst defaultOptions = {\n closeButton: true,\n closeOnClick: true,\n focusAfterOpen: true,\n className: '',\n maxWidth: \"240px\"\n};\n\nexport type Offset = number | PointLike | {[_: Anchor]: PointLike};\n\nexport type PopupOptions = {\n closeButton?: boolean,\n closeOnClick?: boolean,\n closeOnMove?: boolean,\n focusAfterOpen?: boolean,\n anchor?: Anchor,\n offset?: Offset,\n className?: string,\n maxWidth?: string\n};\n\nconst focusQuerySelector = [\n \"a[href]\",\n \"[tabindex]:not([tabindex='-1'])\",\n \"[contenteditable]:not([contenteditable='false'])\",\n \"button:not([disabled])\",\n \"input:not([disabled])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n].join(\", \");\n\n/**\n * A popup component.\n *\n * @param {Object} [options]\n * @param {boolean} [options.closeButton=true] If `true`, a close button will appear in the\n * top right corner of the popup.\n * @param {boolean} [options.closeOnClick=true] If `true`, the popup will close when the\n * map is clicked.\n * @param {boolean} [options.closeOnMove=false] If `true`, the popup will close when the\n * map moves.\n * @param {boolean} [options.focusAfterOpen=true] If `true`, the popup will try to focus the\n * first focusable element inside the popup.\n * @param {string} [options.anchor] - A string indicating the part of the popup that should\n * be positioned closest to the coordinate, set via {@link Popup#setLngLat}.\n * Options are `'center'`, `'top'`, `'bottom'`, `'left'`, `'right'`, `'top-left'`,\n * `'top-right'`, `'bottom-left'`, and `'bottom-right'`. If unset, the anchor will be\n * dynamically set to ensure the popup falls within the map container with a preference\n * for `'bottom'`.\n * @param {number | PointLike | Object} [options.offset] -\n * A pixel offset applied to the popup's location specified as:\n * - a single number specifying a distance from the popup's location\n * - a {@link PointLike} specifying a constant offset\n * - an object of {@link Point}s specifing an offset for each anchor position.\n *\n * Negative offsets indicate left and up.\n * @param {string} [options.className] Space-separated CSS class names to add to popup container.\n * @param {string} [options.maxWidth='240px'] -\n * A string that sets the CSS property of the popup's maximum width (for example, `'300px'`).\n * To ensure the popup resizes to fit its content, set this property to `'none'`.\n * See the MDN documentation for the list of [available values](https://developer.mozilla.org/en-US/docs/Web/CSS/max-width).\n * @example\n * const markerHeight = 50;\n * const markerRadius = 10;\n * const linearOffset = 25;\n * const popupOffsets = {\n * 'top': [0, 0],\n * 'top-left': [0, 0],\n * 'top-right': [0, 0],\n * 'bottom': [0, -markerHeight],\n * 'bottom-left': [linearOffset, (markerHeight - markerRadius + linearOffset) * -1],\n * 'bottom-right': [-linearOffset, (markerHeight - markerRadius + linearOffset) * -1],\n * 'left': [markerRadius, (markerHeight - markerRadius) * -1],\n * 'right': [-markerRadius, (markerHeight - markerRadius) * -1]\n * };\n * const popup = new mapboxgl.Popup({offset: popupOffsets, className: 'my-class'})\n * .setLngLat(e.lngLat)\n * .setHTML(\"<h1>Hello World!</h1>\")\n * .setMaxWidth(\"300px\")\n * .addTo(map);\n * @see [Example: Display a popup](https://www.mapbox.com/mapbox-gl-js/example/popup/)\n * @see [Example: Display a popup on hover](https://www.mapbox.com/mapbox-gl-js/example/popup-on-hover/)\n * @see [Example: Display a popup on click](https://www.mapbox.com/mapbox-gl-js/example/popup-on-click/)\n * @see [Example: Attach a popup to a marker instance](https://www.mapbox.com/mapbox-gl-js/example/set-popup/)\n */\nexport default class Popup extends Evented {\n _map: ?Map;\n options: PopupOptions;\n _content: ?HTMLElement;\n _container: ?HTMLElement;\n _closeButton: ?HTMLElement;\n _tip: ?HTMLElement;\n _lngLat: LngLat;\n _trackPointer: boolean;\n _pos: ?Point;\n _anchor: Anchor;\n _classList: Set<string>;\n _marker: ?Marker;\n\n constructor(options: PopupOptions) {\n super();\n this.options = extend(Object.create(defaultOptions), options);\n bindAll(['_update', '_onClose', 'remove', '_onMouseEvent'], this);\n this._classList = new Set(options && options.className ?\n options.className.trim().split(/\\s+/) : []);\n }\n\n /**\n * Adds the popup to a map.\n *\n * @param {Map} map The Mapbox GL JS map to add the popup to.\n * @returns {Popup} Returns itself to allow for method chaining.\n * @example\n * new mapboxgl.Popup()\n * .setLngLat([0, 0])\n * .setHTML(\"<h1>Null Island</h1>\")\n * .addTo(map);\n * @see [Example: Display a popup](https://docs.mapbox.com/mapbox-gl-js/example/popup/)\n * @see [Example: Display a popup on hover](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-hover/)\n * @see [Example: Display a popup on click](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-click/)\n * @see [Example: Show polygon information on click](https://docs.mapbox.com/mapbox-gl-js/example/polygon-popup-on-click/)\n */\n addTo(map: Map): this {\n if (this._map) this.remove();\n\n this._map = map;\n if (this.options.closeOnClick) {\n map.on('preclick', this._onClose);\n }\n\n if (this.options.closeOnMove) {\n map.on('move', this._onClose);\n }\n\n map.on('remove', this.remove);\n this._update();\n this._focusFirstElement();\n\n if (this._trackPointer) {\n map.on('mousemove', this._onMouseEvent);\n map.on('mouseup', this._onMouseEvent);\n map._canvasContainer.classList.add('mapboxgl-track-pointer');\n } else {\n map.on('move', this._update);\n }\n\n /**\n * Fired when the popup is opened manually or programatically.\n *\n * @event open\n * @memberof Popup\n * @instance\n * @type {Object}\n * @property {Popup} popup Object that was opened.\n *\n * @example\n * // Create a popup\n * const popup = new mapboxgl.Popup();\n * // Set an event listener that will fire\n * // any time the popup is opened\n * popup.on('open', () => {\n * console.log('popup was opened');\n * });\n *\n */\n this.fire(new Event('open'));\n\n return this;\n }\n\n /**\n * Checks if a popup is open.\n *\n * @returns {boolean} `true` if the popup is open, `false` if it is closed.\n * @example\n * const isPopupOpen = popup.isOpen();\n */\n isOpen(): boolean {\n return !!this._map;\n }\n\n /**\n * Removes the popup from the map it has been added to.\n *\n * @example\n * const popup = new mapboxgl.Popup().addTo(map);\n * popup.remove();\n * @returns {Popup} Returns itself to allow for method chaining.\n */\n remove(): this {\n if (this._content) {\n this._content.remove();\n }\n\n if (this._container) {\n this._container.remove();\n this._container = undefined;\n }\n\n const map = this._map;\n if (map) {\n map.off('move', this._update);\n map.off('move', this._onClose);\n map.off('preclick', this._onClose);\n map.off('click', this._onClose);\n map.off('remove', this.remove);\n map.off('mousemove', this._onMouseEvent);\n map.off('mouseup', this._onMouseEvent);\n map.off('drag', this._onMouseEvent);\n this._map = undefined;\n }\n\n /**\n * Fired when the popup is closed manually or programatically.\n *\n * @event close\n * @memberof Popup\n * @instance\n * @type {Object}\n * @property {Popup} popup Object that was closed.\n *\n * @example\n * // Create a popup\n * const popup = new mapboxgl.Popup();\n * // Set an event listener that will fire\n * // any time the popup is closed\n * popup.on('close', () => {\n * console.log('popup was closed');\n * });\n *\n */\n this.fire(new Event('close'));\n\n return this;\n }\n\n /**\n * Returns the geographical location of the popup's anchor.\n *\n * The longitude of the result may differ by a multiple of 360 degrees from the longitude previously\n * set by `setLngLat` because `Popup` wraps the anchor longitude across copies of the world to keep\n * the popup on screen.\n *\n * @returns {LngLat} The geographical location of the popup's anchor.\n * @example\n * const lngLat = popup.getLngLat();\n */\n getLngLat(): LngLat {\n return this._lngLat;\n }\n\n /**\n * Sets the geographical location of the popup's anchor, and moves the popup to it. Replaces trackPointer() behavior.\n *\n * @param {LngLatLike} lnglat The geographical location to set as the popup's anchor.\n * @returns {Popup} Returns itself to allow for method chaining.\n * @example\n * popup.setLngLat([-122.4194, 37.7749]);\n */\n setLngLat(lnglat: LngLatLike): this {\n this._lngLat = LngLat.convert(lnglat);\n this._pos = null;\n\n this._trackPointer = false;\n\n this._update();\n\n const map = this._map;\n if (map) {\n map.on('move', this._update);\n map.off('mousemove', this._onMouseEvent);\n map._canvasContainer.classList.remove('mapboxgl-track-pointer');\n }\n\n return this;\n }\n\n /**\n * Tracks the popup anchor to the cursor position on screens with a pointer device (it will be hidden on touchscreens). Replaces the `setLngLat` behavior.\n * For most use cases, set `closeOnClick` and `closeButton` to `false`.\n *\n * @example\n * const popup = new mapboxgl.Popup({closeOnClick: false, closeButton: false})\n * .setHTML(\"<h1>Hello World!</h1>\")\n * .trackPointer()\n * .addTo(map);\n * @returns {Popup} Returns itself to allow for method chaining.\n */\n trackPointer(): this {\n this._trackPointer = true;\n this._pos = null;\n this._update();\n const map = this._map;\n if (map) {\n map.off('move', this._update);\n map.on('mousemove', this._onMouseEvent);\n map.on('drag', this._onMouseEvent);\n map._canvasContainer.classList.add('mapboxgl-track-pointer');\n }\n\n return this;\n\n }\n\n /**\n * Returns the `Popup`'s HTML element.\n *\n * @example\n * // Change the `Popup` element's font size\n * const popup = new mapboxgl.Popup()\n * .setLngLat([-96, 37.8])\n * .setHTML(\"<p>Hello World!</p>\")\n * .addTo(map);\n * const popupElem = popup.getElement();\n * popupElem.style.fontSize = \"25px\";\n * @returns {HTMLElement} Returns container element.\n */\n getElement(): ?HTMLElement {\n return this._container;\n }\n\n /**\n * Sets the popup's content to a string of text.\n *\n * This function creates a [Text](https://developer.mozilla.org/en-US/docs/Web/API/Text) node in the DOM,\n * so it cannot insert raw HTML. Use this method for security against XSS\n * if the popup content is user-provided.\n *\n * @param {string} text Textual content for the popup.\n * @returns {Popup} Returns itself to allow for method chaining.\n * @example\n * const popup = new mapboxgl.Popup()\n * .setLngLat(e.lngLat)\n * .setText('Hello, world!')\n * .addTo(map);\n */\n setText(text: string): this {\n return this.setDOMContent(window.document.createTextNode(text));\n }\n\n /**\n * Sets the popup's content to the HTML provided as a string.\n *\n * This method does not perform HTML filtering or sanitization, and must be\n * used only with trusted content. Consider {@link Popup#setText} if\n * the content is an untrusted text string.\n *\n * @param {string} html A string representing HTML content for the popup.\n * @returns {Popup} Returns itself to allow for method chaining.\n * @example\n * const popup = new mapboxgl.Popup()\n * .setLngLat(e.lngLat)\n * .setHTML(\"<h1>Hello World!</h1>\")\n * .addTo(map);\n * @see [Example: Display a popup](https://docs.mapbox.com/mapbox-gl-js/example/popup/)\n * @see [Example: Display a popup on hover](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-hover/)\n * @see [Example: Display a popup on click](https://docs.mapbox.com/mapbox-gl-js/example/popup-on-click/)\n * @see [Example: Attach a popup to a marker instance](https://docs.mapbox.com/mapbox-gl-js/example/set-popup/)\n */\n setHTML(html: string): this {\n const frag = window.document.createDocumentFragment();\n const temp = window.document.createElement('body');\n let child;\n temp.innerHTML = html;\n while (true) {\n child = temp.firstChild;\n if (!child) break;\n frag.appendChild(child);\n }\n\n return this.setDOMContent(frag);\n }\n\n /**\n * Returns the popup's maximum width.\n *\n * @returns {string} The maximum width of the popup.\n * @example\n * const maxWidth = popup.getMaxWidth();\n */\n getMaxWidth(): ?string {\n return this._container && this._container.style.maxWidth;\n }\n\n /**\n * Sets the popup's maximum width. This is setting the CSS property `max-width`.\n * Available values can be found here: https://developer.mozilla.org/en-US/docs/Web/CSS/max-width.\n *\n * @param {string} maxWidth A string representing the value for the maximum width.\n * @returns {Popup} Returns itself to allow for method chaining.\n * @example\n * popup.setMaxWidth('50');\n */\n setMaxWidth(maxWidth: string): this {\n this.options.maxWidth = maxWidth;\n this._update();\n return this;\n }\n\n /**\n * Sets the popup's content to the element provided as a DOM node.\n *\n * @param {Element} htmlNode A DOM node to be used as content for the popup.\n * @returns {Popup} Returns itself to allow for method chaining.\n * @example\n * // create an element with the popup content\n * const div = window.document.createElement('div');\n * div.innerHTML = 'Hello, world!';\n * const popup = new mapboxgl.Popup()\n * .setLngLat(e.lngLat)\n * .setDOMContent(div)\n * .addTo(map);\n */\n setDOMContent(htmlNode: Node): this {\n let content = this._content;\n if (content) {\n // Clear out children first.\n while (content.hasChildNodes()) {\n if (content.firstChild) {\n content.removeChild(content.firstChild);\n }\n }\n } else {\n content = this._content = DOM.create('div', 'mapboxgl-popup-content', this._container || undefined);\n }\n\n // The close button should be the last tabbable element inside the popup for a good keyboard UX.\n content.appendChild(htmlNode);\n\n if (this.options.closeButton) {\n const button = this._closeButton = DOM.create('button', 'mapboxgl-popup-close-button', content);\n button.type = 'button';\n button.setAttribute('aria-label', 'Close popup');\n button.setAttribute('aria-hidden', 'true');\n button.innerHTML = '×';\n button.addEventListener('click', this._onClose);\n }\n this._update();\n this._focusFirstElement();\n return this;\n }\n\n /**\n * Adds a CSS class to the popup container element.\n *\n * @param {string} className Non-empty string with CSS class name to add to popup container.\n * @returns {Popup} Returns itself to allow for method chaining.\n *\n * @example\n * const popup = new mapboxgl.Popup();\n * popup.addClassName('some-class');\n */\n addClassName(className: string): this {\n this._classList.add(className);\n this._updateClassList();\n return this;\n }\n\n /**\n * Removes a CSS class from the popup container element.\n *\n * @param {string} className Non-empty string with CSS class name to remove from popup container.\n *\n * @returns {Popup} Returns itself to allow for method chaining.\n * @example\n * const popup = new mapboxgl.Popup({className: 'some classes'});\n * popup.removeClassName('some');\n */\n removeClassName(className: string): this {\n this._classList.delete(className);\n this._updateClassList();\n return this;\n }\n\n /**\n * Sets the popup's offset.\n *\n * @param {number | PointLike | Object} offset Sets the popup's offset. The `Object` is of the following structure\n * {\n * 'center': ?PointLike,\n * 'top': ?PointLike,\n * 'bottom': ?PointLike,\n * 'left': ?PointLike,\n * 'right': ?PointLike,\n * 'top-left': ?PointLike,\n * 'top-right': ?PointLike,\n * 'bottom-left': ?PointLike,\n * 'bottom-right': ?PointLike\n * }.\n *\n * @returns {Popup} `this`.\n * @example\n * popup.setOffset(10);\n */\n setOffset (offset?: Offset): this {\n this.options.offset = offset;\n this._update();\n return this;\n }\n\n /**\n * Add or remove the given CSS class on the popup container, depending on whether the container currently has that class.\n *\n * @param {string} className Non-empty string with CSS class name to add/remove.\n *\n * @returns {boolean} If the class was removed return `false`. If the class was added, then return `true`.\n *\n * @example\n * const popup = new mapboxgl.Popup();\n * popup.toggleClassName('highlighted');\n */\n toggleClassName(className: string): boolean {\n let finalState: boolean;\n if (this._classList.delete(className)) {\n finalState = false;\n } else {\n this._classList.add(className);\n finalState = true;\n }\n this._updateClassList();\n return finalState;\n }\n\n _onMouseEvent(event: MapMouseEvent) {\n this._update(event.point);\n }\n\n _getAnchor(bottomY: number): Anchor {\n if (this.options.anchor) { return this.options.anchor; }\n\n const map = this._map;\n const container = this._container;\n const pos = this._pos;\n\n if (!map || !container || !pos) return 'bottom';\n\n const width = container.offsetWidth;\n const height = container.offsetHeight;\n\n const isTop = pos.y + bottomY < height;\n const isBottom = pos.y > map.transform.height - height;\n const isLeft = pos.x < width / 2;\n const isRight = pos.x > map.transform.width - width / 2;\n\n if (isTop) {\n if (isLeft) return 'top-left';\n if (isRight) return 'top-right';\n return 'top';\n }\n if (isBottom) {\n if (isLeft) return 'bottom-left';\n if (isRight) return 'bottom-right';\n }\n if (isLeft) return 'left';\n if (isRight) return 'right';\n\n return 'bottom';\n }\n\n _updateClassList() {\n const container = this._container;\n if (!container) return;\n\n const classes = [...this._classList];\n classes.push('mapboxgl-popup');\n if (this._anchor) {\n classes.push(`mapboxgl-popup-anchor-${this._anchor}`);\n }\n if (this._trackPointer) {\n classes.push('mapboxgl-popup-track-pointer');\n }\n container.className = classes.join(' ');\n }\n\n _update(cursor?: Point) {\n const hasPosition = this._lngLat || this._trackPointer;\n const map = this._map;\n const content = this._content;\n\n if (!map || !hasPosition || !content) { return; }\n\n let container = this._container;\n\n if (!container) {\n container = this._container = DOM.create('div', 'mapboxgl-popup', map.getContainer());\n this._tip = DOM.create('div', 'mapboxgl-popup-tip', container);\n container.appendChild(content);\n }\n\n if (this.options.maxWidth && container.style.maxWidth !== this.options.maxWidth) {\n container.style.maxWidth = this.options.maxWidth;\n }\n\n if (map.transform.renderWorldCopies && !this._trackPointer) {\n this._lngLat = smartWrap(this._lngLat, this._pos, map.transform);\n }\n\n if (!this._trackPointer || cursor) {\n const pos = this._pos = this._trackPointer && cursor ? cursor : map.project(this._lngLat);\n\n const offsetBottom = normalizeOffset(this.options.offset);\n const anchor = this._anchor = this._getAnchor(offsetBottom.y);\n const offset = normalizeOffset(this.options.offset, anchor);\n\n const offsetedPos = pos.add(offset).round();\n map._requestDomTask(() => {\n if (this._container && anchor) {\n this._container.style.transform = `${anchorTranslate[anchor]} translate(${offsetedPos.x}px,${offsetedPos.y}px)`;\n }\n });\n }\n\n if (!this._marker && map._usingGlobe()) {\n const opacity = isLngLatBehindGlobe(map.transform, this._lngLat) ? 0 : 1;\n this._setOpacity(opacity);\n }\n\n this._updateClassList();\n }\n\n _focusFirstElement() {\n if (!this.options.focusAfterOpen || !this._container) return;\n\n const firstFocusable = this._container.querySelector(focusQuerySelector);\n\n if (firstFocusable) firstFocusable.focus();\n }\n\n _onClose() {\n this.remove();\n }\n\n _setOpacity(opacity: number) {\n if (this._container) {\n this._container.style.opacity = `${opacity}`;\n }\n if (this._content) {\n this._content.style.pointerEvents = opacity ? 'auto' : 'none';\n }\n }\n}\n\n// returns a normalized offset for a given anchor\nfunction normalizeOffset(offset: Offset = new Point(0, 0), anchor: Anchor = 'bottom'): Point {\n if (typeof offset === 'number') {\n // input specifies a radius from which to calculate offsets at all positions\n const cornerOffset = Math.round(Math.sqrt(0.5 * Math.pow(offset, 2)));\n switch (anchor) {\n case 'top': return new Point(0, offset);\n case 'top-left': return new Point(cornerOffset, cornerOffset);\n case 'top-right': return new Point(-cornerOffset, cornerOffset);\n case 'bottom': return new Point(0, -offset);\n case 'bottom-left': return new Point(cornerOffset, -cornerOffset);\n case 'bottom-right': return new Point(-cornerOffset, -cornerOffset);\n case 'left': return new Point(offset, 0);\n case 'right': return new Point(-offset, 0);\n }\n return new Point(0, 0);\n }\n\n if (offset instanceof Point || Array.isArray(offset)) {\n // input specifies a single offset to be applied to all positions\n return Point.convert(offset);\n }\n\n // input specifies an offset per position\n return Point.convert(offset[anchor] || [0, 0]);\n}\n","// @flow\n\nimport {PerformanceUtils} from './util/performance.js';\n\nimport assert from 'assert';\nimport {supported} from '@mapbox/mapbox-gl-supported';\n\nimport {version} from '../package.json';\nimport Map from './ui/map.js';\nimport NavigationControl from './ui/control/navigation_control.js';\nimport GeolocateControl from './ui/control/geolocate_control.js';\nimport AttributionControl from './ui/control/attribution_control.js';\nimport ScaleControl from './ui/control/scale_control.js';\nimport FullscreenControl from './ui/control/fullscreen_control.js';\nimport Popup from './ui/popup.js';\nimport Marker from './ui/marker.js';\nimport Style from './style/style.js';\nimport LngLat from './geo/lng_lat.js';\nimport LngLatBounds from './geo/lng_lat_bounds.js';\nimport Point from '@mapbox/point-geometry';\nimport MercatorCoordinate from './geo/mercator_coordinate.js';\nimport {Evented} from './util/evented.js';\nimport config from './util/config.js';\nimport {Debug} from './util/debug.js';\nimport {isSafari} from './util/util.js';\nimport {setRTLTextPlugin, getRTLTextPluginStatus} from './source/rtl_text_plugin.js';\nimport WorkerPool from './util/worker_pool.js';\nimport {prewarm, clearPrewarmedResources} from './util/global_worker_pool.js';\nimport {clearTileCache} from './util/tile_request_cache.js';\nimport {WorkerPerformanceUtils} from './util/worker_performance_utils.js';\nimport {FreeCameraOptions} from './ui/free_camera.js';\nimport browser from './util/browser.js';\n\nconst exported = {\n version,\n supported,\n setRTLTextPlugin,\n getRTLTextPluginStatus,\n Map,\n NavigationControl,\n GeolocateControl,\n AttributionControl,\n ScaleControl,\n FullscreenControl,\n Popup,\n Marker,\n Style,\n LngLat,\n LngLatBounds,\n Point,\n MercatorCoordinate,\n FreeCameraOptions,\n Evented,\n config,\n /**\n * Initializes resources like WebWorkers that can be shared across maps to lower load\n * times in some situations. [`mapboxgl.workerUrl`](https://docs.mapbox.com/mapbox-gl-js/api/properties/#workerurl)\n * and [`mapboxgl.workerCount`](https://docs.mapbox.com/mapbox-gl-js/api/properties/#workercount), if being\n * used, must be set before `prewarm()` is called to have an effect.\n *\n * By default, the lifecycle of these resources is managed automatically, and they are\n * lazily initialized when a `Map` is first created. Invoking `prewarm()` creates these\n * resources ahead of time and ensures they are not cleared when the last `Map`\n * is removed from the page. This allows them to be re-used by new `Map` instances that\n * are created later. They can be manually cleared by calling\n * [`mapboxgl.clearPrewarmedResources()`](https://docs.mapbox.com/mapbox-gl-js/api/properties/#clearprewarmedresources).\n * This is only necessary if your web page remains active but stops using maps altogether.\n * `prewarm()` is idempotent and has guards against being executed multiple times,\n * and any resources allocated by `prewarm()` are created synchronously.\n *\n * This is primarily useful when using Mapbox GL JS maps in a single page app,\n * in which a user navigates between various views, resulting in\n * constant creation and destruction of `Map` instances.\n *\n * @function prewarm\n * @example\n * mapboxgl.prewarm();\n */\n prewarm,\n /**\n * Clears up resources that have previously been created by [`mapboxgl.prewarm()](https://docs.mapbox.com/mapbox-gl-js/api/properties/#prewarm)`.\n * Note that this is typically not necessary. You should only call this function\n * if you expect the user of your app to not return to a Map view at any point\n * in your application.\n *\n * @function clearPrewarmedResources\n * @example\n * mapboxgl.clearPrewarmedResources();\n */\n clearPrewarmedResources,\n\n /**\n * Gets and sets the map's [access token](https://www.mapbox.com/help/define-access-token/).\n *\n * @var {string} accessToken\n * @returns {string} The currently set access token.\n * @example\n * mapboxgl.accessToken = myAccessToken;\n * @see [Example: Display a map](https://www.mapbox.com/mapbox-gl-js/example/simple-map/)\n */\n get accessToken(): ?string {\n return config.ACCESS_TOKEN;\n },\n\n set accessToken(token: string) {\n config.ACCESS_TOKEN = token;\n },\n\n /**\n * Gets and sets the map's default API URL for requesting tiles, styles, sprites, and glyphs.\n *\n * @var {string} baseApiUrl\n * @returns {string} The current base API URL.\n * @example\n * mapboxgl.baseApiUrl = 'https://api.mapbox.com';\n */\n get baseApiUrl(): ?string {\n return config.API_URL;\n },\n\n set baseApiUrl(url: string) {\n config.API_URL = url;\n },\n\n /**\n * Gets and sets the number of web workers instantiated on a page with Mapbox GL JS maps.\n * By default, it is set to 2.\n * Make sure to set this property before creating any map instances for it to have effect.\n *\n * @var {string} workerCount\n * @returns {number} Number of workers currently configured.\n * @example\n * mapboxgl.workerCount = 4;\n */\n get workerCount(): number {\n return WorkerPool.workerCount;\n },\n\n set workerCount(count: number) {\n WorkerPool.workerCount = count;\n },\n\n /**\n * Gets and sets the maximum number of images (raster tiles, sprites, icons) to load in parallel.\n * 16 by default. There is no maximum value, but the number of images affects performance in raster-heavy maps.\n *\n * @var {string} maxParallelImageRequests\n * @returns {number} Number of parallel requests currently configured.\n * @example\n * mapboxgl.maxParallelImageRequests = 10;\n */\n get maxParallelImageRequests(): number {\n return config.MAX_PARALLEL_IMAGE_REQUESTS;\n },\n\n set maxParallelImageRequests(numRequests: number) {\n config.MAX_PARALLEL_IMAGE_REQUESTS = numRequests;\n },\n\n /**\n * Clears browser storage used by this library. Using this method flushes the Mapbox tile\n * cache that is managed by this library. Tiles may still be cached by the browser\n * in some cases.\n *\n * This API is supported on browsers where the [`Cache` API](https://developer.mozilla.org/en-US/docs/Web/API/Cache)\n * is supported and enabled. This includes all major browsers when pages are served over\n * `https://`, except Internet Explorer and Edge Mobile.\n *\n * When called in unsupported browsers or environments (private or incognito mode), the\n * callback will be called with an error argument.\n *\n * @function clearStorage\n * @param {Function} callback Called with an error argument if there is an error.\n * @example\n * mapboxgl.clearStorage();\n */\n clearStorage(callback?: (err: ?Error) => void) {\n clearTileCache(callback);\n },\n /**\n * Provides an interface for loading mapbox-gl's WebWorker bundle from a self-hosted URL.\n * This needs to be set only once, and before any call to `new mapboxgl.Map(..)` takes place.\n * This is useful if your site needs to operate in a strict CSP (Content Security Policy) environment\n * wherein you are not allowed to load JavaScript code from a [`Blob` URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL), which is default behavior.\n *\n * See our documentation on [CSP Directives](https://docs.mapbox.com/mapbox-gl-js/api/#csp-directives) for more details.\n *\n * @var {string} workerUrl\n * @returns {string} A URL hosting a JavaScript bundle for mapbox-gl's WebWorker.\n * @example\n * <script src='https://api.mapbox.com/mapbox-gl-js/v2.3.1/mapbox-gl-csp.js'></script>\n * <script>\n * mapboxgl.workerUrl = \"https://api.mapbox.com/mapbox-gl-js/v2.3.1/mapbox-gl-csp-worker.js\";\n * ...\n * </script>\n */\n workerUrl: '',\n\n /**\n * Provides an interface for external module bundlers such as Webpack or Rollup to package\n * mapbox-gl's WebWorker into a separate class and integrate it with the library.\n *\n * Takes precedence over `mapboxgl.workerUrl`.\n *\n * @var {Object} workerClass\n * @returns {Object | null} A class that implements the `Worker` interface.\n * @example\n * import mapboxgl from 'mapbox-gl/dist/mapbox-gl-csp.js';\n * import MapboxGLWorker from 'mapbox-gl/dist/mapbox-gl-csp-worker.js';\n *\n * mapboxgl.workerClass = MapboxGLWorker;\n */\n workerClass: null,\n\n /**\n * Sets the time used by Mapbox GL JS internally for all animations. Useful for generating videos from Mapbox GL JS.\n *\n * @var {number} time\n */\n setNow: browser.setNow,\n\n /**\n * Restores the internal animation timing to follow regular computer time (`performance.now()`).\n */\n restoreNow: browser.restoreNow\n};\n\n//This gets automatically stripped out in production builds.\nDebug.extend(exported, {isSafari, getPerformanceMetrics: PerformanceUtils.getPerformanceMetrics, getPerformanceMetricsAsync: WorkerPerformanceUtils.getPerformanceMetricsAsync});\n\n/**\n * Gets the version of Mapbox GL JS in use as specified in `package.json`,\n * `CHANGELOG.md`, and the GitHub release.\n *\n * @var {string} version\n * @example\n * console.log(`Mapbox GL JS v${mapboxgl.version}`);\n */\n\n/**\n * Test whether the browser [supports Mapbox GL JS](https://www.mapbox.com/help/mapbox-browser-support/#mapbox-gl-js).\n *\n * @function supported\n * @param {Object} [options]\n * @param {boolean} [options.failIfMajorPerformanceCaveat=false] If `true`,\n * the function will return `false` if the performance of Mapbox GL JS would\n * be dramatically worse than expected (for example, a software WebGL renderer\n * would be used).\n * @return {boolean}\n * @example\n * // Show an alert if the browser does not support Mapbox GL\n * if (!mapboxgl.supported()) {\n * alert('Your browser does not support Mapbox GL');\n * }\n * @see [Example: Check for browser support](https://www.mapbox.com/mapbox-gl-js/example/check-for-support/)\n */\n\n/**\n * Sets the map's [RTL text plugin](https://www.mapbox.com/mapbox-gl-js/plugins/#mapbox-gl-rtl-text).\n * Necessary for supporting the Arabic and Hebrew languages, which are written right-to-left. Mapbox Studio loads this plugin by default.\n *\n * @function setRTLTextPlugin\n * @param {string} pluginURL URL pointing to the Mapbox RTL text plugin source.\n * @param {Function} callback Called with an error argument if there is an error, or no arguments if the plugin loads successfully.\n * @param {boolean} lazy If set to `true`, MapboxGL will defer loading the plugin until right-to-left text is encountered, and\n * right-to-left text will be rendered only after the plugin finishes loading.\n * @example\n * mapboxgl.setRTLTextPlugin('https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.2.0/mapbox-gl-rtl-text.js');\n * @see [Example: Add support for right-to-left scripts](https://www.mapbox.com/mapbox-gl-js/example/mapbox-gl-rtl-text/)\n */\n\n/**\n * Gets the map's [RTL text plugin](https://www.mapbox.com/mapbox-gl-js/plugins/#mapbox-gl-rtl-text) status.\n * The status can be `unavailable` (not requested or removed), `loading`, `loaded`, or `error`.\n * If the status is `loaded` and the plugin is requested again, an error will be thrown.\n *\n * @function getRTLTextPluginStatus\n * @example\n * const pluginStatus = mapboxgl.getRTLTextPluginStatus();\n */\n\nexport default exported;\n\n// canary assert: used to confirm that asserts have been removed from production build\nassert(true, 'canary assert');\n","// @flow\n\nimport * as DOM from '../../util/dom.js';\n\nimport {bindAll, warnOnce} from '../../util/util.js';\nimport window from '../../util/window.js';\n\nimport type Map from '../map.js';\n\ntype Options = {\n container?: HTMLElement\n};\n\n/**\n * A `FullscreenControl` control contains a button for toggling the map in and out of fullscreen mode. See the `requestFullScreen` [compatibility table](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen#browser_compatibility) for supported browsers.\n * Add this control to a map using {@link Map#addControl}.\n *\n * @implements {IControl}\n * @param {Object} [options]\n * @param {HTMLElement} [options.container] `container` is the [compatible DOM element](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen#Compatible_elements) which should be made full screen. By default, the map container element will be made full screen.\n *\n * @example\n * map.addControl(new mapboxgl.FullscreenControl({container: document.querySelector('body')}));\n * @see [Example: View a fullscreen map](https://www.mapbox.com/mapbox-gl-js/example/fullscreen/)\n */\n\nclass FullscreenControl {\n _map: Map;\n _controlContainer: HTMLElement;\n _fullscreen: boolean;\n _fullscreenchange: string;\n _fullscreenButton: HTMLElement;\n _container: HTMLElement;\n\n constructor(options: Options) {\n this._fullscreen = false;\n if (options && options.container) {\n if (options.container instanceof window.HTMLElement) {\n this._container = options.container;\n } else {\n warnOnce('Full screen control \\'container\\' must be a DOM element.');\n }\n }\n bindAll([\n '_onClickFullscreen',\n '_changeIcon'\n ], this);\n if ('onfullscreenchange' in window.document) {\n this._fullscreenchange = 'fullscreenchange';\n } else if ('onwebkitfullscreenchange' in window.document) {\n this._fullscreenchange = 'webkitfullscreenchange';\n }\n }\n\n onAdd(map: Map): HTMLElement {\n this._map = map;\n if (!this._container) this._container = this._map.getContainer();\n this._controlContainer = DOM.create('div', `mapboxgl-ctrl mapboxgl-ctrl-group`);\n if (this._checkFullscreenSupport()) {\n this._setupUI();\n } else {\n this._controlContainer.style.display = 'none';\n warnOnce('This device does not support fullscreen mode.');\n }\n return this._controlContainer;\n }\n\n onRemove() {\n this._controlContainer.remove();\n this._map = (null: any);\n window.document.removeEventListener(this._fullscreenchange, this._changeIcon);\n }\n\n _checkFullscreenSupport(): boolean {\n return !!(\n window.document.fullscreenEnabled ||\n (window.document: any).webkitFullscreenEnabled\n );\n }\n\n _setupUI() {\n const button = this._fullscreenButton = DOM.create('button', (`mapboxgl-ctrl-fullscreen`), this._controlContainer);\n DOM.create('span', `mapboxgl-ctrl-icon`, button).setAttribute('aria-hidden', 'true');\n button.type = 'button';\n this._updateTitle();\n this._fullscreenButton.addEventListener('click', this._onClickFullscreen);\n window.document.addEventListener(this._fullscreenchange, this._changeIcon);\n }\n\n _updateTitle() {\n const title = this._getTitle();\n this._fullscreenButton.setAttribute(\"aria-label\", title);\n if (this._fullscreenButton.firstElementChild) this._fullscreenButton.firstElementChild.setAttribute('title', title);\n }\n\n _getTitle(): string {\n return this._map._getUIString(this._isFullscreen() ? 'FullscreenControl.Exit' : 'FullscreenControl.Enter');\n }\n\n _isFullscreen(): boolean {\n return this._fullscreen;\n }\n\n _changeIcon() {\n const fullscreenElement =\n window.document.fullscreenElement ||\n (window.document: any).webkitFullscreenElement;\n\n if ((fullscreenElement === this._container) !== this._fullscreen) {\n this._fullscreen = !this._fullscreen;\n this._fullscreenButton.classList.toggle(`mapboxgl-ctrl-shrink`);\n this._fullscreenButton.classList.toggle(`mapboxgl-ctrl-fullscreen`);\n this._updateTitle();\n }\n }\n\n _onClickFullscreen() {\n if (this._isFullscreen()) {\n if (window.document.exitFullscreen) {\n (window.document: any).exitFullscreen();\n } else if (window.document.webkitCancelFullScreen) {\n (window.document: any).webkitCancelFullScreen();\n }\n } else if (this._container.requestFullscreen) {\n this._container.requestFullscreen();\n } else if ((this._container: any).webkitRequestFullscreen) {\n (this._container: any).webkitRequestFullscreen();\n }\n }\n}\n\nexport default FullscreenControl;\n","//\n// Our custom intro provides a specialized \"define()\" function, called by the\n// AMD modules below, that sets up the worker blob URL and then executes the\n// main module, storing its exported value as 'mapboxgl'\n\n// The three \"chunks\" imported here are produced by a first Rollup pass,\n// which outputs them as AMD modules.\n\n// Shared dependencies, i.e.:\n/*\ndefine(['exports'], function (exports) {\n // Code for all common dependencies\n // Each module's exports are attached attached to 'exports' (with\n // names rewritten to avoid collisions, etc.)\n})\n*/\nimport './build/mapboxgl/shared';\n\n// Worker and its unique dependencies, i.e.:\n/*\ndefine(['./shared.js'], function (__shared__js) {\n // Code for worker script and its unique dependencies.\n // Expects the output of 'shared' module to be passed in as an argument,\n // since all references to common deps look like, e.g.,\n // __shared__js.shapeText().\n});\n*/\n// When this wrapper function is passed to our custom define() above,\n// it gets stringified, together with the shared wrapper (using\n// Function.toString()), and the resulting string of code is made into a\n// Blob URL that gets used by the main module to create the web workers.\nimport './build/mapboxgl/worker';\n\n// Main module and its unique dependencies\n/*\ndefine(['./shared.js'], function (__shared__js) {\n // Code for main GL JS module and its unique dependencies.\n // Expects the output of 'shared' module to be passed in as an argument,\n // since all references to common deps look like, e.g.,\n // __shared__js.shapeText().\n //\n // Returns the actual mapboxgl (i.e. src/index.js)\n});\n*/\nimport './build/mapboxgl/index';\n\nexport default mapboxgl;\n","var moment = module.exports = require(\"./moment-timezone\");\nmoment.tz.load(require('./data/packed/latest.json'));\n","//! moment-timezone.js\n//! version : 0.5.43\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory); // AMD\n\t} else {\n\t\tfactory(root.moment); // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Resolves es6 module loading issue\n\tif (moment.version === undefined && moment.default) {\n\t\tmoment = moment.default;\n\t}\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.43\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname : data[0],\n\t\t\tabbrs : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets : mapIndices(offsets, indices),\n\t\t\tuntils : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name = unpacked.name;\n\t\t\tthis.abbrs = unpacked.abbrs;\n\t\t\tthis.untils = unpacked.untils;\n\t\t\tthis.offsets = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils = this.untils,\n\t\t\t\tmax = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version = VERSION;\n\ttz.dataVersion = '';\n\ttz._zones = zones;\n\ttz._links = links;\n\ttz._names = names;\n\ttz._countries\t= countries;\n\ttz.add = addZone;\n\ttz.link = addLink;\n\ttz.load = loadData;\n\ttz.zone = getZone;\n\ttz.zoneExists = zoneExists; // deprecated in 0.1.0\n\ttz.guess = guess;\n\ttz.names = getNames;\n\ttz.Zone = Zone;\n\ttz.unpack = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset = needsOffset;\n\ttz.moveInvalidForward = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr = abbrWrap(fn.zoneAbbr);\n\tfn.utc = resetZoneWrap(fn.utc);\n\tfn.local = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction all() {\n for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n validators[_key] = arguments[_key];\n }\n\n function allPropTypes() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var error = null;\n\n validators.forEach(function (validator) {\n if (error != null) {\n return;\n }\n\n var result = validator.apply(undefined, args);\n if (result != null) {\n error = result;\n }\n });\n\n return error;\n }\n\n return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isRequiredForA11y;\nfunction isRequiredForA11y(validator) {\n return function validate(props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n return new Error('The ' + location + ' `' + propFullNameSafe + '` is required to make ' + ('`' + componentNameSafe + '` accessible for users of assistive ') + 'technologies such as screen readers.');\n }\n\n for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n args[_key - 5] = arguments[_key];\n }\n\n return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n };\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Based on Kendo UI Core expression code <https://github.com/telerik/kendo-ui-core#license-information>\n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function () {\n this._size = 0\n this._values = Object.create(null)\n}\nCache.prototype.get = function (key) {\n return this._values[key]\n}\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear()\n if (!(key in this._values)) this._size++\n\n return (this._values[key] = value)\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\nvar config\n\nmodule.exports = {\n Cache: Cache,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: function (path) {\n var parts = normalizePath(path)\n\n return (\n setCache.get(path) ||\n setCache.set(path, function setter(obj, value) {\n var index = 0\n var len = parts.length\n var data = obj\n\n while (index < len - 1) {\n var part = parts[index]\n if (\n part === '__proto__' ||\n part === 'constructor' ||\n part === 'prototype'\n ) {\n return obj\n }\n\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n })\n )\n },\n\n getter: function (path, safe) {\n var parts = normalizePath(path)\n return (\n getCache.get(path) ||\n getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]]\n else return\n }\n return data\n })\n )\n },\n\n join: function (segments) {\n return segments.reduce(function (path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function (path, cb, thisArg) {\n forEach(Array.isArray(path) ? path : split(path), cb, thisArg)\n },\n}\n\nfunction normalizePath(path) {\n return (\n pathCache.get(path) ||\n pathCache.set(\n path,\n split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX) || ['']\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(y(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,wa=60108,xa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60121,Ga=60128,Ha=60129,Ia=60130,Ja=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;sa=E(\"react.element\");ta=E(\"react.portal\");ua=E(\"react.fragment\");wa=E(\"react.strict_mode\");xa=E(\"react.profiler\");ya=E(\"react.provider\");za=E(\"react.context\");Aa=E(\"react.forward_ref\");Ba=E(\"react.suspense\");Ca=E(\"react.suspense_list\");Da=E(\"react.memo\");Ea=E(\"react.lazy\");Fa=E(\"react.block\");E(\"react.scope\");Ga=E(\"react.opaque.id\");Ha=E(\"react.debug_trace_mode\");Ia=E(\"react.offscreen\");Ja=E(\"react.legacy_hidden\")}\nvar Ka=\"function\"===typeof Symbol&&Symbol.iterator;function La(a){if(null===a||\"object\"!==typeof a)return null;a=Ka&&a[Ka]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var Ma;function Na(a){if(void 0===Ma)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);Ma=b&&b[1]||\"\"}return\"\\n\"+Ma+a}var Oa=!1;\nfunction Pa(a,b){if(!a||Oa)return\"\";Oa=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(y(91));return m({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(y(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(a,b,c,d,e){return a(b,c,d,e)}function Ib(){}var Jb=Gb,Kb=!1,Lb=!1;function Mb(){if(null!==zb||null!==Ab)Ib(),Fb()}\nfunction Nb(a,b,c){if(Lb)return a(b,c);Lb=!0;try{return Jb(a,b,c)}finally{Lb=!1,Mb()}}\nfunction Ob(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(y(231,b,typeof c));return c}var Pb=!1;if(fa)try{var Qb={};Object.defineProperty(Qb,\"passive\",{get:function(){Pb=!0}});window.addEventListener(\"test\",Qb,Qb);window.removeEventListener(\"test\",Qb,Qb)}catch(a){Pb=!1}function Rb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(n){this.onError(n)}}var Sb=!1,Tb=null,Ub=!1,Vb=null,Wb={onError:function(a){Sb=!0;Tb=a}};function Xb(a,b,c,d,e,f,g,h,k){Sb=!1;Tb=null;Rb.apply(Wb,arguments)}\nfunction Yb(a,b,c,d,e,f,g,h,k){Xb.apply(this,arguments);if(Sb){if(Sb){var l=Tb;Sb=!1;Tb=null}else throw Error(y(198));Ub||(Ub=!0,Vb=l)}}function Zb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function $b(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function ac(a){if(Zb(a)!==a)throw Error(y(188));}\nfunction bc(a){var b=a.alternate;if(!b){b=Zb(a);if(null===b)throw Error(y(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return ac(e),a;if(f===d)return ac(e),b;f=f.sibling}throw Error(y(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(y(189));}}if(c.alternate!==d)throw Error(y(190));}if(3!==c.tag)throw Error(y(188));return c.stateNode.current===c?a:b}function cc(a){a=bc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}var ec,fc,gc,hc,ic=!1,jc=[],kc=null,lc=null,mc=null,nc=new Map,oc=new Map,pc=[],qc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction rc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}function sc(a,b){switch(a){case \"focusin\":case \"focusout\":kc=null;break;case \"dragenter\":case \"dragleave\":lc=null;break;case \"mouseover\":case \"mouseout\":mc=null;break;case \"pointerover\":case \"pointerout\":nc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":oc.delete(b.pointerId)}}\nfunction tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=rc(b,c,d,e,f),null!==b&&(b=Cb(b),null!==b&&fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction uc(a,b,c,d,e){switch(b){case \"focusin\":return kc=tc(kc,a,b,c,d,e),!0;case \"dragenter\":return lc=tc(lc,a,b,c,d,e),!0;case \"mouseover\":return mc=tc(mc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;nc.set(f,tc(nc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,oc.set(f,tc(oc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction vc(a){var b=wc(a.target);if(null!==b){var c=Zb(b);if(null!==c)if(b=c.tag,13===b){if(b=$b(c),null!==b){a.blockedOn=b;hc(a.lanePriority,function(){r.unstable_runWithPriority(a.priority,function(){gc(c)})});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c)return b=Cb(c),null!==b&&fc(b),a.blockedOn=c,!1;b.shift()}return!0}function zc(a,b,c){xc(a)&&c.delete(b)}\nfunction Ac(){for(ic=!1;0<jc.length;){var a=jc[0];if(null!==a.blockedOn){a=Cb(a.blockedOn);null!==a&&ec(a);break}for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&jc.shift()}null!==kc&&xc(kc)&&(kc=null);null!==lc&&xc(lc)&&(lc=null);null!==mc&&xc(mc)&&(mc=null);nc.forEach(zc);oc.forEach(zc)}\nfunction Bc(a,b){a.blockedOn===b&&(a.blockedOn=null,ic||(ic=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Ac)))}\nfunction Cc(a){function b(b){return Bc(b,a)}if(0<jc.length){Bc(jc[0],a);for(var c=1;c<jc.length;c++){var d=jc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==kc&&Bc(kc,a);null!==lc&&Bc(lc,a);null!==mc&&Bc(mc,a);nc.forEach(b);oc.forEach(b);for(c=0;c<pc.length;c++)d=pc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<pc.length&&(c=pc[0],null===c.blockedOn);)vc(c),null===c.blockedOn&&pc.shift()}\nfunction Dc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ec={animationend:Dc(\"Animation\",\"AnimationEnd\"),animationiteration:Dc(\"Animation\",\"AnimationIteration\"),animationstart:Dc(\"Animation\",\"AnimationStart\"),transitionend:Dc(\"Transition\",\"TransitionEnd\")},Fc={},Gc={};\nfa&&(Gc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ec.animationend.animation,delete Ec.animationiteration.animation,delete Ec.animationstart.animation),\"TransitionEvent\"in window||delete Ec.transitionend.transition);function Hc(a){if(Fc[a])return Fc[a];if(!Ec[a])return a;var b=Ec[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Gc)return Fc[a]=b[c];return a}\nvar Ic=Hc(\"animationend\"),Jc=Hc(\"animationiteration\"),Kc=Hc(\"animationstart\"),Lc=Hc(\"transitionend\"),Mc=new Map,Nc=new Map,Oc=[\"abort\",\"abort\",Ic,\"animationEnd\",Jc,\"animationIteration\",Kc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Lc,\"transitionEnd\",\"waiting\",\"waiting\"];function Pc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Nc.set(d,b);Mc.set(d,e);da(e,[d])}}var Qc=r.unstable_now;Qc();var F=8;\nfunction Rc(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function Sc(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function Tc(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(y(358,a));}}\nfunction Uc(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=Rc(k),e=F):(h&=f,0!==h&&(d=Rc(h),e=F))}else f=c&~g,0!==f?(d=Rc(f),e=F):0!==h&&(d=Rc(h),e=F);if(0===d)return 0;d=31-Vc(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){Rc(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-Vc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction Wc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Xc(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=Yc(24&~b),0===a?Xc(10,b):a;case 10:return a=Yc(192&~b),0===a?Xc(8,b):a;case 8:return a=Yc(3584&~b),0===a&&(a=Yc(4186112&~b),0===a&&(a=512)),a;case 2:return b=Yc(805306368&~b),0===b&&(b=268435456),b}throw Error(y(358,a));}function Yc(a){return a&-a}function Zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0<jc.length&&-1<qc.indexOf(a))a=rc(null,a,b,c,d),jc.push(a);else{var f=yc(a,b,c,d);if(null===f)e&&sc(a,d);else{if(e){if(-1<qc.indexOf(a)){a=rc(f,a,b,c,d);jc.push(a);return}if(uc(f,a,b,c,d))return;sc(a,d)}jd(a,b,d,null,c)}}}}\nfunction yc(a,b,c,d){var e=xb(d);e=wc(e);if(null!==e){var f=Zb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=$b(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}jd(a,b,d,e,c);return null}var kd=null,ld=null,md=null;\nfunction nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}function od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}m(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=m({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=m({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=m({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=m({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=m({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=m({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=m({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=m({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=m({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=m({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=m({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=m({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=fa&&\"CompositionEvent\"in window,be=null;fa&&\"documentMode\"in document&&(be=document.documentMode);var ce=fa&&\"TextEvent\"in window&&!be,de=fa&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(fa){var xe;if(fa){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));a=re;if(Kb)a(b);else{Kb=!0;try{Gb(a,b)}finally{Kb=!1,Mb()}}}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge,Ie=Object.prototype.hasOwnProperty;\nfunction Je(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!Ie.call(b,c[d])||!He(a[c[d]],b[c[d]]))return!1;return!0}function Ke(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Le(a,b){var c=Ke(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Pc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Pc(Oc,2);for(var Ve=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),We=0;We<Ve.length;We++)Nc.set(Ve[We],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Xe=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Ye=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Yb(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}}}if(Ub)throw a=Vb,Ub=!1,Vb=null,a;}\nfunction G(a,b){var c=$e(b),d=a+\"__bubble\";c.has(d)||(af(b,a,2,!1),c.add(d))}var bf=\"_reactListening\"+Math.random().toString(36).slice(2);function cf(a){a[bf]||(a[bf]=!0,ba.forEach(function(b){Ye.has(b)||df(b,!1,a,null);df(b,!0,a,null)}))}\nfunction df(a,b,c,d){var e=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,f=c;\"selectionchange\"===a&&9!==c.nodeType&&(f=c.ownerDocument);if(null!==d&&!b&&Ye.has(a)){if(\"scroll\"!==a)return;e|=2;f=d}var g=$e(f),h=a+\"__\"+(b?\"capture\":\"bubble\");g.has(h)||(b&&(e|=4),af(f,a,e,b),g.add(h))}\nfunction af(a,b,c,d){var e=Nc.get(b);switch(void 0===e?2:e){case 0:e=gd;break;case 1:e=id;break;default:e=hd}c=e.bind(null,b,c,a);e=void 0;!Pb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction jd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Nb(function(){var d=f,e=xb(c),g=[];\na:{var h=Mc.get(a);if(void 0!==h){var k=td,x=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":x=\"focus\";k=Fd;break;case \"focusout\":x=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case Ic:case Jc:case Kc:k=Hd;break;case Lc:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var w=0!==(b&4),z=!w&&\"scroll\"===a,u=w?null!==h?h+\"Capture\":null:h;w=[];for(var t=d,q;null!==\nt;){q=t;var v=q.stateNode;5===q.tag&&null!==v&&(q=v,null!==u&&(v=Ob(t,u),null!=v&&w.push(ef(t,v,q))));if(z)break;t=t.return}0<w.length&&(h=new k(h,x,null,c,e),g.push({event:h,listeners:w}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(x=c.relatedTarget||c.fromElement)&&(wc(x)||x[ff]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(x=c.relatedTarget||c.toElement,k=d,x=x?wc(x):null,null!==\nx&&(z=Zb(x),x!==z||5!==x.tag&&6!==x.tag))x=null}else k=null,x=d;if(k!==x){w=Bd;v=\"onMouseLeave\";u=\"onMouseEnter\";t=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)w=Td,v=\"onPointerLeave\",u=\"onPointerEnter\",t=\"pointer\";z=null==k?h:ue(k);q=null==x?h:ue(x);h=new w(v,t+\"leave\",k,c,e);h.target=z;h.relatedTarget=q;v=null;wc(e)===d&&(w=new w(u,t+\"enter\",x,c,e),w.target=q,w.relatedTarget=z,v=w);z=v;if(k&&x)b:{w=k;u=x;t=0;for(q=w;q;q=gf(q))t++;q=0;for(v=u;v;v=gf(v))q++;for(;0<t-q;)w=gf(w),t--;for(;0<q-t;)u=\ngf(u),q--;for(;t--;){if(w===u||null!==u&&w===u.alternate)break b;w=gf(w);u=gf(u)}w=null}else w=null;null!==k&&hf(g,h,k,w,!1);null!==x&&null!==z&&hf(g,z,x,w,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var J=ve;else if(me(h))if(we)J=Fe;else{J=De;var K=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(J=Ee);if(J&&(J=J(a,d))){ne(g,J,c,e);break a}K&&K(a,h,d);\"focusout\"===a&&(K=h._wrapperState)&&\nK.controlled&&\"number\"===h.type&&bb(h,\"number\",h.value)}K=d?ue(d):window;switch(a){case \"focusin\":if(me(K)||\"true\"===K.contentEditable)Qe=K,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var Q;if(ae)b:{switch(a){case \"compositionstart\":var L=\"onCompositionStart\";break b;case \"compositionend\":L=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":L=\"onCompositionUpdate\";break b}L=void 0}else ie?ge(a,c)&&(L=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(L=\"onCompositionStart\");L&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==L?\"onCompositionEnd\"===L&&ie&&(Q=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),K=oe(d,L),0<K.length&&(L=new Ld(L,a,null,c,e),g.push({event:L,listeners:K}),Q?L.data=Q:(Q=he(c),null!==Q&&(L.data=Q))));if(Q=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),0<d.length&&(e=new Ld(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=Q)}se(g,b)})}function ef(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Ob(a,c),null!=f&&d.unshift(ef(a,f,e)),f=Ob(a,b),null!=f&&d.push(ef(a,f,e)));a=a.return}return d}function gf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction hf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Ob(c,f),null!=k&&g.unshift(ef(c,k,h))):e||(k=Ob(c,f),null!=k&&g.push(ef(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function jf(){}var kf=null,lf=null;function mf(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction nf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var of=\"function\"===typeof setTimeout?setTimeout:void 0,pf=\"function\"===typeof clearTimeout?clearTimeout:void 0;function qf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}\nfunction rf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function sf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var tf=0;function uf(a){return{$$typeof:Ga,toString:a,valueOf:a}}var vf=Math.random().toString(36).slice(2),wf=\"__reactFiber$\"+vf,xf=\"__reactProps$\"+vf,ff=\"__reactContainer$\"+vf,yf=\"__reactEvents$\"+vf;\nfunction wc(a){var b=a[wf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[ff]||c[wf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=sf(a);null!==a;){if(c=a[wf])return c;a=sf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[wf]||a[ff];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(y(33));}function Db(a){return a[xf]||null}\nfunction $e(a){var b=a[yf];void 0===b&&(b=a[yf]=new Set);return b}var zf=[],Af=-1;function Bf(a){return{current:a}}function H(a){0>Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});ag=null}catch(c){throw null!==ag&&(ag=ag.slice(a+1)),Of(Uf,ig),c;}finally{cg=!1}}}var kg=ra.ReactCurrentBatchConfig;function lg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var mg=Bf(null),ng=null,og=null,pg=null;function qg(){pg=og=ng=null}\nfunction rg(a){var b=mg.current;H(mg);a.type._context._currentValue=b}function sg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);a=a.return}}function tg(a,b){ng=a;pg=og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(ug=!0),a.firstContext=null)}\nfunction vg(a,b){if(pg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)pg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===og){if(null===ng)throw Error(y(308));og=b;ng.dependencies={lanes:0,firstContext:b,responders:null}}else og=og.next=b}return a._currentValue}var wg=!1;function xg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction yg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function zg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Ag(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Bg(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction Cg(a,b,c,d){var e=a.updateQueue;wg=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var n=a.alternate;if(null!==n){n=n.updateQueue;var A=n.lastBaseUpdate;A!==g&&(null===A?n.firstBaseUpdate=l:A.next=l,n.lastBaseUpdate=k)}}if(null!==f){A=e.baseState;g=0;n=l=k=null;do{h=f.lane;var p=f.eventTime;if((d&h)===h){null!==n&&(n=n.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var C=a,x=f;h=b;p=c;switch(x.tag){case 1:C=x.payload;if(\"function\"===typeof C){A=C.call(p,A,h);break a}A=C;break a;case 3:C.flags=C.flags&-4097|64;case 0:C=x.payload;h=\"function\"===typeof C?C.call(p,A,h):C;if(null===h||void 0===h)break a;A=m({},A,h);break a;case 2:wg=!0}}null!==f.callback&&(a.flags|=32,h=e.effects,null===h?e.effects=[f]:h.push(f))}else p={eventTime:p,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===n?(l=n=p,k=A):n=n.next=p,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===n&&(k=A);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=n;Dg|=g;a.lanes=g;a.memoizedState=A}}function Eg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(y(191,e));e.call(d)}}}var Fg=(new aa.Component).refs;\nfunction Gg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Kg={isMounted:function(a){return(a=a._reactInternals)?Zb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Hg(),d=Ig(a),e=zg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Ag(a,e);Jg(a,d,c)}};function Lg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Je(c,d)||!Je(e,f):!0}\nfunction Mg(a,b,c){var d=!1,e=Cf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=vg(f):(e=Ff(b)?Df:M.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Ef(a,e):Cf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Kg;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ng(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Kg.enqueueReplaceState(b,b.state,null)}\nfunction Og(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Fg;xg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=vg(f):(f=Ff(b)?Df:M.current,e.context=Ef(a,f));Cg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Gg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Kg.enqueueReplaceState(e,e.state,null),Cg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Pg=Array.isArray;\nfunction Qg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(y(309));var d=c.stateNode}if(!d)throw Error(y(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Fg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(y(284));if(!c._owner)throw Error(y(290,a));}return a}\nfunction Rg(a,b){if(\"textarea\"!==a.type)throw Error(y(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}\nfunction Sg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Tg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Ug(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Qg(a,b,c),d.return=a,d;d=Vg(c.type,c.key,c.props,null,a.mode,d);d.ref=Qg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=\nWg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function n(a,b,c,d,f){if(null===b||7!==b.tag)return b=Xg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function A(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Ug(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=Vg(b.type,b.key,b.props,null,a.mode,c),c.ref=Qg(a,null,b),c.return=a,c;case ta:return b=Wg(b,a.mode,c),b.return=a,b}if(Pg(b)||La(b))return b=Xg(b,\na.mode,c,null),b.return=a,b;Rg(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?c.type===ua?n(a,b,c.props.children,d,e):k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null}if(Pg(c)||La(c))return null!==e?null:n(a,b,c,d,null);Rg(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||\nnull,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,d.type===ua?n(b,a,d.props.children,e,d.key):k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Pg(d)||La(d))return a=a.get(c)||null,n(b,a,d,e,null);Rg(b,d)}return null}function x(e,g,h,k){for(var l=null,t=null,u=g,z=g=0,q=null;null!==u&&z<h.length;z++){u.index>z?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;z<h.length;z++)u=A(e,h[z],k),null!==u&&(g=f(u,g,z),null===t?l=u:t.sibling=u,t=u);return l}for(u=d(e,u);z<h.length;z++)q=C(u,e,z,h[z],k),null!==q&&(a&&null!==q.alternate&&u.delete(null===q.key?z:q.key),g=f(q,g,z),null===t?l=q:t.sibling=q,t=q);a&&u.forEach(function(a){return b(e,a)});return l}function w(e,g,h,k){var l=La(h);if(\"function\"!==typeof l)throw Error(y(150));h=l.call(h);if(null==\nh)throw Error(y(151));for(var t=l=null,u=g,z=g=0,q=null,n=h.next();null!==u&&!n.done;z++,n=h.next()){u.index>z?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;a<th.length;a++)th[a]._workInProgressVersionPrimary=null;th.length=0}var vh=ra.ReactCurrentDispatcher,wh=ra.ReactCurrentBatchConfig,xh=0,R=null,S=null,T=null,yh=!1,zh=!1;function Ah(){throw Error(y(321));}function Bh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Ch(a,b,c,d,e,f){xh=f;R=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;vh.current=null===a||null===a.memoizedState?Dh:Eh;a=c(d,e);if(zh){f=0;do{zh=!1;if(!(25>f))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0<h;){var k=31-Vc(h),v=1<<k;d[k]|=a;h&=~v}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=p.getSnapshot,c=p.setSnapshot;try{c(a(b._source));var d=Ig(w);e.mutableReadLanes|=d&e.pendingLanes}catch(q){c(function(){throw q;})}})},[b,d]);He(C,c)&&He(x,b)&&He(A,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:n},a.dispatch=l=Oh.bind(null,R,a),k.queue=a,k.baseQueue=null,n=Mh(e,b,c),k.memoizedState=k.baseState=n);return n}\nfunction Ph(a,b,c){var d=Ih();return Nh(d,a,b,c)}function Qh(a){var b=Hh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:a};a=a.dispatch=Oh.bind(null,R,a);return[b.memoizedState,a]}\nfunction Rh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=R.updateQueue;null===b?(b={lastEffect:null},R.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function Sh(a){var b=Hh();a={current:a};return b.memoizedState=a}function Th(){return Ih().memoizedState}function Uh(a,b,c,d){var e=Hh();R.flags|=a;e.memoizedState=Rh(1|b,c,void 0,void 0===d?null:d)}\nfunction Vh(a,b,c,d){var e=Ih();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Bh(d,g.deps)){Rh(b,c,f,d);return}}R.flags|=a;e.memoizedState=Rh(1|b,c,f,d)}function Wh(a,b){return Uh(516,4,a,b)}function Xh(a,b){return Vh(516,4,a,b)}function Yh(a,b){return Vh(4,2,a,b)}function Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}\nfunction $h(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,2,Zh.bind(null,b,a),c)}function ai(){}function bi(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function ci(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction di(a,b){var c=eg();gg(98>c?98:c,function(){a(!0)});gg(97<c?97:c,function(){var c=wh.transition;wh.transition=1;try{a(!1),b()}finally{wh.transition=c}})}\nfunction Oh(a,b,c){var d=Hg(),e=Ig(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===R||null!==g&&g===R)zh=yh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(He(k,h))return}catch(l){}finally{}Jg(a,e,d)}}\nvar Gh={readContext:vg,useCallback:Ah,useContext:Ah,useEffect:Ah,useImperativeHandle:Ah,useLayoutEffect:Ah,useMemo:Ah,useReducer:Ah,useRef:Ah,useState:Ah,useDebugValue:Ah,useDeferredValue:Ah,useTransition:Ah,useMutableSource:Ah,useOpaqueIdentifier:Ah,unstable_isNewReconciler:!1},Dh={readContext:vg,useCallback:function(a,b){Hh().memoizedState=[a,void 0===b?null:b];return a},useContext:vg,useEffect:Wh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Uh(4,2,Zh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return Uh(4,2,a,b)},useMemo:function(a,b){var c=Hh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Hh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Oh.bind(null,R,a);return[d.memoizedState,a]},useRef:Sh,useState:Qh,useDebugValue:ai,useDeferredValue:function(a){var b=Qh(a),c=b[0],d=b[1];Wh(function(){var b=wh.transition;\nwh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(!1),b=a[0];a=di.bind(null,a[1]);Sh(a);return[a,b]},useMutableSource:function(a,b,c){var d=Hh();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Nh(d,a,b,c)},useOpaqueIdentifier:function(){if(lh){var a=!1,b=uf(function(){a||(a=!0,c(\"r:\"+(tf++).toString(36)));throw Error(y(355));}),c=Qh(b)[1];0===(R.mode&2)&&(R.flags|=516,Rh(5,function(){c(\"r:\"+(tf++).toString(36))},\nvoid 0,null));return b}b=\"r:\"+(tf++).toString(36);Qh(b);return b},unstable_isNewReconciler:!1},Eh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Kh,useRef:Th,useState:function(){return Kh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Kh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Kh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Kh(Jh)[0]},unstable_isNewReconciler:!1},Fh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Lh,useRef:Th,useState:function(){return Lh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Lh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Lh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Lh(Jh)[0]},unstable_isNewReconciler:!1},ei=ra.ReactCurrentOwner,ug=!1;function fi(a,b,c,d){b.child=null===a?Zg(b,null,c,d):Yg(b,a.child,c,d)}function gi(a,b,c,d,e){c=c.render;var f=b.ref;tg(b,e);d=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,d,e);return b.child}\nfunction ii(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!ji(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ki(a,b,g,d,e,f);a=Vg(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Je,c(e,d)&&a.ref===b.ref))return hi(a,b,f);b.flags|=1;a=Tg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ki(a,b,c,d,e,f){if(null!==a&&Je(a.memoizedProps,d)&&a.ref===b.ref)if(ug=!1,0!==(f&e))0!==(a.flags&16384)&&(ug=!0);else return b.lanes=a.lanes,hi(a,b,f);return li(a,b,c,d,f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},ni(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},ni(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},ni(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,ni(b,d);fi(a,b,e,c);return b.child}\nfunction oi(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=128}function li(a,b,c,d,e){var f=Ff(c)?Df:M.current;f=Ef(b,f);tg(b,e);c=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,c,e);return b.child}\nfunction pi(a,b,c,d,e){if(Ff(c)){var f=!0;Jf(b)}else f=!1;tg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Mg(b,c,d),Og(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=vg(l):(l=Ff(c)?Df:M.current,l=Ef(b,l));var n=c.getDerivedStateFromProps,A=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;A||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ng(b,g,d,l);wg=!1;var p=b.memoizedState;g.state=p;Cg(b,d,g,e);k=b.memoizedState;h!==d||p!==k||N.current||wg?(\"function\"===typeof n&&(Gg(b,c,n,d),k=b.memoizedState),(h=wg||Lg(b,c,h,d,p,k,l))?(A||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:lg(b.type,h);g.props=l;A=b.pendingProps;p=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=vg(k):(k=Ff(c)?Df:M.current,k=Ef(b,k));var C=c.getDerivedStateFromProps;(n=\"function\"===typeof C||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==A||p!==k)&&Ng(b,g,d,k);wg=!1;p=b.memoizedState;g.state=p;Cg(b,d,g,e);var x=b.memoizedState;h!==A||p!==x||N.current||wg?(\"function\"===typeof C&&(Gg(b,c,C,d),x=b.memoizedState),(l=wg||Lg(b,c,l,d,p,x,k))?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),d=!1)}return qi(a,b,c,d,f,e)}\nfunction qi(a,b,c,d,e,f){oi(a,b);var g=0!==(b.flags&64);if(!d&&!g)return e&&Kf(b,c,!1),hi(a,b,f);d=b.stateNode;ei.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Yg(b,a.child,null,f),b.child=Yg(b,null,h,f)):fi(a,b,h,f);b.memoizedState=d.state;e&&Kf(b,c,!0);return b.child}function ri(a){var b=a.stateNode;b.pendingContext?Hf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Hf(a,b.context,!1);eh(a,b.containerInfo)}\nvar si={dehydrated:null,retryLane:0};\nfunction ti(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g;(g=0!==(b.flags&64))||(g=null!==a&&null===a.memoizedState?!1:0!==(e&2));g?(f=!0,b.flags&=-65):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);I(P,e&1);if(null===a){void 0!==d.fallback&&ph(b);a=d.children;e=d.fallback;if(f)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},b.memoizedState=si,a;if(\"number\"===typeof d.unstable_expectedLoadTime)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},\nb.memoizedState=si,b.lanes=33554432,a;c=vi({mode:\"visible\",children:a},b.mode,c,null);c.return=b;return b.child=c}if(null!==a.memoizedState){if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:\n{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}function ui(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=vi(b,e,0,null);c=Xg(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction xi(a,b,c,d){var e=a.child;a=e.sibling;c=Tg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction wi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Tg(g,h);null!==a?d=Tg(a,d):(d=Xg(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);sg(a.return,b)}\nfunction zi(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ai(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;fi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=64;else{if(null!==a&&0!==(a.flags&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&yi(a,c);else if(19===a.tag)yi(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ih(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);zi(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ih(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}zi(b,!0,c,null,f,b.lastEffect);break;case \"together\":zi(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction hi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Dg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(y(153));if(null!==b.child){a=b.child;c=Tg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Tg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Bi,Ci,Di,Ei;\nBi=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Ci=function(){};\nDi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;dh(ah.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"option\":e=eb(a,e);d=eb(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=jf)}vb(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Ga?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ei=function(a,b,c,d){c!==d&&(b.flags|=4)};function Fi(a,b){if(!lh)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction Gi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ff(b.type)&&Gf(),null;case 3:fh();H(N);H(M);uh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)rh(b)?b.flags|=4:d.hydrate||(b.flags|=256);Ci(b);return null;case 5:hh(b);var e=dh(ch.current);c=b.type;if(null!==a&&null!=b.stateNode)Di(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=128);else{if(!d){if(null===\nb.stateNode)throw Error(y(166));return null}a=dh(ah.current);if(rh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[wf]=b;d[xf]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<Xe.length;a++)G(Xe[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Za(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":hb(d,f),G(\"invalid\",d)}vb(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Va(d);cb(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\njf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===kb.html&&(a=lb(c));a===kb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<Xe.length;e++)G(Xe[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);G(\"invalid\",a);break;case \"option\":e=eb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":hb(a,d);e=\ngb(a,d);G(\"invalid\",a);break;default:e=d}vb(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?tb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&ob(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&pb(a,k):\"number\"===typeof k&&pb(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Va(a);cb(a,d,!1);\nbreak;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=jf)}mf(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=128)}return null;case 6:if(a&&null!=b.stateNode)Ei(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(y(166));\nc=dh(ch.current);dh(ah.current);rh(b)?(d=b.stateNode,c=b.memoizedProps,d[wf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[wf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(0!==(b.flags&64))return b.lanes=c,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&rh(b):c=null!==a.memoizedState;if(d&&!c&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1))0===V&&(V=3);else{if(0===V||3===V)V=\n4;null===U||0===(Dg&134217727)&&0===(Hi&134217727)||Ii(U,W)}if(d||c)b.flags|=4;return null;case 4:return fh(),Ci(b),null===a&&cf(b.stateNode.containerInfo),null;case 10:return rg(b),null;case 17:return Ff(b.type)&&Gf(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&64);g=d.rendering;if(null===g)if(f)Fi(d,!1);else{if(0!==V||null!==a&&0!==(a.flags&64))for(a=b.child;null!==a;){g=ih(a);if(null!==g){b.flags|=64;Fi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);\nnull===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,\nf.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;I(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&O()>Ji&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;e<f.length;e+=\n2){var g=f[e],h=f[e+1];\"style\"===g?tb(c,h):\"dangerouslySetInnerHTML\"===g?ob(c,h):\"children\"===g?pb(c,h):qa(c,g,h,b)}switch(a){case \"input\":ab(c,d);break;case \"textarea\":ib(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?fb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?fb(c,!!d.multiple,d.defaultValue,!0):fb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(y(162));b.stateNode.nodeValue=\nb.memoizedProps;return;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Cc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(jj=O(),aj(b.child,!0));kj(b);return;case 19:kj(b);return;case 17:return;case 23:case 24:aj(b,null!==b.memoizedState);return}throw Error(y(163));}function kj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ui);b.forEach(function(b){var d=lj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction mj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var nj=Math.ceil,oj=ra.ReactCurrentDispatcher,pj=ra.ReactCurrentOwner,X=0,U=null,Y=null,W=0,qj=0,rj=Bf(0),V=0,sj=null,tj=0,Dg=0,Hi=0,uj=0,vj=null,jj=0,Ji=Infinity;function wj(){Ji=O()+500}var Z=null,Qi=!1,Ri=null,Ti=null,xj=!1,yj=null,zj=90,Aj=[],Bj=[],Cj=null,Dj=0,Ej=null,Fj=-1,Gj=0,Hj=0,Ij=null,Jj=!1;function Hg(){return 0!==(X&48)?O():-1!==Fj?Fj:Fj=O()}\nfunction Ig(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===eg()?1:2;0===Gj&&(Gj=tj);if(0!==kg.transition){0!==Hj&&(Hj=null!==vj?vj.pendingLanes:0);a=Gj;var b=4186112&~Hj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=eg();0!==(X&4)&&98===a?a=Xc(12,Gj):(a=Sc(a),a=Xc(a,Gj));return a}\nfunction Jg(a,b,c){if(50<Dj)throw Dj=0,Ej=null,Error(y(185));a=Kj(a,b);if(null===a)return null;$c(a,b,c);a===U&&(Hi|=b,4===V&&Ii(a,W));var d=eg();1===b?0!==(X&8)&&0===(X&48)?Lj(a):(Mj(a,c),0===X&&(wj(),ig())):(0===(X&4)||98!==d&&99!==d||(null===Cj?Cj=new Set([a]):Cj.add(a)),Mj(a,c));vj=a}function Kj(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}\nfunction Mj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-Vc(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;Rc(k);var n=F;f[h]=10<=n?l+250:6<=n?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=Uc(a,a===U?W:0);b=F;if(0===d)null!==c&&(c!==Zf&&Pf(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==Zf&&Pf(c)}15===b?(c=Lj.bind(null,a),null===ag?(ag=[c],bg=Of(Uf,jg)):ag.push(c),\nc=Zf):14===b?c=hg(99,Lj.bind(null,a)):(c=Tc(b),c=hg(c,Nj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Nj(a){Fj=-1;Hj=Gj=0;if(0!==(X&48))throw Error(y(327));var b=a.callbackNode;if(Oj()&&a.callbackNode!==b)return null;var c=Uc(a,a===U?W:0);if(0===c)return null;var d=c;var e=X;X|=16;var f=Pj();if(U!==a||W!==d)wj(),Qj(a,d);do try{Rj();break}catch(h){Sj(a,h)}while(1);qg();oj.current=f;X=e;null!==Y?d=0:(U=null,W=0,d=V);if(0!==(tj&Hi))Qj(a,0);else if(0!==d){2===d&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),c=Wc(a),0!==c&&(d=Tj(a,c)));if(1===d)throw b=sj,Qj(a,0),Ii(a,c),Mj(a,O()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(y(345));case 2:Uj(a);break;case 3:Ii(a,c);if((c&62914560)===c&&(d=jj+500-O(),10<d)){if(0!==Uc(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Hg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=of(Uj.bind(null,a),d);break}Uj(a);break;case 4:Ii(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-Vc(c);f=1<<g;g=d[g];g>e&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10<c){a.timeoutHandle=of(Uj.bind(null,a),c);break}Uj(a);break;case 5:Uj(a);break;default:throw Error(y(329));}}Mj(a,O());return a.callbackNode===b?Nj.bind(null,a):null}function Ii(a,b){b&=~uj;b&=~Hi;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-Vc(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Lj(a){if(0!==(X&48))throw Error(y(327));Oj();if(a===U&&0!==(a.expiredLanes&W)){var b=W;var c=Tj(a,b);0!==(tj&Hi)&&(b=Uc(a,b),c=Tj(a,b))}else b=Uc(a,0),c=Tj(a,b);0!==a.tag&&2===c&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),b=Wc(a),0!==b&&(c=Tj(a,b)));if(1===c)throw c=sj,Qj(a,0),Ii(a,b),Mj(a,O()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;Uj(a);Mj(a,O());return null}\nfunction Vj(){if(null!==Cj){var a=Cj;Cj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Mj(a,O())})}ig()}function Wj(a,b){var c=X;X|=1;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function Xj(a,b){var c=X;X&=-2;X|=8;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function ni(a,b){I(rj,qj);qj|=b;tj|=b}function Ki(){qj=rj.current;H(rj)}\nfunction Qj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,pf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Gf();break;case 3:fh();H(N);H(M);uh();break;case 5:hh(d);break;case 4:fh();break;case 13:H(P);break;case 19:H(P);break;case 10:rg(d);break;case 23:case 24:Ki()}c=c.return}U=a;Y=Tg(a.current,null);W=qj=tj=b;V=0;sj=null;uj=Hi=Dg=0}\nfunction Sj(a,b){do{var c=Y;try{qg();vh.current=Gh;if(yh){for(var d=R.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}yh=!1}xh=0;T=S=R=null;zh=!1;pj.current=null;if(null===c||null===c.return){V=1;sj=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=W;h.flags|=2048;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var n=h.alternate;n?(h.updateQueue=n.updateQueue,h.memoizedState=n.memoizedState,h.lanes=n.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var A=0!==(P.current&1),p=g;do{var C;if(C=13===p.tag){var x=p.memoizedState;if(null!==x)C=null!==x.dehydrated?!0:!1;else{var w=p.memoizedProps;C=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:A?!1:!0}}if(C){var z=p.updateQueue;if(null===z){var u=new Set;u.add(l);p.updateQueue=u}else z.add(l);if(0===(p.mode&2)){p.flags|=64;h.flags|=16384;h.flags&=-2981;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var t=zg(-1,1);t.tag=2;Ag(h,t)}h.lanes|=1;break a}k=\nvoid 0;h=b;var q=f.pingCache;null===q?(q=f.pingCache=new Oi,k=new Set,q.set(l,k)):(k=q.get(l),void 0===k&&(k=new Set,q.set(l,k)));if(!k.has(h)){k.add(h);var v=Yj.bind(null,f,l,h);l.then(v,v)}p.flags|=4096;p.lanes=b;break a}p=p.return}while(null!==p);k=Error((Ra(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Li(b);if(null!==c){c.flags&=2047;Y=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=2048)}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===V&&(V=5)}function Uj(a){var b=eg();gg(99,dk.bind(null,a,b));return null}\nfunction dk(a,b){do Oj();while(null!==yj);if(0!==(X&48))throw Error(y(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(y(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-Vc(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nCj&&0===(d&24)&&Cj.has(a)&&Cj.delete(a);a===U&&(Y=U=null,W=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=X;X|=32;pj.current=null;kf=fd;g=Ne();if(Oe(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(va){h=null;\nbreak a}var n=0,A=-1,p=-1,C=0,x=0,w=g,z=null;b:for(;;){for(var u;;){w!==h||0!==f&&3!==w.nodeType||(A=n+f);w!==k||0!==l&&3!==w.nodeType||(p=n+l);3===w.nodeType&&(n+=w.nodeValue.length);if(null===(u=w.firstChild))break;z=w;w=u}for(;;){if(w===g)break b;z===h&&++C===f&&(A=n);z===k&&++x===l&&(p=n);if(null!==(u=w.nextSibling))break;w=z;z=w.parentNode}w=u}h=-1===A||-1===p?null:{start:A,end:p}}else h=null;h=h||{start:0,end:0}}else h=null;lf={focusedElem:g,selectionRange:h};fd=!1;Ij=null;Jj=!1;Z=d;do try{ek()}catch(va){if(null===\nZ)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Ij=null;Z=d;do try{for(g=a;null!==Z;){var t=Z.flags;t&16&&pb(Z.stateNode,\"\");if(t&128){var q=Z.alternate;if(null!==q){var v=q.ref;null!==v&&(\"function\"===typeof v?v(null):v.current=null)}}switch(t&1038){case 2:fj(Z);Z.flags&=-3;break;case 6:fj(Z);Z.flags&=-3;ij(Z.alternate,Z);break;case 1024:Z.flags&=-1025;break;case 1028:Z.flags&=-1025;ij(Z.alternate,Z);break;case 4:ij(Z.alternate,Z);break;case 8:h=Z;cj(g,h);var J=h.alternate;dj(h);null!==\nJ&&dj(J)}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);v=lf;q=Ne();t=v.focusedElem;g=v.selectionRange;if(q!==t&&t&&t.ownerDocument&&Me(t.ownerDocument.documentElement,t)){null!==g&&Oe(t)&&(q=g.start,v=g.end,void 0===v&&(v=q),\"selectionStart\"in t?(t.selectionStart=q,t.selectionEnd=Math.min(v,t.value.length)):(v=(q=t.ownerDocument||document)&&q.defaultView||window,v.getSelection&&(v=v.getSelection(),h=t.textContent.length,J=Math.min(g.start,h),g=void 0===\ng.end?J:Math.min(g.end,h),!v.extend&&J>g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;t<q.length;t++)v=q[t],v.element.scrollLeft=v.left,v.element.scrollTop=v.top}fd=!!kf;lf=kf=null;a.current=c;Z=d;do try{for(t=a;null!==Z;){var K=Z.flags;K&36&&Yi(t,Z.alternate,Z);if(K&128){q=void 0;var Q=Z.ref;if(null!==Q){var L=Z.stateNode;switch(Z.tag){case 5:q=L;break;default:q=L}\"function\"===typeof Q?Q(q):Q.current=q}}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Z=null;$f();X=e}else a.current=c;if(xj)xj=!1,yj=a,zj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(K=Z,K.sibling=null,K.stateNode=null),Z=b;d=a.pendingLanes;0===d&&(Ti=null);1===d?a===Ej?Dj++:(Dj=0,Ej=a):Dj=0;c=c.stateNode;if(Mf&&\"function\"===typeof Mf.onCommitFiberRoot)try{Mf.onCommitFiberRoot(Lf,c,void 0,64===(c.current.flags&64))}catch(va){}Mj(a,O());if(Qi)throw Qi=!1,a=Ri,Ri=null,a;if(0!==(X&8))return null;ig();return null}\nfunction ek(){for(;null!==Z;){var a=Z.alternate;Jj||null===Ij||(0!==(Z.flags&8)?dc(Z,Ij)&&(Jj=!0):13===Z.tag&&mj(a,Z)&&dc(Z,Ij)&&(Jj=!0));var b=Z.flags;0!==(b&256)&&Xi(a,Z);0===(b&512)||xj||(xj=!0,hg(97,function(){Oj();return null}));Z=Z.nextEffect}}function Oj(){if(90!==zj){var a=97<zj?97:zj;zj=90;return gg(a,fk)}return!1}function $i(a,b){Aj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}function Zi(a,b){Bj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}\nfunction fk(){if(null===yj)return!1;var a=yj;yj=null;if(0!==(X&48))throw Error(y(331));var b=X;X|=32;var c=Bj;Bj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}c=Aj;Aj=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;X=b;ig();return!0}function gk(a,b,c){b=Mi(c,b);b=Pi(a,b,1);Ag(a,b);b=Hg();a=Kj(a,1);null!==a&&($c(a,1,b),Mj(a,b))}\nfunction Wi(a,b){if(3===a.tag)gk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){gk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d))){a=Mi(b,a);var e=Si(c,a,1);Ag(c,e);e=Hg();c=Kj(c,1);if(null!==c)$c(c,1,e),Mj(c,e);else if(\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d)))try{d.componentDidCatch(b,a)}catch(f){}break}}c=c.return}}\nfunction Yj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Hg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(W&c)===c&&(4===V||3===V&&(W&62914560)===W&&500>O()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],th.push(f);c=Zg(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|1024,c=c.sibling}else fi(a,b,d,c),sh();b=b.child}return b;case 5:return gh(b),null===a&&\nph(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,nf(d,e)?g=null:null!==f&&nf(d,f)&&(b.flags|=16),oi(a,b),fi(a,b,g,c),b.child;case 6:return null===a&&ph(b),null;case 13:return ti(a,b,c);case 4:return eh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Yg(b,null,d,c):fi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),gi(a,b,d,e,c);case 7:return fi(a,b,b.pendingProps,c),b.child;case 8:return fi(a,b,b.pendingProps.children,\nc),b.child;case 12:return fi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(mg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=He(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!N.current){b=hi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=\nk.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=zg(-1,c&-c),l.tag=2,Ag(h,l));h.lanes|=c;l=h.alternate;null!==l&&(l.lanes|=c);sg(h.return,c);k.lanes|=c;break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}fi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,tg(b,c),e=vg(e,\nf.unstable_observedBits),d=d(e),b.flags|=1,fi(a,b,d,c),b.child;case 14:return e=b.type,f=lg(e,b.pendingProps),f=lg(e.type,f),ii(a,b,e,f,d,c);case 15:return ki(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Ff(d)?(a=!0,Jf(b)):a=!1,tg(b,c),Mg(b,d,e),Og(b,d,e,c),qi(null,b,d,!0,a,c);case 19:return Ai(a,b,c);case 23:return mi(a,b,c);case 24:return mi(a,b,c)}throw Error(y(156,b.tag));\n};function ik(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function nh(a,b,c,d){return new ik(a,b,c,d)}function ji(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction hk(a){if(\"function\"===typeof a)return ji(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Tg(a,b){var c=a.alternate;null===c?(c=nh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Vg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ji(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return Xg(c.children,e,f,b);case Ha:g=8;e|=16;break;case wa:g=8;e|=1;break;case xa:return a=nh(12,c,b,e|8),a.elementType=xa,a.type=xa,a.lanes=f,a;case Ba:return a=nh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=nh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ia:return vi(c,e,f,b);case Ja:return a=nh(24,c,b,e),a.elementType=Ja,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a;case Fa:g=22;break a}throw Error(y(130,null==a?a:typeof a,\"\"));}b=nh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Xg(a,b,c,d){a=nh(7,a,d,b);a.lanes=c;return a}function vi(a,b,c,d){a=nh(23,a,d,b);a.elementType=Ia;a.lanes=c;return a}function Ug(a,b,c){a=nh(6,a,null,b);a.lanes=c;return a}\nfunction Wg(a,b,c){b=nh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction jk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=0;this.eventTimes=Zc(0);this.expirationTimes=Zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Zc(0);this.mutableSourceEagerHydrationData=null}\nfunction kk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction lk(a,b,c,d){var e=b.current,f=Hg(),g=Ig(e);a:if(c){c=c._reactInternals;b:{if(Zb(c)!==c||1!==c.tag)throw Error(y(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(Ff(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(y(171));}if(1===c.tag){var k=c.type;if(Ff(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=zg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Ag(e,b);Jg(e,g,f);return g}function mk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function nk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ok(a,b){nk(a,b);(a=a.alternate)&&nk(a,b)}function pk(){return null}\nfunction qk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new jk(a,b,null!=c&&!0===c.hydrate);b=nh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;xg(b);a[ff]=c.current;cf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}this._internalRoot=c}\nqk.prototype.render=function(a){lk(a,this._internalRoot,null,null)};qk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;lk(null,a,null,function(){b[ff]=null})};function rk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}\nfunction sk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new qk(a,0,b?{hydrate:!0}:void 0)}\nfunction tk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=mk(g);h.call(a)}}lk(b,g,a,e)}else{f=c._reactRootContainer=sk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=mk(g);k.call(a)}}Xj(function(){lk(b,g,a,e)})}return mk(g)}ec=function(a){if(13===a.tag){var b=Hg();Jg(a,4,b);ok(a,4)}};fc=function(a){if(13===a.tag){var b=Hg();Jg(a,67108864,b);ok(a,67108864)}};\ngc=function(a){if(13===a.tag){var b=Hg(),c=Ig(a);Jg(a,c,b);ok(a,c)}};hc=function(a,b){return b()};\nyb=function(a,b,c){switch(b){case \"input\":ab(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(y(90));Wa(d);ab(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Wj;\nHb=function(a,b,c,d,e){var f=X;X|=4;try{return gg(98,a.bind(null,b,c,d,e))}finally{X=f,0===X&&(wj(),ig())}};Ib=function(){0===(X&49)&&(Vj(),Oj())};Jb=function(a,b){var c=X;X|=2;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}};function uk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rk(b))throw Error(y(200));return kk(a,b,null,c)}var vk={Events:[Cb,ue,Db,Eb,Fb,Oj,{current:!1}]},wk={findFiberByHostInstance:wc,bundleType:0,version:\"17.0.2\",rendererPackageName:\"react-dom\"};\nvar xk={bundleType:wk.bundleType,version:wk.version,rendererPackageName:wk.rendererPackageName,rendererConfig:wk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=cc(a);return null===a?null:a.stateNode},findFiberByHostInstance:wk.findFiberByHostInstance||\npk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var yk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!yk.isDisabled&&yk.supportsFiber)try{Lf=yk.inject(xk),Mf=yk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=vk;exports.createPortal=uk;\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(y(188));throw Error(y(268,Object.keys(a)));}a=cc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a,b){var c=X;if(0!==(c&48))return a(b);X|=1;try{if(a)return gg(99,a.bind(null,b))}finally{X=c,ig()}};exports.hydrate=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!0,c)};\nexports.render=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!rk(a))throw Error(y(40));return a._reactRootContainer?(Xj(function(){tk(null,null,a,!1,function(){a._reactRootContainer=null;a[ff]=null})}),!0):!1};exports.unstable_batchedUpdates=Wj;exports.unstable_createPortal=function(a,b){return uk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!rk(c))throw Error(y(200));if(null==a||void 0===a._reactInternals)throw Error(y(38));return tk(a,b,c,!1,d)};exports.version=\"17.0.2\";\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a)\n , arrB = isArray(b)\n , i\n , length\n , key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length)\n return false;\n\n for (i = length; i-- !== 0;)\n if (!hasProp.call(b, keys[i])) return false;\n // end fast-deep-equal\n\n // start react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element && b instanceof Element)\n return a === b;\n\n // custom handling for React\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n }\n // end react-fast-compare\n\n // fast-deep-equal index.js 2.0.1\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message && error.message.match(/stack|recursion/i)) || (error.number === -2146828260)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","import React from 'react'\n\nlet renderErr = 'Renderer Error ☝️'\n\nexport const actions = {\n init: 'init',\n}\n\nexport const defaultRenderer = ({ value = '' }) => value;\nexport const emptyRenderer = () => <> </>;\n\nexport const defaultColumn = {\n Cell: defaultRenderer,\n width: 150,\n minWidth: 0,\n maxWidth: Number.MAX_SAFE_INTEGER,\n}\n\nfunction mergeProps(...propList) {\n return propList.reduce((props, next) => {\n const { style, className, ...rest } = next\n\n props = {\n ...props,\n ...rest,\n }\n\n if (style) {\n props.style = props.style\n ? { ...(props.style || {}), ...(style || {}) }\n : style\n }\n\n if (className) {\n props.className = props.className\n ? props.className + ' ' + className\n : className\n }\n\n if (props.className === '') {\n delete props.className\n }\n\n return props\n }, {})\n}\n\nfunction handlePropGetter(prevProps, userProps, meta) {\n // Handle a lambda, pass it the previous props\n if (typeof userProps === 'function') {\n return handlePropGetter({}, userProps(prevProps, meta))\n }\n\n // Handle an array, merge each item as separate props\n if (Array.isArray(userProps)) {\n return mergeProps(prevProps, ...userProps)\n }\n\n // Handle an object by default, merge the two objects\n return mergeProps(prevProps, userProps)\n}\n\nexport const makePropGetter = (hooks, meta = {}) => {\n return (userProps = {}) =>\n [...hooks, userProps].reduce(\n (prev, next) =>\n handlePropGetter(prev, next, {\n ...meta,\n userProps,\n }),\n {}\n )\n}\n\nexport const reduceHooks = (hooks, initial, meta = {}, allowUndefined) =>\n hooks.reduce((prev, next) => {\n const nextValue = next(prev, meta)\n if (process.env.NODE_ENV !== 'production') {\n if (!allowUndefined && typeof nextValue === 'undefined') {\n console.info(next)\n throw new Error(\n 'React Table: A reducer hook ☝️ just returned undefined! This is not allowed.'\n )\n }\n }\n return nextValue\n }, initial)\n\nexport const loopHooks = (hooks, context, meta = {}) =>\n hooks.forEach(hook => {\n const nextValue = hook(context, meta)\n if (process.env.NODE_ENV !== 'production') {\n if (typeof nextValue !== 'undefined') {\n console.info(hook, nextValue)\n throw new Error(\n 'React Table: A loop-type hook ☝️ just returned a value! This is not allowed.'\n )\n }\n }\n })\n\nexport function ensurePluginOrder(plugins, befores, pluginName, afters) {\n if (process.env.NODE_ENV !== 'production' && afters) {\n throw new Error(\n `Defining plugins in the \"after\" section of ensurePluginOrder is no longer supported (see plugin ${pluginName})`\n )\n }\n const pluginIndex = plugins.findIndex(\n plugin => plugin.pluginName === pluginName\n )\n\n if (pluginIndex === -1) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`The plugin \"${pluginName}\" was not found in the plugin list!\nThis usually means you need to need to name your plugin hook by setting the 'pluginName' property of the hook function, eg:\n\n ${pluginName}.pluginName = '${pluginName}'\n`)\n }\n }\n\n befores.forEach(before => {\n const beforeIndex = plugins.findIndex(\n plugin => plugin.pluginName === before\n )\n if (beforeIndex > -1 && beforeIndex > pluginIndex) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n `React Table: The ${pluginName} plugin hook must be placed after the ${before} plugin hook!`\n )\n }\n }\n })\n}\n\nexport function functionalUpdate(updater, old) {\n return typeof updater === 'function' ? updater(old) : updater\n}\n\nexport function useGetLatest(obj) {\n const ref = React.useRef()\n ref.current = obj\n\n return React.useCallback(() => ref.current, [])\n}\n\n// SSR has issues with useLayoutEffect still, so use useEffect during SSR\nexport const safeUseLayoutEffect =\n typeof document !== 'undefined' ? React.useLayoutEffect : React.useEffect\n\nexport function useMountedLayoutEffect(fn, deps) {\n const mountedRef = React.useRef(false)\n\n safeUseLayoutEffect(() => {\n if (mountedRef.current) {\n fn()\n }\n mountedRef.current = true\n // eslint-disable-next-line\n }, deps)\n}\n\nexport function useAsyncDebounce(defaultFn, defaultWait = 0) {\n const debounceRef = React.useRef({})\n\n const getDefaultFn = useGetLatest(defaultFn)\n const getDefaultWait = useGetLatest(defaultWait)\n\n return React.useCallback(\n async (...args) => {\n if (!debounceRef.current.promise) {\n debounceRef.current.promise = new Promise((resolve, reject) => {\n debounceRef.current.resolve = resolve\n debounceRef.current.reject = reject\n })\n }\n\n if (debounceRef.current.timeout) {\n clearTimeout(debounceRef.current.timeout)\n }\n\n debounceRef.current.timeout = setTimeout(async () => {\n delete debounceRef.current.timeout\n try {\n debounceRef.current.resolve(await getDefaultFn()(...args))\n } catch (err) {\n debounceRef.current.reject(err)\n } finally {\n delete debounceRef.current.promise\n }\n }, getDefaultWait())\n\n return debounceRef.current.promise\n },\n [getDefaultFn, getDefaultWait]\n )\n}\n\nexport function makeRenderer(instance, column, meta = {}) {\n return (type, userProps = {}) => {\n const Comp = typeof type === 'string' ? column[type] : type\n\n if (typeof Comp === 'undefined') {\n console.info(column)\n throw new Error(renderErr)\n }\n\n return flexRender(Comp, { ...instance, column, ...meta, ...userProps })\n }\n}\n\nexport function flexRender(Comp, props) {\n return isReactComponent(Comp) ? <Comp {...props} /> : Comp\n}\n\nfunction isReactComponent(component) {\n return (\n isClassComponent(component) ||\n typeof component === 'function' ||\n isExoticComponent(component)\n )\n}\n\nfunction isClassComponent(component) {\n return (\n typeof component === 'function' &&\n (() => {\n const proto = Object.getPrototypeOf(component)\n return proto.prototype && proto.prototype.isReactComponent\n })()\n )\n}\n\nfunction isExoticComponent(component) {\n return (\n typeof component === 'object' &&\n typeof component.$$typeof === 'symbol' &&\n ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description)\n )\n}\n","import { defaultColumn, emptyRenderer } from './publicUtils'\n\n// Find the depth of the columns\nexport function findMaxDepth(columns, depth = 0) {\n return columns.reduce((prev, curr) => {\n if (curr.columns) {\n return Math.max(prev, findMaxDepth(curr.columns, depth + 1))\n }\n return depth\n }, 0)\n}\n\n// Build the visible columns, headers and flat column list\nexport function linkColumnStructure(columns, parent, depth = 0) {\n return columns.map(column => {\n column = {\n ...column,\n parent,\n depth,\n }\n\n assignColumnAccessor(column)\n\n if (column.columns) {\n column.columns = linkColumnStructure(column.columns, column, depth + 1)\n }\n return column\n })\n}\n\nexport function flattenColumns(columns) {\n return flattenBy(columns, 'columns')\n}\n\nexport function assignColumnAccessor(column) {\n // First check for string accessor\n let { id, accessor, Header } = column\n\n if (typeof accessor === 'string') {\n id = id || accessor\n const accessorPath = accessor.split('.')\n accessor = row => getBy(row, accessorPath)\n }\n\n if (!id && typeof Header === 'string' && Header) {\n id = Header\n }\n\n if (!id && column.columns) {\n console.error(column)\n throw new Error('A column ID (or unique \"Header\" value) is required!')\n }\n\n if (!id) {\n console.error(column)\n throw new Error('A column ID (or string accessor) is required!')\n }\n\n Object.assign(column, {\n id,\n accessor,\n })\n\n return column\n}\n\nexport function decorateColumn(column, userDefaultColumn) {\n if (!userDefaultColumn) {\n throw new Error()\n }\n Object.assign(column, {\n // Make sure there is a fallback header, just in case\n Header: emptyRenderer,\n Footer: emptyRenderer,\n ...defaultColumn,\n ...userDefaultColumn,\n ...column,\n })\n\n Object.assign(column, {\n originalWidth: column.width,\n })\n\n return column\n}\n\n// Build the header groups from the bottom up\nexport function makeHeaderGroups(\n allColumns,\n defaultColumn,\n additionalHeaderProperties = () => ({})\n) {\n const headerGroups = []\n\n let scanColumns = allColumns\n\n let uid = 0\n const getUID = () => uid++\n\n while (scanColumns.length) {\n // The header group we are creating\n const headerGroup = {\n headers: [],\n }\n\n // The parent columns we're going to scan next\n const parentColumns = []\n\n const hasParents = scanColumns.some(d => d.parent)\n\n // Scan each column for parents\n scanColumns.forEach(column => {\n // What is the latest (last) parent column?\n let latestParentColumn = [...parentColumns].reverse()[0]\n\n let newParent\n\n if (hasParents) {\n // If the column has a parent, add it if necessary\n if (column.parent) {\n newParent = {\n ...column.parent,\n originalId: column.parent.id,\n id: `${column.parent.id}_${getUID()}`,\n headers: [column],\n ...additionalHeaderProperties(column),\n }\n } else {\n // If other columns have parents, we'll need to add a place holder if necessary\n const originalId = `${column.id}_placeholder`\n newParent = decorateColumn(\n {\n originalId,\n id: `${column.id}_placeholder_${getUID()}`,\n placeholderOf: column,\n headers: [column],\n ...additionalHeaderProperties(column),\n },\n defaultColumn\n )\n }\n\n // If the resulting parent columns are the same, just add\n // the column and increment the header span\n if (\n latestParentColumn &&\n latestParentColumn.originalId === newParent.originalId\n ) {\n latestParentColumn.headers.push(column)\n } else {\n parentColumns.push(newParent)\n }\n }\n\n headerGroup.headers.push(column)\n })\n\n headerGroups.push(headerGroup)\n\n // Start scanning the parent columns\n scanColumns = parentColumns\n }\n\n return headerGroups.reverse()\n}\n\nconst pathObjCache = new Map()\n\nexport function getBy(obj, path, def) {\n if (!path) {\n return obj\n }\n const cacheKey = typeof path === 'function' ? path : JSON.stringify(path)\n\n const pathObj =\n pathObjCache.get(cacheKey) ||\n (() => {\n const pathObj = makePathArray(path)\n pathObjCache.set(cacheKey, pathObj)\n return pathObj\n })()\n\n let val\n\n try {\n val = pathObj.reduce((cursor, pathPart) => cursor[pathPart], obj)\n } catch (e) {\n // continue regardless of error\n }\n return typeof val !== 'undefined' ? val : def\n}\n\nexport function getFirstDefined(...args) {\n for (let i = 0; i < args.length; i += 1) {\n if (typeof args[i] !== 'undefined') {\n return args[i]\n }\n }\n}\n\nexport function getElementDimensions(element) {\n const rect = element.getBoundingClientRect()\n const style = window.getComputedStyle(element)\n const margins = {\n left: parseInt(style.marginLeft),\n right: parseInt(style.marginRight),\n }\n const padding = {\n left: parseInt(style.paddingLeft),\n right: parseInt(style.paddingRight),\n }\n return {\n left: Math.ceil(rect.left),\n width: Math.ceil(rect.width),\n outerWidth: Math.ceil(\n rect.width + margins.left + margins.right + padding.left + padding.right\n ),\n marginLeft: margins.left,\n marginRight: margins.right,\n paddingLeft: padding.left,\n paddingRight: padding.right,\n scrollWidth: element.scrollWidth,\n }\n}\n\nexport function isFunction(a) {\n if (typeof a === 'function') {\n return a\n }\n}\n\nexport function flattenBy(arr, key) {\n const flat = []\n\n const recurse = arr => {\n arr.forEach(d => {\n if (!d[key]) {\n flat.push(d)\n } else {\n recurse(d[key])\n }\n })\n }\n\n recurse(arr)\n\n return flat\n}\n\nexport function expandRows(\n rows,\n { manualExpandedKey, expanded, expandSubRows = true }\n) {\n const expandedRows = []\n\n const handleRow = (row, addToExpandedRows = true) => {\n row.isExpanded =\n (row.original && row.original[manualExpandedKey]) || expanded[row.id]\n\n row.canExpand = row.subRows && !!row.subRows.length\n\n if (addToExpandedRows) {\n expandedRows.push(row)\n }\n\n if (row.subRows && row.subRows.length && row.isExpanded) {\n row.subRows.forEach(row => handleRow(row, expandSubRows))\n }\n }\n\n rows.forEach(row => handleRow(row))\n\n return expandedRows\n}\n\nexport function getFilterMethod(filter, userFilterTypes, filterTypes) {\n return (\n isFunction(filter) ||\n userFilterTypes[filter] ||\n filterTypes[filter] ||\n filterTypes.text\n )\n}\n\nexport function shouldAutoRemoveFilter(autoRemove, value, column) {\n return autoRemove ? autoRemove(value, column) : typeof value === 'undefined'\n}\n\nexport function unpreparedAccessWarning() {\n throw new Error(\n 'React-Table: You have not called prepareRow(row) one or more rows you are attempting to render.'\n )\n}\n\nlet passiveSupported = null\nexport function passiveEventSupported() {\n // memoize support to avoid adding multiple test events\n if (typeof passiveSupported === 'boolean') return passiveSupported\n\n let supported = false\n try {\n const options = {\n get passive() {\n supported = true\n return false\n },\n }\n\n window.addEventListener('test', null, options)\n window.removeEventListener('test', null, options)\n } catch (err) {\n supported = false\n }\n passiveSupported = supported\n return passiveSupported\n}\n\n//\n\nconst reOpenBracket = /\\[/g\nconst reCloseBracket = /\\]/g\n\nfunction makePathArray(obj) {\n return (\n flattenDeep(obj)\n // remove all periods in parts\n .map(d => String(d).replace('.', '_'))\n // join parts using period\n .join('.')\n // replace brackets with periods\n .replace(reOpenBracket, '.')\n .replace(reCloseBracket, '')\n // split it back out on periods\n .split('.')\n )\n}\n\nfunction flattenDeep(arr, newArr = []) {\n if (!Array.isArray(arr)) {\n newArr.push(arr)\n } else {\n for (let i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], newArr)\n }\n }\n return newArr\n}\n","const defaultGetTableProps = props => ({\n role: 'table',\n ...props,\n})\n\nconst defaultGetTableBodyProps = props => ({\n role: 'rowgroup',\n ...props,\n})\n\nconst defaultGetHeaderProps = (props, { column }) => ({\n key: `header_${column.id}`,\n colSpan: column.totalVisibleHeaderCount,\n role: 'columnheader',\n ...props,\n})\n\nconst defaultGetFooterProps = (props, { column }) => ({\n key: `footer_${column.id}`,\n colSpan: column.totalVisibleHeaderCount,\n ...props,\n})\n\nconst defaultGetHeaderGroupProps = (props, { index }) => ({\n key: `headerGroup_${index}`,\n role: 'row',\n ...props,\n})\n\nconst defaultGetFooterGroupProps = (props, { index }) => ({\n key: `footerGroup_${index}`,\n ...props,\n})\n\nconst defaultGetRowProps = (props, { row }) => ({\n key: `row_${row.id}`,\n role: 'row',\n ...props,\n})\n\nconst defaultGetCellProps = (props, { cell }) => ({\n key: `cell_${cell.row.id}_${cell.column.id}`,\n role: 'cell',\n ...props,\n})\n\nexport default function makeDefaultPluginHooks() {\n return {\n useOptions: [],\n stateReducers: [],\n useControlledState: [],\n columns: [],\n columnsDeps: [],\n allColumns: [],\n allColumnsDeps: [],\n accessValue: [],\n materializedColumns: [],\n materializedColumnsDeps: [],\n useInstanceAfterData: [],\n visibleColumns: [],\n visibleColumnsDeps: [],\n headerGroups: [],\n headerGroupsDeps: [],\n useInstanceBeforeDimensions: [],\n useInstance: [],\n prepareRow: [],\n getTableProps: [defaultGetTableProps],\n getTableBodyProps: [defaultGetTableBodyProps],\n getHeaderGroupProps: [defaultGetHeaderGroupProps],\n getFooterGroupProps: [defaultGetFooterGroupProps],\n getHeaderProps: [defaultGetHeaderProps],\n getFooterProps: [defaultGetFooterProps],\n getRowProps: [defaultGetRowProps],\n getCellProps: [defaultGetCellProps],\n useFinalInstance: [],\n }\n}\n","import React from 'react'\n\nimport {\n actions,\n functionalUpdate,\n useGetLatest,\n makePropGetter,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nactions.resetHiddenColumns = 'resetHiddenColumns'\nactions.toggleHideColumn = 'toggleHideColumn'\nactions.setHiddenColumns = 'setHiddenColumns'\nactions.toggleHideAllColumns = 'toggleHideAllColumns'\n\nexport const useColumnVisibility = hooks => {\n hooks.getToggleHiddenProps = [defaultGetToggleHiddenProps]\n hooks.getToggleHideAllColumnsProps = [defaultGetToggleHideAllColumnsProps]\n\n hooks.stateReducers.push(reducer)\n hooks.useInstanceBeforeDimensions.push(useInstanceBeforeDimensions)\n hooks.headerGroupsDeps.push((deps, { instance }) => [\n ...deps,\n instance.state.hiddenColumns,\n ])\n hooks.useInstance.push(useInstance)\n}\n\nuseColumnVisibility.pluginName = 'useColumnVisibility'\n\nconst defaultGetToggleHiddenProps = (props, { column }) => [\n props,\n {\n onChange: e => {\n column.toggleHidden(!e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked: column.isVisible,\n title: 'Toggle Column Visible',\n },\n]\n\nconst defaultGetToggleHideAllColumnsProps = (props, { instance }) => [\n props,\n {\n onChange: e => {\n instance.toggleHideAllColumns(!e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked: !instance.allColumnsHidden && !instance.state.hiddenColumns.length,\n title: 'Toggle All Columns Hidden',\n indeterminate:\n !instance.allColumnsHidden && instance.state.hiddenColumns.length,\n },\n]\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n hiddenColumns: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetHiddenColumns) {\n return {\n ...state,\n hiddenColumns: instance.initialState.hiddenColumns || [],\n }\n }\n\n if (action.type === actions.toggleHideColumn) {\n const should =\n typeof action.value !== 'undefined'\n ? action.value\n : !state.hiddenColumns.includes(action.columnId)\n\n const hiddenColumns = should\n ? [...state.hiddenColumns, action.columnId]\n : state.hiddenColumns.filter(d => d !== action.columnId)\n\n return {\n ...state,\n hiddenColumns,\n }\n }\n\n if (action.type === actions.setHiddenColumns) {\n return {\n ...state,\n hiddenColumns: functionalUpdate(action.value, state.hiddenColumns),\n }\n }\n\n if (action.type === actions.toggleHideAllColumns) {\n const shouldAll =\n typeof action.value !== 'undefined'\n ? action.value\n : !state.hiddenColumns.length\n\n return {\n ...state,\n hiddenColumns: shouldAll ? instance.allColumns.map(d => d.id) : [],\n }\n }\n}\n\nfunction useInstanceBeforeDimensions(instance) {\n const {\n headers,\n state: { hiddenColumns },\n } = instance\n\n const isMountedRef = React.useRef(false)\n\n if (!isMountedRef.current) {\n }\n\n const handleColumn = (column, parentVisible) => {\n column.isVisible = parentVisible && !hiddenColumns.includes(column.id)\n\n let totalVisibleHeaderCount = 0\n\n if (column.headers && column.headers.length) {\n column.headers.forEach(\n subColumn =>\n (totalVisibleHeaderCount += handleColumn(subColumn, column.isVisible))\n )\n } else {\n totalVisibleHeaderCount = column.isVisible ? 1 : 0\n }\n\n column.totalVisibleHeaderCount = totalVisibleHeaderCount\n\n return totalVisibleHeaderCount\n }\n\n let totalVisibleHeaderCount = 0\n\n headers.forEach(\n subHeader => (totalVisibleHeaderCount += handleColumn(subHeader, true))\n )\n}\n\nfunction useInstance(instance) {\n const {\n columns,\n flatHeaders,\n dispatch,\n allColumns,\n getHooks,\n state: { hiddenColumns },\n autoResetHiddenColumns = true,\n } = instance\n\n const getInstance = useGetLatest(instance)\n\n const allColumnsHidden = allColumns.length === hiddenColumns.length\n\n const toggleHideColumn = React.useCallback(\n (columnId, value) =>\n dispatch({ type: actions.toggleHideColumn, columnId, value }),\n [dispatch]\n )\n\n const setHiddenColumns = React.useCallback(\n value => dispatch({ type: actions.setHiddenColumns, value }),\n [dispatch]\n )\n\n const toggleHideAllColumns = React.useCallback(\n value => dispatch({ type: actions.toggleHideAllColumns, value }),\n [dispatch]\n )\n\n const getToggleHideAllColumnsProps = makePropGetter(\n getHooks().getToggleHideAllColumnsProps,\n { instance: getInstance() }\n )\n\n flatHeaders.forEach(column => {\n column.toggleHidden = value => {\n dispatch({\n type: actions.toggleHideColumn,\n columnId: column.id,\n value,\n })\n }\n\n column.getToggleHiddenProps = makePropGetter(\n getHooks().getToggleHiddenProps,\n {\n instance: getInstance(),\n column,\n }\n )\n })\n\n const getAutoResetHiddenColumns = useGetLatest(autoResetHiddenColumns)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetHiddenColumns()) {\n dispatch({ type: actions.resetHiddenColumns })\n }\n }, [dispatch, columns])\n\n Object.assign(instance, {\n allColumnsHidden,\n toggleHideColumn,\n setHiddenColumns,\n toggleHideAllColumns,\n getToggleHideAllColumnsProps,\n })\n}\n","import React from 'react'\n\n//\n\nimport {\n linkColumnStructure,\n flattenColumns,\n assignColumnAccessor,\n unpreparedAccessWarning,\n makeHeaderGroups,\n decorateColumn,\n} from '../utils'\n\nimport {\n useGetLatest,\n reduceHooks,\n actions,\n loopHooks,\n makePropGetter,\n makeRenderer,\n} from '../publicUtils'\n\nimport makeDefaultPluginHooks from '../makeDefaultPluginHooks'\n\nimport { useColumnVisibility } from './useColumnVisibility'\n\nconst defaultInitialState = {}\nconst defaultColumnInstance = {}\nconst defaultReducer = (state, action, prevState) => state\nconst defaultGetSubRows = (row, index) => row.subRows || []\nconst defaultGetRowId = (row, index, parent) =>\n `${parent ? [parent.id, index].join('.') : index}`\nconst defaultUseControlledState = d => d\n\nfunction applyDefaults(props) {\n const {\n initialState = defaultInitialState,\n defaultColumn = defaultColumnInstance,\n getSubRows = defaultGetSubRows,\n getRowId = defaultGetRowId,\n stateReducer = defaultReducer,\n useControlledState = defaultUseControlledState,\n ...rest\n } = props\n\n return {\n ...rest,\n initialState,\n defaultColumn,\n getSubRows,\n getRowId,\n stateReducer,\n useControlledState,\n }\n}\n\nexport const useTable = (props, ...plugins) => {\n // Apply default props\n props = applyDefaults(props)\n\n // Add core plugins\n plugins = [useColumnVisibility, ...plugins]\n\n // Create the table instance\n let instanceRef = React.useRef({})\n\n // Create a getter for the instance (helps avoid a lot of potential memory leaks)\n const getInstance = useGetLatest(instanceRef.current)\n\n // Assign the props, plugins and hooks to the instance\n Object.assign(getInstance(), {\n ...props,\n plugins,\n hooks: makeDefaultPluginHooks(),\n })\n\n // Allow plugins to register hooks as early as possible\n plugins.filter(Boolean).forEach(plugin => {\n plugin(getInstance().hooks)\n })\n\n // Consume all hooks and make a getter for them\n const getHooks = useGetLatest(getInstance().hooks)\n getInstance().getHooks = getHooks\n delete getInstance().hooks\n\n // Allow useOptions hooks to modify the options coming into the table\n Object.assign(\n getInstance(),\n reduceHooks(getHooks().useOptions, applyDefaults(props))\n )\n\n const {\n data,\n columns: userColumns,\n initialState,\n defaultColumn,\n getSubRows,\n getRowId,\n stateReducer,\n useControlledState,\n } = getInstance()\n\n // Setup user reducer ref\n const getStateReducer = useGetLatest(stateReducer)\n\n // Build the reducer\n const reducer = React.useCallback(\n (state, action) => {\n // Detect invalid actions\n if (!action.type) {\n console.info({ action })\n throw new Error('Unknown Action 👆')\n }\n\n // Reduce the state from all plugin reducers\n return [\n ...getHooks().stateReducers,\n // Allow the user to add their own state reducer(s)\n ...(Array.isArray(getStateReducer())\n ? getStateReducer()\n : [getStateReducer()]),\n ].reduce(\n (s, handler) => handler(s, action, state, getInstance()) || s,\n state\n )\n },\n [getHooks, getStateReducer, getInstance]\n )\n\n // Start the reducer\n const [reducerState, dispatch] = React.useReducer(reducer, undefined, () =>\n reducer(initialState, { type: actions.init })\n )\n\n // Allow the user to control the final state with hooks\n const state = reduceHooks(\n [...getHooks().useControlledState, useControlledState],\n reducerState,\n { instance: getInstance() }\n )\n\n Object.assign(getInstance(), {\n state,\n dispatch,\n })\n\n // Decorate All the columns\n const columns = React.useMemo(\n () =>\n linkColumnStructure(\n reduceHooks(getHooks().columns, userColumns, {\n instance: getInstance(),\n })\n ),\n [\n getHooks,\n getInstance,\n userColumns,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...reduceHooks(getHooks().columnsDeps, [], { instance: getInstance() }),\n ]\n )\n getInstance().columns = columns\n\n // Get the flat list of all columns and allow hooks to decorate\n // those columns (and trigger this memoization via deps)\n let allColumns = React.useMemo(\n () =>\n reduceHooks(getHooks().allColumns, flattenColumns(columns), {\n instance: getInstance(),\n }).map(assignColumnAccessor),\n [\n columns,\n getHooks,\n getInstance,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...reduceHooks(getHooks().allColumnsDeps, [], {\n instance: getInstance(),\n }),\n ]\n )\n getInstance().allColumns = allColumns\n\n // Access the row model using initial columns\n const [rows, flatRows, rowsById] = React.useMemo(() => {\n let rows = []\n let flatRows = []\n const rowsById = {}\n\n const allColumnsQueue = [...allColumns]\n\n while (allColumnsQueue.length) {\n const column = allColumnsQueue.shift()\n accessRowsForColumn({\n data,\n rows,\n flatRows,\n rowsById,\n column,\n getRowId,\n getSubRows,\n accessValueHooks: getHooks().accessValue,\n getInstance,\n })\n }\n\n return [rows, flatRows, rowsById]\n }, [allColumns, data, getRowId, getSubRows, getHooks, getInstance])\n\n Object.assign(getInstance(), {\n rows,\n initialRows: [...rows],\n flatRows,\n rowsById,\n // materializedColumns,\n })\n\n loopHooks(getHooks().useInstanceAfterData, getInstance())\n\n // Get the flat list of all columns AFTER the rows\n // have been access, and allow hooks to decorate\n // those columns (and trigger this memoization via deps)\n let visibleColumns = React.useMemo(\n () =>\n reduceHooks(getHooks().visibleColumns, allColumns, {\n instance: getInstance(),\n }).map(d => decorateColumn(d, defaultColumn)),\n [\n getHooks,\n allColumns,\n getInstance,\n defaultColumn,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...reduceHooks(getHooks().visibleColumnsDeps, [], {\n instance: getInstance(),\n }),\n ]\n )\n\n // Combine new visible columns with all columns\n allColumns = React.useMemo(() => {\n const columns = [...visibleColumns]\n\n allColumns.forEach(column => {\n if (!columns.find(d => d.id === column.id)) {\n columns.push(column)\n }\n })\n\n return columns\n }, [allColumns, visibleColumns])\n getInstance().allColumns = allColumns\n\n if (process.env.NODE_ENV !== 'production') {\n const duplicateColumns = allColumns.filter((column, i) => {\n return allColumns.findIndex(d => d.id === column.id) !== i\n })\n\n if (duplicateColumns.length) {\n console.info(allColumns)\n throw new Error(\n `Duplicate columns were found with ids: \"${duplicateColumns\n .map(d => d.id)\n .join(', ')}\" in the columns array above`\n )\n }\n }\n\n // Make the headerGroups\n const headerGroups = React.useMemo(\n () =>\n reduceHooks(\n getHooks().headerGroups,\n makeHeaderGroups(visibleColumns, defaultColumn),\n getInstance()\n ),\n [\n getHooks,\n visibleColumns,\n defaultColumn,\n getInstance,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...reduceHooks(getHooks().headerGroupsDeps, [], {\n instance: getInstance(),\n }),\n ]\n )\n getInstance().headerGroups = headerGroups\n\n // Get the first level of headers\n const headers = React.useMemo(\n () => (headerGroups.length ? headerGroups[0].headers : []),\n [headerGroups]\n )\n getInstance().headers = headers\n\n // Provide a flat header list for utilities\n getInstance().flatHeaders = headerGroups.reduce(\n (all, headerGroup) => [...all, ...headerGroup.headers],\n []\n )\n\n loopHooks(getHooks().useInstanceBeforeDimensions, getInstance())\n\n // Filter columns down to visible ones\n const visibleColumnsDep = visibleColumns\n .filter(d => d.isVisible)\n .map(d => d.id)\n .sort()\n .join('_')\n\n visibleColumns = React.useMemo(\n () => visibleColumns.filter(d => d.isVisible),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [visibleColumns, visibleColumnsDep]\n )\n getInstance().visibleColumns = visibleColumns\n\n // Header Visibility is needed by this point\n const [\n totalColumnsMinWidth,\n totalColumnsWidth,\n totalColumnsMaxWidth,\n ] = calculateHeaderWidths(headers)\n\n getInstance().totalColumnsMinWidth = totalColumnsMinWidth\n getInstance().totalColumnsWidth = totalColumnsWidth\n getInstance().totalColumnsMaxWidth = totalColumnsMaxWidth\n\n loopHooks(getHooks().useInstance, getInstance())\n\n // Each materialized header needs to be assigned a render function and other\n // prop getter properties here.\n ;[...getInstance().flatHeaders, ...getInstance().allColumns].forEach(\n column => {\n // Give columns/headers rendering power\n column.render = makeRenderer(getInstance(), column)\n\n // Give columns/headers a default getHeaderProps\n column.getHeaderProps = makePropGetter(getHooks().getHeaderProps, {\n instance: getInstance(),\n column,\n })\n\n // Give columns/headers a default getFooterProps\n column.getFooterProps = makePropGetter(getHooks().getFooterProps, {\n instance: getInstance(),\n column,\n })\n }\n )\n\n getInstance().headerGroups = React.useMemo(\n () =>\n headerGroups.filter((headerGroup, i) => {\n // Filter out any headers and headerGroups that don't have visible columns\n headerGroup.headers = headerGroup.headers.filter(column => {\n const recurse = headers =>\n headers.filter(column => {\n if (column.headers) {\n return recurse(column.headers)\n }\n return column.isVisible\n }).length\n if (column.headers) {\n return recurse(column.headers)\n }\n return column.isVisible\n })\n\n // Give headerGroups getRowProps\n if (headerGroup.headers.length) {\n headerGroup.getHeaderGroupProps = makePropGetter(\n getHooks().getHeaderGroupProps,\n { instance: getInstance(), headerGroup, index: i }\n )\n\n headerGroup.getFooterGroupProps = makePropGetter(\n getHooks().getFooterGroupProps,\n { instance: getInstance(), headerGroup, index: i }\n )\n\n return true\n }\n\n return false\n }),\n [headerGroups, getInstance, getHooks]\n )\n\n getInstance().footerGroups = [...getInstance().headerGroups].reverse()\n\n // The prepareRow function is absolutely necessary and MUST be called on\n // any rows the user wishes to be displayed.\n\n getInstance().prepareRow = React.useCallback(\n row => {\n row.getRowProps = makePropGetter(getHooks().getRowProps, {\n instance: getInstance(),\n row,\n })\n\n // Build the visible cells for each row\n row.allCells = allColumns.map(column => {\n const value = row.values[column.id]\n\n const cell = {\n column,\n row,\n value,\n }\n\n // Give each cell a getCellProps base\n cell.getCellProps = makePropGetter(getHooks().getCellProps, {\n instance: getInstance(),\n cell,\n })\n\n // Give each cell a renderer function (supports multiple renderers)\n cell.render = makeRenderer(getInstance(), column, {\n row,\n cell,\n value,\n })\n\n return cell\n })\n\n row.cells = visibleColumns.map(column =>\n row.allCells.find(cell => cell.column.id === column.id)\n )\n\n // need to apply any row specific hooks (useExpanded requires this)\n loopHooks(getHooks().prepareRow, row, { instance: getInstance() })\n },\n [getHooks, getInstance, allColumns, visibleColumns]\n )\n\n getInstance().getTableProps = makePropGetter(getHooks().getTableProps, {\n instance: getInstance(),\n })\n\n getInstance().getTableBodyProps = makePropGetter(\n getHooks().getTableBodyProps,\n {\n instance: getInstance(),\n }\n )\n\n loopHooks(getHooks().useFinalInstance, getInstance())\n\n return getInstance()\n}\n\nfunction calculateHeaderWidths(headers, left = 0) {\n let sumTotalMinWidth = 0\n let sumTotalWidth = 0\n let sumTotalMaxWidth = 0\n let sumTotalFlexWidth = 0\n\n headers.forEach(header => {\n let { headers: subHeaders } = header\n\n header.totalLeft = left\n\n if (subHeaders && subHeaders.length) {\n const [\n totalMinWidth,\n totalWidth,\n totalMaxWidth,\n totalFlexWidth,\n ] = calculateHeaderWidths(subHeaders, left)\n header.totalMinWidth = totalMinWidth\n header.totalWidth = totalWidth\n header.totalMaxWidth = totalMaxWidth\n header.totalFlexWidth = totalFlexWidth\n } else {\n header.totalMinWidth = header.minWidth\n header.totalWidth = Math.min(\n Math.max(header.minWidth, header.width),\n header.maxWidth\n )\n header.totalMaxWidth = header.maxWidth\n header.totalFlexWidth = header.canResize ? header.totalWidth : 0\n }\n if (header.isVisible) {\n left += header.totalWidth\n sumTotalMinWidth += header.totalMinWidth\n sumTotalWidth += header.totalWidth\n sumTotalMaxWidth += header.totalMaxWidth\n sumTotalFlexWidth += header.totalFlexWidth\n }\n })\n\n return [sumTotalMinWidth, sumTotalWidth, sumTotalMaxWidth, sumTotalFlexWidth]\n}\n\nfunction accessRowsForColumn({\n data,\n rows,\n flatRows,\n rowsById,\n column,\n getRowId,\n getSubRows,\n accessValueHooks,\n getInstance,\n}) {\n // Access the row's data column-by-column\n // We do it this way so we can incrementally add materialized\n // columns after the first pass and avoid excessive looping\n const accessRow = (originalRow, rowIndex, depth = 0, parent, parentRows) => {\n // Keep the original reference around\n const original = originalRow\n\n const id = getRowId(originalRow, rowIndex, parent)\n\n let row = rowsById[id]\n\n // If the row hasn't been created, let's make it\n if (!row) {\n row = {\n id,\n original,\n index: rowIndex,\n depth,\n cells: [{}], // This is a dummy cell\n }\n\n // Override common array functions (and the dummy cell's getCellProps function)\n // to show an error if it is accessed without calling prepareRow\n row.cells.map = unpreparedAccessWarning\n row.cells.filter = unpreparedAccessWarning\n row.cells.forEach = unpreparedAccessWarning\n row.cells[0].getCellProps = unpreparedAccessWarning\n\n // Create the cells and values\n row.values = {}\n\n // Push this row into the parentRows array\n parentRows.push(row)\n // Keep track of every row in a flat array\n flatRows.push(row)\n // Also keep track of every row by its ID\n rowsById[id] = row\n\n // Get the original subrows\n row.originalSubRows = getSubRows(originalRow, rowIndex)\n\n // Then recursively access them\n if (row.originalSubRows) {\n const subRows = []\n row.originalSubRows.forEach((d, i) =>\n accessRow(d, i, depth + 1, row, subRows)\n )\n // Keep the new subRows array on the row\n row.subRows = subRows\n }\n } else if (row.subRows) {\n // If the row exists, then it's already been accessed\n // Keep recursing, but don't worry about passing the\n // accumlator array (those rows already exist)\n row.originalSubRows.forEach((d, i) => accessRow(d, i, depth + 1, row))\n }\n\n // If the column has an accessor, use it to get a value\n if (column.accessor) {\n row.values[column.id] = column.accessor(\n originalRow,\n rowIndex,\n row,\n parentRows,\n data\n )\n }\n\n // Allow plugins to manipulate the column value\n row.values[column.id] = reduceHooks(\n accessValueHooks,\n row.values[column.id],\n {\n row,\n column,\n instance: getInstance(),\n },\n true\n )\n }\n\n data.forEach((originalRow, rowIndex) =>\n accessRow(originalRow, rowIndex, 0, undefined, rows)\n )\n}\n","import React from 'react'\n\nimport { expandRows } from '../utils'\n\nimport {\n useGetLatest,\n actions,\n useMountedLayoutEffect,\n makePropGetter,\n ensurePluginOrder,\n} from '../publicUtils'\n\n// Actions\nactions.resetExpanded = 'resetExpanded'\nactions.toggleRowExpanded = 'toggleRowExpanded'\nactions.toggleAllRowsExpanded = 'toggleAllRowsExpanded'\n\nexport const useExpanded = hooks => {\n hooks.getToggleAllRowsExpandedProps = [defaultGetToggleAllRowsExpandedProps]\n hooks.getToggleRowExpandedProps = [defaultGetToggleRowExpandedProps]\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\nuseExpanded.pluginName = 'useExpanded'\n\nconst defaultGetToggleAllRowsExpandedProps = (props, { instance }) => [\n props,\n {\n onClick: e => {\n instance.toggleAllRowsExpanded()\n },\n style: {\n cursor: 'pointer',\n },\n title: 'Toggle All Rows Expanded',\n },\n]\n\nconst defaultGetToggleRowExpandedProps = (props, { row }) => [\n props,\n {\n onClick: () => {\n row.toggleRowExpanded()\n },\n style: {\n cursor: 'pointer',\n },\n title: 'Toggle Row Expanded',\n },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n expanded: {},\n ...state,\n }\n }\n\n if (action.type === actions.resetExpanded) {\n return {\n ...state,\n expanded: instance.initialState.expanded || {},\n }\n }\n\n if (action.type === actions.toggleAllRowsExpanded) {\n const { value } = action\n const { rowsById } = instance\n\n const isAllRowsExpanded =\n Object.keys(rowsById).length === Object.keys(state.expanded).length\n\n const expandAll = typeof value !== 'undefined' ? value : !isAllRowsExpanded\n\n if (expandAll) {\n const expanded = {}\n\n Object.keys(rowsById).forEach(rowId => {\n expanded[rowId] = true\n })\n\n return {\n ...state,\n expanded,\n }\n }\n\n return {\n ...state,\n expanded: {},\n }\n }\n\n if (action.type === actions.toggleRowExpanded) {\n const { id, value: setExpanded } = action\n const exists = state.expanded[id]\n\n const shouldExist =\n typeof setExpanded !== 'undefined' ? setExpanded : !exists\n\n if (!exists && shouldExist) {\n return {\n ...state,\n expanded: {\n ...state.expanded,\n [id]: true,\n },\n }\n } else if (exists && !shouldExist) {\n const { [id]: _, ...rest } = state.expanded\n return {\n ...state,\n expanded: rest,\n }\n } else {\n return state\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n rowsById,\n manualExpandedKey = 'expanded',\n paginateExpandedRows = true,\n expandSubRows = true,\n autoResetExpanded = true,\n getHooks,\n plugins,\n state: { expanded },\n dispatch,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useSortBy', 'useGroupBy', 'usePivotColumns', 'useGlobalFilter'],\n 'useExpanded'\n )\n\n const getAutoResetExpanded = useGetLatest(autoResetExpanded)\n\n let isAllRowsExpanded = Boolean(\n Object.keys(rowsById).length && Object.keys(expanded).length\n )\n\n if (isAllRowsExpanded) {\n if (Object.keys(rowsById).some(id => !expanded[id])) {\n isAllRowsExpanded = false\n }\n }\n\n // Bypass any effects from firing when this changes\n useMountedLayoutEffect(() => {\n if (getAutoResetExpanded()) {\n dispatch({ type: actions.resetExpanded })\n }\n }, [dispatch, data])\n\n const toggleRowExpanded = React.useCallback(\n (id, value) => {\n dispatch({ type: actions.toggleRowExpanded, id, value })\n },\n [dispatch]\n )\n\n const toggleAllRowsExpanded = React.useCallback(\n value => dispatch({ type: actions.toggleAllRowsExpanded, value }),\n [dispatch]\n )\n\n const expandedRows = React.useMemo(() => {\n if (paginateExpandedRows) {\n return expandRows(rows, { manualExpandedKey, expanded, expandSubRows })\n }\n\n return rows\n }, [paginateExpandedRows, rows, manualExpandedKey, expanded, expandSubRows])\n\n const expandedDepth = React.useMemo(() => findExpandedDepth(expanded), [\n expanded,\n ])\n\n const getInstance = useGetLatest(instance)\n\n const getToggleAllRowsExpandedProps = makePropGetter(\n getHooks().getToggleAllRowsExpandedProps,\n { instance: getInstance() }\n )\n\n Object.assign(instance, {\n preExpandedRows: rows,\n expandedRows,\n rows: expandedRows,\n expandedDepth,\n isAllRowsExpanded,\n toggleRowExpanded,\n toggleAllRowsExpanded,\n getToggleAllRowsExpandedProps,\n })\n}\n\nfunction prepareRow(row, { instance: { getHooks }, instance }) {\n row.toggleRowExpanded = set => instance.toggleRowExpanded(row.id, set)\n\n row.getToggleRowExpandedProps = makePropGetter(\n getHooks().getToggleRowExpandedProps,\n {\n instance,\n row,\n }\n )\n}\n\nfunction findExpandedDepth(expanded) {\n let maxDepth = 0\n\n Object.keys(expanded).forEach(id => {\n const splitId = id.split('.')\n maxDepth = Math.max(maxDepth, splitId.length)\n })\n\n return maxDepth\n}\n","export const text = (rows, ids, filterValue) => {\n rows = rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return String(rowValue)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase())\n })\n })\n return rows\n}\n\ntext.autoRemove = val => !val\n\nexport const exactText = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue !== undefined\n ? String(rowValue).toLowerCase() === String(filterValue).toLowerCase()\n : true\n })\n })\n}\n\nexactText.autoRemove = val => !val\n\nexport const exactTextCase = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue !== undefined\n ? String(rowValue) === String(filterValue)\n : true\n })\n })\n}\n\nexactTextCase.autoRemove = val => !val\n\nexport const includes = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue.includes(filterValue)\n })\n })\n}\n\nincludes.autoRemove = val => !val || !val.length\n\nexport const includesAll = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return (\n rowValue &&\n rowValue.length &&\n filterValue.every(val => rowValue.includes(val))\n )\n })\n })\n}\n\nincludesAll.autoRemove = val => !val || !val.length\n\nexport const includesSome = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return (\n rowValue &&\n rowValue.length &&\n filterValue.some(val => rowValue.includes(val))\n )\n })\n })\n}\n\nincludesSome.autoRemove = val => !val || !val.length\n\nexport const includesValue = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return filterValue.includes(rowValue)\n })\n })\n}\n\nincludesValue.autoRemove = val => !val || !val.length\n\nexport const exact = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue === filterValue\n })\n })\n}\n\nexact.autoRemove = val => typeof val === 'undefined'\n\nexport const equals = (rows, ids, filterValue) => {\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n // eslint-disable-next-line eqeqeq\n return rowValue == filterValue\n })\n })\n}\n\nequals.autoRemove = val => val == null\n\nexport const between = (rows, ids, filterValue) => {\n let [min, max] = filterValue || []\n\n min = typeof min === 'number' ? min : -Infinity\n max = typeof max === 'number' ? max : Infinity\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return rows.filter(row => {\n return ids.some(id => {\n const rowValue = row.values[id]\n return rowValue >= min && rowValue <= max\n })\n })\n}\n\nbetween.autoRemove = val =>\n !val || (typeof val[0] !== 'number' && typeof val[1] !== 'number')\n","import React from 'react'\n\nimport {\n getFirstDefined,\n getFilterMethod,\n shouldAutoRemoveFilter,\n} from '../utils'\n\nimport {\n actions,\n useGetLatest,\n functionalUpdate,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport * as filterTypes from '../filterTypes'\n\n// Actions\nactions.resetFilters = 'resetFilters'\nactions.setFilter = 'setFilter'\nactions.setAllFilters = 'setAllFilters'\n\nexport const useFilters = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n}\n\nuseFilters.pluginName = 'useFilters'\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n filters: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetFilters) {\n return {\n ...state,\n filters: instance.initialState.filters || [],\n }\n }\n\n if (action.type === actions.setFilter) {\n const { columnId, filterValue } = action\n const { allColumns, filterTypes: userFilterTypes } = instance\n\n const column = allColumns.find(d => d.id === columnId)\n\n if (!column) {\n throw new Error(\n `React-Table: Could not find a column with id: ${columnId}`\n )\n }\n\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n const previousfilter = state.filters.find(d => d.id === columnId)\n\n const newFilter = functionalUpdate(\n filterValue,\n previousfilter && previousfilter.value\n )\n\n //\n if (shouldAutoRemoveFilter(filterMethod.autoRemove, newFilter, column)) {\n return {\n ...state,\n filters: state.filters.filter(d => d.id !== columnId),\n }\n }\n\n if (previousfilter) {\n return {\n ...state,\n filters: state.filters.map(d => {\n if (d.id === columnId) {\n return { id: columnId, value: newFilter }\n }\n return d\n }),\n }\n }\n\n return {\n ...state,\n filters: [...state.filters, { id: columnId, value: newFilter }],\n }\n }\n\n if (action.type === actions.setAllFilters) {\n const { filters } = action\n const { allColumns, filterTypes: userFilterTypes } = instance\n\n return {\n ...state,\n // Filter out undefined values\n filters: functionalUpdate(filters, state.filters).filter(filter => {\n const column = allColumns.find(d => d.id === filter.id)\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n if (\n shouldAutoRemoveFilter(filterMethod.autoRemove, filter.value, column)\n ) {\n return false\n }\n return true\n }),\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n flatRows,\n rowsById,\n allColumns,\n filterTypes: userFilterTypes,\n manualFilters,\n defaultCanFilter = false,\n disableFilters,\n state: { filters },\n dispatch,\n autoResetFilters = true,\n } = instance\n\n const setFilter = React.useCallback(\n (columnId, filterValue) => {\n dispatch({ type: actions.setFilter, columnId, filterValue })\n },\n [dispatch]\n )\n\n const setAllFilters = React.useCallback(\n filters => {\n dispatch({\n type: actions.setAllFilters,\n filters,\n })\n },\n [dispatch]\n )\n\n allColumns.forEach(column => {\n const {\n id,\n accessor,\n defaultCanFilter: columnDefaultCanFilter,\n disableFilters: columnDisableFilters,\n } = column\n\n // Determine if a column is filterable\n column.canFilter = accessor\n ? getFirstDefined(\n columnDisableFilters === true ? false : undefined,\n disableFilters === true ? false : undefined,\n true\n )\n : getFirstDefined(columnDefaultCanFilter, defaultCanFilter, false)\n\n // Provide the column a way of updating the filter value\n column.setFilter = val => setFilter(column.id, val)\n\n // Provide the current filter value to the column for\n // convenience\n const found = filters.find(d => d.id === id)\n column.filterValue = found && found.value\n })\n\n const [\n filteredRows,\n filteredFlatRows,\n filteredRowsById,\n ] = React.useMemo(() => {\n if (manualFilters || !filters.length) {\n return [rows, flatRows, rowsById]\n }\n\n const filteredFlatRows = []\n const filteredRowsById = {}\n\n // Filters top level and nested rows\n const filterRows = (rows, depth = 0) => {\n let filteredRows = rows\n\n filteredRows = filters.reduce(\n (filteredSoFar, { id: columnId, value: filterValue }) => {\n // Find the filters column\n const column = allColumns.find(d => d.id === columnId)\n\n if (!column) {\n return filteredSoFar\n }\n\n if (depth === 0) {\n column.preFilteredRows = filteredSoFar\n }\n\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n if (!filterMethod) {\n console.warn(\n `Could not find a valid 'column.filter' for column with the ID: ${column.id}.`\n )\n return filteredSoFar\n }\n\n // Pass the rows, id, filterValue and column to the filterMethod\n // to get the filtered rows back\n column.filteredRows = filterMethod(\n filteredSoFar,\n [columnId],\n filterValue\n )\n\n return column.filteredRows\n },\n rows\n )\n\n // Apply the filter to any subRows\n // We technically could do this recursively in the above loop,\n // but that would severely hinder the API for the user, since they\n // would be required to do that recursion in some scenarios\n filteredRows.forEach(row => {\n filteredFlatRows.push(row)\n filteredRowsById[row.id] = row\n if (!row.subRows) {\n return\n }\n\n row.subRows =\n row.subRows && row.subRows.length > 0\n ? filterRows(row.subRows, depth + 1)\n : row.subRows\n })\n\n return filteredRows\n }\n\n return [filterRows(rows), filteredFlatRows, filteredRowsById]\n }, [\n manualFilters,\n filters,\n rows,\n flatRows,\n rowsById,\n allColumns,\n userFilterTypes,\n ])\n\n React.useMemo(() => {\n // Now that each filtered column has it's partially filtered rows,\n // lets assign the final filtered rows to all of the other columns\n const nonFilteredColumns = allColumns.filter(\n column => !filters.find(d => d.id === column.id)\n )\n\n // This essentially enables faceted filter options to be built easily\n // using every column's preFilteredRows value\n nonFilteredColumns.forEach(column => {\n column.preFilteredRows = filteredRows\n column.filteredRows = filteredRows\n })\n }, [filteredRows, filters, allColumns])\n\n const getAutoResetFilters = useGetLatest(autoResetFilters)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetFilters()) {\n dispatch({ type: actions.resetFilters })\n }\n }, [dispatch, manualFilters ? null : data])\n\n Object.assign(instance, {\n preFilteredRows: rows,\n preFilteredFlatRows: flatRows,\n preFilteredRowsById: rowsById,\n filteredRows,\n filteredFlatRows,\n filteredRowsById,\n rows: filteredRows,\n flatRows: filteredFlatRows,\n rowsById: filteredRowsById,\n setFilter,\n setAllFilters,\n })\n}\n","import React from 'react'\n\nimport {\n getFilterMethod,\n shouldAutoRemoveFilter,\n getFirstDefined,\n} from '../utils'\n\nimport {\n actions,\n useMountedLayoutEffect,\n functionalUpdate,\n useGetLatest,\n} from '../publicUtils'\n\nimport * as filterTypes from '../filterTypes'\n\n// Actions\nactions.resetGlobalFilter = 'resetGlobalFilter'\nactions.setGlobalFilter = 'setGlobalFilter'\n\nexport const useGlobalFilter = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n}\n\nuseGlobalFilter.pluginName = 'useGlobalFilter'\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.resetGlobalFilter) {\n return {\n ...state,\n globalFilter: instance.initialState.globalFilter || undefined,\n }\n }\n\n if (action.type === actions.setGlobalFilter) {\n const { filterValue } = action\n const { userFilterTypes } = instance\n\n const filterMethod = getFilterMethod(\n instance.globalFilter,\n userFilterTypes || {},\n filterTypes\n )\n\n const newFilter = functionalUpdate(filterValue, state.globalFilter)\n\n //\n if (shouldAutoRemoveFilter(filterMethod.autoRemove, newFilter)) {\n const { globalFilter, ...stateWithoutGlobalFilter } = state\n return stateWithoutGlobalFilter\n }\n\n return {\n ...state,\n globalFilter: newFilter,\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n flatRows,\n rowsById,\n allColumns,\n filterTypes: userFilterTypes,\n globalFilter,\n manualGlobalFilter,\n state: { globalFilter: globalFilterValue },\n dispatch,\n autoResetGlobalFilter = true,\n disableGlobalFilter,\n } = instance\n\n const setGlobalFilter = React.useCallback(\n filterValue => {\n dispatch({ type: actions.setGlobalFilter, filterValue })\n },\n [dispatch]\n )\n\n // TODO: Create a filter cache for incremental high speed multi-filtering\n // This gets pretty complicated pretty fast, since you have to maintain a\n // cache for each row group (top-level rows, and each row's recursive subrows)\n // This would make multi-filtering a lot faster though. Too far?\n\n const [\n globalFilteredRows,\n globalFilteredFlatRows,\n globalFilteredRowsById,\n ] = React.useMemo(() => {\n if (manualGlobalFilter || typeof globalFilterValue === 'undefined') {\n return [rows, flatRows, rowsById]\n }\n\n const filteredFlatRows = []\n const filteredRowsById = {}\n\n const filterMethod = getFilterMethod(\n globalFilter,\n userFilterTypes || {},\n filterTypes\n )\n\n if (!filterMethod) {\n console.warn(`Could not find a valid 'globalFilter' option.`)\n return rows\n }\n\n allColumns.forEach(column => {\n const { disableGlobalFilter: columnDisableGlobalFilter } = column\n\n column.canFilter = getFirstDefined(\n columnDisableGlobalFilter === true ? false : undefined,\n disableGlobalFilter === true ? false : undefined,\n true\n )\n })\n\n const filterableColumns = allColumns.filter(c => c.canFilter === true)\n\n // Filters top level and nested rows\n const filterRows = filteredRows => {\n filteredRows = filterMethod(\n filteredRows,\n filterableColumns.map(d => d.id),\n globalFilterValue\n )\n\n filteredRows.forEach(row => {\n filteredFlatRows.push(row)\n filteredRowsById[row.id] = row\n\n row.subRows =\n row.subRows && row.subRows.length\n ? filterRows(row.subRows)\n : row.subRows\n })\n\n return filteredRows\n }\n\n return [filterRows(rows), filteredFlatRows, filteredRowsById]\n }, [\n manualGlobalFilter,\n globalFilterValue,\n globalFilter,\n userFilterTypes,\n allColumns,\n rows,\n flatRows,\n rowsById,\n disableGlobalFilter,\n ])\n\n const getAutoResetGlobalFilter = useGetLatest(autoResetGlobalFilter)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetGlobalFilter()) {\n dispatch({ type: actions.resetGlobalFilter })\n }\n }, [dispatch, manualGlobalFilter ? null : data])\n\n Object.assign(instance, {\n preGlobalFilteredRows: rows,\n preGlobalFilteredFlatRows: flatRows,\n preGlobalFilteredRowsById: rowsById,\n globalFilteredRows,\n globalFilteredFlatRows,\n globalFilteredRowsById,\n rows: globalFilteredRows,\n flatRows: globalFilteredFlatRows,\n rowsById: globalFilteredRowsById,\n setGlobalFilter,\n disableGlobalFilter,\n })\n}\n","export function sum(values, aggregatedValues) {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return aggregatedValues.reduce(\n (sum, next) => sum + (typeof next === 'number' ? next : 0),\n 0\n )\n}\n\nexport function min(values) {\n let min = values[0] || 0\n\n values.forEach(value => {\n if (typeof value === 'number') {\n min = Math.min(min, value)\n }\n })\n\n return min\n}\n\nexport function max(values) {\n let max = values[0] || 0\n\n values.forEach(value => {\n if (typeof value === 'number') {\n max = Math.max(max, value)\n }\n })\n\n return max\n}\n\nexport function minMax(values) {\n let min = values[0] || 0\n let max = values[0] || 0\n\n values.forEach(value => {\n if (typeof value === 'number') {\n min = Math.min(min, value)\n max = Math.max(max, value)\n }\n })\n\n return `${min}..${max}`\n}\n\nexport function average(values) {\n return sum(null, values) / values.length\n}\n\nexport function median(values) {\n if (!values.length) {\n return null\n }\n\n const mid = Math.floor(values.length / 2)\n const nums = [...values].sort((a, b) => a - b)\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2\n}\n\nexport function unique(values) {\n return Array.from(new Set(values).values())\n}\n\nexport function uniqueCount(values) {\n return new Set(values).size\n}\n\nexport function count(values) {\n return values.length\n}\n","import React from 'react'\n\nimport * as aggregations from '../aggregations'\n\nimport { getFirstDefined, flattenBy } from '../utils'\n\nimport {\n actions,\n makePropGetter,\n ensurePluginOrder,\n useMountedLayoutEffect,\n useGetLatest,\n} from '../publicUtils'\n\nconst emptyArray = []\nconst emptyObject = {}\n\n// Actions\nactions.resetGroupBy = 'resetGroupBy'\nactions.setGroupBy = 'setGroupBy'\nactions.toggleGroupBy = 'toggleGroupBy'\n\nexport const useGroupBy = hooks => {\n hooks.getGroupByToggleProps = [defaultGetGroupByToggleProps]\n hooks.stateReducers.push(reducer)\n hooks.visibleColumnsDeps.push((deps, { instance }) => [\n ...deps,\n instance.state.groupBy,\n ])\n hooks.visibleColumns.push(visibleColumns)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\nuseGroupBy.pluginName = 'useGroupBy'\n\nconst defaultGetGroupByToggleProps = (props, { header }) => [\n props,\n {\n onClick: header.canGroupBy\n ? e => {\n e.persist()\n header.toggleGroupBy()\n }\n : undefined,\n style: {\n cursor: header.canGroupBy ? 'pointer' : undefined,\n },\n title: 'Toggle GroupBy',\n },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n groupBy: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetGroupBy) {\n return {\n ...state,\n groupBy: instance.initialState.groupBy || [],\n }\n }\n\n if (action.type === actions.setGroupBy) {\n const { value } = action\n return {\n ...state,\n groupBy: value,\n }\n }\n\n if (action.type === actions.toggleGroupBy) {\n const { columnId, value: setGroupBy } = action\n\n const resolvedGroupBy =\n typeof setGroupBy !== 'undefined'\n ? setGroupBy\n : !state.groupBy.includes(columnId)\n\n if (resolvedGroupBy) {\n return {\n ...state,\n groupBy: [...state.groupBy, columnId],\n }\n }\n\n return {\n ...state,\n groupBy: state.groupBy.filter(d => d !== columnId),\n }\n }\n}\n\nfunction visibleColumns(\n columns,\n {\n instance: {\n state: { groupBy },\n },\n }\n) {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n\n const groupByColumns = groupBy\n .map(g => columns.find(col => col.id === g))\n .filter(Boolean)\n\n const nonGroupByColumns = columns.filter(col => !groupBy.includes(col.id))\n\n columns = [...groupByColumns, ...nonGroupByColumns]\n\n columns.forEach(column => {\n column.isGrouped = groupBy.includes(column.id)\n column.groupedIndex = groupBy.indexOf(column.id)\n })\n\n return columns\n}\n\nconst defaultUserAggregations = {}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n flatRows,\n rowsById,\n allColumns,\n flatHeaders,\n groupByFn = defaultGroupByFn,\n manualGroupBy,\n aggregations: userAggregations = defaultUserAggregations,\n plugins,\n state: { groupBy },\n dispatch,\n autoResetGroupBy = true,\n disableGroupBy,\n defaultCanGroupBy,\n getHooks,\n } = instance\n\n ensurePluginOrder(plugins, ['useColumnOrder', 'useFilters'], 'useGroupBy')\n\n const getInstance = useGetLatest(instance)\n\n allColumns.forEach(column => {\n const {\n accessor,\n defaultGroupBy: defaultColumnGroupBy,\n disableGroupBy: columnDisableGroupBy,\n } = column\n\n column.canGroupBy = accessor\n ? getFirstDefined(\n column.canGroupBy,\n columnDisableGroupBy === true ? false : undefined,\n disableGroupBy === true ? false : undefined,\n true\n )\n : getFirstDefined(\n column.canGroupBy,\n defaultColumnGroupBy,\n defaultCanGroupBy,\n false\n )\n\n if (column.canGroupBy) {\n column.toggleGroupBy = () => instance.toggleGroupBy(column.id)\n }\n\n column.Aggregated = column.Aggregated || column.Cell\n })\n\n const toggleGroupBy = React.useCallback(\n (columnId, value) => {\n dispatch({ type: actions.toggleGroupBy, columnId, value })\n },\n [dispatch]\n )\n\n const setGroupBy = React.useCallback(\n value => {\n dispatch({ type: actions.setGroupBy, value })\n },\n [dispatch]\n )\n\n flatHeaders.forEach(header => {\n header.getGroupByToggleProps = makePropGetter(\n getHooks().getGroupByToggleProps,\n { instance: getInstance(), header }\n )\n })\n\n const [\n groupedRows,\n groupedFlatRows,\n groupedRowsById,\n onlyGroupedFlatRows,\n onlyGroupedRowsById,\n nonGroupedFlatRows,\n nonGroupedRowsById,\n ] = React.useMemo(() => {\n if (manualGroupBy || !groupBy.length) {\n return [\n rows,\n flatRows,\n rowsById,\n emptyArray,\n emptyObject,\n flatRows,\n rowsById,\n ]\n }\n\n // Ensure that the list of filtered columns exist\n const existingGroupBy = groupBy.filter(g =>\n allColumns.find(col => col.id === g)\n )\n\n // Find the columns that can or are aggregating\n // Uses each column to aggregate rows into a single value\n const aggregateRowsToValues = (leafRows, groupedRows, depth) => {\n const values = {}\n\n allColumns.forEach(column => {\n // Don't aggregate columns that are in the groupBy\n if (existingGroupBy.includes(column.id)) {\n values[column.id] = groupedRows[0]\n ? groupedRows[0].values[column.id]\n : null\n return\n }\n\n // Aggregate the values\n let aggregateFn =\n typeof column.aggregate === 'function'\n ? column.aggregate\n : userAggregations[column.aggregate] ||\n aggregations[column.aggregate]\n\n if (aggregateFn) {\n // Get the columnValues to aggregate\n const groupedValues = groupedRows.map(row => row.values[column.id])\n\n // Get the columnValues to aggregate\n const leafValues = leafRows.map(row => {\n let columnValue = row.values[column.id]\n\n if (!depth && column.aggregateValue) {\n const aggregateValueFn =\n typeof column.aggregateValue === 'function'\n ? column.aggregateValue\n : userAggregations[column.aggregateValue] ||\n aggregations[column.aggregateValue]\n\n if (!aggregateValueFn) {\n console.info({ column })\n throw new Error(\n `React Table: Invalid column.aggregateValue option for column listed above`\n )\n }\n\n columnValue = aggregateValueFn(columnValue, row, column)\n }\n return columnValue\n })\n\n values[column.id] = aggregateFn(leafValues, groupedValues)\n } else if (column.aggregate) {\n console.info({ column })\n throw new Error(\n `React Table: Invalid column.aggregate option for column listed above`\n )\n } else {\n values[column.id] = null\n }\n })\n\n return values\n }\n\n let groupedFlatRows = []\n const groupedRowsById = {}\n const onlyGroupedFlatRows = []\n const onlyGroupedRowsById = {}\n const nonGroupedFlatRows = []\n const nonGroupedRowsById = {}\n\n // Recursively group the data\n const groupUpRecursively = (rows, depth = 0, parentId) => {\n // This is the last level, just return the rows\n if (depth === existingGroupBy.length) {\n return rows.map((row) => ({ ...row, depth }))\n }\n\n const columnId = existingGroupBy[depth]\n\n // Group the rows together for this level\n let rowGroupsMap = groupByFn(rows, columnId)\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Object.entries(rowGroupsMap).map(\n ([groupByVal, groupedRows], index) => {\n let id = `${columnId}:${groupByVal}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, 'leafRows')\n : groupedRows\n\n const values = aggregateRowsToValues(leafRows, groupedRows, depth)\n\n const row = {\n id,\n isGrouped: true,\n groupByID: columnId,\n groupByVal,\n values,\n subRows,\n leafRows,\n depth,\n index,\n }\n\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n if (subRow.isGrouped) {\n onlyGroupedFlatRows.push(subRow)\n onlyGroupedRowsById[subRow.id] = subRow\n } else {\n nonGroupedFlatRows.push(subRow)\n nonGroupedRowsById[subRow.id] = subRow\n }\n })\n\n return row\n }\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rows)\n\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n if (subRow.isGrouped) {\n onlyGroupedFlatRows.push(subRow)\n onlyGroupedRowsById[subRow.id] = subRow\n } else {\n nonGroupedFlatRows.push(subRow)\n nonGroupedRowsById[subRow.id] = subRow\n }\n })\n\n // Assign the new data\n return [\n groupedRows,\n groupedFlatRows,\n groupedRowsById,\n onlyGroupedFlatRows,\n onlyGroupedRowsById,\n nonGroupedFlatRows,\n nonGroupedRowsById,\n ]\n }, [\n manualGroupBy,\n groupBy,\n rows,\n flatRows,\n rowsById,\n allColumns,\n userAggregations,\n groupByFn,\n ])\n\n const getAutoResetGroupBy = useGetLatest(autoResetGroupBy)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetGroupBy()) {\n dispatch({ type: actions.resetGroupBy })\n }\n }, [dispatch, manualGroupBy ? null : data])\n\n Object.assign(instance, {\n preGroupedRows: rows,\n preGroupedFlatRow: flatRows,\n preGroupedRowsById: rowsById,\n groupedRows,\n groupedFlatRows,\n groupedRowsById,\n onlyGroupedFlatRows,\n onlyGroupedRowsById,\n nonGroupedFlatRows,\n nonGroupedRowsById,\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n toggleGroupBy,\n setGroupBy,\n })\n}\n\nfunction prepareRow(row) {\n row.allCells.forEach(cell => {\n // Grouped cells are in the groupBy and the pivot cell for the row\n cell.isGrouped = cell.column.isGrouped && cell.column.id === row.groupByID\n // Placeholder cells are any columns in the groupBy that are not grouped\n cell.isPlaceholder = !cell.isGrouped && cell.column.isGrouped\n // Aggregated cells are not grouped, not repeated, but still have subRows\n cell.isAggregated =\n !cell.isGrouped && !cell.isPlaceholder && row.subRows?.length\n })\n}\n\nexport function defaultGroupByFn(rows, columnId) {\n return rows.reduce((prev, row, i) => {\n // TODO: Might want to implement a key serializer here so\n // irregular column values can still be grouped if needed?\n const resKey = `${row.values[columnId]}`\n prev[resKey] = Array.isArray(prev[resKey]) ? prev[resKey] : []\n prev[resKey].push(row)\n return prev\n }, {})\n}\n","const reSplitAlphaNumeric = /([0-9]+)/gm\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nexport const alphanumeric = (rowA, rowB, columnId) => {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n // Force to strings (or \"\" for unsupported types)\n a = toString(a)\n b = toString(b)\n\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n a = a.split(reSplitAlphaNumeric).filter(Boolean)\n b = b.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n let aa = a.shift()\n let bb = b.shift()\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\nexport function datetime(rowA, rowB, columnId) {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n a = a.getTime()\n b = b.getTime()\n\n return compareBasic(a, b)\n}\n\nexport function basic(rowA, rowB, columnId) {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n return compareBasic(a, b)\n}\n\nexport function string(rowA, rowB, columnId) {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n a = a.split('').filter(Boolean)\n b = b.split('').filter(Boolean)\n\n while (a.length && b.length) {\n let aa = a.shift()\n let bb = b.shift()\n\n let alower = aa.toLowerCase()\n let blower = bb.toLowerCase()\n\n // Case insensitive comparison until characters match\n if (alower > blower) {\n return 1\n }\n if (blower > alower) {\n return -1\n }\n // If lowercase characters are identical\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n return a.length - b.length\n}\n\nexport function number(rowA, rowB, columnId) {\n let [a, b] = getRowValuesByColumnID(rowA, rowB, columnId)\n\n const replaceNonNumeric = /[^0-9.]/gi\n\n a = Number(String(a).replace(replaceNonNumeric, ''))\n b = Number(String(b).replace(replaceNonNumeric, ''))\n\n return compareBasic(a, b)\n}\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction getRowValuesByColumnID(row1, row2, columnId) {\n return [row1.values[columnId], row2.values[columnId]]\n}\n\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n","import React from 'react'\n\nimport {\n actions,\n ensurePluginOrder,\n defaultColumn,\n makePropGetter,\n useGetLatest,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport { getFirstDefined, isFunction } from '../utils'\n\nimport * as sortTypes from '../sortTypes'\n\n// Actions\nactions.resetSortBy = 'resetSortBy'\nactions.setSortBy = 'setSortBy'\nactions.toggleSortBy = 'toggleSortBy'\nactions.clearSortBy = 'clearSortBy'\n\ndefaultColumn.sortType = 'alphanumeric'\ndefaultColumn.sortDescFirst = false\n\nexport const useSortBy = hooks => {\n hooks.getSortByToggleProps = [defaultGetSortByToggleProps]\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n}\n\nuseSortBy.pluginName = 'useSortBy'\n\nconst defaultGetSortByToggleProps = (props, { instance, column }) => {\n const { isMultiSortEvent = e => e.shiftKey } = instance\n\n return [\n props,\n {\n onClick: column.canSort\n ? e => {\n e.persist()\n column.toggleSortBy(\n undefined,\n !instance.disableMultiSort && isMultiSortEvent(e)\n )\n }\n : undefined,\n style: {\n cursor: column.canSort ? 'pointer' : undefined,\n },\n title: column.canSort ? 'Toggle SortBy' : undefined,\n },\n ]\n}\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n sortBy: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetSortBy) {\n return {\n ...state,\n sortBy: instance.initialState.sortBy || [],\n }\n }\n\n if (action.type === actions.clearSortBy) {\n const { sortBy } = state\n const newSortBy = sortBy.filter(d => d.id !== action.columnId)\n\n return {\n ...state,\n sortBy: newSortBy,\n }\n }\n\n if (action.type === actions.setSortBy) {\n const { sortBy } = action\n return {\n ...state,\n sortBy,\n }\n }\n\n if (action.type === actions.toggleSortBy) {\n const { columnId, desc, multi } = action\n\n const {\n allColumns,\n disableMultiSort,\n disableSortRemove,\n disableMultiRemove,\n maxMultiSortColCount = Number.MAX_SAFE_INTEGER,\n } = instance\n\n const { sortBy } = state\n\n // Find the column for this columnId\n const column = allColumns.find(d => d.id === columnId)\n const { sortDescFirst } = column\n\n // Find any existing sortBy for this column\n const existingSortBy = sortBy.find(d => d.id === columnId)\n const existingIndex = sortBy.findIndex(d => d.id === columnId)\n const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSortBy = []\n\n // What should we do with this sort action?\n let sortAction\n\n if (!disableMultiSort && multi) {\n if (existingSortBy) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (existingIndex !== sortBy.length - 1 || sortBy.length !== 1) {\n sortAction = 'replace'\n } else if (existingSortBy) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n // Handle toggle states that will remove the sortBy\n if (\n sortAction === 'toggle' && // Must be toggling\n !disableSortRemove && // If disableSortRemove, disable in general\n !hasDescDefined && // Must not be setting desc\n (multi ? !disableMultiRemove : true) && // If multi, don't allow if disableMultiRemove\n ((existingSortBy && // Finally, detect if it should indeed be removed\n existingSortBy.desc &&\n !sortDescFirst) ||\n (!existingSortBy.desc && sortDescFirst))\n ) {\n sortAction = 'remove'\n }\n\n if (sortAction === 'replace') {\n newSortBy = [\n {\n id: columnId,\n desc: hasDescDefined ? desc : sortDescFirst,\n },\n ]\n } else if (sortAction === 'add') {\n newSortBy = [\n ...sortBy,\n {\n id: columnId,\n desc: hasDescDefined ? desc : sortDescFirst,\n },\n ]\n // Take latest n columns\n newSortBy.splice(0, newSortBy.length - maxMultiSortColCount)\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSortBy = sortBy.map(d => {\n if (d.id === columnId) {\n return {\n ...d,\n desc: hasDescDefined ? desc : !existingSortBy.desc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove') {\n newSortBy = sortBy.filter(d => d.id !== columnId)\n }\n\n return {\n ...state,\n sortBy: newSortBy,\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n flatRows,\n allColumns,\n orderByFn = defaultOrderByFn,\n sortTypes: userSortTypes,\n manualSortBy,\n defaultCanSort,\n disableSortBy,\n flatHeaders,\n state: { sortBy },\n dispatch,\n plugins,\n getHooks,\n autoResetSortBy = true,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useFilters', 'useGlobalFilter', 'useGroupBy', 'usePivotColumns'],\n 'useSortBy'\n )\n\n const setSortBy = React.useCallback(\n sortBy => {\n dispatch({ type: actions.setSortBy, sortBy })\n },\n [dispatch]\n )\n\n // Updates sorting based on a columnId, desc flag and multi flag\n const toggleSortBy = React.useCallback(\n (columnId, desc, multi) => {\n dispatch({ type: actions.toggleSortBy, columnId, desc, multi })\n },\n [dispatch]\n )\n\n // use reference to avoid memory leak in #1608\n const getInstance = useGetLatest(instance)\n\n // Add the getSortByToggleProps method to columns and headers\n flatHeaders.forEach(column => {\n const {\n accessor,\n canSort: defaultColumnCanSort,\n disableSortBy: columnDisableSortBy,\n id,\n } = column\n\n const canSort = accessor\n ? getFirstDefined(\n columnDisableSortBy === true ? false : undefined,\n disableSortBy === true ? false : undefined,\n true\n )\n : getFirstDefined(defaultCanSort, defaultColumnCanSort, false)\n\n column.canSort = canSort\n\n if (column.canSort) {\n column.toggleSortBy = (desc, multi) =>\n toggleSortBy(column.id, desc, multi)\n\n column.clearSortBy = () => {\n dispatch({ type: actions.clearSortBy, columnId: column.id })\n }\n }\n\n column.getSortByToggleProps = makePropGetter(\n getHooks().getSortByToggleProps,\n {\n instance: getInstance(),\n column,\n }\n )\n\n const columnSort = sortBy.find(d => d.id === id)\n column.isSorted = !!columnSort\n column.sortedIndex = sortBy.findIndex(d => d.id === id)\n column.isSortedDesc = column.isSorted ? columnSort.desc : undefined\n })\n\n const [sortedRows, sortedFlatRows] = React.useMemo(() => {\n if (manualSortBy || !sortBy.length) {\n return [rows, flatRows]\n }\n\n const sortedFlatRows = []\n\n // Filter out sortBys that correspond to non existing columns\n const availableSortBy = sortBy.filter(sort =>\n allColumns.find(col => col.id === sort.id)\n )\n\n const sortData = rows => {\n // Use the orderByFn to compose multiple sortBy's together.\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = orderByFn(\n rows,\n availableSortBy.map(sort => {\n // Support custom sorting methods for each column\n const column = allColumns.find(d => d.id === sort.id)\n\n if (!column) {\n throw new Error(\n `React-Table: Could not find a column with id: ${sort.id} while sorting`\n )\n }\n\n const { sortType } = column\n\n // Look up sortBy functions in this order:\n // column function\n // column string lookup on user sortType\n // column string lookup on built-in sortType\n // default function\n // default string lookup on user sortType\n // default string lookup on built-in sortType\n const sortMethod =\n isFunction(sortType) ||\n (userSortTypes || {})[sortType] ||\n sortTypes[sortType]\n\n if (!sortMethod) {\n throw new Error(\n `React-Table: Could not find a valid sortType of '${sortType}' for column '${sort.id}'.`\n )\n }\n\n // Return the correct sortFn.\n // This function should always return in ascending order\n return (a, b) => sortMethod(a, b, sort.id, sort.desc)\n }),\n // Map the directions\n availableSortBy.map(sort => {\n // Detect and use the sortInverted option\n const column = allColumns.find(d => d.id === sort.id)\n\n if (column && column.sortInverted) {\n return sort.desc\n }\n\n return !sort.desc\n })\n )\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n sortedFlatRows.push(row)\n if (!row.subRows || row.subRows.length === 0) {\n return\n }\n row.subRows = sortData(row.subRows)\n })\n\n return sortedData\n }\n\n return [sortData(rows), sortedFlatRows]\n }, [\n manualSortBy,\n sortBy,\n rows,\n flatRows,\n allColumns,\n orderByFn,\n userSortTypes,\n ])\n\n const getAutoResetSortBy = useGetLatest(autoResetSortBy)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetSortBy()) {\n dispatch({ type: actions.resetSortBy })\n }\n }, [manualSortBy ? null : data])\n\n Object.assign(instance, {\n preSortedRows: rows,\n preSortedFlatRows: flatRows,\n sortedRows,\n sortedFlatRows,\n rows: sortedRows,\n flatRows: sortedFlatRows,\n setSortBy,\n toggleSortBy,\n })\n}\n\nexport function defaultOrderByFn(arr, funcs, dirs) {\n return [...arr].sort((rowA, rowB) => {\n for (let i = 0; i < funcs.length; i += 1) {\n const sortFn = funcs[i]\n const desc = dirs[i] === false || dirs[i] === 'desc'\n const sortInt = sortFn(rowA, rowB)\n if (sortInt !== 0) {\n return desc ? -sortInt : sortInt\n }\n }\n return dirs[0] ? rowA.index - rowB.index : rowB.index - rowA.index\n })\n}\n","import React from 'react'\n\n//\n\nimport {\n actions,\n ensurePluginOrder,\n functionalUpdate,\n useMountedLayoutEffect,\n useGetLatest,\n} from '../publicUtils'\n\nimport { expandRows } from '../utils'\n\nconst pluginName = 'usePagination'\n\n// Actions\nactions.resetPage = 'resetPage'\nactions.gotoPage = 'gotoPage'\nactions.setPageSize = 'setPageSize'\n\nexport const usePagination = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n}\n\nusePagination.pluginName = pluginName\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n pageSize: 10,\n pageIndex: 0,\n ...state,\n }\n }\n\n if (action.type === actions.resetPage) {\n return {\n ...state,\n pageIndex: instance.initialState.pageIndex || 0,\n }\n }\n\n if (action.type === actions.gotoPage) {\n const { pageCount, page } = instance\n const newPageIndex = functionalUpdate(action.pageIndex, state.pageIndex)\n let canNavigate = false\n\n if (newPageIndex > state.pageIndex) {\n // next page\n canNavigate =\n pageCount === -1\n ? page.length >= state.pageSize\n : newPageIndex < pageCount\n } else if (newPageIndex < state.pageIndex) {\n // prev page\n canNavigate = newPageIndex > -1\n }\n\n if (!canNavigate) {\n return state\n }\n\n return {\n ...state,\n pageIndex: newPageIndex,\n }\n }\n\n if (action.type === actions.setPageSize) {\n const { pageSize } = action\n const topRowIndex = state.pageSize * state.pageIndex\n const pageIndex = Math.floor(topRowIndex / pageSize)\n\n return {\n ...state,\n pageIndex,\n pageSize,\n }\n }\n}\n\nfunction useInstance(instance) {\n const {\n rows,\n autoResetPage = true,\n manualExpandedKey = 'expanded',\n plugins,\n pageCount: userPageCount,\n paginateExpandedRows = true,\n expandSubRows = true,\n state: {\n pageSize,\n pageIndex,\n expanded,\n globalFilter,\n filters,\n groupBy,\n sortBy,\n },\n dispatch,\n data,\n manualPagination,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useGlobalFilter', 'useFilters', 'useGroupBy', 'useSortBy', 'useExpanded'],\n 'usePagination'\n )\n\n const getAutoResetPage = useGetLatest(autoResetPage)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetPage()) {\n dispatch({ type: actions.resetPage })\n }\n }, [\n dispatch,\n manualPagination ? null : data,\n globalFilter,\n filters,\n groupBy,\n sortBy,\n ])\n\n const pageCount = manualPagination\n ? userPageCount\n : Math.ceil(rows.length / pageSize)\n\n const pageOptions = React.useMemo(\n () =>\n pageCount > 0\n ? [...new Array(pageCount)].fill(null).map((d, i) => i)\n : [],\n [pageCount]\n )\n\n const page = React.useMemo(() => {\n let page\n\n if (manualPagination) {\n page = rows\n } else {\n const pageStart = pageSize * pageIndex\n const pageEnd = pageStart + pageSize\n\n page = rows.slice(pageStart, pageEnd)\n }\n\n if (paginateExpandedRows) {\n return page\n }\n\n return expandRows(page, { manualExpandedKey, expanded, expandSubRows })\n }, [\n expandSubRows,\n expanded,\n manualExpandedKey,\n manualPagination,\n pageIndex,\n pageSize,\n paginateExpandedRows,\n rows,\n ])\n\n const canPreviousPage = pageIndex > 0\n const canNextPage =\n pageCount === -1 ? page.length >= pageSize : pageIndex < pageCount - 1\n\n const gotoPage = React.useCallback(\n pageIndex => {\n dispatch({ type: actions.gotoPage, pageIndex })\n },\n [dispatch]\n )\n\n const previousPage = React.useCallback(() => {\n return gotoPage(old => old - 1)\n }, [gotoPage])\n\n const nextPage = React.useCallback(() => {\n return gotoPage(old => old + 1)\n }, [gotoPage])\n\n const setPageSize = React.useCallback(\n pageSize => {\n dispatch({ type: actions.setPageSize, pageSize })\n },\n [dispatch]\n )\n\n Object.assign(instance, {\n pageOptions,\n pageCount,\n page,\n canPreviousPage,\n canNextPage,\n gotoPage,\n previousPage,\n nextPage,\n setPageSize,\n })\n}\n","/* istanbul ignore file */\n\nimport {\n actions,\n makePropGetter,\n ensurePluginOrder,\n useMountedLayoutEffect,\n useGetLatest,\n} from '../publicUtils'\n\nimport { flattenColumns, getFirstDefined } from '../utils'\n\n// Actions\nactions.resetPivot = 'resetPivot'\nactions.togglePivot = 'togglePivot'\n\nexport const _UNSTABLE_usePivotColumns = hooks => {\n hooks.getPivotToggleProps = [defaultGetPivotToggleProps]\n hooks.stateReducers.push(reducer)\n hooks.useInstanceAfterData.push(useInstanceAfterData)\n hooks.allColumns.push(allColumns)\n hooks.accessValue.push(accessValue)\n hooks.materializedColumns.push(materializedColumns)\n hooks.materializedColumnsDeps.push(materializedColumnsDeps)\n hooks.visibleColumns.push(visibleColumns)\n hooks.visibleColumnsDeps.push(visibleColumnsDeps)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\n_UNSTABLE_usePivotColumns.pluginName = 'usePivotColumns'\n\nconst defaultPivotColumns = []\n\nconst defaultGetPivotToggleProps = (props, { header }) => [\n props,\n {\n onClick: header.canPivot\n ? e => {\n e.persist()\n header.togglePivot()\n }\n : undefined,\n style: {\n cursor: header.canPivot ? 'pointer' : undefined,\n },\n title: 'Toggle Pivot',\n },\n]\n\n// Reducer\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n pivotColumns: defaultPivotColumns,\n ...state,\n }\n }\n\n if (action.type === actions.resetPivot) {\n return {\n ...state,\n pivotColumns: instance.initialState.pivotColumns || defaultPivotColumns,\n }\n }\n\n if (action.type === actions.togglePivot) {\n const { columnId, value: setPivot } = action\n\n const resolvedPivot =\n typeof setPivot !== 'undefined'\n ? setPivot\n : !state.pivotColumns.includes(columnId)\n\n if (resolvedPivot) {\n return {\n ...state,\n pivotColumns: [...state.pivotColumns, columnId],\n }\n }\n\n return {\n ...state,\n pivotColumns: state.pivotColumns.filter(d => d !== columnId),\n }\n }\n}\n\nfunction useInstanceAfterData(instance) {\n instance.allColumns.forEach(column => {\n column.isPivotSource = instance.state.pivotColumns.includes(column.id)\n })\n}\n\nfunction allColumns(columns, { instance }) {\n columns.forEach(column => {\n column.isPivotSource = instance.state.pivotColumns.includes(column.id)\n column.uniqueValues = new Set()\n })\n return columns\n}\n\nfunction accessValue(value, { column }) {\n if (column.uniqueValues && typeof value !== 'undefined') {\n column.uniqueValues.add(value)\n }\n return value\n}\n\nfunction materializedColumns(materialized, { instance }) {\n const { allColumns, state } = instance\n\n if (!state.pivotColumns.length || !state.groupBy || !state.groupBy.length) {\n return materialized\n }\n\n const pivotColumns = state.pivotColumns\n .map(id => allColumns.find(d => d.id === id))\n .filter(Boolean)\n\n const sourceColumns = allColumns.filter(\n d =>\n !d.isPivotSource &&\n !state.groupBy.includes(d.id) &&\n !state.pivotColumns.includes(d.id)\n )\n\n const buildPivotColumns = (depth = 0, parent, pivotFilters = []) => {\n const pivotColumn = pivotColumns[depth]\n\n if (!pivotColumn) {\n return sourceColumns.map(sourceColumn => {\n // TODO: We could offer support here for renesting pivoted\n // columns inside copies of their header groups. For now,\n // that seems like it would be (1) overkill on nesting, considering\n // you already get nesting for every pivot level and (2)\n // really hard. :)\n\n return {\n ...sourceColumn,\n canPivot: false,\n isPivoted: true,\n parent,\n depth: depth,\n id: `${parent ? `${parent.id}.${sourceColumn.id}` : sourceColumn.id}`,\n accessor: (originalRow, i, row) => {\n if (pivotFilters.every(filter => filter(row))) {\n return row.values[sourceColumn.id]\n }\n },\n }\n })\n }\n\n const uniqueValues = Array.from(pivotColumn.uniqueValues).sort()\n\n return uniqueValues.map(uniqueValue => {\n const columnGroup = {\n ...pivotColumn,\n Header:\n pivotColumn.PivotHeader || typeof pivotColumn.header === 'string'\n ? `${pivotColumn.Header}: ${uniqueValue}`\n : uniqueValue,\n isPivotGroup: true,\n parent,\n depth,\n id: parent\n ? `${parent.id}.${pivotColumn.id}.${uniqueValue}`\n : `${pivotColumn.id}.${uniqueValue}`,\n pivotValue: uniqueValue,\n }\n\n columnGroup.columns = buildPivotColumns(depth + 1, columnGroup, [\n ...pivotFilters,\n row => row.values[pivotColumn.id] === uniqueValue,\n ])\n\n return columnGroup\n })\n }\n\n const newMaterialized = flattenColumns(buildPivotColumns())\n\n return [...materialized, ...newMaterialized]\n}\n\nfunction materializedColumnsDeps(\n deps,\n {\n instance: {\n state: { pivotColumns, groupBy },\n },\n }\n) {\n return [...deps, pivotColumns, groupBy]\n}\n\nfunction visibleColumns(visibleColumns, { instance: { state } }) {\n visibleColumns = visibleColumns.filter(d => !d.isPivotSource)\n\n if (state.pivotColumns.length && state.groupBy && state.groupBy.length) {\n visibleColumns = visibleColumns.filter(\n column => column.isGrouped || column.isPivoted\n )\n }\n\n return visibleColumns\n}\n\nfunction visibleColumnsDeps(deps, { instance }) {\n return [...deps, instance.state.pivotColumns, instance.state.groupBy]\n}\n\nfunction useInstance(instance) {\n const {\n columns,\n allColumns,\n flatHeaders,\n // pivotFn = defaultPivotFn,\n // manualPivot,\n getHooks,\n plugins,\n dispatch,\n autoResetPivot = true,\n manaulPivot,\n disablePivot,\n defaultCanPivot,\n } = instance\n\n ensurePluginOrder(plugins, ['useGroupBy'], 'usePivotColumns')\n\n const getInstance = useGetLatest(instance)\n\n allColumns.forEach(column => {\n const {\n accessor,\n defaultPivot: defaultColumnPivot,\n disablePivot: columnDisablePivot,\n } = column\n\n column.canPivot = accessor\n ? getFirstDefined(\n column.canPivot,\n columnDisablePivot === true ? false : undefined,\n disablePivot === true ? false : undefined,\n true\n )\n : getFirstDefined(\n column.canPivot,\n defaultColumnPivot,\n defaultCanPivot,\n false\n )\n\n if (column.canPivot) {\n column.togglePivot = () => instance.togglePivot(column.id)\n }\n\n column.Aggregated = column.Aggregated || column.Cell\n })\n\n const togglePivot = (columnId, value) => {\n dispatch({ type: actions.togglePivot, columnId, value })\n }\n\n flatHeaders.forEach(header => {\n header.getPivotToggleProps = makePropGetter(\n getHooks().getPivotToggleProps,\n {\n instance: getInstance(),\n header,\n }\n )\n })\n\n const getAutoResetPivot = useGetLatest(autoResetPivot)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetPivot()) {\n dispatch({ type: actions.resetPivot })\n }\n }, [dispatch, manaulPivot ? null : columns])\n\n Object.assign(instance, {\n togglePivot,\n })\n}\n\nfunction prepareRow(row) {\n row.allCells.forEach(cell => {\n // Grouped cells are in the pivotColumns and the pivot cell for the row\n cell.isPivoted = cell.column.isPivoted\n })\n}\n","import React from 'react'\n\nimport {\n actions,\n makePropGetter,\n ensurePluginOrder,\n useGetLatest,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nconst pluginName = 'useRowSelect'\n\n// Actions\nactions.resetSelectedRows = 'resetSelectedRows'\nactions.toggleAllRowsSelected = 'toggleAllRowsSelected'\nactions.toggleRowSelected = 'toggleRowSelected'\nactions.toggleAllPageRowsSelected = 'toggleAllPageRowsSelected'\n\nexport const useRowSelect = hooks => {\n hooks.getToggleRowSelectedProps = [defaultGetToggleRowSelectedProps]\n hooks.getToggleAllRowsSelectedProps = [defaultGetToggleAllRowsSelectedProps]\n hooks.getToggleAllPageRowsSelectedProps = [\n defaultGetToggleAllPageRowsSelectedProps,\n ]\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\nuseRowSelect.pluginName = pluginName\n\nconst defaultGetToggleRowSelectedProps = (props, { instance, row }) => {\n const { manualRowSelectedKey = 'isSelected' } = instance\n let checked = false\n\n if (row.original && row.original[manualRowSelectedKey]) {\n checked = true\n } else {\n checked = row.isSelected\n }\n\n return [\n props,\n {\n onChange: e => {\n row.toggleRowSelected(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked,\n title: 'Toggle Row Selected',\n indeterminate: row.isSomeSelected,\n },\n ]\n}\n\nconst defaultGetToggleAllRowsSelectedProps = (props, { instance }) => [\n props,\n {\n onChange: e => {\n instance.toggleAllRowsSelected(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked: instance.isAllRowsSelected,\n title: 'Toggle All Rows Selected',\n indeterminate: Boolean(\n !instance.isAllRowsSelected &&\n Object.keys(instance.state.selectedRowIds).length\n ),\n },\n]\n\nconst defaultGetToggleAllPageRowsSelectedProps = (props, { instance }) => [\n props,\n {\n onChange(e) {\n instance.toggleAllPageRowsSelected(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked: instance.isAllPageRowsSelected,\n title: 'Toggle All Current Page Rows Selected',\n indeterminate: Boolean(\n !instance.isAllPageRowsSelected &&\n instance.page.some(({ id }) => instance.state.selectedRowIds[id])\n ),\n },\n]\n\n// eslint-disable-next-line max-params\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n selectedRowIds: {},\n ...state,\n }\n }\n\n if (action.type === actions.resetSelectedRows) {\n return {\n ...state,\n selectedRowIds: instance.initialState.selectedRowIds || {},\n }\n }\n\n if (action.type === actions.toggleAllRowsSelected) {\n const { value: setSelected } = action\n const {\n isAllRowsSelected,\n rowsById,\n nonGroupedRowsById = rowsById,\n } = instance\n\n const selectAll =\n typeof setSelected !== 'undefined' ? setSelected : !isAllRowsSelected\n\n // Only remove/add the rows that are visible on the screen\n // Leave all the other rows that are selected alone.\n const selectedRowIds = Object.assign({}, state.selectedRowIds)\n\n if (selectAll) {\n Object.keys(nonGroupedRowsById).forEach(rowId => {\n selectedRowIds[rowId] = true\n })\n } else {\n Object.keys(nonGroupedRowsById).forEach(rowId => {\n delete selectedRowIds[rowId]\n })\n }\n\n return {\n ...state,\n selectedRowIds,\n }\n }\n\n if (action.type === actions.toggleRowSelected) {\n const { id, value: setSelected } = action\n const { rowsById, selectSubRows = true, getSubRows } = instance\n const isSelected = state.selectedRowIds[id]\n const shouldExist =\n typeof setSelected !== 'undefined' ? setSelected : !isSelected\n\n if (isSelected === shouldExist) {\n return state\n }\n\n const newSelectedRowIds = { ...state.selectedRowIds }\n\n const handleRowById = id => {\n const row = rowsById[id]\n\n if (row) {\n if (!row.isGrouped) {\n if (shouldExist) {\n newSelectedRowIds[id] = true\n } else {\n delete newSelectedRowIds[id]\n }\n }\n\n if (selectSubRows && getSubRows(row)) {\n return getSubRows(row).forEach(row => handleRowById(row.id))\n }\n }\n }\n\n handleRowById(id)\n\n return {\n ...state,\n selectedRowIds: newSelectedRowIds,\n }\n }\n\n if (action.type === actions.toggleAllPageRowsSelected) {\n const { value: setSelected } = action\n const {\n page,\n rowsById,\n selectSubRows = true,\n isAllPageRowsSelected,\n getSubRows,\n } = instance\n\n const selectAll =\n typeof setSelected !== 'undefined' ? setSelected : !isAllPageRowsSelected\n\n const newSelectedRowIds = { ...state.selectedRowIds }\n\n const handleRowById = id => {\n const row = rowsById[id]\n\n if (!row.isGrouped) {\n if (selectAll) {\n newSelectedRowIds[id] = true\n } else {\n delete newSelectedRowIds[id]\n }\n }\n\n if (selectSubRows && getSubRows(row)) {\n return getSubRows(row).forEach(row => handleRowById(row.id))\n }\n }\n\n page.forEach(row => handleRowById(row.id))\n\n return {\n ...state,\n selectedRowIds: newSelectedRowIds,\n }\n }\n return state\n}\n\nfunction useInstance(instance) {\n const {\n data,\n rows,\n getHooks,\n plugins,\n rowsById,\n nonGroupedRowsById = rowsById,\n autoResetSelectedRows = true,\n state: { selectedRowIds },\n selectSubRows = true,\n dispatch,\n page,\n getSubRows,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useFilters', 'useGroupBy', 'useSortBy', 'useExpanded', 'usePagination'],\n 'useRowSelect'\n )\n\n const selectedFlatRows = React.useMemo(() => {\n const selectedFlatRows = []\n\n rows.forEach(row => {\n const isSelected = selectSubRows\n ? getRowIsSelected(row, selectedRowIds, getSubRows)\n : !!selectedRowIds[row.id]\n row.isSelected = !!isSelected\n row.isSomeSelected = isSelected === null\n\n if (isSelected) {\n selectedFlatRows.push(row)\n }\n })\n\n return selectedFlatRows\n }, [rows, selectSubRows, selectedRowIds, getSubRows])\n\n let isAllRowsSelected = Boolean(\n Object.keys(nonGroupedRowsById).length && Object.keys(selectedRowIds).length\n )\n\n let isAllPageRowsSelected = isAllRowsSelected\n\n if (isAllRowsSelected) {\n if (Object.keys(nonGroupedRowsById).some(id => !selectedRowIds[id])) {\n isAllRowsSelected = false\n }\n }\n\n if (!isAllRowsSelected) {\n if (page && page.length && page.some(({ id }) => !selectedRowIds[id])) {\n isAllPageRowsSelected = false\n }\n }\n\n const getAutoResetSelectedRows = useGetLatest(autoResetSelectedRows)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetSelectedRows()) {\n dispatch({ type: actions.resetSelectedRows })\n }\n }, [dispatch, data])\n\n const toggleAllRowsSelected = React.useCallback(\n value => dispatch({ type: actions.toggleAllRowsSelected, value }),\n [dispatch]\n )\n\n const toggleAllPageRowsSelected = React.useCallback(\n value => dispatch({ type: actions.toggleAllPageRowsSelected, value }),\n [dispatch]\n )\n\n const toggleRowSelected = React.useCallback(\n (id, value) => dispatch({ type: actions.toggleRowSelected, id, value }),\n [dispatch]\n )\n\n const getInstance = useGetLatest(instance)\n\n const getToggleAllRowsSelectedProps = makePropGetter(\n getHooks().getToggleAllRowsSelectedProps,\n { instance: getInstance() }\n )\n\n const getToggleAllPageRowsSelectedProps = makePropGetter(\n getHooks().getToggleAllPageRowsSelectedProps,\n { instance: getInstance() }\n )\n\n Object.assign(instance, {\n selectedFlatRows,\n isAllRowsSelected,\n isAllPageRowsSelected,\n toggleRowSelected,\n toggleAllRowsSelected,\n getToggleAllRowsSelectedProps,\n getToggleAllPageRowsSelectedProps,\n toggleAllPageRowsSelected,\n })\n}\n\nfunction prepareRow(row, { instance }) {\n row.toggleRowSelected = set => instance.toggleRowSelected(row.id, set)\n\n row.getToggleRowSelectedProps = makePropGetter(\n instance.getHooks().getToggleRowSelectedProps,\n { instance: instance, row }\n )\n}\n\nfunction getRowIsSelected(row, selectedRowIds, getSubRows) {\n if (selectedRowIds[row.id]) {\n return true\n }\n\n const subRows = getSubRows(row)\n\n if (subRows && subRows.length) {\n let allChildrenSelected = true\n let someSelected = false\n\n subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return\n }\n\n if (getRowIsSelected(subRow, selectedRowIds, getSubRows)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n })\n return allChildrenSelected ? true : someSelected ? null : false\n }\n\n return false\n}\n","import React from 'react'\n\nimport {\n actions,\n functionalUpdate,\n useMountedLayoutEffect,\n useGetLatest,\n} from '../publicUtils'\n\nconst defaultInitialRowStateAccessor = row => ({})\nconst defaultInitialCellStateAccessor = cell => ({})\n\n// Actions\nactions.setRowState = 'setRowState'\nactions.setCellState = 'setCellState'\nactions.resetRowState = 'resetRowState'\n\nexport const useRowState = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n hooks.prepareRow.push(prepareRow)\n}\n\nuseRowState.pluginName = 'useRowState'\n\nfunction reducer(state, action, previousState, instance) {\n const {\n initialRowStateAccessor = defaultInitialRowStateAccessor,\n initialCellStateAccessor = defaultInitialCellStateAccessor,\n rowsById,\n } = instance\n\n if (action.type === actions.init) {\n return {\n rowState: {},\n ...state,\n }\n }\n\n if (action.type === actions.resetRowState) {\n return {\n ...state,\n rowState: instance.initialState.rowState || {},\n }\n }\n\n if (action.type === actions.setRowState) {\n const { rowId, value } = action\n\n const oldRowState =\n typeof state.rowState[rowId] !== 'undefined'\n ? state.rowState[rowId]\n : initialRowStateAccessor(rowsById[rowId])\n\n return {\n ...state,\n rowState: {\n ...state.rowState,\n [rowId]: functionalUpdate(value, oldRowState),\n },\n }\n }\n\n if (action.type === actions.setCellState) {\n const { rowId, columnId, value } = action\n\n const oldRowState =\n typeof state.rowState[rowId] !== 'undefined'\n ? state.rowState[rowId]\n : initialRowStateAccessor(rowsById[rowId])\n\n const oldCellState =\n typeof oldRowState?.cellState?.[columnId] !== 'undefined'\n ? oldRowState.cellState[columnId]\n : initialCellStateAccessor(\n rowsById[rowId]?.cells?.find(cell => cell.column.id === columnId)\n )\n\n return {\n ...state,\n rowState: {\n ...state.rowState,\n [rowId]: {\n ...oldRowState,\n cellState: {\n ...(oldRowState.cellState || {}),\n [columnId]: functionalUpdate(value, oldCellState),\n },\n },\n },\n }\n }\n}\n\nfunction useInstance(instance) {\n const { autoResetRowState = true, data, dispatch } = instance\n\n const setRowState = React.useCallback(\n (rowId, value) =>\n dispatch({\n type: actions.setRowState,\n rowId,\n value,\n }),\n [dispatch]\n )\n\n const setCellState = React.useCallback(\n (rowId, columnId, value) =>\n dispatch({\n type: actions.setCellState,\n rowId,\n columnId,\n value,\n }),\n [dispatch]\n )\n\n const getAutoResetRowState = useGetLatest(autoResetRowState)\n\n useMountedLayoutEffect(() => {\n if (getAutoResetRowState()) {\n dispatch({ type: actions.resetRowState })\n }\n }, [data])\n\n Object.assign(instance, {\n setRowState,\n setCellState,\n })\n}\n\nfunction prepareRow(row, { instance }) {\n const {\n initialRowStateAccessor = defaultInitialRowStateAccessor,\n initialCellStateAccessor = defaultInitialCellStateAccessor,\n state: { rowState },\n } = instance\n\n if (row) {\n row.state =\n typeof rowState[row.id] !== 'undefined'\n ? rowState[row.id]\n : initialRowStateAccessor(row)\n\n row.setState = updater => {\n return instance.setRowState(row.id, updater)\n }\n\n row.cells.forEach(cell => {\n if (!row.state.cellState) {\n row.state.cellState = {}\n }\n\n cell.state =\n typeof row.state.cellState[cell.column.id] !== 'undefined'\n ? row.state.cellState[cell.column.id]\n : initialCellStateAccessor(cell)\n\n cell.setState = updater => {\n return instance.setCellState(row.id, cell.column.id, updater)\n }\n })\n }\n}\n","import React from 'react'\n\nimport { functionalUpdate, actions } from '../publicUtils'\n\n// Actions\nactions.resetColumnOrder = 'resetColumnOrder'\nactions.setColumnOrder = 'setColumnOrder'\n\nexport const useColumnOrder = hooks => {\n hooks.stateReducers.push(reducer)\n hooks.visibleColumnsDeps.push((deps, { instance }) => {\n return [...deps, instance.state.columnOrder]\n })\n hooks.visibleColumns.push(visibleColumns)\n hooks.useInstance.push(useInstance)\n}\n\nuseColumnOrder.pluginName = 'useColumnOrder'\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n columnOrder: [],\n ...state,\n }\n }\n\n if (action.type === actions.resetColumnOrder) {\n return {\n ...state,\n columnOrder: instance.initialState.columnOrder || [],\n }\n }\n\n if (action.type === actions.setColumnOrder) {\n return {\n ...state,\n columnOrder: functionalUpdate(action.columnOrder, state.columnOrder),\n }\n }\n}\n\nfunction visibleColumns(\n columns,\n {\n instance: {\n state: { columnOrder },\n },\n }\n) {\n // If there is no order, return the normal columns\n if (!columnOrder || !columnOrder.length) {\n return columns\n }\n\n const columnOrderCopy = [...columnOrder]\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns]\n\n // And make a new ordered array of the columns\n const columnsInOrder = []\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift()\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId)\n if (foundIndex > -1) {\n columnsInOrder.push(columnsCopy.splice(foundIndex, 1)[0])\n }\n }\n\n // If there are any columns left, add them to the end\n return [...columnsInOrder, ...columnsCopy]\n}\n\nfunction useInstance(instance) {\n const { dispatch } = instance\n\n instance.setColumnOrder = React.useCallback(\n columnOrder => {\n return dispatch({ type: actions.setColumnOrder, columnOrder })\n },\n [dispatch]\n )\n}\n","import React from 'react'\n\nimport {\n actions,\n defaultColumn,\n makePropGetter,\n useGetLatest,\n ensurePluginOrder,\n useMountedLayoutEffect,\n} from '../publicUtils'\n\nimport { getFirstDefined, passiveEventSupported } from '../utils'\n\n// Default Column\ndefaultColumn.canResize = true\n\n// Actions\nactions.columnStartResizing = 'columnStartResizing'\nactions.columnResizing = 'columnResizing'\nactions.columnDoneResizing = 'columnDoneResizing'\nactions.resetResize = 'resetResize'\n\nexport const useResizeColumns = hooks => {\n hooks.getResizerProps = [defaultGetResizerProps]\n hooks.getHeaderProps.push({\n style: {\n position: 'relative',\n },\n })\n hooks.stateReducers.push(reducer)\n hooks.useInstance.push(useInstance)\n hooks.useInstanceBeforeDimensions.push(useInstanceBeforeDimensions)\n}\n\nconst defaultGetResizerProps = (props, { instance, header }) => {\n const { dispatch } = instance\n\n const onResizeStart = (e, header) => {\n let isTouchEvent = false\n if (e.type === 'touchstart') {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return\n }\n isTouchEvent = true\n }\n const headersToResize = getLeafHeaders(header)\n const headerIdWidths = headersToResize.map(d => [d.id, d.totalWidth])\n\n const clientX = isTouchEvent ? Math.round(e.touches[0].clientX) : e.clientX\n\n let raf\n let mostRecentClientX\n\n const dispatchEnd = () => {\n window.cancelAnimationFrame(raf)\n raf = null\n dispatch({ type: actions.columnDoneResizing })\n }\n const dispatchMove = () => {\n window.cancelAnimationFrame(raf)\n raf = null\n dispatch({ type: actions.columnResizing, clientX: mostRecentClientX })\n }\n\n const scheduleDispatchMoveOnNextAnimationFrame = clientXPos => {\n mostRecentClientX = clientXPos\n if (!raf) {\n raf = window.requestAnimationFrame(dispatchMove)\n }\n }\n\n const handlersAndEvents = {\n mouse: {\n moveEvent: 'mousemove',\n moveHandler: e => scheduleDispatchMoveOnNextAnimationFrame(e.clientX),\n upEvent: 'mouseup',\n upHandler: e => {\n document.removeEventListener(\n 'mousemove',\n handlersAndEvents.mouse.moveHandler\n )\n document.removeEventListener(\n 'mouseup',\n handlersAndEvents.mouse.upHandler\n )\n dispatchEnd()\n },\n },\n touch: {\n moveEvent: 'touchmove',\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n scheduleDispatchMoveOnNextAnimationFrame(e.touches[0].clientX)\n return false\n },\n upEvent: 'touchend',\n upHandler: e => {\n document.removeEventListener(\n handlersAndEvents.touch.moveEvent,\n handlersAndEvents.touch.moveHandler\n )\n document.removeEventListener(\n handlersAndEvents.touch.upEvent,\n handlersAndEvents.touch.moveHandler\n )\n dispatchEnd()\n },\n },\n }\n\n const events = isTouchEvent\n ? handlersAndEvents.touch\n : handlersAndEvents.mouse\n const passiveIfSupported = passiveEventSupported()\n ? { passive: false }\n : false\n document.addEventListener(\n events.moveEvent,\n events.moveHandler,\n passiveIfSupported\n )\n document.addEventListener(\n events.upEvent,\n events.upHandler,\n passiveIfSupported\n )\n\n dispatch({\n type: actions.columnStartResizing,\n columnId: header.id,\n columnWidth: header.totalWidth,\n headerIdWidths,\n clientX,\n })\n }\n\n return [\n props,\n {\n onMouseDown: e => e.persist() || onResizeStart(e, header),\n onTouchStart: e => e.persist() || onResizeStart(e, header),\n style: {\n cursor: 'col-resize',\n },\n draggable: false,\n role: 'separator',\n },\n ]\n}\n\nuseResizeColumns.pluginName = 'useResizeColumns'\n\nfunction reducer(state, action) {\n if (action.type === actions.init) {\n return {\n columnResizing: {\n columnWidths: {},\n },\n ...state,\n }\n }\n\n if (action.type === actions.resetResize) {\n return {\n ...state,\n columnResizing: {\n columnWidths: {},\n },\n }\n }\n\n if (action.type === actions.columnStartResizing) {\n const { clientX, columnId, columnWidth, headerIdWidths } = action\n\n return {\n ...state,\n columnResizing: {\n ...state.columnResizing,\n startX: clientX,\n headerIdWidths,\n columnWidth,\n isResizingColumn: columnId,\n },\n }\n }\n\n if (action.type === actions.columnResizing) {\n const { clientX } = action\n const { startX, columnWidth, headerIdWidths = [] } = state.columnResizing\n\n const deltaX = clientX - startX\n const percentageDeltaX = deltaX / columnWidth\n\n const newColumnWidths = {}\n\n headerIdWidths.forEach(([headerId, headerWidth]) => {\n newColumnWidths[headerId] = Math.max(\n headerWidth + headerWidth * percentageDeltaX,\n 0\n )\n })\n\n return {\n ...state,\n columnResizing: {\n ...state.columnResizing,\n columnWidths: {\n ...state.columnResizing.columnWidths,\n ...newColumnWidths,\n },\n },\n }\n }\n\n if (action.type === actions.columnDoneResizing) {\n return {\n ...state,\n columnResizing: {\n ...state.columnResizing,\n startX: null,\n isResizingColumn: null,\n },\n }\n }\n}\n\nconst useInstanceBeforeDimensions = instance => {\n const {\n flatHeaders,\n disableResizing,\n getHooks,\n state: { columnResizing },\n } = instance\n\n const getInstance = useGetLatest(instance)\n\n flatHeaders.forEach(header => {\n const canResize = getFirstDefined(\n header.disableResizing === true ? false : undefined,\n disableResizing === true ? false : undefined,\n true\n )\n\n header.canResize = canResize\n header.width =\n columnResizing.columnWidths[header.id] ||\n header.originalWidth ||\n header.width\n header.isResizing = columnResizing.isResizingColumn === header.id\n\n if (canResize) {\n header.getResizerProps = makePropGetter(getHooks().getResizerProps, {\n instance: getInstance(),\n header,\n })\n }\n })\n}\n\nfunction useInstance(instance) {\n const { plugins, dispatch, autoResetResize = true, columns } = instance\n\n ensurePluginOrder(plugins, ['useAbsoluteLayout'], 'useResizeColumns')\n\n const getAutoResetResize = useGetLatest(autoResetResize)\n useMountedLayoutEffect(() => {\n if (getAutoResetResize()) {\n dispatch({ type: actions.resetResize })\n }\n }, [columns])\n\n const resetResizing = React.useCallback(\n () => dispatch({ type: actions.resetResize }),\n [dispatch]\n )\n\n Object.assign(instance, {\n resetResizing,\n })\n}\n\nfunction getLeafHeaders(header) {\n const leafHeaders = []\n const recurseHeader = header => {\n if (header.columns && header.columns.length) {\n header.columns.map(recurseHeader)\n }\n leafHeaders.push(header)\n }\n recurseHeader(header)\n return leafHeaders\n}\n","const cellStyles = {\n position: 'absolute',\n top: 0,\n}\n\nexport const useAbsoluteLayout = hooks => {\n hooks.getTableBodyProps.push(getRowStyles)\n hooks.getRowProps.push(getRowStyles)\n hooks.getHeaderGroupProps.push(getRowStyles)\n hooks.getFooterGroupProps.push(getRowStyles)\n\n hooks.getHeaderProps.push((props, { column }) => [\n props,\n {\n style: {\n ...cellStyles,\n left: `${column.totalLeft}px`,\n width: `${column.totalWidth}px`,\n },\n },\n ])\n\n hooks.getCellProps.push((props, { cell }) => [\n props,\n {\n style: {\n ...cellStyles,\n left: `${cell.column.totalLeft}px`,\n width: `${cell.column.totalWidth}px`,\n },\n },\n ])\n\n hooks.getFooterProps.push((props, { column }) => [\n props,\n {\n style: {\n ...cellStyles,\n left: `${column.totalLeft}px`,\n width: `${column.totalWidth}px`,\n },\n },\n ])\n}\n\nuseAbsoluteLayout.pluginName = 'useAbsoluteLayout'\n\nconst getRowStyles = (props, { instance }) => [\n props,\n {\n style: {\n position: 'relative',\n width: `${instance.totalColumnsWidth}px`,\n },\n },\n]\n","const cellStyles = {\n display: 'inline-block',\n boxSizing: 'border-box',\n}\n\nconst getRowStyles = (props, { instance }) => [\n props,\n {\n style: {\n display: 'flex',\n width: `${instance.totalColumnsWidth}px`,\n },\n },\n]\n\nexport const useBlockLayout = hooks => {\n hooks.getRowProps.push(getRowStyles)\n hooks.getHeaderGroupProps.push(getRowStyles)\n hooks.getFooterGroupProps.push(getRowStyles)\n\n hooks.getHeaderProps.push((props, { column }) => [\n props,\n {\n style: {\n ...cellStyles,\n width: `${column.totalWidth}px`,\n },\n },\n ])\n\n hooks.getCellProps.push((props, { cell }) => [\n props,\n {\n style: {\n ...cellStyles,\n width: `${cell.column.totalWidth}px`,\n },\n },\n ])\n\n hooks.getFooterProps.push((props, { column }) => [\n props,\n {\n style: {\n ...cellStyles,\n width: `${column.totalWidth}px`,\n },\n },\n ])\n}\n\nuseBlockLayout.pluginName = 'useBlockLayout'\n","export function useFlexLayout(hooks) {\n hooks.getTableProps.push(getTableProps)\n hooks.getRowProps.push(getRowStyles)\n hooks.getHeaderGroupProps.push(getRowStyles)\n hooks.getFooterGroupProps.push(getRowStyles)\n hooks.getHeaderProps.push(getHeaderProps)\n hooks.getCellProps.push(getCellProps)\n hooks.getFooterProps.push(getFooterProps)\n}\n\nuseFlexLayout.pluginName = 'useFlexLayout'\n\nconst getTableProps = (props, { instance }) => [\n props,\n {\n style: {\n minWidth: `${instance.totalColumnsMinWidth}px`,\n },\n },\n]\n\nconst getRowStyles = (props, { instance }) => [\n props,\n {\n style: {\n display: 'flex',\n flex: '1 0 auto',\n minWidth: `${instance.totalColumnsMinWidth}px`,\n },\n },\n]\n\nconst getHeaderProps = (props, { column }) => [\n props,\n {\n style: {\n boxSizing: 'border-box',\n flex: column.totalFlexWidth\n ? `${column.totalFlexWidth} 0 auto`\n : undefined,\n minWidth: `${column.totalMinWidth}px`,\n width: `${column.totalWidth}px`,\n },\n },\n]\n\nconst getCellProps = (props, { cell }) => [\n props,\n {\n style: {\n boxSizing: 'border-box',\n flex: `${cell.column.totalFlexWidth} 0 auto`,\n minWidth: `${cell.column.totalMinWidth}px`,\n width: `${cell.column.totalWidth}px`,\n },\n },\n]\n\nconst getFooterProps = (props, { column }) => [\n props,\n {\n style: {\n boxSizing: 'border-box',\n flex: column.totalFlexWidth\n ? `${column.totalFlexWidth} 0 auto`\n : undefined,\n minWidth: `${column.totalMinWidth}px`,\n width: `${column.totalWidth}px`,\n },\n },\n]\n","import { actions } from '../publicUtils'\n\n// Actions\nactions.columnStartResizing = 'columnStartResizing'\nactions.columnResizing = 'columnResizing'\nactions.columnDoneResizing = 'columnDoneResizing'\nactions.resetResize = 'resetResize'\n\nexport function useGridLayout(hooks) {\n hooks.stateReducers.push(reducer)\n hooks.getTableProps.push(getTableProps)\n hooks.getHeaderProps.push(getHeaderProps)\n hooks.getRowProps.push(getRowProps)\n}\n\nuseGridLayout.pluginName = 'useGridLayout'\n\nconst getTableProps = (props, { instance }) => {\n const gridTemplateColumns = instance.visibleColumns.map(column => {\n if (instance.state.gridLayout.columnWidths[column.id])\n return `${instance.state.gridLayout.columnWidths[column.id]}px`\n // When resizing, lock the width of all unset columns\n // instead of using user-provided width or defaultColumn width,\n // which could potentially be 'auto' or 'fr' units that don't scale linearly\n if (instance.state.columnResizing?.isResizingColumn)\n return `${instance.state.gridLayout.startWidths[column.id]}px`\n if (typeof column.width === 'number') return `${column.width}px`\n return column.width\n })\n return [\n props,\n {\n style: {\n display: `grid`,\n gridTemplateColumns: gridTemplateColumns.join(` `),\n },\n },\n ]\n}\n\nconst getHeaderProps = (props, { column }) => [\n props,\n {\n id: `header-cell-${column.id}`,\n style: {\n position: `sticky`, //enables a scroll wrapper to be placed around the table and have sticky headers\n gridColumn: `span ${column.totalVisibleHeaderCount}`,\n },\n },\n]\n\nconst getRowProps = (props, { row }) => {\n if (row.isExpanded) {\n return [\n props,\n {\n style: {\n gridColumn: `1 / ${row.cells.length + 1}`,\n },\n },\n ]\n }\n return [props, {}]\n}\n\nfunction reducer(state, action, previousState, instance) {\n if (action.type === actions.init) {\n return {\n gridLayout: {\n columnWidths: {},\n },\n ...state,\n }\n }\n\n if (action.type === actions.resetResize) {\n return {\n ...state,\n gridLayout: {\n columnWidths: {},\n },\n }\n }\n\n if (action.type === actions.columnStartResizing) {\n const { columnId, headerIdWidths } = action\n const columnWidth = getElementWidth(columnId)\n\n if (columnWidth !== undefined) {\n const startWidths = instance.visibleColumns.reduce(\n (acc, column) => ({\n ...acc,\n [column.id]: getElementWidth(column.id),\n }),\n {}\n )\n const minWidths = instance.visibleColumns.reduce(\n (acc, column) => ({\n ...acc,\n [column.id]: column.minWidth,\n }),\n {}\n )\n const maxWidths = instance.visibleColumns.reduce(\n (acc, column) => ({\n ...acc,\n [column.id]: column.maxWidth,\n }),\n {}\n )\n\n const headerIdGridWidths = headerIdWidths.map(([headerId]) => [\n headerId,\n getElementWidth(headerId),\n ])\n\n return {\n ...state,\n gridLayout: {\n ...state.gridLayout,\n startWidths,\n minWidths,\n maxWidths,\n headerIdGridWidths,\n columnWidth,\n },\n }\n } else {\n return state\n }\n }\n\n if (action.type === actions.columnResizing) {\n const { clientX } = action\n const { startX } = state.columnResizing\n const {\n columnWidth,\n minWidths,\n maxWidths,\n headerIdGridWidths = [],\n } = state.gridLayout\n\n const deltaX = clientX - startX\n const percentageDeltaX = deltaX / columnWidth\n\n const newColumnWidths = {}\n\n headerIdGridWidths.forEach(([headerId, headerWidth]) => {\n newColumnWidths[headerId] = Math.min(\n Math.max(\n minWidths[headerId],\n headerWidth + headerWidth * percentageDeltaX\n ),\n maxWidths[headerId]\n )\n })\n\n return {\n ...state,\n gridLayout: {\n ...state.gridLayout,\n columnWidths: {\n ...state.gridLayout.columnWidths,\n ...newColumnWidths,\n },\n },\n }\n }\n\n if (action.type === actions.columnDoneResizing) {\n return {\n ...state,\n gridLayout: {\n ...state.gridLayout,\n startWidths: {},\n minWidths: {},\n maxWidths: {},\n },\n }\n }\n}\n\nfunction getElementWidth(columnId) {\n const width = document.getElementById(`header-cell-${columnId}`)?.offsetWidth\n\n if (width !== undefined) {\n return width\n }\n}\n","if (process.env.NODE_ENV === 'production') {\n module.exports = require('./dist/react-table.production.min.js')\n} else {\n module.exports = require('./dist/react-table.development.js')\n}\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define(\"lib\",[\"react\",\"react-dom\"],t):\"object\"==typeof exports?exports.lib=t(require(\"react\"),require(\"react-dom\")):e.lib=t(e.react,e[\"react-dom\"])}(\"undefined\"!=typeof self?self:this,(function(e,t){return function(){\"use strict\";var n={655:function(e,t,n){n.r(t),n.d(t,{__assign:function(){return i},__asyncDelegator:function(){return _},__asyncGenerator:function(){return w},__asyncValues:function(){return P},__await:function(){return m},__awaiter:function(){return s},__classPrivateFieldGet:function(){return j},__classPrivateFieldIn:function(){return A},__classPrivateFieldSet:function(){return T},__createBinding:function(){return d},__decorate:function(){return c},__exportStar:function(){return p},__extends:function(){return o},__generator:function(){return f},__importDefault:function(){return E},__importStar:function(){return x},__makeTemplateObject:function(){return O},__metadata:function(){return u},__param:function(){return l},__read:function(){return y},__rest:function(){return a},__spread:function(){return g},__spreadArray:function(){return v},__spreadArrays:function(){return b},__values:function(){return h}});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function o(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var i=function(){return i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},i.apply(this,arguments)};function a(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}function c(e,t,n,r){var o,i=arguments.length,a=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,r);else for(var c=e.length-1;c>=0;c--)(o=e[c])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function l(e,t){return function(n,r){t(n,r,e)}}function u(e,t){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function s(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function c(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}l((r=r.apply(e,t||[])).next())}))}function f(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(l){return function(c){if(n)throw new TypeError(\"Generator is already executing.\");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,l])}}}var d=Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!(\"get\"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]};function p(e,t){for(var n in e)\"default\"===n||Object.prototype.hasOwnProperty.call(t,n)||d(t,e,n)}function h(e){var t=\"function\"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function y(e,t){var n=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function g(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(y(arguments[t]));return e}function b(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),o=0;for(t=0;t<n;t++)for(var i=arguments[t],a=0,c=i.length;a<c;a++,o++)r[o]=i[a];return r}function v(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o<i;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}function m(e){return this instanceof m?(this.v=e,this):new m(e)}function w(e,t,n){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var r,o=n.apply(e,t||[]),i=[];return r={},a(\"next\"),a(\"throw\"),a(\"return\"),r[Symbol.asyncIterator]=function(){return this},r;function a(e){o[e]&&(r[e]=function(t){return new Promise((function(n,r){i.push([e,t,n,r])>1||c(e,t)}))})}function c(e,t){try{(n=o[e](t)).value instanceof m?Promise.resolve(n.value.v).then(l,u):s(i[0][2],n)}catch(e){s(i[0][3],e)}var n}function l(e){c(\"next\",e)}function u(e){c(\"throw\",e)}function s(e,t){e(t),i.shift(),i.length&&c(i[0][0],i[0][1])}}function _(e){var t,n;return t={},r(\"next\"),r(\"throw\",(function(e){throw e})),r(\"return\"),t[Symbol.iterator]=function(){return this},t;function r(r,o){t[r]=e[r]?function(t){return(n=!n)?{value:m(e[r](t)),done:\"return\"===r}:o?o(t):t}:o}}function P(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=h(e),t={},r(\"next\"),r(\"throw\"),r(\"return\"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,o){!function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)}(r,o,(t=e[n](t)).done,t.value)}))}}}function O(e,t){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t,e}var S=Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t};function x(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)\"default\"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&d(t,e,n);return S(t,e),t}function E(e){return e&&e.__esModule?e:{default:e}}function j(e,t,n,r){if(\"a\"===n&&!r)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof t?e!==t||!r:!t.has(e))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===n?r:\"a\"===n?r.call(e):r?r.value:t.get(e)}function T(e,t,n,r,o){if(\"m\"===r)throw new TypeError(\"Private method is not writable\");if(\"a\"===r&&!o)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof t?e!==t||!o:!t.has(e))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===r?o.call(e,n):o?o.value=n:t.set(e,n),n}function A(e,t){if(null===t||\"object\"!=typeof t&&\"function\"!=typeof t)throw new TypeError(\"Cannot use 'in' operator on non-object\");return\"function\"==typeof e?t===e:e.has(t)}},156:function(t){t.exports=e},111:function(e){e.exports=t}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return n[e](i,i.exports,o),i.exports}o.d=function(e,t){for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var i={};return function(){var e=i;Object.defineProperty(e,\"__esModule\",{value:!0}),e.useReactToPrint=e.PrintContextConsumer=void 0;var t=o(655),n=o(156),r=o(111),a=Object.prototype.hasOwnProperty.call(n,\"createContext\"),c=Object.prototype.hasOwnProperty.call(n,\"useMemo\")&&Object.prototype.hasOwnProperty.call(n,\"useCallback\"),l=a?n.createContext({}):null;e.PrintContextConsumer=l?l.Consumer:function(){return null};var u={copyStyles:!0,pageStyle:\"\\n @page {\\n /* Remove browser default header (title) and footer (url) */\\n margin: 0;\\n }\\n @media print {\\n body {\\n /* Tell browsers to print background colors */\\n -webkit-print-color-adjust: exact; /* Chrome/Safari/Edge/Opera */\\n color-adjust: exact; /* Firefox */\\n }\\n }\\n \",removeAfterPrint:!1,suppressErrors:!1},s=function(e){function o(){var n=null!==e&&e.apply(this,arguments)||this;return n.startPrint=function(e){var t=n.props,r=t.onAfterPrint,o=t.onPrintError,i=t.print,a=t.documentTitle;setTimeout((function(){var t,c;if(e.contentWindow){if(e.contentWindow.focus(),i)i(e).then(n.handleRemoveIframe).catch((function(e){o?o(\"print\",e):n.logMessages([\"An error was thrown by the specified `print` function\"])}));else if(e.contentWindow.print){var l=null!==(c=null===(t=e.contentDocument)||void 0===t?void 0:t.title)&&void 0!==c?c:\"\",u=e.ownerDocument.title;a&&(e.ownerDocument.title=a,e.contentDocument&&(e.contentDocument.title=a)),e.contentWindow.print(),a&&(e.ownerDocument.title=u,e.contentDocument&&(e.contentDocument.title=l))}else n.logMessages([\"Printing for this browser is not currently possible: the browser does not have a `print` method available for iframes.\"]);r&&r(),n.handleRemoveIframe()}else n.logMessages([\"Printing failed because the `contentWindow` of the print iframe did not load. This is possibly an error with `react-to-print`. Please file an issue: https://github.com/gregnb/react-to-print/issues/\"])}),500)},n.triggerPrint=function(e){var t=n.props,r=t.onBeforePrint,o=t.onPrintError;if(r){var i=r();i&&\"function\"==typeof i.then?i.then((function(){n.startPrint(e)})).catch((function(e){o&&o(\"onBeforePrint\",e)})):n.startPrint(e)}else n.startPrint(e)},n.handleClick=function(){var e=n.props,t=e.onBeforeGetContent,r=e.onPrintError;if(t){var o=t();o&&\"function\"==typeof o.then?o.then(n.handlePrint).catch((function(e){r&&r(\"onBeforeGetContent\",e)})):n.handlePrint()}else n.handlePrint()},n.handlePrint=function(){var e=n.props,o=e.bodyClass,i=e.content,a=e.copyStyles,c=e.fonts,l=e.pageStyle,u=e.nonce,s=i();if(void 0!==s)if(null!==s){var f=document.createElement(\"iframe\");f.width=\"\".concat(document.documentElement.clientWidth,\"px\"),f.height=\"\".concat(document.documentElement.clientHeight,\"px\"),f.style.position=\"absolute\",f.style.top=\"-\".concat(document.documentElement.clientHeight+100,\"px\"),f.style.left=\"-\".concat(document.documentElement.clientWidth+100,\"px\"),f.id=\"printWindow\",f.srcdoc=\"<!DOCTYPE html>\";var d=(0,r.findDOMNode)(s);if(d){var p=d.cloneNode(!0),h=p instanceof Text,y=document.querySelectorAll(\"link[rel='stylesheet']\"),g=h?[]:p.querySelectorAll(\"img\"),b=h?[]:p.querySelectorAll(\"video\"),v=c?c.length:0;n.numResourcesToLoad=y.length+g.length+b.length+v,n.resourcesLoaded=[],n.resourcesErrored=[];var m=function(e,r){n.resourcesLoaded.includes(e)?n.logMessages([\"Tried to mark a resource that has already been handled\",e],\"debug\"):(r?(n.logMessages(t.__spreadArray(['\"react-to-print\" was unable to load a resource but will continue attempting to print the page'],t.__read(r),!1)),n.resourcesErrored.push(e)):n.resourcesLoaded.push(e),n.resourcesLoaded.length+n.resourcesErrored.length===n.numResourcesToLoad&&n.triggerPrint(f))};f.onload=function(){var e,r,i,s;f.onload=null;var y=f.contentDocument||(null===(r=f.contentWindow)||void 0===r?void 0:r.document);if(y){y.body.appendChild(p),c&&((null===(i=f.contentDocument)||void 0===i?void 0:i.fonts)&&(null===(s=f.contentWindow)||void 0===s?void 0:s.FontFace)?c.forEach((function(e){var t=new FontFace(e.family,e.source);f.contentDocument.fonts.add(t),t.loaded.then((function(){m(t)})).catch((function(e){m(t,[\"Failed loading the font:\",t,\"Load error:\",e])}))})):(c.forEach((function(e){return m(e)})),n.logMessages(['\"react-to-print\" is not able to load custom fonts because the browser does not support the FontFace API but will continue attempting to print the page'])));var v=\"function\"==typeof l?l():l;if(\"string\"!=typeof v)n.logMessages(['\"react-to-print\" expected a \"string\" from `pageStyle` but received \"'.concat(typeof v,'\". Styles from `pageStyle` will not be applied.')]);else{var w=y.createElement(\"style\");u&&(w.setAttribute(\"nonce\",u),y.head.setAttribute(\"nonce\",u)),w.appendChild(y.createTextNode(v)),y.head.appendChild(w)}if(o&&(e=y.body.classList).add.apply(e,t.__spreadArray([],t.__read(o.split(\" \")),!1)),!h){for(var _=h?[]:d.querySelectorAll(\"canvas\"),P=y.querySelectorAll(\"canvas\"),O=0;O<_.length;++O){var S=_[O],x=P[O].getContext(\"2d\");x&&x.drawImage(S,0,0)}var E=function(e){var t=g[e],n=t.getAttribute(\"src\");if(n){var r=new Image;r.onload=function(){return m(t)},r.onerror=function(e,n,r,o,i){return m(t,[\"Error loading <img>\",t,\"Error\",i])},r.src=n}else m(t,['Found an <img> tag with an empty \"src\" attribute. This prevents pre-loading it. The <img> is:',t])};for(O=0;O<g.length;O++)E(O);var j=function(e){var t=b[e];t.preload=\"auto\";var n=t.getAttribute(\"poster\");if(n){var r=new Image;r.onload=function(){return m(t)},r.onerror=function(e,r,o,i,a){return m(t,[\"Error loading video poster\",n,\"for video\",t,\"Error:\",a])},r.src=n}else t.readyState>=2?m(t):(t.onloadeddata=function(){return m(t)},t.onerror=function(e,n,r,o,i){return m(t,[\"Error loading video\",t,\"Error\",i])},t.onstalled=function(){return m(t,[\"Loading video stalled, skipping\",t])})};for(O=0;O<b.length;O++)j(O);var T=\"input\",A=d.querySelectorAll(T),C=y.querySelectorAll(T);for(O=0;O<A.length;O++)C[O].value=A[O].value;var k=\"input[type=checkbox],input[type=radio]\",M=d.querySelectorAll(k),R=y.querySelectorAll(k);for(O=0;O<M.length;O++)R[O].checked=M[O].checked;var q=\"select\",D=d.querySelectorAll(q),I=y.querySelectorAll(q);for(O=0;O<D.length;O++)I[O].value=D[O].value}if(a)for(var F=document.querySelectorAll(\"style, link[rel='stylesheet']\"),L=function(e,t){var r=F[e];if(\"style\"===r.tagName.toLowerCase()){var o=y.createElement(r.tagName),i=r.sheet;if(i){var a=\"\";try{for(var c=i.cssRules.length,l=0;l<c;++l)\"string\"==typeof i.cssRules[l].cssText&&(a+=\"\".concat(i.cssRules[l].cssText,\"\\r\\n\"))}catch(e){n.logMessages([\"A stylesheet could not be accessed. This is likely due to the stylesheet having cross-origin imports, and many browsers block script access to cross-origin stylesheets. See https://github.com/gregnb/react-to-print/issues/429 for details. You may be able to load the sheet by both marking the stylesheet with the cross `crossorigin` attribute, and setting the `Access-Control-Allow-Origin` header on the server serving the stylesheet. Alternatively, host the stylesheet on your domain to avoid this issue entirely.\",r],\"warning\")}o.setAttribute(\"id\",\"react-to-print-\".concat(e)),u&&o.setAttribute(\"nonce\",u),o.appendChild(y.createTextNode(a)),y.head.appendChild(o)}}else if(r.getAttribute(\"href\"))if(r.hasAttribute(\"disabled\"))n.logMessages([\"`react-to-print` encountered a <link> tag with a `disabled` attribute and will ignore it. Note that the `disabled` attribute is deprecated, and some browsers ignore it. You should stop using it. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link#attr-disabled. The <link> is:\",r],\"warning\"),m(r);else{for(var s=y.createElement(r.tagName),f=(l=0,r.attributes.length);l<f;++l){var d=r.attributes[l];d&&s.setAttribute(d.nodeName,d.nodeValue||\"\")}s.onload=function(){return m(s)},s.onerror=function(e,t,n,r,o){return m(s,[\"Failed to load\",s,\"Error:\",o])},u&&s.setAttribute(\"nonce\",u),y.head.appendChild(s)}else n.logMessages([\"`react-to-print` encountered a <link> tag with an empty `href` attribute. In addition to being invalid HTML, this can cause problems in many browsers, and so the <link> was not loaded. The <link> is:\",r],\"warning\"),m(r)},W=(O=0,F.length);O<W;++O)L(O)}0!==n.numResourcesToLoad&&a||n.triggerPrint(f)},n.handleRemoveIframe(!0),document.body.appendChild(f)}else n.logMessages(['\"react-to-print\" could not locate the DOM node corresponding with the `content` prop'])}else n.logMessages(['There is nothing to print because the \"content\" prop returned \"null\". Please ensure \"content\" is renderable before allowing \"react-to-print\" to be called.']);else n.logMessages([\"To print a functional component ensure it is wrapped with `React.forwardRef`, and ensure the forwarded ref is used. See the README for an example: https://github.com/gregnb/react-to-print#examples\"])},n.handleRemoveIframe=function(e){var t=n.props.removeAfterPrint;if(e||t){var r=document.getElementById(\"printWindow\");r&&document.body.removeChild(r)}},n.logMessages=function(e,t){void 0===t&&(t=\"error\"),n.props.suppressErrors||(\"error\"===t?console.error(e):\"warning\"===t?console.warn(e):\"debug\"===t&&console.debug(e))},n}return t.__extends(o,e),o.prototype.render=function(){var e=this.props,t=e.children,r=e.trigger;if(r)return n.cloneElement(r(),{onClick:this.handleClick});if(!l)return this.logMessages(['\"react-to-print\" requires React ^16.3.0 to be able to use \"PrintContext\"']),null;var o={handlePrint:this.handleClick};return n.createElement(l.Provider,{value:o},t)},o.defaultProps=u,o}(n.Component);e.default=s,e.useReactToPrint=function(e){if(!c)return e.suppressErrors||console.error('\"react-to-print\" requires React ^16.8.0 to be able to use \"useReactToPrint\"'),function(){throw new Error('\"react-to-print\" requires React ^16.8.0 to be able to use \"useReactToPrint\"')};var r=n.useMemo((function(){return new s(t.__assign(t.__assign({},u),e))}),[e]);return n.useCallback((function(){return r.handleClick()}),[r])}}(),i}()}));","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.2\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/** @license React v0.20.2\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","(function (root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function () {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function StackFrame(functionName, args, fileName, lineNumber, columnNumber, source) {\n if (functionName !== undefined) {\n this.setFunctionName(functionName);\n }\n if (args !== undefined) {\n this.setArgs(args);\n }\n if (fileName !== undefined) {\n this.setFileName(fileName);\n }\n if (lineNumber !== undefined) {\n this.setLineNumber(lineNumber);\n }\n if (columnNumber !== undefined) {\n this.setColumnNumber(columnNumber);\n }\n if (source !== undefined) {\n this.setSource(source);\n }\n }\n\n StackFrame.prototype = {\n getFunctionName: function () {\n return this.functionName;\n },\n setFunctionName: function (v) {\n this.functionName = String(v);\n },\n\n getArgs: function () {\n return this.args;\n },\n setArgs: function (v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n // NOTE: Property name may be misleading as it includes the path,\n // but it somewhat mirrors V8's JavaScriptStackTraceApi\n // https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi and Gecko's\n // http://mxr.mozilla.org/mozilla-central/source/xpcom/base/nsIException.idl#14\n getFileName: function () {\n return this.fileName;\n },\n setFileName: function (v) {\n this.fileName = String(v);\n },\n\n getLineNumber: function () {\n return this.lineNumber;\n },\n setLineNumber: function (v) {\n if (!_isNumber(v)) {\n throw new TypeError('Line Number must be a Number');\n }\n this.lineNumber = Number(v);\n },\n\n getColumnNumber: function () {\n return this.columnNumber;\n },\n setColumnNumber: function (v) {\n if (!_isNumber(v)) {\n throw new TypeError('Column Number must be a Number');\n }\n this.columnNumber = Number(v);\n },\n\n getSource: function () {\n return this.source;\n },\n setSource: function (v) {\n this.source = String(v);\n },\n\n toString: function() {\n var functionName = this.getFunctionName() || '{anonymous}';\n var args = '(' + (this.getArgs() || []).join(',') + ')';\n var fileName = this.getFileName() ? ('@' + this.getFileName()) : '';\n var lineNumber = _isNumber(this.getLineNumber()) ? (':' + this.getLineNumber()) : '';\n var columnNumber = _isNumber(this.getColumnNumber()) ? (':' + this.getColumnNumber()) : '';\n return functionName + args + fileName + lineNumber + columnNumber;\n }\n };\n\n return StackFrame;\n}));\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\n \nconst consider = {\n hex : true,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true\n //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n // const options = Object.assign({}, consider);\n // if(opt.leadingZeros === false){\n // options.leadingZeros = false;\n // }else if(opt.hex === false){\n // options.hex = false;\n // }\n\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n // if(trimmedStr === \"0.0\") return 0;\n // else if(trimmedStr === \"+0.0\") return 0;\n // else if(trimmedStr === \"-0.0\") return -0;\n\n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n // } else if (options.parseOct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n if(match){\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n //trim ending zeros for floating number\n \n const eNotation = match[4] || match[6];\n if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(eNotation){ //given number has enotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n // const decimalPart = match[5].substr(1);\n // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n \n // const p = numStr.indexOf(\".\");\n // const givenIntPart = numStr.substr(0,p);\n // const givenDecPart = numStr.substr(p+1);\n if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n else return str;\n }\n \n if(leadingZeros){\n // if(numTrimmedByZeros === numStr){\n // if(options.leadingZeros) return num;\n // else return str;\n // }else return str;\n if(numTrimmedByZeros === numStr) return num;\n else if(sign+numTrimmedByZeros === numStr) return num;\n else return str;\n }\n\n if(trimmedStr === numStr) return num;\n else if(trimmedStr === sign+numStr) return num;\n // else{\n // //number with +/- sign\n // trimmedStr.test(/[-+][0-9]);\n\n // }\n return str;\n }\n // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n \n }else{ //non-numeric string\n return str;\n }\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substr(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\nmodule.exports = toNumber\n","\n/**\n * Topological sorting function\n *\n * @param {Array} edges\n * @returns {Array}\n */\n\nmodule.exports = function(edges) {\n return toposort(uniqueNodes(edges), edges)\n}\n\nmodule.exports.array = toposort\n\nfunction toposort(nodes, edges) {\n var cursor = nodes.length\n , sorted = new Array(cursor)\n , visited = {}\n , i = cursor\n // Better data structures make algorithm much faster.\n , outgoingEdges = makeOutgoingEdges(edges)\n , nodesHash = makeNodesHash(nodes)\n\n // check for unknown nodes\n edges.forEach(function(edge) {\n if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {\n throw new Error('Unknown node. There is an unknown node in the supplied edges.')\n }\n })\n\n while (i--) {\n if (!visited[i]) visit(nodes[i], i, new Set())\n }\n\n return sorted\n\n function visit(node, i, predecessors) {\n if(predecessors.has(node)) {\n var nodeRep\n try {\n nodeRep = \", node was:\" + JSON.stringify(node)\n } catch(e) {\n nodeRep = \"\"\n }\n throw new Error('Cyclic dependency' + nodeRep)\n }\n\n if (!nodesHash.has(node)) {\n throw new Error('Found unknown node. Make sure to provided all involved nodes. Unknown node: '+JSON.stringify(node))\n }\n\n if (visited[i]) return;\n visited[i] = true\n\n var outgoing = outgoingEdges.get(node) || new Set()\n outgoing = Array.from(outgoing)\n\n if (i = outgoing.length) {\n predecessors.add(node)\n do {\n var child = outgoing[--i]\n visit(child, nodesHash.get(child), predecessors)\n } while (i)\n predecessors.delete(node)\n }\n\n sorted[--cursor] = node\n }\n}\n\nfunction uniqueNodes(arr){\n var res = new Set()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n res.add(edge[0])\n res.add(edge[1])\n }\n return Array.from(res)\n}\n\nfunction makeOutgoingEdges(arr){\n var edges = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n if (!edges.has(edge[0])) edges.set(edge[0], new Set())\n if (!edges.has(edge[1])) edges.set(edge[1], new Set())\n edges.get(edge[0]).add(edge[1])\n }\n return edges\n}\n\nfunction makeNodesHash(arr){\n var res = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n res.set(arr[i], i)\n }\n return res\n}\n","/*!\n * URI.js - Mutating URLs\n * IPv6 Support\n *\n * Version: 1.19.11\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n * MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n\n(function (root, factory) {\n 'use strict';\n // https://github.com/umdjs/umd/blob/master/returnExports.js\n if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else {\n // Browser globals (root is window)\n root.IPv6 = factory(root);\n }\n}(this, function (root) {\n 'use strict';\n\n /*\n var _in = \"fe80:0000:0000:0000:0204:61ff:fe9d:f156\";\n var _out = IPv6.best(_in);\n var _expected = \"fe80::204:61ff:fe9d:f156\";\n\n console.log(_in, _out, _expected, _out === _expected);\n */\n\n // save current IPv6 variable, if any\n var _IPv6 = root && root.IPv6;\n\n function bestPresentation(address) {\n // based on:\n // Javascript to test an IPv6 address for proper format, and to\n // present the \"best text representation\" according to IETF Draft RFC at\n // http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-04\n // 8 Feb 2010 Rich Brown, Dartware, LLC\n // Please feel free to use this code as long as you provide a link to\n // http://www.intermapper.com\n // http://intermapper.com/support/tools/IPV6-Validator.aspx\n // http://download.dartware.com/thirdparty/ipv6validator.js\n\n var _address = address.toLowerCase();\n var segments = _address.split(':');\n var length = segments.length;\n var total = 8;\n\n // trim colons (:: or ::a:b:c… or …a:b:c::)\n if (segments[0] === '' && segments[1] === '' && segments[2] === '') {\n // must have been ::\n // remove first two items\n segments.shift();\n segments.shift();\n } else if (segments[0] === '' && segments[1] === '') {\n // must have been ::xxxx\n // remove the first item\n segments.shift();\n } else if (segments[length - 1] === '' && segments[length - 2] === '') {\n // must have been xxxx::\n segments.pop();\n }\n\n length = segments.length;\n\n // adjust total segments for IPv4 trailer\n if (segments[length - 1].indexOf('.') !== -1) {\n // found a \".\" which means IPv4\n total = 7;\n }\n\n // fill empty segments them with \"0000\"\n var pos;\n for (pos = 0; pos < length; pos++) {\n if (segments[pos] === '') {\n break;\n }\n }\n\n if (pos < total) {\n segments.splice(pos, 1, '0000');\n while (segments.length < total) {\n segments.splice(pos, 0, '0000');\n }\n }\n\n // strip leading zeros\n var _segments;\n for (var i = 0; i < total; i++) {\n _segments = segments[i].split('');\n for (var j = 0; j < 3 ; j++) {\n if (_segments[0] === '0' && _segments.length > 1) {\n _segments.splice(0,1);\n } else {\n break;\n }\n }\n\n segments[i] = _segments.join('');\n }\n\n // find longest sequence of zeroes and coalesce them into one segment\n var best = -1;\n var _best = 0;\n var _current = 0;\n var current = -1;\n var inzeroes = false;\n // i; already declared\n\n for (i = 0; i < total; i++) {\n if (inzeroes) {\n if (segments[i] === '0') {\n _current += 1;\n } else {\n inzeroes = false;\n if (_current > _best) {\n best = current;\n _best = _current;\n }\n }\n } else {\n if (segments[i] === '0') {\n inzeroes = true;\n current = i;\n _current = 1;\n }\n }\n }\n\n if (_current > _best) {\n best = current;\n _best = _current;\n }\n\n if (_best > 1) {\n segments.splice(best, _best, '');\n }\n\n length = segments.length;\n\n // assemble remaining segments\n var result = '';\n if (segments[0] === '') {\n result = ':';\n }\n\n for (i = 0; i < length; i++) {\n result += segments[i];\n if (i === length - 1) {\n break;\n }\n\n result += ':';\n }\n\n if (segments[length - 1] === '') {\n result += ':';\n }\n\n return result;\n }\n\n function noConflict() {\n /*jshint validthis: true */\n if (root.IPv6 === this) {\n root.IPv6 = _IPv6;\n }\n\n return this;\n }\n\n return {\n best: bestPresentation,\n noConflict: noConflict\n };\n}));\n","/*!\n * URI.js - Mutating URLs\n * Second Level Domain (SLD) Support\n *\n * Version: 1.19.11\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n * MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n\n(function (root, factory) {\n 'use strict';\n // https://github.com/umdjs/umd/blob/master/returnExports.js\n if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else {\n // Browser globals (root is window)\n root.SecondLevelDomains = factory(root);\n }\n}(this, function (root) {\n 'use strict';\n\n // save current SecondLevelDomains variable, if any\n var _SecondLevelDomains = root && root.SecondLevelDomains;\n\n var SLD = {\n // list of known Second Level Domains\n // converted list of SLDs from https://github.com/gavingmiller/second-level-domains\n // ----\n // publicsuffix.org is more current and actually used by a couple of browsers internally.\n // downside is it also contains domains like \"dyndns.org\" - which is fine for the security\n // issues browser have to deal with (SOP for cookies, etc) - but is way overboard for URI.js\n // ----\n list: {\n 'ac':' com gov mil net org ',\n 'ae':' ac co gov mil name net org pro sch ',\n 'af':' com edu gov net org ',\n 'al':' com edu gov mil net org ',\n 'ao':' co ed gv it og pb ',\n 'ar':' com edu gob gov int mil net org tur ',\n 'at':' ac co gv or ',\n 'au':' asn com csiro edu gov id net org ',\n 'ba':' co com edu gov mil net org rs unbi unmo unsa untz unze ',\n 'bb':' biz co com edu gov info net org store tv ',\n 'bh':' biz cc com edu gov info net org ',\n 'bn':' com edu gov net org ',\n 'bo':' com edu gob gov int mil net org tv ',\n 'br':' adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ',\n 'bs':' com edu gov net org ',\n 'bz':' du et om ov rg ',\n 'ca':' ab bc mb nb nf nl ns nt nu on pe qc sk yk ',\n 'ck':' biz co edu gen gov info net org ',\n 'cn':' ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ',\n 'co':' com edu gov mil net nom org ',\n 'cr':' ac c co ed fi go or sa ',\n 'cy':' ac biz com ekloges gov ltd name net org parliament press pro tm ',\n 'do':' art com edu gob gov mil net org sld web ',\n 'dz':' art asso com edu gov net org pol ',\n 'ec':' com edu fin gov info med mil net org pro ',\n 'eg':' com edu eun gov mil name net org sci ',\n 'er':' com edu gov ind mil net org rochest w ',\n 'es':' com edu gob nom org ',\n 'et':' biz com edu gov info name net org ',\n 'fj':' ac biz com info mil name net org pro ',\n 'fk':' ac co gov net nom org ',\n 'fr':' asso com f gouv nom prd presse tm ',\n 'gg':' co net org ',\n 'gh':' com edu gov mil org ',\n 'gn':' ac com gov net org ',\n 'gr':' com edu gov mil net org ',\n 'gt':' com edu gob ind mil net org ',\n 'gu':' com edu gov net org ',\n 'hk':' com edu gov idv net org ',\n 'hu':' 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ',\n 'id':' ac co go mil net or sch web ',\n 'il':' ac co gov idf k12 muni net org ',\n 'in':' ac co edu ernet firm gen gov i ind mil net nic org res ',\n 'iq':' com edu gov i mil net org ',\n 'ir':' ac co dnssec gov i id net org sch ',\n 'it':' edu gov ',\n 'je':' co net org ',\n 'jo':' com edu gov mil name net org sch ',\n 'jp':' ac ad co ed go gr lg ne or ',\n 'ke':' ac co go info me mobi ne or sc ',\n 'kh':' com edu gov mil net org per ',\n 'ki':' biz com de edu gov info mob net org tel ',\n 'km':' asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ',\n 'kn':' edu gov net org ',\n 'kr':' ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ',\n 'kw':' com edu gov net org ',\n 'ky':' com edu gov net org ',\n 'kz':' com edu gov mil net org ',\n 'lb':' com edu gov net org ',\n 'lk':' assn com edu gov grp hotel int ltd net ngo org sch soc web ',\n 'lr':' com edu gov net org ',\n 'lv':' asn com conf edu gov id mil net org ',\n 'ly':' com edu gov id med net org plc sch ',\n 'ma':' ac co gov m net org press ',\n 'mc':' asso tm ',\n 'me':' ac co edu gov its net org priv ',\n 'mg':' com edu gov mil nom org prd tm ',\n 'mk':' com edu gov inf name net org pro ',\n 'ml':' com edu gov net org presse ',\n 'mn':' edu gov org ',\n 'mo':' com edu gov net org ',\n 'mt':' com edu gov net org ',\n 'mv':' aero biz com coop edu gov info int mil museum name net org pro ',\n 'mw':' ac co com coop edu gov int museum net org ',\n 'mx':' com edu gob net org ',\n 'my':' com edu gov mil name net org sch ',\n 'nf':' arts com firm info net other per rec store web ',\n 'ng':' biz com edu gov mil mobi name net org sch ',\n 'ni':' ac co com edu gob mil net nom org ',\n 'np':' com edu gov mil net org ',\n 'nr':' biz com edu gov info net org ',\n 'om':' ac biz co com edu gov med mil museum net org pro sch ',\n 'pe':' com edu gob mil net nom org sld ',\n 'ph':' com edu gov i mil net ngo org ',\n 'pk':' biz com edu fam gob gok gon gop gos gov net org web ',\n 'pl':' art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ',\n 'pr':' ac biz com edu est gov info isla name net org pro prof ',\n 'ps':' com edu gov net org plo sec ',\n 'pw':' belau co ed go ne or ',\n 'ro':' arts com firm info nom nt org rec store tm www ',\n 'rs':' ac co edu gov in org ',\n 'sb':' com edu gov net org ',\n 'sc':' com edu gov net org ',\n 'sh':' co com edu gov net nom org ',\n 'sl':' com edu gov net org ',\n 'st':' co com consulado edu embaixada gov mil net org principe saotome store ',\n 'sv':' com edu gob org red ',\n 'sz':' ac co org ',\n 'tr':' av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ',\n 'tt':' aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ',\n 'tw':' club com ebiz edu game gov idv mil net org ',\n 'mu':' ac co com gov net or org ',\n 'mz':' ac co edu gov org ',\n 'na':' co com ',\n 'nz':' ac co cri geek gen govt health iwi maori mil net org parliament school ',\n 'pa':' abo ac com edu gob ing med net nom org sld ',\n 'pt':' com edu gov int net nome org publ ',\n 'py':' com edu gov mil net org ',\n 'qa':' com edu gov mil net org ',\n 're':' asso com nom ',\n 'ru':' ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ',\n 'rw':' ac co com edu gouv gov int mil net ',\n 'sa':' com edu gov med net org pub sch ',\n 'sd':' com edu gov info med net org tv ',\n 'se':' a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ',\n 'sg':' com edu gov idn net org per ',\n 'sn':' art com edu gouv org perso univ ',\n 'sy':' com edu gov mil net news org ',\n 'th':' ac co go in mi net or ',\n 'tj':' ac biz co com edu go gov info int mil name net nic org test web ',\n 'tn':' agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ',\n 'tz':' ac co go ne or ',\n 'ua':' biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ',\n 'ug':' ac co go ne or org sc ',\n 'uk':' ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ',\n 'us':' dni fed isa kids nsn ',\n 'uy':' com edu gub mil net org ',\n 've':' co com edu gob info mil net org web ',\n 'vi':' co com k12 net org ',\n 'vn':' ac biz com edu gov health info int name net org pro ',\n 'ye':' co com gov ltd me net org plc ',\n 'yu':' ac co edu gov org ',\n 'za':' ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ',\n 'zm':' ac co com edu gov net org sch ',\n // https://en.wikipedia.org/wiki/CentralNic#Second-level_domains\n 'com': 'ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ',\n 'net': 'gb jp se uk ',\n 'org': 'ae',\n 'de': 'com '\n },\n // gorhill 2013-10-25: Using indexOf() instead Regexp(). Significant boost\n // in both performance and memory footprint. No initialization required.\n // http://jsperf.com/uri-js-sld-regex-vs-binary-search/4\n // Following methods use lastIndexOf() rather than array.split() in order\n // to avoid any memory allocations.\n has: function(domain) {\n var tldOffset = domain.lastIndexOf('.');\n if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n return false;\n }\n var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n if (sldOffset <= 0 || sldOffset >= (tldOffset-1)) {\n return false;\n }\n var sldList = SLD.list[domain.slice(tldOffset+1)];\n if (!sldList) {\n return false;\n }\n return sldList.indexOf(' ' + domain.slice(sldOffset+1, tldOffset) + ' ') >= 0;\n },\n is: function(domain) {\n var tldOffset = domain.lastIndexOf('.');\n if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n return false;\n }\n var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n if (sldOffset >= 0) {\n return false;\n }\n var sldList = SLD.list[domain.slice(tldOffset+1)];\n if (!sldList) {\n return false;\n }\n return sldList.indexOf(' ' + domain.slice(0, tldOffset) + ' ') >= 0;\n },\n get: function(domain) {\n var tldOffset = domain.lastIndexOf('.');\n if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n return null;\n }\n var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n if (sldOffset <= 0 || sldOffset >= (tldOffset-1)) {\n return null;\n }\n var sldList = SLD.list[domain.slice(tldOffset+1)];\n if (!sldList) {\n return null;\n }\n if (sldList.indexOf(' ' + domain.slice(sldOffset+1, tldOffset) + ' ') < 0) {\n return null;\n }\n return domain.slice(sldOffset+1);\n },\n noConflict: function(){\n if (root.SecondLevelDomains === this) {\n root.SecondLevelDomains = _SecondLevelDomains;\n }\n return this;\n }\n };\n\n return SLD;\n}));\n","/*!\n * URI.js - Mutating URLs\n *\n * Version: 1.19.11\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n * MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n(function (root, factory) {\n 'use strict';\n // https://github.com/umdjs/umd/blob/master/returnExports.js\n if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = factory(require('./punycode'), require('./IPv6'), require('./SecondLevelDomains'));\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['./punycode', './IPv6', './SecondLevelDomains'], factory);\n } else {\n // Browser globals (root is window)\n root.URI = factory(root.punycode, root.IPv6, root.SecondLevelDomains, root);\n }\n}(this, function (punycode, IPv6, SLD, root) {\n 'use strict';\n /*global location, escape, unescape */\n // FIXME: v2.0.0 renamce non-camelCase properties to uppercase\n /*jshint camelcase: false */\n\n // save current URI variable, if any\n var _URI = root && root.URI;\n\n function URI(url, base) {\n var _urlSupplied = arguments.length >= 1;\n var _baseSupplied = arguments.length >= 2;\n\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof URI)) {\n if (_urlSupplied) {\n if (_baseSupplied) {\n return new URI(url, base);\n }\n\n return new URI(url);\n }\n\n return new URI();\n }\n\n if (url === undefined) {\n if (_urlSupplied) {\n throw new TypeError('undefined is not a valid argument for URI');\n }\n\n if (typeof location !== 'undefined') {\n url = location.href + '';\n } else {\n url = '';\n }\n }\n\n if (url === null) {\n if (_urlSupplied) {\n throw new TypeError('null is not a valid argument for URI');\n }\n }\n\n this.href(url);\n\n // resolve to base according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#constructor\n if (base !== undefined) {\n return this.absoluteTo(base);\n }\n\n return this;\n }\n\n function isInteger(value) {\n return /^[0-9]+$/.test(value);\n }\n\n URI.version = '1.19.11';\n\n var p = URI.prototype;\n var hasOwn = Object.prototype.hasOwnProperty;\n\n function escapeRegEx(string) {\n // https://github.com/medialize/URI.js/commit/85ac21783c11f8ccab06106dba9735a31a86924d#commitcomment-821963\n return string.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function getType(value) {\n // IE8 doesn't return [Object Undefined] but [Object Object] for undefined value\n if (value === undefined) {\n return 'Undefined';\n }\n\n return String(Object.prototype.toString.call(value)).slice(8, -1);\n }\n\n function isArray(obj) {\n return getType(obj) === 'Array';\n }\n\n function filterArrayValues(data, value) {\n var lookup = {};\n var i, length;\n\n if (getType(value) === 'RegExp') {\n lookup = null;\n } else if (isArray(value)) {\n for (i = 0, length = value.length; i < length; i++) {\n lookup[value[i]] = true;\n }\n } else {\n lookup[value] = true;\n }\n\n for (i = 0, length = data.length; i < length; i++) {\n /*jshint laxbreak: true */\n var _match = lookup && lookup[data[i]] !== undefined\n || !lookup && value.test(data[i]);\n /*jshint laxbreak: false */\n if (_match) {\n data.splice(i, 1);\n length--;\n i--;\n }\n }\n\n return data;\n }\n\n function arrayContains(list, value) {\n var i, length;\n\n // value may be string, number, array, regexp\n if (isArray(value)) {\n // Note: this can be optimized to O(n) (instead of current O(m * n))\n for (i = 0, length = value.length; i < length; i++) {\n if (!arrayContains(list, value[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n var _type = getType(value);\n for (i = 0, length = list.length; i < length; i++) {\n if (_type === 'RegExp') {\n if (typeof list[i] === 'string' && list[i].match(value)) {\n return true;\n }\n } else if (list[i] === value) {\n return true;\n }\n }\n\n return false;\n }\n\n function arraysEqual(one, two) {\n if (!isArray(one) || !isArray(two)) {\n return false;\n }\n\n // arrays can't be equal if they have different amount of content\n if (one.length !== two.length) {\n return false;\n }\n\n one.sort();\n two.sort();\n\n for (var i = 0, l = one.length; i < l; i++) {\n if (one[i] !== two[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n function trimSlashes(text) {\n var trim_expression = /^\\/+|\\/+$/g;\n return text.replace(trim_expression, '');\n }\n\n URI._parts = function() {\n return {\n protocol: null,\n username: null,\n password: null,\n hostname: null,\n urn: null,\n port: null,\n path: null,\n query: null,\n fragment: null,\n // state\n preventInvalidHostname: URI.preventInvalidHostname,\n duplicateQueryParameters: URI.duplicateQueryParameters,\n escapeQuerySpace: URI.escapeQuerySpace\n };\n };\n // state: throw on invalid hostname\n // see https://github.com/medialize/URI.js/pull/345\n // and https://github.com/medialize/URI.js/issues/354\n URI.preventInvalidHostname = false;\n // state: allow duplicate query parameters (a=1&a=1)\n URI.duplicateQueryParameters = false;\n // state: replaces + with %20 (space in query strings)\n URI.escapeQuerySpace = true;\n // static properties\n URI.protocol_expression = /^[a-z][a-z0-9.+-]*$/i;\n URI.idn_expression = /[^a-z0-9\\._-]/i;\n URI.punycode_expression = /(xn--)/i;\n // well, 333.444.555.666 matches, but it sure ain't no IPv4 - do we care?\n URI.ip4_expression = /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\n // credits to Rich Brown\n // source: http://forums.intermapper.com/viewtopic.php?p=1096#1096\n // specification: http://www.ietf.org/rfc/rfc4291.txt\n URI.ip6_expression = /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/;\n // expression used is \"gruber revised\" (@gruber v2) determined to be the\n // best solution in a regex-golf we did a couple of ages ago at\n // * http://mathiasbynens.be/demo/url-regex\n // * http://rodneyrehm.de/t/url-regex.html\n URI.find_uri_expression = /\\b((?:[a-z][\\w-]+:(?:\\/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:'\".,<>?«»“”‘’]))/ig;\n URI.findUri = {\n // valid \"scheme://\" or \"www.\"\n start: /\\b(?:([a-z][a-z0-9.+-]*:\\/\\/)|www\\.)/gi,\n // everything up to the next whitespace\n end: /[\\s\\r\\n]|$/,\n // trim trailing punctuation captured by end RegExp\n trim: /[`!()\\[\\]{};:'\".,<>?«»“”„‘’]+$/,\n // balanced parens inclusion (), [], {}, <>\n parens: /(\\([^\\)]*\\)|\\[[^\\]]*\\]|\\{[^}]*\\}|<[^>]*>)/g,\n };\n URI.leading_whitespace_expression = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n // https://infra.spec.whatwg.org/#ascii-tab-or-newline\n URI.ascii_tab_whitespace = /[\\u0009\\u000A\\u000D]+/g\n // http://www.iana.org/assignments/uri-schemes.html\n // http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers#Well-known_ports\n URI.defaultPorts = {\n http: '80',\n https: '443',\n ftp: '21',\n gopher: '70',\n ws: '80',\n wss: '443'\n };\n // list of protocols which always require a hostname\n URI.hostProtocols = [\n 'http',\n 'https'\n ];\n\n // allowed hostname characters according to RFC 3986\n // ALPHA DIGIT \"-\" \".\" \"_\" \"~\" \"!\" \"$\" \"&\" \"'\" \"(\" \")\" \"*\" \"+\" \",\" \";\" \"=\" %encoded\n // I've never seen a (non-IDN) hostname other than: ALPHA DIGIT . - _\n URI.invalid_hostname_characters = /[^a-zA-Z0-9\\.\\-:_]/;\n // map DOM Elements to their URI attribute\n URI.domAttributes = {\n 'a': 'href',\n 'blockquote': 'cite',\n 'link': 'href',\n 'base': 'href',\n 'script': 'src',\n 'form': 'action',\n 'img': 'src',\n 'area': 'href',\n 'iframe': 'src',\n 'embed': 'src',\n 'source': 'src',\n 'track': 'src',\n 'input': 'src', // but only if type=\"image\"\n 'audio': 'src',\n 'video': 'src'\n };\n URI.getDomAttribute = function(node) {\n if (!node || !node.nodeName) {\n return undefined;\n }\n\n var nodeName = node.nodeName.toLowerCase();\n // <input> should only expose src for type=\"image\"\n if (nodeName === 'input' && node.type !== 'image') {\n return undefined;\n }\n\n return URI.domAttributes[nodeName];\n };\n\n function escapeForDumbFirefox36(value) {\n // https://github.com/medialize/URI.js/issues/91\n return escape(value);\n }\n\n // encoding / decoding according to RFC3986\n function strictEncodeURIComponent(string) {\n // see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURIComponent\n return encodeURIComponent(string)\n .replace(/[!'()*]/g, escapeForDumbFirefox36)\n .replace(/\\*/g, '%2A');\n }\n URI.encode = strictEncodeURIComponent;\n URI.decode = decodeURIComponent;\n URI.iso8859 = function() {\n URI.encode = escape;\n URI.decode = unescape;\n };\n URI.unicode = function() {\n URI.encode = strictEncodeURIComponent;\n URI.decode = decodeURIComponent;\n };\n URI.characters = {\n pathname: {\n encode: {\n // RFC3986 2.1: For consistency, URI producers and normalizers should\n // use uppercase hexadecimal digits for all percent-encodings.\n expression: /%(24|26|2B|2C|3B|3D|3A|40)/ig,\n map: {\n // -._~!'()*\n '%24': '$',\n '%26': '&',\n '%2B': '+',\n '%2C': ',',\n '%3B': ';',\n '%3D': '=',\n '%3A': ':',\n '%40': '@'\n }\n },\n decode: {\n expression: /[\\/\\?#]/g,\n map: {\n '/': '%2F',\n '?': '%3F',\n '#': '%23'\n }\n }\n },\n reserved: {\n encode: {\n // RFC3986 2.1: For consistency, URI producers and normalizers should\n // use uppercase hexadecimal digits for all percent-encodings.\n expression: /%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,\n map: {\n // gen-delims\n '%3A': ':',\n '%2F': '/',\n '%3F': '?',\n '%23': '#',\n '%5B': '[',\n '%5D': ']',\n '%40': '@',\n // sub-delims\n '%21': '!',\n '%24': '$',\n '%26': '&',\n '%27': '\\'',\n '%28': '(',\n '%29': ')',\n '%2A': '*',\n '%2B': '+',\n '%2C': ',',\n '%3B': ';',\n '%3D': '='\n }\n }\n },\n urnpath: {\n // The characters under `encode` are the characters called out by RFC 2141 as being acceptable\n // for usage in a URN. RFC2141 also calls out \"-\", \".\", and \"_\" as acceptable characters, but\n // these aren't encoded by encodeURIComponent, so we don't have to call them out here. Also\n // note that the colon character is not featured in the encoding map; this is because URI.js\n // gives the colons in URNs semantic meaning as the delimiters of path segements, and so it\n // should not appear unencoded in a segment itself.\n // See also the note above about RFC3986 and capitalalized hex digits.\n encode: {\n expression: /%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,\n map: {\n '%21': '!',\n '%24': '$',\n '%27': '\\'',\n '%28': '(',\n '%29': ')',\n '%2A': '*',\n '%2B': '+',\n '%2C': ',',\n '%3B': ';',\n '%3D': '=',\n '%40': '@'\n }\n },\n // These characters are the characters called out by RFC2141 as \"reserved\" characters that\n // should never appear in a URN, plus the colon character (see note above).\n decode: {\n expression: /[\\/\\?#:]/g,\n map: {\n '/': '%2F',\n '?': '%3F',\n '#': '%23',\n ':': '%3A'\n }\n }\n }\n };\n URI.encodeQuery = function(string, escapeQuerySpace) {\n var escaped = URI.encode(string + '');\n if (escapeQuerySpace === undefined) {\n escapeQuerySpace = URI.escapeQuerySpace;\n }\n\n return escapeQuerySpace ? escaped.replace(/%20/g, '+') : escaped;\n };\n URI.decodeQuery = function(string, escapeQuerySpace) {\n string += '';\n if (escapeQuerySpace === undefined) {\n escapeQuerySpace = URI.escapeQuerySpace;\n }\n\n try {\n return URI.decode(escapeQuerySpace ? string.replace(/\\+/g, '%20') : string);\n } catch(e) {\n // we're not going to mess with weird encodings,\n // give up and return the undecoded original string\n // see https://github.com/medialize/URI.js/issues/87\n // see https://github.com/medialize/URI.js/issues/92\n return string;\n }\n };\n // generate encode/decode path functions\n var _parts = {'encode':'encode', 'decode':'decode'};\n var _part;\n var generateAccessor = function(_group, _part) {\n return function(string) {\n try {\n return URI[_part](string + '').replace(URI.characters[_group][_part].expression, function(c) {\n return URI.characters[_group][_part].map[c];\n });\n } catch (e) {\n // we're not going to mess with weird encodings,\n // give up and return the undecoded original string\n // see https://github.com/medialize/URI.js/issues/87\n // see https://github.com/medialize/URI.js/issues/92\n return string;\n }\n };\n };\n\n for (_part in _parts) {\n URI[_part + 'PathSegment'] = generateAccessor('pathname', _parts[_part]);\n URI[_part + 'UrnPathSegment'] = generateAccessor('urnpath', _parts[_part]);\n }\n\n var generateSegmentedPathFunction = function(_sep, _codingFuncName, _innerCodingFuncName) {\n return function(string) {\n // Why pass in names of functions, rather than the function objects themselves? The\n // definitions of some functions (but in particular, URI.decode) will occasionally change due\n // to URI.js having ISO8859 and Unicode modes. Passing in the name and getting it will ensure\n // that the functions we use here are \"fresh\".\n var actualCodingFunc;\n if (!_innerCodingFuncName) {\n actualCodingFunc = URI[_codingFuncName];\n } else {\n actualCodingFunc = function(string) {\n return URI[_codingFuncName](URI[_innerCodingFuncName](string));\n };\n }\n\n var segments = (string + '').split(_sep);\n\n for (var i = 0, length = segments.length; i < length; i++) {\n segments[i] = actualCodingFunc(segments[i]);\n }\n\n return segments.join(_sep);\n };\n };\n\n // This takes place outside the above loop because we don't want, e.g., encodeUrnPath functions.\n URI.decodePath = generateSegmentedPathFunction('/', 'decodePathSegment');\n URI.decodeUrnPath = generateSegmentedPathFunction(':', 'decodeUrnPathSegment');\n URI.recodePath = generateSegmentedPathFunction('/', 'encodePathSegment', 'decode');\n URI.recodeUrnPath = generateSegmentedPathFunction(':', 'encodeUrnPathSegment', 'decode');\n\n URI.encodeReserved = generateAccessor('reserved', 'encode');\n\n URI.parse = function(string, parts) {\n var pos;\n if (!parts) {\n parts = {\n preventInvalidHostname: URI.preventInvalidHostname\n };\n }\n\n string = string.replace(URI.leading_whitespace_expression, '')\n // https://infra.spec.whatwg.org/#ascii-tab-or-newline\n string = string.replace(URI.ascii_tab_whitespace, '')\n\n // [protocol\"://\"[username[\":\"password]\"@\"]hostname[\":\"port]\"/\"?][path][\"?\"querystring][\"#\"fragment]\n\n // extract fragment\n pos = string.indexOf('#');\n if (pos > -1) {\n // escaping?\n parts.fragment = string.substring(pos + 1) || null;\n string = string.substring(0, pos);\n }\n\n // extract query\n pos = string.indexOf('?');\n if (pos > -1) {\n // escaping?\n parts.query = string.substring(pos + 1) || null;\n string = string.substring(0, pos);\n }\n\n // slashes and backslashes have lost all meaning for the web protocols (https, http, wss, ws)\n string = string.replace(/^(https?|ftp|wss?)?:+[/\\\\]*/i, '$1://');\n // slashes and backslashes have lost all meaning for scheme relative URLs\n string = string.replace(/^[/\\\\]{2,}/i, '//');\n\n // extract protocol\n if (string.substring(0, 2) === '//') {\n // relative-scheme\n parts.protocol = null;\n string = string.substring(2);\n // extract \"user:pass@host:port\"\n string = URI.parseAuthority(string, parts);\n } else {\n pos = string.indexOf(':');\n if (pos > -1) {\n parts.protocol = string.substring(0, pos) || null;\n if (parts.protocol && !parts.protocol.match(URI.protocol_expression)) {\n // : may be within the path\n parts.protocol = undefined;\n } else if (string.substring(pos + 1, pos + 3).replace(/\\\\/g, '/') === '//') {\n string = string.substring(pos + 3);\n\n // extract \"user:pass@host:port\"\n string = URI.parseAuthority(string, parts);\n } else {\n string = string.substring(pos + 1);\n parts.urn = true;\n }\n }\n }\n\n // what's left must be the path\n parts.path = string;\n\n // and we're done\n return parts;\n };\n URI.parseHost = function(string, parts) {\n if (!string) {\n string = '';\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://github.com/joyent/node/blob/386fd24f49b0e9d1a8a076592a404168faeecc34/lib/url.js#L115-L124\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n // https://github.com/medialize/URI.js/pull/233\n string = string.replace(/\\\\/g, '/');\n\n // extract host:port\n var pos = string.indexOf('/');\n var bracketPos;\n var t;\n\n if (pos === -1) {\n pos = string.length;\n }\n\n if (string.charAt(0) === '[') {\n // IPv6 host - http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-04#section-6\n // I claim most client software breaks on IPv6 anyways. To simplify things, URI only accepts\n // IPv6+port in the format [2001:db8::1]:80 (for the time being)\n bracketPos = string.indexOf(']');\n parts.hostname = string.substring(1, bracketPos) || null;\n parts.port = string.substring(bracketPos + 2, pos) || null;\n if (parts.port === '/') {\n parts.port = null;\n }\n } else {\n var firstColon = string.indexOf(':');\n var firstSlash = string.indexOf('/');\n var nextColon = string.indexOf(':', firstColon + 1);\n if (nextColon !== -1 && (firstSlash === -1 || nextColon < firstSlash)) {\n // IPv6 host contains multiple colons - but no port\n // this notation is actually not allowed by RFC 3986, but we're a liberal parser\n parts.hostname = string.substring(0, pos) || null;\n parts.port = null;\n } else {\n t = string.substring(0, pos).split(':');\n parts.hostname = t[0] || null;\n parts.port = t[1] || null;\n }\n }\n\n if (parts.hostname && string.substring(pos).charAt(0) !== '/') {\n pos++;\n string = '/' + string;\n }\n\n if (parts.preventInvalidHostname) {\n URI.ensureValidHostname(parts.hostname, parts.protocol);\n }\n\n if (parts.port) {\n URI.ensureValidPort(parts.port);\n }\n\n return string.substring(pos) || '/';\n };\n URI.parseAuthority = function(string, parts) {\n string = URI.parseUserinfo(string, parts);\n return URI.parseHost(string, parts);\n };\n URI.parseUserinfo = function(string, parts) {\n // extract username:password\n var _string = string\n var firstBackSlash = string.indexOf('\\\\');\n if (firstBackSlash !== -1) {\n string = string.replace(/\\\\/g, '/')\n }\n var firstSlash = string.indexOf('/');\n var pos = string.lastIndexOf('@', firstSlash > -1 ? firstSlash : string.length - 1);\n var t;\n\n // authority@ must come before /path or \\path\n if (pos > -1 && (firstSlash === -1 || pos < firstSlash)) {\n t = string.substring(0, pos).split(':');\n parts.username = t[0] ? URI.decode(t[0]) : null;\n t.shift();\n parts.password = t[0] ? URI.decode(t.join(':')) : null;\n string = _string.substring(pos + 1);\n } else {\n parts.username = null;\n parts.password = null;\n }\n\n return string;\n };\n URI.parseQuery = function(string, escapeQuerySpace) {\n if (!string) {\n return {};\n }\n\n // throw out the funky business - \"?\"[name\"=\"value\"&\"]+\n string = string.replace(/&+/g, '&').replace(/^\\?*&*|&+$/g, '');\n\n if (!string) {\n return {};\n }\n\n var items = {};\n var splits = string.split('&');\n var length = splits.length;\n var v, name, value;\n\n for (var i = 0; i < length; i++) {\n v = splits[i].split('=');\n name = URI.decodeQuery(v.shift(), escapeQuerySpace);\n // no \"=\" is null according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#collect-url-parameters\n value = v.length ? URI.decodeQuery(v.join('='), escapeQuerySpace) : null;\n\n if (name === '__proto__') {\n // ignore attempt at exploiting JavaScript internals\n continue;\n } else if (hasOwn.call(items, name)) {\n if (typeof items[name] === 'string' || items[name] === null) {\n items[name] = [items[name]];\n }\n\n items[name].push(value);\n } else {\n items[name] = value;\n }\n }\n\n return items;\n };\n\n URI.build = function(parts) {\n var t = '';\n var requireAbsolutePath = false\n\n if (parts.protocol) {\n t += parts.protocol + ':';\n }\n\n if (!parts.urn && (t || parts.hostname)) {\n t += '//';\n requireAbsolutePath = true\n }\n\n t += (URI.buildAuthority(parts) || '');\n\n if (typeof parts.path === 'string') {\n if (parts.path.charAt(0) !== '/' && requireAbsolutePath) {\n t += '/';\n }\n\n t += parts.path;\n }\n\n if (typeof parts.query === 'string' && parts.query) {\n t += '?' + parts.query;\n }\n\n if (typeof parts.fragment === 'string' && parts.fragment) {\n t += '#' + parts.fragment;\n }\n return t;\n };\n URI.buildHost = function(parts) {\n var t = '';\n\n if (!parts.hostname) {\n return '';\n } else if (URI.ip6_expression.test(parts.hostname)) {\n t += '[' + parts.hostname + ']';\n } else {\n t += parts.hostname;\n }\n\n if (parts.port) {\n t += ':' + parts.port;\n }\n\n return t;\n };\n URI.buildAuthority = function(parts) {\n return URI.buildUserinfo(parts) + URI.buildHost(parts);\n };\n URI.buildUserinfo = function(parts) {\n var t = '';\n\n if (parts.username) {\n t += URI.encode(parts.username);\n }\n\n if (parts.password) {\n t += ':' + URI.encode(parts.password);\n }\n\n if (t) {\n t += '@';\n }\n\n return t;\n };\n URI.buildQuery = function(data, duplicateQueryParameters, escapeQuerySpace) {\n // according to http://tools.ietf.org/html/rfc3986 or http://labs.apache.org/webarch/uri/rfc/rfc3986.html\n // being »-._~!$&'()*+,;=:@/?« %HEX and alnum are allowed\n // the RFC explicitly states ?/foo being a valid use case, no mention of parameter syntax!\n // URI.js treats the query string as being application/x-www-form-urlencoded\n // see http://www.w3.org/TR/REC-html40/interact/forms.html#form-content-type\n\n var t = '';\n var unique, key, i, length;\n for (key in data) {\n if (key === '__proto__') {\n // ignore attempt at exploiting JavaScript internals\n continue;\n } else if (hasOwn.call(data, key)) {\n if (isArray(data[key])) {\n unique = {};\n for (i = 0, length = data[key].length; i < length; i++) {\n if (data[key][i] !== undefined && unique[data[key][i] + ''] === undefined) {\n t += '&' + URI.buildQueryParameter(key, data[key][i], escapeQuerySpace);\n if (duplicateQueryParameters !== true) {\n unique[data[key][i] + ''] = true;\n }\n }\n }\n } else if (data[key] !== undefined) {\n t += '&' + URI.buildQueryParameter(key, data[key], escapeQuerySpace);\n }\n }\n }\n\n return t.substring(1);\n };\n URI.buildQueryParameter = function(name, value, escapeQuerySpace) {\n // http://www.w3.org/TR/REC-html40/interact/forms.html#form-content-type -- application/x-www-form-urlencoded\n // don't append \"=\" for null values, according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#url-parameter-serialization\n return URI.encodeQuery(name, escapeQuerySpace) + (value !== null ? '=' + URI.encodeQuery(value, escapeQuerySpace) : '');\n };\n\n URI.addQuery = function(data, name, value) {\n if (typeof name === 'object') {\n for (var key in name) {\n if (hasOwn.call(name, key)) {\n URI.addQuery(data, key, name[key]);\n }\n }\n } else if (typeof name === 'string') {\n if (data[name] === undefined) {\n data[name] = value;\n return;\n } else if (typeof data[name] === 'string') {\n data[name] = [data[name]];\n }\n\n if (!isArray(value)) {\n value = [value];\n }\n\n data[name] = (data[name] || []).concat(value);\n } else {\n throw new TypeError('URI.addQuery() accepts an object, string as the name parameter');\n }\n };\n\n URI.setQuery = function(data, name, value) {\n if (typeof name === 'object') {\n for (var key in name) {\n if (hasOwn.call(name, key)) {\n URI.setQuery(data, key, name[key]);\n }\n }\n } else if (typeof name === 'string') {\n data[name] = value === undefined ? null : value;\n } else {\n throw new TypeError('URI.setQuery() accepts an object, string as the name parameter');\n }\n };\n\n URI.removeQuery = function(data, name, value) {\n var i, length, key;\n\n if (isArray(name)) {\n for (i = 0, length = name.length; i < length; i++) {\n data[name[i]] = undefined;\n }\n } else if (getType(name) === 'RegExp') {\n for (key in data) {\n if (name.test(key)) {\n data[key] = undefined;\n }\n }\n } else if (typeof name === 'object') {\n for (key in name) {\n if (hasOwn.call(name, key)) {\n URI.removeQuery(data, key, name[key]);\n }\n }\n } else if (typeof name === 'string') {\n if (value !== undefined) {\n if (getType(value) === 'RegExp') {\n if (!isArray(data[name]) && value.test(data[name])) {\n data[name] = undefined;\n } else {\n data[name] = filterArrayValues(data[name], value);\n }\n } else if (data[name] === String(value) && (!isArray(value) || value.length === 1)) {\n data[name] = undefined;\n } else if (isArray(data[name])) {\n data[name] = filterArrayValues(data[name], value);\n }\n } else {\n data[name] = undefined;\n }\n } else {\n throw new TypeError('URI.removeQuery() accepts an object, string, RegExp as the first parameter');\n }\n };\n URI.hasQuery = function(data, name, value, withinArray) {\n switch (getType(name)) {\n case 'String':\n // Nothing to do here\n break;\n\n case 'RegExp':\n for (var key in data) {\n if (hasOwn.call(data, key)) {\n if (name.test(key) && (value === undefined || URI.hasQuery(data, key, value))) {\n return true;\n }\n }\n }\n\n return false;\n\n case 'Object':\n for (var _key in name) {\n if (hasOwn.call(name, _key)) {\n if (!URI.hasQuery(data, _key, name[_key])) {\n return false;\n }\n }\n }\n\n return true;\n\n default:\n throw new TypeError('URI.hasQuery() accepts a string, regular expression or object as the name parameter');\n }\n\n switch (getType(value)) {\n case 'Undefined':\n // true if exists (but may be empty)\n return name in data; // data[name] !== undefined;\n\n case 'Boolean':\n // true if exists and non-empty\n var _booly = Boolean(isArray(data[name]) ? data[name].length : data[name]);\n return value === _booly;\n\n case 'Function':\n // allow complex comparison\n return !!value(data[name], name, data);\n\n case 'Array':\n if (!isArray(data[name])) {\n return false;\n }\n\n var op = withinArray ? arrayContains : arraysEqual;\n return op(data[name], value);\n\n case 'RegExp':\n if (!isArray(data[name])) {\n return Boolean(data[name] && data[name].match(value));\n }\n\n if (!withinArray) {\n return false;\n }\n\n return arrayContains(data[name], value);\n\n case 'Number':\n value = String(value);\n /* falls through */\n case 'String':\n if (!isArray(data[name])) {\n return data[name] === value;\n }\n\n if (!withinArray) {\n return false;\n }\n\n return arrayContains(data[name], value);\n\n default:\n throw new TypeError('URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter');\n }\n };\n\n\n URI.joinPaths = function() {\n var input = [];\n var segments = [];\n var nonEmptySegments = 0;\n\n for (var i = 0; i < arguments.length; i++) {\n var url = new URI(arguments[i]);\n input.push(url);\n var _segments = url.segment();\n for (var s = 0; s < _segments.length; s++) {\n if (typeof _segments[s] === 'string') {\n segments.push(_segments[s]);\n }\n\n if (_segments[s]) {\n nonEmptySegments++;\n }\n }\n }\n\n if (!segments.length || !nonEmptySegments) {\n return new URI('');\n }\n\n var uri = new URI('').segment(segments);\n\n if (input[0].path() === '' || input[0].path().slice(0, 1) === '/') {\n uri.path('/' + uri.path());\n }\n\n return uri.normalize();\n };\n\n URI.commonPath = function(one, two) {\n var length = Math.min(one.length, two.length);\n var pos;\n\n // find first non-matching character\n for (pos = 0; pos < length; pos++) {\n if (one.charAt(pos) !== two.charAt(pos)) {\n pos--;\n break;\n }\n }\n\n if (pos < 1) {\n return one.charAt(0) === two.charAt(0) && one.charAt(0) === '/' ? '/' : '';\n }\n\n // revert to last /\n if (one.charAt(pos) !== '/' || two.charAt(pos) !== '/') {\n pos = one.substring(0, pos).lastIndexOf('/');\n }\n\n return one.substring(0, pos + 1);\n };\n\n URI.withinString = function(string, callback, options) {\n options || (options = {});\n var _start = options.start || URI.findUri.start;\n var _end = options.end || URI.findUri.end;\n var _trim = options.trim || URI.findUri.trim;\n var _parens = options.parens || URI.findUri.parens;\n var _attributeOpen = /[a-z0-9-]=[\"']?$/i;\n\n _start.lastIndex = 0;\n while (true) {\n var match = _start.exec(string);\n if (!match) {\n break;\n }\n\n var start = match.index;\n if (options.ignoreHtml) {\n // attribut(e=[\"']?$)\n var attributeOpen = string.slice(Math.max(start - 3, 0), start);\n if (attributeOpen && _attributeOpen.test(attributeOpen)) {\n continue;\n }\n }\n\n var end = start + string.slice(start).search(_end);\n var slice = string.slice(start, end);\n // make sure we include well balanced parens\n var parensEnd = -1;\n while (true) {\n var parensMatch = _parens.exec(slice);\n if (!parensMatch) {\n break;\n }\n\n var parensMatchEnd = parensMatch.index + parensMatch[0].length;\n parensEnd = Math.max(parensEnd, parensMatchEnd);\n }\n\n if (parensEnd > -1) {\n slice = slice.slice(0, parensEnd) + slice.slice(parensEnd).replace(_trim, '');\n } else {\n slice = slice.replace(_trim, '');\n }\n\n if (slice.length <= match[0].length) {\n // the extract only contains the starting marker of a URI,\n // e.g. \"www\" or \"http://\"\n continue;\n }\n\n if (options.ignore && options.ignore.test(slice)) {\n continue;\n }\n\n end = start + slice.length;\n var result = callback(slice, start, end, string);\n if (result === undefined) {\n _start.lastIndex = end;\n continue;\n }\n\n result = String(result);\n string = string.slice(0, start) + result + string.slice(end);\n _start.lastIndex = start + result.length;\n }\n\n _start.lastIndex = 0;\n return string;\n };\n\n URI.ensureValidHostname = function(v, protocol) {\n // Theoretically URIs allow percent-encoding in Hostnames (according to RFC 3986)\n // they are not part of DNS and therefore ignored by URI.js\n\n var hasHostname = !!v; // not null and not an empty string\n var hasProtocol = !!protocol;\n var rejectEmptyHostname = false;\n\n if (hasProtocol) {\n rejectEmptyHostname = arrayContains(URI.hostProtocols, protocol);\n }\n\n if (rejectEmptyHostname && !hasHostname) {\n throw new TypeError('Hostname cannot be empty, if protocol is ' + protocol);\n } else if (v && v.match(URI.invalid_hostname_characters)) {\n // test punycode\n if (!punycode) {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');\n }\n if (punycode.toASCII(v).match(URI.invalid_hostname_characters)) {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-:_]');\n }\n }\n };\n\n URI.ensureValidPort = function (v) {\n if (!v) {\n return;\n }\n\n var port = Number(v);\n if (isInteger(port) && (port > 0) && (port < 65536)) {\n return;\n }\n\n throw new TypeError('Port \"' + v + '\" is not a valid port');\n };\n\n // noConflict\n URI.noConflict = function(removeAll) {\n if (removeAll) {\n var unconflicted = {\n URI: this.noConflict()\n };\n\n if (root.URITemplate && typeof root.URITemplate.noConflict === 'function') {\n unconflicted.URITemplate = root.URITemplate.noConflict();\n }\n\n if (root.IPv6 && typeof root.IPv6.noConflict === 'function') {\n unconflicted.IPv6 = root.IPv6.noConflict();\n }\n\n if (root.SecondLevelDomains && typeof root.SecondLevelDomains.noConflict === 'function') {\n unconflicted.SecondLevelDomains = root.SecondLevelDomains.noConflict();\n }\n\n return unconflicted;\n } else if (root.URI === this) {\n root.URI = _URI;\n }\n\n return this;\n };\n\n p.build = function(deferBuild) {\n if (deferBuild === true) {\n this._deferred_build = true;\n } else if (deferBuild === undefined || this._deferred_build) {\n this._string = URI.build(this._parts);\n this._deferred_build = false;\n }\n\n return this;\n };\n\n p.clone = function() {\n return new URI(this);\n };\n\n p.valueOf = p.toString = function() {\n return this.build(false)._string;\n };\n\n\n function generateSimpleAccessor(_part){\n return function(v, build) {\n if (v === undefined) {\n return this._parts[_part] || '';\n } else {\n this._parts[_part] = v || null;\n this.build(!build);\n return this;\n }\n };\n }\n\n function generatePrefixAccessor(_part, _key){\n return function(v, build) {\n if (v === undefined) {\n return this._parts[_part] || '';\n } else {\n if (v !== null) {\n v = v + '';\n if (v.charAt(0) === _key) {\n v = v.substring(1);\n }\n }\n\n this._parts[_part] = v;\n this.build(!build);\n return this;\n }\n };\n }\n\n p.protocol = generateSimpleAccessor('protocol');\n p.username = generateSimpleAccessor('username');\n p.password = generateSimpleAccessor('password');\n p.hostname = generateSimpleAccessor('hostname');\n p.port = generateSimpleAccessor('port');\n p.query = generatePrefixAccessor('query', '?');\n p.fragment = generatePrefixAccessor('fragment', '#');\n\n p.search = function(v, build) {\n var t = this.query(v, build);\n return typeof t === 'string' && t.length ? ('?' + t) : t;\n };\n p.hash = function(v, build) {\n var t = this.fragment(v, build);\n return typeof t === 'string' && t.length ? ('#' + t) : t;\n };\n\n p.pathname = function(v, build) {\n if (v === undefined || v === true) {\n var res = this._parts.path || (this._parts.hostname ? '/' : '');\n return v ? (this._parts.urn ? URI.decodeUrnPath : URI.decodePath)(res) : res;\n } else {\n if (this._parts.urn) {\n this._parts.path = v ? URI.recodeUrnPath(v) : '';\n } else {\n this._parts.path = v ? URI.recodePath(v) : '/';\n }\n this.build(!build);\n return this;\n }\n };\n p.path = p.pathname;\n p.href = function(href, build) {\n var key;\n\n if (href === undefined) {\n return this.toString();\n }\n\n this._string = '';\n this._parts = URI._parts();\n\n var _URI = href instanceof URI;\n var _object = typeof href === 'object' && (href.hostname || href.path || href.pathname);\n if (href.nodeName) {\n var attribute = URI.getDomAttribute(href);\n href = href[attribute] || '';\n _object = false;\n }\n\n // window.location is reported to be an object, but it's not the sort\n // of object we're looking for:\n // * location.protocol ends with a colon\n // * location.query != object.search\n // * location.hash != object.fragment\n // simply serializing the unknown object should do the trick\n // (for location, not for everything...)\n if (!_URI && _object && href.pathname !== undefined) {\n href = href.toString();\n }\n\n if (typeof href === 'string' || href instanceof String) {\n this._parts = URI.parse(String(href), this._parts);\n } else if (_URI || _object) {\n var src = _URI ? href._parts : href;\n for (key in src) {\n if (key === 'query') { continue; }\n if (hasOwn.call(this._parts, key)) {\n this._parts[key] = src[key];\n }\n }\n if (src.query) {\n this.query(src.query, false);\n }\n } else {\n throw new TypeError('invalid input');\n }\n\n this.build(!build);\n return this;\n };\n\n // identification accessors\n p.is = function(what) {\n var ip = false;\n var ip4 = false;\n var ip6 = false;\n var name = false;\n var sld = false;\n var idn = false;\n var punycode = false;\n var relative = !this._parts.urn;\n\n if (this._parts.hostname) {\n relative = false;\n ip4 = URI.ip4_expression.test(this._parts.hostname);\n ip6 = URI.ip6_expression.test(this._parts.hostname);\n ip = ip4 || ip6;\n name = !ip;\n sld = name && SLD && SLD.has(this._parts.hostname);\n idn = name && URI.idn_expression.test(this._parts.hostname);\n punycode = name && URI.punycode_expression.test(this._parts.hostname);\n }\n\n switch (what.toLowerCase()) {\n case 'relative':\n return relative;\n\n case 'absolute':\n return !relative;\n\n // hostname identification\n case 'domain':\n case 'name':\n return name;\n\n case 'sld':\n return sld;\n\n case 'ip':\n return ip;\n\n case 'ip4':\n case 'ipv4':\n case 'inet4':\n return ip4;\n\n case 'ip6':\n case 'ipv6':\n case 'inet6':\n return ip6;\n\n case 'idn':\n return idn;\n\n case 'url':\n return !this._parts.urn;\n\n case 'urn':\n return !!this._parts.urn;\n\n case 'punycode':\n return punycode;\n }\n\n return null;\n };\n\n // component specific input validation\n var _protocol = p.protocol;\n var _port = p.port;\n var _hostname = p.hostname;\n\n p.protocol = function(v, build) {\n if (v) {\n // accept trailing ://\n v = v.replace(/:(\\/\\/)?$/, '');\n\n if (!v.match(URI.protocol_expression)) {\n throw new TypeError('Protocol \"' + v + '\" contains characters other than [A-Z0-9.+-] or doesn\\'t start with [A-Z]');\n }\n }\n\n return _protocol.call(this, v, build);\n };\n p.scheme = p.protocol;\n p.port = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v !== undefined) {\n if (v === 0) {\n v = null;\n }\n\n if (v) {\n v += '';\n if (v.charAt(0) === ':') {\n v = v.substring(1);\n }\n\n URI.ensureValidPort(v);\n }\n }\n return _port.call(this, v, build);\n };\n p.hostname = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v !== undefined) {\n var x = { preventInvalidHostname: this._parts.preventInvalidHostname };\n var res = URI.parseHost(v, x);\n if (res !== '/') {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n }\n\n v = x.hostname;\n if (this._parts.preventInvalidHostname) {\n URI.ensureValidHostname(v, this._parts.protocol);\n }\n }\n\n return _hostname.call(this, v, build);\n };\n\n // compound accessors\n p.origin = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n var protocol = this.protocol();\n var authority = this.authority();\n if (!authority) {\n return '';\n }\n\n return (protocol ? protocol + '://' : '') + this.authority();\n } else {\n var origin = URI(v);\n this\n .protocol(origin.protocol())\n .authority(origin.authority())\n .build(!build);\n return this;\n }\n };\n p.host = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n return this._parts.hostname ? URI.buildHost(this._parts) : '';\n } else {\n var res = URI.parseHost(v, this._parts);\n if (res !== '/') {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n }\n\n this.build(!build);\n return this;\n }\n };\n p.authority = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n return this._parts.hostname ? URI.buildAuthority(this._parts) : '';\n } else {\n var res = URI.parseAuthority(v, this._parts);\n if (res !== '/') {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n }\n\n this.build(!build);\n return this;\n }\n };\n p.userinfo = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n var t = URI.buildUserinfo(this._parts);\n return t ? t.substring(0, t.length -1) : t;\n } else {\n if (v[v.length-1] !== '@') {\n v += '@';\n }\n\n URI.parseUserinfo(v, this._parts);\n this.build(!build);\n return this;\n }\n };\n p.resource = function(v, build) {\n var parts;\n\n if (v === undefined) {\n return this.path() + this.search() + this.hash();\n }\n\n parts = URI.parse(v);\n this._parts.path = parts.path;\n this._parts.query = parts.query;\n this._parts.fragment = parts.fragment;\n this.build(!build);\n return this;\n };\n\n // fraction accessors\n p.subdomain = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n // convenience, return \"www\" from \"www.example.org\"\n if (v === undefined) {\n if (!this._parts.hostname || this.is('IP')) {\n return '';\n }\n\n // grab domain and add another segment\n var end = this._parts.hostname.length - this.domain().length - 1;\n return this._parts.hostname.substring(0, end) || '';\n } else {\n var e = this._parts.hostname.length - this.domain().length;\n var sub = this._parts.hostname.substring(0, e);\n var replace = new RegExp('^' + escapeRegEx(sub));\n\n if (v && v.charAt(v.length - 1) !== '.') {\n v += '.';\n }\n\n if (v.indexOf(':') !== -1) {\n throw new TypeError('Domains cannot contain colons');\n }\n\n if (v) {\n URI.ensureValidHostname(v, this._parts.protocol);\n }\n\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n this.build(!build);\n return this;\n }\n };\n p.domain = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (typeof v === 'boolean') {\n build = v;\n v = undefined;\n }\n\n // convenience, return \"example.org\" from \"www.example.org\"\n if (v === undefined) {\n if (!this._parts.hostname || this.is('IP')) {\n return '';\n }\n\n // if hostname consists of 1 or 2 segments, it must be the domain\n var t = this._parts.hostname.match(/\\./g);\n if (t && t.length < 2) {\n return this._parts.hostname;\n }\n\n // grab tld and add another segment\n var end = this._parts.hostname.length - this.tld(build).length - 1;\n end = this._parts.hostname.lastIndexOf('.', end -1) + 1;\n return this._parts.hostname.substring(end) || '';\n } else {\n if (!v) {\n throw new TypeError('cannot set domain empty');\n }\n\n if (v.indexOf(':') !== -1) {\n throw new TypeError('Domains cannot contain colons');\n }\n\n URI.ensureValidHostname(v, this._parts.protocol);\n\n if (!this._parts.hostname || this.is('IP')) {\n this._parts.hostname = v;\n } else {\n var replace = new RegExp(escapeRegEx(this.domain()) + '$');\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n }\n\n this.build(!build);\n return this;\n }\n };\n p.tld = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (typeof v === 'boolean') {\n build = v;\n v = undefined;\n }\n\n // return \"org\" from \"www.example.org\"\n if (v === undefined) {\n if (!this._parts.hostname || this.is('IP')) {\n return '';\n }\n\n var pos = this._parts.hostname.lastIndexOf('.');\n var tld = this._parts.hostname.substring(pos + 1);\n\n if (build !== true && SLD && SLD.list[tld.toLowerCase()]) {\n return SLD.get(this._parts.hostname) || tld;\n }\n\n return tld;\n } else {\n var replace;\n\n if (!v) {\n throw new TypeError('cannot set TLD empty');\n } else if (v.match(/[^a-zA-Z0-9-]/)) {\n if (SLD && SLD.is(v)) {\n replace = new RegExp(escapeRegEx(this.tld()) + '$');\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n } else {\n throw new TypeError('TLD \"' + v + '\" contains characters other than [A-Z0-9]');\n }\n } else if (!this._parts.hostname || this.is('IP')) {\n throw new ReferenceError('cannot set TLD on non-domain host');\n } else {\n replace = new RegExp(escapeRegEx(this.tld()) + '$');\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n }\n\n this.build(!build);\n return this;\n }\n };\n p.directory = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined || v === true) {\n if (!this._parts.path && !this._parts.hostname) {\n return '';\n }\n\n if (this._parts.path === '/') {\n return '/';\n }\n\n var end = this._parts.path.length - this.filename().length - 1;\n var res = this._parts.path.substring(0, end) || (this._parts.hostname ? '/' : '');\n\n return v ? URI.decodePath(res) : res;\n\n } else {\n var e = this._parts.path.length - this.filename().length;\n var directory = this._parts.path.substring(0, e);\n var replace = new RegExp('^' + escapeRegEx(directory));\n\n // fully qualifier directories begin with a slash\n if (!this.is('relative')) {\n if (!v) {\n v = '/';\n }\n\n if (v.charAt(0) !== '/') {\n v = '/' + v;\n }\n }\n\n // directories always end with a slash\n if (v && v.charAt(v.length - 1) !== '/') {\n v += '/';\n }\n\n v = URI.recodePath(v);\n this._parts.path = this._parts.path.replace(replace, v);\n this.build(!build);\n return this;\n }\n };\n p.filename = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (typeof v !== 'string') {\n if (!this._parts.path || this._parts.path === '/') {\n return '';\n }\n\n var pos = this._parts.path.lastIndexOf('/');\n var res = this._parts.path.substring(pos+1);\n\n return v ? URI.decodePathSegment(res) : res;\n } else {\n var mutatedDirectory = false;\n\n if (v.charAt(0) === '/') {\n v = v.substring(1);\n }\n\n if (v.match(/\\.?\\//)) {\n mutatedDirectory = true;\n }\n\n var replace = new RegExp(escapeRegEx(this.filename()) + '$');\n v = URI.recodePath(v);\n this._parts.path = this._parts.path.replace(replace, v);\n\n if (mutatedDirectory) {\n this.normalizePath(build);\n } else {\n this.build(!build);\n }\n\n return this;\n }\n };\n p.suffix = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined || v === true) {\n if (!this._parts.path || this._parts.path === '/') {\n return '';\n }\n\n var filename = this.filename();\n var pos = filename.lastIndexOf('.');\n var s, res;\n\n if (pos === -1) {\n return '';\n }\n\n // suffix may only contain alnum characters (yup, I made this up.)\n s = filename.substring(pos+1);\n res = (/^[a-z0-9%]+$/i).test(s) ? s : '';\n return v ? URI.decodePathSegment(res) : res;\n } else {\n if (v.charAt(0) === '.') {\n v = v.substring(1);\n }\n\n var suffix = this.suffix();\n var replace;\n\n if (!suffix) {\n if (!v) {\n return this;\n }\n\n this._parts.path += '.' + URI.recodePath(v);\n } else if (!v) {\n replace = new RegExp(escapeRegEx('.' + suffix) + '$');\n } else {\n replace = new RegExp(escapeRegEx(suffix) + '$');\n }\n\n if (replace) {\n v = URI.recodePath(v);\n this._parts.path = this._parts.path.replace(replace, v);\n }\n\n this.build(!build);\n return this;\n }\n };\n p.segment = function(segment, v, build) {\n var separator = this._parts.urn ? ':' : '/';\n var path = this.path();\n var absolute = path.substring(0, 1) === '/';\n var segments = path.split(separator);\n\n if (segment !== undefined && typeof segment !== 'number') {\n build = v;\n v = segment;\n segment = undefined;\n }\n\n if (segment !== undefined && typeof segment !== 'number') {\n throw new Error('Bad segment \"' + segment + '\", must be 0-based integer');\n }\n\n if (absolute) {\n segments.shift();\n }\n\n if (segment < 0) {\n // allow negative indexes to address from the end\n segment = Math.max(segments.length + segment, 0);\n }\n\n if (v === undefined) {\n /*jshint laxbreak: true */\n return segment === undefined\n ? segments\n : segments[segment];\n /*jshint laxbreak: false */\n } else if (segment === null || segments[segment] === undefined) {\n if (isArray(v)) {\n segments = [];\n // collapse empty elements within array\n for (var i=0, l=v.length; i < l; i++) {\n if (!v[i].length && (!segments.length || !segments[segments.length -1].length)) {\n continue;\n }\n\n if (segments.length && !segments[segments.length -1].length) {\n segments.pop();\n }\n\n segments.push(trimSlashes(v[i]));\n }\n } else if (v || typeof v === 'string') {\n v = trimSlashes(v);\n if (segments[segments.length -1] === '') {\n // empty trailing elements have to be overwritten\n // to prevent results such as /foo//bar\n segments[segments.length -1] = v;\n } else {\n segments.push(v);\n }\n }\n } else {\n if (v) {\n segments[segment] = trimSlashes(v);\n } else {\n segments.splice(segment, 1);\n }\n }\n\n if (absolute) {\n segments.unshift('');\n }\n\n return this.path(segments.join(separator), build);\n };\n p.segmentCoded = function(segment, v, build) {\n var segments, i, l;\n\n if (typeof segment !== 'number') {\n build = v;\n v = segment;\n segment = undefined;\n }\n\n if (v === undefined) {\n segments = this.segment(segment, v, build);\n if (!isArray(segments)) {\n segments = segments !== undefined ? URI.decode(segments) : undefined;\n } else {\n for (i = 0, l = segments.length; i < l; i++) {\n segments[i] = URI.decode(segments[i]);\n }\n }\n\n return segments;\n }\n\n if (!isArray(v)) {\n v = (typeof v === 'string' || v instanceof String) ? URI.encode(v) : v;\n } else {\n for (i = 0, l = v.length; i < l; i++) {\n v[i] = URI.encode(v[i]);\n }\n }\n\n return this.segment(segment, v, build);\n };\n\n // mutating query string\n var q = p.query;\n p.query = function(v, build) {\n if (v === true) {\n return URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n } else if (typeof v === 'function') {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n var result = v.call(this, data);\n this._parts.query = URI.buildQuery(result || data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n this.build(!build);\n return this;\n } else if (v !== undefined && typeof v !== 'string') {\n this._parts.query = URI.buildQuery(v, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n this.build(!build);\n return this;\n } else {\n return q.call(this, v, build);\n }\n };\n p.setQuery = function(name, value, build) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n\n if (typeof name === 'string' || name instanceof String) {\n data[name] = value !== undefined ? value : null;\n } else if (typeof name === 'object') {\n for (var key in name) {\n if (hasOwn.call(name, key)) {\n data[key] = name[key];\n }\n }\n } else {\n throw new TypeError('URI.addQuery() accepts an object, string as the name parameter');\n }\n\n this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n if (typeof name !== 'string') {\n build = value;\n }\n\n this.build(!build);\n return this;\n };\n p.addQuery = function(name, value, build) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n URI.addQuery(data, name, value === undefined ? null : value);\n this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n if (typeof name !== 'string') {\n build = value;\n }\n\n this.build(!build);\n return this;\n };\n p.removeQuery = function(name, value, build) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n URI.removeQuery(data, name, value);\n this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n if (typeof name !== 'string') {\n build = value;\n }\n\n this.build(!build);\n return this;\n };\n p.hasQuery = function(name, value, withinArray) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n return URI.hasQuery(data, name, value, withinArray);\n };\n p.setSearch = p.setQuery;\n p.addSearch = p.addQuery;\n p.removeSearch = p.removeQuery;\n p.hasSearch = p.hasQuery;\n\n // sanitizing URLs\n p.normalize = function() {\n if (this._parts.urn) {\n return this\n .normalizeProtocol(false)\n .normalizePath(false)\n .normalizeQuery(false)\n .normalizeFragment(false)\n .build();\n }\n\n return this\n .normalizeProtocol(false)\n .normalizeHostname(false)\n .normalizePort(false)\n .normalizePath(false)\n .normalizeQuery(false)\n .normalizeFragment(false)\n .build();\n };\n p.normalizeProtocol = function(build) {\n if (typeof this._parts.protocol === 'string') {\n this._parts.protocol = this._parts.protocol.toLowerCase();\n this.build(!build);\n }\n\n return this;\n };\n p.normalizeHostname = function(build) {\n if (this._parts.hostname) {\n if (this.is('IDN') && punycode) {\n this._parts.hostname = punycode.toASCII(this._parts.hostname);\n } else if (this.is('IPv6') && IPv6) {\n this._parts.hostname = IPv6.best(this._parts.hostname);\n }\n\n this._parts.hostname = this._parts.hostname.toLowerCase();\n this.build(!build);\n }\n\n return this;\n };\n p.normalizePort = function(build) {\n // remove port of it's the protocol's default\n if (typeof this._parts.protocol === 'string' && this._parts.port === URI.defaultPorts[this._parts.protocol]) {\n this._parts.port = null;\n this.build(!build);\n }\n\n return this;\n };\n p.normalizePath = function(build) {\n var _path = this._parts.path;\n if (!_path) {\n return this;\n }\n\n if (this._parts.urn) {\n this._parts.path = URI.recodeUrnPath(this._parts.path);\n this.build(!build);\n return this;\n }\n\n if (this._parts.path === '/') {\n return this;\n }\n\n _path = URI.recodePath(_path);\n\n var _was_relative;\n var _leadingParents = '';\n var _parent, _pos;\n\n // handle relative paths\n if (_path.charAt(0) !== '/') {\n _was_relative = true;\n _path = '/' + _path;\n }\n\n // handle relative files (as opposed to directories)\n if (_path.slice(-3) === '/..' || _path.slice(-2) === '/.') {\n _path += '/';\n }\n\n // resolve simples\n _path = _path\n .replace(/(\\/(\\.\\/)+)|(\\/\\.$)/g, '/')\n .replace(/\\/{2,}/g, '/');\n\n // remember leading parents\n if (_was_relative) {\n _leadingParents = _path.substring(1).match(/^(\\.\\.\\/)+/) || '';\n if (_leadingParents) {\n _leadingParents = _leadingParents[0];\n }\n }\n\n // resolve parents\n while (true) {\n _parent = _path.search(/\\/\\.\\.(\\/|$)/);\n if (_parent === -1) {\n // no more ../ to resolve\n break;\n } else if (_parent === 0) {\n // top level cannot be relative, skip it\n _path = _path.substring(3);\n continue;\n }\n\n _pos = _path.substring(0, _parent).lastIndexOf('/');\n if (_pos === -1) {\n _pos = _parent;\n }\n _path = _path.substring(0, _pos) + _path.substring(_parent + 3);\n }\n\n // revert to relative\n if (_was_relative && this.is('relative')) {\n _path = _leadingParents + _path.substring(1);\n }\n\n this._parts.path = _path;\n this.build(!build);\n return this;\n };\n p.normalizePathname = p.normalizePath;\n p.normalizeQuery = function(build) {\n if (typeof this._parts.query === 'string') {\n if (!this._parts.query.length) {\n this._parts.query = null;\n } else {\n this.query(URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace));\n }\n\n this.build(!build);\n }\n\n return this;\n };\n p.normalizeFragment = function(build) {\n if (!this._parts.fragment) {\n this._parts.fragment = null;\n this.build(!build);\n }\n\n return this;\n };\n p.normalizeSearch = p.normalizeQuery;\n p.normalizeHash = p.normalizeFragment;\n\n p.iso8859 = function() {\n // expect unicode input, iso8859 output\n var e = URI.encode;\n var d = URI.decode;\n\n URI.encode = escape;\n URI.decode = decodeURIComponent;\n try {\n this.normalize();\n } finally {\n URI.encode = e;\n URI.decode = d;\n }\n return this;\n };\n\n p.unicode = function() {\n // expect iso8859 input, unicode output\n var e = URI.encode;\n var d = URI.decode;\n\n URI.encode = strictEncodeURIComponent;\n URI.decode = unescape;\n try {\n this.normalize();\n } finally {\n URI.encode = e;\n URI.decode = d;\n }\n return this;\n };\n\n p.readable = function() {\n var uri = this.clone();\n // removing username, password, because they shouldn't be displayed according to RFC 3986\n uri.username('').password('').normalize();\n var t = '';\n if (uri._parts.protocol) {\n t += uri._parts.protocol + '://';\n }\n\n if (uri._parts.hostname) {\n if (uri.is('punycode') && punycode) {\n t += punycode.toUnicode(uri._parts.hostname);\n if (uri._parts.port) {\n t += ':' + uri._parts.port;\n }\n } else {\n t += uri.host();\n }\n }\n\n if (uri._parts.hostname && uri._parts.path && uri._parts.path.charAt(0) !== '/') {\n t += '/';\n }\n\n t += uri.path(true);\n if (uri._parts.query) {\n var q = '';\n for (var i = 0, qp = uri._parts.query.split('&'), l = qp.length; i < l; i++) {\n var kv = (qp[i] || '').split('=');\n q += '&' + URI.decodeQuery(kv[0], this._parts.escapeQuerySpace)\n .replace(/&/g, '%26');\n\n if (kv[1] !== undefined) {\n q += '=' + URI.decodeQuery(kv[1], this._parts.escapeQuerySpace)\n .replace(/&/g, '%26');\n }\n }\n t += '?' + q.substring(1);\n }\n\n t += URI.decodeQuery(uri.hash(), true);\n return t;\n };\n\n // resolving relative and absolute URLs\n p.absoluteTo = function(base) {\n var resolved = this.clone();\n var properties = ['protocol', 'username', 'password', 'hostname', 'port'];\n var basedir, i, p;\n\n if (this._parts.urn) {\n throw new Error('URNs do not have any generally defined hierarchical components');\n }\n\n if (!(base instanceof URI)) {\n base = new URI(base);\n }\n\n if (resolved._parts.protocol) {\n // Directly returns even if this._parts.hostname is empty.\n return resolved;\n } else {\n resolved._parts.protocol = base._parts.protocol;\n }\n\n if (this._parts.hostname) {\n return resolved;\n }\n\n for (i = 0; (p = properties[i]); i++) {\n resolved._parts[p] = base._parts[p];\n }\n\n if (!resolved._parts.path) {\n resolved._parts.path = base._parts.path;\n if (!resolved._parts.query) {\n resolved._parts.query = base._parts.query;\n }\n } else {\n if (resolved._parts.path.substring(-2) === '..') {\n resolved._parts.path += '/';\n }\n\n if (resolved.path().charAt(0) !== '/') {\n basedir = base.directory();\n basedir = basedir ? basedir : base.path().indexOf('/') === 0 ? '/' : '';\n resolved._parts.path = (basedir ? (basedir + '/') : '') + resolved._parts.path;\n resolved.normalizePath();\n }\n }\n\n resolved.build();\n return resolved;\n };\n p.relativeTo = function(base) {\n var relative = this.clone().normalize();\n var relativeParts, baseParts, common, relativePath, basePath;\n\n if (relative._parts.urn) {\n throw new Error('URNs do not have any generally defined hierarchical components');\n }\n\n base = new URI(base).normalize();\n relativeParts = relative._parts;\n baseParts = base._parts;\n relativePath = relative.path();\n basePath = base.path();\n\n if (relativePath.charAt(0) !== '/') {\n throw new Error('URI is already relative');\n }\n\n if (basePath.charAt(0) !== '/') {\n throw new Error('Cannot calculate a URI relative to another relative URI');\n }\n\n if (relativeParts.protocol === baseParts.protocol) {\n relativeParts.protocol = null;\n }\n\n if (relativeParts.username !== baseParts.username || relativeParts.password !== baseParts.password) {\n return relative.build();\n }\n\n if (relativeParts.protocol !== null || relativeParts.username !== null || relativeParts.password !== null) {\n return relative.build();\n }\n\n if (relativeParts.hostname === baseParts.hostname && relativeParts.port === baseParts.port) {\n relativeParts.hostname = null;\n relativeParts.port = null;\n } else {\n return relative.build();\n }\n\n if (relativePath === basePath) {\n relativeParts.path = '';\n return relative.build();\n }\n\n // determine common sub path\n common = URI.commonPath(relativePath, basePath);\n\n // If the paths have nothing in common, return a relative URL with the absolute path.\n if (!common) {\n return relative.build();\n }\n\n var parents = baseParts.path\n .substring(common.length)\n .replace(/[^\\/]*$/, '')\n .replace(/.*?\\//g, '../');\n\n relativeParts.path = (parents + relativeParts.path.substring(common.length)) || './';\n\n return relative.build();\n };\n\n // comparing URIs\n p.equals = function(uri) {\n var one = this.clone();\n var two = new URI(uri);\n var one_map = {};\n var two_map = {};\n var checked = {};\n var one_query, two_query, key;\n\n one.normalize();\n two.normalize();\n\n // exact match\n if (one.toString() === two.toString()) {\n return true;\n }\n\n // extract query string\n one_query = one.query();\n two_query = two.query();\n one.query('');\n two.query('');\n\n // definitely not equal if not even non-query parts match\n if (one.toString() !== two.toString()) {\n return false;\n }\n\n // query parameters have the same length, even if they're permuted\n if (one_query.length !== two_query.length) {\n return false;\n }\n\n one_map = URI.parseQuery(one_query, this._parts.escapeQuerySpace);\n two_map = URI.parseQuery(two_query, this._parts.escapeQuerySpace);\n\n for (key in one_map) {\n if (hasOwn.call(one_map, key)) {\n if (!isArray(one_map[key])) {\n if (one_map[key] !== two_map[key]) {\n return false;\n }\n } else if (!arraysEqual(one_map[key], two_map[key])) {\n return false;\n }\n\n checked[key] = true;\n }\n }\n\n for (key in two_map) {\n if (hasOwn.call(two_map, key)) {\n if (!checked[key]) {\n // two contains a parameter not present in one\n return false;\n }\n }\n }\n\n return true;\n };\n\n // state\n p.preventInvalidHostname = function(v) {\n this._parts.preventInvalidHostname = !!v;\n return this;\n };\n\n p.duplicateQueryParameters = function(v) {\n this._parts.duplicateQueryParameters = !!v;\n return this;\n };\n\n p.escapeQuerySpace = function(v) {\n this._parts.escapeQuerySpace = !!v;\n return this;\n };\n\n return URI;\n}));\n","/*! https://mths.be/punycode v1.4.0 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","// extracted by mini-css-extract-plugin\nexport default {};","export default function Worker_fn() {\n return new Worker(__webpack_public_path__ + \"static/js/mapbox-gl-csp-worker.2e4499cc.worker.js\");\n}\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any <Redirect>s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the <Router> is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n <RouterContext.Provider\n value={{\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }}\n >\n <HistoryContext.Provider\n children={this.props.children || null}\n value={this.props.history}\n />\n </RouterContext.Provider>\n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change <Router history>\"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Route> outside a <Router>\");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // <Switch> already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n <RouterContext.Provider value={props}>\n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n </RouterContext.Provider>\n );\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return <Router {...rest} history={history} staticContext={context} />;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two <Route>s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(Context).match;\n\n return path ? matchPath(location.pathname, path) : match;\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<HashRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return <a {...props} />;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Link> outside a <Router>\");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return <Link {...props} />;\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","const niceErrors = {\n 0: `Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,\n 1(annotationType, key: PropertyKey) {\n return `Cannot apply '${annotationType}' to '${key.toString()}': Field not found.`\n },\n /*\n 2(prop) {\n return `invalid decorator for '${prop.toString()}'`\n },\n 3(prop) {\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\n },\n 4(prop) {\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\n },\n */\n 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: `Invalid annotation`,\n 13: `Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: `Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,\n 16: `Modification exception: the internal structure of an observable array was changed.`,\n 17(index, length) {\n return `[mobx.array] Index out of bounds, ${index} is larger than ${length}`\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name\n },\n 20(other) {\n return \"Cannot initialize map from \" + other\n },\n 21(dataStructure) {\n return `Cannot convert to map from '${dataStructure}'`\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24(thing) {\n return \"Cannot obtain administration from \" + thing\n },\n 25(property, name) {\n return `the entry '${property}' does not exist in the observable map '${name}'`\n },\n 26: \"please specify a property\",\n 27(property, name) {\n return `no observable property '${property.toString()}' found on the observable object '${name}'`\n },\n 28(thing) {\n return \"Cannot obtain atom from \" + thing\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32(name, derivation) {\n return `Cycle detected in computation ${name}: ${derivation}`\n },\n 33(name) {\n return `The setter of computed value '${name}' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`\n },\n 34(name) {\n return `[ComputedValue '${name}'] It is not possible to assign a new value to a computed value.`\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37(method) {\n return `[mobx] \\`observableArray.${method}()\\` mutates the array in-place, which is not allowed inside a derivation. Use \\`array.slice().${method}()\\` instead`\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n} as const\n\nconst errors: typeof niceErrors = __DEV__ ? niceErrors : ({} as any)\n\nexport function die(error: string | keyof typeof errors, ...args: any[]): never {\n if (__DEV__) {\n let e: any = typeof error === \"string\" ? error : errors[error]\n if (typeof e === \"function\") e = e.apply(null, args as any)\n throw new Error(`[MobX] ${e}`)\n }\n throw new Error(\n typeof error === \"number\"\n ? `[MobX] minified error nr: ${error}${\n args.length ? \" \" + args.map(String).join(\",\") : \"\"\n }. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`\n : `[MobX] ${error}`\n )\n}\n","declare const window: any\ndeclare const self: any\n\nconst mockGlobal = {}\n\nexport function getGlobal() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis\n }\n if (typeof window !== \"undefined\") {\n return window\n }\n if (typeof global !== \"undefined\") {\n return global\n }\n if (typeof self !== \"undefined\") {\n return self\n }\n return mockGlobal\n}\n","import { globalState, die } from \"../internal\"\n\n// We shorten anything used > 5 times\nexport const assign = Object.assign\nexport const getDescriptor = Object.getOwnPropertyDescriptor\nexport const defineProperty = Object.defineProperty\nexport const objectPrototype = Object.prototype\n\nexport const EMPTY_ARRAY = []\nObject.freeze(EMPTY_ARRAY)\n\nexport const EMPTY_OBJECT = {}\nObject.freeze(EMPTY_OBJECT)\n\nexport interface Lambda {\n (): void\n name?: string\n}\n\nconst hasProxy = typeof Proxy !== \"undefined\"\nconst plainObjectString = Object.toString()\n\nexport function assertProxies() {\n if (!hasProxy) {\n die(\n __DEV__\n ? \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\"\n : \"Proxy not available\"\n )\n }\n}\n\nexport function warnAboutProxyRequirement(msg: string) {\n if (__DEV__ && globalState.verifyProxies) {\n die(\n \"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" +\n msg\n )\n }\n}\n\nexport function getNextId() {\n return ++globalState.mobxGuid\n}\n\n/**\n * Makes sure that the provided function is invoked at most once.\n */\nexport function once(func: Lambda): Lambda {\n let invoked = false\n return function () {\n if (invoked) {\n return\n }\n invoked = true\n return (func as any).apply(this, arguments)\n }\n}\n\nexport const noop = () => {}\n\nexport function isFunction(fn: any): fn is Function {\n return typeof fn === \"function\"\n}\n\nexport function isString(value: any): value is string {\n return typeof value === \"string\"\n}\n\nexport function isStringish(value: any): value is string | number | symbol {\n const t = typeof value\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true\n }\n return false\n}\n\nexport function isObject(value: any): value is Object {\n return value !== null && typeof value === \"object\"\n}\n\nexport function isPlainObject(value: any) {\n if (!isObject(value)) {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n if (proto == null) {\n return true\n }\n const protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n return (\n typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString\n )\n}\n\n// https://stackoverflow.com/a/37865170\nexport function isGenerator(obj: any): boolean {\n const constructor = obj?.constructor\n if (!constructor) {\n return false\n }\n if (\n \"GeneratorFunction\" === constructor.name ||\n \"GeneratorFunction\" === constructor.displayName\n ) {\n return true\n }\n return false\n}\n\nexport function addHiddenProp(object: any, propName: PropertyKey, value: any) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value\n })\n}\n\nexport function addHiddenFinalProp(object: any, propName: PropertyKey, value: any) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value\n })\n}\n\nexport function createInstanceofPredicate<T>(\n name: string,\n theClass: new (...args: any[]) => T\n): (x: any) => x is T {\n const propName = \"isMobX\" + name\n theClass.prototype[propName] = true\n return function (x) {\n return isObject(x) && x[propName] === true\n } as any\n}\n\nexport function isES6Map(thing: any): thing is Map<any, any> {\n return thing instanceof Map\n}\n\nexport function isES6Set(thing: any): thing is Set<any> {\n return thing instanceof Set\n}\n\nconst hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\"\n\n/**\n * Returns the following: own enumerable keys and symbols.\n */\nexport function getPlainObjectKeys(object: any) {\n const keys = Object.keys(object)\n // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) {\n return keys\n }\n const symbols = Object.getOwnPropertySymbols(object)\n if (!symbols.length) {\n return keys\n }\n return [...keys, ...symbols.filter(s => objectPrototype.propertyIsEnumerable.call(object, s))]\n}\n\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nexport const ownKeys: (target: any) => Array<string | symbol> =\n typeof Reflect !== \"undefined\" && Reflect.ownKeys\n ? Reflect.ownKeys\n : hasGetOwnPropertySymbols\n ? obj => Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj) as any)\n : /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport function stringifyKey(key: any): string {\n if (typeof key === \"string\") {\n return key\n }\n if (typeof key === \"symbol\") {\n return key.toString()\n }\n return new String(key).toString()\n}\n\nexport function toPrimitive(value: any) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value\n}\n\nexport function hasProp(target: Object, prop: PropertyKey): boolean {\n return objectPrototype.hasOwnProperty.call(target, prop)\n}\n\n// From Immer utils\nexport const getOwnPropertyDescriptors =\n Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(target: any) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n const res: any = {}\n // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(key => {\n res[key] = getDescriptor(target, key)\n })\n return res\n }\n","import { Annotation, addHiddenProp, AnnotationsMap, hasProp, die, isOverride } from \"../internal\"\n\nexport const storedAnnotationsSymbol = Symbol(\"mobx-stored-annotations\")\n\n/**\n * Creates a function that acts as\n * - decorator\n * - annotation object\n */\nexport function createDecoratorAnnotation(annotation: Annotation): PropertyDecorator & Annotation {\n function decorator(target, property) {\n storeAnnotation(target, property, annotation)\n }\n return Object.assign(decorator, annotation)\n}\n\n/**\n * Stores annotation to prototype,\n * so it can be inspected later by `makeObservable` called from constructor\n */\nexport function storeAnnotation(prototype: any, key: PropertyKey, annotation: Annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, {\n // Inherit annotations\n ...prototype[storedAnnotationsSymbol]\n })\n }\n // @override must override something\n if (__DEV__ && isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n die(\n `'${fieldName}' is decorated with 'override', ` +\n `but no such decorated member was found on prototype.`\n )\n }\n // Cannot re-decorate\n assertNotDecorated(prototype, annotation, key)\n\n // Ignore override\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation\n }\n}\n\nfunction assertNotDecorated(prototype: object, annotation: Annotation, key: PropertyKey) {\n if (__DEV__ && !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n const currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_\n const requestedAnnotationType = annotation.annotationType_\n die(\n `Cannot apply '@${requestedAnnotationType}' to '${fieldName}':` +\n `\\nThe field is already decorated with '@${currentAnnotationType}'.` +\n `\\nRe-decorating fields is not allowed.` +\n `\\nUse '@override' decorator for methods overridden by subclass.`\n )\n }\n}\n\n/**\n * Collects annotations from prototypes and stores them on target (instance)\n */\nexport function collectStoredAnnotations(target): AnnotationsMap<any, any> {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n if (__DEV__ && !target[storedAnnotationsSymbol]) {\n die(\n `No annotations were passed to makeObservable, but no decorated members have been found either`\n )\n }\n // We need a copy as we will remove annotation from the list once it's applied.\n addHiddenProp(target, storedAnnotationsSymbol, { ...target[storedAnnotationsSymbol] })\n }\n return target[storedAnnotationsSymbol]\n}\n","import {\n die,\n Annotation,\n hasProp,\n createDecoratorAnnotation,\n ObservableObjectAdministration,\n MakeResult\n} from \"../internal\"\n\nconst OVERRIDE = \"override\"\n\nexport const override: Annotation & PropertyDecorator = createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_,\n extend_\n})\n\nexport function isOverride(annotation: Annotation): boolean {\n return annotation.annotationType_ === OVERRIDE\n}\n\nfunction make_(adm: ObservableObjectAdministration, key): MakeResult {\n // Must not be plain object\n if (__DEV__ && adm.isPlainObject_) {\n die(\n `Cannot apply '${this.annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${this.annotationType_}' cannot be used on plain objects.`\n )\n }\n // Must override something\n if (__DEV__ && !hasProp(adm.appliedAnnotations_!, key)) {\n die(\n `'${adm.name_}.${key.toString()}' is annotated with '${this.annotationType_}', ` +\n `but no such annotated member was found on prototype.`\n )\n }\n return MakeResult.Cancel\n}\n\nfunction extend_(adm, key, descriptor, proxyTrap): boolean {\n die(`'${this.annotationType_}' can only be used with 'makeObservable'`)\n}\n","import {\n IDerivationState_,\n IObservable,\n IDerivation,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n noop,\n onBecomeObserved,\n onBecomeUnobserved,\n propagateChanged,\n reportObserved,\n startBatch,\n Lambda,\n globalState\n} from \"../internal\"\n\nexport const $mobx = Symbol(\"mobx administration\")\n\nexport interface IAtom extends IObservable {\n reportObserved(): boolean\n reportChanged()\n}\n\nexport class Atom implements IAtom {\n isPendingUnobservation_ = false // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n isBeingObserved_ = false\n observers_ = new Set<IDerivation>()\n\n diffValue_ = 0\n lastAccessedBy_ = 0\n lowestObserverState_ = IDerivationState_.NOT_TRACKING_\n /**\n * Create a new atom. For debugging purposes it is recommended to give it a name.\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\n */\n constructor(public name_ = __DEV__ ? \"Atom@\" + getNextId() : \"Atom\") {}\n\n // onBecomeObservedListeners\n public onBOL: Set<Lambda> | undefined\n // onBecomeUnobservedListeners\n public onBUOL: Set<Lambda> | undefined\n\n public onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(listener => listener())\n }\n }\n\n public onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(listener => listener())\n }\n }\n\n /**\n * Invoke this method to notify mobx that your atom has been used somehow.\n * Returns true if there is currently a reactive context.\n */\n public reportObserved(): boolean {\n return reportObserved(this)\n }\n\n /**\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\n */\n public reportChanged() {\n startBatch()\n propagateChanged(this)\n // We could update state version only at the end of batch,\n // but we would still have to switch some global flag here to signal a change.\n globalState.stateVersion =\n globalState.stateVersion < Number.MAX_SAFE_INTEGER\n ? globalState.stateVersion + 1\n : Number.MIN_SAFE_INTEGER\n endBatch()\n }\n\n toString() {\n return this.name_\n }\n}\n\nexport const isAtom = createInstanceofPredicate(\"Atom\", Atom)\n\nexport function createAtom(\n name: string,\n onBecomeObservedHandler: () => void = noop,\n onBecomeUnobservedHandler: () => void = noop\n): IAtom {\n const atom = new Atom(name)\n // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler)\n }\n\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler)\n }\n return atom\n}\n","import {\n IComputedValue,\n IObservable,\n IObservableArray,\n Lambda,\n ObservableMap,\n getAtom,\n ObservableSet,\n isFunction,\n IObservableValue\n} from \"../internal\"\n\nconst ON_BECOME_OBSERVED = \"onBO\"\nconst ON_BECOME_UNOBSERVED = \"onBUO\"\n\nexport function onBecomeObserved(\n value:\n | IObservable\n | IComputedValue<any>\n | IObservableArray<any>\n | ObservableMap<any, any>\n | ObservableSet<any>\n | IObservableValue<any>,\n listener: Lambda\n): Lambda\nexport function onBecomeObserved<K, V = any>(\n value: ObservableMap<K, V> | Object,\n property: K,\n listener: Lambda\n): Lambda\nexport function onBecomeObserved(thing, arg2, arg3?): Lambda {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3)\n}\n\nexport function onBecomeUnobserved(\n value:\n | IObservable\n | IComputedValue<any>\n | IObservableArray<any>\n | ObservableMap<any, any>\n | ObservableSet<any>\n | IObservableValue<any>,\n listener: Lambda\n): Lambda\nexport function onBecomeUnobserved<K, V = any>(\n value: ObservableMap<K, V> | Object,\n property: K,\n listener: Lambda\n): Lambda\nexport function onBecomeUnobserved(thing, arg2, arg3?): Lambda {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3)\n}\n\nfunction interceptHook(hook: \"onBO\" | \"onBUO\", thing, arg2, arg3) {\n const atom: IObservable =\n typeof arg3 === \"function\" ? getAtom(thing, arg2) : (getAtom(thing) as any)\n const cb = isFunction(arg3) ? arg3 : arg2\n const listenersKey = `${hook}L` as \"onBOL\" | \"onBUOL\"\n\n if (atom[listenersKey]) {\n atom[listenersKey]!.add(cb)\n } else {\n atom[listenersKey] = new Set<Lambda>([cb])\n }\n\n return function () {\n const hookListeners = atom[listenersKey]\n if (hookListeners) {\n hookListeners.delete(cb)\n if (hookListeners.size === 0) {\n delete atom[listenersKey]\n }\n }\n }\n}\n","import { deepEqual } from \"../internal\"\n\nexport interface IEqualsComparer<T> {\n (a: T, b: T): boolean\n}\n\nfunction identityComparer(a: any, b: any): boolean {\n return a === b\n}\n\nfunction structuralComparer(a: any, b: any): boolean {\n return deepEqual(a, b)\n}\n\nfunction shallowComparer(a: any, b: any): boolean {\n return deepEqual(a, b, 1)\n}\n\nfunction defaultComparer(a: any, b: any): boolean {\n if (Object.is) {\n return Object.is(a, b)\n }\n\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b\n}\n\nexport const comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n default: defaultComparer,\n shallow: shallowComparer\n}\n","import {\n deepEqual,\n isES6Map,\n isES6Set,\n isObservable,\n isObservableArray,\n isObservableMap,\n isObservableSet,\n isObservableObject,\n isPlainObject,\n observable,\n die,\n isAction,\n autoAction,\n flow,\n isFlow,\n isGenerator\n} from \"../internal\"\n\nexport interface IEnhancer<T> {\n (newValue: T, oldValue: T | undefined, name: string): T\n}\n\nexport function deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) {\n return v\n }\n\n // something that can be converted and mutated?\n if (Array.isArray(v)) {\n return observable.array(v, { name })\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, { name })\n }\n if (isES6Map(v)) {\n return observable.map(v, { name })\n }\n if (isES6Set(v)) {\n return observable.set(v, { name })\n }\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v)\n } else {\n return autoAction(name, v)\n }\n }\n return v\n}\n\nexport function shallowEnhancer(v, _, name): any {\n if (v === undefined || v === null) {\n return v\n }\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n return v\n }\n if (Array.isArray(v)) {\n return observable.array(v, { name, deep: false })\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, { name, deep: false })\n }\n if (isES6Map(v)) {\n return observable.map(v, { name, deep: false })\n }\n if (isES6Set(v)) {\n return observable.set(v, { name, deep: false })\n }\n\n if (__DEV__) {\n die(\n \"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\"\n )\n }\n}\n\nexport function referenceEnhancer(newValue?) {\n // never turn into an observable\n return newValue\n}\n\nexport function refStructEnhancer(v, oldValue): any {\n if (__DEV__ && isObservable(v)) {\n die(`observable.struct should not be used with observable values`)\n }\n if (deepEqual(v, oldValue)) {\n return oldValue\n }\n return v\n}\n","import {\n ObservableObjectAdministration,\n createAction,\n isAction,\n defineProperty,\n die,\n isFunction,\n Annotation,\n globalState,\n MakeResult\n} from \"../internal\"\n\nexport function createActionAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // bound\n if (this.options_?.bound) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Break\n }\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // prototype\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return MakeResult.Break\n }\n const actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false)\n defineProperty(source, key, actionDescriptor)\n return MakeResult.Continue\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n const actionDescriptor = createActionDescriptor(adm, this, key, descriptor)\n return adm.defineProperty_(key, actionDescriptor, proxyTrap)\n}\n\nfunction assertActionDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { value }: PropertyDescriptor\n) {\n if (__DEV__ && !isFunction(value)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on properties with a function value.`\n )\n }\n}\n\nexport function createActionDescriptor(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n // provides ability to disable safeDescriptors for prototypes\n safeDescriptors: boolean = globalState.safeDescriptors\n) {\n assertActionDescriptor(adm, annotation, key, descriptor)\n let { value } = descriptor\n if (annotation.options_?.bound) {\n value = value.bind(adm.proxy_ ?? adm.target_)\n }\n return {\n value: createAction(\n annotation.options_?.name ?? key.toString(),\n value,\n annotation.options_?.autoAction ?? false,\n // https://github.com/mobxjs/mobx/discussions/3140\n annotation.options_?.bound ? adm.proxy_ ?? adm.target_ : undefined\n ),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n }\n}\n","import {\n ObservableObjectAdministration,\n Annotation,\n defineProperty,\n die,\n flow,\n isFlow,\n isFunction,\n globalState,\n MakeResult,\n hasProp\n} from \"../internal\"\n\nexport function createFlowAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // prototype\n // bound - must annotate protos to support super.flow()\n if (this.options_?.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n if (this.extend_(adm, key, descriptor, false) === null) {\n return MakeResult.Cancel\n }\n }\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return MakeResult.Break\n }\n const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false)\n defineProperty(source, key, flowDescriptor)\n return MakeResult.Continue\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, this.options_?.bound)\n return adm.defineProperty_(key, flowDescriptor, proxyTrap)\n}\n\nfunction assertFlowDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { value }: PropertyDescriptor\n) {\n if (__DEV__ && !isFunction(value)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on properties with a generator function value.`\n )\n }\n}\n\nfunction createFlowDescriptor(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n bound: boolean,\n // provides ability to disable safeDescriptors for prototypes\n safeDescriptors: boolean = globalState.safeDescriptors\n): PropertyDescriptor {\n assertFlowDescriptor(adm, annotation, key, descriptor)\n let { value } = descriptor\n // In case of flow.bound, the descriptor can be from already annotated prototype\n if (!isFlow(value)) {\n value = flow(value)\n }\n if (bound) {\n // We do not keep original function around, so we bind the existing flow\n value = value.bind(adm.proxy_ ?? adm.target_)\n // This is normally set by `flow`, but `bind` returns new function...\n value.isMobXFlow = true\n }\n return {\n value,\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n }\n}\n","import { ObservableObjectAdministration, die, Annotation, MakeResult } from \"../internal\"\n\nexport function createComputedAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n): MakeResult {\n return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n assertComputedDescriptor(adm, this, key, descriptor)\n return adm.defineComputedProperty_(\n key,\n {\n ...this.options_,\n get: descriptor.get,\n set: descriptor.set\n },\n proxyTrap\n )\n}\n\nfunction assertComputedDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { get }: PropertyDescriptor\n) {\n if (__DEV__ && !get) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on getter(+setter) properties.`\n )\n }\n}\n","import {\n ObservableObjectAdministration,\n deepEnhancer,\n die,\n Annotation,\n MakeResult\n} from \"../internal\"\n\nexport function createObservableAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n): MakeResult {\n return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n assertObservableDescriptor(adm, this, key, descriptor)\n return adm.defineObservableProperty_(\n key,\n descriptor.value,\n this.options_?.enhancer ?? deepEnhancer,\n proxyTrap\n )\n}\n\nfunction assertObservableDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n) {\n if (__DEV__ && !(\"value\" in descriptor)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' cannot be used on getter/setter properties`\n )\n }\n}\n","import {\n ObservableObjectAdministration,\n observable,\n Annotation,\n defineProperty,\n createAction,\n globalState,\n flow,\n computed,\n autoAction,\n isGenerator,\n MakeResult\n} from \"../internal\"\n\nconst AUTO = \"true\"\n\nexport const autoAnnotation: Annotation = createAutoAnnotation()\n\nexport function createAutoAnnotation(options?: object): Annotation {\n return {\n annotationType_: AUTO,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source)\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n const set = createAction(key.toString(), descriptor.set) as (v: any) => void\n // own\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set\n }) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // proto\n defineProperty(source, key, {\n configurable: true,\n set\n })\n return MakeResult.Continue\n }\n // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n if (isGenerator(descriptor.value)) {\n const flowAnnotation = this.options_?.autoBind ? flow.bound : flow\n return flowAnnotation.make_(adm, key, descriptor, source)\n }\n const actionAnnotation = this.options_?.autoBind ? autoAction.bound : autoAction\n return actionAnnotation.make_(adm, key, descriptor, source)\n }\n // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n }\n return observableAnnotation.make_(adm, key, descriptor, source)\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap)\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(\n key,\n {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set) as (v: any) => void\n },\n proxyTrap\n )\n }\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n }\n let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap)\n}\n","import {\n IEnhancer,\n IEqualsComparer,\n IObservableArray,\n IObservableMapInitialValues,\n IObservableSetInitialValues,\n IObservableValue,\n ObservableMap,\n ObservableSet,\n ObservableValue,\n asDynamicObservableObject,\n createObservableArray,\n deepEnhancer,\n extendObservable,\n isES6Map,\n isES6Set,\n isObservable,\n isPlainObject,\n referenceEnhancer,\n Annotation,\n shallowEnhancer,\n refStructEnhancer,\n AnnotationsMap,\n asObservableObject,\n storeAnnotation,\n createDecoratorAnnotation,\n createLegacyArray,\n globalState,\n assign,\n isStringish,\n createObservableAnnotation,\n createAutoAnnotation\n} from \"../internal\"\n\nexport const OBSERVABLE = \"observable\"\nexport const OBSERVABLE_REF = \"observable.ref\"\nexport const OBSERVABLE_SHALLOW = \"observable.shallow\"\nexport const OBSERVABLE_STRUCT = \"observable.struct\"\n\nexport type CreateObservableOptions = {\n name?: string\n equals?: IEqualsComparer<any>\n deep?: boolean\n defaultDecorator?: Annotation\n proxy?: boolean\n autoBind?: boolean\n}\n\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nexport const defaultCreateObservableOptions: CreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n}\nObject.freeze(defaultCreateObservableOptions)\n\nexport function asCreateObservableOptions(thing: any): CreateObservableOptions {\n return thing || defaultCreateObservableOptions\n}\n\nconst observableAnnotation = createObservableAnnotation(OBSERVABLE)\nconst observableRefAnnotation = createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n})\nconst observableShallowAnnotation = createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n})\nconst observableStructAnnotation = createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n})\nconst observableDecoratorAnnotation = createDecoratorAnnotation(observableAnnotation)\n\nexport function getEnhancerFromOptions(options: CreateObservableOptions): IEnhancer<any> {\n return options.deep === true\n ? deepEnhancer\n : options.deep === false\n ? referenceEnhancer\n : getEnhancerFromAnnotation(options.defaultDecorator)\n}\n\nexport function getAnnotationFromOptions(\n options?: CreateObservableOptions\n): Annotation | undefined {\n return options ? options.defaultDecorator ?? createAutoAnnotation(options) : undefined\n}\n\nexport function getEnhancerFromAnnotation(annotation?: Annotation): IEnhancer<any> {\n return !annotation ? deepEnhancer : annotation.options_?.enhancer ?? deepEnhancer\n}\n\n/**\n * Turns an object, array or function into a reactive structure.\n * @param v the value which should become observable.\n */\nfunction createObservable(v: any, arg2?: any, arg3?: any) {\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation)\n return\n }\n\n // already observable - ignore\n if (isObservable(v)) {\n return v\n }\n\n // plain object\n if (isPlainObject(v)) {\n return observable.object(v, arg2, arg3)\n }\n\n // Array\n if (Array.isArray(v)) {\n return observable.array(v, arg2)\n }\n\n // Map\n if (isES6Map(v)) {\n return observable.map(v, arg2)\n }\n\n // Set\n if (isES6Set(v)) {\n return observable.set(v, arg2)\n }\n\n // other object - ignore\n if (typeof v === \"object\" && v !== null) {\n return v\n }\n\n // anything else\n return observable.box(v, arg2)\n}\nassign(createObservable, observableDecoratorAnnotation)\n\nexport interface IObservableValueFactory {\n <T>(value: T, options?: CreateObservableOptions): IObservableValue<T>\n <T>(value?: T, options?: CreateObservableOptions): IObservableValue<T | undefined>\n}\n\nexport interface IObservableFactory extends Annotation, PropertyDecorator {\n <T = any>(value: T[], options?: CreateObservableOptions): IObservableArray<T>\n <T = any>(value: Set<T>, options?: CreateObservableOptions): ObservableSet<T>\n <K = any, V = any>(value: Map<K, V>, options?: CreateObservableOptions): ObservableMap<K, V>\n <T extends object>(\n value: T,\n decorators?: AnnotationsMap<T, never>,\n options?: CreateObservableOptions\n ): T\n\n box: IObservableValueFactory\n array: <T = any>(initialValues?: T[], options?: CreateObservableOptions) => IObservableArray<T>\n set: <T = any>(\n initialValues?: IObservableSetInitialValues<T>,\n options?: CreateObservableOptions\n ) => ObservableSet<T>\n map: <K = any, V = any>(\n initialValues?: IObservableMapInitialValues<K, V>,\n options?: CreateObservableOptions\n ) => ObservableMap<K, V>\n object: <T = any>(\n props: T,\n decorators?: AnnotationsMap<T, never>,\n options?: CreateObservableOptions\n ) => T\n\n /**\n * Decorator that creates an observable that only observes the references, but doesn't try to turn the assigned value into an observable.ts.\n */\n ref: Annotation & PropertyDecorator\n /**\n * Decorator that creates an observable converts its value (objects, maps or arrays) into a shallow observable structure\n */\n shallow: Annotation & PropertyDecorator\n deep: Annotation & PropertyDecorator\n struct: Annotation & PropertyDecorator\n}\n\nconst observableFactories: IObservableFactory = {\n box<T = any>(value: T, options?: CreateObservableOptions): IObservableValue<T> {\n const o = asCreateObservableOptions(options)\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals)\n },\n array<T = any>(initialValues?: T[], options?: CreateObservableOptions): IObservableArray<T> {\n const o = asCreateObservableOptions(options)\n return (\n globalState.useProxies === false || o.proxy === false\n ? createLegacyArray\n : createObservableArray\n )(initialValues, getEnhancerFromOptions(o), o.name)\n },\n map<K = any, V = any>(\n initialValues?: IObservableMapInitialValues<K, V>,\n options?: CreateObservableOptions\n ): ObservableMap<K, V> {\n const o = asCreateObservableOptions(options)\n return new ObservableMap<K, V>(initialValues, getEnhancerFromOptions(o), o.name)\n },\n set<T = any>(\n initialValues?: IObservableSetInitialValues<T>,\n options?: CreateObservableOptions\n ): ObservableSet<T> {\n const o = asCreateObservableOptions(options)\n return new ObservableSet<T>(initialValues, getEnhancerFromOptions(o), o.name)\n },\n object<T extends object = any>(\n props: T,\n decorators?: AnnotationsMap<T, never>,\n options?: CreateObservableOptions\n ): T {\n return extendObservable(\n globalState.useProxies === false || options?.proxy === false\n ? asObservableObject({}, options)\n : asDynamicObservableObject({}, options),\n props,\n decorators\n )\n },\n ref: createDecoratorAnnotation(observableRefAnnotation),\n shallow: createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: createDecoratorAnnotation(observableStructAnnotation)\n} as any\n\n// eslint-disable-next-line\nexport var observable: IObservableFactory = assign(createObservable, observableFactories)\n","import {\n $mobx,\n IIsObservableObject,\n ObservableObjectAdministration,\n warnAboutProxyRequirement,\n assertProxies,\n die,\n isStringish,\n globalState,\n CreateObservableOptions,\n asObservableObject\n} from \"../internal\"\n\nfunction getAdm(target): ObservableObjectAdministration {\n return target[$mobx]\n}\n\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nconst objectProxyTraps: ProxyHandler<any> = {\n has(target: IIsObservableObject, name: PropertyKey): boolean {\n if (__DEV__ && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\n \"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\"\n )\n }\n return getAdm(target).has_(name)\n },\n get(target: IIsObservableObject, name: PropertyKey): any {\n return getAdm(target).get_(name)\n },\n set(target: IIsObservableObject, name: PropertyKey, value: any): boolean {\n if (!isStringish(name)) {\n return false\n }\n if (__DEV__ && !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\n \"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\"\n )\n }\n // null (intercepted) -> true (success)\n return getAdm(target).set_(name, value, true) ?? true\n },\n deleteProperty(target: IIsObservableObject, name: PropertyKey): boolean {\n if (__DEV__) {\n warnAboutProxyRequirement(\n \"delete properties from an observable object. Use 'remove' from 'mobx' instead.\"\n )\n }\n if (!isStringish(name)) {\n return false\n }\n // null (intercepted) -> true (success)\n return getAdm(target).delete_(name, true) ?? true\n },\n defineProperty(\n target: IIsObservableObject,\n name: PropertyKey,\n descriptor: PropertyDescriptor\n ): boolean {\n if (__DEV__) {\n warnAboutProxyRequirement(\n \"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\"\n )\n }\n // null (intercepted) -> true (success)\n return getAdm(target).defineProperty_(name, descriptor) ?? true\n },\n ownKeys(target: IIsObservableObject): ArrayLike<string | symbol> {\n if (__DEV__ && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\n \"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\"\n )\n }\n return getAdm(target).ownKeys_()\n },\n preventExtensions(target) {\n die(13)\n }\n}\n\nexport function asDynamicObservableObject(\n target: any,\n options?: CreateObservableOptions\n): IIsObservableObject {\n assertProxies()\n target = asObservableObject(target, options)\n return (target[$mobx].proxy_ ??= new Proxy(target, objectProxyTraps))\n}\n","import {\n ComputedValue,\n IComputedValueOptions,\n Annotation,\n storeAnnotation,\n createDecoratorAnnotation,\n isStringish,\n isPlainObject,\n isFunction,\n die,\n IComputedValue,\n createComputedAnnotation,\n comparer\n} from \"../internal\"\n\nexport const COMPUTED = \"computed\"\nexport const COMPUTED_STRUCT = \"computed.struct\"\n\nexport interface IComputedFactory extends Annotation, PropertyDecorator {\n // @computed(opts)\n <T>(options: IComputedValueOptions<T>): Annotation & PropertyDecorator\n // computed(fn, opts)\n <T>(func: () => T, options?: IComputedValueOptions<T>): IComputedValue<T>\n\n struct: Annotation & PropertyDecorator\n}\n\nconst computedAnnotation = createComputedAnnotation(COMPUTED)\nconst computedStructAnnotation = createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n})\n\n/**\n * Decorator for class properties: @computed get value() { return expr; }.\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\n */\nexport const computed: IComputedFactory = function computed(arg1, arg2) {\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation)\n }\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1))\n }\n\n // computed(expr, options?)\n if (__DEV__) {\n if (!isFunction(arg1)) {\n die(\"First argument to `computed` should be an expression.\")\n }\n if (isFunction(arg2)) {\n die(\n \"A setter as second argument is no longer supported, use `{ set: fn }` option instead\"\n )\n }\n }\n const opts: IComputedValueOptions<any> = isPlainObject(arg2) ? arg2 : {}\n opts.get = arg1\n opts.name ||= arg1.name || \"\" /* for generated name */\n\n return new ComputedValue(opts)\n} as any\n\nObject.assign(computed, computedAnnotation)\n\ncomputed.struct = createDecoratorAnnotation(computedStructAnnotation)\n","import {\n IDerivation,\n endBatch,\n globalState,\n isSpyEnabled,\n spyReportEnd,\n spyReportStart,\n startBatch,\n untrackedEnd,\n untrackedStart,\n isFunction,\n allowStateReadsStart,\n allowStateReadsEnd,\n ACTION,\n EMPTY_ARRAY,\n die,\n getDescriptor,\n defineProperty\n} from \"../internal\"\n\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nlet currentActionId = 0\nlet nextActionId = 1\nconst isFunctionNameConfigurable = getDescriptor(() => {}, \"name\")?.configurable ?? false\n\n// we can safely recycle this object\nconst tmpNameDescriptor: PropertyDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n}\n\nexport function createAction(\n actionName: string,\n fn: Function,\n autoAction: boolean = false,\n ref?: Object\n): Function {\n if (__DEV__) {\n if (!isFunction(fn)) {\n die(\"`action` can only be invoked on functions\")\n }\n if (typeof actionName !== \"string\" || !actionName) {\n die(`actions should have valid names, got: '${actionName}'`)\n }\n }\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments)\n }\n res.isMobxAction = true\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName\n defineProperty(res, \"name\", tmpNameDescriptor)\n }\n return res\n}\n\nexport function executeAction(\n actionName: string,\n canRunAsDerivation: boolean,\n fn: Function,\n scope?: any,\n args?: IArguments\n) {\n const runInfo = _startAction(actionName, canRunAsDerivation, scope, args)\n try {\n return fn.apply(scope, args)\n } catch (err) {\n runInfo.error_ = err\n throw err\n } finally {\n _endAction(runInfo)\n }\n}\n\nexport interface IActionRunInfo {\n prevDerivation_: IDerivation | null\n prevAllowStateChanges_: boolean\n prevAllowStateReads_: boolean\n notifySpy_: boolean\n startTime_: number\n error_?: any\n parentActionId_: number\n actionId_: number\n runAsAction_?: boolean\n}\n\nexport function _startAction(\n actionName: string,\n canRunAsDerivation: boolean, // true for autoAction\n scope: any,\n args?: IArguments\n): IActionRunInfo {\n const notifySpy_ = __DEV__ && isSpyEnabled() && !!actionName\n let startTime_: number = 0\n if (__DEV__ && notifySpy_) {\n startTime_ = Date.now()\n const flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n })\n }\n const prevDerivation_ = globalState.trackingDerivation\n const runAsAction = !canRunAsDerivation || !prevDerivation_\n startBatch()\n let prevAllowStateChanges_ = globalState.allowStateChanges // by default preserve previous allow\n if (runAsAction) {\n untrackedStart()\n prevAllowStateChanges_ = allowStateChangesStart(true)\n }\n const prevAllowStateReads_ = allowStateReadsStart(true)\n const runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_,\n prevAllowStateChanges_,\n prevAllowStateReads_,\n notifySpy_,\n startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n }\n currentActionId = runInfo.actionId_\n return runInfo\n}\n\nexport function _endAction(runInfo: IActionRunInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30)\n }\n currentActionId = runInfo.parentActionId_\n\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges_)\n allowStateReadsEnd(runInfo.prevAllowStateReads_)\n endBatch()\n if (runInfo.runAsAction_) {\n untrackedEnd(runInfo.prevDerivation_)\n }\n if (__DEV__ && runInfo.notifySpy_) {\n spyReportEnd({ time: Date.now() - runInfo.startTime_ })\n }\n globalState.suppressReactionErrors = false\n}\n\nexport function allowStateChanges<T>(allowStateChanges: boolean, func: () => T): T {\n const prev = allowStateChangesStart(allowStateChanges)\n try {\n return func()\n } finally {\n allowStateChangesEnd(prev)\n }\n}\n\nexport function allowStateChangesStart(allowStateChanges: boolean) {\n const prev = globalState.allowStateChanges\n globalState.allowStateChanges = allowStateChanges\n return prev\n}\n\nexport function allowStateChangesEnd(prev: boolean) {\n globalState.allowStateChanges = prev\n}\n","import {\n Atom,\n IEnhancer,\n IInterceptable,\n IEqualsComparer,\n IInterceptor,\n IListenable,\n Lambda,\n checkIfStateModificationsAreAllowed,\n comparer,\n createInstanceofPredicate,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isSpyEnabled,\n notifyListeners,\n registerInterceptor,\n registerListener,\n spyReport,\n spyReportEnd,\n spyReportStart,\n toPrimitive,\n globalState,\n IUNCHANGED,\n UPDATE\n} from \"../internal\"\n\nexport interface IValueWillChange<T> {\n object: IObservableValue<T>\n type: \"update\"\n newValue: T\n}\n\nexport type IValueDidChange<T = any> = {\n type: \"update\"\n observableKind: \"value\"\n object: IObservableValue<T>\n debugObjectName: string\n newValue: T\n oldValue: T | undefined\n}\nexport type IBoxDidChange<T = any> =\n | {\n type: \"create\"\n observableKind: \"value\"\n object: IObservableValue<T>\n debugObjectName: string\n newValue: T\n }\n | IValueDidChange<T>\n\nexport interface IObservableValue<T> {\n get(): T\n set(value: T): void\n}\n\nconst CREATE = \"create\"\n\nexport class ObservableValue<T>\n extends Atom\n implements IObservableValue<T>, IInterceptable<IValueWillChange<T>>, IListenable\n{\n hasUnreportedChange_ = false\n interceptors_\n changeListeners_\n value_\n dehancer: any\n\n constructor(\n value: T,\n public enhancer: IEnhancer<T>,\n public name_ = __DEV__ ? \"ObservableValue@\" + getNextId() : \"ObservableValue\",\n notifySpy = true,\n private equals: IEqualsComparer<any> = comparer.default\n ) {\n super(name_)\n this.value_ = enhancer(value, undefined, name_)\n if (__DEV__ && notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: \"\" + this.value_\n })\n }\n }\n\n private dehanceValue(value: T): T {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n public set(newValue: T) {\n const oldValue = this.value_\n newValue = this.prepareNewValue_(newValue) as any\n if (newValue !== globalState.UNCHANGED) {\n const notifySpy = isSpyEnabled()\n if (__DEV__ && notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue,\n oldValue\n })\n }\n this.setNewValue_(newValue)\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n }\n\n private prepareNewValue_(newValue): T | IUNCHANGED {\n checkIfStateModificationsAreAllowed(this)\n if (hasInterceptors(this)) {\n const change = interceptChange<IValueWillChange<T>>(this, {\n object: this,\n type: UPDATE,\n newValue\n })\n if (!change) {\n return globalState.UNCHANGED\n }\n newValue = change.newValue\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_)\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue\n }\n\n setNewValue_(newValue: T) {\n const oldValue = this.value_\n this.value_ = newValue\n this.reportChanged()\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue,\n oldValue\n })\n }\n }\n\n public get(): T {\n this.reportObserved()\n return this.dehanceValue(this.value_)\n }\n\n intercept_(handler: IInterceptor<IValueWillChange<T>>): Lambda {\n return registerInterceptor(this, handler)\n }\n\n observe_(listener: (change: IValueDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n if (fireImmediately) {\n listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n })\n }\n return registerListener(this, listener)\n }\n\n raw() {\n // used by MST ot get undehanced value\n return this.value_\n }\n\n toJSON() {\n return this.get()\n }\n\n toString() {\n return `${this.name_}[${this.value_}]`\n }\n\n valueOf(): T {\n return toPrimitive(this.get())\n }\n\n [Symbol.toPrimitive]() {\n return this.valueOf()\n }\n}\n\nexport const isObservableValue = createInstanceofPredicate(\"ObservableValue\", ObservableValue) as (\n x: any\n) => x is IObservableValue<any>\n","import {\n CaughtException,\n IDerivation,\n IDerivationState_,\n IEqualsComparer,\n IObservable,\n Lambda,\n TraceMode,\n autorun,\n clearObserving,\n comparer,\n createAction,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n globalState,\n isCaughtException,\n isSpyEnabled,\n propagateChangeConfirmed,\n propagateMaybeChanged,\n reportObserved,\n shouldCompute,\n spyReport,\n startBatch,\n toPrimitive,\n trackDerivedFunction,\n untrackedEnd,\n untrackedStart,\n UPDATE,\n die,\n allowStateChangesStart,\n allowStateChangesEnd\n} from \"../internal\"\n\nexport interface IComputedValue<T> {\n get(): T\n set(value: T): void\n}\n\nexport interface IComputedValueOptions<T> {\n get?: () => T\n set?: (value: T) => void\n name?: string\n equals?: IEqualsComparer<T>\n context?: any\n requiresReaction?: boolean\n keepAlive?: boolean\n}\n\nexport type IComputedDidChange<T = any> = {\n type: \"update\"\n observableKind: \"computed\"\n object: unknown\n debugObjectName: string\n newValue: T\n oldValue: T | undefined\n}\n\n/**\n * A node in the state dependency root that observes other nodes, and can be observed itself.\n *\n * ComputedValue will remember the result of the computation for the duration of the batch, or\n * while being observed.\n *\n * During this time it will recompute only when one of its direct dependencies changed,\n * but only when it is being accessed with `ComputedValue.get()`.\n *\n * Implementation description:\n * 1. First time it's being accessed it will compute and remember result\n * give back remembered result until 2. happens\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\n * 3. When it's being accessed, recompute if any shallow dependency changed.\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\n * go to step 2. either way\n *\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\n */\nexport class ComputedValue<T> implements IObservable, IComputedValue<T>, IDerivation {\n dependenciesState_ = IDerivationState_.NOT_TRACKING_\n observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n newObserving_ = null // during tracking it's an array with new observed observers\n isBeingObserved_ = false\n isPendingUnobservation_: boolean = false\n observers_ = new Set<IDerivation>()\n diffValue_ = 0\n runId_ = 0\n lastAccessedBy_ = 0\n lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n unboundDepsCount_ = 0\n protected value_: T | undefined | CaughtException = new CaughtException(null)\n name_: string\n triggeredBy_?: string\n isComputing_: boolean = false // to check for cycles\n isRunningSetter_: boolean = false\n derivation: () => T // N.B: unminified as it is used by MST\n setter_?: (value: T) => void\n isTracing_: TraceMode = TraceMode.NONE\n scope_: Object | undefined\n private equals_: IEqualsComparer<any>\n private requiresReaction_: boolean | undefined\n keepAlive_: boolean\n\n /**\n * Create a new computed value based on a function expression.\n *\n * The `name` property is for debug purposes only.\n *\n * The `equals` property specifies the comparer function to use to determine if a newly produced\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\n * Structural comparison can be convenient if you always produce a new aggregated object and\n * don't want to notify observers if it is structurally the same.\n * This is useful for working with vectors, mouse coordinates etc.\n */\n constructor(options: IComputedValueOptions<T>) {\n if (!options.get) {\n die(31)\n }\n this.derivation = options.get!\n this.name_ = options.name || (__DEV__ ? \"ComputedValue@\" + getNextId() : \"ComputedValue\")\n if (options.set) {\n this.setter_ = createAction(\n __DEV__ ? this.name_ + \"-setter\" : \"ComputedValue-setter\",\n options.set\n ) as any\n }\n this.equals_ =\n options.equals ||\n ((options as any).compareStructural || (options as any).struct\n ? comparer.structural\n : comparer.default)\n this.scope_ = options.context\n this.requiresReaction_ = options.requiresReaction\n this.keepAlive_ = !!options.keepAlive\n }\n\n onBecomeStale_() {\n propagateMaybeChanged(this)\n }\n\n public onBOL: Set<Lambda> | undefined\n public onBUOL: Set<Lambda> | undefined\n\n public onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(listener => listener())\n }\n }\n\n public onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(listener => listener())\n }\n }\n\n /**\n * Returns the current value of this computed value.\n * Will evaluate its computation first if needed.\n */\n public get(): T {\n if (this.isComputing_) {\n die(32, this.name_, this.derivation)\n }\n if (\n globalState.inBatch === 0 &&\n // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 &&\n !this.keepAlive_\n ) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_()\n startBatch() // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false)\n endBatch()\n }\n } else {\n reportObserved(this)\n if (shouldCompute(this)) {\n let prevTrackingContext = globalState.trackingContext\n if (this.keepAlive_ && !prevTrackingContext) {\n globalState.trackingContext = this\n }\n if (this.trackAndCompute()) {\n propagateChangeConfirmed(this)\n }\n globalState.trackingContext = prevTrackingContext\n }\n }\n const result = this.value_!\n\n if (isCaughtException(result)) {\n throw result.cause\n }\n return result\n }\n\n public set(value: T) {\n if (this.setter_) {\n if (this.isRunningSetter_) {\n die(33, this.name_)\n }\n this.isRunningSetter_ = true\n try {\n this.setter_.call(this.scope_, value)\n } finally {\n this.isRunningSetter_ = false\n }\n } else {\n die(34, this.name_)\n }\n }\n\n trackAndCompute(): boolean {\n // N.B: unminified as it is used by MST\n const oldValue = this.value_\n const wasSuspended =\n /* see #1208 */ this.dependenciesState_ === IDerivationState_.NOT_TRACKING_\n const newValue = this.computeValue_(true)\n\n const changed =\n wasSuspended ||\n isCaughtException(oldValue) ||\n isCaughtException(newValue) ||\n !this.equals_(oldValue, newValue)\n\n if (changed) {\n this.value_ = newValue\n\n if (__DEV__ && isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue,\n newValue\n } as IComputedDidChange)\n }\n }\n\n return changed\n }\n\n computeValue_(track: boolean) {\n this.isComputing_ = true\n // don't allow state changes during computation\n const prev = allowStateChangesStart(false)\n let res: T | CaughtException\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_)\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_)\n } else {\n try {\n res = this.derivation.call(this.scope_)\n } catch (e) {\n res = new CaughtException(e)\n }\n }\n }\n allowStateChangesEnd(prev)\n this.isComputing_ = false\n return res\n }\n\n suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this)\n this.value_ = undefined // don't hold on to computed value!\n if (__DEV__ && this.isTracing_ !== TraceMode.NONE) {\n console.log(\n `[mobx.trace] Computed value '${this.name_}' was suspended and it will recompute on the next access.`\n )\n }\n }\n }\n\n observe_(listener: (change: IComputedDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n let firstTime = true\n let prevValue: T | undefined = undefined\n return autorun(() => {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n let newValue = this.get()\n if (!firstTime || fireImmediately) {\n const prevU = untrackedStart()\n listener({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n newValue,\n oldValue: prevValue\n })\n untrackedEnd(prevU)\n }\n firstTime = false\n prevValue = newValue\n })\n }\n\n warnAboutUntrackedRead_() {\n if (!__DEV__) {\n return\n }\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\n `[mobx.trace] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n )\n }\n if (\n typeof this.requiresReaction_ === \"boolean\"\n ? this.requiresReaction_\n : globalState.computedRequiresReaction\n ) {\n console.warn(\n `[mobx] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n )\n }\n }\n\n toString() {\n return `${this.name_}[${this.derivation.toString()}]`\n }\n\n valueOf(): T {\n return toPrimitive(this.get())\n }\n\n [Symbol.toPrimitive]() {\n return this.valueOf()\n }\n}\n\nexport const isComputedValue = createInstanceofPredicate(\"ComputedValue\", ComputedValue)\n","import {\n IAtom,\n IDepTreeNode,\n IObservable,\n addObserver,\n globalState,\n isComputedValue,\n removeObserver\n} from \"../internal\"\n\nexport enum IDerivationState_ {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n NOT_TRACKING_ = -1,\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n UP_TO_DATE_ = 0,\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n POSSIBLY_STALE_ = 1,\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n STALE_ = 2\n}\n\nexport enum TraceMode {\n NONE,\n LOG,\n BREAK\n}\n\n/**\n * A derivation is everything that can be derived from the state (all the atoms) in a pure manner.\n * See https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n */\nexport interface IDerivation extends IDepTreeNode {\n observing_: IObservable[]\n newObserving_: null | IObservable[]\n dependenciesState_: IDerivationState_\n /**\n * Id of the current run of a derivation. Each time the derivation is tracked\n * this number is increased by one. This number is globally unique\n */\n runId_: number\n /**\n * amount of dependencies used by the derivation in this run, which has not been bound yet.\n */\n unboundDepsCount_: number\n onBecomeStale_(): void\n isTracing_: TraceMode\n\n /**\n * warn if the derivation has no dependencies after creation/update\n */\n requiresObservable_?: boolean\n}\n\nexport class CaughtException {\n constructor(public cause: any) {\n // Empty\n }\n}\n\nexport function isCaughtException(e: any): e is CaughtException {\n return e instanceof CaughtException\n}\n\n/**\n * Finds out whether any dependency of the derivation has actually changed.\n * If dependenciesState is 1 then it will recalculate dependencies,\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\n *\n * By iterating over the dependencies in the same order that they were reported and\n * stopping on the first change, all the recalculations are only called for ComputedValues\n * that will be tracked by derivation. That is because we assume that if the first x\n * dependencies of the derivation doesn't change then the derivation should run the same way\n * up until accessing x-th dependency.\n */\nexport function shouldCompute(derivation: IDerivation): boolean {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true\n case IDerivationState_.POSSIBLY_STALE_: {\n // state propagation can occur outside of action/reactive context #2195\n const prevAllowStateReads = allowStateReadsStart(true)\n const prevUntracked = untrackedStart() // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n const obs = derivation.observing_,\n l = obs.length\n for (let i = 0; i < l; i++) {\n const obj = obs[i]\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get()\n } else {\n try {\n obj.get()\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return true\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if ((derivation.dependenciesState_ as any) === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return true\n }\n }\n }\n changeDependenciesStateTo0(derivation)\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return false\n }\n }\n}\n\nexport function isComputingDerivation() {\n return globalState.trackingDerivation !== null // filter out actions inside computations\n}\n\nexport function checkIfStateModificationsAreAllowed(atom: IAtom) {\n if (!__DEV__) {\n return\n }\n const hasObservers = atom.observers_.size > 0\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (\n !globalState.allowStateChanges &&\n (hasObservers || globalState.enforceActions === \"always\")\n ) {\n console.warn(\n \"[MobX] \" +\n (globalState.enforceActions\n ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \"\n : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") +\n atom.name_\n )\n }\n}\n\nexport function checkIfStateReadsAreAllowed(observable: IObservable) {\n if (__DEV__ && !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\n `[mobx] Observable '${observable.name_}' being read outside a reactive context.`\n )\n }\n}\n\n/**\n * Executes the provided function `f` and tracks which observables are being accessed.\n * The tracking information is stored on the `derivation` object and the derivation is registered\n * as observer of any of the accessed observables.\n */\nexport function trackDerivedFunction<T>(derivation: IDerivation, f: () => T, context: any) {\n const prevAllowStateReads = allowStateReadsStart(true)\n // pre allocate array allocation + room for variation in deps\n // array will be trimmed by bindDependencies\n changeDependenciesStateTo0(derivation)\n derivation.newObserving_ = new Array(derivation.observing_.length + 100)\n derivation.unboundDepsCount_ = 0\n derivation.runId_ = ++globalState.runId\n const prevTracking = globalState.trackingDerivation\n globalState.trackingDerivation = derivation\n globalState.inBatch++\n let result\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context)\n } else {\n try {\n result = f.call(context)\n } catch (e) {\n result = new CaughtException(e)\n }\n }\n globalState.inBatch--\n globalState.trackingDerivation = prevTracking\n bindDependencies(derivation)\n\n warnAboutDerivationWithoutDependencies(derivation)\n allowStateReadsEnd(prevAllowStateReads)\n return result\n}\n\nfunction warnAboutDerivationWithoutDependencies(derivation: IDerivation) {\n if (!__DEV__) {\n return\n }\n\n if (derivation.observing_.length !== 0) {\n return\n }\n\n if (\n typeof derivation.requiresObservable_ === \"boolean\"\n ? derivation.requiresObservable_\n : globalState.reactionRequiresObservable\n ) {\n console.warn(\n `[mobx] Derivation '${derivation.name_}' is created/updated without reading any observable value.`\n )\n }\n}\n\n/**\n * diffs newObserving with observing.\n * update observing to be newObserving with unique observables\n * notify observers that become observed/unobserved\n */\nfunction bindDependencies(derivation: IDerivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n const prevObserving = derivation.observing_\n const observing = (derivation.observing_ = derivation.newObserving_!)\n let lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_\n\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n let i0 = 0,\n l = derivation.unboundDepsCount_\n for (let i = 0; i < l; i++) {\n const dep = observing[i]\n if (dep.diffValue_ === 0) {\n dep.diffValue_ = 1\n if (i0 !== i) {\n observing[i0] = dep\n }\n i0++\n }\n\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if ((dep as any as IDerivation).dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = (dep as any as IDerivation).dependenciesState_\n }\n }\n observing.length = i0\n\n derivation.newObserving_ = null // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length\n while (l--) {\n const dep = prevObserving[l]\n if (dep.diffValue_ === 0) {\n removeObserver(dep, derivation)\n }\n dep.diffValue_ = 0\n }\n\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n const dep = observing[i0]\n if (dep.diffValue_ === 1) {\n dep.diffValue_ = 0\n addObserver(dep, derivation)\n }\n }\n\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState\n derivation.onBecomeStale_()\n }\n}\n\nexport function clearObserving(derivation: IDerivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n const obs = derivation.observing_\n derivation.observing_ = []\n let i = obs.length\n while (i--) {\n removeObserver(obs[i], derivation)\n }\n\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_\n}\n\nexport function untracked<T>(action: () => T): T {\n const prev = untrackedStart()\n try {\n return action()\n } finally {\n untrackedEnd(prev)\n }\n}\n\nexport function untrackedStart(): IDerivation | null {\n const prev = globalState.trackingDerivation\n globalState.trackingDerivation = null\n return prev\n}\n\nexport function untrackedEnd(prev: IDerivation | null) {\n globalState.trackingDerivation = prev\n}\n\nexport function allowStateReadsStart(allowStateReads: boolean) {\n const prev = globalState.allowStateReads\n globalState.allowStateReads = allowStateReads\n return prev\n}\n\nexport function allowStateReadsEnd(prev: boolean) {\n globalState.allowStateReads = prev\n}\n\n/**\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\n *\n */\nexport function changeDependenciesStateTo0(derivation: IDerivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n return\n }\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_\n\n const obs = derivation.observing_\n let i = obs.length\n while (i--) {\n obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n }\n}\n","import {\n Lambda,\n ComputedValue,\n IDependencyTree,\n IDerivation,\n IDerivationState_,\n TraceMode,\n getDependencyTree,\n globalState,\n runReactions,\n checkIfStateReadsAreAllowed\n} from \"../internal\"\n\nexport interface IDepTreeNode {\n name_: string\n observing_?: IObservable[]\n}\n\nexport interface IObservable extends IDepTreeNode {\n diffValue_: number\n /**\n * Id of the derivation *run* that last accessed this observable.\n * If this id equals the *run* id of the current derivation,\n * the dependency is already established\n */\n lastAccessedBy_: number\n isBeingObserved_: boolean\n\n lowestObserverState_: IDerivationState_ // Used to avoid redundant propagations\n isPendingUnobservation_: boolean // Used to push itself to global.pendingUnobservations at most once per batch.\n\n observers_: Set<IDerivation>\n\n onBUO(): void\n onBO(): void\n\n onBUOL: Set<Lambda> | undefined\n onBOL: Set<Lambda> | undefined\n}\n\nexport function hasObservers(observable: IObservable): boolean {\n return observable.observers_ && observable.observers_.size > 0\n}\n\nexport function getObservers(observable: IObservable): Set<IDerivation> {\n return observable.observers_\n}\n\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nexport function addObserver(observable: IObservable, node: IDerivation) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n\n observable.observers_.add(node)\n if (observable.lowestObserverState_ > node.dependenciesState_) {\n observable.lowestObserverState_ = node.dependenciesState_\n }\n\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nexport function removeObserver(observable: IObservable, node: IDerivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_.delete(node)\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable)\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nexport function queueForUnobservation(observable: IObservable) {\n if (observable.isPendingUnobservation_ === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation_ = true\n globalState.pendingUnobservations.push(observable)\n }\n}\n\n/**\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\n * Avoids unnecessary recalculations.\n */\nexport function startBatch() {\n globalState.inBatch++\n}\n\nexport function endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions()\n // the batch is actually about to finish, all unobserving should happen here.\n const list = globalState.pendingUnobservations\n for (let i = 0; i < list.length; i++) {\n const observable = list[i]\n observable.isPendingUnobservation_ = false\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved_) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved_ = false\n observable.onBUO()\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_()\n }\n }\n }\n globalState.pendingUnobservations = []\n }\n}\n\nexport function reportObserved(observable: IObservable): boolean {\n checkIfStateReadsAreAllowed(observable)\n\n const derivation = globalState.trackingDerivation\n if (derivation !== null) {\n /**\n * Simple optimization, give each derivation run an unique id (runId)\n * Check if last time this observable was accessed the same runId is used\n * if this is the case, the relation is already known\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_\n // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_![derivation.unboundDepsCount_++] = observable\n if (!observable.isBeingObserved_ && globalState.trackingContext) {\n observable.isBeingObserved_ = true\n observable.onBO()\n }\n }\n return observable.isBeingObserved_\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable)\n }\n\n return false\n}\n\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n\n/**\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\n * It will propagate changes to observers from previous run\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\n * Hopefully self reruning autoruns aren't a feature people should depend on\n * Also most basic use cases should be ok\n */\n\n// Called by Atom when its value changes\nexport function propagateChanged(observable: IObservable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_\n\n // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable)\n }\n d.onBecomeStale_()\n }\n d.dependenciesState_ = IDerivationState_.STALE_\n })\n // invariantLOS(observable, \"changed end\");\n}\n\n// Called by ComputedValue when it recalculate and its value changed\nexport function propagateChangeConfirmed(observable: IObservable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_\n\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_\n if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable)\n }\n } else if (\n d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n }\n })\n // invariantLOS(observable, \"confirmed end\");\n}\n\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nexport function propagateMaybeChanged(observable: IObservable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_\n\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_\n d.onBecomeStale_()\n }\n })\n // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation: IDerivation, observable: IObservable) {\n console.log(\n `[mobx.trace] '${derivation.name_}' is invalidated due to a change in: '${observable.name_}'`\n )\n if (derivation.isTracing_ === TraceMode.BREAK) {\n const lines = []\n printDepTree(getDependencyTree(derivation), lines, 1)\n\n // prettier-ignore\n new Function(\n`debugger;\n/*\nTracing '${derivation.name_}'\n\nYou are entering this break point because derivation '${derivation.name_}' is being traced and '${observable.name_}' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n${derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\"}\n\nThe dependencies for this derivation are:\n\n${lines.join(\"\\n\")}\n*/\n `)()\n }\n}\n\nfunction printDepTree(tree: IDependencyTree, lines: string[], depth: number) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\")\n return\n }\n lines.push(`${\"\\t\".repeat(depth - 1)}${tree.name}`)\n if (tree.dependencies) {\n tree.dependencies.forEach(child => printDepTree(child, lines, depth + 1))\n }\n}\n","import { IDerivation, IObservable, Reaction, die, getGlobal } from \"../internal\"\nimport { ComputedValue } from \"./computedvalue\"\n\n/**\n * These values will persist if global state is reset\n */\nconst persistentKeys: (keyof MobXGlobals)[] = [\n \"mobxGuid\",\n \"spyListeners\",\n \"enforceActions\",\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"allowStateReads\",\n \"disableErrorBoundaries\",\n \"runId\",\n \"UNCHANGED\",\n \"useProxies\"\n]\n\nexport type IUNCHANGED = {}\n\nexport class MobXGlobals {\n /**\n * MobXGlobals version.\n * MobX compatiblity with other versions loaded in memory as long as this version matches.\n * It indicates that the global state still stores similar information\n *\n * N.B: this version is unrelated to the package version of MobX, and is only the version of the\n * internal state storage of MobX, and can be the same across many different package versions\n */\n version = 6\n\n /**\n * globally unique token to signal unchanged\n */\n UNCHANGED: IUNCHANGED = {}\n\n /**\n * Currently running derivation\n */\n trackingDerivation: IDerivation | null = null\n\n /**\n * Currently running reaction. This determines if we currently have a reactive context.\n * (Tracking derivation is also set for temporal tracking of computed values inside actions,\n * but trackingReaction can only be set by a form of Reaction)\n */\n trackingContext: Reaction | ComputedValue<any> | null = null\n\n /**\n * Each time a derivation is tracked, it is assigned a unique run-id\n */\n runId = 0\n\n /**\n * 'guid' for general purpose. Will be persisted amongst resets.\n */\n mobxGuid = 0\n\n /**\n * Are we in a batch block? (and how many of them)\n */\n inBatch: number = 0\n\n /**\n * Observables that don't have observers anymore, and are about to be\n * suspended, unless somebody else accesses it in the same batch\n *\n * @type {IObservable[]}\n */\n pendingUnobservations: IObservable[] = []\n\n /**\n * List of scheduled, not yet executed, reactions.\n */\n pendingReactions: Reaction[] = []\n\n /**\n * Are we currently processing reactions?\n */\n isRunningReactions = false\n\n /**\n * Is it allowed to change observables at this point?\n * In general, MobX doesn't allow that when running computations and React.render.\n * To ensure that those functions stay pure.\n */\n allowStateChanges = false\n\n /**\n * Is it allowed to read observables at this point?\n * Used to hold the state needed for `observableRequiresReaction`\n */\n allowStateReads = true\n\n /**\n * If strict mode is enabled, state changes are by default not allowed\n */\n enforceActions: boolean | \"always\" = true\n\n /**\n * Spy callbacks\n */\n spyListeners: { (change: any): void }[] = []\n\n /**\n * Globally attached error handlers that react specifically to errors in reactions\n */\n globalReactionErrorHandlers: ((error: any, derivation: IDerivation) => void)[] = []\n\n /**\n * Warn if computed values are accessed outside a reactive context\n */\n computedRequiresReaction = false\n\n /**\n * (Experimental)\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n reactionRequiresObservable = false\n\n /**\n * (Experimental)\n * Warn if observables are accessed outside a reactive context\n */\n observableRequiresReaction = false\n\n /*\n * Don't catch and rethrow exceptions. This is useful for inspecting the state of\n * the stack when an exception occurs while debugging.\n */\n disableErrorBoundaries = false\n\n /*\n * If true, we are already handling an exception in an action. Any errors in reactions should be suppressed, as\n * they are not the cause, see: https://github.com/mobxjs/mobx/issues/1836\n */\n suppressReactionErrors = false\n\n useProxies = true\n /*\n * print warnings about code that would fail if proxies weren't available\n */\n verifyProxies = false\n\n /**\n * False forces all object's descriptors to\n * writable: true\n * configurable: true\n */\n safeDescriptors = true\n\n /**\n * Changes with each state update, used by useSyncExternalStore\n */\n stateVersion = Number.MIN_SAFE_INTEGER\n}\n\nlet canMergeGlobalState = true\nlet isolateCalled = false\n\nexport let globalState: MobXGlobals = (function () {\n let global = getGlobal()\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n canMergeGlobalState = false\n }\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n canMergeGlobalState = false\n }\n\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(() => {\n if (!isolateCalled) {\n die(35)\n }\n }, 1)\n return new MobXGlobals()\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1\n if (!global.__mobxGlobals.UNCHANGED) {\n global.__mobxGlobals.UNCHANGED = {}\n } // make merge backward compatible\n return global.__mobxGlobals\n } else {\n global.__mobxInstanceCount = 1\n return (global.__mobxGlobals = new MobXGlobals())\n }\n})()\n\nexport function isolateGlobalState() {\n if (\n globalState.pendingReactions.length ||\n globalState.inBatch ||\n globalState.isRunningReactions\n ) {\n die(36)\n }\n isolateCalled = true\n if (canMergeGlobalState) {\n let global = getGlobal()\n if (--global.__mobxInstanceCount === 0) {\n global.__mobxGlobals = undefined\n }\n globalState = new MobXGlobals()\n }\n}\n\nexport function getGlobalState(): any {\n return globalState\n}\n\n/**\n * For testing purposes only; this will break the internal state of existing observables,\n * but can be used to get back at a stable state after throwing errors\n */\nexport function resetGlobalState() {\n const defaultGlobals = new MobXGlobals()\n for (let key in defaultGlobals) {\n if (persistentKeys.indexOf(key as any) === -1) {\n globalState[key] = defaultGlobals[key]\n }\n }\n globalState.allowStateChanges = !globalState.enforceActions\n}\n","import {\n $mobx,\n IDerivation,\n IDerivationState_,\n IObservable,\n Lambda,\n TraceMode,\n clearObserving,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n globalState,\n isCaughtException,\n isSpyEnabled,\n shouldCompute,\n spyReport,\n spyReportEnd,\n spyReportStart,\n startBatch,\n trace,\n trackDerivedFunction\n} from \"../internal\"\n\n/**\n * Reactions are a special kind of derivations. Several things distinguishes them from normal reactive computations\n *\n * 1) They will always run, whether they are used by other computations or not.\n * This means that they are very suitable for triggering side effects like logging, updating the DOM and making network requests.\n * 2) They are not observable themselves\n * 3) They will always run after any 'normal' derivations\n * 4) They are allowed to change the state and thereby triggering themselves again, as long as they make sure the state propagates to a stable state in a reasonable amount of iterations.\n *\n * The state machine of a Reaction is as follows:\n *\n * 1) after creating, the reaction should be started by calling `runReaction` or by scheduling it (see also `autorun`)\n * 2) the `onInvalidate` handler should somehow result in a call to `this.track(someFunction)`\n * 3) all observables accessed in `someFunction` will be observed by this reaction.\n * 4) as soon as some of the dependencies has changed the Reaction will be rescheduled for another run (after the current mutation or transaction). `isScheduled` will yield true once a dependency is stale and during this period\n * 5) `onInvalidate` will be called, and we are back at step 1.\n *\n */\n\nexport interface IReactionPublic {\n dispose(): void\n trace(enterBreakPoint?: boolean): void\n}\n\nexport interface IReactionDisposer {\n (): void\n $mobx: Reaction\n}\n\nexport class Reaction implements IDerivation, IReactionPublic {\n observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n newObserving_: IObservable[] = []\n dependenciesState_ = IDerivationState_.NOT_TRACKING_\n diffValue_ = 0\n runId_ = 0\n unboundDepsCount_ = 0\n isDisposed_ = false\n isScheduled_ = false\n isTrackPending_ = false\n isRunning_ = false\n isTracing_: TraceMode = TraceMode.NONE\n\n constructor(\n public name_: string = __DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\",\n private onInvalidate_: () => void,\n private errorHandler_?: (error: any, derivation: IDerivation) => void,\n public requiresObservable_?\n ) {}\n\n onBecomeStale_() {\n this.schedule_()\n }\n\n schedule_() {\n if (!this.isScheduled_) {\n this.isScheduled_ = true\n globalState.pendingReactions.push(this)\n runReactions()\n }\n }\n\n isScheduled() {\n return this.isScheduled_\n }\n\n /**\n * internal, use schedule() if you intend to kick off a reaction\n */\n runReaction_() {\n if (!this.isDisposed_) {\n startBatch()\n this.isScheduled_ = false\n const prev = globalState.trackingContext\n globalState.trackingContext = this\n if (shouldCompute(this)) {\n this.isTrackPending_ = true\n\n try {\n this.onInvalidate_()\n if (__DEV__ && this.isTrackPending_ && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n })\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e)\n }\n }\n globalState.trackingContext = prev\n endBatch()\n }\n }\n\n track(fn: () => void) {\n if (this.isDisposed_) {\n return\n // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n startBatch()\n const notify = isSpyEnabled()\n let startTime\n if (__DEV__ && notify) {\n startTime = Date.now()\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n })\n }\n this.isRunning_ = true\n const prevReaction = globalState.trackingContext // reactions could create reactions...\n globalState.trackingContext = this\n const result = trackDerivedFunction(this, fn, undefined)\n globalState.trackingContext = prevReaction\n this.isRunning_ = false\n this.isTrackPending_ = false\n if (this.isDisposed_) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this)\n }\n if (isCaughtException(result)) {\n this.reportExceptionInDerivation_(result.cause)\n }\n if (__DEV__ && notify) {\n spyReportEnd({\n time: Date.now() - startTime\n })\n }\n endBatch()\n }\n\n reportExceptionInDerivation_(error: any) {\n if (this.errorHandler_) {\n this.errorHandler_(error, this)\n return\n }\n\n if (globalState.disableErrorBoundaries) {\n throw error\n }\n\n const message = __DEV__\n ? `[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '${this}'`\n : `[mobx] uncaught error in '${this}'`\n if (!globalState.suppressReactionErrors) {\n console.error(message, error)\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else if (__DEV__) { console.warn(`[mobx] (error in reaction '${this.name_}' suppressed, fix error of causing action below)`) } // prettier-ignore\n\n if (__DEV__ && isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message,\n error: \"\" + error\n })\n }\n\n globalState.globalReactionErrorHandlers.forEach(f => f(error, this))\n }\n\n dispose() {\n if (!this.isDisposed_) {\n this.isDisposed_ = true\n if (!this.isRunning_) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch()\n clearObserving(this)\n endBatch()\n }\n }\n }\n\n getDisposer_(): IReactionDisposer {\n const r = this.dispose.bind(this) as IReactionDisposer\n r[$mobx] = this\n return r\n }\n\n toString() {\n return `Reaction[${this.name_}]`\n }\n\n trace(enterBreakPoint: boolean = false) {\n trace(this, enterBreakPoint)\n }\n}\n\nexport function onReactionError(handler: (error: any, derivation: IDerivation) => void): Lambda {\n globalState.globalReactionErrorHandlers.push(handler)\n return () => {\n const idx = globalState.globalReactionErrorHandlers.indexOf(handler)\n if (idx >= 0) {\n globalState.globalReactionErrorHandlers.splice(idx, 1)\n }\n }\n}\n\n/**\n * Magic number alert!\n * Defines within how many times a reaction is allowed to re-trigger itself\n * until it is assumed that this is gonna be a never ending loop...\n */\nconst MAX_REACTION_ITERATIONS = 100\n\nlet reactionScheduler: (fn: () => void) => void = f => f()\n\nexport function runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n return\n }\n reactionScheduler(runReactionsHelper)\n}\n\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true\n const allReactions = globalState.pendingReactions\n let iterations = 0\n\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error(\n __DEV__\n ? `Reaction doesn't converge to a stable state after ${MAX_REACTION_ITERATIONS} iterations.` +\n ` Probably there is a cycle in the reactive function: ${allReactions[0]}`\n : `[mobx] cycle in reaction: ${allReactions[0]}`\n )\n allReactions.splice(0) // clear reactions\n }\n let remainingReactions = allReactions.splice(0)\n for (let i = 0, l = remainingReactions.length; i < l; i++) {\n remainingReactions[i].runReaction_()\n }\n }\n globalState.isRunningReactions = false\n}\n\nexport const isReaction = createInstanceofPredicate(\"Reaction\", Reaction)\n\nexport function setReactionScheduler(fn: (f: () => void) => void) {\n const baseScheduler = reactionScheduler\n reactionScheduler = f => fn(() => baseScheduler(f))\n}\n","import { TraceMode, die, getAtom, globalState } from \"../internal\"\n\nexport function trace(thing?: any, prop?: string, enterBreakPoint?: boolean): void\nexport function trace(thing?: any, enterBreakPoint?: boolean): void\nexport function trace(enterBreakPoint?: boolean): void\nexport function trace(...args: any[]): void {\n if (!__DEV__) {\n die(`trace() is not available in production builds`)\n }\n let enterBreakPoint = false\n if (typeof args[args.length - 1] === \"boolean\") {\n enterBreakPoint = args.pop()\n }\n const derivation = getAtomFromArgs(args)\n if (!derivation) {\n return die(\n `'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly`\n )\n }\n if (derivation.isTracing_ === TraceMode.NONE) {\n console.log(`[mobx.trace] '${derivation.name_}' tracing enabled`)\n }\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG\n}\n\nfunction getAtomFromArgs(args): any {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation\n case 1:\n return getAtom(args[0])\n case 2:\n return getAtom(args[0], args[1])\n }\n}\n","import {\n createAction,\n executeAction,\n Annotation,\n storeAnnotation,\n die,\n isFunction,\n isStringish,\n createDecoratorAnnotation,\n createActionAnnotation\n} from \"../internal\"\n\nexport const ACTION = \"action\"\nexport const ACTION_BOUND = \"action.bound\"\nexport const AUTOACTION = \"autoAction\"\nexport const AUTOACTION_BOUND = \"autoAction.bound\"\n\nconst DEFAULT_ACTION_NAME = \"<unnamed action>\"\n\nconst actionAnnotation = createActionAnnotation(ACTION)\nconst actionBoundAnnotation = createActionAnnotation(ACTION_BOUND, {\n bound: true\n})\nconst autoActionAnnotation = createActionAnnotation(AUTOACTION, {\n autoAction: true\n})\nconst autoActionBoundAnnotation = createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n})\n\nexport interface IActionFactory extends Annotation, PropertyDecorator {\n // nameless actions\n <T extends Function | undefined | null>(fn: T): T\n // named actions\n <T extends Function | undefined | null>(name: string, fn: T): T\n\n // named decorator\n (customName: string): PropertyDecorator & Annotation\n\n // decorator (name no longer supported)\n bound: Annotation & PropertyDecorator\n}\n\nfunction createActionFactory(autoAction: boolean): IActionFactory {\n const res: IActionFactory = function action(arg1, arg2?): any {\n // action(fn() {})\n if (isFunction(arg1)) {\n return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction)\n }\n // action(\"name\", fn() {})\n if (isFunction(arg2)) {\n return createAction(arg1, arg2, autoAction)\n }\n // @action\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation)\n }\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(\n createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction\n })\n )\n }\n\n if (__DEV__) {\n die(\"Invalid arguments for `action`\")\n }\n } as IActionFactory\n return res\n}\n\nexport const action: IActionFactory = createActionFactory(false)\nObject.assign(action, actionAnnotation)\nexport const autoAction: IActionFactory = createActionFactory(true)\nObject.assign(autoAction, autoActionAnnotation)\n\naction.bound = createDecoratorAnnotation(actionBoundAnnotation)\nautoAction.bound = createDecoratorAnnotation(autoActionBoundAnnotation)\n\nexport function runInAction<T>(fn: () => T): T {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined)\n}\n\nexport function isAction(thing: any) {\n return isFunction(thing) && thing.isMobxAction === true\n}\n","import {\n EMPTY_OBJECT,\n IEqualsComparer,\n IReactionDisposer,\n IReactionPublic,\n Lambda,\n Reaction,\n action,\n comparer,\n getNextId,\n isAction,\n isFunction,\n isPlainObject,\n die,\n allowStateChanges\n} from \"../internal\"\n\nexport interface IAutorunOptions {\n delay?: number\n name?: string\n /**\n * Experimental.\n * Warns if the view doesn't track observables\n */\n requiresObservable?: boolean\n scheduler?: (callback: () => void) => any\n onError?: (error: any) => void\n}\n\n/**\n * Creates a named reactive view and keeps it alive, so that the view is always\n * updated if one of the dependencies changes, even when the view is not further used by something else.\n * @param view The reactive view\n * @returns disposer function, which can be used to stop the view from being updated in the future.\n */\nexport function autorun(\n view: (r: IReactionPublic) => any,\n opts: IAutorunOptions = EMPTY_OBJECT\n): IReactionDisposer {\n if (__DEV__) {\n if (!isFunction(view)) {\n die(\"Autorun expects a function as first argument\")\n }\n if (isAction(view)) {\n die(\"Autorun does not accept actions since actions are untrackable\")\n }\n }\n\n const name: string =\n opts?.name ?? (__DEV__ ? (view as any).name || \"Autorun@\" + getNextId() : \"Autorun\")\n const runSync = !opts.scheduler && !opts.delay\n let reaction: Reaction\n\n if (runSync) {\n // normal autorun\n reaction = new Reaction(\n name,\n function (this: Reaction) {\n this.track(reactionRunner)\n },\n opts.onError,\n opts.requiresObservable\n )\n } else {\n const scheduler = createSchedulerFromOptions(opts)\n // debounced autorun\n let isScheduled = false\n\n reaction = new Reaction(\n name,\n () => {\n if (!isScheduled) {\n isScheduled = true\n scheduler(() => {\n isScheduled = false\n if (!reaction.isDisposed_) {\n reaction.track(reactionRunner)\n }\n })\n }\n },\n opts.onError,\n opts.requiresObservable\n )\n }\n\n function reactionRunner() {\n view(reaction)\n }\n\n reaction.schedule_()\n return reaction.getDisposer_()\n}\n\nexport type IReactionOptions<T, FireImmediately extends boolean> = IAutorunOptions & {\n fireImmediately?: FireImmediately\n equals?: IEqualsComparer<T>\n}\n\nconst run = (f: Lambda) => f()\n\nfunction createSchedulerFromOptions(opts: IAutorunOptions) {\n return opts.scheduler\n ? opts.scheduler\n : opts.delay\n ? (f: Lambda) => setTimeout(f, opts.delay!)\n : run\n}\n\nexport function reaction<T, FireImmediately extends boolean = false>(\n expression: (r: IReactionPublic) => T,\n effect: (\n arg: T,\n prev: FireImmediately extends true ? T | undefined : T,\n r: IReactionPublic\n ) => void,\n opts: IReactionOptions<T, FireImmediately> = EMPTY_OBJECT\n): IReactionDisposer {\n if (__DEV__) {\n if (!isFunction(expression) || !isFunction(effect)) {\n die(\"First and second argument to reaction should be functions\")\n }\n if (!isPlainObject(opts)) {\n die(\"Third argument of reactions should be an object\")\n }\n }\n const name = opts.name ?? (__DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\")\n const effectAction = action(\n name,\n opts.onError ? wrapErrorHandler(opts.onError, effect) : effect\n )\n const runSync = !opts.scheduler && !opts.delay\n const scheduler = createSchedulerFromOptions(opts)\n\n let firstTime = true\n let isScheduled = false\n let value: T\n let oldValue: T | undefined\n\n const equals: IEqualsComparer<T> = (opts as any).compareStructural\n ? comparer.structural\n : opts.equals || comparer.default\n\n const r = new Reaction(\n name,\n () => {\n if (firstTime || runSync) {\n reactionRunner()\n } else if (!isScheduled) {\n isScheduled = true\n scheduler!(reactionRunner)\n }\n },\n opts.onError,\n opts.requiresObservable\n )\n\n function reactionRunner() {\n isScheduled = false\n if (r.isDisposed_) {\n return\n }\n let changed: boolean = false\n r.track(() => {\n const nextValue = allowStateChanges(false, () => expression(r))\n changed = firstTime || !equals(value, nextValue)\n oldValue = value\n value = nextValue\n })\n\n // This casting is nesessary as TS cannot infer proper type in current funciton implementation\n type OldValue = FireImmediately extends true ? T | undefined : T\n if (firstTime && opts.fireImmediately!) {\n effectAction(value, oldValue as OldValue, r)\n } else if (!firstTime && changed) {\n effectAction(value, oldValue as OldValue, r)\n }\n firstTime = false\n }\n\n r.schedule_()\n return r.getDisposer_()\n}\n\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments)\n } catch (e) {\n errorHandler.call(this, e)\n }\n }\n}\n","import { globalState, isolateGlobalState, setReactionScheduler } from \"../internal\"\n\nconst NEVER = \"never\"\nconst ALWAYS = \"always\"\nconst OBSERVED = \"observed\"\n// const IF_AVAILABLE = \"ifavailable\"\n\nexport function configure(options: {\n enforceActions?: \"never\" | \"always\" | \"observed\"\n computedRequiresReaction?: boolean\n /**\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n reactionRequiresObservable?: boolean\n /**\n * Warn if observables are accessed outside a reactive context\n */\n observableRequiresReaction?: boolean\n isolateGlobalState?: boolean\n disableErrorBoundaries?: boolean\n safeDescriptors?: boolean\n reactionScheduler?: (f: () => void) => void\n useProxies?: \"always\" | \"never\" | \"ifavailable\"\n}): void {\n if (options.isolateGlobalState === true) {\n isolateGlobalState()\n }\n const { useProxies, enforceActions } = options\n if (useProxies !== undefined) {\n globalState.useProxies =\n useProxies === ALWAYS\n ? true\n : useProxies === NEVER\n ? false\n : typeof Proxy !== \"undefined\"\n }\n if (useProxies === \"ifavailable\") {\n globalState.verifyProxies = true\n }\n if (enforceActions !== undefined) {\n const ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED\n globalState.enforceActions = ea\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true\n }\n ;[\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"disableErrorBoundaries\",\n \"safeDescriptors\"\n ].forEach(key => {\n if (key in options) {\n globalState[key] = !!options[key]\n }\n })\n globalState.allowStateReads = !globalState.observableRequiresReaction\n if (__DEV__ && globalState.disableErrorBoundaries === true) {\n console.warn(\n \"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\"\n )\n }\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler)\n }\n}\n","import {\n CreateObservableOptions,\n isObservableMap,\n AnnotationsMap,\n startBatch,\n endBatch,\n asObservableObject,\n isPlainObject,\n ObservableObjectAdministration,\n isObservable,\n die,\n getOwnPropertyDescriptors,\n $mobx,\n ownKeys\n} from \"../internal\"\n\nexport function extendObservable<A extends Object, B extends Object>(\n target: A,\n properties: B,\n annotations?: AnnotationsMap<B, never>,\n options?: CreateObservableOptions\n): A & B {\n if (__DEV__) {\n if (arguments.length > 4) {\n die(\"'extendObservable' expected 2-4 arguments\")\n }\n if (typeof target !== \"object\") {\n die(\"'extendObservable' expects an object as first argument\")\n }\n if (isObservableMap(target)) {\n die(\"'extendObservable' should not be used on maps, use map.merge instead\")\n }\n if (!isPlainObject(properties)) {\n die(`'extendObservable' only accepts plain objects as second argument`)\n }\n if (isObservable(properties) || isObservable(annotations)) {\n die(`Extending an object with another observable (object) is not supported`)\n }\n }\n // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n const descriptors = getOwnPropertyDescriptors(properties)\n\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n startBatch()\n try {\n ownKeys(descriptors).forEach(key => {\n adm.extend_(\n key,\n descriptors[key as any],\n // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true\n )\n })\n } finally {\n endBatch()\n }\n return target as any\n}\n","import { IDepTreeNode, getAtom, getObservers, hasObservers } from \"../internal\"\n\nexport interface IDependencyTree {\n name: string\n dependencies?: IDependencyTree[]\n}\n\nexport interface IObserverTree {\n name: string\n observers?: IObserverTree[]\n}\n\nexport function getDependencyTree(thing: any, property?: string): IDependencyTree {\n return nodeToDependencyTree(getAtom(thing, property))\n}\n\nfunction nodeToDependencyTree(node: IDepTreeNode): IDependencyTree {\n const result: IDependencyTree = {\n name: node.name_\n }\n if (node.observing_ && node.observing_.length > 0) {\n result.dependencies = unique(node.observing_).map(nodeToDependencyTree)\n }\n return result\n}\n\nexport function getObserverTree(thing: any, property?: string): IObserverTree {\n return nodeToObserverTree(getAtom(thing, property))\n}\n\nfunction nodeToObserverTree(node: IDepTreeNode): IObserverTree {\n const result: IObserverTree = {\n name: node.name_\n }\n if (hasObservers(node as any)) {\n result.observers = Array.from(<any>getObservers(node as any)).map(<any>nodeToObserverTree)\n }\n return result\n}\n\nfunction unique<T>(list: T[]): T[] {\n return Array.from(new Set(list))\n}\n","import {\n action,\n noop,\n die,\n isFunction,\n Annotation,\n isStringish,\n storeAnnotation,\n createFlowAnnotation,\n createDecoratorAnnotation\n} from \"../internal\"\n\nexport const FLOW = \"flow\"\n\nlet generatorId = 0\n\nexport function FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\"\n}\nFlowCancellationError.prototype = Object.create(Error.prototype)\n\nexport function isFlowCancellationError(error: Error) {\n return error instanceof FlowCancellationError\n}\n\nexport type CancellablePromise<T> = Promise<T> & { cancel(): void }\n\ninterface Flow extends Annotation, PropertyDecorator {\n <R, Args extends any[]>(\n generator: (...args: Args) => Generator<any, R, any> | AsyncGenerator<any, R, any>\n ): (...args: Args) => CancellablePromise<R>\n bound: Annotation & PropertyDecorator\n}\n\nconst flowAnnotation = createFlowAnnotation(\"flow\")\nconst flowBoundAnnotation = createFlowAnnotation(\"flow.bound\", { bound: true })\n\nexport const flow: Flow = Object.assign(\n function flow(arg1, arg2?) {\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation)\n }\n // flow(fn)\n if (__DEV__ && arguments.length !== 1) {\n die(`Flow expects single argument with generator function`)\n }\n const generator = arg1\n const name = generator.name || \"<unnamed flow>\"\n\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n const res = function () {\n const ctx = this\n const args = arguments\n const runId = ++generatorId\n const gen = action(`${name} - runid: ${runId} - init`, generator).apply(ctx, args)\n let rejector: (error: any) => void\n let pendingPromise: CancellablePromise<any> | undefined = undefined\n\n const promise = new Promise(function (resolve, reject) {\n let stepId = 0\n rejector = reject\n\n function onFulfilled(res: any) {\n pendingPromise = undefined\n let ret\n try {\n ret = action(\n `${name} - runid: ${runId} - yield ${stepId++}`,\n gen.next\n ).call(gen, res)\n } catch (e) {\n return reject(e)\n }\n\n next(ret)\n }\n\n function onRejected(err: any) {\n pendingPromise = undefined\n let ret\n try {\n ret = action(\n `${name} - runid: ${runId} - yield ${stepId++}`,\n gen.throw!\n ).call(gen, err)\n } catch (e) {\n return reject(e)\n }\n next(ret)\n }\n\n function next(ret: any) {\n if (isFunction(ret?.then)) {\n // an async iterator\n ret.then(next, reject)\n return\n }\n if (ret.done) {\n return resolve(ret.value)\n }\n pendingPromise = Promise.resolve(ret.value) as any\n return pendingPromise!.then(onFulfilled, onRejected)\n }\n\n onFulfilled(undefined) // kick off the process\n }) as any\n\n promise.cancel = action(`${name} - runid: ${runId} - cancel`, function () {\n try {\n if (pendingPromise) {\n cancelPromise(pendingPromise)\n }\n // Finally block can return (or yield) stuff..\n const res = gen.return!(undefined as any)\n // eat anything that promise would do, it's cancelled!\n const yieldedPromise = Promise.resolve(res.value)\n yieldedPromise.then(noop, noop)\n cancelPromise(yieldedPromise) // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError())\n } catch (e) {\n rejector(e) // there could be a throwing finally block\n }\n })\n return promise\n }\n res.isMobXFlow = true\n return res\n } as any,\n flowAnnotation\n)\n\nflow.bound = createDecoratorAnnotation(flowBoundAnnotation)\n\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) {\n promise.cancel()\n }\n}\n\nexport function flowResult<T>(\n result: T\n): T extends Generator<any, infer R, any>\n ? CancellablePromise<R>\n : T extends CancellablePromise<any>\n ? T\n : never {\n return result as any // just tricking TypeScript :)\n}\n\nexport function isFlow(fn: any): boolean {\n return fn?.isMobXFlow === true\n}\n","import {\n $mobx,\n isAtom,\n isComputedValue,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isReaction,\n die,\n isStringish\n} from \"../internal\"\n\nfunction _isObservable(value, property?: PropertyKey): boolean {\n if (!value) {\n return false\n }\n if (property !== undefined) {\n if (__DEV__ && (isObservableMap(value) || isObservableArray(value))) {\n return die(\n \"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\"\n )\n }\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property)\n }\n return false\n }\n // For first check, see #701\n return (\n isObservableObject(value) ||\n !!value[$mobx] ||\n isAtom(value) ||\n isReaction(value) ||\n isComputedValue(value)\n )\n}\n\nexport function isObservable(value: any): boolean {\n if (__DEV__ && arguments.length !== 1) {\n die(\n `isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property`\n )\n }\n return _isObservable(value)\n}\n\nexport function isObservableProp(value: any, propName: PropertyKey): boolean {\n if (__DEV__ && !isStringish(propName)) {\n return die(`expected a property name as second argument`)\n }\n return _isObservable(value, propName)\n}\n","import { endBatch, startBatch } from \"../internal\"\n\n/**\n * During a transaction no views are updated until the end of the transaction.\n * The transaction will be run synchronously nonetheless.\n *\n * @param action a function that updates some reactive state\n * @returns any value that was returned by the 'action' parameter.\n */\nexport function transaction<T>(action: () => T, thisArg = undefined): T {\n startBatch()\n try {\n return action.apply(thisArg)\n } finally {\n endBatch()\n }\n}\n","import { Lambda, once, untrackedEnd, untrackedStart, die } from \"../internal\"\n\nexport type IInterceptor<T> = (change: T) => T | null\n\nexport interface IInterceptable<T> {\n interceptors_: IInterceptor<T>[] | undefined\n}\n\nexport function hasInterceptors(interceptable: IInterceptable<any>) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0\n}\n\nexport function registerInterceptor<T>(\n interceptable: IInterceptable<T>,\n handler: IInterceptor<T>\n): Lambda {\n const interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = [])\n interceptors.push(handler)\n return once(() => {\n const idx = interceptors.indexOf(handler)\n if (idx !== -1) {\n interceptors.splice(idx, 1)\n }\n })\n}\n\nexport function interceptChange<T>(\n interceptable: IInterceptable<T | null>,\n change: T | null\n): T | null {\n const prevU = untrackedStart()\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n const interceptors = [...(interceptable.interceptors_ || [])]\n for (let i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change)\n if (change && !(change as any).type) {\n die(14)\n }\n if (!change) {\n break\n }\n }\n return change\n } finally {\n untrackedEnd(prevU)\n }\n}\n","import { Lambda, once, untrackedEnd, untrackedStart } from \"../internal\"\n\nexport interface IListenable {\n changeListeners_: Function[] | undefined\n}\n\nexport function hasListeners(listenable: IListenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0\n}\n\nexport function registerListener(listenable: IListenable, handler: Function): Lambda {\n const listeners = listenable.changeListeners_ || (listenable.changeListeners_ = [])\n listeners.push(handler)\n return once(() => {\n const idx = listeners.indexOf(handler)\n if (idx !== -1) {\n listeners.splice(idx, 1)\n }\n })\n}\n\nexport function notifyListeners<T>(listenable: IListenable, change: T) {\n const prevU = untrackedStart()\n let listeners = listenable.changeListeners_\n if (!listeners) {\n return\n }\n listeners = listeners.slice()\n for (let i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change)\n }\n untrackedEnd(prevU)\n}\n","import {\n $mobx,\n asObservableObject,\n AnnotationsMap,\n endBatch,\n startBatch,\n CreateObservableOptions,\n ObservableObjectAdministration,\n collectStoredAnnotations,\n isPlainObject,\n isObservableObject,\n die,\n ownKeys,\n extendObservable,\n addHiddenProp,\n storedAnnotationsSymbol\n} from \"../internal\"\n\n// Hack based on https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-322267089\n// We need this, because otherwise, AdditionalKeys is going to be inferred to be any\n// set of superfluous keys. But, we rather want to get a compile error unless AdditionalKeys is\n// _explicity_ passed as generic argument\n// Fixes: https://github.com/mobxjs/mobx/issues/2325#issuecomment-691070022\ntype NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport function makeObservable<T extends object, AdditionalKeys extends PropertyKey = never>(\n target: T,\n annotations?: AnnotationsMap<T, NoInfer<AdditionalKeys>>,\n options?: CreateObservableOptions\n): T {\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n startBatch()\n try {\n if (__DEV__ && annotations && target[storedAnnotationsSymbol]) {\n die(\n `makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.`\n )\n }\n // Default to decorators\n annotations ??= collectStoredAnnotations(target)\n\n // Annotate\n ownKeys(annotations).forEach(key => adm.make_(key, annotations![key]))\n } finally {\n endBatch()\n }\n return target\n}\n\n// proto[keysSymbol] = new Set<PropertyKey>()\nconst keysSymbol = Symbol(\"mobx-keys\")\n\nexport function makeAutoObservable<T extends object, AdditionalKeys extends PropertyKey = never>(\n target: T,\n overrides?: AnnotationsMap<T, NoInfer<AdditionalKeys>>,\n options?: CreateObservableOptions\n): T {\n if (__DEV__) {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n die(`'makeAutoObservable' can only be used for classes that don't have a superclass`)\n }\n if (isObservableObject(target)) {\n die(`makeAutoObservable can only be used on objects not already made observable`)\n }\n }\n\n // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options)\n }\n\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n\n // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n const proto = Object.getPrototypeOf(target)\n const keys = new Set([...ownKeys(target), ...ownKeys(proto)])\n keys.delete(\"constructor\")\n keys.delete($mobx)\n addHiddenProp(proto, keysSymbol, keys)\n }\n\n startBatch()\n try {\n target[keysSymbol].forEach(key =>\n adm.make_(\n key,\n // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true\n )\n )\n } finally {\n endBatch()\n }\n return target\n}\n","import {\n $mobx,\n Atom,\n EMPTY_ARRAY,\n IAtom,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n Lambda,\n addHiddenFinalProp,\n checkIfStateModificationsAreAllowed,\n createInstanceofPredicate,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isObject,\n isSpyEnabled,\n notifyListeners,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n allowStateChangesStart,\n allowStateChangesEnd,\n assertProxies,\n reserveArrayBuffer,\n hasProp,\n die,\n globalState\n} from \"../internal\"\n\nconst SPLICE = \"splice\"\nexport const UPDATE = \"update\"\nexport const MAX_SPLICE_SIZE = 10000 // See e.g. https://github.com/mobxjs/mobx/issues/859\n\nexport interface IObservableArray<T = any> extends Array<T> {\n spliceWithArray(index: number, deleteCount?: number, newItems?: T[]): T[]\n clear(): T[]\n replace(newItems: T[]): T[]\n remove(value: T): boolean\n toJSON(): T[]\n}\n\ninterface IArrayBaseChange<T> {\n object: IObservableArray<T>\n observableKind: \"array\"\n debugObjectName: string\n index: number\n}\n\nexport type IArrayDidChange<T = any> = IArrayUpdate<T> | IArraySplice<T>\n\nexport interface IArrayUpdate<T = any> extends IArrayBaseChange<T> {\n type: \"update\"\n newValue: T\n oldValue: T\n}\n\nexport interface IArraySplice<T = any> extends IArrayBaseChange<T> {\n type: \"splice\"\n added: T[]\n addedCount: number\n removed: T[]\n removedCount: number\n}\n\nexport interface IArrayWillChange<T = any> {\n object: IObservableArray<T>\n index: number\n type: \"update\"\n newValue: T\n}\n\nexport interface IArrayWillSplice<T = any> {\n object: IObservableArray<T>\n index: number\n type: \"splice\"\n added: T[]\n removedCount: number\n}\n\nconst arrayTraps = {\n get(target, name) {\n const adm: ObservableArrayAdministration = target[$mobx]\n if (name === $mobx) {\n return adm\n }\n if (name === \"length\") {\n return adm.getArrayLength_()\n }\n if (typeof name === \"string\" && !isNaN(name as any)) {\n return adm.get_(parseInt(name))\n }\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name]\n }\n return target[name]\n },\n set(target, name, value): boolean {\n const adm: ObservableArrayAdministration = target[$mobx]\n if (name === \"length\") {\n adm.setArrayLength_(value)\n }\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value\n } else {\n // numeric string\n adm.set_(parseInt(name), value)\n }\n return true\n },\n preventExtensions() {\n die(15)\n }\n}\n\nexport class ObservableArrayAdministration\n implements IInterceptable<IArrayWillChange<any> | IArrayWillSplice<any>>, IListenable\n{\n atom_: IAtom\n readonly values_: any[] = [] // this is the prop that gets proxied, so can't replace it!\n interceptors_\n changeListeners_\n enhancer_: (newV: any, oldV: any | undefined) => any\n dehancer: any\n proxy_!: IObservableArray<any>\n lastKnownLength_ = 0\n\n constructor(\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n enhancer: IEnhancer<any>,\n public owned_: boolean,\n public legacyMode_: boolean\n ) {\n this.atom_ = new Atom(name)\n this.enhancer_ = (newV, oldV) =>\n enhancer(newV, oldV, __DEV__ ? name + \"[..]\" : \"ObservableArray[..]\")\n }\n\n dehanceValue_(value: any): any {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n dehanceValues_(values: any[]): any[] {\n if (this.dehancer !== undefined && values.length > 0) {\n return values.map(this.dehancer) as any\n }\n return values\n }\n\n intercept_(handler: IInterceptor<IArrayWillChange<any> | IArrayWillSplice<any>>): Lambda {\n return registerInterceptor<IArrayWillChange<any> | IArrayWillSplice<any>>(this, handler)\n }\n\n observe_(\n listener: (changeData: IArrayDidChange<any>) => void,\n fireImmediately = false\n ): Lambda {\n if (fireImmediately) {\n listener(<IArraySplice<any>>{\n observableKind: \"array\",\n object: this.proxy_ as any,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n })\n }\n return registerListener(this, listener)\n }\n\n getArrayLength_(): number {\n this.atom_.reportObserved()\n return this.values_.length\n }\n\n setArrayLength_(newLength: number) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n die(\"Out of range: \" + newLength)\n }\n let currentLength = this.values_.length\n if (newLength === currentLength) {\n return\n } else if (newLength > currentLength) {\n const newItems = new Array(newLength - currentLength)\n for (let i = 0; i < newLength - currentLength; i++) {\n newItems[i] = undefined\n } // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems)\n } else {\n this.spliceWithArray_(newLength, currentLength - newLength)\n }\n }\n\n updateArrayLength_(oldLength: number, delta: number) {\n if (oldLength !== this.lastKnownLength_) {\n die(16)\n }\n this.lastKnownLength_ += delta\n if (this.legacyMode_ && delta > 0) {\n reserveArrayBuffer(oldLength + delta + 1)\n }\n }\n\n spliceWithArray_(index: number, deleteCount?: number, newItems?: any[]): any[] {\n checkIfStateModificationsAreAllowed(this.atom_)\n const length = this.values_.length\n\n if (index === undefined) {\n index = 0\n } else if (index > length) {\n index = length\n } else if (index < 0) {\n index = Math.max(0, length + index)\n }\n\n if (arguments.length === 1) {\n deleteCount = length - index\n } else if (deleteCount === undefined || deleteCount === null) {\n deleteCount = 0\n } else {\n deleteCount = Math.max(0, Math.min(deleteCount, length - index))\n }\n\n if (newItems === undefined) {\n newItems = EMPTY_ARRAY\n }\n\n if (hasInterceptors(this)) {\n const change = interceptChange<IArrayWillSplice<any>>(this as any, {\n object: this.proxy_ as any,\n type: SPLICE,\n index,\n removedCount: deleteCount,\n added: newItems\n })\n if (!change) {\n return EMPTY_ARRAY\n }\n deleteCount = change.removedCount\n newItems = change.added\n }\n\n newItems =\n newItems.length === 0 ? newItems : newItems.map(v => this.enhancer_(v, undefined))\n if (this.legacyMode_ || __DEV__) {\n const lengthDelta = newItems.length - deleteCount\n this.updateArrayLength_(length, lengthDelta) // checks if internal array wasn't modified\n }\n const res = this.spliceItemsIntoValues_(index, deleteCount, newItems)\n\n if (deleteCount !== 0 || newItems.length !== 0) {\n this.notifyArraySplice_(index, newItems, res)\n }\n return this.dehanceValues_(res)\n }\n\n spliceItemsIntoValues_(index: number, deleteCount: number, newItems: any[]): any[] {\n if (newItems.length < MAX_SPLICE_SIZE) {\n return this.values_.splice(index, deleteCount, ...newItems)\n } else {\n // The items removed by the splice\n const res = this.values_.slice(index, index + deleteCount)\n // The items that that should remain at the end of the array\n let oldItems = this.values_.slice(index + deleteCount)\n // New length is the previous length + addition count - deletion count\n this.values_.length += newItems.length - deleteCount\n for (let i = 0; i < newItems.length; i++) {\n this.values_[index + i] = newItems[i]\n }\n for (let i = 0; i < oldItems.length; i++) {\n this.values_[index + newItems.length + i] = oldItems[i]\n }\n return res\n }\n }\n\n notifyArrayChildUpdate_(index: number, newValue: any, oldValue: any) {\n const notifySpy = !this.owned_ && isSpyEnabled()\n const notify = hasListeners(this)\n const change: IArrayDidChange | null =\n notify || notifySpy\n ? ({\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index,\n newValue,\n oldValue\n } as const)\n : null\n\n // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n this.atom_.reportChanged()\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n notifyArraySplice_(index: number, added: any[], removed: any[]) {\n const notifySpy = !this.owned_ && isSpyEnabled()\n const notify = hasListeners(this)\n const change: IArraySplice | null =\n notify || notifySpy\n ? ({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index,\n removed,\n added,\n removedCount: removed.length,\n addedCount: added.length\n } as const)\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n this.atom_.reportChanged()\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n get_(index: number): any | undefined {\n if (this.legacyMode_ && index >= this.values_.length) {\n console.warn(\n __DEV__\n ? `[mobx.array] Attempt to read an array index (${index}) that is out of bounds (${this.values_.length}). Please check length first. Out of bound indices will not be tracked by MobX`\n : `[mobx] Out of bounds read: ${index}`\n )\n return undefined\n }\n this.atom_.reportObserved()\n return this.dehanceValue_(this.values_[index])\n }\n\n set_(index: number, newValue: any) {\n const values = this.values_\n if (this.legacyMode_ && index > values.length) {\n // out of bounds\n die(17, index, values.length)\n }\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_)\n const oldValue = values[index]\n if (hasInterceptors(this)) {\n const change = interceptChange<IArrayWillChange<any>>(this as any, {\n type: UPDATE,\n object: this.proxy_ as any, // since \"this\" is the real array we need to pass its proxy\n index,\n newValue\n })\n if (!change) {\n return\n }\n newValue = change.newValue\n }\n newValue = this.enhancer_(newValue, oldValue)\n const changed = newValue !== oldValue\n if (changed) {\n values[index] = newValue\n this.notifyArrayChildUpdate_(index, newValue, oldValue)\n }\n } else {\n // For out of bound index, we don't create an actual sparse array,\n // but rather fill the holes with undefined (same as setArrayLength_).\n // This could be considered a bug.\n const newItems = new Array(index + 1 - values.length)\n for (let i = 0; i < newItems.length - 1; i++) {\n newItems[i] = undefined\n } // No Array.fill everywhere...\n newItems[newItems.length - 1] = newValue\n this.spliceWithArray_(values.length, 0, newItems)\n }\n }\n}\n\nexport function createObservableArray<T>(\n initialValues: T[] | undefined,\n enhancer: IEnhancer<T>,\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n owned = false\n): IObservableArray<T> {\n assertProxies()\n const adm = new ObservableArrayAdministration(name, enhancer, owned, false)\n addHiddenFinalProp(adm.values_, $mobx, adm)\n const proxy = new Proxy(adm.values_, arrayTraps) as any\n adm.proxy_ = proxy\n if (initialValues && initialValues.length) {\n const prev = allowStateChangesStart(true)\n adm.spliceWithArray_(0, 0, initialValues)\n allowStateChangesEnd(prev)\n }\n return proxy\n}\n\n// eslint-disable-next-line\nexport var arrayExtensions = {\n clear(): any[] {\n return this.splice(0)\n },\n\n replace(newItems: any[]) {\n const adm: ObservableArrayAdministration = this[$mobx]\n return adm.spliceWithArray_(0, adm.values_.length, newItems)\n },\n\n // Used by JSON.stringify\n toJSON(): any[] {\n return this.slice()\n },\n\n /*\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\n * since these functions alter the inner structure of the array, the have side effects.\n * Because the have side effects, they should not be used in computed function,\n * and for that reason the do not call dependencyState.notifyObserved\n */\n splice(index: number, deleteCount?: number, ...newItems: any[]): any[] {\n const adm: ObservableArrayAdministration = this[$mobx]\n switch (arguments.length) {\n case 0:\n return []\n case 1:\n return adm.spliceWithArray_(index)\n case 2:\n return adm.spliceWithArray_(index, deleteCount)\n }\n return adm.spliceWithArray_(index, deleteCount, newItems)\n },\n\n spliceWithArray(index: number, deleteCount?: number, newItems?: any[]): any[] {\n return (this[$mobx] as ObservableArrayAdministration).spliceWithArray_(\n index,\n deleteCount,\n newItems\n )\n },\n\n push(...items: any[]): number {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.spliceWithArray_(adm.values_.length, 0, items)\n return adm.values_.length\n },\n\n pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0]\n },\n\n shift() {\n return this.splice(0, 1)[0]\n },\n\n unshift(...items: any[]): number {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.spliceWithArray_(0, 0, items)\n return adm.values_.length\n },\n\n reverse(): any[] {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\")\n }\n this.replace(this.slice().reverse())\n return this\n },\n\n sort(): any[] {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\")\n }\n const copy = this.slice()\n copy.sort.apply(copy, arguments)\n this.replace(copy)\n return this\n },\n\n remove(value: any): boolean {\n const adm: ObservableArrayAdministration = this[$mobx]\n const idx = adm.dehanceValues_(adm.values_).indexOf(value)\n if (idx > -1) {\n this.splice(idx, 1)\n return true\n }\n return false\n }\n}\n\n/**\n * Wrap function from prototype\n * Without this, everything works as well, but this works\n * faster as everything works on unproxied values\n */\naddArrayExtension(\"concat\", simpleFunc)\naddArrayExtension(\"flat\", simpleFunc)\naddArrayExtension(\"includes\", simpleFunc)\naddArrayExtension(\"indexOf\", simpleFunc)\naddArrayExtension(\"join\", simpleFunc)\naddArrayExtension(\"lastIndexOf\", simpleFunc)\naddArrayExtension(\"slice\", simpleFunc)\naddArrayExtension(\"toString\", simpleFunc)\naddArrayExtension(\"toLocaleString\", simpleFunc)\n// map\naddArrayExtension(\"every\", mapLikeFunc)\naddArrayExtension(\"filter\", mapLikeFunc)\naddArrayExtension(\"find\", mapLikeFunc)\naddArrayExtension(\"findIndex\", mapLikeFunc)\naddArrayExtension(\"flatMap\", mapLikeFunc)\naddArrayExtension(\"forEach\", mapLikeFunc)\naddArrayExtension(\"map\", mapLikeFunc)\naddArrayExtension(\"some\", mapLikeFunc)\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc)\naddArrayExtension(\"reduceRight\", reduceLikeFunc)\n\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName)\n }\n}\n\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function () {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n return dehancedValues[funcName].apply(dehancedValues, arguments)\n }\n}\n\n// Make sure callbacks recieve correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n return dehancedValues[funcName]((element, index) => {\n return callback.call(thisArg, element, index, this)\n })\n }\n}\n\n// Make sure callbacks recieve correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function () {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n // #2432 - reduce behavior depends on arguments.length\n const callback = arguments[0]\n arguments[0] = (accumulator, currentValue, index) => {\n return callback(accumulator, currentValue, index, this)\n }\n return dehancedValues[funcName].apply(dehancedValues, arguments)\n }\n}\n\nconst isObservableArrayAdministration = createInstanceofPredicate(\n \"ObservableArrayAdministration\",\n ObservableArrayAdministration\n)\n\nexport function isObservableArray(thing): thing is IObservableArray<any> {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx])\n}\n","import { IComputedDidChange } from \"./computedvalue\"\nimport { IValueDidChange, IBoxDidChange } from \"./../types/observablevalue\"\nimport { IObjectDidChange } from \"./../types/observableobject\"\nimport { IArrayDidChange } from \"./../types/observablearray\"\nimport { Lambda, globalState, once, ISetDidChange, IMapDidChange } from \"../internal\"\n\nexport function isSpyEnabled() {\n return __DEV__ && !!globalState.spyListeners.length\n}\n\nexport type PureSpyEvent =\n | { type: \"action\"; name: string; object: unknown; arguments: unknown[] }\n | { type: \"scheduled-reaction\"; name: string }\n | { type: \"reaction\"; name: string }\n | { type: \"error\"; name: string; message: string; error: string }\n | IComputedDidChange<unknown>\n | IObjectDidChange<unknown>\n | IArrayDidChange<unknown>\n | IMapDidChange<unknown, unknown>\n | ISetDidChange<unknown>\n | IValueDidChange<unknown>\n | IBoxDidChange<unknown>\n | { type: \"report-end\"; spyReportEnd: true; time?: number }\n\ntype SpyEvent = PureSpyEvent & { spyReportStart?: true }\n\nexport function spyReport(event: SpyEvent) {\n if (!__DEV__) {\n return\n } // dead code elimination can do the rest\n if (!globalState.spyListeners.length) {\n return\n }\n const listeners = globalState.spyListeners\n for (let i = 0, l = listeners.length; i < l; i++) {\n listeners[i](event)\n }\n}\n\nexport function spyReportStart(event: PureSpyEvent) {\n if (!__DEV__) {\n return\n }\n const change = { ...event, spyReportStart: true as const }\n spyReport(change)\n}\n\nconst END_EVENT: SpyEvent = { type: \"report-end\", spyReportEnd: true }\n\nexport function spyReportEnd(change?: { time?: number }) {\n if (!__DEV__) {\n return\n }\n if (change) {\n spyReport({ ...change, type: \"report-end\", spyReportEnd: true })\n } else {\n spyReport(END_EVENT)\n }\n}\n\nexport function spy(listener: (change: SpyEvent) => void): Lambda {\n if (!__DEV__) {\n console.warn(`[mobx.spy] Is a no-op in production builds`)\n return function () {}\n } else {\n globalState.spyListeners.push(listener)\n return once(() => {\n globalState.spyListeners = globalState.spyListeners.filter(l => l !== listener)\n })\n }\n}\n","import {\n $mobx,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n Lambda,\n ObservableValue,\n checkIfStateModificationsAreAllowed,\n createAtom,\n createInstanceofPredicate,\n deepEnhancer,\n getNextId,\n getPlainObjectKeys,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isES6Map,\n isPlainObject,\n isSpyEnabled,\n makeIterable,\n notifyListeners,\n referenceEnhancer,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n stringifyKey,\n transaction,\n untracked,\n onBecomeUnobserved,\n globalState,\n die,\n isFunction,\n UPDATE,\n IAtom,\n PureSpyEvent,\n allowStateChanges\n} from \"../internal\"\n\nexport interface IKeyValueMap<V = any> {\n [key: string]: V\n}\n\nexport type IMapEntry<K = any, V = any> = [K, V]\nexport type IReadonlyMapEntry<K = any, V = any> = readonly [K, V]\nexport type IMapEntries<K = any, V = any> = IMapEntry<K, V>[]\nexport type IReadonlyMapEntries<K = any, V = any> = IReadonlyMapEntry<K, V>[]\n\nexport type IMapDidChange<K = any, V = any> = { observableKind: \"map\"; debugObjectName: string } & (\n | {\n object: ObservableMap<K, V>\n name: K // actual the key or index, but this is based on the ancient .observe proposal for consistency\n type: \"update\"\n newValue: V\n oldValue: V\n }\n | {\n object: ObservableMap<K, V>\n name: K\n type: \"add\"\n newValue: V\n }\n | {\n object: ObservableMap<K, V>\n name: K\n type: \"delete\"\n oldValue: V\n }\n)\n\nexport interface IMapWillChange<K = any, V = any> {\n object: ObservableMap<K, V>\n type: \"update\" | \"add\" | \"delete\"\n name: K\n newValue?: V\n}\n\nconst ObservableMapMarker = {}\n\nexport const ADD = \"add\"\nexport const DELETE = \"delete\"\n\nexport type IObservableMapInitialValues<K = any, V = any> =\n | IMapEntries<K, V>\n | IReadonlyMapEntries<K, V>\n | IKeyValueMap<V>\n | Map<K, V>\n\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\nexport class ObservableMap<K = any, V = any>\n implements Map<K, V>, IInterceptable<IMapWillChange<K, V>>, IListenable {\n [$mobx] = ObservableMapMarker\n data_: Map<K, ObservableValue<V>>\n hasMap_: Map<K, ObservableValue<boolean>> // hasMap, not hashMap >-).\n keysAtom_: IAtom\n interceptors_\n changeListeners_\n dehancer: any\n\n constructor(\n initialData?: IObservableMapInitialValues<K, V>,\n public enhancer_: IEnhancer<V> = deepEnhancer,\n public name_ = __DEV__ ? \"ObservableMap@\" + getNextId() : \"ObservableMap\"\n ) {\n if (!isFunction(Map)) {\n die(18)\n }\n this.keysAtom_ = createAtom(__DEV__ ? `${this.name_}.keys()` : \"ObservableMap.keys()\")\n this.data_ = new Map()\n this.hasMap_ = new Map()\n allowStateChanges(true, () => {\n this.merge(initialData)\n })\n }\n\n private has_(key: K): boolean {\n return this.data_.has(key)\n }\n\n has(key: K): boolean {\n if (!globalState.trackingDerivation) {\n return this.has_(key)\n }\n\n let entry = this.hasMap_.get(key)\n if (!entry) {\n const newEntry = (entry = new ObservableValue(\n this.has_(key),\n referenceEnhancer,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableMap.key?\",\n false\n ))\n this.hasMap_.set(key, newEntry)\n onBecomeUnobserved(newEntry, () => this.hasMap_.delete(key))\n }\n\n return entry.get()\n }\n\n set(key: K, value: V) {\n const hasKey = this.has_(key)\n if (hasInterceptors(this)) {\n const change = interceptChange<IMapWillChange<K, V>>(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n })\n if (!change) {\n return this\n }\n value = change.newValue!\n }\n if (hasKey) {\n this.updateValue_(key, value)\n } else {\n this.addValue_(key, value)\n }\n return this\n }\n\n delete(key: K): boolean {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n if (hasInterceptors(this)) {\n const change = interceptChange<IMapWillChange<K, V>>(this, {\n type: DELETE,\n object: this,\n name: key\n })\n if (!change) {\n return false\n }\n }\n if (this.has_(key)) {\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange<K, V> | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: (<any>this.data_.get(key)).value_,\n name: key\n }\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n transaction(() => {\n this.keysAtom_.reportChanged()\n this.hasMap_.get(key)?.setNewValue_(false)\n const observable = this.data_.get(key)!\n observable.setNewValue_(undefined as any)\n this.data_.delete(key)\n })\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n return true\n }\n return false\n }\n\n private updateValue_(key: K, newValue: V | undefined) {\n const observable = this.data_.get(key)!\n newValue = (observable as any).prepareNewValue_(newValue) as V\n if (newValue !== globalState.UNCHANGED) {\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange<K, V> | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: (observable as any).value_,\n name: key,\n newValue\n }\n : null\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n observable.setNewValue_(newValue as V)\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n }\n\n private addValue_(key: K, newValue: V) {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n transaction(() => {\n const observable = new ObservableValue(\n newValue,\n this.enhancer_,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}` : \"ObservableMap.key\",\n false\n )\n this.data_.set(key, observable)\n newValue = (observable as any).value_ // value might have been changed\n this.hasMap_.get(key)?.setNewValue_(true)\n this.keysAtom_.reportChanged()\n })\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange<K, V> | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue\n }\n : null\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n get(key: K): V | undefined {\n if (this.has(key)) {\n return this.dehanceValue_(this.data_.get(key)!.get())\n }\n return this.dehanceValue_(undefined)\n }\n\n private dehanceValue_<X extends V | undefined>(value: X): X {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n keys(): IterableIterator<K> {\n this.keysAtom_.reportObserved()\n return this.data_.keys()\n }\n\n values(): IterableIterator<V> {\n const self = this\n const keys = this.keys()\n return makeIterable({\n next() {\n const { done, value } = keys.next()\n return {\n done,\n value: done ? (undefined as any) : self.get(value)\n }\n }\n })\n }\n\n entries(): IterableIterator<IMapEntry<K, V>> {\n const self = this\n const keys = this.keys()\n return makeIterable({\n next() {\n const { done, value } = keys.next()\n return {\n done,\n value: done ? (undefined as any) : ([value, self.get(value)!] as [K, V])\n }\n }\n })\n }\n\n [Symbol.iterator]() {\n return this.entries()\n }\n\n forEach(callback: (value: V, key: K, object: Map<K, V>) => void, thisArg?) {\n for (const [key, value] of this) {\n callback.call(thisArg, value, key, this)\n }\n }\n\n /** Merge another object into this object, returns this. */\n merge(other?: IObservableMapInitialValues<K, V>): ObservableMap<K, V> {\n if (isObservableMap(other)) {\n other = new Map(other)\n }\n transaction(() => {\n if (isPlainObject(other)) {\n getPlainObjectKeys(other).forEach((key: any) =>\n this.set(key as K, (other as IKeyValueMap)[key])\n )\n } else if (Array.isArray(other)) {\n other.forEach(([key, value]) => this.set(key, value))\n } else if (isES6Map(other)) {\n if (other.constructor !== Map) {\n die(19, other)\n }\n other.forEach((value, key) => this.set(key, value))\n } else if (other !== null && other !== undefined) {\n die(20, other)\n }\n })\n return this\n }\n\n clear() {\n transaction(() => {\n untracked(() => {\n for (const key of this.keys()) {\n this.delete(key)\n }\n })\n })\n }\n\n replace(values: IObservableMapInitialValues<K, V>): ObservableMap<K, V> {\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(() => {\n // Convert to map so we can do quick key lookups\n const replacementMap = convertToMap(values)\n const orderedData = new Map()\n // Used for optimization\n let keysReportChangedCalled = false\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for (const key of this.data_.keys()) {\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n const deleted = this.delete(key)\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true\n } else {\n // Delete prevented by interceptor\n const value = this.data_.get(key)\n orderedData.set(key, value)\n }\n }\n }\n // Merge entries\n for (const [key, value] of replacementMap.entries()) {\n // We will want to know whether a new key is added\n const keyExisted = this.data_.has(key)\n // Add or update value\n this.set(key, value)\n // The addition could have been prevent by interceptor\n if (this.data_.has(key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n const value = this.data_.get(key)\n orderedData.set(key, value)\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true\n }\n }\n }\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (this.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n this.keysAtom_.reportChanged()\n } else {\n const iter1 = this.data_.keys()\n const iter2 = orderedData.keys()\n let next1 = iter1.next()\n let next2 = iter2.next()\n while (!next1.done) {\n if (next1.value !== next2.value) {\n this.keysAtom_.reportChanged()\n break\n }\n next1 = iter1.next()\n next2 = iter2.next()\n }\n }\n }\n // Use correctly ordered map\n this.data_ = orderedData\n })\n return this\n }\n\n get size(): number {\n this.keysAtom_.reportObserved()\n return this.data_.size\n }\n\n toString(): string {\n return \"[object ObservableMap]\"\n }\n\n toJSON(): [K, V][] {\n return Array.from(this)\n }\n\n get [Symbol.toStringTag]() {\n return \"Map\"\n }\n\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n observe_(listener: (changes: IMapDidChange<K, V>) => void, fireImmediately?: boolean): Lambda {\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with maps.\")\n }\n return registerListener(this, listener)\n }\n\n intercept_(handler: IInterceptor<IMapWillChange<K, V>>): Lambda {\n return registerInterceptor(this, handler)\n }\n}\n\n// eslint-disable-next-line\nexport var isObservableMap = createInstanceofPredicate(\"ObservableMap\", ObservableMap) as (\n thing: any\n) => thing is ObservableMap<any, any>\n\nfunction convertToMap(dataStructure: any): Map<any, any> {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure)\n } else if (isPlainObject(dataStructure)) {\n const map = new Map()\n for (const key in dataStructure) {\n map.set(key, dataStructure[key])\n }\n return map\n } else {\n return die(21, dataStructure)\n }\n}\n","import {\n $mobx,\n createAtom,\n deepEnhancer,\n getNextId,\n IEnhancer,\n isSpyEnabled,\n hasListeners,\n IListenable,\n registerListener,\n Lambda,\n spyReportStart,\n notifyListeners,\n spyReportEnd,\n createInstanceofPredicate,\n hasInterceptors,\n interceptChange,\n IInterceptable,\n IInterceptor,\n registerInterceptor,\n checkIfStateModificationsAreAllowed,\n untracked,\n makeIterable,\n transaction,\n isES6Set,\n IAtom,\n DELETE,\n ADD,\n die,\n isFunction\n} from \"../internal\"\n\nconst ObservableSetMarker = {}\n\nexport type IObservableSetInitialValues<T> = Set<T> | readonly T[]\n\nexport type ISetDidChange<T = any> =\n | {\n object: ObservableSet<T>\n observableKind: \"set\"\n debugObjectName: string\n type: \"add\"\n newValue: T\n }\n | {\n object: ObservableSet<T>\n observableKind: \"set\"\n debugObjectName: string\n type: \"delete\"\n oldValue: T\n }\n\nexport type ISetWillChange<T = any> =\n | {\n type: \"delete\"\n object: ObservableSet<T>\n oldValue: T\n }\n | {\n type: \"add\"\n object: ObservableSet<T>\n newValue: T\n }\n\nexport class ObservableSet<T = any> implements Set<T>, IInterceptable<ISetWillChange>, IListenable {\n [$mobx] = ObservableSetMarker\n private data_: Set<any> = new Set()\n atom_: IAtom\n changeListeners_\n interceptors_\n dehancer: any\n enhancer_: (newV: any, oldV: any | undefined) => any\n\n constructor(\n initialData?: IObservableSetInitialValues<T>,\n enhancer: IEnhancer<T> = deepEnhancer,\n public name_ = __DEV__ ? \"ObservableSet@\" + getNextId() : \"ObservableSet\"\n ) {\n if (!isFunction(Set)) {\n die(22)\n }\n this.atom_ = createAtom(this.name_)\n this.enhancer_ = (newV, oldV) => enhancer(newV, oldV, name_)\n if (initialData) {\n this.replace(initialData)\n }\n }\n\n private dehanceValue_<X extends T | undefined>(value: X): X {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n clear() {\n transaction(() => {\n untracked(() => {\n for (const value of this.data_.values()) {\n this.delete(value)\n }\n })\n })\n }\n\n forEach(callbackFn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any) {\n for (const value of this) {\n callbackFn.call(thisArg, value, value, this)\n }\n }\n\n get size() {\n this.atom_.reportObserved()\n return this.data_.size\n }\n\n add(value: T) {\n checkIfStateModificationsAreAllowed(this.atom_)\n if (hasInterceptors(this)) {\n const change = interceptChange<ISetWillChange<T>>(this, {\n type: ADD,\n object: this,\n newValue: value\n })\n if (!change) {\n return this\n }\n // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n if (!this.has(value)) {\n transaction(() => {\n this.data_.add(this.enhancer_(value, undefined))\n this.atom_.reportChanged()\n })\n const notifySpy = __DEV__ && isSpyEnabled()\n const notify = hasListeners(this)\n const change =\n notify || notifySpy\n ? <ISetDidChange<T>>{\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n }\n : null\n if (notifySpy && __DEV__) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (notifySpy && __DEV__) {\n spyReportEnd()\n }\n }\n\n return this\n }\n\n delete(value: T) {\n if (hasInterceptors(this)) {\n const change = interceptChange<ISetWillChange<T>>(this, {\n type: DELETE,\n object: this,\n oldValue: value\n })\n if (!change) {\n return false\n }\n }\n if (this.has(value)) {\n const notifySpy = __DEV__ && isSpyEnabled()\n const notify = hasListeners(this)\n const change =\n notify || notifySpy\n ? <ISetDidChange<T>>{\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n }\n : null\n\n if (notifySpy && __DEV__) {\n spyReportStart(change!)\n }\n transaction(() => {\n this.atom_.reportChanged()\n this.data_.delete(value)\n })\n if (notify) {\n notifyListeners(this, change)\n }\n if (notifySpy && __DEV__) {\n spyReportEnd()\n }\n return true\n }\n return false\n }\n\n has(value: T) {\n this.atom_.reportObserved()\n return this.data_.has(this.dehanceValue_(value))\n }\n\n entries() {\n let nextIndex = 0\n const keys = Array.from(this.keys())\n const values = Array.from(this.values())\n return makeIterable<[T, T]>({\n next() {\n const index = nextIndex\n nextIndex += 1\n return index < values.length\n ? { value: [keys[index], values[index]], done: false }\n : { done: true }\n }\n } as any)\n }\n\n keys(): IterableIterator<T> {\n return this.values()\n }\n\n values(): IterableIterator<T> {\n this.atom_.reportObserved()\n const self = this\n let nextIndex = 0\n const observableValues = Array.from(this.data_.values())\n return makeIterable<T>({\n next() {\n return nextIndex < observableValues.length\n ? { value: self.dehanceValue_(observableValues[nextIndex++]), done: false }\n : { done: true }\n }\n } as any)\n }\n\n replace(other: ObservableSet<T> | IObservableSetInitialValues<T>): ObservableSet<T> {\n if (isObservableSet(other)) {\n other = new Set(other)\n }\n\n transaction(() => {\n if (Array.isArray(other)) {\n this.clear()\n other.forEach(value => this.add(value))\n } else if (isES6Set(other)) {\n this.clear()\n other.forEach(value => this.add(value))\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other)\n }\n })\n\n return this\n }\n observe_(listener: (changes: ISetDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n // ... 'fireImmediately' could also be true?\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with sets.\")\n }\n return registerListener(this, listener)\n }\n\n intercept_(handler: IInterceptor<ISetWillChange<T>>): Lambda {\n return registerInterceptor(this, handler)\n }\n\n toJSON(): T[] {\n return Array.from(this)\n }\n\n toString(): string {\n return \"[object ObservableSet]\"\n }\n\n [Symbol.iterator]() {\n return this.values()\n }\n\n get [Symbol.toStringTag]() {\n return \"Set\"\n }\n}\n\n// eslint-disable-next-line\nexport var isObservableSet = createInstanceofPredicate(\"ObservableSet\", ObservableSet) as (\n thing: any\n) => thing is ObservableSet<any>\n","import {\n CreateObservableOptions,\n getAnnotationFromOptions,\n propagateChanged,\n isAnnotation,\n $mobx,\n Atom,\n Annotation,\n ComputedValue,\n IAtom,\n IComputedValueOptions,\n IEnhancer,\n IInterceptable,\n IListenable,\n Lambda,\n ObservableValue,\n addHiddenProp,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isObject,\n isPlainObject,\n isSpyEnabled,\n notifyListeners,\n referenceEnhancer,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n startBatch,\n stringifyKey,\n globalState,\n ADD,\n UPDATE,\n die,\n hasProp,\n getDescriptor,\n storedAnnotationsSymbol,\n ownKeys,\n isOverride,\n defineProperty,\n autoAnnotation,\n getAdministration,\n getDebugName,\n objectPrototype,\n MakeResult\n} from \"../internal\"\n\nconst descriptorCache = Object.create(null)\n\nexport type IObjectDidChange<T = any> = {\n observableKind: \"object\"\n name: PropertyKey\n object: T\n debugObjectName: string\n} & (\n | {\n type: \"add\"\n newValue: any\n }\n | {\n type: \"update\"\n oldValue: any\n newValue: any\n }\n | {\n type: \"remove\"\n oldValue: any\n }\n)\n\nexport type IObjectWillChange<T = any> =\n | {\n object: T\n type: \"update\" | \"add\"\n name: PropertyKey\n newValue: any\n }\n | {\n object: T\n type: \"remove\"\n name: PropertyKey\n }\n\nconst REMOVE = \"remove\"\n\nexport class ObservableObjectAdministration\n implements IInterceptable<IObjectWillChange>, IListenable\n{\n keysAtom_: IAtom\n changeListeners_\n interceptors_\n proxy_: any\n isPlainObject_: boolean\n appliedAnnotations_?: object\n private pendingKeys_: undefined | Map<PropertyKey, ObservableValue<boolean>>\n\n constructor(\n public target_: any,\n public values_ = new Map<PropertyKey, ObservableValue<any> | ComputedValue<any>>(),\n public name_: string,\n // Used anytime annotation is not explicitely provided\n public defaultAnnotation_: Annotation = autoAnnotation\n ) {\n this.keysAtom_ = new Atom(__DEV__ ? `${this.name_}.keys` : \"ObservableObject.keys\")\n // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_)\n if (__DEV__ && !isAnnotation(this.defaultAnnotation_)) {\n die(`defaultAnnotation must be valid annotation`)\n }\n if (__DEV__) {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {}\n }\n }\n\n getObservablePropValue_(key: PropertyKey): any {\n return this.values_.get(key)!.get()\n }\n\n setObservablePropValue_(key: PropertyKey, newValue): boolean | null {\n const observable = this.values_.get(key)\n if (observable instanceof ComputedValue) {\n observable.set(newValue)\n return true\n }\n\n // intercept\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue\n })\n if (!change) {\n return null\n }\n newValue = (change as any).newValue\n }\n newValue = (observable as any).prepareNewValue_(newValue)\n\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n const change: IObjectDidChange | null =\n notify || notifySpy\n ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: (observable as any).value_,\n name: key,\n newValue\n }\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n ;(observable as ObservableValue<any>).setNewValue_(newValue)\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n return true\n }\n\n get_(key: PropertyKey): any {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key)\n }\n return this.target_[key]\n }\n\n /**\n * @param {PropertyKey} key\n * @param {any} value\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n set_(key: PropertyKey, value: any, proxyTrap: boolean = false): boolean | null {\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value)\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value)\n } else {\n // Non-observable\n this.target_[key] = value\n return true\n }\n } else {\n // New prop\n return this.extend_(\n key,\n { value, enumerable: true, writable: true, configurable: true },\n this.defaultAnnotation_,\n proxyTrap\n )\n }\n }\n\n // Trap for \"in\"\n has_(key: PropertyKey): boolean {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_\n }\n this.pendingKeys_ ||= new Map()\n let entry = this.pendingKeys_.get(key)\n if (!entry) {\n entry = new ObservableValue(\n key in this.target_,\n referenceEnhancer,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableObject.key?\",\n false\n )\n this.pendingKeys_.set(key, entry)\n }\n return entry.get()\n }\n\n /**\n * @param {PropertyKey} key\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\n */\n make_(key: PropertyKey, annotation: Annotation | boolean): void {\n if (annotation === true) {\n annotation = this.defaultAnnotation_\n }\n if (annotation === false) {\n return\n }\n assertAnnotable(this, annotation, key)\n if (!(key in this.target_)) {\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if (this.target_[storedAnnotationsSymbol]?.[key]) {\n return // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, `${this.name_}.${key.toString()}`)\n }\n }\n let source = this.target_\n while (source && source !== objectPrototype) {\n const descriptor = getDescriptor(source, key)\n if (descriptor) {\n const outcome = annotation.make_(this, key, descriptor, source)\n if (outcome === MakeResult.Cancel) {\n return\n }\n if (outcome === MakeResult.Break) {\n break\n }\n }\n source = Object.getPrototypeOf(source)\n }\n recordAnnotationApplied(this, annotation, key)\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n extend_(\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n annotation: Annotation | boolean,\n proxyTrap: boolean = false\n ): boolean | null {\n if (annotation === true) {\n annotation = this.defaultAnnotation_\n }\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap)\n }\n assertAnnotable(this, annotation, key)\n const outcome = annotation.extend_(this, key, descriptor, proxyTrap)\n if (outcome) {\n recordAnnotationApplied(this, annotation, key)\n }\n return outcome\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n defineProperty_(\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n })\n if (!change) {\n return null\n }\n const { newValue } = change as any\n if (descriptor.value !== newValue) {\n descriptor = {\n ...descriptor,\n value: newValue\n }\n }\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value)\n } finally {\n endBatch()\n }\n return true\n }\n\n // If original descriptor becomes relevant, move this to annotation directly\n defineObservableProperty_(\n key: PropertyKey,\n value: any,\n enhancer: IEnhancer<any>,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n })\n if (!change) {\n return null\n }\n value = (change as any).newValue\n }\n\n const cachedDescriptor = getCachedObservablePropDescriptor(key)\n const descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n const observable = new ObservableValue(\n value,\n enhancer,\n __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\",\n false\n )\n\n this.values_.set(key, observable)\n\n // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_)\n } finally {\n endBatch()\n }\n return true\n }\n\n // If original descriptor becomes relevant, move this to annotation directly\n defineComputedProperty_(\n key: PropertyKey,\n options: IComputedValueOptions<any>,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n })\n if (!change) {\n return null\n }\n }\n options.name ||= __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\"\n options.context = this.proxy_ || this.target_\n const cachedDescriptor = getCachedObservablePropDescriptor(key)\n const descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n this.values_.set(key, new ComputedValue(options))\n\n // Notify\n this.notifyPropertyAddition_(key, undefined)\n } finally {\n endBatch()\n }\n return true\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n delete_(key: PropertyKey, proxyTrap: boolean = false): boolean | null {\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true\n }\n\n // Intercept\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n })\n // Cancelled\n if (!change) {\n return null\n }\n }\n\n // Delete\n try {\n startBatch()\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n const observable = this.values_.get(key)\n // Value needed for spies/listeners\n let value = undefined\n // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n value = getDescriptor(this.target_, key)?.value\n }\n // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false\n }\n } else {\n delete this.target_[key]\n }\n // Allow re-annotating this field\n if (__DEV__) {\n delete this.appliedAnnotations_![key]\n }\n // Clear observable\n if (observable) {\n this.values_.delete(key)\n // for computed, value is undefined\n if (observable instanceof ObservableValue) {\n value = observable.value_\n }\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable)\n }\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged()\n\n // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n this.pendingKeys_?.get(key)?.set(key in this.target_)\n\n // Notify spies/listeners\n if (notify || notifySpy) {\n const change: IObjectDidChange = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n }\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n } finally {\n endBatch()\n }\n return true\n }\n\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n observe_(callback: (changes: IObjectDidChange) => void, fireImmediately?: boolean): Lambda {\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support the fire immediately property for observable objects.\")\n }\n return registerListener(this, callback)\n }\n\n intercept_(handler): Lambda {\n return registerInterceptor(this, handler)\n }\n\n notifyPropertyAddition_(key: PropertyKey, value: any) {\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n if (notify || notifySpy) {\n const change: IObjectDidChange | null =\n notify || notifySpy\n ? ({\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } as const)\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n this.pendingKeys_?.get(key)?.set(true)\n\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged()\n }\n\n ownKeys_(): ArrayLike<string | symbol> {\n this.keysAtom_.reportObserved()\n return ownKeys(this.target_)\n }\n\n keys_(): PropertyKey[] {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved()\n return Object.keys(this.target_)\n }\n}\n\nexport interface IIsObservableObject {\n $mobx: ObservableObjectAdministration\n}\n\nexport function asObservableObject(\n target: any,\n options?: CreateObservableOptions\n): IIsObservableObject {\n if (__DEV__ && options && isObservableObject(target)) {\n die(`Options can't be provided for already observable objects.`)\n }\n\n if (hasProp(target, $mobx)) {\n if (__DEV__ && !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\n `Cannot convert '${getDebugName(target)}' into observable object:` +\n `\\nThe target is already observable of different type.` +\n `\\nExtending builtins is not supported.`\n )\n }\n return target\n }\n\n if (__DEV__ && !Object.isExtensible(target)) {\n die(\"Cannot make the designated object observable; it is not extensible\")\n }\n\n const name =\n options?.name ??\n (__DEV__\n ? `${\n isPlainObject(target) ? \"ObservableObject\" : target.constructor.name\n }@${getNextId()}`\n : \"ObservableObject\")\n\n const adm = new ObservableObjectAdministration(\n target,\n new Map(),\n String(name),\n getAnnotationFromOptions(options)\n )\n\n addHiddenProp(target, $mobx, adm)\n\n return target\n}\n\nconst isObservableObjectAdministration = createInstanceofPredicate(\n \"ObservableObjectAdministration\",\n ObservableObjectAdministration\n)\n\nfunction getCachedObservablePropDescriptor(key) {\n return (\n descriptorCache[key] ||\n (descriptorCache[key] = {\n get() {\n return this[$mobx].getObservablePropValue_(key)\n },\n set(value) {\n return this[$mobx].setObservablePropValue_(key, value)\n }\n })\n )\n}\n\nexport function isObservableObject(thing: any): boolean {\n if (isObject(thing)) {\n return isObservableObjectAdministration((thing as any)[$mobx])\n }\n return false\n}\n\nexport function recordAnnotationApplied(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey\n) {\n if (__DEV__) {\n adm.appliedAnnotations_![key] = annotation\n }\n // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n delete adm.target_[storedAnnotationsSymbol]?.[key]\n}\n\nfunction assertAnnotable(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey\n) {\n // Valid annotation\n if (__DEV__ && !isAnnotation(annotation)) {\n die(`Cannot annotate '${adm.name_}.${key.toString()}': Invalid annotation.`)\n }\n\n /*\n // Configurable, not sealed, not frozen\n // Possibly not needed, just a little better error then the one thrown by engine.\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\n if (__DEV__) {\n const configurable = getDescriptor(adm.target_, key)?.configurable\n const frozen = Object.isFrozen(adm.target_)\n const sealed = Object.isSealed(adm.target_)\n if (!configurable || frozen || sealed) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const requestedAnnotationType = annotation.annotationType_\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\n if (frozen) {\n error += `\\nObject is frozen.`\n }\n if (sealed) {\n error += `\\nObject is sealed.`\n }\n if (!configurable) {\n error += `\\nproperty is not configurable.`\n // Mention only if caused by us to avoid confusion\n if (hasProp(adm.appliedAnnotations!, key)) {\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\n }\n }\n die(error)\n }\n }\n */\n\n // Not annotated\n if (__DEV__ && !isOverride(annotation) && hasProp(adm.appliedAnnotations_!, key)) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const currentAnnotationType = adm.appliedAnnotations_![key].annotationType_\n const requestedAnnotationType = annotation.annotationType_\n die(\n `Cannot apply '${requestedAnnotationType}' to '${fieldName}':` +\n `\\nThe field is already annotated with '${currentAnnotationType}'.` +\n `\\nRe-annotating fields is not allowed.` +\n `\\nUse 'override' annotation for methods overridden by subclass.`\n )\n }\n}\n","import {\n getNextId,\n addHiddenFinalProp,\n allowStateChangesStart,\n allowStateChangesEnd,\n makeIterable,\n addHiddenProp,\n ObservableArrayAdministration,\n $mobx,\n arrayExtensions,\n IEnhancer,\n isObservableArray,\n IObservableArray,\n defineProperty\n} from \"../internal\"\n\n// Bug in safari 9.* (or iOS 9 safari mobile). See #364\nconst ENTRY_0 = createArrayEntryDescriptor(0)\n\nconst safariPrototypeSetterInheritanceBug = (() => {\n let v = false\n const p = {}\n Object.defineProperty(p, \"0\", {\n set: () => {\n v = true\n }\n })\n Object.create(p)[\"0\"] = 1\n return v === false\n})()\n\n/**\n * This array buffer contains two lists of properties, so that all arrays\n * can recycle their property definitions, which significantly improves performance of creating\n * properties on the fly.\n */\nlet OBSERVABLE_ARRAY_BUFFER_SIZE = 0\n\n// Typescript workaround to make sure ObservableArray extends Array\nclass StubArray {}\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto)\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto\n } else {\n ctor.prototype = proto\n }\n}\ninherit(StubArray, Array.prototype)\n\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\n\nclass LegacyObservableArray<T> extends StubArray {\n constructor(\n initialValues: T[] | undefined,\n enhancer: IEnhancer<T>,\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n owned = false\n ) {\n super()\n\n const adm = new ObservableArrayAdministration(name, enhancer, owned, true)\n adm.proxy_ = this as any\n addHiddenFinalProp(this, $mobx, adm)\n\n if (initialValues && initialValues.length) {\n const prev = allowStateChangesStart(true)\n // @ts-ignore\n this.spliceWithArray(0, 0, initialValues)\n allowStateChangesEnd(prev)\n }\n\n if (safariPrototypeSetterInheritanceBug) {\n // Seems that Safari won't use numeric prototype setter untill any * numeric property is\n // defined on the instance. After that it works fine, even if this property is deleted.\n Object.defineProperty(this, \"0\", ENTRY_0)\n }\n }\n\n concat(...arrays: T[][]): T[] {\n ;(this[$mobx] as ObservableArrayAdministration).atom_.reportObserved()\n return Array.prototype.concat.apply(\n (this as any).slice(),\n //@ts-ignore\n arrays.map(a => (isObservableArray(a) ? a.slice() : a))\n )\n }\n\n get length(): number {\n return (this[$mobx] as ObservableArrayAdministration).getArrayLength_()\n }\n\n set length(newLength: number) {\n ;(this[$mobx] as ObservableArrayAdministration).setArrayLength_(newLength)\n }\n\n get [Symbol.toStringTag]() {\n return \"Array\"\n }\n\n [Symbol.iterator]() {\n const self = this\n let nextIndex = 0\n return makeIterable({\n next() {\n return nextIndex < self.length\n ? { value: self[nextIndex++], done: false }\n : { done: true, value: undefined }\n }\n })\n }\n}\n\nObject.entries(arrayExtensions).forEach(([prop, fn]) => {\n if (prop !== \"concat\") {\n addHiddenProp(LegacyObservableArray.prototype, prop, fn)\n }\n})\n\nfunction createArrayEntryDescriptor(index: number) {\n return {\n enumerable: false,\n configurable: true,\n get: function () {\n return this[$mobx].get_(index)\n },\n set: function (value) {\n this[$mobx].set_(index, value)\n }\n }\n}\n\nfunction createArrayBufferItem(index: number) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index))\n}\n\nexport function reserveArrayBuffer(max: number) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (let index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n createArrayBufferItem(index)\n }\n OBSERVABLE_ARRAY_BUFFER_SIZE = max\n }\n}\n\nreserveArrayBuffer(1000)\n\nexport function createLegacyArray<T>(\n initialValues: T[] | undefined,\n enhancer: IEnhancer<T>,\n name?: string\n): IObservableArray<T> {\n return new LegacyObservableArray(initialValues, enhancer, name) as any\n}\n","import { isAction } from \"../api/action\"\nimport {\n $mobx,\n IDepTreeNode,\n isAtom,\n isComputedValue,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isReaction,\n isObservableSet,\n die,\n isFunction\n} from \"../internal\"\n\nexport function getAtom(thing: any, property?: PropertyKey): IDepTreeNode {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) {\n die(23)\n }\n return (thing as any)[$mobx].atom_\n }\n if (isObservableSet(thing)) {\n return thing.atom_\n }\n if (isObservableMap(thing)) {\n if (property === undefined) {\n return thing.keysAtom_\n }\n const observable = thing.data_.get(property) || thing.hasMap_.get(property)\n if (!observable) {\n die(25, property, getDebugName(thing))\n }\n return observable\n }\n if (property && !thing[$mobx]) {\n thing[property]\n } // See #1072\n if (isObservableObject(thing)) {\n if (!property) {\n return die(26)\n }\n const observable = (thing as any)[$mobx].values_.get(property)\n if (!observable) {\n die(27, property, getDebugName(thing))\n }\n return observable\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx]\n }\n }\n die(28)\n}\n\nexport function getAdministration(thing: any, property?: string) {\n if (!thing) {\n die(29)\n }\n if (property !== undefined) {\n return getAdministration(getAtom(thing, property))\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing\n }\n if (isObservableMap(thing) || isObservableSet(thing)) {\n return thing\n }\n if (thing[$mobx]) {\n return thing[$mobx]\n }\n die(24, thing)\n}\n\nexport function getDebugName(thing: any, property?: string): string {\n let named\n if (property !== undefined) {\n named = getAtom(thing, property)\n } else if (isAction(thing)) {\n return thing.name\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing)\n } else {\n // valid for arrays as well\n named = getAtom(thing)\n }\n return named.name_\n}\n","import {\n isES6Map,\n isObservableArray,\n isObservableMap,\n isES6Set,\n isObservableSet,\n hasProp,\n isFunction,\n objectPrototype\n} from \"../internal\"\n\ndeclare const Symbol\nconst toString = objectPrototype.toString\n\nexport function deepEqual(a: any, b: any, depth: number = -1): boolean {\n return eq(a, b, depth)\n}\n\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a: any, b: any, depth: number, aStack?: any[], bStack?: any[]) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) {\n return a !== 0 || 1 / a === 1 / b\n }\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) {\n return false\n }\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) {\n return b !== b\n }\n // Exhaust primitive checks\n const type = typeof a\n if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n return false\n }\n\n // Compare `[[Class]]` names.\n const className = toString.call(a)\n if (className !== toString.call(b)) {\n return false\n }\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) {\n return +b !== +b\n }\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b\n case \"[object Symbol]\":\n return (\n typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b)\n )\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++\n }\n break\n }\n // Unwrap any wrapped objects.\n a = unwrap(a)\n b = unwrap(b)\n\n const areArrays = className === \"[object Array]\"\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") {\n return false\n }\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n const aCtor = a.constructor,\n bCtor = b.constructor\n if (\n aCtor !== bCtor &&\n !(\n isFunction(aCtor) &&\n aCtor instanceof aCtor &&\n isFunction(bCtor) &&\n bCtor instanceof bCtor\n ) &&\n \"constructor\" in a &&\n \"constructor\" in b\n ) {\n return false\n }\n }\n\n if (depth === 0) {\n return false\n } else if (depth < 0) {\n depth = -1\n }\n\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || []\n bStack = bStack || []\n let length = aStack.length\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) {\n return bStack[length] === b\n }\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a)\n bStack.push(b)\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length\n if (length !== b.length) {\n return false\n }\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n return false\n }\n }\n } else {\n // Deep compare objects.\n const keys = Object.keys(a)\n let key\n length = keys.length\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length) {\n return false\n }\n while (length--) {\n // Deep compare each member\n key = keys[length]\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n return false\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop()\n bStack.pop()\n return true\n}\n\nfunction unwrap(a: any) {\n if (isObservableArray(a)) {\n return a.slice()\n }\n if (isES6Map(a) || isObservableMap(a)) {\n return Array.from(a.entries())\n }\n if (isES6Set(a) || isObservableSet(a)) {\n return Array.from(a.entries())\n }\n return a\n}\n","export function makeIterable<T>(iterator: Iterator<T>): IterableIterator<T> {\n iterator[Symbol.iterator] = getSelf\n return iterator as any\n}\n\nfunction getSelf() {\n return this\n}\n","import { makeObservable } from \"mobx\"\nimport { useState } from \"react\"\n\nif (!useState) {\n throw new Error(\"mobx-react-lite requires React with Hooks support\")\n}\nif (!makeObservable) {\n throw new Error(\"mobx-react-lite@3 requires mobx at least version 6 to be available\")\n}\n","/**\n * (c) Michel Weststrate 2015 - 2020\n * MIT Licensed\n *\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\n * this is a good place to start:\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n *\n * Source folders:\n * ===============\n *\n * - api/ Most of the public static methods exposed by the module can be found here.\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\n * - utils/ Utility stuff.\n *\n */\nimport { die } from \"./errors\"\nimport { getGlobal } from \"./utils/global\"\n;[\"Symbol\", \"Map\", \"Set\"].forEach(m => {\n let g = getGlobal()\n if (typeof g[m] === \"undefined\") {\n die(`MobX requires global '${m}' to be available or polyfilled`)\n }\n})\n\nimport { spy, getDebugName, $mobx } from \"./internal\"\n\nexport {\n IObservable,\n IDepTreeNode,\n Reaction,\n IReactionPublic,\n IReactionDisposer,\n untracked,\n IAtom,\n createAtom,\n spy,\n IComputedValue,\n IEqualsComparer,\n comparer,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n IObjectWillChange,\n IObjectDidChange,\n isObservableObject,\n IValueDidChange,\n IValueWillChange,\n IObservableValue,\n isObservableValue as isBoxedObservable,\n IObservableArray,\n IArrayWillChange,\n IArrayWillSplice,\n IArraySplice,\n IArrayUpdate,\n IArrayDidChange,\n isObservableArray,\n IKeyValueMap,\n ObservableMap,\n IMapEntries,\n IMapEntry,\n IMapWillChange,\n IMapDidChange,\n isObservableMap,\n IObservableMapInitialValues,\n ObservableSet,\n isObservableSet,\n ISetDidChange,\n ISetWillChange,\n IObservableSetInitialValues,\n transaction,\n observable,\n IObservableFactory,\n CreateObservableOptions,\n computed,\n IComputedFactory,\n isObservable,\n isObservableProp,\n isComputed,\n isComputedProp,\n extendObservable,\n observe,\n intercept,\n autorun,\n IAutorunOptions,\n reaction,\n IReactionOptions,\n when,\n IWhenOptions,\n action,\n isAction,\n runInAction,\n IActionFactory,\n keys,\n values,\n entries,\n set,\n remove,\n has,\n get,\n apiOwnKeys as ownKeys,\n apiDefineProperty as defineProperty,\n configure,\n onBecomeObserved,\n onBecomeUnobserved,\n flow,\n isFlow,\n flowResult,\n FlowCancellationError,\n isFlowCancellationError,\n toJS,\n trace,\n IObserverTree,\n IDependencyTree,\n getDependencyTree,\n getObserverTree,\n resetGlobalState as _resetGlobalState,\n getGlobalState as _getGlobalState,\n getDebugName,\n getAtom,\n getAdministration as _getAdministration,\n allowStateChanges as _allowStateChanges,\n runInAction as _allowStateChangesInsideComputed, // This has become the default behavior in Mobx 6\n Lambda,\n $mobx,\n isComputingDerivation as _isComputingDerivation,\n onReactionError,\n interceptReads as _interceptReads,\n IComputedValueOptions,\n IActionRunInfo,\n _startAction,\n _endAction,\n allowStateReadsStart as _allowStateReadsStart,\n allowStateReadsEnd as _allowStateReadsEnd,\n makeObservable,\n makeAutoObservable,\n autoAction as _autoAction,\n AnnotationsMap,\n AnnotationMapEntry,\n override\n} from \"./internal\"\n\n// Devtools support\ndeclare const __MOBX_DEVTOOLS_GLOBAL_HOOK__: { injectMobx: (any) => void }\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy,\n extras: {\n getDebugName\n },\n $mobx\n })\n}\n","import { configure } from \"mobx\"\n\nexport function defaultNoopBatch(callback: () => void) {\n callback()\n}\n\nexport function observerBatching(reactionScheduler: any) {\n if (!reactionScheduler) {\n reactionScheduler = defaultNoopBatch\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\n \"[MobX] Failed to get unstable_batched updates from react-dom / react-native\"\n )\n }\n }\n configure({ reactionScheduler })\n}\n\nexport const isObserverBatched = () => {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Deprecated\")\n }\n\n return true\n}\n","import { getDependencyTree, Reaction } from \"mobx\"\n\nexport function printDebugValue(v: Reaction) {\n return getDependencyTree(v)\n}\n","export declare class FinalizationRegistryType<T> {\n constructor(finalize: (value: T) => void)\n register(target: object, value: T, token?: object): void\n unregister(token: object): void\n}\n\ndeclare const FinalizationRegistry: typeof FinalizationRegistryType | undefined\n\nexport const REGISTRY_FINALIZE_AFTER = 10_000\nexport const REGISTRY_SWEEP_INTERVAL = 10_000\n\nexport class TimerBasedFinalizationRegistry<T> implements FinalizationRegistryType<T> {\n private registrations: Map<unknown, { value: T; registeredAt: number }> = new Map()\n private sweepTimeout: ReturnType<typeof setTimeout> | undefined\n\n constructor(private readonly finalize: (value: T) => void) {}\n\n // Token is actually required with this impl\n register(target: object, value: T, token?: object) {\n this.registrations.set(token, {\n value,\n registeredAt: Date.now()\n })\n this.scheduleSweep()\n }\n\n unregister(token: unknown) {\n this.registrations.delete(token)\n }\n\n // Bound so it can be used directly as setTimeout callback.\n sweep = (maxAge = REGISTRY_FINALIZE_AFTER) => {\n // cancel timeout so we can force sweep anytime\n clearTimeout(this.sweepTimeout)\n this.sweepTimeout = undefined\n\n const now = Date.now()\n this.registrations.forEach((registration, token) => {\n if (now - registration.registeredAt >= maxAge) {\n this.finalize(registration.value)\n this.registrations.delete(token)\n }\n })\n\n if (this.registrations.size > 0) {\n this.scheduleSweep()\n }\n }\n\n // Bound so it can be exported directly as clearTimers test utility.\n finalizeAllImmediately = () => {\n this.sweep(0)\n }\n\n private scheduleSweep() {\n if (this.sweepTimeout === undefined) {\n this.sweepTimeout = setTimeout(this.sweep, REGISTRY_SWEEP_INTERVAL)\n }\n }\n}\n\nexport const UniversalFinalizationRegistry =\n typeof FinalizationRegistry !== \"undefined\"\n ? FinalizationRegistry\n : TimerBasedFinalizationRegistry\n","import { Reaction } from \"mobx\"\nimport { UniversalFinalizationRegistry } from \"./UniversalFinalizationRegistry\"\n\nexport const observerFinalizationRegistry = new UniversalFinalizationRegistry(\n (adm: { reaction: Reaction | null }) => {\n adm.reaction?.dispose()\n adm.reaction = null\n }\n)\n","let globalIsUsingStaticRendering = false\n\nexport function enableStaticRendering(enable: boolean) {\n globalIsUsingStaticRendering = enable\n}\n\nexport function isUsingStaticRendering(): boolean {\n return globalIsUsingStaticRendering\n}\n","import { Reaction } from \"mobx\"\nimport React from \"react\"\nimport { printDebugValue } from \"./utils/printDebugValue\"\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\"\nimport { isUsingStaticRendering } from \"./staticRendering\"\n\nfunction observerComponentNameFor(baseComponentName: string) {\n return `observer${baseComponentName}`\n}\n\ntype ObserverAdministration = {\n /** The Reaction created during first render, which may be leaked */\n reaction: Reaction | null\n\n /**\n * Whether the component has yet completed mounting (for us, whether\n * its useEffect has run)\n */\n mounted: boolean\n\n /**\n * Whether the observables that the component is tracking changed between\n * the first render and the first useEffect.\n */\n changedBeforeMount: boolean\n}\n\n/**\n * We use class to make it easier to detect in heap snapshots by name\n */\nclass ObjectToBeRetainedByReact {}\n\nfunction objectToBeRetainedByReactFactory() {\n return new ObjectToBeRetainedByReact()\n}\n\nexport function useObserver<T>(fn: () => T, baseComponentName: string = \"observed\"): T {\n if (isUsingStaticRendering()) {\n return fn()\n }\n\n const [objectRetainedByReact] = React.useState(objectToBeRetainedByReactFactory)\n // Force update, see #2982\n const [, setState] = React.useState()\n const forceUpdate = () => setState([] as any)\n\n // StrictMode/ConcurrentMode/Suspense may mean that our component is\n // rendered and abandoned multiple times, so we need to track leaked\n // Reactions.\n const admRef = React.useRef<ObserverAdministration | null>(null)\n\n if (!admRef.current) {\n // First render\n admRef.current = {\n reaction: null,\n mounted: false,\n changedBeforeMount: false\n }\n }\n\n const adm = admRef.current!\n\n if (!adm.reaction) {\n // First render or component was not committed and reaction was disposed by registry\n adm.reaction = new Reaction(observerComponentNameFor(baseComponentName), () => {\n // Observable has changed, meaning we want to re-render\n // BUT if we're a component that hasn't yet got to the useEffect()\n // stage, we might be a component that _started_ to render, but\n // got dropped, and we don't want to make state changes then.\n // (It triggers warnings in StrictMode, for a start.)\n if (adm.mounted) {\n // We have reached useEffect(), so we're mounted, and can trigger an update\n forceUpdate()\n } else {\n // We haven't yet reached useEffect(), so we'll need to trigger a re-render\n // when (and if) useEffect() arrives.\n adm.changedBeforeMount = true\n }\n })\n\n observerFinalizationRegistry.register(objectRetainedByReact, adm, adm)\n }\n\n React.useDebugValue(adm.reaction, printDebugValue)\n\n React.useEffect(() => {\n observerFinalizationRegistry.unregister(adm)\n\n adm.mounted = true\n\n if (adm.reaction) {\n if (adm.changedBeforeMount) {\n // Got a change before mount, force an update\n adm.changedBeforeMount = false\n forceUpdate()\n }\n } else {\n // The reaction we set up in our render has been disposed.\n // This can be due to bad timings of renderings, e.g. our\n // component was paused for a _very_ long time, and our\n // reaction got cleaned up\n\n // Re-create the reaction\n adm.reaction = new Reaction(observerComponentNameFor(baseComponentName), () => {\n // We've definitely already been mounted at this point\n forceUpdate()\n })\n forceUpdate()\n }\n\n return () => {\n adm.reaction!.dispose()\n adm.reaction = null\n adm.mounted = false\n adm.changedBeforeMount = false\n }\n }, [])\n\n // render the original component, but have the\n // reaction track the observables, so that rendering\n // can be invalidated (see above) once a dependency changes\n let rendering!: T\n let exception\n adm.reaction.track(() => {\n try {\n rendering = fn()\n } catch (e) {\n exception = e\n }\n })\n\n if (exception) {\n throw exception // re-throw any exceptions caught during rendering\n }\n\n return rendering\n}\n","import { forwardRef, memo } from \"react\"\n\nimport { isUsingStaticRendering } from \"./staticRendering\"\nimport { useObserver } from \"./useObserver\"\n\nlet warnObserverOptionsDeprecated = true\n\nconst hasSymbol = typeof Symbol === \"function\" && Symbol.for\n// Using react-is had some issues (and operates on elements, not on types), see #608 / #609\nconst ReactForwardRefSymbol = hasSymbol\n ? Symbol.for(\"react.forward_ref\")\n : typeof forwardRef === \"function\" && forwardRef((props: any) => null)[\"$$typeof\"]\n\nconst ReactMemoSymbol = hasSymbol\n ? Symbol.for(\"react.memo\")\n : typeof memo === \"function\" && memo((props: any) => null)[\"$$typeof\"]\n\nexport interface IObserverOptions {\n readonly forwardRef?: boolean\n}\n\nexport function observer<P extends object, TRef = {}>(\n baseComponent: React.ForwardRefRenderFunction<TRef, P>,\n options: IObserverOptions & { forwardRef: true }\n): React.MemoExoticComponent<\n React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>\n>\n\nexport function observer<P extends object, TRef = {}>(\n baseComponent: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<P> & React.RefAttributes<TRef>\n >\n): React.MemoExoticComponent<\n React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>\n>\n\nexport function observer<P extends object>(\n baseComponent: React.FunctionComponent<P>,\n options?: IObserverOptions\n): React.FunctionComponent<P>\n\nexport function observer<\n C extends React.FunctionComponent<any> | React.ForwardRefRenderFunction<any>,\n Options extends IObserverOptions\n>(\n baseComponent: C,\n options?: Options\n): Options extends { forwardRef: true }\n ? C extends React.ForwardRefRenderFunction<infer TRef, infer P>\n ? C &\n React.MemoExoticComponent<\n React.ForwardRefExoticComponent<\n React.PropsWithoutRef<P> & React.RefAttributes<TRef>\n >\n >\n : never /* forwardRef set for a non forwarding component */\n : C & { displayName: string }\n\n// n.b. base case is not used for actual typings or exported in the typing files\nexport function observer<P extends object, TRef = {}>(\n baseComponent:\n | React.ForwardRefRenderFunction<TRef, P>\n | React.FunctionComponent<P>\n | React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>,\n // TODO remove in next major\n options?: IObserverOptions\n) {\n if (process.env.NODE_ENV !== \"production\" && warnObserverOptionsDeprecated && options) {\n warnObserverOptionsDeprecated = false\n console.warn(\n `[mobx-react-lite] \\`observer(fn, { forwardRef: true })\\` is deprecated, use \\`observer(React.forwardRef(fn))\\``\n )\n }\n\n if (ReactMemoSymbol && baseComponent[\"$$typeof\"] === ReactMemoSymbol) {\n throw new Error(\n `[mobx-react-lite] You are trying to use \\`observer\\` on a function component wrapped in either another \\`observer\\` or \\`React.memo\\`. The observer already applies 'React.memo' for you.`\n )\n }\n\n // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\n if (isUsingStaticRendering()) {\n return baseComponent\n }\n\n let useForwardRef = options?.forwardRef ?? false\n let render = baseComponent\n\n const baseComponentName = baseComponent.displayName || baseComponent.name\n\n // If already wrapped with forwardRef, unwrap,\n // so we can patch render and apply memo\n if (ReactForwardRefSymbol && baseComponent[\"$$typeof\"] === ReactForwardRefSymbol) {\n useForwardRef = true\n render = baseComponent[\"render\"]\n if (typeof render !== \"function\") {\n throw new Error(\n `[mobx-react-lite] \\`render\\` property of ForwardRef was not a function`\n )\n }\n }\n\n let observerComponent = (props: any, ref: React.Ref<TRef>) => {\n return useObserver(() => render(props, ref), baseComponentName)\n }\n\n // Don't set `displayName` for anonymous components,\n // so the `displayName` can be customized by user, see #3192.\n if (baseComponentName !== \"\") {\n ;(observerComponent as React.FunctionComponent).displayName = baseComponentName\n }\n\n // Support legacy context: `contextTypes` must be applied before `memo`\n if ((baseComponent as any).contextTypes) {\n ;(observerComponent as React.FunctionComponent).contextTypes = (\n baseComponent as any\n ).contextTypes\n }\n\n if (useForwardRef) {\n // `forwardRef` must be applied prior `memo`\n // `forwardRef(observer(cmp))` throws:\n // \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))\"\n observerComponent = forwardRef(observerComponent)\n }\n\n // memo; we are not interested in deep updates\n // in props; we assume that if deep objects are changed,\n // this is in observables, which would have been tracked anyway\n observerComponent = memo(observerComponent)\n\n copyStaticProperties(baseComponent, observerComponent)\n\n if (\"production\" !== process.env.NODE_ENV) {\n Object.defineProperty(observerComponent, \"contextTypes\", {\n set() {\n throw new Error(\n `[mobx-react-lite] \\`${\n this.displayName || this.type?.displayName || \"Component\"\n }.contextTypes\\` must be set before applying \\`observer\\`.`\n )\n }\n })\n }\n\n return observerComponent\n}\n\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nconst hoistBlackList: any = {\n $$typeof: true,\n render: true,\n compare: true,\n type: true,\n // Don't redefine `displayName`,\n // it's defined as getter-setter pair on `memo` (see #3192).\n displayName: true\n}\n\nfunction copyStaticProperties(base: any, target: any) {\n Object.keys(base).forEach(key => {\n if (!hoistBlackList[key]) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key)!)\n }\n })\n}\n","import \"./utils/assertEnvironment\"\n\nimport { unstable_batchedUpdates as batch } from \"./utils/reactBatchedUpdates\"\nimport { observerBatching } from \"./utils/observerBatching\"\nimport { useDeprecated } from \"./utils/utils\"\nimport { useObserver as useObserverOriginal } from \"./useObserver\"\nimport { enableStaticRendering } from \"./staticRendering\"\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\"\n\nobserverBatching(batch)\n\nexport { isUsingStaticRendering, enableStaticRendering } from \"./staticRendering\"\nexport { observer, IObserverOptions } from \"./observer\"\nexport { Observer } from \"./ObserverComponent\"\nexport { useLocalObservable } from \"./useLocalObservable\"\nexport { useLocalStore } from \"./useLocalStore\"\nexport { useAsObservableSource } from \"./useAsObservableSource\"\n\nexport const clearTimers = observerFinalizationRegistry[\"finalizeAllImmediately\"] ?? (() => {})\n\nexport function useObserver<T>(fn: () => T, baseComponentName: string = \"observed\"): T {\n if (\"production\" !== process.env.NODE_ENV) {\n useDeprecated(\n \"[mobx-react-lite] 'useObserver(fn)' is deprecated. Use `<Observer>{fn}</Observer>` instead, or wrap the entire component in `observer`.\"\n )\n }\n return useObserverOriginal(fn, baseComponentName)\n}\n\nexport { isObserverBatched, observerBatching } from \"./utils/observerBatching\"\n\nexport function useStaticRendering(enable: boolean) {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\n \"[mobx-react-lite] 'useStaticRendering' is deprecated, use 'enableStaticRendering' instead\"\n )\n }\n enableStaticRendering(enable)\n}\n","let symbolId = 0\nfunction createSymbol(name: string): symbol | string {\n if (typeof Symbol === \"function\") {\n return Symbol(name)\n }\n const symbol = `__$mobx-react ${name} (${symbolId})`\n symbolId++\n return symbol\n}\n\nconst createdSymbols = {}\nexport function newSymbol(name: string): symbol | string {\n if (!createdSymbols[name]) {\n createdSymbols[name] = createSymbol(name)\n }\n return createdSymbols[name]\n}\n\nexport function shallowEqual(objA: any, objB: any): boolean {\n //From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (is(objA, objB)) {\n return true\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false\n }\n const keysA = Object.keys(objA)\n const keysB = Object.keys(objB)\n if (keysA.length !== keysB.length) {\n return false\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false\n }\n }\n return true\n}\n\nfunction is(x: any, y: any): boolean {\n // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y\n } else {\n return x !== x && y !== y\n }\n}\n\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nconst hoistBlackList = {\n $$typeof: 1,\n render: 1,\n compare: 1,\n type: 1,\n childContextTypes: 1,\n contextType: 1,\n contextTypes: 1,\n defaultProps: 1,\n getDefaultProps: 1,\n getDerivedStateFromError: 1,\n getDerivedStateFromProps: 1,\n mixins: 1,\n displayName: 1,\n propTypes: 1\n}\n\nexport function copyStaticProperties(base: object, target: object): void {\n const protoProps = Object.getOwnPropertyNames(Object.getPrototypeOf(base))\n Object.getOwnPropertyNames(base).forEach(key => {\n if (!hoistBlackList[key] && protoProps.indexOf(key) === -1) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key)!)\n }\n })\n}\n\n/**\n * Helper to set `prop` to `this` as non-enumerable (hidden prop)\n * @param target\n * @param prop\n * @param value\n */\nexport function setHiddenProp(target: object, prop: any, value: any): void {\n if (!Object.hasOwnProperty.call(target, prop)) {\n Object.defineProperty(target, prop, {\n enumerable: false,\n configurable: true,\n writable: true,\n value\n })\n } else {\n target[prop] = value\n }\n}\n\n/**\n * Utilities for patching componentWillUnmount, to make sure @disposeOnUnmount works correctly icm with user defined hooks\n * and the handler provided by mobx-react\n */\nconst mobxMixins = newSymbol(\"patchMixins\")\nconst mobxPatchedDefinition = newSymbol(\"patchedDefinition\")\n\nexport interface Mixins extends Record<string, any> {\n locks: number\n methods: Array<Function>\n}\n\nfunction getMixins(target: object, methodName: string): Mixins {\n const mixins = (target[mobxMixins] = target[mobxMixins] || {})\n const methodMixins = (mixins[methodName] = mixins[methodName] || {})\n methodMixins.locks = methodMixins.locks || 0\n methodMixins.methods = methodMixins.methods || []\n return methodMixins\n}\n\nfunction wrapper(realMethod: Function, mixins: Mixins, ...args: Array<any>) {\n // locks are used to ensure that mixins are invoked only once per invocation, even on recursive calls\n mixins.locks++\n\n try {\n let retVal\n if (realMethod !== undefined && realMethod !== null) {\n retVal = realMethod.apply(this, args)\n }\n\n return retVal\n } finally {\n mixins.locks--\n if (mixins.locks === 0) {\n mixins.methods.forEach(mx => {\n mx.apply(this, args)\n })\n }\n }\n}\n\nfunction wrapFunction(realMethod: Function, mixins: Mixins): (...args: Array<any>) => any {\n const fn = function (...args: Array<any>) {\n wrapper.call(this, realMethod, mixins, ...args)\n }\n return fn\n}\n\nexport function patch(target: object, methodName: string, mixinMethod: Function): void {\n const mixins = getMixins(target, methodName)\n\n if (mixins.methods.indexOf(mixinMethod) < 0) {\n mixins.methods.push(mixinMethod)\n }\n\n const oldDefinition = Object.getOwnPropertyDescriptor(target, methodName)\n if (oldDefinition && oldDefinition[mobxPatchedDefinition]) {\n // already patched definition, do not repatch\n return\n }\n\n const originalMethod = target[methodName]\n const newDefinition = createDefinition(\n target,\n methodName,\n oldDefinition ? oldDefinition.enumerable : undefined,\n mixins,\n originalMethod\n )\n\n Object.defineProperty(target, methodName, newDefinition)\n}\n\nfunction createDefinition(\n target: object,\n methodName: string,\n enumerable: any,\n mixins: Mixins,\n originalMethod: Function\n): PropertyDescriptor {\n let wrappedFunc = wrapFunction(originalMethod, mixins)\n\n return {\n [mobxPatchedDefinition]: true,\n get: function () {\n return wrappedFunc\n },\n set: function (value) {\n if (this === target) {\n wrappedFunc = wrapFunction(value, mixins)\n } else {\n // when it is an instance of the prototype/a child prototype patch that particular case again separately\n // since we need to store separate values depending on wether it is the actual instance, the prototype, etc\n // e.g. the method for super might not be the same as the method for the prototype which might be not the same\n // as the method for the instance\n const newDefinition = createDefinition(this, methodName, enumerable, mixins, value)\n Object.defineProperty(this, methodName, newDefinition)\n }\n },\n configurable: true,\n enumerable: enumerable\n }\n}\n","import { PureComponent, Component } from \"react\"\nimport {\n createAtom,\n _allowStateChanges,\n Reaction,\n $mobx,\n _allowStateReadsStart,\n _allowStateReadsEnd\n} from \"mobx\"\nimport { isUsingStaticRendering } from \"mobx-react-lite\"\n\nimport { newSymbol, shallowEqual, setHiddenProp, patch } from \"./utils/utils\"\n\nconst mobxAdminProperty = $mobx || \"$mobx\" // BC\nconst mobxObserverProperty = newSymbol(\"isMobXReactObserver\")\nconst mobxIsUnmounted = newSymbol(\"isUnmounted\")\nconst skipRenderKey = newSymbol(\"skipRender\")\nconst isForcingUpdateKey = newSymbol(\"isForcingUpdate\")\n\nexport function makeClassComponentObserver(\n componentClass: React.ComponentClass<any, any>\n): React.ComponentClass<any, any> {\n const target = componentClass.prototype\n\n if (componentClass[mobxObserverProperty]) {\n const displayName = getDisplayName(target)\n console.warn(\n `The provided component class (${displayName})\n has already been declared as an observer component.`\n )\n } else {\n componentClass[mobxObserverProperty] = true\n }\n\n if (target.componentWillReact) {\n throw new Error(\"The componentWillReact life-cycle event is no longer supported\")\n }\n if (componentClass[\"__proto__\"] !== PureComponent) {\n if (!target.shouldComponentUpdate) {\n target.shouldComponentUpdate = observerSCU\n } else if (target.shouldComponentUpdate !== observerSCU) {\n // n.b. unequal check, instead of existence check, as @observer might be on superclass as well\n throw new Error(\n \"It is not allowed to use shouldComponentUpdate in observer based components.\"\n )\n }\n }\n\n // this.props and this.state are made observable, just to make sure @computed fields that\n // are defined inside the component, and which rely on state or props, re-compute if state or props change\n // (otherwise the computed wouldn't update and become stale on props change, since props are not observable)\n // However, this solution is not without it's own problems: https://github.com/mobxjs/mobx-react/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Aobservable-props-or-not+\n makeObservableProp(target, \"props\")\n makeObservableProp(target, \"state\")\n if (componentClass.contextType) {\n makeObservableProp(target, \"context\")\n }\n\n const originalRender = target.render\n if (typeof originalRender !== \"function\") {\n const displayName = getDisplayName(target)\n throw new Error(\n `[mobx-react] class component (${displayName}) is missing \\`render\\` method.` +\n `\\n\\`observer\\` requires \\`render\\` being a function defined on prototype.` +\n `\\n\\`render = () => {}\\` or \\`render = function() {}\\` is not supported.`\n )\n }\n target.render = function () {\n this.render = isUsingStaticRendering()\n ? originalRender\n : createReactiveRender.call(this, originalRender)\n return this.render()\n }\n patch(target, \"componentDidMount\", function () {\n this[mobxIsUnmounted] = false\n if (!this.render[mobxAdminProperty]) {\n // Reaction is re-created automatically during render, but a component can re-mount and skip render #3395.\n // To re-create the reaction and re-subscribe to relevant observables we have to force an update.\n Component.prototype.forceUpdate.call(this)\n }\n })\n patch(target, \"componentWillUnmount\", function () {\n if (isUsingStaticRendering()) {\n return\n }\n\n const reaction = this.render[mobxAdminProperty]\n if (reaction) {\n reaction.dispose()\n // Forces reaction to be re-created on next render\n this.render[mobxAdminProperty] = null\n } else {\n // Render may have been hot-swapped and/or overridden by a subclass.\n const displayName = getDisplayName(this)\n console.warn(\n `The reactive render of an observer class component (${displayName})\n was overridden after MobX attached. This may result in a memory leak if the\n overridden reactive render was not properly disposed.`\n )\n }\n\n this[mobxIsUnmounted] = true\n })\n return componentClass\n}\n\n// Generates a friendly name for debugging\nfunction getDisplayName(comp: any) {\n return (\n comp.displayName ||\n comp.name ||\n (comp.constructor && (comp.constructor.displayName || comp.constructor.name)) ||\n \"<component>\"\n )\n}\n\nfunction createReactiveRender(originalRender: any) {\n /**\n * If props are shallowly modified, react will render anyway,\n * so atom.reportChanged() should not result in yet another re-render\n */\n setHiddenProp(this, skipRenderKey, false)\n /**\n * forceUpdate will re-assign this.props. We don't want that to cause a loop,\n * so detect these changes\n */\n setHiddenProp(this, isForcingUpdateKey, false)\n\n const initialName = getDisplayName(this)\n const boundOriginalRender = originalRender.bind(this)\n\n let isRenderingPending = false\n\n const createReaction = () => {\n const reaction = new Reaction(`${initialName}.render()`, () => {\n if (!isRenderingPending) {\n // N.B. Getting here *before mounting* means that a component constructor has side effects (see the relevant test in misc.test.tsx)\n // This unidiomatic React usage but React will correctly warn about this so we continue as usual\n // See #85 / Pull #44\n isRenderingPending = true\n if (this[mobxIsUnmounted] !== true) {\n let hasError = true\n try {\n setHiddenProp(this, isForcingUpdateKey, true)\n if (!this[skipRenderKey]) {\n Component.prototype.forceUpdate.call(this)\n }\n hasError = false\n } finally {\n setHiddenProp(this, isForcingUpdateKey, false)\n if (hasError) {\n reaction.dispose()\n // Forces reaction to be re-created on next render\n this.render[mobxAdminProperty] = null\n }\n }\n }\n }\n })\n reaction[\"reactComponent\"] = this\n return reaction\n }\n\n function reactiveRender() {\n isRenderingPending = false\n // Create reaction lazily to support re-mounting #3395\n const reaction = (reactiveRender[mobxAdminProperty] ??= createReaction())\n let exception: unknown = undefined\n let rendering = undefined\n reaction.track(() => {\n try {\n // TODO@major\n // Optimization: replace with _allowStateChangesStart/End (not available in mobx@6.0.0)\n rendering = _allowStateChanges(false, boundOriginalRender)\n } catch (e) {\n exception = e\n }\n })\n if (exception) {\n throw exception\n }\n return rendering\n }\n\n return reactiveRender\n}\n\nfunction observerSCU(nextProps: React.ClassAttributes<any>, nextState: any): boolean {\n if (isUsingStaticRendering()) {\n console.warn(\n \"[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side.\"\n )\n }\n // update on any state changes (as is the default)\n if (this.state !== nextState) {\n return true\n }\n // update if props are shallowly not equal, inspired by PureRenderMixin\n // we could return just 'false' here, and avoid the `skipRender` checks etc\n // however, it is nicer if lifecycle events are triggered like usually,\n // so we return true here if props are shallowly modified.\n return !shallowEqual(this.props, nextProps)\n}\n\nfunction makeObservableProp(target: any, propName: string): void {\n const valueHolderKey = newSymbol(`reactProp_${propName}_valueHolder`)\n const atomHolderKey = newSymbol(`reactProp_${propName}_atomHolder`)\n function getAtom() {\n if (!this[atomHolderKey]) {\n setHiddenProp(this, atomHolderKey, createAtom(\"reactive \" + propName))\n }\n return this[atomHolderKey]\n }\n Object.defineProperty(target, propName, {\n configurable: true,\n enumerable: true,\n get: function () {\n let prevReadState = false\n\n // Why this check? BC?\n // @ts-expect-error\n if (_allowStateReadsStart && _allowStateReadsEnd) {\n prevReadState = _allowStateReadsStart(true)\n }\n getAtom.call(this).reportObserved()\n\n // Why this check? BC?\n // @ts-expect-error\n if (_allowStateReadsStart && _allowStateReadsEnd) {\n _allowStateReadsEnd(prevReadState)\n }\n\n return this[valueHolderKey]\n },\n set: function set(v) {\n if (!this[isForcingUpdateKey] && !shallowEqual(this[valueHolderKey], v)) {\n setHiddenProp(this, valueHolderKey, v)\n setHiddenProp(this, skipRenderKey, true)\n getAtom.call(this).reportChanged()\n setHiddenProp(this, skipRenderKey, false)\n } else {\n setHiddenProp(this, valueHolderKey, v)\n }\n }\n })\n}\n","import * as React from \"react\"\nimport { observer as observerLite } from \"mobx-react-lite\"\n\nimport { makeClassComponentObserver } from \"./observerClass\"\nimport { IReactComponent } from \"./types/IReactComponent\"\n\n/**\n * Observer function / decorator\n */\nexport function observer<T extends IReactComponent>(component: T): T {\n if (component[\"isMobxInjector\"] === true) {\n console.warn(\n \"Mobx observer: You are trying to use `observer` on a component that already has `inject`. Please apply `observer` before applying `inject`\"\n )\n }\n\n if (\n Object.prototype.isPrototypeOf.call(React.Component, component) ||\n Object.prototype.isPrototypeOf.call(React.PureComponent, component)\n ) {\n // Class component\n return makeClassComponentObserver(component as React.ComponentClass<any, any>) as T\n } else {\n // Function component\n return observerLite(component as React.FunctionComponent<any>) as T\n }\n}\n","import { observable } from \"mobx\"\nimport { Component } from \"react\"\n\nif (!Component) throw new Error(\"mobx-react requires React to be available\")\nif (!observable) throw new Error(\"mobx-react requires mobx to be available\")\n\nexport {\n Observer,\n useObserver,\n useAsObservableSource,\n useLocalStore,\n isUsingStaticRendering,\n useStaticRendering,\n enableStaticRendering,\n observerBatching,\n useLocalObservable\n} from \"mobx-react-lite\"\n\nexport { observer } from \"./observer\"\n\nexport { MobXProviderContext, Provider, ProviderProps } from \"./Provider\"\nexport { inject } from \"./inject\"\nexport { disposeOnUnmount } from \"./disposeOnUnmount\"\nexport { PropTypes } from \"./propTypes\"\nexport { IWrappedComponent } from \"./types/IWrappedComponent\"\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React, { useContext, useMemo } from 'react';\nvar ThemeContext = /*#__PURE__*/React.createContext({});\nvar Consumer = ThemeContext.Consumer,\n Provider = ThemeContext.Provider;\n\nfunction ThemeProvider(_ref) {\n var prefixes = _ref.prefixes,\n children = _ref.children;\n var copiedPrefixes = useMemo(function () {\n return _extends({}, prefixes);\n }, [prefixes]);\n return /*#__PURE__*/React.createElement(Provider, {\n value: copiedPrefixes\n }, children);\n}\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n var prefixes = useContext(ThemeContext);\n return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n var _opts = opts,\n prefix = _opts.prefix,\n _opts$forwardRefAs = _opts.forwardRefAs,\n forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n var Wrapped = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n var props = _extends({}, _ref2);\n\n props[forwardRefAs] = ref;\n var bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n bsPrefix: bsPrefix\n }));\n });\n Wrapped.displayName = \"Bootstrap(\" + (Component.displayName || Component.name) + \")\";\n return Wrapped;\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"noGutters\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar defaultProps = {\n noGutters: false\n};\nvar Row = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n noGutters = _ref.noGutters,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n var sizePrefix = decoratedBsPrefix + \"-cols\";\n var classes = [];\n DEVICE_SIZES.forEach(function (brkPoint) {\n var propValue = props[brkPoint];\n delete props[brkPoint];\n var cols;\n\n if (propValue != null && typeof propValue === 'object') {\n cols = propValue.cols;\n } else {\n cols = propValue;\n }\n\n var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n if (cols != null) classes.push(\"\" + sizePrefix + infix + \"-\" + cols);\n });\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames.apply(void 0, [className, decoratedBsPrefix, noGutters && 'no-gutters'].concat(classes))\n }));\n});\nRow.displayName = 'Row';\nRow.defaultProps = defaultProps;\nexport default Row;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar Col = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'col');\n var spans = [];\n var classes = [];\n DEVICE_SIZES.forEach(function (brkPoint) {\n var propValue = props[brkPoint];\n delete props[brkPoint];\n var span;\n var offset;\n var order;\n\n if (typeof propValue === 'object' && propValue != null) {\n var _propValue$span = propValue.span;\n span = _propValue$span === void 0 ? true : _propValue$span;\n offset = propValue.offset;\n order = propValue.order;\n } else {\n span = propValue;\n }\n\n var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n if (span) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n });\n\n if (!spans.length) {\n spans.push(prefix); // plain 'col'\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames.apply(void 0, [className].concat(spans, classes))\n }));\n});\nCol.displayName = 'Col';\nexport default Col;","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.filter(function (f) {\n return f != null;\n }).reduce(function (acc, f) {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n\n if (acc === null) return f;\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n // @ts-ignore\n acc.apply(this, args); // @ts-ignore\n\n f.apply(this, args);\n };\n }, null);\n}\n\nexport default createChainedFunction;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"disabled\", \"onKeyDown\"];\nimport React from 'react';\nimport createChainedFunction from './createChainedFunction';\n\nfunction isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'a' : _ref$as,\n disabled = _ref.disabled,\n onKeyDown = _ref.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var handleClick = function handleClick(event) {\n var href = props.href,\n onClick = props.onClick;\n\n if (disabled || isTrivialHref(href)) {\n event.preventDefault();\n }\n\n if (disabled) {\n event.stopPropagation();\n return;\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === ' ') {\n event.preventDefault();\n handleClick(event);\n }\n };\n\n if (isTrivialHref(props.href)) {\n props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n // otherwise, the cursor incorrectly styled (except with role='button')\n\n props.href = props.href || '#';\n }\n\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n onClick: handleClick,\n onKeyDown: createChainedFunction(handleKeyDown, onKeyDown)\n }));\n});\nSafeAnchor.displayName = 'SafeAnchor';\nexport default SafeAnchor;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n variant: 'primary',\n active: false,\n disabled: false\n};\nvar Button = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n variant = _ref.variant,\n size = _ref.size,\n active = _ref.active,\n className = _ref.className,\n block = _ref.block,\n type = _ref.type,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n var classes = classNames(className, prefix, active && 'active', variant && prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n if (props.href) {\n return /*#__PURE__*/React.createElement(SafeAnchor, _extends({}, props, {\n as: as,\n ref: ref,\n className: classNames(classes, props.disabled && 'disabled')\n }));\n }\n\n if (ref) {\n props.ref = ref;\n }\n\n if (type) {\n props.type = type;\n } else if (!as) {\n props.type = 'button';\n }\n\n var Component = as || 'button';\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n className: classes\n }));\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"bsPrefix\", \"as\"];\nimport classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nvar pascalCase = function pascalCase(str) {\n return str[0].toUpperCase() + camelize(str).slice(1);\n};\n\n// TODO: emstricten & fix the typing here! `createWithBsPrefix<TElementType>...`\nexport default function createWithBsPrefix(prefix, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$displayName = _ref.displayName,\n displayName = _ref$displayName === void 0 ? pascalCase(prefix) : _ref$displayName,\n Component = _ref.Component,\n defaultProps = _ref.defaultProps;\n\n var BsComponent = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {\n var className = _ref2.className,\n bsPrefix = _ref2.bsPrefix,\n _ref2$as = _ref2.as,\n Tag = _ref2$as === void 0 ? Component || 'div' : _ref2$as,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: ref,\n className: classNames(className, resolvedPrefix)\n }, props));\n });\n BsComponent.defaultProps = defaultProps;\n BsComponent.displayName = displayName;\n return BsComponent;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport classNames from 'classnames';\nexport default (function (className) {\n return /*#__PURE__*/React.forwardRef(function (p, ref) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, p, {\n ref: ref,\n className: classNames(p.className, className)\n }));\n });\n});","import React from 'react';\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardContext';\nexport default context;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"variant\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n variant: null\n};\nvar CardImg = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n variant = _ref.variant,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'img' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref,\n className: classNames(variant ? prefix + \"-\" + variant : prefix, className)\n }, props));\n});\nCardImg.displayName = 'CardImg';\nCardImg.defaultProps = defaultProps;\nexport default CardImg;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"bg\", \"text\", \"border\", \"body\", \"children\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nimport CardContext from './CardContext';\nimport CardImg from './CardImg';\nvar DivStyledAsH5 = divWithClassName('h5');\nvar DivStyledAsH6 = divWithClassName('h6');\nvar CardBody = createWithBsPrefix('card-body');\nvar CardTitle = createWithBsPrefix('card-title', {\n Component: DivStyledAsH5\n});\nvar CardSubtitle = createWithBsPrefix('card-subtitle', {\n Component: DivStyledAsH6\n});\nvar CardLink = createWithBsPrefix('card-link', {\n Component: 'a'\n});\nvar CardText = createWithBsPrefix('card-text', {\n Component: 'p'\n});\nvar CardHeader = createWithBsPrefix('card-header');\nvar CardFooter = createWithBsPrefix('card-footer');\nvar CardImgOverlay = createWithBsPrefix('card-img-overlay');\nvar defaultProps = {\n body: false\n};\nvar Card = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n bg = _ref.bg,\n text = _ref.text,\n border = _ref.border,\n body = _ref.body,\n children = _ref.children,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'card');\n var cardContext = useMemo(function () {\n return {\n cardHeaderBsPrefix: prefix + \"-header\"\n };\n }, [prefix]);\n return /*#__PURE__*/React.createElement(CardContext.Provider, {\n value: cardContext\n }, /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, prefix, bg && \"bg-\" + bg, text && \"text-\" + text, border && \"border-\" + border)\n }), body ?\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(CardBody, null, children) : children));\n});\nCard.displayName = 'Card';\nCard.defaultProps = defaultProps;\nCard.Img = CardImg;\nCard.Title = CardTitle;\nCard.Subtitle = CardSubtitle;\nCard.Body = CardBody;\nCard.Link = CardLink;\nCard.Text = CardText;\nCard.Header = CardHeader;\nCard.Footer = CardFooter;\nCard.ImgOverlay = CardImgOverlay;\nexport default Card;","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\n","import {IMPORT, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset:\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d m s\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if ( key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport default createCache;\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","import * as React from 'react';\nimport { useLayoutEffect } from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import { createContext, useContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = useContext(ThemeContext);\n return /*#__PURE__*/createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, useContext(ThemeContext));\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, useTheme as u, withEmotionCache as w };\n","import { createElement, useContext, useRef, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-6a883da9.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-6a883da9.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.10.6\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": \"./macro.js\"\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.js\",\n\t\t\"macro.d.ts\",\n\t\t\"macro.js.flow\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.10.6\",\n\t\t\"@emotion/cache\": \"^11.10.5\",\n\t\t\"@emotion/serialize\": \"^1.1.1\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.0\",\n\t\t\"@emotion/utils\": \"^1.2.0\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.0\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.10.6\",\n\t\t\"@emotion/css-prettifier\": \"1.1.1\",\n\t\t\"@emotion/server\": \"11.10.0\",\n\t\t\"@emotion/styled\": \"11.10.6\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": \"./macro.js\"\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n var res = insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","function t(t){return t.split(\"-\")[1]}function e(t){return\"y\"===t?\"height\":\"width\"}function n(t){return t.split(\"-\")[0]}function o(t){return[\"top\",\"bottom\"].includes(n(t))?\"x\":\"y\"}function i(i,r,a){let{reference:l,floating:s}=i;const c=l.x+l.width/2-s.width/2,f=l.y+l.height/2-s.height/2,m=o(r),u=e(m),g=l[u]/2-s[u]/2,d=\"x\"===m;let p;switch(n(r)){case\"top\":p={x:c,y:l.y-s.height};break;case\"bottom\":p={x:c,y:l.y+l.height};break;case\"right\":p={x:l.x+l.width,y:f};break;case\"left\":p={x:l.x-s.width,y:f};break;default:p={x:l.x,y:l.y}}switch(t(r)){case\"start\":p[m]-=g*(a&&d?-1:1);break;case\"end\":p[m]+=g*(a&&d?-1:1)}return p}const r=async(t,e,n)=>{const{placement:o=\"bottom\",strategy:r=\"absolute\",middleware:a=[],platform:l}=n,s=a.filter(Boolean),c=await(null==l.isRTL?void 0:l.isRTL(e));let f=await l.getElementRects({reference:t,floating:e,strategy:r}),{x:m,y:u}=i(f,o,c),g=o,d={},p=0;for(let n=0;n<s.length;n++){const{name:a,fn:h}=s[n],{x:y,y:x,data:w,reset:v}=await h({x:m,y:u,initialPlacement:o,placement:g,strategy:r,middlewareData:d,rects:f,platform:l,elements:{reference:t,floating:e}});m=null!=y?y:m,u=null!=x?x:u,d={...d,[a]:{...d[a],...w}},v&&p<=50&&(p++,\"object\"==typeof v&&(v.placement&&(g=v.placement),v.rects&&(f=!0===v.rects?await l.getElementRects({reference:t,floating:e,strategy:r}):v.rects),({x:m,y:u}=i(f,g,c))),n=-1)}return{x:m,y:u,placement:g,strategy:r,middlewareData:d}};function a(t){return\"number\"!=typeof t?function(t){return{top:0,right:0,bottom:0,left:0,...t}}(t):{top:t,right:t,bottom:t,left:t}}function l(t){return{...t,top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height}}async function s(t,e){var n;void 0===e&&(e={});const{x:o,y:i,platform:r,rects:s,elements:c,strategy:f}=t,{boundary:m=\"clippingAncestors\",rootBoundary:u=\"viewport\",elementContext:g=\"floating\",altBoundary:d=!1,padding:p=0}=e,h=a(p),y=c[d?\"floating\"===g?\"reference\":\"floating\":g],x=l(await r.getClippingRect({element:null==(n=await(null==r.isElement?void 0:r.isElement(y)))||n?y:y.contextElement||await(null==r.getDocumentElement?void 0:r.getDocumentElement(c.floating)),boundary:m,rootBoundary:u,strategy:f})),w=\"floating\"===g?{...s.floating,x:o,y:i}:s.reference,v=await(null==r.getOffsetParent?void 0:r.getOffsetParent(c.floating)),b=await(null==r.isElement?void 0:r.isElement(v))&&await(null==r.getScale?void 0:r.getScale(v))||{x:1,y:1},A=l(r.convertOffsetParentRelativeRectToViewportRelativeRect?await r.convertOffsetParentRelativeRectToViewportRelativeRect({rect:w,offsetParent:v,strategy:f}):w);return{top:(x.top-A.top+h.top)/b.y,bottom:(A.bottom-x.bottom+h.bottom)/b.y,left:(x.left-A.left+h.left)/b.x,right:(A.right-x.right+h.right)/b.x}}const c=Math.min,f=Math.max;function m(t,e,n){return f(t,c(e,n))}const u=n=>({name:\"arrow\",options:n,async fn(i){const{element:r,padding:l=0}=n||{},{x:s,y:c,placement:f,rects:u,platform:g,elements:d}=i;if(null==r)return{};const p=a(l),h={x:s,y:c},y=o(f),x=e(y),w=await g.getDimensions(r),v=\"y\"===y,b=v?\"top\":\"left\",A=v?\"bottom\":\"right\",R=v?\"clientHeight\":\"clientWidth\",P=u.reference[x]+u.reference[y]-h[y]-u.floating[x],E=h[y]-u.reference[y],T=await(null==g.getOffsetParent?void 0:g.getOffsetParent(r));let D=T?T[R]:0;D&&await(null==g.isElement?void 0:g.isElement(T))||(D=d.floating[R]||u.floating[x]);const L=P/2-E/2,k=p[b],O=D-w[x]-p[A],B=D/2-w[x]/2+L,C=m(k,B,O),H=null!=t(f)&&B!=C&&u.reference[x]/2-(B<k?p[b]:p[A])-w[x]/2<0;return{[y]:h[y]-(H?B<k?k-B:O-B:0),data:{[y]:C,centerOffset:B-C}}}}),g=[\"top\",\"right\",\"bottom\",\"left\"],d=g.reduce(((t,e)=>t.concat(e,e+\"-start\",e+\"-end\")),[]),p={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};function h(t){return t.replace(/left|right|bottom|top/g,(t=>p[t]))}function y(n,i,r){void 0===r&&(r=!1);const a=t(n),l=o(n),s=e(l);let c=\"x\"===l?a===(r?\"end\":\"start\")?\"right\":\"left\":\"start\"===a?\"bottom\":\"top\";return i.reference[s]>i.floating[s]&&(c=h(c)),{main:c,cross:h(c)}}const x={start:\"end\",end:\"start\"};function w(t){return t.replace(/start|end/g,(t=>x[t]))}const v=function(e){return void 0===e&&(e={}),{name:\"autoPlacement\",options:e,async fn(o){var i,r,a;const{rects:l,middlewareData:c,placement:f,platform:m,elements:u}=o,{crossAxis:g=!1,alignment:p,allowedPlacements:h=d,autoAlignment:x=!0,...v}=e,b=void 0!==p||h===d?function(e,o,i){return(e?[...i.filter((n=>t(n)===e)),...i.filter((n=>t(n)!==e))]:i.filter((t=>n(t)===t))).filter((n=>!e||t(n)===e||!!o&&w(n)!==n))}(p||null,x,h):h,A=await s(o,v),R=(null==(i=c.autoPlacement)?void 0:i.index)||0,P=b[R];if(null==P)return{};const{main:E,cross:T}=y(P,l,await(null==m.isRTL?void 0:m.isRTL(u.floating)));if(f!==P)return{reset:{placement:b[0]}};const D=[A[n(P)],A[E],A[T]],L=[...(null==(r=c.autoPlacement)?void 0:r.overflows)||[],{placement:P,overflows:D}],k=b[R+1];if(k)return{data:{index:R+1,overflows:L},reset:{placement:k}};const O=L.map((e=>{const n=t(e.placement);return[e.placement,n&&g?e.overflows.slice(0,2).reduce(((t,e)=>t+e),0):e.overflows[0],e.overflows]})).sort(((t,e)=>t[1]-e[1])),B=(null==(a=O.filter((e=>e[2].slice(0,t(e[0])?2:3).every((t=>t<=0))))[0])?void 0:a[0])||O[0][0];return B!==f?{data:{index:R+1,overflows:L},reset:{placement:B}}:{}}}};const b=function(e){return void 0===e&&(e={}),{name:\"flip\",options:e,async fn(o){var i;const{placement:r,middlewareData:a,rects:l,initialPlacement:c,platform:f,elements:m}=o,{mainAxis:u=!0,crossAxis:g=!0,fallbackPlacements:d,fallbackStrategy:p=\"bestFit\",fallbackAxisSideDirection:x=\"none\",flipAlignment:v=!0,...b}=e,A=n(r),R=n(c)===c,P=await(null==f.isRTL?void 0:f.isRTL(m.floating)),E=d||(R||!v?[h(c)]:function(t){const e=h(t);return[w(t),e,w(e)]}(c));d||\"none\"===x||E.push(...function(e,o,i,r){const a=t(e);let l=function(t,e,n){const o=[\"left\",\"right\"],i=[\"right\",\"left\"],r=[\"top\",\"bottom\"],a=[\"bottom\",\"top\"];switch(t){case\"top\":case\"bottom\":return n?e?i:o:e?o:i;case\"left\":case\"right\":return e?r:a;default:return[]}}(n(e),\"start\"===i,r);return a&&(l=l.map((t=>t+\"-\"+a)),o&&(l=l.concat(l.map(w)))),l}(c,v,x,P));const T=[c,...E],D=await s(o,b),L=[];let k=(null==(i=a.flip)?void 0:i.overflows)||[];if(u&&L.push(D[A]),g){const{main:t,cross:e}=y(r,l,P);L.push(D[t],D[e])}if(k=[...k,{placement:r,overflows:L}],!L.every((t=>t<=0))){var O,B;const t=((null==(O=a.flip)?void 0:O.index)||0)+1,e=T[t];if(e)return{data:{index:t,overflows:k},reset:{placement:e}};let n=null==(B=k.filter((t=>t.overflows[0]<=0)).sort(((t,e)=>t.overflows[1]-e.overflows[1]))[0])?void 0:B.placement;if(!n)switch(p){case\"bestFit\":{var C;const t=null==(C=k.map((t=>[t.placement,t.overflows.filter((t=>t>0)).reduce(((t,e)=>t+e),0)])).sort(((t,e)=>t[1]-e[1]))[0])?void 0:C[0];t&&(n=t);break}case\"initialPlacement\":n=c}if(r!==n)return{reset:{placement:n}}}return{}}}};function A(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:t.bottom-e.height,left:t.left-e.width}}function R(t){return g.some((e=>t[e]>=0))}const P=function(t){return void 0===t&&(t={}),{name:\"hide\",options:t,async fn(e){const{strategy:n=\"referenceHidden\",...o}=t,{rects:i}=e;switch(n){case\"referenceHidden\":{const t=A(await s(e,{...o,elementContext:\"reference\"}),i.reference);return{data:{referenceHiddenOffsets:t,referenceHidden:R(t)}}}case\"escaped\":{const t=A(await s(e,{...o,altBoundary:!0}),i.floating);return{data:{escapedOffsets:t,escaped:R(t)}}}default:return{}}}}};function E(t){const e=c(...t.map((t=>t.left))),n=c(...t.map((t=>t.top)));return{x:e,y:n,width:f(...t.map((t=>t.right)))-e,height:f(...t.map((t=>t.bottom)))-n}}const T=function(t){return void 0===t&&(t={}),{name:\"inline\",options:t,async fn(e){const{placement:i,elements:r,rects:s,platform:m,strategy:u}=e,{padding:g=2,x:d,y:p}=t,h=Array.from(await(null==m.getClientRects?void 0:m.getClientRects(r.reference))||[]),y=function(t){const e=t.slice().sort(((t,e)=>t.y-e.y)),n=[];let o=null;for(let t=0;t<e.length;t++){const i=e[t];!o||i.y-o.y>o.height/2?n.push([i]):n[n.length-1].push(i),o=i}return n.map((t=>l(E(t))))}(h),x=l(E(h)),w=a(g);const v=await m.getElementRects({reference:{getBoundingClientRect:function(){if(2===y.length&&y[0].left>y[1].right&&null!=d&&null!=p)return y.find((t=>d>t.left-w.left&&d<t.right+w.right&&p>t.top-w.top&&p<t.bottom+w.bottom))||x;if(y.length>=2){if(\"x\"===o(i)){const t=y[0],e=y[y.length-1],o=\"top\"===n(i),r=t.top,a=e.bottom,l=o?t.left:e.left,s=o?t.right:e.right;return{top:r,bottom:a,left:l,right:s,width:s-l,height:a-r,x:l,y:r}}const t=\"left\"===n(i),e=f(...y.map((t=>t.right))),r=c(...y.map((t=>t.left))),a=y.filter((n=>t?n.left===r:n.right===e)),l=a[0].top,s=a[a.length-1].bottom;return{top:l,bottom:s,left:r,right:e,width:e-r,height:s-l,x:r,y:l}}return x}},floating:r.floating,strategy:u});return s.reference.x!==v.reference.x||s.reference.y!==v.reference.y||s.reference.width!==v.reference.width||s.reference.height!==v.reference.height?{reset:{rects:v}}:{}}}};const D=function(e){return void 0===e&&(e=0),{name:\"offset\",options:e,async fn(i){const{x:r,y:a}=i,l=await async function(e,i){const{placement:r,platform:a,elements:l}=e,s=await(null==a.isRTL?void 0:a.isRTL(l.floating)),c=n(r),f=t(r),m=\"x\"===o(r),u=[\"left\",\"top\"].includes(c)?-1:1,g=s&&m?-1:1,d=\"function\"==typeof i?i(e):i;let{mainAxis:p,crossAxis:h,alignmentAxis:y}=\"number\"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return f&&\"number\"==typeof y&&(h=\"end\"===f?-1*y:y),m?{x:h*g,y:p*u}:{x:p*u,y:h*g}}(i,e);return{x:r+l.x,y:a+l.y,data:l}}}};function L(t){return\"x\"===t?\"y\":\"x\"}const k=function(t){return void 0===t&&(t={}),{name:\"shift\",options:t,async fn(e){const{x:i,y:r,placement:a}=e,{mainAxis:l=!0,crossAxis:c=!1,limiter:f={fn:t=>{let{x:e,y:n}=t;return{x:e,y:n}}},...u}=t,g={x:i,y:r},d=await s(e,u),p=o(n(a)),h=L(p);let y=g[p],x=g[h];if(l){const t=\"y\"===p?\"bottom\":\"right\";y=m(y+d[\"y\"===p?\"top\":\"left\"],y,y-d[t])}if(c){const t=\"y\"===h?\"bottom\":\"right\";x=m(x+d[\"y\"===h?\"top\":\"left\"],x,x-d[t])}const w=f.fn({...e,[p]:y,[h]:x});return{...w,data:{x:w.x-i,y:w.y-r}}}}},O=function(t){return void 0===t&&(t={}),{options:t,fn(e){const{x:i,y:r,placement:a,rects:l,middlewareData:s}=e,{offset:c=0,mainAxis:f=!0,crossAxis:m=!0}=t,u={x:i,y:r},g=o(a),d=L(g);let p=u[g],h=u[d];const y=\"function\"==typeof c?c(e):c,x=\"number\"==typeof y?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(f){const t=\"y\"===g?\"height\":\"width\",e=l.reference[g]-l.floating[t]+x.mainAxis,n=l.reference[g]+l.reference[t]-x.mainAxis;p<e?p=e:p>n&&(p=n)}if(m){var w,v;const t=\"y\"===g?\"width\":\"height\",e=[\"top\",\"left\"].includes(n(a)),o=l.reference[d]-l.floating[t]+(e&&(null==(w=s.offset)?void 0:w[d])||0)+(e?0:x.crossAxis),i=l.reference[d]+l.reference[t]+(e?0:(null==(v=s.offset)?void 0:v[d])||0)-(e?x.crossAxis:0);h<o?h=o:h>i&&(h=i)}return{[g]:p,[d]:h}}}},B=function(e){return void 0===e&&(e={}),{name:\"size\",options:e,async fn(i){const{placement:r,rects:a,platform:l,elements:m}=i,{apply:u=(()=>{}),...g}=e,d=await s(i,g),p=n(r),h=t(r),y=\"x\"===o(r),{width:x,height:w}=a.floating;let v,b;\"top\"===p||\"bottom\"===p?(v=p,b=h===(await(null==l.isRTL?void 0:l.isRTL(m.floating))?\"start\":\"end\")?\"left\":\"right\"):(b=p,v=\"end\"===h?\"top\":\"bottom\");const A=w-d[v],R=x-d[b],P=!i.middlewareData.shift;let E=A,T=R;if(y){const t=x-d.left-d.right;T=h||P?c(R,t):t}else{const t=w-d.top-d.bottom;E=h||P?c(A,t):t}if(P&&!h){const t=f(d.left,0),e=f(d.right,0),n=f(d.top,0),o=f(d.bottom,0);y?T=x-2*(0!==t||0!==e?t+e:f(d.left,d.right)):E=w-2*(0!==n||0!==o?n+o:f(d.top,d.bottom))}await u({...i,availableWidth:T,availableHeight:E});const D=await l.getDimensions(m.floating);return x!==D.width||w!==D.height?{reset:{rects:!0}}:{}}}};export{u as arrow,v as autoPlacement,r as computePosition,s as detectOverflow,b as flip,P as hide,T as inline,O as limitShift,D as offset,l as rectToClientRect,k as shift,B as size};\n","import{rectToClientRect as t,computePosition as e}from\"@floating-ui/core\";export{arrow,autoPlacement,detectOverflow,flip,hide,inline,limitShift,offset,shift,size}from\"@floating-ui/core\";function n(t){var e;return(null==(e=t.ownerDocument)?void 0:e.defaultView)||window}function o(t){return n(t).getComputedStyle(t)}function i(t){return t instanceof n(t).Node}function r(t){return i(t)?(t.nodeName||\"\").toLowerCase():\"\"}let l;function c(){if(l)return l;const t=navigator.userAgentData;return t&&Array.isArray(t.brands)?(l=t.brands.map((t=>t.brand+\"/\"+t.version)).join(\" \"),l):navigator.userAgent}function s(t){return t instanceof n(t).HTMLElement}function f(t){return t instanceof n(t).Element}function u(t){if(\"undefined\"==typeof ShadowRoot)return!1;return t instanceof n(t).ShadowRoot||t instanceof ShadowRoot}function a(t){const{overflow:e,overflowX:n,overflowY:i,display:r}=o(t);return/auto|scroll|overlay|hidden|clip/.test(e+i+n)&&![\"inline\",\"contents\"].includes(r)}function d(t){return[\"table\",\"td\",\"th\"].includes(r(t))}function h(t){const e=/firefox/i.test(c()),n=o(t),i=n.backdropFilter||n.WebkitBackdropFilter;return\"none\"!==n.transform||\"none\"!==n.perspective||!!i&&\"none\"!==i||e&&\"filter\"===n.willChange||e&&!!n.filter&&\"none\"!==n.filter||[\"transform\",\"perspective\"].some((t=>n.willChange.includes(t)))||[\"paint\",\"layout\",\"strict\",\"content\"].some((t=>{const e=n.contain;return null!=e&&e.includes(t)}))}function p(){return/^((?!chrome|android).)*safari/i.test(c())}function g(t){return[\"html\",\"body\",\"#document\"].includes(r(t))}const m=Math.min,y=Math.max,x=Math.round;function w(t){const e=o(t);let n=parseFloat(e.width),i=parseFloat(e.height);const r=s(t),l=r?t.offsetWidth:n,c=r?t.offsetHeight:i,f=x(n)!==l||x(i)!==c;return f&&(n=l,i=c),{width:n,height:i,fallback:f}}function v(t){return f(t)?t:t.contextElement}const b={x:1,y:1};function L(t){const e=v(t);if(!s(e))return b;const n=e.getBoundingClientRect(),{width:o,height:i,fallback:r}=w(e);let l=(r?x(n.width):n.width)/o,c=(r?x(n.height):n.height)/i;return l&&Number.isFinite(l)||(l=1),c&&Number.isFinite(c)||(c=1),{x:l,y:c}}function E(e,o,i,r){var l,c;void 0===o&&(o=!1),void 0===i&&(i=!1);const s=e.getBoundingClientRect(),u=v(e);let a=b;o&&(r?f(r)&&(a=L(r)):a=L(e));const d=u?n(u):window,h=p()&&i;let g=(s.left+(h&&(null==(l=d.visualViewport)?void 0:l.offsetLeft)||0))/a.x,m=(s.top+(h&&(null==(c=d.visualViewport)?void 0:c.offsetTop)||0))/a.y,y=s.width/a.x,x=s.height/a.y;if(u){const t=n(u),e=r&&f(r)?n(r):r;let o=t.frameElement;for(;o&&r&&e!==t;){const t=L(o),e=o.getBoundingClientRect(),i=getComputedStyle(o);e.x+=(o.clientLeft+parseFloat(i.paddingLeft))*t.x,e.y+=(o.clientTop+parseFloat(i.paddingTop))*t.y,g*=t.x,m*=t.y,y*=t.x,x*=t.y,g+=e.x,m+=e.y,o=n(o).frameElement}}return t({width:y,height:x,x:g,y:m})}function T(t){return((i(t)?t.ownerDocument:t.document)||window.document).documentElement}function R(t){return f(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function C(t){return E(T(t)).left+R(t).scrollLeft}function F(t){if(\"html\"===r(t))return t;const e=t.assignedSlot||t.parentNode||u(t)&&t.host||T(t);return u(e)?e.host:e}function S(t){const e=F(t);return g(e)?e.ownerDocument.body:s(e)&&a(e)?e:S(e)}function W(t,e){var o;void 0===e&&(e=[]);const i=S(t),r=i===(null==(o=t.ownerDocument)?void 0:o.body),l=n(i);return r?e.concat(l,l.visualViewport||[],a(i)?i:[]):e.concat(i,W(i))}function D(e,i,r){let l;if(\"viewport\"===i)l=function(t,e){const o=n(t),i=T(t),r=o.visualViewport;let l=i.clientWidth,c=i.clientHeight,s=0,f=0;if(r){l=r.width,c=r.height;const t=p();(!t||t&&\"fixed\"===e)&&(s=r.offsetLeft,f=r.offsetTop)}return{width:l,height:c,x:s,y:f}}(e,r);else if(\"document\"===i)l=function(t){const e=T(t),n=R(t),i=t.ownerDocument.body,r=y(e.scrollWidth,e.clientWidth,i.scrollWidth,i.clientWidth),l=y(e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight);let c=-n.scrollLeft+C(t);const s=-n.scrollTop;return\"rtl\"===o(i).direction&&(c+=y(e.clientWidth,i.clientWidth)-r),{width:r,height:l,x:c,y:s}}(T(e));else if(f(i))l=function(t,e){const n=E(t,!0,\"fixed\"===e),o=n.top+t.clientTop,i=n.left+t.clientLeft,r=s(t)?L(t):{x:1,y:1};return{width:t.clientWidth*r.x,height:t.clientHeight*r.y,x:i*r.x,y:o*r.y}}(i,r);else{const t={...i};if(p()){var c,u;const o=n(e);t.x-=(null==(c=o.visualViewport)?void 0:c.offsetLeft)||0,t.y-=(null==(u=o.visualViewport)?void 0:u.offsetTop)||0}l=t}return t(l)}function V(t,e){const n=F(t);return!(n===e||!f(n)||g(n))&&(\"fixed\"===o(n).position||V(n,e))}function A(t,e){return s(t)&&\"fixed\"!==o(t).position?e?e(t):t.offsetParent:null}function H(t,e){const i=n(t);if(!s(t))return i;let l=A(t,e);for(;l&&d(l)&&\"static\"===o(l).position;)l=A(l,e);return l&&(\"html\"===r(l)||\"body\"===r(l)&&\"static\"===o(l).position&&!h(l))?i:l||function(t){let e=F(t);for(;s(e)&&!g(e);){if(h(e))return e;e=F(e)}return null}(t)||i}function O(t,e,n){const o=s(e),i=T(e),l=E(t,!0,\"fixed\"===n,e);let c={scrollLeft:0,scrollTop:0};const f={x:0,y:0};if(o||!o&&\"fixed\"!==n)if((\"body\"!==r(e)||a(i))&&(c=R(e)),s(e)){const t=E(e,!0);f.x=t.x+e.clientLeft,f.y=t.y+e.clientTop}else i&&(f.x=C(i));return{x:l.left+c.scrollLeft-f.x,y:l.top+c.scrollTop-f.y,width:l.width,height:l.height}}const P={getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:i,strategy:l}=t;const c=\"clippingAncestors\"===n?function(t,e){const n=e.get(t);if(n)return n;let i=W(t).filter((t=>f(t)&&\"body\"!==r(t))),l=null;const c=\"fixed\"===o(t).position;let s=c?F(t):t;for(;f(s)&&!g(s);){const e=o(s),n=h(s);n||\"fixed\"!==e.position||(l=null),(c?!n&&!l:!n&&\"static\"===e.position&&l&&[\"absolute\",\"fixed\"].includes(l.position)||a(s)&&!n&&V(t,s))?i=i.filter((t=>t!==s)):l=e,s=F(s)}return e.set(t,i),i}(e,this._c):[].concat(n),s=[...c,i],u=s[0],d=s.reduce(((t,n)=>{const o=D(e,n,l);return t.top=y(o.top,t.top),t.right=m(o.right,t.right),t.bottom=m(o.bottom,t.bottom),t.left=y(o.left,t.left),t}),D(e,u,l));return{width:d.right-d.left,height:d.bottom-d.top,x:d.left,y:d.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{rect:e,offsetParent:n,strategy:o}=t;const i=s(n),l=T(n);if(n===l)return e;let c={scrollLeft:0,scrollTop:0},f={x:1,y:1};const u={x:0,y:0};if((i||!i&&\"fixed\"!==o)&&((\"body\"!==r(n)||a(l))&&(c=R(n)),s(n))){const t=E(n);f=L(n),u.x=t.x+n.clientLeft,u.y=t.y+n.clientTop}return{width:e.width*f.x,height:e.height*f.y,x:e.x*f.x-c.scrollLeft*f.x+u.x,y:e.y*f.y-c.scrollTop*f.y+u.y}},isElement:f,getDimensions:function(t){return w(t)},getOffsetParent:H,getDocumentElement:T,getScale:L,async getElementRects(t){let{reference:e,floating:n,strategy:o}=t;const i=this.getOffsetParent||H,r=this.getDimensions;return{reference:O(e,await i(n),o),floating:{x:0,y:0,...await r(n)}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>\"rtl\"===o(t).direction};function z(t,e,n,o){void 0===o&&(o={});const{ancestorScroll:i=!0,ancestorResize:r=!0,elementResize:l=!0,animationFrame:c=!1}=o,s=i||r?[...f(t)?W(t):t.contextElement?W(t.contextElement):[],...W(e)]:[];s.forEach((t=>{const e=!f(t)&&t.toString().includes(\"V\");!i||c&&!e||t.addEventListener(\"scroll\",n,{passive:!0}),r&&t.addEventListener(\"resize\",n)}));let u,a=null;l&&(a=new ResizeObserver((()=>{n()})),f(t)&&!c&&a.observe(t),f(t)||!t.contextElement||c||a.observe(t.contextElement),a.observe(e));let d=c?E(t):null;return c&&function e(){const o=E(t);!d||o.x===d.x&&o.y===d.y&&o.width===d.width&&o.height===d.height||n();d=o,u=requestAnimationFrame(e)}(),n(),()=>{var t;s.forEach((t=>{i&&t.removeEventListener(\"scroll\",n),r&&t.removeEventListener(\"resize\",n)})),null==(t=a)||t.disconnect(),a=null,c&&cancelAnimationFrame(u)}}const k=(t,n,o)=>{const i=new Map,r={platform:P,...o},l={...r.platform,_c:i};return e(t,n,{...r,platform:l})};export{z as autoUpdate,k as computePosition,W as getOverflowAncestors,P as platform};\n","import { useLayoutEffect } from 'react';\n\nvar index = useLayoutEffect ;\n\nexport default index;\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useState, useCallback } from 'react';\n\nvar _excluded = [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\", \"inputValue\", \"menuIsOpen\", \"onChange\", \"onInputChange\", \"onMenuClose\", \"onMenuOpen\", \"value\"];\nfunction useStateManager(_ref) {\n var _ref$defaultInputValu = _ref.defaultInputValue,\n defaultInputValue = _ref$defaultInputValu === void 0 ? '' : _ref$defaultInputValu,\n _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen,\n defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe,\n _ref$defaultValue = _ref.defaultValue,\n defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue,\n propsInputValue = _ref.inputValue,\n propsMenuIsOpen = _ref.menuIsOpen,\n propsOnChange = _ref.onChange,\n propsOnInputChange = _ref.onInputChange,\n propsOnMenuClose = _ref.onMenuClose,\n propsOnMenuOpen = _ref.onMenuOpen,\n propsValue = _ref.value,\n restSelectProps = _objectWithoutProperties(_ref, _excluded);\n var _useState = useState(propsInputValue !== undefined ? propsInputValue : defaultInputValue),\n _useState2 = _slicedToArray(_useState, 2),\n stateInputValue = _useState2[0],\n setStateInputValue = _useState2[1];\n var _useState3 = useState(propsMenuIsOpen !== undefined ? propsMenuIsOpen : defaultMenuIsOpen),\n _useState4 = _slicedToArray(_useState3, 2),\n stateMenuIsOpen = _useState4[0],\n setStateMenuIsOpen = _useState4[1];\n var _useState5 = useState(propsValue !== undefined ? propsValue : defaultValue),\n _useState6 = _slicedToArray(_useState5, 2),\n stateValue = _useState6[0],\n setStateValue = _useState6[1];\n var onChange = useCallback(function (value, actionMeta) {\n if (typeof propsOnChange === 'function') {\n propsOnChange(value, actionMeta);\n }\n setStateValue(value);\n }, [propsOnChange]);\n var onInputChange = useCallback(function (value, actionMeta) {\n var newValue;\n if (typeof propsOnInputChange === 'function') {\n newValue = propsOnInputChange(value, actionMeta);\n }\n setStateInputValue(newValue !== undefined ? newValue : value);\n }, [propsOnInputChange]);\n var onMenuOpen = useCallback(function () {\n if (typeof propsOnMenuOpen === 'function') {\n propsOnMenuOpen();\n }\n setStateMenuIsOpen(true);\n }, [propsOnMenuOpen]);\n var onMenuClose = useCallback(function () {\n if (typeof propsOnMenuClose === 'function') {\n propsOnMenuClose();\n }\n setStateMenuIsOpen(false);\n }, [propsOnMenuClose]);\n var inputValue = propsInputValue !== undefined ? propsInputValue : stateInputValue;\n var menuIsOpen = propsMenuIsOpen !== undefined ? propsMenuIsOpen : stateMenuIsOpen;\n var value = propsValue !== undefined ? propsValue : stateValue;\n return _objectSpread(_objectSpread({}, restSelectProps), {}, {\n inputValue: inputValue,\n menuIsOpen: menuIsOpen,\n onChange: onChange,\n onInputChange: onInputChange,\n onMenuClose: onMenuClose,\n onMenuOpen: onMenuOpen,\n value: value\n });\n}\n\nexport { useStateManager as u };\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var cache = null;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n var lastResult = resultFn.apply(this, newArgs);\n cache = {\n lastResult: lastResult,\n lastArgs: newArgs,\n lastThis: this,\n };\n return lastResult;\n }\n memoized.clear = function clear() {\n cache = null;\n };\n return memoized;\n}\n\nexport { memoizeOne as default };\n","import { u as useStateManager } from './useStateManager-7e1e8489.esm.js';\nexport { u as useStateManager } from './useStateManager-7e1e8489.esm.js';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { forwardRef, useMemo } from 'react';\nimport { S as Select } from './Select-457c486b.esm.js';\nexport { c as createFilter, d as defaultTheme, m as mergeStyles } from './Select-457c486b.esm.js';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nexport { c as components } from './index-a86253bb.esm.js';\nimport '@babel/runtime/helpers/objectSpread2';\nimport '@babel/runtime/helpers/slicedToArray';\nimport '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/classCallCheck';\nimport '@babel/runtime/helpers/createClass';\nimport '@babel/runtime/helpers/inherits';\nimport '@babel/runtime/helpers/createSuper';\nimport '@babel/runtime/helpers/toConsumableArray';\nimport 'memoize-one';\nimport '@babel/runtime/helpers/typeof';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport '@babel/runtime/helpers/defineProperty';\nimport 'react-dom';\nimport '@floating-ui/dom';\nimport 'use-isomorphic-layout-effect';\n\nvar StateManagedSelect = /*#__PURE__*/forwardRef(function (props, ref) {\n var baseSelectProps = useStateManager(props);\n return /*#__PURE__*/React.createElement(Select, _extends({\n ref: ref\n }, baseSelectProps));\n});\n\nvar NonceProvider = (function (_ref) {\n var nonce = _ref.nonce,\n children = _ref.children,\n cacheKey = _ref.cacheKey;\n var emotionCache = useMemo(function () {\n return createCache({\n key: cacheKey,\n nonce: nonce\n });\n }, [cacheKey, nonce]);\n return /*#__PURE__*/React.createElement(CacheProvider, {\n value: emotionCache\n }, children);\n});\n\nexport default StateManagedSelect;\nexport { NonceProvider };\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"variant\", \"animation\", \"size\", \"children\", \"as\", \"className\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar Spinner = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n variant = _ref.variant,\n animation = _ref.animation,\n size = _ref.size,\n children = _ref.children,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'spinner');\n var bsSpinnerPrefix = bsPrefix + \"-\" + animation;\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, bsSpinnerPrefix, size && bsSpinnerPrefix + \"-\" + size, variant && \"text-\" + variant)\n }), children);\n});\nSpinner.displayName = 'Spinner';\nexport default Spinner;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"className\", \"type\", \"tooltip\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string,\n\n /** Display feedback as a tooltip. */\n tooltip: PropTypes.bool,\n as: PropTypes.elementType\n};\nvar Feedback = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'valid' : _ref$type,\n _ref$tooltip = _ref.tooltip,\n tooltip = _ref$tooltip === void 0 ? false : _ref$tooltip,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, type + \"-\" + (tooltip ? 'tooltip' : 'feedback'))\n }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;","import React from 'react'; // TODO\n\nvar FormContext = /*#__PURE__*/React.createContext({\n controlId: undefined\n});\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"type\", \"isValid\", \"isInvalid\", \"isStatic\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'checkbox' : _ref$type,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n isStatic = _ref.isStatic,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control-input'] : [bsPrefix, 'form-check-input'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n type: type,\n id: id || controlId,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static')\n }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nexport default FormCheckInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheckLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control-label'] : [bsPrefix, 'form-check-label'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix)\n }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedbackTooltip\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\", \"as\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormCheck = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n _ref$inline = _ref.inline,\n inline = _ref$inline === void 0 ? false : _ref$inline,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n _ref$feedbackTooltip = _ref.feedbackTooltip,\n feedbackTooltip = _ref$feedbackTooltip === void 0 ? false : _ref$feedbackTooltip,\n feedback = _ref.feedback,\n className = _ref.className,\n style = _ref.style,\n _ref$title = _ref.title,\n title = _ref$title === void 0 ? '' : _ref$title,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'checkbox' : _ref$type,\n label = _ref.label,\n children = _ref.children,\n propCustom = _ref.custom,\n _ref$as = _ref.as,\n as = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var custom = type === 'switch' ? true : propCustom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-control'] : [bsPrefix, 'form-check'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var innerFormContext = useMemo(function () {\n return {\n controlId: id || controlId,\n custom: custom\n };\n }, [controlId, custom, id]);\n var hasLabel = custom || label != null && label !== false && !children;\n var input = /*#__PURE__*/React.createElement(FormCheckInput, _extends({}, props, {\n type: type === 'switch' ? 'checkbox' : type,\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n isStatic: !hasLabel,\n disabled: disabled,\n as: as\n }));\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: innerFormContext\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: style,\n className: classNames(className, bsPrefix, custom && \"custom-\" + type, inline && bsPrefix + \"-inline\")\n }, children || /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormCheckLabel, {\n title: title\n }, label), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n type: isValid ? 'valid' : 'invalid',\n tooltip: feedbackTooltip\n }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.Input = FormCheckInput;\nFormCheck.Label = FormCheckLabel;\nexport default FormCheck;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"className\", \"isValid\", \"isInvalid\", \"lang\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n isValid = _ref.isValid,\n isInvalid = _ref.isInvalid,\n lang = _ref.lang,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var type = 'file';\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-file-input'] : [bsPrefix, 'form-control-file'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n id: id || controlId,\n type: type,\n lang: lang,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n }));\n});\nFormFileInput.displayName = 'FormFileInput';\nexport default FormFileInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFileLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId,\n custom = _useContext.custom;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom-file-label'] : [bsPrefix, 'form-file-label'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n return /*#__PURE__*/React.createElement(\"label\", _extends({}, props, {\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix),\n \"data-browse\": props['data-browse']\n }));\n});\nFormFileLabel.displayName = 'FormFileLabel';\nexport default FormFileLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"bsPrefix\", \"bsCustomPrefix\", \"disabled\", \"isValid\", \"isInvalid\", \"feedbackTooltip\", \"feedback\", \"className\", \"style\", \"label\", \"children\", \"custom\", \"lang\", \"data-browse\", \"as\", \"inputAs\"];\nimport classNames from 'classnames';\nimport React, { useContext, useMemo } from 'react';\nimport all from 'prop-types-extra/lib/all';\nimport Feedback from './Feedback';\nimport FormFileInput from './FormFileInput';\nimport FormFileLabel from './FormFileLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormFile = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n _ref$feedbackTooltip = _ref.feedbackTooltip,\n feedbackTooltip = _ref$feedbackTooltip === void 0 ? false : _ref$feedbackTooltip,\n feedback = _ref.feedback,\n className = _ref.className,\n style = _ref.style,\n label = _ref.label,\n children = _ref.children,\n custom = _ref.custom,\n lang = _ref.lang,\n dataBrowse = _ref['data-browse'],\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n _ref$inputAs = _ref.inputAs,\n inputAs = _ref$inputAs === void 0 ? 'input' : _ref$inputAs,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-file'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n var type = 'file';\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var innerFormContext = useMemo(function () {\n return {\n controlId: id || controlId,\n custom: custom\n };\n }, [controlId, custom, id]);\n var hasLabel = label != null && label !== false && !children;\n var input = /*#__PURE__*/React.createElement(FormFileInput, _extends({}, props, {\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n disabled: disabled,\n as: inputAs,\n lang: lang\n }));\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: innerFormContext\n }, /*#__PURE__*/React.createElement(Component, {\n style: style,\n className: classNames(className, bsPrefix, custom && \"custom-\" + type)\n }, children || /*#__PURE__*/React.createElement(React.Fragment, null, custom ? /*#__PURE__*/React.createElement(React.Fragment, null, input, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, {\n \"data-browse\": dataBrowse\n }, label)) : /*#__PURE__*/React.createElement(React.Fragment, null, hasLabel && /*#__PURE__*/React.createElement(FormFileLabel, null, label), input), (isValid || isInvalid) && /*#__PURE__*/React.createElement(Feedback, {\n type: isValid ? 'valid' : 'invalid',\n tooltip: feedbackTooltip\n }, feedback))));\n});\nFormFile.displayName = 'FormFile';\nFormFile.Input = FormFileInput;\nFormFile.Label = FormFileLabel;\nexport default FormFile;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"bsCustomPrefix\", \"type\", \"size\", \"htmlSize\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"custom\", \"as\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormControl = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n bsCustomPrefix = _ref.bsCustomPrefix,\n type = _ref.type,\n size = _ref.size,\n htmlSize = _ref.htmlSize,\n id = _ref.id,\n className = _ref.className,\n _ref$isValid = _ref.isValid,\n isValid = _ref$isValid === void 0 ? false : _ref$isValid,\n _ref$isInvalid = _ref.isInvalid,\n isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,\n plaintext = _ref.plaintext,\n readOnly = _ref.readOnly,\n custom = _ref.custom,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'input' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n var _ref2 = custom ? [bsCustomPrefix, 'custom'] : [bsPrefix, 'form-control'],\n prefix = _ref2[0],\n defaultPrefix = _ref2[1];\n\n bsPrefix = useBootstrapPrefix(prefix, defaultPrefix);\n var classes;\n\n if (plaintext) {\n var _classes;\n\n classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n } else if (type === 'file') {\n var _classes2;\n\n classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n } else if (type === 'range') {\n var _classes3;\n\n classes = (_classes3 = {}, _classes3[bsPrefix + \"-range\"] = true, _classes3);\n } else if (Component === 'select' && custom) {\n var _classes4;\n\n classes = (_classes4 = {}, _classes4[bsPrefix + \"-select\"] = true, _classes4[bsPrefix + \"-select-\" + size] = size, _classes4);\n } else {\n var _classes5;\n\n classes = (_classes5 = {}, _classes5[bsPrefix] = true, _classes5[bsPrefix + \"-\" + size] = size, _classes5);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n type: type,\n size: htmlSize,\n ref: ref,\n readOnly: readOnly,\n id: id || controlId,\n className: classNames(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\")\n }));\n});\nFormControl.displayName = 'FormControl';\nexport default Object.assign(FormControl, {\n Feedback: Feedback\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n controlId = _ref.controlId,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n var context = useMemo(function () {\n return {\n controlId: controlId\n };\n }, [controlId]);\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children));\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n column: false,\n srOnly: false\n};\nvar FormLabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'label' : _ref$as,\n bsPrefix = _ref.bsPrefix,\n column = _ref.column,\n srOnly = _ref.srOnly,\n className = _ref.className,\n htmlFor = _ref.htmlFor,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useContext = useContext(FormContext),\n controlId = _useContext.controlId;\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n var columnClass = 'col-form-label';\n if (typeof column === 'string') columnClass = columnClass + \" \" + columnClass + \"-\" + column;\n var classes = classNames(className, bsPrefix, srOnly && 'sr-only', column && columnClass);\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n htmlFor = htmlFor || controlId;\n if (column) return /*#__PURE__*/React.createElement(Col, _extends({\n ref: ref,\n as: \"label\",\n className: classes,\n htmlFor: htmlFor\n }, props));\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n React.createElement(Component, _extends({\n ref: ref,\n className: classes,\n htmlFor: htmlFor\n }, props))\n );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\", \"muted\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar FormText = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'small' : _ref$as,\n muted = _ref.muted,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix, muted && 'text-muted')\n }));\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport FormCheck from './FormCheck';\nvar Switch = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(FormCheck, _extends({}, props, {\n ref: ref,\n type: \"switch\"\n }));\n});\nSwitch.displayName = 'Switch';\nSwitch.Input = FormCheck.Input;\nSwitch.Label = FormCheck.Label;\nexport default Switch;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport FormCheck from './FormCheck';\nimport FormFile from './FormFile';\nimport FormControl from './FormControl';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nvar FormRow = createWithBsPrefix('form-row');\nvar defaultProps = {\n inline: false\n};\nvar FormImpl = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n inline = _ref.inline,\n className = _ref.className,\n validated = _ref.validated,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'form' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, validated && 'was-validated', inline && bsPrefix + \"-inline\")\n }));\n});\nFormImpl.displayName = 'Form';\nFormImpl.defaultProps = defaultProps;\nFormImpl.Row = FormRow;\nFormImpl.Group = FormGroup;\nFormImpl.Control = FormControl;\nFormImpl.Check = FormCheck;\nFormImpl.File = FormFile;\nFormImpl.Switch = Switch;\nFormImpl.Label = FormLabel;\nFormImpl.Text = FormText;\nexport default FormImpl;","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n var wasPropRef = useRef(propValue !== undefined);\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = propValue !== undefined;\n var wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n\n return [isProp ? propValue : stateValue, useCallback(function (value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (handler) handler.apply(void 0, [value].concat(args));\n setState(value);\n }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var _ref = result,\n defaultValue = _ref[Utils.defaultKey(fieldName)],\n propsValue = _ref[fieldName],\n rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n\n var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n value = _useUncontrolledProp[0],\n handler = _useUncontrolledProp[1];\n\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n }, props);\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","import React from 'react'; // TODO: check\n\nvar context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n return toArray(element.querySelectorAll(selector));\n}","import { useReducer } from 'react';\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n * forceUpdate()\n * }, [forceUpdate])\n *\n * return <button type=\"button\" onClick={updateOnClick}>Hi there</button>\n * ```\n */\n\nexport default function useForceUpdate() {\n // The toggling state value is designed to defeat React optimizations for skipping\n // updates when they are stricting equal to the last state value\n var _useReducer = useReducer(function (state) {\n return !state;\n }, false),\n dispatch = _useReducer[1];\n\n return dispatch;\n}","import { useMemo } from 'react';\n\nvar toFnRef = function toFnRef(ref) {\n return !ref || typeof ref === 'function' ? ref : function (value) {\n ref.current = value;\n };\n};\n\nexport function mergeRefs(refA, refB) {\n var a = toFnRef(refA);\n var b = toFnRef(refB);\n return function (value) {\n if (a) a(value);\n if (b) b(value);\n };\n}\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\n\nfunction useMergedRefs(refA, refB) {\n return useMemo(function () {\n return mergeRefs(refA, refB);\n }, [refA, refB]);\n}\n\nexport default useMergedRefs;","import React from 'react'; // TODO: check this\n\nvar NavContext = /*#__PURE__*/React.createContext(null);\nNavContext.displayName = 'NavContext';\nexport default NavContext;","import React from 'react'; // TODO (apparently this is a bare \"onSelect\"?)\n\nvar SelectableContext = /*#__PURE__*/React.createContext(null);\nexport var makeEventKey = function makeEventKey(eventKey, href) {\n if (href === void 0) {\n href = null;\n }\n\n if (eventKey != null) return String(eventKey);\n return href || null;\n};\nexport default SelectableContext;","import React from 'react';\nvar TabContext = /*#__PURE__*/React.createContext(null);\nexport default TabContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"onSelect\", \"activeKey\", \"role\", \"onKeyDown\"];\nimport qsa from 'dom-helpers/querySelectorAll';\nimport React, { useContext, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport TabContext from './TabContext';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nvar noop = function noop() {};\n\nvar AbstractNav = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'ul' : _ref$as,\n onSelect = _ref.onSelect,\n activeKey = _ref.activeKey,\n role = _ref.role,\n onKeyDown = _ref.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n // A ref and forceUpdate for refocus, b/c we only want to trigger when needed\n // and don't want to reset the set in the effect\n var forceUpdate = useForceUpdate();\n var needsRefocusRef = useRef(false);\n var parentOnSelect = useContext(SelectableContext);\n var tabContext = useContext(TabContext);\n var getControlledId, getControllerId;\n\n if (tabContext) {\n role = role || 'tablist';\n activeKey = tabContext.activeKey;\n getControlledId = tabContext.getControlledId;\n getControllerId = tabContext.getControllerId;\n }\n\n var listNode = useRef(null);\n\n var getNextActiveChild = function getNextActiveChild(offset) {\n var currentListNode = listNode.current;\n if (!currentListNode) return null;\n var items = qsa(currentListNode, '[data-rb-event-key]:not(.disabled)');\n var activeChild = currentListNode.querySelector('.active');\n if (!activeChild) return null;\n var index = items.indexOf(activeChild);\n if (index === -1) return null;\n var nextIndex = index + offset;\n if (nextIndex >= items.length) nextIndex = 0;\n if (nextIndex < 0) nextIndex = items.length - 1;\n return items[nextIndex];\n };\n\n var handleSelect = function handleSelect(key, event) {\n if (key == null) return;\n if (onSelect) onSelect(key, event);\n if (parentOnSelect) parentOnSelect(key, event);\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (onKeyDown) onKeyDown(event);\n var nextActiveChild;\n\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextActiveChild = getNextActiveChild(-1);\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n nextActiveChild = getNextActiveChild(1);\n break;\n\n default:\n return;\n }\n\n if (!nextActiveChild) return;\n event.preventDefault();\n handleSelect(nextActiveChild.dataset.rbEventKey, event);\n needsRefocusRef.current = true;\n forceUpdate();\n };\n\n useEffect(function () {\n if (listNode.current && needsRefocusRef.current) {\n var activeChild = listNode.current.querySelector('[data-rb-event-key].active');\n if (activeChild) activeChild.focus();\n }\n\n needsRefocusRef.current = false;\n });\n var mergedRef = useMergedRefs(ref, listNode);\n return /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n value: handleSelect\n }, /*#__PURE__*/React.createElement(NavContext.Provider, {\n value: {\n role: role,\n // used by NavLink to determine it's role\n activeKey: makeEventKey(activeKey),\n getControlledId: getControlledId || noop,\n getControllerId: getControllerId || noop\n }\n }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n onKeyDown: handleKeyDown,\n ref: mergedRef,\n role: role\n }))));\n});\nexport default AbstractNav;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar NavItem = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\nfunction (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }), children);\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n var ref = useRef(value);\n useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref;\n}\n\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n var ref = useCommittedRef(fn);\n return useCallback(function () {\n return ref.current && ref.current.apply(ref, arguments);\n }, [ref]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"active\", \"className\", \"eventKey\", \"onSelect\", \"onClick\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nvar defaultProps = {\n disabled: false\n};\nvar AbstractNavItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var active = _ref.active,\n className = _ref.className,\n eventKey = _ref.eventKey,\n onSelect = _ref.onSelect,\n onClick = _ref.onClick,\n Component = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var navKey = makeEventKey(eventKey, props.href);\n var parentOnSelect = useContext(SelectableContext);\n var navContext = useContext(NavContext);\n var isActive = active;\n\n if (navContext) {\n if (!props.role && navContext.role === 'tablist') props.role = 'tab';\n var contextControllerId = navContext.getControllerId(navKey);\n var contextControlledId = navContext.getControlledId(navKey);\n process.env.NODE_ENV !== \"production\" ? warning(!contextControllerId || !props.id, \"[react-bootstrap] The provided id '\" + props.id + \"' was overwritten by the current navContext with '\" + contextControllerId + \"'.\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!contextControlledId || !props['aria-controls'], \"[react-bootstrap] The provided aria-controls value '\" + props['aria-controls'] + \"' was overwritten by the current navContext with '\" + contextControlledId + \"'.\") : void 0;\n props['data-rb-event-key'] = navKey;\n props.id = contextControllerId || props.id;\n props['aria-controls'] = contextControlledId || props['aria-controls'];\n isActive = active == null && navKey != null ? navContext.activeKey === navKey : active;\n }\n\n if (props.role === 'tab') {\n if (props.disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n props['aria-selected'] = isActive;\n }\n\n var handleOnclick = useEventCallback(function (e) {\n if (onClick) onClick(e);\n if (navKey == null) return;\n if (onSelect) onSelect(navKey, e);\n if (parentOnSelect) parentOnSelect(navKey, e);\n });\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n onClick: handleOnclick,\n className: classNames(className, isActive && 'active')\n }));\n});\nAbstractNavItem.defaultProps = defaultProps;\nexport default AbstractNavItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"disabled\", \"className\", \"href\", \"eventKey\", \"onSelect\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport SafeAnchor from './SafeAnchor';\nimport AbstractNavItem from './AbstractNavItem';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n disabled: false,\n as: SafeAnchor\n};\nvar NavLink = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n disabled = _ref.disabled,\n className = _ref.className,\n href = _ref.href,\n eventKey = _ref.eventKey,\n onSelect = _ref.onSelect,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n return /*#__PURE__*/React.createElement(AbstractNavItem, _extends({}, props, {\n href: href,\n ref: ref,\n eventKey: eventKey,\n as: as,\n disabled: disabled,\n onSelect: onSelect,\n className: classNames(className, bsPrefix, disabled && 'disabled')\n }));\n});\nNavLink.displayName = 'NavLink';\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"bsPrefix\", \"variant\", \"fill\", \"justify\", \"navbar\", \"navbarScroll\", \"className\", \"children\", \"activeKey\"];\nimport classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport React, { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardContext from './CardContext';\nimport AbstractNav from './AbstractNav';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nvar defaultProps = {\n justify: false,\n fill: false\n};\nvar Nav = /*#__PURE__*/React.forwardRef(function (uncontrolledProps, ref) {\n var _classNames;\n\n var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n activeKey: 'onSelect'\n }),\n _useUncontrolled$as = _useUncontrolled.as,\n as = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n initialBsPrefix = _useUncontrolled.bsPrefix,\n variant = _useUncontrolled.variant,\n fill = _useUncontrolled.fill,\n justify = _useUncontrolled.justify,\n navbar = _useUncontrolled.navbar,\n navbarScroll = _useUncontrolled.navbarScroll,\n className = _useUncontrolled.className,\n children = _useUncontrolled.children,\n activeKey = _useUncontrolled.activeKey,\n props = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav');\n var navbarBsPrefix;\n var cardHeaderBsPrefix;\n var isNavbar = false;\n var navbarContext = useContext(NavbarContext);\n var cardContext = useContext(CardContext);\n\n if (navbarContext) {\n navbarBsPrefix = navbarContext.bsPrefix;\n isNavbar = navbar == null ? true : navbar;\n } else if (cardContext) {\n cardHeaderBsPrefix = cardContext.cardHeaderBsPrefix;\n }\n\n return /*#__PURE__*/React.createElement(AbstractNav, _extends({\n as: as,\n ref: ref,\n activeKey: activeKey,\n className: classNames(className, (_classNames = {}, _classNames[bsPrefix] = !isNavbar, _classNames[navbarBsPrefix + \"-nav\"] = isNavbar, _classNames[navbarBsPrefix + \"-nav-scroll\"] = isNavbar && navbarScroll, _classNames[cardHeaderBsPrefix + \"-\" + variant] = !!cardHeaderBsPrefix, _classNames[bsPrefix + \"-\" + variant] = !!variant, _classNames[bsPrefix + \"-fill\"] = fill, _classNames[bsPrefix + \"-justified\"] = justify, _classNames))\n }, props), children);\n});\nNav.displayName = 'Nav';\nNav.defaultProps = defaultProps;\nNav.Item = NavItem;\nNav.Link = NavLink;\nexport default Nav;","import React, { useMemo } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport TabContext from './TabContext';\nimport SelectableContext from './SelectableContext';\n\nvar TabContainer = function TabContainer(props) {\n var _useUncontrolled = useUncontrolled(props, {\n activeKey: 'onSelect'\n }),\n id = _useUncontrolled.id,\n generateCustomChildId = _useUncontrolled.generateChildId,\n onSelect = _useUncontrolled.onSelect,\n activeKey = _useUncontrolled.activeKey,\n transition = _useUncontrolled.transition,\n mountOnEnter = _useUncontrolled.mountOnEnter,\n unmountOnExit = _useUncontrolled.unmountOnExit,\n children = _useUncontrolled.children;\n\n var generateChildId = useMemo(function () {\n return generateCustomChildId || function (key, type) {\n return id ? id + \"-\" + type + \"-\" + key : null;\n };\n }, [id, generateCustomChildId]);\n var tabContext = useMemo(function () {\n return {\n onSelect: onSelect,\n activeKey: activeKey,\n transition: transition,\n mountOnEnter: mountOnEnter || false,\n unmountOnExit: unmountOnExit || false,\n getControlledId: function getControlledId(key) {\n return generateChildId(key, 'tabpane');\n },\n getControllerId: function getControllerId(key) {\n return generateChildId(key, 'tab');\n }\n };\n }, [onSelect, activeKey, transition, mountOnEnter, unmountOnExit, generateChildId]);\n return /*#__PURE__*/React.createElement(TabContext.Provider, {\n value: tabContext\n }, /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n value: onSelect || null\n }, children));\n};\n\nexport default TabContainer;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"as\", \"className\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar TabContent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'tab-content');\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, decoratedBsPrefix)\n }));\n});\nexport default TabContent;","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n var options = {\n get passive() {\n return optionsSupported = true;\n },\n\n get once() {\n // eslint-disable-next-line no-multi-assign\n return onceSupported = optionsSupported = true;\n }\n\n };\n\n if (canUseDOM) {\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, true);\n }\n} catch (e) {\n /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n if (options && typeof options !== 'boolean' && !onceSupported) {\n var once = options.once,\n capture = options.capture;\n var wrappedHandler = handler;\n\n if (!onceSupported && once) {\n wrappedHandler = handler.__once || function onceHandler(event) {\n this.removeEventListener(eventName, onceHandler, capture);\n handler.call(this, event);\n };\n\n handler.__once = wrappedHandler;\n }\n\n node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n }\n\n node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n var capture = options && typeof options !== 'boolean' ? options.capture : options;\n node.removeEventListener(eventName, handler, capture);\n\n if (handler.__once) {\n node.removeEventListener(eventName, handler.__once, capture);\n }\n}\n\nexport default removeEventListener;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n addEventListener(node, eventName, handler, options);\n return function () {\n removeEventListener(node, eventName, handler, options);\n };\n}\n\nexport default listen;","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n var str = css(node, 'transitionDuration') || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n if (padding === void 0) {\n padding = 5;\n }\n\n var called = false;\n var handle = setTimeout(function () {\n if (!called) triggerEvent(element, 'transitionend', true);\n }, duration + padding);\n var remove = listen(element, 'transitionend', function () {\n called = true;\n }, {\n once: true\n });\n return function () {\n clearTimeout(handle);\n remove();\n };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n if (duration == null) duration = parseDuration(element) || 0;\n var removeEmulate = emulateTransitionEnd(element, duration, padding);\n var remove = listen(element, 'transitionend', handler);\n return function () {\n removeEmulate();\n remove();\n };\n}","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n if (bubbles === void 0) {\n bubbles = false;\n }\n\n if (cancelable === void 0) {\n cancelable = true;\n }\n\n if (node) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(eventName, bubbles, cancelable);\n node.dispatchEvent(event);\n }\n}","import css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\n\nfunction parseDuration(node, property) {\n var str = css(node, property) || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nexport default function transitionEndListener(element, handler) {\n var duration = parseDuration(element, 'transitionDuration');\n var delay = parseDuration(element, 'transitionDelay');\n var remove = transitionEnd(element, function (e) {\n if (e.target === element) {\n remove();\n handler(e);\n }\n }, duration + delay);\n}","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n node.offsetHeight;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"children\"];\n\nvar _fadeStyles;\n\nimport classNames from 'classnames';\nimport React, { useCallback } from 'react';\nimport Transition, { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nvar defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false\n};\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[ENTERING] = 'show', _fadeStyles[ENTERED] = 'show', _fadeStyles);\nvar Fade = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var handleEnter = useCallback(function (node) {\n triggerBrowserReflow(node);\n if (props.onEnter) props.onEnter(node);\n }, [props]);\n return /*#__PURE__*/React.createElement(Transition, _extends({\n ref: ref,\n addEndListener: transitionEndListener\n }, props, {\n onEnter: handleEnter\n }), function (status, innerProps) {\n return /*#__PURE__*/React.cloneElement(children, _extends({}, innerProps, {\n className: classNames('fade', className, children.props.className, fadeStyles[status])\n }));\n });\n});\nFade.defaultProps = defaultProps;\nFade.displayName = 'Fade';\nexport default Fade;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"activeKey\", \"getControlledId\", \"getControllerId\"],\n _excluded2 = [\"bsPrefix\", \"className\", \"active\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"mountOnEnter\", \"unmountOnExit\", \"transition\", \"as\", \"eventKey\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport TabContext from './TabContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport Fade from './Fade';\n\nfunction useTabContext(props) {\n var context = useContext(TabContext);\n if (!context) return props;\n\n var activeKey = context.activeKey,\n getControlledId = context.getControlledId,\n getControllerId = context.getControllerId,\n rest = _objectWithoutPropertiesLoose(context, _excluded);\n\n var shouldTransition = props.transition !== false && rest.transition !== false;\n var key = makeEventKey(props.eventKey);\n return _extends({}, props, {\n active: props.active == null && key != null ? makeEventKey(activeKey) === key : props.active,\n id: getControlledId(props.eventKey),\n 'aria-labelledby': getControllerId(props.eventKey),\n transition: shouldTransition && (props.transition || rest.transition || Fade),\n mountOnEnter: props.mountOnEnter != null ? props.mountOnEnter : rest.mountOnEnter,\n unmountOnExit: props.unmountOnExit != null ? props.unmountOnExit : rest.unmountOnExit\n });\n}\n\nvar TabPane = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _useTabContext = useTabContext(props),\n bsPrefix = _useTabContext.bsPrefix,\n className = _useTabContext.className,\n active = _useTabContext.active,\n onEnter = _useTabContext.onEnter,\n onEntering = _useTabContext.onEntering,\n onEntered = _useTabContext.onEntered,\n onExit = _useTabContext.onExit,\n onExiting = _useTabContext.onExiting,\n onExited = _useTabContext.onExited,\n mountOnEnter = _useTabContext.mountOnEnter,\n unmountOnExit = _useTabContext.unmountOnExit,\n Transition = _useTabContext.transition,\n _useTabContext$as = _useTabContext.as,\n Component = _useTabContext$as === void 0 ? 'div' : _useTabContext$as,\n _ = _useTabContext.eventKey,\n rest = _objectWithoutPropertiesLoose(_useTabContext, _excluded2);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'tab-pane');\n if (!active && !Transition && unmountOnExit) return null;\n var pane = /*#__PURE__*/React.createElement(Component, _extends({}, rest, {\n ref: ref,\n role: \"tabpanel\",\n \"aria-hidden\": !active,\n className: classNames(className, prefix, {\n active: active\n })\n }));\n if (Transition) pane = /*#__PURE__*/React.createElement(Transition, {\n in: active,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n onExited: onExited,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit\n }, pane); // We provide an empty the TabContext so `<Nav>`s in `<TabPane>`s don't\n // conflict with the top level one.\n\n return /*#__PURE__*/React.createElement(TabContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n value: null\n }, pane));\n});\nTabPane.displayName = 'TabPane';\nexport default TabPane;","import React from 'react';\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid elements\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n */\n\nfunction map(children, func) {\n var index = 0;\n return React.Children.map(children, function (child) {\n return /*#__PURE__*/React.isValidElement(child) ? func(child, index++) : child;\n });\n}\n/**\n * Iterates through children that are \"valid elements\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n */\n\n\nfunction forEach(children, func) {\n var index = 0;\n React.Children.forEach(children, function (child) {\n if ( /*#__PURE__*/React.isValidElement(child)) func(child, index++);\n });\n}\n\nexport { map, forEach };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"onSelect\", \"transition\", \"mountOnEnter\", \"unmountOnExit\", \"children\", \"activeKey\"];\nimport React from 'react';\nimport requiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport { useUncontrolled } from 'uncontrollable';\nimport Nav from './Nav';\nimport NavLink from './NavLink';\nimport NavItem from './NavItem';\nimport TabContainer from './TabContainer';\nimport TabContent from './TabContent';\nimport TabPane from './TabPane';\nimport { forEach, map } from './ElementChildren';\nvar defaultProps = {\n variant: 'tabs',\n mountOnEnter: false,\n unmountOnExit: false\n};\n\nfunction getDefaultActiveKey(children) {\n var defaultActiveKey;\n forEach(children, function (child) {\n if (defaultActiveKey == null) {\n defaultActiveKey = child.props.eventKey;\n }\n });\n return defaultActiveKey;\n}\n\nfunction renderTab(child) {\n var _child$props = child.props,\n title = _child$props.title,\n eventKey = _child$props.eventKey,\n disabled = _child$props.disabled,\n tabClassName = _child$props.tabClassName,\n id = _child$props.id;\n\n if (title == null) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(NavItem, {\n as: NavLink,\n eventKey: eventKey,\n disabled: disabled,\n id: id,\n className: tabClassName\n }, title);\n}\n\nvar Tabs = function Tabs(props) {\n var _useUncontrolled = useUncontrolled(props, {\n activeKey: 'onSelect'\n }),\n id = _useUncontrolled.id,\n onSelect = _useUncontrolled.onSelect,\n transition = _useUncontrolled.transition,\n mountOnEnter = _useUncontrolled.mountOnEnter,\n unmountOnExit = _useUncontrolled.unmountOnExit,\n children = _useUncontrolled.children,\n _useUncontrolled$acti = _useUncontrolled.activeKey,\n activeKey = _useUncontrolled$acti === void 0 ? getDefaultActiveKey(children) : _useUncontrolled$acti,\n controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n return /*#__PURE__*/React.createElement(TabContainer, {\n id: id,\n activeKey: activeKey,\n onSelect: onSelect,\n transition: transition,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit\n }, /*#__PURE__*/React.createElement(Nav, _extends({}, controlledProps, {\n role: \"tablist\",\n as: \"nav\"\n }), map(children, renderTab)), /*#__PURE__*/React.createElement(TabContent, null, map(children, function (child) {\n var childProps = _extends({}, child.props);\n\n delete childProps.title;\n delete childProps.disabled;\n delete childProps.tabClassName;\n return /*#__PURE__*/React.createElement(TabPane, childProps);\n })));\n};\n\nTabs.defaultProps = defaultProps;\nTabs.displayName = 'Tabs';\nexport default Tabs;","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport TabContainer from './TabContainer';\nimport TabContent from './TabContent';\nimport TabPane from './TabPane';\n\n/* eslint-disable react/require-render-return, react/no-unused-prop-types */\nvar Tab = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Tab, _React$Component);\n\n function Tab() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Tab.prototype;\n\n _proto.render = function render() {\n throw new Error('ReactBootstrap: The `Tab` component is not meant to be rendered! ' + \"It's an abstract component that is only valid as a direct Child of the `Tabs` Component. \" + 'For custom tabs components use TabPane and TabsContainer directly');\n return null;\n };\n\n return Tab;\n}(React.Component);\n\nTab.Container = TabContainer;\nTab.Content = TabContent;\nTab.Pane = TabPane;\nexport default Tab;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _excluded = [\"bsPrefix\", \"size\", \"hasValidation\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar InputGroupAppend = createWithBsPrefix('input-group-append');\nvar InputGroupPrepend = createWithBsPrefix('input-group-prepend');\nvar InputGroupText = createWithBsPrefix('input-group-text', {\n Component: 'span'\n});\n\nvar InputGroupCheckbox = function InputGroupCheckbox(props) {\n return /*#__PURE__*/React.createElement(InputGroupText, null, /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"checkbox\"\n }, props)));\n};\n\nvar InputGroupRadio = function InputGroupRadio(props) {\n return /*#__PURE__*/React.createElement(InputGroupText, null, /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"radio\"\n }, props)));\n};\n\n/**\n *\n * @property {InputGroupAppend} Append\n * @property {InputGroupPrepend} Prepend\n * @property {InputGroupText} Text\n * @property {InputGroupRadio} Radio\n * @property {InputGroupCheckbox} Checkbox\n */\nvar InputGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n size = _ref.size,\n hasValidation = _ref.hasValidation,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'input-group');\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, bsPrefix, size && bsPrefix + \"-\" + size, hasValidation && 'has-validation')\n }));\n});\nInputGroup.displayName = 'InputGroup';\nInputGroup.Text = InputGroupText;\nInputGroup.Radio = InputGroupRadio;\nInputGroup.Checkbox = InputGroupCheckbox;\nInputGroup.Append = InputGroupAppend;\nInputGroup.Prepend = InputGroupPrepend;\nexport default InputGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"striped\", \"bordered\", \"borderless\", \"hover\", \"size\", \"variant\", \"responsive\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar Table = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n striped = _ref.striped,\n bordered = _ref.bordered,\n borderless = _ref.borderless,\n hover = _ref.hover,\n size = _ref.size,\n variant = _ref.variant,\n responsive = _ref.responsive,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'table');\n var classes = classNames(className, decoratedBsPrefix, variant && decoratedBsPrefix + \"-\" + variant, size && decoratedBsPrefix + \"-\" + size, striped && decoratedBsPrefix + \"-striped\", bordered && decoratedBsPrefix + \"-bordered\", borderless && decoratedBsPrefix + \"-borderless\", hover && decoratedBsPrefix + \"-hover\");\n var table = /*#__PURE__*/React.createElement(\"table\", _extends({}, props, {\n className: classes,\n ref: ref\n }));\n\n if (responsive) {\n var responsiveClass = decoratedBsPrefix + \"-responsive\";\n\n if (typeof responsive === 'string') {\n responsiveClass = responsiveClass + \"-\" + responsive;\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: responsiveClass\n }, table);\n }\n\n return table;\n});\nexport default Table;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"size\", \"toggle\", \"vertical\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n vertical: false,\n toggle: false,\n role: 'group'\n};\nvar ButtonGroup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n size = _ref.size,\n toggle = _ref.toggle,\n vertical = _ref.vertical,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'btn-group');\n var baseClass = prefix;\n if (vertical) baseClass = prefix + \"-vertical\";\n return /*#__PURE__*/React.createElement(Component, _extends({}, rest, {\n ref: ref,\n className: classNames(className, baseClass, size && prefix + \"-\" + size, toggle && prefix + \"-toggle\")\n }));\n});\nButtonGroup.displayName = 'ButtonGroup';\nButtonGroup.defaultProps = defaultProps;\nexport default ButtonGroup;","/* eslint-disable no-bitwise, no-cond-assign */\n\n/**\n * Checks if an element contains another given element.\n * \n * @param context the context element\n * @param node the element to check\n */\nexport default function contains(context, node) {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n if (context.contains) return context.contains(node);\n if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","import { useRef, useEffect } from 'react';\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n * fetchdata().then((newData) => {\n * if (isMounted()) {\n * setData(newData);\n * }\n * })\n * })\n * ```\n */\n\nexport default function useMounted() {\n var mounted = useRef(true);\n var isMounted = useRef(function () {\n return mounted.current;\n });\n useEffect(function () {\n mounted.current = true;\n return function () {\n mounted.current = false;\n };\n }, []);\n return isMounted.current;\n}","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\n\nexport default function useWillUnmount(fn) {\n var onUnmount = useUpdatedRef(fn);\n useEffect(function () {\n return function () {\n return onUnmount.current();\n };\n }, []);\n}","import { useRef } from 'react';\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\n\nexport default function useUpdatedRef(value) {\n var valueRef = useRef(value);\n valueRef.current = value;\n return valueRef;\n}","import { useMemo, useRef } from 'react';\nimport useMounted from './useMounted';\nimport useWillUnmount from './useWillUnmount';\n/*\n * Browsers including Internet Explorer, Chrome, Safari, and Firefox store the\n * delay as a 32-bit signed integer internally. This causes an integer overflow\n * when using delays larger than 2,147,483,647 ms (about 24.8 days),\n * resulting in the timeout being executed immediately.\n *\n * via: https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout\n */\n\nvar MAX_DELAY_MS = Math.pow(2, 31) - 1;\n\nfunction setChainedTimeout(handleRef, fn, timeoutAtMs) {\n var delayMs = timeoutAtMs - Date.now();\n handleRef.current = delayMs <= MAX_DELAY_MS ? setTimeout(fn, delayMs) : setTimeout(function () {\n return setChainedTimeout(handleRef, fn, timeoutAtMs);\n }, MAX_DELAY_MS);\n}\n/**\n * Returns a controller object for setting a timeout that is properly cleaned up\n * once the component unmounts. New timeouts cancel and replace existing ones.\n *\n *\n *\n * ```tsx\n * const { set, clear } = useTimeout();\n * const [hello, showHello] = useState(false);\n * //Display hello after 5 seconds\n * set(() => showHello(true), 5000);\n * return (\n * <div className=\"App\">\n * {hello ? <h3>Hello</h3> : null}\n * </div>\n * );\n * ```\n */\n\n\nexport default function useTimeout() {\n var isMounted = useMounted(); // types are confused between node and web here IDK\n\n var handleRef = useRef();\n useWillUnmount(function () {\n return clearTimeout(handleRef.current);\n });\n return useMemo(function () {\n var clear = function clear() {\n return clearTimeout(handleRef.current);\n };\n\n function set(fn, delayMs) {\n if (delayMs === void 0) {\n delayMs = 0;\n }\n\n if (!isMounted()) return;\n clear();\n\n if (delayMs <= MAX_DELAY_MS) {\n // For simplicity, if the timeout is short, just set a normal timeout.\n handleRef.current = setTimeout(fn, delayMs);\n } else {\n setChainedTimeout(handleRef, fn, Date.now() + delayMs);\n }\n }\n\n return {\n set: set,\n clear: clear\n };\n }, []);\n}","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n if (componentOrElement && 'setState' in componentOrElement) {\n return ReactDOM.findDOMNode(componentOrElement);\n }\n\n return componentOrElement != null ? componentOrElement : null;\n}","import { useState } from 'react';\n/**\n * A convenience hook around `useState` designed to be paired with\n * the component [callback ref](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) api.\n * Callback refs are useful over `useRef()` when you need to respond to the ref being set\n * instead of lazily accessing it in an effect.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef<HTMLDivElement>()\n *\n * useEffect(() => {\n * if (!element) return\n *\n * const calendar = new FullCalendar.Calendar(element)\n *\n * return () => {\n * calendar.destroy()\n * }\n * }, [element])\n *\n * return <div ref={attachRef} />\n * ```\n *\n * @category refs\n */\n\nexport default function useCallbackRef() {\n return useState(null);\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { useCallback } from 'react';\nimport useMounted from './useMounted';\n\nfunction useSafeState(state) {\n var isMounted = useMounted();\n return [state[0], useCallback(function (nextState) {\n if (!isMounted()) return;\n return state[1](nextState);\n }, [isMounted, state[1]])];\n}\n\nexport default useSafeState;","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import arrow from '@popperjs/core/lib/modifiers/arrow';\nimport computeStyles from '@popperjs/core/lib/modifiers/computeStyles';\nimport eventListeners from '@popperjs/core/lib/modifiers/eventListeners';\nimport flip from '@popperjs/core/lib/modifiers/flip';\nimport hide from '@popperjs/core/lib/modifiers/hide';\nimport offset from '@popperjs/core/lib/modifiers/offset';\nimport popperOffsets from '@popperjs/core/lib/modifiers/popperOffsets';\nimport preventOverflow from '@popperjs/core/lib/modifiers/preventOverflow';\nimport { placements } from '@popperjs/core/lib/enums';\nimport { popperGenerator } from '@popperjs/core/lib/popper-base'; // For the common JS build we will turn this file into a bundle with no imports.\n// This is b/c the Popper lib is all esm files, and would break in a common js only environment\n\nexport var createPopper = popperGenerator({\n defaultModifiers: [hide, popperOffsets, computeStyles, eventListeners, offset, flip, preventOverflow, arrow]\n});\nexport { placements };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport useSafeState from '@restart/hooks/useSafeState';\nimport { createPopper } from './popper';\n\nvar initialPopperStyles = function initialPopperStyles(position) {\n return {\n position: position,\n top: '0',\n left: '0',\n opacity: '0',\n pointerEvents: 'none'\n };\n};\n\nvar disabledApplyStylesModifier = {\n name: 'applyStyles',\n enabled: false\n}; // In order to satisfy the current usage of options, including undefined\n\nvar ariaDescribedByModifier = {\n name: 'ariaDescribedBy',\n enabled: true,\n phase: 'afterWrite',\n effect: function effect(_ref) {\n var state = _ref.state;\n return function () {\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper;\n\n if ('removeAttribute' in reference) {\n var ids = (reference.getAttribute('aria-describedby') || '').split(',').filter(function (id) {\n return id.trim() !== popper.id;\n });\n if (!ids.length) reference.removeAttribute('aria-describedby');else reference.setAttribute('aria-describedby', ids.join(','));\n }\n };\n },\n fn: function fn(_ref2) {\n var _popper$getAttribute;\n\n var state = _ref2.state;\n var _state$elements2 = state.elements,\n popper = _state$elements2.popper,\n reference = _state$elements2.reference;\n var role = (_popper$getAttribute = popper.getAttribute('role')) == null ? void 0 : _popper$getAttribute.toLowerCase();\n\n if (popper.id && role === 'tooltip' && 'setAttribute' in reference) {\n var ids = reference.getAttribute('aria-describedby');\n\n if (ids && ids.split(',').indexOf(popper.id) !== -1) {\n return;\n }\n\n reference.setAttribute('aria-describedby', ids ? ids + \",\" + popper.id : popper.id);\n }\n }\n};\nvar EMPTY_MODIFIERS = [];\n/**\n * Position an element relative some reference element using Popper.js\n *\n * @param referenceElement\n * @param popperElement\n * @param {object} options\n * @param {object=} options.modifiers Popper.js modifiers\n * @param {boolean=} options.enabled toggle the popper functionality on/off\n * @param {string=} options.placement The popper element placement relative to the reference element\n * @param {string=} options.strategy the positioning strategy\n * @param {boolean=} options.eventsEnabled have Popper listen on window resize events to reposition the element\n * @param {function=} options.onCreate called when the popper is created\n * @param {function=} options.onUpdate called when the popper is updated\n *\n * @returns {UsePopperState} The popper state\n */\n\nfunction usePopper(referenceElement, popperElement, _temp) {\n var _ref3 = _temp === void 0 ? {} : _temp,\n _ref3$enabled = _ref3.enabled,\n enabled = _ref3$enabled === void 0 ? true : _ref3$enabled,\n _ref3$placement = _ref3.placement,\n placement = _ref3$placement === void 0 ? 'bottom' : _ref3$placement,\n _ref3$strategy = _ref3.strategy,\n strategy = _ref3$strategy === void 0 ? 'absolute' : _ref3$strategy,\n _ref3$modifiers = _ref3.modifiers,\n modifiers = _ref3$modifiers === void 0 ? EMPTY_MODIFIERS : _ref3$modifiers,\n config = _objectWithoutPropertiesLoose(_ref3, [\"enabled\", \"placement\", \"strategy\", \"modifiers\"]);\n\n var popperInstanceRef = useRef();\n var update = useCallback(function () {\n var _popperInstanceRef$cu;\n\n (_popperInstanceRef$cu = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu.update();\n }, []);\n var forceUpdate = useCallback(function () {\n var _popperInstanceRef$cu2;\n\n (_popperInstanceRef$cu2 = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu2.forceUpdate();\n }, []);\n\n var _useSafeState = useSafeState(useState({\n placement: placement,\n update: update,\n forceUpdate: forceUpdate,\n attributes: {},\n styles: {\n popper: initialPopperStyles(strategy),\n arrow: {}\n }\n })),\n popperState = _useSafeState[0],\n setState = _useSafeState[1];\n\n var updateModifier = useMemo(function () {\n return {\n name: 'updateStateModifier',\n enabled: true,\n phase: 'write',\n requires: ['computeStyles'],\n fn: function fn(_ref4) {\n var state = _ref4.state;\n var styles = {};\n var attributes = {};\n Object.keys(state.elements).forEach(function (element) {\n styles[element] = state.styles[element];\n attributes[element] = state.attributes[element];\n });\n setState({\n state: state,\n styles: styles,\n attributes: attributes,\n update: update,\n forceUpdate: forceUpdate,\n placement: state.placement\n });\n }\n };\n }, [update, forceUpdate, setState]);\n useEffect(function () {\n if (!popperInstanceRef.current || !enabled) return;\n popperInstanceRef.current.setOptions({\n placement: placement,\n strategy: strategy,\n modifiers: [].concat(modifiers, [updateModifier, disabledApplyStylesModifier])\n }); // intentionally NOT re-running on new modifiers\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [strategy, placement, updateModifier, enabled]);\n useEffect(function () {\n if (!enabled || referenceElement == null || popperElement == null) {\n return undefined;\n }\n\n popperInstanceRef.current = createPopper(referenceElement, popperElement, _extends({}, config, {\n placement: placement,\n strategy: strategy,\n modifiers: [].concat(modifiers, [ariaDescribedByModifier, updateModifier])\n }));\n return function () {\n if (popperInstanceRef.current != null) {\n popperInstanceRef.current.destroy();\n popperInstanceRef.current = undefined;\n setState(function (s) {\n return _extends({}, s, {\n attributes: {},\n styles: {\n popper: initialPopperStyles(strategy)\n }\n });\n });\n }\n }; // This is only run once to _create_ the popper\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled, referenceElement, popperElement]);\n return popperState;\n}\n\nexport default usePopper;","import contains from 'dom-helpers/contains';\nimport listen from 'dom-helpers/listen';\nimport { useCallback, useEffect, useRef } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport ownerDocument from './ownerDocument';\nvar escapeKeyCode = 27;\n\nvar noop = function noop() {};\n\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar getRefTarget = function getRefTarget(ref) {\n return ref && ('current' in ref ? ref.current : ref);\n};\n\n/**\n * The `useRootClose` hook registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref The element boundary\n * @param {function} onRootClose\n * @param {object=} options\n * @param {boolean=} options.disabled\n * @param {string=} options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\nfunction useRootClose(ref, onRootClose, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n disabled = _ref.disabled,\n _ref$clickTrigger = _ref.clickTrigger,\n clickTrigger = _ref$clickTrigger === void 0 ? 'click' : _ref$clickTrigger;\n\n var preventMouseRootCloseRef = useRef(false);\n var onClose = onRootClose || noop;\n var handleMouseCapture = useCallback(function (e) {\n var _e$composedPath$;\n\n var currentTarget = getRefTarget(ref);\n warning(!!currentTarget, 'RootClose captured a close event but does not have a ref to compare it to. ' + 'useRootClose(), should be passed a ref that resolves to a DOM node');\n preventMouseRootCloseRef.current = !currentTarget || isModifiedEvent(e) || !isLeftClickEvent(e) || !!contains(currentTarget, (_e$composedPath$ = e.composedPath == null ? void 0 : e.composedPath()[0]) != null ? _e$composedPath$ : e.target);\n }, [ref]);\n var handleMouse = useEventCallback(function (e) {\n if (!preventMouseRootCloseRef.current) {\n onClose(e);\n }\n });\n var handleKeyUp = useEventCallback(function (e) {\n if (e.keyCode === escapeKeyCode) {\n onClose(e);\n }\n });\n useEffect(function () {\n if (disabled || ref == null) return undefined; // Store the current event to avoid triggering handlers immediately\n // https://github.com/facebook/react/issues/20074\n\n var currentEvent = window.event;\n var doc = ownerDocument(getRefTarget(ref)); // Use capture for this listener so it fires before React's listener, to\n // avoid false positives in the contains() check below if the target DOM\n // element is removed in the React mouse callback.\n\n var removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\n var removeMouseListener = listen(doc, clickTrigger, function (e) {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleMouse(e);\n });\n var removeKeyupListener = listen(doc, 'keyup', function (e) {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleKeyUp(e);\n });\n var mobileSafariHackListeners = [];\n\n if ('ontouchstart' in doc.documentElement) {\n mobileSafariHackListeners = [].slice.call(doc.body.children).map(function (el) {\n return listen(el, 'mousemove', noop);\n });\n }\n\n return function () {\n removeMouseCaptureListener();\n removeMouseListener();\n removeKeyupListener();\n mobileSafariHackListeners.forEach(function (remove) {\n return remove();\n });\n };\n }, [ref, disabled, clickTrigger, handleMouseCapture, handleMouse, handleKeyUp]);\n}\n\nexport default useRootClose;","import ownerDocument from 'dom-helpers/ownerDocument';\nimport safeFindDOMNode from './safeFindDOMNode';\nexport default (function (componentOrElement) {\n return ownerDocument(safeFindDOMNode(componentOrElement));\n});","import ownerDocument from 'dom-helpers/ownerDocument';\nimport { useState, useEffect } from 'react';\nexport var resolveContainerRef = function resolveContainerRef(ref) {\n var _ref;\n\n if (typeof document === 'undefined') return null;\n if (ref == null) return ownerDocument().body;\n if (typeof ref === 'function') ref = ref();\n if (ref && 'current' in ref) ref = ref.current;\n if ((_ref = ref) != null && _ref.nodeType) return ref || null;\n return null;\n};\nexport default function useWaitForDOMRef(ref, onResolved) {\n var _useState = useState(function () {\n return resolveContainerRef(ref);\n }),\n resolvedRef = _useState[0],\n setRef = _useState[1];\n\n if (!resolvedRef) {\n var earlyRef = resolveContainerRef(ref);\n if (earlyRef) setRef(earlyRef);\n }\n\n useEffect(function () {\n if (onResolved && resolvedRef) {\n onResolved(resolvedRef);\n }\n }, [onResolved, resolvedRef]);\n useEffect(function () {\n var nextRef = resolveContainerRef(ref);\n\n if (nextRef !== resolvedRef) {\n setRef(nextRef);\n }\n }, [ref, resolvedRef]);\n return resolvedRef;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function toModifierMap(modifiers) {\n var result = {};\n\n if (!Array.isArray(modifiers)) {\n return modifiers || result;\n } // eslint-disable-next-line no-unused-expressions\n\n\n modifiers == null ? void 0 : modifiers.forEach(function (m) {\n result[m.name] = m;\n });\n return result;\n}\nexport function toModifierArray(map) {\n if (map === void 0) {\n map = {};\n }\n\n if (Array.isArray(map)) return map;\n return Object.keys(map).map(function (k) {\n map[k].name = k;\n return map[k];\n });\n}\nexport default function mergeOptionsWithPopperConfig(_ref) {\n var _modifiers$preventOve, _modifiers$preventOve2, _modifiers$offset, _modifiers$arrow;\n\n var enabled = _ref.enabled,\n enableEvents = _ref.enableEvents,\n placement = _ref.placement,\n flip = _ref.flip,\n offset = _ref.offset,\n fixed = _ref.fixed,\n containerPadding = _ref.containerPadding,\n arrowElement = _ref.arrowElement,\n _ref$popperConfig = _ref.popperConfig,\n popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig;\n var modifiers = toModifierMap(popperConfig.modifiers);\n return _extends({}, popperConfig, {\n placement: placement,\n enabled: enabled,\n strategy: fixed ? 'fixed' : popperConfig.strategy,\n modifiers: toModifierArray(_extends({}, modifiers, {\n eventListeners: {\n enabled: enableEvents\n },\n preventOverflow: _extends({}, modifiers.preventOverflow, {\n options: containerPadding ? _extends({\n padding: containerPadding\n }, (_modifiers$preventOve = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve.options) : (_modifiers$preventOve2 = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve2.options\n }),\n offset: {\n options: _extends({\n offset: offset\n }, (_modifiers$offset = modifiers.offset) == null ? void 0 : _modifiers$offset.options)\n },\n arrow: _extends({}, modifiers.arrow, {\n enabled: !!arrowElement,\n options: _extends({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options, {\n element: arrowElement\n })\n }),\n flip: _extends({\n enabled: !!flip\n }, modifiers.flip)\n }))\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { placements } from './popper';\nimport usePopper from './usePopper';\nimport useRootClose from './useRootClose';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\n\n/**\n * Built on top of `Popper.js`, the overlay component is\n * great for custom tooltip overlays.\n */\nvar Overlay = /*#__PURE__*/React.forwardRef(function (props, outerRef) {\n var flip = props.flip,\n offset = props.offset,\n placement = props.placement,\n _props$containerPaddi = props.containerPadding,\n containerPadding = _props$containerPaddi === void 0 ? 5 : _props$containerPaddi,\n _props$popperConfig = props.popperConfig,\n popperConfig = _props$popperConfig === void 0 ? {} : _props$popperConfig,\n Transition = props.transition;\n\n var _useCallbackRef = useCallbackRef(),\n rootElement = _useCallbackRef[0],\n attachRef = _useCallbackRef[1];\n\n var _useCallbackRef2 = useCallbackRef(),\n arrowElement = _useCallbackRef2[0],\n attachArrowRef = _useCallbackRef2[1];\n\n var mergedRef = useMergedRefs(attachRef, outerRef);\n var container = useWaitForDOMRef(props.container);\n var target = useWaitForDOMRef(props.target);\n\n var _useState = useState(!props.show),\n exited = _useState[0],\n setExited = _useState[1];\n\n var _usePopper = usePopper(target, rootElement, mergeOptionsWithPopperConfig({\n placement: placement,\n enableEvents: !!props.show,\n containerPadding: containerPadding || 5,\n flip: flip,\n offset: offset,\n arrowElement: arrowElement,\n popperConfig: popperConfig\n })),\n styles = _usePopper.styles,\n attributes = _usePopper.attributes,\n popper = _objectWithoutPropertiesLoose(_usePopper, [\"styles\", \"attributes\"]);\n\n if (props.show) {\n if (exited) setExited(false);\n } else if (!props.transition && !exited) {\n setExited(true);\n }\n\n var handleHidden = function handleHidden() {\n setExited(true);\n\n if (props.onExited) {\n props.onExited.apply(props, arguments);\n }\n }; // Don't un-render the overlay while it's transitioning out.\n\n\n var mountOverlay = props.show || Transition && !exited;\n useRootClose(rootElement, props.onHide, {\n disabled: !props.rootClose || props.rootCloseDisabled,\n clickTrigger: props.rootCloseEvent\n });\n\n if (!mountOverlay) {\n // Don't bother showing anything if we don't have to.\n return null;\n }\n\n var child = props.children(_extends({}, popper, {\n show: !!props.show,\n props: _extends({}, attributes.popper, {\n style: styles.popper,\n ref: mergedRef\n }),\n arrowProps: _extends({}, attributes.arrow, {\n style: styles.arrow,\n ref: attachArrowRef\n })\n }));\n\n if (Transition) {\n var onExit = props.onExit,\n onExiting = props.onExiting,\n onEnter = props.onEnter,\n onEntering = props.onEntering,\n onEntered = props.onEntered;\n child = /*#__PURE__*/React.createElement(Transition, {\n \"in\": props.show,\n appear: true,\n onExit: onExit,\n onExiting: onExiting,\n onExited: handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n }, child);\n }\n\n return container ? /*#__PURE__*/ReactDOM.createPortal(child, container) : null;\n});\nOverlay.displayName = 'Overlay';\nOverlay.propTypes = {\n /**\n * Set the visibility of the Overlay\n */\n show: PropTypes.bool,\n\n /** Specify where the overlay element is positioned in relation to the target element */\n placement: PropTypes.oneOf(placements),\n\n /**\n * A DOM Element, Ref to an element, or function that returns either. The `target` element is where\n * the overlay is positioned relative to.\n */\n target: PropTypes.any,\n\n /**\n * A DOM Element, Ref to an element, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: PropTypes.any,\n\n /**\n * Enables the Popper.js `flip` modifier, allowing the Overlay to\n * automatically adjust it's placement in case of overlap with the viewport or toggle.\n * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n */\n flip: PropTypes.bool,\n\n /**\n * A render prop that returns an element to overlay and position. See\n * the [react-popper documentation](https://github.com/FezVrasta/react-popper#children) for more info.\n *\n * @type {Function ({\n * show: boolean,\n * placement: Placement,\n * update: () => void,\n * forceUpdate: () => void,\n * props: {\n * ref: (?HTMLElement) => void,\n * style: { [string]: string | number },\n * aria-labelledby: ?string\n * [string]: string | number,\n * },\n * arrowProps: {\n * ref: (?HTMLElement) => void,\n * style: { [string]: string | number },\n * [string]: string | number,\n * },\n * }) => React.Element}\n */\n children: PropTypes.func.isRequired,\n\n /**\n * Control how much space there is between the edge of the boundary element and overlay.\n * A convenience shortcut to setting `popperConfig.modfiers.preventOverflow.padding`\n */\n containerPadding: PropTypes.number,\n\n /**\n * A set of popper options and props passed directly to react-popper's Popper component.\n */\n popperConfig: PropTypes.object,\n\n /**\n * Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay\n */\n rootClose: PropTypes.bool,\n\n /**\n * Specify event for toggling overlay\n */\n rootCloseEvent: PropTypes.oneOf(['click', 'mousedown']),\n\n /**\n * Specify disabled for disable RootCloseWrapper\n */\n rootCloseDisabled: PropTypes.bool,\n\n /**\n * A Callback fired by the Overlay when it wishes to be hidden.\n *\n * __required__ when `rootClose` is `true`.\n *\n * @type func\n */\n onHide: function onHide(props) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (props.rootClose) {\n var _PropTypes$func;\n\n return (_PropTypes$func = PropTypes.func).isRequired.apply(_PropTypes$func, [props].concat(args));\n }\n\n return PropTypes.func.apply(PropTypes, [props].concat(args));\n },\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component\n * used to animate the overlay as it changes visibility.\n */\n // @ts-ignore\n transition: PropTypes.elementType,\n\n /**\n * Callback fired before the Overlay transitions in\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired as the Overlay begins to transition in\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the Overlay finishes transitioning in\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired right before the Overlay transitions out\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired as the Overlay begins to transition out\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the Overlay finishes transitioning out\n */\n onExited: PropTypes.func\n};\nexport default Overlay;","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import { useCallback, useMemo, useRef } from 'react';\nimport hasClass from 'dom-helpers/hasClass';\nimport { useBootstrapPrefix } from './ThemeProvider';\n\nfunction getMargins(element) {\n var styles = window.getComputedStyle(element);\n var top = parseFloat(styles.marginTop) || 0;\n var right = parseFloat(styles.marginRight) || 0;\n var bottom = parseFloat(styles.marginBottom) || 0;\n var left = parseFloat(styles.marginLeft) || 0;\n return {\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n}\n\nexport default function usePopperMarginModifiers() {\n var overlayRef = useRef(null);\n var margins = useRef(null);\n var arrowMargins = useRef(null);\n var popoverClass = useBootstrapPrefix(undefined, 'popover');\n var dropdownMenuClass = useBootstrapPrefix(undefined, 'dropdown-menu');\n var callback = useCallback(function (overlay) {\n if (!overlay || !(hasClass(overlay, popoverClass) || hasClass(overlay, dropdownMenuClass))) return;\n margins.current = getMargins(overlay);\n overlay.style.margin = '0';\n overlayRef.current = overlay;\n }, [popoverClass, dropdownMenuClass]);\n var offset = useMemo(function () {\n return {\n name: 'offset',\n options: {\n offset: function offset(_ref) {\n var placement = _ref.placement;\n if (!margins.current) return [0, 0];\n var _margins$current = margins.current,\n top = _margins$current.top,\n left = _margins$current.left,\n bottom = _margins$current.bottom,\n right = _margins$current.right;\n\n switch (placement.split('-')[0]) {\n case 'top':\n return [0, bottom];\n\n case 'left':\n return [0, right];\n\n case 'bottom':\n return [0, top];\n\n case 'right':\n return [0, left];\n\n default:\n return [0, 0];\n }\n }\n }\n };\n }, [margins]);\n var arrow = useMemo(function () {\n return {\n name: 'arrow',\n options: {\n padding: function padding() {\n // The options here are used for Popper 2.8.4 and up.\n // For earlier version, padding is handled in popoverArrowMargins below.\n if (!arrowMargins.current) {\n return 0;\n }\n\n var _arrowMargins$current = arrowMargins.current,\n top = _arrowMargins$current.top,\n right = _arrowMargins$current.right;\n var padding = top || right;\n return {\n top: padding,\n left: padding,\n right: padding,\n bottom: padding\n };\n }\n }\n };\n }, [arrowMargins]); // Converts popover arrow margin to arrow modifier padding\n\n var popoverArrowMargins = useMemo(function () {\n return {\n name: 'popoverArrowMargins',\n enabled: true,\n phase: 'main',\n fn: function fn() {\n return undefined;\n },\n requiresIfExists: ['arrow'],\n effect: function effect(_ref2) {\n var state = _ref2.state;\n\n if (!overlayRef.current || !state.elements.arrow || !hasClass(overlayRef.current, popoverClass)) {\n return undefined;\n }\n\n if (state.modifiersData['arrow#persistent']) {\n // @popperjs/core <= 2.8.3 uses arrow#persistent to pass padding to arrow modifier.\n var _getMargins = getMargins(state.elements.arrow),\n top = _getMargins.top,\n right = _getMargins.right;\n\n var padding = top || right;\n state.modifiersData['arrow#persistent'].padding = {\n top: padding,\n left: padding,\n right: padding,\n bottom: padding\n };\n } else {\n // @popperjs/core >= 2.8.4 gets the padding from the arrow modifier options,\n // so we'll get the margins here, and let the arrow modifier above pass\n // it to popper.\n arrowMargins.current = getMargins(state.elements.arrow);\n }\n\n state.elements.arrow.style.margin = '0';\n return function () {\n if (state.elements.arrow) state.elements.arrow.style.margin = '';\n };\n }\n };\n }, [popoverClass]);\n return [callback, [offset, arrow, popoverArrowMargins]];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"transition\", \"popperConfig\"],\n _excluded2 = [\"props\", \"arrowProps\", \"show\", \"update\", \"forceUpdate\", \"placement\", \"state\"];\nimport React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport BaseOverlay from 'react-overlays/Overlay';\nimport safeFindDOMNode from 'react-overlays/safeFindDOMNode';\nimport usePopperMarginModifiers from './usePopperMarginModifiers';\nimport Fade from './Fade';\nvar defaultProps = {\n transition: Fade,\n rootClose: false,\n show: false,\n placement: 'top'\n};\n\nfunction wrapRefs(props, arrowProps) {\n var ref = props.ref;\n var aRef = arrowProps.ref;\n\n props.ref = ref.__wrapped || (ref.__wrapped = function (r) {\n return ref(safeFindDOMNode(r));\n });\n\n arrowProps.ref = aRef.__wrapped || (aRef.__wrapped = function (r) {\n return aRef(safeFindDOMNode(r));\n });\n}\n\nfunction Overlay(_ref) {\n var overlay = _ref.children,\n transition = _ref.transition,\n _ref$popperConfig = _ref.popperConfig,\n popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig,\n outerProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var popperRef = useRef({});\n\n var _usePopperMarginModif = usePopperMarginModifiers(),\n ref = _usePopperMarginModif[0],\n marginModifiers = _usePopperMarginModif[1];\n\n var actualTransition = transition === true ? Fade : transition || null;\n return /*#__PURE__*/React.createElement(BaseOverlay, _extends({}, outerProps, {\n ref: ref,\n popperConfig: _extends({}, popperConfig, {\n modifiers: marginModifiers.concat(popperConfig.modifiers || [])\n }),\n transition: actualTransition\n }), function (_ref2) {\n var _state$modifiersData$;\n\n var overlayProps = _ref2.props,\n arrowProps = _ref2.arrowProps,\n show = _ref2.show,\n update = _ref2.update,\n _ = _ref2.forceUpdate,\n placement = _ref2.placement,\n state = _ref2.state,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded2);\n\n wrapRefs(overlayProps, arrowProps);\n var popper = Object.assign(popperRef.current, {\n state: state,\n scheduleUpdate: update,\n placement: placement,\n outOfBoundaries: (state == null ? void 0 : (_state$modifiersData$ = state.modifiersData.hide) == null ? void 0 : _state$modifiersData$.isReferenceHidden) || false\n });\n if (typeof overlay === 'function') return overlay(_extends({}, props, overlayProps, {\n placement: placement,\n show: show\n }, !transition && show && {\n className: 'show'\n }, {\n popper: popper,\n arrowProps: arrowProps\n }));\n return /*#__PURE__*/React.cloneElement(overlay, _extends({}, props, overlayProps, {\n placement: placement,\n arrowProps: arrowProps,\n popper: popper,\n className: classNames(overlay.props.className, !transition && show && 'show'),\n style: _extends({}, overlay.props.style, overlayProps.style)\n }));\n });\n}\n\nOverlay.defaultProps = defaultProps;\nexport default Overlay;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nvar _excluded = [\"trigger\", \"overlay\", \"children\", \"popperConfig\", \"show\", \"defaultShow\", \"onToggle\", \"delay\", \"placement\", \"flip\"];\nimport contains from 'dom-helpers/contains';\nimport React, { cloneElement, useCallback, useRef } from 'react';\nimport useTimeout from '@restart/hooks/useTimeout';\nimport safeFindDOMNode from 'react-overlays/safeFindDOMNode';\nimport warning from 'warning';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport Overlay from './Overlay';\n\nvar RefHolder = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(RefHolder, _React$Component);\n\n function RefHolder() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = RefHolder.prototype;\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return RefHolder;\n}(React.Component);\n\nfunction normalizeDelay(delay) {\n return delay && typeof delay === 'object' ? delay : {\n show: delay,\n hide: delay\n };\n} // Simple implementation of mouseEnter and mouseLeave.\n// React's built version is broken: https://github.com/facebook/react/issues/4251\n// for cases when the trigger is disabled and mouseOut/Over can cause flicker\n// moving from one child element to another.\n\n\nfunction handleMouseOverOut( // eslint-disable-next-line @typescript-eslint/no-shadow\nhandler, args, relatedNative) {\n var e = args[0];\n var target = e.currentTarget;\n var related = e.relatedTarget || e.nativeEvent[relatedNative];\n\n if ((!related || related !== target) && !contains(target, related)) {\n handler.apply(void 0, args);\n }\n}\n\nvar defaultProps = {\n defaultShow: false,\n trigger: ['hover', 'focus']\n};\n\nfunction OverlayTrigger(_ref) {\n var trigger = _ref.trigger,\n overlay = _ref.overlay,\n children = _ref.children,\n _ref$popperConfig = _ref.popperConfig,\n popperConfig = _ref$popperConfig === void 0 ? {} : _ref$popperConfig,\n propsShow = _ref.show,\n _ref$defaultShow = _ref.defaultShow,\n defaultShow = _ref$defaultShow === void 0 ? false : _ref$defaultShow,\n onToggle = _ref.onToggle,\n propsDelay = _ref.delay,\n placement = _ref.placement,\n _ref$flip = _ref.flip,\n flip = _ref$flip === void 0 ? placement && placement.indexOf('auto') !== -1 : _ref$flip,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var triggerNodeRef = useRef(null);\n var timeout = useTimeout();\n var hoverStateRef = useRef('');\n\n var _useUncontrolledProp = useUncontrolledProp(propsShow, defaultShow, onToggle),\n show = _useUncontrolledProp[0],\n setShow = _useUncontrolledProp[1];\n\n var delay = normalizeDelay(propsDelay);\n\n var _ref2 = typeof children !== 'function' ? React.Children.only(children).props : {},\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick;\n\n var getTarget = useCallback(function () {\n return safeFindDOMNode(triggerNodeRef.current);\n }, []);\n var handleShow = useCallback(function () {\n timeout.clear();\n hoverStateRef.current = 'show';\n\n if (!delay.show) {\n setShow(true);\n return;\n }\n\n timeout.set(function () {\n if (hoverStateRef.current === 'show') setShow(true);\n }, delay.show);\n }, [delay.show, setShow, timeout]);\n var handleHide = useCallback(function () {\n timeout.clear();\n hoverStateRef.current = 'hide';\n\n if (!delay.hide) {\n setShow(false);\n return;\n }\n\n timeout.set(function () {\n if (hoverStateRef.current === 'hide') setShow(false);\n }, delay.hide);\n }, [delay.hide, setShow, timeout]);\n var handleFocus = useCallback(function () {\n handleShow();\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n onFocus == null ? void 0 : onFocus.apply(void 0, args);\n }, [handleShow, onFocus]);\n var handleBlur = useCallback(function () {\n handleHide();\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n onBlur == null ? void 0 : onBlur.apply(void 0, args);\n }, [handleHide, onBlur]);\n var handleClick = useCallback(function () {\n setShow(!show);\n if (onClick) onClick.apply(void 0, arguments);\n }, [onClick, setShow, show]);\n var handleMouseOver = useCallback(function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n handleMouseOverOut(handleShow, args, 'fromElement');\n }, [handleShow]);\n var handleMouseOut = useCallback(function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n handleMouseOverOut(handleHide, args, 'toElement');\n }, [handleHide]);\n var triggers = trigger == null ? [] : [].concat(trigger);\n var triggerProps = {};\n\n if (triggers.indexOf('click') !== -1) {\n triggerProps.onClick = handleClick;\n }\n\n if (triggers.indexOf('focus') !== -1) {\n triggerProps.onFocus = handleFocus;\n triggerProps.onBlur = handleBlur;\n }\n\n if (triggers.indexOf('hover') !== -1) {\n process.env.NODE_ENV !== \"production\" ? warning(triggers.length > 1, '[react-bootstrap] Specifying only the `\"hover\"` trigger limits the visibility of the overlay to just mouse users. Consider also including the `\"focus\"` trigger so that touch and keyboard only users can see the overlay as well.') : void 0;\n triggerProps.onMouseOver = handleMouseOver;\n triggerProps.onMouseOut = handleMouseOut;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, typeof children === 'function' ? children(_extends({}, triggerProps, {\n ref: triggerNodeRef\n })) : /*#__PURE__*/React.createElement(RefHolder, {\n ref: triggerNodeRef\n }, /*#__PURE__*/cloneElement(children, triggerProps)), /*#__PURE__*/React.createElement(Overlay, _extends({}, props, {\n show: show,\n onHide: handleHide,\n flip: flip,\n placement: placement,\n popperConfig: popperConfig,\n target: getTarget\n }), overlay));\n}\n\nOverlayTrigger.defaultProps = defaultProps;\nexport default OverlayTrigger;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"bsPrefix\", \"className\", \"children\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar PopoverTitle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'popover-header');\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(bsPrefix, className)\n }), children);\n});\nexport default PopoverTitle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"as\", \"bsPrefix\", \"className\", \"children\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar PopoverContent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'popover-body');\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, bsPrefix)\n }), children);\n});\nexport default PopoverContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"placement\", \"className\", \"style\", \"children\", \"content\", \"arrowProps\", \"popper\", \"show\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport PopoverTitle from './PopoverTitle';\nimport PopoverContent from './PopoverContent';\nvar defaultProps = {\n placement: 'right'\n};\nvar Popover = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n placement = _ref.placement,\n className = _ref.className,\n style = _ref.style,\n children = _ref.children,\n content = _ref.content,\n arrowProps = _ref.arrowProps,\n _ = _ref.popper,\n _1 = _ref.show,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'popover');\n\n var _ref2 = (placement == null ? void 0 : placement.split('-')) || [],\n primaryPlacement = _ref2[0];\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n role: \"tooltip\",\n style: style,\n \"x-placement\": primaryPlacement,\n className: classNames(className, decoratedBsPrefix, primaryPlacement && \"bs-popover-\" + primaryPlacement)\n }, props), /*#__PURE__*/React.createElement(\"div\", _extends({\n className: \"arrow\"\n }, arrowProps)), content ? /*#__PURE__*/React.createElement(PopoverContent, null, children) : children);\n});\nPopover.defaultProps = defaultProps;\nPopover.Title = PopoverTitle;\nPopover.Content = PopoverContent;\nexport default Popover;","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (canUseDOM) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the actively focused element safely.\n *\n * @param doc the document to check\n */\n\nexport default function activeElement(doc) {\n if (doc === void 0) {\n doc = ownerDocument();\n }\n\n // Support: IE 9 only\n // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n try {\n var active = doc.activeElement; // IE11 returns a seemingly empty object in some cases when accessing\n // document.activeElement from an <iframe>\n\n if (!active || !active.nodeName) return null;\n return active;\n } catch (e) {\n /* ie throws if no active element */\n return doc.body;\n }\n}","import { useEffect, useRef } from 'react';\n/**\n * Store the last of some value. Tracked via a `Ref` only updating it\n * after the component renders.\n *\n * Helpful if you need to compare a prop value to it's previous value during render.\n *\n * ```ts\n * function Component(props) {\n * const lastProps = usePrevious(props)\n *\n * if (lastProps.foo !== props.foo)\n * resetValueFromProps(props.foo)\n * }\n * ```\n *\n * @param value the value to track\n */\n\nexport default function usePrevious(value) {\n var ref = useRef(null);\n useEffect(function () {\n ref.current = value;\n });\n return ref.current;\n}","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","import isDocument from './isDocument';\nexport default function isWindow(node) {\n if ('window' in node && node.window === node) return node;\n if (isDocument(node)) return node.defaultView || false;\n return false;\n}","export default function isDocument(element) {\n return 'nodeType' in element && element.nodeType === document.DOCUMENT_NODE;\n}","import isWindow from 'dom-helpers/isWindow';\nimport ownerDocument from 'dom-helpers/ownerDocument';\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = isWindow(node) ? ownerDocument() : ownerDocument(node);\n var win = isWindow(node) || doc.defaultView;\n return doc.body.clientWidth < win.innerWidth;\n}\n\nexport default function isOverflowing(container) {\n var win = isWindow(container);\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}","var BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType,\n tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, exclude, cb) {\n [].forEach.call(container.children, function (node) {\n if (exclude.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nexport function ariaHidden(hide, node) {\n if (!node) return;\n\n if (hide) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\nexport function hideSiblings(container, _ref2) {\n var dialog = _ref2.dialog,\n backdrop = _ref2.backdrop;\n siblings(container, [dialog, backdrop], function (node) {\n return ariaHidden(true, node);\n });\n}\nexport function showSiblings(container, _ref3) {\n var dialog = _ref3.dialog,\n backdrop = _ref3.backdrop;\n siblings(container, [dialog, backdrop], function (node) {\n return ariaHidden(false, node);\n });\n}","import addClass from 'dom-helpers/addClass';\nimport removeClass from 'dom-helpers/removeClass';\nimport css from 'dom-helpers/css';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport isOverflowing from './isOverflowing';\nimport { ariaHidden, hideSiblings, showSiblings } from './manageAriaHidden';\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n\n return false;\n });\n return idx;\n}\n\n/**\n * Proper state management for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\nvar ModalManager = /*#__PURE__*/function () {\n function ModalManager(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$hideSiblingNodes = _ref.hideSiblingNodes,\n hideSiblingNodes = _ref$hideSiblingNodes === void 0 ? true : _ref$hideSiblingNodes,\n _ref$handleContainerO = _ref.handleContainerOverflow,\n handleContainerOverflow = _ref$handleContainerO === void 0 ? true : _ref$handleContainerO;\n\n this.hideSiblingNodes = void 0;\n this.handleContainerOverflow = void 0;\n this.modals = void 0;\n this.containers = void 0;\n this.data = void 0;\n this.scrollbarSize = void 0;\n this.hideSiblingNodes = hideSiblingNodes;\n this.handleContainerOverflow = handleContainerOverflow;\n this.modals = [];\n this.containers = [];\n this.data = [];\n this.scrollbarSize = getScrollbarSize();\n }\n\n var _proto = ModalManager.prototype;\n\n _proto.isContainerOverflowing = function isContainerOverflowing(modal) {\n var data = this.data[this.containerIndexFromModal(modal)];\n return data && data.overflowing;\n };\n\n _proto.containerIndexFromModal = function containerIndexFromModal(modal) {\n return findIndexOf(this.data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n };\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var style = {\n overflow: 'hidden'\n }; // we are only interested in the actual `style` here\n // because we will override it\n\n containerState.style = {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n };\n\n if (containerState.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt(css(container, 'paddingRight') || '0', 10) + this.scrollbarSize + \"px\";\n }\n\n css(container, style);\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n Object.assign(container.style, containerState.style);\n };\n\n _proto.add = function add(modal, container, className) {\n var modalIdx = this.modals.indexOf(modal);\n var containerIdx = this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = this.modals.length;\n this.modals.push(modal);\n\n if (this.hideSiblingNodes) {\n hideSiblings(container, modal);\n }\n\n if (containerIdx !== -1) {\n this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n // right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n overflowing: isOverflowing(container)\n };\n\n if (this.handleContainerOverflow) {\n this.setContainerStyle(data, container);\n }\n\n data.classes.forEach(addClass.bind(null, container));\n this.containers.push(container);\n this.data.push(data);\n return modalIdx;\n };\n\n _proto.remove = function remove(modal) {\n var modalIdx = this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = this.containerIndexFromModal(modal);\n var data = this.data[containerIdx];\n var container = this.containers[containerIdx];\n data.modals.splice(data.modals.indexOf(modal), 1);\n this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n // clean up the container\n\n if (data.modals.length === 0) {\n data.classes.forEach(removeClass.bind(null, container));\n\n if (this.handleContainerOverflow) {\n this.removeContainerStyle(data, container);\n }\n\n if (this.hideSiblingNodes) {\n showSiblings(container, modal);\n }\n\n this.containers.splice(containerIdx, 1);\n this.data.splice(containerIdx, 1);\n } else if (this.hideSiblingNodes) {\n // otherwise make sure the next top modal is visible to a SR\n var _data$modals = data.modals[data.modals.length - 1],\n backdrop = _data$modals.backdrop,\n dialog = _data$modals.dialog;\n ariaHidden(false, dialog);\n ariaHidden(false, backdrop);\n }\n };\n\n _proto.isTopModal = function isTopModal(modal) {\n return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n };\n\n return ModalManager;\n}();\n\nexport default ModalManager;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\n/* eslint-disable @typescript-eslint/no-use-before-define, react/prop-types */\nimport activeElement from 'dom-helpers/activeElement';\nimport contains from 'dom-helpers/contains';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport listen from 'dom-helpers/listen';\nimport PropTypes from 'prop-types';\nimport React, { useState, useRef, useCallback, useImperativeHandle, forwardRef, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport useMounted from '@restart/hooks/useMounted';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport ModalManager from './ModalManager';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nvar manager;\n\nfunction getManager() {\n if (!manager) manager = new ModalManager();\n return manager;\n}\n\nfunction useModalManager(provided) {\n var modalManager = provided || getManager();\n var modal = useRef({\n dialog: null,\n backdrop: null\n });\n return Object.assign(modal.current, {\n add: function add(container, className) {\n return modalManager.add(modal.current, container, className);\n },\n remove: function remove() {\n return modalManager.remove(modal.current);\n },\n isTopModal: function isTopModal() {\n return modalManager.isTopModal(modal.current);\n },\n setDialogRef: useCallback(function (ref) {\n modal.current.dialog = ref;\n }, []),\n setBackdropRef: useCallback(function (ref) {\n modal.current.backdrop = ref;\n }, [])\n });\n}\n\nvar Modal = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var _ref$show = _ref.show,\n show = _ref$show === void 0 ? false : _ref$show,\n _ref$role = _ref.role,\n role = _ref$role === void 0 ? 'dialog' : _ref$role,\n className = _ref.className,\n style = _ref.style,\n children = _ref.children,\n _ref$backdrop = _ref.backdrop,\n backdrop = _ref$backdrop === void 0 ? true : _ref$backdrop,\n _ref$keyboard = _ref.keyboard,\n keyboard = _ref$keyboard === void 0 ? true : _ref$keyboard,\n onBackdropClick = _ref.onBackdropClick,\n onEscapeKeyDown = _ref.onEscapeKeyDown,\n transition = _ref.transition,\n backdropTransition = _ref.backdropTransition,\n _ref$autoFocus = _ref.autoFocus,\n autoFocus = _ref$autoFocus === void 0 ? true : _ref$autoFocus,\n _ref$enforceFocus = _ref.enforceFocus,\n enforceFocus = _ref$enforceFocus === void 0 ? true : _ref$enforceFocus,\n _ref$restoreFocus = _ref.restoreFocus,\n restoreFocus = _ref$restoreFocus === void 0 ? true : _ref$restoreFocus,\n restoreFocusOptions = _ref.restoreFocusOptions,\n renderDialog = _ref.renderDialog,\n _ref$renderBackdrop = _ref.renderBackdrop,\n renderBackdrop = _ref$renderBackdrop === void 0 ? function (props) {\n return /*#__PURE__*/React.createElement(\"div\", props);\n } : _ref$renderBackdrop,\n providedManager = _ref.manager,\n containerRef = _ref.container,\n containerClassName = _ref.containerClassName,\n onShow = _ref.onShow,\n _ref$onHide = _ref.onHide,\n onHide = _ref$onHide === void 0 ? function () {} : _ref$onHide,\n onExit = _ref.onExit,\n onExited = _ref.onExited,\n onExiting = _ref.onExiting,\n onEnter = _ref.onEnter,\n onEntering = _ref.onEntering,\n onEntered = _ref.onEntered,\n rest = _objectWithoutPropertiesLoose(_ref, [\"show\", \"role\", \"className\", \"style\", \"children\", \"backdrop\", \"keyboard\", \"onBackdropClick\", \"onEscapeKeyDown\", \"transition\", \"backdropTransition\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"renderDialog\", \"renderBackdrop\", \"manager\", \"container\", \"containerClassName\", \"onShow\", \"onHide\", \"onExit\", \"onExited\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"]);\n\n var container = useWaitForDOMRef(containerRef);\n var modal = useModalManager(providedManager);\n var isMounted = useMounted();\n var prevShow = usePrevious(show);\n\n var _useState = useState(!show),\n exited = _useState[0],\n setExited = _useState[1];\n\n var lastFocusRef = useRef(null);\n useImperativeHandle(ref, function () {\n return modal;\n }, [modal]);\n\n if (canUseDOM && !prevShow && show) {\n lastFocusRef.current = activeElement();\n }\n\n if (!transition && !show && !exited) {\n setExited(true);\n } else if (show && exited) {\n setExited(false);\n }\n\n var handleShow = useEventCallback(function () {\n modal.add(container, containerClassName);\n removeKeydownListenerRef.current = listen(document, 'keydown', handleDocumentKeyDown);\n removeFocusListenerRef.current = listen(document, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n // and so steals focus from it\n function () {\n return setTimeout(handleEnforceFocus);\n }, true);\n\n if (onShow) {\n onShow();\n } // autofocus after onShow to not trigger a focus event for previous\n // modals before this one is shown.\n\n\n if (autoFocus) {\n var currentActiveElement = activeElement(document);\n\n if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n lastFocusRef.current = currentActiveElement;\n modal.dialog.focus();\n }\n }\n });\n var handleHide = useEventCallback(function () {\n modal.remove();\n removeKeydownListenerRef.current == null ? void 0 : removeKeydownListenerRef.current();\n removeFocusListenerRef.current == null ? void 0 : removeFocusListenerRef.current();\n\n if (restoreFocus) {\n var _lastFocusRef$current;\n\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n (_lastFocusRef$current = lastFocusRef.current) == null ? void 0 : _lastFocusRef$current.focus == null ? void 0 : _lastFocusRef$current.focus(restoreFocusOptions);\n lastFocusRef.current = null;\n }\n }); // TODO: try and combine these effects: https://github.com/react-bootstrap/react-overlays/pull/794#discussion_r409954120\n // Show logic when:\n // - show is `true` _and_ `container` has resolved\n\n useEffect(function () {\n if (!show || !container) return;\n handleShow();\n }, [show, container,\n /* should never change: */\n handleShow]); // Hide cleanup logic when:\n // - `exited` switches to true\n // - component unmounts;\n\n useEffect(function () {\n if (!exited) return;\n handleHide();\n }, [exited, handleHide]);\n useWillUnmount(function () {\n handleHide();\n }); // --------------------------------\n\n var handleEnforceFocus = useEventCallback(function () {\n if (!enforceFocus || !isMounted() || !modal.isTopModal()) {\n return;\n }\n\n var currentActiveElement = activeElement();\n\n if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n modal.dialog.focus();\n }\n });\n var handleBackdropClick = useEventCallback(function (e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n onBackdropClick == null ? void 0 : onBackdropClick(e);\n\n if (backdrop === true) {\n onHide();\n }\n });\n var handleDocumentKeyDown = useEventCallback(function (e) {\n if (keyboard && e.keyCode === 27 && modal.isTopModal()) {\n onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(e);\n\n if (!e.defaultPrevented) {\n onHide();\n }\n }\n });\n var removeFocusListenerRef = useRef();\n var removeKeydownListenerRef = useRef();\n\n var handleHidden = function handleHidden() {\n setExited(true);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n onExited == null ? void 0 : onExited.apply(void 0, args);\n };\n\n var Transition = transition;\n\n if (!container || !(show || Transition && !exited)) {\n return null;\n }\n\n var dialogProps = _extends({\n role: role,\n ref: modal.setDialogRef,\n // apparently only works on the dialog role element\n 'aria-modal': role === 'dialog' ? true : undefined\n }, rest, {\n style: style,\n className: className,\n tabIndex: -1\n });\n\n var dialog = renderDialog ? renderDialog(dialogProps) : /*#__PURE__*/React.createElement(\"div\", dialogProps, /*#__PURE__*/React.cloneElement(children, {\n role: 'document'\n }));\n\n if (Transition) {\n dialog = /*#__PURE__*/React.createElement(Transition, {\n appear: true,\n unmountOnExit: true,\n \"in\": !!show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n }, dialog);\n }\n\n var backdropElement = null;\n\n if (backdrop) {\n var BackdropTransition = backdropTransition;\n backdropElement = renderBackdrop({\n ref: modal.setBackdropRef,\n onClick: handleBackdropClick\n });\n\n if (BackdropTransition) {\n backdropElement = /*#__PURE__*/React.createElement(BackdropTransition, {\n appear: true,\n \"in\": !!show\n }, backdropElement);\n }\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(React.Fragment, null, backdropElement, dialog), container));\n});\nvar propTypes = {\n /**\n * Set the visibility of the Modal\n */\n show: PropTypes.bool,\n\n /**\n * A DOM element, a `ref` to an element, or function that returns either. The Modal is appended to it's `container` element.\n *\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n * page content can be placed behind a virtual backdrop as well as a visual one.\n */\n container: PropTypes.any,\n\n /**\n * A callback fired when the Modal is opening.\n */\n onShow: PropTypes.func,\n\n /**\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n *\n * The `onHide` callback only signals intent from the Modal,\n * you must actually set the `show` prop to `false` for the Modal to close.\n */\n onHide: PropTypes.func,\n\n /**\n * Include a backdrop component.\n */\n backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['static'])]),\n\n /**\n * A function that returns the dialog component. Useful for custom\n * rendering. **Note:** the component should make sure to apply the provided ref.\n *\n * ```js static\n * renderDialog={props => <MyDialog {...props} />}\n * ```\n */\n renderDialog: PropTypes.func,\n\n /**\n * A function that returns a backdrop component. Useful for custom\n * backdrop rendering.\n *\n * ```js\n * renderBackdrop={props => <MyBackdrop {...props} />}\n * ```\n */\n renderBackdrop: PropTypes.func,\n\n /**\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n *\n * If preventDefault() is called on the keyboard event, closing the modal will be cancelled.\n */\n onEscapeKeyDown: PropTypes.func,\n\n /**\n * A callback fired when the backdrop, if specified, is clicked.\n */\n onBackdropClick: PropTypes.func,\n\n /**\n * A css class or set of classes applied to the modal container when the modal is open,\n * and removed when it is closed.\n */\n containerClassName: PropTypes.string,\n\n /**\n * Close the modal when escape key is pressed\n */\n keyboard: PropTypes.bool,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the dialog component.\n */\n transition: PropTypes.elementType,\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component used\n * to control animations for the backdrop components.\n */\n backdropTransition: PropTypes.elementType,\n\n /**\n * When `true` The modal will automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes. This also\n * works correctly with any Modal children that have the `autoFocus` prop.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * When `true` The modal will prevent focus from leaving the Modal while open.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n enforceFocus: PropTypes.bool,\n\n /**\n * When `true` The modal will restore focus to previously focused element once\n * modal is hidden\n */\n restoreFocus: PropTypes.bool,\n\n /**\n * Options passed to focus function when `restoreFocus` is set to `true`\n *\n * @link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Parameters\n */\n restoreFocusOptions: PropTypes.shape({\n preventScroll: PropTypes.bool\n }),\n\n /**\n * Callback fired before the Modal transitions in\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired as the Modal begins to transition in\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the Modal finishes transitioning in\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired right before the Modal transitions out\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired as the Modal begins to transition out\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the Modal finishes transitioning out\n */\n onExited: PropTypes.func,\n\n /**\n * A ModalManager instance used to track and manage the state of open\n * Modals. Useful when customizing how modals interact within a container\n */\n manager: PropTypes.instanceOf(ModalManager)\n};\nModal.displayName = 'Modal';\nModal.propTypes = propTypes;\nexport default Object.assign(Modal, {\n Manager: ModalManager\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport css from 'dom-helpers/css';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport ModalManager from 'react-overlays/ModalManager';\nvar Selector = {\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top',\n NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nvar BootstrapModalManager = /*#__PURE__*/function (_ModalManager) {\n _inheritsLoose(BootstrapModalManager, _ModalManager);\n\n function BootstrapModalManager() {\n return _ModalManager.apply(this, arguments) || this;\n }\n\n var _proto = BootstrapModalManager.prototype;\n\n _proto.adjustAndStore = function adjustAndStore(prop, element, adjust) {\n var _css;\n\n var actual = element.style[prop]; // TODO: DOMStringMap and CSSStyleDeclaration aren't strictly compatible\n // @ts-ignore\n\n element.dataset[prop] = actual;\n css(element, (_css = {}, _css[prop] = parseFloat(css(element, prop)) + adjust + \"px\", _css));\n };\n\n _proto.restore = function restore(prop, element) {\n var value = element.dataset[prop];\n\n if (value !== undefined) {\n var _css2;\n\n delete element.dataset[prop];\n css(element, (_css2 = {}, _css2[prop] = value, _css2));\n }\n };\n\n _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n var _this = this;\n\n _ModalManager.prototype.setContainerStyle.call(this, containerState, container);\n\n if (!containerState.overflowing) return;\n var size = getScrollbarSize();\n qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n return _this.adjustAndStore('paddingRight', el, size);\n });\n qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n return _this.adjustAndStore('marginRight', el, -size);\n });\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n return _this.adjustAndStore('marginRight', el, size);\n });\n };\n\n _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n var _this2 = this;\n\n _ModalManager.prototype.removeContainerStyle.call(this, containerState, container);\n\n qsa(container, Selector.FIXED_CONTENT).forEach(function (el) {\n return _this2.restore('paddingRight', el);\n });\n qsa(container, Selector.STICKY_CONTENT).forEach(function (el) {\n return _this2.restore('marginRight', el);\n });\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n return _this2.restore('marginRight', el);\n });\n };\n\n return BootstrapModalManager;\n}(ModalManager);\n\nexport { BootstrapModalManager as default };","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-body');","import React from 'react';\nvar ModalContext = /*#__PURE__*/React.createContext({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onHide: function onHide() {}\n});\nexport default ModalContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"contentClassName\", \"centered\", \"size\", \"children\", \"scrollable\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar ModalDialog = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n contentClassName = _ref.contentClassName,\n centered = _ref.centered,\n size = _ref.size,\n children = _ref.children,\n scrollable = _ref.scrollable,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n var dialogClass = bsPrefix + \"-dialog\";\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n ref: ref,\n className: classNames(dialogClass, className, size && bsPrefix + \"-\" + size, centered && dialogClass + \"-centered\", scrollable && dialogClass + \"-scrollable\")\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(bsPrefix + \"-content\", contentClassName)\n }, children));\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-footer');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"label\", \"onClick\", \"className\"];\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nvar propTypes = {\n label: PropTypes.string.isRequired,\n onClick: PropTypes.func\n};\nvar defaultProps = {\n label: 'Close'\n};\nvar CloseButton = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var label = _ref.label,\n onClick = _ref.onClick,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"button\", _extends({\n ref: ref,\n type: \"button\",\n className: classNames('close', className),\n onClick: onClick\n }, props), /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\"\n }, \"\\xD7\"), /*#__PURE__*/React.createElement(\"span\", {\n className: \"sr-only\"\n }, label));\n});\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nCloseButton.defaultProps = defaultProps;\nexport default CloseButton;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"closeLabel\", \"closeButton\", \"onHide\", \"className\", \"children\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nvar defaultProps = {\n closeLabel: 'Close',\n closeButton: false\n};\nvar ModalHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n closeLabel = _ref.closeLabel,\n closeButton = _ref.closeButton,\n onHide = _ref.onHide,\n className = _ref.className,\n children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n var context = useContext(ModalContext);\n var handleClick = useEventCallback(function () {\n if (context) context.onHide();\n if (onHide) onHide();\n });\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref\n }, props, {\n className: classNames(className, bsPrefix)\n }), children, closeButton && /*#__PURE__*/React.createElement(CloseButton, {\n label: closeLabel,\n onClick: handleClick\n }));\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _excluded = [\"bsPrefix\", \"className\", \"style\", \"dialogClassName\", \"contentClassName\", \"children\", \"dialogAs\", \"aria-labelledby\", \"aria-describedby\", \"aria-label\", \"show\", \"animation\", \"backdrop\", \"keyboard\", \"onEscapeKeyDown\", \"onShow\", \"onHide\", \"container\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"onEntered\", \"onExit\", \"onExiting\", \"onEnter\", \"onEntering\", \"onExited\", \"backdropClassName\", \"manager\"];\nimport classNames from 'classnames';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport removeEventListener from 'dom-helpers/removeEventListener';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport React, { useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport BaseModal from 'react-overlays/Modal';\nimport warning from 'warning';\nimport BootstrapModalManager from './BootstrapModalManager';\nimport Fade from './Fade';\nimport ModalBody from './ModalBody';\nimport ModalContext from './ModalContext';\nimport ModalDialog from './ModalDialog';\nimport ModalFooter from './ModalFooter';\nimport ModalHeader from './ModalHeader';\nimport ModalTitle from './ModalTitle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar manager;\nvar defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n animation: true,\n dialogAs: ModalDialog\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n return /*#__PURE__*/React.createElement(Fade, _extends({}, props, {\n timeout: null\n }));\n}\n\nfunction BackdropTransition(props) {\n return /*#__PURE__*/React.createElement(Fade, _extends({}, props, {\n timeout: null\n }));\n}\n/* eslint-enable no-use-before-define */\n\n\nvar Modal = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n style = _ref.style,\n dialogClassName = _ref.dialogClassName,\n contentClassName = _ref.contentClassName,\n children = _ref.children,\n Dialog = _ref.dialogAs,\n ariaLabelledby = _ref['aria-labelledby'],\n ariaDescribedby = _ref['aria-describedby'],\n ariaLabel = _ref['aria-label'],\n show = _ref.show,\n animation = _ref.animation,\n backdrop = _ref.backdrop,\n keyboard = _ref.keyboard,\n onEscapeKeyDown = _ref.onEscapeKeyDown,\n onShow = _ref.onShow,\n onHide = _ref.onHide,\n container = _ref.container,\n autoFocus = _ref.autoFocus,\n enforceFocus = _ref.enforceFocus,\n restoreFocus = _ref.restoreFocus,\n restoreFocusOptions = _ref.restoreFocusOptions,\n onEntered = _ref.onEntered,\n onExit = _ref.onExit,\n onExiting = _ref.onExiting,\n onEnter = _ref.onEnter,\n onEntering = _ref.onEntering,\n onExited = _ref.onExited,\n backdropClassName = _ref.backdropClassName,\n propsManager = _ref.manager,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var _useState = useState({}),\n modalStyle = _useState[0],\n setStyle = _useState[1];\n\n var _useState2 = useState(false),\n animateStaticModal = _useState2[0],\n setAnimateStaticModal = _useState2[1];\n\n var waitingForMouseUpRef = useRef(false);\n var ignoreBackdropClickRef = useRef(false);\n var removeStaticModalAnimationRef = useRef(null); // TODO: what's this type\n\n var _useCallbackRef = useCallbackRef(),\n modal = _useCallbackRef[0],\n setModalRef = _useCallbackRef[1];\n\n var handleHide = useEventCallback(onHide);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n useImperativeHandle(ref, function () {\n return {\n get _modal() {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Accessing `_modal` is not supported and will be removed in a future release') : void 0;\n return modal;\n }\n\n };\n }, [modal]);\n var modalContext = useMemo(function () {\n return {\n onHide: handleHide\n };\n }, [handleHide]);\n\n function getModalManager() {\n if (propsManager) return propsManager;\n if (!manager) manager = new BootstrapModalManager();\n return manager;\n }\n\n function updateDialogStyle(node) {\n if (!canUseDOM) return;\n var containerIsOverflowing = getModalManager().isContainerOverflowing(modal);\n var modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n setStyle({\n paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n });\n }\n\n var handleWindowResize = useEventCallback(function () {\n if (modal) {\n updateDialogStyle(modal.dialog);\n }\n });\n useWillUnmount(function () {\n removeEventListener(window, 'resize', handleWindowResize);\n\n if (removeStaticModalAnimationRef.current) {\n removeStaticModalAnimationRef.current();\n }\n }); // We prevent the modal from closing during a drag by detecting where the\n // the click originates from. If it starts in the modal and then ends outside\n // don't close.\n\n var handleDialogMouseDown = function handleDialogMouseDown() {\n waitingForMouseUpRef.current = true;\n };\n\n var handleMouseUp = function handleMouseUp(e) {\n if (waitingForMouseUpRef.current && modal && e.target === modal.dialog) {\n ignoreBackdropClickRef.current = true;\n }\n\n waitingForMouseUpRef.current = false;\n };\n\n var handleStaticModalAnimation = function handleStaticModalAnimation() {\n setAnimateStaticModal(true);\n removeStaticModalAnimationRef.current = transitionEnd(modal.dialog, function () {\n setAnimateStaticModal(false);\n });\n };\n\n var handleStaticBackdropClick = function handleStaticBackdropClick(e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n handleStaticModalAnimation();\n };\n\n var handleClick = function handleClick(e) {\n if (backdrop === 'static') {\n handleStaticBackdropClick(e);\n return;\n }\n\n if (ignoreBackdropClickRef.current || e.target !== e.currentTarget) {\n ignoreBackdropClickRef.current = false;\n return;\n }\n\n onHide == null ? void 0 : onHide();\n };\n\n var handleEscapeKeyDown = function handleEscapeKeyDown(e) {\n if (!keyboard && backdrop === 'static') {\n // Call preventDefault to stop modal from closing in react-overlays,\n // then play our animation.\n e.preventDefault();\n handleStaticModalAnimation();\n } else if (keyboard && onEscapeKeyDown) {\n onEscapeKeyDown(e);\n }\n };\n\n var handleEnter = function handleEnter(node, isAppearing) {\n if (node) {\n node.style.display = 'block';\n updateDialogStyle(node);\n }\n\n onEnter == null ? void 0 : onEnter(node, isAppearing);\n };\n\n var handleExit = function handleExit(node) {\n removeStaticModalAnimationRef.current == null ? void 0 : removeStaticModalAnimationRef.current();\n onExit == null ? void 0 : onExit(node);\n };\n\n var handleEntering = function handleEntering(node, isAppearing) {\n onEntering == null ? void 0 : onEntering(node, isAppearing); // FIXME: This should work even when animation is disabled.\n\n addEventListener(window, 'resize', handleWindowResize);\n };\n\n var handleExited = function handleExited(node) {\n if (node) node.style.display = ''; // RHL removes it sometimes\n\n onExited == null ? void 0 : onExited(node); // FIXME: This should work even when animation is disabled.\n\n removeEventListener(window, 'resize', handleWindowResize);\n };\n\n var renderBackdrop = useCallback(function (backdropProps) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, backdropProps, {\n className: classNames(bsPrefix + \"-backdrop\", backdropClassName, !animation && 'show')\n }));\n }, [animation, backdropClassName, bsPrefix]);\n\n var baseModalStyle = _extends({}, style, modalStyle); // Sets `display` always block when `animation` is false\n\n\n if (!animation) {\n baseModalStyle.display = 'block';\n }\n\n var renderDialog = function renderDialog(dialogProps) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n role: \"dialog\"\n }, dialogProps, {\n style: baseModalStyle,\n className: classNames(className, bsPrefix, animateStaticModal && bsPrefix + \"-static\"),\n onClick: backdrop ? handleClick : undefined,\n onMouseUp: handleMouseUp,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-describedby\": ariaDescribedby\n }), /*#__PURE__*/React.createElement(Dialog, _extends({}, props, {\n onMouseDown: handleDialogMouseDown,\n className: dialogClassName,\n contentClassName: contentClassName\n }), children));\n };\n\n return /*#__PURE__*/React.createElement(ModalContext.Provider, {\n value: modalContext\n }, /*#__PURE__*/React.createElement(BaseModal, {\n show: show,\n ref: setModalRef,\n backdrop: backdrop,\n container: container,\n keyboard: true // Always set true - see handleEscapeKeyDown\n ,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus,\n restoreFocus: restoreFocus,\n restoreFocusOptions: restoreFocusOptions,\n onEscapeKeyDown: handleEscapeKeyDown,\n onShow: onShow,\n onHide: onHide,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: onEntered,\n onExit: handleExit,\n onExiting: onExiting,\n onExited: handleExited,\n manager: getModalManager(),\n containerClassName: bsPrefix + \"-open\",\n transition: animation ? DialogTransition : undefined,\n backdropTransition: animation ? BackdropTransition : undefined,\n renderBackdrop: renderBackdrop,\n renderDialog: renderDialog\n }));\n});\nModal.displayName = 'Modal';\nModal.defaultProps = defaultProps;\nModal.Body = ModalBody;\nModal.Header = ModalHeader;\nModal.Title = ModalTitle;\nModal.Footer = ModalFooter;\nModal.Dialog = ModalDialog;\nModal.TRANSITION_DURATION = 300;\nModal.BACKDROP_TRANSITION_DURATION = 150;\nexport default Modal;","import createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nvar DivStyledAsH4 = divWithClassName('h4');\nexport default createWithBsPrefix('modal-title', {\n Component: DivStyledAsH4\n});","var isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nexport default deepmerge_1;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import arrayMap from './_arrayMap.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\nimport stringToPath from './_stringToPath.js';\nimport toKey from './_toKey.js';\nimport toString from './toString.js';\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nexport default toPath;\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\nimport * as React from 'react';\n\n// Assertions\n\n/** @private is the value an empty array? */\nexport const isEmptyArray = (value?: any) =>\n Array.isArray(value) && value.length === 0;\n\n/** @private is the given object a Function? */\nexport const isFunction = (obj: any): obj is Function =>\n typeof obj === 'function';\n\n/** @private is the given object an Object? */\nexport const isObject = (obj: any): obj is Object =>\n obj !== null && typeof obj === 'object';\n\n/** @private is the given object an integer? */\nexport const isInteger = (obj: any): boolean =>\n String(Math.floor(Number(obj))) === obj;\n\n/** @private is the given object a string? */\nexport const isString = (obj: any): obj is string =>\n Object.prototype.toString.call(obj) === '[object String]';\n\n/** @private is the given object a NaN? */\n// eslint-disable-next-line no-self-compare\nexport const isNaN = (obj: any): boolean => obj !== obj;\n\n/** @private Does a React component have exactly 0 children? */\nexport const isEmptyChildren = (children: any): boolean =>\n React.Children.count(children) === 0;\n\n/** @private is the given object/value a promise? */\nexport const isPromise = (value: any): value is PromiseLike<any> =>\n isObject(value) && isFunction(value.then);\n\n/** @private is the given object/value a type of synthetic event? */\nexport const isInputEvent = (value: any): value is React.SyntheticEvent<any> =>\n value && isObject(value) && isObject(value.target);\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?Document} doc Defaults to current document.\n * @return {Element | null}\n * @see https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/dom/getActiveElement.js\n */\nexport function getActiveElement(doc?: Document): Element | null {\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(\n obj: any,\n key: string | string[],\n def?: any,\n p: number = 0\n) {\n const path = toPath(key);\n while (obj && p < path.length) {\n obj = obj[path[p++]];\n }\n return obj === undefined ? def : obj;\n}\n\n/**\n * Deeply set a value from in object via it's path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n let res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n let pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n let currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] =\n isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n\n/**\n * Recursively a set the same value for all keys and arrays nested object, cloning\n * @param object\n * @param value\n * @param visited\n * @param response\n */\nexport function setNestedObjectValues<T>(\n object: any,\n value: any,\n visited: any = new WeakMap(),\n response: any = {}\n): T {\n for (let k of Object.keys(object)) {\n const val = object[k];\n if (isObject(val)) {\n if (!visited.get(val)) {\n visited.set(val, true);\n // In order to keep array values consistent for both dot path and\n // bracket syntax, we need to check if this is an array so that\n // this will output { friends: [true] } and not { friends: { \"0\": true } }\n response[k] = Array.isArray(val) ? [] : {};\n setNestedObjectValues(val, value, visited, response[k]);\n }\n } else {\n response[k] = value;\n }\n }\n\n return response;\n}\n","import * as React from 'react';\nimport { FormikContextType } from './types';\nimport invariant from 'tiny-warning';\n\nexport const FormikContext = React.createContext<FormikContextType<any>>(\n undefined as any\n);\nFormikContext.displayName = 'FormikContext';\n\nexport const FormikProvider = FormikContext.Provider;\nexport const FormikConsumer = FormikContext.Consumer;\n\nexport function useFormikContext<Values>() {\n const formik = React.useContext<FormikContextType<Values>>(FormikContext);\n\n invariant(\n !!formik,\n `Formik context is undefined, please verify you are calling useFormikContext() as child of a <Formik> component.`\n );\n\n return formik;\n}\n","import * as React from 'react';\nimport isEqual from 'react-fast-compare';\nimport deepmerge from 'deepmerge';\nimport isPlainObject from 'lodash/isPlainObject';\nimport {\n FormikConfig,\n FormikErrors,\n FormikState,\n FormikTouched,\n FormikValues,\n FormikProps,\n FieldMetaProps,\n FieldHelperProps,\n FieldInputProps,\n FormikHelpers,\n FormikHandlers,\n} from './types';\nimport {\n isFunction,\n isString,\n setIn,\n isEmptyChildren,\n isPromise,\n setNestedObjectValues,\n getActiveElement,\n getIn,\n isObject,\n} from './utils';\nimport { FormikProvider } from './FormikContext';\nimport invariant from 'tiny-warning';\n\ntype FormikMessage<Values> =\n | { type: 'SUBMIT_ATTEMPT' }\n | { type: 'SUBMIT_FAILURE' }\n | { type: 'SUBMIT_SUCCESS' }\n | { type: 'SET_ISVALIDATING'; payload: boolean }\n | { type: 'SET_ISSUBMITTING'; payload: boolean }\n | { type: 'SET_VALUES'; payload: Values }\n | { type: 'SET_FIELD_VALUE'; payload: { field: string; value?: any } }\n | { type: 'SET_FIELD_TOUCHED'; payload: { field: string; value?: boolean } }\n | { type: 'SET_FIELD_ERROR'; payload: { field: string; value?: string } }\n | { type: 'SET_TOUCHED'; payload: FormikTouched<Values> }\n | { type: 'SET_ERRORS'; payload: FormikErrors<Values> }\n | { type: 'SET_STATUS'; payload: any }\n | {\n type: 'SET_FORMIK_STATE';\n payload: (s: FormikState<Values>) => FormikState<Values>;\n }\n | {\n type: 'RESET_FORM';\n payload: FormikState<Values>;\n };\n\n// State reducer\nfunction formikReducer<Values>(\n state: FormikState<Values>,\n msg: FormikMessage<Values>\n) {\n switch (msg.type) {\n case 'SET_VALUES':\n return { ...state, values: msg.payload };\n case 'SET_TOUCHED':\n return { ...state, touched: msg.payload };\n case 'SET_ERRORS':\n if (isEqual(state.errors, msg.payload)) {\n return state;\n }\n\n return { ...state, errors: msg.payload };\n case 'SET_STATUS':\n return { ...state, status: msg.payload };\n case 'SET_ISSUBMITTING':\n return { ...state, isSubmitting: msg.payload };\n case 'SET_ISVALIDATING':\n return { ...state, isValidating: msg.payload };\n case 'SET_FIELD_VALUE':\n return {\n ...state,\n values: setIn(state.values, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_TOUCHED':\n return {\n ...state,\n touched: setIn(state.touched, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_ERROR':\n return {\n ...state,\n errors: setIn(state.errors, msg.payload.field, msg.payload.value),\n };\n case 'RESET_FORM':\n return { ...state, ...msg.payload };\n case 'SET_FORMIK_STATE':\n return msg.payload(state);\n case 'SUBMIT_ATTEMPT':\n return {\n ...state,\n touched: setNestedObjectValues<FormikTouched<Values>>(\n state.values,\n true\n ),\n isSubmitting: true,\n submitCount: state.submitCount + 1,\n };\n case 'SUBMIT_FAILURE':\n return {\n ...state,\n isSubmitting: false,\n };\n case 'SUBMIT_SUCCESS':\n return {\n ...state,\n isSubmitting: false,\n };\n default:\n return state;\n }\n}\n\n// Initial empty states // objects\nconst emptyErrors: FormikErrors<unknown> = {};\nconst emptyTouched: FormikTouched<unknown> = {};\n\n// This is an object that contains a map of all registered fields\n// and their validate functions\ninterface FieldRegistry {\n [field: string]: {\n validate: (value: any) => string | Promise<string> | undefined;\n };\n}\n\nexport function useFormik<Values extends FormikValues = FormikValues>({\n validateOnChange = true,\n validateOnBlur = true,\n validateOnMount = false,\n isInitialValid,\n enableReinitialize = false,\n onSubmit,\n ...rest\n}: FormikConfig<Values>) {\n const props = {\n validateOnChange,\n validateOnBlur,\n validateOnMount,\n onSubmit,\n ...rest,\n };\n const initialValues = React.useRef(props.initialValues);\n const initialErrors = React.useRef(props.initialErrors || emptyErrors);\n const initialTouched = React.useRef(props.initialTouched || emptyTouched);\n const initialStatus = React.useRef(props.initialStatus);\n const isMounted = React.useRef<boolean>(false);\n const fieldRegistry = React.useRef<FieldRegistry>({});\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n typeof isInitialValid === 'undefined',\n 'isInitialValid has been deprecated and will be removed in future versions of Formik. Please use initialErrors or validateOnMount instead.'\n );\n // eslint-disable-next-line\n }, []);\n }\n\n React.useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n const [state, dispatch] = React.useReducer<\n React.Reducer<FormikState<Values>, FormikMessage<Values>>\n >(formikReducer, {\n values: props.initialValues,\n errors: props.initialErrors || emptyErrors,\n touched: props.initialTouched || emptyTouched,\n status: props.initialStatus,\n isSubmitting: false,\n isValidating: false,\n submitCount: 0,\n });\n\n const runValidateHandler = React.useCallback(\n (values: Values, field?: string): Promise<FormikErrors<Values>> => {\n return new Promise((resolve, reject) => {\n const maybePromisedErrors = (props.validate as any)(values, field);\n if (maybePromisedErrors == null) {\n // use loose null check here on purpose\n resolve(emptyErrors);\n } else if (isPromise(maybePromisedErrors)) {\n (maybePromisedErrors as Promise<any>).then(\n errors => {\n resolve(errors || emptyErrors);\n },\n actualException => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in <Formik validate />`,\n actualException\n );\n }\n\n reject(actualException);\n }\n );\n } else {\n resolve(maybePromisedErrors);\n }\n });\n },\n [props.validate]\n );\n\n /**\n * Run validation against a Yup schema and optionally run a function if successful\n */\n const runValidationSchema = React.useCallback(\n (values: Values, field?: string): Promise<FormikErrors<Values>> => {\n const validationSchema = props.validationSchema;\n const schema = isFunction(validationSchema)\n ? validationSchema(field)\n : validationSchema;\n const promise =\n field && schema.validateAt\n ? schema.validateAt(field, values)\n : validateYupSchema(values, schema);\n return new Promise((resolve, reject) => {\n promise.then(\n () => {\n resolve(emptyErrors);\n },\n (err: any) => {\n // Yup will throw a validation error if validation fails. We catch those and\n // resolve them into Formik errors. We can sniff if something is a Yup error\n // by checking error.name.\n // @see https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n if (err.name === 'ValidationError') {\n resolve(yupToFormErrors(err));\n } else {\n // We throw any other errors\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in <Formik validationSchema />`,\n err\n );\n }\n\n reject(err);\n }\n }\n );\n });\n },\n [props.validationSchema]\n );\n\n const runSingleFieldLevelValidation = React.useCallback(\n (field: string, value: void | string): Promise<string> => {\n return new Promise(resolve =>\n resolve(fieldRegistry.current[field].validate(value) as string)\n );\n },\n []\n );\n\n const runFieldLevelValidations = React.useCallback(\n (values: Values): Promise<FormikErrors<Values>> => {\n const fieldKeysWithValidation: string[] = Object.keys(\n fieldRegistry.current\n ).filter(f => isFunction(fieldRegistry.current[f].validate));\n\n // Construct an array with all of the field validation functions\n const fieldValidations: Promise<string>[] =\n fieldKeysWithValidation.length > 0\n ? fieldKeysWithValidation.map(f =>\n runSingleFieldLevelValidation(f, getIn(values, f))\n )\n : [Promise.resolve('DO_NOT_DELETE_YOU_WILL_BE_FIRED')]; // use special case ;)\n\n return Promise.all(fieldValidations).then((fieldErrorsList: string[]) =>\n fieldErrorsList.reduce((prev, curr, index) => {\n if (curr === 'DO_NOT_DELETE_YOU_WILL_BE_FIRED') {\n return prev;\n }\n if (curr) {\n prev = setIn(prev, fieldKeysWithValidation[index], curr);\n }\n return prev;\n }, {})\n );\n },\n [runSingleFieldLevelValidation]\n );\n\n // Run all validations and return the result\n const runAllValidations = React.useCallback(\n (values: Values) => {\n return Promise.all([\n runFieldLevelValidations(values),\n props.validationSchema ? runValidationSchema(values) : {},\n props.validate ? runValidateHandler(values) : {},\n ]).then(([fieldErrors, schemaErrors, validateErrors]) => {\n const combinedErrors = deepmerge.all<FormikErrors<Values>>(\n [fieldErrors, schemaErrors, validateErrors],\n { arrayMerge }\n );\n return combinedErrors;\n });\n },\n [\n props.validate,\n props.validationSchema,\n runFieldLevelValidations,\n runValidateHandler,\n runValidationSchema,\n ]\n );\n\n // Run all validations methods and update state accordingly\n const validateFormWithHighPriority = useEventCallback(\n (values: Values = state.values) => {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runAllValidations(values).then(combinedErrors => {\n if (!!isMounted.current) {\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n dispatch({ type: 'SET_ERRORS', payload: combinedErrors });\n }\n return combinedErrors;\n });\n }\n );\n\n React.useEffect(() => {\n if (\n validateOnMount &&\n isMounted.current === true &&\n isEqual(initialValues.current, props.initialValues)\n ) {\n validateFormWithHighPriority(initialValues.current);\n }\n }, [validateOnMount, validateFormWithHighPriority]);\n\n const resetForm = React.useCallback(\n (nextState?: Partial<FormikState<Values>>) => {\n const values =\n nextState && nextState.values\n ? nextState.values\n : initialValues.current;\n const errors =\n nextState && nextState.errors\n ? nextState.errors\n : initialErrors.current\n ? initialErrors.current\n : props.initialErrors || {};\n const touched =\n nextState && nextState.touched\n ? nextState.touched\n : initialTouched.current\n ? initialTouched.current\n : props.initialTouched || {};\n const status =\n nextState && nextState.status\n ? nextState.status\n : initialStatus.current\n ? initialStatus.current\n : props.initialStatus;\n initialValues.current = values;\n initialErrors.current = errors;\n initialTouched.current = touched;\n initialStatus.current = status;\n\n const dispatchFn = () => {\n dispatch({\n type: 'RESET_FORM',\n payload: {\n isSubmitting: !!nextState && !!nextState.isSubmitting,\n errors,\n touched,\n status,\n values,\n isValidating: !!nextState && !!nextState.isValidating,\n submitCount:\n !!nextState &&\n !!nextState.submitCount &&\n typeof nextState.submitCount === 'number'\n ? nextState.submitCount\n : 0,\n },\n });\n };\n\n if (props.onReset) {\n const maybePromisedOnReset = (props.onReset as any)(\n state.values,\n imperativeMethods\n );\n\n if (isPromise(maybePromisedOnReset)) {\n (maybePromisedOnReset as Promise<any>).then(dispatchFn);\n } else {\n dispatchFn();\n }\n } else {\n dispatchFn();\n }\n },\n [props.initialErrors, props.initialStatus, props.initialTouched]\n );\n\n React.useEffect(() => {\n if (\n isMounted.current === true &&\n !isEqual(initialValues.current, props.initialValues)\n ) {\n if (enableReinitialize) {\n initialValues.current = props.initialValues;\n resetForm();\n }\n\n if (validateOnMount) {\n validateFormWithHighPriority(initialValues.current);\n }\n }\n }, [\n enableReinitialize,\n props.initialValues,\n resetForm,\n validateOnMount,\n validateFormWithHighPriority,\n ]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialErrors.current, props.initialErrors)\n ) {\n initialErrors.current = props.initialErrors || emptyErrors;\n dispatch({\n type: 'SET_ERRORS',\n payload: props.initialErrors || emptyErrors,\n });\n }\n }, [enableReinitialize, props.initialErrors]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialTouched.current, props.initialTouched)\n ) {\n initialTouched.current = props.initialTouched || emptyTouched;\n dispatch({\n type: 'SET_TOUCHED',\n payload: props.initialTouched || emptyTouched,\n });\n }\n }, [enableReinitialize, props.initialTouched]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialStatus.current, props.initialStatus)\n ) {\n initialStatus.current = props.initialStatus;\n dispatch({\n type: 'SET_STATUS',\n payload: props.initialStatus,\n });\n }\n }, [enableReinitialize, props.initialStatus, props.initialTouched]);\n\n const validateField = useEventCallback((name: string) => {\n // This will efficiently validate a single field by avoiding state\n // changes if the validation function is synchronous. It's different from\n // what is called when using validateForm.\n\n if (\n fieldRegistry.current[name] &&\n isFunction(fieldRegistry.current[name].validate)\n ) {\n const value = getIn(state.values, name);\n const maybePromise = fieldRegistry.current[name].validate(value);\n if (isPromise(maybePromise)) {\n // Only flip isValidating if the function is async.\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return maybePromise\n .then((x: any) => x)\n .then((error: string) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: error },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n } else {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: {\n field: name,\n value: maybePromise as string | undefined,\n },\n });\n return Promise.resolve(maybePromise as string | undefined);\n }\n } else if (props.validationSchema) {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runValidationSchema(state.values, name)\n .then((x: any) => x)\n .then((error: any) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: error[name] },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n }\n\n return Promise.resolve();\n });\n\n const registerField = React.useCallback((name: string, { validate }: any) => {\n fieldRegistry.current[name] = {\n validate,\n };\n }, []);\n\n const unregisterField = React.useCallback((name: string) => {\n delete fieldRegistry.current[name];\n }, []);\n\n const setTouched = useEventCallback(\n (touched: FormikTouched<Values>, shouldValidate?: boolean) => {\n dispatch({ type: 'SET_TOUCHED', payload: touched });\n const willValidate =\n shouldValidate === undefined ? validateOnBlur : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(state.values)\n : Promise.resolve();\n }\n );\n\n const setErrors = React.useCallback((errors: FormikErrors<Values>) => {\n dispatch({ type: 'SET_ERRORS', payload: errors });\n }, []);\n\n const setValues = useEventCallback(\n (values: React.SetStateAction<Values>, shouldValidate?: boolean) => {\n const resolvedValues = isFunction(values) ? values(state.values) : values;\n\n dispatch({ type: 'SET_VALUES', payload: resolvedValues });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(resolvedValues)\n : Promise.resolve();\n }\n );\n\n const setFieldError = React.useCallback(\n (field: string, value: string | undefined) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field, value },\n });\n },\n []\n );\n\n const setFieldValue = useEventCallback(\n (field: string, value: any, shouldValidate?: boolean) => {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field,\n value,\n },\n });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(setIn(state.values, field, value))\n : Promise.resolve();\n }\n );\n\n const executeChange = React.useCallback(\n (eventOrTextValue: string | React.ChangeEvent<any>, maybePath?: string) => {\n // By default, assume that the first argument is a string. This allows us to use\n // handleChange with React Native and React Native Web's onChangeText prop which\n // provides just the value of the input.\n let field = maybePath;\n let val = eventOrTextValue;\n let parsed;\n // If the first argument is not a string though, it has to be a synthetic React Event (or a fake one),\n // so we handle like we would a normal HTML change event.\n if (!isString(eventOrTextValue)) {\n // If we can, persist the event\n // @see https://reactjs.org/docs/events.html#event-pooling\n if ((eventOrTextValue as any).persist) {\n (eventOrTextValue as React.ChangeEvent<any>).persist();\n }\n const target = eventOrTextValue.target\n ? (eventOrTextValue as React.ChangeEvent<any>).target\n : (eventOrTextValue as React.ChangeEvent<any>).currentTarget;\n\n const {\n type,\n name,\n id,\n value,\n checked,\n outerHTML,\n options,\n multiple,\n } = target;\n\n field = maybePath ? maybePath : name ? name : id;\n if (!field && __DEV__) {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handlechange-e-reactchangeeventany--void',\n handlerName: 'handleChange',\n });\n }\n val = /number|range/.test(type)\n ? ((parsed = parseFloat(value)), isNaN(parsed) ? '' : parsed)\n : /checkbox/.test(type) // checkboxes\n ? getValueForCheckbox(getIn(state.values, field!), checked, value)\n : options && multiple // <select multiple>\n ? getSelectedValues(options)\n : value;\n }\n\n if (field) {\n // Set form fields by name\n setFieldValue(field, val);\n }\n },\n [setFieldValue, state.values]\n );\n\n const handleChange = useEventCallback<FormikHandlers['handleChange']>(\n (\n eventOrPath: string | React.ChangeEvent<any>\n ): void | ((eventOrTextValue: string | React.ChangeEvent<any>) => void) => {\n if (isString(eventOrPath)) {\n return event => executeChange(event, eventOrPath);\n } else {\n executeChange(eventOrPath);\n }\n }\n );\n\n const setFieldTouched = useEventCallback(\n (field: string, touched: boolean = true, shouldValidate?: boolean) => {\n dispatch({\n type: 'SET_FIELD_TOUCHED',\n payload: {\n field,\n value: touched,\n },\n });\n const willValidate =\n shouldValidate === undefined ? validateOnBlur : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(state.values)\n : Promise.resolve();\n }\n );\n\n const executeBlur = React.useCallback(\n (e: any, path?: string) => {\n if (e.persist) {\n e.persist();\n }\n const { name, id, outerHTML } = e.target;\n const field = path ? path : name ? name : id;\n\n if (!field && __DEV__) {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handleblur-e-any--void',\n handlerName: 'handleBlur',\n });\n }\n\n setFieldTouched(field, true);\n },\n [setFieldTouched]\n );\n\n const handleBlur = useEventCallback<FormikHandlers['handleBlur']>(\n (eventOrString: any): void | ((e: any) => void) => {\n if (isString(eventOrString)) {\n return event => executeBlur(event, eventOrString);\n } else {\n executeBlur(eventOrString);\n }\n }\n );\n\n const setFormikState = React.useCallback(\n (\n stateOrCb:\n | FormikState<Values>\n | ((state: FormikState<Values>) => FormikState<Values>)\n ): void => {\n if (isFunction(stateOrCb)) {\n dispatch({ type: 'SET_FORMIK_STATE', payload: stateOrCb });\n } else {\n dispatch({ type: 'SET_FORMIK_STATE', payload: () => stateOrCb });\n }\n },\n []\n );\n\n const setStatus = React.useCallback((status: any) => {\n dispatch({ type: 'SET_STATUS', payload: status });\n }, []);\n\n const setSubmitting = React.useCallback((isSubmitting: boolean) => {\n dispatch({ type: 'SET_ISSUBMITTING', payload: isSubmitting });\n }, []);\n\n const submitForm = useEventCallback(() => {\n dispatch({ type: 'SUBMIT_ATTEMPT' });\n return validateFormWithHighPriority().then(\n (combinedErrors: FormikErrors<Values>) => {\n // In case an error was thrown and passed to the resolved Promise,\n // `combinedErrors` can be an instance of an Error. We need to check\n // that and abort the submit.\n // If we don't do that, calling `Object.keys(new Error())` yields an\n // empty array, which causes the validation to pass and the form\n // to be submitted.\n\n const isInstanceOfError = combinedErrors instanceof Error;\n const isActuallyValid =\n !isInstanceOfError && Object.keys(combinedErrors).length === 0;\n if (isActuallyValid) {\n // Proceed with submit...\n //\n // To respect sync submit fns, we can't simply wrap executeSubmit in a promise and\n // _always_ dispatch SUBMIT_SUCCESS because isSubmitting would then always be false.\n // This would be fine in simple cases, but make it impossible to disable submit\n // buttons where people use callbacks or promises as side effects (which is basically\n // all of v1 Formik code). Instead, recall that we are inside of a promise chain already,\n // so we can try/catch executeSubmit(), if it returns undefined, then just bail.\n // If there are errors, throw em. Otherwise, wrap executeSubmit in a promise and handle\n // cleanup of isSubmitting on behalf of the consumer.\n let promiseOrUndefined;\n try {\n promiseOrUndefined = executeSubmit();\n // Bail if it's sync, consumer is responsible for cleaning up\n // via setSubmitting(false)\n if (promiseOrUndefined === undefined) {\n return;\n }\n } catch (error) {\n throw error;\n }\n\n return Promise.resolve(promiseOrUndefined)\n .then(result => {\n if (!!isMounted.current) {\n dispatch({ type: 'SUBMIT_SUCCESS' });\n }\n return result;\n })\n .catch(_errors => {\n if (!!isMounted.current) {\n dispatch({ type: 'SUBMIT_FAILURE' });\n // This is a legit error rejected by the onSubmit fn\n // so we don't want to break the promise chain\n throw _errors;\n }\n });\n } else if (!!isMounted.current) {\n // ^^^ Make sure Formik is still mounted before updating state\n dispatch({ type: 'SUBMIT_FAILURE' });\n // throw combinedErrors;\n if (isInstanceOfError) {\n throw combinedErrors;\n }\n }\n return;\n }\n );\n });\n\n const handleSubmit = useEventCallback(\n (e?: React.FormEvent<HTMLFormElement>) => {\n if (e && e.preventDefault && isFunction(e.preventDefault)) {\n e.preventDefault();\n }\n\n if (e && e.stopPropagation && isFunction(e.stopPropagation)) {\n e.stopPropagation();\n }\n\n // Warn if form submission is triggered by a <button> without a\n // specified `type` attribute during development. This mitigates\n // a common gotcha in forms with both reset and submit buttons,\n // where the dev forgets to add type=\"button\" to the reset button.\n if (__DEV__ && typeof document !== 'undefined') {\n // Safely get the active element (works with IE)\n const activeElement = getActiveElement();\n if (\n activeElement !== null &&\n activeElement instanceof HTMLButtonElement\n ) {\n invariant(\n activeElement.attributes &&\n activeElement.attributes.getNamedItem('type'),\n 'You submitted a Formik form using a button with an unspecified `type` attribute. Most browsers default button elements to `type=\"submit\"`. If this is not a submit button, please add `type=\"button\"`.'\n );\n }\n }\n\n submitForm().catch(reason => {\n console.warn(\n `Warning: An unhandled error was caught from submitForm()`,\n reason\n );\n });\n }\n );\n\n const imperativeMethods: FormikHelpers<Values> = {\n resetForm,\n validateForm: validateFormWithHighPriority,\n validateField,\n setErrors,\n setFieldError,\n setFieldTouched,\n setFieldValue,\n setStatus,\n setSubmitting,\n setTouched,\n setValues,\n setFormikState,\n submitForm,\n };\n\n const executeSubmit = useEventCallback(() => {\n return onSubmit(state.values, imperativeMethods);\n });\n\n const handleReset = useEventCallback(e => {\n if (e && e.preventDefault && isFunction(e.preventDefault)) {\n e.preventDefault();\n }\n\n if (e && e.stopPropagation && isFunction(e.stopPropagation)) {\n e.stopPropagation();\n }\n\n resetForm();\n });\n\n const getFieldMeta = React.useCallback(\n (name: string): FieldMetaProps<any> => {\n return {\n value: getIn(state.values, name),\n error: getIn(state.errors, name),\n touched: !!getIn(state.touched, name),\n initialValue: getIn(initialValues.current, name),\n initialTouched: !!getIn(initialTouched.current, name),\n initialError: getIn(initialErrors.current, name),\n };\n },\n [state.errors, state.touched, state.values]\n );\n\n const getFieldHelpers = React.useCallback(\n (name: string): FieldHelperProps<any> => {\n return {\n setValue: (value: any, shouldValidate?: boolean) =>\n setFieldValue(name, value, shouldValidate),\n setTouched: (value: boolean, shouldValidate?: boolean) =>\n setFieldTouched(name, value, shouldValidate),\n setError: (value: any) => setFieldError(name, value),\n };\n },\n [setFieldValue, setFieldTouched, setFieldError]\n );\n\n const getFieldProps = React.useCallback(\n (nameOrOptions): FieldInputProps<any> => {\n const isAnObject = isObject(nameOrOptions);\n const name = isAnObject ? nameOrOptions.name : nameOrOptions;\n const valueState = getIn(state.values, name);\n\n const field: FieldInputProps<any> = {\n name,\n value: valueState,\n onChange: handleChange,\n onBlur: handleBlur,\n };\n if (isAnObject) {\n const {\n type,\n value: valueProp, // value is special for checkboxes\n as: is,\n multiple,\n } = nameOrOptions;\n\n if (type === 'checkbox') {\n if (valueProp === undefined) {\n field.checked = !!valueState;\n } else {\n field.checked = !!(\n Array.isArray(valueState) && ~valueState.indexOf(valueProp)\n );\n field.value = valueProp;\n }\n } else if (type === 'radio') {\n field.checked = valueState === valueProp;\n field.value = valueProp;\n } else if (is === 'select' && multiple) {\n field.value = field.value || [];\n field.multiple = true;\n }\n }\n return field;\n },\n [handleBlur, handleChange, state.values]\n );\n\n const dirty = React.useMemo(\n () => !isEqual(initialValues.current, state.values),\n [initialValues.current, state.values]\n );\n\n const isValid = React.useMemo(\n () =>\n typeof isInitialValid !== 'undefined'\n ? dirty\n ? state.errors && Object.keys(state.errors).length === 0\n : isInitialValid !== false && isFunction(isInitialValid)\n ? (isInitialValid as (props: FormikConfig<Values>) => boolean)(props)\n : (isInitialValid as boolean)\n : state.errors && Object.keys(state.errors).length === 0,\n [isInitialValid, dirty, state.errors, props]\n );\n\n const ctx = {\n ...state,\n initialValues: initialValues.current,\n initialErrors: initialErrors.current,\n initialTouched: initialTouched.current,\n initialStatus: initialStatus.current,\n handleBlur,\n handleChange,\n handleReset,\n handleSubmit,\n resetForm,\n setErrors,\n setFormikState,\n setFieldTouched,\n setFieldValue,\n setFieldError,\n setStatus,\n setSubmitting,\n setTouched,\n setValues,\n submitForm,\n validateForm: validateFormWithHighPriority,\n validateField,\n isValid,\n dirty,\n unregisterField,\n registerField,\n getFieldProps,\n getFieldMeta,\n getFieldHelpers,\n validateOnBlur,\n validateOnChange,\n validateOnMount,\n };\n\n return ctx;\n}\n\nexport function Formik<\n Values extends FormikValues = FormikValues,\n ExtraProps = {}\n>(props: FormikConfig<Values> & ExtraProps) {\n const formikbag = useFormik<Values>(props);\n const { component, children, render, innerRef } = props;\n\n // This allows folks to pass a ref to <Formik />\n React.useImperativeHandle(innerRef, () => formikbag);\n\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n !props.render,\n `<Formik render> has been deprecated and will be removed in future versions of Formik. Please use a child callback function instead. To get rid of this warning, replace <Formik render={(props) => ...} /> with <Formik>{(props) => ...}</Formik>`\n );\n // eslint-disable-next-line\n }, []);\n }\n return (\n <FormikProvider value={formikbag}>\n {component\n ? React.createElement(component as any, formikbag)\n : render\n ? render(formikbag)\n : children // children come last, always called\n ? isFunction(children)\n ? (children as (bag: FormikProps<Values>) => React.ReactNode)(\n formikbag as FormikProps<Values>\n )\n : !isEmptyChildren(children)\n ? React.Children.only(children)\n : null\n : null}\n </FormikProvider>\n );\n}\n\nfunction warnAboutMissingIdentifier({\n htmlContent,\n documentationAnchorLink,\n handlerName,\n}: {\n htmlContent: string;\n documentationAnchorLink: string;\n handlerName: string;\n}) {\n console.warn(\n `Warning: Formik called \\`${handlerName}\\`, but you forgot to pass an \\`id\\` or \\`name\\` attribute to your input:\n ${htmlContent}\n Formik cannot determine which value to update. For more info see https://formik.org/docs/api/formik#${documentationAnchorLink}\n `\n );\n}\n\n/**\n * Transform Yup ValidationError to a more usable object\n */\nexport function yupToFormErrors<Values>(yupError: any): FormikErrors<Values> {\n let errors: FormikErrors<Values> = {};\n if (yupError.inner) {\n if (yupError.inner.length === 0) {\n return setIn(errors, yupError.path, yupError.message);\n }\n for (let err of yupError.inner) {\n if (!getIn(errors, err.path)) {\n errors = setIn(errors, err.path, err.message);\n }\n }\n }\n return errors;\n}\n\n/**\n * Validate a yup schema.\n */\nexport function validateYupSchema<T extends FormikValues>(\n values: T,\n schema: any,\n sync: boolean = false,\n context: any = {}\n): Promise<Partial<T>> {\n const validateData: FormikValues = prepareDataForValidation(values);\n return schema[sync ? 'validateSync' : 'validate'](validateData, {\n abortEarly: false,\n context: context,\n });\n}\n\n/**\n * Recursively prepare values.\n */\nexport function prepareDataForValidation<T extends FormikValues>(\n values: T\n): FormikValues {\n let data: FormikValues = Array.isArray(values) ? [] : {};\n for (let k in values) {\n if (Object.prototype.hasOwnProperty.call(values, k)) {\n const key = String(k);\n if (Array.isArray(values[key]) === true) {\n data[key] = values[key].map((value: any) => {\n if (Array.isArray(value) === true || isPlainObject(value)) {\n return prepareDataForValidation(value);\n } else {\n return value !== '' ? value : undefined;\n }\n });\n } else if (isPlainObject(values[key])) {\n data[key] = prepareDataForValidation(values[key]);\n } else {\n data[key] = values[key] !== '' ? values[key] : undefined;\n }\n }\n }\n return data;\n}\n\n/**\n * deepmerge array merging algorithm\n * https://github.com/KyleAMathews/deepmerge#combine-array\n */\nfunction arrayMerge(target: any[], source: any[], options: any): any[] {\n const destination = target.slice();\n\n source.forEach(function merge(e: any, i: number) {\n if (typeof destination[i] === 'undefined') {\n const cloneRequested = options.clone !== false;\n const shouldClone = cloneRequested && options.isMergeableObject(e);\n destination[i] = shouldClone\n ? deepmerge(Array.isArray(e) ? [] : {}, e, options)\n : e;\n } else if (options.isMergeableObject(e)) {\n destination[i] = deepmerge(target[i], e, options);\n } else if (target.indexOf(e) === -1) {\n destination.push(e);\n }\n });\n return destination;\n}\n\n/** Return multi select values based on an array of options */\nfunction getSelectedValues(options: any[]) {\n return Array.from(options)\n .filter(el => el.selected)\n .map(el => el.value);\n}\n\n/** Return the next value for a checkbox */\nfunction getValueForCheckbox(\n currentValue: string | any[],\n checked: boolean,\n valueProp: any\n) {\n // If the current value was a boolean, return a boolean\n if (typeof currentValue === 'boolean') {\n return Boolean(checked);\n }\n\n // If the currentValue was not a boolean we want to return an array\n let currentArrayOfValues = [];\n let isValueInArray = false;\n let index = -1;\n\n if (!Array.isArray(currentValue)) {\n // eslint-disable-next-line eqeqeq\n if (!valueProp || valueProp == 'true' || valueProp == 'false') {\n return Boolean(checked);\n }\n } else {\n // If the current value is already an array, use it\n currentArrayOfValues = currentValue;\n index = currentValue.indexOf(valueProp);\n isValueInArray = index >= 0;\n }\n\n // If the checkbox was checked and the value is not already present in the aray we want to add the new value to the array of values\n if (checked && valueProp && !isValueInArray) {\n return currentArrayOfValues.concat(valueProp);\n }\n\n // If the checkbox was unchecked and the value is not in the array, simply return the already existing array of values\n if (!isValueInArray) {\n return currentArrayOfValues;\n }\n\n // If the checkbox was unchecked and the value is in the array, remove the value and return the array\n return currentArrayOfValues\n .slice(0, index)\n .concat(currentArrayOfValues.slice(index + 1));\n}\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\n// @see https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n ? React.useLayoutEffect\n : React.useEffect;\n\nfunction useEventCallback<T extends (...args: any[]) => any>(fn: T): T {\n const ref: any = React.useRef(fn);\n\n // we copy a ref to the callback scoped to the current state/props on each render\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n });\n\n return React.useCallback(\n (...args: any[]) => ref.current.apply(void 0, args),\n []\n ) as T;\n}\n","import * as React from 'react';\nimport { useFormikContext } from './FormikContext';\n\nexport type FormikFormProps = Pick<\n React.FormHTMLAttributes<HTMLFormElement>,\n Exclude<\n keyof React.FormHTMLAttributes<HTMLFormElement>,\n 'onReset' | 'onSubmit'\n >\n>;\n\ntype FormProps = React.ComponentPropsWithoutRef<'form'>;\n\n// @todo tests\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(\n (props: FormikFormProps, ref) => {\n // iOS needs an \"action\" attribute for nice input: https://stackoverflow.com/a/39485162/406725\n // We default the action to \"#\" in case the preventDefault fails (just updates the URL hash)\n const { action, ...rest } = props;\n const _action = action ?? '#';\n const { handleReset, handleSubmit } = useFormikContext();\n return (\n <form\n onSubmit={handleSubmit}\n ref={ref}\n onReset={handleReset}\n action={_action}\n {...rest}\n />\n );\n }\n);\n\nForm.displayName = 'Form';\n","import * as React from 'react';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { connect } from './connect';\nimport {\n FormikContextType,\n FormikState,\n SharedRenderProps,\n FormikProps,\n} from './types';\nimport {\n getIn,\n isEmptyChildren,\n isFunction,\n setIn,\n isEmptyArray,\n} from './utils';\nimport isEqual from 'react-fast-compare';\n\nexport type FieldArrayRenderProps = ArrayHelpers & {\n form: FormikProps<any>;\n name: string;\n};\n\nexport type FieldArrayConfig = {\n /** Really the path to the array field to be updated */\n name: string;\n /** Should field array validate the form AFTER array updates/changes? */\n validateOnChange?: boolean;\n} & SharedRenderProps<FieldArrayRenderProps>;\nexport interface ArrayHelpers {\n /** Imperatively add a value to the end of an array */\n push: (obj: any) => void;\n /** Curried fn to add a value to the end of an array */\n handlePush: (obj: any) => () => void;\n /** Imperatively swap two values in an array */\n swap: (indexA: number, indexB: number) => void;\n /** Curried fn to swap two values in an array */\n handleSwap: (indexA: number, indexB: number) => () => void;\n /** Imperatively move an element in an array to another index */\n move: (from: number, to: number) => void;\n /** Imperatively move an element in an array to another index */\n handleMove: (from: number, to: number) => () => void;\n /** Imperatively insert an element at a given index into the array */\n insert: (index: number, value: any) => void;\n /** Curried fn to insert an element at a given index into the array */\n handleInsert: (index: number, value: any) => () => void;\n /** Imperatively replace a value at an index of an array */\n replace: (index: number, value: any) => void;\n /** Curried fn to replace an element at a given index into the array */\n handleReplace: (index: number, value: any) => () => void;\n /** Imperatively add an element to the beginning of an array and return its length */\n unshift: (value: any) => number;\n /** Curried fn to add an element to the beginning of an array */\n handleUnshift: (value: any) => () => void;\n /** Curried fn to remove an element at an index of an array */\n handleRemove: (index: number) => () => void;\n /** Curried fn to remove a value from the end of the array */\n handlePop: () => () => void;\n /** Imperatively remove and element at an index of an array */\n remove<T>(index: number): T | undefined;\n /** Imperatively remove and return value from the end of the array */\n pop<T>(): T | undefined;\n}\n\n/**\n * Some array helpers!\n */\nexport const move = (array: any[], from: number, to: number) => {\n const copy = copyArrayLike(array);\n const value = copy[from];\n copy.splice(from, 1);\n copy.splice(to, 0, value);\n return copy;\n};\n\nexport const swap = (\n arrayLike: ArrayLike<any>,\n indexA: number,\n indexB: number\n) => {\n const copy = copyArrayLike(arrayLike);\n const a = copy[indexA];\n copy[indexA] = copy[indexB];\n copy[indexB] = a;\n return copy;\n};\n\nexport const insert = (\n arrayLike: ArrayLike<any>,\n index: number,\n value: any\n) => {\n const copy = copyArrayLike(arrayLike);\n copy.splice(index, 0, value);\n return copy;\n};\n\nexport const replace = (\n arrayLike: ArrayLike<any>,\n index: number,\n value: any\n) => {\n const copy = copyArrayLike(arrayLike);\n copy[index] = value;\n return copy;\n};\n\nconst copyArrayLike = (arrayLike: ArrayLike<any>) => {\n if (!arrayLike) {\n return [];\n } else if (Array.isArray(arrayLike)) {\n return [...arrayLike];\n } else {\n const maxIndex = Object.keys(arrayLike)\n .map(key => parseInt(key))\n .reduce((max, el) => (el > max ? el : max), 0);\n return Array.from({ ...arrayLike, length: maxIndex + 1 });\n }\n};\n\nclass FieldArrayInner<Values = {}> extends React.Component<\n FieldArrayConfig & { formik: FormikContextType<Values> },\n {}\n> {\n static defaultProps = {\n validateOnChange: true,\n };\n\n constructor(props: FieldArrayConfig & { formik: FormikContextType<Values> }) {\n super(props);\n // We need TypeScript generics on these, so we'll bind them in the constructor\n // @todo Fix TS 3.2.1\n this.remove = this.remove.bind(this) as any;\n this.pop = this.pop.bind(this) as any;\n }\n\n componentDidUpdate(\n prevProps: FieldArrayConfig & { formik: FormikContextType<Values> }\n ) {\n if (\n this.props.validateOnChange &&\n this.props.formik.validateOnChange &&\n !isEqual(\n getIn(prevProps.formik.values, prevProps.name),\n getIn(this.props.formik.values, this.props.name)\n )\n ) {\n this.props.formik.validateForm(this.props.formik.values);\n }\n }\n\n updateArrayField = (\n fn: Function,\n alterTouched: boolean | Function,\n alterErrors: boolean | Function\n ) => {\n const {\n name,\n\n formik: { setFormikState },\n } = this.props;\n setFormikState((prevState: FormikState<any>) => {\n let updateErrors = typeof alterErrors === 'function' ? alterErrors : fn;\n let updateTouched =\n typeof alterTouched === 'function' ? alterTouched : fn;\n\n // values fn should be executed before updateErrors and updateTouched,\n // otherwise it causes an error with unshift.\n let values = setIn(\n prevState.values,\n name,\n fn(getIn(prevState.values, name))\n );\n\n let fieldError = alterErrors\n ? updateErrors(getIn(prevState.errors, name))\n : undefined;\n let fieldTouched = alterTouched\n ? updateTouched(getIn(prevState.touched, name))\n : undefined;\n\n if (isEmptyArray(fieldError)) {\n fieldError = undefined;\n }\n if (isEmptyArray(fieldTouched)) {\n fieldTouched = undefined;\n }\n\n return {\n ...prevState,\n values,\n errors: alterErrors\n ? setIn(prevState.errors, name, fieldError)\n : prevState.errors,\n touched: alterTouched\n ? setIn(prevState.touched, name, fieldTouched)\n : prevState.touched,\n };\n });\n };\n\n push = (value: any) =>\n this.updateArrayField(\n (arrayLike: ArrayLike<any>) => [\n ...copyArrayLike(arrayLike),\n cloneDeep(value),\n ],\n false,\n false\n );\n\n handlePush = (value: any) => () => this.push(value);\n\n swap = (indexA: number, indexB: number) =>\n this.updateArrayField(\n (array: any[]) => swap(array, indexA, indexB),\n true,\n true\n );\n\n handleSwap = (indexA: number, indexB: number) => () =>\n this.swap(indexA, indexB);\n\n move = (from: number, to: number) =>\n this.updateArrayField((array: any[]) => move(array, from, to), true, true);\n\n handleMove = (from: number, to: number) => () => this.move(from, to);\n\n insert = (index: number, value: any) =>\n this.updateArrayField(\n (array: any[]) => insert(array, index, value),\n (array: any[]) => insert(array, index, null),\n (array: any[]) => insert(array, index, null)\n );\n\n handleInsert = (index: number, value: any) => () => this.insert(index, value);\n\n replace = (index: number, value: any) =>\n this.updateArrayField(\n (array: any[]) => replace(array, index, value),\n false,\n false\n );\n\n handleReplace = (index: number, value: any) => () =>\n this.replace(index, value);\n\n unshift = (value: any) => {\n let length = -1;\n this.updateArrayField(\n (array: any[]) => {\n const arr = array ? [value, ...array] : [value];\n if (length < 0) {\n length = arr.length;\n }\n return arr;\n },\n (array: any[]) => {\n const arr = array ? [null, ...array] : [null];\n if (length < 0) {\n length = arr.length;\n }\n return arr;\n },\n (array: any[]) => {\n const arr = array ? [null, ...array] : [null];\n if (length < 0) {\n length = arr.length;\n }\n return arr;\n }\n );\n return length;\n };\n\n handleUnshift = (value: any) => () => this.unshift(value);\n\n remove<T>(index: number): T {\n // We need to make sure we also remove relevant pieces of `touched` and `errors`\n let result: any;\n this.updateArrayField(\n // so this gets call 3 times\n (array?: any[]) => {\n const copy = array ? copyArrayLike(array) : [];\n if (!result) {\n result = copy[index];\n }\n if (isFunction(copy.splice)) {\n copy.splice(index, 1);\n }\n return copy;\n },\n true,\n true\n );\n\n return result as T;\n }\n\n handleRemove = (index: number) => () => this.remove<any>(index);\n\n pop<T>(): T {\n // Remove relevant pieces of `touched` and `errors` too!\n let result: any;\n this.updateArrayField(\n // so this gets call 3 times\n (array: any[]) => {\n const tmp = array;\n if (!result) {\n result = tmp && tmp.pop && tmp.pop();\n }\n return tmp;\n },\n true,\n true\n );\n\n return result as T;\n }\n\n handlePop = () => () => this.pop<any>();\n\n render() {\n const arrayHelpers: ArrayHelpers = {\n push: this.push,\n pop: this.pop,\n swap: this.swap,\n move: this.move,\n insert: this.insert,\n replace: this.replace,\n unshift: this.unshift,\n remove: this.remove,\n handlePush: this.handlePush,\n handlePop: this.handlePop,\n handleSwap: this.handleSwap,\n handleMove: this.handleMove,\n handleInsert: this.handleInsert,\n handleReplace: this.handleReplace,\n handleUnshift: this.handleUnshift,\n handleRemove: this.handleRemove,\n };\n\n const {\n component,\n render,\n children,\n name,\n formik: {\n validate: _validate,\n validationSchema: _validationSchema,\n ...restOfFormik\n },\n } = this.props;\n\n const props: FieldArrayRenderProps = {\n ...arrayHelpers,\n form: restOfFormik,\n name,\n };\n\n return component\n ? React.createElement(component as any, props)\n : render\n ? (render as any)(props)\n : children // children come last, always called\n ? typeof children === 'function'\n ? (children as any)(props)\n : !isEmptyChildren(children)\n ? React.Children.only(children)\n : null\n : null;\n }\n}\n\nexport const FieldArray = connect<FieldArrayConfig, any>(FieldArrayInner);\n","import * as React from 'react';\nimport { FormikContextType } from './types';\nimport { getIn, isFunction } from './utils';\nimport { connect } from './connect';\n\nexport interface ErrorMessageProps {\n name: string;\n className?: string;\n component?: string | React.ComponentType;\n children?: (errorMessage: string) => React.ReactNode;\n render?: (errorMessage: string) => React.ReactNode;\n}\n\nclass ErrorMessageImpl extends React.Component<\n ErrorMessageProps & { formik: FormikContextType<any> }\n> {\n shouldComponentUpdate(\n props: ErrorMessageProps & { formik: FormikContextType<any> }\n ) {\n if (\n getIn(this.props.formik.errors, this.props.name) !==\n getIn(props.formik.errors, this.props.name) ||\n getIn(this.props.formik.touched, this.props.name) !==\n getIn(props.formik.touched, this.props.name) ||\n Object.keys(this.props).length !== Object.keys(props).length\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n render() {\n let { component, formik, render, children, name, ...rest } = this.props;\n\n const touch = getIn(formik.touched, name);\n const error = getIn(formik.errors, name);\n\n return !!touch && !!error\n ? render\n ? isFunction(render)\n ? render(error)\n : null\n : children\n ? isFunction(children)\n ? children(error)\n : null\n : component\n ? React.createElement(component, rest as any, error)\n : error\n : null;\n }\n}\n\nexport const ErrorMessage = connect<\n ErrorMessageProps,\n ErrorMessageProps & { formik: FormikContextType<any> }\n>(ErrorMessageImpl);\n","import * as React from 'react';\n\nimport {\n FormikProps,\n GenericFieldHTMLAttributes,\n FormikContextType,\n FieldMetaProps,\n FieldInputProps,\n} from './types';\nimport invariant from 'tiny-warning';\nimport { getIn, isEmptyChildren, isFunction } from './utils';\nimport { FieldConfig } from './Field';\nimport { connect } from './connect';\n\ntype $FixMe = any;\n\nexport interface FastFieldProps<V = any> {\n field: FieldInputProps<V>;\n meta: FieldMetaProps<V>;\n form: FormikProps<V>; // if ppl want to restrict this for a given form, let them.\n}\n\nexport type FastFieldConfig<T> = FieldConfig & {\n /** Override FastField's default shouldComponentUpdate */\n shouldUpdate?: (\n nextProps: T & GenericFieldHTMLAttributes,\n props: {}\n ) => boolean;\n};\n\nexport type FastFieldAttributes<T> = GenericFieldHTMLAttributes &\n FastFieldConfig<T> &\n T;\n\ntype FastFieldInnerProps<Values = {}, Props = {}> = FastFieldAttributes<\n Props\n> & { formik: FormikContextType<Values> };\n\n/**\n * Custom Field component for quickly hooking into Formik\n * context and wiring up forms.\n */\nclass FastFieldInner<Values = {}, Props = {}> extends React.Component<\n FastFieldInnerProps<Values, Props>,\n {}\n> {\n constructor(props: FastFieldInnerProps<Values, Props>) {\n super(props);\n const { render, children, component, as: is, name } = props;\n invariant(\n !render,\n `<FastField render> has been deprecated. Please use a child callback function instead: <FastField name={${name}}>{props => ...}</FastField> instead.`\n );\n invariant(\n !(component && render),\n 'You should not use <FastField component> and <FastField render> in the same <FastField> component; <FastField component> will be ignored'\n );\n\n invariant(\n !(is && children && isFunction(children)),\n 'You should not use <FastField as> and <FastField children> as a function in the same <FastField> component; <FastField as> will be ignored.'\n );\n\n invariant(\n !(component && children && isFunction(children)),\n 'You should not use <FastField component> and <FastField children> as a function in the same <FastField> component; <FastField component> will be ignored.'\n );\n\n invariant(\n !(render && children && !isEmptyChildren(children)),\n 'You should not use <FastField render> and <FastField children> in the same <FastField> component; <FastField children> will be ignored'\n );\n }\n\n shouldComponentUpdate(props: FastFieldInnerProps<Values, Props>) {\n if (this.props.shouldUpdate) {\n return this.props.shouldUpdate(props, this.props);\n } else if (\n props.name !== this.props.name ||\n getIn(props.formik.values, this.props.name) !==\n getIn(this.props.formik.values, this.props.name) ||\n getIn(props.formik.errors, this.props.name) !==\n getIn(this.props.formik.errors, this.props.name) ||\n getIn(props.formik.touched, this.props.name) !==\n getIn(this.props.formik.touched, this.props.name) ||\n Object.keys(this.props).length !== Object.keys(props).length ||\n props.formik.isSubmitting !== this.props.formik.isSubmitting\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n componentDidMount() {\n // Register the Field with the parent Formik. Parent will cycle through\n // registered Field's validate fns right prior to submit\n this.props.formik.registerField(this.props.name, {\n validate: this.props.validate,\n });\n }\n\n componentDidUpdate(prevProps: FastFieldAttributes<Props>) {\n if (this.props.name !== prevProps.name) {\n this.props.formik.unregisterField(prevProps.name);\n this.props.formik.registerField(this.props.name, {\n validate: this.props.validate,\n });\n }\n\n if (this.props.validate !== prevProps.validate) {\n this.props.formik.registerField(this.props.name, {\n validate: this.props.validate,\n });\n }\n }\n\n componentWillUnmount() {\n this.props.formik.unregisterField(this.props.name);\n }\n\n render() {\n const {\n validate,\n name,\n render,\n as: is,\n children,\n component,\n shouldUpdate,\n formik,\n ...props\n } = this.props as FastFieldInnerProps<Values, Props>;\n\n const {\n validate: _validate,\n validationSchema: _validationSchema,\n ...restOfFormik\n } = formik;\n const field = formik.getFieldProps({ name, ...props });\n const meta = {\n value: getIn(formik.values, name),\n error: getIn(formik.errors, name),\n touched: !!getIn(formik.touched, name),\n initialValue: getIn(formik.initialValues, name),\n initialTouched: !!getIn(formik.initialTouched, name),\n initialError: getIn(formik.initialErrors, name),\n };\n\n const bag = { field, meta, form: restOfFormik };\n\n if (render) {\n return (render as any)(bag);\n }\n\n if (isFunction(children)) {\n return (children as (props: FastFieldProps<any>) => React.ReactNode)(bag);\n }\n\n if (component) {\n // This behavior is backwards compat with earlier Formik 0.9 to 1.x\n if (typeof component === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n component,\n { ref: innerRef, ...field, ...(rest as $FixMe) },\n children\n );\n }\n // We don't pass `meta` for backwards compat\n return React.createElement(\n component as React.ComponentClass<$FixMe>,\n { field, form: formik, ...props },\n children\n );\n }\n\n // default to input here so we can check for both `as` and `children` above\n const asElement = is || 'input';\n\n if (typeof asElement === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n asElement,\n { ref: innerRef, ...field, ...(rest as $FixMe) },\n children\n );\n }\n\n return React.createElement(\n asElement as React.ComponentClass,\n { ...field, ...props },\n children\n );\n }\n}\n\nexport const FastField = connect<FastFieldAttributes<any>, any>(FastFieldInner);\n","/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar prefix = \"fas\";\nvar faAd = {\n prefix: 'fas',\n iconName: 'ad',\n icon: [512, 512, [], \"f641\", \"M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faAdjust = {\n prefix: 'fas',\n iconName: 'adjust',\n icon: [512, 512, [], \"f042\", \"M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z\"]\n};\nvar faAirFreshener = {\n prefix: 'fas',\n iconName: 'air-freshener',\n icon: [512, 512, [], \"f5d0\", \"M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z\"]\n};\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"]\n};\nvar faAllergies = {\n prefix: 'fas',\n iconName: 'allergies',\n icon: [448, 512, [], \"f461\", \"M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faAmbulance = {\n prefix: 'fas',\n iconName: 'ambulance',\n icon: [640, 512, [], \"f0f9\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faAmericanSignLanguageInterpreting = {\n prefix: 'fas',\n iconName: 'american-sign-language-interpreting',\n icon: [640, 512, [], \"f2a3\", \"M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z\"]\n};\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [], \"f13d\", \"M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z\"]\n};\nvar faAngleDoubleDown = {\n prefix: 'fas',\n iconName: 'angle-double-down',\n icon: [320, 512, [], \"f103\", \"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\"]\n};\nvar faAngleDoubleLeft = {\n prefix: 'fas',\n iconName: 'angle-double-left',\n icon: [448, 512, [], \"f100\", \"M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z\"]\n};\nvar faAngleDoubleRight = {\n prefix: 'fas',\n iconName: 'angle-double-right',\n icon: [448, 512, [], \"f101\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z\"]\n};\nvar faAngleDoubleUp = {\n prefix: 'fas',\n iconName: 'angle-double-up',\n icon: [320, 512, [], \"f102\", \"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [320, 512, [], \"f107\", \"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [256, 512, [], \"f104\", \"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [256, 512, [], \"f105\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"]\n};\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [320, 512, [], \"f106\", \"M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z\"]\n};\nvar faAngry = {\n prefix: 'fas',\n iconName: 'angry',\n icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z\"]\n};\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [], \"f644\", \"M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z\"]\n};\nvar faAppleAlt = {\n prefix: 'fas',\n iconName: 'apple-alt',\n icon: [448, 512, [], \"f5d1\", \"M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z\"]\n};\nvar faArchive = {\n prefix: 'fas',\n iconName: 'archive',\n icon: [512, 512, [], \"f187\", \"M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [576, 512, [], \"f557\", \"M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faArrowAltCircleDown = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-down',\n icon: [512, 512, [], \"f358\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-left',\n icon: [512, 512, [], \"f359\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z\"]\n};\nvar faArrowAltCircleRight = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-right',\n icon: [512, 512, [], \"f35a\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z\"]\n};\nvar faArrowAltCircleUp = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-up',\n icon: [512, 512, [], \"f35b\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z\"]\n};\nvar faArrowCircleDown = {\n prefix: 'fas',\n iconName: 'arrow-circle-down',\n icon: [512, 512, [], \"f0ab\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z\"]\n};\nvar faArrowCircleLeft = {\n prefix: 'fas',\n iconName: 'arrow-circle-left',\n icon: [512, 512, [], \"f0a8\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z\"]\n};\nvar faArrowCircleRight = {\n prefix: 'fas',\n iconName: 'arrow-circle-right',\n icon: [512, 512, [], \"f0a9\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z\"]\n};\nvar faArrowCircleUp = {\n prefix: 'fas',\n iconName: 'arrow-circle-up',\n icon: [512, 512, [], \"f0aa\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z\"]\n};\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [448, 512, [], \"f063\", \"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [], \"f060\", \"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [], \"f061\", \"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"]\n};\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [448, 512, [], \"f062\", \"M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z\"]\n};\nvar faArrowsAlt = {\n prefix: 'fas',\n iconName: 'arrows-alt',\n icon: [512, 512, [], \"f0b2\", \"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z\"]\n};\nvar faArrowsAltH = {\n prefix: 'fas',\n iconName: 'arrows-alt-h',\n icon: [512, 512, [], \"f337\", \"M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z\"]\n};\nvar faArrowsAltV = {\n prefix: 'fas',\n iconName: 'arrows-alt-v',\n icon: [256, 512, [], \"f338\", \"M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z\"]\n};\nvar faAssistiveListeningSystems = {\n prefix: 'fas',\n iconName: 'assistive-listening-systems',\n icon: [512, 512, [], \"f2a2\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [512, 512, [], \"f069\", \"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z\"]\n};\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [], \"f1fa\", \"M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z\"]\n};\nvar faAtlas = {\n prefix: 'fas',\n iconName: 'atlas',\n icon: [448, 512, [], \"f558\", \"M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z\"]\n};\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [448, 512, [], \"f5d2\", \"M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z\"]\n};\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [512, 512, [], \"f29e\", \"M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z\"]\n};\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [384, 512, [], \"f77c\", \"M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [], \"f77d\", \"M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z\"]\n};\nvar faBackspace = {\n prefix: 'fas',\n iconName: 'backspace',\n icon: [640, 512, [], \"f55a\", \"M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z\"]\n};\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [], \"f04a\", \"M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [], \"f7e5\", \"M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z\"]\n};\nvar faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z\"]\n};\nvar faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z\"]\n};\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [512, 512, [], \"f666\", \"M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z\"]\n};\nvar faBalanceScale = {\n prefix: 'fas',\n iconName: 'balance-scale',\n icon: [640, 512, [], \"f24e\", \"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faBalanceScaleLeft = {\n prefix: 'fas',\n iconName: 'balance-scale-left',\n icon: [640, 512, [], \"f515\", \"M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z\"]\n};\nvar faBalanceScaleRight = {\n prefix: 'fas',\n iconName: 'balance-scale-right',\n icon: [640, 512, [], \"f516\", \"M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [], \"f05e\", \"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"]\n};\nvar faBandAid = {\n prefix: 'fas',\n iconName: 'band-aid',\n icon: [640, 512, [], \"f462\", \"M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\"]\n};\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [], \"f0c9\", \"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"]\n};\nvar faBaseballBall = {\n prefix: 'fas',\n iconName: 'baseball-ball',\n icon: [496, 512, [], \"f433\", \"M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z\"]\n};\nvar faBasketballBall = {\n prefix: 'fas',\n iconName: 'basketball-ball',\n icon: [496, 512, [], \"f434\", \"M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z\"]\n};\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [], \"f2cd\", \"M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [640, 512, [], \"f244\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [640, 512, [], \"f240\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [640, 512, [], \"f242\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [640, 512, [], \"f243\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [640, 512, [], \"f241\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [], \"f236\", \"M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z\"]\n};\nvar faBeer = {\n prefix: 'fas',\n iconName: 'beer',\n icon: [448, 512, [], \"f0fc\", \"M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z\"]\n};\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [], \"f0f3\", \"M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [], \"f1f6\", \"M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faBible = {\n prefix: 'fas',\n iconName: 'bible',\n icon: [448, 512, [], \"f647\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [], \"f206\", \"M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z\"]\n};\nvar faBiking = {\n prefix: 'fas',\n iconName: 'biking',\n icon: [640, 512, [], \"f84a\", \"M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z\"]\n};\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z\"]\n};\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [], \"f780\", \"M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faBirthdayCake = {\n prefix: 'fas',\n iconName: 'birthday-cake',\n icon: [448, 512, [], \"f1fd\", \"M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z\"]\n};\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBlind = {\n prefix: 'fas',\n iconName: 'blind',\n icon: [384, 512, [], \"f29d\", \"M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"]\n};\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [320, 512, [], \"f0e7\", \"M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z\"]\n};\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [], \"f1e2\", \"M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [640, 512, [], \"f5d7\", \"M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z\"]\n};\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z\"]\n};\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [], \"f02d\", \"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\"]\n};\nvar faBookDead = {\n prefix: 'fas',\n iconName: 'book-dead',\n icon: [448, 512, [], \"f6b7\", \"M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z\"]\n};\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z\"]\n};\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [], \"f518\", \"M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z\"]\n};\nvar faBookReader = {\n prefix: 'fas',\n iconName: 'book-reader',\n icon: [512, 512, [], \"f5da\", \"M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [], \"f02e\", \"M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderStyle = {\n prefix: 'fas',\n iconName: 'border-style',\n icon: [448, 512, [], \"f853\", \"M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [496, 512, [], \"f436\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [512, 512, [], \"f466\", \"M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z\"]\n};\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z\"]\n};\nvar faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z\"]\n};\nvar faBoxes = {\n prefix: 'fas',\n iconName: 'boxes',\n icon: [576, 512, [], \"f468\", \"M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [576, 512, [], \"f5dc\", \"M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [576, 512, [], \"f7ec\", \"M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [], \"f0b1\", \"M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z\"]\n};\nvar faBroadcastTower = {\n prefix: 'fas',\n iconName: 'broadcast-tower',\n icon: [640, 512, [], \"f519\", \"M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z\"]\n};\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [640, 512, [], \"f51a\", \"M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z\"]\n};\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\"]\n};\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [448, 512, [], \"f1ad\", \"M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [576, 512, [], \"f0a1\", \"M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z\"]\n};\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [496, 512, [], \"f140\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z\"]\n};\nvar faBurn = {\n prefix: 'fas',\n iconName: 'burn',\n icon: [384, 512, [], \"f46a\", \"M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z\"]\n};\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [512, 512, [], \"f207\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusAlt = {\n prefix: 'fas',\n iconName: 'bus-alt',\n icon: [512, 512, [], \"f55e\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [], \"f64a\", \"M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [448, 512, [], \"f1ec\", \"M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [], \"f133\", \"M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z\"]\n};\nvar faCalendarAlt = {\n prefix: 'fas',\n iconName: 'calendar-alt',\n icon: [448, 512, [], \"f073\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z\"]\n};\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z\"]\n};\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z\"]\n};\nvar faCalendarTimes = {\n prefix: 'fas',\n iconName: 'calendar-times',\n icon: [448, 512, [], \"f273\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z\"]\n};\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [], \"f030\", \"M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z\"]\n};\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [], \"f083\", \"M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [640, 512, [], \"f6bb\", \"M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z\"]\n};\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z\"]\n};\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z\"]\n};\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [], \"f1b9\", \"M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarAlt = {\n prefix: 'fas',\n iconName: 'car-alt',\n icon: [480, 512, [], \"f5de\", \"M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [], \"f5df\", \"M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faCarCrash = {\n prefix: 'fas',\n iconName: 'car-crash',\n icon: [640, 512, [], \"f5e1\", \"M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z\"]\n};\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [], \"f5e4\", \"M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [192, 512, [], \"f0d9\", \"M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [192, 512, [], \"f0da\", \"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\"]\n};\nvar faCaretSquareDown = {\n prefix: 'fas',\n iconName: 'caret-square-down',\n icon: [448, 512, [], \"f150\", \"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z\"]\n};\nvar faCaretSquareLeft = {\n prefix: 'fas',\n iconName: 'caret-square-left',\n icon: [448, 512, [], \"f191\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z\"]\n};\nvar faCaretSquareRight = {\n prefix: 'fas',\n iconName: 'caret-square-right',\n icon: [448, 512, [], \"f152\", \"M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z\"]\n};\nvar faCaretSquareUp = {\n prefix: 'fas',\n iconName: 'caret-square-up',\n icon: [448, 512, [], \"f151\", \"M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z\"]\n};\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [], \"f787\", \"M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\"]\n};\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z\"]\n};\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [512, 512, [], \"f6be\", \"M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z\"]\n};\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [], \"f6c0\", \"M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [640, 512, [], \"f51b\", \"M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChalkboardTeacher = {\n prefix: 'fas',\n iconName: 'chalkboard-teacher',\n icon: [640, 512, [], \"f51c\", \"M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z\"]\n};\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [], \"f1fe\", \"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [], \"f080\", \"M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [], \"f201\", \"M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [544, 512, [], \"f200\", \"M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [512, 512, [], \"f00c\", \"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"]\n};\nvar faCheckCircle = {\n prefix: 'fas',\n iconName: 'check-circle',\n icon: [512, 512, [], \"f058\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [512, 512, [], \"f560\", \"M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z\"]\n};\nvar faCheckSquare = {\n prefix: 'fas',\n iconName: 'check-square',\n icon: [448, 512, [], \"f14a\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z\"]\n};\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z\"]\n};\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [], \"f43a\", \"M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [512, 512, [], \"f43c\", \"M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [], \"f43f\", \"M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z\"]\n};\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [384, 512, [], \"f441\", \"M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [], \"f443\", \"M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [], \"f445\", \"M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [384, 512, [], \"f447\", \"M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChevronCircleDown = {\n prefix: 'fas',\n iconName: 'chevron-circle-down',\n icon: [512, 512, [], \"f13a\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z\"]\n};\nvar faChevronCircleLeft = {\n prefix: 'fas',\n iconName: 'chevron-circle-left',\n icon: [512, 512, [], \"f137\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z\"]\n};\nvar faChevronCircleRight = {\n prefix: 'fas',\n iconName: 'chevron-circle-right',\n icon: [512, 512, [], \"f138\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z\"]\n};\nvar faChevronCircleUp = {\n prefix: 'fas',\n iconName: 'chevron-circle-up',\n icon: [512, 512, [], \"f139\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [448, 512, [], \"f078\", \"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [], \"f053\", \"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [], \"f054\", \"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [448, 512, [], \"f077\", \"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"]\n};\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [384, 512, [], \"f1ae\", \"M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [], \"f51d\", \"M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z\"]\n};\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [], \"f64f\", \"M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z\"]\n};\nvar faClinicMedical = {\n prefix: 'fas',\n iconName: 'clinic-medical',\n icon: [576, 512, [], \"f7f2\", \"M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z\"]\n};\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [], \"f328\", \"M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [], \"f017\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z\"]\n};\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [], \"f0c2\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z\"]\n};\nvar faCloudDownloadAlt = {\n prefix: 'fas',\n iconName: 'cloud-download-alt',\n icon: [640, 512, [], \"f381\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z\"]\n};\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z\"]\n};\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [576, 512, [], \"f6c3\", \"M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z\"]\n};\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [], \"f73d\", \"M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z\"]\n};\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [], \"f6c4\", \"M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [576, 512, [], \"f743\", \"M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudUploadAlt = {\n prefix: 'fas',\n iconName: 'cloud-upload-alt',\n icon: [640, 512, [], \"f382\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\"]\n};\nvar faCocktail = {\n prefix: 'fas',\n iconName: 'cocktail',\n icon: [576, 512, [], \"f561\", \"M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z\"]\n};\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [384, 512, [], \"f126\", \"M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z\"]\n};\nvar faCoffee = {\n prefix: 'fas',\n iconName: 'coffee',\n icon: [640, 512, [], \"f0f4\", \"M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z\"]\n};\nvar faCog = {\n prefix: 'fas',\n iconName: 'cog',\n icon: [512, 512, [], \"f013\", \"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faCogs = {\n prefix: 'fas',\n iconName: 'cogs',\n icon: [640, 512, [], \"f085\", \"M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z\"]\n};\nvar faColumns = {\n prefix: 'fas',\n iconName: 'columns',\n icon: [512, 512, [], \"f0db\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z\"]\n};\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z\"]\n};\nvar faCommentAlt = {\n prefix: 'fas',\n iconName: 'comment-alt',\n icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z\"]\n};\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z\"]\n};\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [], \"f4ad\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z\"]\n};\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [576, 512, [], \"f086\", \"M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [576, 512, [], \"f653\", \"M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [496, 512, [], \"f51f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [496, 512, [], \"f14e\", \"M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faCompressAlt = {\n prefix: 'fas',\n iconName: 'compress-alt',\n icon: [448, 512, [], \"f422\", \"M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z\"]\n};\nvar faCompressArrowsAlt = {\n prefix: 'fas',\n iconName: 'compress-arrows-alt',\n icon: [512, 512, [], \"f78c\", \"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z\"]\n};\nvar faConciergeBell = {\n prefix: 'fas',\n iconName: 'concierge-bell',\n icon: [512, 512, [], \"f562\", \"M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [], \"f563\", \"M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\"]\n};\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z\"]\n};\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [], \"f09d\", \"M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faCropAlt = {\n prefix: 'fas',\n iconName: 'crop-alt',\n icon: [512, 512, [], \"f565\", \"M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [], \"f654\", \"M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z\"]\n};\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [640, 512, [], \"f521\", \"M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z\"]\n};\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z\"]\n};\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [512, 512, [], \"f1b3\", \"M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z\"]\n};\nvar faCut = {\n prefix: 'fas',\n iconName: 'cut',\n icon: [448, 512, [], \"f0c4\", \"M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z\"]\n};\nvar faDeaf = {\n prefix: 'fas',\n iconName: 'deaf',\n icon: [512, 512, [], \"f2a4\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [], \"f108\", \"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\"]\n};\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [], \"f655\", \"M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z\"]\n};\nvar faDiagnoses = {\n prefix: 'fas',\n iconName: 'diagnoses',\n icon: [640, 512, [], \"f470\", \"M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [], \"f522\", \"M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [480, 512, [], \"f6cf\", \"M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [], \"f523\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [], \"f524\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [], \"f525\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [], \"f526\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [], \"f527\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [], \"f528\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDigitalTachograph = {\n prefix: 'fas',\n iconName: 'digital-tachograph',\n icon: [640, 512, [], \"f566\", \"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z\"]\n};\nvar faDirections = {\n prefix: 'fas',\n iconName: 'directions',\n icon: [512, 512, [], \"f5eb\", \"M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z\"]\n};\nvar faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [], \"f529\", \"M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faDizzy = {\n prefix: 'fas',\n iconName: 'dizzy',\n icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z\"]\n};\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [], \"f471\", \"M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z\"]\n};\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [], \"f6d3\", \"M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z\"]\n};\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [288, 512, [], \"f155\", \"M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [], \"f472\", \"M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faDollyFlatbed = {\n prefix: 'fas',\n iconName: 'dolly-flatbed',\n icon: [640, 512, [], \"f474\", \"M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDonate = {\n prefix: 'fas',\n iconName: 'donate',\n icon: [512, 512, [], \"f4b9\", \"M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z\"]\n};\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [640, 512, [], \"f52a\", \"M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z\"]\n};\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [640, 512, [], \"f52b\", \"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z\"]\n};\nvar faDotCircle = {\n prefix: 'fas',\n iconName: 'dot-circle',\n icon: [512, 512, [], \"f192\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [], \"f4ba\", \"M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faDraftingCompass = {\n prefix: 'fas',\n iconName: 'drafting-compass',\n icon: [512, 512, [], \"f568\", \"M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z\"]\n};\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [], \"f6d5\", \"M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z\"]\n};\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [], \"f569\", \"M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z\"]\n};\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z\"]\n};\nvar faEdit = {\n prefix: 'fas',\n iconName: 'edit',\n icon: [576, 512, [], \"f044\", \"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\"]\n};\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [], \"f7fb\", \"M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z\"]\n};\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [], \"f052\", \"M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z\"]\n};\nvar faEllipsisH = {\n prefix: 'fas',\n iconName: 'ellipsis-h',\n icon: [512, 512, [], \"f141\", \"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"]\n};\nvar faEllipsisV = {\n prefix: 'fas',\n iconName: 'ellipsis-v',\n icon: [192, 512, [], \"f142\", \"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\"]\n};\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [], \"f0e0\", \"M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [], \"f2b6\", \"M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z\"]\n};\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z\"]\n};\nvar faEnvelopeSquare = {\n prefix: 'fas',\n iconName: 'envelope-square',\n icon: [448, 512, [], \"f199\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [], \"f52c\", \"M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [512, 512, [], \"f12d\", \"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [], \"f153\", \"M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z\"]\n};\nvar faExchangeAlt = {\n prefix: 'fas',\n iconName: 'exchange-alt',\n icon: [512, 512, [], \"f362\", \"M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [192, 512, [], \"f12a\", \"M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z\"]\n};\nvar faExclamationCircle = {\n prefix: 'fas',\n iconName: 'exclamation-circle',\n icon: [512, 512, [], \"f06a\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExclamationTriangle = {\n prefix: 'fas',\n iconName: 'exclamation-triangle',\n icon: [576, 512, [], \"f071\", \"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"]\n};\nvar faExpandAlt = {\n prefix: 'fas',\n iconName: 'expand-alt',\n icon: [448, 512, [], \"f424\", \"M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z\"]\n};\nvar faExpandArrowsAlt = {\n prefix: 'fas',\n iconName: 'expand-arrows-alt',\n icon: [448, 512, [], \"f31e\", \"M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z\"]\n};\nvar faExternalLinkAlt = {\n prefix: 'fas',\n iconName: 'external-link-alt',\n icon: [512, 512, [], \"f35d\", \"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z\"]\n};\nvar faExternalLinkSquareAlt = {\n prefix: 'fas',\n iconName: 'external-link-square-alt',\n icon: [448, 512, [], \"f360\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z\"]\n};\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [], \"f06e\", \"M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z\"]\n};\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [], \"f1fb\", \"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z\"]\n};\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faFastBackward = {\n prefix: 'fas',\n iconName: 'fast-backward',\n icon: [512, 512, [], \"f049\", \"M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z\"]\n};\nvar faFastForward = {\n prefix: 'fas',\n iconName: 'fast-forward',\n icon: [512, 512, [], \"f050\", \"M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z\"]\n};\nvar faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [], \"f1ac\", \"M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [], \"f52d\", \"M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z\"]\n};\nvar faFeatherAlt = {\n prefix: 'fas',\n iconName: 'feather-alt',\n icon: [512, 512, [], \"f56b\", \"M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z\"]\n};\nvar faFemale = {\n prefix: 'fas',\n iconName: 'female',\n icon: [256, 512, [], \"f182\", \"M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z\"]\n};\nvar faFighterJet = {\n prefix: 'fas',\n iconName: 'fighter-jet',\n icon: [640, 512, [], \"f0fb\", \"M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z\"]\n};\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [], \"f15b\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileAlt = {\n prefix: 'fas',\n iconName: 'file-alt',\n icon: [384, 512, [], \"f15c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileArchive = {\n prefix: 'fas',\n iconName: 'file-archive',\n icon: [384, 512, [], \"f1c6\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [384, 512, [], \"f6dd\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileDownload = {\n prefix: 'fas',\n iconName: 'file-download',\n icon: [384, 512, [], \"f56d\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [], \"f56e\", \"M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z\"]\n};\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [], \"f1c5\", \"M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z\"]\n};\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [], \"f56f\", \"M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z\"]\n};\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z\"]\n};\nvar faFileMedicalAlt = {\n prefix: 'fas',\n iconName: 'file-medical-alt',\n icon: [448, 512, [], \"f478\", \"M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z\"]\n};\nvar faFileUpload = {\n prefix: 'fas',\n iconName: 'file-upload',\n icon: [384, 512, [], \"f574\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z\"]\n};\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z\"]\n};\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [], \"f008\", \"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [384, 512, [], \"f06d\", \"M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z\"]\n};\nvar faFireAlt = {\n prefix: 'fas',\n iconName: 'fire-alt',\n icon: [448, 512, [], \"f7e4\", \"M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z\"]\n};\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [448, 512, [], \"f134\", \"M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z\"]\n};\nvar faFirstAid = {\n prefix: 'fas',\n iconName: 'first-aid',\n icon: [576, 512, [], \"f479\", \"M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [], \"f578\", \"M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFistRaised = {\n prefix: 'fas',\n iconName: 'fist-raised',\n icon: [384, 512, [], \"f6de\", \"M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z\"]\n};\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [512, 512, [], \"f024\", \"M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z\"]\n};\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [512, 512, [], \"f11e\", \"M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z\"]\n};\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [512, 512, [], \"f74d\", \"M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z\"]\n};\nvar faFlushed = {\n prefix: 'fas',\n iconName: 'flushed',\n icon: [496, 512, [], \"f579\", \"M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [], \"f07b\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z\"]\n};\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [], \"f07c\", \"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"]\n};\nvar faFontAwesomeLogoFull = {\n prefix: 'fas',\n iconName: 'font-awesome-logo-full',\n icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFootballBall = {\n prefix: 'fas',\n iconName: 'football-ball',\n icon: [496, 512, [], \"f44e\", \"M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [], \"f04e\", \"M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z\"]\n};\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFrown = {\n prefix: 'fas',\n iconName: 'frown',\n icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z\"]\n};\nvar faFrownOpen = {\n prefix: 'fas',\n iconName: 'frown-open',\n icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faFunnelDollar = {\n prefix: 'fas',\n iconName: 'funnel-dollar',\n icon: [640, 512, [], \"f662\", \"M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [], \"f1e3\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z\"]\n};\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [], \"f52f\", \"M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [], \"f0e3\", \"M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [576, 512, [], \"f3a5\", \"M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [288, 512, [], \"f22d\", \"M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z\"]\n};\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [], \"f6e2\", \"M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [], \"f06b\", \"M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z\"]\n};\nvar faGlassCheers = {\n prefix: 'fas',\n iconName: 'glass-cheers',\n icon: [640, 512, [], \"f79f\", \"M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z\"]\n};\nvar faGlassMartini = {\n prefix: 'fas',\n iconName: 'glass-martini',\n icon: [512, 512, [], \"f000\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z\"]\n};\nvar faGlassMartiniAlt = {\n prefix: 'fas',\n iconName: 'glass-martini-alt',\n icon: [512, 512, [], \"f57b\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z\"]\n};\nvar faGlassWhiskey = {\n prefix: 'fas',\n iconName: 'glass-whiskey',\n icon: [512, 512, [], \"f7a0\", \"M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z\"]\n};\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [496, 512, [], \"f0ac\", \"M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z\"]\n};\nvar faGlobeAfrica = {\n prefix: 'fas',\n iconName: 'globe-africa',\n icon: [496, 512, [], \"f57c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z\"]\n};\nvar faGlobeAmericas = {\n prefix: 'fas',\n iconName: 'globe-americas',\n icon: [496, 512, [], \"f57d\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z\"]\n};\nvar faGlobeAsia = {\n prefix: 'fas',\n iconName: 'globe-asia',\n icon: [496, 512, [], \"f57e\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z\"]\n};\nvar faGlobeEurope = {\n prefix: 'fas',\n iconName: 'globe-europe',\n icon: [496, 512, [], \"f7a2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z\"]\n};\nvar faGolfBall = {\n prefix: 'fas',\n iconName: 'golf-ball',\n icon: [416, 512, [], \"f450\", \"M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [], \"f19d\", \"M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [], \"f531\", \"M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faGrimace = {\n prefix: 'fas',\n iconName: 'grimace',\n icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z\"]\n};\nvar faGrin = {\n prefix: 'fas',\n iconName: 'grin',\n icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinAlt = {\n prefix: 'fas',\n iconName: 'grin-alt',\n icon: [496, 512, [], \"f581\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeam = {\n prefix: 'fas',\n iconName: 'grin-beam',\n icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'grin-beam-sweat',\n icon: [504, 512, [], \"f583\", \"M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinHearts = {\n prefix: 'fas',\n iconName: 'grin-hearts',\n icon: [496, 512, [], \"f584\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z\"]\n};\nvar faGrinSquint = {\n prefix: 'fas',\n iconName: 'grin-squint',\n icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinSquintTears = {\n prefix: 'fas',\n iconName: 'grin-squint-tears',\n icon: [512, 512, [], \"f586\", \"M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z\"]\n};\nvar faGrinStars = {\n prefix: 'fas',\n iconName: 'grin-stars',\n icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z\"]\n};\nvar faGrinTears = {\n prefix: 'fas',\n iconName: 'grin-tears',\n icon: [640, 512, [], \"f588\", \"M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinTongue = {\n prefix: 'fas',\n iconName: 'grin-tongue',\n icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'grin-tongue-squint',\n icon: [496, 512, [], \"f58a\", \"M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z\"]\n};\nvar faGrinTongueWink = {\n prefix: 'fas',\n iconName: 'grin-tongue-wink',\n icon: [496, 512, [], \"f58b\", \"M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinWink = {\n prefix: 'fas',\n iconName: 'grin-wink',\n icon: [496, 512, [], \"f58c\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z\"]\n};\nvar faGripHorizontal = {\n prefix: 'fas',\n iconName: 'grip-horizontal',\n icon: [448, 512, [], \"f58d\", \"M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [512, 512, [], \"f7a4\", \"M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [256, 512, [], \"f7a5\", \"M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z\"]\n};\nvar faHSquare = {\n prefix: 'fas',\n iconName: 'h-square',\n icon: [448, 512, [], \"f0fd\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z\"]\n};\nvar faHamburger = {\n prefix: 'fas',\n iconName: 'hamburger',\n icon: [512, 512, [], \"f805\", \"M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z\"]\n};\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [], \"f6e3\", \"M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z\"]\n};\nvar faHandHoldingUsd = {\n prefix: 'fas',\n iconName: 'hand-holding-usd',\n icon: [576, 512, [], \"f4c0\", \"M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z\"]\n};\nvar faHandHoldingWater = {\n prefix: 'fas',\n iconName: 'hand-holding-water',\n icon: [576, 512, [], \"f4c1\", \"M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [576, 512, [], \"f258\", \"M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [512, 512, [], \"f806\", \"M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z\"]\n};\nvar faHandPaper = {\n prefix: 'fas',\n iconName: 'hand-paper',\n icon: [448, 512, [], \"f256\", \"M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z\"]\n};\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [448, 512, [], \"f25b\", \"M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [], \"f0a6\", \"M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z\"]\n};\nvar faHandRock = {\n prefix: 'fas',\n iconName: 'hand-rock',\n icon: [512, 512, [], \"f255\", \"M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z\"]\n};\nvar faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z\"]\n};\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [512, 512, [], \"f259\", \"M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [640, 512, [], \"f4c2\", \"M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\"]\n};\nvar faHandsHelping = {\n prefix: 'fas',\n iconName: 'hands-helping',\n icon: [640, 512, [], \"f4c4\", \"M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z\"]\n};\nvar faHandsWash = {\n prefix: 'fas',\n iconName: 'hands-wash',\n icon: [576, 512, [], \"e05e\", \"M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z\"]\n};\nvar faHandshakeAltSlash = {\n prefix: 'fas',\n iconName: 'handshake-alt-slash',\n icon: [640, 512, [], \"e05f\", \"M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [], \"f6e6\", \"M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z\"]\n};\nvar faHardHat = {\n prefix: 'fas',\n iconName: 'hard-hat',\n icon: [512, 512, [], \"f807\", \"M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [], \"f292\", \"M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z\"]\n};\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z\"]\n};\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z\"]\n};\nvar faHdd = {\n prefix: 'fas',\n iconName: 'hdd',\n icon: [576, 512, [], \"f0a0\", \"M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z\"]\n};\nvar faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z\"]\n};\nvar faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [512, 512, [], \"e063\", \"M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [512, 512, [], \"f1dc\", \"M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z\"]\n};\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [], \"f025\", \"M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z\"]\n};\nvar faHeadphonesAlt = {\n prefix: 'fas',\n iconName: 'headphones-alt',\n icon: [512, 512, [], \"f58f\", \"M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [], \"f004\", \"M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z\"]\n};\nvar faHeartBroken = {\n prefix: 'fas',\n iconName: 'heart-broken',\n icon: [512, 512, [], \"f7a9\", \"M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHeartbeat = {\n prefix: 'fas',\n iconName: 'heartbeat',\n icon: [512, 512, [], \"f21e\", \"M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [], \"f533\", \"M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z\"]\n};\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [544, 512, [], \"f591\", \"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z\"]\n};\nvar faHiking = {\n prefix: 'fas',\n iconName: 'hiking',\n icon: [384, 512, [], \"f6ec\", \"M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [], \"f6ed\", \"M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHistory = {\n prefix: 'fas',\n iconName: 'history',\n icon: [512, 512, [], \"f1da\", \"M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z\"]\n};\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [448, 512, [], \"f7aa\", \"M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z\"]\n};\nvar faHome = {\n prefix: 'fas',\n iconName: 'home',\n icon: [576, 512, [], \"f015\", \"M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [], \"f6f0\", \"M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [512, 512, [], \"f7ab\", \"M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [448, 512, [], \"f0f8\", \"M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z\"]\n};\nvar faHospitalAlt = {\n prefix: 'fas',\n iconName: 'hospital-alt',\n icon: [576, 512, [], \"f47d\", \"M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faHospitalSymbol = {\n prefix: 'fas',\n iconName: 'hospital-symbol',\n icon: [512, 512, [], \"f47e\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z\"]\n};\nvar faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [640, 512, [], \"f80d\", \"M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z\"]\n};\nvar faHotTub = {\n prefix: 'fas',\n iconName: 'hot-tub',\n icon: [512, 512, [], \"f593\", \"M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [], \"f80f\", \"M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [576, 512, [], \"f594\", \"M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [], \"f254\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [], \"f253\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z\"]\n};\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [], \"f252\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [], \"f251\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z\"]\n};\nvar faHouseDamage = {\n prefix: 'fas',\n iconName: 'house-damage',\n icon: [576, 512, [], \"f6f1\", \"M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z\"]\n};\nvar faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [], \"e065\", \"M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z\"]\n};\nvar faHryvnia = {\n prefix: 'fas',\n iconName: 'hryvnia',\n icon: [384, 512, [], \"f6f2\", \"M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [], \"f810\", \"M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z\"]\n};\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [], \"f86d\", \"M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z\"]\n};\nvar faIdCardAlt = {\n prefix: 'fas',\n iconName: 'id-card-alt',\n icon: [576, 512, [], \"f47f\", \"M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [576, 512, [], \"f01c\", \"M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [512, 512, [], \"f275\", \"M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z\"]\n};\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [], \"f534\", \"M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z\"]\n};\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z\"]\n};\nvar faInfoCircle = {\n prefix: 'fas',\n iconName: 'info-circle',\n icon: [512, 512, [], \"f05a\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [320, 512, [], \"f033\", \"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"]\n};\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z\"]\n};\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z\"]\n};\nvar faJournalWhills = {\n prefix: 'fas',\n iconName: 'journal-whills',\n icon: [448, 512, [], \"f66a\", \"M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z\"]\n};\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [], \"f66b\", \"M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z\"]\n};\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [], \"f084\", \"M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [], \"f11c\", \"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [], \"f66d\", \"M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z\"]\n};\nvar faKiss = {\n prefix: 'fas',\n iconName: 'kiss',\n icon: [496, 512, [], \"f596\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faKissBeam = {\n prefix: 'fas',\n iconName: 'kiss-beam',\n icon: [496, 512, [], \"f597\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z\"]\n};\nvar faKissWinkHeart = {\n prefix: 'fas',\n iconName: 'kiss-wink-heart',\n icon: [504, 512, [], \"f598\", \"M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z\"]\n};\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [], \"f66f\", \"M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z\"]\n};\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [], \"f109\", \"M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopHouse = {\n prefix: 'fas',\n iconName: 'laptop-house',\n icon: [640, 512, [], \"e066\", \"M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z\"]\n};\nvar faLaugh = {\n prefix: 'fas',\n iconName: 'laugh',\n icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z\"]\n};\nvar faLaughBeam = {\n prefix: 'fas',\n iconName: 'laugh-beam',\n icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughSquint = {\n prefix: 'fas',\n iconName: 'laugh-squint',\n icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughWink = {\n prefix: 'fas',\n iconName: 'laugh-wink',\n icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [512, 512, [], \"f5fd\", \"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [576, 512, [], \"f06c\", \"M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z\"]\n};\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [512, 512, [], \"f094\", \"M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z\"]\n};\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [], \"f536\", \"M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z\"]\n};\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faLevelDownAlt = {\n prefix: 'fas',\n iconName: 'level-down-alt',\n icon: [320, 512, [], \"f3be\", \"M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z\"]\n};\nvar faLevelUpAlt = {\n prefix: 'fas',\n iconName: 'level-up-alt',\n icon: [320, 512, [], \"f3bf\", \"M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z\"]\n};\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [352, 512, [], \"f0eb\", \"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [512, 512, [], \"f0c1\", \"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [384, 512, [], \"f195\", \"M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z\"]\n};\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [], \"f03a\", \"M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faListAlt = {\n prefix: 'fas',\n iconName: 'list-alt',\n icon: [512, 512, [], \"f022\", \"M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z\"]\n};\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [], \"f0cb\", \"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [], \"f0ca\", \"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [512, 512, [], \"f124\", \"M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z\"]\n};\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [], \"f023\", \"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z\"]\n};\nvar faLongArrowAltDown = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-down',\n icon: [256, 512, [], \"f309\", \"M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z\"]\n};\nvar faLongArrowAltLeft = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-left',\n icon: [448, 512, [], \"f30a\", \"M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z\"]\n};\nvar faLongArrowAltRight = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-right',\n icon: [448, 512, [], \"f30b\", \"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"]\n};\nvar faLongArrowAltUp = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-up',\n icon: [256, 512, [], \"f30c\", \"M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z\"]\n};\nvar faLowVision = {\n prefix: 'fas',\n iconName: 'low-vision',\n icon: [576, 512, [], \"f2a8\", \"M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z\"]\n};\nvar faLuggageCart = {\n prefix: 'fas',\n iconName: 'luggage-cart',\n icon: [640, 512, [], \"f59d\", \"M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z\"]\n};\nvar faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [], \"f604\", \"M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z\"]\n};\nvar faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z\"]\n};\nvar faMagic = {\n prefix: 'fas',\n iconName: 'magic',\n icon: [512, 512, [], \"f0d0\", \"M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [512, 512, [], \"f076\", \"M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z\"]\n};\nvar faMailBulk = {\n prefix: 'fas',\n iconName: 'mail-bulk',\n icon: [576, 512, [], \"f674\", \"M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z\"]\n};\nvar faMale = {\n prefix: 'fas',\n iconName: 'male',\n icon: [192, 512, [], \"f183\", \"M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z\"]\n};\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [], \"f279\", \"M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarked = {\n prefix: 'fas',\n iconName: 'map-marked',\n icon: [576, 512, [], \"f59f\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarkedAlt = {\n prefix: 'fas',\n iconName: 'map-marked-alt',\n icon: [576, 512, [], \"f5a0\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarker = {\n prefix: 'fas',\n iconName: 'map-marker',\n icon: [384, 512, [], \"f041\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z\"]\n};\nvar faMapMarkerAlt = {\n prefix: 'fas',\n iconName: 'map-marker-alt',\n icon: [384, 512, [], \"f3c5\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [288, 512, [], \"f276\", \"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\"]\n};\nvar faMapSigns = {\n prefix: 'fas',\n iconName: 'map-signs',\n icon: [512, 512, [], \"f277\", \"M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [384, 512, [], \"f222\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [512, 512, [], \"f227\", \"M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z\"]\n};\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [384, 512, [], \"f229\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsStrokeH = {\n prefix: 'fas',\n iconName: 'mars-stroke-h',\n icon: [480, 512, [], \"f22b\", \"M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMarsStrokeV = {\n prefix: 'fas',\n iconName: 'mars-stroke-v',\n icon: [288, 512, [], \"f22a\", \"M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [640, 512, [], \"f6fa\", \"M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z\"]\n};\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [], \"f5a2\", \"M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z\"]\n};\nvar faMedkit = {\n prefix: 'fas',\n iconName: 'medkit',\n icon: [512, 512, [], \"f0fa\", \"M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z\"]\n};\nvar faMeh = {\n prefix: 'fas',\n iconName: 'meh',\n icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehBlank = {\n prefix: 'fas',\n iconName: 'meh-blank',\n icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehRollingEyes = {\n prefix: 'fas',\n iconName: 'meh-rolling-eyes',\n icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z\"]\n};\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [640, 512, [], \"f538\", \"M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z\"]\n};\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [288, 512, [], \"f223\", \"M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [], \"f753\", \"M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [352, 512, [], \"f130\", \"M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneAlt = {\n prefix: 'fas',\n iconName: 'microphone-alt',\n icon: [352, 512, [], \"f3c9\", \"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z\"]\n};\nvar faMicrophoneAltSlash = {\n prefix: 'fas',\n iconName: 'microphone-alt-slash',\n icon: [640, 512, [], \"f539\", \"M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [], \"f610\", \"M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [], \"f068\", \"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faMinusCircle = {\n prefix: 'fas',\n iconName: 'minus-circle',\n icon: [512, 512, [], \"f056\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z\"]\n};\nvar faMinusSquare = {\n prefix: 'fas',\n iconName: 'minus-square',\n icon: [448, 512, [], \"f146\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z\"]\n};\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [320, 512, [], \"f10b\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMobileAlt = {\n prefix: 'fas',\n iconName: 'mobile-alt',\n icon: [320, 512, [], \"f3cd\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [640, 512, [], \"f0d6\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillAlt = {\n prefix: 'fas',\n iconName: 'money-bill-alt',\n icon: [640, 512, [], \"f3d1\", \"M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [640, 512, [], \"f53a\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z\"]\n};\nvar faMoneyBillWaveAlt = {\n prefix: 'fas',\n iconName: 'money-bill-wave-alt',\n icon: [640, 512, [], \"f53b\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [640, 512, [], \"f53c\", \"M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMoneyCheckAlt = {\n prefix: 'fas',\n iconName: 'money-check-alt',\n icon: [640, 512, [], \"f53d\", \"M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [512, 512, [], \"f186\", \"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [], \"f678\", \"M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [], \"f21c\", \"M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z\"]\n};\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [640, 512, [], \"f6fc\", \"M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z\"]\n};\nvar faMouse = {\n prefix: 'fas',\n iconName: 'mouse',\n icon: [384, 512, [], \"f8cc\", \"M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z\"]\n};\nvar faMousePointer = {\n prefix: 'fas',\n iconName: 'mouse-pointer',\n icon: [320, 512, [], \"f245\", \"M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z\"]\n};\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [], \"f7b6\", \"M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [], \"f001\", \"M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [288, 512, [], \"f22c\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [576, 512, [], \"f1ea\", \"M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\"]\n};\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [384, 512, [], \"f481\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [512, 512, [], \"f247\", \"M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z\"]\n};\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [576, 512, [], \"f248\", \"M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z\"]\n};\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z\"]\n};\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [], \"f679\", \"M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [], \"f700\", \"M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z\"]\n};\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [], \"f03b\", \"M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [], \"f815\", \"M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z\"]\n};\nvar faPaintBrush = {\n prefix: 'fas',\n iconName: 'paint-brush',\n icon: [512, 512, [], \"f1fc\", \"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z\"]\n};\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [], \"f53f\", \"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z\"]\n};\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [], \"f1d8\", \"M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z\"]\n};\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [], \"f0c6\", \"M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [], \"f1dd\", \"M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z\"]\n};\nvar faParking = {\n prefix: 'fas',\n iconName: 'parking',\n icon: [448, 512, [], \"f540\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z\"]\n};\nvar faPastafarianism = {\n prefix: 'fas',\n iconName: 'pastafarianism',\n icon: [640, 512, [], \"f67b\", \"M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [448, 512, [], \"f0ea\", \"M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [448, 512, [], \"f04c\", \"M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z\"]\n};\nvar faPauseCircle = {\n prefix: 'fas',\n iconName: 'pause-circle',\n icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [496, 512, [], \"f67c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [], \"f304\", \"M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z\"]\n};\nvar faPenAlt = {\n prefix: 'fas',\n iconName: 'pen-alt',\n icon: [512, 512, [], \"f305\", \"M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [], \"f5ac\", \"M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [], \"f5ad\", \"M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z\"]\n};\nvar faPenSquare = {\n prefix: 'fas',\n iconName: 'pen-square',\n icon: [448, 512, [], \"f14b\", \"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z\"]\n};\nvar faPencilAlt = {\n prefix: 'fas',\n iconName: 'pencil-alt',\n icon: [512, 512, [], \"f303\", \"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"]\n};\nvar faPencilRuler = {\n prefix: 'fas',\n iconName: 'pencil-ruler',\n icon: [512, 512, [], \"f5ae\", \"M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z\"]\n};\nvar faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [576, 512, [], \"e068\", \"M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z\"]\n};\nvar faPeopleCarry = {\n prefix: 'fas',\n iconName: 'people-carry',\n icon: [640, 512, [], \"f4ce\", \"M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z\"]\n};\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [], \"f816\", \"M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [448, 512, [], \"f295\", \"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z\"]\n};\nvar faPercentage = {\n prefix: 'fas',\n iconName: 'percentage',\n icon: [384, 512, [], \"f541\", \"M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z\"]\n};\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z\"]\n};\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [], \"f095\", \"M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z\"]\n};\nvar faPhoneAlt = {\n prefix: 'fas',\n iconName: 'phone-alt',\n icon: [512, 512, [], \"f879\", \"M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faPhoneSquare = {\n prefix: 'fas',\n iconName: 'phone-square',\n icon: [448, 512, [], \"f098\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z\"]\n};\nvar faPhoneSquareAlt = {\n prefix: 'fas',\n iconName: 'phone-square-alt',\n icon: [448, 512, [], \"f87b\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z\"]\n};\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [384, 512, [], \"f2a0\", \"M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z\"]\n};\nvar faPhotoVideo = {\n prefix: 'fas',\n iconName: 'photo-video',\n icon: [640, 512, [], \"f87c\", \"M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z\"]\n};\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z\"]\n};\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z\"]\n};\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [], \"f5af\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z\"]\n};\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [], \"f5b0\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z\"]\n};\nvar faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [448, 512, [], \"f04b\", \"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z\"]\n};\nvar faPlayCircle = {\n prefix: 'fas',\n iconName: 'play-circle',\n icon: [512, 512, [], \"f144\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [], \"f1e6\", \"M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z\"]\n};\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [], \"f067\", \"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPlusCircle = {\n prefix: 'fas',\n iconName: 'plus-circle',\n icon: [512, 512, [], \"f055\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPlusSquare = {\n prefix: 'fas',\n iconName: 'plus-square',\n icon: [448, 512, [], \"f0fe\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z\"]\n};\nvar faPoll = {\n prefix: 'fas',\n iconName: 'poll',\n icon: [448, 512, [], \"f681\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z\"]\n};\nvar faPollH = {\n prefix: 'fas',\n iconName: 'poll-h',\n icon: [448, 512, [], \"f682\", \"M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [], \"f2fe\", \"M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [], \"f75a\", \"M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z\"]\n};\nvar faPortrait = {\n prefix: 'fas',\n iconName: 'portrait',\n icon: [384, 512, [], \"f3e0\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faPoundSign = {\n prefix: 'fas',\n iconName: 'pound-sign',\n icon: [320, 512, [], \"f154\", \"M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [], \"f011\", \"M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z\"]\n};\nvar faPray = {\n prefix: 'fas',\n iconName: 'pray',\n icon: [384, 512, [], \"f683\", \"M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z\"]\n};\nvar faPrayingHands = {\n prefix: 'fas',\n iconName: 'praying-hands',\n icon: [640, 512, [], \"f684\", \"M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z\"]\n};\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [384, 512, [], \"f5b1\", \"M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z\"]\n};\nvar faPrescriptionBottleAlt = {\n prefix: 'fas',\n iconName: 'prescription-bottle-alt',\n icon: [384, 512, [], \"f486\", \"M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z\"]\n};\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [], \"f02f\", \"M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faProcedures = {\n prefix: 'fas',\n iconName: 'procedures',\n icon: [640, 512, [], \"f487\", \"M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faProjectDiagram = {\n prefix: 'fas',\n iconName: 'project-diagram',\n icon: [640, 512, [], \"f542\", \"M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [384, 512, [], \"e06a\", \"M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z\"]\n};\nvar faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [384, 512, [], \"e06b\", \"M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [576, 512, [], \"f12e\", \"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\"]\n};\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [384, 512, [], \"f128\", \"M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z\"]\n};\nvar faQuestionCircle = {\n prefix: 'fas',\n iconName: 'question-circle',\n icon: [512, 512, [], \"f059\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\"]\n};\nvar faQuidditch = {\n prefix: 'fas',\n iconName: 'quidditch',\n icon: [640, 512, [], \"f458\", \"M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [512, 512, [], \"f10d\", \"M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [512, 512, [], \"f10e\", \"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuran = {\n prefix: 'fas',\n iconName: 'quran',\n icon: [448, 512, [], \"f687\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [496, 512, [], \"f7b9\", \"M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z\"]\n};\nvar faRadiationAlt = {\n prefix: 'fas',\n iconName: 'radiation-alt',\n icon: [496, 512, [], \"f7ba\", \"M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [576, 512, [], \"f75b\", \"M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z\"]\n};\nvar faRandom = {\n prefix: 'fas',\n iconName: 'random',\n icon: [512, 512, [], \"f074\", \"M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z\"]\n};\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [], \"f543\", \"M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z\"]\n};\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [], \"f1b8\", \"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\"]\n};\nvar faRedo = {\n prefix: 'fas',\n iconName: 'redo',\n icon: [512, 512, [], \"f01e\", \"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z\"]\n};\nvar faRedoAlt = {\n prefix: 'fas',\n iconName: 'redo-alt',\n icon: [512, 512, [], \"f2f9\", \"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\"]\n};\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [], \"f25d\", \"M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z\"]\n};\nvar faRemoveFormat = {\n prefix: 'fas',\n iconName: 'remove-format',\n icon: [640, 512, [], \"f87d\", \"M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [], \"f3e5\", \"M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [], \"f122\", \"M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [640, 512, [], \"f079\", \"M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [], \"f4d6\", \"M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [], \"f018\", \"M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [], \"f544\", \"M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [], \"f09e\", \"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z\"]\n};\nvar faRssSquare = {\n prefix: 'fas',\n iconName: 'rss-square',\n icon: [448, 512, [], \"f143\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z\"]\n};\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [], \"f158\", \"M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [640, 512, [], \"f545\", \"M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [576, 512, [], \"f547\", \"M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z\"]\n};\nvar faRunning = {\n prefix: 'fas',\n iconName: 'running',\n icon: [416, 512, [], \"f70c\", \"M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [320, 512, [], \"f156\", \"M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z\"]\n};\nvar faSadCry = {\n prefix: 'fas',\n iconName: 'sad-cry',\n icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z\"]\n};\nvar faSadTear = {\n prefix: 'fas',\n iconName: 'sad-tear',\n icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z\"]\n};\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [], \"f7bf\", \"M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z\"]\n};\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [], \"f7c0\", \"M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z\"]\n};\nvar faSave = {\n prefix: 'fas',\n iconName: 'save',\n icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [], \"f549\", \"M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z\"]\n};\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [], \"f54a\", \"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [640, 512, [], \"f70e\", \"M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z\"]\n};\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z\"]\n};\nvar faSearch = {\n prefix: 'fas',\n iconName: 'search',\n icon: [512, 512, [], \"f002\", \"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\"]\n};\nvar faSearchDollar = {\n prefix: 'fas',\n iconName: 'search-dollar',\n icon: [512, 512, [], \"f688\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z\"]\n};\nvar faSearchLocation = {\n prefix: 'fas',\n iconName: 'search-location',\n icon: [512, 512, [], \"f689\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faSearchMinus = {\n prefix: 'fas',\n iconName: 'search-minus',\n icon: [512, 512, [], \"f010\", \"M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSearchPlus = {\n prefix: 'fas',\n iconName: 'search-plus',\n icon: [512, 512, [], \"f00e\", \"M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [], \"f4d8\", \"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z\"]\n};\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [], \"f61f\", \"M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [], \"f064\", \"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z\"]\n};\nvar faShareAlt = {\n prefix: 'fas',\n iconName: 'share-alt',\n icon: [448, 512, [], \"f1e0\", \"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\"]\n};\nvar faShareAltSquare = {\n prefix: 'fas',\n iconName: 'share-alt-square',\n icon: [448, 512, [], \"f1e1\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z\"]\n};\nvar faShareSquare = {\n prefix: 'fas',\n iconName: 'share-square',\n icon: [576, 512, [], \"f14d\", \"M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [], \"f20b\", \"M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faShieldAlt = {\n prefix: 'fas',\n iconName: 'shield-alt',\n icon: [512, 512, [], \"f3ed\", \"M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z\"]\n};\nvar faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [640, 512, [], \"f21a\", \"M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z\"]\n};\nvar faShippingFast = {\n prefix: 'fas',\n iconName: 'shipping-fast',\n icon: [640, 512, [], \"f48b\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z\"]\n};\nvar faShoppingBag = {\n prefix: 'fas',\n iconName: 'shopping-bag',\n icon: [448, 512, [], \"f290\", \"M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z\"]\n};\nvar faShoppingBasket = {\n prefix: 'fas',\n iconName: 'shopping-basket',\n icon: [576, 512, [], \"f291\", \"M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z\"]\n};\nvar faShoppingCart = {\n prefix: 'fas',\n iconName: 'shopping-cart',\n icon: [576, 512, [], \"f07a\", \"M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z\"]\n};\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [], \"f2cc\", \"M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z\"]\n};\nvar faShuttleVan = {\n prefix: 'fas',\n iconName: 'shuttle-van',\n icon: [640, 512, [], \"f5b6\", \"M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z\"]\n};\nvar faSign = {\n prefix: 'fas',\n iconName: 'sign',\n icon: [512, 512, [], \"f4d9\", \"M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z\"]\n};\nvar faSignInAlt = {\n prefix: 'fas',\n iconName: 'sign-in-alt',\n icon: [512, 512, [], \"f2f6\", \"M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z\"]\n};\nvar faSignLanguage = {\n prefix: 'fas',\n iconName: 'sign-language',\n icon: [448, 512, [], \"f2a7\", \"M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z\"]\n};\nvar faSignOutAlt = {\n prefix: 'fas',\n iconName: 'sign-out-alt',\n icon: [512, 512, [], \"f2f5\", \"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [], \"f012\", \"M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z\"]\n};\nvar faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z\"]\n};\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [640, 512, [], \"f0e8\", \"M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSkating = {\n prefix: 'fas',\n iconName: 'skating',\n icon: [448, 512, [], \"f7c5\", \"M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSkiing = {\n prefix: 'fas',\n iconName: 'skiing',\n icon: [512, 512, [], \"f7c9\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z\"]\n};\nvar faSkiingNordic = {\n prefix: 'fas',\n iconName: 'skiing-nordic',\n icon: [576, 512, [], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [], \"f54c\", \"M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\"]\n};\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [], \"f714\", \"M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z\"]\n};\nvar faSlidersH = {\n prefix: 'fas',\n iconName: 'sliders-h',\n icon: [512, 512, [], \"f1de\", \"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z\"]\n};\nvar faSmile = {\n prefix: 'fas',\n iconName: 'smile',\n icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z\"]\n};\nvar faSmileBeam = {\n prefix: 'fas',\n iconName: 'smile-beam',\n icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z\"]\n};\nvar faSmileWink = {\n prefix: 'fas',\n iconName: 'smile-wink',\n icon: [496, 512, [], \"f4da\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z\"]\n};\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [], \"f48d\", \"M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\"]\n};\nvar faSmokingBan = {\n prefix: 'fas',\n iconName: 'smoking-ban',\n icon: [512, 512, [], \"f54d\", \"M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z\"]\n};\nvar faSms = {\n prefix: 'fas',\n iconName: 'sms',\n icon: [512, 512, [], \"f7cd\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z\"]\n};\nvar faSnowboarding = {\n prefix: 'fas',\n iconName: 'snowboarding',\n icon: [512, 512, [], \"f7ce\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [], \"f2dc\", \"M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [], \"f7d0\", \"M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [], \"e06e\", \"M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z\"]\n};\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [], \"f696\", \"M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [], \"f0dc\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z\"]\n};\nvar faSortAlphaDown = {\n prefix: 'fas',\n iconName: 'sort-alpha-down',\n icon: [448, 512, [], \"f15d\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaDownAlt = {\n prefix: 'fas',\n iconName: 'sort-alpha-down-alt',\n icon: [448, 512, [], \"f881\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAlphaUp = {\n prefix: 'fas',\n iconName: 'sort-alpha-up',\n icon: [448, 512, [], \"f15e\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaUpAlt = {\n prefix: 'fas',\n iconName: 'sort-alpha-up-alt',\n icon: [448, 512, [], \"f882\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAmountDown = {\n prefix: 'fas',\n iconName: 'sort-amount-down',\n icon: [512, 512, [], \"f160\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountDownAlt = {\n prefix: 'fas',\n iconName: 'sort-amount-down-alt',\n icon: [512, 512, [], \"f884\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortAmountUp = {\n prefix: 'fas',\n iconName: 'sort-amount-up',\n icon: [512, 512, [], \"f161\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountUpAlt = {\n prefix: 'fas',\n iconName: 'sort-amount-up-alt',\n icon: [512, 512, [], \"f885\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [], \"f0dd\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\"]\n};\nvar faSortNumericDown = {\n prefix: 'fas',\n iconName: 'sort-numeric-down',\n icon: [448, 512, [], \"f162\", \"M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortNumericDownAlt = {\n prefix: 'fas',\n iconName: 'sort-numeric-down-alt',\n icon: [448, 512, [], \"f886\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortNumericUp = {\n prefix: 'fas',\n iconName: 'sort-numeric-up',\n icon: [448, 512, [], \"f163\", \"M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z\"]\n};\nvar faSortNumericUpAlt = {\n prefix: 'fas',\n iconName: 'sort-numeric-up-alt',\n icon: [448, 512, [], \"f887\", \"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [], \"f0de\", \"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z\"]\n};\nvar faSpaceShuttle = {\n prefix: 'fas',\n iconName: 'space-shuttle',\n icon: [640, 512, [], \"f197\", \"M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [576, 512, [], \"f717\", \"M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z\"]\n};\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z\"]\n};\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [], \"f0c8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [], \"f45c\", \"M512 512H0V0h512v512z\"]\n};\nvar faSquareRootAlt = {\n prefix: 'fas',\n iconName: 'square-root-alt',\n icon: [576, 512, [], \"f698\", \"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z\"]\n};\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [], \"f005\", \"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"]\n};\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [], \"f699\", \"M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z\"]\n};\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [], \"f089\", \"M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z\"]\n};\nvar faStarHalfAlt = {\n prefix: 'fas',\n iconName: 'star-half-alt',\n icon: [536, 512, [], \"f5c0\", \"M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [464, 512, [], \"f69a\", \"M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [480, 512, [], \"f621\", \"M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z\"]\n};\nvar faStepBackward = {\n prefix: 'fas',\n iconName: 'step-backward',\n icon: [448, 512, [], \"f048\", \"M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z\"]\n};\nvar faStepForward = {\n prefix: 'fas',\n iconName: 'step-forward',\n icon: [448, 512, [], \"f051\", \"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z\"]\n};\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [512, 512, [], \"f0f1\", \"M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faStickyNote = {\n prefix: 'fas',\n iconName: 'sticky-note',\n icon: [448, 512, [], \"f249\", \"M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z\"]\n};\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [448, 512, [], \"f04d\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faStopCircle = {\n prefix: 'fas',\n iconName: 'stop-circle',\n icon: [512, 512, [], \"f28d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [], \"f2f2\", \"M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [616, 512, [], \"f54e\", \"M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z\"]\n};\nvar faStoreAlt = {\n prefix: 'fas',\n iconName: 'store-alt',\n icon: [640, 512, [], \"f54f\", \"M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z\"]\n};\nvar faStoreAltSlash = {\n prefix: 'fas',\n iconName: 'store-alt-slash',\n icon: [640, 512, [], \"e070\", \"M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z\"]\n};\nvar faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z\"]\n};\nvar faStream = {\n prefix: 'fas',\n iconName: 'stream',\n icon: [512, 512, [], \"f550\", \"M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z\"]\n};\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z\"]\n};\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSubway = {\n prefix: 'fas',\n iconName: 'subway',\n icon: [448, 512, [], \"f239\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [], \"f0f2\", \"M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z\"]\n};\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z\"]\n};\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [], \"f185\", \"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSurprise = {\n prefix: 'fas',\n iconName: 'surprise',\n icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z\"]\n};\nvar faSwimmer = {\n prefix: 'fas',\n iconName: 'swimmer',\n icon: [640, 512, [], \"f5c4\", \"M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z\"]\n};\nvar faSwimmingPool = {\n prefix: 'fas',\n iconName: 'swimming-pool',\n icon: [640, 512, [], \"f5c5\", \"M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [], \"f69b\", \"M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z\"]\n};\nvar faSync = {\n prefix: 'fas',\n iconName: 'sync',\n icon: [512, 512, [], \"f021\", \"M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z\"]\n};\nvar faSyncAlt = {\n prefix: 'fas',\n iconName: 'sync-alt',\n icon: [512, 512, [], \"f2f1\", \"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [], \"f48e\", \"M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z\"]\n};\nvar faTableTennis = {\n prefix: 'fas',\n iconName: 'table-tennis',\n icon: [512, 512, [], \"f45d\", \"M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [], \"f10a\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faTabletAlt = {\n prefix: 'fas',\n iconName: 'tablet-alt',\n icon: [448, 512, [], \"f3fa\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z\"]\n};\nvar faTachometerAlt = {\n prefix: 'fas',\n iconName: 'tachometer-alt',\n icon: [576, 512, [], \"f3fd\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [512, 512, [], \"f02b\", \"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [640, 512, [], \"f02c\", \"M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z\"]\n};\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [640, 512, [], \"f4db\", \"M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\"]\n};\nvar faTasks = {\n prefix: 'fas',\n iconName: 'tasks',\n icon: [512, 512, [], \"f0ae\", \"M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [], \"f1ba\", \"M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [640, 512, [], \"f62e\", \"M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [640, 512, [], \"f62f\", \"M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z\"]\n};\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTenge = {\n prefix: 'fas',\n iconName: 'tenge',\n icon: [384, 512, [], \"f7d7\", \"M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z\"]\n};\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [640, 512, [], \"f120\", \"M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z\"]\n};\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z\"]\n};\nvar faTh = {\n prefix: 'fas',\n iconName: 'th',\n icon: [512, 512, [], \"f00a\", \"M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z\"]\n};\nvar faThLarge = {\n prefix: 'fas',\n iconName: 'th-large',\n icon: [512, 512, [], \"f009\", \"M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z\"]\n};\nvar faThList = {\n prefix: 'fas',\n iconName: 'th-list',\n icon: [512, 512, [], \"f00b\", \"M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z\"]\n};\nvar faTheaterMasks = {\n prefix: 'fas',\n iconName: 'theater-masks',\n icon: [640, 512, [], \"f630\", \"M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z\"]\n};\nvar faThermometerEmpty = {\n prefix: 'fas',\n iconName: 'thermometer-empty',\n icon: [256, 512, [], \"f2cb\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerFull = {\n prefix: 'fas',\n iconName: 'thermometer-full',\n icon: [256, 512, [], \"f2c7\", \"M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z\"]\n};\nvar faThermometerHalf = {\n prefix: 'fas',\n iconName: 'thermometer-half',\n icon: [256, 512, [], \"f2c9\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerQuarter = {\n prefix: 'fas',\n iconName: 'thermometer-quarter',\n icon: [256, 512, [], \"f2ca\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerThreeQuarters = {\n prefix: 'fas',\n iconName: 'thermometer-three-quarters',\n icon: [256, 512, [], \"f2c8\", \"M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [], \"f165\", \"M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z\"]\n};\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [], \"f164\", \"M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z\"]\n};\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [], \"f08d\", \"M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z\"]\n};\nvar faTicketAlt = {\n prefix: 'fas',\n iconName: 'ticket-alt',\n icon: [576, 512, [], \"f3ff\", \"M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z\"]\n};\nvar faTimes = {\n prefix: 'fas',\n iconName: 'times',\n icon: [352, 512, [], \"f00d\", \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"]\n};\nvar faTimesCircle = {\n prefix: 'fas',\n iconName: 'times-circle',\n icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\"]\n};\nvar faTint = {\n prefix: 'fas',\n iconName: 'tint',\n icon: [352, 512, [], \"f043\", \"M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faTintSlash = {\n prefix: 'fas',\n iconName: 'tint-slash',\n icon: [640, 512, [], \"f5c7\", \"M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z\"]\n};\nvar faTired = {\n prefix: 'fas',\n iconName: 'tired',\n icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z\"]\n};\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z\"]\n};\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [384, 512, [], \"f7d8\", \"M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [576, 512, [], \"f71e\", \"M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z\"]\n};\nvar faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [], \"f552\", \"M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z\"]\n};\nvar faTools = {\n prefix: 'fas',\n iconName: 'tools',\n icon: [512, 512, [], \"f7d9\", \"M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z\"]\n};\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [], \"f5c9\", \"M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z\"]\n};\nvar faTorah = {\n prefix: 'fas',\n iconName: 'torah',\n icon: [640, 512, [], \"f6a0\", \"M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z\"]\n};\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [], \"f6a1\", \"M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z\"]\n};\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [], \"f722\", \"M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [], \"f25c\", \"M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z\"]\n};\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [384, 512, [], \"f637\", \"M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [], \"f238\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z\"]\n};\nvar faTram = {\n prefix: 'fas',\n iconName: 'tram',\n icon: [512, 512, [], \"f7da\", \"M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [384, 512, [], \"f224\", \"M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTransgenderAlt = {\n prefix: 'fas',\n iconName: 'transgender-alt',\n icon: [480, 512, [], \"f225\", \"M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"]\n};\nvar faTrashAlt = {\n prefix: 'fas',\n iconName: 'trash-alt',\n icon: [448, 512, [], \"f2ed\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestore = {\n prefix: 'fas',\n iconName: 'trash-restore',\n icon: [448, 512, [], \"f829\", \"M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestoreAlt = {\n prefix: 'fas',\n iconName: 'trash-restore-alt',\n icon: [448, 512, [], \"f82a\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [384, 512, [], \"f1bb\", \"M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z\"]\n};\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [], \"f091\", \"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [], \"f0d1\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faTruckLoading = {\n prefix: 'fas',\n iconName: 'truck-loading',\n icon: [640, 512, [], \"f4de\", \"M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\"]\n};\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [], \"f63c\", \"M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faTshirt = {\n prefix: 'fas',\n iconName: 'tshirt',\n icon: [640, 512, [], \"f553\", \"M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [], \"f1e4\", \"M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [], \"f26c\", \"M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z\"]\n};\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [640, 512, [], \"f5ca\", \"M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z\"]\n};\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faUndo = {\n prefix: 'fas',\n iconName: 'undo',\n icon: [512, 512, [], \"f0e2\", \"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z\"]\n};\nvar faUndoAlt = {\n prefix: 'fas',\n iconName: 'undo-alt',\n icon: [512, 512, [], \"f2ea\", \"M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z\"]\n};\nvar faUniversity = {\n prefix: 'fas',\n iconName: 'university',\n icon: [512, 512, [], \"f19c\", \"M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z\"]\n};\nvar faUnlink = {\n prefix: 'fas',\n iconName: 'unlink',\n icon: [512, 512, [], \"f127\", \"M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [], \"f09c\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faUnlockAlt = {\n prefix: 'fas',\n iconName: 'unlock-alt',\n icon: [448, 512, [], \"f13e\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\"]\n};\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [], \"f007\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserAlt = {\n prefix: 'fas',\n iconName: 'user-alt',\n icon: [512, 512, [], \"f406\", \"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z\"]\n};\nvar faUserAltSlash = {\n prefix: 'fas',\n iconName: 'user-alt-slash',\n icon: [640, 512, [], \"f4fa\", \"M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z\"]\n};\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z\"]\n};\nvar faUserCircle = {\n prefix: 'fas',\n iconName: 'user-circle',\n icon: [496, 512, [], \"f2bd\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z\"]\n};\nvar faUserCog = {\n prefix: 'fas',\n iconName: 'user-cog',\n icon: [640, 512, [], \"f4fe\", \"M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z\"]\n};\nvar faUserEdit = {\n prefix: 'fas',\n iconName: 'user-edit',\n icon: [640, 512, [], \"f4ff\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z\"]\n};\nvar faUserFriends = {\n prefix: 'fas',\n iconName: 'user-friends',\n icon: [640, 512, [], \"f500\", \"M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z\"]\n};\nvar faUserMd = {\n prefix: 'fas',\n iconName: 'user-md',\n icon: [448, 512, [], \"f0f0\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [], \"f504\", \"M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [], \"f21b\", \"M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z\"]\n};\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z\"]\n};\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z\"]\n};\nvar faUserTimes = {\n prefix: 'fas',\n iconName: 'user-times',\n icon: [640, 512, [], \"f235\", \"M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersCog = {\n prefix: 'fas',\n iconName: 'users-cog',\n icon: [640, 512, [], \"f509\", \"M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z\"]\n};\nvar faUtensilSpoon = {\n prefix: 'fas',\n iconName: 'utensil-spoon',\n icon: [512, 512, [], \"f2e5\", \"M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z\"]\n};\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [416, 512, [], \"f2e7\", \"M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z\"]\n};\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [512, 512, [], \"f5cb\", \"M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z\"]\n};\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [288, 512, [], \"f221\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [512, 512, [], \"f226\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [576, 512, [], \"f228\", \"M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z\"]\n};\nvar faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [480, 512, [], \"f492\", \"M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z\"]\n};\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [640, 512, [], \"f493\", \"M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z\"]\n};\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [], \"f03d\", \"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z\"]\n};\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z\"]\n};\nvar faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z\"]\n};\nvar faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z\"]\n};\nvar faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z\"]\n};\nvar faVolleyballBall = {\n prefix: 'fas',\n iconName: 'volleyball-ball',\n icon: [512, 512, [], \"f45f\", \"M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z\"]\n};\nvar faVolumeDown = {\n prefix: 'fas',\n iconName: 'volume-down',\n icon: [384, 512, [], \"f027\", \"M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z\"]\n};\nvar faVolumeMute = {\n prefix: 'fas',\n iconName: 'volume-mute',\n icon: [512, 512, [], \"f6a9\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z\"]\n};\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [256, 512, [], \"f026\", \"M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z\"]\n};\nvar faVolumeUp = {\n prefix: 'fas',\n iconName: 'volume-up',\n icon: [576, 512, [], \"f028\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z\"]\n};\nvar faVoteYea = {\n prefix: 'fas',\n iconName: 'vote-yea',\n icon: [640, 512, [], \"f772\", \"M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z\"]\n};\nvar faWalking = {\n prefix: 'fas',\n iconName: 'walking',\n icon: [320, 512, [], \"f554\", \"M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z\"]\n};\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z\"]\n};\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z\"]\n};\nvar faWeight = {\n prefix: 'fas',\n iconName: 'weight',\n icon: [512, 512, [], \"f496\", \"M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z\"]\n};\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [], \"f1eb\", \"M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z\"]\n};\nvar faWindowClose = {\n prefix: 'fas',\n iconName: 'window-close',\n icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z\"]\n};\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [], \"f2d1\", \"M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z\"]\n};\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [288, 512, [], \"f4e3\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z\"]\n};\nvar faWineGlassAlt = {\n prefix: 'fas',\n iconName: 'wine-glass-alt',\n icon: [288, 512, [], \"f5ce\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [576, 512, [], \"f159\", \"M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z\"]\n};\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [], \"f0ad\", \"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [640, 512, [], \"f497\", \"M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [384, 512, [], \"f157\", \"M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [496, 512, [], \"f6ad\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar _iconsCache = {\n faAd: faAd,\n faAddressBook: faAddressBook,\n faAddressCard: faAddressCard,\n faAdjust: faAdjust,\n faAirFreshener: faAirFreshener,\n faAlignCenter: faAlignCenter,\n faAlignJustify: faAlignJustify,\n faAlignLeft: faAlignLeft,\n faAlignRight: faAlignRight,\n faAllergies: faAllergies,\n faAmbulance: faAmbulance,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAnchor: faAnchor,\n faAngleDoubleDown: faAngleDoubleDown,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faAngleDoubleRight: faAngleDoubleRight,\n faAngleDoubleUp: faAngleDoubleUp,\n faAngleDown: faAngleDown,\n faAngleLeft: faAngleLeft,\n faAngleRight: faAngleRight,\n faAngleUp: faAngleUp,\n faAngry: faAngry,\n faAnkh: faAnkh,\n faAppleAlt: faAppleAlt,\n faArchive: faArchive,\n faArchway: faArchway,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faArrowCircleDown: faArrowCircleDown,\n faArrowCircleLeft: faArrowCircleLeft,\n faArrowCircleRight: faArrowCircleRight,\n faArrowCircleUp: faArrowCircleUp,\n faArrowDown: faArrowDown,\n faArrowLeft: faArrowLeft,\n faArrowRight: faArrowRight,\n faArrowUp: faArrowUp,\n faArrowsAlt: faArrowsAlt,\n faArrowsAltH: faArrowsAltH,\n faArrowsAltV: faArrowsAltV,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faAsterisk: faAsterisk,\n faAt: faAt,\n faAtlas: faAtlas,\n faAtom: faAtom,\n faAudioDescription: faAudioDescription,\n faAward: faAward,\n faBaby: faBaby,\n faBabyCarriage: faBabyCarriage,\n faBackspace: faBackspace,\n faBackward: faBackward,\n faBacon: faBacon,\n faBacteria: faBacteria,\n faBacterium: faBacterium,\n faBahai: faBahai,\n faBalanceScale: faBalanceScale,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faBalanceScaleRight: faBalanceScaleRight,\n faBan: faBan,\n faBandAid: faBandAid,\n faBarcode: faBarcode,\n faBars: faBars,\n faBaseballBall: faBaseballBall,\n faBasketballBall: faBasketballBall,\n faBath: faBath,\n faBatteryEmpty: faBatteryEmpty,\n faBatteryFull: faBatteryFull,\n faBatteryHalf: faBatteryHalf,\n faBatteryQuarter: faBatteryQuarter,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBed: faBed,\n faBeer: faBeer,\n faBell: faBell,\n faBellSlash: faBellSlash,\n faBezierCurve: faBezierCurve,\n faBible: faBible,\n faBicycle: faBicycle,\n faBiking: faBiking,\n faBinoculars: faBinoculars,\n faBiohazard: faBiohazard,\n faBirthdayCake: faBirthdayCake,\n faBlender: faBlender,\n faBlenderPhone: faBlenderPhone,\n faBlind: faBlind,\n faBlog: faBlog,\n faBold: faBold,\n faBolt: faBolt,\n faBomb: faBomb,\n faBone: faBone,\n faBong: faBong,\n faBook: faBook,\n faBookDead: faBookDead,\n faBookMedical: faBookMedical,\n faBookOpen: faBookOpen,\n faBookReader: faBookReader,\n faBookmark: faBookmark,\n faBorderAll: faBorderAll,\n faBorderNone: faBorderNone,\n faBorderStyle: faBorderStyle,\n faBowlingBall: faBowlingBall,\n faBox: faBox,\n faBoxOpen: faBoxOpen,\n faBoxTissue: faBoxTissue,\n faBoxes: faBoxes,\n faBraille: faBraille,\n faBrain: faBrain,\n faBreadSlice: faBreadSlice,\n faBriefcase: faBriefcase,\n faBriefcaseMedical: faBriefcaseMedical,\n faBroadcastTower: faBroadcastTower,\n faBroom: faBroom,\n faBrush: faBrush,\n faBug: faBug,\n faBuilding: faBuilding,\n faBullhorn: faBullhorn,\n faBullseye: faBullseye,\n faBurn: faBurn,\n faBus: faBus,\n faBusAlt: faBusAlt,\n faBusinessTime: faBusinessTime,\n faCalculator: faCalculator,\n faCalendar: faCalendar,\n faCalendarAlt: faCalendarAlt,\n faCalendarCheck: faCalendarCheck,\n faCalendarDay: faCalendarDay,\n faCalendarMinus: faCalendarMinus,\n faCalendarPlus: faCalendarPlus,\n faCalendarTimes: faCalendarTimes,\n faCalendarWeek: faCalendarWeek,\n faCamera: faCamera,\n faCameraRetro: faCameraRetro,\n faCampground: faCampground,\n faCandyCane: faCandyCane,\n faCannabis: faCannabis,\n faCapsules: faCapsules,\n faCar: faCar,\n faCarAlt: faCarAlt,\n faCarBattery: faCarBattery,\n faCarCrash: faCarCrash,\n faCarSide: faCarSide,\n faCaravan: faCaravan,\n faCaretDown: faCaretDown,\n faCaretLeft: faCaretLeft,\n faCaretRight: faCaretRight,\n faCaretSquareDown: faCaretSquareDown,\n faCaretSquareLeft: faCaretSquareLeft,\n faCaretSquareRight: faCaretSquareRight,\n faCaretSquareUp: faCaretSquareUp,\n faCaretUp: faCaretUp,\n faCarrot: faCarrot,\n faCartArrowDown: faCartArrowDown,\n faCartPlus: faCartPlus,\n faCashRegister: faCashRegister,\n faCat: faCat,\n faCertificate: faCertificate,\n faChair: faChair,\n faChalkboard: faChalkboard,\n faChalkboardTeacher: faChalkboardTeacher,\n faChargingStation: faChargingStation,\n faChartArea: faChartArea,\n faChartBar: faChartBar,\n faChartLine: faChartLine,\n faChartPie: faChartPie,\n faCheck: faCheck,\n faCheckCircle: faCheckCircle,\n faCheckDouble: faCheckDouble,\n faCheckSquare: faCheckSquare,\n faCheese: faCheese,\n faChess: faChess,\n faChessBishop: faChessBishop,\n faChessBoard: faChessBoard,\n faChessKing: faChessKing,\n faChessKnight: faChessKnight,\n faChessPawn: faChessPawn,\n faChessQueen: faChessQueen,\n faChessRook: faChessRook,\n faChevronCircleDown: faChevronCircleDown,\n faChevronCircleLeft: faChevronCircleLeft,\n faChevronCircleRight: faChevronCircleRight,\n faChevronCircleUp: faChevronCircleUp,\n faChevronDown: faChevronDown,\n faChevronLeft: faChevronLeft,\n faChevronRight: faChevronRight,\n faChevronUp: faChevronUp,\n faChild: faChild,\n faChurch: faChurch,\n faCircle: faCircle,\n faCircleNotch: faCircleNotch,\n faCity: faCity,\n faClinicMedical: faClinicMedical,\n faClipboard: faClipboard,\n faClipboardCheck: faClipboardCheck,\n faClipboardList: faClipboardList,\n faClock: faClock,\n faClone: faClone,\n faClosedCaptioning: faClosedCaptioning,\n faCloud: faCloud,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faCloudMeatball: faCloudMeatball,\n faCloudMoon: faCloudMoon,\n faCloudMoonRain: faCloudMoonRain,\n faCloudRain: faCloudRain,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faCloudSun: faCloudSun,\n faCloudSunRain: faCloudSunRain,\n faCloudUploadAlt: faCloudUploadAlt,\n faCocktail: faCocktail,\n faCode: faCode,\n faCodeBranch: faCodeBranch,\n faCoffee: faCoffee,\n faCog: faCog,\n faCogs: faCogs,\n faCoins: faCoins,\n faColumns: faColumns,\n faComment: faComment,\n faCommentAlt: faCommentAlt,\n faCommentDollar: faCommentDollar,\n faCommentDots: faCommentDots,\n faCommentMedical: faCommentMedical,\n faCommentSlash: faCommentSlash,\n faComments: faComments,\n faCommentsDollar: faCommentsDollar,\n faCompactDisc: faCompactDisc,\n faCompass: faCompass,\n faCompress: faCompress,\n faCompressAlt: faCompressAlt,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faConciergeBell: faConciergeBell,\n faCookie: faCookie,\n faCookieBite: faCookieBite,\n faCopy: faCopy,\n faCopyright: faCopyright,\n faCouch: faCouch,\n faCreditCard: faCreditCard,\n faCrop: faCrop,\n faCropAlt: faCropAlt,\n faCross: faCross,\n faCrosshairs: faCrosshairs,\n faCrow: faCrow,\n faCrown: faCrown,\n faCrutch: faCrutch,\n faCube: faCube,\n faCubes: faCubes,\n faCut: faCut,\n faDatabase: faDatabase,\n faDeaf: faDeaf,\n faDemocrat: faDemocrat,\n faDesktop: faDesktop,\n faDharmachakra: faDharmachakra,\n faDiagnoses: faDiagnoses,\n faDice: faDice,\n faDiceD20: faDiceD20,\n faDiceD6: faDiceD6,\n faDiceFive: faDiceFive,\n faDiceFour: faDiceFour,\n faDiceOne: faDiceOne,\n faDiceSix: faDiceSix,\n faDiceThree: faDiceThree,\n faDiceTwo: faDiceTwo,\n faDigitalTachograph: faDigitalTachograph,\n faDirections: faDirections,\n faDisease: faDisease,\n faDivide: faDivide,\n faDizzy: faDizzy,\n faDna: faDna,\n faDog: faDog,\n faDollarSign: faDollarSign,\n faDolly: faDolly,\n faDollyFlatbed: faDollyFlatbed,\n faDonate: faDonate,\n faDoorClosed: faDoorClosed,\n faDoorOpen: faDoorOpen,\n faDotCircle: faDotCircle,\n faDove: faDove,\n faDownload: faDownload,\n faDraftingCompass: faDraftingCompass,\n faDragon: faDragon,\n faDrawPolygon: faDrawPolygon,\n faDrum: faDrum,\n faDrumSteelpan: faDrumSteelpan,\n faDrumstickBite: faDrumstickBite,\n faDumbbell: faDumbbell,\n faDumpster: faDumpster,\n faDumpsterFire: faDumpsterFire,\n faDungeon: faDungeon,\n faEdit: faEdit,\n faEgg: faEgg,\n faEject: faEject,\n faEllipsisH: faEllipsisH,\n faEllipsisV: faEllipsisV,\n faEnvelope: faEnvelope,\n faEnvelopeOpen: faEnvelopeOpen,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faEnvelopeSquare: faEnvelopeSquare,\n faEquals: faEquals,\n faEraser: faEraser,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faExchangeAlt: faExchangeAlt,\n faExclamation: faExclamation,\n faExclamationCircle: faExclamationCircle,\n faExclamationTriangle: faExclamationTriangle,\n faExpand: faExpand,\n faExpandAlt: faExpandAlt,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faExternalLinkAlt: faExternalLinkAlt,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faEye: faEye,\n faEyeDropper: faEyeDropper,\n faEyeSlash: faEyeSlash,\n faFan: faFan,\n faFastBackward: faFastBackward,\n faFastForward: faFastForward,\n faFaucet: faFaucet,\n faFax: faFax,\n faFeather: faFeather,\n faFeatherAlt: faFeatherAlt,\n faFemale: faFemale,\n faFighterJet: faFighterJet,\n faFile: faFile,\n faFileAlt: faFileAlt,\n faFileArchive: faFileArchive,\n faFileAudio: faFileAudio,\n faFileCode: faFileCode,\n faFileContract: faFileContract,\n faFileCsv: faFileCsv,\n faFileDownload: faFileDownload,\n faFileExcel: faFileExcel,\n faFileExport: faFileExport,\n faFileImage: faFileImage,\n faFileImport: faFileImport,\n faFileInvoice: faFileInvoice,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faFileMedical: faFileMedical,\n faFileMedicalAlt: faFileMedicalAlt,\n faFilePdf: faFilePdf,\n faFilePowerpoint: faFilePowerpoint,\n faFilePrescription: faFilePrescription,\n faFileSignature: faFileSignature,\n faFileUpload: faFileUpload,\n faFileVideo: faFileVideo,\n faFileWord: faFileWord,\n faFill: faFill,\n faFillDrip: faFillDrip,\n faFilm: faFilm,\n faFilter: faFilter,\n faFingerprint: faFingerprint,\n faFire: faFire,\n faFireAlt: faFireAlt,\n faFireExtinguisher: faFireExtinguisher,\n faFirstAid: faFirstAid,\n faFish: faFish,\n faFistRaised: faFistRaised,\n faFlag: faFlag,\n faFlagCheckered: faFlagCheckered,\n faFlagUsa: faFlagUsa,\n faFlask: faFlask,\n faFlushed: faFlushed,\n faFolder: faFolder,\n faFolderMinus: faFolderMinus,\n faFolderOpen: faFolderOpen,\n faFolderPlus: faFolderPlus,\n faFont: faFont,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFootballBall: faFootballBall,\n faForward: faForward,\n faFrog: faFrog,\n faFrown: faFrown,\n faFrownOpen: faFrownOpen,\n faFunnelDollar: faFunnelDollar,\n faFutbol: faFutbol,\n faGamepad: faGamepad,\n faGasPump: faGasPump,\n faGavel: faGavel,\n faGem: faGem,\n faGenderless: faGenderless,\n faGhost: faGhost,\n faGift: faGift,\n faGifts: faGifts,\n faGlassCheers: faGlassCheers,\n faGlassMartini: faGlassMartini,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faGlassWhiskey: faGlassWhiskey,\n faGlasses: faGlasses,\n faGlobe: faGlobe,\n faGlobeAfrica: faGlobeAfrica,\n faGlobeAmericas: faGlobeAmericas,\n faGlobeAsia: faGlobeAsia,\n faGlobeEurope: faGlobeEurope,\n faGolfBall: faGolfBall,\n faGopuram: faGopuram,\n faGraduationCap: faGraduationCap,\n faGreaterThan: faGreaterThan,\n faGreaterThanEqual: faGreaterThanEqual,\n faGrimace: faGrimace,\n faGrin: faGrin,\n faGrinAlt: faGrinAlt,\n faGrinBeam: faGrinBeam,\n faGrinBeamSweat: faGrinBeamSweat,\n faGrinHearts: faGrinHearts,\n faGrinSquint: faGrinSquint,\n faGrinSquintTears: faGrinSquintTears,\n faGrinStars: faGrinStars,\n faGrinTears: faGrinTears,\n faGrinTongue: faGrinTongue,\n faGrinTongueSquint: faGrinTongueSquint,\n faGrinTongueWink: faGrinTongueWink,\n faGrinWink: faGrinWink,\n faGripHorizontal: faGripHorizontal,\n faGripLines: faGripLines,\n faGripLinesVertical: faGripLinesVertical,\n faGripVertical: faGripVertical,\n faGuitar: faGuitar,\n faHSquare: faHSquare,\n faHamburger: faHamburger,\n faHammer: faHammer,\n faHamsa: faHamsa,\n faHandHolding: faHandHolding,\n faHandHoldingHeart: faHandHoldingHeart,\n faHandHoldingMedical: faHandHoldingMedical,\n faHandHoldingUsd: faHandHoldingUsd,\n faHandHoldingWater: faHandHoldingWater,\n faHandLizard: faHandLizard,\n faHandMiddleFinger: faHandMiddleFinger,\n faHandPaper: faHandPaper,\n faHandPeace: faHandPeace,\n faHandPointDown: faHandPointDown,\n faHandPointLeft: faHandPointLeft,\n faHandPointRight: faHandPointRight,\n faHandPointUp: faHandPointUp,\n faHandPointer: faHandPointer,\n faHandRock: faHandRock,\n faHandScissors: faHandScissors,\n faHandSparkles: faHandSparkles,\n faHandSpock: faHandSpock,\n faHands: faHands,\n faHandsHelping: faHandsHelping,\n faHandsWash: faHandsWash,\n faHandshake: faHandshake,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faHandshakeSlash: faHandshakeSlash,\n faHanukiah: faHanukiah,\n faHardHat: faHardHat,\n faHashtag: faHashtag,\n faHatCowboy: faHatCowboy,\n faHatCowboySide: faHatCowboySide,\n faHatWizard: faHatWizard,\n faHdd: faHdd,\n faHeadSideCough: faHeadSideCough,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faHeadSideMask: faHeadSideMask,\n faHeadSideVirus: faHeadSideVirus,\n faHeading: faHeading,\n faHeadphones: faHeadphones,\n faHeadphonesAlt: faHeadphonesAlt,\n faHeadset: faHeadset,\n faHeart: faHeart,\n faHeartBroken: faHeartBroken,\n faHeartbeat: faHeartbeat,\n faHelicopter: faHelicopter,\n faHighlighter: faHighlighter,\n faHiking: faHiking,\n faHippo: faHippo,\n faHistory: faHistory,\n faHockeyPuck: faHockeyPuck,\n faHollyBerry: faHollyBerry,\n faHome: faHome,\n faHorse: faHorse,\n faHorseHead: faHorseHead,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalSymbol: faHospitalSymbol,\n faHospitalUser: faHospitalUser,\n faHotTub: faHotTub,\n faHotdog: faHotdog,\n faHotel: faHotel,\n faHourglass: faHourglass,\n faHourglassEnd: faHourglassEnd,\n faHourglassHalf: faHourglassHalf,\n faHourglassStart: faHourglassStart,\n faHouseDamage: faHouseDamage,\n faHouseUser: faHouseUser,\n faHryvnia: faHryvnia,\n faICursor: faICursor,\n faIceCream: faIceCream,\n faIcicles: faIcicles,\n faIcons: faIcons,\n faIdBadge: faIdBadge,\n faIdCard: faIdCard,\n faIdCardAlt: faIdCardAlt,\n faIgloo: faIgloo,\n faImage: faImage,\n faImages: faImages,\n faInbox: faInbox,\n faIndent: faIndent,\n faIndustry: faIndustry,\n faInfinity: faInfinity,\n faInfo: faInfo,\n faInfoCircle: faInfoCircle,\n faItalic: faItalic,\n faJedi: faJedi,\n faJoint: faJoint,\n faJournalWhills: faJournalWhills,\n faKaaba: faKaaba,\n faKey: faKey,\n faKeyboard: faKeyboard,\n faKhanda: faKhanda,\n faKiss: faKiss,\n faKissBeam: faKissBeam,\n faKissWinkHeart: faKissWinkHeart,\n faKiwiBird: faKiwiBird,\n faLandmark: faLandmark,\n faLanguage: faLanguage,\n faLaptop: faLaptop,\n faLaptopCode: faLaptopCode,\n faLaptopHouse: faLaptopHouse,\n faLaptopMedical: faLaptopMedical,\n faLaugh: faLaugh,\n faLaughBeam: faLaughBeam,\n faLaughSquint: faLaughSquint,\n faLaughWink: faLaughWink,\n faLayerGroup: faLayerGroup,\n faLeaf: faLeaf,\n faLemon: faLemon,\n faLessThan: faLessThan,\n faLessThanEqual: faLessThanEqual,\n faLevelDownAlt: faLevelDownAlt,\n faLevelUpAlt: faLevelUpAlt,\n faLifeRing: faLifeRing,\n faLightbulb: faLightbulb,\n faLink: faLink,\n faLiraSign: faLiraSign,\n faList: faList,\n faListAlt: faListAlt,\n faListOl: faListOl,\n faListUl: faListUl,\n faLocationArrow: faLocationArrow,\n faLock: faLock,\n faLockOpen: faLockOpen,\n faLongArrowAltDown: faLongArrowAltDown,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faLongArrowAltRight: faLongArrowAltRight,\n faLongArrowAltUp: faLongArrowAltUp,\n faLowVision: faLowVision,\n faLuggageCart: faLuggageCart,\n faLungs: faLungs,\n faLungsVirus: faLungsVirus,\n faMagic: faMagic,\n faMagnet: faMagnet,\n faMailBulk: faMailBulk,\n faMale: faMale,\n faMap: faMap,\n faMapMarked: faMapMarked,\n faMapMarkedAlt: faMapMarkedAlt,\n faMapMarker: faMapMarker,\n faMapMarkerAlt: faMapMarkerAlt,\n faMapPin: faMapPin,\n faMapSigns: faMapSigns,\n faMarker: faMarker,\n faMars: faMars,\n faMarsDouble: faMarsDouble,\n faMarsStroke: faMarsStroke,\n faMarsStrokeH: faMarsStrokeH,\n faMarsStrokeV: faMarsStrokeV,\n faMask: faMask,\n faMedal: faMedal,\n faMedkit: faMedkit,\n faMeh: faMeh,\n faMehBlank: faMehBlank,\n faMehRollingEyes: faMehRollingEyes,\n faMemory: faMemory,\n faMenorah: faMenorah,\n faMercury: faMercury,\n faMeteor: faMeteor,\n faMicrochip: faMicrochip,\n faMicrophone: faMicrophone,\n faMicrophoneAlt: faMicrophoneAlt,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faMicrophoneSlash: faMicrophoneSlash,\n faMicroscope: faMicroscope,\n faMinus: faMinus,\n faMinusCircle: faMinusCircle,\n faMinusSquare: faMinusSquare,\n faMitten: faMitten,\n faMobile: faMobile,\n faMobileAlt: faMobileAlt,\n faMoneyBill: faMoneyBill,\n faMoneyBillAlt: faMoneyBillAlt,\n faMoneyBillWave: faMoneyBillWave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faMoneyCheck: faMoneyCheck,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faMonument: faMonument,\n faMoon: faMoon,\n faMortarPestle: faMortarPestle,\n faMosque: faMosque,\n faMotorcycle: faMotorcycle,\n faMountain: faMountain,\n faMouse: faMouse,\n faMousePointer: faMousePointer,\n faMugHot: faMugHot,\n faMusic: faMusic,\n faNetworkWired: faNetworkWired,\n faNeuter: faNeuter,\n faNewspaper: faNewspaper,\n faNotEqual: faNotEqual,\n faNotesMedical: faNotesMedical,\n faObjectGroup: faObjectGroup,\n faObjectUngroup: faObjectUngroup,\n faOilCan: faOilCan,\n faOm: faOm,\n faOtter: faOtter,\n faOutdent: faOutdent,\n faPager: faPager,\n faPaintBrush: faPaintBrush,\n faPaintRoller: faPaintRoller,\n faPalette: faPalette,\n faPallet: faPallet,\n faPaperPlane: faPaperPlane,\n faPaperclip: faPaperclip,\n faParachuteBox: faParachuteBox,\n faParagraph: faParagraph,\n faParking: faParking,\n faPassport: faPassport,\n faPastafarianism: faPastafarianism,\n faPaste: faPaste,\n faPause: faPause,\n faPauseCircle: faPauseCircle,\n faPaw: faPaw,\n faPeace: faPeace,\n faPen: faPen,\n faPenAlt: faPenAlt,\n faPenFancy: faPenFancy,\n faPenNib: faPenNib,\n faPenSquare: faPenSquare,\n faPencilAlt: faPencilAlt,\n faPencilRuler: faPencilRuler,\n faPeopleArrows: faPeopleArrows,\n faPeopleCarry: faPeopleCarry,\n faPepperHot: faPepperHot,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faPersonBooth: faPersonBooth,\n faPhone: faPhone,\n faPhoneAlt: faPhoneAlt,\n faPhoneSlash: faPhoneSlash,\n faPhoneSquare: faPhoneSquare,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faPhoneVolume: faPhoneVolume,\n faPhotoVideo: faPhotoVideo,\n faPiggyBank: faPiggyBank,\n faPills: faPills,\n faPizzaSlice: faPizzaSlice,\n faPlaceOfWorship: faPlaceOfWorship,\n faPlane: faPlane,\n faPlaneArrival: faPlaneArrival,\n faPlaneDeparture: faPlaneDeparture,\n faPlaneSlash: faPlaneSlash,\n faPlay: faPlay,\n faPlayCircle: faPlayCircle,\n faPlug: faPlug,\n faPlus: faPlus,\n faPlusCircle: faPlusCircle,\n faPlusSquare: faPlusSquare,\n faPodcast: faPodcast,\n faPoll: faPoll,\n faPollH: faPollH,\n faPoo: faPoo,\n faPooStorm: faPooStorm,\n faPoop: faPoop,\n faPortrait: faPortrait,\n faPoundSign: faPoundSign,\n faPowerOff: faPowerOff,\n faPray: faPray,\n faPrayingHands: faPrayingHands,\n faPrescription: faPrescription,\n faPrescriptionBottle: faPrescriptionBottle,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faPrint: faPrint,\n faProcedures: faProcedures,\n faProjectDiagram: faProjectDiagram,\n faPumpMedical: faPumpMedical,\n faPumpSoap: faPumpSoap,\n faPuzzlePiece: faPuzzlePiece,\n faQrcode: faQrcode,\n faQuestion: faQuestion,\n faQuestionCircle: faQuestionCircle,\n faQuidditch: faQuidditch,\n faQuoteLeft: faQuoteLeft,\n faQuoteRight: faQuoteRight,\n faQuran: faQuran,\n faRadiation: faRadiation,\n faRadiationAlt: faRadiationAlt,\n faRainbow: faRainbow,\n faRandom: faRandom,\n faReceipt: faReceipt,\n faRecordVinyl: faRecordVinyl,\n faRecycle: faRecycle,\n faRedo: faRedo,\n faRedoAlt: faRedoAlt,\n faRegistered: faRegistered,\n faRemoveFormat: faRemoveFormat,\n faReply: faReply,\n faReplyAll: faReplyAll,\n faRepublican: faRepublican,\n faRestroom: faRestroom,\n faRetweet: faRetweet,\n faRibbon: faRibbon,\n faRing: faRing,\n faRoad: faRoad,\n faRobot: faRobot,\n faRocket: faRocket,\n faRoute: faRoute,\n faRss: faRss,\n faRssSquare: faRssSquare,\n faRubleSign: faRubleSign,\n faRuler: faRuler,\n faRulerCombined: faRulerCombined,\n faRulerHorizontal: faRulerHorizontal,\n faRulerVertical: faRulerVertical,\n faRunning: faRunning,\n faRupeeSign: faRupeeSign,\n faSadCry: faSadCry,\n faSadTear: faSadTear,\n faSatellite: faSatellite,\n faSatelliteDish: faSatelliteDish,\n faSave: faSave,\n faSchool: faSchool,\n faScrewdriver: faScrewdriver,\n faScroll: faScroll,\n faSdCard: faSdCard,\n faSearch: faSearch,\n faSearchDollar: faSearchDollar,\n faSearchLocation: faSearchLocation,\n faSearchMinus: faSearchMinus,\n faSearchPlus: faSearchPlus,\n faSeedling: faSeedling,\n faServer: faServer,\n faShapes: faShapes,\n faShare: faShare,\n faShareAlt: faShareAlt,\n faShareAltSquare: faShareAltSquare,\n faShareSquare: faShareSquare,\n faShekelSign: faShekelSign,\n faShieldAlt: faShieldAlt,\n faShieldVirus: faShieldVirus,\n faShip: faShip,\n faShippingFast: faShippingFast,\n faShoePrints: faShoePrints,\n faShoppingBag: faShoppingBag,\n faShoppingBasket: faShoppingBasket,\n faShoppingCart: faShoppingCart,\n faShower: faShower,\n faShuttleVan: faShuttleVan,\n faSign: faSign,\n faSignInAlt: faSignInAlt,\n faSignLanguage: faSignLanguage,\n faSignOutAlt: faSignOutAlt,\n faSignal: faSignal,\n faSignature: faSignature,\n faSimCard: faSimCard,\n faSink: faSink,\n faSitemap: faSitemap,\n faSkating: faSkating,\n faSkiing: faSkiing,\n faSkiingNordic: faSkiingNordic,\n faSkull: faSkull,\n faSkullCrossbones: faSkullCrossbones,\n faSlash: faSlash,\n faSleigh: faSleigh,\n faSlidersH: faSlidersH,\n faSmile: faSmile,\n faSmileBeam: faSmileBeam,\n faSmileWink: faSmileWink,\n faSmog: faSmog,\n faSmoking: faSmoking,\n faSmokingBan: faSmokingBan,\n faSms: faSms,\n faSnowboarding: faSnowboarding,\n faSnowflake: faSnowflake,\n faSnowman: faSnowman,\n faSnowplow: faSnowplow,\n faSoap: faSoap,\n faSocks: faSocks,\n faSolarPanel: faSolarPanel,\n faSort: faSort,\n faSortAlphaDown: faSortAlphaDown,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faSortAlphaUp: faSortAlphaUp,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faSortAmountDown: faSortAmountDown,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faSortAmountUp: faSortAmountUp,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faSortDown: faSortDown,\n faSortNumericDown: faSortNumericDown,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faSortNumericUp: faSortNumericUp,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faSortUp: faSortUp,\n faSpa: faSpa,\n faSpaceShuttle: faSpaceShuttle,\n faSpellCheck: faSpellCheck,\n faSpider: faSpider,\n faSpinner: faSpinner,\n faSplotch: faSplotch,\n faSprayCan: faSprayCan,\n faSquare: faSquare,\n faSquareFull: faSquareFull,\n faSquareRootAlt: faSquareRootAlt,\n faStamp: faStamp,\n faStar: faStar,\n faStarAndCrescent: faStarAndCrescent,\n faStarHalf: faStarHalf,\n faStarHalfAlt: faStarHalfAlt,\n faStarOfDavid: faStarOfDavid,\n faStarOfLife: faStarOfLife,\n faStepBackward: faStepBackward,\n faStepForward: faStepForward,\n faStethoscope: faStethoscope,\n faStickyNote: faStickyNote,\n faStop: faStop,\n faStopCircle: faStopCircle,\n faStopwatch: faStopwatch,\n faStopwatch20: faStopwatch20,\n faStore: faStore,\n faStoreAlt: faStoreAlt,\n faStoreAltSlash: faStoreAltSlash,\n faStoreSlash: faStoreSlash,\n faStream: faStream,\n faStreetView: faStreetView,\n faStrikethrough: faStrikethrough,\n faStroopwafel: faStroopwafel,\n faSubscript: faSubscript,\n faSubway: faSubway,\n faSuitcase: faSuitcase,\n faSuitcaseRolling: faSuitcaseRolling,\n faSun: faSun,\n faSuperscript: faSuperscript,\n faSurprise: faSurprise,\n faSwatchbook: faSwatchbook,\n faSwimmer: faSwimmer,\n faSwimmingPool: faSwimmingPool,\n faSynagogue: faSynagogue,\n faSync: faSync,\n faSyncAlt: faSyncAlt,\n faSyringe: faSyringe,\n faTable: faTable,\n faTableTennis: faTableTennis,\n faTablet: faTablet,\n faTabletAlt: faTabletAlt,\n faTablets: faTablets,\n faTachometerAlt: faTachometerAlt,\n faTag: faTag,\n faTags: faTags,\n faTape: faTape,\n faTasks: faTasks,\n faTaxi: faTaxi,\n faTeeth: faTeeth,\n faTeethOpen: faTeethOpen,\n faTemperatureHigh: faTemperatureHigh,\n faTemperatureLow: faTemperatureLow,\n faTenge: faTenge,\n faTerminal: faTerminal,\n faTextHeight: faTextHeight,\n faTextWidth: faTextWidth,\n faTh: faTh,\n faThLarge: faThLarge,\n faThList: faThList,\n faTheaterMasks: faTheaterMasks,\n faThermometer: faThermometer,\n faThermometerEmpty: faThermometerEmpty,\n faThermometerFull: faThermometerFull,\n faThermometerHalf: faThermometerHalf,\n faThermometerQuarter: faThermometerQuarter,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faThumbsDown: faThumbsDown,\n faThumbsUp: faThumbsUp,\n faThumbtack: faThumbtack,\n faTicketAlt: faTicketAlt,\n faTimes: faTimes,\n faTimesCircle: faTimesCircle,\n faTint: faTint,\n faTintSlash: faTintSlash,\n faTired: faTired,\n faToggleOff: faToggleOff,\n faToggleOn: faToggleOn,\n faToilet: faToilet,\n faToiletPaper: faToiletPaper,\n faToiletPaperSlash: faToiletPaperSlash,\n faToolbox: faToolbox,\n faTools: faTools,\n faTooth: faTooth,\n faTorah: faTorah,\n faToriiGate: faToriiGate,\n faTractor: faTractor,\n faTrademark: faTrademark,\n faTrafficLight: faTrafficLight,\n faTrailer: faTrailer,\n faTrain: faTrain,\n faTram: faTram,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faTrash: faTrash,\n faTrashAlt: faTrashAlt,\n faTrashRestore: faTrashRestore,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faTree: faTree,\n faTrophy: faTrophy,\n faTruck: faTruck,\n faTruckLoading: faTruckLoading,\n faTruckMonster: faTruckMonster,\n faTruckMoving: faTruckMoving,\n faTruckPickup: faTruckPickup,\n faTshirt: faTshirt,\n faTty: faTty,\n faTv: faTv,\n faUmbrella: faUmbrella,\n faUmbrellaBeach: faUmbrellaBeach,\n faUnderline: faUnderline,\n faUndo: faUndo,\n faUndoAlt: faUndoAlt,\n faUniversalAccess: faUniversalAccess,\n faUniversity: faUniversity,\n faUnlink: faUnlink,\n faUnlock: faUnlock,\n faUnlockAlt: faUnlockAlt,\n faUpload: faUpload,\n faUser: faUser,\n faUserAlt: faUserAlt,\n faUserAltSlash: faUserAltSlash,\n faUserAstronaut: faUserAstronaut,\n faUserCheck: faUserCheck,\n faUserCircle: faUserCircle,\n faUserClock: faUserClock,\n faUserCog: faUserCog,\n faUserEdit: faUserEdit,\n faUserFriends: faUserFriends,\n faUserGraduate: faUserGraduate,\n faUserInjured: faUserInjured,\n faUserLock: faUserLock,\n faUserMd: faUserMd,\n faUserMinus: faUserMinus,\n faUserNinja: faUserNinja,\n faUserNurse: faUserNurse,\n faUserPlus: faUserPlus,\n faUserSecret: faUserSecret,\n faUserShield: faUserShield,\n faUserSlash: faUserSlash,\n faUserTag: faUserTag,\n faUserTie: faUserTie,\n faUserTimes: faUserTimes,\n faUsers: faUsers,\n faUsersCog: faUsersCog,\n faUsersSlash: faUsersSlash,\n faUtensilSpoon: faUtensilSpoon,\n faUtensils: faUtensils,\n faVectorSquare: faVectorSquare,\n faVenus: faVenus,\n faVenusDouble: faVenusDouble,\n faVenusMars: faVenusMars,\n faVest: faVest,\n faVestPatches: faVestPatches,\n faVial: faVial,\n faVials: faVials,\n faVideo: faVideo,\n faVideoSlash: faVideoSlash,\n faVihara: faVihara,\n faVirus: faVirus,\n faVirusSlash: faVirusSlash,\n faViruses: faViruses,\n faVoicemail: faVoicemail,\n faVolleyballBall: faVolleyballBall,\n faVolumeDown: faVolumeDown,\n faVolumeMute: faVolumeMute,\n faVolumeOff: faVolumeOff,\n faVolumeUp: faVolumeUp,\n faVoteYea: faVoteYea,\n faVrCardboard: faVrCardboard,\n faWalking: faWalking,\n faWallet: faWallet,\n faWarehouse: faWarehouse,\n faWater: faWater,\n faWaveSquare: faWaveSquare,\n faWeight: faWeight,\n faWeightHanging: faWeightHanging,\n faWheelchair: faWheelchair,\n faWifi: faWifi,\n faWind: faWind,\n faWindowClose: faWindowClose,\n faWindowMaximize: faWindowMaximize,\n faWindowMinimize: faWindowMinimize,\n faWindowRestore: faWindowRestore,\n faWineBottle: faWineBottle,\n faWineGlass: faWineGlass,\n faWineGlassAlt: faWineGlassAlt,\n faWonSign: faWonSign,\n faWrench: faWrench,\n faXRay: faXRay,\n faYenSign: faYenSign,\n faYinYang: faYinYang\n};\n\nexport { _iconsCache as fas, prefix, faAd, faAddressBook, faAddressCard, faAdjust, faAirFreshener, faAlignCenter, faAlignJustify, faAlignLeft, faAlignRight, faAllergies, faAmbulance, faAmericanSignLanguageInterpreting, faAnchor, faAngleDoubleDown, faAngleDoubleLeft, faAngleDoubleRight, faAngleDoubleUp, faAngleDown, faAngleLeft, faAngleRight, faAngleUp, faAngry, faAnkh, faAppleAlt, faArchive, faArchway, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faArrowCircleDown, faArrowCircleLeft, faArrowCircleRight, faArrowCircleUp, faArrowDown, faArrowLeft, faArrowRight, faArrowUp, faArrowsAlt, faArrowsAltH, faArrowsAltV, faAssistiveListeningSystems, faAsterisk, faAt, faAtlas, faAtom, faAudioDescription, faAward, faBaby, faBabyCarriage, faBackspace, faBackward, faBacon, faBacteria, faBacterium, faBahai, faBalanceScale, faBalanceScaleLeft, faBalanceScaleRight, faBan, faBandAid, faBarcode, faBars, faBaseballBall, faBasketballBall, faBath, faBatteryEmpty, faBatteryFull, faBatteryHalf, faBatteryQuarter, faBatteryThreeQuarters, faBed, faBeer, faBell, faBellSlash, faBezierCurve, faBible, faBicycle, faBiking, faBinoculars, faBiohazard, faBirthdayCake, faBlender, faBlenderPhone, faBlind, faBlog, faBold, faBolt, faBomb, faBone, faBong, faBook, faBookDead, faBookMedical, faBookOpen, faBookReader, faBookmark, faBorderAll, faBorderNone, faBorderStyle, faBowlingBall, faBox, faBoxOpen, faBoxTissue, faBoxes, faBraille, faBrain, faBreadSlice, faBriefcase, faBriefcaseMedical, faBroadcastTower, faBroom, faBrush, faBug, faBuilding, faBullhorn, faBullseye, faBurn, faBus, faBusAlt, faBusinessTime, faCalculator, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarDay, faCalendarMinus, faCalendarPlus, faCalendarTimes, faCalendarWeek, faCamera, faCameraRetro, faCampground, faCandyCane, faCannabis, faCapsules, faCar, faCarAlt, faCarBattery, faCarCrash, faCarSide, faCaravan, faCaretDown, faCaretLeft, faCaretRight, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faCaretUp, faCarrot, faCartArrowDown, faCartPlus, faCashRegister, faCat, faCertificate, faChair, faChalkboard, faChalkboardTeacher, faChargingStation, faChartArea, faChartBar, faChartLine, faChartPie, faCheck, faCheckCircle, faCheckDouble, faCheckSquare, faCheese, faChess, faChessBishop, faChessBoard, faChessKing, faChessKnight, faChessPawn, faChessQueen, faChessRook, faChevronCircleDown, faChevronCircleLeft, faChevronCircleRight, faChevronCircleUp, faChevronDown, faChevronLeft, faChevronRight, faChevronUp, faChild, faChurch, faCircle, faCircleNotch, faCity, faClinicMedical, faClipboard, faClipboardCheck, faClipboardList, faClock, faClone, faClosedCaptioning, faCloud, faCloudDownloadAlt, faCloudMeatball, faCloudMoon, faCloudMoonRain, faCloudRain, faCloudShowersHeavy, faCloudSun, faCloudSunRain, faCloudUploadAlt, faCocktail, faCode, faCodeBranch, faCoffee, faCog, faCogs, faCoins, faColumns, faComment, faCommentAlt, faCommentDollar, faCommentDots, faCommentMedical, faCommentSlash, faComments, faCommentsDollar, faCompactDisc, faCompass, faCompress, faCompressAlt, faCompressArrowsAlt, faConciergeBell, faCookie, faCookieBite, faCopy, faCopyright, faCouch, faCreditCard, faCrop, faCropAlt, faCross, faCrosshairs, faCrow, faCrown, faCrutch, faCube, faCubes, faCut, faDatabase, faDeaf, faDemocrat, faDesktop, faDharmachakra, faDiagnoses, faDice, faDiceD20, faDiceD6, faDiceFive, faDiceFour, faDiceOne, faDiceSix, faDiceThree, faDiceTwo, faDigitalTachograph, faDirections, faDisease, faDivide, faDizzy, faDna, faDog, faDollarSign, faDolly, faDollyFlatbed, faDonate, faDoorClosed, faDoorOpen, faDotCircle, faDove, faDownload, faDraftingCompass, faDragon, faDrawPolygon, faDrum, faDrumSteelpan, faDrumstickBite, faDumbbell, faDumpster, faDumpsterFire, faDungeon, faEdit, faEgg, faEject, faEllipsisH, faEllipsisV, faEnvelope, faEnvelopeOpen, faEnvelopeOpenText, faEnvelopeSquare, faEquals, faEraser, faEthernet, faEuroSign, faExchangeAlt, faExclamation, faExclamationCircle, faExclamationTriangle, faExpand, faExpandAlt, faExpandArrowsAlt, faExternalLinkAlt, faExternalLinkSquareAlt, faEye, faEyeDropper, faEyeSlash, faFan, faFastBackward, faFastForward, faFaucet, faFax, faFeather, faFeatherAlt, faFemale, faFighterJet, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCode, faFileContract, faFileCsv, faFileDownload, faFileExcel, faFileExport, faFileImage, faFileImport, faFileInvoice, faFileInvoiceDollar, faFileMedical, faFileMedicalAlt, faFilePdf, faFilePowerpoint, faFilePrescription, faFileSignature, faFileUpload, faFileVideo, faFileWord, faFill, faFillDrip, faFilm, faFilter, faFingerprint, faFire, faFireAlt, faFireExtinguisher, faFirstAid, faFish, faFistRaised, faFlag, faFlagCheckered, faFlagUsa, faFlask, faFlushed, faFolder, faFolderMinus, faFolderOpen, faFolderPlus, faFont, faFontAwesomeLogoFull, faFootballBall, faForward, faFrog, faFrown, faFrownOpen, faFunnelDollar, faFutbol, faGamepad, faGasPump, faGavel, faGem, faGenderless, faGhost, faGift, faGifts, faGlassCheers, faGlassMartini, faGlassMartiniAlt, faGlassWhiskey, faGlasses, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGolfBall, faGopuram, faGraduationCap, faGreaterThan, faGreaterThanEqual, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faGripHorizontal, faGripLines, faGripLinesVertical, faGripVertical, faGuitar, faHSquare, faHamburger, faHammer, faHamsa, faHandHolding, faHandHoldingHeart, faHandHoldingMedical, faHandHoldingUsd, faHandHoldingWater, faHandLizard, faHandMiddleFinger, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandRock, faHandScissors, faHandSparkles, faHandSpock, faHands, faHandsHelping, faHandsWash, faHandshake, faHandshakeAltSlash, faHandshakeSlash, faHanukiah, faHardHat, faHashtag, faHatCowboy, faHatCowboySide, faHatWizard, faHdd, faHeadSideCough, faHeadSideCoughSlash, faHeadSideMask, faHeadSideVirus, faHeading, faHeadphones, faHeadphonesAlt, faHeadset, faHeart, faHeartBroken, faHeartbeat, faHelicopter, faHighlighter, faHiking, faHippo, faHistory, faHockeyPuck, faHollyBerry, faHome, faHorse, faHorseHead, faHospital, faHospitalAlt, faHospitalSymbol, faHospitalUser, faHotTub, faHotdog, faHotel, faHourglass, faHourglassEnd, faHourglassHalf, faHourglassStart, faHouseDamage, faHouseUser, faHryvnia, faICursor, faIceCream, faIcicles, faIcons, faIdBadge, faIdCard, faIdCardAlt, faIgloo, faImage, faImages, faInbox, faIndent, faIndustry, faInfinity, faInfo, faInfoCircle, faItalic, faJedi, faJoint, faJournalWhills, faKaaba, faKey, faKeyboard, faKhanda, faKiss, faKissBeam, faKissWinkHeart, faKiwiBird, faLandmark, faLanguage, faLaptop, faLaptopCode, faLaptopHouse, faLaptopMedical, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLayerGroup, faLeaf, faLemon, faLessThan, faLessThanEqual, faLevelDownAlt, faLevelUpAlt, faLifeRing, faLightbulb, faLink, faLiraSign, faList, faListAlt, faListOl, faListUl, faLocationArrow, faLock, faLockOpen, faLongArrowAltDown, faLongArrowAltLeft, faLongArrowAltRight, faLongArrowAltUp, faLowVision, faLuggageCart, faLungs, faLungsVirus, faMagic, faMagnet, faMailBulk, faMale, faMap, faMapMarked, faMapMarkedAlt, faMapMarker, faMapMarkerAlt, faMapPin, faMapSigns, faMarker, faMars, faMarsDouble, faMarsStroke, faMarsStrokeH, faMarsStrokeV, faMask, faMedal, faMedkit, faMeh, faMehBlank, faMehRollingEyes, faMemory, faMenorah, faMercury, faMeteor, faMicrochip, faMicrophone, faMicrophoneAlt, faMicrophoneAltSlash, faMicrophoneSlash, faMicroscope, faMinus, faMinusCircle, faMinusSquare, faMitten, faMobile, faMobileAlt, faMoneyBill, faMoneyBillAlt, faMoneyBillWave, faMoneyBillWaveAlt, faMoneyCheck, faMoneyCheckAlt, faMonument, faMoon, faMortarPestle, faMosque, faMotorcycle, faMountain, faMouse, faMousePointer, faMugHot, faMusic, faNetworkWired, faNeuter, faNewspaper, faNotEqual, faNotesMedical, faObjectGroup, faObjectUngroup, faOilCan, faOm, faOtter, faOutdent, faPager, faPaintBrush, faPaintRoller, faPalette, faPallet, faPaperPlane, faPaperclip, faParachuteBox, faParagraph, faParking, faPassport, faPastafarianism, faPaste, faPause, faPauseCircle, faPaw, faPeace, faPen, faPenAlt, faPenFancy, faPenNib, faPenSquare, faPencilAlt, faPencilRuler, faPeopleArrows, faPeopleCarry, faPepperHot, faPercent, faPercentage, faPersonBooth, faPhone, faPhoneAlt, faPhoneSlash, faPhoneSquare, faPhoneSquareAlt, faPhoneVolume, faPhotoVideo, faPiggyBank, faPills, faPizzaSlice, faPlaceOfWorship, faPlane, faPlaneArrival, faPlaneDeparture, faPlaneSlash, faPlay, faPlayCircle, faPlug, faPlus, faPlusCircle, faPlusSquare, faPodcast, faPoll, faPollH, faPoo, faPooStorm, faPoop, faPortrait, faPoundSign, faPowerOff, faPray, faPrayingHands, faPrescription, faPrescriptionBottle, faPrescriptionBottleAlt, faPrint, faProcedures, faProjectDiagram, faPumpMedical, faPumpSoap, faPuzzlePiece, faQrcode, faQuestion, faQuestionCircle, faQuidditch, faQuoteLeft, faQuoteRight, faQuran, faRadiation, faRadiationAlt, faRainbow, faRandom, faReceipt, faRecordVinyl, faRecycle, faRedo, faRedoAlt, faRegistered, faRemoveFormat, faReply, faReplyAll, faRepublican, faRestroom, faRetweet, faRibbon, faRing, faRoad, faRobot, faRocket, faRoute, faRss, faRssSquare, faRubleSign, faRuler, faRulerCombined, faRulerHorizontal, faRulerVertical, faRunning, faRupeeSign, faSadCry, faSadTear, faSatellite, faSatelliteDish, faSave, faSchool, faScrewdriver, faScroll, faSdCard, faSearch, faSearchDollar, faSearchLocation, faSearchMinus, faSearchPlus, faSeedling, faServer, faShapes, faShare, faShareAlt, faShareAltSquare, faShareSquare, faShekelSign, faShieldAlt, faShieldVirus, faShip, faShippingFast, faShoePrints, faShoppingBag, faShoppingBasket, faShoppingCart, faShower, faShuttleVan, faSign, faSignInAlt, faSignLanguage, faSignOutAlt, faSignal, faSignature, faSimCard, faSink, faSitemap, faSkating, faSkiing, faSkiingNordic, faSkull, faSkullCrossbones, faSlash, faSleigh, faSlidersH, faSmile, faSmileBeam, faSmileWink, faSmog, faSmoking, faSmokingBan, faSms, faSnowboarding, faSnowflake, faSnowman, faSnowplow, faSoap, faSocks, faSolarPanel, faSort, faSortAlphaDown, faSortAlphaDownAlt, faSortAlphaUp, faSortAlphaUpAlt, faSortAmountDown, faSortAmountDownAlt, faSortAmountUp, faSortAmountUpAlt, faSortDown, faSortNumericDown, faSortNumericDownAlt, faSortNumericUp, faSortNumericUpAlt, faSortUp, faSpa, faSpaceShuttle, faSpellCheck, faSpider, faSpinner, faSplotch, faSprayCan, faSquare, faSquareFull, faSquareRootAlt, faStamp, faStar, faStarAndCrescent, faStarHalf, faStarHalfAlt, faStarOfDavid, faStarOfLife, faStepBackward, faStepForward, faStethoscope, faStickyNote, faStop, faStopCircle, faStopwatch, faStopwatch20, faStore, faStoreAlt, faStoreAltSlash, faStoreSlash, faStream, faStreetView, faStrikethrough, faStroopwafel, faSubscript, faSubway, faSuitcase, faSuitcaseRolling, faSun, faSuperscript, faSurprise, faSwatchbook, faSwimmer, faSwimmingPool, faSynagogue, faSync, faSyncAlt, faSyringe, faTable, faTableTennis, faTablet, faTabletAlt, faTablets, faTachometerAlt, faTag, faTags, faTape, faTasks, faTaxi, faTeeth, faTeethOpen, faTemperatureHigh, faTemperatureLow, faTenge, faTerminal, faTextHeight, faTextWidth, faTh, faThLarge, faThList, faTheaterMasks, faThermometer, faThermometerEmpty, faThermometerFull, faThermometerHalf, faThermometerQuarter, faThermometerThreeQuarters, faThumbsDown, faThumbsUp, faThumbtack, faTicketAlt, faTimes, faTimesCircle, faTint, faTintSlash, faTired, faToggleOff, faToggleOn, faToilet, faToiletPaper, faToiletPaperSlash, faToolbox, faTools, faTooth, faTorah, faToriiGate, faTractor, faTrademark, faTrafficLight, faTrailer, faTrain, faTram, faTransgender, faTransgenderAlt, faTrash, faTrashAlt, faTrashRestore, faTrashRestoreAlt, faTree, faTrophy, faTruck, faTruckLoading, faTruckMonster, faTruckMoving, faTruckPickup, faTshirt, faTty, faTv, faUmbrella, faUmbrellaBeach, faUnderline, faUndo, faUndoAlt, faUniversalAccess, faUniversity, faUnlink, faUnlock, faUnlockAlt, faUpload, faUser, faUserAlt, faUserAltSlash, faUserAstronaut, faUserCheck, faUserCircle, faUserClock, faUserCog, faUserEdit, faUserFriends, faUserGraduate, faUserInjured, faUserLock, faUserMd, faUserMinus, faUserNinja, faUserNurse, faUserPlus, faUserSecret, faUserShield, faUserSlash, faUserTag, faUserTie, faUserTimes, faUsers, faUsersCog, faUsersSlash, faUtensilSpoon, faUtensils, faVectorSquare, faVenus, faVenusDouble, faVenusMars, faVest, faVestPatches, faVial, faVials, faVideo, faVideoSlash, faVihara, faVirus, faVirusSlash, faViruses, faVoicemail, faVolleyballBall, faVolumeDown, faVolumeMute, faVolumeOff, faVolumeUp, faVoteYea, faVrCardboard, faWalking, faWallet, faWarehouse, faWater, faWaveSquare, faWeight, faWeightHanging, faWheelchair, faWifi, faWind, faWindowClose, faWindowMaximize, faWindowMinimize, faWindowRestore, faWineBottle, faWineGlass, faWineGlassAlt, faWonSign, faWrench, faXRay, faYenSign, faYinYang };\n","/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\n\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar PREFIX_TO_STYLE = {\n 'fas': 'solid',\n 'far': 'regular',\n 'fal': 'light',\n 'fad': 'duotone',\n 'fab': 'brands',\n 'fak': 'kit',\n 'fa': 'solid'\n};\nvar STYLE_TO_PREFIX = {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n};\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal'\n};\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n // For example <script data-search-pseudo-elements src=\"...\"></script>\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var widthClass = isUploadedIcon ? '' : \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.15.4\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = 'far' in styles;\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"<!-- \".concat(node.outerHTML, \" Font Awesome fontawesome.com -->\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\nfunction transformParser (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: node.getAttribute('data-fa-mask-id'),\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip': flip === true,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded$1 = [\"style\"];\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, _excluded$1);\n\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar _excluded = [\"forwardedRef\"];\nfunction FontAwesomeIcon(_ref) {\n var forwardedRef = _ref.forwardedRef,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n className = props.className,\n title = props.title,\n titleId = props.titleId,\n maskId = props.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: forwardedRef\n };\n Object.keys(props).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n extraProps[key] = props[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n}\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n beatFade: PropTypes.bool,\n bounce: PropTypes.bool,\n className: PropTypes.string,\n fade: PropTypes.bool,\n flash: PropTypes.bool,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n maskId: PropTypes.string,\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: false,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n spinPulse: false,\n spinReverse: false,\n beat: false,\n fade: false,\n beatFade: false,\n bounce: false,\n shake: false,\n symbol: false,\n title: '',\n titleId: null,\n transform: null,\n swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","import * as React from 'react';\nimport {useState, useCallback, useMemo, useContext} from 'react';\n\nimport {MapRef} from '../mapbox/create-ref';\nimport {MapContext} from './map';\n\ntype MountedMapsContextValue = {\n maps: {[id: string]: MapRef};\n onMapMount: (map: MapRef, id: string) => void;\n onMapUnmount: (id: string) => void;\n};\n\nexport const MountedMapsContext = React.createContext<MountedMapsContextValue>(null);\n\nexport const MapProvider: React.FC<{children?: React.ReactNode}> = props => {\n const [maps, setMaps] = useState<{[id: string]: MapRef}>({});\n\n const onMapMount = useCallback((map: MapRef, id: string = 'default') => {\n setMaps(currMaps => {\n if (id === 'current') {\n throw new Error(\"'current' cannot be used as map id\");\n }\n if (currMaps[id]) {\n throw new Error(`Multiple maps with the same id: ${id}`);\n }\n return {...currMaps, [id]: map};\n });\n }, []);\n\n const onMapUnmount = useCallback((id: string = 'default') => {\n setMaps(currMaps => {\n if (currMaps[id]) {\n const nextMaps = {...currMaps};\n delete nextMaps[id];\n return nextMaps;\n }\n return currMaps;\n });\n }, []);\n\n return (\n <MountedMapsContext.Provider\n value={{\n maps,\n onMapMount,\n onMapUnmount\n }}\n >\n {props.children}\n </MountedMapsContext.Provider>\n );\n};\n\nexport function useMap(): {current?: MapRef; [id: string]: MapRef | undefined} {\n const maps = useContext(MountedMapsContext)?.maps;\n const currentMap = useContext(MapContext);\n\n const mapsWithCurrent = useMemo(() => {\n return {...maps, current: currentMap?.map};\n }, [maps, currentMap]);\n\n return mapsWithCurrent;\n}\n","import type {MapboxProps} from '../mapbox/mapbox';\nimport type {Transform, ViewState} from '../types';\n\n/**\n * Make a copy of a transform\n * @param tr\n */\nexport function cloneTransform(tr: Transform): Transform {\n const newTransform = tr.clone();\n // Work around mapbox bug - this value is not assigned in clone(), only in resize()\n newTransform.pixelsToGLUnits = tr.pixelsToGLUnits;\n return newTransform;\n}\n\n/**\n * Capture a transform's current state\n * @param transform\n * @returns descriptor of the view state\n */\nexport function transformToViewState(tr: Transform): ViewState {\n return {\n longitude: tr.center.lng,\n latitude: tr.center.lat,\n zoom: tr.zoom,\n pitch: tr.pitch,\n bearing: tr.bearing,\n padding: tr.padding\n };\n}\n\n/* eslint-disable complexity */\n/**\n * Mutate a transform to match the given view state\n * @param transform\n * @param viewState\n * @returns true if the transform has changed\n */\nexport function applyViewStateToTransform(tr: Transform, props: MapboxProps): boolean {\n const v: Partial<ViewState> = props.viewState || props;\n let changed = false;\n\n if ('longitude' in v && 'latitude' in v) {\n const center = tr.center;\n // @ts-ignore\n tr.center = new center.constructor(v.longitude, v.latitude);\n changed = changed || center !== tr.center;\n }\n if ('zoom' in v) {\n const zoom = tr.zoom;\n tr.zoom = v.zoom;\n changed = changed || zoom !== tr.zoom;\n }\n if ('bearing' in v) {\n const bearing = tr.bearing;\n tr.bearing = v.bearing;\n changed = changed || bearing !== tr.bearing;\n }\n if ('pitch' in v) {\n const pitch = tr.pitch;\n tr.pitch = v.pitch;\n changed = changed || pitch !== tr.pitch;\n }\n if (v.padding && !tr.isPaddingEqual(v.padding)) {\n changed = true;\n tr.padding = v.padding;\n }\n return changed;\n}\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import {ImmutableLike, MapboxStyle} from '../types';\n\nconst refProps = ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\n\n// Prepare a map style object for diffing\n// If immutable - convert to plain object\n// Work around some issues in older styles that would fail Mapbox's diffing\nexport function normalizeStyle(style: string | MapboxStyle | ImmutableLike): string | MapboxStyle {\n if (!style) {\n return null;\n }\n if (typeof style === 'string') {\n return style;\n }\n if ('toJS' in style) {\n style = style.toJS() as MapboxStyle;\n }\n if (!style.layers) {\n return style;\n }\n const layerIndex = {};\n\n for (const layer of style.layers) {\n layerIndex[layer.id] = layer;\n }\n\n const layers = style.layers.map(layer => {\n // @ts-expect-error\n const layerRef = layerIndex[layer.ref];\n let normalizedLayer = null;\n\n if ('interactive' in layer) {\n normalizedLayer = {...layer};\n // Breaks style diffing :(\n delete normalizedLayer.interactive;\n }\n\n // Style diffing doesn't work with refs so expand them out manually before diffing.\n if (layerRef) {\n normalizedLayer = normalizedLayer || {...layer};\n delete normalizedLayer.ref;\n // https://github.com/mapbox/mapbox-gl-js/blob/master/src/style-spec/deref.js\n for (const propName of refProps) {\n if (propName in layerRef) {\n normalizedLayer[propName] = layerRef[propName];\n }\n }\n }\n\n return normalizedLayer || layer;\n });\n\n // Do not mutate the style object provided by the user\n return {...style, layers};\n}\n","import type {PointLike} from '../types';\n\n/**\n * Compare two points\n * @param a\n * @param b\n * @returns true if the points are equal\n */\nexport function arePointsEqual(a?: PointLike, b?: PointLike): boolean {\n const ax = Array.isArray(a) ? a[0] : a ? a.x : 0;\n const ay = Array.isArray(a) ? a[1] : a ? a.y : 0;\n const bx = Array.isArray(b) ? b[0] : b ? b.x : 0;\n const by = Array.isArray(b) ? b[1] : b ? b.y : 0;\n return ax === bx && ay === by;\n}\n\n/* eslint-disable complexity */\n/**\n * Compare any two objects\n * @param a\n * @param b\n * @returns true if the objects are deep equal\n */\nexport function deepEqual(a: any, b: any): boolean {\n if (a === b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n } else if (Array.isArray(b)) {\n return false;\n }\n if (typeof a === 'object' && typeof b === 'object') {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n for (const key of aKeys) {\n if (!b.hasOwnProperty(key)) {\n return false;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","import {transformToViewState, applyViewStateToTransform, cloneTransform} from '../utils/transform';\nimport {normalizeStyle} from '../utils/style-utils';\nimport {deepEqual} from '../utils/deep-equal';\n\nimport type {\n Transform,\n ProjectionSpecification,\n ViewState,\n ViewStateChangeEvent,\n DragPanOptions,\n ZoomRotateOptions,\n TransformRequestFunction,\n Light,\n Fog,\n Point,\n TerrainSpecification,\n MapboxStyle,\n ImmutableLike,\n LngLatBoundsLike,\n FitBoundsOptions,\n MapMouseEvent,\n MapLayerMouseEvent,\n MapLayerTouchEvent,\n MapWheelEvent,\n MapBoxZoomEvent,\n MapStyleDataEvent,\n MapSourceDataEvent,\n MapboxEvent,\n ErrorEvent,\n MapboxGeoJSONFeature,\n MapboxMap\n} from '../types';\n\nexport type MapboxProps = Partial<ViewState> & {\n // Init options\n mapboxAccessToken?: string;\n\n /** Camera options used when constructing the Map instance */\n initialViewState?: Partial<ViewState> & {\n /** The initial bounds of the map. If bounds is specified, it overrides longitude, latitude and zoom options. */\n bounds?: LngLatBoundsLike;\n /** A fitBounds options object to use only when setting the bounds option. */\n fitBoundsOptions?: FitBoundsOptions;\n };\n\n /** If provided, render into an external WebGL context */\n gl?: WebGLRenderingContext;\n\n /**\n * If true, the gl context will be created with MSA antialiasing, which can be useful for antialiasing custom layers.\n * This is false by default as a performance optimization.\n * @default false\n */\n antialias?: boolean;\n /**\n * If true, an attribution control will be added to the map.\n * @default true\n */\n attributionControl?: boolean;\n /**\n * Snap to north threshold in degrees.\n * @default 7\n */\n bearingSnap?: number;\n /**\n * The max number of pixels a user can shift the mouse pointer during a click for it to be\n * considered a valid click (as opposed to a mouse drag).\n * @default 3\n */\n clickTolerance?: number;\n /**\n * If `true`, Resource Timing API information will be collected for requests made by GeoJSON\n * and Vector Tile web workers (this information is normally inaccessible from the main\n * Javascript thread). Information will be returned in a `resourceTiming` property of\n * relevant `data` events.\n * @default false\n */\n collectResourceTiming?: boolean;\n /**\n * If `true` , scroll zoom will require pressing the ctrl or ⌘ key while scrolling to zoom map,\n * and touch pan will require using two fingers while panning to move the map.\n * Touch pitch will require three fingers to activate if enabled.\n */\n cooperativeGestures?: boolean;\n /**\n * If `true`, symbols from multiple sources can collide with each other during collision\n * detection. If `false`, collision detection is run separately for the symbols in each source.\n * @default true\n */\n crossSourceCollisions?: boolean;\n /** String or strings to show in an AttributionControl.\n * Only applicable if options.attributionControl is `true`. */\n customAttribution?: string | string[];\n /**\n * Controls the duration of the fade-in/fade-out animation for label collisions, in milliseconds.\n * This setting affects all symbol layers. This setting does not affect the duration of runtime\n * styling transitions or raster tile cross-fading.\n * @default 300\n */\n fadeDuration?: number;\n /** If true, map creation will fail if the implementation determines that the performance of the created WebGL context would be dramatically lower than expected.\n * @default false\n */\n failIfMajorPerformanceCaveat?: boolean;\n /** If `true`, the map's position (zoom, center latitude, center longitude, bearing, and pitch) will be synced with the hash fragment of the page's URL.\n * For example, `http://path/to/my/page.html#2.59/39.26/53.07/-24.1/60`.\n * An additional string may optionally be provided to indicate a parameter-styled hash,\n * e.g. http://path/to/my/page.html#map=2.59/39.26/53.07/-24.1/60&foo=bar, where foo\n * is a custom parameter and bar is an arbitrary hash distinct from the map hash.\n */\n hash?: boolean | string;\n /** If false, no mouse, touch, or keyboard listeners are attached to the map, so it will not respond to input\n * @default true\n */\n interactive?: boolean;\n /** A patch to apply to the default localization table for UI strings, e.g. control tooltips.\n * The `locale` object maps namespaced UI string IDs to translated strings in the target language;\n * see `src/ui/default_locale.js` for an example with all supported string IDs.\n * The object may specify all UI strings (thereby adding support for a new translation) or\n * only a subset of strings (thereby patching the default translation table).\n */\n locale?: {[key: string]: string};\n /**\n * Overrides the generation of all glyphs and font settings except font-weight keywords\n * Also overrides localIdeographFontFamily\n * @default null\n */\n localFontFamily?: string;\n /**\n * If specified, defines a CSS font-family for locally overriding generation of glyphs in the\n * 'CJK Unified Ideographs' and 'Hangul Syllables' ranges. In these ranges, font settings from\n * the map's style will be ignored, except for font-weight keywords (light/regular/medium/bold).\n * The purpose of this option is to avoid bandwidth-intensive glyph server requests.\n * @default \"sans-serif\"\n */\n localIdeographFontFamily?: string;\n /**\n * A string representing the position of the Mapbox wordmark on the map.\n * @default \"bottom-left\"\n */\n logoPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n /**\n * The maximum number of tiles stored in the tile cache for a given source. If omitted, the\n * cache will be dynamically sized based on the current viewport.\n * @default null\n */\n maxTileCacheSize?: number;\n /**\n * If true, map will prioritize rendering for performance by reordering layers\n * If false, layers will always be drawn in the specified order\n * @default true\n */\n optimizeForTerrain?: boolean;\n /**\n * If `false`, the map's pitch (tilt) control with \"drag to rotate\" interaction will be disabled.\n * @default true\n */\n pitchWithRotate?: boolean;\n /** If true, The maps canvas can be exported to a PNG using map.getCanvas().toDataURL();. This is false by default as a performance optimization.\n * @default false\n */\n preserveDrawingBuffer?: boolean;\n /**\n * If `false`, the map won't attempt to re-request tiles once they expire per their HTTP\n * `cacheControl`/`expires` headers.\n * @default true\n */\n refreshExpiredTiles?: boolean;\n /**\n * Allows for the usage of the map in automated tests without an accessToken with custom self-hosted test fixtures.\n * @default null\n */\n testMode?: boolean;\n /**\n * If true, the map will automatically resize when the browser window resizes\n * @default true\n */\n trackResize?: boolean;\n /**\n * A callback run before the Map makes a request for an external URL. The callback can be\n * used to modify the url, set headers, or set the credentials property for cross-origin requests.\n * @default null\n */\n transformRequest?: TransformRequestFunction;\n\n // Handlers\n\n /**\n * If true, enable the \"box zoom\" interaction (see BoxZoomHandler)\n * @default true\n */\n boxZoom?: boolean;\n /**\n * If true, enable the \"double click to zoom\" interaction (see DoubleClickZoomHandler).\n * @default true\n */\n doubleClickZoom?: boolean;\n /**\n * If `true`, the \"drag to pan\" interaction is enabled.\n * An `Object` value is passed as options to {@link DragPanHandler#enable}.\n * @default true\n */\n dragPan?: boolean | DragPanOptions;\n /**\n * If true, enable the \"drag to rotate\" interaction (see DragRotateHandler).\n * @default true\n */\n dragRotate?: boolean;\n /**\n * If true, enable keyboard shortcuts (see KeyboardHandler).\n * @default true\n */\n keyboard?: boolean;\n /**\n * If `true`, the \"scroll to zoom\" interaction is enabled.\n * An `Object` value is passed as options to {@link ScrollZoomHandler#enable}.\n * @default true\n */\n scrollZoom?: boolean | ZoomRotateOptions;\n /**\n * If `true`, the \"drag to pitch\" interaction is enabled.\n * An `Object` value is passed as options to {@link TouchPitchHandler#enable}.\n * @default true\n */\n touchPitch?: boolean;\n /**\n * If `true`, the \"pinch to rotate and zoom\" interaction is enabled.\n * An `Object` value is passed as options to {@link TouchZoomRotateHandler#enable}.\n * @default true\n */\n touchZoomRotate?: boolean | ZoomRotateOptions;\n\n // Constraints\n\n /** If set, the map is constrained to the given bounds. */\n maxBounds?: LngLatBoundsLike;\n /** Maximum pitch of the map. */\n maxPitch?: number;\n /** Maximum zoom of the map. */\n maxZoom?: number;\n /** Minimum pitch of the map. */\n minPitch?: number;\n /** Minimum zoom of the map. */\n minZoom?: number;\n\n /** For external controller to override the camera state */\n viewState?: ViewState & {\n width: number;\n height: number;\n };\n\n // Styling\n\n /** Mapbox style */\n mapStyle?: string | MapboxStyle | ImmutableLike;\n /** Enable diffing when the map style changes\n * @default true\n */\n styleDiffing?: boolean;\n /** The fog property of the style. Must conform to the Fog Style Specification .\n * If `undefined` is provided, removes the fog from the map. */\n fog?: Fog;\n /** Light properties of the map. */\n light?: Light;\n /** Terrain property of the style. Must conform to the Terrain Style Specification .\n * If `undefined` is provided, removes terrain from the map. */\n terrain?: TerrainSpecification;\n /** Default layers to query on pointer events */\n interactiveLayerIds?: string[];\n /** The projection the map should be rendered in\n * @default \"mercator\"\n */\n projection?: ProjectionSpecification | string;\n /**\n * If `true`, multiple copies of the world will be rendered, when zoomed out.\n * @default true\n */\n renderWorldCopies?: boolean;\n /** CSS cursor */\n cursor?: string;\n\n // Callbacks\n onMouseDown?: (e: MapLayerMouseEvent) => void;\n onMouseUp?: (e: MapLayerMouseEvent) => void;\n onMouseOver?: (e: MapLayerMouseEvent) => void;\n onMouseMove?: (e: MapLayerMouseEvent) => void;\n onClick?: (e: MapLayerMouseEvent) => void;\n onDblClick?: (e: MapLayerMouseEvent) => void;\n onMouseEnter?: (e: MapLayerMouseEvent) => void;\n onMouseLeave?: (e: MapLayerMouseEvent) => void;\n onMouseOut?: (e: MapLayerMouseEvent) => void;\n onContextMenu?: (e: MapLayerMouseEvent) => void;\n onTouchStart?: (e: MapLayerTouchEvent) => void;\n onTouchEnd?: (e: MapLayerTouchEvent) => void;\n onTouchMove?: (e: MapLayerTouchEvent) => void;\n onTouchCancel?: (e: MapLayerTouchEvent) => void;\n\n onMoveStart?: (e: ViewStateChangeEvent) => void;\n onMove?: (e: ViewStateChangeEvent) => void;\n onMoveEnd?: (e: ViewStateChangeEvent) => void;\n onDragStart?: (e: ViewStateChangeEvent) => void;\n onDrag?: (e: ViewStateChangeEvent) => void;\n onDragEnd?: (e: ViewStateChangeEvent) => void;\n onZoomStart?: (e: ViewStateChangeEvent) => void;\n onZoom?: (e: ViewStateChangeEvent) => void;\n onZoomEnd?: (e: ViewStateChangeEvent) => void;\n onRotateStart?: (e: ViewStateChangeEvent) => void;\n onRotate?: (e: ViewStateChangeEvent) => void;\n onRotateEnd?: (e: ViewStateChangeEvent) => void;\n onPitchStart?: (e: ViewStateChangeEvent) => void;\n onPitch?: (e: ViewStateChangeEvent) => void;\n onPitchEnd?: (e: ViewStateChangeEvent) => void;\n\n onWheel?: (e: MapWheelEvent) => void;\n onBoxZoomStart?: (e: MapBoxZoomEvent) => void;\n onBoxZoomEnd?: (e: MapBoxZoomEvent) => void;\n onBoxZoomCancel?: (e: MapBoxZoomEvent) => void;\n\n onResize?: (e: MapboxEvent) => void;\n onLoad?: (e: MapboxEvent) => void;\n onRender?: (e: MapboxEvent) => void;\n onIdle?: (e: MapboxEvent) => void;\n onError?: (e: ErrorEvent) => void;\n onRemove?: (e: MapboxEvent) => void;\n onData?: (e: MapStyleDataEvent | MapSourceDataEvent) => void;\n onStyleData?: (e: MapStyleDataEvent) => void;\n onSourceData?: (e: MapSourceDataEvent) => void;\n};\n\nconst pointerEvents = {\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseover: 'onMouseOver',\n mousemove: 'onMouseMove',\n click: 'onClick',\n dblclick: 'onDblClick',\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n mouseout: 'onMouseOut',\n contextmenu: 'onContextMenu',\n touchstart: 'onTouchStart',\n touchend: 'onTouchEnd',\n touchmove: 'onTouchMove',\n touchcancel: 'onTouchCancel'\n};\nconst cameraEvents = {\n movestart: 'onMoveStart',\n move: 'onMove',\n moveend: 'onMoveEnd',\n dragstart: 'onDragStart',\n drag: 'onDrag',\n dragend: 'onDragEnd',\n zoomstart: 'onZoomStart',\n zoom: 'onZoom',\n zoomend: 'onZoomEnd',\n rotatestart: 'onRotateStart',\n rotate: 'onRotate',\n rotateend: 'onRotateEnd',\n pitchstart: 'onPitchStart',\n pitch: 'onPitch',\n pitchend: 'onPitchEnd'\n};\nconst otherEvents = {\n wheel: 'onWheel',\n boxzoomstart: 'onBoxZoomStart',\n boxzoomend: 'onBoxZoomEnd',\n boxzoomcancel: 'onBoxZoomCancel',\n resize: 'onResize',\n load: 'onLoad',\n render: 'onRender',\n idle: 'onIdle',\n remove: 'onRemove',\n data: 'onData',\n styledata: 'onStyleData',\n sourcedata: 'onSourceData',\n error: 'onError'\n};\nconst settingNames: (keyof MapboxProps)[] = [\n 'minZoom',\n 'maxZoom',\n 'minPitch',\n 'maxPitch',\n 'maxBounds',\n 'projection',\n 'renderWorldCopies'\n];\nconst handlerNames: (keyof MapboxProps)[] = [\n 'scrollZoom',\n 'boxZoom',\n 'dragRotate',\n 'dragPan',\n 'keyboard',\n 'doubleClickZoom',\n 'touchZoomRotate',\n 'touchPitch'\n];\n\n/**\n * A wrapper for mapbox-gl's Map class\n */\nexport default class Mapbox {\n private _MapClass: typeof MapboxMap;\n // mapboxgl.Map instance. Not using type here because we are accessing\n // private members and methods\n private _map: any = null;\n // User-supplied props\n props: MapboxProps;\n\n // Mapbox map is stateful.\n // During method calls/user interactions, map.transform is mutated and\n // deviate from user-supplied props.\n // In order to control the map reactively, we shadow the transform\n // with the one below, which reflects the view state resolved from\n // both user-supplied props and the underlying state\n private _renderTransform: Transform;\n\n // Internal states\n private _internalUpdate: boolean = false;\n private _inRender: boolean = false;\n private _hoveredFeatures: MapboxGeoJSONFeature[] = null;\n private _deferredEvents: {\n move: boolean;\n zoom: boolean;\n pitch: boolean;\n rotate: boolean;\n } = {\n move: false,\n zoom: false,\n pitch: false,\n rotate: false\n };\n\n static savedMaps: Mapbox[] = [];\n\n constructor(MapClass: typeof MapboxMap, props: MapboxProps, container: HTMLDivElement) {\n this._MapClass = MapClass;\n this.props = props;\n this._initialize(container);\n }\n\n get map(): MapboxMap {\n return this._map as MapboxMap;\n }\n\n get transform(): Transform {\n return this._renderTransform;\n }\n\n setProps(props: MapboxProps) {\n const oldProps = this.props;\n this.props = props;\n\n const settingsChanged = this._updateSettings(props, oldProps);\n if (settingsChanged) {\n this._createShadowTransform(this._map);\n }\n const sizeChanged = this._updateSize(props);\n const viewStateChanged = this._updateViewState(props, true);\n this._updateStyle(props, oldProps);\n this._updateStyleComponents(props, oldProps);\n this._updateHandlers(props, oldProps);\n\n // If 1) view state has changed to match props and\n // 2) the props change is not triggered by map events,\n // it's driven by an external state change. Redraw immediately\n if (settingsChanged || sizeChanged || (viewStateChanged && !this._map.isMoving())) {\n this.redraw();\n }\n }\n\n static reuse(props: MapboxProps, container: HTMLDivElement) {\n const that = Mapbox.savedMaps.pop();\n if (!that) {\n return null;\n }\n\n const map = that.map;\n // When reusing the saved map, we need to reparent the map(canvas) and other child nodes\n // intoto the new container from the props.\n // Step1: reparenting child nodes from old container to new container\n const oldContainer = map.getContainer();\n container.className = oldContainer.className;\n while (oldContainer.childNodes.length > 0) {\n container.appendChild(oldContainer.childNodes[0]);\n }\n // Step2: replace the internal container with new container from the react component\n // @ts-ignore\n map._container = container;\n\n // Step 3: apply new props\n that.setProps({...props, styleDiffing: false});\n map.resize();\n const {initialViewState} = props;\n if (initialViewState) {\n if (initialViewState.bounds) {\n map.fitBounds(initialViewState.bounds, {...initialViewState.fitBoundsOptions, duration: 0});\n } else {\n that._updateViewState(initialViewState, false);\n }\n }\n\n // Simulate load event\n if (map.isStyleLoaded()) {\n map.fire('load');\n } else {\n map.once('styledata', () => map.fire('load'));\n }\n\n // Force redraw\n map.triggerRepaint();\n return that;\n }\n\n /* eslint-disable complexity,max-statements */\n _initialize(container: HTMLDivElement) {\n const {props} = this;\n const mapOptions = {\n ...props,\n ...props.initialViewState,\n accessToken: props.mapboxAccessToken || getAccessTokenFromEnv() || null,\n container,\n style: normalizeStyle(props.mapStyle)\n };\n\n const viewState = mapOptions.initialViewState || mapOptions.viewState || mapOptions;\n Object.assign(mapOptions, {\n center: [viewState.longitude || 0, viewState.latitude || 0],\n zoom: viewState.zoom || 0,\n pitch: viewState.pitch || 0,\n bearing: viewState.bearing || 0\n });\n\n if (props.gl) {\n // eslint-disable-next-line\n const getContext = HTMLCanvasElement.prototype.getContext;\n // Hijack canvas.getContext to return our own WebGLContext\n // This will be called inside the mapboxgl.Map constructor\n // @ts-expect-error\n HTMLCanvasElement.prototype.getContext = () => {\n // Unhijack immediately\n HTMLCanvasElement.prototype.getContext = getContext;\n return props.gl;\n };\n }\n\n const map: any = new this._MapClass(mapOptions);\n // Props that are not part of constructor options\n if (viewState.padding) {\n map.setPadding(viewState.padding);\n }\n if (props.cursor) {\n map.getCanvas().style.cursor = props.cursor;\n }\n this._createShadowTransform(map);\n\n // Hack\n // Insert code into map's render cycle\n const renderMap = map._render;\n map._render = (arg: number) => {\n this._inRender = true;\n renderMap.call(map, arg);\n this._inRender = false;\n };\n const runRenderTaskQueue = map._renderTaskQueue.run;\n map._renderTaskQueue.run = (arg: number) => {\n runRenderTaskQueue.call(map._renderTaskQueue, arg);\n this._onBeforeRepaint();\n };\n map.on('render', () => this._onAfterRepaint());\n // Insert code into map's event pipeline\n const fireEvent = map.fire;\n map.fire = this._fireEvent.bind(this, fireEvent);\n\n // add listeners\n map.on('resize', () => {\n this._renderTransform.resize(map.transform.width, map.transform.height);\n });\n map.on('styledata', () => this._updateStyleComponents(this.props, {}));\n map.on('sourcedata', () => this._updateStyleComponents(this.props, {}));\n for (const eventName in pointerEvents) {\n map.on(eventName, this._onPointerEvent);\n }\n for (const eventName in cameraEvents) {\n map.on(eventName, this._onCameraEvent);\n }\n for (const eventName in otherEvents) {\n map.on(eventName, this._onEvent);\n }\n this._map = map;\n }\n /* eslint-enable complexity,max-statements */\n\n recycle() {\n // Clean up unnecessary elements before storing for reuse.\n const container = this.map.getContainer();\n const children = container.querySelector('[mapboxgl-children]');\n children?.remove();\n\n Mapbox.savedMaps.push(this);\n }\n\n destroy() {\n this._map.remove();\n }\n\n // Force redraw the map now. Typically resize() and jumpTo() is reflected in the next\n // render cycle, which is managed by Mapbox's animation loop.\n // This removes the synchronization issue caused by requestAnimationFrame.\n redraw() {\n const map = this._map;\n // map._render will throw error if style does not exist\n // https://github.com/mapbox/mapbox-gl-js/blob/fb9fc316da14e99ff4368f3e4faa3888fb43c513\n // /src/ui/map.js#L1834\n if (!this._inRender && map.style) {\n // cancel the scheduled update\n if (map._frame) {\n map._frame.cancel();\n map._frame = null;\n }\n // the order is important - render() may schedule another update\n map._render();\n }\n }\n\n _createShadowTransform(map: any) {\n const renderTransform = cloneTransform(map.transform);\n map.painter.transform = renderTransform;\n\n this._renderTransform = renderTransform;\n }\n\n /* Trigger map resize if size is controlled\n @param {object} nextProps\n @returns {bool} true if size has changed\n */\n _updateSize(nextProps: MapboxProps): boolean {\n // Check if size is controlled\n const {viewState} = nextProps;\n if (viewState) {\n const map = this._map;\n if (viewState.width !== map.transform.width || viewState.height !== map.transform.height) {\n map.resize();\n return true;\n }\n }\n return false;\n }\n\n // Adapted from map.jumpTo\n /* Update camera to match props\n @param {object} nextProps\n @param {bool} triggerEvents - should fire camera events\n @returns {bool} true if anything is changed\n */\n _updateViewState(nextProps: MapboxProps, triggerEvents: boolean): boolean {\n if (this._internalUpdate) {\n return false;\n }\n const map = this._map;\n\n const tr = this._renderTransform;\n // Take a snapshot of the transform before mutation\n const {zoom, pitch, bearing} = tr;\n const isMoving = map.isMoving();\n\n if (isMoving) {\n // All movement of the camera is done relative to the sea level\n tr.cameraElevationReference = 'sea';\n }\n const changed = applyViewStateToTransform(tr, {\n ...transformToViewState(map.transform),\n ...nextProps\n });\n if (isMoving) {\n // Reset camera reference\n tr.cameraElevationReference = 'ground';\n }\n\n if (changed && triggerEvents) {\n const deferredEvents = this._deferredEvents;\n // Delay DOM control updates to the next render cycle\n deferredEvents.move = true;\n deferredEvents.zoom ||= zoom !== tr.zoom;\n deferredEvents.rotate ||= bearing !== tr.bearing;\n deferredEvents.pitch ||= pitch !== tr.pitch;\n }\n\n // Avoid manipulating the real transform when interaction/animation is ongoing\n // as it would interfere with Mapbox's handlers\n if (!isMoving) {\n applyViewStateToTransform(map.transform, nextProps);\n }\n\n return changed;\n }\n\n /* Update camera constraints and projection settings to match props\n @param {object} nextProps\n @param {object} currProps\n @returns {bool} true if anything is changed\n */\n _updateSettings(nextProps: MapboxProps, currProps: MapboxProps): boolean {\n const map = this._map;\n let changed = false;\n for (const propName of settingNames) {\n if (propName in nextProps && !deepEqual(nextProps[propName], currProps[propName])) {\n changed = true;\n map[`set${propName[0].toUpperCase()}${propName.slice(1)}`](nextProps[propName]);\n }\n }\n return changed;\n }\n\n /* Update map style to match props\n @param {object} nextProps\n @param {object} currProps\n @returns {bool} true if style is changed\n */\n _updateStyle(nextProps: MapboxProps, currProps: MapboxProps): boolean {\n if (nextProps.cursor !== currProps.cursor) {\n this._map.getCanvas().style.cursor = nextProps.cursor;\n }\n if (nextProps.mapStyle !== currProps.mapStyle) {\n const options: any = {\n diff: nextProps.styleDiffing\n };\n if ('localIdeographFontFamily' in nextProps) {\n options.localIdeographFontFamily = nextProps.localIdeographFontFamily;\n }\n this._map.setStyle(normalizeStyle(nextProps.mapStyle), options);\n return true;\n }\n return false;\n }\n\n /* Update fog, light and terrain to match props\n @param {object} nextProps\n @param {object} currProps\n @returns {bool} true if anything is changed\n */\n _updateStyleComponents(nextProps: MapboxProps, currProps: MapboxProps): boolean {\n const map = this._map;\n let changed = false;\n if (map.style.loaded()) {\n if ('light' in nextProps && !deepEqual(nextProps.light, currProps.light)) {\n changed = true;\n map.setLight(nextProps.light);\n }\n if ('fog' in nextProps && !deepEqual(nextProps.fog, currProps.fog)) {\n changed = true;\n map.setFog(nextProps.fog);\n }\n if ('terrain' in nextProps && !deepEqual(nextProps.terrain, currProps.terrain)) {\n if (!nextProps.terrain || map.getSource(nextProps.terrain.source)) {\n changed = true;\n map.setTerrain(nextProps.terrain);\n }\n }\n }\n return changed;\n }\n\n /* Update interaction handlers to match props\n @param {object} nextProps\n @param {object} currProps\n @returns {bool} true if anything is changed\n */\n _updateHandlers(nextProps: MapboxProps, currProps: MapboxProps): boolean {\n const map = this._map;\n let changed = false;\n for (const propName of handlerNames) {\n const newValue = nextProps[propName];\n if (!deepEqual(newValue, currProps[propName])) {\n changed = true;\n if (newValue) {\n map[propName].enable(newValue);\n } else {\n map[propName].disable();\n }\n }\n }\n return changed;\n }\n\n _onEvent = (e: MapboxEvent) => {\n // @ts-ignore\n const cb = this.props[otherEvents[e.type]];\n if (cb) {\n cb(e);\n }\n };\n\n private _queryRenderedFeatures(point: Point) {\n const map = this._map;\n const {interactiveLayerIds = []} = this.props;\n try {\n return map.queryRenderedFeatures(point, {\n layers: interactiveLayerIds.filter(map.getLayer.bind(map))\n });\n } catch {\n // May fail if style is not loaded\n return [];\n }\n }\n\n _updateHover(e: MapMouseEvent) {\n const {props} = this;\n const shouldTrackHoveredFeatures =\n props.interactiveLayerIds && (props.onMouseMove || props.onMouseEnter || props.onMouseLeave);\n\n if (shouldTrackHoveredFeatures) {\n const eventType = e.type;\n const wasHovering = this._hoveredFeatures?.length > 0;\n const features = this._queryRenderedFeatures(e.point);\n const isHovering = features.length > 0;\n\n if (!isHovering && wasHovering) {\n e.type = 'mouseleave';\n this._onPointerEvent(e);\n }\n this._hoveredFeatures = features;\n if (isHovering && !wasHovering) {\n e.type = 'mouseenter';\n this._onPointerEvent(e);\n }\n e.type = eventType;\n } else {\n this._hoveredFeatures = null;\n }\n }\n\n _onPointerEvent = (e: MapLayerMouseEvent | MapLayerTouchEvent) => {\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n this._updateHover(e);\n }\n\n // @ts-ignore\n const cb = this.props[pointerEvents[e.type]];\n if (cb) {\n if (this.props.interactiveLayerIds && e.type !== 'mouseover' && e.type !== 'mouseout') {\n e.features = this._hoveredFeatures || this._queryRenderedFeatures(e.point);\n }\n cb(e);\n delete e.features;\n }\n };\n\n _onCameraEvent = (e: ViewStateChangeEvent) => {\n if (!this._internalUpdate) {\n // @ts-ignore\n const cb = this.props[cameraEvents[e.type]];\n if (cb) {\n cb(e);\n }\n }\n if (e.type in this._deferredEvents) {\n this._deferredEvents[e.type] = false;\n }\n };\n\n _fireEvent(baseFire: Function, event: string | MapboxEvent, properties?: object) {\n const map = this._map;\n const tr = map.transform;\n\n const eventType = typeof event === 'string' ? event : event.type;\n if (eventType === 'move') {\n this._updateViewState(this.props, false);\n }\n if (eventType in cameraEvents) {\n if (typeof event === 'object') {\n (event as unknown as ViewStateChangeEvent).viewState = transformToViewState(tr);\n }\n if (this._map.isMoving()) {\n // Replace map.transform with ours during the callbacks\n map.transform = this._renderTransform;\n baseFire.call(map, event, properties);\n map.transform = tr;\n\n return map;\n }\n }\n baseFire.call(map, event, properties);\n\n return map;\n }\n\n // All camera manipulations are complete, ready to repaint\n _onBeforeRepaint() {\n const map = this._map;\n\n // If there are camera changes driven by props, invoke camera events so that DOM controls are synced\n this._internalUpdate = true;\n for (const eventType in this._deferredEvents) {\n if (this._deferredEvents[eventType]) {\n map.fire(eventType);\n }\n }\n this._internalUpdate = false;\n\n const tr = this._map.transform;\n // Make sure camera matches the current props\n this._map.transform = this._renderTransform;\n\n this._onAfterRepaint = () => {\n // Restores camera state before render/load events are fired\n this._map.transform = tr;\n };\n }\n\n _onAfterRepaint: () => void;\n}\n\n/**\n * Access token can be provided via one of:\n * mapboxAccessToken prop\n * access_token query parameter\n * MapboxAccessToken environment variable\n * REACT_APP_MAPBOX_ACCESS_TOKEN environment variable\n * @returns access token\n */\nfunction getAccessTokenFromEnv(): string {\n let accessToken = null;\n\n /* global location, process */\n if (typeof location !== 'undefined') {\n const match = /access_token=([^&\\/]*)/.exec(location.search);\n accessToken = match && match[1];\n }\n\n // Note: This depends on bundler plugins (e.g. webpack) importing environment correctly\n try {\n accessToken = accessToken || process.env.MapboxAccessToken;\n } catch {\n // ignore\n }\n\n try {\n accessToken = accessToken || process.env.REACT_APP_MAPBOX_ACCESS_TOKEN;\n } catch {\n // ignore\n }\n\n return accessToken;\n}\n","import type {MapboxMap, LngLatLike, PointLike, ElevationQueryOptions} from '../types';\nimport type Mapbox from './mapbox';\n\n/** These methods may break the react binding if called directly */\nconst skipMethods = [\n 'setMaxBounds',\n 'setMinZoom',\n 'setMaxZoom',\n 'setMinPitch',\n 'setMaxPitch',\n 'setRenderWorldCopies',\n 'setProjection',\n 'setStyle',\n 'addSource',\n 'removeSource',\n 'addLayer',\n 'removeLayer',\n 'setLayerZoomRange',\n 'setFilter',\n 'setPaintProperty',\n 'setLayoutProperty',\n 'setLight',\n 'setTerrain',\n 'setFog',\n 'remove'\n] as const;\n\nexport type MapRef = {\n getMap(): MapboxMap;\n} & Omit<MapboxMap, typeof skipMethods[number]>;\n\nexport default function createRef(mapInstance: Mapbox, mapLib: any): MapRef {\n if (!mapInstance) {\n return null;\n }\n\n const map: MapboxMap = mapInstance.map;\n const result: any = {\n getMap: () => map,\n\n // Overwrite getters to use our shadow transform\n getCenter: () => mapInstance.transform.center,\n getZoom: () => mapInstance.transform.zoom,\n getBearing: () => mapInstance.transform.bearing,\n getPitch: () => mapInstance.transform.pitch,\n getPadding: () => mapInstance.transform.padding,\n getBounds: () => mapInstance.transform.getBounds(),\n project: (lnglat: LngLatLike) => {\n return mapInstance.transform.locationPoint(mapLib.LngLat.convert(lnglat));\n },\n unproject: (point: PointLike) => {\n return mapInstance.transform.pointLocation(mapLib.Point.convert(point));\n },\n queryTerrainElevation: (lnglat: LngLatLike, options: ElevationQueryOptions) => {\n // @ts-ignore transform not defined\n const tr = map.transform;\n // @ts-ignore transform not defined\n map.transform = mapInstance.transform;\n const result = map.queryTerrainElevation(lnglat, options);\n // @ts-ignore transform not defined\n map.transform = tr;\n return result;\n }\n };\n\n for (const key of getMethodNames(map)) {\n // @ts-expect-error\n if (!(key in result) && !skipMethods.includes(key)) {\n result[key] = map[key].bind(map);\n }\n }\n\n return result;\n}\n\nfunction getMethodNames(obj) {\n const result = new Set<string>();\n\n let proto = obj;\n while (proto) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (\n key[0] !== '_' &&\n typeof obj[key] === 'function' &&\n key !== 'fire' &&\n key !== 'setEventedParent'\n ) {\n result.add(key);\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n return Array.from(result);\n}\n","// From https://github.com/streamich/react-use/blob/master/src/useIsomorphicLayoutEffect.ts\n// useLayoutEffect but does not trigger warning in server-side rendering\nimport {useEffect, useLayoutEffect} from 'react';\n\nconst useIsomorphicLayoutEffect = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport default useIsomorphicLayoutEffect;\n","export type GlobalSettings = {\n /** The map's default API URL for requesting tiles, styles, sprites, and glyphs. */\n baseApiUrl?: string;\n /** The maximum number of images (raster tiles, sprites, icons) to load in parallel.\n * @default 16\n */\n maxParallelImageRequests?: number;\n /** The map's RTL text plugin. Necessary for supporting the Arabic and Hebrew languages, which are written right-to-left. */\n RTLTextPlugin?: string;\n /** Provides an interface for external module bundlers such as Webpack or Rollup to package mapbox-gl's WebWorker into a separate class and integrate it with the library.\nTakes precedence over `workerUrl`. */\n workerClass?: any;\n /** The number of web workers instantiated on a page with mapbox-gl maps.\n * @default 2\n */\n workerCount?: number;\n /** Provides an interface for loading mapbox-gl's WebWorker bundle from a self-hosted URL.\n * This is useful if your site needs to operate in a strict CSP (Content Security Policy) environment\n * wherein you are not allowed to load JavaScript code from a Blob URL, which is default behavior. */\n workerUrl?: string;\n};\n\nconst globalSettings = [\n 'baseApiUrl',\n 'maxParallelImageRequests',\n 'workerClass',\n 'workerCount',\n 'workerUrl'\n] as const;\n\nexport default function setGlobals(mapLib: any, props: GlobalSettings) {\n for (const key of globalSettings) {\n if (key in props) {\n mapLib[key] = props[key];\n }\n }\n\n if (\n props.RTLTextPlugin &&\n mapLib.getRTLTextPluginStatus &&\n mapLib.getRTLTextPluginStatus() === 'unavailable'\n ) {\n mapLib.setRTLTextPlugin(\n props.RTLTextPlugin,\n (error?: Error) => {\n if (error) {\n // eslint-disable-next-line\n console.error(error);\n }\n },\n false\n );\n }\n}\n","import * as React from 'react';\nimport {\n useState,\n useRef,\n useEffect,\n useContext,\n useMemo,\n forwardRef,\n useImperativeHandle\n} from 'react';\n\nimport {MountedMapsContext} from './use-map';\nimport Mapbox, {MapboxProps} from '../mapbox/mapbox';\nimport createRef, {MapRef} from '../mapbox/create-ref';\n\nimport type {CSSProperties} from 'react';\nimport useIsomorphicLayoutEffect from '../utils/use-isomorphic-layout-effect';\nimport setGlobals, {GlobalSettings} from '../utils/set-globals';\n\nexport type MapContextValue = {\n mapLib: any;\n map: MapRef;\n};\n\nexport const MapContext = React.createContext<MapContextValue>(null);\n\nexport type MapProps = MapboxProps &\n GlobalSettings & {\n mapLib?: any;\n reuseMaps?: boolean;\n /** Map container id */\n id?: string;\n /** Map container CSS style */\n style?: CSSProperties;\n children?: any;\n };\n\nconst defaultProps: MapProps = {\n // Constraints\n minZoom: 0,\n maxZoom: 22,\n minPitch: 0,\n maxPitch: 60,\n\n // Interaction handlers\n scrollZoom: true,\n boxZoom: true,\n dragRotate: true,\n dragPan: true,\n keyboard: true,\n doubleClickZoom: true,\n touchZoomRotate: true,\n touchPitch: true,\n\n // Style\n mapStyle: {version: 8, sources: {}, layers: []},\n styleDiffing: true,\n projection: 'mercator',\n renderWorldCopies: true,\n\n // Callbacks\n onError: e => console.error(e.error), // eslint-disable-line\n\n // Globals\n RTLTextPlugin:\n 'https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.2.3/mapbox-gl-rtl-text.js'\n};\n\nconst Map = forwardRef<MapRef, MapProps>((props, ref) => {\n const mountedMapsContext = useContext(MountedMapsContext);\n const [mapInstance, setMapInstance] = useState<Mapbox>(null);\n const containerRef = useRef();\n\n const {current: contextValue} = useRef<MapContextValue>({mapLib: null, map: null});\n\n useEffect(() => {\n const mapLib = props.mapLib;\n let isMounted = true;\n let mapbox;\n\n Promise.resolve(mapLib || import('mapbox-gl'))\n .then(mapboxgl => {\n if (!isMounted) {\n return;\n }\n\n if (!mapboxgl.Map) {\n // commonjs style\n mapboxgl = mapboxgl.default;\n }\n if (!mapboxgl || !mapboxgl.Map) {\n throw new Error('Invalid mapLib');\n }\n\n // workerUrl & workerClass may change the result of supported()\n // https://github.com/visgl/react-map-gl/discussions/2027\n setGlobals(mapboxgl, props);\n if (mapboxgl.supported(props)) {\n if (props.reuseMaps) {\n mapbox = Mapbox.reuse(props, containerRef.current);\n }\n if (!mapbox) {\n mapbox = new Mapbox(mapboxgl.Map, props, containerRef.current);\n }\n contextValue.map = createRef(mapbox, mapboxgl);\n contextValue.mapLib = mapboxgl;\n\n setMapInstance(mapbox);\n mountedMapsContext?.onMapMount(contextValue.map, props.id);\n } else {\n throw new Error('Map is not supported by this browser');\n }\n })\n .catch(error => {\n props.onError({\n type: 'error',\n target: null,\n originalEvent: null,\n error\n });\n });\n\n return () => {\n isMounted = false;\n if (mapbox) {\n mountedMapsContext?.onMapUnmount(props.id);\n if (props.reuseMaps) {\n mapbox.recycle();\n } else {\n mapbox.destroy();\n }\n }\n };\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n if (mapInstance) {\n mapInstance.setProps(props);\n }\n });\n\n useImperativeHandle(ref, () => contextValue.map, [mapInstance]);\n\n const style: CSSProperties = useMemo(\n () => ({\n position: 'relative',\n width: '100%',\n height: '100%',\n ...props.style\n }),\n [props.style]\n );\n\n const CHILD_CONTAINER_STYLE = {\n height: '100%'\n };\n\n return (\n <div id={props.id} ref={containerRef} style={style}>\n {mapInstance && (\n <MapContext.Provider value={contextValue}>\n <div mapboxgl-children=\"\" style={CHILD_CONTAINER_STYLE}>\n {props.children}\n </div>\n </MapContext.Provider>\n )}\n </div>\n );\n});\n\nMap.displayName = 'Map';\nMap.defaultProps = defaultProps;\n\nexport default Map;\n","import * as React from 'react';\n// This is a simplified version of\n// https://github.com/facebook/react/blob/4131af3e4bf52f3a003537ec95a1655147c81270/src/renderers/dom/shared/CSSPropertyOperations.js#L62\nconst unitlessNumber = /box|flex|grid|column|lineHeight|fontWeight|opacity|order|tabSize|zIndex/;\n\nexport function applyReactStyle(element: HTMLElement, styles: React.CSSProperties) {\n if (!element || !styles) {\n return;\n }\n const style = element.style;\n\n for (const key in styles) {\n const value = styles[key];\n if (Number.isFinite(value) && !unitlessNumber.test(key)) {\n style[key] = `${value}px`;\n } else {\n style[key] = value;\n }\n }\n}\n","/* global document */\nimport * as React from 'react';\nimport {createPortal} from 'react-dom';\nimport {useEffect, useMemo, useRef, useContext} from 'react';\nimport {applyReactStyle} from '../utils/apply-react-style';\n\nimport type {\n MarkerDragEvent,\n MapboxPopup,\n PointLike,\n Anchor,\n Alignment,\n MapboxEvent,\n MapboxMarker\n} from '../types';\n\nimport {MapContext} from './map';\nimport {arePointsEqual} from '../utils/deep-equal';\n\nexport type MarkerProps = {\n /** Longitude of the anchor location */\n longitude: number;\n /** Latitude of the anchor location */\n latitude: number;\n /** A string indicating the part of the Marker that should be positioned closest to the coordinate set via Marker.setLngLat.\n * Options are `'center'`, `'top'`, `'bottom'`, `'left'`, `'right'`, `'top-left'`, `'top-right'`, `'bottom-left'`, and `'bottom-right'`.\n * @default \"center\"\n */\n anchor?: Anchor;\n /**\n * The max number of pixels a user can shift the mouse pointer during a click on the marker for it to be considered a valid click\n * (as opposed to a marker drag). The default (0) is to inherit map's clickTolerance.\n */\n clickTolerance?: number;\n /** The color to use for the default marker if options.element is not provided.\n * @default \"#3FB1CE\"\n */\n color?: string;\n /** A boolean indicating whether or not a marker is able to be dragged to a new position on the map.\n * @default false\n */\n draggable?: boolean;\n /** The offset in pixels as a PointLike object to apply relative to the element's center. Negatives indicate left and up. */\n offset?: PointLike;\n /** `map` aligns the `Marker` to the plane of the map.\n * `viewport` aligns the `Marker` to the plane of the viewport.\n * `auto` automatically matches the value of `rotationAlignment`.\n * @default \"auto\"\n */\n pitchAlignment?: Alignment;\n /** The rotation angle of the marker in degrees, relative to its `rotationAlignment` setting. A positive value will rotate the marker clockwise.\n * @default 0\n */\n rotation?: number;\n /** `map` aligns the `Marker`'s rotation relative to the map, maintaining a bearing as the map rotates.\n * `viewport` aligns the `Marker`'s rotation relative to the viewport, agnostic to map rotations.\n * `auto` is equivalent to `viewport`.\n * @default \"auto\"\n */\n rotationAlignment?: Alignment;\n /** The scale to use for the default marker if options.element is not provided.\n * The default scale (1) corresponds to a height of `41px` and a width of `27px`.\n * @default 1\n */\n scale?: number;\n /** A Popup instance that is bound to the marker */\n popup?: MapboxPopup;\n /** CSS style override, applied to the control's container */\n style?: React.CSSProperties;\n onClick?: (e: MapboxEvent<MouseEvent>) => void;\n onDragStart?: (e: MarkerDragEvent) => void;\n onDrag?: (e: MarkerDragEvent) => void;\n onDragEnd?: (e: MarkerDragEvent) => void;\n children?: React.ReactNode;\n};\n\nconst defaultProps: Partial<MarkerProps> = {\n draggable: false,\n popup: null,\n rotation: 0,\n rotationAlignment: 'auto',\n pitchAlignment: 'auto'\n};\n\n/* eslint-disable complexity,max-statements */\nfunction Marker(props: MarkerProps) {\n const {map, mapLib} = useContext(MapContext);\n const thisRef = useRef({props});\n thisRef.current.props = props;\n\n const marker: MapboxMarker = useMemo(() => {\n let hasChildren = false;\n React.Children.forEach(props.children, el => {\n if (el) {\n hasChildren = true;\n }\n });\n const options = {\n ...props,\n element: hasChildren ? document.createElement('div') : null\n };\n\n const mk = new mapLib.Marker(options).setLngLat([props.longitude, props.latitude]);\n\n mk.getElement().addEventListener('click', (e: MouseEvent) => {\n thisRef.current.props.onClick?.({\n type: 'click',\n target: mk,\n originalEvent: e\n });\n });\n\n mk.on('dragstart', e => {\n const evt = e as MarkerDragEvent;\n evt.lngLat = marker.getLngLat();\n thisRef.current.props.onDragStart?.(evt);\n });\n mk.on('drag', e => {\n const evt = e as MarkerDragEvent;\n evt.lngLat = marker.getLngLat();\n thisRef.current.props.onDrag?.(evt);\n });\n mk.on('dragend', e => {\n const evt = e as MarkerDragEvent;\n evt.lngLat = marker.getLngLat();\n thisRef.current.props.onDragEnd?.(evt);\n });\n\n return mk;\n }, []);\n\n useEffect(() => {\n marker.addTo(map.getMap());\n\n return () => {\n marker.remove();\n };\n }, []);\n\n useEffect(() => {\n applyReactStyle(marker.getElement(), props.style);\n }, [props.style]);\n\n if (marker.getLngLat().lng !== props.longitude || marker.getLngLat().lat !== props.latitude) {\n marker.setLngLat([props.longitude, props.latitude]);\n }\n if (props.offset && !arePointsEqual(marker.getOffset(), props.offset)) {\n marker.setOffset(props.offset);\n }\n if (marker.isDraggable() !== props.draggable) {\n marker.setDraggable(props.draggable);\n }\n if (marker.getRotation() !== props.rotation) {\n marker.setRotation(props.rotation);\n }\n if (marker.getRotationAlignment() !== props.rotationAlignment) {\n marker.setRotationAlignment(props.rotationAlignment);\n }\n if (marker.getPitchAlignment() !== props.pitchAlignment) {\n marker.setPitchAlignment(props.pitchAlignment);\n }\n if (marker.getPopup() !== props.popup) {\n marker.setPopup(props.popup);\n }\n\n return createPortal(props.children, marker.getElement());\n}\n\nMarker.defaultProps = defaultProps;\n\n// @ts-ignore\nexport default React.memo(Marker);\n","/* global document */\nimport * as React from 'react';\nimport {createPortal} from 'react-dom';\nimport {useEffect, useMemo, useRef, useContext} from 'react';\nimport {applyReactStyle} from '../utils/apply-react-style';\n\nimport type {PopupEvent, Anchor, PointLike, MapboxPopup} from '../types';\n\nimport {MapContext} from './map';\nimport {deepEqual} from '../utils/deep-equal';\n\nexport type PopupProps = {\n /** Longitude of the anchor location */\n longitude: number;\n /** Latitude of the anchor location */\n latitude: number;\n /**\n * A string indicating the part of the popup that should be positioned closest to the coordinate.\n * Options are `'center'`, `'top'`, `'bottom'`, `'left'`, `'right'`, `'top-left'`, `'top-right'`, `'bottom-left'`,\n * and `'bottom-right'`. If unset, the anchor will be dynamically set to ensure the popup falls within the map\n * container with a preference for `'bottom'`.\n */\n anchor?: Anchor;\n /**\n * If `true`, a close button will appear in the top right corner of the popup.\n * @default true\n */\n closeButton?: boolean;\n /**\n * If `true`, the popup will close when the map is clicked.\n * @default true\n */\n closeOnClick?: boolean;\n /**\n * If `true`, the popup will closed when the map moves.\n * @default false\n */\n closeOnMove?: boolean;\n /**\n * If `true`, the popup will try to focus the first focusable element inside the popup.\n * @default true\n */\n focusAfterOpen?: boolean;\n /**\n * A pixel offset applied to the popup's location specified as:\n * - a single number specifying a distance from the popup's location\n * - a PointLike specifying a constant offset\n * - an object of Points specifing an offset for each anchor position.\n */\n offset?: number | PointLike | Partial<{[anchor in Anchor]: PointLike}>;\n /** Space-separated CSS class names to add to popup container. */\n className?: string;\n /**\n * A string that sets the CSS property of the popup's maximum width (for example, `'300px'`).\n * To ensure the popup resizes to fit its content, set this property to `'none'`\n * @default \"240px\"\n */\n maxWidth?: string;\n /** CSS style override, applied to the control's container */\n style?: React.CSSProperties;\n\n onOpen?: (e: PopupEvent) => void;\n onClose?: (e: PopupEvent) => void;\n children?: React.ReactNode;\n};\n\n// Adapted from https://github.com/mapbox/mapbox-gl-js/blob/v1.13.0/src/ui/popup.js\nfunction getClassList(className: string) {\n return new Set(className ? className.trim().split(/\\s+/) : []);\n}\n\n/* eslint-disable complexity,max-statements */\nfunction Popup(props: PopupProps) {\n const {map, mapLib} = useContext(MapContext);\n const container = useMemo(() => {\n return document.createElement('div');\n }, []);\n const thisRef = useRef({props});\n thisRef.current.props = props;\n\n const popup: MapboxPopup = useMemo(() => {\n const options = {...props};\n const pp = new mapLib.Popup(options).setLngLat([props.longitude, props.latitude]);\n pp.once('open', e => {\n thisRef.current.props.onOpen?.(e as PopupEvent);\n });\n return pp;\n }, []);\n\n useEffect(() => {\n const onClose = e => {\n thisRef.current.props.onClose?.(e as PopupEvent);\n };\n popup.on('close', onClose);\n popup.setDOMContent(container).addTo(map.getMap());\n\n return () => {\n // https://github.com/visgl/react-map-gl/issues/1825\n // onClose should not be fired if the popup is removed by unmounting\n // When using React strict mode, the component is mounted twice.\n // Firing the onClose callback here would be a false signal to remove the component.\n popup.off('close', onClose);\n if (popup.isOpen()) {\n popup.remove();\n }\n };\n }, []);\n\n useEffect(() => {\n applyReactStyle(popup.getElement(), props.style);\n }, [props.style]);\n\n if (popup.isOpen()) {\n if (popup.getLngLat().lng !== props.longitude || popup.getLngLat().lat !== props.latitude) {\n popup.setLngLat([props.longitude, props.latitude]);\n }\n // @ts-ignore\n if (props.offset && !deepEqual(popup.options.offset, props.offset)) {\n popup.setOffset(props.offset);\n }\n // @ts-ignore\n if (popup.options.anchor !== props.anchor || popup.options.maxWidth !== props.maxWidth) {\n // @ts-ignore\n popup.options.anchor = props.anchor;\n popup.setMaxWidth(props.maxWidth);\n }\n // @ts-ignore\n if (popup.options.className !== props.className) {\n // @ts-ignore\n const prevClassList = getClassList(popup.options.className);\n const nextClassList = getClassList(props.className);\n\n for (const c of prevClassList) {\n if (!nextClassList.has(c)) {\n popup.removeClassName(c);\n }\n }\n for (const c of nextClassList) {\n if (!prevClassList.has(c)) {\n popup.addClassName(c);\n }\n }\n // @ts-ignore\n popup.options.className = props.className;\n }\n }\n\n return createPortal(props.children, container);\n}\n\n// @ts-ignore\nexport default React.memo(Popup);\n","import {useContext, useMemo, useEffect} from 'react';\nimport type {IControl, ControlPosition} from '../types';\nimport {MapContext} from './map';\nimport type {MapContextValue} from './map';\n\ntype ControlOptions = {\n position?: ControlPosition;\n};\n\nfunction useControl<T extends IControl>(\n onCreate: (context: MapContextValue) => T,\n opts?: ControlOptions\n): T;\n\nfunction useControl<T extends IControl>(\n onCreate: (context: MapContextValue) => T,\n onRemove: (context: MapContextValue) => void,\n opts?: ControlOptions\n): T;\n\nfunction useControl<T extends IControl>(\n onCreate: (context: MapContextValue) => T,\n onAdd: (context: MapContextValue) => void,\n onRemove: (context: MapContextValue) => void,\n opts?: ControlOptions\n): T;\n\nfunction useControl<T extends IControl>(\n onCreate: (context: MapContextValue) => T,\n arg1?: ((context: MapContextValue) => void) | ControlOptions,\n arg2?: ((context: MapContextValue) => void) | ControlOptions,\n arg3?: ControlOptions\n): T {\n const context = useContext(MapContext);\n const ctrl = useMemo(() => onCreate(context), []);\n\n useEffect(() => {\n const opts = (arg3 || arg2 || arg1) as ControlOptions;\n const onAdd = typeof arg1 === 'function' && typeof arg2 === 'function' ? arg1 : null;\n const onRemove = typeof arg2 === 'function' ? arg2 : typeof arg1 === 'function' ? arg1 : null;\n\n const {map} = context;\n if (!map.hasControl(ctrl)) {\n map.addControl(ctrl, opts?.position);\n if (onAdd) {\n onAdd(context);\n }\n }\n\n return () => {\n if (onRemove) {\n onRemove(context);\n }\n // Map might have been removed (parent effects are destroyed before child ones)\n if (map.hasControl(ctrl)) {\n map.removeControl(ctrl);\n }\n };\n }, []);\n\n return ctrl;\n}\n\nexport default useControl;\n","import * as React from 'react';\nimport {useEffect} from 'react';\nimport {applyReactStyle} from '../utils/apply-react-style';\nimport useControl from './use-control';\n\nimport type {ControlPosition, MapboxAttributionControl} from '../types';\n\nexport type AttributionControlProps = {\n /**\n * If true , force a compact attribution that shows the full attribution on mouse hover.\n * If false , force the full attribution control. The default is a responsive attribution\n * that collapses when the map is less than 640 pixels wide. */\n compact?: boolean;\n /** String or strings to show in addition to any other attributions. */\n customAttribution?: string | string[];\n /** Placement of the control relative to the map. */\n position?: ControlPosition;\n /** CSS style override, applied to the control's container */\n style?: React.CSSProperties;\n};\n\nfunction AttributionControl(props: AttributionControlProps): null {\n const ctrl = useControl<MapboxAttributionControl>(\n ({mapLib}) => new mapLib.AttributionControl(props),\n {\n position: props.position\n }\n );\n\n useEffect(() => {\n // @ts-ignore\n applyReactStyle(ctrl._container, props.style);\n }, [props.style]);\n\n return null;\n}\n\nexport default React.memo(AttributionControl);\n","/* global document */\nimport * as React from 'react';\nimport {useEffect} from 'react';\nimport {applyReactStyle} from '../utils/apply-react-style';\nimport useControl from './use-control';\n\nimport type {ControlPosition, MapboxFullscreenControl} from '../types';\n\nexport type FullscreenControlProps = {\n /** Id of the DOM element which should be made full screen. By default, the map container\n * element will be made full screen. */\n containerId?: string;\n /** Placement of the control relative to the map. */\n position?: ControlPosition;\n /** CSS style override, applied to the control's container */\n style?: React.CSSProperties;\n};\n\nfunction FullscreenControl(props: FullscreenControlProps): null {\n const ctrl = useControl<MapboxFullscreenControl>(\n ({mapLib}) =>\n new mapLib.FullscreenControl({\n container: props.containerId && document.getElementById(props.containerId)\n }),\n {position: props.position}\n );\n\n useEffect(() => {\n // @ts-ignore\n applyReactStyle(ctrl._controlContainer, props.style);\n }, [props.style]);\n\n return null;\n}\n\nexport default React.memo(FullscreenControl);\n","import * as React from 'react';\nimport {forwardRef, useImperativeHandle, useRef, useEffect} from 'react';\nimport {applyReactStyle} from '../utils/apply-react-style';\nimport useControl from './use-control';\n\nimport type {\n ControlPosition,\n PositionOptions,\n FitBoundsOptions,\n MapboxGeolocateControl,\n GeolocateEvent,\n GeolocateResultEvent,\n GeolocateErrorEvent\n} from '../types';\n\nexport type GeolocateControlRef = {\n /** Triggers a geolocate event */\n trigger: () => boolean;\n};\n\nexport type GeolocateControlProps = {\n /**\n * A Geolocation API PositionOptions object.\n * @default {enableHighAccuracy:false,timeout:6000}\n */\n positionOptions?: PositionOptions;\n /** A Map#fitBounds options object to use when the map is panned and zoomed to the user's location.\n * @default {maxZoom:15}\n */\n fitBoundsOptions?: FitBoundsOptions;\n /** If true the GeolocateControl becomes a toggle button and when active the map will receive\n * updates to the user's location as it changes. Default false.\n * @default false\n */\n trackUserLocation?: boolean;\n /** Draw a transparent circle will be drawn around the user location indicating the accuracy\n * (95% confidence level) of the user's location. Set to false to disable.\n * This only has effect if `showUserLocation` is true.\n * @default true\n */\n showAccuracyCircle?: boolean;\n /**\n * Show a dot on the map at the user's location. Set to false to disable.\n * @default true\n */\n showUserLocation?: boolean;\n /** If true an arrow will be drawn next to the user location dot indicating the device's heading.\n * This only has affect when `trackUserLocation` is true. Default false.\n * @default false\n */\n showUserHeading?: boolean;\n /** Placement of the control relative to the map. */\n position?: ControlPosition;\n /** CSS style override, applied to the control's container */\n style?: React.CSSProperties;\n\n /** Called on each Geolocation API position update that returned as success. */\n onGeolocate?: (e: GeolocateResultEvent) => void;\n /** Called on each Geolocation API position update that returned as an error. */\n onError?: (e: GeolocateErrorEvent) => void;\n /** Called on each Geolocation API position update that returned as success but user position\n * is out of map `maxBounds`. */\n onOutOfMaxBounds?: (e: GeolocateResultEvent) => void;\n /** Called when the GeolocateControl changes to the active lock state. */\n onTrackUserLocationStart?: (e: GeolocateEvent) => void;\n /** Called when the GeolocateControl changes to the background state. */\n onTrackUserLocationEnd?: (e: GeolocateEvent) => void;\n};\n\nconst GeolocateControl = forwardRef<GeolocateControlRef, GeolocateControlProps>((props, ref) => {\n const thisRef = useRef({props});\n\n const ctrl = useControl<MapboxGeolocateControl>(\n ({mapLib}) => {\n const gc = new mapLib.GeolocateControl(props);\n\n // Hack: fix GeolocateControl reuse\n // When using React strict mode, the component is mounted twice.\n // GeolocateControl's UI creation is asynchronous. Removing and adding it back causes the UI to be initialized twice.\n const setupUI = gc._setupUI;\n gc._setupUI = args => {\n if (!gc._container.hasChildNodes()) {\n setupUI(args);\n }\n };\n\n gc.on('geolocate', e => {\n thisRef.current.props.onGeolocate?.(e as GeolocateResultEvent);\n });\n gc.on('error', e => {\n thisRef.current.props.onError?.(e as GeolocateErrorEvent);\n });\n gc.on('outofmaxbounds', e => {\n thisRef.current.props.onOutOfMaxBounds?.(e as GeolocateResultEvent);\n });\n gc.on('trackuserlocationstart', e => {\n thisRef.current.props.onTrackUserLocationStart?.(e as GeolocateEvent);\n });\n gc.on('trackuserlocationend', e => {\n thisRef.current.props.onTrackUserLocationEnd?.(e as GeolocateEvent);\n });\n\n return gc;\n },\n {position: props.position}\n );\n\n thisRef.current.props = props;\n\n useImperativeHandle(\n ref,\n () => ({\n trigger: () => ctrl.trigger()\n }),\n []\n );\n\n useEffect(() => {\n // @ts-ignore\n applyReactStyle(ctrl._container, props.style);\n }, [props.style]);\n\n return null;\n});\n\nGeolocateControl.displayName = 'GeolocateControl';\n\nexport default React.memo(GeolocateControl);\n","import * as React from 'react';\nimport {useEffect} from 'react';\nimport {applyReactStyle} from '../utils/apply-react-style';\nimport useControl from './use-control';\n\nimport type {ControlPosition, MapboxNavigationControl} from '../types';\n\nexport type NavigationControlProps = {\n /** If true the compass button is included.\n * @default true\n */\n showCompass?: boolean;\n /** If true the zoom-in and zoom-out buttons are included.\n * @default true\n */\n showZoom?: boolean;\n /** If true the pitch is visualized by rotating X-axis of compass.\n * @default false\n */\n visualizePitch?: boolean;\n /** Placement of the control relative to the map. */\n position?: ControlPosition;\n /** CSS style override, applied to the control's container */\n style?: React.CSSProperties;\n};\n\nfunction NavigationControl(props: NavigationControlProps): null {\n const ctrl = useControl<MapboxNavigationControl>(\n ({mapLib}) => new mapLib.NavigationControl(props),\n {\n position: props.position\n }\n );\n\n useEffect(() => {\n // @ts-ignore\n applyReactStyle(ctrl._container, props.style);\n }, [props.style]);\n\n return null;\n}\n\nexport default React.memo(NavigationControl);\n","import * as React from 'react';\nimport {useEffect} from 'react';\nimport {applyReactStyle} from '../utils/apply-react-style';\nimport useControl from './use-control';\n\nimport type {ControlPosition, MapboxScaleControl} from '../types';\n\nexport type ScaleControlProps = {\n /** Unit of the distance.\n * @default \"metric\"\n */\n unit?: 'imperial' | 'metric' | 'nautical';\n /** The maximum length of the scale control in pixels.\n * @default 100\n */\n maxWidth?: number;\n /** Placement of the control relative to the map. */\n position?: ControlPosition;\n /** CSS style override, applied to the control's container */\n style?: React.CSSProperties;\n};\n\nconst defaultProps: ScaleControlProps = {\n unit: 'metric',\n maxWidth: 100\n};\n\nfunction ScaleControl(props: ScaleControlProps): null {\n const ctrl = useControl<MapboxScaleControl>(({mapLib}) => new mapLib.ScaleControl(props), {\n position: props.position\n });\n\n // @ts-ignore\n if (ctrl.options.unit !== props.unit || ctrl.options.maxWidth !== props.maxWidth) {\n // @ts-ignore\n ctrl.options.maxWidth = props.maxWidth;\n // This method will trigger an update\n ctrl.setUnit(props.unit);\n }\n\n useEffect(() => {\n // @ts-ignore\n applyReactStyle(ctrl._container, props.style);\n }, [props.style]);\n\n return null;\n}\n\nScaleControl.defaultProps = defaultProps;\n\nexport default React.memo(ScaleControl);\n","export default function assert(condition: any, message: string) {\n if (!condition) {\n throw new Error(message);\n }\n}\n","import * as React from 'react';\nimport {useContext, useEffect, useMemo, useState, useRef} from 'react';\nimport {cloneElement} from 'react';\nimport {MapContext} from './map';\nimport assert from '../utils/assert';\nimport {deepEqual} from '../utils/deep-equal';\n\nimport type {\n MapboxMap,\n AnySourceData,\n GeoJSONSource,\n ImageSource,\n VideoSource,\n AnySourceImpl\n} from '../types';\n\nexport type SourceProps = AnySourceData & {\n id?: string;\n children?: any;\n};\n\nlet sourceCounter = 0;\n\nfunction createSource(map: MapboxMap, id: string, props: SourceProps) {\n // @ts-ignore\n if (map.style && map.style._loaded) {\n const options = {...props};\n delete options.id;\n delete options.children;\n // @ts-ignore\n map.addSource(id, options);\n return map.getSource(id);\n }\n return null;\n}\n\n/* eslint-disable complexity */\nfunction updateSource(source: AnySourceImpl, props: SourceProps, prevProps: SourceProps) {\n assert(props.id === prevProps.id, 'source id changed');\n assert(props.type === prevProps.type, 'source type changed');\n\n let changedKey = '';\n let changedKeyCount = 0;\n\n for (const key in props) {\n if (key !== 'children' && key !== 'id' && !deepEqual(prevProps[key], props[key])) {\n changedKey = key;\n changedKeyCount++;\n }\n }\n\n if (!changedKeyCount) {\n return;\n }\n\n const type = props.type;\n\n if (type === 'geojson') {\n (source as GeoJSONSource).setData(props.data);\n } else if (type === 'image') {\n (source as ImageSource).updateImage({url: props.url, coordinates: props.coordinates});\n } else if (\n (type === 'canvas' || type === 'video') &&\n changedKeyCount === 1 &&\n changedKey === 'coordinates'\n ) {\n (source as VideoSource).setCoordinates(props.coordinates);\n } else if (type === 'vector' && 'setUrl' in source) {\n // Added in 1.12.0:\n // vectorTileSource.setTiles\n // vectorTileSource.setUrl\n switch (changedKey) {\n case 'url':\n source.setUrl(props.url);\n break;\n case 'tiles':\n source.setTiles(props.tiles);\n break;\n default:\n }\n } else {\n // eslint-disable-next-line\n console.warn(`Unable to update <Source> prop: ${changedKey}`);\n }\n}\n/* eslint-enable complexity */\n\nfunction Source(props: SourceProps) {\n const map: MapboxMap = useContext(MapContext).map.getMap();\n const propsRef = useRef(props);\n const [, setStyleLoaded] = useState(0);\n\n const id = useMemo(() => props.id || `jsx-source-${sourceCounter++}`, []);\n\n useEffect(() => {\n if (map) {\n const forceUpdate = () => setTimeout(() => setStyleLoaded(version => version + 1), 0);\n map.on('styledata', forceUpdate);\n forceUpdate();\n\n return () => {\n map.off('styledata', forceUpdate);\n // @ts-ignore\n if (map.style && map.style._loaded && map.getSource(id)) {\n // Parent effects are destroyed before child ones, see\n // https://github.com/facebook/react/issues/16728\n // Source can only be removed after all child layers are removed\n const allLayers = map.getStyle()?.layers;\n if (allLayers) {\n for (const layer of allLayers) {\n // @ts-ignore (2339) source does not exist on all layer types\n if (layer.source === id) {\n map.removeLayer(layer.id);\n }\n }\n }\n map.removeSource(id);\n }\n };\n }\n return undefined;\n }, [map]);\n\n // @ts-ignore\n let source = map && map.style && map.getSource(id);\n if (source) {\n updateSource(source, props, propsRef.current);\n } else {\n source = createSource(map, id, props);\n }\n propsRef.current = props;\n\n return (\n (source &&\n React.Children.map(\n props.children,\n child =>\n child &&\n cloneElement(child, {\n source: id\n })\n )) ||\n null\n );\n}\n\nexport default Source;\n","import {useContext, useEffect, useMemo, useState, useRef} from 'react';\nimport {MapContext} from './map';\nimport assert from '../utils/assert';\nimport {deepEqual} from '../utils/deep-equal';\n\nimport type {MapboxMap, AnyLayer} from '../types';\n\n// Omiting property from a union type, see\n// https://github.com/microsoft/TypeScript/issues/39556#issuecomment-656925230\ntype OptionalId<T> = T extends {id: string} ? Omit<T, 'id'> & {id?: string} : T;\n\nexport type LayerProps = OptionalId<AnyLayer> & {\n /** If set, the layer will be inserted before the specified layer */\n beforeId?: string;\n};\n\n/* eslint-disable complexity, max-statements */\nfunction updateLayer(map: MapboxMap, id: string, props: LayerProps, prevProps: LayerProps) {\n assert(props.id === prevProps.id, 'layer id changed');\n assert(props.type === prevProps.type, 'layer type changed');\n\n if (props.type === 'custom' || prevProps.type === 'custom') {\n return;\n }\n\n const {layout = {}, paint = {}, filter, minzoom, maxzoom, beforeId} = props;\n\n if (beforeId !== prevProps.beforeId) {\n map.moveLayer(id, beforeId);\n }\n if (layout !== prevProps.layout) {\n const prevLayout = prevProps.layout || {};\n for (const key in layout) {\n if (!deepEqual(layout[key], prevLayout[key])) {\n map.setLayoutProperty(id, key, layout[key]);\n }\n }\n for (const key in prevLayout) {\n if (!layout.hasOwnProperty(key)) {\n map.setLayoutProperty(id, key, undefined);\n }\n }\n }\n if (paint !== prevProps.paint) {\n const prevPaint = prevProps.paint || {};\n for (const key in paint) {\n if (!deepEqual(paint[key], prevPaint[key])) {\n map.setPaintProperty(id, key, paint[key]);\n }\n }\n for (const key in prevPaint) {\n if (!paint.hasOwnProperty(key)) {\n map.setPaintProperty(id, key, undefined);\n }\n }\n }\n if (!deepEqual(filter, prevProps.filter)) {\n map.setFilter(id, filter);\n }\n if (minzoom !== prevProps.minzoom || maxzoom !== prevProps.maxzoom) {\n map.setLayerZoomRange(id, minzoom, maxzoom);\n }\n}\n\nfunction createLayer(map: MapboxMap, id: string, props: LayerProps) {\n // @ts-ignore\n if (map.style && map.style._loaded && (!('source' in props) || map.getSource(props.source))) {\n const options: LayerProps = {...props, id};\n delete options.beforeId;\n\n // @ts-ignore\n map.addLayer(options, props.beforeId);\n }\n}\n\n/* eslint-enable complexity, max-statements */\n\nlet layerCounter = 0;\n\nfunction Layer(props: LayerProps) {\n const map: MapboxMap = useContext(MapContext).map.getMap();\n const propsRef = useRef(props);\n const [, setStyleLoaded] = useState(0);\n\n const id = useMemo(() => props.id || `jsx-layer-${layerCounter++}`, []);\n\n useEffect(() => {\n if (map) {\n const forceUpdate = () => setStyleLoaded(version => version + 1);\n map.on('styledata', forceUpdate);\n forceUpdate();\n\n return () => {\n map.off('styledata', forceUpdate);\n // @ts-ignore\n if (map.style && map.style._loaded && map.getLayer(id)) {\n map.removeLayer(id);\n }\n };\n }\n return undefined;\n }, [map]);\n\n // @ts-ignore\n const layer = map && map.style && map.getLayer(id);\n if (layer) {\n try {\n updateLayer(map, id, props, propsRef.current);\n } catch (error) {\n console.warn(error); // eslint-disable-line\n }\n } else {\n createLayer(map, id, props);\n }\n\n // Store last rendered props\n propsRef.current = props;\n\n return null;\n}\n\nexport default Layer;\n","import { feature, lineString, isObject, point } from '@turf/helpers';\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j,\n k,\n l,\n geometry,\n stopG,\n coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n coordIndex = 0,\n isGeometryCollection,\n type = geojson.type,\n isFeatureCollection = type === \"FeatureCollection\",\n isFeature = type === \"Feature\",\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection\n ? geojson.features[featureIndex].geometry\n : isFeature\n ? geojson.geometry\n : geojson;\n isGeometryCollection = geometryMaybeCollection\n ? geometryMaybeCollection.type === \"GeometryCollection\"\n : false;\n stopG = isGeometryCollection\n ? geometryMaybeCollection.geometries.length\n : 1;\n\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection\n ? geometryMaybeCollection.geometries[geomIndex]\n : geometryMaybeCollection;\n\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n\n wrapShrink =\n excludeWrapCoord &&\n (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n ? 1\n : 0;\n\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (\n callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (\n callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (\n callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (\n callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (\n coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n false\n )\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function (\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) {\n if (coordIndex === 0 && initialValue === undefined)\n previousValue = currentCoord;\n else\n previousValue = callback(\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function (currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function (currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n var i,\n j,\n g,\n geometry,\n stopG,\n geometryMaybeCollection,\n isGeometryCollection,\n featureProperties,\n featureBBox,\n featureId,\n featureIndex = 0,\n isFeatureCollection = geojson.type === \"FeatureCollection\",\n isFeature = geojson.type === \"Feature\",\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection\n ? geojson.features[i].geometry\n : isFeature\n ? geojson.geometry\n : geojson;\n featureProperties = isFeatureCollection\n ? geojson.features[i].properties\n : isFeature\n ? geojson.properties\n : {};\n featureBBox = isFeatureCollection\n ? geojson.features[i].bbox\n : isFeature\n ? geojson.bbox\n : undefined;\n featureId = isFeatureCollection\n ? geojson.features[i].id\n : isFeature\n ? geojson.id\n : undefined;\n isGeometryCollection = geometryMaybeCollection\n ? geometryMaybeCollection.type === \"GeometryCollection\"\n : false;\n stopG = isGeometryCollection\n ? geometryMaybeCollection.geometries.length\n : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection\n ? geometryMaybeCollection.geometries[g]\n : geometryMaybeCollection;\n\n // Handle null Geometry\n if (geometry === null) {\n if (\n callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (\n callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (\n callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function (\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (\n callback(\n feature(geometry, properties, { bbox: bbox, id: id }),\n featureIndex,\n 0\n ) === false\n )\n return false;\n return;\n }\n\n var geomType;\n\n // Callback for multi-geometry\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n\n for (\n var multiFeatureIndex = 0;\n multiFeatureIndex < geometry.coordinates.length;\n multiFeatureIndex++\n ) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate,\n };\n if (\n callback(feature(geom, properties), featureIndex, multiFeatureIndex) ===\n false\n )\n return false;\n }\n });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function (currentFeature, featureIndex, multiFeatureIndex) {\n if (\n featureIndex === 0 &&\n multiFeatureIndex === 0 &&\n initialValue === undefined\n )\n previousValue = currentFeature;\n else\n previousValue = callback(\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n\n // Exclude null Geometries\n if (!feature.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n\n // Generate 2-vertex line segments\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (\n coordEach(\n feature,\n function (\n currentCoord,\n coordIndex,\n featureIndexCoord,\n multiPartIndexCoord,\n geometryIndex\n ) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (\n previousCoords === undefined ||\n featureIndex > previousFeatureIndex ||\n multiPartIndexCoord > previousMultiIndex ||\n geometryIndex > prevGeomIndex\n ) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n [previousCoords, currentCoord],\n feature.properties\n );\n if (\n callback(\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false\n )\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false\n )\n return false;\n });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentIndex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function (\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) {\n if (started === false && initialValue === undefined)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n\n flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n if (feature.geometry === null) return;\n var type = feature.geometry.type;\n var coords = feature.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (\n var geometryIndex = 0;\n geometryIndex < coords.length;\n geometryIndex++\n ) {\n if (\n callback(\n lineString(coords[geometryIndex], feature.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n }\n break;\n }\n });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1],\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1],\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex =\n coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex =\n coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\n\nexport { coordAll, coordEach, coordReduce, featureEach, featureReduce, findPoint, findSegment, flattenEach, flattenReduce, geomEach, geomReduce, lineEach, lineReduce, propEach, propReduce, segmentEach, segmentReduce };\n","import { coordEach } from \"@turf/meta\";\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */\nfunction bbox(geojson) {\n var result = [Infinity, Infinity, -Infinity, -Infinity];\n coordEach(geojson, function (coord) {\n if (result[0] > coord[0]) {\n result[0] = coord[0];\n }\n if (result[1] > coord[1]) {\n result[1] = coord[1];\n }\n if (result[2] < coord[0]) {\n result[2] = coord[0];\n }\n if (result[3] < coord[1]) {\n result[3] = coord[1];\n }\n });\n return result;\n}\nbbox[\"default\"] = bbox;\nexport default bbox;\n","import {\n action,\n computed,\n makeObservable,\n observable,\n runInAction\n} from 'mobx';\nimport URI from 'urijs';\n\nexport default class PropertiesStore {\n loading = false;\n requestWith = [];\n requestAppend = [];\n loadedPermissions = false;\n\n /*\n * Note that when adding new properties to the list it has to be\n * an assignment, otherwise the properties table doesn't observe the\n * change. Another fix is to map over the properties whenever\n * passing them into the table but I thought it would be best to use\n * this fix so that it doesn't cause a frustrating bug for someone\n * in the future.\n *\n * This affects loadProperties and addProperty.\n */\n properties = [];\n selectedPropertyId = null;\n\n // Reference to generic user store.\n // Must contain bearerToken {string}, selectedDatabase {string}, refreshBearerToken {function}, toast {function}\n userStore = null;\n\n constructor(userStore) {\n this.userStore = userStore;\n makeObservable(this, {\n loading: observable,\n loadedPermissions: observable,\n properties: observable,\n selectedPropertyId: observable,\n requestWith: observable,\n requestAppend: observable,\n\n loadProperties: action,\n loadPropertyPermissions: action,\n addProperty: action,\n updateProperty: action,\n selectProperty: action,\n clearSelectedProperty: action,\n setRequestWith: action,\n setRequestAppend: action,\n\n selectedProperty: computed\n });\n }\n\n clearStore() {\n this.loading = false;\n this.requestWith = [];\n this.requestAppend = [];\n this.loadedPermissions = false;\n this.properties = [];\n this.selectedPropertyId = null;\n }\n\n /**\n * Load the list of properties from the properties api.\n *\n * @param {string} selectedDatabase\n * @param {string} bearerToken\n * @param {function} refresh\n * @param {boolean} withAllOptions\n */\n loadProperties(\n selectedDatabase,\n bearerToken,\n refresh,\n withPermissions = false\n ) {\n const currentUserId = this.userStore.user.id;\n this.loading = true;\n\n // Build the request url\n const uri = URI(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/properties`\n );\n\n const requestWith = [...this.requestWith];\n const requestAppend = [...this.requestAppend];\n\n if (withPermissions) {\n requestWith.push('userProperties.propertyRoles.propertyPermissions');\n requestAppend.push('user_permissions');\n }\n\n uri.setQuery('with[]', requestWith);\n uri.setQuery('append[]', requestAppend);\n\n // Send the request\n return fetch(uri.toString(), {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + bearerToken,\n SeasonalDatabase: selectedDatabase\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) refresh();\n else throw Error(res.statusText);\n })\n .then(async (data) => {\n // The user has logged into a different account\n if (currentUserId !== this.userStore.user.id) {\n this.loading = false;\n return;\n }\n\n /**\n * withAllOptions needs to be set before properties so that the condition on the properties\n * page which reloads properties with all options is not triggered twice.\n */\n if (withPermissions) this.loadedPermissions = true;\n\n this.properties = data.sort((a, b) =>\n a.name < b.name ? -1 : a.name > b.name ? 1 : 0\n );\n if (data.length > 0) {\n // Try find the property identifier saved in local storage\n const selectedPropertyIdentifier = window.localStorage.getItem(\n 'selectedPropertyIdentifier'\n );\n const selectedProperty = selectedPropertyIdentifier\n ? data.find(\n (property) => property.identifier === selectedPropertyIdentifier\n )\n : null;\n\n // If a property identifier saved in local storage was not found trigger a toast\n if (selectedPropertyIdentifier && !selectedProperty)\n this.userStore.toast(\n 'Your selected property has been deselected!',\n 'warning'\n );\n\n // Selected either the selected property ID from local storage or\n // the first property from the list.\n await this.selectProperty(\n selectedProperty ? selectedProperty.id : data[0].id,\n selectedDatabase,\n bearerToken,\n refresh\n );\n } else {\n this.clearSelectedProperty();\n this.loading = false;\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n // If a property is in local storage trigger a toast since it is now deselected\n if (window.localStorage.getItem('selectedPropertyIdentifier'))\n this.userStore.toast(\n 'Your selected property has been deselected!',\n 'warning'\n );\n\n this.properties = [];\n this.clearSelectedProperty();\n this.loading = false;\n })\n .finally(() => {\n this.loading = false;\n });\n }\n\n /**\n * If the property does not have all permission data loaded then\n * reload the property with all required data.\n *\n * @param {int} propertyId\n * @param {string} selectedDatabase\n * @param {string} bearerToken\n * @param {function} refresh\n * @param {boolean} selectProperty\n * @returns {Promise|null}\n */\n loadPropertyPermissions(\n propertyId,\n selectedDatabase,\n bearerToken,\n refresh,\n selectProperty = false\n ) {\n this.loading = true;\n const propertyIndex = this.properties.findIndex((p) => p.id === propertyId);\n // Don't do anything if the property was not found\n if (propertyIndex < 0) {\n this.loading = false;\n return;\n }\n\n // Property was found so fetch the model from the list of properties\n const property = this.properties[propertyIndex];\n\n // Load permissions\n if (!property.user_properties || !property.user_permissions) {\n // Build the request URL\n const uri = URI(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/properties/${propertyId}`\n );\n\n const requestWith = [\n ...this.requestWith,\n 'userProperties.propertyRoles.propertyPermissions',\n 'propertyGroups'\n ];\n const requestAppend = [...this.requestAppend, 'user_permissions'];\n\n uri.setQuery('with[]', requestWith);\n uri.setQuery('append[]', requestAppend);\n\n // Send the request\n return fetch(uri.toString(), {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + bearerToken,\n SeasonalDatabase: selectedDatabase\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) refresh();\n else throw Error(res.statusText);\n })\n .then((data) => {\n const newProperties = [...this.properties];\n newProperties[propertyIndex] = data;\n this.properties = newProperties;\n if (selectProperty) this.setSelectedProperty(propertyId);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n runInAction(() => {\n this.loading = false;\n });\n });\n }\n\n // Permissions are already loaded\n else {\n if (selectProperty) this.setSelectedProperty(propertyId);\n this.loading = false;\n }\n }\n\n /**\n * Add a new property into the properties list.\n *\n * @param {object} property\n */\n addProperty(property) {\n const newProperties = [...this.properties];\n newProperties.push(property);\n this.properties = newProperties;\n }\n\n /**\n * Update a property in the properties list without\n * losing previously loaded information.\n *\n * @param {object} property\n */\n updateProperty(property) {\n const i = this.properties.findIndex((p) => p.id === property.id);\n this.properties[i] = { ...this.properties[i], ...property };\n }\n\n /**\n * Updated the selected property ID.\n *\n * @param {int} propertyId\n * @param {string} selectedDatabase\n * @param {string} bearerToken\n * @param {function} refresh\n * @returns {Promise|null}\n */\n selectProperty(propertyId, selectedDatabase, bearerToken, refresh) {\n return this.loadPropertyPermissions(\n propertyId,\n selectedDatabase,\n bearerToken,\n refresh,\n true\n );\n }\n\n /**\n * Updates the selected property ID field and local storage value to be null.\n */\n clearSelectedProperty() {\n this.selectedPropertyId = null;\n window.localStorage.removeItem('selectedPropertyId');\n window.localStorage.removeItem('selectedPropertyIdentifier');\n }\n\n /**\n * Updates the selected property ID field and local storage value to the supplied ID.\n *\n * Should only be used as a private method.\n *\n * @param {int} propertyId\n */\n setSelectedProperty(propertyId) {\n this.selectedPropertyId = propertyId;\n window.localStorage.setItem('selectedPropertyId', propertyId);\n window.localStorage.setItem(\n 'selectedPropertyIdentifier',\n this.selectedProperty.identifier\n );\n }\n\n /**\n * Find the selected property object.\n *\n * @returns {object}\n */\n get selectedProperty() {\n return this.properties\n ? this.properties.find(\n (property) => property.id === this.selectedPropertyId\n )\n : null;\n }\n\n /**\n * Set the with[] values that will be passed with each request that fetches properties.\n *\n * @param {array} requestWith\n */\n setRequestWith(requestWith) {\n this.requestWith = requestWith;\n }\n\n /**\n * Set the append[] values that will be passed with each request that fetches properties.\n *\n * @param {array} requestAppend\n */\n setRequestAppend(requestAppend) {\n this.requestAppend = requestAppend;\n }\n}\n","import { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useMemo } from 'react';\nimport Select, { components } from 'react-select';\nimport PropertiesStore from './stores/PropertiesStore';\n\nconst CustomControl = ({ children, ...props }) => {\n return (\n <div title={props.title}>\n <components.Control {...props}>{children}</components.Control>\n </div>\n );\n};\n\nfunction GlobalPropertiesSelect({\n selectedDatabase,\n bearerToken,\n refreshBearerToken,\n propertiesStore,\n useRpin\n}) {\n const properties = propertiesStore.properties;\n const selectedProperty = propertiesStore.selectedProperty;\n\n const label = (property, useRpin) => {\n const { name, identifier } = property;\n if (useRpin) {\n return name ? `${name} - ${identifier}` : identifier;\n }\n return name;\n };\n\n // The properties to display in the select.\n const options = useMemo(\n () =>\n properties\n ? properties\n .filter((property) => {\n // If the property is selected then don't filter.\n // Otherwise, filter if the property has been soft deleted.\n if (propertiesStore.selectProperty.id === property.id)\n return true;\n return !property.deleted_at;\n })\n .map((property) => {\n return {\n value: property.id,\n label: label(property, useRpin),\n identifier: property.identifier\n };\n })\n : [],\n [properties, propertiesStore.selectProperty.id]\n );\n\n const value = options.find((property) => {\n return property.value === selectedProperty?.id;\n });\n\n const controlTitle = propertiesStore.loading\n ? 'loading...'\n : selectedProperty\n ? label(selectedProperty, useRpin)\n : undefined;\n\n return (\n <Select\n components={{\n Control: (props) => <CustomControl {...props} title={controlTitle} />\n }}\n options={options}\n isLoading={propertiesStore.loading}\n onChange={(option) =>\n propertiesStore.selectProperty(\n option.value,\n selectedDatabase,\n bearerToken,\n refreshBearerToken\n )\n }\n value={value}\n filterOption={(option, inputValue) => {\n const inputValueLowerCase = inputValue.toLowerCase();\n return (\n option.label.toLowerCase().includes(inputValueLowerCase) ||\n (option.data.identifier &&\n option.data.identifier.toLowerCase().includes(inputValueLowerCase))\n );\n }}\n styles={{\n menu: (provided) => ({\n ...provided,\n width: 'max-content',\n minWidth: '100%'\n })\n }}\n />\n );\n}\n\nGlobalPropertiesSelect.propTypes = {\n // Authentication\n selectedDatabase: PropTypes.string,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n\n // Properties\n propertiesStore: PropTypes.instanceOf(PropertiesStore),\n\n // Misc\n useRpin: PropTypes.bool\n};\n\nexport default observer(GlobalPropertiesSelect);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Spinner } from 'react-bootstrap';\n\nfunction LoadingOverlay(props) {\n const style = {\n position: 'absolute',\n top: 0,\n right: 0,\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n };\n\n if (!props.hideOpacity) {\n style.backgroundColor = props.color ? props.color : 'white';\n style.opacity = props.opacity ? props.opacity : 0.8;\n }\n\n return (\n <div style={style}>\n <Spinner animation='border' variant='primary' />\n </div>\n );\n}\n\nLoadingOverlay.propTypes = {\n hideOpacity: PropTypes.bool\n};\n\nexport default LoadingOverlay;\n","import { faPlus } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { Fragment } from 'react';\nimport { Button, Form, InputGroup, Tab, Tabs } from 'react-bootstrap';\nimport Select from 'react-select';\n\n/* \n NOTE:\n Whenever using this form component don't wrap it in a react-bootstrap Card component,\n instead use a div with the bootstrap classes.\n\n EXPLAINATION:\n Whenever you use a Nav element inside of a Card it adds the relevant card-header-x class.\n This breaks the expected look of tabs inside a Card.Body. The work around is to use\n bootstrap classes rather than react-bootstrap components.\n https://github.com/react-bootstrap/react-bootstrap/issues/4771 \n*/\nfunction PropertyForm({\n handleSubmit,\n handleChange,\n handleBlur,\n values,\n errors,\n setFieldValue\n}) {\n return (\n <Form onSubmit={handleSubmit}>\n {/* Identifier */}\n <Form.Group controlId='identifier'>\n <Form.Label>Identifier</Form.Label>\n <Form.Control\n type='text'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.identifier}\n placeholder='Property Identifier'\n isInvalid={errors.identifier}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.identifier}\n </Form.Control.Feedback>\n </Form.Group>\n\n {/* Name */}\n <Form.Group controlId='name'>\n <Form.Label>Name</Form.Label>\n <Form.Control\n type='text'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.name}\n placeholder='Property Name'\n isInvalid={errors.name}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.name}\n </Form.Control.Feedback>\n </Form.Group>\n\n {/* Region */}\n <Form.Group controlId='region_id'>\n <Form.Label>Region</Form.Label>\n <Select\n defaultValue={values.region}\n onChange={(option) => setFieldValue('region', option)}\n options={values.regions.map((region) => {\n return {\n value: region.id,\n label: region.name\n };\n })}\n />\n {errors.region_id ? (\n <div className='text-danger'>{errors.region_id}</div>\n ) : null}\n </Form.Group>\n\n {/* KeyContact */}\n {values.add_key_contact ? (\n <Fragment>\n <hr />\n <h5>\n New Property Key Contact\n <Button\n size='sm'\n variant='outline-danger'\n className='float-right'\n type='button'\n onClick={() => {\n setFieldValue('new_property_key_contact.name', '');\n setFieldValue('new_property_key_contact.email', '');\n setFieldValue('new_property_key_contact.phone_number', '');\n setFieldValue('new_property_key_contact.user', '');\n setFieldValue('add_key_contact', false);\n }}\n >\n Cancel\n </Button>\n </h5>\n <Tabs\n activeKey={values.add_key_contact_tab}\n className='mt-3 mb-2'\n onSelect={(k) => {\n switch (k) {\n case 'user':\n setFieldValue('new_property_key_contact.name', '');\n setFieldValue('new_property_key_contact.email', '');\n setFieldValue('new_property_key_contact.phone_number', '');\n break;\n case 'details':\n setFieldValue('new_property_key_contact.user', '');\n break;\n }\n setFieldValue('add_key_contact_tab', k);\n }}\n >\n <Tab eventKey='user' title='User' disabled>\n <Form.Group>\n <Form.Label>User</Form.Label>\n <Select\n onChange={(option) =>\n setFieldValue('new_property_key_contact.user', option)\n }\n options={values.users.map((user) => {\n return {\n value: user.id,\n label: user.name\n };\n })}\n />\n </Form.Group>\n </Tab>\n <Tab eventKey='details' title='Custom Details'>\n <Form.Group controlId='new_property_key_contact.name'>\n <Form.Label>Name</Form.Label>\n <Form.Control\n type='text'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.new_property_key_contact.name}\n placeholder='Name'\n isInvalid={\n errors.new_property_key_contact\n ? errors.new_property_key_contact.name\n : false\n }\n />\n <Form.Control.Feedback type='invalid'>\n {errors.new_property_key_contact\n ? errors.new_property_key_contact.name\n : ''}\n </Form.Control.Feedback>\n </Form.Group>\n <Form.Group controlId='new_property_key_contact.email'>\n <Form.Label>Email</Form.Label>\n <Form.Control\n type='text'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.new_property_key_contact.email}\n placeholder='Email'\n isInvalid={\n errors.new_property_key_contact\n ? errors.new_property_key_contact.email\n : false\n }\n />\n <Form.Control.Feedback type='invalid'>\n {errors.new_property_key_contact\n ? errors.new_property_key_contact.email\n : ''}\n </Form.Control.Feedback>\n </Form.Group>\n <Form.Group controlId='new_property_key_contact.phone_number'>\n <Form.Label>Phone Number</Form.Label>\n <Form.Control\n type='text'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.new_property_key_contact.phone_number}\n placeholder='Phone Number'\n isInvalid={\n errors.new_property_key_contact\n ? errors.new_property_key_contact.phone_number\n : false\n }\n />\n <Form.Control.Feedback type='invalid'>\n {errors.new_property_key_contact\n ? errors.new_property_key_contact.phone_number\n : ''}\n </Form.Control.Feedback>\n </Form.Group>\n </Tab>\n </Tabs>\n </Fragment>\n ) : (\n <Form.Group controlId='property_key_contact_id'>\n <Form.Label>Key Contact</Form.Label>\n <InputGroup>\n <Select\n defaultValue={values.property_key_contact}\n onChange={(option) =>\n setFieldValue('property_key_contact', option)\n }\n options={values.propertyKeyContacts.map((propertyKeyContact) => {\n return {\n value: propertyKeyContact.id,\n label: propertyKeyContact.user\n ? propertyKeyContact.user.name\n : propertyKeyContact.name\n };\n })}\n styles={{\n container: (styles) => ({ ...styles, flex: '1 1 auto' })\n }}\n />\n <InputGroup.Append style={{ zIndex: 0 }}>\n <Button\n variant='outline-success'\n className='rounded ml-1'\n type='button'\n onClick={() => {\n setFieldValue('property_key_contact', '');\n setFieldValue('add_key_contact', true);\n }}\n >\n <FontAwesomeIcon icon={faPlus} />\n </Button>\n </InputGroup.Append>\n </InputGroup>\n {errors.property_key_contact ? (\n <div className='text-danger'>{errors.property_key_contact}</div>\n ) : null}\n </Form.Group>\n )}\n {values.add_staff !== undefined && (\n <Form.Group controlId='add_staff'>\n <div>\n <Form.Label className='mr-3'>Give access to all staff?</Form.Label>\n <input\n className='mt-2'\n style={{ width: '16px', height: '16px' }}\n type='checkbox'\n onChange={(e) => {\n setFieldValue('add_staff', e.target.checked);\n }}\n value={values.add_staff}\n />\n </div>\n </Form.Group>\n )}\n </Form>\n );\n}\n\nexport const PropertyFormValidater = (values, props) => {\n const errors = {};\n\n const addNewPropertyKeyContactError = (key, msg) => {\n if (!errors.new_property_key_contact) errors.new_property_key_contact = {};\n errors.new_property_key_contact[key] = msg;\n };\n\n if (!values.identifier) errors.identifier = 'Required';\n else {\n // Check identifier against regext pattern.\n const identifierRegex = /^(?:[RK]\\d{4}|\\d{5})$/;\n if (!identifierRegex.test(values.identifier))\n errors.identifier = 'Invalid identifier';\n }\n if (!values.name) errors.name = 'Required';\n if (!values.region) errors.region_id = 'Required';\n if (values.add_key_contact) {\n if (values.add_key_contact_tab === 'user') {\n if (!values.new_property_key_contact.user_type)\n addNewPropertyKeyContactError('user_type', 'Required');\n if (!values.new_property_key_contact.user)\n addNewPropertyKeyContactError('user', 'Required');\n } else {\n if (!values.new_property_key_contact.name)\n addNewPropertyKeyContactError('name', 'Required');\n if (!values.new_property_key_contact.email)\n addNewPropertyKeyContactError('email', 'Required');\n if (!values.new_property_key_contact.phone_number)\n addNewPropertyKeyContactError('phone_number', 'Required');\n }\n } else {\n if (!values.property_key_contact) errors.property_key_contact = 'Required';\n }\n\n return errors;\n};\n\nexport default PropertyForm;\n","import { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment } from 'react';\nimport { Button } from 'react-bootstrap';\nimport LoadingOverlay from '../LoadingOverlay';\nimport PropertyForm, { PropertyFormValidater } from './PropertyForm';\n\nfunction AddProperty(props) {\n const newPropertyIdentifier = props.newProperty?.data?.identifier;\n const newPropertyName = props.newProperty?.data?.name;\n\n return (\n <Formik\n initialValues={{\n // react-select options (it's not possible to use outside props)\n users: props.users,\n regions: props.regions,\n propertyKeyContacts: props.propertyKeyContacts,\n\n // Property Key Contact\n add_key_contact: false,\n add_key_contact_tab: 'details',\n property_key_contact: '',\n new_property_key_contact: {\n user_type: 'fruition',\n user: '',\n name: '',\n email: '',\n phone_number: ''\n },\n\n // In the format that react-select requires\n region: '',\n\n identifier: newPropertyIdentifier || '',\n name: newPropertyName || '',\n boundry: '',\n hectares: '',\n add_staff: false\n }}\n validate={PropertyFormValidater}\n onSubmit={(values, actions) => {\n // Build the json object to send to the API\n const postValues = {\n region_id: values.region.value,\n identifier: values.identifier,\n name: values.name,\n boundry: values.boundry,\n hectares: values.hectares,\n add_staff: values.add_staff\n };\n\n // Use existing property key contact was selected\n if (values.property_key_contact) {\n postValues.property_key_contact_id =\n values.property_key_contact.value;\n }\n\n // Create a new property key contact using a user id\n else if (values.new_property_key_contact.user) {\n postValues.new_property_key_contact = {\n user_type: values.new_property_key_contact.user_type,\n user_id: values.new_property_key_contact.user.value\n };\n }\n\n // Create a new property key contact using text fields\n else {\n postValues.new_property_key_contact = {\n name: values.new_property_key_contact.name,\n email: values.new_property_key_contact.email,\n phone_number: values.new_property_key_contact.phone_number\n };\n }\n\n fetch(process.env.REACT_APP_PROPERTIES_API_URL + 'api/properties', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n service: 'fruition',\n SeasonalDatabase: props.selectedDatabase\n },\n body: JSON.stringify(postValues)\n })\n .then((res) => {\n if (res.ok)\n res.json().then((data) => {\n if (data) {\n props.add(data);\n }\n \n });\n else if (res.status === 422)\n res.json().then((data) => {\n if (data.errors)\n Object.keys(data.errors).forEach((key) => {\n actions.setFieldError(key, data.errors[key][0]);\n });\n\n actions.setSubmitting(false);\n });\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <Fragment>\n <PropertyForm {...props} />\n <Button varient='primary' type='button' onClick={props.handleSubmit}>\n Submit\n </Button>\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </Fragment>\n )}\n </Formik>\n );\n}\n\nAddProperty.propTypes = {\n // Authentication\n selectedDatabase: PropTypes.string,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n\n // Property\n add: PropTypes.func.isRequired,\n\n // Other data\n users: PropTypes.array.isRequired,\n regions: PropTypes.array.isRequired,\n propertyKeyContacts: PropTypes.array.isRequired,\n newProperty: PropTypes.object.isRequired\n};\n\nexport default observer(AddProperty);\n","import React, { useState } from 'react';\nimport { useAsyncDebounce } from 'react-table';\nimport { Form } from 'react-bootstrap';\n\n// Define a default UI for filtering\nexport default function GlobalFilter({\n preGlobalFilteredRows,\n globalFilter,\n setGlobalFilter,\n style\n}) {\n const count = preGlobalFilteredRows.filter((row) => {\n // TODO: Filter on deleted\n return true;\n }).length;\n const [value, setValue] = useState(globalFilter);\n const onChange = useAsyncDebounce((value) => {\n setGlobalFilter(value || undefined);\n }, 200);\n\n return (\n <Form.Control\n type='text'\n value={value || ''}\n onChange={(e) => {\n setValue(e.target.value);\n onChange(e.target.value);\n }}\n placeholder={`Search ${count} records...`}\n style={style}\n />\n );\n}\n","import React from 'react';\nimport { Button, FormControl } from 'react-bootstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n faAngleDoubleLeft,\n faAngleLeft,\n faAngleRight,\n faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons';\n\nfunction TablePagination({\n // Variables\n pageCount,\n pageIndex,\n pageOptions,\n pageSize,\n\n // Methods\n gotoPage,\n canPreviousPage,\n previousPage,\n canNextPage,\n nextPage,\n setPageSize\n}) {\n return (\n <div className='d-flex align-items-center justify-content-between my-3'>\n <div>\n <Button\n variant='link'\n onClick={() => gotoPage(0)}\n disabled={!canPreviousPage}\n >\n <FontAwesomeIcon icon={faAngleDoubleLeft} />\n </Button>{' '}\n <Button\n variant='link'\n onClick={() => previousPage()}\n disabled={!canPreviousPage}\n >\n <FontAwesomeIcon icon={faAngleLeft} />\n </Button>{' '}\n <Button\n variant='link'\n onClick={() => nextPage()}\n disabled={!canNextPage}\n >\n <FontAwesomeIcon icon={faAngleRight} />\n </Button>{' '}\n <Button\n variant='link'\n onClick={() => gotoPage(pageCount - 1)}\n disabled={!canNextPage}\n >\n <FontAwesomeIcon icon={faAngleDoubleRight} />\n </Button>{' '}\n </div>\n <div>\n <span>\n Page{' '}\n <strong>\n {pageIndex + 1} of {pageOptions.length}\n </strong>{' '}\n </span>\n </div>\n <div>\n <FormControl\n as='select'\n value={pageSize}\n onChange={(e) => {\n setPageSize(Number(e.target.value));\n }}\n >\n {[10, 20, 30, 40, 50].map((pageSize) => (\n <option key={pageSize} value={pageSize}>\n Show {pageSize}\n </option>\n ))}\n </FormControl>\n </div>\n </div>\n );\n}\n\nexport default TablePagination;\n","import {\n faExternalLinkAlt,\n faEye,\n faSort,\n faSortDown,\n faSortUp\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useEffect, useMemo, useState } from 'react';\nimport { Button, Table } from 'react-bootstrap';\nimport {\n useGlobalFilter,\n usePagination,\n useSortBy,\n useTable\n} from 'react-table';\nimport GlobalTableFilter from '../GlobalTableFilter';\nimport TablePagination from '../TablePagination';\n\nconst PropertiesTable = (props) => {\n const [showDeletedProperties, setShowDeletedProperties] = useState(false);\n\n const getPermissions = (property) => {\n // Find the permissions of the authenticated user\n let canRead = false;\n let canDelete = false;\n\n if (property.user_permissions) {\n property.user_permissions.forEach((propertyPermission) => {\n if (propertyPermission.code === 'R') canRead = true;\n if (propertyPermission.code === 'D') canDelete = true;\n });\n }\n\n return {\n canRead: canRead,\n canDelete: canDelete\n };\n };\n\n const data = useMemo(\n () =>\n props.data.filter((property) => {\n // const permissions = getPermissions(property);\n // return permissions.canRead && showDeletedProperties\n return showDeletedProperties ? true : !property.deleted_at;\n }),\n [props.data, showDeletedProperties]\n );\n\n const columns = useMemo(\n () => [\n {\n Header: 'Identifier',\n accessor: 'identifier',\n Cell: ({ row, cell }) =>\n row.original.deleted_at ? <del>{cell.value}</del> : cell.value\n },\n {\n Header: 'Name',\n accessor: 'name',\n Cell: ({ row, cell }) =>\n row.original.deleted_at ? <del>{cell.value}</del> : cell.value\n },\n {\n Header: 'Region',\n accessor: 'region.name'\n },\n {\n Header: 'Key Contact',\n filterable: false,\n Cell: ({ row }) => (\n <Button\n variant='link'\n onClick={() => {\n props.linkTo(\n `/properties/property-key-contacts/${row.original.property_key_contact.id}`\n );\n }}\n >\n {row.original.property_key_contact?.user\n ? row.original.property_key_contact?.user?.name\n : row.original.property_key_contact?.name}\n </Button>\n )\n },\n {\n id: 'actions',\n sortable: false,\n filterable: false,\n Header: (tableInstance) => (\n <div className='text-right'>\n <Button\n type='button'\n variant='link'\n className={\n tableInstance.state.showDeletedProperties\n ? 'text-primary'\n : 'text-dark'\n }\n onClick={() => {\n setShowDeletedProperties(\n !tableInstance.state.showDeletedProperties\n );\n }}\n >\n <FontAwesomeIcon icon={faEye} />\n </Button>\n </div>\n ),\n Cell: ({ row }) => {\n // const permissions = getPermissions(row.original);\n return (\n <div className='text-right'>\n {/* Select property */}\n <Button\n type='button'\n variant='link'\n className='text-primary'\n onClick={() => props.changeSelectedProperty(row.original.id)}\n >\n <FontAwesomeIcon icon={faExternalLinkAlt} />\n </Button>\n\n {/* Delete property */}\n {/* {row.original.deleted_at === null && permissions.canDelete ? (\n <Button\n type='button'\n variant='link'\n className='text-danger'\n onClick={() => props.deleteProperty(row.original.id)}\n >\n <FontAwesomeIcon icon={faTrash} />\n </Button>\n ) : null} */}\n </div>\n );\n }\n }\n ],\n []\n );\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n prepareRow,\n page,\n canPreviousPage,\n canNextPage,\n pageOptions,\n pageCount,\n gotoPage,\n nextPage,\n previousPage,\n setPageSize,\n state: { pageIndex, pageSize },\n state,\n preGlobalFilteredRows,\n setGlobalFilter\n } = useTable(\n {\n columns,\n data,\n useControlledState: (state) => {\n return React.useMemo(\n () => ({\n ...state,\n showDeletedProperties: showDeletedProperties\n }),\n [state, showDeletedProperties]\n );\n }\n },\n useGlobalFilter,\n useSortBy,\n usePagination\n );\n\n useEffect(() => {\n props.setCurrentPage(pageIndex);\n }, [pageIndex]);\n\n useEffect(() => {\n gotoPage(props.currentPage);\n }, []);\n\n return (\n <Fragment>\n <GlobalTableFilter\n preGlobalFilteredRows={preGlobalFilteredRows}\n globalFilter={state.globalFilter}\n setGlobalFilter={setGlobalFilter}\n style={{\n marginBottom: '0.5rem',\n maxWidth: 500\n }}\n />\n <Table responsive {...getTableProps()}>\n <thead>\n {headerGroups.map((headerGroup) => (\n <tr {...headerGroup.getHeaderGroupProps()}>\n {headerGroup.headers.map((column) => {\n return (\n <th {...column.getHeaderProps(column.getSortByToggleProps())}>\n {column.render('Header')}\n {column.canSort ? (\n <span className='px-2'>\n {column.isSorted ? (\n column.isSortedDesc ? (\n <FontAwesomeIcon icon={faSortDown} />\n ) : (\n <FontAwesomeIcon icon={faSortUp} />\n )\n ) : (\n <FontAwesomeIcon icon={faSort} />\n )}\n </span>\n ) : null}\n </th>\n );\n })}\n </tr>\n ))}\n </thead>\n <tbody {...getTableBodyProps()}>\n {page.map((row) => {\n prepareRow(row);\n return (\n <tr {...row.getRowProps()}>\n {row.cells.map((cell) => {\n return (\n <td {...cell.getCellProps()}>{cell.render('Cell')}</td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </Table>\n <TablePagination\n pageCount={pageCount}\n pageIndex={pageIndex}\n pageOptions={pageOptions}\n pageSize={pageSize}\n gotoPage={gotoPage}\n canPreviousPage={canPreviousPage}\n previousPage={previousPage}\n canNextPage={canNextPage}\n nextPage={nextPage}\n setPageSize={setPageSize}\n />\n </Fragment>\n );\n};\n\nPropertiesTable.propTypes = {\n data: PropTypes.array.isRequired,\n linkTo: PropTypes.func.isRequired,\n changeSelectedProperty: PropTypes.func.isRequired,\n deleteProperty: PropTypes.func.isRequired\n};\n\nexport default observer(PropertiesTable);\n","import { useEffect, useRef } from \"react\";\n\n/**\n * Custom hook to only update AFTER first render\n * @returns boolean\n */\nexport function useFirstRender() {\n const firstRender = useRef(true);\n\n useEffect(() => {\n firstRender.current = false;\n }, []);\n\n return firstRender.current;\n}\n","import { useEffect, useState } from 'react';\n\nconst usePropertyGroupProperty = ({\n property,\n selectedDatabase,\n bearerToken,\n refreshBearerToken\n}) => {\n const [loading, setLoading] = useState(false);\n const [propertyGroups, setPropertyGroups] = useState([]);\n\n useEffect(() => {\n let mounted = true;\n setLoading(true);\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/properties/${property.id}/property-groups?with[]=users.propertyRole.propertyPermissions`,\n {\n headers: {\n Accept: 'application/json',\n SeasonalDatabase: selectedDatabase,\n Authorization: `Bearer ${bearerToken}`\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (mounted) setPropertyGroups(data);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n if (mounted) setLoading(false);\n });\n return () => {\n mounted = false;\n };\n }, [selectedDatabase, bearerToken, property]);\n\n return { loading, propertyGroups };\n};\n\nexport default usePropertyGroupProperty;\n","import bbox from '@turf/bbox';\nimport { useCallback, useRef, useState } from 'react';\n\nexport const useMapState = (boundry) => {\n const [initialBoundsSet, setInitialBoundsSet] = useState(false);\n const viewportState = useState({\n latitude: -40.9753799,\n longitude: 176.8903929,\n zoom: 4,\n height: 400,\n width: '100%'\n });\n const mapRef = useRef();\n const mapRefWrapper = useCallback((node) => {\n if (node) {\n if (boundry && !initialBoundsSet) {\n fitBounds(node);\n setInitialBoundsSet(true);\n }\n }\n mapRef.current = node;\n }, []);\n\n const fitBounds = (map) => {\n const features = boundry;\n if (features) {\n // calculate the bounding box of the feature\n const [minLng, minLat, maxLng, maxLat] = bbox(features);\n\n map.fitBounds(\n [\n [minLng, minLat],\n [maxLng, maxLat]\n ],\n { padding: 50, duration: 500 }\n );\n }\n };\n\n return [viewportState, mapRefWrapper, fitBounds];\n};\n","import React from 'react';\nimport { Button, ButtonGroup } from 'react-bootstrap';\n\nexport const monoStyle = 'cklubq40e06ej17ojtb4pg2o1';\nexport const satelliteStyle = 'cknpikbkn0jut17nwxfi4mbh8';\n\nconst PreviewButton = (props) => {\n const newStyle =\n props.mapStyle === satelliteStyle ? monoStyle : satelliteStyle;\n return (\n <div\n className='m-3'\n style={{\n position: 'absolute',\n bottom: 0,\n right: 0\n }}\n >\n {' '}\n <ButtonGroup>\n <Button\n onClick={() => props.setMapStyle(monoStyle)}\n variant={props.mapStyle === monoStyle ? 'secondary' : 'light'}\n >\n Map View\n </Button>\n <Button\n onClick={() => props.setMapStyle(satelliteStyle)}\n variant={props.mapStyle === satelliteStyle ? 'secondary' : 'light'}\n >\n Satellite View\n </Button>\n </ButtonGroup>\n </div>\n );\n};\n\nexport default PreviewButton;\n","import { observer } from 'mobx-react';\nimport React, { useState } from 'react';\nimport Map, { Layer, Source } from 'react-map-gl-7';\nimport { useMapState } from '../../hooks/useMapState';\nimport PreviewButton, { monoStyle } from './PreviewButton';\n\nconst PropertyMap = (props) => {\n const [mapStyle, setMapStyle] = useState(monoStyle);\n const boundry = props.property.boundry;\n const [[viewport, setViewport], mapRefWrapper] = useMapState(boundry);\n\n const layer = {\n id: 'polygon',\n type: 'fill',\n paint: {\n 'fill-color': '#6C757D',\n 'fill-opacity': 0.5\n }\n };\n\n return (\n <Map\n initialViewState={viewport}\n ref={mapRefWrapper}\n mapStyle={`mapbox://styles/hortplus/${mapStyle}`}\n onViewportChange={(next) => setViewport(next)}\n scrollZoom={false}\n dragPan={false}\n dragRotate={false}\n touchPitch={false}\n keyboard={false}\n >\n {boundry && (\n <Source id='boundry' type='geojson' data={boundry}>\n <Layer {...layer} />\n </Source>\n )}\n <PreviewButton\n setMapStyle={setMapStyle}\n mapStyle={mapStyle}\n viewport={viewport}\n />\n </Map>\n );\n};\n\nexport default observer(PropertyMap);\n","import MapboxDraw from '@mapbox/mapbox-gl-draw';\nimport { useControl } from 'react-map-gl-7';\n\nexport default function DrawControl(props) {\n useControl(\n ({map}) => {\n const draw = new MapboxDraw(props);\n map.addControl(draw)\n map.on('draw.create', props.onCreate);\n map.on('draw.update', props.onUpdate);\n map.on('draw.delete', props.onDelete);\n if (props.initialBoundry) draw.add(props.initialBoundry);\n return draw;\n },\n ({map}) => {\n map.off('draw.create', props.onCreate);\n map.off('draw.update', props.onUpdate);\n map.off('draw.delete', props.onDelete);\n },\n {\n position: props.position\n }\n );\n\n return null\n}\n\nDrawControl.defaultProps = {\n onCreate: () => {},\n onUpdate: () => {},\n onDelete: () => {}\n};","import { observer } from 'mobx-react';\nimport React, { useCallback, useState } from 'react';\nimport Map from 'react-map-gl-7';\nimport { useMapState } from '../../hooks/useMapState';\nimport DrawControl from './DrawControl';\nimport PreviewButton, { monoStyle } from './PreviewButton';\n\nconst PropertyMapEditable = (props) => {\n const [mapStyle, setMapStyle] = useState(monoStyle);\n const boundry = props.values.boundry;\n const setValues = props.setValues;\n const formValues = props.values;\n const [[viewport, setViewport], mapRefWrapper] = useMapState(boundry);\n \n const onEditorUpdate = useCallback(\n (e) => {\n setValues({\n ...formValues,\n boundry: {\n type: 'FeatureCollection',\n features: e.features[0]\n }\n });\n },\n [formValues, setValues]\n );\n\n const onDelete = useCallback(\n (e) => {\n setValues({\n ...formValues,\n boundry: null\n });\n },\n [formValues, setValues]\n );\n\n return (\n <Map\n ref={mapRefWrapper}\n initialViewState={viewport}\n mapStyle={`mapbox://styles/hortplus/${mapStyle}`}\n onViewportChange={(next) => setViewport(next)}\n >\n <DrawControl\n initialBoundry={boundry}\n position='top-right'\n displayControlsDefault={false}\n controls={{\n polygon: true,\n trash: true\n }}\n defaultMode={boundry ? 'simple_select': 'draw_polygon' }\n onCreate={onEditorUpdate}\n onUpdate={onEditorUpdate}\n onDelete={onDelete}\n />\n <PreviewButton\n setMapStyle={setMapStyle}\n mapStyle={mapStyle}\n viewport={viewport}\n />\n </Map>\n );\n};\n\nexport default observer(PropertyMapEditable);\n","import {\n faExternalLinkAlt,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Button, Card, OverlayTrigger, Popover, Table } from 'react-bootstrap';\nimport LoadingOverlay from '../LoadingOverlay';\n\nfunction PropertyGroups(props) {\n return (\n <Card>\n <Card.Header\n style={{ height: '63px' }}\n className='d-flex align-items-center'\n >\n Property Groups\n <OverlayTrigger\n trigger='hover'\n overlay={\n <Popover>\n <Popover.Content>\n Listing of the groups that this property has been assigned to.\n However, it only shows the groups that you have access to. So\n this property may appear in more groups not shown here.\n </Popover.Content>\n </Popover>\n }\n >\n <FontAwesomeIcon icon={faInfoCircle} className='ml-2' />\n </OverlayTrigger>\n </Card.Header>\n <Card.Body>\n <Table>\n <thead>\n <tr>\n <th>Name</th>\n <th />\n </tr>\n </thead>\n <tbody>\n {props.propertyGroups.map((propertyGroup) => (\n <tr key={propertyGroup.id}>\n <td>{propertyGroup.name}</td>\n <td>\n <Button\n variant='link'\n className='text-primary'\n onClick={() => {\n props.linkTo(\n `/management/property-groups/${propertyGroup.id}`\n );\n }}\n >\n <FontAwesomeIcon icon={faExternalLinkAlt} />\n </Button>\n </td>\n </tr>\n ))}\n </tbody>\n </Table>\n {props.loading ? <LoadingOverlay /> : null}\n </Card.Body>\n </Card>\n );\n}\n\nPropertyGroups.propTypes = {\n propertyGroups: PropTypes.array.isRequired,\n loading: PropTypes.bool.isRequired,\n linkTo: PropTypes.func.isRequired\n};\n\nexport default PropertyGroups;\n","import { faInfoCircle } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { observer } from 'mobx-react';\nimport React, { useMemo } from 'react';\nimport { Card, OverlayTrigger, Popover, Table } from 'react-bootstrap';\nimport LoadingOverlay from '../LoadingOverlay';\n\nconst PropertyGroupUsers = (props) => {\n const users = useMemo(\n () =>\n props.propertyGroupsUsers\n .filter((propertyGroupsUser, index, self) => {\n if (propertyGroupsUser.user_type !== 'fruition') return false;\n const foundUser =\n self.findIndex((u) => u.user_id === propertyGroupsUser.user_id) ===\n index;\n return foundUser;\n })\n .map((propertyGroupsUser) => {\n const user = props.users.find(\n (user) => user.id === propertyGroupsUser.user_id\n );\n return user;\n })\n .filter((user) => user),\n [props.propertyGroupsUsers, props.users]\n );\n\n return (\n <Card>\n <Card.Header\n style={{ height: '63px' }}\n className='d-flex align-items-center'\n >\n Property Groups Users\n <OverlayTrigger\n trigger='hover'\n overlay={\n <Popover>\n <Popover.Content>\n Listing of users that have access to this property through a\n property group.\n </Popover.Content>\n </Popover>\n }\n >\n <FontAwesomeIcon icon={faInfoCircle} className='ml-2' />\n </OverlayTrigger>\n </Card.Header>\n <Card.Body>\n <Table responsive>\n <thead>\n <tr>\n <th>Name</th>\n </tr>\n </thead>\n <tbody>\n {users.map((user) => {\n return (\n <tr>\n <td>{user.name}</td>\n </tr>\n );\n })}\n </tbody>\n </Table>\n {props.loading ? <LoadingOverlay /> : null}\n </Card.Body>\n </Card>\n );\n};\n\nexport default observer(PropertyGroupUsers);\n","import PropTypes from 'prop-types';\nimport React, { Fragment, useState } from 'react';\nimport { Button, Modal, Spinner } from 'react-bootstrap';\n\nconst AddAllStaffModal = ({ handleAddAllStaffConfirmation }) => {\n const [showAddAllStaffModal, setShowAddAllStaffModal] = useState(false);\n const [loading, setLoading] = useState(false);\n\n return (\n <Fragment>\n <Button\n className='float-right'\n variant='outline-success'\n onClick={() => {\n setShowAddAllStaffModal(true);\n }}\n >\n Add All Staff\n </Button>\n <Modal\n backdrop='static'\n show={showAddAllStaffModal}\n onHide={() => {\n setShowAddAllStaffModal(false);\n }}\n >\n <Modal.Header closeButton>\n <Modal.Title>Confirm Action</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <p>\n Are you sure you would like to give access to all staff for this\n Property or Group?\n </p>\n <Button\n variant='success'\n onClick={() => {\n setLoading(true);\n handleAddAllStaffConfirmation()\n .then(() => {\n setLoading(false);\n setShowAddAllStaffModal(false);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n });\n }}\n >\n {loading ? (\n <Spinner\n className='mx-3'\n animation='border'\n variant='success'\n size='sm'\n />\n ) : (\n 'Confirm'\n )}\n </Button>\n </Modal.Body>\n </Modal>\n </Fragment>\n );\n};\n\nAddAllStaffModal.propTypes = {\n handleAddAllStaffConfirmation: PropTypes.func.isRequired\n};\n\nexport default AddAllStaffModal;\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import { faTrash } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useState } from 'react';\nimport { Button, Modal, Spinner } from 'react-bootstrap';\n\nconst DeletePropertyUserModal = ({\n user,\n property,\n userProperty,\n confirmationHandler\n}) => {\n const [showDeletePropertyUserModell, setShowDeletePropertyUserModel] =\n useState(false);\n const [loading, setLoading] = useState(false);\n\n const userId = user.id;\n const userPropertyUserId = userProperty.user_id;\n const currentLoading = loading && userId === userPropertyUserId;\n\n return (\n <Fragment>\n {currentLoading ? (\n <div className='text-center'>\n <Spinner size='sm' animation='border' variant='danger' />\n </div>\n ) : (\n <Button\n type='button'\n variant='link'\n size='sm'\n className='text-danger'\n disabled={currentLoading}\n onClick={async () => {\n setShowDeletePropertyUserModel(true);\n }}\n >\n <FontAwesomeIcon icon={faTrash} />\n </Button>\n )}\n <Modal\n backdrop='static'\n show={showDeletePropertyUserModell}\n onHide={() => {\n setShowDeletePropertyUserModel(false);\n }}\n >\n <Modal.Header closeButton>\n <Modal.Title>Confirm Action</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <p>\n Are you sure you would like to delete the user <b>{user.name}</b>{' '}\n from the property <b>{property.name}</b>?\n </p>\n <Button\n variant='danger'\n onClick={async () => {\n setLoading(true);\n try {\n await confirmationHandler(userProperty.id);\n } catch (err) {\n if (process.env.NODE_ENV === 'development') console.error(err);\n }\n setLoading(false);\n setShowDeletePropertyUserModel(false);\n }}\n >\n {loading ? (\n <Spinner\n className='mx-3'\n animation='border'\n variant='success'\n size='sm'\n />\n ) : (\n 'Confirm Delete'\n )}\n </Button>\n </Modal.Body>\n </Modal>\n </Fragment>\n );\n};\n\nDeletePropertyUserModal.propTypes = {\n user: PropTypes.object.isRequired,\n property: PropTypes.object.isRequired,\n userProperty: PropTypes.object.isRequired,\n confirmationHandler: PropTypes.func.isRequired\n};\n\nexport default DeletePropertyUserModal;\n","import { faPlus } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Formik } from 'formik';\nimport PropTypes from 'prop-types';\nimport React, { useMemo, useState } from 'react';\nimport {\n Button,\n Card,\n Col,\n Form,\n FormCheck,\n InputGroup,\n Row,\n Table\n} from 'react-bootstrap';\nimport Select from 'react-select';\nimport LoadingOverlay from '../LoadingOverlay';\nimport AddAllStaffModal from '../modals/AddAllStaffModal';\nimport DeletePropertyUserModal from '../modals/DeletePropertyUserModal';\n\nfunction PropertyPermissions(props) {\n const [loading, setLoading] = useState(false);\n\n const propertyUserProperties = useMemo(\n () => props.property.user_properties,\n [props.property]\n );\n\n const handleAddAllStaffConfirmation = () => {\n return fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/user-property/batch`,\n {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n SeasonalDatabase: props.selectedDatabase,\n Authorization: `Bearer ${props.bearerToken}`\n },\n body: JSON.stringify({\n property_id: props.property.id\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n const property = props.property;\n const userProperties = [...property.user_properties, ...data];\n property.user_properties = userProperties;\n props.update(property);\n }\n });\n };\n\n const handleDeleteUserPropertyConfirmation = async (userPropertyId) => {\n const userPropertyDeleteRes = await fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/user-property/${userPropertyId}`,\n {\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n SeasonalDatabase: props.selectedDatabase,\n Authorization: `Bearer ${props.bearerToken}`\n }\n }\n );\n if (userPropertyDeleteRes.ok) {\n try {\n const status = userPropertyDeleteRes.status;\n if (status !== 204) return;\n const property = props.property;\n const newUserProperties = property.user_properties.filter(\n (up) => up.id !== userPropertyId\n );\n property.user_properties = newUserProperties;\n props.update(property);\n } catch (err) {\n if (process.env.NODE_ENV === 'development') console.error(err);\n }\n } else if (userPropertyDeleteRes.status === 401) props.refreshBearerToken();\n else throw Error(userPropertyDeleteRes.statusText);\n };\n\n return (\n <Card>\n <Card.Header\n style={{ height: '63px' }}\n className='d-flex align-items-center'\n >\n Property Permissions\n </Card.Header>\n <Card.Body>\n <Table responsive>\n <thead>\n <tr>\n <th>Name</th>\n {props.propertyRoles.map((propertyRole) => {\n return <th key={propertyRole.id}>{propertyRole.name}</th>;\n })}\n <td />\n </tr>\n </thead>\n <tbody>\n {props.property.user_properties.map((userProperty) => {\n if (userProperty.user_type === 'fruition') {\n const user = props.users.find(\n (user) => user.id === userProperty.user_id\n );\n if (user) {\n return (\n <tr key={user.id}>\n <td>{user.name}</td>\n {props.propertyRoles.map((propertyRole) => {\n const hasPropertyRole =\n userProperty.property_roles.some(\n (userPropertyRole) =>\n userPropertyRole.id === propertyRole.id\n );\n return (\n <th\n key={user.id + '-' + propertyRole.id}\n className='text-center'\n >\n <FormCheck\n custom\n type='checkbox'\n label=''\n id={user.id + '-' + propertyRole.id}\n checked={hasPropertyRole}\n onChange={() => {\n setLoading(true);\n fetch(\n process.env.REACT_APP_PROPERTIES_API_URL +\n 'api/user-property/' +\n userProperty.id +\n '/' +\n (hasPropertyRole ? 'detach' : 'attach') +\n '/' +\n propertyRole.id,\n {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n Authorization:\n 'Bearer ' + props.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401)\n props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n props.update(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n })\n .finally(() => {\n setLoading(false);\n });\n }}\n />\n </th>\n );\n })}\n {userProperty.property_roles.length === 0 ? (\n <td className='p-0 align-middle'>\n <DeletePropertyUserModal\n user={user}\n property={props.property}\n userProperty={userProperty}\n confirmationHandler={\n handleDeleteUserPropertyConfirmation\n }\n />\n </td>\n ) : (\n <td className='p-0'></td>\n )}\n </tr>\n );\n }\n }\n })}\n </tbody>\n </Table>\n <Formik\n initialValues={{\n users: props.users,\n property_id: props.property.id,\n user_type: 'fruition',\n user_id: ''\n }}\n validate={(values) => {\n const errors = {};\n\n if (!values.user_id) {\n errors.user_id = 'Please select a user';\n }\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n fetch(\n process.env.REACT_APP_PROPERTIES_API_URL + 'api/user-property',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n },\n body: JSON.stringify({\n property_id: values.property_id,\n user_type: values.user_type,\n user_id: values.user_id\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n props.update(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <Form onSubmit={props.handleSubmit}>\n <Form.Group controlId='user_id'>\n <InputGroup>\n <Select\n onChange={(option) =>\n props.setFieldValue('user_id', option.value)\n }\n options={props.values.users\n .filter(\n (user) =>\n !propertyUserProperties.some(\n (userProperty) => userProperty.user_id == user.id\n )\n )\n .map((user) => {\n return {\n value: user.id,\n label: user.user ? user.user.name : user.name\n };\n })}\n styles={{\n container: (styles) => ({ ...styles, flex: '1 1 auto' })\n }}\n isLoading={props.isSubmitting}\n />\n <InputGroup.Append>\n <Button\n variant='outline-success'\n className='rounded ml-1'\n type='submit'\n disabled={props.isSubmitting}\n >\n <FontAwesomeIcon icon={faPlus} />\n </Button>\n </InputGroup.Append>\n </InputGroup>\n </Form.Group>\n </Form>\n )}\n </Formik>\n {/** Add all staff modal */}\n <Row>\n <Col>\n <AddAllStaffModal\n handleAddAllStaffConfirmation={handleAddAllStaffConfirmation}\n />\n </Col>\n </Row>\n {loading ? <LoadingOverlay /> : null}\n </Card.Body>\n </Card>\n );\n}\n\nPropertyPermissions.propTypes = {\n // Authentication\n selectedDatabase: PropTypes.string.isRequired,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n\n // Property\n property: PropTypes.object.isRequired,\n update: PropTypes.func.isRequired,\n\n // Other data\n users: PropTypes.array.isRequired,\n propertyRoles: PropTypes.array.isRequired\n};\n\nexport default PropertyPermissions;\n","import { faCheck, faEdit, faTimes } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\nimport { Button, Card, Col, Row, Spinner } from 'react-bootstrap';\nimport { useFirstRender } from '../hooks/FirstRenderHook';\nimport usePropertyGroupProperty from '../hooks/usePropertyGroupProperty';\nimport LoadingOverlay from '../LoadingOverlay';\nimport PropertiesStore from '../stores/PropertiesStore';\nimport PropertyMap from './maps/PropertyMap';\nimport PropertyMapEditable from './maps/PropertyMapEditable';\nimport PropertyForm, { PropertyFormValidater } from './PropertyForm';\nimport PropertyGroups from './PropertyGroups';\nimport PropertyGroupUsers from './PropertyGroupUsers';\nimport PropertyPermissions from './PropertyPermissions';\n\nfunction Property(props) {\n const [restoring, setRestoring] = useState(false);\n const [editing, setEditing] = useState(false);\n\n const firstRender = useFirstRender();\n\n const { loading, propertyGroups } = usePropertyGroupProperty(props);\n\n const propertyGroupsUsers = propertyGroups.flatMap((pg) => {\n return [...pg.users];\n });\n\n useEffect(() => {\n if (!firstRender) props.history.replace('/properties');\n }, [props.selectedDatabase]);\n\n useEffect(() => {\n if (!props.property.user_properties || !props.property.user_permissions) {\n props.propertiesStore.loadPropertyPermissions(\n props.property.id,\n props.selectedDatabase,\n props.bearerToken,\n props.refreshBearerToken\n );\n }\n }, [props.bearerToken, props.refreshBearerToken, props.property]);\n\n if (props.propertiesStore.loading)\n return <Spinner variant='primary' animation='border' />;\n else if (!props.property.user_properties || !props.property.user_permissions)\n return null;\n\n /**\n * Find the permissions of the authenticated user\n */\n let canWrite = false;\n let canDelete = false;\n let canWritePermissions = false;\n props.property.user_permissions.forEach((propertyPermission) => {\n if (propertyPermission.code === 'W') canWrite = true;\n if (propertyPermission.code === 'D') canDelete = true;\n if (propertyPermission.code === 'PW') canWritePermissions = true;\n });\n\n /**\n * Restore the deleted property using the properties API and update the property object in the\n * parent component using the update() method supplied in the props.\n */\n const restore = () => {\n setRestoring(true);\n fetch(\n process.env.REACT_APP_PROPERTIES_API_URL +\n 'api/properties/' +\n props.property.id +\n '/restore',\n {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n props.update(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n setRestoring(false);\n });\n };\n\n return (\n <React.Fragment>\n <Row>\n <Col className='d-flex justify-content-between'>\n <Button variant='secondary' className='mb-2' onClick={props.close}>\n Back\n </Button>\n {canDelete && !props.property.deleted_at ? (\n <Button\n variant='outline-danger'\n className='mx-2 mb-2 '\n onClick={() => {\n if (\n window.confirm(\n 'Are you sure you want to delete this property?'\n )\n ) {\n props.delete(props.property.id);\n }\n }}\n >\n Delete\n </Button>\n ) : null}\n </Col>\n </Row>\n <Row>\n <Col>\n {editing ? (\n <Formik\n initialValues={{\n // react-select options (it's not possible to use outside props)\n users: props.users,\n regions: props.regions,\n propertyKeyContacts: props.propertyKeyContacts,\n\n // Property Key Contact\n add_key_contact: false,\n add_key_contact_tab: 'details',\n property_key_contact: {\n value: props.property.property_key_contact.id,\n label: props.property.property_key_contact.user\n ? props.property.property_key_contact.user.name\n : props.property.property_key_contact.name\n },\n new_property_key_contact: {\n user_type: 'fruition',\n user: '',\n name: '',\n email: '',\n phone_number: ''\n },\n\n // In the format that react-select requires\n region: {\n value: props.property.region.id,\n label: props.property.region.name\n },\n\n identifier: props.property.identifier,\n name: props.property.name,\n boundry: props.property.boundry\n ? {\n type: 'FeatureCollection',\n features: [\n {\n type: 'Feature',\n geometry: {\n type: props.property.boundry.type,\n coordinates: props.property.boundry.coordinates\n }\n }\n ]\n }\n : null,\n hectares: props.property.hectares\n }}\n validate={PropertyFormValidater}\n onSubmit={(values, actions) => {\n // Build the json object to send to the API\n const boundry = Array.isArray(values.boundry?.features)\n ? values.boundry?.features[0].geometry\n : values.boundry?.features?.geometry;\n const postValues = {\n region_id: values.region.value,\n identifier: values.identifier,\n name: values.name,\n boundry: boundry || null,\n hectares: values.hectares\n };\n\n // Use existing property key contact was selected\n if (values.property_key_contact) {\n postValues.property_key_contact_id =\n values.property_key_contact.value;\n }\n\n // Create a new property key contact using a user id\n else if (values.new_property_key_contact.user) {\n postValues.new_property_key_contact = {\n user_type: values.new_property_key_contact.user_type,\n user_id: values.new_property_key_contact.user.value\n };\n }\n\n // Create a new property key contact using text fields\n else {\n postValues.new_property_key_contact = {\n name: values.new_property_key_contact.name,\n email: values.new_property_key_contact.email,\n phone_number: values.new_property_key_contact.phone_number\n };\n }\n\n fetch(\n process.env.REACT_APP_PROPERTIES_API_URL +\n 'api/properties/' +\n props.property.id,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n service: 'fruition',\n SeasonalDatabase: props.selectedDatabase\n },\n body: JSON.stringify(postValues)\n }\n )\n .then((res) => {\n if (res.ok)\n return res.json().then((data) => {\n if (data) {\n props.update(data);\n setEditing(false);\n }\n });\n else if (res.status === 422)\n res.json().then((data) => {\n if (data.errors)\n Object.keys(data.errors).forEach((key) => {\n actions.setFieldError(key, data.errors[key][0]);\n });\n\n actions.setSubmitting(false);\n });\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <div className='card'>\n <div className='card-header d-flex justify-content-between align-items-center'>\n Property Information\n <div>\n {/* Submit button */}\n <Button\n variant='link'\n className='text-success'\n type='button'\n onClick={props.handleSubmit}\n >\n <FontAwesomeIcon icon={faCheck} />\n </Button>\n\n {/* Cancel button */}\n <Button\n variant='link'\n className='text-danger'\n type='button'\n onClick={() => setEditing(false)}\n >\n <FontAwesomeIcon icon={faTimes} />\n </Button>\n </div>\n </div>\n <div className='card-body'>\n <PropertyForm {...props} />\n <div style={{ height: '400px' }}>\n <PropertyMapEditable {...props} />\n </div>\n </div>\n\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </div>\n )}\n </Formik>\n ) : (\n <Card>\n <Card.Header className='d-flex justify-content-between align-items-center'>\n Property Information\n {canWrite ? (\n props.property.deleted_at ? (\n /* Restore button */\n <div>\n <Button\n variant='outline-danger'\n type='button'\n onClick={restore}\n >\n Restore\n </Button>\n </div>\n ) : (\n /* Edit button */\n <div>\n <Button\n variant='link'\n type='button'\n onClick={() => setEditing(true)}\n >\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n </div>\n )\n ) : null}\n </Card.Header>\n <Card.Body>\n <Row>\n <Col>Identifier:</Col>\n <Col>{props.property.identifier}</Col>\n </Row>\n <Row>\n <Col>Name:</Col>\n <Col>{props.property.name}</Col>\n </Row>\n <Row>\n <Col>Region:</Col>\n <Col>{props.property.region.name}</Col>\n </Row>\n <Row>\n <Col>Key Contact:</Col>\n <Col>\n {props.property.property_key_contact.user\n ? props.property.property_key_contact.user.name\n : props.property.property_key_contact.name}\n </Col>\n </Row>\n <Row className='mt-3' style={{ height: '400px' }}>\n <Col>\n <PropertyMap property={props.property} />\n </Col>\n </Row>\n </Card.Body>\n\n {/* If the restoring action is still in progress display the loading overlay */}\n {restoring ? <LoadingOverlay /> : null}\n </Card>\n )}\n </Col>\n {canWritePermissions && !props.property.deleted_at ? (\n <Col>\n <PropertyPermissions\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n property={props.property}\n update={props.update}\n users={props.users}\n propertyRoles={props.propertyRoles}\n />\n </Col>\n ) : null}\n </Row>\n <Row className='mt-3'>\n <Col>\n <PropertyGroups\n propertyGroups={propertyGroups}\n loading={loading}\n linkTo={props.linkTo}\n />\n </Col>\n <Col>\n <PropertyGroupUsers\n propertyGroupsUsers={propertyGroupsUsers}\n users={props.users}\n propertyRoles={props.propertyRoles}\n loading={props.loading}\n />\n </Col>\n </Row>\n </React.Fragment>\n );\n}\n\nProperty.propTypes = {\n // Authentication\n selectedDatabase: PropTypes.string.isRequired,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n\n // Property\n property: PropTypes.object.isRequired,\n update: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n close: PropTypes.func.isRequired,\n\n // Other data\n users: PropTypes.array.isRequired,\n regions: PropTypes.array.isRequired,\n propertyKeyContacts: PropTypes.array.isRequired,\n propertyRoles: PropTypes.array.isRequired,\n\n // Helper methods\n linkTo: PropTypes.func.isRequired\n};\n\nexport default observer(Property);\n","import { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useEffect, useRef, useState } from 'react';\nimport { Button, Modal } from 'react-bootstrap';\nimport LoadingOverlay from '../LoadingOverlay';\nimport PropertiesStore from '../stores/PropertiesStore';\nimport AddProperty from './AddProperty';\nimport PropertiesTable from './PropertiesTable';\nimport Property from './Property';\n\n/*\n * Removed the loading of permissions on the inital load of this page,\n * instead permissions are loaded for a property when you open it. This\n * has forced the deletion of properties to only be possible in the\n * property page because that is the only point we know the users\n * permissions.\n */\n\nfunction Properties(props) {\n // Data\n const [loading, setLoading] = useState(false);\n const [loadingUsers, setLoadingUsers] = useState(false);\n const [users, setUsers] = useState([]);\n const [loadingRegions, setLoadingRegions] = useState(false);\n const [regions, setRegions] = useState([]);\n const [loadingPropertyKeyContacts, setLoadingPropertyKeyContacts] =\n useState(false);\n const [propertyKeyContacts, setPropertyKeyContacts] = useState([]);\n const [loadingPropertyRoles, setLoadingPropertyRoles] = useState(false);\n const [propertyRoles, setPropertyRoles] = useState([]);\n const addPropertyButtonRef = useRef();\n\n const [currentPage, setCurrentPage] = useState(0);\n\n const newProperty = props.newProperty;\n\n useEffect(() => {\n if (\n (!newProperty.data.name && !newProperty.data.identifer) ||\n !newProperty.redirect\n )\n return;\n if (addPropertyButtonRef) {\n addPropertyButtonRef.current.click();\n }\n }, []);\n\n // Display options\n const [showAddPropertyModal, setShowAddPropertyModal] = useState(false);\n /**\n * Load the following when the bearer token is updated:\n * - users (Used by property permissions and property key contacts)\n * - regions\n * - property key contacts\n * - property roles\n */\n useEffect(() => {\n if (props.selectedDatabase) {\n // Load users\n setLoadingUsers(true);\n fetch(process.env.REACT_APP_AUTH_API_URL + 'api/users', {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n service: props.authService\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setUsers(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setUsers([]);\n })\n .finally(() => {\n setLoadingUsers(false);\n });\n\n // Load regions\n setLoadingRegions(true);\n fetch(process.env.REACT_APP_PROPERTIES_API_URL + 'api/regions', {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setRegions(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setRegions([]);\n })\n .finally(() => {\n setLoadingRegions(false);\n });\n\n // Load property key contacts\n setLoadingPropertyKeyContacts(true);\n fetch(\n process.env.REACT_APP_PROPERTIES_API_URL + 'api/property-key-contacts',\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setPropertyKeyContacts(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setPropertyKeyContacts([]);\n })\n .finally(() => {\n setLoadingPropertyKeyContacts(false);\n });\n\n // Load property roles\n setLoadingPropertyRoles(true);\n fetch(process.env.REACT_APP_PROPERTIES_API_URL + 'api/property-roles', {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setPropertyRoles(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setPropertyRoles([]);\n })\n .finally(() => {\n setLoadingPropertyRoles(false);\n });\n }\n }, [props.bearerToken, props.selectedDatabase]);\n\n /**\n * Update the property key contacts state array.\n *\n * @param {object} propertyKeyContact\n */\n const updatePropertyKeyContact = (propertyKeyContact) => {\n const index = propertyKeyContacts.findIndex(\n (p) => p.id === propertyKeyContact.id\n );\n\n // Update the property key contact\n if (index > -1) {\n const newPropertyKeyContacts = [...propertyKeyContacts];\n newPropertyKeyContacts[index] = propertyKeyContact;\n setPropertyKeyContacts(newPropertyKeyContacts);\n }\n\n // Add a new property key contact\n else {\n setPropertyKeyContacts([...propertyKeyContacts, propertyKeyContact]);\n }\n };\n\n /**\n * Sends an http request to the properties API to delete the property and removes it from\n * the properties state array.\n *\n * @param {int} propertyId\n */\n const deleteProperty = (propertyId) => {\n setLoading(true);\n fetch(\n process.env.REACT_APP_PROPERTIES_API_URL + 'api/properties/' + propertyId,\n {\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n /*\n * Properties use soft deletion, so update the property in the properties state array\n * with the new deleted_at field.\n */\n props.propertiesStore.updateProperty(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n /**\n * Overwrites a property in the properties state array.\n *\n * @param {object} property\n */\n const updateProperty = (property) => {\n updatePropertyKeyContact(property.property_key_contact);\n props.propertiesStore.updateProperty(property);\n };\n\n /**\n * Adds a property into the properies state array.\n *\n * @param {object} property\n */\n const addProperty = (property) => {\n updatePropertyKeyContact(property.property_key_contact);\n props.propertiesStore.addProperty(property);\n setShowAddPropertyModal(false);\n props.changeSelectedProperty(property.id);\n };\n\n /**\n * Use the supplied changeSelectedProperty() method in the props to close the selected property.\n */\n const closeSelectedProperty = () => {\n props.changeSelectedProperty(null);\n };\n\n // Check if anything is loading\n if (\n props.propertiesStore.loading ||\n loading ||\n loadingUsers ||\n loadingRegions ||\n loadingPropertyKeyContacts ||\n loadingPropertyRoles\n ) {\n return (\n <div className='h-100'>\n <LoadingOverlay hideOpacity />\n </div>\n );\n } else {\n // if (!props.propertiesStore.loadedPermissions) return null;\n\n const selectedProperty =\n props.propertiesStore.properties[\n props.propertiesStore.properties.findIndex(\n (element) => element.id === props.selectedPropertyId\n )\n ];\n\n // Check if a valid property has been selected\n if (selectedProperty) {\n return (\n <Property\n users={users}\n regions={regions}\n propertyKeyContacts={propertyKeyContacts}\n propertyRoles={propertyRoles}\n property={selectedProperty}\n update={updateProperty}\n delete={deleteProperty}\n close={closeSelectedProperty}\n history={props.history}\n {...props}\n />\n );\n }\n\n // Otherwise display a table of all properties\n else {\n return (\n <Fragment>\n {/* Add Property */}\n <Button\n ref={addPropertyButtonRef}\n variant='outline-success'\n className='mb-2'\n onClick={() => {\n setShowAddPropertyModal(true);\n }}\n >\n Add Property\n </Button>\n <Modal\n backdrop='static'\n show={showAddPropertyModal}\n onHide={() => {\n setShowAddPropertyModal(false);\n }}\n >\n <Modal.Header closeButton>\n <Modal.Title>Add Property</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <AddProperty\n users={users}\n regions={regions}\n propertyKeyContacts={propertyKeyContacts}\n add={addProperty}\n newProperty={newProperty}\n {...props}\n />\n </Modal.Body>\n </Modal>\n\n <PropertiesTable\n data={props.propertiesStore.properties}\n linkTo={props.linkTo}\n changeSelectedProperty={props.changeSelectedProperty}\n deleteProperty={deleteProperty}\n currentPage={currentPage}\n setCurrentPage={setCurrentPage}\n />\n </Fragment>\n );\n }\n }\n}\n\nProperties.propTypes = {\n // Authentication\n selectedDatabase: PropTypes.string,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n authService: PropTypes.string.isRequired,\n\n // Properties\n propertiesStore: PropTypes.instanceOf(PropertiesStore),\n selectedPropertyId: PropTypes.number.isRequired,\n changeSelectedProperty: PropTypes.func.isRequired,\n\n // Helper methods\n linkTo: PropTypes.func.isRequired,\n\n newProperty: PropTypes.object.isRequired\n};\n\nexport default observer(Properties);\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport URI from 'urijs';\nimport { Card, Table } from 'react-bootstrap';\nimport LoadingOverlay from '../LoadingOverlay';\n\nconst UserProperties = (props) => {\n const [loadingProperties, setLoadingProperties] = useState(false);\n const [properties, setProperties] = useState([]);\n\n useEffect(() => {\n setLoadingProperties(true);\n\n const url = new URI(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/admin/user/properties`\n );\n url.addQuery('user_id', props.user_id);\n url.addQuery('user_type', props.user_type);\n\n fetch(url.toString(), {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n SeasonalDatabase: props.selectedDatabase,\n Authorization: `Bearer ${props.bearerToken}`\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setProperties(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setProperties([]);\n })\n .finally(() => {\n setLoadingProperties(false);\n });\n }, [\n props.bearerToken,\n props.selectedDatabase,\n props.user_id,\n props.user_type\n ]);\n\n return (\n <Card>\n <Card.Header\n style={{ height: '63px' }}\n className='d-flex align-items-center'\n >\n Properties ({props.selectedDatabase})\n </Card.Header>\n <Card.Body>\n {loadingProperties ? (\n <LoadingOverlay />\n ) : (\n <Table>\n <thead>\n <tr>\n <th>Name</th>\n </tr>\n </thead>\n <tbody>\n {properties.map((property, i) => (\n <tr key={i}>\n <td>{property.name}</td>\n </tr>\n ))}\n </tbody>\n </Table>\n )}\n </Card.Body>\n </Card>\n );\n};\n\nUserProperties.propTypes = {\n selectedDatabase: PropTypes.string.isRequired,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n user_id: PropTypes.string.isRequired,\n user_type: PropTypes.string.isRequired\n};\n\nexport default UserProperties;\n","import PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\nimport { Card, Table } from 'react-bootstrap';\nimport URI from 'urijs';\nimport LoadingOverlay from '../LoadingOverlay';\n\nconst UserPropertyGroup = (props) => {\n const [loading, setLoading] = useState(false);\n const [propertyGroups, setPropertyGroups] = useState([]);\n\n useEffect(() => {\n const fetchPropertyGroups = async () => {\n try {\n setLoading(true);\n const url = new URI(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/admin/user/property-groups`\n );\n url.addQuery('user_id', props.user_id);\n url.addQuery('user_type', props.user_type);\n const response = await fetch(url.toString(), {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n SeasonalDatabase: props.selectedDatabase,\n Authorization: `Bearer ${props.bearerToken}`\n }\n });\n if (!response.ok) {\n if (response.status === 401) {\n props.refreshBearerToken();\n return;\n }\n throw new Error(response.statusText);\n }\n const data = await response.json();\n setPropertyGroups(data || []);\n } catch (error) {\n if (process.env.NODE_ENV === 'development') {\n console.error(error);\n }\n setPropertyGroups([]);\n } finally {\n setLoading(false);\n }\n };\n\n fetchPropertyGroups();\n }, [\n props.bearerToken,\n props.selectedDatabase,\n props.user_id,\n props.user_type,\n props.refreshBearerToken\n ]);\n\n return (\n <Card>\n <Card.Header\n style={{ height: '63px' }}\n className='d-flex align-items-center'\n >\n Property Groups ({props.selectedDatabase})\n </Card.Header>\n <Card.Body>\n {loading ? (\n <LoadingOverlay />\n ) : (\n <Table>\n <thead>\n <tr>\n <th>Name</th>\n </tr>\n </thead>\n <tbody>\n {propertyGroups.length > 0 ? (\n propertyGroups.map((propertyGroup, i) => (\n <tr key={i}>\n <td>{propertyGroup.name}</td>\n </tr>\n ))\n ) : (\n <tr>\n <td className='text-center'>No property groups found</td>\n </tr>\n )}\n </tbody>\n </Table>\n )}\n </Card.Body>\n </Card>\n );\n};\n\nUserPropertyGroup.propTypes = {\n selectedDatabase: PropTypes.string.isRequired,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n user_id: PropTypes.string.isRequired,\n user_type: PropTypes.string.isRequired\n};\n\nexport default UserPropertyGroup;\n","import React from 'react';\nimport { Form } from 'react-bootstrap';\nimport LoadingOverlay from '../LoadingOverlay';\n\nfunction PropertyGroupForm({\n handleSubmit,\n handleChange,\n handleBlur,\n values,\n errors,\n setFieldValue,\n isSubmitting,\n customOptions\n}) {\n const addAllStaff = customOptions?.addAllStaff;\n\n return (\n <Form onSubmit={handleSubmit}>\n <Form.Group>\n <Form.Label>Name</Form.Label>\n <Form.Control\n id='name'\n type='text'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.name}\n placeholder='Name'\n isInvalid={errors.name}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.name}\n </Form.Control.Feedback>\n </Form.Group>\n <Form.Group>\n <Form.Label>Description</Form.Label>\n <Form.Control\n id='description'\n as='textarea'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.description}\n placeholder='Description'\n isInvalid={errors.description}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.description}\n </Form.Control.Feedback>\n </Form.Group>\n {!customOptions || addAllStaff ? ( // Display by default (no custom options).\n <Form.Group controlId='add_staff'>\n <div>\n <Form.Label className='mr-3'>Give access to all staff?</Form.Label>\n <input\n className='mt-2'\n style={{ width: '16px', height: '16px' }}\n type='checkbox'\n onChange={(e) => {\n setFieldValue('add_staff', e.target.checked);\n }}\n value={values.add_staff}\n />\n </div>\n </Form.Group>\n ): null}\n {isSubmitting ? <LoadingOverlay /> : null}\n </Form>\n );\n}\n\nexport const PropertyGroupFormValidator = (values, props) => {\n const errors = {};\n\n if (!values.name) errors.name = 'Required';\n\n return errors;\n};\n\nexport default PropertyGroupForm;\n","import { faCheck, faEdit, faTimes } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Formik } from 'formik';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useState } from 'react';\nimport { Button, Card, Col, Row, Spinner } from 'react-bootstrap';\nimport PropertyGroupForm, {\n PropertyGroupFormValidator\n} from '../PropertyGroupForm';\n\nfunction Details(props) {\n const [editingDetails, setEditingDetails] = useState(false);\n const [restoring, setRestoring] = useState(false);\n // Options to customise UI.\n const customOptions = props?.customOptions;\n const customFormOptions = customOptions?.form;\n\n const restore = async () => {\n setRestoring(true);\n try {\n const response = await fetch(\n process.env.REACT_APP_PROPERTIES_API_URL +\n 'api/property-groups/' +\n props.propertyGroup.id +\n '/restore',\n {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n );\n if (!response.ok) {\n if (process.env.NODE_ENV === 'development') console.error(err);\n if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n } else {\n const data = await response.json();\n if (data) props.update(data);\n }\n } catch (err) {\n if (process.env.NODE_ENV === 'development') console.error(err);\n } finally {\n setRestoring(false);\n }\n };\n\n return props.propertyGroup.userProperty.can_edit && editingDetails ? (\n <Formik\n initialValues={{\n name: props.propertyGroup.name,\n group_type: props.propertyGroup.group_type,\n description: props.propertyGroup.description || ''\n }}\n validate={PropertyGroupFormValidator}\n onSubmit={(values, actions) => {\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups/${props.propertyGroup.id}?with[]=properties&with[]=users.propertyRole&append[]=userProperty`,\n {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n },\n body: JSON.stringify(values)\n }\n )\n .then((res) => {\n if (res.ok)\n res.json().then((data) => {\n if (data) {\n props.update(data);\n setEditingDetails(false);\n }\n });\n if (res.status === 422)\n res.json().then((data) => {\n if (data.errors) {\n Object.keys(data.errors).forEach((key) => {\n actions.setFieldError(key, data.errors[key][0]);\n });\n\n actions.setSubmitting(false);\n }\n });\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <div className='card'>\n <div className='card-header d-flex justify-content-between align-items-center'>\n Details\n <div>\n <Button\n variant='link'\n className='text-success'\n type='button'\n onClick={props.submitForm}\n >\n <FontAwesomeIcon icon={faCheck} />\n </Button>\n <Button\n variant='link'\n className='text-danger'\n type='button'\n onClick={() => setEditingDetails(false)}\n >\n <FontAwesomeIcon icon={faTimes} />\n </Button>\n </div>\n </div>\n <div className='card-body'>\n <PropertyGroupForm {...props} customOptions={customFormOptions} />\n </div>\n </div>\n )}\n </Formik>\n ) : (\n <Card>\n <Card.Header className='d-flex justify-content-between align-items-center'>\n Details\n {props.propertyGroup.userProperty.can_edit ? (\n !props.propertyGroup.deleted_at ? (\n /* Edit button */\n <Button\n variant='link'\n type='button'\n onClick={() => setEditingDetails(true)}\n >\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n ) : (\n /* Restore button */\n <Button\n variant='outline-danger'\n type='button'\n disabled={restoring}\n onClick={async () => {\n await restore();\n }}\n >\n {restoring ? (\n <Spinner\n className='mx-3'\n animation='border'\n variant='danger'\n size='sm'\n />\n ) : (\n 'Restore'\n )}\n </Button>\n )\n ) : null}\n </Card.Header>\n <Card.Body>\n <Fragment>\n <Row>\n <Col>Name</Col>\n <Col>{props.propertyGroup.name}</Col>\n </Row>\n <Row>\n <Col>Description</Col>\n <Col>{props.propertyGroup.description}</Col>\n </Row>\n </Fragment>\n </Card.Body>\n </Card>\n );\n}\n\nDetails.propTypes = {\n // Authentication\n bearerToken: PropTypes.string.isRequired,\n selectedDatabase: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n\n // Property Group\n propertyGroup: PropTypes.object.isRequired,\n update: PropTypes.func.isRequired,\n\n // Custom Options\n customOptions: PropTypes.object\n};\n\nexport default Details;\n","import React from 'react';\nimport { Form } from 'react-bootstrap';\nimport Select from 'react-select';\n\nfunction UserPropertyGroupForm({\n handleSubmit,\n handleChange,\n handleBlur,\n values,\n errors,\n setFieldValue,\n isSubmitting\n}) {\n return (\n <Form onSubmit={handleSubmit}>\n {/* User */}\n <Form.Group controlId='user_id'>\n {values.users ? (\n <div>\n <Form.Label>User</Form.Label>\n <Select\n defaultValue={values.user}\n onChange={(option) => setFieldValue('user', option)}\n options={values.users.map((user) => {\n return {\n value: user.id,\n label: user.name\n };\n })}\n />\n </div>\n ) : (\n <Form.Label>User<br/>{values.user.label}</Form.Label>\n )}\n {errors.user ? <div className='text-danger'>{errors.user}</div> : null}\n </Form.Group>\n\n {/* Can Edit */}\n <Form.Group controlId='can_edit'>\n <Form.Check\n custom\n type='checkbox'\n label='Can Edit'\n onChange={() => setFieldValue('can_edit', !values.can_edit)}\n defaultChecked={values.can_edit}\n style={{ zIndex: 0 }}\n />\n </Form.Group>\n\n {/* Property Role */}\n <Form.Group controlId='property_role_id'>\n <Form.Label>Role</Form.Label>\n <Select\n defaultValue={values.propertyRole}\n onChange={(option) => setFieldValue('propertyRole', option)}\n options={values.propertyRoles.map((propertyRole) => {\n return {\n value: propertyRole.id,\n label: propertyRole.name\n };\n })}\n />\n {errors.propertyRole ? (\n <div className='text-danger'>{errors.propertyRole}</div>\n ) : null}\n </Form.Group>\n </Form>\n );\n}\n\nexport default UserPropertyGroupForm;\n","import {\n faCheck,\n faEdit,\n faTimes,\n faTrash\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Formik } from 'formik';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useState } from 'react';\nimport { Button, Card, Col, Modal, Row, Table } from 'react-bootstrap';\nimport LoadingOverlay from '../../LoadingOverlay';\nimport AddAllStaffModal from '../../modals/AddAllStaffModal';\nimport UserPropertyGroupForm from '../UserPropertyGroupForm';\n\nfunction Permissions(props) {\n const [loadingPermissions, setLoadingPermissions] = useState(false);\n const [showAddUserModal, setShowAddUserModal] = useState(false);\n const [selectedUserPropertyGroup, setSelectedUserPropertyGroup] = useState(\n null\n );\n\n /**\n * @param {int} userId\n * @param {string} userType\n * @returns {object|null}\n */\n const findUser = (userId, userType) => {\n if (userType === 'fruition') {\n return props.users.find((user) => user.id === userId);\n } else {\n return null;\n }\n };\n\n /**\n * Update the property group object by adding the supplied user property group\n * to the users array.\n *\n * @param {object} userPropertyGroup\n */\n const addUserPropertyGroup = (userPropertyGroup) => {\n const newPropertyGroup = { ...props.propertyGroup };\n newPropertyGroup.users.push(userPropertyGroup);\n props.update(newPropertyGroup);\n };\n\n /**\n * Update the property group object by adding the supplied user property groups\n * to the users array.\n *\n * @param {object[]} userPropertyGroup\n */\n const addUserPropertyGroups = (userPropertyGroups) => {\n const newPropertyGroup = { ...props.propertyGroup };\n newPropertyGroup.users.push(...userPropertyGroups);\n props.update(newPropertyGroup);\n };\n\n /**\n * Update the property group object by sending an API request, then if successful\n * finding and removing the supplied user property group from the users array.\n *\n * @param {object} userPropertyGroup\n */\n const removeUserPropertyGroup = (userPropertyGroup) => {\n const user = findUser(\n userPropertyGroup.user_id,\n userPropertyGroup.user_type\n );\n\n if (!user) {\n window.alert('Unknown user');\n } else if (\n window.confirm(`Are you sure you want to delete ${user.name}?`)\n ) {\n setLoadingPermissions(true);\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/user-property-group/${userPropertyGroup.id}`,\n {\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) {\n const newPropertyGroup = { ...props.propertyGroup };\n newPropertyGroup.users.splice(\n newPropertyGroup.users.findIndex(\n (u) => u.id === userPropertyGroup.id\n ),\n 1\n );\n props.update(newPropertyGroup);\n } else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n setLoadingPermissions(false);\n });\n }\n };\n\n /**\n * Update the property group object by finding and updating the supplied user\n * property group in the users array.\n *\n * @param {object} userPropertyGroup\n */\n const updateUserPropertyGroup = (userPropertyGroup) => {\n const newPropertyGroup = { ...props.propertyGroup };\n newPropertyGroup.users[\n newPropertyGroup.users.findIndex((u) => u.id === userPropertyGroup.id)\n ] = userPropertyGroup;\n props.update(newPropertyGroup);\n };\n\n const handleSubmitUserPermissions = (values, actions) => {\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/user-property-group${\n selectedUserPropertyGroup ? `/${selectedUserPropertyGroup.id}` : ''\n }?with[]=propertyRole`,\n {\n method: selectedUserPropertyGroup ? 'PUT' : 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n SeasonalDatabase: props.selectedDatabase,\n Authorization: `Bearer ${props.bearerToken}`\n },\n body: JSON.stringify({\n property_group_id: props.propertyGroup.id,\n user_type: 'fruition',\n user_id: values.user.value,\n can_edit: !!values.can_edit,\n property_role_id: values.propertyRole.value\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n if (selectedUserPropertyGroup) {\n updateUserPropertyGroup(data);\n } else {\n addUserPropertyGroup(data);\n }\n\n setShowAddUserModal(false);\n setSelectedUserPropertyGroup(null);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n };\n\n const handleAddAllStaffConfirmation = () => {\n return fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/user-property-group/batch`,\n {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n SeasonalDatabase: props.selectedDatabase,\n Authorization: `Bearer ${props.bearerToken}`\n },\n body: JSON.stringify({\n property_group_id: props.propertyGroup.id\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n addUserPropertyGroups(data);\n setSelectedUserPropertyGroup(null);\n }\n });\n };\n\n return (\n <Card>\n <Card.Header\n style={{ height: '63px' }}\n className='d-flex align-items-center'\n >\n Permissions\n </Card.Header>\n <Card.Body>\n <Table responsive>\n <thead>\n <tr>\n <th>Name</th>\n <th>Can Edit Group?</th>\n <th>Assigned Role</th>\n <th />\n </tr>\n </thead>\n <tbody>\n {props.propertyGroup.users.map((userPropertyGroup) => {\n const user = findUser(\n userPropertyGroup.user_id,\n userPropertyGroup.user_type\n );\n\n if (user) {\n return (\n <tr key={userPropertyGroup.id}>\n <td>{user.name}</td>\n <td>\n <FontAwesomeIcon\n className={\n userPropertyGroup.can_edit\n ? 'text-success'\n : 'text-danger'\n }\n icon={userPropertyGroup.can_edit ? faCheck : faTimes}\n />\n </td>\n <td>{userPropertyGroup.property_role.name}</td>\n <td>\n <Button\n variant='link'\n className='text-danger'\n onClick={() => {\n removeUserPropertyGroup(userPropertyGroup);\n }}\n >\n <FontAwesomeIcon icon={faTrash} />\n </Button>\n <Button\n variant='link'\n className='text-primary'\n onClick={() => {\n setSelectedUserPropertyGroup(userPropertyGroup);\n setShowAddUserModal(true);\n }}\n >\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n </td>\n </tr>\n );\n }\n })}\n </tbody>\n </Table>\n <Row>\n <Col md={5}>\n <Button\n variant='outline-success'\n onClick={() => {\n setShowAddUserModal(true);\n }}\n >\n Add User\n </Button>\n </Col>\n <Col></Col>\n {/** Add all staff modal */}\n <Col md={5}>\n <AddAllStaffModal\n handleAddAllStaffConfirmation={handleAddAllStaffConfirmation}\n />\n </Col>\n </Row>\n {/** Add user modal */}\n <Modal\n backdrop='static'\n show={showAddUserModal}\n onHide={() => {\n setShowAddUserModal(false);\n setSelectedUserPropertyGroup(null);\n }}\n >\n <Modal.Header closeButton>\n <Modal.Title>\n {selectedUserPropertyGroup ? 'Edit ' : 'Add '}User\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Formik\n initialValues={{\n can_edit: selectedUserPropertyGroup\n ? selectedUserPropertyGroup.can_edit\n : false,\n\n // react-select objects\n user: selectedUserPropertyGroup\n ? {\n value: selectedUserPropertyGroup.user_id,\n label: props.users.find(\n (user) => user.id === selectedUserPropertyGroup.user_id\n ).name\n }\n : null,\n propertyRole: selectedUserPropertyGroup\n ? {\n value: selectedUserPropertyGroup.property_role.id,\n label: selectedUserPropertyGroup.property_role.name\n }\n : null,\n\n // react-select list data\n users: selectedUserPropertyGroup ? null : props.users,\n propertyRoles: props.propertyRoles\n }}\n validate={(values) => {\n const errors = {};\n\n if (!values.user) errors.user = 'This is a required field';\n if (!values.propertyRole)\n errors.propertyRole = 'This is a required field';\n\n return errors;\n }}\n onSubmit={handleSubmitUserPermissions}\n >\n {(props) => (\n <Fragment>\n <UserPropertyGroupForm {...props} />\n <Button\n variant='primary'\n type='button'\n onClick={props.handleSubmit}\n >\n Submit\n </Button>\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </Fragment>\n )}\n </Formik>\n </Modal.Body>\n </Modal>\n {loadingPermissions ? <LoadingOverlay /> : null}\n </Card.Body>\n </Card>\n );\n}\n\nPermissions.propTypes = {\n // Authentication\n bearerToken: PropTypes.string.isRequired,\n selectedDatabase: PropTypes.string.isRequired,\n // databases: PropTypes.array.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n\n // Property Group\n propertyGroup: PropTypes.object.isRequired,\n update: PropTypes.func.isRequired,\n\n // Misc\n users: PropTypes.array.isRequired,\n propertyRoles: PropTypes.array.isRequired\n};\n\nexport default Permissions;\n","import React from 'react';\nimport Select from 'react-select';\n\nconst PropertySelect = ({\n properties,\n adminProperties,\n loadingAdminProperties,\n onChange\n}) => {\n return (\n <Select\n value={properties}\n onChange={onChange}\n options={adminProperties.map((adminProperty) => {\n return {\n value: adminProperty.id,\n label: adminProperty.name\n };\n })}\n styles={{\n container: (styles) => ({\n ...styles,\n flex: '1 1 auto'\n })\n }}\n isLoading={loadingAdminProperties}\n closeMenuOnSelect={false}\n isMulti\n />\n );\n};\n\nexport default PropertySelect;\n","import { faPlus, faTrash } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Formik } from 'formik';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { Button, Card, Form, InputGroup, Table } from 'react-bootstrap';\nimport LoadingOverlay from '../../../LoadingOverlay';\nimport PropertySelect from './PropertySelect';\n\nfunction Properties(props) {\n const [loadingProperties, setLoadingProperties] = useState(false);\n const [loadingAdminProperties, setLoadingAdminProperties] = useState(false);\n const [adminProperties, setAdminProperties] = useState([]);\n\n /**\n * Load properties that you have admin access to when the bearer token is updated.\n */\n useEffect(() => {\n // Only bother loading properties if the user has permission to attach/detach properties\n if (props.propertyGroup.userProperty.can_edit) {\n setLoadingAdminProperties(true);\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/properties?role=Admin`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setAdminProperties(\n data.sort((a, b) =>\n a.name < b.name ? -1 : a.name > b.name ? 1 : 0\n )\n );\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n setLoadingAdminProperties(false);\n });\n }\n }, [props.bearerToken]);\n\n /**\n * Calculated value used within the Formik form because it cannot access outside props.\n */\n const propertyGroupProperties = useMemo(\n () => props.propertyGroup.properties,\n [props.propertyGroup]\n );\n\n const selectAdminProperties = useMemo(\n () =>\n adminProperties\n .filter(\n (adminProperty) =>\n !propertyGroupProperties.some(\n (property) => adminProperty.id === property.id\n )\n )\n .filter((adminProperty) => {\n return adminProperty.deleted_at === null;\n }),\n [adminProperties, propertyGroupProperties]\n );\n\n /**\n * Detach the supplied property from the property group.\n *\n * @param {int} propertyId\n */\n const detachProperty = (propertyId) => {\n setLoadingProperties(true);\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups/${props.propertyGroup.id}/detach-properties?with[]=properties&with[]=users.propertyRole&append[]=userProperty`,\n {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n },\n body: JSON.stringify({\n properties: [propertyId]\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n props.update(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n setLoadingProperties(false);\n });\n };\n\n return (\n <Card>\n <Card.Header\n style={{ height: '63px' }}\n className='d-flex align-items-center'\n >\n Properties\n </Card.Header>\n <Card.Body>\n {props.propertyGroup.userProperty.can_edit ? (\n <Formik\n initialValues={{\n properties: []\n }}\n onSubmit={(values, actions) => {\n setLoadingProperties(true);\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups/${props.propertyGroup.id}/attach-properties?with[]=properties&with[]=users.propertyRole&append[]=userProperty`,\n {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n },\n body: JSON.stringify({\n properties: values.properties.map(\n (property) => property.value\n )\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n props.update(data);\n actions.setFieldValue('properties', []);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n })\n .finally(() => {\n setLoadingProperties(false);\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <Form onSubmit={props.handleSubmit}>\n <Form.Group controlId='properties'>\n <InputGroup className='d-flex flex-nowrap'>\n <PropertySelect\n properties={props.values.properties}\n adminProperties={selectAdminProperties}\n loadingAdminProperties={loadingAdminProperties}\n onChange={(options) => {\n props.setFieldValue('properties', options || []);\n }}\n />\n <InputGroup.Append>\n <Button\n variant='outline-success'\n className='rounded ml-1'\n type='submit'\n disabled={\n loadingAdminProperties ||\n selectAdminProperties.length === 0 ||\n props.values.properties.length === 0\n }\n >\n <FontAwesomeIcon icon={faPlus} />\n </Button>\n </InputGroup.Append>\n </InputGroup>\n </Form.Group>\n </Form>\n )}\n </Formik>\n ) : null}\n <Table responsive>\n <thead>\n <tr>\n <th>Name</th>\n <th />\n </tr>\n </thead>\n <tbody>\n {props.propertyGroup.properties\n .sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0))\n .map((property) => (\n <tr key={property.id}>\n <td>{property.name}</td>\n <td>\n {props.propertyGroup.userProperty.can_edit ? (\n <Button\n variant='link'\n type='button'\n className='text-danger'\n onClick={() => detachProperty(property.id)}\n >\n <FontAwesomeIcon icon={faTrash} />\n </Button>\n ) : null}\n </td>\n </tr>\n ))}\n </tbody>\n </Table>\n {loadingProperties ? <LoadingOverlay /> : null}\n </Card.Body>\n </Card>\n );\n}\n\nProperties.propTypes = {\n // Authentication\n bearerToken: PropTypes.string.isRequired,\n selectedDatabase: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n\n // Property Group\n propertyGroup: PropTypes.object.isRequired,\n update: PropTypes.func.isRequired\n};\n\nexport default Properties;\n","import PropTypes from 'prop-types';\nimport React, { Fragment, useEffect, useState } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport LoadingOverlay from '../LoadingOverlay';\nimport { useFirstRender } from '../hooks/FirstRenderHook';\nimport Details from './property_group/Details';\nimport Permissions from './property_group/Permissions';\nimport Properties from './property_group/Properties/Properties';\n\nfunction PropertyGroup(props) {\n const [loadingPropertyGroup, setLoadingPropertyGroup] = useState(false);\n\n const firstRender = useFirstRender();\n\n useEffect(() => {\n if (!firstRender) props.history.replace('/property-groups');\n }, [props.selectedDatabase]);\n\n useEffect(() => {\n if (\n props.propertyGroup &&\n (!props.propertyGroup.properties || !props.propertyGroup.users)\n ) {\n setLoadingPropertyGroup(true);\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups/${props.propertyGroup.id}?append[]=userProperty&with[]=properties&with[]=users.propertyRole&withTrashed=true`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n props.update(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n setLoadingPropertyGroup(false);\n });\n }\n }, [props.bearerToken, props.selectedDatabase, props.propertyGroup]);\n\n return loadingPropertyGroup ? (\n <LoadingOverlay />\n ) : !props.propertyGroup.properties || !props.propertyGroup.users ? null : (\n <Fragment>\n <Row>\n <Col>\n <Button variant='outline-secondary' onClick={props.close}>\n Back\n </Button>\n </Col>\n </Row>\n <Row className='mt-2'>\n <Col>\n {/* Details */}\n <Row>\n <Col>\n <Details\n bearerToken={props.bearerToken}\n selectedDatabase={props.selectedDatabase}\n refreshBearerToken={props.refreshBearerToken}\n propertyGroup={props.propertyGroup}\n update={props.update}\n />\n </Col>\n </Row>\n\n {/* Permissions */}\n {props.propertyGroup.userProperty.can_edit ? (\n <Row className='mt-4'>\n <Col>\n <Permissions\n bearerToken={props.bearerToken}\n selectedDatabase={props.selectedDatabase}\n refreshBearerToken={props.refreshBearerToken}\n propertyGroup={props.propertyGroup}\n update={props.update}\n users={props.users}\n propertyRoles={props.propertyRoles}\n />\n </Col>\n </Row>\n ) : null}\n </Col>\n\n {/* Properties */}\n <Col>\n <Properties\n bearerToken={props.bearerToken}\n selectedDatabase={props.selectedDatabase}\n refreshBearerToken={props.refreshBearerToken}\n propertyGroup={props.propertyGroup}\n update={props.update}\n history={props.history}\n />\n </Col>\n </Row>\n </Fragment>\n );\n}\n\nPropertyGroup.propTypes = {\n // Authentication\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n selectedDatabase: PropTypes.string.isRequired,\n\n // Property Group\n propertyGroup: PropTypes.object.isRequired,\n update: PropTypes.func.isRequired,\n close: PropTypes.func.isRequired,\n\n // Other data\n propertyRoles: PropTypes.array.isRequired,\n users: PropTypes.array.isRequired\n};\n\nexport default PropertyGroup;\n","import {\n faExternalLinkAlt,\n faEye,\n faSort,\n faSortDown,\n faSortUp,\n faTrash\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Formik } from 'formik';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useEffect, useMemo, useState } from 'react';\nimport { Button, Modal, Table } from 'react-bootstrap';\nimport { useGlobalFilter, useSortBy, useTable } from 'react-table';\nimport GlobalTableFilter from '../GlobalTableFilter';\nimport LoadingOverlay from '../LoadingOverlay';\nimport PropertyGroup from './PropertyGroup';\nimport PropertyGroupForm, {\n PropertyGroupFormValidator\n} from './PropertyGroupForm';\n\nfunction PropertyGroupsTable({\n data,\n changeSelectedPropertyGroup,\n deletePropertyGroup\n}) {\n const [showDeletedPropertyGroups, setShowDeletedPropertyGroups] =\n useState(false);\n\n const columns = useMemo(\n () => [\n {\n Header: 'Name',\n accessor: 'name'\n },\n {\n id: 'actions',\n sortable: false,\n filterable: false,\n Header: (tableInstance) => (\n <div className='text-right'>\n <Button\n type='button'\n variant='link'\n className={\n tableInstance.state.showDeletedPropertyGroups\n ? 'text-primary'\n : 'text-dark'\n }\n onClick={() => {\n setShowDeletedPropertyGroups(\n !tableInstance.state.showDeletedPropertyGroups\n );\n }}\n >\n <FontAwesomeIcon icon={faEye} />\n </Button>\n </div>\n ),\n Cell: ({ row }) => {\n return (\n <div className='text-right'>\n {/* Select property group */}\n <Button\n type='button'\n variant='link'\n className='text-primary'\n onClick={() => changeSelectedPropertyGroup(row.original.id)}\n >\n <FontAwesomeIcon icon={faExternalLinkAlt} />\n </Button>\n\n {/* Delete property group */}\n {row.original.deleted_at === null &&\n row.original.userProperty.can_edit ? (\n <Button\n type='button'\n variant='link'\n className='text-danger'\n onClick={() => deletePropertyGroup(row.original.id)}\n >\n <FontAwesomeIcon icon={faTrash} />\n </Button>\n ) : null}\n </div>\n );\n }\n }\n ],\n []\n );\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n state,\n preGlobalFilteredRows,\n setGlobalFilter\n } = useTable(\n {\n columns,\n data,\n useControlledState: (state) => {\n return React.useMemo(\n () => ({\n ...state,\n showDeletedPropertyGroups: showDeletedPropertyGroups\n }),\n [state, showDeletedPropertyGroups]\n );\n }\n },\n useGlobalFilter,\n useSortBy\n );\n\n return (\n <Fragment>\n <GlobalTableFilter\n preGlobalFilteredRows={preGlobalFilteredRows}\n globalFilter={state.globalFilter}\n setGlobalFilter={setGlobalFilter}\n style={{\n marginBottom: '0.5rem',\n maxWidth: 500\n }}\n />\n <Table responsive {...getTableProps()}>\n <thead>\n {headerGroups.map((headerGroup) => (\n <tr {...headerGroup.getHeaderGroupProps()}>\n {headerGroup.headers.map((column) => {\n return (\n <th {...column.getHeaderProps(column.getSortByToggleProps())}>\n {column.render('Header')}\n {column.canSort ? (\n <span className='px-2'>\n {column.isSorted ? (\n column.isSortedDesc ? (\n <FontAwesomeIcon icon={faSortDown} />\n ) : (\n <FontAwesomeIcon icon={faSortUp} />\n )\n ) : (\n <FontAwesomeIcon icon={faSort} />\n )}\n </span>\n ) : null}\n </th>\n );\n })}\n </tr>\n ))}\n </thead>\n <tbody {...getTableBodyProps()}>\n {rows.map((row) => {\n prepareRow(row);\n\n if (showDeletedPropertyGroups || row.original.deleted_at === null) {\n return (\n <tr {...row.getRowProps()}>\n {row.cells.map((cell) => {\n return (\n <td {...cell.getCellProps()}>{cell.render('Cell')}</td>\n );\n })}\n </tr>\n );\n }\n })}\n </tbody>\n </Table>\n </Fragment>\n );\n}\n\nfunction PropertyGroups(props) {\n // Data\n const [loadingPropertyGroups, setLoadingPropertyGroups] = useState(false);\n const [propertyGroups, setPropertyGroups] = useState([]);\n\n const [loadingPropertyRoles, setLoadingPropertyRoles] = useState(false);\n const [propertyRoles, setPropertyRoles] = useState([]);\n\n const [loadingUsers, setLoadingUsers] = useState(false);\n const [users, setUsers] = useState([]);\n\n // Display options\n const [showAddPropertyGroupModal, setShowAddPropertyGroupModal] =\n useState(false);\n\n /**\n * Load the following when the bearer token is updated:\n * - property groups\n * - property roles\n * - users (Used by propery group permissions)\n */\n useEffect(() => {\n if (!props.selectedDatabase || !props.bearerToken) return;\n // Property Groups\n setLoadingPropertyGroups(true);\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups?append[]=userProperty`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n SeasonalDatabase: props.selectedDatabase,\n Authorization: 'Bearer ' + props.bearerToken\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setPropertyGroups(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setPropertyGroups([]);\n })\n .finally(() => {\n setLoadingPropertyGroups(false);\n });\n\n // Property roles\n setLoadingPropertyRoles(true);\n fetch(`${process.env.REACT_APP_PROPERTIES_API_URL}api/property-roles`, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setPropertyRoles(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setPropertyRoles([]);\n })\n .finally(() => {\n setLoadingPropertyRoles(false);\n });\n\n // Users\n setLoadingUsers(true);\n fetch(`${process.env.REACT_APP_AUTH_API_URL}api/users`, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n service: props.authService\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setUsers(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setUsers([]);\n })\n .finally(() => {\n setLoadingUsers(false);\n });\n }, [props.bearerToken, props.selectedDatabase]);\n\n /**\n * Overwrites a property groups in the property groups state array.\n *\n * @param {object} propertyGroup\n */\n const updatePropertyGroup = (propertyGroup) => {\n const newPropertyGroups = [...propertyGroups];\n newPropertyGroups[\n newPropertyGroups.findIndex((p) => p.id === propertyGroup.id)\n ] = propertyGroup;\n setPropertyGroups(newPropertyGroups);\n };\n\n /**\n * Sends an http request to the properties API to delete the property\n * group and removes it from the property groups state array.\n *\n * @param {int} propertyGroupId\n */\n const deletePropertyGroup = (propertyGroupId) => {\n setLoadingPropertyGroups(true);\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups/${propertyGroupId}?with[]=properties&with[]=users.propertyRole&append[]=userProperty`,\n {\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n /*\n * Property groups use soft deletion, so update the property group\n * in the property groups state array with the new deleted_at field.\n */\n updatePropertyGroup(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n setLoadingPropertyGroups(false);\n });\n };\n\n const addPropertyGroup = (propertyGroup) => {\n const newPropertyGroups = [...propertyGroups];\n newPropertyGroups.push(propertyGroup);\n setPropertyGroups(newPropertyGroups);\n };\n\n /*\n * Render\n */\n // Check if anything is loading\n if (loadingPropertyGroups || loadingPropertyRoles || loadingUsers) {\n return (\n <div className='h-100'>\n <LoadingOverlay hideOpacity />\n </div>\n );\n } else {\n const selectedPropertyGroup =\n propertyGroups[\n propertyGroups.findIndex(\n (element) => element.id === props.selectedPropertyGroupId\n )\n ];\n\n // Check if a valid property has been selected\n if (selectedPropertyGroup) {\n return (\n <PropertyGroup\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n selectedDatabase={props.selectedDatabase}\n propertyGroup={selectedPropertyGroup}\n update={updatePropertyGroup}\n close={() => props.changeSelectedPropertyGroup(null)}\n propertyRoles={propertyRoles}\n users={users}\n history={props.history}\n />\n );\n } else {\n return (\n <Fragment>\n <Button\n variant='outline-success'\n className='mb-2'\n onClick={() => {\n setShowAddPropertyGroupModal(true);\n }}\n >\n Add Property Group\n </Button>\n <Modal\n backdrop='static'\n show={showAddPropertyGroupModal}\n onHide={() => {\n setShowAddPropertyGroupModal(false);\n }}\n >\n <Modal.Header closeButton>\n <Modal.Title>Add Property Group</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Formik\n initialValues={{\n name: '',\n group_type: 'manual',\n description: '',\n add_staff: false\n }}\n validate={PropertyGroupFormValidator}\n onSubmit={(values, actions) => {\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups?with[]=properties&with[]=users.propertyRole&append[]=userProperty`,\n {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n },\n body: JSON.stringify(values)\n }\n )\n .then((res) => {\n if (res.ok)\n res.json().then((data) => {\n if (data) {\n addPropertyGroup(data);\n setShowAddPropertyGroupModal(false);\n props.changeSelectedPropertyGroup(data.id);\n }\n });\n if (res.status === 422)\n res.json().then((data) => {\n if (data.errors) {\n Object.keys(data.errors).forEach((key) => {\n actions.setFieldError(key, data.errors[key][0]);\n });\n\n actions.setSubmitting(false);\n }\n });\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <Fragment>\n <PropertyGroupForm {...props} />\n <Button\n varient='primary'\n type='button'\n onClick={props.handleSubmit}\n >\n Submit\n </Button>\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </Fragment>\n )}\n </Formik>\n </Modal.Body>\n </Modal>\n\n <PropertyGroupsTable\n data={propertyGroups.filter(\n (propertyGroup) => propertyGroup.group_type === 'manual'\n )}\n deletePropertyGroup={deletePropertyGroup}\n changeSelectedPropertyGroup={props.changeSelectedPropertyGroup}\n />\n </Fragment>\n );\n }\n }\n}\n\nPropertyGroups.propTypes = {\n // Authentication\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n selectedDatabase: PropTypes.string.isRequired,\n\n // Property Group\n selectedPropertyGroupId: PropTypes.number.isRequired,\n changeSelectedPropertyGroup: PropTypes.func.isRequired,\n\n // History\n history: PropTypes.object.isRequired\n};\n\nexport default PropertyGroups;\n","import React, { Fragment, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Formik } from 'formik';\nimport { Form, Card, Row, Col, Button } from 'react-bootstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faEdit, faTimes, faCheck } from '@fortawesome/free-solid-svg-icons';\nimport LoadingOverlay from '../LoadingOverlay';\n\nfunction PropertyKeyContact(props) {\n const [editing, setEditing] = useState(false);\n\n return (\n <Row>\n <Col>\n {editing ? (\n <Formik\n initialValues={{\n users: props.users,\n name: props.propertyKeyContact.name,\n email: props.propertyKeyContact.email,\n phone_number: props.propertyKeyContact.phone_number\n }}\n validate={(values) => {\n const errors = {};\n\n let phoneNumberValid = false;\n const numberWithCountryCode = /^[\\+]?[(]?[0-9]{2}[)]?[-\\s]?[0-9]{2}[-\\s]?[0-9]{3}[-\\s]?[0-9]{4,6}$/;\n const numberWithPrefix = /^[(]{0,1}[0-9]{3}[)]{0,1}[-\\s]{0,1}[0-9]{3}[-\\s]{0,1}[0-9]{4}$/;\n\n if (\n values.phone_number.match(numberWithCountryCode) ||\n values.phone_number.match(numberWithPrefix)\n ) {\n phoneNumberValid = true;\n }\n\n if (!values.name) {\n errors.name = 'Name is required';\n } else if (!values.email) {\n errors.email = 'Email is required';\n } else if (\n !values.phone_number ||\n phoneNumberValid === false ||\n isNaN(values.phone_number.replace(/\\D/g, ''))\n ) {\n errors.phone_number = 'Phone number is required';\n }\n return errors;\n }}\n onSubmit={(values, actions) => {\n const body = {\n name: values.name,\n email: values.email,\n phone_number: values.phone_number\n };\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-key-contacts/${props.propertyKeyContact.id}`,\n {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n },\n body: JSON.stringify(body)\n }\n )\n .then((res) => {\n if (res.ok) {\n return res.json();\n } else if (res.status === 401) {\n props.refreshBearerToken();\n } else {\n throw Error(res.statusText);\n }\n })\n .then((data) => {\n if (data) {\n props.update(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n actions.setSubmitting(false);\n })\n .finally(() => setEditing(false));\n }}\n >\n {(props) => (\n <Card>\n <Card.Header className='d-flex justify-content-between align-items-center'>\n <h3>Details</h3>\n <div>\n <Button\n variant='link'\n className='text-success'\n type='button'\n onClick={props.submitForm}\n >\n <FontAwesomeIcon icon={faCheck} />\n </Button>\n <Button\n variant='link'\n className='text-danger'\n type='button'\n onClick={() => setEditing(false)}\n >\n <FontAwesomeIcon icon={faTimes} />\n </Button>\n </div>\n </Card.Header>\n <Card.Body>\n <Form onSubmit={props.handleSubmit}>\n <Form.Group controlId='name'>\n <Form.Label>Name</Form.Label>\n <Form.Control\n type='text'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n value={props.values.name}\n placeholder='Name'\n isInvalid={props.errors.name}\n />\n <Form.Control.Feedback type='invalid'>\n {props.errors.name}\n </Form.Control.Feedback>\n </Form.Group>\n <Form.Group controlId='email'>\n <Form.Label>Email</Form.Label>\n <Form.Control\n type='text'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n value={props.values.email}\n placeholder='Email'\n isInvalid={props.errors.email}\n />\n <Form.Control.Feedback type='invalid'>\n {props.errors.email}\n </Form.Control.Feedback>\n </Form.Group>\n <Form.Group controlId='phone_number'>\n <Form.Label>Phone Number</Form.Label>\n <Form.Control\n type='text'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n value={props.values.phone_number}\n placeholder='Phone Number'\n isInvalid={props.errors.phone_number}\n />\n <Form.Control.Feedback type='invalid'>\n {props.errors.phone_number}\n </Form.Control.Feedback>\n </Form.Group>\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </Form>\n </Card.Body>\n </Card>\n )}\n </Formik>\n ) : (\n <>\n <div className='mb-2'>\n <Button variant='outline-secondary' onClick={props.close}>\n Back\n </Button>\n </div>\n\n <Card>\n <Card.Header className='d-flex justify-content-between align-items-center'>\n <h3>Details</h3>\n <Button\n variant='link'\n type='button'\n onClick={() => setEditing(true)}\n >\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n </Card.Header>\n <Card.Body>\n <Fragment>\n <Row>\n <Col>Name</Col>\n <Col>{props.propertyKeyContact.name}</Col>\n </Row>\n <Row>\n <Col>Email</Col>\n <Col>{props.propertyKeyContact.email}</Col>\n </Row>\n <Row>\n <Col>Phone Number</Col>\n <Col>{props.propertyKeyContact.phone_number}</Col>\n </Row>\n </Fragment>\n </Card.Body>\n </Card>\n </>\n )}\n </Col>\n </Row>\n );\n}\n\nPropertyKeyContact.propTypes = {\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n selectedDatabase: PropTypes.string.isRequired,\n propertyKeyContact: PropTypes.object.isRequired,\n users: PropTypes.array.isRequired,\n update: PropTypes.func.isRequired,\n close: PropTypes.func.isRequired\n};\n\nexport default PropertyKeyContact;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Spinner } from 'react-bootstrap';\nimport PropertyKeyContact from './PropertyKeyContact';\n\nfunction PropertyKeyContacts(props) {\n // Data\n const [loadingUsers, setLoadingUsers] = useState(true);\n const [users, setUsers] = useState([]);\n const [loadingPropertyKeyContacts, setLoadingPropertyKeyContacts] = useState(\n false\n );\n const [propertyKeyContacts, setPropertyKeyContacts] = useState([]);\n\n /**\n * Load all property key contacts and users when the bearer token prop is updated.\n */\n useEffect(() => {\n // Load users\n setLoadingUsers(true);\n fetch(`${process.env.REACT_APP_AUTH_API_URL}api/users`, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n service: 'fruition'\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setUsers(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setUsers([]);\n })\n .finally(() => {\n setLoadingUsers(false);\n });\n\n // Load property key contacts\n setLoadingPropertyKeyContacts(true);\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-key-contacts`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + props.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setPropertyKeyContacts(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setPropertyKeyContacts([]);\n })\n .finally(() => {\n setLoadingPropertyKeyContacts(false);\n });\n }, [props.bearerToken]);\n\n const updatePropertyKeyContact = (propertyKeyContact) => {\n const index = propertyKeyContacts.findIndex(\n (p) => p.id === propertyKeyContact.id\n );\n if (index > -1) {\n const newPropertyKeyContacts = [...propertyKeyContacts];\n newPropertyKeyContacts[index] = propertyKeyContact;\n setPropertyKeyContacts(newPropertyKeyContacts);\n }\n props.updatePropertyKeyContact(propertyKeyContact);\n };\n\n // Check if anything is loading\n if (loadingUsers || loadingPropertyKeyContacts) {\n return <Spinner animation='border' variant='primary' />;\n } else {\n const selectedPropertyKeyContact =\n propertyKeyContacts[\n propertyKeyContacts.findIndex(\n (element) => element.id === props.selectedPropertyKeyContactId\n )\n ];\n\n // Check if a valid property has been selected\n if (selectedPropertyKeyContact) {\n return (\n <PropertyKeyContact\n propertyKeyContact={selectedPropertyKeyContact}\n users={users}\n update={updatePropertyKeyContact}\n close={() => props.changeSelectedPropertyKeyContact(null)}\n {...props}\n />\n );\n } else {\n return null;\n }\n }\n}\n\nPropertyKeyContacts.propTypes = {\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n selectedDatabase: PropTypes.string.isRequired,\n selectedPropertyKeyContactId: PropTypes.number.isRequired,\n changeSelectedPropertyKeyContact: PropTypes.func.isRequired\n};\n\nexport default PropertyKeyContacts;\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = \"InvalidCharacterError\";\n\nfunction polyfill(input) {\n var str = String(input).replace(/=+$/, \"\");\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\n \"'atob' failed: The string to be decoded is not correctly encoded.\"\n );\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = \"\";\n // get next character\n (buffer = str.charAt(idx++));\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ?\n (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6)))) :\n 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\nexport default (typeof window !== \"undefined\" &&\n window.atob &&\n window.atob.bind(window)) ||\npolyfill;","\"use strict\";\n\nimport base64_url_decode from \"./base64_url_decode\";\n\nexport function InvalidTokenError(message) {\n this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\n\nexport default function(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified\");\n }\n\n options = options || {};\n var pos = options.header === true ? 0 : 1;\n try {\n return JSON.parse(base64_url_decode(token.split(\".\")[pos]));\n } catch (e) {\n throw new InvalidTokenError(\"Invalid token specified: \" + e.message);\n }\n}","import atob from \"./atob\";\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(\n atob(str).replace(/(.)/g, function(m, p) {\n var code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n })\n );\n}\n\nexport default function(str) {\n var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw \"Illegal base64url string!\";\n }\n\n try {\n return b64DecodeUnicode(output);\n } catch (err) {\n return atob(output);\n }\n}","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { isValidElement } from 'react';\n\nexport const isNum = (v: any): v is Number =>\n typeof v === 'number' && !isNaN(v);\n\nexport const isStr = (v: any): v is String => typeof v === 'string';\n\nexport const isFn = (v: any): v is Function => typeof v === 'function';\n\nexport const parseClassName = (v: any) => (isStr(v) || isFn(v) ? v : null);\n\nexport const getAutoCloseDelay = (\n toastAutoClose?: false | number,\n containerAutoClose?: false | number\n) =>\n toastAutoClose === false || (isNum(toastAutoClose) && toastAutoClose > 0)\n ? toastAutoClose\n : containerAutoClose;\n\nexport const canBeRendered = <T>(content: T): boolean =>\n isValidElement(content) || isStr(content) || isFn(content) || isNum(content);\n","import { Default } from './constant';\n\n/**\n * Used to collapse toast after exit animation\n */\nexport function collapseToast(\n node: HTMLElement,\n done: () => void,\n duration = Default.COLLAPSE_DURATION\n) {\n const { scrollHeight, style } = node;\n\n requestAnimationFrame(() => {\n style.minHeight = 'initial';\n style.height = scrollHeight + 'px';\n style.transition = `all ${duration}ms`;\n\n requestAnimationFrame(() => {\n style.height = '0';\n style.padding = '0';\n style.margin = '0';\n setTimeout(done, duration as number);\n });\n });\n}\n","import React, { useEffect, useLayoutEffect, useRef } from 'react';\nimport { collapseToast } from './collapseToast';\nimport { Default, SyntheticEvent } from './constant';\n\nimport { ToastTransitionProps } from '../types';\n\nexport interface CSSTransitionProps {\n /**\n * Css class to apply when toast enter\n */\n enter: string;\n\n /**\n * Css class to apply when toast leave\n */\n exit: string;\n\n /**\n * Append current toast position to the classname.\n * If multiple classes are provided, only the last one will get the position\n * For instance `myclass--top-center`...\n * `Default: false`\n */\n appendPosition?: boolean;\n\n /**\n * Collapse toast smoothly when exit animation end\n * `Default: true`\n */\n collapse?: boolean;\n\n /**\n * Collapse transition duration\n * `Default: 300`\n */\n collapseDuration?: number;\n}\n\nconst enum AnimationStep {\n Enter,\n Exit\n}\n\n/**\n * Css animation that just work.\n * You could use animate.css for instance\n *\n *\n * ```\n * cssTransition({\n * enter: \"animate__animated animate__bounceIn\",\n * exit: \"animate__animated animate__bounceOut\"\n * })\n * ```\n *\n */\nexport function cssTransition({\n enter,\n exit,\n appendPosition = false,\n collapse = true,\n collapseDuration = Default.COLLAPSE_DURATION\n}: CSSTransitionProps) {\n return function ToastTransition({\n children,\n position,\n preventExitTransition,\n done,\n nodeRef,\n isIn\n }: ToastTransitionProps) {\n const enterClassName = appendPosition ? `${enter}--${position}` : enter;\n const exitClassName = appendPosition ? `${exit}--${position}` : exit;\n const animationStep = useRef(AnimationStep.Enter);\n\n useLayoutEffect(() => {\n const node = nodeRef.current!;\n const classToToken = enterClassName.split(' ');\n\n const onEntered = (e: AnimationEvent) => {\n if (e.target !== nodeRef.current) return;\n\n node.dispatchEvent(new Event(SyntheticEvent.ENTRANCE_ANIMATION_END));\n node.removeEventListener('animationend', onEntered);\n node.removeEventListener('animationcancel', onEntered);\n if (\n animationStep.current === AnimationStep.Enter &&\n e.type !== 'animationcancel'\n ) {\n node.classList.remove(...classToToken);\n }\n };\n\n const onEnter = () => {\n node.classList.add(...classToToken);\n node.addEventListener('animationend', onEntered);\n node.addEventListener('animationcancel', onEntered);\n };\n\n onEnter();\n }, []);\n\n useEffect(() => {\n const node = nodeRef.current!;\n\n const onExited = () => {\n node.removeEventListener('animationend', onExited);\n collapse ? collapseToast(node, done, collapseDuration) : done();\n };\n\n const onExit = () => {\n animationStep.current = AnimationStep.Exit;\n node.className += ` ${exitClassName}`;\n node.addEventListener('animationend', onExited);\n };\n\n if (!isIn) preventExitTransition ? onExited() : onExit();\n }, [isIn]);\n\n return <>{children}</>;\n };\n}\n","import { Toast, ToastItem, ToastItemStatus } from '../types';\n\nexport function toToastItem(toast: Toast, status: ToastItemStatus): ToastItem {\n return {\n content: toast.content,\n containerId: toast.props.containerId,\n id: toast.props.toastId,\n theme: toast.props.theme,\n type: toast.props.type,\n data: toast.props.data || {},\n isLoading: toast.props.isLoading,\n icon: toast.props.icon,\n status\n };\n}\n","import {\n Id,\n ToastContent,\n ClearWaitingQueueParams,\n NotValidatedToastProps,\n ToastItem\n} from '../types';\nimport { ContainerInstance } from '../hooks';\n\nexport const enum Event {\n Show,\n Clear,\n DidMount,\n WillUnmount,\n Change,\n ClearWaitingQueue\n}\n\ntype OnShowCallback = (\n content: ToastContent,\n options: NotValidatedToastProps\n) => void;\ntype OnClearCallback = (id?: Id) => void;\ntype OnClearWaitingQueue = (params: ClearWaitingQueueParams) => void;\ntype OnDidMountCallback = (containerInstance: ContainerInstance) => void;\ntype OnWillUnmountCallback = OnDidMountCallback;\n\nexport type OnChangeCallback = (toast: ToastItem) => void;\n\ntype Callback =\n | OnShowCallback\n | OnClearCallback\n | OnClearWaitingQueue\n | OnDidMountCallback\n | OnWillUnmountCallback\n | OnChangeCallback;\ntype TimeoutId = ReturnType<typeof setTimeout>;\n\nexport interface EventManager {\n list: Map<Event, Callback[]>;\n emitQueue: Map<Event, TimeoutId[]>;\n on(event: Event.Show, callback: OnShowCallback): EventManager;\n on(event: Event.Clear, callback: OnClearCallback): EventManager;\n on(\n event: Event.ClearWaitingQueue,\n callback: OnClearWaitingQueue\n ): EventManager;\n on(event: Event.DidMount, callback: OnDidMountCallback): EventManager;\n on(event: Event.WillUnmount, callback: OnWillUnmountCallback): EventManager;\n on(event: Event.Change, callback: OnChangeCallback): EventManager;\n off(event: Event, callback?: Callback): EventManager;\n cancelEmit(event: Event): EventManager;\n emit<TData>(\n event: Event.Show,\n content: React.ReactNode | ToastContent<TData>,\n options: NotValidatedToastProps\n ): void;\n emit(event: Event.Clear, id?: string | number): void;\n emit(event: Event.ClearWaitingQueue, params: ClearWaitingQueueParams): void;\n emit(event: Event.DidMount, containerInstance: ContainerInstance): void;\n emit(event: Event.WillUnmount, containerInstance: ContainerInstance): void;\n emit(event: Event.Change, data: ToastItem): void;\n}\n\nexport const eventManager: EventManager = {\n list: new Map(),\n emitQueue: new Map(),\n\n on(event: Event, callback: Callback) {\n this.list.has(event) || this.list.set(event, []);\n this.list.get(event)!.push(callback);\n return this;\n },\n\n off(event, callback) {\n if (callback) {\n const cb = this.list.get(event)!.filter(cb => cb !== callback);\n this.list.set(event, cb);\n return this;\n }\n this.list.delete(event);\n return this;\n },\n\n cancelEmit(event) {\n const timers = this.emitQueue.get(event);\n if (timers) {\n timers.forEach(clearTimeout);\n this.emitQueue.delete(event);\n }\n\n return this;\n },\n\n /**\n * Enqueue the event at the end of the call stack\n * Doing so let the user call toast as follow:\n * toast('1')\n * toast('2')\n * toast('3')\n * Without setTimemout the code above will not work\n */\n emit(event: Event, ...args: any[]) {\n this.list.has(event) &&\n this.list.get(event)!.forEach((callback: Callback) => {\n const timer: TimeoutId = setTimeout(() => {\n // @ts-ignore\n callback(...args);\n }, 0);\n\n this.emitQueue.has(event) || this.emitQueue.set(event, []);\n this.emitQueue.get(event)!.push(timer);\n });\n }\n};\n","import React, { cloneElement, isValidElement } from 'react';\n\nimport { Theme, ToastProps, TypeOptions } from '../types';\nimport { Default, isFn, isNum, isStr } from '../utils';\n\n/**\n * Used when providing custom icon\n */\nexport interface IconProps {\n theme: Theme;\n type: TypeOptions;\n}\n\nexport type BuiltInIconProps = React.SVGProps<SVGSVGElement> & IconProps;\n\nconst Svg: React.FC<BuiltInIconProps> = ({ theme, type, ...rest }) => (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"100%\"\n height=\"100%\"\n fill={\n theme === 'colored'\n ? 'currentColor'\n : `var(--toastify-icon-color-${type})`\n }\n {...rest}\n />\n);\n\nfunction Warning(props: BuiltInIconProps) {\n return (\n <Svg {...props}>\n <path d=\"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z\" />\n </Svg>\n );\n}\n\nfunction Info(props: BuiltInIconProps) {\n return (\n <Svg {...props}>\n <path d=\"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z\" />\n </Svg>\n );\n}\n\nfunction Success(props: BuiltInIconProps) {\n return (\n <Svg {...props}>\n <path d=\"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z\" />\n </Svg>\n );\n}\n\nfunction Error(props: BuiltInIconProps) {\n return (\n <Svg {...props}>\n <path d=\"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z\" />\n </Svg>\n );\n}\n\nfunction Spinner() {\n return <div className={`${Default.CSS_NAMESPACE}__spinner`} />;\n}\n\nexport const Icons = {\n info: Info,\n warning: Warning,\n success: Success,\n error: Error,\n spinner: Spinner\n};\n\nconst maybeIcon = (type: string): type is keyof typeof Icons => type in Icons;\n\nexport function getIcon({ theme, type, isLoading, icon }: ToastProps) {\n let Icon: React.ReactNode = null;\n const iconProps = { theme, type };\n\n if (icon === false) {\n // hide\n } else if (isFn(icon)) {\n Icon = icon(iconProps);\n } else if (isValidElement(icon)) {\n Icon = cloneElement(icon, iconProps);\n } else if (isStr(icon) || isNum(icon)) {\n Icon = icon;\n } else if (isLoading) {\n Icon = Icons.spinner();\n } else if (maybeIcon(type)) {\n Icon = Icons[type](iconProps);\n }\n\n return Icon;\n}\n","import {\n useState,\n useRef,\n useEffect,\n isValidElement,\n DOMAttributes\n} from 'react';\n\nimport { isFn, Default, Direction, SyntheticEvent } from '../utils';\nimport { ToastProps } from '../types';\n\ninterface Draggable {\n start: number;\n x: number;\n y: number;\n delta: number;\n removalDistance: number;\n canCloseOnClick: boolean;\n canDrag: boolean;\n boundingRect: DOMRect | null;\n didMove: boolean;\n}\n\ntype DragEvent = MouseEvent & TouchEvent;\n\nfunction getX(e: DragEvent) {\n return e.targetTouches && e.targetTouches.length >= 1\n ? e.targetTouches[0].clientX\n : e.clientX;\n}\n\nfunction getY(e: DragEvent) {\n return e.targetTouches && e.targetTouches.length >= 1\n ? e.targetTouches[0].clientY\n : e.clientY;\n}\n\nexport function useToast(props: ToastProps) {\n const [isRunning, setIsRunning] = useState(false);\n const [preventExitTransition, setPreventExitTransition] = useState(false);\n const toastRef = useRef<HTMLDivElement>(null);\n const drag = useRef<Draggable>({\n start: 0,\n x: 0,\n y: 0,\n delta: 0,\n removalDistance: 0,\n canCloseOnClick: true,\n canDrag: false,\n boundingRect: null,\n didMove: false\n }).current;\n const syncProps = useRef(props);\n const { autoClose, pauseOnHover, closeToast, onClick, closeOnClick } = props;\n\n useEffect(() => {\n syncProps.current = props;\n });\n\n useEffect(() => {\n if (toastRef.current)\n toastRef.current.addEventListener(\n SyntheticEvent.ENTRANCE_ANIMATION_END,\n playToast,\n { once: true }\n );\n\n if (isFn(props.onOpen))\n props.onOpen(isValidElement(props.children) && props.children.props);\n\n return () => {\n const props = syncProps.current;\n if (isFn(props.onClose))\n props.onClose(isValidElement(props.children) && props.children.props);\n };\n }, []);\n\n useEffect(() => {\n props.pauseOnFocusLoss && bindFocusEvents();\n return () => {\n props.pauseOnFocusLoss && unbindFocusEvents();\n };\n }, [props.pauseOnFocusLoss]);\n\n function onDragStart(\n e: React.MouseEvent<HTMLElement, MouseEvent> | React.TouchEvent<HTMLElement>\n ) {\n if (props.draggable) {\n // required for ios safari to prevent default swipe behavior\n if (e.nativeEvent.type === 'touchstart') e.nativeEvent.preventDefault();\n\n bindDragEvents();\n const toast = toastRef.current!;\n drag.canCloseOnClick = true;\n drag.canDrag = true;\n drag.boundingRect = toast.getBoundingClientRect();\n toast.style.transition = '';\n drag.x = getX(e.nativeEvent as DragEvent);\n drag.y = getY(e.nativeEvent as DragEvent);\n\n if (props.draggableDirection === Direction.X) {\n drag.start = drag.x;\n drag.removalDistance =\n toast.offsetWidth * (props.draggablePercent / 100);\n } else {\n drag.start = drag.y;\n drag.removalDistance =\n toast.offsetHeight *\n (props.draggablePercent === Default.DRAGGABLE_PERCENT\n ? props.draggablePercent * 1.5\n : props.draggablePercent / 100);\n }\n }\n }\n\n function onDragTransitionEnd(\n e: React.MouseEvent<HTMLElement, MouseEvent> | React.TouchEvent<HTMLElement>\n ) {\n if (drag.boundingRect) {\n const { top, bottom, left, right } = drag.boundingRect;\n\n if (\n e.nativeEvent.type !== 'touchend' &&\n props.pauseOnHover &&\n drag.x >= left &&\n drag.x <= right &&\n drag.y >= top &&\n drag.y <= bottom\n ) {\n pauseToast();\n } else {\n playToast();\n }\n }\n }\n\n function playToast() {\n setIsRunning(true);\n }\n\n function pauseToast() {\n setIsRunning(false);\n }\n\n function bindFocusEvents() {\n if (!document.hasFocus()) pauseToast();\n\n window.addEventListener('focus', playToast);\n window.addEventListener('blur', pauseToast);\n }\n\n function unbindFocusEvents() {\n window.removeEventListener('focus', playToast);\n window.removeEventListener('blur', pauseToast);\n }\n\n function bindDragEvents() {\n drag.didMove = false;\n document.addEventListener('mousemove', onDragMove);\n document.addEventListener('mouseup', onDragEnd);\n\n document.addEventListener('touchmove', onDragMove);\n document.addEventListener('touchend', onDragEnd);\n }\n\n function unbindDragEvents() {\n document.removeEventListener('mousemove', onDragMove);\n document.removeEventListener('mouseup', onDragEnd);\n\n document.removeEventListener('touchmove', onDragMove);\n document.removeEventListener('touchend', onDragEnd);\n }\n\n function onDragMove(e: MouseEvent | TouchEvent) {\n const toast = toastRef.current!;\n if (drag.canDrag && toast) {\n drag.didMove = true;\n if (isRunning) pauseToast();\n drag.x = getX(e as DragEvent);\n drag.y = getY(e as DragEvent);\n if (props.draggableDirection === Direction.X) {\n drag.delta = drag.x - drag.start;\n } else {\n drag.delta = drag.y - drag.start;\n }\n\n // prevent false positif during a toast click\n if (drag.start !== drag.x) drag.canCloseOnClick = false;\n toast.style.transform = `translate${props.draggableDirection}(${drag.delta}px)`;\n toast.style.opacity = `${\n 1 - Math.abs(drag.delta / drag.removalDistance)\n }`;\n }\n }\n\n function onDragEnd() {\n unbindDragEvents();\n const toast = toastRef.current!;\n if (drag.canDrag && drag.didMove && toast) {\n drag.canDrag = false;\n if (Math.abs(drag.delta) > drag.removalDistance) {\n setPreventExitTransition(true);\n props.closeToast();\n return;\n }\n toast.style.transition = 'transform 0.2s, opacity 0.2s';\n toast.style.transform = `translate${props.draggableDirection}(0)`;\n toast.style.opacity = '1';\n }\n }\n\n const eventHandlers: DOMAttributes<HTMLElement> = {\n onMouseDown: onDragStart,\n onTouchStart: onDragStart,\n onMouseUp: onDragTransitionEnd,\n onTouchEnd: onDragTransitionEnd\n };\n\n if (autoClose && pauseOnHover) {\n eventHandlers.onMouseEnter = pauseToast;\n eventHandlers.onMouseLeave = playToast;\n }\n\n // prevent toast from closing when user drags the toast\n if (closeOnClick) {\n eventHandlers.onClick = (e: React.MouseEvent) => {\n onClick && onClick(e);\n drag.canCloseOnClick && closeToast();\n };\n }\n\n return {\n playToast,\n pauseToast,\n isRunning,\n preventExitTransition,\n toastRef,\n eventHandlers\n };\n}\n","import React from 'react';\nimport { Default } from '../utils';\nimport { Theme, TypeOptions } from '../types';\n\nexport interface CloseButtonProps {\n closeToast: (e: React.MouseEvent<HTMLElement>) => void;\n type: TypeOptions;\n ariaLabel?: string;\n theme: Theme;\n}\n\nexport function CloseButton({\n closeToast,\n theme,\n ariaLabel = 'close'\n}: CloseButtonProps) {\n return (\n <button\n className={`${Default.CSS_NAMESPACE}__close-button ${Default.CSS_NAMESPACE}__close-button--${theme}`}\n type=\"button\"\n onClick={e => {\n e.stopPropagation();\n closeToast(e);\n }}\n aria-label={ariaLabel}\n >\n <svg aria-hidden=\"true\" viewBox=\"0 0 14 16\">\n <path\n fillRule=\"evenodd\"\n d=\"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z\"\n />\n </svg>\n </button>\n );\n}\n","import React from 'react';\nimport cx from 'clsx';\n\nimport { Default, isFn, Type } from './../utils';\nimport { TypeOptions, ToastClassName, Theme } from '../types';\n\nexport interface ProgressBarProps {\n /**\n * The animation delay which determine when to close the toast\n */\n delay: number;\n\n /**\n * Whether or not the animation is running or paused\n */\n isRunning: boolean;\n\n /**\n * Func to close the current toast\n */\n closeToast: () => void;\n\n /**\n * Optional type : info, success ...\n */\n type?: TypeOptions;\n\n /**\n * The theme that is currently used\n */\n theme: Theme;\n\n /**\n * Hide or not the progress bar\n */\n hide?: boolean;\n\n /**\n * Optionnal className\n */\n className?: ToastClassName;\n\n /**\n * Optionnal inline style\n */\n style?: React.CSSProperties;\n\n /**\n * Tell wether or not controlled progress bar is used\n */\n controlledProgress?: boolean;\n\n /**\n * Controlled progress value\n */\n progress?: number | string;\n\n /**\n * Support rtl content\n */\n rtl?: boolean;\n\n /**\n * Tell if the component is visible on screen or not\n */\n isIn?: boolean;\n}\n\nexport function ProgressBar({\n delay,\n isRunning,\n closeToast,\n type = Type.DEFAULT,\n hide,\n className,\n style: userStyle,\n controlledProgress,\n progress,\n rtl,\n isIn,\n theme\n}: ProgressBarProps) {\n const isHidden = hide || (controlledProgress && progress === 0);\n const style: React.CSSProperties = {\n ...userStyle,\n animationDuration: `${delay}ms`,\n animationPlayState: isRunning ? 'running' : 'paused',\n opacity: isHidden ? 0 : 1\n };\n\n if (controlledProgress) style.transform = `scaleX(${progress})`;\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__progress-bar`,\n controlledProgress\n ? `${Default.CSS_NAMESPACE}__progress-bar--controlled`\n : `${Default.CSS_NAMESPACE}__progress-bar--animated`,\n `${Default.CSS_NAMESPACE}__progress-bar-theme--${theme}`,\n `${Default.CSS_NAMESPACE}__progress-bar--${type}`,\n {\n [`${Default.CSS_NAMESPACE}__progress-bar--rtl`]: rtl\n }\n );\n const classNames = isFn(className)\n ? className({\n rtl,\n type,\n defaultClassName\n })\n : cx(defaultClassName, className);\n\n // 🧐 controlledProgress is derived from progress\n // so if controlledProgress is set\n // it means that this is also the case for progress\n const animationEvent = {\n [controlledProgress && progress! >= 1\n ? 'onTransitionEnd'\n : 'onAnimationEnd']:\n controlledProgress && progress! < 1\n ? null\n : () => {\n isIn && closeToast();\n }\n };\n\n // TODO: add aria-valuenow, aria-valuemax, aria-valuemin\n\n return (\n <div\n role=\"progressbar\"\n aria-hidden={isHidden ? 'true' : 'false'}\n aria-label=\"notification timer\"\n className={classNames}\n style={style}\n {...animationEvent}\n />\n );\n}\n","import React, { cloneElement, isValidElement, ReactNode } from 'react';\nimport cx from 'clsx';\n\nimport { ProgressBar } from './ProgressBar';\nimport { CloseButton } from './CloseButton';\nimport { ToastProps } from '../types';\nimport { Default, isFn } from '../utils';\nimport { useToast } from '../hooks/useToast';\n\nexport const Toast: React.FC<ToastProps> = props => {\n const { isRunning, preventExitTransition, toastRef, eventHandlers } =\n useToast(props);\n const {\n closeButton,\n children,\n autoClose,\n onClick,\n type,\n hideProgressBar,\n closeToast,\n transition: Transition,\n position,\n className,\n style,\n bodyClassName,\n bodyStyle,\n progressClassName,\n progressStyle,\n updateId,\n role,\n progress,\n rtl,\n toastId,\n deleteToast,\n isIn,\n isLoading,\n iconOut,\n closeOnClick,\n theme\n } = props;\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__toast`,\n `${Default.CSS_NAMESPACE}__toast-theme--${theme}`,\n `${Default.CSS_NAMESPACE}__toast--${type}`,\n {\n [`${Default.CSS_NAMESPACE}__toast--rtl`]: rtl\n },\n {\n [`${Default.CSS_NAMESPACE}__toast--close-on-click`]: closeOnClick\n }\n );\n const cssClasses = isFn(className)\n ? className({\n rtl,\n position,\n type,\n defaultClassName\n })\n : cx(defaultClassName, className);\n const isProgressControlled = !!progress || !autoClose;\n\n const closeButtonProps = { closeToast, type, theme };\n let Close: React.ReactNode = null;\n\n if (closeButton === false) {\n // hide\n } else if (isFn(closeButton)) {\n Close = closeButton(closeButtonProps);\n } else if (isValidElement(closeButton)) {\n Close = cloneElement(closeButton, closeButtonProps);\n } else {\n Close = CloseButton(closeButtonProps);\n }\n\n return (\n <Transition\n isIn={isIn}\n done={deleteToast}\n position={position}\n preventExitTransition={preventExitTransition}\n nodeRef={toastRef}\n >\n <div\n id={toastId as string}\n onClick={onClick}\n className={cssClasses}\n {...eventHandlers}\n style={style}\n ref={toastRef}\n >\n <div\n {...(isIn && { role: role })}\n className={\n isFn(bodyClassName)\n ? bodyClassName({ type })\n : cx(`${Default.CSS_NAMESPACE}__toast-body`, bodyClassName)\n }\n style={bodyStyle}\n >\n {iconOut != null && (\n <div\n className={cx(`${Default.CSS_NAMESPACE}__toast-icon`, {\n [`${Default.CSS_NAMESPACE}--animate-icon ${Default.CSS_NAMESPACE}__zoom-enter`]:\n !isLoading\n })}\n >\n {iconOut}\n </div>\n )}\n <div>{children as ReactNode}</div>\n </div>\n {Close}\n <ProgressBar\n {...(updateId && !isProgressControlled\n ? { key: `pb-${updateId}` }\n : {})}\n rtl={rtl}\n theme={theme}\n delay={autoClose as number}\n isRunning={isRunning}\n isIn={isIn}\n closeToast={closeToast}\n hide={hideProgressBar}\n type={type}\n style={progressStyle}\n className={progressClassName}\n controlledProgress={isProgressControlled}\n progress={progress || 0}\n />\n </div>\n </Transition>\n );\n};\n","import { Default, cssTransition } from '../utils';\n\nconst getConfig = (animationName: string, appendPosition = false) => ({\n enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__${animationName}-enter`,\n exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__${animationName}-exit`,\n appendPosition\n});\n\nconst Bounce = cssTransition(getConfig('bounce', true));\n\nconst Slide = cssTransition(getConfig('slide', true));\n\nconst Zoom = cssTransition(getConfig('zoom'));\n\nconst Flip = cssTransition(getConfig('flip'));\n\nexport { Bounce, Slide, Zoom, Flip };\n","// https://github.com/yannickcr/eslint-plugin-react/issues/3140\n/* eslint react/prop-types: \"off\" */\nimport React, { forwardRef, StyleHTMLAttributes, useEffect } from 'react';\nimport cx from 'clsx';\n\nimport { Toast } from './Toast';\nimport { CloseButton } from './CloseButton';\nimport { Bounce } from './Transitions';\nimport { Direction, Default, parseClassName, isFn } from '../utils';\nimport { useToastContainer } from '../hooks/useToastContainer';\nimport { ToastContainerProps, ToastPosition } from '../types';\n\nexport const ToastContainer = forwardRef<HTMLDivElement, ToastContainerProps>(\n (props, ref) => {\n const { getToastToRender, containerRef, isToastActive } =\n useToastContainer(props);\n const { className, style, rtl, containerId } = props;\n\n function getClassName(position: ToastPosition) {\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__toast-container`,\n `${Default.CSS_NAMESPACE}__toast-container--${position}`,\n { [`${Default.CSS_NAMESPACE}__toast-container--rtl`]: rtl }\n );\n return isFn(className)\n ? className({\n position,\n rtl,\n defaultClassName\n })\n : cx(defaultClassName, parseClassName(className));\n }\n\n useEffect(() => {\n if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement>).current =\n containerRef.current!;\n }\n }, []);\n\n return (\n <div\n ref={containerRef}\n className={Default.CSS_NAMESPACE as string}\n id={containerId as string}\n >\n {getToastToRender((position, toastList) => {\n const containerStyle: React.CSSProperties = !toastList.length\n ? { ...style, pointerEvents: 'none' }\n : { ...style };\n\n return (\n <div\n className={getClassName(position)}\n style={containerStyle}\n key={`container-${position}`}\n >\n {toastList.map(({ content, props: toastProps }, i) => {\n return (\n <Toast\n {...toastProps}\n isIn={isToastActive(toastProps.toastId)}\n style={\n {\n ...toastProps.style,\n '--nth': i + 1,\n '--len': toastList.length\n } as StyleHTMLAttributes<HTMLDivElement>\n }\n key={`toast-${toastProps.key}`}\n >\n {content}\n </Toast>\n );\n })}\n </div>\n );\n })}\n </div>\n );\n }\n);\n\nToastContainer.displayName = 'ToastContainer';\n\nToastContainer.defaultProps = {\n position: 'top-right',\n transition: Bounce,\n autoClose: 5000,\n closeButton: CloseButton,\n pauseOnHover: true,\n pauseOnFocusLoss: true,\n closeOnClick: true,\n draggable: true,\n draggablePercent: Default.DRAGGABLE_PERCENT as number,\n draggableDirection: Direction.X,\n role: 'alert',\n theme: 'light'\n};\n","import {\n useEffect,\n useRef,\n useReducer,\n cloneElement,\n isValidElement,\n useState,\n ReactElement\n} from 'react';\nimport {\n parseClassName,\n canBeRendered,\n isFn,\n isNum,\n isStr,\n getAutoCloseDelay,\n toToastItem\n} from '../utils';\nimport { eventManager, Event } from '../core/eventManager';\n\nimport {\n Id,\n ToastContainerProps,\n ToastProps,\n ToastContent,\n Toast,\n ToastPosition,\n ClearWaitingQueueParams,\n NotValidatedToastProps\n} from '../types';\n\nimport { getIcon } from '../components/Icons';\n\ninterface QueuedToast {\n toastContent: ToastContent;\n toastProps: ToastProps;\n staleId?: Id;\n}\n\nexport interface ContainerInstance {\n toastKey: number;\n displayedToast: number;\n props: ToastContainerProps;\n containerId?: Id | null;\n isToastActive: (toastId: Id) => boolean;\n getToast: (id: Id) => Toast | null | undefined;\n queue: QueuedToast[];\n count: number;\n}\n\nexport function useToastContainer(props: ToastContainerProps) {\n const [, forceUpdate] = useReducer(x => x + 1, 0);\n const [toastIds, setToastIds] = useState<Id[]>([]);\n const containerRef = useRef(null);\n const toastToRender = useRef(new Map<Id, Toast>()).current;\n const isToastActive = (id: Id) => toastIds.indexOf(id) !== -1;\n const instance = useRef<ContainerInstance>({\n toastKey: 1,\n displayedToast: 0,\n count: 0,\n queue: [],\n props,\n containerId: null,\n isToastActive,\n getToast: id => toastToRender.get(id)\n }).current;\n\n useEffect(() => {\n instance.containerId = props.containerId;\n eventManager\n .cancelEmit(Event.WillUnmount)\n .on(Event.Show, buildToast)\n .on(Event.Clear, toastId => containerRef.current && removeToast(toastId))\n .on(Event.ClearWaitingQueue, clearWaitingQueue)\n .emit(Event.DidMount, instance);\n\n return () => {\n toastToRender.clear();\n eventManager.emit(Event.WillUnmount, instance);\n };\n }, []);\n\n useEffect(() => {\n instance.props = props;\n instance.isToastActive = isToastActive;\n instance.displayedToast = toastIds.length;\n });\n\n function clearWaitingQueue({ containerId }: ClearWaitingQueueParams) {\n const { limit } = instance.props;\n if (limit && (!containerId || instance.containerId === containerId)) {\n instance.count -= instance.queue.length;\n instance.queue = [];\n }\n }\n\n function removeToast(toastId?: Id) {\n setToastIds(state =>\n toastId == null ? [] : state.filter(id => id !== toastId)\n );\n }\n\n function dequeueToast() {\n const { toastContent, toastProps, staleId } =\n instance.queue.shift() as QueuedToast;\n appendToast(toastContent, toastProps, staleId);\n }\n\n /**\n * check if a container is attached to the dom\n * check for multi-container, build only if associated\n * check for duplicate toastId if no update\n */\n function isNotValid(options: NotValidatedToastProps) {\n return (\n !containerRef.current ||\n (instance.props.enableMultiContainer &&\n options.containerId !== instance.props.containerId) ||\n (toastToRender.has(options.toastId) && options.updateId == null)\n );\n }\n\n // this function and all the function called inside needs to rely on refs\n function buildToast(\n content: ToastContent,\n { delay, staleId, ...options }: NotValidatedToastProps\n ) {\n if (!canBeRendered(content) || isNotValid(options)) return;\n\n const { toastId, updateId, data } = options;\n const { props } = instance;\n const closeToast = () => removeToast(toastId);\n const isNotAnUpdate = updateId == null;\n\n if (isNotAnUpdate) instance.count++;\n\n const toastProps = {\n ...props,\n style: props.toastStyle,\n key: instance.toastKey++,\n ...Object.fromEntries(\n Object.entries(options).filter(([_, v]) => v != null)\n ),\n toastId,\n updateId,\n data,\n closeToast,\n isIn: false,\n className: parseClassName(options.className || props.toastClassName),\n bodyClassName: parseClassName(\n options.bodyClassName || props.bodyClassName\n ),\n progressClassName: parseClassName(\n options.progressClassName || props.progressClassName\n ),\n autoClose: options.isLoading\n ? false\n : getAutoCloseDelay(options.autoClose, props.autoClose),\n deleteToast() {\n const removed = toToastItem(toastToRender.get(toastId)!, 'removed');\n toastToRender.delete(toastId);\n\n eventManager.emit(Event.Change, removed);\n\n const queueLen = instance.queue.length;\n instance.count =\n toastId == null\n ? instance.count - instance.displayedToast\n : instance.count - 1;\n\n if (instance.count < 0) instance.count = 0;\n\n if (queueLen > 0) {\n const freeSlot = toastId == null ? instance.props.limit! : 1;\n\n if (queueLen === 1 || freeSlot === 1) {\n instance.displayedToast++;\n dequeueToast();\n } else {\n const toDequeue = freeSlot > queueLen ? queueLen : freeSlot;\n instance.displayedToast = toDequeue;\n\n for (let i = 0; i < toDequeue; i++) dequeueToast();\n }\n } else {\n forceUpdate();\n }\n }\n } as ToastProps;\n\n toastProps.iconOut = getIcon(toastProps);\n\n if (isFn(options.onOpen)) toastProps.onOpen = options.onOpen;\n if (isFn(options.onClose)) toastProps.onClose = options.onClose;\n\n toastProps.closeButton = props.closeButton;\n\n if (options.closeButton === false || canBeRendered(options.closeButton)) {\n toastProps.closeButton = options.closeButton;\n } else if (options.closeButton === true) {\n toastProps.closeButton = canBeRendered(props.closeButton)\n ? props.closeButton\n : true;\n }\n\n let toastContent = content;\n\n if (isValidElement(content) && !isStr(content.type)) {\n toastContent = cloneElement(content as ReactElement, {\n closeToast,\n toastProps,\n data\n });\n } else if (isFn(content)) {\n toastContent = content({ closeToast, toastProps, data });\n }\n\n // not handling limit + delay by design. Waiting for user feedback first\n if (\n props.limit &&\n props.limit > 0 &&\n instance.count > props.limit &&\n isNotAnUpdate\n ) {\n instance.queue.push({ toastContent, toastProps, staleId });\n } else if (isNum(delay)) {\n setTimeout(() => {\n appendToast(toastContent, toastProps, staleId);\n }, delay);\n } else {\n appendToast(toastContent, toastProps, staleId);\n }\n }\n\n function appendToast(\n content: ToastContent,\n toastProps: ToastProps,\n staleId?: Id\n ) {\n const { toastId } = toastProps;\n\n if (staleId) toastToRender.delete(staleId);\n\n const toast = {\n content,\n props: toastProps\n };\n toastToRender.set(toastId, toast);\n\n setToastIds(state => [...state, toastId].filter(id => id !== staleId));\n eventManager.emit(\n Event.Change,\n toToastItem(toast, toast.props.updateId == null ? 'added' : 'updated')\n );\n }\n\n function getToastToRender<T>(\n cb: (position: ToastPosition, toastList: Toast[]) => T\n ) {\n const toRender = new Map<ToastPosition, Toast[]>();\n const collection = Array.from(toastToRender.values());\n\n if (props.newestOnTop) collection.reverse();\n\n collection.forEach(toast => {\n const { position } = toast.props;\n toRender.has(position) || toRender.set(position, []);\n toRender.get(position)!.push(toast);\n });\n\n return Array.from(toRender, p => cb(p[0], p[1]));\n }\n\n return {\n getToastToRender,\n containerRef,\n isToastActive\n };\n}\n","import { POSITION, TYPE, isStr, isNum, isFn, Type } from '../utils';\nimport { eventManager, OnChangeCallback, Event } from './eventManager';\nimport {\n ToastContent,\n ToastOptions,\n ToastProps,\n Id,\n UpdateOptions,\n ClearWaitingQueueParams,\n NotValidatedToastProps,\n TypeOptions\n} from '../types';\nimport { ContainerInstance } from '../hooks';\n\ninterface EnqueuedToast {\n content: ToastContent<any>;\n options: NotValidatedToastProps;\n}\n\nlet containers = new Map<ContainerInstance | Id, ContainerInstance>();\nlet latestInstance: ContainerInstance | Id;\nlet queue: EnqueuedToast[] = [];\nlet TOAST_ID = 1;\n\n/**\n * Get the toast by id, given it's in the DOM, otherwise returns null\n */\nfunction getToast(toastId: Id, { containerId }: ToastOptions) {\n const container = containers.get(containerId || latestInstance);\n return container && container.getToast(toastId);\n}\n\n/**\n * Generate a random toastId\n */\nfunction generateToastId() {\n return `${TOAST_ID++}`;\n}\n\n/**\n * Generate a toastId or use the one provided\n */\nfunction getToastId(options?: ToastOptions) {\n return options && (isStr(options.toastId) || isNum(options.toastId))\n ? options.toastId\n : generateToastId();\n}\n\n/**\n * If the container is not mounted, the toast is enqueued and\n * the container lazy mounted\n */\nfunction dispatchToast<TData>(\n content: ToastContent<TData>,\n options: NotValidatedToastProps\n): Id {\n if (containers.size > 0) {\n eventManager.emit(Event.Show, content, options);\n } else {\n queue.push({ content, options });\n }\n\n return options.toastId;\n}\n\n/**\n * Merge provided options with the defaults settings and generate the toastId\n */\nfunction mergeOptions(type: string, options?: ToastOptions) {\n return {\n ...options,\n type: (options && options.type) || type,\n toastId: getToastId(options)\n } as NotValidatedToastProps;\n}\n\nfunction createToastByType(type: string) {\n return <TData = unknown>(\n content: ToastContent<TData>,\n options?: ToastOptions\n ) => dispatchToast(content, mergeOptions(type, options));\n}\n\nfunction toast<TData = unknown>(\n content: ToastContent<TData>,\n options?: ToastOptions\n) {\n return dispatchToast(content, mergeOptions(Type.DEFAULT, options));\n}\n\ntoast.loading = <TData = unknown>(\n content: ToastContent<TData>,\n options?: ToastOptions\n) =>\n dispatchToast(\n content,\n mergeOptions(Type.DEFAULT, {\n isLoading: true,\n autoClose: false,\n closeOnClick: false,\n closeButton: false,\n draggable: false,\n ...options\n })\n );\n\nexport interface ToastPromiseParams<\n TData = unknown,\n TError = unknown,\n TPending = unknown\n> {\n pending?: string | UpdateOptions<TPending>;\n success?: string | UpdateOptions<TData>;\n error?: string | UpdateOptions<TError>;\n}\n\nfunction handlePromise<TData = unknown, TError = unknown, TPending = unknown>(\n promise: Promise<TData> | (() => Promise<TData>),\n { pending, error, success }: ToastPromiseParams<TData, TError, TPending>,\n options?: ToastOptions\n) {\n let id: Id;\n\n if (pending) {\n id = isStr(pending)\n ? toast.loading(pending, options)\n : toast.loading(pending.render, {\n ...options,\n ...(pending as ToastOptions)\n });\n }\n\n const resetParams = {\n isLoading: null,\n autoClose: null,\n closeOnClick: null,\n closeButton: null,\n draggable: null\n };\n\n const resolver = <T>(\n type: TypeOptions,\n input: string | UpdateOptions<T> | undefined,\n result: T\n ) => {\n // Remove the toast if the input has not been provided. This prevents the toast from hanging\n // in the pending state if a success/error toast has not been provided.\n if (input == null) {\n toast.dismiss(id);\n return;\n }\n\n const baseParams = {\n type,\n ...resetParams,\n ...options,\n data: result\n };\n const params = isStr(input) ? { render: input } : input;\n\n // if the id is set we know that it's an update\n if (id) {\n toast.update(id, {\n ...baseParams,\n ...params\n } as UpdateOptions);\n } else {\n // using toast.promise without loading\n toast(params!.render, {\n ...baseParams,\n ...params\n } as ToastOptions);\n }\n\n return result;\n };\n\n const p = isFn(promise) ? promise() : promise;\n\n //call the resolvers only when needed\n p.then(result => resolver('success', success, result)).catch(err =>\n resolver('error', error, err)\n );\n\n return p;\n}\n\ntoast.promise = handlePromise;\ntoast.success = createToastByType(Type.SUCCESS);\ntoast.info = createToastByType(Type.INFO);\ntoast.error = createToastByType(Type.ERROR);\ntoast.warning = createToastByType(Type.WARNING);\ntoast.warn = toast.warning;\ntoast.dark = (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(\n content,\n mergeOptions(Type.DEFAULT, {\n theme: 'dark',\n ...options\n })\n );\n\n/**\n * Remove toast programmaticaly\n */\ntoast.dismiss = (id?: Id) => {\n if (containers.size > 0) {\n eventManager.emit(Event.Clear, id);\n } else {\n queue = queue.filter(t => id != null && t.options.toastId !== id);\n }\n};\n\n/**\n * Clear waiting queue when limit is used\n */\ntoast.clearWaitingQueue = (params: ClearWaitingQueueParams = {}) =>\n eventManager.emit(Event.ClearWaitingQueue, params);\n\n/**\n * return true if one container is displaying the toast\n */\ntoast.isActive = (id: Id) => {\n let isToastActive = false;\n\n containers.forEach(container => {\n if (container.isToastActive && container.isToastActive(id)) {\n isToastActive = true;\n }\n });\n\n return isToastActive;\n};\n\ntoast.update = <TData = unknown>(\n toastId: Id,\n options: UpdateOptions<TData> = {}\n) => {\n setTimeout(() => {\n const toast = getToast(toastId, options as ToastOptions);\n if (toast) {\n const { props: oldOptions, content: oldContent } = toast;\n\n const nextOptions = {\n delay: 100,\n ...oldOptions,\n ...options,\n toastId: options.toastId || toastId,\n updateId: generateToastId()\n } as ToastProps & UpdateOptions;\n\n if (nextOptions.toastId !== toastId) nextOptions.staleId = toastId;\n\n const content = nextOptions.render || oldContent;\n delete nextOptions.render;\n\n dispatchToast(content, nextOptions);\n }\n }, 0);\n};\n\n/**\n * Used for controlled progress bar.\n */\ntoast.done = (id: Id) => {\n toast.update(id, {\n progress: 1\n });\n};\n\n/**\n * Subscribe to change when a toast is added, removed and updated\n *\n * Usage:\n * ```\n * const unsubscribe = toast.onChange((payload) => {\n * switch (payload.status) {\n * case \"added\":\n * // new toast added\n * break;\n * case \"updated\":\n * // toast updated\n * break;\n * case \"removed\":\n * // toast has been removed\n * break;\n * }\n * })\n * ```\n */\ntoast.onChange = (callback: OnChangeCallback) => {\n eventManager.on(Event.Change, callback);\n return () => {\n eventManager.off(Event.Change, callback);\n };\n};\n\n/**\n * @deprecated\n * Will be removed in the next major release.\n */\ntoast.POSITION = POSITION;\n\n/**\n * @deprecated\n * Will be removed in the next major release.\n */\ntoast.TYPE = TYPE;\n\n/**\n * Wait until the ToastContainer is mounted to dispatch the toast\n * and attach isActive method\n */\neventManager\n .on(Event.DidMount, (containerInstance: ContainerInstance) => {\n latestInstance = containerInstance.containerId || containerInstance;\n containers.set(latestInstance, containerInstance);\n\n queue.forEach(item => {\n eventManager.emit(Event.Show, item.content, item.options);\n });\n\n queue = [];\n })\n .on(Event.WillUnmount, (containerInstance: ContainerInstance) => {\n containers.delete(containerInstance.containerId || containerInstance);\n\n if (containers.size === 0) {\n eventManager\n .off(Event.Show)\n .off(Event.Clear)\n .off(Event.ClearWaitingQueue);\n }\n });\n\nexport { toast };\n","import { ToastPosition, TypeOptions } from '../types';\n\ntype KeyOfPosition =\n | 'TOP_LEFT'\n | 'TOP_RIGHT'\n | 'TOP_CENTER'\n | 'BOTTOM_LEFT'\n | 'BOTTOM_RIGHT'\n | 'BOTTOM_CENTER';\n\ntype KeyOfType = 'INFO' | 'SUCCESS' | 'WARNING' | 'ERROR' | 'DEFAULT';\n\n/**\n * @deprecated\n */\nexport const POSITION: { [key in KeyOfPosition]: ToastPosition } = {\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n TOP_CENTER: 'top-center',\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n BOTTOM_CENTER: 'bottom-center'\n};\n\n/**\n * @deprecated\n */\nexport const TYPE: { [key in KeyOfType]: TypeOptions } = {\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n DEFAULT: 'default'\n};\n\nexport const enum Type {\n INFO = 'info',\n SUCCESS = 'success',\n WARNING = 'warning',\n ERROR = 'error',\n DEFAULT = 'default'\n}\n\nexport const enum Default {\n COLLAPSE_DURATION = 300,\n DEBOUNCE_DURATION = 50,\n CSS_NAMESPACE = 'Toastify',\n DRAGGABLE_PERCENT = 80\n}\n\nexport const enum Direction {\n X = 'x',\n Y = 'y'\n}\n\nexport const enum SyntheticEvent {\n ENTRANCE_ANIMATION_END = 'd'\n}\n","import React from 'react';\nimport { Slide, toast, ToastContainer as Toastify } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\n\nexport const infoToast = (text, id) => {\n toast(text, {\n type: toast.TYPE.INFO,\n theme: 'colored',\n className: 'text-center p-3 m-2 shadow-sm text-white',\n toastId: id\n });\n};\n\nexport const successToast = (text, id) => {\n toast(text, {\n type: toast.TYPE.SUCCESS,\n theme: 'colored',\n className: 'text-center p-3 m-2 shadow-sm text-white',\n toastId: id\n });\n};\n\nexport const warningToast = (text, id) => {\n toast(text, {\n type: toast.TYPE.WARNING,\n theme: 'colored',\n className: 'text-center p-3 m-2 shadow-sm text-white',\n toastId: id\n });\n};\n\nexport const errorToast = (text, id) => {\n toast(text, {\n type: toast.TYPE.ERROR,\n theme: 'colored',\n className: 'text-center p-3 m-2 shadow-sm text-white',\n toastId: id\n });\n};\n\n/**\n * Sets out the functionality, styling and limitations of the toasts.\n * By implementing this component in App.tsx it allows for a global toast system.\n *\n */\nexport const ToastContainer = () => (\n <Toastify\n position='top-right'\n limit={3}\n autoClose={5000}\n hideProgressBar={true}\n closeOnClick\n pauseOnFocusLoss={false}\n draggable={false}\n pauseOnHover={false}\n transition={Slide}\n closeButton={false}\n toastClassName={() => 'text-center bg-white text-dark p-3 m-2 shadow-sm '}\n />\n);\n\n// This could be used in another way to have a 'loading' toast,\n// once loaded the toast can get updated using the Ref so that it turns green\n// eg: loading -> Success!\n// const toastId = useRef<ReactText>('updatePageSettings');\n\n// const notify = () =>\n// (toastId.current = toast('Updating...', {\n// type: toast.TYPE.INFO,\n// autoClose: false\n// }));\n\n","import { makeAutoObservable } from 'mobx';\nimport URI from 'urijs';\n\nexport default class BlockScanningStore {\n userStore;\n // Store blocks and reports for specific property.\n propertyBlocks = [];\n propertyReports = [];\n // Store blocks and reports for all user's properties.\n userBlocks = []; // [{ property_id: number, block_clusters: object[] }, ...]\n userReports = []; // [{ property_id: number, reports: object[], total_reports: number }, ...]\n\n constructor(userStore) {\n this.userStore = userStore;\n makeAutoObservable(this);\n }\n\n async fetchUserBlocks(pageSize, offset) {\n try {\n const selectedDatabase = this.userStore.selectedDatabase;\n const bearerToken = this.userStore.bearerToken;\n const url = new URI(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/fruition/blocks/properties`\n );\n url\n .addQuery('page_size', pageSize)\n .addQuery('offset', offset)\n .addQuery('without[]', 'primaryGaBlock.metadata')\n .addQuery('without[]', 'property');\n const response = await fetch(url.valueOf(), {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n SeasonalDatabase: selectedDatabase\n }\n });\n // Handle bad response.\n if (!response.ok) {\n if (response.status === 401) this.userStore.refresh();\n return;\n }\n // Parse data.\n const responseData = await response.json();\n this.userBlocks = [...this.userBlocks, ...responseData.data];\n return responseData;\n } catch (err) {\n if (process.env.NODE_ENV === 'development') console.error(err);\n }\n }\n\n async fetchUserReports(pageSize, offset) {\n try {\n const season = this.userStore.selectedDatabase.split('_')[1];\n const period = 7; // 1 week.\n const selectedDatabase = this.userStore.selectedDatabase;\n const bearerToken = this.userStore.bearerToken;\n const url = new URI(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/fruition/crop-scanning/reports/properties/latest`\n );\n url\n .addQuery('page_size', pageSize)\n .addQuery('offset', offset)\n .addQuery('season', season)\n .addQuery('period', period);\n const response = await fetch(url.valueOf(), {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n SeasonalDatabase: selectedDatabase\n }\n });\n // Handle bad response.\n if (!response.ok) {\n if (response.status === 401) this.userStore.refresh();\n return;\n }\n // Parse data.\n const responseData = await response.json();\n this.userReports = [...this.userReports, ...(responseData?.data || [])];\n return responseData;\n } catch (err) {\n if (process.env.NODE_ENV === 'development') console.error(err);\n }\n }\n}\n\n","import { PropertiesStore } from '@hortplus/properties-react';\nimport Cookies from 'js-cookie';\nimport jwt_decode from 'jwt-decode';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport moment from 'moment';\nimport {\n errorToast,\n infoToast,\n successToast,\n warningToast\n} from '../components/helpers/toasts/ToastUtils';\nimport BlockScanningStore from './BlockScanningStore';\n\nexport default class UserStore {\n loading = false;\n user = null;\n accessArray = null;\n selectedDatabase = null; // fruition_{year}\n selectedDatabaseLabel = null; // {year}\n bearerToken = null;\n refreshToken = null;\n propertiesStore = null;\n blockScanningStore = null;\n\n constructor() {\n this.propertiesStore = new PropertiesStore(this);\n this.blockScanningStore = new BlockScanningStore(this);\n makeObservable(this, {\n loading: observable,\n user: observable,\n selectedDatabase: observable,\n bearerToken: observable,\n refreshToken: observable,\n propertiesStore: observable,\n setSelectedDatabase: action,\n login: action,\n logout: action,\n updateUser: action,\n loggedIn: computed,\n isAdmin: computed,\n refreshCallback: computed,\n currentSeasonIsSelected: computed,\n selectedDatabaseStartYear: computed,\n selectedDatabaseStopYear: computed\n });\n\n if (!this.user) {\n let cookieRefreshToken = Cookies.get('refreshToken');\n let cookieRemember = Cookies.get('remember');\n\n // On page load refresh the bearer token. This solves the problem of using a\n // token until it expires, causing a refresh which can make the state get\n // reset which is annoying to the user.\n if (\n cookieRefreshToken &&\n (cookieRemember ||\n (window.performance && performance.navigation.type === 1))\n ) {\n this.refreshToken = cookieRefreshToken;\n this.refresh();\n }\n }\n }\n\n /**\n * Finds which season to select for the user.\n * Attempts to find the selected season in storage if there is none\n * it will attempt to find the most recent accessible season\n * (assumes the databases array is ordered).\n *\n * The season is from June to May.\n */\n initialiseSeason() {\n if (this.accessArray && this.loggedIn) {\n let season =\n this.accessArray.properties.databases[\n this.accessArray.properties.databases.length - 1\n ];\n\n if (localStorage.getItem('database')) {\n const selectedSeason = this.accessArray.properties.databases.find(\n (db) => db.value === localStorage.getItem('database')\n );\n if (selectedSeason) season = selectedSeason;\n }\n\n this.selectedDatabaseLabel = season ? season.label : undefined;\n this.selectedDatabase = season ? season.value : undefined;\n }\n }\n\n /**\n * @param {object} season\n */\n setSelectedDatabase(season) {\n localStorage.setItem('database', season.value);\n this.selectedDatabase = season.value;\n this.selectedDatabaseLabel = season.label;\n }\n\n /**\n * Attempts to fetch the user model from the authentication API.\n * If successful then all properties and cookies are set, otherwise\n * the user is logged out.\n *\n * @param {string} bearerToken\n * @param {string} refreshToken\n * @param {boolean} remember\n */\n login(bearerToken, refreshToken, remember) {\n this.loading = true;\n\n fetch(process.env.REACT_APP_AUTH_API_URL + 'api/user', {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + bearerToken\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) this.refresh();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n Cookies.set('bearerToken', bearerToken, { expires: 365 });\n Cookies.set('refreshToken', refreshToken, { expires: 365 });\n Cookies.set('remember', remember, { expires: 365 });\n this.bearerToken = bearerToken;\n this.refreshToken = refreshToken;\n this.user = data;\n const jwtPayload = jwt_decode(bearerToken);\n this.accessArray = jwtPayload.access;\n this.loading = false;\n this.initialiseSeason();\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n this.logout();\n });\n }\n\n /**\n * Attempt to refresh the bearer token using the refresh token,\n * if unsuccessful then logout.\n */\n refresh() {\n this.loading = true;\n\n if (this.refreshToken) {\n fetch(process.env.REACT_APP_AUTH_API_URL + 'api/token/jwt/refresh', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n service: 'fruition'\n },\n body: JSON.stringify({\n refresh_token: this.refreshToken\n })\n })\n .then((res) => {\n if (res.ok) return res.json();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n // User is already defined\n if (this.user) {\n this.bearerToken = data.jwt_token;\n this.refreshToken = data.refresh_token;\n const jwtPayload = jwt_decode(data.jwt_token);\n this.accessArray = jwtPayload.access;\n this.loading = false;\n }\n\n // User is not defined\n else {\n this.login(\n data.jwt_token,\n data.refresh_token,\n Cookies.get('remember')\n );\n }\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n this.logout();\n });\n } else {\n this.logout();\n }\n }\n\n /**\n * Clear all properties and cookies.\n */\n logout() {\n this.loading = false;\n this.user = undefined;\n this.bearerToken = undefined;\n this.refreshToken = undefined;\n this.accessArray = undefined;\n this.propertiesStore.clearStore();\n Cookies.remove('bearerToken');\n Cookies.remove('refreshToken');\n Cookies.remove('remember');\n\n this.selectedDatabase = undefined;\n this.selectedDatabaseLabel = undefined;\n localStorage.removeItem('database');\n }\n\n updateUser(newUser) {\n this.user = newUser;\n }\n\n /**\n * Can be used by our private NPM packages to trigger react-toastify notifications\n */\n toast(message, toastType = 'info') {\n switch (toastType) {\n default:\n case 'info':\n infoToast(message);\n break;\n case 'success':\n successToast(message);\n break;\n case 'warning':\n warningToast(message);\n break;\n case 'error':\n errorToast(message);\n break;\n }\n }\n\n get loggedIn() {\n return this.user ? true : false;\n }\n\n get isAdmin() {\n return this.user ? this.user.role.name === 'Staff' : false;\n }\n\n get refreshCallback() {\n return this.refresh.bind(this);\n }\n\n /**\n * @returns {boolean}\n */\n get currentSeasonIsSelected() {\n const now = moment();\n const year = now.month() >= 5 ? now.year() + 1 : now.year();\n return (\n this.selectedDatabase &&\n parseInt(this.selectedDatabase.substr(9)) === year\n );\n }\n\n /**\n * Selected database format is fruition_{year} where year is the stop year.\n * Fruition's seasons span two years.\n *\n * Extracts the year part from the selectedDatabase and subtracts one.\n *\n * @returns {int}\n */\n get selectedDatabaseStartYear() {\n return this.selectedDatabase\n ? parseInt(this.selectedDatabase.substr(9)) - 1\n : undefined;\n }\n\n /**\n * Extracts the year part from the selectedDatabase.\n *\n * @returns {int}\n */\n get selectedDatabaseStopYear() {\n return this.selectedDatabase\n ? parseInt(this.selectedDatabase.substr(9))\n : undefined;\n }\n\n get tempAwsCredentials() {\n return this.accessArray ? this.accessArray.tempAwsCredentials : undefined;\n }\n}\n\n","import React from 'react';\nimport UserStore from './UserStore';\n\nexport const storesContext = React.createContext(new UserStore());\n\n","import { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useContext, useMemo } from 'react';\nimport Select, { components } from 'react-select';\nimport { storesContext } from '../../stores/storesContext';\n\nconst CustomControl = ({ children, ...props }) => {\n return (\n <div title={props.title}>\n <components.Control {...props}>{children}</components.Control>\n </div>\n );\n};\n\nconst GlobalSeasonSelect = ({ showConfirm }) => {\n const userStore = useContext(storesContext);\n\n const val = useMemo(\n () => ({\n value: userStore.selectedDatabase,\n label: userStore.selectedDatabaseLabel\n }),\n [userStore.selectedDatabase, userStore.selectedDatabaseLabel]\n );\n\n const controlTitle = userStore.loading\n ? 'loading...'\n : userStore.selectedDatabaseLabel ?? undefined;\n\n return (\n <Select\n components={{\n Control: (props) => <CustomControl {...props} title={controlTitle} />\n }}\n loading={userStore.loading}\n options={\n userStore.accessArray ? userStore.accessArray.properties.databases : []\n }\n onChange={(option) => {\n if (\n !showConfirm ||\n window.confirm(\n 'Changing season will allow you to view the records from that season, the top banner will go grey indicating you are not viewing the current season on all tools.\\n\\nAre you sure you want to change the season?'\n )\n )\n userStore.setSelectedDatabase(option);\n }}\n value={val}\n styles={{\n container: (provided) => ({\n ...provided,\n width: '100%',\n zIndex: 2\n }),\n menu: (provided) => ({\n ...provided,\n width: 'max-content',\n minWidth: '100%'\n })\n }}\n />\n );\n};\n\nGlobalSeasonSelect.propTypes = {\n showConfirm: PropTypes.bool\n};\n\nexport default observer(GlobalSeasonSelect);\n\n","const PageTitle = ({ title }) => {\n return <h3 className='text-center m-0'>{title}</h3>;\n};\n\nexport default PageTitle;\n\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"show\", \"closeLabel\", \"className\", \"children\", \"variant\", \"onClose\", \"dismissible\", \"transition\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Fade from './Fade';\nimport CloseButton from './CloseButton';\nimport divWithClassName from './divWithClassName';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport SafeAnchor from './SafeAnchor';\nvar DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nvar AlertHeading = createWithBsPrefix('alert-heading', {\n Component: DivStyledAsH4\n});\nvar AlertLink = createWithBsPrefix('alert-link', {\n Component: SafeAnchor\n});\nvar defaultProps = {\n show: true,\n transition: Fade,\n closeLabel: 'Close alert'\n};\nvar Alert = /*#__PURE__*/React.forwardRef(function (uncontrolledProps, ref) {\n var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n show: 'onClose'\n }),\n bsPrefix = _useUncontrolled.bsPrefix,\n show = _useUncontrolled.show,\n closeLabel = _useUncontrolled.closeLabel,\n className = _useUncontrolled.className,\n children = _useUncontrolled.children,\n variant = _useUncontrolled.variant,\n onClose = _useUncontrolled.onClose,\n dismissible = _useUncontrolled.dismissible,\n transition = _useUncontrolled.transition,\n props = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'alert');\n var handleClose = useEventCallback(function (e) {\n if (onClose) {\n onClose(false, e);\n }\n });\n var Transition = transition === true ? Fade : transition;\n var alert = /*#__PURE__*/React.createElement(\"div\", _extends({\n role: \"alert\"\n }, !Transition ? props : undefined, {\n ref: ref,\n className: classNames(className, prefix, variant && prefix + \"-\" + variant, dismissible && prefix + \"-dismissible\")\n }), dismissible && /*#__PURE__*/React.createElement(CloseButton, {\n onClick: handleClose,\n label: closeLabel\n }), children);\n if (!Transition) return show ? alert : null;\n return /*#__PURE__*/React.createElement(Transition, _extends({\n unmountOnExit: true\n }, props, {\n ref: undefined,\n in: show\n }), alert);\n});\nAlert.displayName = 'Alert';\nAlert.defaultProps = defaultProps;\nAlert.Link = AlertLink;\nAlert.Heading = AlertHeading;\nexport default Alert;","const prefix = \"fas\";\nconst fa0 = {\n prefix: 'fas',\n iconName: '0',\n icon: [320, 512, [], \"30\", \"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160l0 128c0 88.4-71.6 160-160 160S0 408.4 0 320L0 192zM160 96c-53 0-96 43-96 96l0 128c0 53 43 96 96 96s96-43 96-96l0-128c0-53-43-96-96-96z\"]\n};\nconst fa1 = {\n prefix: 'fas',\n iconName: '1',\n icon: [256, 512, [], \"31\", \"M160 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.8 1.6l-96 64C-.5 111.2-4.4 131 5.4 145.8s29.7 18.7 44.4 8.9L96 123.8 96 416l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-352z\"]\n};\nconst fa2 = {\n prefix: 'fas',\n iconName: '2',\n icon: [320, 512, [], \"32\", \"M142.9 96c-21.5 0-42.2 8.5-57.4 23.8L54.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L40.2 74.5C67.5 47.3 104.4 32 142.9 32C223 32 288 97 288 177.1c0 38.5-15.3 75.4-42.5 102.6L109.3 416 288 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L200.2 234.5c15.2-15.2 23.8-35.9 23.8-57.4c0-44.8-36.3-81.1-81.1-81.1z\"]\n};\nconst fa3 = {\n prefix: 'fas',\n iconName: '3',\n icon: [320, 512, [], \"33\", \"M0 64C0 46.3 14.3 32 32 32l240 0c13.2 0 25 8.1 29.8 20.4s1.5 26.3-8.2 35.2L162.3 208l21.7 0c75.1 0 136 60.9 136 136s-60.9 136-136 136l-78.6 0C63 480 24.2 456 5.3 418.1l-1.9-3.8c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l1.9 3.8c8.1 16.3 24.8 26.5 42.9 26.5l78.6 0c39.8 0 72-32.2 72-72s-32.2-72-72-72L80 272c-13.2 0-25-8.1-29.8-20.4s-1.5-26.3 8.2-35.2L189.7 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst fa4 = {\n prefix: 'fas',\n iconName: '4',\n icon: [384, 512, [], \"34\", \"M189 77.6c7.5-16 .7-35.1-15.3-42.6s-35.1-.7-42.6 15.3L3 322.4c-4.7 9.9-3.9 21.5 1.9 30.8S21 368 32 368l224 0 0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-144c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 144L82.4 304 189 77.6z\"]\n};\nconst fa5 = {\n prefix: 'fas',\n iconName: '5',\n icon: [320, 512, [], \"35\", \"M32.5 58.3C35.3 43.1 48.5 32 64 32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L90.7 96 70.3 208 184 208c75.1 0 136 60.9 136 136s-60.9 136-136 136l-83.5 0c-39.4 0-75.4-22.3-93-57.5l-4.1-8.2c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l4.1 8.2c6.8 13.6 20.6 22.1 35.8 22.1l83.5 0c39.8 0 72-32.2 72-72s-32.2-72-72-72L32 272c-9.5 0-18.5-4.2-24.6-11.5s-8.6-16.9-6.9-26.2l32-176z\"]\n};\nconst fa6 = {\n prefix: 'fas',\n iconName: '6',\n icon: [320, 512, [], \"36\", \"M232.4 84.7c11.4-13.5 9.7-33.7-3.8-45.1s-33.7-9.7-45.1 3.8L38.6 214.7C14.7 242.9 1.1 278.4 .1 315.2c0 1.4-.1 2.9-.1 4.3l0 .5c0 88.4 71.6 160 160 160s160-71.6 160-160c0-85.5-67.1-155.4-151.5-159.8l63.9-75.6zM256 320A96 96 0 1 1 64 320a96 96 0 1 1 192 0z\"]\n};\nconst fa7 = {\n prefix: 'fas',\n iconName: '7',\n icon: [320, 512, [], \"37\", \"M0 64C0 46.3 14.3 32 32 32l256 0c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst fa8 = {\n prefix: 'fas',\n iconName: '8',\n icon: [320, 512, [], \"38\", \"M304 160c0-70.7-57.3-128-128-128l-32 0C73.3 32 16 89.3 16 160c0 34.6 13.7 66 36 89C20.5 272.3 0 309.8 0 352c0 70.7 57.3 128 128 128l64 0c70.7 0 128-57.3 128-128c0-42.2-20.5-79.7-52-103c22.3-23 36-54.4 36-89zM176.1 288l15.9 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64s28.7-64 64-64l15.9 0c0 0 .1 0 .1 0l32 0c0 0 .1 0 .1 0zm0-64c0 0 0 0 0 0l-32 0c0 0 0 0 0 0c-35.3 0-64-28.7-64-64c0-35.3 28.7-64 64-64l32 0c35.3 0 64 28.7 64 64c0 35.3-28.6 64-64 64z\"]\n};\nconst fa9 = {\n prefix: 'fas',\n iconName: '9',\n icon: [320, 512, [], \"39\", \"M64 192a96 96 0 1 0 192 0A96 96 0 1 0 64 192zm87.5 159.8C67.1 347.4 0 277.5 0 192C0 103.6 71.6 32 160 32s160 71.6 160 160c0 2.6-.1 5.3-.2 7.9c-1.7 35.7-15.2 70-38.4 97.4l-145 171.4c-11.4 13.5-31.6 15.2-45.1 3.8s-15.2-31.6-3.8-45.1l63.9-75.6z\"]\n};\nconst faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6l319.2 0 42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z\"]\n};\nconst faArrowsToCircle = {\n prefix: 'fas',\n iconName: 'arrows-to-circle',\n icon: [640, 512, [], \"e4bd\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7 160 96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96c0 4.3-.9 8.5-2.4 12.2c-1.6 3.7-3.8 7.3-6.9 10.3l-.1 .1c-3.1 3-6.6 5.3-10.3 6.9c-3.8 1.6-7.9 2.4-12.2 2.4l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l18.7 0L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zM256 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM114.7 352L96 352c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0s0 0 0 0l.1 0c8.8 0 16.7 3.6 22.5 9.3l.1 .1c3 3.1 5.3 6.6 6.9 10.3c1.6 3.8 2.4 7.9 2.4 12.2l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.7L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352zM416 96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 18.7L585.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 160l18.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-8.8 0-16.8-3.6-22.6-9.3l-.1-.1c-3-3.1-5.3-6.6-6.9-10.3s-2.4-7.8-2.4-12.2l0-.1s0 0 0 0l0-96zM525.3 352L630.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 397.3l0 18.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96s0 0 0 0l0-.1c0-4.3 .9-8.4 2.4-12.2c1.6-3.8 3.9-7.3 6.9-10.4c5.8-5.8 13.7-9.3 22.5-9.4l.1 0s0 0 0 0l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-18.7 0z\"]\n};\nconst faCircleChevronRight = {\n prefix: 'fas',\n iconName: 'circle-chevron-right',\n icon: [512, 512, [\"chevron-circle-right\"], \"f138\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"]\n};\nconst faChevronCircleRight = faCircleChevronRight;\nconst faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [61946], \"40\", \"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256l0 32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32l0 80 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faTrashCan = {\n prefix: 'fas',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3zM32 128l384 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zm96 64c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16z\"]\n};\nconst faTrashAlt = faTrashCan;\nconst faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M64 128l0-32 64 0 0 320-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-320 64 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48c0-26.5-21.5-48-48-48L160 32 48 32C21.5 32 0 53.5 0 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32zM502.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 192-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0 0-192 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nconst faUserXmark = {\n prefix: 'fas',\n iconName: 'user-xmark',\n icon: [640, 512, [\"user-times\"], \"f235\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM471 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faUserTimes = faUserXmark;\nconst faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [576, 512, [129658], \"f0f1\", \"M142.4 21.9c5.6 16.8-3.5 34.9-20.2 40.5L96 71.1 96 192c0 53 43 96 96 96s96-43 96-96l0-120.9-26.1-8.7c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l26.1 8.7C334.4 19.1 352 43.5 352 71.1L352 192c0 77.2-54.6 141.6-127.3 156.7C231 404.6 278.4 448 336 448c61.9 0 112-50.1 112-112l0-70.7c-28.3-12.3-48-40.5-48-73.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 70.7c0 97.2-78.8 176-176 176c-92.9 0-168.9-71.9-175.5-163.1C87.2 334.2 32 269.6 32 192L32 71.1c0-27.5 17.6-52 43.8-60.7l26.1-8.7c16.8-5.6 34.9 3.5 40.5 20.2zM480 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faMessage = {\n prefix: 'fas',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l96 0 0 80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416 448 416c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0z\"]\n};\nconst faCommentAlt = faMessage;\nconst faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M48 80a48 48 0 1 1 96 0A48 48 0 1 1 48 80zM0 224c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 224 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-192-32 0c-17.7 0-32-14.3-32-32z\"]\n};\nconst faDownLeftAndUpRightToCenter = {\n prefix: 'fas',\n iconName: 'down-left-and-up-right-to-center',\n icon: [512, 512, [\"compress-alt\"], \"f422\", \"M439 7c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8l-144 0c-13.3 0-24-10.7-24-24l0-144c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39L439 7zM72 272l144 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39L73 505c-9.4 9.4-24.6 9.4-33.9 0L7 473c-9.4-9.4-9.4-24.6 0-33.9l87-87L55 313c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8z\"]\n};\nconst faCompressAlt = faDownLeftAndUpRightToCenter;\nconst faExplosion = {\n prefix: 'fas',\n iconName: 'explosion',\n icon: [576, 512, [], \"e4e9\", \"M499.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L404.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87-71.4 0c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64l-79.6 0L42.3 363.7c-9.7-6.7-13.1-19.6-7.9-30.3s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.7 9.4-11.3L107.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L246 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7s22.7 9.4 23.9 21.7l13.5 141.9L499.6 11.3zM64 448s0 0 0 0l448 0s0 0 0 0l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0zM288 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24z\"]\n};\nconst faFileLines = {\n prefix: 'fas',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM112 256l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faFileAlt = faFileLines;\nconst faFileText = faFileLines;\nconst faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M128 64c0-17.7 14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 352 96 0 0-160c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 160c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-352-96 0 0 160c0 17.7-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0 0-160z\"]\n};\nconst faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M64 208c0 7.8 4.4 18.7 17.1 30.3C126.5 214.1 188.9 200 256 200s129.5 14.1 174.9 38.3C443.6 226.7 448 215.8 448 208c0-12.3-10.8-32-47.9-50.6C364.9 139.8 314 128 256 128s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7C166.3 280.2 208.8 288 256 288s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208c0-49.6 39.4-85.8 83.3-107.8C129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8l0 96c0 49.6-39.4 85.8-83.3 107.8C382.9 434.7 321.7 448 256 448s-126.9-13.3-172.7-36.2C39.4 389.8 0 353.6 0 304l0-96z\"]\n};\nconst faBuildingUn = {\n prefix: 'fas',\n iconName: 'building-un',\n icon: [384, 512, [], \"e4d9\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM237.3 71.1l34.7 52L272 80c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52 0 43.2c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM112 80l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [9858], \"f527\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faCalendarDays = {\n prefix: 'fas',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zm64 80l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm128 0l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM64 400l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faCalendarAlt = faCalendarDays;\nconst faAnchorCircleCheck = {\n prefix: 'fas',\n iconName: 'anchor-circle-check',\n icon: [640, 512, [], \"e4aa\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2L320 448l0-80 0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faBuildingCircleArrowRight = {\n prefix: 'fas',\n iconName: 'building-circle-arrow-right',\n icon: [640, 512, [], \"e4d1\", \"M0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 184.2c-39.1 32.3-64 81.1-64 135.8c0 49.5 20.4 94.2 53.3 126.2C364.5 505.1 351.1 512 336 512l-96 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-96 0c-26.5 0-48-21.5-48-48L0 48zM80 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM64 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L80 96c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm96 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm140.7-67.3c-6.2 6.2-6.2 16.4 0 22.6L521.4 352 432 352c-8.8 0-16 7.2-16 16s7.2 16 16 16l89.4 0-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nconst faVolleyball = {\n prefix: 'fas',\n iconName: 'volleyball',\n icon: [512, 512, [127952, \"volleyball-ball\"], \"f45f\", \"M511.8 267.4c-26.1 8.7-53.4 13.8-81 15.1c9.2-105.3-31.5-204.2-103.2-272.4C434.1 41.1 512 139.5 512 256c0 3.8-.1 7.6-.2 11.4zm-3.9 34.7c-5.8 32-17.6 62-34.2 88.7c-97.5 48.5-217.7 42.6-311.9-24.5c23.7-36.2 55.4-67.7 94.5-91.8c79.9 43.2 170.1 50.8 251.6 27.6zm-236-55.5c-2.5-90.9-41.1-172.7-101.9-231.7C196.8 5.2 225.8 0 256 0c2.7 0 5.3 0 7.9 .1c90.8 60.2 145.7 167.2 134.7 282.3c-43.1-2.4-86.4-14.1-126.8-35.9zM138 28.8c20.6 18.3 38.7 39.4 53.7 62.6C95.9 136.1 30.6 220.8 7.3 316.9C2.5 297.4 0 277 0 256C0 157.2 56 71.5 138 28.8zm69.6 90.5c19.5 38.6 31 81.9 32.3 127.7C162.5 294.6 110.9 368.9 90.2 451C66 430.4 45.6 405.4 30.4 377.2c6.7-108.7 71.9-209.9 177.1-257.9zM256 512c-50.7 0-98-14.7-137.8-40.2c5.6-27 14.8-53.1 27.4-77.7C232.2 454.6 338.1 468.8 433 441c-46 44-108.3 71-177 71z\"]\n};\nconst faVolleyballBall = faVolleyball;\nconst faArrowsUpToLine = {\n prefix: 'fas',\n iconName: 'arrows-up-to-line',\n icon: [576, 512, [], \"e4c2\", \"M32 96l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96zM9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 237.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96zm320 45.3c12.5 12.5 32.8 12.5 45.3 0L416 237.3 416 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3z\"]\n};\nconst faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [\"sort-desc\"], \"f0dd\", \"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l256 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z\"]\n};\nconst faSortDesc = faSortDown;\nconst faCircleMinus = {\n prefix: 'fas',\n iconName: 'circle-minus',\n icon: [512, 512, [\"minus-circle\"], \"f056\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faMinusCircle = faCircleMinus;\nconst faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [576, 512, [], \"f52b\", \"M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5L64 448l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 192 0 32 0 0-32 0-448zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128l96 0 0 352c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-320c0-35.3-28.7-64-64-64l-96 0 0 64z\"]\n};\nconst faRightFromBracket = {\n prefix: 'fas',\n iconName: 'right-from-bracket',\n icon: [512, 512, [\"sign-out-alt\"], \"f2f5\", \"M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nconst faSignOutAlt = faRightFromBracket;\nconst faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [512, 512, [9883], \"f5d2\", \"M256 398.8c-11.8 5.1-23.4 9.7-34.9 13.5c16.7 33.8 31 35.7 34.9 35.7s18.1-1.9 34.9-35.7c-11.4-3.9-23.1-8.4-34.9-13.5zM446 256c33 45.2 44.3 90.9 23.6 128c-20.2 36.3-62.5 49.3-115.2 43.2c-22 52.1-55.6 84.8-98.4 84.8s-76.4-32.7-98.4-84.8c-52.7 6.1-95-6.8-115.2-43.2C21.7 346.9 33 301.2 66 256c-33-45.2-44.3-90.9-23.6-128c20.2-36.3 62.5-49.3 115.2-43.2C179.6 32.7 213.2 0 256 0s76.4 32.7 98.4 84.8c52.7-6.1 95 6.8 115.2 43.2c20.7 37.1 9.4 82.8-23.6 128zm-65.8 67.4c-1.7 14.2-3.9 28-6.7 41.2c31.8 1.4 38.6-8.7 40.2-11.7c2.3-4.2 7-17.9-11.9-48.1c-6.8 6.3-14 12.5-21.6 18.6zm-6.7-175.9c2.8 13.1 5 26.9 6.7 41.2c7.6 6.1 14.8 12.3 21.6 18.6c18.9-30.2 14.2-44 11.9-48.1c-1.6-2.9-8.4-13-40.2-11.7zM290.9 99.7C274.1 65.9 259.9 64 256 64s-18.1 1.9-34.9 35.7c11.4 3.9 23.1 8.4 34.9 13.5c11.8-5.1 23.4-9.7 34.9-13.5zm-159 88.9c1.7-14.3 3.9-28 6.7-41.2c-31.8-1.4-38.6 8.7-40.2 11.7c-2.3 4.2-7 17.9 11.9 48.1c6.8-6.3 14-12.5 21.6-18.6zM110.2 304.8C91.4 335 96 348.7 98.3 352.9c1.6 2.9 8.4 13 40.2 11.7c-2.8-13.1-5-26.9-6.7-41.2c-7.6-6.1-14.8-12.3-21.6-18.6zM336 256a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-80-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [129532], \"e06e\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM416 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 160c0 27.6-11.7 52.5-30.4 70.1C422.1 275.7 448 310.8 448 352c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96s43-96 96-96l88.4 0c-15.2-17-24.4-39.4-24.4-64L96 192c-53 0-96 43-96 96L0 416c0 53 43 96 96 96l320 0c53 0 96-43 96-96l0-128c0-53-43-96-96-96zM160 288c-35.3 0-64 28.7-64 64s28.7 64 64 64l192 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0-160 0z\"]\n};\nconst faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [\"heart-music-camera-bolt\"], \"f86d\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32l0 144c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48l0-57L352 90.2 352 208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48l0-96c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM74.7 304l11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2l61.7 0c10.7 0 20.7 5.3 26.6 14.2L213.3 304l26.7 0c26.5 0 48 21.5 48 48l0 112c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 352c0-26.5 21.5-48 48-48l26.7 0zM192 408a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM478.7 278.3L440.3 368l55.7 0c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.2-12.4-5.3-19.2L391.7 400 336 400c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112c5.6-4.9 13.9-5.3 19.9-.9s8.2 12.4 5.3 19.2zm-339-59.2c-6.5 6.5-17 6.5-23 0L19.9 119.2c-28-29-26.5-76.9 5-103.9c27-23.5 68.4-19 93.4 6.5l10 10.5 9.5-10.5c25-25.5 65.9-30 93.9-6.5c31 27 32.5 74.9 4.5 103.9l-96.4 99.9z\"]\n};\nconst faHeartMusicCameraBolt = faIcons;\nconst faMicrophoneLinesSlash = {\n prefix: 'fas',\n iconName: 'microphone-lines-slash',\n icon: [640, 512, [\"microphone-alt-slash\"], \"f539\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24 0 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8l0-44.8-57.1 0-34.5-27c2.9-3.1 7-5 11.6-5l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0c0-53-43-96-96-96s-96 43-96 96l0 54.3L38.8 5.1zm362.5 407l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128l0-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6c20.4-2.8 39.7-9.1 57.3-18.2z\"]\n};\nconst faMicrophoneAltSlash = faMicrophoneLinesSlash;\nconst faBridgeCircleCheck = {\n prefix: 'fas',\n iconName: 'bridge-circle-check',\n icon: [640, 512, [], \"e4c9\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32l40 0 0 64-72 0 0 128c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2l0-72.2-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM488 96l0 64-80 0 0-64 80 0zM360 96l0 64-80 0 0-64 80 0zM232 96l0 64-80 0 0-64 80 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [448, 512, [], \"e06a\", \"M128 32l0 96 128 0 0-32 60.1 0c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4L256 32c0-17.7-14.3-32-32-32L160 0c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512l186.4 0c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7l-149.1 0zM216 280l0 32 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-32c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128l0 24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7l0-24.9c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256l0 24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8l0-24.9c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96l0 24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7l0-24.9c0-28.7 23.3-52 52-52s52 23.3 52 52l0 24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1l0-24.9c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9l0-24.9z\"]\n};\nconst faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm64-64c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32c0 13.2 4 25.4 10.8 35.6C177.9 364.3 160 388.1 160 416c0 11.7 3.1 22.6 8.6 32l-8.6 0C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64l0 88c0 22.1-17.9 40-40 40s-40-17.9-40-40l0-56c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 56c0 39.8 32.2 72 72 72z\"]\n};\nconst faMagnifyingGlassLocation = {\n prefix: 'fas',\n iconName: 'magnifying-glass-location',\n icon: [512, 512, [\"search-location\"], \"f689\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6c6 7.3 16.8 7.3 22.7 0c22.1-27 68.6-89.8 68.6-138.6zm-112 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faSearchLocation = faMagnifyingGlassLocation;\nconst faForwardStep = {\n prefix: 'fas',\n iconName: 'forward-step',\n icon: [320, 512, [\"step-forward\"], \"f051\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416L0 96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241l0-145c0-17.7 14.3-32 32-32s32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-145-11.5 9.6-192 160z\"]\n};\nconst faStepForward = faForwardStep;\nconst faFaceSmileBeam = {\n prefix: 'fas',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faSmileBeam = faFaceSmileBeam;\nconst faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [448, 512, [127937], \"f11e\", \"M32 0C49.7 0 64 14.3 64 32l0 16 69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 279.7c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80 0-66L0 64 0 32C0 14.3 14.3 0 32 0zM64 187.1l64-13.9 0 65.5L64 252.6 64 318l48.8-12.2c5.1-1.3 10.1-2.4 15.2-3.3l0-63.9 38.9-8.4c8.3-1.8 16.7-2.5 25.1-2.1l0-64c13.6 .4 27.2 2.6 40.4 6.4l23.6 6.9 0 66.7-41.7-12.3c-7.3-2.1-14.8-3.4-22.3-3.8l0 71.4c21.8 1.9 43.3 6.7 64 14.4l0-69.8 22.7 6.7c13.5 4 27.3 6.4 41.3 7.4l0-64.2c-7.8-.8-15.6-2.3-23.2-4.5l-40.8-12 0-62c-13-3.8-25.8-8.8-38.2-15c-8.2-4.1-16.9-7-25.8-8.8l0 72.4c-13-.4-26 .8-38.7 3.6L128 173.2 128 98 64 114l0 73.1zM320 335.7c16.8 1.5 33.9-.7 50-6.8l14-5.2 0-71.7-7.9 1.8c-18.4 4.3-37.3 5.7-56.1 4.5l0 77.4zm64-149.4l0-70.8c-20.9 6.1-42.4 9.1-64 9.1l0 69.4c13.9 1.4 28 .5 41.7-2.6l22.3-5.2z\"]\n};\nconst faFootball = {\n prefix: 'fas',\n iconName: 'football',\n icon: [512, 512, [127944, \"football-ball\"], \"f44e\", \"M247.5 25.4c-13.5 3.3-26.4 7.2-38.6 11.7C142.9 61.6 96.7 103.6 66 153.6C47.8 183.4 35.1 215.9 26.9 249L264.5 486.6c13.5-3.3 26.4-7.2 38.6-11.7c66-24.5 112.2-66.5 142.9-116.5c18.3-29.8 30.9-62.3 39.1-95.3L247.5 25.4zM495.2 205.3c6.1-56.8 1.4-112.2-7.7-156.4c-2.7-12.9-13-22.9-26.1-25.1c-58.2-9.7-109.9-12-155.6-7.9L495.2 205.3zM206.1 496L16.8 306.7c-6.1 56.8-1.4 112.2 7.7 156.4c2.7 12.9 13 22.9 26.1 25.1c58.2 9.7 109.9 12 155.6 7.9zm54.6-331.3c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nconst faFootballBall = faFootball;\nconst faSchoolCircleExclamation = {\n prefix: 'fas',\n iconName: 'school-circle-exclamation',\n icon: [640, 512, [], \"e56c\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l272 0s0 0 0 0l-64 0 0-96c0-35.3 28.7-64 64-64l.3 0 .5 0c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8L640 144c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm0 128l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 160 64l0 64 178.7 0L128 338.7 128 32c0-17.7-14.3-32-32-32S64 14.3 64 32l0 32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l32 0 0 256c0 35.3 28.7 64 64 64l224 0 0-64-178.7 0L384 173.3 384 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-274.7z\"]\n};\nconst faAnglesDown = {\n prefix: 'fas',\n iconName: 'angles-down',\n icon: [448, 512, [\"angle-double-down\"], \"f103\", \"M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nconst faAngleDoubleDown = faAnglesDown;\nconst faUsersRectangle = {\n prefix: 'fas',\n iconName: 'users-rectangle',\n icon: [640, 512, [], \"e594\", \"M96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96l448 0c53 0 96-43 96-96l0-320c0-53-43-96-96-96L96 0zM64 96c0-17.7 14.3-32 32-32l448 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32L64 96zm159.8 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM96 309.3c0 14.7 11.9 26.7 26.7 26.7l56.1 0c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4l-69.3 0C119.9 256 96 279.9 96 309.3zM461.2 336l56.1 0c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3l-69.3 0c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6zM372 289c-3.9-.7-7.9-1-12-1l-80 0c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-8.6-24.3-29.9-42.6-55.9-47zM512 176a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nconst faPeopleRoof = {\n prefix: 'fas',\n iconName: 'people-roof',\n icon: [640, 512, [], \"e537\", \"M335.5 4l288 160c15.4 8.6 21 28.1 12.4 43.5s-28.1 21-43.5 12.4L320 68.6 47.5 220c-15.4 8.6-34.9 3-43.5-12.4s-3-34.9 12.4-43.5L304.5 4c9.7-5.4 21.4-5.4 31.1 0zM320 160a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM144 256a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm312 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM226.9 491.4L200 441.5l0 38.5c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-38.5L61.1 491.4c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l37.9-70.3c15.3-28.5 45.1-46.3 77.5-46.3l19.5 0c16.3 0 31.9 4.5 45.4 12.6l33.6-62.3c15.3-28.5 45.1-46.3 77.5-46.3l19.5 0c32.4 0 62.1 17.8 77.5 46.3l33.6 62.3c13.5-8.1 29.1-12.6 45.4-12.6l19.5 0c32.4 0 62.1 17.8 77.5 46.3l37.9 70.3c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8L552 441.5l0 38.5c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-38.5-26.9 49.9c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l36.3-67.5c-1.7-1.7-3.2-3.6-4.3-5.8L376 345.5l0 54.5c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-54.5-26.9 49.9c-1.2 2.2-2.6 4.1-4.3 5.8l36.3 67.5c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8z\"]\n};\nconst faPeopleLine = {\n prefix: 'fas',\n iconName: 'people-line',\n icon: [640, 512, [], \"e534\", \"M360 72a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM144 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416zM496 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 217.5l0 54.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-54.5 26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 313.5l0 38.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5 26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3L18.9 340.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 313.5 88 352c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5z\"]\n};\nconst faBeerMugEmpty = {\n prefix: 'fas',\n iconName: 'beer-mug-empty',\n icon: [512, 512, [\"beer\"], \"f0fc\", \"M32 64c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32l0 32 51.2 0c42.4 0 76.8 34.4 76.8 76.8l0 102.1c0 30.4-17.9 57.9-45.6 70.2L384 381.7l0 34.3c0 35.3-28.7 64-64 64L96 480c-35.3 0-64-28.7-64-64L32 64zM384 311.6l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7l0-102.1c0-7.1-5.7-12.8-12.8-12.8L384 160l0 151.6zM160 144c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224z\"]\n};\nconst faBeer = faBeerMugEmpty;\nconst faDiagramPredecessor = {\n prefix: 'fas',\n iconName: 'diagram-predecessor',\n icon: [512, 512, [], \"e477\", \"M448 416l0-64L64 352l0 64 384 0zm0 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM288 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l144 0 16 0 144 0c44.2 0 80 35.8 80 80l0 16 38.1 0c21.4 0 32.1 25.9 17 41L433 239c-9.4 9.4-24.6 9.4-33.9 0L329 169c-15.1-15.1-4.4-41 17-41l38.1 0 0-16c0-8.8-7.2-16-16-16l-80 0 0 64z\"]\n};\nconst faArrowUpLong = {\n prefix: 'fas',\n iconName: 'arrow-up-long',\n icon: [384, 512, [\"long-arrow-up\"], \"f176\", \"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-370.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n};\nconst faLongArrowUp = faArrowUpLong;\nconst faFireFlameSimple = {\n prefix: 'fas',\n iconName: 'fire-flame-simple',\n icon: [384, 512, [\"burn\"], \"f46a\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5c0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"]\n};\nconst faBurn = faFireFlameSimple;\nconst faPerson = {\n prefix: 'fas',\n iconName: 'person',\n icon: [320, 512, [129485, \"male\"], \"f183\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0z\"]\n};\nconst faMale = faPerson;\nconst faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [128187], \"f109\", \"M128 32C92.7 32 64 60.7 64 96l0 256 64 0 0-256 384 0 0 256 64 0 0-256c0-35.3-28.7-64-64-64L128 32zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480l486.4 0c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2L19.2 384z\"]\n};\nconst faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [512, 512, [], \"f6dd\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 144-208 0c-35.3 0-64 28.7-64 64l0 144-48 0c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM200 352l16 0c22.1 0 40 17.9 40 40l0 8c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-8c0-4.4-3.6-8-8-8l-16 0c-4.4 0-8 3.6-8 8l0 80c0 4.4 3.6 8 8 8l16 0c4.4 0 8-3.6 8-8l0-8c0-8.8 7.2-16 16-16s16 7.2 16 16l0 8c0 22.1-17.9 40-40 40l-16 0c-22.1 0-40-17.9-40-40l0-80c0-22.1 17.9-40 40-40zm133.1 0l34.9 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-34.9 0c-7.2 0-13.1 5.9-13.1 13.1c0 5.2 3 9.9 7.8 12l37.4 16.6c16.3 7.2 26.8 23.4 26.8 41.2c0 24.9-20.2 45.1-45.1 45.1L304 512c-8.8 0-16-7.2-16-16s7.2-16 16-16l42.9 0c7.2 0 13.1-5.9 13.1-13.1c0-5.2-3-9.9-7.8-12l-37.4-16.6c-16.3-7.2-26.8-23.4-26.8-41.2c0-24.9 20.2-45.1 45.1-45.1zm98.9 0c8.8 0 16 7.2 16 16l0 31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66l0-31.6c0-8.8 7.2-16 16-16s16 7.2 16 16l0 31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6l0-31.6c0-8.8 7.2-16 16-16z\"]\n};\nconst faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1L64 64c0 17.7-14.3 32-32 32S0 81.7 0 64l0-1.2c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32l0 128c0 17.7 14.3 32 32 32l192 0 0-160c0-17.7 14.3-32 32-32s32 14.3 32 32l0 160 192 0c17.7 0 32-14.3 32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 128c0 53-43 96-96 96l-192 0 0 64 128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0-160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l128 0 0-64L96 384c-53 0-96-43-96-96L0 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32z\"]\n};\nconst faTruckPlane = {\n prefix: 'fas',\n iconName: 'truck-plane',\n icon: [640, 512, [], \"e58f\", \"M200 0c-30.6 0-56 54.7-56 86.1l0 106.5L7.8 274.3C2.9 277.2 0 282.4 0 288l0 64c0 5.1 2.4 9.8 6.4 12.8s9.3 3.9 14.1 2.5l123.4-37 0 81.2-50 40c-3.8 3-6 7.6-6 12.5l0 32c0 5.1 2.5 10 6.6 13s9.5 3.8 14.4 2.2L200 480.9 290.4 511c-1.6-4.7-2.4-9.8-2.4-15l0-32.6c-18.2-10.5-30.7-29.7-31.9-51.8l-.1-.1 0-3.5 0-82.5L256 184l0-1.1s0 0 0 0l0-96.9C256 54.7 231.5 0 200 0zm88 176l0 224c0 20.9 13.4 38.7 32 45.3l0 42.7c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-40 160 0 0 40c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-42.7c18.6-6.6 32-24.4 32-45.3l0-224c0-26.5-21.5-48-48-48l-256 0c-26.5 0-48 21.5-48 48zm79.8 78.7c3.3-8.7 11.2-14.7 20.5-14.7l151.4 0c9.2 0 17.2 6 20.5 14.7L576 304l-224 0 15.8-49.3zM568 352a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM336 376a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 224a128 128 0 1 0 0-256 128 128 0 1 0 0 256zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faFaceGrinStars = {\n prefix: 'fas',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm407.4 75.5c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z\"]\n};\nconst faGrinStars = faFaceGrinStars;\nconst faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M160 208.5c0 29.1-15.6 53.9-37.2 67.8c-17.2 11.1-31.5 26.1-41.7 43.7l221.8 0c-10.2-17.6-24.5-32.6-41.7-43.7c-21.6-13.9-37.2-38.7-37.2-67.8L224 64l-64 0 0 144.5zM288 64l0 144.5c0 5.7 3.1 10.9 7.9 14c11.2 7.2 21.5 15.5 30.9 24.8L366.1 208l-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l24 24 24 24c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3C374 314.1 384 347.9 384 384c0 39.4-11.9 76.1-32.2 106.5c-9.6 14.4-26.5 21.5-43.8 21.5L76.1 512c-17.3 0-34.2-7.1-43.8-21.5C11.9 460.1 0 423.4 0 384c0-67.8 35.1-127.3 88.1-161.5c4.8-3.1 7.9-8.3 7.9-14L96 64C78.3 64 64 49.7 64 32S78.3 0 96 0l16 0L272 0l16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nconst faSpaghettiMonsterFlying = {\n prefix: 'fas',\n iconName: 'spaghetti-monster-flying',\n icon: [640, 512, [\"pastafarianism\"], \"f67b\", \"M208 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3C390 95.1 384 80.2 384 64c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4c7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4C527.3 262.3 532.7 264 536 264c2.5 0 4.3-.6 7.1-3.3c3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7c9.7-9.3 22.9-16.7 40.4-16.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3c-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7c-9.7 9.3-22.9 16.7-40.4 16.7c-18.5 0-32.9-8.5-44.3-18.6c-3.1 4-6.6 8.3-10.5 12.7c1.4 4.3 2.8 8.5 4 12.5c.9 3 1.8 5.8 2.6 8.6c3 9.8 5.5 18.2 8.6 25.9c3.9 9.8 7.4 15.4 10.8 18.5c2.6 2.4 5.9 4.3 12.8 4.3c8.7 0 16.9-4.2 33.7-13.2c15-8 35.7-18.8 62.3-18.8c13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2c-1 .6-2.1 1.1-3.2 1.7C559.9 414 541.4 424 520 424c-18.4 0-33.6-6.1-45.5-17.2c-11.1-10.3-17.9-23.7-22.7-36c-3.6-9-6.7-19.1-9.5-28.5c-16.4 12.3-36.1 23.6-58.9 31.3c3.6 10.8 8.4 23.5 14.4 36.2c7.5 15.9 16.2 30.4 25.8 40.5C433 460.5 441.2 464 448 464c13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8c-14.5-15.4-25.7-34.9-34.2-53c-8-17-14.1-33.8-18.3-46.9c-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9c-8.5 18.1-19.8 37.6-34.2 53C237 498.5 217.2 512 192 512c-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7c9.5-10.1 18.3-24.6 25.8-40.5c5.9-12.6 10.7-25.4 14.4-36.2c-22.8-7.7-42.5-19-58.9-31.3c-2.9 9.4-6 19.5-9.5 28.5c-4.8 12.2-11.6 25.6-22.7 36C153.6 417.9 138.4 424 120 424c-21.4 0-39.9-10-53.1-17.1c0 0 0 0 0 0c-1.1-.6-2.2-1.2-3.2-1.7c-15-8-26.3-13.2-39.7-13.2c-13.3 0-24-10.7-24-24s10.7-24 24-24c26.6 0 47.3 10.8 62.3 18.8c16.8 9 25 13.2 33.7 13.2c6.8 0 10.2-1.9 12.8-4.3c3.4-3.2 7-8.8 10.8-18.5c3-7.7 5.6-16.1 8.6-25.9c.8-2.7 1.7-5.6 2.6-8.6c1.2-4 2.6-8.2 4-12.5c-3.9-4.5-7.4-8.8-10.5-12.7C136.9 303.5 122.5 312 104 312c-17.5 0-30.7-7.4-40.4-16.7c-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4c-2.8-2.7-4.6-3.3-7.1-3.3c-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7c8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4c2.8 2.7 4.6 3.3 7.1 3.3c3.3 0 8.7-1.7 19.4-13.4c5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24c13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm208 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faPastafarianism = faSpaghettiMonsterFlying;\nconst faArrowDownUpAcrossLine = {\n prefix: 'fas',\n iconName: 'arrow-down-up-across-line',\n icon: [576, 512, [], \"e4af\", \"M137.4 502.6c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7 192 288l352 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0 0-114.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 109.3 384 224l-192 0-64 0-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 114.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96zM128 192l64 0 0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 128zM448 320l-64 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128z\"]\n};\nconst faSpoon = {\n prefix: 'fas',\n iconName: 'spoon',\n icon: [512, 512, [129348, 61873, \"utensil-spoon\"], \"f2e5\", \"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8C224 80 320 0 416 0c53 0 96 43 96 96c0 96-80 192-160.2 192c-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"]\n};\nconst faUtensilSpoon = faSpoon;\nconst faJarWheat = {\n prefix: 'fas',\n iconName: 'jar-wheat',\n icon: [320, 512, [], \"e517\", \"M32 32C32 14.3 46.3 0 64 0L256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64l192 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 160zm112 0l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8C64 198 90 224 122.2 224l21.8 0 32 0 21.8 0c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8L208 160c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8C64 294 90 320 122.2 320l21.8 0 32 0 21.8 0c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8L208 256c-19.1 0-36.3 8.4-48 21.7zM112 352l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8C64 390 90 416 122.2 416l21.8 0 0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32 21.8 0c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8L208 352c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7z\"]\n};\nconst faEnvelopesBulk = {\n prefix: 'fas',\n iconName: 'envelopes-bulk',\n icon: [640, 512, [\"mail-bulk\"], \"f674\", \"M128 0C110.3 0 96 14.3 96 32l0 192 96 0 0-32c0-35.3 28.7-64 64-64l224 0 0-96c0-17.7-14.3-32-32-32L128 0zM256 160c-17.7 0-32 14.3-32 32l0 32 96 0c35.3 0 64 28.7 64 64l0 128 192 0c17.7 0 32-14.3 32-32l0-192c0-17.7-14.3-32-32-32l-320 0zm240 64l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM64 256c-17.7 0-32 14.3-32 32l0 13L187.1 415.9c1.4 1 3.1 1.6 4.9 1.6s3.5-.6 4.9-1.6L352 301l0-13c0-17.7-14.3-32-32-32L64 256zm288 84.8L216 441.6c-6.9 5.1-15.3 7.9-24 7.9s-17-2.8-24-7.9L32 340.8 32 480c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32l0-139.2z\"]\n};\nconst faMailBulk = faEnvelopesBulk;\nconst faFileCircleExclamation = {\n prefix: 'fas',\n iconName: 'file-circle-exclamation',\n icon: [576, 512, [], \"e4eb\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faCircleH = {\n prefix: 'fas',\n iconName: 'circle-h',\n icon: [512, 512, [9405, \"hospital-symbol\"], \"f47e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM368 152l0 104 0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80-128 0 0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24l0 80 128 0 0-80c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faHospitalSymbol = faCircleH;\nconst faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [128223], \"f815\", \"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm64 32l0 64c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM80 320c-13.3 0-24 10.7-24 24s10.7 24 24 24l56 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0zm136 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0z\"]\n};\nconst faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L96 0zM208 288l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64zM496 192c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64z\"]\n};\nconst faContactBook = faAddressBook;\nconst faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M161.3 144c3.2-17.2 14-30.1 33.7-38.6c21.1-9 51.8-12.3 88.6-6.5c11.9 1.9 48.8 9.1 60.1 12c17.1 4.5 34.6-5.6 39.2-22.7s-5.6-34.6-22.7-39.2c-14.3-3.8-53.6-11.4-66.6-13.4c-44.7-7-88.3-4.2-123.7 10.9c-36.5 15.6-64.4 44.8-71.8 87.3c-.1 .6-.2 1.1-.2 1.7c-2.8 23.9 .5 45.6 10.1 64.6c4.5 9 10.2 16.9 16.7 23.9L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-209.9 0-.4-.1-1.1-.3c-36-10.8-65.2-19.6-85.2-33.1c-9.3-6.3-15-12.6-18.2-19.1c-3.1-6.1-5.2-14.6-3.8-27.4zM348.9 337.2c2.7 6.5 4.4 15.8 1.9 30.1c-3 17.6-13.8 30.8-33.9 39.4c-21.1 9-51.7 12.3-88.5 6.5c-18-2.9-49.1-13.5-74.4-22.1c-5.6-1.9-11-3.7-15.9-5.4c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c3.6 1.2 7.9 2.7 12.7 4.3c0 0 0 0 0 0s0 0 0 0c24.9 8.5 63.6 21.7 87.6 25.6c0 0 0 0 0 0l.2 0c44.7 7 88.3 4.2 123.7-10.9c36.5-15.6 64.4-44.8 71.8-87.3c3.6-21 2.7-40.4-3.1-58.1l-75.7 0c7 5.6 11.4 11.2 13.9 17.2z\"]\n};\nconst faK = {\n prefix: 'fas',\n iconName: 'k',\n icon: [320, 512, [107], \"4b\", \"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7l-155.2 160L64 249 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 328 0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-107 64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"]\n};\nconst faLandmarkFlag = {\n prefix: 'fas',\n iconName: 'landmark-flag',\n icon: [512, 512, [], \"e51c\", \"M272 0l80 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-80 0 0 32 192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L48 192c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0 0-112c0-8.8 7.2-16 16-16l16 0zM64 224l64 0 0 192 40 0 0-192 64 0 0 192 48 0 0-192 64 0 0 192 40 0 0-192 64 0 0 196.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 224z\"]\n};\nconst faPencil = {\n prefix: 'fas',\n iconName: 'pencil',\n icon: [512, 512, [9999, 61504, \"pencil-alt\"], \"f303\", \"M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1 0 32c0 8.8 7.2 16 16 16l32 0zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faPencilAlt = faPencil;\nconst faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [9194], \"f04a\", \"M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29l0-320c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3l0 41.7 0 41.7L459.5 440.6zM256 352l0-96 0-128 0-32c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29l0-64z\"]\n};\nconst faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [256, 512, [], \"f0da\", \"M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z\"]\n};\nconst faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2s0 0 0 0s0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.2-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9c0 0 0 0 0 0s0 0 0 0l-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z\"]\n};\nconst faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M160 0c-23.7 0-44.4 12.9-55.4 32L48 32C21.5 32 0 53.5 0 80L0 400c0 26.5 21.5 48 48 48l144 0 0-272c0-44.2 35.8-80 80-80l48 0 0-16c0-26.5-21.5-48-48-48l-56.6 0C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48l0 272 0 16c0 26.5 21.5 48 48 48l192 0c26.5 0 48-21.5 48-48l0-220.1c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1L320 128l-48 0zM160 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faFileClipboard = faPaste;\nconst faCodePullRequest = {\n prefix: 'fas',\n iconName: 'code-pull-request',\n icon: [512, 512, [], \"e13c\", \"M305.8 2.1C314.4 5.9 320 14.5 320 24l0 40 16 0c70.7 0 128 57.3 128 128l0 166.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3L400 192c0-35.3-28.7-64-64-64l-16 0 0 40c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1zM104 80A24 24 0 1 0 56 80a24 24 0 1 0 48 0zm8 73.3l0 205.3c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-205.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80c0 32.8-19.7 61-48 73.3zM104 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm328 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM72 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zM72 368a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm88 0c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faTruckRampBox = {\n prefix: 'fas',\n iconName: 'truck-ramp-box',\n icon: [640, 512, [\"truck-loading\"], \"f4de\", \"M640 0l0 400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8 352 64c0-35.3 28.7-64 64-64L640 0zM576 400a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM23.1 207.7c-4.6-17.1 5.6-34.6 22.6-39.2l46.4-12.4 20.7 77.3c2.3 8.5 11.1 13.6 19.6 11.3l30.9-8.3c8.5-2.3 13.6-11.1 11.3-19.6l-20.7-77.3 46.4-12.4c17.1-4.6 34.6 5.6 39.2 22.6l41.4 154.5c4.6 17.1-5.6 34.6-22.6 39.2L103.7 384.9c-17.1 4.6-34.6-5.6-39.2-22.6L23.1 207.7z\"]\n};\nconst faTruckLoading = faTruckRampBox;\nconst faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM625 177L497 305c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faVialVirus = {\n prefix: 'fas',\n iconName: 'vial-virus',\n icon: [512, 512, [], \"e597\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l0 288c0 53 43 96 96 96c28.6 0 54.2-12.5 71.8-32.3c.1-14.2 5.6-28.3 16.4-39.1c.2-.2 .1-.6-.2-.6c-30.9 0-56-25.1-56-56s25.1-56 56-56c.3 0 .4-.4 .2-.6c-21.9-21.9-21.9-57.3 0-79.2c2.4-2.4 5-4.6 7.8-6.5L224 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0L96 32 32 32zM96 192l0-96 64 0 0 96-64 0zM216 376c28.8 0 43.2 34.8 22.9 55.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9c0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9C444.8 410.8 459.2 376 488 376c13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0C410.8 259.2 376 244.8 376 216c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2c-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-88a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm40 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faSheetPlastic = {\n prefix: 'fas',\n iconName: 'sheet-plastic',\n icon: [384, 512, [], \"e571\", \"M0 448c0 35.3 28.7 64 64 64l160 0 0-128c0-17.7 14.3-32 32-32l128 0 0-288c0-35.3-28.7-64-64-64L64 0C28.7 0 0 28.7 0 64L0 448zM171.3 75.3l-96 96c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l96-96c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm96 32l-160 160c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l160-160c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM384 384l-128 0 0 128L384 384z\"]\n};\nconst faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144L0 368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144l-16 0 0 96 16 0c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48l0-224z\"]\n};\nconst faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [129399], \"f504\", \"M224 256c-57.2 0-105.6-37.5-122-89.3c-1.1 1.3-2.2 2.6-3.5 3.8c-15.8 15.8-38.8 20.7-53.6 22.1c-8.1 .8-14.6-5.7-13.8-13.8c1.4-14.7 6.3-37.8 22.1-53.6c5.8-5.8 12.6-10.1 19.6-13.4c-7-3.2-13.8-7.6-19.6-13.4C37.4 82.7 32.6 59.7 31.1 44.9c-.8-8.1 5.7-14.6 13.8-13.8c14.7 1.4 37.8 6.3 53.6 22.1c4.8 4.8 8.7 10.4 11.7 16.1C131.4 28.2 174.4 0 224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zM0 482.3C0 399.5 56.4 330 132.8 309.9c6-1.6 12.2 .9 15.9 5.8l62.5 83.3c6.4 8.5 19.2 8.5 25.6 0l62.5-83.3c3.7-4.9 9.9-7.4 15.9-5.8C391.6 330 448 399.5 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM160 96c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L160 96z\"]\n};\nconst faPersonArrowUpFromLine = {\n prefix: 'fas',\n iconName: 'person-arrow-up-from-line',\n icon: [640, 512, [], \"e539\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352l0-96 16 0 0 96-16 0zm-64 0l-88 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l120 0 80 0 376 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-344 0 0-191.1 28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6l-29.7 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 448zM598.6 121.4l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L464 141.3 464 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-242.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nconst faScrollTorah = {\n prefix: 'fas',\n iconName: 'scroll-torah',\n icon: [640, 512, [\"torah\"], \"f6a0\", \"M96 480L96 32C96 14.3 74.5 0 48 0S0 14.3 0 32L0 480c0 17.7 21.5 32 48 32s48-14.3 48-32zM512 32L128 32l0 448 384 0 0-448zM592 0c-26.5 0-48 14.3-48 32l0 448c0 17.7 21.5 32 48 32s48-14.3 48-32l0-448c0-17.7-21.5-32-48-32zM196 313.7c0-3.2 .9-6.4 2.5-9.2L226.7 256l-28.3-48.5c-1.6-2.8-2.5-6-2.5-9.2c0-10.1 8.2-18.3 18.3-18.3l56.7 0 31.4-53.9c3.6-6.3 10.3-10.1 17.6-10.1s13.9 3.8 17.6 10.1L369 180l56.7 0c10.1 0 18.3 8.2 18.3 18.3c0 3.2-.9 6.4-2.5 9.2L413.3 256l28.3 48.5c1.6 2.8 2.5 6 2.5 9.2c0 10.1-8.2 18.3-18.3 18.3L369 332l-31.4 53.9c-3.6 6.3-10.3 10.1-17.6 10.1s-13.9-3.8-17.6-10.1L271 332l-56.7 0c-10.1 0-18.3-8.2-18.3-18.3zm124 54.7L341.2 332l-42.4 0L320 368.4zM254.5 256l30.3 52 70.4 0 30.3-52-30.3-52-70.4 0-30.3 52zm144.9 23.8L383 308l32.8 0-16.4-28.2zM415.8 204L383 204l16.4 28.2L415.8 204zM320 143.6L298.8 180l42.4 0L320 143.6zM224.2 204l16.4 28.2L257 204l-32.8 0zM257 308l-16.4-28.2L224.2 308l32.8 0z\"]\n};\nconst faTorah = faScrollTorah;\nconst faBroomBall = {\n prefix: 'fas',\n iconName: 'broom-ball',\n icon: [576, 512, [\"quidditch\", \"quidditch-broom-ball\"], \"f458\", \"M566.6 9.4c12.5 12.5 12.5 32.8 0 45.3l-192 192 34.7 34.7c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6l-29.1 0L256 211.7l0-29.1c0-12.5 10.1-22.6 22.6-22.6c6 0 11.8 2.4 16 6.6l34.7 34.7 192-192c12.5-12.5 32.8-12.5 45.3 0zm-344 225.5L341.1 353.4c3.7 42.7-11.7 85.2-42.3 115.8C271.4 496.6 234.2 512 195.5 512L22.1 512C9.9 512 0 502.1 0 489.9c0-6.3 2.7-12.3 7.3-16.5L133.7 359.7c4.2-3.7-.4-10.4-5.4-7.9L77.2 377.4c-6.1 3-13.2-1.4-13.2-8.2c0-31.5 12.5-61.7 34.8-84l8-8c30.6-30.6 73.1-45.9 115.8-42.3zM464 352a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faQuidditch = faBroomBall;\nconst faQuidditchBroomBall = faBroomBall;\nconst faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 128c70.7 0 128 57.3 128 128s-57.3 128-128 128l-192 0c-70.7 0-128-57.3-128-128s57.3-128 128-128l192 0zM576 256c0-106-86-192-192-192L192 64C86 64 0 150 0 256S86 448 192 448l192 0c106 0 192-86 192-192zM192 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nconst faBoxArchive = {\n prefix: 'fas',\n iconName: 'box-archive',\n icon: [512, 512, [\"archive\"], \"f187\", \"M32 32l448 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96L0 64C0 46.3 14.3 32 32 32zm0 128l448 0 0 256c0 35.3-28.7 64-64 64L96 480c-35.3 0-64-28.7-64-64l0-256zm128 80c0 8.8 7.2 16 16 16l160 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-160 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faArchive = faBoxArchive;\nconst faPersonDrowning = {\n prefix: 'fas',\n iconName: 'person-drowning',\n icon: [576, 512, [], \"e545\", \"M192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32.2c0 54.1 23.5 104 62.2 138.3l-21 146.7c7.8 2.1 15.5 3.3 22.8 3.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c12.4 8.5 26.1 14.8 39.7 18l17.7-97.6c10.7-1.2 21.3-3.1 31.9-5.5l105-23.9c17.2-3.9 28-21.1 24.1-38.3s-21.1-28-38.3-24.1L400 216.6c-41 9.3-83.7 7.5-123.7-5.2c-50.2-16-84.3-62.6-84.3-115.3L192 64zM320 192a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM306.5 389.9c-11.1-7.9-25.9-7.9-37 0C247 405.4 219.5 416 192 416c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 469.7 159 480 192 480c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 405.2 410.9 416 384 416c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nconst faArrowDown91 = {\n prefix: 'fas',\n iconName: 'arrow-down-9-1',\n icon: [576, 512, [\"sort-numeric-desc\", \"sort-numeric-down-alt\"], \"f886\", \"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7 192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 301.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM450.7 294c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2 0 51.6-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l48 0 48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-96c0-10.3-4.9-19.9-13.3-26zM418.3 91a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 91zM405.1 203.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nconst faSortNumericDesc = faArrowDown91;\nconst faSortNumericDownAlt = faArrowDown91;\nconst faFaceGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448l0-47.3c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6l0 46.9c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM116 141.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 448l0-45.4c0-14.7-11.9-26.6-26.6-26.6l-2 0c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9l-2 0c-14.7 0-26.6 11.9-26.6 26.6l0 45.4c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faGrinTongueSquint = faFaceGrinTongueSquint;\nconst faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M128 0l64 0c17.7 0 32 14.3 32 32l0 96L96 128l0-96c0-17.7 14.3-32 32-32zM0 256c0-53 43-96 96-96l128 0c53 0 96 43 96 96l0 208c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 256zm240 80A80 80 0 1 0 80 336a80 80 0 1 0 160 0zM256 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM448 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M288 64l0 64 128 0L368 64l-80 0zM419.2 25.6L496 128l80 0c17.7 0 32 14.3 32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64l-64 0c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l160 0 0-80c0-26.5 21.5-48 48-48l96 0c20.1 0 39.1 9.5 51.2 25.6zM152 256l16 0c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.7 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.3 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8l0 16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.3 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.8 3.7-14.1 6.8-21.7 9C190.1 503.1 180.1 512 168 512l-16 0c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2L63.8 468.9c-8.6-8.6-9.3-21.9-2.3-31.3c-3.7-6.9-6.8-14.1-9-21.8C40.9 414.1 32 404.1 32 392l0-16c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.3-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9c1.7-11.6 11.7-20.6 23.8-20.6zm8 176a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM448.2 276.6c1.7-11.6 11.7-20.6 23.8-20.6l16 0c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.8 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.2 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8l0 16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.2 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.9 3.7-14.1 6.8-21.8 9C510.1 503.1 500.1 512 488 512l-16 0c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2l-11.3-11.3c-8.6-8.6-9.3-21.9-2.2-31.3c-3.7-6.9-6.8-14.1-9-21.8C360.9 414.1 352 404.1 352 392l0-16c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.2-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9zM528 384a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faW = {\n prefix: 'fas',\n iconName: 'w',\n icon: [576, 512, [119], \"57\", \"M20.8 34c16.5-6.2 35 2.2 41.2 18.7l110.2 294L257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23l85.1 291.7L514 52.8c6.2-16.5 24.6-24.9 41.2-18.7s24.9 24.7 18.7 41.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"]\n};\nconst faEarthAfrica = {\n prefix: 'fas',\n iconName: 'earth-africa',\n icon: [512, 512, [127757, \"globe-africa\"], \"f57c\", \"M177.8 63.2l10 17.4c2.8 4.8 4.2 10.3 4.2 15.9l0 41.4c0 3.9 1.6 7.7 4.3 10.4c6.2 6.2 16.5 5.7 22-1.2l13.6-17c4.7-5.9 12.9-7.7 19.6-4.3l15.2 7.6c3.4 1.7 7.2 2.6 11 2.6c6.5 0 12.8-2.6 17.4-7.2l3.9-3.9c2.9-2.9 7.3-3.6 11-1.8l29.2 14.6c7.8 3.9 12.6 11.8 12.6 20.5c0 10.5-7.1 19.6-17.3 22.2l-35.4 8.8c-7.4 1.8-15.1 1.5-22.4-.9l-32-10.7c-3.3-1.1-6.7-1.7-10.2-1.7c-7 0-13.8 2.3-19.4 6.5L176 212c-10.1 7.6-16 19.4-16 32l0 28c0 26.5 21.5 48 48 48l32 0c8.8 0 16 7.2 16 16l0 48c0 17.7 14.3 32 32 32c10.1 0 19.6-4.7 25.6-12.8l25.6-34.1c8.3-11.1 12.8-24.6 12.8-38.4l0-12.1c0-3.9 2.6-7.3 6.4-8.2l5.3-1.3c11.9-3 20.3-13.7 20.3-26c0-7.1-2.8-13.9-7.8-18.9l-33.5-33.5c-3.7-3.7-3.7-9.7 0-13.4c5.7-5.7 14.1-7.7 21.8-5.1l14.1 4.7c12.3 4.1 25.7-1.5 31.5-13c3.5-7 11.2-10.8 18.9-9.2l27.4 5.5C432 112.4 351.5 48 256 48c-27.7 0-54 5.4-78.2 15.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faGlobeAfrica = faEarthAfrica;\nconst faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [640, 512, [127752], \"f75b\", \"M320 96C178.6 96 64 210.6 64 352l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96C0 175.3 143.3 32 320 32s320 143.3 320 320l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96C576 210.6 461.4 96 320 96zm0 192c-35.3 0-64 28.7-64 64l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-70.7 57.3-128 128-128s128 57.3 128 128l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-35.3-28.7-64-64-64zM160 352l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-123.7 100.3-224 224-224s224 100.3 224 224l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-88.4-71.6-160-160-160s-160 71.6-160 160z\"]\n};\nconst faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z\"]\n};\nconst faTabletScreenButton = {\n prefix: 'fas',\n iconName: 'tablet-screen-button',\n icon: [448, 512, [\"tablet-alt\"], \"f3fa\", \"M0 64C0 28.7 28.7 0 64 0L384 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM256 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64L64 64l0 320 320 0 0-320z\"]\n};\nconst faTabletAlt = faTabletScreenButton;\nconst faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5l0 1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3l0-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z\"]\n};\nconst faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [9729], \"f0c2\", \"M0 336c0 79.5 64.5 144 144 144l368 0c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z\"]\n};\nconst faTrowelBricks = {\n prefix: 'fas',\n iconName: 'trowel-bricks',\n icon: [512, 512, [], \"e58a\", \"M240.8 4.8C250.3 10.6 256 20.9 256 32l0 72 89 0c3.6-13.8 16.1-24 31-24l88 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-88 0c-14.9 0-27.4-10.2-31-24l-89 0 0 72c0 11.1-5.7 21.4-15.2 27.2s-21.2 6.4-31.1 1.4l-192-96C6.8 151.2 0 140.1 0 128s6.8-23.2 17.7-28.6l192-96c9.9-5 21.7-4.4 31.1 1.4zM288 256c0-17.7 14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-64zM32 384l96 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm192 0l256 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32z\"]\n};\nconst faFaceFlushed = {\n prefix: 'fas',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM176 384c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16zm-16-88a72 72 0 1 0 0-144 72 72 0 1 0 0 144zm264-72a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zm-288 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm192 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faFlushed = faFaceFlushed;\nconst faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [576, 512, [], \"f80d\", \"M48 0C21.5 0 0 21.5 0 48L0 256l144 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L0 288l0 64 144 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L0 384l0 80c0 26.5 21.5 48 48 48l217.9 0c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2l0-95.9L320 48c0-26.5-21.5-48-48-48L48 0zM152 64l16 0c8.8 0 16 7.2 16 16l0 24 24 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-24 0 0 24c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-24-24 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16l24 0 0-24c0-8.8 7.2-16 16-16zM512 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM288 477.1c0 19.3 15.6 34.9 34.9 34.9l218.2 0c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1l-101.8 0c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nconst faTentArrowLeftRight = {\n prefix: 'fas',\n iconName: 'tent-arrow-left-right',\n icon: [576, 512, [], \"e57f\", \"M488.1 6.2c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9L489.5 72 86.5 72l33.5-30.2c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120l402.9 0-33.5 30.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [\"legal\"], \"f0e3\", \"M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z\"]\n};\nconst faLegal = faGavel;\nconst faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M128 32l32 0c17.7 0 32 14.3 32 32l0 32L96 96l0-32c0-17.7 14.3-32 32-32zm64 96l0 320c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32l0-59.1c0-34.6 9.4-68.6 27.2-98.3C40.9 267.8 49.7 242.4 53 216L60.5 156c2-16 15.6-28 31.8-28l99.8 0zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6c17.8 29.7 27.2 63.7 27.2 98.3l0 59.1c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-320 99.8 0zM320 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 32-96 0 0-32zm-32 64l0 160-64 0 0-160 64 0z\"]\n};\nconst faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 21.2-5.1 41.1-14.2 58.7L416 300.8 416 96c0-53-43-96-96-96s-96 43-96 96l0 54.3L38.8 5.1zM344 430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128l0-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6z\"]\n};\nconst faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M92.5 0L208 0c40 0 52 24 64 48s24 48 64 48l85.2 0C436 96 448 108 448 122.8c0 3.4-.7 6.8-1.9 10L409.6 224 384 288l-256 0-16-64L64.9 35.4c-.6-2.3-.9-4.6-.9-6.9C64 12.8 76.8 0 92.5 0zM79 224l16 64-15 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 256 0 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-13.5 0 25.6-64 19.9 0c26.5 0 48 21.5 48 48l0 112L0 384 0 272c0-26.5 21.5-48 48-48l31 0zM0 416l512 0 0 48c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48l0-48z\"]\n};\nconst faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [127949], \"f21c\", \"M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l57.7 0 16.4 30.3L256 192l-45.3-45.3c-12-12-28.3-18.7-45.3-18.7L64 128c-17.7 0-32 14.3-32 32l0 32 96 0c88.4 0 160 71.6 160 160c0 11-1.1 21.7-3.2 32l70.4 0c-2.1-10.3-3.2-21-3.2-32c0-52.2 25-98.6 63.7-127.8l15.4 28.6C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L418.2 128l61.8 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-20.4 0c-7.5 0-14.7 2.6-20.5 7.4L391.7 78.9l-14-26c-7-12.9-20.5-21-35.2-21L280 32zM462.7 311.2l28.2 52.2c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-28.2-52.2c2.3-.3 4.7-.4 7.1-.4c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-15.5 5.5-29.7 14.7-40.8zM187.3 376c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c26.9 0 49.9 16.5 59.3 40l66.4 0C242.5 268.8 190.5 224 128 224C57.3 224 0 281.3 0 352s57.3 128 128 128c62.5 0 114.5-44.8 125.8-104l-66.4 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faBellConcierge = {\n prefix: 'fas',\n iconName: 'bell-concierge',\n icon: [512, 512, [128718, \"concierge-bell\"], \"f562\", \"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0 0 33.3C119.6 157.2 32 252.4 32 368l448 0c0-115.6-87.6-210.8-200-222.7l0-33.3 16 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0-40 0zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24l464 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 400z\"]\n};\nconst faConciergeBell = faBellConcierge;\nconst faPenRuler = {\n prefix: 'fas',\n iconName: 'pen-ruler',\n icon: [512, 512, [\"pencil-ruler\"], \"f5ae\", \"M469.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L322.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM44.9 353.2L299.7 98.3 413.7 212.3 158.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2zM249.4 103.4L103.4 249.4 16 161.9c-18.7-18.7-18.7-49.1 0-67.9L94.1 16c18.7-18.7 49.1-18.7 67.9 0l19.8 19.8c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1l45.1 45.1zM408.6 262.6l45.1 45.1c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1L496 350.1c18.7 18.7 18.7 49.1 0 67.9L417.9 496c-18.7 18.7-49.1 18.7-67.9 0l-87.4-87.4L408.6 262.6z\"]\n};\nconst faPencilRuler = faPenRuler;\nconst faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [640, 512, [\"people-arrows-left-right\"], \"e068\", \"M64 64a64 64 0 1 1 128 0A64 64 0 1 1 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160l44.8 0c27 0 51 13.4 65.5 34.1c-2.7 1.9-5.2 4-7.5 6.3l-64 64c-21.9 21.9-21.9 57.3 0 79.2L192 391.2l0 72.8c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-115.7c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3zM448 64a64 64 0 1 1 128 0A64 64 0 1 1 448 64zM431.6 200.4c-2.3-2.3-4.9-4.4-7.5-6.3c14.5-20.7 38.6-34.1 65.5-34.1l44.8 0c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6L576 464c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-72.8 47.6-47.6c21.9-21.9 21.9-57.3 0-79.2l-64-64zM272 240l0 32 96 0 0-32c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2l0-32-96 0 0 32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2z\"]\n};\nconst faPeopleArrowsLeftRight = faPeopleArrows;\nconst faMarsAndVenusBurst = {\n prefix: 'fas',\n iconName: 'mars-and-venus-burst',\n icon: [640, 512, [], \"e523\", \"M504 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39-22.2 22.2C475.9 78.4 439.6 64 400 64c-88.4 0-160 71.6-160 160c0 80.2 59.1 146.7 136.1 158.2c0 .6-.1 1.2-.1 1.8l0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .3 0 .4 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3-24 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1c0 0 0 .1 0 .1s0 .1 0 .1l0 .1c0 0 0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0l24 0-24 0c0 13.3 10.7 24 24 24s24-10.7 24-24l-24 0 24 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1l0-.1c0 0 0-.1 0-.1s0-.1 0-.1l0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 24 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-24 0 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.4 0-.3 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4c0-.6 0-1.2-.1-1.8c77-11.6 136.1-78 136.1-158.2c0-31.4-9-60.7-24.7-85.4L560 113.9l39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L504 0zM400 128a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.1 3.8 9.9 5.1 15.2 3.6C223.6 310.8 208 269.2 208 224c0-60.8 28.3-115 72.4-150.2L220.3 92.1l-29.4-74z\"]\n};\nconst faSquareCaretRight = {\n prefix: 'fas',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nconst faCaretSquareRight = faSquareCaretRight;\nconst faScissors = {\n prefix: 'fas',\n iconName: 'scissors',\n icon: [512, 512, [9984, 9986, 9988, \"cut\"], \"f0c4\", \"M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM64 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm48 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faCut = faScissors;\nconst faSunPlantWilt = {\n prefix: 'fas',\n iconName: 'sun-plant-wilt',\n icon: [640, 512, [], \"e57a\", \"M160 0c-6.3 0-12 3.7-14.6 9.5L120.6 64.9 63.9 43.2c-5.9-2.3-12.6-.8-17 3.6s-5.9 11.1-3.6 17l21.7 56.7L9.5 145.4C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8L43.2 256.1c-2.3 5.9-.8 12.6 3.6 17s11.1 5.9 17 3.6l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.7 21.7c5.9 2.3 12.6 .8 17-3.6s5.9-11.1 3.6-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7c2.3-5.9 .8-12.6-3.6-17s-11.1-5.9-17-3.6L199.4 64.9 174.6 9.5C172 3.7 166.3 0 160 0zm0 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm312 16c0-17.7 14.3-32 32-32s32 14.3 32 32l0 53.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C624 318 640 290.7 640 274c0-21.5-9.2-37-24-44.6l0-53.4c0-44.2-35.8-80-80-80s-80 35.8-80 80l0 22.7c-9.8-4.3-20.6-6.7-32-6.7c-44.2 0-80 35.8-80 80l0 21.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C400 382 416 354.7 416 338c0-21.5-9.2-37-24-44.6l0-21.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 8 0 168L32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-104 0 0-168 0-8 0-96z\"]\n};\nconst faToiletsPortable = {\n prefix: 'fas',\n iconName: 'toilets-portable',\n icon: [576, 512, [], \"e584\", \"M32 0L224 0c17.7 0 32 14.3 32 32l0 32L0 64 0 32C0 14.3 14.3 0 32 0zM0 96l24 0 208 0 24 0 0 24 0 368c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8L48 480l0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24L0 120 0 96zM192 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16zM352 0L544 0c17.7 0 32 14.3 32 32l0 32L320 64l0-32c0-17.7 14.3-32 32-32zM320 96l24 0 208 0 24 0 0 24 0 368c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8-160 0 0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-368 0-24zM512 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16z\"]\n};\nconst faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M256 256C114.6 256 0 213 0 160s114.6-96 256-96s256 43 256 96s-114.6 96-256 96zm192.3 1.8c24.7-9.3 46.9-21 63.7-35.6L512 352c0 53-114.6 96-256 96S0 405 0 352L0 222.3c16.8 14.6 39 26.3 63.7 35.6C114.5 276.9 182.5 288 256 288s141.5-11.1 192.3-30.2z\"]\n};\nconst faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M64 256l0-96 160 0 0 96L64 256zm0 64l160 0 0 96L64 416l0-96zm224 96l0-96 160 0 0 96-160 0zM448 256l-160 0 0-96 160 0 0 96zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nconst faMagnifyingGlassArrowRight = {\n prefix: 'fas',\n iconName: 'magnifying-glass-arrow-right',\n icon: [512, 512, [], \"e521\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM241 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31L120 184c-13.3 0-24 10.7-24 24s10.7 24 24 24l118.1 0-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72z\"]\n};\nconst faTachographDigital = {\n prefix: 'fas',\n iconName: 'tachograph-digital',\n icon: [640, 512, [\"digital-tachograph\"], \"f566\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l512 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm32 64l224 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L96 256c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zM64 368c0-8.8 7.2-16 16-16l256 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 384c-8.8 0-16-7.2-16-16zm320 0c0-8.8 7.2-16 16-16l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16zM80 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faDigitalTachograph = faTachographDigital;\nconst faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320l178.1 0c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192l-42.7 0c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 30.2-10.5 58-28 79.9l-25.2-19.7C408.1 267.7 416 246.8 416 224c0-53-43-96-96-96c-31.1 0-58.7 14.8-76.3 37.7l-40.6-31.8c13-14.2 20.9-33.1 20.9-53.9c0-44.2-35.8-80-80-80C116.3 0 91.9 14.1 77.5 35.5L38.8 5.1zM106.7 192C47.8 192 0 239.8 0 298.7C0 310.4 9.6 320 21.3 320l213.3 0c.2 0 .4 0 .7 0c-20.6-18.2-35.2-42.8-40.8-70.8L121.8 192l-15.2 0zM261.3 352C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7l330.7 0c10.5 0 19.5-6 23.9-14.8L324.9 352l-63.6 0zM512 160A80 80 0 1 0 512 0a80 80 0 1 0 0 160z\"]\n};\nconst faClover = {\n prefix: 'fas',\n iconName: 'clover',\n icon: [448, 512, [], \"e139\", \"M216.6 49.9C205.1 38.5 189.5 32 173.3 32C139.4 32 112 59.4 112 93.3l0 4.9c0 12 3.3 23.7 9.4 34l18.8 31.3c1.1 1.8 1.2 3.1 1 4.2c-.2 1.2-.8 2.5-2 3.6s-2.4 1.8-3.6 2c-1 .2-2.4 .1-4.2-1l-31.3-18.8c-10.3-6.2-22-9.4-34-9.4l-4.9 0C27.4 144 0 171.4 0 205.3c0 16.2 6.5 31.8 17.9 43.3l1.2 1.2c3.4 3.4 3.4 9 0 12.4l-1.2 1.2C6.5 274.9 0 290.5 0 306.7C0 340.6 27.4 368 61.3 368l4.9 0c12 0 23.7-3.3 34-9.4l31.3-18.8c1.8-1.1 3.1-1.2 4.2-1c1.2 .2 2.5 .8 3.6 2s1.8 2.4 2 3.6c.2 1 .1 2.4-1 4.2l-18.8 31.3c-6.2 10.3-9.4 22-9.4 34l0 4.9c0 33.8 27.4 61.3 61.3 61.3c16.2 0 31.8-6.5 43.3-17.9l1.2-1.2c3.4-3.4 9-3.4 12.4 0l1.2 1.2c11.5 11.5 27.1 17.9 43.3 17.9c33.8 0 61.3-27.4 61.3-61.3l0-4.9c0-12-3.3-23.7-9.4-34l-18.8-31.3c-1.1-1.8-1.2-3.1-1-4.2c.2-1.2 .8-2.5 2-3.6s2.4-1.8 3.6-2c1-.2 2.4-.1 4.2 1l31.3 18.8c10.3 6.2 22 9.4 34 9.4l4.9 0c33.8 0 61.3-27.4 61.3-61.3c0-16.2-6.5-31.8-17.9-43.3l-1.2-1.2c-3.4-3.4-3.4-9 0-12.4l1.2-1.2c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3l-4.9 0c-12 0-23.7 3.3-34 9.4l-31.3 18.8c-1.8 1.1-3.1 1.2-4.2 1c-1.2-.2-2.5-.8-3.6-2s-1.8-2.4-2-3.6c-.2-1-.1-2.4 1-4.2l18.8-31.3c6.2-10.3 9.4-22 9.4-34l0-4.9C336 59.4 308.6 32 274.7 32c-16.2 0-31.8 6.5-43.3 17.9l-1.2 1.2c-3.4 3.4-9 3.4-12.4 0l-1.2-1.2z\"]\n};\nconst faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [61714, \"mail-reply\"], \"f3e5\", \"M205 34.8c11.5 5.1 19 16.6 19 29.2l0 64 112 0c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96l-96 0 0 64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z\"]\n};\nconst faMailReply = faReply;\nconst faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [9770], \"f699\", \"M0 256C0 114.6 114.6 0 256 0c33 0 64.6 6.3 93.6 17.7c7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5c-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5c7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C320.6 505.7 289 512 256 512C114.6 512 0 397.4 0 256zM375.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L261 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"]\n};\nconst faHouseFire = {\n prefix: 'fas',\n iconName: 'house-fire',\n icon: [640, 512, [], \"e50c\", \"M288 350.1l0 1.9-32 0c-17.7 0-32 14.3-32 32l0 64 0 24c0 22.1-17.9 40-40 40l-24 0-31.9 0c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2l-16 0c-22.1 0-40-17.9-40-40l0-112c0-.9 0-1.9 .1-2.8l0-69.7-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L447.3 128.1c-12.3-1-25 3-34.8 11.7c-35.4 31.6-65.6 67.7-87.3 102.8C304.3 276.5 288 314.9 288 350.1zM480 512c-88.4 0-160-71.6-160-160c0-76.7 62.5-144.7 107.2-179.4c5-3.9 10.9-5.8 16.8-5.8c7.9-.1 16 3.1 22 9.2l46 46 11.3-11.3c11.7-11.7 30.6-12.7 42.3-1C624.5 268 640 320.2 640 352c0 88.4-71.6 160-160 160zm64-111.8c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C453 327.1 416 363.6 416 400.2c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faSquareMinus = {\n prefix: 'fas',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 200l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faMinusSquare = faSquareMinus;\nconst faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [128641], \"f533\", \"M128 32c0-17.7 14.3-32 32-32L544 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L384 64l0 64 32 0c88.4 0 160 71.6 160 160l0 64c0 17.7-14.3 32-32 32l-160 0-64 0c-20.1 0-39.1-9.5-51.2-25.6l-71.4-95.2c-3.5-4.7-8.3-8.3-13.7-10.5L47.2 198.1c-9.5-3.8-16.7-12-19.2-22L5 83.9C2.4 73.8 10.1 64 20.5 64L48 64c10.1 0 19.6 4.7 25.6 12.8L112 128l208 0 0-64L160 64c-17.7 0-32-14.3-32-32zM384 320l128 0 0-32c0-53-43-96-96-96l-32 0 0 128zM630.6 425.4c12.5 12.5 12.5 32.8 0 45.3l-3.9 3.9c-24 24-56.6 37.5-90.5 37.5L256 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l280.2 0c17 0 33.3-6.7 45.3-18.7l3.9-3.9c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nconst faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faSquareCaretDown = {\n prefix: 'fas',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nconst faCaretSquareDown = faSquareCaretDown;\nconst faFileCircleQuestion = {\n prefix: 'fas',\n iconName: 'file-circle-question',\n icon: [576, 512, [], \"e4ef\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6l0 6.4c0 8.8 7.2 16 16 16s16-7.2 16-16l0-6.4c0-5.3 4.3-9.6 9.6-9.6l40.5 0c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2l0 14.8c0 8.8 7.2 16 16 16s16-7.2 16-16l0-5.1 23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9l-40.5 0c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nconst faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M64 96c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 256-64 0 0-256L128 96l0 256-64 0L64 96zM0 403.2C0 392.6 8.6 384 19.2 384l601.6 0c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8L76.8 480C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nconst faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M0 32C0 14.3 14.3 0 32 0L160 0c17.7 0 32 14.3 32 32l0 384c0 53-43 96-96 96s-96-43-96-96L0 32zM223.6 425.9c.3-3.3 .4-6.6 .4-9.9l0-262 75.4-75.4c12.5-12.5 32.8-12.5 45.3 0l90.5 90.5c12.5 12.5 12.5 32.8 0 45.3L223.6 425.9zM182.8 512l192-192L480 320c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-297.2 0zM128 64L64 64l0 64 64 0 0-64zM64 192l0 64 64 0 0-64-64 0zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M0 32C0 14.3 14.3 0 32 0L352 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64L0 32zm32 96l320 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-32 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L32 384l0-64 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L32 288l0-64 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L32 192l0-64z\"]\n};\nconst faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [\"navicon\"], \"f0c9\", \"M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faNavicon = faBars;\nconst faPeopleGroup = {\n prefix: 'fas',\n iconName: 'people-group',\n icon: [640, 512, [], \"e533\", \"M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3l0-84.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5l0 21.5c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-26.8C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112l32 0c24 0 46.2 7.5 64.4 20.3zM448 416l0-21.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176l32 0c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2l0 26.8c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7l0 84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3l0-84.7c-10 11.3-16 26.1-16 42.3zm144-42.3l0 84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2l0 42.8c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-42.8c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112l32 0c61.9 0 112 50.1 112 112z\"]\n};\nconst faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [8987, \"hourglass-3\"], \"f253\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 256 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 0 64 0 32 0zM96 75l0-11 192 0 0 11c0 25.5-10.1 49.9-28.1 67.9L192 210.7l-67.9-67.9C106.1 124.9 96 100.4 96 75z\"]\n};\nconst faHourglass3 = faHourglassEnd;\nconst faHeartCrack = {\n prefix: 'fas',\n iconName: 'heart-crack',\n icon: [512, 512, [128148, \"heart-broken\"], \"f7a9\", \"M119.4 44.1c23.3-3.9 46.8-1.9 68.6 5.3l49.8 77.5-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.8 61.8c28.5-16.7 62.4-23.2 95.7-17.6C461.5 55.6 512 115.2 512 185.1l0 5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9l0-5.8c0-69.9 50.5-129.5 119.4-141z\"]\n};\nconst faHeartBroken = faHeartCrack;\nconst faSquareUpRight = {\n prefix: 'fas',\n iconName: 'square-up-right',\n icon: [448, 512, [8599, \"external-link-square-alt\"], \"f360\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM160 160c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l40 40-71 71C114 302 112 306.9 112 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7l71-71 40 40c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8l0-144c0-8.8-7.2-16-16-16l-144 0z\"]\n};\nconst faExternalLinkSquareAlt = faSquareUpRight;\nconst faFaceKissBeam = {\n prefix: 'fas',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-84.9s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faKissBeam = faFaceKissBeam;\nconst faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [127902], \"f008\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM48 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM48 240l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM48 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L64 96c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM160 128l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L192 96c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-128 0z\"]\n};\nconst faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [640, 512, [], \"f547\", \"M0 336c0 26.5 21.5 48 48 48l544 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0c-26.5 0-48 21.5-48 48L0 336z\"]\n};\nconst faPeopleRobbery = {\n prefix: 'fas',\n iconName: 'people-robbery',\n icon: [576, 512, [], \"e536\", \"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6L328 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-305.7c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zm-8 32c-35.3 0-64 28.7-64 64l0 96 0 .6L8 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-227.3 13 20.5c5.9 9.2 16.1 14.9 27 14.9l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-30.4 0-37.4-58.9C157.6 142 132.1 128 104.7 128L72 128z\"]\n};\nconst faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M272 384c9.6-31.9 29.5-59.1 49.2-86.2c0 0 0 0 0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4c0 0 0 0 0 0c19.8 27.1 39.7 54.4 49.2 86.2l160 0zM192 512c44.2 0 80-35.8 80-80l0-16-160 0 0 16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z\"]\n};\nconst faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [256, 512, [], \"f0d9\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"]\n};\nconst faCircleExclamation = {\n prefix: 'fas',\n iconName: 'circle-exclamation',\n icon: [512, 512, [\"exclamation-circle\"], \"f06a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faExclamationCircle = faCircleExclamation;\nconst faSchoolCircleXmark = {\n prefix: 'fas',\n iconName: 'school-circle-xmark',\n icon: [640, 512, [], \"e56d\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l272 0s0 0 0 0l-64 0 0-96c0-35.3 28.7-64 64-64l.3 0 .5 0c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8L640 144c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm0 128l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 368z\"]\n};\nconst faArrowRightFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-from-bracket',\n icon: [512, 512, [\"sign-out\"], \"f08b\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"]\n};\nconst faSignOut = faArrowRightFromBracket;\nconst faCircleChevronDown = {\n prefix: 'fas',\n iconName: 'circle-chevron-down',\n icon: [512, 512, [\"chevron-circle-down\"], \"f13a\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"]\n};\nconst faChevronCircleDown = faCircleChevronDown;\nconst faUnlockKeyhole = {\n prefix: 'fas',\n iconName: 'unlock-keyhole',\n icon: [448, 512, [\"unlock-alt\"], \"f13e\", \"M224 64c-44.2 0-80 35.8-80 80l0 48 240 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0 0-48C80 64.5 144.5 0 224 0c57.5 0 107 33.7 130.1 82.3c7.6 16 .8 35.1-15.2 42.6s-35.1 .8-42.6-15.2C283.4 82.6 255.9 64 224 64zm32 320c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0z\"]\n};\nconst faUnlockAlt = faUnlockKeyhole;\nconst faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96L96 320zM81.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6S-3.3 490.7 1.9 478.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM313.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z\"]\n};\nconst faHeadphonesSimple = {\n prefix: 'fas',\n iconName: 'headphones-simple',\n icon: [512, 512, [\"headphones-alt\"], \"f58f\", \"M256 80C141.1 80 48 173.1 48 288l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24L0 288C0 146.6 114.6 32 256 32s256 114.6 256 256l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-104c0-114.9-93.1-208-208-208zM80 352c0-35.3 28.7-64 64-64l16 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-16 0c-35.3 0-64-28.7-64-64l0-64zm288-64c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-16 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l16 0z\"]\n};\nconst faHeadphonesAlt = faHeadphonesSimple;\nconst faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [576, 512, [], \"f0e8\", \"M208 80c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-8 0 0 40 152 0c30.9 0 56 25.1 56 56l0 32 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-32c0-4.4-3.6-8-8-8l-152 0 0 40 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-40-152 0c-4.4 0-8 3.6-8 8l0 32 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-32c0-30.9 25.1-56 56-56l152 0 0-40-8 0c-26.5 0-48-21.5-48-48l0-64z\"]\n};\nconst faCircleDollarToSlot = {\n prefix: 'fas',\n iconName: 'circle-dollar-to-slot',\n icon: [512, 512, [\"donate\"], \"f4b9\", \"M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3l-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 91.9c-11.1 0-20.1 9-20.1 20.1l0 6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.7 4c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-2.2-.7-4.3-1.5-6.4-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1l0 6.4c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1l0-5.5c5.3-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4l0-6.3c0-11.1-9-20.1-20.1-20.1zM48 352l16 0c19.5 25.9 44 47.7 72.2 64L64 416l0 32 192 0 192 0 0-32-72.2 0c28.2-16.3 52.8-38.1 72.2-64l16 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48z\"]\n};\nconst faDonate = faCircleDollarToSlot;\nconst faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [576, 512, [], \"f538\", \"M64 64C28.7 64 0 92.7 0 128l0 7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6L0 320l576 0 0-71.4c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3l0-7.4c0-35.3-28.7-64-64-64L64 64zM576 352L0 352l0 64c0 17.7 14.3 32 32 32l48 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 96 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 96 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 96 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 48 0c17.7 0 32-14.3 32-32l0-64zM192 160l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faRoadSpikes = {\n prefix: 'fas',\n iconName: 'road-spikes',\n icon: [640, 512, [], \"e568\", \"M64 116.8c0-15.8 20.5-22 29.3-8.9L192 256l0-139.2c0-15.8 20.5-22 29.3-8.9L320 256l0-139.2c0-15.8 20.5-22 29.3-8.9L448 256l0-139.2c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.7-26.6 49.7L512 352l-64 0-64 0-64 0-64 0-64 0L64 352l0-235.2zM32 384l576 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faFireBurner = {\n prefix: 'fas',\n iconName: 'fire-burner',\n icon: [640, 512, [], \"e4f1\", \"M345.7 48.3L358 34.5c5.4-6.1 13.3-8.8 20.9-8.9c7.2 0 14.3 2.6 19.9 7.8c19.7 18.3 39.8 43.2 55 70.6C469 131.2 480 162.2 480 192.2C480 280.8 408.7 352 320 352c-89.6 0-160-71.3-160-159.8c0-37.3 16-73.4 36.8-104.5c20.9-31.3 47.5-59 70.9-80.2C273.4 2.3 280.7-.2 288 0c14.1 .3 23.8 11.4 32.7 21.6c0 0 0 0 0 0c2 2.3 4 4.6 6 6.7l19 19.9zM384 240.2c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C293 167.1 256 203.6 256 240.2c0 35.3 28.7 64 64 64s64-28.7 64-64zM32 288c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 64 448 0 0-64c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l0-96zM320 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM192 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [448, 512, [127988, 61725], \"f024\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32L0 64 0 368 0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30l0-247.7c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48l0-16z\"]\n};\nconst faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [128334], \"f6e6\", \"M314.2 3.3C309.1 12.1 296 36.6 296 56c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C324.6 1.2 322.4 0 320 0s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C36.6 49.2 34.4 48 32 48s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7C165.1 60.1 152 84.6 152 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3C389.1 60.1 376 84.6 376 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7C517.1 60.1 504 84.6 504 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176L96 320c-17.7 0-32-14.3-32-32l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 53 43 96 96 96l192 0 0 64-128 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0 0-64 192 0c53 0 96-43 96-96l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7-14.3 32-32 32l-192 0 0-176z\"]\n};\nconst faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [129718], \"f52d\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57 68 0c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330l0 55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nconst faVolumeLow = {\n prefix: 'fas',\n iconName: 'volume-low',\n icon: [448, 512, [128264, \"volume-down\"], \"f027\", \"M301.1 34.8C312.6 40 320 51.4 320 64l0 384c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352 64 352c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l67.8 0L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM412.6 181.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z\"]\n};\nconst faVolumeDown = faVolumeLow;\nconst faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zm385.2 425L82.9 161.3C70.7 185.6 64 212.2 64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104.1-17.9z\"]\n};\nconst faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [640, 512, [127782], \"f743\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l10.4 62.4c-23.3 10.8-42.9 28.4-56 50.3c-14.6-9-31.8-14.1-50.2-14.1c-53 0-96 43-96 96c0 35.5 19.3 66.6 48 83.2c.8 31.8 13.2 60.7 33.1 82.7l-56 39.2c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM208 144c13.8 0 26.7 4.4 37.1 11.9c-1.2 4.1-2.2 8.3-3 12.6c-37.9 14.6-67.2 46.6-77.8 86.4C151.8 243.1 144 226.5 144 208c0-35.3 28.7-64 64-64zm69.4 276c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm74.5-116.1c0 44.2-35.8 80-80 80l-271.9 0c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nconst faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 320c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0z\"]\n};\nconst faWheatAwn = {\n prefix: 'fas',\n iconName: 'wheat-awn',\n icon: [512, 512, [\"wheat-alt\"], \"e2cd\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3z\"]\n};\nconst faWheatAlt = faWheatAwn;\nconst faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [9765], \"f644\", \"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1c-5.9 6.2-11.8 11.8-17.4 16.7c-5.6-4.9-11.5-10.5-17.4-16.7C116.7 204.6 96 169.6 96 128zM160 0C89.3 0 32 57.3 32 128c0 52.4 21.5 95.5 46.8 128L32 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-46.8 0c25.4-32.5 46.8-75.6 46.8-128C288 57.3 230.7 0 160 0z\"]\n};\nconst faHandsHoldingChild = {\n prefix: 'fas',\n iconName: 'hands-holding-child',\n icon: [640, 512, [], \"e4fa\", \"M320 0a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm44.7 164.3L375.8 253c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35-7.6 0-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8L255.5 181c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 104.8 295.3 96 320 96s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8l-19.8-16.7zM40 64c22.1 0 40 17.9 40 40l0 40 0 80 0 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2c0 0 0 0 0 0l25.3 25.3c21 21 32.8 49.5 32.8 79.2l0 78.9c0 26.5-21.5 48-48 48l-66.7 0c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5L0 224l0-64 0-56C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40l0 56 0 64 0 101.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7L400 512c-26.5 0-48-21.5-48-48l0-78.9c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3c0 0 0 0 0 0l15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3l0-40.2 0-80 0-40c0-22.1 17.9-40 40-40z\"]\n};\nconst faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [384, 512, [10033, 61545], \"2a\", \"M192 32c17.7 0 32 14.3 32 32l0 135.5 111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5 224 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-135.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5 160 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faSquareCheck = {\n prefix: 'fas',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faCheckSquare = faSquareCheck;\nconst faPesetaSign = {\n prefix: 'fas',\n iconName: 'peseta-sign',\n icon: [384, 512, [], \"e221\", \"M64 32C46.3 32 32 46.3 32 64l0 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 96 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 96 0c77.4 0 142-55 156.8-128l3.2 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-3.2 0C334 87 269.4 32 192 32L64 32zM282.5 160L96 160l0-64 96 0c41.8 0 77.4 26.7 90.5 64zM96 224l186.5 0c-13.2 37.3-48.7 64-90.5 64l-96 0 0-64z\"]\n};\nconst faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [448, 512, [\"header\"], \"f1dc\", \"M0 64C0 46.3 14.3 32 32 32l48 0 48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 112 224 0 0-112-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0 48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 144 0 176 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-144-224 0 0 144 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-176L48 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst faHeader = faHeading;\nconst faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [128123], \"f6e2\", \"M40.1 467.1l-11.2 9c-3.2 2.5-7.1 3.9-11.1 3.9C8 480 0 472 0 462.2L0 192C0 86 86 0 192 0S384 86 384 192l0 270.2c0 9.8-8 17.8-17.8 17.8c-4 0-7.9-1.4-11.1-3.9l-11.2-9c-13.4-10.7-32.8-9-44.1 3.9L269.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6l-26.6-30.5c-12.7-14.6-35.4-14.6-48.2 0L141.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6L84.2 471c-11.3-12.9-30.7-14.6-44.1-3.9zM160 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [\"list-squares\"], \"f03a\", \"M40 48C26.7 48 16 58.7 16 72l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24L40 48zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zM16 232l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0z\"]\n};\nconst faListSquares = faList;\nconst faSquarePhoneFlip = {\n prefix: 'fas',\n iconName: 'square-phone-flip',\n icon: [448, 512, [\"phone-square-alt\"], \"f87b\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zm-90.7 96.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L280 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C111.1 378 119 384 128 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z\"]\n};\nconst faPhoneSquareAlt = faSquarePhoneFlip;\nconst faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M0 24C0 10.7 10.7 0 24 0L69.5 0c22 0 41.5 12.8 50.6 32l411 0c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3l-288.5 0 5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5L488 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-288.3 0c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5L24 48C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM252 160c0 11 9 20 20 20l44 0 0 44c0 11 9 20 20 20s20-9 20-20l0-44 44 0c11 0 20-9 20-20s-9-20-20-20l-44 0 0-44c0-11-9-20-20-20s-20 9-20 20l0 44-44 0c-11 0-20 9-20 20z\"]\n};\nconst faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M192 64C86 64 0 150 0 256S86 448 192 448l256 0c106 0 192-86 192-192s-86-192-192-192L192 64zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24l0 32 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-32z\"]\n};\nconst faCircleDot = {\n prefix: 'fas',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-352a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faDotCircle = faCircleDot;\nconst faFaceDizzy = {\n prefix: 'fas',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-224a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM100.7 132.7c6.2-6.2 16.4-6.2 22.6 0L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6zm192 0c6.2-6.2 16.4-6.2 22.6 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nconst faDizzy = faFaceDizzy;\nconst faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [129370], \"f7fb\", \"M192 496C86 496 0 394 0 288C0 176 64 16 192 16s192 160 192 272c0 106-86 208-192 208zM154.8 134c6.5-6 7-16.1 1-22.6s-16.1-7-22.6-1c-23.9 21.8-41.1 52.7-52.3 84.2C69.7 226.1 64 259.7 64 288c0 8.8 7.2 16 16 16s16-7.2 16-16c0-24.5 5-54.4 15.1-82.8c10.1-28.5 25-54.1 43.7-71.2z\"]\n};\nconst faHouseMedicalCircleXmark = {\n prefix: 'fas',\n iconName: 'house-medical-circle-xmark',\n icon: [640, 512, [], \"e513\", \"M320 368c0 59.5 29.5 112.1 74.8 144l-266.7 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64L320 256l0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nconst faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [576, 512, [9978], \"f6bb\", \"M377 52c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5L288 60.8 249 12c-11-13.8-31.2-16-45-5s-16 31.2-5 45l48 60L12.3 405.4C4.3 415.4 0 427.7 0 440.4L0 464c0 26.5 21.5 48 48 48l240 0 240 0c26.5 0 48-21.5 48-48l0-23.6c0-12.7-4.3-25.1-12.3-35L329 112l48-60zM288 448l-119.5 0L288 291.7 407.5 448 288 448z\"]\n};\nconst faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M512 416c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l128 0c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8l160 0c35.3 0 64 28.7 64 64l0 256zM232 376c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 64z\"]\n};\nconst faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6l59.2 0c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nconst faFutbolBall = faFutbol;\nconst faSoccerBall = faFutbol;\nconst faPaintbrush = {\n prefix: 'fas',\n iconName: 'paintbrush',\n icon: [576, 512, [128396, \"paint-brush\"], \"f1fc\", \"M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448L64 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z\"]\n};\nconst faPaintBrush = faPaintbrush;\nconst faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [128274], \"f023\", \"M144 144l0 48 160 0 0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192l0-48C80 64.5 144.5 0 224 0s144 64.5 144 144l0 48 16 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0z\"]\n};\nconst faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [9981], \"f52f\", \"M32 64C32 28.7 60.7 0 96 0L256 0c35.3 0 64 28.7 64 64l0 192 8 0c48.6 0 88 39.4 88 88l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-154c-27.6-7.1-48-32.2-48-62l0-64L384 64c-8.8-8.8-8.8-23.2 0-32s23.2-8.8 32 0l77.3 77.3c12 12 18.7 28.3 18.7 45.3l0 13.5 0 24 0 32 0 152c0 39.8-32.2 72-72 72s-72-32.2-72-72l0-32c0-22.1-17.9-40-40-40l-8 0 0 144c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 64zM96 80l0 96c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16L112 64c-8.8 0-16 7.2-16 16z\"]\n};\nconst faHotTubPerson = {\n prefix: 'fas',\n iconName: 'hot-tub-person',\n icon: [512, 512, [\"hot-tub\"], \"f593\", \"M272 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5l0 13.2c0 13.3 10.7 24 24 24s24-10.7 24-24l0-13.2c0-34-14.4-66.4-39.7-89.2L295.8 82.8C280.7 69.1 272 49.7 272 29.2l0-5.2zM0 320l0 16L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-128c0-35.3-28.7-64-64-64l-170.7 0c-13.8 0-27.3-4.5-38.4-12.8l-85.3-64C137 166.7 116.8 160 96 160c-53 0-96 43-96 96l0 64zm128 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16zm112 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16zM360 0c-13.3 0-24 10.7-24 24l0 5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5l0 13.2c0 13.3 10.7 24 24 24s24-10.7 24-24l0-13.2c0-34-14.4-66.4-39.7-89.2L407.8 82.8C392.7 69.1 384 49.7 384 29.2l0-5.2c0-13.3-10.7-24-24-24zM64 128A64 64 0 1 0 64 0a64 64 0 1 0 0 128z\"]\n};\nconst faHotTub = faHotTubPerson;\nconst faMapLocation = {\n prefix: 'fas',\n iconName: 'map-location',\n icon: [576, 512, [\"map-marked\"], \"f59f\", \"M302.8 312C334.9 271.9 408 174.6 408 120C408 53.7 354.3 0 288 0S168 53.7 168 120c0 54.6 73.1 151.9 105.2 192c7.7 9.6 22 9.6 29.6 0zM416 503l144.9-58c9.1-3.6 15.1-12.5 15.1-22.3L576 152c0-17-17.1-28.6-32.9-22.3l-116 46.4c-.5 1.2-1 2.5-1.5 3.7c-2.9 6.8-6.1 13.7-9.6 20.6L416 503zM15.1 187.3C6 191 0 199.8 0 209.6L0 480.4c0 17 17.1 28.6 32.9 22.3L160 451.8l0-251.4c-3.5-6.9-6.7-13.8-9.6-20.6c-5.6-13.2-10.4-27.4-12.8-41.5l-122.6 49zM384 255c-20.5 31.3-42.3 59.6-56.2 77c-20.5 25.6-59.1 25.6-79.6 0c-13.9-17.4-35.7-45.7-56.2-77l0 194.4 192 54.9L384 255z\"]\n};\nconst faMapMarked = faMapLocation;\nconst faHouseFloodWater = {\n prefix: 'fas',\n iconName: 'house-flood-water',\n icon: [576, 512, [], \"e50e\", \"M306.8 6.1C295.6-2 280.4-2 269.2 6.1l-176 128c-11.2 8.2-15.9 22.6-11.6 35.8S98.1 192 112 192l16 0 0 73c1.7 1 3.3 2 4.9 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c1.5-1 3-2 4.5-2.9l-.3-73.2 16.6 0c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128zM269.5 309.9C247 325.4 219.5 336 192 336c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 389.7 159 400 192 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nconst faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [448, 512, [127794], \"f1bb\", \"M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208l24.9 0L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320L80 320 5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5L192 448l0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 168.5 0c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320l33.4 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208l24.9 0c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z\"]\n};\nconst faBridgeLock = {\n prefix: 'fas',\n iconName: 'bridge-lock',\n icon: [640, 512, [], \"e4cc\", \"M32 64c0-17.7 14.3-32 32-32l512 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-40 0 0 64-8 0c-61.9 0-112 50.1-112 112l0 24.6c-9.9 5.8-18.2 14.1-23.8 24.1c-17.6-20-43.4-32.7-72.2-32.7c-53 0-96 43-96 96l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64c0-53-43-96-96-96l0-128 72 0 0-64L64 96C46.3 96 32 81.7 32 64zM408 96l0 64 80 0 0-64-80 0zm-48 64l0-64-80 0 0 64 80 0zM152 96l0 64 80 0 0-64-80 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faSackDollar = {\n prefix: 'fas',\n iconName: 'sack-dollar',\n icon: [512, 512, [128176], \"f81d\", \"M320 96L192 96 144.6 24.9C137.5 14.2 145.1 0 157.9 0L354.1 0c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128l128 0c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96L96 512c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4c0 0 0 0 0 0s0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84 88c0-11-9-20-20-20s-20 9-20 20l0 14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1c0 0 0 0 0 0s0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4l0 14.6c0 11 9 20 20 20s20-9 20-20l0-13.8c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15c0 0 0 0 0 0l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7l0-13.9z\"]\n};\nconst faPenToSquare = {\n prefix: 'fas',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160L0 416c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 64z\"]\n};\nconst faEdit = faPenToSquare;\nconst faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [128663], \"f5e4\", \"M171.3 96L224 96l0 96-112.7 0 30.4-75.9C146.5 104 158.2 96 171.3 96zM272 192l0-96 81.2 0c9.7 0 18.9 4.4 25 12l67.2 84L272 192zm256.2 1L428.2 68c-18.2-22.8-45.8-36-75-36L171.3 32c-39.3 0-74.6 23.9-89.1 60.3L40.6 196.4C16.8 205.8 0 228.9 0 256L0 368c0 17.7 14.3 32 32 32l33.3 0c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80l130.7 0c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80l33.3 0c17.7 0 32-14.3 32-32l0-48c0-65.2-48.8-119-111.8-127zM434.7 368a48 48 0 1 1 90.5 32 48 48 0 1 1 -90.5-32zM160 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faShareNodes = {\n prefix: 'fas',\n iconName: 'share-nodes',\n icon: [448, 512, [\"share-alt\"], \"f1e0\", \"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z\"]\n};\nconst faShareAlt = faShareNodes;\nconst faHeartCircleMinus = {\n prefix: 'fas',\n iconName: 'heart-circle-minus',\n icon: [576, 512, [], \"e4ff\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l128 0c8.8 0 16 7.2 16 16z\"]\n};\nconst faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 256 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 0 64 0 32 0zM96 75l0-11 192 0 0 11c0 19-5.6 37.4-16 53L112 128c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9L192 301.3l67.9 67.9c4.6 4.6 8.6 9.6 12.1 14.9L112 384z\"]\n};\nconst faHourglass2 = faHourglassHalf;\nconst faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [128300], \"f610\", \"M160 32c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32c17.7 0 32 14.3 32 32l0 224c0 17.7-14.3 32-32 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32c-17.7 0-32-14.3-32-32l0-224c0-17.7 14.3-32 32-32zM32 448l288 0c70.7 0 128-57.3 128-128s-57.3-128-128-128l0-64c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128l16.9 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32s14.3 32 32 32s32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96l0 192-64 0 0-24c0-30.9-25.1-56-56-56l-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c4.4 0 8 3.6 8 8l0 24-80 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0 224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 0-24c0-4.4 3.6-8 8-8l56 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0c-30.9 0-56 25.1-56 56l0 24-64 0 0-192zM480 416l0-32L32 384l0 32c0 53 43 96 96 96l256 0c53 0 96-43 96-96z\"]\n};\nconst faBagShopping = {\n prefix: 'fas',\n iconName: 'bag-shopping',\n icon: [448, 512, [\"shopping-bag\"], \"f290\", \"M160 112c0-35.3 28.7-64 64-64s64 28.7 64 64l0 48-128 0 0-48zm-48 48l-64 0c-26.5 0-48 21.5-48 48L0 416c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-208c0-26.5-21.5-48-48-48l-64 0 0-48C336 50.1 285.9 0 224 0S112 50.1 112 112l0 48zm24 48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm152 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faShoppingBag = faBagShopping;\nconst faArrowDownZA = {\n prefix: 'fas',\n iconName: 'arrow-down-z-a',\n icon: [576, 512, [\"sort-alpha-desc\", \"sort-alpha-down-alt\"], \"f881\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7 128 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 64c0-17.7 14.3-32 32-32l128 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 160l50.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 96 352 96c-17.7 0-32-14.3-32-32zm96 192c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 448l-88.4 0-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128c5.4-10.8 16.5-17.7 28.6-17.7zM395.8 400l40.4 0L416 359.6 395.8 400z\"]\n};\nconst faSortAlphaDesc = faArrowDownZA;\nconst faSortAlphaDownAlt = faArrowDownZA;\nconst faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M352 384L64 384 5.4 178.9C1.8 166.4 0 153.4 0 140.3C0 62.8 62.8 0 140.3 0l3.4 0c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192l2.8 0c34.9 0 63.3 28.3 63.3 63.3c0 15.9-6 31.2-16.8 42.9L352 384zM32 448c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L64 512c-17.7 0-32-14.3-32-32l0-32z\"]\n};\nconst faPersonRays = {\n prefix: 'fas',\n iconName: 'person-rays',\n icon: [512, 512, [], \"e54d\", \"M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1-28.6 47.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L328 256.9 328 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM7 7C16.4-2.3 31.6-2.3 41 7l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 41C-2.3 31.6-2.3 16.4 7 7zM471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7zM7 505c-9.4-9.4-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-9.4 9.4-24.6 9.4-33.9 0zm464 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nconst faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192l42.7 0c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0L21.3 320C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7l42.7 0C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3l-213.3 0zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352l117.3 0C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7l-330.7 0c-14.7 0-26.7-11.9-26.7-26.7z\"]\n};\nconst faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\"]\n};\nconst faFlaskVial = {\n prefix: 'fas',\n iconName: 'flask-vial',\n icon: [640, 512, [], \"e4f3\", \"M175 389.4c-9.8 16-15 34.3-15 53.1c-10 3.5-20.8 5.5-32 5.5c-53 0-96-43-96-96L32 64C14.3 64 0 49.7 0 32S14.3 0 32 0L96 0l64 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 245.9-49 79.6zM96 64l0 96 64 0 0-96L96 64zM352 0L480 0l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 150.9L629.7 406.2c6.7 10.9 10.3 23.5 10.3 36.4c0 38.3-31.1 69.4-69.4 69.4l-309.2 0c-38.3 0-69.4-31.1-69.4-69.4c0-12.8 3.6-25.4 10.3-36.4L320 214.9 320 64c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0zm32 64l0 160c0 5.9-1.6 11.7-4.7 16.8L330.5 320l171 0-48.8-79.2c-3.1-5-4.7-10.8-4.7-16.8l0-160-64 0z\"]\n};\nconst faHand = {\n prefix: 'fas',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 272c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64l19.2 0c97.2 0 176-78.8 176-176l0-208c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208z\"]\n};\nconst faHandPaper = faHand;\nconst faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [128329], \"f679\", \"M379.3 4.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6l-16-16zM281 66.7c-2.2-1.5-4.9-2.5-7.7-2.7c-.6 0-1.3-.1-1.9 0c-3.9 .2-7.4 1.7-10.1 4.2c-.9 .8-1.6 1.7-2.3 2.6c-1.7 2.4-2.7 5.3-2.9 8.5c0 .7 0 1.4 0 2.1c.2 2.2 .9 4.3 1.9 6.2l.3 .6c.3 .6 .8 1.4 1.4 2.4c1.2 2 2.9 4.8 5.1 8.2c4.4 6.7 11.1 15.5 20 24.4C302.4 141.1 330.3 160 368 160c31.2 0 56.6-10.4 73.9-20.2c8.7-5 15.6-9.9 20.4-13.8c2.4-1.9 4.3-3.6 5.7-4.9c.7-.6 1.3-1.2 1.7-1.6l.6-.5 .1-.1 .1-.1s0 0 0 0s0 0 0 0c5.9-5.8 9.5-13.9 9.5-22.8c0-17.7-14.3-32-32-32c-8.7 0-16.7 3.5-22.4 9.2c-.1 .1-.2 .2-.5 .4c-.5 .5-1.5 1.3-2.8 2.4c-2.7 2.2-6.8 5.2-12.1 8.2C399.4 90.4 384.8 96 368 96c-20.8 0-42.4-7-59.5-14.6c-8.4-3.7-15.4-7.5-20.3-10.3c-2.4-1.4-4.3-2.5-5.6-3.3c-.6-.4-1.1-.7-1.4-.9l-.3-.2zM115.2 169.6c8-6 17.9-9.6 28.8-9.6c26.5 0 48 21.5 48 48s-21.5 48-48 48l-34.2 0c-7.6 0-13.8 6.2-13.8 13.8c0 1.5 .2 2.9 .7 4.4l8 24c4.4 13.1 16.6 21.9 30.4 21.9l8.9 0 16 0c35.3 0 64 28.7 64 64s-28.7 64-64 64c-50.8 0-82.7-21.5-102.2-42.8c-9.9-10.8-16.6-21.6-20.9-29.7c-2.1-4-3.6-7.3-4.5-9.6c-.5-1.1-.8-2-1-2.5l-.2-.5c-.3-.9-.7-1.8-1.1-2.6c-1.2-2.2-2.8-4-4.7-5.4c-1.9-1.4-4.1-2.3-6.5-2.8c-1.4-.3-2.9-.3-4.4-.2c-2.5 .2-4.8 1-6.8 2.3c-1.1 .7-2.2 1.5-3.1 2.5c-2.4 2.5-4.1 5.8-4.5 9.5c-.1 .6-.1 1.1-.1 1.7c0 0 0 0 0 0c0 .8 .1 1.7 .2 2.5l0 .1c0 .3 .1 .8 .2 1.3c.2 1.1 .4 2.7 .8 4.6c.8 3.9 2 9.4 3.9 15.9c3.8 13 10.3 30.4 21.3 48C48.7 476.2 89.4 512 160 512c70.7 0 128-57.3 128-128c0-23.3-6.2-45.2-17.1-64l22.6 0c25.5 0 49.9-10.1 67.9-28.1l26.5-26.5c6-6 14.1-9.4 22.6-9.4l5.5 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32c-25.7 0-41.4-12.5-51.2-25.6c-5-6.7-8.4-13.4-10.5-18.6c-1.1-2.5-1.8-4.6-2.2-6c-.2-.7-.4-1.2-.5-1.5l-.1-.2c-.3-1.3-.8-2.6-1.5-3.8c-1.1-2-2.6-3.8-4.4-5.1c-2.7-2-6-3.2-9.6-3.2l-.2 0c-8 .1-14.6 6.1-15.6 13.9c0 0 0 0 0 0c0 .3-.1 .6-.2 1.1c-.1 .9-.3 2.1-.4 3.6c-.3 3-.6 7.3-.6 12.4c0 10.1 1.1 23.9 5.8 38.1c4.8 14.3 13.4 29.3 28.6 40.7C368.7 473.3 389.3 480 416 480c53 0 96-43 96-96l0-96c0-53-43-96-96-96l-5.5 0c-25.5 0-49.9 10.1-67.9 28.1l-26.5 26.5c-6 6-14.1 9.4-22.6 9.4l-48.3 0c6.9-14.5 10.8-30.8 10.8-48c0-61.9-50.1-112-112-112c-25.2 0-48.5 8.3-67.2 22.4c-14.1 10.6-17 30.7-6.4 44.8s30.7 17 44.8 6.4z\"]\n};\nconst faWorm = {\n prefix: 'fas',\n iconName: 'worm',\n icon: [512, 512, [], \"e599\", \"M256 96c0-53 43-96 96-96l38.4 0C439.9 0 480 40.1 480 89.6l0 86.4 0 16 0 184c0 75.1-60.9 136-136 136s-136-60.9-136-136l0-80c0-22.1-17.9-40-40-40s-40 17.9-40 40l0 168c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-168c0-75.1 60.9-136 136-136s136 60.9 136 136l0 80c0 22.1 17.9 40 40 40s40-17.9 40-40l0-184-32 0c-53 0-96-43-96-96zm144-8a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faHouseCircleXmark = {\n prefix: 'fas',\n iconName: 'house-circle-xmark',\n icon: [640, 512, [], \"e50b\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0 .7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [128268], \"f1e6\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2C297 398 352 333.4 352 256l0-32c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nconst faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [512, 512, [], \"f077\", \"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"]\n};\nconst faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M246.9 23.7C242.3 6.6 224.8-3.5 207.7 1.1s-27.2 22.1-22.6 39.2L238 237.8c2.5 9.2-4.5 18.2-14 18.2c-6.4 0-12-4.2-13.9-10.3L166.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L99.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L156.8 448c43.1 41.1 100.4 64 160 64l10.9 0 8.2 0c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L443.5 247.1c-1.6 5.3-6.4 8.9-12 8.9c-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L355.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9c-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"]\n};\nconst faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [9201], \"f2f2\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 34.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6L256 64l16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L224 0 176 0zm72 192l0 128c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-128c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faFaceKiss = {\n prefix: 'fas',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faKiss = faFaceKiss;\nconst faBridgeCircleXmark = {\n prefix: 'fas',\n iconName: 'bridge-circle-xmark',\n icon: [640, 512, [], \"e4cb\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32l40 0 0 64-72 0 0 128c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2l0-72.2-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM488 96l0 64-80 0 0-64 80 0zM360 96l0 64-80 0 0-64 80 0zM232 96l0 64-80 0 0-64 80 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faFaceGrinTongue = {\n prefix: 'fas',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448l0-47.3c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6l0 46.9c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 448l0-45.4c0-14.7-11.9-26.6-26.6-26.6l-2 0c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9l-2 0c-14.7 0-26.6 11.9-26.6 26.6l0 45.4c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faGrinTongue = faFaceGrinTongue;\nconst faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M128 0C110.3 0 96 14.3 96 32c0 16.1 11.9 29.4 27.4 31.7C78.4 106.8 8 190 8 288c0 47.4 30.8 72.3 56 84.7L64 400l192 0 0-27.3c25.2-12.5 56-37.4 56-84.7c0-37.3-10.2-72.4-25.3-104.1l-99.4 99.4c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L270.8 154.6c-23.2-38.1-51.8-69.5-74.2-90.9C212.1 61.4 224 48.1 224 32c0-17.7-14.3-32-32-32L128 0zM48 432L6.6 473.4c-4.2 4.2-6.6 10-6.6 16C0 501.9 10.1 512 22.6 512l274.7 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L272 432 48 432z\"]\n};\nconst faFaceGrinWink = {\n prefix: 'fas',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-16.9-79.2c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGrinWink = faFaceGrinWink;\nconst faEarDeaf = {\n prefix: 'fas',\n iconName: 'ear-deaf',\n icon: [512, 512, [\"deaf\", \"deafness\", \"hard-of-hearing\"], \"f2a4\", \"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5c-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3C74.8 132.5 149.4 64 240 64c97.2 0 176 78.8 176 176c0 46-17.7 87.9-46.6 119.3c-12 13-17.4 24.8-17.4 34.7l0 6.1c0 61.9-50.1 112-112 112c-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48l0-6.1c0-32.9 17.4-59.6 34.4-78c18.4-20 29.6-46.6 29.6-75.9c0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n};\nconst faDeaf = faEarDeaf;\nconst faDeafness = faEarDeaf;\nconst faHardOfHearing = faEarDeaf;\nconst faRoadCircleCheck = {\n prefix: 'fas',\n iconName: 'road-circle-check',\n icon: [640, 512, [], \"e564\", \"M213.2 32L288 32l0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 74.8 0c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8l0-42.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32l0 64L86.6 480C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [9860], \"f523\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSquareRss = {\n prefix: 'fas',\n iconName: 'square-rss',\n icon: [448, 512, [\"rss-square\"], \"f143\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faRssSquare = faSquareRss;\nconst faLandMineOn = {\n prefix: 'fas',\n iconName: 'land-mine-on',\n icon: [640, 512, [], \"e51b\", \"M344 24l0 144c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-144c0-13.3 10.7-24 24-24s24 10.7 24 24zM192 320c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32l0 32-256 0 0-32zm-77.3 90.5c8.1-16.3 24.8-26.5 42.9-26.5l324.7 0c18.2 0 34.8 10.3 42.9 26.5l27.6 55.2C563.5 487 548 512 524.2 512l-408.4 0c-23.8 0-39.3-25-28.6-46.3l27.6-55.2zM36.3 138.3c7.5-10.9 22.5-13.6 33.4-6.1l104 72c10.9 7.5 13.6 22.5 6.1 33.4s-22.5 13.6-33.4 6.1l-104-72c-10.9-7.5-13.6-22.5-6.1-33.4zm534.1-6.1c10.9-7.5 25.8-4.8 33.4 6.1s4.8 25.8-6.1 33.4l-104 72c-10.9 7.5-25.8 4.8-33.4-6.1s-4.8-25.8 6.1-33.4l104-72z\"]\n};\nconst faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3L96 224l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7s16.9 30.7 34.5 29.2l8-.7c34.1-2.8 64.2-18.9 85.4-42.9c21.2 24 51.2 40 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7l0-95.7 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-95.7c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7C179.2 3.6 149.2 19.7 128 43.7c-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"]\n};\nconst faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2L112 256C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3L32 464c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-50.7c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112l-33.8 0c-29.9 0-54.2-24.3-54.2-54.2zM416 416l0 32L96 448l0-32 320 0z\"]\n};\nconst faStairs = {\n prefix: 'fas',\n iconName: 'stairs',\n icon: [576, 512, [], \"e289\", \"M384 64c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0 0-96c0-17.7 14.3-32 32-32l96 0 0-96c0-17.7 14.3-32 32-32l96 0 0-96z\"]\n};\nconst faI = {\n prefix: 'fas',\n iconName: 'i',\n icon: [320, 512, [105], \"49\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l96 0 0 320-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0 0-320 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L160 32 32 32z\"]\n};\nconst faHryvniaSign = {\n prefix: 'fas',\n iconName: 'hryvnia-sign',\n icon: [384, 512, [8372, \"hryvnia\"], \"f6f2\", \"M121.9 116.2C138.3 103.1 158.7 96 179.6 96L223 96c27.1 0 49 21.9 49 49c0 11.5-4 22.4-11.1 31L32 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l123.5 0-50.6 28.9c-1.7 1-3.4 2-5.1 3.1L32 272c-17.7 0-32 14.3-32 32s14.3 32 32 32l20.3 0c-2.8 9.9-4.3 20.4-4.3 31c0 62.4 50.6 113 113 113l43.4 0c35.5 0 70-12.1 97.7-34.3L308 441c13.8-11 16-31.2 5-45s-31.2-16-45-5l-5.9 4.7c-16.4 13.1-36.7 20.2-57.7 20.2L161 416c-27.1 0-49-21.9-49-49c0-11.5 4-22.4 11.1-31L352 336c17.7 0 32-14.3 32-32s-14.3-32-32-32l-123.5 0 50.6-28.9c1.7-1 3.4-2 5.1-3.1l67.8 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-20.3 0c2.8-10 4.3-20.4 4.3-31c0-62.4-50.6-113-113-113l-43.4 0c-35.5 0-70 12.1-97.7 34.3L76 71c-13.8 11-16 31.2-5 45s31.2 16 45 5l5.9-4.7z\"]\n};\nconst faHryvnia = faHryvniaSign;\nconst faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 96c-26.5 0-48 21.5-48 48l0 112 96 0 0-112c0-26.5-21.5-48-48-48zM0 144C0 82.1 50.1 32 112 32s112 50.1 112 112l0 224c0 61.9-50.1 112-112 112S0 429.9 0 368L0 144zM554.9 399.4c-7.1 12.3-23.7 13.1-33.8 3.1L333.5 214.9c-10-10-9.3-26.7 3.1-33.8C360 167.7 387.1 160 416 160c88.4 0 160 71.6 160 160c0 28.9-7.7 56-21.1 79.4zm-59.5 59.5C472 472.3 444.9 480 416 480c-88.4 0-160-71.6-160-160c0-28.9 7.7-56 21.1-79.4c7.1-12.3 23.7-13.1 33.8-3.1L498.5 425.1c10 10 9.3 26.7-3.1 33.8z\"]\n};\nconst faFaceGrinWide = {\n prefix: 'fas',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nconst faGrinAlt = faFaceGrinWide;\nconst faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [129463], \"f5c9\", \"M186.1 52.1C169.3 39.1 148.7 32 127.5 32C74.7 32 32 74.7 32 127.5l0 6.2c0 15.8 3.7 31.3 10.7 45.5l23.5 47.1c4.5 8.9 7.6 18.4 9.4 28.2l36.7 205.8c2 11.2 11.6 19.4 22.9 19.8s21.4-7.4 24-18.4l28.9-121.3C192.2 323.7 207 312 224 312s31.8 11.7 35.8 28.3l28.9 121.3c2.6 11.1 12.7 18.8 24 18.4s20.9-8.6 22.9-19.8l36.7-205.8c1.8-9.8 4.9-19.3 9.4-28.2l23.5-47.1c7.1-14.1 10.7-29.7 10.7-45.5l0-2.1c0-55-44.6-99.6-99.6-99.6c-24.1 0-47.4 8.8-65.6 24.6l-3.2 2.8 19.5 15.2c7 5.4 8.2 15.5 2.8 22.5s-15.5 8.2-22.5 2.8l-24.4-19-37-28.8z\"]\n};\nconst faV = {\n prefix: 'fas',\n iconName: 'v',\n icon: [384, 512, [118], \"56\", \"M19.7 34.5c16.3-6.8 35 .9 41.8 17.2L192 364.8 322.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7L2.5 76.3c-6.8-16.3 .9-35 17.2-41.8z\"]\n};\nconst faBangladeshiTakaSign = {\n prefix: 'fas',\n iconName: 'bangladeshi-taka-sign',\n icon: [384, 512, [], \"e2e6\", \"M36 32.3C18.4 30.1 2.4 42.5 .2 60S10.5 93.6 28 95.8l7.9 1c16 2 28 15.6 28 31.8L64 160l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 160c0 53 43 96 96 96l32 0c106 0 192-86 192-192l0-32c0-53-43-96-96-96l-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0c17.7 0 32 14.3 32 32l0 32c0 70.7-57.3 128-128 128l-32 0c-17.7 0-32-14.3-32-32l0-160 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-31.5c0-48.4-36.1-89.3-84.1-95.3l-7.9-1z\"]\n};\nconst faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [128690], \"f206\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l25.7 0 34.6 64-149.4 0-27.4-38C191 99.7 183.7 96 176 96l-56 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l43.7 0 22.1 30.7-26.6 53.1c-10-2.5-20.5-3.8-31.2-3.8C57.3 224 0 281.3 0 352s57.3 128 128 128c65.3 0 119.1-48.9 127-112l49 0c8.5 0 16.3-4.5 20.7-11.8l84.8-143.5 21.7 40.1C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L375.4 48.8C369.8 38.4 359 32 347.2 32L312 32zM458.6 303.7l32.3 59.7c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-32.3-59.7c3.6-.6 7.4-.9 11.2-.9c39.8 0 72 32.2 72 72s-32.2 72-72 72s-72-32.2-72-72c0-18.6 7-35.5 18.6-48.3zM133.2 368l65 0c-7.3 32.1-36 56-70.2 56c-39.8 0-72-32.2-72-72s32.2-72 72-72c1.7 0 3.4 .1 5.1 .2l-24.2 48.5c-9 18.1 4.1 39.4 24.3 39.4zm33.7-48l50.7-101.3 72.9 101.2-.1 .1-123.5 0zm90.6-128l108.5 0L317 274.8 257.4 192z\"]\n};\nconst faStaffSnake = {\n prefix: 'fas',\n iconName: 'staff-snake',\n icon: [384, 512, [\"rod-asclepius\", \"rod-snake\", \"staff-aesculapius\"], \"e579\", \"M222.6 43.2l-.1 4.8L288 48c53 0 96 43 96 96s-43 96-96 96l-40 0 0-80 40 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-40 0-28 0-4.5 144 40.5 0c53 0 96 43 96 96s-43 96-96 96l-16 0 0-80 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-43 0-3.1 99.5L208.5 495l0 1c-.3 8.9-7.6 16-16.5 16s-16.2-7.1-16.5-16l0-1-1-31L136 464c-22.1 0-40-17.9-40-40s17.9-40 40-40l36 0-1-32-19 0c-53 0-96-43-96-96c0-47.6 34.6-87.1 80-94.7l0 94.7c0 8.8 7.2 16 16 16l16.5 0L164 128l-28 0-13.4 0c-9 18.9-28.3 32-50.6 32l-16 0c-30.9 0-56-25.1-56-56S25.1 48 56 48l8 0 8 0 89.5 0-.1-4.8L161 32c0-.7 0-1.3 0-1.9c.5-16.6 14.1-30 31-30s30.5 13.4 31 30c0 .6 0 1.3 0 1.9l-.4 11.2zM64 112a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faRodAsclepius = faStaffSnake;\nconst faRodSnake = faStaffSnake;\nconst faStaffAesculapius = faStaffSnake;\nconst faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M448 325.8l44 34.5c8.1 1.4 14.8 6.8 18 14.1L552.9 408c10.6 .4 19.5 7.6 22.2 17.4l39.1 30.6c.6 0 1.2-.1 1.8-.1c11.1 0 20.4 7.5 23.2 17.8l-3.9 0c6.2 8.5 6.4 20.4-.4 29c-8.2 10.4-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L89.6 44.9C127 16.7 173.5 0 224 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8L448 320s0 0 0 0l0 5.8zM0 224.2c0-38.7 9.8-75.1 27.1-106.9L341.8 365.3l-2.5 .3c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9l62 3.9 43 33.9C439.3 466.2 421.2 480 400 480l-80 0 0 8c0 13.3-10.7 24-24 24l-40 0s0 0 0 0L96 512c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM616 360a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-64-48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faTruckMedical = {\n prefix: 'fas',\n iconName: 'truck-medical',\n icon: [640, 512, [128657, \"ambulance\"], \"f0f9\", \"M0 48C0 21.5 21.5 0 48 0L368 0c26.5 0 48 21.5 48 48l0 48 50.7 0c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3l0 18.7 0 32 0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 48zM416 256l128 0 0-18.7L466.7 160 416 160l0 96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM176 80l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faAmbulance = faTruckMedical;\nconst faWheatAwnCircleExclamation = {\n prefix: 'fas',\n iconName: 'wheat-awn-circle-exclamation',\n icon: [640, 512, [], \"e598\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c22.5 22.5 53.3 31.5 82.4 27c0-1 0-2.1 0-3.1c0-33.1 9.1-64.1 25-90.6c-15.5-8.7-32.5-13.8-49.8-15.5l31.9-31.9 12.2 12.2c6 6 12.6 11.1 19.7 15.2c27.5-34 67.3-57.5 112.6-63.8c-4.1-3.8-8.4-7.3-12.9-10.5L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [9731, 9924], \"f7d0\", \"M341.1 140.6c-2 3.9-1.6 8.6 1.2 12c7 8.5 12.9 18.1 17.2 28.4L408 160.2l0-40.2c0-13.3 10.7-24 24-24s24 10.7 24 24l0 19.6 22.5-9.7c12.2-5.2 26.3 .4 31.5 12.6s-.4 26.3-12.6 31.5l-56 24-73.6 31.5c-.5 9.5-2.1 18.6-4.8 27.3c-1.2 3.8-.1 8 2.8 10.8C396.7 296.9 416 338.2 416 384c0 44.7-18.3 85-47.8 114.1c-9.9 9.7-23.7 13.9-37.5 13.9l-149.3 0c-13.9 0-27.7-4.2-37.5-13.9C114.3 469 96 428.7 96 384c0-45.8 19.3-87.1 50.1-116.3c2.9-2.8 4-6.9 2.8-10.8c-2.7-8.7-4.3-17.9-4.8-27.3L70.5 198.1l-56-24C2.4 168.8-3.3 154.7 1.9 142.5s19.3-17.8 31.5-12.6L56 139.6 56 120c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40.2L152.6 181c4.3-10.3 10.1-19.9 17.2-28.4c2.8-3.4 3.3-8.1 1.2-12C164 127.2 160 112.1 160 96c0-53 43-96 96-96s96 43 96 96c0 16.1-4 31.2-10.9 44.6zM224 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-16 80a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM288 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48 24l0 3.2c0 3.2 .8 6.3 2.3 9l9 16.9c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l9-16.9c1.5-2.8 2.3-5.9 2.3-9l0-3.2c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nconst faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160l144.9 0L502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2c-11.1 13.9-19.4 30.3-23.9 48.1C127.6 497.4 142.3 512 160 512l192 0c17.7 0 32.4-14.6 28.1-31.7c-4.5-17.8-12.8-34.1-23.9-48.1C436.6 403.7 480 338.5 480 256c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 192z\"]\n};\nconst faRoadBarrier = {\n prefix: 'fas',\n iconName: 'road-barrier',\n icon: [640, 512, [], \"e562\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-181.7L149.2 96 64 96l0-32c0-17.7-14.3-32-32-32zM405.2 96l-74.3 0-5.4 10.7L234.8 288l74.3 0 5.4-10.7L405.2 96zM362.8 288l74.3 0 5.4-10.7L533.2 96l-74.3 0-5.4 10.7L362.8 288zM202.8 96l-5.4 10.7L106.8 288l74.3 0 5.4-10.7L277.2 96l-74.3 0zm288 192l85.2 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 53.7L490.8 288z\"]\n};\nconst faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [127979], \"f549\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l208 0 0-96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 96 208 0c26.5 0 48-21.5 48-48l0-320c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64zM96 320l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64zM232 176a88 88 0 1 1 176 0 88 88 0 1 1 -176 0zm88-48c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16z\"]\n};\nconst faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.8L320 160 48.5 160C100.2 82.8 188.1 32 288 32c10.8 0 21.5 .6 32 1.8zM352 160l0-120.9C424.9 55.7 487.2 99.8 527.5 160L352 160zM29.9 192L96 192l0 128L0 320c0-46 10.8-89.4 29.9-128zM192 320l-64 0 0-128 320 0 0 128-64 0 0 32 192 0 0 80c0 26.5-21.5 48-48 48l-176 0 0-128c0-35.3-28.7-64-64-64s-64 28.7-64 64l0 128L48 480c-26.5 0-48-21.5-48-48l0-80 192 0 0-32zm288 0l0-128 66.1 0c19.2 38.6 29.9 82 29.9 128l-96 0z\"]\n};\nconst faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11c0 55.2 21.9 108.1 60.9 147.1l21 21c9 9 14.1 21.2 14.1 33.9l0 11c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11c0-29.7-11.8-58.2-32.8-79.2l-21-21C463.2 117.8 448 81.2 448 43l0-11zM576 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11c0-55.2-21.9-108.1-60.9-147.1l-21-21c-9-9-14.1-21.2-14.1-33.9l0-11c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11c0 29.7 11.8 58.2 32.8 79.2l21 21c27 27 42.2 63.6 42.2 101.8l0 11zM229.8 360c-4.7-2.3-10-2.7-15.2-2c-37.8 5.6-75.2 14.3-106.9 22.8C81.3 388 58.3 395.1 42 400.4c-8.2 2.7-14.7 4.9-19.2 6.5c-2.3 .8-4 1.4-5.2 1.8l-1.3 .5C6.8 412.5 0 421.4 0 432s6.8 19.5 16.3 22.7l1.3 .5c1.2 .4 3 1.1 5.2 1.8c4.5 1.6 11 3.8 19.2 6.5c16.3 5.4 39.2 12.5 65.7 19.6C160.3 497.3 228.8 512 288 512l67.3 0c4.1 0 6.3-5.1 3.6-8.3L256.5 380.8c-7.4-8.9-16.5-15.9-26.7-20.8zM445 512l19 0 51.3 0c4.1 0 6.3-5.1 3.6-8.3L416.5 380.8C401.3 362.5 378.8 352 355 352l-19 0-48 0c-1.1 0-2.3 0-3.4 0c-4.1 0-6.2 5.1-3.5 8.3L383.5 483.2C398.7 501.5 421.2 512 445 512zm-3.9-151.7L543.5 483.2c14.6 17.5 35.9 27.9 58.6 28.7c21.1-1.1 37.9-18.6 37.9-39.9l0-80c0-22.1-17.9-40-40-40l-155.3 0c-4.1 0-6.3 5.1-3.6 8.3z\"]\n};\nconst faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [320, 512, [8250], \"f105\", \"M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"]\n};\nconst faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [128014], \"f6f0\", \"M448 238.1l0-78.1 16 0 9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1L576 80c0-19.1-8.4-36.3-21.7-48l5.7 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L480 0 448 0C377.3 0 320 57.3 320 128l-96 0-20.8 0-54.4 0c-30.7 0-57.6 16.3-72.5 40.8C33.2 174.5 0 211.4 0 256l0 56c0 13.3 10.7 24 24 24s24-10.7 24-24l0-56c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9l33.7 0c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8L320 480c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-164.3c19.2-19.2 31.5-45.7 32-75.7c0 0 0 0 0 0l0-1.9zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faQ = {\n prefix: 'fas',\n iconName: 'q',\n icon: [448, 512, [113], \"51\", \"M64 256c0 88.4 71.6 160 160 160c28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1C371.9 325.8 384 292.3 384 256c0-88.4-71.6-160-160-160S64 167.6 64 256zM344.9 444.6C310 467 268.5 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32s224 100.3 224 224c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"]\n};\nconst faG = {\n prefix: 'fas',\n iconName: 'g',\n icon: [448, 512, [103], \"47\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128L256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l144 0c25.8 0 49.6 21.4 47.2 50.6C437.8 389.6 341.4 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57c13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"]\n};\nconst faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [512, 512, [], \"f481\", \"M96 352L96 96c0-35.3 28.7-64 64-64l256 0c35.3 0 64 28.7 64 64l0 197.5c0 17-6.7 33.3-18.7 45.3l-58.5 58.5c-12 12-28.3 18.7-45.3 18.7L160 416c-35.3 0-64-28.7-64-64zM272 128c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0zm24 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-160 0C60.9 512 0 451.1 0 376L0 152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 224c0 48.6 39.4 88 88 88l160 0z\"]\n};\nconst faTemperatureHalf = {\n prefix: 'fas',\n iconName: 'temperature-half',\n icon: [320, 512, [127777, \"temperature-2\", \"thermometer-2\", \"thermometer-half\"], \"f2c9\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3L144 208c0-8.8 7.2-16 16-16s16 7.2 16 16l0 114.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature2 = faTemperatureHalf;\nconst faThermometer2 = faTemperatureHalf;\nconst faThermometerHalf = faTemperatureHalf;\nconst faDongSign = {\n prefix: 'fas',\n iconName: 'dong-sign',\n icon: [384, 512, [], \"e169\", \"M288 32c-17.7 0-32 14.3-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 49.1c-18.8-10.9-40.7-17.1-64-17.1c-70.7 0-128 57.3-128 128s57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32l0-96 0-160c17.7 0 32-14.3 32-32s-14.3-32-32-32c0-17.7-14.3-32-32-32zM128 288a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448z\"]\n};\nconst faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M64 144c0-26.5 21.5-48 48-48s48 21.5 48 48l0 112-96 0 0-112zM0 144L0 368c0 61.9 50.1 112 112 112s112-50.1 112-112l0-178.4c1.8 19.1 8.2 38 19.8 54.8L372.3 431.7c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 113.3C391.8 61.5 321.9 49 271.3 85.2c-28 20-44.3 50.8-47.3 83l0-24.2c0-61.9-50.1-112-112-112S0 82.1 0 144zm296.6 64.2c-16-23.3-10-55.3 11.9-71c21.2-15.1 50.5-10.3 66 12.2l67 97.6L361.6 303l-65-94.8zM491 407.7c-.8 .6-1.6 1.1-2.4 1.6l4-2.8c-.5 .4-1 .8-1.6 1.2z\"]\n};\nconst faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [\"poo-bolt\"], \"f75a\", \"M236.9 .2c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1c0 21.7-8.5 37.2-21.9 47.6c-13.8 10.8-34 17-57.8 17L128 112c-35.3 0-64 28.7-64 64c0 12.2 3.4 23.5 9.3 33.2C31.7 216.2 0 252.4 0 296c0 40.9 28 75.4 65.8 85.2c-5.3-18.5 1-38.5 16.2-50.7l160-128c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L285.7 320l18.3 0c20.4 0 38.5 12.9 45.3 32.1c3.7 10.6 3.5 21.8 0 31.9l10.7 0c48.6 0 88-39.4 88-88c0-43.6-31.7-79.8-73.3-86.8c5.9-9.7 9.3-21.1 9.3-33.2c0-35.3-28.7-64-64-64l-1.4 0c.9-5.4 1.4-10.9 1.4-16.6c0-48.7-36.1-88.9-83.1-95.2zm45.1 227.4c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7l70.1 0L129.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7l-70.1 0 52.4-104.8c3.4-6.7 1.6-14.9-4.3-19.6z\"]\n};\nconst faPooBolt = faPooStorm;\nconst faFaceFrownOpen = {\n prefix: 'fas',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-122 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"]\n};\nconst faFrownOpen = faFaceFrownOpen;\nconst faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [9757], \"f0a6\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32l0 208-64 0L32 32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-64-64c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-48c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6l0 8.6c0 88.4-71.6 160-160 160l-61.7 0c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363l0-27c0-35.3 28.7-64 64-64l88 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72z\"]\n};\nconst faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [576, 512, [], \"f0d6\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm64 320l-64 0 0-64c35.3 0 64 28.7 64 64zM64 192l0-64 64 0c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64l0 64-64 0zm64-192c-35.3 0-64-28.7-64-64l64 0 0 64zM288 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z\"]\n};\nconst faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M448 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32L32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z\"]\n};\nconst faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [576, 512, [127958], \"f5ca\", \"M346.3 271.8l-60.1-21.9L214 448 32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-261.9 0 64.1-176.2zm121.1-.2l-3.3 9.1 67.7 24.6c18.1 6.6 38-4.2 39.6-23.4c6.5-78.5-23.9-155.5-80.8-208.5c2 8 3.2 16.3 3.4 24.8l.2 6c1.8 57-7.3 113.8-26.8 167.4zM462 99.1c-1.1-34.4-22.5-64.8-54.4-77.4c-.9-.4-1.9-.7-2.8-1.1c-33-11.7-69.8-2.4-93.1 23.8l-4 4.5C272.4 88.3 245 134.2 226.8 184l-3.3 9.1L434 269.7l3.3-9.1c18.1-49.8 26.6-102.5 24.9-155.5l-.2-6zM107.2 112.9c-11.1 15.7-2.8 36.8 15.3 43.4l71 25.8 3.3-9.1c19.5-53.6 49.1-103 87.1-145.5l4-4.5c6.2-6.9 13.1-13 20.5-18.2c-79.6 2.5-154.7 42.2-201.2 108z\"]\n};\nconst faHelmetUn = {\n prefix: 'fas',\n iconName: 'helmet-un',\n icon: [512, 512, [], \"e503\", \"M479.5 224C471.2 98.9 367.2 0 240 0C107.5 0 0 107.5 0 240l0 56.3C0 344.8 39.2 384 87.7 384L200 384l14.9 0L343.5 505.4c4.5 4.2 10.4 6.6 16.5 6.6l96 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-86.5 0-1.5-1.5L368 288l80 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-.5 0zM320 417.2l-78-73.7L274.4 288l45.6 0 0 129.2zM285.3 103.1l34.7 52 0-43.2c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52 0 43.2c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [512, 512, [], \"f140\", \"M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [129363], \"f7e5\", \"M439.2 1.2c11.2-3.2 23.2-.1 31.4 8.1L518 56.7l-26.5 7.9c-58 16.6-98.1 39.6-129.6 67.4c-31.2 27.5-53.2 59.1-75.1 90.9l-2.3 3.3C241.6 288.7 195 356.6 72.8 417.7L37.9 435.2 9.4 406.6c-7.3-7.3-10.6-17.6-9-27.8s8.1-18.9 17.3-23.5C136.1 296.2 180.9 231 223.3 169.3l2.3-3.4c21.8-31.8 44.9-64.9 77.7-93.9c33.4-29.5 75.8-53.6 135.9-70.8zM61.8 459l25.4-12.7c129.5-64.7 179.9-138.1 223.8-202l2.2-3.3c22.1-32.1 42.1-60.5 69.9-85.1c27.5-24.3 63.4-45.2 117.3-60.6c0 0 0 0 0 0l.2-.1 43.1-12.9 23 23c8 8 11.2 19.7 8.3 30.7s-11.3 19.6-22.2 22.7c-51.9 14.8-85.6 34.7-111.1 57.2c-26.1 23-45.1 49.9-67.3 82.1l-2.2 3.2C327.8 365.9 275.5 442 142.3 508.6c-12.3 6.2-27.2 3.7-36.9-6L61.8 459z\"]\n};\nconst faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-208-64 0 0 208zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64zm-64 64c17.7 0 32-14.3 32-32l0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6c13.2 0 25.4 4 35.6 10.8c8.7-24.9 32.5-42.8 60.4-42.8c11.7 0 22.6 3.1 32 8.6l0-8.6C384 71.6 312.4 0 224 0L162.3 0C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149l0 27c0 35.3 28.7 64 64 64l88 0c22.1 0 40-17.9 40-40s-17.9-40-40-40l-56 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l56 0c39.8 0 72 32.2 72 72z\"]\n};\nconst faArrowUpFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-up-from-bracket',\n icon: [448, 512, [], \"e09a\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3 192 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-64z\"]\n};\nconst faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z\"]\n};\nconst faFolderBlank = faFolder;\nconst faFileWaveform = {\n prefix: 'fas',\n iconName: 'file-waveform',\n icon: [448, 512, [\"file-medical-alt\"], \"f478\", \"M96 0C60.7 0 32 28.7 32 64l0 224 112 0c6.1 0 11.6 3.4 14.3 8.8L176 332.2l49.7-99.4c2.7-5.4 8.3-8.8 14.3-8.8s11.6 3.4 14.3 8.8L281.9 288l70.1 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-80 0c-6.1 0-11.6-3.4-14.3-8.8L240 275.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L134.1 320 32 320l0 128c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L256 0 96 0zM288 0l0 128 128 0L288 0z\"]\n};\nconst faFileMedicalAlt = faFileWaveform;\nconst faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [512, 512, [], \"f7b9\", \"M216 186.7c-23.9 13.8-40 39.7-40 69.3L32 256C14.3 256-.2 241.6 2 224.1C10.7 154 47.8 92.7 101.3 52c14.1-10.7 33.8-5.3 42.7 10l72 124.7zM256 336c14.6 0 28.2-3.9 40-10.7l72 124.8c8.8 15.3 3.7 35.1-12.6 41.9c-30.6 12.9-64.2 20-99.4 20s-68.9-7.1-99.4-20c-16.3-6.9-21.4-26.6-12.6-41.9l72-124.8c11.8 6.8 25.4 10.7 40 10.7zm224-80l-144 0c0-29.6-16.1-55.5-40-69.3L368 62c8.8-15.3 28.6-20.7 42.7-10c53.6 40.7 90.6 102 99.4 172.1c2.2 17.5-12.4 31.9-30 31.9zM256 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faChartSimple = {\n prefix: 'fas',\n iconName: 'chart-simple',\n icon: [448, 512, [], \"e473\", \"M160 80c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-352zM0 272c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48L0 272zM368 96l32 0c26.5 0 48 21.5 48 48l0 288c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48z\"]\n};\nconst faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [512, 512, [9894], \"f229\", \"M376 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L370.3 96.4 345 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l25.4 25.4L307.8 159c-28.4-19.5-62.7-31-99.8-31c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l28.6-28.6L407 201c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-25.4-25.4 22.1-22.1L471 153c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L376 0zm88 48s0 0 0 0s0 0 0 0s0 0 0 0zM96 304a112 112 0 1 1 224 0A112 112 0 1 1 96 304z\"]\n};\nconst faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [512, 512, [129514], \"f492\", \"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L28.1 342.6C10.1 360.6 0 385 0 410.5L0 416c0 53 43 96 96 96l5.5 0c25.5 0 49.9-10.1 67.9-28.1L448 205.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-32-32-96-96-32-32zM205.3 256L352 109.3 402.7 160l-96 96-101.5 0z\"]\n};\nconst faGauge = {\n prefix: 'fas',\n iconName: 'gauge',\n icon: [512, 512, [\"dashboard\", \"gauge-med\", \"tachometer-alt-average\"], \"f624\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3L280 88c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 204.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-16 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faDashboard = faGauge;\nconst faGaugeMed = faGauge;\nconst faTachometerAltAverage = faGauge;\nconst faWandMagicSparkles = {\n prefix: 'fas',\n iconName: 'wand-magic-sparkles',\n icon: [576, 512, [\"magic-wand-sparkles\"], \"e2ca\", \"M234.7 42.7L197 56.8c-3 1.1-5 4-5 7.2s2 6.1 5 7.2l37.7 14.1L248.8 123c1.1 3 4 5 7.2 5s6.1-2 7.2-5l14.1-37.7L315 71.2c3-1.1 5-4 5-7.2s-2-6.1-5-7.2L277.3 42.7 263.2 5c-1.1-3-4-5-7.2-5s-6.1 2-7.2 5L234.7 42.7zM46.1 395.4c-18.7 18.7-18.7 49.1 0 67.9l34.6 34.6c18.7 18.7 49.1 18.7 67.9 0L529.9 116.5c18.7-18.7 18.7-49.1 0-67.9L495.3 14.1c-18.7-18.7-49.1-18.7-67.9 0L46.1 395.4zM484.6 82.6l-105 105-23.3-23.3 105-105 23.3 23.3zM7.5 117.2C3 118.9 0 123.2 0 128s3 9.1 7.5 10.8L64 160l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L128 160l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L128 96 106.8 39.5C105.1 35 100.8 32 96 32s-9.1 3-10.8 7.5L64 96 7.5 117.2zm352 256c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 416l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 416l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 352l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 352l-56.5 21.2z\"]\n};\nconst faMagicWandSparkles = faWandMagicSparkles;\nconst faE = {\n prefix: 'fas',\n iconName: 'e',\n icon: [320, 512, [101], \"45\", \"M64 32C28.7 32 0 60.7 0 96L0 256 0 416c0 35.3 28.7 64 64 64l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 416l0-128 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 224 64 96l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32z\"]\n};\nconst faPenClip = {\n prefix: 'fas',\n iconName: 'pen-clip',\n icon: [512, 512, [\"pen-alt\"], \"f305\", \"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1s0 0 0 0l-1-1s0 0 0 0l-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z\"]\n};\nconst faPenAlt = faPenClip;\nconst faBridgeCircleExclamation = {\n prefix: 'fas',\n iconName: 'bridge-circle-exclamation',\n icon: [640, 512, [], \"e4ca\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32l40 0 0 64-72 0 0 128c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2l0-72.2-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM488 96l0 64-80 0 0-64 80 0zM360 96l0 64-80 0 0-64 80 0zM232 96l0 64-80 0 0-64 80 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0z\"]\n};\nconst faSchoolCircleCheck = {\n prefix: 'fas',\n iconName: 'school-circle-check',\n icon: [640, 512, [], \"e56b\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l272 0s0 0 0 0l-64 0 0-96c0-35.3 28.7-64 64-64l.3 0 .5 0c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8L640 144c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm0 128l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z\"]\n};\nconst faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160l94 0L140.5 32 49.7 32zM272 160l0-128-98.9 0L147.5 160 272 160zm32 0l124.5 0L402.9 32 304 32l0 128zm157.1 0l94 0c11.5 0 20.9-9.3 20.9-20.9c0-2.1-.3-4.1-.9-6.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32l-90.8 0 25.6 128zM32 192l4 32-4 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l12 0L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32l320 0c0 17.7 14.3 32 32 32s32-14.3 32-32l20-160 12 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-4 0 4-32L32 192z\"]\n};\nconst faVanShuttle = {\n prefix: 'fas',\n iconName: 'van-shuttle',\n icon: [640, 512, [128656, \"shuttle-van\"], \"f5b6\", \"M64 104l0 88 96 0 0-96L72 96c-4.4 0-8 3.6-8 8zm482 88L465.1 96 384 96l0 96 162 0zm-226 0l0-96-96 0 0 96 96 0zM592 384l-16 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 104C0 64.2 32.2 32 72 32l120 0 160 0 113.1 0c18.9 0 36.8 8.3 49 22.8L625 186.5c9.7 11.5 15 26.1 15 41.2L640 336c0 26.5-21.5 48-48 48zm-64 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faShuttleVan = faVanShuttle;\nconst faBuildingUser = {\n prefix: 'fas',\n iconName: 'building-user',\n icon: [640, 512, [], \"e4da\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 89.9 0c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2l0-95.9L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM576 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM352 477.1c0 19.3 15.6 34.9 34.9 34.9l218.2 0c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1l-101.8 0c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nconst faSquareCaretLeft = {\n prefix: 'fas',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nconst faCaretSquareLeft = faSquareCaretLeft;\nconst faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [576, 512, [], \"f591\", \"M315 315l158.4-215L444.1 70.6 229 229 315 315zm-187 5s0 0 0 0l0-71.7c0-15.3 7.2-29.6 19.5-38.6L420.6 8.4C428 2.9 437 0 446.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L334.4 396.5c-9 12.3-23.4 19.5-38.6 19.5L224 416l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L128 320zM7 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7L24 512c-13.3 0-24-10.7-24-24l0-4.7c0-6.4 2.5-12.5 7-17z\"]\n};\nconst faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [128273], \"f084\", \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-40 40 0c13.3 0 24-10.7 24-24l0-40 40 0c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zM376 96a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nconst faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [512, 512, [128226, 128363], \"f0a1\", \"M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75l-8.7 0-32 0-96 0c-35.3 0-64 28.7-64 64l0 96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-128 8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-147.6c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4L480 32zm-64 76.7L416 240l0 131.3C357.2 317.8 280.5 288 200.7 288l-8.7 0 0-96 8.7 0c79.8 0 156.5-29.8 215.3-83.3z\"]\n};\nconst faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [512, 512, [127760], \"f0ac\", \"M352 256c0 22.2-1.2 43.6-3.3 64l-185.3 0c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64l185.3 0c2.2 20.4 3.3 41.8 3.3 64zm28.8-64l123.1 0c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64l-123.1 0c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32l-116.7 0c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0l-176.6 0c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0L18.6 160C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192l123.1 0c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64L8.1 320C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6l176.6 0c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352l116.7 0zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6l116.7 0z\"]\n};\nconst faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [128333], \"f69b\", \"M309.8 3.7c5.9-4.9 14.6-4.9 20.5 0l121 100.8C469.5 119.7 480 142.2 480 166l0 114.1L480 512l-16 0-112 0 0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96-112 0-16 0 0-231.9L160 166c0-23.7 10.5-46.3 28.8-61.5L309.8 3.7zM512 512l0-267.5 28.1-31.2c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3l63.8 70.9c7.9 8.8 12.3 20.3 12.3 32.1L640 448c0 35.3-28.7 64-64 64l-64 0zM128 244.5L128 512l-64 0c-35.3 0-64-28.7-64-64L0 316.3c0-11.9 4.4-23.3 12.3-32.1l63.8-70.9c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3L128 244.5zM327 124.3c-3.1-5.4-10.9-5.4-13.9 0l-15.9 28.1-32.3-.3c-6.2-.1-10.1 6.7-7 12.1L274.3 192l-16.4 27.8c-3.2 5.4 .7 12.1 7 12.1l32.3-.3L313 259.7c3.1 5.4 10.9 5.4 13.9 0l15.9-28.1 32.3 .3c6.2 .1 10.1-6.7 7-12.1L365.7 192l16.4-27.8c3.2-5.4-.7-12.1-7-12.1l-32.3 .3L327 124.3z\"]\n};\nconst faPersonHalfDress = {\n prefix: 'fas',\n iconName: 'person-half-dress',\n icon: [320, 512, [], \"e548\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm8 352l0-224 6.9 0c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128s0 0 0 0zM58.2 182.3c19.9-33.1 55.3-53.5 93.8-54.3l0 256s0 0 0 0l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-17.8 0c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2z\"]\n};\nconst faRoadBridge = {\n prefix: 'fas',\n iconName: 'road-bridge',\n icon: [640, 512, [], \"e563\", \"M352 0L608 0c17.7 0 32 14.3 32 32l0 448c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-448c0-17.7 14.3-32 32-32zM480 200c-13.3 0-24 10.7-24 24l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24zm24 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64zM480 40c-13.3 0-24 10.7-24 24l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24zM32 96l256 0 0 64-40 0 0 64 40 0 0 96c-53 0-96 43-96 96l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64c0-53-43-96-96-96l0-96 72 0 0-64-40 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm168 64l-80 0 0 64 80 0 0-64z\"]\n};\nconst faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [448, 512, [], \"f124\", \"M429.6 92.1c4.9-11.9 2.1-25.6-7-34.7s-22.8-11.9-34.7-7l-352 144c-14.2 5.8-22.2 20.8-19.3 35.8s16.1 25.8 31.4 25.8l176 0 0 176c0 15.3 10.8 28.4 25.8 31.4s30-5.1 35.8-19.3l144-352z\"]\n};\nconst faC = {\n prefix: 'fas',\n iconName: 'c',\n icon: [384, 512, [99], \"43\", \"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nconst faTabletButton = {\n prefix: 'fas',\n iconName: 'tablet-button',\n icon: [448, 512, [], \"f10a\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM224 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBuildingLock = {\n prefix: 'fas',\n iconName: 'building-lock',\n icon: [576, 512, [], \"e4d6\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 88.6 0c-5.4-9.4-8.6-20.3-8.6-32l0-128c0-23.7 12.9-44.4 32-55.4l0-24.6c0-30.5 12.2-58.2 32-78.4L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L110.4 80c.5 0 1.1 0 1.6 0c176.7 0 320 143.3 320 320c0 .5 0 1.1 0 1.6l44.4-11.8c20.8-5.5 36.3-24.7 34.7-47.5C498.5 159.5 352.5 13.5 169.7 .9zM399.8 410.2c.1-3.4 .2-6.8 .2-10.2c0-159.1-128.9-288-288-288c-3.4 0-6.8 .1-10.2 .2L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1L399.8 410.2zM176 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [576, 512, [], \"f53a\", \"M0 112.5L0 422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4l0-309.9c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96zM64 352c35.3 0 64 28.7 64 64l-64 0 0-64zm64-208c0 35.3-28.7 64-64 64l0-64 64 0zM512 304l0 64-64 0c0-35.3 28.7-64 64-64zM448 96l64 0 0 64c-35.3 0-64-28.7-64-64z\"]\n};\nconst faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [\"area-chart\"], \"f1fe\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 400c0 44.2 35.8 80 80 80l400 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 416c-8.8 0-16-7.2-16-16L64 64zm96 288l288 0c17.7 0 32-14.3 32-32l0-68.2c0-7.6-2.7-15-7.7-20.8l-65.8-76.8c-12.1-14.2-33.7-15-46.9-1.8l-21 21c-10 10-26.4 9.2-35.4-1.6l-39.2-47c-12.6-15.1-35.7-15.4-48.7-.6L135.9 215c-5.1 5.8-7.9 13.3-7.9 21.1l0 84c0 17.7 14.3 32 32 32z\"]\n};\nconst faAreaChart = faChartArea;\nconst faHouseFlag = {\n prefix: 'fas',\n iconName: 'house-flag',\n icon: [640, 512, [], \"e50d\", \"M480 0c-17.7 0-32 14.3-32 32l0 160 0 320 64 0 0-320 112 0c8.8 0 16-7.2 16-16l0-128c0-8.8-7.2-16-16-16L512 32c0-17.7-14.3-32-32-32zM416 159L276.8 39.7c-12-10.3-29.7-10.3-41.7 0l-224 192C1 240.4-2.7 254.5 2 267.1S18.6 288 32 288l32 0 0 192c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-96c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 96c0 17.7 14.3 32 32 32l64.7 0 .2 0-1 0 0-353z\"]\n};\nconst faPersonCircleMinus = {\n prefix: 'fas',\n iconName: 'person-circle-minus',\n icon: [576, 512, [], \"e540\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16z\"]\n};\nconst faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [128683, \"cancel\"], \"f05e\", \"M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faCancel = faBan;\nconst faCameraRotate = {\n prefix: 'fas',\n iconName: 'camera-rotate',\n icon: [640, 512, [], \"e0d8\", \"M213.1 64.8L202.7 96 128 96c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-74.7 0L426.9 64.8C420.4 45.2 402.1 32 381.4 32L258.6 32c-20.7 0-39 13.2-45.5 32.8zM448 256c0 8.8-7.2 16-16 16l-76.7 0c-6.2 0-11.3-5.1-11.3-11.3c0-3 1.2-5.9 3.3-8L371 229c-13.6-13.4-31.9-21-51-21c-19.2 0-37.7 7.6-51.3 21.3L249 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l19.7-19.7C257.4 172.7 288 160 320 160c31.8 0 62.4 12.6 85 35l23.7-23.7c2.1-2.1 5-3.3 8-3.3c6.2 0 11.3 5.1 11.3 11.3l0 76.7zM192 320c0-8.8 7.2-16 16-16l76.7 0c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8L269 347c13.6 13.4 31.9 21 51 21c19.2 0 37.7-7.6 51.3-21.3L391 327c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-19.7 19.7C382.6 403.3 352 416 320 416c-31.8 0-62.4-12.6-85-35l-23.7 23.7c-2.1 2.1-5 3.3-8 3.3c-6.2 0-11.3-5.1-11.3-11.3l0-76.7z\"]\n};\nconst faSprayCanSparkles = {\n prefix: 'fas',\n iconName: 'spray-can-sparkles',\n icon: [512, 512, [\"air-freshener\"], \"f5d0\", \"M96 32l0 96 128 0 0-96c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32zm0 128c-53 0-96 43-96 96L0 464c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-208c0-53-43-96-96-96L96 160zm64 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM384 48c0-1.4-1-3-2.2-3.6L352 32 339.6 2.2C339 1 337.4 0 336 0s-3 1-3.6 2.2L320 32 290.2 44.4C289 45 288 46.6 288 48c0 1.4 1 3 2.2 3.6L320 64l12.4 29.8C333 95 334.6 96 336 96s3-1 3.6-2.2L352 64l29.8-12.4C383 51 384 49.4 384 48zm76.4 45.8C461 95 462.6 96 464 96s3-1 3.6-2.2L480 64l29.8-12.4C511 51 512 49.4 512 48c0-1.4-1-3-2.2-3.6L480 32 467.6 2.2C467 1 465.4 0 464 0s-3 1-3.6 2.2L448 32 418.2 44.4C417 45 416 46.6 416 48c0 1.4 1 3 2.2 3.6L448 64l12.4 29.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L448 224l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L448 256l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 256l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6c0-1.4-1-3-2.2-3.6L480 224l-12.4-29.8zM448 144c0-1.4-1-3-2.2-3.6L416 128 403.6 98.2C403 97 401.4 96 400 96s-3 1-3.6 2.2L384 128l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L384 160l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L416 160l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6z\"]\n};\nconst faAirFreshener = faSprayCanSparkles;\nconst faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z\"]\n};\nconst faRepeat = {\n prefix: 'fas',\n iconName: 'repeat',\n icon: [512, 512, [128257], \"f363\", \"M0 224c0 17.7 14.3 32 32 32s32-14.3 32-32c0-53 43-96 96-96l160 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S320 19.1 320 32l0 32L160 64C71.6 64 0 135.6 0 224zm512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 53-43 96-96 96l-160 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-32 160 0c88.4 0 160-71.6 160-160z\"]\n};\nconst faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [128327, 10013], \"f654\", \"M176 0c-26.5 0-48 21.5-48 48l0 80-80 0c-26.5 0-48 21.5-48 48l0 32c0 26.5 21.5 48 48 48l80 0 0 208c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-208 80 0c26.5 0 48-21.5 48-48l0-32c0-26.5-21.5-48-48-48l-80 0 0-80c0-26.5-21.5-48-48-48L176 0z\"]\n};\nconst faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [448, 512, [128230], \"f466\", \"M50.7 58.5L0 160l208 0 0-128L93.7 32C75.5 32 58.9 42.3 50.7 58.5zM240 160l208 0L397.3 58.5C389.1 42.3 372.5 32 354.3 32L240 32l0 128zm208 32L0 192 0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-224z\"]\n};\nconst faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [640, 512, [9892], \"f228\", \"M176 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM352 176c0 86.3-62.1 158.1-144 173.1l0 34.9 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-34.9C62.1 334.1 0 262.3 0 176C0 78.8 78.8 0 176 0s176 78.8 176 176zM271.9 360.6c19.3-10.1 36.9-23.1 52.1-38.4c20 18.5 46.7 29.8 76.1 29.8c61.9 0 112-50.1 112-112s-50.1-112-112-112c-7.2 0-14.3 .7-21.1 2c-4.9-21.5-13-41.7-24-60.2C369.3 66 384.4 64 400 64c37 0 71.4 11.4 99.8 31l20.6-20.6L487 41c-6.9-6.9-8.9-17.2-5.2-26.2S494.3 0 504 0L616 0c13.3 0 24 10.7 24 24l0 112c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L545 140.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176c-50.5 0-96-21.3-128.1-55.4z\"]\n};\nconst faArrowPointer = {\n prefix: 'fas',\n iconName: 'arrow-pointer',\n icon: [320, 512, [\"mouse-pointer\"], \"f245\", \"M0 55.2L0 426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320l118.1 0c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z\"]\n};\nconst faMousePointer = faArrowPointer;\nconst faMaximize = {\n prefix: 'fas',\n iconName: 'maximize',\n icon: [512, 512, [\"expand-arrows-alt\"], \"f31e\", \"M200 32L56 32C42.7 32 32 42.7 32 56l0 144c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l40-40 79 79-79 79L73 295c-6.9-6.9-17.2-8.9-26.2-5.2S32 302.3 32 312l0 144c0 13.3 10.7 24 24 24l144 0c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l144 0c13.3 0 24-10.7 24-24l0-144c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-144c0-13.3-10.7-24-24-24L312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S209.7 32 200 32z\"]\n};\nconst faExpandArrowsAlt = faMaximize;\nconst faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M96 0C60.7 0 32 28.7 32 64l0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-144 16 0c22.1 0 40 17.9 40 40l0 32c0 39.8 32.2 72 72 72s72-32.2 72-72l0-123.7c32.5-10.2 56-40.5 56-76.3l0-32c0-8.8-7.2-16-16-16l-16 0 0-48c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-32 0 0-48c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-16 0c-8.8 0-16 7.2-16 16l0 32c0 35.8 23.5 66.1 56 76.3L472 376c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32c0-48.6-39.4-88-88-88l-16 0 0-192c0-35.3-28.7-64-64-64L96 0zM216.9 82.7c6 4 8.5 11.5 6.3 18.3l-25 74.9 57.8 0c6.7 0 12.7 4.2 15 10.4s.5 13.3-4.6 17.7l-112 96c-5.5 4.7-13.4 5.1-19.3 1.1s-8.5-11.5-6.3-18.3l25-74.9L96 208c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7l112-96c5.5-4.7 13.4-5.1 19.3-1.1z\"]\n};\nconst faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [\"triangle-circle-square\"], \"f61f\", \"M315.4 15.5C309.7 5.9 299.2 0 288 0s-21.7 5.9-27.4 15.5l-96 160c-5.9 9.9-6.1 22.2-.4 32.2s16.3 16.2 27.8 16.2l192 0c11.5 0 22.2-6.2 27.8-16.2s5.5-22.3-.4-32.2l-96-160zM288 312l0 144c0 22.1 17.9 40 40 40l144 0c22.1 0 40-17.9 40-40l0-144c0-22.1-17.9-40-40-40l-144 0c-22.1 0-40 17.9-40 40zM128 512a128 128 0 1 0 0-256 128 128 0 1 0 0 256z\"]\n};\nconst faTriangleCircleSquare = faShapes;\nconst faShuffle = {\n prefix: 'fas',\n iconName: 'shuffle',\n icon: [512, 512, [128256, \"random\"], \"f074\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"]\n};\nconst faRandom = faShuffle;\nconst faPersonRunning = {\n prefix: 'fas',\n iconName: 'person-running',\n icon: [448, 512, [127939, \"running\"], \"f70c\", \"M320 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM125.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L137.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L238 299l30.9-82.4 5.1 12.3C289 264.7 323.9 288 362.7 288l21.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-21.3 0c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L57.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM91.2 352L32 352c-17.7 0-32 14.3-32 32s14.3 32 32 32l69.6 0c19 0 36.2-11.2 43.9-28.5L157 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L91.2 352z\"]\n};\nconst faRunning = faPersonRunning;\nconst faMobileRetro = {\n prefix: 'fas',\n iconName: 'mobile-retro',\n icon: [320, 512, [], \"e527\", \"M0 64C0 28.7 28.7 0 64 0L256 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm64 96l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM80 352a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM128 48c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0z\"]\n};\nconst faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [192, 512, [], \"f7a5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32L64 64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384z\"]\n};\nconst faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [512, 512, [128375], \"f717\", \"M158.4 32.6c4.8-12.4-1.4-26.3-13.8-31s-26.3 1.4-31 13.8L81.1 100c-7.9 20.7-3 44.1 12.7 59.7l57.4 57.4L70.8 190.3c-2.4-.8-4.3-2.7-5.1-5.1L46.8 128.4C42.6 115.8 29 109 16.4 113.2S-3 131 1.2 143.6l18.9 56.8c5.6 16.7 18.7 29.8 35.4 35.4L116.1 256 55.6 276.2c-16.7 5.6-29.8 18.7-35.4 35.4L1.2 368.4C-3 381 3.8 394.6 16.4 398.8s26.2-2.6 30.4-15.2l18.9-56.8c.8-2.4 2.7-4.3 5.1-5.1l80.4-26.8L93.7 352.3C78.1 368 73.1 391.4 81.1 412l32.5 84.6c4.8 12.4 18.6 18.5 31 13.8s18.5-18.6 13.8-31l-32.5-84.6c-1.1-3-.4-6.3 1.8-8.5L160 353.9c1 52.1 43.6 94.1 96 94.1s95-41.9 96-94.1l32.3 32.3c2.2 2.2 2.9 5.6 1.8 8.5l-32.5 84.6c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8L430.9 412c7.9-20.7 3-44.1-12.7-59.7l-57.4-57.4 80.4 26.8c2.4 .8 4.3 2.7 5.1 5.1l18.9 56.8c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-18.9-56.8c-5.6-16.7-18.7-29.8-35.4-35.4L395.9 256l60.5-20.2c16.7-5.6 29.8-18.7 35.4-35.4l18.9-56.8c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-18.9 56.8c-.8 2.4-2.7 4.3-5.1 5.1l-80.4 26.8 57.4-57.4c15.6-15.6 20.6-39 12.7-59.7L398.4 15.4C393.6 3 379.8-3.2 367.4 1.6s-18.5 18.6-13.8 31l32.5 84.6c1.1 3 .4 6.3-1.8 8.5L336 174.1l0-14.1c0-31.8-18.6-59.3-45.5-72.2c-9.1-4.4-18.5 3.3-18.5 13.4l0 10.8c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-10.8c0-10.1-9.4-17.7-18.5-13.4C194.6 100.7 176 128.2 176 160l0 14.1-48.3-48.3c-2.2-2.2-2.9-5.6-1.8-8.5l32.5-84.6z\"]\n};\nconst faHandsBound = {\n prefix: 'fas',\n iconName: 'hands-bound',\n icon: [640, 512, [], \"e4f9\", \"M96 32C96 14.3 81.7 0 64 0S32 14.3 32 32l0 64 0 59.1 0 .7L32 192l0 21.9c0 14.2 5.1 27.9 14.3 38.7L131.6 352l-3.6 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 128 0 64 0 128 0 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-3.6 0 85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7l0-21.9 0-36.2 0-.7L608 96l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64 0 48.8-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8c-9.7-5.7-12.1-18.7-5.1-27.5L473 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C361 209.7 352 233.4 352 258.1l0 61.9 0 32-64 0 0-32 0-61.9c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2s-15.2 30.9-4.4 44.5l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5c-8.1 4.8-18.6 2.7-24.2-4.8L96 144.8 96 96l0-64zm64 448l0 32 128 0 0-32 64 0 0 32 128 0 0-32 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0-128 0-64 0-128 0-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0z\"]\n};\nconst faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM64 80c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 96c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16l0 17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1s0 0 0 0s0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1l0 17.1c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-17.8c-11.2-2.1-21.7-5.7-30.9-8.9c0 0 0 0 0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4c0 0 0 0 0 0s0 0 0 0s0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5s0 0 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7l0-17.3c0-8.8 7.2-16 16-16z\"]\n};\nconst faPlaneCircleExclamation = {\n prefix: 'fas',\n iconName: 'plane-circle-exclamation',\n icon: [640, 512, [], \"e556\", \"M256 0c-35 0-64 59.5-64 93.7l0 84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9l0 65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8l0 42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3l0-84.6C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [512, 512, [], \"f497\", \"M0 64C0 46.3 14.3 32 32 32l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 320c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 96C14.3 96 0 81.7 0 64zM256 96c-8.8 0-16 7.2-16 16l0 32-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 48-112 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l112 0 0 70.6L189.1 307c-5.2-2-10.6-3-16.2-3l-2.1 0c-23.6 0-42.8 19.2-42.8 42.8c0 9.6 3.2 18.9 9.1 26.4l18.2 23.2c9.7 12.4 24.6 19.6 40.3 19.6l120.8 0c15.7 0 30.6-7.2 40.3-19.6l18.2-23.2c5.9-7.5 9.1-16.8 9.1-26.4c0-23.6-19.2-42.8-42.8-42.8l-2.2 0c-5.5 0-11 1-16.2 3L272 326.6l0-70.6 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-112 0 0-48 80 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-80 0 0-32c0-8.8-7.2-16-16-16zM208 352a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm80 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M112 0C99.1 0 87.4 7.8 82.5 19.7l-66.7 160-13.3 32c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L66.7 224l90.7 0 5.1 12.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-13.3-32-66.7-160C136.6 7.8 124.9 0 112 0zm18.7 160l-37.3 0L112 115.2 130.7 160zM256 32l0 96 0 96c0 17.7 14.3 32 32 32l80 0c44.2 0 80-35.8 80-80c0-23.1-9.8-43.8-25.4-58.4c6-11.2 9.4-24 9.4-37.6c0-44.2-35.8-80-80-80L288 0c-17.7 0-32 14.3-32 32zm96 64l-32 0 0-32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-32 64l32 0 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0-32zM566.6 310.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L352 434.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l192-192z\"]\n};\nconst faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z\"]\n};\nconst faComputerMouse = {\n prefix: 'fas',\n iconName: 'computer-mouse',\n icon: [384, 512, [128433, \"mouse\"], \"f8cc\", \"M0 192l176 0L176 0 160 0C71.6 0 0 71.6 0 160l0 32zm0 32L0 352c0 88.4 71.6 160 160 160l64 0c88.4 0 160-71.6 160-160l0-128-192 0L0 224zm384-32l0-32C384 71.6 312.4 0 224 0L208 0l0 192 176 0z\"]\n};\nconst faMouse = faComputerMouse;\nconst faArrowRightToBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-to-bracket',\n icon: [512, 512, [\"sign-in\"], \"f090\", \"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nconst faSignIn = faArrowRightToBracket;\nconst faShopSlash = {\n prefix: 'fas',\n iconName: 'shop-slash',\n icon: [640, 512, [\"store-alt-slash\"], \"e070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43L576 224l-64 0 0 152L384 275.7l0-51.7-64 0 0 1.5L277.2 192l325.9 0c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0L121.7 0c-16 0-31 8-39.9 21.4L74.1 32.8 38.8 5.1zM36.8 192l85 0L21 112.5 6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM320 384l-192 0 0-160-64 0 0 160 0 80c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-65.5-64-50.4 0 35.9z\"]\n};\nconst faStoreAltSlash = faShopSlash;\nconst faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 32zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 288zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faVirusCovidSlash = {\n prefix: 'fas',\n iconName: 'virus-covid-slash',\n icon: [640, 512, [], \"e4a9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c11.4-19.5 19.1-41.4 22.3-64.7l33.6 0 0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16-33.6 0c-4.2-30.7-16.3-58.8-34.1-82.3L484 125.9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L472.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L450.1 92l-23.8 23.8C402.8 97.9 374.7 85.8 344 81.6L344 48l16 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L280 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0 0 33.6c-30.7 4.2-58.8 16.3-82.3 34.1L189.9 92l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L134.1 79.8 38.8 5.1zM149.2 213.5c-1.5 6-2.7 12.2-3.5 18.5L112 232l0-16c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16 33.6 0c4.2 30.7 16.3 58.8 34.1 82.3L156 386.1l-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L189.9 420l23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1l0 33.6-16 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0-33.6c20.4-2.8 39.7-9.1 57.3-18.2L149.2 213.5z\"]\n};\nconst faShopLock = {\n prefix: 'fas',\n iconName: 'shop-lock',\n icon: [640, 512, [], \"e4a5\", \"M36.8 192l412.8 0c20.2-19.8 47.9-32 78.4-32c30.5 0 58.1 12.2 78.3 31.9c18.9-1.6 33.7-17.4 33.7-36.7c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0L121.7 0c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM384 224l-64 0 0 160-192 0 0-160-64 0 0 160 0 80c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-80 0-32 0-128zm144 16c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [\"hourglass-1\"], \"f251\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 256 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 0 64 0 32 0zM288 437l0 11L96 448l0-11c0-25.5 10.1-49.9 28.1-67.9L192 301.3l67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"]\n};\nconst faHourglass1 = faHourglassStart;\nconst faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M224 352L196.8 52.3C194.2 24.2 216.3 0 244.6 0L534.1 0c21.1 0 36.4 20.1 30.9 40.4L558.5 64 400 64c-8.8 0-16 7.2-16 16s7.2 16 16 16l149.8 0-17.5 64L400 160c-8.8 0-16 7.2-16 16s7.2 16 16 16l123.6 0-17.5 64L400 256c-8.8 0-16 7.2-16 16s7.2 16 16 16l97.5 0L480 352l-256 0zm-16 32l288 0c26.5 0 48 21.5 48 48l0 32c0 26.5-21.5 48-48 48l-288 0c-26.5 0-48-21.5-48-48l0-32c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM147.5 30.7c10.8 6.7 15.3 21 10.6 33.4l-22 57.8c-4.2 10.9-14.5 17.6-25.3 16.4l-33.3-3.6c-13.6 42.2-13.6 88.4 0 130.7l33.3-3.6c10.9-1.2 21.2 5.5 25.3 16.4l22 57.8c4.7 12.4 .2 26.7-10.6 33.4l-44 27.2c-9.7 6-21.9 4.2-29.8-4.3C-24.6 286-24.6 114 73.7 7.8C81.6-.7 93.8-2.5 103.5 3.5l44 27.2z\"]\n};\nconst faBuildingWheat = {\n prefix: 'fas',\n iconName: 'building-wheat',\n icon: [640, 512, [], \"e4db\", \"M0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48l-96 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-96 0c-26.5 0-48-21.5-48-48L0 48zM80 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM64 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L80 96c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm384 80l0 16c0 44.2-35.8 80-80 80l-16 0 0-16c0-44.2 35.8-80 80-80l16 0zm0 128c0 44.2-35.8 80-80 80l-16 0 0-16c0-44.2 35.8-80 80-80l16 0 0 16zm0 112c0 44.2-35.8 80-80 80l-16 0 0-16c0-44.2 35.8-80 80-80l16 0 0 16zM512 496l0 16-16 0c-44.2 0-80-35.8-80-80l0-16 16 0c44.2 0 80 35.8 80 80zm0-96l-16 0c-44.2 0-80-35.8-80-80l0-16 16 0c44.2 0 80 35.8 80 80l0 16zm0-128l0 16-16 0c-44.2 0-80-35.8-80-80l0-16 16 0c44.2 0 80 35.8 80 80zM528 32c13.3 0 24 10.7 24 24l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-104c0-13.3 10.7-24 24-24zm96 64l0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32c0-13.3 10.7-24 24-24s24 10.7 24 24zM456 72c13.3 0 24 10.7 24 24l0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32c0-13.3 10.7-24 24-24z\"]\n};\nconst faPersonBreastfeeding = {\n prefix: 'fas',\n iconName: 'person-breastfeeding',\n icon: [448, 512, [], \"e53a\", \"M224 0a80 80 0 1 1 0 160A80 80 0 1 1 224 0zM436.8 382.8L373.5 462c-16.6 20.7-46.8 24.1-67.5 7.5c-17.6-14.1-22.7-38.1-13.5-57.7l-.8-.1c-38.9-5.6-74.3-25.1-99.7-54.8l0-36.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L27.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7c-4.9-2.8-9.2-6.4-12.6-10.6c-4.6-5.4-7.8-11.7-9.6-18.4c-3.3-12-1.9-25.2 4.8-36.6c.6-1.1 1.3-2.2 2-3.2L75.6 256.1c26.7-40.1 71.7-64.1 119.8-64.1l75.2 0c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4c2.9 6.7 4.3 13.8 4 20.8c-.3 10.6-4.2 21-11.2 29.4zM320 332a44 44 0 1 0 -88 0 44 44 0 1 0 88 0z\"]\n};\nconst faRightToBracket = {\n prefix: 'fas',\n iconName: 'right-to-bracket',\n icon: [512, 512, [\"sign-in-alt\"], \"f2f6\", \"M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM352 416l64 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faSignInAlt = faRightToBracket;\nconst faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [384, 512, [9792], \"f221\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1l0 34.9-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-34.9z\"]\n};\nconst faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M0 64C0 28.7 28.7 0 64 0L384 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM183 278.8c-27.9-13.2-48.4-39.4-53.7-70.8l39.1 0c1.6 30.4 7.7 53.8 14.6 70.8zm41.3 9.2l-.3 0-.3 0c-2.4-3.5-5.7-8.9-9.1-16.5c-6-13.6-12.4-34.3-14.2-63.5l47.1 0c-1.8 29.2-8.1 49.9-14.2 63.5c-3.4 7.6-6.7 13-9.1 16.5zm40.7-9.2c6.8-17.1 12.9-40.4 14.6-70.8l39.1 0c-5.3 31.4-25.8 57.6-53.7 70.8zM279.6 176c-1.6-30.4-7.7-53.8-14.6-70.8c27.9 13.2 48.4 39.4 53.7 70.8l-39.1 0zM223.7 96l.3 0 .3 0c2.4 3.5 5.7 8.9 9.1 16.5c6 13.6 12.4 34.3 14.2 63.5l-47.1 0c1.8-29.2 8.1-49.9 14.2-63.5c3.4-7.6 6.7-13 9.1-16.5zM183 105.2c-6.8 17.1-12.9 40.4-14.6 70.8l-39.1 0c5.3-31.4 25.8-57.6 53.7-70.8zM352 192A128 128 0 1 0 96 192a128 128 0 1 0 256 0zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16l224 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-224 0z\"]\n};\nconst faThumbtackSlash = {\n prefix: 'fas',\n iconName: 'thumbtack-slash',\n icon: [640, 512, [\"thumb-tack-slash\"], \"e68f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L481.4 352c9.8-.4 18.9-5.3 24.6-13.3c6-8.3 7.7-19.1 4.4-28.8l-1-3c-13.8-41.5-42.8-74.8-79.5-94.7L418.5 64 448 64c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l29.5 0-6.1 79.5L38.8 5.1zM324.9 352L177.1 235.6c-20.9 18.9-37.2 43.3-46.5 71.3l-1 3c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3l164.9 0zM288 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96-64 0z\"]\n};\nconst faThumbTackSlash = faThumbtackSlash;\nconst faHeartPulse = {\n prefix: 'fas',\n iconName: 'heart-pulse',\n icon: [512, 512, [\"heartbeat\"], \"f21e\", \"M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4l87 0c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31l104.5 0c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240l-132 0c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9L16 240c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9l0-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1l0 5.8c0 16.9-2.8 33.5-8.3 49.1z\"]\n};\nconst faHeartbeat = faHeartPulse;\nconst faPeopleCarryBox = {\n prefix: 'fas',\n iconName: 'people-carry-box',\n icon: [640, 512, [\"people-carry\"], \"f4ce\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm64 193.7l0 65.1 51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3l-14.3-85.9L66.8 320C54.8 308 48 291.7 48 274.7l0-88.1c0-32.4 26.2-58.6 58.6-58.6c24.1 0 46.5 12 59.9 32l47.4 71.1 10.1 5 0-76.2c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 76.2 10.1-5L473.5 160c13.3-20 35.8-32 59.9-32c32.4 0 58.6 26.2 58.6 58.6l0 88.1c0 17-6.7 33.3-18.7 45.3l-79.4 79.4-14.3 85.9c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l15.2-90.9c1.6-9.9 6.3-19 13.4-26.1l51-51 0-65.1-19 28.5c-4.6 7-11 12.6-18.5 16.3l-59.6 29.8c-2.4 1.3-4.9 2.2-7.6 2.8c-2.6 .6-5.3 .9-7.9 .8l-126.7 0c-2.5 .1-5-.2-7.5-.7c-2.9-.6-5.6-1.6-8.1-3l-59.5-29.8c-7.5-3.7-13.8-9.4-18.5-16.3l-19-28.5zM2.3 468.1L50.1 348.6l49.2 49.2-37.6 94c-6.6 16.4-25.2 24.4-41.6 17.8S-4.3 484.5 2.3 468.1zM512 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm77.9 348.6l47.8 119.5c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-37.6-94 49.2-49.2z\"]\n};\nconst faPeopleCarry = faPeopleCarryBox;\nconst faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 128A96 96 0 1 0 416 0a96 96 0 1 0 0 192zM96 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5L96 112zM144 0C82.1 0 32 50.2 32 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L256 112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3L160 112c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 210.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"]\n};\nconst faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c-35.3 0-64 28.7-64 64l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 56-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 56-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c0 35.3 28.7 64 64 64l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 56 0 0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 56 0 0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c35.3 0 64-28.7 64-64l40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-56 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-56 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0c0-35.3-28.7-64-64-64l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40-56 0 0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40-56 0 0-40zM160 128l192 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32l0-192c0-17.7 14.3-32 32-32zm192 32l-192 0 0 192 192 0 0-192z\"]\n};\nconst faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [576, 512, [128081], \"f521\", \"M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6l277.2 0c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z\"]\n};\nconst faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M224 96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm122.5 32c3.5-10 5.5-20.8 5.5-32c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32L120 128c-22 0-41.2 15-46.6 36.4l-72 288c-3.6 14.3-.4 29.5 8.7 41.2S33.2 512 48 512l416 0c14.8 0 28.7-6.8 37.8-18.5s12.3-26.8 8.7-41.2l-72-288C433.2 143 414 128 392 128l-45.5 0z\"]\n};\nconst faXmarksLines = {\n prefix: 'fas',\n iconName: 'xmarks-lines',\n icon: [640, 512, [], \"e59a\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55L41 167c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nconst faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM104 196l72 0c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6l-20 0 0 44c0 11-9 20-20 20s-20-9-20-20l0-64 0-80c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20l-52 0 0 40 52 0z\"]\n};\nconst faWeightScale = {\n prefix: 'fas',\n iconName: 'weight-scale',\n icon: [512, 512, [\"weight\"], \"f496\", \"M128 176a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zM391.8 64C359.5 24.9 310.7 0 256 0S152.5 24.9 120.2 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-56.2 0zM296 224c0-10.6-4.1-20.2-10.9-27.4l33.6-78.3c3.5-8.1-.3-17.5-8.4-21s-17.5 .3-21 8.4L255.7 184c-22 .1-39.7 18-39.7 40c0 22.1 17.9 40 40 40s40-17.9 40-40z\"]\n};\nconst faWeight = faWeightScale;\nconst faUserGroup = {\n prefix: 'fas',\n iconName: 'user-group',\n icon: [640, 512, [128101, \"user-friends\"], \"f500\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM609.3 512l-137.8 0c5.4-9.4 8.6-20.3 8.6-32l0-8c0-60.7-27.1-115.2-69.8-151.8c2.4-.1 4.7-.2 7.1-.2l61.4 0C567.8 320 640 392.2 640 481.3c0 17-13.8 30.7-30.7 30.7zM432 256c-31 0-59-12.6-79.3-32.9C372.4 196.5 384 163.6 384 128c0-26.8-6.6-52.1-18.3-74.3C384.3 40.1 407.2 32 432 32c61.9 0 112 50.1 112 112s-50.1 112-112 112z\"]\n};\nconst faUserFriends = faUserGroup;\nconst faArrowUpAZ = {\n prefix: 'fas',\n iconName: 'arrow-up-a-z',\n icon: [576, 512, [\"sort-alpha-up\"], \"f15e\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3 128 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32l50.7 0-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0 73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-128 0c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3 88.4 0 7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176l-40.4 0z\"]\n};\nconst faSortAlphaUp = faArrowUpAZ;\nconst faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [448, 512, [9822], \"f441\", \"M96 48L82.7 61.3C70.7 73.3 64 89.5 64 106.5l0 132.4c0 10.7 5.3 20.7 14.2 26.6l10.6 7c14.3 9.6 32.7 10.7 48.1 3l3.2-1.6c2.6-1.3 5-2.8 7.3-4.5l49.4-37c6.6-5 15.7-5 22.3 0c10.2 7.7 9.9 23.1-.7 30.3L90.4 350C73.9 361.3 64 380 64 400l320 0 28.9-159c2.1-11.3 3.1-22.8 3.1-34.3l0-14.7C416 86 330 0 224 0L83.8 0C72.9 0 64 8.9 64 19.8c0 7.5 4.2 14.3 10.9 17.7L96 48zm24 68a20 20 0 1 1 40 0 20 20 0 1 1 -40 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512l370.7 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L384 432 64 432 22.6 473.4z\"]\n};\nconst faFaceLaughSquint = {\n prefix: 'fas',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zm36.7-199.4l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 125.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faLaughSquint = faFaceLaughSquint;\nconst faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM120.5 247.2c12.4-4.7 18.7-18.5 14-30.9s-18.5-18.7-30.9-14C43.1 225.1 0 283.5 0 352c0 88.4 71.6 160 160 160c61.2 0 114.3-34.3 141.2-84.7c6.2-11.7 1.8-26.2-9.9-32.5s-26.2-1.8-32.5 9.9C240 440 202.8 464 160 464C98.1 464 48 413.9 48 352c0-47.9 30.1-88.8 72.5-104.8zM259.8 176l-1.9-9.7c-4.5-22.3-24-38.3-46.8-38.3c-30.1 0-52.7 27.5-46.8 57l23.1 115.5c6 29.9 32.2 51.4 62.8 51.4l5.1 0c.4 0 .8 0 1.3 0l94.1 0c6.7 0 12.6 4.1 15 10.4L402 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9l-68.5 0-9.6-48 63.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-76.2 0z\"]\n};\nconst faCircleArrowUp = {\n prefix: 'fas',\n iconName: 'circle-arrow-up',\n icon: [512, 512, [\"arrow-circle-up\"], \"f0aa\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM385 215c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71L280 392c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-214.1-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 103c9.4-9.4 24.6-9.4 33.9 0L385 215z\"]\n};\nconst faArrowCircleUp = faCircleArrowUp;\nconst faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M192 64C86 64 0 150 0 256S86 448 192 448l192 0c106 0 192-86 192-192s-86-192-192-192L192 64zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faPersonWalking = {\n prefix: 'fas',\n iconName: 'person-walking',\n icon: [320, 512, [128694, \"walking\"], \"f554\", \"M160 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM126.5 199.3c-1 .4-1.9 .8-2.9 1.2l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L281 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L247 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5zM68.7 398l25-62.4c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L68.7 398z\"]\n};\nconst faWalking = faPersonWalking;\nconst faL = {\n prefix: 'fas',\n iconName: 'l',\n icon: [320, 512, [108], \"4c\", \"M64 32c17.7 0 32 14.3 32 32l0 352 192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 480c-17.7 0-32-14.3-32-32L32 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [448, 512, [128293], \"f06d\", \"M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z\"]\n};\nconst faBedPulse = {\n prefix: 'fas',\n iconName: 'bed-pulse',\n icon: [640, 512, [\"procedures\"], \"f487\", \"M483.2 9.6L524 64l92 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-104 0c-7.6 0-14.7-3.6-19.2-9.6L468.7 70.3l-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L339.2 112 216 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l136 0c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5C445.9 6.2 453.2 1 461.6 .1s16.6 2.7 21.6 9.5zM320 160l12.7 0 20.7 31.1c11.2 16.8 30.6 26.3 50.7 24.8s37.9-13.7 46.5-32L461.9 160l82.1 0c53 0 96 43 96 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-224 0-32 0L64 448l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 96C0 78.3 14.3 64 32 64s32 14.3 32 32l0 256 224 0 0-160c0-17.7 14.3-32 32-32zm-144 0a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faProcedures = faBedPulse;\nconst faShuttleSpace = {\n prefix: 'fas',\n iconName: 'shuttle-space',\n icon: [640, 512, [\"space-shuttle\"], \"f197\", \"M130 480c40.6 0 80.4-11 115.2-31.9L352 384l-224 0 0 96 2 0zM352 128L245.2 63.9C210.4 43 170.6 32 130 32l-2 0 0 96 224 0zM96 128l0-96L80 32C53.5 32 32 53.5 32 80l0 48 8 0c-22.1 0-40 17.9-40 40l0 16L0 328l0 16c0 22.1 17.9 40 40 40l-8 0 0 48c0 26.5 21.5 48 48 48l16 0 0-96 8 0c26.2 0 49.4-12.6 64-32l288 0c69.3 0 135-22.7 179.2-81.6c6.4-8.5 6.4-20.3 0-28.8C591 182.7 525.3 160 456 160l-288 0c-14.6-19.4-37.8-32-64-32l-8 0zM512 243.6l0 24.9c0 19.6-15.9 35.6-35.6 35.6c-2.5 0-4.4-2-4.4-4.4l0-87.1c0-2.5 2-4.4 4.4-4.4c19.6 0 35.6 15.9 35.6 35.6z\"]\n};\nconst faSpaceShuttle = faShuttleSpace;\nconst faFaceLaugh = {\n prefix: 'fas',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faLaugh = faFaceLaugh;\nconst faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M88.7 223.8L0 375.8 0 96C0 60.7 28.7 32 64 32l117.5 0c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7L416 96c35.3 0 64 28.7 64 64l0 32-336 0c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224l400 0c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480L32 480c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z\"]\n};\nconst faHeartCirclePlus = {\n prefix: 'fas',\n iconName: 'heart-circle-plus',\n icon: [576, 512, [], \"e500\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208l0 48 48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faCodeFork = {\n prefix: 'fas',\n iconName: 'code-fork',\n icon: [448, 512, [], \"e13b\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 38.7c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-38.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 38.7c0 53-43 96-96 96l-48 0 0 70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-70.7-48 0c-53 0-96-43-96-96l0-38.7C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM248 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [127961], \"f64f\", \"M480 48c0-26.5-21.5-48-48-48L336 0c-26.5 0-48 21.5-48 48l0 48-64 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-64 0 0-72c0-13.3-10.7-24-24-24S64 10.7 64 24l0 72L48 96C21.5 96 0 117.5 0 144l0 96L0 464c0 26.5 21.5 48 48 48l256 0 32 0 96 0 160 0c26.5 0 48-21.5 48-48l0-224c0-26.5-21.5-48-48-48l-112 0 0-144zm96 320l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM240 416l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16zM128 400c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32zM560 256c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zM256 176l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM112 160c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zM256 304c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32zM112 320l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16zm304-48l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM400 64c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zm16 112l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16z\"]\n};\nconst faMicrophoneLines = {\n prefix: 'fas',\n iconName: 'microphone-lines',\n icon: [384, 512, [127897, \"microphone-alt\"], \"f3c9\", \"M96 96l0 160c0 53 43 96 96 96s96-43 96-96l-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0c0-53-43-96-96-96S96 43 96 96zM320 240l0 16c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6c85.8-11.7 152-85.3 152-174.4l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24z\"]\n};\nconst faMicrophoneAlt = faMicrophoneLines;\nconst faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [127798], \"f816\", \"M428.3 3c11.6-6.4 26.2-2.3 32.6 9.3l4.8 8.7c19.3 34.7 19.8 75.7 3.4 110C495.8 159.6 512 197.9 512 240c0 18.5-3.1 36.3-8.9 52.8c-6.1 17.3-28.5 16.3-36.8-.1l-11.7-23.4c-4.1-8.1-12.4-13.3-21.5-13.3L360 256c-13.3 0-24-10.7-24-24l0-80c0-13.3-10.7-24-24-24l-17.1 0c-21.3 0-30-23.9-10.8-32.9C304.7 85.4 327.7 80 352 80c28.3 0 54.8 7.3 77.8 20.2c5.5-18.2 3.7-38.4-6-55.8L419 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zM171.2 345.5L264 160l40 0 0 80c0 26.5 21.5 48 48 48l76.2 0 23.9 47.8C372.3 443.9 244.3 512 103.2 512l-58.8 0C19.9 512 0 492.1 0 467.6c0-20.8 14.5-38.8 34.8-43.3l49.8-11.1c37.6-8.4 69.5-33.2 86.7-67.7z\"]\n};\nconst faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [128275], \"f09c\", \"M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144l0 48-16 0c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-240 0 0-48z\"]\n};\nconst faColonSign = {\n prefix: 'fas',\n iconName: 'colon-sign',\n icon: [384, 512, [], \"e140\", \"M255 39.8c4.3-17.1-6.1-34.5-23.3-38.8S197.2 7.1 193 24.2L181.9 68.6C96.1 87.8 32 164.4 32 256c0 58.1 25.8 110.2 66.7 145.4L81 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l13-52.1c9 3.4 18.4 6.2 28 8.2L177 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l10.4-41.4c33.4-4.4 64.1-17.4 89.8-36.7c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-10.2 7.7-21.7 13.9-34 18.3L321 160c9.4-.3 18.5-4.7 24.6-12.8c10.6-14.1 7.8-34.2-6.4-44.8c-1.1-.8-2.2-1.6-3.3-2.4L351 39.8c4.3-17.1-6.1-34.5-23.3-38.8S293.2 7.1 289 24.2L277.2 71.5c-9.3-2.7-18.8-4.6-28.6-5.9L255 39.8zM163.2 143.3L117.3 326.8C103.9 306.5 96 282.2 96 256c0-48.7 27.2-91 67.2-112.7zm8.6 229.5l61.1-244.6c9.9 .7 19.5 2.5 28.7 5.3l-62 248.1c-9.7-1.9-19-4.8-27.8-8.8z\"]\n};\nconst faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M256 48C141.1 48 48 141.1 48 256l0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40C0 114.6 114.6 0 256 0S512 114.6 512 256l0 144.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24l-32 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l32 0c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40L464 256c0-114.9-93.1-208-208-208zM144 208l16 0c17.7 0 32 14.3 32 32l0 112c0 17.7-14.3 32-32 32l-16 0c-35.3 0-64-28.7-64-64l0-48c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64l0 48c0 35.3-28.7 64-64 64l-16 0c-17.7 0-32-14.3-32-32l0-112c0-17.7 14.3-32 32-32l16 0z\"]\n};\nconst faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68 0-17.1 0-131.4c-4 1-8 1.8-12.3 2.3c0 0 0 0-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3l0 100.3L301.2 210.7c7-4.4 13.3-9.7 18.8-15.7c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4L522.3 13.1C517.2 5 508.1 0 498.4 0L141.6 0c-9.7 0-18.8 5-23.9 13.1l-22.7 36L38.8 5.1zm73.4 218.1c4 .5 8.1 .8 12.1 .8c11 0 21.4-2 31-5.6L48.9 134.5c-6.1 40.6 19.5 82.8 63.3 88.7zM160 384l0-133.4c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3L96 384l0 64c0 35.3 28.7 64 64 64l320 0c12.9 0 24.8-3.8 34.9-10.3L365.5 384 160 384z\"]\n};\nconst faRoadCircleXmark = {\n prefix: 'fas',\n iconName: 'road-circle-xmark',\n icon: [640, 512, [], \"e566\", \"M213.2 32L288 32l0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 74.8 0c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8l0-42.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32l0 64L86.6 480C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nconst faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM472 200l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faMarsStrokeUp = {\n prefix: 'fas',\n iconName: 'mars-stroke-up',\n icon: [320, 512, [9896, \"mars-stroke-v\"], \"f22a\", \"M148.7 4.7c6.2-6.2 16.4-6.2 22.6 0l64 64c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9l-40 0 0 24 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 24c0 .6 0 1.2-.1 1.8c77 11.6 136.1 78 136.1 158.2c0 88.4-71.6 160-160 160S0 440.4 0 352c0-80.2 59.1-146.7 136.1-158.2c0-.6-.1-1.2-.1-1.8l0-24-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-24L96 96c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l64-64zM256 352A96 96 0 1 0 64 352a96 96 0 1 0 192 0z\"]\n};\nconst faMarsStrokeV = faMarsStrokeUp;\nconst faChampagneGlasses = {\n prefix: 'fas',\n iconName: 'champagne-glasses',\n icon: [640, 512, [129346, \"glass-cheers\"], \"f79f\", \"M155.6 17.3C163 3 179.9-3.6 195 1.9L320 47.5l125-45.6c15.1-5.5 32 1.1 39.4 15.4l78.8 152.9c28.8 55.8 10.3 122.3-38.5 156.6L556.1 413l41-15c16.6-6 35 2.5 41 19.1s-2.5 35-19.1 41l-71.1 25.9L476.8 510c-16.6 6.1-35-2.5-41-19.1s2.5-35 19.1-41l41-15-31.3-86.2c-59.4 5.2-116.2-34-130-95.2L320 188.8l-14.6 64.7c-13.8 61.3-70.6 100.4-130 95.2l-31.3 86.2 41 15c16.6 6 25.2 24.4 19.1 41s-24.4 25.2-41 19.1L92.2 484.1 21.1 458.2c-16.6-6.1-25.2-24.4-19.1-41s24.4-25.2 41-19.1l41 15 31.3-86.2C66.5 292.5 48.1 226 76.9 170.2L155.6 17.3zm44 54.4l-27.2 52.8L261.6 157l13.1-57.9L199.6 71.7zm240.9 0L365.4 99.1 378.5 157l89.2-32.5L440.5 71.7z\"]\n};\nconst faGlassCheers = faChampagneGlasses;\nconst faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM112 192l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faHouseCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-circle-exclamation',\n icon: [640, 512, [], \"e50a\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0 .7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faFileArrowUp = {\n prefix: 'fas',\n iconName: 'file-arrow-up',\n icon: [384, 512, [\"file-upload\"], \"f574\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-102.1-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31L216 408z\"]\n};\nconst faFileUpload = faFileArrowUp;\nconst faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [\"wifi-3\", \"wifi-strong\"], \"f1eb\", \"M54.2 202.9C123.2 136.7 216.8 96 320 96s196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32S90.3 79.5 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9zM320 256c56.8 0 108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c39.5-34.9 91.3-56 148.2-56zm64 160a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faWifi3 = faWifi;\nconst faWifiStrong = faWifi;\nconst faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [128705, \"bathtub\"], \"f2cd\", \"M96 77.3c0-7.3 5.9-13.3 13.3-13.3c3.5 0 6.9 1.4 9.4 3.9l14.9 14.9C130 91.8 128 101.7 128 112c0 19.9 7.2 38 19.2 52c-5.3 9.2-4 21.1 3.8 29c9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9c-7.9-7.9-19.8-9.1-29-3.8C246 39.2 227.9 32 208 32c-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0C66.6 0 32 34.6 32 77.3L32 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 256 96 77.3zM32 352l0 16c0 28.4 12.4 54 32 71.6L64 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-16 256 0 0 16c0 17.7 14.3 32 32 32s32-14.3 32-32l0-40.4c19.6-17.6 32-43.1 32-71.6l0-16L32 352z\"]\n};\nconst faBathtub = faBath;\nconst faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M16 64c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 128c0 53 43 96 96 96s96-43 96-96l0-128-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 128c0 88.4-71.6 160-160 160s-160-71.6-160-160L64 96 48 96C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32z\"]\n};\nconst faUserPen = {\n prefix: 'fas',\n iconName: 'user-pen',\n icon: [640, 512, [\"user-edit\"], \"f4ff\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l293.1 0c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7l40.3-40.3c-32.1-31-75.7-50.1-123.9-50.1l-91.4 0zm435.5-68.3c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z\"]\n};\nconst faUserEdit = faUserPen;\nconst faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92l0 71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-83.6 0 18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3l0-7.8c0-53-43-96-96-96s-96 43-96 96l0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5l0-71.9c0-14.1 9.3-26.6 22.8-30.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24l40.3 0c-.2-2.8-.3-5.6-.3-8.5L64 368l-40 0zm592 48c13.3 0 24-10.7 24-24s-10.7-24-24-24l-310.1 0c-6.7 16.3-14.2 32.3-22.3 48L616 416z\"]\n};\nconst faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM312.6 63.7c-6.2-6.2-16.4-6.2-22.6 0L256 97.6 222.1 63.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l33.9 33.9-45.3 45.3-56.6-56.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l56.6 56.6-45.3 45.3L86.3 199.4c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L97.6 256 63.7 289.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 45.3 45.3-56.6 56.6c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56.6-56.6 45.3 45.3-33.9 33.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L256 414.4l33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 45.3-45.3 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 45.3-45.3 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L414.4 256l33.9-33.9c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-33.9 33.9-45.3-45.3 56.6-56.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-56.6 56.6-45.3-45.3 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6zM142.9 256l45.3-45.3L233.4 256l-45.3 45.3L142.9 256zm67.9 67.9L256 278.6l45.3 45.3L256 369.1l-45.3-45.3zM278.6 256l45.3-45.3L369.1 256l-45.3 45.3L278.6 256zm22.6-67.9L256 233.4l-45.3-45.3L256 142.9l45.3 45.3z\"]\n};\nconst faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M0 64C0 46.3 14.3 32 32 32l48 0 16 0 128 0c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128L96 480l-16 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-160L48 96 32 96C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64L112 96l0 128 112 0zM112 288l0 128 144 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0-112 0z\"]\n};\nconst faAnchorLock = {\n prefix: 'fas',\n iconName: 'anchor-lock',\n icon: [640, 512, [], \"e4ad\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8 0 15.9-.6 23.6-1.7c-4.8-9-7.6-19.3-7.6-30.3l0-33.3c-5.2 .9-10.5 1.3-16 1.3l-48 0 0-208 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM528 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faBuildingNgo = {\n prefix: 'fas',\n iconName: 'building-ngo',\n icon: [384, 512, [], \"e4d7\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM168 64l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 64 16 0 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 24c0 13.3-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24l0-88c0-8.8 7.2-16 16-16zM304 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32c0-8.8-7.2-16-16-16zm-48 16c0-26.5 21.5-48 48-48s48 21.5 48 48l0 32c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-32zM61.3 71.1l34.7 52L96 80c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4L64 132.8 64 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4z\"]\n};\nconst faManatSign = {\n prefix: 'fas',\n iconName: 'manat-sign',\n icon: [384, 512, [], \"e1d5\", \"M192 32c-17.7 0-32 14.3-32 32l0 34.7C69.2 113.9 0 192.9 0 288L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-59.6 40.8-109.8 96-124l0 284c0 17.7 14.3 32 32 32s32-14.3 32-32l0-284c55.2 14.2 96 64.3 96 124l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-95.1-69.2-174.1-160-189.3L224 64c0-17.7-14.3-32-32-32z\"]\n};\nconst faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M369.8 37.4c14.7 9.8 18.7 29.7 8.9 44.4L337.1 144l62.9 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-105.5 0-64 96L400 304c17.7 0 32 14.3 32 32s-14.3 32-32 32l-212.2 0-65.2 97.7c-9.8 14.7-29.7 18.7-44.4 8.9s-18.7-29.7-8.9-44.4L110.9 368 48 368c-17.7 0-32-14.3-32-32s14.3-32 32-32l105.5 0 64-96L48 208c-17.7 0-32-14.3-32-32s14.3-32 32-32l212.2 0 65.2-97.7c9.8-14.7 29.7-18.7 44.4-8.9z\"]\n};\nconst faBorderTopLeft = {\n prefix: 'fas',\n iconName: 'border-top-left',\n icon: [448, 512, [\"border-style\"], \"f853\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336c0-8.8 7.2-16 16-16l336 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32C35.8 32 0 67.8 0 112L0 448zm160 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-96 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faBorderStyle = faBorderTopLeft;\nconst faMapLocationDot = {\n prefix: 'fas',\n iconName: 'map-location-dot',\n icon: [576, 512, [\"map-marked-alt\"], \"f5a0\", \"M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152l0 270.8c0 9.8-6 18.6-15.1 22.3L416 503l0-302.6zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6l0 251.4L32.9 502.7C17.1 509 0 497.4 0 480.4L0 209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77l0 249.3L192 449.4 192 255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faMapMarkedAlt = faMapLocationDot;\nconst faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9 0 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5C370.6 435.2 416 382.9 416 320c0-37-15.7-70.4-40.8-93.7c-7-6.5-6.5-18.6 1-24.4C410.1 175.5 432 134.3 432 88c0-16.8-2.9-33-8.2-48c-4.6-13 10.2-30 21.4-22c53.5 38 92.7 94.8 107.8 160.7c.5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9l26 0c3.4 0 6.2 2.6 6.3 6c.1 3.3 .2 6.6 .2 10c0 17.5-1.7 34.7-4.8 51.3c-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9l14.6 0c4.6 0 7.7 4.8 5.7 9C487.2 450.5 394.8 512 288 512S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9l14.6 0c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3C17.7 274.7 16 257.5 16 240c0-3.3 .1-6.7 .2-10c.1-3.4 2.9-6 6.3-6l26 0c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9C38.1 112.8 77.3 56 130.8 18c11.3-8 26 8.9 21.4 22c-5.3 15-8.2 31.2-8.2 48c0 46.3 21.9 87.5 55.8 113.9c7.5 5.8 8 17.9 1 24.4C175.7 249.6 160 283 160 320c0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"]\n};\nconst faSquarePollVertical = {\n prefix: 'fas',\n iconName: 'square-poll-vertical',\n icon: [448, 512, [\"poll\"], \"f681\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 192c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zm64-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-192zM320 288c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32z\"]\n};\nconst faPoll = faSquarePollVertical;\nconst faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [9749], \"f7b6\", \"M88 0C74.7 0 64 10.7 64 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C120.5 112.3 128 119.9 128 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C119.5 47.7 112 40.1 112 24c0-13.3-10.7-24-24-24zM32 192c-17.7 0-32 14.3-32 32L0 416c0 53 43 96 96 96l192 0c53 0 96-43 96-96l16 0c61.9 0 112-50.1 112-112s-50.1-112-112-112l-48 0L32 192zm352 64l16 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-16 0 0-96zM224 24c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C232.5 112.3 240 119.9 240 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C231.5 47.7 224 40.1 224 24z\"]\n};\nconst faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [\"battery-car\"], \"f5df\", \"M80 96c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l16 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 160c0-35.3 28.7-64 64-64l16 0zm304 96c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 32-32 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0 0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32 32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0-32zM80 240c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faBatteryCar = faCarBattery;\nconst faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [127873], \"f06b\", \"M190.5 68.8L225.3 128l-1.3 0-72 0c-22.1 0-40-17.9-40-40s17.9-40 40-40l2.2 0c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40L32 128c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l448 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-41.6 0c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88l-2.2 0c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0L152 0C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40l-72 0-1.3 0 34.8-59.2C329.1 55.9 342.9 48 357.8 48l2.2 0c22.1 0 40 17.9 40 40zM32 288l0 176c0 26.5 21.5 48 48 48l144 0 0-224L32 288zM288 512l144 0c26.5 0 48-21.5 48-48l0-176-192 0 0 224z\"]\n};\nconst faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [9857], \"f528\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM352 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M256 0a56 56 0 1 1 0 112A56 56 0 1 1 256 0zM134.1 143.8c3.3-13 15-23.8 30.2-23.8c12.3 0 22.6 7.2 27.7 17c12 23.2 36.2 39 64 39s52-15.8 64-39c5.1-9.8 15.4-17 27.7-17c15.3 0 27 10.8 30.2 23.8c7 27.8 32.2 48.3 62.1 48.3c10.8 0 21-2.7 29.8-7.4c8.4-4.4 18.9-4.5 27.6 .9c13 8 17.1 25 9.2 38L399.7 400 384 400l-40.4 0-175.1 0L128 400l-15.7 0L5.4 223.6c-7.9-13-3.8-30 9.2-38c8.7-5.3 19.2-5.3 27.6-.9c8.9 4.7 19 7.4 29.8 7.4c29.9 0 55.1-20.5 62.1-48.3zM256 224s0 0 0 0s0 0 0 0s0 0 0 0zM112 432l288 0 41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6L86.6 512C74.1 512 64 501.9 64 489.4c0-6 2.4-11.8 6.6-16L112 432z\"]\n};\nconst faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1c0 0 .1 0 .1 0c0 0 0 0 0 0s0 0 0 0L247.9 288s0 0 0 0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7l40.6 0c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7s0 0 0 0c-6.3-12.7-6.3-12.7-6.3-12.7s0 0 0 0s0 0 0 0c0 0 .1 0 .1 0l.2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7l0 6.7 0 41.3 0 16c0 61.9-50.1 112-112 112l-44.3 0c-59.4 0-108.5-46.4-111.8-105.8L306.6 352l-37.2 0-1.2 22.2C264.9 433.6 215.8 480 156.3 480L112 480C50.1 480 0 429.9 0 368l0-16 0-41.3L0 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4L64 368c0 26.5 21.5 48 48 48l44.3 0c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368l0-42.6c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3l44.3 0c26.5 0 48-21.5 48-48z\"]\n};\nconst faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [448, 512, [], \"f43c\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 64l0 64 64 0 0-64 64 0 0 64 64 0 0-64 64 0 0 64-64 0 0 64 64 0 0 64-64 0 0 64 64 0 0 64-64 0 0-64-64 0 0 64-64 0 0-64-64 0 0 64-64 0 0-64 64 0 0-64-64 0 0-64 64 0 0-64-64 0 0-64 64 0zm64 128l64 0 0-64-64 0 0 64zm0 64l0-64-64 0 0 64 64 0zm64 0l-64 0 0 64 64 0 0-64zm0 0l64 0 0-64-64 0 0 64z\"]\n};\nconst faBuildingCircleCheck = {\n prefix: 'fas',\n iconName: 'building-circle-check',\n icon: [640, 512, [], \"e4d2\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faPersonChalkboard = {\n prefix: 'fas',\n iconName: 'person-chalkboard',\n icon: [640, 512, [], \"e53d\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-288 56 0 64 0 16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-64 192 0 0 192-192 0 0-32-64 0 0 48c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-224c0-26.5-21.5-48-48-48L368 0c-26.5 0-48 21.5-48 48l0 80-76.9 0-65.9 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 480c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nconst faMarsStrokeRight = {\n prefix: 'fas',\n iconName: 'mars-stroke-right',\n icon: [640, 512, [9897, \"mars-stroke-h\"], \"f22b\", \"M208 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm174.4-88C370.7 365.8 297.1 432 208 432c-97.2 0-176-78.8-176-176s78.8-176 176-176c89.1 0 162.7 66.2 174.4 152l33.6 0 0-56c0-13.3 10.7-24 24-24s24 10.7 24 24l0 56 32 0 0-56c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2l0-56-32 0 0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56-33.6 0z\"]\n};\nconst faMarsStrokeH = faMarsStrokeRight;\nconst faHandBackFist = {\n prefix: 'fas',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 0C117.5 0 96 21.5 96 48l0 48 0 28.5L96 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-26.7-9 7.5C40.4 169 32 187 32 206L32 244c0 38 16.9 74 46.1 98.3L128 384l0 96c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-105.3c46.9-19 80-65 80-118.7l0-80 0-16 0-16c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 83.5 329.3 64 304 64c-12.4 0-23.6 4.7-32.1 12.3C270 51.5 249.3 32 224 32c-12.4 0-23.6 4.7-32.1 12.3C190 19.5 169.3 0 144 0z\"]\n};\nconst faHandRock = faHandBackFist;\nconst faSquareCaretUp = {\n prefix: 'fas',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4l-208 0c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nconst faCaretSquareUp = faSquareCaretUp;\nconst faCloudShowersWater = {\n prefix: 'fas',\n iconName: 'cloud-showers-water',\n icon: [576, 512, [], \"e4e4\", \"M224 0c38.6 0 71.9 22.8 87.2 55.7C325.7 41.1 345.8 32 368 32c38.7 0 71 27.5 78.4 64l1.6 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-320 0c-35.3 0-64-28.7-64-64s28.7-64 64-64c0-53 43-96 96-96zM140.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm327.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM252.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm103.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 64l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 96l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faBarChart = faChartBar;\nconst faHandsBubbles = {\n prefix: 'fas',\n iconName: 'hands-bubbles',\n icon: [576, 512, [\"hands-wash\"], \"e05e\", \"M416 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM160 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM32 160l.1 72.6c.1 52.2 24 101 64 133.1c-.1-1.9-.1-3.8-.1-5.7l0-8c0-71.8 37-138.6 97.9-176.7l60.2-37.6c8.6-5.4 17.9-8.4 27.3-9.4l45.9-79.5c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8l-78 135.1c-3.3 5.7-10.7 7.7-16.4 4.4s-7.7-10.7-4.4-16.4l62-107.4c6.6-11.5 2.7-26.2-8.8-32.8S214 5 207.4 16.5l-68 117.8s0 0 0 0s0 0 0 0l-43.3 75L96 160c0-17.7-14.4-32-32-32s-32 14.4-32 32zM332.1 88.5L307.5 131c13.9 4.5 26.4 13.7 34.7 27c.9 1.5 1.8 2.9 2.5 4.4l28.9-50c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zm46.4 63.7l-26.8 46.4c-.6 6-2.1 11.8-4.3 17.4l4.7 0 13.3 0s0 0 0 0l31.8 0 23-39.8c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zM315.1 175c-9.4-15-29.1-19.5-44.1-10.2l-60.2 37.6C159.3 234.7 128 291.2 128 352l0 8c0 8.9 .8 17.6 2.2 26.1c35.4 8.2 61.8 40 61.8 77.9c0 6.3-.7 12.5-2.1 18.4C215.1 501 246.3 512 280 512l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-92 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l124 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-124 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l156 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-156 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l124 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-136 0s0 0 0 0s0 0 0 0l-93.2 0L305 219.1c15-9.4 19.5-29.1 10.2-44.1z\"]\n};\nconst faHandsWash = faHandsBubbles;\nconst faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M395.9 93.7c16.4-6.6 24.4-25.2 17.8-41.6s-25.2-24.4-41.6-17.8l-320 128C40 167.1 32 178.9 32 192s8 24.9 20.1 29.7l320 128c16.4 6.6 35-1.4 41.6-17.8s-1.4-35-17.8-41.6L150.2 192 395.9 93.7zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416z\"]\n};\nconst faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [128646], \"f238\", \"M96 0C43 0 0 43 0 96L0 352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512l39.7 0c8.5 0 16.6-3.4 22.6-9.4L160 448l128 0 54.6 54.6c6 6 14.1 9.4 22.6 9.4l39.7 0c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9l0-256c0-53-43-96-96-96L96 0zM64 96c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32L96 224c-17.7 0-32-14.3-32-32l0-96zM224 288a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faEyeLowVision = {\n prefix: 'fas',\n iconName: 'eye-low-vision',\n icon: [640, 512, [\"low-vision\"], \"f2a8\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223 149.5c48.6-44.3 123-50.8 179.3-11.7c60.8 42.4 78.9 123.2 44.2 186.9L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3L223 149.5zm223.1 298L83.1 161.5c-11 14.4-20.5 28.7-28.4 42.2l339 265.7c18.7-5.5 36.2-13 52.6-21.8zM34.5 268.3c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c3.1 0 6.1-.1 9.2-.2L33.1 247.8c-1.8 6.8-1.3 14 1.4 20.5z\"]\n};\nconst faLowVision = faEyeLowVision;\nconst faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M456 0c-48.6 0-88 39.4-88 88l0 29.2L12.5 390.6c-14 10.8-16.6 30.9-5.9 44.9s30.9 16.6 44.9 5.9L126.1 384l133.1 0 46.6 113.1c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3L311.1 384l40.9 0c1.1 0 2.1 0 3.2 0l46.6 113.2c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3l-42-102C484.9 354.1 544 280 544 192l0-64 0-8 80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4C629 52 603.4 32 574 32l-50.1 0C507.7 12.5 483.3 0 456 0zm0 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faSailboat = {\n prefix: 'fas',\n iconName: 'sailboat',\n icon: [576, 512, [], \"e445\", \"M256 16c0-7 4.5-13.2 11.2-15.3s13.9 .4 17.9 6.1l224 320c3.4 4.9 3.8 11.3 1.1 16.6s-8.2 8.6-14.2 8.6l-224 0c-8.8 0-16-7.2-16-16l0-320zM212.1 96.5c7 1.9 11.9 8.2 11.9 15.5l0 224c0 8.8-7.2 16-16 16L80 352c-5.7 0-11-3-13.8-8s-2.9-11-.1-16l128-224c3.6-6.3 11-9.4 18-7.5zM5.7 404.3C2.8 394.1 10.5 384 21.1 384l533.8 0c10.6 0 18.3 10.1 15.4 20.3l-4 14.3C550.7 473.9 500.4 512 443 512L133 512C75.6 512 25.3 473.9 9.7 418.7l-4-14.3z\"]\n};\nconst faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 64L208 64c-8.8 0-16 7.2-16 16l0 16-64 0 0-16c0-44.2 35.8-80 80-80L432 0c44.2 0 80 35.8 80 80l0 224c0 44.2-35.8 80-80 80l-16 0 0-64 16 0c8.8 0 16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192zm64 32c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 192c-17.7 0-32 14.3-32 32z\"]\n};\nconst faSquarePlus = {\n prefix: 'fas',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM200 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nconst faPlusSquare = faSquarePlus;\nconst faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [9961], \"f6a1\", \"M0 80c0 26.5 21.5 48 48 48l16 0 0 64 64 0 0-64 96 0 0 64 64 0 0-64 96 0 0 64 64 0 0-64 16 0c26.5 0 48-21.5 48-48l0-66.6C512 6 506 0 498.6 0c-1.7 0-3.4 .3-5 1l-49 19.6C425.7 28.1 405.5 32 385.2 32L126.8 32c-20.4 0-40.5-3.9-59.4-11.4L18.4 1c-1.6-.6-3.3-1-5-1C6 0 0 6 0 13.4L0 80zM64 288l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0 0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0z\"]\n};\nconst faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9c0 21.8-11.7 41.9-30.7 52.7L400.8 323.5 493.3 416l50.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7c-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2c27.9-18.5 65.9-15.4 90.5 9.2c24.7 24.7 27.7 62.9 9 90.9c-2.6 3.8-5.6 7.5-9 10.9L261.8 416l90.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 480c-35.3 0-64-28.7-64-64C0 249.6 127 112.9 289.3 97.5C296.2 60.2 328.8 32 368 32zm0 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faBucket = {\n prefix: 'fas',\n iconName: 'bucket',\n icon: [448, 512, [], \"e4cf\", \"M96 152l0 8-48 0 0-8C48 68.1 116.1 0 200 0l48 0c83.9 0 152 68.1 152 152l0 8-48 0 0-8c0-57.4-46.6-104-104-104l-48 0C142.6 48 96 94.6 96 152zM0 224c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-5.1 0L388.5 469c-2.6 24.4-23.2 43-47.7 43l-233.6 0c-24.6 0-45.2-18.5-47.7-43L37.1 256 32 256c-17.7 0-32-14.3-32-32z\"]\n};\nconst faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [384, 512, [], \"f130\", \"M192 0C139 0 96 43 96 96l0 160c0 53 43 96 96 96s96-43 96-96l0-160c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6c85.8-11.7 152-85.3 152-174.4l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-40z\"]\n};\nconst faCow = {\n prefix: 'fas',\n iconName: 'cow',\n icon: [640, 512, [128004], \"f6c8\", \"M96 224l0 32 0 160c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-88.2c9.9 6.6 20.6 12 32 16.1l0 24.2c0 8.8 7.2 16 16 16s16-7.2 16-16l0-16.9c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9l0 16.9c0 8.8 7.2 16 16 16s16-7.2 16-16l0-24.2c11.4-4 22.1-9.4 32-16.1l0 88.2c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-160 32 32 0 49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21c22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5 0-81.6c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 14.4-52.9-74.1C496 86.5 452.4 64 405.9 64L272 64l-16 0-64 0-48 0C77.7 64 24 117.7 24 184l0 54C9.4 249.8 0 267.8 0 288l0 17.6c0 8 6.4 14.4 14.4 14.4C46.2 320 72 294.2 72 262.4l0-6.4 0-32 0-40c0-24.3 12.1-45.8 30.5-58.9C98.3 135.9 96 147.7 96 160l0 64zM560 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16c0-12.5 10.1-22.6 22.6-22.6l178.7 0c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"]\n};\nconst faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l256 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nconst faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [129691], \"f54a\", \"M465 7c-8.5-8.5-22-9.4-31.6-2.1l-104 80c-5.9 4.5-9.4 11.6-9.4 19l0 54.1-85.6 85.6c6.7 4.2 13 9.3 18.8 15.1s10.9 12.2 15.1 18.8L353.9 192l54.1 0c7.5 0 14.5-3.5 19-9.4l80-104c7.4-9.6 6.5-23.1-2.1-31.6L465 7zM121.4 281.4l-112 112c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l112-112c30.2-30.2 30.2-79.1 0-109.3s-79.1-30.2-109.3 0z\"]\n};\nconst faFolderClosed = {\n prefix: 'fas',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M448 480L64 480c-35.3 0-64-28.7-64-64L0 192l512 0 0 224c0 35.3-28.7 64-64 64zm64-320L0 160 0 96C0 60.7 28.7 32 64 32l128 0c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8l160 0c35.3 0 64 28.7 64 64z\"]\n};\nconst faHouseTsunami = {\n prefix: 'fas',\n iconName: 'house-tsunami',\n icon: [576, 512, [], \"e515\", \"M80.8 136.5C104.9 93.8 152.6 64 209 64c16.9 0 33.1 2.7 48.2 7.7c16.8 5.5 34.9-3.6 40.4-20.4s-3.6-34.9-20.4-40.4C255.8 3.8 232.8 0 209 0C95.2 0 0 88 0 200c0 91.6 53.5 172.1 142.2 194.1c13.4 3.8 27.5 5.9 42.2 5.9c.7 0 1.4 0 2.1-.1c1.8 0 3.7 .1 5.5 .1c0 0 0 0 0 0c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0c-22.4 15.5-49.9 26.1-77.4 26.1c0 0-.1 0-.1 0c-12.4 0-24-1.5-34.9-4.3C121.6 320.2 96 287 96 248c0-48.5 39.5-88 88.4-88c13.5 0 26.1 3 37.5 8.3c16 7.5 35.1 .6 42.5-15.5s.6-35.1-15.5-42.5C229.3 101.1 207.4 96 184.4 96c-40 0-76.4 15.4-103.6 40.5zm252-18.1c-8.1 6-12.8 15.5-12.8 25.6l0 121c1.6 1 3.3 2 4.8 3.1c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c5.8 1.4 11.2 3.4 16.2 6.2c.7-2.7 1.1-5.5 1.1-8.4l-.4-144c0-10-4.7-19.4-12.7-25.5l-95.5-72c-11.4-8.6-27.1-8.6-38.5 0l-96 72zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nconst faSquareNfi = {\n prefix: 'fas',\n iconName: 'square-nfi',\n icon: [448, 512, [], \"e576\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm75.7 64.6C68.8 162.5 64 168.8 64 176l0 160c0 8.8 7.2 16 16 16s16-7.2 16-16l0-102.2 66.3 110.5c3.7 6.2 11.1 9.1 18 7.2s11.7-8.2 11.7-15.4l0-160c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 102.2L93.7 167.8c-3.7-6.2-11.1-9.1-18-7.2zM224 176l0 64 0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-32 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zm160 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 160c0 8.8 7.2 16 16 16s16-7.2 16-16l0-160z\"]\n};\nconst faArrowUpFromGroundWater = {\n prefix: 'fas',\n iconName: 'arrow-up-from-ground-water',\n icon: [576, 512, [], \"e4b5\", \"M288 352c17.7 0 32-14.3 32-32l0-210.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3 256 320c0 17.7 14.3 32 32 32zm-18.5 69.9C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM192 192L48 192c-26.5 0-48 21.5-48 48L0 425c5.3-3.1 11.2-5.4 17.5-6.9c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.1 20.3L192 192zm384 48c0-26.5-21.5-48-48-48l-144 0 0 224.5s0 0 0 0c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c6.3 1.5 12.1 3.8 17.5 6.9l0-185z\"]\n};\nconst faMartiniGlass = {\n prefix: 'fas',\n iconName: 'martini-glass',\n icon: [512, 512, [127864, \"glass-martini-alt\"], \"f57b\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3 224 448l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-178.7L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0L32 0zM173.3 128l-64-64 293.5 0-64 64-165.5 0z\"]\n};\nconst faGlassMartiniAlt = faMartiniGlass;\nconst faRotateLeft = {\n prefix: 'fas',\n iconName: 'rotate-left',\n icon: [512, 512, [\"rotate-back\", \"rotate-backward\", \"undo-alt\"], \"f2ea\", \"M48.5 224L40 224c-13.3 0-24-10.7-24-24L16 72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8L48.5 224z\"]\n};\nconst faRotateBack = faRotateLeft;\nconst faRotateBackward = faRotateLeft;\nconst faUndoAlt = faRotateLeft;\nconst faTableColumns = {\n prefix: 'fas',\n iconName: 'table-columns',\n icon: [512, 512, [\"columns\"], \"f0db\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm64 64l0 256 160 0 0-256L64 160zm384 0l-160 0 0 256 160 0 0-256z\"]\n};\nconst faColumns = faTableColumns;\nconst faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M448 96c0-35.3-28.7-64-64-64c-6.6 0-13 1-19 2.9c-22.5 7-48.1 14.9-71 9c-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71C1 403 0 409.4 0 416c0 35.3 28.7 64 64 64c6.6 0 13-1 19.1-2.9c22.5-7 48.1-14.9 71-9c75.2 19.1 156.4-11 213.7-68.3s87.5-138.5 68.3-213.7c-5.8-22.9 2-48.4 9-71c1.9-6 2.9-12.4 2.9-19.1zM212.5 127.4c-54.6 16-101.1 62.5-117.1 117.1C92.9 253 84 257.8 75.5 255.4S62.2 244 64.6 235.5c19.1-65.1 73.7-119.8 138.9-138.9c8.5-2.5 17.4 2.4 19.9 10.9s-2.4 17.4-10.9 19.9z\"]\n};\nconst faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [576, 512, [], \"e063\", \"M32 224.2c0-22.2 3.2-43.6 9.2-63.9L262.2 321c-4 9.5-6.2 20-6.2 31l0 160-128 0c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C48.6 322.4 32 274.1 32 224.2zm248.3 70.4L53 129.3C88.7 53 166.2 0 256 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c5.4 6.7 8.6 14.8 9.4 23.2L336 272c-21.7 0-41.3 8.6-55.7 22.6zM336 304l198 0s0 0 0 0l10 0-19.7 64L368 368c-8.8 0-16 7.2-16 16s7.2 16 16 16l146.5 0-9.8 32L368 432c-8.8 0-16 7.2-16 16s7.2 16 16 16l126.8 0-.9 2.8c-8.3 26.9-33.1 45.2-61.2 45.2L288 512l0-160c0-14 6-26.7 15.6-35.4c0 0 0 0 0 0c8.5-7.8 19.9-12.6 32.4-12.6zm48-80a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8 512 128l-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48 0 224 28.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123zM16 128c-8.8 0-16 7.2-16 16L0 352c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-224-80 0zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128l0 224c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-208c0-8.8-7.2-16-16-16l-80 0zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8l240 0c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.6L63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8L301.5 179.8l57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"]\n};\nconst faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [\"dolly-box\"], \"f472\", \"M0 32C0 14.3 14.3 0 32 0l72.9 0c27.5 0 52 17.6 60.7 43.8L257.7 320c30.1 .5 56.8 14.9 74 37l202.1-67.4c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L352 417.7c-.9 52.2-43.5 94.3-96 94.3c-53 0-96-43-96-96c0-30.8 14.5-58.2 37-75.8L104.9 64 32 64C14.3 64 0 49.7 0 32zM244.8 134.5c-5.5-16.8 3.7-34.9 20.5-40.3L311 79.4l19.8 60.9 60.9-19.8L371.8 59.6l45.7-14.8c16.8-5.5 34.9 3.7 40.3 20.5l49.4 152.2c5.5 16.8-3.7 34.9-20.5 40.3L334.5 307.2c-16.8 5.5-34.9-3.7-40.3-20.5L244.8 134.5z\"]\n};\nconst faDollyBox = faDolly;\nconst faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [128684], \"f48d\", \"M448 32l0 11c0 38.2 15.2 74.8 42.2 101.8l21 21c21 21 32.8 49.5 32.8 79.2l0 11c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-11c0-12.7-5.1-24.9-14.1-33.9l-21-21C405.9 151.1 384 98.1 384 43l0-11c0-17.7 14.3-32 32-32s32 14.3 32 32zM576 256l0-11c0-38.2-15.2-74.8-42.2-101.8l-21-21c-21-21-32.8-49.5-32.8-79.2l0-11c0-17.7 14.3-32 32-32s32 14.3 32 32l0 11c0 12.7 5.1 24.9 14.1 33.9l21 21c39 39 60.9 91.9 60.9 147.1l0 11c0 17.7-14.3 32-32 32s-32-14.3-32-32zM0 416c0-35.3 28.7-64 64-64l352 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32L64 512c-35.3 0-64-28.7-64-64l0-32zm224 0l0 32 160 0 0-32-160 0zm288-64c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32z\"]\n};\nconst faMinimize = {\n prefix: 'fas',\n iconName: 'minimize',\n icon: [512, 512, [\"compress-arrows-alt\"], \"f78c\", \"M456 224l-144 0c-13.3 0-24-10.7-24-24l0-144c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l40 40L442.3 5.7C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143l40 40c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433l-40 40c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2l0-144c0-13.3 10.7-24 24-24l144 0zm-256 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40L69.7 506.3C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8l144 0zM56 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l40-40L5.7 69.7C2 66 0 61.1 0 56s2-10 5.7-13.7L42.3 5.7C46 2 50.9 0 56 0s10 2 13.7 5.7L143 79l40-40c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 144c0 13.3-10.7 24-24 24L56 224z\"]\n};\nconst faCompressArrowsAlt = faMinimize;\nconst faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M180.7 4.7c6.2-6.2 16.4-6.2 22.6 0l80 80c2.5 2.5 4.1 5.8 4.6 9.3l40.2 322L55.9 416 96.1 94c.4-3.5 2-6.8 4.6-9.3l80-80zM152 272c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0zM32 448l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M298.9 64l68.6 160L256 224l-64-64 0-96 106.9 0zM445.1 242.7l-87.4-204C347.6 15.3 324.5 0 298.9 0L176 0c-26.5 0-48 21.5-48 48l0 112-32 0c-17.7 0-32 14.3-32 32l0 106.8C26.2 316.8 0 355.3 0 400c0 61.9 50.1 112 112 112l256 0c61.9 0 112-50.1 112-112c0-17.2-3.9-33.5-10.8-48l42.8 0 0 50.7c0 17 6.7 33.3 18.7 45.3l54.6 54.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L576 402.7l0-82.7 0-84.8L633 164c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-57 71.2c-9.1 11.3-14 25.4-14 40l0 52.8-64 0 0-31.3c.1-2.4-.2-4.8-.6-7.1s-1.2-4.7-2.2-6.8zM368 352c26.5 0 48 21.5 48 48s-21.5 48-48 48l-256 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l256 0zM144 400a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm216 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-56-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM200 424a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faAnglesRight = {\n prefix: 'fas',\n iconName: 'angles-right',\n icon: [512, 512, [187, \"angle-double-right\"], \"f101\", \"M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nconst faAngleDoubleRight = faAnglesRight;\nconst faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M256 0c5.3 0 10.3 2.7 13.3 7.1c15.8 23.5 36.7 63.7 49.2 109c7.2 26.4 11.8 55.2 10.4 84c11.5-8.8 23.7-16.7 35.8-23.6c41-23.3 84.4-36.9 112.2-42.5c5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7c-9.1 15.9-19.9 31.7-32.4 46.3c27.8 6.6 52.4 17.3 67.2 25.5c5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1c-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.1c1.5 6.1-.6 12.4-5.5 16.4s-11.6 4.6-17.2 1.9L280 417.2l0 70.8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-70.8-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.9s-7-10.3-5.5-16.4l8.3-33.1c-22.2 2.6-45 0-65.2-4.6c-28.9-6.6-54.6-17.6-69.8-26.1c-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14c14.8-8.2 39.4-18.8 67.2-25.5C78.9 296.3 68.1 280.5 59 264.6c-23.4-40.8-37.1-84-42.7-111.7c-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5c12.1 6.9 24.3 14.7 35.8 23.6c-1.4-28.7 3.1-57.6 10.4-84c12.5-45.3 33.4-85.5 49.2-109c3-4.4 8-7.1 13.3-7.1z\"]\n};\nconst faCirclePlay = {\n prefix: 'fas',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9l0 176c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"]\n};\nconst faPlayCircle = faCirclePlay;\nconst faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M614.3 247c-5.2 7.9-16.2 8.5-22.9 1.8L391.2 48.6c-6.7-6.7-6.2-17.8 1.8-22.9C418.1 9.4 447.9 0 480 0c88.4 0 160 71.6 160 160c0 32.1-9.4 61.9-25.7 87zM567 294.3c-25 16.3-54.9 25.7-87 25.7c-88.4 0-160-71.6-160-160c0-32.1 9.4-61.9 25.7-87c5.2-7.9 16.2-8.5 22.9-1.8L568.8 271.4c6.7 6.7 6.2 17.8-1.8 22.9zM301.5 368c9.5 0 16.9 8.2 15 17.5C301.1 457.8 236.9 512 160 512S18.9 457.8 3.5 385.5c-2-9.3 5.5-17.5 15-17.5l283.1 0zm0-32L18.5 336c-9.5 0-16.9-8.2-15-17.5C18.9 246.2 83.1 192 160 192s141.1 54.2 156.5 126.5c2 9.3-5.5 17.5-15 17.5z\"]\n};\nconst faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M0 224L0 416c0 17.7 14.3 32 32 32l64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0c17.7 0 32-14.3 32-32l0-192c0-17.7-14.3-32-32-32l-32 0 0-32c0-17.7-14.3-32-32-32l-32 0 0-32c0-17.7-14.3-32-32-32L160 64c-17.7 0-32 14.3-32 32l0 32-32 0c-17.7 0-32 14.3-32 32l0 32-32 0c-17.7 0-32 14.3-32 32z\"]\n};\nconst faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [8364, \"eur\", \"euro\"], \"f153\", \"M48.1 240c-.1 2.7-.1 5.3-.1 8l0 16c0 2.7 0 5.3 .1 8L32 272c-17.7 0-32 14.3-32 32s14.3 32 32 32l28.3 0C89.9 419.9 170 480 264 480l24 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-24 0c-57.9 0-108.2-32.4-133.9-80L256 336c17.7 0 32-14.3 32-32s-14.3-32-32-32l-143.8 0c-.1-2.6-.2-5.3-.2-8l0-16c0-2.7 .1-5.4 .2-8L256 240c17.7 0 32-14.3 32-32s-14.3-32-32-32l-125.9 0c25.7-47.6 76-80 133.9-80l24 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-24 0C170 32 89.9 92.1 60.3 176L32 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l16.1 0z\"]\n};\nconst faEur = faEuroSign;\nconst faEuro = faEuroSign;\nconst faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [129681], \"f6c0\", \"M248 48l0 208 48 0 0-197.3c23.9 13.8 40 39.7 40 69.3l0 128 48 0 0-128C384 57.3 326.7 0 256 0L192 0C121.3 0 64 57.3 64 128l0 128 48 0 0-128c0-29.6 16.1-55.5 40-69.3L152 256l48 0 0-208 48 0zM48 288c-12.1 0-23.2 6.8-28.6 17.7l-16 32c-5 9.9-4.4 21.7 1.4 31.1S20.9 384 32 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 256 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c11.1 0 21.4-5.7 27.2-15.2s6.4-21.2 1.4-31.1l-16-32C423.2 294.8 412.1 288 400 288L48 288z\"]\n};\nconst faCircleCheck = {\n prefix: 'fas',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faCheckCircle = faCircleCheck;\nconst faCircleStop = {\n prefix: 'fas',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32z\"]\n};\nconst faStopCircle = faCircleStop;\nconst faCompassDrafting = {\n prefix: 'fas',\n iconName: 'compass-drafting',\n icon: [512, 512, [\"drafting-compass\"], \"f568\", \"M352 96c0 14.3-3.1 27.9-8.8 40.2L396 227.4c-23.7 25.3-54.2 44.1-88.5 53.6L256 192c0 0 0 0 0 0s0 0 0 0l-68 117.5c21.5 6.8 44.3 10.5 68.1 10.5c70.7 0 133.8-32.7 174.9-84c11.1-13.8 31.2-16 45-5s16 31.2 5 45C428.1 341.8 347 384 256 384c-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496l0-55.4c0-8.4 2.2-16.7 6.5-24.1l60-103.7C53.7 301.6 41.8 289.3 31.2 276c-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2c0-53 43-96 96-96s96 43 96 96zm21 297.9c32.6-12.8 62.5-30.8 88.9-52.9l43.7 75.5c4.2 7.3 6.5 15.6 6.5 24.1l0 55.4c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9L373 393.9zM256 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faDraftingCompass = faCompassDrafting;\nconst faPlateWheat = {\n prefix: 'fas',\n iconName: 'plate-wheat',\n icon: [512, 512, [], \"e55a\", \"M176 32c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80l0-16c0-8.8 7.2-16 16-16zM56 64l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80l0-16zM400 32c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80l0-16c0-8.8 7.2-16 16-16zm80 160l0 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16l0 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80zm-96 16l0 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320l456.4 0c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446l0 2c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-2c-48.2-9-86.3-48.2-92.5-98.4z\"]\n};\nconst faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M75.8 304.8L1 35.7c-.7-2.5-1-5-1-7.5C0 12.6 12.6 0 28.2 0H482.4C498.8 0 512 13.2 512 29.6c0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9c-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1c-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7c-9.3 0-17.5-6.2-20-15.2z\"]\n};\nconst faPersonShelter = {\n prefix: 'fas',\n iconName: 'person-shelter',\n icon: [512, 512, [], \"e54f\", \"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.4L256 68.9 448 178.6 448 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-320c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm-8 280l0-88 16 0 0 88c0 13.3 10.7 24 24 24s24-10.7 24-24l0-174.5 26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3l-37.9 70.3c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5 200 488c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nconst faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [384, 512, [9906], \"f22c\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1L160 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-130.9z\"]\n};\nconst faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zm96 320l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L96 416c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM144 64l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M481 31C445.1-4.8 386.9-4.8 351 31l-15 15L322.9 33C294.8 4.9 249.2 4.9 221.1 33L135 119c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L255 66.9c9.4-9.4 24.6-9.4 33.9 0L302.1 80 186.3 195.7 316.3 325.7 481 161c35.9-35.9 35.9-94.1 0-129.9zM293.7 348.3L163.7 218.3 99.5 282.5c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l64.2-64.2z\"]\n};\nconst faFaceLaughBeam = {\n prefix: 'fas',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM217.6 212.8s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faLaughBeam = faFaceLaughBeam;\nconst faHelicopterSymbol = {\n prefix: 'fas',\n iconName: 'helicopter-symbol',\n icon: [512, 512, [], \"e502\", \"M445.3 224l64.7 0C495.6 108.2 403.8 16.4 288 2l0 64.7C368.4 80.1 431.9 143.6 445.3 224zM510 288l-64.7 0C431.9 368.4 368.4 431.9 288 445.3l0 64.7c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510l0-64.7C143.6 431.9 80.1 368.4 66.7 288L2 288zm0-64l64.7 0C80.1 143.6 143.6 80.1 224 66.7L224 2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 96 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-96 0 0-64z\"]\n};\nconst faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm161.5-86.1c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3l0 50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6l0-50.1c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faCircleChevronUp = {\n prefix: 'fas',\n iconName: 'circle-chevron-up',\n icon: [512, 512, [\"chevron-circle-up\"], \"f139\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"]\n};\nconst faChevronCircleUp = faCircleChevronUp;\nconst faLariSign = {\n prefix: 'fas',\n iconName: 'lari-sign',\n icon: [384, 512, [], \"e1c8\", \"M144 32c17.7 0 32 14.3 32 32l0 32.7c5.3-.4 10.6-.7 16-.7s10.7 .2 16 .7L208 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 49.4c54.9 25.2 95.8 75.5 108.2 136.2c3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.1-29.9-22.5-55.9-45.4-74.3l0 67.9c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-95c-5.2-.7-10.6-1-16-1s-10.8 .3-16 1l0 95c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-67.9C82.7 211.5 64 247.6 64 288c0 70.7 57.3 128 128 128l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l16.9 0C18.5 382 0 337.2 0 288c0-77.5 45.9-144.3 112-174.6L112 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faVolcano = {\n prefix: 'fas',\n iconName: 'volcano',\n icon: [512, 512, [127755], \"f770\", \"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15C212.4 12.4 232.7 0 256 0s43.6 12.4 54.8 31C322 21.6 336.3 16 352 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8c19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9c11.3 0 21.8-5.6 28-15l9.7-14.6-58.9-66.3c-9.1-10.2-22.2-16.1-35.9-16.1l-41.8 0c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4L144 352zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2l41.8 0c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7c0 28.8-23.4 52.2-52.2 52.2L52.2 512C23.4 512 0 488.6 0 459.8c0-12.8 4.7-25.1 13.2-34.7l150.2-169z\"]\n};\nconst faPersonWalkingDashedLineArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-dashed-line-arrow-right',\n icon: [640, 512, [], \"e553\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224 384 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l146.7 0-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16zM392 320c-13.3 0-24 10.7-24 24l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48z\"]\n};\nconst faSterlingSign = {\n prefix: 'fas',\n iconName: 'sterling-sign',\n icon: [320, 512, [163, \"gbp\", \"pound-sign\"], \"f154\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4L48 224l-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 44.5c0 17.4-4.7 34.5-13.7 49.4L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L88.5 416l.7-1.1C104.1 390 112 361.5 112 332.5l0-44.5 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-63.6z\"]\n};\nconst faGbp = faSterlingSign;\nconst faPoundSign = faSterlingSign;\nconst faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M192 0c13.3 0 24 10.7 24 24l0 13.5c0 35.6 43.1 53.5 68.3 28.3l9.5-9.5c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-9.5 9.5C293 124.9 310.9 168 346.5 168l13.5 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-13.5 0c-35.6 0-53.5 43.1-28.3 68.3l9.5 9.5c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-9.5-9.5C259.1 293 216 310.9 216 346.5l0 13.5c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-13.5c0-35.6-43.1-53.5-68.3-28.3l-9.5 9.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l9.5-9.5C91 259.1 73.1 216 37.5 216L24 216c-13.3 0-24-10.7-24-24s10.7-24 24-24l13.5 0c35.6 0 53.5-43.1 28.3-68.3l-9.5-9.5c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l9.5 9.5C124.9 91 168 73.1 168 37.5L168 24c0-13.3 10.7-24 24-24zm48 224a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48-64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm320 80c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C574.5 312.1 591 352 624 352c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C551.9 446.5 512 463 512 496c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C417.5 423.9 401 384 368 384c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C440.1 289.5 480 273 480 240c0-8.8 7.2-16 16-16s16 7.2 16 16zm0 112a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faSquarePersonConfined = {\n prefix: 'fas',\n iconName: 'square-person-confined',\n icon: [448, 512, [], \"e577\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm96 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm80 104c0-30.9 25.1-56 56-56s56 25.1 56 56l0 102.1c0 36.4-29.5 65.9-65.9 65.9c-17.5 0-34.3-6.9-46.6-19.3L184.8 342l-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9L240 306.7l0-58.7z\"]\n};\nconst faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M96 128a128 128 0 1 0 256 0A128 128 0 1 0 96 128zm94.5 200.2l18.6 31L175.8 483.1l-36-146.9c-2-8.1-9.8-13.4-17.9-11.3C51.9 342.4 0 405.8 0 481.3c0 17 13.8 30.7 30.7 30.7l131.7 0c0 0 0 0 .1 0l5.5 0 112 0 5.5 0c0 0 0 0 .1 0l131.7 0c17 0 30.7-13.8 30.7-30.7c0-75.5-51.9-138.9-121.9-156.4c-8.1-2-15.9 3.3-17.9 11.3l-36 146.9L238.9 359.2l18.6-31c6.4-10.7-1.3-24.2-13.7-24.2L224 304l-19.7 0c-12.4 0-20.1 13.6-13.7 24.2z\"]\n};\nconst faArrowDownLong = {\n prefix: 'fas',\n iconName: 'arrow-down-long',\n icon: [384, 512, [\"long-arrow-down\"], \"f175\", \"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7L86.6 329.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128z\"]\n};\nconst faLongArrowDown = faArrowDownLong;\nconst faTentArrowDownToLine = {\n prefix: 'fas',\n iconName: 'tent-arrow-down-to-line',\n icon: [640, 512, [], \"e57e\", \"M241.8 111.9c8.9 9.9 8.1 25-1.8 33.9l-80 72c-9.1 8.2-23 8.2-32.1 0l-80-72c-9.9-8.9-10.7-24-1.8-33.9s24-10.7 33.9-1.8l39.9 36L120 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 122.1 39.9-36c9.9-8.9 25-8.1 33.9 1.8zm122.8 22.6c11.5-8.7 27.3-8.7 38.8 0l168 128c6.6 5 11 12.5 12.3 20.7l24 160 .7 4.7c17.5 .2 31.6 14.4 31.6 32c0 17.7-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l127.6 0 .7-4.7 24-160c1.2-8.2 5.6-15.7 12.3-20.7l168-128zM384 448l80 0L402.7 325.5c-1.7-3.4-5.1-5.5-8.8-5.5c-5.5 0-9.9 4.4-9.9 9.9L384 448z\"]\n};\nconst faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.4-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z\"]\n};\nconst faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [\"mail-reply-all\"], \"f122\", \"M209.4 39.5c-9.1-9.6-24.3-10-33.9-.9L33.8 173.2c-19.9 18.9-19.9 50.7 0 69.6L175.5 377.4c9.6 9.1 24.8 8.7 33.9-.9s8.7-24.8-.9-33.9L66.8 208 208.5 73.4c9.6-9.1 10-24.3 .9-33.9zM352 64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144c-6.7 6.1-10.6 14.7-10.6 23.8s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2l0-64 32 0c53 0 96 43 96 96c0 30.4-12.8 47.9-22.2 56.7c-5.5 5.1-9.8 12-9.8 19.5c0 10.9 8.8 19.7 19.7 19.7c2.8 0 5.6-.6 8.1-1.9C494.5 467.9 576 417.3 576 304c0-97.2-78.8-176-176-176l-48 0 0-64z\"]\n};\nconst faMailReplyAll = faReplyAll;\nconst faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [129523], \"f0f2\", \"M176 56l0 40 160 0 0-40c0-4.4-3.6-8-8-8L184 48c-4.4 0-8 3.6-8 8zM128 96l0-40c0-30.9 25.1-56 56-56L328 0c30.9 0 56 25.1 56 56l0 40 0 32 0 352-256 0 0-352 0-32zM64 96l32 0 0 384-32 0c-35.3 0-64-28.7-64-64L0 160c0-35.3 28.7-64 64-64zM448 480l-32 0 0-384 32 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64z\"]\n};\nconst faPersonSkating = {\n prefix: 'fas',\n iconName: 'person-skating',\n icon: [448, 512, [\"skating\"], \"f7c5\", \"M352 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM128 128c0-17.7 14.3-32 32-32l159.4 0c43.6 0 64.6 53.4 32.8 83.1l-74.4 69.4 60.2 60.2c9 9 14.1 21.2 14.1 33.9l0 73.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7-77.9-77.8c-26.6-26.6-24.6-70.3 4.3-94.4l20.4-17L160 160c-17.7 0-32-14.3-32-32zM81.4 353.4l86.9-86.9c4.6 10 11 19.3 19.3 27.5l21.8 21.8-82.7 82.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm322.5 95.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4L272 512c-8.8 0-16-7.2-16-16s7.2-16 16-16l88.8 0c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM135.2 478.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L4.7 411.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"]\n};\nconst faSkating = faPersonSkating;\nconst faFilterCircleDollar = {\n prefix: 'fas',\n iconName: 'filter-circle-dollar',\n icon: [576, 512, [\"funnel-dollar\"], \"f662\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0L472 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm120.8-32.6c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7l0-9.4c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6c0 0 0 0 0 0s0 0 0 0c7 2.3 15.1 4.8 23.7 6.6l0 11.4c0 8.8 7.2 16 16 16s16-7.2 16-16l0-10.8c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5c0 0 0 0 0-.1c-.1-1.9 .3-2.9 .8-3.6z\"]\n};\nconst faFunnelDollar = faFilterCircleDollar;\nconst faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [128247], \"f083\", \"M220.6 121.2L271.1 96 448 96l0 96-114.8 0c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24L64 192l0-64 128 0c9.9 0 19.7-2.3 28.6-6.8zM0 128L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L271.1 32c-9.9 0-19.7 2.3-28.6 6.8L192 64l-32 0 0-16c0-8.8-7.2-16-16-16L80 32c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM168 304a88 88 0 1 1 176 0 88 88 0 1 1 -176 0z\"]\n};\nconst faCircleArrowDown = {\n prefix: 'fas',\n iconName: 'circle-arrow-down',\n icon: [512, 512, [\"arrow-circle-down\"], \"f0ab\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM127 297c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 120c0-13.3 10.7-24 24-24s24 10.7 24 24l0 214.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 409c-9.4 9.4-24.6 9.4-33.9 0L127 297z\"]\n};\nconst faArrowCircleDown = faCircleArrowDown;\nconst faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [\"arrow-right-to-file\"], \"f56f\", \"M128 64c0-35.3 28.7-64 64-64L352 0l0 128c0 17.7 14.3 32 32 32l128 0 0 288c0 35.3-28.7 64-64 64l-256 0c-35.3 0-64-28.7-64-64l0-112 174.1 0-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39L128 288l0-224zm0 224l0 48L24 336c-13.3 0-24-10.7-24-24s10.7-24 24-24l104 0zM512 128l-128 0L384 0 512 128z\"]\n};\nconst faArrowRightToFile = faFileImport;\nconst faSquareArrowUpRight = {\n prefix: 'fas',\n iconName: 'square-arrow-up-right',\n icon: [448, 512, [\"external-link-square\"], \"f14c\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM160 144c-13.3 0-24 10.7-24 24s10.7 24 24 24l94.1 0L119 327c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135L288 328c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24l-152 0z\"]\n};\nconst faExternalLinkSquare = faSquareArrowUpRight;\nconst faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6l0 167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5l0-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128l2.2 0z\"]\n};\nconst faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [576, 512, [128220], \"f70e\", \"M0 80l0 48c0 17.7 14.3 32 32 32l16 0 48 0 0-80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48l0 304c0 35.3 28.7 64 64 64s64-28.7 64-64l0-5.3c0-32.4 26.3-58.7 58.7-58.7L480 320l0-192c0-53-43-96-96-96L112 32zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16l-245.3 0c-14.7 0-26.7 11.9-26.7 26.7l0 5.3c0 53-43 96-96 96l176 0 96 0z\"]\n};\nconst faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M183.1 235.3c33.7 20.7 62.9 48.1 85.8 80.5c7 9.9 13.4 20.3 19.1 31c5.7-10.8 12.1-21.1 19.1-31c22.9-32.4 52.1-59.8 85.8-80.5C437.6 207.8 490.1 192 546 192l9.9 0c11.1 0 20.1 9 20.1 20.1C576 360.1 456.1 480 308.1 480L288 480l-20.1 0C119.9 480 0 360.1 0 212.1C0 201 9 192 20.1 192l9.9 0c55.9 0 108.4 15.8 153.1 43.3zM301.5 37.6c15.7 16.9 61.1 71.8 84.4 164.6c-38 21.6-71.4 50.8-97.9 85.6c-26.5-34.8-59.9-63.9-97.9-85.6c23.2-92.8 68.6-147.7 84.4-164.6C278 33.9 282.9 32 288 32s10 1.9 13.5 5.6z\"]\n};\nconst faLocationPinLock = {\n prefix: 'fas',\n iconName: 'location-pin-lock',\n icon: [512, 512, [], \"e51f\", \"M215.7 499.2c11-13.8 25.1-31.7 40.3-52.3l0-94.8c0-23.7 12.9-44.4 32-55.4l0-24.6c0-55.6 40.5-101.7 93.6-110.5C367 70 287.7 0 192 0C86 0 0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [320, 512, [9208], \"f04c\", \"M48 64C21.5 64 0 85.5 0 112L0 400c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48L48 64zm192 0c-26.5 0-48 21.5-48 48l0 288c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48l-32 0z\"]\n};\nconst faHillAvalanche = {\n prefix: 'fas',\n iconName: 'hill-avalanche',\n icon: [576, 512, [], \"e507\", \"M439.7 401.9c34.2 23.1 81.1 19.5 111.4-10.8c34.4-34.4 34.4-90.1 0-124.4c-27.8-27.8-69.5-33.1-102.6-16c-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7C401.2 261.3 416 236.4 416 208c0-33.9-21.1-62.9-50.9-74.5c1.9-6.8 2.9-14 2.9-21.5c0-44.2-35.8-80-80-80c-27.3 0-51.5 13.7-65.9 34.6C216.3 46.6 197.9 32 176 32c-26.5 0-48 21.5-48 48c0 4 .5 7.9 1.4 11.6L439.7 401.9zM480 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM68.3 87C43.1 61.8 0 79.7 0 115.3L0 432c0 44.2 35.8 80 80 80l316.7 0c35.6 0 53.5-43.1 28.3-68.3L68.3 87z\"]\n};\nconst faTemperatureEmpty = {\n prefix: 'fas',\n iconName: 'temperature-empty',\n icon: [320, 512, [\"temperature-0\", \"thermometer-0\", \"thermometer-empty\"], \"f2cb\", \"M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5L112 112zM160 0C98.1 0 48 50.2 48 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L272 112C272 50.2 221.9 0 160 0zm0 416a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faTemperature0 = faTemperatureEmpty;\nconst faThermometer0 = faTemperatureEmpty;\nconst faThermometerEmpty = faTemperatureEmpty;\nconst faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [128163], \"f1e2\", \"M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 304S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104l0 8c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-8c0-75.1 60.9-136 136-136l8 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-8 0z\"]\n};\nconst faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152c0-13.3 10.7-24 24-24l88 0c44.2 0 80 35.8 80 80c0 28-14.4 52.7-36.3 67l34.1 75.1c5.5 12.1 .1 26.3-11.9 31.8s-26.3 .1-31.8-11.9L268.9 288 208 288l0 72c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-96 0-112zm48 88l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0 64z\"]\n};\nconst faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm80 256l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L80 384c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-32l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faContactCard = faAddressCard;\nconst faVcard = faAddressCard;\nconst faScaleUnbalancedFlip = {\n prefix: 'fas',\n iconName: 'scale-unbalanced-flip',\n icon: [640, 512, [\"balance-scale-right\"], \"f516\", \"M117.9 62.4c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l113 37.7C265 15.8 290.7 0 320 0c44.2 0 80 35.8 80 80c0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.4 145.2c-4.5 3.2-9.3 5.9-14.4 8.2L352 480c0 17.7-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-294.7c-21-9.2-37.2-27-44.2-49l-125.9-42zM200.4 288L128 163.8 55.6 288l144.9 0zM128 384C65.1 384 12.8 350 2 305.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C243.2 350 190.9 384 128 384zm382.8-92.2L438.4 416l144.9 0L510.8 291.8zm126 141.3C626 478 573.7 512 510.8 512s-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1z\"]\n};\nconst faBalanceScaleRight = faScaleUnbalancedFlip;\nconst faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l15.3 0 89.6 128L47.3 384 32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-15.3 0L215.1 256l89.6-128 15.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64L32 64zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368l0 80c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-128z\"]\n};\nconst faDiamondTurnRight = {\n prefix: 'fas',\n iconName: 'diamond-turn-right',\n icon: [512, 512, [\"directions\"], \"f5eb\", \"M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8l0 56-64 0c-35.3 0-64 28.7-64 64l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48c0-8.8 7.2-16 16-16l64 0 0 56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z\"]\n};\nconst faDirections = faDiamondTurnRight;\nconst faBurst = {\n prefix: 'fas',\n iconName: 'burst',\n icon: [512, 512, [], \"e4dc\", \"M37.6 4.2C28-2.3 15.2-1.1 7 7s-9.4 21-2.8 30.5l112 163.3L16.6 233.2C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4L66.8 412.8c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1L392.3 312.2l103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8L388.9 198.7l25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7L278.8 16.6C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6l-32.3 99.6L37.6 4.2z\"]\n};\nconst faHouseLaptop = {\n prefix: 'fas',\n iconName: 'house-laptop',\n icon: [640, 512, [\"laptop-house\"], \"e066\", \"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c6.7 6.2 10.3 14.8 10.3 23.5l-144 0c-19.1 0-36.3 8.4-48 21.7l0-37.7c0-8.8-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l64 0 0 128-160 0c-26.5 0-48-21.5-48-48l0-112-32 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM352 304l0 144 192 0 0-144-192 0zm-48-16c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32l0 160 32 0c8.8 0 16 7.2 16 16c0 26.5-21.5 48-48 48l-48 0-192 0-48 0c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16l32 0 0-160z\"]\n};\nconst faLaptopHouse = faHouseLaptop;\nconst faFaceTired = {\n prefix: 'fas',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3l-3.2 0c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm-31.2-182l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faTired = faFaceTired;\nconst faMoneyBills = {\n prefix: 'fas',\n iconName: 'money-bills',\n icon: [640, 512, [], \"e1f3\", \"M96 96l0 224c0 35.3 28.7 64 64 64l416 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32c-35.3 0-64 28.7-64 64zm64 160c35.3 0 64 28.7 64 64l-64 0 0-64zM224 96c0 35.3-28.7 64-64 64l0-64 64 0zM576 256l0 64-64 0c0-35.3 28.7-64 64-64zM512 96l64 0 0 64c-35.3 0-64-28.7-64-64zM288 208a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 360c0 66.3 53.7 120 120 120l400 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-400 0c-39.8 0-72-32.2-72-72l0-240z\"]\n};\nconst faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M32 144c0 79.5 64.5 144 144 144l123.3 0c22.6 19.9 52.2 32 84.7 32s62.1-12.1 84.7-32l27.3 0c61.9 0 112-50.1 112-112s-50.1-112-112-112c-10.7 0-21 1.5-30.8 4.3C443.8 27.7 401.1 0 352 0c-32.6 0-62.4 12.2-85.1 32.3C242.1 12.1 210.5 0 176 0C96.5 0 32 64.5 32 144zM616 368l-336 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-64 96l-112 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-192 0L24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0c13.3 0 24-10.7 24-24s-10.7-24-24-24zM224 392c0-13.3-10.7-24-24-24L96 368c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0c13.3 0 24-10.7 24-24z\"]\n};\nconst faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M297.4 9.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0zm-96 144l-34.8 34.8c-12.9 12.9-21.9 29.2-25.8 47.1L116.8 342.9c-1.3 5.9-4.3 11.4-8.6 15.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l98.8-98.8c4.3-4.3 9.7-7.3 15.7-8.6l107.6-23.9c17.8-4 34.1-12.9 47.1-25.8l34.7-34.7c0 0 .1-.1 .1-.1s.1-.1 .1-.1l74.6-74.6-45.3-45.3L336 242.7 269.3 176l52.1-52.1L276.1 78.6l-74.7 74.7zM224 221.3L290.7 288l-12.2 12.2c-4.3 4.3-9.7 7.3-15.7 8.6l-76.7 17 17-76.7c1.3-5.9 4.3-11.4 8.6-15.7L224 221.3z\"]\n};\nconst faFontAwesome = {\n prefix: 'fas',\n iconName: 'font-awesome',\n icon: [512, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M91.7 96C106.3 86.8 116 70.5 116 52C116 23.3 92.7 0 64 0S12 23.3 12 52c0 16.7 7.8 31.5 20 41l0 3 0 352 0 64 64 0 0-64 373.6 0c14.6 0 26.4-11.8 26.4-26.4c0-3.7-.8-7.3-2.3-10.7L432 272l61.7-138.9c1.5-3.4 2.3-7 2.3-10.7c0-14.6-11.8-26.4-26.4-26.4L91.7 96z\"]\n};\nconst faFontAwesomeFlag = faFontAwesome;\nconst faFontAwesomeLogoFull = faFontAwesome;\nconst faCloudArrowUp = {\n prefix: 'fas',\n iconName: 'cloud-arrow-up',\n icon: [640, 512, [62338, \"cloud-upload\", \"cloud-upload-alt\"], \"f0ee\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128l-368 0zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39L296 392c0 13.3 10.7 24 24 24s24-10.7 24-24l0-134.1 39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\"]\n};\nconst faCloudUpload = faCloudArrowUp;\nconst faCloudUploadAlt = faCloudArrowUp;\nconst faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [127912], \"f53f\", \"M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3L344 320c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faArrowsTurnRight = {\n prefix: 'fas',\n iconName: 'arrows-turn-right',\n icon: [448, 512, [], \"e4c0\", \"M297.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L338.7 160 128 160c-35.3 0-64 28.7-64 64l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32C0 153.3 57.3 96 128 96l210.7 0L297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-53 43-96 96-96l146.7 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nconst faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M207.1 237.4L151.2 69.7C168.6 79.7 192.6 88 224 88s55.4-8.3 72.8-18.3L226.5 280.6c-1.6 4.9-2.5 10-2.5 15.2L224 464c0 26.5 21.5 48 48 48l128 0c26.5 0 48-21.5 48-48l0-193.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6l0-17.5 0-73.7 0-6.3c0-26.5-21.5-48-48-48l-4.5 0c-.2 0-.4 0-.6 0c-.4 0-.8 0-1.2 0C311 0 295.7 9.7 285.7 18.8C276.4 27.2 257.2 40 224 40s-52.4-12.8-61.7-21.2C152.3 9.7 137 0 118.3 0c-.4 0-.8 0-1.2 0c-.2 0-.4 0-.6 0L112 0C85.5 0 64 21.5 64 48l0 6.3L64 128l0 17.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5L0 464c0 26.5 21.5 48 48 48l128 0c9.9 0 19-3 26.7-8.1C195.9 492.2 192 478.5 192 464l0-168.2c0-8.6 1.4-17.1 4.1-25.3l11-33.1zM347.3 356.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-294.6 48l48-48c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z\"]\n};\nconst faFerry = {\n prefix: 'fas',\n iconName: 'ferry',\n icon: [576, 512, [], \"e4ea\", \"M224 0L352 0c17.7 0 32 14.3 32 32l75.1 0c20.6 0 31.6 24.3 18.1 39.8L456 96 120 96 98.8 71.8C85.3 56.3 96.3 32 116.9 32L192 32c0-17.7 14.3-32 32-32zM96 128l384 0c17.7 0 32 14.3 32 32l0 123.5c0 13.3-4.2 26.3-11.9 37.2l-51.4 71.9c-1.9 1.1-3.7 2.2-5.5 3.5c-15.5 10.7-34 18-51 19.9l-16.5 0c-17.1-1.8-35-9-50.8-19.9c-22.1-15.5-51.6-15.5-73.7 0c-14.8 10.2-32.5 18-50.6 19.9l-16.6 0c-17-1.8-35.6-9.2-51-19.9c-1.8-1.3-3.7-2.4-5.6-3.5L75.9 320.7C68.2 309.8 64 296.8 64 283.5L64 160c0-17.7 14.3-32 32-32zm32 64l0 96 320 0 0-96-320 0zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.3-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faArrowsDownToPeople = {\n prefix: 'fas',\n iconName: 'arrows-down-to-people',\n icon: [640, 512, [], \"e4b9\", \"M144 0c-13.3 0-24 10.7-24 24l0 118.1L97 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23L168 24c0-13.3-10.7-24-24-24zM360 200a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM184 296a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm312 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 345.5l0 54.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-54.5 26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 441.5l0 38.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5 26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3L18.9 468.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 441.5 88 480c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5zM415 153l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23L520 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 118.1-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nconst faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [127793, \"sprout\"], \"f4d8\", \"M512 32c0 113.6-84.6 207.5-194.2 222c-7.1-53.4-30.6-101.6-65.3-139.3C290.8 46.3 364 0 448 0l32 0c17.7 0 32 14.3 32 32zM0 96C0 78.3 14.3 64 32 64l32 0c123.7 0 224 100.3 224 224l0 32 0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160C100.3 320 0 219.7 0 96z\"]\n};\nconst faSprout = faSeedling;\nconst faLeftRight = {\n prefix: 'fas',\n iconName: 'left-right',\n icon: [512, 512, [8596, \"arrows-alt-h\"], \"f337\", \"M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z\"]\n};\nconst faArrowsAltH = faLeftRight;\nconst faBoxesPacking = {\n prefix: 'fas',\n iconName: 'boxes-packing',\n icon: [640, 512, [], \"e4c7\", \"M256 48c0-26.5 21.5-48 48-48L592 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48l-210.7 0c1.8-5 2.7-10.4 2.7-16l0-242.7c18.6-6.6 32-24.4 32-45.3l0-32c0-26.5-21.5-48-48-48l-112 0 0-80zM571.3 347.3c6.2-6.2 6.2-16.4 0-22.6l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L480 310.6 480 432c0 8.8 7.2 16 16 16s16-7.2 16-16l0-121.4 36.7 36.7c6.2 6.2 16.4 6.2 22.6 0zM0 176c0-8.8 7.2-16 16-16l352 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16L16 224c-8.8 0-16-7.2-16-16l0-32zm352 80l0 224c0 17.7-14.3 32-32 32L64 512c-17.7 0-32-14.3-32-32l0-224 320 0zM144 320c-8.8 0-16 7.2-16 16s7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0z\"]\n};\nconst faCircleArrowLeft = {\n prefix: 'fas',\n iconName: 'circle-arrow-left',\n icon: [512, 512, [\"arrow-circle-left\"], \"f0a8\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM215 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L392 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-214.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L103 273c-9.4-9.4-9.4-24.6 0-33.9L215 127z\"]\n};\nconst faArrowCircleLeft = faCircleArrowLeft;\nconst faGroupArrowsRotate = {\n prefix: 'fas',\n iconName: 'group-arrows-rotate',\n icon: [512, 512, [], \"e4f6\", \"M201.1 71.9c16.9-5 26.6-22.9 21.5-39.8s-22.9-26.6-39.8-21.5c-21.5 6.4-41.8 15.5-60.6 27C114.3 34 105.4 32 96 32C60.7 32 32 60.7 32 96c0 9.4 2 18.3 5.6 26.3c-11.5 18.7-20.6 39-27 60.6c-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c4.3-14.6 10.4-28.5 17.9-41.4c2 .2 4.1 .3 6.1 .3c35.3 0 64-28.7 64-64c0-2.1-.1-4.1-.3-6.1c12.9-7.5 26.8-13.6 41.4-17.9zm128-61.3c-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c14.6 4.3 28.5 10.4 41.4 17.9c-.2 2-.3 4.1-.3 6.1c0 35.3 28.7 64 64 64c2.1 0 4.1-.1 6.2-.3c7.5 12.9 13.6 26.8 17.9 41.4c5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.6c3.6-8 5.6-16.9 5.6-26.3c0-35.3-28.7-64-64-64c-9.4 0-18.3 2-26.3 5.6c-18.7-11.5-39-20.6-60.6-27zM71.9 310.9c-5-16.9-22.9-26.6-39.8-21.5s-26.6 22.9-21.5 39.8c6.4 21.5 15.5 41.8 27 60.6C34 397.7 32 406.6 32 416c0 35.3 28.7 64 64 64c9.4 0 18.3-2 26.3-5.6c18.7 11.5 39 20.6 60.6 27c16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-14.6-4.3-28.5-10.4-41.4-17.9c.2-2 .3-4.1 .3-6.2c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.2 .3c-7.5-12.9-13.6-26.8-17.9-41.4zm429.4 18.3c5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-4.3 14.6-10.4 28.5-17.9 41.4c-2-.2-4.1-.3-6.2-.3c-35.3 0-64 28.7-64 64c0 2.1 .1 4.1 .3 6.2c-12.9 7.5-26.8 13.6-41.4 17.9c-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.6-27c8 3.6 16.9 5.6 26.3 5.6c35.3 0 64-28.7 64-64c0-9.4-2-18.3-5.6-26.3c11.5-18.7 20.6-39 27-60.6zM192.8 256.8c0-15.6 5.6-29.9 14.9-41.1L223 231c6.6 6.6 17.8 1.9 17.8-7.4l0-60.5c0-5.7-4.7-10.4-10.4-10.4l-60.5 0c-9.3 0-13.9 11.2-7.4 17.8l11.2 11.2c-17.9 19.8-28.9 46.2-28.9 75.1c0 43.6 24.9 81.3 61.1 99.8c11.8 6 26.3 1.4 32.3-10.4s1.4-26.3-10.4-32.3c-20.8-10.6-34.9-32.2-34.9-57zm93.1-58.6c20.8 10.6 34.9 32.2 34.9 57c0 15.6-5.6 29.9-14.9 41.1L290.6 281c-6.6-6.6-17.8-1.9-17.8 7.4l0 60.5c0 5.7 4.7 10.4 10.4 10.4l60.5 0c9.3 0 13.9-11.2 7.4-17.8l-11.2-11.2c17.9-19.8 28.9-46.2 28.9-75.1c0-43.6-24.9-81.3-61.1-99.8c-11.8-6-26.3-1.4-32.3 10.4s-1.4 26.3 10.4 32.3z\"]\n};\nconst faBowlFood = {\n prefix: 'fas',\n iconName: 'bowl-food',\n icon: [512, 512, [], \"e4c6\", \"M0 192c0-35.3 28.7-64 64-64c.5 0 1.1 0 1.6 0C73 91.5 105.3 64 144 64c15 0 29 4.1 40.9 11.2C198.2 49.6 225.1 32 256 32s57.8 17.6 71.1 43.2C339 68.1 353 64 368 64c38.7 0 71 27.5 78.4 64c.5 0 1.1 0 1.6 0c35.3 0 64 28.7 64 64c0 11.7-3.1 22.6-8.6 32L8.6 224C3.1 214.6 0 203.7 0 192zm0 91.4C0 268.3 12.3 256 27.4 256l457.1 0c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28l-231.5 0c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"]\n};\nconst faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M348.8 131.5c3.7-2.3 7.9-3.5 12.2-3.5c12.7 0 23 10.3 23 23l0 5.6c0 9.9-5.1 19.1-13.5 24.3L30.1 393.7C.1 412.5-9 451.9 9.7 481.9s58.2 39.1 88.2 20.4L438.4 289.5c45.8-28.6 73.6-78.8 73.6-132.8l0-5.6C512 67.6 444.4 0 361 0c-28.3 0-56 8-80.1 23L254.1 39.7c-30 18.7-39.1 58.2-20.4 88.2s58.2 39.1 88.2 20.4l26.8-16.8zM298.4 49.8c9.2-5.7 19.1-10.1 29.4-13.1L348 97.5c-5.7 1.4-11.2 3.7-16.3 6.8l-12.6 7.9L298.4 49.8zm88.5 52.7l46.2-46.2c8.5 6.5 16.1 14.1 22.6 22.6l-46.2 46.2c-5.1-9.6-13-17.5-22.6-22.6zm28.9 59.3l61.6 20.5c-2.2 10.5-5.8 20.7-10.5 30.2l-62-20.7c6.2-8.8 10.1-19.1 11-30.1zm-86.1 82.5l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zm-107.2 67l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zM119.3 375.7l60.4 37.7-30.2 18.9L89.1 394.6l30.2-18.9z\"]\n};\nconst faArrowDownWideShort = {\n prefix: 'fas',\n iconName: 'arrow-down-wide-short',\n icon: [576, 512, [\"sort-amount-asc\", \"sort-amount-down\"], \"f160\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L320 96z\"]\n};\nconst faSortAmountAsc = faArrowDownWideShort;\nconst faSortAmountDown = faArrowDownWideShort;\nconst faCloudBolt = {\n prefix: 'fas',\n iconName: 'cloud-bolt',\n icon: [512, 512, [127785, \"thunderstorm\"], \"f76c\", \"M0 224c0 53 43 96 96 96l47.2 0L290 202.5c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L333.7 320l18.3 0 64 0c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm330.1 3.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7l70.1 0L177.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7l-70.1 0 52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"]\n};\nconst faThunderstorm = faCloudBolt;\nconst faTextSlash = {\n prefix: 'fas',\n iconName: 'text-slash',\n icon: [640, 512, [\"remove-format\"], \"f87d\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96 503 96 497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C577.6 61.3 554.7 32 523.5 32L376.1 32l-.3 0L204.5 32c-22 0-41.2 15-46.6 36.4l-6.3 25.2L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96l116.7 0L301.3 210.8l-94.5-74.1zM243.3 416L192 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-42.2 0 17.6-62.1L272.9 311 243.3 416z\"]\n};\nconst faRemoveFormat = faTextSlash;\nconst faFaceSmileWink = {\n prefix: 'fas',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nconst faSmileWink = faFaceSmileWink;\nconst faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM111 257.1l26.8 89.2 31.6-90.3c3.4-9.6 12.5-16.1 22.7-16.1s19.3 6.4 22.7 16.1l31.6 90.3L273 257.1c3.8-12.7 17.2-19.9 29.9-16.1s19.9 17.2 16.1 29.9l-48 160c-3 10-12 16.9-22.4 17.1s-19.8-6.2-23.2-16.1L192 336.6l-33.3 95.3c-3.4 9.8-12.8 16.3-23.2 16.1s-19.5-7.1-22.4-17.1l-48-160c-3.8-12.7 3.4-26.1 16.1-29.9s26.1 3.4 29.9 16.1z\"]\n};\nconst faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM136 240l68 0c42 0 76 34 76 76s-34 76-76 76l-44 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56 0-104c0-13.3 10.7-24 24-24zm68 104c15.5 0 28-12.5 28-28s-12.5-28-28-28l-44 0 0 56 44 0z\"]\n};\nconst faArrowsLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-left-right',\n icon: [512, 512, [\"arrows-h\"], \"f07e\", \"M406.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224l-293.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288l293.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nconst faArrowsH = faArrowsLeftRight;\nconst faHouseLock = {\n prefix: 'fas',\n iconName: 'house-lock',\n icon: [640, 512, [], \"e510\", \"M384 480c0 11.7 3.1 22.6 8.6 32l-.6 0c-22.1 0-40-17.9-40-40l0-24 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64 0 24c0 22.1-17.9 40-40 40l-24 0-31.9 0c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2l-16 0c-22.1 0-40-17.9-40-40l0-112c0-.9 0-1.9 .1-2.8l0-69.7-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L490.7 166.3C447.2 181.7 416 223.2 416 272l0 24.6c-19.1 11.1-32 31.7-32 55.4l0 128zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faCloudArrowDown = {\n prefix: 'fas',\n iconName: 'cloud-arrow-down',\n icon: [640, 512, [62337, \"cloud-download\", \"cloud-download-alt\"], \"f0ed\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128l-368 0zm79-167l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39L344 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 134.1-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nconst faCloudDownload = faCloudArrowDown;\nconst faCloudDownloadAlt = faCloudArrowDown;\nconst faChildren = {\n prefix: 'fas',\n iconName: 'children',\n icon: [640, 512, [], \"e4e1\", \"M160 0a64 64 0 1 1 0 128A64 64 0 1 1 160 0zM88 480l0-80-17.8 0c-10.9 0-18.6-10.7-15.2-21.1l31.1-93.4L57.5 323.3c-10.7 14.1-30.8 16.8-44.8 6.2s-16.8-30.7-6.2-44.8L65.4 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47l58.9 77.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.6-37.8L265 378.9c3.5 10.4-4.3 21.1-15.2 21.1L232 400l0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80-16 0 0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480 0a64 64 0 1 1 0 128A64 64 0 1 1 480 0zm-8 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-179.5L395.1 321c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9l12.3 0c33 0 63.7 16.9 81.2 44.9L619.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L552 300.5 552 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0z\"]\n};\nconst faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [576, 512, [\"blackboard\"], \"f51b\", \"M96 32C60.7 32 32 60.7 32 96l0 288 64 0L96 96l384 0 0 288 64 0 0-288c0-35.3-28.7-64-64-64L96 32zM224 384l0 32L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0 0-32c0-17.7-14.3-32-32-32l-128 0c-17.7 0-32 14.3-32 32z\"]\n};\nconst faBlackboard = faChalkboard;\nconst faUserLargeSlash = {\n prefix: 'fas',\n iconName: 'user-large-slash',\n icon: [640, 512, [\"user-alt-slash\"], \"f4fa\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM545.5 512L528 512 284.3 320l-59 0C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7l450.6 0 .3 0z\"]\n};\nconst faUserAltSlash = faUserLargeSlash;\nconst faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M64 208.1L256 65.9 448 208.1l0 47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5l0-47.4zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-239.9c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z\"]\n};\nconst faHandshakeSimpleSlash = {\n prefix: 'fas',\n iconName: 'handshake-simple-slash',\n icon: [640, 512, [\"handshake-alt-slash\"], \"e05f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.4-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352l41.8 0c26.5 0 48-21.5 48-48l0-128c0-26.5-21.5-48-48-48l-76 0-4 0-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM0 176L0 304c0 26.5 21.5 48 48 48l108.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6L41.2 128.5C17.9 131.8 0 151.8 0 176z\"]\n};\nconst faHandshakeAltSlash = faHandshakeSimpleSlash;\nconst faMattressPillow = {\n prefix: 'fas',\n iconName: 'mattress-pillow',\n icon: [640, 512, [], \"e525\", \"M256 64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l192 0 0-384zm32 384l288 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L288 64l0 384zM64 160c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-192z\"]\n};\nconst faGuaraniSign = {\n prefix: 'fas',\n iconName: 'guarani-sign',\n icon: [384, 512, [], \"e19a\", \"M192 0c-17.7 0-32 14.3-32 32l0 34.7C69.2 81.9 0 160.9 0 256s69.2 174.1 160 189.3l0 34.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-34.7c90.8-15.2 160-94.2 160-189.3c0-17.7-14.3-32-32-32l-128 0 0-92c22.1 5.7 41.8 17.1 57.6 32.6c12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C299 92 263.5 73.3 224 66.7L224 32c0-17.7-14.3-32-32-32zM160 132L160 380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124zM224 380l0-92 92 0c-11.6 45-47 80.4-92 92z\"]\n};\nconst faArrowsRotate = {\n prefix: 'fas',\n iconName: 'arrows-rotate',\n icon: [512, 512, [128472, \"refresh\", \"sync\"], \"f021\", \"M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160 352 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l111.5 0c0 0 0 0 0 0l.4 0c17.7 0 32-14.3 32-32l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 35.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1L16 432c0 17.7 14.3 32 32 32s32-14.3 32-32l0-35.1 17.6 17.5c0 0 0 0 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.8c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352l34.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L48.4 288c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z\"]\n};\nconst faRefresh = faArrowsRotate;\nconst faSync = faArrowsRotate;\nconst faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [512, 512, [129519], \"f134\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32l0 96c0 9.6-4.3 18.7-11.7 24.7s-17.2 8.5-26.6 6.6l-160-32C301.5 124.9 292 115.7 289 104l-65 0 0 34.8c37.8 18 64 56.5 64 101.2l0 144L64 384l0-144c0-44.7 26.2-83.2 64-101.2l0-28.8c-36.2 11.1-66 36.9-82.3 70.5c-5.8 11.9-20.2 16.9-32.1 11.1S-3.3 171.4 2.5 159.5C26.7 109.8 72.7 72.6 128 60.4L128 32c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 24 65 0c3-11.7 12.5-20.9 24.7-23.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM288 416l0 32c0 35.3-28.7 64-64 64l-96 0c-35.3 0-64-28.7-64-64l0-32 224 0zM176 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faCruzeiroSign = {\n prefix: 'fas',\n iconName: 'cruzeiro-sign',\n icon: [448, 512, [], \"e152\", \"M96 256c0-88.4 71.6-160 160-160c41 0 78.3 15.4 106.7 40.7c13.2 11.8 33.4 10.7 45.2-2.5s10.7-33.4-2.5-45.2c-39.6-35.5-92-57-149.3-57C132.3 32 32 132.3 32 256s100.3 224 224 224c57.4 0 109.7-21.6 149.3-57c13.2-11.8 14.3-32 2.5-45.2s-32-14.3-45.2-2.5C334.3 400.6 297 416 256 416l0-96 0-8.7c0-12.8 10.4-23.3 23.3-23.3c4.6 0 9.1 1.4 12.9 3.9l10.1 6.7c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4l-10.1-6.7c-14.3-9.6-31.2-14.7-48.4-14.7c-12.4 0-24.2 2.6-34.9 7.3c-5.5-4.5-12.6-7.3-20.3-7.3c-17.7 0-32 14.3-32 32l0 55.3 0 8.7 0 82.7C135.5 378 96 321.6 96 256z\"]\n};\nconst faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M52.1 93.7C35.7 87.1 27.7 68.5 34.3 52.1s25.2-24.4 41.6-17.8l320 128C408 167.1 416 178.9 416 192s-8 24.9-20.1 29.7l-320 128c-16.4 6.6-35-1.4-41.6-17.8s1.4-35 17.8-41.6L297.8 192 52.1 93.7zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0z\"]\n};\nconst faShieldHalved = {\n prefix: 'fas',\n iconName: 'shield-halved',\n icon: [512, 512, [\"shield-alt\"], \"f3ed\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8l0 378.1C394 378 431.1 230.1 432 141.4L256 66.8s0 0 0 0z\"]\n};\nconst faShieldAlt = faShieldHalved;\nconst faBookAtlas = {\n prefix: 'fas',\n iconName: 'book-atlas',\n icon: [448, 512, [\"atlas\"], \"f558\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zM247.4 283.8c-3.7 3.7-6.2 4.2-7.4 4.2s-3.7-.5-7.4-4.2c-3.8-3.7-8-10-11.8-18.9c-6.2-14.5-10.8-34.3-12.2-56.9l63 0c-1.5 22.6-6 42.4-12.2 56.9c-3.8 8.9-8 15.2-11.8 18.9zm42.7-9.9c7.3-18.3 12-41.1 13.4-65.9l31.1 0c-4.7 27.9-21.4 51.7-44.5 65.9zm0-163.8c23.2 14.2 39.9 38 44.5 65.9l-31.1 0c-1.4-24.7-6.1-47.5-13.4-65.9zM368 192a128 128 0 1 0 -256 0 128 128 0 1 0 256 0zM145.3 208l31.1 0c1.4 24.7 6.1 47.5 13.4 65.9c-23.2-14.2-39.9-38-44.5-65.9zm31.1-32l-31.1 0c4.7-27.9 21.4-51.7 44.5-65.9c-7.3 18.3-12 41.1-13.4 65.9zm56.1-75.8c3.7-3.7 6.2-4.2 7.4-4.2s3.7 .5 7.4 4.2c3.8 3.7 8 10 11.8 18.9c6.2 14.5 10.8 34.3 12.2 56.9l-63 0c1.5-22.6 6-42.4 12.2-56.9c3.8-8.9 8-15.2 11.8-18.9z\"]\n};\nconst faAtlas = faBookAtlas;\nconst faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11.5c0 49.9-60.3 74.9-95.6 39.6L120.2 75C107.7 62.5 87.5 62.5 75 75s-12.5 32.8 0 45.3l8.2 8.2C118.4 163.7 93.4 224 43.5 224L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l11.5 0c49.9 0 74.9 60.3 39.6 95.6L75 391.8c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6l0 11.5c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11.5c0-49.9 60.3-74.9 95.6-39.6l8.2 8.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-8.2-8.2c-35.3-35.3-10.3-95.6 39.6-95.6l11.5 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-11.5 0c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C348.3 118.4 288 93.4 288 43.5L288 32zM176 224a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faEnvelopeCircleCheck = {\n prefix: 'fas',\n iconName: 'envelope-circle-check',\n icon: [640, 512, [], \"e4e8\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176 0 384c0 35.3 28.7 64 64 64l296.2 0C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [576, 512, [], \"f5fd\", \"M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z\"]\n};\nconst faArrowsToDot = {\n prefix: 'fas',\n iconName: 'arrows-to-dot',\n icon: [512, 512, [], \"e4be\", \"M256 0c17.7 0 32 14.3 32 32l0 32 32 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l32 0 0-32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 32 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [512, 512, [], \"f557\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 64 0 0-128c0-53 43-96 96-96s96 43 96 96l0 128 64 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-288L32 128l0 288z\"]\n};\nconst faHeartCircleCheck = {\n prefix: 'fas',\n iconName: 'heart-circle-check',\n icon: [576, 512, [], \"e4fd\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faHouseChimneyCrack = {\n prefix: 'fas',\n iconName: 'house-chimney-crack',\n icon: [576, 512, [\"house-damage\"], \"f6f1\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-122.1 0L288 448l80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L250.6 263.2c-14.6-11.5-33.8 7-22.8 22L288 368l-85.5 71.2c-6.1 5-7.5 13.8-3.5 20.5L230.4 512l-102.3 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7 416 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 121 52.8 46.4c8 7 12 15 11 24z\"]\n};\nconst faHouseDamage = faHouseChimneyCrack;\nconst faFileZipper = {\n prefix: 'fas',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM96 48c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm-6.3 71.8c3.7-14 16.4-23.8 30.9-23.8l14.8 0c14.5 0 27.2 9.7 30.9 23.8l23.5 88.2c1.4 5.4 2.1 10.9 2.1 16.4c0 35.2-28.8 63.7-64 63.7s-64-28.5-64-63.7c0-5.5 .7-11.1 2.1-16.4l23.5-88.2zM112 336c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0z\"]\n};\nconst faFileArchive = faFileZipper;\nconst faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z\"]\n};\nconst faMartiniGlassEmpty = {\n prefix: 'fas',\n iconName: 'martini-glass-empty',\n icon: [512, 512, [\"glass-martini\"], \"f000\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3 224 448l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-178.7L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0L32 0zM256 210.7L109.3 64l293.5 0L256 210.7z\"]\n};\nconst faGlassMartini = faMartiniGlassEmpty;\nconst faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M64 160C64 89.3 121.3 32 192 32l256 0c70.7 0 128 57.3 128 128l0 33.6c-36.5 7.4-64 39.7-64 78.4l0 48-384 0 0-48c0-38.7-27.5-71-64-78.4L64 160zM544 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48l0 176c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32L96 448c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32L0 272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3l0 48 0 32 32 0 384 0 32 0 0-32 0-48z\"]\n};\nconst faCediSign = {\n prefix: 'fas',\n iconName: 'cedi-sign',\n icon: [384, 512, [], \"e0df\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 34.7C101.2 81.9 32 160.9 32 256s69.2 174.1 160 189.3l0 34.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-34.7c30.9-5.2 59.2-17.7 83.2-35.8c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-13.2 9.9-28.3 17.3-44.8 21.6L256 132c16.4 4.2 31.6 11.6 44.8 21.6c14.1 10.6 34.2 7.8 44.8-6.4s7.8-34.2-6.4-44.8c-24-18-52.4-30.6-83.2-35.8L256 32zM192 132L192 380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124z\"]\n};\nconst faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [384, 512, [], \"f033\", \"M128 64c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-58.7 0L160 416l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l58.7 0L224 96l-64 0c-17.7 0-32-14.3-32-32z\"]\n};\nconst faTableCellsColumnLock = {\n prefix: 'fas',\n iconName: 'table-cells-column-lock',\n icon: [640, 512, [], \"e678\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zm208 0l0 64 88 0 0-64-88 0zm240 0l-88 0 0 64 88 0 0-64zM208 224l0 64 88 0 0-64-88 0zm0 128l0 64 88 0 0-64-88 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [9962], \"f51d\", \"M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 46.4L183.3 210c-14.5 8.7-23.3 24.3-23.3 41.2L160 512l96 0 0-96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 96 96 0 0-260.8c0-16.9-8.8-32.5-23.3-41.2L344 142.4 344 96l32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0 0-24zM24.9 330.3C9.5 338.8 0 354.9 0 372.4L0 464c0 26.5 21.5 48 48 48l80 0 0-238.4L24.9 330.3zM592 512c26.5 0 48-21.5 48-48l0-91.6c0-17.5-9.5-33.6-24.9-42.1L512 273.6 512 512l80 0z\"]\n};\nconst faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [640, 512, [], \"f653\", \"M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9c0 0 0 0 0 0s0 0 0 0l.2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2s0 0 0 0s0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM228 72c0-11-9-20-20-20s-20 9-20 20l0 14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1c0 0 0 0 0 0s0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4l0 14.6c0 11 9 20 20 20s20-9 20-20l0-13.8c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7L228 72z\"]\n};\nconst faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M64 32c0-8.9 3.8-20.9 6.2-27.3C71.2 1.8 74 0 77 0c1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1C175.2 .7 177.1 0 179 0c3 0 5.8 1.8 6.8 4.7c2.4 6.5 6.2 18.4 6.2 27.3c0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8L480 160l32 0c40.3 0 78.2 19 102.4 51.2l19.2 25.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4l-19.2-25.6c-5.3-7-11.8-12.8-19.2-17l0 87.4-352 0-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3l-2 0C23.9 256 0 232.1 0 202.7c0-12.1 4.1-23.8 11.7-33.3L87.6 74.6C78.1 67.4 64 53.2 64 32zM448 352l96 0 0 64 0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64-160 0 0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64 0-64 96 0 160 0zM260.9 210.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.3-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5zM368.1 208c-2 0-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5c-.9-1.8-2.8-2.9-4.8-2.9zm116.8 2.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5z\"]\n};\nconst faZ = {\n prefix: 'fas',\n iconName: 'z',\n icon: [384, 512, [122], \"5a\", \"M0 64C0 46.3 14.3 32 32 32l320 0c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416 352 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst faPersonSkiing = {\n prefix: 'fas',\n iconName: 'person-skiing',\n icon: [512, 512, [9975, \"skiing\"], \"f7c9\", \"M380.7 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM2.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L232.7 361.3l46.2-69.2-75.1-75.1c-14.6-14.6-20.4-33.9-18.4-52.1l108.8 52 39.3 39.3c16.2 16.2 18.7 41.5 6 60.6L289.8 391l128.7 66.8c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L12.9 301.3C1.2 295.2-3.4 280.7 2.7 268.9zM118.9 65.6L137 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 54.7 26.2c1.5-.7 3.1-1.4 4.7-2.1l83.4-33.4c34.2-13.7 72.8 4.2 84.5 39.2l17.1 51.2 52.1 26.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-58.1-29c-11.4-5.7-20-15.7-24.1-27.8l-5.8-17.3-27.3 12.1-6.8 3-6.7-3.2L151.5 116.7l-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5z\"]\n};\nconst faSkiing = faPersonSkiing;\nconst faRoadLock = {\n prefix: 'fas',\n iconName: 'road-lock',\n icon: [640, 512, [], \"e567\", \"M288 32l-74.8 0c-27.1 0-51.3 17.1-60.3 42.6L35.1 407.2c-2.1 5.9-3.1 12-3.1 18.2C32 455.5 56.5 480 86.6 480L288 480l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64 32 0 0-128c0-23.7 12.9-44.4 32-55.4l0-24.6c0-58.3 44.6-106.2 101.5-111.5L487.1 74.6C478 49.1 453.9 32 426.8 32L352 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm64 192l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 16c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faA = {\n prefix: 'fas',\n iconName: 'a',\n icon: [384, 512, [97], \"41\", \"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L93.3 384l197.3 0 31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM264 320l-144 0 72-172.8L264 320z\"]\n};\nconst faTemperatureArrowDown = {\n prefix: 'fas',\n iconName: 'temperature-arrow-down',\n icon: [576, 512, [\"temperature-down\"], \"e03f\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5L128 112zM176 0C114.1 0 64 50.1 64 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L288 112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3l0-50.7c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zm336-64l-32 0 0-288c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 288-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8z\"]\n};\nconst faTemperatureDown = faTemperatureArrowDown;\nconst faFeatherPointed = {\n prefix: 'fas',\n iconName: 'feather-pointed',\n icon: [512, 512, [\"feather-alt\"], \"f56b\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l74.8-74.8c7.4 4.6 15.3 8.2 23.8 10.5C200.3 452.8 270 454.5 338 409.4c12.2-8.1 5.8-25.4-8.8-25.4l-16.1 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l97.7-29.3c3.4-1 6.4-3.1 8.4-6.1c4.4-6.4 8.6-12.9 12.6-19.6c6.2-10.3-1.5-23-13.5-23l-38.6 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l80.9-24.3c4.6-1.4 8.4-4.8 10.2-9.3C494.5 163 507.8 86.1 511.9 36.8c.8-9.9-3-19.6-10-26.6s-16.7-10.8-26.6-10C391.5 7 228.5 40.5 137.4 131.6C57.3 211.7 56.7 302.3 71.3 356.4c2.1 7.9 12 9.6 17.8 3.8L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nconst faFeatherAlt = faFeatherPointed;\nconst faP = {\n prefix: 'fas',\n iconName: 'p',\n icon: [320, 512, [112], \"50\", \"M0 96C0 60.7 28.7 32 64 32l96 0c88.4 0 160 71.6 160 160s-71.6 160-160 160l-96 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 320 0 96zM64 288l96 0c53 0 96-43 96-96s-43-96-96-96L64 96l0 192z\"]\n};\nconst faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c17.7 0 32 14.3 32 32l0 30.1 15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49 0 70.3 61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7l0 70.3 49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15 0 30.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-30.1-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49 0-70.3-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3l0-70.3L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15L192 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M96 96c0-35.3 28.7-64 64-64l288 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L80 480c-44.2 0-80-35.8-80-80L0 128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 272c0 8.8 7.2 16 16 16s16-7.2 16-16L96 96zm64 24l0 80c0 13.3 10.7 24 24 24l112 0c13.3 0 24-10.7 24-24l0-80c0-13.3-10.7-24-24-24L184 96c-13.3 0-24 10.7-24 24zm208-8c0 8.8 7.2 16 16 16l48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16l48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0c-8.8 0-16 7.2-16 16zM160 304c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-256 0c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-256 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faRectangleAd = {\n prefix: 'fas',\n iconName: 'rectangle-ad',\n icon: [576, 512, [\"ad\"], \"f641\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM229.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L253.2 328l-90.3 0-5.4 10.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zM208 237.7L186.8 280l42.3 0L208 237.7zM392 256a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm24-43.9l0-28.1c0-13.3 10.7-24 24-24s24 10.7 24 24l0 96 0 48c0 13.3-10.7 24-24 24c-6.6 0-12.6-2.7-17-7c-9.4 4.5-19.9 7-31 7c-39.8 0-72-32.2-72-72s32.2-72 72-72c8.4 0 16.5 1.4 24 4.1z\"]\n};\nconst faAd = faRectangleAd;\nconst faCircleArrowRight = {\n prefix: 'fas',\n iconName: 'circle-arrow-right',\n icon: [512, 512, [\"arrow-circle-right\"], \"f0a9\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM297 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L120 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l214.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L409 239c9.4 9.4 9.4 24.6 0 33.9L297 385z\"]\n};\nconst faArrowCircleRight = faCircleArrowRight;\nconst faFilterCircleXmark = {\n prefix: 'fas',\n iconName: 'filter-circle-xmark',\n icon: [576, 512, [], \"e17b\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0L472 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nconst faLocust = {\n prefix: 'fas',\n iconName: 'locust',\n icon: [576, 512, [], \"e520\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0c98.7 0 180.6 71.4 197 165.4c-9-3.5-18.8-5.4-29-5.4l-64.2 0-41.8-97.5c-3.4-7.9-10.8-13.4-19.3-14.4s-17 2.7-22.1 9.6l-40.9 55.5-21.7-50.7c-3.3-7.8-10.5-13.2-18.9-14.3s-16.7 2.3-22 8.9l-240 304c-8.2 10.4-6.4 25.5 4 33.7s25.5 6.4 33.7-4l79.4-100.5 43 16.4-40.5 55c-7.9 10.7-5.6 25.7 5.1 33.6s25.7 5.6 33.6-5.1L215.1 400l74.5 0-29.3 42.3c-7.5 10.9-4.8 25.8 6.1 33.4s25.8 4.8 33.4-6.1L348 400l80.4 0 38.8 67.9c6.6 11.5 21.2 15.5 32.7 8.9s15.5-21.2 8.9-32.7L483.6 400l12.4 0c44.1 0 79.8-35.7 80-79.7c0-.1 0-.2 0-.3l0-40C576 143 465 32 328 32l-16 0zm50.5 168l17.1 40L333 240l29.5-40zm-87.7 38.1l-1.4 1.9-48.2 0 32.7-41.5 16.9 39.5zM88.8 240C57.4 240 32 265.4 32 296.8c0 15.5 6.3 30 16.9 40.4L126.7 240l-37.9 0zM496 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [\"unsorted\"], \"f0dc\", \"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8L32 224c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l256 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z\"]\n};\nconst faUnsorted = faSort;\nconst faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [\"list-1-2\", \"list-numeric\"], \"f0cb\", \"M24 56c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24l0 120 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-96-8 0C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432l33.2 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-88 0c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faList12 = faListOl;\nconst faListNumeric = faListOl;\nconst faPersonDressBurst = {\n prefix: 'fas',\n iconName: 'person-dress-burst',\n icon: [640, 512, [], \"e544\", \"M528 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM390.2 384l17.8 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 16 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 17.8 0c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3l-11.6 0c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nconst faMoneyCheckDollar = {\n prefix: 'fas',\n iconName: 'money-check-dollar',\n icon: [576, 512, [\"money-check-alt\"], \"f53d\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zM272 192l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 304c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16zM164 152l0 13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9l0 13.8c0 11-9 20-20 20s-20-9-20-20l0-14.6c-10.3-2.2-20-5.5-28.2-8.4c0 0 0 0 0 0s0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5l0-14c0-11 9-20 20-20s20 9 20 20z\"]\n};\nconst faMoneyCheckAlt = faMoneyCheckDollar;\nconst faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [448, 512, [], \"f5cb\", \"M368 80l32 0 0 32-32 0 0-32zM352 32c-17.7 0-32 14.3-32 32L128 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64l0 64c0 17.7 14.3 32 32 32l0 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l192 0c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-192c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zM96 160c17.7 0 32-14.3 32-32l192 0c0 17.7 14.3 32 32 32l0 192c-17.7 0-32 14.3-32 32l-192 0c0-17.7-14.3-32-32-32l0-192zM48 400l32 0 0 32-32 0 0-32zm320 32l0-32 32 0 0 32-32 0zM48 112l0-32 32 0 0 32-32 0z\"]\n};\nconst faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [512, 512, [], \"f7ec\", \"M256 32C192 32 0 64 0 192c0 35.3 28.7 64 64 64V432c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V256c35.3 0 64-28.7 64-64C512 64 320 32 256 32z\"]\n};\nconst faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M0 128C0 92.7 28.7 64 64 64l192 0 48 0 16 0 256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64l-256 0-16 0-48 0L64 448c-35.3 0-64-28.7-64-64L0 128zm320 0l0 256 256 0 0-256-256 0zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1 73.6 0 8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276l-38 0 19-42.8zM448 164c11 0 20 9 20 20l0 4 44 0 16 0c11 0 20 9 20 20s-9 20-20 20l-2 0-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45L448 228l-72 0c-11 0-20-9-20-20s9-20 20-20l52 0 0-4c0-11 9-20 20-20z\"]\n};\nconst faFaceKissWinkHeart = {\n prefix: 'fas',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M498 339.7c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-22.9-89.3c-10-39 11.8-80.9 51.8-92.1c37.2-10.4 73.8 10.1 87.5 44c12.7-1.6 25.1 .4 36.2 5zM296 332c0 6.9-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C258.7 443.1 241.4 448 224 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.6-.4-.3-.2-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm194.8 57.6c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nconst faKissWinkHeart = faFaceKissWinkHeart;\nconst faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M3.9 54.9C10.5 40.9 24.5 32 40 32l432 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9 320 448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"]\n};\nconst faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [320, 512, [10067, 10068, 61736], \"3f\", \"M80 160c0-35.3 28.7-64 64-64l32 0c35.3 0 64 28.7 64 64l0 3.6c0 21.8-11.1 42.1-29.4 53.8l-42.2 27.1c-25.2 16.2-40.4 44.1-40.4 74l0 1.4c0 17.7 14.3 32 32 32s32-14.3 32-32l0-1.4c0-8.2 4.2-15.8 11-20.2l42.2-27.1c36.6-23.6 58.8-64.1 58.8-107.7l0-3.6c0-70.7-57.3-128-128-128l-32 0C73.3 32 16 89.3 16 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm80 320a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-19.3c-2.7 1.1-5.4 2-8.2 2.7l-60.1 15c-3 .7-6 1.2-9 1.4c-.9 .1-1.8 .2-2.7 .2l-64 0c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 381l-9.8 32.8c-6.1 20.3-24.8 34.2-46 34.2L80 448c-8.8 0-16-7.2-16-16s7.2-16 16-16l8.2 0c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.8 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8 8.9 0c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7L384 203.6l0-43.6-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM549.8 139.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 321c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 262.7l-71-71L311.9 321z\"]\n};\nconst faUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'up-down-left-right',\n icon: [512, 512, [\"arrows-alt\"], \"f0b2\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 96-96 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-32 96 0 0 96-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0 0-96 96 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 32-96 0 0-96 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nconst faArrowsAlt = faUpDownLeftRight;\nconst faHouseChimneyUser = {\n prefix: 'fas',\n iconName: 'house-chimney-user',\n icon: [576, 512, [], \"e065\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185l0-121c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32l0 36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 160.4c0 35.3 28.7 64 64 64l320.4 0c35.5 0 64.2-28.8 64-64.3l-.7-160.2 32 0zM288 160a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM176 400c0-44.2 35.8-80 80-80l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M163.9 136.9c-29.4-29.8-29.4-78.2 0-108s77-29.8 106.4 0l17.7 18 17.7-18c29.4-29.8 77-29.8 106.4 0s29.4 78.2 0 108L310.5 240.1c-6.2 6.3-14.3 9.4-22.5 9.4s-16.3-3.1-22.5-9.4L163.9 136.9zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 512 32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [512, 512, [129513], \"f12e\", \"M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8c0 12.8 10.4 23.2 23.2 23.2l56.8 0c26.5 0 48 21.5 48 48l0 56.8c0 12.8 10.4 23.2 23.2 23.2c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2c-12.8 0-23.2 10.4-23.2 23.2L384 464c0 26.5-21.5 48-48 48l-56.8 0c-12.8 0-23.2-10.4-23.2-23.2c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8c0 12.8-10.4 23.2-23.2 23.2L48 512c-26.5 0-48-21.5-48-48L0 343.2C0 330.4 10.4 320 23.2 320c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256C10.4 256 0 245.6 0 232.8L0 176c0-26.5 21.5-48 48-48l120.8 0c12.8 0 23.2-10.4 23.2-23.2z\"]\n};\nconst faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [576, 512, [], \"f53c\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm48 160l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 336c0-8.8 7.2-16 16-16l352 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-352 0c-8.8 0-16-7.2-16-16zM376 160l80 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24z\"]\n};\nconst faStarHalfStroke = {\n prefix: 'fas',\n iconName: 'star-half-stroke',\n icon: [576, 512, [\"star-half-alt\"], \"f5c0\", \"M288 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L288.1 86.9l-.1 .3 0 289.2zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L288.1 439.8 159.8 508.3C149 514 135.9 513.1 126 506s-14.9-19.3-12.9-31.3L137.8 329 33.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L195 150.3 259.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L438.5 329l24.6 145.7z\"]\n};\nconst faStarHalfAlt = faStarHalfStroke;\nconst faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nconst faWhiskeyGlass = {\n prefix: 'fas',\n iconName: 'whiskey-glass',\n icon: [512, 512, [129347, \"glass-whiskey\"], \"f7a0\", \"M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5l253 0c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32L32 32zM87.7 224L69 96l374 0L424.3 224 87.7 224z\"]\n};\nconst faGlassWhiskey = faWhiskeyGlass;\nconst faBuildingCircleExclamation = {\n prefix: 'fas',\n iconName: 'building-circle-exclamation',\n icon: [640, 512, [], \"e4d3\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faMagnifyingGlassChart = {\n prefix: 'fas',\n iconName: 'magnifying-glass-chart',\n icon: [512, 512, [], \"e522\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zm-312 8l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96l0 160c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64l0 96c0 13.3 10.7 24 24 24s24-10.7 24-24l0-96c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nconst faArrowUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'arrow-up-right-from-square',\n icon: [512, 512, [\"external-link\"], \"f08e\", \"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l82.7 0L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3l0 82.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-17.7-14.3-32-32-32L320 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z\"]\n};\nconst faExternalLink = faArrowUpRightFromSquare;\nconst faCubesStacked = {\n prefix: 'fas',\n iconName: 'cubes-stacked',\n icon: [448, 512, [], \"e4e6\", \"M192 64l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32zM82.7 207c-15.3 8.8-20.5 28.4-11.7 43.7l32 55.4c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-32-55.4c-8.8-15.3-28.4-20.5-43.7-11.7L82.7 207zM288 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zm64 160c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zM160 384l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32zM32 352c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0z\"]\n};\nconst faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [512, 512, [8361, \"krw\", \"won\"], \"f159\", \"M62.4 53.9C56.8 37.1 38.6 28.1 21.9 33.6S-3.9 57.4 1.6 74.1L51.6 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l40.9 0 56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288l46 0L321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288l40.9 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-19.6 0 50-149.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L392.9 224l-64 0L287 56.2C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L183 224l-64 0L62.4 53.9zm78 234.1l26.6 0-11.4 45.6L140.4 288zM249 224l7-28.1 7 28.1-14 0zm96 64l26.6 0-15.2 45.6L345 288z\"]\n};\nconst faKrw = faWonSign;\nconst faWon = faWonSign;\nconst faVirusCovid = {\n prefix: 'fas',\n iconName: 'virus-covid',\n icon: [512, 512, [], \"e4a8\", \"M192 24c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0 0 33.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L420 125.9l-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3l33.6 0 0-16c0-13.3 10.7-24 24-24s24 10.7 24 24l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-16-33.6 0c-4.2 30.7-16.3 58.8-34.1 82.3L420 386.1l11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L386.1 420l-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1l0 33.6 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-33.6c-30.7-4.2-58.8-16.3-82.3-34.1L125.9 420l11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L92 386.1l23.8-23.8C97.9 338.8 85.8 310.7 81.6 280L48 280l0 16c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80c0-13.3 10.7-24 24-24s24 10.7 24 24l0 16 33.6 0c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92l23.8 23.8c23.5-17.9 51.7-29.9 82.3-34.1L232 48l-16 0c-13.3 0-24-10.7-24-24zm48 200a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm64 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faAustralSign = {\n prefix: 'fas',\n iconName: 'austral-sign',\n icon: [448, 512, [], \"e0a9\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7L122.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0L82.7 320 32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l24 0L34.5 435.7c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384l197.3 0 31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8L392 384l24 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0L352 288l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-90.7 0L253.5 51.7zM256 224l-64 0 32-76.8L256 224zm-90.7 64l117.3 0L296 320l-144 0 13.3-32z\"]\n};\nconst faF = {\n prefix: 'fas',\n iconName: 'f',\n icon: [320, 512, [102], \"46\", \"M64 32C28.7 32 0 60.7 0 96L0 256 0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 224 64 96l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32z\"]\n};\nconst faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [512, 512, [], \"f06c\", \"M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5l88 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0-72 0s0 0 0 0c-16.6 0-32.7 1.9-48.3 5.4c-25.9 5.9-49.9 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z\"]\n};\nconst faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [128739], \"f018\", \"M256 32l-74.8 0c-27.1 0-51.3 17.1-60.3 42.6L3.1 407.2C1.1 413 0 419.2 0 425.4C0 455.5 24.5 480 54.6 480L256 480l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64 201.4 0c30.2 0 54.6-24.5 54.6-54.6c0-6.2-1.1-12.4-3.1-18.2L455.1 74.6C446 49.1 421.9 32 394.8 32L320 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm64 192l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [128662, \"cab\"], \"f1ba\", \"M192 0c-17.7 0-32 14.3-32 32l0 32 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288L0 432l0 48c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-48 320 0 0 48c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-48 0-144c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1l0-.2 0-32c0-17.7-14.3-32-32-32L192 0zM165.4 128l181.2 0c13.6 0 25.7 8.6 30.2 21.4L402.9 224l-293.8 0 26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 288a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faCab = faTaxi;\nconst faPersonCirclePlus = {\n prefix: 'fas',\n iconName: 'person-circle-plus',\n icon: [576, 512, [], \"e541\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-48z\"]\n};\nconst faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [576, 512, [\"pie-chart\"], \"f200\", \"M304 240l0-223.4c0-9 7-16.6 16-16.6C443.7 0 544 100.3 544 224c0 9-7.6 16-16.6 16L304 240zM32 272C32 150.7 122.1 50.3 239 34.3c9.2-1.3 17 6.1 17 15.4L256 288 412.5 444.5c6.7 6.7 6.2 17.7-1.5 23.1C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zm526.4 16c9.3 0 16.6 7.8 15.4 17c-7.7 55.9-34.6 105.6-73.9 142.3c-6 5.6-15.4 5.2-21.2-.7L320 288l238.4 0z\"]\n};\nconst faPieChart = faChartPie;\nconst faBoltLightning = {\n prefix: 'fas',\n iconName: 'bolt-lightning',\n icon: [384, 512, [], \"e0b7\", \"M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z\"]\n};\nconst faSackXmark = {\n prefix: 'fas',\n iconName: 'sack-xmark',\n icon: [512, 512, [], \"e56a\", \"M192 96l128 0 47.4-71.1C374.5 14.2 366.9 0 354.1 0L157.9 0c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32l-128 0c-3.8 2.5-8.1 5.3-13 8.4c0 0 0 0 0 0s0 0 0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96l320 0c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4zM289.9 336l47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47z\"]\n};\nconst faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z\"]\n};\nconst faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM80 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2L80 416c-8.8 0-16-7.2-16-16s7.2-16 16-16l8.2 0c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8 54.1 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z\"]\n};\nconst faFishFins = {\n prefix: 'fas',\n iconName: 'fish-fins',\n icon: [576, 512, [], \"e4f2\", \"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5c-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.6 4.9S-3 163.3 4.2 175.9L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.6 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3c15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8c39.2-29.4 67.2-64.7 81.6-89.5c5.8-9.9 5.8-22.2 0-32.1c-14.4-24.8-42.5-60.1-81.6-89.5c-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM384 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faBuildingFlag = {\n prefix: 'fas',\n iconName: 'building-flag',\n icon: [640, 512, [], \"e4d5\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM448 0c-17.7 0-32 14.3-32 32l0 480 64 0 0-320 144 0c8.8 0 16-7.2 16-16l0-128c0-8.8-7.2-16-16-16L480 32c0-17.7-14.3-32-32-32z\"]\n};\nconst faFaceGrinBeam = {\n prefix: 'fas',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-170.5-84s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faGrinBeam = faFaceGrinBeam;\nconst faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32l209.1 0C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4l0 113.1c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-209.1 0c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-113.1zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4l0 113.1c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-113.1c-9.7-5.6-17.8-13.7-23.4-23.4L119.4 96zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-40.6 64 0 0 40.6c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-113.1c-9.7-5.6-17.8-13.7-23.4-23.4l-46 0c-5.4-15.4-14.6-28.9-26.5-39.6l0-24.4 72.6 0c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4l0 113.1c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-209.1 0z\"]\n};\nconst faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7C315.8 7.2 352 47.4 352 96c0 11.2-1.9 22-5.5 32l5.5 0c35.3 0 64 28.7 64 64c0 19.1-8.4 36.3-21.7 48l13.7 0c39.8 0 72 32.2 72 72c0 23.2-11 43.8-28 57c34.1 5.7 60 35.3 60 71c0 39.8-32.2 72-72 72L72 512c-39.8 0-72-32.2-72-72c0-35.7 25.9-65.3 60-71c-17-13.2-28-33.8-28-57c0-39.8 32.2-72 72-72l13.7 0C104.4 228.3 96 211.1 96 192c0-35.3 28.7-64 64-64l16.2 0c44.1-.1 79.8-35.9 79.8-80c0-9.2-1.5-17.9-4.3-26.1c-1.8-5.2-.8-11.1 2.8-15.4z\"]\n};\nconst faLocationPin = {\n prefix: 'fas',\n iconName: 'location-pin',\n icon: [384, 512, [\"map-marker\"], \"f041\", \"M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z\"]\n};\nconst faMapMarker = faLocationPin;\nconst faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [128331], \"f66b\", \"M60 120l228 71.2L516 120 288 48.8 60 120zM278.5 1.5c6.2-1.9 12.9-1.9 19.1 0l256 80C566.9 85.6 576 98 576 112l0 16s0 0 0 0l0 21.2L292.8 237.7c-3.1 1-6.4 1-9.5 0L0 149.2 0 128l0-16C0 98 9.1 85.6 22.5 81.5l256-80zm23.9 266.8L576 182.8l0 46.5-52.8 16.5c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5L576 262.8 576 400c0 14-9.1 26.4-22.5 30.5l-256 80c-6.2 1.9-12.9 1.9-19.1 0l-256-80C9.1 426.4 0 414 0 400L0 262.8l43.2 13.5c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20L0 229.2l0-46.5 273.7 85.5c9.3 2.9 19.3 2.9 28.6 0zm-185.5-2.6c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l64 20c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20l-64-20zm352 30.5c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-64 20c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5l64-20zm-224 9.5c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l38.5 12c9.3 2.9 19.3 2.9 28.6 0l38.5-12c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-38.5 12c-3.1 1-6.4 1-9.5 0l-38.5-12z\"]\n};\nconst faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [640, 512, [129531], \"f71e\", \"M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1L48 512c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0L444.2 0zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM144 208a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm64 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faHelmetSafety = {\n prefix: 'fas',\n iconName: 'helmet-safety',\n icon: [576, 512, [\"hard-hat\", \"hat-hard\"], \"f807\", \"M256 32c-17.7 0-32 14.3-32 32l0 2.3 0 99.6c0 5.6-4.5 10.1-10.1 10.1c-3.6 0-7-1.9-8.8-5.1L157.1 87C83 123.5 32 199.8 32 288l0 64 512 0 0-66.4c-.9-87.2-51.7-162.4-125.1-198.6l-48 83.9c-1.8 3.2-5.2 5.1-8.8 5.1c-5.6 0-10.1-4.5-10.1-10.1l0-99.6 0-2.3c0-17.7-14.3-32-32-32l-64 0zM16.6 384C7.4 384 0 391.4 0 400.6c0 4.7 2 9.2 5.8 11.9C27.5 428.4 111.8 480 288 480s260.5-51.6 282.2-67.5c3.8-2.8 5.8-7.2 5.8-11.9c0-9.2-7.4-16.6-16.6-16.6L16.6 384z\"]\n};\nconst faHardHat = faHelmetSafety;\nconst faHatHard = faHelmetSafety;\nconst faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [9167], \"f052\", \"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320L48 320c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48l352 0c26.5 0 48 21.5 48 48s-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48z\"]\n};\nconst faCircleRight = {\n prefix: 'fas',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm395.3 11.3l-112 112c-4.6 4.6-11.5 5.9-17.4 3.5s-9.9-8.3-9.9-14.8l0-64-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-64c0-6.5 3.9-12.3 9.9-14.8s12.9-1.1 17.4 3.5l112 112c6.2 6.2 6.2 16.4 0 22.6z\"]\n};\nconst faArrowAltCircleRight = faCircleRight;\nconst faPlaneCircleCheck = {\n prefix: 'fas',\n iconName: 'plane-circle-check',\n icon: [640, 512, [], \"e555\", \"M256 0c-35 0-64 59.5-64 93.7l0 84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9l0 65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8l0 42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3l0-84.6C320 59.5 292 0 256 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faFaceRollingEyes = {\n prefix: 'fas',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 368l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm32-144c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C208.5 175.6 224 198 224 224zm128 64c-35.3 0-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C400.5 175.6 416 198 416 224c0 35.3-28.7 64-64 64z\"]\n};\nconst faMehRollingEyes = faFaceRollingEyes;\nconst faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32l337.1 0C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4l0 273.1c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-337.1 0c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-273.1zM456.6 96L119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4l0 273.1c9.7 5.6 17.8 13.7 23.4 23.4l337.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-273.1c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-96zM256 320l32 0c35.3 0 64-28.7 64-64l0-32 64 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-32z\"]\n};\nconst faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [\"line-chart\"], \"f201\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 400c0 44.2 35.8 80 80 80l400 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 416c-8.8 0-16-7.2-16-16L64 64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"]\n};\nconst faLineChart = faChartLine;\nconst faMaskVentilator = {\n prefix: 'fas',\n iconName: 'mask-ventilator',\n icon: [640, 512, [], \"e524\", \"M159.1 176C139.4 219.2 128 264.7 128 300.8c0 15.9 2.2 31.4 6.3 46l-31.8-7.9C70.5 330.9 48 302.1 48 269l0-85c0-4.4 3.6-8 8-8l103.1 0zm26-48L56 128c-30.9 0-56 25.1-56 56l0 85c0 55.1 37.5 103.1 90.9 116.4l71.3 17.8c22.7 30.5 55.4 54.1 93.8 66.6l0-76.6c-19.7-16.4-32-40.3-32-66.9c0-49.5 43-134.4 96-134.4c52.5 0 96 84.9 96 134.4c0 26.7-12.4 50.4-32 66.8l0 76.6c38-12.6 70.6-36 93.5-66.4l71.6-17.9C602.5 372.1 640 324.1 640 269l0-85c0-30.9-25.1-56-56-56l-129.5 0C419.7 73.8 372.1 32 320 32c-52.6 0-100.2 41.8-134.9 96zm295.6 48L584 176c4.4 0 8 3.6 8 8l0 85c0 33-22.5 61.8-54.5 69.9l-31.8 8c4.2-14.7 6.4-30.1 6.4-46.1c0-36.1-11.6-81.6-31.3-124.8zM288 320l0 192 64 0 0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [8594], \"f061\", \"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"]\n};\nconst faSignsPost = {\n prefix: 'fas',\n iconName: 'signs-post',\n icon: [512, 512, [\"map-signs\"], \"f277\", \"M224 32L64 32C46.3 32 32 46.3 32 64l0 64c0 17.7 14.3 32 32 32l377.4 0c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7L288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 256c0-17.7-14.3-32-32-32l-160 0 0-32-64 0 0 32L70.6 224c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7L448 352c17.7 0 32-14.3 32-32l0-64zM288 480l0-96-64 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nconst faMapSigns = faSignsPost;\nconst faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M64 0C46.3 0 32 14.3 32 32l0 64c0 17.7 14.3 32 32 32l80 0 0 32-57 0c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-69.6c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160l-217 0 0-32 80 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L64 0zM96 48l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L96 80c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 432c0-8.8 7.2-16 16-16l352 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16zm48-168a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm120-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM160 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM328 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM256 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM424 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM352 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48z\"]\n};\nconst faPersonCircleQuestion = {\n prefix: 'fas',\n iconName: 'person-circle-question',\n icon: [576, 512, [], \"e542\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6l0 6.4c0 8.8 7.2 16 16 16s16-7.2 16-16l0-6.4c0-5.3 4.3-9.6 9.6-9.6l40.5 0c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2l0 14.8c0 8.8 7.2 16 16 16s16-7.2 16-16l0-5.1 23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9l-40.5 0c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nconst faH = {\n prefix: 'fas',\n iconName: 'h',\n icon: [384, 512, [104], \"48\", \"M320 256l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224 0-160c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 128L64 192 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0z\"]\n};\nconst faTarp = {\n prefix: 'fas',\n iconName: 'tarp',\n icon: [576, 512, [], \"e57b\", \"M576 128c0-35.3-28.7-64-64-64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l352 0 0-128c0-17.7 14.3-32 32-32l128 0 0-160zM448 448L576 320l-128 0 0 128zM96 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faScrewdriverWrench = {\n prefix: 'fas',\n iconName: 'screwdriver-wrench',\n icon: [512, 512, [\"tools\"], \"f7d9\", \"M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4l54.1 0 109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109 0-54.1c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7L352 176c-8.8 0-16-7.2-16-16l0-57.4c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM56 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faTools = faScrewdriverWrench;\nconst faArrowsToEye = {\n prefix: 'fas',\n iconName: 'arrows-to-eye',\n icon: [640, 512, [], \"e4bf\", \"M15 15C24.4 5.7 39.6 5.7 49 15l63 63L112 40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 96c0 13.3-10.7 24-24 24l-96 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l38.1 0L15 49C5.7 39.6 5.7 24.4 15 15zM133.5 243.9C158.6 193.6 222.7 112 320 112s161.4 81.6 186.5 131.9c3.8 7.6 3.8 16.5 0 24.2C481.4 318.4 417.3 400 320 400s-161.4-81.6-186.5-131.9c-3.8-7.6-3.8-16.5 0-24.2zM320 320a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM591 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-63 63 38.1 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-96 0c-13.3 0-24-10.7-24-24l0-96c0-13.3 10.7-24 24-24s24 10.7 24 24l0 38.1 63-63zM15 497c-9.4-9.4-9.4-24.6 0-33.9l63-63L40 400c-13.3 0-24-10.7-24-24s10.7-24 24-24l96 0c13.3 0 24 10.7 24 24l0 96c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-38.1L49 497c-9.4 9.4-24.6 9.4-33.9 0zm576 0l-63-63 0 38.1c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-96c0-13.3 10.7-24 24-24l96 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-38.1 0 63 63c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nconst faPlugCircleBolt = {\n prefix: 'fas',\n iconName: 'plug-circle-bolt',\n icon: [576, 512, [], \"e55b\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356l35.6 0c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380 376 380c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nconst faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z\"]\n};\nconst faMarsAndVenus = {\n prefix: 'fas',\n iconName: 'mars-and-venus',\n icon: [512, 512, [9893], \"f224\", \"M337.8 14.8C341.5 5.8 350.3 0 360 0L472 0c13.3 0 24 10.7 24 24l0 112c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-24.7 24.7C407 163.3 416 192.6 416 224c0 80.2-59 146.6-136 158.2l0 25.8 24 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-24 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-25.8C155 370.6 96 304.2 96 224c0-88.4 71.6-160 160-160c39.6 0 75.9 14.4 103.8 38.2L382.1 80 343 41c-6.9-6.9-8.9-17.2-5.2-26.2zM448 48s0 0 0 0s0 0 0 0s0 0 0 0zM352 224a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nconst faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [\"home-user\"], \"e1b0\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-320.4 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24zM352 224a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm-96 96c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80l-64 0z\"]\n};\nconst faHomeUser = faHouseUser;\nconst faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M49.7 32l90.8 0L114.9 160l-94 0C9.3 160 0 150.7 0 139.1c0-2.1 .3-4.1 .9-6.1L26.8 48.9C29.9 38.9 39.2 32 49.7 32zM272 160l-124.5 0L173.1 32 272 32l0 128zm32 0l0-128 98.9 0 14.4 72.1c-1.7 1.1-3.3 2.4-4.8 3.8c-18.4 16.4-35.4 34-50.5 52.1l-58 0zm209.9-23.7c-1.7 1.6-3.4 3.2-5 4.8C498 129.6 486.7 118.6 475 108c-7.6-6.9-17-10.8-26.6-11.8L435.5 32l90.8 0c10.5 0 19.8 6.9 22.9 16.9L575.1 133c.2 .7 .4 1.4 .5 2.1c-17.8-15-44.3-14.6-61.7 1.2zM325.2 210.7C304.3 244.5 288 282.9 288 318.1c0 49.3 18.6 95.2 49.6 129.9L128 448c0 17.7-14.3 32-32 32s-32-14.3-32-32L44 288l-12 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l4 0-4-32 305.5 0c-4.4 6.2-8.5 12.5-12.3 18.7zm180.6-34.5L518 162.5c5.4-6.1 13.3-8.8 20.9-8.9c7.2 0 14.3 2.6 19.9 7.8c19.7 18.3 39.8 43.2 55 70.6C629 259.2 640 290.2 640 320.2C640 408.8 568.7 480 480 480c-89.6 0-160-71.3-160-159.8c0-37.3 16-73.4 36.8-104.5c20.9-31.3 47.5-59 70.9-80.2c5.7-5.2 13.1-7.7 20.3-7.5c14.1 .3 23.8 11.4 32.7 21.6c0 0 0 0 0 0c2 2.3 4 4.6 6 6.7l19 19.9zM544 368.2c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C453 295.1 416 331.6 416 368.2c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faHouseCrack = {\n prefix: 'fas',\n iconName: 'house-crack',\n icon: [576, 512, [], \"e3b1\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 160.4c0 35.3 28.7 64 64 64l102.3 0-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L288 368l-60.2-82.8c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L288 448l38.4 64 122.1 0c35.5 0 64.2-28.8 64-64.3l-.7-160.2 32 0z\"]\n};\nconst faMartiniGlassCitrus = {\n prefix: 'fas',\n iconName: 'martini-glass-citrus',\n icon: [576, 512, [\"cocktail\"], \"f561\", \"M432 240c53 0 96-43 96-96s-43-96-96-96c-35.5 0-66.6 19.3-83.2 48l-52.6 0C316 40.1 369.3 0 432 0c79.5 0 144 64.5 144 144s-64.5 144-144 144c-27.7 0-53.5-7.8-75.5-21.3l35.4-35.4c12.2 5.6 25.8 8.7 40.1 8.7zM1.8 142.8C5.5 133.8 14.3 128 24 128l368 0c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-177 177L232 464l64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-88 0-88 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-118.1L7 169c-6.9-6.9-8.9-17.2-5.2-26.2z\"]\n};\nconst faCocktail = faMartiniGlassCitrus;\nconst faFaceSurprise = {\n prefix: 'fas',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faSurprise = faFaceSurprise;\nconst faBottleWater = {\n prefix: 'fas',\n iconName: 'bottle-water',\n icon: [320, 512, [], \"e4c5\", \"M120 0l80 0c13.3 0 24 10.7 24 24l0 40L96 64l0-40c0-13.3 10.7-24 24-24zM32 167.5c0-19.5 10-37.6 26.6-47.9l15.8-9.9C88.7 100.7 105.2 96 122.1 96l75.8 0c16.9 0 33.4 4.7 47.7 13.7l15.8 9.9C278 129.9 288 148 288 167.5c0 17-7.5 32.3-19.4 42.6C280.6 221.7 288 238 288 256c0 19.1-8.4 36.3-21.7 48c13.3 11.7 21.7 28.9 21.7 48s-8.4 36.3-21.7 48c13.3 11.7 21.7 28.9 21.7 48c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64c0-19.1 8.4-36.3 21.7-48C40.4 388.3 32 371.1 32 352s8.4-36.3 21.7-48C40.4 292.3 32 275.1 32 256c0-18 7.4-34.3 19.4-45.9C39.5 199.7 32 184.5 32 167.5zM96 240c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0c-8.8 0-16 7.2-16 16zm16 112c-8.8 0-16 7.2-16 16s7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0z\"]\n};\nconst faCirclePause = {\n prefix: 'fas',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM224 192l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faPauseCircle = faCirclePause;\nconst faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-109.7-86C569.9 374 608 291.9 608 192C608 86 565 0 512 0s-96 86-96 192c0 49.1 9.2 93.9 24.4 127.9l-59-46.2c1.6-24.8 2.6-52 2.6-81.6c0-65.5 13.2-142.4 60.2-192L160 0c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM367.3 385.4L66.5 148.4C64.9 162.4 64 177 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512l237.9 0c22.3 0 45.4-12.1 55.4-36.1c7.4-17.7 17.5-47.2 26-90.6zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z\"]\n};\nconst faAppleWhole = {\n prefix: 'fas',\n iconName: 'apple-whole',\n icon: [448, 512, [127822, 127823, \"apple-alt\"], \"f5d1\", \"M224 112c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80l16 0c8.8 0 16 7.2 16 16l0 16c0 44.2-35.8 80-80 80l-16 0zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z\"]\n};\nconst faAppleAlt = faAppleWhole;\nconst faKitchenSet = {\n prefix: 'fas',\n iconName: 'kitchen-set',\n icon: [576, 512, [], \"e51a\", \"M240 144A96 96 0 1 0 48 144a96 96 0 1 0 192 0zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112l71.8 0c8.8-9.8 21.6-16 35.8-16l104 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-104 0c-14.2 0-27-6.2-35.8-16l-71.8 0zM144 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c13.3 0 24 10.7 24 24l0 8 96 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-240 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l96 0 0-8c0-13.3 10.7-24 24-24zM288 464l0-112 224 0 0 112c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48zM48 320l80 0 16 0 32 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-16 0c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-80c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0 32 16 0zM24 464l176 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faR = {\n prefix: 'fas',\n iconName: 'r',\n icon: [320, 512, [114], \"52\", \"M64 32C28.7 32 0 60.7 0 96L0 288 0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 95.3 0L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144L64 32zM176 256L64 256 64 96l112 0c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nconst faTemperatureQuarter = {\n prefix: 'fas',\n iconName: 'temperature-quarter',\n icon: [320, 512, [\"temperature-1\", \"thermometer-1\", \"thermometer-quarter\"], \"f2ca\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3l0-50.7c0-8.8 7.2-16 16-16s16 7.2 16 16l0 50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature1 = faTemperatureQuarter;\nconst faThermometer1 = faTemperatureQuarter;\nconst faThermometerQuarter = faTemperatureQuarter;\nconst faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6l0 242.9c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4L0 134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1 0-188L288 246.6l0 188z\"]\n};\nconst faBitcoinSign = {\n prefix: 'fas',\n iconName: 'bitcoin-sign',\n icon: [320, 512, [], \"e0b4\", \"M48 32C48 14.3 62.3 0 80 0s32 14.3 32 32l0 32 32 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32c0 1.5-.1 3.1-.3 4.5C254.1 82.2 288 125.1 288 176c0 24.2-7.7 46.6-20.7 64.9c31.7 19.8 52.7 55 52.7 95.1c0 61.9-50.1 112-112 112l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-6.3 0C18.7 448 0 429.3 0 406.3L0 288l0-22.3L0 224 0 101.6C0 80.8 16.8 64 37.6 64L48 64l0-32zM64 224l112 0c26.5 0 48-21.5 48-48s-21.5-48-48-48L64 128l0 96zm112 64L64 288l0 96 144 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-32 0z\"]\n};\nconst faShieldDog = {\n prefix: 'fas',\n iconName: 'shield-dog',\n icon: [512, 512, [], \"e573\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8c35.3 0 64-28.7 64-64l0-64 44.2 0c12.1 0 23.2 6.8 28.6 17.7L320 192l64 0c8.8 0 16 7.2 16 16l0 32c0 44.2-35.8 80-80 80l-48 0 0 50.7c0 7.3-5.9 13.3-13.3 13.3c-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4c0-2.8 .6-5.5 1.9-8l15-30zM160 160l40 0 8 0 0 32 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-48c0-8.8 7.2-16 16-16zm128 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M122.2 0C91.7 0 65.5 21.5 59.5 51.4L8.3 307.4C.4 347 30.6 384 71 384l217 0 0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64 217 0c40.4 0 70.7-36.9 62.8-76.6l-51.2-256C574.5 21.5 548.3 0 517.8 0L122.2 0zM260.9 64l118.2 0 10.4 104-139 0L260.9 64zM202.3 168l-100.8 0L122.2 64l90.4 0L202.3 168zM91.8 216l105.6 0L187.1 320 71 320 91.8 216zm153.9 0l148.6 0 10.4 104-169.4 0 10.4-104zm196.8 0l105.6 0L569 320l-116 0L442.5 216zm96-48l-100.8 0L427.3 64l90.4 0 31.4-6.3L517.8 64l20.8 104z\"]\n};\nconst faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48C576 64.5 511.5 0 432 0S288 64.5 288 144l0 48L64 192c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-32 0 0-48z\"]\n};\nconst faElevator = {\n prefix: 'fas',\n iconName: 'elevator',\n icon: [512, 512, [], \"e16d\", \"M132.7 4.7l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9l128 0c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 128zm96 96a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM80 400c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-16zm192 0c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-16zm32-128a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM356.7 91.3c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5 0 432 0L304 0c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64z\"]\n};\nconst faMoneyBillTransfer = {\n prefix: 'fas',\n iconName: 'money-bill-transfer',\n icon: [640, 512, [], \"e528\", \"M535 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L384 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l174.1 0L535 41zM105 377l-23 23L256 400c13.3 0 24 10.7 24 24s-10.7 24-24 24L81.9 448l23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 441c-4.5-4.5-7-10.6-7-17s2.5-12.5 7-17l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM96 64l241.9 0c-3.7 7.2-5.9 15.3-5.9 24c0 28.7 23.3 52 52 52l117.4 0c-4 17 .6 35.5 13.8 48.8c20.3 20.3 53.2 20.3 73.5 0L608 169.5 608 384c0 35.3-28.7 64-64 64l-241.9 0c3.7-7.2 5.9-15.3 5.9-24c0-28.7-23.3-52-52-52l-117.4 0c4-17-.6-35.5-13.8-48.8c-20.3-20.3-53.2-20.3-73.5 0L32 342.5 32 128c0-35.3 28.7-64 64-64zm64 64l-64 0 0 64c35.3 0 64-28.7 64-64zM544 320c-35.3 0-64 28.7-64 64l64 0 0-64zM320 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nconst faMoneyBillTrendUp = {\n prefix: 'fas',\n iconName: 'money-bill-trend-up',\n icon: [512, 512, [], \"e529\", \"M470.7 9.4c3 3.1 5.3 6.6 6.9 10.3s2.4 7.8 2.4 12.2c0 0 0 .1 0 .1c0 0 0 0 0 0l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.7L310.6 214.6c-11.8 11.8-30.8 12.6-43.5 1.7L176 138.1 84.8 216.3c-13.4 11.5-33.6 9.9-45.1-3.5s-9.9-33.6 3.5-45.1l112-96c12-10.3 29.7-10.3 41.7 0l89.5 76.7L370.7 64 352 64c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0s0 0 0 0c8.8 0 16.8 3.6 22.6 9.3l.1 .1zM0 304c0-26.5 21.5-48 48-48l416 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 304zM48 416l0 48 48 0c0-26.5-21.5-48-48-48zM96 304l-48 0 0 48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48l48 0 0-48zM416 304c0 26.5 21.5 48 48 48l0-48-48 0zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faHouseFloodWaterCircleArrowRight = {\n prefix: 'fas',\n iconName: 'house-flood-water-circle-arrow-right',\n icon: [640, 512, [], \"e50f\", \"M288 144A144 144 0 1 0 0 144a144 144 0 1 0 288 0zM140.7 76.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L169.4 160 80 160c-8.8 0-16-7.2-16-16s7.2-16 16-16l89.4 0L140.7 99.3c-6.2-6.2-6.2-16.4 0-22.6zM320 144c0 57.3-27.4 108.2-69.8 140.3c11.8-3.6 23-9.4 33-16.2c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c2.1 1.7 4.2 3.3 6.5 4.9l-.3-84.4 16.6 0c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128C407.6-2 392.4-2 381.2 6.1L301 64.4c12.1 23.9 19 50.9 19 79.6zm18.5 165.9c-11.1-7.9-25.9-7.9-37 0C279 325.4 251.5 336 224 336c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 389.7 191 400 224 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7c0 0 0 0 0 0C471.4 325.2 442.9 336 416 336c-27.5 0-55-10.6-77.5-26.1zm0 112c-11.1-7.9-25.9-7.9-37 0C279 437.4 251.5 448 224 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 501.7 191 512 224 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C471.4 437.2 442.9 448 416 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nconst faSquarePollHorizontal = {\n prefix: 'fas',\n iconName: 'square-poll-horizontal',\n icon: [448, 512, [\"poll-h\"], \"f682\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faPollH = faSquarePollHorizontal;\nconst faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z\"]\n};\nconst faBackwardFast = {\n prefix: 'fas',\n iconName: 'backward-fast',\n icon: [512, 512, [9198, \"fast-backward\"], \"f049\", \"M493.6 445c-11.2 5.3-24.5 3.6-34.1-4.4L288 297.7 288 416c0 12.4-7.2 23.7-18.4 29s-24.5 3.6-34.1-4.4L64 297.7 64 416c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 96C0 78.3 14.3 64 32 64s32 14.3 32 32l0 118.3L235.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S288 83.6 288 96l0 118.3L459.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S512 83.6 512 96l0 320c0 12.4-7.2 23.7-18.4 29z\"]\n};\nconst faFastBackward = faBackwardFast;\nconst faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [9842, 9850, 9851], \"f1b8\", \"M174.7 45.1C192.2 17 223 0 256 0s63.8 17 81.3 45.1l38.6 61.7 27-15.6c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3l-23.4 87.4c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l28.4-16.4L283 79c-5.8-9.3-16-15-27-15s-21.2 5.7-27 15l-17.5 28c-9.2 14.8-28.6 19.5-43.6 10.5c-15.3-9.2-20.2-29.2-10.7-44.4l17.5-28zM429.5 251.9c15-9 34.4-4.3 43.6 10.5l24.4 39.1c9.4 15.1 14.4 32.4 14.6 50.2c.3 53.1-42.7 96.4-95.8 96.4L320 448l0 32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 32 96.2 0c17.6 0 31.9-14.4 31.8-32c0-5.9-1.7-11.7-4.8-16.7l-24.4-39.1c-9.5-15.2-4.7-35.2 10.7-44.4zm-364.6-31L36 204.2c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20l87.4-23.4c12.8-3.4 26 4.2 29.4 17L182 241.2c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-26.5-15.3L68.8 335.3c-3.1 5-4.8 10.8-4.8 16.7c-.1 17.6 14.2 32 31.8 32l32.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.2 0C42.7 448-.3 404.8 0 351.6c.1-17.8 5.1-35.1 14.6-50.2l50.3-80.5z\"]\n};\nconst faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M370.7 96.1C346.1 39.5 289.7 0 224 0S101.9 39.5 77.3 96.1C60.9 97.5 48 111.2 48 128l0 64c0 16.8 12.9 30.5 29.3 31.9C101.9 280.5 158.3 320 224 320s122.1-39.5 146.7-96.1c16.4-1.4 29.3-15.1 29.3-31.9l0-64c0-16.8-12.9-30.5-29.3-31.9zM336 144l0 16c0 53-43 96-96 96l-32 0c-53 0-96-43-96-96l0-16c0-26.5 21.5-48 48-48l128 0c26.5 0 48 21.5 48 48zM189.3 162.7l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM112.7 316.5C46.7 342.6 0 407 0 482.3C0 498.7 13.3 512 29.7 512l98.3 0 0-64c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 64 98.3 0c16.4 0 29.7-13.3 29.7-29.7c0-75.3-46.7-139.7-112.7-165.8C303.9 338.8 265.5 352 224 352s-79.9-13.2-111.3-35.5zM176 448c-8.8 0-16 7.2-16 16l0 48 32 0 0-48c0-8.8-7.2-16-16-16zm96 32a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M514.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-73.8 0L630.8 469.1c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L238.1 161.3 197.8 20.4C194.9 10.2 202.6 0 213.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L397.7 192l116.6 0zM41.5 128.7l321 252.9L297.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L144 320l-43.2 57.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L64 256 32.5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-6.2 4-11.4 9.5-13.3z\"]\n};\nconst faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [8482], \"f25c\", \"M345.6 108.8c-8.3-11-22.7-15.5-35.7-11.2S288 114.2 288 128l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 86.4 115.2c6 8.1 15.5 12.8 25.6 12.8s19.6-4.7 25.6-12.8L576 224l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-256c0-13.8-8.8-26-21.9-30.4s-27.5 .1-35.7 11.2L464 266.7 345.6 108.8zM0 128c0 17.7 14.3 32 32 32l64 0 0 224c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 96C14.3 96 0 110.3 0 128z\"]\n};\nconst faBasketball = {\n prefix: 'fas',\n iconName: 'basketball',\n icon: [512, 512, [127936, \"basketball-ball\"], \"f434\", \"M86.6 64l85.2 85.2C194.5 121.7 208 86.4 208 48c0-14.7-2-28.9-5.7-42.4C158.6 15 119 35.5 86.6 64zM64 86.6C35.5 119 15 158.6 5.6 202.3C19.1 206 33.3 208 48 208c38.4 0 73.7-13.5 101.3-36.1L64 86.6zM256 0c-7.3 0-14.6 .3-21.8 .9C238 16 240 31.8 240 48c0 47.3-17.1 90.5-45.4 124L256 233.4 425.4 64C380.2 24.2 320.9 0 256 0zM48 240c-16.2 0-32-2-47.1-5.8C.3 241.4 0 248.7 0 256c0 64.9 24.2 124.2 64 169.4L233.4 256 172 194.6C138.5 222.9 95.3 240 48 240zm463.1 37.8c.6-7.2 .9-14.5 .9-21.8c0-64.9-24.2-124.2-64-169.4L278.6 256 340 317.4c33.4-28.3 76.7-45.4 124-45.4c16.2 0 32 2 47.1 5.8zm-4.7 31.9C492.9 306 478.7 304 464 304c-38.4 0-73.7 13.5-101.3 36.1L448 425.4c28.5-32.3 49.1-71.9 58.4-115.7zM340.1 362.7C317.5 390.3 304 425.6 304 464c0 14.7 2 28.9 5.7 42.4C353.4 497 393 476.5 425.4 448l-85.2-85.2zM317.4 340L256 278.6 86.6 448c45.1 39.8 104.4 64 169.4 64c7.3 0 14.6-.3 21.8-.9C274 496 272 480.2 272 464c0-47.3 17.1-90.5 45.4-124z\"]\n};\nconst faBasketballBall = faBasketball;\nconst faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [128225], \"f7c0\", \"M192 32c0-17.7 14.3-32 32-32C383.1 0 512 128.9 512 288c0 17.7-14.3 32-32 32s-32-14.3-32-32C448 164.3 347.7 64 224 64c-17.7 0-32-14.3-32-32zM60.6 220.6L164.7 324.7l28.4-28.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1l-28.4 28.4L291.4 451.4c14.5 14.5 11.8 38.8-7.3 46.3C260.5 506.9 234.9 512 208 512C93.1 512 0 418.9 0 304c0-26.9 5.1-52.5 14.4-76.1c7.5-19 31.8-21.8 46.3-7.3zM224 96c106 0 192 86 192 192c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-70.7-57.3-128-128-128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faCircleUp = {\n prefix: 'fas',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm11.3-395.3l112 112c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9l-64 0 0 96c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-96-64 0c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l112-112c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faArrowAltCircleUp = faCircleUp;\nconst faMobileScreenButton = {\n prefix: 'fas',\n iconName: 'mobile-screen-button',\n icon: [384, 512, [\"mobile-alt\"], \"f3cd\", \"M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zM224 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM304 64L80 64l0 320 224 0 0-320z\"]\n};\nconst faMobileAlt = faMobileScreenButton;\nconst faVolumeHigh = {\n prefix: 'fas',\n iconName: 'volume-high',\n icon: [640, 512, [128266, \"volume-up\"], \"f028\", \"M533.6 32.5C598.5 85.2 640 165.8 640 256s-41.5 170.7-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64l0 384c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352 64 352c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l67.8 0L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"]\n};\nconst faVolumeUp = faVolumeHigh;\nconst faUsersRays = {\n prefix: 'fas',\n iconName: 'users-rays',\n icon: [640, 512, [], \"e593\", \"M41 7C31.6-2.3 16.4-2.3 7 7S-2.3 31.6 7 41l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41 7zM599 7L527 79c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7 505c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 471c-9.4 9.4-9.4 24.6 0 33.9zm592 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM212.1 336c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-.5-1.4-1-2.7-1.6-4c-9.4-22.3-29.8-38.9-54.3-43c-3.9-.7-7.9-1-12-1l-80 0c-4.1 0-8.1 .3-12 1c-.8 .1-1.7 .3-2.5 .5c-24.9 5.1-45.1 23-53.4 46.5zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7l56.1 0c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4l-69.3 0zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3l-69.3 0c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6l56.1 0zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L80 128c-8.8 0-16-7.2-16-16s7.2-16 16-16l368 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM416 272a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8l0 128c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376 80 376c-8.8 0-16-7.2-16-16l0-48c0-8.8 7.2-16 16-16l33.4 0 35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z\"]\n};\nconst faBurger = {\n prefix: 'fas',\n iconName: 'burger',\n icon: [512, 512, [\"hamburger\"], \"f805\", \"M61.1 224C45 224 32 211 32 194.9c0-1.9 .2-3.7 .6-5.6C37.9 168.3 78.8 32 256 32s218.1 136.3 223.4 157.3c.5 1.9 .6 3.7 .6 5.6c0 16.1-13 29.1-29.1 29.1L61.1 224zM144 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm240 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM272 96a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM16 304c0-26.5 21.5-48 48-48l384 0c26.5 0 48 21.5 48 48s-21.5 48-48 48L64 352c-26.5 0-48-21.5-48-48zm16 96c0-8.8 7.2-16 16-16l416 0c8.8 0 16 7.2 16 16l0 16c0 35.3-28.7 64-64 64L96 480c-35.3 0-64-28.7-64-64l0-16z\"]\n};\nconst faHamburger = faBurger;\nconst faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [128295], \"f0ad\", \"M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7L336 192c-8.8 0-16-7.2-16-16l0-57.4c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faBugs = {\n prefix: 'fas',\n iconName: 'bugs',\n icon: [576, 512, [], \"e4d0\", \"M164.5 107.4l33.4-73.5c5.5-12.1 .1-26.3-11.9-31.8s-26.3-.1-31.8 11.9L128 71.7 101.9 14.1C96.4 2 82.1-3.3 70.1 2.1S52.7 21.9 58.1 33.9l33.4 73.5c-10.2 7.1-18.2 17-22.9 28.6l-17 0-4.1-20.7c-2.6-13-15.2-21.4-28.2-18.8S-2.1 111.7 .5 124.7l8 40C10.7 175.9 20.6 184 32 184l32 0 0 23.3-37.8 9.5c-9.5 2.4-16.6 10.2-17.9 19.9l-8 56c-1.9 13.1 7.2 25.3 20.4 27.2s25.3-7.2 27.2-20.4l5.7-40 18.4-4.6C82.7 274.6 103.8 288 128 288s45.3-13.4 56.1-33.2l18.4 4.6 5.7 40c1.9 13.1 14 22.2 27.2 20.4s22.2-14 20.4-27.2l-8-56c-1.4-9.7-8.5-17.5-17.9-19.9L192 207.3l0-23.3 32 0c11.4 0 21.3-8.1 23.5-19.3l8-40c2.6-13-5.8-25.6-18.8-28.2s-25.6 5.8-28.2 18.8L204.3 136l-17 0c-4.7-11.6-12.7-21.5-22.9-28.6zM496 286.5l65.6-47c10.8-7.7 13.3-22.7 5.6-33.5s-22.7-13.3-33.5-5.6l-51.4 36.8 6.1-62.9c1.3-13.2-8.4-24.9-21.6-26.2s-24.9 8.4-26.2 21.6L432.8 250c-12.3 1-24.2 5.6-34.1 13.3L384 254.8l6.8-20c4.2-12.6-2.5-26.2-15-30.4s-26.2 2.5-30.4 15l-13.1 38.6c-3.7 10.8 .8 22.8 10.7 28.5l27.7 16L359 322.7 321.5 312c-9.4-2.7-19.5 .6-25.5 8.3l-34.9 44.5c-8.2 10.4-6.4 25.5 4.1 33.7s25.5 6.4 33.7-4.1l25-31.8 18.2 5.2c-.5 22.6 11 44.7 32 56.8s45.9 11 65.2-.7l13.6 13.2-15.1 37.5c-4.9 12.3 1 26.3 13.3 31.2s26.3-1 31.2-13.3L503.5 440c3.6-9.1 1.4-19.4-5.6-26.2l-28-27.1 11.6-20.1 27.7 16c9.9 5.7 22.5 3.7 30-4.9L566.2 347c8.7-10 7.8-25.1-2.2-33.9s-25.1-7.8-33.9 2.2l-13.9 15.9-14.7-8.5c1.7-12.4-.2-25-5.5-36.2z\"]\n};\nconst faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [448, 512, [8360, \"rupee\"], \"f156\", \"M0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320 64 320l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 288 0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80L64 96l0 160zm256.5 16.4c-.9 6 0 8.7 .4 9.8c.4 1.1 1.4 2.6 4.2 4.9c7.2 5.7 18.7 10 37.9 16.8l1.3 .5c16 5.6 38.7 13.6 55.7 28.1c9.5 8.1 17.9 18.6 23.1 32.3c5.1 13.7 6.1 28.5 3.8 44c-4.2 28.1-20.5 49.3-43.8 60.9c-22.1 11-48.1 12.5-73.2 8l-.2 0s0 0 0 0c-9.3-1.8-20.5-5.7-29.3-9c-6-2.3-12.6-4.9-17.7-6.9c0 0 0 0 0 0c-2.5-1-4.6-1.8-6.3-2.5c-16.5-6.4-24.6-25-18.2-41.4s24.9-24.6 41.4-18.2c2.6 1 5.2 2 7.9 3.1c0 0 0 0 0 0c4.8 1.9 9.8 3.9 15.4 6c8.8 3.3 15.3 5.4 18.7 6c15.7 2.8 26.7 .8 32.9-2.3c5-2.5 8-6 9.1-13c1-6.9 .2-10.5-.5-12.3c-.6-1.7-1.8-3.6-4.5-5.9c-6.9-5.8-18.2-10.4-36.9-17l-3-1.1c-15.5-5.4-37-13-53.3-25.9c-9.5-7.5-18.3-17.6-23.7-31c-5.5-13.4-6.6-28-4.4-43.2c8.4-57.1 67-78 116.9-68.9c6.9 1.3 27.3 5.8 35.4 8.4c16.9 5.2 26.3 23.2 21.1 40.1s-23.2 26.3-40.1 21.1c-4.7-1.4-22.3-5.5-27.9-6.5c-14.6-2.7-25.8-.4-32.6 3.2c-6.3 3.3-8.9 7.6-9.5 12z\"]\n};\nconst faRupee = faRupeeSign;\nconst faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm152 32c5.3 0 10.2 2.6 13.2 6.9l88 128c3.4 4.9 3.7 11.3 1 16.5s-8.2 8.6-14.2 8.6l-88 0-40 0-48 0-48 0c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l48-80c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l12.8 21.4 48.3-70.2c3-4.3 7.9-6.9 13.2-6.9z\"]\n};\nconst faCircleQuestion = {\n prefix: 'fas',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faQuestionCircle = faCircleQuestion;\nconst faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [128747], \"f5b0\", \"M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2l137.7 0c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48l-57.4 0c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448c-17.7 0-32 14.3-32 32z\"]\n};\nconst faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.4-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8 512 128l-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM96 171.6L40.6 128 0 128 0 352c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-180.4zM413.6 421.9L128 196.9 128 352l28.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128l0 224c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-224-96 0zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faBookBookmark = {\n prefix: 'fas',\n iconName: 'book-bookmark',\n icon: [448, 512, [], \"e0bb\", \"M0 96C0 43 43 0 96 0l96 0 0 190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5L352 0l32 0 32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32z\"]\n};\nconst faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [448, 512, [], \"f126\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 87.8c18.8-10.9 40.7-17.1 64-17.1l96 0c35.3 0 64-28.7 64-64l0-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 6.7c0 70.7-57.3 128-128 128l-96 0c-35.3 0-64 28.7-64 64l0 6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-6.7 0-198.7C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M320 64c14.4 0 22.3-7 30.8-14.4C360.4 41.1 370.7 32 392 32c49.3 0 84.4 152.2 97.9 221.9C447.8 272.1 390.9 288 320 288s-127.8-15.9-169.9-34.1C163.6 184.2 198.7 32 248 32c21.3 0 31.6 9.1 41.2 17.6C297.7 57 305.6 64 320 64zM111.1 270.7c47.2 24.5 117.5 49.3 209 49.3s161.8-24.8 208.9-49.3c24.8-12.9 49.8-28.3 70.1-47.7c7.9-7.9 20.2-9.2 29.6-3.3c9.5 5.9 13.5 17.9 9.9 28.5c-13.5 37.7-38.4 72.3-66.1 100.6C523.7 398.9 443.6 448 320 448s-203.6-49.1-252.5-99.2C39.8 320.4 14.9 285.8 1.4 248.1c-3.6-10.6 .4-22.6 9.9-28.5c9.5-5.9 21.7-4.5 29.6 3.3c20.4 19.4 45.3 34.8 70.1 47.7z\"]\n};\nconst faBridge = {\n prefix: 'fas',\n iconName: 'bridge',\n icon: [576, 512, [], \"e4c8\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l40 0 0 64L0 160 0 288c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96s96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96l0-128-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM456 96l0 64-80 0 0-64 80 0zM328 96l0 64-80 0 0-64 80 0zM200 96l0 64-80 0 0-64 80 0z\"]\n};\nconst faPhoneFlip = {\n prefix: 'fas',\n iconName: 'phone-flip',\n icon: [512, 512, [128381, \"phone-alt\"], \"f879\", \"M347.1 24.6c7.7-18.6 28-28.5 47.4-23.2l88 24C499.9 30.2 512 46 512 64c0 247.4-200.6 448-448 448c-18 0-33.8-12.1-38.6-29.5l-24-88c-5.3-19.4 4.6-39.7 23.2-47.4l96-40c16.3-6.8 35.2-2.1 46.3 11.6L207.3 368c70.4-33.3 127.4-90.3 160.7-160.7L318.7 167c-13.7-11.2-18.4-30-11.6-46.3l40-96z\"]\n};\nconst faPhoneAlt = faPhoneFlip;\nconst faTruckFront = {\n prefix: 'fas',\n iconName: 'truck-front',\n icon: [512, 512, [], \"e2b7\", \"M0 80C0 35.8 35.8 0 80 0L432 0c44.2 0 80 35.8 80 80l0 288c0 26.2-12.6 49.4-32 64l0 48c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-256 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-48C12.6 417.4 0 394.2 0 368L0 80zm129.9 72.2L112 224l288 0-17.9-71.8C378.5 138 365.7 128 351 128l-190 0c-14.7 0-27.5 10-31 24.2zM128 320a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [576, 512, [128008], \"f6be\", \"M320 192l17.1 0c22.1 38.3 63.5 64 110.9 64c11 0 21.8-1.4 32-4l0 4 0 32 0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-140.8L280 448l56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-144 0c-53 0-96-43-96-96l0-223.5c0-16.1-12-29.8-28-31.8l-7.9-1c-17.5-2.2-30-18.2-27.8-35.7s18.2-30 35.7-27.8l7.9 1c48 6 84.1 46.8 84.1 95.3l0 85.3c34.4-51.7 93.2-85.8 160-85.8zm160 26.5s0 0 0 0c-10 3.5-20.8 5.5-32 5.5c-28.4 0-54-12.4-71.6-32c0 0 0 0 0 0c-3.7-4.1-7-8.5-9.9-13.2C357.3 164 352 146.6 352 128c0 0 0 0 0 0l0-96 0-20 0-1.3C352 4.8 356.7 .1 362.6 0l.2 0c3.3 0 6.4 1.6 8.4 4.2c0 0 0 0 0 .1L384 21.3l27.2 36.3L416 64l64 0 4.8-6.4L512 21.3 524.8 4.3c0 0 0 0 0-.1c2-2.6 5.1-4.2 8.4-4.2l.2 0C539.3 .1 544 4.8 544 10.7l0 1.3 0 20 0 96c0 17.3-4.6 33.6-12.6 47.6c-11.3 19.8-29.6 35.2-51.4 42.9zM432 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faAnchorCircleExclamation = {\n prefix: 'fas',\n iconName: 'anchor-circle-exclamation',\n icon: [640, 512, [], \"e4ab\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2L320 448l0-80 0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faTruckField = {\n prefix: 'fas',\n iconName: 'truck-field',\n icon: [640, 512, [], \"e58d\", \"M32 96c0-35.3 28.7-64 64-64l224 0c23.7 0 44.4 12.9 55.4 32l51.8 0c25.3 0 48.2 14.9 58.5 38l52.8 118.8c.5 1.1 .9 2.1 1.3 3.2l4.2 0c35.3 0 64 28.7 64 64l0 32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-32c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32l0-32zM384 224l85.9 0-42.7-96L384 128l0 96zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M512 96c0 50.2-59.1 125.1-84.6 155c-3.8 4.4-9.4 6.1-14.5 5L320 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96 43 96 96s-43 96-96 96l-276.4 0c8.7-9.9 19.3-22.6 30-36.8c6.3-8.4 12.8-17.6 19-27.2L416 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0c-53 0-96-43-96-96s43-96 96-96l39.8 0c-21-31.5-39.8-67.7-39.8-96c0-53 43-96 96-96s96 43 96 96zM117.1 489.1c-3.8 4.3-7.2 8.1-10.1 11.3l-1.8 2-.2-.2c-6 4.6-14.6 4-20-1.8C59.8 473 0 402.5 0 352c0-53 43-96 96-96s96 43 96 96c0 30-21.1 67-43.5 97.9c-10.7 14.7-21.7 28-30.8 38.5l-.6 .7zM128 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faClipboardQuestion = {\n prefix: 'fas',\n iconName: 'clipboard-question',\n icon: [384, 512, [], \"e4e3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faPanorama = {\n prefix: 'fas',\n iconName: 'panorama',\n icon: [640, 512, [], \"e209\", \"M45.6 32C20.4 32 0 52.4 0 77.6L0 434.4C0 459.6 20.4 480 45.6 480c5.1 0 10-.8 14.7-2.4C74.6 472.8 177.6 440 320 440s245.4 32.8 259.6 37.6c4.7 1.6 9.7 2.4 14.7 2.4c25.2 0 45.6-20.4 45.6-45.6l0-356.7C640 52.4 619.6 32 594.4 32c-5 0-10 .8-14.7 2.4C565.4 39.2 462.4 72 320 72S74.6 39.2 60.4 34.4C55.6 32.8 50.7 32 45.6 32zM96 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm272 0c7.9 0 15.4 3.9 19.8 10.5L512.3 353c5.4 8 5.6 18.4 .4 26.5s-14.7 12.3-24.2 10.7C442.7 382.4 385.2 376 320 376c-65.6 0-123.4 6.5-169.3 14.4c-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L197.3 265c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l26.4 33.1 87-127.6c4.5-6.6 11.9-10.5 19.8-10.5z\"]\n};\nconst faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM224 160c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [576, 512, [], \"f62f\", \"M96 32C43 32 0 75 0 128l0 64c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-64c0-53-43-96-96-96L96 32zM224 96c26.5 0 48 21.5 48 48l0 56c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-56c0-26.5 21.5-48 48-48zm80 48c0-26.5 21.5-48 48-48s48 21.5 48 48l0 56c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-56zM96 128c26.5 0 48 21.5 48 48l0 24c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-24c0-26.5 21.5-48 48-48zm336 48c0-26.5 21.5-48 48-48s48 21.5 48 48l0 24c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-24zM96 480l384 0c53 0 96-43 96-96l0-32c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 32c0 53 43 96 96 96zm0-64c-26.5 0-48-21.5-48-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48zm80-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48s-48-21.5-48-48zm176 48c-26.5 0-48-21.5-48-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48zm80-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nconst faFileCircleMinus = {\n prefix: 'fas',\n iconName: 'file-circle-minus',\n icon: [576, 512, [], \"e4ed\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16z\"]\n};\nconst faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [512, 512, [], \"f02c\", \"M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5L0 80C0 53.5 21.5 32 48 32l149.5 0c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [320, 512, [127863], \"f4e3\", \"M32.1 29.3C33.5 12.8 47.4 0 64 0L256 0c16.6 0 30.5 12.8 31.9 29.3l14 168.4c6 72-42.5 135.2-109.9 150.6l0 99.6 48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-80 0-80 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0 0-99.6C60.6 333 12.1 269.8 18.1 197.8l14-168.4zm56 98.7l143.8 0-5.3-64L93.4 64l-5.3 64z\"]\n};\nconst faForwardFast = {\n prefix: 'fas',\n iconName: 'forward-fast',\n icon: [512, 512, [9197, \"fast-forward\"], \"f050\", \"M18.4 445c11.2 5.3 24.5 3.6 34.1-4.4L224 297.7 224 416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4L448 297.7 448 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-320c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 118.3L276.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S224 83.6 224 96l0 118.3L52.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S0 83.6 0 96L0 416c0 12.4 7.2 23.7 18.4 29z\"]\n};\nconst faFastForward = faForwardFast;\nconst faFaceMehBlank = {\n prefix: 'fas',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm208.4-48a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faMehBlank = faFaceMehBlank;\nconst faSquareParking = {\n prefix: 'fas',\n iconName: 'square-parking',\n icon: [448, 512, [127359, \"parking\"], \"f540\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM192 256l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0 0 64zm48 64l-48 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64 0-120c0-22.1 17.9-40 40-40l72 0c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nconst faParking = faSquareParking;\nconst faHouseSignal = {\n prefix: 'fas',\n iconName: 'house-signal',\n icon: [576, 512, [], \"e012\", \"M357.7 8.5c-12.3-11.3-31.2-11.3-43.4 0l-208 192c-9.4 8.6-12.7 22-8.5 34c87.1 25.3 155.6 94.2 180.3 181.6L464 416c26.5 0 48-21.5 48-48l0-112 32 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8.1-35.2l-208-192zM288 208c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16l0-64zM24 256c-13.3 0-24 10.7-24 24s10.7 24 24 24c101.6 0 184 82.4 184 184c0 13.3 10.7 24 24 24s24-10.7 24-24c0-128.1-103.9-232-232-232zm8 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM0 376c0 13.3 10.7 24 24 24c48.6 0 88 39.4 88 88c0 13.3 10.7 24 24 24s24-10.7 24-24c0-75.1-60.9-136-136-136c-13.3 0-24 10.7-24 24z\"]\n};\nconst faBarsProgress = {\n prefix: 'fas',\n iconName: 'bars-progress',\n icon: [512, 512, [\"tasks-alt\"], \"f828\", \"M448 160l-128 0 0-32 128 0 0 32zM48 64C21.5 64 0 85.5 0 112l0 64c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48L48 64zM448 352l0 32-256 0 0-32 256 0zM48 288c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48L48 288z\"]\n};\nconst faTasksAlt = faBarsProgress;\nconst faFaucetDrip = {\n prefix: 'fas',\n iconName: 'faucet-drip',\n icon: [512, 512, [128688], \"e006\", \"M224 0c17.7 0 32 14.3 32 32l0 12 96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12 0-12c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32l96 0 22.6-22.6c6-6 14.1-9.4 22.6-9.4l18.7 0 0-43.8 32-4 32 4 0 43.8 18.7 0c8.5 0 16.6 3.4 22.6 9.4L320 192l32 0c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s-14.3-32-32-32l-36.1 0c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48L32 320c-17.7 0-32-14.3-32-32l0-64zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z\"]\n};\nconst faCartFlatbed = {\n prefix: 'fas',\n iconName: 'cart-flatbed',\n icon: [640, 512, [\"dolly-flatbed\"], \"f474\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l16 0c8.8 0 16 7.2 16 16l0 288c0 44.2 35.8 80 80 80l18.7 0c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16l197.5 0c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16l66.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-464 0c-8.8 0-16-7.2-16-16l0-288C128 35.8 92.2 0 48 0L32 0zM192 80l0 192c0 26.5 21.5 48 48 48l320 0c26.5 0 48-21.5 48-48l0-192c0-26.5-21.5-48-48-48l-96 0 0 144c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L400 163.2l-39.1 26.1c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1l0-144-96 0c-26.5 0-48 21.5-48 48z\"]\n};\nconst faDollyFlatbed = faCartFlatbed;\nconst faBanSmoking = {\n prefix: 'fas',\n iconName: 'ban-smoking',\n icon: [512, 512, [128685, \"smoking-ban\"], \"f54d\", \"M99.5 144.8L178.7 224l96 96 92.5 92.5C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32 82.7 0 0 32-50.7 0zm32 32l34.7 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-130.7 0L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM272 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48l32 0c8.8 0 16 7.2 16 16s7.2 16 16 16s16-7.2 16-16c0-26.5-21.5-48-48-48l-32 0c-8.8 0-16-7.2-16-16s-7.2-16-16-16zM229.5 320l-96-96L112 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l117.5 0z\"]\n};\nconst faSmokingBan = faBanSmoking;\nconst faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [576, 512, [], \"f120\", \"M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416l288 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faMobileButton = {\n prefix: 'fas',\n iconName: 'mobile-button',\n icon: [384, 512, [], \"f10b\", \"M80 0C44.7 0 16 28.7 16 64l0 384c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L80 0zM192 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faHouseMedicalFlag = {\n prefix: 'fas',\n iconName: 'house-medical-flag',\n icon: [640, 512, [], \"e514\", \"M480 0c17.7 0 32 14.3 32 32l112 0c8.8 0 16 7.2 16 16l0 128c0 8.8-7.2 16-16 16l-112 0 0 320-64 0 0-320 0-160c0-17.7 14.3-32 32-32zM276.8 39.7L416 159l0 353 1 0-.2 0L96 512c-17.7 0-32-14.3-32-32l0-192-32 0c-13.4 0-25.4-8.3-30-20.9s-1-26.7 9.2-35.4l224-192c12-10.3 29.7-10.3 41.7 0zM224 208l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faBasketShopping = {\n prefix: 'fas',\n iconName: 'basket-shopping',\n icon: [576, 512, [\"shopping-basket\"], \"f291\", \"M253.3 35.1c6.1-11.8 1.5-26.3-10.2-32.4s-26.3-1.5-32.4 10.2L117.6 192 32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32L83.9 463.5C91 492 116.6 512 146 512L430 512c29.4 0 55-20 62.1-48.5L544 256c17.7 0 32-14.3 32-32s-14.3-32-32-32l-85.6 0L365.3 12.9C359.2 1.2 344.7-3.4 332.9 2.7s-16.3 20.6-10.2 32.4L404.3 192l-232.6 0L253.3 35.1zM192 304l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16zm96-16c8.8 0 16 7.2 16 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16zm128 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faShoppingBasket = faBasketShopping;\nconst faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [576, 512, [], \"f4db\", \"M380.8 416c41.5-40.7 67.2-97.3 67.2-160C448 132.3 347.7 32 224 32S0 132.3 0 256S100.3 480 224 480l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-163.2 0zM224 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm64 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faBusSimple = {\n prefix: 'fas',\n iconName: 'bus-simple',\n icon: [448, 512, [\"bus-alt\"], \"f55e\", \"M224 0C348.8 0 448 35.2 448 80l0 16 0 320c0 17.7-14.3 32-32 32l0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-192 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32L0 96 0 80C0 35.2 99.2 0 224 0zM64 128l0 128c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L96 96c-17.7 0-32 14.3-32 32zM80 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faBusAlt = faBusSimple;\nconst faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z\"]\n};\nconst faFaceSadCry = {\n prefix: 'fas',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6L160 288c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 189.8C51.5 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 94.8-51.5 177.5-128 221.8L384 288c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 205.4zM195.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm121.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM208 336l0 32c0 26.5 21.5 48 48 48s48-21.5 48-48l0-32c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nconst faSadCry = faFaceSadCry;\nconst faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [576, 512, [], \"f29e\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM213.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7l-9.4-18.9-82.2 0-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zm-.4 106.6L192 237.7l-21.1 42.2 42.2 0zM304 184c0-13.3 10.7-24 24-24l56 0c53 0 96 43 96 96s-43 96-96 96l-56 0c-13.3 0-24-10.7-24-24l0-144zm48 24l0 96 32 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-32 0z\"]\n};\nconst faPersonMilitaryToPerson = {\n prefix: 'fas',\n iconName: 'person-military-to-person',\n icon: [512, 512, [], \"e54c\", \"M71 12.5c-8.6 1-15 8.2-15 16.8c0 9.3 7.5 16.8 16.7 16.9l111.4 0c8.8-.1 15.9-7.2 15.9-16L200 16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1l-122.9 0C64.9 83.8 64 89.8 64 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256l0 32c0 17.7 14.3 32 32 32l128 0c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5l0-32c0-35.3-28.7-64-64-64l-64 0c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-35.3 0-64 28.7-64 64l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32c0-35.3-28.7-64-64-64l-64 0zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376l0 32-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0 0 32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 2.9 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9s14.1-12.4 14.1-21.9l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"]\n};\nconst faFileShield = {\n prefix: 'fas',\n iconName: 'file-shield',\n icon: [576, 512, [], \"e4f0\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 47-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8l0 187.8c68.2-33 91.5-99 95.4-149.7z\"]\n};\nconst faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L353.3 251.6C407.9 237 448 187.2 448 128C448 57.3 390.7 0 320 0C250.2 0 193.5 55.8 192 125.2L38.8 5.1zM264.3 304.3C170.5 309.4 96 387.2 96 482.3c0 16.4 13.3 29.7 29.7 29.7l388.6 0c3.9 0 7.6-.7 11-2.1l-261-205.6z\"]\n};\nconst faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [128394], \"f304\", \"M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z\"]\n};\nconst faTowerObservation = {\n prefix: 'fas',\n iconName: 'tower-observation',\n icon: [512, 512, [], \"e586\", \"M241.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9C439 137.5 427.7 144 416 144l0 80c0 17.7-14.3 32-32 32l-4.9 0 32 192 68.9 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-95.5 0c-.4 0-.8 0-1.1 0l-254.8 0c-.4 0-.8 0-1.1 0L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l68.9 0 32-192-4.9 0c-17.7 0-32-14.3-32-32l0-80c-11.7 0-23-6.5-28.6-17.7c-7.9-15.8-1.5-35 14.3-42.9l160-80zM314.5 448L256 399.2 197.5 448l117 0zM197.8 256l-4.7 28.3L256 336.8l62.9-52.5L314.2 256l-116.5 0zm-13.9 83.2l-11.2 67L218.5 368l-34.6-28.8zM293.5 368l45.8 38.1-11.2-67L293.5 368zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16l160 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-160 0z\"]\n};\nconst faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nconst faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [128246, \"signal-5\", \"signal-perfect\"], \"f012\", \"M576 0c17.7 0 32 14.3 32 32l0 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-448c0-17.7 14.3-32 32-32zM448 96c17.7 0 32 14.3 32 32l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352c0-17.7 14.3-32 32-32zM352 224l0 256c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32s32 14.3 32 32zM192 288c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32zM96 416l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faSignal5 = faSignal;\nconst faSignalPerfect = faSignal;\nconst faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [576, 512, [128653], \"f207\", \"M288 0C422.4 0 512 35.2 512 80l0 16 0 32c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32l0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-192 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32c0 0 0 0 0 0l0-32s0 0 0 0l0-16C64 35.2 153.6 0 288 0zM128 160l0 96c0 17.7 14.3 32 32 32l112 0 0-160-112 0c-17.7 0-32 14.3-32 32zM304 288l112 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-112 0 0 160zM144 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM384 80c0-8.8-7.2-16-16-16L208 64c-8.8 0-16 7.2-16 16s7.2 16 16 16l160 0c8.8 0 16-7.2 16-16z\"]\n};\nconst faHeartCircleXmark = {\n prefix: 'fas',\n iconName: 'heart-circle-xmark',\n icon: [576, 512, [], \"e501\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faHouseChimney = {\n prefix: 'fas',\n iconName: 'house-chimney',\n icon: [576, 512, [63499, \"home-lg\"], \"e3af\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185l0-121c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32l0 36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 64 0 24c0 22.1 17.9 40 40 40l24 0 32.5 0c1.4 0 2.8 0 4.2-.1c1.1 .1 2.2 .1 3.3 .1l16 0c22.1 0 40-17.9 40-40l0-16.2c.3-2.6 .5-5.3 .5-8.1l-.7-160.2 32 0z\"]\n};\nconst faHomeLg = faHouseChimney;\nconst faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM96 96l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 160c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faFaceFrown = {\n prefix: 'fas',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faFrown = faFaceFrown;\nconst faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [448, 512, [], \"f5b1\", \"M32 0C14.3 0 0 14.3 0 32L0 192l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 50.7 0 128 128L137.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7l-85.8-85.8C251.4 209.1 288 164.8 288 112C288 50.1 237.9 0 176 0L32 0zM176 160L64 160l0-96 112 0c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nconst faShop = {\n prefix: 'fas',\n iconName: 'shop',\n icon: [640, 512, [\"store-alt\"], \"f54f\", \"M36.8 192l566.3 0c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0L121.7 0c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM64 224l0 160 0 80c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-80 0-160-64 0 0 160-192 0 0-160-64 0zm448 0l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-256-64 0z\"]\n};\nconst faStoreAlt = faShop;\nconst faFloppyDisk = {\n prefix: 'fas',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-242.7c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32L64 32zm0 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L96 224c-17.7 0-32-14.3-32-32l0-64zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faSave = faFloppyDisk;\nconst faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M281 22L305.8 4.7c1.3-.9 2.7-1.8 4.1-2.4C313.1 .7 316.6 0 320 0s6.9 .7 10.1 2.2c1.4 .7 2.8 1.5 4.1 2.4L359 22C393 45.8 430.8 63.5 470.8 74.4l23 6.3c1.8 .5 3.6 1.1 5.2 2c3.2 1.7 5.9 4 8.1 6.8c3.8 4.9 5.6 11.3 4.7 17.8c-.4 2.8-1.2 5.4-2.5 7.8c-1.7 3.2-4 5.9-6.8 8.1c-4.3 3.2-9.6 5.1-15.1 4.9l-7.5 0 0 56.1 6.4 5.1 5.2 4.1c21.1 16.7 45 29.6 70.5 38.1l28.9 9.6c1.6 .5 3.2 1.2 4.6 2c3.1 1.7 5.8 4.1 7.8 6.9s3.5 6.1 4.1 9.6c.5 2.7 .6 5.5 .1 8.3s-1.4 5.4-2.7 7.8c-1.7 3.1-4.1 5.8-6.9 7.8s-6.1 3.5-9.6 4.1c-1.6 .3-3.3 .4-5 .4L544 288l0 65.9c20.5 22.8 47.4 39.2 77.4 46.7C632 403 640 412.6 640 424c0 13.3-10.7 24-24 24l-40 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-160 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-160 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-40 0c-13.3 0-24-10.7-24-24c0-11.4 8-21 18.6-23.4c30-7.6 56.9-23.9 77.4-46.7L96 288l-39.4 0c-1.7 0-3.4-.1-5-.4c-3.5-.7-6.8-2.1-9.6-4.1s-5.2-4.7-7-7.8c-1.3-2.4-2.3-5-2.7-7.8s-.4-5.6 .1-8.3c.7-3.5 2.1-6.8 4.1-9.6s4.7-5.2 7.8-6.9c1.4-.8 3-1.5 4.6-2l28.9-9.6c25.5-8.5 49.4-21.4 70.5-38.1l5.2-4.1 6.4-5.1 0-8.1 0-48-7.5 0c-5.5 .1-10.8-1.7-15.1-4.9c-2.8-2.1-5.1-4.8-6.8-8.1c-1.2-2.4-2.1-5-2.5-7.8c-.9-6.5 .9-12.8 4.7-17.8c2.1-2.8 4.8-5.1 8.1-6.8c1.6-.8 3.4-1.5 5.2-2l23-6.3C209.2 63.5 247 45.8 281 22zM416 128l-96 0-96 0 0 64 72 0 48 0 72 0 0-64zM160 288l0 64 136 0 24 0 24 0 136 0 0-64-136 0-24 0s0 0 0 0l-24 0-136 0z\"]\n};\nconst faScaleUnbalanced = {\n prefix: 'fas',\n iconName: 'scale-unbalanced',\n icon: [640, 512, [\"balance-scale-left\"], \"f515\", \"M522.1 62.4c16.8-5.6 25.8-23.7 20.2-40.5S518.6-3.9 501.9 1.6l-113 37.7C375 15.8 349.3 0 320 0c-44.2 0-80 35.8-80 80c0 3 .2 5.9 .5 8.8L117.9 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2L288 480c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-294.7c21-9.2 37.2-27 44.2-49l125.9-42zM439.6 288L512 163.8 584.4 288l-144.9 0zM512 384c62.9 0 115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L536.1 109.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L392.7 273.1c-5.7 9.8-9.3 21.1-6.7 32.1C396.8 350 449.1 384 512 384zM129.2 291.8L201.6 416 56.7 416l72.4-124.2zM3.2 433.1C14 478 66.3 512 129.2 512s115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L153.2 237.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L9.9 401.1c-5.7 9.8-9.3 21.1-6.7 32.1z\"]\n};\nconst faBalanceScaleLeft = faScaleUnbalanced;\nconst faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [\"sort-asc\"], \"f0de\", \"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l256 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nconst faSortAsc = faSortUp;\nconst faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faCommenting = faCommentDots;\nconst faPlantWilt = {\n prefix: 'fas',\n iconName: 'plant-wilt',\n icon: [512, 512, [], \"e5aa\", \"M288 120c0-30.9 25.1-56 56-56s56 25.1 56 56l0 13c-29.3 10-48 34.5-48 70.1c0 27.9 25.3 74.8 66 111.6c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1l0-13C464 53.7 410.3 0 344 0S224 53.7 224 120l0 21.8C207.3 133 188.2 128 168 128c-66.3 0-120 53.7-120 120l0 13c-29.3 10-48 34.5-48 70.1C0 359 25.3 405.9 66 442.7c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1l0-13c0-30.9 25.1-56 56-56s56 25.1 56 56l0 32 0 200c0 17.7 14.3 32 32 32s32-14.3 32-32l0-200 0-32 0-128z\"]\n};\nconst faDiamond = {\n prefix: 'fas',\n iconName: 'diamond',\n icon: [512, 512, [9830], \"f219\", \"M284.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z\"]\n};\nconst faFaceGrinSquint = {\n prefix: 'fas',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM133.5 146.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faGrinSquint = faFaceGrinSquint;\nconst faHandHoldingDollar = {\n prefix: 'fas',\n iconName: 'hand-holding-dollar',\n icon: [576, 512, [\"hand-holding-usd\"], \"f4c0\", \"M312 24l0 10.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3s0 0 0 0c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8l0 10.6c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-11.4c-9.5-2.3-18.2-5.3-25.6-7.8c-2.1-.7-4.1-1.4-6-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2L264 24c0-13.3 10.7-24 24-24s24 10.7 24 24zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 512 32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faHandHoldingUsd = faHandHoldingDollar;\nconst faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M423.1 30.6c3.6-12.7-3.7-26-16.5-29.7s-26 3.7-29.7 16.5l-4.2 14.7c-9.8-.4-19.9 .5-29.9 2.8c-12.1 2.8-23.7 5.9-34.9 9.4l-5.9-13.7c-5.2-12.2-19.3-17.8-31.5-12.6s-17.8 19.3-12.6 31.5l4.9 11.3c-22 9.4-42 20.1-60.2 31.8L196 82.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l7.8 11.6c-18 15-33.7 30.8-47.3 47.1L103 157.3c-10.4-8.3-25.5-6.6-33.7 3.7s-6.6 25.5 3.7 33.7l15 12c-2.1 3.2-4.1 6.5-6 9.7c-9.4 15.7-17 31-23.2 45.3l-9.9-3.9c-12.3-4.9-26.3 1.1-31.2 13.4s1.1 26.3 13.4 31.2l11.6 4.6c-.3 1.1-.6 2.1-.9 3.1c-3.5 12.5-5.7 23.2-7.1 31.3c-.7 4.1-1.2 7.5-1.6 10.3c-.2 1.4-.3 2.6-.4 3.6l-.1 1.4-.1 .6 0 .3 0 .1c0 0 0 .1 39.2 3.7c0 0 0 0 0 0l-39.2-3.6c-.5 5-.6 10-.4 14.9l-14.7 4.2C4.7 380.6-2.7 393.8 .9 406.6s16.9 20.1 29.7 16.5l13.8-3.9c10.6 20.7 27.6 37.8 48.5 48.5l-3.9 13.7c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5l4.2-14.7c23.8 1 46.3-5.5 65.1-17.6L215 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c9.1-14.1 15.1-30.5 17-48.3l.1-.8c.3-1.7 1-5.1 2.3-9.8l.2-.8 12.6 5.4c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-11.3-4.8c9.9-14.9 24.9-31.6 48.6-46l2.1 7.5c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7L371 259.2c6.9-2.2 14.3-4.3 22.2-6.1c12.9-3 24.7-8 35.2-14.8L439 249c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c12.2-19 18.6-41.6 17.6-65.1l14.7-4.2c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5l-13.7 3.9c-10.8-21.2-28-38-48.5-48.5l3.9-13.8zM92.1 363.3s0 0 0 0L144 368l-51.9-4.7zM112 320a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM240 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40l0 148.2c8.5-7.6 19.7-12.2 32-12.2c20.6 0 38.2 13 45 31.2c8.8-9.3 21.2-15.2 35-15.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48l0 48 0 16 0 48c0 70.7-57.3 128-128 128l-16 0-64 0-.1 0-5.2 0c-5 0-9.9-.3-14.7-1c-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7L128 40zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96zm48-16c-8.8 0-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96z\"]\n};\nconst faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32c159.1 0 288 48 288 128l0 192c0 80-128.9 128-288 128S0 432 0 352L0 160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8c-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4c0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5c47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4C56 130.1 48 150.1 48 160s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5c0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8C224.5 87 224 91.5 224 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2C330.8 81 309.8 80 288 80s-42.8 1-62.6 2.8z\"]\n};\nconst faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9c0 0 0 .1 0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"]\n};\nconst faHandsPraying = {\n prefix: 'fas',\n iconName: 'hands-praying',\n icon: [640, 512, [\"praying-hands\"], \"f684\", \"M351.2 4.8c3.2-2 6.6-3.3 10-4.1c4.7-1 9.6-.9 14.1 .1c7.7 1.8 14.8 6.5 19.4 13.6L514.6 194.2c8.8 13.1 13.4 28.6 13.4 44.4l0 73.5c0 6.9 4.4 13 10.9 15.2l79.2 26.4C631.2 358 640 370.2 640 384l0 96c0 9.9-4.6 19.3-12.5 25.4s-18.1 8.1-27.7 5.5L431 465.9c-56-14.9-95-65.7-95-123.7L336 224c0-17.7 14.3-32 32-32s32 14.3 32 32l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-84.9c0-7-1.8-13.8-5.3-19.8L340.3 48.1c-1.7-3-2.9-6.1-3.6-9.3c-1-4.7-1-9.6 .1-14.1c1.9-8 6.8-15.2 14.3-19.9zm-62.4 0c7.5 4.6 12.4 11.9 14.3 19.9c1.1 4.6 1.2 9.4 .1 14.1c-.7 3.2-1.9 6.3-3.6 9.3L213.3 199.3c-3.5 6-5.3 12.9-5.3 19.8l0 84.9c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-17.7 14.3-32 32-32s32 14.3 32 32l0 118.2c0 58-39 108.7-95 123.7l-168.7 45c-9.6 2.6-19.9 .5-27.7-5.5S0 490 0 480l0-96c0-13.8 8.8-26 21.9-30.4l79.2-26.4c6.5-2.2 10.9-8.3 10.9-15.2l0-73.5c0-15.8 4.7-31.2 13.4-44.4L245.2 14.5c4.6-7.1 11.7-11.8 19.4-13.6c4.6-1.1 9.4-1.2 14.1-.1c3.5 .8 6.9 2.1 10 4.1z\"]\n};\nconst faPrayingHands = faHandsPraying;\nconst faArrowRotateRight = {\n prefix: 'fas',\n iconName: 'arrow-rotate-right',\n icon: [512, 512, [8635, \"arrow-right-rotate\", \"arrow-rotate-forward\", \"redo\"], \"f01e\", \"M386.3 160L336 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z\"]\n};\nconst faArrowRightRotate = faArrowRotateRight;\nconst faArrowRotateForward = faArrowRotateRight;\nconst faRedo = faArrowRotateRight;\nconst faWebAwesome = {\n prefix: 'fas',\n iconName: 'web-awesome',\n icon: [640, 512, [], \"e682\", \"M372.2 52c0 20.9-12.4 39-30.2 47.2L448 192l104.4-20.9c-5.3-7.7-8.4-17.1-8.4-27.1c0-26.5 21.5-48 48-48s48 21.5 48 48c0 26-20.6 47.1-46.4 48L481 442.3c-10.3 23-33.2 37.7-58.4 37.7l-205.2 0c-25.2 0-48-14.8-58.4-37.7L46.4 192C20.6 191.1 0 170 0 144c0-26.5 21.5-48 48-48s48 21.5 48 48c0 10.1-3.1 19.4-8.4 27.1L192 192 298.1 99.1c-17.7-8.3-30-26.3-30-47.1c0-28.7 23.3-52 52-52s52 23.3 52 52z\"]\n};\nconst faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [9763], \"f780\", \"M173.2 0c-1.8 0-3.5 .7-4.8 2C138.5 32.3 120 74 120 120c0 26.2 6 50.9 16.6 73c-22 2.4-43.8 9.1-64.2 20.5C37.9 232.8 13.3 262.4 .4 296c-.7 1.7-.5 3.7 .5 5.2c2.2 3.7 7.4 4.3 10.6 1.3C64.2 254.3 158 245.1 205 324s-8.1 153.1-77.6 173.2c-4.2 1.2-6.3 5.9-4.1 9.6c1 1.6 2.6 2.7 4.5 3c36.5 5.9 75.2 .1 109.7-19.2c20.4-11.4 37.4-26.5 50.5-43.8c13.1 17.3 30.1 32.4 50.5 43.8c34.5 19.3 73.3 25.2 109.7 19.2c1.9-.3 3.5-1.4 4.5-3c2.2-3.7 .1-8.4-4.1-9.6C379.1 477.1 324 403 371 324s140.7-69.8 193.5-21.4c3.2 2.9 8.4 2.3 10.6-1.3c1-1.6 1.1-3.5 .5-5.2c-12.9-33.6-37.5-63.2-72.1-82.5c-20.4-11.4-42.2-18.1-64.2-20.5C450 170.9 456 146.2 456 120c0-46-18.5-87.7-48.4-118c-1.3-1.3-3-2-4.8-2c-5 0-8.4 5.2-6.7 9.9C421.7 80.5 385.6 176 288 176S154.3 80.5 179.9 9.9c1.7-4.7-1.6-9.9-6.7-9.9zM240 272a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM181.7 417.6c6.3-11.8 9.8-25.1 8.6-39.8c-19.5-18-34-41.4-41.2-67.8c-12.5-8.1-26.2-11.8-40-12.4c-9-.4-18.1 .6-27.1 2.7c7.8 57.1 38.7 106.8 82.9 139.4c6.8-6.7 12.6-14.1 16.8-22.1zM288 64c-28.8 0-56.3 5.9-81.2 16.5c2 8.3 5 16.2 9 23.5c6.8 12.4 16.7 23.1 30.1 30.3c13.3-4.1 27.5-6.3 42.2-6.3s28.8 2.2 42.2 6.3c13.4-7.2 23.3-17.9 30.1-30.3c4-7.3 7-15.2 9-23.5C344.3 69.9 316.8 64 288 64zM426.9 310c-7.2 26.4-21.7 49.7-41.2 67.8c-1.2 14.7 2.2 28.1 8.6 39.8c4.3 8 10 15.4 16.8 22.1c44.3-32.6 75.2-82.3 82.9-139.4c-9-2.2-18.1-3.1-27.1-2.7c-13.8 .6-27.5 4.4-40 12.4z\"]\n};\nconst faLocationCrosshairs = {\n prefix: 'fas',\n iconName: 'location-crosshairs',\n icon: [512, 512, [\"location\"], \"f601\", \"M256 0c17.7 0 32 14.3 32 32l0 34.7C368.4 80.1 431.9 143.6 445.3 224l34.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-34.7 0C431.9 368.4 368.4 431.9 288 445.3l0 34.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.7C143.6 431.9 80.1 368.4 66.7 288L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l34.7 0C80.1 143.6 143.6 80.1 224 66.7L224 32c0-17.7 14.3-32 32-32zM128 256a128 128 0 1 0 256 0 128 128 0 1 0 -256 0zm128-80a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faLocation = faLocationCrosshairs;\nconst faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [640, 512, [9891], \"f227\", \"M312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L275.8 159c-28.4-19.5-62.7-31-99.8-31C78.8 128 0 206.8 0 304s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L407 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L312 32zm88 48s0 0 0 0s0 0 0 0s0 0 0 0zM64 304a112 112 0 1 1 224 0A112 112 0 1 1 64 304zM368 480c97.2 0 176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L599 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L504 32c-9.7 0-18.5 5.8-22.2 14.8c-1.2 2.9-1.8 6-1.8 9l0 .2 0 .2c0 6.2 2.5 12.2 7 16.8l33.4 33.4L480 146.7l0 21.3c0 22.6-13.6 43.1-34.6 51.7c-.8 .3-1.7 .7-2.5 1C465.7 241.2 480 270.9 480 304c0 61.9-50.1 112-112 112c-5.4 0-10.8-.4-16-1.1c-12.9 20.4-29.1 38.3-48.1 53.1c19.8 7.8 41.4 12 64 12z\"]\n};\nconst faChildDress = {\n prefix: 'fas',\n iconName: 'child-dress',\n icon: [320, 512, [], \"e59c\", \"M224 64A64 64 0 1 0 96 64a64 64 0 1 0 128 0zM88 400l0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 16 0 0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 17.8 0c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.6 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2l28.7-37.8L55 378.9C51.6 389.3 59.3 400 70.2 400L88 400z\"]\n};\nconst faUsersBetweenLines = {\n prefix: 'fas',\n iconName: 'users-between-lines',\n icon: [640, 512, [], \"e591\", \"M0 24C0 10.7 10.7 0 24 0L616 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 48C10.7 48 0 37.3 0 24zM0 488c0-13.3 10.7-24 24-24l592 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24zM83.2 160a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 320c0-35.3 28.7-64 64-64l96 0c12.2 0 23.7 3.4 33.4 9.4c-37.2 15.1-65.6 47.2-75.8 86.6L64 352c-17.7 0-32-14.3-32-32zm461.6 32c-10.3-40.1-39.6-72.6-77.7-87.4c9.4-5.5 20.4-8.6 32.1-8.6l96 0c35.3 0 64 28.7 64 64c0 17.7-14.3 32-32 32l-82.4 0zM391.2 290.4c32.1 7.4 58.1 30.9 68.9 61.6c3.5 10 5.5 20.8 5.5 32c0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32c0-11.2 1.9-22 5.5-32c10.5-29.7 35.3-52.8 66.1-60.9c7.8-2.1 16-3.1 24.5-3.1l96 0c7.4 0 14.7 .8 21.6 2.4zm44-130.4a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM321.6 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M320 0c17.7 0 32 14.3 32 32l0 124.2c-8.5-7.6-19.7-12.2-32-12.2s-23.5 4.6-32 12.2L288 32c0-17.7 14.3-32 32-32zM444.5 195.5c-16.4-16.4-41.8-18.5-60.5-6.1l0-24.1C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4l0 7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2c-20.9-5.2-38.7-17.1-51.5-32.9c14 1.5 28.5-3 39.2-13.8l-22.6-22.6 22.6 22.6c18.7-18.7 18.7-49.1 0-67.9c-1.1-1.1-1.4-2-1.5-2.5c-.1-.8-.1-1.8 .4-2.9s1.2-1.9 1.8-2.3c.5-.3 1.3-.8 2.9-.8c26.5 0 48-21.5 48-48s-21.5-48-48-48c-1.6 0-2.4-.4-2.9-.8c-.6-.4-1.3-1.2-1.8-2.3s-.5-2.2-.4-2.9c.1-.6 .4-1.4 1.5-2.5c18.7-18.7 18.7-49.1 0-67.9zM421.8 421.8c-6.2 6.2-16.4 6.2-22.6 0C375.9 398.5 336 415 336 448c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C241.5 375.9 225 336 192 336c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C264.1 241.5 304 225 304 192c0-8.8 7.2-16 16-16s16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C398.5 264.1 415 304 448 304c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6zM183.3 491.2l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89l0-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3l0 24.1c-18.6-12.4-44-10.3-60.5 6.1c-18.7 18.7-18.7 49.1 0 67.9c1.1 1.1 1.4 2 1.5 2.5c.1 .8 .1 1.8-.4 2.9s-1.2 1.9-1.8 2.3c-.5 .3-1.3 .8-2.9 .8c-26.5 0-48 21.5-48 48s21.5 48 48 48c1.6 0 2.4 .4 2.9 .8c.6 .4 1.3 1.2 1.8 2.3s.5 2.2 .4 2.9c-.1 .6-.4 1.4-1.5 2.5c-18.7 18.7-18.7 49.1 0 67.9c10.7 10.7 25.3 15.3 39.2 13.8c-12.8 15.9-30.6 27.7-51.5 32.9zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faFaceGrinTears = {\n prefix: 'fas',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M548.6 371.4C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c3.6-8.8 6.5-18.4 8.8-27.5c4.6-18.2 7.7-37 9.3-48.2c3.9-26.5-18.8-49.2-45.2-45.4c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-26.5-3.9-49.2 18.8-45.2 45.4c1.6 11.3 4.6 30 9.3 48.2c2.3 9.1 5.2 18.8 8.8 27.5c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3zM107 254.1c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9zm454.5 87.1c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zm-90.1-9.7c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM281.6 228.8s0 0 0 0s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C190.7 188.4 184 206.1 184 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0zm160 0s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C350.7 188.4 344 206.1 344 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0c0 0 0 0 0 0z\"]\n};\nconst faGrinTears = faFaceGrinTears;\nconst faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [128222, 128379], \"f095\", \"M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z\"]\n};\nconst faCalendarXmark = {\n prefix: 'fas',\n iconName: 'calendar-xmark',\n icon: [448, 512, [\"calendar-times\"], \"f273\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zM305 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z\"]\n};\nconst faCalendarTimes = faCalendarXmark;\nconst faChildReaching = {\n prefix: 'fas',\n iconName: 'child-reaching',\n icon: [384, 512, [], \"e59d\", \"M256 64A64 64 0 1 0 128 64a64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4L112 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-258.4c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z\"]\n};\nconst faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M0 224.2C0 100.6 100.2 0 224 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8L448 320l0 64c0 35.3-28.7 64-64 64l-64 0 0 32c0 17.7-14.3 32-32 32L96 512c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM224 64c-8.8 0-16 7.2-16 16c0 33-39.9 49.5-63.2 26.2c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6C145.5 152.1 129 192 96 192c-8.8 0-16 7.2-16 16s7.2 16 16 16c33 0 49.5 39.9 26.2 63.2c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0C168.1 286.5 208 303 208 336c0 8.8 7.2 16 16 16s16-7.2 16-16c0-33 39.9-49.5 63.2-26.2c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6C302.5 263.9 319 224 352 224c8.8 0 16-7.2 16-16s-7.2-16-16-16c-33 0-49.5-39.9-26.2-63.2c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0C279.9 129.5 240 113 240 80c0-8.8-7.2-16-16-16zm-24 96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faUserGear = {\n prefix: 'fas',\n iconName: 'user-gear',\n icon: [640, 512, [\"user-cog\"], \"f4fe\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304l91.4 0c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7l0 .9c0 9.2 2.7 18.5 7.9 26.3L29.7 512C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8l0 30.6c7.9 3.4 15.4 7.7 22.3 12.8l24.9-14.3c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-25 14.4c.4 4 .7 8.1 .7 12.3s-.2 8.2-.7 12.3l25 14.4c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-24.9-14.3c-6.9 5.1-14.3 9.4-22.3 12.8l0 30.6c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8l0-30.5c-8-3.4-15.6-7.7-22.5-12.9l-24.7 14.3c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l24.8-14.3c-.4-4.1-.7-8.2-.7-12.4s.2-8.3 .7-12.4L343.8 325c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l24.8 14.3c6.9-5.1 14.5-9.4 22.5-12.9l0-30.5zm92.1 133.5a48.1 48.1 0 1 0 -96.1 0 48.1 48.1 0 1 0 96.1 0z\"]\n};\nconst faUserCog = faUserGear;\nconst faArrowUp19 = {\n prefix: 'fas',\n iconName: 'arrow-up-1-9',\n icon: [576, 512, [\"sort-numeric-up\"], \"f163\", \"M450.7 38c8.3 6 13.3 15.7 13.3 26l0 96 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-51.6-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3 192 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-301.7L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM445.7 364.9A32 32 0 1 0 418.3 307a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nconst faSortNumericUp = faArrowUp19;\nconst faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [576, 512, [128682], \"f52a\", \"M96 64c0-35.3 28.7-64 64-64L416 0c35.3 0 64 28.7 64 64l0 384 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-112 0-288 0L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0L96 64zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 112c8.8 0 16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C334.5 200.1 351 240 384 240c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C311.9 334.5 272 351 272 384c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C177.5 311.9 161 272 128 272c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C200.1 177.5 240 161 240 128c0-8.8 7.2-16 16-16zM232 256a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [9861], \"f526\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faMosquitoNet = {\n prefix: 'fas',\n iconName: 'mosquito-net',\n icon: [640, 512, [], \"e52c\", \"M168.8 462.3c-7.9-4-11.1-13.6-7.2-21.5L192 380.2l0-44.2c0-4.2 1.7-8.3 4.7-11.3L256 265.4l0-23.1L139.2 344C87.8 395.3 0 358.9 0 286.3c0-41.1 30.6-75.8 71.4-80.9l159.9-23.9-49.6-41.3c-5.1-4.2-7-11.1-4.9-17.4l13.9-41.7-29-58.1c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l32 64c1.9 3.8 2.2 8.2 .9 12.2l-12.5 37.6L256 160.5l0-22.6c0-14.9 10.1-27.3 23.8-31l0-43.3c0-4.5 3.7-8.2 8.2-8.2s8.2 3.7 8.2 8.2l0 43.3c13.7 3.6 23.8 16.1 23.8 31l0 22.6 45.4-37.8L352.8 85.1c-1.3-4-1-8.4 .9-12.2l32-64c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-29 58.1 13.9 41.7c2.1 6.2 .1 13.1-4.9 17.4l-49.6 41.3 159.9 23.9c22.5 2.8 41.8 14.6 54.7 31.4c-2.7 2.6-5.2 5.4-7.3 8.6c-8.6-12.9-23.3-21.5-40-21.5s-31.4 8.5-40 21.5c-8.6-12.9-23.3-21.5-40-21.5c-21.7 0-40 14.3-45.9 34.1c-10.7 3.2-19.8 10.1-25.9 19.2l-40.2-35 0 23.1 32.4 32.4c-.3 2-.4 4.1-.4 6.2c0 16.7 8.5 31.4 21.5 40c-4 2.6-7.5 5.9-10.6 9.5L320 310.6l0 50c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-50-32 32 0 41.4c0 2.5-.6 4.9-1.7 7.2l-32 64c-4 7.9-13.6 11.1-21.5 7.2zM512 256c8.8 0 16 7.2 16 16l0 16 48 0 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 16 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0 0 48 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0 0 48 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-16-48 0 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-16-48 0 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-16-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 0-48-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 0-48-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 16 48 0 0-16c0-8.8 7.2-16 16-16zm16 112l48 0 0-48-48 0 0 48zm0 80l48 0 0-48-48 0 0 48zM448 320l0 48 48 0 0-48-48 0zm0 80l0 48 48 0 0-48-48 0z\"]\n};\nconst faBridgeWater = {\n prefix: 'fas',\n iconName: 'bridge-water',\n icon: [576, 512, [], \"e4ce\", \"M0 96C0 78.3 14.3 64 32 64l512 0c17.7 0 32 14.3 32 32l0 35.6c0 15.7-12.7 28.4-28.4 28.4c-37.3 0-67.6 30.2-67.6 67.6l0 124.9c-12.9 0-25.8 3.9-36.8 11.7c-18 12.4-40.1 20.3-59.2 20.3c0 0 0 0 0 0l0-.5 0-128c0-53-43-96-96-96s-96 43-96 96l0 128 0 .5c-19 0-41.2-7.9-59.1-20.3c-11.1-7.8-24-11.7-36.9-11.7l0-124.9C96 190.2 65.8 160 28.4 160C12.7 160 0 147.3 0 131.6L0 96zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160 64 0 0-160zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-448zM224 512c17.7 0 32-14.3 32-32l0-160-64 0 0 160c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32L320 0zM112 80A48 48 0 1 0 16 80a48 48 0 1 0 96 0zm0 261.3l0-72.1 4.7 4.7c9 9 21.2 14.1 33.9 14.1l73.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-66.7 0-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6l0 55.7 0 .9L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 42.7L96 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-58.7c0-10.4-3.4-20.5-9.6-28.8L112 341.3z\"]\n};\nconst faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M64 128l0-32 128 0 0 128-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-128 128 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48c0-26.5-21.5-48-48-48L224 32 48 32C21.5 32 0 53.5 0 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32zM9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-32 192 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 32-192 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"]\n};\nconst faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6l0 1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416l-207.1 0 11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416 64 416zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [128395, 10002], \"f5ac\", \"M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.3 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z\"]\n};\nconst faPersonDigging = {\n prefix: 'fas',\n iconName: 'person-digging',\n icon: [576, 512, [\"digging\"], \"f85e\", \"M208 64a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2l-256 0c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7l32 0 22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-74.9-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z\"]\n};\nconst faDigging = faPersonDigging;\nconst faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M135.2 17.7L128 32 32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0-7.2-14.3C307.4 6.8 296.3 0 284.2 0L163.8 0c-12.1 0-23.2 6.8-28.6 17.7zM416 128L32 128 53.2 467c1.6 25.3 22.6 45 47.9 45l245.8 0c25.3 0 46.3-19.7 47.9-45L416 128z\"]\n};\nconst faGaugeSimple = {\n prefix: 'fas',\n iconName: 'gauge-simple',\n icon: [512, 512, [\"gauge-simple-med\", \"tachometer-average\"], \"f629\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3L280 88c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 204.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faGaugeSimpleMed = faGaugeSimple;\nconst faTachometerAverage = faGaugeSimple;\nconst faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zM208 112l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [128169], \"f2fe\", \"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1c0 44.1-35.7 79.9-79.8 80L160 128c-35.3 0-64 28.7-64 64c0 19.1 8.4 36.3 21.7 48L104 240c-39.8 0-72 32.2-72 72c0 23.2 11 43.8 28 57c-34.1 5.7-60 35.3-60 71c0 39.8 32.2 72 72 72l368 0c39.8 0 72-32.2 72-72c0-35.7-25.9-65.3-60-71c17-13.2 28-33.8 28-57c0-39.8-32.2-72-72-72l-13.7 0c13.3-11.7 21.7-28.9 21.7-48c0-35.3-28.7-64-64-64l-5.5 0c3.5-10 5.5-20.8 5.5-32c0-48.6-36.2-88.8-83.1-95.1zM192 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm64 108.3c0 2.4-.7 4.8-2.2 6.7c-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7c0-6.8 5.5-12.3 12.3-12.3l167.4 0c6.8 0 12.3 5.5 12.3 12.3z\"]\n};\nconst faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [448, 512, [8221, \"quote-right-alt\"], \"f10e\", \"M448 296c0 66.3-53.7 120-120 120l-8 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l8 0c30.9 0 56-25.1 56-56l0-8-64 0c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l64 0c35.3 0 64 28.7 64 64l0 32 0 32 0 72zm-256 0c0 66.3-53.7 120-120 120l-8 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l8 0c30.9 0 56-25.1 56-56l0-8-64 0c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l64 0c35.3 0 64 28.7 64 64l0 32 0 32 0 72z\"]\n};\nconst faQuoteRightAlt = faQuoteRight;\nconst faShirt = {\n prefix: 'fas',\n iconName: 'shirt',\n icon: [640, 512, [128085, \"t-shirt\", \"tshirt\"], \"f553\", \"M211.8 0c7.8 0 14.3 5.7 16.7 13.2C240.8 51.9 277.1 80 320 80s79.2-28.1 91.5-66.8C413.9 5.7 420.4 0 428.2 0l12.6 0c22.5 0 44.2 7.9 61.5 22.3L628.5 127.4c6.6 5.5 10.7 13.5 11.4 22.1s-2.1 17.1-7.8 23.6l-56 64c-11.4 13.1-31.2 14.6-44.6 3.5L480 197.7 480 448c0 35.3-28.7 64-64 64l-192 0c-35.3 0-64-28.7-64-64l0-250.3-51.5 42.9c-13.3 11.1-33.1 9.6-44.6-3.5l-56-64c-5.7-6.5-8.5-15-7.8-23.6s4.8-16.6 11.4-22.1L137.7 22.3C155 7.9 176.7 0 199.2 0l12.6 0z\"]\n};\nconst faTShirt = faShirt;\nconst faTshirt = faShirt;\nconst faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [576, 512, [], \"f1b3\", \"M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5l0 112.2c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7L0 413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3l0-119.1c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3l0-112.2c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2 0-89.2L392 121l0 89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4l0-100.5L256 323.2l0 95.9-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1 0-100.5L528 323.2l0 90.7c0 3.2-1.9 6-4.8 7.3z\"]\n};\nconst faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [10135, 247], \"f529\", \"M272 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 320a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 288c17.7 0 32-14.3 32-32s-14.3-32-32-32L48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l352 0z\"]\n};\nconst faTengeSign = {\n prefix: 'fas',\n iconName: 'tenge-sign',\n icon: [384, 512, [8376, \"tenge\"], \"f7d7\", \"M0 64C0 46.3 14.3 32 32 32l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM0 192c0-17.7 14.3-32 32-32l160 0 160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0 0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-224L32 224c-17.7 0-32-14.3-32-32z\"]\n};\nconst faTenge = faTengeSign;\nconst faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [127911], \"f025\", \"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"]\n};\nconst faHandsHolding = {\n prefix: 'fas',\n iconName: 'hands-holding',\n icon: [640, 512, [], \"f4c2\", \"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104l0 56 0 64L0 325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7l66.7 0c26.5 0 48-21.5 48-48l0-78.9c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3c0 0 0 0 0 0l-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3L80 224l0-80 0-40zm480 0l0 40 0 80 0 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2c0 0 0 0 0 0l-25.3 25.3c-21 21-32.8 49.5-32.8 79.2l0 78.9c0 26.5 21.5 48 48 48l66.7 0c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9L640 224l0-64 0-56c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nconst faHandsClapping = {\n prefix: 'fas',\n iconName: 'hands-clapping',\n icon: [512, 512, [], \"e1a8\", \"M336 16l0 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16zm-98.7 7.1l32 48c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-32-48c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4zM135 119c9.4-9.4 24.6-9.4 33.9 0L292.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3l0-39.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 153.6c0 57.1-30 110-78.9 139.4c-64 38.4-145.8 28.3-198.5-24.4L7 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L23 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM433.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1c48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16l0-39.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 153.6c0 57.1-30 110-78.9 139.4zM424.9 18.7c7.4 4.9 9.3 14.8 4.4 22.2l-32 48c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l32-48c4.9-7.4 14.8-9.3 22.2-4.4z\"]\n};\nconst faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M0 192C0 103.6 71.6 32 160 32l224 0c88.4 0 160 71.6 160 160l0 64L0 256l0-64zm415.9-64c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L466 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm-138.3 3.4c-1.1-2.1-3.3-3.4-5.7-3.4s-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L322 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6zM127.9 128c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L178 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm.1 160l192 0 96 0 32 0 64 0 32 0 0 32 0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48c0-17.7 14.3-32 32-32s32 14.3 32 32l0 48c0 44.2-35.8 80-80 80s-80-35.8-80-80l0-48-32 0 0 32 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64-192 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64 0-96 128 0z\"]\n};\nconst faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [8592], \"f060\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nconst faPersonCircleXmark = {\n prefix: 'fas',\n iconName: 'person-circle-xmark',\n icon: [576, 512, [], \"e543\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nconst faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [512, 512, [128207], \"f545\", \"M177.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L17.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L177.9 494.1z\"]\n};\nconst faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M288 64c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32L32 352c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M201 10.3c14.3-7.8 31.6-7.8 46 0L422.3 106c5.1 2.8 8.3 8.2 8.3 14s-3.2 11.2-8.3 14L231.7 238c-4.8 2.6-10.5 2.6-15.3 0L25.7 134c-5.1-2.8-8.3-8.2-8.3-14s3.2-11.2 8.3-14L201 10.3zM23.7 170l176 96c5.1 2.8 8.3 8.2 8.3 14l0 216c0 5.6-3 10.9-7.8 13.8s-10.9 3-15.8 .3L25 423.1C9.6 414.7 0 398.6 0 381L0 184c0-5.6 3-10.9 7.8-13.8s10.9-3 15.8-.3zm400.7 0c5-2.7 11-2.6 15.8 .3s7.8 8.1 7.8 13.8l0 197c0 17.6-9.6 33.7-25 42.1L263.7 510c-5 2.7-11 2.6-15.8-.3s-7.8-8.1-7.8-13.8l0-216c0-5.9 3.2-11.2 8.3-14l176-96z\"]\n};\nconst faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-154.8c-8.1 9.2-21.1 13.2-33.5 9.4c-16.9-5.3-26.3-23.2-21-40.1l30.9-99.1C44.9 155.3 82 128 124 128l8 0c42 0 79.1 27.3 91.6 67.4l30.9 99.1c5.3 16.9-4.1 34.8-21 40.1c-12.4 3.9-25.4-.2-33.5-9.4L200 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM320 0c13.3 0 24 10.7 24 24l0 464c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-464c0-13.3 10.7-24 24-24zM464 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM440 480l0-96-17.8 0c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5c-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1c-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1L584 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nconst faJ = {\n prefix: 'fas',\n iconName: 'j',\n icon: [320, 512, [106], \"4a\", \"M288 32c17.7 0 32 14.3 32 32l0 256c0 88.4-71.6 160-160 160S0 408.4 0 320l0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32c0 53 43 96 96 96s96-43 96-96l0-256c0-17.7 14.3-32 32-32z\"]\n};\nconst faUsersViewfinder = {\n prefix: 'fas',\n iconName: 'users-viewfinder',\n icon: [640, 512, [], \"e595\", \"M48 48l88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L32 0C14.3 0 0 14.3 0 32L0 136c0 13.3 10.7 24 24 24s24-10.7 24-24l0-88zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7l56.1 0c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4l-69.3 0zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3l-69.3 0c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6l56.1 0zm-89.4 0c-8.6-24.3-29.9-42.6-55.9-47c-3.9-.7-7.9-1-12-1l-80 0c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80-32a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM504 48l88 0 0 88c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104c0-17.7-14.3-32-32-32L504 0c-13.3 0-24 10.7-24 24s10.7 24 24 24zM48 464l0-88c0-13.3-10.7-24-24-24s-24 10.7-24 24L0 480c0 17.7 14.3 32 32 32l104 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0zm456 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0c17.7 0 32-14.3 32-32l0-104c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 88-88 0z\"]\n};\nconst faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM64 288c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-96zM300.9 397.9L256 368l0-64 44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3l0 103.4c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z\"]\n};\nconst faUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'up-right-from-square',\n icon: [512, 512, [\"external-link-alt\"], \"f35d\", \"M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-128c0-17.7-14.3-32-32-32L352 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z\"]\n};\nconst faExternalLinkAlt = faUpRightFromSquare;\nconst faTableCells = {\n prefix: 'fas',\n iconName: 'table-cells',\n icon: [512, 512, [\"th\"], \"f00a\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 64l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0zM64 224l88 0 0 64-88 0 0-64zm232 0l0 64-88 0 0-64 88 0zm64 0l88 0 0 64-88 0 0-64zM152 352l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0z\"]\n};\nconst faTh = faTableCells;\nconst faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [512, 512, [], \"f1c1\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 144-208 0c-35.3 0-64 28.7-64 64l0 144-48 0c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM176 352l32 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-16 0 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-80c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0 48 16 0zm96-80l32 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16l0-128c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-16 0 0 96 16 0zm80-112c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64 0-64z\"]\n};\nconst faBookBible = {\n prefix: 'fas',\n iconName: 'book-bible',\n icon: [448, 512, [\"bible\"], \"f647\", \"M96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96l288 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32L384 0 96 0zm0 384l256 0 0 64L96 448c-17.7 0-32-14.3-32-32s14.3-32 32-32zM208 80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 112c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-112-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faBible = faBookBible;\nconst faO = {\n prefix: 'fas',\n iconName: 'o',\n icon: [448, 512, [111], \"4f\", \"M224 96a160 160 0 1 0 0 320 160 160 0 1 0 0-320zM448 256A224 224 0 1 1 0 256a224 224 0 1 1 448 0z\"]\n};\nconst faSuitcaseMedical = {\n prefix: 'fas',\n iconName: 'suitcase-medical',\n icon: [512, 512, [\"medkit\"], \"f0fa\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40 0 32 0 352 256 0 0-352 0-32 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zM96 96L64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l32 0L96 96zM416 480l32 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-32 0 0 384zM224 208c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faMedkit = faSuitcaseMedical;\nconst faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [128373], \"f21b\", \"M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48l-59.9 0C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4l-59.9 0c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.8 3.3-8.8 6.1-15.5 6.1zm56 208l-12.4 0c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2L168 224c-22.1 0-40-17.9-40-40l0-14.4c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4l0 14.4c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z\"]\n};\nconst faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [129446], \"f700\", \"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5c23.5 0 42.6-19.1 42.6-42.6l0-21.4c0-35.3-28.7-64-64-64l-64 0c-35.3 0-64 28.7-64 64l0 21.4c0 23.5 19.1 42.6 42.6 42.6c6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2L135.1 185c-4.5-3-7.1-8-7.1-13.3l0-3.7c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24l0 3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6c-3.6 0-7.1-.2-10.6-.6l0 .6c0 35.3 28.7 64 64 64l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l160 0 0-48 0-16c0-23.7 12.9-44.4 32-55.4c9.4-5.4 20.3-8.6 32-8.6l0-16c0-26.5 21.5-48 48-48c8.8 0 16 7.2 16 16l0 32 0 16 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-99.7c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1s0 0 0 0c0 123.7-100.3 224-224 224l-1.1 0L256 480l-.6 0C132 480 32 380 32 256.6l0-.6 0-39.2c-10.1-14.6-16-32.3-16-51.4L16 144l0-1.4C6.7 139.3 0 130.5 0 120c0-13.3 10.7-24 24-24l2.8 0C44.8 58.2 83.3 32 128 32l64 0c44.7 0 83.2 26.2 101.2 64l2.8 0c13.3 0 24 10.7 24 24c0 10.5-6.7 19.3-16 22.6l0 1.4 0 21.4c0 1.4 0 2.8-.1 4.3c12-6.2 25.7-9.6 40.1-9.6l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-13.3 0-24 10.7-24 24l0 8 56.4 0c-15.2 17-24.4 39.4-24.4 64l-32 0c-42.3 0-78.2-27.4-91-65.3c-5.1 .9-10.3 1.3-15.6 1.3c-14.1 0-27.9-3.3-40.5-9.6zM96 128a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm112 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faPersonDress = {\n prefix: 'fas',\n iconName: 'person-dress',\n icon: [320, 512, [\"female\"], \"f182\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM88 384l-17.8 0c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2c20.3-33.7 56.7-54.3 96-54.3l11.6 0c39.3 0 75.7 20.6 96 54.3l53.6 89.2c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9l-33.9-56.3L265 362.9c3.5 10.4-4.3 21.1-15.2 21.1L232 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96z\"]\n};\nconst faFemale = faPersonDress;\nconst faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm20-312l0 13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9l0 13.8c0 11-9 20-20 20s-20-9-20-20l0-14.6c-10.3-2.2-20-5.5-28.2-8.4c0 0 0 0 0 0s0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c0 0 0 0 0 0c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5l0-14c0-11 9-20 20-20s20 9 20 20z\"]\n};\nconst faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [\"briefcase-clock\"], \"f64a\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40L64 96C28.7 96 0 124.7 0 160l0 96 192 0 160 0 8.2 0c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16 .7l0-32.7c0-35.3-28.7-64-64-64l-64 0 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zM320 352l-96 0c-17.7 0-32-14.3-32-32l0-32L0 288 0 416c0 35.3 28.7 64 64 64l296.2 0C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7 .7-16l-.7 0zm320 16a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM496 288c8.8 0 16 7.2 16 16l0 48 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16z\"]\n};\nconst faBriefcaseClock = faBusinessTime;\nconst faTableCellsLarge = {\n prefix: 'fas',\n iconName: 'table-cells-large',\n icon: [512, 512, [\"th-large\"], \"f009\", \"M448 96l0 128-160 0 0-128 160 0zm0 192l0 128-160 0 0-128 160 0zM224 224L64 224 64 96l160 0 0 128zM64 288l160 0 0 128L64 416l0-128zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nconst faThLarge = faTableCellsLarge;\nconst faBookTanakh = {\n prefix: 'fas',\n iconName: 'book-tanakh',\n icon: [448, 512, [\"tanakh\"], \"f827\", \"M352 0c53 0 96 43 96 96l0 320c0 53-43 96-96 96L64 512l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c-17.7 0-32-14.3-32-32L0 32C0 14.3 14.3 0 32 0L64 0 352 0zm0 384L96 384l0 64 256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zM138.7 208l13.9 24-27.7 0 13.9-24zm-13.9-24L97.1 232c-6.2 10.7 1.5 24 13.9 24l55.4 0 27.7 48c6.2 10.7 21.6 10.7 27.7 0l27.7-48 55.4 0c12.3 0 20-13.3 13.9-24l-27.7-48 27.7-48c6.2-10.7-1.5-24-13.9-24l-55.4 0L221.9 64c-6.2-10.7-21.6-10.7-27.7 0l-27.7 48L111 112c-12.3 0-20 13.3-13.9 24l27.7 48zm27.7 0l27.7-48 55.4 0 27.7 48-27.7 48-55.4 0-27.7-48zm0-48l-13.9 24-13.9-24 27.7 0zm41.6-24L208 88l13.9 24-27.7 0zm69.3 24l27.7 0-13.9 24-13.9-24zm13.9 72l13.9 24-27.7 0 13.9-24zm-55.4 48L208 280l-13.9-24 27.7 0z\"]\n};\nconst faTanakh = faBookTanakh;\nconst faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [512, 512, [\"volume-control-phone\"], \"f2a0\", \"M280 0C408.1 0 512 103.9 512 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32-72c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24zM117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24z\"]\n};\nconst faVolumeControlPhone = faPhoneVolume;\nconst faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M152.7 135.9l-10.4 57.2c6.8-.7 13.6-1.1 20.5-1.1l10.7 0c39.4 0 77.8 12.1 110.1 34.7L562.4 421.8l35.1 24.6c24.4-6 42.5-28.1 42.5-54.4c0-75.8-94.7-126.6-134.6-144.7L474 83.9C468.2 53.8 441.8 32 411.1 32l-2.7 0c-5.6 0-11.1 .7-16.5 2.2L199.2 85.5c-23.9 6.4-42 26-46.5 50.4zM0 384c0 35.3 28.7 64 64 64l480 0L265.3 252.9c-26.9-18.8-58.9-28.9-91.8-28.9l-10.7 0c-60.6 0-116 34.2-143.1 88.4L13.5 325C4.6 342.7 0 362.3 0 382.2L0 384z\"]\n};\nconst faClipboardUser = {\n prefix: 'fas',\n iconName: 'clipboard-user',\n icon: [384, 512, [], \"f7f3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM128 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 432c0-44.2 35.8-80 80-80l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L96 448c-8.8 0-16-7.2-16-16z\"]\n};\nconst faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [320, 512, [], \"f1ae\", \"M96 64a64 64 0 1 1 128 0A64 64 0 1 1 96 64zm48 320l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-192.2L59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8 240 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-32 0z\"]\n};\nconst faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [320, 512, [8356], \"f195\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4L48 192l-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 32-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l14 0c-2.2 10.5-6.1 20.6-11.7 29.9L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L88.5 416l.7-1.1c11.6-19.3 18.9-40.7 21.6-62.9L224 352c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-32 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-31.6z\"]\n};\nconst faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [128752], \"f7bf\", \"M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z\"]\n};\nconst faPlaneLock = {\n prefix: 'fas',\n iconName: 'plane-lock',\n icon: [640, 512, [], \"e558\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 84.6 101.8 58.2C418 247.6 416 259.6 416 272l0 24.6c-17.9 10.4-30.3 29.1-31.8 50.9L320 329.1l0 70.9 57.6 43.2c4 3 6.4 7.8 6.4 12.8l0 24 0 18c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14l0-42c0-5 2.4-9.8 6.4-12.8L192 400l0-70.9-171.6 49C10.2 381.1 0 373.4 0 362.8l0-65.5c0-5.7 3.1-11 8.1-13.9L192 178.3l0-84.6zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [448, 512, [127991], \"f02b\", \"M0 80L0 229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7L48 32C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z\"]\n};\nconst faCakeCandles = {\n prefix: 'fas',\n iconName: 'cake-candles',\n icon: [448, 512, [127874, \"birthday-cake\", \"cake\"], \"f1fd\", \"M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2L56 72c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6l0 2.8c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6l0 2.8c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c-35.3 0-64 28.7-64 64l0 71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4c0 0 0 0 0 0s0 0 0 0l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0l.1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9l0-71c0-35.3-28.7-64-64-64l0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48-64 0 0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48-64 0 0-48zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4L0 480c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32l0-85.4z\"]\n};\nconst faBirthdayCake = faCakeCandles;\nconst faCake = faCakeCandles;\nconst faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM0 176L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-208L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z\"]\n};\nconst faAnglesUp = {\n prefix: 'fas',\n iconName: 'angles-up',\n icon: [448, 512, [\"angle-double-up\"], \"f102\", \"M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nconst faAngleDoubleUp = faAnglesUp;\nconst faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [128206], \"f0c6\", \"M364.2 83.8c-24.4-24.4-64-24.4-88.4 0l-184 184c-42.1 42.1-42.1 110.3 0 152.4s110.3 42.1 152.4 0l152-152c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-152 152c-64 64-167.6 64-231.6 0s-64-167.6 0-231.6l184-184c46.3-46.3 121.3-46.3 167.6 0s46.3 121.3 0 167.6l-176 176c-28.6 28.6-75 28.6-103.6 0s-28.6-75 0-103.6l144-144c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-144 144c-6.7 6.7-6.7 17.7 0 24.4s17.7 6.7 24.4 0l176-176c24.4-24.4 24.4-64 0-88.4z\"]\n};\nconst faArrowRightToCity = {\n prefix: 'fas',\n iconName: 'arrow-right-to-city',\n icon: [640, 512, [], \"e4b3\", \"M288 48c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 144 40 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 24 0c26.5 0 48 21.5 48 48l0 224c0 26.5-21.5 48-48 48l-160 0-96 0c-26.5 0-48-21.5-48-48l0-416zm64 32l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM352 272l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM512 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM166.6 153.4l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 288 32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l114.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nconst faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [127895], \"f4d6\", \"M333.2 322.8s0 0 0 0l-133.9-146s0 0 0 0L146 118.6c7.8-5.1 37-22.6 78-22.6s70.2 17.4 78 22.6L245.7 180l85.6 93.4 27.4-29.8c16.3-17.7 25.3-40.9 25.3-65l0-29.5c0-19-5.6-37.5-16.1-53.3L327.8 35.6C312.9 13.4 287.9 0 261.2 0l-76 0c-25.8 0-50.1 12.5-65.1 33.5L81.9 87C70.3 103.2 64 122.8 64 142.8L64 164c0 23.2 8.4 45.6 23.6 63.1l56 64.2s0 0 0 0l83.3 95.6s0 0 0 0l91.8 105.3c10 11.5 26.8 14.3 40 6.8l54.5-31.1c17.8-10.2 21.6-34.3 7.7-49.4l-87.7-95.7zM205.2 410.6l-83.3-95.6L27.1 418.5c-13.9 15.1-10.1 39.2 7.7 49.4l55.1 31.5c13 7.4 29.3 4.9 39.4-6.1l75.9-82.6z\"]\n};\nconst faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [129729], \"f604\", \"M320 0c17.7 0 32 14.3 32 32l0 132.1c0 16.4 8.4 31.7 22.2 40.5l9.8 6.2 0-45.5C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4l0 7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2C414 480.5 384 442.1 384 398l0-73 90.5 57.6c7.5 4.7 17.3 2.5 22.1-4.9s2.5-17.3-4.9-22.1L384 287.1l0-.4-44.1-28.1c-7.3-4.6-13.9-10.1-19.9-16.1c-5.9 6-12.6 11.5-19.9 16.1L256 286.7 161.2 347l-13.5 8.6c0 0 0 0-.1 0c-7.4 4.8-9.6 14.6-4.8 22.1c4.7 7.5 14.6 9.7 22.1 4.9l91.1-58 0 73.4c0 44.1-30 82.5-72.7 93.1l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89l0-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3l0 45.5 9.8-6.2c13.8-8.8 22.2-24.1 22.2-40.5L288 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faArrowUp91 = {\n prefix: 'fas',\n iconName: 'arrow-up-9-1',\n icon: [576, 512, [\"sort-numeric-up-alt\"], \"f887\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3 192 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-301.7L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM450.7 294c8.3 6 13.3 15.7 13.3 26l0 96 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-51.6-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zm-5-145.1A32 32 0 1 0 418.3 91a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 192.4 344 159.2 344 120c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 251c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nconst faSortNumericUpAlt = faArrowUp91;\nconst faLitecoinSign = {\n prefix: 'fas',\n iconName: 'litecoin-sign',\n icon: [384, 512, [], \"e1d3\", \"M128 64c0-17.7-14.3-32-32-32S64 46.3 64 64l0 149.6L23.2 225.2c-17 4.9-26.8 22.6-22 39.6s22.6 26.8 39.6 22L64 280.1 64 448c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0 0-154.1 136.8-39.1c17-4.9 26.8-22.6 22-39.6s-22.6-26.8-39.6-22L128 195.3 128 64z\"]\n};\nconst faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M32 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM320 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-320a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 288a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm192 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM416 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nconst faCircleNodes = {\n prefix: 'fas',\n iconName: 'circle-nodes',\n icon: [512, 512, [], \"e4e2\", \"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"]\n};\nconst faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M383.5 192c.3-5.3 .5-10.6 .5-16c0-51-15.9-96-40.2-127.6C319.5 16.9 288.2 0 256 0s-63.5 16.9-87.8 48.4C143.9 80 128 125 128 176c0 5.4 .2 10.7 .5 16L240 192l0 128-32 0c-7 0-13.7 1.5-19.7 4.2L68.2 192l28.3 0c-.3-5.3-.5-10.6-.5-16c0-64 22.2-121.2 57.1-159.3C62 49.3 18.6 122.6 4.2 173.6C1.5 183.1 9 192 18.9 192l6 0L165.2 346.3c-3.3 6.5-5.2 13.9-5.2 21.7l0 96c0 26.5 21.5 48 48 48l96 0c26.5 0 48-21.5 48-48l0-96c0-7.8-1.9-15.2-5.2-21.7L487.1 192l6 0c9.9 0 17.4-8.9 14.7-18.4C493.4 122.6 450 49.3 358.9 16.7C393.8 54.8 416 112.1 416 176c0 5.4-.2 10.7-.5 16l28.3 0L323.7 324.2c-6-2.7-12.7-4.2-19.7-4.2l-32 0 0-128 111.5 0z\"]\n};\nconst faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M0 64C0 46.3 14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 96l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3L0 176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"]\n};\nconst faTruckFieldUn = {\n prefix: 'fas',\n iconName: 'truck-field-un',\n icon: [640, 512, [], \"e58e\", \"M96 32C60.7 32 32 60.7 32 96l0 32c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c0 53 43 96 96 96s96-43 96-96l128 0c0 53 43 96 96 96s96-43 96-96l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-32c0-35.3-28.7-64-64-64l-4.2 0c-.4-1.1-.9-2.1-1.3-3.2L485.7 102c-10.3-23.1-33.2-38-58.5-38l-51.8 0C364.4 44.9 343.7 32 320 32L96 32zm288 96l43.2 0 42.7 96L384 224l0-96zM112 384a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM253.3 135.1l34.7 52 0-43.2c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52 0 43.2c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM128 144l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M0 32C0 14.3 14.3 0 32 0L64 0 320 0l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 11c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1l0 11c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L64 512l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-11c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75l0-11C14.3 64 0 49.7 0 32zM96 64l0 11c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9l0-11L96 64zm0 384l192 0 0-11c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9l0 11z\"]\n};\nconst faHourglassEmpty = faHourglass;\nconst faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [512, 512, [127956], \"f6fc\", \"M256 32c12.5 0 24.1 6.4 30.8 17L503.4 394.4c5.6 8.9 8.6 19.2 8.6 29.7c0 30.9-25 55.9-55.9 55.9L55.9 480C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17zm65 192L256 120.4 176.9 246.5l18.3 24.4c6.4 8.5 19.2 8.5 25.6 0l25.6-34.1c6-8.1 15.5-12.8 25.6-12.8l49 0z\"]\n};\nconst faUserDoctor = {\n prefix: 'fas',\n iconName: 'user-doctor',\n icon: [448, 512, [\"user-md\"], \"f0f0\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-96 55.2C54 332.9 0 401.3 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7c0-81-54-149.4-128-171.1l0 50.8c27.6 7.1 48 32.2 48 62l0 40c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l0-24c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 24c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-40c0-29.8 20.4-54.9 48-62l0-57.1c-6-.6-12.1-.9-18.3-.9l-91.4 0c-6.2 0-12.3 .3-18.3 .9l0 65.4c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7l0-59.1zM144 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faUserMd = faUserDoctor;\nconst faCircleInfo = {\n prefix: 'fas',\n iconName: 'circle-info',\n icon: [512, 512, [\"info-circle\"], \"f05a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faInfoCircle = faCircleInfo;\nconst faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M0 224c0 53 43 96 96 96l44.7 0c9.5-23.5 32.5-40 59.3-40c2 0 3.9 .1 5.8 .3C217.6 265.5 235.7 256 256 256s38.4 9.5 50.2 24.3c1.9-.2 3.9-.3 5.8-.3c26.9 0 49.9 16.5 59.3 40l44.7 0c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 1 .1 2.1 .1 3.1c-.7-.8-1.4-1.6-2.1-2.3c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c.7 .7 1.5 1.4 2.3 2.1c-1-.1-2.1-.1-3.1-.1c-17.7 0-32 14.3-32 32s14.3 32 32 32c1 0 2.1-.1 3.1-.1c-.8 .7-1.6 1.3-2.3 2.1c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0c.7-.7 1.4-1.5 2.1-2.3c-.1 1-.1 2.1-.1 3.1c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1-.1-2.1-.1-3.1c.7 .8 1.3 1.6 2.1 2.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3c-.7-.7-1.5-1.4-2.3-2.1c1 .1 2.1 .1 3.1 .1c17.7 0 32-14.3 32-32s-14.3-32-32-32c-1 0-2.1 .1-3.1 .1c.8-.7 1.6-1.3 2.3-2.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-.7 .7-1.4 1.5-2.1 2.3c.1-1 .1-2.1 .1-3.1zM48 448a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm416 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [62258, \"camera-alt\"], \"f030\", \"M149.1 64.8L138.7 96 64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-74.7 0L362.9 64.8C356.4 45.2 338.1 32 317.4 32L194.6 32c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faCameraAlt = faCamera;\nconst faSquareVirus = {\n prefix: 'fas',\n iconName: 'square-virus',\n icon: [448, 512, [], \"e578\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM223.8 93.7c13.3 0 24 10.7 24 24c0 29.3 35.4 43.9 56.1 23.2c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.7 20.7-6 56.1 23.2 56.1c13.3 0 24 10.7 24 24s-10.7 24-24 24c-29.3 0-43.9 35.4-23.2 56.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.7-20.7-56.1-6-56.1 23.2c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-29.3-35.4-43.9-56.1-23.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.7-20.7 6-56.1-23.2-56.1c-13.3 0-24-10.7-24-24s10.7-24 24-24c29.3 0 43.9-35.4 23.2-56.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.7 20.7 56.1 6 56.1-23.2c0-13.3 10.7-24 24-24zM192 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm88 32a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [9732], \"f753\", \"M493.7 .9L299.4 75.6l2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309C0 421.1 90.9 512 203 512c72.4 0 139.4-38.6 175.7-101.3L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3L511.1 18.3c.6-1.5 .9-3.2 .9-4.8C512 6 506 0 498.5 0c-1.7 0-3.3 .3-4.8 .9zM192 192a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm16 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faCarOn = {\n prefix: 'fas',\n iconName: 'car-on',\n icon: [512, 512, [], \"e4dd\", \"M280 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80zM185.8 224l140.3 0c6.8 0 12.8 4.3 15.1 10.6L360.3 288l-208.6 0 19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344l0 40 0 64 0 32c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-32 256 0 0 32c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-32 0-64 0-40c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160l-140.3 0c-33.8 0-64 21.3-75.3 53.1zM128 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM39 39c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L73 39c-9.4-9.4-24.6-9.4-33.9 0zm400 0L391 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z\"]\n};\nconst faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l0 160c0 53 43 96 96 96l0 32 64 0 0-32 192 0 0 32 64 0 0-32c53 0 96-43 96-96l0-96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0-32 0c-17.7 0-32 14.3-32 32l0 41.3c0 30.2-24.5 54.7-54.7 54.7c-75.5 0-145.6-38.9-185.6-102.9l-4.3-6.9C174.2 67.6 125 37.6 70.7 32.7c-2.2-.5-4.4-.7-6.7-.7l-9 0L32 32zM640 384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 8c0 13.3-10.7 24-24 24L64 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l488 0c48.6 0 88-39.4 88-88l0-8z\"]\n};\nconst faArrowDown19 = {\n prefix: 'fas',\n iconName: 'arrow-down-1-9',\n icon: [576, 512, [\"sort-numeric-asc\", \"sort-numeric-down\"], \"f162\", \"M450.7 38c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2 0 51.6-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l48 0 48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-96c0-10.3-4.9-19.9-13.3-26zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7 192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 301.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM418.3 307a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 307zM405.1 419.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nconst faSortNumericAsc = faArrowDown19;\nconst faSortNumericDown = faArrowDown19;\nconst faHandHoldingDroplet = {\n prefix: 'fas',\n iconName: 'hand-holding-droplet',\n icon: [576, 512, [\"hand-holding-water\"], \"f4c1\", \"M275.5 6.6C278.3 2.5 283 0 288 0s9.7 2.5 12.5 6.6L366.8 103C378 119.3 384 138.6 384 158.3l0 1.7c0 53-43 96-96 96s-96-43-96-96l0-1.7c0-19.8 6-39 17.2-55.3L275.5 6.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 512 32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faHandHoldingWater = faHandHoldingDroplet;\nconst faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zM329 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L329 305z\"]\n};\nconst faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M0 96a64 64 0 1 1 128 0A64 64 0 1 1 0 96zM224 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM80 416a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM224 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM352 96a64 64 0 1 1 128 0A64 64 0 1 1 352 96zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0A64 64 0 1 1 512 96zm64 176a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM416 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nconst faPrescriptionBottleMedical = {\n prefix: 'fas',\n iconName: 'prescription-bottle-medical',\n icon: [384, 512, [\"prescription-bottle-alt\"], \"f486\", \"M0 32C0 14.3 14.3 0 32 0L352 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64L0 32zm32 96l320 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zM160 240l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faPrescriptionBottleAlt = faPrescriptionBottleMedical;\nconst faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [127963], \"f66f\", \"M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8L32 192c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9l0-.9 4.4-1.6L240.1 4.2zM64 224l64 0 0 192 40 0 0-192 64 0 0 192 48 0 0-192 64 0 0 192 40 0 0-192 64 0 0 196.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 224z\"]\n};\nconst faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [128666, 9951], \"f0d1\", \"M48 0C21.5 0 0 21.5 0 48L0 368c0 26.5 21.5 48 48 48l16 0c0 53 43 96 96 96s96-43 96-96l128 0c0 53 43 96 96 96s96-43 96-96l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64 0-32 0-18.7c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7L416 96l0-48c0-26.5-21.5-48-48-48L48 0zM416 160l50.7 0L544 237.3l0 18.7-128 0 0-96zM112 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M256 0c17.7 0 32 14.3 32 32l0 10.4c93.7 13.9 167.7 88 181.6 181.6l10.4 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-10.4 0c-13.9 93.7-88 167.7-181.6 181.6l0 10.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-10.4C130.3 455.7 56.3 381.7 42.4 288L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l10.4 0C56.3 130.3 130.3 56.3 224 42.4L224 32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6l0-20.6c0-17.7 14.3-32 32-32s32 14.3 32 32l0 20.6c58.3-12.5 104.1-58.4 116.6-116.6L384 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l20.6 0C392.1 165.7 346.3 119.9 288 107.4l0 20.6c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-20.6C165.7 119.9 119.9 165.7 107.4 224l20.6 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-20.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faPersonCane = {\n prefix: 'fas',\n iconName: 'person-cane',\n icon: [448, 512, [], \"e53c\", \"M272 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-8 187.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7l-35.9 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-244.7zM352 376c0-4.4 3.6-8 8-8s8 3.6 8 8l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-30.9-25.1-56-56-56s-56 25.1-56 56l0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8z\"]\n};\nconst faTent = {\n prefix: 'fas',\n iconName: 'tent',\n icon: [576, 512, [], \"e57d\", \"M269.4 6C280.5-2 295.5-2 306.6 6l224 160c7.4 5.3 12.2 13.5 13.2 22.5l32 288c1 9-1.9 18.1-8 24.9s-14.7 10.7-23.8 10.7l-80 0-28.2 0c-12.1 0-23.2-6.8-28.6-17.7L306.7 293.5c-1.7-3.4-5.1-5.5-8.8-5.5c-5.5 0-9.9 4.4-9.9 9.9L288 480c0 17.7-14.3 32-32 32l-16 0L32 512c-9.1 0-17.8-3.9-23.8-10.7s-9-15.8-8-24.9l32-288c1-9 5.8-17.2 13.2-22.5L269.4 6z\"]\n};\nconst faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M151.2 69.7l55.9 167.7-11 33.1c-2.7 8.2-4.1 16.7-4.1 25.3L192 464c0 14.5 3.9 28.2 10.7 39.9C195 509 185.9 512 176 512L48 512c-26.5 0-48-21.5-48-48L0 270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6L64 128l0-73.7L64 48C64 21.5 85.5 0 112 0l4.5 0c.2 0 .4 0 .6 0c.4 0 .8 0 1.2 0c18.8 0 34.1 9.7 44.1 18.8C171.6 27.2 190.8 40 224 40s52.4-12.8 61.7-21.2C295.7 9.7 311 0 329.7 0c.4 0 .8 0 1.2 0c.2 0 .4 0 .6 0L336 0c26.5 0 48 21.5 48 48l0 6.3 0 73.7 0 17.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6L448 464c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-168.2c0-5.2 .8-10.3 2.5-15.2L296.8 69.7C279.4 79.7 255.4 88 224 88s-55.4-8.3-72.8-18.3zM96 456a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305l15.5 15.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288l15.5-15.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280l0 8 0 32c0 8.8 7.2 16 16 16l32 0 8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nconst faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [448, 512, [], \"f560\", \"M342.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 54.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z\"]\n};\nconst faArrowDownAZ = {\n prefix: 'fas',\n iconName: 'arrow-down-a-z',\n icon: [576, 512, [\"sort-alpha-asc\", \"sort-alpha-down\"], \"f15d\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7 128 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32l128 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416l50.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352 352 352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224l-88.4 0-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176l40.4 0L416 135.6 395.8 176z\"]\n};\nconst faSortAlphaAsc = faArrowDownAZ;\nconst faSortAlphaDown = faArrowDownAZ;\nconst faMoneyBillWheat = {\n prefix: 'fas',\n iconName: 'money-bill-wheat',\n icon: [512, 512, [], \"e52a\", \"M176 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zM56 16l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L56 64C42.7 64 32 53.3 32 40s10.7-24 24-24zM24 88l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 136c-13.3 0-24-10.7-24-24S10.7 88 24 88zm8 96c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zM272 16c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80zM400 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 128c8.8 0 16 7.2 16 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48l416 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 304zM48 416l0 48 48 0c0-26.5-21.5-48-48-48zM96 304l-48 0 0 48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48l48 0 0-48zM416 304c0 26.5 21.5 48 48 48l0-48-48 0zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [127850], \"f563\", \"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faArrowRotateLeft = {\n prefix: 'fas',\n iconName: 'arrow-rotate-left',\n icon: [512, 512, [8634, \"arrow-left-rotate\", \"arrow-rotate-back\", \"arrow-rotate-backward\", \"undo\"], \"f0e2\", \"M125.7 160l50.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L48 224c-17.7 0-32-14.3-32-32L16 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z\"]\n};\nconst faArrowLeftRotate = faArrowRotateLeft;\nconst faArrowRotateBack = faArrowRotateLeft;\nconst faArrowRotateBackward = faArrowRotateLeft;\nconst faUndo = faArrowRotateLeft;\nconst faHardDrive = {\n prefix: 'fas',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 184.4c-17-15.2-39.4-24.4-64-24.4L64 256c-24.6 0-47 9.2-64 24.4L0 96zM64 288l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64zM320 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faHdd = faHardDrive;\nconst faFaceGrinSquintTears = {\n prefix: 'fas',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-6.8 6.8-21.4 12.4-37.4 16.7c-16.3 4.4-34.1 7.5-46.3 9.3c-1.6 .2-3.1 .5-4.6 .6c-4.9 .8-9.1-2.8-9.5-7.4c-.1-.7 0-1.4 .1-2.1c1.6-11.2 4.6-29.6 9-47c.3-1.3 .7-2.6 1-3.9c4.3-15.9 9.8-30.5 16.7-37.4zm-44.7 19c-1.5 4.8-2.9 9.6-4.1 14.3c-4.8 18.9-8 38.5-9.7 50.3c-4 26.8 18.9 49.7 45.7 45.8c11.9-1.6 31.5-4.8 50.4-9.7c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c4.8-18.9 8-38.5 9.7-50.3c4-26.8-18.9-49.7-45.7-45.8c-11.9 1.6-31.5 4.8-50.4 9.7c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75C158.2-8.3 284.5-22.2 382.2 33.2zM51.5 410.1c18.5-5 38.8-8.3 50.9-10c.4-.1 .7-.1 1-.1c5.1-.2 9.2 4.3 8.4 9.6c-1.7 12.1-5 32.4-10 50.9C97.6 476.4 92 491 85.2 497.8C66 517 34.5 516.6 14.9 497.1s-20-51-.7-70.3c6.8-6.8 21.4-12.4 37.4-16.7zM416.9 209c-4.7-11.9-20.8-11-26.8 .3c-19 35.5-45 70.8-77.5 103.3S244.8 371.1 209.3 390c-11.3 6-12.2 22.1-.3 26.8c57.6 22.9 125.8 11 172.3-35.5s58.4-114.8 35.5-172.3zM87.1 285.1c2 2 4.6 3.2 7.3 3.4l56.1 5.1 5.1 56.1c.3 2.8 1.5 5.4 3.4 7.3c6.3 6.3 17.2 3.6 19.8-4.9l29.7-97.4c3.5-11.6-7.3-22.5-19-19L92 265.3c-8.6 2.6-11.3 13.4-4.9 19.8zM265.3 92l-29.7 97.4c-3.5 11.6 7.3 22.5 19 19l97.4-29.7c8.6-2.6 11.3-13.4 4.9-19.8c-2-2-4.6-3.2-7.3-3.4l-56.1-5.1-5.1-56.1c-.3-2.8-1.5-5.4-3.4-7.3c-6.3-6.3-17.2-3.6-19.8 4.9z\"]\n};\nconst faGrinSquintTears = faFaceGrinSquintTears;\nconst faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M96 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 160 0 64 0 160c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64-32 0c-17.7 0-32-14.3-32-32l0-64c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l32 0 0-64zm448 0l0 64 32 0c17.7 0 32 14.3 32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 64c0 17.7-14.3 32-32 32l-32 0 0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-160 0-64 0-160c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32zM416 224l0 64-192 0 0-64 192 0z\"]\n};\nconst faRectangleList = {\n prefix: 'fas',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M0 96C0 60.7 28.7 32 64 32l448 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24l224 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-224 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l224 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-224 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l224 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-224 0z\"]\n};\nconst faListAlt = faRectangleList;\nconst faTarpDroplet = {\n prefix: 'fas',\n iconName: 'tarp-droplet',\n icon: [576, 512, [], \"e57c\", \"M288 160c-35.3 0-64-26.9-64-60c0-24 33.7-70.1 52.2-93.5c6.1-7.7 17.5-7.7 23.6 0C318.3 29.9 352 76 352 100c0 33.1-28.7 60-64 60zM64 128l133.5 0c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64L512 128c35.3 0 64 28.7 64 64l0 160-128 0c-17.7 0-32 14.3-32 32l0 128L64 512c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64zM448 512l0-128 128 0L448 512zM96 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faHouseMedicalCircleCheck = {\n prefix: 'fas',\n iconName: 'house-medical-circle-check',\n icon: [640, 512, [], \"e511\", \"M320 368c0 59.5 29.5 112.1 74.8 144l-266.7 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64L320 256l0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zm32 0a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faPersonSkiingNordic = {\n prefix: 'fas',\n iconName: 'person-skiing-nordic',\n icon: [576, 512, [\"skiing-nordic\"], \"f7ca\", \"M336 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM227.2 160c1.9 0 3.8 .1 5.6 .3L201.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9L291.3 464l-88.5 0 41.1-88.1-32.4-20.3c-7.8-4.9-14.7-10.7-20.6-17.3L132.2 464l-32.4 0 54.2-257.6c4.6-1.5 9-4.1 12.7-7.8l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5zM121.4 198.6c.4 .4 .8 .8 1.3 1.2L67 464l-43 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l135.3 0c.5 0 .9 0 1.4 0l158.6 0c.5 0 1 0 1.4 0L504 512c39.8 0 72-32.2 72-72l0-8c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 8c0 13.3-10.7 24-24 24l-69.4 0 27.6-179.3c10.5-5.2 17.8-16.1 17.8-28.7c0-17.7-14.3-32-32-32l-21.3 0c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c-12.5 12.5-12.5 32.8 0 45.3zm308 89.4L402.3 464l-44.4 0 21.6-75.6c5.9-20.6-2.6-42.6-20.7-53.9L302 299l30.9-82.4 5.1 12.3C353 264.7 387.9 288 426.7 288l2.7 0z\"]\n};\nconst faSkiingNordic = faPersonSkiingNordic;\nconst faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M96 32l0 32L48 64C21.5 64 0 85.5 0 112l0 48 448 0 0-48c0-26.5-21.5-48-48-48l-48 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L160 64l0-32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192L0 192 0 464c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-272zM224 248c13.3 0 24 10.7 24 24l0 56 56 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0 0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56-56 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l56 0 0-56c0-13.3 10.7-24 24-24z\"]\n};\nconst faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [128748], \"f5af\", \"M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0l40.1 0c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14.1-9.3-22.5zM32 448l576 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32zm96-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faCircleLeft = {\n prefix: 'fas',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM116.7 244.7l112-112c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8l0 64 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 64c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-112-112c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nconst faArrowAltCircleLeft = faCircleLeft;\nconst faTrainSubway = {\n prefix: 'fas',\n iconName: 'train-subway',\n icon: [448, 512, [\"subway\"], \"f239\", \"M96 0C43 0 0 43 0 96L0 352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512l39.7 0c8.5 0 16.6-3.4 22.6-9.4L160 448l128 0 54.6 54.6c6 6 14.1 9.4 22.6 9.4l39.7 0c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9l0-256c0-53-43-96-96-96L96 0zM64 128c0-17.7 14.3-32 32-32l80 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-80 0c-17.7 0-32-14.3-32-32l0-96zM272 96l80 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-80 0c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zM64 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm288-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSubway = faTrainSubway;\nconst faChartGantt = {\n prefix: 'fas',\n iconName: 'chart-gantt',\n icon: [512, 512, [], \"e0e4\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32zm96 64l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160 96l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faIndianRupeeSign = {\n prefix: 'fas',\n iconName: 'indian-rupee-sign',\n icon: [320, 512, [\"indian-rupee\", \"inr\"], \"e1bc\", \"M0 64C0 46.3 14.3 32 32 32l64 0 16 0 176 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-56.2 0c9.6 14.4 16.7 30.6 20.7 48l35.6 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-35.6 0c-13.2 58.3-61.9 103.2-122.2 110.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256l80 0c32.8 0 61-19.7 73.3-48L32 208c-17.7 0-32-14.3-32-32s14.3-32 32-32l153.3 0C173 115.7 144.8 96 112 96L96 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst faIndianRupee = faIndianRupeeSign;\nconst faInr = faIndianRupeeSign;\nconst faCropSimple = {\n prefix: 'fas',\n iconName: 'crop-simple',\n icon: [512, 512, [\"crop-alt\"], \"f565\", \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32l0 32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l32 0 0 256c0 35.3 28.7 64 64 64l224 0 0-64-224 0 0-352zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-256c0-35.3-28.7-64-64-64L160 64l0 64 224 0 0 352z\"]\n};\nconst faCropAlt = faCropSimple;\nconst faMoneyBill1 = {\n prefix: 'fas',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm64 320l-64 0 0-64c35.3 0 64 28.7 64 64zM64 192l0-64 64 0c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64l0 64-64 0zm64-192c-35.3 0-64-28.7-64-64l64 0 0 64zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm76-48c0 9.7 6.9 17.7 16 19.6l0 48.4-4 0c-11 0-20 9-20 20s9 20 20 20l24 0 24 0c11 0 20-9 20-20s-9-20-20-20l-4 0 0-68c0-11-9-20-20-20l-16 0c-11 0-20 9-20 20z\"]\n};\nconst faMoneyBillAlt = faMoneyBill1;\nconst faLeftLong = {\n prefix: 'fas',\n iconName: 'left-long',\n icon: [512, 512, [\"long-arrow-alt-left\"], \"f30a\", \"M177.5 414c-8.8 3.8-19 2-26-4.6l-144-136C2.7 268.9 0 262.6 0 256s2.7-12.9 7.5-17.4l144-136c7-6.6 17.2-8.4 26-4.6s14.5 12.5 14.5 22l0 72 288 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-288 0 0 72c0 9.6-5.7 18.2-14.5 22z\"]\n};\nconst faLongArrowAltLeft = faLeftLong;\nconst faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [129516], \"f471\", \"M416 0c17.7 0 32 14.3 32 32c0 59.8-30.3 107.5-69.4 146.6c-28 28-62.5 53.5-97.3 77.4l-2.5 1.7c-11.9 8.1-23.8 16.1-35.5 23.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0l-1.6 1c-6 4-11.9 7.9-17.8 11.9c-20.9 14-40.8 27.7-59.3 41.5l118.5 0c-9.8-7.4-20.1-14.7-30.7-22.1l7-4.7 3-2c15.1-10.1 30.9-20.6 46.7-31.6c25 18.1 48.9 37.3 69.4 57.7C417.7 372.5 448 420.2 448 480c0 17.7-14.3 32-32 32s-32-14.3-32-32L64 480c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-59.8 30.3-107.5 69.4-146.6c28-28 62.5-53.5 97.3-77.4c-34.8-23.9-69.3-49.3-97.3-77.4C30.3 139.5 0 91.8 0 32C0 14.3 14.3 0 32 0S64 14.3 64 32l320 0c0-17.7 14.3-32 32-32zM338.6 384l-229.2 0c-10.1 10.6-18.6 21.3-25.5 32l280.2 0c-6.8-10.7-15.3-21.4-25.5-32zM109.4 128l229.2 0c10.1-10.7 18.6-21.3 25.5-32L83.9 96c6.8 10.7 15.3 21.3 25.5 32zm55.4 48c18.4 13.8 38.4 27.5 59.3 41.5c20.9-14 40.8-27.7 59.3-41.5l-118.5 0z\"]\n};\nconst faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-154.3-121c-2-30.1 20.8-60.1 56-60.1l11.5 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-11.5 0c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C412.3 118.4 352 93.4 352 43.5L352 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11.5c0 49.9-60.3 74.9-95.6 39.6L184.2 75c-12.5-12.5-32.8-12.5-45.3 0c-1.6 1.6-3.1 3.4-4.3 5.3L38.8 5.1zm225.8 177c6.9-3.9 14.9-6.1 23.4-6.1c26.5 0 48 21.5 48 48c0 4.4-.6 8.7-1.7 12.7l-69.7-54.6zM402 412.7L144.7 210c-9.5 8.5-22.2 14-37.2 14L96 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l11.5 0c49.9 0 74.9 60.3 39.6 95.6l-8.2 8.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6l0 11.5c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11.5c0-31.2 23.6-52.7 50-55.7z\"]\n};\nconst faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [8211, 8722, 10134, \"subtract\"], \"f068\", \"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faSubtract = faMinus;\nconst faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 16L96 32c-8.8 0-16 7.2-16 16s7.2 16 16 16l16 0 0 32L60.2 96C49.1 96 40 105.1 40 116.2c0 2.5 .5 4.9 1.3 7.3L73.8 208 72 208c-13.3 0-24 10.7-24 24s10.7 24 24 24l4 0L60 384l136 0L180 256l4 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-1.8 0 32.5-84.5c.9-2.3 1.3-4.8 1.3-7.3c0-11.2-9.1-20.2-20.2-20.2L144 96l0-32 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16zM48 416L4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24l208 0c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L208 416 48 416zm288 0l-43.2 57.6c-3.1 4.2-4.8 9.2-4.8 14.4c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L464 416l-128 0zM304 208l0 51.9c0 7.8 2.8 15.3 8 21.1L339.2 312 337 384l125.5 0-3.3-72 28.3-30.8c5.4-5.9 8.5-13.6 8.5-21.7l0-51.5c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 16-24 0 0-16c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 16-24 0 0-16c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16zm80 96c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32-32 0 0-32z\"]\n};\nconst faArrowLeftLong = {\n prefix: 'fas',\n iconName: 'arrow-left-long',\n icon: [512, 512, [\"long-arrow-left\"], \"f177\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128z\"]\n};\nconst faLongArrowLeft = faArrowLeftLong;\nconst faPlugCircleCheck = {\n prefix: 'fas',\n iconName: 'plug-circle-check',\n icon: [576, 512, [], \"e55c\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64l0 48c0 17.7 14.3 32 32 32l1.8 0 11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5l38.7 0c16.3 0 30-12.3 31.8-28.5L318.2 304l1.8 0c17.7 0 32-14.3 32-32l0-48c0-35.3-28.7-64-64-64l-64 0zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\"]\n};\nconst faFrancSign = {\n prefix: 'fas',\n iconName: 'franc-sign',\n icon: [320, 512, [], \"e18f\", \"M80 32C62.3 32 48 46.3 48 64l0 160 0 96-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 0-64 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-96 176 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z\"]\n};\nconst faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [320, 512, [], \"f026\", \"M320 64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L131.8 160 64 160c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l67.8 0L266.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S320 460.6 320 448l0-384z\"]\n};\nconst faHandsAslInterpreting = {\n prefix: 'fas',\n iconName: 'hands-asl-interpreting',\n icon: [640, 512, [\"american-sign-language-interpreting\", \"asl-interpreting\", \"hands-american-sign-language-interpreting\"], \"f2a3\", \"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7L0 256c0 70.7 57.3 128 128 128l72 0 8 0 0-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2l0-9.3c0-70.7-57.3-128-128-128l-72 0-8 0 0 .3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"]\n};\nconst faAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nconst faAslInterpreting = faHandsAslInterpreting;\nconst faHandsAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nconst faGear = {\n prefix: 'fas',\n iconName: 'gear',\n icon: [512, 512, [9881, \"cog\"], \"f013\", \"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nconst faCog = faGear;\nconst faDropletSlash = {\n prefix: 'fas',\n iconName: 'droplet-slash',\n icon: [640, 512, [\"tint-slash\"], \"f5c7\", \"M320 512c53.2 0 101.4-21.6 136.1-56.6l-298.3-235C140 257.1 128 292.3 128 320c0 106 86 192 192 192zM505.2 370.7c4.4-16.2 6.8-33.1 6.8-50.7c0-91.2-130.2-262.3-166.6-308.3C339.4 4.2 330.5 0 320.9 0l-1.8 0c-9.6 0-18.5 4.2-24.5 11.7C277.8 33 240.7 81.3 205.8 136L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L505.2 370.7zM224 336c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faTintSlash = faDropletSlash;\nconst faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [128332], \"f678\", \"M400 0c5 0 9.8 2.4 12.8 6.4c34.7 46.3 78.1 74.9 133.5 111.5c0 0 0 0 0 0s0 0 0 0c5.2 3.4 10.5 7 16 10.6c28.9 19.2 45.7 51.7 45.7 86.1c0 28.6-11.3 54.5-29.8 73.4l-356.4 0c-18.4-19-29.8-44.9-29.8-73.4c0-34.4 16.7-66.9 45.7-86.1c5.4-3.6 10.8-7.1 16-10.6c0 0 0 0 0 0s0 0 0 0C309.1 81.3 352.5 52.7 387.2 6.4c3-4 7.8-6.4 12.8-6.4zM288 512l0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-48 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l416 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-48 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-64 0 0-58c0-19-8.4-37-23-49.2L400 384l-25 20.8C360.4 417 352 435 352 454l0 58-64 0zM70.4 5.2c5.7-4.3 13.5-4.3 19.2 0l16 12C139.8 42.9 160 83.2 160 126l0 2L0 128l0-2C0 83.2 20.2 42.9 54.4 17.2l16-12zM0 160l160 0 0 136.6c-19.1 11.1-32 31.7-32 55.4l0 128c0 9.6 2.1 18.6 5.8 26.8c-6.6 3.4-14 5.2-21.8 5.2l-64 0c-26.5 0-48-21.5-48-48L0 176l0-16z\"]\n};\nconst faMosquito = {\n prefix: 'fas',\n iconName: 'mosquito',\n icon: [640, 512, [], \"e52b\", \"M463.7 505.9c9.8-8.9 10.7-24.3 2.1-34.3l-42.1-49 0-54.7c0-5.5-1.8-10.8-5.1-15.1L352 266.3l0-.3L485.4 387.8C542.4 447.6 640 405.2 640 320.6c0-47.9-34-88.3-79.4-94.2l-153-23.9 40.8-40.9c7.8-7.8 9.4-20.1 3.9-29.8L428.5 90.1l38.2-50.9c8-10.6 6.1-25.9-4.3-34.1s-25.2-6.3-33.2 4.4l-48 63.9c-5.9 7.9-6.6 18.6-1.7 27.2L402.2 140 352 190.3l0-38.2c0-14.9-10.2-27.4-24-31l0-57.2c0-4.4-3.6-8-8-8s-8 3.6-8 8l0 57.2c-13.8 3.6-24 16.1-24 31l0 38.1L237.8 140l22.6-39.5c4.9-8.6 4.2-19.3-1.7-27.2l-48-63.9c-8-10.6-22.8-12.6-33.2-4.4s-12.2 23.5-4.3 34.1l38.2 50.9-23.9 41.7c-5.5 9.7-3.9 22 3.9 29.8l40.8 40.9-153 23.9C34 232.3 0 272.7 0 320.6c0 84.6 97.6 127 154.6 67.1L288 266l0 .3-66.5 86.4c-3.3 4.3-5.1 9.6-5.1 15.1l0 54.7-42.1 49c-8.6 10.1-7.7 25.5 2.1 34.3s24.7 7.9 33.4-2.1l48-55.9c3.8-4.4 5.9-10.2 5.9-16.1l0-55.4L288 344.7l0 63.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-63.1 24.3 31.6 0 55.4c0 5.9 2.1 11.7 5.9 16.1l48 55.9c8.6 10.1 23.6 11 33.4 2.1z\"]\n};\nconst faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [512, 512, [10017], \"f69a\", \"M404.2 309.5L383.1 344l42.3 0-21.1-34.5zM371.4 256l-54-88-122.8 0-54 88 54 88 122.8 0 54-88zm65.7 0l53.4 87c3.6 5.9 5.5 12.7 5.5 19.6c0 20.7-16.8 37.4-37.4 37.4l-109.8 0-56.2 91.5C284.8 504.3 270.9 512 256 512s-28.8-7.7-36.6-20.5L163.3 400 53.4 400C32.8 400 16 383.2 16 362.6c0-6.9 1.9-13.7 5.5-19.6l53.4-87L21.5 169c-3.6-5.9-5.5-12.7-5.5-19.6C16 128.8 32.8 112 53.4 112l109.8 0 56.2-91.5C227.2 7.7 241.1 0 256 0s28.8 7.7 36.6 20.5L348.7 112l109.8 0c20.7 0 37.4 16.8 37.4 37.4c0 6.9-1.9 13.7-5.5 19.6l-53.4 87zm-54-88l21.1 34.5L425.4 168l-42.3 0zM283 112L256 68l-27 44 54 0zM128.9 168l-42.3 0 21.1 34.5L128.9 168zM107.8 309.5L86.6 344l42.3 0-21.1-34.5zM229 400l27 44 27-44-54 0z\"]\n};\nconst faPersonMilitaryRifle = {\n prefix: 'fas',\n iconName: 'person-military-rifle',\n icon: [512, 512, [], \"e54b\", \"M160 39c0-13 10-23.8 22.9-24.9L334.7 1.4C344 .7 352 8 352 17.4L352 48c0 8.8-7.2 16-16 16L185 64c-13.8 0-25-11.2-25-25zm17.6 57l156.8 0c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L352 369.7 352 480c0 1.3-.1 2.5-.2 3.8L177.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9l50.4 0c15.9 0 31.3 2.8 45.8 7.9L421.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l13.9 8 13.9 8c7.7 4.4 10.3 14.2 5.9 21.9L416 173.9l1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L392.6 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM320 512l-128 0c-17.7 0-32-14.3-32-32l0-110.3-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8l76.1-128.8c9.4-15.8 21.7-29.3 36-40L331.1 510c-3.5 1.3-7.2 2-11.1 2zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faCartShopping = {\n prefix: 'fas',\n iconName: 'cart-shopping',\n icon: [576, 512, [128722, \"shopping-cart\"], \"f07a\", \"M0 24C0 10.7 10.7 0 24 0L69.5 0c22 0 41.5 12.8 50.6 32l411 0c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3l-288.5 0 5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5L488 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-288.3 0c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5L24 48C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faShoppingCart = faCartShopping;\nconst faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [512, 512, [], \"f493\", \"M0 64C0 46.3 14.3 32 32 32l56 0 48 0 56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 304c0 44.2-35.8 80-80 80s-80-35.8-80-80L32 96C14.3 96 0 81.7 0 64zM136 96L88 96l0 160 48 0 0-160zM288 64c0-17.7 14.3-32 32-32l56 0 48 0 56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 304c0 44.2-35.8 80-80 80s-80-35.8-80-80l0-304c-17.7 0-32-14.3-32-32zM424 96l-48 0 0 160 48 0 0-160z\"]\n};\nconst faPlugCirclePlus = {\n prefix: 'fas',\n iconName: 'plug-circle-plus',\n icon: [576, 512, [], \"e55f\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208l0 48 48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M224 109.3l0 108.3L183.3 242c-14.5 8.7-23.3 24.3-23.3 41.2L160 512l96 0 0-96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 96 96 0 0-228.8c0-16.9-8.8-32.5-23.3-41.2L416 217.6l0-108.3c0-8.5-3.4-16.6-9.4-22.6L331.3 11.3c-6.2-6.2-16.4-6.2-22.6 0L233.4 86.6c-6 6-9.4 14.1-9.4 22.6zM24.9 330.3C9.5 338.8 0 354.9 0 372.4L0 464c0 26.5 21.5 48 48 48l80 0 0-238.4L24.9 330.3zM592 512c26.5 0 48-21.5 48-48l0-91.6c0-17.5-9.5-33.6-24.9-42.1L512 273.6 512 512l80 0z\"]\n};\nconst faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z\"]\n};\nconst faArrowTurnUp = {\n prefix: 'fas',\n iconName: 'arrow-turn-up',\n icon: [384, 512, [\"level-up\"], \"f148\", \"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"]\n};\nconst faLevelUp = faArrowTurnUp;\nconst faU = {\n prefix: 'fas',\n iconName: 'u',\n icon: [384, 512, [117], \"55\", \"M32 32c17.7 0 32 14.3 32 32l0 224c0 70.7 57.3 128 128 128s128-57.3 128-128l0-224c0-17.7 14.3-32 32-32s32 14.3 32 32l0 224c0 106-86 192-192 192S0 394 0 288L0 64C0 46.3 14.3 32 32 32z\"]\n};\nconst faSquareRootVariable = {\n prefix: 'fas',\n iconName: 'square-root-variable',\n icon: [576, 512, [\"square-root-alt\"], \"f698\", \"M282.6 78.1c8-27.3 33-46.1 61.4-46.1l200 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L344 96 238.7 457c-3.6 12.3-14.1 21.2-26.8 22.8s-25.1-4.6-31.5-15.6L77.6 288 32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l45.6 0c22.8 0 43.8 12.1 55.3 31.8l65.2 111.8L282.6 78.1zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0L480 274.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 320l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 365.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 320l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nconst faSquareRootAlt = faSquareRootVariable;\nconst faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nconst faClockFour = faClock;\nconst faBackwardStep = {\n prefix: 'fas',\n iconName: 'backward-step',\n icon: [320, 512, [\"step-backward\"], \"f048\", \"M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29l0-320c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241 64 96c0-17.7-14.3-32-32-32S0 78.3 0 96L0 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-145 11.5 9.6 192 160z\"]\n};\nconst faStepBackward = faBackwardStep;\nconst faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 64-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 224 0 224 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-64 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0-224 0L96 320l-64 0zm96 64l160 0 0 64-160 0 0-64zm224 0l160 0 0 64-160 0 0-64z\"]\n};\nconst faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M192 96l0 12L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l96-12 31-3.9 1-.1 1 .1 31 3.9 96 12c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 12 0-12c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 256c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l100.1 0c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48l36.1 0c17.7 0 32 14.3 32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32c0-88.4-71.6-160-160-160l-32 0-22.6-22.6c-6-6-14.1-9.4-22.6-9.4L256 224l0-43.8-32-4-32 4 0 43.8-18.7 0c-8.5 0-16.6 3.4-22.6 9.4L128 256l-96 0z\"]\n};\nconst faBaseballBatBall = {\n prefix: 'fas',\n iconName: 'baseball-bat-ball',\n icon: [512, 512, [], \"f432\", \"M424 0c-12.4 0-24.2 4.9-33 13.7L233.5 171.2c-10.5 10.5-19.8 22.1-27.7 34.6L132.7 321.6c-7.3 11.5-15.8 22.2-25.5 31.9L69.9 390.7l51.3 51.3 37.3-37.3c9.6-9.6 20.3-18.2 31.9-25.5l115.8-73.1c12.5-7.9 24.1-17.2 34.6-27.7L498.3 121c8.7-8.7 13.7-20.6 13.7-33s-4.9-24.2-13.7-33L457 13.7C448.2 4.9 436.4 0 424 0zm88 432a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM15 399c-9.4 9.4-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L49 399c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nconst faS = {\n prefix: 'fas',\n iconName: 's',\n icon: [320, 512, [115], \"53\", \"M99.1 105.4C79 114 68.2 127.2 65.2 144.8c-2.4 14.1-.7 23.2 2 29.4c2.8 6.3 7.9 12.4 16.7 18.6c19.2 13.4 48.3 22.1 84.9 32.5c1 .3 1.9 .6 2.9 .8c32.7 9.3 72 20.6 100.9 40.7c15.7 10.9 29.9 25.5 38.6 45.1c8.8 19.8 10.8 42 6.6 66.3c-7.3 42.5-35.3 71.7-71.8 87.3c-35.4 15.2-79.1 17.9-123.7 10.9l-.2 0s0 0 0 0c-24-3.9-62.7-17.1-87.6-25.6c-4.8-1.7-9.2-3.1-12.8-4.3C5.1 440.8-3.9 422.7 1.6 405.9s23.7-25.8 40.5-20.3c4.9 1.6 10.2 3.4 15.9 5.4c25.4 8.6 56.4 19.2 74.4 22.1c36.8 5.7 67.5 2.5 88.5-6.5c20.1-8.6 30.8-21.8 33.9-39.4c2.4-14.1 .7-23.2-2-29.4c-2.8-6.3-7.9-12.4-16.7-18.6c-19.2-13.4-48.3-22.1-84.9-32.5c-1-.3-1.9-.6-2.9-.8c-32.7-9.3-72-20.6-100.9-40.7c-15.7-10.9-29.9-25.5-38.6-45.1c-8.8-19.8-10.8-42-6.6-66.3l31.5 5.5L2.1 133.9C9.4 91.4 37.4 62.2 73.9 46.6c35.4-15.2 79.1-17.9 123.7-10.9c13 2 52.4 9.6 66.6 13.4c17.1 4.5 27.2 22.1 22.7 39.2s-22.1 27.2-39.2 22.7c-11.2-3-48.1-10.2-60.1-12l4.9-31.5-4.9 31.5c-36.9-5.8-67.5-2.5-88.6 6.5z\"]\n};\nconst faTimeline = {\n prefix: 'fas',\n iconName: 'timeline',\n icon: [640, 512, [], \"e29c\", \"M128 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32 97.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3L96 224l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0 0 54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3l0-54.7 256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-54.7c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3l0 54.7-320 0 0-54.7zM488 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM320 392a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm16 64l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM160 336c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16l0-32zM272 128l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM256 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM368 128l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM352 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM464 128l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM448 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z\"]\n};\nconst faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"]\n};\nconst faHouseChimneyMedical = {\n prefix: 'fas',\n iconName: 'house-chimney-medical',\n icon: [576, 512, [\"clinic-medical\"], \"f7f2\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-320.4 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7 416 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 121 52.8 46.4c8 7 12 15 11 24zM272 192c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0z\"]\n};\nconst faClinicMedical = faHouseChimneyMedical;\nconst faTemperatureThreeQuarters = {\n prefix: 'fas',\n iconName: 'temperature-three-quarters',\n icon: [320, 512, [\"temperature-3\", \"thermometer-3\", \"thermometer-three-quarters\"], \"f2c8\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3L144 144c0-8.8 7.2-16 16-16s16 7.2 16 16l0 178.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature3 = faTemperatureThreeQuarters;\nconst faThermometer3 = faTemperatureThreeQuarters;\nconst faThermometerThreeQuarters = faTemperatureThreeQuarters;\nconst faMobileScreen = {\n prefix: 'fas',\n iconName: 'mobile-screen',\n icon: [384, 512, [\"mobile-android-alt\"], \"f3cf\", \"M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zM144 448c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zM304 64L80 64l0 320 224 0 0-320z\"]\n};\nconst faMobileAndroidAlt = faMobileScreen;\nconst faPlaneUp = {\n prefix: 'fas',\n iconName: 'plane-up',\n icon: [512, 512, [], \"e22d\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 66.3L497.8 278.5c8.9 5.9 14.2 15.9 14.2 26.6l0 56.7c0 10.9-10.7 18.6-21.1 15.2L320 320l0 80 57.6 43.2c4 3 6.4 7.8 6.4 12.8l0 42c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14l0-42c0-5 2.4-9.8 6.4-12.8L192 400l0-80L21.1 377C10.7 380.4 0 372.7 0 361.8l0-56.7c0-10.7 5.3-20.7 14.2-26.6L192 160l0-66.3z\"]\n};\nconst faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M400 96l0 .7c-5.3-.4-10.6-.7-16-.7L256 96c-16.5 0-32.5 2.1-47.8 6c-.1-2-.2-4-.2-6c0-53 43-96 96-96s96 43 96 96zm-16 32c3.5 0 7 .1 10.4 .3c4.2 .3 8.4 .7 12.6 1.3C424.6 109.1 450.8 96 480 96l11.5 0c10.4 0 18 9.8 15.5 19.9l-13.8 55.2c15.8 14.8 28.7 32.8 37.5 52.9l13.3 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-32 0c-9.1 12.1-19.9 22.9-32 32l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-128 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64c-34.9-26.2-58.7-66.3-63.2-112L68 304c-37.6 0-68-30.4-68-68s30.4-68 68-68l4 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-4 0c-11 0-20 9-20 20s9 20 20 20l31.2 0c12.1-59.8 57.7-107.5 116.3-122.8c12.9-3.4 26.5-5.2 40.5-5.2l128 0zm64 136a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [576, 512, [\"battery-3\"], \"f242\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm208 96L96 192l0 128 192 0 0-128z\"]\n};\nconst faBattery3 = faBatteryHalf;\nconst faMountainCity = {\n prefix: 'fas',\n iconName: 'mountain-city',\n icon: [640, 512, [], \"e52e\", \"M336 0c-26.5 0-48 21.5-48 48l0 92.1 71.4 118.4c2.5-1.6 5.4-2.5 8.6-2.5l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-3.5 0 73.8 122.4c12.4 20.6 12.9 46.3 1.2 67.3c-.4 .8-.9 1.6-1.4 2.3L592 512c26.5 0 48-21.5 48-48l0-224c0-26.5-21.5-48-48-48l-24 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-40 0 0-144c0-26.5-21.5-48-48-48L336 0zm32 64l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM352 176c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm160 96c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM224 188.9L283.8 288 223 288l-48 64-24.6-41.2L224 188.9zm29.4-44.2C247.1 134.3 236 128 224 128s-23.1 6.3-29.4 16.7L5.1 458.9c-6.5 10.8-6.7 24.3-.7 35.3S22 512 34.5 512l379.1 0c12.5 0 24-6.8 30.1-17.8s5.8-24.5-.7-35.3L253.4 144.7z\"]\n};\nconst faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2c0 0 0 0 0 0s0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5l0 35.4c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336l0-35.4c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4l0 3.4 0 5.7 0 26.3zm32 0l0-32 0-25.9c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5l0 35.4c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5l0 35.4c0 44.2-86 80-192 80S0 476.2 0 432l0-35.4c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z\"]\n};\nconst faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [9772], \"f66d\", \"M245.8 3.7c5.9-4.9 14.6-4.9 20.5 0l48 40c5.9 4.9 7.5 13.2 3.8 19.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0l-.1 .1-.3 .6c-.3 .5-.7 1.3-1.2 2.3c-1 2-2.6 5-4.4 8.6c-.5 .9-.9 1.9-1.4 2.9C344.9 97.4 368 134 368 176s-23.1 78.6-57.3 97.8c.5 1 1 2 1.4 2.9c1.8 3.7 3.3 6.6 4.4 8.6c.5 1 .9 1.8 1.2 2.3l.3 .6 .1 .1s0 0 0 0s0 0 0 0c3.6 6.7 2 15-3.8 19.9L272 343.5l0 19.8 35.6-24.5 41.1-28.2c42.8-29.4 68.4-78 68.4-130c0-31.1-9.2-61.6-26.5-87.5l-2.8-4.2c-4-6-3.5-14 1.3-19.5s12.7-7 19.2-3.7L401.1 80c7.2-14.3 7.2-14.3 7.2-14.3s0 0 0 0s0 0 0 0l.1 0 .3 .2 1 .5c.8 .4 2 1.1 3.5 1.9c2.9 1.7 7 4.1 11.8 7.3c9.6 6.4 22.5 16.1 35.4 29c25.7 25.7 52.7 65.6 52.7 119.3c0 53.1-26.4 100.5-51.2 133.6c-12.6 16.7-25.1 30.3-34.5 39.7c-4.7 4.7-8.7 8.4-11.5 10.9c-1.4 1.3-2.5 2.2-3.3 2.9l-.9 .8-.3 .2-.1 .1c0 0 0 0 0 0s0 0 0 0L401.1 400l10.2 12.3c-5.1 4.3-12.4 4.9-18.2 1.6l-75.6-43-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21L272 423.4l0 28.9c9.6 5.5 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7l0-28.1-40.3 27.7C197.8 463.3 187.9 472 176 472c-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-75.6 43c-5.8 3.3-13 2.7-18.2-1.6L112 400c-10.2 12.3-10.2 12.3-10.3 12.3s0 0 0 0s0 0 0 0l-.1-.1-.3-.2-.9-.8c-.8-.7-1.9-1.7-3.3-2.9c-2.8-2.5-6.7-6.2-11.5-10.9c-9.4-9.4-21.9-23-34.5-39.7C26.4 324.5 0 277.1 0 224c0-53.7 26.9-93.6 52.7-119.3c12.9-12.9 25.8-22.6 35.4-29C93 72.5 97 70 99.9 68.4c1.5-.8 2.6-1.5 3.5-1.9l1-.5 .3-.2 .1 0c0 0 0 0 0 0s0 0 0 0L112 80l-7.2-14.3c6.5-3.2 14.3-1.7 19.2 3.7s5.3 13.4 1.3 19.5l-2.8 4.2C105.2 119 96 149.5 96 180.6c0 51.9 25.6 100.6 68.4 130l41.1 28.2L240 362.6l0-19.1-42.2-35.2c-5.9-4.9-7.5-13.2-3.8-19.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0l.1-.1 .3-.6c.3-.5 .7-1.3 1.2-2.3c1-2 2.6-5 4.4-8.6c.5-.9 .9-1.9 1.4-2.9C167.1 254.6 144 218 144 176s23.1-78.6 57.3-97.8c-.5-1-1-2-1.4-2.9c-1.8-3.7-3.3-6.6-4.4-8.6c-.5-1-.9-1.8-1.2-2.3l-.3-.6-.1-.1s0 0 0 0s0 0 0 0s0 0 0 0c-3.6-6.7-2-15 3.8-19.9l48-40zM220.2 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1C227 210.2 232 190.9 232 176s-5-34.2-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1C285 141.8 280 161.1 280 176s5 34.2 11.8 53.1z\"]\n};\nconst faSliders = {\n prefix: 'fas',\n iconName: 'sliders',\n icon: [512, 512, [\"sliders-h\"], \"f1de\", \"M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z\"]\n};\nconst faSlidersH = faSliders;\nconst faFolderTree = {\n prefix: 'fas',\n iconName: 'folder-tree',\n icon: [576, 512, [], \"f802\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32l0 96L0 384c0 35.3 28.7 64 64 64l192 0 0-64L64 384l0-224 192 0 0-64L64 96l0-64zM288 192c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l-98.7 0c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4L320 0c-17.7 0-32 14.3-32 32l0 160zm0 288c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l-98.7 0c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4L320 288c-17.7 0-32 14.3-32 32l0 160z\"]\n};\nconst faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M256 64l128 0 0 64-128 0 0-64zM240 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l48 0 0 32L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 32-48 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l160 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0-32 256 0 0 32-48 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l160 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0-32 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-256 0 0-32 48 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48L240 0zM96 448l0-64 128 0 0 64L96 448zm320-64l128 0 0 64-128 0 0-64z\"]\n};\nconst faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [320, 512, [128205], \"f276\", \"M16 144a144 144 0 1 1 288 0A144 144 0 1 1 16 144zM160 80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-53 0-96 43-96 96c0 8.8 7.2 16 16 16s16-7.2 16-16c0-35.3 28.7-64 64-64zM128 480l0-162.9c10.4 1.9 21.1 2.9 32 2.9s21.6-1 32-2.9L192 480c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nconst faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M34.6 288L80 288c8.8 0 16-7.2 16-16L96 72c0-22.1 17.9-40 40-40s40 17.9 40 40l0 132c0 11 9 20 20 20s20-9 20-20l0-164c0-22.1 17.9-40 40-40s40 17.9 40 40l0 164c0 11 9 20 20 20s20-9 20-20l0-132c0-22.1 17.9-40 40-40s40 17.9 40 40l0 200c0 8.8 7.2 16 16 16l45.4 0c19.1 0 34.6 15.5 34.6 34.6c0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71s-119.4-25.8-160.6-71L9 345.9c-5.8-6.4-9-14.7-9-23.3C0 303.5 15.5 288 34.6 288zM256 288c-38.4 0-76.8 35.8-90.6 50.2c-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faCentSign = {\n prefix: 'fas',\n iconName: 'cent-sign',\n icon: [384, 512, [], \"e3f5\", \"M224 0c17.7 0 32 14.3 32 32l0 34.7c30.9 5.2 59.2 17.7 83.2 35.8c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4C279.4 137.5 252.9 128 224 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c28.9 0 55.4-9.5 76.8-25.6c14.1-10.6 34.2-7.8 44.8 6.4s7.8 34.2-6.4 44.8c-24 18-52.4 30.6-83.2 35.8l0 34.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.7C101.2 430.1 32 351.1 32 256s69.2-174.1 160-189.3L192 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M288 0L160 0 128 0C110.3 0 96 14.3 96 32s14.3 32 32 32l0 132.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512l309.2 0c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5L320 64c17.7 0 32-14.3 32-32s-14.3-32-32-32L288 0zM192 196.8L192 64l64 0 0 132.8c0 23.7 6.6 46.9 19 67.1L309.5 320l-171 0L173 263.9c12.4-20.2 19-43.4 19-67.1z\"]\n};\nconst faPersonPregnant = {\n prefix: 'fas',\n iconName: 'person-pregnant',\n icon: [384, 512, [], \"e31e\", \"M192 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM120 383c-13.8-3.6-24-16.1-24-31l0-55.1-4.6 7.6c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c15-24.9 40.3-41.5 68.7-45.6c4.1-.6 8.2-1 12.5-1l1.1 0 12.5 0 2.4 0c1.4 0 2.8 .1 4.1 .3c35.7 2.9 65.4 29.3 72.1 65l6.1 32.5c44.3 8.6 77.7 47.5 77.7 94.3l0 32c0 17.7-14.3 32-32 32l-16 0-40 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-8 0-8 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-97z\"]\n};\nconst faWandSparkles = {\n prefix: 'fas',\n iconName: 'wand-sparkles',\n icon: [512, 512, [], \"f72b\", \"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7l0 21.4c0 8.8-7.2 16-16 16l-15.8 0c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9l0-27.6c0-8.8 7.2-16 16-16l34.6 0c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"]\n};\nconst faEllipsisVertical = {\n prefix: 'fas',\n iconName: 'ellipsis-vertical',\n icon: [128, 512, [\"ellipsis-v\"], \"f142\", \"M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z\"]\n};\nconst faEllipsisV = faEllipsisVertical;\nconst faTicket = {\n prefix: 'fas',\n iconName: 'ticket',\n icon: [576, 512, [127903], \"f145\", \"M64 64C28.7 64 0 92.7 0 128l0 64c0 8.8 7.4 15.7 15.7 18.6C34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320l0 64c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-64c0-8.8-7.4-15.7-15.7-18.6C541.5 294.9 528 277 528 256s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6l0-64c0-35.3-28.7-64-64-64L64 64zm64 112l0 160c0 8.8 7.2 16 16 16l288 0c8.8 0 16-7.2 16-16l0-160c0-8.8-7.2-16-16-16l-288 0c-8.8 0-16 7.2-16 16zM96 160c0-17.7 14.3-32 32-32l320 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-320 0c-17.7 0-32-14.3-32-32l0-192z\"]\n};\nconst faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [9211], \"f011\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 224c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z\"]\n};\nconst faRightLong = {\n prefix: 'fas',\n iconName: 'right-long',\n icon: [512, 512, [\"long-arrow-alt-right\"], \"f30b\", \"M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 72L32 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l288 0 0 72c0 9.6 5.7 18.2 14.5 22z\"]\n};\nconst faLongArrowAltRight = faRightLong;\nconst faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [448, 512, [], \"f74d\", \"M32 0C49.7 0 64 14.3 64 32l0 16 69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 36.1-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-20.3-9-41.8-14.7-63.6-16.9l0 32.2c17.4 2.1 34.4 6.7 50.6 13.9l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 136.3l0 62-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 203.1l0 32.7 70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 232.3l0 62-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 299.1l0 32.7 70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 328.3l0 33.5c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 400l0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64 0-70.5 0-32.7 0-63.3 0-32.7 0-63.3 0-32.7L0 64 0 32C0 14.3 14.3 0 32 0zm80 96A16 16 0 1 0 80 96a16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-32 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faLaptopFile = {\n prefix: 'fas',\n iconName: 'laptop-file',\n icon: [640, 512, [], \"e51d\", \"M128 0C92.7 0 64 28.7 64 64l0 224-44.8 0C8.6 288 0 296.6 0 307.2C0 349.6 34.4 384 76.8 384L320 384l0-96-192 0 0-224 320 0 0 32 64 0 0-32c0-35.3-28.7-64-64-64L128 0zM512 128l-112 0c-26.5 0-48 21.5-48 48l0 288c0 26.5 21.5 48 48 48l192 0c26.5 0 48-21.5 48-48l0-208-96 0c-17.7 0-32-14.3-32-32l0-96zm32 0l0 96 96 0-96-96z\"]\n};\nconst faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [\"teletype\"], \"f1e4\", \"M38.3 241.3L15.1 200.6c-9.2-16.2-8.4-36.5 4.5-50C61.4 106.8 144.7 48 256 48s194.6 58.8 236.4 102.6c12.9 13.5 13.7 33.8 4.5 50l-23.1 40.7c-7.5 13.2-23.3 19.3-37.8 14.6l-81.1-26.6c-13.1-4.3-22-16.6-22-30.4l0-54.8c-49.6-18.1-104-18.1-153.6 0l0 54.8c0 13.8-8.9 26.1-22 30.4L76.1 255.8c-14.5 4.7-30.3-1.4-37.8-14.6zM32 336c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm0 96c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM144 320l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM128 432c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16l0-32z\"]\n};\nconst faTeletype = faTty;\nconst faDiagramNext = {\n prefix: 'fas',\n iconName: 'diagram-next',\n icon: [512, 512, [], \"e476\", \"M512 160c0 35.3-28.7 64-64 64l-168 0 0 64 46.1 0c21.4 0 32.1 25.9 17 41L273 399c-9.4 9.4-24.6 9.4-33.9 0L169 329c-15.1-15.1-4.4-41 17-41l46.1 0 0-64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 64zM448 416l0-64-82.7 0 .4-.4c18.4-18.4 20.4-43.7 11-63.6l71.3 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l71.3 0c-9.4 19.9-7.4 45.2 11 63.6l.4 .4L64 352l0 64 146.7 0 5.7 5.7c21.9 21.9 57.3 21.9 79.2 0l5.7-5.7L448 416z\"]\n};\nconst faPersonRifle = {\n prefix: 'fas',\n iconName: 'person-rifle',\n icon: [576, 512, [], \"e54e\", \"M265.2 192c25.4 0 49.8 7.1 70.8 19.9L336 512l-192 0 0-174.3L90.4 428.3c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8L97.7 258.8c24.5-41.4 69-66.8 117.1-66.8l50.4 0zM160 80a80 80 0 1 1 160 0A80 80 0 1 1 160 80zM448 0c8.8 0 16 7.2 16 16l0 116.3c9.6 5.5 16 15.9 16 27.7l0 109.3 16-5.3 0-56c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 84.5c0 6.9-4.4 13-10.9 15.2L480 325.3l0 26.7 48 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-44 0 23 92.1c2.5 10.1-5.1 19.9-15.5 19.9L432 512c-8.8 0-16-7.2-16-16l0-96-16 0c-17.7 0-32-14.3-32-32l0-144c0-17.7 14.3-32 32-32l0-32c0-11.8 6.4-22.2 16-27.7L416 32c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 16 0z\"]\n};\nconst faHouseMedicalCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-medical-circle-exclamation',\n icon: [640, 512, [], \"e512\", \"M320 368c0 59.5 29.5 112.1 74.8 144l-266.7 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64L320 256l0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M0 96C0 60.7 28.7 32 64 32l448 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nconst faPersonHiking = {\n prefix: 'fas',\n iconName: 'person-hiking',\n icon: [384, 512, [\"hiking\"], \"f6ec\", \"M192 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm51.3 182.7L224.2 307l49.7 49.7c9 9 14.1 21.2 14.1 33.9l0 89.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-82.7-73.9-73.9c-15.8-15.8-22.2-38.6-16.9-60.3l20.4-84c8.3-34.1 42.7-54.9 76.7-46.4c19 4.8 35.6 16.4 46.4 32.7L305.1 208l30.9 0 0-24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 55.8c0 .1 0 .2 0 .2s0 .2 0 .2L384 488c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-216-39.4 0c-16 0-31-8-39.9-21.4l-13.3-20zM81.1 471.9L117.3 334c3 4.2 6.4 8.2 10.1 11.9l41.9 41.9L142.9 488.1c-4.5 17.1-22 27.3-39.1 22.8s-27.3-22-22.8-39.1zm55.5-346L101.4 266.5c-3 12.1-14.9 19.9-27.2 17.9l-47.9-8c-14-2.3-22.9-16.3-19.2-30L31.9 155c9.5-34.8 41.1-59 77.2-59l4.2 0c15.6 0 27.1 14.7 23.3 29.8z\"]\n};\nconst faHiking = faPersonHiking;\nconst faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [640, 512, [9890], \"f226\", \"M192 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM368 176c0 86.3-62.1 158.1-144 173.1l0 34.9 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-34.9C78.1 334.1 16 262.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176zM344 318c14.6-15.6 26.8-33.4 36-53c18.8 14.4 42.4 23 68 23c61.9 0 112-50.1 112-112s-50.1-112-112-112c-25.6 0-49.1 8.6-68 23c-9.3-19.5-21.5-37.4-36-53C373.1 12.6 409.1 0 448 0c97.2 0 176 78.8 176 176c0 86.3-62.1 158.1-144 173.1l0 34.9 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-34.9c-26.6-4.9-51.1-15.7-72-31.1z\"]\n};\nconst faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M160 32c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64l352 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320l-144 0-48 0-80 0c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM192 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 344c0 75.1 60.9 136 136 136l320 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-320 0c-48.6 0-88-39.4-88-88l0-224z\"]\n};\nconst faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [384, 512, [128425], \"f1ec\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM96 64l192 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L96 160c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32zm32 160a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 352a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM64 416c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32zM192 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nconst faPeoplePulling = {\n prefix: 'fas',\n iconName: 'people-pulling',\n icon: [576, 512, [], \"e535\", \"M80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zM64 128c-35.3 0-64 28.7-64 64L0 320c0 17.7 14.3 32 32 32c9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8L123.1 352l15.7 0 30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7c8.6 3.6 18 3.1 25.9-.7c3.4-1.6 6.6-3.9 9.3-6.7c3.1-3.2 5.5-7 7.1-11.4c.1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L537 232.7l-15.3-36.8C504.5 154.8 464.3 128 419.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128l-53 0zM464 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"]\n};\nconst faN = {\n prefix: 'fas',\n iconName: 'n',\n icon: [384, 512, [110], \"4e\", \"M21.1 33.9c12.7-4.6 26.9-.7 35.5 9.6L320 359.6 320 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 384c0 13.5-8.4 25.5-21.1 30.1s-26.9 .7-35.5-9.6L64 152.4 64 448c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 50.5 8.4 38.5 21.1 33.9z\"]\n};\nconst faCableCar = {\n prefix: 'fas',\n iconName: 'cable-car',\n icon: [512, 512, [128673, 57551, \"tram\"], \"f7da\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 56a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 288c0-35.3 28.7-64 64-64l136 0 0-66.5-203.1 42c-13 2.7-25.7-5.7-28.4-18.6s5.7-25.7 18.6-28.4l232-48 232-48c13-2.7 25.7 5.7 28.4 18.6s-5.7 25.7-18.6 28.4L280 147.5l0 76.5 136 0c35.3 0 64 28.7 64 64l0 160c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-160zm64 0c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-64 0zm112 16l0 64c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-64 0z\"]\n};\nconst faTram = faCableCar;\nconst faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [127783, 9926], \"f73d\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96L96 320zm-6.8 52c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3l0 3c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-3c0-8.5 2.1-16.9 6.2-24.3L89.2 372zm160 0c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3l0 3c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-3c0-8.5 2.1-16.9 6.2-24.3L249.2 372zm124.9 64.6L409.2 372c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3l0 3c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-3c0-8.5 2.1-16.9 6.2-24.3z\"]\n};\nconst faBuildingCircleXmark = {\n prefix: 'fas',\n iconName: 'building-circle-xmark',\n icon: [640, 512, [], \"e4d4\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [576, 512, [128674], \"f21a\", \"M192 32c0-17.7 14.3-32 32-32L352 0c17.7 0 32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 128 44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240l0-128c0-26.5 21.5-48 48-48l48 0 0-32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7l0-90.7-256 0 0 90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faArrowsDownToLine = {\n prefix: 'fas',\n iconName: 'arrows-down-to-line',\n icon: [576, 512, [], \"e4b8\", \"M544 416L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zm22.6-137.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L480 274.7 480 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zm-320-45.3c-12.5-12.5-32.8-12.5-45.3 0L160 274.7 160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7L54.6 233.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nconst faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 242.7-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7 288 32zM64 352c-35.3 0-64 28.7-64 64l0 32c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-32c0-35.3-28.7-64-64-64l-101.5 0-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352 64 352zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faFaceGrin = {\n prefix: 'fas',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGrin = faFaceGrin;\nconst faDeleteLeft = {\n prefix: 'fas',\n iconName: 'delete-left',\n icon: [576, 512, [9003, \"backspace\"], \"f55a\", \"M576 128c0-35.3-28.7-64-64-64L205.3 64c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7L512 448c35.3 0 64-28.7 64-64l0-256zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faBackspace = faDeleteLeft;\nconst faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [\"eye-dropper-empty\", \"eyedropper\"], \"f1fb\", \"M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6l0 42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480l42.4 0c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7L96 416l0-36.1c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z\"]\n};\nconst faEyeDropperEmpty = faEyeDropper;\nconst faEyedropper = faEyeDropper;\nconst faFileCircleCheck = {\n prefix: 'fas',\n iconName: 'file-circle-check',\n icon: [576, 512, [], \"e5a0\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [9193], \"f04e\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416L0 96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L224 214.3l0 41.7 0 41.7L52.5 440.6zM256 352l0-96 0-128 0-32c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l192 160c7.3 6.1 11.5 15.1 11.5 24.6s-4.2 18.5-11.5 24.6l-192 160c-9.5 7.9-22.8 9.7-34.1 4.4s-18.4-16.6-18.4-29l0-64z\"]\n};\nconst faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [384, 512, [128241, \"mobile-android\", \"mobile-phone\"], \"f3ce\", \"M80 0C44.7 0 16 28.7 16 64l0 384c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L80 0zm80 432l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faMobileAndroid = faMobile;\nconst faMobilePhone = faMobile;\nconst faFaceMeh = {\n prefix: 'fas',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 336l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faMeh = faFaceMeh;\nconst faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M352 64c0-17.7-14.3-32-32-32L128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32l-192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32z\"]\n};\nconst faBookSkull = {\n prefix: 'fas',\n iconName: 'book-skull',\n icon: [448, 512, [\"book-dead\"], \"f6b7\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zM320 112c0-35.3-35.8-64-80-64s-80 28.7-80 64c0 20.9 12.6 39.5 32 51.2l0 12.8c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-12.8c19.4-11.7 32-30.3 32-51.2zM208 96a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM134.3 209.3c-8.1-3.5-17.5 .3-21 8.4s.3 17.5 8.4 21L199.4 272l-77.7 33.3c-8.1 3.5-11.9 12.9-8.4 21s12.9 11.9 21 8.4L240 289.4l105.7 45.3c8.1 3.5 17.5-.3 21-8.4s-.3-17.5-8.4-21L280.6 272l77.7-33.3c8.1-3.5 11.9-12.9 8.4-21s-12.9-11.9-21-8.4L240 254.6 134.3 209.3z\"]\n};\nconst faBookDead = faBookSkull;\nconst faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M0 96l576 0c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96zm0 32L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-288L0 128zM64 405.3c0-29.5 23.9-53.3 53.3-53.3l117.3 0c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7L74.7 416c-5.9 0-10.7-4.8-10.7-10.7zM176 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm176 16c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faDriversLicense = faIdCard;\nconst faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [\"dedent\"], \"f03b\", \"M0 64C0 46.3 14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 96l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32zM.2 268.6c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6l0 158.6c0 13.3-15.3 20.8-25.8 12.6L.2 268.6z\"]\n};\nconst faDedent = faOutdent;\nconst faHeartCircleExclamation = {\n prefix: 'fas',\n iconName: 'heart-circle-exclamation',\n icon: [576, 512, [], \"e4fe\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faHouse = {\n prefix: 'fas',\n iconName: 'house',\n icon: [576, 512, [127968, 63498, 63500, \"home\", \"home-alt\", \"home-lg-alt\"], \"f015\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c0 2.7-.2 5.4-.5 8.1l0 16.2c0 22.1-17.9 40-40 40l-16 0c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1L416 512l-24 0c-22.1 0-40-17.9-40-40l0-24 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64 0 24c0 22.1-17.9 40-40 40l-24 0-31.9 0c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2l-16 0c-22.1 0-40-17.9-40-40l0-112c0-.9 0-1.9 .1-2.8l0-69.7-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"]\n};\nconst faHome = faHouse;\nconst faHomeAlt = faHouse;\nconst faHomeLgAlt = faHouse;\nconst faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zm80 64c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l288 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16L80 256z\"]\n};\nconst faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M64 96c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 256-64 0 0-256L128 96l0 256-64 0L64 96zM0 403.2C0 392.6 8.6 384 19.2 384l601.6 0c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8L76.8 480C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faB = {\n prefix: 'fas',\n iconName: 'b',\n icon: [320, 512, [98], \"42\", \"M64 32C28.7 32 0 60.7 0 96L0 256 0 416c0 35.3 28.7 64 64 64l128 0c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128L64 32zm96 192l-96 0L64 96l96 0c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288l96 0 32 0c35.3 0 64 28.7 64 64s-28.7 64-64 64L64 416l0-128z\"]\n};\nconst faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM160 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [9856], \"f525\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4l55.7 0c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1s11.2-8.3 11.2-15.3l0-240c0-70.7-57.3-128-128-128l-55.7 0c-36.4 0-69.9-17.6-101.1-36.4C262.3 42.1 228.3 32 192 32C86 32 0 118 0 224c0 71.1 38.6 133.1 96 166.3L96 456c0 13.3 10.7 24 24 24s24-10.7 24-24l0-46c15.3 3.9 31.4 6 48 6c5.4 0 10.7-.2 16-.7l0 40.7c0 13.3 10.7 24 24 24s24-10.7 24-24l0-50.9c12.4-4.4 24.2-10 35.2-16.7zM448 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faArrowRightArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-right-arrow-left',\n icon: [448, 512, [8644, \"exchange\"], \"f0ec\", \"M438.6 150.6c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96 32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l306.7 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96zm-333.3 352c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 416 416 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96z\"]\n};\nconst faExchange = faArrowRightArrowLeft;\nconst faRotateRight = {\n prefix: 'fas',\n iconName: 'rotate-right',\n icon: [512, 512, [\"redo-alt\", \"rotate-forward\"], \"f2f9\", \"M463.5 224l8.5 0c13.3 0 24-10.7 24-24l0-128c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l119.5 0z\"]\n};\nconst faRedoAlt = faRotateRight;\nconst faRotateForward = faRotateRight;\nconst faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [448, 512, [127860, 61685, \"cutlery\"], \"f2e7\", \"M416 0C400 0 288 32 288 176l0 112c0 35.3 28.7 64 64 64l32 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 0-112 0-208c0-17.7-14.3-32-32-32zM64 16C64 7.8 57.9 1 49.7 .1S34.2 4.6 32.4 12.5L2.1 148.8C.7 155.1 0 161.5 0 167.9c0 45.9 35.1 83.6 80 87.7L80 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224.4c44.9-4.1 80-41.8 80-87.7c0-6.4-.7-12.8-2.1-19.1L191.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S160 7.8 160 16l0 134.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L127.9 14.6C127.2 6.3 120.3 0 112 0s-15.2 6.3-15.9 14.6L83.7 151c-.5 5.1-4.7 9-9.8 9c-5.4 0-9.8-4.4-9.8-9.8L64 16zm48.3 152l-.3 0-.3 0 .3-.7 .3 .7z\"]\n};\nconst faCutlery = faUtensils;\nconst faArrowUpWideShort = {\n prefix: 'fas',\n iconName: 'arrow-up-wide-short',\n icon: [576, 512, [\"sort-amount-up\"], \"f161\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nconst faSortAmountUp = faArrowUpWideShort;\nconst faMillSign = {\n prefix: 'fas',\n iconName: 'mill-sign',\n icon: [384, 512, [], \"e1ed\", \"M302.1 42.8c5.9-16.6-2.7-35-19.4-40.9s-35 2.7-40.9 19.4L208 116.1c-5.7 4-11.1 8.5-16 13.5C171.7 108.9 143.3 96 112 96c-19.5 0-37.8 5-53.7 13.7C52.5 101.4 42.9 96 32 96C14.3 96 0 110.3 0 128l0 80L0 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-208c0-26.5 21.5-48 48-48s48 21.5 48 48l0 42.5L81.9 469.2c-5.9 16.6 2.7 35 19.4 40.9s35-2.7 40.9-19.4l21.4-60C168.9 441 179.6 448 192 448c17.7 0 32-14.3 32-32l0-154.5 35.7-100c3.9-1 8.1-1.6 12.3-1.6c26.5 0 48 21.5 48 48l0 208c0 17.7 14.3 32 32 32s32-14.3 32-32l0-208c0-58.2-44.3-106-101.1-111.5l19.2-53.8z\"]\n};\nconst faBowlRice = {\n prefix: 'fas',\n iconName: 'bowl-rice',\n icon: [512, 512, [], \"e2eb\", \"M176 56c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm24 48l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256l457.1 0c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28l-231.5 0c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-24-96l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-24-96l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-24-96l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [128128], \"f54c\", \"M416 398.9c58.5-41.1 96-104.1 96-174.9C512 100.3 397.4 0 256 0S0 100.3 0 224c0 70.7 37.5 133.8 96 174.9c0 .4 0 .7 0 1.1l0 64c0 26.5 21.5 48 48 48l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 64 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 48 0c26.5 0 48-21.5 48-48l0-64c0-.4 0-.7 0-1.1zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm256-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faTowerBroadcast = {\n prefix: 'fas',\n iconName: 'tower-broadcast',\n icon: [576, 512, [\"broadcast-tower\"], \"f519\", \"M80.3 44C69.8 69.9 64 98.2 64 128s5.8 58.1 16.3 84c6.6 16.4-1.3 35-17.7 41.7s-35-1.3-41.7-17.7C7.4 202.6 0 166.1 0 128S7.4 53.4 20.9 20C27.6 3.6 46.2-4.3 62.6 2.3S86.9 27.6 80.3 44zM555.1 20C568.6 53.4 576 89.9 576 128s-7.4 74.6-20.9 108c-6.6 16.4-25.3 24.3-41.7 17.7S489.1 228.4 495.7 212c10.5-25.9 16.3-54.2 16.3-84s-5.8-58.1-16.3-84C489.1 27.6 497 9 513.4 2.3s35 1.3 41.7 17.7zM352 128c0 23.7-12.9 44.4-32 55.4L320 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-296.6c-19.1-11.1-32-31.7-32-55.4c0-35.3 28.7-64 64-64s64 28.7 64 64zM170.6 76.8C163.8 92.4 160 109.7 160 128s3.8 35.6 10.6 51.2c7.1 16.2-.3 35.1-16.5 42.1s-35.1-.3-42.1-16.5c-10.3-23.6-16-49.6-16-76.8s5.7-53.2 16-76.8c7.1-16.2 25.9-23.6 42.1-16.5s23.6 25.9 16.5 42.1zM464 51.2c10.3 23.6 16 49.6 16 76.8s-5.7 53.2-16 76.8c-7.1 16.2-25.9 23.6-42.1 16.5s-23.6-25.9-16.5-42.1c6.8-15.6 10.6-32.9 10.6-51.2s-3.8-35.6-10.6-51.2c-7.1-16.2 .3-35.1 16.5-42.1s35.1 .3 42.1 16.5z\"]\n};\nconst faBroadcastTower = faTowerBroadcast;\nconst faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [128763], \"f63c\", \"M368.6 96l76.8 96L288 192l0-96 80.6 0zM224 80l0 112L64 192c-17.7 0-32 14.3-32 32l0 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l33.1 0c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16l66.3 0c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16l33.1 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64c0-17.7-14.3-32-32-32l-48.6 0L418.6 56c-12.1-15.2-30.5-24-50-24L272 32c-26.5 0-48 21.5-48 48zm0 288a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm288 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0z\"]\n};\nconst faUpLong = {\n prefix: 'fas',\n iconName: 'up-long',\n icon: [320, 512, [\"long-arrow-alt-up\"], \"f30c\", \"M318 177.5c3.8-8.8 2-19-4.6-26l-136-144C172.9 2.7 166.6 0 160 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26S14.4 192 24 192l72 0 0 288c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-288 72 0c9.6 0 18.2-5.7 22-14.5z\"]\n};\nconst faLongArrowAltUp = faUpLong;\nconst faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [384, 512, [9209], \"f04d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nconst faCodeMerge = {\n prefix: 'fas',\n iconName: 'code-merge',\n icon: [448, 512, [], \"f387\", \"M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3l0 205.3C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3l0-86.6c26.7 20.1 60 32 96 32l86.7 0c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48L208 240c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M288 109.3L288 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-242.7-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352l128 0c0 35.3 28.7 64 64 64s64-28.7 64-64l128 0c35.3 0 64 28.7 64 64l0 32c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64l0-32c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faHurricane = {\n prefix: 'fas',\n iconName: 'hurricane',\n icon: [384, 512, [], \"f751\", \"M0 208C0 104.4 75.7 18.5 174.9 2.6C184 1.2 192 8.6 192 17.9l0 63.3c0 8.4 6.5 15.3 14.7 16.5C307 112.5 384 199 384 303.4c0 103.6-75.7 189.5-174.9 205.4c-9.2 1.5-17.1-5.9-17.1-15.2l0-63.3c0-8.4-6.5-15.3-14.7-16.5C77 398.9 0 312.4 0 208zm288 48A96 96 0 1 0 96 256a96 96 0 1 0 192 0zm-96-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faMound = {\n prefix: 'fas',\n iconName: 'mound',\n icon: [576, 512, [], \"e52d\", \"M144.1 179.2C173.8 127.7 228.6 96 288 96s114.2 31.7 143.9 83.2L540.4 368c12.3 21.3-3.1 48-27.7 48H63.3c-24.6 0-40-26.6-27.7-48L144.1 179.2z\"]\n};\nconst faToiletPortable = {\n prefix: 'fas',\n iconName: 'toilet-portable',\n icon: [320, 512, [], \"e583\", \"M0 32L0 64l320 0 0-32c0-17.7-14.3-32-32-32L32 0C14.3 0 0 14.3 0 32zM24 96L0 96l0 24L0 488c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8 224 0 0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-368 0-24-24 0L24 96zM256 240l0 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [512, 512, [128191, 128192, 128440], \"f51f\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-96-32a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zM96 240c0-35 17.5-71.1 45.2-98.8S205 96 240 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-45.4 0-89.2 22.3-121.5 54.5S64 194.6 64 240c0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nconst faFileArrowDown = {\n prefix: 'fas',\n iconName: 'file-arrow-down',\n icon: [384, 512, [\"file-download\"], \"f56d\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM216 232l0 102.1 31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31L168 232c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faFileDownload = faFileArrowDown;\nconst faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M0 112C0 67.8 35.8 32 80 32l336 0c88.4 0 160 71.6 160 160l0 160 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0-288 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-44.2 0-80-35.8-80-80L0 112zM320 352l128 0 0-96-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l32 0 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 192zM96 128c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128zm96 336a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faShieldCat = {\n prefix: 'fas',\n iconName: 'shield-cat',\n icon: [512, 512, [], \"e572\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4l.2 0c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4l48 0c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3l.2 0c5.8 0 10.4 4.7 10.4 10.4L352 272c0 53-43 96-96 96s-96-43-96-96l0-117.6zM216 288a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm96-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [448, 512, [9889, \"zap\"], \"f0e7\", \"M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288l111.5 0L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7l-111.5 0L349.4 44.6z\"]\n};\nconst faZap = faBolt;\nconst faGlassWater = {\n prefix: 'fas',\n iconName: 'glass-water',\n icon: [384, 512, [], \"e4f4\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3l166.6 0c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0L32 0zM73 156.5L66.4 64l251.3 0L311 156.5l-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0c-20.9-10.4-45.5-10.4-66.4 0c-19.4 9.7-42.2 9.7-61.6 0L73 156.5z\"]\n};\nconst faOilWell = {\n prefix: 'fas',\n iconName: 'oil-well',\n icon: [576, 512, [], \"e532\", \"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4L308.5 167.5l-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39L96 222.6 96 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 264-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-137.3 0L340 257.5l-62.2 16.1L305.3 352l-66.6 0L265 277l-74.6 19.3L137.3 448 96 448l0-159.2 337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l11.2-32 111.4 0 11.2 32-133.8 0z\"]\n};\nconst faVault = {\n prefix: 'fas',\n iconName: 'vault',\n icon: [576, 512, [], \"e2c5\", \"M64 0C28.7 0 0 28.7 0 64L0 416c0 35.3 28.7 64 64 64l16 0 16 32 64 0 16-32 224 0 16 32 64 0 16-32 16 0c35.3 0 64-28.7 64-64l0-352c0-35.3-28.7-64-64-64L64 0zM224 320a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-240a160 160 0 1 1 0 320 160 160 0 1 1 0-320zM480 221.3L480 336c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-114.7c-18.6-6.6-32-24.4-32-45.3c0-26.5 21.5-48 48-48s48 21.5 48 48c0 20.9-13.4 38.7-32 45.3z\"]\n};\nconst faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [448, 512, [9794], \"f222\", \"M289.8 46.8c3.7-9 12.5-14.8 22.2-14.8l112 0c13.3 0 24 10.7 24 24l0 112c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L321 204.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176S0 401.2 0 304s78.8-176 176-176c37 0 71.4 11.4 99.8 31l52.6-52.6L295 73c-6.9-6.9-8.9-17.2-5.2-26.2zM400 80s0 0 0 0s0 0 0 0s0 0 0 0zM176 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n};\nconst faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [448, 512, [128701], \"f7d8\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48l8 0 0 148.9c-1.9 1.4-3.8 2.9-5.6 4.4C10.9 214.5 0 232.9 0 256c0 46.9 14.3 84.1 37 112.5c14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3l256 0c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8c22.7-28.4 37-65.5 37-112.5c0-23.1-10.9-41.5-26.4-54.6c-1.8-1.5-3.7-3-5.6-4.4L416 48l8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 0zM384 256.3c0 1-.3 2.6-3.8 5.6c-4.8 4.1-14 9-29.3 13.4C320.5 284 276.1 288 224 288s-96.5-4-126.9-12.8c-15.3-4.4-24.5-9.3-29.3-13.4c-3.5-3-3.8-4.6-3.8-5.6l0-.3c0 0 0-.1 0-.1c0-1 0-2.5 3.8-5.8c4.8-4.1 14-9 29.3-13.4C127.5 228 171.9 224 224 224s96.5 4 126.9 12.8c15.3 4.4 24.5 9.3 29.3 13.4c3.8 3.2 3.8 4.8 3.8 5.8c0 0 0 .1 0 .1l0 .3zM328.2 384l-.2 .5 0-.5 .2 0zM112 64l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faPlaneCircleXmark = {\n prefix: 'fas',\n iconName: 'plane-circle-xmark',\n icon: [640, 512, [], \"e557\", \"M256 0c-35 0-64 59.5-64 93.7l0 84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9l0 65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8l0 42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3l0-84.6C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [320, 512, [165, \"cny\", \"jpy\", \"rmb\", \"yen\"], \"f157\", \"M58.6 46.3C48.8 31.5 29 27.6 14.2 37.4S-4.4 67 5.4 81.8L100.2 224 48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0 0 32-80 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 0-32 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-52.2 0L314.6 81.8c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L160 198.3 58.6 46.3z\"]\n};\nconst faCny = faYenSign;\nconst faJpy = faYenSign;\nconst faRmb = faYenSign;\nconst faYen = faYenSign;\nconst faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [8381, \"rouble\", \"rub\", \"ruble\"], \"f158\", \"M96 32C78.3 32 64 46.3 64 64l0 192-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-32 112 0c79.5 0 144-64.5 144-144s-64.5-144-144-144L96 32zM240 256l-112 0 0-160 112 0c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nconst faRouble = faRubleSign;\nconst faRub = faRubleSign;\nconst faRuble = faRubleSign;\nconst faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nconst faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 256a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faFaceLaughWink = {\n prefix: 'fas',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nconst faLaughWink = faFaceLaughWink;\nconst faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [640, 512, [], \"f7ab\", \"M64 464l0-147.1c0-108.4 68.3-205.1 170.5-241.3L404.2 15.5C425.6 7.9 448 23.8 448 46.4c0 11-5.5 21.2-14.6 27.3L400 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5c-16 16-37.8 25.1-60.5 25.1l-3.4 0c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4c0 0 0 0-.1 0c0 0 0 0 0 0c-6.3 0-12.5-.5-18.6-1.5c-3.6-.6-7.2-1.4-10.7-2.3c0 0 0 0 0 0c-28.9-7.8-53.1-26.8-67.8-52.2c-4.4-7.6-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4c0 20.3-16.5 36.8-36.8 36.8L112 512c-26.5 0-48-21.5-48-48zM392 224a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faBoreHole = {\n prefix: 'fas',\n iconName: 'bore-hole',\n icon: [512, 512, [], \"e4c3\", \"M256 0c-17.7 0-32 14.3-32 32l0 264.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4L288 32c0-17.7-14.3-32-32-32zM48 128c-26.5 0-48 21.5-48 48L0 464c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48l-80 0c-17.7 0-32 14.3-32 32l0 192c0 53-43 96-96 96s-96-43-96-96l0-192c0-17.7-14.3-32-32-32l-80 0z\"]\n};\nconst faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [576, 512, [], \"f275\", \"M64 32C46.3 32 32 46.3 32 64l0 240 0 48 0 80c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-128 0-151.8c0-18.2-19.4-29.7-35.4-21.1L352 215.4l0-63.2c0-18.2-19.4-29.7-35.4-21.1L160 215.4 160 64c0-17.7-14.3-32-32-32L64 32z\"]\n};\nconst faCircleDown = {\n prefix: 'fas',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM244.7 395.3l-112-112c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9l64 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 64 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-112 112c-6.2 6.2-16.4 6.2-22.6 0z\"]\n};\nconst faArrowAltCircleDown = faCircleDown;\nconst faArrowsTurnToDots = {\n prefix: 'fas',\n iconName: 'arrows-turn-to-dots',\n icon: [512, 512, [], \"e4c1\", \"M249.4 25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 96 416 96c53 0 96 43 96 96l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-17.7-14.3-32-32-32l-146.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm13.3 256l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM384 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192A64 64 0 1 1 64 64a64 64 0 1 1 0 128z\"]\n};\nconst faFlorinSign = {\n prefix: 'fas',\n iconName: 'florin-sign',\n icon: [384, 512, [], \"e184\", \"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224 64 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l37.3 0c38.8 0 73.7-23.3 88.6-59.1L213.3 288 320 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 45.1-108.3c5-11.9 16.6-19.7 29.5-19.7L352 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-37.3 0z\"]\n};\nconst faArrowDownShortWide = {\n prefix: 'fas',\n iconName: 'arrow-down-short-wide',\n icon: [576, 512, [\"sort-amount-desc\", \"sort-amount-down-alt\"], \"f884\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faSortAmountDesc = faArrowDownShortWide;\nconst faSortAmountDownAlt = faArrowDownShortWide;\nconst faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [62774], \"3c\", \"M380.6 81.7c7.9 15.8 1.5 35-14.3 42.9L103.6 256 366.3 387.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-320-160C6.8 279.2 0 268.1 0 256s6.8-23.2 17.7-28.6l320-160c15.8-7.9 35-1.5 42.9 14.3z\"]\n};\nconst faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [448, 512, [8964], \"f107\", \"M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nconst faCarTunnel = {\n prefix: 'fas',\n iconName: 'car-tunnel',\n icon: [512, 512, [], \"e4de\", \"M256 0C114.6 0 0 114.6 0 256L0 448c0 35.3 28.7 64 64 64l42.8 0c-6.6-5.9-10.8-14.4-10.8-24l0-112c0-20.8 11.3-38.9 28.1-48.6l21-64.7c7.5-23.1 29-38.7 53.3-38.7l115.2 0c24.3 0 45.8 15.6 53.3 38.7l21 64.7c16.8 9.7 28.2 27.8 28.2 48.6l0 112c0 9.6-4.2 18.1-10.8 24l42.8 0c35.3 0 64-28.7 64-64l0-192C512 114.6 397.4 0 256 0zM362.8 512c-6.6-5.9-10.8-14.4-10.8-24l0-40-192 0 0 40c0 9.6-4.2 18.1-10.8 24l213.7 0zM190.8 277.5L177 320l158 0-13.8-42.5c-1.1-3.3-4.1-5.5-7.6-5.5l-115.2 0c-3.5 0-6.5 2.2-7.6 5.5zM168 408a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm200-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M0 224.2C0 100.6 100.2 0 224 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8L448 320s0 0 0 0l0 32L339.2 365.6c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9L448 416l0 16c0 26.5-21.5 48-48 48l-80 0 0 8c0 13.3-10.7 24-24 24l-40 0s0 0 0 0L96 512c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm352-.2a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM464 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm152-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM592 480a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 312a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [448, 512, [], \"f7a4\", \"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nconst faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2l144 0c26.5 0 48-21.5 48-48c0-18.5-10.5-34.6-25.9-42.6C497 236.6 504 223.1 504 208c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48l-97.5 0c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7l0 38.3 0 48 0 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 384l64 0c17.7 0 32-14.3 32-32l0-224c0-17.7-14.3-32-32-32L32 96C14.3 96 0 110.3 0 128L0 352c0 17.7 14.3 32 32 32z\"]\n};\nconst faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l362.8 0c-5.4-9.4-8.6-20.3-8.6-32l0-128c0-2.1 .1-4.2 .3-6.3c-31-26-71-41.7-114.6-41.7l-91.4 0zM528 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faArrowRightLong = {\n prefix: 'fas',\n iconName: 'arrow-right-long',\n icon: [512, 512, [\"long-arrow-right\"], \"f178\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nconst faLongArrowRight = faArrowRightLong;\nconst faAnchorCircleXmark = {\n prefix: 'fas',\n iconName: 'anchor-circle-xmark',\n icon: [640, 512, [], \"e4ac\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2L320 448l0-80 0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faEllipsis = {\n prefix: 'fas',\n iconName: 'ellipsis',\n icon: [448, 512, [\"ellipsis-h\"], \"f141\", \"M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nconst faEllipsisH = faEllipsis;\nconst faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M215.5 224c29.2-18.4 48.5-50.9 48.5-88c0-57.4-46.6-104-104-104S56 78.6 56 136c0 37.1 19.4 69.6 48.5 88L96 224c-17.7 0-32 14.3-32 32c0 16.5 12.5 30 28.5 31.8L80 400l160 0L227.5 287.8c16-1.8 28.5-15.3 28.5-31.8c0-17.7-14.3-32-32-32l-8.5 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512l242.7 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L256 432 64 432 22.6 473.4z\"]\n};\nconst faKitMedical = {\n prefix: 'fas',\n iconName: 'kit-medical',\n icon: [576, 512, [\"first-aid\"], \"f479\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l32 0L96 32 64 32zm64 0l0 448 320 0 0-448L128 32zM512 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-32 0 0 448 32 0zM256 176c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faFirstAid = faKitMedical;\nconst faPersonThroughWindow = {\n prefix: 'fas',\n iconName: 'person-through-window',\n icon: [640, 512, [], \"e5a9\", \"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4C167.6 186.5 128 245 128 310.2l0 73.8s0 0 0 0l-64 0L64 64zm288 0l224 0 0 320-67.7 0-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4c44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320l-45.8 0 42.7 64L592 448c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 400c0 26.5 21.5 48 48 48l260.2 0 33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4L310.5 336l74.6 0 40 48zm-159.5 0L192 384s0 0 0 0l0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [129520], \"f552\", \"M176 88l0 40 160 0 0-40c0-4.4-3.6-8-8-8L184 80c-4.4 0-8 3.6-8 8zm-48 40l0-40c0-30.9 25.1-56 56-56l144 0c30.9 0 56 25.1 56 56l0 40 28.1 0c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9l0 92.1-128 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32-128 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L0 320l0-92.1c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1l28.1 0zM0 416l0-64 128 0c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0 0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64z\"]\n};\nconst faHandsHoldingCircle = {\n prefix: 'fas',\n iconName: 'hands-holding-circle',\n icon: [640, 512, [], \"e4fb\", \"M320 0a128 128 0 1 1 0 256A128 128 0 1 1 320 0zM40 64c22.1 0 40 17.9 40 40l0 40 0 80 0 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2c0 0 0 0 0 0l25.3 25.3c21 21 32.8 49.5 32.8 79.2l0 78.9c0 26.5-21.5 48-48 48l-66.7 0c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5L0 224l0-64 0-56C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40l0 56 0 64 0 101.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7L400 512c-26.5 0-48-21.5-48-48l0-78.9c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3c0 0 0 0 0 0l15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3l0-40.2 0-80 0-40c0-22.1 17.9-40 40-40z\"]\n};\nconst faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M256 0c53 0 96 43 96 96l0 3.6c0 15.7-12.7 28.4-28.4 28.4l-135.1 0c-15.7 0-28.4-12.7-28.4-28.4l0-3.6c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4l112 0c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5l64.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6L272 240c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 239.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64.3 0c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nconst faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M64 32C28.7 32 0 60.7 0 96l0 32 576 0 0-32c0-35.3-28.7-64-64-64L64 32zM576 224L0 224 0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-192zM112 352l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faCreditCardAlt = faCreditCard;\nconst faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [128664, \"automobile\"], \"f1b9\", \"M135.2 117.4L109.1 192l293.8 0-26.1-74.6C372.3 104.6 360.2 96 346.6 96L165.4 96c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32l181.2 0c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2l0 144 0 48c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-48L96 400l0 48c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-48L0 256c0-26.7 16.4-49.6 39.6-59.2zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faAutomobile = faCar;\nconst faHandHoldingHand = {\n prefix: 'fas',\n iconName: 'hand-holding-hand',\n icon: [576, 512, [], \"e4f7\", \"M7.8 207.7c-13.1-17.8-9.3-42.8 8.5-55.9L142.9 58.5C166.2 41.3 194.5 32 223.5 32L384 32l160 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-36.8 0-44.9 36c-22.7 18.2-50.9 28-80 28L304 224l-16 0-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-120.6 0L63.7 216.2c-17.8 13.1-42.8 9.3-55.9-8.5zM382.4 160c0 0 0 0 0 0l.9 0c-.3 0-.6 0-.9 0zM568.2 304.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 453.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 480 32 480c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 352c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faBookOpenReader = {\n prefix: 'fas',\n iconName: 'book-open-reader',\n icon: [512, 512, [\"book-reader\"], \"f5da\", \"M160 96a96 96 0 1 1 192 0A96 96 0 1 1 160 96zm80 152l0 264-48.4-24.2c-20.9-10.4-43.5-17-66.8-19.3l-96-9.6C12.5 457.2 0 443.5 0 427L0 224c0-17.7 14.3-32 32-32l30.3 0c63.6 0 125.6 19.6 177.7 56zm32 264l0-264c52.1-36.4 114.1-56 177.7-56l30.3 0c17.7 0 32 14.3 32 32l0 203c0 16.4-12.5 30.2-28.8 31.8l-96 9.6c-23.2 2.3-45.9 8.9-66.8 19.3L272 512z\"]\n};\nconst faBookReader = faBookOpenReader;\nconst faMountainSun = {\n prefix: 'fas',\n iconName: 'mountain-sun',\n icon: [640, 512, [], \"e52f\", \"M560 160A80 80 0 1 0 560 0a80 80 0 1 0 0 160zM55.9 512l325.2 0 75 0 122.8 0c33.8 0 61.1-27.4 61.1-61.1c0-11.2-3.1-22.2-8.9-31.8l-132-216.3C495 196.1 487.8 192 480 192s-15 4.1-19.1 10.7l-48.2 79L286.8 81c-6.6-10.6-18.3-17-30.8-17s-24.1 6.4-30.8 17L8.6 426.4C3 435.3 0 445.6 0 456.1C0 487 25 512 55.9 512z\"]\n};\nconst faArrowsLeftRightToLine = {\n prefix: 'fas',\n iconName: 'arrows-left-right-to-line',\n icon: [640, 512, [], \"e4ba\", \"M32 64c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 96C0 78.3 14.3 64 32 64zm214.6 73.4c12.5 12.5 12.5 32.8 0 45.3L205.3 224l229.5 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 288l-229.5 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0zM640 96l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-320c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [512, 512, [], \"f6cf\", \"M48.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L201.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L47.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM16 171.7l0 123.5c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L40.2 158C29.6 151.6 16 159.3 16 171.7zM310.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L322.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM496 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4l0-123.5zm-49.3 246L286.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9l0 52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM233.2 512c3.7 0 6.8-3 6.8-6.8l0-52.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM41.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L30.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L402.9 238.1c-6.5-10-21.4-9.6-27.3 .8L290.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9l-145.7 0c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM174.4 176l163.2 0c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2l-3.2 0c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z\"]\n};\nconst faTruckDroplet = {\n prefix: 'fas',\n iconName: 'truck-droplet',\n icon: [640, 512, [], \"e58c\", \"M0 48C0 21.5 21.5 0 48 0L368 0c26.5 0 48 21.5 48 48l0 48 50.7 0c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3l0 18.7 0 32 0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 48zM416 256l128 0 0-18.7L466.7 160 416 160l0 96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 272c39.8 0 72-29.6 72-66c0-27-39.4-82.9-59.9-110.3c-6.1-8.2-18.1-8.2-24.2 0C175.4 123 136 179 136 206c0 36.5 32.2 66 72 66z\"]\n};\nconst faFileCircleXmark = {\n prefix: 'fas',\n iconName: 'file-circle-xmark',\n icon: [576, 512, [], \"e5a1\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nconst faTemperatureArrowUp = {\n prefix: 'fas',\n iconName: 'temperature-arrow-up',\n icon: [576, 512, [\"temperature-up\"], \"e040\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5L128 112zM176 0C114.1 0 64 50.1 64 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L288 112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3L192 112c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 210.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM480 160l32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 288c0 17.7 14.3 32 32 32s32-14.3 32-32l0-288z\"]\n};\nconst faTemperatureUp = faTemperatureArrowUp;\nconst faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [127941], \"f5a2\", \"M4.1 38.2C1.4 34.2 0 29.4 0 24.6C0 11 11 0 24.6 0L133.9 0c11.2 0 21.7 5.9 27.4 15.5l68.5 114.1c-48.2 6.1-91.3 28.6-123.4 61.9L4.1 38.2zm503.7 0L405.6 191.5c-32.1-33.3-75.2-55.8-123.4-61.9L350.7 15.5C356.5 5.9 366.9 0 378.1 0L487.4 0C501 0 512 11 512 24.6c0 4.8-1.4 9.6-4.1 13.6zM80 336a176 176 0 1 1 352 0A176 176 0 1 1 80 336zm184.4-94.9c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1L168 298.9c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.2 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9l44.8-23.6c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.6-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1l-22.4-45.4z\"]\n};\nconst faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [128716], \"f236\", \"M32 32c17.7 0 32 14.3 32 32l0 256 224 0 0-160c0-17.7 14.3-32 32-32l224 0c53 0 96 43 96 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-224 0-32 0L64 416l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 46.3 14.3 32 32 32zm144 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faSquareH = {\n prefix: 'fas',\n iconName: 'square-h',\n icon: [448, 512, [\"h-square\"], \"f0fd\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM336 152l0 104 0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80-128 0 0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24l0 80 128 0 0-80c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faHSquare = faSquareH;\nconst faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M319.4 372c48.5-31.3 80.6-85.9 80.6-148c0-97.2-78.8-176-176-176S48 126.8 48 224c0 62.1 32.1 116.6 80.6 148c1.2 17.3 4 38 7.2 57.1l.2 1C56 395.8 0 316.5 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224c0 92.5-56 171.9-136 206.1l.2-1.1c3.1-19.2 6-39.8 7.2-57zm-2.3-38.1c-1.6-5.7-3.9-11.1-7-16.2c-5.8-9.7-13.5-17-21.9-22.4c19.5-17.6 31.8-43 31.8-71.3c0-53-43-96-96-96s-96 43-96 96c0 28.3 12.3 53.8 31.8 71.3c-8.4 5.4-16.1 12.7-21.9 22.4c-3.1 5.1-5.4 10.5-7 16.2C99.8 307.5 80 268 80 224c0-79.5 64.5-144 144-144s144 64.5 144 144c0 44-19.8 83.5-50.9 109.9zM224 312c32.9 0 64 8.6 64 43.8c0 33-12.9 104.1-20.6 132.9c-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8c0-35.1 31.1-43.8 64-43.8zm0-144a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nconst faTemperatureFull = {\n prefix: 'fas',\n iconName: 'temperature-full',\n icon: [320, 512, [\"temperature-4\", \"thermometer-4\", \"thermometer-full\"], \"f2c7\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3L144 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 210.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature4 = faTemperatureFull;\nconst faThermometer4 = faTemperatureFull;\nconst faThermometerFull = faTemperatureFull;\nconst faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32l0 19.2C119 66 64 130.6 64 208l0 18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416l384 0c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8l0-18.8c0-77.4-55-142-128-156.8L256 32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nconst faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80l0 80c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-128zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l15.3 0 89.6 128L47.3 384 32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-15.3 0L215.1 256l89.6-128 15.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64L32 64z\"]\n};\nconst faPlugCircleXmark = {\n prefix: 'fas',\n iconName: 'plug-circle-xmark',\n icon: [576, 512, [], \"e560\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [512, 512, [], \"f621\", \"M208 32c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 140.9 122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.6 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1 304 480c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-140.9L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4L208 32z\"]\n};\nconst faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M228.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C76.1 30.2 64 46 64 64c0 107.4 37.8 206 100.8 283.1L9.2 469.1c-10.4 8.2-12.3 23.3-4.1 33.7s23.3 12.3 33.7 4.1l592-464c10.4-8.2 12.3-23.3 4.1-33.7s-23.3-12.3-33.7-4.1L253 278c-17.8-21.5-32.9-45.2-45-70.7L257.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96zm96.8 319l-91.3 72C310.7 476 407.1 512 512 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L368.7 368c-15-7.1-29.3-15.2-43-24.3z\"]\n};\nconst faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M0 64C0 28.7 28.7 0 64 0L352 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 192c-35.3 0-64-28.7-64-64L0 64zM160 352c0-17.7 14.3-32 32-32l0-16c0-44.2 35.8-80 80-80l144 0c17.7 0 32-14.3 32-32l0-32 0-90.5c37.3 13.2 64 48.7 64 90.5l0 32c0 53-43 96-96 96l-144 0c-8.8 0-16 7.2-16 16l0 16c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-128z\"]\n};\nconst faHandshakeAngle = {\n prefix: 'fas',\n iconName: 'handshake-angle',\n icon: [640, 512, [\"hands-helping\"], \"f4c4\", \"M544 248l0 3.3 69.7-69.7c21.9-21.9 21.9-57.3 0-79.2L535.6 24.4c-21.9-21.9-57.3-21.9-79.2 0L416.3 64.5c-2.7-.3-5.5-.5-8.3-.5L296 64c-37.1 0-67.6 28-71.6 64l-.4 0 0 120c0 22.1 17.9 40 40 40s40-17.9 40-40l0-72c0 0 0-.1 0-.1l0-15.9 16 0 136 0c0 0 0 0 .1 0l7.9 0c44.2 0 80 35.8 80 80l0 8zM336 192l0 56c0 39.8-32.2 72-72 72s-72-32.2-72-72l0-118.6c-35.9 6.2-65.8 32.3-76 68.2L99.5 255.2 26.3 328.4c-21.9 21.9-21.9 57.3 0 79.2l78.1 78.1c21.9 21.9 57.3 21.9 79.2 0l37.7-37.7c.9 0 1.8 .1 2.7 .1l160 0c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16l2.7 0c26.5 0 48-21.5 48-48c0-12.8-5-24.4-13.2-33c25.7-5 45.1-27.6 45.2-54.8l0-.4c-.1-30.8-25.1-55.8-56-55.8c0 0 0 0 0 0l-120 0z\"]\n};\nconst faHandsHelping = faHandshakeAngle;\nconst faLocationDot = {\n prefix: 'fas',\n iconName: 'location-dot',\n icon: [384, 512, [\"map-marker-alt\"], \"f3c5\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faMapMarkerAlt = faLocationDot;\nconst faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128z\"]\n};\nconst faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [62769], \"3e\", \"M3.4 81.7c-7.9 15.8-1.5 35 14.3 42.9L280.5 256 17.7 387.4C1.9 395.3-4.5 414.5 3.4 430.3s27.1 22.2 42.9 14.3l320-160c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-320-160c-15.8-7.9-35-1.5-42.9 14.3z\"]\n};\nconst faPersonSwimming = {\n prefix: 'fas',\n iconName: 'person-swimming',\n icon: [576, 512, [127946, \"swimmer\"], \"f5c4\", \"M309.5 178.4L447.9 297.1c-1.6 .9-3.2 2-4.8 3c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-10.1 0-21.1-2.2-31.9-6.2C163.1 193.2 262.2 96 384 96l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-26.9 0-52.3 6.6-74.5 18.4zM160 160A64 64 0 1 1 32 160a64 64 0 1 1 128 0zM306.5 325.9C329 341.4 356.5 352 384 352c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 405.7 417 416 384 416c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 341.2 165.1 352 192 352c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faSwimmer = faPersonSwimming;\nconst faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [384, 512, [8595], \"f063\", \"M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nconst faDroplet = {\n prefix: 'fas',\n iconName: 'droplet',\n icon: [384, 512, [128167, \"tint\"], \"f043\", \"M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0l1.8 0c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z\"]\n};\nconst faTint = faDroplet;\nconst faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [576, 512, [], \"f12d\", \"M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7L288 480l9.4 0L512 480c17.7 0 32-14.3 32-32s-14.3-32-32-32l-124.1 0L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416l-9.4 0-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z\"]\n};\nconst faEarthAmericas = {\n prefix: 'fas',\n iconName: 'earth-americas',\n icon: [512, 512, [127758, \"earth\", \"earth-america\", \"globe-americas\"], \"f57d\", \"M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5l0 39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9l0 39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7l0-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1L257 256c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faEarth = faEarthAmericas;\nconst faEarthAmerica = faEarthAmericas;\nconst faGlobeAmericas = faEarthAmericas;\nconst faPersonBurst = {\n prefix: 'fas',\n iconName: 'person-burst',\n icon: [640, 512, [], \"e53b\", \"M480 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-223.1 28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6l-29.7 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L408 256.9 408 480c0 17.7 14.3 32 32 32s32-14.3 32-32zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.3-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nconst faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [128330], \"f4ba\", \"M160.8 96.5c14 17 31 30.9 49.5 42.2c25.9 15.8 53.7 25.9 77.7 31.6l0-31.5C265.8 108.5 250 71.5 248.6 28c-.4-11.3-7.5-21.5-18.4-24.4c-7.6-2-15.8-.2-21 5.8c-13.3 15.4-32.7 44.6-48.4 87.2zM320 144l0 30.6s0 0 0 0l0 1.3s0 0 0 0l0 32.1c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8 .9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5L245.6 448l74.4 0c88.4 0 160-71.6 160-160l0-160 29.9-44.9c1.3-2 2.1-4.4 2.1-6.8c0-6.8-5.5-12.3-12.3-12.3L400 64c-44.2 0-80 35.8-80 80zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [576, 512, [\"battery-0\"], \"f244\", \"M80 160c-8.8 0-16 7.2-16 16l0 160c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-160c0-8.8-7.2-16-16-16L80 160zM0 176c0-44.2 35.8-80 80-80l384 0c44.2 0 80 35.8 80 80l0 16c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l0 16c0 44.2-35.8 80-80 80L80 416c-44.2 0-80-35.8-80-80L0 176z\"]\n};\nconst faBattery0 = faBatteryEmpty;\nconst faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [129510], \"f696\", \"M175.2 476.6c-9.7-18-15.2-38.7-15.2-60.6c0-40.3 19-78.2 51.2-102.4l64-48c8.1-6 12.8-15.5 12.8-25.6l0-144L128 96l0 144c0 20.1-9.5 39.1-25.6 51.2l-64 48C14.2 357.3 0 385.8 0 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l21.6-16.2zM128 64l160 0 0-16c0-14.5 3.9-28.2 10.7-39.9C291 3 281.9 0 272 0L176 0c-26.5 0-48 21.5-48 48l0 16zM320 96l0 144c0 20.1-9.5 39.1-25.6 51.2l-64 48C206.2 357.3 192 385.8 192 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l115.2-86.4C493 382.2 512 344.3 512 304l0-208L320 96zM512 64l0-16c0-26.5-21.5-48-48-48L368 0c-26.5 0-48 21.5-48 48l0 16 192 0z\"]\n};\nconst faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [512, 512, [], \"f01c\", \"M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-92.1c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32L121 32zm0 64l270 0 48 192-51.2 0c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7l-120.4 0c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7L73 288 121 96z\"]\n};\nconst faSection = {\n prefix: 'fas',\n iconName: 'section',\n icon: [256, 512, [], \"e447\", \"M64.9 96C67.1 84.4 73.7 76.2 86 70.6c13.8-6.2 34.8-8.9 61.2-4.5c8.8 1.4 36.1 7.1 44.1 9.3c17 4.8 34.7-5.1 39.5-22.2s-5.1-34.7-22.2-39.5c-11.1-3.1-41-9.2-50.9-10.8C123-2.7 88.3-.6 59.7 12.3C29.9 25.8 7.5 50.9 1.6 86.5c-.1 .5-.2 1.1-.2 1.6c-2.2 19.7 .3 37.9 8.1 54.1c7.7 16.1 19.4 28 32 36.9c.6 .5 1.3 .9 2 1.4C22.3 194.2 6.5 215.1 1.7 243c-.1 .6-.2 1.1-.2 1.7c-2.3 19.3 .4 37.1 8.4 53c7.9 15.6 19.8 27 32.3 35.5c22.4 15.2 51.9 24 75.4 31c0 0 0 0 0 0l3.7 1.1c27.2 8.2 46.9 14.6 59.4 23.8c5.5 4 8.2 7.6 9.5 10.9c1.3 3.2 2.6 8.6 .9 18.1c-1.7 10.1-7.7 18-20.7 23.5c-14 6-35.4 8.5-62 4.4c-12.8-2.1-35.1-9.7-54.1-16.2c0 0 0 0 0 0c-4.3-1.5-8.5-2.9-12.3-4.2C25.3 420 7.2 429.1 1.6 445.8s3.5 34.9 20.3 40.5c2.6 .8 5.7 1.9 9.2 3.1c18.6 6.3 48.5 16.6 67.3 19.6c0 0 0 0 0 0l.2 0c34.5 5.4 68.8 3.4 97.2-8.7c29.4-12.6 52.5-36.5 58.5-71.5c3.3-19.3 1.9-37.4-5-53.9c-6.3-15-16.4-26.4-27.6-35.2c16.5-13.9 28.5-33.2 32.6-58.2c3.2-19.8 1.9-38.3-4.8-55.1c-6.7-16.8-17.8-29.4-30.2-39c-22.8-17.6-53.6-27.4-77.7-35l-1.4-.5c-27.4-8.7-47.8-15.3-61.5-25c-6.1-4.4-9.5-8.5-11.4-12.4c-1.8-3.7-3.2-9.3-2.3-18.5zm76.7 208.5l-.6-.2-1.4-.4c-27.4-8.2-47.9-14.5-61.7-23.8c-6.2-4.2-9.3-7.9-11-11.3c-1.5-3-2.9-7.7-2.1-15.7c1.9-9.7 7.9-17.3 20.5-22.7c14-6 35.4-8.5 62.1-4.3l16.4 2.6c6.3 2.9 11.7 6 16.2 9.5c5.5 4.2 8.4 8.2 10 12.2c1.6 4 2.8 10.4 1.1 20.9c-2.4 14.7-12.8 26.4-37.1 31l-12.4 2.3z\"]\n};\nconst faGaugeHigh = {\n prefix: 'fas',\n iconName: 'gauge-high',\n icon: [512, 512, [62461, \"tachometer-alt\", \"tachometer-alt-fast\"], \"f625\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faTachometerAlt = faGaugeHigh;\nconst faTachometerAltFast = faGaugeHigh;\nconst faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M215.4 96L144 96l-36.2 0L96 96l0 8.8L96 144l0 40.4 0 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3 48 96c0-26.5 21.5-48 48-48l76.6 0 49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48 416 48c26.5 0 48 21.5 48 48l0 44.3 22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4l0-89 0-40.4 0-39.2 0-8.8-11.8 0L368 96l-71.4 0-81.3 0zM0 448L0 242.1 217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1 512 448s0 0 0 0c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64c0 0 0 0 0 0zM176 160l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M192 48c0-26.5 21.5-48 48-48L400 0c26.5 0 48 21.5 48 48l0 464-80 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-80 0 0-464zM48 96l112 0 0 416L48 512c-26.5 0-48-21.5-48-48L0 320l80 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L0 288l0-64 80 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L0 192l0-48c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48l0 48-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 144c0 26.5-21.5 48-48 48l-112 0 0-416 112 0zM312 64c-8.8 0-16 7.2-16 16l0 24-24 0c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l24 0 0 24c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-24 24 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-24 0 0-24c0-8.8-7.2-16-16-16l-16 0z\"]\n};\nconst faHospitalAlt = faHospital;\nconst faHospitalWide = faHospital;\nconst faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l64 64c12.5 12.5 12.5 32.8 0 45.3c-11.8 11.8-30.7 12.5-43.2 1.9l-9.5 9.5-48.8 48.8c-9.2 9.2-11.5 22.9-8.6 35.6c9.4 40.9-1.9 85.6-33.8 117.5L197.3 493.3c-25 25-65.5 25-90.5 0l-88-88c-25-25-25-65.5 0-90.5L180.2 153.3c31.9-31.9 76.6-43.1 117.5-33.8c12.6 2.9 26.4 .5 35.5-8.6l48.8-48.8 9.5-9.5c-10.6-12.6-10-31.4 1.9-43.2zM99.3 347.3l65.4 65.4c6.2 6.2 16.4 6.2 22.6 0l97.4-97.4c6.2-6.2 6.2-16.4 0-22.6l-65.4-65.4c-6.2-6.2-16.4-6.2-22.6 0L99.3 324.7c-6.2 6.2-6.2 16.4 0 22.6z\"]\n};\nconst faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [448, 512, [9820], \"f447\", \"M32 192L32 48c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 40c0 4.4 3.6 8 8 8l32 0c4.4 0 8-3.6 8-8l0-40c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 40c0 4.4 3.6 8 8 8l32 0c4.4 0 8-3.6 8-8l0-40c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 144c0 10.1-4.7 19.6-12.8 25.6L352 256l16 144L80 400 96 256 44.8 217.6C36.7 211.6 32 202.1 32 192zm176 96l32 0c8.8 0 16-7.2 16-16l0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 8.8 7.2 16 16 16zM22.6 473.4L64 432l320 0 41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6L38.6 512C26.1 512 16 501.9 16 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nconst faBarsStaggered = {\n prefix: 'fas',\n iconName: 'bars-staggered',\n icon: [512, 512, [\"reorder\", \"stream\"], \"f550\", \"M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faReorder = faBarsStaggered;\nconst faStream = faBarsStaggered;\nconst faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [9784], \"f655\", \"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.5 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.5-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [127789], \"f80f\", \"M488.6 23.4c31.2 31.2 31.2 81.9 0 113.1l-352 352c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1l352-352c31.2-31.2 81.9-31.2 113.1 0zM443.3 92.7c-6.2-6.2-16.4-6.2-22.6 0c-12.5 12.5-23.8 15.1-37.5 17.6l-2.5 .4c-13.8 2.5-31.6 5.6-48 22c-16.7 16.7-20.9 36-24.1 50.9c0 0 0 0 0 0s0 0 0 0l-.2 1c-3.4 15.6-6 26.4-15.7 36.1s-20.5 12.3-36.1 15.7l-1 .2c-14.9 3.2-34.2 7.4-50.9 24.1s-20.9 36-24.1 50.9l-.2 1c-3.4 15.6-6 26.4-15.7 36.1c-9.2 9.2-18 10.8-32.7 13.4c0 0 0 0 0 0l-.9 .2c-15.6 2.8-34.9 6.9-54.4 26.4c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0c12.5-12.5 23.8-15.1 37.5-17.6l2.5-.4c13.8-2.5 31.6-5.6 48-22c16.7-16.7 20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1s20.5-12.3 36.1-15.7l1-.2c14.9-3.2 34.2-7.4 50.9-24.1s20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1c9.2-9.2 18-10.8 32.7-13.4l.9-.2c15.6-2.8 34.9-6.9 54.4-26.4c6.2-6.2 6.2-16.4 0-22.6zM191.2 479.2l288-288L495 207c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L289 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17l-15.8-15.8zM17 305C6.1 294.1 0 279.4 0 264s6.1-30.1 17-41L223 17C233.9 6.1 248.6 0 264 0s30.1 6.1 41 17l15.8 15.8-288 288L17 305z\"]\n};\nconst faPersonWalkingWithCane = {\n prefix: 'fas',\n iconName: 'person-walking-with-cane',\n icon: [512, 512, [\"blind\"], \"f29d\", \"M176 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8.4 32c-36.4 0-69.6 20.5-85.9 53.1L35.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L128 231.6l0 43.2c0 17 6.7 33.3 18.7 45.3L224 397.3l0 82.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-89.4c0-12.7-5.1-24.9-14.1-33.9L224 306.7l0-93.4 70.4 93.9c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8L268.8 166.4C250.7 142.2 222.2 128 192 128l-24.4 0zM128.3 346.8L97 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l22-88.2-52.8-52.8zM450.8 505.1c5 7.3 15 9.1 22.3 4s9.1-15 4-22.3L358.9 316.1c-2.8 3.8-6.1 7.3-10.1 10.3c-5 3.8-10.5 6.4-16.2 7.9L450.8 505.1z\"]\n};\nconst faBlind = faPersonWalkingWithCane;\nconst faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [129345], \"f569\", \"M501.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L370.2 104.5C335.8 98.7 297 96 256 96C114.6 96 0 128 0 208L0 368c0 31.3 27.4 58.8 72 78.7L72 344c0-13.3 10.7-24 24-24s24 10.7 24 24l0 119.4c33 8.9 71.1 14.5 112 16.1L232 376c0-13.3 10.7-24 24-24s24 10.7 24 24l0 103.5c40.9-1.6 79-7.2 112-16.1L392 344c0-13.3 10.7-24 24-24s24 10.7 24 24l0 102.7c44.6-19.9 72-47.4 72-78.7l0-160c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM307.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5C458.4 181.8 464 197.4 464 208c0 .8-2.7 17.2-46 35.9C379.1 260.7 322 272 256 272s-123.1-11.3-162-28.1C50.7 225.2 48 208.8 48 208c0-10.6 5.6-26.2 44.4-41.3C130.6 151.9 187.8 144 256 144c18 0 35.1 .5 51.4 1.6z\"]\n};\nconst faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [127848], \"f810\", \"M367.1 160c.6-5.3 .9-10.6 .9-16C368 64.5 303.5 0 224 0S80 64.5 80 144c0 5.4 .3 10.7 .9 16l-.9 0c-26.5 0-48 21.5-48 48s21.5 48 48 48l53.5 0 181 0 53.5 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-.9 0zM96 288L200.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L352 288 96 288z\"]\n};\nconst faHeartCircleBolt = {\n prefix: 'fas',\n iconName: 'heart-circle-bolt',\n icon: [576, 512, [], \"e4fc\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356l35.6 0c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380 376 380c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nconst faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [128224, 128439], \"f1ac\", \"M128 64l0 96 64 0 0-96 194.7 0L416 93.3l0 66.7 64 0 0-66.7c0-17-6.7-33.3-18.7-45.3L432 18.7C420 6.7 403.7 0 386.7 0L192 0c-35.3 0-64 28.7-64 64zM0 160L0 480c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32zm480 32l-352 0 0 288c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32zM256 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [182], \"f1dd\", \"M192 32l64 0 160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352-32 0 0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-32 0c-88.4 0-160-71.6-160-160s71.6-160 160-160z\"]\n};\nconst faCheckToSlot = {\n prefix: 'fas',\n iconName: 'check-to-slot',\n icon: [576, 512, [\"vote-yea\"], \"f772\", \"M96 80c0-26.5 21.5-48 48-48l288 0c26.5 0 48 21.5 48 48l0 304L96 384 96 80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48l16 0 0 128 448 0 0-128 16 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48l0-96z\"]\n};\nconst faVoteYea = faCheckToSlot;\nconst faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8 288 0zM429.9 512c1.1 .1 2.1 .1 3.2 0l-3.2 0z\"]\n};\nconst faBoxesStacked = {\n prefix: 'fas',\n iconName: 'boxes-stacked',\n icon: [576, 512, [62625, \"boxes\", \"boxes-alt\"], \"f468\", \"M248 0L208 0c-26.5 0-48 21.5-48 48l0 112c0 35.3 28.7 64 64 64l128 0c35.3 0 64-28.7 64-64l0-112c0-26.5-21.5-48-48-48L328 0l0 80c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-80zM64 256c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64l0-128c0-35.3-28.7-64-64-64l-40 0 0 80c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-80-40 0zM352 512l160 0c35.3 0 64-28.7 64-64l0-128c0-35.3-28.7-64-64-64l-40 0 0 80c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-80-40 0c-15 0-28.8 5.1-39.7 13.8c4.9 10.4 7.7 22 7.7 34.2l0 160c0 12.2-2.8 23.8-7.7 34.2C323.2 506.9 337 512 352 512z\"]\n};\nconst faBoxes = faBoxesStacked;\nconst faBoxesAlt = faBoxesStacked;\nconst faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [640, 512, [128279, \"chain\"], \"f0c1\", \"M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z\"]\n};\nconst faChain = faLink;\nconst faEarListen = {\n prefix: 'fas',\n iconName: 'ear-listen',\n icon: [512, 512, [\"assistive-listening-systems\"], \"f2a2\", \"M398.3 3.4c-15.8-7.9-35-1.5-42.9 14.3c-7.9 15.8-1.5 34.9 14.2 42.9l.4 .2c.4 .2 1.1 .6 2.1 1.2c2 1.2 5 3 8.7 5.6c7.5 5.2 17.6 13.2 27.7 24.2C428.5 113.4 448 146 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7C441.6 33.2 427.7 22.2 417.3 15c-5.3-3.7-9.7-6.4-13-8.3c-1.6-1-3-1.7-4-2.2c-.5-.3-.9-.5-1.2-.7l-.4-.2-.2-.1c0 0 0 0-.1 0c0 0 0 0 0 0L384 32 398.3 3.4zM128.7 227.5c6.2-56 53.7-99.5 111.3-99.5c61.9 0 112 50.1 112 112c0 29.3-11.2 55.9-29.6 75.9c-17 18.4-34.4 45.1-34.4 78l0 6.1c0 26.5-21.5 48-48 48c-17.7 0-32 14.3-32 32s14.3 32 32 32c61.9 0 112-50.1 112-112l0-6.1c0-9.8 5.4-21.7 17.4-34.7C398.3 327.9 416 286 416 240c0-97.2-78.8-176-176-176C149.4 64 74.8 132.5 65.1 220.5c-1.9 17.6 10.7 33.4 28.3 35.3s33.4-10.7 35.3-28.3zM32 512a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM192 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM208 240c0-17.7 14.3-32 32-32s32 14.3 32 32c0 13.3 10.7 24 24 24s24-10.7 24-24c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nconst faAssistiveListeningSystems = faEarListen;\nconst faTreeCity = {\n prefix: 'fas',\n iconName: 'tree-city',\n icon: [640, 512, [], \"e587\", \"M288 48c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 144 40 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 24 0c26.5 0 48 21.5 48 48l0 224c0 26.5-21.5 48-48 48l-160 0-96 0c-26.5 0-48-21.5-48-48l0-416zm64 32l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM352 272l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM512 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM224 160c0 6-1 11-2 16c20 14 34 38 34 64c0 45-36 80-80 80l-16 0 0 160c0 18-15 32-32 32c-18 0-32-14-32-32l0-160-16 0c-45 0-80-35-80-80c0-26 13-50 33-64c-1-5-1-10-1-16c0-53 42-96 96-96c53 0 96 43 96 96z\"]\n};\nconst faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [384, 512, [9654], \"f04b\", \"M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80L0 432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z\"]\n};\nconst faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416 32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-1.8 0 18-48 159.6 0 18 48-1.8 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-25.8 0L254 52.8zM279.8 304l-111.6 0L224 155.1 279.8 304z\"]\n};\nconst faTableCellsRowLock = {\n prefix: 'fas',\n iconName: 'table-cells-row-lock',\n icon: [640, 512, [], \"e67a\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 224l0 64 88 0 0-64-88 0zm232 0l-88 0 0 64 88 0 0-64zM152 352l-88 0 0 64 88 0 0-64zm56 0l0 64 88 0 0-64-88 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faRupiahSign = {\n prefix: 'fas',\n iconName: 'rupiah-sign',\n icon: [512, 512, [], \"e23d\", \"M0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320 64 320l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 288 0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80L64 96l0 160zm256-96l80 0c61.9 0 112 50.1 112 112s-50.1 112-112 112l-48 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128 0-160c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48l-48 0 0 96 48 0z\"]\n};\nconst faMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'magnifying-glass',\n icon: [512, 512, [128269, \"search\"], \"f002\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"]\n};\nconst faSearch = faMagnifyingGlass;\nconst faTableTennisPaddleBall = {\n prefix: 'fas',\n iconName: 'table-tennis-paddle-ball',\n icon: [512, 512, [127955, \"ping-pong-paddle-ball\", \"table-tennis\"], \"f45d\", \"M416 288c-50.1 0-93.6 28.8-114.6 70.8L68.9 126.3l.6-.6 60.1-60.1c87.5-87.5 229.3-87.5 316.8 0c67.1 67.1 82.7 166.3 46.8 248.3C471.8 297.6 445 288 416 288zM49.3 151.9L290.1 392.7c-1.4 7.5-2.1 15.3-2.1 23.3c0 23.2 6.2 44.9 16.9 63.7c-3 .2-6.1 .3-9.2 .3l-2.7 0c-33.9 0-66.5-13.5-90.5-37.5l-9.8-9.8c-13.1-13.1-34.6-12.4-46.8 1.7L88.2 501c-5.8 6.7-14.2 10.7-23 11s-17.5-3.1-23.8-9.4l-32-32C3.1 464.3-.3 455.7 0 446.9s4.3-17.2 11-23l66.6-57.7c14-12.2 14.8-33.7 1.7-46.8l-9.8-9.8C45.5 285.5 32 252.9 32 219l0-2.7c0-22.8 6.1-44.9 17.3-64.3zM416 320a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faPingPongPaddleBall = faTableTennisPaddleBall;\nconst faTableTennis = faTableTennisPaddleBall;\nconst faPersonDotsFromLine = {\n prefix: 'fas',\n iconName: 'person-dots-from-line',\n icon: [576, 512, [\"diagnoses\"], \"f470\", \"M288 176A88 88 0 1 0 288 0a88 88 0 1 0 0 176zM78.7 372.9c15-12.5 50-34.4 97.3-50.1L176 432l224 0 0-109.3c47.3 15.8 82.3 37.7 97.3 50.1c20.4 17 50.6 14.2 67.6-6.1s14.2-50.6-6.1-67.6c-12-10-30.1-22.5-53.2-35C497.2 278.4 481.7 288 464 288c-26.5 0-48-21.5-48-48c0-4.3 .6-8.4 1.6-12.4C379.1 215.9 335.3 208 288 208c-60.2 0-114.9 12.9-160 29.9c0 .7 0 1.4 0 2.1c0 26.5-21.5 48-48 48c-11.8 0-22.7-4.3-31-11.4c-13.1 8.1-23.7 15.9-31.7 22.5c-20.4 17-23.1 47.2-6.1 67.6s47.2 23.1 67.6 6.1zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24l528 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 464zM224 280a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM96 240a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm368 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faDiagnoses = faPersonDotsFromLine;\nconst faTrashCanArrowUp = {\n prefix: 'fas',\n iconName: 'trash-can-arrow-up',\n icon: [448, 512, [\"trash-restore-alt\"], \"f82a\", \"M163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128l384 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39L200 408c0 13.3 10.7 24 24 24s24-10.7 24-24l0-134.1 39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nconst faTrashRestoreAlt = faTrashCanArrowUp;\nconst faNairaSign = {\n prefix: 'fas',\n iconName: 'naira-sign',\n icon: [448, 512, [], \"e1f6\", \"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64l0 192-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 100.2 0 97.2 145.8c7.8 11.7 22.4 17 35.9 12.9s22.7-16.5 22.7-30.6l0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 192-57.5 0L122.6 46.3zM305.1 320l14.9 0 0 22.3L305.1 320zM185.5 256L128 256l0-86.3L185.5 256z\"]\n};\nconst faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48l45.5 0c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5L488 384c13.3 0 24-10.7 24-24s-10.7-24-24-24l-288.3 0c-11.5 0-21.4-8.2-23.6-19.5L170.7 288l288.5 0c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32L360 32l0 102.1 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23L312 32 120.1 32C111 12.8 91.6 0 69.5 0L24 0zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faWalkieTalkie = {\n prefix: 'fas',\n iconName: 'walkie-talkie',\n icon: [384, 512, [], \"f8ef\", \"M112 24c0-13.3-10.7-24-24-24S64 10.7 64 24l0 72L48 96C21.5 96 0 117.5 0 144L0 300.1c0 12.7 5.1 24.9 14.1 33.9l3.9 3.9c9 9 14.1 21.2 14.1 33.9L32 464c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-92.1c0-12.7 5.1-24.9 14.1-33.9l3.9-3.9c9-9 14.1-21.2 14.1-33.9L384 144c0-26.5-21.5-48-48-48l-16 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l-32 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l-48 0 0-72zm0 136l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faFilePen = {\n prefix: 'fas',\n iconName: 'file-pen',\n icon: [576, 512, [128221, \"file-edit\"], \"f31c\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nconst faFileEdit = faFilePen;\nconst faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [129534], \"f543\", \"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.3-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6s14 12.4 14 21.8l0 464c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6L304 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L192 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488L0 24C0 14.6 5.5 6.1 14 2.2zM96 144c-8.8 0-16 7.2-16 16s7.2 16 16 16l192 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L96 144zM80 352c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L96 336c-8.8 0-16 7.2-16 16zM96 240c-8.8 0-16 7.2-16 16s7.2 16 16 16l192 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L96 240z\"]\n};\nconst faSquarePen = {\n prefix: 'fas',\n iconName: 'square-pen',\n icon: [448, 512, [\"pen-square\", \"pencil-square\"], \"f14b\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nconst faPenSquare = faSquarePen;\nconst faPencilSquare = faSquarePen;\nconst faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M144 56c0-4.4 3.6-8 8-8l80 0c4.4 0 8 3.6 8 8l0 72-96 0 0-72zm176 72l-32 0 0-72c0-30.9-25.1-56-56-56L152 0C121.1 0 96 25.1 96 56l0 72-32 0c-35.3 0-64 28.7-64 64L0 416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64zM112 224l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faPersonCircleExclamation = {\n prefix: 'fas',\n iconName: 'person-circle-exclamation',\n icon: [576, 512, [], \"e53f\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [512, 512, [], \"f078\", \"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"]\n};\nconst faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [576, 512, [128267, \"battery\", \"battery-5\"], \"f240\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm368 96L96 192l0 128 352 0 0-128z\"]\n};\nconst faBattery = faBatteryFull;\nconst faBattery5 = faBatteryFull;\nconst faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [128369, 9760], \"f714\", \"M368 128c0 44.4-25.4 83.5-64 106.4l0 21.6c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-21.6c-38.6-23-64-62.1-64-106.4C80 57.3 144.5 0 224 0s144 57.3 144 128zM168 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM3.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L224 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L295.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L224 419.8 46.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L152.4 384 17.7 316.6C1.9 308.7-4.5 289.5 3.4 273.7z\"]\n};\nconst faCodeCompare = {\n prefix: 'fas',\n iconName: 'code-compare',\n icon: [512, 512, [], \"e13a\", \"M320 488c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1s14.2 12.4 14.2 21.9l0 40 16 0c35.3 0 64-28.7 64-64l0-166.7C371.7 141 352 112.8 352 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3L464 320c0 70.7-57.3 128-128 128l-16 0 0 40zM456 80a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 24c0-9.5 5.6-18.1 14.2-21.9s18.8-2.3 25.8 4.1l80 72c5.1 4.6 7.9 11 7.9 17.8s-2.9 13.3-7.9 17.8l-80 72c-7 6.3-17.2 7.9-25.8 4.1s-14.2-12.4-14.2-21.9l0-40-16 0c-35.3 0-64 28.7-64 64l0 166.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3L48 192c0-70.7 57.3-128 128-128l16 0 0-40zM56 432a24 24 0 1 0 48 0 24 24 0 1 0 -48 0z\"]\n};\nconst faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [\"list-dots\"], \"f0ca\", \"M64 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zM64 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48-208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faListDots = faListUl;\nconst faSchoolLock = {\n prefix: 'fas',\n iconName: 'school-lock',\n icon: [640, 512, [], \"e56f\", \"M302.2 5.4c10.7-7.2 24.8-7.2 35.5 0L473.7 96 592 96c26.5 0 48 21.5 48 48l0 128c0-61.9-50.1-112-112-112s-112 50.1-112 112l0 24.6c-19.1 11.1-32 31.7-32 55.4l-63.7 0-.3 0c-35.3 0-64 28.7-64 64l0 96 64 0s0 0 0 0L48 512c-26.5 0-48-21.5-48-48L0 144c0-26.5 21.5-48 48-48l118.3 0L302.2 5.4zM80 208l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm0 128l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm240-72a88 88 0 1 0 0-176 88 88 0 1 0 0 176zm16-120l0 16 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 96c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faTowerCell = {\n prefix: 'fas',\n iconName: 'tower-cell',\n icon: [576, 512, [], \"e585\", \"M62.6 2.3C46.2-4.3 27.6 3.6 20.9 20C7.4 53.4 0 89.9 0 128s7.4 74.6 20.9 108c6.6 16.4 25.3 24.3 41.7 17.7S86.9 228.4 80.3 212C69.8 186.1 64 157.8 64 128s5.8-58.1 16.3-84C86.9 27.6 79 9 62.6 2.3zm450.8 0C497 9 489.1 27.6 495.7 44C506.2 69.9 512 98.2 512 128s-5.8 58.1-16.3 84c-6.6 16.4 1.3 35 17.7 41.7s35-1.3 41.7-17.7c13.5-33.4 20.9-69.9 20.9-108s-7.4-74.6-20.9-108C548.4 3.6 529.8-4.3 513.4 2.3zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9L177.7 448l220.6 0 20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM369.2 384l-162.4 0 14.5-32 133.3 0 14.5 32zM288 205.3L325.6 288l-75.2 0L288 205.3zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"]\n};\nconst faDownLong = {\n prefix: 'fas',\n iconName: 'down-long',\n icon: [320, 512, [\"long-arrow-alt-down\"], \"f309\", \"M2 334.5c-3.8 8.8-2 19 4.6 26l136 144c4.5 4.8 10.8 7.5 17.4 7.5s12.9-2.7 17.4-7.5l136-144c6.6-7 8.4-17.2 4.6-26s-12.5-14.5-22-14.5l-72 0 0-288c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32l0 288-72 0c-9.6 0-18.2 5.7-22 14.5z\"]\n};\nconst faLongArrowAltDown = faDownLong;\nconst faRankingStar = {\n prefix: 'fas',\n iconName: 'ranking-star',\n icon: [640, 512, [], \"e561\", \"M353.8 54.1L330.2 6.3c-3.9-8.3-16.1-8.6-20.4 0L286.2 54.1l-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-17.7 0-32 14.3-32 32l0 192c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-192c0-17.7-14.3-32-32-32l-128 0zM32 320c-17.7 0-32 14.3-32 32L0 480c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L32 320zm416 96l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-128 0c-17.7 0-32 14.3-32 32z\"]\n};\nconst faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M224 0c17.7 0 32 14.3 32 32l0 16 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 48 152 0c22.1 0 40 17.9 40 40c0 5.3-1 10.5-3.1 15.4L368 400 80 400 3.1 215.4C1 210.5 0 205.3 0 200c0-22.1 17.9-40 40-40l152 0 0-48-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-16c0-17.7 14.3-32 32-32zM38.6 473.4L80 432l288 0 41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6L54.6 512C42.1 512 32 501.9 32 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nconst faPersonHarassing = {\n prefix: 'fas',\n iconName: 'person-harassing',\n icon: [576, 512, [], \"e549\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM59.4 304.5L88 256.9 88 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-244.7 47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7l-35.9 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM464 344l0 58.7-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L408.8 438l54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3c36.4 0 65.9-29.5 65.9-65.9L576 344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16l56 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-56 0c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"]\n};\nconst faBrazilianRealSign = {\n prefix: 'fas',\n iconName: 'brazilian-real-sign',\n icon: [512, 512, [], \"e46c\", \"M400 0c17.7 0 32 14.3 32 32l0 18.2c12.5 2.3 24.7 6.4 36.2 12.1l10.1 5.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-10.2-5.1c-9.9-5-20.9-7.5-32-7.5l-1.7 0c-29.8 0-53.9 24.1-53.9 53.9c0 22 13.4 41.8 33.9 50l52 20.8c44.7 17.9 74.1 61.2 74.1 109.4l0 3.4c0 51.2-33.6 94.6-80 109.2l0 21.3c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-19.4c-15-3.5-29.4-9.7-42.3-18.3l-23.4-15.6c-14.7-9.8-18.7-29.7-8.9-44.4s29.7-18.7 44.4-8.9L361.2 389c10.8 7.2 23.4 11 36.3 11c27.9 0 50.5-22.6 50.5-50.5l0-3.4c0-22-13.4-41.8-33.9-50l-52-20.8C317.3 257.4 288 214.1 288 165.9C288 114 321.5 70 368 54.2L368 32c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320 64 320l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 288 0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80L64 96l0 160z\"]\n};\nconst faLandmarkDome = {\n prefix: 'fas',\n iconName: 'landmark-dome',\n icon: [512, 512, [\"landmark-alt\"], \"f752\", \"M248 0l16 0c13.3 0 24 10.7 24 24l0 10.7C368.4 48.1 431.9 111.6 445.3 192l2.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 256c-17.7 0-32-14.3-32-32s14.3-32 32-32l2.7 0C80.1 111.6 143.6 48.1 224 34.7L224 24c0-13.3 10.7-24 24-24zM64 288l64 0 0 128 40 0 0-128 64 0 0 128 48 0 0-128 64 0 0 128 40 0 0-128 64 0 0 132.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 288z\"]\n};\nconst faLandmarkAlt = faLandmarkDome;\nconst faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [384, 512, [8593], \"f062\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2 160 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"]\n};\nconst faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [63717, \"television\", \"tv-alt\"], \"f26c\", \"M64 64l0 288 512 0 0-288L64 64zM0 64C0 28.7 28.7 0 64 0L576 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 416c-35.3 0-64-28.7-64-64L0 64zM128 448l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-384 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faTelevision = faTv;\nconst faTvAlt = faTv;\nconst faShrimp = {\n prefix: 'fas',\n iconName: 'shrimp',\n icon: [512, 512, [129424], \"e448\", \"M64 32C28.7 32 0 60.7 0 96s28.7 64 64 64l1 0c3.7 88.9 77 160 167 160l56 0 0-192-24 0L88.8 128 64 128c-17.7 0-32-14.3-32-32s14.3-32 32-32l400 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L64 32zM224 456c0 13.3 10.7 24 24 24l72 0 0-72.2-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3l0 69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111c0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6c0 4.6-.7 9-1.9 13.1L472.6 415zM336 128l-16 0 0 192 18.3 0c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM168 192a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faListCheck = {\n prefix: 'fas',\n iconName: 'list-check',\n icon: [512, 512, [\"tasks\"], \"f0ae\", \"M152.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 113C-2.3 103.6-2.3 88.4 7 79s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM224 96c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32zM48 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faTasks = faListCheck;\nconst faJugDetergent = {\n prefix: 'fas',\n iconName: 'jug-detergent',\n icon: [384, 512, [], \"e519\", \"M96 24c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24l0 24 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 96C74.7 96 64 85.3 64 72s10.7-24 24-24l8 0 0-24zM0 256c0-70.7 57.3-128 128-128l128 0c70.7 0 128 57.3 128 128l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256zm256 0l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faCircleUser = {\n prefix: 'fas',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M399 384.2C376.9 345.8 335.4 320 288 320l-64 0c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z\"]\n};\nconst faUserCircle = faCircleUser;\nconst faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c1.8 0 3.5-.2 5.3-.5c-76.3-55.1-99.8-141-103.1-200.2c-16.1-4.8-33.1-7.3-50.7-7.3l-91.4 0zm308.8-78.3l-120 48C358 277.4 352 286.2 352 296c0 63.3 25.9 168.8 134.8 214.2c5.9 2.5 12.6 2.5 18.5 0C614.1 464.8 640 359.3 640 296c0-9.8-6-18.6-15.1-22.3l-120-48c-5.7-2.3-12.1-2.3-17.8 0zM591.4 312c-3.9 50.7-27.2 116.7-95.4 149.7l0-187.8L591.4 312z\"]\n};\nconst faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M288 32c0 17.7 14.3 32 32 32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c53 0 96-43 96-96s-43-96-96-96L320 0c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32l32 0c53 0 96-43 96-96s-43-96-96-96L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32 14.3-32 32zM128 512l32 0c53 0 96-43 96-96s-43-96-96-96L32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nconst faCarBurst = {\n prefix: 'fas',\n iconName: 'car-burst',\n icon: [640, 512, [\"car-crash\"], \"f5e1\", \"M176 8c-6.6 0-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6l35.3-32.5 9.5-35.4 10.4-38.6c8-29.9 30.5-52.1 57.9-60.9l41-59.2c11.3-16.3 26.4-28.9 43.5-37.2c-.4-.6-.8-1.2-1.3-1.8c-4.1-5.1-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74C188.4 12 182.6 8 176 8zM367.7 161.5l135.6 36.3c6.5 1.8 11.3 7.4 11.8 14.2l4.6 56.5-201.5-54 32.2-46.6c3.8-5.6 10.8-8.1 17.3-6.4zm-69.9-30l-47.9 69.3c-21.6 3-40.3 18.6-46.3 41l-10.4 38.6-16.6 61.8-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 247.3 66.3-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9L595 388l10.4-38.6c6-22.4-2.5-45.2-19.6-58.7l-6.8-84c-2.7-33.7-26.4-62-59-70.8L384.2 99.7c-32.7-8.8-67.3 4-86.5 31.8zm-17 131a24 24 0 1 1 -12.4 46.4 24 24 0 1 1 12.4-46.4zm217.9 83.2A24 24 0 1 1 545 358.1a24 24 0 1 1 -46.4-12.4z\"]\n};\nconst faCarCrash = faCarBurst;\nconst faY = {\n prefix: 'fas',\n iconName: 'y',\n icon: [384, 512, [121], \"59\", \"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3 160 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-149.7L378 82.6c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"]\n};\nconst faPersonSnowboarding = {\n prefix: 'fas',\n iconName: 'person-snowboarding',\n icon: [512, 512, [127938, \"snowboarding\"], \"f7ce\", \"M209.7 3.4c15.8-7.9 35-1.5 42.9 14.3l25 50 42.4 8.5c19.5 3.9 37.8 12.3 53.5 24.5l126.1 98.1c14 10.9 16.5 31 5.6 44.9s-31 16.5-44.9 5.6l-72.1-56.1-71.5 31.8 33.1 27.6c23.2 19.3 33.5 50 26.7 79.4l-17.4 75.2c-2.2 9.4-8.2 16.8-16.1 21l86.5 33.1c4.6 1.8 9.4 2.6 14.3 2.6l28.2 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-28.2 0c-10.8 0-21.4-2-31.5-5.8L60.1 371.3c-11.5-4.4-22-11.2-30.8-20L7 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l22.4 8.6c-.8-1.6-1.5-3.2-2.1-4.9c-5.6-16.8 3.5-34.9 20.2-40.5L192 264.9l0-53.2c0-24.2 13.7-46.4 35.4-57.2l45.2-22.6-7.5-1.5c-19.4-3.9-35.9-16.5-44.7-34.1l-25-50c-7.9-15.8-1.5-35 14.3-42.9zM139 350.1l159 60.9c-2.1-5.6-2.6-11.9-1.1-18.2l17.4-75.2c1.4-5.9-.7-12-5.3-15.9l-52.8-44 0 18.8c0 20.7-13.2 39-32.8 45.5L139 350.1zM432 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faSnowboarding = faPersonSnowboarding;\nconst faTruckFast = {\n prefix: 'fas',\n iconName: 'truck-fast',\n icon: [640, 512, [\"shipping-fast\"], \"f48b\", \"M112 0C85.5 0 64 21.5 64 48l0 48L16 96c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 208 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L64 160l-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l16 0 176 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L64 224l-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 144 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L64 288l0 128c0 53 43 96 96 96s96-43 96-96l128 0c0 53 43 96 96 96s96-43 96-96l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64 0-32 0-18.7c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7L416 96l0-48c0-26.5-21.5-48-48-48L112 0zM544 237.3l0 18.7-128 0 0-96 50.7 0L544 237.3zM160 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm272 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nconst faShippingFast = faTruckFast;\nconst faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [128031], \"f578\", \"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8C452.3 403.5 399.4 432 336 432s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M219.3 .5c3.1-.6 6.3-.6 9.4 0l200 40C439.9 42.7 448 52.6 448 64s-8.1 21.3-19.3 23.5L352 102.9l0 57.1c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-57.1L48 93.3l0 65.1 15.7 78.4c.9 4.7-.3 9.6-3.3 13.3s-7.6 5.9-12.4 5.9l-32 0c-4.8 0-9.3-2.1-12.4-5.9s-4.3-8.6-3.3-13.3L16 158.4l0-71.8C6.5 83.3 0 74.3 0 64C0 52.6 8.1 42.7 19.3 40.5l200-40zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7L30.7 512C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6z\"]\n};\nconst faCircleHalfStroke = {\n prefix: 'fas',\n iconName: 'circle-half-stroke',\n icon: [512, 512, [9680, \"adjust\"], \"f042\", \"M448 256c0-106-86-192-192-192l0 384c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faAdjust = faCircleHalfStroke;\nconst faClapperboard = {\n prefix: 'fas',\n iconName: 'clapperboard',\n icon: [512, 512, [], \"e131\", \"M448 32l-86.1 0-1 1-127 127 92.1 0 1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128l0-64c0-15.1-5.3-29.1-14-40l-104 104L512 160zM294.1 32l-92.1 0-1 1L73.9 160l92.1 0 1-1 127-127zM64 32C28.7 32 0 60.7 0 96l0 64 6.1 0 1-1 127-127L64 32zM512 192L0 192 0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-224z\"]\n};\nconst faCircleRadiation = {\n prefix: 'fas',\n iconName: 'circle-radiation',\n icon: [512, 512, [9762, \"radiation-alt\"], \"f7ba\", \"M256 64a192 192 0 1 1 0 384 192 192 0 1 1 0-384zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM200 256c0-20.7 11.3-38.8 28-48.5l-36-62.3c-8.8-15.3-28.7-20.8-42-9c-25.6 22.6-43.9 53.3-50.9 88.1C95.7 241.5 110.3 256 128 256l72 0zm28 48.5l-36 62.4c-8.8 15.3-3.6 35.2 13.1 40.8c16 5.4 33.1 8.3 50.9 8.3s34.9-2.9 50.9-8.3c16.7-5.6 21.9-25.5 13.1-40.8l-36-62.4c-8.2 4.8-17.8 7.5-28 7.5s-19.8-2.7-28-7.5zM312 256l72 0c17.7 0 32.3-14.5 28.8-31.8c-7-34.8-25.3-65.5-50.9-88.1c-13.2-11.7-33.1-6.3-42 9l-36 62.3c16.7 9.7 28 27.8 28 48.5zm-56 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faRadiationAlt = faCircleRadiation;\nconst faBaseball = {\n prefix: 'fas',\n iconName: 'baseball',\n icon: [512, 512, [129358, 9918, \"baseball-ball\"], \"f433\", \"M62.7 223.4c-4.8 .4-9.7 .6-14.7 .6c-15.6 0-30.8-2-45.2-5.9C19.2 107.1 107.1 19.2 218.1 2.8C222 17.2 224 32.4 224 48c0 4.9-.2 9.8-.6 14.7c-.7 8.8 5.8 16.5 14.6 17.3s16.5-5.8 17.3-14.6c.5-5.7 .7-11.5 .7-17.3c0-16.5-1.9-32.6-5.6-47.9c1.8 0 3.7-.1 5.6-.1C397.4 0 512 114.6 512 256c0 1.9 0 3.7-.1 5.6c-15.4-3.6-31.4-5.6-47.9-5.6c-5.8 0-11.6 .2-17.3 .7c-8.8 .7-15.4 8.5-14.6 17.3s8.5 15.4 17.3 14.6c4.8-.4 9.7-.6 14.7-.6c15.6 0 30.8 2 45.2 5.9C492.8 404.9 404.9 492.8 293.9 509.2C290 494.8 288 479.6 288 464c0-4.9 .2-9.8 .6-14.7c.7-8.8-5.8-16.5-14.6-17.3s-16.5 5.8-17.3 14.6c-.5 5.7-.7 11.5-.7 17.3c0 16.5 1.9 32.6 5.6 47.9c-1.8 0-3.7 .1-5.6 .1C114.6 512 0 397.4 0 256c0-1.9 0-3.7 .1-5.6C15.4 254.1 31.5 256 48 256c5.8 0 11.6-.2 17.3-.7c8.8-.7 15.4-8.5 14.6-17.3s-8.5-15.4-17.3-14.6zM121.3 208c-8 3.7-11.6 13.2-7.9 21.2s13.2 11.6 21.2 7.9c45.2-20.8 81.7-57.2 102.5-102.5c3.7-8 .2-17.5-7.9-21.2s-17.5-.2-21.2 7.9c-17.6 38.3-48.5 69.2-86.7 86.7zm277.2 74.7c-3.7-8-13.2-11.6-21.2-7.9c-45.2 20.8-81.7 57.2-102.5 102.5c-3.7 8-.2 17.5 7.9 21.2s17.5 .2 21.2-7.9c17.6-38.3 48.5-69.2 86.7-86.7c8-3.7 11.6-13.2 7.9-21.2z\"]\n};\nconst faBaseballBall = faBaseball;\nconst faJetFighterUp = {\n prefix: 'fas',\n iconName: 'jet-fighter-up',\n icon: [512, 512, [], \"e518\", \"M270.7 9.7C268.2 3.8 262.4 0 256 0s-12.2 3.8-14.7 9.7L197.2 112.6c-3.4 8-5.2 16.5-5.2 25.2l0 77-144 84L48 280c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 56 0 32 0 24c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8 144 0 0 32.7L133.5 468c-3.5 3-5.5 7.4-5.5 12l0 16c0 8.8 7.2 16 16 16l96 0 0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64 96 0c8.8 0 16-7.2 16-16l0-16c0-4.6-2-9-5.5-12L320 416.7l0-32.7 144 0 0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-24 0-32 0-56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 18.8-144-84 0-77c0-8.7-1.8-17.2-5.2-25.2L270.7 9.7z\"]\n};\nconst faDiagramProject = {\n prefix: 'fas',\n iconName: 'diagram-project',\n icon: [576, 512, [\"project-diagram\"], \"f542\", \"M0 80C0 53.5 21.5 32 48 32l96 0c26.5 0 48 21.5 48 48l0 16 192 0 0-16c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-16-192 0 0 16c0 1.7-.1 3.4-.3 5L272 288l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96c0-1.7 .1-3.4 .3-5L144 224l-96 0c-26.5 0-48-21.5-48-48L0 80z\"]\n};\nconst faProjectDiagram = faDiagramProject;\nconst faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M208 0L332.1 0c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9L448 336c0 26.5-21.5 48-48 48l-192 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48zM48 128l80 0 0 64-64 0 0 256 192 0 0-32 64 0 0 48c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 176c0-26.5 21.5-48 48-48z\"]\n};\nconst faVolumeXmark = {\n prefix: 'fas',\n iconName: 'volume-xmark',\n icon: [576, 512, [\"volume-mute\", \"volume-times\"], \"f6a9\", \"M301.1 34.8C312.6 40 320 51.4 320 64l0 384c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352 64 352c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l67.8 0L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM425 167l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nconst faVolumeMute = faVolumeXmark;\nconst faVolumeTimes = faVolumeXmark;\nconst faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M320 0c17.7 0 32 14.3 32 32l0 208c0 8.8 7.2 16 16 16s16-7.2 16-16l0-176c0-17.7 14.3-32 32-32s32 14.3 32 32l0 176c0 8.8 7.2 16 16 16s16-7.2 16-16l0-112c0-17.7 14.3-32 32-32s32 14.3 32 32l0 195.1c-11.9 4.8-21.3 14.9-25 27.8l-8.9 31.2L478.9 391C460.6 396.3 448 413 448 432c0 18.9 12.5 35.6 30.6 40.9C448.4 497.4 409.9 512 368 512l-19.2 0c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6l0-272c0-17.7 14.3-32 32-32s32 14.3 32 32l0 176c0 8.8 7.2 16 16 16s16-7.2 16-16l0-208c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L288 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L288 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L320 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L320 352l-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456l-13.8 48.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456l-48.3-13.8c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408l13.8-48.3c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"]\n};\nconst faGrip = {\n prefix: 'fas',\n iconName: 'grip',\n icon: [448, 512, [\"grip-horizontal\"], \"f58d\", \"M128 136c0-22.1-17.9-40-40-40L40 96C17.9 96 0 113.9 0 136l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zm0 192c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zm32-192l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zm32-192l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48z\"]\n};\nconst faGripHorizontal = faGrip;\nconst faShareFromSquare = {\n prefix: 'fas',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M352 224l-46.5 0c-45 0-81.5 36.5-81.5 81.5c0 22.3 10.3 34.3 19.2 40.5c6.8 4.7 12.8 12 12.8 20.3c0 9.8-8 17.8-17.8 17.8l-2.5 0c-2.4 0-4.8-.4-7.1-1.4C210.8 374.8 128 333.4 128 240c0-79.5 64.5-144 144-144l80 0 0-61.3C352 15.5 367.5 0 386.7 0c8.6 0 16.8 3.2 23.2 8.9L548.1 133.3c7.6 6.8 11.9 16.5 11.9 26.7s-4.3 19.9-11.9 26.7l-139 125.1c-5.9 5.3-13.5 8.2-21.4 8.2l-3.7 0c-17.7 0-32-14.3-32-32l0-64zM80 96c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-48c0-17.7 14.3-32 32-32s32 14.3 32 32l0 48c0 44.2-35.8 80-80 80L80 512c-44.2 0-80-35.8-80-80L0 112C0 67.8 35.8 32 80 32l48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 96z\"]\n};\nconst faShareSquare = faShareFromSquare;\nconst faChildCombatant = {\n prefix: 'fas',\n iconName: 'child-combatant',\n icon: [576, 512, [\"child-rifle\"], \"e4e0\", \"M176 128A64 64 0 1 0 176 0a64 64 0 1 0 0 128zm-8 352l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-179.5L260.9 321c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-51.7-82.1c-17.6-27.9-48.3-44.9-81.2-44.9l-12.3 0c-33 0-63.7 16.9-81.2 44.9L36.9 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10L104 300.5 104 480c0 17.7 14.3 32 32 32s32-14.3 32-32zM448 0L432 0 416 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l0 100.3c-9.6 5.5-16 15.9-16 27.7l0 32c-17.7 0-32 14.3-32 32l0 144c0 17.7 14.3 32 32 32l16 0 0 96c0 8.8 7.2 16 16 16l59.5 0c10.4 0 18-9.8 15.5-19.9L484 400l44 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-48 0 0-26.7 53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2l0-84.5c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 56-16 5.3L480 160c0-11.8-6.4-22.2-16-27.7L464 16c0-8.8-7.2-16-16-16z\"]\n};\nconst faChildRifle = faChildCombatant;\nconst faGun = {\n prefix: 'fas',\n iconName: 'gun',\n icon: [576, 512, [], \"e19b\", \"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 8L32 64C14.3 64 0 78.3 0 96L0 208c0 17.7 14.3 32 32 32l10 0c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480l96 0c14.7 0 27.5-10 31-24.2L217 352l104.5 0c23.7 0 44.8-14.9 52.7-37.2L400.9 240l31.1 0c8.5 0 16.6-3.4 22.6-9.4L477.3 208l66.7 0c17.7 0 32-14.3 32-32l0-80c0-17.7-14.3-32-32-32l-16 0 0-8zM321.4 304L229 304l16-64 105 0-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128l384 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faSquarePhone = {\n prefix: 'fas',\n iconName: 'square-phone',\n icon: [448, 512, [\"phone-square\"], \"f098\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm90.7 96.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L168 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C336.9 378 329 384 320 384C196.3 384 96 283.7 96 160c0-9 6-16.9 14.7-19.3l44-12z\"]\n};\nconst faPhoneSquare = faSquarePhone;\nconst faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [10133, 61543, \"add\"], \"2b\", \"M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 144L48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0 0 144c0 17.7 14.3 32 32 32s32-14.3 32-32l0-144 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-144z\"]\n};\nconst faAdd = faPlus;\nconst faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M32 32C14.3 32 0 46.3 0 64l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96z\"]\n};\nconst faComputer = {\n prefix: 'fas',\n iconName: 'computer',\n icon: [640, 512, [], \"e4e5\", \"M384 96l0 224L64 320 64 96l320 0zM64 32C28.7 32 0 60.7 0 96L0 320c0 35.3 28.7 64 64 64l117.3 0-10.7 32L96 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-74.7 0-10.7-32L384 384c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L64 32zm464 0c-26.5 0-48 21.5-48 48l0 352c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48l-64 0zm16 64l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faXmark = {\n prefix: 'fas',\n iconName: 'xmark',\n icon: [384, 512, [128473, 10005, 10006, 10060, 215, \"close\", \"multiply\", \"remove\", \"times\"], \"f00d\", \"M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z\"]\n};\nconst faClose = faXmark;\nconst faMultiply = faXmark;\nconst faRemove = faXmark;\nconst faTimes = faXmark;\nconst faArrowsUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-up-down-left-right',\n icon: [512, 512, [\"arrows\"], \"f047\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4L224 224l-114.7 0 9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L224 288l0 114.7-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4L288 288l114.7 0-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L288 224l0-114.7 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n};\nconst faArrows = faArrowsUpDownLeftRight;\nconst faChalkboardUser = {\n prefix: 'fas',\n iconName: 'chalkboard-user',\n icon: [640, 512, [\"chalkboard-teacher\"], \"f51c\", \"M160 64c0-35.3 28.7-64 64-64L576 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64l-239.2 0c-11.8-25.5-29.9-47.5-52.4-64l99.6 0 0-32c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 32 64 0 0-288L224 64l0 49.1C205.2 102.2 183.3 96 160 96l0-32zm0 64a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM133.3 352l53.3 0C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7L26.7 512C11.9 512 0 500.1 0 485.3C0 411.7 59.7 352 133.3 352z\"]\n};\nconst faChalkboardTeacher = faChalkboardUser;\nconst faPesoSign = {\n prefix: 'fas',\n iconName: 'peso-sign',\n icon: [384, 512, [], \"e222\", \"M64 32C46.3 32 32 46.3 32 64l0 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 80 0c68.4 0 127.7-39 156.8-96l19.2 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-.7 0c.5-5.3 .7-10.6 .7-16s-.2-10.7-.7-16l.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-19.2 0C303.7 71 244.4 32 176 32L64 32zm190.4 96L96 128l0-32 80 0c30.5 0 58.2 12.2 78.4 32zM96 192l190.9 0c.7 5.2 1.1 10.6 1.1 16s-.4 10.8-1.1 16L96 224l0-32zm158.4 96c-20.2 19.8-47.9 32-78.4 32l-80 0 0-32 158.4 0z\"]\n};\nconst faBuildingShield = {\n prefix: 'fas',\n iconName: 'building-shield',\n icon: [576, 512, [], \"e4d8\", \"M0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 159-42.4 17L304 224l-32 0c-8.8 0-16 7.2-16 16l0 32 0 24.2 0 7.8c0 .9 .1 1.7 .2 2.6c2.3 58.1 24.1 144.8 98.7 201.5c-5.8 2.5-12.2 3.9-18.9 3.9l-96 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-96 0c-26.5 0-48-21.5-48-48L0 48zM80 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM64 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L80 96c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM423.1 225.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8l0 187.8c68.2-33 91.5-99 95.4-149.7z\"]\n};\nconst faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [448, 512, [], \"f77c\", \"M152 88a72 72 0 1 1 144 0A72 72 0 1 1 152 88zM39.7 144.5c13-17.9 38-21.8 55.9-8.8L131.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25l0 36.3-192 0 0-36.3c-15.2-6.7-29.7-15.1-43.3-25L48.5 200.3c-17.9-13-21.8-38-8.8-55.9zm89.8 184.8l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C70 438.6 68.1 417 79.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L284 419.4l-26-37.2z\"]\n};\nconst faUsersLine = {\n prefix: 'fas',\n iconName: 'users-line',\n icon: [640, 512, [], \"e592\", \"M211.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM32 256c0 17.7 14.3 32 32 32l85.6 0c10.1-39.4 38.6-71.5 75.8-86.6c-9.7-6-21.2-9.4-33.4-9.4l-96 0c-35.3 0-64 28.7-64 64zm461.6 32l82.4 0c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64l-96 0c-11.7 0-22.7 3.1-32.1 8.6c38.1 14.8 67.4 47.3 77.7 87.4zM391.2 226.4c-6.9-1.6-14.2-2.4-21.6-2.4l-96 0c-8.5 0-16.7 1.1-24.5 3.1c-30.8 8.1-55.6 31.1-66.1 60.9c-3.5 10-5.5 20.8-5.5 32c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32c0-11.2-1.9-22-5.5-32c-10.8-30.7-36.8-54.2-68.9-61.6zM563.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM321.6 192a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416z\"]\n};\nconst faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [448, 512, [8220, \"quote-left-alt\"], \"f10d\", \"M0 216C0 149.7 53.7 96 120 96l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-30.9 0-56 25.1-56 56l0 8 64 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64l0-32 0-32 0-72zm256 0c0-66.3 53.7-120 120-120l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-30.9 0-56 25.1-56 56l0 8 64 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64l0-32 0-32 0-72z\"]\n};\nconst faQuoteLeftAlt = faQuoteLeft;\nconst faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [128668], \"f722\", \"M96 64c0-35.3 28.7-64 64-64L266.3 0c26.2 0 49.7 15.9 59.4 40.2L373.7 160 480 160l0-33.8c0-24.8 5.8-49.3 16.9-71.6l2.5-5c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.5 5c-6.7 13.3-10.1 28-10.1 42.9l0 33.8 56 0c22.1 0 40 17.9 40 40l0 45.4c0 16.5-8.5 31.9-22.6 40.7l-43.3 27.1c-14.2-5.9-29.8-9.2-46.1-9.2c-39.3 0-74.1 18.9-96 48l-80 0c0 17.7-14.3 32-32 32l-8.2 0c-1.7 4.8-3.7 9.5-5.8 14.1l5.8 5.8c12.5 12.5 12.5 32.8 0 45.3l-22.6 22.6c-12.5 12.5-32.8 12.5-45.3 0l-5.8-5.8c-4.6 2.2-9.3 4.1-14.1 5.8l0 8.2c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-8.2c-4.8-1.7-9.5-3.7-14.1-5.8l-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1L32 384c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l8.2 0c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6l0-.6 0-32 0-96zm170.3 0L160 64l0 96 32 0 112.7 0L266.3 64zM176 256a80 80 0 1 0 0 160 80 80 0 1 0 0-160zM528 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z\"]\n};\nconst faTrashArrowUp = {\n prefix: 'fas',\n iconName: 'trash-arrow-up',\n icon: [448, 512, [\"trash-restore\"], \"f829\", \"M163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128l384 0L394.8 467c-1.6 25.3-22.6 45-47.9 45l-245.8 0c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39L200 408c0 13.3 10.7 24 24 24s24-10.7 24-24l0-134.1 39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nconst faTrashRestore = faTrashArrowUp;\nconst faArrowDownUpLock = {\n prefix: 'fas',\n iconName: 'arrow-down-up-lock',\n icon: [640, 512, [], \"e4b0\", \"M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 160 288l256 0 0-16c0-17.2 3.9-33.5 10.8-48L352 224l0-114.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3 288 224l-128 0-64 0-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 114.7L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0zM160 192l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 128 64 0zM288 320l0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128-64 0zm240-80c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faLinesLeaning = {\n prefix: 'fas',\n iconName: 'lines-leaning',\n icon: [384, 512, [], \"e51e\", \"M190.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM352 32c-17.7 0-32 14.3-32 32l0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32z\"]\n};\nconst faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M.2 468.9C2.7 493.1 23.1 512 48 512l96 0 320 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-48c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 368l0 96c0 1.7 .1 3.3 .2 4.9z\"]\n};\nconst faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z\"]\n};\nconst faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [62764], \"3d\", \"M48 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l352 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L48 128zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32l352 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L48 320z\"]\n};\nconst faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M0 64C0 28.7 28.7 0 64 0l64 0 32 0L470.1 0c21.1 0 36.4 20.1 30.9 40.4L494.5 64 336 64c-8.8 0-16 7.2-16 16s7.2 16 16 16l149.8 0-17.5 64L336 160c-8.8 0-16 7.2-16 16s7.2 16 16 16l123.6 0-17.5 64L336 256c-8.8 0-16 7.2-16 16s7.2 16 16 16l97.5 0L416 352l-256 0-8.7-96L64 256c-35.3 0-64-28.7-64-64L0 64zM145.5 192L133.8 64 64 64l0 128 81.5 0zM144 384l288 0c26.5 0 48 21.5 48 48l0 32c0 26.5-21.5 48-48 48l-288 0c-26.5 0-48-21.5-48-48l0-32c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [576, 512, [], \"f62e\", \"M0 128C0 75 43 32 96 32l384 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96L96 480c-53 0-96-43-96-96L0 128zm176 48l0 56c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-56c0-26.5-21.5-48-48-48s-48 21.5-48 48zm176-48c-26.5 0-48 21.5-48 48l0 56c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-56c0-26.5-21.5-48-48-48zM48 208l0 24c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-24c0-26.5-21.5-48-48-48s-48 21.5-48 48zM96 384c26.5 0 48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24c0 26.5 21.5 48 48 48zm80-48c0 26.5 21.5 48 48 48s48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24zm176 48c26.5 0 48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24c0 26.5 21.5 48 48 48zm80-176l0 24c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-24c0-26.5-21.5-48-48-48s-48 21.5-48 48zm48 176c26.5 0 48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24c0 26.5 21.5 48 48 48z\"]\n};\nconst faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [8362, \"ils\", \"shekel\", \"sheqel\", \"sheqel-sign\"], \"f20b\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32L64 96l128 0c35.3 0 64 28.7 64 64l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-70.7-57.3-128-128-128L32 32zM320 480c70.7 0 128-57.3 128-128l0-288c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 288c0 35.3-28.7 64-64 64l-128 0 0-224c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l160 0z\"]\n};\nconst faIls = faShekelSign;\nconst faShekel = faShekelSign;\nconst faSheqel = faShekelSign;\nconst faSheqelSign = faShekelSign;\nconst faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M384 476.1L192 421.2l0-385.3L384 90.8l0 385.3zm32-1.2l0-386.5L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3l0 334.8c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2l0 386.5L32.9 474.5C17.1 480.8 0 469.2 0 452.2L0 117.4c0-9.8 6-18.6 15.1-22.3z\"]\n};\nconst faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2l0 82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9l0-107.2c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faPhotoFilm = {\n prefix: 'fas',\n iconName: 'photo-film',\n icon: [640, 512, [\"photo-video\"], \"f87c\", \"M256 0L576 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-320 0c-35.3 0-64-28.7-64-64l0-224c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l80 0 48 0 144 0c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 128l96 0 0 256 0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32 160 0 0 64c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm0 104c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm0 104c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm336 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faPhotoVideo = faPhotoFilm;\nconst faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M448 480L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l128 0c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8l160 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64zM184 272c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nconst faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [576, 512, [], \"f54e\", \"M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0L109.6 0C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4zM499.7 254.9c0 0 0 0-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3L448 384l-320 0 0-133.4c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3L64 384l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64 0-131.4c-4 1-8 1.8-12.3 2.3z\"]\n};\nconst faArrowTrendUp = {\n prefix: 'fas',\n iconName: 'arrow-trend-up',\n icon: [576, 512, [], \"e098\", \"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-82.7L342.6 374.6c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160 384 160z\"]\n};\nconst faPlugCircleMinus = {\n prefix: 'fas',\n iconName: 'plug-circle-minus',\n icon: [576, 512, [], \"e55e\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l128 0c8.8 0 16 7.2 16 16z\"]\n};\nconst faSignHanging = {\n prefix: 'fas',\n iconName: 'sign-hanging',\n icon: [512, 512, [\"sign\"], \"f4d9\", \"M96 0c17.7 0 32 14.3 32 32l0 32 352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0 0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352-32 0C14.3 128 0 113.7 0 96S14.3 64 32 64l32 0 0-32C64 14.3 78.3 0 96 0zm96 160l256 0c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32z\"]\n};\nconst faSign = faSignHanging;\nconst faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M296 136l0-48 48 0 0 48-48 0zM288 32c-26.5 0-48 21.5-48 48l0 4L121.6 84C111.2 62.7 89.3 48 64 48C28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36l66.9 0c-58.9 39.6-98.9 105-104 180L80 320c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-3.3 0c5.9-67 48.5-123.4 107.5-149.1c8.6 12.7 23.2 21.1 39.8 21.1l64 0c16.6 0 31.1-8.4 39.8-21.1c59 25.7 101.6 82.1 107.5 149.1l-3.3 0c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-4.5 0c-5-75-45.1-140.4-104-180l66.9 0c10.4 21.3 32.3 36 57.6 36c35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36L400 84l0-4c0-26.5-21.5-48-48-48l-64 0zM88 376l48 0 0 48-48 0 0-48zm416 48l0-48 48 0 0 48-48 0z\"]\n};\nconst faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-90.2-70.7c.2-.4 .4-.9 .6-1.3c5.2-11.5 3.1-25-5.3-34.4l-7.4-8.3C497.3 319.2 480 273.9 480 226.8l0-18.8c0-77.4-55-142-128-156.8L352 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 19.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM406.2 416L160 222.1l0 4.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S115.4 416 128 416l278.2 0zm-40.9 77.3c12-12 18.7-28.3 18.7-45.3l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nconst faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [\"tablet-android\"], \"f3fb\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM176 432l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faTabletAndroid = faTablet;\nconst faSchoolFlag = {\n prefix: 'fas',\n iconName: 'school-flag',\n icon: [576, 512, [], \"e56e\", \"M288 0L400 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-79.3 0 89.6 64L512 160c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-176 0 0-112c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 112L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64l101.7 0L256 95.5 256 32c0-17.7 14.3-32 32-32zm48 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM80 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0zm368 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0zm384 0c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0z\"]\n};\nconst faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M86.6 9.4C74.1-3.1 53.9-3.1 41.4 9.4s-12.5 32.8 0 45.3L122.7 136 30.6 228.1c-37.5 37.5-37.5 98.3 0 135.8L148.1 481.4c37.5 37.5 98.3 37.5 135.8 0L474.3 290.9c28.1-28.1 28.1-73.7 0-101.8L322.9 37.7c-28.1-28.1-73.7-28.1-101.8 0L168 90.7 86.6 9.4zM168 181.3l49.4 49.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L213.3 136l53.1-53.1c3.1-3.1 8.2-3.1 11.3 0L429.1 234.3c3.1 3.1 3.1 8.2 0 11.3L386.7 288 67.5 288c1.4-5.4 4.2-10.4 8.4-14.6L168 181.3z\"]\n};\nconst faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [448, 512, [8963], \"f106\", \"M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"]\n};\nconst faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2C69.8 320.6 65 320 60 320c-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12c0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5c-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4l89.2 0c6.3 0 12.4-.3 18.5-1c11.9-1.2 16.4-15.5 10.8-26c-8.5-15.8-13.3-33.8-13.3-53c0-61.9 50.1-112 112-112c8 0 15.7 .8 23.2 2.4c11.7 2.5 24.1-5.9 22-17.6C494.5 62.5 422.5 0 336 0C238.8 0 160 78.8 160 176l0 89.2z\"]\n};\nconst faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [512, 512, [], \"f7aa\", \"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM276.8 383.8c1 .1 2.1 .2 3.2 .2c39.8 0 72 32.2 72 72l0 22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.6 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6c-34.6 0-62.7-28.1-62.7-62.7l0-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7c4.2 9.7 5.8 20.8 3.7 32.3L275 298.7c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.6 234.5c-15.5-5.2-31.6 6.4-31.6 22.8l0 32C96 323.9 67.9 352 33.3 352c-16.4 0-27.9 16-22.8 31.6l4.3 12.8c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.2 489.4 22.6 505.8 40.5 501L60 495.6c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8l0-32c0-34.6 28.1-62.7 62.7-62.7c16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5L196 240.4c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384 144a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [9001], \"f053\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"]\n};\nconst faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M304.9 .7c-9.6-2.7-19.5 2.8-22.3 12.4l-4.3 15.2c-8.3-.6-16.8 0-25.2 1.9c-7.3 1.7-14.3 3.5-21.1 5.5l-5.5-12.7c-3.9-9.1-14.5-13.4-23.6-9.5s-13.4 14.5-9.5 23.6l4.4 10.4c-16.6 6.7-31.7 14.4-45.4 22.8L147 62c-5.5-8.3-16.7-10.5-25-5s-10.5 16.7-5 25l6 9c-13.7 11-25.5 22.8-35.8 34.9l-10-8c-7.8-6.2-19.1-5-25.3 2.8s-5 19.1 2.8 25.3L65.9 155c-1.8 2.8-3.5 5.7-5.1 8.5c-6.6 11.4-11.8 22.6-16 33l-8-3.2c-9.2-3.7-19.7 .8-23.4 10s.8 19.7 10 23.4l10.4 4.2c-.2 .8-.4 1.5-.5 2.3c-2.2 9.3-3.4 17.3-4.1 23.4c-.4 3.1-.6 5.7-.8 7.8c-.1 1.1-.1 2-.2 2.8l-.1 1.1 0 .5 0 .2 0 .1c0 0 0 .1 29.1 1c0 0 0 0-.1 0L28 269.3c-.1 3.1 0 6.1 .2 9.1l-15.2 4.3C3.5 285.4-2 295.4 .7 304.9s12.7 15.1 22.3 12.4l15.6-4.5c7.6 13.6 18.9 25 32.6 32.6L66.7 361c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.3-12.4l4.3-15.2c1.2 .1 2.4 .2 3.6 .2c15.6 .5 30.3-3.3 43-10.2l9 9c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-7.2-7.2c9.3-12.6 15.2-27.8 16.3-44.5l7.1 3c9.1 3.9 19.7-.3 23.6-9.5s-.3-19.7-9.5-23.6l-8.6-3.7c6.4-9.9 17.3-22.4 36.9-33.3l1.3 4.4c2.7 9.6 12.7 15.1 22.3 12.4s15.1-12.7 12.4-22.3l-2.3-8.1c3.8-1.1 7.7-2.1 11.9-3.1c11.6-2.7 22.1-7.7 31.1-14.4l7.2 7.2c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-9-9c7.6-13.9 11.3-30.1 10.1-46.6l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3S370.6 64 361 66.7l-15.6 4.5c-7.7-13.9-19.1-25.1-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3zM112 272l-48-1.5c0 0 0 0 0 0c11.7 .4 27.3 .9 48 1.6zm16-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-48a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM322.7 489c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.2-12.4l4.3-15.2c8.3 .6 16.8 0 25.2-1.9c7.3-1.7 14.3-3.5 21.1-5.5l5.5 12.7c3.9 9.1 14.5 13.4 23.6 9.5s13.4-14.5 9.5-23.6l-4.4-10.4c16.6-6.7 31.7-14.4 45.4-22.8L493 450c5.5 8.3 16.7 10.5 25 5s10.5-16.7 5-25l-6-9c13.7-11 25.5-22.8 35.8-34.9l10 8c7.8 6.2 19.1 5 25.3-2.8s5-19.1-2.8-25.3L574.1 357c1.8-2.8 3.5-5.7 5.1-8.5c6.6-11.4 11.8-22.6 16-33l8 3.2c9.2 3.7 19.7-.8 23.4-10s-.8-19.7-10-23.4l-10.4-4.2c.2-.8 .4-1.5 .5-2.3c2.2-9.3 3.4-17.3 4.1-23.4c.4-3.1 .6-5.7 .8-7.8c.1-1.1 .1-2 .2-2.8l.1-1.1 0-.5 0-.2 0-.1c0 0 0-.1-29.1-1c0 0 0 0 .1 0l29.1 .9c.1-3.1 0-6.1-.2-9.1l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3s-12.7-15.1-22.3-12.4l-15.6 4.5c-7.6-13.6-18.9-25-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3s-19.5 2.8-22.3 12.4l-4.3 15.2c-1.2-.1-2.4-.2-3.6-.2c-15.6-.5-30.3 3.3-43 10.2l-9-9c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l7.2 7.2c-9.3 12.6-15.2 27.8-16.3 44.5l-7.1-3c-9.1-3.9-19.7 .3-23.6 9.5s.3 19.7 9.5 23.6l8.6 3.7c-6.4 9.9-17.3 22.4-36.9 33.3l-1.3-4.4c-2.7-9.6-12.7-15.1-22.3-12.4s-15.1 12.7-12.4 22.3l2.3 8.1c-3.8 1.1-7.7 2.1-11.9 3.1c-11.6 2.7-22.1 7.7-31.1 14.4l-7.2-7.2c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l9 9c-7.6 13.9-11.3 30.1-10.1 46.6l-15.2 4.3c-9.6 2.7-15.1 12.7-12.4 22.2s12.7 15.1 22.3 12.4l15.6-4.5c7.7 13.9 19.1 25.1 32.6 32.6L322.7 489zM576 241.5c0 0 0 0 0 0c-11.7-.4-27.3-.9-48-1.6l48 1.5zM448 384a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nconst faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M0 112C0 85.5 21.5 64 48 64l112 0 80 0 46.5 0c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8l0 12 0 16 0 48c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-13.8L273.9 352 240 352l-80 0-48 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l48 0 80 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-80 0L48 160c-26.5 0-48-21.5-48-48z\"]\n};\nconst faNotdef = {\n prefix: 'fas',\n iconName: 'notdef',\n icon: [384, 512, [], \"e1fe\", \"M64 390.3L153.5 256 64 121.7l0 268.6zM102.5 448l179.1 0L192 313.7 102.5 448zm128-192L320 390.3l0-268.6L230.5 256zM281.5 64L102.5 64 192 198.3 281.5 64zM0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 48z\"]\n};\nconst faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M236.4 61.4L227 75.5c-21.3 32-59.4 48.5-97.3 42.1l-59.6-9.9C33.4 101.6 0 129.9 .1 167.1c0 15.9 6.4 31.2 17.6 42.5l29.2 29.2c11 11 17.2 25.9 17.2 41.5c0 15.8-6.4 30.9-17.7 42L33.3 335.1C22.2 345.9 16 360.7 16 376.2c0 36.8 34.1 64.2 70.1 56.2l62.3-13.8c7.7-1.7 15.7-2.6 23.6-2.6l10 0c27.2 0 53.7 9.3 75 26.3L287.8 467c10.5 8.4 23.6 13 37 13c32.7 0 59.3-26.5 59.3-59.3l0-25.2c0-34.9 21.4-66.2 53.9-78.8l36.9-14.3c22.4-8.7 37.2-30.3 37.2-54.3c0-28.1-20.1-52.3-47.8-57.3l-28-5.1c-36.5-6.7-65.4-34.5-73.6-70.7l-7.1-31.5C348.9 53.4 322.1 32 291.3 32c-22 0-42.6 11-54.9 29.4zM160 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm0 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40L64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-64 0 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zm96 152c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [384, 512, [], \"f22d\", \"M192 144a112 112 0 1 1 0 224 112 112 0 1 1 0-224zm0 288a176 176 0 1 0 0-352 176 176 0 1 0 0 352z\"]\n};\nconst faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [9002], \"f054\", \"M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"]\n};\nconst faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [576, 512, [], \"f079\", \"M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0c-17.7 0-32-14.3-32-32l0-128 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96l112 0zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0 0-128c0-53-43-96-96-96L304 96z\"]\n};\nconst faCarRear = {\n prefix: 'fas',\n iconName: 'car-rear',\n icon: [512, 512, [\"car-alt\"], \"f5de\", \"M165.4 96l181.2 0c13.6 0 25.7 8.6 30.2 21.4L402.9 192l-293.8 0 26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256l0 80c0 23.7 12.9 44.4 32 55.4L32 448c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-48 256 0 0 48c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-56.6c19.1-11.1 32-31.7 32-55.4l0-80c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32L165.4 32c-40.8 0-77.1 25.8-90.6 64.3zM208 272l96 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zm360-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faCarAlt = faCarRear;\nconst faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [448, 512, [], \"e06b\", \"M128 32l0 96 128 0 0-32 60.1 0c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4L256 32c0-17.7-14.3-32-32-32L160 0c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512l186.4 0c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7l-149.1 0zM256 360c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9c3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C219 279.1 256 327.5 256 360z\"]\n};\nconst faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2l0-256c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9l0 17.1 0 128 0 5.8-32-25.1L416 128c0-35.3-28.7-64-64-64L113.9 64 38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5l0 256c0 35.3 28.7 64 64 64l256 0c23.4 0 43.9-12.6 55-31.3z\"]\n};\nconst faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [576, 512, [\"battery-2\"], \"f243\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm112 96l-96 0 0 128 96 0 0-128z\"]\n};\nconst faBattery2 = faBatteryQuarter;\nconst faRadio = {\n prefix: 'fas',\n iconName: 'radio',\n icon: [512, 512, [128251], \"f8d7\", \"M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192l0 4L0 304 0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-229.5 0L494.8 47zM368 240a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM80 256c0-8.8 7.2-16 16-16l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16zM64 320c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 336c-8.8 0-16-7.2-16-16zm16 64c0-8.8 7.2-16 16-16l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [\"carriage-baby\"], \"f77d\", \"M256 192L.1 192C2.7 117.9 41.3 52.9 99 14.1c13.3-8.9 30.8-4.3 39.9 8.8L256 192zm128-32c0-35.3 28.7-64 64-64l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 64c0 25.2-5.8 50.2-17 73.5s-27.8 44.5-48.6 62.3s-45.5 32-72.7 41.6S253.4 416 224 416s-58.5-5-85.7-14.6s-51.9-23.8-72.7-41.6s-37.3-39-48.6-62.3S0 249.2 0 224l224 0 160 0 0-64zM80 416a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm240 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nconst faCarriageBaby = faBabyCarriage;\nconst faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [320, 512, [128678], \"f637\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 88.4 71.6 160 160 160s160-71.6 160-160l0-288c0-35.3-28.7-64-64-64L64 0zm96 416a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm48-176a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm-48-80a48 48 0 1 1 0-96 48 48 0 1 1 0 96z\"]\n};\nconst faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M96 382.1l0-88.8c0-14.9 5.9-29.1 16.4-39.6l27.3-27.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 45.5-45.5C355.2 10.9 381.4 0 408.8 0C465.8 0 512 46.2 512 103.2c0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4l-88.8 0L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l89-89z\"]\n};\nconst faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M576 64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l120.4 0c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4L576 448c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [448, 512, [128405], \"f806\", \"M232 0c-22.1 0-40 17.9-40 40l0 164.2c-8.5-7.6-19.7-12.2-32-12.2c-26.5 0-48 21.5-48 48l0 7 0 73c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-55.7c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334L32 372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1L304 512c70.7 0 128-57.3 128-128l0-64 0-32c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 227.5 329.3 208 304 208c-12.3 0-23.5 4.6-32 12.2L272 40c0-22.1-17.9-40-40-40z\"]\n};\nconst faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [384, 512, [62101, 62785, \"percentage\"], \"25\", \"M374.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l320-320zM128 128A64 64 0 1 0 0 128a64 64 0 1 0 128 0zM384 384a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faPercentage = faPercent;\nconst faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M64 32C28.7 32 0 60.7 0 96L0 304l0 80 0 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16L416 384l33.6 0c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16l1.6 0c17.7 0 32-14.3 32-32l0-64 0-16 0-10.3c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5L480 144l0-48c0-35.3-28.7-64-64-64L64 32zM585 256l-105 0 0-64 48.8 0c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM176 400a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM80 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGlassWaterDroplet = {\n prefix: 'fas',\n iconName: 'glass-water-droplet',\n icon: [384, 512, [], \"e4f5\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3l166.6 0c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0L32 0zM83 297.5L66.4 64l251.3 0L301 297.5 288 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0s-43.9 10.1-64 0l-13-6.5zM256 196c0-24-33.7-70.1-52.2-93.5c-6.1-7.7-17.5-7.7-23.6 0C161.7 125.9 128 172 128 196c0 33.1 28.7 60 64 60s64-26.9 64-60z\"]\n};\nconst faDisplay = {\n prefix: 'fas',\n iconName: 'display',\n icon: [576, 512, [], \"e163\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l176 0-10.7 32L160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-69.3 0L336 416l176 0c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0zM512 64l0 288L64 352 64 64l448 0z\"]\n};\nconst faFaceSmile = {\n prefix: 'fas',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSmile = faFaceSmile;\nconst faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [128204, 128392, \"thumb-tack\"], \"f08d\", \"M32 32C32 14.3 46.3 0 64 0L320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-29.5 0 11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3L32 352c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64 64 64C46.3 64 32 49.7 32 32zM160 384l64 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96z\"]\n};\nconst faThumbTack = faThumbtack;\nconst faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [127942], \"f091\", \"M400 0L176 0c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8L24 64C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9L192 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-26.1 0C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24L446.4 64c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112l84.4 0c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6l84.4 0c-5.1 66.3-31.1 111.2-63 142.3z\"]\n};\nconst faPersonPraying = {\n prefix: 'fas',\n iconName: 'person-praying',\n icon: [448, 512, [128720, \"pray\"], \"f683\", \"M352 64A64 64 0 1 0 224 64a64 64 0 1 0 128 0zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432 72 432c-22.1 0-40 17.9-40 40s17.9 40 40 40l208 0c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z\"]\n};\nconst faPray = faPersonPraying;\nconst faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [128296], \"f6e3\", \"M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6l0-12.1L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0l18.1 0c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z\"]\n};\nconst faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M224 0c17.7 0 32 14.3 32 32l0 208-64 0 0-208c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zM93.3 51.2L175.9 240l-69.9 0L34.7 76.8C27.6 60.6 35 41.8 51.2 34.7s35.1 .3 42.1 16.5zm27 221.3l-.2-.5 69.9 0 26.1 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6l0 8.6c0 88.4-71.6 160-160 160l-61.7 0c-42.4 0-83.1-16.9-113.1-46.9l-11.6-11.6C77.5 429.5 64 396.9 64 363l0-27c0-32.7 24.6-59.7 56.3-63.5z\"]\n};\nconst faRotate = {\n prefix: 'fas',\n iconName: 'rotate',\n icon: [512, 512, [128260, \"sync-alt\"], \"f2f1\", \"M142.9 142.9c-17.5 17.5-30.1 38-37.8 59.8c-5.9 16.7-24.2 25.4-40.8 19.5s-25.4-24.2-19.5-40.8C55.6 150.7 73.2 122 97.6 97.6c87.2-87.2 228.3-87.5 315.8-1L455 55c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 128c0 13.3-10.7 24-24 24l-8.4 0c0 0 0 0 0 0L344 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l41.1-41.1c-62.6-61.5-163.1-61.2-225.3 1zM16 312c0-13.3 10.7-24 24-24l7.6 0 .7 0L168 288c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-41.1 41.1c62.6 61.5 163.1 61.2 225.3-1c17.5-17.5 30.1-38 37.8-59.8c5.9-16.7 24.2-25.4 40.8-19.5s25.4 24.2 19.5 40.8c-10.8 30.6-28.4 59.3-52.9 83.8c-87.2 87.2-228.3 87.5-315.8 1L57 457c-6.9 6.9-17.2 8.9-26.2 5.2S16 449.7 16 440l0-119.6 0-.7 0-7.6z\"]\n};\nconst faSyncAlt = faRotate;\nconst faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z\"]\n};\nconst faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [129302], \"f544\", \"M320 0c17.7 0 32 14.3 32 32l0 64 120 0c39.8 0 72 32.2 72 72l0 272c0 39.8-32.2 72-72 72l-304 0c-39.8 0-72-32.2-72-72l0-272c0-39.8 32.2-72 72-72l120 0 0-64c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224l16 0 0 192-16 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-16 0 0-192 16 0z\"]\n};\nconst faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [512, 512, [9774], \"f67c\", \"M224 445.3l0-121.8-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8l0-174.2C133.2 81.9 64 160.9 64 256c0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5L288 323.5l0 121.8c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1c0-95.1-69.2-174.1-160-189.3l0 174.2L422.8 351.1zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faGears = {\n prefix: 'fas',\n iconName: 'gears',\n icon: [640, 512, [\"cogs\"], \"f085\", \"M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8l-.7 0c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faCogs = faGears;\nconst faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M0 488L0 171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4L640 488c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-264c0-17.7-14.3-32-32-32l-384 0c-17.7 0-32 14.3-32 32l0 264c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zm488 24l-336 0c-13.3 0-24-10.7-24-24l0-56 384 0 0 56c0 13.3-10.7 24-24 24zM128 400l0-64 384 0 0 64-384 0zm0-96l0-80 384 0 0 80-384 0z\"]\n};\nconst faArrowUpRightDots = {\n prefix: 'fas',\n iconName: 'arrow-up-right-dots',\n icon: [576, 512, [], \"e4b7\", \"M160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l50.7 0L9.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3l0 50.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L160 0zM576 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM448 208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm128 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM272 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM144 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM576 336a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-48-80a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M208.5 62.3l28.1-36.9C248.8 9.4 267.8 0 288 0c28.5 0 53.6 18.7 61.8 46l17.8 59.4c10.3 34.4 36.1 62 69.8 74.6l39.8 14.9c20.9 7.9 34.8 27.9 34.8 50.2c0 16.9-7.9 32.8-21.5 42.9l-67.3 50.5c-24.3 18.2-37.2 47.9-33.8 78.1l2.5 22.7c4.3 38.7-26 72.6-65 72.6c-14.8 0-29.3-5.1-40.8-14.3l-55.4-44.3c-4.5-3.6-9.3-6.7-14.5-9.2c-15.8-7.9-33.7-10.4-51-7.3L82.4 451.9C47.8 458.2 16 431.6 16 396.5c0-13.2 4.7-26 13.1-36.2l11.2-13.4c14.6-17.4 22.6-39.4 22.6-62.1c0-18.8-5.5-37.2-15.8-53L8.8 173.5C3.1 164.7 0 154.4 0 143.9c0-33.4 30.1-58.8 63-53.2l51.3 8.7c35.9 6.1 72.2-8.2 94.2-37.1z\"]\n};\nconst faFaceGrinHearts = {\n prefix: 'fas',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM199.3 129.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm154.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nconst faGrinHearts = faFaceGrinHearts;\nconst faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [9859], \"f524\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM352 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M64 0L242.7 0c17 0 33.3 6.7 45.3 18.7L365.3 96c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0zM96 192c-17.7 0-32 14.3-32 32l0 32 64 0 0-64-32 0zM64 352l80 0 96 0 80 0 0-64-80 0-96 0-80 0 0 64zM320 224c0-17.7-14.3-32-32-32l-32 0 0 64 64 0 0-32zM160 192l0 64 64 0 0-64-64 0zM288 448c17.7 0 32-14.3 32-32l0-32-64 0 0 64 32 0zM160 384l0 64 64 0 0-64-64 0zM64 416c0 17.7 14.3 32 32 32l32 0 0-64-64 0 0 32z\"]\n};\nconst faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [512, 512, [9895, \"transgender-alt\"], \"f225\", \"M112 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-31 31L112 78.1l7-7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-7 7 15.2 15.2C187.7 107.6 220.5 96 256 96s68.3 11.6 94.9 31.2l68.8-68.8-31-31c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9l96 0c8.8 0 16 7.2 16 16l0 96c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-31-31-68.8 68.8C404.4 187.7 416 220.5 416 256c0 80.2-59 146.6-136 158.2l0 17.8 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0 0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-17.8C155 402.6 96 336.2 96 256c0-35.5 11.6-68.3 31.2-94.9L112 145.9l-7 7c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l7-7L58.3 92.3l-31 31c-4.6 4.6-11.5 5.9-17.4 3.5S0 118.5 0 112L0 16C0 7.2 7.2 0 16 0l96 0zM352 256a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nconst faTransgenderAlt = faTransgender;\nconst faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [384, 512, [9791], \"f223\", \"M72.1 7C85.8-4 106-1.8 117 12c17.6 22 44.7 36 75 36s57.3-14 75-36c11.1-13.8 31.2-16 45-5s16 31.2 5 45c-7.8 9.7-16.6 18.4-26.4 26.1C337.3 109.7 368 163.3 368 224c0 89.1-66.2 162.7-152 174.4l0 25.6 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 16c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-16-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-25.6C82.2 386.7 16 313.1 16 224c0-60.7 30.7-114.3 77.5-145.9C83.7 70.5 74.9 61.7 67.1 52c-11.1-13.8-8.8-33.9 5-45zM80 224a112 112 0 1 0 224 0A112 112 0 1 0 80 224z\"]\n};\nconst faArrowTurnDown = {\n prefix: 'fas',\n iconName: 'arrow-turn-down',\n icon: [384, 512, [\"level-down\"], \"f149\", \"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"]\n};\nconst faLevelDown = faArrowTurnDown;\nconst faPersonFallingBurst = {\n prefix: 'fas',\n iconName: 'person-falling-burst',\n icon: [640, 512, [], \"e547\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 9.8c0 39-23.7 74-59.9 88.4C71.6 154.5 32 213 32 278.2L32 352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-73.8c0-10 1.6-19.8 4.5-29L261.1 497.4c9.6 14.8 29.4 19.1 44.3 9.5s19.1-29.4 9.5-44.3L222.6 320l1.4 0 80 0 38.4 51.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C341.3 263.1 327.1 256 312 256l-71.5 0-56.8-80.2-.2-.3c44.7-29 72.5-79 72.5-133.6l0-9.8zM96 80A48 48 0 1 0 0 80a48 48 0 1 0 96 0zM464 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 78.7-12.2c6.5-1 11.7-5.9 13.1-12.2s-1.1-13-6.5-16.7l-65.6-45.1L603 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L508.3 92.1l-29.4-74C476.4 12 470.6 8 464 8s-12.4 4-14.9 10.1l-29.4 74L343.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7c.1 .3 .1 .6 .2 .8l19.4 0c20.1 0 39.2 7.5 53.8 20.8l18.4 2.9L383 265.3l36.2 48.3c2.1 2.8 3.9 5.7 5.5 8.6L464 286.1z\"]\n};\nconst faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M173.8 5.5c11-7.3 25.4-7.3 36.4 0L228 17.2c6 3.9 13 5.8 20.1 5.4l21.3-1.3c13.2-.8 25.6 6.4 31.5 18.2l9.6 19.1c3.2 6.4 8.4 11.5 14.7 14.7L344.5 83c11.8 5.9 19 18.3 18.2 31.5l-1.3 21.3c-.4 7.1 1.5 14.2 5.4 20.1l11.8 17.8c7.3 11 7.3 25.4 0 36.4L366.8 228c-3.9 6-5.8 13-5.4 20.1l1.3 21.3c.8 13.2-6.4 25.6-18.2 31.5l-19.1 9.6c-6.4 3.2-11.5 8.4-14.7 14.7L301 344.5c-5.9 11.8-18.3 19-31.5 18.2l-21.3-1.3c-7.1-.4-14.2 1.5-20.1 5.4l-17.8 11.8c-11 7.3-25.4 7.3-36.4 0L156 366.8c-6-3.9-13-5.8-20.1-5.4l-21.3 1.3c-13.2 .8-25.6-6.4-31.5-18.2l-9.6-19.1c-3.2-6.4-8.4-11.5-14.7-14.7L39.5 301c-11.8-5.9-19-18.3-18.2-31.5l1.3-21.3c.4-7.1-1.5-14.2-5.4-20.1L5.5 210.2c-7.3-11-7.3-25.4 0-36.4L17.2 156c3.9-6 5.8-13 5.4-20.1l-1.3-21.3c-.8-13.2 6.4-25.6 18.2-31.5l19.1-9.6C65 70.2 70.2 65 73.4 58.6L83 39.5c5.9-11.8 18.3-19 31.5-18.2l21.3 1.3c7.1 .4 14.2-1.5 20.1-5.4L173.8 5.5zM272 192a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM1.3 441.8L44.4 339.3c.2 .1 .3 .2 .4 .4l9.6 19.1c11.7 23.2 36 37.3 62 35.8l21.3-1.3c.2 0 .5 0 .7 .2l17.8 11.8c5.1 3.3 10.5 5.9 16.1 7.7l-37.6 89.3c-2.3 5.5-7.4 9.2-13.3 9.7s-11.6-2.2-14.8-7.2L74.4 455.5l-56.1 8.3c-5.7 .8-11.4-1.5-15-6s-4.3-10.7-2.1-16zm248 60.4L211.7 413c5.6-1.8 11-4.3 16.1-7.7l17.8-11.8c.2-.1 .4-.2 .7-.2l21.3 1.3c26 1.5 50.3-12.6 62-35.8l9.6-19.1c.1-.2 .2-.3 .4-.4l43.2 102.5c2.2 5.3 1.4 11.4-2.1 16s-9.3 6.9-15 6l-56.1-8.3-32.2 49.2c-3.2 5-8.9 7.7-14.8 7.2s-11-4.3-13.3-9.7z\"]\n};\nconst faTicketSimple = {\n prefix: 'fas',\n iconName: 'ticket-simple',\n icon: [576, 512, [\"ticket-alt\"], \"f3ff\", \"M0 128C0 92.7 28.7 64 64 64l448 0c35.3 0 64 28.7 64 64l0 64c0 8.8-7.4 15.7-15.7 18.6C541.5 217.1 528 235 528 256s13.5 38.9 32.3 45.4c8.3 2.9 15.7 9.8 15.7 18.6l0 64c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64l0-64c0-8.8 7.4-15.7 15.7-18.6C34.5 294.9 48 277 48 256s-13.5-38.9-32.3-45.4C7.4 207.7 0 200.8 0 192l0-64z\"]\n};\nconst faTicketAlt = faTicketSimple;\nconst faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z\"]\n};\nconst faAnglesLeft = {\n prefix: 'fas',\n iconName: 'angles-left',\n icon: [512, 512, [171, \"angle-double-left\"], \"f100\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n};\nconst faAngleDoubleLeft = faAnglesLeft;\nconst faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 80C0 53.5 21.5 32 48 32l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48L0 80zM64 96l0 64 64 0 0-64L64 96zM0 336c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96zm64 16l0 64 64 0 0-64-64 0zM304 32l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48zm80 64l-64 0 0 64 64 0 0-64zM256 304c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16l0 96c0 8.8-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-160zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z\"]\n};\nconst faClockRotateLeft = {\n prefix: 'fas',\n iconName: 'clock-rotate-left',\n icon: [512, 512, [\"history\"], \"f1da\", \"M75 75L41 41C25.9 25.9 0 36.6 0 57.9L0 168c0 13.3 10.7 24 24 24l110.1 0c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24l0 104c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65 0-94.1c0-13.3-10.7-24-24-24z\"]\n};\nconst faHistory = faClockRotateLeft;\nconst faFaceGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3c-4.1 1.1-8.4 1.7-12.8 1.7c-26.5 0-48-21-48-47c0-5 1.8-11.3 4.6-18.1c.3-.7 .6-1.4 .9-2.1c9-20.2 26.5-44.9 36-57.5c3.2-4.4 9.6-4.4 12.8 0C483.4 20.6 512 61 512 81c0 21.7-14.9 39.8-35.2 45.3zM256 0c51.4 0 99.3 15.2 139.4 41.2c-1.5 3.1-3 6.2-4.3 9.3c-3.4 8-7.1 19-7.1 30.5c0 44.3 36.6 79 80 79c9.6 0 18.8-1.7 27.4-4.8c13.3 30.9 20.6 65 20.6 100.8c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0zM383.8 317.8C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7c5.1-11.8-6.9-22.4-19.2-18.7zm-166.2-89s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0c0 0 0 0 0 0zm160 0s0 0 0 0s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0z\"]\n};\nconst faGrinBeamSweat = faFaceGrinBeamSweat;\nconst faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [\"arrow-right-from-file\"], \"f56e\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 128-168 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l168 0 0 112c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM384 336l0-48 110.1 0-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39L384 336zm0-208l-128 0L256 0 384 128z\"]\n};\nconst faArrowRightFromFile = faFileExport;\nconst faShield = {\n prefix: 'fas',\n iconName: 'shield',\n icon: [512, 512, [128737, \"shield-blank\"], \"f132\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0z\"]\n};\nconst faShieldBlank = faShield;\nconst faArrowUpShortWide = {\n prefix: 'fas',\n iconName: 'arrow-up-short-wide',\n icon: [576, 512, [\"sort-amount-up-alt\"], \"f885\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0z\"]\n};\nconst faSortAmountUpAlt = faArrowUpShortWide;\nconst faHouseMedical = {\n prefix: 'fas',\n iconName: 'house-medical',\n icon: [576, 512, [], \"e3b2\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 160.4c0 35.3 28.7 64 64 64l320.4 0c35.5 0 64.2-28.8 64-64.3l-.7-160.2 32 0zM256 208c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faGolfBallTee = {\n prefix: 'fas',\n iconName: 'golf-ball-tee',\n icon: [384, 512, [\"golf-ball\"], \"f450\", \"M384 192c0 66.8-34.1 125.6-85.8 160L85.8 352C34.1 317.6 0 258.8 0 192C0 86 86 0 192 0S384 86 384 192zM242.1 256.6c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zm-52.3-49.3c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4c0 18.5-15 33.5-33.5 33.5zm113.5-17.5c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zM96 416c0-17.7 14.3-32 32-32l64 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0c-8.8 0-16 7.2-16 16l0 16c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-16c0-8.8-7.2-16-16-16l-16 0c-17.7 0-32-14.3-32-32z\"]\n};\nconst faGolfBall = faGolfBallTee;\nconst faCircleChevronLeft = {\n prefix: 'fas',\n iconName: 'circle-chevron-left',\n icon: [512, 512, [\"chevron-circle-left\"], \"f137\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"]\n};\nconst faChevronCircleLeft = faCircleChevronLeft;\nconst faHouseChimneyWindow = {\n prefix: 'fas',\n iconName: 'house-chimney-window',\n icon: [576, 512, [], \"e00d\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-320.4 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7 416 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 121 52.8 46.4c8 7 12 15 11 24zM248 192c-13.3 0-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-80c0-13.3-10.7-24-24-24l-80 0z\"]\n};\nconst faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [10001], \"f5ad\", \"M368.4 18.3L312.7 74.1 437.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L447.6 18.3c-21.9-21.9-57.3-21.9-79.2 0zM288 94.6l-9.2 2.8L134.7 140.6c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-3.8 11.3-1 23.9 7.3 32.4L164.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48c-7.4 0-14.4-1.7-20.7-4.7L33.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 2.7-9.2L288 94.6z\"]\n};\nconst faTentArrowTurnLeft = {\n prefix: 'fas',\n iconName: 'tent-arrow-turn-left',\n icon: [576, 512, [], \"e580\", \"M120.1 41.8c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120 456 120c39.8 0 72 32.2 72 72l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-66.3-53.7-120-120-120L86.5 72l33.5-30.2zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faTents = {\n prefix: 'fas',\n iconName: 'tents',\n icon: [640, 512, [], \"e582\", \"M396.6 6.5L235.8 129.1c9.6 1.8 18.9 5.8 27 12l168 128c13.2 10.1 22 24.9 24.5 41.4l6.2 41.5L608 352c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128c-11.5-8.7-27.3-8.7-38.8 0zm-153.2 160c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S22.7 512 32 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faWandMagic = {\n prefix: 'fas',\n iconName: 'wand-magic',\n icon: [512, 512, [\"magic\"], \"f0d0\", \"M14.1 463.3c-18.7-18.7-18.7-49.1 0-67.9L395.4 14.1c18.7-18.7 49.1-18.7 67.9 0l34.6 34.6c18.7 18.7 18.7 49.1 0 67.9L116.5 497.9c-18.7 18.7-49.1 18.7-67.9 0L14.1 463.3zM347.6 187.6l105-105L429.4 59.3l-105 105 23.3 23.3z\"]\n};\nconst faMagic = faWandMagic;\nconst faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [128021], \"f6d3\", \"M309.6 158.5L332.7 19.8C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32l52.1 0c12.7 0 24.9 5.1 33.9 14.1L496 64l56 0c13.3 0 24 10.7 24 24l0 24c0 44.2-35.8 80-80 80l-32 0-16 0-21.3 0-5.1 30.5-112-64zM416 256.1L416 480c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-115.2c-24 12.3-51.2 19.2-80 19.2s-56-6.9-80-19.2L160 480c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-230.2c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192l30 0 16 0 159.8 0L416 256.1zM464 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [129365], \"f787\", \"M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM244.6 136c-40 0-77.1 18.1-101.7 48.2l60.5 60.5c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-55.3-55.3 0 .1L2.2 477.9C-2 487-.1 497.8 7 505s17.9 9 27.1 4.8l134.7-62.4-52.1-52.1c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L199.7 433l100.2-46.4c46.4-21.5 76.2-68 76.2-119.2C376 194.8 317.2 136 244.6 136z\"]\n};\nconst faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [384, 512, [127769, 9214], \"f186\", \"M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z\"]\n};\nconst faWineGlassEmpty = {\n prefix: 'fas',\n iconName: 'wine-glass-empty',\n icon: [320, 512, [\"wine-glass-alt\"], \"f5ce\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6l0 99.6-48 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0 0-99.6c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0L64 0zM81.9 203.1L93.4 64l133.1 0 11.6 139.1C242 248.8 205.9 288 160 288s-82-39.2-78.1-84.9z\"]\n};\nconst faWineGlassAlt = faWineGlassEmpty;\nconst faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M512 240.2l0 15.8L0 256c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7C418.8 32 512 125.2 512 240.2zm0 47.8l0 128c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 288l512 0z\"]\n};\nconst faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [512, 512, [9775], \"f6ad\", \"M256 64c53 0 96 43 96 96s-43 96-96 96s-96 43-96 96s43 96 96 96C150 448 64 362 64 256S150 64 256 64zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm32-352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [127925], \"f001\", \"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7l0 72 0 264c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6L448 147 192 223.8 192 432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6L128 200l0-72c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"]\n};\nconst faCodeCommit = {\n prefix: 'fas',\n iconName: 'code-commit',\n icon: [640, 512, [], \"f386\", \"M320 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm156.8-48C462 361 397.4 416 320 416s-142-55-156.8-128L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l131.2 0C178 151 242.6 96 320 96s142 55 156.8 128L608 224c17.7 0 32 14.3 32 32s-14.3 32-32 32l-131.2 0z\"]\n};\nconst faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M448 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 96a96 96 0 1 1 192 0A96 96 0 1 1 320 96zM144 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C70.2 332.6 64 349.5 64 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L192 112c0-26.5-21.5-48-48-48zM32 112C32 50.2 82.1 0 144 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S0 447.5 0 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L32 112zM192 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3l0-50.7c0-8.8 7.2-16 16-16s16 7.2 16 16l0 50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faPersonBiking = {\n prefix: 'fas',\n iconName: 'person-biking',\n icon: [640, 512, [128692, \"biking\"], \"f84a\", \"M400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1 288 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-52.8 0zM56 384a72 72 0 1 1 144 0A72 72 0 1 1 56 384zm200 0A128 128 0 1 0 0 384a128 128 0 1 0 256 0zm184 0a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zm200 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nconst faBiking = faPersonBiking;\nconst faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [576, 512, [129529], \"f51a\", \"M566.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192-34.7-34.7c-4.2-4.2-10-6.6-16-6.6c-12.5 0-22.6 10.1-22.6 22.6l0 29.1L364.3 320l29.1 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16l-34.7-34.7 192-192zM341.1 353.4L222.6 234.9c-42.7-3.7-85.2 11.7-115.8 42.3l-8 8C76.5 307.5 64 337.7 64 369.2c0 6.8 7.1 11.2 13.2 8.2l51.1-25.5c5-2.5 9.5 4.1 5.4 7.9L7.3 473.4C2.7 477.6 0 483.6 0 489.9C0 502.1 9.9 512 22.1 512l173.3 0c38.8 0 75.9-15.4 103.4-42.8c30.6-30.6 45.9-73.1 42.3-115.8z\"]\n};\nconst faShieldHeart = {\n prefix: 'fas',\n iconName: 'shield-heart',\n icon: [512, 512, [], \"e574\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM144 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"]\n};\nconst faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M120 0c13.3 0 24 10.7 24 24l0 8 40 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 48 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 40 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 0 32 0 64c17.7 0 32 14.3 32 32l0 64c17.7 0 32 14.3 32 32l0 96c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-64 0 0-160-32 0 0-128-32 0 0-96-32 0 0 96 32 0 0 128 32 0 0 160-80 0 0-48c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 48-80 0 0-160 32 0 0-128 32 0 0-96-32 0 0 96-32 0 0 128-32 0 0 160-64 0c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32l0-96c0-17.7 14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l0-64 0-32 0-8c0-13.3 10.7-24 24-24zM256 272c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-32-80l0 32 64 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faEarthOceania = {\n prefix: 'fas',\n iconName: 'earth-oceania',\n icon: [512, 512, [\"globe-oceania\"], \"e47b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208.6 357.3l-39-13.5c-6.5-2.2-13.6-2.3-20.1-.3l-15.3 4.9c-18.5 5.9-38.5-2.4-47.5-19.5l-3.3-6.2c-10.6-20.1-2.3-45 18.2-54.7l35.3-16.8c2.3-1.1 4.4-2.8 5.9-4.8l5.3-7c7.2-9.6 18.6-15.3 30.6-15.3s23.4 5.7 30.6 15.3l4.6 6.1c2 2.6 4.9 4.5 8.1 5.1c7.8 1.6 15.7-1.5 20.4-7.9l10.4-14.2c2-2.8 5.3-4.4 8.7-4.4c4.4 0 8.4 2.7 10 6.8l10.1 25.9c2.8 7.2 6.7 14 11.5 20.2L311 299.8c5.8 7.4 9 16.6 9 26s-3.2 18.6-9 26L299 367.2c-8.3 10.6-21 16.8-34.4 16.8c-8.4 0-16.6-2.4-23.7-7l-25.4-16.4c-2.2-1.4-4.5-2.5-6.9-3.4zm65.2-214.8L296 164.7c10.1 10.1 2.9 27.3-11.3 27.3l-29.9 0c-5.6 0-11.1-1.2-16.2-3.4l-42.8-19c-14.3-6.3-11.9-27.3 3.4-30.3l38.5-7.7c13.1-2.6 26.7 1.5 36.1 10.9zM248 432c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16zM431.2 298.9l8 24c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1l-8-24c-2.8-8.4 1.7-17.4 10.1-20.2s17.4 1.7 20.2 10.1zm-19.9 80.4l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faGlobeOceania = faEarthOceania;\nconst faSquareXmark = {\n prefix: 'fas',\n iconName: 'square-xmark',\n icon: [448, 512, [10062, \"times-square\", \"xmark-square\"], \"f2d3\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm79 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faTimesSquare = faSquareXmark;\nconst faXmarkSquare = faSquareXmark;\nconst faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [62098], \"23\", \"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128l95.1 0 11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128l58.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-68.9 0L325.8 320l58.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-68.9 0-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7-95.1 0-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384 32 384c-17.7 0-32-14.3-32-32s14.3-32 32-32l68.9 0 21.3-128L64 192c-17.7 0-32-14.3-32-32s14.3-32 32-32l68.9 0 11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320l95.1 0 21.3-128-95.1 0z\"]\n};\nconst faUpRightAndDownLeftFromCenter = {\n prefix: 'fas',\n iconName: 'up-right-and-down-left-from-center',\n icon: [512, 512, [\"expand-alt\"], \"f424\", \"M344 0L488 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512L24 512c-13.3 0-24-10.7-24-24L0 344c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z\"]\n};\nconst faExpandAlt = faUpRightAndDownLeftFromCenter;\nconst faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32-80 0-48 0-48 0c-26.5 0-48 21.5-48 48l0 64.8c0 19 11.2 36.2 28.5 43.9l67.5 30L96 368c0 26.5 21.5 48 48 48l259.1 0c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192l-50.5-25.2c-8.9-4.4-18.7-6.8-28.6-6.8L288 160l0-32 32 0zM96 208l0 86.1L48 272.8 48 208l48 0z\"]\n};\nconst faT = {\n prefix: 'fas',\n iconName: 't',\n icon: [384, 512, [116], \"54\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l128 0 0 352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-352 128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 32 32 32z\"]\n};\nconst faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [129435], \"f6ed\", \"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2l32 0c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1c0 10.2 7.4 18.8 16.7 23c27.9 12.5 47.3 40.5 47.3 73c0 26.2-12.6 49.4-32 64l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-16-64 0 0 16c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-17.6c-11.8-2.4-22.7-7.4-32-14.4c-1.5-1.1-2.9-2.3-4.3-3.5c-17-14.7-27.7-36.4-27.7-60.5c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2l0 10.8c0 17.7 14.3 32 32 32l32 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-76c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12l0 76c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-118.9L45.9 369.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7C32 155.7 117.2 68 223.8 64.1l.2-.1 7.2 0L256 64l32 0c41.7 0 83.4 12.1 117.2 25.7c1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM480 144a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faChartColumn = {\n prefix: 'fas',\n iconName: 'chart-column',\n icon: [512, 512, [], \"e0e3\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm128-64l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64 32c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zM480 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [8734, 9854], \"f534\", \"M0 241.1C0 161 65 96 145.1 96c38.5 0 75.4 15.3 102.6 42.5L320 210.7l72.2-72.2C419.5 111.3 456.4 96 494.9 96C575 96 640 161 640 241.1l0 29.7C640 351 575 416 494.9 416c-38.5 0-75.4-15.3-102.6-42.5L320 301.3l-72.2 72.2C220.5 400.7 183.6 416 145.1 416C65 416 0 351 0 270.9l0-29.7zM274.7 256l-72.2-72.2c-15.2-15.2-35.9-23.8-57.4-23.8C100.3 160 64 196.3 64 241.1l0 29.7c0 44.8 36.3 81.1 81.1 81.1c21.5 0 42.2-8.5 57.4-23.8L274.7 256zm90.5 0l72.2 72.2c15.2 15.2 35.9 23.8 57.4 23.8c44.8 0 81.1-36.3 81.1-81.1l0-29.7c0-44.8-36.3-81.1-81.1-81.1c-21.5 0-42.2 8.5-57.4 23.8L365.3 256z\"]\n};\nconst faVialCircleCheck = {\n prefix: 'fas',\n iconName: 'vial-circle-check',\n icon: [512, 512, [], \"e596\", \"M0 64C0 46.3 14.3 32 32 32l64 0 64 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 170.8c-20.2 28.6-32 63.5-32 101.2c0 25.2 5.3 49.1 14.8 70.8C189.5 463.7 160.6 480 128 480c-53 0-96-43-96-96L32 96C14.3 96 0 81.7 0 64zM96 96l0 96 64 0 0-96L96 96zM224 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L352 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faPersonArrowDownToLine = {\n prefix: 'fas',\n iconName: 'person-arrow-down-to-line',\n icon: [640, 512, [], \"e538\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352l0-96 16 0 0 96-16 0zm-64 0l-88 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l120 0 80 0 376 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-344 0 0-191.1 28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6l-29.7 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 448zM464 64l0 242.7-25.4-25.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L528 306.7 528 64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M144 320a80 80 0 1 1 0-160 80 80 0 1 1 0 160zm119.8 0c15.3-22.9 24.2-50.4 24.2-80c0-79.5-64.5-144-144-144S0 160.5 0 240s64.5 144 144 144l352 0c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144c0 29.6 8.9 57.1 24.2 80l-112.5 0zM496 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M258.6 0c-1.7 0-3.4 .1-5.1 .5C168 17 115.6 102.3 130.5 189.3c2.9 17 8.4 32.9 15.9 47.4L32 224l-2.6 0C13.2 224 0 237.2 0 253.4c0 1.7 .1 3.4 .5 5.1C17 344 102.3 396.4 189.3 381.5c17-2.9 32.9-8.4 47.4-15.9L224 480l0 2.6c0 16.2 13.2 29.4 29.4 29.4c1.7 0 3.4-.1 5.1-.5C344 495 396.4 409.7 381.5 322.7c-2.9-17-8.4-32.9-15.9-47.4L480 288l2.6 0c16.2 0 29.4-13.2 29.4-29.4c0-1.7-.1-3.4-.5-5.1C495 168 409.7 115.6 322.7 130.5c-17 2.9-32.9 8.4-47.4 15.9L288 32l0-2.6C288 13.2 274.8 0 258.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faPersonWalkingLuggage = {\n prefix: 'fas',\n iconName: 'person-walking-luggage',\n icon: [576, 512, [], \"e554\", \"M432 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM347.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L505 232.7l-15.3-36.8C472.5 154.8 432.3 128 387.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L340.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM256 274.1c-7.7-4.4-17.4-1.8-21.9 5.9l-32 55.4L147.7 304c-15.3-8.8-34.9-3.6-43.7 11.7L40 426.6c-8.8 15.3-3.6 34.9 11.7 43.7l55.4 32c15.3 8.8 34.9 3.6 43.7-11.7l64-110.9c1.5-2.6 2.6-5.2 3.3-8L261.9 296c4.4-7.7 1.8-17.4-5.9-21.9z\"]\n};\nconst faUpDown = {\n prefix: 'fas',\n iconName: 'up-down',\n icon: [256, 512, [8597, 11021, \"arrows-alt-v\"], \"f338\", \"M145.6 7.7C141 2.8 134.7 0 128 0s-13 2.8-17.6 7.7l-104 112c-6.5 7-8.2 17.2-4.4 25.9S14.5 160 24 160l56 0 0 192-56 0c-9.5 0-18.2 5.7-22 14.4s-2.1 18.9 4.4 25.9l104 112c4.5 4.9 10.9 7.7 17.6 7.7s13-2.8 17.6-7.7l104-112c6.5-7 8.2-17.2 4.4-25.9s-12.5-14.4-22-14.4l-56 0 0-192 56 0c9.5 0 18.2-5.7 22-14.4s2.1-18.9-4.4-25.9l-104-112z\"]\n};\nconst faArrowsAltV = faUpDown;\nconst faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M481.2 0C417 0 363.5 46.5 353.7 107.6c35.4 17.6 60.2 53.3 62.1 95.1c23.2 11 42 29.7 53.1 52.7c4 .4 8.1 .6 12.3 .6c34.9 0 66.7-13.8 89.9-36.1c5.1-4.9 6.4-12.5 3.2-18.7s-10.1-9.7-17-8.6c-4.9 .8-10 1.3-15.2 1.3c-49 0-88.4-39.3-88.4-87.4c0-32.6 18-61.1 44.9-76.1c6.1-3.4 9.3-10.5 7.8-17.4s-7.3-12-14.3-12.6c-3.6-.3-7.3-.5-10.9-.5zM367.9 383.9c44.2 0 80-35.8 80-80c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C241.3 114.6 210.8 96 176 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96l271.9 0zM85.4 420.1c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3z\"]\n};\nconst faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M96 32l0 32L48 64C21.5 64 0 85.5 0 112l0 48 448 0 0-48c0-26.5-21.5-48-48-48l-48 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L160 64l0-32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192L0 192 0 464c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-272z\"]\n};\nconst faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M48 32C21.5 32 0 53.5 0 80L0 336c0 26.5 21.5 48 48 48l17.1 0c7.8-54.3 54.4-96 110.9-96s103.1 41.7 110.9 96L488 384l8 0 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-240c0-26.5-21.5-48-48-48L48 32zM80 96c8.8 0 16 7.2 16 16l0 131.2c-11.4 5.9-22.2 12.9-32 21L64 112c0-8.8 7.2-16 16-16zm96 128c-5.4 0-10.7 .2-16 .7L160 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112.7c-5.3-.5-10.6-.7-16-.7zm80 19.2L256 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 152.2c-9.8-8.1-20.6-15.2-32-21zM368 96c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16zm112 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16s16 7.2 16 16zM176 480a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-112a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [576, 512, [\"haykal\"], \"f666\", \"M288 0c14.5 0 27.2 9.7 30.9 23.8l23.9 89.6 75.9-53.3c11.9-8.3 27.8-7.6 39 1.7s14.6 24.9 8.4 38.1l-39.3 84 92.4 8c14.4 1.2 26.2 12 28.8 26.3s-4.9 28.5-18 34.6l-84.1 39.1 65.7 65.5c10.3 10.2 12.4 26.1 5.1 38.7s-22 18.7-36 14.9L391 386.8l8.2 92.4c1.3 14.4-7.3 27.9-20.9 32.9s-28.9 .1-37.2-11.7l-53.1-76-53.1 76c-8.3 11.9-23.6 16.7-37.2 11.7s-22.2-18.5-20.9-32.9l8.2-92.4L95.4 410.9c-14 3.8-28.8-2.3-36-14.9s-5.2-28.4 5.1-38.7l65.7-65.5L46 252.7c-13.1-6.1-20.5-20.3-18-34.6s14.3-25.1 28.8-26.3l92.4-8-39.3-84c-6.1-13.1-2.7-28.8 8.4-38.1s27.1-10 39-1.7l75.9 53.3 23.9-89.6C260.8 9.7 273.5 0 288 0zm0 156.2l-4.8 18c-2.7 10.1-10.2 18.2-20 21.8s-20.8 2.1-29.3-3.9l-15.2-10.7 7.9 16.8c4.4 9.5 4 20.5-1.3 29.6s-14.5 15-25 15.9l-18.5 1.6 16.8 7.8c9.5 4.4 16.2 13.2 18 23.5s-1.5 20.8-8.9 28.2l-13.2 13.1 17.9-4.8c10.1-2.7 20.9-.3 28.9 6.4s12.2 16.9 11.3 27.3l-1.6 18.5 10.6-15.2c6-8.6 15.8-13.7 26.2-13.7s20.2 5.1 26.2 13.7l10.6 15.2-1.6-18.5c-.9-10.4 3.3-20.6 11.3-27.3s18.8-9.1 28.9-6.4l17.9 4.8-13.2-13.1c-7.4-7.4-10.7-17.9-8.9-28.2s8.5-19.1 18-23.5l16.8-7.8-18.5-1.6c-10.4-.9-19.7-6.8-25-15.9s-5.7-20.1-1.3-29.6l7.9-16.8-15.2 10.7c-8.6 6-19.5 7.5-29.3 3.9s-17.3-11.7-20-21.8l-4.8-18z\"]\n};\nconst faHaykal = faBahai;\nconst faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0L141.3 0C124.3 0 108 6.7 96 18.7L18.7 96C6.7 108 0 124.3 0 141.3L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64zM160 88l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [128009], \"f6d5\", \"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4L294.4 28.8c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0L416 0l32 0 16 0c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8c0 26.5-21.5 48-48 48l-21.5 0c-17 0-33.3-6.7-45.3-18.7L480 160l-32 0 0 21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1C640 462.9 590.9 512 530.2 512L496 512l-64 0L32.3 512c-3.3 0-6.6-.4-9.6-1.4C13.5 507.8 6 501 2.4 492.1C1 488.7 .2 485.2 0 481.4c-.2-3.7 .3-7.3 1.3-10.7c2.8-9.2 9.6-16.7 18.6-20.4c3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1c0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1l0-45.5 0-57zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3l0 .6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9c0 13.3 10.7 24 24 24c10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87 0 27.5c0 32.8 8.4 64.8 24 93l-232 0c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9s-1.5-14.1 3.8-18.8L130.9 116.5z\"]\n};\nconst faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M416 0C352.3 0 256 32 256 32l0 128c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64l32 0 0-128-32 0c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32l0 128s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64l32 0 0-128-32 0c-35.3 0-64 28.7-64 64z\"]\n};\nconst faCirclePlus = {\n prefix: 'fas',\n iconName: 'circle-plus',\n icon: [512, 512, [\"plus-circle\"], \"f055\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nconst faPlusCircle = faCirclePlus;\nconst faFaceGrinTongueWink = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M174.5 498.8C73.1 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 112.9-73.1 208.7-174.5 242.8C346.7 484 352 466.6 352 448l0-46.9c24.3-17.5 43.6-41.6 55.4-69.6c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c11.7 27.8 30.8 51.7 54.8 69.2l0 47.3c0 18.6 5.3 36 14.5 50.8zm20.7-265.2c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM336 272a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM320 402.6l0 45.4c0 35.3-28.7 64-64 64s-64-28.7-64-64l0-45.4c0-14.7 11.9-26.6 26.6-26.6l2 0c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9l2 0c14.7 0 26.6 11.9 26.6 26.6zM336 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faGrinTongueWink = faFaceGrinTongueWink;\nconst faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 272 416c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0-16 0-78.3 0c-29.1 0-57.3 9.9-80 28L68.8 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l160 0 160.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2c.3 0 .6 0 .9 0c0 0 0 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nconst faPlugCircleExclamation = {\n prefix: 'fas',\n iconName: 'plug-circle-exclamation',\n icon: [576, 512, [], \"e55d\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faLinkSlash = {\n prefix: 'fas',\n iconName: 'link-slash',\n icon: [640, 512, [\"chain-broken\", \"chain-slash\", \"unlink\"], \"f127\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM406.6 416.4L220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3zm-290-228.5L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9z\"]\n};\nconst faChainBroken = faLinkSlash;\nconst faChainSlash = faLinkSlash;\nconst faUnlink = faLinkSlash;\nconst faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M288 448L64 448l0-224 64 0 0-64-64 0c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-64-64 0 0 64zm-64-96l224 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L224 0c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64z\"]\n};\nconst faPersonWalkingArrowLoopLeft = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-loop-left',\n icon: [640, 512, [], \"e551\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384l18.7 0c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96l-18.7 0 25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z\"]\n};\nconst faArrowUpZA = {\n prefix: 'fas',\n iconName: 'arrow-up-z-a',\n icon: [576, 512, [\"sort-alpha-up-alt\"], \"f882\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3 128 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 64c0 17.7 14.3 32 32 32l50.7 0-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0 73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L352 32c-17.7 0-32 14.3-32 32zm96 192c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3 88.4 0 7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 262.8 428.1 256 416 256zM395.8 400L416 359.6 436.2 400l-40.4 0z\"]\n};\nconst faSortAlphaUpAlt = faArrowUpZA;\nconst faFireFlameCurved = {\n prefix: 'fas',\n iconName: 'fire-flame-curved',\n icon: [384, 512, [\"fire-alt\"], \"f7e4\", \"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0C198.4 0 208 9.6 208 21.3V43.5c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7C384 434 306 512 209.7 512H192C86 512 0 426 0 320v-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6C85.9 176 96 186.1 96 198.6V288c0 35.3 28.7 64 64 64s64-28.7 64-64v-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7c0-27.7 9-54.8 25.6-76.9z\"]\n};\nconst faFireAlt = faFireFlameCurved;\nconst faTornado = {\n prefix: 'fas',\n iconName: 'tornado',\n icon: [448, 512, [127786], \"f76f\", \"M0 32L0 45.6C0 62.7 1.7 79.6 5 96l352.8 0c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16C416 10.1 405.9 0 393.4 0L32 0C14.3 0 0 14.3 0 32zm352.2 96L13.6 128c12.2 35.9 32.3 68.7 58.8 96L412 224l-47.2-62.9c-7.3-9.7-11.6-21.2-12.6-33.1zm-226 138.2l116.4 68.5c8.2 4.8 15.8 10.7 22.5 17.3L445 352c2-9.8 3-19.9 3-30.1c0-23-5.3-45.5-15.3-65.9l-322.5 0c5.2 3.6 10.5 7 16 10.2zM288 384c10.3 21.4 13.8 45.5 9.9 69l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4c5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c12.8-12.8 23.1-27.7 30.4-43.9L288 384z\"]\n};\nconst faFileCirclePlus = {\n prefix: 'fas',\n iconName: 'file-circle-plus',\n icon: [576, 512, [58606], \"e494\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-48z\"]\n};\nconst faBookQuran = {\n prefix: 'fas',\n iconName: 'book-quran',\n icon: [448, 512, [\"quran\"], \"f687\", \"M352 0c53 0 96 43 96 96l0 320c0 53-43 96-96 96L64 512l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c-17.7 0-32-14.3-32-32L0 32C0 14.3 14.3 0 32 0L64 0 352 0zm0 384L96 384l0 64 256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zM274.1 150.2l-8.9 21.4-23.1 1.9c-5.7 .5-8 7.5-3.7 11.2L256 199.8l-5.4 22.6c-1.3 5.5 4.7 9.9 9.6 6.9L280 217.2l19.8 12.1c4.9 3 10.9-1.4 9.6-6.9L304 199.8l17.6-15.1c4.3-3.7 2-10.8-3.7-11.2l-23.1-1.9-8.9-21.4c-2.2-5.3-9.6-5.3-11.8 0zM96 192c0 70.7 57.3 128 128 128c25.6 0 49.5-7.5 69.5-20.5c3.2-2.1 4.5-6.2 3.1-9.7s-5.2-5.6-9-4.8c-6.1 1.2-12.5 1.9-19 1.9c-52.4 0-94.9-42.5-94.9-94.9s42.5-94.9 94.9-94.9c6.5 0 12.8 .7 19 1.9c3.8 .8 7.5-1.3 9-4.8s.2-7.6-3.1-9.7C273.5 71.5 249.6 64 224 64C153.3 64 96 121.3 96 192z\"]\n};\nconst faQuran = faBookQuran;\nconst faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [9875], \"f13d\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c88.4 0 160-71.6 160-160l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 53-43 96-96 96l-48 0 0-208 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0z\"]\n};\nconst faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M384 96l0 128-128 0 0-128 128 0zm0 192l0 128-128 0 0-128 128 0zM192 224L64 224 64 96l128 0 0 128zM64 288l128 0 0 128L64 416l0-128zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nconst faFaceAngry = {\n prefix: 'fas',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM338.7 395.9c6.6-5.9 7.1-16 1.2-22.6C323.8 355.4 295.7 336 256 336s-67.8 19.4-83.9 37.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c11.7-13 31.6-26.7 60.1-26.7s48.4 13.7 60.1 26.7c5.9 6.6 16 7.1 22.6 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nconst faAngry = faFaceAngry;\nconst faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faArrowTrendDown = {\n prefix: 'fas',\n iconName: 'arrow-trend-down',\n icon: [576, 512, [], \"e097\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-160c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 82.7L342.6 137.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352 384 352z\"]\n};\nconst faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [\"feed\"], \"f09e\", \"M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faFeed = faRss;\nconst faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M96 151.4l0 209.1c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c0-.1 .1-.2 .1-.3l-4.5-7.9-32-56s0 0 0 0c-1.4 .1-2.8 .1-4.2 .1c-35.3 0-64-28.7-64-64s28.7-64 64-64c1.4 0 2.8 0 4.2 .1c0 0 0 0 0 0l32-56 4.5-7.9-.1-.3-209.1 0c-5.6 9.7-13.7 17.8-23.4 23.4zM384.3 352c35.2 .2 63.7 28.7 63.7 64c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-209.1 0c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-209.1C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32l209.1 0c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 35.3-28.5 63.8-63.7 64l-4.5 7.9-32 56-2.3 4c4.2 8.5 6.5 18 6.5 28.1s-2.3 19.6-6.5 28.1l2.3 4 32 56 4.5 7.9z\"]\n};\nconst faScaleBalanced = {\n prefix: 'fas',\n iconName: 'scale-balanced',\n icon: [640, 512, [9878, \"balance-scale\"], \"f24e\", \"M384 32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L398.4 96c-5.2 25.8-22.9 47.1-46.4 57.3L352 448l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-294.7c-23.5-10.3-41.2-31.6-46.4-57.3L128 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l128 0c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288l144.9 0L512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C627.2 382 574.9 416 512 416zM126.8 195.8L54.4 320l144.9 0L126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C242 382 189.7 416 126.8 416S11.7 382 .9 337.1z\"]\n};\nconst faBalanceScale = faScaleBalanced;\nconst faGaugeSimpleHigh = {\n prefix: 'fas',\n iconName: 'gauge-simple-high',\n icon: [512, 512, [61668, \"tachometer\", \"tachometer-fast\"], \"f62a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-15.9-5.8-30.4-15.3-41.6l76.6-147.4c6.1-11.8 1.5-26.3-10.2-32.4s-26.2-1.5-32.4 10.2L262.1 288.3c-2-.2-4-.3-6.1-.3c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faTachometer = faGaugeSimpleHigh;\nconst faTachometerFast = faGaugeSimpleHigh;\nconst faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [128703], \"f2cc\", \"M64 131.9C64 112.1 80.1 96 99.9 96c9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.2-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32C44.7 32 0 76.7 0 131.9L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-316.1zM256 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [128421, 61704, \"desktop-alt\"], \"f390\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l176 0-10.7 32L160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-69.3 0L336 416l176 0c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0zM512 64l0 224L64 288 64 64l448 0z\"]\n};\nconst faDesktopAlt = faDesktop;\nconst faM = {\n prefix: 'fas',\n iconName: 'm',\n icon: [448, 512, [109], \"4d\", \"M22.7 33.4c13.5-4.1 28.1 1.1 35.9 12.9L224 294.3 389.4 46.3c7.8-11.7 22.4-17 35.9-12.9S448 49.9 448 64l0 384c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-278.3L250.6 369.8c-5.9 8.9-15.9 14.2-26.6 14.2s-20.7-5.3-26.6-14.2L64 169.7 64 448c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 49.9 9.2 37.5 22.7 33.4z\"]\n};\nconst faTableList = {\n prefix: 'fas',\n iconName: 'table-list',\n icon: [512, 512, [\"th-list\"], \"f00b\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm64 0l0 64 64 0 0-64L64 96zm384 0L192 96l0 64 256 0 0-64zM64 224l0 64 64 0 0-64-64 0zm384 0l-256 0 0 64 256 0 0-64zM64 352l0 64 64 0 0-64-64 0zm384 0l-256 0 0 64 256 0 0-64z\"]\n};\nconst faThList = faTableList;\nconst faCommentSms = {\n prefix: 'fas',\n iconName: 'comment-sms',\n icon: [512, 512, [\"sms\"], \"f7cd\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM96 212.8c0-20.3 16.5-36.8 36.8-36.8l19.2 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-19.2 0c-2.7 0-4.8 2.2-4.8 4.8c0 1.6 .8 3.1 2.2 4l29.4 19.6c10.3 6.8 16.4 18.3 16.4 30.7c0 20.3-16.5 36.8-36.8 36.8L112 304c-8.8 0-16-7.2-16-16s7.2-16 16-16l27.2 0c2.7 0 4.8-2.2 4.8-4.8c0-1.6-.8-3.1-2.2-4l-29.4-19.6C102.2 236.7 96 225.2 96 212.8zM372.8 176l19.2 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-19.2 0c-2.7 0-4.8 2.2-4.8 4.8c0 1.6 .8 3.1 2.2 4l29.4 19.6c10.2 6.8 16.4 18.3 16.4 30.7c0 20.3-16.5 36.8-36.8 36.8L352 304c-8.8 0-16-7.2-16-16s7.2-16 16-16l27.2 0c2.7 0 4.8-2.2 4.8-4.8c0-1.6-.8-3.1-2.2-4l-29.4-19.6c-10.2-6.8-16.4-18.3-16.4-30.7c0-20.3 16.5-36.8 36.8-36.8zm-152 6.4L256 229.3l35.2-46.9c4.1-5.5 11.3-7.8 17.9-5.6s10.9 8.3 10.9 15.2l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-19.2 25.6c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L224 240l0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-6.9 4.4-13 10.9-15.2s13.7 .1 17.9 5.6z\"]\n};\nconst faSms = faCommentSms;\nconst faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [128212], \"f02d\", \"M96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96l288 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32L384 0 96 0zm0 384l256 0 0 64L96 448c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16zm16 48l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM504 312l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nconst faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [448, 512, [10003, 10004], \"f00c\", \"M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nconst faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [576, 512, [\"battery-4\"], \"f241\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm272 96L96 192l0 128 256 0 0-128z\"]\n};\nconst faBattery4 = faBatteryThreeQuarters;\nconst faHouseCircleCheck = {\n prefix: 'fas',\n iconName: 'house-circle-check',\n icon: [640, 512, [], \"e509\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0 .7 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [320, 512, [8249], \"f104\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nconst faDiagramSuccessor = {\n prefix: 'fas',\n iconName: 'diagram-successor',\n icon: [512, 512, [], \"e47a\", \"M512 416l0-64c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64zM64 160l0-64 144 0 16 0 0 64L64 160zm224 0l0-64 80 0c8.8 0 16 7.2 16 16l0 16-38.1 0c-21.4 0-32.1 25.9-17 41L399 239c9.4 9.4 24.6 9.4 33.9 0L503 169c15.1-15.1 4.4-41-17-41L448 128l0-16c0-44.2-35.8-80-80-80L224 32l-16 0L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64z\"]\n};\nconst faTruckArrowRight = {\n prefix: 'fas',\n iconName: 'truck-arrow-right',\n icon: [640, 512, [], \"e58b\", \"M0 48C0 21.5 21.5 0 48 0L368 0c26.5 0 48 21.5 48 48l0 48 50.7 0c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3l0 18.7 0 32 0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 48zM416 256l128 0 0-18.7L466.7 160 416 160l0 96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM257 95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39L96 168c-13.3 0-24 10.7-24 24s10.7 24 24 24l166.1 0-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9L257 95z\"]\n};\nconst faArrowsSplitUpAndLeft = {\n prefix: 'fas',\n iconName: 'arrows-split-up-and-left',\n icon: [512, 512, [], \"e4bc\", \"M246.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 109.3 352 384c0 35.3 28.7 64 64 64l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-70.7 0-128-57.3-128-128c0-35.3-28.7-64-64-64l-114.7 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256 224 256c23.3 0 45.2 6.2 64 17.1l0-163.9-41.4 41.4z\"]\n};\nconst faHandFist = {\n prefix: 'fas',\n iconName: 'hand-fist',\n icon: [448, 512, [9994, \"fist-raised\"], \"f6de\", \"M192 0c17.7 0 32 14.3 32 32l0 112-64 0 0-112c0-17.7 14.3-32 32-32zM64 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 80-64 0 0-80zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6l0 8.6c0 52.3-25.1 98.8-64 128l0 96c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-78.4c-17.3-7.9-33.2-18.8-46.9-32.5L69.5 357.5C45.5 333.5 32 300.9 32 267l0-27c0-35.3 28.7-64 64-64l88 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72z\"]\n};\nconst faFistRaised = faHandFist;\nconst faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [640, 512, [], \"f6c3\", \"M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80L96 511.9c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nconst faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [128188], \"f0b1\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40L64 96C28.7 96 0 124.7 0 160l0 96 192 0 128 0 192 0 0-96c0-35.3-28.7-64-64-64l-64 0 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zM512 288l-192 0 0 32c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-32L0 288 0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-128z\"]\n};\nconst faPersonFalling = {\n prefix: 'fas',\n iconName: 'person-falling',\n icon: [512, 512, [], \"e546\", \"M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0-1.4 0 92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-73.8c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 32a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faImagePortrait = {\n prefix: 'fas',\n iconName: 'image-portrait',\n icon: [384, 512, [\"portrait\"], \"f3e0\", \"M384 64c0-35.3-28.7-64-64-64L64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384zM128 192a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 356.6c0-37.9 30.7-68.6 68.6-68.6l86.9 0c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4l-169.1 0C92.3 384 80 371.7 80 356.6z\"]\n};\nconst faPortrait = faImagePortrait;\nconst faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c10 0 18.8-4.9 24.2-12.5l-99.2-99.2c-14.9-14.9-23.3-35.1-23.3-56.1l0-33c-15.9-4.7-32.8-7.2-50.3-7.2l-91.4 0zM384 224c-17.7 0-32 14.3-32 32l0 82.7c0 17 6.7 33.3 18.7 45.3L478.1 491.3c18.7 18.7 49.1 18.7 67.9 0l73.4-73.4c18.7-18.7 18.7-49.1 0-67.9L512 242.7c-12-12-28.3-18.7-45.3-18.7L384 224zm24 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faRug = {\n prefix: 'fas',\n iconName: 'rug',\n icon: [640, 512, [], \"e569\", \"M24 64l32 0 24 0 0 24 0 88 0 80 0 80 0 88 0 24-24 0-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-40-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-32-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-32-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-40-8 0C10.7 112 0 101.3 0 88S10.7 64 24 64zm88 0l416 0 0 384-416 0 0-384zM640 88c0 13.3-10.7 24-24 24l-8 0 0 40 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 32 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 32 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 40 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0-24 0 0-24 0-88 0-80 0-80 0-88 0-24 24 0 32 0c13.3 0 24 10.7 24 24z\"]\n};\nconst faEarthEurope = {\n prefix: 'fas',\n iconName: 'earth-europe',\n icon: [512, 512, [\"globe-europe\"], \"f7a2\", \"M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1l0 9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1l1 0c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24l0 4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6l29.4 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-20.7 0c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3l11.3 0c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16l7.3 0c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.7-15.4l-20.9 0c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3l0 3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3l21.3 0c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faGlobeEurope = faEarthEurope;\nconst faCartFlatbedSuitcase = {\n prefix: 'fas',\n iconName: 'cart-flatbed-suitcase',\n icon: [640, 512, [\"luggage-cart\"], \"f59d\", \"M0 32C0 14.3 14.3 0 32 0L48 0c44.2 0 80 35.8 80 80l0 288c0 8.8 7.2 16 16 16l464 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-66.7 0c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16l-197.5 0c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16L144 448c-44.2 0-80-35.8-80-80L64 80c0-8.8-7.2-16-16-16L32 64C14.3 64 0 49.7 0 32zM432 96l0-40c0-4.4-3.6-8-8-8l-80 0c-4.4 0-8 3.6-8 8l0 40 96 0zM288 96l0-40c0-30.9 25.1-56 56-56l80 0c30.9 0 56 25.1 56 56l0 40 0 224-192 0 0-224zM512 320l0-224 16 0c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48l-16 0zM240 96l16 0 0 224-16 0c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48z\"]\n};\nconst faLuggageCart = faCartFlatbedSuitcase;\nconst faRectangleXmark = {\n prefix: 'fas',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faRectangleTimes = faRectangleXmark;\nconst faTimesRectangle = faRectangleXmark;\nconst faWindowClose = faRectangleXmark;\nconst faBahtSign = {\n prefix: 'fas',\n iconName: 'baht-sign',\n icon: [320, 512, [], \"e0ac\", \"M144 0c-17.7 0-32 14.3-32 32l0 32L37.6 64C16.8 64 0 80.8 0 101.6L0 224l0 41.7L0 288 0 406.3c0 23 18.7 41.7 41.7 41.7l70.3 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c61.9 0 112-50.1 112-112c0-40.1-21.1-75.3-52.7-95.1C280.3 222.6 288 200.2 288 176c0-61.9-50.1-112-112-112l0-32c0-17.7-14.3-32-32-32zM112 128l0 96-48 0 0-96 48 0zm64 96l0-96c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-64 64l0 96-48 0 0-96 48 0zm64 96l0-96 32 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-32 0z\"]\n};\nconst faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [128214, 128366], \"f518\", \"M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5l0-377.4c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C93.5 32 46.3 45.3 18.1 56.1C6.8 60.5 0 71.7 0 83.8L0 454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5l0-370.3c0-12.1-6.8-23.3-18.1-27.6C529.7 45.3 482.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11L304 456c0 11.4 11.7 19.3 22.4 15.5z\"]\n};\nconst faBookJournalWhills = {\n prefix: 'fas',\n iconName: 'book-journal-whills',\n icon: [448, 512, [\"journal-whills\"], \"f66a\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zm90.4-234.4l-21.2-21.2c-3 10.1-5.1 20.6-5.1 31.6c0 .2 0 .5 .1 .8s.1 .5 .1 .8L165.2 226c2.5 2.1 3.4 5.8 2.3 8.9c-1.3 3-4.1 5.1-7.5 5.1c-1.9-.1-3.8-.8-5.2-2l-23.6-20.6C142.8 267 186.9 304 240 304s97.3-37 108.9-86.6L325.3 238c-1.4 1.2-3.3 2-5.3 2c-2.2-.1-4.4-1.1-6-2.8c-1.2-1.5-1.9-3.4-2-5.2c.1-2.2 1.1-4.4 2.8-6l37.1-32.5c0-.3 0-.5 .1-.8s.1-.5 .1-.8c0-11-2.1-21.5-5.1-31.6l-21.2 21.2c-3.1 3.1-8.1 3.1-11.3 0s-3.1-8.1 0-11.2l26.4-26.5c-8.2-17-20.5-31.7-35.9-42.6c-2.7-1.9-6.2 1.4-5 4.5c8.5 22.4 3.6 48-13 65.6c-3.2 3.4-3.6 8.9-.9 12.7c9.8 14 12.7 31.9 7.5 48.5c-5.9 19.4-22 34.1-41.9 38.3l-1.4-34.3 12.6 8.6c.6 .4 1.5 .6 2.3 .6c1.5 0 2.7-.8 3.5-2s.6-2.8-.1-4L260 225.4l18-3.6c1.8-.4 3.1-2.1 3.1-4s-1.4-3.5-3.1-3.9l-18-3.7 8.5-14.3c.8-1.2 .9-2.9 .1-4.1s-2-2-3.5-2l-.1 0c-.7 .1-1.5 .3-2.1 .7l-14.1 9.6L244 87.9c-.1-2.2-1.9-3.9-4-3.9s-3.9 1.6-4 3.9l-4.6 110.8-12-8.1c-1.5-1.1-3.6-.9-5 .4s-1.6 3.4-.8 5l8.6 14.3-18 3.7c-1.8 .4-3.1 2-3.1 3.9s1.4 3.6 3.1 4l18 3.8-8.6 14.2c-.2 .6-.5 1.4-.5 2c0 1.1 .5 2.1 1.2 3c.8 .6 1.8 1 2.8 1c.7 0 1.6-.2 2.2-.6l10.4-7.1-1.4 32.8c-19.9-4.1-36-18.9-41.9-38.3c-5.1-16.6-2.2-34.4 7.6-48.5c2.7-3.9 2.3-9.3-.9-12.7c-16.6-17.5-21.6-43.1-13.1-65.5c1.2-3.1-2.3-6.4-5-4.5c-15.3 10.9-27.6 25.6-35.8 42.6l26.4 26.5c3.1 3.1 3.1 8.1 0 11.2s-8.1 3.1-11.2 0z\"]\n};\nconst faJournalWhills = faBookJournalWhills;\nconst faHandcuffs = {\n prefix: 'fas',\n iconName: 'handcuffs',\n icon: [640, 512, [], \"e4f8\", \"M240 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM192 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32 80c17.7 0 32 14.3 32 32l8 0c13.3 0 24 10.7 24 24l0 16c0 1.7-.2 3.4-.5 5.1C280.3 229.6 320 286.2 320 352c0 88.4-71.6 160-160 160S0 440.4 0 352c0-65.8 39.7-122.4 96.5-146.9c-.4-1.6-.5-3.3-.5-5.1l0-16c0-13.3 10.7-24 24-24l8 0c0-17.7 14.3-32 32-32zm0 320a96 96 0 1 0 0-192 96 96 0 1 0 0 192zm192-96c0-25.9-5.1-50.5-14.4-73.1c16.9-32.9 44.8-59.1 78.9-73.9c-.4-1.6-.5-3.3-.5-5.1l0-16c0-13.3 10.7-24 24-24l8 0c0-17.7 14.3-32 32-32s32 14.3 32 32l8 0c13.3 0 24 10.7 24 24l0 16c0 1.7-.2 3.4-.5 5.1C600.3 229.6 640 286.2 640 352c0 88.4-71.6 160-160 160c-62 0-115.8-35.3-142.4-86.9c9.3-22.5 14.4-47.2 14.4-73.1zm224 0a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM368 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm80 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faTriangleExclamation = {\n prefix: 'fas',\n iconName: 'triangle-exclamation',\n icon: [512, 512, [9888, \"exclamation-triangle\", \"warning\"], \"f071\", \"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faExclamationTriangle = faTriangleExclamation;\nconst faWarning = faTriangleExclamation;\nconst faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 80l0 48c0 44.2-100.3 80-224 80S0 172.2 0 128L0 80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6L448 288c0 44.2-100.3 80-224 80S0 332.2 0 288L0 186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6l0 85.9c0 44.2-100.3 80-224 80S0 476.2 0 432l0-85.9z\"]\n};\nconst faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [\"mail-forward\"], \"f064\", \"M307 34.8c-11.5 5.1-19 16.6-19 29.2l0 64-112 0C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96l96 0 0 64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z\"]\n};\nconst faMailForward = faShare;\nconst faBottleDroplet = {\n prefix: 'fas',\n iconName: 'bottle-droplet',\n icon: [320, 512, [], \"e4c4\", \"M96 0C82.7 0 72 10.7 72 24s10.7 24 24 24c4.4 0 8 3.6 8 8l0 64.9c0 12.2-7.2 23.1-17.2 30.1C53.7 174.1 32 212.5 32 256l0 192c0 35.3 28.7 64 64 64l128 0c35.3 0 64-28.7 64-64l0-192c0-43.5-21.7-81.9-54.8-105c-10-7-17.2-17.9-17.2-30.1L216 56c0-4.4 3.6-8 8-8c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0s0 0 0 0s0 0 0 0L104 0s0 0 0 0s0 0 0 0L96 0zm64 382c-26.5 0-48-20.1-48-45c0-16.8 22.1-48.1 36.3-66.4c6-7.8 17.5-7.8 23.5 0C185.9 288.9 208 320.2 208 337c0 24.9-21.5 45-48 45z\"]\n};\nconst faMaskFace = {\n prefix: 'fas',\n iconName: 'mask-face',\n icon: [640, 512, [], \"e1d7\", \"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1l-9.2 0-16 0-72 0c-30.9 0-56 25.1-56 56l0 85c0 55.1 37.5 103.1 90.9 116.4l108 27C233.8 435 275.4 448 320 448s86.2-13 121.1-35.5l108-27C602.5 372.1 640 324.1 640 269l0-85c0-30.9-25.1-56-56-56l-72 0-16 0-9.2 0c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM132.3 346.3l-29.8-7.4C70.5 330.9 48 302.1 48 269l0-85c0-4.4 3.6-8 8-8l40 0 0 48c0 45.1 13.4 87.2 36.3 122.3zm405.1-7.4l-29.8 7.4c23-35.2 36.3-77.2 36.3-122.3l0-48 40 0c4.4 0 8 3.6 8 8l0 85c0 33-22.5 61.8-54.5 69.9zM192 208c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16zm16 48l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 80c0-8.8 7.2-16 16-16l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faHillRockslide = {\n prefix: 'fas',\n iconName: 'hill-rockslide',\n icon: [576, 512, [], \"e508\", \"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2l-53.3 0c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3L0 432c0 44.2 35.8 80 80 80l316.7 0c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9l0-53.3c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9l0 53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faRightLeft = {\n prefix: 'fas',\n iconName: 'right-left',\n icon: [512, 512, [\"exchange-alt\"], \"f362\", \"M32 96l320 0 0-64c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-64L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32l-320 0 0 64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64 320 0z\"]\n};\nconst faExchangeAlt = faRightLeft;\nconst faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480l0-83.6c0-4 1.5-7.8 4.2-10.8L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z\"]\n};\nconst faRoadCircleExclamation = {\n prefix: 'fas',\n iconName: 'road-circle-exclamation',\n icon: [640, 512, [], \"e565\", \"M213.2 32L288 32l0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 74.8 0c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8l0-42.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32l0 64L86.6 480C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M336.6 156.5c1.3 1.1 2.7 2.2 3.9 3.3c9.3 8.2 23 10.5 33.4 3.6l67.6-45.1c11.4-7.6 14.2-23.2 5.1-33.4C430 66.6 410.9 50.6 389.7 37.6c-11.9-7.3-26.9-1.4-32.1 11.6l-30.5 76.2c-4.5 11.1 .2 23.6 9.5 31.2zM328 36.8c5.1-12.8-1.6-27.4-15-30.5C294.7 2.2 275.6 0 256 0s-38.7 2.2-57 6.4C185.5 9.4 178.8 24 184 36.8l30.3 75.8c4.5 11.3 16.8 17.2 29 16c4.2-.4 8.4-.6 12.7-.6s8.6 .2 12.7 .6c12.1 1.2 24.4-4.7 29-16L328 36.8zM65.5 85c-9.1 10.2-6.3 25.8 5.1 33.4l67.6 45.1c10.3 6.9 24.1 4.6 33.4-3.6c1.3-1.1 2.6-2.3 4-3.3c9.3-7.5 13.9-20.1 9.5-31.2L154.4 49.2c-5.2-12.9-20.3-18.8-32.1-11.6C101.1 50.6 82 66.6 65.5 85zm314 137.1c.9 3.3 1.7 6.6 2.3 10c2.5 13 13 23.9 26.2 23.9l80 0c13.3 0 24.1-10.8 22.9-24c-2.5-27.2-9.3-53.2-19.7-77.3c-5.5-12.9-21.4-16.6-33.1-8.9l-68.6 45.7c-9.8 6.5-13.2 19.2-10 30.5zM53.9 145.8c-11.6-7.8-27.6-4-33.1 8.9C10.4 178.8 3.6 204.8 1.1 232c-1.2 13.2 9.6 24 22.9 24l80 0c13.3 0 23.8-10.8 26.2-23.9c.6-3.4 1.4-6.7 2.3-10c3.1-11.4-.2-24-10-30.5L53.9 145.8zM104 288l-80 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24zm304 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-80 0zM24 416c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-80 0zm384 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-80 0zM272 192c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 272c0 8.8 7.2 16 16 16s16-7.2 16-16l0-272zm-64 32c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 240c0 8.8 7.2 16 16 16s16-7.2 16-16l0-240zm128 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 240c0 8.8 7.2 16 16 16s16-7.2 16-16l0-240z\"]\n};\nconst faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M448 64c0 17.7-14.3 32-32 32L192 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faMoneyBill1Wave = {\n prefix: 'fas',\n iconName: 'money-bill-1-wave',\n icon: [576, 512, [\"money-bill-wave-alt\"], \"f53b\", \"M0 112.5L0 422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4l0-309.9c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM128 416l-64 0 0-64c35.3 0 64 28.7 64 64zM64 224l0-64 64 0c0 35.3-28.7 64-64 64zM448 352c0-35.3 28.7-64 64-64l0 64-64 0zm64-192c-35.3 0-64-28.7-64-64l64 0 0 64zM384 256c0 61.9-43 112-96 112s-96-50.1-96-112s43-112 96-112s96 50.1 96 112zM252 208c0 9.7 6.9 17.7 16 19.6l0 48.4-4 0c-11 0-20 9-20 20s9 20 20 20l24 0 24 0c11 0 20-9 20-20s-9-20-20-20l-4 0 0-68c0-11-9-20-20-20l-16 0c-11 0-20 9-20 20z\"]\n};\nconst faMoneyBillWaveAlt = faMoneyBill1Wave;\nconst faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3s-20.2-113.9-54-157.3c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256s20.2 113.9 54 157.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nconst faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [576, 512, [\"sign-language\", \"signing\"], \"f2a7\", \"M544 160l-.1 72.6c-.1 52.2-24 101-64 133.1c.1-1.9 .1-3.8 .1-5.7l0-8c0-71.8-37-138.6-97.9-176.7l-60.2-37.6c-8.6-5.4-17.9-8.4-27.3-9.4L248.7 48.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8l78 135.1c3.3 5.7 10.7 7.7 16.4 4.4s7.7-10.7 4.4-16.4l-62-107.4c-6.6-11.5-2.7-26.2 8.8-32.8S362 5 368.6 16.5l68 117.8s0 0 0 0s0 0 0 0l43.3 75L480 160c0-17.7 14.4-32 32-32s32 14.4 32 32zM243.9 88.5L268.5 131c-13.9 4.5-26.4 13.7-34.7 27c-.9 1.4-1.7 2.9-2.5 4.4l-28.9-50c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zm-46.4 63.7l26.8 46.4c.6 6 2.1 11.8 4.3 17.4l-4.7 0-13.3 0s0 0 0 0L179 216l-23-39.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zM260.9 175c9.4-15 29.1-19.5 44.1-10.2l60.2 37.6C416.7 234.7 448 291.2 448 352l0 8c0 83.9-68.1 152-152 152l-176 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l92 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L88 440c-13.3 0-24-10.7-24-24s10.7-24 24-24l124 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L56 368c-13.3 0-24-10.7-24-24s10.7-24 24-24l156 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L88 296c-13.3 0-24-10.7-24-24s10.7-24 24-24l136 0s0 0 0 0s0 0 0 0l93.2 0L271 219.1c-15-9.4-19.5-29.1-10.2-44.1z\"]\n};\nconst faSignLanguage = faHands;\nconst faSigning = faHands;\nconst faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zm80 64c-8.8 0-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16l-96 0z\"]\n};\nconst faWaterLadder = {\n prefix: 'fas',\n iconName: 'water-ladder',\n icon: [576, 512, [\"ladder-water\", \"swimming-pool\"], \"f5c5\", \"M128 127.7C128 74.9 170.9 32 223.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7l0 96.3 192 0 0-96.3C384 74.9 426.9 32 479.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7L448 361c-1.6 1-3.3 2-4.8 3.1c-18 12.4-40.1 20.3-59.2 20.3c0 0 0 0 0 0l0-96.5-192 0 0 96.5c-19 0-41.2-7.9-59.1-20.3c-1.6-1.1-3.2-2.2-4.9-3.1l0-233.3zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faLadderWater = faWaterLadder;\nconst faSwimmingPool = faWaterLadder;\nconst faArrowsUpDown = {\n prefix: 'fas',\n iconName: 'arrows-up-down',\n icon: [320, 512, [\"arrows-v\"], \"f07d\", \"M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3l0 293.5L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7l0-293.5 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nconst faArrowsV = faArrowsUpDown;\nconst faFaceGrimace = {\n prefix: 'fas',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm96-112l-8 0 0-40 55.3 0c-3.8 22.7-23.6 40-47.3 40zm47.3-56L344 344l0-40 8 0c23.8 0 43.5 17.3 47.3 40zM328 344l-64 0 0-40 64 0 0 40zm0 56l-64 0 0-40 64 0 0 40zm-80-96l0 40-64 0 0-40 64 0zm0 56l0 40-64 0 0-40 64 0zm-80-16l-55.3 0c3.8-22.7 23.6-40 47.3-40l8 0 0 40zm0 56l-8 0c-23.8 0-43.5-17.3-47.3-40l55.3 0 0 40zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGrimace = faFaceGrimace;\nconst faWheelchairMove = {\n prefix: 'fas',\n iconName: 'wheelchair-move',\n icon: [448, 512, [\"wheelchair-alt\"], \"e2ce\", \"M320 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM204.5 121.3c-5.4-2.5-11.7-1.9-16.4 1.7l-40.9 30.7c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l40.9-30.7c23.7-17.8 55.3-21 82.1-8.4l90.4 42.5c29.1 13.7 36.8 51.6 15.2 75.5L299.1 224l97.4 0c30.3 0 53 27.7 47.1 57.4L415.4 422.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L377 288l-70.3 0c8.6 19.6 13.3 41.2 13.3 64c0 88.4-71.6 160-160 160S0 440.4 0 352s71.6-160 160-160c11.1 0 22 1.1 32.4 3.3l54.2-54.2-42.1-19.8zM160 448a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nconst faWheelchairAlt = faWheelchairMove;\nconst faTurnDown = {\n prefix: 'fas',\n iconName: 'turn-down',\n icon: [384, 512, [10549, \"level-down-alt\"], \"f3be\", \"M350 334.5c3.8 8.8 2 19-4.6 26l-136 144c-4.5 4.8-10.8 7.5-17.4 7.5s-12.9-2.7-17.4-7.5l-136-144c-6.6-7-8.4-17.2-4.6-26s12.5-14.5 22-14.5l88 0 0-192c0-17.7-14.3-32-32-32L32 96C14.3 96 0 81.7 0 64L0 32C0 14.3 14.3 0 32 0l80 0c70.7 0 128 57.3 128 128l0 192 88 0c9.6 0 18.2 5.7 22 14.5z\"]\n};\nconst faLevelDownAlt = faTurnDown;\nconst faPersonWalkingArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-right',\n icon: [640, 512, [], \"e552\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224 384 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l146.7 0-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z\"]\n};\nconst faSquareEnvelope = {\n prefix: 'fas',\n iconName: 'square-envelope',\n icon: [448, 512, [\"envelope-square\"], \"f199\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM218 271.7L64.2 172.4C66 156.4 79.5 144 96 144l256 0c16.5 0 30 12.4 31.8 28.4L230 271.7c-1.8 1.2-3.9 1.8-6 1.8s-4.2-.6-6-1.8zm29.4 26.9L384 210.4 384 336c0 17.7-14.3 32-32 32L96 368c-17.7 0-32-14.3-32-32l0-125.6 136.6 88.2c7 4.5 15.1 6.9 23.4 6.9s16.4-2.4 23.4-6.9z\"]\n};\nconst faEnvelopeSquare = faSquareEnvelope;\nconst faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [127922], \"f522\", \"M274.9 34.3c-28.1-28.1-73.7-28.1-101.8 0L34.3 173.1c-28.1 28.1-28.1 73.7 0 101.8L173.1 413.7c28.1 28.1 73.7 28.1 101.8 0L413.7 274.9c28.1-28.1 28.1-73.7 0-101.8L274.9 34.3zM200 224a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM96 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 376a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM352 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 120a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm96 328c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-114.3 0c11.6 36 3.1 77-25.4 105.5L320 413.8l0 34.2zM480 328a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [512, 512, [], \"f436\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM240 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM208 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-64-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [512, 512, [129504], \"f5dc\", \"M184 0c30.9 0 56 25.1 56 56l0 400c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56l0-400c0-30.9 25.1-56 56-56z\"]\n};\nconst faBandage = {\n prefix: 'fas',\n iconName: 'bandage',\n icon: [640, 512, [129657, \"band-aid\"], \"f462\", \"M480 416l96 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-96 0 0 320zM448 96L192 96l0 320 256 0 0-320zM64 96C28.7 96 0 124.7 0 160L0 352c0 35.3 28.7 64 64 64l96 0 0-320L64 96zM248 208a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM248 304a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faBandAid = faBandage;\nconst faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zM312 376c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0z\"]\n};\nconst faCircleXmark = {\n prefix: 'fas',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faTimesCircle = faCircleXmark;\nconst faXmarkCircle = faCircleXmark;\nconst faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M200.6 32C205 19.5 198.5 5.8 186 1.4S159.8 3.5 155.4 16L144.7 46.2l-9.9-29.8C130.6 3.8 117-3 104.4 1.2S85 19 89.2 31.6l8.3 25-27.4-20c-10.7-7.8-25.7-5.4-33.5 5.3s-5.4 25.7 5.3 33.5L70.2 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l152.6 0c-5.4-9.4-8.6-20.3-8.6-32l0-224c0-29.9 20.5-55 48.2-62c1.8-31 17.1-58.2 40.1-76.1C271.7 104.7 256.9 96 240 96l-22.2 0 28.3-20.6c10.7-7.8 13.1-22.8 5.3-33.5s-22.8-13.1-33.5-5.3L192.5 55.1 200.6 32zM363.5 185.5L393.1 224 344 224c-13.3 0-24-10.7-24-24c0-13.1 10.8-24 24.2-24c7.6 0 14.7 3.5 19.3 9.5zM272 200c0 8.4 1.4 16.5 4.1 24l-4.1 0c-26.5 0-48 21.5-48 48l0 80 192 0 0-96 32 0 0 96 192 0 0-80c0-26.5-21.5-48-48-48l-4.1 0c2.7-7.5 4.1-15.6 4.1-24c0-39.9-32.5-72-72.2-72c-22.4 0-43.6 10.4-57.3 28.2L432 195.8l-30.5-39.6c-13.7-17.8-35-28.2-57.3-28.2c-39.7 0-72.2 32.1-72.2 72zM224 464c0 26.5 21.5 48 48 48l144 0 0-128-192 0 0 80zm224 48l144 0c26.5 0 48-21.5 48-48l0-80-192 0 0 128zm96-312c0 13.3-10.7 24-24 24l-49.1 0 29.6-38.5c4.6-5.9 11.7-9.5 19.3-9.5c13.4 0 24.2 10.9 24.2 24z\"]\n};\nconst faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [512, 512, [127976], \"f594\", \"M0 32C0 14.3 14.3 0 32 0L480 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-176 0 0-48c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 48L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 64C14.3 64 0 49.7 0 32zm96 80l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM240 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM112 192c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM328 384c13.3 0 24.3-10.9 21-23.8c-10.6-41.5-48.2-72.2-93-72.2s-82.5 30.7-93 72.2c-3.3 12.8 7.8 23.8 21 23.8l144 0z\"]\n};\nconst faEarthAsia = {\n prefix: 'fas',\n iconName: 'earth-asia',\n icon: [512, 512, [127759, \"globe-asia\"], \"f57e\", \"M51.7 295.1l31.7 6.3c7.9 1.6 16-.9 21.7-6.6l15.4-15.4c11.6-11.6 31.1-8.4 38.4 6.2l9.3 18.5c4.8 9.6 14.6 15.7 25.4 15.7c15.2 0 26.1-14.6 21.7-29.2l-6-19.9c-4.6-15.4 6.9-30.9 23-30.9l2.3 0c13.4 0 25.9-6.7 33.3-17.8l10.7-16.1c5.6-8.5 5.3-19.6-.8-27.7l-16.1-21.5c-10.3-13.7-3.3-33.5 13.4-37.7l17-4.3c7.5-1.9 13.6-7.2 16.5-14.4l16.4-40.9C303.4 52.1 280.2 48 256 48C141.1 48 48 141.1 48 256c0 13.4 1.3 26.5 3.7 39.1zm407.7 4.6c-3-.3-6-.1-9 .8l-15.8 4.4c-6.7 1.9-13.8-.9-17.5-6.7l-2-3.1c-6-9.4-16.4-15.1-27.6-15.1s-21.6 5.7-27.6 15.1l-6.1 9.5c-1.4 2.2-3.4 4.1-5.7 5.3L312 330.1c-18.1 10.1-25.5 32.4-17 51.3l5.5 12.4c8.6 19.2 30.7 28.5 50.5 21.1l2.6-1c10-3.7 21.3-2.2 29.9 4.1l1.5 1.1c37.2-29.5 64.1-71.4 74.4-119.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm144.5 92.1c-2.1 8.6 3.1 17.3 11.6 19.4l32 8c8.6 2.1 17.3-3.1 19.4-11.6s-3.1-17.3-11.6-19.4l-32-8c-8.6-2.1-17.3 3.1-19.4 11.6zm92-20c-2.1 8.6 3.1 17.3 11.6 19.4s17.3-3.1 19.4-11.6l8-32c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-8 32zM343.2 113.7c-7.9-4-17.5-.7-21.5 7.2l-16 32c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l16-32c4-7.9 .7-17.5-7.2-21.5z\"]\n};\nconst faGlobeAsia = faEarthAsia;\nconst faIdCardClip = {\n prefix: 'fas',\n iconName: 'id-card-clip',\n icon: [576, 512, [\"id-card-alt\"], \"f47f\", \"M256 0l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zM64 64l128 0 0 48c0 26.5 21.5 48 48 48l96 0c26.5 0 48-21.5 48-48l0-48 128 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64zM176 437.3c0 5.9 4.8 10.7 10.7 10.7l202.7 0c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3l-117.3 0c-29.5 0-53.3 23.9-53.3 53.3zM288 352a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nconst faIdCardAlt = faIdCardClip;\nconst faMagnifyingGlassPlus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-plus',\n icon: [512, 512, [\"search-plus\"], \"f00e\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 64z\"]\n};\nconst faSearchPlus = faMagnifyingGlassPlus;\nconst faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2l144 0c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48l-97.5 0c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3l0-38.3 0-48 0-24.9c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192l64 0c17.7 0 32 14.3 32 32l0 224c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32L0 224c0-17.7 14.3-32 32-32z\"]\n};\nconst faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304l91.4 0c20.6 0 40.4 3.5 58.8 9.9C323 331 320 349.1 320 368c0 59.5 29.5 112.1 74.8 144L29.7 512C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-80c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0-48c0-8.8-7.2-16-16-16z\"]\n};\nconst faHandDots = {\n prefix: 'fas',\n iconName: 'hand-dots',\n icon: [512, 512, [\"allergies\"], \"f461\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 272c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64l19.2 0c97.2 0 176-78.8 176-176l0-208c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208zM240 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80 16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48-16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-16 80a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM240 432a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-48-48a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faAllergies = faHandDots;\nconst faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM80 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 96l192 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L96 352c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm0 32l0 64 192 0 0-64L96 256zM240 416l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416z\"]\n};\nconst faMugSaucer = {\n prefix: 'fas',\n iconName: 'mug-saucer',\n icon: [640, 512, [\"coffee\"], \"f0f4\", \"M96 64c0-17.7 14.3-32 32-32l320 0 64 0c70.7 0 128 57.3 128 128s-57.3 128-128 128l-32 0c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96L96 64zM480 224l32 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0 0 128zM32 416l512 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faCoffee = faMugSaucer;\nconst faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M162.4 6c-1.5-3.6-5-6-8.9-6l-19 0c-3.9 0-7.5 2.4-8.9 6L104.9 57.7c-3.2 8-14.6 8-17.8 0L66.4 6c-1.5-3.6-5-6-8.9-6L48 0C21.5 0 0 21.5 0 48L0 224l0 22.4L0 256l9.6 0 364.8 0 9.6 0 0-9.6 0-22.4 0-176c0-26.5-21.5-48-48-48L230.5 0c-3.9 0-7.5 2.4-8.9 6L200.9 57.7c-3.2 8-14.6 8-17.8 0L162.4 6zM0 288l0 32c0 35.3 28.7 64 64 64l64 0 0 64c0 35.3 28.7 64 64 64s64-28.7 64-64l0-64 64 0c35.3 0 64-28.7 64-64l0-32L0 288zM192 432a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [576, 512, [], \"f6fa\", \"M288 64C64 64 0 160 0 272S80 448 176 448l8.4 0c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4l8.4 0c96 0 176-64 176-176s-64-208-288-208zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm320-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faMagnifyingGlassMinus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-minus',\n icon: [512, 512, [\"search-minus\"], \"f010\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nconst faSearchMinus = faMagnifyingGlassMinus;\nconst faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M0 48C0 21.5 21.5 0 48 0L208 0c26.5 0 48 21.5 48 48l0 48-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 48c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 48z\"]\n};\nconst faUserLarge = {\n prefix: 'fas',\n iconName: 'user-large',\n icon: [512, 512, [\"user-alt\"], \"f406\", \"M256 288A144 144 0 1 0 256 0a144 144 0 1 0 0 288zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7l450.6 0c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320l-189.4 0z\"]\n};\nconst faUserAlt = faUserLarge;\nconst faTrainTram = {\n prefix: 'fas',\n iconName: 'train-tram',\n icon: [448, 512, [128650], \"e5b4\", \"M86.8 48c-12.2 0-23.6 5.5-31.2 15L42.7 79C34.5 89.3 19.4 91 9 82.7S-3 59.4 5.3 49L18 33C34.7 12.2 60 0 86.8 0L361.2 0c26.7 0 52 12.2 68.7 33l12.8 16c8.3 10.4 6.6 25.5-3.8 33.7s-25.5 6.6-33.7-3.7L392.5 63c-7.6-9.5-19.1-15-31.2-15L248 48l0 48 40 0c53 0 96 43 96 96l0 160c0 30.6-14.3 57.8-36.6 75.4l65.5 65.5c7.1 7.1 2.1 19.1-7.9 19.1l-39.7 0c-8.5 0-16.6-3.4-22.6-9.4L288 448l-128 0-54.6 54.6c-6 6-14.1 9.4-22.6 9.4L43 512c-10 0-15-12.1-7.9-19.1l65.5-65.5C78.3 409.8 64 382.6 64 352l0-160c0-53 43-96 96-96l40 0 0-48L86.8 48zM160 160c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-128 0zm32 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M96 128l0-57.8c0-13.3 8.3-25.3 20.8-30l96-36c7.2-2.7 15.2-2.7 22.5 0l96 36c12.5 4.7 20.8 16.6 20.8 30l0 57.8-.3 0c.2 2.6 .3 5.3 .3 8l0 40c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-40c0-2.7 .1-5.4 .3-8l-.3 0zm48 48c0 44.2 35.8 80 80 80s80-35.8 80-80l0-16-160 0 0 16zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7L30.7 512C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6zM208 48l0 16-16 0c-4.4 0-8 3.6-8 8l0 16c0 4.4 3.6 8 8 8l16 0 0 16c0 4.4 3.6 8 8 8l16 0c4.4 0 8-3.6 8-8l0-16 16 0c4.4 0 8-3.6 8-8l0-16c0-4.4-3.6-8-8-8l-16 0 0-16c0-4.4-3.6-8-8-8l-16 0c-4.4 0-8 3.6-8 8z\"]\n};\nconst faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [128137], \"f48e\", \"M441 7l32 32 32 32c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15L417.9 128l55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72L295 73c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l55 55L422.1 56 407 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM210.3 155.7l61.1-61.1c.3 .3 .6 .7 1 1l16 16 56 56 56 56 16 16c.3 .3 .6 .6 1 1l-191 191c-10.5 10.5-24.7 16.4-39.6 16.4l-88.8 0L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57 0-88.8c0-14.9 5.9-29.1 16.4-39.6l43.3-43.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57z\"]\n};\nconst faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [9925], \"f6c4\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 84.7 14.1c5.4 .9 10 4.5 12.1 9.6s1.5 10.9-1.6 15.4l-38.5 55c-2.2-.1-4.4-.2-6.7-.2c-23.3 0-45.1 6.2-64 17.1l0-1.1c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM639.9 431.9c0 44.2-35.8 80-80 80l-271.9 0c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nconst faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 34.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6L256 64l16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L176 0zM288 204c28.7 0 52 23.3 52 52l0 96c0 28.7-23.3 52-52 52s-52-23.3-52-52l0-96c0-28.7 23.3-52 52-52zm-12 52l0 96c0 6.6 5.4 12 12 12s12-5.4 12-12l0-96c0-6.6-5.4-12-12-12s-12 5.4-12 12zM159.5 244c-5.4 0-10.2 3.5-11.9 8.6l-.6 1.7c-3.5 10.5-14.8 16.1-25.3 12.6s-16.1-14.8-12.6-25.3l.6-1.7c7.2-21.5 27.2-35.9 49.8-35.9c29 0 52.5 23.5 52.5 52.5l0 2.2c0 13.4-4.9 26.4-13.8 36.4l-39 43.9c-6.2 7-10 15.7-10.9 24.9l43.8 0c11 0 20 9 20 20s-9 20-20 20l-64 0c-11 0-20-9-20-20l0-15.7c0-20.6 7.5-40.4 21.2-55.8l39-43.9c2.4-2.7 3.7-6.2 3.7-9.8l0-2.2c0-6.9-5.6-12.5-12.5-12.5z\"]\n};\nconst faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M0 0H512V512H0V0z\"]\n};\nconst faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [448, 512, [129522], \"f076\", \"M0 160l0 96C0 379.7 100.3 480 224 480s224-100.3 224-224l0-96-128 0 0 96c0 53-43 96-96 96s-96-43-96-96l0-96L0 160zm0-32l128 0 0-64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64l0 64zm320 0l128 0 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64z\"]\n};\nconst faJar = {\n prefix: 'fas',\n iconName: 'jar',\n icon: [320, 512, [], \"e516\", \"M32 32C32 14.3 46.3 0 64 0L256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64l192 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 160zm96 64c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32L96 224z\"]\n};\nconst faNoteSticky = {\n prefix: 'fas',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l224 0 0-112c0-26.5 21.5-48 48-48l112 0 0-224c0-35.3-28.7-64-64-64L64 32zM448 352l-45.3 0L336 352c-8.8 0-16 7.2-16 16l0 66.7 0 45.3 32-32 64-64 32-32z\"]\n};\nconst faStickyNote = faNoteSticky;\nconst faBugSlash = {\n prefix: 'fas',\n iconName: 'bug-slash',\n icon: [640, 512, [], \"e490\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L477.4 348.9c1.7-9.4 2.6-19 2.6-28.9l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64.3 0c-1.1-14.1-5-27.5-11.1-39.5c.7-.6 1.4-1.2 2.1-1.9l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-.7 .7-1.3 1.4-1.9 2.1C409.2 164.1 393.1 160 376 160l-112 0c-8.3 0-16.3 1-24 2.8L38.8 5.1zM320 0c-53 0-96 43-96 96l0 3.6c0 15.7 12.7 28.4 28.4 28.4l135.1 0c15.7 0 28.4-12.7 28.4-28.4l0-3.6c0-53-43-96-96-96zM160.3 256L96 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c0 24.6 5.5 47.8 15.4 68.6c-2.2 1.3-4.2 2.9-6 4.8l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l63.1-63.1c24.5 21.8 55.8 36.2 90.3 39.6l0-143.7L166.7 227.3c-3.4 9-5.6 18.7-6.4 28.7zM336 479.2c36.6-3.6 69.7-19.6 94.8-43.8L336 360.7l0 118.5z\"]\n};\nconst faArrowUpFromWaterPump = {\n prefix: 'fas',\n iconName: 'arrow-up-from-water-pump',\n icon: [576, 512, [], \"e4b6\", \"M112 0C85.5 0 64 21.5 64 48l0 208-16 0c-26.5 0-48 21.5-48 48l0 96c0 8 2 15.6 5.4 22.2c3.8-1.7 7.8-3.1 12-4.1c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c4.2 1 8.2 2.4 12 4.1C574 415.6 576 408 576 400l0-96c0-26.5-21.5-48-48-48l-48 0 0-146.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 109.3 416 256l-128 0 0-208c0-26.5-21.5-48-48-48L112 0zM306.5 421.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nconst faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [576, 512, [129460], \"f5d7\", \"M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2l192 0c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336l-192 0c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z\"]\n};\nconst faTableCellsRowUnlock = {\n prefix: 'fas',\n iconName: 'table-cells-row-unlock',\n icon: [640, 512, [], \"e691\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 224l0 64 88 0 0-64-88 0zm232 0l-88 0 0 64 88 0 0-64zM152 352l-88 0 0 64 88 0 0-64zm56 0l0 64 88 0 0-64-88 0zm288-80l0 48 32 0 32 0 48 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48c0-44.2 35.8-80 80-80s80 35.8 80 80l-48 0c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M240 80l102.7 0c-7.9-19.5-20.4-36.5-36.2-49.9L240 80zm37.7-68.2C261.3 4.2 243.2 0 224 0c-53.7 0-99.7 33.1-118.7 80l81.4 0 91-68.2zM224 256c70.7 0 128-57.3 128-128c0-5.4-.3-10.8-1-16L97 112c-.7 5.2-1 10.6-1 16c0 70.7 57.3 128 128 128zM124 312.4c-9.7 3.1-19.1 7-28 11.7L96 512l147.7 0L181.5 408.2 124 312.4zm33-7.2L204.3 384l67.7 0c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48l82.3 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0c-7.2 0-14.3 .4-21.3 1.3zM0 482.3C0 498.7 13.3 512 29.7 512L64 512l0-166.6C24.9 378.1 0 427.3 0 482.3zM320 464c0-26.5-21.5-48-48-48l-48.5 0 57.1 95.2C303 507.2 320 487.6 320 464z\"]\n};\nconst faFaceSadTear = {\n prefix: 'fas',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM367.6 208a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSadTear = faFaceSadTear;\nconst faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z\"]\n};\nconst faTentArrowsDown = {\n prefix: 'fas',\n iconName: 'tent-arrows-down',\n icon: [576, 512, [], \"e581\", \"M209.8 111.9c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L136 24c0-13.3-10.7-24-24-24S88 10.7 88 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zm352 0c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L488 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [128, 512, [10069, 10071, 61738], \"21\", \"M96 64c0-17.7-14.3-32-32-32S32 46.3 32 64l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32L96 64zM64 480a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faArrowsSpin = {\n prefix: 'fas',\n iconName: 'arrows-spin',\n icon: [512, 512, [], \"e4bb\", \"M256 96c38.4 0 73.7 13.5 101.3 36.1l-32.6 32.6c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9l112 0c8.8 0 16-7.2 16-16l0-112c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-34 34C363.4 52.6 312.1 32 256 32c-10.9 0-21.5 .8-32 2.3l0 64.9c10.3-2.1 21-3.2 32-3.2zM132.1 154.7l32.6 32.6c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8l0-112c0-8.8-7.2-16-16-16L64 48c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l34 34C52.6 148.6 32 199.9 32 256c0 10.9 .8 21.5 2.3 32l64.9 0c-2.1-10.3-3.2-21-3.2-32c0-38.4 13.5-73.7 36.1-101.3zM477.7 224l-64.9 0c2.1 10.3 3.2 21 3.2 32c0 38.4-13.5 73.7-36.1 101.3l-32.6-32.6c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8l0 112c0 8.8 7.2 16 16 16l112 0c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-34-34C459.4 363.4 480 312.1 480 256c0-10.9-.8-21.5-2.3-32zM256 416c-38.4 0-73.7-13.5-101.3-36.1l32.6-32.6c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9L64 320c-8.8 0-16 7.2-16 16l0 112c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l34-34C148.6 459.4 199.9 480 256 480c10.9 0 21.5-.8 32-2.3l0-64.9c-10.3 2.1-21 3.2-32 3.2z\"]\n};\nconst faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [128424, 128438, 9113], \"f02f\", \"M128 0C92.7 0 64 28.7 64 64l0 96 64 0 0-96 226.7 0L384 93.3l0 66.7 64 0 0-66.7c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0L128 0zM384 352l0 32 0 64-256 0 0-64 0-16 0-16 256 0zm64 32l32 0c17.7 0 32-14.3 32-32l0-96c0-35.3-28.7-64-64-64L64 192c-35.3 0-64 28.7-64 64l0 96c0 17.7 14.3 32 32 32l32 0 0 64c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-64zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faTurkishLiraSign = {\n prefix: 'fas',\n iconName: 'turkish-lira-sign',\n icon: [384, 512, [\"try\", \"turkish-lira\"], \"e2bb\", \"M96 32c17.7 0 32 14.3 32 32l0 35.3L247.2 65.2c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 165.9l0 29.4 119.2-34.1c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 261.9 128 416l63.8 0c68.2 0 124.4-53.5 127.8-121.6l.4-8c.9-17.7 15.9-31.2 33.6-30.4s31.2 15.9 30.4 33.6l-.4 8C378.5 399.8 294.1 480 191.8 480L96 480c-17.7 0-32-14.3-32-32l0-167.9-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 213.6l0-29.4-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 117.6 64 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faTry = faTurkishLiraSign;\nconst faTurkishLira = faTurkishLiraSign;\nconst faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [320, 512, [128178, 61781, \"dollar\", \"usd\"], \"24\", \"M160 0c17.7 0 32 14.3 32 32l0 35.7c1.6 .2 3.1 .4 4.7 .7c.4 .1 .7 .1 1.1 .2l48 8.8c17.4 3.2 28.9 19.9 25.7 37.2s-19.9 28.9-37.2 25.7l-47.5-8.7c-31.3-4.6-58.9-1.5-78.3 6.2s-27.2 18.3-29 28.1c-2 10.7-.5 16.7 1.2 20.4c1.8 3.9 5.5 8.3 12.8 13.2c16.3 10.7 41.3 17.7 73.7 26.3l2.9 .8c28.6 7.6 63.6 16.8 89.6 33.8c14.2 9.3 27.6 21.9 35.9 39.5c8.5 17.9 10.3 37.9 6.4 59.2c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11l0 33.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.9c-.4-.1-.9-.1-1.3-.2l-.2 0s0 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.1-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.5 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.6 .4-16.7-1.3-20.4c-1.9-4-5.6-8.4-13-13.3c-16.4-10.7-41.5-17.7-74-26.3l-2.8-.7s0 0 0 0C119.4 279.3 84.4 270 58.4 253c-14.2-9.3-27.5-22-35.8-39.6c-8.4-17.9-10.1-37.9-6.1-59.2C23.7 116 52.3 91.2 84.8 78.3c13.3-5.3 27.9-8.9 43.2-11L128 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faDollar = faDollarSign;\nconst faUsd = faDollarSign;\nconst faX = {\n prefix: 'fas',\n iconName: 'x',\n icon: [384, 512, [120], \"58\", \"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"]\n};\nconst faMagnifyingGlassDollar = {\n prefix: 'fas',\n iconName: 'magnifying-glass-dollar',\n icon: [512, 512, [\"search-dollar\"], \"f688\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM228 104c0-11-9-20-20-20s-20 9-20 20l0 14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1c0 0 0 0 0 0s0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4l0 14.6c0 11 9 20 20 20s20-9 20-20l0-13.8c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7l0-13.9z\"]\n};\nconst faSearchDollar = faMagnifyingGlassDollar;\nconst faUsersGear = {\n prefix: 'fas',\n iconName: 'users-gear',\n icon: [640, 512, [\"users-cog\"], \"f509\", \"M144 160A80 80 0 1 0 144 0a80 80 0 1 0 0 160zm368 0A80 80 0 1 0 512 0a80 80 0 1 0 0 160zM0 298.7C0 310.4 9.6 320 21.3 320l213.3 0c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7l-42.7 0C47.8 192 0 239.8 0 298.7zM320 320c24 0 45.9-8.8 62.7-23.3c2.5-3.7 5.2-7.3 8-10.7c2.7-3.3 5.7-6.1 9-8.3C410 262.3 416 243.9 416 224c0-53-43-96-96-96s-96 43-96 96s43 96 96 96zm65.4 60.2c-10.3-5.9-18.1-16.2-20.8-28.2l-103.2 0C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7l300.6 0c-2.1-5.2-3.2-10.9-3.2-16.4l0-3c-1.3-.7-2.7-1.5-4-2.3l-2.6 1.5c-16.8 9.7-40.5 8-54.7-9.7c-4.5-5.6-8.6-11.5-12.4-17.6l-.1-.2-.1-.2-2.4-4.1-.1-.2-.1-.2c-3.4-6.2-6.4-12.6-9-19.3c-8.2-21.2 2.2-42.6 19-52.3l2.7-1.5c0-.8 0-1.5 0-2.3s0-1.5 0-2.3l-2.7-1.5zM533.3 192l-42.7 0c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 17.4-3.5 33.9-9.7 49c2.5 .9 4.9 2 7.1 3.3l2.6 1.5c1.3-.8 2.6-1.6 4-2.3l0-3c0-19.4 13.3-39.1 35.8-42.6c7.9-1.2 16-1.9 24.2-1.9s16.3 .6 24.2 1.9c22.5 3.5 35.8 23.2 35.8 42.6l0 3c1.3 .7 2.7 1.5 4 2.3l2.6-1.5c16.8-9.7 40.5-8 54.7 9.7c2.3 2.8 4.5 5.8 6.6 8.7c-2.1-57.1-49-102.7-106.6-102.7zm91.3 163.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3l-2.9 1.7c-9.2 5.3-20.4 4-29.6-1.3s-16.1-14.5-16.1-25.1l0-3.4c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9l0 3.4c0 10.6-6.9 19.8-16.1 25.1s-20.4 6.6-29.6 1.3l-2.9-1.7c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 17.9l2.9 1.7c9.2 5.3 13.7 15.8 13.7 26.4s-4.5 21.1-13.7 26.4l-3 1.7c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3l2.9-1.7c9.2-5.3 20.4-4 29.6 1.3s16.1 14.5 16.1 25.1l0 3.4c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9l0-3.4c0-10.6 6.9-19.8 16.1-25.1s20.4-6.6 29.6-1.3l2.9 1.7c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-3-1.7c-9.2-5.3-13.7-15.8-13.7-26.4s4.5-21.1 13.7-26.4l3-1.7zM472 384a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n};\nconst faUsersCog = faUsersGear;\nconst faPersonMilitaryPointing = {\n prefix: 'fas',\n iconName: 'person-military-pointing',\n icon: [576, 512, [], \"e54a\", \"M246.9 14.1C234 15.2 224 26 224 39c0 13.8 11.2 25 25 25l151 0c8.8 0 16-7.2 16-16l0-30.6C416 8 408 .7 398.7 1.4L246.9 14.1zM240 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16L241.6 96c-1 5.2-1.6 10.5-1.6 16zM72 224c-22.1 0-40 17.9-40 40s17.9 40 40 40l152 0 0 89.4L386.8 230.5c-13.3-4.3-27.3-6.5-41.6-6.5L240 224 72 224zm345.7 20.9L246.6 416 416 416l0-46.3 53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L462.3 290.8c-11.2-18.9-26.6-34.5-44.6-45.9zM224 448l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32-192 0z\"]\n};\nconst faBuildingColumns = {\n prefix: 'fas',\n iconName: 'building-columns',\n icon: [512, 512, [\"bank\", \"institution\", \"museum\", \"university\"], \"f19c\", \"M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160l0 8c0 13.3 10.7 24 24 24l400 0c13.3 0 24-10.7 24-24l0-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8-3.4-17.2-3.4-25.2 0zM128 224l-64 0 0 196.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512l448 0c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1L448 224l-64 0 0 192-40 0 0-192-64 0 0 192-48 0 0-192-64 0 0 192-40 0 0-192zM256 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBank = faBuildingColumns;\nconst faInstitution = faBuildingColumns;\nconst faMuseum = faBuildingColumns;\nconst faUniversity = faBuildingColumns;\nconst faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M288 0c17.7 0 32 14.3 32 32l0 17.7C451.8 63.4 557.7 161 573.9 285.9c2 15.6-17.3 24.4-27.8 12.7C532.1 283 504.8 272 480 272c-38.7 0-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C359 299.5 326.7 272 288 272s-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C167 299.5 134.7 272 96 272c-24.8 0-52.1 11-66.1 26.7C19.4 310.4 .1 301.5 2.1 285.9C18.3 161 124.2 63.4 256 49.7L256 32c0-17.7 14.3-32 32-32zm0 304c12.3 0 23.5 4.6 32 12.2l0 114.3c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4l0-114.3c8.5-7.6 19.7-12.2 32-12.2z\"]\n};\nconst faTrowel = {\n prefix: 'fas',\n iconName: 'trowel',\n icon: [512, 512, [], \"e589\", \"M343.9 213.4L245.3 312l65.4 65.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9S-2.1 481.8 1.5 470.5l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L200 266.7l98.6-98.6c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"]\n};\nconst faD = {\n prefix: 'fas',\n iconName: 'd',\n icon: [384, 512, [100], \"44\", \"M0 96C0 60.7 28.7 32 64 32l96 0c123.7 0 224 100.3 224 224s-100.3 224-224 224l-96 0c-35.3 0-64-28.7-64-64L0 96zm160 0L64 96l0 320 96 0c88.4 0 160-71.6 160-160s-71.6-160-160-160z\"]\n};\nconst faStapler = {\n prefix: 'fas',\n iconName: 'stapler',\n icon: [640, 512, [], \"e5af\", \"M640 299.3l0 4.7 0 128c0 26.5-21.5 48-48 48l-80 0-64 0L64 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0 0-48L96 368c-17.7 0-32-14.3-32-32l0-116.6L33.8 214C14.2 210.5 0 193.5 0 173.7c0-8.9 2.9-17.5 8.2-24.6l35.6-47.5C76.7 57.8 128.2 32 182.9 32c27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304l0-16L128 230.9l0 73.1 320 0z\"]\n};\nconst faMasksTheater = {\n prefix: 'fas',\n iconName: 'masks-theater',\n icon: [640, 512, [127917, \"theater-masks\"], \"f630\", \"M74.6 373.2c41.7 36.1 108 82.5 166.1 73.7c6.1-.9 12.1-2.5 18-4.5c-9.2-12.3-17.3-24.4-24.2-35.4c-21.9-35-28.8-75.2-25.9-113.6c-20.6 4.1-39.2 13-54.7 25.4c-6.5 5.2-16.3 1.3-14.8-7c6.4-33.5 33-60.9 68.2-66.3c2.6-.4 5.3-.7 7.9-.8l19.4-131.3c2-13.8 8-32.7 25-45.9C278.2 53.2 310.5 37 363.2 32.2c-.8-.7-1.6-1.4-2.4-2.1C340.6 14.5 288.4-11.5 175.7 5.6S20.5 63 5.7 83.9C0 91.9-.8 102 .6 111.8L24.8 276.1c5.5 37.3 21.5 72.6 49.8 97.2zm87.7-219.6c4.4-3.1 10.8-2 11.8 3.3c.1 .5 .2 1.1 .3 1.6c3.2 21.8-11.6 42-33.1 45.3s-41.5-11.8-44.7-33.5c-.1-.5-.1-1.1-.2-1.6c-.6-5.4 5.2-8.4 10.3-6.7c9 3 18.8 3.9 28.7 2.4s19.1-5.3 26.8-10.8zM261.6 390c29.4 46.9 79.5 110.9 137.6 119.7s124.5-37.5 166.1-73.7c28.3-24.5 44.3-59.8 49.8-97.2l24.2-164.3c1.4-9.8 .6-19.9-5.1-27.9c-14.8-20.9-57.3-61.2-170-78.3S299.4 77.2 279.2 92.8c-7.8 6-11.5 15.4-12.9 25.2L242.1 282.3c-5.5 37.3-.4 75.8 19.6 107.7zM404.5 235.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6c-1 5.3-7.4 6.4-11.8 3.3zm136.2 15.5c-1 5.3-7.4 6.4-11.8 3.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6zM530 350.2c-19.6 44.7-66.8 72.5-116.8 64.9s-87.1-48.2-93-96.7c-1-8.3 8.9-12.1 15.2-6.7c23.9 20.8 53.6 35.3 87 40.3s66.1 .1 94.9-12.8c7.6-3.4 16 3.2 12.6 10.9z\"]\n};\nconst faTheaterMasks = faMasksTheater;\nconst faKipSign = {\n prefix: 'fas',\n iconName: 'kip-sign',\n icon: [384, 512, [], \"e1c4\", \"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4 128 64c0-17.7-14.3-32-32-32S64 46.3 64 64l0 160-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-122.4L299.2 472.3c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L182.5 288 352 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-169.5 0L340.8 88.3z\"]\n};\nconst faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0 0-64L32 96zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm-64-64c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32c0 13.2-4 25.4-10.8 35.6c24.9 8.7 42.8 32.5 42.8 60.4c0 11.7-3.1 22.6-8.6 32l8.6 0c88.4 0 160-71.6 160-160l0-61.7c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64l0 88c0 22.1 17.9 40 40 40s40-17.9 40-40l0-56c0-8.8 7.2-16 16-16s16 7.2 16 16l0 56c0 39.8-32.2 72-72 72z\"]\n};\nconst faHandshakeSimple = {\n prefix: 'fas',\n iconName: 'handshake-simple',\n icon: [640, 512, [129309, \"handshake-alt\"], \"f4c6\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352l41.8 0c26.5 0 48-21.5 48-48l0-128c0-26.5-21.5-48-48-48l-76 0-4 0-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48-80 0c-26.5 0-48 21.5-48 48L0 304c0 26.5 21.5 48 48 48l108.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z\"]\n};\nconst faHandshakeAlt = faHandshakeSimple;\nconst faJetFighter = {\n prefix: 'fas',\n iconName: 'jet-fighter',\n icon: [640, 512, [\"fighter-jet\"], \"f0fb\", \"M160 24c0-13.3 10.7-24 24-24L296 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0L384 192l116.4 0c7.7 0 15.3 1.4 22.5 4.1L625 234.4c9 3.4 15 12 15 21.6s-6 18.2-15 21.6L522.9 315.9c-7.2 2.7-14.8 4.1-22.5 4.1L384 320 280 464l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-112 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-144-32 0-54.6 54.6c-6 6-14.1 9.4-22.6 9.4L64 384c-17.7 0-32-14.3-32-32l0-64c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l18.7 0c8.5 0 16.6 3.4 22.6 9.4L160 192l32 0 0-144-8 0c-13.3 0-24-10.7-24-24zM80 240c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0z\"]\n};\nconst faFighterJet = faJetFighter;\nconst faSquareShareNodes = {\n prefix: 'fas',\n iconName: 'square-share-nodes',\n icon: [448, 512, [\"share-alt-square\"], \"f1e1\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM384 160c0 35.3-28.7 64-64 64c-15.4 0-29.5-5.4-40.6-14.5L194.1 256l85.3 46.5c11-9.1 25.2-14.5 40.6-14.5c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L174.5 300c-11.7 12.3-28.2 20-46.5 20c-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3c0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nconst faShareAltSquare = faSquareShareNodes;\nconst faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M24 32C10.7 32 0 42.7 0 56L0 456c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24L64 56c0-13.3-10.7-24-24-24L24 32zm88 0c-8.8 0-16 7.2-16 16l0 416c0 8.8 7.2 16 16 16s16-7.2 16-16l0-416c0-8.8-7.2-16-16-16zm72 0c-13.3 0-24 10.7-24 24l0 400c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-400c0-13.3-10.7-24-24-24l-16 0zm96 0c-13.3 0-24 10.7-24 24l0 400c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-400c0-13.3-10.7-24-24-24l-16 0zM448 56l0 400c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-400c0-13.3-10.7-24-24-24l-16 0c-13.3 0-24 10.7-24 24zm-64-8l0 416c0 8.8 7.2 16 16 16s16-7.2 16-16l0-416c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nconst faPlusMinus = {\n prefix: 'fas',\n iconName: 'plus-minus',\n icon: [384, 512, [], \"e43c\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112L48 144c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0 0 112c0 17.7 14.3 32 32 32s32-14.3 32-32l0-112 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-112zM0 480c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448c-17.7 0-32 14.3-32 32z\"]\n};\nconst faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [\"video-camera\"], \"f03d\", \"M0 128C0 92.7 28.7 64 64 64l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2l0 256c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1l0-17.1 0-128 0-17.1 14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z\"]\n};\nconst faVideoCamera = faVideo;\nconst faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [127891, \"mortar-board\"], \"f19d\", \"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9l0 28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5l0-24.6c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"]\n};\nconst faMortarBoard = faGraduationCap;\nconst faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M224 24l0 56-56 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l56 0 0 56c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-56 56 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-56 0 0-56c0-13.3-10.7-24-24-24L248 0c-13.3 0-24 10.7-24 24zM559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 272 416c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0-16 0-78.3 0c-29.1 0-57.3 9.9-80 28L68.8 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l160 0 160.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2l.9 0c0 0 0 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nconst faPersonCircleCheck = {\n prefix: 'fas',\n iconName: 'person-circle-check',\n icon: [576, 512, [], \"e53e\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faTurnUp = {\n prefix: 'fas',\n iconName: 'turn-up',\n icon: [384, 512, [10548, \"level-up-alt\"], \"f3bf\", \"M350 177.5c3.8-8.8 2-19-4.6-26l-136-144C204.9 2.7 198.6 0 192 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26s12.5 14.5 22 14.5l88 0 0 192c0 17.7-14.3 32-32 32l-80 0c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l80 0c70.7 0 128-57.3 128-128l0-192 88 0c9.6 0 18.2-5.7 22-14.5z\"]\n};\nconst faLevelUpAlt = faTurnUp;\nvar icons = {\n fa0,\n fa1,\n fa2,\n fa3,\n fa4,\n fa5,\n fa6,\n fa7,\n fa8,\n fa9,\n faFillDrip,\n faArrowsToCircle,\n faCircleChevronRight,\n faChevronCircleRight,\n faAt,\n faTrashCan,\n faTrashAlt,\n faTextHeight,\n faUserXmark,\n faUserTimes,\n faStethoscope,\n faMessage,\n faCommentAlt,\n faInfo,\n faDownLeftAndUpRightToCenter,\n faCompressAlt,\n faExplosion,\n faFileLines,\n faFileAlt,\n faFileText,\n faWaveSquare,\n faRing,\n faBuildingUn,\n faDiceThree,\n faCalendarDays,\n faCalendarAlt,\n faAnchorCircleCheck,\n faBuildingCircleArrowRight,\n faVolleyball,\n faVolleyballBall,\n faArrowsUpToLine,\n faSortDown,\n faSortDesc,\n faCircleMinus,\n faMinusCircle,\n faDoorOpen,\n faRightFromBracket,\n faSignOutAlt,\n faAtom,\n faSoap,\n faIcons,\n faHeartMusicCameraBolt,\n faMicrophoneLinesSlash,\n faMicrophoneAltSlash,\n faBridgeCircleCheck,\n faPumpMedical,\n faFingerprint,\n faHandPointRight,\n faMagnifyingGlassLocation,\n faSearchLocation,\n faForwardStep,\n faStepForward,\n faFaceSmileBeam,\n faSmileBeam,\n faFlagCheckered,\n faFootball,\n faFootballBall,\n faSchoolCircleExclamation,\n faCrop,\n faAnglesDown,\n faAngleDoubleDown,\n faUsersRectangle,\n faPeopleRoof,\n faPeopleLine,\n faBeerMugEmpty,\n faBeer,\n faDiagramPredecessor,\n faArrowUpLong,\n faLongArrowUp,\n faFireFlameSimple,\n faBurn,\n faPerson,\n faMale,\n faLaptop,\n faFileCsv,\n faMenorah,\n faTruckPlane,\n faRecordVinyl,\n faFaceGrinStars,\n faGrinStars,\n faBong,\n faSpaghettiMonsterFlying,\n faPastafarianism,\n faArrowDownUpAcrossLine,\n faSpoon,\n faUtensilSpoon,\n faJarWheat,\n faEnvelopesBulk,\n faMailBulk,\n faFileCircleExclamation,\n faCircleH,\n faHospitalSymbol,\n faPager,\n faAddressBook,\n faContactBook,\n faStrikethrough,\n faK,\n faLandmarkFlag,\n faPencil,\n faPencilAlt,\n faBackward,\n faCaretRight,\n faComments,\n faPaste,\n faFileClipboard,\n faCodePullRequest,\n faClipboardList,\n faTruckRampBox,\n faTruckLoading,\n faUserCheck,\n faVialVirus,\n faSheetPlastic,\n faBlog,\n faUserNinja,\n faPersonArrowUpFromLine,\n faScrollTorah,\n faTorah,\n faBroomBall,\n faQuidditch,\n faQuidditchBroomBall,\n faToggleOff,\n faBoxArchive,\n faArchive,\n faPersonDrowning,\n faArrowDown91,\n faSortNumericDesc,\n faSortNumericDownAlt,\n faFaceGrinTongueSquint,\n faGrinTongueSquint,\n faSprayCan,\n faTruckMonster,\n faW,\n faEarthAfrica,\n faGlobeAfrica,\n faRainbow,\n faCircleNotch,\n faTabletScreenButton,\n faTabletAlt,\n faPaw,\n faCloud,\n faTrowelBricks,\n faFaceFlushed,\n faFlushed,\n faHospitalUser,\n faTentArrowLeftRight,\n faGavel,\n faLegal,\n faBinoculars,\n faMicrophoneSlash,\n faBoxTissue,\n faMotorcycle,\n faBellConcierge,\n faConciergeBell,\n faPenRuler,\n faPencilRuler,\n faPeopleArrows,\n faPeopleArrowsLeftRight,\n faMarsAndVenusBurst,\n faSquareCaretRight,\n faCaretSquareRight,\n faScissors,\n faCut,\n faSunPlantWilt,\n faToiletsPortable,\n faHockeyPuck,\n faTable,\n faMagnifyingGlassArrowRight,\n faTachographDigital,\n faDigitalTachograph,\n faUsersSlash,\n faClover,\n faReply,\n faMailReply,\n faStarAndCrescent,\n faHouseFire,\n faSquareMinus,\n faMinusSquare,\n faHelicopter,\n faCompass,\n faSquareCaretDown,\n faCaretSquareDown,\n faFileCircleQuestion,\n faLaptopCode,\n faSwatchbook,\n faPrescriptionBottle,\n faBars,\n faNavicon,\n faPeopleGroup,\n faHourglassEnd,\n faHourglass3,\n faHeartCrack,\n faHeartBroken,\n faSquareUpRight,\n faExternalLinkSquareAlt,\n faFaceKissBeam,\n faKissBeam,\n faFilm,\n faRulerHorizontal,\n faPeopleRobbery,\n faLightbulb,\n faCaretLeft,\n faCircleExclamation,\n faExclamationCircle,\n faSchoolCircleXmark,\n faArrowRightFromBracket,\n faSignOut,\n faCircleChevronDown,\n faChevronCircleDown,\n faUnlockKeyhole,\n faUnlockAlt,\n faCloudShowersHeavy,\n faHeadphonesSimple,\n faHeadphonesAlt,\n faSitemap,\n faCircleDollarToSlot,\n faDonate,\n faMemory,\n faRoadSpikes,\n faFireBurner,\n faFlag,\n faHanukiah,\n faFeather,\n faVolumeLow,\n faVolumeDown,\n faCommentSlash,\n faCloudSunRain,\n faCompress,\n faWheatAwn,\n faWheatAlt,\n faAnkh,\n faHandsHoldingChild,\n faAsterisk,\n faSquareCheck,\n faCheckSquare,\n faPesetaSign,\n faHeading,\n faHeader,\n faGhost,\n faList,\n faListSquares,\n faSquarePhoneFlip,\n faPhoneSquareAlt,\n faCartPlus,\n faGamepad,\n faCircleDot,\n faDotCircle,\n faFaceDizzy,\n faDizzy,\n faEgg,\n faHouseMedicalCircleXmark,\n faCampground,\n faFolderPlus,\n faFutbol,\n faFutbolBall,\n faSoccerBall,\n faPaintbrush,\n faPaintBrush,\n faLock,\n faGasPump,\n faHotTubPerson,\n faHotTub,\n faMapLocation,\n faMapMarked,\n faHouseFloodWater,\n faTree,\n faBridgeLock,\n faSackDollar,\n faPenToSquare,\n faEdit,\n faCarSide,\n faShareNodes,\n faShareAlt,\n faHeartCircleMinus,\n faHourglassHalf,\n faHourglass2,\n faMicroscope,\n faSink,\n faBagShopping,\n faShoppingBag,\n faArrowDownZA,\n faSortAlphaDesc,\n faSortAlphaDownAlt,\n faMitten,\n faPersonRays,\n faUsers,\n faEyeSlash,\n faFlaskVial,\n faHand,\n faHandPaper,\n faOm,\n faWorm,\n faHouseCircleXmark,\n faPlug,\n faChevronUp,\n faHandSpock,\n faStopwatch,\n faFaceKiss,\n faKiss,\n faBridgeCircleXmark,\n faFaceGrinTongue,\n faGrinTongue,\n faChessBishop,\n faFaceGrinWink,\n faGrinWink,\n faEarDeaf,\n faDeaf,\n faDeafness,\n faHardOfHearing,\n faRoadCircleCheck,\n faDiceFive,\n faSquareRss,\n faRssSquare,\n faLandMineOn,\n faICursor,\n faStamp,\n faStairs,\n faI,\n faHryvniaSign,\n faHryvnia,\n faPills,\n faFaceGrinWide,\n faGrinAlt,\n faTooth,\n faV,\n faBangladeshiTakaSign,\n faBicycle,\n faStaffSnake,\n faRodAsclepius,\n faRodSnake,\n faStaffAesculapius,\n faHeadSideCoughSlash,\n faTruckMedical,\n faAmbulance,\n faWheatAwnCircleExclamation,\n faSnowman,\n faMortarPestle,\n faRoadBarrier,\n faSchool,\n faIgloo,\n faJoint,\n faAngleRight,\n faHorse,\n faQ,\n faG,\n faNotesMedical,\n faTemperatureHalf,\n faTemperature2,\n faThermometer2,\n faThermometerHalf,\n faDongSign,\n faCapsules,\n faPooStorm,\n faPooBolt,\n faFaceFrownOpen,\n faFrownOpen,\n faHandPointUp,\n faMoneyBill,\n faBookmark,\n faAlignJustify,\n faUmbrellaBeach,\n faHelmetUn,\n faBullseye,\n faBacon,\n faHandPointDown,\n faArrowUpFromBracket,\n faFolder,\n faFolderBlank,\n faFileWaveform,\n faFileMedicalAlt,\n faRadiation,\n faChartSimple,\n faMarsStroke,\n faVial,\n faGauge,\n faDashboard,\n faGaugeMed,\n faTachometerAltAverage,\n faWandMagicSparkles,\n faMagicWandSparkles,\n faE,\n faPenClip,\n faPenAlt,\n faBridgeCircleExclamation,\n faUser,\n faSchoolCircleCheck,\n faDumpster,\n faVanShuttle,\n faShuttleVan,\n faBuildingUser,\n faSquareCaretLeft,\n faCaretSquareLeft,\n faHighlighter,\n faKey,\n faBullhorn,\n faGlobe,\n faSynagogue,\n faPersonHalfDress,\n faRoadBridge,\n faLocationArrow,\n faC,\n faTabletButton,\n faBuildingLock,\n faPizzaSlice,\n faMoneyBillWave,\n faChartArea,\n faAreaChart,\n faHouseFlag,\n faPersonCircleMinus,\n faBan,\n faCancel,\n faCameraRotate,\n faSprayCanSparkles,\n faAirFreshener,\n faStar,\n faRepeat,\n faCross,\n faBox,\n faVenusMars,\n faArrowPointer,\n faMousePointer,\n faMaximize,\n faExpandArrowsAlt,\n faChargingStation,\n faShapes,\n faTriangleCircleSquare,\n faShuffle,\n faRandom,\n faPersonRunning,\n faRunning,\n faMobileRetro,\n faGripLinesVertical,\n faSpider,\n faHandsBound,\n faFileInvoiceDollar,\n faPlaneCircleExclamation,\n faXRay,\n faSpellCheck,\n faSlash,\n faComputerMouse,\n faMouse,\n faArrowRightToBracket,\n faSignIn,\n faShopSlash,\n faStoreAltSlash,\n faServer,\n faVirusCovidSlash,\n faShopLock,\n faHourglassStart,\n faHourglass1,\n faBlenderPhone,\n faBuildingWheat,\n faPersonBreastfeeding,\n faRightToBracket,\n faSignInAlt,\n faVenus,\n faPassport,\n faThumbtackSlash,\n faThumbTackSlash,\n faHeartPulse,\n faHeartbeat,\n faPeopleCarryBox,\n faPeopleCarry,\n faTemperatureHigh,\n faMicrochip,\n faCrown,\n faWeightHanging,\n faXmarksLines,\n faFilePrescription,\n faWeightScale,\n faWeight,\n faUserGroup,\n faUserFriends,\n faArrowUpAZ,\n faSortAlphaUp,\n faChessKnight,\n faFaceLaughSquint,\n faLaughSquint,\n faWheelchair,\n faCircleArrowUp,\n faArrowCircleUp,\n faToggleOn,\n faPersonWalking,\n faWalking,\n faL,\n faFire,\n faBedPulse,\n faProcedures,\n faShuttleSpace,\n faSpaceShuttle,\n faFaceLaugh,\n faLaugh,\n faFolderOpen,\n faHeartCirclePlus,\n faCodeFork,\n faCity,\n faMicrophoneLines,\n faMicrophoneAlt,\n faPepperHot,\n faUnlock,\n faColonSign,\n faHeadset,\n faStoreSlash,\n faRoadCircleXmark,\n faUserMinus,\n faMarsStrokeUp,\n faMarsStrokeV,\n faChampagneGlasses,\n faGlassCheers,\n faClipboard,\n faHouseCircleExclamation,\n faFileArrowUp,\n faFileUpload,\n faWifi,\n faWifi3,\n faWifiStrong,\n faBath,\n faBathtub,\n faUnderline,\n faUserPen,\n faUserEdit,\n faSignature,\n faStroopwafel,\n faBold,\n faAnchorLock,\n faBuildingNgo,\n faManatSign,\n faNotEqual,\n faBorderTopLeft,\n faBorderStyle,\n faMapLocationDot,\n faMapMarkedAlt,\n faJedi,\n faSquarePollVertical,\n faPoll,\n faMugHot,\n faCarBattery,\n faBatteryCar,\n faGift,\n faDiceTwo,\n faChessQueen,\n faGlasses,\n faChessBoard,\n faBuildingCircleCheck,\n faPersonChalkboard,\n faMarsStrokeRight,\n faMarsStrokeH,\n faHandBackFist,\n faHandRock,\n faSquareCaretUp,\n faCaretSquareUp,\n faCloudShowersWater,\n faChartBar,\n faBarChart,\n faHandsBubbles,\n faHandsWash,\n faLessThanEqual,\n faTrain,\n faEyeLowVision,\n faLowVision,\n faCrow,\n faSailboat,\n faWindowRestore,\n faSquarePlus,\n faPlusSquare,\n faToriiGate,\n faFrog,\n faBucket,\n faImage,\n faMicrophone,\n faCow,\n faCaretUp,\n faScrewdriver,\n faFolderClosed,\n faHouseTsunami,\n faSquareNfi,\n faArrowUpFromGroundWater,\n faMartiniGlass,\n faGlassMartiniAlt,\n faRotateLeft,\n faRotateBack,\n faRotateBackward,\n faUndoAlt,\n faTableColumns,\n faColumns,\n faLemon,\n faHeadSideMask,\n faHandshake,\n faGem,\n faDolly,\n faDollyBox,\n faSmoking,\n faMinimize,\n faCompressArrowsAlt,\n faMonument,\n faSnowplow,\n faAnglesRight,\n faAngleDoubleRight,\n faCannabis,\n faCirclePlay,\n faPlayCircle,\n faTablets,\n faEthernet,\n faEuroSign,\n faEur,\n faEuro,\n faChair,\n faCircleCheck,\n faCheckCircle,\n faCircleStop,\n faStopCircle,\n faCompassDrafting,\n faDraftingCompass,\n faPlateWheat,\n faIcicles,\n faPersonShelter,\n faNeuter,\n faIdBadge,\n faMarker,\n faFaceLaughBeam,\n faLaughBeam,\n faHelicopterSymbol,\n faUniversalAccess,\n faCircleChevronUp,\n faChevronCircleUp,\n faLariSign,\n faVolcano,\n faPersonWalkingDashedLineArrowRight,\n faSterlingSign,\n faGbp,\n faPoundSign,\n faViruses,\n faSquarePersonConfined,\n faUserTie,\n faArrowDownLong,\n faLongArrowDown,\n faTentArrowDownToLine,\n faCertificate,\n faReplyAll,\n faMailReplyAll,\n faSuitcase,\n faPersonSkating,\n faSkating,\n faFilterCircleDollar,\n faFunnelDollar,\n faCameraRetro,\n faCircleArrowDown,\n faArrowCircleDown,\n faFileImport,\n faArrowRightToFile,\n faSquareArrowUpRight,\n faExternalLinkSquare,\n faBoxOpen,\n faScroll,\n faSpa,\n faLocationPinLock,\n faPause,\n faHillAvalanche,\n faTemperatureEmpty,\n faTemperature0,\n faThermometer0,\n faThermometerEmpty,\n faBomb,\n faRegistered,\n faAddressCard,\n faContactCard,\n faVcard,\n faScaleUnbalancedFlip,\n faBalanceScaleRight,\n faSubscript,\n faDiamondTurnRight,\n faDirections,\n faBurst,\n faHouseLaptop,\n faLaptopHouse,\n faFaceTired,\n faTired,\n faMoneyBills,\n faSmog,\n faCrutch,\n faFontAwesome,\n faFontAwesomeFlag,\n faFontAwesomeLogoFull,\n faCloudArrowUp,\n faCloudUpload,\n faCloudUploadAlt,\n faPalette,\n faArrowsTurnRight,\n faVest,\n faFerry,\n faArrowsDownToPeople,\n faSeedling,\n faSprout,\n faLeftRight,\n faArrowsAltH,\n faBoxesPacking,\n faCircleArrowLeft,\n faArrowCircleLeft,\n faGroupArrowsRotate,\n faBowlFood,\n faCandyCane,\n faArrowDownWideShort,\n faSortAmountAsc,\n faSortAmountDown,\n faCloudBolt,\n faThunderstorm,\n faTextSlash,\n faRemoveFormat,\n faFaceSmileWink,\n faSmileWink,\n faFileWord,\n faFilePowerpoint,\n faArrowsLeftRight,\n faArrowsH,\n faHouseLock,\n faCloudArrowDown,\n faCloudDownload,\n faCloudDownloadAlt,\n faChildren,\n faChalkboard,\n faBlackboard,\n faUserLargeSlash,\n faUserAltSlash,\n faEnvelopeOpen,\n faHandshakeSimpleSlash,\n faHandshakeAltSlash,\n faMattressPillow,\n faGuaraniSign,\n faArrowsRotate,\n faRefresh,\n faSync,\n faFireExtinguisher,\n faCruzeiroSign,\n faGreaterThanEqual,\n faShieldHalved,\n faShieldAlt,\n faBookAtlas,\n faAtlas,\n faVirus,\n faEnvelopeCircleCheck,\n faLayerGroup,\n faArrowsToDot,\n faArchway,\n faHeartCircleCheck,\n faHouseChimneyCrack,\n faHouseDamage,\n faFileZipper,\n faFileArchive,\n faSquare,\n faMartiniGlassEmpty,\n faGlassMartini,\n faCouch,\n faCediSign,\n faItalic,\n faTableCellsColumnLock,\n faChurch,\n faCommentsDollar,\n faDemocrat,\n faZ,\n faPersonSkiing,\n faSkiing,\n faRoadLock,\n faA,\n faTemperatureArrowDown,\n faTemperatureDown,\n faFeatherPointed,\n faFeatherAlt,\n faP,\n faSnowflake,\n faNewspaper,\n faRectangleAd,\n faAd,\n faCircleArrowRight,\n faArrowCircleRight,\n faFilterCircleXmark,\n faLocust,\n faSort,\n faUnsorted,\n faListOl,\n faList12,\n faListNumeric,\n faPersonDressBurst,\n faMoneyCheckDollar,\n faMoneyCheckAlt,\n faVectorSquare,\n faBreadSlice,\n faLanguage,\n faFaceKissWinkHeart,\n faKissWinkHeart,\n faFilter,\n faQuestion,\n faFileSignature,\n faUpDownLeftRight,\n faArrowsAlt,\n faHouseChimneyUser,\n faHandHoldingHeart,\n faPuzzlePiece,\n faMoneyCheck,\n faStarHalfStroke,\n faStarHalfAlt,\n faCode,\n faWhiskeyGlass,\n faGlassWhiskey,\n faBuildingCircleExclamation,\n faMagnifyingGlassChart,\n faArrowUpRightFromSquare,\n faExternalLink,\n faCubesStacked,\n faWonSign,\n faKrw,\n faWon,\n faVirusCovid,\n faAustralSign,\n faF,\n faLeaf,\n faRoad,\n faTaxi,\n faCab,\n faPersonCirclePlus,\n faChartPie,\n faPieChart,\n faBoltLightning,\n faSackXmark,\n faFileExcel,\n faFileContract,\n faFishFins,\n faBuildingFlag,\n faFaceGrinBeam,\n faGrinBeam,\n faObjectUngroup,\n faPoop,\n faLocationPin,\n faMapMarker,\n faKaaba,\n faToiletPaper,\n faHelmetSafety,\n faHardHat,\n faHatHard,\n faEject,\n faCircleRight,\n faArrowAltCircleRight,\n faPlaneCircleCheck,\n faFaceRollingEyes,\n faMehRollingEyes,\n faObjectGroup,\n faChartLine,\n faLineChart,\n faMaskVentilator,\n faArrowRight,\n faSignsPost,\n faMapSigns,\n faCashRegister,\n faPersonCircleQuestion,\n faH,\n faTarp,\n faScrewdriverWrench,\n faTools,\n faArrowsToEye,\n faPlugCircleBolt,\n faHeart,\n faMarsAndVenus,\n faHouseUser,\n faHomeUser,\n faDumpsterFire,\n faHouseCrack,\n faMartiniGlassCitrus,\n faCocktail,\n faFaceSurprise,\n faSurprise,\n faBottleWater,\n faCirclePause,\n faPauseCircle,\n faToiletPaperSlash,\n faAppleWhole,\n faAppleAlt,\n faKitchenSet,\n faR,\n faTemperatureQuarter,\n faTemperature1,\n faThermometer1,\n faThermometerQuarter,\n faCube,\n faBitcoinSign,\n faShieldDog,\n faSolarPanel,\n faLockOpen,\n faElevator,\n faMoneyBillTransfer,\n faMoneyBillTrendUp,\n faHouseFloodWaterCircleArrowRight,\n faSquarePollHorizontal,\n faPollH,\n faCircle,\n faBackwardFast,\n faFastBackward,\n faRecycle,\n faUserAstronaut,\n faPlaneSlash,\n faTrademark,\n faBasketball,\n faBasketballBall,\n faSatelliteDish,\n faCircleUp,\n faArrowAltCircleUp,\n faMobileScreenButton,\n faMobileAlt,\n faVolumeHigh,\n faVolumeUp,\n faUsersRays,\n faWallet,\n faClipboardCheck,\n faFileAudio,\n faBurger,\n faHamburger,\n faWrench,\n faBugs,\n faRupeeSign,\n faRupee,\n faFileImage,\n faCircleQuestion,\n faQuestionCircle,\n faPlaneDeparture,\n faHandshakeSlash,\n faBookBookmark,\n faCodeBranch,\n faHatCowboy,\n faBridge,\n faPhoneFlip,\n faPhoneAlt,\n faTruckFront,\n faCat,\n faAnchorCircleExclamation,\n faTruckField,\n faRoute,\n faClipboardQuestion,\n faPanorama,\n faCommentMedical,\n faTeethOpen,\n faFileCircleMinus,\n faTags,\n faWineGlass,\n faForwardFast,\n faFastForward,\n faFaceMehBlank,\n faMehBlank,\n faSquareParking,\n faParking,\n faHouseSignal,\n faBarsProgress,\n faTasksAlt,\n faFaucetDrip,\n faCartFlatbed,\n faDollyFlatbed,\n faBanSmoking,\n faSmokingBan,\n faTerminal,\n faMobileButton,\n faHouseMedicalFlag,\n faBasketShopping,\n faShoppingBasket,\n faTape,\n faBusSimple,\n faBusAlt,\n faEye,\n faFaceSadCry,\n faSadCry,\n faAudioDescription,\n faPersonMilitaryToPerson,\n faFileShield,\n faUserSlash,\n faPen,\n faTowerObservation,\n faFileCode,\n faSignal,\n faSignal5,\n faSignalPerfect,\n faBus,\n faHeartCircleXmark,\n faHouseChimney,\n faHomeLg,\n faWindowMaximize,\n faFaceFrown,\n faFrown,\n faPrescription,\n faShop,\n faStoreAlt,\n faFloppyDisk,\n faSave,\n faVihara,\n faScaleUnbalanced,\n faBalanceScaleLeft,\n faSortUp,\n faSortAsc,\n faCommentDots,\n faCommenting,\n faPlantWilt,\n faDiamond,\n faFaceGrinSquint,\n faGrinSquint,\n faHandHoldingDollar,\n faHandHoldingUsd,\n faBacterium,\n faHandPointer,\n faDrumSteelpan,\n faHandScissors,\n faHandsPraying,\n faPrayingHands,\n faArrowRotateRight,\n faArrowRightRotate,\n faArrowRotateForward,\n faRedo,\n faWebAwesome,\n faBiohazard,\n faLocationCrosshairs,\n faLocation,\n faMarsDouble,\n faChildDress,\n faUsersBetweenLines,\n faLungsVirus,\n faFaceGrinTears,\n faGrinTears,\n faPhone,\n faCalendarXmark,\n faCalendarTimes,\n faChildReaching,\n faHeadSideVirus,\n faUserGear,\n faUserCog,\n faArrowUp19,\n faSortNumericUp,\n faDoorClosed,\n faShieldVirus,\n faDiceSix,\n faMosquitoNet,\n faBridgeWater,\n faPersonBooth,\n faTextWidth,\n faHatWizard,\n faPenFancy,\n faPersonDigging,\n faDigging,\n faTrash,\n faGaugeSimple,\n faGaugeSimpleMed,\n faTachometerAverage,\n faBookMedical,\n faPoo,\n faQuoteRight,\n faQuoteRightAlt,\n faShirt,\n faTShirt,\n faTshirt,\n faCubes,\n faDivide,\n faTengeSign,\n faTenge,\n faHeadphones,\n faHandsHolding,\n faHandsClapping,\n faRepublican,\n faArrowLeft,\n faPersonCircleXmark,\n faRuler,\n faAlignLeft,\n faDiceD6,\n faRestroom,\n faJ,\n faUsersViewfinder,\n faFileVideo,\n faUpRightFromSquare,\n faExternalLinkAlt,\n faTableCells,\n faTh,\n faFilePdf,\n faBookBible,\n faBible,\n faO,\n faSuitcaseMedical,\n faMedkit,\n faUserSecret,\n faOtter,\n faPersonDress,\n faFemale,\n faCommentDollar,\n faBusinessTime,\n faBriefcaseClock,\n faTableCellsLarge,\n faThLarge,\n faBookTanakh,\n faTanakh,\n faPhoneVolume,\n faVolumeControlPhone,\n faHatCowboySide,\n faClipboardUser,\n faChild,\n faLiraSign,\n faSatellite,\n faPlaneLock,\n faTag,\n faComment,\n faCakeCandles,\n faBirthdayCake,\n faCake,\n faEnvelope,\n faAnglesUp,\n faAngleDoubleUp,\n faPaperclip,\n faArrowRightToCity,\n faRibbon,\n faLungs,\n faArrowUp91,\n faSortNumericUpAlt,\n faLitecoinSign,\n faBorderNone,\n faCircleNodes,\n faParachuteBox,\n faIndent,\n faTruckFieldUn,\n faHourglass,\n faHourglassEmpty,\n faMountain,\n faUserDoctor,\n faUserMd,\n faCircleInfo,\n faInfoCircle,\n faCloudMeatball,\n faCamera,\n faCameraAlt,\n faSquareVirus,\n faMeteor,\n faCarOn,\n faSleigh,\n faArrowDown19,\n faSortNumericAsc,\n faSortNumericDown,\n faHandHoldingDroplet,\n faHandHoldingWater,\n faWater,\n faCalendarCheck,\n faBraille,\n faPrescriptionBottleMedical,\n faPrescriptionBottleAlt,\n faLandmark,\n faTruck,\n faCrosshairs,\n faPersonCane,\n faTent,\n faVestPatches,\n faCheckDouble,\n faArrowDownAZ,\n faSortAlphaAsc,\n faSortAlphaDown,\n faMoneyBillWheat,\n faCookie,\n faArrowRotateLeft,\n faArrowLeftRotate,\n faArrowRotateBack,\n faArrowRotateBackward,\n faUndo,\n faHardDrive,\n faHdd,\n faFaceGrinSquintTears,\n faGrinSquintTears,\n faDumbbell,\n faRectangleList,\n faListAlt,\n faTarpDroplet,\n faHouseMedicalCircleCheck,\n faPersonSkiingNordic,\n faSkiingNordic,\n faCalendarPlus,\n faPlaneArrival,\n faCircleLeft,\n faArrowAltCircleLeft,\n faTrainSubway,\n faSubway,\n faChartGantt,\n faIndianRupeeSign,\n faIndianRupee,\n faInr,\n faCropSimple,\n faCropAlt,\n faMoneyBill1,\n faMoneyBillAlt,\n faLeftLong,\n faLongArrowAltLeft,\n faDna,\n faVirusSlash,\n faMinus,\n faSubtract,\n faChess,\n faArrowLeftLong,\n faLongArrowLeft,\n faPlugCircleCheck,\n faStreetView,\n faFrancSign,\n faVolumeOff,\n faHandsAslInterpreting,\n faAmericanSignLanguageInterpreting,\n faAslInterpreting,\n faHandsAmericanSignLanguageInterpreting,\n faGear,\n faCog,\n faDropletSlash,\n faTintSlash,\n faMosque,\n faMosquito,\n faStarOfDavid,\n faPersonMilitaryRifle,\n faCartShopping,\n faShoppingCart,\n faVials,\n faPlugCirclePlus,\n faPlaceOfWorship,\n faGripVertical,\n faArrowTurnUp,\n faLevelUp,\n faU,\n faSquareRootVariable,\n faSquareRootAlt,\n faClock,\n faClockFour,\n faBackwardStep,\n faStepBackward,\n faPallet,\n faFaucet,\n faBaseballBatBall,\n faS,\n faTimeline,\n faKeyboard,\n faCaretDown,\n faHouseChimneyMedical,\n faClinicMedical,\n faTemperatureThreeQuarters,\n faTemperature3,\n faThermometer3,\n faThermometerThreeQuarters,\n faMobileScreen,\n faMobileAndroidAlt,\n faPlaneUp,\n faPiggyBank,\n faBatteryHalf,\n faBattery3,\n faMountainCity,\n faCoins,\n faKhanda,\n faSliders,\n faSlidersH,\n faFolderTree,\n faNetworkWired,\n faMapPin,\n faHamsa,\n faCentSign,\n faFlask,\n faPersonPregnant,\n faWandSparkles,\n faEllipsisVertical,\n faEllipsisV,\n faTicket,\n faPowerOff,\n faRightLong,\n faLongArrowAltRight,\n faFlagUsa,\n faLaptopFile,\n faTty,\n faTeletype,\n faDiagramNext,\n faPersonRifle,\n faHouseMedicalCircleExclamation,\n faClosedCaptioning,\n faPersonHiking,\n faHiking,\n faVenusDouble,\n faImages,\n faCalculator,\n faPeoplePulling,\n faN,\n faCableCar,\n faTram,\n faCloudRain,\n faBuildingCircleXmark,\n faShip,\n faArrowsDownToLine,\n faDownload,\n faFaceGrin,\n faGrin,\n faDeleteLeft,\n faBackspace,\n faEyeDropper,\n faEyeDropperEmpty,\n faEyedropper,\n faFileCircleCheck,\n faForward,\n faMobile,\n faMobileAndroid,\n faMobilePhone,\n faFaceMeh,\n faMeh,\n faAlignCenter,\n faBookSkull,\n faBookDead,\n faIdCard,\n faDriversLicense,\n faOutdent,\n faDedent,\n faHeartCircleExclamation,\n faHouse,\n faHome,\n faHomeAlt,\n faHomeLgAlt,\n faCalendarWeek,\n faLaptopMedical,\n faB,\n faFileMedical,\n faDiceOne,\n faKiwiBird,\n faArrowRightArrowLeft,\n faExchange,\n faRotateRight,\n faRedoAlt,\n faRotateForward,\n faUtensils,\n faCutlery,\n faArrowUpWideShort,\n faSortAmountUp,\n faMillSign,\n faBowlRice,\n faSkull,\n faTowerBroadcast,\n faBroadcastTower,\n faTruckPickup,\n faUpLong,\n faLongArrowAltUp,\n faStop,\n faCodeMerge,\n faUpload,\n faHurricane,\n faMound,\n faToiletPortable,\n faCompactDisc,\n faFileArrowDown,\n faFileDownload,\n faCaravan,\n faShieldCat,\n faBolt,\n faZap,\n faGlassWater,\n faOilWell,\n faVault,\n faMars,\n faToilet,\n faPlaneCircleXmark,\n faYenSign,\n faCny,\n faJpy,\n faRmb,\n faYen,\n faRubleSign,\n faRouble,\n faRub,\n faRuble,\n faSun,\n faGuitar,\n faFaceLaughWink,\n faLaughWink,\n faHorseHead,\n faBoreHole,\n faIndustry,\n faCircleDown,\n faArrowAltCircleDown,\n faArrowsTurnToDots,\n faFlorinSign,\n faArrowDownShortWide,\n faSortAmountDesc,\n faSortAmountDownAlt,\n faLessThan,\n faAngleDown,\n faCarTunnel,\n faHeadSideCough,\n faGripLines,\n faThumbsDown,\n faUserLock,\n faArrowRightLong,\n faLongArrowRight,\n faAnchorCircleXmark,\n faEllipsis,\n faEllipsisH,\n faChessPawn,\n faKitMedical,\n faFirstAid,\n faPersonThroughWindow,\n faToolbox,\n faHandsHoldingCircle,\n faBug,\n faCreditCard,\n faCreditCardAlt,\n faCar,\n faAutomobile,\n faHandHoldingHand,\n faBookOpenReader,\n faBookReader,\n faMountainSun,\n faArrowsLeftRightToLine,\n faDiceD20,\n faTruckDroplet,\n faFileCircleXmark,\n faTemperatureArrowUp,\n faTemperatureUp,\n faMedal,\n faBed,\n faSquareH,\n faHSquare,\n faPodcast,\n faTemperatureFull,\n faTemperature4,\n faThermometer4,\n faThermometerFull,\n faBell,\n faSuperscript,\n faPlugCircleXmark,\n faStarOfLife,\n faPhoneSlash,\n faPaintRoller,\n faHandshakeAngle,\n faHandsHelping,\n faLocationDot,\n faMapMarkerAlt,\n faFile,\n faGreaterThan,\n faPersonSwimming,\n faSwimmer,\n faArrowDown,\n faDroplet,\n faTint,\n faEraser,\n faEarthAmericas,\n faEarth,\n faEarthAmerica,\n faGlobeAmericas,\n faPersonBurst,\n faDove,\n faBatteryEmpty,\n faBattery0,\n faSocks,\n faInbox,\n faSection,\n faGaugeHigh,\n faTachometerAlt,\n faTachometerAltFast,\n faEnvelopeOpenText,\n faHospital,\n faHospitalAlt,\n faHospitalWide,\n faWineBottle,\n faChessRook,\n faBarsStaggered,\n faReorder,\n faStream,\n faDharmachakra,\n faHotdog,\n faPersonWalkingWithCane,\n faBlind,\n faDrum,\n faIceCream,\n faHeartCircleBolt,\n faFax,\n faParagraph,\n faCheckToSlot,\n faVoteYea,\n faStarHalf,\n faBoxesStacked,\n faBoxes,\n faBoxesAlt,\n faLink,\n faChain,\n faEarListen,\n faAssistiveListeningSystems,\n faTreeCity,\n faPlay,\n faFont,\n faTableCellsRowLock,\n faRupiahSign,\n faMagnifyingGlass,\n faSearch,\n faTableTennisPaddleBall,\n faPingPongPaddleBall,\n faTableTennis,\n faPersonDotsFromLine,\n faDiagnoses,\n faTrashCanArrowUp,\n faTrashRestoreAlt,\n faNairaSign,\n faCartArrowDown,\n faWalkieTalkie,\n faFilePen,\n faFileEdit,\n faReceipt,\n faSquarePen,\n faPenSquare,\n faPencilSquare,\n faSuitcaseRolling,\n faPersonCircleExclamation,\n faChevronDown,\n faBatteryFull,\n faBattery,\n faBattery5,\n faSkullCrossbones,\n faCodeCompare,\n faListUl,\n faListDots,\n faSchoolLock,\n faTowerCell,\n faDownLong,\n faLongArrowAltDown,\n faRankingStar,\n faChessKing,\n faPersonHarassing,\n faBrazilianRealSign,\n faLandmarkDome,\n faLandmarkAlt,\n faArrowUp,\n faTv,\n faTelevision,\n faTvAlt,\n faShrimp,\n faListCheck,\n faTasks,\n faJugDetergent,\n faCircleUser,\n faUserCircle,\n faUserShield,\n faWind,\n faCarBurst,\n faCarCrash,\n faY,\n faPersonSnowboarding,\n faSnowboarding,\n faTruckFast,\n faShippingFast,\n faFish,\n faUserGraduate,\n faCircleHalfStroke,\n faAdjust,\n faClapperboard,\n faCircleRadiation,\n faRadiationAlt,\n faBaseball,\n faBaseballBall,\n faJetFighterUp,\n faDiagramProject,\n faProjectDiagram,\n faCopy,\n faVolumeXmark,\n faVolumeMute,\n faVolumeTimes,\n faHandSparkles,\n faGrip,\n faGripHorizontal,\n faShareFromSquare,\n faShareSquare,\n faChildCombatant,\n faChildRifle,\n faGun,\n faSquarePhone,\n faPhoneSquare,\n faPlus,\n faAdd,\n faExpand,\n faComputer,\n faXmark,\n faClose,\n faMultiply,\n faRemove,\n faTimes,\n faArrowsUpDownLeftRight,\n faArrows,\n faChalkboardUser,\n faChalkboardTeacher,\n faPesoSign,\n faBuildingShield,\n faBaby,\n faUsersLine,\n faQuoteLeft,\n faQuoteLeftAlt,\n faTractor,\n faTrashArrowUp,\n faTrashRestore,\n faArrowDownUpLock,\n faLinesLeaning,\n faRulerCombined,\n faCopyright,\n faEquals,\n faBlender,\n faTeeth,\n faShekelSign,\n faIls,\n faShekel,\n faSheqel,\n faSheqelSign,\n faMap,\n faRocket,\n faPhotoFilm,\n faPhotoVideo,\n faFolderMinus,\n faStore,\n faArrowTrendUp,\n faPlugCircleMinus,\n faSignHanging,\n faSign,\n faBezierCurve,\n faBellSlash,\n faTablet,\n faTabletAndroid,\n faSchoolFlag,\n faFill,\n faAngleUp,\n faDrumstickBite,\n faHollyBerry,\n faChevronLeft,\n faBacteria,\n faHandLizard,\n faNotdef,\n faDisease,\n faBriefcaseMedical,\n faGenderless,\n faChevronRight,\n faRetweet,\n faCarRear,\n faCarAlt,\n faPumpSoap,\n faVideoSlash,\n faBatteryQuarter,\n faBattery2,\n faRadio,\n faBabyCarriage,\n faCarriageBaby,\n faTrafficLight,\n faThermometer,\n faVrCardboard,\n faHandMiddleFinger,\n faPercent,\n faPercentage,\n faTruckMoving,\n faGlassWaterDroplet,\n faDisplay,\n faFaceSmile,\n faSmile,\n faThumbtack,\n faThumbTack,\n faTrophy,\n faPersonPraying,\n faPray,\n faHammer,\n faHandPeace,\n faRotate,\n faSyncAlt,\n faSpinner,\n faRobot,\n faPeace,\n faGears,\n faCogs,\n faWarehouse,\n faArrowUpRightDots,\n faSplotch,\n faFaceGrinHearts,\n faGrinHearts,\n faDiceFour,\n faSimCard,\n faTransgender,\n faTransgenderAlt,\n faMercury,\n faArrowTurnDown,\n faLevelDown,\n faPersonFallingBurst,\n faAward,\n faTicketSimple,\n faTicketAlt,\n faBuilding,\n faAnglesLeft,\n faAngleDoubleLeft,\n faQrcode,\n faClockRotateLeft,\n faHistory,\n faFaceGrinBeamSweat,\n faGrinBeamSweat,\n faFileExport,\n faArrowRightFromFile,\n faShield,\n faShieldBlank,\n faArrowUpShortWide,\n faSortAmountUpAlt,\n faHouseMedical,\n faGolfBallTee,\n faGolfBall,\n faCircleChevronLeft,\n faChevronCircleLeft,\n faHouseChimneyWindow,\n faPenNib,\n faTentArrowTurnLeft,\n faTents,\n faWandMagic,\n faMagic,\n faDog,\n faCarrot,\n faMoon,\n faWineGlassEmpty,\n faWineGlassAlt,\n faCheese,\n faYinYang,\n faMusic,\n faCodeCommit,\n faTemperatureLow,\n faPersonBiking,\n faBiking,\n faBroom,\n faShieldHeart,\n faGopuram,\n faEarthOceania,\n faGlobeOceania,\n faSquareXmark,\n faTimesSquare,\n faXmarkSquare,\n faHashtag,\n faUpRightAndDownLeftFromCenter,\n faExpandAlt,\n faOilCan,\n faT,\n faHippo,\n faChartColumn,\n faInfinity,\n faVialCircleCheck,\n faPersonArrowDownToLine,\n faVoicemail,\n faFan,\n faPersonWalkingLuggage,\n faUpDown,\n faArrowsAltV,\n faCloudMoonRain,\n faCalendar,\n faTrailer,\n faBahai,\n faHaykal,\n faSdCard,\n faDragon,\n faShoePrints,\n faCirclePlus,\n faPlusCircle,\n faFaceGrinTongueWink,\n faGrinTongueWink,\n faHandHolding,\n faPlugCircleExclamation,\n faLinkSlash,\n faChainBroken,\n faChainSlash,\n faUnlink,\n faClone,\n faPersonWalkingArrowLoopLeft,\n faArrowUpZA,\n faSortAlphaUpAlt,\n faFireFlameCurved,\n faFireAlt,\n faTornado,\n faFileCirclePlus,\n faBookQuran,\n faQuran,\n faAnchor,\n faBorderAll,\n faFaceAngry,\n faAngry,\n faCookieBite,\n faArrowTrendDown,\n faRss,\n faFeed,\n faDrawPolygon,\n faScaleBalanced,\n faBalanceScale,\n faGaugeSimpleHigh,\n faTachometer,\n faTachometerFast,\n faShower,\n faDesktop,\n faDesktopAlt,\n faM,\n faTableList,\n faThList,\n faCommentSms,\n faSms,\n faBook,\n faUserPlus,\n faCheck,\n faBatteryThreeQuarters,\n faBattery4,\n faHouseCircleCheck,\n faAngleLeft,\n faDiagramSuccessor,\n faTruckArrowRight,\n faArrowsSplitUpAndLeft,\n faHandFist,\n faFistRaised,\n faCloudMoon,\n faBriefcase,\n faPersonFalling,\n faImagePortrait,\n faPortrait,\n faUserTag,\n faRug,\n faEarthEurope,\n faGlobeEurope,\n faCartFlatbedSuitcase,\n faLuggageCart,\n faRectangleXmark,\n faRectangleTimes,\n faTimesRectangle,\n faWindowClose,\n faBahtSign,\n faBookOpen,\n faBookJournalWhills,\n faJournalWhills,\n faHandcuffs,\n faTriangleExclamation,\n faExclamationTriangle,\n faWarning,\n faDatabase,\n faShare,\n faMailForward,\n faBottleDroplet,\n faMaskFace,\n faHillRockslide,\n faRightLeft,\n faExchangeAlt,\n faPaperPlane,\n faRoadCircleExclamation,\n faDungeon,\n faAlignRight,\n faMoneyBill1Wave,\n faMoneyBillWaveAlt,\n faLifeRing,\n faHands,\n faSignLanguage,\n faSigning,\n faCalendarDay,\n faWaterLadder,\n faLadderWater,\n faSwimmingPool,\n faArrowsUpDown,\n faArrowsV,\n faFaceGrimace,\n faGrimace,\n faWheelchairMove,\n faWheelchairAlt,\n faTurnDown,\n faLevelDownAlt,\n faPersonWalkingArrowRight,\n faSquareEnvelope,\n faEnvelopeSquare,\n faDice,\n faBowlingBall,\n faBrain,\n faBandage,\n faBandAid,\n faCalendarMinus,\n faCircleXmark,\n faTimesCircle,\n faXmarkCircle,\n faGifts,\n faHotel,\n faEarthAsia,\n faGlobeAsia,\n faIdCardClip,\n faIdCardAlt,\n faMagnifyingGlassPlus,\n faSearchPlus,\n faThumbsUp,\n faUserClock,\n faHandDots,\n faAllergies,\n faFileInvoice,\n faWindowMinimize,\n faMugSaucer,\n faCoffee,\n faBrush,\n faMask,\n faMagnifyingGlassMinus,\n faSearchMinus,\n faRulerVertical,\n faUserLarge,\n faUserAlt,\n faTrainTram,\n faUserNurse,\n faSyringe,\n faCloudSun,\n faStopwatch20,\n faSquareFull,\n faMagnet,\n faJar,\n faNoteSticky,\n faStickyNote,\n faBugSlash,\n faArrowUpFromWaterPump,\n faBone,\n faTableCellsRowUnlock,\n faUserInjured,\n faFaceSadTear,\n faSadTear,\n faPlane,\n faTentArrowsDown,\n faExclamation,\n faArrowsSpin,\n faPrint,\n faTurkishLiraSign,\n faTry,\n faTurkishLira,\n faDollarSign,\n faDollar,\n faUsd,\n faX,\n faMagnifyingGlassDollar,\n faSearchDollar,\n faUsersGear,\n faUsersCog,\n faPersonMilitaryPointing,\n faBuildingColumns,\n faBank,\n faInstitution,\n faMuseum,\n faUniversity,\n faUmbrella,\n faTrowel,\n faD,\n faStapler,\n faMasksTheater,\n faTheaterMasks,\n faKipSign,\n faHandPointLeft,\n faHandshakeSimple,\n faHandshakeAlt,\n faJetFighter,\n faFighterJet,\n faSquareShareNodes,\n faShareAltSquare,\n faBarcode,\n faPlusMinus,\n faVideo,\n faVideoCamera,\n faGraduationCap,\n faMortarBoard,\n faHandHoldingMedical,\n faPersonCircleCheck,\n faTurnUp,\n faLevelUpAlt\n};\n\nexport { icons as fas, prefix, fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, faFillDrip, faArrowsToCircle, faCircleChevronRight, faChevronCircleRight, faAt, faTrashCan, faTrashAlt, faTextHeight, faUserXmark, faUserTimes, faStethoscope, faMessage, faCommentAlt, faInfo, faDownLeftAndUpRightToCenter, faCompressAlt, faExplosion, faFileLines, faFileAlt, faFileText, faWaveSquare, faRing, faBuildingUn, faDiceThree, faCalendarDays, faCalendarAlt, faAnchorCircleCheck, faBuildingCircleArrowRight, faVolleyball, faVolleyballBall, faArrowsUpToLine, faSortDown, faSortDesc, faCircleMinus, faMinusCircle, faDoorOpen, faRightFromBracket, faSignOutAlt, faAtom, faSoap, faIcons, faHeartMusicCameraBolt, faMicrophoneLinesSlash, faMicrophoneAltSlash, faBridgeCircleCheck, faPumpMedical, faFingerprint, faHandPointRight, faMagnifyingGlassLocation, faSearchLocation, faForwardStep, faStepForward, faFaceSmileBeam, faSmileBeam, faFlagCheckered, faFootball, faFootballBall, faSchoolCircleExclamation, faCrop, faAnglesDown, faAngleDoubleDown, faUsersRectangle, faPeopleRoof, faPeopleLine, faBeerMugEmpty, faBeer, faDiagramPredecessor, faArrowUpLong, faLongArrowUp, faFireFlameSimple, faBurn, faPerson, faMale, faLaptop, faFileCsv, faMenorah, faTruckPlane, faRecordVinyl, faFaceGrinStars, faGrinStars, faBong, faSpaghettiMonsterFlying, faPastafarianism, faArrowDownUpAcrossLine, faSpoon, faUtensilSpoon, faJarWheat, faEnvelopesBulk, faMailBulk, faFileCircleExclamation, faCircleH, faHospitalSymbol, faPager, faAddressBook, faContactBook, faStrikethrough, faK, faLandmarkFlag, faPencil, faPencilAlt, faBackward, faCaretRight, faComments, faPaste, faFileClipboard, faCodePullRequest, faClipboardList, faTruckRampBox, faTruckLoading, faUserCheck, faVialVirus, faSheetPlastic, faBlog, faUserNinja, faPersonArrowUpFromLine, faScrollTorah, faTorah, faBroomBall, faQuidditch, faQuidditchBroomBall, faToggleOff, faBoxArchive, faArchive, faPersonDrowning, faArrowDown91, faSortNumericDesc, faSortNumericDownAlt, faFaceGrinTongueSquint, faGrinTongueSquint, faSprayCan, faTruckMonster, faW, faEarthAfrica, faGlobeAfrica, faRainbow, faCircleNotch, faTabletScreenButton, faTabletAlt, faPaw, faCloud, faTrowelBricks, faFaceFlushed, faFlushed, faHospitalUser, faTentArrowLeftRight, faGavel, faLegal, faBinoculars, faMicrophoneSlash, faBoxTissue, faMotorcycle, faBellConcierge, faConciergeBell, faPenRuler, faPencilRuler, faPeopleArrows, faPeopleArrowsLeftRight, faMarsAndVenusBurst, faSquareCaretRight, faCaretSquareRight, faScissors, faCut, faSunPlantWilt, faToiletsPortable, faHockeyPuck, faTable, faMagnifyingGlassArrowRight, faTachographDigital, faDigitalTachograph, faUsersSlash, faClover, faReply, faMailReply, faStarAndCrescent, faHouseFire, faSquareMinus, faMinusSquare, faHelicopter, faCompass, faSquareCaretDown, faCaretSquareDown, faFileCircleQuestion, faLaptopCode, faSwatchbook, faPrescriptionBottle, faBars, faNavicon, faPeopleGroup, faHourglassEnd, faHourglass3, faHeartCrack, faHeartBroken, faSquareUpRight, faExternalLinkSquareAlt, faFaceKissBeam, faKissBeam, faFilm, faRulerHorizontal, faPeopleRobbery, faLightbulb, faCaretLeft, faCircleExclamation, faExclamationCircle, faSchoolCircleXmark, faArrowRightFromBracket, faSignOut, faCircleChevronDown, faChevronCircleDown, faUnlockKeyhole, faUnlockAlt, faCloudShowersHeavy, faHeadphonesSimple, faHeadphonesAlt, faSitemap, faCircleDollarToSlot, faDonate, faMemory, faRoadSpikes, faFireBurner, faFlag, faHanukiah, faFeather, faVolumeLow, faVolumeDown, faCommentSlash, faCloudSunRain, faCompress, faWheatAwn, faWheatAlt, faAnkh, faHandsHoldingChild, faAsterisk, faSquareCheck, faCheckSquare, faPesetaSign, faHeading, faHeader, faGhost, faList, faListSquares, faSquarePhoneFlip, faPhoneSquareAlt, faCartPlus, faGamepad, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faEgg, faHouseMedicalCircleXmark, faCampground, faFolderPlus, faFutbol, faFutbolBall, faSoccerBall, faPaintbrush, faPaintBrush, faLock, faGasPump, faHotTubPerson, faHotTub, faMapLocation, faMapMarked, faHouseFloodWater, faTree, faBridgeLock, faSackDollar, faPenToSquare, faEdit, faCarSide, faShareNodes, faShareAlt, faHeartCircleMinus, faHourglassHalf, faHourglass2, faMicroscope, faSink, faBagShopping, faShoppingBag, faArrowDownZA, faSortAlphaDesc, faSortAlphaDownAlt, faMitten, faPersonRays, faUsers, faEyeSlash, faFlaskVial, faHand, faHandPaper, faOm, faWorm, faHouseCircleXmark, faPlug, faChevronUp, faHandSpock, faStopwatch, faFaceKiss, faKiss, faBridgeCircleXmark, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faEarDeaf, faDeaf, faDeafness, faHardOfHearing, faRoadCircleCheck, faDiceFive, faSquareRss, faRssSquare, faLandMineOn, faICursor, faStamp, faStairs, faI, faHryvniaSign, faHryvnia, faPills, faFaceGrinWide, faGrinAlt, faTooth, faV, faBangladeshiTakaSign, faBicycle, faStaffSnake, faRodAsclepius, faRodSnake, faStaffAesculapius, faHeadSideCoughSlash, faTruckMedical, faAmbulance, faWheatAwnCircleExclamation, faSnowman, faMortarPestle, faRoadBarrier, faSchool, faIgloo, faJoint, faAngleRight, faHorse, faQ, faG, faNotesMedical, faTemperatureHalf, faTemperature2, faThermometer2, faThermometerHalf, faDongSign, faCapsules, faPooStorm, faPooBolt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faMoneyBill, faBookmark, faAlignJustify, faUmbrellaBeach, faHelmetUn, faBullseye, faBacon, faHandPointDown, faArrowUpFromBracket, faFolder, faFolderBlank, faFileWaveform, faFileMedicalAlt, faRadiation, faChartSimple, faMarsStroke, faVial, faGauge, faDashboard, faGaugeMed, faTachometerAltAverage, faWandMagicSparkles, faMagicWandSparkles, faE, faPenClip, faPenAlt, faBridgeCircleExclamation, faUser, faSchoolCircleCheck, faDumpster, faVanShuttle, faShuttleVan, faBuildingUser, faSquareCaretLeft, faCaretSquareLeft, faHighlighter, faKey, faBullhorn, faGlobe, faSynagogue, faPersonHalfDress, faRoadBridge, faLocationArrow, faC, faTabletButton, faBuildingLock, faPizzaSlice, faMoneyBillWave, faChartArea, faAreaChart, faHouseFlag, faPersonCircleMinus, faBan, faCancel, faCameraRotate, faSprayCanSparkles, faAirFreshener, faStar, faRepeat, faCross, faBox, faVenusMars, faArrowPointer, faMousePointer, faMaximize, faExpandArrowsAlt, faChargingStation, faShapes, faTriangleCircleSquare, faShuffle, faRandom, faPersonRunning, faRunning, faMobileRetro, faGripLinesVertical, faSpider, faHandsBound, faFileInvoiceDollar, faPlaneCircleExclamation, faXRay, faSpellCheck, faSlash, faComputerMouse, faMouse, faArrowRightToBracket, faSignIn, faShopSlash, faStoreAltSlash, faServer, faVirusCovidSlash, faShopLock, faHourglassStart, faHourglass1, faBlenderPhone, faBuildingWheat, faPersonBreastfeeding, faRightToBracket, faSignInAlt, faVenus, faPassport, faThumbtackSlash, faThumbTackSlash, faHeartPulse, faHeartbeat, faPeopleCarryBox, faPeopleCarry, faTemperatureHigh, faMicrochip, faCrown, faWeightHanging, faXmarksLines, faFilePrescription, faWeightScale, faWeight, faUserGroup, faUserFriends, faArrowUpAZ, faSortAlphaUp, faChessKnight, faFaceLaughSquint, faLaughSquint, faWheelchair, faCircleArrowUp, faArrowCircleUp, faToggleOn, faPersonWalking, faWalking, faL, faFire, faBedPulse, faProcedures, faShuttleSpace, faSpaceShuttle, faFaceLaugh, faLaugh, faFolderOpen, faHeartCirclePlus, faCodeFork, faCity, faMicrophoneLines, faMicrophoneAlt, faPepperHot, faUnlock, faColonSign, faHeadset, faStoreSlash, faRoadCircleXmark, faUserMinus, faMarsStrokeUp, faMarsStrokeV, faChampagneGlasses, faGlassCheers, faClipboard, faHouseCircleExclamation, faFileArrowUp, faFileUpload, faWifi, faWifi3, faWifiStrong, faBath, faBathtub, faUnderline, faUserPen, faUserEdit, faSignature, faStroopwafel, faBold, faAnchorLock, faBuildingNgo, faManatSign, faNotEqual, faBorderTopLeft, faBorderStyle, faMapLocationDot, faMapMarkedAlt, faJedi, faSquarePollVertical, faPoll, faMugHot, faCarBattery, faBatteryCar, faGift, faDiceTwo, faChessQueen, faGlasses, faChessBoard, faBuildingCircleCheck, faPersonChalkboard, faMarsStrokeRight, faMarsStrokeH, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faCloudShowersWater, faChartBar, faBarChart, faHandsBubbles, faHandsWash, faLessThanEqual, faTrain, faEyeLowVision, faLowVision, faCrow, faSailboat, faWindowRestore, faSquarePlus, faPlusSquare, faToriiGate, faFrog, faBucket, faImage, faMicrophone, faCow, faCaretUp, faScrewdriver, faFolderClosed, faHouseTsunami, faSquareNfi, faArrowUpFromGroundWater, faMartiniGlass, faGlassMartiniAlt, faRotateLeft, faRotateBack, faRotateBackward, faUndoAlt, faTableColumns, faColumns, faLemon, faHeadSideMask, faHandshake, faGem, faDolly, faDollyBox, faSmoking, faMinimize, faCompressArrowsAlt, faMonument, faSnowplow, faAnglesRight, faAngleDoubleRight, faCannabis, faCirclePlay, faPlayCircle, faTablets, faEthernet, faEuroSign, faEur, faEuro, faChair, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faCompassDrafting, faDraftingCompass, faPlateWheat, faIcicles, faPersonShelter, faNeuter, faIdBadge, faMarker, faFaceLaughBeam, faLaughBeam, faHelicopterSymbol, faUniversalAccess, faCircleChevronUp, faChevronCircleUp, faLariSign, faVolcano, faPersonWalkingDashedLineArrowRight, faSterlingSign, faGbp, faPoundSign, faViruses, faSquarePersonConfined, faUserTie, faArrowDownLong, faLongArrowDown, faTentArrowDownToLine, faCertificate, faReplyAll, faMailReplyAll, faSuitcase, faPersonSkating, faSkating, faFilterCircleDollar, faFunnelDollar, faCameraRetro, faCircleArrowDown, faArrowCircleDown, faFileImport, faArrowRightToFile, faSquareArrowUpRight, faExternalLinkSquare, faBoxOpen, faScroll, faSpa, faLocationPinLock, faPause, faHillAvalanche, faTemperatureEmpty, faTemperature0, faThermometer0, faThermometerEmpty, faBomb, faRegistered, faAddressCard, faContactCard, faVcard, faScaleUnbalancedFlip, faBalanceScaleRight, faSubscript, faDiamondTurnRight, faDirections, faBurst, faHouseLaptop, faLaptopHouse, faFaceTired, faTired, faMoneyBills, faSmog, faCrutch, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faCloudArrowUp, faCloudUpload, faCloudUploadAlt, faPalette, faArrowsTurnRight, faVest, faFerry, faArrowsDownToPeople, faSeedling, faSprout, faLeftRight, faArrowsAltH, faBoxesPacking, faCircleArrowLeft, faArrowCircleLeft, faGroupArrowsRotate, faBowlFood, faCandyCane, faArrowDownWideShort, faSortAmountAsc, faSortAmountDown, faCloudBolt, faThunderstorm, faTextSlash, faRemoveFormat, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faArrowsLeftRight, faArrowsH, faHouseLock, faCloudArrowDown, faCloudDownload, faCloudDownloadAlt, faChildren, faChalkboard, faBlackboard, faUserLargeSlash, faUserAltSlash, faEnvelopeOpen, faHandshakeSimpleSlash, faHandshakeAltSlash, faMattressPillow, faGuaraniSign, faArrowsRotate, faRefresh, faSync, faFireExtinguisher, faCruzeiroSign, faGreaterThanEqual, faShieldHalved, faShieldAlt, faBookAtlas, faAtlas, faVirus, faEnvelopeCircleCheck, faLayerGroup, faArrowsToDot, faArchway, faHeartCircleCheck, faHouseChimneyCrack, faHouseDamage, faFileZipper, faFileArchive, faSquare, faMartiniGlassEmpty, faGlassMartini, faCouch, faCediSign, faItalic, faTableCellsColumnLock, faChurch, faCommentsDollar, faDemocrat, faZ, faPersonSkiing, faSkiing, faRoadLock, faA, faTemperatureArrowDown, faTemperatureDown, faFeatherPointed, faFeatherAlt, faP, faSnowflake, faNewspaper, faRectangleAd, faAd, faCircleArrowRight, faArrowCircleRight, faFilterCircleXmark, faLocust, faSort, faUnsorted, faListOl, faList12, faListNumeric, faPersonDressBurst, faMoneyCheckDollar, faMoneyCheckAlt, faVectorSquare, faBreadSlice, faLanguage, faFaceKissWinkHeart, faKissWinkHeart, faFilter, faQuestion, faFileSignature, faUpDownLeftRight, faArrowsAlt, faHouseChimneyUser, faHandHoldingHeart, faPuzzlePiece, faMoneyCheck, faStarHalfStroke, faStarHalfAlt, faCode, faWhiskeyGlass, faGlassWhiskey, faBuildingCircleExclamation, faMagnifyingGlassChart, faArrowUpRightFromSquare, faExternalLink, faCubesStacked, faWonSign, faKrw, faWon, faVirusCovid, faAustralSign, faF, faLeaf, faRoad, faTaxi, faCab, faPersonCirclePlus, faChartPie, faPieChart, faBoltLightning, faSackXmark, faFileExcel, faFileContract, faFishFins, faBuildingFlag, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faPoop, faLocationPin, faMapMarker, faKaaba, faToiletPaper, faHelmetSafety, faHardHat, faHatHard, faEject, faCircleRight, faArrowAltCircleRight, faPlaneCircleCheck, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faChartLine, faLineChart, faMaskVentilator, faArrowRight, faSignsPost, faMapSigns, faCashRegister, faPersonCircleQuestion, faH, faTarp, faScrewdriverWrench, faTools, faArrowsToEye, faPlugCircleBolt, faHeart, faMarsAndVenus, faHouseUser, faHomeUser, faDumpsterFire, faHouseCrack, faMartiniGlassCitrus, faCocktail, faFaceSurprise, faSurprise, faBottleWater, faCirclePause, faPauseCircle, faToiletPaperSlash, faAppleWhole, faAppleAlt, faKitchenSet, faR, faTemperatureQuarter, faTemperature1, faThermometer1, faThermometerQuarter, faCube, faBitcoinSign, faShieldDog, faSolarPanel, faLockOpen, faElevator, faMoneyBillTransfer, faMoneyBillTrendUp, faHouseFloodWaterCircleArrowRight, faSquarePollHorizontal, faPollH, faCircle, faBackwardFast, faFastBackward, faRecycle, faUserAstronaut, faPlaneSlash, faTrademark, faBasketball, faBasketballBall, faSatelliteDish, faCircleUp, faArrowAltCircleUp, faMobileScreenButton, faMobileAlt, faVolumeHigh, faVolumeUp, faUsersRays, faWallet, faClipboardCheck, faFileAudio, faBurger, faHamburger, faWrench, faBugs, faRupeeSign, faRupee, faFileImage, faCircleQuestion, faQuestionCircle, faPlaneDeparture, faHandshakeSlash, faBookBookmark, faCodeBranch, faHatCowboy, faBridge, faPhoneFlip, faPhoneAlt, faTruckFront, faCat, faAnchorCircleExclamation, faTruckField, faRoute, faClipboardQuestion, faPanorama, faCommentMedical, faTeethOpen, faFileCircleMinus, faTags, faWineGlass, faForwardFast, faFastForward, faFaceMehBlank, faMehBlank, faSquareParking, faParking, faHouseSignal, faBarsProgress, faTasksAlt, faFaucetDrip, faCartFlatbed, faDollyFlatbed, faBanSmoking, faSmokingBan, faTerminal, faMobileButton, faHouseMedicalFlag, faBasketShopping, faShoppingBasket, faTape, faBusSimple, faBusAlt, faEye, faFaceSadCry, faSadCry, faAudioDescription, faPersonMilitaryToPerson, faFileShield, faUserSlash, faPen, faTowerObservation, faFileCode, faSignal, faSignal5, faSignalPerfect, faBus, faHeartCircleXmark, faHouseChimney, faHomeLg, faWindowMaximize, faFaceFrown, faFrown, faPrescription, faShop, faStoreAlt, faFloppyDisk, faSave, faVihara, faScaleUnbalanced, faBalanceScaleLeft, faSortUp, faSortAsc, faCommentDots, faCommenting, faPlantWilt, faDiamond, faFaceGrinSquint, faGrinSquint, faHandHoldingDollar, faHandHoldingUsd, faBacterium, faHandPointer, faDrumSteelpan, faHandScissors, faHandsPraying, faPrayingHands, faArrowRotateRight, faArrowRightRotate, faArrowRotateForward, faRedo, faWebAwesome, faBiohazard, faLocationCrosshairs, faLocation, faMarsDouble, faChildDress, faUsersBetweenLines, faLungsVirus, faFaceGrinTears, faGrinTears, faPhone, faCalendarXmark, faCalendarTimes, faChildReaching, faHeadSideVirus, faUserGear, faUserCog, faArrowUp19, faSortNumericUp, faDoorClosed, faShieldVirus, faDiceSix, faMosquitoNet, faBridgeWater, faPersonBooth, faTextWidth, faHatWizard, faPenFancy, faPersonDigging, faDigging, faTrash, faGaugeSimple, faGaugeSimpleMed, faTachometerAverage, faBookMedical, faPoo, faQuoteRight, faQuoteRightAlt, faShirt, faTShirt, faTshirt, faCubes, faDivide, faTengeSign, faTenge, faHeadphones, faHandsHolding, faHandsClapping, faRepublican, faArrowLeft, faPersonCircleXmark, faRuler, faAlignLeft, faDiceD6, faRestroom, faJ, faUsersViewfinder, faFileVideo, faUpRightFromSquare, faExternalLinkAlt, faTableCells, faTh, faFilePdf, faBookBible, faBible, faO, faSuitcaseMedical, faMedkit, faUserSecret, faOtter, faPersonDress, faFemale, faCommentDollar, faBusinessTime, faBriefcaseClock, faTableCellsLarge, faThLarge, faBookTanakh, faTanakh, faPhoneVolume, faVolumeControlPhone, faHatCowboySide, faClipboardUser, faChild, faLiraSign, faSatellite, faPlaneLock, faTag, faComment, faCakeCandles, faBirthdayCake, faCake, faEnvelope, faAnglesUp, faAngleDoubleUp, faPaperclip, faArrowRightToCity, faRibbon, faLungs, faArrowUp91, faSortNumericUpAlt, faLitecoinSign, faBorderNone, faCircleNodes, faParachuteBox, faIndent, faTruckFieldUn, faHourglass, faHourglassEmpty, faMountain, faUserDoctor, faUserMd, faCircleInfo, faInfoCircle, faCloudMeatball, faCamera, faCameraAlt, faSquareVirus, faMeteor, faCarOn, faSleigh, faArrowDown19, faSortNumericAsc, faSortNumericDown, faHandHoldingDroplet, faHandHoldingWater, faWater, faCalendarCheck, faBraille, faPrescriptionBottleMedical, faPrescriptionBottleAlt, faLandmark, faTruck, faCrosshairs, faPersonCane, faTent, faVestPatches, faCheckDouble, faArrowDownAZ, faSortAlphaAsc, faSortAlphaDown, faMoneyBillWheat, faCookie, faArrowRotateLeft, faArrowLeftRotate, faArrowRotateBack, faArrowRotateBackward, faUndo, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faDumbbell, faRectangleList, faListAlt, faTarpDroplet, faHouseMedicalCircleCheck, faPersonSkiingNordic, faSkiingNordic, faCalendarPlus, faPlaneArrival, faCircleLeft, faArrowAltCircleLeft, faTrainSubway, faSubway, faChartGantt, faIndianRupeeSign, faIndianRupee, faInr, faCropSimple, faCropAlt, faMoneyBill1, faMoneyBillAlt, faLeftLong, faLongArrowAltLeft, faDna, faVirusSlash, faMinus, faSubtract, faChess, faArrowLeftLong, faLongArrowLeft, faPlugCircleCheck, faStreetView, faFrancSign, faVolumeOff, faHandsAslInterpreting, faAmericanSignLanguageInterpreting, faAslInterpreting, faHandsAmericanSignLanguageInterpreting, faGear, faCog, faDropletSlash, faTintSlash, faMosque, faMosquito, faStarOfDavid, faPersonMilitaryRifle, faCartShopping, faShoppingCart, faVials, faPlugCirclePlus, faPlaceOfWorship, faGripVertical, faArrowTurnUp, faLevelUp, faU, faSquareRootVariable, faSquareRootAlt, faClock, faClockFour, faBackwardStep, faStepBackward, faPallet, faFaucet, faBaseballBatBall, faS, faTimeline, faKeyboard, faCaretDown, faHouseChimneyMedical, faClinicMedical, faTemperatureThreeQuarters, faTemperature3, faThermometer3, faThermometerThreeQuarters, faMobileScreen, faMobileAndroidAlt, faPlaneUp, faPiggyBank, faBatteryHalf, faBattery3, faMountainCity, faCoins, faKhanda, faSliders, faSlidersH, faFolderTree, faNetworkWired, faMapPin, faHamsa, faCentSign, faFlask, faPersonPregnant, faWandSparkles, faEllipsisVertical, faEllipsisV, faTicket, faPowerOff, faRightLong, faLongArrowAltRight, faFlagUsa, faLaptopFile, faTty, faTeletype, faDiagramNext, faPersonRifle, faHouseMedicalCircleExclamation, faClosedCaptioning, faPersonHiking, faHiking, faVenusDouble, faImages, faCalculator, faPeoplePulling, faN, faCableCar, faTram, faCloudRain, faBuildingCircleXmark, faShip, faArrowsDownToLine, faDownload, faFaceGrin, faGrin, faDeleteLeft, faBackspace, faEyeDropper, faEyeDropperEmpty, faEyedropper, faFileCircleCheck, faForward, faMobile, faMobileAndroid, faMobilePhone, faFaceMeh, faMeh, faAlignCenter, faBookSkull, faBookDead, faIdCard, faDriversLicense, faOutdent, faDedent, faHeartCircleExclamation, faHouse, faHome, faHomeAlt, faHomeLgAlt, faCalendarWeek, faLaptopMedical, faB, faFileMedical, faDiceOne, faKiwiBird, faArrowRightArrowLeft, faExchange, faRotateRight, faRedoAlt, faRotateForward, faUtensils, faCutlery, faArrowUpWideShort, faSortAmountUp, faMillSign, faBowlRice, faSkull, faTowerBroadcast, faBroadcastTower, faTruckPickup, faUpLong, faLongArrowAltUp, faStop, faCodeMerge, faUpload, faHurricane, faMound, faToiletPortable, faCompactDisc, faFileArrowDown, faFileDownload, faCaravan, faShieldCat, faBolt, faZap, faGlassWater, faOilWell, faVault, faMars, faToilet, faPlaneCircleXmark, faYenSign, faCny, faJpy, faRmb, faYen, faRubleSign, faRouble, faRub, faRuble, faSun, faGuitar, faFaceLaughWink, faLaughWink, faHorseHead, faBoreHole, faIndustry, faCircleDown, faArrowAltCircleDown, faArrowsTurnToDots, faFlorinSign, faArrowDownShortWide, faSortAmountDesc, faSortAmountDownAlt, faLessThan, faAngleDown, faCarTunnel, faHeadSideCough, faGripLines, faThumbsDown, faUserLock, faArrowRightLong, faLongArrowRight, faAnchorCircleXmark, faEllipsis, faEllipsisH, faChessPawn, faKitMedical, faFirstAid, faPersonThroughWindow, faToolbox, faHandsHoldingCircle, faBug, faCreditCard, faCreditCardAlt, faCar, faAutomobile, faHandHoldingHand, faBookOpenReader, faBookReader, faMountainSun, faArrowsLeftRightToLine, faDiceD20, faTruckDroplet, faFileCircleXmark, faTemperatureArrowUp, faTemperatureUp, faMedal, faBed, faSquareH, faHSquare, faPodcast, faTemperatureFull, faTemperature4, faThermometer4, faThermometerFull, faBell, faSuperscript, faPlugCircleXmark, faStarOfLife, faPhoneSlash, faPaintRoller, faHandshakeAngle, faHandsHelping, faLocationDot, faMapMarkerAlt, faFile, faGreaterThan, faPersonSwimming, faSwimmer, faArrowDown, faDroplet, faTint, faEraser, faEarthAmericas, faEarth, faEarthAmerica, faGlobeAmericas, faPersonBurst, faDove, faBatteryEmpty, faBattery0, faSocks, faInbox, faSection, faGaugeHigh, faTachometerAlt, faTachometerAltFast, faEnvelopeOpenText, faHospital, faHospitalAlt, faHospitalWide, faWineBottle, faChessRook, faBarsStaggered, faReorder, faStream, faDharmachakra, faHotdog, faPersonWalkingWithCane, faBlind, faDrum, faIceCream, faHeartCircleBolt, faFax, faParagraph, faCheckToSlot, faVoteYea, faStarHalf, faBoxesStacked, faBoxes, faBoxesAlt, faLink, faChain, faEarListen, faAssistiveListeningSystems, faTreeCity, faPlay, faFont, faTableCellsRowLock, faRupiahSign, faMagnifyingGlass, faSearch, faTableTennisPaddleBall, faPingPongPaddleBall, faTableTennis, faPersonDotsFromLine, faDiagnoses, faTrashCanArrowUp, faTrashRestoreAlt, faNairaSign, faCartArrowDown, faWalkieTalkie, faFilePen, faFileEdit, faReceipt, faSquarePen, faPenSquare, faPencilSquare, faSuitcaseRolling, faPersonCircleExclamation, faChevronDown, faBatteryFull, faBattery, faBattery5, faSkullCrossbones, faCodeCompare, faListUl, faListDots, faSchoolLock, faTowerCell, faDownLong, faLongArrowAltDown, faRankingStar, faChessKing, faPersonHarassing, faBrazilianRealSign, faLandmarkDome, faLandmarkAlt, faArrowUp, faTv, faTelevision, faTvAlt, faShrimp, faListCheck, faTasks, faJugDetergent, faCircleUser, faUserCircle, faUserShield, faWind, faCarBurst, faCarCrash, faY, faPersonSnowboarding, faSnowboarding, faTruckFast, faShippingFast, faFish, faUserGraduate, faCircleHalfStroke, faAdjust, faClapperboard, faCircleRadiation, faRadiationAlt, faBaseball, faBaseballBall, faJetFighterUp, faDiagramProject, faProjectDiagram, faCopy, faVolumeXmark, faVolumeMute, faVolumeTimes, faHandSparkles, faGrip, faGripHorizontal, faShareFromSquare, faShareSquare, faChildCombatant, faChildRifle, faGun, faSquarePhone, faPhoneSquare, faPlus, faAdd, faExpand, faComputer, faXmark, faClose, faMultiply, faRemove, faTimes, faArrowsUpDownLeftRight, faArrows, faChalkboardUser, faChalkboardTeacher, faPesoSign, faBuildingShield, faBaby, faUsersLine, faQuoteLeft, faQuoteLeftAlt, faTractor, faTrashArrowUp, faTrashRestore, faArrowDownUpLock, faLinesLeaning, faRulerCombined, faCopyright, faEquals, faBlender, faTeeth, faShekelSign, faIls, faShekel, faSheqel, faSheqelSign, faMap, faRocket, faPhotoFilm, faPhotoVideo, faFolderMinus, faStore, faArrowTrendUp, faPlugCircleMinus, faSignHanging, faSign, faBezierCurve, faBellSlash, faTablet, faTabletAndroid, faSchoolFlag, faFill, faAngleUp, faDrumstickBite, faHollyBerry, faChevronLeft, faBacteria, faHandLizard, faNotdef, faDisease, faBriefcaseMedical, faGenderless, faChevronRight, faRetweet, faCarRear, faCarAlt, faPumpSoap, faVideoSlash, faBatteryQuarter, faBattery2, faRadio, faBabyCarriage, faCarriageBaby, faTrafficLight, faThermometer, faVrCardboard, faHandMiddleFinger, faPercent, faPercentage, faTruckMoving, faGlassWaterDroplet, faDisplay, faFaceSmile, faSmile, faThumbtack, faThumbTack, faTrophy, faPersonPraying, faPray, faHammer, faHandPeace, faRotate, faSyncAlt, faSpinner, faRobot, faPeace, faGears, faCogs, faWarehouse, faArrowUpRightDots, faSplotch, faFaceGrinHearts, faGrinHearts, faDiceFour, faSimCard, faTransgender, faTransgenderAlt, faMercury, faArrowTurnDown, faLevelDown, faPersonFallingBurst, faAward, faTicketSimple, faTicketAlt, faBuilding, faAnglesLeft, faAngleDoubleLeft, faQrcode, faClockRotateLeft, faHistory, faFaceGrinBeamSweat, faGrinBeamSweat, faFileExport, faArrowRightFromFile, faShield, faShieldBlank, faArrowUpShortWide, faSortAmountUpAlt, faHouseMedical, faGolfBallTee, faGolfBall, faCircleChevronLeft, faChevronCircleLeft, faHouseChimneyWindow, faPenNib, faTentArrowTurnLeft, faTents, faWandMagic, faMagic, faDog, faCarrot, faMoon, faWineGlassEmpty, faWineGlassAlt, faCheese, faYinYang, faMusic, faCodeCommit, faTemperatureLow, faPersonBiking, faBiking, faBroom, faShieldHeart, faGopuram, faEarthOceania, faGlobeOceania, faSquareXmark, faTimesSquare, faXmarkSquare, faHashtag, faUpRightAndDownLeftFromCenter, faExpandAlt, faOilCan, faT, faHippo, faChartColumn, faInfinity, faVialCircleCheck, faPersonArrowDownToLine, faVoicemail, faFan, faPersonWalkingLuggage, faUpDown, faArrowsAltV, faCloudMoonRain, faCalendar, faTrailer, faBahai, faHaykal, faSdCard, faDragon, faShoePrints, faCirclePlus, faPlusCircle, faFaceGrinTongueWink, faGrinTongueWink, faHandHolding, faPlugCircleExclamation, faLinkSlash, faChainBroken, faChainSlash, faUnlink, faClone, faPersonWalkingArrowLoopLeft, faArrowUpZA, faSortAlphaUpAlt, faFireFlameCurved, faFireAlt, faTornado, faFileCirclePlus, faBookQuran, faQuran, faAnchor, faBorderAll, faFaceAngry, faAngry, faCookieBite, faArrowTrendDown, faRss, faFeed, faDrawPolygon, faScaleBalanced, faBalanceScale, faGaugeSimpleHigh, faTachometer, faTachometerFast, faShower, faDesktop, faDesktopAlt, faM, faTableList, faThList, faCommentSms, faSms, faBook, faUserPlus, faCheck, faBatteryThreeQuarters, faBattery4, faHouseCircleCheck, faAngleLeft, faDiagramSuccessor, faTruckArrowRight, faArrowsSplitUpAndLeft, faHandFist, faFistRaised, faCloudMoon, faBriefcase, faPersonFalling, faImagePortrait, faPortrait, faUserTag, faRug, faEarthEurope, faGlobeEurope, faCartFlatbedSuitcase, faLuggageCart, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faBahtSign, faBookOpen, faBookJournalWhills, faJournalWhills, faHandcuffs, faTriangleExclamation, faExclamationTriangle, faWarning, faDatabase, faShare, faMailForward, faBottleDroplet, faMaskFace, faHillRockslide, faRightLeft, faExchangeAlt, faPaperPlane, faRoadCircleExclamation, faDungeon, faAlignRight, faMoneyBill1Wave, faMoneyBillWaveAlt, faLifeRing, faHands, faSignLanguage, faSigning, faCalendarDay, faWaterLadder, faLadderWater, faSwimmingPool, faArrowsUpDown, faArrowsV, faFaceGrimace, faGrimace, faWheelchairMove, faWheelchairAlt, faTurnDown, faLevelDownAlt, faPersonWalkingArrowRight, faSquareEnvelope, faEnvelopeSquare, faDice, faBowlingBall, faBrain, faBandage, faBandAid, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faGifts, faHotel, faEarthAsia, faGlobeAsia, faIdCardClip, faIdCardAlt, faMagnifyingGlassPlus, faSearchPlus, faThumbsUp, faUserClock, faHandDots, faAllergies, faFileInvoice, faWindowMinimize, faMugSaucer, faCoffee, faBrush, faMask, faMagnifyingGlassMinus, faSearchMinus, faRulerVertical, faUserLarge, faUserAlt, faTrainTram, faUserNurse, faSyringe, faCloudSun, faStopwatch20, faSquareFull, faMagnet, faJar, faNoteSticky, faStickyNote, faBugSlash, faArrowUpFromWaterPump, faBone, faTableCellsRowUnlock, faUserInjured, faFaceSadTear, faSadTear, faPlane, faTentArrowsDown, faExclamation, faArrowsSpin, faPrint, faTurkishLiraSign, faTry, faTurkishLira, faDollarSign, faDollar, faUsd, faX, faMagnifyingGlassDollar, faSearchDollar, faUsersGear, faUsersCog, faPersonMilitaryPointing, faBuildingColumns, faBank, faInstitution, faMuseum, faUniversity, faUmbrella, faTrowel, faD, faStapler, faMasksTheater, faTheaterMasks, faKipSign, faHandPointLeft, faHandshakeSimple, faHandshakeAlt, faJetFighter, faFighterJet, faSquareShareNodes, faShareAltSquare, faBarcode, faPlusMinus, faVideo, faVideoCamera, faGraduationCap, faMortarBoard, faHandHoldingMedical, faPersonCircleCheck, faTurnUp, faLevelUpAlt };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Spinner } from 'react-bootstrap';\n\nfunction LoadingOverlay(props) {\n const style = {\n position: 'absolute',\n top: 0,\n right: 0,\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n };\n\n if (!props.hideOpacity) {\n style.backgroundColor = props.color ? props.color : 'white';\n style.opacity = props.opacity ? props.opacity : 0.8;\n }\n\n return (\n <div style={style}>\n <Spinner animation='border' variant='primary' />\n </div>\n );\n}\n\nLoadingOverlay.propTypes = {\n hideOpacity: PropTypes.bool\n};\n\nexport default LoadingOverlay;\n","export const validateEmailAddress = (emailAddress) =>\n /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,8}$/i.test(emailAddress);\n\n","import React from 'react';\nimport { observer } from 'mobx-react';\nimport { Form } from 'react-bootstrap';\nimport LoadingOverlay from '../LoadingOverlay';\nimport { validateEmailAddress } from '../helpers/Validation';\n\nexport const UserDetailsFormValidator = (values, props) => {\n const errors = {};\n\n if (!values.name) {\n errors.name = 'Required';\n }\n\n if (!values.email) {\n errors.email = 'Required';\n } else if (!validateEmailAddress(values.email)) {\n errors.email = 'Invalid email address';\n }\n\n return errors;\n};\n\nconst UserDetailsForm = ({\n canEditEmail,\n handleSubmit,\n handleChange,\n handleBlur,\n values,\n errors,\n setFieldValue,\n isSubmitting\n}) => {\n return (\n <Form onSubmit={handleSubmit}>\n <Form.Group controlId='name'>\n <Form.Label>Name</Form.Label>\n <Form.Control\n type='string'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.name}\n placeholder='Name'\n isInvalid={errors.name}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.name}\n </Form.Control.Feedback>\n </Form.Group>\n <Form.Group controlId='email'>\n <Form.Label>Email Address</Form.Label>\n <Form.Control\n type='email'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.email}\n placeholder='Email Address'\n isInvalid={errors.email}\n disabled={!canEditEmail}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.email}\n </Form.Control.Feedback>\n </Form.Group>\n <Form.Group controlId='send_reports'>\n <Form.Check\n type='checkbox'\n onChange={() => setFieldValue('send_reports', !values.send_reports)}\n defaultChecked={values.send_reports}\n label='Send Reports'\n />\n </Form.Group>\n {isSubmitting ? <LoadingOverlay /> : null}\n </Form>\n );\n};\n\nexport default observer(UserDetailsForm);\n","import React, { useContext, useState } from 'react';\nimport { observer } from 'mobx-react';\nimport { storesContext } from '../../stores/storesContext';\nimport { Formik } from 'formik';\nimport { Card, Row, Col, Button, Alert } from 'react-bootstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faEdit, faTimes, faCheck } from '@fortawesome/free-solid-svg-icons';\nimport UserDetailsForm, { UserDetailsFormValidator } from './UserDetailsForm';\n\nconst UserDetails = () => {\n const [editing, setEditing] = useState(false);\n const [error, setError] = useState(null);\n const userStore = useContext(storesContext);\n\n return editing ? (\n <Formik\n initialValues={{\n name: userStore.user.name,\n email: userStore.user.email,\n send_reports: userStore.user.send_reports\n }}\n validate={UserDetailsFormValidator}\n onSubmit={(values, actions) => {\n fetch(`${process.env.REACT_APP_AUTH_API_URL}api/fruition/user/update`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${userStore.bearerToken}`,\n service: 'fruition'\n },\n body: JSON.stringify(values)\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) userStore.refresh();\n else if (res.status === 422)\n res.json().then((data) => {\n if (data.errors)\n Object.keys(data.errors).forEach((key) => {\n actions.setFieldError(key, data.errors[key][0]);\n });\n\n actions.setSubmitting(false);\n });\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n userStore.updateUser(data);\n setEditing(false);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setError('Sorry something went wrong');\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <Card>\n <Card.Header className='d-flex justify-content-between align-items-center'>\n Details\n <div>\n {/* Submit button */}\n <Button\n variant='link'\n className='text-success'\n type='button'\n onClick={props.handleSubmit}\n >\n <FontAwesomeIcon icon={faCheck} />\n </Button>\n\n {/* Cancel button */}\n <Button\n variant='link'\n className='text-danger'\n type='button'\n onClick={() => setEditing(false)}\n >\n <FontAwesomeIcon icon={faTimes} />\n </Button>\n </div>\n </Card.Header>\n <Card.Body>\n {error ? (\n <Alert\n variant='danger'\n dismissible\n onClose={() => setError(null)}\n >\n {error}\n </Alert>\n ) : null}\n <UserDetailsForm canEditEmail={false} {...props} />\n </Card.Body>\n </Card>\n )}\n </Formik>\n ) : (\n <Card>\n <Card.Header className='d-flex justify-content-between align-items-center'>\n Details\n <Button variant='link' type='button' onClick={() => setEditing(true)}>\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n </Card.Header>\n <Card.Body>\n <Row>\n <Col>Name:</Col>\n <Col>{userStore.user.name}</Col>\n </Row>\n <Row>\n <Col>Email:</Col>\n <Col>{userStore.user.email}</Col>\n </Row>\n <Row>\n <Col>Send Reports:</Col>\n <Col>\n {userStore.user.send_reports ? (\n <FontAwesomeIcon className='text-success' icon={faCheck} />\n ) : (\n <FontAwesomeIcon className='text-danger' icon={faTimes} />\n )}\n </Col>\n </Row>\n </Card.Body>\n </Card>\n );\n};\n\nexport default observer(UserDetails);\n","import { observer } from 'mobx-react';\nimport React, { useContext } from 'react';\nimport { Button, Card, Col, Row } from 'react-bootstrap';\nimport { Link, useHistory } from 'react-router-dom';\nimport { storesContext } from '../../stores/storesContext';\nimport GlobalSeasonSelect from '../helpers/GlobalSeasonSelect';\nimport PageTitle from '../helpers/PageTitle';\nimport UserDetails from './UserDetails';\n\nfunction Home() {\n const userStore = useContext(storesContext);\n let history = useHistory();\n\n return (\n <div id='page-container'>\n <Row>\n <Col>\n <PageTitle title={'Account'} />\n </Col>\n </Row>\n\n <Row className='my-3'>\n <Col md={7}>\n <UserDetails />\n <Row className='my-3'>\n <Col className='text-center'>\n <Button\n className='mx-4'\n variant='primary'\n as={Link}\n to='/change-password'\n >\n Change Password\n </Button>\n <Button\n className='mx-4'\n variant='secondary'\n onClick={() => {\n userStore.logout();\n history.push('');\n }}\n >\n Logout\n </Button>\n </Col>\n </Row>\n </Col>\n <Col md={5}>\n <Card>\n <Card.Header className='py-3'>Season Settings</Card.Header>\n <Card.Body>\n <p>\n This is an advanced feature for changing the selected season,\n please consult Fruition before using this.\n </p>\n <Row>\n <Col>Selected Season:</Col>\n <Col>\n <GlobalSeasonSelect showConfirm />\n </Col>\n </Row>\n </Card.Body>\n </Card>\n </Col>\n </Row>\n </div>\n );\n}\n\nexport default observer(Home);\n\n","import { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport React, { Fragment, useContext, useState } from 'react';\nimport { Alert, Button, Col, Form, Row } from 'react-bootstrap';\nimport { Link, useHistory } from 'react-router-dom';\nimport { storesContext } from '../../stores/storesContext';\nimport PageTitle from '../helpers/PageTitle';\nimport LoadingOverlay from '../LoadingOverlay';\n\nfunction ChangePassword() {\n const userStore = useContext(storesContext);\n let history = useHistory();\n const [message, setMessage] = useState(null);\n\n return (\n <div id='page-container'>\n <Row>\n <Col>\n <PageTitle title={'Change Password'} />\n </Col>\n </Row>\n\n {message ? (\n <Alert\n variant={message.variant}\n onClose={() => {\n setMessage(null);\n }}\n dismissible\n >\n {message.message}\n </Alert>\n ) : null}\n\n <Row className='mt-2'>\n <Col xl={6} lg={6} md={12} className='my-2 mx-auto'>\n <Formik\n initialValues={{\n password: '',\n newpassword: '',\n newpassword_confirmation: ''\n }}\n validate={(values) => {\n const errors = {};\n\n if (!values.password) {\n errors.password = 'Required';\n }\n\n if (!values.newpassword) {\n errors.newpassword = 'Required';\n } else if (values.newpassword === values.password) {\n errors.newpassword = 'Please enter a new password';\n } else if (\n values.newpassword !== values.newpassword_confirmation\n ) {\n errors.newpassword_confirmation =\n 'Please confirm your new password';\n }\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n fetch(\n process.env.REACT_APP_AUTH_API_URL + 'api/change-password',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: 'Bearer ' + userStore.bearerToken,\n service: 'fruition'\n },\n body: JSON.stringify(values)\n }\n )\n .then((res) => {\n if (res.ok) history.push('/account');\n else if (res.status === 401) userStore.refresh();\n else if (res.status === 422) return res.json();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data.errors && data.errors.password) {\n setMessage({\n variant: 'danger',\n message: data.errors.password[0]\n });\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n setMessage({\n variant: 'danger',\n message:\n 'Sorry something went wrong, please try again or contact support.'\n });\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <Fragment>\n <Form noValidate onSubmit={props.handleSubmit}>\n <Form.Group controlId='password'>\n <Form.Label>Current Password</Form.Label>\n <Form.Control\n type='password'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n value={props.values.password}\n placeholder='Enter your current password'\n isInvalid={props.errors.password}\n />\n <Form.Control.Feedback type='invalid'>\n {props.errors.password}\n </Form.Control.Feedback>\n </Form.Group>\n\n <Form.Group controlId='newpassword'>\n <Form.Label>New Password</Form.Label>\n <Form.Control\n type='password'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n value={props.values.newpassword}\n placeholder='Enter your new password'\n isInvalid={props.errors.newpassword}\n />\n <Form.Control.Feedback type='invalid'>\n {props.errors.newpassword}\n </Form.Control.Feedback>\n </Form.Group>\n\n <Form.Group controlId='newpassword_confirmation'>\n <Form.Label>Confirm Password</Form.Label>\n <Form.Control\n type='password'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n value={props.values.newpassword_confirmation}\n placeholder='Confirm your new password'\n isInvalid={props.errors.newpassword_confirmation}\n />\n <Form.Control.Feedback type='invalid'>\n {props.errors.newpassword_confirmation}\n </Form.Control.Feedback>\n </Form.Group>\n\n <div className='d-flex justify-content-center'>\n <Button\n className='mr-2'\n variant='outline-secondary'\n as={Link}\n to='/account'\n >\n Cancel\n </Button>\n <Button variant='primary' type='submit'>\n Submit\n </Button>\n </div>\n </Form>\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </Fragment>\n )}\n </Formik>\n </Col>\n </Row>\n </div>\n );\n}\n\nexport default observer(ChangePassword);\n\n","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('card-deck');","import { Formik } from 'formik';\nimport { useContext, useState } from 'react';\nimport { Alert, Button, Form, Spinner } from 'react-bootstrap';\nimport { storesContext } from '../../../stores/storesContext';\nimport { successToast } from '../../helpers/toasts/ToastUtils';\n\nconst ChangeUserPasswordForm = (props) => {\n const userStore = useContext(storesContext);\n const [loading, setLoading] = useState(false);\n const [message, setMessage] = useState(null);\n\n return (\n <Formik\n initialValues={{\n newpassword: '',\n newpassword_confirmation: ''\n }}\n validate={(values) => {\n const errors = {};\n if (!values.newpassword) {\n errors.newpassword = 'Required';\n } else if (values.newpassword === values.password) {\n errors.newpassword = 'Please enter a new password';\n } else if (values.newpassword !== values.newpassword_confirmation) {\n errors.newpassword_confirmation = 'Please confirm your new password';\n }\n return errors;\n }}\n onSubmit={async (values, actions) => {\n try {\n setLoading(true);\n const response = await fetch(\n process.env.REACT_APP_AUTH_API_URL +\n 'api/admin/fruition/change-password/' +\n props.userId,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: 'Bearer ' + userStore.bearerToken,\n service: 'fruition'\n },\n body: JSON.stringify(values)\n }\n );\n\n if (response.ok) {\n successToast('Password changed successfully.');\n props.onSubmitSuccess();\n } else if (response.status === 400) {\n const data = await response.json();\n setMessage({\n variant: 'danger',\n message: data.message\n });\n } else if (response.status === 401) {\n userStore.refresh();\n } else if (response.status === 422) {\n const data = await response.json();\n if (data.errors) {\n setMessage({\n variant: 'danger',\n message: data.errors.password[0]\n });\n }\n } else {\n throw Error(response.statusText);\n }\n } catch (err) {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setMessage({\n variant: 'danger',\n message:\n 'Sorry something went wrong, please try again or contact support.'\n });\n } finally {\n actions.setSubmitting(false);\n setLoading(false);\n }\n }}\n >\n {(fProps) => (\n <Form noValidate onSubmit={fProps.handleSubmit}>\n <Form.Group controlId='newpassword'>\n <Form.Label>New Password</Form.Label>\n <Form.Control\n type='password'\n onChange={fProps.handleChange}\n onBlur={fProps.handleBlur}\n value={fProps.values.newpassword}\n placeholder='Enter your new password'\n isInvalid={fProps.errors.newpassword}\n />\n <Form.Control.Feedback type='invalid'>\n {fProps.errors.newpassword}\n </Form.Control.Feedback>\n </Form.Group>\n <Form.Group controlId='newpassword_confirmation'>\n <Form.Label>Confirm Password</Form.Label>\n <Form.Control\n type='password'\n onChange={fProps.handleChange}\n onBlur={fProps.handleBlur}\n value={fProps.values.newpassword_confirmation}\n placeholder='Confirm your new password'\n isInvalid={fProps.errors.newpassword_confirmation}\n />\n <Form.Control.Feedback type='invalid'>\n {fProps.errors.newpassword_confirmation}\n </Form.Control.Feedback>\n </Form.Group>\n {message ? (\n <Alert\n variant={message.variant}\n onClose={() => {\n setMessage(null);\n }}\n dismissible\n >\n {message.message}\n </Alert>\n ) : null}\n <Button variant='primary' type='submit'>\n {loading ? (\n <Spinner className='mx-2' animation='border' size='sm' />\n ) : (\n 'Submit'\n )}\n </Button>\n </Form>\n )}\n </Formik>\n );\n};\n\nexport default ChangeUserPasswordForm;\n\n","import { useState } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport ChangeUserPasswordForm from './ChangeUserPasswordForm';\n\nconst ChangeUserPassword = (props) => {\n const [open, setOpen] = useState(false);\n\n const userId = props.user?.id;\n\n return (\n <Row>\n <Col>\n <Row>\n <Col>\n <Button\n variant='outline-secondary'\n onClick={() => {\n if (!open) setOpen(true);\n else setOpen(false);\n }}\n >\n {open ? 'Cancel' : 'Change Password'}\n </Button>\n </Col>\n </Row>\n {open ? (\n <Row className='mt-2'>\n <Col>\n <ChangeUserPasswordForm\n userId={userId}\n onSubmitSuccess={() => setOpen(false)}\n />\n </Col>\n </Row>\n ) : (\n <></>\n )}\n </Col>\n </Row>\n );\n};\n\nexport default ChangeUserPassword;\n\n","import { faCheck, faEdit, faTimes } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { UserProperties, UserPropertyGroups } from '@hortplus/properties-react';\nimport { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport React, { useContext, useState } from 'react';\nimport { Button, Card, CardDeck, Col, Row } from 'react-bootstrap';\nimport Select from 'react-select';\nimport { storesContext } from '../../../stores/storesContext';\nimport UserDetailsForm, {\n UserDetailsFormValidator\n} from '../../account/UserDetailsForm';\nimport LoadingOverlay from '../../LoadingOverlay';\nimport ChangeUserPassword from './ChangeUserPassword';\n\nfunction User(props) {\n const userStore = useContext(storesContext);\n const [editing, setEditing] = useState(false);\n const [loadingDetails, setLoadingDetails] = useState(false);\n const [loadingPermissions, setLoadingPermissions] = useState(false);\n\n const restore = () => {\n setLoadingDetails(true);\n fetch(\n `${process.env.REACT_APP_AUTH_API_URL}api/admin/fruition/users/${props.user.id}/restore`,\n {\n method: 'PUT',\n headers: {\n Accept: 'applicatiom/json',\n Authorization: `Bearer ${userStore.bearerToken}`\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) userStore.refresh();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n props.update(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n setLoadingDetails(false);\n });\n };\n\n /**\n * @param {int} roleId\n */\n const updateRole = (roleId) => {\n setLoadingPermissions(true);\n fetch(\n `${process.env.REACT_APP_AUTH_API_URL}api/admin/fruition/user/${props.user.id}/role`,\n {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${userStore.bearerToken}`\n },\n body: JSON.stringify({\n role_id: roleId\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) userStore.refresh();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n props.update(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n setLoadingPermissions(false);\n });\n };\n\n return (\n <>\n <Row>\n <Col>\n <Button\n variant='secondary'\n className='mb-2'\n type='button'\n onClick={props.close}\n >\n Back\n </Button>\n </Col>\n </Row>\n\n <CardDeck>\n {editing ? (\n <Formik\n initialValues={{\n name: props.user.name,\n email: props.user.email,\n send_reports: props.user.send_reports\n }}\n validate={UserDetailsFormValidator}\n onSubmit={(values, actions) => {\n fetch(\n `${process.env.REACT_APP_AUTH_API_URL}api/admin/users/${props.user.id}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${userStore.bearerToken}`,\n service: 'fruition'\n },\n body: JSON.stringify(values)\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) userStore.refresh();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n props.update(data);\n setEditing(false);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n }}\n >\n {(fProps) => (\n <Card>\n <Card.Header className='d-flex justify-content-between align-items-center'>\n User Details\n <div>\n {/* Submit button */}\n <Button\n variant='link'\n className='text-success'\n type='button'\n onClick={fProps.handleSubmit}\n >\n <FontAwesomeIcon icon={faCheck} />\n </Button>\n\n {/* Cancel button */}\n <Button\n variant='link'\n className='text-danger'\n type='button'\n onClick={() => setEditing(false)}\n >\n <FontAwesomeIcon icon={faTimes} />\n </Button>\n </div>\n </Card.Header>\n <Card.Body>\n <UserDetailsForm canEditEmail={true} {...fProps} />\n <hr />\n <ChangeUserPassword user={props.user} />\n </Card.Body>\n </Card>\n )}\n </Formik>\n ) : (\n <Card>\n <Card.Header className='d-flex justify-content-between align-items-center'>\n User Details\n {props.user.deleted_at ? (\n <Button\n variant='outline-danger'\n type='button'\n onClick={() => restore()}\n >\n Restore\n </Button>\n ) : (\n <Button\n variant='link'\n type='button'\n onClick={() => setEditing(true)}\n >\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n )}\n </Card.Header>\n <Card.Body>\n <Row>\n <Col>Name:</Col>\n <Col>{props.user.name}</Col>\n </Row>\n <Row>\n <Col>Email:</Col>\n <Col>{props.user.email}</Col>\n </Row>\n <Row>\n <Col>Send Reports:</Col>\n <Col>\n {props.user.send_reports ? (\n <FontAwesomeIcon className='text-success' icon={faCheck} />\n ) : (\n <FontAwesomeIcon className='text-danger' icon={faTimes} />\n )}\n </Col>\n </Row>\n <Row>\n <Col>Last Login:</Col>\n <Col>\n {props.user.last_login\n ? moment\n .utc(props.user.last_login)\n .local()\n .format('YYYY-MM-DD')\n : '-'}\n </Col>\n </Row>\n <Row>\n <Col>Login Count:</Col>\n <Col>{props.user.login_count}</Col>\n </Row>\n </Card.Body>\n {loadingDetails ? <LoadingOverlay /> : null}\n </Card>\n )}\n\n <Card>\n <Card.Header\n style={{ height: '63px' }}\n className='d-flex align-items-center'\n >\n Permissions\n </Card.Header>\n <Card.Body>\n <Row>\n <Col>Role:</Col>\n <Col>\n <Select\n value={{\n value: props.user.role.id,\n label: props.user.role.name\n }}\n options={props.roles.map((role) => {\n return {\n value: role.id,\n label: role.name\n };\n })}\n onChange={(role) => {\n updateRole(role.value);\n }}\n />\n </Col>\n </Row>\n </Card.Body>\n {loadingPermissions ? <LoadingOverlay /> : null}\n </Card>\n </CardDeck>\n <Row className='mt-2'>\n <Col>\n <UserProperties\n selectedDatabase={userStore.selectedDatabase}\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refresh}\n user_id={props.user.id}\n user_type='fruition'\n />\n </Col>\n <Col>\n <UserPropertyGroups\n selectedDatabase={userStore.selectedDatabase}\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refresh}\n user_id={props.user.id}\n user_type='fruition'\n />\n </Col>\n </Row>\n </>\n );\n}\n\nUser.propTypes = {\n user: PropTypes.object.isRequired,\n roles: PropTypes.array.isRequired,\n update: PropTypes.func.isRequired,\n close: PropTypes.func.isRequired\n};\n\nexport default observer(User);\n\n","import React, { useState } from 'react';\nimport { Form } from 'react-bootstrap';\nimport { useAsyncDebounce } from 'react-table';\n\n// Define a default UI for filtering\nexport default function GlobalFilter({\n preGlobalFilteredRows,\n globalFilter,\n setGlobalFilter,\n style\n}) {\n const count = preGlobalFilteredRows ? preGlobalFilteredRows.length : 0;\n const [value, setValue] = useState(globalFilter);\n const onChange = useAsyncDebounce((value) => {\n setGlobalFilter(value || undefined);\n }, 200);\n\n return (\n <Form.Control\n type='text'\n value={value || ''}\n onChange={(e) => {\n setValue(e.target.value);\n onChange(e.target.value);\n }}\n placeholder={`Search ${count} records...`}\n style={style}\n />\n );\n}\n","import {\n faAngleDoubleLeft,\n faAngleDoubleRight,\n faAngleLeft,\n faAngleRight\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React from 'react';\nimport { Button, FormControl } from 'react-bootstrap';\n\nfunction TablePagination({\n // Variables\n pageCount,\n pageIndex,\n pageOptions,\n pageSize,\n\n // Methods\n gotoPage,\n canPreviousPage,\n previousPage,\n canNextPage,\n nextPage,\n setPageSize\n}) {\n return (\n <div className='d-flex align-items-center justify-content-between my-3'>\n <div>\n <Button\n variant='link'\n onClick={() => gotoPage(0)}\n disabled={!canPreviousPage}\n >\n <FontAwesomeIcon icon={faAngleDoubleLeft} />\n </Button>{' '}\n <Button\n variant='link'\n onClick={() => previousPage()}\n disabled={!canPreviousPage}\n >\n <FontAwesomeIcon icon={faAngleLeft} />\n </Button>{' '}\n <Button\n variant='link'\n onClick={() => nextPage()}\n disabled={!canNextPage}\n >\n <FontAwesomeIcon icon={faAngleRight} />\n </Button>{' '}\n <Button\n variant='link'\n onClick={() => gotoPage(pageCount - 1)}\n disabled={!canNextPage}\n >\n <FontAwesomeIcon icon={faAngleDoubleRight} />\n </Button>\n </div>\n {pageOptions.length > 0 ? (\n <div>\n <span>\n Page{' '}\n <strong>\n {pageIndex + 1} of {pageOptions.length}\n </strong>\n </span>\n </div>\n ) : null}\n <div>\n <FormControl\n disabled={pageCount === 0}\n as='select'\n value={pageSize}\n onChange={(e) => {\n setPageSize(Number(e.target.value));\n }}\n >\n {[10, 20, 30, 40, 50].map((pageSize) => (\n <option key={pageSize} value={pageSize}>\n Show {pageSize}\n </option>\n ))}\n </FormControl>\n </div>\n </div>\n );\n}\n\nexport default TablePagination;\n\n","import {\n faCheck,\n faExternalLinkAlt,\n faEye,\n faSort,\n faSortDown,\n faSortUp,\n faTimes,\n faTrash\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport React, {\n Fragment,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState\n} from 'react';\nimport { Button, Table } from 'react-bootstrap';\nimport {\n useGlobalFilter,\n usePagination,\n useSortBy,\n useTable\n} from 'react-table';\nimport { storesContext } from '../../stores/storesContext';\nimport GlobalTableFilter from '../GlobalTableFilter';\nimport TablePagination from '../helpers/TablePagination';\n\nfunction UsersTable(props) {\n const userStore = useContext(storesContext);\n const [showDeletedUsers, setShowDeletedUsers] = useState(false);\n\n const data = useMemo(\n () =>\n props.data.filter((user) => (showDeletedUsers ? true : !user.deleted_at)),\n [props.data, showDeletedUsers]\n );\n\n const deleteUser = useCallback(\n (userId) => {\n props.setLoading(true);\n fetch(`${process.env.REACT_APP_AUTH_API_URL}api/admin/users/${userId}`, {\n method: 'DELETE',\n headers: {\n Accept: 'applicatiom/json',\n service: 'fruition',\n Authorization: `Bearer ${userStore.bearerToken}`\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) userStore.refresh();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n props.updateUser(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n props.setLoading(false);\n });\n },\n [props, userStore]\n );\n\n const columns = useMemo(\n () => [\n {\n Header: 'Name',\n accessor: 'name'\n },\n {\n Header: 'Email',\n accessor: 'email'\n },\n {\n Header: 'Role',\n accessor: 'role.name'\n },\n {\n Header: 'Send Reports',\n accessor: 'send_reports',\n Cell: ({ value }) =>\n value ? (\n <FontAwesomeIcon className='text-success' icon={faCheck} />\n ) : (\n <FontAwesomeIcon className='text-danger' icon={faTimes} />\n )\n },\n {\n Header: 'Last Login',\n accessor: 'last_login',\n Cell: ({ value }) => {\n // Create moment date and convert from utc to nz time.\n if (value) {\n const date = moment.utc(value).local();\n return date.format('YYYY-MM-DD');\n } else {\n return '-';\n }\n }\n },\n {\n Header: 'Login Count',\n accessor: 'login_count',\n Cell: ({ value }) => {\n if (value) {\n return value;\n } else {\n return '-';\n }\n }\n },\n {\n id: 'edit',\n sortable: false,\n filterable: false,\n Header: (tableInstance) => (\n <div className='text-right'>\n <Button\n type='button'\n variant='link'\n className={\n tableInstance.state.showDeletedUsers\n ? 'text-primary'\n : 'text-dark'\n }\n onClick={() => {\n setShowDeletedUsers(!tableInstance.state.showDeletedUsers);\n }}\n >\n <FontAwesomeIcon icon={faEye} />\n </Button>\n </div>\n ),\n Cell: ({ row }) => (\n <div className='text-right'>\n {/* Select User */}\n <Button\n type='button'\n variant='link'\n className='text-primary'\n onClick={() => props.changeSelectedUser(row.original.id)}\n >\n <FontAwesomeIcon icon={faExternalLinkAlt} />\n </Button>\n\n {/* Delete User */}\n {row.original.deleted_at === null ? (\n <Button\n type='button'\n variant='link'\n className='text-danger'\n onClick={() => deleteUser(row.original.id)}\n >\n <FontAwesomeIcon icon={faTrash} />\n </Button>\n ) : null}\n </div>\n )\n }\n ],\n [deleteUser, props]\n );\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n prepareRow,\n page,\n canPreviousPage,\n canNextPage,\n pageOptions,\n pageCount,\n gotoPage,\n nextPage,\n previousPage,\n setPageSize,\n state: { pageIndex, pageSize },\n state,\n preGlobalFilteredRows,\n setGlobalFilter\n } = useTable(\n {\n columns,\n data,\n useControlledState: (state) => {\n return React.useMemo(\n () => ({\n ...state,\n showDeletedUsers: showDeletedUsers\n }),\n [state]\n );\n }\n },\n useGlobalFilter,\n useSortBy,\n usePagination\n );\n\n useEffect(() => {\n props.setCurrentPage(pageIndex);\n }, [pageIndex, props]);\n\n useEffect(() => {\n gotoPage(props.currentPage);\n }, [gotoPage, props.currentPage]);\n\n return (\n <Fragment>\n <GlobalTableFilter\n preGlobalFilteredRows={preGlobalFilteredRows}\n globalFilter={state.globalFilter}\n setGlobalFilter={setGlobalFilter}\n style={{\n marginBottom: '0.5rem',\n maxWidth: 500\n }}\n />\n <Table responsive {...getTableProps()}>\n <thead>\n {headerGroups.map((headerGroup) => (\n <tr {...headerGroup.getHeaderGroupProps()}>\n {headerGroup.headers.map((column) => (\n <th {...column.getHeaderProps(column.getSortByToggleProps())}>\n {column.render('Header')}\n {column.canSort ? (\n <span className='px-2'>\n {column.isSorted ? (\n column.isSortedDesc ? (\n <FontAwesomeIcon icon={faSortDown} />\n ) : (\n <FontAwesomeIcon icon={faSortUp} />\n )\n ) : (\n <FontAwesomeIcon icon={faSort} />\n )}\n </span>\n ) : null}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody {...getTableBodyProps()}>\n {page.map((row) => {\n prepareRow(row);\n return (\n <tr {...row.getRowProps()}>\n {row.cells.map((cell) => {\n return (\n <td {...cell.getCellProps()}>{cell.render('Cell')}</td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </Table>\n <TablePagination\n pageCount={pageCount}\n pageIndex={pageIndex}\n pageOptions={pageOptions}\n pageSize={pageSize}\n gotoPage={gotoPage}\n canPreviousPage={canPreviousPage}\n previousPage={previousPage}\n canNextPage={canNextPage}\n nextPage={nextPage}\n setPageSize={setPageSize}\n />\n </Fragment>\n );\n}\n\nUsersTable.propTypes = {\n data: PropTypes.array.isRequired,\n setLoading: PropTypes.func.isRequired,\n changeSelectedUser: PropTypes.func.isRequired,\n updateUser: PropTypes.func.isRequired\n};\n\nexport default observer(UsersTable);\n\n","import { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { Button, Col, Form, Modal, Row } from 'react-bootstrap';\nimport { useHistory, useParams } from 'react-router-dom';\nimport Select from 'react-select';\nimport { storesContext } from '../../stores/storesContext';\nimport LoadingOverlay from '../LoadingOverlay';\nimport PageTitle from '../helpers/PageTitle';\nimport { validateEmailAddress } from '../helpers/Validation';\nimport { errorToast } from '../helpers/toasts/ToastUtils';\nimport User from './User/User';\nimport UsersTable from './UsersTable';\n\nfunction UserManager() {\n const history = useHistory();\n const { id } = useParams();\n const userStore = useContext(storesContext);\n\n const [loading, setLoading] = useState(false);\n const [loadingRoles, setLoadingRoles] = useState(true);\n const [roles, setRoles] = useState([]);\n const [loadingUsers, setLoadingUsers] = useState(true);\n const [users, setUsers] = useState([]);\n const [showAddUserModal, setShowAddUserModal] = useState(false);\n const [currentPage, setCurrentPage] = useState(0);\n\n /**\n * Load all roles and users whenever the user store is updated.\n */\n useEffect(() => {\n // Roles\n setLoadingRoles(true);\n fetch(process.env.REACT_APP_AUTH_API_URL + 'api/admin/fruition/roles', {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + userStore.bearerToken,\n service: 'fruition'\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) userStore.refresh();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setRoles(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n setLoadingRoles(false);\n });\n\n // Users\n setLoadingUsers(true);\n fetch(process.env.REACT_APP_AUTH_API_URL + 'api/users', {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + userStore.bearerToken,\n service: 'fruition'\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) userStore.refresh();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setUsers(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n setLoadingUsers(false);\n });\n }, [userStore]);\n\n /**\n * Adds a new user object into the users list and then hides the\n * add user modal.\n *\n * @param {object} user\n */\n const addUser = (user) => {\n setUsers([...users, user]);\n setShowAddUserModal(false);\n };\n\n /**\n * If the user id exists in the users list then update that user.\n *\n * @param {object} user\n */\n const updateUser = (user) => {\n const index = users.findIndex((element) => element.id === user.id);\n if (index > -1) {\n const newUsers = [...users];\n newUsers[index] = user;\n setUsers(newUsers);\n }\n };\n\n /**\n * If an integer is supplied then change the URL to show that resource,\n * otherwise change the URL to show the list of all users.\n *\n * @param {int|null} newId\n */\n const changeSelectedUser = (newId) => {\n if (Number.isInteger(newId)) history.push('/management/users/' + newId);\n else history.push('/management/users');\n };\n\n // Loading data\n if (loading || loadingRoles || loadingUsers) {\n return <LoadingOverlay hideOpacity />;\n } else {\n // Check if a valid user is selected\n const selectedUser =\n users[users.findIndex((user) => user.id === parseInt(id))];\n\n // A valid user was selected\n if (selectedUser) {\n return (\n <div id='page-container'>\n <User\n authApiUrl={process.env.REACT_APP_AUTH_API_URL}\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refresh}\n user={selectedUser}\n roles={roles}\n update={updateUser}\n close={() => changeSelectedUser(null)}\n />\n </div>\n );\n }\n\n // No valid user was selected\n else {\n return (\n <div id='page-container'>\n <Row>\n <Col>\n <PageTitle title={'Users'} />\n </Col>\n </Row>\n <Button\n variant='outline-success'\n className='mb-2'\n onClick={() => setShowAddUserModal(true)}\n >\n Add User\n </Button>\n <UsersTable\n data={users}\n changeSelectedUser={changeSelectedUser}\n setLoading={setLoading}\n updateUser={updateUser}\n currentPage={currentPage}\n setCurrentPage={setCurrentPage}\n />\n\n {/* Add User Modal */}\n <Modal\n show={showAddUserModal}\n onHide={() => setShowAddUserModal(false)}\n backdrop='static'\n >\n <Modal.Header closeButton>\n <Modal.Title>Add User</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Formik\n initialValues={{\n roles: roles,\n name: '',\n email: '',\n password: '',\n role_id: ''\n }}\n validate={(values, props) => {\n const errors = {};\n\n if (!values.name) {\n errors.name = 'Required';\n }\n\n if (!values.email) {\n errors.email = 'Required';\n } else if (!validateEmailAddress(values.email)) {\n errors.email = 'Invalid email address';\n }\n\n if (!values.password) {\n errors.password = 'Required';\n }\n\n if (!values.role_id) {\n errors.role_id = 'Required';\n } else if (\n !values.roles.some((role) => role.id === values.role_id)\n ) {\n errors.role_id = 'Invalid role';\n }\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n fetch(\n process.env.REACT_APP_AUTH_API_URL +\n 'api/admin/fruition/user',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: 'Bearer ' + userStore.bearerToken,\n service: 'fruition'\n },\n body: JSON.stringify({\n name: values.name,\n email: values.email,\n password: values.password,\n role_id: values.role_id\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) userStore.refresh();\n else if (res.status === 422)\n res.json().then((j) => errorToast(j.errors.email[0]));\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n addUser(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <Form onSubmit={props.handleSubmit}>\n <Form.Group controlId='name'>\n <Form.Label>Name</Form.Label>\n <Form.Control\n type='string'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n value={props.values.name}\n placeholder='Name'\n isInvalid={props.errors.name}\n />\n <Form.Control.Feedback type='invalid'>\n {props.errors.name}\n </Form.Control.Feedback>\n </Form.Group>\n <Form.Group controlId='email'>\n <Form.Label>Email Address</Form.Label>\n <Form.Control\n type='email'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n value={props.values.email}\n placeholder='Email Address'\n isInvalid={props.errors.email}\n />\n <Form.Control.Feedback type='invalid'>\n {props.errors.email}\n </Form.Control.Feedback>\n </Form.Group>\n <Form.Group controlId='password'>\n <Form.Label>Password</Form.Label>\n <Form.Control\n type='password'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n value={props.values.password}\n placeholder='Password'\n isInvalid={props.errors.password}\n />\n <Form.Control.Feedback type='invalid'>\n {props.errors.password}\n </Form.Control.Feedback>\n </Form.Group>\n <Form.Group controlId='role_id'>\n <Form.Label>Role</Form.Label>\n <Select\n onChange={(option) =>\n props.setFieldValue('role_id', option.value)\n }\n options={props.values.roles.map((role) => {\n return {\n value: role.id,\n label: role.name\n };\n })}\n />\n {props.errors.role_id ? (\n <div className='text-danger'>\n {props.errors.role_id}\n </div>\n ) : null}\n </Form.Group>\n <Button type='submit' variant='primary'>\n Submit\n </Button>\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </Form>\n )}\n </Formik>\n </Modal.Body>\n </Modal>\n </div>\n );\n }\n }\n}\n\nexport default observer(UserManager);\n\n","const appleIphone = /iPhone/i;\nconst appleIpod = /iPod/i;\nconst appleTablet = /iPad/i;\nconst appleUniversal = /\\biOS-universal(?:.+)Mac\\b/i;\nconst androidPhone = /\\bAndroid(?:.+)Mobile\\b/i; // Match 'Android' AND 'Mobile'\nconst androidTablet = /Android/i;\nconst amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i; // Match 'Silk' AND 'Mobile'\nconst amazonTablet = /Silk/i;\nconst windowsPhone = /Windows Phone/i;\nconst windowsTablet = /\\bWindows(?:.+)ARM\\b/i; // Match 'Windows' AND 'ARM'\nconst otherBlackBerry = /BlackBerry/i;\nconst otherBlackBerry10 = /BB10/i;\nconst otherOpera = /Opera Mini/i;\nconst otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nconst otherFirefox = /Mobile(?:.+)Firefox\\b/i; // Match 'Mobile' AND 'Firefox'\n\nexport type UserAgent = string;\nexport type Navigator = {\n userAgent: string;\n platform: string;\n maxTouchPoints?: number;\n};\n\nconst isAppleTabletOnIos13 = (navigator?: Navigator): boolean => {\n return (\n typeof navigator !== 'undefined' &&\n navigator.platform === 'MacIntel' &&\n typeof navigator.maxTouchPoints === 'number' &&\n navigator.maxTouchPoints > 1 &&\n typeof MSStream === 'undefined'\n );\n};\n\nfunction createMatch(userAgent: UserAgent): (regex: RegExp) => boolean {\n return (regex: RegExp): boolean => regex.test(userAgent);\n}\n\nexport type isMobileResult = {\n apple: {\n phone: boolean;\n ipod: boolean;\n tablet: boolean;\n universal: boolean;\n device: boolean;\n };\n amazon: {\n phone: boolean;\n tablet: boolean;\n device: boolean;\n };\n android: {\n phone: boolean;\n tablet: boolean;\n device: boolean;\n };\n windows: {\n phone: boolean;\n tablet: boolean;\n device: boolean;\n };\n other: {\n blackberry: boolean;\n blackberry10: boolean;\n opera: boolean;\n firefox: boolean;\n chrome: boolean;\n device: boolean;\n };\n phone: boolean;\n tablet: boolean;\n any: boolean;\n};\n\nexport type IsMobileParameter = UserAgent | Navigator;\n\nexport default function isMobile(param?: IsMobileParameter): isMobileResult {\n let nav: Navigator = {\n userAgent: '',\n platform: '',\n maxTouchPoints: 0,\n };\n\n if (!param && typeof navigator !== 'undefined') {\n nav = {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n maxTouchPoints: navigator.maxTouchPoints || 0,\n };\n } else if (typeof param === 'string') {\n nav.userAgent = param;\n } else if (param && param.userAgent) {\n nav = {\n userAgent: param.userAgent,\n platform: param.platform,\n maxTouchPoints: param.maxTouchPoints || 0,\n };\n }\n\n let userAgent = nav.userAgent;\n\n // Facebook mobile app's integrated browser adds a bunch of strings that\n // match everything. Strip it out if it exists.\n let tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n\n // Twitter mobile app's integrated browser on iPad adds a \"Twitter for\n // iPhone\" string. Same probably happens on other tablet platforms.\n // This will confuse detection so strip it out if it exists.\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n\n const match = createMatch(userAgent);\n\n const result: isMobileResult = {\n apple: {\n phone: match(appleIphone) && !match(windowsPhone),\n ipod: match(appleIpod),\n tablet:\n !match(appleIphone) &&\n (match(appleTablet) || isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone),\n universal: match(appleUniversal),\n device:\n (match(appleIphone) ||\n match(appleIpod) ||\n match(appleTablet) ||\n match(appleUniversal) ||\n isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone),\n },\n amazon: {\n phone: match(amazonPhone),\n tablet: !match(amazonPhone) && match(amazonTablet),\n device: match(amazonPhone) || match(amazonTablet),\n },\n android: {\n phone:\n (!match(windowsPhone) && match(amazonPhone)) ||\n (!match(windowsPhone) && match(androidPhone)),\n tablet:\n !match(windowsPhone) &&\n !match(amazonPhone) &&\n !match(androidPhone) &&\n (match(amazonTablet) || match(androidTablet)),\n device:\n (!match(windowsPhone) &&\n (match(amazonPhone) ||\n match(amazonTablet) ||\n match(androidPhone) ||\n match(androidTablet))) ||\n match(/\\bokhttp\\b/i),\n },\n windows: {\n phone: match(windowsPhone),\n tablet: match(windowsTablet),\n device: match(windowsPhone) || match(windowsTablet),\n },\n other: {\n blackberry: match(otherBlackBerry),\n blackberry10: match(otherBlackBerry10),\n opera: match(otherOpera),\n firefox: match(otherFirefox),\n chrome: match(otherChrome),\n device:\n match(otherBlackBerry) ||\n match(otherBlackBerry10) ||\n match(otherOpera) ||\n match(otherFirefox) ||\n match(otherChrome),\n },\n any: false,\n phone: false,\n tablet: false,\n };\n\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n // excludes 'other' devices and ipods, targeting touchscreen phones\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n\n return result;\n}\n","import { React, useState, useEffect } from 'react';\nimport { Alert, Button, Card, Spinner } from 'react-bootstrap';\n\n/**\n * Custom hook for loading Green Atlas bundle URL info.\n * @param {*} selectedPropertyId\n * @param {*} selectedDatabase\n * @param {*} bearerToken\n * @returns\n */\nexport const useGreenAtlasUrls = (\n selectedPropertyIdentifier,\n selectedDatabase,\n bearerToken\n) => {\n const [loadingGaUrls, setLoadingGaUrls] = useState(false);\n const [gaUrls, setGaUrls] = useState([]);\n\n useEffect(() => {\n const fetchGreenAtlasUrls = async () => {\n // Exit if no property selected.\n if (!selectedPropertyIdentifier) {\n setGaUrls([]);\n setLoadingGaUrls(false);\n }\n setLoadingGaUrls(true);\n try {\n const response = await fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/green-atlas/bundles/${selectedPropertyIdentifier}/urls`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n SeasonalDatabase: selectedDatabase,\n Authorization: `Bearer ${bearerToken}`\n }\n }\n );\n\n if (!response.ok) {\n throw [response.status, response.statusText];\n }\n\n const json = await response.json();\n setGaUrls(json['urls']);\n } catch (err) {\n if (err[0] === 404) {\n console.error('No GA bundles registered for property.');\n } else {\n console.error('Error loading GA bundle URLs');\n }\n setGaUrls([]);\n } finally {\n setLoadingGaUrls(false);\n }\n };\n\n if (selectedPropertyIdentifier && selectedDatabase && bearerToken) {\n fetchGreenAtlasUrls();\n }\n }, [selectedPropertyIdentifier, selectedDatabase, bearerToken]);\n\n return { gaUrls, loadingGaUrls };\n};\n\n/**\n * Component to render Green Atlas URL buttons.\n * @param {*} param0\n * @returns\n */\nexport const GreenAtlasUrlButtons = ({ urls, isLoading }) => {\n if (isLoading) {\n return (\n <div\n className='d-flex justify-content-center align-items-center'\n style={{ height: '50px' }}\n >\n <Spinner animation='border' role='status' />\n </div>\n );\n }\n\n // Don't render anything if there are no bundles associated with the property.\n if (urls.length === 0) {\n return null;\n }\n\n // Render the buttons. Number them if there are multiple, otherwise just label\n // the button \"Green Atlas Viewer\"\n return (\n <Card className='mt-3'>\n <Card.Header as='h5' className='bg-success text-white'>\n Green Atlas Viewer\n </Card.Header>\n <Card.Body>\n <Alert variant='success'>\n The Green Atlas Viewer is available for this property. Click{' '}\n {urls.length > 1\n ? 'one of the \"Green Atlas Viewer #\" buttons'\n : 'the \"Green Atlas Viewer\" button'}{' '}\n below to load the interactive report viewer.\n </Alert>\n <div className='d-flex flex-wrap gap-2'>\n {urls.map((url, index) => (\n <Button\n className='mr-1'\n key={index}\n variant='outline-success'\n href={url}\n target='_blank'\n rel='noopener noreferrer'\n >\n {urls.length > 1\n ? `Green Atlas Viewer ${index + 1}`\n : 'Green Atlas Viewer'}\n </Button>\n ))}\n </div>\n </Card.Body>\n </Card>\n );\n};\n\n","import React from 'react';\nimport { Button, ButtonGroup } from 'react-bootstrap';\n\nexport const monoStyle = 'cklubq40e06ej17ojtb4pg2o1';\nexport const satelliteStyle = 'cknpikbkn0jut17nwxfi4mbh8';\n\nconst PreviewButton = (props) => {\n const newStyle =\n props.mapStyle === satelliteStyle ? monoStyle : satelliteStyle;\n return (\n <div\n className='m-3'\n style={{\n position: 'absolute',\n bottom: 0,\n right: 0\n }}\n >\n <ButtonGroup>\n <Button\n onClick={() => props.setMapStyle(monoStyle)}\n variant={props.mapStyle === monoStyle ? 'secondary' : 'light'}\n >\n Map View\n </Button>\n <Button\n onClick={() => props.setMapStyle(satelliteStyle)}\n variant={props.mapStyle === satelliteStyle ? 'secondary' : 'light'}\n >\n Satellite View\n </Button>\n </ButtonGroup>\n </div>\n );\n};\n\nexport default PreviewButton;\n\n","import bbox from '@turf/bbox';\nimport PropTypes from 'prop-types';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport Map, { Layer, Source } from 'react-map-gl-7';\nimport PreviewButton, { monoStyle } from '../helpers/maps/PreviewButton';\n\nconst BlocksMap = ({ features, selectedBlock, onClick }) => {\n const initialViewPort = {\n latitude: -41,\n longitude: 174.5,\n zoom: 4,\n height: 400,\n width: '100%'\n };\n const [viewport, setViewport] = useState(initialViewPort);\n const [initialBoundsSet, setInitialBoundsSet] = useState(false);\n const [mapStyle, setMapStyle] = useState(monoStyle);\n const mapRef = useRef();\n const layers = [\n {\n id: 'layerStyleHasReportsFill',\n type: 'fill',\n paint: {\n 'fill-color': 'green',\n 'fill-opacity': 0.3\n },\n filter: ['==', 'has_reports', true]\n },\n {\n id: 'layerStyleNoReportsFill',\n type: 'fill',\n paint: {\n 'fill-color': 'gray',\n 'fill-opacity': 0.2\n },\n filter: ['==', 'has_reports', false]\n },\n {\n id: 'layerStyleHasReportsLine',\n type: 'line',\n paint: {\n 'line-color': 'green',\n 'line-width': 1.2\n },\n filter: ['==', 'has_reports', true]\n },\n {\n id: 'layerStyleNoReportsLine',\n type: 'line',\n paint: {\n 'line-color': 'gray',\n 'line-width': 1.2\n },\n filter: ['==', 'has_reports', false]\n },\n {\n id: 'layerStyleSelectedHasReportsFill',\n type: 'fill',\n paint: {\n 'fill-color': 'green',\n 'fill-opacity': 0.3\n },\n filter: [\n 'all',\n ['==', 'block_name', selectedBlock],\n ['==', 'has_reports', true]\n ]\n },\n {\n id: 'layerStyleSelectedNoReportsFill',\n type: 'fill',\n paint: {\n 'fill-color': 'gray',\n 'fill-opacity': 0.2\n },\n filter: [\n 'all',\n ['==', 'block_name', selectedBlock],\n ['==', 'has_reports', false]\n ]\n },\n {\n id: 'layerStyleSelectedHasReportsLine',\n type: 'line',\n paint: {\n 'line-color': 'green',\n 'line-width': 4.0\n },\n filter: [\n 'all',\n ['==', 'block_name', selectedBlock],\n ['==', 'has_reports', true]\n ]\n },\n {\n id: 'layerStyleSelectedNoReportsLine',\n type: 'line',\n paint: {\n 'line-color': 'gray',\n 'line-width': 4.0\n },\n filter: [\n 'all',\n ['==', 'block_name', selectedBlock],\n ['==', 'has_reports', false]\n ]\n }\n ];\n\n const data = useMemo(() => {\n const geojson = {\n type: 'FeatureCollection',\n features\n };\n return geojson;\n }, [features]);\n\n const fitBounds = useCallback(\n (map) => {\n const features = data.features;\n if (features && features.length > 0) {\n let minLng;\n let minLat;\n let maxLng;\n let maxLat;\n data.features.forEach((feature) => {\n const [newMinLng, newMinLat, newMaxLng, newMaxLat] = bbox(feature);\n if (minLng === undefined || newMinLng < minLng) minLng = newMinLng;\n if (maxLng === undefined || newMaxLng > maxLng) maxLng = newMaxLng;\n if (minLat === undefined || newMinLat < minLat) minLat = newMinLat;\n if (maxLat === undefined || newMaxLat > maxLat) maxLat = newMaxLat;\n });\n map.fitBounds(\n [\n [minLng, minLat],\n [maxLng, maxLat]\n ],\n { padding: 50, duration: 500 }\n );\n } else {\n const distance = viewport.zoom + 1;\n const bounds = [\n [viewport.longitude - distance, viewport.latitude - distance],\n [viewport.longitude + distance, viewport.latitude + distance]\n ];\n map.fitBounds(bounds, { padding: 50, duration: 500 });\n }\n },\n [data.features, viewport.latitude, viewport.longitude, viewport.zoom]\n );\n\n useEffect(() => {\n if (mapRef.current && data) {\n fitBounds(mapRef.current);\n setInitialBoundsSet(true);\n }\n }, [fitBounds, data, initialBoundsSet]);\n\n const mapRefWrapper = useCallback(\n (node) => {\n if (node) {\n if (data && !initialBoundsSet) {\n fitBounds(node);\n setInitialBoundsSet(true);\n }\n }\n mapRef.current = node;\n },\n [data, fitBounds, initialBoundsSet]\n );\n\n return (\n <Map\n ref={mapRefWrapper}\n reuseMaps\n mapboxAccessToken={process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}\n mapStyle={`mapbox://styles/hortplus/${mapStyle}`}\n initialViewState={viewport}\n onViewportChange={(nextViewport) => setViewport(nextViewport)}\n attributionControl={false}\n interactiveLayerIds={[\n 'layerStyleHasReportsFill',\n 'layerStyleNoReportsFill',\n 'layerStyleHasReportsLine',\n 'layerStyleNoReportsLine',\n 'layerStyleSelectedHasReportsFill',\n 'layerStyleSelectedHasReportsLine',\n 'layerStyleSelectedNoReportsFill',\n 'layerStyleSelectedNoReportsLine'\n ]}\n onClick={(e) => {\n const hoveredFeature = e.features && e.features[0];\n onClick(hoveredFeature);\n }}\n >\n <div\n className='m-3'\n style={{\n position: 'absolute',\n top: 0,\n right: 0\n }}\n >\n <Button\n variant='light'\n onClick={() => fitBounds(mapRef.current)}\n className='float-right'\n >\n Reset\n </Button>\n </div>\n <Source id='blocks' type='geojson' data={data}>\n {layers.map((layer) => (\n <Layer key={layer.id} {...layer} />\n ))}\n </Source>\n <PreviewButton\n setMapStyle={setMapStyle}\n mapStyle={mapStyle}\n viewport={viewport}\n />\n </Map>\n );\n};\n\nBlocksMap.propTypes = {\n features: PropTypes.array.isRequired,\n selectedBlock: PropTypes.string,\n onClick: PropTypes.func.isRequired\n};\n\nexport default BlocksMap;\n\n","import { Button, Col, Row } from 'react-bootstrap';\nimport PageTitle from '../helpers/PageTitle';\n\nconst GAPageTitle = ({ hasUrls }) => {\n if (!hasUrls) {\n return <PageTitle title={'Block Scanning Reports'} />;\n }\n\n const link =\n 'https://www.youtube.com/playlist?list=PLW2Of1hBVwfzXQkpnIKrqaVP5APSbyWJE';\n\n return (\n <Row>\n <Col\n xs={0}\n sm={0}\n md={2}\n className='d-flex justify-content-start pr-0'\n style={{ visibility: 'hidden' }}\n >\n <Button size='sm'>Need Help?</Button>\n </Col>\n <Col className='p-0'>\n <PageTitle title={'Block Scanning Reports'} />\n </Col>\n <Col xs={3} sm={3} md={2} className='d-flex justify-content-end pl-0'>\n <Button size='sm' variant='secondary' href={link} target='_blank'>\n Need Help?\n </Button>\n </Col>\n </Row>\n );\n};\n\nexport default GAPageTitle;\n\n","export const scanTypes = [\n {\n value: 'CR',\n label: 'Crop'\n },\n {\n value: 'CN',\n label: 'Canopy'\n }\n];\n\nexport const stages = [\n {\n value: 'DB',\n label: 'Dormant buds'\n },\n {\n value: 'FB',\n label: 'Flower buds'\n },\n {\n value: 'FC',\n label: 'Flower clusters'\n },\n {\n value: 'FL',\n label: 'Fruitlets'\n },\n {\n value: 'FT',\n label: 'Fruit'\n },\n {\n value: 'IF',\n label: 'Inflorescence'\n },\n {\n value: 'BE',\n label: 'Berries'\n },\n {\n value: 'BL',\n label: 'Bloom'\n },\n {\n value: 'SH',\n label: 'Shoot'\n }\n];\n\nexport const reportTypes = [\n {\n value: 'TFX',\n label: 'Total Count'\n },\n {\n value: 'UFX',\n label: 'Upper Count'\n },\n {\n value: 'LFX',\n label: 'Lower Count'\n },\n {\n value: 'TFE',\n label: 'Total Count - Crop Estimate'\n },\n {\n value: 'UFE',\n label: 'Upper Count - Crop Estimate'\n },\n {\n value: 'LFE',\n label: 'Lower Count - Crop Estimate'\n },\n {\n value: 'CHX',\n label: 'Canopy Height'\n },\n {\n value: 'CAX',\n label: 'Canopy Area'\n },\n {\n value: 'CDX',\n label: 'Canopy Density'\n },\n {\n value: 'PLF',\n label: 'Prescription - Liquid Fertiliser'\n },\n {\n value: 'PDF',\n label: 'Prescription - Dry Fertiliser'\n },\n {\n value: 'PVM',\n label: 'Prescription - Vigour Management'\n },\n {\n value: 'PCV',\n label: 'Prescription - Canopy Volume'\n },\n {\n value: 'PCT',\n label: 'Prescription - Chemical Thinning'\n },\n {\n value: 'LAX',\n label: 'Leaf Area'\n },\n {\n value: 'FSX',\n label: 'Fruit Size'\n }\n];\n\nexport const pdfTypes = [\n {\n value: 'AGR',\n label: 'Agronomic'\n },\n {\n value: 'GEO',\n label: 'Geo pdf'\n }\n];\n\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"placement\", \"className\", \"style\", \"children\", \"arrowProps\", \"popper\", \"show\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n placement: 'right'\n};\nvar Tooltip = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n placement = _ref.placement,\n className = _ref.className,\n style = _ref.style,\n children = _ref.children,\n arrowProps = _ref.arrowProps,\n _ = _ref.popper,\n _2 = _ref.show,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'tooltip');\n\n var _ref2 = (placement == null ? void 0 : placement.split('-')) || [],\n primaryPlacement = _ref2[0];\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n style: style,\n role: \"tooltip\",\n \"x-placement\": primaryPlacement,\n className: classNames(className, bsPrefix, \"bs-tooltip-\" + primaryPlacement)\n }, props), /*#__PURE__*/React.createElement(\"div\", _extends({\n className: \"arrow\"\n }, arrowProps)), /*#__PURE__*/React.createElement(\"div\", {\n className: bsPrefix + \"-inner\"\n }, children));\n});\nTooltip.defaultProps = defaultProps;\nTooltip.displayName = 'Tooltip';\nexport default Tooltip;","import {\n faDownload,\n faSort,\n faSortDown,\n faSortUp\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport { useMemo, useState } from 'react';\nimport {\n Button,\n OverlayTrigger,\n Spinner,\n Table,\n Tooltip\n} from 'react-bootstrap';\nimport {\n useGlobalFilter,\n usePagination,\n useSortBy,\n useTable\n} from 'react-table';\nimport { useDownloadScanningReport } from '../helpers/hooks/useDownloadScanningReport';\nimport TablePagination from '../helpers/TablePagination';\n\nconst ReportTable = ({ reports }) => {\n // Keeps track the the report being downloaded. If all reports are being downloaded,\n // the state value is set to 'all'. If no reports are being downloaded then null.\n const [downloading, setDownloading] = useState(null);\n\n const downloadReport = useDownloadScanningReport();\n\n const columns = useMemo(\n () => [\n {\n Header: 'Date',\n accessor: 'dt',\n Cell: ({ value }) => {\n return moment(value).format('YYYY-MM-DD');\n }\n },\n {\n Header: 'Block Code',\n accessor: 'blockCode'\n },\n {\n Header: 'Scan Type',\n accessor: 'scanType'\n },\n {\n Header: 'Stage',\n accessor: 'stage'\n },\n {\n Header: 'Report Type',\n accessor: 'reportType'\n },\n {\n Header: 'PDF Type',\n accessor: 'pdfType'\n },\n {\n id: 'download',\n sortable: false,\n Header: ({ page }) => (\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>Download all reports from this table.</Tooltip>}\n >\n <Button\n onClick={async () => {\n setDownloading('all');\n await Promise.all(\n page.map((row) => {\n return downloadReport(row.original);\n })\n );\n setDownloading(null);\n }}\n variant='link'\n disabled={reports.length === 0}\n >\n {downloading === 'all' ? (\n <Spinner\n animation='border'\n variant='primary'\n size='sm'\n style={{ marginLeft: '2px', marginRight: '3px' }}\n />\n ) : (\n <FontAwesomeIcon icon={faDownload} size='lg' />\n )}\n </Button>\n </OverlayTrigger>\n ),\n Cell: ({ row }) => (\n <Button\n onClick={async () => {\n setDownloading(row.original.key);\n await downloadReport(row.original);\n setDownloading(null);\n }}\n variant='link'\n className='text-dark'\n >\n {downloading === row.original.key ? (\n <Spinner\n animation='border'\n variant='primary'\n size='sm'\n style={{ marginLeft: '2px', marginRight: '3px' }}\n />\n ) : (\n <FontAwesomeIcon icon={faDownload} size='sm' />\n )}\n </Button>\n )\n }\n ],\n [downloadReport, downloading, reports.length]\n );\n\n const initialState = {\n sortBy: [{ id: 'dt', desc: true }]\n };\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n prepareRow,\n page,\n canPreviousPage,\n canNextPage,\n pageOptions,\n pageCount,\n gotoPage,\n nextPage,\n previousPage,\n setPageSize,\n state: { pageIndex, pageSize }\n } = useTable(\n {\n columns,\n data: reports,\n initialState\n },\n useGlobalFilter,\n useSortBy,\n usePagination\n );\n\n return (\n <div>\n <Table responsive {...getTableProps()}>\n <thead>\n {headerGroups.map((headerGroup) => (\n <tr {...headerGroup.getHeaderGroupProps()}>\n {headerGroup.headers.map((column) => (\n <th {...column.getHeaderProps(column.getSortByToggleProps())}>\n {column.render('Header')}\n {column.canSort ? (\n <span className='px-2'>\n {column.isSorted ? (\n column.isSortedDesc ? (\n <FontAwesomeIcon icon={faSortDown} />\n ) : (\n <FontAwesomeIcon icon={faSortUp} />\n )\n ) : (\n <FontAwesomeIcon icon={faSort} />\n )}\n </span>\n ) : null}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody {...getTableBodyProps()}>\n {page.map((row) => {\n prepareRow(row);\n return (\n <tr\n {...row.getRowProps()}\n className={\n row.original.pdfType === 'Geo pdf' ? 'text-info' : ''\n }\n >\n {row.cells.map((cell) => {\n return (\n <td {...cell.getCellProps()}>{cell.render('Cell')}</td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </Table>\n <TablePagination\n pageCount={pageCount}\n pageIndex={pageIndex}\n pageOptions={pageOptions}\n pageSize={pageSize}\n gotoPage={gotoPage}\n canPreviousPage={canPreviousPage}\n previousPage={previousPage}\n canNextPage={canNextPage}\n nextPage={nextPage}\n setPageSize={setPageSize}\n />\n </div>\n );\n};\n\nReportTable.propTypes = {\n reports: PropTypes.array.isRequired,\n blockName: PropTypes.string\n};\n\nexport default observer(ReportTable);\n\n","import { saveAs } from 'file-saver';\nimport moment from 'moment';\nimport { useCallback, useContext } from 'react';\nimport { storesContext } from '../../../stores/storesContext';\nimport { errorToast } from '../toasts/ToastUtils';\n\nexport const useDownloadScanningReport = () => {\n const userStore = useContext(storesContext);\n const propertiesStore = userStore.propertiesStore;\n\n const bearerToken = userStore.bearerToken;\n const selectedDatabase = userStore.selectedDatabase;\n const propertyIdentifier = propertiesStore.selectedProperty.identifier;\n const propertyName = propertiesStore.selectedProperty.name;\n\n const downloadReport = useCallback(\n async (report) => {\n try {\n const url = `${process.env.REACT_APP_PROPERTIES_API_URL}api/fruition/crop-scanning/reports/${report.key}`;\n const response = await fetch(url, {\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n Accept: 'application/pdf',\n seasonalDatabase: selectedDatabase\n }\n });\n if (!response.ok) {\n const status = response.status;\n if (status === 404) {\n errorToast('Report not found.', 'download-report-error');\n } else {\n errorToast('Failed to download report.', 'download-report-error');\n }\n return;\n }\n const blob = await response.blob();\n let fileName = `${moment(report.dt).format(\n 'YYYYMMDD'\n )}-${propertyIdentifier}-${propertyName}-${report.blockCode}-${\n report.scanType\n }-${report.stage}-${report.reportType}-${report.pdfType}`;\n // Remove '.' from the file name to ensure the file type is set to 'pdf'.\n fileName = fileName.replace('.', '');\n // Save file.\n saveAs(blob, fileName);\n } catch (err) {\n console.error(err);\n errorToast('Failed to download report.', 'download-report-error');\n }\n },\n [bearerToken, propertyIdentifier, propertyName, selectedDatabase]\n );\n\n return downloadReport;\n};\n\n","import { observer } from 'mobx-react';\nimport moment from 'moment';\nimport { PropTypes } from 'prop-types';\nimport { useContext, useEffect, useMemo, useState } from 'react';\nimport { Col, Row, Spinner } from 'react-bootstrap';\nimport URI from 'urijs';\nimport { storesContext } from '../../stores/storesContext';\nimport {\n pdfTypes,\n reportTypes,\n scanTypes,\n stages\n} from '../crop_scanning/CropScanningUtils';\nimport { errorToast } from '../helpers/toasts/ToastUtils';\nimport ReportTable from './ReportTable';\n\nconst ReportTables = ({\n blocks,\n selectedBlock,\n reportsState,\n reportTypeReports,\n selectedBlockReports,\n season,\n seasonStart\n}) => {\n const userStore = useContext(storesContext);\n const propertiesStore = userStore.propertiesStore;\n const [, setReports] = reportsState;\n const [loadingReports, setLoadingReports] = useState(false);\n\n // Fetch reports for the selected property and season.\n useEffect(() => {\n let mounted = true;\n const fetchReports = async (propertyId) => {\n if (mounted) setLoadingReports(true);\n const url = new URI(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/fruition/crop-scanning/reports`\n );\n url.addQuery('property_id', propertyId);\n url.addQuery('season', season);\n url.addQuery('historic', 1);\n const response = await fetch(url.valueOf(), {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${userStore.bearerToken}`,\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n SeasonalDatabase: userStore.selectedDatabase\n }\n });\n if (!response.ok) {\n errorToast('Error fetching reports', 'reports-fetch-error');\n return;\n }\n const data = await response.json();\n if (!('Objects' in data)) return;\n if (mounted) {\n const reports = data.Objects.map((report) => {\n const parts = report['Key'].split('_');\n const dt = moment(parts[7], 'YYYYMMDD');\n const blockCode = parts[2];\n const scanType = scanTypes.find((s) => s.value === parts[3]);\n const stage = stages.find((s) => s.value === parts[4]);\n const reportType = reportTypes.find((r) => r.value === parts[5]);\n const pdfType = pdfTypes.find((p) => p.value === parts[6]);\n return {\n key: report['Key'],\n dt: dt.valueOf(),\n blockCode,\n scanType: scanType?.label ?? null,\n stage: stage?.label ?? null,\n reportType: reportType?.label ?? null,\n pdfType: pdfType?.label ?? null\n };\n });\n const sortedReports = reports.sort((a, b) =>\n a.blockCode > b.blockCode ? 1 : b.blockCode > a.blockCode ? -1 : 0\n );\n setReports(sortedReports);\n setLoadingReports(false);\n }\n };\n const selectedProperty = propertiesStore.selectedProperty;\n if (!selectedProperty) return;\n fetchReports(selectedProperty.id);\n return () => {\n mounted = false;\n };\n }, [\n propertiesStore.selectedProperty,\n season,\n setReports,\n userStore.bearerToken,\n userStore.selectedDatabase\n ]);\n\n // Historic reports for the selected block.\n const selectedBlockHistoricReports = useMemo(\n () =>\n reportTypeReports.filter((report) => {\n if (!(selectedBlock in blocks)) return false;\n const partBlocks = blocks[selectedBlock];\n const isSelected = report.blockCode === selectedBlock;\n const isPartBlock = partBlocks.includes(report.blockCode);\n // Filter by season.\n const date = moment(report.dt);\n if (date.isAfter(seasonStart)) return false;\n return isSelected || isPartBlock;\n }),\n [blocks, reportTypeReports, seasonStart, selectedBlock]\n );\n // Filter reports checking that the report matches a block and it's part-blocks.\n // Also, filter by whether the report appears in 'selectedBlockReports'.\n const unmatchedReports = useMemo(\n () =>\n reportTypeReports.filter((report) => {\n if (!(selectedBlock in blocks)) return false;\n const isBlock = Object.keys(blocks).includes(report.blockCode);\n let isPartBlock = false;\n let isSelectedBlockReport = false;\n Object.keys(blocks).forEach((key) => {\n const partBlocks = blocks[key];\n isPartBlock = partBlocks.includes(report.blockCode);\n isSelectedBlockReport = selectedBlockReports.find((sbr) => {\n const sbrBlockCode = sbr.blockCode;\n return sbrBlockCode === key || sbrBlockCode === report.blockCode;\n });\n });\n if (isBlock || isPartBlock || isSelectedBlockReport) return false;\n return true;\n }),\n [blocks, reportTypeReports, selectedBlock, selectedBlockReports]\n );\n\n return (\n <>\n <Row className='mt-2'>\n <Col className='text-center'>\n <h4>Current Season Reports</h4>\n </Col>\n </Row>\n <Row className='my-2'>\n <Col>\n {loadingReports ? (\n <Spinner className='my-4' animation='border' variant='primary' />\n ) : (\n <ReportTable reports={selectedBlockReports} />\n )}\n </Col>\n </Row>\n <Row className='mt-2'>\n <Col className='text-center'>\n <h4>Historic Reports</h4>\n </Col>\n </Row>\n <Row className='my-2'>\n <Col>\n {loadingReports ? (\n <Spinner className='my-4' animation='border' variant='primary' />\n ) : (\n <ReportTable reports={selectedBlockHistoricReports} />\n )}\n </Col>\n </Row>\n <Row className='my-2'>\n <Col className='text-center'>\n <h4>Unmatched Reports</h4>\n </Col>\n </Row>\n <Row>\n <Col>\n {loadingReports ? (\n <Spinner className='my-4' animation='border' variant='primary' />\n ) : (\n <ReportTable reports={unmatchedReports} />\n )}\n </Col>\n </Row>\n </>\n );\n};\n\nReportTables.propTypes = {\n blocks: PropTypes.object.isRequired,\n selectedBlock: PropTypes.string,\n reportsState: PropTypes.array,\n reportTypeReports: PropTypes.array.isRequired,\n selectedBlockReports: PropTypes.array.isRequired,\n season: PropTypes.string.isRequired,\n seasonStart: PropTypes.object.isRequired\n};\n\nexport default observer(ReportTables);\n\n","import { PropTypes } from 'prop-types';\nimport Select from 'react-select';\nimport { stages } from '../crop_scanning/CropScanningUtils';\n\nexport const defaultReportTypeOption = {\n label: 'All Reports',\n value: 'all'\n};\n\nexport const getReportTypeName = (reportTypeOption) => {\n return reportTypeOption ? reportTypeOption.label : '';\n};\n\nconst ReportTypeSelect = ({ reportType, onChange }) => {\n const extendedStages = [defaultReportTypeOption, ...stages];\n\n return (\n <Select value={reportType} onChange={onChange} options={extendedStages} />\n );\n};\n\nReportTypeSelect.propTypes = {\n reportType: PropTypes.object,\n onChange: PropTypes.func.isRequired\n};\n\nexport default ReportTypeSelect;\n\n","import { GlobalPropertiesSelect } from '@hortplus/properties-react';\nimport isMobile from 'ismobilejs';\nimport { observer } from 'mobx-react';\nimport moment from 'moment/moment';\nimport { useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { Button, Col, Row, Spinner } from 'react-bootstrap';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport URI from 'urijs';\nimport { storesContext } from '../../stores/storesContext';\nimport {\n GreenAtlasUrlButtons,\n useGreenAtlasUrls\n} from '../crop_scanning/GreenAtlasUrls';\nimport { errorToast, warningToast } from '../helpers/toasts/ToastUtils';\nimport BlocksMap from './BlocksMap';\nimport GAPageTitle from './GAPageTitle';\nimport ReportTables from './ReportTables';\nimport ReportTypeSelect, {\n defaultReportTypeOption,\n getReportTypeName\n} from './ReportTypeSelect';\n\nconst BlockScanningReportsPage = () => {\n const userStore = useContext(storesContext);\n const propertiesStore = userStore.propertiesStore;\n const history = useHistory();\n const location = useLocation();\n const [reportType, setReportType] = useState(defaultReportTypeOption);\n const [blocks, setBlocks] = useState([]);\n const [selectedBlock, setSelectedBlock] = useState(() => {\n const searchParams = new URLSearchParams(location.search);\n return searchParams.get('block') || '';\n });\n const reportsState = useState([]);\n const [loadingClusters, setLoadingClusters] = useState(false);\n const [reports] = reportsState;\n\n const selectedDatabase = userStore.selectedDatabase;\n const bearerToken = userStore.bearerToken;\n\n const { gaUrls, loadingGaUrls } = useGreenAtlasUrls(\n propertiesStore.selectedProperty?.identifier,\n selectedDatabase,\n bearerToken\n );\n\n useEffect(() => {\n const searchParams = new URLSearchParams(location.search);\n const blockParam = searchParams.get('block');\n if (selectedBlock !== blockParam) {\n setSelectedBlock(blockParam);\n }\n }, [location.search, selectedBlock]);\n\n // Create an object that maps block names to an array of\n // part block names sorted alphabetically.\n const blocksPartBlocksNames = useMemo(() => {\n const blocksPartBlocksNames = {};\n blocks.forEach((block) => {\n const partBlocks = [];\n const primaryBlockid = block.primary_block_id;\n const blockFeature = JSON.parse(block.primary_ga_block.geojson_feature);\n block.ga_blocks.forEach((partBlock) => {\n const partBlockId = partBlock.id;\n if (primaryBlockid === partBlockId) return;\n const partBlockFeature = JSON.parse(partBlock.geojson_feature);\n partBlocks.push(partBlockFeature.properties.details?.block || '');\n });\n blocksPartBlocksNames[blockFeature.properties.details?.block || ''] =\n partBlocks;\n });\n // Sort object by key values.\n const sortedObject = Object.fromEntries(\n Object.entries(blocksPartBlocksNames).sort(([a], [b]) =>\n a.localeCompare(b)\n )\n );\n return sortedObject;\n }, [blocks]);\n\n // Primary block names.\n const blockNames = useMemo(\n () => Object.keys(blocksPartBlocksNames),\n [blocksPartBlocksNames]\n );\n\n const handleSetSelectedBlock = useCallback(\n (name) => {\n setSelectedBlock(name);\n const searchParams = new URLSearchParams(location.search);\n if (searchParams.get('block') === name) return;\n searchParams.set('block', name);\n history.push({\n pathname: location.pathname,\n search: searchParams.toString()\n });\n },\n [history, location.pathname, location.search]\n );\n\n const handleRemoveSelectedBlock = useCallback(() => {\n setSelectedBlock('');\n history.push({\n pathname: location.pathname,\n search: ''\n });\n }, [history, location.pathname]);\n\n // Select the first block initially.\n useEffect(() => {\n if (\n blockNames.length > 0 &&\n (selectedBlock === '' || !blockNames.includes(selectedBlock))\n ) {\n handleSetSelectedBlock(blockNames[0]);\n }\n }, [blockNames, handleSetSelectedBlock, selectedBlock]);\n\n // Fetch the selected propertie's block clusters.\n useEffect(() => {\n let mounted = true;\n const fetchBlockClusters = async (propertyId) => {\n if (mounted) setLoadingClusters(true);\n const url = new URI(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/fruition/blocks/property/${propertyId}`\n );\n const response = await fetch(url.valueOf(), {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n SeasonalDatabase: selectedDatabase\n }\n });\n if (!response.ok) {\n errorToast('Error fetching blocks', 'blocks-fetch-error');\n return;\n }\n const data = await response.json();\n if (mounted) {\n setBlocks(data);\n if (data.length === 0) {\n handleRemoveSelectedBlock();\n warningToast('Selected property has no blocks.', 'no-blocks-warning');\n }\n setLoadingClusters(false);\n }\n };\n const selectedProperty = propertiesStore.selectedProperty;\n if (!selectedProperty) return;\n fetchBlockClusters(selectedProperty.id);\n return () => {\n mounted = false;\n };\n }, [\n propertiesStore.selectedProperty,\n bearerToken,\n selectedDatabase,\n handleRemoveSelectedBlock\n ]);\n\n const season = useMemo(\n () =>\n userStore.selectedDatabase ? userStore.selectedDatabase.substr(9) : null,\n [userStore.selectedDatabase]\n );\n // Season start and stop copied from the Properties API.\n const seasonStart = useMemo(\n () => moment({ year: season - 1, month: 6, day: 1 }),\n [season]\n );\n const seasonStop = useMemo(\n () => moment({ year: season, month: 5, day: 31 }),\n [season]\n );\n // Filter reports by report type.\n const reportTypeReports = useMemo(\n () =>\n reports.filter(\n (report) =>\n reportType.value === 'all' ||\n report.stage === getReportTypeName(reportType)\n ),\n [reportType, reports]\n );\n\n /**\n * Filters reports by selected block and it's part blocks.\n * @param {string} blockName The selected block name.\n * @returns {Array} The selected block reports.\n */\n const selectedBlockReports = useCallback(\n (blockName) =>\n reportTypeReports.filter((report) => {\n if (!(blockName in blocksPartBlocksNames)) return false;\n const partBlocks = blocksPartBlocksNames[blockName];\n const isSelected = report.blockCode === blockName;\n const isPartBlock = partBlocks.includes(report.blockCode);\n // Filter by season.\n const date = moment(report.dt);\n if (date.isBefore(seasonStart) || date.isAfter(seasonStop))\n return false;\n return isSelected || isPartBlock;\n }),\n [blocksPartBlocksNames, reportTypeReports, seasonStart, seasonStop]\n );\n\n // Primary block GeoJson features.\n const blockFeatures = useMemo(\n () =>\n blocks.map((block) => {\n const feature = JSON.parse(block.primary_ga_block.geojson_feature);\n feature.properties.block_name = feature.properties.details?.block || '';\n feature.properties.has_reports =\n selectedBlockReports(feature.properties.block_name).length > 0;\n return feature;\n }),\n [blocks, selectedBlockReports]\n );\n\n return (\n <div id='page-container' className='mb-4'>\n <Row>\n <Col>\n <GAPageTitle hasUrls={gaUrls.length > 0} />\n </Col>\n </Row>\n <Row>\n <Col>\n <GreenAtlasUrlButtons urls={gaUrls} isLoading={loadingGaUrls} />\n </Col>\n </Row>\n <Row className='mt-4'>\n <Col>\n {isMobile(window.navigator).any ? (\n <Row>\n <Col\n xs={3}\n className='d-flex align-items-center justify-content-end pr-0 font-weight-bold'\n >\n Property:\n </Col>\n <Col xs={9}>\n <GlobalPropertiesSelect\n selectedDatabase={selectedDatabase}\n bearerToken={bearerToken}\n refreshBearerToken={userStore.refreshBearerToken}\n propertiesStore={propertiesStore}\n />\n </Col>\n <Col\n xs={0}\n className='d-flex align-items-center justify-content-end pl-0 font-weight-bold'\n style={{ visibility: 'hidden' }}\n >\n Property:\n </Col>\n </Row>\n ) : null}\n <Row>\n <Col xs={0} lg={2} />\n <Col>\n <Row>\n <Col\n xs={3}\n sm={2}\n className='d-flex align-items-center justify-content-end pr-0 font-weight-bold'\n >\n Stage:\n </Col>\n <Col xs={9} sm={8}>\n <ReportTypeSelect\n reportType={reportType}\n onChange={setReportType}\n />\n </Col>\n <Col\n xs={0}\n sm={2}\n className='d-flex align-items-center justify-content-end pl-0 font-weight-bold'\n style={{ visibility: 'hidden' }}\n >\n Stage:\n </Col>\n </Row>\n </Col>\n <Col xs={0} lg={2} />\n </Row>\n </Col>\n </Row>\n\n <Row className='mt-4' style={{ height: '400px' }}>\n <Col>\n <BlocksMap\n features={blockFeatures}\n selectedBlock={selectedBlock}\n onClick={(feature) => {\n if (!feature?.properties?.details) return;\n const details = JSON.parse(feature.properties.details);\n if (!details?.block) return;\n handleSetSelectedBlock(details.block);\n }}\n />\n </Col>\n </Row>\n <Row>\n <Col className='text-center'>\n {loadingClusters ? (\n <Spinner className='mt-2' animation='border' variant='success' />\n ) : (\n Object.keys(blocksPartBlocksNames).map((name, i) => {\n const variant =\n name === selectedBlock\n ? selectedBlockReports(name).length > 0\n ? 'success'\n : 'secondary'\n : selectedBlockReports(name).length > 0\n ? 'outline-success'\n : 'outline-secondary';\n return (\n <Button\n key={name + i}\n className='mt-2 mr-1 px-3'\n variant={variant}\n onClick={() => {\n handleSetSelectedBlock(name);\n }}\n >\n {name}\n </Button>\n );\n })\n )}\n </Col>\n </Row>\n {propertiesStore.selectedProperty && reportType ? (\n <Row className='mt-4 text-center'>\n <Col>\n <ReportTables\n blocks={blocksPartBlocksNames}\n selectedBlock={selectedBlock}\n reportsState={reportsState}\n reportTypeReports={reportTypeReports}\n selectedBlockReports={selectedBlockReports(selectedBlock)}\n season={season}\n seasonStart={seasonStart}\n />\n </Col>\n </Row>\n ) : null}\n </div>\n );\n};\n\nexport default observer(BlockScanningReportsPage);\n\n","import { faFile, faTimes } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport PropTypes from 'prop-types';\nimport { Button, Col, Row } from 'react-bootstrap';\n\nconst Files = ({ files, isProcessing, handleFileRemove }) => {\n /**\n * Formats the file size in bytes to a more readable format.\n * @param {number} bytes - The file size in bytes.\n * @returns {string} The formatted file size.\n */\n const formatBytes = (bytes) => {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n };\n\n return (\n <>\n {files.length === 0 ? (\n <Col className='mt-2 text-center text-muted'>No files uploaded</Col>\n ) : (\n <Col>\n {files.map((file) => {\n return (\n <Row\n key={file.name}\n className='border border-primary rounded px-1 py-2 mb-1'\n xs={11}\n >\n <Col>\n <Row>\n <Col\n xs={1}\n style={{\n display: 'flex',\n justifyContent: 'left',\n alignItems: 'center'\n }}\n >\n <FontAwesomeIcon icon={faFile} size='2x' />\n </Col>\n <Col>\n <Row>\n <Col className='font-weight-bold'>{file.name}</Col>\n </Row>\n <Row>\n <Col className='text-muted'>\n {formatBytes(file.size)}\n </Col>\n </Row>\n </Col>\n </Row>\n </Col>\n <Col\n style={{ display: 'flex', justifyContent: 'right' }}\n className='p-0'\n xs={1}\n >\n <Button\n style={{ backgroundColor: 'white', borderColor: 'white' }}\n variant='light'\n onClick={() => {\n handleFileRemove(file.name);\n }}\n disabled={isProcessing}\n >\n <FontAwesomeIcon as={'button'} icon={faTimes} size='lg' />\n </Button>\n </Col>\n </Row>\n );\n })}\n </Col>\n )}\n </>\n );\n};\n\nFiles.propTypes = {\n files: PropTypes.array.isRequired,\n isProcessing: PropTypes.bool.isRequired,\n handleFileRemove: PropTypes.func.isRequired\n};\n\nexport default Files;\n\n","import React from 'react';\nimport { Button, ButtonGroup } from 'react-bootstrap';\n\nexport const monoStyle = 'cklubq40e06ej17ojtb4pg2o1';\nexport const satelliteStyle = 'cknpikbkn0jut17nwxfi4mbh8';\n\nconst PreviewButton = (props) => {\n const newStyle =\n props.mapStyle === satelliteStyle ? monoStyle : satelliteStyle;\n return (\n <div\n className='m-3'\n style={{\n position: 'absolute',\n bottom: 0,\n right: 0\n }}\n >\n <ButtonGroup>\n <Button\n onClick={() => props.setMapStyle(monoStyle)}\n variant={props.mapStyle === monoStyle ? 'secondary' : 'light'}\n >\n Map View\n </Button>\n <Button\n onClick={() => props.setMapStyle(satelliteStyle)}\n variant={props.mapStyle === satelliteStyle ? 'secondary' : 'light'}\n >\n Satellite View\n </Button>\n </ButtonGroup>\n </div>\n );\n};\n\nexport default PreviewButton;\n","import bbox from '@turf/bbox';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Button, Col, Modal, Row } from 'react-bootstrap';\nimport { Layer, Map, Source } from 'react-map-gl-7';\nimport PreviewButton, { monoStyle } from '../../helpers/PreviewButton';\n\nconst PolygonMap = ({ polygon }) => {\n const initialViewPort = {\n latitude: -41,\n longitude: 174.5,\n zoom: 4,\n height: 400,\n width: '100%'\n };\n const [viewport, setViewport] = useState(initialViewPort);\n const [initialBoundsSet, setInitialBoundsSet] = useState(false);\n const [mapStyle, setMapStyle] = useState(monoStyle);\n const mapRef = useRef();\n\n const layers = [\n {\n id: 'layerStyleFill',\n type: 'fill',\n paint: {\n 'fill-color': 'green',\n 'fill-opacity': 0.3\n }\n },\n {\n id: 'layerStyleLine',\n type: 'line',\n paint: {\n 'line-color': 'green',\n 'line-width': 2\n }\n }\n ];\n\n const data = useMemo(() => {\n const geojson = {\n type: 'FeatureCollection',\n features: [polygon]\n };\n return geojson;\n }, [polygon]);\n\n const fitBounds = useCallback(\n (map) => {\n const features = data.features;\n if (features && features.length > 0) {\n let minLng;\n let minLat;\n let maxLng;\n let maxLat;\n data.features.forEach((feature) => {\n const [newMinLng, newMinLat, newMaxLng, newMaxLat] = bbox(feature);\n if (minLng === undefined || newMinLng < minLng) minLng = newMinLng;\n if (maxLng === undefined || newMaxLng > maxLng) maxLng = newMaxLng;\n if (minLat === undefined || newMinLat < minLat) minLat = newMinLat;\n if (maxLat === undefined || newMaxLat > maxLat) maxLat = newMaxLat;\n });\n map.fitBounds(\n [\n [minLng, minLat],\n [maxLng, maxLat]\n ],\n { padding: 65, duration: 500 }\n );\n } else {\n const distance = viewport.zoom + 1;\n const bounds = [\n [viewport.longitude - distance, viewport.latitude - distance],\n [viewport.longitude + distance, viewport.latitude + distance]\n ];\n map.fitBounds(bounds, { padding: 50, duration: 500 });\n }\n },\n [data.features, viewport.latitude, viewport.longitude, viewport.zoom]\n );\n\n useEffect(() => {\n if (mapRef.current && data) {\n fitBounds(mapRef.current);\n setInitialBoundsSet(true);\n }\n }, [fitBounds, data]);\n\n const mapRefWrapper = useCallback(\n (node) => {\n if (node) {\n if (data && !initialBoundsSet) {\n fitBounds(node);\n setInitialBoundsSet(true);\n }\n }\n mapRef.current = node;\n },\n [data, fitBounds, initialBoundsSet]\n );\n\n return (\n <Map\n ref={mapRefWrapper}\n reuseMaps\n mapboxAccessToken={process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}\n mapStyle={`mapbox://styles/hortplus/${mapStyle}`}\n initialViewState={viewport}\n onViewportChange={(nextViewport) => setViewport(nextViewport)}\n attributionControl={false}\n >\n <div\n className='m-3'\n style={{\n position: 'absolute',\n top: 0,\n right: 0\n }}\n >\n <Button\n variant='light'\n onClick={() => fitBounds(mapRef.current)}\n className='float-right'\n >\n Reset\n </Button>\n </div>\n <Source id='blocks' type='geojson' data={data}>\n {layers.map((layer) => (\n <Layer key={layer.id} {...layer} />\n ))}\n </Source>\n <PreviewButton\n setMapStyle={setMapStyle}\n mapStyle={mapStyle}\n viewport={viewport}\n />\n </Map>\n );\n};\n\nconst ViewPolygonModal = ({ polygon, propertyName }) => {\n const [show, setShow] = useState(false);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n return (\n <>\n <Button variant='outline-secondary' size='sm' onClick={handleShow}>\n View Polygon\n </Button>\n <Modal show={show} onHide={handleClose}>\n <Modal.Header closeButton>\n <Modal.Title>{propertyName}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Row>\n <Col style={{ height: '400px' }}>\n <PolygonMap polygon={polygon} />\n </Col>\n </Row>\n </Modal.Body>\n </Modal>\n </>\n );\n};\n\nexport default ViewPolygonModal;\n\n","import { useMemo } from 'react';\nimport { Alert, Button, Col, Row } from 'react-bootstrap';\nimport ViewPolygonModal from './ViewPolygonModal';\n\nconst UnmatchedPolygons = ({ unmatchedPolygons }) => {\n const polygons = useMemo(\n () =>\n unmatchedPolygons.sort((a, b) => {\n const metadataA = JSON.parse(a.primary_ga_block.metadata);\n const identifierA = metadataA?.details?.client;\n const metadataB = JSON.parse(b.primary_ga_block.metadata);\n const identifierB = metadataB?.details?.client;\n if (identifierA < identifierB) {\n return -1;\n }\n if (identifierA > identifierB) {\n return 1;\n }\n return 0;\n }),\n [unmatchedPolygons]\n );\n\n const propertiesToAdd = useMemo(\n () =>\n polygons.reduce((prev, curr, index, array) => {\n if (index === 0) return 0;\n const prevMetadata = JSON.parse(\n array[index - 1].primary_ga_block.metadata\n );\n const currMetadata = JSON.parse(curr.primary_ga_block.metadata);\n const prevIdentifier = prevMetadata?.details?.client;\n const currIdentifier = currMetadata?.details?.client;\n if (prevIdentifier !== currIdentifier) {\n return prev + 1;\n } else {\n return prev;\n }\n }, 0),\n [polygons]\n );\n\n return (\n <>\n <Alert variant='warning'>\n <Row>\n <Col>\n <h5>Unmatched Polygons Found</h5>\n </Col>\n </Row>\n <Row>\n <Col>\n <p>\n Some polygons could not be matched to a property. You can view the\n polygons that could not be matched, and create the property for\n that polygon by clicking the 'Create Property' button.\n </p>\n <p className='mb-0'>\n There are <b>{propertiesToAdd}</b> properties to add.\n </p>\n </Col>\n </Row>\n </Alert>\n <Row className='mx-0 mt-1'>\n <Col>\n {polygons.map((cluster) => {\n const metadata = JSON.parse(cluster.primary_ga_block.metadata);\n const name = metadata?.details?.orchard;\n const identifier = metadata?.details?.client;\n const displayName = `${name} (${identifier})`;\n const geom = cluster.primary_ga_block.geom;\n const polygonGeojson = {\n type: 'Feature',\n geometry: geom,\n properties: metadata\n };\n return (\n <Row\n key={cluster.id}\n className='border border-secondary rounded mb-1 px-1 py-2'\n >\n <Col\n xs={12}\n sm={9}\n className='d-flex align-items-center font-weight-bold px-0 pl-2 py-1'\n >\n <div className='mr-3'>{displayName}</div>\n <ViewPolygonModal\n polygon={polygonGeojson}\n propertyName={displayName}\n />\n </Col>\n <Col\n xs={12}\n sm={3}\n className='d-flex align-items-center justify-content-end px-0 pr-2'\n >\n <Button\n as='a'\n variant='primary'\n size='sm'\n href={`/management/properties?identifier=${encodeURIComponent(\n identifier\n )}&name=${encodeURIComponent(\n name\n )}&redirect=/precision-hort/block-scanning/upload`}\n >\n Create Property\n </Button>\n </Col>\n </Row>\n );\n })}\n </Col>\n </Row>\n </>\n );\n};\n\nexport default UnmatchedPolygons;\n\n","import {\n faCheckCircle,\n faTimesCircle\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport PropTypes from 'prop-types';\nimport { Alert, Col, Row, Spinner } from 'react-bootstrap';\n\nconst UploadStatus = ({ status, isProcessing }) => {\n const getStatusText = (status) => {\n switch (status) {\n case 'PENDING':\n return 'Pending';\n case 'PROCESSING':\n return 'Processing';\n case 'COMPLETE':\n return 'Complete';\n case 'ERROR':\n return 'Error';\n default:\n return '';\n }\n };\n\n return (\n <>\n {status ? (\n <Row className='mt-3'>\n <Col>\n <Row className='no-gutters'>\n <Col xs={0} sm={2} md={3} />\n <Col\n xs={12}\n sm={8}\n md={6}\n className='d-flex flex-column justify-content-center align-items-center w-100'\n >\n <span className='mb-2'>\n <h5>Upload Status</h5>\n </span>\n <Alert\n className='text-center w-100'\n variant={\n status === 'ERROR'\n ? 'danger'\n : status === 'COMPLETE'\n ? 'success'\n : 'info'\n }\n >\n <div>\n <span className='mr-2 font-weight-bold'>\n {getStatusText(status)}\n </span>\n <span>\n {isProcessing ? (\n <Spinner\n variant='primary'\n animation='border'\n size='sm'\n />\n ) : status === 'COMPLETE' ? (\n <FontAwesomeIcon\n icon={faCheckCircle}\n color='green'\n size='lg'\n />\n ) : status === 'ERROR' ? (\n <FontAwesomeIcon\n icon={faTimesCircle}\n color='red'\n size='lg'\n />\n ) : (\n ''\n )}\n </span>\n </div>\n {status === 'ERROR' ? (\n <div className='mt-1'>\n <div>There was a problem uploading your files.</div>\n <div> Please contact support.</div>\n </div>\n ) : null}\n </Alert>\n </Col>\n <Col xs={0} sm={2} md={3} />\n </Row>\n </Col>\n </Row>\n ) : null}\n </>\n );\n};\n\nUploadStatus.propTypes = {\n status: PropTypes.string.isRequired,\n isProcessing: PropTypes.bool.isRequired\n};\n\nexport default UploadStatus;\n\n","import { useContext, useState } from 'react';\nimport URI from 'urijs';\nimport { storesContext } from '../../../stores/storesContext';\n\n/**\n * Custom hook to poll block upload transaction status.\n *\n * @returns {Object} An object containing the following properties:\n * - status: The current status of the transaction.\n * - resetStatus: A function to reset the status.\n * - startPolling: A function to start polling the transaction status.\n */\nconst useTransactionPolling = () => {\n const userStore = useContext(storesContext);\n const [status, setStatus] = useState(null);\n\n const pollStatus = async (transactionId) => {\n const url = new URI(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/admin/fruition/blocks/transaction/${transactionId}`\n );\n const response = await fetch(url.valueOf(), {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${userStore.bearerToken}`,\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n SeasonalDatabase: userStore.selectedDatabase\n }\n });\n if (!response.ok) {\n throw response.statusText;\n }\n const data = await response.json();\n return data.status.status;\n };\n\n const startPolling = async (transactionId) => {\n if (!transactionId) return;\n\n // Initial status poll.\n const newStatus = await pollStatus(transactionId);\n setStatus(newStatus);\n\n // Poll status for an interval in a promise. Resolve when status is\n // in a 'finished' state. Reject when status poll fail limit is reached.\n let errorCount = 0;\n return new Promise((resolve, reject) => {\n const interval = setInterval(async () => {\n try {\n const newStatus = await pollStatus(transactionId);\n if (newStatus === 'COMPLETE' || newStatus === 'ERROR') {\n clearInterval(interval);\n resolve(newStatus);\n }\n setStatus(newStatus);\n } catch (error) {\n console.error('Error polling transaction status: ', error);\n errorCount++;\n if (errorCount >= 3) {\n clearInterval(interval);\n reject('Transaction polling reached its failure limit.', error);\n }\n }\n }, 5000);\n });\n };\n\n const resetStatus = () => {\n setStatus(null);\n };\n\n return { status, resetStatus, startPolling };\n};\n\nexport default useTransactionPolling;\n\n","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","export const getHttpHandlerExtensionConfiguration = (runtimeConfig) => {\n let httpHandler = runtimeConfig.httpHandler;\n return {\n setHttpHandler(handler) {\n httpHandler = handler;\n },\n httpHandler() {\n return httpHandler;\n },\n updateHttpClientConfig(key, value) {\n httpHandler.updateHttpClientConfig(key, value);\n },\n httpHandlerConfigs() {\n return httpHandler.httpHandlerConfigs();\n },\n };\n};\nexport const resolveHttpHandlerRuntimeConfig = (httpHandlerExtensionConfiguration) => {\n return {\n httpHandler: httpHandlerExtensionConfiguration.httpHandler(),\n };\n};\n","export var HttpAuthLocation;\n(function (HttpAuthLocation) {\n HttpAuthLocation[\"HEADER\"] = \"header\";\n HttpAuthLocation[\"QUERY\"] = \"query\";\n})(HttpAuthLocation || (HttpAuthLocation = {}));\n","export var HttpApiKeyAuthLocation;\n(function (HttpApiKeyAuthLocation) {\n HttpApiKeyAuthLocation[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation[\"QUERY\"] = \"query\";\n})(HttpApiKeyAuthLocation || (HttpApiKeyAuthLocation = {}));\n","export var EndpointURLScheme;\n(function (EndpointURLScheme) {\n EndpointURLScheme[\"HTTP\"] = \"http\";\n EndpointURLScheme[\"HTTPS\"] = \"https\";\n})(EndpointURLScheme || (EndpointURLScheme = {}));\n","export var AlgorithmId;\n(function (AlgorithmId) {\n AlgorithmId[\"MD5\"] = \"md5\";\n AlgorithmId[\"CRC32\"] = \"crc32\";\n AlgorithmId[\"CRC32C\"] = \"crc32c\";\n AlgorithmId[\"SHA1\"] = \"sha1\";\n AlgorithmId[\"SHA256\"] = \"sha256\";\n})(AlgorithmId || (AlgorithmId = {}));\nexport const getChecksumConfiguration = (runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== undefined) {\n checksumAlgorithms.push({\n algorithmId: () => AlgorithmId.SHA256,\n checksumConstructor: () => runtimeConfig.sha256,\n });\n }\n if (runtimeConfig.md5 != undefined) {\n checksumAlgorithms.push({\n algorithmId: () => AlgorithmId.MD5,\n checksumConstructor: () => runtimeConfig.md5,\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n },\n };\n};\nexport const resolveChecksumRuntimeConfig = (clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n};\n","export var FieldPosition;\n(function (FieldPosition) {\n FieldPosition[FieldPosition[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition[FieldPosition[\"TRAILER\"] = 1] = \"TRAILER\";\n})(FieldPosition || (FieldPosition = {}));\n","export const SMITHY_CONTEXT_KEY = \"__smithy_context\";\n","export var IniSectionType;\n(function (IniSectionType) {\n IniSectionType[\"PROFILE\"] = \"profile\";\n IniSectionType[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType[\"SERVICES\"] = \"services\";\n})(IniSectionType || (IniSectionType = {}));\n","export var RequestHandlerProtocol;\n(function (RequestHandlerProtocol) {\n RequestHandlerProtocol[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol[\"TDS_8_0\"] = \"tds/8.0\";\n})(RequestHandlerProtocol || (RequestHandlerProtocol = {}));\n","import { FieldPosition } from \"@smithy/types\";\nexport class Field {\n constructor({ name, kind = FieldPosition.HEADER, values = [] }) {\n this.name = name;\n this.kind = kind;\n this.values = values;\n }\n add(value) {\n this.values.push(value);\n }\n set(values) {\n this.values = values;\n }\n remove(value) {\n this.values = this.values.filter((v) => v !== value);\n }\n toString() {\n return this.values.map((v) => (v.includes(\",\") || v.includes(\" \") ? `\"${v}\"` : v)).join(\", \");\n }\n get() {\n return this.values;\n }\n}\n","export class HttpRequest {\n constructor(options) {\n this.method = options.method || \"GET\";\n this.hostname = options.hostname || \"localhost\";\n this.port = options.port;\n this.query = options.query || {};\n this.headers = options.headers || {};\n this.body = options.body;\n this.protocol = options.protocol\n ? options.protocol.slice(-1) !== \":\"\n ? `${options.protocol}:`\n : options.protocol\n : \"https:\";\n this.path = options.path ? (options.path.charAt(0) !== \"/\" ? `/${options.path}` : options.path) : \"/\";\n this.username = options.username;\n this.password = options.password;\n this.fragment = options.fragment;\n }\n static isInstance(request) {\n if (!request)\n return false;\n const req = request;\n return (\"method\" in req &&\n \"protocol\" in req &&\n \"hostname\" in req &&\n \"path\" in req &&\n typeof req[\"query\"] === \"object\" &&\n typeof req[\"headers\"] === \"object\");\n }\n clone() {\n const cloned = new HttpRequest({\n ...this,\n headers: { ...this.headers },\n });\n if (cloned.query)\n cloned.query = cloneQuery(cloned.query);\n return cloned;\n }\n}\nfunction cloneQuery(query) {\n return Object.keys(query).reduce((carry, paramName) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param,\n };\n }, {});\n}\n","export class HttpResponse {\n constructor(options) {\n this.statusCode = options.statusCode;\n this.reason = options.reason;\n this.headers = options.headers || {};\n this.body = options.body;\n }\n static isInstance(response) {\n if (!response)\n return false;\n const resp = response;\n return typeof resp.statusCode === \"number\" && typeof resp.headers === \"object\";\n }\n}\n","import { HttpRequest } from \"@smithy/protocol-http\";\nexport function addExpectContinueMiddleware(options) {\n return (next) => async (args) => {\n const { request } = args;\n if (HttpRequest.isInstance(request) && request.body && options.runtime === \"node\") {\n if (options.requestHandler?.constructor?.name !== \"FetchHttpHandler\") {\n request.headers = {\n ...request.headers,\n Expect: \"100-continue\",\n };\n }\n }\n return next({\n ...args,\n request,\n });\n };\n}\nexport const addExpectContinueMiddlewareOptions = {\n step: \"build\",\n tags: [\"SET_EXPECT_HEADER\", \"EXPECT_HEADER\"],\n name: \"addExpectContinueMiddleware\",\n override: true,\n};\nexport const getAddExpectContinuePlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(addExpectContinueMiddleware(options), addExpectContinueMiddlewareOptions);\n },\n});\n","import { HttpRequest } from \"@smithy/protocol-http\";\nexport function resolveHostHeaderConfig(input) {\n return input;\n}\nexport const hostHeaderMiddleware = (options) => (next) => async (args) => {\n if (!HttpRequest.isInstance(args.request))\n return next(args);\n const { request } = args;\n const { handlerProtocol = \"\" } = options.requestHandler.metadata || {};\n if (handlerProtocol.indexOf(\"h2\") >= 0 && !request.headers[\":authority\"]) {\n delete request.headers[\"host\"];\n request.headers[\":authority\"] = request.hostname + (request.port ? \":\" + request.port : \"\");\n }\n else if (!request.headers[\"host\"]) {\n let host = request.hostname;\n if (request.port != null)\n host += `:${request.port}`;\n request.headers[\"host\"] = host;\n }\n return next(args);\n};\nexport const hostHeaderMiddlewareOptions = {\n name: \"hostHeaderMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"HOST\"],\n override: true,\n};\nexport const getHostHeaderPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(hostHeaderMiddleware(options), hostHeaderMiddlewareOptions);\n },\n});\n","export const loggerMiddleware = () => (next, context) => async (args) => {\n try {\n const response = await next(args);\n const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;\n const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions;\n const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;\n const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context.outputFilterSensitiveLog;\n const { $metadata, ...outputWithoutMetadata } = response.output;\n logger?.info?.({\n clientName,\n commandName,\n input: inputFilterSensitiveLog(args.input),\n output: outputFilterSensitiveLog(outputWithoutMetadata),\n metadata: $metadata,\n });\n return response;\n }\n catch (error) {\n const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;\n const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions;\n const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;\n logger?.error?.({\n clientName,\n commandName,\n input: inputFilterSensitiveLog(args.input),\n error,\n metadata: error.$metadata,\n });\n throw error;\n }\n};\nexport const loggerMiddlewareOptions = {\n name: \"loggerMiddleware\",\n tags: [\"LOGGER\"],\n step: \"initialize\",\n override: true,\n};\nexport const getLoggerPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(loggerMiddleware(), loggerMiddlewareOptions);\n },\n});\n","import { HttpRequest } from \"@smithy/protocol-http\";\nconst TRACE_ID_HEADER_NAME = \"X-Amzn-Trace-Id\";\nconst ENV_LAMBDA_FUNCTION_NAME = \"AWS_LAMBDA_FUNCTION_NAME\";\nconst ENV_TRACE_ID = \"_X_AMZN_TRACE_ID\";\nexport const recursionDetectionMiddleware = (options) => (next) => async (args) => {\n const { request } = args;\n if (!HttpRequest.isInstance(request) ||\n options.runtime !== \"node\" ||\n request.headers.hasOwnProperty(TRACE_ID_HEADER_NAME)) {\n return next(args);\n }\n const functionName = process.env[ENV_LAMBDA_FUNCTION_NAME];\n const traceId = process.env[ENV_TRACE_ID];\n const nonEmptyString = (str) => typeof str === \"string\" && str.length > 0;\n if (nonEmptyString(functionName) && nonEmptyString(traceId)) {\n request.headers[TRACE_ID_HEADER_NAME] = traceId;\n }\n return next({\n ...args,\n request,\n });\n};\nexport const addRecursionDetectionMiddlewareOptions = {\n step: \"build\",\n tags: [\"RECURSION_DETECTION\"],\n name: \"recursionDetectionMiddleware\",\n override: true,\n priority: \"low\",\n};\nexport const getRecursionDetectionPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(recursionDetectionMiddleware(options), addRecursionDetectionMiddlewareOptions);\n },\n});\n","export class NoOpLogger {\n trace() { }\n debug() { }\n info() { }\n warn() { }\n error() { }\n}\n","const getAllAliases = (name, aliases) => {\n const _aliases = [];\n if (name) {\n _aliases.push(name);\n }\n if (aliases) {\n for (const alias of aliases) {\n _aliases.push(alias);\n }\n }\n return _aliases;\n};\nconst getMiddlewareNameWithAliases = (name, aliases) => {\n return `${name || \"anonymous\"}${aliases && aliases.length > 0 ? ` (a.k.a. ${aliases.join(\",\")})` : \"\"}`;\n};\nexport const constructStack = () => {\n let absoluteEntries = [];\n let relativeEntries = [];\n let identifyOnResolve = false;\n const entriesNameSet = new Set();\n const sort = (entries) => entries.sort((a, b) => stepWeights[b.step] - stepWeights[a.step] ||\n priorityWeights[b.priority || \"normal\"] - priorityWeights[a.priority || \"normal\"]);\n const removeByName = (toRemove) => {\n let isRemoved = false;\n const filterCb = (entry) => {\n const aliases = getAllAliases(entry.name, entry.aliases);\n if (aliases.includes(toRemove)) {\n isRemoved = true;\n for (const alias of aliases) {\n entriesNameSet.delete(alias);\n }\n return false;\n }\n return true;\n };\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n };\n const removeByReference = (toRemove) => {\n let isRemoved = false;\n const filterCb = (entry) => {\n if (entry.middleware === toRemove) {\n isRemoved = true;\n for (const alias of getAllAliases(entry.name, entry.aliases)) {\n entriesNameSet.delete(alias);\n }\n return false;\n }\n return true;\n };\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n };\n const cloneTo = (toStack) => {\n absoluteEntries.forEach((entry) => {\n toStack.add(entry.middleware, { ...entry });\n });\n relativeEntries.forEach((entry) => {\n toStack.addRelativeTo(entry.middleware, { ...entry });\n });\n toStack.identifyOnResolve?.(stack.identifyOnResolve());\n return toStack;\n };\n const expandRelativeMiddlewareList = (from) => {\n const expandedMiddlewareList = [];\n from.before.forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n }\n else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n expandedMiddlewareList.push(from);\n from.after.reverse().forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n }\n else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n return expandedMiddlewareList;\n };\n const getMiddlewareList = (debug = false) => {\n const normalizedAbsoluteEntries = [];\n const normalizedRelativeEntries = [];\n const normalizedEntriesNameMap = {};\n absoluteEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: [],\n };\n for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) {\n normalizedEntriesNameMap[alias] = normalizedEntry;\n }\n normalizedAbsoluteEntries.push(normalizedEntry);\n });\n relativeEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: [],\n };\n for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) {\n normalizedEntriesNameMap[alias] = normalizedEntry;\n }\n normalizedRelativeEntries.push(normalizedEntry);\n });\n normalizedRelativeEntries.forEach((entry) => {\n if (entry.toMiddleware) {\n const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware];\n if (toMiddleware === undefined) {\n if (debug) {\n return;\n }\n throw new Error(`${entry.toMiddleware} is not found when adding ` +\n `${getMiddlewareNameWithAliases(entry.name, entry.aliases)} ` +\n `middleware ${entry.relation} ${entry.toMiddleware}`);\n }\n if (entry.relation === \"after\") {\n toMiddleware.after.push(entry);\n }\n if (entry.relation === \"before\") {\n toMiddleware.before.push(entry);\n }\n }\n });\n const mainChain = sort(normalizedAbsoluteEntries)\n .map(expandRelativeMiddlewareList)\n .reduce((wholeList, expandedMiddlewareList) => {\n wholeList.push(...expandedMiddlewareList);\n return wholeList;\n }, []);\n return mainChain;\n };\n const stack = {\n add: (middleware, options = {}) => {\n const { name, override, aliases: _aliases } = options;\n const entry = {\n step: \"initialize\",\n priority: \"normal\",\n middleware,\n ...options,\n };\n const aliases = getAllAliases(name, _aliases);\n if (aliases.length > 0) {\n if (aliases.some((alias) => entriesNameSet.has(alias))) {\n if (!override)\n throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`);\n for (const alias of aliases) {\n const toOverrideIndex = absoluteEntries.findIndex((entry) => entry.name === alias || entry.aliases?.some((a) => a === alias));\n if (toOverrideIndex === -1) {\n continue;\n }\n const toOverride = absoluteEntries[toOverrideIndex];\n if (toOverride.step !== entry.step || entry.priority !== toOverride.priority) {\n throw new Error(`\"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}\" middleware with ` +\n `${toOverride.priority} priority in ${toOverride.step} step cannot ` +\n `be overridden by \"${getMiddlewareNameWithAliases(name, _aliases)}\" middleware with ` +\n `${entry.priority} priority in ${entry.step} step.`);\n }\n absoluteEntries.splice(toOverrideIndex, 1);\n }\n }\n for (const alias of aliases) {\n entriesNameSet.add(alias);\n }\n }\n absoluteEntries.push(entry);\n },\n addRelativeTo: (middleware, options) => {\n const { name, override, aliases: _aliases } = options;\n const entry = {\n middleware,\n ...options,\n };\n const aliases = getAllAliases(name, _aliases);\n if (aliases.length > 0) {\n if (aliases.some((alias) => entriesNameSet.has(alias))) {\n if (!override)\n throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`);\n for (const alias of aliases) {\n const toOverrideIndex = relativeEntries.findIndex((entry) => entry.name === alias || entry.aliases?.some((a) => a === alias));\n if (toOverrideIndex === -1) {\n continue;\n }\n const toOverride = relativeEntries[toOverrideIndex];\n if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) {\n throw new Error(`\"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}\" middleware ` +\n `${toOverride.relation} \"${toOverride.toMiddleware}\" middleware cannot be overridden ` +\n `by \"${getMiddlewareNameWithAliases(name, _aliases)}\" middleware ${entry.relation} ` +\n `\"${entry.toMiddleware}\" middleware.`);\n }\n relativeEntries.splice(toOverrideIndex, 1);\n }\n }\n for (const alias of aliases) {\n entriesNameSet.add(alias);\n }\n }\n relativeEntries.push(entry);\n },\n clone: () => cloneTo(constructStack()),\n use: (plugin) => {\n plugin.applyToStack(stack);\n },\n remove: (toRemove) => {\n if (typeof toRemove === \"string\")\n return removeByName(toRemove);\n else\n return removeByReference(toRemove);\n },\n removeByTag: (toRemove) => {\n let isRemoved = false;\n const filterCb = (entry) => {\n const { tags, name, aliases: _aliases } = entry;\n if (tags && tags.includes(toRemove)) {\n const aliases = getAllAliases(name, _aliases);\n for (const alias of aliases) {\n entriesNameSet.delete(alias);\n }\n isRemoved = true;\n return false;\n }\n return true;\n };\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n },\n concat: (from) => {\n const cloned = cloneTo(constructStack());\n cloned.use(from);\n cloned.identifyOnResolve(identifyOnResolve || cloned.identifyOnResolve() || (from.identifyOnResolve?.() ?? false));\n return cloned;\n },\n applyToStack: cloneTo,\n identify: () => {\n return getMiddlewareList(true).map((mw) => {\n const step = mw.step ??\n mw.relation +\n \" \" +\n mw.toMiddleware;\n return getMiddlewareNameWithAliases(mw.name, mw.aliases) + \" - \" + step;\n });\n },\n identifyOnResolve(toggle) {\n if (typeof toggle === \"boolean\")\n identifyOnResolve = toggle;\n return identifyOnResolve;\n },\n resolve: (handler, context) => {\n for (const middleware of getMiddlewareList()\n .map((entry) => entry.middleware)\n .reverse()) {\n handler = middleware(handler, context);\n }\n if (identifyOnResolve) {\n console.log(stack.identify());\n }\n return handler;\n },\n };\n return stack;\n};\nconst stepWeights = {\n initialize: 5,\n serialize: 4,\n build: 3,\n finalizeRequest: 2,\n deserialize: 1,\n};\nconst priorityWeights = {\n high: 3,\n normal: 2,\n low: 1,\n};\n","import { constructStack } from \"@smithy/middleware-stack\";\nexport class Client {\n constructor(config) {\n this.middlewareStack = constructStack();\n this.config = config;\n }\n send(command, optionsOrCb, cb) {\n const options = typeof optionsOrCb !== \"function\" ? optionsOrCb : undefined;\n const callback = typeof optionsOrCb === \"function\" ? optionsOrCb : cb;\n const handler = command.resolveMiddleware(this.middlewareStack, this.config, options);\n if (callback) {\n handler(command)\n .then((result) => callback(null, result.output), (err) => callback(err))\n .catch(() => { });\n }\n else {\n return handler(command).then((result) => result.output);\n }\n }\n destroy() {\n if (this.config.requestHandler.destroy)\n this.config.requestHandler.destroy();\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","const alphabetByEncoding = {};\nconst alphabetByValue = new Array(64);\nfor (let i = 0, start = \"A\".charCodeAt(0), limit = \"Z\".charCodeAt(0); i + start <= limit; i++) {\n const char = String.fromCharCode(i + start);\n alphabetByEncoding[char] = i;\n alphabetByValue[i] = char;\n}\nfor (let i = 0, start = \"a\".charCodeAt(0), limit = \"z\".charCodeAt(0); i + start <= limit; i++) {\n const char = String.fromCharCode(i + start);\n const index = i + 26;\n alphabetByEncoding[char] = index;\n alphabetByValue[index] = char;\n}\nfor (let i = 0; i < 10; i++) {\n alphabetByEncoding[i.toString(10)] = i + 52;\n const char = i.toString(10);\n const index = i + 52;\n alphabetByEncoding[char] = index;\n alphabetByValue[index] = char;\n}\nalphabetByEncoding[\"+\"] = 62;\nalphabetByValue[62] = \"+\";\nalphabetByEncoding[\"/\"] = 63;\nalphabetByValue[63] = \"/\";\nconst bitsPerLetter = 6;\nconst bitsPerByte = 8;\nconst maxLetterValue = 0b111111;\nexport { alphabetByEncoding, alphabetByValue, bitsPerLetter, bitsPerByte, maxLetterValue };\n","import { alphabetByEncoding, bitsPerByte, bitsPerLetter } from \"./constants.browser\";\nexport const fromBase64 = (input) => {\n let totalByteLength = (input.length / 4) * 3;\n if (input.slice(-2) === \"==\") {\n totalByteLength -= 2;\n }\n else if (input.slice(-1) === \"=\") {\n totalByteLength--;\n }\n const out = new ArrayBuffer(totalByteLength);\n const dataView = new DataView(out);\n for (let i = 0; i < input.length; i += 4) {\n let bits = 0;\n let bitLength = 0;\n for (let j = i, limit = i + 3; j <= limit; j++) {\n if (input[j] !== \"=\") {\n if (!(input[j] in alphabetByEncoding)) {\n throw new TypeError(`Invalid character ${input[j]} in base64 string.`);\n }\n bits |= alphabetByEncoding[input[j]] << ((limit - j) * bitsPerLetter);\n bitLength += bitsPerLetter;\n }\n else {\n bits >>= bitsPerLetter;\n }\n }\n const chunkOffset = (i / 4) * 3;\n bits >>= bitLength % bitsPerByte;\n const byteLength = Math.floor(bitLength / bitsPerByte);\n for (let k = 0; k < byteLength; k++) {\n const offset = (byteLength - k - 1) * bitsPerByte;\n dataView.setUint8(chunkOffset + k, (bits & (255 << offset)) >> offset);\n }\n }\n return new Uint8Array(out);\n};\n","export const fromUtf8 = (input) => new TextEncoder().encode(input);\n","import { fromUtf8 } from \"@smithy/util-utf8\";\nimport { alphabetByValue, bitsPerByte, bitsPerLetter, maxLetterValue } from \"./constants.browser\";\nexport function toBase64(_input) {\n let input;\n if (typeof _input === \"string\") {\n input = fromUtf8(_input);\n }\n else {\n input = _input;\n }\n const isArrayLike = typeof input === \"object\" && typeof input.length === \"number\";\n const isUint8Array = typeof input === \"object\" &&\n typeof input.byteOffset === \"number\" &&\n typeof input.byteLength === \"number\";\n if (!isArrayLike && !isUint8Array) {\n throw new Error(\"@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.\");\n }\n let str = \"\";\n for (let i = 0; i < input.length; i += 3) {\n let bits = 0;\n let bitLength = 0;\n for (let j = i, limit = Math.min(i + 3, input.length); j < limit; j++) {\n bits |= input[j] << ((limit - j - 1) * bitsPerByte);\n bitLength += bitsPerByte;\n }\n const bitClusterCount = Math.ceil(bitLength / bitsPerLetter);\n bits <<= bitClusterCount * bitsPerLetter - bitLength;\n for (let k = 1; k <= bitClusterCount; k++) {\n const offset = (bitClusterCount - k) * bitsPerLetter;\n str += alphabetByValue[(bits & (maxLetterValue << offset)) >> offset];\n }\n str += \"==\".slice(0, 4 - bitClusterCount);\n }\n return str;\n}\n","export const toUtf8 = (input) => {\n if (typeof input === \"string\") {\n return input;\n }\n if (typeof input !== \"object\" || typeof input.byteOffset !== \"number\" || typeof input.byteLength !== \"number\") {\n throw new Error(\"@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.\");\n }\n return new TextDecoder(\"utf-8\").decode(input);\n};\n","import { fromBase64, toBase64 } from \"@smithy/util-base64\";\nimport { fromUtf8, toUtf8 } from \"@smithy/util-utf8\";\nimport { Uint8ArrayBlobAdapter } from \"./Uint8ArrayBlobAdapter\";\nexport function transformToString(payload, encoding = \"utf-8\") {\n if (encoding === \"base64\") {\n return toBase64(payload);\n }\n return toUtf8(payload);\n}\nexport function transformFromString(str, encoding) {\n if (encoding === \"base64\") {\n return Uint8ArrayBlobAdapter.mutate(fromBase64(str));\n }\n return Uint8ArrayBlobAdapter.mutate(fromUtf8(str));\n}\n","import { transformFromString, transformToString } from \"./transforms\";\nexport class Uint8ArrayBlobAdapter extends Uint8Array {\n static fromString(source, encoding = \"utf-8\") {\n switch (typeof source) {\n case \"string\":\n return transformFromString(source, encoding);\n default:\n throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`);\n }\n }\n static mutate(source) {\n Object.setPrototypeOf(source, Uint8ArrayBlobAdapter.prototype);\n return source;\n }\n transformToString(encoding = \"utf-8\") {\n return transformToString(this, encoding);\n }\n}\n","export const getAwsChunkedEncodingStream = (readableStream, options) => {\n const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options;\n const checksumRequired = base64Encoder !== undefined &&\n bodyLengthChecker !== undefined &&\n checksumAlgorithmFn !== undefined &&\n checksumLocationName !== undefined &&\n streamHasher !== undefined;\n const digest = checksumRequired ? streamHasher(checksumAlgorithmFn, readableStream) : undefined;\n const reader = readableStream.getReader();\n return new ReadableStream({\n async pull(controller) {\n const { value, done } = await reader.read();\n if (done) {\n controller.enqueue(`0\\r\\n`);\n if (checksumRequired) {\n const checksum = base64Encoder(await digest);\n controller.enqueue(`${checksumLocationName}:${checksum}\\r\\n`);\n controller.enqueue(`\\r\\n`);\n }\n controller.close();\n }\n else {\n controller.enqueue(`${(bodyLengthChecker(value) || 0).toString(16)}\\r\\n${value}\\r\\n`);\n }\n },\n });\n};\n","export const escapeUri = (uri) => encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode);\nconst hexEncode = (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`;\n","import { escapeUri } from \"@smithy/util-uri-escape\";\nexport function buildQueryString(query) {\n const parts = [];\n for (let key of Object.keys(query).sort()) {\n const value = query[key];\n key = escapeUri(key);\n if (Array.isArray(value)) {\n for (let i = 0, iLen = value.length; i < iLen; i++) {\n parts.push(`${key}=${escapeUri(value[i])}`);\n }\n }\n else {\n let qsEntry = key;\n if (value || typeof value === \"string\") {\n qsEntry += `=${escapeUri(value)}`;\n }\n parts.push(qsEntry);\n }\n }\n return parts.join(\"&\");\n}\n","export function requestTimeout(timeoutInMs = 0) {\n return new Promise((resolve, reject) => {\n if (timeoutInMs) {\n setTimeout(() => {\n const timeoutError = new Error(`Request did not complete within ${timeoutInMs} ms`);\n timeoutError.name = \"TimeoutError\";\n reject(timeoutError);\n }, timeoutInMs);\n }\n });\n}\n","import { HttpResponse } from \"@smithy/protocol-http\";\nimport { buildQueryString } from \"@smithy/querystring-builder\";\nimport { requestTimeout } from \"./request-timeout\";\nexport const keepAliveSupport = {\n supported: undefined,\n};\nexport class FetchHttpHandler {\n static create(instanceOrOptions) {\n if (typeof instanceOrOptions?.handle === \"function\") {\n return instanceOrOptions;\n }\n return new FetchHttpHandler(instanceOrOptions);\n }\n constructor(options) {\n if (typeof options === \"function\") {\n this.configProvider = options().then((opts) => opts || {});\n }\n else {\n this.config = options ?? {};\n this.configProvider = Promise.resolve(this.config);\n }\n if (keepAliveSupport.supported === undefined) {\n keepAliveSupport.supported = Boolean(typeof Request !== \"undefined\" && \"keepalive\" in new Request(\"https://[::1]\"));\n }\n }\n destroy() {\n }\n async handle(request, { abortSignal } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n }\n const requestTimeoutInMs = this.config.requestTimeout;\n const keepAlive = this.config.keepAlive === true;\n const credentials = this.config.credentials;\n if (abortSignal?.aborted) {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n return Promise.reject(abortError);\n }\n let path = request.path;\n const queryString = buildQueryString(request.query || {});\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n let auth = \"\";\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}@`;\n }\n const { port, method } = request;\n const url = `${request.protocol}//${auth}${request.hostname}${port ? `:${port}` : \"\"}${path}`;\n const body = method === \"GET\" || method === \"HEAD\" ? undefined : request.body;\n const requestOptions = {\n body,\n headers: new Headers(request.headers),\n method: method,\n credentials,\n };\n if (body) {\n requestOptions.duplex = \"half\";\n }\n if (typeof AbortController !== \"undefined\") {\n requestOptions.signal = abortSignal;\n }\n if (keepAliveSupport.supported) {\n requestOptions.keepalive = keepAlive;\n }\n let removeSignalEventListener = null;\n const fetchRequest = new Request(url, requestOptions);\n const raceOfPromises = [\n fetch(fetchRequest).then((response) => {\n const fetchHeaders = response.headers;\n const transformedHeaders = {};\n for (const pair of fetchHeaders.entries()) {\n transformedHeaders[pair[0]] = pair[1];\n }\n const hasReadableStream = response.body != undefined;\n if (!hasReadableStream) {\n return response.blob().then((body) => ({\n response: new HttpResponse({\n headers: transformedHeaders,\n reason: response.statusText,\n statusCode: response.status,\n body,\n }),\n }));\n }\n return {\n response: new HttpResponse({\n headers: transformedHeaders,\n reason: response.statusText,\n statusCode: response.status,\n body: response.body,\n }),\n };\n }),\n requestTimeout(requestTimeoutInMs),\n ];\n if (abortSignal) {\n raceOfPromises.push(new Promise((resolve, reject) => {\n const onAbort = () => {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n };\n if (typeof abortSignal.addEventListener === \"function\") {\n const signal = abortSignal;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n removeSignalEventListener = () => signal.removeEventListener(\"abort\", onAbort);\n }\n else {\n abortSignal.onabort = onAbort;\n }\n }));\n }\n return Promise.race(raceOfPromises).finally(removeSignalEventListener);\n }\n updateHttpClientConfig(key, value) {\n this.config = undefined;\n this.configProvider = this.configProvider.then((config) => {\n config[key] = value;\n return config;\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n}\n","import { fromBase64 } from \"@smithy/util-base64\";\nexport const streamCollector = (stream) => {\n if (typeof Blob === \"function\" && stream instanceof Blob) {\n return collectBlob(stream);\n }\n return collectStream(stream);\n};\nasync function collectBlob(blob) {\n const base64 = await readToBase64(blob);\n const arrayBuffer = fromBase64(base64);\n return new Uint8Array(arrayBuffer);\n}\nasync function collectStream(stream) {\n const chunks = [];\n const reader = stream.getReader();\n let isDone = false;\n let length = 0;\n while (!isDone) {\n const { done, value } = await reader.read();\n if (value) {\n chunks.push(value);\n length += value.length;\n }\n isDone = done;\n }\n const collected = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n collected.set(chunk, offset);\n offset += chunk.length;\n }\n return collected;\n}\nfunction readToBase64(blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n if (reader.readyState !== 2) {\n return reject(new Error(\"Reader aborted too early\"));\n }\n const result = (reader.result ?? \"\");\n const commaIndex = result.indexOf(\",\");\n const dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length;\n resolve(result.substring(dataOffset));\n };\n reader.onabort = () => reject(new Error(\"Read aborted\"));\n reader.onerror = () => reject(reader.error);\n reader.readAsDataURL(blob);\n });\n}\n","const SHORT_TO_HEX = {};\nconst HEX_TO_SHORT = {};\nfor (let i = 0; i < 256; i++) {\n let encodedByte = i.toString(16).toLowerCase();\n if (encodedByte.length === 1) {\n encodedByte = `0${encodedByte}`;\n }\n SHORT_TO_HEX[i] = encodedByte;\n HEX_TO_SHORT[encodedByte] = i;\n}\nexport function fromHex(encoded) {\n if (encoded.length % 2 !== 0) {\n throw new Error(\"Hex encoded strings must have an even number length\");\n }\n const out = new Uint8Array(encoded.length / 2);\n for (let i = 0; i < encoded.length; i += 2) {\n const encodedByte = encoded.slice(i, i + 2).toLowerCase();\n if (encodedByte in HEX_TO_SHORT) {\n out[i / 2] = HEX_TO_SHORT[encodedByte];\n }\n else {\n throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n }\n }\n return out;\n}\nexport function toHex(bytes) {\n let out = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n out += SHORT_TO_HEX[bytes[i]];\n }\n return out;\n}\n","import { streamCollector } from \"@smithy/fetch-http-handler\";\nimport { toBase64 } from \"@smithy/util-base64\";\nimport { toHex } from \"@smithy/util-hex-encoding\";\nimport { toUtf8 } from \"@smithy/util-utf8\";\nconst ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = \"The stream has already been transformed.\";\nexport const sdkStreamMixin = (stream) => {\n if (!isBlobInstance(stream) && !isReadableStreamInstance(stream)) {\n const name = stream?.__proto__?.constructor?.name || stream;\n throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${name}`);\n }\n let transformed = false;\n const transformToByteArray = async () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n transformed = true;\n return await streamCollector(stream);\n };\n const blobToWebStream = (blob) => {\n if (typeof blob.stream !== \"function\") {\n throw new Error(\"Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\\n\" +\n \"If you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body\");\n }\n return blob.stream();\n };\n return Object.assign(stream, {\n transformToByteArray: transformToByteArray,\n transformToString: async (encoding) => {\n const buf = await transformToByteArray();\n if (encoding === \"base64\") {\n return toBase64(buf);\n }\n else if (encoding === \"hex\") {\n return toHex(buf);\n }\n else if (encoding === undefined || encoding === \"utf8\" || encoding === \"utf-8\") {\n return toUtf8(buf);\n }\n else if (typeof TextDecoder === \"function\") {\n return new TextDecoder(encoding).decode(buf);\n }\n else {\n throw new Error(\"TextDecoder is not available, please make sure polyfill is provided.\");\n }\n },\n transformToWebStream: () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n transformed = true;\n if (isBlobInstance(stream)) {\n return blobToWebStream(stream);\n }\n else if (isReadableStreamInstance(stream)) {\n return stream;\n }\n else {\n throw new Error(`Cannot transform payload to web stream, got ${stream}`);\n }\n },\n });\n};\nconst isBlobInstance = (stream) => typeof Blob === \"function\" && stream instanceof Blob;\nconst isReadableStreamInstance = (stream) => typeof ReadableStream === \"function\" && stream instanceof ReadableStream;\n","import { Uint8ArrayBlobAdapter } from \"@smithy/util-stream\";\nexport const collectBody = async (streamBody = new Uint8Array(), context) => {\n if (streamBody instanceof Uint8Array) {\n return Uint8ArrayBlobAdapter.mutate(streamBody);\n }\n if (!streamBody) {\n return Uint8ArrayBlobAdapter.mutate(new Uint8Array());\n }\n const fromContext = context.streamCollector(streamBody);\n return Uint8ArrayBlobAdapter.mutate(await fromContext);\n};\n","import { constructStack } from \"@smithy/middleware-stack\";\nimport { SMITHY_CONTEXT_KEY } from \"@smithy/types\";\nexport class Command {\n constructor() {\n this.middlewareStack = constructStack();\n }\n static classBuilder() {\n return new ClassBuilder();\n }\n resolveMiddlewareWithContext(clientStack, configuration, options, { middlewareFn, clientName, commandName, inputFilterSensitiveLog, outputFilterSensitiveLog, smithyContext, additionalContext, CommandCtor, }) {\n for (const mw of middlewareFn.bind(this)(CommandCtor, clientStack, configuration, options)) {\n this.middlewareStack.use(mw);\n }\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog,\n outputFilterSensitiveLog,\n [SMITHY_CONTEXT_KEY]: {\n ...smithyContext,\n },\n ...additionalContext,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n}\nclass ClassBuilder {\n constructor() {\n this._init = () => { };\n this._ep = {};\n this._middlewareFn = () => [];\n this._commandName = \"\";\n this._clientName = \"\";\n this._additionalContext = {};\n this._smithyContext = {};\n this._inputFilterSensitiveLog = (_) => _;\n this._outputFilterSensitiveLog = (_) => _;\n this._serializer = null;\n this._deserializer = null;\n }\n init(cb) {\n this._init = cb;\n }\n ep(endpointParameterInstructions) {\n this._ep = endpointParameterInstructions;\n return this;\n }\n m(middlewareSupplier) {\n this._middlewareFn = middlewareSupplier;\n return this;\n }\n s(service, operation, smithyContext = {}) {\n this._smithyContext = {\n service,\n operation,\n ...smithyContext,\n };\n return this;\n }\n c(additionalContext = {}) {\n this._additionalContext = additionalContext;\n return this;\n }\n n(clientName, commandName) {\n this._clientName = clientName;\n this._commandName = commandName;\n return this;\n }\n f(inputFilter = (_) => _, outputFilter = (_) => _) {\n this._inputFilterSensitiveLog = inputFilter;\n this._outputFilterSensitiveLog = outputFilter;\n return this;\n }\n ser(serializer) {\n this._serializer = serializer;\n return this;\n }\n de(deserializer) {\n this._deserializer = deserializer;\n return this;\n }\n build() {\n const closure = this;\n let CommandRef;\n return (CommandRef = class extends Command {\n static getEndpointParameterInstructions() {\n return closure._ep;\n }\n constructor(...[input]) {\n super();\n this.serialize = closure._serializer;\n this.deserialize = closure._deserializer;\n this.input = input ?? {};\n closure._init(this);\n }\n resolveMiddleware(stack, configuration, options) {\n return this.resolveMiddlewareWithContext(stack, configuration, options, {\n CommandCtor: CommandRef,\n middlewareFn: closure._middlewareFn,\n clientName: closure._clientName,\n commandName: closure._commandName,\n inputFilterSensitiveLog: closure._inputFilterSensitiveLog,\n outputFilterSensitiveLog: closure._outputFilterSensitiveLog,\n smithyContext: closure._smithyContext,\n additionalContext: closure._additionalContext,\n });\n }\n });\n }\n}\n","export const SENSITIVE_STRING = \"***SensitiveInformation***\";\n","export const parseBoolean = (value) => {\n switch (value) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n default:\n throw new Error(`Unable to parse boolean value \"${value}\"`);\n }\n};\nexport const expectBoolean = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"number\") {\n if (value === 0 || value === 1) {\n logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n }\n if (value === 0) {\n return false;\n }\n if (value === 1) {\n return true;\n }\n }\n if (typeof value === \"string\") {\n const lower = value.toLowerCase();\n if (lower === \"false\" || lower === \"true\") {\n logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n }\n if (lower === \"false\") {\n return false;\n }\n if (lower === \"true\") {\n return true;\n }\n }\n if (typeof value === \"boolean\") {\n return value;\n }\n throw new TypeError(`Expected boolean, got ${typeof value}: ${value}`);\n};\nexport const expectNumber = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"string\") {\n const parsed = parseFloat(value);\n if (!Number.isNaN(parsed)) {\n if (String(parsed) !== String(value)) {\n logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`));\n }\n return parsed;\n }\n }\n if (typeof value === \"number\") {\n return value;\n }\n throw new TypeError(`Expected number, got ${typeof value}: ${value}`);\n};\nconst MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23));\nexport const expectFloat32 = (value) => {\n const expected = expectNumber(value);\n if (expected !== undefined && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) {\n if (Math.abs(expected) > MAX_FLOAT) {\n throw new TypeError(`Expected 32-bit float, got ${value}`);\n }\n }\n return expected;\n};\nexport const expectLong = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (Number.isInteger(value) && !Number.isNaN(value)) {\n return value;\n }\n throw new TypeError(`Expected integer, got ${typeof value}: ${value}`);\n};\nexport const expectInt = expectLong;\nexport const expectInt32 = (value) => expectSizedInt(value, 32);\nexport const expectShort = (value) => expectSizedInt(value, 16);\nexport const expectByte = (value) => expectSizedInt(value, 8);\nconst expectSizedInt = (value, size) => {\n const expected = expectLong(value);\n if (expected !== undefined && castInt(expected, size) !== expected) {\n throw new TypeError(`Expected ${size}-bit integer, got ${value}`);\n }\n return expected;\n};\nconst castInt = (value, size) => {\n switch (size) {\n case 32:\n return Int32Array.of(value)[0];\n case 16:\n return Int16Array.of(value)[0];\n case 8:\n return Int8Array.of(value)[0];\n }\n};\nexport const expectNonNull = (value, location) => {\n if (value === null || value === undefined) {\n if (location) {\n throw new TypeError(`Expected a non-null value for ${location}`);\n }\n throw new TypeError(\"Expected a non-null value\");\n }\n return value;\n};\nexport const expectObject = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"object\" && !Array.isArray(value)) {\n return value;\n }\n const receivedType = Array.isArray(value) ? \"array\" : typeof value;\n throw new TypeError(`Expected object, got ${receivedType}: ${value}`);\n};\nexport const expectString = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return value;\n }\n if ([\"boolean\", \"number\", \"bigint\"].includes(typeof value)) {\n logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`));\n return String(value);\n }\n throw new TypeError(`Expected string, got ${typeof value}: ${value}`);\n};\nexport const expectUnion = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n const asObject = expectObject(value);\n const setKeys = Object.entries(asObject)\n .filter(([, v]) => v != null)\n .map(([k]) => k);\n if (setKeys.length === 0) {\n throw new TypeError(`Unions must have exactly one non-null member. None were found.`);\n }\n if (setKeys.length > 1) {\n throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`);\n }\n return asObject;\n};\nexport const strictParseDouble = (value) => {\n if (typeof value == \"string\") {\n return expectNumber(parseNumber(value));\n }\n return expectNumber(value);\n};\nexport const strictParseFloat = strictParseDouble;\nexport const strictParseFloat32 = (value) => {\n if (typeof value == \"string\") {\n return expectFloat32(parseNumber(value));\n }\n return expectFloat32(value);\n};\nconst NUMBER_REGEX = /(-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)|(-?Infinity)|(NaN)/g;\nconst parseNumber = (value) => {\n const matches = value.match(NUMBER_REGEX);\n if (matches === null || matches[0].length !== value.length) {\n throw new TypeError(`Expected real number, got implicit NaN`);\n }\n return parseFloat(value);\n};\nexport const limitedParseDouble = (value) => {\n if (typeof value == \"string\") {\n return parseFloatString(value);\n }\n return expectNumber(value);\n};\nexport const handleFloat = limitedParseDouble;\nexport const limitedParseFloat = limitedParseDouble;\nexport const limitedParseFloat32 = (value) => {\n if (typeof value == \"string\") {\n return parseFloatString(value);\n }\n return expectFloat32(value);\n};\nconst parseFloatString = (value) => {\n switch (value) {\n case \"NaN\":\n return NaN;\n case \"Infinity\":\n return Infinity;\n case \"-Infinity\":\n return -Infinity;\n default:\n throw new Error(`Unable to parse float value: ${value}`);\n }\n};\nexport const strictParseLong = (value) => {\n if (typeof value === \"string\") {\n return expectLong(parseNumber(value));\n }\n return expectLong(value);\n};\nexport const strictParseInt = strictParseLong;\nexport const strictParseInt32 = (value) => {\n if (typeof value === \"string\") {\n return expectInt32(parseNumber(value));\n }\n return expectInt32(value);\n};\nexport const strictParseShort = (value) => {\n if (typeof value === \"string\") {\n return expectShort(parseNumber(value));\n }\n return expectShort(value);\n};\nexport const strictParseByte = (value) => {\n if (typeof value === \"string\") {\n return expectByte(parseNumber(value));\n }\n return expectByte(value);\n};\nconst stackTraceWarning = (message) => {\n return String(new TypeError(message).stack || message)\n .split(\"\\n\")\n .slice(0, 5)\n .filter((s) => !s.includes(\"stackTraceWarning\"))\n .join(\"\\n\");\n};\nexport const logger = {\n warn: console.warn,\n};\n","import { strictParseByte, strictParseDouble, strictParseFloat32, strictParseShort } from \"./parse-utils\";\nconst DAYS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\nconst MONTHS = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nexport function dateToUtcString(date) {\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth();\n const dayOfWeek = date.getUTCDay();\n const dayOfMonthInt = date.getUTCDate();\n const hoursInt = date.getUTCHours();\n const minutesInt = date.getUTCMinutes();\n const secondsInt = date.getUTCSeconds();\n const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`;\n const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`;\n const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`;\n const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`;\n return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`;\n}\nconst RFC3339 = new RegExp(/^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?[zZ]$/);\nexport const parseRfc3339DateTime = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n }\n const match = RFC3339.exec(value);\n if (!match) {\n throw new TypeError(\"Invalid RFC-3339 date-time value\");\n }\n const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n const year = strictParseShort(stripLeadingZeroes(yearStr));\n const month = parseDateValue(monthStr, \"month\", 1, 12);\n const day = parseDateValue(dayStr, \"day\", 1, 31);\n return buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n};\nconst RFC3339_WITH_OFFSET = new RegExp(/^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?(([-+]\\d{2}\\:\\d{2})|[zZ])$/);\nexport const parseRfc3339DateTimeWithOffset = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n }\n const match = RFC3339_WITH_OFFSET.exec(value);\n if (!match) {\n throw new TypeError(\"Invalid RFC-3339 date-time value\");\n }\n const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, offsetStr] = match;\n const year = strictParseShort(stripLeadingZeroes(yearStr));\n const month = parseDateValue(monthStr, \"month\", 1, 12);\n const day = parseDateValue(dayStr, \"day\", 1, 31);\n const date = buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n if (offsetStr.toUpperCase() != \"Z\") {\n date.setTime(date.getTime() - parseOffsetToMilliseconds(offsetStr));\n }\n return date;\n};\nconst IMF_FIXDATE = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/);\nconst RFC_850_DATE = new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/);\nconst ASC_TIME = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? (\\d{4})$/);\nexport const parseRfc7231DateTime = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-7231 date-times must be expressed as strings\");\n }\n let match = IMF_FIXDATE.exec(value);\n if (match) {\n const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr, \"day\", 1, 31), { hours, minutes, seconds, fractionalMilliseconds });\n }\n match = RFC_850_DATE.exec(value);\n if (match) {\n const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n return adjustRfc850Year(buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, \"day\", 1, 31), {\n hours,\n minutes,\n seconds,\n fractionalMilliseconds,\n }));\n }\n match = ASC_TIME.exec(value);\n if (match) {\n const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match;\n return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr.trimLeft(), \"day\", 1, 31), { hours, minutes, seconds, fractionalMilliseconds });\n }\n throw new TypeError(\"Invalid RFC-7231 date-time value\");\n};\nexport const parseEpochTimestamp = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n let valueAsDouble;\n if (typeof value === \"number\") {\n valueAsDouble = value;\n }\n else if (typeof value === \"string\") {\n valueAsDouble = strictParseDouble(value);\n }\n else {\n throw new TypeError(\"Epoch timestamps must be expressed as floating point numbers or their string representation\");\n }\n if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) {\n throw new TypeError(\"Epoch timestamps must be valid, non-Infinite, non-NaN numerics\");\n }\n return new Date(Math.round(valueAsDouble * 1000));\n};\nconst buildDate = (year, month, day, time) => {\n const adjustedMonth = month - 1;\n validateDayOfMonth(year, adjustedMonth, day);\n return new Date(Date.UTC(year, adjustedMonth, day, parseDateValue(time.hours, \"hour\", 0, 23), parseDateValue(time.minutes, \"minute\", 0, 59), parseDateValue(time.seconds, \"seconds\", 0, 60), parseMilliseconds(time.fractionalMilliseconds)));\n};\nconst parseTwoDigitYear = (value) => {\n const thisYear = new Date().getUTCFullYear();\n const valueInThisCentury = Math.floor(thisYear / 100) * 100 + strictParseShort(stripLeadingZeroes(value));\n if (valueInThisCentury < thisYear) {\n return valueInThisCentury + 100;\n }\n return valueInThisCentury;\n};\nconst FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1000;\nconst adjustRfc850Year = (input) => {\n if (input.getTime() - new Date().getTime() > FIFTY_YEARS_IN_MILLIS) {\n return new Date(Date.UTC(input.getUTCFullYear() - 100, input.getUTCMonth(), input.getUTCDate(), input.getUTCHours(), input.getUTCMinutes(), input.getUTCSeconds(), input.getUTCMilliseconds()));\n }\n return input;\n};\nconst parseMonthByShortName = (value) => {\n const monthIdx = MONTHS.indexOf(value);\n if (monthIdx < 0) {\n throw new TypeError(`Invalid month: ${value}`);\n }\n return monthIdx + 1;\n};\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst validateDayOfMonth = (year, month, day) => {\n let maxDays = DAYS_IN_MONTH[month];\n if (month === 1 && isLeapYear(year)) {\n maxDays = 29;\n }\n if (day > maxDays) {\n throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`);\n }\n};\nconst isLeapYear = (year) => {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n};\nconst parseDateValue = (value, type, lower, upper) => {\n const dateVal = strictParseByte(stripLeadingZeroes(value));\n if (dateVal < lower || dateVal > upper) {\n throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`);\n }\n return dateVal;\n};\nconst parseMilliseconds = (value) => {\n if (value === null || value === undefined) {\n return 0;\n }\n return strictParseFloat32(\"0.\" + value) * 1000;\n};\nconst parseOffsetToMilliseconds = (value) => {\n const directionStr = value[0];\n let direction = 1;\n if (directionStr == \"+\") {\n direction = 1;\n }\n else if (directionStr == \"-\") {\n direction = -1;\n }\n else {\n throw new TypeError(`Offset direction, ${directionStr}, must be \"+\" or \"-\"`);\n }\n const hour = Number(value.substring(1, 3));\n const minute = Number(value.substring(4, 6));\n return direction * (hour * 60 + minute) * 60 * 1000;\n};\nconst stripLeadingZeroes = (value) => {\n let idx = 0;\n while (idx < value.length - 1 && value.charAt(idx) === \"0\") {\n idx++;\n }\n if (idx === 0) {\n return value;\n }\n return value.slice(idx);\n};\n","export class ServiceException extends Error {\n constructor(options) {\n super(options.message);\n Object.setPrototypeOf(this, ServiceException.prototype);\n this.name = options.name;\n this.$fault = options.$fault;\n this.$metadata = options.$metadata;\n }\n}\nexport const decorateServiceException = (exception, additions = {}) => {\n Object.entries(additions)\n .filter(([, v]) => v !== undefined)\n .forEach(([k, v]) => {\n if (exception[k] == undefined || exception[k] === \"\") {\n exception[k] = v;\n }\n });\n const message = exception.message || exception.Message || \"UnknownError\";\n exception.message = message;\n delete exception.Message;\n return exception;\n};\n","import { decorateServiceException } from \"./exceptions\";\nexport const throwDefaultError = ({ output, parsedBody, exceptionCtor, errorCode }) => {\n const $metadata = deserializeMetadata(output);\n const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + \"\" : undefined;\n const response = new exceptionCtor({\n name: parsedBody?.code || parsedBody?.Code || errorCode || statusCode || \"UnknownError\",\n $fault: \"client\",\n $metadata,\n });\n throw decorateServiceException(response, parsedBody);\n};\nexport const withBaseException = (ExceptionCtor) => {\n return ({ output, parsedBody, errorCode }) => {\n throwDefaultError({ output, parsedBody, exceptionCtor: ExceptionCtor, errorCode });\n };\n};\nconst deserializeMetadata = (output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"],\n});\n","export const loadConfigsForDefaultMode = (mode) => {\n switch (mode) {\n case \"standard\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3100,\n };\n case \"in-region\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 1100,\n };\n case \"cross-region\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3100,\n };\n case \"mobile\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 30000,\n };\n default:\n return {};\n }\n};\n","import { getChecksumConfiguration, resolveChecksumRuntimeConfig } from \"./checksum\";\nimport { getRetryConfiguration, resolveRetryRuntimeConfig } from \"./retry\";\nexport const getDefaultExtensionConfiguration = (runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig),\n ...getRetryConfiguration(runtimeConfig),\n };\n};\nexport const getDefaultClientConfiguration = getDefaultExtensionConfiguration;\nexport const resolveDefaultRuntimeConfig = (config) => {\n return {\n ...resolveChecksumRuntimeConfig(config),\n ...resolveRetryRuntimeConfig(config),\n };\n};\n","import { AlgorithmId } from \"@smithy/types\";\nexport { AlgorithmId };\nexport const getChecksumConfiguration = (runtimeConfig) => {\n const checksumAlgorithms = [];\n for (const id in AlgorithmId) {\n const algorithmId = AlgorithmId[id];\n if (runtimeConfig[algorithmId] === undefined) {\n continue;\n }\n checksumAlgorithms.push({\n algorithmId: () => algorithmId,\n checksumConstructor: () => runtimeConfig[algorithmId],\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n },\n };\n};\nexport const resolveChecksumRuntimeConfig = (clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n};\n","export const getRetryConfiguration = (runtimeConfig) => {\n let _retryStrategy = runtimeConfig.retryStrategy;\n return {\n setRetryStrategy(retryStrategy) {\n _retryStrategy = retryStrategy;\n },\n retryStrategy() {\n return _retryStrategy;\n },\n };\n};\nexport const resolveRetryRuntimeConfig = (retryStrategyConfiguration) => {\n const runtimeConfig = {};\n runtimeConfig.retryStrategy = retryStrategyConfiguration.retryStrategy();\n return runtimeConfig;\n};\n","export const getValueFromTextNode = (obj) => {\n const textNodeName = \"#text\";\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key][textNodeName] !== undefined) {\n obj[key] = obj[key][textNodeName];\n }\n else if (typeof obj[key] === \"object\" && obj[key] !== null) {\n obj[key] = getValueFromTextNode(obj[key]);\n }\n }\n return obj;\n};\n","export const StringWrapper = function () {\n const Class = Object.getPrototypeOf(this).constructor;\n const Constructor = Function.bind.apply(String, [null, ...arguments]);\n const instance = new Constructor();\n Object.setPrototypeOf(instance, Class.prototype);\n return instance;\n};\nStringWrapper.prototype = Object.create(String.prototype, {\n constructor: {\n value: StringWrapper,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n});\nObject.setPrototypeOf(StringWrapper, String);\nexport class LazyJsonString extends StringWrapper {\n deserializeJSON() {\n return JSON.parse(super.toString());\n }\n toJSON() {\n return super.toString();\n }\n static fromObject(object) {\n if (object instanceof LazyJsonString) {\n return object;\n }\n else if (object instanceof String || typeof object === \"string\") {\n return new LazyJsonString(object);\n }\n return new LazyJsonString(JSON.stringify(object));\n }\n}\n","export function map(arg0, arg1, arg2) {\n let target;\n let filter;\n let instructions;\n if (typeof arg1 === \"undefined\" && typeof arg2 === \"undefined\") {\n target = {};\n instructions = arg0;\n }\n else {\n target = arg0;\n if (typeof arg1 === \"function\") {\n filter = arg1;\n instructions = arg2;\n return mapWithFilter(target, filter, instructions);\n }\n else {\n instructions = arg1;\n }\n }\n for (const key of Object.keys(instructions)) {\n if (!Array.isArray(instructions[key])) {\n target[key] = instructions[key];\n continue;\n }\n applyInstruction(target, null, instructions, key);\n }\n return target;\n}\nexport const convertMap = (target) => {\n const output = {};\n for (const [k, v] of Object.entries(target || {})) {\n output[k] = [, v];\n }\n return output;\n};\nexport const take = (source, instructions) => {\n const out = {};\n for (const key in instructions) {\n applyInstruction(out, source, instructions, key);\n }\n return out;\n};\nconst mapWithFilter = (target, filter, instructions) => {\n return map(target, Object.entries(instructions).reduce((_instructions, [key, value]) => {\n if (Array.isArray(value)) {\n _instructions[key] = value;\n }\n else {\n if (typeof value === \"function\") {\n _instructions[key] = [filter, value()];\n }\n else {\n _instructions[key] = [filter, value];\n }\n }\n return _instructions;\n }, {}));\n};\nconst applyInstruction = (target, source, instructions, targetKey) => {\n if (source !== null) {\n let instruction = instructions[targetKey];\n if (typeof instruction === \"function\") {\n instruction = [, instruction];\n }\n const [filter = nonNullish, valueFn = pass, sourceKey = targetKey] = instruction;\n if ((typeof filter === \"function\" && filter(source[sourceKey])) || (typeof filter !== \"function\" && !!filter)) {\n target[targetKey] = valueFn(source[sourceKey]);\n }\n return;\n }\n let [filter, value] = instructions[targetKey];\n if (typeof value === \"function\") {\n let _value;\n const defaultFilterPassed = filter === undefined && (_value = value()) != null;\n const customFilterPassed = (typeof filter === \"function\" && !!filter(void 0)) || (typeof filter !== \"function\" && !!filter);\n if (defaultFilterPassed) {\n target[targetKey] = _value;\n }\n else if (customFilterPassed) {\n target[targetKey] = value();\n }\n }\n else {\n const defaultFilterPassed = filter === undefined && value != null;\n const customFilterPassed = (typeof filter === \"function\" && !!filter(value)) || (typeof filter !== \"function\" && !!filter);\n if (defaultFilterPassed || customFilterPassed) {\n target[targetKey] = value;\n }\n }\n};\nconst nonNullish = (_) => _ != null;\nconst pass = (_) => _;\n","export function extendedEncodeURIComponent(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n","import { extendedEncodeURIComponent } from \"./extended-encode-uri-component\";\nexport const resolvedPath = (resolvedPath, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => {\n if (input != null && input[memberName] !== undefined) {\n const labelValue = labelValueProvider();\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: \" + memberName + \".\");\n }\n resolvedPath = resolvedPath.replace(uriLabel, isGreedyLabel\n ? labelValue\n .split(\"/\")\n .map((segment) => extendedEncodeURIComponent(segment))\n .join(\"/\")\n : extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: \" + memberName + \".\");\n }\n return resolvedPath;\n};\n","export const serializeFloat = (value) => {\n if (value !== value) {\n return \"NaN\";\n }\n switch (value) {\n case Infinity:\n return \"Infinity\";\n case -Infinity:\n return \"-Infinity\";\n default:\n return value;\n }\n};\nexport const serializeDateTime = (date) => date.toISOString().replace(\".000Z\", \"Z\");\n","import { HttpRequest } from \"@smithy/protocol-http\";\nimport { NoOpLogger } from \"@smithy/smithy-client\";\nconst CONTENT_LENGTH_HEADER = \"content-length\";\nexport function checkContentLengthHeader() {\n return (next, context) => async (args) => {\n const { request } = args;\n if (HttpRequest.isInstance(request)) {\n if (!(CONTENT_LENGTH_HEADER in request.headers)) {\n const message = `Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.`;\n if (typeof context?.logger?.warn === \"function\" && !(context.logger instanceof NoOpLogger)) {\n context.logger.warn(message);\n }\n else {\n console.warn(message);\n }\n }\n }\n return next({ ...args });\n };\n}\nexport const checkContentLengthHeaderMiddlewareOptions = {\n step: \"finalizeRequest\",\n tags: [\"CHECK_CONTENT_LENGTH_HEADER\"],\n name: \"getCheckContentLengthHeaderPlugin\",\n override: true,\n};\nexport const getCheckContentLengthHeaderPlugin = (unused) => ({\n applyToStack: (clientStack) => {\n clientStack.add(checkContentLengthHeader(), checkContentLengthHeaderMiddlewareOptions);\n },\n});\n","export const regionRedirectEndpointMiddleware = (config) => {\n return (next, context) => async (args) => {\n const originalRegion = await config.region();\n const regionProviderRef = config.region;\n if (context.__s3RegionRedirect) {\n config.region = async () => {\n config.region = regionProviderRef;\n return context.__s3RegionRedirect;\n };\n }\n const result = await next(args);\n if (context.__s3RegionRedirect) {\n const region = await config.region();\n if (originalRegion !== region) {\n throw new Error(\"Region was not restored following S3 region redirect.\");\n }\n }\n return result;\n };\n};\nexport const regionRedirectEndpointMiddlewareOptions = {\n tags: [\"REGION_REDIRECT\", \"S3\"],\n name: \"regionRedirectEndpointMiddleware\",\n override: true,\n relation: \"before\",\n toMiddleware: \"endpointV2Middleware\",\n};\n","import { regionRedirectEndpointMiddleware, regionRedirectEndpointMiddlewareOptions, } from \"./region-redirect-endpoint-middleware\";\nexport function regionRedirectMiddleware(clientConfig) {\n return (next, context) => async (args) => {\n try {\n return await next(args);\n }\n catch (err) {\n if (clientConfig.followRegionRedirects &&\n err?.$metadata?.httpStatusCode === 301) {\n try {\n const actualRegion = err.$response.headers[\"x-amz-bucket-region\"];\n context.logger?.debug(`Redirecting from ${await clientConfig.region()} to ${actualRegion}`);\n context.__s3RegionRedirect = actualRegion;\n }\n catch (e) {\n throw new Error(\"Region redirect failed: \" + e);\n }\n return next(args);\n }\n else {\n throw err;\n }\n }\n };\n}\nexport const regionRedirectMiddlewareOptions = {\n step: \"initialize\",\n tags: [\"REGION_REDIRECT\", \"S3\"],\n name: \"regionRedirectMiddleware\",\n override: true,\n};\nexport const getRegionRedirectMiddlewarePlugin = (clientConfig) => ({\n applyToStack: (clientStack) => {\n clientStack.add(regionRedirectMiddleware(clientConfig), regionRedirectMiddlewareOptions);\n clientStack.addRelativeTo(regionRedirectEndpointMiddleware(clientConfig), regionRedirectEndpointMiddlewareOptions);\n },\n});\n","export class S3ExpressIdentityCache {\n constructor(data = {}) {\n this.data = data;\n this.lastPurgeTime = Date.now();\n }\n get(key) {\n const entry = this.data[key];\n if (!entry) {\n return;\n }\n return entry;\n }\n set(key, entry) {\n this.data[key] = entry;\n return entry;\n }\n delete(key) {\n delete this.data[key];\n }\n async purgeExpired() {\n const now = Date.now();\n if (this.lastPurgeTime + S3ExpressIdentityCache.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS > now) {\n return;\n }\n for (const key in this.data) {\n const entry = this.data[key];\n if (!entry.isRefreshing) {\n const credential = await entry.identity;\n if (credential.expiration) {\n if (credential.expiration.getTime() < now) {\n delete this.data[key];\n }\n }\n }\n }\n }\n}\nS3ExpressIdentityCache.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS = 30000;\n","export class S3ExpressIdentityCacheEntry {\n constructor(_identity, isRefreshing = false, accessed = Date.now()) {\n this._identity = _identity;\n this.isRefreshing = isRefreshing;\n this.accessed = accessed;\n }\n get identity() {\n this.accessed = Date.now();\n return this._identity;\n }\n}\n","import { S3ExpressIdentityCache } from \"./S3ExpressIdentityCache\";\nimport { S3ExpressIdentityCacheEntry } from \"./S3ExpressIdentityCacheEntry\";\nexport class S3ExpressIdentityProviderImpl {\n constructor(createSessionFn, cache = new S3ExpressIdentityCache()) {\n this.createSessionFn = createSessionFn;\n this.cache = cache;\n }\n async getS3ExpressIdentity(awsIdentity, identityProperties) {\n const key = identityProperties.Bucket;\n const { cache } = this;\n const entry = cache.get(key);\n if (entry) {\n return entry.identity.then((identity) => {\n const isExpired = (identity.expiration?.getTime() ?? 0) < Date.now();\n if (isExpired) {\n return cache.set(key, new S3ExpressIdentityCacheEntry(this.getIdentity(key))).identity;\n }\n const isExpiringSoon = (identity.expiration?.getTime() ?? 0) < Date.now() + S3ExpressIdentityProviderImpl.REFRESH_WINDOW_MS;\n if (isExpiringSoon && !entry.isRefreshing) {\n entry.isRefreshing = true;\n this.getIdentity(key).then((id) => {\n cache.set(key, new S3ExpressIdentityCacheEntry(Promise.resolve(id)));\n });\n }\n return identity;\n });\n }\n return cache.set(key, new S3ExpressIdentityCacheEntry(this.getIdentity(key))).identity;\n }\n async getIdentity(key) {\n await this.cache.purgeExpired().catch((error) => {\n console.warn(\"Error while clearing expired entries in S3ExpressIdentityCache: \\n\" + error);\n });\n const session = await this.createSessionFn(key);\n if (!session.Credentials?.AccessKeyId || !session.Credentials?.SecretAccessKey) {\n throw new Error(\"s3#createSession response credential missing AccessKeyId or SecretAccessKey.\");\n }\n const identity = {\n accessKeyId: session.Credentials.AccessKeyId,\n secretAccessKey: session.Credentials.SecretAccessKey,\n sessionToken: session.Credentials.SessionToken,\n expiration: session.Credentials.Expiration ? new Date(session.Credentials.Expiration) : undefined,\n };\n return identity;\n }\n}\nS3ExpressIdentityProviderImpl.REFRESH_WINDOW_MS = 60000;\n","import { SMITHY_CONTEXT_KEY } from \"@smithy/types\";\nexport const getSmithyContext = (context) => context[SMITHY_CONTEXT_KEY] || (context[SMITHY_CONTEXT_KEY] = {});\n","import { fromHex, toHex } from \"@smithy/util-hex-encoding\";\nimport { fromUtf8 } from \"@smithy/util-utf8\";\nexport class HeaderFormatter {\n format(headers) {\n const chunks = [];\n for (const headerName of Object.keys(headers)) {\n const bytes = fromUtf8(headerName);\n chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName]));\n }\n const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0));\n let position = 0;\n for (const chunk of chunks) {\n out.set(chunk, position);\n position += chunk.byteLength;\n }\n return out;\n }\n formatHeaderValue(header) {\n switch (header.type) {\n case \"boolean\":\n return Uint8Array.from([header.value ? 0 : 1]);\n case \"byte\":\n return Uint8Array.from([2, header.value]);\n case \"short\":\n const shortView = new DataView(new ArrayBuffer(3));\n shortView.setUint8(0, 3);\n shortView.setInt16(1, header.value, false);\n return new Uint8Array(shortView.buffer);\n case \"integer\":\n const intView = new DataView(new ArrayBuffer(5));\n intView.setUint8(0, 4);\n intView.setInt32(1, header.value, false);\n return new Uint8Array(intView.buffer);\n case \"long\":\n const longBytes = new Uint8Array(9);\n longBytes[0] = 5;\n longBytes.set(header.value.bytes, 1);\n return longBytes;\n case \"binary\":\n const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength));\n binView.setUint8(0, 6);\n binView.setUint16(1, header.value.byteLength, false);\n const binBytes = new Uint8Array(binView.buffer);\n binBytes.set(header.value, 3);\n return binBytes;\n case \"string\":\n const utf8Bytes = fromUtf8(header.value);\n const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength));\n strView.setUint8(0, 7);\n strView.setUint16(1, utf8Bytes.byteLength, false);\n const strBytes = new Uint8Array(strView.buffer);\n strBytes.set(utf8Bytes, 3);\n return strBytes;\n case \"timestamp\":\n const tsBytes = new Uint8Array(9);\n tsBytes[0] = 8;\n tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1);\n return tsBytes;\n case \"uuid\":\n if (!UUID_PATTERN.test(header.value)) {\n throw new Error(`Invalid UUID received: ${header.value}`);\n }\n const uuidBytes = new Uint8Array(17);\n uuidBytes[0] = 9;\n uuidBytes.set(fromHex(header.value.replace(/\\-/g, \"\")), 1);\n return uuidBytes;\n }\n }\n}\nvar HEADER_VALUE_TYPE;\n(function (HEADER_VALUE_TYPE) {\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"boolTrue\"] = 0] = \"boolTrue\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"boolFalse\"] = 1] = \"boolFalse\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"byte\"] = 2] = \"byte\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"short\"] = 3] = \"short\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"integer\"] = 4] = \"integer\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"long\"] = 5] = \"long\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"byteArray\"] = 6] = \"byteArray\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"string\"] = 7] = \"string\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"timestamp\"] = 8] = \"timestamp\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"uuid\"] = 9] = \"uuid\";\n})(HEADER_VALUE_TYPE || (HEADER_VALUE_TYPE = {}));\nconst UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;\nexport class Int64 {\n constructor(bytes) {\n this.bytes = bytes;\n if (bytes.byteLength !== 8) {\n throw new Error(\"Int64 buffers must be exactly 8 bytes\");\n }\n }\n static fromNumber(number) {\n if (number > 9223372036854776000 || number < -9223372036854776000) {\n throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`);\n }\n const bytes = new Uint8Array(8);\n for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) {\n bytes[i] = remaining;\n }\n if (number < 0) {\n negate(bytes);\n }\n return new Int64(bytes);\n }\n valueOf() {\n const bytes = this.bytes.slice(0);\n const negative = bytes[0] & 0b10000000;\n if (negative) {\n negate(bytes);\n }\n return parseInt(toHex(bytes), 16) * (negative ? -1 : 1);\n }\n toString() {\n return String(this.valueOf());\n }\n}\nfunction negate(bytes) {\n for (let i = 0; i < 8; i++) {\n bytes[i] ^= 0xff;\n }\n for (let i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0)\n break;\n }\n}\n","export const normalizeProvider = (input) => {\n if (typeof input === \"function\")\n return input;\n const promisified = Promise.resolve(input);\n return () => promisified;\n};\n","import { fromUtf8 } from \"./fromUtf8\";\nexport const toUint8Array = (data) => {\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n return new Uint8Array(data);\n};\n","export const ALGORITHM_QUERY_PARAM = \"X-Amz-Algorithm\";\nexport const CREDENTIAL_QUERY_PARAM = \"X-Amz-Credential\";\nexport const AMZ_DATE_QUERY_PARAM = \"X-Amz-Date\";\nexport const SIGNED_HEADERS_QUERY_PARAM = \"X-Amz-SignedHeaders\";\nexport const EXPIRES_QUERY_PARAM = \"X-Amz-Expires\";\nexport const SIGNATURE_QUERY_PARAM = \"X-Amz-Signature\";\nexport const TOKEN_QUERY_PARAM = \"X-Amz-Security-Token\";\nexport const REGION_SET_PARAM = \"X-Amz-Region-Set\";\nexport const AUTH_HEADER = \"authorization\";\nexport const AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase();\nexport const DATE_HEADER = \"date\";\nexport const GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER];\nexport const SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase();\nexport const SHA256_HEADER = \"x-amz-content-sha256\";\nexport const TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase();\nexport const HOST_HEADER = \"host\";\nexport const ALWAYS_UNSIGNABLE_HEADERS = {\n authorization: true,\n \"cache-control\": true,\n connection: true,\n expect: true,\n from: true,\n \"keep-alive\": true,\n \"max-forwards\": true,\n pragma: true,\n referer: true,\n te: true,\n trailer: true,\n \"transfer-encoding\": true,\n upgrade: true,\n \"user-agent\": true,\n \"x-amzn-trace-id\": true,\n};\nexport const PROXY_HEADER_PATTERN = /^proxy-/;\nexport const SEC_HEADER_PATTERN = /^sec-/;\nexport const UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i];\nexport const ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256\";\nexport const ALGORITHM_IDENTIFIER_V4A = \"AWS4-ECDSA-P256-SHA256\";\nexport const EVENT_ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256-PAYLOAD\";\nexport const UNSIGNED_PAYLOAD = \"UNSIGNED-PAYLOAD\";\nexport const MAX_CACHE_SIZE = 50;\nexport const KEY_TYPE_IDENTIFIER = \"aws4_request\";\nexport const MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7;\n","import { toHex } from \"@smithy/util-hex-encoding\";\nimport { toUint8Array } from \"@smithy/util-utf8\";\nimport { KEY_TYPE_IDENTIFIER, MAX_CACHE_SIZE } from \"./constants\";\nconst signingKeyCache = {};\nconst cacheQueue = [];\nexport const createScope = (shortDate, region, service) => `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`;\nexport const getSigningKey = async (sha256Constructor, credentials, shortDate, region, service) => {\n const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId);\n const cacheKey = `${shortDate}:${region}:${service}:${toHex(credsHash)}:${credentials.sessionToken}`;\n if (cacheKey in signingKeyCache) {\n return signingKeyCache[cacheKey];\n }\n cacheQueue.push(cacheKey);\n while (cacheQueue.length > MAX_CACHE_SIZE) {\n delete signingKeyCache[cacheQueue.shift()];\n }\n let key = `AWS4${credentials.secretAccessKey}`;\n for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) {\n key = await hmac(sha256Constructor, key, signable);\n }\n return (signingKeyCache[cacheKey] = key);\n};\nexport const clearCredentialCache = () => {\n cacheQueue.length = 0;\n Object.keys(signingKeyCache).forEach((cacheKey) => {\n delete signingKeyCache[cacheKey];\n });\n};\nconst hmac = (ctor, secret, data) => {\n const hash = new ctor(secret);\n hash.update(toUint8Array(data));\n return hash.digest();\n};\n","import { ALWAYS_UNSIGNABLE_HEADERS, PROXY_HEADER_PATTERN, SEC_HEADER_PATTERN } from \"./constants\";\nexport const getCanonicalHeaders = ({ headers }, unsignableHeaders, signableHeaders) => {\n const canonical = {};\n for (const headerName of Object.keys(headers).sort()) {\n if (headers[headerName] == undefined) {\n continue;\n }\n const canonicalHeaderName = headerName.toLowerCase();\n if (canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS ||\n unsignableHeaders?.has(canonicalHeaderName) ||\n PROXY_HEADER_PATTERN.test(canonicalHeaderName) ||\n SEC_HEADER_PATTERN.test(canonicalHeaderName)) {\n if (!signableHeaders || (signableHeaders && !signableHeaders.has(canonicalHeaderName))) {\n continue;\n }\n }\n canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\\s+/g, \" \");\n }\n return canonical;\n};\n","export const isArrayBuffer = (arg) => (typeof ArrayBuffer === \"function\" && arg instanceof ArrayBuffer) ||\n Object.prototype.toString.call(arg) === \"[object ArrayBuffer]\";\n","import { isArrayBuffer } from \"@smithy/is-array-buffer\";\nimport { toHex } from \"@smithy/util-hex-encoding\";\nimport { toUint8Array } from \"@smithy/util-utf8\";\nimport { SHA256_HEADER, UNSIGNED_PAYLOAD } from \"./constants\";\nexport const getPayloadHash = async ({ headers, body }, hashConstructor) => {\n for (const headerName of Object.keys(headers)) {\n if (headerName.toLowerCase() === SHA256_HEADER) {\n return headers[headerName];\n }\n }\n if (body == undefined) {\n return \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\";\n }\n else if (typeof body === \"string\" || ArrayBuffer.isView(body) || isArrayBuffer(body)) {\n const hashCtor = new hashConstructor();\n hashCtor.update(toUint8Array(body));\n return toHex(await hashCtor.digest());\n }\n return UNSIGNED_PAYLOAD;\n};\n","export const hasHeader = (soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return true;\n }\n }\n return false;\n};\nexport const getHeaderValue = (soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return headers[headerName];\n }\n }\n return undefined;\n};\nexport const deleteHeader = (soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n delete headers[headerName];\n }\n }\n};\n","export var SelectorType;\n(function (SelectorType) {\n SelectorType[\"ENV\"] = \"env\";\n SelectorType[\"CONFIG\"] = \"shared config entry\";\n})(SelectorType || (SelectorType = {}));\n","export const cloneRequest = ({ headers, query, ...rest }) => ({\n ...rest,\n headers: { ...headers },\n query: query ? cloneQuery(query) : undefined,\n});\nexport const cloneQuery = (query) => Object.keys(query).reduce((carry, paramName) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param,\n };\n}, {});\n","import { cloneRequest } from \"./cloneRequest\";\nexport const moveHeadersToQuery = (request, options = {}) => {\n const { headers, query = {} } = typeof request.clone === \"function\" ? request.clone() : cloneRequest(request);\n for (const name of Object.keys(headers)) {\n const lname = name.toLowerCase();\n if (lname.slice(0, 6) === \"x-amz-\" && !options.unhoistableHeaders?.has(lname)) {\n query[name] = headers[name];\n delete headers[name];\n }\n }\n return {\n ...request,\n headers,\n query,\n };\n};\n","import { cloneRequest } from \"./cloneRequest\";\nimport { GENERATED_HEADERS } from \"./constants\";\nexport const prepareRequest = (request) => {\n request = typeof request.clone === \"function\" ? request.clone() : cloneRequest(request);\n for (const headerName of Object.keys(request.headers)) {\n if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) {\n delete request.headers[headerName];\n }\n }\n return request;\n};\n","export const iso8601 = (time) => toDate(time)\n .toISOString()\n .replace(/\\.\\d{3}Z$/, \"Z\");\nexport const toDate = (time) => {\n if (typeof time === \"number\") {\n return new Date(time * 1000);\n }\n if (typeof time === \"string\") {\n if (Number(time)) {\n return new Date(Number(time) * 1000);\n }\n return new Date(time);\n }\n return time;\n};\n","import { toHex } from \"@smithy/util-hex-encoding\";\nimport { normalizeProvider } from \"@smithy/util-middleware\";\nimport { escapeUri } from \"@smithy/util-uri-escape\";\nimport { toUint8Array } from \"@smithy/util-utf8\";\nimport { ALGORITHM_IDENTIFIER, ALGORITHM_QUERY_PARAM, AMZ_DATE_HEADER, AMZ_DATE_QUERY_PARAM, AUTH_HEADER, CREDENTIAL_QUERY_PARAM, EVENT_ALGORITHM_IDENTIFIER, EXPIRES_QUERY_PARAM, MAX_PRESIGNED_TTL, SHA256_HEADER, SIGNATURE_QUERY_PARAM, SIGNED_HEADERS_QUERY_PARAM, TOKEN_HEADER, TOKEN_QUERY_PARAM, } from \"./constants\";\nimport { createScope, getSigningKey } from \"./credentialDerivation\";\nimport { getCanonicalHeaders } from \"./getCanonicalHeaders\";\nimport { getCanonicalQuery } from \"./getCanonicalQuery\";\nimport { getPayloadHash } from \"./getPayloadHash\";\nimport { HeaderFormatter } from \"./HeaderFormatter\";\nimport { hasHeader } from \"./headerUtil\";\nimport { moveHeadersToQuery } from \"./moveHeadersToQuery\";\nimport { prepareRequest } from \"./prepareRequest\";\nimport { iso8601 } from \"./utilDate\";\nexport class SignatureV4 {\n constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true, }) {\n this.headerFormatter = new HeaderFormatter();\n this.service = service;\n this.sha256 = sha256;\n this.uriEscapePath = uriEscapePath;\n this.applyChecksum = typeof applyChecksum === \"boolean\" ? applyChecksum : true;\n this.regionProvider = normalizeProvider(region);\n this.credentialProvider = normalizeProvider(credentials);\n }\n async presign(originalRequest, options = {}) {\n const { signingDate = new Date(), expiresIn = 3600, unsignableHeaders, unhoistableHeaders, signableHeaders, signingRegion, signingService, } = options;\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? (await this.regionProvider());\n const { longDate, shortDate } = formatDate(signingDate);\n if (expiresIn > MAX_PRESIGNED_TTL) {\n return Promise.reject(\"Signature version 4 presigned URLs\" + \" must have an expiration date less than one week in\" + \" the future\");\n }\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders });\n if (credentials.sessionToken) {\n request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken;\n }\n request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER;\n request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`;\n request.query[AMZ_DATE_QUERY_PARAM] = longDate;\n request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10);\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n request.query[SIGNED_HEADERS_QUERY_PARAM] = getCanonicalHeaderList(canonicalHeaders);\n request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256)));\n return request;\n }\n async sign(toSign, options) {\n if (typeof toSign === \"string\") {\n return this.signString(toSign, options);\n }\n else if (toSign.headers && toSign.payload) {\n return this.signEvent(toSign, options);\n }\n else if (toSign.message) {\n return this.signMessage(toSign, options);\n }\n else {\n return this.signRequest(toSign, options);\n }\n }\n async signEvent({ headers, payload }, { signingDate = new Date(), priorSignature, signingRegion, signingService }) {\n const region = signingRegion ?? (await this.regionProvider());\n const { shortDate, longDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const hashedPayload = await getPayloadHash({ headers: {}, body: payload }, this.sha256);\n const hash = new this.sha256();\n hash.update(headers);\n const hashedHeaders = toHex(await hash.digest());\n const stringToSign = [\n EVENT_ALGORITHM_IDENTIFIER,\n longDate,\n scope,\n priorSignature,\n hashedHeaders,\n hashedPayload,\n ].join(\"\\n\");\n return this.signString(stringToSign, { signingDate, signingRegion: region, signingService });\n }\n async signMessage(signableMessage, { signingDate = new Date(), signingRegion, signingService }) {\n const promise = this.signEvent({\n headers: this.headerFormatter.format(signableMessage.message.headers),\n payload: signableMessage.message.body,\n }, {\n signingDate,\n signingRegion,\n signingService,\n priorSignature: signableMessage.priorSignature,\n });\n return promise.then((signature) => {\n return { message: signableMessage.message, signature };\n });\n }\n async signString(stringToSign, { signingDate = new Date(), signingRegion, signingService } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? (await this.regionProvider());\n const { shortDate } = formatDate(signingDate);\n const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService));\n hash.update(toUint8Array(stringToSign));\n return toHex(await hash.digest());\n }\n async signRequest(requestToSign, { signingDate = new Date(), signableHeaders, unsignableHeaders, signingRegion, signingService, } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? (await this.regionProvider());\n const request = prepareRequest(requestToSign);\n const { longDate, shortDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n request.headers[AMZ_DATE_HEADER] = longDate;\n if (credentials.sessionToken) {\n request.headers[TOKEN_HEADER] = credentials.sessionToken;\n }\n const payloadHash = await getPayloadHash(request, this.sha256);\n if (!hasHeader(SHA256_HEADER, request.headers) && this.applyChecksum) {\n request.headers[SHA256_HEADER] = payloadHash;\n }\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n const signature = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, payloadHash));\n request.headers[AUTH_HEADER] =\n `${ALGORITHM_IDENTIFIER} ` +\n `Credential=${credentials.accessKeyId}/${scope}, ` +\n `SignedHeaders=${getCanonicalHeaderList(canonicalHeaders)}, ` +\n `Signature=${signature}`;\n return request;\n }\n createCanonicalRequest(request, canonicalHeaders, payloadHash) {\n const sortedHeaders = Object.keys(canonicalHeaders).sort();\n return `${request.method}\n${this.getCanonicalPath(request)}\n${getCanonicalQuery(request)}\n${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join(\"\\n\")}\n\n${sortedHeaders.join(\";\")}\n${payloadHash}`;\n }\n async createStringToSign(longDate, credentialScope, canonicalRequest) {\n const hash = new this.sha256();\n hash.update(toUint8Array(canonicalRequest));\n const hashedRequest = await hash.digest();\n return `${ALGORITHM_IDENTIFIER}\n${longDate}\n${credentialScope}\n${toHex(hashedRequest)}`;\n }\n getCanonicalPath({ path }) {\n if (this.uriEscapePath) {\n const normalizedPathSegments = [];\n for (const pathSegment of path.split(\"/\")) {\n if (pathSegment?.length === 0)\n continue;\n if (pathSegment === \".\")\n continue;\n if (pathSegment === \"..\") {\n normalizedPathSegments.pop();\n }\n else {\n normalizedPathSegments.push(pathSegment);\n }\n }\n const normalizedPath = `${path?.startsWith(\"/\") ? \"/\" : \"\"}${normalizedPathSegments.join(\"/\")}${normalizedPathSegments.length > 0 && path?.endsWith(\"/\") ? \"/\" : \"\"}`;\n const doubleEncoded = escapeUri(normalizedPath);\n return doubleEncoded.replace(/%2F/g, \"/\");\n }\n return path;\n }\n async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) {\n const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest);\n const hash = new this.sha256(await keyPromise);\n hash.update(toUint8Array(stringToSign));\n return toHex(await hash.digest());\n }\n getSigningKey(credentials, region, shortDate, service) {\n return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service);\n }\n validateResolvedCredentials(credentials) {\n if (typeof credentials !== \"object\" ||\n typeof credentials.accessKeyId !== \"string\" ||\n typeof credentials.secretAccessKey !== \"string\") {\n throw new Error(\"Resolved credential object is not valid\");\n }\n }\n}\nconst formatDate = (now) => {\n const longDate = iso8601(now).replace(/[\\-:]/g, \"\");\n return {\n longDate,\n shortDate: longDate.slice(0, 8),\n };\n};\nconst getCanonicalHeaderList = (headers) => Object.keys(headers).sort().join(\";\");\n","import { escapeUri } from \"@smithy/util-uri-escape\";\nimport { SIGNATURE_HEADER } from \"./constants\";\nexport const getCanonicalQuery = ({ query = {} }) => {\n const keys = [];\n const serialized = {};\n for (const key of Object.keys(query).sort()) {\n if (key.toLowerCase() === SIGNATURE_HEADER) {\n continue;\n }\n keys.push(key);\n const value = query[key];\n if (typeof value === \"string\") {\n serialized[key] = `${escapeUri(key)}=${escapeUri(value)}`;\n }\n else if (Array.isArray(value)) {\n serialized[key] = value\n .slice(0)\n .reduce((encoded, value) => encoded.concat([`${escapeUri(key)}=${escapeUri(value)}`]), [])\n .sort()\n .join(\"&\");\n }\n }\n return keys\n .map((key) => serialized[key])\n .filter((serialized) => serialized)\n .join(\"&\");\n};\n","import { booleanSelector, SelectorType } from \"@smithy/util-config-provider\";\nexport const S3_EXPRESS_BUCKET_TYPE = \"Directory\";\nexport const S3_EXPRESS_BACKEND = \"S3Express\";\nexport const S3_EXPRESS_AUTH_SCHEME = \"sigv4-s3express\";\nexport const SESSION_TOKEN_QUERY_PARAM = \"X-Amz-S3session-Token\";\nexport const SESSION_TOKEN_HEADER = SESSION_TOKEN_QUERY_PARAM.toLowerCase();\nexport const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_ENV_NAME = \"AWS_S3_DISABLE_EXPRESS_SESSION_AUTH\";\nexport const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_INI_NAME = \"s3_disable_express_session_auth\";\nexport const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS = {\n environmentVariableSelector: (env) => booleanSelector(env, NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_ENV_NAME, SelectorType.ENV),\n configFileSelector: (profile) => booleanSelector(profile, NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_INI_NAME, SelectorType.CONFIG),\n default: false,\n};\n","import { SignatureV4 } from \"@smithy/signature-v4\";\nimport { SESSION_TOKEN_HEADER, SESSION_TOKEN_QUERY_PARAM } from \"../constants\";\nexport class SignatureV4S3Express extends SignatureV4 {\n async signWithCredentials(requestToSign, credentials, options) {\n const credentialsWithoutSessionToken = getCredentialsWithoutSessionToken(credentials);\n requestToSign.headers[SESSION_TOKEN_HEADER] = credentials.sessionToken;\n const privateAccess = this;\n setSingleOverride(privateAccess, credentialsWithoutSessionToken);\n return privateAccess.signRequest(requestToSign, options ?? {});\n }\n async presignWithCredentials(requestToSign, credentials, options) {\n const credentialsWithoutSessionToken = getCredentialsWithoutSessionToken(credentials);\n delete requestToSign.headers[SESSION_TOKEN_HEADER];\n requestToSign.headers[SESSION_TOKEN_QUERY_PARAM] = credentials.sessionToken;\n requestToSign.query = requestToSign.query ?? {};\n requestToSign.query[SESSION_TOKEN_QUERY_PARAM] = credentials.sessionToken;\n const privateAccess = this;\n setSingleOverride(privateAccess, credentialsWithoutSessionToken);\n return this.presign(requestToSign, options);\n }\n}\nfunction getCredentialsWithoutSessionToken(credentials) {\n const credentialsWithoutSessionToken = {\n accessKeyId: credentials.accessKeyId,\n secretAccessKey: credentials.secretAccessKey,\n expiration: credentials.expiration,\n };\n return credentialsWithoutSessionToken;\n}\nfunction setSingleOverride(privateAccess, credentialsWithoutSessionToken) {\n const id = setTimeout(() => {\n throw new Error(\"SignatureV4S3Express credential override was created but not called.\");\n }, 10);\n const currentCredentialProvider = privateAccess.credentialProvider;\n const overrideCredentialsProviderOnce = () => {\n clearTimeout(id);\n privateAccess.credentialProvider = currentCredentialProvider;\n return Promise.resolve(credentialsWithoutSessionToken);\n };\n privateAccess.credentialProvider = overrideCredentialsProviderOnce;\n}\n","import { HttpRequest } from \"@smithy/protocol-http\";\nimport { S3_EXPRESS_AUTH_SCHEME, S3_EXPRESS_BACKEND, S3_EXPRESS_BUCKET_TYPE, SESSION_TOKEN_HEADER } from \"../constants\";\nexport const s3ExpressMiddleware = (options) => {\n return (next, context) => async (args) => {\n if (context.endpointV2) {\n const endpoint = context.endpointV2;\n const isS3ExpressAuth = endpoint.properties?.authSchemes?.[0]?.name === S3_EXPRESS_AUTH_SCHEME;\n const isS3ExpressBucket = endpoint.properties?.backend === S3_EXPRESS_BACKEND ||\n endpoint.properties?.bucketType === S3_EXPRESS_BUCKET_TYPE;\n if (isS3ExpressBucket) {\n context.isS3ExpressBucket = true;\n }\n if (isS3ExpressAuth) {\n const requestBucket = args.input.Bucket;\n if (requestBucket) {\n const s3ExpressIdentity = await options.s3ExpressIdentityProvider.getS3ExpressIdentity(await options.credentials(), {\n Bucket: requestBucket,\n });\n context.s3ExpressIdentity = s3ExpressIdentity;\n if (HttpRequest.isInstance(args.request) && s3ExpressIdentity.sessionToken) {\n args.request.headers[SESSION_TOKEN_HEADER] = s3ExpressIdentity.sessionToken;\n }\n }\n }\n }\n return next(args);\n };\n};\nexport const s3ExpressMiddlewareOptions = {\n name: \"s3ExpressMiddleware\",\n step: \"build\",\n tags: [\"S3\", \"S3_EXPRESS\"],\n override: true,\n};\nexport const getS3ExpressPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(s3ExpressMiddleware(options), s3ExpressMiddlewareOptions);\n },\n});\n","export const validate = (str) => typeof str === \"string\" && str.indexOf(\"arn:\") === 0 && str.split(\":\").length >= 6;\nexport const parse = (arn) => {\n const segments = arn.split(\":\");\n if (segments.length < 6 || segments[0] !== \"arn\")\n throw new Error(\"Malformed ARN\");\n const [, partition, service, region, accountId, ...resource] = segments;\n return {\n partition,\n service,\n region,\n accountId,\n resource: resource.join(\":\"),\n };\n};\nexport const build = (arnObject) => {\n const { partition = \"aws\", service, region, accountId, resource } = arnObject;\n if ([service, region, accountId, resource].some((segment) => typeof segment !== \"string\")) {\n throw new Error(\"Input ARN object is invalid\");\n }\n return `arn:${partition}:${service}:${region}:${accountId}:${resource}`;\n};\n","export function bucketEndpointMiddleware(options) {\n return (next, context) => async (args) => {\n if (options.bucketEndpoint) {\n const endpoint = context.endpointV2;\n if (endpoint) {\n const bucket = args.input.Bucket;\n if (typeof bucket === \"string\") {\n try {\n const bucketEndpointUrl = new URL(bucket);\n endpoint.url = bucketEndpointUrl;\n }\n catch (e) {\n const warning = `@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${bucket} could not be parsed as URL.`;\n if (context.logger?.constructor?.name === \"NoOpLogger\") {\n console.warn(warning);\n }\n else {\n context.logger?.warn?.(warning);\n }\n throw e;\n }\n }\n }\n }\n return next(args);\n };\n}\nexport const bucketEndpointMiddlewareOptions = {\n name: \"bucketEndpointMiddleware\",\n override: true,\n relation: \"after\",\n toMiddleware: \"endpointV2Middleware\",\n};\n","import { validate as validateArn } from \"@aws-sdk/util-arn-parser\";\nimport { bucketEndpointMiddleware, bucketEndpointMiddlewareOptions } from \"./bucket-endpoint-middleware\";\nexport function validateBucketNameMiddleware({ bucketEndpoint }) {\n return (next) => async (args) => {\n const { input: { Bucket }, } = args;\n if (!bucketEndpoint && typeof Bucket === \"string\" && !validateArn(Bucket) && Bucket.indexOf(\"/\") >= 0) {\n const err = new Error(`Bucket name shouldn't contain '/', received '${Bucket}'`);\n err.name = \"InvalidBucketName\";\n throw err;\n }\n return next({ ...args });\n };\n}\nexport const validateBucketNameMiddlewareOptions = {\n step: \"initialize\",\n tags: [\"VALIDATE_BUCKET_NAME\"],\n name: \"validateBucketNameMiddleware\",\n override: true,\n};\nexport const getValidateBucketNamePlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(validateBucketNameMiddleware(options), validateBucketNameMiddlewareOptions);\n clientStack.addRelativeTo(bucketEndpointMiddleware(options), bucketEndpointMiddlewareOptions);\n },\n});\n","export const memoize = (provider, isExpired, requiresRefresh) => {\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = async () => {\n if (!pending) {\n pending = provider();\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n }\n finally {\n pending = undefined;\n }\n return resolved;\n };\n if (isExpired === undefined) {\n return async (options) => {\n if (!hasResult || options?.forceRefresh) {\n resolved = await coalesceProvider();\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || options?.forceRefresh) {\n resolved = await coalesceProvider();\n }\n if (isConstant) {\n return resolved;\n }\n if (requiresRefresh && !requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider();\n return resolved;\n }\n return resolved;\n };\n};\n","export class ProviderError extends Error {\n constructor(message, options = true) {\n let logger;\n let tryNextLink = true;\n if (typeof options === \"boolean\") {\n logger = undefined;\n tryNextLink = options;\n }\n else if (options != null && typeof options === \"object\") {\n logger = options.logger;\n tryNextLink = options.tryNextLink ?? true;\n }\n super(message);\n this.name = \"ProviderError\";\n this.tryNextLink = tryNextLink;\n Object.setPrototypeOf(this, ProviderError.prototype);\n logger?.debug?.(`@smithy/property-provider ${tryNextLink ? \"->\" : \"(!)\"} ${message}`);\n }\n static from(error, options = true) {\n return Object.assign(new this(error.message, options), error);\n }\n}\n","import { memoize } from \"@smithy/property-provider\";\nimport { SignatureV4 } from \"@smithy/signature-v4\";\nimport { normalizeProvider } from \"@smithy/util-middleware\";\nconst CREDENTIAL_EXPIRE_WINDOW = 300000;\nexport const resolveAwsAuthConfig = (input) => {\n const normalizedCreds = input.credentials\n ? normalizeCredentialProvider(input.credentials)\n : input.credentialDefaultProvider(Object.assign({}, input, {\n parentClientConfig: input,\n }));\n const { signingEscapePath = true, systemClockOffset = input.systemClockOffset || 0, sha256 } = input;\n let signer;\n if (input.signer) {\n signer = normalizeProvider(input.signer);\n }\n else if (input.regionInfoProvider) {\n signer = () => normalizeProvider(input.region)()\n .then(async (region) => [\n (await input.regionInfoProvider(region, {\n useFipsEndpoint: await input.useFipsEndpoint(),\n useDualstackEndpoint: await input.useDualstackEndpoint(),\n })) || {},\n region,\n ])\n .then(([regionInfo, region]) => {\n const { signingRegion, signingService } = regionInfo;\n input.signingRegion = input.signingRegion || signingRegion || region;\n input.signingName = input.signingName || signingService || input.serviceId;\n const params = {\n ...input,\n credentials: normalizedCreds,\n region: input.signingRegion,\n service: input.signingName,\n sha256,\n uriEscapePath: signingEscapePath,\n };\n const SignerCtor = input.signerConstructor || SignatureV4;\n return new SignerCtor(params);\n });\n }\n else {\n signer = async (authScheme) => {\n authScheme = Object.assign({}, {\n name: \"sigv4\",\n signingName: input.signingName || input.defaultSigningName,\n signingRegion: await normalizeProvider(input.region)(),\n properties: {},\n }, authScheme);\n const isSigv4a = authScheme?.name === \"sigv4a\";\n const signingRegion = authScheme.signingRegion;\n const signingService = authScheme.signingName;\n let regionForSigner;\n if (isSigv4a) {\n regionForSigner = input.signingRegion || signingRegion;\n }\n else {\n input.signingRegion = input.signingRegion || signingRegion;\n regionForSigner = input.signingRegion;\n }\n input.signingName = input.signingName || signingService || input.serviceId;\n const params = {\n ...input,\n credentials: normalizedCreds,\n region: regionForSigner,\n service: input.signingName,\n sha256,\n uriEscapePath: signingEscapePath,\n };\n const SignerCtor = input.signerConstructor || SignatureV4;\n return new SignerCtor(params);\n };\n }\n return {\n ...input,\n systemClockOffset,\n signingEscapePath,\n credentials: normalizedCreds,\n signer,\n };\n};\nexport const resolveSigV4AuthConfig = (input) => {\n const normalizedCreds = input.credentials\n ? normalizeCredentialProvider(input.credentials)\n : input.credentialDefaultProvider(Object.assign({}, input, {\n parentClientConfig: input,\n }));\n const { signingEscapePath = true, systemClockOffset = input.systemClockOffset || 0, sha256 } = input;\n let signer;\n if (input.signer) {\n signer = normalizeProvider(input.signer);\n }\n else {\n signer = normalizeProvider(new SignatureV4({\n credentials: normalizedCreds,\n region: input.region,\n service: input.signingName,\n sha256,\n uriEscapePath: signingEscapePath,\n }));\n }\n return {\n ...input,\n systemClockOffset,\n signingEscapePath,\n credentials: normalizedCreds,\n signer,\n };\n};\nconst normalizeCredentialProvider = (credentials) => {\n if (typeof credentials === \"function\") {\n return memoize(credentials, (credentials) => credentials.expiration !== undefined &&\n credentials.expiration.getTime() - Date.now() < CREDENTIAL_EXPIRE_WINDOW, (credentials) => credentials.expiration !== undefined);\n }\n return normalizeProvider(credentials);\n};\n","export const getSkewCorrectedDate = (systemClockOffset) => new Date(Date.now() + systemClockOffset);\n","import { isClockSkewed } from \"./isClockSkewed\";\nexport const getUpdatedSystemClockOffset = (clockTime, currentSystemClockOffset) => {\n const clockTimeInMs = Date.parse(clockTime);\n if (isClockSkewed(clockTimeInMs, currentSystemClockOffset)) {\n return clockTimeInMs - Date.now();\n }\n return currentSystemClockOffset;\n};\n","import { getSkewCorrectedDate } from \"./getSkewCorrectedDate\";\nexport const isClockSkewed = (clockTime, systemClockOffset) => Math.abs(getSkewCorrectedDate(systemClockOffset).getTime() - clockTime) >= 300000;\n","import { HttpRequest, HttpResponse } from \"@smithy/protocol-http\";\nimport { getSkewCorrectedDate } from \"./utils/getSkewCorrectedDate\";\nimport { getUpdatedSystemClockOffset } from \"./utils/getUpdatedSystemClockOffset\";\nexport const awsAuthMiddleware = (options) => (next, context) => async function (args) {\n if (!HttpRequest.isInstance(args.request))\n return next(args);\n let authScheme;\n let signer;\n const firstAuthScheme = context.endpointV2?.properties?.authSchemes?.[0];\n const secondAuthScheme = context.endpointV2?.properties?.authSchemes?.[1];\n const firstAuthSchemeIsSigv4a = firstAuthScheme?.name === \"sigv4a\";\n if (firstAuthSchemeIsSigv4a && secondAuthScheme) {\n signer = await options.signer((authScheme = firstAuthScheme));\n const uncheckedSigner = signer;\n const sigv4aAvailable = (() => {\n if (typeof uncheckedSigner?.getSigv4aSigner === \"function\") {\n if (uncheckedSigner?.signerOptions?.runtime !== \"node\") {\n return false;\n }\n try {\n uncheckedSigner.getSigv4aSigner();\n return true;\n }\n catch (e) { }\n }\n return false;\n })();\n if (!sigv4aAvailable) {\n signer = await options.signer((authScheme = secondAuthScheme));\n }\n }\n else {\n signer = await options.signer((authScheme = firstAuthScheme));\n }\n let signedRequest;\n const multiRegionOverride = authScheme?.name === \"sigv4a\" ? authScheme?.signingRegionSet?.join(\",\") : undefined;\n const signingOptions = {\n signingDate: getSkewCorrectedDate(options.systemClockOffset),\n signingRegion: multiRegionOverride || context[\"signing_region\"],\n signingService: context[\"signing_service\"],\n };\n if (context.s3ExpressIdentity) {\n const sigV4MultiRegion = signer;\n signedRequest = await sigV4MultiRegion.signWithCredentials(args.request, context.s3ExpressIdentity, signingOptions);\n if (signedRequest.headers[\"X-Amz-Security-Token\"] || signedRequest.headers[\"x-amz-security-token\"]) {\n throw new Error(\"X-Amz-Security-Token must not be set for s3-express requests.\");\n }\n }\n else {\n signedRequest = await signer.sign(args.request, signingOptions);\n }\n const output = await next({\n ...args,\n request: signedRequest,\n }).catch((error) => {\n const serverTime = error.ServerTime ?? getDateHeader(error.$response);\n if (serverTime) {\n options.systemClockOffset = getUpdatedSystemClockOffset(serverTime, options.systemClockOffset);\n }\n throw error;\n });\n const dateHeader = getDateHeader(output.response);\n if (dateHeader) {\n options.systemClockOffset = getUpdatedSystemClockOffset(dateHeader, options.systemClockOffset);\n }\n return output;\n};\nconst getDateHeader = (response) => HttpResponse.isInstance(response) ? response.headers?.date ?? response.headers?.Date : undefined;\nexport const awsAuthMiddlewareOptions = {\n name: \"awsAuthMiddleware\",\n tags: [\"SIGNATURE\", \"AWSAUTH\"],\n relation: \"after\",\n toMiddleware: \"retryMiddleware\",\n override: true,\n};\nexport const getAwsAuthPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(awsAuthMiddleware(options), awsAuthMiddlewareOptions);\n },\n});\nexport const getSigV4AuthPlugin = getAwsAuthPlugin;\n","const IP_V4_REGEX = new RegExp(`^(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}$`);\nexport const isIpAddress = (value) => IP_V4_REGEX.test(value) || (value.startsWith(\"[\") && value.endsWith(\"]\"));\n","const VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`);\nexport const isValidHostLabel = (value, allowSubDomains = false) => {\n if (!allowSubDomains) {\n return VALID_HOST_LABEL_REGEX.test(value);\n }\n const labels = value.split(\".\");\n for (const label of labels) {\n if (!isValidHostLabel(label)) {\n return false;\n }\n }\n return true;\n};\n","export const customEndpointFunctions = {};\n","export const debugId = \"endpoints\";\n","export function toDebugString(input) {\n if (typeof input !== \"object\" || input == null) {\n return input;\n }\n if (\"ref\" in input) {\n return `$${toDebugString(input.ref)}`;\n }\n if (\"fn\" in input) {\n return `${input.fn}(${(input.argv || []).map(toDebugString).join(\", \")})`;\n }\n return JSON.stringify(input, null, 2);\n}\n","export class EndpointError extends Error {\n constructor(message) {\n super(message);\n this.name = \"EndpointError\";\n }\n}\n","import { EndpointError } from \"../types\";\nimport { getAttrPathList } from \"./getAttrPathList\";\nexport const getAttr = (value, path) => getAttrPathList(path).reduce((acc, index) => {\n if (typeof acc !== \"object\") {\n throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`);\n }\n else if (Array.isArray(acc)) {\n return acc[parseInt(index)];\n }\n return acc[index];\n}, value);\n","import { EndpointError } from \"../types\";\nexport const getAttrPathList = (path) => {\n const parts = path.split(\".\");\n const pathList = [];\n for (const part of parts) {\n const squareBracketIndex = part.indexOf(\"[\");\n if (squareBracketIndex !== -1) {\n if (part.indexOf(\"]\") !== part.length - 1) {\n throw new EndpointError(`Path: '${path}' does not end with ']'`);\n }\n const arrayIndex = part.slice(squareBracketIndex + 1, -1);\n if (Number.isNaN(parseInt(arrayIndex))) {\n throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`);\n }\n if (squareBracketIndex !== 0) {\n pathList.push(part.slice(0, squareBracketIndex));\n }\n pathList.push(arrayIndex);\n }\n else {\n pathList.push(part);\n }\n }\n return pathList;\n};\n","import { EndpointURLScheme } from \"@smithy/types\";\nimport { isIpAddress } from \"./isIpAddress\";\nconst DEFAULT_PORTS = {\n [EndpointURLScheme.HTTP]: 80,\n [EndpointURLScheme.HTTPS]: 443,\n};\nexport const parseURL = (value) => {\n const whatwgURL = (() => {\n try {\n if (value instanceof URL) {\n return value;\n }\n if (typeof value === \"object\" && \"hostname\" in value) {\n const { hostname, port, protocol = \"\", path = \"\", query = {} } = value;\n const url = new URL(`${protocol}//${hostname}${port ? `:${port}` : \"\"}${path}`);\n url.search = Object.entries(query)\n .map(([k, v]) => `${k}=${v}`)\n .join(\"&\");\n return url;\n }\n return new URL(value);\n }\n catch (error) {\n return null;\n }\n })();\n if (!whatwgURL) {\n console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`);\n return null;\n }\n const urlString = whatwgURL.href;\n const { host, hostname, pathname, protocol, search } = whatwgURL;\n if (search) {\n return null;\n }\n const scheme = protocol.slice(0, -1);\n if (!Object.values(EndpointURLScheme).includes(scheme)) {\n return null;\n }\n const isIp = isIpAddress(hostname);\n const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) ||\n (typeof value === \"string\" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`));\n const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`;\n return {\n scheme,\n authority,\n path: pathname,\n normalizedPath: pathname.endsWith(\"/\") ? pathname : `${pathname}/`,\n isIp,\n };\n};\n","import { booleanEquals, getAttr, isSet, isValidHostLabel, not, parseURL, stringEquals, substring, uriEncode, } from \"../lib\";\nexport const endpointFunctions = {\n booleanEquals,\n getAttr,\n isSet,\n isValidHostLabel,\n not,\n parseURL,\n stringEquals,\n substring,\n uriEncode,\n};\n","export const booleanEquals = (value1, value2) => value1 === value2;\n","export const isSet = (value) => value != null;\n","export const not = (value) => !value;\n","export const stringEquals = (value1, value2) => value1 === value2;\n","export const substring = (input, start, stop, reverse) => {\n if (start >= stop || input.length < stop) {\n return null;\n }\n if (!reverse) {\n return input.substring(start, stop);\n }\n return input.substring(input.length - stop, input.length - start);\n};\n","export const uriEncode = (value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);\n","import { getAttr } from \"../lib\";\nexport const evaluateTemplate = (template, options) => {\n const evaluatedTemplateArr = [];\n const templateContext = {\n ...options.endpointParams,\n ...options.referenceRecord,\n };\n let currentIndex = 0;\n while (currentIndex < template.length) {\n const openingBraceIndex = template.indexOf(\"{\", currentIndex);\n if (openingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(currentIndex));\n break;\n }\n evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex));\n const closingBraceIndex = template.indexOf(\"}\", openingBraceIndex);\n if (closingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex));\n break;\n }\n if (template[openingBraceIndex + 1] === \"{\" && template[closingBraceIndex + 1] === \"}\") {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex));\n currentIndex = closingBraceIndex + 2;\n }\n const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex);\n if (parameterName.includes(\"#\")) {\n const [refName, attrName] = parameterName.split(\"#\");\n evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName));\n }\n else {\n evaluatedTemplateArr.push(templateContext[parameterName]);\n }\n currentIndex = closingBraceIndex + 1;\n }\n return evaluatedTemplateArr.join(\"\");\n};\n","import { EndpointError } from \"../types\";\nimport { callFunction } from \"./callFunction\";\nimport { evaluateTemplate } from \"./evaluateTemplate\";\nimport { getReferenceValue } from \"./getReferenceValue\";\nexport const evaluateExpression = (obj, keyName, options) => {\n if (typeof obj === \"string\") {\n return evaluateTemplate(obj, options);\n }\n else if (obj[\"fn\"]) {\n return callFunction(obj, options);\n }\n else if (obj[\"ref\"]) {\n return getReferenceValue(obj, options);\n }\n throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`);\n};\n","export const getReferenceValue = ({ ref }, options) => {\n const referenceRecord = {\n ...options.endpointParams,\n ...options.referenceRecord,\n };\n return referenceRecord[ref];\n};\n","import { customEndpointFunctions } from \"./customEndpointFunctions\";\nimport { endpointFunctions } from \"./endpointFunctions\";\nimport { evaluateExpression } from \"./evaluateExpression\";\nexport const callFunction = ({ fn, argv }, options) => {\n const evaluatedArgs = argv.map((arg) => [\"boolean\", \"number\"].includes(typeof arg) ? arg : evaluateExpression(arg, \"arg\", options));\n const fnSegments = fn.split(\".\");\n if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) {\n return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs);\n }\n return endpointFunctions[fn](...evaluatedArgs);\n};\n","import { debugId, toDebugString } from \"../debug\";\nimport { EndpointError } from \"../types\";\nimport { callFunction } from \"./callFunction\";\nexport const evaluateCondition = ({ assign, ...fnArgs }, options) => {\n if (assign && assign in options.referenceRecord) {\n throw new EndpointError(`'${assign}' is already defined in Reference Record.`);\n }\n const value = callFunction(fnArgs, options);\n options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`);\n return {\n result: value === \"\" ? true : !!value,\n ...(assign != null && { toAssign: { name: assign, value } }),\n };\n};\n","import { debugId, toDebugString } from \"../debug\";\nimport { evaluateCondition } from \"./evaluateCondition\";\nexport const evaluateConditions = (conditions = [], options) => {\n const conditionsReferenceRecord = {};\n for (const condition of conditions) {\n const { result, toAssign } = evaluateCondition(condition, {\n ...options,\n referenceRecord: {\n ...options.referenceRecord,\n ...conditionsReferenceRecord,\n },\n });\n if (!result) {\n return { result };\n }\n if (toAssign) {\n conditionsReferenceRecord[toAssign.name] = toAssign.value;\n options.logger?.debug?.(`${debugId} assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`);\n }\n }\n return { result: true, referenceRecord: conditionsReferenceRecord };\n};\n","import { EndpointError } from \"../types\";\nimport { evaluateExpression } from \"./evaluateExpression\";\nexport const getEndpointHeaders = (headers, options) => Object.entries(headers).reduce((acc, [headerKey, headerVal]) => ({\n ...acc,\n [headerKey]: headerVal.map((headerValEntry) => {\n const processedExpr = evaluateExpression(headerValEntry, \"Header value entry\", options);\n if (typeof processedExpr !== \"string\") {\n throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`);\n }\n return processedExpr;\n }),\n}), {});\n","import { EndpointError } from \"../types\";\nimport { evaluateTemplate } from \"./evaluateTemplate\";\nimport { getEndpointProperties } from \"./getEndpointProperties\";\nexport const getEndpointProperty = (property, options) => {\n if (Array.isArray(property)) {\n return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options));\n }\n switch (typeof property) {\n case \"string\":\n return evaluateTemplate(property, options);\n case \"object\":\n if (property === null) {\n throw new EndpointError(`Unexpected endpoint property: ${property}`);\n }\n return getEndpointProperties(property, options);\n case \"boolean\":\n return property;\n default:\n throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`);\n }\n};\n","import { getEndpointProperty } from \"./getEndpointProperty\";\nexport const getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => ({\n ...acc,\n [propertyKey]: getEndpointProperty(propertyVal, options),\n}), {});\n","import { EndpointError } from \"../types\";\nimport { evaluateExpression } from \"./evaluateExpression\";\nexport const getEndpointUrl = (endpointUrl, options) => {\n const expression = evaluateExpression(endpointUrl, \"Endpoint URL\", options);\n if (typeof expression === \"string\") {\n try {\n return new URL(expression);\n }\n catch (error) {\n console.error(`Failed to construct URL with ${expression}`, error);\n throw error;\n }\n }\n throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`);\n};\n","import { debugId, toDebugString } from \"../debug\";\nimport { evaluateConditions } from \"./evaluateConditions\";\nimport { getEndpointHeaders } from \"./getEndpointHeaders\";\nimport { getEndpointProperties } from \"./getEndpointProperties\";\nimport { getEndpointUrl } from \"./getEndpointUrl\";\nexport const evaluateEndpointRule = (endpointRule, options) => {\n const { conditions, endpoint } = endpointRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n const endpointRuleOptions = {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord },\n };\n const { url, properties, headers } = endpoint;\n options.logger?.debug?.(`${debugId} Resolving endpoint from template: ${toDebugString(endpoint)}`);\n return {\n ...(headers != undefined && {\n headers: getEndpointHeaders(headers, endpointRuleOptions),\n }),\n ...(properties != undefined && {\n properties: getEndpointProperties(properties, endpointRuleOptions),\n }),\n url: getEndpointUrl(url, endpointRuleOptions),\n };\n};\n","import { EndpointError } from \"../types\";\nimport { evaluateConditions } from \"./evaluateConditions\";\nimport { evaluateExpression } from \"./evaluateExpression\";\nexport const evaluateErrorRule = (errorRule, options) => {\n const { conditions, error } = errorRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n throw new EndpointError(evaluateExpression(error, \"Error\", {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord },\n }));\n};\n","import { evaluateConditions } from \"./evaluateConditions\";\nimport { evaluateRules } from \"./evaluateRules\";\nexport const evaluateTreeRule = (treeRule, options) => {\n const { conditions, rules } = treeRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n return evaluateRules(rules, {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord },\n });\n};\n","import { EndpointError } from \"../types\";\nimport { evaluateEndpointRule } from \"./evaluateEndpointRule\";\nimport { evaluateErrorRule } from \"./evaluateErrorRule\";\nimport { evaluateTreeRule } from \"./evaluateTreeRule\";\nexport const evaluateRules = (rules, options) => {\n for (const rule of rules) {\n if (rule.type === \"endpoint\") {\n const endpointOrUndefined = evaluateEndpointRule(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n }\n else if (rule.type === \"error\") {\n evaluateErrorRule(rule, options);\n }\n else if (rule.type === \"tree\") {\n const endpointOrUndefined = evaluateTreeRule(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n }\n else {\n throw new EndpointError(`Unknown endpoint rule: ${rule}`);\n }\n }\n throw new EndpointError(`Rules evaluation failed`);\n};\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","export const parseArn = (value) => {\n const segments = value.split(\":\");\n if (segments.length < 6)\n return null;\n const [arn, partition, service, region, accountId, ...resourceId] = segments;\n if (arn !== \"arn\" || partition === \"\" || service === \"\" || resourceId[0] === \"\")\n return null;\n return {\n partition,\n service,\n region,\n accountId,\n resourceId: resourceId[0].includes(\"/\") ? resourceId[0].split(\"/\") : resourceId,\n };\n};\n","import partitionsInfo from \"./partitions.json\";\nlet selectedPartitionsInfo = partitionsInfo;\nlet selectedUserAgentPrefix = \"\";\nexport const partition = (value) => {\n const { partitions } = selectedPartitionsInfo;\n for (const partition of partitions) {\n const { regions, outputs } = partition;\n for (const [region, regionData] of Object.entries(regions)) {\n if (region === value) {\n return {\n ...outputs,\n ...regionData,\n };\n }\n }\n }\n for (const partition of partitions) {\n const { regionRegex, outputs } = partition;\n if (new RegExp(regionRegex).test(value)) {\n return {\n ...outputs,\n };\n }\n }\n const DEFAULT_PARTITION = partitions.find((partition) => partition.id === \"aws\");\n if (!DEFAULT_PARTITION) {\n throw new Error(\"Provided region was not found in the partition array or regex,\" +\n \" and default partition with id 'aws' doesn't exist.\");\n }\n return {\n ...DEFAULT_PARTITION.outputs,\n };\n};\nexport const setPartitionInfo = (partitionsInfo, userAgentPrefix = \"\") => {\n selectedPartitionsInfo = partitionsInfo;\n selectedUserAgentPrefix = userAgentPrefix;\n};\nexport const useDefaultPartitionInfo = () => {\n setPartitionInfo(partitionsInfo, \"\");\n};\nexport const getUserAgentPrefix = () => selectedUserAgentPrefix;\n","import { customEndpointFunctions } from \"@smithy/util-endpoints\";\nimport { isVirtualHostableS3Bucket } from \"./lib/aws/isVirtualHostableS3Bucket\";\nimport { parseArn } from \"./lib/aws/parseArn\";\nimport { partition } from \"./lib/aws/partition\";\nexport const awsEndpointFunctions = {\n isVirtualHostableS3Bucket: isVirtualHostableS3Bucket,\n parseArn: parseArn,\n partition: partition,\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n","import { isValidHostLabel } from \"@smithy/util-endpoints\";\nimport { isIpAddress } from \"../isIpAddress\";\nexport const isVirtualHostableS3Bucket = (value, allowSubDomains = false) => {\n if (allowSubDomains) {\n for (const label of value.split(\".\")) {\n if (!isVirtualHostableS3Bucket(label)) {\n return false;\n }\n }\n return true;\n }\n if (!isValidHostLabel(value)) {\n return false;\n }\n if (value.length < 3 || value.length > 63) {\n return false;\n }\n if (value !== value.toLowerCase()) {\n return false;\n }\n if (isIpAddress(value)) {\n return false;\n }\n return true;\n};\n","export const USER_AGENT = \"user-agent\";\nexport const X_AMZ_USER_AGENT = \"x-amz-user-agent\";\nexport const SPACE = \" \";\nexport const UA_NAME_SEPARATOR = \"/\";\nexport const UA_NAME_ESCAPE_REGEX = /[^\\!\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~\\d\\w]/g;\nexport const UA_VALUE_ESCAPE_REGEX = /[^\\!\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~\\d\\w\\#]/g;\nexport const UA_ESCAPE_CHAR = \"-\";\n","import { getUserAgentPrefix } from \"@aws-sdk/util-endpoints\";\nimport { HttpRequest } from \"@smithy/protocol-http\";\nimport { SPACE, UA_ESCAPE_CHAR, UA_NAME_ESCAPE_REGEX, UA_NAME_SEPARATOR, UA_VALUE_ESCAPE_REGEX, USER_AGENT, X_AMZ_USER_AGENT, } from \"./constants\";\nexport const userAgentMiddleware = (options) => (next, context) => async (args) => {\n const { request } = args;\n if (!HttpRequest.isInstance(request))\n return next(args);\n const { headers } = request;\n const userAgent = context?.userAgent?.map(escapeUserAgent) || [];\n const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent);\n const customUserAgent = options?.customUserAgent?.map(escapeUserAgent) || [];\n const prefix = getUserAgentPrefix();\n const sdkUserAgentValue = (prefix ? [prefix] : [])\n .concat([...defaultUserAgent, ...userAgent, ...customUserAgent])\n .join(SPACE);\n const normalUAValue = [\n ...defaultUserAgent.filter((section) => section.startsWith(\"aws-sdk-\")),\n ...customUserAgent,\n ].join(SPACE);\n if (options.runtime !== \"browser\") {\n if (normalUAValue) {\n headers[X_AMZ_USER_AGENT] = headers[X_AMZ_USER_AGENT]\n ? `${headers[USER_AGENT]} ${normalUAValue}`\n : normalUAValue;\n }\n headers[USER_AGENT] = sdkUserAgentValue;\n }\n else {\n headers[X_AMZ_USER_AGENT] = sdkUserAgentValue;\n }\n return next({\n ...args,\n request,\n });\n};\nconst escapeUserAgent = (userAgentPair) => {\n const name = userAgentPair[0]\n .split(UA_NAME_SEPARATOR)\n .map((part) => part.replace(UA_NAME_ESCAPE_REGEX, UA_ESCAPE_CHAR))\n .join(UA_NAME_SEPARATOR);\n const version = userAgentPair[1]?.replace(UA_VALUE_ESCAPE_REGEX, UA_ESCAPE_CHAR);\n const prefixSeparatorIndex = name.indexOf(UA_NAME_SEPARATOR);\n const prefix = name.substring(0, prefixSeparatorIndex);\n let uaName = name.substring(prefixSeparatorIndex + 1);\n if (prefix === \"api\") {\n uaName = uaName.toLowerCase();\n }\n return [prefix, uaName, version]\n .filter((item) => item && item.length > 0)\n .reduce((acc, item, index) => {\n switch (index) {\n case 0:\n return item;\n case 1:\n return `${acc}/${item}`;\n default:\n return `${acc}#${item}`;\n }\n }, \"\");\n};\nexport const getUserAgentMiddlewareOptions = {\n name: \"getUserAgentMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"SET_USER_AGENT\", \"USER_AGENT\"],\n override: true,\n};\nexport const getUserAgentPlugin = (config) => ({\n applyToStack: (clientStack) => {\n clientStack.add(userAgentMiddleware(config), getUserAgentMiddlewareOptions);\n },\n});\n","export const isFipsRegion = (region) => typeof region === \"string\" && (region.startsWith(\"fips-\") || region.endsWith(\"-fips\"));\n","import { isFipsRegion } from \"./isFipsRegion\";\nexport const getRealRegion = (region) => isFipsRegion(region)\n ? [\"fips-aws-global\", \"aws-fips\"].includes(region)\n ? \"us-east-1\"\n : region.replace(/fips-(dkr-|prod-)?|-fips/, \"\")\n : region;\n","import { HttpRequest } from \"@smithy/protocol-http\";\nconst CONTENT_LENGTH_HEADER = \"content-length\";\nexport function contentLengthMiddleware(bodyLengthChecker) {\n return (next) => async (args) => {\n const request = args.request;\n if (HttpRequest.isInstance(request)) {\n const { body, headers } = request;\n if (body &&\n Object.keys(headers)\n .map((str) => str.toLowerCase())\n .indexOf(CONTENT_LENGTH_HEADER) === -1) {\n try {\n const length = bodyLengthChecker(body);\n request.headers = {\n ...request.headers,\n [CONTENT_LENGTH_HEADER]: String(length),\n };\n }\n catch (error) {\n }\n }\n }\n return next({\n ...args,\n request,\n });\n };\n}\nexport const contentLengthMiddlewareOptions = {\n step: \"build\",\n tags: [\"SET_CONTENT_LENGTH\", \"CONTENT_LENGTH\"],\n name: \"contentLengthMiddleware\",\n override: true,\n};\nexport const getContentLengthPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions);\n },\n});\n","export const resolveParamsForS3 = async (endpointParams) => {\n const bucket = endpointParams?.Bucket || \"\";\n if (typeof endpointParams.Bucket === \"string\") {\n endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent(\"#\")).replace(/\\?/g, encodeURIComponent(\"?\"));\n }\n if (isArnBucketName(bucket)) {\n if (endpointParams.ForcePathStyle === true) {\n throw new Error(\"Path-style addressing cannot be used with ARN buckets\");\n }\n }\n else if (!isDnsCompatibleBucketName(bucket) ||\n (bucket.indexOf(\".\") !== -1 && !String(endpointParams.Endpoint).startsWith(\"http:\")) ||\n bucket.toLowerCase() !== bucket ||\n bucket.length < 3) {\n endpointParams.ForcePathStyle = true;\n }\n if (endpointParams.DisableMultiRegionAccessPoints) {\n endpointParams.disableMultiRegionAccessPoints = true;\n endpointParams.DisableMRAP = true;\n }\n return endpointParams;\n};\nconst DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$/;\nconst IP_ADDRESS_PATTERN = /(\\d+\\.){3}\\d+/;\nconst DOTS_PATTERN = /\\.\\./;\nexport const DOT_PATTERN = /\\./;\nexport const S3_HOSTNAME_PATTERN = /^(.+\\.)?s3(-fips)?(\\.dualstack)?[.-]([a-z0-9-]+)\\./;\nexport const isDnsCompatibleBucketName = (bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName);\nexport const isArnBucketName = (bucketName) => {\n const [arn, partition, service, , , bucket] = bucketName.split(\":\");\n const isArn = arn === \"arn\" && bucketName.split(\":\").length >= 6;\n const isValidArn = Boolean(isArn && partition && service && bucket);\n if (isArn && !isValidArn) {\n throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`);\n }\n return isValidArn;\n};\n","export const createConfigValueProvider = (configKey, canonicalEndpointParamKey, config) => {\n const configProvider = async () => {\n const configValue = config[configKey] ?? config[canonicalEndpointParamKey];\n if (typeof configValue === \"function\") {\n return configValue();\n }\n return configValue;\n };\n if (configKey === \"credentialScope\" || canonicalEndpointParamKey === \"CredentialScope\") {\n return async () => {\n const credentials = typeof config.credentials === \"function\" ? await config.credentials() : config.credentials;\n const configValue = credentials?.credentialScope ?? credentials?.CredentialScope;\n return configValue;\n };\n }\n if (configKey === \"endpoint\" || canonicalEndpointParamKey === \"endpoint\") {\n return async () => {\n const endpoint = await configProvider();\n if (endpoint && typeof endpoint === \"object\") {\n if (\"url\" in endpoint) {\n return endpoint.url.href;\n }\n if (\"hostname\" in endpoint) {\n const { protocol, hostname, port, path } = endpoint;\n return `${protocol}//${hostname}${port ? \":\" + port : \"\"}${path}`;\n }\n }\n return endpoint;\n };\n }\n return configProvider;\n};\n","export const getEndpointFromConfig = async (serviceId) => undefined;\n","import { parseQueryString } from \"@smithy/querystring-parser\";\nexport const parseUrl = (url) => {\n if (typeof url === \"string\") {\n return parseUrl(new URL(url));\n }\n const { hostname, pathname, port, protocol, search } = url;\n let query;\n if (search) {\n query = parseQueryString(search);\n }\n return {\n hostname,\n port: port ? parseInt(port) : undefined,\n protocol,\n path: pathname,\n query,\n };\n};\n","export function parseQueryString(querystring) {\n const query = {};\n querystring = querystring.replace(/^\\?/, \"\");\n if (querystring) {\n for (const pair of querystring.split(\"&\")) {\n let [key, value = null] = pair.split(\"=\");\n key = decodeURIComponent(key);\n if (value) {\n value = decodeURIComponent(value);\n }\n if (!(key in query)) {\n query[key] = value;\n }\n else if (Array.isArray(query[key])) {\n query[key].push(value);\n }\n else {\n query[key] = [query[key], value];\n }\n }\n }\n return query;\n}\n","import { parseUrl } from \"@smithy/url-parser\";\nexport const toEndpointV1 = (endpoint) => {\n if (typeof endpoint === \"object\") {\n if (\"url\" in endpoint) {\n return parseUrl(endpoint.url);\n }\n return endpoint;\n }\n return parseUrl(endpoint);\n};\n","import { resolveParamsForS3 } from \"../service-customizations\";\nimport { createConfigValueProvider } from \"./createConfigValueProvider\";\nimport { getEndpointFromConfig } from \"./getEndpointFromConfig\";\nimport { toEndpointV1 } from \"./toEndpointV1\";\nexport const getEndpointFromInstructions = async (commandInput, instructionsSupplier, clientConfig, context) => {\n if (!clientConfig.endpoint) {\n const endpointFromConfig = await getEndpointFromConfig(clientConfig.serviceId || \"\");\n if (endpointFromConfig) {\n clientConfig.endpoint = () => Promise.resolve(toEndpointV1(endpointFromConfig));\n }\n }\n const endpointParams = await resolveParams(commandInput, instructionsSupplier, clientConfig);\n if (typeof clientConfig.endpointProvider !== \"function\") {\n throw new Error(\"config.endpointProvider is not set.\");\n }\n const endpoint = clientConfig.endpointProvider(endpointParams, context);\n return endpoint;\n};\nexport const resolveParams = async (commandInput, instructionsSupplier, clientConfig) => {\n const endpointParams = {};\n const instructions = instructionsSupplier?.getEndpointParameterInstructions?.() || {};\n for (const [name, instruction] of Object.entries(instructions)) {\n switch (instruction.type) {\n case \"staticContextParams\":\n endpointParams[name] = instruction.value;\n break;\n case \"contextParams\":\n endpointParams[name] = commandInput[instruction.name];\n break;\n case \"clientContextParams\":\n case \"builtInParams\":\n endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig)();\n break;\n default:\n throw new Error(\"Unrecognized endpoint parameter instruction: \" + JSON.stringify(instruction));\n }\n }\n if (Object.keys(instructions).length === 0) {\n Object.assign(endpointParams, clientConfig);\n }\n if (String(clientConfig.serviceId).toLowerCase() === \"s3\") {\n await resolveParamsForS3(endpointParams);\n }\n return endpointParams;\n};\n","import { deserializerMiddleware } from \"./deserializerMiddleware\";\nimport { serializerMiddleware } from \"./serializerMiddleware\";\nexport const deserializerMiddlewareOption = {\n name: \"deserializerMiddleware\",\n step: \"deserialize\",\n tags: [\"DESERIALIZER\"],\n override: true,\n};\nexport const serializerMiddlewareOption = {\n name: \"serializerMiddleware\",\n step: \"serialize\",\n tags: [\"SERIALIZER\"],\n override: true,\n};\nexport function getSerdePlugin(config, serializer, deserializer) {\n return {\n applyToStack: (commandStack) => {\n commandStack.add(deserializerMiddleware(config, deserializer), deserializerMiddlewareOption);\n commandStack.add(serializerMiddleware(config, serializer), serializerMiddlewareOption);\n },\n };\n}\n","export const deserializerMiddleware = (options, deserializer) => (next) => async (args) => {\n const { response } = await next(args);\n try {\n const parsed = await deserializer(response, options);\n return {\n response,\n output: parsed,\n };\n }\n catch (error) {\n Object.defineProperty(error, \"$response\", {\n value: response,\n });\n if (!(\"$metadata\" in error)) {\n const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`;\n error.message += \"\\n \" + hint;\n if (typeof error.$responseBodyText !== \"undefined\") {\n if (error.$response) {\n error.$response.body = error.$responseBodyText;\n }\n }\n }\n throw error;\n }\n};\n","export const serializerMiddleware = (options, serializer) => (next, context) => async (args) => {\n const endpoint = context.endpointV2?.url && options.urlParser\n ? async () => options.urlParser(context.endpointV2.url)\n : options.endpoint;\n if (!endpoint) {\n throw new Error(\"No valid endpoint provider available.\");\n }\n const request = await serializer(args.input, { ...options, endpoint });\n return next({\n ...args,\n request,\n });\n};\n","import { serializerMiddlewareOption } from \"@smithy/middleware-serde\";\nimport { endpointMiddleware } from \"./endpointMiddleware\";\nexport const endpointMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"ENDPOINT_PARAMETERS\", \"ENDPOINT_V2\", \"ENDPOINT\"],\n name: \"endpointV2Middleware\",\n override: true,\n relation: \"before\",\n toMiddleware: serializerMiddlewareOption.name,\n};\nexport const getEndpointPlugin = (config, instructions) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(endpointMiddleware({\n config,\n instructions,\n }), endpointMiddlewareOptions);\n },\n});\n","export var RETRY_MODES;\n(function (RETRY_MODES) {\n RETRY_MODES[\"STANDARD\"] = \"standard\";\n RETRY_MODES[\"ADAPTIVE\"] = \"adaptive\";\n})(RETRY_MODES || (RETRY_MODES = {}));\nexport const DEFAULT_MAX_ATTEMPTS = 3;\nexport const DEFAULT_RETRY_MODE = RETRY_MODES.STANDARD;\n","import { getSmithyContext } from \"@smithy/util-middleware\";\nimport { getEndpointFromInstructions } from \"./adaptors/getEndpointFromInstructions\";\nexport const endpointMiddleware = ({ config, instructions, }) => {\n return (next, context) => async (args) => {\n const endpoint = await getEndpointFromInstructions(args.input, {\n getEndpointParameterInstructions() {\n return instructions;\n },\n }, { ...config }, context);\n context.endpointV2 = endpoint;\n context.authSchemes = endpoint.properties?.authSchemes;\n const authScheme = context.authSchemes?.[0];\n if (authScheme) {\n context[\"signing_region\"] = authScheme.signingRegion;\n context[\"signing_service\"] = authScheme.signingName;\n const smithyContext = getSmithyContext(context);\n const httpAuthOption = smithyContext?.selectedHttpAuthScheme?.httpAuthOption;\n if (httpAuthOption) {\n httpAuthOption.signingProperties = Object.assign(httpAuthOption.signingProperties || {}, {\n signing_region: authScheme.signingRegion,\n signingRegion: authScheme.signingRegion,\n signing_service: authScheme.signingName,\n signingName: authScheme.signingName,\n signingRegionSet: authScheme.signingRegionSet,\n }, authScheme.properties);\n }\n }\n return next({\n ...args,\n });\n };\n};\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export const CLOCK_SKEW_ERROR_CODES = [\n \"AuthFailure\",\n \"InvalidSignatureException\",\n \"RequestExpired\",\n \"RequestInTheFuture\",\n \"RequestTimeTooSkewed\",\n \"SignatureDoesNotMatch\",\n];\nexport const THROTTLING_ERROR_CODES = [\n \"BandwidthLimitExceeded\",\n \"EC2ThrottledException\",\n \"LimitExceededException\",\n \"PriorRequestNotComplete\",\n \"ProvisionedThroughputExceededException\",\n \"RequestLimitExceeded\",\n \"RequestThrottled\",\n \"RequestThrottledException\",\n \"SlowDown\",\n \"ThrottledException\",\n \"Throttling\",\n \"ThrottlingException\",\n \"TooManyRequestsException\",\n \"TransactionInProgressException\",\n];\nexport const TRANSIENT_ERROR_CODES = [\"TimeoutError\", \"RequestTimeout\", \"RequestTimeoutException\"];\nexport const TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504];\nexport const NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"ECONNREFUSED\", \"EPIPE\", \"ETIMEDOUT\"];\n","import { CLOCK_SKEW_ERROR_CODES, NODEJS_TIMEOUT_ERROR_CODES, THROTTLING_ERROR_CODES, TRANSIENT_ERROR_CODES, TRANSIENT_ERROR_STATUS_CODES, } from \"./constants\";\nexport const isRetryableByTrait = (error) => error.$retryable !== undefined;\nexport const isClockSkewError = (error) => CLOCK_SKEW_ERROR_CODES.includes(error.name);\nexport const isClockSkewCorrectedError = (error) => error.$metadata?.clockSkewCorrected;\nexport const isThrottlingError = (error) => error.$metadata?.httpStatusCode === 429 ||\n THROTTLING_ERROR_CODES.includes(error.name) ||\n error.$retryable?.throttling == true;\nexport const isTransientError = (error) => isClockSkewCorrectedError(error) ||\n TRANSIENT_ERROR_CODES.includes(error.name) ||\n NODEJS_TIMEOUT_ERROR_CODES.includes(error?.code || \"\") ||\n TRANSIENT_ERROR_STATUS_CODES.includes(error.$metadata?.httpStatusCode || 0);\nexport const isServerError = (error) => {\n if (error.$metadata?.httpStatusCode !== undefined) {\n const statusCode = error.$metadata.httpStatusCode;\n if (500 <= statusCode && statusCode <= 599 && !isTransientError(error)) {\n return true;\n }\n return false;\n }\n return false;\n};\n","import { isThrottlingError } from \"@smithy/service-error-classification\";\nexport class DefaultRateLimiter {\n constructor(options) {\n this.currentCapacity = 0;\n this.enabled = false;\n this.lastMaxRate = 0;\n this.measuredTxRate = 0;\n this.requestCount = 0;\n this.lastTimestamp = 0;\n this.timeWindow = 0;\n this.beta = options?.beta ?? 0.7;\n this.minCapacity = options?.minCapacity ?? 1;\n this.minFillRate = options?.minFillRate ?? 0.5;\n this.scaleConstant = options?.scaleConstant ?? 0.4;\n this.smooth = options?.smooth ?? 0.8;\n const currentTimeInSeconds = this.getCurrentTimeInSeconds();\n this.lastThrottleTime = currentTimeInSeconds;\n this.lastTxRateBucket = Math.floor(this.getCurrentTimeInSeconds());\n this.fillRate = this.minFillRate;\n this.maxCapacity = this.minCapacity;\n }\n getCurrentTimeInSeconds() {\n return Date.now() / 1000;\n }\n async getSendToken() {\n return this.acquireTokenBucket(1);\n }\n async acquireTokenBucket(amount) {\n if (!this.enabled) {\n return;\n }\n this.refillTokenBucket();\n if (amount > this.currentCapacity) {\n const delay = ((amount - this.currentCapacity) / this.fillRate) * 1000;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n this.currentCapacity = this.currentCapacity - amount;\n }\n refillTokenBucket() {\n const timestamp = this.getCurrentTimeInSeconds();\n if (!this.lastTimestamp) {\n this.lastTimestamp = timestamp;\n return;\n }\n const fillAmount = (timestamp - this.lastTimestamp) * this.fillRate;\n this.currentCapacity = Math.min(this.maxCapacity, this.currentCapacity + fillAmount);\n this.lastTimestamp = timestamp;\n }\n updateClientSendingRate(response) {\n let calculatedRate;\n this.updateMeasuredRate();\n if (isThrottlingError(response)) {\n const rateToUse = !this.enabled ? this.measuredTxRate : Math.min(this.measuredTxRate, this.fillRate);\n this.lastMaxRate = rateToUse;\n this.calculateTimeWindow();\n this.lastThrottleTime = this.getCurrentTimeInSeconds();\n calculatedRate = this.cubicThrottle(rateToUse);\n this.enableTokenBucket();\n }\n else {\n this.calculateTimeWindow();\n calculatedRate = this.cubicSuccess(this.getCurrentTimeInSeconds());\n }\n const newRate = Math.min(calculatedRate, 2 * this.measuredTxRate);\n this.updateTokenBucketRate(newRate);\n }\n calculateTimeWindow() {\n this.timeWindow = this.getPrecise(Math.pow((this.lastMaxRate * (1 - this.beta)) / this.scaleConstant, 1 / 3));\n }\n cubicThrottle(rateToUse) {\n return this.getPrecise(rateToUse * this.beta);\n }\n cubicSuccess(timestamp) {\n return this.getPrecise(this.scaleConstant * Math.pow(timestamp - this.lastThrottleTime - this.timeWindow, 3) + this.lastMaxRate);\n }\n enableTokenBucket() {\n this.enabled = true;\n }\n updateTokenBucketRate(newRate) {\n this.refillTokenBucket();\n this.fillRate = Math.max(newRate, this.minFillRate);\n this.maxCapacity = Math.max(newRate, this.minCapacity);\n this.currentCapacity = Math.min(this.currentCapacity, this.maxCapacity);\n }\n updateMeasuredRate() {\n const t = this.getCurrentTimeInSeconds();\n const timeBucket = Math.floor(t * 2) / 2;\n this.requestCount++;\n if (timeBucket > this.lastTxRateBucket) {\n const currentRate = this.requestCount / (timeBucket - this.lastTxRateBucket);\n this.measuredTxRate = this.getPrecise(currentRate * this.smooth + this.measuredTxRate * (1 - this.smooth));\n this.requestCount = 0;\n this.lastTxRateBucket = timeBucket;\n }\n }\n getPrecise(num) {\n return parseFloat(num.toFixed(8));\n }\n}\n","import { MAXIMUM_RETRY_DELAY } from \"./constants\";\nexport const createDefaultRetryToken = ({ retryDelay, retryCount, retryCost, }) => {\n const getRetryCount = () => retryCount;\n const getRetryDelay = () => Math.min(MAXIMUM_RETRY_DELAY, retryDelay);\n const getRetryCost = () => retryCost;\n return {\n getRetryCount,\n getRetryDelay,\n getRetryCost,\n };\n};\n","export const DEFAULT_RETRY_DELAY_BASE = 100;\nexport const MAXIMUM_RETRY_DELAY = 20 * 1000;\nexport const THROTTLING_RETRY_DELAY_BASE = 500;\nexport const INITIAL_RETRY_TOKENS = 500;\nexport const RETRY_COST = 5;\nexport const TIMEOUT_RETRY_COST = 10;\nexport const NO_RETRY_INCREMENT = 1;\nexport const INVOCATION_ID_HEADER = \"amz-sdk-invocation-id\";\nexport const REQUEST_HEADER = \"amz-sdk-request\";\n","import { DEFAULT_MAX_ATTEMPTS, RETRY_MODES } from \"./config\";\nimport { DEFAULT_RETRY_DELAY_BASE, INITIAL_RETRY_TOKENS, NO_RETRY_INCREMENT, RETRY_COST, THROTTLING_RETRY_DELAY_BASE, TIMEOUT_RETRY_COST, } from \"./constants\";\nimport { getDefaultRetryBackoffStrategy } from \"./defaultRetryBackoffStrategy\";\nimport { createDefaultRetryToken } from \"./defaultRetryToken\";\nexport class StandardRetryStrategy {\n constructor(maxAttempts) {\n this.maxAttempts = maxAttempts;\n this.mode = RETRY_MODES.STANDARD;\n this.capacity = INITIAL_RETRY_TOKENS;\n this.retryBackoffStrategy = getDefaultRetryBackoffStrategy();\n this.maxAttemptsProvider = typeof maxAttempts === \"function\" ? maxAttempts : async () => maxAttempts;\n }\n async acquireInitialRetryToken(retryTokenScope) {\n return createDefaultRetryToken({\n retryDelay: DEFAULT_RETRY_DELAY_BASE,\n retryCount: 0,\n });\n }\n async refreshRetryTokenForRetry(token, errorInfo) {\n const maxAttempts = await this.getMaxAttempts();\n if (this.shouldRetry(token, errorInfo, maxAttempts)) {\n const errorType = errorInfo.errorType;\n this.retryBackoffStrategy.setDelayBase(errorType === \"THROTTLING\" ? THROTTLING_RETRY_DELAY_BASE : DEFAULT_RETRY_DELAY_BASE);\n const delayFromErrorType = this.retryBackoffStrategy.computeNextBackoffDelay(token.getRetryCount());\n const retryDelay = errorInfo.retryAfterHint\n ? Math.max(errorInfo.retryAfterHint.getTime() - Date.now() || 0, delayFromErrorType)\n : delayFromErrorType;\n const capacityCost = this.getCapacityCost(errorType);\n this.capacity -= capacityCost;\n return createDefaultRetryToken({\n retryDelay,\n retryCount: token.getRetryCount() + 1,\n retryCost: capacityCost,\n });\n }\n throw new Error(\"No retry token available\");\n }\n recordSuccess(token) {\n this.capacity = Math.max(INITIAL_RETRY_TOKENS, this.capacity + (token.getRetryCost() ?? NO_RETRY_INCREMENT));\n }\n getCapacity() {\n return this.capacity;\n }\n async getMaxAttempts() {\n try {\n return await this.maxAttemptsProvider();\n }\n catch (error) {\n console.warn(`Max attempts provider could not resolve. Using default of ${DEFAULT_MAX_ATTEMPTS}`);\n return DEFAULT_MAX_ATTEMPTS;\n }\n }\n shouldRetry(tokenToRenew, errorInfo, maxAttempts) {\n const attempts = tokenToRenew.getRetryCount() + 1;\n return (attempts < maxAttempts &&\n this.capacity >= this.getCapacityCost(errorInfo.errorType) &&\n this.isRetryableError(errorInfo.errorType));\n }\n getCapacityCost(errorType) {\n return errorType === \"TRANSIENT\" ? TIMEOUT_RETRY_COST : RETRY_COST;\n }\n isRetryableError(errorType) {\n return errorType === \"THROTTLING\" || errorType === \"TRANSIENT\";\n }\n}\n","import { DEFAULT_RETRY_DELAY_BASE, MAXIMUM_RETRY_DELAY } from \"./constants\";\nexport const getDefaultRetryBackoffStrategy = () => {\n let delayBase = DEFAULT_RETRY_DELAY_BASE;\n const computeNextBackoffDelay = (attempts) => {\n return Math.floor(Math.min(MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase));\n };\n const setDelayBase = (delay) => {\n delayBase = delay;\n };\n return {\n computeNextBackoffDelay,\n setDelayBase,\n };\n};\n","import { RETRY_MODES } from \"./config\";\nimport { DefaultRateLimiter } from \"./DefaultRateLimiter\";\nimport { StandardRetryStrategy } from \"./StandardRetryStrategy\";\nexport class AdaptiveRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n this.maxAttemptsProvider = maxAttemptsProvider;\n this.mode = RETRY_MODES.ADAPTIVE;\n const { rateLimiter } = options ?? {};\n this.rateLimiter = rateLimiter ?? new DefaultRateLimiter();\n this.standardRetryStrategy = new StandardRetryStrategy(maxAttemptsProvider);\n }\n async acquireInitialRetryToken(retryTokenScope) {\n await this.rateLimiter.getSendToken();\n return this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope);\n }\n async refreshRetryTokenForRetry(tokenToRenew, errorInfo) {\n this.rateLimiter.updateClientSendingRate(errorInfo);\n return this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo);\n }\n recordSuccess(token) {\n this.rateLimiter.updateClientSendingRate({});\n this.standardRetryStrategy.recordSuccess(token);\n }\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { SENSITIVE_STRING } from \"@smithy/smithy-client\";\nimport { S3ServiceException as __BaseException } from \"./S3ServiceException\";\nexport const RequestCharged = {\n requester: \"requester\",\n};\nexport const RequestPayer = {\n requester: \"requester\",\n};\nexport class NoSuchUpload extends __BaseException {\n constructor(opts) {\n super({\n name: \"NoSuchUpload\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"NoSuchUpload\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, NoSuchUpload.prototype);\n }\n}\nexport const BucketAccelerateStatus = {\n Enabled: \"Enabled\",\n Suspended: \"Suspended\",\n};\nexport const Type = {\n AmazonCustomerByEmail: \"AmazonCustomerByEmail\",\n CanonicalUser: \"CanonicalUser\",\n Group: \"Group\",\n};\nexport const Permission = {\n FULL_CONTROL: \"FULL_CONTROL\",\n READ: \"READ\",\n READ_ACP: \"READ_ACP\",\n WRITE: \"WRITE\",\n WRITE_ACP: \"WRITE_ACP\",\n};\nexport const OwnerOverride = {\n Destination: \"Destination\",\n};\nexport const ServerSideEncryption = {\n AES256: \"AES256\",\n aws_kms: \"aws:kms\",\n aws_kms_dsse: \"aws:kms:dsse\",\n};\nexport const ObjectCannedACL = {\n authenticated_read: \"authenticated-read\",\n aws_exec_read: \"aws-exec-read\",\n bucket_owner_full_control: \"bucket-owner-full-control\",\n bucket_owner_read: \"bucket-owner-read\",\n private: \"private\",\n public_read: \"public-read\",\n public_read_write: \"public-read-write\",\n};\nexport const ChecksumAlgorithm = {\n CRC32: \"CRC32\",\n CRC32C: \"CRC32C\",\n SHA1: \"SHA1\",\n SHA256: \"SHA256\",\n};\nexport const MetadataDirective = {\n COPY: \"COPY\",\n REPLACE: \"REPLACE\",\n};\nexport const ObjectLockLegalHoldStatus = {\n OFF: \"OFF\",\n ON: \"ON\",\n};\nexport const ObjectLockMode = {\n COMPLIANCE: \"COMPLIANCE\",\n GOVERNANCE: \"GOVERNANCE\",\n};\nexport const StorageClass = {\n DEEP_ARCHIVE: \"DEEP_ARCHIVE\",\n EXPRESS_ONEZONE: \"EXPRESS_ONEZONE\",\n GLACIER: \"GLACIER\",\n GLACIER_IR: \"GLACIER_IR\",\n INTELLIGENT_TIERING: \"INTELLIGENT_TIERING\",\n ONEZONE_IA: \"ONEZONE_IA\",\n OUTPOSTS: \"OUTPOSTS\",\n REDUCED_REDUNDANCY: \"REDUCED_REDUNDANCY\",\n SNOW: \"SNOW\",\n STANDARD: \"STANDARD\",\n STANDARD_IA: \"STANDARD_IA\",\n};\nexport const TaggingDirective = {\n COPY: \"COPY\",\n REPLACE: \"REPLACE\",\n};\nexport class ObjectNotInActiveTierError extends __BaseException {\n constructor(opts) {\n super({\n name: \"ObjectNotInActiveTierError\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"ObjectNotInActiveTierError\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, ObjectNotInActiveTierError.prototype);\n }\n}\nexport class BucketAlreadyExists extends __BaseException {\n constructor(opts) {\n super({\n name: \"BucketAlreadyExists\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"BucketAlreadyExists\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, BucketAlreadyExists.prototype);\n }\n}\nexport class BucketAlreadyOwnedByYou extends __BaseException {\n constructor(opts) {\n super({\n name: \"BucketAlreadyOwnedByYou\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"BucketAlreadyOwnedByYou\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, BucketAlreadyOwnedByYou.prototype);\n }\n}\nexport const BucketCannedACL = {\n authenticated_read: \"authenticated-read\",\n private: \"private\",\n public_read: \"public-read\",\n public_read_write: \"public-read-write\",\n};\nexport const DataRedundancy = {\n SingleAvailabilityZone: \"SingleAvailabilityZone\",\n};\nexport const BucketType = {\n Directory: \"Directory\",\n};\nexport const LocationType = {\n AvailabilityZone: \"AvailabilityZone\",\n};\nexport const BucketLocationConstraint = {\n EU: \"EU\",\n af_south_1: \"af-south-1\",\n ap_east_1: \"ap-east-1\",\n ap_northeast_1: \"ap-northeast-1\",\n ap_northeast_2: \"ap-northeast-2\",\n ap_northeast_3: \"ap-northeast-3\",\n ap_south_1: \"ap-south-1\",\n ap_south_2: \"ap-south-2\",\n ap_southeast_1: \"ap-southeast-1\",\n ap_southeast_2: \"ap-southeast-2\",\n ap_southeast_3: \"ap-southeast-3\",\n ca_central_1: \"ca-central-1\",\n cn_north_1: \"cn-north-1\",\n cn_northwest_1: \"cn-northwest-1\",\n eu_central_1: \"eu-central-1\",\n eu_north_1: \"eu-north-1\",\n eu_south_1: \"eu-south-1\",\n eu_south_2: \"eu-south-2\",\n eu_west_1: \"eu-west-1\",\n eu_west_2: \"eu-west-2\",\n eu_west_3: \"eu-west-3\",\n me_south_1: \"me-south-1\",\n sa_east_1: \"sa-east-1\",\n us_east_2: \"us-east-2\",\n us_gov_east_1: \"us-gov-east-1\",\n us_gov_west_1: \"us-gov-west-1\",\n us_west_1: \"us-west-1\",\n us_west_2: \"us-west-2\",\n};\nexport const ObjectOwnership = {\n BucketOwnerEnforced: \"BucketOwnerEnforced\",\n BucketOwnerPreferred: \"BucketOwnerPreferred\",\n ObjectWriter: \"ObjectWriter\",\n};\nexport const SessionMode = {\n ReadOnly: \"ReadOnly\",\n ReadWrite: \"ReadWrite\",\n};\nexport class NoSuchBucket extends __BaseException {\n constructor(opts) {\n super({\n name: \"NoSuchBucket\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"NoSuchBucket\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, NoSuchBucket.prototype);\n }\n}\nexport var AnalyticsFilter;\n(function (AnalyticsFilter) {\n AnalyticsFilter.visit = (value, visitor) => {\n if (value.Prefix !== undefined)\n return visitor.Prefix(value.Prefix);\n if (value.Tag !== undefined)\n return visitor.Tag(value.Tag);\n if (value.And !== undefined)\n return visitor.And(value.And);\n return visitor._(value.$unknown[0], value.$unknown[1]);\n };\n})(AnalyticsFilter || (AnalyticsFilter = {}));\nexport const AnalyticsS3ExportFileFormat = {\n CSV: \"CSV\",\n};\nexport const StorageClassAnalysisSchemaVersion = {\n V_1: \"V_1\",\n};\nexport const IntelligentTieringStatus = {\n Disabled: \"Disabled\",\n Enabled: \"Enabled\",\n};\nexport const IntelligentTieringAccessTier = {\n ARCHIVE_ACCESS: \"ARCHIVE_ACCESS\",\n DEEP_ARCHIVE_ACCESS: \"DEEP_ARCHIVE_ACCESS\",\n};\nexport const InventoryFormat = {\n CSV: \"CSV\",\n ORC: \"ORC\",\n Parquet: \"Parquet\",\n};\nexport const InventoryIncludedObjectVersions = {\n All: \"All\",\n Current: \"Current\",\n};\nexport const InventoryOptionalField = {\n BucketKeyStatus: \"BucketKeyStatus\",\n ChecksumAlgorithm: \"ChecksumAlgorithm\",\n ETag: \"ETag\",\n EncryptionStatus: \"EncryptionStatus\",\n IntelligentTieringAccessTier: \"IntelligentTieringAccessTier\",\n IsMultipartUploaded: \"IsMultipartUploaded\",\n LastModifiedDate: \"LastModifiedDate\",\n ObjectAccessControlList: \"ObjectAccessControlList\",\n ObjectLockLegalHoldStatus: \"ObjectLockLegalHoldStatus\",\n ObjectLockMode: \"ObjectLockMode\",\n ObjectLockRetainUntilDate: \"ObjectLockRetainUntilDate\",\n ObjectOwner: \"ObjectOwner\",\n ReplicationStatus: \"ReplicationStatus\",\n Size: \"Size\",\n StorageClass: \"StorageClass\",\n};\nexport const InventoryFrequency = {\n Daily: \"Daily\",\n Weekly: \"Weekly\",\n};\nexport var LifecycleRuleFilter;\n(function (LifecycleRuleFilter) {\n LifecycleRuleFilter.visit = (value, visitor) => {\n if (value.Prefix !== undefined)\n return visitor.Prefix(value.Prefix);\n if (value.Tag !== undefined)\n return visitor.Tag(value.Tag);\n if (value.ObjectSizeGreaterThan !== undefined)\n return visitor.ObjectSizeGreaterThan(value.ObjectSizeGreaterThan);\n if (value.ObjectSizeLessThan !== undefined)\n return visitor.ObjectSizeLessThan(value.ObjectSizeLessThan);\n if (value.And !== undefined)\n return visitor.And(value.And);\n return visitor._(value.$unknown[0], value.$unknown[1]);\n };\n})(LifecycleRuleFilter || (LifecycleRuleFilter = {}));\nexport const TransitionStorageClass = {\n DEEP_ARCHIVE: \"DEEP_ARCHIVE\",\n GLACIER: \"GLACIER\",\n GLACIER_IR: \"GLACIER_IR\",\n INTELLIGENT_TIERING: \"INTELLIGENT_TIERING\",\n ONEZONE_IA: \"ONEZONE_IA\",\n STANDARD_IA: \"STANDARD_IA\",\n};\nexport const ExpirationStatus = {\n Disabled: \"Disabled\",\n Enabled: \"Enabled\",\n};\nexport const BucketLogsPermission = {\n FULL_CONTROL: \"FULL_CONTROL\",\n READ: \"READ\",\n WRITE: \"WRITE\",\n};\nexport const PartitionDateSource = {\n DeliveryTime: \"DeliveryTime\",\n EventTime: \"EventTime\",\n};\nexport var MetricsFilter;\n(function (MetricsFilter) {\n MetricsFilter.visit = (value, visitor) => {\n if (value.Prefix !== undefined)\n return visitor.Prefix(value.Prefix);\n if (value.Tag !== undefined)\n return visitor.Tag(value.Tag);\n if (value.AccessPointArn !== undefined)\n return visitor.AccessPointArn(value.AccessPointArn);\n if (value.And !== undefined)\n return visitor.And(value.And);\n return visitor._(value.$unknown[0], value.$unknown[1]);\n };\n})(MetricsFilter || (MetricsFilter = {}));\nexport const Event = {\n s3_IntelligentTiering: \"s3:IntelligentTiering\",\n s3_LifecycleExpiration_: \"s3:LifecycleExpiration:*\",\n s3_LifecycleExpiration_Delete: \"s3:LifecycleExpiration:Delete\",\n s3_LifecycleExpiration_DeleteMarkerCreated: \"s3:LifecycleExpiration:DeleteMarkerCreated\",\n s3_LifecycleTransition: \"s3:LifecycleTransition\",\n s3_ObjectAcl_Put: \"s3:ObjectAcl:Put\",\n s3_ObjectCreated_: \"s3:ObjectCreated:*\",\n s3_ObjectCreated_CompleteMultipartUpload: \"s3:ObjectCreated:CompleteMultipartUpload\",\n s3_ObjectCreated_Copy: \"s3:ObjectCreated:Copy\",\n s3_ObjectCreated_Post: \"s3:ObjectCreated:Post\",\n s3_ObjectCreated_Put: \"s3:ObjectCreated:Put\",\n s3_ObjectRemoved_: \"s3:ObjectRemoved:*\",\n s3_ObjectRemoved_Delete: \"s3:ObjectRemoved:Delete\",\n s3_ObjectRemoved_DeleteMarkerCreated: \"s3:ObjectRemoved:DeleteMarkerCreated\",\n s3_ObjectRestore_: \"s3:ObjectRestore:*\",\n s3_ObjectRestore_Completed: \"s3:ObjectRestore:Completed\",\n s3_ObjectRestore_Delete: \"s3:ObjectRestore:Delete\",\n s3_ObjectRestore_Post: \"s3:ObjectRestore:Post\",\n s3_ObjectTagging_: \"s3:ObjectTagging:*\",\n s3_ObjectTagging_Delete: \"s3:ObjectTagging:Delete\",\n s3_ObjectTagging_Put: \"s3:ObjectTagging:Put\",\n s3_ReducedRedundancyLostObject: \"s3:ReducedRedundancyLostObject\",\n s3_Replication_: \"s3:Replication:*\",\n s3_Replication_OperationFailedReplication: \"s3:Replication:OperationFailedReplication\",\n s3_Replication_OperationMissedThreshold: \"s3:Replication:OperationMissedThreshold\",\n s3_Replication_OperationNotTracked: \"s3:Replication:OperationNotTracked\",\n s3_Replication_OperationReplicatedAfterThreshold: \"s3:Replication:OperationReplicatedAfterThreshold\",\n};\nexport const FilterRuleName = {\n prefix: \"prefix\",\n suffix: \"suffix\",\n};\nexport const DeleteMarkerReplicationStatus = {\n Disabled: \"Disabled\",\n Enabled: \"Enabled\",\n};\nexport const MetricsStatus = {\n Disabled: \"Disabled\",\n Enabled: \"Enabled\",\n};\nexport const ReplicationTimeStatus = {\n Disabled: \"Disabled\",\n Enabled: \"Enabled\",\n};\nexport const ExistingObjectReplicationStatus = {\n Disabled: \"Disabled\",\n Enabled: \"Enabled\",\n};\nexport var ReplicationRuleFilter;\n(function (ReplicationRuleFilter) {\n ReplicationRuleFilter.visit = (value, visitor) => {\n if (value.Prefix !== undefined)\n return visitor.Prefix(value.Prefix);\n if (value.Tag !== undefined)\n return visitor.Tag(value.Tag);\n if (value.And !== undefined)\n return visitor.And(value.And);\n return visitor._(value.$unknown[0], value.$unknown[1]);\n };\n})(ReplicationRuleFilter || (ReplicationRuleFilter = {}));\nexport const ReplicaModificationsStatus = {\n Disabled: \"Disabled\",\n Enabled: \"Enabled\",\n};\nexport const SseKmsEncryptedObjectsStatus = {\n Disabled: \"Disabled\",\n Enabled: \"Enabled\",\n};\nexport const ReplicationRuleStatus = {\n Disabled: \"Disabled\",\n Enabled: \"Enabled\",\n};\nexport const Payer = {\n BucketOwner: \"BucketOwner\",\n Requester: \"Requester\",\n};\nexport const MFADeleteStatus = {\n Disabled: \"Disabled\",\n Enabled: \"Enabled\",\n};\nexport const BucketVersioningStatus = {\n Enabled: \"Enabled\",\n Suspended: \"Suspended\",\n};\nexport const Protocol = {\n http: \"http\",\n https: \"https\",\n};\nexport const ReplicationStatus = {\n COMPLETE: \"COMPLETE\",\n COMPLETED: \"COMPLETED\",\n FAILED: \"FAILED\",\n PENDING: \"PENDING\",\n REPLICA: \"REPLICA\",\n};\nexport const ChecksumMode = {\n ENABLED: \"ENABLED\",\n};\nexport class InvalidObjectState extends __BaseException {\n constructor(opts) {\n super({\n name: \"InvalidObjectState\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"InvalidObjectState\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, InvalidObjectState.prototype);\n this.StorageClass = opts.StorageClass;\n this.AccessTier = opts.AccessTier;\n }\n}\nexport class NoSuchKey extends __BaseException {\n constructor(opts) {\n super({\n name: \"NoSuchKey\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"NoSuchKey\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, NoSuchKey.prototype);\n }\n}\nexport const ObjectAttributes = {\n CHECKSUM: \"Checksum\",\n ETAG: \"ETag\",\n OBJECT_PARTS: \"ObjectParts\",\n OBJECT_SIZE: \"ObjectSize\",\n STORAGE_CLASS: \"StorageClass\",\n};\nexport const ObjectLockEnabled = {\n Enabled: \"Enabled\",\n};\nexport const ObjectLockRetentionMode = {\n COMPLIANCE: \"COMPLIANCE\",\n GOVERNANCE: \"GOVERNANCE\",\n};\nexport class NotFound extends __BaseException {\n constructor(opts) {\n super({\n name: \"NotFound\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"NotFound\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, NotFound.prototype);\n }\n}\nexport const ArchiveStatus = {\n ARCHIVE_ACCESS: \"ARCHIVE_ACCESS\",\n DEEP_ARCHIVE_ACCESS: \"DEEP_ARCHIVE_ACCESS\",\n};\nexport const EncodingType = {\n url: \"url\",\n};\nexport const ObjectStorageClass = {\n DEEP_ARCHIVE: \"DEEP_ARCHIVE\",\n EXPRESS_ONEZONE: \"EXPRESS_ONEZONE\",\n GLACIER: \"GLACIER\",\n GLACIER_IR: \"GLACIER_IR\",\n INTELLIGENT_TIERING: \"INTELLIGENT_TIERING\",\n ONEZONE_IA: \"ONEZONE_IA\",\n OUTPOSTS: \"OUTPOSTS\",\n REDUCED_REDUNDANCY: \"REDUCED_REDUNDANCY\",\n SNOW: \"SNOW\",\n STANDARD: \"STANDARD\",\n STANDARD_IA: \"STANDARD_IA\",\n};\nexport const OptionalObjectAttributes = {\n RESTORE_STATUS: \"RestoreStatus\",\n};\nexport const ObjectVersionStorageClass = {\n STANDARD: \"STANDARD\",\n};\nexport const CompleteMultipartUploadOutputFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n});\nexport const CompleteMultipartUploadRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n});\nexport const CopyObjectOutputFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n ...(obj.SSEKMSEncryptionContext && { SSEKMSEncryptionContext: SENSITIVE_STRING }),\n});\nexport const CopyObjectRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n ...(obj.SSEKMSEncryptionContext && { SSEKMSEncryptionContext: SENSITIVE_STRING }),\n ...(obj.CopySourceSSECustomerKey && { CopySourceSSECustomerKey: SENSITIVE_STRING }),\n});\nexport const CreateMultipartUploadOutputFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n ...(obj.SSEKMSEncryptionContext && { SSEKMSEncryptionContext: SENSITIVE_STRING }),\n});\nexport const CreateMultipartUploadRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n ...(obj.SSEKMSEncryptionContext && { SSEKMSEncryptionContext: SENSITIVE_STRING }),\n});\nexport const SessionCredentialsFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SecretAccessKey && { SecretAccessKey: SENSITIVE_STRING }),\n ...(obj.SessionToken && { SessionToken: SENSITIVE_STRING }),\n});\nexport const CreateSessionOutputFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Credentials && { Credentials: SessionCredentialsFilterSensitiveLog(obj.Credentials) }),\n});\nexport const ServerSideEncryptionByDefaultFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.KMSMasterKeyID && { KMSMasterKeyID: SENSITIVE_STRING }),\n});\nexport const ServerSideEncryptionRuleFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ApplyServerSideEncryptionByDefault && {\n ApplyServerSideEncryptionByDefault: ServerSideEncryptionByDefaultFilterSensitiveLog(obj.ApplyServerSideEncryptionByDefault),\n }),\n});\nexport const ServerSideEncryptionConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Rules && { Rules: obj.Rules.map((item) => ServerSideEncryptionRuleFilterSensitiveLog(item)) }),\n});\nexport const GetBucketEncryptionOutputFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ServerSideEncryptionConfiguration && {\n ServerSideEncryptionConfiguration: ServerSideEncryptionConfigurationFilterSensitiveLog(obj.ServerSideEncryptionConfiguration),\n }),\n});\nexport const SSEKMSFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.KeyId && { KeyId: SENSITIVE_STRING }),\n});\nexport const InventoryEncryptionFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSEKMS && { SSEKMS: SSEKMSFilterSensitiveLog(obj.SSEKMS) }),\n});\nexport const InventoryS3BucketDestinationFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Encryption && { Encryption: InventoryEncryptionFilterSensitiveLog(obj.Encryption) }),\n});\nexport const InventoryDestinationFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.S3BucketDestination && {\n S3BucketDestination: InventoryS3BucketDestinationFilterSensitiveLog(obj.S3BucketDestination),\n }),\n});\nexport const InventoryConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Destination && { Destination: InventoryDestinationFilterSensitiveLog(obj.Destination) }),\n});\nexport const GetBucketInventoryConfigurationOutputFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.InventoryConfiguration && {\n InventoryConfiguration: InventoryConfigurationFilterSensitiveLog(obj.InventoryConfiguration),\n }),\n});\nexport const GetObjectOutputFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n});\nexport const GetObjectRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n});\nexport const GetObjectAttributesRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n});\nexport const GetObjectTorrentOutputFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexport const HeadObjectOutputFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n});\nexport const HeadObjectRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n});\nexport const ListBucketInventoryConfigurationsOutputFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.InventoryConfigurationList && {\n InventoryConfigurationList: obj.InventoryConfigurationList.map((item) => InventoryConfigurationFilterSensitiveLog(item)),\n }),\n});\nexport const ListPartsRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n});\nexport const PutBucketEncryptionRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ServerSideEncryptionConfiguration && {\n ServerSideEncryptionConfiguration: ServerSideEncryptionConfigurationFilterSensitiveLog(obj.ServerSideEncryptionConfiguration),\n }),\n});\nexport const PutBucketInventoryConfigurationRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.InventoryConfiguration && {\n InventoryConfiguration: InventoryConfigurationFilterSensitiveLog(obj.InventoryConfiguration),\n }),\n});\n","export const isStreamingPayload = (request) => request?.body instanceof ReadableStream;\n","import { HttpRequest, HttpResponse } from \"@smithy/protocol-http\";\nimport { isServerError, isThrottlingError, isTransientError } from \"@smithy/service-error-classification\";\nimport { NoOpLogger } from \"@smithy/smithy-client\";\nimport { INVOCATION_ID_HEADER, REQUEST_HEADER } from \"@smithy/util-retry\";\nimport { v4 } from \"uuid\";\nimport { isStreamingPayload } from \"./isStreamingPayload/isStreamingPayload\";\nimport { asSdkError } from \"./util\";\nexport const retryMiddleware = (options) => (next, context) => async (args) => {\n let retryStrategy = await options.retryStrategy();\n const maxAttempts = await options.maxAttempts();\n if (isRetryStrategyV2(retryStrategy)) {\n retryStrategy = retryStrategy;\n let retryToken = await retryStrategy.acquireInitialRetryToken(context[\"partition_id\"]);\n let lastError = new Error();\n let attempts = 0;\n let totalRetryDelay = 0;\n const { request } = args;\n const isRequest = HttpRequest.isInstance(request);\n if (isRequest) {\n request.headers[INVOCATION_ID_HEADER] = v4();\n }\n while (true) {\n try {\n if (isRequest) {\n request.headers[REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`;\n }\n const { response, output } = await next(args);\n retryStrategy.recordSuccess(retryToken);\n output.$metadata.attempts = attempts + 1;\n output.$metadata.totalRetryDelay = totalRetryDelay;\n return { response, output };\n }\n catch (e) {\n const retryErrorInfo = getRetryErrorInfo(e);\n lastError = asSdkError(e);\n if (isRequest && isStreamingPayload(request)) {\n (context.logger instanceof NoOpLogger ? console : context.logger)?.warn(\"An error was encountered in a non-retryable streaming request.\");\n throw lastError;\n }\n try {\n retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo);\n }\n catch (refreshError) {\n if (!lastError.$metadata) {\n lastError.$metadata = {};\n }\n lastError.$metadata.attempts = attempts + 1;\n lastError.$metadata.totalRetryDelay = totalRetryDelay;\n throw lastError;\n }\n attempts = retryToken.getRetryCount();\n const delay = retryToken.getRetryDelay();\n totalRetryDelay += delay;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n }\n else {\n retryStrategy = retryStrategy;\n if (retryStrategy?.mode)\n context.userAgent = [...(context.userAgent || []), [\"cfg/retry-mode\", retryStrategy.mode]];\n return retryStrategy.retry(next, args);\n }\n};\nconst isRetryStrategyV2 = (retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== \"undefined\" &&\n typeof retryStrategy.refreshRetryTokenForRetry !== \"undefined\" &&\n typeof retryStrategy.recordSuccess !== \"undefined\";\nconst getRetryErrorInfo = (error) => {\n const errorInfo = {\n error,\n errorType: getRetryErrorType(error),\n };\n const retryAfterHint = getRetryAfterHint(error.$response);\n if (retryAfterHint) {\n errorInfo.retryAfterHint = retryAfterHint;\n }\n return errorInfo;\n};\nconst getRetryErrorType = (error) => {\n if (isThrottlingError(error))\n return \"THROTTLING\";\n if (isTransientError(error))\n return \"TRANSIENT\";\n if (isServerError(error))\n return \"SERVER_ERROR\";\n return \"CLIENT_ERROR\";\n};\nexport const retryMiddlewareOptions = {\n name: \"retryMiddleware\",\n tags: [\"RETRY\"],\n step: \"finalizeRequest\",\n priority: \"high\",\n override: true,\n};\nexport const getRetryPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(retryMiddleware(options), retryMiddlewareOptions);\n },\n});\nexport const getRetryAfterHint = (response) => {\n if (!HttpResponse.isInstance(response))\n return;\n const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === \"retry-after\");\n if (!retryAfterHeaderName)\n return;\n const retryAfter = response.headers[retryAfterHeaderName];\n const retryAfterSeconds = Number(retryAfter);\n if (!Number.isNaN(retryAfterSeconds))\n return new Date(retryAfterSeconds * 1000);\n const retryAfterDate = new Date(retryAfter);\n return retryAfterDate;\n};\n","export const asSdkError = (error) => {\n if (error instanceof Error)\n return error;\n if (error instanceof Object)\n return Object.assign(new Error(), error);\n if (typeof error === \"string\")\n return new Error(error);\n return new Error(`AWS SDK error wrapper for ${error}`);\n};\n","export const resolveClientEndpointParameters = (options) => {\n return {\n ...options,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n forcePathStyle: options.forcePathStyle ?? false,\n useAccelerateEndpoint: options.useAccelerateEndpoint ?? false,\n useGlobalEndpoint: options.useGlobalEndpoint ?? false,\n disableMultiregionAccessPoints: options.disableMultiregionAccessPoints ?? false,\n defaultSigningName: \"s3\",\n };\n};\nexport const commonParams = {\n ForcePathStyle: { type: \"clientContextParams\", name: \"forcePathStyle\" },\n UseArnRegion: { type: \"clientContextParams\", name: \"useArnRegion\" },\n DisableMultiRegionAccessPoints: { type: \"clientContextParams\", name: \"disableMultiregionAccessPoints\" },\n Accelerate: { type: \"clientContextParams\", name: \"useAccelerateEndpoint\" },\n DisableS3ExpressSessionAuth: { type: \"clientContextParams\", name: \"disableS3ExpressSessionAuth\" },\n UseGlobalEndpoint: { type: \"builtInParams\", name: \"useGlobalEndpoint\" },\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n","import { ServiceException as __ServiceException, } from \"@smithy/smithy-client\";\nexport { __ServiceException };\nexport class S3ServiceException extends __ServiceException {\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, S3ServiceException.prototype);\n }\n}\n","import { getValueFromTextNode } from \"@smithy/smithy-client\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport { collectBodyString } from \"../common\";\nexport const parseXmlBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n const parser = new XMLParser({\n attributeNamePrefix: \"\",\n htmlEntities: true,\n ignoreAttributes: false,\n ignoreDeclaration: true,\n parseTagValue: false,\n trimValues: false,\n tagValueProcessor: (_, val) => (val.trim() === \"\" && val.includes(\"\\n\") ? \"\" : undefined),\n });\n parser.addEntity(\"#xD\", \"\\r\");\n parser.addEntity(\"#10\", \"\\n\");\n let parsedObj;\n try {\n parsedObj = parser.parse(encoded, true);\n }\n catch (e) {\n if (e && typeof e === \"object\") {\n Object.defineProperty(e, \"$responseBodyText\", {\n value: encoded,\n });\n }\n throw e;\n }\n const textNodeName = \"#text\";\n const key = Object.keys(parsedObj)[0];\n const parsedObjToReturn = parsedObj[key];\n if (parsedObjToReturn[textNodeName]) {\n parsedObjToReturn[key] = parsedObjToReturn[textNodeName];\n delete parsedObjToReturn[textNodeName];\n }\n return getValueFromTextNode(parsedObjToReturn);\n }\n return {};\n});\nexport const parseXmlErrorBody = async (errorBody, context) => {\n const value = await parseXmlBody(errorBody, context);\n if (value.Error) {\n value.Error.message = value.Error.message ?? value.Error.Message;\n }\n return value;\n};\nexport const loadRestXmlErrorCode = (output, data) => {\n if (data?.Error?.Code !== undefined) {\n return data.Error.Code;\n }\n if (data?.Code !== undefined) {\n return data.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n};\n","import { collectBody } from \"@smithy/smithy-client\";\nexport const collectBodyString = (streamBody, context) => collectBody(streamBody, context).then((body) => context.utf8Encoder(body));\n","export const createIsIdentityExpiredFunction = (expirationMs) => (identity) => doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs;\nexport const EXPIRATION_MS = 300000;\nexport const isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS);\nexport const doesIdentityRequireRefresh = (identity) => identity.expiration !== undefined;\nexport const memoizeIdentityProvider = (provider, isExpired, requiresRefresh) => {\n if (provider === undefined) {\n return undefined;\n }\n const normalizedProvider = typeof provider !== \"function\" ? async () => Promise.resolve(provider) : provider;\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = async (options) => {\n if (!pending) {\n pending = normalizedProvider(options);\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n }\n finally {\n pending = undefined;\n }\n return resolved;\n };\n if (isExpired === undefined) {\n return async (options) => {\n if (!hasResult || options?.forceRefresh) {\n resolved = await coalesceProvider(options);\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || options?.forceRefresh) {\n resolved = await coalesceProvider(options);\n }\n if (isConstant) {\n return resolved;\n }\n if (!requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider(options);\n return resolved;\n }\n return resolved;\n };\n};\n","import { SMITHY_CONTEXT_KEY, } from \"@smithy/types\";\nimport { getSmithyContext } from \"@smithy/util-middleware\";\nfunction convertHttpAuthSchemesToMap(httpAuthSchemes) {\n const map = new Map();\n for (const scheme of httpAuthSchemes) {\n map.set(scheme.schemeId, scheme);\n }\n return map;\n}\nexport const httpAuthSchemeMiddleware = (config, mwOptions) => (next, context) => async (args) => {\n const options = config.httpAuthSchemeProvider(await mwOptions.httpAuthSchemeParametersProvider(config, context, args.input));\n const authSchemes = convertHttpAuthSchemesToMap(config.httpAuthSchemes);\n const smithyContext = getSmithyContext(context);\n const failureReasons = [];\n for (const option of options) {\n const scheme = authSchemes.get(option.schemeId);\n if (!scheme) {\n failureReasons.push(`HttpAuthScheme \\`${option.schemeId}\\` was not enabled for this service.`);\n continue;\n }\n const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config));\n if (!identityProvider) {\n failureReasons.push(`HttpAuthScheme \\`${option.schemeId}\\` did not have an IdentityProvider configured.`);\n continue;\n }\n const { identityProperties = {}, signingProperties = {} } = option.propertiesExtractor?.(config, context) || {};\n option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties);\n option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties);\n smithyContext.selectedHttpAuthScheme = {\n httpAuthOption: option,\n identity: await identityProvider(option.identityProperties),\n signer: scheme.signer,\n };\n break;\n }\n if (!smithyContext.selectedHttpAuthScheme) {\n throw new Error(failureReasons.join(\"\\n\"));\n }\n return next(args);\n};\n","import { HttpRequest } from \"@smithy/protocol-http\";\nimport { resolvedPath } from \"@smithy/smithy-client\";\nexport function requestBuilder(input, context) {\n return new RequestBuilder(input, context);\n}\nexport class RequestBuilder {\n constructor(input, context) {\n this.input = input;\n this.context = context;\n this.query = {};\n this.method = \"\";\n this.headers = {};\n this.path = \"\";\n this.body = null;\n this.hostname = \"\";\n this.resolvePathStack = [];\n }\n async build() {\n const { hostname, protocol = \"https\", port, path: basePath } = await this.context.endpoint();\n this.path = basePath;\n for (const resolvePath of this.resolvePathStack) {\n resolvePath(this.path);\n }\n return new HttpRequest({\n protocol,\n hostname: this.hostname || hostname,\n port,\n method: this.method,\n path: this.path,\n query: this.query,\n body: this.body,\n headers: this.headers,\n });\n }\n hn(hostname) {\n this.hostname = hostname;\n return this;\n }\n bp(uriLabel) {\n this.resolvePathStack.push((basePath) => {\n this.path = `${basePath?.endsWith(\"/\") ? basePath.slice(0, -1) : basePath || \"\"}` + uriLabel;\n });\n return this;\n }\n p(memberName, labelValueProvider, uriLabel, isGreedyLabel) {\n this.resolvePathStack.push((path) => {\n this.path = resolvedPath(path, this.input, memberName, labelValueProvider, uriLabel, isGreedyLabel);\n });\n return this;\n }\n h(headers) {\n this.headers = headers;\n return this;\n }\n q(query) {\n this.query = query;\n return this;\n }\n b(body) {\n this.body = body;\n return this;\n }\n m(method) {\n this.method = method;\n return this;\n }\n}\n","export default function _OverloadYield(value, kind) {\n this.v = value, this.k = kind;\n}","import OverloadYield from \"./OverloadYield.js\";\nexport default function AsyncGenerator(gen) {\n var front, back;\n function resume(key, arg) {\n try {\n var result = gen[key](arg),\n value = result.value,\n overloaded = value instanceof OverloadYield;\n Promise.resolve(overloaded ? value.v : value).then(function (arg) {\n if (overloaded) {\n var nextKey = \"return\" === key ? \"return\" : \"next\";\n if (!value.k || arg.done) return resume(nextKey, arg);\n arg = gen[nextKey](arg).value;\n }\n settle(result.done ? \"return\" : \"normal\", arg);\n }, function (err) {\n resume(\"throw\", err);\n });\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: !0\n });\n break;\n case \"throw\":\n front.reject(value);\n break;\n default:\n front.resolve({\n value: value,\n done: !1\n });\n }\n (front = front.next) ? resume(front.key, front.arg) : back = null;\n }\n this._invoke = function (key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n back ? back = back.next = request : (front = back = request, resume(key, arg));\n });\n }, \"function\" != typeof gen[\"return\"] && (this[\"return\"] = void 0);\n}\nAsyncGenerator.prototype[\"function\" == typeof Symbol && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n}, AsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n}, AsyncGenerator.prototype[\"throw\"] = function (arg) {\n return this._invoke(\"throw\", arg);\n}, AsyncGenerator.prototype[\"return\"] = function (arg) {\n return this._invoke(\"return\", arg);\n};","import AsyncGenerator from \"./AsyncGenerator.js\";\nexport default function _wrapAsyncGenerator(fn) {\n return function () {\n return new AsyncGenerator(fn.apply(this, arguments));\n };\n}","const makePagedClientRequest = async (CommandCtor, client, input, ...args) => {\n return await client.send(new CommandCtor(input), ...args);\n};\nexport function createPaginator(ClientCtor, CommandCtor, inputTokenName, outputTokenName, pageSizeTokenName) {\n return async function* paginateOperation(config, input, ...additionalArguments) {\n let token = config.startingToken || undefined;\n let hasNext = true;\n let page;\n while (hasNext) {\n input[inputTokenName] = token;\n if (pageSizeTokenName) {\n input[pageSizeTokenName] = input[pageSizeTokenName] ?? config.pageSize;\n }\n if (config.client instanceof ClientCtor) {\n page = await makePagedClientRequest(CommandCtor, config.client, input, ...additionalArguments);\n }\n else {\n throw new Error(`Invalid client, expected instance of ${ClientCtor.name}`);\n }\n yield page;\n const prevToken = token;\n token = get(page, outputTokenName);\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return undefined;\n };\n}\nconst get = (fromObject, path) => {\n let cursor = fromObject;\n const pathComponents = path.split(\".\");\n for (const step of pathComponents) {\n if (!cursor || typeof cursor !== \"object\") {\n return undefined;\n }\n cursor = cursor[step];\n }\n return cursor;\n};\n","import { SENSITIVE_STRING } from \"@smithy/smithy-client\";\nimport { S3ServiceException as __BaseException } from \"./S3ServiceException\";\nexport const MFADelete = {\n Disabled: \"Disabled\",\n Enabled: \"Enabled\",\n};\nexport class ObjectAlreadyInActiveTierError extends __BaseException {\n constructor(opts) {\n super({\n name: \"ObjectAlreadyInActiveTierError\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"ObjectAlreadyInActiveTierError\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, ObjectAlreadyInActiveTierError.prototype);\n }\n}\nexport const Tier = {\n Bulk: \"Bulk\",\n Expedited: \"Expedited\",\n Standard: \"Standard\",\n};\nexport const ExpressionType = {\n SQL: \"SQL\",\n};\nexport const CompressionType = {\n BZIP2: \"BZIP2\",\n GZIP: \"GZIP\",\n NONE: \"NONE\",\n};\nexport const FileHeaderInfo = {\n IGNORE: \"IGNORE\",\n NONE: \"NONE\",\n USE: \"USE\",\n};\nexport const JSONType = {\n DOCUMENT: \"DOCUMENT\",\n LINES: \"LINES\",\n};\nexport const QuoteFields = {\n ALWAYS: \"ALWAYS\",\n ASNEEDED: \"ASNEEDED\",\n};\nexport const RestoreRequestType = {\n SELECT: \"SELECT\",\n};\nexport var SelectObjectContentEventStream;\n(function (SelectObjectContentEventStream) {\n SelectObjectContentEventStream.visit = (value, visitor) => {\n if (value.Records !== undefined)\n return visitor.Records(value.Records);\n if (value.Stats !== undefined)\n return visitor.Stats(value.Stats);\n if (value.Progress !== undefined)\n return visitor.Progress(value.Progress);\n if (value.Cont !== undefined)\n return visitor.Cont(value.Cont);\n if (value.End !== undefined)\n return visitor.End(value.End);\n return visitor._(value.$unknown[0], value.$unknown[1]);\n };\n})(SelectObjectContentEventStream || (SelectObjectContentEventStream = {}));\nexport const PutObjectOutputFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n ...(obj.SSEKMSEncryptionContext && { SSEKMSEncryptionContext: SENSITIVE_STRING }),\n});\nexport const PutObjectRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n ...(obj.SSEKMSEncryptionContext && { SSEKMSEncryptionContext: SENSITIVE_STRING }),\n});\nexport const EncryptionFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.KMSKeyId && { KMSKeyId: SENSITIVE_STRING }),\n});\nexport const S3LocationFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Encryption && { Encryption: EncryptionFilterSensitiveLog(obj.Encryption) }),\n});\nexport const OutputLocationFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.S3 && { S3: S3LocationFilterSensitiveLog(obj.S3) }),\n});\nexport const RestoreRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.OutputLocation && { OutputLocation: OutputLocationFilterSensitiveLog(obj.OutputLocation) }),\n});\nexport const RestoreObjectRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.RestoreRequest && { RestoreRequest: RestoreRequestFilterSensitiveLog(obj.RestoreRequest) }),\n});\nexport const SelectObjectContentEventStreamFilterSensitiveLog = (obj) => {\n if (obj.Records !== undefined)\n return { Records: obj.Records };\n if (obj.Stats !== undefined)\n return { Stats: obj.Stats };\n if (obj.Progress !== undefined)\n return { Progress: obj.Progress };\n if (obj.Cont !== undefined)\n return { Cont: obj.Cont };\n if (obj.End !== undefined)\n return { End: obj.End };\n if (obj.$unknown !== undefined)\n return { [obj.$unknown[0]]: \"UNKNOWN\" };\n};\nexport const SelectObjectContentOutputFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Payload && { Payload: \"STREAMING_CONTENT\" }),\n});\nexport const SelectObjectContentRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n});\nexport const UploadPartOutputFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n});\nexport const UploadPartRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n});\nexport const UploadPartCopyOutputFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n});\nexport const UploadPartCopyRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSECustomerKey && { SSECustomerKey: SENSITIVE_STRING }),\n ...(obj.CopySourceSSECustomerKey && { CopySourceSSECustomerKey: SENSITIVE_STRING }),\n});\nexport const WriteGetObjectResponseRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.SSEKMSKeyId && { SSEKMSKeyId: SENSITIVE_STRING }),\n});\n","import { loadRestXmlErrorCode, parseXmlBody as parseBody, parseXmlErrorBody as parseErrorBody } from \"@aws-sdk/core\";\nimport { XmlNode as __XmlNode, XmlText as __XmlText } from \"@aws-sdk/xml-builder\";\nimport { requestBuilder as rb } from \"@smithy/core\";\nimport { isValidHostname as __isValidHostname, } from \"@smithy/protocol-http\";\nimport { collectBody, dateToUtcString as __dateToUtcString, decorateServiceException as __decorateServiceException, expectNonNull as __expectNonNull, expectObject as __expectObject, expectString as __expectString, expectUnion as __expectUnion, getArrayIfSingleItem as __getArrayIfSingleItem, map, parseBoolean as __parseBoolean, parseRfc3339DateTimeWithOffset as __parseRfc3339DateTimeWithOffset, parseRfc7231DateTime as __parseRfc7231DateTime, serializeDateTime as __serializeDateTime, strictParseInt32 as __strictParseInt32, strictParseLong as __strictParseLong, withBaseException, } from \"@smithy/smithy-client\";\nimport { AnalyticsFilter, BucketAlreadyExists, BucketAlreadyOwnedByYou, InvalidObjectState, LifecycleRuleFilter, MetricsFilter, NoSuchBucket, NoSuchKey, NoSuchUpload, NotFound, ObjectNotInActiveTierError, ReplicationRuleFilter, } from \"../models/models_0\";\nimport { ObjectAlreadyInActiveTierError, } from \"../models/models_1\";\nimport { S3ServiceException as __BaseException } from \"../models/S3ServiceException\";\nexport const se_AbortMultipartUploadCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_xi]: [, \"AbortMultipartUpload\"],\n [_uI]: [, __expectNonNull(input[_UI], `UploadId`)],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_CompleteMultipartUploadCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xacc]: input[_CCRC],\n [_xacc_]: input[_CCRCC],\n [_xacs]: input[_CSHA],\n [_xacs_]: input[_CSHAh],\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n [_xasseca]: input[_SSECA],\n [_xasseck]: input[_SSECK],\n [_xasseckm]: input[_SSECKMD],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_uI]: [, __expectNonNull(input[_UI], `UploadId`)],\n });\n let body;\n let contents;\n if (input.MultipartUpload !== undefined) {\n contents = se_CompletedMultipartUpload(input.MultipartUpload, context);\n contents = contents.n(\"CompleteMultipartUpload\");\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_CopyObjectCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaa]: input[_ACL],\n [_cc]: input[_CC],\n [_xaca]: input[_CA],\n [_cd]: input[_CD],\n [_ce]: input[_CE],\n [_cl]: input[_CL],\n [_ct]: input[_CT],\n [_xacs__]: input[_CS],\n [_xacsim]: input[_CSIM],\n [_xacsims]: [() => isSerializableHeaderValue(input[_CSIMS]), () => __dateToUtcString(input[_CSIMS]).toString()],\n [_xacsinm]: input[_CSINM],\n [_xacsius]: [() => isSerializableHeaderValue(input[_CSIUS]), () => __dateToUtcString(input[_CSIUS]).toString()],\n [_e]: [() => isSerializableHeaderValue(input[_E]), () => __dateToUtcString(input[_E]).toString()],\n [_xagfc]: input[_GFC],\n [_xagr]: input[_GR],\n [_xagra]: input[_GRACP],\n [_xagwa]: input[_GWACP],\n [_xamd]: input[_MD],\n [_xatd]: input[_TD],\n [_xasse]: input[_SSE],\n [_xasc]: input[_SC],\n [_xawrl]: input[_WRL],\n [_xasseca]: input[_SSECA],\n [_xasseck]: input[_SSECK],\n [_xasseckm]: input[_SSECKMD],\n [_xasseakki]: input[_SSEKMSKI],\n [_xassec]: input[_SSEKMSEC],\n [_xassebke]: [() => isSerializableHeaderValue(input[_BKE]), () => input[_BKE].toString()],\n [_xacssseca]: input[_CSSSECA],\n [_xacssseck]: input[_CSSSECK],\n [_xacssseckm]: input[_CSSSECKMD],\n [_xarp]: input[_RP],\n [_xat]: input[_T],\n [_xaolm]: input[_OLM],\n [_xaolrud]: [() => isSerializableHeaderValue(input[_OLRUD]), () => __serializeDateTime(input[_OLRUD]).toString()],\n [_xaollh]: input[_OLLHS],\n [_xaebo]: input[_EBO],\n [_xasebo]: input[_ESBO],\n ...(input.Metadata !== undefined &&\n Object.keys(input.Metadata).reduce((acc, suffix) => {\n acc[`x-amz-meta-${suffix.toLowerCase()}`] = input.Metadata[suffix];\n return acc;\n }, {})),\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_xi]: [, \"CopyObject\"],\n });\n let body;\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_CreateBucketCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xaa]: input[_ACL],\n [_xagfc]: input[_GFC],\n [_xagr]: input[_GR],\n [_xagra]: input[_GRACP],\n [_xagw]: input[_GW],\n [_xagwa]: input[_GWACP],\n [_xabole]: [() => isSerializableHeaderValue(input[_OLEFB]), () => input[_OLEFB].toString()],\n [_xaoo]: input[_OO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n let body;\n let contents;\n if (input.CreateBucketConfiguration !== undefined) {\n contents = se_CreateBucketConfiguration(input.CreateBucketConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).b(body);\n return b.build();\n};\nexport const se_CreateMultipartUploadCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaa]: input[_ACL],\n [_cc]: input[_CC],\n [_cd]: input[_CD],\n [_ce]: input[_CE],\n [_cl]: input[_CL],\n [_ct]: input[_CT],\n [_e]: [() => isSerializableHeaderValue(input[_E]), () => __dateToUtcString(input[_E]).toString()],\n [_xagfc]: input[_GFC],\n [_xagr]: input[_GR],\n [_xagra]: input[_GRACP],\n [_xagwa]: input[_GWACP],\n [_xasse]: input[_SSE],\n [_xasc]: input[_SC],\n [_xawrl]: input[_WRL],\n [_xasseca]: input[_SSECA],\n [_xasseck]: input[_SSECK],\n [_xasseckm]: input[_SSECKMD],\n [_xasseakki]: input[_SSEKMSKI],\n [_xassec]: input[_SSEKMSEC],\n [_xassebke]: [() => isSerializableHeaderValue(input[_BKE]), () => input[_BKE].toString()],\n [_xarp]: input[_RP],\n [_xat]: input[_T],\n [_xaolm]: input[_OLM],\n [_xaolrud]: [() => isSerializableHeaderValue(input[_OLRUD]), () => __serializeDateTime(input[_OLRUD]).toString()],\n [_xaollh]: input[_OLLHS],\n [_xaebo]: input[_EBO],\n [_xaca]: input[_CA],\n ...(input.Metadata !== undefined &&\n Object.keys(input.Metadata).reduce((acc, suffix) => {\n acc[`x-amz-meta-${suffix.toLowerCase()}`] = input.Metadata[suffix];\n return acc;\n }, {})),\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_u]: [, \"\"],\n });\n let body;\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_CreateSessionCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacsm]: input[_SM],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_s]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteBucketCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n let body;\n b.m(\"DELETE\").h(headers).b(body);\n return b.build();\n};\nexport const se_DeleteBucketAnalyticsConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_a]: [, \"\"],\n [_i]: [, __expectNonNull(input[_I], `Id`)],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteBucketCorsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_c]: [, \"\"],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteBucketEncryptionCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_en]: [, \"\"],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteBucketIntelligentTieringConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {};\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_it]: [, \"\"],\n [_i]: [, __expectNonNull(input[_I], `Id`)],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteBucketInventoryConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_in]: [, \"\"],\n [_i]: [, __expectNonNull(input[_I], `Id`)],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteBucketLifecycleCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_l]: [, \"\"],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteBucketMetricsConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_m]: [, \"\"],\n [_i]: [, __expectNonNull(input[_I], `Id`)],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteBucketOwnershipControlsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_oC]: [, \"\"],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteBucketPolicyCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_p]: [, \"\"],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteBucketReplicationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_r]: [, \"\"],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteBucketTaggingCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_t]: [, \"\"],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteBucketWebsiteCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_w]: [, \"\"],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteObjectCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xam]: input[_MFA],\n [_xarp]: input[_RP],\n [_xabgr]: [() => isSerializableHeaderValue(input[_BGR]), () => input[_BGR].toString()],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_xi]: [, \"DeleteObject\"],\n [_vI]: [, input[_VI]],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteObjectsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xam]: input[_MFA],\n [_xarp]: input[_RP],\n [_xabgr]: [() => isSerializableHeaderValue(input[_BGR]), () => input[_BGR].toString()],\n [_xaebo]: input[_EBO],\n [_xasca]: input[_CA],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_d]: [, \"\"],\n });\n let body;\n let contents;\n if (input.Delete !== undefined) {\n contents = se_Delete(input.Delete, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteObjectTaggingCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_t]: [, \"\"],\n [_vI]: [, input[_VI]],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeletePublicAccessBlockCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_pAB]: [, \"\"],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketAccelerateConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n [_xarp]: input[_RP],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_ac]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketAclCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_acl]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketAnalyticsConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_a]: [, \"\"],\n [_xi]: [, \"GetBucketAnalyticsConfiguration\"],\n [_i]: [, __expectNonNull(input[_I], `Id`)],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketCorsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_c]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketEncryptionCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_en]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketIntelligentTieringConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {};\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_it]: [, \"\"],\n [_xi]: [, \"GetBucketIntelligentTieringConfiguration\"],\n [_i]: [, __expectNonNull(input[_I], `Id`)],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketInventoryConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_in]: [, \"\"],\n [_xi]: [, \"GetBucketInventoryConfiguration\"],\n [_i]: [, __expectNonNull(input[_I], `Id`)],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketLifecycleConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_l]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketLocationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_lo]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketLoggingCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_log]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketMetricsConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_m]: [, \"\"],\n [_xi]: [, \"GetBucketMetricsConfiguration\"],\n [_i]: [, __expectNonNull(input[_I], `Id`)],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketNotificationConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_n]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketOwnershipControlsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_oC]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketPolicyCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_p]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketPolicyStatusCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_pS]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketReplicationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_r]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketRequestPaymentCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_rP]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketTaggingCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_t]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketVersioningCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_v]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetBucketWebsiteCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_w]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetObjectCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_im]: input[_IM],\n [_ims]: [() => isSerializableHeaderValue(input[_IMS]), () => __dateToUtcString(input[_IMS]).toString()],\n [_inm]: input[_INM],\n [_ius]: [() => isSerializableHeaderValue(input[_IUS]), () => __dateToUtcString(input[_IUS]).toString()],\n [_ra]: input[_R],\n [_xasseca]: input[_SSECA],\n [_xasseck]: input[_SSECK],\n [_xasseckm]: input[_SSECKMD],\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n [_xacm]: input[_CM],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_xi]: [, \"GetObject\"],\n [_rcc]: [, input[_RCC]],\n [_rcd]: [, input[_RCD]],\n [_rce]: [, input[_RCE]],\n [_rcl]: [, input[_RCL]],\n [_rct]: [, input[_RCT]],\n [_re]: [() => input.ResponseExpires !== void 0, () => __dateToUtcString(input[_RE]).toString()],\n [_vI]: [, input[_VI]],\n [_pN]: [() => input.PartNumber !== void 0, () => input[_PN].toString()],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetObjectAclCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_acl]: [, \"\"],\n [_vI]: [, input[_VI]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetObjectAttributesCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xamp]: [() => isSerializableHeaderValue(input[_MP]), () => input[_MP].toString()],\n [_xapnm]: input[_PNM],\n [_xasseca]: input[_SSECA],\n [_xasseck]: input[_SSECK],\n [_xasseckm]: input[_SSECKMD],\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n [_xaoa]: [\n () => isSerializableHeaderValue(input[_OA]),\n () => (input[_OA] || []).map((_entry) => _entry).join(\", \"),\n ],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_at]: [, \"\"],\n [_vI]: [, input[_VI]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetObjectLegalHoldCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_lh]: [, \"\"],\n [_vI]: [, input[_VI]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetObjectLockConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_ol]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetObjectRetentionCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_ret]: [, \"\"],\n [_vI]: [, input[_VI]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetObjectTaggingCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n [_xarp]: input[_RP],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_t]: [, \"\"],\n [_vI]: [, input[_VI]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetObjectTorrentCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_to]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetPublicAccessBlockCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_pAB]: [, \"\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_HeadBucketCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n let body;\n b.m(\"HEAD\").h(headers).b(body);\n return b.build();\n};\nexport const se_HeadObjectCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_im]: input[_IM],\n [_ims]: [() => isSerializableHeaderValue(input[_IMS]), () => __dateToUtcString(input[_IMS]).toString()],\n [_inm]: input[_INM],\n [_ius]: [() => isSerializableHeaderValue(input[_IUS]), () => __dateToUtcString(input[_IUS]).toString()],\n [_ra]: input[_R],\n [_xasseca]: input[_SSECA],\n [_xasseck]: input[_SSECK],\n [_xasseckm]: input[_SSECKMD],\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n [_xacm]: input[_CM],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_rcc]: [, input[_RCC]],\n [_rcd]: [, input[_RCD]],\n [_rce]: [, input[_RCE]],\n [_rcl]: [, input[_RCL]],\n [_rct]: [, input[_RCT]],\n [_re]: [() => input.ResponseExpires !== void 0, () => __dateToUtcString(input[_RE]).toString()],\n [_vI]: [, input[_VI]],\n [_pN]: [() => input.PartNumber !== void 0, () => input[_PN].toString()],\n });\n let body;\n b.m(\"HEAD\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListBucketAnalyticsConfigurationsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_a]: [, \"\"],\n [_xi]: [, \"ListBucketAnalyticsConfigurations\"],\n [_ct_]: [, input[_CTo]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListBucketIntelligentTieringConfigurationsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {};\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_it]: [, \"\"],\n [_xi]: [, \"ListBucketIntelligentTieringConfigurations\"],\n [_ct_]: [, input[_CTo]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListBucketInventoryConfigurationsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_in]: [, \"\"],\n [_xi]: [, \"ListBucketInventoryConfigurations\"],\n [_ct_]: [, input[_CTo]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListBucketMetricsConfigurationsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_m]: [, \"\"],\n [_xi]: [, \"ListBucketMetricsConfigurations\"],\n [_ct_]: [, input[_CTo]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListBucketsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {};\n b.bp(\"/\");\n const query = map({\n [_xi]: [, \"ListBuckets\"],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListDirectoryBucketsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {};\n b.bp(\"/\");\n const query = map({\n [_xi]: [, \"ListDirectoryBuckets\"],\n [_ct_]: [, input[_CTo]],\n [_mdb]: [() => input.MaxDirectoryBuckets !== void 0, () => input[_MDB].toString()],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListMultipartUploadsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n [_xarp]: input[_RP],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_u]: [, \"\"],\n [_de]: [, input[_D]],\n [_et]: [, input[_ET]],\n [_km]: [, input[_KM]],\n [_mu]: [() => input.MaxUploads !== void 0, () => input[_MU].toString()],\n [_pr]: [, input[_P]],\n [_uim]: [, input[_UIM]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListObjectsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n [_xaooa]: [\n () => isSerializableHeaderValue(input[_OOA]),\n () => (input[_OOA] || []).map((_entry) => _entry).join(\", \"),\n ],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_de]: [, input[_D]],\n [_et]: [, input[_ET]],\n [_ma]: [, input[_M]],\n [_mk]: [() => input.MaxKeys !== void 0, () => input[_MK].toString()],\n [_pr]: [, input[_P]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListObjectsV2Command = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n [_xaooa]: [\n () => isSerializableHeaderValue(input[_OOA]),\n () => (input[_OOA] || []).map((_entry) => _entry).join(\", \"),\n ],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_lt]: [, \"2\"],\n [_de]: [, input[_D]],\n [_et]: [, input[_ET]],\n [_mk]: [() => input.MaxKeys !== void 0, () => input[_MK].toString()],\n [_pr]: [, input[_P]],\n [_ct_]: [, input[_CTo]],\n [_fo]: [() => input.FetchOwner !== void 0, () => input[_FO].toString()],\n [_sa]: [, input[_SA]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListObjectVersionsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xaebo]: input[_EBO],\n [_xarp]: input[_RP],\n [_xaooa]: [\n () => isSerializableHeaderValue(input[_OOA]),\n () => (input[_OOA] || []).map((_entry) => _entry).join(\", \"),\n ],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_ver]: [, \"\"],\n [_de]: [, input[_D]],\n [_et]: [, input[_ET]],\n [_km]: [, input[_KM]],\n [_mk]: [() => input.MaxKeys !== void 0, () => input[_MK].toString()],\n [_pr]: [, input[_P]],\n [_vim]: [, input[_VIM]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListPartsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n [_xasseca]: input[_SSECA],\n [_xasseck]: input[_SSECK],\n [_xasseckm]: input[_SSECKMD],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_xi]: [, \"ListParts\"],\n [_mp]: [() => input.MaxParts !== void 0, () => input[_MP].toString()],\n [_pnm]: [, input[_PNM]],\n [_uI]: [, __expectNonNull(input[_UI], `UploadId`)],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketAccelerateConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xaebo]: input[_EBO],\n [_xasca]: input[_CA],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_ac]: [, \"\"],\n });\n let body;\n let contents;\n if (input.AccelerateConfiguration !== undefined) {\n contents = se_AccelerateConfiguration(input.AccelerateConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketAclCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xaa]: input[_ACL],\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xagfc]: input[_GFC],\n [_xagr]: input[_GR],\n [_xagra]: input[_GRACP],\n [_xagw]: input[_GW],\n [_xagwa]: input[_GWACP],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_acl]: [, \"\"],\n });\n let body;\n let contents;\n if (input.AccessControlPolicy !== undefined) {\n contents = se_AccessControlPolicy(input.AccessControlPolicy, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketAnalyticsConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_a]: [, \"\"],\n [_i]: [, __expectNonNull(input[_I], `Id`)],\n });\n let body;\n let contents;\n if (input.AnalyticsConfiguration !== undefined) {\n contents = se_AnalyticsConfiguration(input.AnalyticsConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketCorsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_c]: [, \"\"],\n });\n let body;\n let contents;\n if (input.CORSConfiguration !== undefined) {\n contents = se_CORSConfiguration(input.CORSConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketEncryptionCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_en]: [, \"\"],\n });\n let body;\n let contents;\n if (input.ServerSideEncryptionConfiguration !== undefined) {\n contents = se_ServerSideEncryptionConfiguration(input.ServerSideEncryptionConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketIntelligentTieringConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {\n \"content-type\": \"application/xml\",\n };\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_it]: [, \"\"],\n [_i]: [, __expectNonNull(input[_I], `Id`)],\n });\n let body;\n let contents;\n if (input.IntelligentTieringConfiguration !== undefined) {\n contents = se_IntelligentTieringConfiguration(input.IntelligentTieringConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketInventoryConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_in]: [, \"\"],\n [_i]: [, __expectNonNull(input[_I], `Id`)],\n });\n let body;\n let contents;\n if (input.InventoryConfiguration !== undefined) {\n contents = se_InventoryConfiguration(input.InventoryConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketLifecycleConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xasca]: input[_CA],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_l]: [, \"\"],\n });\n let body;\n let contents;\n if (input.LifecycleConfiguration !== undefined) {\n contents = se_BucketLifecycleConfiguration(input.LifecycleConfiguration, context);\n contents = contents.n(\"LifecycleConfiguration\");\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketLoggingCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_log]: [, \"\"],\n });\n let body;\n let contents;\n if (input.BucketLoggingStatus !== undefined) {\n contents = se_BucketLoggingStatus(input.BucketLoggingStatus, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketMetricsConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_m]: [, \"\"],\n [_i]: [, __expectNonNull(input[_I], `Id`)],\n });\n let body;\n let contents;\n if (input.MetricsConfiguration !== undefined) {\n contents = se_MetricsConfiguration(input.MetricsConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketNotificationConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xaebo]: input[_EBO],\n [_xasdv]: [() => isSerializableHeaderValue(input[_SDV]), () => input[_SDV].toString()],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_n]: [, \"\"],\n });\n let body;\n let contents;\n if (input.NotificationConfiguration !== undefined) {\n contents = se_NotificationConfiguration(input.NotificationConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketOwnershipControlsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_cm]: input[_CMD],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_oC]: [, \"\"],\n });\n let body;\n let contents;\n if (input.OwnershipControls !== undefined) {\n contents = se_OwnershipControls(input.OwnershipControls, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketPolicyCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"text/plain\",\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xacrsba]: [() => isSerializableHeaderValue(input[_CRSBA]), () => input[_CRSBA].toString()],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_p]: [, \"\"],\n });\n let body;\n let contents;\n if (input.Policy !== undefined) {\n contents = input.Policy;\n body = contents;\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketReplicationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xabolt]: input[_To],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_r]: [, \"\"],\n });\n let body;\n let contents;\n if (input.ReplicationConfiguration !== undefined) {\n contents = se_ReplicationConfiguration(input.ReplicationConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketRequestPaymentCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_rP]: [, \"\"],\n });\n let body;\n let contents;\n if (input.RequestPaymentConfiguration !== undefined) {\n contents = se_RequestPaymentConfiguration(input.RequestPaymentConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketTaggingCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_t]: [, \"\"],\n });\n let body;\n let contents;\n if (input.Tagging !== undefined) {\n contents = se_Tagging(input.Tagging, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketVersioningCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xam]: input[_MFA],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_v]: [, \"\"],\n });\n let body;\n let contents;\n if (input.VersioningConfiguration !== undefined) {\n contents = se_VersioningConfiguration(input.VersioningConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutBucketWebsiteCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_w]: [, \"\"],\n });\n let body;\n let contents;\n if (input.WebsiteConfiguration !== undefined) {\n contents = se_WebsiteConfiguration(input.WebsiteConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutObjectCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_ct]: input[_CT] || \"application/octet-stream\",\n [_xaa]: input[_ACL],\n [_cc]: input[_CC],\n [_cd]: input[_CD],\n [_ce]: input[_CE],\n [_cl]: input[_CL],\n [_cl_]: [() => isSerializableHeaderValue(input[_CLo]), () => input[_CLo].toString()],\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xacc]: input[_CCRC],\n [_xacc_]: input[_CCRCC],\n [_xacs]: input[_CSHA],\n [_xacs_]: input[_CSHAh],\n [_e]: [() => isSerializableHeaderValue(input[_E]), () => __dateToUtcString(input[_E]).toString()],\n [_xagfc]: input[_GFC],\n [_xagr]: input[_GR],\n [_xagra]: input[_GRACP],\n [_xagwa]: input[_GWACP],\n [_xasse]: input[_SSE],\n [_xasc]: input[_SC],\n [_xawrl]: input[_WRL],\n [_xasseca]: input[_SSECA],\n [_xasseck]: input[_SSECK],\n [_xasseckm]: input[_SSECKMD],\n [_xasseakki]: input[_SSEKMSKI],\n [_xassec]: input[_SSEKMSEC],\n [_xassebke]: [() => isSerializableHeaderValue(input[_BKE]), () => input[_BKE].toString()],\n [_xarp]: input[_RP],\n [_xat]: input[_T],\n [_xaolm]: input[_OLM],\n [_xaolrud]: [() => isSerializableHeaderValue(input[_OLRUD]), () => __serializeDateTime(input[_OLRUD]).toString()],\n [_xaollh]: input[_OLLHS],\n [_xaebo]: input[_EBO],\n ...(input.Metadata !== undefined &&\n Object.keys(input.Metadata).reduce((acc, suffix) => {\n acc[`x-amz-meta-${suffix.toLowerCase()}`] = input.Metadata[suffix];\n return acc;\n }, {})),\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_xi]: [, \"PutObject\"],\n });\n let body;\n let contents;\n if (input.Body !== undefined) {\n contents = input.Body;\n body = contents;\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutObjectAclCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xaa]: input[_ACL],\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xagfc]: input[_GFC],\n [_xagr]: input[_GR],\n [_xagra]: input[_GRACP],\n [_xagw]: input[_GW],\n [_xagwa]: input[_GWACP],\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_acl]: [, \"\"],\n [_vI]: [, input[_VI]],\n });\n let body;\n let contents;\n if (input.AccessControlPolicy !== undefined) {\n contents = se_AccessControlPolicy(input.AccessControlPolicy, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutObjectLegalHoldCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xarp]: input[_RP],\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_lh]: [, \"\"],\n [_vI]: [, input[_VI]],\n });\n let body;\n let contents;\n if (input.LegalHold !== undefined) {\n contents = se_ObjectLockLegalHold(input.LegalHold, context);\n contents = contents.n(\"LegalHold\");\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutObjectLockConfigurationCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xarp]: input[_RP],\n [_xabolt]: input[_To],\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_ol]: [, \"\"],\n });\n let body;\n let contents;\n if (input.ObjectLockConfiguration !== undefined) {\n contents = se_ObjectLockConfiguration(input.ObjectLockConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutObjectRetentionCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xarp]: input[_RP],\n [_xabgr]: [() => isSerializableHeaderValue(input[_BGR]), () => input[_BGR].toString()],\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_ret]: [, \"\"],\n [_vI]: [, input[_VI]],\n });\n let body;\n let contents;\n if (input.Retention !== undefined) {\n contents = se_ObjectLockRetention(input.Retention, context);\n contents = contents.n(\"Retention\");\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutObjectTaggingCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xaebo]: input[_EBO],\n [_xarp]: input[_RP],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_t]: [, \"\"],\n [_vI]: [, input[_VI]],\n });\n let body;\n let contents;\n if (input.Tagging !== undefined) {\n contents = se_Tagging(input.Tagging, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutPublicAccessBlockCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n const query = map({\n [_pAB]: [, \"\"],\n });\n let body;\n let contents;\n if (input.PublicAccessBlockConfiguration !== undefined) {\n contents = se_PublicAccessBlockConfiguration(input.PublicAccessBlockConfiguration, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_RestoreObjectCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xarp]: input[_RP],\n [_xasca]: input[_CA],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_res]: [, \"\"],\n [_vI]: [, input[_VI]],\n });\n let body;\n let contents;\n if (input.RestoreRequest !== undefined) {\n contents = se_RestoreRequest(input.RestoreRequest, context);\n body = _ve;\n contents.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_SelectObjectContentCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/xml\",\n [_xasseca]: input[_SSECA],\n [_xasseck]: input[_SSECK],\n [_xasseckm]: input[_SSECKMD],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_se]: [, \"\"],\n [_st]: [, \"2\"],\n });\n let body;\n body = _ve;\n const bn = new __XmlNode(_SOCR);\n bn.a(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n bn.cc(input, _Ex);\n bn.cc(input, _ETx);\n if (input[_IS] != null) {\n bn.c(se_InputSerialization(input[_IS], context).n(_IS));\n }\n if (input[_OS] != null) {\n bn.c(se_OutputSerialization(input[_OS], context).n(_OS));\n }\n if (input[_RPe] != null) {\n bn.c(se_RequestProgress(input[_RPe], context).n(_RPe));\n }\n if (input[_SR] != null) {\n bn.c(se_ScanRange(input[_SR], context).n(_SR));\n }\n body += bn.toString();\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_UploadPartCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/octet-stream\",\n [_cl_]: [() => isSerializableHeaderValue(input[_CLo]), () => input[_CLo].toString()],\n [_cm]: input[_CMD],\n [_xasca]: input[_CA],\n [_xacc]: input[_CCRC],\n [_xacc_]: input[_CCRCC],\n [_xacs]: input[_CSHA],\n [_xacs_]: input[_CSHAh],\n [_xasseca]: input[_SSECA],\n [_xasseck]: input[_SSECK],\n [_xasseckm]: input[_SSECKMD],\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_xi]: [, \"UploadPart\"],\n [_pN]: [__expectNonNull(input.PartNumber, `PartNumber`) != null, () => input[_PN].toString()],\n [_uI]: [, __expectNonNull(input[_UI], `UploadId`)],\n });\n let body;\n let contents;\n if (input.Body !== undefined) {\n contents = input.Body;\n body = contents;\n }\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_UploadPartCopyCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacs__]: input[_CS],\n [_xacsim]: input[_CSIM],\n [_xacsims]: [() => isSerializableHeaderValue(input[_CSIMS]), () => __dateToUtcString(input[_CSIMS]).toString()],\n [_xacsinm]: input[_CSINM],\n [_xacsius]: [() => isSerializableHeaderValue(input[_CSIUS]), () => __dateToUtcString(input[_CSIUS]).toString()],\n [_xacsr]: input[_CSR],\n [_xasseca]: input[_SSECA],\n [_xasseck]: input[_SSECK],\n [_xasseckm]: input[_SSECKMD],\n [_xacssseca]: input[_CSSSECA],\n [_xacssseck]: input[_CSSSECK],\n [_xacssseckm]: input[_CSSSECKMD],\n [_xarp]: input[_RP],\n [_xaebo]: input[_EBO],\n [_xasebo]: input[_ESBO],\n });\n b.bp(\"/{Key+}\");\n b.p(\"Bucket\", () => input.Bucket, \"{Bucket}\", false);\n b.p(\"Key\", () => input.Key, \"{Key+}\", true);\n const query = map({\n [_xi]: [, \"UploadPartCopy\"],\n [_pN]: [__expectNonNull(input.PartNumber, `PartNumber`) != null, () => input[_PN].toString()],\n [_uI]: [, __expectNonNull(input[_UI], `UploadId`)],\n });\n let body;\n b.m(\"PUT\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_WriteGetObjectResponseCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"x-amz-content-sha256\": \"UNSIGNED-PAYLOAD\",\n \"content-type\": \"application/octet-stream\",\n [_xarr]: input[_RR],\n [_xart]: input[_RT],\n [_xafs]: [() => isSerializableHeaderValue(input[_SCt]), () => input[_SCt].toString()],\n [_xafec]: input[_EC],\n [_xafem]: input[_EM],\n [_xafhar]: input[_AR],\n [_xafhcc]: input[_CC],\n [_xafhcd]: input[_CD],\n [_xafhce]: input[_CE],\n [_xafhcl]: input[_CL],\n [_cl_]: [() => isSerializableHeaderValue(input[_CLo]), () => input[_CLo].toString()],\n [_xafhcr]: input[_CR],\n [_xafhct]: input[_CT],\n [_xafhxacc]: input[_CCRC],\n [_xafhxacc_]: input[_CCRCC],\n [_xafhxacs]: input[_CSHA],\n [_xafhxacs_]: input[_CSHAh],\n [_xafhxadm]: [() => isSerializableHeaderValue(input[_DM]), () => input[_DM].toString()],\n [_xafhe]: input[_ETa],\n [_xafhe_]: [() => isSerializableHeaderValue(input[_E]), () => __dateToUtcString(input[_E]).toString()],\n [_xafhxae]: input[_Exp],\n [_xafhlm]: [() => isSerializableHeaderValue(input[_LM]), () => __dateToUtcString(input[_LM]).toString()],\n [_xafhxamm]: [() => isSerializableHeaderValue(input[_MM]), () => input[_MM].toString()],\n [_xafhxaolm]: input[_OLM],\n [_xafhxaollh]: input[_OLLHS],\n [_xafhxaolrud]: [\n () => isSerializableHeaderValue(input[_OLRUD]),\n () => __serializeDateTime(input[_OLRUD]).toString(),\n ],\n [_xafhxampc]: [() => isSerializableHeaderValue(input[_PC]), () => input[_PC].toString()],\n [_xafhxars]: input[_RS],\n [_xafhxarc]: input[_RC],\n [_xafhxar]: input[_Re],\n [_xafhxasse]: input[_SSE],\n [_xafhxasseca]: input[_SSECA],\n [_xafhxasseakki]: input[_SSEKMSKI],\n [_xafhxasseckm]: input[_SSECKMD],\n [_xafhxasc]: input[_SC],\n [_xafhxatc]: [() => isSerializableHeaderValue(input[_TC]), () => input[_TC].toString()],\n [_xafhxavi]: input[_VI],\n [_xafhxassebke]: [() => isSerializableHeaderValue(input[_BKE]), () => input[_BKE].toString()],\n ...(input.Metadata !== undefined &&\n Object.keys(input.Metadata).reduce((acc, suffix) => {\n acc[`x-amz-meta-${suffix.toLowerCase()}`] = input.Metadata[suffix];\n return acc;\n }, {})),\n });\n b.bp(\"/WriteGetObjectResponse\");\n let body;\n let contents;\n if (input.Body !== undefined) {\n contents = input.Body;\n body = contents;\n }\n let { hostname: resolvedHostname } = await context.endpoint();\n if (context.disableHostPrefix !== true) {\n resolvedHostname = \"{RequestRoute}.\" + resolvedHostname;\n if (input.RequestRoute === undefined) {\n throw new Error(\"Empty value provided for input host prefix: RequestRoute.\");\n }\n resolvedHostname = resolvedHostname.replace(\"{RequestRoute}\", input.RequestRoute);\n if (!__isValidHostname(resolvedHostname)) {\n throw new Error(\"ValidationError: prefixed hostname must be hostname compatible.\");\n }\n }\n b.hn(resolvedHostname);\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n};\nexport const de_AbortMultipartUploadCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_RC]: [, output.headers[_xarc]],\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_CompleteMultipartUploadCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_Exp]: [, output.headers[_xae]],\n [_SSE]: [, output.headers[_xasse]],\n [_VI]: [, output.headers[_xavi]],\n [_SSEKMSKI]: [, output.headers[_xasseakki]],\n [_BKE]: [() => void 0 !== output.headers[_xassebke], () => __parseBoolean(output.headers[_xassebke])],\n [_RC]: [, output.headers[_xarc]],\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_B] != null) {\n contents[_B] = __expectString(data[_B]);\n }\n if (data[_CCRC] != null) {\n contents[_CCRC] = __expectString(data[_CCRC]);\n }\n if (data[_CCRCC] != null) {\n contents[_CCRCC] = __expectString(data[_CCRCC]);\n }\n if (data[_CSHA] != null) {\n contents[_CSHA] = __expectString(data[_CSHA]);\n }\n if (data[_CSHAh] != null) {\n contents[_CSHAh] = __expectString(data[_CSHAh]);\n }\n if (data[_ETa] != null) {\n contents[_ETa] = __expectString(data[_ETa]);\n }\n if (data[_K] != null) {\n contents[_K] = __expectString(data[_K]);\n }\n if (data[_L] != null) {\n contents[_L] = __expectString(data[_L]);\n }\n return contents;\n};\nexport const de_CopyObjectCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_Exp]: [, output.headers[_xae]],\n [_CSVI]: [, output.headers[_xacsvi]],\n [_VI]: [, output.headers[_xavi]],\n [_SSE]: [, output.headers[_xasse]],\n [_SSECA]: [, output.headers[_xasseca]],\n [_SSECKMD]: [, output.headers[_xasseckm]],\n [_SSEKMSKI]: [, output.headers[_xasseakki]],\n [_SSEKMSEC]: [, output.headers[_xassec]],\n [_BKE]: [() => void 0 !== output.headers[_xassebke], () => __parseBoolean(output.headers[_xassebke])],\n [_RC]: [, output.headers[_xarc]],\n });\n const data = __expectObject(await parseBody(output.body, context));\n contents.CopyObjectResult = de_CopyObjectResult(data, context);\n return contents;\n};\nexport const de_CreateBucketCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_L]: [, output.headers[_lo]],\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_CreateMultipartUploadCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_AD]: [\n () => void 0 !== output.headers[_xaad],\n () => __expectNonNull(__parseRfc7231DateTime(output.headers[_xaad])),\n ],\n [_ARI]: [, output.headers[_xaari]],\n [_SSE]: [, output.headers[_xasse]],\n [_SSECA]: [, output.headers[_xasseca]],\n [_SSECKMD]: [, output.headers[_xasseckm]],\n [_SSEKMSKI]: [, output.headers[_xasseakki]],\n [_SSEKMSEC]: [, output.headers[_xassec]],\n [_BKE]: [() => void 0 !== output.headers[_xassebke], () => __parseBoolean(output.headers[_xassebke])],\n [_RC]: [, output.headers[_xarc]],\n [_CA]: [, output.headers[_xaca]],\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_B] != null) {\n contents[_B] = __expectString(data[_B]);\n }\n if (data[_K] != null) {\n contents[_K] = __expectString(data[_K]);\n }\n if (data[_UI] != null) {\n contents[_UI] = __expectString(data[_UI]);\n }\n return contents;\n};\nexport const de_CreateSessionCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_C] != null) {\n contents[_C] = de_SessionCredentials(data[_C], context);\n }\n return contents;\n};\nexport const de_DeleteBucketCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteBucketAnalyticsConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteBucketCorsCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteBucketEncryptionCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteBucketIntelligentTieringConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteBucketInventoryConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteBucketLifecycleCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteBucketMetricsConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteBucketOwnershipControlsCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteBucketPolicyCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteBucketReplicationCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteBucketTaggingCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteBucketWebsiteCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteObjectCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_DM]: [() => void 0 !== output.headers[_xadm], () => __parseBoolean(output.headers[_xadm])],\n [_VI]: [, output.headers[_xavi]],\n [_RC]: [, output.headers[_xarc]],\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteObjectsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_RC]: [, output.headers[_xarc]],\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data.Deleted === \"\") {\n contents[_De] = [];\n }\n else if (data[_De] != null) {\n contents[_De] = de_DeletedObjects(__getArrayIfSingleItem(data[_De]), context);\n }\n if (data.Error === \"\") {\n contents[_Err] = [];\n }\n else if (data[_Er] != null) {\n contents[_Err] = de_Errors(__getArrayIfSingleItem(data[_Er]), context);\n }\n return contents;\n};\nexport const de_DeleteObjectTaggingCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_VI]: [, output.headers[_xavi]],\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeletePublicAccessBlockCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_GetBucketAccelerateConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_RC]: [, output.headers[_xarc]],\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_S] != null) {\n contents[_S] = __expectString(data[_S]);\n }\n return contents;\n};\nexport const de_GetBucketAclCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data.AccessControlList === \"\") {\n contents[_Gr] = [];\n }\n else if (data[_ACLc] != null && data[_ACLc][_G] != null) {\n contents[_Gr] = de_Grants(__getArrayIfSingleItem(data[_ACLc][_G]), context);\n }\n if (data[_O] != null) {\n contents[_O] = de_Owner(data[_O], context);\n }\n return contents;\n};\nexport const de_GetBucketAnalyticsConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectObject(await parseBody(output.body, context));\n contents.AnalyticsConfiguration = de_AnalyticsConfiguration(data, context);\n return contents;\n};\nexport const de_GetBucketCorsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data.CORSRule === \"\") {\n contents[_CORSRu] = [];\n }\n else if (data[_CORSR] != null) {\n contents[_CORSRu] = de_CORSRules(__getArrayIfSingleItem(data[_CORSR]), context);\n }\n return contents;\n};\nexport const de_GetBucketEncryptionCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectObject(await parseBody(output.body, context));\n contents.ServerSideEncryptionConfiguration = de_ServerSideEncryptionConfiguration(data, context);\n return contents;\n};\nexport const de_GetBucketIntelligentTieringConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectObject(await parseBody(output.body, context));\n contents.IntelligentTieringConfiguration = de_IntelligentTieringConfiguration(data, context);\n return contents;\n};\nexport const de_GetBucketInventoryConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectObject(await parseBody(output.body, context));\n contents.InventoryConfiguration = de_InventoryConfiguration(data, context);\n return contents;\n};\nexport const de_GetBucketLifecycleConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data.Rule === \"\") {\n contents[_Rul] = [];\n }\n else if (data[_Ru] != null) {\n contents[_Rul] = de_LifecycleRules(__getArrayIfSingleItem(data[_Ru]), context);\n }\n return contents;\n};\nexport const de_GetBucketLocationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_LC] != null) {\n contents[_LC] = __expectString(data[_LC]);\n }\n return contents;\n};\nexport const de_GetBucketLoggingCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_LE] != null) {\n contents[_LE] = de_LoggingEnabled(data[_LE], context);\n }\n return contents;\n};\nexport const de_GetBucketMetricsConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectObject(await parseBody(output.body, context));\n contents.MetricsConfiguration = de_MetricsConfiguration(data, context);\n return contents;\n};\nexport const de_GetBucketNotificationConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_EBC] != null) {\n contents[_EBC] = de_EventBridgeConfiguration(data[_EBC], context);\n }\n if (data.CloudFunctionConfiguration === \"\") {\n contents[_LFC] = [];\n }\n else if (data[_CFC] != null) {\n contents[_LFC] = de_LambdaFunctionConfigurationList(__getArrayIfSingleItem(data[_CFC]), context);\n }\n if (data.QueueConfiguration === \"\") {\n contents[_QCu] = [];\n }\n else if (data[_QC] != null) {\n contents[_QCu] = de_QueueConfigurationList(__getArrayIfSingleItem(data[_QC]), context);\n }\n if (data.TopicConfiguration === \"\") {\n contents[_TCop] = [];\n }\n else if (data[_TCo] != null) {\n contents[_TCop] = de_TopicConfigurationList(__getArrayIfSingleItem(data[_TCo]), context);\n }\n return contents;\n};\nexport const de_GetBucketOwnershipControlsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectObject(await parseBody(output.body, context));\n contents.OwnershipControls = de_OwnershipControls(data, context);\n return contents;\n};\nexport const de_GetBucketPolicyCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = await collectBodyString(output.body, context);\n contents.Policy = __expectString(data);\n return contents;\n};\nexport const de_GetBucketPolicyStatusCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectObject(await parseBody(output.body, context));\n contents.PolicyStatus = de_PolicyStatus(data, context);\n return contents;\n};\nexport const de_GetBucketReplicationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectObject(await parseBody(output.body, context));\n contents.ReplicationConfiguration = de_ReplicationConfiguration(data, context);\n return contents;\n};\nexport const de_GetBucketRequestPaymentCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_Pa] != null) {\n contents[_Pa] = __expectString(data[_Pa]);\n }\n return contents;\n};\nexport const de_GetBucketTaggingCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data.TagSet === \"\") {\n contents[_TS] = [];\n }\n else if (data[_TS] != null && data[_TS][_Ta] != null) {\n contents[_TS] = de_TagSet(__getArrayIfSingleItem(data[_TS][_Ta]), context);\n }\n return contents;\n};\nexport const de_GetBucketVersioningCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_MDf] != null) {\n contents[_MFAD] = __expectString(data[_MDf]);\n }\n if (data[_S] != null) {\n contents[_S] = __expectString(data[_S]);\n }\n return contents;\n};\nexport const de_GetBucketWebsiteCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_ED] != null) {\n contents[_ED] = de_ErrorDocument(data[_ED], context);\n }\n if (data[_ID] != null) {\n contents[_ID] = de_IndexDocument(data[_ID], context);\n }\n if (data[_RART] != null) {\n contents[_RART] = de_RedirectAllRequestsTo(data[_RART], context);\n }\n if (data.RoutingRules === \"\") {\n contents[_RRo] = [];\n }\n else if (data[_RRo] != null && data[_RRo][_RRou] != null) {\n contents[_RRo] = de_RoutingRules(__getArrayIfSingleItem(data[_RRo][_RRou]), context);\n }\n return contents;\n};\nexport const de_GetObjectCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_DM]: [() => void 0 !== output.headers[_xadm], () => __parseBoolean(output.headers[_xadm])],\n [_AR]: [, output.headers[_ar]],\n [_Exp]: [, output.headers[_xae]],\n [_Re]: [, output.headers[_xar]],\n [_LM]: [() => void 0 !== output.headers[_lm], () => __expectNonNull(__parseRfc7231DateTime(output.headers[_lm]))],\n [_CLo]: [() => void 0 !== output.headers[_cl_], () => __strictParseLong(output.headers[_cl_])],\n [_ETa]: [, output.headers[_eta]],\n [_CCRC]: [, output.headers[_xacc]],\n [_CCRCC]: [, output.headers[_xacc_]],\n [_CSHA]: [, output.headers[_xacs]],\n [_CSHAh]: [, output.headers[_xacs_]],\n [_MM]: [() => void 0 !== output.headers[_xamm], () => __strictParseInt32(output.headers[_xamm])],\n [_VI]: [, output.headers[_xavi]],\n [_CC]: [, output.headers[_cc]],\n [_CD]: [, output.headers[_cd]],\n [_CE]: [, output.headers[_ce]],\n [_CL]: [, output.headers[_cl]],\n [_CR]: [, output.headers[_cr]],\n [_CT]: [, output.headers[_ct]],\n [_E]: [() => void 0 !== output.headers[_e], () => __expectNonNull(__parseRfc7231DateTime(output.headers[_e]))],\n [_ES]: [, output.headers[_ex]],\n [_WRL]: [, output.headers[_xawrl]],\n [_SSE]: [, output.headers[_xasse]],\n [_SSECA]: [, output.headers[_xasseca]],\n [_SSECKMD]: [, output.headers[_xasseckm]],\n [_SSEKMSKI]: [, output.headers[_xasseakki]],\n [_BKE]: [() => void 0 !== output.headers[_xassebke], () => __parseBoolean(output.headers[_xassebke])],\n [_SC]: [, output.headers[_xasc]],\n [_RC]: [, output.headers[_xarc]],\n [_RS]: [, output.headers[_xars]],\n [_PC]: [() => void 0 !== output.headers[_xampc], () => __strictParseInt32(output.headers[_xampc])],\n [_TC]: [() => void 0 !== output.headers[_xatc], () => __strictParseInt32(output.headers[_xatc])],\n [_OLM]: [, output.headers[_xaolm]],\n [_OLRUD]: [\n () => void 0 !== output.headers[_xaolrud],\n () => __expectNonNull(__parseRfc3339DateTimeWithOffset(output.headers[_xaolrud])),\n ],\n [_OLLHS]: [, output.headers[_xaollh]],\n Metadata: [\n ,\n Object.keys(output.headers)\n .filter((header) => header.startsWith(\"x-amz-meta-\"))\n .reduce((acc, header) => {\n acc[header.substring(11)] = output.headers[header];\n return acc;\n }, {}),\n ],\n });\n const data = output.body;\n context.sdkStreamMixin(data);\n contents.Body = data;\n return contents;\n};\nexport const de_GetObjectAclCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_RC]: [, output.headers[_xarc]],\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data.AccessControlList === \"\") {\n contents[_Gr] = [];\n }\n else if (data[_ACLc] != null && data[_ACLc][_G] != null) {\n contents[_Gr] = de_Grants(__getArrayIfSingleItem(data[_ACLc][_G]), context);\n }\n if (data[_O] != null) {\n contents[_O] = de_Owner(data[_O], context);\n }\n return contents;\n};\nexport const de_GetObjectAttributesCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_DM]: [() => void 0 !== output.headers[_xadm], () => __parseBoolean(output.headers[_xadm])],\n [_LM]: [() => void 0 !== output.headers[_lm], () => __expectNonNull(__parseRfc7231DateTime(output.headers[_lm]))],\n [_VI]: [, output.headers[_xavi]],\n [_RC]: [, output.headers[_xarc]],\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_Ch] != null) {\n contents[_Ch] = de_Checksum(data[_Ch], context);\n }\n if (data[_ETa] != null) {\n contents[_ETa] = __expectString(data[_ETa]);\n }\n if (data[_OP] != null) {\n contents[_OP] = de_GetObjectAttributesParts(data[_OP], context);\n }\n if (data[_OSb] != null) {\n contents[_OSb] = __strictParseLong(data[_OSb]);\n }\n if (data[_SC] != null) {\n contents[_SC] = __expectString(data[_SC]);\n }\n return contents;\n};\nexport const de_GetObjectLegalHoldCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectObject(await parseBody(output.body, context));\n contents.LegalHold = de_ObjectLockLegalHold(data, context);\n return contents;\n};\nexport const de_GetObjectLockConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectObject(await parseBody(output.body, context));\n contents.ObjectLockConfiguration = de_ObjectLockConfiguration(data, context);\n return contents;\n};\nexport const de_GetObjectRetentionCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectObject(await parseBody(output.body, context));\n contents.Retention = de_ObjectLockRetention(data, context);\n return contents;\n};\nexport const de_GetObjectTaggingCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_VI]: [, output.headers[_xavi]],\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data.TagSet === \"\") {\n contents[_TS] = [];\n }\n else if (data[_TS] != null && data[_TS][_Ta] != null) {\n contents[_TS] = de_TagSet(__getArrayIfSingleItem(data[_TS][_Ta]), context);\n }\n return contents;\n};\nexport const de_GetObjectTorrentCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_RC]: [, output.headers[_xarc]],\n });\n const data = output.body;\n context.sdkStreamMixin(data);\n contents.Body = data;\n return contents;\n};\nexport const de_GetPublicAccessBlockCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectObject(await parseBody(output.body, context));\n contents.PublicAccessBlockConfiguration = de_PublicAccessBlockConfiguration(data, context);\n return contents;\n};\nexport const de_HeadBucketCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_BLT]: [, output.headers[_xablt]],\n [_BLN]: [, output.headers[_xabln]],\n [_BR]: [, output.headers[_xabr]],\n [_APA]: [() => void 0 !== output.headers[_xaapa], () => __parseBoolean(output.headers[_xaapa])],\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_HeadObjectCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_DM]: [() => void 0 !== output.headers[_xadm], () => __parseBoolean(output.headers[_xadm])],\n [_AR]: [, output.headers[_ar]],\n [_Exp]: [, output.headers[_xae]],\n [_Re]: [, output.headers[_xar]],\n [_AS]: [, output.headers[_xaas]],\n [_LM]: [() => void 0 !== output.headers[_lm], () => __expectNonNull(__parseRfc7231DateTime(output.headers[_lm]))],\n [_CLo]: [() => void 0 !== output.headers[_cl_], () => __strictParseLong(output.headers[_cl_])],\n [_CCRC]: [, output.headers[_xacc]],\n [_CCRCC]: [, output.headers[_xacc_]],\n [_CSHA]: [, output.headers[_xacs]],\n [_CSHAh]: [, output.headers[_xacs_]],\n [_ETa]: [, output.headers[_eta]],\n [_MM]: [() => void 0 !== output.headers[_xamm], () => __strictParseInt32(output.headers[_xamm])],\n [_VI]: [, output.headers[_xavi]],\n [_CC]: [, output.headers[_cc]],\n [_CD]: [, output.headers[_cd]],\n [_CE]: [, output.headers[_ce]],\n [_CL]: [, output.headers[_cl]],\n [_CT]: [, output.headers[_ct]],\n [_E]: [() => void 0 !== output.headers[_e], () => __expectNonNull(__parseRfc7231DateTime(output.headers[_e]))],\n [_ES]: [, output.headers[_ex]],\n [_WRL]: [, output.headers[_xawrl]],\n [_SSE]: [, output.headers[_xasse]],\n [_SSECA]: [, output.headers[_xasseca]],\n [_SSECKMD]: [, output.headers[_xasseckm]],\n [_SSEKMSKI]: [, output.headers[_xasseakki]],\n [_BKE]: [() => void 0 !== output.headers[_xassebke], () => __parseBoolean(output.headers[_xassebke])],\n [_SC]: [, output.headers[_xasc]],\n [_RC]: [, output.headers[_xarc]],\n [_RS]: [, output.headers[_xars]],\n [_PC]: [() => void 0 !== output.headers[_xampc], () => __strictParseInt32(output.headers[_xampc])],\n [_OLM]: [, output.headers[_xaolm]],\n [_OLRUD]: [\n () => void 0 !== output.headers[_xaolrud],\n () => __expectNonNull(__parseRfc3339DateTimeWithOffset(output.headers[_xaolrud])),\n ],\n [_OLLHS]: [, output.headers[_xaollh]],\n Metadata: [\n ,\n Object.keys(output.headers)\n .filter((header) => header.startsWith(\"x-amz-meta-\"))\n .reduce((acc, header) => {\n acc[header.substring(11)] = output.headers[header];\n return acc;\n }, {}),\n ],\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_ListBucketAnalyticsConfigurationsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data.AnalyticsConfiguration === \"\") {\n contents[_ACLn] = [];\n }\n else if (data[_AC] != null) {\n contents[_ACLn] = de_AnalyticsConfigurationList(__getArrayIfSingleItem(data[_AC]), context);\n }\n if (data[_CTo] != null) {\n contents[_CTo] = __expectString(data[_CTo]);\n }\n if (data[_IT] != null) {\n contents[_IT] = __parseBoolean(data[_IT]);\n }\n if (data[_NCT] != null) {\n contents[_NCT] = __expectString(data[_NCT]);\n }\n return contents;\n};\nexport const de_ListBucketIntelligentTieringConfigurationsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_CTo] != null) {\n contents[_CTo] = __expectString(data[_CTo]);\n }\n if (data.IntelligentTieringConfiguration === \"\") {\n contents[_ITCL] = [];\n }\n else if (data[_ITC] != null) {\n contents[_ITCL] = de_IntelligentTieringConfigurationList(__getArrayIfSingleItem(data[_ITC]), context);\n }\n if (data[_IT] != null) {\n contents[_IT] = __parseBoolean(data[_IT]);\n }\n if (data[_NCT] != null) {\n contents[_NCT] = __expectString(data[_NCT]);\n }\n return contents;\n};\nexport const de_ListBucketInventoryConfigurationsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_CTo] != null) {\n contents[_CTo] = __expectString(data[_CTo]);\n }\n if (data.InventoryConfiguration === \"\") {\n contents[_ICL] = [];\n }\n else if (data[_IC] != null) {\n contents[_ICL] = de_InventoryConfigurationList(__getArrayIfSingleItem(data[_IC]), context);\n }\n if (data[_IT] != null) {\n contents[_IT] = __parseBoolean(data[_IT]);\n }\n if (data[_NCT] != null) {\n contents[_NCT] = __expectString(data[_NCT]);\n }\n return contents;\n};\nexport const de_ListBucketMetricsConfigurationsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_CTo] != null) {\n contents[_CTo] = __expectString(data[_CTo]);\n }\n if (data[_IT] != null) {\n contents[_IT] = __parseBoolean(data[_IT]);\n }\n if (data.MetricsConfiguration === \"\") {\n contents[_MCL] = [];\n }\n else if (data[_MC] != null) {\n contents[_MCL] = de_MetricsConfigurationList(__getArrayIfSingleItem(data[_MC]), context);\n }\n if (data[_NCT] != null) {\n contents[_NCT] = __expectString(data[_NCT]);\n }\n return contents;\n};\nexport const de_ListBucketsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data.Buckets === \"\") {\n contents[_Bu] = [];\n }\n else if (data[_Bu] != null && data[_Bu][_B] != null) {\n contents[_Bu] = de_Buckets(__getArrayIfSingleItem(data[_Bu][_B]), context);\n }\n if (data[_O] != null) {\n contents[_O] = de_Owner(data[_O], context);\n }\n return contents;\n};\nexport const de_ListDirectoryBucketsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data.Buckets === \"\") {\n contents[_Bu] = [];\n }\n else if (data[_Bu] != null && data[_Bu][_B] != null) {\n contents[_Bu] = de_Buckets(__getArrayIfSingleItem(data[_Bu][_B]), context);\n }\n if (data[_CTo] != null) {\n contents[_CTo] = __expectString(data[_CTo]);\n }\n return contents;\n};\nexport const de_ListMultipartUploadsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_RC]: [, output.headers[_xarc]],\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_B] != null) {\n contents[_B] = __expectString(data[_B]);\n }\n if (data.CommonPrefixes === \"\") {\n contents[_CP] = [];\n }\n else if (data[_CP] != null) {\n contents[_CP] = de_CommonPrefixList(__getArrayIfSingleItem(data[_CP]), context);\n }\n if (data[_D] != null) {\n contents[_D] = __expectString(data[_D]);\n }\n if (data[_ET] != null) {\n contents[_ET] = __expectString(data[_ET]);\n }\n if (data[_IT] != null) {\n contents[_IT] = __parseBoolean(data[_IT]);\n }\n if (data[_KM] != null) {\n contents[_KM] = __expectString(data[_KM]);\n }\n if (data[_MU] != null) {\n contents[_MU] = __strictParseInt32(data[_MU]);\n }\n if (data[_NKM] != null) {\n contents[_NKM] = __expectString(data[_NKM]);\n }\n if (data[_NUIM] != null) {\n contents[_NUIM] = __expectString(data[_NUIM]);\n }\n if (data[_P] != null) {\n contents[_P] = __expectString(data[_P]);\n }\n if (data[_UIM] != null) {\n contents[_UIM] = __expectString(data[_UIM]);\n }\n if (data.Upload === \"\") {\n contents[_Up] = [];\n }\n else if (data[_U] != null) {\n contents[_Up] = de_MultipartUploadList(__getArrayIfSingleItem(data[_U]), context);\n }\n return contents;\n};\nexport const de_ListObjectsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_RC]: [, output.headers[_xarc]],\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data.CommonPrefixes === \"\") {\n contents[_CP] = [];\n }\n else if (data[_CP] != null) {\n contents[_CP] = de_CommonPrefixList(__getArrayIfSingleItem(data[_CP]), context);\n }\n if (data.Contents === \"\") {\n contents[_Co] = [];\n }\n else if (data[_Co] != null) {\n contents[_Co] = de_ObjectList(__getArrayIfSingleItem(data[_Co]), context);\n }\n if (data[_D] != null) {\n contents[_D] = __expectString(data[_D]);\n }\n if (data[_ET] != null) {\n contents[_ET] = __expectString(data[_ET]);\n }\n if (data[_IT] != null) {\n contents[_IT] = __parseBoolean(data[_IT]);\n }\n if (data[_M] != null) {\n contents[_M] = __expectString(data[_M]);\n }\n if (data[_MK] != null) {\n contents[_MK] = __strictParseInt32(data[_MK]);\n }\n if (data[_N] != null) {\n contents[_N] = __expectString(data[_N]);\n }\n if (data[_NM] != null) {\n contents[_NM] = __expectString(data[_NM]);\n }\n if (data[_P] != null) {\n contents[_P] = __expectString(data[_P]);\n }\n return contents;\n};\nexport const de_ListObjectsV2Command = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_RC]: [, output.headers[_xarc]],\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data.CommonPrefixes === \"\") {\n contents[_CP] = [];\n }\n else if (data[_CP] != null) {\n contents[_CP] = de_CommonPrefixList(__getArrayIfSingleItem(data[_CP]), context);\n }\n if (data.Contents === \"\") {\n contents[_Co] = [];\n }\n else if (data[_Co] != null) {\n contents[_Co] = de_ObjectList(__getArrayIfSingleItem(data[_Co]), context);\n }\n if (data[_CTo] != null) {\n contents[_CTo] = __expectString(data[_CTo]);\n }\n if (data[_D] != null) {\n contents[_D] = __expectString(data[_D]);\n }\n if (data[_ET] != null) {\n contents[_ET] = __expectString(data[_ET]);\n }\n if (data[_IT] != null) {\n contents[_IT] = __parseBoolean(data[_IT]);\n }\n if (data[_KC] != null) {\n contents[_KC] = __strictParseInt32(data[_KC]);\n }\n if (data[_MK] != null) {\n contents[_MK] = __strictParseInt32(data[_MK]);\n }\n if (data[_N] != null) {\n contents[_N] = __expectString(data[_N]);\n }\n if (data[_NCT] != null) {\n contents[_NCT] = __expectString(data[_NCT]);\n }\n if (data[_P] != null) {\n contents[_P] = __expectString(data[_P]);\n }\n if (data[_SA] != null) {\n contents[_SA] = __expectString(data[_SA]);\n }\n return contents;\n};\nexport const de_ListObjectVersionsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_RC]: [, output.headers[_xarc]],\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data.CommonPrefixes === \"\") {\n contents[_CP] = [];\n }\n else if (data[_CP] != null) {\n contents[_CP] = de_CommonPrefixList(__getArrayIfSingleItem(data[_CP]), context);\n }\n if (data.DeleteMarker === \"\") {\n contents[_DMe] = [];\n }\n else if (data[_DM] != null) {\n contents[_DMe] = de_DeleteMarkers(__getArrayIfSingleItem(data[_DM]), context);\n }\n if (data[_D] != null) {\n contents[_D] = __expectString(data[_D]);\n }\n if (data[_ET] != null) {\n contents[_ET] = __expectString(data[_ET]);\n }\n if (data[_IT] != null) {\n contents[_IT] = __parseBoolean(data[_IT]);\n }\n if (data[_KM] != null) {\n contents[_KM] = __expectString(data[_KM]);\n }\n if (data[_MK] != null) {\n contents[_MK] = __strictParseInt32(data[_MK]);\n }\n if (data[_N] != null) {\n contents[_N] = __expectString(data[_N]);\n }\n if (data[_NKM] != null) {\n contents[_NKM] = __expectString(data[_NKM]);\n }\n if (data[_NVIM] != null) {\n contents[_NVIM] = __expectString(data[_NVIM]);\n }\n if (data[_P] != null) {\n contents[_P] = __expectString(data[_P]);\n }\n if (data[_VIM] != null) {\n contents[_VIM] = __expectString(data[_VIM]);\n }\n if (data.Version === \"\") {\n contents[_Ve] = [];\n }\n else if (data[_V] != null) {\n contents[_Ve] = de_ObjectVersionList(__getArrayIfSingleItem(data[_V]), context);\n }\n return contents;\n};\nexport const de_ListPartsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_AD]: [\n () => void 0 !== output.headers[_xaad],\n () => __expectNonNull(__parseRfc7231DateTime(output.headers[_xaad])),\n ],\n [_ARI]: [, output.headers[_xaari]],\n [_RC]: [, output.headers[_xarc]],\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n if (data[_B] != null) {\n contents[_B] = __expectString(data[_B]);\n }\n if (data[_CA] != null) {\n contents[_CA] = __expectString(data[_CA]);\n }\n if (data[_In] != null) {\n contents[_In] = de_Initiator(data[_In], context);\n }\n if (data[_IT] != null) {\n contents[_IT] = __parseBoolean(data[_IT]);\n }\n if (data[_K] != null) {\n contents[_K] = __expectString(data[_K]);\n }\n if (data[_MP] != null) {\n contents[_MP] = __strictParseInt32(data[_MP]);\n }\n if (data[_NPNM] != null) {\n contents[_NPNM] = __expectString(data[_NPNM]);\n }\n if (data[_O] != null) {\n contents[_O] = de_Owner(data[_O], context);\n }\n if (data[_PNM] != null) {\n contents[_PNM] = __expectString(data[_PNM]);\n }\n if (data.Part === \"\") {\n contents[_Part] = [];\n }\n else if (data[_Par] != null) {\n contents[_Part] = de_Parts(__getArrayIfSingleItem(data[_Par]), context);\n }\n if (data[_SC] != null) {\n contents[_SC] = __expectString(data[_SC]);\n }\n if (data[_UI] != null) {\n contents[_UI] = __expectString(data[_UI]);\n }\n return contents;\n};\nexport const de_PutBucketAccelerateConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketAclCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketAnalyticsConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketCorsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketEncryptionCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketIntelligentTieringConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketInventoryConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketLifecycleConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketLoggingCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketMetricsConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketNotificationConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketOwnershipControlsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketPolicyCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketReplicationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketRequestPaymentCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketTaggingCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketVersioningCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutBucketWebsiteCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutObjectCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_Exp]: [, output.headers[_xae]],\n [_ETa]: [, output.headers[_eta]],\n [_CCRC]: [, output.headers[_xacc]],\n [_CCRCC]: [, output.headers[_xacc_]],\n [_CSHA]: [, output.headers[_xacs]],\n [_CSHAh]: [, output.headers[_xacs_]],\n [_SSE]: [, output.headers[_xasse]],\n [_VI]: [, output.headers[_xavi]],\n [_SSECA]: [, output.headers[_xasseca]],\n [_SSECKMD]: [, output.headers[_xasseckm]],\n [_SSEKMSKI]: [, output.headers[_xasseakki]],\n [_SSEKMSEC]: [, output.headers[_xassec]],\n [_BKE]: [() => void 0 !== output.headers[_xassebke], () => __parseBoolean(output.headers[_xassebke])],\n [_RC]: [, output.headers[_xarc]],\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutObjectAclCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_RC]: [, output.headers[_xarc]],\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutObjectLegalHoldCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_RC]: [, output.headers[_xarc]],\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutObjectLockConfigurationCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_RC]: [, output.headers[_xarc]],\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutObjectRetentionCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_RC]: [, output.headers[_xarc]],\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutObjectTaggingCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_VI]: [, output.headers[_xavi]],\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_PutPublicAccessBlockCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_RestoreObjectCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_RC]: [, output.headers[_xarc]],\n [_ROP]: [, output.headers[_xarop]],\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_SelectObjectContentCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = output.body;\n contents.Payload = de_SelectObjectContentEventStream(data, context);\n return contents;\n};\nexport const de_UploadPartCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_SSE]: [, output.headers[_xasse]],\n [_ETa]: [, output.headers[_eta]],\n [_CCRC]: [, output.headers[_xacc]],\n [_CCRCC]: [, output.headers[_xacc_]],\n [_CSHA]: [, output.headers[_xacs]],\n [_CSHAh]: [, output.headers[_xacs_]],\n [_SSECA]: [, output.headers[_xasseca]],\n [_SSECKMD]: [, output.headers[_xasseckm]],\n [_SSEKMSKI]: [, output.headers[_xasseakki]],\n [_BKE]: [() => void 0 !== output.headers[_xassebke], () => __parseBoolean(output.headers[_xassebke])],\n [_RC]: [, output.headers[_xarc]],\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_UploadPartCopyCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n [_CSVI]: [, output.headers[_xacsvi]],\n [_SSE]: [, output.headers[_xasse]],\n [_SSECA]: [, output.headers[_xasseca]],\n [_SSECKMD]: [, output.headers[_xasseckm]],\n [_SSEKMSKI]: [, output.headers[_xasseakki]],\n [_BKE]: [() => void 0 !== output.headers[_xassebke], () => __parseBoolean(output.headers[_xassebke])],\n [_RC]: [, output.headers[_xarc]],\n });\n const data = __expectObject(await parseBody(output.body, context));\n contents.CopyPartResult = de_CopyPartResult(data, context);\n return contents;\n};\nexport const de_WriteGetObjectResponseCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nconst de_CommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"NoSuchUpload\":\n case \"com.amazonaws.s3#NoSuchUpload\":\n throw await de_NoSuchUploadRes(parsedOutput, context);\n case \"ObjectNotInActiveTierError\":\n case \"com.amazonaws.s3#ObjectNotInActiveTierError\":\n throw await de_ObjectNotInActiveTierErrorRes(parsedOutput, context);\n case \"BucketAlreadyExists\":\n case \"com.amazonaws.s3#BucketAlreadyExists\":\n throw await de_BucketAlreadyExistsRes(parsedOutput, context);\n case \"BucketAlreadyOwnedByYou\":\n case \"com.amazonaws.s3#BucketAlreadyOwnedByYou\":\n throw await de_BucketAlreadyOwnedByYouRes(parsedOutput, context);\n case \"NoSuchBucket\":\n case \"com.amazonaws.s3#NoSuchBucket\":\n throw await de_NoSuchBucketRes(parsedOutput, context);\n case \"InvalidObjectState\":\n case \"com.amazonaws.s3#InvalidObjectState\":\n throw await de_InvalidObjectStateRes(parsedOutput, context);\n case \"NoSuchKey\":\n case \"com.amazonaws.s3#NoSuchKey\":\n throw await de_NoSuchKeyRes(parsedOutput, context);\n case \"NotFound\":\n case \"com.amazonaws.s3#NotFound\":\n throw await de_NotFoundRes(parsedOutput, context);\n case \"ObjectAlreadyInActiveTierError\":\n case \"com.amazonaws.s3#ObjectAlreadyInActiveTierError\":\n throw await de_ObjectAlreadyInActiveTierErrorRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody,\n errorCode,\n });\n }\n};\nconst throwDefaultError = withBaseException(__BaseException);\nconst de_BucketAlreadyExistsRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const exception = new BucketAlreadyExists({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_BucketAlreadyOwnedByYouRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const exception = new BucketAlreadyOwnedByYou({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_InvalidObjectStateRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n if (data[_AT] != null) {\n contents[_AT] = __expectString(data[_AT]);\n }\n if (data[_SC] != null) {\n contents[_SC] = __expectString(data[_SC]);\n }\n const exception = new InvalidObjectState({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_NoSuchBucketRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const exception = new NoSuchBucket({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_NoSuchKeyRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const exception = new NoSuchKey({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_NoSuchUploadRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const exception = new NoSuchUpload({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_NotFoundRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const exception = new NotFound({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_ObjectAlreadyInActiveTierErrorRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const exception = new ObjectAlreadyInActiveTierError({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_ObjectNotInActiveTierErrorRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const exception = new ObjectNotInActiveTierError({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_SelectObjectContentEventStream = (output, context) => {\n return context.eventStreamMarshaller.deserialize(output, async (event) => {\n if (event[\"Records\"] != null) {\n return {\n Records: await de_RecordsEvent_event(event[\"Records\"], context),\n };\n }\n if (event[\"Stats\"] != null) {\n return {\n Stats: await de_StatsEvent_event(event[\"Stats\"], context),\n };\n }\n if (event[\"Progress\"] != null) {\n return {\n Progress: await de_ProgressEvent_event(event[\"Progress\"], context),\n };\n }\n if (event[\"Cont\"] != null) {\n return {\n Cont: await de_ContinuationEvent_event(event[\"Cont\"], context),\n };\n }\n if (event[\"End\"] != null) {\n return {\n End: await de_EndEvent_event(event[\"End\"], context),\n };\n }\n return { $unknown: output };\n });\n};\nconst de_ContinuationEvent_event = async (output, context) => {\n const contents = {};\n const data = await parseBody(output.body, context);\n Object.assign(contents, de_ContinuationEvent(data, context));\n return contents;\n};\nconst de_EndEvent_event = async (output, context) => {\n const contents = {};\n const data = await parseBody(output.body, context);\n Object.assign(contents, de_EndEvent(data, context));\n return contents;\n};\nconst de_ProgressEvent_event = async (output, context) => {\n const contents = {};\n const data = await parseBody(output.body, context);\n contents.Details = de_Progress(data, context);\n return contents;\n};\nconst de_RecordsEvent_event = async (output, context) => {\n const contents = {};\n contents.Payload = output.body;\n return contents;\n};\nconst de_StatsEvent_event = async (output, context) => {\n const contents = {};\n const data = await parseBody(output.body, context);\n contents.Details = de_Stats(data, context);\n return contents;\n};\nconst se_AbortIncompleteMultipartUpload = (input, context) => {\n const bn = new __XmlNode(_AIMU);\n if (input[_DAI] != null) {\n bn.c(__XmlNode.of(_DAI, String(input[_DAI])).n(_DAI));\n }\n return bn;\n};\nconst se_AccelerateConfiguration = (input, context) => {\n const bn = new __XmlNode(_ACc);\n if (input[_S] != null) {\n bn.c(__XmlNode.of(_BAS, input[_S]).n(_S));\n }\n return bn;\n};\nconst se_AccessControlPolicy = (input, context) => {\n const bn = new __XmlNode(_ACP);\n bn.lc(input, \"Grants\", \"AccessControlList\", () => se_Grants(input[_Gr], context));\n if (input[_O] != null) {\n bn.c(se_Owner(input[_O], context).n(_O));\n }\n return bn;\n};\nconst se_AccessControlTranslation = (input, context) => {\n const bn = new __XmlNode(_ACT);\n if (input[_O] != null) {\n bn.c(__XmlNode.of(_OOw, input[_O]).n(_O));\n }\n return bn;\n};\nconst se_AllowedHeaders = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = __XmlNode.of(_AH, entry);\n return n.n(_me);\n });\n};\nconst se_AllowedMethods = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = __XmlNode.of(_AM, entry);\n return n.n(_me);\n });\n};\nconst se_AllowedOrigins = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = __XmlNode.of(_AO, entry);\n return n.n(_me);\n });\n};\nconst se_AnalyticsAndOperator = (input, context) => {\n const bn = new __XmlNode(_AAO);\n bn.cc(input, _P);\n bn.l(input, \"Tags\", \"Tag\", () => se_TagSet(input[_Tag], context));\n return bn;\n};\nconst se_AnalyticsConfiguration = (input, context) => {\n const bn = new __XmlNode(_AC);\n if (input[_I] != null) {\n bn.c(__XmlNode.of(_AI, input[_I]).n(_I));\n }\n if (input[_F] != null) {\n bn.c(se_AnalyticsFilter(input[_F], context).n(_F));\n }\n if (input[_SCA] != null) {\n bn.c(se_StorageClassAnalysis(input[_SCA], context).n(_SCA));\n }\n return bn;\n};\nconst se_AnalyticsExportDestination = (input, context) => {\n const bn = new __XmlNode(_AED);\n if (input[_SBD] != null) {\n bn.c(se_AnalyticsS3BucketDestination(input[_SBD], context).n(_SBD));\n }\n return bn;\n};\nconst se_AnalyticsFilter = (input, context) => {\n const bn = new __XmlNode(_AF);\n AnalyticsFilter.visit(input, {\n Prefix: (value) => {\n if (input[_P] != null) {\n bn.c(__XmlNode.of(_P, value).n(_P));\n }\n },\n Tag: (value) => {\n if (input[_Ta] != null) {\n bn.c(se_Tag(value, context).n(_Ta));\n }\n },\n And: (value) => {\n if (input[_A] != null) {\n bn.c(se_AnalyticsAndOperator(value, context).n(_A));\n }\n },\n _: (name, value) => {\n if (!(value instanceof __XmlNode || value instanceof __XmlText)) {\n throw new Error(\"Unable to serialize unknown union members in XML.\");\n }\n bn.c(new __XmlNode(name).c(value));\n },\n });\n return bn;\n};\nconst se_AnalyticsS3BucketDestination = (input, context) => {\n const bn = new __XmlNode(_ASBD);\n if (input[_Fo] != null) {\n bn.c(__XmlNode.of(_ASEFF, input[_Fo]).n(_Fo));\n }\n if (input[_BAI] != null) {\n bn.c(__XmlNode.of(_AIc, input[_BAI]).n(_BAI));\n }\n if (input[_B] != null) {\n bn.c(__XmlNode.of(_BN, input[_B]).n(_B));\n }\n bn.cc(input, _P);\n return bn;\n};\nconst se_BucketInfo = (input, context) => {\n const bn = new __XmlNode(_BI);\n bn.cc(input, _DR);\n if (input[_Ty] != null) {\n bn.c(__XmlNode.of(_BT, input[_Ty]).n(_Ty));\n }\n return bn;\n};\nconst se_BucketLifecycleConfiguration = (input, context) => {\n const bn = new __XmlNode(_BLC);\n bn.l(input, \"Rules\", \"Rule\", () => se_LifecycleRules(input[_Rul], context));\n return bn;\n};\nconst se_BucketLoggingStatus = (input, context) => {\n const bn = new __XmlNode(_BLS);\n if (input[_LE] != null) {\n bn.c(se_LoggingEnabled(input[_LE], context).n(_LE));\n }\n return bn;\n};\nconst se_CompletedMultipartUpload = (input, context) => {\n const bn = new __XmlNode(_CMU);\n bn.l(input, \"Parts\", \"Part\", () => se_CompletedPartList(input[_Part], context));\n return bn;\n};\nconst se_CompletedPart = (input, context) => {\n const bn = new __XmlNode(_CPo);\n bn.cc(input, _ETa);\n bn.cc(input, _CCRC);\n bn.cc(input, _CCRCC);\n bn.cc(input, _CSHA);\n bn.cc(input, _CSHAh);\n if (input[_PN] != null) {\n bn.c(__XmlNode.of(_PN, String(input[_PN])).n(_PN));\n }\n return bn;\n};\nconst se_CompletedPartList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_CompletedPart(entry, context);\n return n.n(_me);\n });\n};\nconst se_Condition = (input, context) => {\n const bn = new __XmlNode(_Con);\n bn.cc(input, _HECRE);\n bn.cc(input, _KPE);\n return bn;\n};\nconst se_CORSConfiguration = (input, context) => {\n const bn = new __XmlNode(_CORSC);\n bn.l(input, \"CORSRules\", \"CORSRule\", () => se_CORSRules(input[_CORSRu], context));\n return bn;\n};\nconst se_CORSRule = (input, context) => {\n const bn = new __XmlNode(_CORSR);\n bn.cc(input, _ID_);\n bn.l(input, \"AllowedHeaders\", \"AllowedHeader\", () => se_AllowedHeaders(input[_AHl], context));\n bn.l(input, \"AllowedMethods\", \"AllowedMethod\", () => se_AllowedMethods(input[_AMl], context));\n bn.l(input, \"AllowedOrigins\", \"AllowedOrigin\", () => se_AllowedOrigins(input[_AOl], context));\n bn.l(input, \"ExposeHeaders\", \"ExposeHeader\", () => se_ExposeHeaders(input[_EH], context));\n if (input[_MAS] != null) {\n bn.c(__XmlNode.of(_MAS, String(input[_MAS])).n(_MAS));\n }\n return bn;\n};\nconst se_CORSRules = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_CORSRule(entry, context);\n return n.n(_me);\n });\n};\nconst se_CreateBucketConfiguration = (input, context) => {\n const bn = new __XmlNode(_CBC);\n if (input[_LC] != null) {\n bn.c(__XmlNode.of(_BLCu, input[_LC]).n(_LC));\n }\n if (input[_L] != null) {\n bn.c(se_LocationInfo(input[_L], context).n(_L));\n }\n if (input[_B] != null) {\n bn.c(se_BucketInfo(input[_B], context).n(_B));\n }\n return bn;\n};\nconst se_CSVInput = (input, context) => {\n const bn = new __XmlNode(_CSVIn);\n bn.cc(input, _FHI);\n bn.cc(input, _Com);\n bn.cc(input, _QEC);\n bn.cc(input, _RD);\n bn.cc(input, _FD);\n bn.cc(input, _QCuo);\n if (input[_AQRD] != null) {\n bn.c(__XmlNode.of(_AQRD, String(input[_AQRD])).n(_AQRD));\n }\n return bn;\n};\nconst se_CSVOutput = (input, context) => {\n const bn = new __XmlNode(_CSVO);\n bn.cc(input, _QF);\n bn.cc(input, _QEC);\n bn.cc(input, _RD);\n bn.cc(input, _FD);\n bn.cc(input, _QCuo);\n return bn;\n};\nconst se_DefaultRetention = (input, context) => {\n const bn = new __XmlNode(_DRe);\n if (input[_Mo] != null) {\n bn.c(__XmlNode.of(_OLRM, input[_Mo]).n(_Mo));\n }\n if (input[_Da] != null) {\n bn.c(__XmlNode.of(_Da, String(input[_Da])).n(_Da));\n }\n if (input[_Y] != null) {\n bn.c(__XmlNode.of(_Y, String(input[_Y])).n(_Y));\n }\n return bn;\n};\nconst se_Delete = (input, context) => {\n const bn = new __XmlNode(_Del);\n bn.l(input, \"Objects\", \"Object\", () => se_ObjectIdentifierList(input[_Ob], context));\n if (input[_Q] != null) {\n bn.c(__XmlNode.of(_Q, String(input[_Q])).n(_Q));\n }\n return bn;\n};\nconst se_DeleteMarkerReplication = (input, context) => {\n const bn = new __XmlNode(_DMR);\n if (input[_S] != null) {\n bn.c(__XmlNode.of(_DMRS, input[_S]).n(_S));\n }\n return bn;\n};\nconst se_Destination = (input, context) => {\n const bn = new __XmlNode(_Des);\n if (input[_B] != null) {\n bn.c(__XmlNode.of(_BN, input[_B]).n(_B));\n }\n if (input[_Ac] != null) {\n bn.c(__XmlNode.of(_AIc, input[_Ac]).n(_Ac));\n }\n bn.cc(input, _SC);\n if (input[_ACT] != null) {\n bn.c(se_AccessControlTranslation(input[_ACT], context).n(_ACT));\n }\n if (input[_ECn] != null) {\n bn.c(se_EncryptionConfiguration(input[_ECn], context).n(_ECn));\n }\n if (input[_RTe] != null) {\n bn.c(se_ReplicationTime(input[_RTe], context).n(_RTe));\n }\n if (input[_Me] != null) {\n bn.c(se_Metrics(input[_Me], context).n(_Me));\n }\n return bn;\n};\nconst se_Encryption = (input, context) => {\n const bn = new __XmlNode(_En);\n if (input[_ETn] != null) {\n bn.c(__XmlNode.of(_SSE, input[_ETn]).n(_ETn));\n }\n if (input[_KMSKI] != null) {\n bn.c(__XmlNode.of(_SSEKMSKI, input[_KMSKI]).n(_KMSKI));\n }\n bn.cc(input, _KMSC);\n return bn;\n};\nconst se_EncryptionConfiguration = (input, context) => {\n const bn = new __XmlNode(_ECn);\n bn.cc(input, _RKKID);\n return bn;\n};\nconst se_ErrorDocument = (input, context) => {\n const bn = new __XmlNode(_ED);\n if (input[_K] != null) {\n bn.c(__XmlNode.of(_OK, input[_K]).n(_K));\n }\n return bn;\n};\nconst se_EventBridgeConfiguration = (input, context) => {\n const bn = new __XmlNode(_EBC);\n return bn;\n};\nconst se_EventList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = __XmlNode.of(_Ev, entry);\n return n.n(_me);\n });\n};\nconst se_ExistingObjectReplication = (input, context) => {\n const bn = new __XmlNode(_EOR);\n if (input[_S] != null) {\n bn.c(__XmlNode.of(_EORS, input[_S]).n(_S));\n }\n return bn;\n};\nconst se_ExposeHeaders = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = __XmlNode.of(_EHx, entry);\n return n.n(_me);\n });\n};\nconst se_FilterRule = (input, context) => {\n const bn = new __XmlNode(_FR);\n if (input[_N] != null) {\n bn.c(__XmlNode.of(_FRN, input[_N]).n(_N));\n }\n if (input[_Va] != null) {\n bn.c(__XmlNode.of(_FRV, input[_Va]).n(_Va));\n }\n return bn;\n};\nconst se_FilterRuleList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_FilterRule(entry, context);\n return n.n(_me);\n });\n};\nconst se_GlacierJobParameters = (input, context) => {\n const bn = new __XmlNode(_GJP);\n bn.cc(input, _Ti);\n return bn;\n};\nconst se_Grant = (input, context) => {\n const bn = new __XmlNode(_G);\n if (input[_Gra] != null) {\n const n = se_Grantee(input[_Gra], context).n(_Gra);\n n.a(\"xmlns:xsi\", \"http://www.w3.org/2001/XMLSchema-instance\");\n bn.c(n);\n }\n bn.cc(input, _Pe);\n return bn;\n};\nconst se_Grantee = (input, context) => {\n const bn = new __XmlNode(_Gra);\n bn.cc(input, _DN);\n bn.cc(input, _EA);\n bn.cc(input, _ID_);\n bn.cc(input, _URI);\n bn.a(\"xsi:type\", input[_Ty]);\n return bn;\n};\nconst se_Grants = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_Grant(entry, context);\n return n.n(_G);\n });\n};\nconst se_IndexDocument = (input, context) => {\n const bn = new __XmlNode(_ID);\n bn.cc(input, _Su);\n return bn;\n};\nconst se_InputSerialization = (input, context) => {\n const bn = new __XmlNode(_IS);\n if (input[_CSV] != null) {\n bn.c(se_CSVInput(input[_CSV], context).n(_CSV));\n }\n bn.cc(input, _CTom);\n if (input[_JSON] != null) {\n bn.c(se_JSONInput(input[_JSON], context).n(_JSON));\n }\n if (input[_Parq] != null) {\n bn.c(se_ParquetInput(input[_Parq], context).n(_Parq));\n }\n return bn;\n};\nconst se_IntelligentTieringAndOperator = (input, context) => {\n const bn = new __XmlNode(_ITAO);\n bn.cc(input, _P);\n bn.l(input, \"Tags\", \"Tag\", () => se_TagSet(input[_Tag], context));\n return bn;\n};\nconst se_IntelligentTieringConfiguration = (input, context) => {\n const bn = new __XmlNode(_ITC);\n if (input[_I] != null) {\n bn.c(__XmlNode.of(_ITI, input[_I]).n(_I));\n }\n if (input[_F] != null) {\n bn.c(se_IntelligentTieringFilter(input[_F], context).n(_F));\n }\n if (input[_S] != null) {\n bn.c(__XmlNode.of(_ITS, input[_S]).n(_S));\n }\n bn.l(input, \"Tierings\", \"Tiering\", () => se_TieringList(input[_Tie], context));\n return bn;\n};\nconst se_IntelligentTieringFilter = (input, context) => {\n const bn = new __XmlNode(_ITF);\n bn.cc(input, _P);\n if (input[_Ta] != null) {\n bn.c(se_Tag(input[_Ta], context).n(_Ta));\n }\n if (input[_A] != null) {\n bn.c(se_IntelligentTieringAndOperator(input[_A], context).n(_A));\n }\n return bn;\n};\nconst se_InventoryConfiguration = (input, context) => {\n const bn = new __XmlNode(_IC);\n if (input[_Des] != null) {\n bn.c(se_InventoryDestination(input[_Des], context).n(_Des));\n }\n if (input[_IE] != null) {\n bn.c(__XmlNode.of(_IE, String(input[_IE])).n(_IE));\n }\n if (input[_F] != null) {\n bn.c(se_InventoryFilter(input[_F], context).n(_F));\n }\n if (input[_I] != null) {\n bn.c(__XmlNode.of(_II, input[_I]).n(_I));\n }\n if (input[_IOV] != null) {\n bn.c(__XmlNode.of(_IIOV, input[_IOV]).n(_IOV));\n }\n bn.lc(input, \"OptionalFields\", \"OptionalFields\", () => se_InventoryOptionalFields(input[_OF], context));\n if (input[_Sc] != null) {\n bn.c(se_InventorySchedule(input[_Sc], context).n(_Sc));\n }\n return bn;\n};\nconst se_InventoryDestination = (input, context) => {\n const bn = new __XmlNode(_IDn);\n if (input[_SBD] != null) {\n bn.c(se_InventoryS3BucketDestination(input[_SBD], context).n(_SBD));\n }\n return bn;\n};\nconst se_InventoryEncryption = (input, context) => {\n const bn = new __XmlNode(_IEn);\n if (input[_SSES] != null) {\n bn.c(se_SSES3(input[_SSES], context).n(_SS));\n }\n if (input[_SSEKMS] != null) {\n bn.c(se_SSEKMS(input[_SSEKMS], context).n(_SK));\n }\n return bn;\n};\nconst se_InventoryFilter = (input, context) => {\n const bn = new __XmlNode(_IF);\n bn.cc(input, _P);\n return bn;\n};\nconst se_InventoryOptionalFields = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = __XmlNode.of(_IOF, entry);\n return n.n(_Fi);\n });\n};\nconst se_InventoryS3BucketDestination = (input, context) => {\n const bn = new __XmlNode(_ISBD);\n bn.cc(input, _AIc);\n if (input[_B] != null) {\n bn.c(__XmlNode.of(_BN, input[_B]).n(_B));\n }\n if (input[_Fo] != null) {\n bn.c(__XmlNode.of(_IFn, input[_Fo]).n(_Fo));\n }\n bn.cc(input, _P);\n if (input[_En] != null) {\n bn.c(se_InventoryEncryption(input[_En], context).n(_En));\n }\n return bn;\n};\nconst se_InventorySchedule = (input, context) => {\n const bn = new __XmlNode(_ISn);\n if (input[_Fr] != null) {\n bn.c(__XmlNode.of(_IFnv, input[_Fr]).n(_Fr));\n }\n return bn;\n};\nconst se_JSONInput = (input, context) => {\n const bn = new __XmlNode(_JSONI);\n if (input[_Ty] != null) {\n bn.c(__XmlNode.of(_JSONT, input[_Ty]).n(_Ty));\n }\n return bn;\n};\nconst se_JSONOutput = (input, context) => {\n const bn = new __XmlNode(_JSONO);\n bn.cc(input, _RD);\n return bn;\n};\nconst se_LambdaFunctionConfiguration = (input, context) => {\n const bn = new __XmlNode(_LFCa);\n if (input[_I] != null) {\n bn.c(__XmlNode.of(_NI, input[_I]).n(_I));\n }\n if (input[_LFA] != null) {\n bn.c(__XmlNode.of(_LFA, input[_LFA]).n(_CF));\n }\n bn.l(input, \"Events\", \"Event\", () => se_EventList(input[_Eve], context));\n if (input[_F] != null) {\n bn.c(se_NotificationConfigurationFilter(input[_F], context).n(_F));\n }\n return bn;\n};\nconst se_LambdaFunctionConfigurationList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_LambdaFunctionConfiguration(entry, context);\n return n.n(_me);\n });\n};\nconst se_LifecycleExpiration = (input, context) => {\n const bn = new __XmlNode(_LEi);\n if (input[_Dat] != null) {\n bn.c(__XmlNode.of(_Dat, __serializeDateTime(input[_Dat]).toString()).n(_Dat));\n }\n if (input[_Da] != null) {\n bn.c(__XmlNode.of(_Da, String(input[_Da])).n(_Da));\n }\n if (input[_EODM] != null) {\n bn.c(__XmlNode.of(_EODM, String(input[_EODM])).n(_EODM));\n }\n return bn;\n};\nconst se_LifecycleRule = (input, context) => {\n const bn = new __XmlNode(_LR);\n if (input[_Exp] != null) {\n bn.c(se_LifecycleExpiration(input[_Exp], context).n(_Exp));\n }\n bn.cc(input, _ID_);\n bn.cc(input, _P);\n if (input[_F] != null) {\n bn.c(se_LifecycleRuleFilter(input[_F], context).n(_F));\n }\n if (input[_S] != null) {\n bn.c(__XmlNode.of(_ESx, input[_S]).n(_S));\n }\n bn.l(input, \"Transitions\", \"Transition\", () => se_TransitionList(input[_Tr], context));\n bn.l(input, \"NoncurrentVersionTransitions\", \"NoncurrentVersionTransition\", () => se_NoncurrentVersionTransitionList(input[_NVT], context));\n if (input[_NVE] != null) {\n bn.c(se_NoncurrentVersionExpiration(input[_NVE], context).n(_NVE));\n }\n if (input[_AIMU] != null) {\n bn.c(se_AbortIncompleteMultipartUpload(input[_AIMU], context).n(_AIMU));\n }\n return bn;\n};\nconst se_LifecycleRuleAndOperator = (input, context) => {\n const bn = new __XmlNode(_LRAO);\n bn.cc(input, _P);\n bn.l(input, \"Tags\", \"Tag\", () => se_TagSet(input[_Tag], context));\n if (input[_OSGT] != null) {\n bn.c(__XmlNode.of(_OSGTB, String(input[_OSGT])).n(_OSGT));\n }\n if (input[_OSLT] != null) {\n bn.c(__XmlNode.of(_OSLTB, String(input[_OSLT])).n(_OSLT));\n }\n return bn;\n};\nconst se_LifecycleRuleFilter = (input, context) => {\n const bn = new __XmlNode(_LRF);\n LifecycleRuleFilter.visit(input, {\n Prefix: (value) => {\n if (input[_P] != null) {\n bn.c(__XmlNode.of(_P, value).n(_P));\n }\n },\n Tag: (value) => {\n if (input[_Ta] != null) {\n bn.c(se_Tag(value, context).n(_Ta));\n }\n },\n ObjectSizeGreaterThan: (value) => {\n if (input[_OSGT] != null) {\n bn.c(__XmlNode.of(_OSGTB, String(value)).n(_OSGT));\n }\n },\n ObjectSizeLessThan: (value) => {\n if (input[_OSLT] != null) {\n bn.c(__XmlNode.of(_OSLTB, String(value)).n(_OSLT));\n }\n },\n And: (value) => {\n if (input[_A] != null) {\n bn.c(se_LifecycleRuleAndOperator(value, context).n(_A));\n }\n },\n _: (name, value) => {\n if (!(value instanceof __XmlNode || value instanceof __XmlText)) {\n throw new Error(\"Unable to serialize unknown union members in XML.\");\n }\n bn.c(new __XmlNode(name).c(value));\n },\n });\n return bn;\n};\nconst se_LifecycleRules = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_LifecycleRule(entry, context);\n return n.n(_me);\n });\n};\nconst se_LocationInfo = (input, context) => {\n const bn = new __XmlNode(_LI);\n if (input[_Ty] != null) {\n bn.c(__XmlNode.of(_LT, input[_Ty]).n(_Ty));\n }\n if (input[_N] != null) {\n bn.c(__XmlNode.of(_LNAS, input[_N]).n(_N));\n }\n return bn;\n};\nconst se_LoggingEnabled = (input, context) => {\n const bn = new __XmlNode(_LE);\n bn.cc(input, _TB);\n bn.lc(input, \"TargetGrants\", \"TargetGrants\", () => se_TargetGrants(input[_TG], context));\n bn.cc(input, _TP);\n if (input[_TOKF] != null) {\n bn.c(se_TargetObjectKeyFormat(input[_TOKF], context).n(_TOKF));\n }\n return bn;\n};\nconst se_MetadataEntry = (input, context) => {\n const bn = new __XmlNode(_ME);\n if (input[_N] != null) {\n bn.c(__XmlNode.of(_MKe, input[_N]).n(_N));\n }\n if (input[_Va] != null) {\n bn.c(__XmlNode.of(_MV, input[_Va]).n(_Va));\n }\n return bn;\n};\nconst se_Metrics = (input, context) => {\n const bn = new __XmlNode(_Me);\n if (input[_S] != null) {\n bn.c(__XmlNode.of(_MS, input[_S]).n(_S));\n }\n if (input[_ETv] != null) {\n bn.c(se_ReplicationTimeValue(input[_ETv], context).n(_ETv));\n }\n return bn;\n};\nconst se_MetricsAndOperator = (input, context) => {\n const bn = new __XmlNode(_MAO);\n bn.cc(input, _P);\n bn.l(input, \"Tags\", \"Tag\", () => se_TagSet(input[_Tag], context));\n bn.cc(input, _APAc);\n return bn;\n};\nconst se_MetricsConfiguration = (input, context) => {\n const bn = new __XmlNode(_MC);\n if (input[_I] != null) {\n bn.c(__XmlNode.of(_MI, input[_I]).n(_I));\n }\n if (input[_F] != null) {\n bn.c(se_MetricsFilter(input[_F], context).n(_F));\n }\n return bn;\n};\nconst se_MetricsFilter = (input, context) => {\n const bn = new __XmlNode(_MF);\n MetricsFilter.visit(input, {\n Prefix: (value) => {\n if (input[_P] != null) {\n bn.c(__XmlNode.of(_P, value).n(_P));\n }\n },\n Tag: (value) => {\n if (input[_Ta] != null) {\n bn.c(se_Tag(value, context).n(_Ta));\n }\n },\n AccessPointArn: (value) => {\n if (input[_APAc] != null) {\n bn.c(__XmlNode.of(_APAc, value).n(_APAc));\n }\n },\n And: (value) => {\n if (input[_A] != null) {\n bn.c(se_MetricsAndOperator(value, context).n(_A));\n }\n },\n _: (name, value) => {\n if (!(value instanceof __XmlNode || value instanceof __XmlText)) {\n throw new Error(\"Unable to serialize unknown union members in XML.\");\n }\n bn.c(new __XmlNode(name).c(value));\n },\n });\n return bn;\n};\nconst se_NoncurrentVersionExpiration = (input, context) => {\n const bn = new __XmlNode(_NVE);\n if (input[_ND] != null) {\n bn.c(__XmlNode.of(_Da, String(input[_ND])).n(_ND));\n }\n if (input[_NNV] != null) {\n bn.c(__XmlNode.of(_VC, String(input[_NNV])).n(_NNV));\n }\n return bn;\n};\nconst se_NoncurrentVersionTransition = (input, context) => {\n const bn = new __XmlNode(_NVTo);\n if (input[_ND] != null) {\n bn.c(__XmlNode.of(_Da, String(input[_ND])).n(_ND));\n }\n if (input[_SC] != null) {\n bn.c(__XmlNode.of(_TSC, input[_SC]).n(_SC));\n }\n if (input[_NNV] != null) {\n bn.c(__XmlNode.of(_VC, String(input[_NNV])).n(_NNV));\n }\n return bn;\n};\nconst se_NoncurrentVersionTransitionList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_NoncurrentVersionTransition(entry, context);\n return n.n(_me);\n });\n};\nconst se_NotificationConfiguration = (input, context) => {\n const bn = new __XmlNode(_NC);\n bn.l(input, \"TopicConfigurations\", \"TopicConfiguration\", () => se_TopicConfigurationList(input[_TCop], context));\n bn.l(input, \"QueueConfigurations\", \"QueueConfiguration\", () => se_QueueConfigurationList(input[_QCu], context));\n bn.l(input, \"LambdaFunctionConfigurations\", \"CloudFunctionConfiguration\", () => se_LambdaFunctionConfigurationList(input[_LFC], context));\n if (input[_EBC] != null) {\n bn.c(se_EventBridgeConfiguration(input[_EBC], context).n(_EBC));\n }\n return bn;\n};\nconst se_NotificationConfigurationFilter = (input, context) => {\n const bn = new __XmlNode(_NCF);\n if (input[_K] != null) {\n bn.c(se_S3KeyFilter(input[_K], context).n(_SKe));\n }\n return bn;\n};\nconst se_ObjectIdentifier = (input, context) => {\n const bn = new __XmlNode(_OI);\n if (input[_K] != null) {\n bn.c(__XmlNode.of(_OK, input[_K]).n(_K));\n }\n if (input[_VI] != null) {\n bn.c(__XmlNode.of(_OVI, input[_VI]).n(_VI));\n }\n return bn;\n};\nconst se_ObjectIdentifierList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_ObjectIdentifier(entry, context);\n return n.n(_me);\n });\n};\nconst se_ObjectLockConfiguration = (input, context) => {\n const bn = new __XmlNode(_OLC);\n bn.cc(input, _OLE);\n if (input[_Ru] != null) {\n bn.c(se_ObjectLockRule(input[_Ru], context).n(_Ru));\n }\n return bn;\n};\nconst se_ObjectLockLegalHold = (input, context) => {\n const bn = new __XmlNode(_OLLH);\n if (input[_S] != null) {\n bn.c(__XmlNode.of(_OLLHS, input[_S]).n(_S));\n }\n return bn;\n};\nconst se_ObjectLockRetention = (input, context) => {\n const bn = new __XmlNode(_OLR);\n if (input[_Mo] != null) {\n bn.c(__XmlNode.of(_OLRM, input[_Mo]).n(_Mo));\n }\n if (input[_RUD] != null) {\n bn.c(__XmlNode.of(_Dat, __serializeDateTime(input[_RUD]).toString()).n(_RUD));\n }\n return bn;\n};\nconst se_ObjectLockRule = (input, context) => {\n const bn = new __XmlNode(_OLRb);\n if (input[_DRe] != null) {\n bn.c(se_DefaultRetention(input[_DRe], context).n(_DRe));\n }\n return bn;\n};\nconst se_OutputLocation = (input, context) => {\n const bn = new __XmlNode(_OL);\n if (input[_S_] != null) {\n bn.c(se_S3Location(input[_S_], context).n(_S_));\n }\n return bn;\n};\nconst se_OutputSerialization = (input, context) => {\n const bn = new __XmlNode(_OS);\n if (input[_CSV] != null) {\n bn.c(se_CSVOutput(input[_CSV], context).n(_CSV));\n }\n if (input[_JSON] != null) {\n bn.c(se_JSONOutput(input[_JSON], context).n(_JSON));\n }\n return bn;\n};\nconst se_Owner = (input, context) => {\n const bn = new __XmlNode(_O);\n bn.cc(input, _DN);\n bn.cc(input, _ID_);\n return bn;\n};\nconst se_OwnershipControls = (input, context) => {\n const bn = new __XmlNode(_OC);\n bn.l(input, \"Rules\", \"Rule\", () => se_OwnershipControlsRules(input[_Rul], context));\n return bn;\n};\nconst se_OwnershipControlsRule = (input, context) => {\n const bn = new __XmlNode(_OCR);\n bn.cc(input, _OO);\n return bn;\n};\nconst se_OwnershipControlsRules = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_OwnershipControlsRule(entry, context);\n return n.n(_me);\n });\n};\nconst se_ParquetInput = (input, context) => {\n const bn = new __XmlNode(_PI);\n return bn;\n};\nconst se_PartitionedPrefix = (input, context) => {\n const bn = new __XmlNode(_PP);\n bn.cc(input, _PDS);\n return bn;\n};\nconst se_PublicAccessBlockConfiguration = (input, context) => {\n const bn = new __XmlNode(_PABC);\n if (input[_BPA] != null) {\n bn.c(__XmlNode.of(_Se, String(input[_BPA])).n(_BPA));\n }\n if (input[_IPA] != null) {\n bn.c(__XmlNode.of(_Se, String(input[_IPA])).n(_IPA));\n }\n if (input[_BPP] != null) {\n bn.c(__XmlNode.of(_Se, String(input[_BPP])).n(_BPP));\n }\n if (input[_RPB] != null) {\n bn.c(__XmlNode.of(_Se, String(input[_RPB])).n(_RPB));\n }\n return bn;\n};\nconst se_QueueConfiguration = (input, context) => {\n const bn = new __XmlNode(_QC);\n if (input[_I] != null) {\n bn.c(__XmlNode.of(_NI, input[_I]).n(_I));\n }\n if (input[_QA] != null) {\n bn.c(__XmlNode.of(_QA, input[_QA]).n(_Qu));\n }\n bn.l(input, \"Events\", \"Event\", () => se_EventList(input[_Eve], context));\n if (input[_F] != null) {\n bn.c(se_NotificationConfigurationFilter(input[_F], context).n(_F));\n }\n return bn;\n};\nconst se_QueueConfigurationList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_QueueConfiguration(entry, context);\n return n.n(_me);\n });\n};\nconst se_Redirect = (input, context) => {\n const bn = new __XmlNode(_Red);\n bn.cc(input, _HN);\n bn.cc(input, _HRC);\n bn.cc(input, _Pr);\n bn.cc(input, _RKPW);\n bn.cc(input, _RKW);\n return bn;\n};\nconst se_RedirectAllRequestsTo = (input, context) => {\n const bn = new __XmlNode(_RART);\n bn.cc(input, _HN);\n bn.cc(input, _Pr);\n return bn;\n};\nconst se_ReplicaModifications = (input, context) => {\n const bn = new __XmlNode(_RM);\n if (input[_S] != null) {\n bn.c(__XmlNode.of(_RMS, input[_S]).n(_S));\n }\n return bn;\n};\nconst se_ReplicationConfiguration = (input, context) => {\n const bn = new __XmlNode(_RCe);\n bn.cc(input, _Ro);\n bn.l(input, \"Rules\", \"Rule\", () => se_ReplicationRules(input[_Rul], context));\n return bn;\n};\nconst se_ReplicationRule = (input, context) => {\n const bn = new __XmlNode(_RRe);\n bn.cc(input, _ID_);\n if (input[_Pri] != null) {\n bn.c(__XmlNode.of(_Pri, String(input[_Pri])).n(_Pri));\n }\n bn.cc(input, _P);\n if (input[_F] != null) {\n bn.c(se_ReplicationRuleFilter(input[_F], context).n(_F));\n }\n if (input[_S] != null) {\n bn.c(__XmlNode.of(_RRS, input[_S]).n(_S));\n }\n if (input[_SSC] != null) {\n bn.c(se_SourceSelectionCriteria(input[_SSC], context).n(_SSC));\n }\n if (input[_EOR] != null) {\n bn.c(se_ExistingObjectReplication(input[_EOR], context).n(_EOR));\n }\n if (input[_Des] != null) {\n bn.c(se_Destination(input[_Des], context).n(_Des));\n }\n if (input[_DMR] != null) {\n bn.c(se_DeleteMarkerReplication(input[_DMR], context).n(_DMR));\n }\n return bn;\n};\nconst se_ReplicationRuleAndOperator = (input, context) => {\n const bn = new __XmlNode(_RRAO);\n bn.cc(input, _P);\n bn.l(input, \"Tags\", \"Tag\", () => se_TagSet(input[_Tag], context));\n return bn;\n};\nconst se_ReplicationRuleFilter = (input, context) => {\n const bn = new __XmlNode(_RRF);\n ReplicationRuleFilter.visit(input, {\n Prefix: (value) => {\n if (input[_P] != null) {\n bn.c(__XmlNode.of(_P, value).n(_P));\n }\n },\n Tag: (value) => {\n if (input[_Ta] != null) {\n bn.c(se_Tag(value, context).n(_Ta));\n }\n },\n And: (value) => {\n if (input[_A] != null) {\n bn.c(se_ReplicationRuleAndOperator(value, context).n(_A));\n }\n },\n _: (name, value) => {\n if (!(value instanceof __XmlNode || value instanceof __XmlText)) {\n throw new Error(\"Unable to serialize unknown union members in XML.\");\n }\n bn.c(new __XmlNode(name).c(value));\n },\n });\n return bn;\n};\nconst se_ReplicationRules = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_ReplicationRule(entry, context);\n return n.n(_me);\n });\n};\nconst se_ReplicationTime = (input, context) => {\n const bn = new __XmlNode(_RTe);\n if (input[_S] != null) {\n bn.c(__XmlNode.of(_RTS, input[_S]).n(_S));\n }\n if (input[_Tim] != null) {\n bn.c(se_ReplicationTimeValue(input[_Tim], context).n(_Tim));\n }\n return bn;\n};\nconst se_ReplicationTimeValue = (input, context) => {\n const bn = new __XmlNode(_RTV);\n if (input[_Mi] != null) {\n bn.c(__XmlNode.of(_Mi, String(input[_Mi])).n(_Mi));\n }\n return bn;\n};\nconst se_RequestPaymentConfiguration = (input, context) => {\n const bn = new __XmlNode(_RPC);\n bn.cc(input, _Pa);\n return bn;\n};\nconst se_RequestProgress = (input, context) => {\n const bn = new __XmlNode(_RPe);\n if (input[_Ena] != null) {\n bn.c(__XmlNode.of(_ERP, String(input[_Ena])).n(_Ena));\n }\n return bn;\n};\nconst se_RestoreRequest = (input, context) => {\n const bn = new __XmlNode(_RRes);\n if (input[_Da] != null) {\n bn.c(__XmlNode.of(_Da, String(input[_Da])).n(_Da));\n }\n if (input[_GJP] != null) {\n bn.c(se_GlacierJobParameters(input[_GJP], context).n(_GJP));\n }\n if (input[_Ty] != null) {\n bn.c(__XmlNode.of(_RRT, input[_Ty]).n(_Ty));\n }\n bn.cc(input, _Ti);\n bn.cc(input, _Desc);\n if (input[_SP] != null) {\n bn.c(se_SelectParameters(input[_SP], context).n(_SP));\n }\n if (input[_OL] != null) {\n bn.c(se_OutputLocation(input[_OL], context).n(_OL));\n }\n return bn;\n};\nconst se_RoutingRule = (input, context) => {\n const bn = new __XmlNode(_RRou);\n if (input[_Con] != null) {\n bn.c(se_Condition(input[_Con], context).n(_Con));\n }\n if (input[_Red] != null) {\n bn.c(se_Redirect(input[_Red], context).n(_Red));\n }\n return bn;\n};\nconst se_RoutingRules = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_RoutingRule(entry, context);\n return n.n(_RRou);\n });\n};\nconst se_S3KeyFilter = (input, context) => {\n const bn = new __XmlNode(_SKF);\n bn.l(input, \"FilterRules\", \"FilterRule\", () => se_FilterRuleList(input[_FRi], context));\n return bn;\n};\nconst se_S3Location = (input, context) => {\n const bn = new __XmlNode(_SL);\n bn.cc(input, _BN);\n if (input[_P] != null) {\n bn.c(__XmlNode.of(_LP, input[_P]).n(_P));\n }\n if (input[_En] != null) {\n bn.c(se_Encryption(input[_En], context).n(_En));\n }\n if (input[_CACL] != null) {\n bn.c(__XmlNode.of(_OCACL, input[_CACL]).n(_CACL));\n }\n bn.lc(input, \"AccessControlList\", \"AccessControlList\", () => se_Grants(input[_ACLc], context));\n if (input[_T] != null) {\n bn.c(se_Tagging(input[_T], context).n(_T));\n }\n bn.lc(input, \"UserMetadata\", \"UserMetadata\", () => se_UserMetadata(input[_UM], context));\n bn.cc(input, _SC);\n return bn;\n};\nconst se_ScanRange = (input, context) => {\n const bn = new __XmlNode(_SR);\n if (input[_St] != null) {\n bn.c(__XmlNode.of(_St, String(input[_St])).n(_St));\n }\n if (input[_End] != null) {\n bn.c(__XmlNode.of(_End, String(input[_End])).n(_End));\n }\n return bn;\n};\nconst se_SelectParameters = (input, context) => {\n const bn = new __XmlNode(_SP);\n if (input[_IS] != null) {\n bn.c(se_InputSerialization(input[_IS], context).n(_IS));\n }\n bn.cc(input, _ETx);\n bn.cc(input, _Ex);\n if (input[_OS] != null) {\n bn.c(se_OutputSerialization(input[_OS], context).n(_OS));\n }\n return bn;\n};\nconst se_ServerSideEncryptionByDefault = (input, context) => {\n const bn = new __XmlNode(_SSEBD);\n if (input[_SSEA] != null) {\n bn.c(__XmlNode.of(_SSE, input[_SSEA]).n(_SSEA));\n }\n if (input[_KMSMKID] != null) {\n bn.c(__XmlNode.of(_SSEKMSKI, input[_KMSMKID]).n(_KMSMKID));\n }\n return bn;\n};\nconst se_ServerSideEncryptionConfiguration = (input, context) => {\n const bn = new __XmlNode(_SSEC);\n bn.l(input, \"Rules\", \"Rule\", () => se_ServerSideEncryptionRules(input[_Rul], context));\n return bn;\n};\nconst se_ServerSideEncryptionRule = (input, context) => {\n const bn = new __XmlNode(_SSER);\n if (input[_ASSEBD] != null) {\n bn.c(se_ServerSideEncryptionByDefault(input[_ASSEBD], context).n(_ASSEBD));\n }\n if (input[_BKE] != null) {\n bn.c(__XmlNode.of(_BKE, String(input[_BKE])).n(_BKE));\n }\n return bn;\n};\nconst se_ServerSideEncryptionRules = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_ServerSideEncryptionRule(entry, context);\n return n.n(_me);\n });\n};\nconst se_SimplePrefix = (input, context) => {\n const bn = new __XmlNode(_SPi);\n return bn;\n};\nconst se_SourceSelectionCriteria = (input, context) => {\n const bn = new __XmlNode(_SSC);\n if (input[_SKEO] != null) {\n bn.c(se_SseKmsEncryptedObjects(input[_SKEO], context).n(_SKEO));\n }\n if (input[_RM] != null) {\n bn.c(se_ReplicaModifications(input[_RM], context).n(_RM));\n }\n return bn;\n};\nconst se_SSEKMS = (input, context) => {\n const bn = new __XmlNode(_SK);\n if (input[_KI] != null) {\n bn.c(__XmlNode.of(_SSEKMSKI, input[_KI]).n(_KI));\n }\n return bn;\n};\nconst se_SseKmsEncryptedObjects = (input, context) => {\n const bn = new __XmlNode(_SKEO);\n if (input[_S] != null) {\n bn.c(__XmlNode.of(_SKEOS, input[_S]).n(_S));\n }\n return bn;\n};\nconst se_SSES3 = (input, context) => {\n const bn = new __XmlNode(_SS);\n return bn;\n};\nconst se_StorageClassAnalysis = (input, context) => {\n const bn = new __XmlNode(_SCA);\n if (input[_DE] != null) {\n bn.c(se_StorageClassAnalysisDataExport(input[_DE], context).n(_DE));\n }\n return bn;\n};\nconst se_StorageClassAnalysisDataExport = (input, context) => {\n const bn = new __XmlNode(_SCADE);\n if (input[_OSV] != null) {\n bn.c(__XmlNode.of(_SCASV, input[_OSV]).n(_OSV));\n }\n if (input[_Des] != null) {\n bn.c(se_AnalyticsExportDestination(input[_Des], context).n(_Des));\n }\n return bn;\n};\nconst se_Tag = (input, context) => {\n const bn = new __XmlNode(_Ta);\n if (input[_K] != null) {\n bn.c(__XmlNode.of(_OK, input[_K]).n(_K));\n }\n bn.cc(input, _Va);\n return bn;\n};\nconst se_Tagging = (input, context) => {\n const bn = new __XmlNode(_T);\n bn.lc(input, \"TagSet\", \"TagSet\", () => se_TagSet(input[_TS], context));\n return bn;\n};\nconst se_TagSet = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_Tag(entry, context);\n return n.n(_Ta);\n });\n};\nconst se_TargetGrant = (input, context) => {\n const bn = new __XmlNode(_TGa);\n if (input[_Gra] != null) {\n const n = se_Grantee(input[_Gra], context).n(_Gra);\n n.a(\"xmlns:xsi\", \"http://www.w3.org/2001/XMLSchema-instance\");\n bn.c(n);\n }\n if (input[_Pe] != null) {\n bn.c(__XmlNode.of(_BLP, input[_Pe]).n(_Pe));\n }\n return bn;\n};\nconst se_TargetGrants = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_TargetGrant(entry, context);\n return n.n(_G);\n });\n};\nconst se_TargetObjectKeyFormat = (input, context) => {\n const bn = new __XmlNode(_TOKF);\n if (input[_SPi] != null) {\n bn.c(se_SimplePrefix(input[_SPi], context).n(_SPi));\n }\n if (input[_PP] != null) {\n bn.c(se_PartitionedPrefix(input[_PP], context).n(_PP));\n }\n return bn;\n};\nconst se_Tiering = (input, context) => {\n const bn = new __XmlNode(_Tier);\n if (input[_Da] != null) {\n bn.c(__XmlNode.of(_ITD, String(input[_Da])).n(_Da));\n }\n if (input[_AT] != null) {\n bn.c(__XmlNode.of(_ITAT, input[_AT]).n(_AT));\n }\n return bn;\n};\nconst se_TieringList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_Tiering(entry, context);\n return n.n(_me);\n });\n};\nconst se_TopicConfiguration = (input, context) => {\n const bn = new __XmlNode(_TCo);\n if (input[_I] != null) {\n bn.c(__XmlNode.of(_NI, input[_I]).n(_I));\n }\n if (input[_TA] != null) {\n bn.c(__XmlNode.of(_TA, input[_TA]).n(_Top));\n }\n bn.l(input, \"Events\", \"Event\", () => se_EventList(input[_Eve], context));\n if (input[_F] != null) {\n bn.c(se_NotificationConfigurationFilter(input[_F], context).n(_F));\n }\n return bn;\n};\nconst se_TopicConfigurationList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_TopicConfiguration(entry, context);\n return n.n(_me);\n });\n};\nconst se_Transition = (input, context) => {\n const bn = new __XmlNode(_Tra);\n if (input[_Dat] != null) {\n bn.c(__XmlNode.of(_Dat, __serializeDateTime(input[_Dat]).toString()).n(_Dat));\n }\n if (input[_Da] != null) {\n bn.c(__XmlNode.of(_Da, String(input[_Da])).n(_Da));\n }\n if (input[_SC] != null) {\n bn.c(__XmlNode.of(_TSC, input[_SC]).n(_SC));\n }\n return bn;\n};\nconst se_TransitionList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_Transition(entry, context);\n return n.n(_me);\n });\n};\nconst se_UserMetadata = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n const n = se_MetadataEntry(entry, context);\n return n.n(_ME);\n });\n};\nconst se_VersioningConfiguration = (input, context) => {\n const bn = new __XmlNode(_VCe);\n if (input[_MFAD] != null) {\n bn.c(__XmlNode.of(_MFAD, input[_MFAD]).n(_MDf));\n }\n if (input[_S] != null) {\n bn.c(__XmlNode.of(_BVS, input[_S]).n(_S));\n }\n return bn;\n};\nconst se_WebsiteConfiguration = (input, context) => {\n const bn = new __XmlNode(_WC);\n if (input[_ED] != null) {\n bn.c(se_ErrorDocument(input[_ED], context).n(_ED));\n }\n if (input[_ID] != null) {\n bn.c(se_IndexDocument(input[_ID], context).n(_ID));\n }\n if (input[_RART] != null) {\n bn.c(se_RedirectAllRequestsTo(input[_RART], context).n(_RART));\n }\n bn.lc(input, \"RoutingRules\", \"RoutingRules\", () => se_RoutingRules(input[_RRo], context));\n return bn;\n};\nconst de_AbortIncompleteMultipartUpload = (output, context) => {\n const contents = {};\n if (output[_DAI] != null) {\n contents[_DAI] = __strictParseInt32(output[_DAI]);\n }\n return contents;\n};\nconst de_AccessControlTranslation = (output, context) => {\n const contents = {};\n if (output[_O] != null) {\n contents[_O] = __expectString(output[_O]);\n }\n return contents;\n};\nconst de_AllowedHeaders = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return __expectString(entry);\n });\n};\nconst de_AllowedMethods = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return __expectString(entry);\n });\n};\nconst de_AllowedOrigins = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return __expectString(entry);\n });\n};\nconst de_AnalyticsAndOperator = (output, context) => {\n const contents = {};\n if (output[_P] != null) {\n contents[_P] = __expectString(output[_P]);\n }\n if (output.Tag === \"\") {\n contents[_Tag] = [];\n }\n else if (output[_Ta] != null) {\n contents[_Tag] = de_TagSet(__getArrayIfSingleItem(output[_Ta]), context);\n }\n return contents;\n};\nconst de_AnalyticsConfiguration = (output, context) => {\n const contents = {};\n if (output[_I] != null) {\n contents[_I] = __expectString(output[_I]);\n }\n if (output.Filter === \"\") {\n }\n else if (output[_F] != null) {\n contents[_F] = de_AnalyticsFilter(__expectUnion(output[_F]), context);\n }\n if (output[_SCA] != null) {\n contents[_SCA] = de_StorageClassAnalysis(output[_SCA], context);\n }\n return contents;\n};\nconst de_AnalyticsConfigurationList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_AnalyticsConfiguration(entry, context);\n });\n};\nconst de_AnalyticsExportDestination = (output, context) => {\n const contents = {};\n if (output[_SBD] != null) {\n contents[_SBD] = de_AnalyticsS3BucketDestination(output[_SBD], context);\n }\n return contents;\n};\nconst de_AnalyticsFilter = (output, context) => {\n if (output[_P] != null) {\n return {\n Prefix: __expectString(output[_P]),\n };\n }\n if (output[_Ta] != null) {\n return {\n Tag: de_Tag(output[_Ta], context),\n };\n }\n if (output[_A] != null) {\n return {\n And: de_AnalyticsAndOperator(output[_A], context),\n };\n }\n return { $unknown: Object.entries(output)[0] };\n};\nconst de_AnalyticsS3BucketDestination = (output, context) => {\n const contents = {};\n if (output[_Fo] != null) {\n contents[_Fo] = __expectString(output[_Fo]);\n }\n if (output[_BAI] != null) {\n contents[_BAI] = __expectString(output[_BAI]);\n }\n if (output[_B] != null) {\n contents[_B] = __expectString(output[_B]);\n }\n if (output[_P] != null) {\n contents[_P] = __expectString(output[_P]);\n }\n return contents;\n};\nconst de_Bucket = (output, context) => {\n const contents = {};\n if (output[_N] != null) {\n contents[_N] = __expectString(output[_N]);\n }\n if (output[_CDr] != null) {\n contents[_CDr] = __expectNonNull(__parseRfc3339DateTimeWithOffset(output[_CDr]));\n }\n return contents;\n};\nconst de_Buckets = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_Bucket(entry, context);\n });\n};\nconst de_Checksum = (output, context) => {\n const contents = {};\n if (output[_CCRC] != null) {\n contents[_CCRC] = __expectString(output[_CCRC]);\n }\n if (output[_CCRCC] != null) {\n contents[_CCRCC] = __expectString(output[_CCRCC]);\n }\n if (output[_CSHA] != null) {\n contents[_CSHA] = __expectString(output[_CSHA]);\n }\n if (output[_CSHAh] != null) {\n contents[_CSHAh] = __expectString(output[_CSHAh]);\n }\n return contents;\n};\nconst de_ChecksumAlgorithmList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return __expectString(entry);\n });\n};\nconst de_CommonPrefix = (output, context) => {\n const contents = {};\n if (output[_P] != null) {\n contents[_P] = __expectString(output[_P]);\n }\n return contents;\n};\nconst de_CommonPrefixList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_CommonPrefix(entry, context);\n });\n};\nconst de_Condition = (output, context) => {\n const contents = {};\n if (output[_HECRE] != null) {\n contents[_HECRE] = __expectString(output[_HECRE]);\n }\n if (output[_KPE] != null) {\n contents[_KPE] = __expectString(output[_KPE]);\n }\n return contents;\n};\nconst de_ContinuationEvent = (output, context) => {\n const contents = {};\n return contents;\n};\nconst de_CopyObjectResult = (output, context) => {\n const contents = {};\n if (output[_ETa] != null) {\n contents[_ETa] = __expectString(output[_ETa]);\n }\n if (output[_LM] != null) {\n contents[_LM] = __expectNonNull(__parseRfc3339DateTimeWithOffset(output[_LM]));\n }\n if (output[_CCRC] != null) {\n contents[_CCRC] = __expectString(output[_CCRC]);\n }\n if (output[_CCRCC] != null) {\n contents[_CCRCC] = __expectString(output[_CCRCC]);\n }\n if (output[_CSHA] != null) {\n contents[_CSHA] = __expectString(output[_CSHA]);\n }\n if (output[_CSHAh] != null) {\n contents[_CSHAh] = __expectString(output[_CSHAh]);\n }\n return contents;\n};\nconst de_CopyPartResult = (output, context) => {\n const contents = {};\n if (output[_ETa] != null) {\n contents[_ETa] = __expectString(output[_ETa]);\n }\n if (output[_LM] != null) {\n contents[_LM] = __expectNonNull(__parseRfc3339DateTimeWithOffset(output[_LM]));\n }\n if (output[_CCRC] != null) {\n contents[_CCRC] = __expectString(output[_CCRC]);\n }\n if (output[_CCRCC] != null) {\n contents[_CCRCC] = __expectString(output[_CCRCC]);\n }\n if (output[_CSHA] != null) {\n contents[_CSHA] = __expectString(output[_CSHA]);\n }\n if (output[_CSHAh] != null) {\n contents[_CSHAh] = __expectString(output[_CSHAh]);\n }\n return contents;\n};\nconst de_CORSRule = (output, context) => {\n const contents = {};\n if (output[_ID_] != null) {\n contents[_ID_] = __expectString(output[_ID_]);\n }\n if (output.AllowedHeader === \"\") {\n contents[_AHl] = [];\n }\n else if (output[_AH] != null) {\n contents[_AHl] = de_AllowedHeaders(__getArrayIfSingleItem(output[_AH]), context);\n }\n if (output.AllowedMethod === \"\") {\n contents[_AMl] = [];\n }\n else if (output[_AM] != null) {\n contents[_AMl] = de_AllowedMethods(__getArrayIfSingleItem(output[_AM]), context);\n }\n if (output.AllowedOrigin === \"\") {\n contents[_AOl] = [];\n }\n else if (output[_AO] != null) {\n contents[_AOl] = de_AllowedOrigins(__getArrayIfSingleItem(output[_AO]), context);\n }\n if (output.ExposeHeader === \"\") {\n contents[_EH] = [];\n }\n else if (output[_EHx] != null) {\n contents[_EH] = de_ExposeHeaders(__getArrayIfSingleItem(output[_EHx]), context);\n }\n if (output[_MAS] != null) {\n contents[_MAS] = __strictParseInt32(output[_MAS]);\n }\n return contents;\n};\nconst de_CORSRules = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_CORSRule(entry, context);\n });\n};\nconst de_DefaultRetention = (output, context) => {\n const contents = {};\n if (output[_Mo] != null) {\n contents[_Mo] = __expectString(output[_Mo]);\n }\n if (output[_Da] != null) {\n contents[_Da] = __strictParseInt32(output[_Da]);\n }\n if (output[_Y] != null) {\n contents[_Y] = __strictParseInt32(output[_Y]);\n }\n return contents;\n};\nconst de_DeletedObject = (output, context) => {\n const contents = {};\n if (output[_K] != null) {\n contents[_K] = __expectString(output[_K]);\n }\n if (output[_VI] != null) {\n contents[_VI] = __expectString(output[_VI]);\n }\n if (output[_DM] != null) {\n contents[_DM] = __parseBoolean(output[_DM]);\n }\n if (output[_DMVI] != null) {\n contents[_DMVI] = __expectString(output[_DMVI]);\n }\n return contents;\n};\nconst de_DeletedObjects = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_DeletedObject(entry, context);\n });\n};\nconst de_DeleteMarkerEntry = (output, context) => {\n const contents = {};\n if (output[_O] != null) {\n contents[_O] = de_Owner(output[_O], context);\n }\n if (output[_K] != null) {\n contents[_K] = __expectString(output[_K]);\n }\n if (output[_VI] != null) {\n contents[_VI] = __expectString(output[_VI]);\n }\n if (output[_IL] != null) {\n contents[_IL] = __parseBoolean(output[_IL]);\n }\n if (output[_LM] != null) {\n contents[_LM] = __expectNonNull(__parseRfc3339DateTimeWithOffset(output[_LM]));\n }\n return contents;\n};\nconst de_DeleteMarkerReplication = (output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = __expectString(output[_S]);\n }\n return contents;\n};\nconst de_DeleteMarkers = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_DeleteMarkerEntry(entry, context);\n });\n};\nconst de_Destination = (output, context) => {\n const contents = {};\n if (output[_B] != null) {\n contents[_B] = __expectString(output[_B]);\n }\n if (output[_Ac] != null) {\n contents[_Ac] = __expectString(output[_Ac]);\n }\n if (output[_SC] != null) {\n contents[_SC] = __expectString(output[_SC]);\n }\n if (output[_ACT] != null) {\n contents[_ACT] = de_AccessControlTranslation(output[_ACT], context);\n }\n if (output[_ECn] != null) {\n contents[_ECn] = de_EncryptionConfiguration(output[_ECn], context);\n }\n if (output[_RTe] != null) {\n contents[_RTe] = de_ReplicationTime(output[_RTe], context);\n }\n if (output[_Me] != null) {\n contents[_Me] = de_Metrics(output[_Me], context);\n }\n return contents;\n};\nconst de_EncryptionConfiguration = (output, context) => {\n const contents = {};\n if (output[_RKKID] != null) {\n contents[_RKKID] = __expectString(output[_RKKID]);\n }\n return contents;\n};\nconst de_EndEvent = (output, context) => {\n const contents = {};\n return contents;\n};\nconst de__Error = (output, context) => {\n const contents = {};\n if (output[_K] != null) {\n contents[_K] = __expectString(output[_K]);\n }\n if (output[_VI] != null) {\n contents[_VI] = __expectString(output[_VI]);\n }\n if (output[_Cod] != null) {\n contents[_Cod] = __expectString(output[_Cod]);\n }\n if (output[_Mes] != null) {\n contents[_Mes] = __expectString(output[_Mes]);\n }\n return contents;\n};\nconst de_ErrorDocument = (output, context) => {\n const contents = {};\n if (output[_K] != null) {\n contents[_K] = __expectString(output[_K]);\n }\n return contents;\n};\nconst de_Errors = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de__Error(entry, context);\n });\n};\nconst de_EventBridgeConfiguration = (output, context) => {\n const contents = {};\n return contents;\n};\nconst de_EventList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return __expectString(entry);\n });\n};\nconst de_ExistingObjectReplication = (output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = __expectString(output[_S]);\n }\n return contents;\n};\nconst de_ExposeHeaders = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return __expectString(entry);\n });\n};\nconst de_FilterRule = (output, context) => {\n const contents = {};\n if (output[_N] != null) {\n contents[_N] = __expectString(output[_N]);\n }\n if (output[_Va] != null) {\n contents[_Va] = __expectString(output[_Va]);\n }\n return contents;\n};\nconst de_FilterRuleList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_FilterRule(entry, context);\n });\n};\nconst de_GetObjectAttributesParts = (output, context) => {\n const contents = {};\n if (output[_PC] != null) {\n contents[_TPC] = __strictParseInt32(output[_PC]);\n }\n if (output[_PNM] != null) {\n contents[_PNM] = __expectString(output[_PNM]);\n }\n if (output[_NPNM] != null) {\n contents[_NPNM] = __expectString(output[_NPNM]);\n }\n if (output[_MP] != null) {\n contents[_MP] = __strictParseInt32(output[_MP]);\n }\n if (output[_IT] != null) {\n contents[_IT] = __parseBoolean(output[_IT]);\n }\n if (output.Part === \"\") {\n contents[_Part] = [];\n }\n else if (output[_Par] != null) {\n contents[_Part] = de_PartsList(__getArrayIfSingleItem(output[_Par]), context);\n }\n return contents;\n};\nconst de_Grant = (output, context) => {\n const contents = {};\n if (output[_Gra] != null) {\n contents[_Gra] = de_Grantee(output[_Gra], context);\n }\n if (output[_Pe] != null) {\n contents[_Pe] = __expectString(output[_Pe]);\n }\n return contents;\n};\nconst de_Grantee = (output, context) => {\n const contents = {};\n if (output[_DN] != null) {\n contents[_DN] = __expectString(output[_DN]);\n }\n if (output[_EA] != null) {\n contents[_EA] = __expectString(output[_EA]);\n }\n if (output[_ID_] != null) {\n contents[_ID_] = __expectString(output[_ID_]);\n }\n if (output[_URI] != null) {\n contents[_URI] = __expectString(output[_URI]);\n }\n if (output[_x] != null) {\n contents[_Ty] = __expectString(output[_x]);\n }\n return contents;\n};\nconst de_Grants = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_Grant(entry, context);\n });\n};\nconst de_IndexDocument = (output, context) => {\n const contents = {};\n if (output[_Su] != null) {\n contents[_Su] = __expectString(output[_Su]);\n }\n return contents;\n};\nconst de_Initiator = (output, context) => {\n const contents = {};\n if (output[_ID_] != null) {\n contents[_ID_] = __expectString(output[_ID_]);\n }\n if (output[_DN] != null) {\n contents[_DN] = __expectString(output[_DN]);\n }\n return contents;\n};\nconst de_IntelligentTieringAndOperator = (output, context) => {\n const contents = {};\n if (output[_P] != null) {\n contents[_P] = __expectString(output[_P]);\n }\n if (output.Tag === \"\") {\n contents[_Tag] = [];\n }\n else if (output[_Ta] != null) {\n contents[_Tag] = de_TagSet(__getArrayIfSingleItem(output[_Ta]), context);\n }\n return contents;\n};\nconst de_IntelligentTieringConfiguration = (output, context) => {\n const contents = {};\n if (output[_I] != null) {\n contents[_I] = __expectString(output[_I]);\n }\n if (output[_F] != null) {\n contents[_F] = de_IntelligentTieringFilter(output[_F], context);\n }\n if (output[_S] != null) {\n contents[_S] = __expectString(output[_S]);\n }\n if (output.Tiering === \"\") {\n contents[_Tie] = [];\n }\n else if (output[_Tier] != null) {\n contents[_Tie] = de_TieringList(__getArrayIfSingleItem(output[_Tier]), context);\n }\n return contents;\n};\nconst de_IntelligentTieringConfigurationList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_IntelligentTieringConfiguration(entry, context);\n });\n};\nconst de_IntelligentTieringFilter = (output, context) => {\n const contents = {};\n if (output[_P] != null) {\n contents[_P] = __expectString(output[_P]);\n }\n if (output[_Ta] != null) {\n contents[_Ta] = de_Tag(output[_Ta], context);\n }\n if (output[_A] != null) {\n contents[_A] = de_IntelligentTieringAndOperator(output[_A], context);\n }\n return contents;\n};\nconst de_InventoryConfiguration = (output, context) => {\n const contents = {};\n if (output[_Des] != null) {\n contents[_Des] = de_InventoryDestination(output[_Des], context);\n }\n if (output[_IE] != null) {\n contents[_IE] = __parseBoolean(output[_IE]);\n }\n if (output[_F] != null) {\n contents[_F] = de_InventoryFilter(output[_F], context);\n }\n if (output[_I] != null) {\n contents[_I] = __expectString(output[_I]);\n }\n if (output[_IOV] != null) {\n contents[_IOV] = __expectString(output[_IOV]);\n }\n if (output.OptionalFields === \"\") {\n contents[_OF] = [];\n }\n else if (output[_OF] != null && output[_OF][_Fi] != null) {\n contents[_OF] = de_InventoryOptionalFields(__getArrayIfSingleItem(output[_OF][_Fi]), context);\n }\n if (output[_Sc] != null) {\n contents[_Sc] = de_InventorySchedule(output[_Sc], context);\n }\n return contents;\n};\nconst de_InventoryConfigurationList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_InventoryConfiguration(entry, context);\n });\n};\nconst de_InventoryDestination = (output, context) => {\n const contents = {};\n if (output[_SBD] != null) {\n contents[_SBD] = de_InventoryS3BucketDestination(output[_SBD], context);\n }\n return contents;\n};\nconst de_InventoryEncryption = (output, context) => {\n const contents = {};\n if (output[_SS] != null) {\n contents[_SSES] = de_SSES3(output[_SS], context);\n }\n if (output[_SK] != null) {\n contents[_SSEKMS] = de_SSEKMS(output[_SK], context);\n }\n return contents;\n};\nconst de_InventoryFilter = (output, context) => {\n const contents = {};\n if (output[_P] != null) {\n contents[_P] = __expectString(output[_P]);\n }\n return contents;\n};\nconst de_InventoryOptionalFields = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return __expectString(entry);\n });\n};\nconst de_InventoryS3BucketDestination = (output, context) => {\n const contents = {};\n if (output[_AIc] != null) {\n contents[_AIc] = __expectString(output[_AIc]);\n }\n if (output[_B] != null) {\n contents[_B] = __expectString(output[_B]);\n }\n if (output[_Fo] != null) {\n contents[_Fo] = __expectString(output[_Fo]);\n }\n if (output[_P] != null) {\n contents[_P] = __expectString(output[_P]);\n }\n if (output[_En] != null) {\n contents[_En] = de_InventoryEncryption(output[_En], context);\n }\n return contents;\n};\nconst de_InventorySchedule = (output, context) => {\n const contents = {};\n if (output[_Fr] != null) {\n contents[_Fr] = __expectString(output[_Fr]);\n }\n return contents;\n};\nconst de_LambdaFunctionConfiguration = (output, context) => {\n const contents = {};\n if (output[_I] != null) {\n contents[_I] = __expectString(output[_I]);\n }\n if (output[_CF] != null) {\n contents[_LFA] = __expectString(output[_CF]);\n }\n if (output.Event === \"\") {\n contents[_Eve] = [];\n }\n else if (output[_Ev] != null) {\n contents[_Eve] = de_EventList(__getArrayIfSingleItem(output[_Ev]), context);\n }\n if (output[_F] != null) {\n contents[_F] = de_NotificationConfigurationFilter(output[_F], context);\n }\n return contents;\n};\nconst de_LambdaFunctionConfigurationList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_LambdaFunctionConfiguration(entry, context);\n });\n};\nconst de_LifecycleExpiration = (output, context) => {\n const contents = {};\n if (output[_Dat] != null) {\n contents[_Dat] = __expectNonNull(__parseRfc3339DateTimeWithOffset(output[_Dat]));\n }\n if (output[_Da] != null) {\n contents[_Da] = __strictParseInt32(output[_Da]);\n }\n if (output[_EODM] != null) {\n contents[_EODM] = __parseBoolean(output[_EODM]);\n }\n return contents;\n};\nconst de_LifecycleRule = (output, context) => {\n const contents = {};\n if (output[_Exp] != null) {\n contents[_Exp] = de_LifecycleExpiration(output[_Exp], context);\n }\n if (output[_ID_] != null) {\n contents[_ID_] = __expectString(output[_ID_]);\n }\n if (output[_P] != null) {\n contents[_P] = __expectString(output[_P]);\n }\n if (output.Filter === \"\") {\n }\n else if (output[_F] != null) {\n contents[_F] = de_LifecycleRuleFilter(__expectUnion(output[_F]), context);\n }\n if (output[_S] != null) {\n contents[_S] = __expectString(output[_S]);\n }\n if (output.Transition === \"\") {\n contents[_Tr] = [];\n }\n else if (output[_Tra] != null) {\n contents[_Tr] = de_TransitionList(__getArrayIfSingleItem(output[_Tra]), context);\n }\n if (output.NoncurrentVersionTransition === \"\") {\n contents[_NVT] = [];\n }\n else if (output[_NVTo] != null) {\n contents[_NVT] = de_NoncurrentVersionTransitionList(__getArrayIfSingleItem(output[_NVTo]), context);\n }\n if (output[_NVE] != null) {\n contents[_NVE] = de_NoncurrentVersionExpiration(output[_NVE], context);\n }\n if (output[_AIMU] != null) {\n contents[_AIMU] = de_AbortIncompleteMultipartUpload(output[_AIMU], context);\n }\n return contents;\n};\nconst de_LifecycleRuleAndOperator = (output, context) => {\n const contents = {};\n if (output[_P] != null) {\n contents[_P] = __expectString(output[_P]);\n }\n if (output.Tag === \"\") {\n contents[_Tag] = [];\n }\n else if (output[_Ta] != null) {\n contents[_Tag] = de_TagSet(__getArrayIfSingleItem(output[_Ta]), context);\n }\n if (output[_OSGT] != null) {\n contents[_OSGT] = __strictParseLong(output[_OSGT]);\n }\n if (output[_OSLT] != null) {\n contents[_OSLT] = __strictParseLong(output[_OSLT]);\n }\n return contents;\n};\nconst de_LifecycleRuleFilter = (output, context) => {\n if (output[_P] != null) {\n return {\n Prefix: __expectString(output[_P]),\n };\n }\n if (output[_Ta] != null) {\n return {\n Tag: de_Tag(output[_Ta], context),\n };\n }\n if (output[_OSGT] != null) {\n return {\n ObjectSizeGreaterThan: __strictParseLong(output[_OSGT]),\n };\n }\n if (output[_OSLT] != null) {\n return {\n ObjectSizeLessThan: __strictParseLong(output[_OSLT]),\n };\n }\n if (output[_A] != null) {\n return {\n And: de_LifecycleRuleAndOperator(output[_A], context),\n };\n }\n return { $unknown: Object.entries(output)[0] };\n};\nconst de_LifecycleRules = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_LifecycleRule(entry, context);\n });\n};\nconst de_LoggingEnabled = (output, context) => {\n const contents = {};\n if (output[_TB] != null) {\n contents[_TB] = __expectString(output[_TB]);\n }\n if (output.TargetGrants === \"\") {\n contents[_TG] = [];\n }\n else if (output[_TG] != null && output[_TG][_G] != null) {\n contents[_TG] = de_TargetGrants(__getArrayIfSingleItem(output[_TG][_G]), context);\n }\n if (output[_TP] != null) {\n contents[_TP] = __expectString(output[_TP]);\n }\n if (output[_TOKF] != null) {\n contents[_TOKF] = de_TargetObjectKeyFormat(output[_TOKF], context);\n }\n return contents;\n};\nconst de_Metrics = (output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = __expectString(output[_S]);\n }\n if (output[_ETv] != null) {\n contents[_ETv] = de_ReplicationTimeValue(output[_ETv], context);\n }\n return contents;\n};\nconst de_MetricsAndOperator = (output, context) => {\n const contents = {};\n if (output[_P] != null) {\n contents[_P] = __expectString(output[_P]);\n }\n if (output.Tag === \"\") {\n contents[_Tag] = [];\n }\n else if (output[_Ta] != null) {\n contents[_Tag] = de_TagSet(__getArrayIfSingleItem(output[_Ta]), context);\n }\n if (output[_APAc] != null) {\n contents[_APAc] = __expectString(output[_APAc]);\n }\n return contents;\n};\nconst de_MetricsConfiguration = (output, context) => {\n const contents = {};\n if (output[_I] != null) {\n contents[_I] = __expectString(output[_I]);\n }\n if (output.Filter === \"\") {\n }\n else if (output[_F] != null) {\n contents[_F] = de_MetricsFilter(__expectUnion(output[_F]), context);\n }\n return contents;\n};\nconst de_MetricsConfigurationList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_MetricsConfiguration(entry, context);\n });\n};\nconst de_MetricsFilter = (output, context) => {\n if (output[_P] != null) {\n return {\n Prefix: __expectString(output[_P]),\n };\n }\n if (output[_Ta] != null) {\n return {\n Tag: de_Tag(output[_Ta], context),\n };\n }\n if (output[_APAc] != null) {\n return {\n AccessPointArn: __expectString(output[_APAc]),\n };\n }\n if (output[_A] != null) {\n return {\n And: de_MetricsAndOperator(output[_A], context),\n };\n }\n return { $unknown: Object.entries(output)[0] };\n};\nconst de_MultipartUpload = (output, context) => {\n const contents = {};\n if (output[_UI] != null) {\n contents[_UI] = __expectString(output[_UI]);\n }\n if (output[_K] != null) {\n contents[_K] = __expectString(output[_K]);\n }\n if (output[_Ini] != null) {\n contents[_Ini] = __expectNonNull(__parseRfc3339DateTimeWithOffset(output[_Ini]));\n }\n if (output[_SC] != null) {\n contents[_SC] = __expectString(output[_SC]);\n }\n if (output[_O] != null) {\n contents[_O] = de_Owner(output[_O], context);\n }\n if (output[_In] != null) {\n contents[_In] = de_Initiator(output[_In], context);\n }\n if (output[_CA] != null) {\n contents[_CA] = __expectString(output[_CA]);\n }\n return contents;\n};\nconst de_MultipartUploadList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_MultipartUpload(entry, context);\n });\n};\nconst de_NoncurrentVersionExpiration = (output, context) => {\n const contents = {};\n if (output[_ND] != null) {\n contents[_ND] = __strictParseInt32(output[_ND]);\n }\n if (output[_NNV] != null) {\n contents[_NNV] = __strictParseInt32(output[_NNV]);\n }\n return contents;\n};\nconst de_NoncurrentVersionTransition = (output, context) => {\n const contents = {};\n if (output[_ND] != null) {\n contents[_ND] = __strictParseInt32(output[_ND]);\n }\n if (output[_SC] != null) {\n contents[_SC] = __expectString(output[_SC]);\n }\n if (output[_NNV] != null) {\n contents[_NNV] = __strictParseInt32(output[_NNV]);\n }\n return contents;\n};\nconst de_NoncurrentVersionTransitionList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_NoncurrentVersionTransition(entry, context);\n });\n};\nconst de_NotificationConfigurationFilter = (output, context) => {\n const contents = {};\n if (output[_SKe] != null) {\n contents[_K] = de_S3KeyFilter(output[_SKe], context);\n }\n return contents;\n};\nconst de__Object = (output, context) => {\n const contents = {};\n if (output[_K] != null) {\n contents[_K] = __expectString(output[_K]);\n }\n if (output[_LM] != null) {\n contents[_LM] = __expectNonNull(__parseRfc3339DateTimeWithOffset(output[_LM]));\n }\n if (output[_ETa] != null) {\n contents[_ETa] = __expectString(output[_ETa]);\n }\n if (output.ChecksumAlgorithm === \"\") {\n contents[_CA] = [];\n }\n else if (output[_CA] != null) {\n contents[_CA] = de_ChecksumAlgorithmList(__getArrayIfSingleItem(output[_CA]), context);\n }\n if (output[_Si] != null) {\n contents[_Si] = __strictParseLong(output[_Si]);\n }\n if (output[_SC] != null) {\n contents[_SC] = __expectString(output[_SC]);\n }\n if (output[_O] != null) {\n contents[_O] = de_Owner(output[_O], context);\n }\n if (output[_RSe] != null) {\n contents[_RSe] = de_RestoreStatus(output[_RSe], context);\n }\n return contents;\n};\nconst de_ObjectList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de__Object(entry, context);\n });\n};\nconst de_ObjectLockConfiguration = (output, context) => {\n const contents = {};\n if (output[_OLE] != null) {\n contents[_OLE] = __expectString(output[_OLE]);\n }\n if (output[_Ru] != null) {\n contents[_Ru] = de_ObjectLockRule(output[_Ru], context);\n }\n return contents;\n};\nconst de_ObjectLockLegalHold = (output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = __expectString(output[_S]);\n }\n return contents;\n};\nconst de_ObjectLockRetention = (output, context) => {\n const contents = {};\n if (output[_Mo] != null) {\n contents[_Mo] = __expectString(output[_Mo]);\n }\n if (output[_RUD] != null) {\n contents[_RUD] = __expectNonNull(__parseRfc3339DateTimeWithOffset(output[_RUD]));\n }\n return contents;\n};\nconst de_ObjectLockRule = (output, context) => {\n const contents = {};\n if (output[_DRe] != null) {\n contents[_DRe] = de_DefaultRetention(output[_DRe], context);\n }\n return contents;\n};\nconst de_ObjectPart = (output, context) => {\n const contents = {};\n if (output[_PN] != null) {\n contents[_PN] = __strictParseInt32(output[_PN]);\n }\n if (output[_Si] != null) {\n contents[_Si] = __strictParseLong(output[_Si]);\n }\n if (output[_CCRC] != null) {\n contents[_CCRC] = __expectString(output[_CCRC]);\n }\n if (output[_CCRCC] != null) {\n contents[_CCRCC] = __expectString(output[_CCRCC]);\n }\n if (output[_CSHA] != null) {\n contents[_CSHA] = __expectString(output[_CSHA]);\n }\n if (output[_CSHAh] != null) {\n contents[_CSHAh] = __expectString(output[_CSHAh]);\n }\n return contents;\n};\nconst de_ObjectVersion = (output, context) => {\n const contents = {};\n if (output[_ETa] != null) {\n contents[_ETa] = __expectString(output[_ETa]);\n }\n if (output.ChecksumAlgorithm === \"\") {\n contents[_CA] = [];\n }\n else if (output[_CA] != null) {\n contents[_CA] = de_ChecksumAlgorithmList(__getArrayIfSingleItem(output[_CA]), context);\n }\n if (output[_Si] != null) {\n contents[_Si] = __strictParseLong(output[_Si]);\n }\n if (output[_SC] != null) {\n contents[_SC] = __expectString(output[_SC]);\n }\n if (output[_K] != null) {\n contents[_K] = __expectString(output[_K]);\n }\n if (output[_VI] != null) {\n contents[_VI] = __expectString(output[_VI]);\n }\n if (output[_IL] != null) {\n contents[_IL] = __parseBoolean(output[_IL]);\n }\n if (output[_LM] != null) {\n contents[_LM] = __expectNonNull(__parseRfc3339DateTimeWithOffset(output[_LM]));\n }\n if (output[_O] != null) {\n contents[_O] = de_Owner(output[_O], context);\n }\n if (output[_RSe] != null) {\n contents[_RSe] = de_RestoreStatus(output[_RSe], context);\n }\n return contents;\n};\nconst de_ObjectVersionList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_ObjectVersion(entry, context);\n });\n};\nconst de_Owner = (output, context) => {\n const contents = {};\n if (output[_DN] != null) {\n contents[_DN] = __expectString(output[_DN]);\n }\n if (output[_ID_] != null) {\n contents[_ID_] = __expectString(output[_ID_]);\n }\n return contents;\n};\nconst de_OwnershipControls = (output, context) => {\n const contents = {};\n if (output.Rule === \"\") {\n contents[_Rul] = [];\n }\n else if (output[_Ru] != null) {\n contents[_Rul] = de_OwnershipControlsRules(__getArrayIfSingleItem(output[_Ru]), context);\n }\n return contents;\n};\nconst de_OwnershipControlsRule = (output, context) => {\n const contents = {};\n if (output[_OO] != null) {\n contents[_OO] = __expectString(output[_OO]);\n }\n return contents;\n};\nconst de_OwnershipControlsRules = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_OwnershipControlsRule(entry, context);\n });\n};\nconst de_Part = (output, context) => {\n const contents = {};\n if (output[_PN] != null) {\n contents[_PN] = __strictParseInt32(output[_PN]);\n }\n if (output[_LM] != null) {\n contents[_LM] = __expectNonNull(__parseRfc3339DateTimeWithOffset(output[_LM]));\n }\n if (output[_ETa] != null) {\n contents[_ETa] = __expectString(output[_ETa]);\n }\n if (output[_Si] != null) {\n contents[_Si] = __strictParseLong(output[_Si]);\n }\n if (output[_CCRC] != null) {\n contents[_CCRC] = __expectString(output[_CCRC]);\n }\n if (output[_CCRCC] != null) {\n contents[_CCRCC] = __expectString(output[_CCRCC]);\n }\n if (output[_CSHA] != null) {\n contents[_CSHA] = __expectString(output[_CSHA]);\n }\n if (output[_CSHAh] != null) {\n contents[_CSHAh] = __expectString(output[_CSHAh]);\n }\n return contents;\n};\nconst de_PartitionedPrefix = (output, context) => {\n const contents = {};\n if (output[_PDS] != null) {\n contents[_PDS] = __expectString(output[_PDS]);\n }\n return contents;\n};\nconst de_Parts = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_Part(entry, context);\n });\n};\nconst de_PartsList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_ObjectPart(entry, context);\n });\n};\nconst de_PolicyStatus = (output, context) => {\n const contents = {};\n if (output[_IP] != null) {\n contents[_IP] = __parseBoolean(output[_IP]);\n }\n return contents;\n};\nconst de_Progress = (output, context) => {\n const contents = {};\n if (output[_BS] != null) {\n contents[_BS] = __strictParseLong(output[_BS]);\n }\n if (output[_BP] != null) {\n contents[_BP] = __strictParseLong(output[_BP]);\n }\n if (output[_BRy] != null) {\n contents[_BRy] = __strictParseLong(output[_BRy]);\n }\n return contents;\n};\nconst de_PublicAccessBlockConfiguration = (output, context) => {\n const contents = {};\n if (output[_BPA] != null) {\n contents[_BPA] = __parseBoolean(output[_BPA]);\n }\n if (output[_IPA] != null) {\n contents[_IPA] = __parseBoolean(output[_IPA]);\n }\n if (output[_BPP] != null) {\n contents[_BPP] = __parseBoolean(output[_BPP]);\n }\n if (output[_RPB] != null) {\n contents[_RPB] = __parseBoolean(output[_RPB]);\n }\n return contents;\n};\nconst de_QueueConfiguration = (output, context) => {\n const contents = {};\n if (output[_I] != null) {\n contents[_I] = __expectString(output[_I]);\n }\n if (output[_Qu] != null) {\n contents[_QA] = __expectString(output[_Qu]);\n }\n if (output.Event === \"\") {\n contents[_Eve] = [];\n }\n else if (output[_Ev] != null) {\n contents[_Eve] = de_EventList(__getArrayIfSingleItem(output[_Ev]), context);\n }\n if (output[_F] != null) {\n contents[_F] = de_NotificationConfigurationFilter(output[_F], context);\n }\n return contents;\n};\nconst de_QueueConfigurationList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_QueueConfiguration(entry, context);\n });\n};\nconst de_Redirect = (output, context) => {\n const contents = {};\n if (output[_HN] != null) {\n contents[_HN] = __expectString(output[_HN]);\n }\n if (output[_HRC] != null) {\n contents[_HRC] = __expectString(output[_HRC]);\n }\n if (output[_Pr] != null) {\n contents[_Pr] = __expectString(output[_Pr]);\n }\n if (output[_RKPW] != null) {\n contents[_RKPW] = __expectString(output[_RKPW]);\n }\n if (output[_RKW] != null) {\n contents[_RKW] = __expectString(output[_RKW]);\n }\n return contents;\n};\nconst de_RedirectAllRequestsTo = (output, context) => {\n const contents = {};\n if (output[_HN] != null) {\n contents[_HN] = __expectString(output[_HN]);\n }\n if (output[_Pr] != null) {\n contents[_Pr] = __expectString(output[_Pr]);\n }\n return contents;\n};\nconst de_ReplicaModifications = (output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = __expectString(output[_S]);\n }\n return contents;\n};\nconst de_ReplicationConfiguration = (output, context) => {\n const contents = {};\n if (output[_Ro] != null) {\n contents[_Ro] = __expectString(output[_Ro]);\n }\n if (output.Rule === \"\") {\n contents[_Rul] = [];\n }\n else if (output[_Ru] != null) {\n contents[_Rul] = de_ReplicationRules(__getArrayIfSingleItem(output[_Ru]), context);\n }\n return contents;\n};\nconst de_ReplicationRule = (output, context) => {\n const contents = {};\n if (output[_ID_] != null) {\n contents[_ID_] = __expectString(output[_ID_]);\n }\n if (output[_Pri] != null) {\n contents[_Pri] = __strictParseInt32(output[_Pri]);\n }\n if (output[_P] != null) {\n contents[_P] = __expectString(output[_P]);\n }\n if (output.Filter === \"\") {\n }\n else if (output[_F] != null) {\n contents[_F] = de_ReplicationRuleFilter(__expectUnion(output[_F]), context);\n }\n if (output[_S] != null) {\n contents[_S] = __expectString(output[_S]);\n }\n if (output[_SSC] != null) {\n contents[_SSC] = de_SourceSelectionCriteria(output[_SSC], context);\n }\n if (output[_EOR] != null) {\n contents[_EOR] = de_ExistingObjectReplication(output[_EOR], context);\n }\n if (output[_Des] != null) {\n contents[_Des] = de_Destination(output[_Des], context);\n }\n if (output[_DMR] != null) {\n contents[_DMR] = de_DeleteMarkerReplication(output[_DMR], context);\n }\n return contents;\n};\nconst de_ReplicationRuleAndOperator = (output, context) => {\n const contents = {};\n if (output[_P] != null) {\n contents[_P] = __expectString(output[_P]);\n }\n if (output.Tag === \"\") {\n contents[_Tag] = [];\n }\n else if (output[_Ta] != null) {\n contents[_Tag] = de_TagSet(__getArrayIfSingleItem(output[_Ta]), context);\n }\n return contents;\n};\nconst de_ReplicationRuleFilter = (output, context) => {\n if (output[_P] != null) {\n return {\n Prefix: __expectString(output[_P]),\n };\n }\n if (output[_Ta] != null) {\n return {\n Tag: de_Tag(output[_Ta], context),\n };\n }\n if (output[_A] != null) {\n return {\n And: de_ReplicationRuleAndOperator(output[_A], context),\n };\n }\n return { $unknown: Object.entries(output)[0] };\n};\nconst de_ReplicationRules = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_ReplicationRule(entry, context);\n });\n};\nconst de_ReplicationTime = (output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = __expectString(output[_S]);\n }\n if (output[_Tim] != null) {\n contents[_Tim] = de_ReplicationTimeValue(output[_Tim], context);\n }\n return contents;\n};\nconst de_ReplicationTimeValue = (output, context) => {\n const contents = {};\n if (output[_Mi] != null) {\n contents[_Mi] = __strictParseInt32(output[_Mi]);\n }\n return contents;\n};\nconst de_RestoreStatus = (output, context) => {\n const contents = {};\n if (output[_IRIP] != null) {\n contents[_IRIP] = __parseBoolean(output[_IRIP]);\n }\n if (output[_RED] != null) {\n contents[_RED] = __expectNonNull(__parseRfc3339DateTimeWithOffset(output[_RED]));\n }\n return contents;\n};\nconst de_RoutingRule = (output, context) => {\n const contents = {};\n if (output[_Con] != null) {\n contents[_Con] = de_Condition(output[_Con], context);\n }\n if (output[_Red] != null) {\n contents[_Red] = de_Redirect(output[_Red], context);\n }\n return contents;\n};\nconst de_RoutingRules = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_RoutingRule(entry, context);\n });\n};\nconst de_S3KeyFilter = (output, context) => {\n const contents = {};\n if (output.FilterRule === \"\") {\n contents[_FRi] = [];\n }\n else if (output[_FR] != null) {\n contents[_FRi] = de_FilterRuleList(__getArrayIfSingleItem(output[_FR]), context);\n }\n return contents;\n};\nconst de_ServerSideEncryptionByDefault = (output, context) => {\n const contents = {};\n if (output[_SSEA] != null) {\n contents[_SSEA] = __expectString(output[_SSEA]);\n }\n if (output[_KMSMKID] != null) {\n contents[_KMSMKID] = __expectString(output[_KMSMKID]);\n }\n return contents;\n};\nconst de_ServerSideEncryptionConfiguration = (output, context) => {\n const contents = {};\n if (output.Rule === \"\") {\n contents[_Rul] = [];\n }\n else if (output[_Ru] != null) {\n contents[_Rul] = de_ServerSideEncryptionRules(__getArrayIfSingleItem(output[_Ru]), context);\n }\n return contents;\n};\nconst de_ServerSideEncryptionRule = (output, context) => {\n const contents = {};\n if (output[_ASSEBD] != null) {\n contents[_ASSEBD] = de_ServerSideEncryptionByDefault(output[_ASSEBD], context);\n }\n if (output[_BKE] != null) {\n contents[_BKE] = __parseBoolean(output[_BKE]);\n }\n return contents;\n};\nconst de_ServerSideEncryptionRules = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_ServerSideEncryptionRule(entry, context);\n });\n};\nconst de_SessionCredentials = (output, context) => {\n const contents = {};\n if (output[_AKI] != null) {\n contents[_AKI] = __expectString(output[_AKI]);\n }\n if (output[_SAK] != null) {\n contents[_SAK] = __expectString(output[_SAK]);\n }\n if (output[_ST] != null) {\n contents[_ST] = __expectString(output[_ST]);\n }\n if (output[_Exp] != null) {\n contents[_Exp] = __expectNonNull(__parseRfc3339DateTimeWithOffset(output[_Exp]));\n }\n return contents;\n};\nconst de_SimplePrefix = (output, context) => {\n const contents = {};\n return contents;\n};\nconst de_SourceSelectionCriteria = (output, context) => {\n const contents = {};\n if (output[_SKEO] != null) {\n contents[_SKEO] = de_SseKmsEncryptedObjects(output[_SKEO], context);\n }\n if (output[_RM] != null) {\n contents[_RM] = de_ReplicaModifications(output[_RM], context);\n }\n return contents;\n};\nconst de_SSEKMS = (output, context) => {\n const contents = {};\n if (output[_KI] != null) {\n contents[_KI] = __expectString(output[_KI]);\n }\n return contents;\n};\nconst de_SseKmsEncryptedObjects = (output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = __expectString(output[_S]);\n }\n return contents;\n};\nconst de_SSES3 = (output, context) => {\n const contents = {};\n return contents;\n};\nconst de_Stats = (output, context) => {\n const contents = {};\n if (output[_BS] != null) {\n contents[_BS] = __strictParseLong(output[_BS]);\n }\n if (output[_BP] != null) {\n contents[_BP] = __strictParseLong(output[_BP]);\n }\n if (output[_BRy] != null) {\n contents[_BRy] = __strictParseLong(output[_BRy]);\n }\n return contents;\n};\nconst de_StorageClassAnalysis = (output, context) => {\n const contents = {};\n if (output[_DE] != null) {\n contents[_DE] = de_StorageClassAnalysisDataExport(output[_DE], context);\n }\n return contents;\n};\nconst de_StorageClassAnalysisDataExport = (output, context) => {\n const contents = {};\n if (output[_OSV] != null) {\n contents[_OSV] = __expectString(output[_OSV]);\n }\n if (output[_Des] != null) {\n contents[_Des] = de_AnalyticsExportDestination(output[_Des], context);\n }\n return contents;\n};\nconst de_Tag = (output, context) => {\n const contents = {};\n if (output[_K] != null) {\n contents[_K] = __expectString(output[_K]);\n }\n if (output[_Va] != null) {\n contents[_Va] = __expectString(output[_Va]);\n }\n return contents;\n};\nconst de_TagSet = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_Tag(entry, context);\n });\n};\nconst de_TargetGrant = (output, context) => {\n const contents = {};\n if (output[_Gra] != null) {\n contents[_Gra] = de_Grantee(output[_Gra], context);\n }\n if (output[_Pe] != null) {\n contents[_Pe] = __expectString(output[_Pe]);\n }\n return contents;\n};\nconst de_TargetGrants = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_TargetGrant(entry, context);\n });\n};\nconst de_TargetObjectKeyFormat = (output, context) => {\n const contents = {};\n if (output[_SPi] != null) {\n contents[_SPi] = de_SimplePrefix(output[_SPi], context);\n }\n if (output[_PP] != null) {\n contents[_PP] = de_PartitionedPrefix(output[_PP], context);\n }\n return contents;\n};\nconst de_Tiering = (output, context) => {\n const contents = {};\n if (output[_Da] != null) {\n contents[_Da] = __strictParseInt32(output[_Da]);\n }\n if (output[_AT] != null) {\n contents[_AT] = __expectString(output[_AT]);\n }\n return contents;\n};\nconst de_TieringList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_Tiering(entry, context);\n });\n};\nconst de_TopicConfiguration = (output, context) => {\n const contents = {};\n if (output[_I] != null) {\n contents[_I] = __expectString(output[_I]);\n }\n if (output[_Top] != null) {\n contents[_TA] = __expectString(output[_Top]);\n }\n if (output.Event === \"\") {\n contents[_Eve] = [];\n }\n else if (output[_Ev] != null) {\n contents[_Eve] = de_EventList(__getArrayIfSingleItem(output[_Ev]), context);\n }\n if (output[_F] != null) {\n contents[_F] = de_NotificationConfigurationFilter(output[_F], context);\n }\n return contents;\n};\nconst de_TopicConfigurationList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_TopicConfiguration(entry, context);\n });\n};\nconst de_Transition = (output, context) => {\n const contents = {};\n if (output[_Dat] != null) {\n contents[_Dat] = __expectNonNull(__parseRfc3339DateTimeWithOffset(output[_Dat]));\n }\n if (output[_Da] != null) {\n contents[_Da] = __strictParseInt32(output[_Da]);\n }\n if (output[_SC] != null) {\n contents[_SC] = __expectString(output[_SC]);\n }\n return contents;\n};\nconst de_TransitionList = (output, context) => {\n return (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_Transition(entry, context);\n });\n};\nconst deserializeMetadata = (output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"],\n});\nconst collectBodyString = (streamBody, context) => collectBody(streamBody, context).then((body) => context.utf8Encoder(body));\nconst isSerializableHeaderValue = (value) => value !== undefined &&\n value !== null &&\n value !== \"\" &&\n (!Object.getOwnPropertyNames(value).includes(\"length\") || value.length != 0) &&\n (!Object.getOwnPropertyNames(value).includes(\"size\") || value.size != 0);\nconst _A = \"And\";\nconst _AAO = \"AnalyticsAndOperator\";\nconst _AC = \"AnalyticsConfiguration\";\nconst _ACL = \"ACL\";\nconst _ACLc = \"AccessControlList\";\nconst _ACLn = \"AnalyticsConfigurationList\";\nconst _ACP = \"AccessControlPolicy\";\nconst _ACT = \"AccessControlTranslation\";\nconst _ACc = \"AccelerateConfiguration\";\nconst _AD = \"AbortDate\";\nconst _AED = \"AnalyticsExportDestination\";\nconst _AF = \"AnalyticsFilter\";\nconst _AH = \"AllowedHeader\";\nconst _AHl = \"AllowedHeaders\";\nconst _AI = \"AnalyticsId\";\nconst _AIMU = \"AbortIncompleteMultipartUpload\";\nconst _AIc = \"AccountId\";\nconst _AKI = \"AccessKeyId\";\nconst _AM = \"AllowedMethod\";\nconst _AMl = \"AllowedMethods\";\nconst _AO = \"AllowedOrigin\";\nconst _AOl = \"AllowedOrigins\";\nconst _APA = \"AccessPointAlias\";\nconst _APAc = \"AccessPointArn\";\nconst _AQRD = \"AllowQuotedRecordDelimiter\";\nconst _AR = \"AcceptRanges\";\nconst _ARI = \"AbortRuleId\";\nconst _AS = \"ArchiveStatus\";\nconst _ASBD = \"AnalyticsS3BucketDestination\";\nconst _ASEFF = \"AnalyticsS3ExportFileFormat\";\nconst _ASSEBD = \"ApplyServerSideEncryptionByDefault\";\nconst _AT = \"AccessTier\";\nconst _Ac = \"Account\";\nconst _B = \"Bucket\";\nconst _BAI = \"BucketAccountId\";\nconst _BAS = \"BucketAccelerateStatus\";\nconst _BGR = \"BypassGovernanceRetention\";\nconst _BI = \"BucketInfo\";\nconst _BKE = \"BucketKeyEnabled\";\nconst _BLC = \"BucketLifecycleConfiguration\";\nconst _BLCu = \"BucketLocationConstraint\";\nconst _BLN = \"BucketLocationName\";\nconst _BLP = \"BucketLogsPermission\";\nconst _BLS = \"BucketLoggingStatus\";\nconst _BLT = \"BucketLocationType\";\nconst _BN = \"BucketName\";\nconst _BP = \"BytesProcessed\";\nconst _BPA = \"BlockPublicAcls\";\nconst _BPP = \"BlockPublicPolicy\";\nconst _BR = \"BucketRegion\";\nconst _BRy = \"BytesReturned\";\nconst _BS = \"BytesScanned\";\nconst _BT = \"BucketType\";\nconst _BVS = \"BucketVersioningStatus\";\nconst _Bu = \"Buckets\";\nconst _C = \"Credentials\";\nconst _CA = \"ChecksumAlgorithm\";\nconst _CACL = \"CannedACL\";\nconst _CBC = \"CreateBucketConfiguration\";\nconst _CC = \"CacheControl\";\nconst _CCRC = \"ChecksumCRC32\";\nconst _CCRCC = \"ChecksumCRC32C\";\nconst _CD = \"ContentDisposition\";\nconst _CDr = \"CreationDate\";\nconst _CE = \"ContentEncoding\";\nconst _CF = \"CloudFunction\";\nconst _CFC = \"CloudFunctionConfiguration\";\nconst _CL = \"ContentLanguage\";\nconst _CLo = \"ContentLength\";\nconst _CM = \"ChecksumMode\";\nconst _CMD = \"ContentMD5\";\nconst _CMU = \"CompletedMultipartUpload\";\nconst _CORSC = \"CORSConfiguration\";\nconst _CORSR = \"CORSRule\";\nconst _CORSRu = \"CORSRules\";\nconst _CP = \"CommonPrefixes\";\nconst _CPo = \"CompletedPart\";\nconst _CR = \"ContentRange\";\nconst _CRSBA = \"ConfirmRemoveSelfBucketAccess\";\nconst _CS = \"CopySource\";\nconst _CSHA = \"ChecksumSHA1\";\nconst _CSHAh = \"ChecksumSHA256\";\nconst _CSIM = \"CopySourceIfMatch\";\nconst _CSIMS = \"CopySourceIfModifiedSince\";\nconst _CSINM = \"CopySourceIfNoneMatch\";\nconst _CSIUS = \"CopySourceIfUnmodifiedSince\";\nconst _CSR = \"CopySourceRange\";\nconst _CSSSECA = \"CopySourceSSECustomerAlgorithm\";\nconst _CSSSECK = \"CopySourceSSECustomerKey\";\nconst _CSSSECKMD = \"CopySourceSSECustomerKeyMD5\";\nconst _CSV = \"CSV\";\nconst _CSVI = \"CopySourceVersionId\";\nconst _CSVIn = \"CSVInput\";\nconst _CSVO = \"CSVOutput\";\nconst _CT = \"ContentType\";\nconst _CTo = \"ContinuationToken\";\nconst _CTom = \"CompressionType\";\nconst _Ch = \"Checksum\";\nconst _Co = \"Contents\";\nconst _Cod = \"Code\";\nconst _Com = \"Comments\";\nconst _Con = \"Condition\";\nconst _D = \"Delimiter\";\nconst _DAI = \"DaysAfterInitiation\";\nconst _DE = \"DataExport\";\nconst _DM = \"DeleteMarker\";\nconst _DMR = \"DeleteMarkerReplication\";\nconst _DMRS = \"DeleteMarkerReplicationStatus\";\nconst _DMVI = \"DeleteMarkerVersionId\";\nconst _DMe = \"DeleteMarkers\";\nconst _DN = \"DisplayName\";\nconst _DR = \"DataRedundancy\";\nconst _DRe = \"DefaultRetention\";\nconst _Da = \"Days\";\nconst _Dat = \"Date\";\nconst _De = \"Deleted\";\nconst _Del = \"Delete\";\nconst _Des = \"Destination\";\nconst _Desc = \"Description\";\nconst _E = \"Expires\";\nconst _EA = \"EmailAddress\";\nconst _EBC = \"EventBridgeConfiguration\";\nconst _EBO = \"ExpectedBucketOwner\";\nconst _EC = \"ErrorCode\";\nconst _ECn = \"EncryptionConfiguration\";\nconst _ED = \"ErrorDocument\";\nconst _EH = \"ExposeHeaders\";\nconst _EHx = \"ExposeHeader\";\nconst _EM = \"ErrorMessage\";\nconst _EODM = \"ExpiredObjectDeleteMarker\";\nconst _EOR = \"ExistingObjectReplication\";\nconst _EORS = \"ExistingObjectReplicationStatus\";\nconst _ERP = \"EnableRequestProgress\";\nconst _ES = \"ExpiresString\";\nconst _ESBO = \"ExpectedSourceBucketOwner\";\nconst _ESx = \"ExpirationStatus\";\nconst _ET = \"EncodingType\";\nconst _ETa = \"ETag\";\nconst _ETn = \"EncryptionType\";\nconst _ETv = \"EventThreshold\";\nconst _ETx = \"ExpressionType\";\nconst _En = \"Encryption\";\nconst _Ena = \"Enabled\";\nconst _End = \"End\";\nconst _Er = \"Error\";\nconst _Err = \"Errors\";\nconst _Ev = \"Event\";\nconst _Eve = \"Events\";\nconst _Ex = \"Expression\";\nconst _Exp = \"Expiration\";\nconst _F = \"Filter\";\nconst _FD = \"FieldDelimiter\";\nconst _FHI = \"FileHeaderInfo\";\nconst _FO = \"FetchOwner\";\nconst _FR = \"FilterRule\";\nconst _FRN = \"FilterRuleName\";\nconst _FRV = \"FilterRuleValue\";\nconst _FRi = \"FilterRules\";\nconst _Fi = \"Field\";\nconst _Fo = \"Format\";\nconst _Fr = \"Frequency\";\nconst _G = \"Grant\";\nconst _GFC = \"GrantFullControl\";\nconst _GJP = \"GlacierJobParameters\";\nconst _GR = \"GrantRead\";\nconst _GRACP = \"GrantReadACP\";\nconst _GW = \"GrantWrite\";\nconst _GWACP = \"GrantWriteACP\";\nconst _Gr = \"Grants\";\nconst _Gra = \"Grantee\";\nconst _HECRE = \"HttpErrorCodeReturnedEquals\";\nconst _HN = \"HostName\";\nconst _HRC = \"HttpRedirectCode\";\nconst _I = \"Id\";\nconst _IC = \"InventoryConfiguration\";\nconst _ICL = \"InventoryConfigurationList\";\nconst _ID = \"IndexDocument\";\nconst _ID_ = \"ID\";\nconst _IDn = \"InventoryDestination\";\nconst _IE = \"IsEnabled\";\nconst _IEn = \"InventoryEncryption\";\nconst _IF = \"InventoryFilter\";\nconst _IFn = \"InventoryFormat\";\nconst _IFnv = \"InventoryFrequency\";\nconst _II = \"InventoryId\";\nconst _IIOV = \"InventoryIncludedObjectVersions\";\nconst _IL = \"IsLatest\";\nconst _IM = \"IfMatch\";\nconst _IMS = \"IfModifiedSince\";\nconst _INM = \"IfNoneMatch\";\nconst _IOF = \"InventoryOptionalField\";\nconst _IOV = \"IncludedObjectVersions\";\nconst _IP = \"IsPublic\";\nconst _IPA = \"IgnorePublicAcls\";\nconst _IRIP = \"IsRestoreInProgress\";\nconst _IS = \"InputSerialization\";\nconst _ISBD = \"InventoryS3BucketDestination\";\nconst _ISn = \"InventorySchedule\";\nconst _IT = \"IsTruncated\";\nconst _ITAO = \"IntelligentTieringAndOperator\";\nconst _ITAT = \"IntelligentTieringAccessTier\";\nconst _ITC = \"IntelligentTieringConfiguration\";\nconst _ITCL = \"IntelligentTieringConfigurationList\";\nconst _ITD = \"IntelligentTieringDays\";\nconst _ITF = \"IntelligentTieringFilter\";\nconst _ITI = \"IntelligentTieringId\";\nconst _ITS = \"IntelligentTieringStatus\";\nconst _IUS = \"IfUnmodifiedSince\";\nconst _In = \"Initiator\";\nconst _Ini = \"Initiated\";\nconst _JSON = \"JSON\";\nconst _JSONI = \"JSONInput\";\nconst _JSONO = \"JSONOutput\";\nconst _JSONT = \"JSONType\";\nconst _K = \"Key\";\nconst _KC = \"KeyCount\";\nconst _KI = \"KeyId\";\nconst _KM = \"KeyMarker\";\nconst _KMSC = \"KMSContext\";\nconst _KMSKI = \"KMSKeyId\";\nconst _KMSMKID = \"KMSMasterKeyID\";\nconst _KPE = \"KeyPrefixEquals\";\nconst _L = \"Location\";\nconst _LC = \"LocationConstraint\";\nconst _LE = \"LoggingEnabled\";\nconst _LEi = \"LifecycleExpiration\";\nconst _LFA = \"LambdaFunctionArn\";\nconst _LFC = \"LambdaFunctionConfigurations\";\nconst _LFCa = \"LambdaFunctionConfiguration\";\nconst _LI = \"LocationInfo\";\nconst _LM = \"LastModified\";\nconst _LNAS = \"LocationNameAsString\";\nconst _LP = \"LocationPrefix\";\nconst _LR = \"LifecycleRule\";\nconst _LRAO = \"LifecycleRuleAndOperator\";\nconst _LRF = \"LifecycleRuleFilter\";\nconst _LT = \"LocationType\";\nconst _M = \"Marker\";\nconst _MAO = \"MetricsAndOperator\";\nconst _MAS = \"MaxAgeSeconds\";\nconst _MC = \"MetricsConfiguration\";\nconst _MCL = \"MetricsConfigurationList\";\nconst _MD = \"MetadataDirective\";\nconst _MDB = \"MaxDirectoryBuckets\";\nconst _MDf = \"MfaDelete\";\nconst _ME = \"MetadataEntry\";\nconst _MF = \"MetricsFilter\";\nconst _MFA = \"MFA\";\nconst _MFAD = \"MFADelete\";\nconst _MI = \"MetricsId\";\nconst _MK = \"MaxKeys\";\nconst _MKe = \"MetadataKey\";\nconst _MM = \"MissingMeta\";\nconst _MP = \"MaxParts\";\nconst _MS = \"MetricsStatus\";\nconst _MU = \"MaxUploads\";\nconst _MV = \"MetadataValue\";\nconst _Me = \"Metrics\";\nconst _Mes = \"Message\";\nconst _Mi = \"Minutes\";\nconst _Mo = \"Mode\";\nconst _N = \"Name\";\nconst _NC = \"NotificationConfiguration\";\nconst _NCF = \"NotificationConfigurationFilter\";\nconst _NCT = \"NextContinuationToken\";\nconst _ND = \"NoncurrentDays\";\nconst _NI = \"NotificationId\";\nconst _NKM = \"NextKeyMarker\";\nconst _NM = \"NextMarker\";\nconst _NNV = \"NewerNoncurrentVersions\";\nconst _NPNM = \"NextPartNumberMarker\";\nconst _NUIM = \"NextUploadIdMarker\";\nconst _NVE = \"NoncurrentVersionExpiration\";\nconst _NVIM = \"NextVersionIdMarker\";\nconst _NVT = \"NoncurrentVersionTransitions\";\nconst _NVTo = \"NoncurrentVersionTransition\";\nconst _O = \"Owner\";\nconst _OA = \"ObjectAttributes\";\nconst _OC = \"OwnershipControls\";\nconst _OCACL = \"ObjectCannedACL\";\nconst _OCR = \"OwnershipControlsRule\";\nconst _OF = \"OptionalFields\";\nconst _OI = \"ObjectIdentifier\";\nconst _OK = \"ObjectKey\";\nconst _OL = \"OutputLocation\";\nconst _OLC = \"ObjectLockConfiguration\";\nconst _OLE = \"ObjectLockEnabled\";\nconst _OLEFB = \"ObjectLockEnabledForBucket\";\nconst _OLLH = \"ObjectLockLegalHold\";\nconst _OLLHS = \"ObjectLockLegalHoldStatus\";\nconst _OLM = \"ObjectLockMode\";\nconst _OLR = \"ObjectLockRetention\";\nconst _OLRM = \"ObjectLockRetentionMode\";\nconst _OLRUD = \"ObjectLockRetainUntilDate\";\nconst _OLRb = \"ObjectLockRule\";\nconst _OO = \"ObjectOwnership\";\nconst _OOA = \"OptionalObjectAttributes\";\nconst _OOw = \"OwnerOverride\";\nconst _OP = \"ObjectParts\";\nconst _OS = \"OutputSerialization\";\nconst _OSGT = \"ObjectSizeGreaterThan\";\nconst _OSGTB = \"ObjectSizeGreaterThanBytes\";\nconst _OSLT = \"ObjectSizeLessThan\";\nconst _OSLTB = \"ObjectSizeLessThanBytes\";\nconst _OSV = \"OutputSchemaVersion\";\nconst _OSb = \"ObjectSize\";\nconst _OVI = \"ObjectVersionId\";\nconst _Ob = \"Objects\";\nconst _P = \"Prefix\";\nconst _PABC = \"PublicAccessBlockConfiguration\";\nconst _PC = \"PartsCount\";\nconst _PDS = \"PartitionDateSource\";\nconst _PI = \"ParquetInput\";\nconst _PN = \"PartNumber\";\nconst _PNM = \"PartNumberMarker\";\nconst _PP = \"PartitionedPrefix\";\nconst _Pa = \"Payer\";\nconst _Par = \"Part\";\nconst _Parq = \"Parquet\";\nconst _Part = \"Parts\";\nconst _Pe = \"Permission\";\nconst _Pr = \"Protocol\";\nconst _Pri = \"Priority\";\nconst _Q = \"Quiet\";\nconst _QA = \"QueueArn\";\nconst _QC = \"QueueConfiguration\";\nconst _QCu = \"QueueConfigurations\";\nconst _QCuo = \"QuoteCharacter\";\nconst _QEC = \"QuoteEscapeCharacter\";\nconst _QF = \"QuoteFields\";\nconst _Qu = \"Queue\";\nconst _R = \"Range\";\nconst _RART = \"RedirectAllRequestsTo\";\nconst _RC = \"RequestCharged\";\nconst _RCC = \"ResponseCacheControl\";\nconst _RCD = \"ResponseContentDisposition\";\nconst _RCE = \"ResponseContentEncoding\";\nconst _RCL = \"ResponseContentLanguage\";\nconst _RCT = \"ResponseContentType\";\nconst _RCe = \"ReplicationConfiguration\";\nconst _RD = \"RecordDelimiter\";\nconst _RE = \"ResponseExpires\";\nconst _RED = \"RestoreExpiryDate\";\nconst _RKKID = \"ReplicaKmsKeyID\";\nconst _RKPW = \"ReplaceKeyPrefixWith\";\nconst _RKW = \"ReplaceKeyWith\";\nconst _RM = \"ReplicaModifications\";\nconst _RMS = \"ReplicaModificationsStatus\";\nconst _ROP = \"RestoreOutputPath\";\nconst _RP = \"RequestPayer\";\nconst _RPB = \"RestrictPublicBuckets\";\nconst _RPC = \"RequestPaymentConfiguration\";\nconst _RPe = \"RequestProgress\";\nconst _RR = \"RequestRoute\";\nconst _RRAO = \"ReplicationRuleAndOperator\";\nconst _RRF = \"ReplicationRuleFilter\";\nconst _RRS = \"ReplicationRuleStatus\";\nconst _RRT = \"RestoreRequestType\";\nconst _RRe = \"ReplicationRule\";\nconst _RRes = \"RestoreRequest\";\nconst _RRo = \"RoutingRules\";\nconst _RRou = \"RoutingRule\";\nconst _RS = \"ReplicationStatus\";\nconst _RSe = \"RestoreStatus\";\nconst _RT = \"RequestToken\";\nconst _RTS = \"ReplicationTimeStatus\";\nconst _RTV = \"ReplicationTimeValue\";\nconst _RTe = \"ReplicationTime\";\nconst _RUD = \"RetainUntilDate\";\nconst _Re = \"Restore\";\nconst _Red = \"Redirect\";\nconst _Ro = \"Role\";\nconst _Ru = \"Rule\";\nconst _Rul = \"Rules\";\nconst _S = \"Status\";\nconst _SA = \"StartAfter\";\nconst _SAK = \"SecretAccessKey\";\nconst _SBD = \"S3BucketDestination\";\nconst _SC = \"StorageClass\";\nconst _SCA = \"StorageClassAnalysis\";\nconst _SCADE = \"StorageClassAnalysisDataExport\";\nconst _SCASV = \"StorageClassAnalysisSchemaVersion\";\nconst _SCt = \"StatusCode\";\nconst _SDV = \"SkipDestinationValidation\";\nconst _SK = \"SSE-KMS\";\nconst _SKEO = \"SseKmsEncryptedObjects\";\nconst _SKEOS = \"SseKmsEncryptedObjectsStatus\";\nconst _SKF = \"S3KeyFilter\";\nconst _SKe = \"S3Key\";\nconst _SL = \"S3Location\";\nconst _SM = \"SessionMode\";\nconst _SOCR = \"SelectObjectContentRequest\";\nconst _SP = \"SelectParameters\";\nconst _SPi = \"SimplePrefix\";\nconst _SR = \"ScanRange\";\nconst _SS = \"SSE-S3\";\nconst _SSC = \"SourceSelectionCriteria\";\nconst _SSE = \"ServerSideEncryption\";\nconst _SSEA = \"SSEAlgorithm\";\nconst _SSEBD = \"ServerSideEncryptionByDefault\";\nconst _SSEC = \"ServerSideEncryptionConfiguration\";\nconst _SSECA = \"SSECustomerAlgorithm\";\nconst _SSECK = \"SSECustomerKey\";\nconst _SSECKMD = \"SSECustomerKeyMD5\";\nconst _SSEKMS = \"SSEKMS\";\nconst _SSEKMSEC = \"SSEKMSEncryptionContext\";\nconst _SSEKMSKI = \"SSEKMSKeyId\";\nconst _SSER = \"ServerSideEncryptionRule\";\nconst _SSES = \"SSES3\";\nconst _ST = \"SessionToken\";\nconst _S_ = \"S3\";\nconst _Sc = \"Schedule\";\nconst _Se = \"Setting\";\nconst _Si = \"Size\";\nconst _St = \"Start\";\nconst _Su = \"Suffix\";\nconst _T = \"Tagging\";\nconst _TA = \"TopicArn\";\nconst _TB = \"TargetBucket\";\nconst _TC = \"TagCount\";\nconst _TCo = \"TopicConfiguration\";\nconst _TCop = \"TopicConfigurations\";\nconst _TD = \"TaggingDirective\";\nconst _TG = \"TargetGrants\";\nconst _TGa = \"TargetGrant\";\nconst _TOKF = \"TargetObjectKeyFormat\";\nconst _TP = \"TargetPrefix\";\nconst _TPC = \"TotalPartsCount\";\nconst _TS = \"TagSet\";\nconst _TSC = \"TransitionStorageClass\";\nconst _Ta = \"Tag\";\nconst _Tag = \"Tags\";\nconst _Ti = \"Tier\";\nconst _Tie = \"Tierings\";\nconst _Tier = \"Tiering\";\nconst _Tim = \"Time\";\nconst _To = \"Token\";\nconst _Top = \"Topic\";\nconst _Tr = \"Transitions\";\nconst _Tra = \"Transition\";\nconst _Ty = \"Type\";\nconst _U = \"Upload\";\nconst _UI = \"UploadId\";\nconst _UIM = \"UploadIdMarker\";\nconst _UM = \"UserMetadata\";\nconst _URI = \"URI\";\nconst _Up = \"Uploads\";\nconst _V = \"Version\";\nconst _VC = \"VersionCount\";\nconst _VCe = \"VersioningConfiguration\";\nconst _VI = \"VersionId\";\nconst _VIM = \"VersionIdMarker\";\nconst _Va = \"Value\";\nconst _Ve = \"Versions\";\nconst _WC = \"WebsiteConfiguration\";\nconst _WRL = \"WebsiteRedirectLocation\";\nconst _Y = \"Years\";\nconst _a = \"analytics\";\nconst _ac = \"accelerate\";\nconst _acl = \"acl\";\nconst _ar = \"accept-ranges\";\nconst _at = \"attributes\";\nconst _c = \"cors\";\nconst _cc = \"cache-control\";\nconst _cd = \"content-disposition\";\nconst _ce = \"content-encoding\";\nconst _cl = \"content-language\";\nconst _cl_ = \"content-length\";\nconst _cm = \"content-md5\";\nconst _cr = \"content-range\";\nconst _ct = \"content-type\";\nconst _ct_ = \"continuation-token\";\nconst _d = \"delete\";\nconst _de = \"delimiter\";\nconst _e = \"expires\";\nconst _en = \"encryption\";\nconst _et = \"encoding-type\";\nconst _eta = \"etag\";\nconst _ex = \"expiresstring\";\nconst _fo = \"fetch-owner\";\nconst _i = \"id\";\nconst _im = \"if-match\";\nconst _ims = \"if-modified-since\";\nconst _in = \"inventory\";\nconst _inm = \"if-none-match\";\nconst _it = \"intelligent-tiering\";\nconst _ius = \"if-unmodified-since\";\nconst _km = \"key-marker\";\nconst _l = \"lifecycle\";\nconst _lh = \"legal-hold\";\nconst _lm = \"last-modified\";\nconst _lo = \"location\";\nconst _log = \"logging\";\nconst _lt = \"list-type\";\nconst _m = \"metrics\";\nconst _ma = \"marker\";\nconst _mdb = \"max-directory-buckets\";\nconst _me = \"member\";\nconst _mk = \"max-keys\";\nconst _mp = \"max-parts\";\nconst _mu = \"max-uploads\";\nconst _n = \"notification\";\nconst _oC = \"ownershipControls\";\nconst _ol = \"object-lock\";\nconst _p = \"policy\";\nconst _pAB = \"publicAccessBlock\";\nconst _pN = \"partNumber\";\nconst _pS = \"policyStatus\";\nconst _pnm = \"part-number-marker\";\nconst _pr = \"prefix\";\nconst _r = \"replication\";\nconst _rP = \"requestPayment\";\nconst _ra = \"range\";\nconst _rcc = \"response-cache-control\";\nconst _rcd = \"response-content-disposition\";\nconst _rce = \"response-content-encoding\";\nconst _rcl = \"response-content-language\";\nconst _rct = \"response-content-type\";\nconst _re = \"response-expires\";\nconst _res = \"restore\";\nconst _ret = \"retention\";\nconst _s = \"session\";\nconst _sa = \"start-after\";\nconst _se = \"select\";\nconst _st = \"select-type\";\nconst _t = \"tagging\";\nconst _to = \"torrent\";\nconst _u = \"uploads\";\nconst _uI = \"uploadId\";\nconst _uim = \"upload-id-marker\";\nconst _v = \"versioning\";\nconst _vI = \"versionId\";\nconst _ve = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>';\nconst _ver = \"versions\";\nconst _vim = \"version-id-marker\";\nconst _w = \"website\";\nconst _x = \"xsi:type\";\nconst _xaa = \"x-amz-acl\";\nconst _xaad = \"x-amz-abort-date\";\nconst _xaapa = \"x-amz-access-point-alias\";\nconst _xaari = \"x-amz-abort-rule-id\";\nconst _xaas = \"x-amz-archive-status\";\nconst _xabgr = \"x-amz-bypass-governance-retention\";\nconst _xabln = \"x-amz-bucket-location-name\";\nconst _xablt = \"x-amz-bucket-location-type\";\nconst _xabole = \"x-amz-bucket-object-lock-enabled\";\nconst _xabolt = \"x-amz-bucket-object-lock-token\";\nconst _xabr = \"x-amz-bucket-region\";\nconst _xaca = \"x-amz-checksum-algorithm\";\nconst _xacc = \"x-amz-checksum-crc32\";\nconst _xacc_ = \"x-amz-checksum-crc32c\";\nconst _xacm = \"x-amz-checksum-mode\";\nconst _xacrsba = \"x-amz-confirm-remove-self-bucket-access\";\nconst _xacs = \"x-amz-checksum-sha1\";\nconst _xacs_ = \"x-amz-checksum-sha256\";\nconst _xacs__ = \"x-amz-copy-source\";\nconst _xacsim = \"x-amz-copy-source-if-match\";\nconst _xacsims = \"x-amz-copy-source-if-modified-since\";\nconst _xacsinm = \"x-amz-copy-source-if-none-match\";\nconst _xacsius = \"x-amz-copy-source-if-unmodified-since\";\nconst _xacsm = \"x-amz-create-session-mode\";\nconst _xacsr = \"x-amz-copy-source-range\";\nconst _xacssseca = \"x-amz-copy-source-server-side-encryption-customer-algorithm\";\nconst _xacssseck = \"x-amz-copy-source-server-side-encryption-customer-key\";\nconst _xacssseckm = \"x-amz-copy-source-server-side-encryption-customer-key-md5\";\nconst _xacsvi = \"x-amz-copy-source-version-id\";\nconst _xadm = \"x-amz-delete-marker\";\nconst _xae = \"x-amz-expiration\";\nconst _xaebo = \"x-amz-expected-bucket-owner\";\nconst _xafec = \"x-amz-fwd-error-code\";\nconst _xafem = \"x-amz-fwd-error-message\";\nconst _xafhar = \"x-amz-fwd-header-accept-ranges\";\nconst _xafhcc = \"x-amz-fwd-header-cache-control\";\nconst _xafhcd = \"x-amz-fwd-header-content-disposition\";\nconst _xafhce = \"x-amz-fwd-header-content-encoding\";\nconst _xafhcl = \"x-amz-fwd-header-content-language\";\nconst _xafhcr = \"x-amz-fwd-header-content-range\";\nconst _xafhct = \"x-amz-fwd-header-content-type\";\nconst _xafhe = \"x-amz-fwd-header-etag\";\nconst _xafhe_ = \"x-amz-fwd-header-expires\";\nconst _xafhlm = \"x-amz-fwd-header-last-modified\";\nconst _xafhxacc = \"x-amz-fwd-header-x-amz-checksum-crc32\";\nconst _xafhxacc_ = \"x-amz-fwd-header-x-amz-checksum-crc32c\";\nconst _xafhxacs = \"x-amz-fwd-header-x-amz-checksum-sha1\";\nconst _xafhxacs_ = \"x-amz-fwd-header-x-amz-checksum-sha256\";\nconst _xafhxadm = \"x-amz-fwd-header-x-amz-delete-marker\";\nconst _xafhxae = \"x-amz-fwd-header-x-amz-expiration\";\nconst _xafhxamm = \"x-amz-fwd-header-x-amz-missing-meta\";\nconst _xafhxampc = \"x-amz-fwd-header-x-amz-mp-parts-count\";\nconst _xafhxaollh = \"x-amz-fwd-header-x-amz-object-lock-legal-hold\";\nconst _xafhxaolm = \"x-amz-fwd-header-x-amz-object-lock-mode\";\nconst _xafhxaolrud = \"x-amz-fwd-header-x-amz-object-lock-retain-until-date\";\nconst _xafhxar = \"x-amz-fwd-header-x-amz-restore\";\nconst _xafhxarc = \"x-amz-fwd-header-x-amz-request-charged\";\nconst _xafhxars = \"x-amz-fwd-header-x-amz-replication-status\";\nconst _xafhxasc = \"x-amz-fwd-header-x-amz-storage-class\";\nconst _xafhxasse = \"x-amz-fwd-header-x-amz-server-side-encryption\";\nconst _xafhxasseakki = \"x-amz-fwd-header-x-amz-server-side-encryption-aws-kms-key-id\";\nconst _xafhxassebke = \"x-amz-fwd-header-x-amz-server-side-encryption-bucket-key-enabled\";\nconst _xafhxasseca = \"x-amz-fwd-header-x-amz-server-side-encryption-customer-algorithm\";\nconst _xafhxasseckm = \"x-amz-fwd-header-x-amz-server-side-encryption-customer-key-md5\";\nconst _xafhxatc = \"x-amz-fwd-header-x-amz-tagging-count\";\nconst _xafhxavi = \"x-amz-fwd-header-x-amz-version-id\";\nconst _xafs = \"x-amz-fwd-status\";\nconst _xagfc = \"x-amz-grant-full-control\";\nconst _xagr = \"x-amz-grant-read\";\nconst _xagra = \"x-amz-grant-read-acp\";\nconst _xagw = \"x-amz-grant-write\";\nconst _xagwa = \"x-amz-grant-write-acp\";\nconst _xam = \"x-amz-mfa\";\nconst _xamd = \"x-amz-metadata-directive\";\nconst _xamm = \"x-amz-missing-meta\";\nconst _xamp = \"x-amz-max-parts\";\nconst _xampc = \"x-amz-mp-parts-count\";\nconst _xaoa = \"x-amz-object-attributes\";\nconst _xaollh = \"x-amz-object-lock-legal-hold\";\nconst _xaolm = \"x-amz-object-lock-mode\";\nconst _xaolrud = \"x-amz-object-lock-retain-until-date\";\nconst _xaoo = \"x-amz-object-ownership\";\nconst _xaooa = \"x-amz-optional-object-attributes\";\nconst _xapnm = \"x-amz-part-number-marker\";\nconst _xar = \"x-amz-restore\";\nconst _xarc = \"x-amz-request-charged\";\nconst _xarop = \"x-amz-restore-output-path\";\nconst _xarp = \"x-amz-request-payer\";\nconst _xarr = \"x-amz-request-route\";\nconst _xars = \"x-amz-replication-status\";\nconst _xart = \"x-amz-request-token\";\nconst _xasc = \"x-amz-storage-class\";\nconst _xasca = \"x-amz-sdk-checksum-algorithm\";\nconst _xasdv = \"x-amz-skip-destination-validation\";\nconst _xasebo = \"x-amz-source-expected-bucket-owner\";\nconst _xasse = \"x-amz-server-side-encryption\";\nconst _xasseakki = \"x-amz-server-side-encryption-aws-kms-key-id\";\nconst _xassebke = \"x-amz-server-side-encryption-bucket-key-enabled\";\nconst _xassec = \"x-amz-server-side-encryption-context\";\nconst _xasseca = \"x-amz-server-side-encryption-customer-algorithm\";\nconst _xasseck = \"x-amz-server-side-encryption-customer-key\";\nconst _xasseckm = \"x-amz-server-side-encryption-customer-key-md5\";\nconst _xat = \"x-amz-tagging\";\nconst _xatc = \"x-amz-tagging-count\";\nconst _xatd = \"x-amz-tagging-directive\";\nconst _xavi = \"x-amz-version-id\";\nconst _xawrl = \"x-amz-website-redirect-location\";\nconst _xi = \"x-id\";\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { CreateSessionOutputFilterSensitiveLog } from \"../models/models_0\";\nimport { de_CreateSessionCommand, se_CreateSessionCommand } from \"../protocols/Aws_restXml\";\nexport { $Command };\nexport class CreateSessionCommand extends $Command\n .classBuilder()\n .ep({\n ...commonParams,\n DisableS3ExpressSessionAuth: { type: \"staticContextParams\", value: true },\n Bucket: { type: \"contextParams\", name: \"Bucket\" },\n})\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"AmazonS3\", \"CreateSession\", {})\n .n(\"S3Client\", \"CreateSessionCommand\")\n .f(void 0, CreateSessionOutputFilterSensitiveLog)\n .ser(se_CreateSessionCommand)\n .de(de_CreateSessionCommand)\n .build() {\n}\n","import { SourceData } from \"@aws-sdk/types\";\n\nexport function isEmptyData(data: SourceData): boolean {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n\n return data.byteLength === 0;\n}\n","export const SHA_1_HASH: { name: \"SHA-1\" } = { name: \"SHA-1\" };\n\nexport const SHA_1_HMAC_ALGO: { name: \"HMAC\"; hash: { name: \"SHA-1\" } } = {\n name: \"HMAC\",\n hash: SHA_1_HASH,\n};\n\nexport const EMPTY_DATA_SHA_1 = new Uint8Array([\n 218,\n 57,\n 163,\n 238,\n 94,\n 107,\n 75,\n 13,\n 50,\n 85,\n 191,\n 239,\n 149,\n 96,\n 24,\n 144,\n 175,\n 216,\n 7,\n 9,\n]);\n","const fallbackWindow = {};\nexport function locateWindow() {\n if (typeof window !== \"undefined\") {\n return window;\n }\n else if (typeof self !== \"undefined\") {\n return self;\n }\n return fallbackWindow;\n}\n","import { Checksum, SourceData } from \"@aws-sdk/types\";\nimport { fromUtf8 } from \"@smithy/util-utf8\";\nimport { isEmptyData } from \"./isEmptyData\";\nimport { EMPTY_DATA_SHA_1, SHA_1_HASH, SHA_1_HMAC_ALGO } from \"./constants\";\nimport { locateWindow } from \"@aws-sdk/util-locate-window\";\n\nexport class Sha1 implements Checksum {\n private readonly key: Promise<CryptoKey> | undefined;\n private toHash: Uint8Array = new Uint8Array(0);\n\n constructor(secret?: SourceData) {\n if (secret !== void 0) {\n this.key = new Promise((resolve, reject) => {\n locateWindow()\n .crypto.subtle.importKey(\n \"raw\",\n convertToBuffer(secret),\n SHA_1_HMAC_ALGO,\n false,\n [\"sign\"]\n )\n .then(resolve, reject);\n });\n this.key.catch(() => {});\n }\n }\n\n update(data: SourceData): void {\n if (isEmptyData(data)) {\n return;\n }\n\n const update = convertToBuffer(data);\n const typedArray = new Uint8Array(\n this.toHash.byteLength + update.byteLength\n );\n typedArray.set(this.toHash, 0);\n typedArray.set(update, this.toHash.byteLength);\n this.toHash = typedArray;\n }\n\n digest(): Promise<Uint8Array> {\n if (this.key) {\n return this.key.then((key) =>\n locateWindow()\n .crypto.subtle.sign(SHA_1_HMAC_ALGO, key, this.toHash)\n .then((data) => new Uint8Array(data))\n );\n }\n\n if (isEmptyData(this.toHash)) {\n return Promise.resolve(EMPTY_DATA_SHA_1);\n }\n\n return Promise.resolve()\n .then(() => locateWindow().crypto.subtle.digest(SHA_1_HASH, this.toHash))\n .then((data) => Promise.resolve(new Uint8Array(data)));\n }\n\n reset(): void {\n this.toHash = new Uint8Array(0);\n }\n}\n\nfunction convertToBuffer(data: SourceData): Uint8Array {\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(\n data.buffer,\n data.byteOffset,\n data.byteLength / Uint8Array.BYTES_PER_ELEMENT\n );\n }\n\n return new Uint8Array(data);\n}\n","export const fromUtf8 = (input) => new TextEncoder().encode(input);\n","type SubtleCryptoMethod =\n | \"decrypt\"\n | \"digest\"\n | \"encrypt\"\n | \"exportKey\"\n | \"generateKey\"\n | \"importKey\"\n | \"sign\"\n | \"verify\";\n\nconst subtleCryptoMethods: Array<SubtleCryptoMethod> = [\n \"decrypt\",\n \"digest\",\n \"encrypt\",\n \"exportKey\",\n \"generateKey\",\n \"importKey\",\n \"sign\",\n \"verify\"\n];\n\nexport function supportsWebCrypto(window: Window): boolean {\n if (\n supportsSecureRandom(window) &&\n typeof window.crypto.subtle === \"object\"\n ) {\n const { subtle } = window.crypto;\n\n return supportsSubtleCrypto(subtle);\n }\n\n return false;\n}\n\nexport function supportsSecureRandom(window: Window): boolean {\n if (typeof window === \"object\" && typeof window.crypto === \"object\") {\n const { getRandomValues } = window.crypto;\n\n return typeof getRandomValues === \"function\";\n }\n\n return false;\n}\n\nexport function supportsSubtleCrypto(subtle: SubtleCrypto) {\n return (\n subtle &&\n subtleCryptoMethods.every(\n methodName => typeof subtle[methodName] === \"function\"\n )\n );\n}\n\nexport async function supportsZeroByteGCM(subtle: SubtleCrypto) {\n if (!supportsSubtleCrypto(subtle)) return false;\n try {\n const key = await subtle.generateKey(\n { name: \"AES-GCM\", length: 128 },\n false,\n [\"encrypt\"]\n );\n const zeroByteAuthTag = await subtle.encrypt(\n {\n name: \"AES-GCM\",\n iv: new Uint8Array(Array(12)),\n additionalData: new Uint8Array(Array(16)),\n tagLength: 128\n },\n key,\n new Uint8Array(0)\n );\n return zeroByteAuthTag.byteLength === 16;\n } catch {\n return false;\n }\n}\n","export const fromUtf8 = (input) => new TextEncoder().encode(input);\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\nimport { fromUtf8 as fromUtf8Browser } from \"@smithy/util-utf8\";\n\n// Quick polyfill\nconst fromUtf8 =\n typeof Buffer !== \"undefined\" && Buffer.from\n ? (input: string) => Buffer.from(input, \"utf8\")\n : fromUtf8Browser;\n\nexport function convertToBuffer(data: SourceData): Uint8Array {\n // Already a Uint8, do nothing\n if (data instanceof Uint8Array) return data;\n\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(\n data.buffer,\n data.byteOffset,\n data.byteLength / Uint8Array.BYTES_PER_ELEMENT\n );\n }\n\n return new Uint8Array(data);\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\n\nexport function isEmptyData(data: SourceData): boolean {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n\n return data.byteLength === 0;\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function numToUint8(num: number) {\n return new Uint8Array([\n (num & 0xff000000) >> 24,\n (num & 0x00ff0000) >> 16,\n (num & 0x0000ff00) >> 8,\n num & 0x000000ff,\n ]);\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// IE 11 does not support Array.from, so we do it manually\nexport function uint32ArrayFrom(a_lookUpTable: Array<number>): Uint32Array {\n if (!Uint32Array.from) {\n const return_array = new Uint32Array(a_lookUpTable.length)\n let a_index = 0\n while (a_index < a_lookUpTable.length) {\n return_array[a_index] = a_lookUpTable[a_index]\n a_index += 1\n }\n return return_array\n }\n return Uint32Array.from(a_lookUpTable)\n}\n","import { Sha1 as WebCryptoSha1 } from \"./webCryptoSha1\";\nimport { Checksum, SourceData } from \"@aws-sdk/types\";\nimport { supportsWebCrypto } from \"@aws-crypto/supports-web-crypto\";\nimport { locateWindow } from \"@aws-sdk/util-locate-window\";\nimport { convertToBuffer } from \"@aws-crypto/util\";\n\nexport class Sha1 implements Checksum {\n private hash: Checksum;\n\n constructor(secret?: SourceData) {\n if (supportsWebCrypto(locateWindow())) {\n this.hash = new WebCryptoSha1(secret);\n } else {\n throw new Error(\"SHA1 not supported\");\n }\n }\n\n update(data: SourceData, encoding?: \"utf8\" | \"ascii\" | \"latin1\"): void {\n this.hash.update(convertToBuffer(data));\n }\n\n digest(): Promise<Uint8Array> {\n return this.hash.digest();\n }\n\n reset(): void {\n this.hash.reset();\n }\n}\n","export const SHA_256_HASH: { name: \"SHA-256\" } = { name: \"SHA-256\" };\n\nexport const SHA_256_HMAC_ALGO: { name: \"HMAC\"; hash: { name: \"SHA-256\" } } = {\n name: \"HMAC\",\n hash: SHA_256_HASH\n};\n\nexport const EMPTY_DATA_SHA_256 = new Uint8Array([\n 227,\n 176,\n 196,\n 66,\n 152,\n 252,\n 28,\n 20,\n 154,\n 251,\n 244,\n 200,\n 153,\n 111,\n 185,\n 36,\n 39,\n 174,\n 65,\n 228,\n 100,\n 155,\n 147,\n 76,\n 164,\n 149,\n 153,\n 27,\n 120,\n 82,\n 184,\n 85\n]);\n","import { Checksum, SourceData } from \"@aws-sdk/types\";\nimport { isEmptyData, convertToBuffer } from \"@aws-crypto/util\";\nimport {\n EMPTY_DATA_SHA_256,\n SHA_256_HASH,\n SHA_256_HMAC_ALGO,\n} from \"./constants\";\nimport { locateWindow } from \"@aws-sdk/util-locate-window\";\n\nexport class Sha256 implements Checksum {\n private readonly secret?: SourceData;\n private key: Promise<CryptoKey> | undefined;\n private toHash: Uint8Array = new Uint8Array(0);\n\n constructor(secret?: SourceData) {\n this.secret = secret;\n this.reset();\n }\n\n update(data: SourceData): void {\n if (isEmptyData(data)) {\n return;\n }\n\n const update = convertToBuffer(data);\n const typedArray = new Uint8Array(\n this.toHash.byteLength + update.byteLength\n );\n typedArray.set(this.toHash, 0);\n typedArray.set(update, this.toHash.byteLength);\n this.toHash = typedArray;\n }\n\n digest(): Promise<Uint8Array> {\n if (this.key) {\n return this.key.then((key) =>\n locateWindow()\n .crypto.subtle.sign(SHA_256_HMAC_ALGO, key, this.toHash)\n .then((data) => new Uint8Array(data))\n );\n }\n\n if (isEmptyData(this.toHash)) {\n return Promise.resolve(EMPTY_DATA_SHA_256);\n }\n\n return Promise.resolve()\n .then(() =>\n locateWindow().crypto.subtle.digest(SHA_256_HASH, this.toHash)\n )\n .then((data) => Promise.resolve(new Uint8Array(data)));\n }\n\n reset(): void {\n this.toHash = new Uint8Array(0);\n if (this.secret && this.secret !== void 0) {\n this.key = new Promise((resolve, reject) => {\n locateWindow()\n .crypto.subtle.importKey(\n \"raw\",\n convertToBuffer(this.secret as SourceData),\n SHA_256_HMAC_ALGO,\n false,\n [\"sign\"]\n )\n .then(resolve, reject);\n });\n this.key.catch(() => {});\n }\n }\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/**\n * @internal\n */\nexport const BLOCK_SIZE: number = 64;\n\n/**\n * @internal\n */\nexport const DIGEST_LENGTH: number = 32;\n\n/**\n * @internal\n */\nexport const KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n\n/**\n * @internal\n */\nexport const INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n];\n\n/**\n * @internal\n */\nexport const MAX_HASHABLE_LENGTH = 2 ** 53 - 1;\n","import {\n BLOCK_SIZE,\n DIGEST_LENGTH,\n INIT,\n KEY,\n MAX_HASHABLE_LENGTH\n} from \"./constants\";\n\n/**\n * @internal\n */\nexport class RawSha256 {\n private state: Int32Array = Int32Array.from(INIT);\n private temp: Int32Array = new Int32Array(64);\n private buffer: Uint8Array = new Uint8Array(64);\n private bufferLength: number = 0;\n private bytesHashed: number = 0;\n\n /**\n * @internal\n */\n finished: boolean = false;\n\n update(data: Uint8Array): void {\n if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n\n let position = 0;\n let { byteLength } = data;\n this.bytesHashed += byteLength;\n\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n }\n\n digest(): Uint8Array {\n if (!this.finished) {\n const bitsHashed = this.bytesHashed * 8;\n const bufferView = new DataView(\n this.buffer.buffer,\n this.buffer.byteOffset,\n this.buffer.byteLength\n );\n\n const undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (let i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n\n for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(\n BLOCK_SIZE - 8,\n Math.floor(bitsHashed / 0x100000000),\n true\n );\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n\n this.hashBuffer();\n\n this.finished = true;\n }\n\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n const out = new Uint8Array(DIGEST_LENGTH);\n for (let i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n\n return out;\n }\n\n private hashBuffer(): void {\n const { buffer, state } = this;\n\n let state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] =\n ((buffer[i * 4] & 0xff) << 24) |\n ((buffer[i * 4 + 1] & 0xff) << 16) |\n ((buffer[i * 4 + 2] & 0xff) << 8) |\n (buffer[i * 4 + 3] & 0xff);\n } else {\n let u = this.temp[i - 2];\n const t1 =\n ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);\n\n u = this.temp[i - 15];\n const t2 =\n ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);\n\n this.temp[i] =\n ((t1 + this.temp[i - 7]) | 0) + ((t2 + this.temp[i - 16]) | 0);\n }\n\n const t1 =\n ((((((state4 >>> 6) | (state4 << 26)) ^\n ((state4 >>> 11) | (state4 << 21)) ^\n ((state4 >>> 25) | (state4 << 7))) +\n ((state4 & state5) ^ (~state4 & state6))) |\n 0) +\n ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) |\n 0;\n\n const t2 =\n ((((state0 >>> 2) | (state0 << 30)) ^\n ((state0 >>> 13) | (state0 << 19)) ^\n ((state0 >>> 22) | (state0 << 10))) +\n ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) |\n 0;\n\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n }\n}\n","import { BLOCK_SIZE } from \"./constants\";\nimport { RawSha256 } from \"./RawSha256\";\nimport { Checksum, SourceData } from \"@aws-sdk/types\";\nimport { isEmptyData, convertToBuffer } from \"@aws-crypto/util\";\n\nexport class Sha256 implements Checksum {\n private readonly secret?: SourceData;\n private hash: RawSha256;\n private outer?: RawSha256;\n private error: any;\n\n constructor(secret?: SourceData) {\n this.secret = secret;\n this.hash = new RawSha256();\n this.reset();\n }\n\n update(toHash: SourceData): void {\n if (isEmptyData(toHash) || this.error) {\n return;\n }\n\n try {\n this.hash.update(convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n }\n\n /* This synchronous method keeps compatibility\n * with the v2 aws-sdk.\n */\n digestSync(): Uint8Array {\n if (this.error) {\n throw this.error;\n }\n\n if (this.outer) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest();\n }\n\n return this.hash.digest();\n }\n\n /* The underlying digest method here is synchronous.\n * To keep the same interface with the other hash functions\n * the default is to expose this as an async method.\n * However, it can sometimes be useful to have a sync method.\n */\n async digest(): Promise<Uint8Array> {\n return this.digestSync();\n }\n\n reset(): void {\n this.hash = new RawSha256();\n if (this.secret) {\n this.outer = new RawSha256();\n const inner = bufferFromSecret(this.secret);\n const outer = new Uint8Array(BLOCK_SIZE);\n outer.set(inner);\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer);\n\n // overwrite the copied key in memory\n for (let i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n }\n }\n}\n\nfunction bufferFromSecret(secret: SourceData): Uint8Array {\n let input = convertToBuffer(secret);\n\n if (input.byteLength > BLOCK_SIZE) {\n const bufferHash = new RawSha256();\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n\n const buffer = new Uint8Array(BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n","import { Sha256 as WebCryptoSha256 } from \"./webCryptoSha256\";\nimport { Sha256 as JsSha256 } from \"@aws-crypto/sha256-js\";\nimport { Checksum, SourceData } from \"@aws-sdk/types\";\nimport { supportsWebCrypto } from \"@aws-crypto/supports-web-crypto\";\nimport { locateWindow } from \"@aws-sdk/util-locate-window\";\nimport { convertToBuffer } from \"@aws-crypto/util\";\n\nexport class Sha256 implements Checksum {\n private hash: Checksum;\n\n constructor(secret?: SourceData) {\n if (supportsWebCrypto(locateWindow())) {\n this.hash = new WebCryptoSha256(secret);\n } else {\n this.hash = new JsSha256(secret);\n }\n }\n\n update(data: SourceData, encoding?: \"utf8\" | \"ascii\" | \"latin1\"): void {\n this.hash.update(convertToBuffer(data));\n }\n\n digest(): Promise<Uint8Array> {\n return this.hash.digest();\n }\n\n reset(): void {\n this.hash.reset();\n }\n}\n","import bowser from \"bowser\";\nexport const defaultUserAgent = ({ serviceId, clientVersion }) => async () => {\n const parsedUA = typeof window !== \"undefined\" && window?.navigator?.userAgent\n ? bowser.parse(window.navigator.userAgent)\n : undefined;\n const sections = [\n [\"aws-sdk-js\", clientVersion],\n [\"ua\", \"2.0\"],\n [`os/${parsedUA?.os?.name || \"other\"}`, parsedUA?.os?.version],\n [\"lang/js\"],\n [\"md/browser\", `${parsedUA?.browser?.name ?? \"unknown\"}_${parsedUA?.browser?.version ?? \"unknown\"}`],\n ];\n if (serviceId) {\n sections.push([`api/${serviceId}`, clientVersion]);\n }\n return sections;\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData, Checksum } from \"@aws-sdk/types\";\nimport { convertToBuffer, isEmptyData, numToUint8 } from \"@aws-crypto/util\";\nimport { Crc32 } from \"./index\";\n\nexport class AwsCrc32 implements Checksum {\n private crc32 = new Crc32();\n\n update(toHash: SourceData) {\n if (isEmptyData(toHash)) return;\n\n this.crc32.update(convertToBuffer(toHash));\n }\n\n async digest(): Promise<Uint8Array> {\n return numToUint8(this.crc32.digest());\n }\n\n reset(): void {\n this.crc32 = new Crc32();\n }\n}\n","import {uint32ArrayFrom} from \"@aws-crypto/util\";\n\nexport function crc32(data: Uint8Array): number {\n return new Crc32().update(data).digest();\n}\n\nexport class Crc32 {\n private checksum = 0xffffffff;\n\n update(data: Uint8Array): this {\n for (const byte of data) {\n this.checksum =\n (this.checksum >>> 8) ^ lookupTable[(this.checksum ^ byte) & 0xff];\n }\n\n return this;\n }\n\n digest(): number {\n return (this.checksum ^ 0xffffffff) >>> 0;\n }\n}\n\n// prettier-ignore\nconst a_lookUpTable = [\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,\n 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,\n 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,\n 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,\n 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,\n 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,\n 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,\n 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,\n 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,\n 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,\n 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,\n 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,\n 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,\n 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,\n 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,\n 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,\n 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,\n 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,\n 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,\n 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,\n 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,\n 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,\n 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,\n 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,\n 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,\n 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,\n 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D,\n];\nconst lookupTable: Uint32Array = uint32ArrayFrom(a_lookUpTable)\nexport { AwsCrc32 } from \"./aws_crc32\";\n","import { toHex } from \"@smithy/util-hex-encoding\";\nexport class Int64 {\n constructor(bytes) {\n this.bytes = bytes;\n if (bytes.byteLength !== 8) {\n throw new Error(\"Int64 buffers must be exactly 8 bytes\");\n }\n }\n static fromNumber(number) {\n if (number > 9223372036854776000 || number < -9223372036854776000) {\n throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`);\n }\n const bytes = new Uint8Array(8);\n for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) {\n bytes[i] = remaining;\n }\n if (number < 0) {\n negate(bytes);\n }\n return new Int64(bytes);\n }\n valueOf() {\n const bytes = this.bytes.slice(0);\n const negative = bytes[0] & 0b10000000;\n if (negative) {\n negate(bytes);\n }\n return parseInt(toHex(bytes), 16) * (negative ? -1 : 1);\n }\n toString() {\n return String(this.valueOf());\n }\n}\nfunction negate(bytes) {\n for (let i = 0; i < 8; i++) {\n bytes[i] ^= 0xff;\n }\n for (let i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0)\n break;\n }\n}\n","import { fromHex, toHex } from \"@smithy/util-hex-encoding\";\nimport { Int64 } from \"./Int64\";\nexport class HeaderMarshaller {\n constructor(toUtf8, fromUtf8) {\n this.toUtf8 = toUtf8;\n this.fromUtf8 = fromUtf8;\n }\n format(headers) {\n const chunks = [];\n for (const headerName of Object.keys(headers)) {\n const bytes = this.fromUtf8(headerName);\n chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName]));\n }\n const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0));\n let position = 0;\n for (const chunk of chunks) {\n out.set(chunk, position);\n position += chunk.byteLength;\n }\n return out;\n }\n formatHeaderValue(header) {\n switch (header.type) {\n case \"boolean\":\n return Uint8Array.from([header.value ? 0 : 1]);\n case \"byte\":\n return Uint8Array.from([2, header.value]);\n case \"short\":\n const shortView = new DataView(new ArrayBuffer(3));\n shortView.setUint8(0, 3);\n shortView.setInt16(1, header.value, false);\n return new Uint8Array(shortView.buffer);\n case \"integer\":\n const intView = new DataView(new ArrayBuffer(5));\n intView.setUint8(0, 4);\n intView.setInt32(1, header.value, false);\n return new Uint8Array(intView.buffer);\n case \"long\":\n const longBytes = new Uint8Array(9);\n longBytes[0] = 5;\n longBytes.set(header.value.bytes, 1);\n return longBytes;\n case \"binary\":\n const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength));\n binView.setUint8(0, 6);\n binView.setUint16(1, header.value.byteLength, false);\n const binBytes = new Uint8Array(binView.buffer);\n binBytes.set(header.value, 3);\n return binBytes;\n case \"string\":\n const utf8Bytes = this.fromUtf8(header.value);\n const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength));\n strView.setUint8(0, 7);\n strView.setUint16(1, utf8Bytes.byteLength, false);\n const strBytes = new Uint8Array(strView.buffer);\n strBytes.set(utf8Bytes, 3);\n return strBytes;\n case \"timestamp\":\n const tsBytes = new Uint8Array(9);\n tsBytes[0] = 8;\n tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1);\n return tsBytes;\n case \"uuid\":\n if (!UUID_PATTERN.test(header.value)) {\n throw new Error(`Invalid UUID received: ${header.value}`);\n }\n const uuidBytes = new Uint8Array(17);\n uuidBytes[0] = 9;\n uuidBytes.set(fromHex(header.value.replace(/\\-/g, \"\")), 1);\n return uuidBytes;\n }\n }\n parse(headers) {\n const out = {};\n let position = 0;\n while (position < headers.byteLength) {\n const nameLength = headers.getUint8(position++);\n const name = this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, nameLength));\n position += nameLength;\n switch (headers.getUint8(position++)) {\n case 0:\n out[name] = {\n type: BOOLEAN_TAG,\n value: true,\n };\n break;\n case 1:\n out[name] = {\n type: BOOLEAN_TAG,\n value: false,\n };\n break;\n case 2:\n out[name] = {\n type: BYTE_TAG,\n value: headers.getInt8(position++),\n };\n break;\n case 3:\n out[name] = {\n type: SHORT_TAG,\n value: headers.getInt16(position, false),\n };\n position += 2;\n break;\n case 4:\n out[name] = {\n type: INT_TAG,\n value: headers.getInt32(position, false),\n };\n position += 4;\n break;\n case 5:\n out[name] = {\n type: LONG_TAG,\n value: new Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)),\n };\n position += 8;\n break;\n case 6:\n const binaryLength = headers.getUint16(position, false);\n position += 2;\n out[name] = {\n type: BINARY_TAG,\n value: new Uint8Array(headers.buffer, headers.byteOffset + position, binaryLength),\n };\n position += binaryLength;\n break;\n case 7:\n const stringLength = headers.getUint16(position, false);\n position += 2;\n out[name] = {\n type: STRING_TAG,\n value: this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, stringLength)),\n };\n position += stringLength;\n break;\n case 8:\n out[name] = {\n type: TIMESTAMP_TAG,\n value: new Date(new Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)).valueOf()),\n };\n position += 8;\n break;\n case 9:\n const uuidBytes = new Uint8Array(headers.buffer, headers.byteOffset + position, 16);\n position += 16;\n out[name] = {\n type: UUID_TAG,\n value: `${toHex(uuidBytes.subarray(0, 4))}-${toHex(uuidBytes.subarray(4, 6))}-${toHex(uuidBytes.subarray(6, 8))}-${toHex(uuidBytes.subarray(8, 10))}-${toHex(uuidBytes.subarray(10))}`,\n };\n break;\n default:\n throw new Error(`Unrecognized header type tag`);\n }\n }\n return out;\n }\n}\nvar HEADER_VALUE_TYPE;\n(function (HEADER_VALUE_TYPE) {\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"boolTrue\"] = 0] = \"boolTrue\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"boolFalse\"] = 1] = \"boolFalse\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"byte\"] = 2] = \"byte\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"short\"] = 3] = \"short\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"integer\"] = 4] = \"integer\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"long\"] = 5] = \"long\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"byteArray\"] = 6] = \"byteArray\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"string\"] = 7] = \"string\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"timestamp\"] = 8] = \"timestamp\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"uuid\"] = 9] = \"uuid\";\n})(HEADER_VALUE_TYPE || (HEADER_VALUE_TYPE = {}));\nconst BOOLEAN_TAG = \"boolean\";\nconst BYTE_TAG = \"byte\";\nconst SHORT_TAG = \"short\";\nconst INT_TAG = \"integer\";\nconst LONG_TAG = \"long\";\nconst BINARY_TAG = \"binary\";\nconst STRING_TAG = \"string\";\nconst TIMESTAMP_TAG = \"timestamp\";\nconst UUID_TAG = \"uuid\";\nconst UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;\n","import { Crc32 } from \"@aws-crypto/crc32\";\nimport { HeaderMarshaller } from \"./HeaderMarshaller\";\nimport { splitMessage } from \"./splitMessage\";\nexport class EventStreamCodec {\n constructor(toUtf8, fromUtf8) {\n this.headerMarshaller = new HeaderMarshaller(toUtf8, fromUtf8);\n this.messageBuffer = [];\n this.isEndOfStream = false;\n }\n feed(message) {\n this.messageBuffer.push(this.decode(message));\n }\n endOfStream() {\n this.isEndOfStream = true;\n }\n getMessage() {\n const message = this.messageBuffer.pop();\n const isEndOfStream = this.isEndOfStream;\n return {\n getMessage() {\n return message;\n },\n isEndOfStream() {\n return isEndOfStream;\n },\n };\n }\n getAvailableMessages() {\n const messages = this.messageBuffer;\n this.messageBuffer = [];\n const isEndOfStream = this.isEndOfStream;\n return {\n getMessages() {\n return messages;\n },\n isEndOfStream() {\n return isEndOfStream;\n },\n };\n }\n encode({ headers: rawHeaders, body }) {\n const headers = this.headerMarshaller.format(rawHeaders);\n const length = headers.byteLength + body.byteLength + 16;\n const out = new Uint8Array(length);\n const view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n const checksum = new Crc32();\n view.setUint32(0, length, false);\n view.setUint32(4, headers.byteLength, false);\n view.setUint32(8, checksum.update(out.subarray(0, 8)).digest(), false);\n out.set(headers, 12);\n out.set(body, headers.byteLength + 12);\n view.setUint32(length - 4, checksum.update(out.subarray(8, length - 4)).digest(), false);\n return out;\n }\n decode(message) {\n const { headers, body } = splitMessage(message);\n return { headers: this.headerMarshaller.parse(headers), body };\n }\n formatHeaders(rawHeaders) {\n return this.headerMarshaller.format(rawHeaders);\n }\n}\n","import { Crc32 } from \"@aws-crypto/crc32\";\nconst PRELUDE_MEMBER_LENGTH = 4;\nconst PRELUDE_LENGTH = PRELUDE_MEMBER_LENGTH * 2;\nconst CHECKSUM_LENGTH = 4;\nconst MINIMUM_MESSAGE_LENGTH = PRELUDE_LENGTH + CHECKSUM_LENGTH * 2;\nexport function splitMessage({ byteLength, byteOffset, buffer }) {\n if (byteLength < MINIMUM_MESSAGE_LENGTH) {\n throw new Error(\"Provided message too short to accommodate event stream message overhead\");\n }\n const view = new DataView(buffer, byteOffset, byteLength);\n const messageLength = view.getUint32(0, false);\n if (byteLength !== messageLength) {\n throw new Error(\"Reported message length does not match received message length\");\n }\n const headerLength = view.getUint32(PRELUDE_MEMBER_LENGTH, false);\n const expectedPreludeChecksum = view.getUint32(PRELUDE_LENGTH, false);\n const expectedMessageChecksum = view.getUint32(byteLength - CHECKSUM_LENGTH, false);\n const checksummer = new Crc32().update(new Uint8Array(buffer, byteOffset, PRELUDE_LENGTH));\n if (expectedPreludeChecksum !== checksummer.digest()) {\n throw new Error(`The prelude checksum specified in the message (${expectedPreludeChecksum}) does not match the calculated CRC32 checksum (${checksummer.digest()})`);\n }\n checksummer.update(new Uint8Array(buffer, byteOffset + PRELUDE_LENGTH, byteLength - (PRELUDE_LENGTH + CHECKSUM_LENGTH)));\n if (expectedMessageChecksum !== checksummer.digest()) {\n throw new Error(`The message checksum (${checksummer.digest()}) did not match the expected value of ${expectedMessageChecksum}`);\n }\n return {\n headers: new DataView(buffer, byteOffset + PRELUDE_LENGTH + CHECKSUM_LENGTH, headerLength),\n body: new Uint8Array(buffer, byteOffset + PRELUDE_LENGTH + CHECKSUM_LENGTH + headerLength, messageLength - headerLength - (PRELUDE_LENGTH + CHECKSUM_LENGTH + CHECKSUM_LENGTH)),\n };\n}\n","import OverloadYield from \"./OverloadYield.js\";\nexport default function _awaitAsyncGenerator(value) {\n return new OverloadYield(value, 0);\n}","export default function _asyncIterator(iterable) {\n var method,\n async,\n sync,\n retry = 2;\n for (\"undefined\" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) {\n if (async && null != (method = iterable[async])) return method.call(iterable);\n if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable));\n async = \"@@asyncIterator\", sync = \"@@iterator\";\n }\n throw new TypeError(\"Object is not async iterable\");\n}\nfunction AsyncFromSyncIterator(s) {\n function AsyncFromSyncIteratorContinuation(r) {\n if (Object(r) !== r) return Promise.reject(new TypeError(r + \" is not an object.\"));\n var done = r.done;\n return Promise.resolve(r.value).then(function (value) {\n return {\n value: value,\n done: done\n };\n });\n }\n return AsyncFromSyncIterator = function AsyncFromSyncIterator(s) {\n this.s = s, this.n = s.next;\n }, AsyncFromSyncIterator.prototype = {\n s: null,\n n: null,\n next: function next() {\n return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));\n },\n \"return\": function _return(value) {\n var ret = this.s[\"return\"];\n return void 0 === ret ? Promise.resolve({\n value: value,\n done: !0\n }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments));\n },\n \"throw\": function _throw(value) {\n var thr = this.s[\"return\"];\n return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments));\n }\n }, new AsyncFromSyncIterator(s);\n}","export class MessageDecoderStream {\n constructor(options) {\n this.options = options;\n }\n [Symbol.asyncIterator]() {\n return this.asyncIterator();\n }\n async *asyncIterator() {\n for await (const bytes of this.options.inputStream) {\n const decoded = this.options.decoder.decode(bytes);\n yield decoded;\n }\n }\n}\n","export class MessageEncoderStream {\n constructor(options) {\n this.options = options;\n }\n [Symbol.asyncIterator]() {\n return this.asyncIterator();\n }\n async *asyncIterator() {\n for await (const msg of this.options.messageStream) {\n const encoded = this.options.encoder.encode(msg);\n yield encoded;\n }\n if (this.options.includeEndFrame) {\n yield new Uint8Array(0);\n }\n }\n}\n","export class SmithyMessageDecoderStream {\n constructor(options) {\n this.options = options;\n }\n [Symbol.asyncIterator]() {\n return this.asyncIterator();\n }\n async *asyncIterator() {\n for await (const message of this.options.messageStream) {\n const deserialized = await this.options.deserializer(message);\n if (deserialized === undefined)\n continue;\n yield deserialized;\n }\n }\n}\n","export class SmithyMessageEncoderStream {\n constructor(options) {\n this.options = options;\n }\n [Symbol.asyncIterator]() {\n return this.asyncIterator();\n }\n async *asyncIterator() {\n for await (const chunk of this.options.inputStream) {\n const payloadBuf = this.options.serializer(chunk);\n yield payloadBuf;\n }\n }\n}\n","export function getUnmarshalledStream(source, options) {\n const messageUnmarshaller = getMessageUnmarshaller(options.deserializer, options.toUtf8);\n return {\n [Symbol.asyncIterator]: async function* () {\n for await (const chunk of source) {\n const message = options.eventStreamCodec.decode(chunk);\n const type = await messageUnmarshaller(message);\n if (type === undefined)\n continue;\n yield type;\n }\n },\n };\n}\nexport function getMessageUnmarshaller(deserializer, toUtf8) {\n return async function (message) {\n const { value: messageType } = message.headers[\":message-type\"];\n if (messageType === \"error\") {\n const unmodeledError = new Error(message.headers[\":error-message\"].value || \"UnknownError\");\n unmodeledError.name = message.headers[\":error-code\"].value;\n throw unmodeledError;\n }\n else if (messageType === \"exception\") {\n const code = message.headers[\":exception-type\"].value;\n const exception = { [code]: message };\n const deserializedException = await deserializer(exception);\n if (deserializedException.$unknown) {\n const error = new Error(toUtf8(message.body));\n error.name = code;\n throw error;\n }\n throw deserializedException[code];\n }\n else if (messageType === \"event\") {\n const event = {\n [message.headers[\":event-type\"].value]: message,\n };\n const deserialized = await deserializer(event);\n if (deserialized.$unknown)\n return;\n return deserialized;\n }\n else {\n throw Error(`Unrecognizable event type: ${message.headers[\":event-type\"].value}`);\n }\n };\n}\n","import { EventStreamCodec, MessageDecoderStream, MessageEncoderStream, SmithyMessageDecoderStream, SmithyMessageEncoderStream, } from \"@smithy/eventstream-codec\";\nimport { getChunkedStream } from \"./getChunkedStream\";\nimport { getMessageUnmarshaller } from \"./getUnmarshalledStream\";\nexport class EventStreamMarshaller {\n constructor({ utf8Encoder, utf8Decoder }) {\n this.eventStreamCodec = new EventStreamCodec(utf8Encoder, utf8Decoder);\n this.utfEncoder = utf8Encoder;\n }\n deserialize(body, deserializer) {\n const inputStream = getChunkedStream(body);\n return new SmithyMessageDecoderStream({\n messageStream: new MessageDecoderStream({ inputStream, decoder: this.eventStreamCodec }),\n deserializer: getMessageUnmarshaller(deserializer, this.utfEncoder),\n });\n }\n serialize(inputStream, serializer) {\n return new MessageEncoderStream({\n messageStream: new SmithyMessageEncoderStream({ inputStream, serializer }),\n encoder: this.eventStreamCodec,\n includeEndFrame: true,\n });\n }\n}\n","export function getChunkedStream(source) {\n let currentMessageTotalLength = 0;\n let currentMessagePendingLength = 0;\n let currentMessage = null;\n let messageLengthBuffer = null;\n const allocateMessage = (size) => {\n if (typeof size !== \"number\") {\n throw new Error(\"Attempted to allocate an event message where size was not a number: \" + size);\n }\n currentMessageTotalLength = size;\n currentMessagePendingLength = 4;\n currentMessage = new Uint8Array(size);\n const currentMessageView = new DataView(currentMessage.buffer);\n currentMessageView.setUint32(0, size, false);\n };\n const iterator = async function* () {\n const sourceIterator = source[Symbol.asyncIterator]();\n while (true) {\n const { value, done } = await sourceIterator.next();\n if (done) {\n if (!currentMessageTotalLength) {\n return;\n }\n else if (currentMessageTotalLength === currentMessagePendingLength) {\n yield currentMessage;\n }\n else {\n throw new Error(\"Truncated event message received.\");\n }\n return;\n }\n const chunkLength = value.length;\n let currentOffset = 0;\n while (currentOffset < chunkLength) {\n if (!currentMessage) {\n const bytesRemaining = chunkLength - currentOffset;\n if (!messageLengthBuffer) {\n messageLengthBuffer = new Uint8Array(4);\n }\n const numBytesForTotal = Math.min(4 - currentMessagePendingLength, bytesRemaining);\n messageLengthBuffer.set(value.slice(currentOffset, currentOffset + numBytesForTotal), currentMessagePendingLength);\n currentMessagePendingLength += numBytesForTotal;\n currentOffset += numBytesForTotal;\n if (currentMessagePendingLength < 4) {\n break;\n }\n allocateMessage(new DataView(messageLengthBuffer.buffer).getUint32(0, false));\n messageLengthBuffer = null;\n }\n const numBytesToWrite = Math.min(currentMessageTotalLength - currentMessagePendingLength, chunkLength - currentOffset);\n currentMessage.set(value.slice(currentOffset, currentOffset + numBytesToWrite), currentMessagePendingLength);\n currentMessagePendingLength += numBytesToWrite;\n currentOffset += numBytesToWrite;\n if (currentMessageTotalLength && currentMessageTotalLength === currentMessagePendingLength) {\n yield currentMessage;\n currentMessage = null;\n currentMessageTotalLength = 0;\n currentMessagePendingLength = 0;\n }\n }\n }\n };\n return {\n [Symbol.asyncIterator]: iterator,\n };\n}\n","import { EventStreamMarshaller as UniversalEventStreamMarshaller } from \"@smithy/eventstream-serde-universal\";\nimport { iterableToReadableStream, readableStreamtoIterable } from \"./utils\";\nexport class EventStreamMarshaller {\n constructor({ utf8Encoder, utf8Decoder }) {\n this.universalMarshaller = new UniversalEventStreamMarshaller({\n utf8Decoder,\n utf8Encoder,\n });\n }\n deserialize(body, deserializer) {\n const bodyIterable = isReadableStream(body) ? readableStreamtoIterable(body) : body;\n return this.universalMarshaller.deserialize(bodyIterable, deserializer);\n }\n serialize(input, serializer) {\n const serialziedIterable = this.universalMarshaller.serialize(input, serializer);\n return typeof ReadableStream === \"function\" ? iterableToReadableStream(serialziedIterable) : serialziedIterable;\n }\n}\nconst isReadableStream = (body) => typeof ReadableStream === \"function\" && body instanceof ReadableStream;\n","export const readableStreamtoIterable = (readableStream) => ({\n [Symbol.asyncIterator]: async function* () {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n return;\n yield value;\n }\n }\n finally {\n reader.releaseLock();\n }\n },\n});\nexport const iterableToReadableStream = (asyncIterable) => {\n const iterator = asyncIterable[Symbol.asyncIterator]();\n return new ReadableStream({\n async pull(controller) {\n const { done, value } = await iterator.next();\n if (done) {\n return controller.close();\n }\n controller.enqueue(value);\n },\n });\n};\n","import { EventStreamMarshaller } from \"./EventStreamMarshaller\";\nexport const eventStreamSerdeProvider = (options) => new EventStreamMarshaller(options);\n","export function blobReader(blob, onChunk, chunkSize = 1024 * 1024) {\n return new Promise((resolve, reject) => {\n const fileReader = new FileReader();\n fileReader.addEventListener(\"error\", reject);\n fileReader.addEventListener(\"abort\", reject);\n const size = blob.size;\n let totalBytesRead = 0;\n function read() {\n if (totalBytesRead >= size) {\n resolve();\n return;\n }\n fileReader.readAsArrayBuffer(blob.slice(totalBytesRead, Math.min(size, totalBytesRead + chunkSize)));\n }\n fileReader.addEventListener(\"load\", (event) => {\n const result = event.target.result;\n onChunk(new Uint8Array(result));\n totalBytesRead += result.byteLength;\n read();\n });\n read();\n });\n}\n","import { blobReader } from \"@smithy/chunked-blob-reader\";\nexport const blobHasher = async function blobHasher(hashCtor, blob) {\n const hash = new hashCtor();\n await blobReader(blob, (chunk) => {\n hash.update(chunk);\n });\n return hash.digest();\n};\n","export const BLOCK_SIZE = 64;\nexport const DIGEST_LENGTH = 16;\nexport const INIT = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476];\n","import { fromUtf8 } from \"@smithy/util-utf8\";\nimport { BLOCK_SIZE, DIGEST_LENGTH, INIT } from \"./constants\";\nexport class Md5 {\n constructor() {\n this.reset();\n }\n update(sourceData) {\n if (isEmptyData(sourceData)) {\n return;\n }\n else if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n const data = convertToBuffer(sourceData);\n let position = 0;\n let { byteLength } = data;\n this.bytesHashed += byteLength;\n while (byteLength > 0) {\n this.buffer.setUint8(this.bufferLength++, data[position++]);\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n }\n async digest() {\n if (!this.finished) {\n const { buffer, bufferLength: undecoratedLength, bytesHashed } = this;\n const bitsHashed = bytesHashed * 8;\n buffer.setUint8(this.bufferLength++, 0b10000000);\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (let i = this.bufferLength; i < BLOCK_SIZE; i++) {\n buffer.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n buffer.setUint8(i, 0);\n }\n buffer.setUint32(BLOCK_SIZE - 8, bitsHashed >>> 0, true);\n buffer.setUint32(BLOCK_SIZE - 4, Math.floor(bitsHashed / 0x100000000), true);\n this.hashBuffer();\n this.finished = true;\n }\n const out = new DataView(new ArrayBuffer(DIGEST_LENGTH));\n for (let i = 0; i < 4; i++) {\n out.setUint32(i * 4, this.state[i], true);\n }\n return new Uint8Array(out.buffer, out.byteOffset, out.byteLength);\n }\n hashBuffer() {\n const { buffer, state } = this;\n let a = state[0], b = state[1], c = state[2], d = state[3];\n a = ff(a, b, c, d, buffer.getUint32(0, true), 7, 0xd76aa478);\n d = ff(d, a, b, c, buffer.getUint32(4, true), 12, 0xe8c7b756);\n c = ff(c, d, a, b, buffer.getUint32(8, true), 17, 0x242070db);\n b = ff(b, c, d, a, buffer.getUint32(12, true), 22, 0xc1bdceee);\n a = ff(a, b, c, d, buffer.getUint32(16, true), 7, 0xf57c0faf);\n d = ff(d, a, b, c, buffer.getUint32(20, true), 12, 0x4787c62a);\n c = ff(c, d, a, b, buffer.getUint32(24, true), 17, 0xa8304613);\n b = ff(b, c, d, a, buffer.getUint32(28, true), 22, 0xfd469501);\n a = ff(a, b, c, d, buffer.getUint32(32, true), 7, 0x698098d8);\n d = ff(d, a, b, c, buffer.getUint32(36, true), 12, 0x8b44f7af);\n c = ff(c, d, a, b, buffer.getUint32(40, true), 17, 0xffff5bb1);\n b = ff(b, c, d, a, buffer.getUint32(44, true), 22, 0x895cd7be);\n a = ff(a, b, c, d, buffer.getUint32(48, true), 7, 0x6b901122);\n d = ff(d, a, b, c, buffer.getUint32(52, true), 12, 0xfd987193);\n c = ff(c, d, a, b, buffer.getUint32(56, true), 17, 0xa679438e);\n b = ff(b, c, d, a, buffer.getUint32(60, true), 22, 0x49b40821);\n a = gg(a, b, c, d, buffer.getUint32(4, true), 5, 0xf61e2562);\n d = gg(d, a, b, c, buffer.getUint32(24, true), 9, 0xc040b340);\n c = gg(c, d, a, b, buffer.getUint32(44, true), 14, 0x265e5a51);\n b = gg(b, c, d, a, buffer.getUint32(0, true), 20, 0xe9b6c7aa);\n a = gg(a, b, c, d, buffer.getUint32(20, true), 5, 0xd62f105d);\n d = gg(d, a, b, c, buffer.getUint32(40, true), 9, 0x02441453);\n c = gg(c, d, a, b, buffer.getUint32(60, true), 14, 0xd8a1e681);\n b = gg(b, c, d, a, buffer.getUint32(16, true), 20, 0xe7d3fbc8);\n a = gg(a, b, c, d, buffer.getUint32(36, true), 5, 0x21e1cde6);\n d = gg(d, a, b, c, buffer.getUint32(56, true), 9, 0xc33707d6);\n c = gg(c, d, a, b, buffer.getUint32(12, true), 14, 0xf4d50d87);\n b = gg(b, c, d, a, buffer.getUint32(32, true), 20, 0x455a14ed);\n a = gg(a, b, c, d, buffer.getUint32(52, true), 5, 0xa9e3e905);\n d = gg(d, a, b, c, buffer.getUint32(8, true), 9, 0xfcefa3f8);\n c = gg(c, d, a, b, buffer.getUint32(28, true), 14, 0x676f02d9);\n b = gg(b, c, d, a, buffer.getUint32(48, true), 20, 0x8d2a4c8a);\n a = hh(a, b, c, d, buffer.getUint32(20, true), 4, 0xfffa3942);\n d = hh(d, a, b, c, buffer.getUint32(32, true), 11, 0x8771f681);\n c = hh(c, d, a, b, buffer.getUint32(44, true), 16, 0x6d9d6122);\n b = hh(b, c, d, a, buffer.getUint32(56, true), 23, 0xfde5380c);\n a = hh(a, b, c, d, buffer.getUint32(4, true), 4, 0xa4beea44);\n d = hh(d, a, b, c, buffer.getUint32(16, true), 11, 0x4bdecfa9);\n c = hh(c, d, a, b, buffer.getUint32(28, true), 16, 0xf6bb4b60);\n b = hh(b, c, d, a, buffer.getUint32(40, true), 23, 0xbebfbc70);\n a = hh(a, b, c, d, buffer.getUint32(52, true), 4, 0x289b7ec6);\n d = hh(d, a, b, c, buffer.getUint32(0, true), 11, 0xeaa127fa);\n c = hh(c, d, a, b, buffer.getUint32(12, true), 16, 0xd4ef3085);\n b = hh(b, c, d, a, buffer.getUint32(24, true), 23, 0x04881d05);\n a = hh(a, b, c, d, buffer.getUint32(36, true), 4, 0xd9d4d039);\n d = hh(d, a, b, c, buffer.getUint32(48, true), 11, 0xe6db99e5);\n c = hh(c, d, a, b, buffer.getUint32(60, true), 16, 0x1fa27cf8);\n b = hh(b, c, d, a, buffer.getUint32(8, true), 23, 0xc4ac5665);\n a = ii(a, b, c, d, buffer.getUint32(0, true), 6, 0xf4292244);\n d = ii(d, a, b, c, buffer.getUint32(28, true), 10, 0x432aff97);\n c = ii(c, d, a, b, buffer.getUint32(56, true), 15, 0xab9423a7);\n b = ii(b, c, d, a, buffer.getUint32(20, true), 21, 0xfc93a039);\n a = ii(a, b, c, d, buffer.getUint32(48, true), 6, 0x655b59c3);\n d = ii(d, a, b, c, buffer.getUint32(12, true), 10, 0x8f0ccc92);\n c = ii(c, d, a, b, buffer.getUint32(40, true), 15, 0xffeff47d);\n b = ii(b, c, d, a, buffer.getUint32(4, true), 21, 0x85845dd1);\n a = ii(a, b, c, d, buffer.getUint32(32, true), 6, 0x6fa87e4f);\n d = ii(d, a, b, c, buffer.getUint32(60, true), 10, 0xfe2ce6e0);\n c = ii(c, d, a, b, buffer.getUint32(24, true), 15, 0xa3014314);\n b = ii(b, c, d, a, buffer.getUint32(52, true), 21, 0x4e0811a1);\n a = ii(a, b, c, d, buffer.getUint32(16, true), 6, 0xf7537e82);\n d = ii(d, a, b, c, buffer.getUint32(44, true), 10, 0xbd3af235);\n c = ii(c, d, a, b, buffer.getUint32(8, true), 15, 0x2ad7d2bb);\n b = ii(b, c, d, a, buffer.getUint32(36, true), 21, 0xeb86d391);\n state[0] = (a + state[0]) & 0xffffffff;\n state[1] = (b + state[1]) & 0xffffffff;\n state[2] = (c + state[2]) & 0xffffffff;\n state[3] = (d + state[3]) & 0xffffffff;\n }\n reset() {\n this.state = Uint32Array.from(INIT);\n this.buffer = new DataView(new ArrayBuffer(BLOCK_SIZE));\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n }\n}\nfunction cmn(q, a, b, x, s, t) {\n a = (((a + q) & 0xffffffff) + ((x + t) & 0xffffffff)) & 0xffffffff;\n return (((a << s) | (a >>> (32 - s))) + b) & 0xffffffff;\n}\nfunction ff(a, b, c, d, x, s, t) {\n return cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction gg(a, b, c, d, x, s, t) {\n return cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction hh(a, b, c, d, x, s, t) {\n return cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction ii(a, b, c, d, x, s, t) {\n return cmn(c ^ (b | ~d), a, b, x, s, t);\n}\nfunction isEmptyData(data) {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n return data.byteLength === 0;\n}\nfunction convertToBuffer(data) {\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n return new Uint8Array(data);\n}\n","const TEXT_ENCODER = typeof TextEncoder == \"function\" ? new TextEncoder() : null;\nexport const calculateBodyLength = (body) => {\n if (typeof body === \"string\") {\n if (TEXT_ENCODER) {\n return TEXT_ENCODER.encode(body).byteLength;\n }\n let len = body.length;\n for (let i = len - 1; i >= 0; i--) {\n const code = body.charCodeAt(i);\n if (code > 0x7f && code <= 0x7ff)\n len++;\n else if (code > 0x7ff && code <= 0xffff)\n len += 2;\n if (code >= 0xdc00 && code <= 0xdfff)\n i--;\n }\n return len;\n }\n else if (typeof body.byteLength === \"number\") {\n return body.byteLength;\n }\n else if (typeof body.size === \"number\") {\n return body.size;\n }\n throw new Error(`Body Length computation failed for ${body}`);\n};\n","export const signatureV4CrtContainer = {\n CrtSignerV4: null,\n};\n","import { SignatureV4S3Express } from \"@aws-sdk/middleware-sdk-s3\";\nimport { signatureV4CrtContainer } from \"./signature-v4-crt-container\";\nexport class SignatureV4MultiRegion {\n constructor(options) {\n this.sigv4Signer = new SignatureV4S3Express(options);\n this.signerOptions = options;\n }\n async sign(requestToSign, options = {}) {\n if (options.signingRegion === \"*\") {\n if (this.signerOptions.runtime !== \"node\")\n throw new Error(\"This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js\");\n return this.getSigv4aSigner().sign(requestToSign, options);\n }\n return this.sigv4Signer.sign(requestToSign, options);\n }\n async signWithCredentials(requestToSign, credentials, options = {}) {\n if (options.signingRegion === \"*\") {\n if (this.signerOptions.runtime !== \"node\")\n throw new Error(\"This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js\");\n return this.getSigv4aSigner().signWithCredentials(requestToSign, credentials, options);\n }\n return this.sigv4Signer.signWithCredentials(requestToSign, credentials, options);\n }\n async presign(originalRequest, options = {}) {\n if (options.signingRegion === \"*\") {\n if (this.signerOptions.runtime !== \"node\")\n throw new Error(\"This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js\");\n return this.getSigv4aSigner().presign(originalRequest, options);\n }\n return this.sigv4Signer.presign(originalRequest, options);\n }\n async presignWithCredentials(originalRequest, credentials, options = {}) {\n if (options.signingRegion === \"*\") {\n throw new Error(\"Method presignWithCredentials is not supported for [signingRegion=*].\");\n }\n return this.sigv4Signer.presignWithCredentials(originalRequest, credentials, options);\n }\n getSigv4aSigner() {\n if (!this.sigv4aSigner) {\n let CrtSignerV4 = null;\n try {\n CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4;\n if (typeof CrtSignerV4 !== \"function\")\n throw new Error();\n }\n catch (e) {\n e.message =\n `${e.message}\\n` +\n `Please check whether you have installed the \"@aws-sdk/signature-v4-crt\" package explicitly. \\n` +\n `You must also register the package by calling [require(\"@aws-sdk/signature-v4-crt\");] ` +\n `or an ESM equivalent such as [import \"@aws-sdk/signature-v4-crt\";]. \\n` +\n \"For more information please go to \" +\n \"https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt\";\n throw e;\n }\n this.sigv4aSigner = new CrtSignerV4({\n ...this.signerOptions,\n signingAlgorithm: 1,\n });\n }\n return this.sigv4aSigner;\n }\n}\n","const ce = \"required\", cf = \"type\", cg = \"conditions\", ch = \"fn\", ci = \"argv\", cj = \"ref\", ck = \"assign\", cl = \"url\", cm = \"properties\", cn = \"backend\", co = \"authSchemes\", cp = \"disableDoubleEncoding\", cq = \"signingName\", cr = \"signingRegion\", cs = \"headers\", ct = \"signingRegionSet\";\nconst a = false, b = true, c = \"isSet\", d = \"booleanEquals\", e = \"error\", f = \"aws.partition\", g = \"stringEquals\", h = \"getAttr\", i = \"name\", j = \"substring\", k = \"bucketSuffix\", l = \"parseURL\", m = \"{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}\", n = \"endpoint\", o = \"tree\", p = \"aws.isVirtualHostableS3Bucket\", q = \"{url#scheme}://{Bucket}.{url#authority}{url#path}\", r = \"not\", s = \"{url#scheme}://{url#authority}{url#path}\", t = \"hardwareType\", u = \"regionPrefix\", v = \"bucketAliasSuffix\", w = \"outpostId\", x = \"isValidHostLabel\", y = \"sigv4a\", z = \"s3-outposts\", A = \"s3\", B = \"{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}\", C = \"https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}\", D = \"https://{Bucket}.s3.{partitionResult#dnsSuffix}\", E = \"aws.parseArn\", F = \"bucketArn\", G = \"arnType\", H = \"\", I = \"s3-object-lambda\", J = \"accesspoint\", K = \"accessPointName\", L = \"{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}\", M = \"mrapPartition\", N = \"outpostType\", O = \"arnPrefix\", P = \"{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}\", Q = \"https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", R = \"https://s3.{partitionResult#dnsSuffix}\", S = { [ce]: false, [cf]: \"String\" }, T = { [ce]: true, \"default\": false, [cf]: \"Boolean\" }, U = { [ce]: false, [cf]: \"Boolean\" }, V = { [ch]: d, [ci]: [{ [cj]: \"Accelerate\" }, true] }, W = { [ch]: d, [ci]: [{ [cj]: \"UseFIPS\" }, true] }, X = { [ch]: d, [ci]: [{ [cj]: \"UseDualStack\" }, true] }, Y = { [ch]: c, [ci]: [{ [cj]: \"Endpoint\" }] }, Z = { [ch]: f, [ci]: [{ [cj]: \"Region\" }], [ck]: \"partitionResult\" }, aa = { [ch]: g, [ci]: [{ [ch]: h, [ci]: [{ [cj]: \"partitionResult\" }, i] }, \"aws-cn\"] }, ab = { [ch]: c, [ci]: [{ [cj]: \"Bucket\" }] }, ac = { [cj]: \"Bucket\" }, ad = { [ch]: l, [ci]: [{ [cj]: \"Endpoint\" }], [ck]: \"url\" }, ae = { [ch]: d, [ci]: [{ [ch]: h, [ci]: [{ [cj]: \"url\" }, \"isIp\"] }, true] }, af = { [cj]: \"url\" }, ag = { [ch]: \"uriEncode\", [ci]: [ac], [ck]: \"uri_encoded_bucket\" }, ah = { [cn]: \"S3Express\", [co]: [{ [cp]: true, [i]: \"sigv4\", [cq]: \"s3express\", [cr]: \"{Region}\" }] }, ai = {}, aj = { [ch]: p, [ci]: [ac, false] }, ak = { [e]: \"S3Express bucket name is not a valid virtual hostable name.\", [cf]: e }, al = { [cn]: \"S3Express\", [co]: [{ [cp]: true, [i]: \"sigv4-s3express\", [cq]: \"s3express\", [cr]: \"{Region}\" }] }, am = { [ch]: c, [ci]: [{ [cj]: \"UseS3ExpressControlEndpoint\" }] }, an = { [ch]: d, [ci]: [{ [cj]: \"UseS3ExpressControlEndpoint\" }, true] }, ao = { [ch]: r, [ci]: [Y] }, ap = { [e]: \"Unrecognized S3Express bucket name format.\", [cf]: e }, aq = { [ch]: r, [ci]: [ab] }, ar = { [cj]: t }, as = { [cg]: [ao], [e]: \"Expected a endpoint to be specified but no endpoint was found\", [cf]: e }, at = { [co]: [{ [cp]: true, [i]: y, [cq]: z, [ct]: [\"*\"] }, { [cp]: true, [i]: \"sigv4\", [cq]: z, [cr]: \"{Region}\" }] }, au = { [ch]: d, [ci]: [{ [cj]: \"ForcePathStyle\" }, false] }, av = { [cj]: \"ForcePathStyle\" }, aw = { [ch]: d, [ci]: [{ [cj]: \"Accelerate\" }, false] }, ax = { [ch]: g, [ci]: [{ [cj]: \"Region\" }, \"aws-global\"] }, ay = { [co]: [{ [cp]: true, [i]: \"sigv4\", [cq]: A, [cr]: \"us-east-1\" }] }, az = { [ch]: r, [ci]: [ax] }, aA = { [ch]: d, [ci]: [{ [cj]: \"UseGlobalEndpoint\" }, true] }, aB = { [cl]: \"https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}\", [cm]: { [co]: [{ [cp]: true, [i]: \"sigv4\", [cq]: A, [cr]: \"{Region}\" }] }, [cs]: {} }, aC = { [co]: [{ [cp]: true, [i]: \"sigv4\", [cq]: A, [cr]: \"{Region}\" }] }, aD = { [ch]: d, [ci]: [{ [cj]: \"UseGlobalEndpoint\" }, false] }, aE = { [ch]: d, [ci]: [{ [cj]: \"UseDualStack\" }, false] }, aF = { [cl]: \"https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}\", [cm]: aC, [cs]: {} }, aG = { [ch]: d, [ci]: [{ [cj]: \"UseFIPS\" }, false] }, aH = { [cl]: \"https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}\", [cm]: aC, [cs]: {} }, aI = { [cl]: \"https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}\", [cm]: aC, [cs]: {} }, aJ = { [ch]: d, [ci]: [{ [ch]: h, [ci]: [af, \"isIp\"] }, false] }, aK = { [cl]: B, [cm]: aC, [cs]: {} }, aL = { [cl]: q, [cm]: aC, [cs]: {} }, aM = { [n]: aL, [cf]: n }, aN = { [cl]: C, [cm]: aC, [cs]: {} }, aO = { [cl]: \"https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}\", [cm]: aC, [cs]: {} }, aP = { [e]: \"Invalid region: region was not a valid DNS name.\", [cf]: e }, aQ = { [cj]: F }, aR = { [cj]: G }, aS = { [ch]: h, [ci]: [aQ, \"service\"] }, aT = { [cj]: K }, aU = { [cg]: [X], [e]: \"S3 Object Lambda does not support Dual-stack\", [cf]: e }, aV = { [cg]: [V], [e]: \"S3 Object Lambda does not support S3 Accelerate\", [cf]: e }, aW = { [cg]: [{ [ch]: c, [ci]: [{ [cj]: \"DisableAccessPoints\" }] }, { [ch]: d, [ci]: [{ [cj]: \"DisableAccessPoints\" }, true] }], [e]: \"Access points are not supported for this operation\", [cf]: e }, aX = { [cg]: [{ [ch]: c, [ci]: [{ [cj]: \"UseArnRegion\" }] }, { [ch]: d, [ci]: [{ [cj]: \"UseArnRegion\" }, false] }, { [ch]: r, [ci]: [{ [ch]: g, [ci]: [{ [ch]: h, [ci]: [aQ, \"region\"] }, \"{Region}\"] }] }], [e]: \"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`\", [cf]: e }, aY = { [ch]: h, [ci]: [{ [cj]: \"bucketPartition\" }, i] }, aZ = { [ch]: h, [ci]: [aQ, \"accountId\"] }, ba = { [co]: [{ [cp]: true, [i]: \"sigv4\", [cq]: I, [cr]: \"{bucketArn#region}\" }] }, bb = { [e]: \"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`\", [cf]: e }, bc = { [e]: \"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`\", [cf]: e }, bd = { [e]: \"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)\", [cf]: e }, be = { [e]: \"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`\", [cf]: e }, bf = { [e]: \"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.\", [cf]: e }, bg = { [e]: \"Invalid ARN: Expected a resource of the format `accesspoint:<accesspoint name>` but no name was provided\", [cf]: e }, bh = { [co]: [{ [cp]: true, [i]: \"sigv4\", [cq]: A, [cr]: \"{bucketArn#region}\" }] }, bi = { [co]: [{ [cp]: true, [i]: y, [cq]: z, [ct]: [\"*\"] }, { [cp]: true, [i]: \"sigv4\", [cq]: z, [cr]: \"{bucketArn#region}\" }] }, bj = { [ch]: E, [ci]: [ac] }, bk = { [cl]: \"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cm]: aC, [cs]: {} }, bl = { [cl]: \"https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cm]: aC, [cs]: {} }, bm = { [cl]: \"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cm]: aC, [cs]: {} }, bn = { [cl]: P, [cm]: aC, [cs]: {} }, bo = { [cl]: \"https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cm]: aC, [cs]: {} }, bp = { [cj]: \"UseObjectLambdaEndpoint\" }, bq = { [co]: [{ [cp]: true, [i]: \"sigv4\", [cq]: I, [cr]: \"{Region}\" }] }, br = { [cl]: \"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}\", [cm]: aC, [cs]: {} }, bs = { [cl]: \"https://s3-fips.{Region}.{partitionResult#dnsSuffix}\", [cm]: aC, [cs]: {} }, bt = { [cl]: \"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}\", [cm]: aC, [cs]: {} }, bu = { [cl]: s, [cm]: aC, [cs]: {} }, bv = { [cl]: \"https://s3.{Region}.{partitionResult#dnsSuffix}\", [cm]: aC, [cs]: {} }, bw = [{ [cj]: \"Region\" }], bx = [{ [cj]: \"Endpoint\" }], by = [ac], bz = [X], bA = [V], bB = [Y, ad], bC = [{ [ch]: c, [ci]: [{ [cj]: \"DisableS3ExpressSessionAuth\" }] }, { [ch]: d, [ci]: [{ [cj]: \"DisableS3ExpressSessionAuth\" }, true] }], bD = [ae], bE = [ag], bF = [aj], bG = [W], bH = [{ [ch]: j, [ci]: [ac, 6, 14, true], [ck]: \"s3expressAvailabilityZoneId\" }, { [ch]: j, [ci]: [ac, 14, 16, true], [ck]: \"s3expressAvailabilityZoneDelim\" }, { [ch]: g, [ci]: [{ [cj]: \"s3expressAvailabilityZoneDelim\" }, \"--\"] }], bI = [{ [cg]: [W], [n]: { [cl]: \"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com\", [cm]: ah, [cs]: {} }, [cf]: n }, { [n]: { [cl]: \"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com\", [cm]: ah, [cs]: {} }, [cf]: n }], bJ = [{ [ch]: j, [ci]: [ac, 6, 15, true], [ck]: \"s3expressAvailabilityZoneId\" }, { [ch]: j, [ci]: [ac, 15, 17, true], [ck]: \"s3expressAvailabilityZoneDelim\" }, { [ch]: g, [ci]: [{ [cj]: \"s3expressAvailabilityZoneDelim\" }, \"--\"] }], bK = [{ [cg]: [W], [n]: { [cl]: \"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com\", [cm]: al, [cs]: {} }, [cf]: n }, { [n]: { [cl]: \"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com\", [cm]: al, [cs]: {} }, [cf]: n }], bL = [ab], bM = [{ [ch]: x, [ci]: [{ [cj]: w }, false] }], bN = [{ [ch]: g, [ci]: [{ [cj]: u }, \"beta\"] }], bO = [\"*\"], bP = [Z], bQ = [{ [ch]: x, [ci]: [{ [cj]: \"Region\" }, false] }], bR = [{ [ch]: g, [ci]: [{ [cj]: \"Region\" }, \"us-east-1\"] }], bS = [{ [ch]: g, [ci]: [aR, J] }], bT = [{ [ch]: h, [ci]: [aQ, \"resourceId[1]\"], [ck]: K }, { [ch]: r, [ci]: [{ [ch]: g, [ci]: [aT, H] }] }], bU = [aQ, \"resourceId[1]\"], bV = [{ [ch]: r, [ci]: [{ [ch]: g, [ci]: [{ [ch]: h, [ci]: [aQ, \"region\"] }, H] }] }], bW = [{ [ch]: r, [ci]: [{ [ch]: c, [ci]: [{ [ch]: h, [ci]: [aQ, \"resourceId[2]\"] }] }] }], bX = [aQ, \"resourceId[2]\"], bY = [{ [ch]: f, [ci]: [{ [ch]: h, [ci]: [aQ, \"region\"] }], [ck]: \"bucketPartition\" }], bZ = [{ [ch]: g, [ci]: [aY, { [ch]: h, [ci]: [{ [cj]: \"partitionResult\" }, i] }] }], ca = [{ [ch]: x, [ci]: [{ [ch]: h, [ci]: [aQ, \"region\"] }, true] }], cb = [{ [ch]: x, [ci]: [aZ, false] }], cc = [{ [ch]: x, [ci]: [aT, false] }], cd = [{ [ch]: x, [ci]: [{ [cj]: \"Region\" }, true] }];\nconst _data = { version: \"1.0\", parameters: { Bucket: S, Region: S, UseFIPS: T, UseDualStack: T, Endpoint: S, ForcePathStyle: T, Accelerate: T, UseGlobalEndpoint: T, UseObjectLambdaEndpoint: U, Key: S, Prefix: S, CopySource: S, DisableAccessPoints: U, DisableMultiRegionAccessPoints: T, UseArnRegion: U, UseS3ExpressControlEndpoint: U, DisableS3ExpressSessionAuth: U }, rules: [{ [cg]: [{ [ch]: c, [ci]: bw }], rules: [{ [cg]: [V, W], error: \"Accelerate cannot be used with FIPS\", [cf]: e }, { [cg]: [X, Y], error: \"Cannot set dual-stack in combination with a custom endpoint.\", [cf]: e }, { [cg]: [Y, W], error: \"A custom endpoint cannot be combined with FIPS\", [cf]: e }, { [cg]: [Y, V], error: \"A custom endpoint cannot be combined with S3 Accelerate\", [cf]: e }, { [cg]: [W, Z, aa], error: \"Partition does not support FIPS\", [cf]: e }, { [cg]: [ab, { [ch]: j, [ci]: [ac, 0, 6, b], [ck]: k }, { [ch]: g, [ci]: [{ [cj]: k }, \"--x-s3\"] }], rules: [{ [cg]: bz, error: \"S3Express does not support Dual-stack.\", [cf]: e }, { [cg]: bA, error: \"S3Express does not support S3 Accelerate.\", [cf]: e }, { [cg]: bB, rules: [{ [cg]: bC, rules: [{ [cg]: bD, rules: [{ [cg]: bE, rules: [{ endpoint: { [cl]: m, [cm]: ah, [cs]: ai }, [cf]: n }], [cf]: o }], [cf]: o }, { [cg]: bF, rules: [{ endpoint: { [cl]: q, [cm]: ah, [cs]: ai }, [cf]: n }], [cf]: o }, ak], [cf]: o }, { [cg]: bD, rules: [{ [cg]: bE, rules: [{ endpoint: { [cl]: m, [cm]: al, [cs]: ai }, [cf]: n }], [cf]: o }], [cf]: o }, { [cg]: bF, rules: [{ endpoint: { [cl]: q, [cm]: al, [cs]: ai }, [cf]: n }], [cf]: o }, ak], [cf]: o }, { [cg]: [am, an], rules: [{ [cg]: [ag, ao], rules: [{ [cg]: bG, endpoint: { [cl]: \"https://s3express-control-fips.{Region}.amazonaws.com/{uri_encoded_bucket}\", [cm]: ah, [cs]: ai }, [cf]: n }, { endpoint: { [cl]: \"https://s3express-control.{Region}.amazonaws.com/{uri_encoded_bucket}\", [cm]: ah, [cs]: ai }, [cf]: n }], [cf]: o }], [cf]: o }, { [cg]: bF, rules: [{ [cg]: bC, rules: [{ [cg]: bH, rules: bI, [cf]: o }, { [cg]: bJ, rules: bI, [cf]: o }, ap], [cf]: o }, { [cg]: bH, rules: bK, [cf]: o }, { [cg]: bJ, rules: bK, [cf]: o }, ap], [cf]: o }, ak], [cf]: o }, { [cg]: [aq, am, an], rules: [{ [cg]: bB, endpoint: { [cl]: s, [cm]: ah, [cs]: ai }, [cf]: n }, { [cg]: bG, endpoint: { [cl]: \"https://s3express-control-fips.{Region}.amazonaws.com\", [cm]: ah, [cs]: ai }, [cf]: n }, { endpoint: { [cl]: \"https://s3express-control.{Region}.amazonaws.com\", [cm]: ah, [cs]: ai }, [cf]: n }], [cf]: o }, { [cg]: [ab, { [ch]: j, [ci]: [ac, 49, 50, b], [ck]: t }, { [ch]: j, [ci]: [ac, 8, 12, b], [ck]: u }, { [ch]: j, [ci]: [ac, 0, 7, b], [ck]: v }, { [ch]: j, [ci]: [ac, 32, 49, b], [ck]: w }, { [ch]: f, [ci]: bw, [ck]: \"regionPartition\" }, { [ch]: g, [ci]: [{ [cj]: v }, \"--op-s3\"] }], rules: [{ [cg]: bM, rules: [{ [cg]: [{ [ch]: g, [ci]: [ar, \"e\"] }], rules: [{ [cg]: bN, rules: [as, { [cg]: bB, endpoint: { [cl]: \"https://{Bucket}.ec2.{url#authority}\", [cm]: at, [cs]: ai }, [cf]: n }], [cf]: o }, { endpoint: { [cl]: \"https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}\", [cm]: at, [cs]: ai }, [cf]: n }], [cf]: o }, { [cg]: [{ [ch]: g, [ci]: [ar, \"o\"] }], rules: [{ [cg]: bN, rules: [as, { [cg]: bB, endpoint: { [cl]: \"https://{Bucket}.op-{outpostId}.{url#authority}\", [cm]: at, [cs]: ai }, [cf]: n }], [cf]: o }, { endpoint: { [cl]: \"https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}\", [cm]: at, [cs]: ai }, [cf]: n }], [cf]: o }, { error: \"Unrecognized hardware type: \\\"Expected hardware type o or e but got {hardwareType}\\\"\", [cf]: e }], [cf]: o }, { error: \"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.\", [cf]: e }], [cf]: o }, { [cg]: bL, rules: [{ [cg]: [Y, { [ch]: r, [ci]: [{ [ch]: c, [ci]: [{ [ch]: l, [ci]: bx }] }] }], error: \"Custom endpoint `{Endpoint}` was not a valid URI\", [cf]: e }, { [cg]: [au, aj], rules: [{ [cg]: bP, rules: [{ [cg]: bQ, rules: [{ [cg]: [V, aa], error: \"S3 Accelerate cannot be used in this region\", [cf]: e }, { [cg]: [X, W, aw, ao, ax], endpoint: { [cl]: \"https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}\", [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [X, W, aw, ao, az, aA], rules: [{ endpoint: aB, [cf]: n }], [cf]: o }, { [cg]: [X, W, aw, ao, az, aD], endpoint: aB, [cf]: n }, { [cg]: [aE, W, aw, ao, ax], endpoint: { [cl]: \"https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}\", [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [aE, W, aw, ao, az, aA], rules: [{ endpoint: aF, [cf]: n }], [cf]: o }, { [cg]: [aE, W, aw, ao, az, aD], endpoint: aF, [cf]: n }, { [cg]: [X, aG, V, ao, ax], endpoint: { [cl]: \"https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}\", [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [X, aG, V, ao, az, aA], rules: [{ endpoint: aH, [cf]: n }], [cf]: o }, { [cg]: [X, aG, V, ao, az, aD], endpoint: aH, [cf]: n }, { [cg]: [X, aG, aw, ao, ax], endpoint: { [cl]: \"https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}\", [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [X, aG, aw, ao, az, aA], rules: [{ endpoint: aI, [cf]: n }], [cf]: o }, { [cg]: [X, aG, aw, ao, az, aD], endpoint: aI, [cf]: n }, { [cg]: [aE, aG, aw, Y, ad, ae, ax], endpoint: { [cl]: B, [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [aE, aG, aw, Y, ad, aJ, ax], endpoint: { [cl]: q, [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [aE, aG, aw, Y, ad, ae, az, aA], rules: [{ [cg]: bR, endpoint: aK, [cf]: n }, { endpoint: aK, [cf]: n }], [cf]: o }, { [cg]: [aE, aG, aw, Y, ad, aJ, az, aA], rules: [{ [cg]: bR, endpoint: aL, [cf]: n }, aM], [cf]: o }, { [cg]: [aE, aG, aw, Y, ad, ae, az, aD], endpoint: aK, [cf]: n }, { [cg]: [aE, aG, aw, Y, ad, aJ, az, aD], endpoint: aL, [cf]: n }, { [cg]: [aE, aG, V, ao, ax], endpoint: { [cl]: C, [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [aE, aG, V, ao, az, aA], rules: [{ [cg]: bR, endpoint: aN, [cf]: n }, { endpoint: aN, [cf]: n }], [cf]: o }, { [cg]: [aE, aG, V, ao, az, aD], endpoint: aN, [cf]: n }, { [cg]: [aE, aG, aw, ao, ax], endpoint: { [cl]: D, [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [aE, aG, aw, ao, az, aA], rules: [{ [cg]: bR, endpoint: { [cl]: D, [cm]: aC, [cs]: ai }, [cf]: n }, { endpoint: aO, [cf]: n }], [cf]: o }, { [cg]: [aE, aG, aw, ao, az, aD], endpoint: aO, [cf]: n }], [cf]: o }, aP], [cf]: o }], [cf]: o }, { [cg]: [Y, ad, { [ch]: g, [ci]: [{ [ch]: h, [ci]: [af, \"scheme\"] }, \"http\"] }, { [ch]: p, [ci]: [ac, b] }, au, aG, aE, aw], rules: [{ [cg]: bP, rules: [{ [cg]: bQ, rules: [aM], [cf]: o }, aP], [cf]: o }], [cf]: o }, { [cg]: [au, { [ch]: E, [ci]: by, [ck]: F }], rules: [{ [cg]: [{ [ch]: h, [ci]: [aQ, \"resourceId[0]\"], [ck]: G }, { [ch]: r, [ci]: [{ [ch]: g, [ci]: [aR, H] }] }], rules: [{ [cg]: [{ [ch]: g, [ci]: [aS, I] }], rules: [{ [cg]: bS, rules: [{ [cg]: bT, rules: [aU, aV, { [cg]: bV, rules: [aW, { [cg]: bW, rules: [aX, { [cg]: bY, rules: [{ [cg]: bP, rules: [{ [cg]: bZ, rules: [{ [cg]: ca, rules: [{ [cg]: [{ [ch]: g, [ci]: [aZ, H] }], error: \"Invalid ARN: Missing account id\", [cf]: e }, { [cg]: cb, rules: [{ [cg]: cc, rules: [{ [cg]: bB, endpoint: { [cl]: L, [cm]: ba, [cs]: ai }, [cf]: n }, { [cg]: bG, endpoint: { [cl]: \"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}\", [cm]: ba, [cs]: ai }, [cf]: n }, { endpoint: { [cl]: \"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}\", [cm]: ba, [cs]: ai }, [cf]: n }], [cf]: o }, bb], [cf]: o }, bc], [cf]: o }, bd], [cf]: o }, be], [cf]: o }], [cf]: o }], [cf]: o }, bf], [cf]: o }, { error: \"Invalid ARN: bucket ARN is missing a region\", [cf]: e }], [cf]: o }, bg], [cf]: o }, { error: \"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`\", [cf]: e }], [cf]: o }, { [cg]: bS, rules: [{ [cg]: bT, rules: [{ [cg]: bV, rules: [{ [cg]: bS, rules: [{ [cg]: bV, rules: [aW, { [cg]: bW, rules: [aX, { [cg]: bY, rules: [{ [cg]: bP, rules: [{ [cg]: [{ [ch]: g, [ci]: [aY, \"{partitionResult#name}\"] }], rules: [{ [cg]: ca, rules: [{ [cg]: [{ [ch]: g, [ci]: [aS, A] }], rules: [{ [cg]: cb, rules: [{ [cg]: cc, rules: [{ [cg]: bA, error: \"Access Points do not support S3 Accelerate\", [cf]: e }, { [cg]: [W, X], endpoint: { [cl]: \"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}\", [cm]: bh, [cs]: ai }, [cf]: n }, { [cg]: [W, aE], endpoint: { [cl]: \"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}\", [cm]: bh, [cs]: ai }, [cf]: n }, { [cg]: [aG, X], endpoint: { [cl]: \"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}\", [cm]: bh, [cs]: ai }, [cf]: n }, { [cg]: [aG, aE, Y, ad], endpoint: { [cl]: L, [cm]: bh, [cs]: ai }, [cf]: n }, { [cg]: [aG, aE], endpoint: { [cl]: \"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}\", [cm]: bh, [cs]: ai }, [cf]: n }], [cf]: o }, bb], [cf]: o }, bc], [cf]: o }, { error: \"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}\", [cf]: e }], [cf]: o }, bd], [cf]: o }, be], [cf]: o }], [cf]: o }], [cf]: o }, bf], [cf]: o }], [cf]: o }], [cf]: o }, { [cg]: [{ [ch]: x, [ci]: [aT, b] }], rules: [{ [cg]: bz, error: \"S3 MRAP does not support dual-stack\", [cf]: e }, { [cg]: bG, error: \"S3 MRAP does not support FIPS\", [cf]: e }, { [cg]: bA, error: \"S3 MRAP does not support S3 Accelerate\", [cf]: e }, { [cg]: [{ [ch]: d, [ci]: [{ [cj]: \"DisableMultiRegionAccessPoints\" }, b] }], error: \"Invalid configuration: Multi-Region Access Point ARNs are disabled.\", [cf]: e }, { [cg]: [{ [ch]: f, [ci]: bw, [ck]: M }], rules: [{ [cg]: [{ [ch]: g, [ci]: [{ [ch]: h, [ci]: [{ [cj]: M }, i] }, { [ch]: h, [ci]: [aQ, \"partition\"] }] }], rules: [{ endpoint: { [cl]: \"https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}\", [cm]: { [co]: [{ [cp]: b, name: y, [cq]: A, [ct]: bO }] }, [cs]: ai }, [cf]: n }], [cf]: o }, { error: \"Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`\", [cf]: e }], [cf]: o }], [cf]: o }, { error: \"Invalid Access Point Name\", [cf]: e }], [cf]: o }, bg], [cf]: o }, { [cg]: [{ [ch]: g, [ci]: [aS, z] }], rules: [{ [cg]: bz, error: \"S3 Outposts does not support Dual-stack\", [cf]: e }, { [cg]: bG, error: \"S3 Outposts does not support FIPS\", [cf]: e }, { [cg]: bA, error: \"S3 Outposts does not support S3 Accelerate\", [cf]: e }, { [cg]: [{ [ch]: c, [ci]: [{ [ch]: h, [ci]: [aQ, \"resourceId[4]\"] }] }], error: \"Invalid Arn: Outpost Access Point ARN contains sub resources\", [cf]: e }, { [cg]: [{ [ch]: h, [ci]: bU, [ck]: w }], rules: [{ [cg]: bM, rules: [aX, { [cg]: bY, rules: [{ [cg]: bP, rules: [{ [cg]: bZ, rules: [{ [cg]: ca, rules: [{ [cg]: cb, rules: [{ [cg]: [{ [ch]: h, [ci]: bX, [ck]: N }], rules: [{ [cg]: [{ [ch]: h, [ci]: [aQ, \"resourceId[3]\"], [ck]: K }], rules: [{ [cg]: [{ [ch]: g, [ci]: [{ [cj]: N }, J] }], rules: [{ [cg]: bB, endpoint: { [cl]: \"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}\", [cm]: bi, [cs]: ai }, [cf]: n }, { endpoint: { [cl]: \"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}\", [cm]: bi, [cs]: ai }, [cf]: n }], [cf]: o }, { error: \"Expected an outpost type `accesspoint`, found {outpostType}\", [cf]: e }], [cf]: o }, { error: \"Invalid ARN: expected an access point name\", [cf]: e }], [cf]: o }, { error: \"Invalid ARN: Expected a 4-component resource\", [cf]: e }], [cf]: o }, bc], [cf]: o }, bd], [cf]: o }, be], [cf]: o }], [cf]: o }], [cf]: o }, { error: \"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`\", [cf]: e }], [cf]: o }, { error: \"Invalid ARN: The Outpost Id was not set\", [cf]: e }], [cf]: o }, { error: \"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})\", [cf]: e }], [cf]: o }, { error: \"Invalid ARN: No ARN type specified\", [cf]: e }], [cf]: o }, { [cg]: [{ [ch]: j, [ci]: [ac, 0, 4, a], [ck]: O }, { [ch]: g, [ci]: [{ [cj]: O }, \"arn:\"] }, { [ch]: r, [ci]: [{ [ch]: c, [ci]: [bj] }] }], error: \"Invalid ARN: `{Bucket}` was not a valid ARN\", [cf]: e }, { [cg]: [{ [ch]: d, [ci]: [av, b] }, bj], error: \"Path-style addressing cannot be used with ARN buckets\", [cf]: e }, { [cg]: bE, rules: [{ [cg]: bP, rules: [{ [cg]: [aw], rules: [{ [cg]: [X, ao, W, ax], endpoint: { [cl]: \"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [X, ao, W, az, aA], rules: [{ endpoint: bk, [cf]: n }], [cf]: o }, { [cg]: [X, ao, W, az, aD], endpoint: bk, [cf]: n }, { [cg]: [aE, ao, W, ax], endpoint: { [cl]: \"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [aE, ao, W, az, aA], rules: [{ endpoint: bl, [cf]: n }], [cf]: o }, { [cg]: [aE, ao, W, az, aD], endpoint: bl, [cf]: n }, { [cg]: [X, ao, aG, ax], endpoint: { [cl]: \"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [X, ao, aG, az, aA], rules: [{ endpoint: bm, [cf]: n }], [cf]: o }, { [cg]: [X, ao, aG, az, aD], endpoint: bm, [cf]: n }, { [cg]: [aE, Y, ad, aG, ax], endpoint: { [cl]: P, [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [aE, Y, ad, aG, az, aA], rules: [{ [cg]: bR, endpoint: bn, [cf]: n }, { endpoint: bn, [cf]: n }], [cf]: o }, { [cg]: [aE, Y, ad, aG, az, aD], endpoint: bn, [cf]: n }, { [cg]: [aE, ao, aG, ax], endpoint: { [cl]: Q, [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [aE, ao, aG, az, aA], rules: [{ [cg]: bR, endpoint: { [cl]: Q, [cm]: aC, [cs]: ai }, [cf]: n }, { endpoint: bo, [cf]: n }], [cf]: o }, { [cg]: [aE, ao, aG, az, aD], endpoint: bo, [cf]: n }], [cf]: o }, { error: \"Path-style addressing cannot be used with S3 Accelerate\", [cf]: e }], [cf]: o }], [cf]: o }], [cf]: o }, { [cg]: [{ [ch]: c, [ci]: [bp] }, { [ch]: d, [ci]: [bp, b] }], rules: [{ [cg]: bP, rules: [{ [cg]: cd, rules: [aU, aV, { [cg]: bB, endpoint: { [cl]: s, [cm]: bq, [cs]: ai }, [cf]: n }, { [cg]: bG, endpoint: { [cl]: \"https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}\", [cm]: bq, [cs]: ai }, [cf]: n }, { endpoint: { [cl]: \"https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}\", [cm]: bq, [cs]: ai }, [cf]: n }], [cf]: o }, aP], [cf]: o }], [cf]: o }, { [cg]: [aq], rules: [{ [cg]: bP, rules: [{ [cg]: cd, rules: [{ [cg]: [W, X, ao, ax], endpoint: { [cl]: \"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}\", [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [W, X, ao, az, aA], rules: [{ endpoint: br, [cf]: n }], [cf]: o }, { [cg]: [W, X, ao, az, aD], endpoint: br, [cf]: n }, { [cg]: [W, aE, ao, ax], endpoint: { [cl]: \"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}\", [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [W, aE, ao, az, aA], rules: [{ endpoint: bs, [cf]: n }], [cf]: o }, { [cg]: [W, aE, ao, az, aD], endpoint: bs, [cf]: n }, { [cg]: [aG, X, ao, ax], endpoint: { [cl]: \"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}\", [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [aG, X, ao, az, aA], rules: [{ endpoint: bt, [cf]: n }], [cf]: o }, { [cg]: [aG, X, ao, az, aD], endpoint: bt, [cf]: n }, { [cg]: [aG, aE, Y, ad, ax], endpoint: { [cl]: s, [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [aG, aE, Y, ad, az, aA], rules: [{ [cg]: bR, endpoint: bu, [cf]: n }, { endpoint: bu, [cf]: n }], [cf]: o }, { [cg]: [aG, aE, Y, ad, az, aD], endpoint: bu, [cf]: n }, { [cg]: [aG, aE, ao, ax], endpoint: { [cl]: R, [cm]: ay, [cs]: ai }, [cf]: n }, { [cg]: [aG, aE, ao, az, aA], rules: [{ [cg]: bR, endpoint: { [cl]: R, [cm]: aC, [cs]: ai }, [cf]: n }, { endpoint: bv, [cf]: n }], [cf]: o }, { [cg]: [aG, aE, ao, az, aD], endpoint: bv, [cf]: n }], [cf]: o }, aP], [cf]: o }], [cf]: o }], [cf]: o }, { error: \"A region must be set when sending requests to S3.\", [cf]: e }] };\nexport const ruleSet = _data;\n","import { awsEndpointFunctions } from \"@aws-sdk/util-endpoints\";\nimport { customEndpointFunctions, resolveEndpoint } from \"@smithy/util-endpoints\";\nimport { ruleSet } from \"./ruleset\";\nexport const defaultEndpointResolver = (endpointParams, context = {}) => {\n return resolveEndpoint(ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n });\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n","import { debugId, toDebugString } from \"./debug\";\nimport { EndpointError } from \"./types\";\nimport { evaluateRules } from \"./utils\";\nexport const resolveEndpoint = (ruleSetObject, options) => {\n const { endpointParams, logger } = options;\n const { parameters, rules } = ruleSetObject;\n options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);\n const paramsWithDefault = Object.entries(parameters)\n .filter(([, v]) => v.default != null)\n .map(([k, v]) => [k, v.default]);\n if (paramsWithDefault.length > 0) {\n for (const [paramKey, paramDefaultValue] of paramsWithDefault) {\n endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue;\n }\n }\n const requiredParams = Object.entries(parameters)\n .filter(([, v]) => v.required)\n .map(([k]) => k);\n for (const requiredParam of requiredParams) {\n if (endpointParams[requiredParam] == null) {\n throw new EndpointError(`Missing required parameter: '${requiredParam}'`);\n }\n }\n const endpoint = evaluateRules(rules, { endpointParams, logger, referenceRecord: {} });\n if (options.endpointParams?.Endpoint) {\n try {\n const givenEndpoint = new URL(options.endpointParams.Endpoint);\n const { protocol, port } = givenEndpoint;\n endpoint.url.protocol = protocol;\n endpoint.url.port = port;\n }\n catch (e) {\n }\n }\n options.logger?.debug?.(`${debugId} Resolved endpoint: ${toDebugString(endpoint)}`);\n return endpoint;\n};\n","import { SignatureV4MultiRegion } from \"@aws-sdk/signature-v4-multi-region\";\nimport { NoOpLogger } from \"@smithy/smithy-client\";\nimport { parseUrl } from \"@smithy/url-parser\";\nimport { fromBase64, toBase64 } from \"@smithy/util-base64\";\nimport { getAwsChunkedEncodingStream, sdkStreamMixin } from \"@smithy/util-stream\";\nimport { fromUtf8, toUtf8 } from \"@smithy/util-utf8\";\nimport { defaultEndpointResolver } from \"./endpoint/endpointResolver\";\nexport const getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2006-03-01\",\n base64Decoder: config?.base64Decoder ?? fromBase64,\n base64Encoder: config?.base64Encoder ?? toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n getAwsChunkedEncodingStream: config?.getAwsChunkedEncodingStream ?? getAwsChunkedEncodingStream,\n logger: config?.logger ?? new NoOpLogger(),\n sdkStreamMixin: config?.sdkStreamMixin ?? sdkStreamMixin,\n serviceId: config?.serviceId ?? \"S3\",\n signerConstructor: config?.signerConstructor ?? SignatureV4MultiRegion,\n signingEscapePath: config?.signingEscapePath ?? false,\n urlParser: config?.urlParser ?? parseUrl,\n useArnRegion: config?.useArnRegion ?? false,\n utf8Decoder: config?.utf8Decoder ?? fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? toUtf8,\n };\n};\n","export var ChecksumAlgorithm;\n(function (ChecksumAlgorithm) {\n ChecksumAlgorithm[\"MD5\"] = \"MD5\";\n ChecksumAlgorithm[\"CRC32\"] = \"CRC32\";\n ChecksumAlgorithm[\"CRC32C\"] = \"CRC32C\";\n ChecksumAlgorithm[\"SHA1\"] = \"SHA1\";\n ChecksumAlgorithm[\"SHA256\"] = \"SHA256\";\n})(ChecksumAlgorithm || (ChecksumAlgorithm = {}));\nexport var ChecksumLocation;\n(function (ChecksumLocation) {\n ChecksumLocation[\"HEADER\"] = \"header\";\n ChecksumLocation[\"TRAILER\"] = \"trailer\";\n})(ChecksumLocation || (ChecksumLocation = {}));\nexport const DEFAULT_CHECKSUM_ALGORITHM = ChecksumAlgorithm.MD5;\nexport const S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM = ChecksumAlgorithm.CRC32;\n","export const DEFAULTS_MODE_OPTIONS = [\"in-region\", \"cross-region\", \"mobile\", \"standard\", \"legacy\"];\n","import { memoize } from \"@smithy/property-provider\";\nimport bowser from \"bowser\";\nimport { DEFAULTS_MODE_OPTIONS } from \"./constants\";\nexport const resolveDefaultsModeConfig = ({ defaultsMode, } = {}) => memoize(async () => {\n const mode = typeof defaultsMode === \"function\" ? await defaultsMode() : defaultsMode;\n switch (mode?.toLowerCase()) {\n case \"auto\":\n return Promise.resolve(isMobileBrowser() ? \"mobile\" : \"standard\");\n case \"mobile\":\n case \"in-region\":\n case \"cross-region\":\n case \"standard\":\n case \"legacy\":\n return Promise.resolve(mode?.toLocaleLowerCase());\n case undefined:\n return Promise.resolve(\"legacy\");\n default:\n throw new Error(`Invalid parameter for \"defaultsMode\", expect ${DEFAULTS_MODE_OPTIONS.join(\", \")}, got ${mode}`);\n }\n});\nconst isMobileBrowser = () => {\n const parsedUA = typeof window !== \"undefined\" && window?.navigator?.userAgent\n ? bowser.parse(window.navigator.userAgent)\n : undefined;\n const platform = parsedUA?.platform?.type;\n return platform === \"tablet\" || platform === \"mobile\";\n};\n","import packageInfo from \"../package.json\";\nimport { Sha1 } from \"@aws-crypto/sha1-browser\";\nimport { Sha256 } from \"@aws-crypto/sha256-browser\";\nimport { defaultUserAgent } from \"@aws-sdk/util-user-agent-browser\";\nimport { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from \"@smithy/config-resolver\";\nimport { eventStreamSerdeProvider } from \"@smithy/eventstream-serde-browser\";\nimport { FetchHttpHandler as RequestHandler, streamCollector } from \"@smithy/fetch-http-handler\";\nimport { blobHasher as streamHasher } from \"@smithy/hash-blob-browser\";\nimport { invalidProvider } from \"@smithy/invalid-dependency\";\nimport { Md5 } from \"@smithy/md5-js\";\nimport { calculateBodyLength } from \"@smithy/util-body-length-browser\";\nimport { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from \"@smithy/util-retry\";\nimport { getRuntimeConfig as getSharedRuntimeConfig } from \"./runtimeConfig.shared\";\nimport { loadConfigsForDefaultMode } from \"@smithy/smithy-client\";\nimport { resolveDefaultsModeConfig } from \"@smithy/util-defaults-mode-browser\";\nexport const getRuntimeConfig = (config) => {\n const defaultsMode = resolveDefaultsModeConfig(config);\n const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);\n const clientSharedValues = getSharedRuntimeConfig(config);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"browser\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error(\"Credential is missing\"))),\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n defaultUserAgent({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),\n eventStreamSerdeProvider: config?.eventStreamSerdeProvider ?? eventStreamSerdeProvider,\n maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,\n md5: config?.md5 ?? Md5,\n region: config?.region ?? invalidProvider(\"Region is missing\"),\n requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE),\n sha1: config?.sha1 ?? Sha1,\n sha256: config?.sha256 ?? Sha256,\n streamCollector: config?.streamCollector ?? streamCollector,\n streamHasher: config?.streamHasher ?? streamHasher,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)),\n useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)),\n };\n};\n","export const invalidProvider = (message) => () => Promise.reject(message);\n","import { booleanSelector, SelectorType } from \"@smithy/util-config-provider\";\nexport const ENV_USE_DUALSTACK_ENDPOINT = \"AWS_USE_DUALSTACK_ENDPOINT\";\nexport const CONFIG_USE_DUALSTACK_ENDPOINT = \"use_dualstack_endpoint\";\nexport const DEFAULT_USE_DUALSTACK_ENDPOINT = false;\nexport const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, SelectorType.ENV),\n configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, SelectorType.CONFIG),\n default: false,\n};\n","import { booleanSelector, SelectorType } from \"@smithy/util-config-provider\";\nexport const ENV_USE_FIPS_ENDPOINT = \"AWS_USE_FIPS_ENDPOINT\";\nexport const CONFIG_USE_FIPS_ENDPOINT = \"use_fips_endpoint\";\nexport const DEFAULT_USE_FIPS_ENDPOINT = false;\nexport const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_FIPS_ENDPOINT, SelectorType.ENV),\n configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, SelectorType.CONFIG),\n default: false,\n};\n","import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from \"@aws-sdk/region-config-resolver\";\nimport { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from \"@smithy/protocol-http\";\nimport { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from \"@smithy/smithy-client\";\nconst asPartial = (t) => t;\nexport const resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial(getAwsRegionExtensionConfiguration(runtimeConfig)),\n ...asPartial(getDefaultExtensionConfiguration(runtimeConfig)),\n ...asPartial(getHttpHandlerExtensionConfiguration(runtimeConfig)),\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...resolveAwsRegionExtensionConfiguration(extensionConfiguration),\n ...resolveDefaultRuntimeConfig(extensionConfiguration),\n ...resolveHttpHandlerRuntimeConfig(extensionConfiguration),\n };\n};\n","export const getAwsRegionExtensionConfiguration = (runtimeConfig) => {\n let runtimeConfigRegion = async () => {\n if (runtimeConfig.region === undefined) {\n throw new Error(\"Region is missing from runtimeConfig\");\n }\n const region = runtimeConfig.region;\n if (typeof region === \"string\") {\n return region;\n }\n return region();\n };\n return {\n setRegion(region) {\n runtimeConfigRegion = region;\n },\n region() {\n return runtimeConfigRegion;\n },\n };\n};\nexport const resolveAwsRegionExtensionConfiguration = (awsRegionExtensionConfiguration) => {\n return {\n region: awsRegionExtensionConfiguration.region(),\n };\n};\n","import { getAddExpectContinuePlugin } from \"@aws-sdk/middleware-expect-continue\";\nimport { getHostHeaderPlugin, resolveHostHeaderConfig, } from \"@aws-sdk/middleware-host-header\";\nimport { getLoggerPlugin } from \"@aws-sdk/middleware-logger\";\nimport { getRecursionDetectionPlugin } from \"@aws-sdk/middleware-recursion-detection\";\nimport { getRegionRedirectMiddlewarePlugin, getS3ExpressPlugin, getValidateBucketNamePlugin, resolveS3Config, } from \"@aws-sdk/middleware-sdk-s3\";\nimport { getAwsAuthPlugin, resolveAwsAuthConfig, } from \"@aws-sdk/middleware-signing\";\nimport { getUserAgentPlugin, resolveUserAgentConfig, } from \"@aws-sdk/middleware-user-agent\";\nimport { resolveRegionConfig } from \"@smithy/config-resolver\";\nimport { resolveEventStreamSerdeConfig, } from \"@smithy/eventstream-serde-config-resolver\";\nimport { getContentLengthPlugin } from \"@smithy/middleware-content-length\";\nimport { resolveEndpointConfig } from \"@smithy/middleware-endpoint\";\nimport { getRetryPlugin, resolveRetryConfig } from \"@smithy/middleware-retry\";\nimport { Client as __Client, } from \"@smithy/smithy-client\";\nimport { CreateSessionCommand, } from \"./commands/CreateSessionCommand\";\nimport { resolveClientEndpointParameters, } from \"./endpoint/EndpointParameters\";\nimport { getRuntimeConfig as __getRuntimeConfig } from \"./runtimeConfig\";\nimport { resolveRuntimeExtensions } from \"./runtimeExtensions\";\nexport { __Client };\nexport class S3Client extends __Client {\n constructor(...[configuration]) {\n const _config_0 = __getRuntimeConfig(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = resolveRegionConfig(_config_1);\n const _config_3 = resolveEndpointConfig(_config_2);\n const _config_4 = resolveRetryConfig(_config_3);\n const _config_5 = resolveHostHeaderConfig(_config_4);\n const _config_6 = resolveAwsAuthConfig(_config_5);\n const _config_7 = resolveS3Config(_config_6, { session: [() => this, CreateSessionCommand] });\n const _config_8 = resolveUserAgentConfig(_config_7);\n const _config_9 = resolveEventStreamSerdeConfig(_config_8);\n const _config_10 = resolveRuntimeExtensions(_config_9, configuration?.extensions || []);\n super(_config_10);\n this.config = _config_10;\n this.middlewareStack.use(getRetryPlugin(this.config));\n this.middlewareStack.use(getContentLengthPlugin(this.config));\n this.middlewareStack.use(getHostHeaderPlugin(this.config));\n this.middlewareStack.use(getLoggerPlugin(this.config));\n this.middlewareStack.use(getRecursionDetectionPlugin(this.config));\n this.middlewareStack.use(getAwsAuthPlugin(this.config));\n this.middlewareStack.use(getValidateBucketNamePlugin(this.config));\n this.middlewareStack.use(getAddExpectContinuePlugin(this.config));\n this.middlewareStack.use(getRegionRedirectMiddlewarePlugin(this.config));\n this.middlewareStack.use(getS3ExpressPlugin(this.config));\n this.middlewareStack.use(getUserAgentPlugin(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\n","export function resolveUserAgentConfig(input) {\n return {\n ...input,\n customUserAgent: typeof input.customUserAgent === \"string\" ? [[input.customUserAgent]] : input.customUserAgent,\n };\n}\n","import { getRealRegion } from \"./getRealRegion\";\nimport { isFipsRegion } from \"./isFipsRegion\";\nexport const resolveRegionConfig = (input) => {\n const { region, useFipsEndpoint } = input;\n if (!region) {\n throw new Error(\"Region is missing\");\n }\n return {\n ...input,\n region: async () => {\n if (typeof region === \"string\") {\n return getRealRegion(region);\n }\n const providedRegion = await region();\n return getRealRegion(providedRegion);\n },\n useFipsEndpoint: async () => {\n const providedRegion = typeof region === \"string\" ? region : await region();\n if (isFipsRegion(providedRegion)) {\n return true;\n }\n return typeof useFipsEndpoint !== \"function\" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint();\n },\n };\n};\n","import { normalizeProvider } from \"@smithy/util-middleware\";\nimport { toEndpointV1 } from \"./adaptors/toEndpointV1\";\nexport const resolveEndpointConfig = (input) => {\n const tls = input.tls ?? true;\n const { endpoint } = input;\n const customEndpointProvider = endpoint != null ? async () => toEndpointV1(await normalizeProvider(endpoint)()) : undefined;\n const isCustomEndpoint = !!endpoint;\n return {\n ...input,\n endpoint: customEndpointProvider,\n tls,\n isCustomEndpoint,\n useDualstackEndpoint: normalizeProvider(input.useDualstackEndpoint ?? false),\n useFipsEndpoint: normalizeProvider(input.useFipsEndpoint ?? false),\n };\n};\n","import { normalizeProvider } from \"@smithy/util-middleware\";\nimport { AdaptiveRetryStrategy, DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE, RETRY_MODES, StandardRetryStrategy, } from \"@smithy/util-retry\";\nexport const ENV_MAX_ATTEMPTS = \"AWS_MAX_ATTEMPTS\";\nexport const CONFIG_MAX_ATTEMPTS = \"max_attempts\";\nexport const NODE_MAX_ATTEMPT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => {\n const value = env[ENV_MAX_ATTEMPTS];\n if (!value)\n return undefined;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n configFileSelector: (profile) => {\n const value = profile[CONFIG_MAX_ATTEMPTS];\n if (!value)\n return undefined;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n default: DEFAULT_MAX_ATTEMPTS,\n};\nexport const resolveRetryConfig = (input) => {\n const { retryStrategy } = input;\n const maxAttempts = normalizeProvider(input.maxAttempts ?? DEFAULT_MAX_ATTEMPTS);\n return {\n ...input,\n maxAttempts,\n retryStrategy: async () => {\n if (retryStrategy) {\n return retryStrategy;\n }\n const retryMode = await normalizeProvider(input.retryMode)();\n if (retryMode === RETRY_MODES.ADAPTIVE) {\n return new AdaptiveRetryStrategy(maxAttempts);\n }\n return new StandardRetryStrategy(maxAttempts);\n },\n };\n};\nexport const ENV_RETRY_MODE = \"AWS_RETRY_MODE\";\nexport const CONFIG_RETRY_MODE = \"retry_mode\";\nexport const NODE_RETRY_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_RETRY_MODE],\n configFileSelector: (profile) => profile[CONFIG_RETRY_MODE],\n default: DEFAULT_RETRY_MODE,\n};\n","import { S3ExpressIdentityProviderImpl } from \"./s3-express\";\nexport const resolveS3Config = (input, { session, }) => {\n const [s3ClientProvider, CreateSessionCommandCtor] = session;\n return {\n ...input,\n forcePathStyle: input.forcePathStyle ?? false,\n useAccelerateEndpoint: input.useAccelerateEndpoint ?? false,\n disableMultiregionAccessPoints: input.disableMultiregionAccessPoints ?? false,\n followRegionRedirects: input.followRegionRedirects ?? false,\n s3ExpressIdentityProvider: input.s3ExpressIdentityProvider ??\n new S3ExpressIdentityProviderImpl(async (key) => s3ClientProvider().send(new CreateSessionCommandCtor({\n Bucket: key,\n SessionMode: \"ReadWrite\",\n }))),\n bucketEndpoint: input.bucketEndpoint ?? false,\n };\n};\n","export const resolveEventStreamSerdeConfig = (input) => ({\n ...input,\n eventStreamMarshaller: input.eventStreamSerdeProvider(input),\n});\n","import { ChecksumAlgorithm } from \"./constants\";\nexport const CLIENT_SUPPORTED_ALGORITHMS = [\n ChecksumAlgorithm.CRC32,\n ChecksumAlgorithm.CRC32C,\n ChecksumAlgorithm.SHA1,\n ChecksumAlgorithm.SHA256,\n];\nexport const PRIORITY_ORDER_ALGORITHMS = [\n ChecksumAlgorithm.CRC32,\n ChecksumAlgorithm.CRC32C,\n ChecksumAlgorithm.SHA1,\n ChecksumAlgorithm.SHA256,\n];\n","import { DEFAULT_CHECKSUM_ALGORITHM, S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM } from \"./constants\";\nimport { CLIENT_SUPPORTED_ALGORITHMS } from \"./types\";\nexport const getChecksumAlgorithmForRequest = (input, { requestChecksumRequired, requestAlgorithmMember }, isS3Express) => {\n const defaultAlgorithm = isS3Express ? S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM : DEFAULT_CHECKSUM_ALGORITHM;\n if (!requestAlgorithmMember || !input[requestAlgorithmMember]) {\n return requestChecksumRequired ? defaultAlgorithm : undefined;\n }\n const checksumAlgorithm = input[requestAlgorithmMember];\n if (!CLIENT_SUPPORTED_ALGORITHMS.includes(checksumAlgorithm)) {\n throw new Error(`The checksum algorithm \"${checksumAlgorithm}\" is not supported by the client.` +\n ` Select one of ${CLIENT_SUPPORTED_ALGORITHMS}.`);\n }\n return checksumAlgorithm;\n};\n","import { ChecksumAlgorithm } from \"./constants\";\nexport const getChecksumLocationName = (algorithm) => algorithm === ChecksumAlgorithm.MD5 ? \"content-md5\" : `x-amz-checksum-${algorithm.toLowerCase()}`;\n","export const hasHeader = (header, headers) => {\n const soughtHeader = header.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return true;\n }\n }\n return false;\n};\n","import { isArrayBuffer } from \"@smithy/is-array-buffer\";\nexport const isStreaming = (body) => body !== undefined && typeof body !== \"string\" && !ArrayBuffer.isView(body) && !isArrayBuffer(body);\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Checksum, SourceData } from \"@aws-sdk/types\";\nimport { convertToBuffer, isEmptyData, numToUint8 } from \"@aws-crypto/util\";\nimport { Crc32c } from \"./index\";\n\nexport class AwsCrc32c implements Checksum {\n private crc32c = new Crc32c();\n\n update(toHash: SourceData) {\n if (isEmptyData(toHash)) return;\n\n this.crc32c.update(convertToBuffer(toHash));\n }\n\n async digest(): Promise<Uint8Array> {\n return numToUint8(this.crc32c.digest());\n }\n\n reset(): void {\n this.crc32c = new Crc32c();\n }\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {uint32ArrayFrom} from \"@aws-crypto/util\";\n\nexport function crc32c(data: Uint8Array): number {\n return new Crc32c().update(data).digest();\n}\n\nexport class Crc32c {\n private checksum = 0xffffffff;\n\n update(data: Uint8Array): this {\n for (const byte of data) {\n this.checksum =\n (this.checksum >>> 8) ^ lookupTable[(this.checksum ^ byte) & 0xff];\n }\n\n return this;\n }\n\n digest(): number {\n return (this.checksum ^ 0xffffffff) >>> 0;\n }\n}\n\n// prettier-ignore\nconst a_lookupTable = [\n 0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4, 0xC79A971F, 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB,\n 0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B, 0x4D43CFD0, 0xBF284CD3, 0xAC78BF27, 0x5E133C24,\n 0x105EC76F, 0xE235446C, 0xF165B798, 0x030E349B, 0xD7C45070, 0x25AFD373, 0x36FF2087, 0xC494A384,\n 0x9A879FA0, 0x68EC1CA3, 0x7BBCEF57, 0x89D76C54, 0x5D1D08BF, 0xAF768BBC, 0xBC267848, 0x4E4DFB4B,\n 0x20BD8EDE, 0xD2D60DDD, 0xC186FE29, 0x33ED7D2A, 0xE72719C1, 0x154C9AC2, 0x061C6936, 0xF477EA35,\n 0xAA64D611, 0x580F5512, 0x4B5FA6E6, 0xB93425E5, 0x6DFE410E, 0x9F95C20D, 0x8CC531F9, 0x7EAEB2FA,\n 0x30E349B1, 0xC288CAB2, 0xD1D83946, 0x23B3BA45, 0xF779DEAE, 0x05125DAD, 0x1642AE59, 0xE4292D5A,\n 0xBA3A117E, 0x4851927D, 0x5B016189, 0xA96AE28A, 0x7DA08661, 0x8FCB0562, 0x9C9BF696, 0x6EF07595,\n 0x417B1DBC, 0xB3109EBF, 0xA0406D4B, 0x522BEE48, 0x86E18AA3, 0x748A09A0, 0x67DAFA54, 0x95B17957,\n 0xCBA24573, 0x39C9C670, 0x2A993584, 0xD8F2B687, 0x0C38D26C, 0xFE53516F, 0xED03A29B, 0x1F682198,\n 0x5125DAD3, 0xA34E59D0, 0xB01EAA24, 0x42752927, 0x96BF4DCC, 0x64D4CECF, 0x77843D3B, 0x85EFBE38,\n 0xDBFC821C, 0x2997011F, 0x3AC7F2EB, 0xC8AC71E8, 0x1C661503, 0xEE0D9600, 0xFD5D65F4, 0x0F36E6F7,\n 0x61C69362, 0x93AD1061, 0x80FDE395, 0x72966096, 0xA65C047D, 0x5437877E, 0x4767748A, 0xB50CF789,\n 0xEB1FCBAD, 0x197448AE, 0x0A24BB5A, 0xF84F3859, 0x2C855CB2, 0xDEEEDFB1, 0xCDBE2C45, 0x3FD5AF46,\n 0x7198540D, 0x83F3D70E, 0x90A324FA, 0x62C8A7F9, 0xB602C312, 0x44694011, 0x5739B3E5, 0xA55230E6,\n 0xFB410CC2, 0x092A8FC1, 0x1A7A7C35, 0xE811FF36, 0x3CDB9BDD, 0xCEB018DE, 0xDDE0EB2A, 0x2F8B6829,\n 0x82F63B78, 0x709DB87B, 0x63CD4B8F, 0x91A6C88C, 0x456CAC67, 0xB7072F64, 0xA457DC90, 0x563C5F93,\n 0x082F63B7, 0xFA44E0B4, 0xE9141340, 0x1B7F9043, 0xCFB5F4A8, 0x3DDE77AB, 0x2E8E845F, 0xDCE5075C,\n 0x92A8FC17, 0x60C37F14, 0x73938CE0, 0x81F80FE3, 0x55326B08, 0xA759E80B, 0xB4091BFF, 0x466298FC,\n 0x1871A4D8, 0xEA1A27DB, 0xF94AD42F, 0x0B21572C, 0xDFEB33C7, 0x2D80B0C4, 0x3ED04330, 0xCCBBC033,\n 0xA24BB5A6, 0x502036A5, 0x4370C551, 0xB11B4652, 0x65D122B9, 0x97BAA1BA, 0x84EA524E, 0x7681D14D,\n 0x2892ED69, 0xDAF96E6A, 0xC9A99D9E, 0x3BC21E9D, 0xEF087A76, 0x1D63F975, 0x0E330A81, 0xFC588982,\n 0xB21572C9, 0x407EF1CA, 0x532E023E, 0xA145813D, 0x758FE5D6, 0x87E466D5, 0x94B49521, 0x66DF1622,\n 0x38CC2A06, 0xCAA7A905, 0xD9F75AF1, 0x2B9CD9F2, 0xFF56BD19, 0x0D3D3E1A, 0x1E6DCDEE, 0xEC064EED,\n 0xC38D26C4, 0x31E6A5C7, 0x22B65633, 0xD0DDD530, 0x0417B1DB, 0xF67C32D8, 0xE52CC12C, 0x1747422F,\n 0x49547E0B, 0xBB3FFD08, 0xA86F0EFC, 0x5A048DFF, 0x8ECEE914, 0x7CA56A17, 0x6FF599E3, 0x9D9E1AE0,\n 0xD3D3E1AB, 0x21B862A8, 0x32E8915C, 0xC083125F, 0x144976B4, 0xE622F5B7, 0xF5720643, 0x07198540,\n 0x590AB964, 0xAB613A67, 0xB831C993, 0x4A5A4A90, 0x9E902E7B, 0x6CFBAD78, 0x7FAB5E8C, 0x8DC0DD8F,\n 0xE330A81A, 0x115B2B19, 0x020BD8ED, 0xF0605BEE, 0x24AA3F05, 0xD6C1BC06, 0xC5914FF2, 0x37FACCF1,\n 0x69E9F0D5, 0x9B8273D6, 0x88D28022, 0x7AB90321, 0xAE7367CA, 0x5C18E4C9, 0x4F48173D, 0xBD23943E,\n 0xF36E6F75, 0x0105EC76, 0x12551F82, 0xE03E9C81, 0x34F4F86A, 0xC69F7B69, 0xD5CF889D, 0x27A40B9E,\n 0x79B737BA, 0x8BDCB4B9, 0x988C474D, 0x6AE7C44E, 0xBE2DA0A5, 0x4C4623A6, 0x5F16D052, 0xAD7D5351,\n];\n\nconst lookupTable: Uint32Array = uint32ArrayFrom(a_lookupTable)\nexport { AwsCrc32c } from \"./aws_crc32c\";\n","import { AwsCrc32 } from \"@aws-crypto/crc32\";\nimport { AwsCrc32c } from \"@aws-crypto/crc32c\";\nimport { ChecksumAlgorithm } from \"./constants\";\nexport const selectChecksumAlgorithmFunction = (checksumAlgorithm, config) => ({\n [ChecksumAlgorithm.MD5]: config.md5,\n [ChecksumAlgorithm.CRC32]: AwsCrc32,\n [ChecksumAlgorithm.CRC32C]: AwsCrc32c,\n [ChecksumAlgorithm.SHA1]: config.sha1,\n [ChecksumAlgorithm.SHA256]: config.sha256,\n}[checksumAlgorithm]);\n","import { toUint8Array } from \"@smithy/util-utf8\";\nexport const stringHasher = (checksumAlgorithmFn, body) => {\n const hash = new checksumAlgorithmFn();\n hash.update(toUint8Array(body || \"\"));\n return hash.digest();\n};\n","import { HttpRequest } from \"@smithy/protocol-http\";\nimport { getChecksumAlgorithmForRequest } from \"./getChecksumAlgorithmForRequest\";\nimport { getChecksumLocationName } from \"./getChecksumLocationName\";\nimport { hasHeader } from \"./hasHeader\";\nimport { isStreaming } from \"./isStreaming\";\nimport { selectChecksumAlgorithmFunction } from \"./selectChecksumAlgorithmFunction\";\nimport { stringHasher } from \"./stringHasher\";\nexport const flexibleChecksumsMiddlewareOptions = {\n name: \"flexibleChecksumsMiddleware\",\n step: \"build\",\n tags: [\"BODY_CHECKSUM\"],\n override: true,\n};\nexport const flexibleChecksumsMiddleware = (config, middlewareConfig) => (next, context) => async (args) => {\n if (!HttpRequest.isInstance(args.request)) {\n return next(args);\n }\n const { request } = args;\n const { body: requestBody, headers } = request;\n const { base64Encoder, streamHasher } = config;\n const { input, requestChecksumRequired, requestAlgorithmMember } = middlewareConfig;\n const checksumAlgorithm = getChecksumAlgorithmForRequest(input, {\n requestChecksumRequired,\n requestAlgorithmMember,\n }, !!context.isS3ExpressBucket);\n let updatedBody = requestBody;\n let updatedHeaders = headers;\n if (checksumAlgorithm) {\n const checksumLocationName = getChecksumLocationName(checksumAlgorithm);\n const checksumAlgorithmFn = selectChecksumAlgorithmFunction(checksumAlgorithm, config);\n if (isStreaming(requestBody)) {\n const { getAwsChunkedEncodingStream, bodyLengthChecker } = config;\n updatedBody = getAwsChunkedEncodingStream(requestBody, {\n base64Encoder,\n bodyLengthChecker,\n checksumLocationName,\n checksumAlgorithmFn,\n streamHasher,\n });\n updatedHeaders = {\n ...headers,\n \"content-encoding\": headers[\"content-encoding\"]\n ? `${headers[\"content-encoding\"]},aws-chunked`\n : \"aws-chunked\",\n \"transfer-encoding\": \"chunked\",\n \"x-amz-decoded-content-length\": headers[\"content-length\"],\n \"x-amz-content-sha256\": \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\",\n \"x-amz-trailer\": checksumLocationName,\n };\n delete updatedHeaders[\"content-length\"];\n }\n else if (!hasHeader(checksumLocationName, headers)) {\n const rawChecksum = await stringHasher(checksumAlgorithmFn, requestBody);\n updatedHeaders = {\n ...headers,\n [checksumLocationName]: base64Encoder(rawChecksum),\n };\n }\n }\n const result = await next({\n ...args,\n request: {\n ...request,\n headers: updatedHeaders,\n body: updatedBody,\n },\n });\n return result;\n};\n","import { CLIENT_SUPPORTED_ALGORITHMS, PRIORITY_ORDER_ALGORITHMS } from \"./types\";\nexport const getChecksumAlgorithmListForResponse = (responseAlgorithms = []) => {\n const validChecksumAlgorithms = [];\n for (const algorithm of PRIORITY_ORDER_ALGORITHMS) {\n if (!responseAlgorithms.includes(algorithm) || !CLIENT_SUPPORTED_ALGORITHMS.includes(algorithm)) {\n continue;\n }\n validChecksumAlgorithms.push(algorithm);\n }\n return validChecksumAlgorithms;\n};\n","export const isChecksumWithPartNumber = (checksum) => {\n const lastHyphenIndex = checksum.lastIndexOf(\"-\");\n if (lastHyphenIndex !== -1) {\n const numberPart = checksum.slice(lastHyphenIndex + 1);\n if (!numberPart.startsWith(\"0\")) {\n const number = parseInt(numberPart, 10);\n if (!isNaN(number) && number >= 1 && number <= 10000) {\n return true;\n }\n }\n }\n return false;\n};\n","export function createReadStreamOnBuffer(buffer) {\n return new Blob([buffer]).stream();\n}\n","import { isStreaming } from \"./isStreaming\";\nimport { stringHasher } from \"./stringHasher\";\nexport const getChecksum = async (body, { streamHasher, checksumAlgorithmFn, base64Encoder }) => {\n const digest = isStreaming(body) ? streamHasher(checksumAlgorithmFn, body) : stringHasher(checksumAlgorithmFn, body);\n return base64Encoder(await digest);\n};\n","import { getChecksum } from \"./getChecksum\";\nimport { getChecksumAlgorithmListForResponse } from \"./getChecksumAlgorithmListForResponse\";\nimport { getChecksumLocationName } from \"./getChecksumLocationName\";\nimport { selectChecksumAlgorithmFunction } from \"./selectChecksumAlgorithmFunction\";\nexport const validateChecksumFromResponse = async (response, { config, responseAlgorithms }) => {\n const checksumAlgorithms = getChecksumAlgorithmListForResponse(responseAlgorithms);\n const { body: responseBody, headers: responseHeaders } = response;\n for (const algorithm of checksumAlgorithms) {\n const responseHeader = getChecksumLocationName(algorithm);\n const checksumFromResponse = responseHeaders[responseHeader];\n if (checksumFromResponse) {\n const checksumAlgorithmFn = selectChecksumAlgorithmFunction(algorithm, config);\n const { streamHasher, base64Encoder } = config;\n const checksum = await getChecksum(responseBody, { streamHasher, checksumAlgorithmFn, base64Encoder });\n if (checksum === checksumFromResponse) {\n break;\n }\n throw new Error(`Checksum mismatch: expected \"${checksum}\" but received \"${checksumFromResponse}\"` +\n ` in response header \"${responseHeader}\".`);\n }\n }\n};\n","import { HttpRequest } from \"@smithy/protocol-http\";\nimport { getChecksumAlgorithmListForResponse } from \"./getChecksumAlgorithmListForResponse\";\nimport { getChecksumLocationName } from \"./getChecksumLocationName\";\nimport { isChecksumWithPartNumber } from \"./isChecksumWithPartNumber\";\nimport { isStreaming } from \"./isStreaming\";\nimport { createReadStreamOnBuffer } from \"./streams/create-read-stream-on-buffer\";\nimport { validateChecksumFromResponse } from \"./validateChecksumFromResponse\";\nexport const flexibleChecksumsResponseMiddlewareOptions = {\n name: \"flexibleChecksumsResponseMiddleware\",\n toMiddleware: \"deserializerMiddleware\",\n relation: \"after\",\n tags: [\"BODY_CHECKSUM\"],\n override: true,\n};\nexport const flexibleChecksumsResponseMiddleware = (config, middlewareConfig) => (next, context) => async (args) => {\n if (!HttpRequest.isInstance(args.request)) {\n return next(args);\n }\n const input = args.input;\n const result = await next(args);\n const response = result.response;\n let collectedStream = undefined;\n const { requestValidationModeMember, responseAlgorithms } = middlewareConfig;\n if (requestValidationModeMember && input[requestValidationModeMember] === \"ENABLED\") {\n const { clientName, commandName } = context;\n const isS3WholeObjectMultipartGetResponseChecksum = clientName === \"S3Client\" &&\n commandName === \"GetObjectCommand\" &&\n getChecksumAlgorithmListForResponse(responseAlgorithms).every((algorithm) => {\n const responseHeader = getChecksumLocationName(algorithm);\n const checksumFromResponse = response.headers[responseHeader];\n return !checksumFromResponse || isChecksumWithPartNumber(checksumFromResponse);\n });\n if (isS3WholeObjectMultipartGetResponseChecksum) {\n return result;\n }\n const isStreamingBody = isStreaming(response.body);\n if (isStreamingBody) {\n collectedStream = await config.streamCollector(response.body);\n response.body = createReadStreamOnBuffer(collectedStream);\n }\n await validateChecksumFromResponse(result.response, {\n config,\n responseAlgorithms,\n });\n if (isStreamingBody && collectedStream) {\n response.body = createReadStreamOnBuffer(collectedStream);\n }\n }\n return result;\n};\n","import { flexibleChecksumsMiddleware, flexibleChecksumsMiddlewareOptions, } from \"./flexibleChecksumsMiddleware\";\nimport { flexibleChecksumsResponseMiddleware, flexibleChecksumsResponseMiddlewareOptions, } from \"./flexibleChecksumsResponseMiddleware\";\nexport const getFlexibleChecksumsPlugin = (config, middlewareConfig) => ({\n applyToStack: (clientStack) => {\n clientStack.add(flexibleChecksumsMiddleware(config, middlewareConfig), flexibleChecksumsMiddlewareOptions);\n clientStack.addRelativeTo(flexibleChecksumsResponseMiddleware(config, middlewareConfig), flexibleChecksumsResponseMiddlewareOptions);\n },\n});\n","export function ssecMiddleware(options) {\n return (next) => async (args) => {\n const input = { ...args.input };\n const properties = [\n {\n target: \"SSECustomerKey\",\n hash: \"SSECustomerKeyMD5\",\n },\n {\n target: \"CopySourceSSECustomerKey\",\n hash: \"CopySourceSSECustomerKeyMD5\",\n },\n ];\n for (const prop of properties) {\n const value = input[prop.target];\n if (value) {\n let valueForHash;\n if (typeof value === \"string\") {\n if (isValidBase64EncodedSSECustomerKey(value, options)) {\n valueForHash = options.base64Decoder(value);\n }\n else {\n valueForHash = options.utf8Decoder(value);\n input[prop.target] = options.base64Encoder(valueForHash);\n }\n }\n else {\n valueForHash = ArrayBuffer.isView(value)\n ? new Uint8Array(value.buffer, value.byteOffset, value.byteLength)\n : new Uint8Array(value);\n input[prop.target] = options.base64Encoder(valueForHash);\n }\n const hash = new options.md5();\n hash.update(valueForHash);\n input[prop.hash] = options.base64Encoder(await hash.digest());\n }\n }\n return next({\n ...args,\n input,\n });\n };\n}\nexport const ssecMiddlewareOptions = {\n name: \"ssecMiddleware\",\n step: \"initialize\",\n tags: [\"SSE\"],\n override: true,\n};\nexport const getSsecPlugin = (config) => ({\n applyToStack: (clientStack) => {\n clientStack.add(ssecMiddleware(config), ssecMiddlewareOptions);\n },\n});\nexport function isValidBase64EncodedSSECustomerKey(str, options) {\n const base64Regex = /^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n if (!base64Regex.test(str))\n return false;\n try {\n const decodedBytes = options.base64Decoder(str);\n return decodedBytes.length === 32;\n }\n catch {\n return false;\n }\n}\n","import { getFlexibleChecksumsPlugin } from \"@aws-sdk/middleware-flexible-checksums\";\nimport { getCheckContentLengthHeaderPlugin } from \"@aws-sdk/middleware-sdk-s3\";\nimport { getSsecPlugin } from \"@aws-sdk/middleware-ssec\";\nimport { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { PutObjectOutputFilterSensitiveLog, PutObjectRequestFilterSensitiveLog, } from \"../models/models_1\";\nimport { de_PutObjectCommand, se_PutObjectCommand } from \"../protocols/Aws_restXml\";\nexport { $Command };\nexport class PutObjectCommand extends $Command\n .classBuilder()\n .ep({\n ...commonParams,\n Bucket: { type: \"contextParams\", name: \"Bucket\" },\n Key: { type: \"contextParams\", name: \"Key\" },\n})\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n getCheckContentLengthHeaderPlugin(config),\n getSsecPlugin(config),\n getFlexibleChecksumsPlugin(config, {\n input: this.input,\n requestAlgorithmMember: \"ChecksumAlgorithm\",\n requestChecksumRequired: false,\n }),\n ];\n})\n .s(\"AmazonS3\", \"PutObject\", {})\n .n(\"S3Client\", \"PutObjectCommand\")\n .f(PutObjectRequestFilterSensitiveLog, PutObjectOutputFilterSensitiveLog)\n .ser(se_PutObjectCommand)\n .de(de_PutObjectCommand)\n .build() {\n}\n","import { PutObjectCommand, S3Client } from '@aws-sdk/client-s3';\nimport URI from 'urijs';\n\nexport const createBlockUploadTransaction = async (\n bearerToken,\n selectedDatabase\n) => {\n const url = new URI(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/admin/fruition/blocks/transaction`\n );\n const response = await fetch(url.valueOf(), {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n SeasonalDatabase: selectedDatabase\n }\n });\n if (!response.ok) {\n throw response.statusText;\n }\n const data = await response.json();\n // Throw error if there is no 'id' property in the response.\n if (!('id' in data)) {\n throw new Error('No id in response');\n }\n // Return the transaction ID.\n return data.id;\n};\n\nexport const updateBlockUploadTransaction = async (\n transactionId,\n bearerToken,\n selectedDatabase,\n status_id = 4,\n message,\n response\n) => {\n const url = new URI(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/admin/fruition/blocks/transaction/${transactionId}`\n );\n const res = await fetch(url.valueOf(), {\n method: 'PUT',\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n SeasonalDatabase: selectedDatabase\n },\n body: JSON.stringify({ status_id, message, response })\n });\n if (!res.ok) {\n throw res.statusText;\n }\n const data = await res.json();\n return data;\n};\n\nexport const getUnmatchedBlockClusters = async (\n bearerToken,\n selectedDatabase\n) => {\n const url = new URI(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/admin/fruition/blocks/unmatched`\n );\n const response = await fetch(url.valueOf(), {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n SeasonalDatabase: selectedDatabase\n }\n });\n if (!response.ok) {\n throw response.statusText;\n }\n const data = await response.json();\n return data;\n};\n\nexport const uploadToS3 = async (\n data,\n filename,\n transactionId,\n selectedDatabase,\n tempAwsCredentials,\n refresh\n) => {\n const season = selectedDatabase ? selectedDatabase.substr(9) : null;\n const s3Client = new S3Client({\n region: 'ap-southeast-2',\n credentials: {\n accessKeyId: tempAwsCredentials['key'],\n secretAccessKey: tempAwsCredentials['secret'],\n sessionToken: tempAwsCredentials['token']\n }\n });\n const params = {\n Bucket: process.env.REACT_APP_BLOCK_SCANNING_UPLOAD_BUCKET,\n Key: `unprocessed/${filename}`,\n Body: data,\n ContentType: 'application/json',\n Metadata: {\n transaction_id: transactionId.toString(),\n season,\n run_type:\n process.env.REACT_APP_ENVIRONMENT === 'development'\n ? 'event_test'\n : 'event'\n }\n };\n try {\n const command = new PutObjectCommand(params);\n await s3Client.send(command);\n return true;\n } catch (error) {\n if (error.name === 'ExpiredToken') {\n console.error('Access denied:', error);\n refresh();\n return false;\n }\n console.error('Error uploading file:', error);\n return false;\n }\n};\n\n","import { observer } from 'mobx-react';\nimport { useContext, useEffect, useRef, useState } from 'react';\nimport { Button, Col, Row, Spinner } from 'react-bootstrap';\nimport { storesContext } from '../../../stores/storesContext';\nimport { errorToast, successToast } from '../../helpers/toasts/ToastUtils';\nimport Files from './Files';\nimport UnmatchedPolygons from './UnmatchedPolygons';\nimport UploadStatus from './UploadStatus';\nimport useTransactionPolling from './useTransactionPolling';\nimport {\n createBlockUploadTransaction,\n getUnmatchedBlockClusters,\n updateBlockUploadTransaction,\n uploadToS3\n} from './util';\n\nconst FileUpload = () => {\n const userStore = useContext(storesContext);\n const fileInputRef = useRef(null);\n const [files, setFiles] = useState([]);\n const [uploading, setUploading] = useState(false);\n const [unmatchedClusters, setUnmatchedClusters] = useState([]);\n const [loadingUnmatched, setLoadingUnmatched] = useState(false);\n\n const { status, resetStatus, startPolling } = useTransactionPolling();\n\n const bearerToken = userStore.bearerToken;\n const selectedDatabase = userStore.selectedDatabase;\n const tempAwsCredentials = userStore.tempAwsCredentials;\n\n // Determines whether the upload/polygon processing process is running.\n const isProcessing =\n uploading || status === 'PENDING' || status === 'PROCESSING';\n // Determines whether the upload/polygon processing process has finished.\n const isFinished =\n !uploading && (status === 'COMPLETE' || status === 'ERROR');\n // No files chosen.\n const noFiles = files.length === 0;\n\n const updateInputFiles = (files) => {\n const dt = new DataTransfer();\n for (let file of files) {\n const newFile = new File([file], file.name, { type: file.type });\n dt.items.add(newFile);\n }\n fileInputRef.current.files = dt.files;\n };\n\n const validateFiles = async (newFiles) => {\n // Check if any files are not JSON files.\n const hasNonJsonFile = newFiles.some(\n (nf) => nf.type !== 'application/json'\n );\n if (hasNonJsonFile) {\n errorToast(\n 'Cannot upload files. Only JSON files are allowed.',\n 'upload-error'\n );\n return false;\n }\n // Check if file has already been added.\n const haveFile = newFiles.some((nf) =>\n files.find((f) => f.name === nf.name)\n );\n if (haveFile) {\n return false;\n }\n // Check the JSON content has the format we are expecting.\n const currentFiles = fileInputRef.current.files;\n for (let file of currentFiles) {\n const fileText = await file.text();\n const jsonData = JSON.parse(fileText);\n if (\n !('block-polygons' in jsonData) ||\n !('features' in jsonData['block-polygons'])\n ) {\n errorToast(\n `Cannot upload files. No polygons found in file ${file.name}.`,\n 'upload-error'\n );\n return false;\n }\n }\n return true;\n };\n\n const handleFileChange = async (event) => {\n const newFiles = Array.from(event.target.files);\n // Check if the file has already been chosen.\n const isValid = await validateFiles(newFiles);\n if (!isValid) {\n // Revert input files back to current react 'files' state.\n updateInputFiles(files);\n return;\n }\n // Add new files to the existing files array.\n setFiles((prev) => {\n const allFiles = [...prev, ...newFiles];\n updateInputFiles(allFiles);\n // Only reset status if new files were added.\n if (newFiles.length > 0) resetStatus();\n return allFiles;\n });\n };\n\n const handleFileRemove = (filename) => {\n resetStatus();\n // Remove files from file input element.\n const dt = new DataTransfer();\n const currentFiles = fileInputRef.current.files;\n for (let file of currentFiles) {\n dt.items.add(file);\n }\n for (let i = 0; i < dt.items.length; i++) {\n if (dt.items[i].getAsFile().name === filename) {\n dt.items.remove(i);\n }\n }\n fileInputRef.current.files = dt.files;\n // Remove files from state if files were removed from input successfully.\n if (dt.items.length === files.length - 1) {\n setFiles((prev) => prev.filter((f) => f.name !== filename));\n }\n };\n\n const handleFileUpload = async () => {\n // Check if there are no chosen files.\n if (files.length === 0) {\n errorToast('Cannot upload files. No files chosen.', 'upload-error');\n return;\n }\n // Process current files in input.\n setUploading(true);\n const currentFiles = fileInputRef.current.files;\n await processFiles(currentFiles);\n setUploading(false);\n };\n\n const processFiles = async (files) => {\n // Pull polygon features from the files and create a GeoJSON feature collection.\n const featureCollection = {\n type: 'FeatureCollection',\n features: []\n };\n for (let file of files) {\n const fileText = await file.text();\n const jsonData = JSON.parse(fileText);\n // The JSON file has been validated so the 'block-polygons' property will exist.\n const features = jsonData['block-polygons']['features'];\n const newFeatures = featureCollection.features.concat(features);\n featureCollection.features = newFeatures;\n }\n let transactionId;\n try {\n // Create block upload transaction in Properties API.\n transactionId = await createBlockUploadTransaction(\n bearerToken,\n selectedDatabase\n );\n // Upload the feature collection to S3.\n const success = await uploadToS3(\n JSON.stringify(featureCollection),\n 'polygons.geojson',\n transactionId,\n selectedDatabase,\n tempAwsCredentials,\n userStore.refreshCallback\n );\n // If the S3 upload fails then set the transaction status to ERROR.\n if (!success) {\n await updateBlockUploadTransaction(\n transactionId,\n bearerToken,\n selectedDatabase\n );\n throw new Error('S3 upload failed');\n }\n // Start polling the transaction status.\n const finishedStatus = await startPolling(transactionId);\n if (finishedStatus === 'COMPLETE') {\n setLoadingUnmatched(true);\n const unmatched = await getUnmatchedBlockClusters(\n bearerToken,\n selectedDatabase\n );\n setUnmatchedClusters(unmatched);\n setLoadingUnmatched(false);\n successToast('File uploaded successfully!', 'upload-success');\n } else {\n errorToast('Failed to upload files.', 'upload-error');\n }\n } catch (error) {\n setLoadingUnmatched(false);\n console.log(error.message, error.stack);\n console.error('Error creating block upload transaction:', error);\n errorToast('Failed to upload files.', 'upload-error');\n if (transactionId)\n await updateBlockUploadTransaction(\n transactionId,\n bearerToken,\n selectedDatabase,\n 4, // ERROR,\n 'Could not create block upload transaction.',\n JSON.stringify({ message: error.message, stack: error.stack })\n );\n return;\n }\n };\n\n useEffect(() => {\n const fetchUnmatched = async () => {\n setLoadingUnmatched(true);\n const unmatched = await getUnmatchedBlockClusters(\n bearerToken,\n selectedDatabase\n );\n setLoadingUnmatched(false);\n setUnmatchedClusters(unmatched);\n };\n if (unmatchedClusters.length > 0 || !selectedDatabase) return;\n try {\n fetchUnmatched();\n } catch (error) {\n console.error('Failed to get unmatched polygons:', error);\n errorToast(\n 'Failed to fetch unmatched block clusters.',\n 'unmatched-error'\n );\n }\n }, [bearerToken, selectedDatabase, unmatchedClusters.length]);\n\n return (\n <>\n <Row>\n <Col>\n <div className='input-group' style={{ zIndex: 1 }}>\n <div className='custom-file'>\n <input\n ref={fileInputRef}\n type='file'\n multiple\n className='custom-file-input'\n id='input-group-file'\n aria-describedby='input-group-file-addon'\n disabled={isProcessing}\n onChange={handleFileChange}\n />\n <label className='custom-file-label' htmlFor='input-group-file'>\n Choose file\n </label>\n </div>\n <div className='input-group-append'>\n <Button\n id='input-group-file-addon'\n variant='primary'\n onClick={handleFileUpload}\n disabled={isProcessing || isFinished || noFiles}\n className={isProcessing ? 'px-4' : ''}\n >\n {isProcessing ? (\n <Spinner\n as='span'\n animation='border'\n size='sm'\n role='status'\n aria-hidden='true'\n />\n ) : (\n 'Upload'\n )}\n </Button>\n </div>\n </div>\n </Col>\n </Row>\n <Row className='mt-2 px-3'>\n <Files\n files={files}\n isProcessing={isProcessing}\n handleFileRemove={handleFileRemove}\n />\n </Row>\n {status ? (\n <Row>\n <Col>\n <UploadStatus status={status} isProcessing={isProcessing} />\n </Col>\n </Row>\n ) : null}\n <Row className='mt-4'>\n <Col>\n {loadingUnmatched ? (\n <div className='text-center'>\n <Spinner className='mt-4' animation='border' variant='primary' />\n </div>\n ) : unmatchedClusters.length > 0 ? (\n <UnmatchedPolygons unmatchedPolygons={unmatchedClusters} />\n ) : null}\n </Col>\n </Row>\n </>\n );\n};\n\nexport default observer(FileUpload);\n\n","import { Alert, Col, Row } from 'react-bootstrap';\nimport PageTitle from '../../helpers/PageTitle';\nimport FileUpload from './FileUpload';\n\nconst BlockScanningUploadPage = () => {\n return (\n <div className='mb-4'>\n <Row>\n <Col>\n <PageTitle title={'Block Scanning Upload'} />\n </Col>\n </Row>\n <Row>\n <Col>\n <h6 className='text-center'>\n Upload the latest blocks and view on the Block Scanning Reports map\n tool\n </h6>\n </Col>\n </Row>\n <Row className='my-2 no-gutters' xs={12} lg={8}>\n <Col xs={0} lg={1} xl={2} />\n <Col xs={12} lg={10} xl={8}>\n <Alert variant='info'>\n <Alert.Heading>How to use</Alert.Heading>\n <p>\n To get started, click 'Browse' to choose the files you wish to\n upload. These files must contain all polygons. Please choose the\n files with the latest polygons. Click 'Upload' to begin the\n process. This can take several minutes. Please do not refresh your\n browser once the process has started.\n </p>\n <hr />\n <h5>File Type</h5>\n <p className='mb-0'>\n Only JSON files are accepted. These files must contain a property\n named <i>block-polygons</i> that is a GeoJSON FeatureCollection\n that contains a <i>features</i> array of GeoJSON Polygon features.\n Please contact support if you need any assistance.\n </p>\n </Alert>\n </Col>\n <Col xs={0} lg={2} xl={2} />\n </Row>\n <Row className='no-gutters mt-2' xs={12} lg={8}>\n <Col xs={0} lg={1} xl={2} />\n <Col xs={12} lg={10} xl={8}>\n <FileUpload />\n </Col>\n <Col xs={0} lg={2} xl={2} />\n </Row>\n </div>\n );\n};\n\nexport default BlockScanningUploadPage;\n\n","import React from 'react';\nimport { Alert } from 'react-bootstrap';\n\nconst GreenAtlasAdvertisement = (props) => {\n const getPropertyNameText = () => {\n return props.propertyName ? <b>{props.propertyName}</b> : 'this property';\n };\n\n return (\n <Alert variant='info'>\n <p className='mb-0'>\n Green Atlas scanning provides a unique view of actual crop and canopy\n variability for your entire block. This powerful data insight informs\n precise management decisions.\n </p>\n <br />\n <p className='mt-2 mb-0'>\n No Green Atlas scanning has been completed on {getPropertyNameText()}{' '}\n for the selected season. <br /> To find out more about this cool\n technology{' '}\n <a href='https://fruition-metwatch-assets.s3.ap-southeast-2.amazonaws.com/brochure+/fruition-greenatlas-brochure.pdf'>\n click here\n </a>\n .\n </p>\n </Alert>\n );\n};\n\nexport default GreenAtlasAdvertisement;\n\n","import { GlobalPropertiesSelect } from '@hortplus/properties-react';\nimport isMobile from 'ismobilejs';\nimport { observer } from 'mobx-react-lite';\nimport React, { useCallback, useContext, useState } from 'react';\nimport { Button, Col, Form, Modal, Row } from 'react-bootstrap';\nimport Select from 'react-select';\nimport { storesContext } from '../../stores/storesContext';\nimport { pdfTypes, reportTypes, scanTypes, stages } from './CropScanningUtils';\n\nconst AdvancedFilterModal = ({ formik, blocks, loadingBlocks }) => {\n const userStore = useContext(storesContext);\n const [show, setShow] = useState(false);\n\n // Returns whether at least one filter is selected.\n const hasFilter = useCallback(() => {\n const values = formik.values;\n let hasFilter = false;\n Object.keys(values).forEach((v) => {\n if (values[v]) hasFilter = true;\n });\n return hasFilter;\n }, [formik.values]);\n\n return (\n <>\n <Button\n variant={hasFilter() ? 'primary' : 'outline-primary'}\n onClick={() => setShow(true)}\n >\n Advanced Filter\n </Button>\n <Modal show={show} onHide={() => setShow(false)} backdrop='static'>\n <Modal.Header closeButton>\n <Modal.Title>Advanced Filter</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form noValidate onSubmit={formik.handleSubmit}>\n {isMobile(window.navigator).any ? (\n <Form.Group as={Row} controlId='block_code'>\n <Form.Label column sm={3}>\n Property\n </Form.Label>\n <Col sm={10} md={8} lg={6}>\n <GlobalPropertiesSelect\n selectedDatabase={userStore.selectedDatabase}\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refreshCallback}\n propertiesStore={userStore.propertiesStore}\n />\n </Col>\n </Form.Group>\n ) : null}\n <>\n <Form.Group as={Row} controlId='block_code'>\n <Form.Label column sm={3}>\n Block Code\n </Form.Label>\n <Col sm={9}>\n <Select\n isClearable\n value={formik.values.block_code}\n onChange={(option) =>\n formik.setFieldValue('block_code', option)\n }\n options={blocks.map((block) => {\n return {\n value: block,\n label: block === '$$$$' ? 'Entire Orchard' : block\n };\n })}\n isLoading={loadingBlocks}\n />\n </Col>\n </Form.Group>\n <Form.Group as={Row} controlId='scan_type'>\n <Form.Label column sm={3}>\n Scan Type\n </Form.Label>\n <Col sm={9}>\n <Select\n isClearable\n value={formik.values.scan_type}\n onChange={(option) =>\n formik.setFieldValue('scan_type', option)\n }\n options={scanTypes}\n />\n </Col>\n </Form.Group>\n <Form.Group as={Row} controlId='stage'>\n <Form.Label column sm={3}>\n Stage\n </Form.Label>\n <Col sm={9}>\n <Select\n isClearable\n value={formik.values.stage}\n onChange={(option) =>\n formik.setFieldValue('stage', option ? option : '')\n }\n options={stages}\n />\n </Col>\n </Form.Group>\n <Form.Group as={Row} controlId='report_type'>\n <Form.Label column sm={3}>\n Report Type\n </Form.Label>\n <Col sm={9}>\n <Select\n isClearable\n value={formik.values.report_type}\n onChange={(option) =>\n formik.setFieldValue('report_type', option ? option : '')\n }\n options={reportTypes}\n />\n </Col>\n </Form.Group>\n <Form.Group as={Row} controlId='pdf_type'>\n <Form.Label column sm={3}>\n PDF Type\n </Form.Label>\n <Col sm={9}>\n <Select\n isClearable\n value={formik.values.pdf_type}\n onChange={(option) =>\n formik.setFieldValue('pdf_type', option ? option : '')\n }\n options={pdfTypes}\n />\n </Col>\n </Form.Group>\n <Row>\n <Col className='text-center'>\n <Button\n type='submit'\n variant='outline-primary'\n className='mx-1'\n >\n Submit\n </Button>\n </Col>\n </Row>\n </>\n </Form>\n </Modal.Body>\n </Modal>\n </>\n );\n};\n\nexport default observer(AdvancedFilterModal);\n\n","import {\n faDownload,\n faSort,\n faSortDown,\n faSortUp\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { saveAs } from 'file-saver';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport React, { useContext, useMemo } from 'react';\nimport {\n Button,\n Col,\n OverlayTrigger,\n Row,\n Table,\n Tooltip\n} from 'react-bootstrap';\nimport {\n useGlobalFilter,\n usePagination,\n useSortBy,\n useTable\n} from 'react-table';\nimport { storesContext } from '../../stores/storesContext';\nimport GlobalTableFilter from '../GlobalTableFilter';\nimport TablePagination from '../helpers/TablePagination';\nimport AdvancedFilterModal from './AdvancedFilterModal';\n\nconst ReportsTable = ({ data, formik, blocks, loadingBlocks }) => {\n const userStore = useContext(storesContext);\n const propertiesStore = userStore.propertiesStore;\n\n const downloadReport = (report) => {\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/fruition/crop-scanning/reports/${report.key}`,\n {\n headers: {\n Authorization: `Bearer ${userStore.bearerToken}`,\n Accept: 'application/pdf'\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.blob();\n })\n .then((blob) => {\n if (blob) {\n saveAs(\n blob,\n `${moment(report.dt).format('YYYYMMDD')}-${\n propertiesStore.selectedProperty.identifier\n }-${propertiesStore.selectedProperty.name}-${report.blockCode}-${\n report.scanType\n }-${report.stage}-${report.reportType}-${report.pdfType}`\n );\n }\n });\n };\n\n const columns = useMemo(\n () => [\n {\n Header: 'Date',\n accessor: 'dt',\n Cell: ({ value }) => {\n return moment(value).format('YYYY-MM-DD');\n }\n },\n {\n Header: 'Block Code',\n accessor: 'blockCode'\n },\n {\n Header: 'Scan Type',\n accessor: 'scanType'\n },\n {\n Header: 'Stage',\n accessor: 'stage'\n },\n {\n Header: 'Report Type',\n accessor: 'reportType'\n },\n {\n Header: 'PDF Type',\n accessor: 'pdfType'\n },\n {\n id: 'download',\n sortable: false,\n Header: () => (\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>Download all reports on this page.</Tooltip>}\n >\n <Button\n onClick={() => {\n page.forEach((row) => downloadReport(row.original));\n }}\n variant='link'\n >\n <FontAwesomeIcon icon={faDownload} size='lg' />\n </Button>\n </OverlayTrigger>\n ),\n Cell: ({ row }) => (\n <Button\n onClick={() => {\n downloadReport(row.original);\n }}\n variant='link'\n className='text-dark'\n >\n <FontAwesomeIcon icon={faDownload} size='sm' />\n </Button>\n )\n }\n ],\n []\n );\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n prepareRow,\n page,\n canPreviousPage,\n canNextPage,\n pageOptions,\n pageCount,\n gotoPage,\n nextPage,\n previousPage,\n setPageSize,\n state: { pageIndex, pageSize },\n state,\n preGlobalFilteredRows,\n setGlobalFilter\n } = useTable(\n {\n columns,\n data\n },\n useGlobalFilter,\n useSortBy,\n usePagination\n );\n\n return (\n <>\n <Row className='mb-2'>\n <Col className='pr-0' md>\n <GlobalTableFilter\n preGlobalFilteredRows={preGlobalFilteredRows}\n globalFilter={state.globalFilter}\n setGlobalFilter={setGlobalFilter}\n style={{\n marginBottom: '0.5rem',\n maxWidth: 500\n }}\n />\n </Col>\n <Col className='text-left ml-3 pl-0'>\n <AdvancedFilterModal\n formik={formik}\n blocks={blocks}\n loadingBlocks={loadingBlocks}\n />\n <Button\n variant='light'\n className='ml-2'\n onClick={() => {\n formik.resetForm();\n formik.submitForm();\n }}\n >\n Clear Filters\n </Button>\n </Col>\n </Row>\n <Table responsive {...getTableProps()}>\n <thead>\n {headerGroups.map((headerGroup) => (\n <tr {...headerGroup.getHeaderGroupProps()}>\n {headerGroup.headers.map((column) => (\n <th {...column.getHeaderProps(column.getSortByToggleProps())}>\n {column.render('Header')}\n {column.canSort ? (\n <span className='px-2'>\n {column.isSorted ? (\n column.isSortedDesc ? (\n <FontAwesomeIcon icon={faSortDown} />\n ) : (\n <FontAwesomeIcon icon={faSortUp} />\n )\n ) : (\n <FontAwesomeIcon icon={faSort} />\n )}\n </span>\n ) : null}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody {...getTableBodyProps()}>\n {page.map((row) => {\n prepareRow(row);\n return (\n <tr\n {...row.getRowProps()}\n className={\n row.original.pdfType === 'Geo pdf' ? 'text-info' : ''\n }\n >\n {row.cells.map((cell) => {\n return (\n <td {...cell.getCellProps()}>{cell.render('Cell')}</td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </Table>\n <TablePagination\n pageCount={pageCount}\n pageIndex={pageIndex}\n pageOptions={pageOptions}\n pageSize={pageSize}\n gotoPage={gotoPage}\n canPreviousPage={canPreviousPage}\n previousPage={previousPage}\n canNextPage={canNextPage}\n nextPage={nextPage}\n setPageSize={setPageSize}\n />\n </>\n );\n};\n\nexport default observer(ReportsTable);\n\n","import { useFormik } from 'formik';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { Col, Row, Spinner } from 'react-bootstrap';\nimport URI from 'urijs';\nimport { storesContext } from '../../stores/storesContext';\nimport PageTitle from '../helpers/PageTitle';\nimport LoadingOverlay from '../LoadingOverlay';\nimport { pdfTypes, reportTypes, scanTypes, stages } from './CropScanningUtils';\nimport GreenAtlasAdvertisement from './GreenAtlasAdvertisement';\nimport { GreenAtlasUrlButtons, useGreenAtlasUrls } from './GreenAtlasUrls';\nimport ReportsTable from './ReportsTable';\n\nconst CropScanningReports = () => {\n const userStore = useContext(storesContext);\n\n const formik = useFormik({\n initialValues: {\n block_code: '',\n scan_type: null,\n stage: '',\n report_type: '',\n pdf_type: ''\n },\n onSubmit: () => {\n if (userStore.propertiesStore.selectedPropertyId) loadReports();\n }\n });\n\n const [loadingBlocks, setLoadingBlocks] = useState(false);\n const [blocks, setBlocks] = useState([]);\n\n const [loadingReports, setLoadingReports] = useState(false);\n const [reports, setReports] = useState([]);\n const [showAdvertisement, setShowAdvertisement] = useState(null);\n\n const { gaUrls, loadingGaUrls } = useGreenAtlasUrls(\n userStore.propertiesStore.selectedProperty?.identifier,\n userStore.selectedDatabase,\n userStore.bearerToken\n );\n\n const loadReports = () => {\n setLoadingReports(true);\n const url = new URI(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/fruition/crop-scanning/reports`\n );\n url.addQuery('property_id', userStore.propertiesStore.selectedPropertyId);\n url.addQuery(\n 'season',\n userStore.selectedDatabase ? userStore.selectedDatabase.substr(9) : null\n );\n if (formik.values.block_code)\n url.addQuery('block_code', formik.values.block_code.value);\n if (formik.values.scan_type)\n url.addQuery('scan_type', formik.values.scan_type.value);\n if (formik.values.stage) url.addQuery('stage', formik.values.stage.value);\n if (formik.values.report_type)\n url.addQuery('report_type', formik.values.report_type.value);\n if (formik.values.pdf_type)\n url.addQuery('pdf_type', formik.values.pdf_type.value);\n\n fetch(url.valueOf(), {\n headers: {\n Authorization: `Bearer ${userStore.bearerToken}`,\n Accept: 'application/json'\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else throw res.statusText;\n })\n .then((data) => {\n setReports(data['Objects']);\n })\n .catch((err) => {\n setReports([]);\n })\n .finally(() => {\n setLoadingReports(false);\n });\n };\n\n /**\n * Work out whether to show the advertisement by loading reports with no filters,\n * if there are no reports then show the advertisement.\n * Load the block\n */\n useEffect(() => {\n setReports([]);\n setBlocks([]);\n formik.resetForm();\n\n if (!userStore.propertiesStore.selectedPropertyId) return;\n\n // Load reports with no filters\n setLoadingBlocks(true);\n const url = new URI(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/fruition/crop-scanning/reports`\n );\n\n url.addQuery(\n 'season',\n userStore.selectedDatabase ? userStore.selectedDatabase.substr(9) : null\n );\n url.addQuery('property_id', userStore.propertiesStore.selectedPropertyId);\n\n fetch(url.valueOf(), {\n headers: {\n Authorization: `Bearer ${userStore.bearerToken}`,\n Accept: 'application/json'\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else throw res.statusText;\n })\n .then((data) => {\n // Show the advertisement if there are no reports\n setShowAdvertisement(data['Objects'].length === 0);\n // Find all blocks for this property\n const newBlocks = [];\n data['Objects'].forEach((report) => {\n const parts = report['Key'].split('_');\n if (parts.length > 2 && !newBlocks.includes(parts[2]))\n newBlocks.push(parts[2]);\n });\n setBlocks(newBlocks);\n })\n .catch(() => {\n setBlocks([]);\n setShowAdvertisement(true);\n })\n .finally(() => {\n setLoadingBlocks(false);\n });\n\n // Load Reports\n formik.submitForm();\n }, [\n userStore.selectedDatabase,\n userStore.propertiesStore.selectedPropertyId\n ]);\n\n return (\n <div id='page-container'>\n <Row>\n <Col>\n <PageTitle title={'Green Atlas Reports'} />\n </Col>\n </Row>\n\n {userStore.propertiesStore.loading ? (\n <LoadingOverlay />\n ) : (\n <>\n <GreenAtlasUrlButtons urls={gaUrls} isLoading={loadingGaUrls} />\n <Row className='my-3'>\n <Col className='text-center'>\n {loadingReports ? (\n <Spinner variant='primary' animation='border' />\n ) : !showAdvertisement ? (\n <ReportsTable\n data={reports.map((report) => {\n const parts = report['Key'].split('_');\n\n const dt = moment(parts[7], 'YYYYMMDD');\n const scanType = scanTypes.find(\n (s) => s.value === parts[3]\n );\n const stage = stages.find((s) => s.value === parts[4]);\n const reportType = reportTypes.find(\n (r) => r.value === parts[5]\n );\n const pdfType = pdfTypes.find((p) => p.value === parts[6]);\n\n return {\n key: report['Key'],\n dt: dt.valueOf(),\n blockCode:\n parts[2] === '$$$$' ? 'Entire Orchard' : parts[2],\n scanType: scanType ? scanType.label : null,\n stage: stage ? stage.label : null,\n reportType: reportType ? reportType.label : null,\n pdfType: pdfType ? pdfType.label : null\n };\n })}\n formik={formik}\n blocks={blocks}\n loadingBlocks={loadingBlocks}\n />\n ) : (\n <GreenAtlasAdvertisement\n propertyName={\n userStore.propertiesStore.selectedProperty\n ? userStore.propertiesStore.selectedProperty.name\n : null\n }\n season={\n userStore.selectedDatabase\n ? userStore.selectedDatabase.substr(9)\n : null\n }\n />\n )}\n </Col>\n </Row>\n <Row className='justify-content-center my-3'>\n <Col xs={10} sm={8} md={6} lg={5} xl={4}>\n <img\n alt='Green Atlas'\n src='https://fruition-metwatch-assets.s3-ap-southeast-2.amazonaws.com/green-atlas.png'\n className='w-100'\n />\n </Col>\n </Row>\n </>\n )}\n </div>\n );\n};\n\nexport default observer(CropScanningReports);\n\n","import { PutObjectCommand, S3Client } from '@aws-sdk/client-s3';\nimport React, { useContext, useRef, useState } from 'react';\nimport { Alert, Button, Col, Row, Spinner } from 'react-bootstrap';\nimport { storesContext } from '../../../stores/storesContext';\nimport PageTitle from '../../helpers/PageTitle';\n\nexport const GreenAtlasUploadPage = () => {\n return (\n <div className='mb-4'>\n <Row>\n <Col>\n <PageTitle title={'Green Atlas Bundle Upload'} />\n </Col>\n </Row>\n <Row>\n <Col>\n <h6 className='text-center'>\n Upload Green Atlas Viewer bundles for the selected property.\n </h6>\n </Col>\n </Row>\n <Row className='my-2 no-gutters' xs={12} lg={8}>\n <Col xs={0} lg={1} xl={2} />\n <Col xs={12} lg={10} xl={8}>\n <Alert variant='info'>\n <Alert.Heading>How to use</Alert.Heading>\n <p>\n To get started, click 'Browse' to select your Green Atlas ZIP\n file, and click 'Upload'.\n </p>\n <p>\n Files will be uploaded for the selected property and season. If\n multiple files are uploaded, they will all be associated with the\n current property.\n </p>\n <hr />\n <h5>File Type</h5>\n <p className='mb-0'>\n Only Green Atlas Viewer ZIP file exports will be processed.\n </p>\n </Alert>\n </Col>\n <Col xs={0} lg={2} xl={2} />\n </Row>\n <Row className='no-gutters mt-2' xs={12} lg={8}>\n <Col xs={0} lg={2} xl={2} />\n <Col xs={12} lg={10} xl={8}>\n <FileUpload />\n </Col>\n <Col xs={0} lg={2} xl={2} />\n </Row>\n </div>\n );\n};\n\nconst FileUpload = () => {\n const fileInputRef = useRef(null);\n const [files, setFiles] = useState([]);\n const [uploading, setUploading] = useState(false);\n const userStore = useContext(storesContext);\n\n const handleFileChange = (event) => {\n const newFiles = Array.from(event.target.files);\n setFiles((prev) => [...prev, ...newFiles]);\n };\n\n const handleFileRemove = (filename) => {\n setFiles((prev) => prev.filter((f) => f.name !== filename));\n };\n\n const uploadToS3 = async (file) => {\n // Get file upload params.\n const season = userStore.selectedDatabase\n ? userStore.selectedDatabase.substr(9)\n : null;\n const property_identifier =\n userStore.propertiesStore.selectedProperty?.identifier;\n const tempAwsCredentials = userStore.tempAwsCredentials;\n const s3Client = new S3Client({\n region: 'ap-southeast-2',\n credentials: {\n accessKeyId: tempAwsCredentials['key'],\n secretAccessKey: tempAwsCredentials['secret'],\n sessionToken: tempAwsCredentials['token']\n },\n forcePathStyle: true\n });\n\n const params = {\n Bucket: process.env.REACT_APP_GA_BUNDLE_S3_BUCKET,\n Key: `unprocessed/${file.name}`,\n Body: file,\n ContentType: file.type,\n Metadata: {\n property_identifier: property_identifier,\n season: season\n }\n };\n\n try {\n const command = new PutObjectCommand(params);\n await s3Client.send(command);\n console.log(`Successfully uploaded ${file.name} to S3`);\n } catch (error) {\n console.error(`Error uploading ${file.name} to S3:`, error);\n throw error;\n }\n };\n\n const handleFileUpload = async () => {\n if (files.length === 0) {\n alert('Please select files to upload');\n return;\n }\n\n setUploading(true);\n\n try {\n for (const file of files) {\n await uploadToS3(file);\n }\n alert('Files uploaded successfully!');\n setFiles([]);\n } catch (error) {\n alert('Error uploading files. Please try again.');\n } finally {\n setUploading(false);\n }\n };\n\n const handleDragOver = (e) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n const handleDrop = (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n const droppedFiles = Array.from(e.dataTransfer.files);\n setFiles((prev) => [...prev, ...droppedFiles]);\n };\n\n return (\n <div\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n className='p-4 border-2 border-dashed border-gray-300 rounded-lg'\n >\n <Row className='mb-3'>\n <Col>\n <div className='input-group'>\n <input\n ref={fileInputRef}\n type='file'\n multiple\n className='form-control'\n id='fileInput'\n onChange={handleFileChange}\n disabled={uploading}\n />\n <Button\n variant='primary'\n onClick={handleFileUpload}\n disabled={uploading || files.length === 0}\n >\n {uploading ? (\n <Spinner animation='border' size='sm' />\n ) : (\n 'Upload to S3'\n )}\n </Button>\n </div>\n </Col>\n </Row>\n <Row>\n <Col>\n <ul className='list-group'>\n {files.map((file, index) => (\n <li\n key={index}\n className='list-group-item d-flex justify-content-between align-items-center'\n >\n {file.name}\n <Button\n variant='outline-danger'\n size='sm'\n onClick={() => handleFileRemove(file.name)}\n disabled={uploading}\n >\n Remove\n </Button>\n </li>\n ))}\n </ul>\n </Col>\n </Row>\n {files.length > 0 && (\n <Row className='mt-3'>\n <Col>\n <p>\n Drag and drop files here or click the file input to add more\n files.\n </p>\n </Col>\n </Row>\n )}\n </div>\n );\n};\n\nexport default FileUpload;\n\n","const downloadFile = (data) => {\n const url = window.URL.createObjectURL(new Blob([data]));\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', 'Trap-Export.csv');\n document.body.appendChild(link);\n link.click();\n};\n\nexport const fetchTrapCSV = async (userStore) => {\n const db = userStore.selectedDatabase;\n const bearerToken = userStore.bearerToken;\n\n const response = await fetch(\n process.env.REACT_APP_TRAPLOG_API_URL + 'api/admin/fruition/export/all',\n {\n method: 'GET',\n headers: {\n 'Content-Type': 'text/csv',\n Accept: 'application/json',\n Authorization: 'Bearer ' + bearerToken,\n SeasonalDatabase: db\n }\n }\n );\n // Request successful so download file.\n if (response.ok) {\n const data = await response.text();\n downloadFile(data);\n return true;\n } else {\n return false;\n }\n};\n","import { observer } from 'mobx-react';\nimport React, { useContext } from 'react';\nimport { Button, Card, Col, Row } from 'react-bootstrap';\nimport { storesContext } from '../../stores/storesContext';\nimport PageTitle from '../helpers/PageTitle';\nimport { errorToast, successToast } from '../helpers/toasts/ToastUtils';\nimport { fetchTrapCSV } from './utils';\n\nfunction AdminDashboard() {\n const userStore = useContext(storesContext);\n\n return (\n <div id='page-container'>\n <Row>\n <Col>\n <PageTitle title={'Dashboard'} />\n </Col>\n </Row>\n <Row>\n <Col sm={6}>\n <Card className='my-3'>\n <Card.Header>Data Exporting</Card.Header>\n <Card.Body>\n <Card.Title>Trapping</Card.Title>\n <Card.Text>\n Export all trapping data from the selected season into a CSV\n file.\n </Card.Text>\n <Button\n variant='light'\n onClick={async () => {\n const result = await fetchTrapCSV(userStore);\n if (result) {\n successToast('Export successful.');\n } else {\n errorToast('Export failed.');\n }\n }}\n >\n Export All Data\n </Button>\n </Card.Body>\n </Card>\n </Col>\n </Row>\n </div>\n );\n}\n\nexport default observer(AdminDashboard);\n\n","/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar prefix = \"fas\";\nvar faAd = {\n prefix: 'fas',\n iconName: 'ad',\n icon: [512, 512, [], \"f641\", \"M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faAdjust = {\n prefix: 'fas',\n iconName: 'adjust',\n icon: [512, 512, [], \"f042\", \"M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z\"]\n};\nvar faAirFreshener = {\n prefix: 'fas',\n iconName: 'air-freshener',\n icon: [512, 512, [], \"f5d0\", \"M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z\"]\n};\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"]\n};\nvar faAllergies = {\n prefix: 'fas',\n iconName: 'allergies',\n icon: [448, 512, [], \"f461\", \"M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faAmbulance = {\n prefix: 'fas',\n iconName: 'ambulance',\n icon: [640, 512, [], \"f0f9\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faAmericanSignLanguageInterpreting = {\n prefix: 'fas',\n iconName: 'american-sign-language-interpreting',\n icon: [640, 512, [], \"f2a3\", \"M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z\"]\n};\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [], \"f13d\", \"M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z\"]\n};\nvar faAngleDoubleDown = {\n prefix: 'fas',\n iconName: 'angle-double-down',\n icon: [320, 512, [], \"f103\", \"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\"]\n};\nvar faAngleDoubleLeft = {\n prefix: 'fas',\n iconName: 'angle-double-left',\n icon: [448, 512, [], \"f100\", \"M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z\"]\n};\nvar faAngleDoubleRight = {\n prefix: 'fas',\n iconName: 'angle-double-right',\n icon: [448, 512, [], \"f101\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z\"]\n};\nvar faAngleDoubleUp = {\n prefix: 'fas',\n iconName: 'angle-double-up',\n icon: [320, 512, [], \"f102\", \"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [320, 512, [], \"f107\", \"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [256, 512, [], \"f104\", \"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [256, 512, [], \"f105\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"]\n};\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [320, 512, [], \"f106\", \"M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z\"]\n};\nvar faAngry = {\n prefix: 'fas',\n iconName: 'angry',\n icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z\"]\n};\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [], \"f644\", \"M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z\"]\n};\nvar faAppleAlt = {\n prefix: 'fas',\n iconName: 'apple-alt',\n icon: [448, 512, [], \"f5d1\", \"M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z\"]\n};\nvar faArchive = {\n prefix: 'fas',\n iconName: 'archive',\n icon: [512, 512, [], \"f187\", \"M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [576, 512, [], \"f557\", \"M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faArrowAltCircleDown = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-down',\n icon: [512, 512, [], \"f358\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-left',\n icon: [512, 512, [], \"f359\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z\"]\n};\nvar faArrowAltCircleRight = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-right',\n icon: [512, 512, [], \"f35a\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z\"]\n};\nvar faArrowAltCircleUp = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-up',\n icon: [512, 512, [], \"f35b\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z\"]\n};\nvar faArrowCircleDown = {\n prefix: 'fas',\n iconName: 'arrow-circle-down',\n icon: [512, 512, [], \"f0ab\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z\"]\n};\nvar faArrowCircleLeft = {\n prefix: 'fas',\n iconName: 'arrow-circle-left',\n icon: [512, 512, [], \"f0a8\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z\"]\n};\nvar faArrowCircleRight = {\n prefix: 'fas',\n iconName: 'arrow-circle-right',\n icon: [512, 512, [], \"f0a9\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z\"]\n};\nvar faArrowCircleUp = {\n prefix: 'fas',\n iconName: 'arrow-circle-up',\n icon: [512, 512, [], \"f0aa\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z\"]\n};\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [448, 512, [], \"f063\", \"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [], \"f060\", \"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [], \"f061\", \"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"]\n};\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [448, 512, [], \"f062\", \"M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z\"]\n};\nvar faArrowsAlt = {\n prefix: 'fas',\n iconName: 'arrows-alt',\n icon: [512, 512, [], \"f0b2\", \"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z\"]\n};\nvar faArrowsAltH = {\n prefix: 'fas',\n iconName: 'arrows-alt-h',\n icon: [512, 512, [], \"f337\", \"M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z\"]\n};\nvar faArrowsAltV = {\n prefix: 'fas',\n iconName: 'arrows-alt-v',\n icon: [256, 512, [], \"f338\", \"M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z\"]\n};\nvar faAssistiveListeningSystems = {\n prefix: 'fas',\n iconName: 'assistive-listening-systems',\n icon: [512, 512, [], \"f2a2\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [512, 512, [], \"f069\", \"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z\"]\n};\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [], \"f1fa\", \"M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z\"]\n};\nvar faAtlas = {\n prefix: 'fas',\n iconName: 'atlas',\n icon: [448, 512, [], \"f558\", \"M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z\"]\n};\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [448, 512, [], \"f5d2\", \"M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z\"]\n};\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [512, 512, [], \"f29e\", \"M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z\"]\n};\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [384, 512, [], \"f77c\", \"M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [], \"f77d\", \"M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z\"]\n};\nvar faBackspace = {\n prefix: 'fas',\n iconName: 'backspace',\n icon: [640, 512, [], \"f55a\", \"M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z\"]\n};\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [], \"f04a\", \"M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [], \"f7e5\", \"M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z\"]\n};\nvar faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z\"]\n};\nvar faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z\"]\n};\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [512, 512, [], \"f666\", \"M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z\"]\n};\nvar faBalanceScale = {\n prefix: 'fas',\n iconName: 'balance-scale',\n icon: [640, 512, [], \"f24e\", \"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faBalanceScaleLeft = {\n prefix: 'fas',\n iconName: 'balance-scale-left',\n icon: [640, 512, [], \"f515\", \"M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z\"]\n};\nvar faBalanceScaleRight = {\n prefix: 'fas',\n iconName: 'balance-scale-right',\n icon: [640, 512, [], \"f516\", \"M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [], \"f05e\", \"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"]\n};\nvar faBandAid = {\n prefix: 'fas',\n iconName: 'band-aid',\n icon: [640, 512, [], \"f462\", \"M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\"]\n};\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [], \"f0c9\", \"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"]\n};\nvar faBaseballBall = {\n prefix: 'fas',\n iconName: 'baseball-ball',\n icon: [496, 512, [], \"f433\", \"M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z\"]\n};\nvar faBasketballBall = {\n prefix: 'fas',\n iconName: 'basketball-ball',\n icon: [496, 512, [], \"f434\", \"M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z\"]\n};\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [], \"f2cd\", \"M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [640, 512, [], \"f244\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [640, 512, [], \"f240\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [640, 512, [], \"f242\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [640, 512, [], \"f243\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [640, 512, [], \"f241\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [], \"f236\", \"M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z\"]\n};\nvar faBeer = {\n prefix: 'fas',\n iconName: 'beer',\n icon: [448, 512, [], \"f0fc\", \"M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z\"]\n};\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [], \"f0f3\", \"M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [], \"f1f6\", \"M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faBible = {\n prefix: 'fas',\n iconName: 'bible',\n icon: [448, 512, [], \"f647\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [], \"f206\", \"M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z\"]\n};\nvar faBiking = {\n prefix: 'fas',\n iconName: 'biking',\n icon: [640, 512, [], \"f84a\", \"M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z\"]\n};\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z\"]\n};\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [], \"f780\", \"M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faBirthdayCake = {\n prefix: 'fas',\n iconName: 'birthday-cake',\n icon: [448, 512, [], \"f1fd\", \"M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z\"]\n};\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBlind = {\n prefix: 'fas',\n iconName: 'blind',\n icon: [384, 512, [], \"f29d\", \"M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"]\n};\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [320, 512, [], \"f0e7\", \"M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z\"]\n};\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [], \"f1e2\", \"M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [640, 512, [], \"f5d7\", \"M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z\"]\n};\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z\"]\n};\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [], \"f02d\", \"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\"]\n};\nvar faBookDead = {\n prefix: 'fas',\n iconName: 'book-dead',\n icon: [448, 512, [], \"f6b7\", \"M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z\"]\n};\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z\"]\n};\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [], \"f518\", \"M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z\"]\n};\nvar faBookReader = {\n prefix: 'fas',\n iconName: 'book-reader',\n icon: [512, 512, [], \"f5da\", \"M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [], \"f02e\", \"M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderStyle = {\n prefix: 'fas',\n iconName: 'border-style',\n icon: [448, 512, [], \"f853\", \"M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [496, 512, [], \"f436\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [512, 512, [], \"f466\", \"M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z\"]\n};\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z\"]\n};\nvar faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z\"]\n};\nvar faBoxes = {\n prefix: 'fas',\n iconName: 'boxes',\n icon: [576, 512, [], \"f468\", \"M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [576, 512, [], \"f5dc\", \"M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [576, 512, [], \"f7ec\", \"M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [], \"f0b1\", \"M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z\"]\n};\nvar faBroadcastTower = {\n prefix: 'fas',\n iconName: 'broadcast-tower',\n icon: [640, 512, [], \"f519\", \"M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z\"]\n};\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [640, 512, [], \"f51a\", \"M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z\"]\n};\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\"]\n};\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [448, 512, [], \"f1ad\", \"M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [576, 512, [], \"f0a1\", \"M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z\"]\n};\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [496, 512, [], \"f140\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z\"]\n};\nvar faBurn = {\n prefix: 'fas',\n iconName: 'burn',\n icon: [384, 512, [], \"f46a\", \"M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z\"]\n};\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [512, 512, [], \"f207\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusAlt = {\n prefix: 'fas',\n iconName: 'bus-alt',\n icon: [512, 512, [], \"f55e\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [], \"f64a\", \"M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [448, 512, [], \"f1ec\", \"M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [], \"f133\", \"M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z\"]\n};\nvar faCalendarAlt = {\n prefix: 'fas',\n iconName: 'calendar-alt',\n icon: [448, 512, [], \"f073\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z\"]\n};\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z\"]\n};\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z\"]\n};\nvar faCalendarTimes = {\n prefix: 'fas',\n iconName: 'calendar-times',\n icon: [448, 512, [], \"f273\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z\"]\n};\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [], \"f030\", \"M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z\"]\n};\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [], \"f083\", \"M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [640, 512, [], \"f6bb\", \"M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z\"]\n};\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z\"]\n};\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z\"]\n};\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [], \"f1b9\", \"M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarAlt = {\n prefix: 'fas',\n iconName: 'car-alt',\n icon: [480, 512, [], \"f5de\", \"M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [], \"f5df\", \"M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faCarCrash = {\n prefix: 'fas',\n iconName: 'car-crash',\n icon: [640, 512, [], \"f5e1\", \"M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z\"]\n};\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [], \"f5e4\", \"M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [192, 512, [], \"f0d9\", \"M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [192, 512, [], \"f0da\", \"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\"]\n};\nvar faCaretSquareDown = {\n prefix: 'fas',\n iconName: 'caret-square-down',\n icon: [448, 512, [], \"f150\", \"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z\"]\n};\nvar faCaretSquareLeft = {\n prefix: 'fas',\n iconName: 'caret-square-left',\n icon: [448, 512, [], \"f191\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z\"]\n};\nvar faCaretSquareRight = {\n prefix: 'fas',\n iconName: 'caret-square-right',\n icon: [448, 512, [], \"f152\", \"M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z\"]\n};\nvar faCaretSquareUp = {\n prefix: 'fas',\n iconName: 'caret-square-up',\n icon: [448, 512, [], \"f151\", \"M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z\"]\n};\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [], \"f787\", \"M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\"]\n};\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z\"]\n};\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [512, 512, [], \"f6be\", \"M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z\"]\n};\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [], \"f6c0\", \"M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [640, 512, [], \"f51b\", \"M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChalkboardTeacher = {\n prefix: 'fas',\n iconName: 'chalkboard-teacher',\n icon: [640, 512, [], \"f51c\", \"M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z\"]\n};\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [], \"f1fe\", \"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [], \"f080\", \"M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [], \"f201\", \"M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [544, 512, [], \"f200\", \"M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [512, 512, [], \"f00c\", \"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"]\n};\nvar faCheckCircle = {\n prefix: 'fas',\n iconName: 'check-circle',\n icon: [512, 512, [], \"f058\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [512, 512, [], \"f560\", \"M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z\"]\n};\nvar faCheckSquare = {\n prefix: 'fas',\n iconName: 'check-square',\n icon: [448, 512, [], \"f14a\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z\"]\n};\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z\"]\n};\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [], \"f43a\", \"M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [512, 512, [], \"f43c\", \"M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [], \"f43f\", \"M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z\"]\n};\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [384, 512, [], \"f441\", \"M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [], \"f443\", \"M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [], \"f445\", \"M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [384, 512, [], \"f447\", \"M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChevronCircleDown = {\n prefix: 'fas',\n iconName: 'chevron-circle-down',\n icon: [512, 512, [], \"f13a\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z\"]\n};\nvar faChevronCircleLeft = {\n prefix: 'fas',\n iconName: 'chevron-circle-left',\n icon: [512, 512, [], \"f137\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z\"]\n};\nvar faChevronCircleRight = {\n prefix: 'fas',\n iconName: 'chevron-circle-right',\n icon: [512, 512, [], \"f138\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z\"]\n};\nvar faChevronCircleUp = {\n prefix: 'fas',\n iconName: 'chevron-circle-up',\n icon: [512, 512, [], \"f139\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [448, 512, [], \"f078\", \"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [], \"f053\", \"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [], \"f054\", \"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [448, 512, [], \"f077\", \"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"]\n};\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [384, 512, [], \"f1ae\", \"M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [], \"f51d\", \"M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z\"]\n};\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [], \"f64f\", \"M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z\"]\n};\nvar faClinicMedical = {\n prefix: 'fas',\n iconName: 'clinic-medical',\n icon: [576, 512, [], \"f7f2\", \"M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z\"]\n};\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [], \"f328\", \"M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [], \"f017\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z\"]\n};\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [], \"f0c2\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z\"]\n};\nvar faCloudDownloadAlt = {\n prefix: 'fas',\n iconName: 'cloud-download-alt',\n icon: [640, 512, [], \"f381\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z\"]\n};\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z\"]\n};\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [576, 512, [], \"f6c3\", \"M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z\"]\n};\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [], \"f73d\", \"M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z\"]\n};\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [], \"f6c4\", \"M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [576, 512, [], \"f743\", \"M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudUploadAlt = {\n prefix: 'fas',\n iconName: 'cloud-upload-alt',\n icon: [640, 512, [], \"f382\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\"]\n};\nvar faCocktail = {\n prefix: 'fas',\n iconName: 'cocktail',\n icon: [576, 512, [], \"f561\", \"M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z\"]\n};\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [384, 512, [], \"f126\", \"M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z\"]\n};\nvar faCoffee = {\n prefix: 'fas',\n iconName: 'coffee',\n icon: [640, 512, [], \"f0f4\", \"M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z\"]\n};\nvar faCog = {\n prefix: 'fas',\n iconName: 'cog',\n icon: [512, 512, [], \"f013\", \"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faCogs = {\n prefix: 'fas',\n iconName: 'cogs',\n icon: [640, 512, [], \"f085\", \"M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z\"]\n};\nvar faColumns = {\n prefix: 'fas',\n iconName: 'columns',\n icon: [512, 512, [], \"f0db\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z\"]\n};\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z\"]\n};\nvar faCommentAlt = {\n prefix: 'fas',\n iconName: 'comment-alt',\n icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z\"]\n};\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z\"]\n};\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [], \"f4ad\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z\"]\n};\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [576, 512, [], \"f086\", \"M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [576, 512, [], \"f653\", \"M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [496, 512, [], \"f51f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [496, 512, [], \"f14e\", \"M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faCompressAlt = {\n prefix: 'fas',\n iconName: 'compress-alt',\n icon: [448, 512, [], \"f422\", \"M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z\"]\n};\nvar faCompressArrowsAlt = {\n prefix: 'fas',\n iconName: 'compress-arrows-alt',\n icon: [512, 512, [], \"f78c\", \"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z\"]\n};\nvar faConciergeBell = {\n prefix: 'fas',\n iconName: 'concierge-bell',\n icon: [512, 512, [], \"f562\", \"M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [], \"f563\", \"M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\"]\n};\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z\"]\n};\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [], \"f09d\", \"M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faCropAlt = {\n prefix: 'fas',\n iconName: 'crop-alt',\n icon: [512, 512, [], \"f565\", \"M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [], \"f654\", \"M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z\"]\n};\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [640, 512, [], \"f521\", \"M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z\"]\n};\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z\"]\n};\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [512, 512, [], \"f1b3\", \"M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z\"]\n};\nvar faCut = {\n prefix: 'fas',\n iconName: 'cut',\n icon: [448, 512, [], \"f0c4\", \"M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z\"]\n};\nvar faDeaf = {\n prefix: 'fas',\n iconName: 'deaf',\n icon: [512, 512, [], \"f2a4\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [], \"f108\", \"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\"]\n};\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [], \"f655\", \"M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z\"]\n};\nvar faDiagnoses = {\n prefix: 'fas',\n iconName: 'diagnoses',\n icon: [640, 512, [], \"f470\", \"M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [], \"f522\", \"M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [480, 512, [], \"f6cf\", \"M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [], \"f523\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [], \"f524\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [], \"f525\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [], \"f526\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [], \"f527\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [], \"f528\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDigitalTachograph = {\n prefix: 'fas',\n iconName: 'digital-tachograph',\n icon: [640, 512, [], \"f566\", \"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z\"]\n};\nvar faDirections = {\n prefix: 'fas',\n iconName: 'directions',\n icon: [512, 512, [], \"f5eb\", \"M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z\"]\n};\nvar faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [], \"f529\", \"M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faDizzy = {\n prefix: 'fas',\n iconName: 'dizzy',\n icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z\"]\n};\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [], \"f471\", \"M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z\"]\n};\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [], \"f6d3\", \"M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z\"]\n};\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [288, 512, [], \"f155\", \"M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [], \"f472\", \"M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faDollyFlatbed = {\n prefix: 'fas',\n iconName: 'dolly-flatbed',\n icon: [640, 512, [], \"f474\", \"M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDonate = {\n prefix: 'fas',\n iconName: 'donate',\n icon: [512, 512, [], \"f4b9\", \"M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z\"]\n};\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [640, 512, [], \"f52a\", \"M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z\"]\n};\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [640, 512, [], \"f52b\", \"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z\"]\n};\nvar faDotCircle = {\n prefix: 'fas',\n iconName: 'dot-circle',\n icon: [512, 512, [], \"f192\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [], \"f4ba\", \"M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faDraftingCompass = {\n prefix: 'fas',\n iconName: 'drafting-compass',\n icon: [512, 512, [], \"f568\", \"M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z\"]\n};\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [], \"f6d5\", \"M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z\"]\n};\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [], \"f569\", \"M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z\"]\n};\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z\"]\n};\nvar faEdit = {\n prefix: 'fas',\n iconName: 'edit',\n icon: [576, 512, [], \"f044\", \"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\"]\n};\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [], \"f7fb\", \"M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z\"]\n};\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [], \"f052\", \"M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z\"]\n};\nvar faEllipsisH = {\n prefix: 'fas',\n iconName: 'ellipsis-h',\n icon: [512, 512, [], \"f141\", \"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"]\n};\nvar faEllipsisV = {\n prefix: 'fas',\n iconName: 'ellipsis-v',\n icon: [192, 512, [], \"f142\", \"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\"]\n};\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [], \"f0e0\", \"M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [], \"f2b6\", \"M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z\"]\n};\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z\"]\n};\nvar faEnvelopeSquare = {\n prefix: 'fas',\n iconName: 'envelope-square',\n icon: [448, 512, [], \"f199\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [], \"f52c\", \"M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [512, 512, [], \"f12d\", \"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [], \"f153\", \"M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z\"]\n};\nvar faExchangeAlt = {\n prefix: 'fas',\n iconName: 'exchange-alt',\n icon: [512, 512, [], \"f362\", \"M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [192, 512, [], \"f12a\", \"M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z\"]\n};\nvar faExclamationCircle = {\n prefix: 'fas',\n iconName: 'exclamation-circle',\n icon: [512, 512, [], \"f06a\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExclamationTriangle = {\n prefix: 'fas',\n iconName: 'exclamation-triangle',\n icon: [576, 512, [], \"f071\", \"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"]\n};\nvar faExpandAlt = {\n prefix: 'fas',\n iconName: 'expand-alt',\n icon: [448, 512, [], \"f424\", \"M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z\"]\n};\nvar faExpandArrowsAlt = {\n prefix: 'fas',\n iconName: 'expand-arrows-alt',\n icon: [448, 512, [], \"f31e\", \"M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z\"]\n};\nvar faExternalLinkAlt = {\n prefix: 'fas',\n iconName: 'external-link-alt',\n icon: [512, 512, [], \"f35d\", \"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z\"]\n};\nvar faExternalLinkSquareAlt = {\n prefix: 'fas',\n iconName: 'external-link-square-alt',\n icon: [448, 512, [], \"f360\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z\"]\n};\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [], \"f06e\", \"M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z\"]\n};\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [], \"f1fb\", \"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z\"]\n};\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faFastBackward = {\n prefix: 'fas',\n iconName: 'fast-backward',\n icon: [512, 512, [], \"f049\", \"M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z\"]\n};\nvar faFastForward = {\n prefix: 'fas',\n iconName: 'fast-forward',\n icon: [512, 512, [], \"f050\", \"M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z\"]\n};\nvar faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [], \"f1ac\", \"M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [], \"f52d\", \"M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z\"]\n};\nvar faFeatherAlt = {\n prefix: 'fas',\n iconName: 'feather-alt',\n icon: [512, 512, [], \"f56b\", \"M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z\"]\n};\nvar faFemale = {\n prefix: 'fas',\n iconName: 'female',\n icon: [256, 512, [], \"f182\", \"M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z\"]\n};\nvar faFighterJet = {\n prefix: 'fas',\n iconName: 'fighter-jet',\n icon: [640, 512, [], \"f0fb\", \"M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z\"]\n};\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [], \"f15b\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileAlt = {\n prefix: 'fas',\n iconName: 'file-alt',\n icon: [384, 512, [], \"f15c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileArchive = {\n prefix: 'fas',\n iconName: 'file-archive',\n icon: [384, 512, [], \"f1c6\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [384, 512, [], \"f6dd\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileDownload = {\n prefix: 'fas',\n iconName: 'file-download',\n icon: [384, 512, [], \"f56d\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [], \"f56e\", \"M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z\"]\n};\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [], \"f1c5\", \"M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z\"]\n};\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [], \"f56f\", \"M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z\"]\n};\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z\"]\n};\nvar faFileMedicalAlt = {\n prefix: 'fas',\n iconName: 'file-medical-alt',\n icon: [448, 512, [], \"f478\", \"M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z\"]\n};\nvar faFileUpload = {\n prefix: 'fas',\n iconName: 'file-upload',\n icon: [384, 512, [], \"f574\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z\"]\n};\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z\"]\n};\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [], \"f008\", \"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [384, 512, [], \"f06d\", \"M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z\"]\n};\nvar faFireAlt = {\n prefix: 'fas',\n iconName: 'fire-alt',\n icon: [448, 512, [], \"f7e4\", \"M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z\"]\n};\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [448, 512, [], \"f134\", \"M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z\"]\n};\nvar faFirstAid = {\n prefix: 'fas',\n iconName: 'first-aid',\n icon: [576, 512, [], \"f479\", \"M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [], \"f578\", \"M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFistRaised = {\n prefix: 'fas',\n iconName: 'fist-raised',\n icon: [384, 512, [], \"f6de\", \"M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z\"]\n};\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [512, 512, [], \"f024\", \"M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z\"]\n};\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [512, 512, [], \"f11e\", \"M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z\"]\n};\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [512, 512, [], \"f74d\", \"M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z\"]\n};\nvar faFlushed = {\n prefix: 'fas',\n iconName: 'flushed',\n icon: [496, 512, [], \"f579\", \"M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [], \"f07b\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z\"]\n};\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [], \"f07c\", \"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"]\n};\nvar faFontAwesomeLogoFull = {\n prefix: 'fas',\n iconName: 'font-awesome-logo-full',\n icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFootballBall = {\n prefix: 'fas',\n iconName: 'football-ball',\n icon: [496, 512, [], \"f44e\", \"M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [], \"f04e\", \"M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z\"]\n};\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFrown = {\n prefix: 'fas',\n iconName: 'frown',\n icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z\"]\n};\nvar faFrownOpen = {\n prefix: 'fas',\n iconName: 'frown-open',\n icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faFunnelDollar = {\n prefix: 'fas',\n iconName: 'funnel-dollar',\n icon: [640, 512, [], \"f662\", \"M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [], \"f1e3\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z\"]\n};\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [], \"f52f\", \"M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [], \"f0e3\", \"M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [576, 512, [], \"f3a5\", \"M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [288, 512, [], \"f22d\", \"M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z\"]\n};\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [], \"f6e2\", \"M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [], \"f06b\", \"M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z\"]\n};\nvar faGlassCheers = {\n prefix: 'fas',\n iconName: 'glass-cheers',\n icon: [640, 512, [], \"f79f\", \"M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z\"]\n};\nvar faGlassMartini = {\n prefix: 'fas',\n iconName: 'glass-martini',\n icon: [512, 512, [], \"f000\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z\"]\n};\nvar faGlassMartiniAlt = {\n prefix: 'fas',\n iconName: 'glass-martini-alt',\n icon: [512, 512, [], \"f57b\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z\"]\n};\nvar faGlassWhiskey = {\n prefix: 'fas',\n iconName: 'glass-whiskey',\n icon: [512, 512, [], \"f7a0\", \"M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z\"]\n};\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [496, 512, [], \"f0ac\", \"M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z\"]\n};\nvar faGlobeAfrica = {\n prefix: 'fas',\n iconName: 'globe-africa',\n icon: [496, 512, [], \"f57c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z\"]\n};\nvar faGlobeAmericas = {\n prefix: 'fas',\n iconName: 'globe-americas',\n icon: [496, 512, [], \"f57d\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z\"]\n};\nvar faGlobeAsia = {\n prefix: 'fas',\n iconName: 'globe-asia',\n icon: [496, 512, [], \"f57e\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z\"]\n};\nvar faGlobeEurope = {\n prefix: 'fas',\n iconName: 'globe-europe',\n icon: [496, 512, [], \"f7a2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z\"]\n};\nvar faGolfBall = {\n prefix: 'fas',\n iconName: 'golf-ball',\n icon: [416, 512, [], \"f450\", \"M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [], \"f19d\", \"M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [], \"f531\", \"M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faGrimace = {\n prefix: 'fas',\n iconName: 'grimace',\n icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z\"]\n};\nvar faGrin = {\n prefix: 'fas',\n iconName: 'grin',\n icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinAlt = {\n prefix: 'fas',\n iconName: 'grin-alt',\n icon: [496, 512, [], \"f581\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeam = {\n prefix: 'fas',\n iconName: 'grin-beam',\n icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'grin-beam-sweat',\n icon: [504, 512, [], \"f583\", \"M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinHearts = {\n prefix: 'fas',\n iconName: 'grin-hearts',\n icon: [496, 512, [], \"f584\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z\"]\n};\nvar faGrinSquint = {\n prefix: 'fas',\n iconName: 'grin-squint',\n icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinSquintTears = {\n prefix: 'fas',\n iconName: 'grin-squint-tears',\n icon: [512, 512, [], \"f586\", \"M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z\"]\n};\nvar faGrinStars = {\n prefix: 'fas',\n iconName: 'grin-stars',\n icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z\"]\n};\nvar faGrinTears = {\n prefix: 'fas',\n iconName: 'grin-tears',\n icon: [640, 512, [], \"f588\", \"M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinTongue = {\n prefix: 'fas',\n iconName: 'grin-tongue',\n icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'grin-tongue-squint',\n icon: [496, 512, [], \"f58a\", \"M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z\"]\n};\nvar faGrinTongueWink = {\n prefix: 'fas',\n iconName: 'grin-tongue-wink',\n icon: [496, 512, [], \"f58b\", \"M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinWink = {\n prefix: 'fas',\n iconName: 'grin-wink',\n icon: [496, 512, [], \"f58c\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z\"]\n};\nvar faGripHorizontal = {\n prefix: 'fas',\n iconName: 'grip-horizontal',\n icon: [448, 512, [], \"f58d\", \"M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [512, 512, [], \"f7a4\", \"M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [256, 512, [], \"f7a5\", \"M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z\"]\n};\nvar faHSquare = {\n prefix: 'fas',\n iconName: 'h-square',\n icon: [448, 512, [], \"f0fd\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z\"]\n};\nvar faHamburger = {\n prefix: 'fas',\n iconName: 'hamburger',\n icon: [512, 512, [], \"f805\", \"M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z\"]\n};\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [], \"f6e3\", \"M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z\"]\n};\nvar faHandHoldingUsd = {\n prefix: 'fas',\n iconName: 'hand-holding-usd',\n icon: [576, 512, [], \"f4c0\", \"M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z\"]\n};\nvar faHandHoldingWater = {\n prefix: 'fas',\n iconName: 'hand-holding-water',\n icon: [576, 512, [], \"f4c1\", \"M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [576, 512, [], \"f258\", \"M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [512, 512, [], \"f806\", \"M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z\"]\n};\nvar faHandPaper = {\n prefix: 'fas',\n iconName: 'hand-paper',\n icon: [448, 512, [], \"f256\", \"M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z\"]\n};\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [448, 512, [], \"f25b\", \"M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [], \"f0a6\", \"M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z\"]\n};\nvar faHandRock = {\n prefix: 'fas',\n iconName: 'hand-rock',\n icon: [512, 512, [], \"f255\", \"M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z\"]\n};\nvar faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z\"]\n};\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [512, 512, [], \"f259\", \"M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [640, 512, [], \"f4c2\", \"M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\"]\n};\nvar faHandsHelping = {\n prefix: 'fas',\n iconName: 'hands-helping',\n icon: [640, 512, [], \"f4c4\", \"M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z\"]\n};\nvar faHandsWash = {\n prefix: 'fas',\n iconName: 'hands-wash',\n icon: [576, 512, [], \"e05e\", \"M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z\"]\n};\nvar faHandshakeAltSlash = {\n prefix: 'fas',\n iconName: 'handshake-alt-slash',\n icon: [640, 512, [], \"e05f\", \"M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [], \"f6e6\", \"M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z\"]\n};\nvar faHardHat = {\n prefix: 'fas',\n iconName: 'hard-hat',\n icon: [512, 512, [], \"f807\", \"M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [], \"f292\", \"M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z\"]\n};\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z\"]\n};\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z\"]\n};\nvar faHdd = {\n prefix: 'fas',\n iconName: 'hdd',\n icon: [576, 512, [], \"f0a0\", \"M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z\"]\n};\nvar faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z\"]\n};\nvar faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [512, 512, [], \"e063\", \"M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [512, 512, [], \"f1dc\", \"M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z\"]\n};\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [], \"f025\", \"M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z\"]\n};\nvar faHeadphonesAlt = {\n prefix: 'fas',\n iconName: 'headphones-alt',\n icon: [512, 512, [], \"f58f\", \"M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [], \"f004\", \"M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z\"]\n};\nvar faHeartBroken = {\n prefix: 'fas',\n iconName: 'heart-broken',\n icon: [512, 512, [], \"f7a9\", \"M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHeartbeat = {\n prefix: 'fas',\n iconName: 'heartbeat',\n icon: [512, 512, [], \"f21e\", \"M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [], \"f533\", \"M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z\"]\n};\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [544, 512, [], \"f591\", \"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z\"]\n};\nvar faHiking = {\n prefix: 'fas',\n iconName: 'hiking',\n icon: [384, 512, [], \"f6ec\", \"M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [], \"f6ed\", \"M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHistory = {\n prefix: 'fas',\n iconName: 'history',\n icon: [512, 512, [], \"f1da\", \"M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z\"]\n};\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [448, 512, [], \"f7aa\", \"M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z\"]\n};\nvar faHome = {\n prefix: 'fas',\n iconName: 'home',\n icon: [576, 512, [], \"f015\", \"M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [], \"f6f0\", \"M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [512, 512, [], \"f7ab\", \"M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [448, 512, [], \"f0f8\", \"M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z\"]\n};\nvar faHospitalAlt = {\n prefix: 'fas',\n iconName: 'hospital-alt',\n icon: [576, 512, [], \"f47d\", \"M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faHospitalSymbol = {\n prefix: 'fas',\n iconName: 'hospital-symbol',\n icon: [512, 512, [], \"f47e\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z\"]\n};\nvar faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [640, 512, [], \"f80d\", \"M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z\"]\n};\nvar faHotTub = {\n prefix: 'fas',\n iconName: 'hot-tub',\n icon: [512, 512, [], \"f593\", \"M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [], \"f80f\", \"M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [576, 512, [], \"f594\", \"M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [], \"f254\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [], \"f253\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z\"]\n};\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [], \"f252\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [], \"f251\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z\"]\n};\nvar faHouseDamage = {\n prefix: 'fas',\n iconName: 'house-damage',\n icon: [576, 512, [], \"f6f1\", \"M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z\"]\n};\nvar faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [], \"e065\", \"M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z\"]\n};\nvar faHryvnia = {\n prefix: 'fas',\n iconName: 'hryvnia',\n icon: [384, 512, [], \"f6f2\", \"M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [], \"f810\", \"M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z\"]\n};\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [], \"f86d\", \"M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z\"]\n};\nvar faIdCardAlt = {\n prefix: 'fas',\n iconName: 'id-card-alt',\n icon: [576, 512, [], \"f47f\", \"M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [576, 512, [], \"f01c\", \"M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [512, 512, [], \"f275\", \"M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z\"]\n};\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [], \"f534\", \"M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z\"]\n};\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z\"]\n};\nvar faInfoCircle = {\n prefix: 'fas',\n iconName: 'info-circle',\n icon: [512, 512, [], \"f05a\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [320, 512, [], \"f033\", \"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"]\n};\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z\"]\n};\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z\"]\n};\nvar faJournalWhills = {\n prefix: 'fas',\n iconName: 'journal-whills',\n icon: [448, 512, [], \"f66a\", \"M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z\"]\n};\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [], \"f66b\", \"M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z\"]\n};\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [], \"f084\", \"M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [], \"f11c\", \"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [], \"f66d\", \"M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z\"]\n};\nvar faKiss = {\n prefix: 'fas',\n iconName: 'kiss',\n icon: [496, 512, [], \"f596\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faKissBeam = {\n prefix: 'fas',\n iconName: 'kiss-beam',\n icon: [496, 512, [], \"f597\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z\"]\n};\nvar faKissWinkHeart = {\n prefix: 'fas',\n iconName: 'kiss-wink-heart',\n icon: [504, 512, [], \"f598\", \"M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z\"]\n};\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [], \"f66f\", \"M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z\"]\n};\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [], \"f109\", \"M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopHouse = {\n prefix: 'fas',\n iconName: 'laptop-house',\n icon: [640, 512, [], \"e066\", \"M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z\"]\n};\nvar faLaugh = {\n prefix: 'fas',\n iconName: 'laugh',\n icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z\"]\n};\nvar faLaughBeam = {\n prefix: 'fas',\n iconName: 'laugh-beam',\n icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughSquint = {\n prefix: 'fas',\n iconName: 'laugh-squint',\n icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughWink = {\n prefix: 'fas',\n iconName: 'laugh-wink',\n icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [512, 512, [], \"f5fd\", \"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [576, 512, [], \"f06c\", \"M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z\"]\n};\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [512, 512, [], \"f094\", \"M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z\"]\n};\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [], \"f536\", \"M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z\"]\n};\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faLevelDownAlt = {\n prefix: 'fas',\n iconName: 'level-down-alt',\n icon: [320, 512, [], \"f3be\", \"M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z\"]\n};\nvar faLevelUpAlt = {\n prefix: 'fas',\n iconName: 'level-up-alt',\n icon: [320, 512, [], \"f3bf\", \"M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z\"]\n};\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [352, 512, [], \"f0eb\", \"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [512, 512, [], \"f0c1\", \"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [384, 512, [], \"f195\", \"M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z\"]\n};\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [], \"f03a\", \"M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faListAlt = {\n prefix: 'fas',\n iconName: 'list-alt',\n icon: [512, 512, [], \"f022\", \"M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z\"]\n};\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [], \"f0cb\", \"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [], \"f0ca\", \"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [512, 512, [], \"f124\", \"M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z\"]\n};\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [], \"f023\", \"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z\"]\n};\nvar faLongArrowAltDown = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-down',\n icon: [256, 512, [], \"f309\", \"M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z\"]\n};\nvar faLongArrowAltLeft = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-left',\n icon: [448, 512, [], \"f30a\", \"M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z\"]\n};\nvar faLongArrowAltRight = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-right',\n icon: [448, 512, [], \"f30b\", \"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"]\n};\nvar faLongArrowAltUp = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-up',\n icon: [256, 512, [], \"f30c\", \"M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z\"]\n};\nvar faLowVision = {\n prefix: 'fas',\n iconName: 'low-vision',\n icon: [576, 512, [], \"f2a8\", \"M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z\"]\n};\nvar faLuggageCart = {\n prefix: 'fas',\n iconName: 'luggage-cart',\n icon: [640, 512, [], \"f59d\", \"M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z\"]\n};\nvar faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [], \"f604\", \"M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z\"]\n};\nvar faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z\"]\n};\nvar faMagic = {\n prefix: 'fas',\n iconName: 'magic',\n icon: [512, 512, [], \"f0d0\", \"M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [512, 512, [], \"f076\", \"M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z\"]\n};\nvar faMailBulk = {\n prefix: 'fas',\n iconName: 'mail-bulk',\n icon: [576, 512, [], \"f674\", \"M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z\"]\n};\nvar faMale = {\n prefix: 'fas',\n iconName: 'male',\n icon: [192, 512, [], \"f183\", \"M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z\"]\n};\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [], \"f279\", \"M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarked = {\n prefix: 'fas',\n iconName: 'map-marked',\n icon: [576, 512, [], \"f59f\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarkedAlt = {\n prefix: 'fas',\n iconName: 'map-marked-alt',\n icon: [576, 512, [], \"f5a0\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarker = {\n prefix: 'fas',\n iconName: 'map-marker',\n icon: [384, 512, [], \"f041\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z\"]\n};\nvar faMapMarkerAlt = {\n prefix: 'fas',\n iconName: 'map-marker-alt',\n icon: [384, 512, [], \"f3c5\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [288, 512, [], \"f276\", \"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\"]\n};\nvar faMapSigns = {\n prefix: 'fas',\n iconName: 'map-signs',\n icon: [512, 512, [], \"f277\", \"M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [384, 512, [], \"f222\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [512, 512, [], \"f227\", \"M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z\"]\n};\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [384, 512, [], \"f229\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsStrokeH = {\n prefix: 'fas',\n iconName: 'mars-stroke-h',\n icon: [480, 512, [], \"f22b\", \"M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMarsStrokeV = {\n prefix: 'fas',\n iconName: 'mars-stroke-v',\n icon: [288, 512, [], \"f22a\", \"M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [640, 512, [], \"f6fa\", \"M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z\"]\n};\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [], \"f5a2\", \"M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z\"]\n};\nvar faMedkit = {\n prefix: 'fas',\n iconName: 'medkit',\n icon: [512, 512, [], \"f0fa\", \"M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z\"]\n};\nvar faMeh = {\n prefix: 'fas',\n iconName: 'meh',\n icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehBlank = {\n prefix: 'fas',\n iconName: 'meh-blank',\n icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehRollingEyes = {\n prefix: 'fas',\n iconName: 'meh-rolling-eyes',\n icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z\"]\n};\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [640, 512, [], \"f538\", \"M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z\"]\n};\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [288, 512, [], \"f223\", \"M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [], \"f753\", \"M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [352, 512, [], \"f130\", \"M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneAlt = {\n prefix: 'fas',\n iconName: 'microphone-alt',\n icon: [352, 512, [], \"f3c9\", \"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z\"]\n};\nvar faMicrophoneAltSlash = {\n prefix: 'fas',\n iconName: 'microphone-alt-slash',\n icon: [640, 512, [], \"f539\", \"M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [], \"f610\", \"M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [], \"f068\", \"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faMinusCircle = {\n prefix: 'fas',\n iconName: 'minus-circle',\n icon: [512, 512, [], \"f056\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z\"]\n};\nvar faMinusSquare = {\n prefix: 'fas',\n iconName: 'minus-square',\n icon: [448, 512, [], \"f146\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z\"]\n};\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [320, 512, [], \"f10b\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMobileAlt = {\n prefix: 'fas',\n iconName: 'mobile-alt',\n icon: [320, 512, [], \"f3cd\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [640, 512, [], \"f0d6\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillAlt = {\n prefix: 'fas',\n iconName: 'money-bill-alt',\n icon: [640, 512, [], \"f3d1\", \"M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [640, 512, [], \"f53a\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z\"]\n};\nvar faMoneyBillWaveAlt = {\n prefix: 'fas',\n iconName: 'money-bill-wave-alt',\n icon: [640, 512, [], \"f53b\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [640, 512, [], \"f53c\", \"M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMoneyCheckAlt = {\n prefix: 'fas',\n iconName: 'money-check-alt',\n icon: [640, 512, [], \"f53d\", \"M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [512, 512, [], \"f186\", \"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [], \"f678\", \"M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [], \"f21c\", \"M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z\"]\n};\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [640, 512, [], \"f6fc\", \"M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z\"]\n};\nvar faMouse = {\n prefix: 'fas',\n iconName: 'mouse',\n icon: [384, 512, [], \"f8cc\", \"M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z\"]\n};\nvar faMousePointer = {\n prefix: 'fas',\n iconName: 'mouse-pointer',\n icon: [320, 512, [], \"f245\", \"M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z\"]\n};\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [], \"f7b6\", \"M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [], \"f001\", \"M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [288, 512, [], \"f22c\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [576, 512, [], \"f1ea\", \"M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\"]\n};\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [384, 512, [], \"f481\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [512, 512, [], \"f247\", \"M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z\"]\n};\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [576, 512, [], \"f248\", \"M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z\"]\n};\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z\"]\n};\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [], \"f679\", \"M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [], \"f700\", \"M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z\"]\n};\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [], \"f03b\", \"M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [], \"f815\", \"M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z\"]\n};\nvar faPaintBrush = {\n prefix: 'fas',\n iconName: 'paint-brush',\n icon: [512, 512, [], \"f1fc\", \"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z\"]\n};\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [], \"f53f\", \"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z\"]\n};\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [], \"f1d8\", \"M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z\"]\n};\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [], \"f0c6\", \"M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [], \"f1dd\", \"M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z\"]\n};\nvar faParking = {\n prefix: 'fas',\n iconName: 'parking',\n icon: [448, 512, [], \"f540\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z\"]\n};\nvar faPastafarianism = {\n prefix: 'fas',\n iconName: 'pastafarianism',\n icon: [640, 512, [], \"f67b\", \"M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [448, 512, [], \"f0ea\", \"M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [448, 512, [], \"f04c\", \"M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z\"]\n};\nvar faPauseCircle = {\n prefix: 'fas',\n iconName: 'pause-circle',\n icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [496, 512, [], \"f67c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [], \"f304\", \"M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z\"]\n};\nvar faPenAlt = {\n prefix: 'fas',\n iconName: 'pen-alt',\n icon: [512, 512, [], \"f305\", \"M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [], \"f5ac\", \"M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [], \"f5ad\", \"M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z\"]\n};\nvar faPenSquare = {\n prefix: 'fas',\n iconName: 'pen-square',\n icon: [448, 512, [], \"f14b\", \"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z\"]\n};\nvar faPencilAlt = {\n prefix: 'fas',\n iconName: 'pencil-alt',\n icon: [512, 512, [], \"f303\", \"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"]\n};\nvar faPencilRuler = {\n prefix: 'fas',\n iconName: 'pencil-ruler',\n icon: [512, 512, [], \"f5ae\", \"M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z\"]\n};\nvar faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [576, 512, [], \"e068\", \"M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z\"]\n};\nvar faPeopleCarry = {\n prefix: 'fas',\n iconName: 'people-carry',\n icon: [640, 512, [], \"f4ce\", \"M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z\"]\n};\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [], \"f816\", \"M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [448, 512, [], \"f295\", \"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z\"]\n};\nvar faPercentage = {\n prefix: 'fas',\n iconName: 'percentage',\n icon: [384, 512, [], \"f541\", \"M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z\"]\n};\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z\"]\n};\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [], \"f095\", \"M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z\"]\n};\nvar faPhoneAlt = {\n prefix: 'fas',\n iconName: 'phone-alt',\n icon: [512, 512, [], \"f879\", \"M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faPhoneSquare = {\n prefix: 'fas',\n iconName: 'phone-square',\n icon: [448, 512, [], \"f098\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z\"]\n};\nvar faPhoneSquareAlt = {\n prefix: 'fas',\n iconName: 'phone-square-alt',\n icon: [448, 512, [], \"f87b\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z\"]\n};\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [384, 512, [], \"f2a0\", \"M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z\"]\n};\nvar faPhotoVideo = {\n prefix: 'fas',\n iconName: 'photo-video',\n icon: [640, 512, [], \"f87c\", \"M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z\"]\n};\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z\"]\n};\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z\"]\n};\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [], \"f5af\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z\"]\n};\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [], \"f5b0\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z\"]\n};\nvar faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [448, 512, [], \"f04b\", \"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z\"]\n};\nvar faPlayCircle = {\n prefix: 'fas',\n iconName: 'play-circle',\n icon: [512, 512, [], \"f144\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [], \"f1e6\", \"M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z\"]\n};\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [], \"f067\", \"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPlusCircle = {\n prefix: 'fas',\n iconName: 'plus-circle',\n icon: [512, 512, [], \"f055\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPlusSquare = {\n prefix: 'fas',\n iconName: 'plus-square',\n icon: [448, 512, [], \"f0fe\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z\"]\n};\nvar faPoll = {\n prefix: 'fas',\n iconName: 'poll',\n icon: [448, 512, [], \"f681\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z\"]\n};\nvar faPollH = {\n prefix: 'fas',\n iconName: 'poll-h',\n icon: [448, 512, [], \"f682\", \"M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [], \"f2fe\", \"M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [], \"f75a\", \"M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z\"]\n};\nvar faPortrait = {\n prefix: 'fas',\n iconName: 'portrait',\n icon: [384, 512, [], \"f3e0\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faPoundSign = {\n prefix: 'fas',\n iconName: 'pound-sign',\n icon: [320, 512, [], \"f154\", \"M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [], \"f011\", \"M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z\"]\n};\nvar faPray = {\n prefix: 'fas',\n iconName: 'pray',\n icon: [384, 512, [], \"f683\", \"M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z\"]\n};\nvar faPrayingHands = {\n prefix: 'fas',\n iconName: 'praying-hands',\n icon: [640, 512, [], \"f684\", \"M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z\"]\n};\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [384, 512, [], \"f5b1\", \"M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z\"]\n};\nvar faPrescriptionBottleAlt = {\n prefix: 'fas',\n iconName: 'prescription-bottle-alt',\n icon: [384, 512, [], \"f486\", \"M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z\"]\n};\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [], \"f02f\", \"M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faProcedures = {\n prefix: 'fas',\n iconName: 'procedures',\n icon: [640, 512, [], \"f487\", \"M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faProjectDiagram = {\n prefix: 'fas',\n iconName: 'project-diagram',\n icon: [640, 512, [], \"f542\", \"M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [384, 512, [], \"e06a\", \"M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z\"]\n};\nvar faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [384, 512, [], \"e06b\", \"M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [576, 512, [], \"f12e\", \"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\"]\n};\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [384, 512, [], \"f128\", \"M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z\"]\n};\nvar faQuestionCircle = {\n prefix: 'fas',\n iconName: 'question-circle',\n icon: [512, 512, [], \"f059\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\"]\n};\nvar faQuidditch = {\n prefix: 'fas',\n iconName: 'quidditch',\n icon: [640, 512, [], \"f458\", \"M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [512, 512, [], \"f10d\", \"M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [512, 512, [], \"f10e\", \"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuran = {\n prefix: 'fas',\n iconName: 'quran',\n icon: [448, 512, [], \"f687\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [496, 512, [], \"f7b9\", \"M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z\"]\n};\nvar faRadiationAlt = {\n prefix: 'fas',\n iconName: 'radiation-alt',\n icon: [496, 512, [], \"f7ba\", \"M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [576, 512, [], \"f75b\", \"M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z\"]\n};\nvar faRandom = {\n prefix: 'fas',\n iconName: 'random',\n icon: [512, 512, [], \"f074\", \"M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z\"]\n};\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [], \"f543\", \"M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z\"]\n};\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [], \"f1b8\", \"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\"]\n};\nvar faRedo = {\n prefix: 'fas',\n iconName: 'redo',\n icon: [512, 512, [], \"f01e\", \"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z\"]\n};\nvar faRedoAlt = {\n prefix: 'fas',\n iconName: 'redo-alt',\n icon: [512, 512, [], \"f2f9\", \"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\"]\n};\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [], \"f25d\", \"M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z\"]\n};\nvar faRemoveFormat = {\n prefix: 'fas',\n iconName: 'remove-format',\n icon: [640, 512, [], \"f87d\", \"M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [], \"f3e5\", \"M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [], \"f122\", \"M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [640, 512, [], \"f079\", \"M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [], \"f4d6\", \"M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [], \"f018\", \"M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [], \"f544\", \"M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [], \"f09e\", \"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z\"]\n};\nvar faRssSquare = {\n prefix: 'fas',\n iconName: 'rss-square',\n icon: [448, 512, [], \"f143\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z\"]\n};\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [], \"f158\", \"M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [640, 512, [], \"f545\", \"M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [576, 512, [], \"f547\", \"M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z\"]\n};\nvar faRunning = {\n prefix: 'fas',\n iconName: 'running',\n icon: [416, 512, [], \"f70c\", \"M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [320, 512, [], \"f156\", \"M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z\"]\n};\nvar faSadCry = {\n prefix: 'fas',\n iconName: 'sad-cry',\n icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z\"]\n};\nvar faSadTear = {\n prefix: 'fas',\n iconName: 'sad-tear',\n icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z\"]\n};\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [], \"f7bf\", \"M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z\"]\n};\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [], \"f7c0\", \"M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z\"]\n};\nvar faSave = {\n prefix: 'fas',\n iconName: 'save',\n icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [], \"f549\", \"M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z\"]\n};\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [], \"f54a\", \"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [640, 512, [], \"f70e\", \"M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z\"]\n};\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z\"]\n};\nvar faSearch = {\n prefix: 'fas',\n iconName: 'search',\n icon: [512, 512, [], \"f002\", \"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\"]\n};\nvar faSearchDollar = {\n prefix: 'fas',\n iconName: 'search-dollar',\n icon: [512, 512, [], \"f688\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z\"]\n};\nvar faSearchLocation = {\n prefix: 'fas',\n iconName: 'search-location',\n icon: [512, 512, [], \"f689\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faSearchMinus = {\n prefix: 'fas',\n iconName: 'search-minus',\n icon: [512, 512, [], \"f010\", \"M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSearchPlus = {\n prefix: 'fas',\n iconName: 'search-plus',\n icon: [512, 512, [], \"f00e\", \"M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [], \"f4d8\", \"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z\"]\n};\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [], \"f61f\", \"M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [], \"f064\", \"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z\"]\n};\nvar faShareAlt = {\n prefix: 'fas',\n iconName: 'share-alt',\n icon: [448, 512, [], \"f1e0\", \"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\"]\n};\nvar faShareAltSquare = {\n prefix: 'fas',\n iconName: 'share-alt-square',\n icon: [448, 512, [], \"f1e1\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z\"]\n};\nvar faShareSquare = {\n prefix: 'fas',\n iconName: 'share-square',\n icon: [576, 512, [], \"f14d\", \"M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [], \"f20b\", \"M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faShieldAlt = {\n prefix: 'fas',\n iconName: 'shield-alt',\n icon: [512, 512, [], \"f3ed\", \"M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z\"]\n};\nvar faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [640, 512, [], \"f21a\", \"M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z\"]\n};\nvar faShippingFast = {\n prefix: 'fas',\n iconName: 'shipping-fast',\n icon: [640, 512, [], \"f48b\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z\"]\n};\nvar faShoppingBag = {\n prefix: 'fas',\n iconName: 'shopping-bag',\n icon: [448, 512, [], \"f290\", \"M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z\"]\n};\nvar faShoppingBasket = {\n prefix: 'fas',\n iconName: 'shopping-basket',\n icon: [576, 512, [], \"f291\", \"M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z\"]\n};\nvar faShoppingCart = {\n prefix: 'fas',\n iconName: 'shopping-cart',\n icon: [576, 512, [], \"f07a\", \"M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z\"]\n};\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [], \"f2cc\", \"M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z\"]\n};\nvar faShuttleVan = {\n prefix: 'fas',\n iconName: 'shuttle-van',\n icon: [640, 512, [], \"f5b6\", \"M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z\"]\n};\nvar faSign = {\n prefix: 'fas',\n iconName: 'sign',\n icon: [512, 512, [], \"f4d9\", \"M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z\"]\n};\nvar faSignInAlt = {\n prefix: 'fas',\n iconName: 'sign-in-alt',\n icon: [512, 512, [], \"f2f6\", \"M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z\"]\n};\nvar faSignLanguage = {\n prefix: 'fas',\n iconName: 'sign-language',\n icon: [448, 512, [], \"f2a7\", \"M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z\"]\n};\nvar faSignOutAlt = {\n prefix: 'fas',\n iconName: 'sign-out-alt',\n icon: [512, 512, [], \"f2f5\", \"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [], \"f012\", \"M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z\"]\n};\nvar faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z\"]\n};\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [640, 512, [], \"f0e8\", \"M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSkating = {\n prefix: 'fas',\n iconName: 'skating',\n icon: [448, 512, [], \"f7c5\", \"M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSkiing = {\n prefix: 'fas',\n iconName: 'skiing',\n icon: [512, 512, [], \"f7c9\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z\"]\n};\nvar faSkiingNordic = {\n prefix: 'fas',\n iconName: 'skiing-nordic',\n icon: [576, 512, [], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [], \"f54c\", \"M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\"]\n};\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [], \"f714\", \"M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z\"]\n};\nvar faSlidersH = {\n prefix: 'fas',\n iconName: 'sliders-h',\n icon: [512, 512, [], \"f1de\", \"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z\"]\n};\nvar faSmile = {\n prefix: 'fas',\n iconName: 'smile',\n icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z\"]\n};\nvar faSmileBeam = {\n prefix: 'fas',\n iconName: 'smile-beam',\n icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z\"]\n};\nvar faSmileWink = {\n prefix: 'fas',\n iconName: 'smile-wink',\n icon: [496, 512, [], \"f4da\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z\"]\n};\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [], \"f48d\", \"M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\"]\n};\nvar faSmokingBan = {\n prefix: 'fas',\n iconName: 'smoking-ban',\n icon: [512, 512, [], \"f54d\", \"M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z\"]\n};\nvar faSms = {\n prefix: 'fas',\n iconName: 'sms',\n icon: [512, 512, [], \"f7cd\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z\"]\n};\nvar faSnowboarding = {\n prefix: 'fas',\n iconName: 'snowboarding',\n icon: [512, 512, [], \"f7ce\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [], \"f2dc\", \"M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [], \"f7d0\", \"M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [], \"e06e\", \"M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z\"]\n};\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [], \"f696\", \"M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [], \"f0dc\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z\"]\n};\nvar faSortAlphaDown = {\n prefix: 'fas',\n iconName: 'sort-alpha-down',\n icon: [448, 512, [], \"f15d\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaDownAlt = {\n prefix: 'fas',\n iconName: 'sort-alpha-down-alt',\n icon: [448, 512, [], \"f881\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAlphaUp = {\n prefix: 'fas',\n iconName: 'sort-alpha-up',\n icon: [448, 512, [], \"f15e\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaUpAlt = {\n prefix: 'fas',\n iconName: 'sort-alpha-up-alt',\n icon: [448, 512, [], \"f882\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAmountDown = {\n prefix: 'fas',\n iconName: 'sort-amount-down',\n icon: [512, 512, [], \"f160\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountDownAlt = {\n prefix: 'fas',\n iconName: 'sort-amount-down-alt',\n icon: [512, 512, [], \"f884\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortAmountUp = {\n prefix: 'fas',\n iconName: 'sort-amount-up',\n icon: [512, 512, [], \"f161\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountUpAlt = {\n prefix: 'fas',\n iconName: 'sort-amount-up-alt',\n icon: [512, 512, [], \"f885\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [], \"f0dd\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\"]\n};\nvar faSortNumericDown = {\n prefix: 'fas',\n iconName: 'sort-numeric-down',\n icon: [448, 512, [], \"f162\", \"M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortNumericDownAlt = {\n prefix: 'fas',\n iconName: 'sort-numeric-down-alt',\n icon: [448, 512, [], \"f886\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortNumericUp = {\n prefix: 'fas',\n iconName: 'sort-numeric-up',\n icon: [448, 512, [], \"f163\", \"M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z\"]\n};\nvar faSortNumericUpAlt = {\n prefix: 'fas',\n iconName: 'sort-numeric-up-alt',\n icon: [448, 512, [], \"f887\", \"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [], \"f0de\", \"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z\"]\n};\nvar faSpaceShuttle = {\n prefix: 'fas',\n iconName: 'space-shuttle',\n icon: [640, 512, [], \"f197\", \"M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [576, 512, [], \"f717\", \"M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z\"]\n};\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z\"]\n};\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [], \"f0c8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [], \"f45c\", \"M512 512H0V0h512v512z\"]\n};\nvar faSquareRootAlt = {\n prefix: 'fas',\n iconName: 'square-root-alt',\n icon: [576, 512, [], \"f698\", \"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z\"]\n};\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [], \"f005\", \"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"]\n};\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [], \"f699\", \"M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z\"]\n};\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [], \"f089\", \"M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z\"]\n};\nvar faStarHalfAlt = {\n prefix: 'fas',\n iconName: 'star-half-alt',\n icon: [536, 512, [], \"f5c0\", \"M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [464, 512, [], \"f69a\", \"M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [480, 512, [], \"f621\", \"M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z\"]\n};\nvar faStepBackward = {\n prefix: 'fas',\n iconName: 'step-backward',\n icon: [448, 512, [], \"f048\", \"M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z\"]\n};\nvar faStepForward = {\n prefix: 'fas',\n iconName: 'step-forward',\n icon: [448, 512, [], \"f051\", \"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z\"]\n};\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [512, 512, [], \"f0f1\", \"M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faStickyNote = {\n prefix: 'fas',\n iconName: 'sticky-note',\n icon: [448, 512, [], \"f249\", \"M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z\"]\n};\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [448, 512, [], \"f04d\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faStopCircle = {\n prefix: 'fas',\n iconName: 'stop-circle',\n icon: [512, 512, [], \"f28d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [], \"f2f2\", \"M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [616, 512, [], \"f54e\", \"M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z\"]\n};\nvar faStoreAlt = {\n prefix: 'fas',\n iconName: 'store-alt',\n icon: [640, 512, [], \"f54f\", \"M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z\"]\n};\nvar faStoreAltSlash = {\n prefix: 'fas',\n iconName: 'store-alt-slash',\n icon: [640, 512, [], \"e070\", \"M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z\"]\n};\nvar faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z\"]\n};\nvar faStream = {\n prefix: 'fas',\n iconName: 'stream',\n icon: [512, 512, [], \"f550\", \"M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z\"]\n};\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z\"]\n};\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSubway = {\n prefix: 'fas',\n iconName: 'subway',\n icon: [448, 512, [], \"f239\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [], \"f0f2\", \"M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z\"]\n};\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z\"]\n};\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [], \"f185\", \"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSurprise = {\n prefix: 'fas',\n iconName: 'surprise',\n icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z\"]\n};\nvar faSwimmer = {\n prefix: 'fas',\n iconName: 'swimmer',\n icon: [640, 512, [], \"f5c4\", \"M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z\"]\n};\nvar faSwimmingPool = {\n prefix: 'fas',\n iconName: 'swimming-pool',\n icon: [640, 512, [], \"f5c5\", \"M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [], \"f69b\", \"M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z\"]\n};\nvar faSync = {\n prefix: 'fas',\n iconName: 'sync',\n icon: [512, 512, [], \"f021\", \"M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z\"]\n};\nvar faSyncAlt = {\n prefix: 'fas',\n iconName: 'sync-alt',\n icon: [512, 512, [], \"f2f1\", \"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [], \"f48e\", \"M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z\"]\n};\nvar faTableTennis = {\n prefix: 'fas',\n iconName: 'table-tennis',\n icon: [512, 512, [], \"f45d\", \"M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [], \"f10a\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faTabletAlt = {\n prefix: 'fas',\n iconName: 'tablet-alt',\n icon: [448, 512, [], \"f3fa\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z\"]\n};\nvar faTachometerAlt = {\n prefix: 'fas',\n iconName: 'tachometer-alt',\n icon: [576, 512, [], \"f3fd\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [512, 512, [], \"f02b\", \"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [640, 512, [], \"f02c\", \"M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z\"]\n};\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [640, 512, [], \"f4db\", \"M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\"]\n};\nvar faTasks = {\n prefix: 'fas',\n iconName: 'tasks',\n icon: [512, 512, [], \"f0ae\", \"M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [], \"f1ba\", \"M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [640, 512, [], \"f62e\", \"M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [640, 512, [], \"f62f\", \"M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z\"]\n};\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTenge = {\n prefix: 'fas',\n iconName: 'tenge',\n icon: [384, 512, [], \"f7d7\", \"M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z\"]\n};\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [640, 512, [], \"f120\", \"M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z\"]\n};\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z\"]\n};\nvar faTh = {\n prefix: 'fas',\n iconName: 'th',\n icon: [512, 512, [], \"f00a\", \"M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z\"]\n};\nvar faThLarge = {\n prefix: 'fas',\n iconName: 'th-large',\n icon: [512, 512, [], \"f009\", \"M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z\"]\n};\nvar faThList = {\n prefix: 'fas',\n iconName: 'th-list',\n icon: [512, 512, [], \"f00b\", \"M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z\"]\n};\nvar faTheaterMasks = {\n prefix: 'fas',\n iconName: 'theater-masks',\n icon: [640, 512, [], \"f630\", \"M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z\"]\n};\nvar faThermometerEmpty = {\n prefix: 'fas',\n iconName: 'thermometer-empty',\n icon: [256, 512, [], \"f2cb\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerFull = {\n prefix: 'fas',\n iconName: 'thermometer-full',\n icon: [256, 512, [], \"f2c7\", \"M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z\"]\n};\nvar faThermometerHalf = {\n prefix: 'fas',\n iconName: 'thermometer-half',\n icon: [256, 512, [], \"f2c9\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerQuarter = {\n prefix: 'fas',\n iconName: 'thermometer-quarter',\n icon: [256, 512, [], \"f2ca\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerThreeQuarters = {\n prefix: 'fas',\n iconName: 'thermometer-three-quarters',\n icon: [256, 512, [], \"f2c8\", \"M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [], \"f165\", \"M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z\"]\n};\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [], \"f164\", \"M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z\"]\n};\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [], \"f08d\", \"M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z\"]\n};\nvar faTicketAlt = {\n prefix: 'fas',\n iconName: 'ticket-alt',\n icon: [576, 512, [], \"f3ff\", \"M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z\"]\n};\nvar faTimes = {\n prefix: 'fas',\n iconName: 'times',\n icon: [352, 512, [], \"f00d\", \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"]\n};\nvar faTimesCircle = {\n prefix: 'fas',\n iconName: 'times-circle',\n icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\"]\n};\nvar faTint = {\n prefix: 'fas',\n iconName: 'tint',\n icon: [352, 512, [], \"f043\", \"M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faTintSlash = {\n prefix: 'fas',\n iconName: 'tint-slash',\n icon: [640, 512, [], \"f5c7\", \"M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z\"]\n};\nvar faTired = {\n prefix: 'fas',\n iconName: 'tired',\n icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z\"]\n};\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z\"]\n};\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [384, 512, [], \"f7d8\", \"M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [576, 512, [], \"f71e\", \"M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z\"]\n};\nvar faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [], \"f552\", \"M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z\"]\n};\nvar faTools = {\n prefix: 'fas',\n iconName: 'tools',\n icon: [512, 512, [], \"f7d9\", \"M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z\"]\n};\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [], \"f5c9\", \"M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z\"]\n};\nvar faTorah = {\n prefix: 'fas',\n iconName: 'torah',\n icon: [640, 512, [], \"f6a0\", \"M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z\"]\n};\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [], \"f6a1\", \"M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z\"]\n};\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [], \"f722\", \"M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [], \"f25c\", \"M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z\"]\n};\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [384, 512, [], \"f637\", \"M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [], \"f238\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z\"]\n};\nvar faTram = {\n prefix: 'fas',\n iconName: 'tram',\n icon: [512, 512, [], \"f7da\", \"M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [384, 512, [], \"f224\", \"M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTransgenderAlt = {\n prefix: 'fas',\n iconName: 'transgender-alt',\n icon: [480, 512, [], \"f225\", \"M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"]\n};\nvar faTrashAlt = {\n prefix: 'fas',\n iconName: 'trash-alt',\n icon: [448, 512, [], \"f2ed\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestore = {\n prefix: 'fas',\n iconName: 'trash-restore',\n icon: [448, 512, [], \"f829\", \"M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestoreAlt = {\n prefix: 'fas',\n iconName: 'trash-restore-alt',\n icon: [448, 512, [], \"f82a\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [384, 512, [], \"f1bb\", \"M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z\"]\n};\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [], \"f091\", \"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [], \"f0d1\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faTruckLoading = {\n prefix: 'fas',\n iconName: 'truck-loading',\n icon: [640, 512, [], \"f4de\", \"M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\"]\n};\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [], \"f63c\", \"M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faTshirt = {\n prefix: 'fas',\n iconName: 'tshirt',\n icon: [640, 512, [], \"f553\", \"M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [], \"f1e4\", \"M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [], \"f26c\", \"M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z\"]\n};\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [640, 512, [], \"f5ca\", \"M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z\"]\n};\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faUndo = {\n prefix: 'fas',\n iconName: 'undo',\n icon: [512, 512, [], \"f0e2\", \"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z\"]\n};\nvar faUndoAlt = {\n prefix: 'fas',\n iconName: 'undo-alt',\n icon: [512, 512, [], \"f2ea\", \"M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z\"]\n};\nvar faUniversity = {\n prefix: 'fas',\n iconName: 'university',\n icon: [512, 512, [], \"f19c\", \"M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z\"]\n};\nvar faUnlink = {\n prefix: 'fas',\n iconName: 'unlink',\n icon: [512, 512, [], \"f127\", \"M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [], \"f09c\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faUnlockAlt = {\n prefix: 'fas',\n iconName: 'unlock-alt',\n icon: [448, 512, [], \"f13e\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\"]\n};\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [], \"f007\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserAlt = {\n prefix: 'fas',\n iconName: 'user-alt',\n icon: [512, 512, [], \"f406\", \"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z\"]\n};\nvar faUserAltSlash = {\n prefix: 'fas',\n iconName: 'user-alt-slash',\n icon: [640, 512, [], \"f4fa\", \"M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z\"]\n};\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z\"]\n};\nvar faUserCircle = {\n prefix: 'fas',\n iconName: 'user-circle',\n icon: [496, 512, [], \"f2bd\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z\"]\n};\nvar faUserCog = {\n prefix: 'fas',\n iconName: 'user-cog',\n icon: [640, 512, [], \"f4fe\", \"M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z\"]\n};\nvar faUserEdit = {\n prefix: 'fas',\n iconName: 'user-edit',\n icon: [640, 512, [], \"f4ff\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z\"]\n};\nvar faUserFriends = {\n prefix: 'fas',\n iconName: 'user-friends',\n icon: [640, 512, [], \"f500\", \"M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z\"]\n};\nvar faUserMd = {\n prefix: 'fas',\n iconName: 'user-md',\n icon: [448, 512, [], \"f0f0\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [], \"f504\", \"M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [], \"f21b\", \"M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z\"]\n};\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z\"]\n};\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z\"]\n};\nvar faUserTimes = {\n prefix: 'fas',\n iconName: 'user-times',\n icon: [640, 512, [], \"f235\", \"M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersCog = {\n prefix: 'fas',\n iconName: 'users-cog',\n icon: [640, 512, [], \"f509\", \"M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z\"]\n};\nvar faUtensilSpoon = {\n prefix: 'fas',\n iconName: 'utensil-spoon',\n icon: [512, 512, [], \"f2e5\", \"M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z\"]\n};\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [416, 512, [], \"f2e7\", \"M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z\"]\n};\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [512, 512, [], \"f5cb\", \"M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z\"]\n};\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [288, 512, [], \"f221\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [512, 512, [], \"f226\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [576, 512, [], \"f228\", \"M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z\"]\n};\nvar faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [480, 512, [], \"f492\", \"M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z\"]\n};\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [640, 512, [], \"f493\", \"M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z\"]\n};\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [], \"f03d\", \"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z\"]\n};\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z\"]\n};\nvar faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z\"]\n};\nvar faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z\"]\n};\nvar faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z\"]\n};\nvar faVolleyballBall = {\n prefix: 'fas',\n iconName: 'volleyball-ball',\n icon: [512, 512, [], \"f45f\", \"M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z\"]\n};\nvar faVolumeDown = {\n prefix: 'fas',\n iconName: 'volume-down',\n icon: [384, 512, [], \"f027\", \"M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z\"]\n};\nvar faVolumeMute = {\n prefix: 'fas',\n iconName: 'volume-mute',\n icon: [512, 512, [], \"f6a9\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z\"]\n};\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [256, 512, [], \"f026\", \"M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z\"]\n};\nvar faVolumeUp = {\n prefix: 'fas',\n iconName: 'volume-up',\n icon: [576, 512, [], \"f028\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z\"]\n};\nvar faVoteYea = {\n prefix: 'fas',\n iconName: 'vote-yea',\n icon: [640, 512, [], \"f772\", \"M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z\"]\n};\nvar faWalking = {\n prefix: 'fas',\n iconName: 'walking',\n icon: [320, 512, [], \"f554\", \"M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z\"]\n};\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z\"]\n};\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z\"]\n};\nvar faWeight = {\n prefix: 'fas',\n iconName: 'weight',\n icon: [512, 512, [], \"f496\", \"M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z\"]\n};\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [], \"f1eb\", \"M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z\"]\n};\nvar faWindowClose = {\n prefix: 'fas',\n iconName: 'window-close',\n icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z\"]\n};\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [], \"f2d1\", \"M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z\"]\n};\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [288, 512, [], \"f4e3\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z\"]\n};\nvar faWineGlassAlt = {\n prefix: 'fas',\n iconName: 'wine-glass-alt',\n icon: [288, 512, [], \"f5ce\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [576, 512, [], \"f159\", \"M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z\"]\n};\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [], \"f0ad\", \"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [640, 512, [], \"f497\", \"M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [384, 512, [], \"f157\", \"M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [496, 512, [], \"f6ad\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar _iconsCache = {\n faAd: faAd,\n faAddressBook: faAddressBook,\n faAddressCard: faAddressCard,\n faAdjust: faAdjust,\n faAirFreshener: faAirFreshener,\n faAlignCenter: faAlignCenter,\n faAlignJustify: faAlignJustify,\n faAlignLeft: faAlignLeft,\n faAlignRight: faAlignRight,\n faAllergies: faAllergies,\n faAmbulance: faAmbulance,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAnchor: faAnchor,\n faAngleDoubleDown: faAngleDoubleDown,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faAngleDoubleRight: faAngleDoubleRight,\n faAngleDoubleUp: faAngleDoubleUp,\n faAngleDown: faAngleDown,\n faAngleLeft: faAngleLeft,\n faAngleRight: faAngleRight,\n faAngleUp: faAngleUp,\n faAngry: faAngry,\n faAnkh: faAnkh,\n faAppleAlt: faAppleAlt,\n faArchive: faArchive,\n faArchway: faArchway,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faArrowCircleDown: faArrowCircleDown,\n faArrowCircleLeft: faArrowCircleLeft,\n faArrowCircleRight: faArrowCircleRight,\n faArrowCircleUp: faArrowCircleUp,\n faArrowDown: faArrowDown,\n faArrowLeft: faArrowLeft,\n faArrowRight: faArrowRight,\n faArrowUp: faArrowUp,\n faArrowsAlt: faArrowsAlt,\n faArrowsAltH: faArrowsAltH,\n faArrowsAltV: faArrowsAltV,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faAsterisk: faAsterisk,\n faAt: faAt,\n faAtlas: faAtlas,\n faAtom: faAtom,\n faAudioDescription: faAudioDescription,\n faAward: faAward,\n faBaby: faBaby,\n faBabyCarriage: faBabyCarriage,\n faBackspace: faBackspace,\n faBackward: faBackward,\n faBacon: faBacon,\n faBacteria: faBacteria,\n faBacterium: faBacterium,\n faBahai: faBahai,\n faBalanceScale: faBalanceScale,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faBalanceScaleRight: faBalanceScaleRight,\n faBan: faBan,\n faBandAid: faBandAid,\n faBarcode: faBarcode,\n faBars: faBars,\n faBaseballBall: faBaseballBall,\n faBasketballBall: faBasketballBall,\n faBath: faBath,\n faBatteryEmpty: faBatteryEmpty,\n faBatteryFull: faBatteryFull,\n faBatteryHalf: faBatteryHalf,\n faBatteryQuarter: faBatteryQuarter,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBed: faBed,\n faBeer: faBeer,\n faBell: faBell,\n faBellSlash: faBellSlash,\n faBezierCurve: faBezierCurve,\n faBible: faBible,\n faBicycle: faBicycle,\n faBiking: faBiking,\n faBinoculars: faBinoculars,\n faBiohazard: faBiohazard,\n faBirthdayCake: faBirthdayCake,\n faBlender: faBlender,\n faBlenderPhone: faBlenderPhone,\n faBlind: faBlind,\n faBlog: faBlog,\n faBold: faBold,\n faBolt: faBolt,\n faBomb: faBomb,\n faBone: faBone,\n faBong: faBong,\n faBook: faBook,\n faBookDead: faBookDead,\n faBookMedical: faBookMedical,\n faBookOpen: faBookOpen,\n faBookReader: faBookReader,\n faBookmark: faBookmark,\n faBorderAll: faBorderAll,\n faBorderNone: faBorderNone,\n faBorderStyle: faBorderStyle,\n faBowlingBall: faBowlingBall,\n faBox: faBox,\n faBoxOpen: faBoxOpen,\n faBoxTissue: faBoxTissue,\n faBoxes: faBoxes,\n faBraille: faBraille,\n faBrain: faBrain,\n faBreadSlice: faBreadSlice,\n faBriefcase: faBriefcase,\n faBriefcaseMedical: faBriefcaseMedical,\n faBroadcastTower: faBroadcastTower,\n faBroom: faBroom,\n faBrush: faBrush,\n faBug: faBug,\n faBuilding: faBuilding,\n faBullhorn: faBullhorn,\n faBullseye: faBullseye,\n faBurn: faBurn,\n faBus: faBus,\n faBusAlt: faBusAlt,\n faBusinessTime: faBusinessTime,\n faCalculator: faCalculator,\n faCalendar: faCalendar,\n faCalendarAlt: faCalendarAlt,\n faCalendarCheck: faCalendarCheck,\n faCalendarDay: faCalendarDay,\n faCalendarMinus: faCalendarMinus,\n faCalendarPlus: faCalendarPlus,\n faCalendarTimes: faCalendarTimes,\n faCalendarWeek: faCalendarWeek,\n faCamera: faCamera,\n faCameraRetro: faCameraRetro,\n faCampground: faCampground,\n faCandyCane: faCandyCane,\n faCannabis: faCannabis,\n faCapsules: faCapsules,\n faCar: faCar,\n faCarAlt: faCarAlt,\n faCarBattery: faCarBattery,\n faCarCrash: faCarCrash,\n faCarSide: faCarSide,\n faCaravan: faCaravan,\n faCaretDown: faCaretDown,\n faCaretLeft: faCaretLeft,\n faCaretRight: faCaretRight,\n faCaretSquareDown: faCaretSquareDown,\n faCaretSquareLeft: faCaretSquareLeft,\n faCaretSquareRight: faCaretSquareRight,\n faCaretSquareUp: faCaretSquareUp,\n faCaretUp: faCaretUp,\n faCarrot: faCarrot,\n faCartArrowDown: faCartArrowDown,\n faCartPlus: faCartPlus,\n faCashRegister: faCashRegister,\n faCat: faCat,\n faCertificate: faCertificate,\n faChair: faChair,\n faChalkboard: faChalkboard,\n faChalkboardTeacher: faChalkboardTeacher,\n faChargingStation: faChargingStation,\n faChartArea: faChartArea,\n faChartBar: faChartBar,\n faChartLine: faChartLine,\n faChartPie: faChartPie,\n faCheck: faCheck,\n faCheckCircle: faCheckCircle,\n faCheckDouble: faCheckDouble,\n faCheckSquare: faCheckSquare,\n faCheese: faCheese,\n faChess: faChess,\n faChessBishop: faChessBishop,\n faChessBoard: faChessBoard,\n faChessKing: faChessKing,\n faChessKnight: faChessKnight,\n faChessPawn: faChessPawn,\n faChessQueen: faChessQueen,\n faChessRook: faChessRook,\n faChevronCircleDown: faChevronCircleDown,\n faChevronCircleLeft: faChevronCircleLeft,\n faChevronCircleRight: faChevronCircleRight,\n faChevronCircleUp: faChevronCircleUp,\n faChevronDown: faChevronDown,\n faChevronLeft: faChevronLeft,\n faChevronRight: faChevronRight,\n faChevronUp: faChevronUp,\n faChild: faChild,\n faChurch: faChurch,\n faCircle: faCircle,\n faCircleNotch: faCircleNotch,\n faCity: faCity,\n faClinicMedical: faClinicMedical,\n faClipboard: faClipboard,\n faClipboardCheck: faClipboardCheck,\n faClipboardList: faClipboardList,\n faClock: faClock,\n faClone: faClone,\n faClosedCaptioning: faClosedCaptioning,\n faCloud: faCloud,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faCloudMeatball: faCloudMeatball,\n faCloudMoon: faCloudMoon,\n faCloudMoonRain: faCloudMoonRain,\n faCloudRain: faCloudRain,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faCloudSun: faCloudSun,\n faCloudSunRain: faCloudSunRain,\n faCloudUploadAlt: faCloudUploadAlt,\n faCocktail: faCocktail,\n faCode: faCode,\n faCodeBranch: faCodeBranch,\n faCoffee: faCoffee,\n faCog: faCog,\n faCogs: faCogs,\n faCoins: faCoins,\n faColumns: faColumns,\n faComment: faComment,\n faCommentAlt: faCommentAlt,\n faCommentDollar: faCommentDollar,\n faCommentDots: faCommentDots,\n faCommentMedical: faCommentMedical,\n faCommentSlash: faCommentSlash,\n faComments: faComments,\n faCommentsDollar: faCommentsDollar,\n faCompactDisc: faCompactDisc,\n faCompass: faCompass,\n faCompress: faCompress,\n faCompressAlt: faCompressAlt,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faConciergeBell: faConciergeBell,\n faCookie: faCookie,\n faCookieBite: faCookieBite,\n faCopy: faCopy,\n faCopyright: faCopyright,\n faCouch: faCouch,\n faCreditCard: faCreditCard,\n faCrop: faCrop,\n faCropAlt: faCropAlt,\n faCross: faCross,\n faCrosshairs: faCrosshairs,\n faCrow: faCrow,\n faCrown: faCrown,\n faCrutch: faCrutch,\n faCube: faCube,\n faCubes: faCubes,\n faCut: faCut,\n faDatabase: faDatabase,\n faDeaf: faDeaf,\n faDemocrat: faDemocrat,\n faDesktop: faDesktop,\n faDharmachakra: faDharmachakra,\n faDiagnoses: faDiagnoses,\n faDice: faDice,\n faDiceD20: faDiceD20,\n faDiceD6: faDiceD6,\n faDiceFive: faDiceFive,\n faDiceFour: faDiceFour,\n faDiceOne: faDiceOne,\n faDiceSix: faDiceSix,\n faDiceThree: faDiceThree,\n faDiceTwo: faDiceTwo,\n faDigitalTachograph: faDigitalTachograph,\n faDirections: faDirections,\n faDisease: faDisease,\n faDivide: faDivide,\n faDizzy: faDizzy,\n faDna: faDna,\n faDog: faDog,\n faDollarSign: faDollarSign,\n faDolly: faDolly,\n faDollyFlatbed: faDollyFlatbed,\n faDonate: faDonate,\n faDoorClosed: faDoorClosed,\n faDoorOpen: faDoorOpen,\n faDotCircle: faDotCircle,\n faDove: faDove,\n faDownload: faDownload,\n faDraftingCompass: faDraftingCompass,\n faDragon: faDragon,\n faDrawPolygon: faDrawPolygon,\n faDrum: faDrum,\n faDrumSteelpan: faDrumSteelpan,\n faDrumstickBite: faDrumstickBite,\n faDumbbell: faDumbbell,\n faDumpster: faDumpster,\n faDumpsterFire: faDumpsterFire,\n faDungeon: faDungeon,\n faEdit: faEdit,\n faEgg: faEgg,\n faEject: faEject,\n faEllipsisH: faEllipsisH,\n faEllipsisV: faEllipsisV,\n faEnvelope: faEnvelope,\n faEnvelopeOpen: faEnvelopeOpen,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faEnvelopeSquare: faEnvelopeSquare,\n faEquals: faEquals,\n faEraser: faEraser,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faExchangeAlt: faExchangeAlt,\n faExclamation: faExclamation,\n faExclamationCircle: faExclamationCircle,\n faExclamationTriangle: faExclamationTriangle,\n faExpand: faExpand,\n faExpandAlt: faExpandAlt,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faExternalLinkAlt: faExternalLinkAlt,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faEye: faEye,\n faEyeDropper: faEyeDropper,\n faEyeSlash: faEyeSlash,\n faFan: faFan,\n faFastBackward: faFastBackward,\n faFastForward: faFastForward,\n faFaucet: faFaucet,\n faFax: faFax,\n faFeather: faFeather,\n faFeatherAlt: faFeatherAlt,\n faFemale: faFemale,\n faFighterJet: faFighterJet,\n faFile: faFile,\n faFileAlt: faFileAlt,\n faFileArchive: faFileArchive,\n faFileAudio: faFileAudio,\n faFileCode: faFileCode,\n faFileContract: faFileContract,\n faFileCsv: faFileCsv,\n faFileDownload: faFileDownload,\n faFileExcel: faFileExcel,\n faFileExport: faFileExport,\n faFileImage: faFileImage,\n faFileImport: faFileImport,\n faFileInvoice: faFileInvoice,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faFileMedical: faFileMedical,\n faFileMedicalAlt: faFileMedicalAlt,\n faFilePdf: faFilePdf,\n faFilePowerpoint: faFilePowerpoint,\n faFilePrescription: faFilePrescription,\n faFileSignature: faFileSignature,\n faFileUpload: faFileUpload,\n faFileVideo: faFileVideo,\n faFileWord: faFileWord,\n faFill: faFill,\n faFillDrip: faFillDrip,\n faFilm: faFilm,\n faFilter: faFilter,\n faFingerprint: faFingerprint,\n faFire: faFire,\n faFireAlt: faFireAlt,\n faFireExtinguisher: faFireExtinguisher,\n faFirstAid: faFirstAid,\n faFish: faFish,\n faFistRaised: faFistRaised,\n faFlag: faFlag,\n faFlagCheckered: faFlagCheckered,\n faFlagUsa: faFlagUsa,\n faFlask: faFlask,\n faFlushed: faFlushed,\n faFolder: faFolder,\n faFolderMinus: faFolderMinus,\n faFolderOpen: faFolderOpen,\n faFolderPlus: faFolderPlus,\n faFont: faFont,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFootballBall: faFootballBall,\n faForward: faForward,\n faFrog: faFrog,\n faFrown: faFrown,\n faFrownOpen: faFrownOpen,\n faFunnelDollar: faFunnelDollar,\n faFutbol: faFutbol,\n faGamepad: faGamepad,\n faGasPump: faGasPump,\n faGavel: faGavel,\n faGem: faGem,\n faGenderless: faGenderless,\n faGhost: faGhost,\n faGift: faGift,\n faGifts: faGifts,\n faGlassCheers: faGlassCheers,\n faGlassMartini: faGlassMartini,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faGlassWhiskey: faGlassWhiskey,\n faGlasses: faGlasses,\n faGlobe: faGlobe,\n faGlobeAfrica: faGlobeAfrica,\n faGlobeAmericas: faGlobeAmericas,\n faGlobeAsia: faGlobeAsia,\n faGlobeEurope: faGlobeEurope,\n faGolfBall: faGolfBall,\n faGopuram: faGopuram,\n faGraduationCap: faGraduationCap,\n faGreaterThan: faGreaterThan,\n faGreaterThanEqual: faGreaterThanEqual,\n faGrimace: faGrimace,\n faGrin: faGrin,\n faGrinAlt: faGrinAlt,\n faGrinBeam: faGrinBeam,\n faGrinBeamSweat: faGrinBeamSweat,\n faGrinHearts: faGrinHearts,\n faGrinSquint: faGrinSquint,\n faGrinSquintTears: faGrinSquintTears,\n faGrinStars: faGrinStars,\n faGrinTears: faGrinTears,\n faGrinTongue: faGrinTongue,\n faGrinTongueSquint: faGrinTongueSquint,\n faGrinTongueWink: faGrinTongueWink,\n faGrinWink: faGrinWink,\n faGripHorizontal: faGripHorizontal,\n faGripLines: faGripLines,\n faGripLinesVertical: faGripLinesVertical,\n faGripVertical: faGripVertical,\n faGuitar: faGuitar,\n faHSquare: faHSquare,\n faHamburger: faHamburger,\n faHammer: faHammer,\n faHamsa: faHamsa,\n faHandHolding: faHandHolding,\n faHandHoldingHeart: faHandHoldingHeart,\n faHandHoldingMedical: faHandHoldingMedical,\n faHandHoldingUsd: faHandHoldingUsd,\n faHandHoldingWater: faHandHoldingWater,\n faHandLizard: faHandLizard,\n faHandMiddleFinger: faHandMiddleFinger,\n faHandPaper: faHandPaper,\n faHandPeace: faHandPeace,\n faHandPointDown: faHandPointDown,\n faHandPointLeft: faHandPointLeft,\n faHandPointRight: faHandPointRight,\n faHandPointUp: faHandPointUp,\n faHandPointer: faHandPointer,\n faHandRock: faHandRock,\n faHandScissors: faHandScissors,\n faHandSparkles: faHandSparkles,\n faHandSpock: faHandSpock,\n faHands: faHands,\n faHandsHelping: faHandsHelping,\n faHandsWash: faHandsWash,\n faHandshake: faHandshake,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faHandshakeSlash: faHandshakeSlash,\n faHanukiah: faHanukiah,\n faHardHat: faHardHat,\n faHashtag: faHashtag,\n faHatCowboy: faHatCowboy,\n faHatCowboySide: faHatCowboySide,\n faHatWizard: faHatWizard,\n faHdd: faHdd,\n faHeadSideCough: faHeadSideCough,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faHeadSideMask: faHeadSideMask,\n faHeadSideVirus: faHeadSideVirus,\n faHeading: faHeading,\n faHeadphones: faHeadphones,\n faHeadphonesAlt: faHeadphonesAlt,\n faHeadset: faHeadset,\n faHeart: faHeart,\n faHeartBroken: faHeartBroken,\n faHeartbeat: faHeartbeat,\n faHelicopter: faHelicopter,\n faHighlighter: faHighlighter,\n faHiking: faHiking,\n faHippo: faHippo,\n faHistory: faHistory,\n faHockeyPuck: faHockeyPuck,\n faHollyBerry: faHollyBerry,\n faHome: faHome,\n faHorse: faHorse,\n faHorseHead: faHorseHead,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalSymbol: faHospitalSymbol,\n faHospitalUser: faHospitalUser,\n faHotTub: faHotTub,\n faHotdog: faHotdog,\n faHotel: faHotel,\n faHourglass: faHourglass,\n faHourglassEnd: faHourglassEnd,\n faHourglassHalf: faHourglassHalf,\n faHourglassStart: faHourglassStart,\n faHouseDamage: faHouseDamage,\n faHouseUser: faHouseUser,\n faHryvnia: faHryvnia,\n faICursor: faICursor,\n faIceCream: faIceCream,\n faIcicles: faIcicles,\n faIcons: faIcons,\n faIdBadge: faIdBadge,\n faIdCard: faIdCard,\n faIdCardAlt: faIdCardAlt,\n faIgloo: faIgloo,\n faImage: faImage,\n faImages: faImages,\n faInbox: faInbox,\n faIndent: faIndent,\n faIndustry: faIndustry,\n faInfinity: faInfinity,\n faInfo: faInfo,\n faInfoCircle: faInfoCircle,\n faItalic: faItalic,\n faJedi: faJedi,\n faJoint: faJoint,\n faJournalWhills: faJournalWhills,\n faKaaba: faKaaba,\n faKey: faKey,\n faKeyboard: faKeyboard,\n faKhanda: faKhanda,\n faKiss: faKiss,\n faKissBeam: faKissBeam,\n faKissWinkHeart: faKissWinkHeart,\n faKiwiBird: faKiwiBird,\n faLandmark: faLandmark,\n faLanguage: faLanguage,\n faLaptop: faLaptop,\n faLaptopCode: faLaptopCode,\n faLaptopHouse: faLaptopHouse,\n faLaptopMedical: faLaptopMedical,\n faLaugh: faLaugh,\n faLaughBeam: faLaughBeam,\n faLaughSquint: faLaughSquint,\n faLaughWink: faLaughWink,\n faLayerGroup: faLayerGroup,\n faLeaf: faLeaf,\n faLemon: faLemon,\n faLessThan: faLessThan,\n faLessThanEqual: faLessThanEqual,\n faLevelDownAlt: faLevelDownAlt,\n faLevelUpAlt: faLevelUpAlt,\n faLifeRing: faLifeRing,\n faLightbulb: faLightbulb,\n faLink: faLink,\n faLiraSign: faLiraSign,\n faList: faList,\n faListAlt: faListAlt,\n faListOl: faListOl,\n faListUl: faListUl,\n faLocationArrow: faLocationArrow,\n faLock: faLock,\n faLockOpen: faLockOpen,\n faLongArrowAltDown: faLongArrowAltDown,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faLongArrowAltRight: faLongArrowAltRight,\n faLongArrowAltUp: faLongArrowAltUp,\n faLowVision: faLowVision,\n faLuggageCart: faLuggageCart,\n faLungs: faLungs,\n faLungsVirus: faLungsVirus,\n faMagic: faMagic,\n faMagnet: faMagnet,\n faMailBulk: faMailBulk,\n faMale: faMale,\n faMap: faMap,\n faMapMarked: faMapMarked,\n faMapMarkedAlt: faMapMarkedAlt,\n faMapMarker: faMapMarker,\n faMapMarkerAlt: faMapMarkerAlt,\n faMapPin: faMapPin,\n faMapSigns: faMapSigns,\n faMarker: faMarker,\n faMars: faMars,\n faMarsDouble: faMarsDouble,\n faMarsStroke: faMarsStroke,\n faMarsStrokeH: faMarsStrokeH,\n faMarsStrokeV: faMarsStrokeV,\n faMask: faMask,\n faMedal: faMedal,\n faMedkit: faMedkit,\n faMeh: faMeh,\n faMehBlank: faMehBlank,\n faMehRollingEyes: faMehRollingEyes,\n faMemory: faMemory,\n faMenorah: faMenorah,\n faMercury: faMercury,\n faMeteor: faMeteor,\n faMicrochip: faMicrochip,\n faMicrophone: faMicrophone,\n faMicrophoneAlt: faMicrophoneAlt,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faMicrophoneSlash: faMicrophoneSlash,\n faMicroscope: faMicroscope,\n faMinus: faMinus,\n faMinusCircle: faMinusCircle,\n faMinusSquare: faMinusSquare,\n faMitten: faMitten,\n faMobile: faMobile,\n faMobileAlt: faMobileAlt,\n faMoneyBill: faMoneyBill,\n faMoneyBillAlt: faMoneyBillAlt,\n faMoneyBillWave: faMoneyBillWave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faMoneyCheck: faMoneyCheck,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faMonument: faMonument,\n faMoon: faMoon,\n faMortarPestle: faMortarPestle,\n faMosque: faMosque,\n faMotorcycle: faMotorcycle,\n faMountain: faMountain,\n faMouse: faMouse,\n faMousePointer: faMousePointer,\n faMugHot: faMugHot,\n faMusic: faMusic,\n faNetworkWired: faNetworkWired,\n faNeuter: faNeuter,\n faNewspaper: faNewspaper,\n faNotEqual: faNotEqual,\n faNotesMedical: faNotesMedical,\n faObjectGroup: faObjectGroup,\n faObjectUngroup: faObjectUngroup,\n faOilCan: faOilCan,\n faOm: faOm,\n faOtter: faOtter,\n faOutdent: faOutdent,\n faPager: faPager,\n faPaintBrush: faPaintBrush,\n faPaintRoller: faPaintRoller,\n faPalette: faPalette,\n faPallet: faPallet,\n faPaperPlane: faPaperPlane,\n faPaperclip: faPaperclip,\n faParachuteBox: faParachuteBox,\n faParagraph: faParagraph,\n faParking: faParking,\n faPassport: faPassport,\n faPastafarianism: faPastafarianism,\n faPaste: faPaste,\n faPause: faPause,\n faPauseCircle: faPauseCircle,\n faPaw: faPaw,\n faPeace: faPeace,\n faPen: faPen,\n faPenAlt: faPenAlt,\n faPenFancy: faPenFancy,\n faPenNib: faPenNib,\n faPenSquare: faPenSquare,\n faPencilAlt: faPencilAlt,\n faPencilRuler: faPencilRuler,\n faPeopleArrows: faPeopleArrows,\n faPeopleCarry: faPeopleCarry,\n faPepperHot: faPepperHot,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faPersonBooth: faPersonBooth,\n faPhone: faPhone,\n faPhoneAlt: faPhoneAlt,\n faPhoneSlash: faPhoneSlash,\n faPhoneSquare: faPhoneSquare,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faPhoneVolume: faPhoneVolume,\n faPhotoVideo: faPhotoVideo,\n faPiggyBank: faPiggyBank,\n faPills: faPills,\n faPizzaSlice: faPizzaSlice,\n faPlaceOfWorship: faPlaceOfWorship,\n faPlane: faPlane,\n faPlaneArrival: faPlaneArrival,\n faPlaneDeparture: faPlaneDeparture,\n faPlaneSlash: faPlaneSlash,\n faPlay: faPlay,\n faPlayCircle: faPlayCircle,\n faPlug: faPlug,\n faPlus: faPlus,\n faPlusCircle: faPlusCircle,\n faPlusSquare: faPlusSquare,\n faPodcast: faPodcast,\n faPoll: faPoll,\n faPollH: faPollH,\n faPoo: faPoo,\n faPooStorm: faPooStorm,\n faPoop: faPoop,\n faPortrait: faPortrait,\n faPoundSign: faPoundSign,\n faPowerOff: faPowerOff,\n faPray: faPray,\n faPrayingHands: faPrayingHands,\n faPrescription: faPrescription,\n faPrescriptionBottle: faPrescriptionBottle,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faPrint: faPrint,\n faProcedures: faProcedures,\n faProjectDiagram: faProjectDiagram,\n faPumpMedical: faPumpMedical,\n faPumpSoap: faPumpSoap,\n faPuzzlePiece: faPuzzlePiece,\n faQrcode: faQrcode,\n faQuestion: faQuestion,\n faQuestionCircle: faQuestionCircle,\n faQuidditch: faQuidditch,\n faQuoteLeft: faQuoteLeft,\n faQuoteRight: faQuoteRight,\n faQuran: faQuran,\n faRadiation: faRadiation,\n faRadiationAlt: faRadiationAlt,\n faRainbow: faRainbow,\n faRandom: faRandom,\n faReceipt: faReceipt,\n faRecordVinyl: faRecordVinyl,\n faRecycle: faRecycle,\n faRedo: faRedo,\n faRedoAlt: faRedoAlt,\n faRegistered: faRegistered,\n faRemoveFormat: faRemoveFormat,\n faReply: faReply,\n faReplyAll: faReplyAll,\n faRepublican: faRepublican,\n faRestroom: faRestroom,\n faRetweet: faRetweet,\n faRibbon: faRibbon,\n faRing: faRing,\n faRoad: faRoad,\n faRobot: faRobot,\n faRocket: faRocket,\n faRoute: faRoute,\n faRss: faRss,\n faRssSquare: faRssSquare,\n faRubleSign: faRubleSign,\n faRuler: faRuler,\n faRulerCombined: faRulerCombined,\n faRulerHorizontal: faRulerHorizontal,\n faRulerVertical: faRulerVertical,\n faRunning: faRunning,\n faRupeeSign: faRupeeSign,\n faSadCry: faSadCry,\n faSadTear: faSadTear,\n faSatellite: faSatellite,\n faSatelliteDish: faSatelliteDish,\n faSave: faSave,\n faSchool: faSchool,\n faScrewdriver: faScrewdriver,\n faScroll: faScroll,\n faSdCard: faSdCard,\n faSearch: faSearch,\n faSearchDollar: faSearchDollar,\n faSearchLocation: faSearchLocation,\n faSearchMinus: faSearchMinus,\n faSearchPlus: faSearchPlus,\n faSeedling: faSeedling,\n faServer: faServer,\n faShapes: faShapes,\n faShare: faShare,\n faShareAlt: faShareAlt,\n faShareAltSquare: faShareAltSquare,\n faShareSquare: faShareSquare,\n faShekelSign: faShekelSign,\n faShieldAlt: faShieldAlt,\n faShieldVirus: faShieldVirus,\n faShip: faShip,\n faShippingFast: faShippingFast,\n faShoePrints: faShoePrints,\n faShoppingBag: faShoppingBag,\n faShoppingBasket: faShoppingBasket,\n faShoppingCart: faShoppingCart,\n faShower: faShower,\n faShuttleVan: faShuttleVan,\n faSign: faSign,\n faSignInAlt: faSignInAlt,\n faSignLanguage: faSignLanguage,\n faSignOutAlt: faSignOutAlt,\n faSignal: faSignal,\n faSignature: faSignature,\n faSimCard: faSimCard,\n faSink: faSink,\n faSitemap: faSitemap,\n faSkating: faSkating,\n faSkiing: faSkiing,\n faSkiingNordic: faSkiingNordic,\n faSkull: faSkull,\n faSkullCrossbones: faSkullCrossbones,\n faSlash: faSlash,\n faSleigh: faSleigh,\n faSlidersH: faSlidersH,\n faSmile: faSmile,\n faSmileBeam: faSmileBeam,\n faSmileWink: faSmileWink,\n faSmog: faSmog,\n faSmoking: faSmoking,\n faSmokingBan: faSmokingBan,\n faSms: faSms,\n faSnowboarding: faSnowboarding,\n faSnowflake: faSnowflake,\n faSnowman: faSnowman,\n faSnowplow: faSnowplow,\n faSoap: faSoap,\n faSocks: faSocks,\n faSolarPanel: faSolarPanel,\n faSort: faSort,\n faSortAlphaDown: faSortAlphaDown,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faSortAlphaUp: faSortAlphaUp,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faSortAmountDown: faSortAmountDown,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faSortAmountUp: faSortAmountUp,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faSortDown: faSortDown,\n faSortNumericDown: faSortNumericDown,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faSortNumericUp: faSortNumericUp,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faSortUp: faSortUp,\n faSpa: faSpa,\n faSpaceShuttle: faSpaceShuttle,\n faSpellCheck: faSpellCheck,\n faSpider: faSpider,\n faSpinner: faSpinner,\n faSplotch: faSplotch,\n faSprayCan: faSprayCan,\n faSquare: faSquare,\n faSquareFull: faSquareFull,\n faSquareRootAlt: faSquareRootAlt,\n faStamp: faStamp,\n faStar: faStar,\n faStarAndCrescent: faStarAndCrescent,\n faStarHalf: faStarHalf,\n faStarHalfAlt: faStarHalfAlt,\n faStarOfDavid: faStarOfDavid,\n faStarOfLife: faStarOfLife,\n faStepBackward: faStepBackward,\n faStepForward: faStepForward,\n faStethoscope: faStethoscope,\n faStickyNote: faStickyNote,\n faStop: faStop,\n faStopCircle: faStopCircle,\n faStopwatch: faStopwatch,\n faStopwatch20: faStopwatch20,\n faStore: faStore,\n faStoreAlt: faStoreAlt,\n faStoreAltSlash: faStoreAltSlash,\n faStoreSlash: faStoreSlash,\n faStream: faStream,\n faStreetView: faStreetView,\n faStrikethrough: faStrikethrough,\n faStroopwafel: faStroopwafel,\n faSubscript: faSubscript,\n faSubway: faSubway,\n faSuitcase: faSuitcase,\n faSuitcaseRolling: faSuitcaseRolling,\n faSun: faSun,\n faSuperscript: faSuperscript,\n faSurprise: faSurprise,\n faSwatchbook: faSwatchbook,\n faSwimmer: faSwimmer,\n faSwimmingPool: faSwimmingPool,\n faSynagogue: faSynagogue,\n faSync: faSync,\n faSyncAlt: faSyncAlt,\n faSyringe: faSyringe,\n faTable: faTable,\n faTableTennis: faTableTennis,\n faTablet: faTablet,\n faTabletAlt: faTabletAlt,\n faTablets: faTablets,\n faTachometerAlt: faTachometerAlt,\n faTag: faTag,\n faTags: faTags,\n faTape: faTape,\n faTasks: faTasks,\n faTaxi: faTaxi,\n faTeeth: faTeeth,\n faTeethOpen: faTeethOpen,\n faTemperatureHigh: faTemperatureHigh,\n faTemperatureLow: faTemperatureLow,\n faTenge: faTenge,\n faTerminal: faTerminal,\n faTextHeight: faTextHeight,\n faTextWidth: faTextWidth,\n faTh: faTh,\n faThLarge: faThLarge,\n faThList: faThList,\n faTheaterMasks: faTheaterMasks,\n faThermometer: faThermometer,\n faThermometerEmpty: faThermometerEmpty,\n faThermometerFull: faThermometerFull,\n faThermometerHalf: faThermometerHalf,\n faThermometerQuarter: faThermometerQuarter,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faThumbsDown: faThumbsDown,\n faThumbsUp: faThumbsUp,\n faThumbtack: faThumbtack,\n faTicketAlt: faTicketAlt,\n faTimes: faTimes,\n faTimesCircle: faTimesCircle,\n faTint: faTint,\n faTintSlash: faTintSlash,\n faTired: faTired,\n faToggleOff: faToggleOff,\n faToggleOn: faToggleOn,\n faToilet: faToilet,\n faToiletPaper: faToiletPaper,\n faToiletPaperSlash: faToiletPaperSlash,\n faToolbox: faToolbox,\n faTools: faTools,\n faTooth: faTooth,\n faTorah: faTorah,\n faToriiGate: faToriiGate,\n faTractor: faTractor,\n faTrademark: faTrademark,\n faTrafficLight: faTrafficLight,\n faTrailer: faTrailer,\n faTrain: faTrain,\n faTram: faTram,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faTrash: faTrash,\n faTrashAlt: faTrashAlt,\n faTrashRestore: faTrashRestore,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faTree: faTree,\n faTrophy: faTrophy,\n faTruck: faTruck,\n faTruckLoading: faTruckLoading,\n faTruckMonster: faTruckMonster,\n faTruckMoving: faTruckMoving,\n faTruckPickup: faTruckPickup,\n faTshirt: faTshirt,\n faTty: faTty,\n faTv: faTv,\n faUmbrella: faUmbrella,\n faUmbrellaBeach: faUmbrellaBeach,\n faUnderline: faUnderline,\n faUndo: faUndo,\n faUndoAlt: faUndoAlt,\n faUniversalAccess: faUniversalAccess,\n faUniversity: faUniversity,\n faUnlink: faUnlink,\n faUnlock: faUnlock,\n faUnlockAlt: faUnlockAlt,\n faUpload: faUpload,\n faUser: faUser,\n faUserAlt: faUserAlt,\n faUserAltSlash: faUserAltSlash,\n faUserAstronaut: faUserAstronaut,\n faUserCheck: faUserCheck,\n faUserCircle: faUserCircle,\n faUserClock: faUserClock,\n faUserCog: faUserCog,\n faUserEdit: faUserEdit,\n faUserFriends: faUserFriends,\n faUserGraduate: faUserGraduate,\n faUserInjured: faUserInjured,\n faUserLock: faUserLock,\n faUserMd: faUserMd,\n faUserMinus: faUserMinus,\n faUserNinja: faUserNinja,\n faUserNurse: faUserNurse,\n faUserPlus: faUserPlus,\n faUserSecret: faUserSecret,\n faUserShield: faUserShield,\n faUserSlash: faUserSlash,\n faUserTag: faUserTag,\n faUserTie: faUserTie,\n faUserTimes: faUserTimes,\n faUsers: faUsers,\n faUsersCog: faUsersCog,\n faUsersSlash: faUsersSlash,\n faUtensilSpoon: faUtensilSpoon,\n faUtensils: faUtensils,\n faVectorSquare: faVectorSquare,\n faVenus: faVenus,\n faVenusDouble: faVenusDouble,\n faVenusMars: faVenusMars,\n faVest: faVest,\n faVestPatches: faVestPatches,\n faVial: faVial,\n faVials: faVials,\n faVideo: faVideo,\n faVideoSlash: faVideoSlash,\n faVihara: faVihara,\n faVirus: faVirus,\n faVirusSlash: faVirusSlash,\n faViruses: faViruses,\n faVoicemail: faVoicemail,\n faVolleyballBall: faVolleyballBall,\n faVolumeDown: faVolumeDown,\n faVolumeMute: faVolumeMute,\n faVolumeOff: faVolumeOff,\n faVolumeUp: faVolumeUp,\n faVoteYea: faVoteYea,\n faVrCardboard: faVrCardboard,\n faWalking: faWalking,\n faWallet: faWallet,\n faWarehouse: faWarehouse,\n faWater: faWater,\n faWaveSquare: faWaveSquare,\n faWeight: faWeight,\n faWeightHanging: faWeightHanging,\n faWheelchair: faWheelchair,\n faWifi: faWifi,\n faWind: faWind,\n faWindowClose: faWindowClose,\n faWindowMaximize: faWindowMaximize,\n faWindowMinimize: faWindowMinimize,\n faWindowRestore: faWindowRestore,\n faWineBottle: faWineBottle,\n faWineGlass: faWineGlass,\n faWineGlassAlt: faWineGlassAlt,\n faWonSign: faWonSign,\n faWrench: faWrench,\n faXRay: faXRay,\n faYenSign: faYenSign,\n faYinYang: faYinYang\n};\n\nexport { _iconsCache as fas, prefix, faAd, faAddressBook, faAddressCard, faAdjust, faAirFreshener, faAlignCenter, faAlignJustify, faAlignLeft, faAlignRight, faAllergies, faAmbulance, faAmericanSignLanguageInterpreting, faAnchor, faAngleDoubleDown, faAngleDoubleLeft, faAngleDoubleRight, faAngleDoubleUp, faAngleDown, faAngleLeft, faAngleRight, faAngleUp, faAngry, faAnkh, faAppleAlt, faArchive, faArchway, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faArrowCircleDown, faArrowCircleLeft, faArrowCircleRight, faArrowCircleUp, faArrowDown, faArrowLeft, faArrowRight, faArrowUp, faArrowsAlt, faArrowsAltH, faArrowsAltV, faAssistiveListeningSystems, faAsterisk, faAt, faAtlas, faAtom, faAudioDescription, faAward, faBaby, faBabyCarriage, faBackspace, faBackward, faBacon, faBacteria, faBacterium, faBahai, faBalanceScale, faBalanceScaleLeft, faBalanceScaleRight, faBan, faBandAid, faBarcode, faBars, faBaseballBall, faBasketballBall, faBath, faBatteryEmpty, faBatteryFull, faBatteryHalf, faBatteryQuarter, faBatteryThreeQuarters, faBed, faBeer, faBell, faBellSlash, faBezierCurve, faBible, faBicycle, faBiking, faBinoculars, faBiohazard, faBirthdayCake, faBlender, faBlenderPhone, faBlind, faBlog, faBold, faBolt, faBomb, faBone, faBong, faBook, faBookDead, faBookMedical, faBookOpen, faBookReader, faBookmark, faBorderAll, faBorderNone, faBorderStyle, faBowlingBall, faBox, faBoxOpen, faBoxTissue, faBoxes, faBraille, faBrain, faBreadSlice, faBriefcase, faBriefcaseMedical, faBroadcastTower, faBroom, faBrush, faBug, faBuilding, faBullhorn, faBullseye, faBurn, faBus, faBusAlt, faBusinessTime, faCalculator, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarDay, faCalendarMinus, faCalendarPlus, faCalendarTimes, faCalendarWeek, faCamera, faCameraRetro, faCampground, faCandyCane, faCannabis, faCapsules, faCar, faCarAlt, faCarBattery, faCarCrash, faCarSide, faCaravan, faCaretDown, faCaretLeft, faCaretRight, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faCaretUp, faCarrot, faCartArrowDown, faCartPlus, faCashRegister, faCat, faCertificate, faChair, faChalkboard, faChalkboardTeacher, faChargingStation, faChartArea, faChartBar, faChartLine, faChartPie, faCheck, faCheckCircle, faCheckDouble, faCheckSquare, faCheese, faChess, faChessBishop, faChessBoard, faChessKing, faChessKnight, faChessPawn, faChessQueen, faChessRook, faChevronCircleDown, faChevronCircleLeft, faChevronCircleRight, faChevronCircleUp, faChevronDown, faChevronLeft, faChevronRight, faChevronUp, faChild, faChurch, faCircle, faCircleNotch, faCity, faClinicMedical, faClipboard, faClipboardCheck, faClipboardList, faClock, faClone, faClosedCaptioning, faCloud, faCloudDownloadAlt, faCloudMeatball, faCloudMoon, faCloudMoonRain, faCloudRain, faCloudShowersHeavy, faCloudSun, faCloudSunRain, faCloudUploadAlt, faCocktail, faCode, faCodeBranch, faCoffee, faCog, faCogs, faCoins, faColumns, faComment, faCommentAlt, faCommentDollar, faCommentDots, faCommentMedical, faCommentSlash, faComments, faCommentsDollar, faCompactDisc, faCompass, faCompress, faCompressAlt, faCompressArrowsAlt, faConciergeBell, faCookie, faCookieBite, faCopy, faCopyright, faCouch, faCreditCard, faCrop, faCropAlt, faCross, faCrosshairs, faCrow, faCrown, faCrutch, faCube, faCubes, faCut, faDatabase, faDeaf, faDemocrat, faDesktop, faDharmachakra, faDiagnoses, faDice, faDiceD20, faDiceD6, faDiceFive, faDiceFour, faDiceOne, faDiceSix, faDiceThree, faDiceTwo, faDigitalTachograph, faDirections, faDisease, faDivide, faDizzy, faDna, faDog, faDollarSign, faDolly, faDollyFlatbed, faDonate, faDoorClosed, faDoorOpen, faDotCircle, faDove, faDownload, faDraftingCompass, faDragon, faDrawPolygon, faDrum, faDrumSteelpan, faDrumstickBite, faDumbbell, faDumpster, faDumpsterFire, faDungeon, faEdit, faEgg, faEject, faEllipsisH, faEllipsisV, faEnvelope, faEnvelopeOpen, faEnvelopeOpenText, faEnvelopeSquare, faEquals, faEraser, faEthernet, faEuroSign, faExchangeAlt, faExclamation, faExclamationCircle, faExclamationTriangle, faExpand, faExpandAlt, faExpandArrowsAlt, faExternalLinkAlt, faExternalLinkSquareAlt, faEye, faEyeDropper, faEyeSlash, faFan, faFastBackward, faFastForward, faFaucet, faFax, faFeather, faFeatherAlt, faFemale, faFighterJet, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCode, faFileContract, faFileCsv, faFileDownload, faFileExcel, faFileExport, faFileImage, faFileImport, faFileInvoice, faFileInvoiceDollar, faFileMedical, faFileMedicalAlt, faFilePdf, faFilePowerpoint, faFilePrescription, faFileSignature, faFileUpload, faFileVideo, faFileWord, faFill, faFillDrip, faFilm, faFilter, faFingerprint, faFire, faFireAlt, faFireExtinguisher, faFirstAid, faFish, faFistRaised, faFlag, faFlagCheckered, faFlagUsa, faFlask, faFlushed, faFolder, faFolderMinus, faFolderOpen, faFolderPlus, faFont, faFontAwesomeLogoFull, faFootballBall, faForward, faFrog, faFrown, faFrownOpen, faFunnelDollar, faFutbol, faGamepad, faGasPump, faGavel, faGem, faGenderless, faGhost, faGift, faGifts, faGlassCheers, faGlassMartini, faGlassMartiniAlt, faGlassWhiskey, faGlasses, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGolfBall, faGopuram, faGraduationCap, faGreaterThan, faGreaterThanEqual, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faGripHorizontal, faGripLines, faGripLinesVertical, faGripVertical, faGuitar, faHSquare, faHamburger, faHammer, faHamsa, faHandHolding, faHandHoldingHeart, faHandHoldingMedical, faHandHoldingUsd, faHandHoldingWater, faHandLizard, faHandMiddleFinger, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandRock, faHandScissors, faHandSparkles, faHandSpock, faHands, faHandsHelping, faHandsWash, faHandshake, faHandshakeAltSlash, faHandshakeSlash, faHanukiah, faHardHat, faHashtag, faHatCowboy, faHatCowboySide, faHatWizard, faHdd, faHeadSideCough, faHeadSideCoughSlash, faHeadSideMask, faHeadSideVirus, faHeading, faHeadphones, faHeadphonesAlt, faHeadset, faHeart, faHeartBroken, faHeartbeat, faHelicopter, faHighlighter, faHiking, faHippo, faHistory, faHockeyPuck, faHollyBerry, faHome, faHorse, faHorseHead, faHospital, faHospitalAlt, faHospitalSymbol, faHospitalUser, faHotTub, faHotdog, faHotel, faHourglass, faHourglassEnd, faHourglassHalf, faHourglassStart, faHouseDamage, faHouseUser, faHryvnia, faICursor, faIceCream, faIcicles, faIcons, faIdBadge, faIdCard, faIdCardAlt, faIgloo, faImage, faImages, faInbox, faIndent, faIndustry, faInfinity, faInfo, faInfoCircle, faItalic, faJedi, faJoint, faJournalWhills, faKaaba, faKey, faKeyboard, faKhanda, faKiss, faKissBeam, faKissWinkHeart, faKiwiBird, faLandmark, faLanguage, faLaptop, faLaptopCode, faLaptopHouse, faLaptopMedical, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLayerGroup, faLeaf, faLemon, faLessThan, faLessThanEqual, faLevelDownAlt, faLevelUpAlt, faLifeRing, faLightbulb, faLink, faLiraSign, faList, faListAlt, faListOl, faListUl, faLocationArrow, faLock, faLockOpen, faLongArrowAltDown, faLongArrowAltLeft, faLongArrowAltRight, faLongArrowAltUp, faLowVision, faLuggageCart, faLungs, faLungsVirus, faMagic, faMagnet, faMailBulk, faMale, faMap, faMapMarked, faMapMarkedAlt, faMapMarker, faMapMarkerAlt, faMapPin, faMapSigns, faMarker, faMars, faMarsDouble, faMarsStroke, faMarsStrokeH, faMarsStrokeV, faMask, faMedal, faMedkit, faMeh, faMehBlank, faMehRollingEyes, faMemory, faMenorah, faMercury, faMeteor, faMicrochip, faMicrophone, faMicrophoneAlt, faMicrophoneAltSlash, faMicrophoneSlash, faMicroscope, faMinus, faMinusCircle, faMinusSquare, faMitten, faMobile, faMobileAlt, faMoneyBill, faMoneyBillAlt, faMoneyBillWave, faMoneyBillWaveAlt, faMoneyCheck, faMoneyCheckAlt, faMonument, faMoon, faMortarPestle, faMosque, faMotorcycle, faMountain, faMouse, faMousePointer, faMugHot, faMusic, faNetworkWired, faNeuter, faNewspaper, faNotEqual, faNotesMedical, faObjectGroup, faObjectUngroup, faOilCan, faOm, faOtter, faOutdent, faPager, faPaintBrush, faPaintRoller, faPalette, faPallet, faPaperPlane, faPaperclip, faParachuteBox, faParagraph, faParking, faPassport, faPastafarianism, faPaste, faPause, faPauseCircle, faPaw, faPeace, faPen, faPenAlt, faPenFancy, faPenNib, faPenSquare, faPencilAlt, faPencilRuler, faPeopleArrows, faPeopleCarry, faPepperHot, faPercent, faPercentage, faPersonBooth, faPhone, faPhoneAlt, faPhoneSlash, faPhoneSquare, faPhoneSquareAlt, faPhoneVolume, faPhotoVideo, faPiggyBank, faPills, faPizzaSlice, faPlaceOfWorship, faPlane, faPlaneArrival, faPlaneDeparture, faPlaneSlash, faPlay, faPlayCircle, faPlug, faPlus, faPlusCircle, faPlusSquare, faPodcast, faPoll, faPollH, faPoo, faPooStorm, faPoop, faPortrait, faPoundSign, faPowerOff, faPray, faPrayingHands, faPrescription, faPrescriptionBottle, faPrescriptionBottleAlt, faPrint, faProcedures, faProjectDiagram, faPumpMedical, faPumpSoap, faPuzzlePiece, faQrcode, faQuestion, faQuestionCircle, faQuidditch, faQuoteLeft, faQuoteRight, faQuran, faRadiation, faRadiationAlt, faRainbow, faRandom, faReceipt, faRecordVinyl, faRecycle, faRedo, faRedoAlt, faRegistered, faRemoveFormat, faReply, faReplyAll, faRepublican, faRestroom, faRetweet, faRibbon, faRing, faRoad, faRobot, faRocket, faRoute, faRss, faRssSquare, faRubleSign, faRuler, faRulerCombined, faRulerHorizontal, faRulerVertical, faRunning, faRupeeSign, faSadCry, faSadTear, faSatellite, faSatelliteDish, faSave, faSchool, faScrewdriver, faScroll, faSdCard, faSearch, faSearchDollar, faSearchLocation, faSearchMinus, faSearchPlus, faSeedling, faServer, faShapes, faShare, faShareAlt, faShareAltSquare, faShareSquare, faShekelSign, faShieldAlt, faShieldVirus, faShip, faShippingFast, faShoePrints, faShoppingBag, faShoppingBasket, faShoppingCart, faShower, faShuttleVan, faSign, faSignInAlt, faSignLanguage, faSignOutAlt, faSignal, faSignature, faSimCard, faSink, faSitemap, faSkating, faSkiing, faSkiingNordic, faSkull, faSkullCrossbones, faSlash, faSleigh, faSlidersH, faSmile, faSmileBeam, faSmileWink, faSmog, faSmoking, faSmokingBan, faSms, faSnowboarding, faSnowflake, faSnowman, faSnowplow, faSoap, faSocks, faSolarPanel, faSort, faSortAlphaDown, faSortAlphaDownAlt, faSortAlphaUp, faSortAlphaUpAlt, faSortAmountDown, faSortAmountDownAlt, faSortAmountUp, faSortAmountUpAlt, faSortDown, faSortNumericDown, faSortNumericDownAlt, faSortNumericUp, faSortNumericUpAlt, faSortUp, faSpa, faSpaceShuttle, faSpellCheck, faSpider, faSpinner, faSplotch, faSprayCan, faSquare, faSquareFull, faSquareRootAlt, faStamp, faStar, faStarAndCrescent, faStarHalf, faStarHalfAlt, faStarOfDavid, faStarOfLife, faStepBackward, faStepForward, faStethoscope, faStickyNote, faStop, faStopCircle, faStopwatch, faStopwatch20, faStore, faStoreAlt, faStoreAltSlash, faStoreSlash, faStream, faStreetView, faStrikethrough, faStroopwafel, faSubscript, faSubway, faSuitcase, faSuitcaseRolling, faSun, faSuperscript, faSurprise, faSwatchbook, faSwimmer, faSwimmingPool, faSynagogue, faSync, faSyncAlt, faSyringe, faTable, faTableTennis, faTablet, faTabletAlt, faTablets, faTachometerAlt, faTag, faTags, faTape, faTasks, faTaxi, faTeeth, faTeethOpen, faTemperatureHigh, faTemperatureLow, faTenge, faTerminal, faTextHeight, faTextWidth, faTh, faThLarge, faThList, faTheaterMasks, faThermometer, faThermometerEmpty, faThermometerFull, faThermometerHalf, faThermometerQuarter, faThermometerThreeQuarters, faThumbsDown, faThumbsUp, faThumbtack, faTicketAlt, faTimes, faTimesCircle, faTint, faTintSlash, faTired, faToggleOff, faToggleOn, faToilet, faToiletPaper, faToiletPaperSlash, faToolbox, faTools, faTooth, faTorah, faToriiGate, faTractor, faTrademark, faTrafficLight, faTrailer, faTrain, faTram, faTransgender, faTransgenderAlt, faTrash, faTrashAlt, faTrashRestore, faTrashRestoreAlt, faTree, faTrophy, faTruck, faTruckLoading, faTruckMonster, faTruckMoving, faTruckPickup, faTshirt, faTty, faTv, faUmbrella, faUmbrellaBeach, faUnderline, faUndo, faUndoAlt, faUniversalAccess, faUniversity, faUnlink, faUnlock, faUnlockAlt, faUpload, faUser, faUserAlt, faUserAltSlash, faUserAstronaut, faUserCheck, faUserCircle, faUserClock, faUserCog, faUserEdit, faUserFriends, faUserGraduate, faUserInjured, faUserLock, faUserMd, faUserMinus, faUserNinja, faUserNurse, faUserPlus, faUserSecret, faUserShield, faUserSlash, faUserTag, faUserTie, faUserTimes, faUsers, faUsersCog, faUsersSlash, faUtensilSpoon, faUtensils, faVectorSquare, faVenus, faVenusDouble, faVenusMars, faVest, faVestPatches, faVial, faVials, faVideo, faVideoSlash, faVihara, faVirus, faVirusSlash, faViruses, faVoicemail, faVolleyballBall, faVolumeDown, faVolumeMute, faVolumeOff, faVolumeUp, faVoteYea, faVrCardboard, faWalking, faWallet, faWarehouse, faWater, faWaveSquare, faWeight, faWeightHanging, faWheelchair, faWifi, faWind, faWindowClose, faWindowMaximize, faWindowMinimize, faWindowRestore, faWineBottle, faWineGlass, faWineGlassAlt, faWonSign, faWrench, faXRay, faYenSign, faYinYang };\n","var prefix = \"fas\";\nvar fa0 = {\n prefix: 'fas',\n iconName: '0',\n icon: [320, 512, [], \"30\", \"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160V320c0 88.4-71.6 160-160 160S0 408.4 0 320V192zM160 96c-53 0-96 43-96 96V320c0 53 43 96 96 96s96-43 96-96V192c0-53-43-96-96-96z\"]\n};\nvar fa1 = {\n prefix: 'fas',\n iconName: '1',\n icon: [256, 512, [], \"31\", \"M160 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.8 1.6l-96 64C-.5 111.2-4.4 131 5.4 145.8s29.7 18.7 44.4 8.9L96 123.8V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V64z\"]\n};\nvar fa2 = {\n prefix: 'fas',\n iconName: '2',\n icon: [320, 512, [], \"32\", \"M142.9 96c-21.5 0-42.2 8.5-57.4 23.8L54.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L40.2 74.5C67.5 47.3 104.4 32 142.9 32C223 32 288 97 288 177.1c0 38.5-15.3 75.4-42.5 102.6L109.3 416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L200.2 234.5c15.2-15.2 23.8-35.9 23.8-57.4c0-44.8-36.3-81.1-81.1-81.1z\"]\n};\nvar fa3 = {\n prefix: 'fas',\n iconName: '3',\n icon: [320, 512, [], \"33\", \"M0 64C0 46.3 14.3 32 32 32H272c13.2 0 25 8.1 29.8 20.4s1.5 26.3-8.2 35.2L162.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H105.4C63 480 24.2 456 5.3 418.1l-1.9-3.8c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l1.9 3.8c8.1 16.3 24.8 26.5 42.9 26.5H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H80c-13.2 0-25-8.1-29.8-20.4s-1.5-26.3 8.2-35.2L189.7 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar fa4 = {\n prefix: 'fas',\n iconName: '4',\n icon: [384, 512, [], \"34\", \"M189 77.6c7.5-16 .7-35.1-15.3-42.6s-35.1-.7-42.6 15.3L3 322.4c-4.7 9.9-3.9 21.5 1.9 30.8S21 368 32 368H256v80c0 17.7 14.3 32 32 32s32-14.3 32-32V368h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320V160c0-17.7-14.3-32-32-32s-32 14.3-32 32V304H82.4L189 77.6z\"]\n};\nvar fa5 = {\n prefix: 'fas',\n iconName: '5',\n icon: [320, 512, [], \"35\", \"M32.5 58.3C35.3 43.1 48.5 32 64 32H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H90.7L70.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H100.5c-39.4 0-75.4-22.3-93-57.5l-4.1-8.2c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l4.1 8.2c6.8 13.6 20.6 22.1 35.8 22.1H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H32c-9.5 0-18.5-4.2-24.6-11.5s-8.6-16.9-6.9-26.2l32-176z\"]\n};\nvar fa6 = {\n prefix: 'fas',\n iconName: '6',\n icon: [320, 512, [], \"36\", \"M232.4 84.7c11.4-13.5 9.7-33.7-3.8-45.1s-33.7-9.7-45.1 3.8L38.6 214.7C14.7 242.9 1.1 278.4 .1 315.2c0 1.4-.1 2.9-.1 4.3c0 .2 0 .3 0 .5c0 88.4 71.6 160 160 160s160-71.6 160-160c0-85.5-67.1-155.4-151.5-159.8l63.9-75.6zM256 320A96 96 0 1 1 64 320a96 96 0 1 1 192 0z\"]\n};\nvar fa7 = {\n prefix: 'fas',\n iconName: '7',\n icon: [320, 512, [], \"37\", \"M0 64C0 46.3 14.3 32 32 32H288c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar fa8 = {\n prefix: 'fas',\n iconName: '8',\n icon: [320, 512, [], \"38\", \"M304 160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 34.6 13.7 66 36 89C20.5 272.3 0 309.8 0 352c0 70.7 57.3 128 128 128h64c70.7 0 128-57.3 128-128c0-42.2-20.5-79.7-52-103c22.3-23 36-54.4 36-89zM176.1 288H192c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64h15.9c0 0 .1 0 .1 0h32c0 0 .1 0 .1 0zm0-64c0 0 0 0 0 0H144c0 0 0 0 0 0c-35.3 0-64-28.7-64-64c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64c0 35.3-28.6 64-64 64z\"]\n};\nvar fa9 = {\n prefix: 'fas',\n iconName: '9',\n icon: [320, 512, [], \"39\", \"M64 192a96 96 0 1 0 192 0A96 96 0 1 0 64 192zm87.5 159.8C67.1 347.4 0 277.5 0 192C0 103.6 71.6 32 160 32s160 71.6 160 160c0 2.6-.1 5.3-.2 7.9c-1.7 35.7-15.2 70-38.4 97.4l-145 171.4c-11.4 13.5-31.6 15.2-45.1 3.8s-15.2-31.6-3.8-45.1l63.9-75.6z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6H386.7l42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z\"]\n};\nvar faArrowsToCircle = {\n prefix: 'fas',\n iconName: 'arrows-to-circle',\n icon: [640, 512, [], \"e4bd\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7V96c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 4.3-.9 8.5-2.4 12.2c-1.6 3.7-3.8 7.3-6.9 10.3l-.1 .1c-3.1 3-6.6 5.3-10.3 6.9c-3.8 1.6-7.9 2.4-12.2 2.4H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h18.7L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zM256 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM114.7 352H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0l.1 0c8.8 0 16.7 3.6 22.5 9.3l.1 .1c3 3.1 5.3 6.6 6.9 10.3c1.6 3.8 2.4 7.9 2.4 12.2v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352zM416 96c0-17.7 14.3-32 32-32s32 14.3 32 32v18.7L585.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 160H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448c-8.8 0-16.8-3.6-22.6-9.3l-.1-.1c-3-3.1-5.3-6.6-6.9-10.3s-2.4-7.8-2.4-12.2l0-.1v0V96zM525.3 352L630.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 397.3V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V320v0c0 0 0-.1 0-.1c0-4.3 .9-8.4 2.4-12.2c1.6-3.8 3.9-7.3 6.9-10.4c5.8-5.8 13.7-9.3 22.5-9.4c0 0 .1 0 .1 0h0 96c17.7 0 32 14.3 32 32s-14.3 32-32 32H525.3z\"]\n};\nvar faCircleChevronRight = {\n prefix: 'fas',\n iconName: 'circle-chevron-right',\n icon: [512, 512, [\"chevron-circle-right\"], \"f138\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"]\n};\nvar faChevronCircleRight = faCircleChevronRight;\nvar faWagonCovered = {\n prefix: 'fas',\n iconName: 'wagon-covered',\n icon: [640, 512, [], \"f8ee\", \"M4.5 57.4C-5.2 30.3 16.1 2.1 44.8 4.1L194.1 14C210.9 15.1 224 29.1 224 45.9V224H64L4.5 57.4zM288 16h64c17.7 0 32 14.3 32 32V224H256V48c0-17.7 14.3-32 32-32zM64 288c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32h-1.6c20.7 20.3 33.6 48.7 33.6 80c0 61.9-50.1 112-112 112c-56.4 0-103.1-41.7-110.9-96H286.9c-7.8 54.3-54.4 96-110.9 96c-61.9 0-112-50.1-112-112c0-31.3 12.9-59.7 33.6-80H96c-17.7 0-32-14.3-32-32zm96 128H114c5.8 22.5 23.5 40.2 46 46V416zm0-32V338c-22.5 5.8-40.2 23.5-46 46h46zm32 78c22.5-5.8 40.2-23.5 46-46H192v46zm0-124v46h46c-5.8-22.5-23.5-40.2-46-46zM448 462V416H402c5.8 22.5 23.5 40.2 46 46zm-46-78h46V338c-22.5 5.8-40.2 23.5-46 46zm124 32H480v46c22.5-5.8 40.2-23.5 46-46zm0-32c-5.8-22.5-23.5-40.2-46-46v46h46zM595.2 4.1c28.7-1.9 50 26.2 40.3 53.4L576 224H416V45.9c0-16.8 13.1-30.8 29.9-31.9l149.3-10z\"]\n};\nvar faLineHeight = {\n prefix: 'fas',\n iconName: 'line-height',\n icon: [576, 512, [], \"f871\", \"M118.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4V370.7l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4V141.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64zM288 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM256 416c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-17.7 0-32 14.3-32 32z\"]\n};\nvar faBagel = {\n prefix: 'fas',\n iconName: 'bagel',\n icon: [640, 512, [129391], \"e3d7\", \"M640 208c0 114.9-93.1 208-208 208c-3.9 0-7.7-.1-11.5-.3c6.5-12.3 12-25.3 16.3-38.8c4.7-.7 9.3-2.5 13.3-5.3L471 357.3c5.1-3.5 11-5.4 17.2-5.6l25.3-.7c13.2-.4 24.8-8.8 29.3-21.3l8.5-23.9c2.1-5.8 5.8-10.9 10.6-14.6L582 275.8c10.5-8.1 14.9-21.7 11.2-34.4L586 217c-1.7-5.9-1.7-12.2 0-18.1l7.2-24.3c3.7-12.7-.7-26.3-11.2-34.4l-20.1-15.5c-4.9-3.8-8.6-8.8-10.6-14.6l-8.5-23.9c-4.4-12.5-16.1-20.9-29.3-21.3l-25.3-.7c-6.2-.2-12.1-2.1-17.2-5.6L450.1 44.4c-10.9-7.5-25.3-7.5-36.2 0L393 58.7c-5.1 3.5-11 5.4-17.2 5.6L350.5 65c-13.2 .4-24.8 8.8-29.3 21.3l-1.8 5.1c-14.4-7.6-29.7-13.7-45.7-18.3C311.8 28.4 368.6 0 432 0C546.9 0 640 93.1 640 208zM396.1 155c10.2-6.9 22.6-11 35.9-11c35.3 0 64 28.7 64 64c0 30.6-21.5 56.3-50.3 62.5c-6-43.3-23.6-82.9-49.5-115.6zM0 304a208 208 0 1 1 416 0A208 208 0 1 1 0 304zm256 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM112 416a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm144 16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48-16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16-176a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM144 224a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM96 272a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faTransporter7 = {\n prefix: 'fas',\n iconName: 'transporter-7',\n icon: [512, 512, [], \"e2a8\", \"M472.7 38.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L448 64l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L448 96l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L480 96l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L480 64l-7.3-25.4zM64 288l-7.3-25.4c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L32 288 6.6 295.3C2.7 296.4 0 299.9 0 304s2.7 7.6 6.6 8.7L32 320l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L64 320l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L64 288zM296 512h88c17.7 0 32-14.3 32-32s-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32h88 80z\"]\n};\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [61946], \"40\", \"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256v32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32v80 32c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faRectanglesMixed = {\n prefix: 'fas',\n iconName: 'rectangles-mixed',\n icon: [576, 512, [], \"e323\", \"M0 80C0 53.5 21.5 32 48 32H272c26.5 0 48 21.5 48 48V208c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zm384 0c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V336c0 26.5-21.5 48-48 48H432c-26.5 0-48-21.5-48-48V80zM112 304H288c26.5 0 48 21.5 48 48v80c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V352c0-26.5 21.5-48 48-48z\"]\n};\nvar faPhoneArrowUpRight = {\n prefix: 'fas',\n iconName: 'phone-arrow-up-right',\n icon: [512, 512, [\"phone-arrow-up\", \"phone-outgoing\"], \"e224\", \"M295 183l135-135H384c-13.3 0-24-10.7-24-24s10.7-24 24-24H488c13.3 0 24 10.7 24 24V128c0 13.3-10.7 24-24 24s-24-10.7-24-24V81.9L329 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9zM117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24z\"]\n};\nvar faPhoneArrowUp = faPhoneArrowUpRight;\nvar faPhoneOutgoing = faPhoneArrowUpRight;\nvar faTrashCan = {\n prefix: 'fas',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faTrashAlt = faTrashCan;\nvar faCircleL = {\n prefix: 'fas',\n iconName: 'circle-l',\n icon: [512, 512, [], \"e114\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208 152V336H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHeadSideGoggles = {\n prefix: 'fas',\n iconName: 'head-side-goggles',\n icon: [512, 512, [\"head-vr\"], \"f6ea\", \"M45.9 128C75.3 53.1 148.3 0 233.7 0H256c39.3 0 75.8 11.8 106.2 32H304c-61.9 0-112 50.1-112 112c0 17.2 3.9 33.5 10.8 48H32.2 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H45.9zM304 256H507.1c3.2 6.2 4.9 13.1 4.9 20.2c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V375.8c0-17-7.1-33-17.5-46.4C55 299.1 38.3 261.6 33.5 224H225.6c20.2 19.8 47.9 32 78.4 32zm0-192H416V224H304c-44.2 0-80-35.8-80-80s35.8-80 80-80zM480 224H448V64h32c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32z\"]\n};\nvar faHeadVr = faHeadSideGoggles;\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M64 128V96h64l0 320H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H192l0-320h64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H160 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM502.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V352H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H512V160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faUserXmark = {\n prefix: 'fas',\n iconName: 'user-xmark',\n icon: [640, 512, [\"user-times\"], \"f235\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM471 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faUserTimes = faUserXmark;\nvar faFaceHandYawn = {\n prefix: 'fas',\n iconName: 'face-hand-yawn',\n icon: [512, 512, [], \"e379\", \"M336.9 498.9C438.7 465.1 512 369.1 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256c0 94.5 51.2 177 127.3 221.4c-9.8-18-15.3-38.6-15.3-60.5V384 330.4c0-28.7 23.3-52 52-52c1.8 0 3.6 .1 5.3 .3C184.8 246.3 217.8 224 256 224c28.7 0 54.5 12.6 72.1 32.6c14.8-2.4 30.4 2 41.8 13.4c12.2 12.2 16.5 29.4 12.8 45c1.1 .9 2.2 1.9 3.2 3c18.1 18.1 18.7 47.1 1.8 65.9c16.9 18.8 16.3 47.8-1.8 65.9l-49 49zM204.5 102c5.5 6.9 4.4 17-2.5 22.5l-80 64c-6.9 5.5-17 4.4-22.5-2.5s-4.4-17 2.5-22.5l80-64c6.9-5.5 17-4.4 22.5 2.5zM310 124.5c-6.9-5.5-8-15.6-2.5-22.5s15.6-8 22.5-2.5l80 64c6.9 5.5 8 15.6 2.5 22.5s-15.6 8-22.5 2.5l-80-64zM299.3 276.7c-6.2-6.2-16.4-6.2-22.6 0l-79 79c-5 5-13.7 1.5-13.7-5.7V330.4c0-11-9-20-20-20s-20 9-20 20V384v32.8c0 52.6 42.6 95.2 95.2 95.2c25.2 0 49.5-10 67.3-27.9l56.8-56.8c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L321.4 424c-2.6 2.6-6.8 2.6-9.4 0s-2.6-6.8 0-9.4l51.3-51.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L289.4 392c-2.6 2.6-6.8 2.6-9.4 0s-2.6-6.8 0-9.4l67.3-67.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L257.4 360c-2.6 2.6-6.8 2.6-9.4 0s-2.6-6.8 0-9.4l51.3-51.3c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faGaugeSimpleMin = {\n prefix: 'fas',\n iconName: 'gauge-simple-min',\n icon: [512, 512, [\"tachometer-slowest\"], \"f62d\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-35.3-28.7-64-64-64c-14.1 0-27.2 4.6-37.8 12.4L100.6 227.6c-11.3-7-26.1-3.5-33 7.8s-3.5 26.1 7.8 33l117.5 72.8c-.6 3.5-.9 7.1-.9 10.8c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faTachometerSlowest = faGaugeSimpleMin;\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [576, 512, [129658], \"f0f1\", \"M142.4 21.9c5.6 16.8-3.5 34.9-20.2 40.5L96 71.1V192c0 53 43 96 96 96s96-43 96-96V71.1l-26.1-8.7c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l26.1 8.7C334.4 19.1 352 43.5 352 71.1V192c0 77.2-54.6 141.6-127.3 156.7C231 404.6 278.4 448 336 448c61.9 0 112-50.1 112-112V265.3c-28.3-12.3-48-40.5-48-73.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V336c0 97.2-78.8 176-176 176c-92.9 0-168.9-71.9-175.5-163.1C87.2 334.2 32 269.6 32 192V71.1c0-27.5 17.6-52 43.8-60.7l26.1-8.7c16.8-5.6 34.9 3.5 40.5 20.2zM480 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faCoffin = {\n prefix: 'fas',\n iconName: 'coffin',\n icon: [384, 512, [9904], \"f6c6\", \"M11.5 114.9l91-104C108.5 4 117.3 0 126.5 0h131c9.2 0 18 4 24.1 10.9l91 104c7.4 8.5 11.5 19.3 11.5 30.6c0 4.4-.6 8.7-1.8 12.9L286.7 488.9c-4 13.7-16.5 23.1-30.7 23.1H128.1c-14.3 0-26.8-9.4-30.7-23.1L1.8 158.3C.6 154.1 0 149.8 0 145.4c0-11.2 4.1-22.1 11.5-30.6z\"]\n};\nvar faMessage = {\n prefix: 'fas',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64h96v80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faCommentAlt = faMessage;\nvar faSalad = {\n prefix: 'fas',\n iconName: 'salad',\n icon: [512, 512, [129367, \"bowl-salad\"], \"f81e\", \"M416 96c2.6 0 5.2 .1 7.8 .2C406.2 76.5 380.5 64 352 64c-8.7 0-17.2 1.2-25.3 3.4C309.5 27.7 270 0 224 0s-85.5 27.7-102.7 67.4c-8-2.2-16.5-3.4-25.3-3.4C43 64 0 107 0 160s43 96 96 96h73.4L84.7 171.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L208 249.4V112c0-8.8 7.2-16 16-16s16 7.2 16 16V256h52c-2.6-10.2-4-21-4-32c0-70.7 57.3-128 128-128zM27.4 288C12.3 288 0 300.3 0 315.4c0 70.5 44.4 130.7 106.7 154.1l1.8 14.4c2 16 15.6 28 31.8 28H371.8c16.1 0 29.8-12 31.8-28l1.8-14.4C467.6 446.1 512 385.9 512 315.4c0-15.1-12.3-27.4-27.4-27.4H27.4zM512 224c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32H506.5c3.5-10 5.5-20.8 5.5-32z\"]\n};\nvar faBowlSalad = faSalad;\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M48 80a48 48 0 1 1 96 0A48 48 0 1 1 48 80zM0 224c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V448h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faRobotAstromech = {\n prefix: 'fas',\n iconName: 'robot-astromech',\n icon: [512, 512, [], \"e2d2\", \"M256 0c70.7 0 128 57.3 128 128v32H128V128C128 57.3 185.3 0 256 0zm0 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm48 32a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM48 240c0-26.5 21.5-48 48-48H416c26.5 0 48 21.5 48 48V398.3c0 8.7 2.4 17.2 6.8 24.7l38.9 64.8c3 4.9 3 11.1 .2 16.1s-8.2 8.1-13.9 8.1H400c-8.8 0-16-7.2-16-16V384l-45.3 45.3c-12 12-28.3 18.7-45.3 18.7h-75c-17 0-33.3-6.7-45.3-18.7L128 384V496c0 8.8-7.2 16-16 16H16c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1L41.2 423c4.5-7.5 6.8-16 6.8-24.7V240zm160 16c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm0 64c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H208z\"]\n};\nvar faRingDiamond = {\n prefix: 'fas',\n iconName: 'ring-diamond',\n icon: [384, 512, [], \"e5ab\", \"M122.5 13.3C126.6 5.1 134.9 0 144 0h96c9.1 0 17.4 5.1 21.5 13.3l24 48c3.5 7.1 3.4 15.5-.5 22.4l-30.4 54.8C329.9 164.4 384 235.9 384 320c0 106-86 192-192 192S0 426 0 320c0-84.1 54.1-155.6 129.4-181.6L99 83.7c-3.8-6.9-4-15.3-.5-22.4l24-48zM192 192a128 128 0 1 0 0 256 128 128 0 1 0 0-256z\"]\n};\nvar faFonduePot = {\n prefix: 'fas',\n iconName: 'fondue-pot',\n icon: [512, 512, [129749], \"e40d\", \"M319 39.8l-24 96c-2.9 11.5-11.6 20-22.2 23L264.5 192h-33l10.2-41c-7.9-7.7-11.7-19.3-8.8-30.8l24-96C261.2 7.1 278.6-3.3 295.8 1s27.6 21.7 23.3 38.8zm62.9 120.2L360.6 192H322.1l33.2-49.8c-4.9-9.9-4.5-22.1 2.1-31.9l64-96C431.2-.5 451-4.4 465.8 5.4s18.7 29.7 8.9 44.4l-64 96c-6.6 9.9-17.7 14.9-28.7 14.2zM32 224H64v16 64c0 8.8 7.2 16 16 16s16-7.2 16-16V272c0-8.8 7.2-16 16-16s16 7.2 16 16s7.2 16 16 16s16-7.2 16-16V240 224H384h64 32c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v32c0 52.3-25.1 98.8-64 128v32c0 17.7-14.3 32-32 32s-32-14.3-32-32v-3.2c-10.3 2.1-21 3.2-32 3.2H160c-11 0-21.7-1.1-32-3.2V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V448C25.1 418.8 0 372.3 0 320V256c0-17.7 14.3-32 32-32z\"]\n};\nvar faTheta = {\n prefix: 'fas',\n iconName: 'theta',\n icon: [384, 512, [], \"f69e\", \"M64 256c0-51 15.9-96 40.2-127.6C128.5 96.9 159.8 80 192 80s63.5 16.9 87.8 48.4C304.1 160 320 205 320 256s-15.9 96-40.2 127.6C255.5 415.1 224.2 432 192 432s-63.5-16.9-87.8-48.4C79.9 352 64 307 64 256zM192 16C135.8 16 87.1 45.7 53.5 89.4C19.9 133.1 0 192.1 0 256s19.9 122.9 53.5 166.6C87.1 466.3 135.8 496 192 496s104.9-29.7 138.5-73.4C364.1 378.9 384 319.9 384 256s-19.9-122.9-53.5-166.6C296.9 45.7 248.2 16 192 16zM128 224c-17.7 0-32 14.3-32 32s14.3 32 32 32H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H128z\"]\n};\nvar faFaceHandPeeking = {\n prefix: 'fas',\n iconName: 'face-hand-peeking',\n icon: [640, 512, [129763], \"e481\", \"M497.8 144.3c12.9-12.9 31.8-16.1 47.7-9.6C502.2 54.5 417.5 0 320 0C248.5 0 183.8 29.3 137.3 76.6c7.7 1.8 14.9 5.7 20.9 11.7c17.2 17.2 17.2 45 0 62.2l-1.5 1.5H232c22.1 0 40 17.9 40 40c0 2.6-.2 5.1-.7 7.5c10.1 7.3 16.7 19.1 16.7 32.5s-6.6 25.3-16.7 32.5c.5 2.4 .7 4.9 .7 7.5c0 22.1-17.9 40-40 40h-8c0 .3 0 .6 0 .9c0 22.1-17.9 40-40 40l-64.8 0c-13.3 0-26.4-2.2-38.8-6.5C117 443.2 210.4 512 320 512c91.5 0 171.8-48 217.1-120.2c-5.4 .7-10.8 1.1-16.3 1.1H456c-22.1 0-40-17.9-40-40c0-.1 0-.2 0-.3c0-.2 0-.4 0-.6h-8c-22.1 0-40-17.9-40-40c0-1.1 0-2.2 .1-3.3c-37-10.4-64.1-44.4-64.1-84.7c0-48.6 39.4-88 88-88c6.6 0 13 .7 19.2 2.1c11.8-4 25.2-2.4 36.1 5.4l37.9 27.1c1.1-9.6 5.3-18.9 12.6-26.2zM320 448c-35.3 0-64-21.5-64-48s28.7-48 64-48s64 21.5 64 48s-28.7 48-64 48zm90.3-208c3.8-4.2 6.1-9.9 6.1-16c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 6.1 2.3 11.8 6.1 16h35.8zM248 192c0-8.8-7.2-16-16-16H118.2c-7.1 0-10.7-8.6-5.7-13.7l28.8-28.8c7.8-7.8 7.8-20.5 0-28.3s-20.5-7.8-28.3 0L51.9 166.4l-.8 .8C14.7 204.4 15 264.1 51.9 301c17.9 17.9 42.1 27.9 67.3 27.9H184c8.8 0 16-7.2 16-16s-7.2-16-16-16H170c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5h62c8.8 0 16-7.2 16-16s-7.2-16-16-16H169.6c-2.2 0-4-1.8-4-4s1.8-4 4-4l78.4 0c8.8 0 16-7.2 16-16s-7.2-16-16-16H169.6c-2.2 0-4-1.8-4-4s1.8-4 4-4l62.4 0c8.8 0 16-7.2 16-16zm163-25.3c-5.1 7.2-3.5 17.2 3.7 22.3l59.7 42.6c3.5 2.5 5.6 6.6 5.6 10.9c0 7.4-6 13.4-13.4 13.4L392 256c-8.8 0-16 7.2-16 16s7.2 16 16 16h84c2.2 0 4 1.8 4 4s-1.8 4-4 4H408c-8.8 0-16 7.2-16 16s7.2 16 16 16l67.5 0c2.5 0 4.5 2 4.5 4.5s-2 4.5-4.5 4.5H456c-8.8 0-16 7.2-16 16s7.2 16 16 16h64.8c25.2 0 49.5-10 67.3-27.9c36.9-36.9 37.2-96.6 .8-133.8l-.8-.8L543 161.3c-7.8-7.8-20.5-7.8-28.3 0s-7.8 20.5 0 28.3l14.8 14.8c6.6 6.6 2.7 18-6.6 19c-2.8 .3-5.6-.4-7.8-2L433.3 163c-7.2-5.1-17.2-3.5-22.3 3.7z\"]\n};\nvar faSquareUser = {\n prefix: 'fas',\n iconName: 'square-user',\n icon: [448, 512, [], \"e283\", \"M81.1 416H366.9c-7.8-54.3-54.4-96-110.9-96H192c-56.4 0-103.1 41.7-110.9 96zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM224 272a72 72 0 1 0 0-144 72 72 0 1 0 0 144z\"]\n};\nvar faDownLeftAndUpRightToCenter = {\n prefix: 'fas',\n iconName: 'down-left-and-up-right-to-center',\n icon: [512, 512, [\"compress-alt\"], \"f422\", \"M439 7c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H296c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39L439 7zM72 272H216c13.3 0 24 10.7 24 24V440c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39L73 505c-9.4 9.4-24.6 9.4-33.9 0L7 473c-9.4-9.4-9.4-24.6 0-33.9l87-87L55 313c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8z\"]\n};\nvar faCompressAlt = faDownLeftAndUpRightToCenter;\nvar faExplosion = {\n prefix: 'fas',\n iconName: 'explosion',\n icon: [576, 512, [], \"e4e9\", \"M499.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L404.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87H378.5c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H117.8L42.3 363.7c-9.7-6.7-13.1-19.6-7.9-30.3s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.7 9.4-11.3L107.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L246 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7s22.7 9.4 23.9 21.7l13.5 141.9L499.6 11.3zM64 448v0H512v0h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64zM288 0c13.3 0 24 10.7 24 24V72c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24z\"]\n};\nvar faFileLines = {\n prefix: 'fas',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFileAlt = faFileLines;\nvar faFileText = faFileLines;\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M128 64c0-17.7 14.3-32 32-32H320c17.7 0 32 14.3 32 32V416h96V256c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H512V448c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V96H192V256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V64z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M64 208c0 7.8 4.4 18.7 17.1 30.3C126.5 214.1 188.9 200 256 200s129.5 14.1 174.9 38.3C443.6 226.7 448 215.8 448 208c0-12.3-10.8-32-47.9-50.6C364.9 139.8 314 128 256 128s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7C166.3 280.2 208.8 288 256 288s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208c0-49.6 39.4-85.8 83.3-107.8C129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8v96c0 49.6-39.4 85.8-83.3 107.8C382.9 434.7 321.7 448 256 448s-126.9-13.3-172.7-36.2C39.4 389.8 0 353.6 0 304V208z\"]\n};\nvar faBuildingUn = {\n prefix: 'fas',\n iconName: 'building-un',\n icon: [384, 512, [], \"e4d9\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM237.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM112 80v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V80c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [9858], \"f527\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faTirePressureWarning = {\n prefix: 'fas',\n iconName: 'tire-pressure-warning',\n icon: [512, 512, [], \"f633\", \"M384 32c0-17.7 14.3-32 32-32s32 14.3 32 32V54.5c0 24.1 3.9 48 11.5 70.8l2.5 7.4c4.8 14.4 11.5 28.6 19.3 44.4c17.5 35.6 33.4 82.6 27.5 136.2c-5.3 48.6-28.1 99-76.8 148.7v34c0 8.8-7.2 16-16 16H384c-8.8 0-16-7.2-16-16v-8H336v8c0 8.8-7.2 16-16 16H288c-8.8 0-16-7.2-16-16v-8H240v8c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16v-8H144v8c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V462C31.3 412.3 8.6 361.9 3.2 313.3c-5.9-53.6 9.9-100.6 27.5-136.2c7.8-15.8 14.5-30 19.3-44.4l2.5-7.4C60.1 102.5 64 78.5 64 54.5V32C64 14.3 78.3 0 96 0s32 14.3 32 32V54.5c0 31-5 61.7-14.8 91.1l-2.5 7.4c-6.3 19-14.8 36.6-22.6 52.5c-14.7 29.7-25.3 64-21.3 100.9c3.7 34 20.4 74.1 65.7 117.7H379.4c45.3-43.6 62-83.7 65.7-117.7c4.1-36.9-6.6-71.1-21.3-100.9c-7.8-15.8-16.3-33.5-22.6-52.5l-2.5-7.4C389 116.2 384 85.4 384 54.5V32zM280 120V232c0 13.3-10.7 24-24 24s-24-10.7-24-24V120c0-13.3 10.7-24 24-24s24 10.7 24 24zM256 288a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faWifiFair = {\n prefix: 'fas',\n iconName: 'wifi-fair',\n icon: [640, 512, [\"wifi-2\"], \"f6ab\", \"M320 352a64 64 0 1 0 0 128 64 64 0 1 0 0-128zm0-160c-70.2 0-137.9 25.6-190.5 72c-13.2 11.7-14.5 31.9-2.8 45.2c11.8 13.3 32 14.5 45.2 2.8c40.9-36.1 93.5-56 148.1-56s107.3 19.9 148.1 56c6.1 5.4 13.7 8 21.2 8c8.8 0 17.7-3.7 24-10.8c11.7-13.2 10.4-33.5-2.8-45.2c-52.6-46.4-120.2-72-190.5-72zM171.8 312c39.5-34.9 91.3-56 148.2-56s108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8zM320 480a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faWifi2 = faWifiFair;\nvar faCalendarDays = {\n prefix: 'fas',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z\"]\n};\nvar faCalendarAlt = faCalendarDays;\nvar faMp3Player = {\n prefix: 'fas',\n iconName: 'mp3-player',\n icon: [384, 512, [], \"f8ce\", \"M0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM192 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 128a96 96 0 1 0 0-192 96 96 0 1 0 0 192zM96 64C78.3 64 64 78.3 64 96v64c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32H96z\"]\n};\nvar faAnchorCircleCheck = {\n prefix: 'fas',\n iconName: 'anchor-circle-check',\n icon: [640, 512, [], \"e4aa\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faTally4 = {\n prefix: 'fas',\n iconName: 'tally-4',\n icon: [640, 512, [], \"e297\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64zm96-32c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32zM544 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64z\"]\n};\nvar faRectangleHistory = {\n prefix: 'fas',\n iconName: 'rectangle-history',\n icon: [512, 512, [], \"e4a2\", \"M512 224c0-35.3-28.7-64-64-64L64 160c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-224zM440 80L72 80c-13.3 0-24 10.7-24 24s10.7 24 24 24l368 0c13.3 0 24-10.7 24-24s-10.7-24-24-24zM392 0L120 0C106.7 0 96 10.7 96 24s10.7 24 24 24l272 0c13.3 0 24-10.7 24-24s-10.7-24-24-24z\"]\n};\nvar faBuildingCircleArrowRight = {\n prefix: 'fas',\n iconName: 'building-circle-arrow-right',\n icon: [640, 512, [], \"e4d1\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V232.2c-39.1 32.3-64 81.1-64 135.8c0 49.5 20.4 94.2 53.3 126.2C364.5 505.1 351.1 512 336 512H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm96 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm140.7-67.3c-6.2 6.2-6.2 16.4 0 22.6L521.4 352H432c-8.8 0-16 7.2-16 16s7.2 16 16 16h89.4l-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nvar faVolleyball = {\n prefix: 'fas',\n iconName: 'volleyball',\n icon: [512, 512, [127952, \"volleyball-ball\"], \"f45f\", \"M511.8 267.4c-26.1 8.7-53.4 13.8-81 15.1c9.2-105.3-31.5-204.2-103.2-272.4C434.1 41.1 512 139.5 512 256c0 3.8-.1 7.6-.2 11.4zm-3.9 34.7c-5.8 32-17.6 62-34.2 88.7c-97.5 48.5-217.7 42.6-311.9-24.5c23.7-36.2 55.4-67.7 94.5-91.8c79.9 43.2 170.1 50.8 251.6 27.6zm-236-55.5c-2.5-90.9-41.1-172.7-101.9-231.7C196.8 5.2 225.8 0 256 0c2.7 0 5.3 0 7.9 .1c90.8 60.2 145.7 167.2 134.7 282.3c-43.1-2.4-86.4-14.1-126.8-35.9zM138 28.8c20.6 18.3 38.7 39.4 53.7 62.6C95.9 136.1 30.6 220.8 7.3 316.9C2.5 297.4 0 277 0 256C0 157.2 56 71.5 138 28.8zm69.6 90.5c19.5 38.6 31 81.9 32.3 127.7C162.5 294.6 110.9 368.9 90.2 451C66 430.4 45.6 405.4 30.4 377.2c6.7-108.7 71.9-209.9 177.1-257.9zM256 512c-50.7 0-98-14.7-137.8-40.2c5.6-27 14.8-53.1 27.4-77.7C232.2 454.6 338.1 468.8 433 441c-46 44-108.3 71-177 71z\"]\n};\nvar faVolleyballBall = faVolleyball;\nvar faSunHaze = {\n prefix: 'fas',\n iconName: 'sun-haze',\n icon: [640, 512, [], \"f765\", \"M425.5 1.2c5 2.1 8.6 6.6 9.6 11.9L455 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L510.9 256 448 256c0-70.7-57.3-128-128-128s-128 57.3-128 128l-62.9 0L66.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L185 121 204.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L320 65.1 410.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM320 160c53 0 96 43 96 96H224c0-53 43-96 96-96zM616 288c13.3 0 24 10.7 24 24s-10.7 24-24 24H504c-13.3 0-24-10.7-24-24s10.7-24 24-24H616zm-208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H408zm144 88c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H552zM64 488c0-13.3 10.7-24 24-24H200c13.3 0 24 10.7 24 24s-10.7 24-24 24H88c-13.3 0-24-10.7-24-24zm208 0c0-13.3 10.7-24 24-24H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24z\"]\n};\nvar faTextSize = {\n prefix: 'fas',\n iconName: 'text-size',\n icon: [640, 512, [], \"f894\", \"M64 128V96h96l0 320H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H224l0-320h96v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H192 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM384 304V288h64l0 128H432c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H512l0-128h64v16c0 17.7 14.3 32 32 32s32-14.3 32-32V272c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48v32c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faUfo = {\n prefix: 'fas',\n iconName: 'ufo',\n icon: [640, 512, [128760], \"e047\", \"M320 112c59.2 0 109.6 37.9 128.3 90.7c5 14.2 7.7 29.4 7.7 45.3c0 0-40 40-136 40s-136-40-136-40c0-15.9 2.7-31.1 7.7-45.3c18.7-52.8 69-90.7 128.3-90.7zm0-48c-90.1 0-165.2 64.8-180.9 150.4C55.1 237.5 0 276.2 0 320c0 70.7 143.3 128 320 128s320-57.3 320-128c0-43.8-55.1-82.5-139.1-105.6C485.2 128.8 410.2 64 320 64zm0 288a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM104 328a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm408-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faFork = {\n prefix: 'fas',\n iconName: 'fork',\n icon: [512, 512, [\"utensil-fork\"], \"f2e3\", \"M412.4 5.9c5.2 6.4 4.8 15.6-1.1 21.5L320 118.6c-5.2 5.2-5.2 13.6 0 18.8c4.9 4.9 12.8 5.2 18.1 .6l99.4-86.1c6.3-5.5 15.9-5.2 21.8 .8s6.3 15.4 .8 21.8L374 173.9c-4.6 5.3-4.3 13.2 .6 18.1c5.2 5.2 13.6 5.2 18.8 0l91.3-91.3c5.8-5.8 15.1-6.3 21.5-1.1s7.7 14.4 3.2 21.2l-71 106.5c-18.6 27.9-49.9 44.6-83.4 44.6c-19.3 0-37.9-5.5-53.9-15.7L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L255.7 211c-10.2-16-15.7-34.7-15.7-53.9c0-33.5 16.8-64.8 44.6-83.4l106.5-71c6.8-4.6 16-3.2 21.2 3.2z\"]\n};\nvar faUtensilFork = faFork;\nvar faArrowsUpToLine = {\n prefix: 'fas',\n iconName: 'arrows-up-to-line',\n icon: [576, 512, [], \"e4c2\", \"M32 96l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96zM9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 237.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96zm320 45.3c12.5 12.5 32.8 12.5 45.3 0L416 237.3 416 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3z\"]\n};\nvar faMobileSignal = {\n prefix: 'fas',\n iconName: 'mobile-signal',\n icon: [512, 512, [], \"e1ef\", \"M64 64H288V315.7c18.3-21.2 39.9-39.5 64-54V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H224V488c0-13.6 1-27 3-40H64V64zm80 320c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H144zM488 256c-128.1 0-232 103.9-232 232c0 13.3 10.7 24 24 24s24-10.7 24-24c0-101.6 82.4-184 184-184c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-8 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-136c0-13.3-10.7-24-24-24c-75.1 0-136 60.9-136 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-48.6 39.4-88 88-88c13.3 0 24-10.7 24-24z\"]\n};\nvar faBarcodeScan = {\n prefix: 'fas',\n iconName: 'barcode-scan',\n icon: [640, 512, [], \"f465\", \"M88 32C74.7 32 64 42.7 64 56V192h64V56c0-13.3-10.7-24-24-24H88zM64 456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V320H64V456zm96 8c0 8.8 7.2 16 16 16s16-7.2 16-16V320H160V464zm64-8c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V320H224V456zm0-264h64V56c0-13.3-10.7-24-24-24H248c-13.3 0-24 10.7-24 24V192zm96 264c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V320H320V456zm0-264h64V56c0-13.3-10.7-24-24-24H344c-13.3 0-24 10.7-24 24V192zM448 464c0 8.8 7.2 16 16 16s16-7.2 16-16V320H448V464zm0-416V192h32V48c0-8.8-7.2-16-16-16s-16 7.2-16 16zm64 408c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V320H512V456zm0-264h64V56c0-13.3-10.7-24-24-24H536c-13.3 0-24 10.7-24 24V192zm-352 0h32V48c0-8.8-7.2-16-16-16s-16 7.2-16 16V192zM24 232c-13.3 0-24 10.7-24 24s10.7 24 24 24H616c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [\"sort-desc\"], \"f0dd\", \"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z\"]\n};\nvar faSortDesc = faSortDown;\nvar faFolderArrowDown = {\n prefix: 'fas',\n iconName: 'folder-arrow-down',\n icon: [512, 512, [\"folder-download\"], \"e053\", \"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416zM280 200c0-13.3-10.7-24-24-24s-24 10.7-24 24V302.1l-31-31c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-31 31V200z\"]\n};\nvar faFolderDownload = faFolderArrowDown;\nvar faCircleMinus = {\n prefix: 'fas',\n iconName: 'circle-minus',\n icon: [512, 512, [\"minus-circle\"], \"f056\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusCircle = faCircleMinus;\nvar faFaceIcicles = {\n prefix: 'fas',\n iconName: 'face-icicles',\n icon: [512, 512, [], \"e37c\", \"M512 256c0 8.3-.4 16.6-1.2 24.7c0 .5-.1 1.1-.1 1.6l-14.8 200C494.7 499.1 480.8 512 464 512s-30.7-12.9-31.9-29.6l-2.8-37.9c-5 4.6-10.2 9-15.6 13.2l-11.5 32.9C397.7 503.4 385.6 512 372 512c-11.5 0-21.9-6.1-27.5-15.7C316.9 506.5 287.1 512 256 512c-69.4 0-132.3-27.6-178.4-72.4C71.9 444.9 64.3 448 56 448c-15.6 0-29-11.3-31.6-26.7L6.5 313.4C2.2 294.9 0 275.7 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256zM56 415.8l0 .2 0-.2 20-120.2C78.1 283.3 68.6 272 56 272s-22.1 11.3-20.1 23.7L56 415.8zM344 400l28 80 28-80V360l-56 0v40zm55.3-56c-3.8-22.7-23.6-40-47.3-40h-8v40l55.3 0zM328 344V304H264v40h64zm0 56V360H264v40l32 48 32-48zm-80-96H184v40l64 0V304zm0 56l-64 0v40h64V360zm-80-16V304h-8c-23.8 0-43.5 17.3-47.3 40H168zm0 56V360H112.7c3.8 22.7 23.6 40 47.3 40h8zm40.4-192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM464 480l21.8-232.1C487 235.1 476.9 224 464 224s-23 11.1-21.8 23.9L464 480z\"]\n};\nvar faShovel = {\n prefix: 'fas',\n iconName: 'shovel',\n icon: [512, 512, [], \"f713\", \"M361.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-44.1 44.1c-18.7 18.7-44.1 29.3-70.6 29.3c-15.9 0-30.9-3.7-44.3-10.3l-97 97 50.7 50.7c12.5 12.5 12.5 32.8 0 45.3l-58.5 58.5c-30 30-70.7 46.9-113.1 46.9H32c-17.7 0-32-14.3-32-32V386.3c0-42.4 16.9-83.1 46.9-113.1l58.5-58.5c12.5-12.5 32.8-12.5 45.3 0l50.7 50.7 97-97C291.7 155.1 288 140 288 124.1c0-26.5 10.5-51.9 29.3-70.6L361.4 9.4zM384 77.3L362.5 98.7c-6.7 6.7-10.5 15.9-10.5 25.4c0 19.8 16.1 35.9 35.9 35.9c9.5 0 18.6-3.8 25.4-10.5L434.7 128 384 77.3z\"]\n};\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [576, 512, [], \"f52b\", \"M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 288h32V480 32zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128h96V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H512V128c0-35.3-28.7-64-64-64H352v64z\"]\n};\nvar faFilms = {\n prefix: 'fas',\n iconName: 'films',\n icon: [576, 512, [], \"e17a\", \"M160 32c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160zm8 48h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H168c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16zM472 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H488c-8.8 0-16-7.2-16-16V96zM168 184h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H168c-8.8 0-16-7.2-16-16V200c0-8.8 7.2-16 16-16zm304 16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H488c-8.8 0-16-7.2-16-16V200zM168 288h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H168c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16zm304 16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H488c-8.8 0-16-7.2-16-16V304zM288 80h96c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V112c0-17.7 14.3-32 32-32zM256 256c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V256zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faRightFromBracket = {\n prefix: 'fas',\n iconName: 'right-from-bracket',\n icon: [512, 512, [\"sign-out-alt\"], \"f2f5\", \"M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSignOutAlt = faRightFromBracket;\nvar faFaceGlasses = {\n prefix: 'fas',\n iconName: 'face-glasses',\n icon: [512, 512, [], \"e377\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256c0-22.1 2.8-43.5 8.1-64H48v56c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56V192h32v56c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56V192h39.9c5.3 20.5 8.1 41.9 8.1 64zM256 0C363.4 0 455.4 66.2 493.4 160H458.6c-9-18.9-28.3-32-50.6-32H328c-22.3 0-41.6 13.1-50.6 32H234.6c-9-18.9-28.3-32-50.6-32H104c-22.3 0-41.6 13.1-50.6 32H18.6C56.6 66.2 148.6 0 256 0zM80 192v-8c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24v64c0 13.3-10.7 24-24 24H104c-13.3 0-24-10.7-24-24V192zm61.5 147.9c-6.7 5.8-7.4 15.9-1.6 22.6c22.2 25.7 61 53.5 116.1 53.5s93.8-27.9 116.1-53.5c5.8-6.7 5.1-16.8-1.6-22.6s-16.8-5.1-22.6 1.6C330 362.2 299.4 384 256 384s-74-21.8-91.9-42.5c-5.8-6.7-15.9-7.4-22.6-1.6zM304 184c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24v8 56c0 13.3-10.7 24-24 24H328c-13.3 0-24-10.7-24-24V184zM184.4 224a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm168 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faNfc = {\n prefix: 'fas',\n iconName: 'nfc',\n icon: [448, 512, [], \"e1f7\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 48V368c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V144c0-26.5-21.5-48-48-48H256c-26.5 0-48 21.5-48 48v66.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V144c0-8.8 7.2-16 16-16h80c8.8 0 16 7.2 16 16V368c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112c-26.5 0-48 21.5-48 48z\"]\n};\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [512, 512, [9883], \"f5d2\", \"M256 398.8c-11.8 5.1-23.4 9.7-34.9 13.5c16.7 33.8 31 35.7 34.9 35.7s18.1-1.9 34.9-35.7c-11.4-3.9-23.1-8.4-34.9-13.5zM446 256c33 45.2 44.3 90.9 23.6 128c-20.2 36.3-62.5 49.3-115.2 43.2c-22 52.1-55.6 84.8-98.4 84.8s-76.4-32.7-98.4-84.8c-52.7 6.1-95-6.8-115.2-43.2C21.7 346.9 33 301.2 66 256c-33-45.2-44.3-90.9-23.6-128c20.2-36.3 62.5-49.3 115.2-43.2C179.6 32.7 213.2 0 256 0s76.4 32.7 98.4 84.8c52.7-6.1 95 6.8 115.2 43.2c20.7 37.1 9.4 82.8-23.6 128zm-65.8 67.4c-1.7 14.2-3.9 28-6.7 41.2c31.8 1.4 38.6-8.7 40.2-11.7c2.3-4.2 7-17.9-11.9-48.1c-6.8 6.3-14 12.5-21.6 18.6zm-6.7-175.9c2.8 13.1 5 26.9 6.7 41.2c7.6 6.1 14.8 12.3 21.6 18.6c18.9-30.2 14.2-44 11.9-48.1c-1.6-2.9-8.4-13-40.2-11.7zM290.9 99.7C274.1 65.9 259.9 64 256 64s-18.1 1.9-34.9 35.7c11.4 3.9 23.1 8.4 34.9 13.5c11.8-5.1 23.4-9.7 34.9-13.5zm-159 88.9c1.7-14.3 3.9-28 6.7-41.2c-31.8-1.4-38.6 8.7-40.2 11.7c-2.3 4.2-7 17.9 11.9 48.1c6.8-6.3 14-12.5 21.6-18.6zM110.2 304.8C91.4 335 96 348.7 98.3 352.9c1.6 2.9 8.4 13 40.2 11.7c-2.8-13.1-5-26.9-6.7-41.2c-7.6-6.1-14.8-12.3-21.6-18.6zM336 256a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-80-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [129532], \"e06e\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM416 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 160c0 27.6-11.7 52.5-30.4 70.1C422.1 275.7 448 310.8 448 352c0 53-43 96-96 96H160c-53 0-96-43-96-96s43-96 96-96h88.4c-15.2-17-24.4-39.4-24.4-64H96c-53 0-96 43-96 96V416c0 53 43 96 96 96H416c53 0 96-43 96-96V288c0-53-43-96-96-96zM160 288c-35.3 0-64 28.7-64 64s28.7 64 64 64H352c35.3 0 64-28.7 64-64s-28.7-64-64-64H320 160z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [\"heart-music-camera-bolt\"], \"f86d\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32V176c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V71L352 90.2V208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V64c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM74.7 304l11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2h61.7c10.7 0 20.7 5.3 26.6 14.2L213.3 304H240c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V352c0-26.5 21.5-48 48-48H74.7zM192 408a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM478.7 278.3L440.3 368H496c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.2-12.4-5.3-19.2L391.7 400H336c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112c5.6-4.9 13.9-5.3 19.9-.9s8.2 12.4 5.3 19.2zm-339-59.2c-6.5 6.5-17 6.5-23 0L19.9 119.2c-28-29-26.5-76.9 5-103.9c27-23.5 68.4-19 93.4 6.5l10 10.5 9.5-10.5c25-25.5 65.9-30 93.9-6.5c31 27 32.5 74.9 4.5 103.9l-96.4 99.9z\"]\n};\nvar faHeartMusicCameraBolt = faIcons;\nvar faMicrophoneLinesSlash = {\n prefix: 'fas',\n iconName: 'microphone-lines-slash',\n icon: [640, 512, [\"microphone-alt-slash\"], \"f539\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8V256H358.9l-34.5-27c2.9-3.1 7-5 11.6-5h80V192H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zm362.5 407l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2z\"]\n};\nvar faMicrophoneAltSlash = faMicrophoneLinesSlash;\nvar faClosedCaptioningSlash = {\n prefix: 'fas',\n iconName: 'closed-captioning-slash',\n icon: [640, 512, [], \"e135\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-30-23.5c4.6-8.8 7.2-18.9 7.2-29.6V96c0-35.3-28.7-64-64-64H96c-6.7 0-13.1 1-19.2 2.9L38.8 5.1zm197.8 155c26.6 1.2 50.4 13.3 67 31.9c6.1 6.8 7.6 16.2 4.7 24.3l-71.6-56.2zm94 73.7c10-42.3 48-73.8 93.4-73.8c28.4 0 54 12.4 71.5 32c8.8 9.9 8 25-1.9 33.9s-25 8-33.9-1.9c-8.8-9.9-21.6-16-35.8-16c-26.5 0-48 21.5-48 48c0 5.4 .9 10.5 2.5 15.4l-47.9-37.6zm89.4 70c1.3 .1 2.7 .2 4.1 .2c14.2 0 27-6.1 35.8-16c8.8-9.9 24-10.7 33.9-1.9s10.7 24 1.9 33.9c-7.8 8.7-17.2 16-27.7 21.4l-47.9-37.6zM32 121.2V416c0 35.3 28.7 64 64 64H487.4L295 328.4c-16.8 14.7-38.9 23.6-63 23.6c-53 0-96-43-96-96c0-16 3.9-31.1 10.8-44.3L32 121.2zM232 304c8.7 0 16.9-2.3 23.9-6.4l-70-55.1c-1.3 4.3-1.9 8.8-1.9 13.5c0 26.5 21.5 48 48 48z\"]\n};\nvar faCalculatorSimple = {\n prefix: 'fas',\n iconName: 'calculator-simple',\n icon: [512, 512, [\"calculator-alt\"], \"f64c\", \"M0 48C0 21.5 21.5 0 48 0H176c26.5 0 48 21.5 48 48V176c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48zm288 0c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V176c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48V48zm48 240H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48V336c0-26.5 21.5-48 48-48zM0 336c0-26.5 21.5-48 48-48H176c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336zM416 64c0-8.8-7.2-16-16-16s-16 7.2-16 16V96H352c-8.8 0-16 7.2-16 16s7.2 16 16 16h32v32c0 8.8 7.2 16 16 16s16-7.2 16-16V128h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H416V64zM64 96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H64zM83.3 348.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L89.4 400 60.7 428.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L112 422.6l28.7 28.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L134.6 400l28.7-28.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L112 377.4 83.3 348.7zM352 352c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H352zm0 64c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H352z\"]\n};\nvar faCalculatorAlt = faCalculatorSimple;\nvar faBridgeCircleCheck = {\n prefix: 'fas',\n iconName: 'bridge-circle-check',\n icon: [640, 512, [], \"e4c9\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faSlidersUp = {\n prefix: 'fas',\n iconName: 'sliders-up',\n icon: [512, 512, [\"sliders-v\"], \"f3f1\", \"M96 0c17.7 0 32 14.3 32 32V86.7c28.3 12.3 48 40.5 48 73.3s-19.7 61-48 73.3V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V233.3C35.7 221 16 192.8 16 160s19.7-61 48-73.3V32C64 14.3 78.3 0 96 0zm0 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM256 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm80-32c0 32.8-19.7 61-48 73.3V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V425.3c-28.3-12.3-48-40.5-48-73.3s19.7-61 48-73.3V32c0-17.7 14.3-32 32-32s32 14.3 32 32V278.7c28.3 12.3 48 40.5 48 73.3zM448 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 73.3V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V265.3c-28.3-12.3-48-40.5-48-73.3s19.7-61 48-73.3V32c0-17.7 14.3-32 32-32s32 14.3 32 32v86.7c28.3 12.3 48 40.5 48 73.3s-19.7 61-48 73.3z\"]\n};\nvar faSlidersV = faSlidersUp;\nvar faLocationMinus = {\n prefix: 'fas',\n iconName: 'location-minus',\n icon: [384, 512, [\"map-marker-minus\"], \"f609\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM120 168H264c13.3 0 24 10.7 24 24s-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMapMarkerMinus = faLocationMinus;\nvar faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [448, 512, [], \"e06a\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM216 280v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V360H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V280c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256v40c0 13.3 10.7 24 24 24s24-10.7 24-24V256zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1v40c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128v24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7V256c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256v24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8V256c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96v24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7V256c0-28.7 23.3-52 52-52s52 23.3 52 52v24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1V256c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24v24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9V256z\"]\n};\nvar faSkiBoot = {\n prefix: 'fas',\n iconName: 'ski-boot',\n icon: [512, 512, [], \"e3cc\", \"M383.4 38c3.3-17.4-8-34.1-25.4-37.5s-34.1 8-37.5 25.4l-1.2 6H245.7c-22.1 130.8-76 201.3-127.2 238.9c-26.2 19.3-51.2 29.5-69.9 35c-6.3 1.8-11.8 3.1-16.5 4L.6 474c-1.8 9.4 .7 19.1 6.8 26.4S22.5 512 32 512H448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V376c0-12.3-7-23.4-18-28.8L340 288H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h69.5l12.3-64H288c-8.8 0-16-7.2-16-16s7.2-16 16-16h72l17.3-90 6.2-32zM38.8 275.4c.3-.1 .6-.2 .9-.3c15.6-4.6 37.1-13.3 59.9-30c43-31.6 92.3-92.9 113.7-213.1H112C96.7 32 83.5 42.9 80.6 58L38.8 275.4z\"]\n};\nvar faStandardDefinition = {\n prefix: 'fas',\n iconName: 'standard-definition',\n icon: [576, 512, [\"rectangle-sd\"], \"e28a\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm304 88V328c0 13.3 10.7 24 24 24h56c53 0 96-43 96-96s-43-96-96-96H328c-13.3 0-24 10.7-24 24zm48 24h32c26.5 0 48 21.5 48 48s-21.5 48-48 48H352V208zm-184.9 .1c7.4-2.4 19.5-2.9 36.2-.7l3-22.2-3 22.2c5.1 .7 21.1 3.4 25.7 4.4c12.1 2.8 24.1-4.8 26.8-16.9s-4.8-24.1-16.9-26.8c-6.5-1.5-23.9-4.4-29.7-5.1c-18.9-2.5-38.9-3.1-56 2.5c-18.8 6.1-33.9 19.7-38.5 42.3c-.1 .4-.1 .8-.2 1.2c-1.7 11.4-.2 22.4 5 32.3c5.1 9.6 12.9 16.1 20.5 20.7c13.7 8.2 31.5 12.3 45.1 15.5l0 0 1.7 .4c16 3.7 27.1 6.5 34.1 10.7c3 1.8 3.8 3 3.9 3.3l0 0c.1 .1 .7 1.2 .2 4.7c-.4 2.7-1.2 3.8-1.7 4.3c-.7 .7-2.3 2-5.8 3.1c-7.7 2.4-20.1 2.9-36.9 .6c-7.4-1-20.3-4.8-31.4-8c-2.5-.7-5-1.4-7.2-2.1c-11.9-3.4-24.3 3.5-27.7 15.4s3.5 24.3 15.4 27.7c1.5 .4 3.3 .9 5.3 1.5l0 0c10.8 3.2 28.4 8.3 39.4 9.9l.1 0c18.9 2.5 39.2 3.1 56.4-2.3c8.9-2.8 17.8-7.5 24.9-15.2c7.3-7.8 11.8-17.6 13.4-28.5c1.7-11.4 .2-22.4-5-32.3c-5.1-9.6-12.9-16.1-20.5-20.7c-13.7-8.2-31.5-12.3-45.1-15.5l0 0-1.7-.4c-16-3.7-27.1-6.5-34.1-10.7c-3-1.8-3.8-3-3.9-3.3l0 0c-.1-.1-.6-1.1-.3-4.1c.9-4 2.8-6.2 8.3-8z\"]\n};\nvar faRectangleSd = faStandardDefinition;\nvar faH1 = {\n prefix: 'fas',\n iconName: 'h1',\n icon: [576, 512, [], \"f313\", \"M64 96c0-17.7-14.3-32-32-32S0 78.3 0 96V256 416c0 17.7 14.3 32 32 32s32-14.3 32-32V288H256V416c0 17.7 14.3 32 32 32s32-14.3 32-32V256 96c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H64V96zm448 0c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-64 32c-15.8 7.9-22.2 27.1-14.3 42.9s27.1 22.2 42.9 14.3l17.7-8.8V384H416c-17.7 0-32 14.3-32 32s14.3 32 32 32h64 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H512V96z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zm64-64c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h48c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32c0 13.2 4 25.4 10.8 35.6C177.9 364.3 160 388.1 160 416c0 11.7 3.1 22.6 8.6 32H160C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64v88c0 22.1-17.9 40-40 40s-40-17.9-40-40V160c0-8.8-7.2-16-16-16s-16 7.2-16 16v56c0 39.8 32.2 72 72 72z\"]\n};\nvar faMagnifyingGlassLocation = {\n prefix: 'fas',\n iconName: 'magnifying-glass-location',\n icon: [512, 512, [\"search-location\"], \"f689\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6c6 7.3 16.8 7.3 22.7 0c22.1-27 68.6-89.8 68.6-138.6zm-112 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faSearchLocation = faMagnifyingGlassLocation;\nvar faMessageBot = {\n prefix: 'fas',\n iconName: 'message-bot',\n icon: [640, 512, [], \"e3b8\", \"M160 0C124.7 0 96 28.7 96 64V176H59.7c-5.5-9.6-15.9-16-27.7-16c-17.7 0-32 14.3-32 32s14.3 32 32 32c11.8 0 22.2-6.4 27.7-16H96V352c0 35.3 28.7 64 64 64h64v80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L373.3 416H480c35.3 0 64-28.7 64-64V208h36.3c5.5 9.6 15.9 16 27.7 16c17.7 0 32-14.3 32-32s-14.3-32-32-32c-11.8 0-22.2 6.4-27.7 16H544V64c0-35.3-28.7-64-64-64H160zm0 128c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32V256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V128zm64 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm192 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faForwardStep = {\n prefix: 'fas',\n iconName: 'forward-step',\n icon: [320, 512, [\"step-forward\"], \"f051\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241V96c0-17.7 14.3-32 32-32s32 14.3 32 32V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V271l-11.5 9.6-192 160z\"]\n};\nvar faStepForward = faForwardStep;\nvar faFaceSmileBeam = {\n prefix: 'fas',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faSmileBeam = faFaceSmileBeam;\nvar faLightCeiling = {\n prefix: 'fas',\n iconName: 'light-ceiling',\n icon: [512, 512, [], \"e016\", \"M256 0c17.7 0 32 14.3 32 32V162c115.8 14.4 207.6 106.3 222 222.1c2.2 17.5-12.4 31.9-30 31.9H32C14.3 416-.2 401.6 2 384.1C16.4 268.2 108.2 176.4 224 162V32c0-17.7 14.3-32 32-32zm0 512c-35.3 0-64-28.7-64-64H320c0 35.3-28.7 64-64 64z\"]\n};\nvar faMessageExclamation = {\n prefix: 'fas',\n iconName: 'message-exclamation',\n icon: [512, 512, [\"comment-alt-exclamation\"], \"f4a5\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zM256 80c-13.3 0-24 10.7-24 24V216c0 13.3 10.7 24 24 24s24-10.7 24-24V104c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faCommentAltExclamation = faMessageExclamation;\nvar faBowlScoop = {\n prefix: 'fas',\n iconName: 'bowl-scoop',\n icon: [448, 512, [127847, \"bowl-shaved-ice\"], \"e3de\", \"M32 224H416c0-106-86-192-192-192S32 118 32 224zM16 256c-4.6 0-9 2-12 5.4s-4.5 8-3.9 12.6l2 15.9C11.1 361.9 72.4 416 145 416h40.4l-68.7 68.7c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H320c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4L262.6 416H303c72.6 0 133.9-54.1 142.9-126.1l2-15.9c.6-4.6-.8-9.1-3.9-12.6s-7.4-5.4-12-5.4H16z\"]\n};\nvar faBowlShavedIce = faBowlScoop;\nvar faSquareX = {\n prefix: 'fas',\n iconName: 'square-x',\n icon: [448, 512, [], \"e286\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm90.3 104.5L224 218.8l69.7-82.3c8.6-10.1 23.7-11.4 33.8-2.8s11.4 23.7 2.8 33.8L255.4 256l74.9 88.5c8.6 10.1 7.3 25.3-2.8 33.8s-25.3 7.3-33.8-2.8L224 293.2l-69.7 82.3c-8.6 10.1-23.7 11.4-33.8 2.8s-11.4-23.7-2.8-33.8L192.6 256l-74.9-88.5c-8.6-10.1-7.3-25.3 2.8-33.8s25.3-7.3 33.8 2.8z\"]\n};\nvar faUtilityPoleDouble = {\n prefix: 'fas',\n iconName: 'utility-pole-double',\n icon: [512, 512, [], \"e2c4\", \"M256 0c17.7 0 32 14.3 32 32V64h96V56c0-13.3 10.7-24 24-24s24 10.7 24 24v8h32V56c0-13.3 10.7-24 24-24s24 10.7 24 24V96c0 17.7-14.3 32-32 32H428.8L288 221.9V256h96v-8c0-13.3 10.7-24 24-24s24 10.7 24 24v8h32v-8c0-13.3 10.7-24 24-24s24 10.7 24 24v40c0 17.7-14.3 32-32 32H428.8L288 413.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V413.9L83.2 320H32c-17.7 0-32-14.3-32-32V248c0-13.3 10.7-24 24-24s24 10.7 24 24v8H80v-8c0-13.3 10.7-24 24-24s24 10.7 24 24v8h96V221.9L83.2 128H32C14.3 128 0 113.7 0 96V56C0 42.7 10.7 32 24 32s24 10.7 24 24v8H80V56c0-13.3 10.7-24 24-24s24 10.7 24 24v8h96V32c0-17.7 14.3-32 32-32zM140.8 128L224 183.4V128H140.8zM288 183.4L371.2 128H288v55.4zM140.8 320L224 375.4V320H140.8zM288 375.4L371.2 320H288v55.4z\"]\n};\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [448, 512, [127937], \"f11e\", \"M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1V345.8c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V400 334 64 32C0 14.3 14.3 0 32 0zM64 187.1l64-13.9v65.5L64 252.6V318l48.8-12.2c5.1-1.3 10.1-2.4 15.2-3.3V238.7l38.9-8.4c8.3-1.8 16.7-2.5 25.1-2.1l0-64c13.6 .4 27.2 2.6 40.4 6.4l23.6 6.9v66.7l-41.7-12.3c-7.3-2.1-14.8-3.4-22.3-3.8v71.4c21.8 1.9 43.3 6.7 64 14.4V244.2l22.7 6.7c13.5 4 27.3 6.4 41.3 7.4V194c-7.8-.8-15.6-2.3-23.2-4.5l-40.8-12v-62c-13-3.8-25.8-8.8-38.2-15c-8.2-4.1-16.9-7-25.8-8.8v72.4c-13-.4-26 .8-38.7 3.6L128 173.2V98L64 114v73.1zM320 335.7c16.8 1.5 33.9-.7 50-6.8l14-5.2V251.9l-7.9 1.8c-18.4 4.3-37.3 5.7-56.1 4.5v77.4zm64-149.4V115.4c-20.9 6.1-42.4 9.1-64 9.1V194c13.9 1.4 28 .5 41.7-2.6l22.3-5.2z\"]\n};\nvar faChevronsUp = {\n prefix: 'fas',\n iconName: 'chevrons-up',\n icon: [512, 512, [\"chevron-double-up\"], \"f325\", \"M278.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-192 192c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3 425.4 278.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-192-192zm192 384l-192-192c-12.5-12.5-32.8-12.5-45.3 0l-192 192c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 301.3 425.4 470.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faChevronDoubleUp = faChevronsUp;\nvar faFootball = {\n prefix: 'fas',\n iconName: 'football',\n icon: [512, 512, [127944, \"football-ball\"], \"f44e\", \"M247.5 25.4c-13.5 3.3-26.4 7.2-38.6 11.7C142.9 61.6 96.7 103.6 66 153.6c-18.3 29.8-30.9 62.3-39.2 95.4L264.5 486.6c13.5-3.3 26.4-7.2 38.6-11.7c66-24.5 112.2-66.5 142.9-116.5c18.3-29.8 30.9-62.3 39.1-95.3L247.5 25.4zM495.2 205.3c6.1-56.8 1.4-112.2-7.7-156.4c-2.7-12.9-13-22.9-26.1-25.1c-58.2-9.7-109.9-12-155.6-7.9L495.2 205.3zM206.1 496L16.8 306.7c-6.1 56.8-1.4 112.2 7.7 156.4c2.7 12.9 13 22.9 26.1 25.1c58.2 9.7 109.9 12 155.6 7.9zm54.6-331.3c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faFootballBall = faFootball;\nvar faUserVneck = {\n prefix: 'fas',\n iconName: 'user-vneck',\n icon: [448, 512, [], \"e461\", \"M224 0a128 128 0 1 0 0 256A128 128 0 1 0 224 0zM157.3 327.1c-3.2-4.3-8.4-6.7-13.7-6.2C62.9 329.7 0 398.2 0 481.3c0 17 13.8 30.7 30.7 30.7H417.3c17 0 30.7-13.8 30.7-30.7c0-83.1-62.9-151.5-143.7-160.3c-5.3-.6-10.5 1.9-13.7 6.2l-53.9 71.8c-6.4 8.5-19.2 8.5-25.6 0l-53.9-71.8z\"]\n};\nvar faSchoolCircleExclamation = {\n prefix: 'fas',\n iconName: 'school-circle-exclamation',\n icon: [640, 512, [], \"e56c\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 160 64v64l178.7 0L128 338.7V32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H173.3L384 173.3 384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-274.7z\"]\n};\nvar faAnglesDown = {\n prefix: 'fas',\n iconName: 'angles-down',\n icon: [448, 512, [\"angle-double-down\"], \"f103\", \"M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nvar faAngleDoubleDown = faAnglesDown;\nvar faUsersRectangle = {\n prefix: 'fas',\n iconName: 'users-rectangle',\n icon: [640, 512, [], \"e594\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H544c53 0 96-43 96-96V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zm159.8 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3C119.9 256 96 279.9 96 309.3zM461.2 336h56.1c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6zM372 289c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-8.6-24.3-29.9-42.6-55.9-47zM512 176a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faPeopleRoof = {\n prefix: 'fas',\n iconName: 'people-roof',\n icon: [640, 512, [], \"e537\", \"M335.5 4l288 160c15.4 8.6 21 28.1 12.4 43.5s-28.1 21-43.5 12.4L320 68.6 47.5 220c-15.4 8.6-34.9 3-43.5-12.4s-3-34.9 12.4-43.5L304.5 4c9.7-5.4 21.4-5.4 31.1 0zM320 160a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM144 256a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm312 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM226.9 491.4L200 441.5V480c0 17.7-14.3 32-32 32H120c-17.7 0-32-14.3-32-32V441.5L61.1 491.4c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l37.9-70.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c16.3 0 31.9 4.5 45.4 12.6l33.6-62.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c32.4 0 62.1 17.8 77.5 46.3l33.6 62.3c13.5-8.1 29.1-12.6 45.4-12.6h19.5c32.4 0 62.1 17.8 77.5 46.3l37.9 70.3c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8L552 441.5V480c0 17.7-14.3 32-32 32H472c-17.7 0-32-14.3-32-32V441.5l-26.9 49.9c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l36.3-67.5c-1.7-1.7-3.2-3.6-4.3-5.8L376 345.5V400c0 17.7-14.3 32-32 32H296c-17.7 0-32-14.3-32-32V345.5l-26.9 49.9c-1.2 2.2-2.6 4.1-4.3 5.8l36.3 67.5c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8z\"]\n};\nvar faSquareArrowRight = {\n prefix: 'fas',\n iconName: 'square-arrow-right',\n icon: [448, 512, [\"arrow-square-right\"], \"f33b\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM361 273L249 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L104 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l182.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L361 239c9.4 9.4 9.4 24.6 0 33.9z\"]\n};\nvar faArrowSquareRight = faSquareArrowRight;\nvar faLocationPlus = {\n prefix: 'fas',\n iconName: 'location-plus',\n icon: [384, 512, [\"map-marker-plus\"], \"f60a\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM168 280V216H104c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V104c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faMapMarkerPlus = faLocationPlus;\nvar faLightbulbExclamationOn = {\n prefix: 'fas',\n iconName: 'lightbulb-exclamation-on',\n icon: [640, 512, [], \"e1ca\", \"M69.3 4l48 32c11 7.4 14 22.3 6.7 33.3s-22.3 14-33.3 6.7l-48-32c-11-7.4-14-22.3-6.7-33.3S58.3-3.3 69.3 4zM597.3 44l-48 32c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l48-32c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3zM24 160H88c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm528 0h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552c-13.3 0-24-10.7-24-24s10.7-24 24-24zM117.3 332l-48 32c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l48-32c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3zm432-39.9l48 32c11 7.4 14 22.3 6.7 33.3s-22.3 14-33.3 6.7l-48-32c-11-7.4-14-22.3-6.7-33.3s22.3-14 33.3-6.7zm-100.1 5.7c-19.8 27.1-39.7 54.4-49.2 86.2H240c-9.6-31.9-29.5-59.1-49.2-86.2l0 0 0 0c-5.2-7.1-10.4-14.2-15.4-21.4C155.6 247.9 144 213.3 144 176C144 78.8 222.8 0 320 0s176 78.8 176 176c0 37.3-11.6 71.9-31.4 100.3c-5 7.2-10.2 14.3-15.4 21.4l0 0 0 0zM400 432c0 44.2-35.8 80-80 80s-80-35.8-80-80V416H400v16zM344 88c0-13.3-10.7-24-24-24s-24 10.7-24 24V200c0 13.3 10.7 24 24 24s24-10.7 24-24V88zM320 320a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faPeopleLine = {\n prefix: 'fas',\n iconName: 'people-line',\n icon: [640, 512, [], \"e534\", \"M360 72a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM144 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM496 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 217.5V272c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V217.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 340.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5z\"]\n};\nvar faBeerMugEmpty = {\n prefix: 'fas',\n iconName: 'beer-mug-empty',\n icon: [512, 512, [\"beer\"], \"f0fc\", \"M32 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V96h51.2c42.4 0 76.8 34.4 76.8 76.8V274.9c0 30.4-17.9 57.9-45.6 70.2L384 381.7V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V64zM384 311.6l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7V172.8c0-7.1-5.7-12.8-12.8-12.8H384V311.6zM160 144c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144z\"]\n};\nvar faBeer = faBeerMugEmpty;\nvar faCrateEmpty = {\n prefix: 'fas',\n iconName: 'crate-empty',\n icon: [512, 512, [], \"e151\", \"M48 224c-26.5 0-48 21.5-48 48v80H512V272c0-26.5-21.5-48-48-48H48zM512 384H0v80c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V384zM64 272a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM48 448a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM448 272a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM432 448a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faDiagramPredecessor = {\n prefix: 'fas',\n iconName: 'diagram-predecessor',\n icon: [512, 512, [], \"e477\", \"M448 416l0-64L64 352l0 64 384 0zm0 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM288 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l144 0 16 0 144 0c44.2 0 80 35.8 80 80l0 16 38.1 0c21.4 0 32.1 25.9 17 41L433 239c-9.4 9.4-24.6 9.4-33.9 0L329 169c-15.1-15.1-4.4-41 17-41l38.1 0 0-16c0-8.8-7.2-16-16-16l-80 0 0 64z\"]\n};\nvar faTransporter = {\n prefix: 'fas',\n iconName: 'transporter',\n icon: [512, 512, [], \"e042\", \"M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 272v96H184V237.3L153 276c-11.1 13.8-31.2 16-45 5s-16-31.2-5-45l57.7-72c18.2-22.7 45.8-36 74.9-36h40.7c29.1 0 56.7 13.2 74.9 36L409 236c11 13.8 8.8 33.9-5 45s-33.9 8.8-45-5l-31-38.7V416H264V320H248zM216 512H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H296 216zM64 96l25.4 7.3c3.9 1.1 6.6 4.7 6.6 8.7s-2.7 7.6-6.6 8.7L64 128l-7.3 25.4c-1.1 3.9-4.7 6.6-8.7 6.6s-7.6-2.7-8.7-6.6L32 128 6.6 120.7C2.7 119.6 0 116.1 0 112s2.7-7.6 6.6-8.7L32 96l7.3-25.4C40.4 66.7 43.9 64 48 64s7.6 2.7 8.7 6.6L64 96zM472.7 6.6L480 32l25.4 7.3c3.9 1.1 6.6 4.7 6.6 8.7s-2.7 7.6-6.6 8.7L480 64l-7.3 25.4c-1.1 3.9-4.7 6.6-8.7 6.6s-7.6-2.7-8.7-6.6L448 64l-25.4-7.3c-3.9-1.1-6.6-4.7-6.6-8.7s2.7-7.6 6.6-8.7L448 32l7.3-25.4C456.4 2.7 459.9 0 464 0s7.6 2.7 8.7 6.6z\"]\n};\nvar faCalendarCircleUser = {\n prefix: 'fas',\n iconName: 'calendar-circle-user',\n icon: [576, 512, [], \"e471\", \"M128 0C110.3 0 96 14.3 96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32zM256 368c0-91.8 70.3-167.2 160-175.3V192H0V464c0 26.5 21.5 48 48 48H330.8C285.6 480.1 256 427.5 256 368zm320 0a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-66.3 80.7C489.5 468.1 462.2 480 432 480s-57.5-11.9-77.7-31.3c6.2-19 24-32.7 45.1-32.7h65.2c21 0 38.9 13.7 45.1 32.7zM384 336a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faArrowUpLong = {\n prefix: 'fas',\n iconName: 'arrow-up-long',\n icon: [384, 512, [\"long-arrow-up\"], \"f176\", \"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n};\nvar faLongArrowUp = faArrowUpLong;\nvar faPersonCarryBox = {\n prefix: 'fas',\n iconName: 'person-carry-box',\n icon: [384, 512, [\"person-carry\"], \"f4cf\", \"M80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zM96 306.7V241.7l16.6 24.9c8.9 13.4 23.9 21.4 39.9 21.4H224 352c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H224c-17.7 0-32 14.3-32 32v96H161.1l-42.6-64c-13.3-20-35.8-32-59.9-32C26.2 128 0 154.2 0 186.6v88.1c0 17 6.7 33.3 18.7 45.3l79.4 79.4 14.3 85.9c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8l-15.2-90.9c-1.6-9.9-6.3-19-13.4-26.1l-51-51zM0 346.5L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32v0V410.5l-64-64z\"]\n};\nvar faPersonCarry = faPersonCarryBox;\nvar faFireFlameSimple = {\n prefix: 'fas',\n iconName: 'fire-flame-simple',\n icon: [384, 512, [\"burn\"], \"f46a\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5c0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"]\n};\nvar faBurn = faFireFlameSimple;\nvar faPerson = {\n prefix: 'fas',\n iconName: 'person',\n icon: [320, 512, [129485, \"male\"], \"f183\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152z\"]\n};\nvar faMale = faPerson;\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [128187], \"f109\", \"M128 32C92.7 32 64 60.7 64 96V352h64V96H512V352h64V96c0-35.3-28.7-64-64-64H128zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480H563.2c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2H19.2z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [512, 512, [], \"f6dd\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM200 352h16c22.1 0 40 17.9 40 40v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-8c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40zm133.1 0H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H333.1c-7.2 0-13.1 5.9-13.1 13.1c0 5.2 3 9.9 7.8 12l37.4 16.6c16.3 7.2 26.8 23.4 26.8 41.2c0 24.9-20.2 45.1-45.1 45.1H304c-8.8 0-16-7.2-16-16s7.2-16 16-16h42.9c7.2 0 13.1-5.9 13.1-13.1c0-5.2-3-9.9-7.8-12l-37.4-16.6c-16.3-7.2-26.8-23.4-26.8-41.2c0-24.9 20.2-45.1 45.1-45.1zm98.9 0c8.8 0 16 7.2 16 16v31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66V368c0-8.8 7.2-16 16-16s16 7.2 16 16v31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6V368c0-8.8 7.2-16 16-16z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32S0 81.7 0 64V62.8c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32V288c0 17.7 14.3 32 32 32H288V160c0-17.7 14.3-32 32-32s32 14.3 32 32V320H544c17.7 0 32-14.3 32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 53-43 96-96 96H352v64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V384H96c-53 0-96-43-96-96V160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H96V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H192V256 160c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32v96 32H384V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H480V256 160c0-17.7 14.3-32 32-32z\"]\n};\nvar faUnion = {\n prefix: 'fas',\n iconName: 'union',\n icon: [384, 512, [8899], \"f6a2\", \"M32 32c17.7 0 32 14.3 32 32V288c0 70.7 57.3 128 128 128s128-57.3 128-128V64c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 106-86 192-192 192S0 394 0 288V64C0 46.3 14.3 32 32 32z\"]\n};\nvar faChevronsLeft = {\n prefix: 'fas',\n iconName: 'chevrons-left',\n icon: [512, 512, [\"chevron-double-left\"], \"f323\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 278.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192zm384-192l-192 192c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 470.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n};\nvar faChevronDoubleLeft = faChevronsLeft;\nvar faCircleHeart = {\n prefix: 'fas',\n iconName: 'circle-heart',\n icon: [512, 512, [\"heart-circle\"], \"f4c7\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM131.9 280.9c-29.4-29.8-29.4-78.2 0-108s77-29.8 106.4 0l17.7 18 17.7-18c29.4-29.8 77-29.8 106.4 0s29.4 78.2 0 108L278.5 384.1c-6.2 6.3-14.3 9.4-22.5 9.4s-16.3-3.1-22.5-9.4L131.9 280.9z\"]\n};\nvar faHeartCircle = faCircleHeart;\nvar faTruckPlane = {\n prefix: 'fas',\n iconName: 'truck-plane',\n icon: [640, 512, [], \"e58f\", \"M200 0c-30.6 0-56 54.7-56 86.1V192.5L7.8 274.3C2.9 277.2 0 282.4 0 288v64c0 5.1 2.4 9.8 6.4 12.8s9.3 3.9 14.1 2.5l123.4-37v81.2l-50 40c-3.8 3-6 7.6-6 12.5v32c0 5.1 2.5 10 6.6 13s9.5 3.8 14.4 2.2L200 480.9 290.4 511c-1.6-4.7-2.4-9.8-2.4-15V463.4c-18.2-10.5-30.7-29.7-31.9-51.8l-.1-.1V408 325.5 184l0-1.1 0 0V86.1C256 54.7 231.5 0 200 0zm88 176V400c0 20.9 13.4 38.7 32 45.3V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V448H544v40c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V445.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48zm79.8 78.7c3.3-8.7 11.2-14.7 20.5-14.7H539.7c9.2 0 17.2 6 20.5 14.7L576 304H352l15.8-49.3zM568 352a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM336 376a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 224a128 128 0 1 0 0-256 128 128 0 1 0 0 256zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBringForward = {\n prefix: 'fas',\n iconName: 'bring-forward',\n icon: [512, 512, [], \"f856\", \"M224 448H448V224H384V160h64c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64V384h64v64zm64-96H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H288c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64z\"]\n};\nvar faSquareP = {\n prefix: 'fas',\n iconName: 'square-p',\n icon: [448, 512, [], \"e279\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 96h92c50.8 0 92 41.2 92 92s-41.2 92-92 92H176v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V288 152c0-13.3 10.7-24 24-24zm92 136c24.3 0 44-19.7 44-44s-19.7-44-44-44H176v88h68z\"]\n};\nvar faFaceGrinStars = {\n prefix: 'fas',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm407.4 75.5c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z\"]\n};\nvar faGrinStars = faFaceGrinStars;\nvar faSigma = {\n prefix: 'fas',\n iconName: 'sigma',\n icon: [384, 512, [8721], \"f68b\", \"M2.4 51.8C7.4 39.8 19.1 32 32 32H320c35.3 0 64 28.7 64 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V96H109.3L246.6 233.4c12.5 12.5 12.5 32.8 0 45.3L109.3 416H320V384c0-17.7 14.3-32 32-32s32 14.3 32 32v32c0 35.3-28.7 64-64 64H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L178.7 256 9.4 86.6C.2 77.5-2.5 63.7 2.4 51.8z\"]\n};\nvar faCameraMovie = {\n prefix: 'fas',\n iconName: 'camera-movie',\n icon: [576, 512, [127909, 127910], \"f8a9\", \"M128 64a64 64 0 1 0 0 128 64 64 0 1 0 0-128zM352 256H128C57.3 256 0 198.7 0 128S57.3 0 128 0c48.2 0 90.2 26.6 112 66C261.8 26.6 303.8 0 352 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zm0-192a64 64 0 1 0 0 128 64 64 0 1 0 0-128zM558.3 259.4c10.8 5.4 17.7 16.5 17.7 28.6V480c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48L448 448V432 336 320l12.8-9.6 64-48c9.7-7.3 22.7-8.4 33.5-3zM64 288h64H352c35.3 0 64 28.7 64 64v96c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V352H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64z\"]\n};\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M160 208.5c0 29.1-15.6 53.9-37.2 67.8c-17.2 11.1-31.5 26.1-41.7 43.7H302.9c-10.2-17.6-24.5-32.6-41.7-43.7c-21.6-13.9-37.2-38.7-37.2-67.8V64H160V208.5zM288 64V208.5c0 5.7 3.1 10.9 7.9 14c11.2 7.2 21.5 15.5 30.9 24.8L366.1 208l-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l24 24 24 24c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3C374 314.1 384 347.9 384 384c0 39.4-11.9 76.1-32.2 106.5c-9.6 14.4-26.5 21.5-43.8 21.5H76.1c-17.3 0-34.2-7.1-43.8-21.5C11.9 460.1 0 423.4 0 384c0-67.8 35.1-127.3 88.1-161.5c4.8-3.1 7.9-8.3 7.9-14V64C78.3 64 64 49.7 64 32S78.3 0 96 0h16H272h16c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faClarinet = {\n prefix: 'fas',\n iconName: 'clarinet',\n icon: [640, 512, [], \"f8ad\", \"M224 144c0-8.8 7.2-16 16-16h32 96 96 32c8.8 0 16 7.2 16 16s-7.2 16-16 16H480v32h76.6c9.5 0 18.7-2.8 26.6-8.1l31.9-21.3c4.9-3.3 11.2-3.6 16.4-.8s8.5 8.2 8.5 14.1V368c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8l-31.9-21.3c-7.9-5.3-17.1-8.1-26.6-8.1H108.3c-10.2 0-20.3-1.9-29.7-5.7L10.1 318.9C4 316.4 0 310.5 0 304V240c0-6.5 4-12.4 10.1-14.9l68.6-27.4c9.4-3.8 19.5-5.7 29.7-5.7H256V160H240c-8.8 0-16-7.2-16-16zm224 16H384v32h64V160zm-96 0H288v32h64V160zM272 296a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm120-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm72 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faTruckFlatbed = {\n prefix: 'fas',\n iconName: 'truck-flatbed',\n icon: [640, 512, [], \"e2b6\", \"M608 416H576c0 53-43 96-96 96s-96-43-96-96H352 256c0 53-43 96-96 96s-96-43-96-96H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H88.4c17.6-19.6 43.1-32 71.6-32s54 12.4 71.6 32H352V128c0-17.7 14.3-32 32-32h16 16 50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32zM416 160v96H544V237.3L466.7 160H416zM208 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm272 48a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faSpaghettiMonsterFlying = {\n prefix: 'fas',\n iconName: 'spaghetti-monster-flying',\n icon: [640, 512, [\"pastafarianism\"], \"f67b\", \"M208 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3C390 95.1 384 80.2 384 64c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4c7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4C527.3 262.3 532.7 264 536 264c2.5 0 4.3-.6 7.1-3.3c3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7c9.7-9.3 22.9-16.7 40.4-16.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3c-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7c-9.7 9.3-22.9 16.7-40.4 16.7c-18.5 0-32.9-8.5-44.3-18.6c-3.1 4-6.6 8.3-10.5 12.7c1.4 4.3 2.8 8.5 4 12.5c.9 3 1.8 5.8 2.6 8.6c3 9.8 5.5 18.2 8.6 25.9c3.9 9.8 7.4 15.4 10.8 18.5c2.6 2.4 5.9 4.3 12.8 4.3c8.7 0 16.9-4.2 33.7-13.2c15-8 35.7-18.8 62.3-18.8c13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2c-1 .6-2.1 1.1-3.2 1.7C559.9 414 541.4 424 520 424c-18.4 0-33.6-6.1-45.5-17.2c-11.1-10.3-17.9-23.7-22.7-36c-3.6-9-6.7-19.1-9.5-28.5c-16.4 12.3-36.1 23.6-58.9 31.3c3.6 10.8 8.4 23.5 14.4 36.2c7.5 15.9 16.2 30.4 25.8 40.5C433 460.5 441.2 464 448 464c13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8c-14.5-15.4-25.7-34.9-34.2-53c-8-17-14.1-33.8-18.3-46.9c-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9c-8.5 18.1-19.8 37.6-34.2 53C237 498.5 217.2 512 192 512c-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7c9.5-10.1 18.3-24.6 25.8-40.5c5.9-12.6 10.7-25.4 14.4-36.2c-22.8-7.7-42.5-19-58.9-31.3c-2.9 9.4-6 19.5-9.5 28.5c-4.8 12.2-11.6 25.6-22.7 36C153.6 417.9 138.4 424 120 424c-21.4 0-39.9-10-53.1-17.1l0 0c-1.1-.6-2.2-1.2-3.2-1.7c-15-8-26.3-13.2-39.7-13.2c-13.3 0-24-10.7-24-24s10.7-24 24-24c26.6 0 47.3 10.8 62.3 18.8c16.8 9 25 13.2 33.7 13.2c6.8 0 10.2-1.9 12.8-4.3c3.4-3.2 7-8.8 10.8-18.5c3-7.7 5.6-16.1 8.6-25.9c.8-2.7 1.7-5.6 2.6-8.6c1.2-4 2.6-8.2 4-12.5c-3.9-4.5-7.4-8.8-10.5-12.7C136.9 303.5 122.5 312 104 312c-17.5 0-30.7-7.4-40.4-16.7c-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4c-2.8-2.7-4.6-3.3-7.1-3.3c-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7c8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4c2.8 2.7 4.6 3.3 7.1 3.3c3.3 0 8.7-1.7 19.4-13.4c5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24c13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm208 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faPastafarianism = faSpaghettiMonsterFlying;\nvar faArrowDownUpAcrossLine = {\n prefix: 'fas',\n iconName: 'arrow-down-up-across-line',\n icon: [576, 512, [], \"e4af\", \"M137.4 502.6c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V288H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H448V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 109.3V224H192 128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96zM128 192h64V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192zM448 320H384V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320z\"]\n};\nvar faLeafHeart = {\n prefix: 'fas',\n iconName: 'leaf-heart',\n icon: [512, 512, [], \"f4cb\", \"M272 96l0 0H376c42.7 0 79.9-23.9 98.8-59.1c3.5-6.5 13.6-6.8 16.2 .1c13.5 36.5 21.1 77 21.1 119.6C512 317.1 405.1 447.3 273 448l-1 0c-81.7 0-150.4-55.7-170.2-131.2C68.7 347.5 48 391.4 48 440v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V440c0-75.1 38.3-141.2 96.4-179.9C102.5 168.5 178.8 96 272 96l0 0zM189.7 242.8c0 14.4 5.8 28.3 16.2 38.4l70.9 69c6.2 6 16.1 6 22.3 0l70.9-69c10.4-10.1 16.2-23.9 16.2-38.4c0-29.5-23.9-53.5-53.5-53.5h-1.5c-14.3 0-28.1 5.6-38.4 15.6l-4.9 4.8-4.9-4.8c-10.3-10-24-15.6-38.4-15.6h-1.5c-29.5 0-53.5 23.9-53.5 53.5z\"]\n};\nvar faHouseBuilding = {\n prefix: 'fas',\n iconName: 'house-building',\n icon: [640, 512, [], \"e1b1\", \"M368 0c-26.5 0-48 21.5-48 48V153.9l64 58.7V208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H413.2c1.9 6.8 2.8 13.9 2.8 21.1V288h16c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H416V464c0 18-6 34.6-16 48H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H368zM512 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V208zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16zM400 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V112zM0 277.1V464c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V277.1c0-13.5-5.6-26.3-15.6-35.4l-144-132c-18.4-16.8-46.5-16.8-64.9 0l-144 132C5.6 250.8 0 263.7 0 277.1zM144 296c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24H168c-13.3 0-24-10.7-24-24V296z\"]\n};\nvar faCheeseSwiss = {\n prefix: 'fas',\n iconName: 'cheese-swiss',\n icon: [512, 512, [129472], \"f7f0\", \"M451 93c37.7 37.7 61 89.7 61 147.2V256H496.2 448 96 16 0c0-5.4 .7-10.7 2.1-15.8c3.8-13.7 12.4-25.8 24.5-33.9L96 160l23.2-15.4c7.8-5.2 18.4-2.3 25.5 3.8C153.1 155.6 164 160 176 160c26.5 0 48-21.5 48-48c0-5.2-.8-10.2-2.3-14.9c-2.9-9-1.6-19.9 6.3-25.1l47-31.3c8.6-5.7 18.6-8.7 28.9-8.7c56 0 106.8 22.1 144.2 58c1 1 2 2 3 2.9zM432 288h16 48 16v16V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V304 288H16 96 304c8.8 0 15.7 7.4 18.6 15.7C329.1 322.5 347 336 368 336s38.9-13.5 45.4-32.3c2.9-8.4 9.8-15.7 18.6-15.7zM224 384a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faSpoon = {\n prefix: 'fas',\n iconName: 'spoon',\n icon: [512, 512, [129348, 61873, \"utensil-spoon\"], \"f2e5\", \"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8C224 80 320 0 416 0c53 0 96 43 96 96c0 96-80 192-160.2 192c-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"]\n};\nvar faUtensilSpoon = faSpoon;\nvar faJarWheat = {\n prefix: 'fas',\n iconName: 'jar-wheat',\n icon: [320, 512, [], \"e517\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm112 0H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 198 90 224 122.2 224H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 294 90 320 122.2 320H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7zM112 352H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 390 90 416 122.2 416H144v32c0 8.8 7.2 16 16 16s16-7.2 16-16V416h21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7z\"]\n};\nvar faEnvelopesBulk = {\n prefix: 'fas',\n iconName: 'envelopes-bulk',\n icon: [640, 512, [\"mail-bulk\"], \"f674\", \"M128 0C110.3 0 96 14.3 96 32V224h96V192c0-35.3 28.7-64 64-64H480V32c0-17.7-14.3-32-32-32H128zM256 160c-17.7 0-32 14.3-32 32v32h96c35.3 0 64 28.7 64 64V416H576c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H256zm240 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM64 256c-17.7 0-32 14.3-32 32v13L187.1 415.9c1.4 1 3.1 1.6 4.9 1.6s3.5-.6 4.9-1.6L352 301V288c0-17.7-14.3-32-32-32H64zm288 84.8L216 441.6c-6.9 5.1-15.3 7.9-24 7.9s-17-2.8-24-7.9L32 340.8V480c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V340.8z\"]\n};\nvar faMailBulk = faEnvelopesBulk;\nvar faFileCircleExclamation = {\n prefix: 'fas',\n iconName: 'file-circle-exclamation',\n icon: [576, 512, [], \"e4eb\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faBowArrow = {\n prefix: 'fas',\n iconName: 'bow-arrow',\n icon: [512, 512, [127993], \"f6b9\", \"M511.7 18.9c1-5.2-.7-10.5-4.4-14.3S498.2-.7 493.1 .3l-128 24c-5.8 1.1-10.6 5.3-12.3 11s-.2 11.8 4 16l35 35L144.6 333.4 93.8 320.7c-8.2-2-16.8 .4-22.8 6.3L7 391c-6.1 6.1-8.5 15-6.2 23.4s8.9 14.8 17.3 16.9l50 12.5 12.5 50c2.1 8.4 8.5 15 16.9 17.3s17.3 0 23.4-6.2l64-64c6-6 8.4-14.6 6.3-22.8l-12.7-50.8L425.7 120.3l35 35c4.2 4.2 10.4 5.7 16 4s9.9-6.5 11-12.3l24-128zm-458 85.5c-12.6-11.6-32.1-11.3-44.3 .9c-12.5 12.5-12.5 32.8 0 45.3L145.8 287 191 241.8l-90.6-90.6c56.5-30.7 125.2-30.9 181.9-.7l46.8-46.8c-83.8-53.2-191.8-53-275.4 .8zM361.5 229.7c30.2 56.7 30 125.4-.7 181.9L270.2 321 225 366.2 361.4 502.6c12.5 12.5 32.8 12.5 45.3 0c12.2-12.2 12.5-31.8 .9-44.3c53.7-83.6 54-191.6 .8-275.4l-46.8 46.8z\"]\n};\nvar faCartXmark = {\n prefix: 'fas',\n iconName: 'cart-xmark',\n icon: [576, 512, [], \"e0dd\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H69.5c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H199.7c-11.5 0-21.4-8.2-23.6-19.5L170.7 288H459.2c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32h-411C111 12.8 91.6 0 69.5 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM395.4 128.9L364.3 160l31.1 31.1c7.8 7.8 7.8 20.5 0 28.3s-20.5 7.8-28.3 0L336 188.3l-31.1 31.1c-7.8 7.8-20.5 7.8-28.3 0s-7.8-20.5 0-28.3L307.7 160l-31.1-31.1c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0L336 131.7l31.1-31.1c7.8-7.8 20.5-7.8 28.3 0s7.8 20.5 0 28.3z\"]\n};\nvar faHexagonXmark = {\n prefix: 'fas',\n iconName: 'hexagon-xmark',\n icon: [512, 512, [\"times-hexagon\", \"xmark-hexagon\"], \"f2ee\", \"M17.1 292c-12.9-22.3-12.9-49.7 0-72L105.4 67.1c12.9-22.3 36.6-36 62.4-36H344.3c25.7 0 49.5 13.7 62.4 36L494.9 220c12.9 22.3 12.9 49.7 0 72L406.6 444.9c-12.9 22.3-36.6 36-62.4 36H167.7c-25.7 0-49.5-13.7-62.4-36L17.1 292zM175 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faTimesHexagon = faHexagonXmark;\nvar faXmarkHexagon = faHexagonXmark;\nvar faCircleH = {\n prefix: 'fas',\n iconName: 'circle-h',\n icon: [512, 512, [9405, \"hospital-symbol\"], \"f47e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM368 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H192l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H320V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHospitalSymbol = faCircleH;\nvar faMerge = {\n prefix: 'fas',\n iconName: 'merge',\n icon: [512, 512, [], \"e526\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32h97.2c9.7 0 18.9 4.4 25 12L247 256 154.2 372c-6.1 7.6-15.3 12-25 12H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h97.2c29.2 0 56.7-13.3 75-36l99.2-124H384v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c6-6 9.4-14.1 9.4-22.6s-3.4-16.6-9.4-22.6l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H303.4L204.2 100c-18.2-22.8-45.8-36-75-36H32z\"]\n};\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [128223], \"f815\", \"M0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zm64 32v64c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H80zm136 0c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H216z\"]\n};\nvar faCartMinus = {\n prefix: 'fas',\n iconName: 'cart-minus',\n icon: [576, 512, [], \"e0db\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H69.5c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H199.7c-11.5 0-21.4-8.2-23.6-19.5L170.7 288H459.2c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32h-411C111 12.8 91.6 0 69.5 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM280 132H392c11 0 20 9 20 20s-9 20-20 20H280c-11 0-20-9-20-20s9-20 20-20z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM208 288h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z\"]\n};\nvar faContactBook = faAddressBook;\nvar faPanFrying = {\n prefix: 'fas',\n iconName: 'pan-frying',\n icon: [576, 512, [127859], \"e42c\", \"M448 224c0 33.4-7.3 65.1-20.4 93.6l123.7 79.9C566.7 409.2 576 427.1 576 448c0 35.3-28.7 64-64 64c-15.2 0-28.3-4.6-39.3-13.5L364.8 398.3C326.3 429.4 277.3 448 224 448C100.3 448 0 347.7 0 224S100.3 0 224 0S448 100.3 448 224zM319.9 154c-21.2-5.4-50.6-22.6-65.8-38.4c-24.5-25.5-65-26.3-90.5-1.8c-11.6 11.2-18.1 25.6-19.4 40.5c-2.2 24.7-9.2 56.2-21.5 77.6c-22.1 38.3-9 87.2 29.3 109.3s87.2 9 109.3-29.3c9.4-16.3 33-30 51.6-32.6c10.2-1.4 20.3-5.4 29.2-12c28.4-21.1 34.3-61.1 13.3-89.5c-9.1-12.3-21.8-20.4-35.5-23.9zM528 448a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM224 176a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faGrid = {\n prefix: 'fas',\n iconName: 'grid',\n icon: [448, 512, [\"grid-3\"], \"e195\", \"M0 72C0 49.9 17.9 32 40 32H88c22.1 0 40 17.9 40 40v48c0 22.1-17.9 40-40 40H40c-22.1 0-40-17.9-40-40V72zM0 232c0-22.1 17.9-40 40-40H88c22.1 0 40 17.9 40 40v48c0 22.1-17.9 40-40 40H40c-22.1 0-40-17.9-40-40V232zM128 392v48c0 22.1-17.9 40-40 40H40c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40H88c22.1 0 40 17.9 40 40zM160 72c0-22.1 17.9-40 40-40h48c22.1 0 40 17.9 40 40v48c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V72zM288 232v48c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V232c0-22.1 17.9-40 40-40h48c22.1 0 40 17.9 40 40zM160 392c0-22.1 17.9-40 40-40h48c22.1 0 40 17.9 40 40v48c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V392zM448 72v48c0 22.1-17.9 40-40 40H360c-22.1 0-40-17.9-40-40V72c0-22.1 17.9-40 40-40h48c22.1 0 40 17.9 40 40zM320 232c0-22.1 17.9-40 40-40h48c22.1 0 40 17.9 40 40v48c0 22.1-17.9 40-40 40H360c-22.1 0-40-17.9-40-40V232zM448 392v48c0 22.1-17.9 40-40 40H360c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40h48c22.1 0 40 17.9 40 40z\"]\n};\nvar faGrid3 = faGrid;\nvar faFootballHelmet = {\n prefix: 'fas',\n iconName: 'football-helmet',\n icon: [512, 512, [], \"f44f\", \"M488.1 194.9c4.5 17.1-8.2 33.1-25.7 35.3L340.3 245.5l14 74.5H464c26.5 0 48 21.5 48 48v32 50.4c0 25.2-20.4 45.6-45.6 45.6h-17c-54.9 0-102-39.1-112.1-93.1L327.7 352H288l9.2 18.3c4.5 9 6.8 18.9 6.8 28.9c0 35.7-29 64.7-64.7 64.7h-1.7c-9 0-17.9-1.8-26.1-5.4l-93.4-40c-4-1.7-8.3-2.6-12.6-2.6h-14c-9.1 0-17.9-3.8-23.5-10.9C35.4 364.1 16 312.3 16 256C16 123.5 123.5 16 256 16c111.4 0 205.1 75.9 232.1 178.9zm-207.1 58c-14.3 1.8-25.1 14-25.1 28.4c0 4.4 1 8.8 3 12.8l13 26h49.7l-13.2-70.6-27.4 3.4zM360.3 352l6 32H480V368c0-8.8-7.2-16-16-16H360.3zM480 416H374.7c13.1 28.7 42 48 74.7 48h17c7.5 0 13.6-6.1 13.6-13.6V416zM176 360a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faHandLove = {\n prefix: 'fas',\n iconName: 'hand-love',\n icon: [512, 512, [], \"e1a5\", \"M160 0c17.7 0 32 14.3 32 32V191.9l0 .1v96c0 35.3 28.7 64 64 64c19.1 0 36.3-8.4 48-21.7c11.7 13.3 28.9 21.7 48 21.7c35.3 0 64-28.7 64-64V224.1l0-.1V96c0-17.7 14.3-32 32-32s32 14.3 32 32V336c0 97.2-78.8 176-176 176H284.8c-59.6 0-116.9-22.9-160-64L12.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6V32c0-17.7 14.3-32 32-32zm64 192c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V192zm128 0c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32z\"]\n};\nvar faTrees = {\n prefix: 'fas',\n iconName: 'trees',\n icon: [640, 512, [], \"f724\", \"M70.2 121.4L178.5 5.8C182 2.1 186.9 0 192 0s10 2.1 13.5 5.8L313.8 121.4c4 4.3 6.2 9.9 6.2 15.7c0 12.7-10.3 22.9-22.9 22.9H272l74.6 89.5c3.5 4.2 5.4 9.5 5.4 15c0 13-10.5 23.5-23.5 23.5H304l74.6 89.5c3.5 4.2 5.4 9.5 5.4 15c0 13-10.5 23.5-23.5 23.5H224v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416H23.5C10.5 416 0 405.5 0 392.5c0-5.5 1.9-10.8 5.4-15L80 288H55.5c-13 0-23.5-10.5-23.5-23.5c0-5.5 1.9-10.8 5.4-15L112 160H86.9C74.3 160 64 149.7 64 137.1c0-5.8 2.2-11.4 6.2-15.7zm271.4-16.4L434.5 5.8C438 2.1 442.9 0 448 0s10 2.1 13.5 5.8L569.8 121.4c4 4.3 6.2 9.9 6.2 15.7c0 12.7-10.3 22.9-22.9 22.9H528l74.6 89.5c3.5 4.2 5.4 9.5 5.4 15c0 13-10.5 23.5-23.5 23.5H560l74.6 89.5c3.5 4.2 5.4 9.5 5.4 15c0 13-10.5 23.5-23.5 23.5H480v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416l0-23.4 0-.1 0-.1V392h0c-.1-12.8-4.7-25.2-12.9-35l-40.6-48.7c13-10.2 21.4-26 21.4-43.8c0-13-4.6-25.6-12.9-35.5l-40.4-48.5c12.9-10 21.3-25.8 21.3-43.4c0-11.6-3.7-22.8-10.4-32.1z\"]\n};\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M161.3 144c3.2-17.2 14-30.1 33.7-38.6c21.1-9 51.8-12.3 88.6-6.5c11.9 1.9 48.8 9.1 60.1 12c17.1 4.5 34.6-5.6 39.2-22.7s-5.6-34.6-22.7-39.2c-14.3-3.8-53.6-11.4-66.6-13.4c-44.7-7-88.3-4.2-123.7 10.9c-36.5 15.6-64.4 44.8-71.8 87.3c-.1 .6-.2 1.1-.2 1.7c-2.8 23.9 .5 45.6 10.1 64.6c4.5 9 10.2 16.9 16.7 23.9H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H270.1c-.1 0-.3-.1-.4-.1l-1.1-.3c-36-10.8-65.2-19.6-85.2-33.1c-9.3-6.3-15-12.6-18.2-19.1c-3.1-6.1-5.2-14.6-3.8-27.4zM348.9 337.2c2.7 6.5 4.4 15.8 1.9 30.1c-3 17.6-13.8 30.8-33.9 39.4c-21.1 9-51.7 12.3-88.5 6.5c-18-2.9-49.1-13.5-74.4-22.1c-5.6-1.9-11-3.7-15.9-5.4c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c3.6 1.2 7.9 2.7 12.7 4.3l0 0 0 0c24.9 8.5 63.6 21.7 87.6 25.6l0 0 .2 0c44.7 7 88.3 4.2 123.7-10.9c36.5-15.6 64.4-44.8 71.8-87.3c3.6-21 2.7-40.4-3.1-58.1H335.1c7 5.6 11.4 11.2 13.9 17.2z\"]\n};\nvar faPage = {\n prefix: 'fas',\n iconName: 'page',\n icon: [384, 512, [], \"e428\", \"M64 512H320c35.3 0 64-28.7 64-64V138.5c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0H64C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64z\"]\n};\nvar faK = {\n prefix: 'fas',\n iconName: 'k',\n icon: [320, 512, [107], \"4b\", \"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7l-155.2 160L64 249V64c0-17.7-14.3-32-32-32S0 46.3 0 64V328 448c0 17.7 14.3 32 32 32s32-14.3 32-32V341l64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"]\n};\nvar faDiagramPrevious = {\n prefix: 'fas',\n iconName: 'diagram-previous',\n icon: [512, 512, [], \"e478\", \"M448 352L64 352v64l384 0V352zm0-64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64H232V224l-46.1 0c-21.4 0-32.1-25.9-17-41L239 113c9.4-9.4 24.6-9.4 33.9 0L343 183c15.1 15.1 4.4 41-17 41L280 224v64H448zM365.7 160.4L295.6 90.3c-21.9-21.9-57.3-21.9-79.2 0l-70.1 70.1c-18.4 18.4-20.4 43.7-11 63.6L64 224c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H376.7c9.4-19.9 7.4-45.2-11-63.6z\"]\n};\nvar faGaugeMin = {\n prefix: 'fas',\n iconName: 'gauge-min',\n icon: [512, 512, [\"tachometer-alt-slowest\"], \"f628\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64s-28.7-64-64-64c-14.1 0-27.2 4.6-37.8 12.4L100.6 227.6c-11.3-7-26.1-3.5-33 7.8s-3.5 26.1 7.8 33l117.5 72.8c-.6 3.5-.9 7.1-.9 10.8c0 35.3 28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faTachometerAltSlowest = faGaugeMin;\nvar faFolderGrid = {\n prefix: 'fas',\n iconName: 'folder-grid',\n icon: [512, 512, [], \"e188\", \"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM104 240c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V264c0-13.3-10.7-24-24-24H104zm128 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V264c0-13.3-10.7-24-24-24H232zm104 24v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V264c0-13.3-10.7-24-24-24H360c-13.3 0-24 10.7-24 24z\"]\n};\nvar faEggplant = {\n prefix: 'fas',\n iconName: 'eggplant',\n icon: [512, 512, [], \"e16c\", \"M505 7c9.4 9.4 9.4 24.6 0 33.9l-9 9V192c0 8.8-7.2 16-16 16c-26.5 0-48-21.5-48-48c0-5.8-4-10.7-9.4-12.6c-13.3-4.8-25.4-13-35.1-22.8s-18-21.9-22.8-35.1c-2-5.4-6.9-9.4-12.6-9.4c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16H462.1l9-9c9.4-9.4 24.6-9.4 33.9 0zM169.9 139.3c40.3-19.6 81-39.3 113.4-66.6c11.8 20 32.1 34.4 55.9 38.3c6.7 14 15.8 26.3 25.8 36.2s22.2 19.1 36.2 25.8c5 30.4 27.1 55.1 56.2 63.8C410.6 362.7 311.1 512.2 176.4 512C79.9 511.9 1.4 431.3 0 336C-1.6 222.5 83.4 181.3 169.9 139.3z\"]\n};\nvar faRam = {\n prefix: 'fas',\n iconName: 'ram',\n icon: [640, 512, [128015], \"f70a\", \"M336 64v8c0 13.3 10.7 24 24 24s24-10.7 24-24V64c0-8.8 7.2-16 16-16s16 7.2 16 16V88.4c-6.8 6.1-12.8 13.2-17.6 21l-47.8 20.5c-12.2 5.2-17.8 19.3-12.6 31.5s19.3 17.8 31.5 12.6l14.5-6.2V240c0 44.2 35.8 80 80 80h32c44.2 0 80-35.8 80-80V167.8l14.5 6.2c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-47.8-20.5c-4.9-7.8-10.8-14.9-17.6-21V64c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 13.3 10.7 24 24 24s24-10.7 24-24V64c0-35.3-28.7-64-64-64s-64 28.7-64 64v1.3c-5.2-.9-10.5-1.3-16-1.3s-10.8 .5-16 1.3V64c0-35.3-28.7-64-64-64s-64 28.7-64 64zM308.5 174.1c-8.9-20.8-4.3-44 10-59.7C312.3 85.6 286.7 64 256 64c-19.2 0-36.5 8.5-48.2 21.9C196.9 77.2 183 72 168 72c-30.1 0-55.3 20.8-62.2 48.8c-3.2-.5-6.5-.8-9.8-.8c-35.3 0-64 28.7-64 64c0 5.3 .7 10.5 1.9 15.5C13.7 210.3 0 231.5 0 256s13.7 45.7 33.9 56.5c-1.2 5-1.9 10.2-1.9 15.5c0 35.3 28.7 64 64 64c.5 0 1 0 1.5 0l17.6 93.9c2.8 15.1 16.1 26.1 31.5 26.1H176c17.7 0 32-14.3 32-32V426.3c11.7 13.3 28.9 21.7 48 21.7s36.3-8.4 48-21.7V480c0 17.7 14.3 32 32 32h29.4c15.4 0 28.6-11 31.4-26.1L414.5 392c.5 0 1 0 1.5 0c26.9 0 49.9-16.5 59.3-40H464c-61.9 0-112-50.1-112-112V207.4c-18.7-2.7-35.5-14.8-43.5-33.4zM464 160a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faLandmarkFlag = {\n prefix: 'fas',\n iconName: 'landmark-flag',\n icon: [512, 512, [], \"e51c\", \"M272 0h80c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H272v32H464c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H240V16c0-8.8 7.2-16 16-16h16zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faLips = {\n prefix: 'fas',\n iconName: 'lips',\n icon: [576, 512, [128068, 128482], \"f600\", \"M288 101.3c3-2.4 6.2-4.8 9.7-7.3c17.8-12.7 46.8-30 78.3-30c20.3 0 42.8 9.3 61.4 19.2c20 10.6 41.1 24.7 60.2 39.5c19.1 14.8 37.1 31.2 50.8 46.5c6.8 7.6 13.1 15.7 17.9 23.7c4.3 7.2 9.7 18.3 9.7 31c0 9.2-2.6 19.1-5.3 27.5c-3 9.1-7.4 19.4-12.8 30.3c-10.8 21.7-26.8 46.9-47.7 71.1C468.8 400.9 404.7 448 320 448H256c-84.7 0-148.8-47.1-190.2-95.1C44.9 328.8 29 303.5 18.1 281.8C12.7 271 8.4 260.7 5.3 251.5C2.6 243.1 0 233.2 0 224c0-12.8 5.5-23.8 9.7-31c4.8-8.1 11.1-16.1 17.9-23.7c13.6-15.3 31.7-31.7 50.8-46.5c19.1-14.9 40.2-29 60.2-39.5C157.2 73.3 179.7 64 200 64c31.5 0 60.6 17.2 78.3 30c3.4 2.5 6.7 4.9 9.7 7.3zM64 224c0 7.9 80 96 224 96s224-88.1 224-96c0-7.7-46.3-31.1-138.8-32c-3.4 0-6.9 .5-10.1 1.5C350 197.6 313.7 208 288 208s-62-10.4-75.1-14.4c-3.3-1-6.7-1.6-10.1-1.5C110.3 192.9 64 216.3 64 224z\"]\n};\nvar faPencil = {\n prefix: 'fas',\n iconName: 'pencil',\n icon: [512, 512, [9999, 61504, \"pencil-alt\"], \"f303\", \"M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPencilAlt = faPencil;\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [9194], \"f04a\", \"M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3V256v41.7L459.5 440.6zM256 352V256 128 96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V352z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [256, 512, [], \"f0da\", \"M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.3-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M160 0c-23.7 0-44.4 12.9-55.4 32H48C21.5 32 0 53.5 0 80V400c0 26.5 21.5 48 48 48H192V176c0-44.2 35.8-80 80-80h48V80c0-26.5-21.5-48-48-48H215.4C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48V448v16c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V243.9c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1H320 272zM160 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faFileClipboard = faPaste;\nvar faDesktopArrowDown = {\n prefix: 'fas',\n iconName: 'desktop-arrow-down',\n icon: [576, 512, [], \"e155\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H352V64H512V288H64V64H224V0H64zM312 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V174.1l-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39V24z\"]\n};\nvar faCodePullRequest = {\n prefix: 'fas',\n iconName: 'code-pull-request',\n icon: [512, 512, [], \"e13c\", \"M305.8 2.1C314.4 5.9 320 14.5 320 24V64h16c70.7 0 128 57.3 128 128V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-35.3-28.7-64-64-64H320v40c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1zM104 80A24 24 0 1 0 56 80a24 24 0 1 0 48 0zm8 73.3V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80c0 32.8-19.7 61-48 73.3zM104 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm328 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faPumpkin = {\n prefix: 'fas',\n iconName: 'pumpkin',\n icon: [576, 512, [], \"f707\", \"M234.6 103.9C251.5 98.8 269.4 96 288 96c22.8 0 44.7 4.2 64.8 11.7c-.6-2-.8-4.1-.8-6.3V35.4c0-6.9-4.1-13.2-10.5-15.9L299.3 1.4c-2.2-.9-4.5-1.4-6.8-1.4h-1.2c-6.9 0-13.1 4.1-15.8 10.4l-40.9 93.5zm161.6 27.3c12.1 8.8 23.1 19.1 32.7 30.5c5.6 6.7-2.9 14.6-10.4 10.1C380.3 149 335.7 136 288 136s-92.3 13-130.5 35.7c-7.5 4.5-16-3.4-10.4-10.1c9.6-11.4 20.6-21.7 32.7-30.5c-.6-.1-1.2-.2-1.8-.3c-8.5-1.8-17.2-2.8-26-2.8C68.1 128 0 214 0 320S68.1 512 152 512c19.3 0 37.8-4.5 54.7-12.8c8.3-4.1 18.2-4.1 26.5 0c17 8.3 35.4 12.8 54.7 12.8s37.8-4.5 54.7-12.8c8.3-4.1 18.2-4.1 26.5 0c17 8.3 35.4 12.8 54.7 12.8c83.9 0 152-86 152-192s-68.1-192-152-192c-8.9 0-17.6 1-26 2.8c-.6 .1-1.2 .2-1.8 .3z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM72 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zM72 368a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm88 0c0-8.8 7.2-16 16-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16z\"]\n};\nvar faPenField = {\n prefix: 'fas',\n iconName: 'pen-field',\n icon: [640, 512, [], \"e211\", \"M601.9 16c-18.8-18.8-49.2-18.7-67.9 0L494.4 55.7l89.3 89.3 39.8-38.9c19.1-18.7 19.2-49.4 .4-68.2L601.9 16zM328.5 221.8c-7 7-12.3 15.6-15.4 25l-23.8 71.3c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l71.5-23.9c9.2-3.1 17.6-8.2 24.5-15L560.8 167.5 471.7 78.4 328.5 221.8zM80 128c-44.2 0-80 35.8-80 80V432c0 44.2 35.8 80 80 80H496c44.2 0 80-35.8 80-80V304c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16H272c17.7 0 32-14.3 32-32s-14.3-32-32-32H80zm80 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm64 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBlueberries = {\n prefix: 'fas',\n iconName: 'blueberries',\n icon: [512, 512, [], \"e2e8\", \"M512 176C512 78.8 433.2 0 336 0C255.4 0 187.4 54.2 166.6 128.2c3.1-.1 6.3-.2 9.4-.2c114.9 0 208 93.1 208 208c0 3.2-.1 6.3-.2 9.4C457.8 324.6 512 256.6 512 176zM176 512a176 176 0 1 0 0-352 176 176 0 1 0 0 352zm0-304c8.8 0 16 7.2 16 16v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H128c-8.8 0-16-7.2-16-16s7.2-16 16-16h32V224c0-8.8 7.2-16 16-16zM384 64V96h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H384v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V128H320c-8.8 0-16-7.2-16-16s7.2-16 16-16h32V64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faTruckRampBox = {\n prefix: 'fas',\n iconName: 'truck-ramp-box',\n icon: [640, 512, [\"truck-loading\"], \"f4de\", \"M640 0V400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8V64c0-35.3 28.7-64 64-64H640zM576 400a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM23.1 207.7c-4.6-17.1 5.6-34.6 22.6-39.2l46.4-12.4 20.7 77.3c2.3 8.5 11.1 13.6 19.6 11.3l30.9-8.3c8.5-2.3 13.6-11.1 11.3-19.6l-20.7-77.3 46.4-12.4c17.1-4.6 34.6 5.6 39.2 22.6l41.4 154.5c4.6 17.1-5.6 34.6-22.6 39.2L103.7 384.9c-17.1 4.6-34.6-5.6-39.2-22.6L23.1 207.7z\"]\n};\nvar faTruckLoading = faTruckRampBox;\nvar faNote = {\n prefix: 'fas',\n iconName: 'note',\n icon: [448, 512, [], \"e1ff\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V320H336c-26.5 0-48 21.5-48 48V480H64c-35.3 0-64-28.7-64-64V96zM402.7 352H448l-32 32-64 64-32 32V434.7 368c0-8.8 7.2-16 16-16h66.7zM112 376a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM88 112a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm24 144a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faArrowDownToSquare = {\n prefix: 'fas',\n iconName: 'arrow-down-to-square',\n icon: [512, 512, [], \"e096\", \"M374.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 242.7V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V242.7l-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H432c44.2 0 80-35.8 80-80V112c0-44.2-35.8-80-80-80H400c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c8.8 0 16 7.2 16 16V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM625 177L497 305c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCloudXmark = {\n prefix: 'fas',\n iconName: 'cloud-xmark',\n icon: [640, 512, [], \"e35f\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm95-273c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faVialVirus = {\n prefix: 'fas',\n iconName: 'vial-virus',\n icon: [512, 512, [], \"e597\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V384c0 53 43 96 96 96c28.6 0 54.2-12.5 71.8-32.3c.1-14.2 5.6-28.3 16.4-39.1c.2-.2 .1-.6-.2-.6c-30.9 0-56-25.1-56-56s25.1-56 56-56c.3 0 .4-.4 .2-.6c-21.9-21.9-21.9-57.3 0-79.2c2.4-2.4 5-4.6 7.8-6.5V96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 96 32zM96 192V96h64v96H96zM216 376c28.8 0 43.2 34.8 22.9 55.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9c0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9C444.8 410.8 459.2 376 488 376c13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0C410.8 259.2 376 244.8 376 216c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2c-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-88a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm40 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faBookBlank = {\n prefix: 'fas',\n iconName: 'book-blank',\n icon: [448, 512, [128213, 128215, 128216, 128217, \"book-alt\"], \"f5d9\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faBookAlt = faBookBlank;\nvar faGolfFlagHole = {\n prefix: 'fas',\n iconName: 'golf-flag-hole',\n icon: [512, 512, [], \"e3ac\", \"M162.7 2.5c-7.4-3.7-16.3-3.3-23.4 1.1S128 15.7 128 24V232c0 1.3 .1 2.7 .3 4c-.2 1.3-.3 2.6-.3 4v92.8C51.5 349.4 0 380.5 0 416c0 53 114.6 96 256 96s256-43 256-96s-114.6-96-256-96c-27.9 0-54.8 1.7-80 4.8V246.8l194.7-97.4c8.1-4.1 13.3-12.4 13.3-21.5s-5.1-17.4-13.3-21.5l-208-104zM288 416c0 17.7-28.7 32-64 32s-64-14.3-64-32s28.7-32 64-32s64 14.3 64 32z\"]\n};\nvar faMessageArrowDown = {\n prefix: 'fas',\n iconName: 'message-arrow-down',\n icon: [512, 512, [\"comment-alt-arrow-down\"], \"e1db\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm280 56c0-13.3-10.7-24-24-24s-24 10.7-24 24V238.1l-31-31c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-31 31V120z\"]\n};\nvar faCommentAltArrowDown = faMessageArrowDown;\nvar faFaceUnamused = {\n prefix: 'fas',\n iconName: 'face-unamused',\n icon: [512, 512, [], \"e39f\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm60.1-117.3c-11.7-13-31.6-26.7-60.1-26.7s-48.4 13.7-60.1 26.7c-5.9 6.6-16 7.1-22.6 1.2s-7.1-16-1.2-22.6C188.2 355.4 216.3 336 256 336s67.8 19.4 83.9 37.3c5.9 6.6 5.4 16.7-1.2 22.6s-16.7 5.4-22.6-1.2zM112 192h64c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm176 16c0-8.8 7.2-16 16-16h64c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32H304c-8.8 0-16-7.2-16-16z\"]\n};\nvar faSheetPlastic = {\n prefix: 'fas',\n iconName: 'sheet-plastic',\n icon: [384, 512, [], \"e571\", \"M0 448c0 35.3 28.7 64 64 64H224V384c0-17.7 14.3-32 32-32H384V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448zM171.3 75.3l-96 96c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l96-96c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm96 32l-160 160c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l160-160c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM384 384H256V512L384 384z\"]\n};\nvar faCircle9 = {\n prefix: 'fas',\n iconName: 'circle-9',\n icon: [512, 512, [], \"e0f6\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 16a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm-26 44.4l-29.6 25.4c-10.1 8.6-11.2 23.8-2.6 33.8s23.8 11.2 33.8 2.6l81.6-70C337.8 287.2 352 256.4 352 224c0-53-43-96-96-96s-96 43-96 96c0 44 29.6 81.1 70 92.4z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144V368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144H128v96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48V144z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [129399], \"f504\", \"M224 256c-57.2 0-105.6-37.5-122-89.3c-1.1 1.3-2.2 2.6-3.5 3.8c-15.8 15.8-38.8 20.7-53.6 22.1c-8.1 .8-14.6-5.7-13.8-13.8c1.4-14.7 6.3-37.8 22.1-53.6c5.8-5.8 12.6-10.1 19.6-13.4c-7-3.2-13.8-7.6-19.6-13.4C37.4 82.7 32.6 59.7 31.1 44.9c-.8-8.1 5.7-14.6 13.8-13.8c14.7 1.4 37.8 6.3 53.6 22.1c4.8 4.8 8.7 10.4 11.7 16.1C131.4 28.2 174.4 0 224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zM0 482.3C0 399.5 56.4 330 132.8 309.9c6-1.6 12.2 .9 15.9 5.8l62.5 83.3c6.4 8.5 19.2 8.5 25.6 0l62.5-83.3c3.7-4.9 9.9-7.4 15.9-5.8C391.6 330 448 399.5 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM160 96c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H160z\"]\n};\nvar faPencilSlash = {\n prefix: 'fas',\n iconName: 'pencil-slash',\n icon: [640, 512, [], \"e215\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L409.6 295.8l42.1-42.1L474.3 231l11.3-11.3-33.9-33.9-62.1-62.1L355.7 89.8l-11.3 11.3-22.6 22.6-57.8 57.8L38.8 5.1zM306.2 214.7l50.5-50.5c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-47.8 47.8-25.4-19.9zM195.5 250l-72.9 72.9c-10.4 10.4-18 23.3-22.2 37.4L65 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2l88.3-88.3-77.9-61.4-27.6 27.6c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l24.9-24.9L195.5 250zM224 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9l-78.1 23 23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM426.7 18.7L412.3 33.2 389.7 55.8 378.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L517.3 18.7c-25-25-65.5-25-90.5 0z\"]\n};\nvar faBowlingPins = {\n prefix: 'fas',\n iconName: 'bowling-pins',\n icon: [512, 512, [], \"f437\", \"M128 0c35.3 0 64 28.7 64 64v1.1c0 7.4-1 14.8-2.9 22l-17.7 64.8c-.7 2.7-1.3 5.4-1.8 8.1H86.5c-.5-2.7-1.1-5.4-1.8-8.1L66.9 87.1c-2-7.2-2.9-14.6-2.9-22V64C64 28.7 92.7 0 128 0zM82.1 210.4c2.2-6 3.8-12.1 4.8-18.4h82.3c1 6.3 2.6 12.4 4.8 18.4l38.6 104.7c7.6 20.6 11.5 42.5 11.5 64.4c0 28.9-6.7 57.5-19.7 83.4l-15.7 31.4C183.2 505.2 172.1 512 160 512H96c-12.1 0-23.2-6.8-28.6-17.7L51.7 462.9C38.7 437 32 408.5 32 379.5c0-22 3.9-43.8 11.5-64.4L82.1 210.4zM384 0c35.3 0 64 28.7 64 64v1.1c0 7.4-1 14.8-2.9 22l-17.7 64.8c-.7 2.7-1.3 5.4-1.8 8.1H342.5c-.5-2.7-1.1-5.4-1.8-8.1L322.9 87.1c-2-7.2-2.9-14.6-2.9-22V64c0-35.3 28.7-64 64-64zM338.1 210.4c2.2-6 3.8-12.1 4.8-18.4h82.3c1 6.3 2.6 12.4 4.8 18.4L470 319.3c6.6 17.9 10 36.8 10 55.8c0 20.5-3.9 40.9-11.5 59.9l-22.7 56.9C440.9 504 429.1 512 416 512H352c-13.1 0-24.9-8-29.7-20.1L299.5 435C291.9 416 288 395.6 288 375.1c0-19 3.4-37.9 10-55.8l40.1-108.9z\"]\n};\nvar faPersonArrowUpFromLine = {\n prefix: 'fas',\n iconName: 'person-arrow-up-from-line',\n icon: [640, 512, [], \"e539\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM598.6 121.4l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L464 141.3 464 384c0 17.7 14.3 32 32 32s32-14.3 32-32V141.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faDownRight = {\n prefix: 'fas',\n iconName: 'down-right',\n icon: [384, 512, [], \"e16b\", \"M336 432H96c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l72-72L11.3 171.3C4.1 164.1 0 154.2 0 144s4.1-20.1 11.3-27.3L52.7 75.3C59.9 68.1 69.8 64 80 64s20.1 4.1 27.3 11.3L241.4 209.4l72-72c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6V400c0 17.7-14.3 32-32 32z\"]\n};\nvar faScrollTorah = {\n prefix: 'fas',\n iconName: 'scroll-torah',\n icon: [640, 512, [\"torah\"], \"f6a0\", \"M96 480V32C96 14.3 74.5 0 48 0S0 14.3 0 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32zM512 32H128V480H512V32zM592 0c-26.5 0-48 14.3-48 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32V32c0-17.7-21.5-32-48-32zM196 313.7c0-3.2 .9-6.4 2.5-9.2L226.7 256l-28.3-48.5c-1.6-2.8-2.5-6-2.5-9.2c0-10.1 8.2-18.3 18.3-18.3H271l31.4-53.9c3.6-6.3 10.3-10.1 17.6-10.1s13.9 3.8 17.6 10.1L369 180h56.7c10.1 0 18.3 8.2 18.3 18.3c0 3.2-.9 6.4-2.5 9.2L413.3 256l28.3 48.5c1.6 2.8 2.5 6 2.5 9.2c0 10.1-8.2 18.3-18.3 18.3H369l-31.4 53.9c-3.6 6.3-10.3 10.1-17.6 10.1s-13.9-3.8-17.6-10.1L271 332H214.3c-10.1 0-18.3-8.2-18.3-18.3zm124 54.7L341.2 332H298.8L320 368.4zM254.5 256l30.3 52h70.4l30.3-52-30.3-52H284.8l-30.3 52zm144.9 23.8L383 308h32.8l-16.4-28.2zM415.8 204H383l16.4 28.2L415.8 204zM320 143.6L298.8 180h42.4L320 143.6zM224.2 204l16.4 28.2L257 204H224.2zM257 308l-16.4-28.2L224.2 308H257z\"]\n};\nvar faTorah = faScrollTorah;\nvar faWebhook = {\n prefix: 'fas',\n iconName: 'webhook',\n icon: [576, 512, [], \"e5d5\", \"M306 50c-43.1-9.9-86 16.9-95.9 60c-7.9 34.1 7.4 68.2 35.5 85.9c5.4 3.4 9.2 8.8 10.7 15s.3 12.7-3 18.1L170.4 361.5c3.6 6.7 5.6 14.4 5.6 22.5c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48c.6 0 1.1 0 1.7 0L201 221.9c-32.5-30.2-48.4-76.4-37.7-122.7C179.2 30.3 247.9-12.6 316.8 3.3c65.9 15.2 108 78.7 97.7 144.4c-2.1 13.1-14.3 22-27.4 20s-22-14.3-20-27.4C373.5 99.2 347.1 59.5 306 50zM289.7 176c-.6 0-1.1 0-1.7 0c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48c0 8.1-2 15.8-5.6 22.5l71.3 114.1c45.8-17.7 99.8-8.2 136.8 28.9c50 50 50 131 0 181c-43 43-109 49-158.4 18c-11.2-7-14.6-21.8-7.6-33.1s21.8-14.6 33.1-7.6c30.9 19.3 72.1 15.5 99-11.3c31.2-31.2 31.2-81.9 0-113.1c-26.8-26.8-68.1-30.6-99-11.3c-5.4 3.4-11.9 4.5-18.1 3s-11.6-5.3-15-10.7L289.7 176zM448 432c-17.8 0-33.3-9.7-41.6-24H253.8c-9.2 48.3-46 88.9-97 100.7c-68.9 15.9-137.6-27-153.5-95.9C-11 351 22.1 289.4 78.7 265.8c12.2-5.1 26.3 .7 31.4 12.9s-.7 26.3-12.9 31.4c-35.4 14.7-56 53.3-47.1 91.8c9.9 43.1 52.9 69.9 95.9 60c37-8.5 62.1-41.5 62-77.9c0-6.4 2.5-12.5 7-17s10.6-7 17-7H406.4c8.3-14.3 23.8-24 41.6-24c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faBlindsOpen = {\n prefix: 'fas',\n iconName: 'blinds-open',\n icon: [512, 512, [], \"f8fc\", \"M0 32C0 14.3 14.3 0 32 0H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H160v64 64 66.7c13.6 4.8 24.4 15.6 29.3 29.3c.1 .3 .2 .7 .4 1c1.5 4.7 2.4 9.7 2.4 15c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16c4.8-13.6 15.6-24.4 29.3-29.3V192 128 64H32C14.3 64 0 49.7 0 32zm47.4 96H96v64H17.8C8 192 0 184 0 174.2c0-4 1.4-7.9 3.9-11.1L22.4 140c6.1-7.6 15.3-12 25-12zm0 160H65.6c-1 5.2-1.6 10.5-1.6 16c0 18 6 34.6 16 48H17.8C8 352 0 344 0 334.2c0-4 1.4-7.9 3.9-11.1L22.4 300c6.1-7.6 15.3-12 25-12zm446.9 64H208c10-13.4 16-30 16-48c0-5.5-.6-10.8-1.6-16H464.6c9.7 0 18.9 4.4 25 12l18.5 23.1c2.5 3.2 3.9 7.1 3.9 11.1c0 9.8-8 17.8-17.8 17.8zm0-160H192V128H464.6c9.7 0 18.9 4.4 25 12l18.5 23.1c2.5 3.2 3.9 7.1 3.9 11.1c0 9.8-8 17.8-17.8 17.8zM17.8 512C8 512 0 504 0 494.2c0-4 1.4-7.9 3.9-11.1L22.4 460c6.1-7.6 15.3-12 25-12H464.6c9.7 0 18.9 4.4 25 12l18.5 23.1c2.5 3.2 3.9 7.1 3.9 11.1c0 9.8-8 17.8-17.8 17.8H17.8z\"]\n};\nvar faFence = {\n prefix: 'fas',\n iconName: 'fence',\n icon: [512, 512, [], \"e303\", \"M76.8 38.4C73.8 34.4 69 32 64 32s-9.8 2.4-12.8 6.4L6.4 98.1C2.2 103.7 0 110.4 0 117.3V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V416h32V352H128V224h32V160H128V117.3c0-6.9-2.2-13.7-6.4-19.2L76.8 38.4zm192 0c-3-4-7.8-6.4-12.8-6.4s-9.8 2.4-12.8 6.4L198.4 98.1c-4.2 5.5-6.4 12.3-6.4 19.2V448c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V416h32V352H320V224h32V160H320V117.3c0-6.9-2.2-13.7-6.4-19.2L268.8 38.4zM448 32c-5 0-9.8 2.4-12.8 6.4L390.4 98.1c-4.2 5.5-6.4 12.3-6.4 19.2V448c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V117.3c0-6.9-2.2-13.7-6.4-19.2L460.8 38.4c-3-4-7.8-6.4-12.8-6.4z\"]\n};\nvar faUp = {\n prefix: 'fas',\n iconName: 'up',\n icon: [384, 512, [\"arrow-alt-up\"], \"f357\", \"M169.4 41.4c12.5-12.5 32.8-12.5 45.3 0l160 160c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H256V440c0 22.1-17.9 40-40 40H168c-22.1 0-40-17.9-40-40V256H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l160-160z\"]\n};\nvar faArrowAltUp = faUp;\nvar faBroomBall = {\n prefix: 'fas',\n iconName: 'broom-ball',\n icon: [576, 512, [\"quidditch\", \"quidditch-broom-ball\"], \"f458\", \"M566.6 9.4c12.5 12.5 12.5 32.8 0 45.3l-192 192 34.7 34.7c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H364.3L256 211.7V182.6c0-12.5 10.1-22.6 22.6-22.6c6 0 11.8 2.4 16 6.6l34.7 34.7 192-192c12.5-12.5 32.8-12.5 45.3 0zm-344 225.5L341.1 353.4c3.7 42.7-11.7 85.2-42.3 115.8C271.4 496.6 234.2 512 195.5 512L22.1 512C9.9 512 0 502.1 0 489.9c0-6.3 2.7-12.3 7.3-16.5L133.7 359.7c4.2-3.7-.4-10.4-5.4-7.9L77.2 377.4c-6.1 3-13.2-1.4-13.2-8.2c0-31.5 12.5-61.7 34.8-84l8-8c30.6-30.6 73.1-45.9 115.8-42.3zM464 352a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faQuidditch = faBroomBall;\nvar faQuidditchBroomBall = faBroomBall;\nvar faDrumstick = {\n prefix: 'fas',\n iconName: 'drumstick',\n icon: [512, 512, [127831], \"f6d6\", \"M150.6 287.8c6-6 9.4-14.1 9.4-22.6V176C160 78.8 238.8 0 336 0s176 78.8 176 176s-78.8 176-176 176H246.8c-8.5 0-16.6 3.4-22.6 9.4l-26.8 26.8c-12.3 12.3-11.4 32.5-7.2 49.4c1.1 4.6 1.8 9.5 1.8 14.5c0 33.1-26.9 60-60 60s-60-26.9-60-60c0-6.3-5.7-12-12-12c-33.1 0-60-26.9-60-60s26.9-60 60-60c5 0 9.8 .6 14.5 1.8c16.9 4.2 37.1 5.2 49.4-7.2l26.8-26.8z\"]\n};\nvar faSquareV = {\n prefix: 'fas',\n iconName: 'square-v',\n icon: [448, 512, [], \"e284\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm77.5 125.3L224 322.3l82.5-165.1c5.9-11.9 20.3-16.7 32.2-10.7s16.7 20.3 10.7 32.2l-104 208c-4.1 8.1-12.4 13.3-21.5 13.3s-17.4-5.1-21.5-13.3l-104-208c-5.9-11.9-1.1-26.3 10.7-32.2s26.3-1.1 32.2 10.7z\"]\n};\nvar faFaceAwesome = {\n prefix: 'fas',\n iconName: 'face-awesome',\n icon: [512, 512, [\"gave-dandy\"], \"e409\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm203.5-95.6c-5.6 9.4-15.8 15.6-27.5 15.6c-17.7 0-32-14.3-32-32c0-9.1 3.8-17.4 10-23.2c-3.3-.5-6.6-.8-10-.8c-35.3 0-64 28.7-64 64v10.3c0 16.4 13.3 29.7 29.7 29.7h68.6c16.4 0 29.7-13.3 29.7-29.7V184c0-8.3-1.6-16.3-4.5-23.6zM384 176c-17.7 0-32-14.3-32-32c0-8.5 3.3-16.3 8.8-22c-5.4-1.3-11-2-16.8-2c-39.8 0-72 32.2-72 72v7.5c0 13.5 11 24.5 24.5 24.5h95.1c13.5 0 24.5-11 24.5-24.5V192c0-10.4-2.2-20.2-6.1-29.1c-5.8 8-15.2 13.1-25.9 13.1zM245.5 447.8c2.7 .1 5.4 .2 8.1 .2h4.9c55.1 0 105.1-26.1 137-67.5c0 0 0 0 0 0c15.7-20.5 27-44.6 32.4-71.3c2.2-11-6.2-21.2-17.4-21.2h0H101.6h0c-11.2 0-19.6 10.2-17.4 21.2c15.6 78.1 82.4 135 161.2 138.6zm-5.4-32.5c1.5-44.1 37.8-79.4 82.2-79.4c19.9 0 38.1 7 52.3 18.7C349 392.1 306.1 416 258.4 416h-4.9c-4.6 0-9.1-.2-13.5-.6z\"]\n};\nvar faGaveDandy = faFaceAwesome;\nvar faDialOff = {\n prefix: 'fas',\n iconName: 'dial-off',\n icon: [576, 512, [], \"e162\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM448 288c0 80.2-59 146.6-136 158.2V288c0-13.3-10.7-24-24-24s-24 10.7-24 24V446.2c-77-11.6-136-78-136-158.2c0-88.4 71.6-160 160-160s160 71.6 160 160zm64 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 96a32 32 0 1 1 64 0A32 32 0 1 1 64 96zM480 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 480a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm416-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 128c70.7 0 128 57.3 128 128s-57.3 128-128 128H192c-70.7 0-128-57.3-128-128s57.3-128 128-128H384zM576 256c0-106-86-192-192-192H192C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192zM192 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faFaceSmileHorns = {\n prefix: 'fas',\n iconName: 'face-smile-horns',\n icon: [640, 512, [], \"e391\", \"M320 512c141.4 0 256-114.6 256-256c0-24.6-3.5-48.4-9.9-70.9c44.3-59.4 67.4-135 73.6-166c1.3-6.3-1.4-12.8-6.8-16.4s-12.4-3.6-17.8 0c-19.3 12.9-48.5 24.2-78.4 33.1c-23.3 7-46 12.2-63 15.5C430.9 19.1 377.7 0 320 0S209.1 19.1 166.2 51.3c-17-3.3-39.7-8.6-63-15.5C73.4 26.9 44.2 15.5 24.9 2.7C19.5-.9 12.5-.9 7.1 2.7S-1 12.8 .3 19.1c6.2 31 29.3 106.6 73.6 166C67.5 207.6 64 231.4 64 256c0 141.4 114.6 256 256 256zM228.1 349.5C246 370.2 276.6 392 320 392s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C413.8 396.1 375.1 424 320 424s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM272.4 272c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-8.8 3.6-16.8 9.3-22.6l-30.7-10.2c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1l96 32c8.4 2.8 12.9 11.9 10.1 20.2s-11.9 12.9-20.2 10.1l-10.9-3.6c.2 1.5 .3 2.9 .3 4.4zm128 32c-17.7 0-32-14.3-32-32c0-1.6 .1-3.2 .3-4.7l-11.7 3.9c-8.4 2.8-17.4-1.7-20.2-10.1s1.7-17.4 10.1-20.2l96-32c8.4-2.8 17.4 1.7 20.2 10.1s-1.7 17.4-10.1 20.2l-30.2 10.1c5.9 5.8 9.5 13.9 9.5 22.8c0 17.7-14.3 32-32 32z\"]\n};\nvar faBoxArchive = {\n prefix: 'fas',\n iconName: 'box-archive',\n icon: [512, 512, [\"archive\"], \"f187\", \"M32 32H480c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H32C14.3 128 0 113.7 0 96V64C0 46.3 14.3 32 32 32zm0 128H480V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V160zm128 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faArchive = faBoxArchive;\nvar faGrapes = {\n prefix: 'fas',\n iconName: 'grapes',\n icon: [512, 512, [], \"e306\", \"M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM304 152a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zM112 232a56 56 0 1 0 0-112 56 56 0 1 0 0 112zm32 80A56 56 0 1 0 32 312a56 56 0 1 0 112 0zM112 456A56 56 0 1 0 0 456a56 56 0 1 0 112 0zm144-32a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm80 32a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM280 288a56 56 0 1 0 -112 0 56 56 0 1 0 112 0zm80 32a56 56 0 1 0 0-112 56 56 0 1 0 0 112z\"]\n};\nvar faPersonDrowning = {\n prefix: 'fas',\n iconName: 'person-drowning',\n icon: [576, 512, [], \"e545\", \"M192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V96.2c0 54.1 23.5 104 62.2 138.3l-21 146.7c7.8 2.1 15.5 3.3 22.8 3.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c12.4 8.5 26.1 14.8 39.7 18l17.7-97.6c10.7-1.2 21.3-3.1 31.9-5.5l105-23.9c17.2-3.9 28-21.1 24.1-38.3s-21.1-28-38.3-24.1L400 216.6c-41 9.3-83.7 7.5-123.7-5.2c-50.2-16-84.3-62.6-84.3-115.3V64zM320 192a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM306.5 389.9c-11.1-7.9-25.9-7.9-37 0C247 405.4 219.5 416 192 416c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 469.7 159 480 192 480c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 405.2 410.9 416 384 416c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faDialMax = {\n prefix: 'fas',\n iconName: 'dial-max',\n icon: [576, 512, [], \"e15e\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM401.4 174.7c56.7 56.7 61.9 145.4 15.7 208L305.2 270.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L383.2 416.7c-62.6 46.2-151.3 41-208-15.7c-62.5-62.5-62.5-163.8 0-226.3s163.8-62.5 226.3 0zM512 288a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 96a32 32 0 1 1 64 0A32 32 0 1 1 64 96zM480 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 480a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm416-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCircleM = {\n prefix: 'fas',\n iconName: 'circle-m',\n icon: [512, 512, [], \"e115\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM171.5 137.9L256 255l84.5-117.1c6.1-8.4 16.9-12 26.8-8.8s16.6 12.4 16.6 22.8V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V226.2l-60.5 83.8c-4.5 6.2-11.7 9.9-19.5 9.9s-14.9-3.7-19.5-9.9L176 226.2V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-10.4 6.7-19.6 16.6-22.8s20.7 .3 26.8 8.8z\"]\n};\nvar faCalendarImage = {\n prefix: 'fas',\n iconName: 'calendar-image',\n icon: [448, 512, [], \"e0d4\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192zM147.2 360.7c6.5-8.4 19.1-8.3 25.5 .2L184 376l58.3-84.2c6.5-9.4 20.5-9.1 26.7 .5l83.4 131.1c6.8 10.6-.9 24.6-13.5 24.6H112.5c-13.3 0-20.8-15.2-12.7-25.8l47.3-61.5zM128 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCircleCaretDown = {\n prefix: 'fas',\n iconName: 'circle-caret-down',\n icon: [512, 512, [\"caret-circle-down\"], \"f32d\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zm0 368c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nvar faCaretCircleDown = faCircleCaretDown;\nvar faArrowDown91 = {\n prefix: 'fas',\n iconName: 'arrow-down-9-1',\n icon: [576, 512, [\"sort-numeric-desc\", \"sort-numeric-down-alt\"], \"f886\", \"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM450.7 294c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V416H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V320c0-10.3-4.9-19.9-13.3-26zM418.3 91a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 91zM405.1 203.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericDesc = faArrowDown91;\nvar faSortNumericDownAlt = faArrowDown91;\nvar faFaceGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM116 141.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongueSquint = faFaceGrinTongueSquint;\nvar faShishKebab = {\n prefix: 'fas',\n iconName: 'shish-kebab',\n icon: [512, 512, [], \"f821\", \"M438.6 73.4c-12.5-12.5-32.8-12.5-45.3 0c-8.5 8.5-11.3 20.7-8.1 31.7c3.2 10.9 5.6 24.2 4.5 38c-1.1 14-5.9 30.3-19.1 43.4L346.2 211 301 165.8l24.4-24.4c.2-.3 .5-1.3 .6-3.2c.3-3.8-.3-9.1-2.1-15.2c-9.5-32.5-1.5-69.2 24.3-94.9c37.5-37.5 98.3-37.5 135.8 0c31.4 31.4 36.5 79.2 15.3 115.9c-8.8 15.3-28.4 20.5-43.7 11.7s-20.5-28.4-11.7-43.7c7.1-12.2 5.3-28.2-5.1-38.6zM61.8 405L107 450.2 54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L61.8 405zM325.3 141.5a.1 .1 0 1 0 -.1-.2 .1 .1 0 1 0 .1 .2zM233 143L369 279c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0L151 225c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0zM87 255c9.4-9.4 24.6-9.4 33.9 0L257 391c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0L39 337c-9.4-9.4-9.4-24.6 0-33.9l48-48z\"]\n};\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M128 0h64c17.7 0 32 14.3 32 32v96H96V32c0-17.7 14.3-32 32-32zM0 256c0-53 43-96 96-96H224c53 0 96 43 96 96V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V256zm240 80A80 80 0 1 0 80 336a80 80 0 1 0 160 0zM256 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM448 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faAlarmSnooze = {\n prefix: 'fas',\n iconName: 'alarm-snooze',\n icon: [512, 512, [], \"f845\", \"M160 25.4C143 9.6 120.2 0 95.2 0C42.6 0 0 42.6 0 95.2c0 18.8 5.5 36.3 14.9 51.1L160 25.4zM256 512c50.3 0 96.8-16.6 134.2-44.6l35.2 35.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-35.2-35.2c28-37.4 44.6-83.8 44.6-134.2C480 164.3 379.7 64 256 64S32 164.3 32 288c0 50.3 16.6 96.8 44.6 134.2L41.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l35.2-35.2c37.4 28 83.8 44.6 134.1 44.6zM497.1 146.4C506.5 131.6 512 114 512 95.2C512 42.6 469.4 0 416.8 0C391.8 0 369 9.6 352 25.4L497.1 146.4zM200 192H312c9.2 0 17.5 5.2 21.6 13.5s3 18-2.6 25.3L249.1 336H312c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-9.2 0-17.5-5.2-21.6-13.5s-3-18 2.6-25.3L262.9 240H200c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faScarecrow = {\n prefix: 'fas',\n iconName: 'scarecrow',\n icon: [448, 512, [], \"f70d\", \"M320 96c0 11.2-1.9 22-5.5 32H416c5.9 0 11.3 3.2 14.1 8.5s2.5 11.5-.8 16.4l-7.6 11.4 19.9 14.9c4 3 6.4 7.8 6.4 12.8s-2.4 9.8-6.4 12.8l-19.9 14.9 7.6 11.4c3.3 4.9 3.6 11.2 .8 16.4s-8.2 8.5-14.1 8.5H343c-10.1 0-17.7 9.2-15.7 19.1l24.3 121.7c1.2 6.2-1.2 12.5-6.3 16.1s-11.8 4-17.3 .9L287.9 391c-4.9-2.8-11-2.8-15.9 0l-40.1 22.9c-4.9 2.8-11 2.8-15.9 0L175.9 391c-4.9-2.8-11-2.8-15.9 0l-40.1 22.9c-5.4 3.1-12.2 2.8-17.3-.9s-7.6-10-6.3-16.1l24.3-121.7c2-9.9-5.6-19.1-15.7-19.1H32c-5.9 0-11.3-3.2-14.1-8.5s-2.5-11.5 .8-16.4l7.6-11.4L6.4 204.8C2.4 201.8 0 197 0 192s2.4-9.8 6.4-12.8l19.9-14.9-7.6-11.4c-3.3-4.9-3.6-11.2-.8-16.4s8.2-8.5 14.1-8.5H133.5c-3.5-10-5.5-20.8-5.5-32c0-53 43-96 96-96s96 43 96 96zM208 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 32a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM192 480V427.8l12.2 6.9c12.3 7 27.4 7 39.7 0l12.2-6.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M288 64v64H416L368 64H288zM419.2 25.6L496 128h80c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64H288c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H224V48c0-26.5 21.5-48 48-48h96c20.1 0 39.1 9.5 51.2 25.6zM152 256h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.7 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.3 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.3 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.8 3.7-14.1 6.8-21.7 9C190.1 503.1 180.1 512 168 512H152c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2L63.8 468.9c-8.6-8.6-9.3-21.9-2.3-31.3c-3.7-6.9-6.8-14.1-9-21.8C40.9 414.1 32 404.1 32 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.3-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9c1.7-11.6 11.7-20.6 23.8-20.6zm8 176a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM448.2 276.6c1.7-11.6 11.7-20.6 23.8-20.6h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.8 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.2 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.2 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.9 3.7-14.1 6.8-21.8 9C510.1 503.1 500.1 512 488 512H472c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2l-11.3-11.3c-8.6-8.6-9.3-21.9-2.2-31.3c-3.7-6.9-6.8-14.1-9-21.8C360.9 414.1 352 404.1 352 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.2-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9zM528 384a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faGiftCard = {\n prefix: 'fas',\n iconName: 'gift-card',\n icon: [576, 512, [], \"f663\", \"M353.5 68.8C361.1 55.9 374.9 48 389.8 48H392c22.1 0 40 17.9 40 40s-17.9 40-40 40H320h-1.3l34.8-59.2zm-131 0L257.3 128H256 184c-22.1 0-40-17.9-40-40s17.9-40 40-40h2.2c14.9 0 28.8 7.9 36.3 20.8zm89.6-24.3L288 85.5l-24.1-41C247.7 16.9 218.1 0 186.2 0H184C135.4 0 96 39.4 96 88c0 14.4 3.5 28 9.6 40H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H470.4c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88h-2.2c-31.9 0-61.5 16.9-77.7 44.4zM512 384v64H64V384H512zm0-64H64V192H230.1l-40.5 48.6c-8.5 10.2-7.1 25.3 3.1 33.8s25.3 7.1 33.8-3.1L288 197.5l61.6 73.9c8.5 10.2 23.6 11.6 33.8 3.1s11.6-23.6 3.1-33.8L345.9 192H512V320z\"]\n};\nvar faW = {\n prefix: 'fas',\n iconName: 'w',\n icon: [576, 512, [119], \"57\", \"M20.8 34c16.5-6.2 35 2.2 41.2 18.7l110.2 294L257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23l85.1 291.7L514 52.8c6.2-16.5 24.6-24.9 41.2-18.7s24.9 24.7 18.7 41.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"]\n};\nvar faCodePullRequestDraft = {\n prefix: 'fas',\n iconName: 'code-pull-request-draft',\n icon: [448, 512, [], \"e3fa\", \"M56 80a24 24 0 1 1 48 0A24 24 0 1 1 56 80zm56 73.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3V358.7C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V153.3zM56 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm312-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0 104a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM416 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM368 288a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faSquareB = {\n prefix: 'fas',\n iconName: 'square-b',\n icon: [448, 512, [], \"e264\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 120c0-13.3 10.7-24 24-24h92c42 0 76 34 76 76c0 16.2-5.1 31.3-13.8 43.7C324.3 261.6 336 283.4 336 308c0 42-34 76-76 76H152c-13.3 0-24-10.7-24-24V256 152zm144 52c0-15.5-12.5-28-28-28H176v56h68c15.5 0 28-12.5 28-28zM176 336h84c15.5 0 28-12.5 28-28s-12.5-28-28-28H244 176v56z\"]\n};\nvar faElephant = {\n prefix: 'fas',\n iconName: 'elephant',\n icon: [640, 512, [128024], \"f6da\", \"M304 0C242.1 0 192 50.1 192 112s50.1 112 112 112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-79.5 0-144-64.5-144-144c0-25.3 6.5-49.1 18-69.8c-20.5 7-39.4 17.3-56.1 30.4C67.4 111.9 32 175.8 32 248v19c0 12.4-1.2 24.7-3.7 36.9c-1.9 9.3-5.8 18-11.4 25.6L4.8 345.6c-8 10.6-5.8 25.6 4.8 33.6s25.6 5.8 33.6-4.8l12.1-16.2c3.2-4.3 6.1-8.8 8.7-13.5V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V410c15.3 3.9 31.4 6 48 6s32.7-2.1 48-6v70c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V340.7c16.7 18.9 38.8 32.8 64 39.3v18.6c0 45 36.5 81.4 81.4 81.4c30.8 0 59-17.4 72.8-45l2.3-4.7c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3l-2.3 4.7c-3 5.9-9 9.6-15.6 9.6c-9.6 0-17.4-7.8-17.4-17.4V380c22.9-5.9 43.4-18 59.4-34.4c6.2-6.3 6.1-16.4-.2-22.6c-6.3-6.2-16.3-6.1-22.5 .1c-1.3 1.3-2.6 2.6-4 3.9c-1.5 1.4-3.1 2.7-4.6 4c-8.3 6.7-17.8 12-28 15.6v0c-10 3.5-20.8 5.5-32 5.5s-22-1.9-32-5.5v0c-7.5-2.6-14.6-6.2-21.1-10.5h0c-9.1-6.1-17.2-13.7-23.7-22.4c-5.3-7.1-3.9-17.1 3.2-22.4s17.1-3.9 22.4 3.2C472.5 310 491.1 320 512 320c11.7 0 22.6-3.1 32-8.6V192c0-88.4-71.6-160-160-160h-1.6C362.2 12.2 334.5 0 304 0zM464 192a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faEarthAfrica = {\n prefix: 'fas',\n iconName: 'earth-africa',\n icon: [512, 512, [127757, \"globe-africa\"], \"f57c\", \"M177.8 63.2l10 17.4c2.8 4.8 4.2 10.3 4.2 15.9v41.4c0 3.9 1.6 7.7 4.3 10.4c6.2 6.2 16.5 5.7 22-1.2l13.6-17c4.7-5.9 12.9-7.7 19.6-4.3l15.2 7.6c3.4 1.7 7.2 2.6 11 2.6c6.5 0 12.8-2.6 17.4-7.2l3.9-3.9c2.9-2.9 7.3-3.6 11-1.8l29.2 14.6c7.8 3.9 12.6 11.8 12.6 20.5c0 10.5-7.1 19.6-17.3 22.2l-35.4 8.8c-7.4 1.8-15.1 1.5-22.4-.9l-32-10.7c-3.3-1.1-6.7-1.7-10.2-1.7c-7 0-13.8 2.3-19.4 6.5L176 212c-10.1 7.6-16 19.4-16 32v28c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16v48c0 17.7 14.3 32 32 32c10.1 0 19.6-4.7 25.6-12.8l25.6-34.1c8.3-11.1 12.8-24.6 12.8-38.4V318.6c0-3.9 2.6-7.3 6.4-8.2l5.3-1.3c11.9-3 20.3-13.7 20.3-26c0-7.1-2.8-13.9-7.8-18.9l-33.5-33.5c-3.7-3.7-3.7-9.7 0-13.4c5.7-5.7 14.1-7.7 21.8-5.1l14.1 4.7c12.3 4.1 25.7-1.5 31.5-13c3.5-7 11.2-10.8 18.9-9.2l27.4 5.5C432 112.4 351.5 48 256 48c-27.7 0-54 5.4-78.2 15.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faGlobeAfrica = faEarthAfrica;\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [640, 512, [127752], \"f75b\", \"M320 96C178.6 96 64 210.6 64 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C0 175.3 143.3 32 320 32s320 143.3 320 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C576 210.6 461.4 96 320 96zm0 192c-35.3 0-64 28.7-64 64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-70.7 57.3-128 128-128s128 57.3 128 128v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-35.3-28.7-64-64-64zM160 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-123.7 100.3-224 224-224s224 100.3 224 224v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-88.4-71.6-160-160-160s-160 71.6-160 160z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z\"]\n};\nvar faTabletScreenButton = {\n prefix: 'fas',\n iconName: 'tablet-screen-button',\n icon: [448, 512, [\"tablet-alt\"], \"f3fa\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM256 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64H64V384H384V64z\"]\n};\nvar faTabletAlt = faTabletScreenButton;\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5v1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3v-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z\"]\n};\nvar faMessageQuestion = {\n prefix: 'fas',\n iconName: 'message-question',\n icon: [512, 512, [], \"e1e3\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm169.8 53.3l-.4 1.2c-4.4 12.5 2.1 26.2 14.6 30.6s26.2-2.1 30.6-14.6l.4-1.2c1.1-3.2 4.2-5.3 7.5-5.3h58.3c8.4 0 15.1 6.8 15.1 15.1c0 5.4-2.9 10.4-7.6 13.1l-44.3 25.4c-7.5 4.3-12.1 12.2-12.1 20.8V216c0 13.3 10.7 24 24 24c13.1 0 23.8-10.5 24-23.6l32.3-18.5c19.6-11.3 31.7-32.2 31.7-54.8c0-34.9-28.3-63.1-63.1-63.1H222.6c-23.7 0-44.8 14.9-52.8 37.3zM288 304a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [9729], \"f0c2\", \"M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z\"]\n};\nvar faTrowelBricks = {\n prefix: 'fas',\n iconName: 'trowel-bricks',\n icon: [512, 512, [], \"e58a\", \"M240.8 4.8C250.3 10.6 256 20.9 256 32v72h89c3.6-13.8 16.1-24 31-24h88c26.5 0 48 21.5 48 48s-21.5 48-48 48H376c-14.9 0-27.4-10.2-31-24H256v72c0 11.1-5.7 21.4-15.2 27.2s-21.2 6.4-31.1 1.4l-192-96C6.8 151.2 0 140.1 0 128s6.8-23.2 17.7-28.6l192-96c9.9-5 21.7-4.4 31.1 1.4zM288 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V256zM32 384h96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32zm192 0H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32z\"]\n};\nvar faSquare3 = {\n prefix: 'fas',\n iconName: 'square-3',\n icon: [448, 512, [], \"e258\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 96H280c9.9 0 18.8 6.1 22.4 15.3s1.1 19.7-6.2 26.4l-50.8 46.5c41.9 4.8 74.6 40.4 74.6 83.6c0 46.5-37.7 84.2-84.2 84.2H208c-30.1 0-58.1-15.6-73.9-41.2l-2.6-4.2c-7-11.3-3.5-26.1 7.8-33s26.1-3.5 33 7.8l2.6 4.2c7.1 11.5 19.6 18.4 33 18.4h27.8c20 0 36.2-16.2 36.2-36.2c0-20.1-16.3-36.3-36.4-36.2l-51.5 .3c-9.9 .1-18.9-6-22.5-15.2s-1.2-19.8 6.1-26.5L218.3 176H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faFaceFlushed = {\n prefix: 'fas',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM176 384c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16s-7.2-16-16-16H192c-8.8 0-16 7.2-16 16zm-16-88a72 72 0 1 0 0-144 72 72 0 1 0 0 144zm264-72a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zm-288 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm192 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faFlushed = faFaceFlushed;\nvar faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [576, 512, [], \"f80d\", \"M48 0C21.5 0 0 21.5 0 48V256H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v64H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v80c0 26.5 21.5 48 48 48H265.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM152 64h16c8.8 0 16 7.2 16 16v24h24c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H184v24c0 8.8-7.2 16-16 16H152c-8.8 0-16-7.2-16-16V152H112c-8.8 0-16-7.2-16-16V120c0-8.8 7.2-16 16-16h24V80c0-8.8 7.2-16 16-16zM512 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM288 477.1c0 19.3 15.6 34.9 34.9 34.9H541.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H381.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faMicrowave = {\n prefix: 'fas',\n iconName: 'microwave',\n icon: [576, 512, [], \"e01b\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64c0 17.7-14.3 32-32 32s-32-14.3-32-32H128c0 17.7-14.3 32-32 32s-32-14.3-32-32c-35.3 0-64-28.7-64-64V96zm96 56V328c0 13.3 10.7 24 24 24H392c13.3 0 24-10.7 24-24V152c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24zm400-40c-8.8 0-16 7.2-16 16V352c0 8.8 7.2 16 16 16s16-7.2 16-16V128c0-8.8-7.2-16-16-16z\"]\n};\nvar faChfSign = {\n prefix: 'fas',\n iconName: 'chf-sign',\n icon: [640, 512, [], \"e602\", \"M0 113.4C0 68.5 36.5 32 81.4 32c30.8 0 59 17.4 72.8 45l2.3 4.7c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L97 105.6c-3-5.9-9-9.6-15.6-9.6C71.8 96 64 103.8 64 113.4V398.6c0 9.6 7.8 17.4 17.4 17.4c6.6 0 12.6-3.7 15.6-9.6l2.3-4.7c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.3 4.7c-13.8 27.6-42 45-72.8 45C36.5 480 0 443.5 0 398.6V113.4zM224 32c17.7 0 32 14.3 32 32V224h96V64c0-17.7 14.3-32 32-32s32 14.3 32 32V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288H256V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64c0-17.7 14.3-32 32-32zM448 64c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H512V224h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H512V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64z\"]\n};\nvar faTentArrowLeftRight = {\n prefix: 'fas',\n iconName: 'tent-arrow-left-right',\n icon: [576, 512, [], \"e57f\", \"M488.1 6.2c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9L489.5 72 86.5 72l33.5-30.2c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120l402.9 0-33.5 30.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faCartCircleArrowUp = {\n prefix: 'fas',\n iconName: 'cart-circle-arrow-up',\n icon: [640, 512, [], \"e3f0\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H76.1l60.3 316.5c2.2 11.3 12.1 19.5 23.6 19.5H320.7c-.5-5.3-.7-10.6-.7-16c0-10.9 1-21.6 2.9-32h-143l-9.1-48H339.2c29.1-57 88.4-96 156.8-96c14.3 0 28.3 1.7 41.6 4.9l35-124.3C578.3 52.3 563 32 541.8 32H122l-2.4-12.5C117.4 8.2 107.5 0 96 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM496 224a144 144 0 1 0 0 288 144 144 0 1 0 0-288zM428.7 371.3c-6.2-6.2-6.2-16.4 0-22.6l56-56c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L512 342.6V432c0 8.8-7.2 16-16 16s-16-7.2-16-16V342.6l-28.7 28.7c-6.2 6.2-16.4 6.2-22.6 0z\"]\n};\nvar faTrashClock = {\n prefix: 'fas',\n iconName: 'trash-clock',\n icon: [576, 512, [], \"e2b0\", \"M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H330.8C285.6 480.1 256 427.5 256 368c0-90.4 68.2-164.9 155.9-174.9L416 128zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM432 288c8.8 0 16 7.2 16 16v48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [\"legal\"], \"f0e3\", \"M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z\"]\n};\nvar faLegal = faGavel;\nvar faSprinklerCeiling = {\n prefix: 'fas',\n iconName: 'sprinkler-ceiling',\n icon: [384, 512, [], \"e44c\", \"M0 0V96c0 15.3 10.8 28.4 25.7 31.4L128 147.8V82.6L64 69.8V0H0zM256 82.6v65.3l102.3-20.5c15-3 25.7-16.1 25.7-31.4V0H320V69.8L256 82.6zM160 344a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm-48 64a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM24 496a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM272 344a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm-80 88a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-32 40a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm136-40a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-24 40a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V64z\"]\n};\nvar faBrowsers = {\n prefix: 'fas',\n iconName: 'browsers',\n icon: [576, 512, [], \"e0cb\", \"M160 0C124.7 0 96 28.7 96 64V352c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H160zM280 72H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H280c-13.3 0-24-10.7-24-24s10.7-24 24-24zM224 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V376c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faTrillium = {\n prefix: 'fas',\n iconName: 'trillium',\n icon: [448, 512, [], \"e588\", \"M128 160c0-64.1 61.6-128.2 86.1-151.1c5.6-5.3 14.1-5.3 19.8 0c24.5 23 86.1 87 86.1 151.1c0 15.7-3.7 30.4-10.4 43.5c16.2 0 32.6 4.2 47.7 12.9c55.5 32 80.2 117.4 87.8 150.2c1.8 7.5-2.5 14.9-9.9 17.1c-32.1 9.7-118.4 31.1-173.9-1c-16.6-9.6-29.2-23.3-37.4-39.2c-8.1 15.9-20.8 29.6-37.4 39.2c-55.5 32-141.8 10.7-173.9 1c-7.4-2.2-11.6-9.6-9.9-17.1c7.6-32.7 32.3-118.1 87.8-150.2c15.1-8.7 31.6-12.9 47.8-12.9C131.7 190.4 128 175.7 128 160zm136 80a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm88-80v0c0-12.5-1.8-24.8-4.8-36.6c38.6-12.8 68.2-11.9 83-10c14.9 1.9 23.7 17.1 17.9 31c-5.6 13.3-19 38.4-47.7 64.6c-8.1-7.7-17.1-14.6-27-20.3l0 0c-7.3-4.2-14.9-7.6-22.6-10.3c.9-6 1.3-12.1 1.3-18.4zM100.8 123.4c-3 11.8-4.8 24.1-4.8 36.6c0 6.2 .4 12.3 1.3 18.3c-7.8 2.7-15.4 6.1-22.7 10.3l0 0c-9.9 5.7-18.8 12.6-26.9 20.2C19 182.7 5.6 157.6 0 144.3c-5.8-13.8 3-29.1 17.9-31c14.7-1.9 44.4-2.8 83 10zm73.3 299.4c9.8-3.1 19.4-7.2 28.5-12.5c7.8-4.5 14.9-9.7 21.4-15.4c6.5 5.8 13.6 11 21.4 15.4c9.2 5.3 18.8 9.4 28.6 12.5c-8.2 36.1-22.6 61.6-31 74.2c-9.1 13.7-28.8 13.7-37.9 0c-8.3-12.6-22.8-38.2-31-74.3z\"]\n};\nvar faMusicSlash = {\n prefix: 'fas',\n iconName: 'music-slash',\n icon: [640, 512, [], \"f8d1\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-71.5-56C569.8 400.2 576 384.7 576 368V104 32c0-10.1-4.8-19.6-12.9-25.7s-18.6-7.9-28.3-5l-320 96c-12.7 3.8-21.6 14.9-22.7 27.9L38.8 5.1zM300.7 210.4L512 147V292.6c-10-2.9-20.8-4.6-32-4.6c-22.2 0-42.6 6.3-58.8 16.8L300.7 210.4zM192 247.3V356.6c-10-3-20.8-4.6-32-4.6c-53 0-96 35.8-96 80s43 80 96 80s96-35.8 96-80V297.7l-64-50.4z\"]\n};\nvar faTruckRamp = {\n prefix: 'fas',\n iconName: 'truck-ramp',\n icon: [640, 512, [], \"f4e0\", \"M640 400V0H416c-35.3 0-64 28.7-64 64V353.8L31.6 441.1c-17.1 4.6-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5L416 402.7C417.5 463.3 467 512 528 512c61.9 0 112-50.1 112-112zM528 352a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M128 32h32c17.7 0 32 14.3 32 32V96H96V64c0-17.7 14.3-32 32-32zm64 96V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V388.9c0-34.6 9.4-68.6 27.2-98.3C40.9 267.8 49.7 242.4 53 216L60.5 156c2-16 15.6-28 31.8-28H192zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6c17.8 29.7 27.2 63.7 27.2 98.3V448c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V128h99.8zM320 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V96H320V64zm-32 64V288H224V128h64z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 21.2-5.1 41.1-14.2 58.7L416 300.8V96c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zM344 430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4z\"]\n};\nvar faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M92.5 0H208c40 0 52 24 64 48s24 48 64 48h85.2C436 96 448 108 448 122.8c0 3.4-.7 6.8-1.9 10L409.6 224 384 288H128l-16-64L64.9 35.4c-.6-2.3-.9-4.6-.9-6.9C64 12.8 76.8 0 92.5 0zM79 224l16 64H80c-8.8 0-16 7.2-16 16s7.2 16 16 16h48H384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H418.5l25.6-64H464c26.5 0 48 21.5 48 48V384H0V272c0-26.5 21.5-48 48-48H79zM0 416H512v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V416z\"]\n};\nvar faCircleC = {\n prefix: 'fas',\n iconName: 'circle-c',\n icon: [512, 512, [], \"e101\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z\"]\n};\nvar faStarChristmas = {\n prefix: 'fas',\n iconName: 'star-christmas',\n icon: [512, 512, [], \"f7d4\", \"M15.5 275.9L192 320l44.1 176.5c2.3 9.1 10.5 15.5 19.9 15.5s17.6-6.4 19.9-15.5L320 320l176.5-44.1c9.1-2.3 15.5-10.5 15.5-19.9s-6.4-17.6-15.5-19.9L320 192 275.9 15.5C273.6 6.4 265.4 0 256 0s-17.6 6.4-19.9 15.5L192 192 15.5 236.1C6.4 238.4 0 246.6 0 256s6.4 17.6 15.5 19.9zM71 71c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L105 71c-9.4-9.4-24.6-9.4-33.9 0zM441 71c-9.4-9.4-24.6-9.4-33.9 0l-48 48c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9zm0 336l-48-48c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9zM71 441c9.4 9.4 24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L71 407c-9.4 9.4-9.4 24.6 0 33.9z\"]\n};\nvar faChartBullet = {\n prefix: 'fas',\n iconName: 'chart-bullet',\n icon: [512, 512, [], \"e0e1\", \"M264 32c13.3 0 24 10.7 24 24v8H464c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H288v8c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H48c-26.5 0-48-21.5-48-48V112C0 85.5 21.5 64 48 64H240V56c0-13.3 10.7-24 24-24zM160 128v32h80V128H160zm128 0v32H448V128H288zm48 256V352H256v32h80zm0 64H48c-26.5 0-48-21.5-48-48V336c0-26.5 21.5-48 48-48H336v-8c0-13.3 10.7-24 24-24s24 10.7 24 24v8h80c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H384v8c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8zm48-96v32h64V352H384z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [127949], \"f21c\", \"M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h57.7l16.4 30.3L256 192l-45.3-45.3c-12-12-28.3-18.7-45.3-18.7H64c-17.7 0-32 14.3-32 32v32h96c88.4 0 160 71.6 160 160c0 11-1.1 21.7-3.2 32h70.4c-2.1-10.3-3.2-21-3.2-32c0-52.2 25-98.6 63.7-127.8l15.4 28.6C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L418.2 128H480c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H459.6c-7.5 0-14.7 2.6-20.5 7.4L391.7 78.9l-14-26c-7-12.9-20.5-21-35.2-21H280zM462.7 311.2l28.2 52.2c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-28.2-52.2c2.3-.3 4.7-.4 7.1-.4c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-15.5 5.5-29.7 14.7-40.8zM187.3 376c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c26.9 0 49.9 16.5 59.3 40h66.4C242.5 268.8 190.5 224 128 224C57.3 224 0 281.3 0 352s57.3 128 128 128c62.5 0 114.5-44.8 125.8-104H187.3zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faTreeChristmas = {\n prefix: 'fas',\n iconName: 'tree-christmas',\n icon: [448, 512, [127876], \"f7db\", \"M150.2 71l47.1-17.7L215 6.2c1.4-3.8 5-6.2 9-6.2s7.6 2.5 9 6.2l17.7 47.1L297.8 71c3.8 1.4 6.2 5 6.2 9s-2.5 7.6-6.2 9l-47.1 17.7L233 153.8c-1.4 3.8-5 6.2-9 6.2s-7.6-2.5-9-6.2l-17.7-47.1L150.2 89c-3.8-1.4-6.2-5-6.2-9s2.5-7.6 6.2-9zM263 165l11.8-31.5 144 180c3.4 4.2 5.2 9.4 5.2 14.8c0 13.1-10.6 23.7-23.7 23.7H368l76.2 122c2.5 4 3.8 8.5 3.8 13.2c0 13.7-11.1 24.9-24.9 24.9H24.9C11.1 512 0 500.9 0 487.1c0-4.7 1.3-9.2 3.8-13.2L80 352H47.7C34.6 352 24 341.4 24 328.3c0-5.4 1.8-10.6 5.2-14.8l144-180L185 165c6.1 16.2 21.6 27 39 27s32.9-10.8 39-27zM184 288a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM288 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faTireFlat = {\n prefix: 'fas',\n iconName: 'tire-flat',\n icon: [512, 512, [], \"f632\", \"M256 32C114.6 32 0 146.6 0 288c0 47.3 12.8 91.7 35.2 129.7C14.9 423.3 0 441.9 0 464c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48c0-22.1-14.9-40.7-35.2-46.3c22.4-38 35.2-82.4 35.2-129.7C512 146.6 397.4 32 256 32zm96 384c-2.1 1.6-4.3 3.2-6.6 4.7C319.9 437.9 289.1 448 256 448c-36 0-69.3-11.9-96-32c-38.9-29.2-64-75.7-64-128c0-88.4 71.6-160 160-160s160 71.6 160 160c0 52.3-25.1 98.8-64 128zm-96-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm16 95c44.3-5.5 81.5-33.6 99.8-72.4l-61.9-20.1c-8.6 13.5-22.1 23.5-38 27.6l0 65zM381.7 312.2c1.5-7.8 2.3-15.9 2.3-24.2c0-36.8-15.5-69.9-40.3-93.3l-38.2 52.6c9.1 11 14.5 25.2 14.5 40.6c0 1.4 0 2.7-.1 4l61.8 20.1zM256 224c8.3 0 16.3 1.6 23.6 4.5l38.2-52.6C299.5 165.8 278.4 160 256 160s-43.5 5.8-61.8 15.9l28.1 38.8 10 13.8c7.3-2.9 15.3-4.5 23.6-4.5zM128 288c0 8.3 .8 16.3 2.3 24.2L192.1 292c-.1-1.3-.1-2.7-.1-4c0-15.4 5.5-29.6 14.5-40.6l-10.1-13.9-28.1-38.7C143.5 218.1 128 251.2 128 288zm12.2 54.6c18.3 38.8 55.5 66.9 99.8 72.4l0-65c-15.8-4.1-29.3-14.1-37.9-27.5l-61.9 20.1z\"]\n};\nvar faSunglasses = {\n prefix: 'fas',\n iconName: 'sunglasses',\n icon: [576, 512, [128374], \"f892\", \"M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1 .1 0 0 0 0 0s0 0-6.3 12.7h0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7h40.6c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7h0c-6.3-12.7-6.3-12.7-6.3-12.7l0 0 0 0 .1 0 .2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7v6.7V352v16c0 61.9-50.1 112-112 112H419.7c-59.4 0-108.5-46.4-111.8-105.8L306.6 352H269.4l-1.2 22.2C264.9 433.6 215.8 480 156.3 480H112C50.1 480 0 429.9 0 368V352 310.7 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4V368l105.6-52.8c-10.7-1.9-22.2-3.2-33.9-3.2c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zm409.8-10.3c-10.5-1.9-21.9-3.1-33.4-3.1c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.3 41.2 102.3-51.1z\"]\n};\nvar faBadge = {\n prefix: 'fas',\n iconName: 'badge',\n icon: [512, 512, [], \"f335\", \"M340.9 51.1C324.8 20.7 292.8 0 256 0s-68.8 20.7-84.9 51.1C138.2 41 101 49 75 75s-34 63.3-23.9 96.1C20.7 187.2 0 219.2 0 256s20.7 68.8 51.1 84.9C41 373.8 49 411 75 437s63.3 34 96.1 23.9C187.2 491.3 219.2 512 256 512s68.8-20.7 84.9-51.1C373.8 471 411 463 437 437s34-63.3 23.9-96.1C491.3 324.8 512 292.8 512 256s-20.7-68.8-51.1-84.9C471 138.2 463 101 437 75s-63.3-34-96.1-23.9z\"]\n};\nvar faMessagePen = {\n prefix: 'fas',\n iconName: 'message-pen',\n icon: [512, 512, [\"comment-alt-edit\", \"message-edit\"], \"f4a4\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm340.8 59c-14.7-14.7-38.6-14.7-53.3 0L272.6 138l53.3 53.3 14.9-14.9c14.7-14.7 14.7-38.6 0-53.3zM178.1 232.5c-4.1 4.1-7 9.2-8.4 14.9L160.5 284c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l36.6-9.2c5.6-1.4 10.8-4.3 14.9-8.4l71.9-71.9L250 160.6l-71.9 71.9z\"]\n};\nvar faCommentAltEdit = faMessagePen;\nvar faMessageEdit = faMessagePen;\nvar faBellConcierge = {\n prefix: 'fas',\n iconName: 'bell-concierge',\n icon: [512, 512, [128718, \"concierge-bell\"], \"f562\", \"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24h16v33.3C119.6 157.2 32 252.4 32 368H480c0-115.6-87.6-210.8-200-222.7V112h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H256 216zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"]\n};\nvar faConciergeBell = faBellConcierge;\nvar faPenRuler = {\n prefix: 'fas',\n iconName: 'pen-ruler',\n icon: [512, 512, [\"pencil-ruler\"], \"f5ae\", \"M469.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L322.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM44.9 353.2L299.7 98.3 413.7 212.3 158.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2zM249.4 103.4L103.4 249.4 16 161.9c-18.7-18.7-18.7-49.1 0-67.9L94.1 16c18.7-18.7 49.1-18.7 67.9 0l19.8 19.8c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1l45.1 45.1zM408.6 262.6l45.1 45.1c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1L496 350.1c18.7 18.7 18.7 49.1 0 67.9L417.9 496c-18.7 18.7-49.1 18.7-67.9 0l-87.4-87.4L408.6 262.6z\"]\n};\nvar faPencilRuler = faPenRuler;\nvar faArrowProgress = {\n prefix: 'fas',\n iconName: 'arrow-progress',\n icon: [512, 512, [], \"e5df\", \"M448 128A64 64 0 1 0 448 0a64 64 0 1 0 0 128zM128 32C57.3 32 0 89.3 0 160s57.3 128 128 128H384c35.3 0 64 28.7 64 64c0 27.9-17.9 51.7-42.8 60.4c-11.5-17.1-31-28.4-53.2-28.4c-35.3 0-64 28.7-64 64s28.7 64 64 64c24.7 0 46.1-14 56.8-34.4C467.6 466.1 512 414.2 512 352c0-70.7-57.3-128-128-128H128c-35.3 0-64-28.7-64-64s28.7-64 64-64H256v14.1c0 9.9 8 17.9 17.9 17.9c4 0 7.8-1.3 11-3.8l60.8-47.3c4-3.1 6.3-7.9 6.3-12.9s-2.3-9.8-6.3-12.9L284.8 3.8c-3.1-2.4-7-3.8-11-3.8C264 0 256 8 256 17.9V32H128zm-8.6 384c-11.1-19.1-31.7-32-55.4-32c-35.3 0-64 28.7-64 64s28.7 64 64 64c23.7 0 44.4-12.9 55.4-32H160v14.1c0 9.9 8 17.9 17.9 17.9c4 0 7.8-1.3 11-3.8l60.8-47.3c4-3.1 6.3-7.9 6.3-12.9s-2.3-9.8-6.3-12.9l-60.8-47.3c-3.1-2.4-7-3.8-11-3.8c-9.9 0-17.9 8-17.9 17.9V416H119.4z\"]\n};\nvar faChessRookPiece = {\n prefix: 'fas',\n iconName: 'chess-rook-piece',\n icon: [320, 512, [\"chess-rook-alt\"], \"f448\", \"M67.4 384L80 264 49.4 233.4c-6-6-9.4-14.1-9.4-22.6V112c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v24c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V112c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v24c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V112c0-8.8 7.2-16 16-16h24c8.8 0 16 7.2 16 16v98.7c0 8.5-3.4 16.6-9.4 22.6L240 264l12.6 120H67.4zM136 280.9c0 3.9 3.2 7.1 7.1 7.1h33.8c3.9 0 7.1-3.2 7.1-7.1V248c0-13.3-10.7-24-24-24s-24 10.7-24 24v32.9zM20.8 473.6L64 416H256l43.2 57.6c3.1 4.2 4.8 9.2 4.8 14.4c0 13.3-10.7 24-24 24H40c-13.3 0-24-10.7-24-24c0-5.2 1.7-10.2 4.8-14.4z\"]\n};\nvar faChessRookAlt = faChessRookPiece;\nvar faSquareRoot = {\n prefix: 'fas',\n iconName: 'square-root',\n icon: [576, 512, [8730], \"f697\", \"M282.6 78.1c8-27.3 33-46.1 61.4-46.1H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H344L238.7 457c-3.6 12.3-14.1 21.2-26.8 22.8s-25.1-4.6-31.5-15.6L77.6 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H77.6c22.8 0 43.8 12.1 55.3 31.8l65.2 111.8L282.6 78.1z\"]\n};\nvar faAlbumCollectionCirclePlus = {\n prefix: 'fas',\n iconName: 'album-collection-circle-plus',\n icon: [640, 512, [], \"e48e\", \"M32 24c0 13.3 10.7 24 24 24H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H56C42.7 0 32 10.7 32 24zM48 160c-13.8 0-26.9 5.9-36 16.2S-1.3 200.3 .4 214l32 256c3 24 23.4 42 47.6 42H394.8c-18.9-13.3-35.1-30.3-47.5-49.9c-26.9 11.4-58 17.9-91.3 17.9C154.4 480 72 419.1 72 344s82.4-136 184-136c45.4 0 86.9 12.1 119 32.2c31.5-29.9 74.2-48.2 121-48.2c4.5 0 9 .2 13.4 .5c-2-5.9-5.2-11.5-9.4-16.3c-9.1-10.3-22.2-16.2-36-16.2H48zM256 376c17.7 0 32-10.7 32-24s-14.3-24-32-24s-32 10.7-32 24s14.3 24 32 24zM40 80c-13.3 0-24 10.7-24 24s10.7 24 24 24H472c13.3 0 24-10.7 24-24s-10.7-24-24-24H40zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H512v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H432c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [640, 512, [\"people-arrows-left-right\"], \"e068\", \"M64 64a64 64 0 1 1 128 0A64 64 0 1 1 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160h44.8c27 0 51 13.4 65.5 34.1c-2.7 1.9-5.2 4-7.5 6.3l-64 64c-21.9 21.9-21.9 57.3 0 79.2L192 391.2V464c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V348.3c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3zM448 64a64 64 0 1 1 128 0A64 64 0 1 1 448 64zM431.6 200.4c-2.3-2.3-4.9-4.4-7.5-6.3c14.5-20.7 38.6-34.1 65.5-34.1h44.8c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6V464c0 26.5-21.5 48-48 48H496c-26.5 0-48-21.5-48-48V391.2l47.6-47.6c21.9-21.9 21.9-57.3 0-79.2l-64-64zM272 240v32h96V240c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V336H272v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2z\"]\n};\nvar faPeopleArrowsLeftRight = faPeopleArrows;\nvar faFaceAngryHorns = {\n prefix: 'fas',\n iconName: 'face-angry-horns',\n icon: [640, 512, [], \"e368\", \"M576 256c0 141.4-114.6 256-256 256S64 397.4 64 256c0-24.6 3.5-48.4 9.9-70.9C29.6 125.8 6.5 50.1 .3 19.1C-1 12.8 1.7 6.3 7.1 2.7s12.4-3.6 17.8 0c19.3 12.9 48.5 24.2 78.4 33.1c23.3 7 46 12.2 63 15.5C209.1 19.1 262.3 0 320 0s110.9 19.1 153.8 51.3c17-3.3 39.7-8.6 63-15.5c29.8-8.9 59.1-20.2 78.4-33.1c5.4-3.6 12.4-3.6 17.8 0s8.1 10.1 6.8 16.4c-6.2 31-29.3 106.6-73.6 166c6.5 22.5 9.9 46.3 9.9 70.9zM402.7 411.9c6.6-5.9 7.1-16 1.2-22.6C387.8 371.4 359.7 352 320 352s-67.8 19.4-83.9 37.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c11.7-13 31.6-26.7 60.1-26.7s48.4 13.7 60.1 26.7c5.9 6.6 16 7.1 22.6 1.2zM240.4 296c13.3 0 24-10.7 24-24c0-2.6-.4-5.1-1.2-7.4l19.7 6.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l39.6 13.2c-6.2 4.3-10.2 11.5-10.2 19.6c0 13.3 10.7 24 24 24zm184-24c0-8.2-4.1-15.5-10.4-19.8l39.1-13c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l20.6-6.9c-.8 2.4-1.3 5-1.3 7.7c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faMarsAndVenusBurst = {\n prefix: 'fas',\n iconName: 'mars-and-venus-burst',\n icon: [640, 512, [], \"e523\", \"M504 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39-22.2 22.2C475.9 78.4 439.6 64 400 64c-88.4 0-160 71.6-160 160c0 80.2 59.1 146.7 136.1 158.2c0 .6-.1 1.2-.1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3H352c-13.3 0-24 10.7-24 24s10.7 24 24 24h24v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l24 0H376c0 13.3 10.7 24 24 24s24-10.7 24-24H400l24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456h24c13.3 0 24-10.7 24-24s-10.7-24-24-24H424v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2-.1-1.8c77-11.6 136.1-78 136.1-158.2c0-31.4-9-60.7-24.7-85.4L560 113.9l39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H504zM400 128a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.1 3.8 9.9 5.1 15.2 3.6C223.6 310.8 208 269.2 208 224c0-60.8 28.3-115 72.4-150.2L220.3 92.1l-29.4-74z\"]\n};\nvar faTombstone = {\n prefix: 'fas',\n iconName: 'tombstone',\n icon: [448, 512, [], \"f720\", \"M32 192C32 86 118 0 224 0S416 86 416 192V416H32V192zM0 480c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM248 120c0-13.3-10.7-24-24-24s-24 10.7-24 24v40H152c-13.3 0-24 10.7-24 24s10.7 24 24 24h48V328c0 13.3 10.7 24 24 24s24-10.7 24-24V208h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V120z\"]\n};\nvar faSquareCaretRight = {\n prefix: 'fas',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nvar faCaretSquareRight = faSquareCaretRight;\nvar faScissors = {\n prefix: 'fas',\n iconName: 'scissors',\n icon: [512, 512, [9984, 9986, 9988, \"cut\"], \"f0c4\", \"M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM64 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm48 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCut = faScissors;\nvar faListMusic = {\n prefix: 'fas',\n iconName: 'list-music',\n icon: [512, 512, [], \"f8c9\", \"M498.7 6c8.3 6 13.3 15.7 13.3 26V96c0 13.8-8.8 26-21.9 30.4L416 151.1V432c0 44.2-50.1 80-112 80s-112-35.8-112-80s50.1-80 112-80c17.2 0 33.5 2.8 48 7.7V128 64c0-13.8 8.8-26 21.9-30.4l96-32C479.6-1.6 490.4 0 498.7 6zM32 64H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96S14.3 64 32 64zm0 128H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSunPlantWilt = {\n prefix: 'fas',\n iconName: 'sun-plant-wilt',\n icon: [640, 512, [], \"e57a\", \"M160 0c-6.3 0-12 3.7-14.6 9.5L120.6 64.9 63.9 43.2c-5.9-2.3-12.6-.8-17 3.6s-5.9 11.1-3.6 17l21.7 56.7L9.5 145.4C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8L43.2 256.1c-2.3 5.9-.8 12.6 3.6 17s11.1 5.9 17 3.6l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.7 21.7c5.9 2.3 12.6 .8 17-3.6s5.9-11.1 3.6-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7c2.3-5.9 .8-12.6-3.6-17s-11.1-5.9-17-3.6L199.4 64.9 174.6 9.5C172 3.7 166.3 0 160 0zm0 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm312 16c0-17.7 14.3-32 32-32s32 14.3 32 32v53.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C624 318 640 290.7 640 274c0-21.5-9.2-37-24-44.6V176c0-44.2-35.8-80-80-80s-80 35.8-80 80v22.7c-9.8-4.3-20.6-6.7-32-6.7c-44.2 0-80 35.8-80 80v21.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C400 382 416 354.7 416 338c0-21.5-9.2-37-24-44.6V272c0-17.7 14.3-32 32-32s32 14.3 32 32v8V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H504V280v-8V176z\"]\n};\nvar faToiletsPortable = {\n prefix: 'fas',\n iconName: 'toilets-portable',\n icon: [576, 512, [], \"e584\", \"M32 0H224c17.7 0 32 14.3 32 32V64H0V32C0 14.3 14.3 0 32 0zM0 96H24 232h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H48v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM192 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16zM352 0H544c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32zM320 96h24H552h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H368v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM512 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M256 256C114.6 256 0 213 0 160s114.6-96 256-96s256 43 256 96s-114.6 96-256 96zm192.3 1.8c24.7-9.3 46.9-21 63.7-35.6V352c0 53-114.6 96-256 96S0 405 0 352V222.3c16.8 14.6 39 26.3 63.7 35.6C114.5 276.9 182.5 288 256 288s141.5-11.1 192.3-30.2z\"]\n};\nvar faMustache = {\n prefix: 'fas',\n iconName: 'mustache',\n icon: [640, 512, [], \"e5bc\", \"M147.9 148.4C169.3 125.2 199.4 112 231 112c33 0 64.4 14.4 85.9 39.5l3.1 3.6 3.1-3.6C344.6 126.4 376 112 409 112c31.6 0 61.7 13.2 83.1 36.4l2 2.1c27.6 29.9 74.6 30.9 103.4 2.1L599 151c2.5-2.5 5.5-4.4 8.6-5.5c2.6-1 5.4-1.5 8.4-1.5c5.7 0 10.9 2 15 5.2c1.3 1.1 2.6 2.3 3.6 3.6c.4 .5 .7 1 1.1 1.4c.3 .4 .5 .8 .7 1.1c.3 .5 .6 .9 .8 1.4c1.8 3.3 2.7 7.1 2.7 11.2v39.4C640 313.8 553.8 400 447.4 400c-46.7 0-91.7-16.9-126.9-47.7l-.5-.4-.5 .4C284.4 383.1 239.3 400 192.6 400C86.2 400 0 313.8 0 207.4V168c0-4.2 1.1-8.1 2.9-11.5c.6-1 1.2-2.1 2-3c1.2-1.6 2.6-3 4.1-4.2c1.5-1.2 3.1-2.2 4.8-3c3.1-1.5 6.5-2.3 10.2-2.3c2.9 0 5.8 .5 8.4 1.5c3.1 1.2 6.1 3 8.6 5.5l1.6 1.6c28.8 28.8 75.8 27.9 103.4-2.1l2-2.1z\"]\n};\nvar faHyphen = {\n prefix: 'fas',\n iconName: 'hyphen',\n icon: [320, 512, [], \"2d\", \"M0 256c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M64 256V160H224v96H64zm0 64H224v96H64V320zm224 96V320H448v96H288zM448 256H288V160H448v96zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faUserChef = {\n prefix: 'fas',\n iconName: 'user-chef',\n icon: [448, 512, [], \"e3d2\", \"M384 48c0 20.9-13.4 38.7-32 45.3V112v64c0 70.7-57.3 128-128 128s-128-57.3-128-128V112 93.3C77.4 86.7 64 68.9 64 48C64 21.5 85.5 0 112 0c14.3 0 27.2 6.3 36 16.3C156.8 6.3 169.7 0 184 0c16.7 0 31.4 8.5 40 21.5C232.6 8.5 247.3 0 264 0c14.3 0 27.2 6.3 36 16.3C308.8 6.3 321.7 0 336 0c26.5 0 48 21.5 48 48zM304 176V160H144v16c0 44.2 35.8 80 80 80s80-35.8 80-80zM178.4 340.6c7.5 1.9 8.2 12.3 1 15.2l-43.2 17.3C111.9 382.8 96 406.3 96 432.5V480v24 8H88 64 25.6C11.5 512 0 500.5 0 486.4c0-58.8 37.7-108.8 90.3-127c3.3-1.2 5.7-4.3 5.7-7.8V330.2c0-5.2 4.9-9 9.9-7.8l72.5 18.1zM352 512H160 136h-8v-8V480 432.5c0-13.1 8-24.9 20.1-29.7L341 325.6c5.3-2.1 11 1.8 11 7.4v18.6c0 3.5 2.3 6.6 5.7 7.8c52.6 18.2 90.3 68.2 90.3 127c0 14.1-11.5 25.6-25.6 25.6H352zM224 432a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm80 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faMessageImage = {\n prefix: 'fas',\n iconName: 'message-image',\n icon: [512, 512, [\"comment-alt-image\"], \"e1e0\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm176 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm120 0c-8 0-15.5 4-20 10.7l-56 84L202.7 201c-4.6-5.7-11.4-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h80 48H392c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144C311.5 132 304 128 296 128z\"]\n};\nvar faCommentAltImage = faMessageImage;\nvar faUsersMedical = {\n prefix: 'fas',\n iconName: 'users-medical',\n icon: [640, 512, [], \"f830\", \"M144 160A80 80 0 1 0 144 0a80 80 0 1 0 0 160zm368 0A80 80 0 1 0 512 0a80 80 0 1 0 0 160zM0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7H106.7C47.8 192 0 239.8 0 298.7zM405.3 320h77.4c6.6-18.6 24.4-32 45.3-32h32c20.9 0 38.7 13.4 45.3 32h13.4c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 38.2-16.8 72.5-43.3 96c.2 0 .4 0 .7 0zM416 400c0-14.6 6.5-27.7 16.9-36.5C416.3 356.1 398 352 378.7 352H261.3C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H482.7c-1.8-5-2.7-10.4-2.7-16V480H464c-26.5 0-48-21.5-48-48V400zm0-176a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zm96 112v48H464c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V448h48c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H576V336c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16z\"]\n};\nvar faSensorTriangleExclamation = {\n prefix: 'fas',\n iconName: 'sensor-triangle-exclamation',\n icon: [640, 512, [\"sensor-alert\"], \"e029\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H225c-.6-4-1-8.1-1-12.3c0-13.2 3.4-26.2 9.9-37.7l150.4-265c13-22.9 37.3-37.1 63.7-37.1V96c0-35.3-28.7-64-64-64H64zm48 88V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V120c0-13.3 10.7-24 24-24s24 10.7 24 24zm96 0V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V120c0-13.3 10.7-24 24-24s24 10.7 24 24zm53.8 325.8c-3.8 6.7-5.8 14.2-5.8 21.9c0 24.5 19.8 44.3 44.3 44.3H595.7c24.5 0 44.3-19.8 44.3-44.3c0-7.7-2-15.2-5.8-21.9l-150.4-265C476.5 168 462.8 160 448 160s-28.5 8-35.8 20.9l-150.4 265zM464 272v88c0 8.8-7.2 16-16 16s-16-7.2-16-16V272c0-8.8 7.2-16 16-16s16 7.2 16 16zM448 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faSensorAlert = faSensorTriangleExclamation;\nvar faMagnifyingGlassArrowRight = {\n prefix: 'fas',\n iconName: 'magnifying-glass-arrow-right',\n icon: [512, 512, [], \"e521\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM241 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31H120c-13.3 0-24 10.7-24 24s10.7 24 24 24H238.1l-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72z\"]\n};\nvar faTachographDigital = {\n prefix: 'fas',\n iconName: 'tachograph-digital',\n icon: [640, 512, [\"digital-tachograph\"], \"f566\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm32 64H320c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zM64 368c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm320 0c0-8.8 7.2-16 16-16H560c8.8 0 16 7.2 16 16s-7.2 16-16 16H400c-8.8 0-16-7.2-16-16zM80 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faDigitalTachograph = faTachographDigital;\nvar faFaceMask = {\n prefix: 'fas',\n iconName: 'face-mask',\n icon: [576, 512, [], \"e37f\", \"M410.5 281.7L541.8 222C525.1 96.7 417.9 0 288 0S50.9 96.7 34.2 222l131.3 59.7c8-15.3 24.1-25.7 42.5-25.7H368c18.4 0 34.5 10.4 42.5 25.7zm5.5 32.6V384h93.8c21.8-37.6 34.2-81.3 34.2-127.9L416 314.3zM413.3 416c-6.6 18.6-24.4 32-45.3 32H208c-20.9 0-38.7-13.4-45.3-32H88.1c46.9 58.5 119 96 199.9 96s152.9-37.5 199.9-96H413.3zM160 384V314.3L32 256.1c0 46.6 12.5 90.3 34.2 127.9H160zm-4.7-180.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C146.4 167 184.6 144 240 144c8.8 0 16 7.2 16 16s-7.2 16-16 16c-47 0-77.1 19.7-84.7 27.3zM336 176c-8.8 0-16-7.2-16-16s7.2-16 16-16c55.4 0 93.6 23 107.3 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C413.1 195.7 383 176 336 176zM208 304c-8.8 0-16 7.2-16 16s7.2 16 16 16H368c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm0 64c-8.8 0-16 7.2-16 16s7.2 16 16 16H368c8.8 0 16-7.2 16-16s-7.2-16-16-16H208z\"]\n};\nvar faPickleball = {\n prefix: 'fas',\n iconName: 'pickleball',\n icon: [576, 512, [], \"e435\", \"M250.4 28c37.5-37.4 98.4-37.4 136 0L499.9 141.3c29.2 29.2 35.7 72.4 19.4 107.8c-24.9-15.8-54.4-25-86.1-25c-72 0-133 47.3-153.3 112.5L155.7 212.8c-6.3-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L273 374.9c-.2 3-.3 6.1-.3 9.1c0 27.8 7.1 53.8 19.6 76.6c-9.3 .5-18.7-1-27.6-4.7l-56.7-23.2c-23.9-9.8-51.4-4.3-69.6 13.9L84.4 500.3c-15.6 15.6-41 15.6-56.7 0s-15.6-40.9 0-56.5l53.5-53.4c18.4-18.3 23.8-45.8 13.9-69.8L71.1 262.8c-10-23.9-4.5-51.4 13.9-69.7L250.4 28zM304 384a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zm32-16a16 16 0 1 0 32 0 16 16 0 1 0 -32 0zm80 80a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm0-64a16 16 0 1 0 32 0 16 16 0 1 0 -32 0zm96 0a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm-80-80a16 16 0 1 0 32 0 16 16 0 1 0 -32 0z\"]\n};\nvar faStarSharpHalf = {\n prefix: 'fas',\n iconName: 'star-sharp-half',\n icon: [576, 512, [], \"e28c\", \"M254.4 50.4L214.5 176H90.3 88 74.7 56c-10.3 0-19.4 6.5-22.7 16.2s-.1 20.4 8 26.7L56 230.4l10.5 8.2 1.8 1.4 103.7 80.7L132 446.7l-1.1 3.5L126.1 465l-5 15.7c-3.2 10 .5 21 9.1 27s20.2 5.7 28.5-.7l13-10.1 12.3-9.5 2.9-2.3L288 406.4V325.3 155.9 0c-10.5 0-19.7 6.8-22.9 16.7L260 32.9l0 0-4.6 14.3-1 3.2z\"]\n};\nvar faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320H618.7c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 30.2-10.5 58-28 79.9l-25.2-19.7C408.1 267.7 416 246.8 416 224c0-53-43-96-96-96c-31.1 0-58.7 14.8-76.3 37.7l-40.6-31.8c13-14.2 20.9-33.1 20.9-53.9c0-44.2-35.8-80-80-80C116.3 0 91.9 14.1 77.5 35.5L38.8 5.1zM106.7 192C47.8 192 0 239.8 0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-20.6-18.2-35.2-42.8-40.8-70.8L121.8 192H106.7zM261.3 352C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H485.3c10.5 0 19.5-6 23.9-14.8L324.9 352H261.3zM512 160A80 80 0 1 0 512 0a80 80 0 1 0 0 160z\"]\n};\nvar faClover = {\n prefix: 'fas',\n iconName: 'clover',\n icon: [448, 512, [], \"e139\", \"M173.3 32C139.4 32 112 59.4 112 93.3v4.9c0 12 3.3 23.7 9.4 34l18.8 31.3c1.1 1.8 1.2 3.1 1 4.2c-.2 1.2-.8 2.5-2 3.6s-2.4 1.8-3.6 2c-1 .2-2.4 .1-4.2-1l-31.3-18.8c-10.3-6.2-22-9.4-34-9.4H61.3C27.4 144 0 171.4 0 205.3c0 16.2 6.5 31.8 17.9 43.3l1.2 1.2c3.4 3.4 3.4 9 0 12.4l-1.2 1.2C6.5 274.9 0 290.5 0 306.7C0 340.6 27.4 368 61.3 368h4.9c12 0 23.7-3.3 34-9.4l31.3-18.8c1.8-1.1 3.1-1.2 4.2-1c1.2 .2 2.5 .8 3.6 2s1.8 2.4 2 3.6c.2 1 .1 2.4-1 4.2l-18.8 31.3c-6.2 10.3-9.4 22-9.4 34v4.9c0 33.8 27.4 61.3 61.3 61.3c16.2 0 31.8-6.5 43.3-17.9l1.2-1.2c3.4-3.4 9-3.4 12.4 0l1.2 1.2c11.5 11.5 27.1 17.9 43.3 17.9c33.8 0 61.3-27.4 61.3-61.3v-4.9c0-12-3.3-23.7-9.4-34l-18.8-31.3c-1.1-1.8-1.2-3.1-1-4.2c.2-1.2 .8-2.5 2-3.6s2.4-1.8 3.6-2c1-.2 2.4-.1 4.2 1l31.3 18.8c10.3 6.2 22 9.4 34 9.4h4.9c33.8 0 61.3-27.4 61.3-61.3c0-16.2-6.5-31.8-17.9-43.3l-1.2-1.2c-3.4-3.4-3.4-9 0-12.4l1.2-1.2c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3h-4.9c-12 0-23.7 3.3-34 9.4l-31.3 18.8c-1.8 1.1-3.1 1.2-4.2 1c-1.2-.2-2.5-.8-3.6-2s-1.8-2.4-2-3.6c-.2-1-.1-2.4 1-4.2l18.8-31.3c6.2-10.3 9.4-22 9.4-34V93.3C336 59.4 308.6 32 274.7 32c-16.2 0-31.8 6.5-43.3 17.9l-1.2 1.2c-3.4 3.4-9 3.4-12.4 0l-1.2-1.2C205.1 38.5 189.5 32 173.3 32z\"]\n};\nvar faMeat = {\n prefix: 'fas',\n iconName: 'meat',\n icon: [512, 512, [127830], \"f814\", \"M243.6 19.6C283.7-20.4 371.9 2.8 440.5 71.5s91.9 156.8 51.8 196.9l-40.5 40.5C403.9 357 338.7 384 270.8 384H212.6c-7.1 0-13.9 2.8-18.9 7.8c-10.3 10.3-9.7 26.9-5 40.7c2.1 6.1 3.2 12.7 3.2 19.5c0 33.1-26.9 60-60 60s-60-26.9-60-60c0-6.3-5.7-12-12-12c-33.1 0-60-26.9-60-60s26.9-60 60-60c6.8 0 13.4 1.1 19.5 3.2c13.8 4.7 30.4 5.3 40.7-5c5-5 7.8-11.8 7.8-18.9V241.3c0-67.9 27-133 75-181l40.7-40.7zm64 184.8c49.6 49.6 113.3 66.4 142.2 37.4s12.2-92.6-37.4-142.2S299.1 33.2 270.2 62.2s-12.2 92.6 37.4 142.2zm36.3-36.3c-15.3-15.3-20.4-34.9-11.5-43.8s28.5-3.7 43.8 11.5s20.4 34.9 11.5 43.8s-28.5 3.7-43.8-11.5z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [61714, \"mail-reply\"], \"f3e5\", \"M205 34.8c11.5 5.1 19 16.6 19 29.2v64H336c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96H224v64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z\"]\n};\nvar faMailReply = faReply;\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [9770], \"f699\", \"M0 256C0 114.6 114.6 0 256 0c33 0 64.6 6.3 93.6 17.7c7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5c-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5c7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C320.6 505.7 289 512 256 512C114.6 512 0 397.4 0 256zM375.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L261 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"]\n};\nvar faEmptySet = {\n prefix: 'fas',\n iconName: 'empty-set',\n icon: [512, 512, [8709, 216], \"f656\", \"M435.4 121.9l67.2-67.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L390.2 76.6C352.8 48.6 306.3 32 256 32C132.3 32 32 132.3 32 256c0 50.3 16.6 96.8 44.6 134.2L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l67.2-67.2c37.4 28 83.8 44.6 134.1 44.6c123.7 0 224-100.3 224-224c0-50.3-16.6-96.8-44.6-134.1zm-91.2 .7L122.5 344.2C105.8 318.9 96 288.6 96 256c0-88.4 71.6-160 160-160c32.6 0 62.9 9.8 88.2 26.5zm-176.5 267L389.5 167.8C406.2 193.1 416 223.4 416 256c0 88.4-71.6 160-160 160c-32.6 0-62.9-9.8-88.2-26.5z\"]\n};\nvar faHouseFire = {\n prefix: 'fas',\n iconName: 'house-fire',\n icon: [640, 512, [], \"e50c\", \"M288 350.1l0 1.9H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L447.3 128.1c-12.3-1-25 3-34.8 11.7c-35.4 31.6-65.6 67.7-87.3 102.8C304.3 276.5 288 314.9 288 350.1zM453.5 163.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 58.8 24.2 79C640 440 568.7 512 480 512c-89.7 0-160-72.1-160-159.8c0-26.4 12.7-60.7 32.4-92.6c20-32.4 48.1-66.1 81.4-95.8c2.8-2.5 6.4-3.8 10-3.7c3.5 0 7 1.3 9.8 3.8zM530 433c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15z\"]\n};\nvar faSquareMinus = {\n prefix: 'fas',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 200H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusSquare = faSquareMinus;\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [128641], \"f533\", \"M128 32c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H384v64h32c88.4 0 160 71.6 160 160v64c0 17.7-14.3 32-32 32H384 320c-20.1 0-39.1-9.5-51.2-25.6l-71.4-95.2c-3.5-4.7-8.3-8.3-13.7-10.5L47.2 198.1c-9.5-3.8-16.7-12-19.2-22L5 83.9C2.4 73.8 10.1 64 20.5 64H48c10.1 0 19.6 4.7 25.6 12.8L112 128H320V64H160c-17.7 0-32-14.3-32-32zM384 320H512V288c0-53-43-96-96-96H384V320zM630.6 425.4c12.5 12.5 12.5 32.8 0 45.3l-3.9 3.9c-24 24-56.6 37.5-90.5 37.5H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H536.2c17 0 33.3-6.7 45.3-18.7l3.9-3.9c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faBird = {\n prefix: 'fas',\n iconName: 'bird',\n icon: [512, 512, [], \"e469\", \"M0 192v-3.6C0 172.7 12.7 160 28.4 160H224c17.7 0 32-14.3 32-32V96c0-53 43-96 96-96c47.5 0 86.9 34.5 94.6 79.7l57.6 34.6c4.8 2.9 7.8 8.1 7.8 13.7s-2.9 10.8-7.8 13.7L448 175.5V192c0 93.9-57.7 174.3-139.7 207.6l40.9 77.2c6.2 11.7 1.7 26.2-10 32.4s-26.2 1.7-32.4-10l-45.7-86.3C249 415 236.6 416 224 416c-1 0-2 0-3 0l32.2 60.8c6.2 11.7 1.7 26.2-10 32.4s-26.2 1.7-32.4-10l-48.6-91.9C68.5 380.5 0 294.3 0 192zm376-72a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faSquareCaretDown = {\n prefix: 'fas',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nvar faCaretSquareDown = faSquareCaretDown;\nvar faHeartHalfStroke = {\n prefix: 'fas',\n iconName: 'heart-half-stroke',\n icon: [512, 512, [\"heart-half-alt\"], \"e1ac\", \"M256 186.5V407.4L420.7 253.6c17.4-16.2 27.3-38.9 27.3-62.7v-5.8c0-38.6-27.9-71.5-66-77.9c-25.1-4.2-50.8 4-68.8 22l-12 12L256 186.5zM119.4 44.1C165 36.5 211.3 51.4 244 84l0 0 12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1v5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141z\"]\n};\nvar faHeartHalfAlt = faHeartHalfStroke;\nvar faFileCircleQuestion = {\n prefix: 'fas',\n iconName: 'file-circle-question',\n icon: [576, 512, [], \"e4ef\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faJoystick = {\n prefix: 'fas',\n iconName: 'joystick',\n icon: [448, 512, [128377], \"f8c5\", \"M336 112c0 50.7-33.7 93.6-80 107.4V320H192V219.4c-46.3-13.8-80-56.6-80-107.4C112 50.1 162.1 0 224 0s112 50.1 112 112zM200 96a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM64 352c0-17.7 14.3-32 32-32s32 14.3 32 32H384c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64z\"]\n};\nvar faGrillFire = {\n prefix: 'fas',\n iconName: 'grill-fire',\n icon: [576, 512, [], \"e5a4\", \"M0 72C0 49.9 17.9 32 40 32H408c22.1 0 40 17.9 40 40V96c0 24.1-3.8 47.3-10.9 69.1c-8.5-8.6-17.2-17-26.2-25.1c-17.7-16-44.7-16-62.5-.1c-35.4 31.6-65.6 67.7-87.3 102.8c-15 24.3-27.7 51-33.6 77.3c-1.2 0-2.4 0-3.6 0c-16.9 0-33.4-1.9-49.3-5.4L151.8 368h73c1.5 16.6 5.2 32.7 10.7 48H160c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64c3.4 0 6.8 .3 10.1 .8L129.2 299C52.9 263.3 0 185.8 0 96V72zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM389.5 163.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 56.7 24.2 76.9C576 437.9 504.7 512 416 512c-89.7 0-160-74.2-160-161.9c0-26.4 12.7-58.6 32.4-90.6c20-32.4 48.1-66.1 81.4-95.8c5.6-5 14.2-5 19.8 0zM466 433c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15z\"]\n};\nvar faRectangleVerticalHistory = {\n prefix: 'fas',\n iconName: 'rectangle-vertical-history',\n icon: [576, 512, [], \"e237\", \"M256 0c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H256zM96 72V440c0 13.3 10.7 24 24 24s24-10.7 24-24V72c0-13.3-10.7-24-24-24s-24 10.7-24 24zM0 120V392c0 13.3 10.7 24 24 24s24-10.7 24-24V120c0-13.3-10.7-24-24-24S0 106.7 0 120z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M0 32C0 14.3 14.3 0 32 0H160c17.7 0 32 14.3 32 32V416c0 53-43 96-96 96s-96-43-96-96V32zM223.6 425.9c.3-3.3 .4-6.6 .4-9.9V154l75.4-75.4c12.5-12.5 32.8-12.5 45.3 0l90.5 90.5c12.5 12.5 12.5 32.8 0 45.3L223.6 425.9zM182.8 512l192-192H480c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H182.8zM128 64H64v64h64V64zM64 192v64h64V192H64zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V416H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V320H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V224H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V128z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [\"navicon\"], \"f0c9\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faNavicon = faBars;\nvar faKeyboardLeft = {\n prefix: 'fas',\n iconName: 'keyboard-left',\n icon: [640, 512, [], \"e1c3\", \"M224 64c-35.3 0-64 28.7-64 64V384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H224zm16 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM224 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V144zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM320 336c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V336zM432 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM416 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V240zM528 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM512 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM113.2 153.8c-9-3.7-19.3-1.7-26.2 5.2L7 239c-9.4 9.4-9.4 24.6 0 33.9l80 80c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V176c0-9.7-5.8-18.5-14.8-22.2z\"]\n};\nvar faPeopleGroup = {\n prefix: 'fas',\n iconName: 'people-group',\n icon: [640, 512, [], \"e533\", \"M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3V245.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V389.2C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112h32c24 0 46.2 7.5 64.4 20.3zM448 416V394.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176h32c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2V416c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3V261.7c-10 11.3-16 26.1-16 42.3zm144-42.3v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2V448c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V405.2c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112h32c61.9 0 112 50.1 112 112z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [8987, \"hourglass-3\"], \"f253\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 25.5-10.1 49.9-28.1 67.9L192 210.7l-67.9-67.9C106.1 124.9 96 100.4 96 75z\"]\n};\nvar faHourglass3 = faHourglassEnd;\nvar faHeartCrack = {\n prefix: 'fas',\n iconName: 'heart-crack',\n icon: [512, 512, [128148, \"heart-broken\"], \"f7a9\", \"M119.4 44.1c23.3-3.9 46.8-1.9 68.6 5.3l49.8 77.5-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.8 61.8c28.5-16.7 62.4-23.2 95.7-17.6C461.5 55.6 512 115.2 512 185.1v5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141z\"]\n};\nvar faHeartBroken = faHeartCrack;\nvar faFaceBeamHandOverMouth = {\n prefix: 'fas',\n iconName: 'face-beam-hand-over-mouth',\n icon: [512, 512, [129325], \"e47c\", \"M512 256c0 113.1-73.3 209.1-175.1 242.9l49-49c18.1-18.1 18.7-47.1 1.8-65.9c16.9-18.8 16.3-47.8-1.8-65.9c-1-1-2.1-2-3.2-3c3.7-15.7-.5-32.8-12.8-45s-29.4-16.5-45-12.8c-.9-1.1-1.9-2.2-3-3.2c-18.7-18.7-49.1-18.7-67.9 0L207 301.1c-9.4-13.7-25.1-22.7-43-22.7c-28.7 0-52 23.3-52 52V384v32.8c0 21.9 5.5 42.5 15.3 60.5C51.2 433 0 350.5 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256zM217.6 212.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 172.4 120 190.1 120 208c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 172.4 280 190.1 280 208c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0zm-78.3 63.9c6.2 6.2 6.2 16.4 0 22.6L248 350.6c-2.6 2.6-2.6 6.8 0 9.4s6.8 2.6 9.4 0l67.3-67.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L280 382.6c-2.6 2.6-2.6 6.8 0 9.4s6.8 2.6 9.4 0l51.3-51.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L312 414.6c-2.6 2.6-2.6 6.8 0 9.4s6.8 2.6 9.4 0l19.3-19.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-56.8 56.8C288.7 502 264.4 512 239.2 512c-52.6 0-95.2-42.6-95.2-95.2V384 330.4c0-11 9-20 20-20s20 9 20 20v19.7c0 7.1 8.6 10.7 13.7 5.7l79-79c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faDropletPercent = {\n prefix: 'fas',\n iconName: 'droplet-percent',\n icon: [384, 512, [\"humidity\"], \"f750\", \"M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0h1.8c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zm75.3-267.3c-6.2-6.2-16.4-6.2-22.6 0l-128 128c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l128-128c6.2-6.2 6.2-16.4 0-22.6zM136 288a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM248 400a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faHumidity = faDropletPercent;\nvar faSquareUpRight = {\n prefix: 'fas',\n iconName: 'square-up-right',\n icon: [448, 512, [8599, \"external-link-square-alt\"], \"f360\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM320 313.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6c0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3C114 302 112 306.9 112 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6c12.5 0 22.6-10.1 22.6-22.6z\"]\n};\nvar faExternalLinkSquareAlt = faSquareUpRight;\nvar faFaceKissBeam = {\n prefix: 'fas',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-84.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faKissBeam = faFaceKissBeam;\nvar faCorn = {\n prefix: 'fas',\n iconName: 'corn',\n icon: [512, 512, [127805], \"f6c7\", \"M512 40c0 15-8.3 28.1-20.5 34.9C499.2 82.2 504 92.6 504 104c0 18-11.8 33.2-28.2 38.2c2.7 5.4 4.2 11.4 4.2 17.8c0 18-11.8 33.2-28.2 38.2c2.7 5.4 4.2 11.4 4.2 17.8c0 22.1-17.9 40-40 40c-1.1 0-2.3 0-3.4-.1c2.2 4.9 3.4 10.4 3.4 16.1c0 13.6-6.8 25.7-17.3 32.9c-47.7-29.7-103.6-41.1-157.5-34.2c6.9-53.9-4.5-109.8-34.2-157.5C214.3 102.8 226.4 96 240 96c5.7 0 11.2 1.2 16.1 3.4c-.1-1.1-.1-2.2-.1-3.4c0-22.1 17.9-40 40-40c6.4 0 12.4 1.5 17.8 4.2C318.8 43.8 334 32 352 32c6.4 0 12.4 1.5 17.8 4.2C374.8 19.8 390 8 408 8c11.4 0 21.8 4.8 29.1 12.5C443.9 8.3 457 0 472 0c22.1 0 40 17.9 40 40zM137.7 98c1.2-6.3 8.9-8.7 13.2-3.9c45.4 50.5 69.5 114 56.9 183.4c-38.7 10.7-75.2 31.2-105.5 61.6L24.9 416.5c-34.2-37.7-33.1-96 3.2-132.4l64-64c18.3-18.3 30.6-41.7 35.3-67.1L137.7 98zM92.1 483.9L47.4 439.2l77.5-77.5c28.6-28.6 63.5-47.1 100.1-55.6c72.2-16.6 139.8 7.4 192.8 55c4.8 4.3 2.4 12.1-3.9 13.2l-54.9 10.2c-25.4 4.7-48.8 17-67.1 35.3l-64 64c-37.5 37.5-98.3 37.5-135.8 0z\"]\n};\nvar faRollerCoaster = {\n prefix: 'fas',\n iconName: 'roller-coaster',\n icon: [640, 512, [], \"e324\", \"M64 190.1c0-31.8 15.8-60 40-77V456c0 13.3 10.7 24 24 24s24-10.7 24-24V96.2c2-.1 4-.2 6.1-.2c14.8 0 29.1 3.5 41.9 9.9V456c0 13.3 10.7 24 24 24s24-10.7 24-24V154.7l48 69.1V456c0 13.3 10.7 24 24 24s24-10.7 24-24V292.9l20.3 29.2c7.9 11.3 17.2 21.3 27.7 29.8V456c0 13.3 10.7 24 24 24s24-10.7 24-24V377.6c13.6 4.2 28 6.4 42.6 6.4H488v72c0 13.3 10.7 24 24 24s24-10.7 24-24V378.4c14.4-4.2 27.8-10.5 40-18.6V448c0 17.7 14.3 32 32 32s32-14.3 32-32V248h-.2c.1-2.6 .2-5.3 .2-8c0-79.5-64.5-144-144-144h-4c-28.9 0-57.3 7.1-82.8 20.7l-51.6 27.5L432 251.3V177.1l7.3-3.9c12.7-6.8 26.5-11 40.7-12.5V264c0 13.3 10.7 24 24 24s24-10.7 24-24V166.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80H482.6c-26.2 0-50.8-12.8-65.7-34.4L287.9 99.9C258.4 57.4 209.9 32 158.1 32C70.8 32 0 102.8 0 190.1V448c0 17.7 14.3 32 32 32s32-14.3 32-32V190.1z\"]\n};\nvar faPhotoFilmMusic = {\n prefix: 'fas',\n iconName: 'photo-film-music',\n icon: [640, 512, [], \"e228\", \"M192 64c0-35.3 28.7-64 64-64H576c35.3 0 64 28.7 64 64v69.6c-12.9-6.1-27.9-7.1-41.7-2.5l-98.9 33-37.8-60.5c-2.9-4.7-8.1-7.5-13.6-7.5s-10.6 2.8-13.6 7.5L388 177.9l-15.3-19.7c-3-3.9-7.7-6.2-12.6-6.2s-9.6 2.3-12.6 6.2l-56 72c-3.8 4.8-4.4 11.4-1.7 16.9s8.3 9 14.4 9h64l0 64H256c-35.3 0-64-28.7-64-64V64zM319.5 404.6c-13.8 10.3-25.2 25.2-29.6 43.4H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h96V360c0 17.7 14.3 32 32 32H342.2c-8.2 3.3-15.8 7.5-22.6 12.6zM320 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM56 168v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V168c0-8.8-7.2-16-16-16H72c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V264c0-8.8-7.2-16-16-16H72zM56 360v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V360c0-8.8-7.2-16-16-16H72c-8.8 0-16 7.2-16 16zM630 164.5c6.3 4.5 10 11.8 10 19.5v48V392c0 1.2-.1 2.4-.3 3.6c.2 1.5 .3 2.9 .3 4.4c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48c5.5 0 10.9 .5 16 1.5V265.3l-144 48V464c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48c5.5 0 10.9 .5 16 1.5V296 248c0-10.3 6.6-19.5 16.4-22.8l192-64c7.3-2.4 15.4-1.2 21.6 3.3z\"]\n};\nvar faRadar = {\n prefix: 'fas',\n iconName: 'radar',\n icon: [512, 512, [], \"e024\", \"M304.8 173.3c-14.3-8.4-31-13.3-48.8-13.3c-53 0-96 43-96 96s43 96 96 96s96-43 96-96h64c0 73.5-49.6 135.5-117.2 154.2C290.8 394.7 274.7 384 256 384s-34.8 10.7-42.8 26.2c-51.7-14.3-92.8-53.9-109.4-104.6c14.4-8.3 24.1-23.8 24.1-41.7c0-19.4-11.5-36.1-28-43.7C116.2 149.1 179.9 96 256 96c35.5 0 68.3 11.6 94.9 31.2l22.8-22.8C341.2 79 300.4 64 256 64C163.1 64 85.7 129.9 67.9 217.6C47.2 222.9 32 241.7 32 264c0 23.8 17.3 43.6 40.1 47.4c19.3 64.3 71.5 114.4 137 130.9C213.8 463.8 233 480 256 480s42.2-16.2 46.9-37.8C386.3 421.3 448 345.9 448 256h64c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0c62.1 0 118.9 22.1 163.3 58.8L463 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-182 182c3.3 7.7 5.1 16.1 5.1 25c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64c8.9 0 17.3 1.8 25 5.1l23.8-23.8z\"]\n};\nvar faSickle = {\n prefix: 'fas',\n iconName: 'sickle',\n icon: [512, 512, [], \"f822\", \"M212.7 340.7L181 309c-33.9-33.9-53-80-53-128C128 81 209 0 309 0h11c90.1 0 165.8 62.1 186.4 145.8c1.8 7.3-4 14.2-11.5 14.2c-3.9 0-7.5-1.9-9.9-4.9C458.9 122.9 419.5 104 377.8 104C301.7 104 240 165.7 240 241.8v9.8c0 20.7 5.2 39.7 12.2 58.6c2.2 6 .9 12.8-3.7 17.3l-13.2 13.2c-6.2 6.2-16.4 6.2-22.6 0zM121 311l24 24 32 32 24 24c9.4 9.4 9.4 24.6 0 33.9l-16 16c-9.4 9.4-24.6 9.4-33.9 0l-7-7L73 505c-9.4 9.4-24.6 9.4-33.9 0L7 473c-9.4-9.4-9.4-24.6 0-33.9l71-71-7-7c-9.4-9.4-9.4-24.6 0-33.9l16-16c9.4-9.4 24.6-9.4 33.9 0z\"]\n};\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [127902], \"f008\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM48 368v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H416zM48 240v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H416zM48 112v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H416zM160 128v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32H192z\"]\n};\nvar faCoconut = {\n prefix: 'fas',\n iconName: 'coconut',\n icon: [512, 512, [], \"e2f6\", \"M141.2 141.2c-43.7 43.7-73 91.8-85.8 133.3c-13.2 42.7-7.4 71.9 7.5 86.7s44 20.6 86.7 7.5c41.5-12.8 89.6-42.1 133.3-85.8s73-91.8 85.8-133.3c13.2-42.7 7.4-71.9-7.5-86.7s-44-20.6-86.7-7.5C233 68.1 184.9 97.5 141.2 141.2zM260.4 9.5C309.6-5.7 361.5-4.8 395.2 28.8l40.9 40.9C484.7 118.4 512 184.3 512 252.9C512 396 396 512 253 512c-68.7 0-134.6-27.3-183.2-75.9l-41-41C-4.8 361.5-5.7 309.6 9.5 260.3c15.6-50.4 49.7-105 97.8-153.1S210 25 260.4 9.5zm63.5 88.1c25 25-5.4 95.9-67.9 158.4s-133.4 92.9-158.4 67.9s5.4-95.9 67.9-158.4S298.9 72.6 323.9 97.6zm95.4 107.1c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l32 32c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-32-32zm-56 136c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l32 32c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-32-32zm-136 56c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l32 32c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-32-32z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [640, 512, [], \"f547\", \"M0 336c0 26.5 21.5 48 48 48l544 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0c-26.5 0-48 21.5-48 48L0 336z\"]\n};\nvar faShieldCross = {\n prefix: 'fas',\n iconName: 'shield-cross',\n icon: [512, 512, [9960], \"f712\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 66.8l32 13.6V128c0 17.7 14.3 32 32 32H431.3c-1.2 19.6-4.2 41.4-9.4 64H320c-17.7 0-32 14.3-32 32V426.8c-10 6.5-20.7 12.5-32 18c-11.3-5.5-22-11.5-32-18V256c0-17.7-14.3-32-32-32H90.1c-5.2-22.6-8.1-44.4-9.4-64H192c17.7 0 32-14.3 32-32V80.3l32-13.6z\"]\n};\nvar faCassetteTape = {\n prefix: 'fas',\n iconName: 'cassette-tape',\n icon: [576, 512, [128429], \"f8ab\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H483.1l-36.3-96.9c-7-18.7-24.9-31.1-44.9-31.1H174.2c-20 0-37.9 12.4-44.9 31.1L92.9 480H64c-35.3 0-64-28.7-64-64V96zM416.8 394.4L448.9 480H127.1l32.1-85.6c2.3-6.2 8.3-10.4 15-10.4H401.8c6.7 0 12.6 4.1 15 10.4zM341.5 192H234.5c3.5 10 5.5 20.8 5.5 32s-1.9 22-5.5 32H341.5c-3.5-10-5.5-20.8-5.5-32s1.9-22 5.5-32zm90.5 0a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM112 224a32 32 0 1 0 64 0 32 32 0 1 0 -64 0z\"]\n};\nvar faSquareTerminal = {\n prefix: 'fas',\n iconName: 'square-terminal',\n icon: [448, 512, [], \"e32a\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm70.3 55.8c-9 9.8-8.3 25 1.5 33.9L148.5 256 71.8 326.3c-9.8 9-10.4 24.1-1.5 33.9s24.1 10.4 33.9 1.5l96-88c5-4.5 7.8-11 7.8-17.7s-2.8-13.1-7.8-17.7l-96-88c-9.8-9-25-8.3-33.9 1.5zM216 336c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H216z\"]\n};\nvar faPeopleRobbery = {\n prefix: 'fas',\n iconName: 'people-robbery',\n icon: [576, 512, [], \"e536\", \"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V174.3c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zm-8 32c-35.3 0-64 28.7-64 64v96l0 .6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352H88V480c0 17.7 14.3 32 32 32s32-14.3 32-32V252.7l13 20.5c5.9 9.2 16.1 14.9 27 14.9h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H209.6l-37.4-58.9C157.6 142 132.1 128 104.7 128H72z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [256, 512, [], \"f0d9\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"]\n};\nvar faCommentMiddle = {\n prefix: 'fas',\n iconName: 'comment-middle',\n icon: [512, 512, [], \"e149\", \"M188.3 408.7l44.5 89c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3l44.5-89C432.2 384.5 512 303.8 512 208C512 93.1 397.4 0 256 0S0 93.1 0 208c0 95.8 79.8 176.5 188.3 200.7z\"]\n};\nvar faTrashCanList = {\n prefix: 'fas',\n iconName: 'trash-can-list',\n icon: [640, 512, [], \"e2ab\", \"M147.8 0c-12.1 0-23.2 6.8-28.6 17.7L112 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H304l-7.2-14.3C291.4 6.8 280.3 0 268.2 0H147.8zM384 128H32V464c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V128zM160 208V432c0 8.8-7.2 16-16 16s-16-7.2-16-16V208c0-8.8 7.2-16 16-16s16 7.2 16 16zm128 0V432c0 8.8-7.2 16-16 16s-16-7.2-16-16V208c0-8.8 7.2-16 16-16s16 7.2 16 16zm192-80c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H480zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H480zM448 416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H480c-17.7 0-32 14.3-32 32z\"]\n};\nvar faBlock = {\n prefix: 'fas',\n iconName: 'block',\n icon: [640, 512, [], \"e46a\", \"M96 96c0-35.3 28.7-64 64-64H480c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H160c-35.3 0-64-28.7-64-64V96zm96 8a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm280 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM192 408a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm280 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faCircleExclamation = {\n prefix: 'fas',\n iconName: 'circle-exclamation',\n icon: [512, 512, [\"exclamation-circle\"], \"f06a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faExclamationCircle = faCircleExclamation;\nvar faSchoolCircleXmark = {\n prefix: 'fas',\n iconName: 'school-circle-xmark',\n icon: [640, 512, [], \"e56d\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 368z\"]\n};\nvar faArrowRightFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-from-bracket',\n icon: [512, 512, [\"sign-out\"], \"f08b\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"]\n};\nvar faSignOut = faArrowRightFromBracket;\nvar faFaceFrownSlight = {\n prefix: 'fas',\n iconName: 'face-frown-slight',\n icon: [512, 512, [], \"e376\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm91.9-117.5C330 373.8 299.4 352 256 352s-74 21.8-91.9 42.5c-5.8 6.7-15.9 7.4-22.6 1.6s-7.4-15.9-1.6-22.6c22.2-25.7 61-53.5 116.1-53.5s93.8 27.9 116.1 53.5c5.8 6.7 5.1 16.8-1.6 22.6s-16.8 5.1-22.6-1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCircleChevronDown = {\n prefix: 'fas',\n iconName: 'circle-chevron-down',\n icon: [512, 512, [\"chevron-circle-down\"], \"f13a\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"]\n};\nvar faChevronCircleDown = faCircleChevronDown;\nvar faSidebarFlip = {\n prefix: 'fas',\n iconName: 'sidebar-flip',\n icon: [512, 512, [], \"e24f\", \"M512 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96zM288 96V416H64V96H288zm136 0c13.3 0 24 10.7 24 24s-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24h48zm24 120c0 13.3-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24zm-24 72c13.3 0 24 10.7 24 24s-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24h48z\"]\n};\nvar faUnlockKeyhole = {\n prefix: 'fas',\n iconName: 'unlock-keyhole',\n icon: [448, 512, [\"unlock-alt\"], \"f13e\", \"M224 64c-44.2 0-80 35.8-80 80v48H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80V144C80 64.5 144.5 0 224 0c57.5 0 107 33.7 130.1 82.3c7.6 16 .8 35.1-15.2 42.6s-35.1 .8-42.6-15.2C283.4 82.6 255.9 64 224 64zm32 320c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h64z\"]\n};\nvar faUnlockAlt = faUnlockKeyhole;\nvar faTemperatureList = {\n prefix: 'fas',\n iconName: 'temperature-list',\n icon: [512, 512, [], \"e299\", \"M96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.2 32 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V176c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM352 32c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H352zM320 192c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H352c-17.7 0-32 14.3-32 32zm64 96c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H384z\"]\n};\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zM81.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6S-3.3 490.7 1.9 478.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM313.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z\"]\n};\nvar faHeadphonesSimple = {\n prefix: 'fas',\n iconName: 'headphones-simple',\n icon: [512, 512, [\"headphones-alt\"], \"f58f\", \"M256 80C141.1 80 48 173.1 48 288V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288C0 146.6 114.6 32 256 32s256 114.6 256 256V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288c0-114.9-93.1-208-208-208zM80 352c0-35.3 28.7-64 64-64h16c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V352zm288-64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faHeadphonesAlt = faHeadphonesSimple;\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [576, 512, [], \"f0e8\", \"M208 80c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48h-8v40H464c30.9 0 56 25.1 56 56v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H464c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-4.4-3.6-8-8-8H312v40h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H256c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V280H112c-4.4 0-8 3.6-8 8v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-30.9 25.1-56 56-56H264V192h-8c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faPipeSection = {\n prefix: 'fas',\n iconName: 'pipe-section',\n icon: [640, 512, [], \"e438\", \"M32 96C14.3 96 0 110.3 0 128V384c0 17.7 14.3 32 32 32s32-14.3 32-32V128c0-17.7-14.3-32-32-32zm576 0c-17.7 0-32 14.3-32 32V384c0 17.7 14.3 32 32 32s32-14.3 32-32V128c0-17.7-14.3-32-32-32zm-64 32H96V384H544V128z\"]\n};\nvar faSpaceStationMoonConstruction = {\n prefix: 'fas',\n iconName: 'space-station-moon-construction',\n icon: [512, 512, [\"space-station-moon-alt\"], \"e034\", \"M512 256c0 7.8-.3 15.5-1 23.1C438.8 304.7 351.2 320 256 320s-182.8-15.3-255-40.9c-.7-7.6-1-15.3-1-23.1C0 114.6 114.6 0 256 0c57.8 0 111.1 19.1 153.9 51.4c3.9 2.9 6.1 7.5 6.1 12.4V80c0 8.8-7.2 16-16 16H368c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48 16c8.8 0 16 7.2 16 16v32c0 8.8 7.2 16 16 16h31.9c8.1 0 14.9 6 15.5 14.1c.4 5.9 .6 11.9 .6 17.9zM256 512C134.9 512 33.4 427.9 6.8 314.8C79.4 338.4 164.7 352 256 352c44.3 0 87.3-3.2 128-9.2V368c0 8.8 7.2 16 16 16h32c8.8 0 16 7.2 16 16v19.3c0 3.9-1.4 7.7-4.1 10.5C397.2 480.4 330.3 512 256 512zM160 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm112 0a80 80 0 1 0 -160 0 80 80 0 1 0 160 0z\"]\n};\nvar faSpaceStationMoonAlt = faSpaceStationMoonConstruction;\nvar faCircleDollarToSlot = {\n prefix: 'fas',\n iconName: 'circle-dollar-to-slot',\n icon: [512, 512, [\"donate\"], \"f4b9\", \"M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3c-.3-.1-.5-.2-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 91.9c-11.1 0-20.1 9-20.1 20.1v6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.7 4c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9l0 0 0 0 0 0c-2.2-.7-4.3-1.5-6.4-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1V304c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1v-5.5c5.3-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4V112c0-11.1-9-20.1-20.1-20.1zM48 352H64c19.5 25.9 44 47.7 72.2 64H64v32H256 448V416H375.8c28.2-16.3 52.8-38.1 72.2-64h16c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V400c0-26.5 21.5-48 48-48z\"]\n};\nvar faDonate = faCircleDollarToSlot;\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [576, 512, [], \"f538\", \"M64 64C28.7 64 0 92.7 0 128v7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6V320H576V248.6c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3V128c0-35.3-28.7-64-64-64H64zM576 352H0v64c0 17.7 14.3 32 32 32H80V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h48c17.7 0 32-14.3 32-32V352zM192 160v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faFaceSleeping = {\n prefix: 'fas',\n iconName: 'face-sleeping',\n icon: [512, 512, [], \"e38d\", \"M512 256c0-46.6-12.5-90.3-34.2-128H432c-19.4 0-36.9-11.7-44.3-29.6c-7.1-17.1-3.7-36.7 8.6-50.4c-2.9-3.2-5.4-6.9-7.3-10.8C350.2 13.6 304.7 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256zM272 96c-8.8 0-16-7.2-16-16s7.2-16 16-16h64c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4L310.6 128H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4L297.4 96H272zM216 384a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM387.2 238.4c5.3-7.1 15.3-8.5 22.4-3.2s8.5 15.3 3.2 22.4c-30.4 40.5-91.2 40.5-121.6 0c-5.3-7.1-3.9-17.1 3.2-22.4s17.1-3.9 22.4 3.2c17.6 23.5 52.8 23.5 70.4 0zm-262.4 0c17.6 23.5 52.8 23.5 70.4 0c5.3-7.1 15.3-8.5 22.4-3.2s8.5 15.3 3.2 22.4c-30.4 40.5-91.2 40.5-121.6 0c-5.3-7.1-3.9-17.1 3.2-22.4s17.1-3.9 22.4 3.2zM416 16c0 8.8 7.2 16 16 16h25.4L420.7 68.7c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H470.6l36.7-36.7c4.6-4.6 5.9-11.5 3.5-17.4S502.5 0 496 0H432c-8.8 0-16 7.2-16 16z\"]\n};\nvar faRoadSpikes = {\n prefix: 'fas',\n iconName: 'road-spikes',\n icon: [640, 512, [], \"e568\", \"M64 116.8c0-15.8 20.5-22 29.3-8.9L192 256V116.8c0-15.8 20.5-22 29.3-8.9L320 256V116.8c0-15.8 20.5-22 29.3-8.9L448 256V116.8c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.7-26.6 49.7H512 448 384 320 256 192 64V116.8zM32 384H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFireBurner = {\n prefix: 'fas',\n iconName: 'fire-burner',\n icon: [640, 512, [], \"e4f1\", \"M293.5 3.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 58.8 24.2 79C480 280 408.7 352 320 352c-89.7 0-160-72.1-160-159.8c0-26.4 12.7-60.7 32.4-92.6c20-32.4 48.1-66.1 81.4-95.8c2.8-2.5 6.4-3.8 10-3.7c3.5 0 7 1.3 9.8 3.8zM370 273c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15zM32 288c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32s-14.3 32-32 32v64H544V320c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32V288zM320 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM192 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faSquirrel = {\n prefix: 'fas',\n iconName: 'squirrel',\n icon: [512, 512, [], \"f71a\", \"M160 296.2c0 2-.7 3.9-2 5.4c-18.7 22.3-30 51-30 82.3c0 70.7 57.3 128 128 128h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H432c10-13.4 16-30 16-48c0-26.2-12.6-49.4-32-64c-13.4-10-30-16-48-16c-9.4 0-18.3 1.6-26.7 4.5c-8.3 2.9-17.5-1.4-20.4-9.8s1.4-17.5 9.8-20.4c11.7-4.1 24.3-6.4 37.3-6.4c17.2 0 33.5 3.9 48 10.8V240h21.2c26.7 0 51.7-13.4 66.6-35.6L512 192c0-53-43-96-96-96V75.2C416 69 411 64 404.8 64c-15.2 0-28.7 7.6-36.8 19.2C359.9 71.6 346.4 64 331.2 64C325 64 320 69 320 75.2V96c0 54.4-10.5 108.1-30.7 158c-.9-2-1.3-4.2-1.3-6.4V144C288 64.5 223.5 0 144 0S0 64.5 0 144s64.5 144 144 144c2.3 0 4.6-.1 6.9-.2c4.9-.2 9.1 3.5 9.1 8.4zM416 144a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faArrowUpToLine = {\n prefix: 'fas',\n iconName: 'arrow-up-to-line',\n icon: [384, 512, [\"arrow-to-top\"], \"f341\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM214.6 169.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 269.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V269.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n};\nvar faArrowToTop = faArrowUpToLine;\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [448, 512, [127988, 61725], \"f024\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V64 368 480c0 17.7 14.3 32 32 32s32-14.3 32-32V352l64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48V32z\"]\n};\nvar faFaceCowboyHat = {\n prefix: 'fas',\n iconName: 'face-cowboy-hat',\n icon: [512, 512, [], \"e36e\", \"M216 0c9.1 0 17.9 4 26.1 10.7c7.9 6.5 19.8 6.5 27.7 0C278.1 4 286.9 0 296 0c36.8 0 67.4 64.9 82.4 109.8C412 99.3 442 84.6 466.9 66.8c2.5-1.8 5.4-2.8 8.4-2.8c8.9 0 15.6 8.3 12.9 16.7C461.2 163.2 367.5 224 256 224S50.8 163.2 23.8 80.7C21 72.3 27.7 64 36.7 64c3 0 6 1 8.4 2.8C70 84.6 100 99.3 133.6 109.8C148.6 64.9 179.2 0 216 0zM48 304c0-37.9 10.1-73.4 27.8-104c48.8 35.3 112.5 56 180.2 56s131.4-20.6 180.2-56c17.7 30.6 27.8 66.1 27.8 104c0 114.9-93.1 208-208 208S48 418.9 48 304zm299.8 60.7c-27.9 7.8-59 12.1-91.6 12.1s-63.7-4.3-91.6-12.1c-12.4-3.5-24.3 7.3-18.6 18.8C166.2 424.1 208 452 256.2 452s90-27.9 110.2-68.6c5.7-11.5-6.2-22.2-18.6-18.8zM216 304a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm104 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [128334], \"f6e6\", \"M314.2 3.3C309.1 12.1 296 36.6 296 56c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C324.6 1.2 322.4 0 320 0s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C36.6 49.2 34.4 48 32 48s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7C165.1 60.1 152 84.6 152 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3C389.1 60.1 376 84.6 376 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7C517.1 60.1 504 84.6 504 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32V320H96c-17.7 0-32-14.3-32-32V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 53 43 96 96 96H288v64H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H544c53 0 96-43 96-96V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H352V144z\"]\n};\nvar faChartScatter3d = {\n prefix: 'fas',\n iconName: 'chart-scatter-3d',\n icon: [512, 512, [], \"e0e8\", \"M32 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V273L43.5 423.4c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1L256 329.7 427.5 472.6c13.6 11.3 33.8 9.5 45.1-4.1s9.5-33.8-4.1-45.1L288 273V64zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm64-64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM160 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 256A32 32 0 1 0 0 256a32 32 0 1 0 64 0zM256 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faDisplayChartUp = {\n prefix: 'fas',\n iconName: 'display-chart-up',\n icon: [576, 512, [], \"e5e3\", \"M0 64C0 28.7 28.7 0 64 0H512c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H336l10.7 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32h69.3L240 416H64c-35.3 0-64-28.7-64-64V64zm64 0V352H512V64H64zM376 96h80c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V177.9L321 289c-4.5 4.5-10.6 7-17 7s-12.5-2.5-17-7l-63-63-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L207 175c9.4-9.4 24.6-9.4 33.9 0l63 63L398.1 144H376c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faSquareCode = {\n prefix: 'fas',\n iconName: 'square-code',\n icon: [448, 512, [], \"e267\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm262.2 71.9c-8.9 9.9-8.1 25 1.8 33.9L324.1 256l-60.2 54.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72c-9.9-8.9-25-8.1-33.9 1.8zm-78.1 33.9c9.9-8.9 10.7-24 1.8-33.9s-24-10.7-33.9-1.8l-80 72c-5.1 4.6-7.9 11-7.9 17.8s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L123.9 256l60.2-54.2z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [129718], \"f52d\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faVolumeLow = {\n prefix: 'fas',\n iconName: 'volume-low',\n icon: [448, 512, [128264, \"volume-down\"], \"f027\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM412.6 181.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z\"]\n};\nvar faVolumeDown = faVolumeLow;\nvar faXmarkToSlot = {\n prefix: 'fas',\n iconName: 'xmark-to-slot',\n icon: [576, 512, [\"times-to-slot\", \"vote-nay\"], \"f771\", \"M96 80c0-26.5 21.5-48 48-48H432c26.5 0 48 21.5 48 48V384H96V80zm145 47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47zM0 336c0-26.5 21.5-48 48-48H64V416H512V288h16c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336z\"]\n};\nvar faTimesToSlot = faXmarkToSlot;\nvar faVoteNay = faXmarkToSlot;\nvar faBoxTaped = {\n prefix: 'fas',\n iconName: 'box-taped',\n icon: [448, 512, [\"box-alt\"], \"f49a\", \"M50.7 58.5L0 160H160L192 32H93.7C75.5 32 58.9 42.3 50.7 58.5zM288 160H448L397.3 58.5C389.1 42.3 372.5 32 354.3 32H256l32 128zM160 192H0V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192H288v64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192z\"]\n};\nvar faBoxAlt = faBoxTaped;\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zM64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104-17.9L82.9 161.3C70.7 185.6 64 212.2 64 240z\"]\n};\nvar faSwords = {\n prefix: 'fas',\n iconName: 'swords',\n icon: [512, 512, [9876], \"f71d\", \"M4.7 4.7C8.5 .9 13.9-.7 19.1 .3L89.6 14.4c9.3 1.9 17.8 6.4 24.5 13.1L393.4 306.7l-86.6 86.6L27.5 114.2c-6.7-6.7-11.3-15.2-13.1-24.5L.3 19.1C-.7 13.9 .9 8.5 4.7 4.7zm454.6 304l16 16c4.7 4.7 6 11.8 3.3 17.8l-27.5 62 56.2 56.2c6.2 6.2 6.2 16.4 0 22.6l-24 24c-6.2 6.2-16.4 6.2-22.6 0l-56.2-56.2-62 27.5c-6.1 2.7-13.1 1.4-17.8-3.3l-16-16c-6.2-6.2-6.2-16.4 0-22.6l128-128c6.2-6.2 16.4-6.2 22.6 0zM96 329.4l50.7-50.7 86.6 86.6L182.6 416l20.7 20.7c6.2 6.2 6.2 16.4 0 22.6l-16 16c-4.7 4.7-11.8 6-17.8 3.3l-62-27.5L51.3 507.3c-6.2 6.2-16.4 6.2-22.6 0l-24-24c-6.2-6.2-6.2-16.4 0-22.6l56.2-56.2-27.5-62c-2.7-6.1-1.4-13.1 3.3-17.8l16-16c6.2-6.2 16.4-6.2 22.6 0L96 329.4zM484.5 114.2L365.3 233.4l-86.6-86.6L397.8 27.5c6.7-6.7 15.2-11.3 24.5-13.1L492.9 .3c5.2-1 10.7 .6 14.5 4.4s5.4 9.2 4.4 14.5L497.6 89.6c-1.9 9.3-6.4 17.8-13.1 24.5z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [640, 512, [127782], \"f743\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l10.4 62.4c-23.3 10.8-42.9 28.4-56 50.3c-14.6-9-31.8-14.1-50.2-14.1c-53 0-96 43-96 96c0 35.5 19.3 66.6 48 83.2c.8 31.8 13.2 60.7 33.1 82.7l-56 39.2c-4.5 3.1-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM208 144c13.8 0 26.7 4.4 37.1 11.9c-1.2 4.1-2.2 8.3-3 12.6c-37.9 14.6-67.2 46.6-77.8 86.4C151.8 243.1 144 226.5 144 208c0-35.3 28.7-64 64-64zm69.4 276c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm74.5-116.1c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faAlbum = {\n prefix: 'fas',\n iconName: 'album',\n icon: [448, 512, [128189], \"f89f\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM384 256A160 160 0 1 0 64 256a160 160 0 1 0 320 0zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCircleN = {\n prefix: 'fas',\n iconName: 'circle-n',\n icon: [512, 512, [], \"e118\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM203.7 138.3L304 283.2V152c0-13.3 10.7-24 24-24s24 10.7 24 24V360c0 10.5-6.8 19.8-16.8 22.9s-20.9-.6-26.9-9.2L208 228.8V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-10.5 6.8-19.8 16.8-22.9s20.9 .6 26.9 9.2z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V64zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V64zM320 320c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faWheatAwn = {\n prefix: 'fas',\n iconName: 'wheat-awn',\n icon: [512, 512, [\"wheat-alt\"], \"e2cd\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3z\"]\n};\nvar faWheatAlt = faWheatAwn;\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [9765], \"f644\", \"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1c-5.9 6.2-11.8 11.8-17.4 16.7c-5.6-4.9-11.5-10.5-17.4-16.7C116.7 204.6 96 169.6 96 128zM160 0C89.3 0 32 57.3 32 128c0 52.4 21.5 95.5 46.8 128H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V480c0 17.7 14.3 32 32 32s32-14.3 32-32V320h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H241.2c25.4-32.5 46.8-75.6 46.8-128C288 57.3 230.7 0 160 0z\"]\n};\nvar faHandsHoldingChild = {\n prefix: 'fas',\n iconName: 'hands-holding-child',\n icon: [640, 512, [], \"e4fa\", \"M320 0a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm44.7 164.3L375.8 253c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35h-7.6l-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8L255.5 181c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 104.8 295.3 96 320 96s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8l-19.8-16.7zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [384, 512, [10033, 61545], \"2a\", \"M192 32c17.7 0 32 14.3 32 32V199.5l111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V312.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faKeySkeletonLeftRight = {\n prefix: 'fas',\n iconName: 'key-skeleton-left-right',\n icon: [640, 512, [], \"e3b4\", \"M576 128a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm64 0c0 70.7-57.3 128-128 128c-59.6 0-109.8-40.8-124-96H320v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V160H224l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l196 0C402.2 40.8 452.4 0 512 0c70.7 0 128 57.3 128 128zM64 384a64 64 0 1 0 128 0A64 64 0 1 0 64 384zM0 384c0-70.7 57.3-128 128-128c59.6 0 109.8 40.8 124 96l68 0V320c0-17.7 14.3-32 32-32s32 14.3 32 32v32h32l0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-196 0c-14.2 55.2-64.3 96-124 96C57.3 512 0 454.7 0 384z\"]\n};\nvar faCommentLines = {\n prefix: 'fas',\n iconName: 'comment-lines',\n icon: [512, 512, [], \"f4b0\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM152 176H360c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 96H264c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faLuchadorMask = {\n prefix: 'fas',\n iconName: 'luchador-mask',\n icon: [448, 512, [\"luchador\", \"mask-luchador\"], \"f455\", \"M224 0C100.3 0 0 100.3 0 224v96C0 426 86 512 192 512h64c106 0 192-86 192-192V224C448 100.3 347.7 0 224 0zM128 384c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H252.7 195.3 160c-17.7 0-32 14.3-32 32zm-32 0c0-33.2 25.2-60.5 57.6-63.7c-1-3.7-1.6-7.6-1.6-11.6c0-7.3 1.8-14.4 5.3-20.7H144c-44.2 0-80-35.8-80-80c0-26.5 21.5-48 48-48h32c44.2 0 80 35.8 80 80c0-44.2 35.8-80 80-80h32c26.5 0 48 21.5 48 48c0 44.2-35.8 80-80 80H290.7c3.4 6.3 5.3 13.4 5.3 20.7c0 4-.6 7.9-1.6 11.6c32.3 3.2 57.6 30.5 57.6 63.7c0 35.3-28.7 64-64 64H160c-35.3 0-64-28.7-64-64zm156.7-64h.2c6.1 0 11.1-5 11.1-11.1c0 0 0-.1 0-.1s0-.1 0-.1c0-3-1.2-5.9-3.3-8l-8-8-4.2-4.2-.4-.4-10.3-10.3C234 274 229.1 272 224 272s-10 2-13.7 5.7L200 288l-.4 .4-4.2 4.2-8 8c-2.1 2.1-3.3 5-3.3 8c0 0 0 .1 0 .1s0 .1 0 .1c0 6.1 5 11.1 11.1 11.1h.2 11.3 6 .6 21.5 .6 6 11.3zM112 192c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48h32c8.8 0 16-7.2 16-16c0-26.5-21.5-48-48-48H112zm240 16c0-8.8-7.2-16-16-16H304c-26.5 0-48 21.5-48 48c0 8.8 7.2 16 16 16h32c26.5 0 48-21.5 48-48z\"]\n};\nvar faLuchador = faLuchadorMask;\nvar faMaskLuchador = faLuchadorMask;\nvar faSquareCheck = {\n prefix: 'fas',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckSquare = faSquareCheck;\nvar faShredder = {\n prefix: 'fas',\n iconName: 'shredder',\n icon: [512, 512, [], \"f68a\", \"M64 64C64 28.7 92.7 0 128 0H354.7c17 0 33.3 6.7 45.3 18.7L429.3 48c12 12 18.7 28.3 18.7 45.3V192c35.3 0 64 28.7 64 64v96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V256c0-35.3 28.7-64 64-64V64zM384 93.3L354.7 64H128V192H384V93.3zM432 296a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM40 416H88v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V416zm96 0h48v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V416zm96 0h48v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V416zm96 0h48v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V416zm96 0h48v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V416z\"]\n};\nvar faBookOpenCover = {\n prefix: 'fas',\n iconName: 'book-open-cover',\n icon: [640, 512, [\"book-open-alt\"], \"e0c0\", \"M304 32V408L96 368V34.7C96 14.9 113.8-.2 133.3 3.1L304 32zM89.7 405.1L320 451.2l230.3-46.1c15-3 25.7-16.1 25.7-31.4V28.8l25.7-5.1C621.5 19.7 640 34.8 640 55V421.8c0 15.3-10.8 28.4-25.7 31.4L320 512 25.7 453.1C10.8 450.2 0 437 0 421.8V55C0 34.8 18.5 19.7 38.3 23.7L64 28.8v345c0 15.3 10.8 28.4 25.7 31.4zM336 408V32L506.7 3.1C526.2-.2 544 14.9 544 34.7V368L336 408z\"]\n};\nvar faBookOpenAlt = faBookOpenCover;\nvar faSandwich = {\n prefix: 'fas',\n iconName: 'sandwich',\n icon: [512, 512, [129386], \"f81f\", \"M0 96C0 78.3 14.3 64 32 64H480c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V96zM303.9 382.6c10 5.8 22.3 5.8 32.2 0l70.2-40.9c6.4-3.7 13.6-5.7 20.9-5.7H432h48c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V368c0-17.7 14.3-32 32-32H208h4.8c7.4 0 14.6 2 20.9 5.7l70.2 40.9zM32 304c-17.7 0-32-14.3-32-32s14.3-32 32-32c7.2 0 15.8-3.7 35.4-13c16.6-7.8 40.6-19 68.6-19c30.6 0 53 10.2 70.1 18l1.9 .9c17.2 7.8 29.7 13.1 48.1 13.1s30.9-5.3 48.1-13.1l1.9-.9c17-7.8 39.4-18 70.1-18c28 0 52.1 11.3 68.6 19c19.6 9.2 28.2 13 35.4 13c17.7 0 32 14.3 32 32s-14.3 32-32 32c-22.7 0-44.3-10.3-58.8-17.2l0 0c-1.3-.6-2.6-1.2-3.8-1.8c-17.4-8.2-29.4-13-41.4-13c-16.2 0-27.5 5-45.4 13.1l-.1 0c-18 8.2-41.4 18.9-74.5 18.9s-56.6-10.7-74.5-18.9l-.1 0C163.5 277 152.2 272 136 272c-12 0-23.9 4.7-41.4 13c-1.2 .6-2.5 1.2-3.8 1.8C76.3 293.7 54.7 304 32 304z\"]\n};\nvar faPesetaSign = {\n prefix: 'fas',\n iconName: 'peseta-sign',\n icon: [384, 512, [], \"e221\", \"M64 32C46.3 32 32 46.3 32 64v96c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 96V448c0 17.7 14.3 32 32 32s32-14.3 32-32V352h96c77.4 0 142-55 156.8-128H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-3.2C334 87 269.4 32 192 32H64zM282.5 160H96V96h96c41.8 0 77.4 26.7 90.5 64zM96 224H282.5c-13.2 37.3-48.7 64-90.5 64H96V224z\"]\n};\nvar faSquareParkingSlash = {\n prefix: 'fas',\n iconName: 'square-parking-slash',\n icon: [640, 512, [\"parking-slash\"], \"f617\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68V96c0-35.3-28.7-64-64-64H160c-21.6 0-40.7 10.7-52.3 27.1L38.8 5.1zM227 152.7c6-14.5 20.3-24.7 37-24.7h72c53 0 96 43 96 96c0 26.3-10.6 50.2-27.8 67.5l-51.4-40.3c9.1-5.6 15.2-15.7 15.2-27.2c0-17.7-14.3-32-32-32H288v8.4l-61-47.8zM224 288V272.5L96 171.6V416c0 35.3 28.7 64 64 64H480c2.3 0 4.6-.1 6.9-.4L288 322.9V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V288z\"]\n};\nvar faParkingSlash = faSquareParkingSlash;\nvar faTrainTunnel = {\n prefix: 'fas',\n iconName: 'train-tunnel',\n icon: [512, 512, [], \"e454\", \"M256 0C114.6 0 0 114.6 0 256V448c0 35.3 28.7 64 64 64h41.4l64.3-64.3C137.3 444.5 112 417.2 112 384V192c0-35.3 28.7-64 64-64H336c35.3 0 64 28.7 64 64V384c0 33.2-25.3 60.5-57.7 63.7L406.6 512H448c35.3 0 64-28.7 64-64V256C512 114.6 397.4 0 256 0zM361.4 512l-64-64H214.6l-64 64H361.4zM184 192c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24H328c13.3 0 24-10.7 24-24V216c0-13.3-10.7-24-24-24H184zM288 384a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [448, 512, [\"header\"], \"f1dc\", \"M0 64C0 46.3 14.3 32 32 32H80h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H112V208H336V96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h48 48c17.7 0 32 14.3 32 32s-14.3 32-32 32H400V240 416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H368 320c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112V416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V240 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faHeader = faHeading;\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [128123], \"f6e2\", \"M40.1 467.1l-11.2 9c-3.2 2.5-7.1 3.9-11.1 3.9C8 480 0 472 0 462.2V192C0 86 86 0 192 0S384 86 384 192V462.2c0 9.8-8 17.8-17.8 17.8c-4 0-7.9-1.4-11.1-3.9l-11.2-9c-13.4-10.7-32.8-9-44.1 3.9L269.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6l-26.6-30.5c-12.7-14.6-35.4-14.6-48.2 0L141.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6L84.2 471c-11.3-12.9-30.7-14.6-44.1-3.9zM160 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faFaceAnguished = {\n prefix: 'fas',\n iconName: 'face-anguished',\n icon: [512, 512, [], \"e369\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-192c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zM144.4 224a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM192 128c-4.4 0-8.8 .3-13 .9c-21.2 2.8-40.6 12.4-56.1 26.8c-6.5 6-16.6 5.7-22.6-.8s-5.7-16.6 .8-22.6c20.1-18.7 45.5-31.5 73.7-35.2c5.6-.7 11.4-1.1 17.2-1.1c8.8 0 16 7.2 16 16s-7.2 16-16 16zm141 .9c-4.3-.6-8.6-.9-13-.9c-8.8 0-16-7.2-16-16s7.2-16 16-16c5.8 0 11.6 .4 17.2 1.1c28.2 3.7 53.7 16.4 73.7 35.2c6.5 6 6.8 16.2 .8 22.6s-16.2 6.8-22.6 .8c-15.5-14.5-34.8-24-56.1-26.8z\"]\n};\nvar faHockeySticks = {\n prefix: 'fas',\n iconName: 'hockey-sticks',\n icon: [640, 512, [], \"f454\", \"M220.6 17.7l82.3 164.6-35.8 71.6L163.4 46.3c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3zM372.8 322.1L387.8 352H544V480v32H480v0H435.8c-24.2 0-46.4-13.7-57.2-35.4l-41.5-83 35.8-71.6zM576 352h32c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H576V352zM462.3 3.4c15.8 7.9 22.2 27.1 14.3 42.9L261.5 476.6c-10.8 21.7-33 35.4-57.2 35.4H160 128 96V480 352H252.2L419.4 17.7c7.9-15.8 27.1-22.2 42.9-14.3zM0 384c0-17.7 14.3-32 32-32H64V512H32c-17.7 0-32-14.3-32-32V384z\"]\n};\nvar faAbacus = {\n prefix: 'fas',\n iconName: 'abacus',\n icon: [576, 512, [129518], \"f640\", \"M512 96V208H448V176h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V96h64zm-96 32h-8c-13.3 0-24 10.7-24 24s10.7 24 24 24h8v32H288V176h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V96H416v32zm-160 0h-8c-13.3 0-24 10.7-24 24s10.7 24 24 24h8v32H160V176h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V96h96v32zm-128 0h-8c-13.3 0-24 10.7-24 24s10.7 24 24 24h8v32H64V96h64v32zM64 416l0-176h64v24h-8c-13.3 0-24 10.7-24 24s10.7 24 24 24h8v24h-8c-13.3 0-24 10.7-24 24s10.7 24 24 24h8v32H64zm96-32h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V312h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V240h96v24h-8c-13.3 0-24 10.7-24 24s10.7 24 24 24h8v24h-8c-13.3 0-24 10.7-24 24s10.7 24 24 24h8v32H160V384zm128-72h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V240H416v96h-8c-13.3 0-24 10.7-24 24s10.7 24 24 24h8v32H288V384h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V312zm160 72h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V240h64V416H448V384zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faFilmSimple = {\n prefix: 'fas',\n iconName: 'film-simple',\n icon: [512, 512, [\"film-alt\"], \"f3a0\", \"M384 32H128V80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64V432c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48H384V432c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64V80c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16V32zM64 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176zm336-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16zM64 304c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V304zm336-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16z\"]\n};\nvar faFilmAlt = faFilmSimple;\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [\"list-squares\"], \"f03a\", \"M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z\"]\n};\nvar faListSquares = faList;\nvar faTreePalm = {\n prefix: 'fas',\n iconName: 'tree-palm',\n icon: [576, 512, [127796], \"f82b\", \"M102.9 91.4l30.3 50.5c-4 3.5-8 7.2-12 11.2c-71 71-60.2 151-32.7 191.3c5 7.3 15.2 7.3 21.4 1L248.4 206.9c4 10.8 7.8 26.2 9.7 47.2c4.2 46.5-1.6 116.8-32.7 216.4c-3 9.7-1.3 20.3 4.8 28.5s15.6 13 25.8 13h64c16.1 0 29.8-12 31.8-28c12.4-99-2.3-207.2-31.7-292H446.7c2.8 0 5.4-1.5 6.9-3.9l19.6-32.7c3.1-5.2 10.6-5.2 13.7 0l19.6 32.7c1.4 2.4 4.1 3.9 6.9 3.9H560c8.8 0 16.1-7.2 14.4-15.9C565.3 128.2 516.4 64 416 64c-43.7 0-77.6 12.2-102.8 29.8C296.5 49.4 248 0 160 0C59.6 0 10.7 64.2 1.6 112.1C-.1 120.8 7.2 128 16 128H62.7c2.8 0 5.4-1.5 6.9-3.9L89.1 91.4c3.1-5.2 10.6-5.2 13.7 0z\"]\n};\nvar faSquarePhoneFlip = {\n prefix: 'fas',\n iconName: 'square-phone-flip',\n icon: [448, 512, [\"phone-square-alt\"], \"f87b\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zm-90.7 96.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L280 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C111.1 378 119 384 128 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z\"]\n};\nvar faPhoneSquareAlt = faSquarePhoneFlip;\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM252 160c0 11 9 20 20 20h44v44c0 11 9 20 20 20s20-9 20-20V180h44c11 0 20-9 20-20s-9-20-20-20H356V96c0-11-9-20-20-20s-20 9-20 20v44H272c-11 0-20 9-20 20z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M192 64C86 64 0 150 0 256S86 448 192 448H448c106 0 192-86 192-192s-86-192-192-192H192zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V200z\"]\n};\nvar faBorderCenterV = {\n prefix: 'fas',\n iconName: 'border-center-v',\n icon: [448, 512, [], \"f89d\", \"M448 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 352A32 32 0 1 0 0 352a32 32 0 1 0 64 0zM384 160a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zM64 160A32 32 0 1 0 0 160a32 32 0 1 0 64 0zm320 96a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zM64 256A32 32 0 1 0 0 256a32 32 0 1 0 64 0zM384 64a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zM0 64a32 32 0 1 0 64 0A32 32 0 1 0 0 64zM64 448A32 32 0 1 0 0 448a32 32 0 1 0 64 0zM288 256a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zM352 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM288 448a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zM160 64A32 32 0 1 0 96 64a32 32 0 1 0 64 0zM96 448a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm64-192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 384z\"]\n};\nvar faCircleDot = {\n prefix: 'fas',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-352a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faDotCircle = faCircleDot;\nvar faClipboardMedical = {\n prefix: 'fas',\n iconName: 'clipboard-medical',\n icon: [384, 512, [], \"e133\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H224v48c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V352H112c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16h48V240z\"]\n};\nvar faFaceDizzy = {\n prefix: 'fas',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-224a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM100.7 132.7c6.2-6.2 16.4-6.2 22.6 0L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6zm192 0c6.2-6.2 16.4-6.2 22.6 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faDizzy = faFaceDizzy;\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [129370], \"f7fb\", \"M192 496C86 496 0 394 0 288C0 176 64 16 192 16s192 160 192 272c0 106-86 208-192 208zM154.8 134c6.5-6 7-16.1 1-22.6s-16.1-7-22.6-1c-23.9 21.8-41.1 52.7-52.3 84.2C69.7 226.1 64 259.7 64 288c0 8.8 7.2 16 16 16s16-7.2 16-16c0-24.5 5-54.4 15.1-82.8c10.1-28.5 25-54.1 43.7-71.2z\"]\n};\nvar faUpToLine = {\n prefix: 'fas',\n iconName: 'up-to-line',\n icon: [384, 512, [\"arrow-alt-to-top\"], \"f34d\", \"M342.1 262.1L219.3 139.3c-7.2-7.2-17.1-11.3-27.3-11.3s-20.1 4.1-27.3 11.3L41.9 262.1c-6.4 6.4-9.9 15-9.9 24C32 304.8 47.2 320 65.9 320l62.1 0 0 128c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V320l62.1 0c18.7 0 33.9-15.2 33.9-33.9c0-9-3.6-17.6-9.9-24zM32 96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96z\"]\n};\nvar faArrowAltToTop = faUpToLine;\nvar faHouseMedicalCircleXmark = {\n prefix: 'fas',\n iconName: 'house-medical-circle-xmark',\n icon: [640, 512, [], \"e513\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faWatchFitness = {\n prefix: 'fas',\n iconName: 'watch-fitness',\n icon: [384, 512, [], \"f63e\", \"M64 48C64 21.5 85.5 0 112 0H272c26.5 0 48 21.5 48 48H64zm0 416H320c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48zM0 160c0-44.2 35.8-80 80-80H304c44.2 0 80 35.8 80 80V352c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V160zm141.3 0C107.4 160 80 187.4 80 221.3c0 16.2 6.5 31.8 17.9 43.3l82.7 82.7c6.2 6.2 16.4 6.2 22.6 0l82.7-82.7c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3c-16.2 0-31.8 6.5-43.3 17.9l-7.4 7.4-7.4-7.4c-11.5-11.5-27.1-17.9-43.3-17.9z\"]\n};\nvar faClockNineThirty = {\n prefix: 'fas',\n iconName: 'clock-nine-thirty',\n icon: [512, 512, [], \"e34d\", \"M256 512A256 256 0 1 1 256 0a256 256 0 1 1 0 512zm24-120V256c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24s10.7 24 24 24h80V392c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [576, 512, [9978], \"f6bb\", \"M377 52c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5L288 60.8 249 12c-11-13.8-31.2-16-45-5s-16 31.2-5 45l48 60L12.3 405.4C4.3 415.4 0 427.7 0 440.4V464c0 26.5 21.5 48 48 48H288 528c26.5 0 48-21.5 48-48V440.4c0-12.7-4.3-25.1-12.3-35L329 112l48-60zM288 448H168.5L288 291.7 407.5 448H288z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416zM232 376c0 13.3 10.7 24 24 24s24-10.7 24-24V312h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V200c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faJug = {\n prefix: 'fas',\n iconName: 'jug',\n icon: [448, 512, [], \"f8c6\", \"M160 0H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM400 168c0-13.3-10.7-24-24-24c-10.3 0-19.1 6.5-22.5 15.6l25.1 32.2c12.1-1.3 21.4-11.5 21.4-23.9zm-89.3-63.3l11.8 15.1C335.7 105.2 354.8 96 376 96c39.8 0 72 32.2 72 72c0 29.2-17.4 54.3-42.3 65.6c6.8 15.8 10.3 32.9 10.3 50.3V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V283.9c0-28.5 9.5-56.1 27-78.6l78.3-100.7c2.1-2.6 3.7-5.6 4.8-8.7H305.9c1.1 3.1 2.7 6 4.8 8.7zM128 288c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32H128z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nvar faFutbolBall = faFutbol;\nvar faSoccerBall = faFutbol;\nvar faSnowBlowing = {\n prefix: 'fas',\n iconName: 'snow-blowing',\n icon: [640, 512, [], \"f761\", \"M512 48h32c53 0 96 43 96 96s-43 96-96 96H416c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H512c-17.7 0-32-14.3-32-32s14.3-32 32-32zM176 64c13.3 0 24 10.7 24 24v25.4l12.7-12.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L200 158.6v55.8l48.3-27.9 12.9-48.2c2.3-8.5 11.1-13.6 19.6-11.3s13.6 11.1 11.3 19.6l-4.6 17.3 22-12.7c11.5-6.6 26.2-2.7 32.8 8.8s2.7 26.2-8.8 32.8l-22 12.7 17.3 4.6c8.5 2.3 13.6 11.1 11.3 19.6s-11.1 13.6-19.6 11.3l-48.2-12.9L224 256l48.3 27.9L320.6 271c8.5-2.3 17.3 2.8 19.6 11.3s-2.8 17.3-11.3 19.6l-17.3 4.6 22 12.7c11.5 6.6 15.4 21.3 8.8 32.8s-21.3 15.4-32.8 8.8l-22-12.7 4.6 17.3c2.3 8.5-2.8 17.3-11.3 19.6s-17.3-2.8-19.6-11.3l-12.9-48.2L200 297.6v55.8l35.3 35.3c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L200 398.6V424c0 13.3-10.7 24-24 24s-24-10.7-24-24V398.6l-12.7 12.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L152 353.4V297.6l-48.3 27.9L90.7 373.7c-2.3 8.5-11.1 13.6-19.6 11.3s-13.6-11.1-11.3-19.6l4.6-17.3-22 12.7C31 367.4 16.4 363.5 9.7 352s-2.7-26.2 8.8-32.8l22-12.7-17.3-4.6c-8.5-2.3-13.6-11.1-11.3-19.6s11.1-13.6 19.6-11.3l48.2 12.9L128 256 79.7 228.1 31.4 241c-8.5 2.3-17.3-2.8-19.6-11.3s2.8-17.3 11.3-19.6l17.3-4.6-22-12.7C7 186.2 3.1 171.5 9.7 160s21.3-15.4 32.8-8.8l22 12.7-4.6-17.3c-2.3-8.5 2.8-17.3 11.3-19.6s17.3 2.8 19.6 11.3l12.9 48.2L152 214.4V158.6l-35.3-35.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L152 113.4V88c0-13.3 10.7-24 24-24zM480 432c0-17.7 14.3-32 32-32h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H416c-17.7 0-32-14.3-32-32s14.3-32 32-32H536c53 0 96 43 96 96s-43 96-96 96H512c-17.7 0-32-14.3-32-32z\"]\n};\nvar faPaintbrush = {\n prefix: 'fas',\n iconName: 'paintbrush',\n icon: [576, 512, [128396, \"paint-brush\"], \"f1fc\", \"M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H208c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z\"]\n};\nvar faPaintBrush = faPaintbrush;\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [128274], \"f023\", \"M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z\"]\n};\nvar faArrowDownFromLine = {\n prefix: 'fas',\n iconName: 'arrow-down-from-line',\n icon: [384, 512, [8615, \"arrow-from-top\"], \"f345\", \"M214.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 370.7V192c0-17.7 14.3-32 32-32s32 14.3 32 32V370.7l73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128zM32 96C14.3 96 0 81.7 0 64S14.3 32 32 32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32z\"]\n};\nvar faArrowFromTop = faArrowDownFromLine;\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [9981], \"f52f\", \"M32 64C32 28.7 60.7 0 96 0H256c35.3 0 64 28.7 64 64V256h8c48.6 0 88 39.4 88 88v32c0 13.3 10.7 24 24 24s24-10.7 24-24V222c-27.6-7.1-48-32.2-48-62V96L384 64c-8.8-8.8-8.8-23.2 0-32s23.2-8.8 32 0l77.3 77.3c12 12 18.7 28.3 18.7 45.3V168v24 32V376c0 39.8-32.2 72-72 72s-72-32.2-72-72V344c0-22.1-17.9-40-40-40h-8V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64zM96 80v96c0 8.8 7.2 16 16 16H240c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16z\"]\n};\nvar faSignalBarsSlash = {\n prefix: 'fas',\n iconName: 'signal-bars-slash',\n icon: [640, 512, [\"signal-alt-slash\"], \"f694\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L608 451.2V48c0-26.5-21.5-48-48-48s-48 21.5-48 48V376l-64-50.2V176c0-26.5-21.5-48-48-48s-48 21.5-48 48v74.6L38.8 5.1zM288 322.9l-74.7-58.8C200.5 272.7 192 287.4 192 304V464c0 26.5 21.5 48 48 48s48-21.5 48-48V322.9zM448 464V449l-96-75.6V464c0 26.5 21.5 48 48 48s48-21.5 48-48zM80 384c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48s48-21.5 48-48V432c0-26.5-21.5-48-48-48z\"]\n};\nvar faSignalAltSlash = faSignalBarsSlash;\nvar faMonkey = {\n prefix: 'fas',\n iconName: 'monkey',\n icon: [576, 512, [128018], \"f6fb\", \"M160 416c0-89.7 61.4-165 144.5-186.1C329.1 265 369.9 288 416 288c9.8 0 19.4-1 28.7-3L526.5 363c31.6 30.2 49.5 72 49.5 115.7V480c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-26.2-10.7-51.3-29.7-69.4L416 346.1V448h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H416 160C71.6 512 0 440.4 0 352V110.1C0 49.3 49.3 0 110.1 0h10.4c57.2 0 102.8 47.8 100.1 104.9c-2.3 48.2-38.6 88-86.4 94.6l-1.9 .3c-17.5 2.4-33.7-9.8-36.1-27.3s9.8-33.7 27.3-36.1l1.9-.3c17.3-2.4 30.4-16.7 31.2-34.2c1-20.6-15.5-37.9-36.2-37.9H110.1C84.7 64 64 84.7 64 110.1V352c0 53 43 96 96 96V416zM416 256c-29.3 0-55.9-12.2-74.8-31.7c-9-9.3-16.2-20.2-21.3-32.3c-35.3 0-64-28.7-64-64s28.6-64 64-64c15.7-37.6 52.8-64 96-64s80.4 26.4 96 64c35.3 0 64 28.7 64 64s-28.6 64-64 64c-15.7 37.6-52.8 64-96 64zM384 64c-26.5 0-48 21.5-48 48c0 20.8 13.2 38.4 31.6 45.1c4.7 1.7 8.4 5.9 8.4 10.9c0 22.1 17.9 40 40 40s40-17.9 40-40c0-5 3.7-9.2 8.4-10.9c18.5-6.7 31.6-24.4 31.6-45.1c0-26.5-21.5-48-48-48H384zm0 32a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faRectanglePro = {\n prefix: 'fas',\n iconName: 'rectangle-pro',\n icon: [640, 512, [\"pro\"], \"e235\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm40 128h56c35.3 0 64 28.7 64 64s-28.7 64-64 64H128v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 184c0-13.3 10.7-24 24-24zm56 80c8.8 0 16-7.2 16-16s-7.2-16-16-16H128v32h32zm80-56c0-13.3 10.7-24 24-24h56c35.3 0 64 28.7 64 64c0 21.9-11 41.2-27.7 52.7l24.1 38.5c7 11.2 3.6 26-7.6 33.1s-26 3.6-33.1-7.6l-33-52.7H288v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 184zm48 56h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H288v32zm200-80c48.6 0 88 39.4 88 88v16c0 48.6-39.4 88-88 88s-88-39.4-88-88V248c0-48.6 39.4-88 88-88zm-40 88v16c0 22.1 17.9 40 40 40s40-17.9 40-40V248c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nvar faPro = faRectanglePro;\nvar faHouseNight = {\n prefix: 'fas',\n iconName: 'house-night',\n icon: [640, 512, [], \"e010\", \"M125.2 16.1c6.2-4.4 5.4-14.8-2.2-15.6c-3.6-.4-7.3-.5-11-.5C50.1 0 0 50.1 0 112s50.1 112 112 112c32.1 0 61.1-13.5 81.5-35.2c5.2-5.6-1-14-8.6-13.2c-2.9 .3-5.9 .4-9 .4c-48.6 0-88-39.4-88-88c0-29.7 14.7-55.9 37.2-71.9zm138.3-3.8c-2.6-7-12.4-7-15 0L236.6 44.6 204.3 56.5c-7 2.6-7 12.4 0 15l32.3 11.9 11.9 32.3c2.6 7 12.4 7 15 0l11.9-32.3 32.3-11.9c7-2.6 7-12.4 0-15L275.4 44.6 263.5 12.3zm158.2 92.2c-12.3-11.3-31.2-11.3-43.4 0l-208 192c-9.7 8.9-12.9 22.9-8.1 35.2S178.8 352 192 352h32V464c0 26.5 21.5 48 48 48H528c26.5 0 48-21.5 48-48V352h32c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8.1-35.2l-208-192zM352 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V304zM88.5 332.3L76.6 364.6 44.3 376.5c-7 2.6-7 12.4 0 15l32.3 11.9 11.9 32.3c2.6 7 12.4 7 15 0l11.9-32.3 32.3-11.9c7-2.6 7-12.4 0-15l-32.3-11.9-11.9-32.3c-2.6-7-12.4-7-15 0z\"]\n};\nvar faHotTubPerson = {\n prefix: 'fas',\n iconName: 'hot-tub-person',\n icon: [512, 512, [\"hot-tub\"], \"f593\", \"M272 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L295.8 82.8C280.7 69.1 272 49.7 272 29.2V24zM0 320v16V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H277.3c-13.8 0-27.3-4.5-38.4-12.8l-85.3-64C137 166.7 116.8 160 96 160c-53 0-96 43-96 96v64zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm112 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM360 0c-13.3 0-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L407.8 82.8C392.7 69.1 384 49.7 384 29.2V24c0-13.3-10.7-24-24-24zM64 128A64 64 0 1 0 64 0a64 64 0 1 0 0 128z\"]\n};\nvar faHotTub = faHotTubPerson;\nvar faBlanket = {\n prefix: 'fas',\n iconName: 'blanket',\n icon: [448, 512, [], \"f498\", \"M0 128V352c0 70.7 57.3 128 128 128H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H128c-35.3 0-64-28.7-64-64s28.7-64 64-64H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H368c44.2 0 80-35.8 80-80V128c0-53-43-96-96-96H96C43 32 0 75 0 128z\"]\n};\nvar faMapLocation = {\n prefix: 'fas',\n iconName: 'map-location',\n icon: [576, 512, [\"map-marked\"], \"f59f\", \"M302.8 312C334.9 271.9 408 174.6 408 120C408 53.7 354.3 0 288 0S168 53.7 168 120c0 54.6 73.1 151.9 105.2 192c7.7 9.6 22 9.6 29.6 0zM416 503l144.9-58c9.1-3.6 15.1-12.5 15.1-22.3V152c0-17-17.1-28.6-32.9-22.3l-116 46.4c-.5 1.2-1 2.5-1.5 3.7c-2.9 6.8-6.1 13.7-9.6 20.6V503zM15.1 187.3C6 191 0 199.8 0 209.6V480.4c0 17 17.1 28.6 32.9 22.3L160 451.8V200.4c-3.5-6.9-6.7-13.8-9.6-20.6c-5.6-13.2-10.4-27.4-12.8-41.5l-122.6 49zM384 255c-20.5 31.3-42.3 59.6-56.2 77c-20.5 25.6-59.1 25.6-79.6 0c-13.9-17.4-35.7-45.7-56.2-77V449.4l192 54.9V255z\"]\n};\nvar faMapMarked = faMapLocation;\nvar faHouseFloodWater = {\n prefix: 'fas',\n iconName: 'house-flood-water',\n icon: [576, 512, [], \"e50e\", \"M306.8 6.1C295.6-2 280.4-2 269.2 6.1l-176 128c-11.2 8.2-15.9 22.6-11.6 35.8S98.1 192 112 192h16v73c1.7 1 3.3 2 4.9 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c1.5-1 3-2 4.5-2.9l-.3-73.2H464c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128zM269.5 309.9C247 325.4 219.5 336 192 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 389.7 159 400 192 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faCommentsQuestionCheck = {\n prefix: 'fas',\n iconName: 'comments-question-check',\n icon: [640, 512, [], \"e14f\", \"M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.2-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5zM180.2 77.3h48.5c29.1 0 52.6 23.6 52.6 52.6c0 18.8-10.1 36.3-26.4 45.6L228 191c-.2 10.9-9.1 19.6-20 19.6c-11 0-20-9-20-20V179.5c0-7.2 3.8-13.8 10-17.3L235 140.9c3.9-2.3 6.3-6.4 6.3-10.9c0-7-5.7-12.6-12.6-12.6H180.2c-2.8 0-5.3 1.8-6.3 4.4l-.4 1c-3.7 10.4-15.1 15.9-25.5 12.2s-15.9-15.1-12.2-25.5l.4-1c6.6-18.6 24.2-31.1 44-31.1zm27.8 160a26.7 26.7 0 1 1 0 53.3 26.7 26.7 0 1 1 0-53.3zm358.1 88.8l-80 80c-7.8 7.8-20.5 7.8-28.3 0l-40-40c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0L472 363.7l65.9-65.9c7.8-7.8 20.5-7.8 28.3 0s7.8 20.5 0 28.3z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [448, 512, [127794], \"f1bb\", \"M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208H104L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320H80L5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5H192v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448H424.5c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320h33.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208h24.9c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z\"]\n};\nvar faArrowsCross = {\n prefix: 'fas',\n iconName: 'arrows-cross',\n icon: [448, 512, [], \"e0a2\", \"M54.6 41.4c-12.5-12.5-32.8-12.5-45.3 0S-3.1 74.1 9.4 86.6L156.1 233.4l45.3-45.3L54.6 41.4zM338.7 416H288c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v50.7l-92.1-92.1-45.3 45.3L338.7 416zM288 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L9.4 425.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 141.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H288z\"]\n};\nvar faBackpack = {\n prefix: 'fas',\n iconName: 'backpack',\n icon: [448, 512, [127890], \"f5d4\", \"M192 48h64c4.4 0 8 3.6 8 8V96H184V56c0-4.4 3.6-8 8-8zm-56 8V96h-8C57.3 96 0 153.3 0 224V448c0 35.3 28.7 64 64 64l0-112V352c0-35.3 28.7-64 64-64H320c35.3 0 64 28.7 64 64v48V512c35.3 0 64-28.7 64-64V224c0-70.7-57.3-128-128-128h-8V56c0-30.9-25.1-56-56-56H192c-30.9 0-56 25.1-56 56zM352 512V416H96v96H352zM144 176H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16zM352 384V352c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32v32H352z\"]\n};\nvar faSquareSmall = {\n prefix: 'fas',\n iconName: 'square-small',\n icon: [320, 512, [], \"e27e\", \"M0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160z\"]\n};\nvar faFolderArrowUp = {\n prefix: 'fas',\n iconName: 'folder-arrow-up',\n icon: [512, 512, [\"folder-upload\"], \"e054\", \"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416zM280 376V273.9l31 31c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0l-72 72c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l31-31V376c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faFolderUpload = faFolderArrowUp;\nvar faBridgeLock = {\n prefix: 'fas',\n iconName: 'bridge-lock',\n icon: [640, 512, [], \"e4cc\", \"M32 64c0-17.7 14.3-32 32-32H576c17.7 0 32 14.3 32 32s-14.3 32-32 32H536v64h-8c-61.9 0-112 50.1-112 112v24.6c-9.9 5.8-18.2 14.1-23.8 24.1c-17.6-20-43.4-32.7-72.2-32.7c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V384c0-53-43-96-96-96V160h72V96H64C46.3 96 32 81.7 32 64zM408 96v64h80V96H408zm-48 64V96H280v64h80zM152 96v64h80V96H152zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faCrosshairsSimple = {\n prefix: 'fas',\n iconName: 'crosshairs-simple',\n icon: [512, 512, [], \"e59f\", \"M445.3 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h61.3C431.9 368.4 368.4 431.9 288 445.3V384c0-17.7-14.3-32-32-32s-32 14.3-32 32v61.3C143.6 431.9 80.1 368.4 66.7 288H128c17.7 0 32-14.3 32-32s-14.3-32-32-32H66.7C80.1 143.6 143.6 80.1 224 66.7V128c0 17.7 14.3 32 32 32s32-14.3 32-32V66.7C368.4 80.1 431.9 143.6 445.3 224zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256z\"]\n};\nvar faSackDollar = {\n prefix: 'fas',\n iconName: 'sack-dollar',\n icon: [512, 512, [128176], \"f81d\", \"M320 96H192L144.6 24.9C137.5 14.2 145.1 0 157.9 0H354.1c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128H320c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96H96c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4l0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84 88c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V424c0 11 9 20 20 20s20-9 20-20V410.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l0 0-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V216z\"]\n};\nvar faPenToSquare = {\n prefix: 'fas',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z\"]\n};\nvar faEdit = faPenToSquare;\nvar faSquareSliders = {\n prefix: 'fas',\n iconName: 'square-sliders',\n icon: [448, 512, [\"sliders-h-square\"], \"f3f0\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zm0-144c0 17.7-14.3 32-32 32l-32 0 0 16c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-16L96 368c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-16c0-17.7 14.3-32 32-32s32 14.3 32 32l0 16 32 0c17.7 0 32 14.3 32 32zM352 144c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0 0 16c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-16-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-16c0-17.7 14.3-32 32-32s32 14.3 32 32l0 16 160 0z\"]\n};\nvar faSlidersHSquare = faSquareSliders;\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [128663], \"f5e4\", \"M171.3 96H224v96H111.3l30.4-75.9C146.5 104 158.2 96 171.3 96zM272 192V96h81.2c9.7 0 18.9 4.4 25 12l67.2 84H272zm256.2 1L428.2 68c-18.2-22.8-45.8-36-75-36H171.3c-39.3 0-74.6 23.9-89.1 60.3L40.6 196.4C16.8 205.8 0 228.9 0 256V368c0 17.7 14.3 32 32 32H65.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H385.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H608c17.7 0 32-14.3 32-32V320c0-65.2-48.8-119-111.8-127zM434.7 368a48 48 0 1 1 90.5 32 48 48 0 1 1 -90.5-32zM160 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faMessageMiddleTop = {\n prefix: 'fas',\n iconName: 'message-middle-top',\n icon: [512, 512, [\"comment-middle-top-alt\"], \"e1e2\", \"M343.5 96H448c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64H168.5L243.7 5.8c3-3.6 7.5-5.8 12.3-5.8s9.3 2.1 12.3 5.8L343.5 96z\"]\n};\nvar faCommentMiddleTopAlt = faMessageMiddleTop;\nvar faLightbulbOn = {\n prefix: 'fas',\n iconName: 'lightbulb-on',\n icon: [640, 512, [], \"f672\", \"M69.3 4l48 32c11 7.4 14 22.3 6.7 33.3s-22.3 14-33.3 6.7l-48-32c-11-7.4-14-22.3-6.7-33.3S58.3-3.3 69.3 4zM597.3 44l-48 32c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l48-32c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3zM24 160H88c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm528 0h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552c-13.3 0-24-10.7-24-24s10.7-24 24-24zM117.3 332l-48 32c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l48-32c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3zm432-39.9l48 32c11 7.4 14 22.3 6.7 33.3s-22.3 14-33.3 6.7l-48-32c-11-7.4-14-22.3-6.7-33.3s22.3-14 33.3-6.7zm-100.1 5.7c-19.8 27.1-39.7 54.4-49.2 86.2H240c-9.6-31.9-29.5-59.1-49.2-86.2l0 0 0 0c-5.2-7.1-10.4-14.2-15.4-21.4C155.6 247.9 144 213.3 144 176C144 78.8 222.8 0 320 0s176 78.8 176 176c0 37.3-11.6 71.9-31.4 100.3c-5 7.2-10.2 14.3-15.4 21.4l0 0 0 0zM400 432c0 44.2-35.8 80-80 80s-80-35.8-80-80V416H400v16zM320 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-61.9 0-112 50.1-112 112c0 8.8 7.2 16 16 16s16-7.2 16-16c0-44.2 35.8-80 80-80z\"]\n};\nvar faKnife = {\n prefix: 'fas',\n iconName: 'knife',\n icon: [512, 512, [\"utensil-knife\"], \"f2e4\", \"M217.5 249.3l242-242c4.7-4.7 11-7.3 17.6-7.3c11.2 0 21 7.5 23.5 18.4C505.3 38.6 512 71.5 512 96c0 83.3-48.2 130.5-128.9 209.4c-6.5 6.4-13.3 13-20.3 19.9c-12.1 11.9-28.4 18.7-45.3 18.7h-11c-17 0-33.3-6.7-45.3-18.7l-14.6-14.6-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192 16-16c0 0 .1-.1 .1-.1z\"]\n};\nvar faUtensilKnife = faKnife;\nvar faShareNodes = {\n prefix: 'fas',\n iconName: 'share-nodes',\n icon: [448, 512, [\"share-alt\"], \"f1e0\", \"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z\"]\n};\nvar faShareAlt = faShareNodes;\nvar faDisplayChartUpCircleDollar = {\n prefix: 'fas',\n iconName: 'display-chart-up-circle-dollar',\n icon: [640, 512, [], \"e5e6\", \"M0 64C0 28.7 28.7 0 64 0H512c35.3 0 64 28.7 64 64V211.2c-19.5-10-41.1-16.4-64-18.5V64H64V352H320.7c-.5 5.3-.7 10.6-.7 16c0 59.5 29.5 112.1 74.8 144H160c-17.7 0-32-14.3-32-32s14.3-32 32-32h69.3L240 416H64c-35.3 0-64-28.7-64-64V64zm480 56v72.7c-16.7 1.5-32.7 5.3-47.7 11.2c-.2-1.3-.3-2.6-.3-3.9V177.9L321 289c-4.5 4.5-10.6 7-17 7s-12.5-2.5-17-7l-63-63-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L207 175c9.4-9.4 24.6-9.4 33.9 0l63 63L398.1 144H376c-13.3 0-24-10.7-24-24s10.7-24 24-24h80c13.3 0 24 10.7 24 24zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm120.8-32.6c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7V288c0-8.8-7.2-16-16-16s-16 7.2-16 16v9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6l0 0 0 0c7 2.3 15.1 4.8 23.7 6.6v11.4c0 8.8 7.2 16 16 16s16-7.2 16-16V438.7c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5l0-.1c-.1-1.9 .3-2.9 .8-3.6z\"]\n};\nvar faWaveSine = {\n prefix: 'fas',\n iconName: 'wave-sine',\n icon: [640, 512, [8767], \"f899\", \"M63.4 230.3l0-.1 .2-1c.2-.9 .5-2.4 1-4.3c1-3.8 2.5-9.4 4.6-16.2C73.6 195 80.3 177 90 159.4C110.2 122.8 137.8 96 176 96c29 0 49.1 14.4 67 44.4c19 31.8 31.9 75.4 46.3 124.5c.2 .8 .5 1.6 .7 2.4c13.5 46.2 28.4 97.5 52 137c25.1 42 63 75.6 122 75.6c73.8 0 118.2-53.2 142-96.6c12.3-22.4 20.6-44.5 25.7-60.8c2.6-8.2 4.5-15.1 5.7-20c.6-2.5 1.1-4.4 1.4-5.9c.2-.7 .3-1.3 .4-1.7l.1-.5 0-.2 0-.1 0 0c0 0 0 0-31.4-6.3l31.4 6.3c3.5-17.3-7.8-34.2-25.1-37.7s-34.2 7.8-37.7 25.1l0 0 0 .1-.2 1c-.2 .9-.5 2.4-1 4.3c-1 3.8-2.5 9.4-4.6 16.2c-4.3 13.7-11.1 31.6-20.8 49.2c-20.1 36.6-47.8 63.4-86 63.4c-29 0-49.1-14.4-67-44.4c-19-31.8-31.9-75.4-46.3-124.5c-.2-.8-.5-1.6-.7-2.4c-13.5-46.2-28.4-97.5-52-137C272.9 65.6 235 32 176 32C102.2 32 57.8 85.2 34 128.6C21.7 151 13.4 173 8.2 189.3c-2.6 8.2-4.5 15.1-5.7 20c-.6 2.5-1.1 4.4-1.4 5.9c-.2 .7-.3 1.3-.4 1.7l-.1 .5 0 .2 0 .1 0 0c0 0 0 0 31.4 6.3L.6 217.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1\"]\n};\nvar faHeartCircleMinus = {\n prefix: 'fas',\n iconName: 'heart-circle-minus',\n icon: [576, 512, [], \"e4ff\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faCircleW = {\n prefix: 'fas',\n iconName: 'circle-w',\n icon: [512, 512, [], \"e12c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM150.9 168.7L192 297.3l41.1-128.6c3.2-9.9 12.4-16.7 22.9-16.7s19.7 6.7 22.9 16.7L320 297.3l41.1-128.6c4-12.6 17.5-19.6 30.2-15.5s19.6 17.5 15.5 30.2l-64 200c-3.2 9.9-12.4 16.7-22.9 16.7s-19.7-6.7-22.9-16.7L256 254.7 214.9 383.3c-3.2 9.9-12.4 16.7-22.9 16.7s-19.7-6.7-22.9-16.7l-64-200c-4-12.6 2.9-26.1 15.5-30.2s26.1 2.9 30.2 15.5z\"]\n};\nvar faCircleCalendar = {\n prefix: 'fas',\n iconName: 'circle-calendar',\n icon: [512, 512, [\"calendar-circle\"], \"e102\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208 96c8.8 0 16 7.2 16 16v16h64V112c0-8.8 7.2-16 16-16s16 7.2 16 16v16h32c17.7 0 32 14.3 32 32v32H128V160c0-17.7 14.3-32 32-32h32V112c0-8.8 7.2-16 16-16zM128 352V224H384V352c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32z\"]\n};\nvar faCalendarCircle = faCircleCalendar;\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 19-5.6 37.4-16 53H112c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9L192 301.3l67.9 67.9c4.6 4.6 8.6 9.6 12.1 14.9H112z\"]\n};\nvar faHourglass2 = faHourglassHalf;\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [128300], \"f610\", \"M160 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32zM32 448H320c70.7 0 128-57.3 128-128s-57.3-128-128-128V128c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSunset = {\n prefix: 'fas',\n iconName: 'sunset',\n icon: [576, 512, [127751], \"f767\", \"M354.5 104.3L320 135.7V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V135.7l-34.5-31.3c-13.1-11.9-33.3-10.9-45.2 2.2s-10.9 33.3 2.2 45.2l88 80c12.2 11.1 30.8 11.1 43.1 0l88-80c13.1-11.9 14-32.1 2.2-45.2s-32.1-14-45.2-2.2zm48.7 132.8c-1-5.3-4.6-9.8-9.6-11.9s-10.7-1.5-15.2 1.6L288 289.1l-90.3-62.3c-4.5-3.1-10.2-3.7-15.2-1.6s-8.6 6.6-9.6 11.9L153 345 45.1 364.9c-5.3 1-9.8 4.6-11.9 9.6s-1.5 10.7 1.6 15.2L64 432H169.3c19-46.9 65-80 118.7-80s99.7 33.1 118.7 80H512l29.2-42.3c3.1-4.5 3.7-10.2 1.6-15.2s-6.6-8.6-11.9-9.6L423 345 403.1 237.1zM0 488c0 13.3 10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24H24c-13.3 0-24 10.7-24 24z\"]\n};\nvar faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32s14.3 32 32 32s32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96V288H160V264c0-30.9-25.1-56-56-56H56c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c4.4 0 8 3.6 8 8v24H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H256 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H400V264c0-4.4 3.6-8 8-8h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H408c-30.9 0-56 25.1-56 56v24H288V96zM480 416V384H32v32c0 53 43 96 96 96H384c53 0 96-43 96-96z\"]\n};\nvar faCalendarExclamation = {\n prefix: 'fas',\n iconName: 'calendar-exclamation',\n icon: [448, 512, [], \"f334\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192zM192 432a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm56-176v96c0 13.3-10.7 24-24 24s-24-10.7-24-24V256c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faTruckContainerEmpty = {\n prefix: 'fas',\n iconName: 'truck-container-empty',\n icon: [640, 512, [], \"e2b5\", \"M456 144c-13.3 0-24 10.7-24 24v88 32 32H208 80 32c-17.7 0-32 14.3-32 32v32 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16L432 384l17.6 0c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H608c17.7 0 32-14.3 32-32V288 272 261.7c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5H456zM585 256H480V192h48.8c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM176 400a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM80 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faHandHeart = {\n prefix: 'fas',\n iconName: 'hand-heart',\n icon: [512, 512, [], \"f4bc\", \"M256 0c17.7 0 32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V128c0-17.7 14.3-32 32-32s32 14.3 32 32V336c0 97.2-78.8 176-176 176H284.8c-59.6 0-116.9-22.9-160-64L12.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V32c0-17.7 14.3-32 32-32zM208 362.6c0 12.1 5.1 23.6 14.1 31.6l55.2 49.7c6.1 5.5 15.3 5.5 21.4 0l55.2-49.7c9-8.1 14.1-19.6 14.1-31.6c0-23.5-19.1-42.6-42.6-42.6h-1.1c-14.6 0-28.3 7.3-36.4 19.5c-8.1-12.2-21.7-19.5-36.4-19.5h-1.1c-23.5 0-42.6 19.1-42.6 42.6z\"]\n};\nvar faBagShopping = {\n prefix: 'fas',\n iconName: 'bag-shopping',\n icon: [448, 512, [\"shopping-bag\"], \"f290\", \"M160 112c0-35.3 28.7-64 64-64s64 28.7 64 64v48H160V112zm-48 48H48c-26.5 0-48 21.5-48 48V416c0 53 43 96 96 96H352c53 0 96-43 96-96V208c0-26.5-21.5-48-48-48H336V112C336 50.1 285.9 0 224 0S112 50.1 112 112v48zm24 48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm152 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faShoppingBag = faBagShopping;\nvar faArrowDownZA = {\n prefix: 'fas',\n iconName: 'arrow-down-z-a',\n icon: [576, 512, [\"sort-alpha-desc\", \"sort-alpha-down-alt\"], \"f881\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 64c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 96H352c-17.7 0-32-14.3-32-32zm96 192c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 448H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128c5.4-10.8 16.5-17.7 28.6-17.7zM395.8 400h40.4L416 359.6 395.8 400z\"]\n};\nvar faSortAlphaDesc = faArrowDownZA;\nvar faSortAlphaDownAlt = faArrowDownZA;\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M352 384H64L5.4 178.9C1.8 166.4 0 153.4 0 140.3C0 62.8 62.8 0 140.3 0h3.4c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192h2.8c34.9 0 63.3 28.3 63.3 63.3c0 15.9-6 31.2-16.8 42.9L352 384zM32 448c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V448z\"]\n};\nvar faReplyClock = {\n prefix: 'fas',\n iconName: 'reply-clock',\n icon: [640, 512, [\"reply-time\"], \"e239\", \"M352 144a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zM496 64c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H512V80c0-8.8-7.2-16-16-16zm0 256c5.1 0 10.2-.2 15.2-.6c.5 5.5 .8 11 .8 16.6c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96H224v64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 257.7 0 249.1 0 240s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4s19 16.6 19 29.2v64h96.7c8.1 89.7 83.5 160 175.3 160z\"]\n};\nvar faReplyTime = faReplyClock;\nvar faPersonRays = {\n prefix: 'fas',\n iconName: 'person-rays',\n icon: [512, 512, [], \"e54d\", \"M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9l-28.6 47.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L328 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H248zM7 7C16.4-2.3 31.6-2.3 41 7l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 41C-2.3 31.6-2.3 16.4 7 7zM471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7zM7 505c-9.4-9.4-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-9.4 9.4-24.6 9.4-33.9 0zm464 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faRight = {\n prefix: 'fas',\n iconName: 'right',\n icon: [448, 512, [11157, \"arrow-alt-right\"], \"f356\", \"M438.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-96L40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l184 0 0-96c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l160 160z\"]\n};\nvar faArrowAltRight = faRight;\nvar faCircleF = {\n prefix: 'fas',\n iconName: 'circle-f',\n icon: [512, 512, [], \"e10e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 128H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H208v64h88c13.3 0 24 10.7 24 24s-10.7 24-24 24H208v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 152c0-13.3 10.7-24 24-24z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z\"]\n};\nvar faFacePleading = {\n prefix: 'fas',\n iconName: 'face-pleading',\n icon: [512, 512, [], \"e386\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM302.7 427.9c6.6-5.9 7.1-16 1.2-22.6C294.7 395.1 278.7 384 256 384s-38.7 11.1-47.9 21.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c4.7-5.3 12.7-10.7 24.1-10.7s19.4 5.4 24.1 10.7c5.9 6.6 16 7.1 22.6 1.2zM240 240c0-41.5-31.5-75.6-72-79.6c10-10.8 17.6-24.1 21.9-38.8l1.5-5.2c2.4-8.5-2.5-17.4-11-19.8s-17.4 2.5-19.8 11l-1.5 5.2c-7 24.7-28.1 42.7-53.6 45.9L94 160.1c-8.8 1.1-15 9.1-13.9 17.9c1 8.1 7.9 14 15.9 14c-10 13.4-16 30-16 48c0 44.2 35.8 80 80 80s80-35.8 80-80zm192 0c0-18-6-34.6-16-48c8 0 14.9-5.9 15.9-14c1.1-8.8-5.1-16.8-13.9-17.9l-11.5-1.4c-25.5-3.2-46.6-21.3-53.6-45.9l-1.5-5.2c-2.4-8.5-11.3-13.4-19.8-11s-13.4 11.3-11 19.8l1.5 5.2c4.2 14.8 11.8 28 21.9 38.8c-40.4 4-72 38.1-72 79.6c0 44.2 35.8 80 80 80s80-35.8 80-80zm-304-8c17.7 0 32-14.3 32-32c0-5.8-1.5-11.2-4.2-15.8c1.4-.1 2.8-.2 4.2-.2c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56c0-5.7 .8-11.2 2.4-16.4c5.7 5.2 13.3 8.4 21.6 8.4zm224-32c0-5.8-1.5-11.2-4.2-15.8c1.4-.1 2.8-.2 4.2-.2c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56c0-5.7 .8-11.2 2.4-16.4c5.7 5.2 13.3 8.4 21.6 8.4c17.7 0 32-14.3 32-32z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\"]\n};\nvar faFlaskVial = {\n prefix: 'fas',\n iconName: 'flask-vial',\n icon: [640, 512, [], \"e4f3\", \"M175 389.4c-9.8 16-15 34.3-15 53.1c-10 3.5-20.8 5.5-32 5.5c-53 0-96-43-96-96V64C14.3 64 0 49.7 0 32S14.3 0 32 0H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V309.9l-49 79.6zM96 64v96h64V64H96zM352 0H480h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V214.9L629.7 406.2c6.7 10.9 10.3 23.5 10.3 36.4c0 38.3-31.1 69.4-69.4 69.4H261.4c-38.3 0-69.4-31.1-69.4-69.4c0-12.8 3.6-25.4 10.3-36.4L320 214.9V64c-17.7 0-32-14.3-32-32s14.3-32 32-32h32zm32 64V224c0 5.9-1.6 11.7-4.7 16.8L330.5 320h171l-48.8-79.2c-3.1-5-4.7-10.8-4.7-16.8V64H384z\"]\n};\nvar faPoliceBox = {\n prefix: 'fas',\n iconName: 'police-box',\n icon: [384, 512, [], \"e021\", \"M192 0c8.8 0 16 7.2 16 16V32h80c17.7 0 32 14.3 32 32c17.7 0 32 14.3 32 32V464h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V96c0-17.7 14.3-32 32-32c0-17.7 14.3-32 32-32h80V16c0-8.8 7.2-16 16-16zM96 136v24h32V128H104c-4.4 0-8 3.6-8 8zm0 40v24c0 4.4 3.6 8 8 8h24V176H96zm72-48H144v32h32V136c0-4.4-3.6-8-8-8zm-24 48v32h24c4.4 0 8-3.6 8-8V176H144zm72-48c-4.4 0-8 3.6-8 8v24h32V128H216zm24 48H208v24c0 4.4 3.6 8 8 8h24V176zm16-48v32h32V136c0-4.4-3.6-8-8-8H256zm32 48H256v32h24c4.4 0 8-3.6 8-8V176zM96 256v48c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16V256c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16z\"]\n};\nvar faCucumber = {\n prefix: 'fas',\n iconName: 'cucumber',\n icon: [512, 512, [129362], \"e401\", \"M37.5 474.5c47.8 47.8 124 49.9 174.3 6.3c12.6 10.3 31.1 9.6 42.9-2.2c11.6-11.6 12.4-30 2.4-42.6L436 257c12.6 10.1 31 9.3 42.6-2.4c11.7-11.7 12.5-30.3 2.2-42.9c43.6-50.3 41.5-126.5-6.3-174.3c-50-50-131-50-181 0L172 159c-12.6-10.1-31-9.3-42.6 2.4s-12.4 30-2.4 42.6L37.5 293.5c-50 50-50 131 0 181zM400 88a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM304 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM120 304a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faHeadSideBrain = {\n prefix: 'fas',\n iconName: 'head-side-brain',\n icon: [512, 512, [], \"f808\", \"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM285.3 208H336c26.5 0 48-21.5 48-48s-21.5-48-48-48c-.9 0-1.8 0-2.7 .1C326.7 93.4 308.9 80 288 80c-8.6 0-16.6 2.2-23.5 6.2C255.9 72.8 241 64 224 64s-31.9 8.8-40.5 22.2c-7-3.9-15-6.2-23.5-6.2c-26.5 0-48 21.5-48 48c-26.5 0-48 21.5-48 48c0 20.9 13.4 38.7 32.1 45.3c0 .9-.1 1.8-.1 2.7c0 26.5 21.5 48 48 48c5.6 0 11-1 16-2.7V288c0 17.7 14.3 32 32 32s32-14.3 32-32V269.3c5 1.8 10.4 2.7 16 2.7c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16zM160 176v2.7l-.1 0c0-.9 .1-1.8 .1-2.7z\"]\n};\nvar faHand = {\n prefix: 'fas',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32z\"]\n};\nvar faHandPaper = faHand;\nvar faPersonBikingMountain = {\n prefix: 'fas',\n iconName: 'person-biking-mountain',\n icon: [640, 512, [128693, \"biking-mountain\"], \"f84b\", \"M448 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM427.2 160l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1V416c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H427.2zm-238.8 6.7L290.8 89.9c7.2-5.4 8.5-15.7 2.9-22.8L278.8 48.4c-21.6-27-60.7-32-88.4-11.2L125.2 86.1c-7.2 5.4-8.5 15.7-2.9 22.8l44 55c5.4 6.7 15.2 8 22.1 2.8zM120 256c-12.1 0-22.1 8.9-23.8 20.6c-7.6 2.2-14.9 5.3-21.7 9c-9.4-7.1-22.8-6.3-31.3 2.3L31.8 299.1c-8.6 8.6-9.3 21.9-2.3 31.3c-3.7 6.9-6.8 14.1-9 21.8C8.9 353.9 0 363.9 0 376v16c0 12.1 8.9 22.1 20.6 23.8c2.2 7.6 5.3 14.9 9 21.8c-7 9.4-6.3 22.8 2.3 31.3l11.3 11.3c8.6 8.6 21.9 9.3 31.3 2.2c6.8 3.7 14.1 6.8 21.7 9C97.9 503.1 107.9 512 120 512h16c12.1 0 22.1-8.9 23.8-20.6c7.6-2.2 14.9-5.3 21.7-9c9.4 7 22.8 6.3 31.3-2.2l11.3-11.3c8.6-8.6 9.3-21.9 2.3-31.3c3.7-6.8 6.8-14.1 9-21.7c11.6-1.7 20.6-11.7 20.6-23.8V376c0-12.1-8.9-22.1-20.6-23.8c-2.2-7.6-5.3-14.9-9-21.7c7-9.4 6.3-22.8-2.3-31.3l-11.3-11.3c-8.6-8.6-21.9-9.3-31.3-2.3c-6.8-3.7-14.1-6.8-21.7-9C158.1 264.9 148.1 256 136 256H120zm8 64a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm352.2-43.4c-7.6 2.2-14.9 5.3-21.7 9c-9.4-7.1-22.8-6.3-31.3 2.3l-11.3 11.3c-8.6 8.6-9.3 21.9-2.2 31.3c-3.7 6.9-6.8 14.1-9 21.8C392.9 353.9 384 363.9 384 376v16c0 12.1 8.9 22.1 20.6 23.8c2.2 7.6 5.3 14.9 9 21.8c-7 9.4-6.3 22.8 2.2 31.3l11.3 11.3c8.5 8.6 21.9 9.3 31.3 2.2c6.8 3.7 14.1 6.8 21.7 9c1.7 11.6 11.7 20.6 23.8 20.6h16c12.1 0 22.1-8.9 23.8-20.6c7.6-2.2 14.9-5.3 21.8-9c9.4 7 22.8 6.3 31.3-2.2l11.3-11.3c8.6-8.6 9.3-21.9 2.2-31.3c3.7-6.8 6.8-14.1 9-21.7c11.6-1.7 20.6-11.7 20.6-23.8V376c0-12.1-8.9-22.1-20.6-23.8c-2.2-7.6-5.3-14.9-9-21.7c7-9.4 6.3-22.8-2.2-31.3l-11.3-11.3c-8.6-8.6-21.9-9.3-31.3-2.3c-6.9-3.7-14.1-6.8-21.8-9C542.1 264.9 532.1 256 520 256H504c-12.1 0-22.1 8.9-23.8 20.6zM448 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faBikingMountain = faPersonBikingMountain;\nvar faUtensilsSlash = {\n prefix: 'fas',\n iconName: 'utensils-slash',\n icon: [640, 512, [], \"e464\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68V352 240 32c0-17.7-14.3-32-32-32C496 0 384 32 384 176v99.7l-77.6-60.8c8.6-13.6 13.6-29.7 13.6-47c0-6.4-.7-12.8-2.1-19.1L287.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S256 7.8 256 16V150.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L223.9 14.6C223.2 6.3 216.3 0 208 0s-15.2 6.3-15.9 14.6l-9.4 103.3L160 100.1V16c0-8.2-6.1-15-14.3-15.9s-15.6 4.5-17.4 12.4L116.5 66 38.8 5.1zM176 255.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V285.1L96.1 171.7c1.9 44.2 36.3 80 79.9 83.9z\"]\n};\nvar faPrintMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'print-magnifying-glass',\n icon: [640, 512, [\"print-search\"], \"f81a\", \"M192 0H418.7c17 0 33.3 6.7 45.3 18.7L493.3 48c12 12 18.7 28.3 18.7 45.3V160H448V93.3L418.7 64H192v96H128V64c0-35.3 28.7-64 64-64zM128 192H352c-38.9 29.2-64 75.7-64 128c0 11 1.1 21.7 3.2 32H192v16 16 64H352c26.7 20.1 60 32 96 32c17.5 0 34.4-2.8 50.2-8l6.3 6.3c-10.8 20.1-32 33.8-56.4 33.8H192c-35.3 0-64-28.7-64-64V384H96c-17.7 0-32-14.3-32-32V256c0-35.3 28.7-64 64-64zM448 400.2a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0 48c-70.7 0-128-57.3-128-128s57.3-128 128-128s128 57.3 128 128c0 26.7-8.2 51.4-22.1 71.9L633 471.2c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L519.9 426c-20.5 14-45.3 22.1-71.9 22.1z\"]\n};\nvar faPrintSearch = faPrintMagnifyingGlass;\nvar faFolderBookmark = {\n prefix: 'fas',\n iconName: 'folder-bookmark',\n icon: [512, 512, [], \"e186\", \"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM288 176V336c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L368 308l54.4 40.8c4.8 3.6 11.3 4.2 16.8 1.5s8.8-8.2 8.8-14.3V176c0-8.8-7.2-16-16-16H304c-8.8 0-16 7.2-16 16z\"]\n};\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [128329], \"f679\", \"M379.3 4.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6l-16-16zM115.2 169.6c8-6 17.9-9.6 28.8-9.6c26.5 0 48 21.5 48 48s-21.5 48-48 48H109.8c-7.6 0-13.8 6.2-13.8 13.8c0 1.5 .2 2.9 .7 4.4l8 24c4.4 13.1 16.6 21.9 30.4 21.9H144h16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-50.8 0-82.7-21.5-102.2-42.8c-9.9-10.8-16.6-21.6-20.9-29.7c-2.1-4-3.6-7.3-4.5-9.6c-.5-1.1-.8-2-1-2.5l-.2-.5 0-.1c-2.6-7.8-10.7-12.3-18.7-10.5C4.4 354.2-.9 361.8 .1 370L16 368C.1 370 .1 370 .1 370l0 0 0 0 0 .1 .1 .4c0 .3 .1 .8 .2 1.3c.2 1.1 .4 2.7 .8 4.6c.8 3.9 2 9.4 3.9 15.9c3.8 13 10.3 30.4 21.3 48C48.7 476.2 89.4 512 160 512c70.7 0 128-57.3 128-128c0-23.3-6.2-45.2-17.1-64h22.6c25.5 0 49.9-10.1 67.9-28.1l26.5-26.5c6-6 14.1-9.4 22.6-9.4H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32c-25.7 0-41.4-12.5-51.2-25.6c-5-6.7-8.4-13.4-10.5-18.6c-1.1-2.5-1.8-4.6-2.2-6c-.2-.7-.4-1.2-.5-1.5l-.1-.3 0 0c0 0 0 0 0 0c-1.9-7.3-8.6-12.4-16.2-12.1c-7.6 .3-13.9 5.9-15.1 13.4L336 368c-15.8-2.6-15.8-2.6-15.8-2.6l0 0 0 0 0 .1-.1 .3c0 .3-.1 .6-.2 1.1c-.1 .9-.3 2.1-.4 3.6c-.3 3-.6 7.3-.6 12.4c0 10.1 1.1 23.9 5.8 38.1c4.8 14.3 13.4 29.3 28.6 40.7C368.7 473.3 389.3 480 416 480c53 0 96-43 96-96V288c0-53-43-96-96-96h-5.5c-25.5 0-49.9 10.1-67.9 28.1l-26.5 26.5c-6 6-14.1 9.4-22.6 9.4H245.2c6.9-14.5 10.8-30.8 10.8-48c0-61.9-50.1-112-112-112c-25.2 0-48.5 8.3-67.2 22.4c-14.1 10.6-17 30.7-6.4 44.8s30.7 17 44.8 6.4zM280.9 66.7c-6-4-14-3.5-19.5 1.3s-7 12.7-3.7 19.2L272 80c-14.3 7.2-14.3 7.2-14.3 7.2l0 0 0 0 0 .1 .1 .2 .4 .7c.3 .6 .8 1.4 1.4 2.4c1.2 2 2.9 4.8 5.1 8.2c4.4 6.7 11.1 15.5 20 24.4C302.4 141.1 330.3 160 368 160c31.2 0 56.6-10.4 73.9-20.2c8.7-5 15.6-9.9 20.4-13.8c2.4-1.9 4.3-3.6 5.7-4.9c.7-.6 1.3-1.2 1.7-1.6l.6-.5 .2-.2 .1-.1 0 0 0 0c0 0 0 0-22.6-22.6l22.6 22.6c12.5-12.5 12.5-32.8 0-45.3c-12.4-12.4-32.6-12.5-45.1-.2c-.1 .1-.2 .2-.5 .4c-.5 .5-1.5 1.3-2.8 2.4c-2.7 2.2-6.8 5.2-12.1 8.2C399.4 90.4 384.8 96 368 96c-20.8 0-42.4-7-59.5-14.6c-8.4-3.7-15.4-7.5-20.3-10.3c-2.4-1.4-4.3-2.5-5.6-3.3c-.6-.4-1.1-.7-1.4-.9l-.3-.2 0 0 0 0 0 0z\"]\n};\nvar faPi = {\n prefix: 'fas',\n iconName: 'pi',\n icon: [448, 512, [], \"f67e\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H96V284c0 39.7-9.3 78.9-27 114.5l-1.6 3.2c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l1.6-3.2C148.4 382.7 160 333.7 160 284V128H288V366.6c0 45 36.5 81.4 81.4 81.4c30.8 0 59-17.4 72.8-45l2.3-4.7c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3l-2.3 4.7c-3 5.9-9 9.6-15.6 9.6c-9.6 0-17.4-7.8-17.4-17.4V128h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faFlaskRoundPotion = {\n prefix: 'fas',\n iconName: 'flask-round-potion',\n icon: [448, 512, [\"flask-potion\"], \"f6e1\", \"M192 64h64v93.7c0 30.4 16.9 56.1 40.3 69.7c43 25 71.6 71.4 71.7 124.4c-58.6-1.7-85.4-12.6-109.9-22.6c-22-9-42.2-17.2-82.1-17.2c-42.3 0-73.4 9.2-94.5 18.8c6.5-44.1 33-81.7 70.2-103.4c23.4-13.6 40.3-39.3 40.3-69.7V64zm128 93.7V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H304 144 128C110.3 0 96 14.3 96 32s14.3 32 32 32v93.7c0 6-3.3 11.4-8.5 14.4C57.6 208.2 16 275.2 16 352c0 56 22.1 106.9 58.2 144.3C84.5 507 99.3 512 114.2 512H333.8c15 0 29.7-5 40.1-15.7C409.9 458.9 432 408 432 352c0-76.8-41.6-143.8-103.5-179.9c-5.2-3-8.5-8.4-8.5-14.4z\"]\n};\nvar faFlaskPotion = faFlaskRoundPotion;\nvar faFaceShush = {\n prefix: 'fas',\n iconName: 'face-shush',\n icon: [512, 512, [], \"e38c\", \"M0 256C0 359.8 61.8 449.1 150.5 489.3c-4.2-10.3-6.5-21.5-6.5-33.3V432 408c0-37.3 23.2-69.2 56-82V275.9c-14.8-6.9-26.6-15.9-35.3-24.6c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0c3.7 3.7 8.1 7.4 13.3 10.9c4-27 27.3-47.6 55.4-47.6s51.3 20.7 55.4 47.6c5.2-3.5 9.6-7.3 13.3-10.9c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6c-8.7 8.7-20.5 17.7-35.3 24.6v58.3c17.9 11.7 31.3 29.7 37 50.9c16-3.2 33.3 .6 46.9 11.9c18.4 15.3 24.5 39.9 17.1 61.3c60.3-46.8 99-120 99-202.3C512 114.6 397.4 0 256 0S0 114.6 0 256zM176.4 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM280 248c0-13.3-10.7-24-24-24s-24 10.7-24 24v72h48V248zM224 408c0-4.4 3.6-8 8-8h32c4.4 0 8 3.6 8 8v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8c0-30.9-25.1-56-56-56H232c-30.9 0-56 25.1-56 56v24 24c0 30.9 25.1 56 56 56h48 17.5c21.4 0 41.6-9.5 55.3-25.9l25.6-30.7c8.5-10.2 7.1-25.3-3.1-33.8s-25.3-7.1-33.8 3.1L316 455.4c-4.6 5.5-11.3 8.6-18.4 8.6h-10L224 419.5V408z\"]\n};\nvar faWorm = {\n prefix: 'fas',\n iconName: 'worm',\n icon: [512, 512, [], \"e599\", \"M256 96c0-53 43-96 96-96h38.4C439.9 0 480 40.1 480 89.6V176v16V376c0 75.1-60.9 136-136 136s-136-60.9-136-136V296c0-22.1-17.9-40-40-40s-40 17.9-40 40V464c0 26.5-21.5 48-48 48s-48-21.5-48-48V296c0-75.1 60.9-136 136-136s136 60.9 136 136v80c0 22.1 17.9 40 40 40s40-17.9 40-40V192H352c-53 0-96-43-96-96zm144-8a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faHouseCircleXmark = {\n prefix: 'fas',\n iconName: 'house-circle-xmark',\n icon: [640, 512, [], \"e50b\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [128268], \"f1e6\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8C297 398 352 333.4 352 256V224c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faCalendarCircleExclamation = {\n prefix: 'fas',\n iconName: 'calendar-circle-exclamation',\n icon: [576, 512, [], \"e46e\", \"M128 0C110.3 0 96 14.3 96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32zM256 368c0-91.8 70.3-167.2 160-175.3V192H0V464c0 26.5 21.5 48 48 48H330.8C285.6 480.1 256 427.5 256 368zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faSquareI = {\n prefix: 'fas',\n iconName: 'square-i',\n icon: [448, 512, [], \"e272\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 96h72 72c13.3 0 24 10.7 24 24s-10.7 24-24 24H248V336h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24h48V176H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [512, 512, [], \"f077\", \"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"]\n};\nvar faFaceSaluting = {\n prefix: 'fas',\n iconName: 'face-saluting',\n icon: [640, 512, [129761], \"e484\", \"M258.1 58.5h0c14.5-9.8 18.4-29.4 8.8-44c0 0 0 0 0 0c-.1-.1-.2-.3-.3-.4C256.7-.6 236.8-4.4 222.2 5.5L35.1 132.5c-44.3 30.1-47.1 94.4-5.6 128.2l1.5 1.2c18.9 15.4 43.2 20.9 66 16.5c4.4-.9 8.8-2.1 13.1-3.8c.3-.1 .7-.3 1-.4c.5-.2 1-.4 1.5-.6c5.6-2.3 10.9-5.4 16-9l82.3-59.9h0c14.3-10.4 17.5-30.4 7.1-44.7c-4.8-6.7-11.8-10.9-19.3-12.5c-3.5-.7-7.2-.9-10.8-.4c-5.1 .7-10.1 2.6-14.6 5.8L128 185.8V146.8l27.3-18.5 13.1-8.9 89.7-60.9zM352 0c-18.4 0-36.3 1.9-53.5 5.6c12.6 27.9 3.8 61.6-22.4 79.4l-54.6 37c8.6 4.4 16.3 10.9 22.3 19.2c8.6 11.9 12.6 25.7 12.2 39.3c4.8-2.8 10.4-4.5 16.3-4.5c17.7 0 32 14.3 32 32s-14.3 32-32 32c-13.9 0-25.8-8.9-30.2-21.4c-3.5 4.4-7.7 8.5-12.5 12l-82.3 59.9c-13.9 10.1-29.5 16.6-45.6 19.6C126.5 425.5 229.1 512 352 512c141.4 0 256-114.6 256-256S493.4 0 352 0zM257.4 341c17.5 12.6 48.9 27 94.6 27s77.2-14.4 94.6-27c7.2-5.2 17.2-3.5 22.3 3.6s3.5 17.2-3.6 22.3c-22.7 16.4-60.7 33-113.4 33s-90.6-16.6-113.4-33c-7.2-5.2-8.8-15.2-3.6-22.3s15.2-8.8 22.3-3.6zm175-165a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGaugeSimpleLow = {\n prefix: 'fas',\n iconName: 'gauge-simple-low',\n icon: [512, 512, [\"tachometer-slow\"], \"f62c\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.1 .3L173.3 140.9c-6.1-11.8-20.6-16.3-32.4-10.2s-16.3 20.6-10.2 32.4l76.6 147.4C197.8 321.6 192 336.1 192 352c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faTachometerSlow = faGaugeSimpleLow;\nvar faFacePersevering = {\n prefix: 'fas',\n iconName: 'face-persevering',\n icon: [512, 512, [], \"e385\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm60.1-101.3c-11.7-13-31.6-26.7-60.1-26.7s-48.4 13.7-60.1 26.7c-5.9 6.6-16 7.1-22.6 1.2s-7.1-16-1.2-22.6C188.2 371.4 216.3 352 256 352s67.8 19.4 83.9 37.3c5.9 6.6 5.4 16.7-1.2 22.6s-16.7 5.4-22.6-1.2zm-104.8-310c6.2 6.2 6.2 16.4 0 22.6l-7.4 7.4c-23.6 23.6-53.9 39.2-86.8 44.7l-2.5 .4c-8.7 1.5-17-4.4-18.4-13.2s4.4-17 13.2-18.4l2.5-.4c26.3-4.4 50.6-16.9 69.5-35.7l7.4-7.4c6.2-6.2 16.4-6.2 22.6 0zm89.4 22.6c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l7.4 7.4c18.9 18.9 43.2 31.4 69.5 35.7l2.5 .4c8.7 1.5 14.6 9.7 13.2 18.4s-9.7 14.6-18.4 13.2l-2.5-.4c-32.9-5.5-63.3-21.1-86.8-44.7l-7.4-7.4zM133.5 210.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 221.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faCircleCamera = {\n prefix: 'fas',\n iconName: 'circle-camera',\n icon: [512, 512, [\"camera-circle\"], \"e103\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM196 160l6.2-16.4c3.5-9.4 12.5-15.6 22.5-15.6h62.7c10 0 19 6.2 22.5 15.6L316 160h36c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32h36zm108 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faCameraCircle = faCircleCamera;\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M246.9 23.7C242.3 6.6 224.8-3.5 207.7 1.1s-27.2 22.1-22.6 39.2L238 237.8c2.5 9.2-4.5 18.2-14 18.2c-6.4 0-12-4.2-13.9-10.3L166.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L99.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L156.8 448c43.1 41.1 100.4 64 160 64h10.9 8.2c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L443.5 247.1c-1.6 5.3-6.4 8.9-12 8.9c-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L355.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9c-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"]\n};\nvar faSpiderWeb = {\n prefix: 'fas',\n iconName: 'spider-web',\n icon: [576, 512, [128376], \"f719\", \"M133.8 22.2c4.8-12.7 18-20.2 31.4-17.7l69 12.9c35.6 6.7 72.1 6.7 107.6 0l69-12.9c13.4-2.5 26.6 5 31.4 17.7l28.9 77.2c11.5 30.7 28.1 59.2 49.1 84.4l45.3 54.3c8.7 10.4 8.7 25.5 0 35.9l-45.3 54.3c-21 25.2-37.6 53.7-49.1 84.4l-28.9 77.2c-4.8 12.7-18 20.2-31.4 17.7l-69-12.9c-35.6-6.7-72.1-6.7-107.6 0l-69 12.9c-13.4 2.5-26.6-5-31.4-17.7l-28.9-77.2C93.3 382 76.7 353.4 55.7 328.2L10.5 273.9c-8.7-10.4-8.7-25.5 0-35.9l45.3-54.3c21-25.2 37.6-53.7 49.1-84.4l28.9-77.2zm33.3 70.6L157.3 119c-13.7 36.6-33.5 70.6-58.5 100.6L88.4 232h44.6c23.5-27.6 41.7-59.2 53.7-93.4l2.5-7L167.1 92.8zm42.1-23.1l21.4 37.4c37.7 9.5 77.2 9.5 114.9 0l21.4-37.4-14.7 2.8c-42.4 7.9-85.9 7.9-128.3 0l-14.7-2.8zM408.9 92.8l-22.2 38.8 2.5 7c12.1 34.2 30.3 65.8 53.8 93.4h44.6l-10.3-12.4c-25-30-44.8-64-58.5-100.6l-9.8-26.2zM487.6 280H443c-23.6 28.1-41.8 60.4-53.6 95.3l-2.1 6.1 21.6 37.9 9.8-26.2c13.7-36.6 33.5-70.6 58.5-100.6L487.6 280zM366.8 442.3l-19.5-34.2c-37.9-11.7-78.3-12.8-116.7-3.2l-21.3 37.4 14.7-2.8c42.4-7.9 85.9-7.9 128.3 0l14.7 2.8zM167.1 419.2l22.2-38.8-2.5-7c-12.1-34.2-30.3-65.8-53.7-93.4H88.4l10.3 12.4c25 30 44.8 64 58.5 100.6l9.8 26.2zM193.2 280c10.1 15 18.9 30.7 26.5 47.1L246.6 280H193.2zm67.9 71.4c18.1-1.5 36.3-1.2 54.3 1L288 304.4l-26.9 47zm95.5-23.7c7.6-16.6 16.4-32.5 26.5-47.7H329.4l27.3 47.7zM382.8 232c-10.1-15-18.9-30.7-26.5-47.1L329.4 232h53.4zm-68.1-71c-17.7 1.7-35.6 1.7-53.3 0L288 207.6 314.7 161zm-94.9 23.9c-7.6 16.4-16.5 32.1-26.5 47.1h53.4l-26.9-47.1z\"]\n};\nvar faCircleMicrophone = {\n prefix: 'fas',\n iconName: 'circle-microphone',\n icon: [512, 512, [\"microphone-circle\"], \"e116\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208 144c0-26.5 21.5-48 48-48s48 21.5 48 48V256c0 26.5-21.5 48-48 48s-48-21.5-48-48V144zm-64 80c8.8 0 16 7.2 16 16v16c0 53 43 96 96 96s96-43 96-96V240c0-8.8 7.2-16 16-16s16 7.2 16 16v16c0 65.3-48.9 119.1-112 127v17c0 8.8-7.2 16-16 16s-16-7.2-16-16V383c-63.1-7.9-112-61.7-112-127V240c0-8.8 7.2-16 16-16z\"]\n};\nvar faMicrophoneCircle = faCircleMicrophone;\nvar faBookArrowUp = {\n prefix: 'fas',\n iconName: 'book-arrow-up',\n icon: [448, 512, [], \"e0ba\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H264V209.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V384H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faPopsicle = {\n prefix: 'fas',\n iconName: 'popsicle',\n icon: [320, 512, [], \"e43e\", \"M160 0C71.6 0 0 71.6 0 160V336c0 26.5 21.5 48 48 48H272c26.5 0 48-21.5 48-48V160C320 71.6 248.4 0 160 0zm32 480V416H128v64c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faCommand = {\n prefix: 'fas',\n iconName: 'command',\n icon: [512, 512, [], \"e142\", \"M0 96C0 43 43 0 96 0s96 43 96 96v32H320V96c0-53 43-96 96-96s96 43 96 96s-43 96-96 96H384V320h32c53 0 96 43 96 96s-43 96-96 96s-96-43-96-96V384H192v32c0 53-43 96-96 96s-96-43-96-96s43-96 96-96h32V192H96C43 192 0 149 0 96zm128 32V96c0-17.7-14.3-32-32-32S64 78.3 64 96s14.3 32 32 32h32zm64 192H320V192H192V320zm-64 64H96c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32V384zm256 0v32c0 17.7 14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32H384zm0-256h32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32v32z\"]\n};\nvar faBlinds = {\n prefix: 'fas',\n iconName: 'blinds',\n icon: [512, 512, [], \"f8fb\", \"M32 0C14.3 0 0 14.3 0 32C0 43.4 6 53.4 15 59.1L1.1 100.8c-.7 2.1-1.1 4.3-1.1 6.5C0 118.8 9.2 128 20.6 128H128V64h32v64H491.4c11.4 0 20.6-9.2 20.6-20.6c0-2.2-.4-4.4-1.1-6.5L497 59.1c9-5.7 15-15.7 15-27.1c0-17.7-14.3-32-32-32H32zM24 160L1.1 228.8c-.7 2.1-1.1 4.3-1.1 6.5C0 246.8 9.2 256 20.6 256H98.7c4.8-13.6 15.6-24.4 29.3-29.3V160H24zM144 320c-20.9 0-38.7-13.4-45.3-32H24L1.1 356.8c-.7 2.1-1.1 4.3-1.1 6.5C0 374.8 9.2 384 20.6 384H491.4c11.4 0 20.6-9.2 20.6-20.6c0-2.2-.4-4.4-1.1-6.5L488 288H189.3c-6.6 18.6-24.4 32-45.3 32zm16-93.3c13.6 4.8 24.4 15.6 29.3 29.3H491.4c11.4 0 20.6-9.2 20.6-20.6c0-2.2-.4-4.4-1.1-6.5L488 160H160v66.7zM20.6 512H491.4c11.4 0 20.6-9.2 20.6-20.6c0-2.2-.4-4.4-1.1-6.5L488 416H24L1.1 484.8c-.7 2.1-1.1 4.3-1.1 6.5C0 502.8 9.2 512 20.6 512z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [9201], \"f2f2\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H224 176zm72 192V320c0 13.3-10.7 24-24 24s-24-10.7-24-24V192c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faSaxophone = {\n prefix: 'fas',\n iconName: 'saxophone',\n icon: [640, 512, [127927], \"f8dc\", \"M246.7 176L171.4 306.1c-2.2 3.8-3.4 8.2-3.4 12.6v2.6c0 12.5 10.1 22.6 22.6 22.6c6 0 11.8-2.4 16-6.6L319 225l-8-8c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l8 8L367 177l-8-8c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l8 8L415 129l-8-8c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l8 8 44.3-44.3c12-12 28.3-18.7 45.3-18.7h30.3c15 0 29.5 5.2 41 14.8l24.3 20.3c3.7 3.1 5.9 7.7 5.9 12.6c0 9-7.3 16.3-16.3 16.3H559.5c-9.8 0-19 4.5-25.1 12.1L288.6 418.6C257.9 457.4 211.2 480 161.8 480C72.4 480 0 407.6 0 318.2v-3.1c0-12.7 1.5-25.4 4.4-37.8L28.2 176H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H264c13.3 0 24 10.7 24 24s-10.7 24-24 24H246.7zM120 320a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm8-72a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faSquare2 = {\n prefix: 'fas',\n iconName: 'square-2',\n icon: [448, 512, [], \"e257\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM190.7 184.7l-24.2 18.4c-10.5 8-25.6 6-33.6-4.5s-6-25.6 4.5-33.6l24.2-18.4c15.8-12 35.2-18.4 55.1-18.1l3.4 .1c46.5 .7 83.8 38.6 83.8 85.1c0 23.5-9.7 46-26.9 62.1L212.7 336H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-9.8 0-18.7-6-22.3-15.2s-1.3-19.6 5.9-26.3L244.3 240.6c7.5-7 11.7-16.8 11.7-27.1c0-20.3-16.3-36.8-36.6-37.1l-3.4-.1c-9.1-.1-18 2.8-25.3 8.3z\"]\n};\nvar faFieldHockeyStickBall = {\n prefix: 'fas',\n iconName: 'field-hockey-stick-ball',\n icon: [512, 512, [127953, \"field-hockey\"], \"f44c\", \"M491.2 8.5c21.8 15.1 27.3 45 12.2 66.8l-52.2 75.5L371.3 97.5l53.1-76.8c15.1-21.8 45-27.3 66.8-12.2zM353.1 123.9L433 177.2 241 454.9c-24.6 35.5-64.9 56.8-108.1 56.9C59.5 512 .1 452.3 .6 378.9l0-2.2c.2-25.7 7.8-50.8 21.8-72.4l17.3-26.5c14.5-22.2 44.2-28.4 66.4-13.9s28.4 44.2 13.9 66.4l-17.3 26.5c-4 6.1-6.2 13.3-6.2 20.6l0 2.2c-.1 20 16 36.2 36 36.1c11.7 0 22.7-5.8 29.4-15.5L353.1 123.9zM432 352a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faFieldHockey = faFieldHockeyStickBall;\nvar faArrowUpSquareTriangle = {\n prefix: 'fas',\n iconName: 'arrow-up-square-triangle',\n icon: [576, 512, [\"sort-shapes-up-alt\"], \"f88b\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 80v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48zM443.1 303c-5.8-9.4-16.1-15-27.1-15s-21.3 5.7-27.1 15l-80 128c-6.2 9.9-6.5 22.3-.9 32.5s16.4 16.5 28 16.5H496c11.6 0 22.3-6.3 28-16.5s5.3-22.6-.9-32.5l-80-128z\"]\n};\nvar faSortShapesUpAlt = faArrowUpSquareTriangle;\nvar faFaceScream = {\n prefix: 'fas',\n iconName: 'face-scream',\n icon: [640, 512, [], \"e38b\", \"M573.9 288.5c1.4-10.7 2.1-21.5 2.1-32.5C576 114.6 461.4 0 320 0S64 114.6 64 256c0 11 .7 21.9 2.1 32.6c20.6-2.5 41.7 3.5 57.8 16.9l0 0c57.5 48 87.8 118 98 187C252.1 505.1 285.2 512 320 512c34.8 0 68-6.9 98.2-19.5c10.2-69 40.4-139 98-187l0 0c16.1-13.4 37.2-19.4 57.8-17zM320 320c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48s-48-21.5-48-48V368c0-26.5 21.5-48 48-48zm-46.6-77c-22.5 36.9-62.8 54.7-90.1 39.8s-31.1-56.9-8.7-93.7s62.8-54.7 90.1-39.8s31.1 56.9 8.7 93.7zm183.3 39.8c-27.3 14.9-67.6-2.9-90.1-39.8s-18.6-78.8 8.7-93.7s67.6 2.9 90.1 39.8s18.6 78.8-8.7 93.7zM103.4 330.1C89.1 318.2 68 316.4 51.6 327c-20 13-25.6 39.5-12.4 59.3c26.4 40 43.6 75.3 43.2 125.7L192 512c-7-68.4-34.8-137-88.7-181.9zM588.5 327c-16.4-10.6-37.6-8.8-51.8 3.1C482.8 375 455 443.6 448 512l109.8 0c-.4-50.5 16.7-85.7 43.2-125.7c13.1-19.8 7.6-46.3-12.4-59.3z\"]\n};\nvar faSquareM = {\n prefix: 'fas',\n iconName: 'square-m',\n icon: [448, 512, [], \"e276\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm75.5 105.9L224 255l84.5-117.1c6.1-8.4 16.9-12 26.8-8.8s16.6 12.4 16.6 22.8V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V226.2l-60.5 83.8c-4.5 6.2-11.7 9.9-19.5 9.9s-14.9-3.7-19.5-9.9L144 226.2V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-10.4 6.7-19.6 16.6-22.8s20.7 .3 26.8 8.8z\"]\n};\nvar faCameraWeb = {\n prefix: 'fas',\n iconName: 'camera-web',\n icon: [448, 512, [\"webcam\"], \"f832\", \"M344.2 413.1C406.6 373.3 448 303.5 448 224C448 100.3 347.7 0 224 0S0 100.3 0 224c0 79.5 41.4 149.3 103.8 189.1L45.6 453.8c-11.4 8-16.4 22.5-12.2 35.8S50 512 64 512H384c14 0 26.3-9.1 30.5-22.4s-.7-27.8-12.2-35.8l-58.2-40.7zM224 352a128 128 0 1 0 0-256 128 128 0 1 0 0 256zm0-288a160 160 0 1 1 0 320 160 160 0 1 1 0-320zM176 224c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-26.5 0-48 21.5-48 48z\"]\n};\nvar faWebcam = faCameraWeb;\nvar faCommentArrowDown = {\n prefix: 'fas',\n iconName: 'comment-arrow-down',\n icon: [512, 512, [], \"e143\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm24-296V270.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faLightbulbCfl = {\n prefix: 'fas',\n iconName: 'lightbulb-cfl',\n icon: [320, 512, [], \"e5a6\", \"M167.8 63c17.1-4.3 27.6-21.7 23.3-38.8S169.4-3.3 152.2 1L24.2 33C7.1 37.2-3.3 54.6 1 71.8S22.6 99.3 39.8 95l128-32zM319 88.2c-4.3-17.1-21.7-27.6-38.8-23.3l-256 64C7.1 133.2-3.3 150.6 1 167.8s21.7 27.6 38.8 23.3l256-64c17.1-4.3 27.6-21.7 23.3-38.8zM295.8 223c17.1-4.3 27.6-21.7 23.3-38.8s-21.7-27.6-38.8-23.3l-256 64C7.1 229.2-3.3 246.6 1 263.8s21.7 27.6 38.8 23.3l256-64zM64 416v32c0 17.7 14.3 32 32 32h32c0 17.7 14.3 32 32 32s32-14.3 32-32h32c17.7 0 32-14.3 32-32V416c0-17.7-14.3-32-32-32H144V294L96 306v78c-17.7 0-32 14.3-32 32zM319 280.2c-4.3-17.1-21.7-27.6-38.8-23.3l-64 16-16 4c-13.2 3.3-22.4 14.3-24 27l-.2 0v3.3c0 .5 0 .9 0 1.4V384h48V337l7.8-1.9 64-16c17.1-4.3 27.6-21.7 23.3-38.8z\"]\n};\nvar faWindowFrameOpen = {\n prefix: 'fas',\n iconName: 'window-frame-open',\n icon: [512, 512, [], \"e050\", \"M480 224V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64V224v64H96 416h64V224zm-64 0H280V64H416V224zm-184 0H96V64H232V224zM96 448V320H32V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V320H416V448H96z\"]\n};\nvar faFaceKiss = {\n prefix: 'fas',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faKiss = faFaceKiss;\nvar faBridgeCircleXmark = {\n prefix: 'fas',\n iconName: 'bridge-circle-xmark',\n icon: [640, 512, [], \"e4cb\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPeriod = {\n prefix: 'fas',\n iconName: 'period',\n icon: [128, 512, [], \"2e\", \"M0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416z\"]\n};\nvar faFaceGrinTongue = {\n prefix: 'fas',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongue = faFaceGrinTongue;\nvar faUpToDottedLine = {\n prefix: 'fas',\n iconName: 'up-to-dotted-line',\n icon: [448, 512, [], \"e457\", \"M64 64A32 32 0 1 1 0 64a32 32 0 1 1 64 0zm64 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM256 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96 0a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM73.9 262.1L196.7 139.3c7.2-7.2 17.1-11.3 27.3-11.3s20.1 4.1 27.3 11.3L374.1 262.1c6.4 6.4 9.9 15 9.9 24c0 18.7-15.2 33.9-33.9 33.9H288V448c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V320H97.9C79.2 320 64 304.8 64 286.1c0-9 3.6-17.6 9.9-24z\"]\n};\nvar faThoughtBubble = {\n prefix: 'fas',\n iconName: 'thought-bubble',\n icon: [512, 512, [], \"e32e\", \"M374.8 80.3C355.9 33.2 309.8 0 256 0s-99.9 33.2-118.8 80.3c-3-.2-6.1-.3-9.2-.3C57.3 80 0 137.3 0 208s57.3 128 128 128c14.4 0 28.3-2.4 41.3-6.8C184.7 361.6 217.7 384 256 384s71.3-22.4 86.7-54.8c12.9 4.4 26.8 6.8 41.3 6.8c70.7 0 128-57.3 128-128s-57.3-128-128-128c-3.1 0-6.1 .1-9.2 .3zM144 480a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM32 512a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faSkeletonRibs = {\n prefix: 'fas',\n iconName: 'skeleton-ribs',\n icon: [640, 512, [], \"e5cb\", \"M352 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H260.2c-33.5 0-65.7 17.6-82.1 48.9C150.5 165.8 96 282.2 96 384v17c0 43.6 35.4 79 79 79c15.1 0 30.1-2.7 44.2-8l67.1-25.2c.6-.2 1.1-.4 1.7-.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V446.2c.6 .2 1.1 .4 1.7 .6L420.8 472c14.1 5.3 29.1 8 44.2 8c43.6 0 79-35.4 79-79V384c0-101.8-54.5-218.2-82.2-271.1C445.5 81.6 413.3 64 379.8 64H352V32zm-64 96v38.3l-72.7 16.2c7-15.2 13.8-28.7 19.6-40c4.5-8.6 13.9-14.5 25.3-14.5H288zM186 254.6l102-22.7v39.7L171.2 303.4c4.1-16.5 9.2-32.9 14.7-48.8zM160.3 372.7L288 337.9v42c-8.2 1.7-16.3 4-24.2 7l-67.1 25.2c-7 2.6-14.3 3.9-21.7 3.9c-8.3 0-15-6.7-15-15V384c0-3.7 .1-7.5 .3-11.3zM352 379.9V339l118.8 35.6c3 .9 6.1 1.3 9.1 1.4c.1 2.7 .1 5.3 .1 8v17c0 8.3-6.7 15-15 15c-7.4 0-14.8-1.3-21.7-3.9l-67.1-25.2c-7.9-3-16-5.3-24.2-7zm117.8-72.4L352 272.2V231.9l102 22.7c6 17.2 11.4 35.1 15.7 53zm-45-125L352 166.3V128h27.8c11.4 0 20.8 5.9 25.3 14.5c5.9 11.3 12.6 24.8 19.6 40zM0 144v96V480c0 17.7 14.3 32 32 32s32-14.3 32-32V240c0-10.1 4.7-19.6 12.8-25.6l25.6-19.2C118.5 183.1 128 164.1 128 144c0-35.3-28.7-64-64-64S0 108.7 0 144zM576 80c-35.3 0-64 28.7-64 64c0 20.1 9.5 39.1 25.6 51.2l25.6 19.2c8.1 6 12.8 15.5 12.8 25.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V240 144c0-35.3-28.7-64-64-64z\"]\n};\nvar faRaygun = {\n prefix: 'fas',\n iconName: 'raygun',\n icon: [576, 512, [], \"e025\", \"M192 64h96V56c0-13.3 10.7-24 24-24s24 10.7 24 24V296c0 13.3-10.7 24-24 24s-24-10.7-24-24v-.4L188.6 494.3c-7.9 15.8-27.1 22.2-42.9 14.3l-80-40c-15.8-7.9-22.2-27.1-14.3-42.9L120.2 288H112C50.1 288 0 237.9 0 176C0 131.3 26.2 92.8 64 74.8V24.6C64 11 75 0 88.6 0c4.8 0 9.6 1.4 13.6 4.1L192 64zm200 0c13.3 0 24 10.7 24 24v56h60.9l77.1-30.9c4.9-2 10.5-1.4 14.9 1.6s7 7.9 7 13.2v96c0 5.3-2.6 10.3-7 13.2s-10 3.6-14.9 1.6L476.9 208H416v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24zM136 176a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm72 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faFlute = {\n prefix: 'fas',\n iconName: 'flute',\n icon: [640, 512, [], \"f8b9\", \"M48 160H96V352H48c-26.5 0-48-21.5-48-48V208c0-26.5 21.5-48 48-48zM592 352H128V160H592c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48zM320 280a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm120-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm72 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faAcorn = {\n prefix: 'fas',\n iconName: 'acorn',\n icon: [448, 512, [], \"f6ae\", \"M262.4 4.8c10.6 8 12.8 23 4.8 33.6l-4.8 6.4c-4.4 5.9-7.9 12.4-10.3 19.2H352c53 0 96 43 96 96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32c0-53 43-96 96-96H202.4C206 46.7 213.3 30.3 224 16l4.8-6.4c8-10.6 23-12.8 33.6-4.8zM213.9 476.4C78.5 425.9 48 302.1 48 224H224 400c0 78.1-30.5 201.9-165.9 252.4c-6.5 2.4-13.7 2.4-20.2 0z\"]\n};\nvar faVideoArrowUpRight = {\n prefix: 'fas',\n iconName: 'video-arrow-up-right',\n icon: [576, 512, [], \"e2c9\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm512 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L416 174.9V192 320v17.1l14.2 9.5 96 64c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128zM152 160H264c13.3 0 24 10.7 24 24V296c0 13.3-10.7 24-24 24s-24-10.7-24-24V241.9L137 345c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l103-103H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faGrateDroplet = {\n prefix: 'fas',\n iconName: 'grate-droplet',\n icon: [576, 512, [], \"e194\", \"M0 96C0 60.7 28.7 32 64 32h64 96 96 64c35.3 0 64 28.7 64 64v66.2c-15.1 4.3-28.2 14.6-35.8 28.8L336.9 332.2C325.8 353.1 320 376.4 320 400c0 29.6 8.9 57.1 24.2 80H320 224 128 64c-35.3 0-64-28.7-64-64V256 96zm96 0H64V224H96V96zM64 416H96V288H64V416zm128 0V288H160V416h32zm96 0V288H256V416h32zM384 96H352V224h32V96zM256 96V224h32V96H256zm-96 0V224h32V96H160zM440.5 206.1c4.6-8.7 13.7-14.1 23.5-14.1s18.9 5.4 23.5 14.1l75.3 141.2c8.7 16.2 13.2 34.3 13.2 52.7c0 61.9-50.1 112-112 112s-112-50.1-112-112c0-18.4 4.5-36.5 13.2-52.7l75.3-141.2z\"]\n};\nvar faSealExclamation = {\n prefix: 'fas',\n iconName: 'seal-exclamation',\n icon: [512, 512, [], \"e242\", \"M222.1 17.9c18.7-18.7 49.1-18.7 67.9 0L336 64h64c26.5 0 48 21.5 48 48v64l45.6 45.6c18.7 18.7 18.7 49.1 0 67.9L448 335.1V400c0 26.5-21.5 48-48 48H335.1l-45.1 45.1c-18.7 18.7-49.1 18.7-67.9 0L176.9 448H112c-26.5 0-48-21.5-48-48V335.1L18.4 289.5c-18.7-18.7-18.7-49.1 0-67.9L64 176V112c0-26.5 21.5-48 48-48h64l46.1-46.1zM256 128c-13.3 0-24 10.7-24 24V264c0 13.3 10.7 24 24 24s24-10.7 24-24V152c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M128 0C110.3 0 96 14.3 96 32c0 16.1 11.9 29.4 27.4 31.7C78.4 106.8 8 190 8 288c0 47.4 30.8 72.3 56 84.7V400H256V372.7c25.2-12.5 56-37.4 56-84.7c0-37.3-10.2-72.4-25.3-104.1l-99.4 99.4c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L270.8 154.6c-23.2-38.1-51.8-69.5-74.2-90.9C212.1 61.4 224 48.1 224 32c0-17.7-14.3-32-32-32H128zM48 432L6.6 473.4c-4.2 4.2-6.6 10-6.6 16C0 501.9 10.1 512 22.6 512H297.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L272 432H48z\"]\n};\nvar faMessageSms = {\n prefix: 'fas',\n iconName: 'message-sms',\n icon: [512, 512, [], \"e1e5\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm202.9 80.8C196.4 147 192 153.1 192 160v96c0 8.8 7.2 16 16 16s16-7.2 16-16V208l19.2 25.6c3 4 7.8 6.4 12.8 6.4s9.8-2.4 12.8-6.4L288 208v48c0 8.8 7.2 16 16 16s16-7.2 16-16V160c0-6.9-4.4-13-10.9-15.2s-13.7 .1-17.9 5.6L256 197.3l-35.2-46.9c-4.1-5.5-11.3-7.8-17.9-5.6zm173.1 38c0-1.1 .2-1.6 .4-1.9c.3-.4 .9-1.2 2.4-2c3.1-1.8 8-3 12.9-2.9c6.1 .1 12.9 1.4 20.1 3.4c8.5 2.3 17.3-2.8 19.6-11.3s-2.8-17.3-11.3-19.6c-8.2-2.2-17.9-4.3-27.9-4.4c-9.3-.1-20.4 1.9-29.7 7.4c-9.9 5.9-18.6 16.4-18.5 31.6c.1 14.7 8.8 24 17.7 29.4c7.6 4.6 17.1 7.4 24.3 9.6l1.2 .4c8.5 2.6 14.2 4.5 18 6.9c2.7 1.7 2.7 2.4 2.7 3.1l0 .2c0 1.6-.3 2.3-.6 2.7c-.3 .5-.9 1.2-2.1 2c-2.8 1.7-7.5 2.9-12.8 2.8c-7-.2-13.5-2.4-22.6-5.5l0 0 0 0c-1.5-.5-3.2-1.1-4.9-1.6c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2c1.2 .4 2.6 .9 4 1.4l0 0 0 0c8.8 3 20.4 7 32.6 7.4c9.8 .3 21.2-1.6 30.7-7.6c10.2-6.4 18-17.3 17.8-32.3c-.2-14.7-8.5-24.2-17.6-29.9c-8-5-17.9-8-25.2-10.2l-.6-.2c-8.6-2.6-14.4-4.4-18.2-6.8c-1.6-1-2.1-1.6-2.2-1.7c0-.1 0-.2 0-.4zm-272 0c0-1.1 .2-1.6 .4-1.9c.3-.4 .9-1.2 2.4-2c3.1-1.8 8-3 12.9-2.9c6.6 .1 16.7 1.6 23.3 3.4c8.5 2.3 17.3-2.8 19.6-11.3s-2.8-17.3-11.3-19.6c-8.8-2.4-21.6-4.3-31.1-4.4c-9.3-.1-20.4 1.9-29.7 7.4C80.6 157.3 72 167.8 72 183c.1 14.7 8.8 24 17.7 29.4c7.6 4.6 17.1 7.4 24.3 9.6l0 0 1.2 .4c8.5 2.6 14.2 4.5 18 6.9c2.7 1.7 2.7 2.4 2.7 3.1l0 .2c0 1.6-.3 2.3-.6 2.7c-.3 .5-.9 1.2-2.1 2c-2.8 1.7-7.5 2.9-12.8 2.8c-7.2-.2-14.2-2.6-23.7-5.8l0 0 0 0c-1.3-.4-2.7-.9-4.1-1.4c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2c1.1 .4 2.4 .8 3.6 1.2l0 0 0 0c9 3.1 20.9 7.2 33.2 7.6c9.8 .3 21.2-1.6 30.7-7.6c10.2-6.4 18-17.3 17.8-32.3c-.2-14.7-8.5-24.2-17.6-29.9c-8-5-17.9-8-25.2-10.2l-.6-.2c-8.6-2.6-14.4-4.4-18.3-6.8c-1.6-1-2.1-1.6-2.2-1.7c0-.1 0-.2 0-.4z\"]\n};\nvar faCoffeeBeans = {\n prefix: 'fas',\n iconName: 'coffee-beans',\n icon: [512, 512, [], \"e13f\", \"M507.5 209.7c-3.4 12.3-19.1 11.8-25.4 .7c-5.4-9.5-11.3-18.5-17.6-26c-27.6-32.6-60.8-44.5-90.1-55l-1-.3c-30-10.7-55.8-20.2-77.5-45.9c-10.8-12.8-21.3-33.4-29.3-52c-1.7-4-.6-8.7 3-11.2C320.9-16 401.3-2.6 458 54c45.7 45.7 63.2 106.7 49.5 155.6zM228.5 78.3c3.4-12.3 19.1-11.8 25.4-.7c5.3 9.5 11.3 18.5 17.6 26c27.6 32.6 60.8 44.5 90.1 55l1 .3c30 10.7 55.8 20.2 77.5 45.9c10.8 12.8 21.3 33.4 29.3 52c1.7 4 .6 8.7-3 11.2C415.1 304 334.7 290.6 278 234c-45.7-45.7-63.2-106.7-49.5-155.6zM75.5 206c11.2-6.3 22 5.2 18.5 17.6c-2.9 10.5-5.2 21.2-6 31c-3.6 42.8 11.6 74.9 25 103.2l.4 .9c13.7 28.9 25.3 54.1 22.5 87.8c-1.4 16.7-8.6 38.9-16.1 57.9c-1.6 4.1-5.8 6.6-10.1 5.8C47.7 499.3 0 432.6 0 352c0-65 31-120.9 75.5-146zM180.5 498c-11.2 6.3-22-5.2-18.5-17.6c2.9-10.5 5.2-21.2 6-31c3.6-42.8-11.6-74.9-25-103.2l-.4-.9c-13.7-28.9-25.3-54.1-22.5-87.8c1.4-16.7 8.6-38.9 16.1-57.9c1.6-4.1 5.8-6.6 10.1-5.8C208.3 204.7 256 271.4 256 352c0 65-31 120.9-75.5 146z\"]\n};\nvar faHatWitch = {\n prefix: 'fas',\n iconName: 'hat-witch',\n icon: [576, 512, [], \"f6e7\", \"M200.7 181.4L112 384H224V336c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48v48H464L386.7 206.1c-1.8-4-2.7-8.4-2.7-12.8v-.8c0-5.6 1.5-11 4.2-15.9l18.6-32.5c5.7-10 16.3-16.1 27.8-16.1H455c14.7 0 27.5 10 31 24.2l6.2 24.6c2.2 8.9 10.2 15.1 19.4 15.1c9.5 0 17.7-6.7 19.6-16.1l12.2-60.8c.4-2.1 .6-4.2 .6-6.3v-6.8c0-9-3.8-17.5-10.4-23.6L457.2 8.4C451.3 3 443.6 0 435.6 0h-2.2c-6.1 0-12.1 1.8-17.3 5L273.1 96.6c-32 20.5-57.2 50-72.4 84.8zM320 384V336c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48h64zM22.6 416C10.1 416 0 426.1 0 438.6c0 6 2.4 11.7 6.9 15.6C25.9 470.3 82.6 512 160 512H416c77.4 0 134.1-41.7 153.1-57.8c4.6-3.9 6.9-9.6 6.9-15.6c0-12.5-10.1-22.6-22.6-22.6H22.6z\"]\n};\nvar faFaceGrinWink = {\n prefix: 'fas',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-16.9-79.2c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrinWink = faFaceGrinWink;\nvar faClockThreeThirty = {\n prefix: 'fas',\n iconName: 'clock-three-thirty',\n icon: [512, 512, [], \"e357\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM232 392V256c0-13.3 10.7-24 24-24H360c13.3 0 24 10.7 24 24s-10.7 24-24 24H280V392c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faEarDeaf = {\n prefix: 'fas',\n iconName: 'ear-deaf',\n icon: [512, 512, [\"deaf\", \"deafness\", \"hard-of-hearing\"], \"f2a4\", \"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5c-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3C74.8 132.5 149.4 64 240 64c97.2 0 176 78.8 176 176c0 46-17.7 87.9-46.6 119.3c-12 13-17.4 24.8-17.4 34.7V400c0 61.9-50.1 112-112 112c-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48v-6.1c0-32.9 17.4-59.6 34.4-78c18.4-20 29.6-46.6 29.6-75.9c0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n};\nvar faDeaf = faEarDeaf;\nvar faDeafness = faEarDeaf;\nvar faHardOfHearing = faEarDeaf;\nvar faAlarmClock = {\n prefix: 'fas',\n iconName: 'alarm-clock',\n icon: [512, 512, [9200], \"f34e\", \"M160 25.4C143 9.6 120.2 0 95.2 0C42.6 0 0 42.6 0 95.2c0 18.8 5.5 36.3 14.9 51.1L160 25.4zM256 512c50.3 0 96.8-16.6 134.2-44.6l35.2 35.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-35.2-35.2c28-37.4 44.6-83.8 44.6-134.2C480 164.3 379.7 64 256 64S32 164.3 32 288c0 50.3 16.6 96.8 44.6 134.2L41.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l35.2-35.2c37.4 28 83.8 44.6 134.1 44.6zM497.1 146.4C506.5 131.6 512 114 512 95.2C512 42.6 469.4 0 416.8 0C391.8 0 369 9.6 352 25.4L497.1 146.4zM280 184v94.1l41 41c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-4.5-4.5-7-10.6-7-17V184c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faEclipse = {\n prefix: 'fas',\n iconName: 'eclipse',\n icon: [640, 512, [], \"f749\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9l9.6 52.2c-34.2 15-63.7 38.9-85.4 68.8c-12.4-4-25.6-6.2-39.4-6.2c-70.7 0-128 57.3-128 128s57.3 128 128 128c13.7 0 27-2.2 39.4-6.2c21.7 29.9 51.1 53.9 85.4 68.8l-9.6 52.2c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM256 160c7.6 0 15 .9 22.1 2.6C264 190.7 256 222.4 256 256s8 65.3 22.1 93.4c-7.1 1.7-14.5 2.6-22.1 2.6c-53 0-96-43-96-96s43-96 96-96zM464 80a176 176 0 1 1 0 352 176 176 0 1 1 0-352z\"]\n};\nvar faFaceRelieved = {\n prefix: 'fas',\n iconName: 'face-relieved',\n icon: [512, 512, [], \"e389\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM187.3 356.7c13 13 35.8 27.3 68.7 27.3s55.6-14.3 68.7-27.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C329.4 397.2 298.9 416 256 416s-73.4-18.8-91.3-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zM387.2 238.4c5.3-7.1 15.3-8.5 22.4-3.2s8.5 15.3 3.2 22.4c-30.4 40.5-91.2 40.5-121.6 0c-5.3-7.1-3.9-17.1 3.2-22.4s17.1-3.9 22.4 3.2c17.6 23.5 52.8 23.5 70.4 0zm-262.4 0c17.6 23.5 52.8 23.5 70.4 0c5.3-7.1 15.3-8.5 22.4-3.2s8.5 15.3 3.2 22.4c-30.4 40.5-91.2 40.5-121.6 0c-5.3-7.1-3.9-17.1 3.2-22.4s17.1-3.9 22.4 3.2zM207.2 74.9c2.8 8.4-1.7 17.4-10.1 20.2l-6.3 2.1c-23.6 7.9-44 23.4-57.8 44.1l-7.6 11.5c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l7.6-11.5c17.8-26.6 43.9-46.6 74.3-56.7l6.3-2.1c8.4-2.8 17.4 1.7 20.2 10.1zM314.9 95.2c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1l6.3 2.1c30.4 10.1 56.5 30.1 74.3 56.7l7.6 11.5c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4L379 141.4c-13.8-20.7-34.1-36.3-57.8-44.1l-6.3-2.1z\"]\n};\nvar faRoadCircleCheck = {\n prefix: 'fas',\n iconName: 'road-circle-check',\n icon: [640, 512, [], \"e564\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [9860], \"f523\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faOctagonMinus = {\n prefix: 'fas',\n iconName: 'octagon-minus',\n icon: [512, 512, [\"minus-octagon\"], \"f308\", \"M140.6 21.2C154.1 7.7 172.4 .1 191.5 .1h129c19.1 0 37.4 7.6 50.9 21.1L490.8 140.6c13.5 13.5 21.1 31.8 21.1 50.9v129c0 19.1-7.6 37.4-21.1 50.9L371.4 490.8c-13.5 13.5-31.8 21.1-50.9 21.1h-129c-19.1 0-37.4-7.6-50.9-21.1L21.2 371.4C7.7 357.9 .1 339.6 .1 320.5v-129c0-19.1 7.6-37.4 21.1-50.9L140.6 21.2zM184 232c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faMinusOctagon = faOctagonMinus;\nvar faSquareRss = {\n prefix: 'fas',\n iconName: 'square-rss',\n icon: [448, 512, [\"rss-square\"], \"f143\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faRssSquare = faSquareRss;\nvar faFaceZany = {\n prefix: 'fas',\n iconName: 'face-zany',\n icon: [512, 512, [], \"e3a4\", \"M384.1 477.7C506.5 407 548.5 250.4 477.8 128S250.5-36.4 128.1 34.3S-36.3 261.6 34.4 384c36.2 62.7 94.9 104.3 160.1 120.5c-11.5-15.8-18.4-35.4-18.4-56.5V408.2c-10.4-6.2-20.1-13.7-28.9-22.2c-10.2-9.9-6.6-26.3 5.7-33.4L391.2 214.9c12.3-7.1 28.3-2 31.8 11.8c15.2 59.4-5.9 124.1-55 165V448c0 15.4-3.6 30-10.1 42.9c8.8-3.8 17.5-8.2 26.1-13.2zM128 160a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm112-8a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zm96.1 296V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0C257.8 383.9 248 376 236.7 376h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64zM152 224a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm144-56a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faTricycle = {\n prefix: 'fas',\n iconName: 'tricycle',\n icon: [512, 512, [], \"e5c3\", \"M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h73.6c7.9 0 14.4 6.4 14.4 14.4c0 4.2-1.8 8.2-5 10.9l-42.6 36.5c-.8 .7-1.6 1.4-2.3 2.2H307.2c-58.8 0-114 23.9-154.1 64.6L133.6 176H136c13.3 0 24-10.7 24-24s-10.7-24-24-24H56c-13.3 0-24 10.7-24 24s10.7 24 24 24H77.6l44 73.4c-1.3 2.2-2.6 4.5-3.9 6.7c-1.9-.1-3.9-.1-5.8-.1C50.1 256 0 306.1 0 368s50.1 112 112 112s112-50.1 112-112c0-42.4-23.6-79.4-58.4-98.4c30.7-48.1 84-77.6 141.6-77.6h12.1l11 43.8C286.4 256.1 256 300.5 256 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-2.4 0-4.8 .1-7.2 .2l-13.9-55.6 31.3-26.9C408 129.9 416 112.6 416 94.4C416 59.9 388.1 32 353.6 32H280zm64.2 260l16.5 65.9c3.2 12.9 16.2 20.7 29.1 17.5s20.7-16.2 17.5-29.1l-16.5-65.9c36.6 3.4 65.2 34.2 65.2 71.7c0 39.8-32.2 72-72 72s-72-32.2-72-72c0-25.1 12.8-47.1 32.2-60zM112 312a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faLandMineOn = {\n prefix: 'fas',\n iconName: 'land-mine-on',\n icon: [640, 512, [], \"e51b\", \"M344 24V168c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM192 320c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32v32H192V320zm-77.3 90.5c8.1-16.3 24.8-26.5 42.9-26.5H482.3c18.2 0 34.8 10.3 42.9 26.5l27.6 55.2C563.5 487 548 512 524.2 512H115.8c-23.8 0-39.3-25-28.6-46.3l27.6-55.2zM36.3 138.3c7.5-10.9 22.5-13.6 33.4-6.1l104 72c10.9 7.5 13.6 22.5 6.1 33.4s-22.5 13.6-33.4 6.1l-104-72c-10.9-7.5-13.6-22.5-6.1-33.4zm534.1-6.1c10.9-7.5 25.8-4.8 33.4 6.1s4.8 25.8-6.1 33.4l-104 72c-10.9 7.5-25.8 4.8-33.4-6.1s-4.8-25.8 6.1-33.4l104-72z\"]\n};\nvar faSquareArrowUpLeft = {\n prefix: 'fas',\n iconName: 'square-arrow-up-left',\n icon: [448, 512, [], \"e263\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM288 144c13.3 0 24 10.7 24 24s-10.7 24-24 24H193.9L329 327c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-135-135V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V168c0-13.3 10.7-24 24-24H288z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3V224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7s16.9 30.7 34.5 29.2l8-.7c34.1-2.8 64.2-18.9 85.4-42.9c21.2 24 51.2 40.1 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V128.3c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7C179.2 3.6 149.2 19.7 128 43.7c-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"]\n};\nvar faChartMixedUpCircleDollar = {\n prefix: 'fas',\n iconName: 'chart-mixed-up-circle-dollar',\n icon: [576, 512, [], \"e5d9\", \"M400 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h28.8L319.4 151.5 211.2 70.4c-11.7-8.8-27.8-8.5-39.2 .6L12 199c-13.8 11-16 31.2-5 45s31.2 16 45 5L192.6 136.5l108.2 81.1c11.7 8.8 27.8 8.5 39.2-.6L480 105v39c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H400zM192 224c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32zM64 320c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V352c0-17.7-14.3-32-32-32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zM408.1 339l0 .1c0 .4 0 1.9 4.8 4.5c5.6 3 13.5 5.2 23.9 8.2l.2 0c9.3 2.6 21.1 6 30.5 11.5c10.2 6 20 16.1 20.5 32.3c.5 18.2-9.7 30.4-21.7 36.9c-5.8 3.1-12.1 5.1-18.3 6.2v10.8c0 8.8-7.2 16-16 16s-16-7.2-16-16V438.1c-8.6-1.7-16.7-4.3-23.7-6.6l0 0 0 0c-1.7-.6-3.4-1.1-5-1.6c-8.4-2.6-13.2-11.6-10.5-20s11.6-13.2 20-10.5c2 .6 3.9 1.2 5.8 1.8c11.4 3.6 20.4 6.5 29.9 6.8c6.7 .2 13.8-1.1 18.5-3.6c2.2-1.2 3.4-2.4 4-3.3c.5-.8 1.1-2.1 1-4.5c0-1.4-.2-3-4.7-5.6c-5.3-3.1-12.9-5.4-23.2-8.3l-1.8-.5c-8.9-2.5-19.8-5.6-28.6-10.3c-9.9-5.3-20.6-14.7-21.6-30.7c-1.2-18.8 10-30.9 21.8-37.2c5.7-3.1 12-5.1 18-6.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v9.4c6.3 .9 12.3 2.3 17.9 3.7c8.6 2.1 13.8 10.8 11.7 19.4s-10.8 13.8-19.4 11.7c-9.3-2.3-18.2-4-26.4-4.1c-6.2-.1-13.6 1.3-18.7 4c-2.4 1.3-3.6 2.5-4.2 3.4c-.4 .7-.9 1.6-.8 3.6z\"]\n};\nvar faSaltShaker = {\n prefix: 'fas',\n iconName: 'salt-shaker',\n icon: [384, 512, [129474], \"e446\", \"M319.4 448H64.6l36.6-256H282.8l36.6 256zM59.8 512H324.2c33 0 59.8-26.8 59.8-59.8c0-2.8-.2-5.7-.6-8.5L338.1 126.7C327.7 54 265.4 0 192 0S56.3 54 45.9 126.7L.6 443.8c-.4 2.8-.6 5.6-.6 8.5c0 33 26.8 59.8 59.8 59.8zM192 48a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM128 96a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM240 80a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2H112C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V413.3c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112H366.2c-29.9 0-54.2-24.3-54.2-54.2zM416 416v32H96V416H416z\"]\n};\nvar faFilePlus = {\n prefix: 'fas',\n iconName: 'file-plus',\n icon: [384, 512, [], \"f319\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM192 240c13.3 0 24 10.7 24 24v48h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V360H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h48V264c0-13.3 10.7-24 24-24z\"]\n};\nvar faDrawSquare = {\n prefix: 'fas',\n iconName: 'draw-square',\n icon: [448, 512, [], \"f5ef\", \"M96 151.4V360.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c5.6-9.7 13.7-17.8 23.4-23.4V151.4c-9.7-5.6-17.8-13.7-23.4-23.4H119.4c-5.6 9.7-13.7 17.8-23.4 23.4zM119.4 448c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V151.4C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32H328.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V360.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4z\"]\n};\nvar faToiletPaperUnderSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-under-slash',\n icon: [640, 512, [\"toilet-paper-reverse-slash\"], \"e2a1\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43V343.1c-9.9 19.5-23.2 38.2-39.9 51.8L510 374.4c22.6-14.8 41.4-46 53.1-86.4c8.2-28.2 12.8-61 12.8-96C576 86 533 0 480 0c-11.2 0-22 3.8-32 10.9c-37.3 26.4-64 97.5-64 181.1c0 33.8 4.4 65.5 12 93.1l-39.3-30.8c-3.1-19.9-4.7-40.8-4.7-62.3c0-56.9 11.5-110 31.5-150.1c7.5-15 17.1-29.7 28.7-41.9H160c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM528 512L406.2 416H224v48c0 26.5 21.5 48 48 48H528l.3 0H528zM64 192c0 106 43 192 96 192H365.5L66.5 148.4C64.9 162.4 64 177 64 192zm416 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nvar faToiletPaperReverseSlash = faToiletPaperUnderSlash;\nvar faStairs = {\n prefix: 'fas',\n iconName: 'stairs',\n icon: [576, 512, [], \"e289\", \"M384 64c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v96c0 17.7-14.3 32-32 32H320v96c0 17.7-14.3 32-32 32H192v96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V320c0-17.7 14.3-32 32-32h96V192c0-17.7 14.3-32 32-32h96V64z\"]\n};\nvar faDroneFront = {\n prefix: 'fas',\n iconName: 'drone-front',\n icon: [640, 512, [\"drone-alt\"], \"f860\", \"M155.7 112c-5.5-9.6-15.9-16-27.7-16s-22.2 6.4-27.7 16H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H155.7zM376 112c-13.3 0-24 10.7-24 24s10.7 24 24 24H616c13.3 0 24-10.7 24-24s-10.7-24-24-24H539.7c-5.5-9.6-15.9-16-27.7-16s-22.2 6.4-27.7 16H376zM96 192v64c0 12.6 7.4 24.1 19 29.2l56.5 25.1c-17.8 21.5-27.5 48.5-27.5 76.4V392c0 13.3 10.7 24 24 24s24-10.7 24-24v-5.2c0-16.8 5.9-33.2 16.7-46.1l8.4-10.1L259 349.2c4.1 1.8 8.5 2.8 13 2.8h96c4.5 0 8.9-.9 13-2.8l41.9-18.6 8.4 10.1c10.8 12.9 16.7 29.3 16.7 46.1V392c0 13.3 10.7 24 24 24s24-10.7 24-24v-5.2c0-27.9-9.7-54.9-27.5-76.4L525 285.2c11.6-5.1 19-16.6 19-29.2V192H480v43.2l-17.8 7.9-40.6-23.7C390.7 201.5 355.7 192 320 192s-70.7 9.5-101.6 27.5l-40.6 23.7L160 235.2V192H96z\"]\n};\nvar faDroneAlt = faDroneFront;\nvar faGlassEmpty = {\n prefix: 'fas',\n iconName: 'glass-empty',\n icon: [384, 512, [], \"e191\", \"M8.6 10.2C14.6 3.7 23.1 0 32 0H352c8.9 0 17.4 3.7 23.4 10.2s9.1 15.2 8.5 24.1L355.1 437.7c-3 41.9-37.8 74.3-79.8 74.3H108.7c-42 0-76.8-32.4-79.8-74.3L.1 34.3c-.6-8.9 2.4-17.6 8.5-24.1zM66.4 64L92.7 433.1c.6 8.4 7.6 14.9 16 14.9H275.3c8.4 0 15.4-6.5 16-14.9L317.6 64H66.4z\"]\n};\nvar faDialHigh = {\n prefix: 'fas',\n iconName: 'dial-high',\n icon: [576, 512, [], \"e15c\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm.4 127.6c80.2 0 146.6 59 158.2 136H288.4c-13.3 0-24 10.7-24 24s10.7 24 24 24H446.6c-11.6 77-78 136-158.2 136c-88.4 0-160-71.6-160-160s71.6-160 160-160zM512 288a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 96a32 32 0 1 1 64 0A32 32 0 1 1 64 96zM480 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 480a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm416-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faUserHelmetSafety = {\n prefix: 'fas',\n iconName: 'user-helmet-safety',\n icon: [448, 512, [128119, \"user-construction\", \"user-hard-hat\"], \"f82c\", \"M216 0c-13.3 0-24 10.7-24 24V80L163.6 23.1C125.6 43.5 99 82.6 96.2 128H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H352c13.3 0 24-10.7 24-24s-10.7-24-24-24h-.2C349 82.6 322.4 43.5 284.4 23.1L256 80V24c0-13.3-10.7-24-24-24H216zm8 320c65.3 0 119.1-48.9 127-112H97c7.9 63.1 61.7 112 127 112zm-89.6 32C60.2 352 0 412.2 0 486.4C0 500.5 11.5 512 25.6 512H422.4c14.1 0 25.6-11.5 25.6-25.6C448 412.2 387.8 352 313.6 352H134.4z\"]\n};\nvar faUserConstruction = faUserHelmetSafety;\nvar faUserHardHat = faUserHelmetSafety;\nvar faI = {\n prefix: 'fas',\n iconName: 'i',\n icon: [320, 512, [105], \"49\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96h96V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V96h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 32z\"]\n};\nvar faHryvniaSign = {\n prefix: 'fas',\n iconName: 'hryvnia-sign',\n icon: [384, 512, [8372, \"hryvnia\"], \"f6f2\", \"M121.9 116.2C138.3 103.1 158.7 96 179.6 96H223c27.1 0 49 21.9 49 49c0 11.5-4 22.4-11.1 31H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H155.5l-50.6 28.9c-1.7 1-3.4 2-5.1 3.1H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H52.3c-2.8 9.9-4.3 20.4-4.3 31c0 62.4 50.6 113 113 113h43.4c35.5 0 70-12.1 97.7-34.3L308 441c13.8-11 16-31.2 5-45s-31.2-16-45-5l-5.9 4.7c-16.4 13.1-36.7 20.2-57.7 20.2H161c-27.1 0-49-21.9-49-49c0-11.5 4-22.4 11.1-31H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H228.5l50.6-28.9c1.7-1 3.4-2 5.1-3.1H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H331.7c2.8-10 4.3-20.4 4.3-31c0-62.4-50.6-113-113-113H179.6c-35.5 0-70 12.1-97.7 34.3L76 71c-13.8 11-16 31.2-5 45s31.2 16 45 5l5.9-4.7z\"]\n};\nvar faHryvnia = faHryvniaSign;\nvar faArrowDownLeftAndArrowUpRightToCenter = {\n prefix: 'fas',\n iconName: 'arrow-down-left-and-arrow-up-right-to-center',\n icon: [512, 512, [], \"e092\", \"M502.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L336 130.7V80c0-17.7-14.3-32-32-32s-32 14.3-32 32V208c0 17.7 14.3 32 32 32H432c17.7 0 32-14.3 32-32s-14.3-32-32-32H381.3L502.6 54.6zM80 272c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L176 381.3V432c0 17.7 14.3 32 32 32s32-14.3 32-32V304c0-17.7-14.3-32-32-32H80z\"]\n};\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 96c-26.5 0-48 21.5-48 48V256h96V144c0-26.5-21.5-48-48-48zM0 144C0 82.1 50.1 32 112 32s112 50.1 112 112V368c0 61.9-50.1 112-112 112S0 429.9 0 368V144zM554.9 399.4c-7.1 12.3-23.7 13.1-33.8 3.1L333.5 214.9c-10-10-9.3-26.7 3.1-33.8C360 167.7 387.1 160 416 160c88.4 0 160 71.6 160 160c0 28.9-7.7 56-21.1 79.4zm-59.5 59.5C472 472.3 444.9 480 416 480c-88.4 0-160-71.6-160-160c0-28.9 7.7-56 21.1-79.4c7.1-12.3 23.7-13.1 33.8-3.1L498.5 425.1c10 10 9.3 26.7-3.1 33.8z\"]\n};\nvar faFaceGrinWide = {\n prefix: 'fas',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nvar faGrinAlt = faFaceGrinWide;\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [129463], \"f5c9\", \"M186.1 52.1C169.3 39.1 148.7 32 127.5 32C74.7 32 32 74.7 32 127.5v6.2c0 15.8 3.7 31.3 10.7 45.5l23.5 47.1c4.5 8.9 7.6 18.4 9.4 28.2l36.7 205.8c2 11.2 11.6 19.4 22.9 19.8s21.4-7.4 24-18.4l28.9-121.3C192.2 323.7 207 312 224 312s31.8 11.7 35.8 28.3l28.9 121.3c2.6 11.1 12.7 18.8 24 18.4s20.9-8.6 22.9-19.8l36.7-205.8c1.8-9.8 4.9-19.3 9.4-28.2l23.5-47.1c7.1-14.1 10.7-29.7 10.7-45.5v-2.1c0-55-44.6-99.6-99.6-99.6c-24.1 0-47.4 8.8-65.6 24.6l-3.2 2.8 19.5 15.2c7 5.4 8.2 15.5 2.8 22.5s-15.5 8.2-22.5 2.8l-24.4-19-37-28.8z\"]\n};\nvar faBasketballHoop = {\n prefix: 'fas',\n iconName: 'basketball-hoop',\n icon: [640, 512, [], \"f435\", \"M6.8 187C24.7 153.1 116.7 0 320 0S615.3 153.1 633.2 187c4.9 9.4 6.8 19.1 6.8 28V331.2c0 25.3-14.9 48.2-38 58.5l-96.4 42.9L526.2 288H493.9l-7.2 50.3-22.9 160c-.9 6.1-5.2 11.2-11.1 13s-12.3 .1-16.5-4.4L384.4 451l-52.8 56c-3 3.2-7.2 5-11.6 5s-8.6-1.8-11.6-5l-52.8-56-51.9 55.9c-4.2 4.5-10.6 6.2-16.5 4.4s-10.2-6.9-11.1-13l-22.9-160L146.1 288H113.8l20.7 144.6L38 389.7C14.9 379.4 0 356.5 0 331.2V214.9c0-8.9 1.8-18.6 6.8-28zM178.4 288l5.2 36.6 44-36.6H178.4zm99.3 0l-.6 .5L320 334.6l42.8-46.1-.6-.5H277.8zm134.5 0l44 36.6 5.2-36.6H412.3zM192 128c-17.7 0-32 14.3-32 32v48H112c-8.8 0-16 7.2-16 16s7.2 16 16 16h64H464h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H480V160c0-17.7-14.3-32-32-32H192zm256 32v48H192V160H448zM387.5 309l-45.7 49.2 42.7 46 51.6-54.7L387.5 309zm49.4 151.6l11-76.8-41.5 44 30.5 32.9zM320 381.7l-42.6 45.9L320 472.7l42.6-45.2L320 381.7zm-21.8-23.5L252.5 309l-48.7 40.5 51.6 54.7 42.7-46zm-64.6 69.5l-41.5-44 11 76.8 30.5-32.9z\"]\n};\nvar faObjectsAlignBottom = {\n prefix: 'fas',\n iconName: 'objects-align-bottom',\n icon: [512, 512, [], \"e3bb\", \"M24 512l464 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24zM64 336c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48l0 288zm224 0c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48l0 160z\"]\n};\nvar faV = {\n prefix: 'fas',\n iconName: 'v',\n icon: [384, 512, [118], \"56\", \"M19.7 34.5c16.3-6.8 35 .9 41.8 17.2L192 364.8 322.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7L2.5 76.3c-6.8-16.3 .9-35 17.2-41.8z\"]\n};\nvar faSparkles = {\n prefix: 'fas',\n iconName: 'sparkles',\n icon: [512, 512, [10024], \"f890\", \"M327.5 85.2c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L384 128l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L448 128l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L448 64 426.8 7.5C425.1 3 420.8 0 416 0s-9.1 3-10.8 7.5L384 64 327.5 85.2zM205.1 73.3c-2.6-5.7-8.3-9.3-14.5-9.3s-11.9 3.6-14.5 9.3L123.3 187.3 9.3 240C3.6 242.6 0 248.3 0 254.6s3.6 11.9 9.3 14.5l114.1 52.7L176 435.8c2.6 5.7 8.3 9.3 14.5 9.3s11.9-3.6 14.5-9.3l52.7-114.1 114.1-52.7c5.7-2.6 9.3-8.3 9.3-14.5s-3.6-11.9-9.3-14.5L257.8 187.4 205.1 73.3zM384 384l-56.5 21.2c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L384 448l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L448 448l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L448 384l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L384 384z\"]\n};\nvar faSquid = {\n prefix: 'fas',\n iconName: 'squid',\n icon: [512, 512, [129425], \"e450\", \"M276 .3c-5.3-1.1-10.8 .6-14.6 4.5s-5.4 9.4-4.2 14.7l13.1 58.9c-71.9 46.2-103.4 101.8-110.6 148.4L146 213l-2.3-2.3-22.6-22.6c-6.2-6.2-6.2-16.4 0-22.6l56.4-56.4c18.9-18.9 18.7-49.5-.3-68.2L140.1 4.6c-6.3-6.1-16.3-6.1-22.5 .1l-2.8 2.8c-34 34-33.3 87.7-1.9 121L98.5 142.9c-18.7 18.7-18.7 49.1 0 67.9l22.6 22.6 0 0 5.7 5.7 0 0c9.3 9.4 9.3 24.5 0 33.9c-9.3 9.3-24.4 9.4-33.8 .2L76.5 256.6c-19.1-19.1-50.2-18.7-68.7 .9L4.4 261c-6.1 6.4-5.8 16.5 .6 22.6s16.5 5.8 22.6-.6l3.3-3.5c6.2-6.5 16.6-6.7 22.9-.3l10.6 10.6 .1 .2 22.6 22.6c10.1 10.2 9 26.9-2.4 35.8l-20 15.6c-3.5 2.7-7.7 4.2-12.1 4.2c-10.9 0-19.7-8.8-19.7-19.7V336c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 12.3C.9 376.8 24.1 400 52.6 400c11.5 0 22.7-3.8 31.8-10.9l28.2-21.9c9.4-7.3 22.8-6.5 31.2 1.9s9.3 21.8 1.9 31.2l-21.9 28.2c-7.1 9.1-10.9 20.3-10.9 31.8c0 28.6 23.2 51.7 51.7 51.7h12.3c8.8 0 16-7.2 16-16s-7.2-16-16-16H164.6c-10.9 0-19.7-8.8-19.7-19.7c0-4.4 1.5-8.7 4.2-12.1l15.6-20c8.8-11.4 25.6-12.4 35.8-2.3l.1 .1L223 448.3l.1 .1 9.9 9.8c6.5 6.5 6.2 17.2-.7 23.3l-2.8 2.5c-6.6 5.9-7.2 16-1.3 22.6s16 7.2 22.6 1.3l2.8-2.5c20.7-18.3 21.6-50.3 2.1-69.8l-9.9-9.9-5.7-5.7-.1-.1c-9.3-9.3-9.3-24.4 0-33.8l.1-.1 .1-.1c9.3-9.2 24.4-9.2 33.7 0l28.4 28.4c18.7 18.7 49.1 18.7 67.9 0L384.4 400c33.3 31.4 87 32.1 121-1.9l2.8-2.8c6.2-6.2 6.3-16.3 .1-22.5L472 335.7c-18.7-19-49.3-19.2-68.2-.3l-56.4 56.3c-6.2 6.2-16.4 6.2-22.6 0l-22.5-22.5-.1-.1-16-16c46.6-7.2 102.2-38.7 148.4-110.6l58.9 13.1c5.3 1.2 10.8-.4 14.7-4.2s5.6-9.3 4.5-14.6L489.3 120.2c9.2-30.2 17.2-64 23.4-101.5c.9-5.1-.8-10.3-4.5-13.9S499.4-.6 494.3 .2C456.7 6.5 423 14.4 392.7 23.6L276 .3zM168.9 280a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm64 32a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faLeafyGreen = {\n prefix: 'fas',\n iconName: 'leafy-green',\n icon: [576, 512, [129388], \"e41d\", \"M97.9 28.4C92 34.4 87 40.8 83 47.7C70 69.6 50.6 89.9 30.9 105.9c-2.3 1.8-4.4 3.8-6.5 5.9C-1.4 137.6-6.8 176.2 8.5 207.2c5.7 11.7 11 24.1 11 37.1v35.7c0 14.7 5.8 28.8 16.3 39.2l26.3 26.3c10.4 10.4 16.3 24.5 16.3 39.2l0 12.9c0 2.9 .2 5.8 .7 8.7l7.6-7.6c6-6 9.4-14.1 9.4-22.6V330.5c0-25.5 10.1-49.9 28.1-67.9l10.5-10.5c6-6 9.4-14.1 9.4-22.6v-43c0-25.5 10.1-49.9 28.1-67.9l29.1-29.1c5-5 8.8-12.9 13.7-27c4.4-12.9 10.8-24.8 18.9-35.5c-38-36.5-98.4-36-135.8 1.5zM567.5 229.9c-3.1-29.1-2.3-61.5 5-89.9c2.3-8.9 3.5-18.3 3.5-28C576 50.1 525.9 0 464 0c-9.7 0-19 1.2-28 3.5c-28.4 7.3-60.8 8.1-89.9 5c-3.3-.3-6.7-.5-10.1-.5c-42.1 0-77.9 27.1-90.8 64.9c-4.9 14.3-10.6 28.6-21.3 39.3l-29.1 29.1c-12 12-18.7 28.3-18.7 45.3v43c0 17-6.7 33.3-18.7 45.3l-10.5 10.5c-12 12-18.7 28.3-18.7 45.3v45.7c0 17-6.7 33.3-18.7 45.3L73.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l35.9-35.9c12-12 28.3-18.7 45.3-18.7h45.7c17 0 33.3-6.7 45.3-18.7l10.5-10.5c12-12 28.3-18.7 45.3-18.7h43c17 0 33.3-6.7 45.3-18.7l29.1-29.1c10.7-10.7 25-16.4 39.3-21.3C540.9 317.9 568 282.1 568 240c0-3.4-.2-6.8-.5-10.1zM475.3 100.7c6.2 6.2 6.2 16.4 0 22.6L390.6 208H448c8.8 0 16 7.2 16 16s-7.2 16-16 16H358.6l-59.3 59.3-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L272 281.4V192c0-8.8 7.2-16 16-16s16 7.2 16 16v57.4l36.7-36.7 112-112c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faCircleArrowUpRight = {\n prefix: 'fas',\n iconName: 'circle-arrow-up-right',\n icon: [512, 512, [], \"e0fc\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm368 64c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-94.1L185 361c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l135-135L184 192c-13.3 0-24-10.7-24-24s10.7-24 24-24l160 0c13.3 0 24 10.7 24 24l0 152z\"]\n};\nvar faCalendars = {\n prefix: 'fas',\n iconName: 'calendars',\n icon: [512, 512, [], \"e0d7\", \"M224 0c-17.7 0-32 14.3-32 32V64H144c-26.5 0-48 21.5-48 48v48H512V112c0-26.5-21.5-48-48-48H416V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H256V32c0-17.7-14.3-32-32-32zM96 192V368c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V192H96zm-48-8c0-13.3-10.7-24-24-24s-24 10.7-24 24V392c0 66.3 53.7 120 120 120H392c13.3 0 24-10.7 24-24s-10.7-24-24-24H120c-39.8 0-72-32.2-72-72V184z\"]\n};\nvar faBangladeshiTakaSign = {\n prefix: 'fas',\n iconName: 'bangladeshi-taka-sign',\n icon: [384, 512, [], \"e2e6\", \"M36 32.2C18.4 30.1 2.4 42.5 .2 60S10.5 93.6 28 95.8l7.9 1c16 2 28 15.6 28 31.8V160H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V384c0 53 43 96 96 96h32c106 0 192-86 192-192V256c0-53-43-96-96-96H272c-17.7 0-32 14.3-32 32s14.3 32 32 32h16c17.7 0 32 14.3 32 32v32c0 70.7-57.3 128-128 128H160c-17.7 0-32-14.3-32-32V224h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V128.5c0-48.4-36.1-89.3-84.1-95.3l-7.9-1z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [128690], \"f206\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h25.7l34.6 64H222.9l-27.4-38C191 99.7 183.7 96 176 96H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h43.7l22.1 30.7-26.6 53.1c-10-2.5-20.5-3.8-31.2-3.8C57.3 224 0 281.3 0 352s57.3 128 128 128c65.3 0 119.1-48.9 127-112h49c8.5 0 16.3-4.5 20.7-11.8l84.8-143.5 21.7 40.1C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L375.4 48.8C369.8 38.4 359 32 347.2 32H312zM458.6 303.7l32.3 59.7c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-32.3-59.7c3.6-.6 7.4-.9 11.2-.9c39.8 0 72 32.2 72 72s-32.2 72-72 72s-72-32.2-72-72c0-18.6 7-35.5 18.6-48.3zM133.2 368h65c-7.3 32.1-36 56-70.2 56c-39.8 0-72-32.2-72-72s32.2-72 72-72c1.7 0 3.4 .1 5.1 .2l-24.2 48.5c-9 18.1 4.1 39.4 24.3 39.4zm33.7-48l50.7-101.3 72.9 101.2-.1 .1H166.8zm90.6-128H365.9L317 274.8 257.4 192z\"]\n};\nvar faHammerWar = {\n prefix: 'fas',\n iconName: 'hammer-war',\n icon: [384, 512, [], \"f6e4\", \"M192 0c17.7 0 32 14.3 32 32V50.8L347.3 32.4c9.2-1.4 18.6 1.3 25.6 7.4S384 54.7 384 64V256c0 9.3-4.1 18.2-11.1 24.2s-16.4 8.8-25.6 7.4L196.7 265.1c-3.1-.5-6.3-.5-9.5 0L36.7 287.6c-9.2 1.4-18.6-1.3-25.6-7.4S0 265.3 0 256V64c0-9.3 4.1-18.2 11.1-24.2s16.4-8.8 25.6-7.4L160 50.8V32c0-17.7 14.3-32 32-32zm0 296.7l32 4.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V301.5l32-4.8z\"]\n};\nvar faCircleD = {\n prefix: 'fas',\n iconName: 'circle-d',\n icon: [512, 512, [], \"e104\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 128h72c70.7 0 128 57.3 128 128s-57.3 128-128 128H184c-13.3 0-24-10.7-24-24V152c0-13.3 10.7-24 24-24zm72 208c44.2 0 80-35.8 80-80s-35.8-80-80-80H208V336h48z\"]\n};\nvar faSpiderBlackWidow = {\n prefix: 'fas',\n iconName: 'spider-black-widow',\n icon: [512, 512, [], \"f718\", \"M144.6 1.6c12.4 4.8 18.5 18.6 13.8 31l-32.5 84.6c-1.1 3-.4 6.3 1.8 8.5L176 174.1V160c0-31.8 18.6-59.3 45.5-72.2c9.1-4.4 18.5 3.3 18.5 13.4V112c0 8.8 7.2 16 16 16s16-7.2 16-16V101.2c0-10.1 9.4-17.7 18.5-13.4C317.4 100.7 336 128.2 336 160v14.1l48.3-48.3c2.2-2.2 2.9-5.6 1.8-8.5L353.6 32.6c-4.8-12.4 1.4-26.3 13.8-31s26.3 1.4 31 13.8L430.9 100c7.9 20.7 3 44.1-12.7 59.7l-57.4 57.4 80.4-26.8c2.4-.8 4.3-2.7 5.1-5.1l18.9-56.8c4.2-12.6 17.8-19.4 30.4-15.2s19.4 17.8 15.2 30.4l-18.9 56.8c-5.6 16.7-18.7 29.8-35.4 35.4L395.9 256l60.5 20.2c16.7 5.6 29.8 18.7 35.4 35.4l18.9 56.8c4.2 12.6-2.6 26.2-15.2 30.4s-26.2-2.6-30.4-15.2l-18.9-56.8c-.8-2.4-2.7-4.3-5.1-5.1l-80.4-26.8 57.4 57.4c15.6 15.6 20.6 39 12.7 59.7l-32.5 84.6c-4.8 12.4-18.6 18.5-31 13.8s-18.5-18.6-13.8-31l32.5-84.6c1.1-3 .4-6.3-1.8-8.5L352 353.9c-1 52.1-43.6 94.1-96 94.1s-95-41.9-96-94.1l-32.3 32.3c-2.2 2.2-2.9 5.6-1.8 8.5l32.5 84.6c4.8 12.4-1.4 26.3-13.8 31s-26.3-1.4-31-13.8L81.1 412c-7.9-20.7-3-44.1 12.7-59.7l57.4-57.4L70.8 321.7c-2.4 .8-4.3 2.7-5.1 5.1L46.8 383.6C42.6 396.2 29 403 16.4 398.8S-3 381 1.2 368.4l18.9-56.8c5.6-16.7 18.7-29.8 35.4-35.4L116.1 256 55.6 235.8c-16.7-5.6-29.8-18.7-35.4-35.4L1.2 143.6C-3 131 3.8 117.4 16.4 113.2s26.2 2.6 30.4 15.2l18.9 56.8c.8 2.4 2.7 4.3 5.1 5.1l80.4 26.8L93.7 159.7C78.1 144 73.1 120.6 81.1 100l32.5-84.6c4.8-12.4 18.6-18.5 31-13.8zm73.8 305.6L240 336l-21.6 28.8c-1.6 2.1-2.4 4.6-2.4 7.2c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12c0-2.6-.8-5.1-2.4-7.2L272 336l21.6-28.8c1.6-2.1 2.4-4.6 2.4-7.2c0-6.6-5.4-12-12-12H228c-6.6 0-12 5.4-12 12c0 2.6 .8 5.1 2.4 7.2z\"]\n};\nvar faStaffSnake = {\n prefix: 'fas',\n iconName: 'staff-snake',\n icon: [384, 512, [\"rod-asclepius\", \"rod-snake\", \"staff-aesculapius\"], \"e579\", \"M222.6 43.2l-.1 4.8H288c53 0 96 43 96 96s-43 96-96 96H248V160h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H248 220l-4.5 144H256c53 0 96 43 96 96s-43 96-96 96H240V384h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H213l-3.1 99.5L208.5 495l0 1c-.3 8.9-7.6 16-16.5 16s-16.2-7.1-16.5-16l0-1-1-31H136c-22.1 0-40-17.9-40-40s17.9-40 40-40h36l-1-32H152c-53 0-96-43-96-96c0-47.6 34.6-87.1 80-94.7V256c0 8.8 7.2 16 16 16h16.5L164 128H136 122.6c-9 18.9-28.3 32-50.6 32H56c-30.9 0-56-25.1-56-56S25.1 48 56 48h8 8 89.5l-.1-4.8L161 32c0-.7 0-1.3 0-1.9c.5-16.6 14.1-30 31-30s30.5 13.4 31 30c0 .6 0 1.3 0 1.9l-.4 11.2zM64 112a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faRodAsclepius = faStaffSnake;\nvar faRodSnake = faStaffSnake;\nvar faStaffAesculapius = faStaffSnake;\nvar faPear = {\n prefix: 'fas',\n iconName: 'pear',\n icon: [512, 512, [], \"e20c\", \"M505 7c9.4 9.4 9.4 24.6 0 33.9L457.9 88.1c14 20.5 22.1 45.3 22.1 71.9c0 30.7-10.8 58.9-28.9 81c-29.9 36.5-61.4 81.8-73.3 127.4c-8.3 32-25 62.3-50.1 87.3c-75 75-196.5 75-271.5 0s-75-196.5 0-271.5c25.1-25.1 55.3-41.8 87.3-50.1c45.7-11.8 90.9-43.4 127.4-73.3c22.1-18 50.3-28.9 81-28.9c26.7 0 51.4 8.2 71.9 22.1L471 7c9.4-9.4 24.6-9.4 33.9 0zM320 320c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 53-43 96-96 96c-8.8 0-16 7.2-16 16s7.2 16 16 16c70.7 0 128-57.3 128-128z\"]\n};\nvar faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M448 325.8l44 34.5c8.1 1.4 14.8 6.8 18 14.1L552.9 408c10.6 .4 19.5 7.6 22.2 17.4l39.1 30.6c.6 0 1.2-.1 1.8-.1c11.1 0 20.4 7.5 23.2 17.8h-3.9c6.2 8.5 6.4 20.4-.4 29c-8.2 10.4-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L89.6 44.9C127 16.7 173.5 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v0 5.8zM0 224.2c0-38.7 9.8-75.1 27.1-106.9L341.8 365.3l-2.5 .3c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9l62 3.9 43 33.9C439.3 466.2 421.2 480 400 480H320v8c0 13.3-10.7 24-24 24H256v0H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM616 360a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-64-48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faTriangle = {\n prefix: 'fas',\n iconName: 'triangle',\n icon: [512, 512, [9650], \"f2ec\", \"M290.5 51.8C283.3 39.5 270.2 32 256 32s-27.3 7.5-34.5 19.8l-216 368c-7.3 12.4-7.3 27.7-.2 40.1S25.7 480 40 480H472c14.3 0 27.6-7.7 34.7-20.1s7-27.8-.2-40.1l-216-368z\"]\n};\nvar faApartment = {\n prefix: 'fas',\n iconName: 'apartment',\n icon: [576, 512, [], \"e468\", \"M176 0c-26.5 0-48 21.5-48 48V96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48h80 32 96V416c0-17.7 14.3-32 32-32s32 14.3 32 32v96h96 32 80c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H448V48c0-26.5-21.5-48-48-48H176zM368 320H336c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zm144 80c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM112 320H80c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zm16 80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zm112-80H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zM384 80v32c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM240 64c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h32zM384 208c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM496 320H464c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zM128 208c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zm112 16H208c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16z\"]\n};\nvar faTruckMedical = {\n prefix: 'fas',\n iconName: 'truck-medical',\n icon: [640, 512, [128657, \"ambulance\"], \"f0f9\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM176 80v48l-48 0c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V192h48c8.8 0 16-7.2 16-16V144c0-8.8-7.2-16-16-16H240V80c0-8.8-7.2-16-16-16H192c-8.8 0-16 7.2-16 16z\"]\n};\nvar faAmbulance = faTruckMedical;\nvar faPepper = {\n prefix: 'fas',\n iconName: 'pepper',\n icon: [512, 512, [129745], \"e432\", \"M252.6 11.7C245.8 .3 231-3.4 219.7 3.4s-15.1 21.6-8.2 32.9l10.3 17.2c6.7 11.2 10.3 24 10.3 37v10.9c-5.6-2-11.5-3.5-17.4-4.4l-1.1-.2c-8.1-1.2-16.4-1.3-24.9-.3c-4 .5-7.9 1.2-11.9 2.2c-51.4 12.9-74.7 65-61.9 116.4l37.1 148.3c2.1 8.6-3.1 17.3-11.6 19.4s-17.3-3.1-19.4-11.6L83.8 223c-11.8-47 .4-94.4 31.3-125.2c-13.6-2.8-28-2.6-42.4 1C21.3 111.7-10 163.8 2.9 215.3l56 224c12.9 51.4 65 82.7 116.4 69.8c7-1.7 13.6-4.2 19.8-7.3c5.6-2.8 12.3-2.8 17.9 0c3 1.5 6 2.8 9.2 4c10.7 4 22.2 6.2 34 6.2c11.6 0 22.9-2.1 33.5-6.1c3.2-1.2 6.4-2.6 9.4-4.1c5.6-2.8 12.3-2.8 17.9 0c6.2 3.1 12.8 5.6 19.8 7.3c51.4 12.9 103.6-18.4 116.4-69.8l56-224c12.9-51.4-18.4-103.6-69.8-116.4c-23.2-5.8-46.5-2.6-66.3 7.3c-5.6 2.8-12.3 2.8-17.9 0c-6.2-3.1-12.8-5.6-19.8-7.3c-19-4.8-38.1-3.5-55.3 2.6V90.6c0-21.7-5.9-43.1-17.1-61.7L252.6 11.7z\"]\n};\nvar faPiano = {\n prefix: 'fas',\n iconName: 'piano',\n icon: [512, 512, [], \"f8d4\", \"M0 192V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V327.6c0-24.2-13.7-46.4-35.4-57.2l-58.4-29.2c-21-10.5-34.2-31.9-34.2-55.4C384 83.2 300.8 0 198.3 0H192C86 0 0 86 0 192zM416 352h32v96H64V352H96v48c0 8.8 7.2 16 16 16s16-7.2 16-16V352h32v48c0 8.8 7.2 16 16 16s16-7.2 16-16V352h32v48c0 8.8 7.2 16 16 16s16-7.2 16-16V352h64v48c0 8.8 7.2 16 16 16s16-7.2 16-16V352h32v48c0 8.8 7.2 16 16 16s16-7.2 16-16V352z\"]\n};\nvar faGunSquirt = {\n prefix: 'fas',\n iconName: 'gun-squirt',\n icon: [576, 512, [], \"e19d\", \"M128 56c0-13.3-10.7-24-24-24S80 42.7 80 56v9.3C34.6 72.9 0 112.4 0 160c0 47.3 34.3 86.7 79.4 94.6L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480H168c14.7 0 27.5-10 31-24.2L219 376h53v16c0 13.3 10.7 24 24 24s24-10.7 24-24V352 312c0-13.3-10.7-24-24-24s-24 10.7-24 24v16H231l18-72H448c41.8 0 77.4-26.7 90.5-64H552c13.3 0 24-10.7 24-24V152c0-13.3-10.7-24-24-24H538.5C525.4 90.7 489.8 64 448 64H128V56zM96 128H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faWheatAwnCircleExclamation = {\n prefix: 'fas',\n iconName: 'wheat-awn-circle-exclamation',\n icon: [640, 512, [], \"e598\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c22.5 22.5 53.3 31.5 82.4 27c0-1 0-2.1 0-3.1c0-33.1 9.1-64.1 25-90.6c-15.5-8.7-32.5-13.8-49.8-15.5l31.9-31.9 12.2 12.2c6 6 12.6 11.1 19.7 15.2c27.5-34 67.3-57.5 112.6-63.8c-4.1-3.8-8.4-7.3-12.9-10.5L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [9731, 9924], \"f7d0\", \"M341.1 140.6c-2 3.9-1.6 8.6 1.2 12c7 8.5 12.9 18.1 17.2 28.4L408 160.2V120c0-13.3 10.7-24 24-24s24 10.7 24 24v19.6l22.5-9.7c12.2-5.2 26.3 .4 31.5 12.6s-.4 26.3-12.6 31.5l-56 24-73.6 31.5c-.5 9.5-2.1 18.6-4.8 27.3c-1.2 3.8-.1 8 2.8 10.8C396.7 296.9 416 338.2 416 384c0 44.7-18.3 85-47.8 114.1c-9.9 9.7-23.7 13.9-37.5 13.9H181.3c-13.9 0-27.7-4.2-37.5-13.9C114.3 469 96 428.7 96 384c0-45.8 19.3-87.1 50.1-116.3c2.9-2.8 4-6.9 2.8-10.8c-2.7-8.7-4.3-17.9-4.8-27.3L70.5 198.1l-56-24C2.4 168.8-3.3 154.7 1.9 142.5s19.3-17.8 31.5-12.6L56 139.6V120c0-13.3 10.7-24 24-24s24 10.7 24 24v40.2L152.6 181c4.3-10.3 10.1-19.9 17.2-28.4c2.8-3.4 3.3-8.1 1.2-12C164 127.2 160 112.1 160 96c0-53 43-96 96-96s96 43 96 96c0 16.1-4 31.2-10.9 44.6zM224 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-16 80a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM288 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48 24v3.2c0 3.2 .8 6.3 2.3 9l9 16.9c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l9-16.9c1.5-2.8 2.3-5.9 2.3-9V120c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faUserAlien = {\n prefix: 'fas',\n iconName: 'user-alien',\n icon: [448, 512, [], \"e04a\", \"M64 167C64 74.8 135.6 0 224 0s160 74.8 160 167c0 101-106.6 185-139.2 208.3c-6.1 4.3-13.4 6.5-20.8 6.5s-14.7-2.1-20.8-6.5C170.6 352 64 268.1 64 167zm244.6 9c-37.9 0-68.6 30.7-68.6 68.6c0 6.3 5.1 11.4 11.4 11.4h16c37.9 0 68.6-30.7 68.6-68.6c0-6.3-5.1-11.4-11.4-11.4h-16zM208 244.6c0-37.9-30.7-68.6-68.6-68.6h-16c-6.3 0-11.4 5.1-11.4 11.4c0 37.9 30.7 68.6 68.6 68.6h16c6.3 0 11.4-5.1 11.4-11.4zM0 486.4C0 415 55.7 356.6 126.1 352.3c23.8 23.2 46.1 40.2 58.5 49.1c12 8.6 25.9 12.4 39.4 12.4s27.4-3.8 39.4-12.4c12.4-8.8 34.7-25.8 58.5-49.1C392.3 356.6 448 415 448 486.4c0 14.1-11.5 25.6-25.6 25.6H25.6C11.5 512 0 500.5 0 486.4z\"]\n};\nvar faShieldCheck = {\n prefix: 'fas',\n iconName: 'shield-check',\n icon: [512, 512, [], \"f2f7\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160H397.3L502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2c-11.1 13.9-19.4 30.3-23.9 48.1C127.6 497.4 142.3 512 160 512H352c17.7 0 32.4-14.6 28.1-31.7c-4.5-17.8-12.8-34.1-23.9-48.1C436.6 403.7 480 338.5 480 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faRoadBarrier = {\n prefix: 'fas',\n iconName: 'road-barrier',\n icon: [640, 512, [], \"e562\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V266.3L149.2 96H64V64c0-17.7-14.3-32-32-32zM405.2 96H330.8l-5.4 10.7L234.8 288h74.3l5.4-10.7L405.2 96zM362.8 288h74.3l5.4-10.7L533.2 96H458.8l-5.4 10.7L362.8 288zM202.8 96l-5.4 10.7L106.8 288h74.3l5.4-10.7L277.2 96H202.8zm288 192H576V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v53.7L490.8 288z\"]\n};\nvar faChartCandlestick = {\n prefix: 'fas',\n iconName: 'chart-candlestick',\n icon: [512, 512, [], \"e0e2\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zM320 48c0-8.8-7.2-16-16-16s-16 7.2-16 16V96c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32v48c0 8.8 7.2 16 16 16s16-7.2 16-16V256c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32V48zm64 176v64c0 17.7 14.3 32 32 32v48c0 8.8 7.2 16 16 16s16-7.2 16-16V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V144c0-8.8-7.2-16-16-16s-16 7.2-16 16v48c-17.7 0-32 14.3-32 32zM160 128c-17.7 0-32 14.3-32 32V288c0 17.7 14.3 32 32 32v48c0 8.8 7.2 16 16 16s16-7.2 16-16V320c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48z\"]\n};\nvar faBriefcaseBlank = {\n prefix: 'fas',\n iconName: 'briefcase-blank',\n icon: [512, 512, [], \"e0c8\", \"M176 56V96H336V56c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zM128 96V56c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56V96h64c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [127979], \"f549\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM256 416c0-35.3 28.7-64 64-64s64 28.7 64 64v96H256V416zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V208zM96 320h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V336zM232 176a88 88 0 1 1 176 0 88 88 0 1 1 -176 0zm88-48c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.8V160H48.5C100.2 82.8 188.1 32 288 32c10.8 0 21.5 .6 32 1.8zM352 160V39.1C424.9 55.7 487.2 99.8 527.5 160H352zM29.9 192H96V320H0c0-46 10.8-89.4 29.9-128zM192 320H128V192H448V320H384v32H576v80c0 26.5-21.5 48-48 48H352V352c0-35.3-28.7-64-64-64s-64 28.7-64 64V480H48c-26.5 0-48-21.5-48-48V352H192V320zm288 0V192h66.1c19.2 38.6 29.9 82 29.9 128H480z\"]\n};\nvar faBracketRound = {\n prefix: 'fas',\n iconName: 'bracket-round',\n icon: [192, 512, [\"parenthesis\"], \"28\", \"M154.6 46.2c9.8 14.7 5.8 34.6-8.9 44.4C120.1 107.7 64 167 64 256s56.1 148.3 81.8 165.4c14.7 9.8 18.7 29.7 8.9 44.4s-29.7 18.7-44.4 8.9C71.9 449 0 371.8 0 256S71.9 62.9 110.2 37.4c14.7-9.8 34.6-5.8 44.4 8.9z\"]\n};\nvar faParenthesis = faBracketRound;\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 55.2 21.9 108.1 60.9 147.1l21 21c9 9 14.1 21.2 14.1 33.9v11c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-29.7-11.8-58.2-32.8-79.2l-21-21C463.2 117.8 448 81.2 448 43V32zM576 256c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-55.2-21.9-108.1-60.9-147.1l-21-21c-9-9-14.1-21.2-14.1-33.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 29.7 11.8 58.2 32.8 79.2l21 21c27 27 42.2 63.6 42.2 101.8v11zM229.8 360c-4.7-2.3-10-2.7-15.2-2c-37.8 5.6-75.2 14.3-106.9 22.8C81.3 388 58.3 395.1 42 400.4c-8.2 2.7-14.7 4.9-19.2 6.5c-2.3 .8-4 1.4-5.2 1.8l-1.3 .5C6.8 412.5 0 421.4 0 432s6.8 19.5 16.3 22.7l1.3 .5c1.2 .4 3 1.1 5.2 1.8c4.5 1.6 11 3.8 19.2 6.5c16.3 5.4 39.2 12.5 65.7 19.6C160.3 497.3 228.8 512 288 512h67.3c4.1 0 6.3-5.1 3.6-8.3L256.5 380.8c-7.4-8.9-16.5-15.9-26.7-20.8zM445 512h19 51.3c4.1 0 6.3-5.1 3.6-8.3L416.5 380.8C401.3 362.5 378.8 352 355 352H336 288c-1.1 0-2.3 0-3.4 0c-4.1 0-6.2 5.1-3.5 8.3L383.5 483.2C398.7 501.5 421.2 512 445 512zm-3.9-151.7L543.5 483.2c14.6 17.5 35.9 27.9 58.6 28.7c21.1-1.1 37.9-18.6 37.9-39.9V392c0-22.1-17.9-40-40-40H444.7c-4.1 0-6.3 5.1-3.6 8.3z\"]\n};\nvar faHorseSaddle = {\n prefix: 'fas',\n iconName: 'horse-saddle',\n icon: [576, 512, [], \"f8c3\", \"M448 238.1V160h16l9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1V80c0-19.1-8.4-36.3-21.7-48H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H480 448C377.3 0 320 57.3 320 128v32c0 41.8-26.7 77.4-64 90.5v78.6l51.7 14.8c4.1 1.2 8.2 2.1 12.3 2.8V480c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V315.7c19.2-19.2 31.5-45.7 32-75.7h0v-1.9zM224 320V256c-53 0-96-43-96-96V130.6c-21.8 5.5-40.3 19.5-51.7 38.2C33.2 174.5 0 211.4 0 256v56c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9h33.7c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l.3 .1zm64-160V128H224 203.2 160v32c0 35.3 28.7 64 64 64s64-28.7 64-64zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faMugMarshmallows = {\n prefix: 'fas',\n iconName: 'mug-marshmallows',\n icon: [512, 512, [], \"f7b7\", \"M192 32c7.5 0 14.4 2.6 19.8 6.9L175 75.7c-9.6 9.6-15 22.7-15 36.3c0 5.5 .9 10.9 2.6 16H32V64c0-17.7 14.3-32 32-32H192zm5.7 93.7C194 122 192 117.1 192 112s2-10 5.7-13.7l60.7-60.7C262 34 266.9 32 272 32s10 2 13.7 5.7l60.7 60.7c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7L344 128H200l-2.3-2.3zM0 192c0-17.7 14.3-32 32-32H96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V160H352h48c61.9 0 112 50.1 112 112s-50.1 112-112 112H384c0 53-43 96-96 96H96c-53 0-96-43-96-96V192zm384 32v96h16c26.5 0 48-21.5 48-48s-21.5-48-48-48H384z\"]\n};\nvar faFilters = {\n prefix: 'fas',\n iconName: 'filters',\n icon: [640, 512, [], \"e17e\", \"M232 32c-15.9 0-30.2 9.4-36.6 23.9s-3.6 31.5 7.2 43.2L352 261.5V368c0 10.1 4.7 19.6 12.8 25.6l64 48c9.7 7.3 22.7 8.4 33.5 3s17.7-16.5 17.7-28.6V261.5L629.4 99.1c10.7-11.7 13.6-28.6 7.2-43.2S615.9 32 600 32H232zM40 96c-15.9 0-30.2 9.4-36.6 23.9s-3.6 31.5 7.2 43.2L160 325.5V400c0 10.1 4.7 19.6 12.8 25.6l64 48c9.7 7.3 22.7 8.4 33.5 3s17.7-16.5 17.7-28.6V325.5l32-34.8V274L179 120.7c-6.7-7.3-11.7-15.7-14.9-24.7H40z\"]\n};\nvar faBellOn = {\n prefix: 'fas',\n iconName: 'bell-on',\n icon: [640, 512, [128365], \"f8fa\", \"M320 0c-17.7 0-32 14.3-32 32V51.2C215 66 160 130.6 160 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S115.4 416 128 416H512c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C497.3 319.2 480 273.9 480 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7zM0 200c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H24c-13.3 0-24 10.7-24 24zm536-24c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H536zM597.5 21.3c-5.9-11.9-20.3-16.7-32.2-10.7l-64 32c-11.9 5.9-16.7 20.3-10.7 32.2s20.3 16.7 32.2 10.7l64-32c11.9-5.9 16.7-20.3 10.7-32.2zM53.3 53.5l64 32c11.9 5.9 26.3 1.1 32.2-10.7s1.1-26.3-10.7-32.2l-64-32C62.9 4.6 48.5 9.4 42.5 21.3s-1.1 26.3 10.7 32.2z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [320, 512, [8250], \"f105\", \"M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"]\n};\nvar faDialMed = {\n prefix: 'fas',\n iconName: 'dial-med',\n icon: [576, 512, [], \"e15f\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM128 287.2C128 207 187 140.6 264 129l0 158.2c0 13.3 10.7 24 24 24s24-10.7 24-24L312 129c77 11.6 136 78 136 158.2c0 88.4-71.6 160-160 160s-160-71.6-160-160zm384 .8a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 96a32 32 0 1 1 64 0A32 32 0 1 1 64 96zM480 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 480a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm416-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [128014], \"f6f0\", \"M448 238.1V160h16l9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1V80c0-19.1-8.4-36.3-21.7-48H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H480 448C377.3 0 320 57.3 320 128H224 203.2 148.8c-30.7 0-57.6 16.3-72.5 40.8C33.2 174.5 0 211.4 0 256v56c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9h33.7c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8V480c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V315.7c19.2-19.2 31.5-45.7 32-75.7h0v-1.9zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faQ = {\n prefix: 'fas',\n iconName: 'q',\n icon: [448, 512, [113], \"51\", \"M64 256c0 88.4 71.6 160 160 160c28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1C371.9 325.8 384 292.3 384 256c0-88.4-71.6-160-160-160S64 167.6 64 256zM344.9 444.6C310 467 268.5 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32s224 100.3 224 224c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"]\n};\nvar faMonitorWaveform = {\n prefix: 'fas',\n iconName: 'monitor-waveform',\n icon: [576, 512, [\"monitor-heart-rate\"], \"f611\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM80 96H496c8.8 0 16 7.2 16 16V400c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V272 112c0-8.8 7.2-16 16-16zM96 256h96c6.1 0 11.6 3.4 14.3 8.8L224 300.2l49.7-99.4c2.7-5.4 8.3-8.8 14.3-8.8s11.6 3.4 14.3 8.8L329.9 256H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H320c-6.1 0-11.6-3.4-14.3-8.8L288 243.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L182.1 288H96v96H480V128H96V256z\"]\n};\nvar faMonitorHeartRate = faMonitorWaveform;\nvar faLinkSimple = {\n prefix: 'fas',\n iconName: 'link-simple',\n icon: [576, 512, [], \"e1cd\", \"M0 256C0 167.6 71.6 96 160 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-53 0-96 43-96 96s43 96 96 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h64c53 0 96-43 96-96s-43-96-96-96H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h64c88.4 0 160 71.6 160 160zM192 224H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faWhistle = {\n prefix: 'fas',\n iconName: 'whistle',\n icon: [640, 512, [], \"f460\", \"M44.1 188.8C18.5 180.5 0 156.4 0 128C0 92.7 28.7 64 64 64c23.4 0 43.8 12.5 55 31.2C149.2 75.5 185.2 64 224 64c51 0 97.4 19.9 131.8 52.4c1.1 .5 2.2 1.2 3.2 2l62.4 48.3c5.1 4 7.3 10.6 5.6 16.9l-5.7 21.1c-3.2 11.7 1.1 24.2 10.8 31.5c9.6 7.2 22.7 7.9 33 1.7l17.7-10.6c5.7-3.4 12.8-3 18 1.1l128.6 99.6C636.1 333 640 341 640 349.4c0 6.8-2.5 13.4-7.1 18.4l-63.4 69.7c-6.1 6.7-14.7 10.5-23.7 10.5h-2c-5.2 0-10.2-1.2-14.8-3.6L380.7 367c-34.8 49-92 81-156.7 81C118 448 32 362 32 256c0-23.6 4.3-46.3 12.1-67.2zM288 256a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM64 144a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faG = {\n prefix: 'fas',\n iconName: 'g',\n icon: [448, 512, [103], \"47\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H400c25.8 0 49.6 21.4 47.2 50.6C437.8 389.6 341.4 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57c13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"]\n};\nvar faWineGlassCrack = {\n prefix: 'fas',\n iconName: 'wine-glass-crack',\n icon: [320, 512, [\"fragile\"], \"f4bb\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348.4c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0H233.9C222 0 214.3 12.5 219.6 23.2l14.2 28.5c3.5 7.1 1.4 15.7-5.1 20.3l-58.4 40.9c-6 4.2-8.4 12-5.8 18.9l31.1 81c2.1 5.5-1.9 11.4-7.8 11.4c-2.4 0-4.7-1.1-6.3-2.9L92.1 118c-6.4-7.4-4.7-18.7 3.5-24l58.6-37.3c7.6-4.8 9.7-14.9 4.7-22.4L140.7 7.1c-3-4.5-8-7.1-13.3-7.1H64z\"]\n};\nvar faFragile = faWineGlassCrack;\nvar faSlotMachine = {\n prefix: 'fas',\n iconName: 'slot-machine',\n icon: [640, 512, [], \"e3ce\", \"M128 0C92.7 0 64 28.7 64 64H448c0-35.3-28.7-64-64-64H128zM64 96C28.7 96 0 124.7 0 160V352c0 35.3 28.7 64 64 64v32c0 35.3 28.7 64 64 64H416h32 80c53 0 96-43 96-96V211.8c9.8-8.8 16-21.6 16-35.8c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 14.2 6.2 27 16 35.8V416c0 17.7-14.3 32-32 32H448V416c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H64zM56 200c0-13.3 10.7-24 24-24h59.9c23 0 38.5 23.5 29.4 44.6L126.1 321.5c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5L115.6 224H80c-13.3 0-24-10.7-24-24zm168-24h59.9c23 0 38.5 23.5 29.4 44.6L270.1 321.5c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5L259.6 224H224c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 24c0-13.3 10.7-24 24-24h59.9c23 0 38.5 23.5 29.4 44.6L414.1 321.5c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5L403.6 224H368c-13.3 0-24-10.7-24-24z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [512, 512, [], \"f481\", \"M96 352V96c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V293.5c0 17-6.7 33.3-18.7 45.3l-58.5 58.5c-12 12-28.3 18.7-45.3 18.7H160c-35.3 0-64-28.7-64-64zM272 128c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V256h48c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H320V144c0-8.8-7.2-16-16-16H272zm24 336c13.3 0 24 10.7 24 24s-10.7 24-24 24H136C60.9 512 0 451.1 0 376V152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 224c0 48.6 39.4 88 88 88H296z\"]\n};\nvar faCarWash = {\n prefix: 'fas',\n iconName: 'car-wash',\n icon: [448, 512, [], \"f5e6\", \"M64 128c26.5 0 48-16 48-48c0-22.2-23-52-37.2-68.2C69 5.1 59 5.1 53.2 11.8C39 28 16 57.8 16 80c0 26.5 21.5 48 48 48zm160 0c26.5 0 48-16 48-48c0-22.2-23-52-37.2-68.2c-5.8-6.7-15.9-6.7-21.7 0C199 28 176 57.8 176 80c0 26.5 21.5 48 48 48zM432 80c0-22.2-23-52-37.2-68.2c-5.8-6.7-15.9-6.7-21.7 0C359 28 336 57.8 336 80c0 26.5 21.5 48 48 48s48-16 48-48zM153.8 224H294.2c6.8 0 12.8 4.3 15.1 10.6L328.3 288H119.7l19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zM78.5 213.1L50.2 292.4C30.1 300.9 16 320.8 16 344v40 64 32c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V448H352v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448 384 344c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C358.1 181.3 328 160 294.2 160H153.8c-33.8 0-64 21.3-75.3 53.1zM96 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faEscalator = {\n prefix: 'fas',\n iconName: 'escalator',\n icon: [640, 512, [], \"e171\", \"M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM405.9 175.8C417.5 165.6 432.5 160 448 160h96c35.3 0 64 28.7 64 64s-28.7 64-64 64H472L234.1 496.2C222.5 506.4 207.5 512 192 512H96c-35.3 0-64-28.7-64-64s28.7-64 64-64h72L405.9 175.8zM320 192v16.4l-128 112V192c0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nvar faCommentImage = {\n prefix: 'fas',\n iconName: 'comment-image',\n icon: [512, 512, [], \"e148\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm168-16c7.6 0 14.7 3.6 19.2 9.6l96 128c5.5 7.3 6.3 17 2.3 25.1s-12.4 13.3-21.5 13.3H200 120c-9.3 0-17.8-5.4-21.7-13.8s-2.7-18.4 3.3-25.5l40-48c4.6-5.5 11.3-8.6 18.4-8.6s13.9 3.2 18.4 8.6L199 257.3l77.8-103.7c4.5-6 11.6-9.6 19.2-9.6z\"]\n};\nvar faTemperatureHalf = {\n prefix: 'fas',\n iconName: 'temperature-half',\n icon: [320, 512, [127777, \"temperature-2\", \"thermometer-2\", \"thermometer-half\"], \"f2c9\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V208c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature2 = faTemperatureHalf;\nvar faThermometer2 = faTemperatureHalf;\nvar faThermometerHalf = faTemperatureHalf;\nvar faDongSign = {\n prefix: 'fas',\n iconName: 'dong-sign',\n icon: [384, 512, [], \"e169\", \"M288 32c-17.7 0-32 14.3-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v49.1c-18.8-10.9-40.7-17.1-64-17.1c-70.7 0-128 57.3-128 128s57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32V288 128c17.7 0 32-14.3 32-32s-14.3-32-32-32c0-17.7-14.3-32-32-32zM128 288a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faDonut = {\n prefix: 'fas',\n iconName: 'donut',\n icon: [512, 512, [127849, \"doughnut\"], \"e406\", \"M0 208C0 119.6 114.6 48 256 48s256 71.6 256 160v31c-.7 10-4.3 19.5-10.5 27.4c-6.2 8-14.7 14-24.4 17.1l-.3 .1-.3 .1c-13.1 4.9-24.4 13.8-32 25.5c-9.4 13-22 23.3-36.5 30.1c-14.7 6.8-30.8 9.6-46.9 8.3l-.6 0-.6 0c-17.7-.2-35.3 3.3-51.7 10.1l0 0-.1 0c-16.4 7-34.1 10.5-51.9 10.3l0 0-.3 0c-17.8 .2-35.5-3.3-51.9-10.3l-.1 0c-16.4-6.8-34-10.2-51.7-10.1l-.6 0-.6 0c-16.1 1.3-32.3-1.6-46.9-8.4c-14.6-6.8-27.1-17.1-36.5-30.2c-7.7-11.7-18.9-20.6-32-25.5l-.4-.1-.4-.1c-9.7-3.1-18.2-9.1-24.4-17.1C4.3 258.4 .7 248.9 0 238.9V208zm0 92.7c7.4 5.7 15.7 10.1 24.6 13c6.7 2.6 12.4 7.2 16.3 13.2l.2 .3 .2 .3c12.6 17.6 29.6 31.7 49.3 40.8c19.5 9 41 12.9 62.4 11.3c13.2-.1 26.3 2.5 38.5 7.6c20.4 8.6 42.4 13 64.5 12.8c22.1 .2 44.1-4.2 64.5-12.8c12.2-5.1 25.3-7.6 38.5-7.6c21.4 1.7 42.9-2.2 62.3-11.2c19.7-9.1 36.7-23.1 49.3-40.7l.2-.3 .2-.3c3.9-6 9.6-10.6 16.3-13.2c8.9-2.9 17.3-7.4 24.6-13V304c0 88.4-114.6 160-256 160S0 392.4 0 304v-3.3zM320 192c0-17.7-28.7-32-64-32s-64 14.3-64 32s28.7 32 64 32s64-14.3 64-32zM283.3 84.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6zm-112 38.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32zm224 9.4c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l32 32c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-32-32zM64 192c-8.8 0-16 7.2-16 16s7.2 16 16 16H96c8.8 0 16-7.2 16-16s-7.2-16-16-16H64zm331.3 36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l32 32c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-32-32zm-240 16c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l32 32c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-32-32zm176 38.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32z\"]\n};\nvar faDoughnut = faDonut;\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M64 144c0-26.5 21.5-48 48-48s48 21.5 48 48V256H64V144zM0 144V368c0 61.9 50.1 112 112 112s112-50.1 112-112V189.6c1.8 19.1 8.2 38 19.8 54.8L372.3 431.7c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 113.3C391.8 61.5 321.9 49 271.3 85.2c-28 20-44.3 50.8-47.3 83V144c0-61.9-50.1-112-112-112S0 82.1 0 144zm296.6 64.2c-16-23.3-10-55.3 11.9-71c21.2-15.1 50.5-10.3 66 12.2l67 97.6L361.6 303l-65-94.8zM491 407.7c-.8 .6-1.6 1.1-2.4 1.6l4-2.8c-.5 .4-1 .8-1.6 1.2z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [\"poo-bolt\"], \"f75a\", \"M236.9 .2c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1c0 21.7-8.5 37.2-21.9 47.6c-13.8 10.8-34 17-57.8 17H128c-35.3 0-64 28.7-64 64c0 12.2 3.4 23.5 9.3 33.2C31.7 216.2 0 252.4 0 296c0 41 28 75.4 65.8 85.2c-5.3-18.5 1-38.5 16.2-50.7l160-128c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L285.7 320H304c20.4 0 38.5 12.9 45.3 32.1c3.7 10.6 3.5 21.8 0 31.9H360c48.6 0 88-39.4 88-88c0-43.6-31.7-79.8-73.3-86.8c5.9-9.7 9.3-21.1 9.3-33.2c0-35.3-28.7-64-64-64h-1.4c.9-5.4 1.4-10.9 1.4-16.6c0-48.7-36.1-88.9-83.1-95.2zm45.1 227.4c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L129.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H233.9l52.4-104.8c3.4-6.7 1.6-14.9-4.3-19.6z\"]\n};\nvar faPooBolt = faPooStorm;\nvar faTally1 = {\n prefix: 'fas',\n iconName: 'tally-1',\n icon: [640, 512, [], \"e294\", \"M128 32c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faFaceFrownOpen = {\n prefix: 'fas',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-122 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"]\n};\nvar faFrownOpen = faFaceFrownOpen;\nvar faSquareDashed = {\n prefix: 'fas',\n iconName: 'square-dashed',\n icon: [448, 512, [], \"e269\", \"M96 32h32V96H96c-17.7 0-32 14.3-32 32v32H0V128C0 75 43 32 96 32zM0 192H64V320H0V192zm384 0h64V320H384V192zm64-32H384V128c0-17.7-14.3-32-32-32H320V32h32c53 0 96 43 96 96v32zm0 192v32c0 53-43 96-96 96H320V416h32c17.7 0 32-14.3 32-32V352h64zM64 352v32c0 17.7 14.3 32 32 32h32v64H96c-53 0-96-43-96-96V352H64zm96 128V416H288v64H160zm0-384V32H288V96H160z\"]\n};\nvar faSquareJ = {\n prefix: 'fas',\n iconName: 'square-j',\n icon: [448, 512, [], \"e273\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM304 152V288c0 53-43 96-96 96s-96-43-96-96v-8c0-13.3 10.7-24 24-24s24 10.7 24 24v8c0 26.5 21.5 48 48 48s48-21.5 48-48V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [9757], \"f0a6\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32V240H32V32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192zm-64-64c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H162.3c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363V336c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [576, 512, [], \"f0d6\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM288 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faArrowUpBigSmall = {\n prefix: 'fas',\n iconName: 'arrow-up-big-small',\n icon: [576, 512, [\"sort-size-up\"], \"f88e\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM320 368c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V368zM368 32H496c26.5 0 48 21.5 48 48V208c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48z\"]\n};\nvar faSortSizeUp = faArrowUpBigSmall;\nvar faBarcodeRead = {\n prefix: 'fas',\n iconName: 'barcode-read',\n icon: [576, 512, [], \"f464\", \"M56 48c-4.4 0-8 3.6-8 8v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V56C0 25.1 25.1 0 56 0h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H56zm96 80h16c13.3 0 24 10.7 24 24V360c0 13.3-10.7 24-24 24H152c-13.3 0-24-10.7-24-24V152c0-13.3 10.7-24 24-24zm160 0h16c13.3 0 24 10.7 24 24V360c0 13.3-10.7 24-24 24H312c-13.3 0-24-10.7-24-24V152c0-13.3 10.7-24 24-24zm72 24c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24V360c0 13.3-10.7 24-24 24H408c-13.3 0-24-10.7-24-24V152zM240 128c8.8 0 16 7.2 16 16V368c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM528 56c0-4.4-3.6-8-8-8H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h80c30.9 0 56 25.1 56 56v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V56zM56 464h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-30.9 0-56-25.1-56-56V376c0-13.3 10.7-24 24-24s24 10.7 24 24v80c0 4.4 3.6 8 8 8zm472-8V376c0-13.3 10.7-24 24-24s24 10.7 24 24v80c0 30.9-25.1 56-56 56H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h80c4.4 0 8-3.6 8-8z\"]\n};\nvar faBaguette = {\n prefix: 'fas',\n iconName: 'baguette',\n icon: [640, 512, [129366], \"e3d8\", \"M583 234.5c58.8-39.2 74.7-118.7 35.5-177.5S499.8-17.7 441 21.5L356.5 77.8l70.8 70.8c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L329.3 96l-88 58.7 74 74c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-78.6-78.6-88 58.7 77.2 77.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L98.9 249.6 57 277.5C-1.8 316.7-17.7 396.2 21.5 455s118.7 74.7 177.5 35.5l384-256z\"]\n};\nvar faBowlSoftServe = {\n prefix: 'fas',\n iconName: 'bowl-soft-serve',\n icon: [512, 512, [], \"e46b\", \"M257.2 9.9c2.5-6 8.3-9.9 14.8-9.9h36.6C367.9 0 416 48.1 416 107.4c0 19.9-6.9 38.1-18.3 52.6H416c35.3 0 64 28.7 64 64s-28.7 64-64 64H96c-35.3 0-64-28.7-64-64s28.7-64 64-64h8.6c-5.4-9.4-8.6-20.3-8.6-32c0-35.3 28.7-64 64-64h94.1C264 64 272 56 272 46.1c0-4.8-1.9-9.3-5.3-12.7l-6.1-6.1c-4.6-4.6-5.9-11.5-3.5-17.4zM64 320H448c8.8 0 16 7.2 16 16v8c0 57.4-46.6 104-104 104H329.9l20.4 40.8c1.1 2.3 1.7 4.7 1.7 7.2c0 2.9-.8 5.8-2.4 8.4c-2.9 4.7-8.1 7.6-13.6 7.6H176c-5.5 0-10.7-2.9-13.6-7.6c-1.6-2.6-2.4-5.5-2.4-8.4c0-2.4 .6-4.9 1.7-7.2L182.1 448H152C94.6 448 48 401.4 48 344v-8c0-8.8 7.2-16 16-16z\"]\n};\nvar faFaceHoldingBackTears = {\n prefix: 'fas',\n iconName: 'face-holding-back-tears',\n icon: [512, 512, [129401], \"e482\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM344.5 367.9c-6.7-5.8-16.8-5.1-22.6 1.6C309 384.4 287.1 400 256 400s-53-15.6-65.9-30.5c-5.8-6.7-15.9-7.4-22.6-1.6s-7.4 15.9-1.6 22.6C183.1 410.3 213.2 432 256 432s72.9-21.7 90.1-41.5c5.8-6.7 5.1-16.8-1.6-22.6zM240 272V240c0-41.5-31.5-75.6-72-79.6c10-10.8 17.6-24.1 21.9-38.8l1.5-5.2c2.4-8.5-2.5-17.4-11-19.8s-17.4 2.5-19.8 11l-1.5 5.2c-7 24.7-28.1 42.7-53.6 45.9L94 160.1c-8.8 1.1-15 9.1-13.9 17.9c1 8.1 7.9 14 15.9 14c-10 13.4-16 30-16 48s6 34.6 16 48v32c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.7c9.8 4.3 20.6 6.7 32 6.7c18 0 34.6-6 48-16c0 8.8 7.2 16 16 16s16-7.2 16-16V288 272zm144 41.3V320c0 8.8 7.2 16 16 16s16-7.2 16-16V288c10-13.4 16-30 16-48s-6-34.6-16-48c8 0 14.9-5.9 15.9-14c1.1-8.8-5.1-16.8-13.9-17.9l-11.5-1.4c-25.5-3.2-46.6-21.3-53.6-45.9l-1.5-5.2c-2.4-8.5-11.3-13.4-19.8-11s-13.4 11.3-11 19.8l1.5 5.2c4.2 14.8 11.8 28 21.9 38.8c-40.4 4-72 38.1-72 79.6c0 44.2 35.8 80 80 80c11.4 0 22.2-2.4 32-6.7zM128 232c17.7 0 32-14.3 32-32c0-5.8-1.5-11.2-4.2-15.8c1.4-.1 2.8-.2 4.2-.2c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56c0-5.7 .8-11.2 2.4-16.4c5.7 5.2 13.3 8.4 21.6 8.4zm224-32c0-5.8-1.5-11.2-4.2-15.8c1.4-.1 2.8-.2 4.2-.2c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56c0-5.7 .8-11.2 2.4-16.4c5.7 5.2 13.3 8.4 21.6 8.4c17.7 0 32-14.3 32-32z\"]\n};\nvar faSquareUp = {\n prefix: 'fas',\n iconName: 'square-up',\n icon: [448, 512, [11014, \"arrow-alt-square-up\"], \"f353\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm39.1 185.4l107.1-99.9c3.8-3.5 8.7-5.5 13.8-5.5s10.1 2 13.8 5.5l107.1 99.9c4.5 4.2 7.1 10.1 7.1 16.3c0 12.3-10 22.3-22.3 22.3H272v96c0 17.7-14.3 32-32 32H208c-17.7 0-32-14.3-32-32V256H118.3C106 256 96 246 96 233.7c0-6.2 2.6-12.1 7.1-16.3z\"]\n};\nvar faArrowAltSquareUp = faSquareUp;\nvar faTrainSubwayTunnel = {\n prefix: 'fas',\n iconName: 'train-subway-tunnel',\n icon: [512, 512, [\"subway-tunnel\"], \"e2a3\", \"M256 0C114.6 0 0 114.6 0 256V448c0 35.3 28.7 64 64 64h41.4l64.3-64.3C137.3 444.5 112 417.2 112 384V192c0-35.3 28.7-64 64-64H336c35.3 0 64 28.7 64 64V384c0 33.2-25.3 60.5-57.7 63.7L406.6 512H448c35.3 0 64-28.7 64-64V256C512 114.6 397.4 0 256 0zM361.4 512l-64-64H214.6l-64 64H361.4zM184 192c-13.3 0-24 10.7-24 24v8 64 8c0 13.3 10.7 24 24 24h8 16 8c13.3 0 24-10.7 24-24v-8V224v-8c0-13.3-10.7-24-24-24h-8H192h-8zm88 24v8 64 8c0 13.3 10.7 24 24 24h8 16 8c13.3 0 24-10.7 24-24v-8V224v-8c0-13.3-10.7-24-24-24h-8H304h-8c-13.3 0-24 10.7-24 24zM184 400a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm168-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faSubwayTunnel = faTrainSubwayTunnel;\nvar faSquareExclamation = {\n prefix: 'fas',\n iconName: 'square-exclamation',\n icon: [448, 512, [\"exclamation-square\"], \"f321\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm160 96c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM192 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faExclamationSquare = faSquareExclamation;\nvar faSemicolon = {\n prefix: 'fas',\n iconName: 'semicolon',\n icon: [192, 512, [], \"3b\", \"M96 64a64 64 0 1 1 0 128A64 64 0 1 1 96 64zm54.8 319L83.7 492.8C76.4 504.7 63.5 512 49.5 512C24 512 5 488.5 10.4 463.6L37.5 337c6.1-28.6 31.4-49 60.6-49c34.2 0 61.9 28.1 61.9 62.3c0 11.5-3.2 22.9-9.2 32.7z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z\"]\n};\nvar faFanTable = {\n prefix: 'fas',\n iconName: 'fan-table',\n icon: [448, 512, [], \"e004\", \"M256 413.6C355.7 398.2 432 312 432 208C432 93.1 338.9 0 224 0S16 93.1 16 208c0 104 76.3 190.2 176 205.6V448H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H224 352c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V413.6zM184.9 68.5L224.3 166c18.5-25.3 50-39.8 83.3-35.1c48.1 6.8 81.7 51.3 74.9 99.4c-1.2 8.8-9.3 14.8-18.1 13.6L260.2 229.2c12.6 28.7 9.5 63.2-11.2 89.7c-29.9 38.3-85.2 45.1-123.5 15.2c-7-5.4-8.2-15.5-2.8-22.5l64.8-82.9c-31.2-3.4-59.5-23.4-72.1-54.5C97.2 129.1 119 77.9 164.1 59.7c8.2-3.3 17.5 .6 20.8 8.8zM224 224a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M448 64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32z\"]\n};\nvar faBatteryLow = {\n prefix: 'fas',\n iconName: 'battery-low',\n icon: [576, 512, [\"battery-1\"], \"e0b1\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm80 96H96V320h64V192z\"]\n};\nvar faBattery1 = faBatteryLow;\nvar faCreditCardFront = {\n prefix: 'fas',\n iconName: 'credit-card-front',\n icon: [576, 512, [], \"f38a\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM112 288c-8.8 0-16 7.2-16 16s7.2 16 16 16H464c8.8 0 16-7.2 16-16s-7.2-16-16-16H112zM96 368c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zm128 0c0 8.8 7.2 16 16 16H368c8.8 0 16-7.2 16-16s-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zM408 96c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24H408z\"]\n};\nvar faBrainArrowCurvedRight = {\n prefix: 'fas',\n iconName: 'brain-arrow-curved-right',\n icon: [640, 512, [\"mind-share\"], \"f677\", \"M240 56c0-30.9-25.1-56-56-56c-28.9 0-52.7 21.9-55.7 49.9C100.6 56.9 80 82.1 80 112c0 6 .8 11.9 2.4 17.4C53.6 135.7 32 161.3 32 192c0 15 5.1 28.8 13.8 39.7C18.7 244.5 0 272.1 0 304c0 34.2 21.4 63.4 51.6 74.8C49.3 385.4 48 392.6 48 400c0 35.3 28.7 64 64 64c5.6 0 11.1-.7 16.3-2.1c2.9 28.2 26.8 50.1 55.7 50.1c30.9 0 56-25.1 56-56V56zm32 0V456c0 30.9 25.1 56 56 56c3.2 0 6.4-.3 9.5-.8C321.3 491 304 459.3 304 416c0-79.5 64.5-144 144-144h32V256c0-4.9 .8-9.8 2.2-14.3c-4.9-3.9-10.2-7.3-16-10C474.9 220.8 480 207 480 192c0-30.7-21.6-56.3-50.4-62.6c1.6-5.5 2.4-11.4 2.4-17.4c0-29.9-20.6-55.1-48.3-62.1C380.6 21.9 356.9 0 328 0c-30.9 0-56 25.1-56 56zM539.3 244.7c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8v48H448c-61.9 0-112 50.1-112 112c0 54.3 34.6 85.6 45 93.8c1.9 1.5 4.3 2.2 6.7 2.2c6.8 0 12.3-5.5 12.3-12.3V464c0-35.3 28.7-64 64-64h48v48c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l96-96c6.2-6.2 6.2-16.4 0-22.6l-96-96z\"]\n};\nvar faMindShare = faBrainArrowCurvedRight;\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [576, 512, [127958], \"f5ca\", \"M346.3 271.8l-60.1-21.9L214 448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H282.1l64.1-176.2zm121.1-.2l-3.3 9.1 67.7 24.6c18.1 6.6 38-4.2 39.6-23.4c6.5-78.5-23.9-155.5-80.8-208.5c2 8 3.2 16.3 3.4 24.8l.2 6c1.8 57-7.3 113.8-26.8 167.4zM462 99.1c-1.1-34.4-22.5-64.8-54.4-77.4c-.9-.4-1.9-.7-2.8-1.1c-33-11.7-69.8-2.4-93.1 23.8l-4 4.5C272.4 88.3 245 134.2 226.8 184l-3.3 9.1L434 269.7l3.3-9.1c18.1-49.8 26.6-102.5 24.9-155.5l-.2-6zM107.2 112.9c-11.1 15.7-2.8 36.8 15.3 43.4l71 25.8 3.3-9.1c19.5-53.6 49.1-103 87.1-145.5l4-4.5c6.2-6.9 13.1-13 20.5-18.2c-79.6 2.5-154.7 42.2-201.2 108z\"]\n};\nvar faHelmetUn = {\n prefix: 'fas',\n iconName: 'helmet-un',\n icon: [512, 512, [], \"e503\", \"M479.5 224C471.2 98.9 367.2 0 240 0C107.5 0 0 107.5 0 240v56.3C0 344.8 39.2 384 87.7 384H200h14.9L343.5 505.4c4.5 4.2 10.4 6.6 16.5 6.6h96c13.3 0 24-10.7 24-24s-10.7-24-24-24H369.5l-1.5-1.5V288h80 32c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.5zM320 417.2l-78-73.7L274.4 288H320V417.2zM285.3 103.1l34.7 52V112c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V208c0 8.8-7.2 16-16 16s-16-7.2-16-16V112c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112v64c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faLocationSmile = {\n prefix: 'fas',\n iconName: 'location-smile',\n icon: [384, 512, [\"map-marker-smile\"], \"f60d\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM128 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-95.4 84.9c6.2 9.4 29.1 31.1 63.4 31.1s57.1-21.7 63.4-31.1c6.1-9.2 18.5-11.7 27.7-5.5s11.7 18.5 5.5 27.7C277.1 284.4 243.1 316 192 316s-85.1-31.6-96.6-48.9c-6.1-9.2-3.6-21.6 5.5-27.7s21.6-3.6 27.7 5.5z\"]\n};\nvar faMapMarkerSmile = faLocationSmile;\nvar faArrowLeftToLine = {\n prefix: 'fas',\n iconName: 'arrow-left-to-line',\n icon: [448, 512, [8676, \"arrow-to-left\"], \"f33e\", \"M0 96C0 78.3 14.3 64 32 64s32 14.3 32 32V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96zM137.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L237.3 224 416 224c17.7 0 32 14.3 32 32s-14.3 32-32 32l-178.7 0 73.4 73.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-128-128z\"]\n};\nvar faArrowToLeft = faArrowLeftToLine;\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [512, 512, [], \"f140\", \"M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faSushi = {\n prefix: 'fas',\n iconName: 'sushi',\n icon: [576, 512, [127843, \"nigiri\"], \"e48a\", \"M479.7 320l-73.8-24.5L506.3 125.6c24.8 26.7 42.1 60.7 48.5 98.8l12.5 75.2c4 23.8-18.8 43.2-41.7 35.6l-7-2.3L479.7 320h0zM393.5 66.1c32.9 4.8 63.2 18 88.7 37.5L374.8 285.2 323.1 268c-14.6-4.9-30-7-45.2-6.4L393.5 66.1zm-36-2.1L235.6 270.4 96.1 318.7 246.6 64H357.5zM21.3 224.4C36.6 132.2 116.1 64.6 209.5 64L49.4 334.8c-22.4 6.6-44.5-12.5-40.6-36l12.4-74.4zM32 384V369c8.5 .7 17.5-.3 26.4-3.4l193-66.9c20-6.9 41.6-7.1 61.7-.4l205.5 68.2c8.6 2.9 17.2 3.8 25.5 3.1V384c0 35.3-28.7 64-64 64c-19.1 0-36.3-8.4-48-21.7c-11.7 13.3-28.9 21.7-48 21.7s-36.3-8.4-48-21.7c-11.7 13.3-28.9 21.7-48 21.7s-36.3-8.4-48-21.7c-11.7 13.3-28.9 21.7-48 21.7s-36.3-8.4-48-21.7C132.3 439.6 115.1 448 96 448c-35.3 0-64-28.7-64-64z\"]\n};\nvar faNigiri = faSushi;\nvar faMessageCaptions = {\n prefix: 'fas',\n iconName: 'message-captions',\n icon: [512, 512, [\"comment-alt-captions\"], \"e1de\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zM120 192c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm224 0c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H344zM120 272c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H392c13.3 0 24-10.7 24-24s-10.7-24-24-24H248z\"]\n};\nvar faCommentAltCaptions = faMessageCaptions;\nvar faTrashList = {\n prefix: 'fas',\n iconName: 'trash-list',\n icon: [640, 512, [], \"e2b1\", \"M147.8 0H268.2c12.1 0 23.2 6.8 28.6 17.7L304 32h80c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h80l7.2-14.3C124.6 6.8 135.7 0 147.8 0zM32 128H384L362.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zm448 0H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H480c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H480c-17.7 0-32-14.3-32-32s14.3-32 32-32zM448 416c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H480c-17.7 0-32-14.3-32-32z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [129363], \"f7e5\", \"M439.2 1.2c11.2-3.2 23.2-.1 31.4 8.1L518 56.7l-26.5 7.9c-58 16.6-98.1 39.6-129.6 67.4c-31.2 27.5-53.2 59.1-75.1 90.9l-2.3 3.3C241.6 288.7 195 356.6 72.8 417.7L37.9 435.2 9.4 406.6c-7.3-7.3-10.6-17.6-9-27.8s8.1-18.9 17.3-23.5C136.1 296.2 180.9 231 223.3 169.3l2.3-3.4c21.8-31.8 44.9-64.9 77.7-93.9c33.4-29.5 75.8-53.6 135.9-70.8zM61.8 459l25.4-12.7c129.5-64.7 179.9-138.1 223.8-202l2.2-3.3c22.1-32.1 42.1-60.5 69.9-85.1c27.5-24.3 63.4-45.2 117.3-60.6l0 0 .2-.1 43.1-12.9 23 23c8 8 11.2 19.7 8.3 30.7s-11.3 19.6-22.2 22.7c-51.9 14.8-85.6 34.7-111.1 57.2c-26.1 23-45.1 49.9-67.3 82.1l-2.2 3.2C327.8 365.9 275.5 442 142.3 508.6c-12.3 6.2-27.2 3.7-36.9-6L61.8 459z\"]\n};\nvar faOption = {\n prefix: 'fas',\n iconName: 'option',\n icon: [640, 512, [], \"e318\", \"M448 448c-9.7 0-18.9-4.4-25-12L176.6 128H32C14.3 128 0 113.7 0 96S14.3 64 32 64H192c9.7 0 18.9 4.4 25 12L463.4 384H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H448zm0-320c-17.7 0-32-14.3-32-32s14.3-32 32-32H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H448z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32V272H32V480zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-64 64c17.7 0 32-14.3 32-32V304c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6c13.2 0 25.4 4 35.6 10.8c8.7-24.9 32.5-42.8 60.4-42.8c11.7 0 22.6 3.1 32 8.6V160C384 71.6 312.4 0 224 0H162.3C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149v27c0 35.3 28.7 64 64 64h88c22.1 0 40-17.9 40-40s-17.9-40-40-40H96c-8.8 0-16-7.2-16-16s7.2-16 16-16h56c39.8 0 72 32.2 72 72z\"]\n};\nvar faArrowUpFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-up-from-bracket',\n icon: [448, 512, [], \"e09a\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3V320c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 53 43 96 96 96H352c53 0 96-43 96-96V352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faTrashPlus = {\n prefix: 'fas',\n iconName: 'trash-plus',\n icon: [448, 512, [], \"e2b2\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zM200 408c0 13.3 10.7 24 24 24s24-10.7 24-24V344h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V232c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H136c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faObjectsAlignTop = {\n prefix: 'fas',\n iconName: 'objects-align-top',\n icon: [512, 512, [], \"e3c0\", \"M24 0H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H24C10.7 48 0 37.3 0 24S10.7 0 24 0zM64 176c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V176zm224 0c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48V336c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48V176z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z\"]\n};\nvar faFolderBlank = faFolder;\nvar faFaceAnxiousSweat = {\n prefix: 'fas',\n iconName: 'face-anxious-sweat',\n icon: [576, 512, [], \"e36a\", \"M288 512c141.4 0 256-114.6 256-256S429.4 0 288 0S32 114.6 32 256c0 1.1 0 2.2 0 3.3c16.3-7.1 36.4-2.8 48 12.8c7 9.2 18.1 24.6 27.7 40.7c4.8 8.1 9.6 17 13.2 25.7c3.4 8 7.1 19 7.1 30.5c0 24.5-11.1 46-28.4 60.3C146.4 480.2 213.5 512 288 512zM79.5 404.5C89.6 395.9 96 383.2 96 369c0-20-28.4-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0c-1.7 2.3-3.8 5-5.9 8.1C21.4 319.1 0 351.7 0 369c0 26 21.5 47 48 47c12 0 23-4.3 31.5-11.5zM208 400c0-44.2 35.8-80 80-80s80 35.8 80 80c0 8.8-7.2 16-16 16H224c-8.8 0-16-7.2-16-16zM367.6 240a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-128 32a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM227.3 171.3l-7.4 7.4c-23.6 23.6-53.9 39.2-86.8 44.7l-2.5 .4c-8.7 1.5-17-4.4-18.4-13.2s4.4-17 13.2-18.4l2.5-.4c26.3-4.4 50.6-16.9 69.5-35.7l7.4-7.4c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm121.4-22.6c6.2-6.2 16.4-6.2 22.6 0l7.4 7.4c18.9 18.9 43.2 31.4 69.5 35.7l2.5 .4c8.7 1.5 14.6 9.7 13.2 18.4s-9.7 14.6-18.4 13.2l-2.5-.4c-32.9-5.5-63.3-21.1-86.8-44.7l-7.4-7.4c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faCreditCardBlank = {\n prefix: 'fas',\n iconName: 'credit-card-blank',\n icon: [576, 512, [], \"f389\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 368c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm128 0c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faFileWaveform = {\n prefix: 'fas',\n iconName: 'file-waveform',\n icon: [448, 512, [\"file-medical-alt\"], \"f478\", \"M96 0C60.7 0 32 28.7 32 64V288H144c6.1 0 11.6 3.4 14.3 8.8L176 332.2l49.7-99.4c2.7-5.4 8.3-8.8 14.3-8.8s11.6 3.4 14.3 8.8L281.9 288H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-6.1 0-11.6-3.4-14.3-8.8L240 275.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L134.1 320H32V448c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V160H288c-17.7 0-32-14.3-32-32V0H96zM288 0V128H416L288 0z\"]\n};\nvar faFileMedicalAlt = faFileWaveform;\nvar faMicrochipAi = {\n prefix: 'fas',\n iconName: 'microchip-ai',\n icon: [512, 512, [], \"e1ec\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64c-35.3 0-64 28.7-64 64H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64c0 35.3 28.7 64 64 64v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448c35.3 0 64-28.7 64-64h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V280h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V176h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448c0-35.3-28.7-64-64-64V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H280V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H176V24zm32 152c6.4 0 12.1 3.8 14.7 9.6l42 96 14 32c3.5 8.1-.1 17.5-8.2 21.1s-17.5-.2-21.1-8.2L239.5 304H176.5l-9.8 22.4c-3.5 8.1-13 11.8-21.1 8.2s-11.8-13-8.2-21.1l14-32 42-96c2.5-5.8 8.3-9.6 14.7-9.6zm17.5 96L208 231.9 190.5 272h35.1zM336 176c8.8 0 16 7.2 16 16V320c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16z\"]\n};\nvar faMug = {\n prefix: 'fas',\n iconName: 'mug',\n icon: [576, 512, [], \"f874\", \"M64 64C46.3 64 32 78.3 32 96V352c0 53 43 96 96 96H320c53 0 96-43 96-96V320h32c70.7 0 128-57.3 128-128s-57.3-128-128-128H384 64zm352 64h32c35.3 0 64 28.7 64 64s-28.7 64-64 64H416V128z\"]\n};\nvar faPlaneUpSlash = {\n prefix: 'fas',\n iconName: 'plane-up-slash',\n icon: [640, 512, [], \"e22e\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L482.4 352.8 554.9 377c10.4 3.5 21.1-4.3 21.1-15.2V305.1c0-10.7-5.3-20.7-14.2-26.6L384 160l0-66.3C384 59.5 356 0 320 0c-35 0-64 59.5-64 93.7V160l-10.6 7.1L38.8 5.1zm122.5 218L78.2 278.5C69.3 284.4 64 294.4 64 305.1v56.7c0 10.9 10.7 18.6 21.1 15.2L256 320v80l-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L320 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c7.8 0 14-6.3 14-14V455.3c0-2.8-.7-5.6-2.1-8L161.3 223.1z\"]\n};\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [512, 512, [], \"f7b9\", \"M216 186.7c-23.9 13.8-40 39.7-40 69.3L32 256C14.3 256-.2 241.6 2 224.1C10.7 154 47.8 92.7 101.3 52c14.1-10.7 33.8-5.3 42.7 10l72 124.7zM256 336c14.6 0 28.2-3.9 40-10.7l72 124.8c8.8 15.3 3.7 35.1-12.6 41.9c-30.6 12.9-64.2 20-99.4 20s-68.9-7.1-99.4-20c-16.3-6.9-21.4-26.6-12.6-41.9l72-124.8c11.8 6.8 25.4 10.7 40 10.7zm224-80l-144 0c0-29.6-16.1-55.5-40-69.3L368 62c8.8-15.3 28.6-20.7 42.7-10c53.6 40.7 90.6 102 99.4 172.1c2.2 17.5-12.4 31.9-30 31.9zM256 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faPenCircle = {\n prefix: 'fas',\n iconName: 'pen-circle',\n icon: [512, 512, [], \"e20e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM357.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM151.9 289L257.1 183.8l71 71L222.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faBagSeedling = {\n prefix: 'fas',\n iconName: 'bag-seedling',\n icon: [512, 512, [], \"e5f2\", \"M64 64L38.6 38.6c-4.2-4.2-6.6-10-6.6-16C32 10.1 42.1 0 54.6 0H457.4C469.9 0 480 10.1 480 22.6c0 6-2.4 11.8-6.6 16L448 64H64zM56 96H456l10.6 42.5c8.9 35.5 13.4 72 13.4 108.7v17.7c0 36.6-4.5 73.1-13.4 108.7L456 416H56L45.4 373.5C36.5 338 32 301.5 32 264.8V247.2c0-36.6 4.5-73.1 13.4-108.7L56 96zm8 352H448l25.4 25.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H54.6C42.1 512 32 501.9 32 489.4c0-6 2.4-11.8 6.6-16L64 448zm80-288c-8.8 0-16 7.2-16 16c0 59.2 45.9 107.6 104 111.7V328c0 13.3 10.7 24 24 24s24-10.7 24-24V287.7c58.1-4.1 104-52.6 104-111.7c0-8.8-7.2-16-16-16h-2c-47.3 0-88.4 26-110 64.5C234.4 186 193.3 160 146 160h-2z\"]\n};\nvar faChartSimple = {\n prefix: 'fas',\n iconName: 'chart-simple',\n icon: [448, 512, [], \"e473\", \"M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faCrutches = {\n prefix: 'fas',\n iconName: 'crutches',\n icon: [640, 512, [], \"f7f8\", \"M470.6 9.4l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM294.6 188.2L404.1 78.6l45.3 45.3L397.3 176 464 242.7l52.1-52.1 45.3 45.3-74.6 74.6-.1 .1-.1 .1-34.7 34.7c-12.9 12.9-29.2 21.9-47.1 25.8L297.1 395.2c-5.9 1.3-11.4 4.3-15.7 8.6l-98.8 98.8c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l98.8-98.8c4.3-4.3 7.3-9.7 8.6-15.7l23.9-107.6c4-17.8 12.9-34.1 25.8-47.1zm45.3 45.3c-4.3 4.3-7.3 9.7-8.6 15.7l-17 76.7 76.7-17c5.9-1.3 11.4-4.3 15.7-8.6L418.7 288 352 221.3l-12.2 12.2zM169.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L213.3 56l84.1 84.1-25.4 25.4c-6.7 6.7-12.6 14.1-17.6 22L168 101.3 101.3 168 223.7 290.4l-10.1 45.5-17 17c-2.9-2.3-5.7-4.8-8.4-7.5L56 213.3l-1.4 1.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160zM411.7 402.5c9.3-2.1 18.3-5.2 26.9-9.2l64.1 64.1c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-90.2-90.2 44.5-9.9z\"]\n};\nvar faCircleParking = {\n prefix: 'fas',\n iconName: 'circle-parking',\n icon: [512, 512, [\"parking-circle\"], \"f615\", \"M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm232 0h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H232v64zm48 64H232v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 168c0-22.1 17.9-40 40-40h72c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nvar faParkingCircle = faCircleParking;\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [512, 512, [9894], \"f229\", \"M376 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L370.3 96.4 345 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l25.4 25.4L307.8 159c-28.4-19.5-62.7-31-99.8-31c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l28.6-28.6L407 201c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-25.4-25.4 22.1-22.1L471 153c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H376zm88 48h0v0l0 0zM96 304a112 112 0 1 1 224 0A112 112 0 1 1 96 304z\"]\n};\nvar faLeafOak = {\n prefix: 'fas',\n iconName: 'leaf-oak',\n icon: [512, 512, [], \"f6f7\", \"M429.7 268.6l40.9-10.2c24.4-6.1 41.4-28 41.4-53.1c0-18.3-9.1-35.4-24.4-45.5l-14.3-9.5c-5.6-3.8-8.3-10.6-6.6-17.2l5-20.1c5.1-20.4-.9-42-15.8-56.9s-36.5-20.9-56.9-15.8l-20.1 5c-6.6 1.6-13.4-1-17.2-6.6l-9.5-14.3C342.1 9.1 325 0 306.7 0c-25.1 0-47 17.1-53.1 41.4L243.4 82.3c-1.5 6-9 8.1-13.4 3.7L208 64c-17.7-17.7-46.3-17.7-64 0c-10.1 10.1-14.8 24.3-12.8 38.4l10.7 75.1c.8 5.6-5.4 9.5-10.1 6.4C111 170 83.3 172.7 65.6 190.4l-3.6 3.6c-17.9 17.9-22.3 45.2-11 67.8L66.5 293C75.4 310.7 80 330.3 80 350.2v35.2L229.6 235.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8L39 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l73-73h15.8c19.9 0 39.5 4.6 57.2 13.5l31.1 15.5c22.6 11.3 49.9 6.9 67.8-11l3.6-3.6c17.7-17.7 20.4-45.4 6.6-66.2c-3.1-4.7 .8-10.9 6.4-10.1l75.1 10.7c14.1 2 28.3-2.7 38.4-12.8c17.7-17.7 17.7-46.3 0-64l-22-22c-4.4-4.4-2.3-11.9 3.7-13.4z\"]\n};\nvar faSquareBolt = {\n prefix: 'fas',\n iconName: 'square-bolt',\n icon: [448, 512, [], \"e265\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm234.1 83.6c5.8 4.7 7.6 12.9 4.3 19.6L249.9 240H320c6.8 0 12.9 4.3 15.1 10.7s.2 13.5-5.1 17.8l-160 128c-5.9 4.7-14.2 4.7-20.1-.1s-7.6-12.9-4.3-19.6L198.1 272H128c-6.8 0-12.8-4.3-15.1-10.7s-.2-13.5 5.1-17.8l160-128c5.9-4.7 14.2-4.7 20.1 .1z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [512, 512, [129514], \"f492\", \"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L28.1 342.6C10.1 360.6 0 385 0 410.5V416c0 53 43 96 96 96h5.5c25.5 0 49.9-10.1 67.9-28.1L448 205.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-32-32-96-96-32-32zM205.3 256L352 109.3 402.7 160l-96 96H205.3z\"]\n};\nvar faGauge = {\n prefix: 'fas',\n iconName: 'gauge',\n icon: [512, 512, [\"dashboard\", \"gauge-med\", \"tachometer-alt-average\"], \"f624\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-16 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faDashboard = faGauge;\nvar faGaugeMed = faGauge;\nvar faTachometerAltAverage = faGauge;\nvar faWandMagicSparkles = {\n prefix: 'fas',\n iconName: 'wand-magic-sparkles',\n icon: [576, 512, [\"magic-wand-sparkles\"], \"e2ca\", \"M234.7 42.7L197 56.8c-3 1.1-5 4-5 7.2s2 6.1 5 7.2l37.7 14.1L248.8 123c1.1 3 4 5 7.2 5s6.1-2 7.2-5l14.1-37.7L315 71.2c3-1.1 5-4 5-7.2s-2-6.1-5-7.2L277.3 42.7 263.2 5c-1.1-3-4-5-7.2-5s-6.1 2-7.2 5L234.7 42.7zM46.1 395.4c-18.7 18.7-18.7 49.1 0 67.9l34.6 34.6c18.7 18.7 49.1 18.7 67.9 0L529.9 116.5c18.7-18.7 18.7-49.1 0-67.9L495.3 14.1c-18.7-18.7-49.1-18.7-67.9 0L46.1 395.4zM484.6 82.6l-105 105-23.3-23.3 105-105 23.3 23.3zM7.5 117.2C3 118.9 0 123.2 0 128s3 9.1 7.5 10.8L64 160l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L128 160l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L128 96 106.8 39.5C105.1 35 100.8 32 96 32s-9.1 3-10.8 7.5L64 96 7.5 117.2zm352 256c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 416l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 416l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 352l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 352l-56.5 21.2z\"]\n};\nvar faMagicWandSparkles = faWandMagicSparkles;\nvar faLambda = {\n prefix: 'fas',\n iconName: 'lambda',\n icon: [448, 512, [], \"f66e\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H140.2l16.4 32.7L18.8 434.9c-7.3 16.1-.1 35.1 16 42.3s35.1 .1 42.3-16L193.5 202.6l121 242c10.8 21.7 33 35.4 57.2 35.4H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H371.8L197.5 67.4C186.6 45.7 164.5 32 140.2 32H32z\"]\n};\nvar faE = {\n prefix: 'fas',\n iconName: 'e',\n icon: [320, 512, [101], \"45\", \"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z\"]\n};\nvar faPizza = {\n prefix: 'fas',\n iconName: 'pizza',\n icon: [576, 512, [127829], \"f817\", \"M385.2 419c10.4-8.2 25.5-8.4 34.9 1s9.4 24.7-.8 33.1C375 489.9 318.1 512 256 512C114.6 512 0 397.4 0 256S114.6 0 256 0c62.1 0 119 22.1 163.3 58.8c10.2 8.5 10.1 23.8 .8 33.1s-24.5 9.2-34.9 1C349.7 64.8 304.8 48 256 48C141.1 48 48 141.1 48 256s93.1 208 208 208c48.8 0 93.7-16.8 129.2-45zm-16-49.9c6.2 6.2 6.3 16.5-.5 22.1c-69.1 57.7-172.2 54.1-237.1-10.8c-68.7-68.7-68.7-180.2 0-248.9C196.5 66.6 299.5 63 368.6 120.8c6.8 5.7 6.7 15.9 .5 22.1L267.3 244.7c-6.2 6.2-6.2 16.4 0 22.6L369.1 369.1zM192 264a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm24-88a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 200a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM443.4 156.6c6.7-6.7 17.7-6.2 23 1.7c39.5 59 39.5 136.5 0 195.5c-5.2 7.8-16.3 8.3-23 1.7l-88.1-88.1c-6.2-6.2-6.2-16.4 0-22.6l24.2-24.2c3.6 2.2 7.9 3.5 12.5 3.5c13.3 0 24-10.7 24-24c0-4.6-1.3-8.9-3.5-12.5l30.9-30.9zM472 280a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm22.4 126.4c-8.9-8.9-9.4-23.1-2.3-33.5C514.8 339.6 528 299.3 528 256s-13.2-83.6-35.9-116.9c-7.1-10.4-6.6-24.6 2.3-33.5c9.9-9.9 26.2-9.4 34.3 2C558.5 149.5 576 200.7 576 256s-17.5 106.5-47.4 148.4c-8.1 11.4-24.4 11.9-34.3 2z\"]\n};\nvar faBowlChopsticksNoodles = {\n prefix: 'fas',\n iconName: 'bowl-chopsticks-noodles',\n icon: [512, 512, [], \"e2ea\", \"M13.1 93.6L128 72V56c0-13.3 10.7-24 24-24s24 10.7 24 24v7 37.5 38V176v48h32V176 137.5v-42V57 40c0-13.3 10.7-24 24-24s24 10.7 24 24v8V88v48 40 48h32H478.4c18.2 0 32.7 15.3 31.6 33.5c-5.4 91.7-59.7 169.7-136.4 209.7l-1.2 9.7c-2.5 20-19.5 35-39.7 35H179.3c-20.2 0-37.2-15-39.7-35l-1.2-9.7C61.6 427.2 7.4 349.3 2 257.5C.9 239.3 15.4 224 33.6 224H128V176H16.2C7.3 176 0 168.7 0 159.7c0-8.8 7-16 15.7-16.2L128 140V108L18.5 125.1C8.8 126.6 0 119.1 0 109.3C0 101.6 5.5 95 13.1 93.6zM488.4 176H288V135l199.6-6.2C501 128.3 512 139 512 152.4c0 13-10.6 23.6-23.6 23.6zm3.9-124.9L288 83V42L484.4 5.2C498.7 2.5 512 13.5 512 28.1c0 11.5-8.4 21.2-19.7 23z\"]\n};\nvar faH3 = {\n prefix: 'fas',\n iconName: 'h3',\n icon: [640, 512, [], \"f315\", \"M64 96c0-17.7-14.3-32-32-32S0 78.3 0 96V256 416c0 17.7 14.3 32 32 32s32-14.3 32-32V288H256V416c0 17.7 14.3 32 32 32s32-14.3 32-32V256 96c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H64V96zM400 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H514.7l-89.4 89.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h72c30.9 0 56 25.1 56 56s-25.1 56-56 56H455.4c-11.7 0-21.7-8.5-23.7-20.1l-.2-1.2c-2.9-17.4-19.4-29.2-36.8-26.3s-29.2 19.4-26.3 36.8l.2 1.2c7.1 42.4 43.8 73.5 86.8 73.5H520c66.3 0 120-53.7 120-120c0-64.6-51-117.2-114.9-119.9l89.5-89.5c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H400z\"]\n};\nvar faPenClip = {\n prefix: 'fas',\n iconName: 'pen-clip',\n icon: [512, 512, [\"pen-alt\"], \"f305\", \"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z\"]\n};\nvar faPenAlt = faPenClip;\nvar faBridgeCircleExclamation = {\n prefix: 'fas',\n iconName: 'bridge-circle-exclamation',\n icon: [640, 512, [], \"e4ca\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faBadgePercent = {\n prefix: 'fas',\n iconName: 'badge-percent',\n icon: [512, 512, [], \"f646\", \"M256 0c36.8 0 68.8 20.7 84.9 51.1C373.8 41 411 49 437 75s34 63.3 23.9 96.1C491.3 187.2 512 219.2 512 256s-20.7 68.8-51.1 84.9C471 373.8 463 411 437 437s-63.3 34-96.1 23.9C324.8 491.3 292.8 512 256 512s-68.8-20.7-84.9-51.1C138.2 471 101 463 75 437s-34-63.3-23.9-96.1C20.7 324.8 0 292.8 0 256s20.7-68.8 51.1-84.9C41 138.2 49 101 75 75s63.3-34 96.1-23.9C187.2 20.7 219.2 0 256 0zM192 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM337 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L175 303c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L337 209z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z\"]\n};\nvar faSensor = {\n prefix: 'fas',\n iconName: 'sensor',\n icon: [448, 512, [], \"e028\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm48 88V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V120c0-13.3 10.7-24 24-24s24 10.7 24 24zm96 0V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V120c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faComma = {\n prefix: 'fas',\n iconName: 'comma',\n icon: [192, 512, [], \"2c\", \"M160 350.4V349c0-33.7-27.3-61-61-61c-29.5 0-54.8 21.1-60.1 50.1l-22.2 122c-.5 2.6-.7 5.2-.7 7.9v8.2C16 495.9 32.1 512 51.9 512c12.5 0 24.1-6.5 30.6-17.2L150.8 383c6-9.8 9.2-21.1 9.2-32.6z\"]\n};\nvar faSchoolCircleCheck = {\n prefix: 'fas',\n iconName: 'school-circle-check',\n icon: [640, 512, [], \"e56b\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z\"]\n};\nvar faToiletPaperUnder = {\n prefix: 'fas',\n iconName: 'toilet-paper-under',\n icon: [512, 512, [\"toilet-paper-reverse\"], \"e2a0\", \"M96 0H348.2C336.6 12.2 327 26.9 319.5 41.9C299.5 82 288 135.1 288 192s11.5 110 31.5 150.1c7.5 15 17.1 29.7 28.7 41.9H96C43 384 0 298 0 192S43 0 96 0zM320 192c0-83.6 26.7-154.7 64-181.1C394 3.8 404.8 0 416 0c53 0 96 86 96 192c0 35-4.7 67.8-12.8 96c-16.6 57.4-47.6 96-83.2 96c-11.2 0-22-3.8-32-10.9c-37.3-26.4-64-97.5-64-181.1zm64 0c0 35.3 14.3 64 32 64s32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64zM160 416H416c44.8 0 76.9-35.2 96-72.9V464c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V416zM64 208a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm64 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faToiletPaperReverse = faToiletPaperUnder;\nvar faLightEmergency = {\n prefix: 'fas',\n iconName: 'light-emergency',\n icon: [448, 512, [], \"e41f\", \"M64 192c0-88.4 71.6-160 160-160s160 71.6 160 160V352H64V192zm160-80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-61.9 0-112 50.1-112 112c0 8.8 7.2 16 16 16s16-7.2 16-16c0-44.2 35.8-80 80-80zM32 384H416c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32z\"]\n};\nvar faArrowDownToArc = {\n prefix: 'fas',\n iconName: 'arrow-down-to-arc',\n icon: [512, 512, [], \"e4ae\", \"M256 448c106 0 192-86 192-192c0-17.7 14.3-32 32-32s32 14.3 32 32c0 141.4-114.6 256-256 256S0 397.4 0 256c0-17.7 14.3-32 32-32s32 14.3 32 32c0 106 86 192 192 192zM390.6 230.6l-112 112c-12.5 12.5-32.8 12.5-45.3 0l-112-112c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 242.7 224 32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 210.7 57.4-57.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0H428.5L402.9 32H304V160zm157.1 0h94c11.5 0 20.9-9.3 20.9-20.9c0-2.1-.3-4.1-.9-6.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l25.6 128zM32 192l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H448c0 17.7 14.3 32 32 32s32-14.3 32-32l20-160h12c17.7 0 32-14.3 32-32s-14.3-32-32-32h-4l4-32H32z\"]\n};\nvar faVanShuttle = {\n prefix: 'fas',\n iconName: 'van-shuttle',\n icon: [640, 512, [128656, \"shuttle-van\"], \"f5b6\", \"M64 104v88h96V96H72c-4.4 0-8 3.6-8 8zm482 88L465.1 96H384v96H546zm-226 0V96H224v96h96zM592 384H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V104C0 64.2 32.2 32 72 32H192 352 465.1c18.9 0 36.8 8.3 49 22.8L625 186.5c9.7 11.5 15 26.1 15 41.2V336c0 26.5-21.5 48-48 48zm-64 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faShuttleVan = faVanShuttle;\nvar faBuildingUser = {\n prefix: 'fas',\n iconName: 'building-user',\n icon: [640, 512, [], \"e4da\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h89.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM576 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM352 477.1c0 19.3 15.6 34.9 34.9 34.9H605.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H445.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faLightSwitch = {\n prefix: 'fas',\n iconName: 'light-switch',\n icon: [384, 512, [], \"e017\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm96 96h64c35.3 0 64 28.7 64 64v80H96V160c0-35.3 28.7-64 64-64zM288 272v80c0 35.3-28.7 64-64 64H160c-35.3 0-64-28.7-64-64V272H288zM192 32a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm0 416a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faSquareCaretLeft = {\n prefix: 'fas',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nvar faCaretSquareLeft = faSquareCaretLeft;\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [576, 512, [], \"f591\", \"M315 315l158.4-215L444.1 70.6 229 229 315 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L420.6 8.4C428 2.9 437 0 446.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L334.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H224l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L128 320zM7 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H24c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z\"]\n};\nvar faWavePulse = {\n prefix: 'fas',\n iconName: 'wave-pulse',\n icon: [640, 512, [\"heart-rate\"], \"f5f8\", \"M319.1 0c14.8-.4 27.9 9.3 31.8 23.6l74 271.2 17.7-35.4c10.8-21.7 33-35.4 57.2-35.4H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H499.8L444.6 398.3c-5.9 11.9-18.6 18.8-31.8 17.5s-24.2-10.6-27.7-23.4L323.7 167.3 255.3 486.7c-3.1 14.4-15.5 24.8-30.2 25.3s-27.8-9.1-31.8-23.2L135.9 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H135.9c28.6 0 53.7 18.9 61.5 46.4L219.6 348 288.7 25.3C291.8 10.9 304.4 .4 319.1 0z\"]\n};\nvar faHeartRate = faWavePulse;\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [128273], \"f084\", \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V448h40c13.3 0 24-10.7 24-24V384h40c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zM376 96a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nvar faHatSanta = {\n prefix: 'fas',\n iconName: 'hat-santa',\n icon: [640, 512, [], \"f7a7\", \"M149.7 137.8L64 352H448L385.1 210.6c-.8-1.7-1.1-3.5-1.1-5.4c0-7.3 5.9-13.2 13.2-13.2h.8c1.4 0 2.7 .2 4 .6l55.3 16.6c2.1-3.2 4.5-6.1 7.2-8.8c0-14.3 5.5-28.7 16.4-39.6c2.2-2.2 4.6-4.2 7.1-6L434.4 91.6c-32-37.8-79-59.6-128.5-59.6c-68.8 0-130.7 41.9-156.3 105.8zm434.3 44.4C583 169.8 572.7 160 560 160s-23 9.8-23.9 22.2c-9.4-8.1-23.7-7.7-32.6 1.2s-9.4 23.2-1.2 32.6C489.8 217 480 227.3 480 240s9.8 23 22.2 23.9c-8.1 9.4-7.7 23.7 1.2 32.6s23.2 9.4 32.6 1.2C537 310.2 547.3 320 560 320s23-9.8 23.9-22.2c9.4 8.1 23.7 7.7 32.6-1.2s9.4-23.2 1.2-32.6C630.2 263 640 252.7 640 240s-9.8-23-22.2-23.9c8.1-9.4 7.7-23.7-1.2-32.6s-23.2-9.4-32.6-1.2zM0 432c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48s-21.5-48-48-48H48c-26.5 0-48 21.5-48 48z\"]\n};\nvar faTamale = {\n prefix: 'fas',\n iconName: 'tamale',\n icon: [320, 512, [129748], \"e451\", \"M48.1 18.3C72.3 8.6 108.4 0 160 0s87.7 8.6 111.9 18.3c12.1 4.8 21 9.9 27.4 14.1c12.7 8.5 23.1 20.4 20.3 36.9L296.4 208l-.4 0H236.2L248 72.7c.4-4.4-2.9-8.3-7.3-8.7s-8.3 2.9-8.7 7.3L220.1 208H168V64c0-4.4-3.6-8-8-8s-8 3.6-8 8V208H99.9L88 71.3c-.4-4.4-4.3-7.7-8.7-7.3s-7.7 4.3-7.3 8.7L83.8 208H24l-.4 0L.4 69.3C-2.3 52.8 8.1 40.8 20.8 32.4c6.3-4.2 15.3-9.3 27.4-14.1zM24 240H296c8.8 0 16 7.2 16 16s-7.2 16-16 16H192l28.8 38.4c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2L160 282.7l-35.2 46.9c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4L128 272H24c-8.8 0-16-7.2-16-16s7.2-16 16-16zM152 448c0 4.4 3.6 8 8 8s8-3.6 8-8V346.7c13.4 17.9 35.9 26.5 57.4 18.1l6.6 76c.4 4.4 4.3 7.7 8.7 7.3s7.7-4.3 7.3-8.7l-7.3-84.1c14.2-13.2 18.9-33.4 12.6-51.2H296l.4 0 23.1 138.7c1.7 10.2-1.6 20.6-8.9 27.9l0 0c-10.6 10.5-25.1 17.6-38.7 23C247.7 503.4 211.6 512 160 512s-87.7-8.6-111.9-18.3c-13.7-5.5-28.1-12.5-38.7-23l0 0c-7.3-7.3-10.6-17.7-8.9-27.9L23.6 304l.4 0H66.7c-6.3 17.7-1.6 38 12.6 51.2L72 439.3c-.4 4.4 2.9 8.3 7.3 8.7s8.3-2.9 8.7-7.3l6.6-76c21.5 8.4 44-.2 57.4-18.1V448z\"]\n};\nvar faBoxCheck = {\n prefix: 'fas',\n iconName: 'box-check',\n icon: [448, 512, [], \"f467\", \"M93.7 32H208V160H0L50.7 58.5C58.9 42.3 75.5 32 93.7 32zM240 32H354.3c18.2 0 34.8 10.3 42.9 26.5L448 160H240V32zM0 192H448V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm337 89c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L337 281z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [512, 512, [128226, 128363], \"f0a1\", \"M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75H192 160 64c-35.3 0-64 28.7-64 64v96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V352l8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V300.4c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4V32zm-64 76.7V240 371.3C357.2 317.8 280.5 288 200.7 288H192V192h8.7c79.8 0 156.5-29.8 215.3-83.3z\"]\n};\nvar faSteak = {\n prefix: 'fas',\n iconName: 'steak',\n icon: [576, 512, [129385], \"f824\", \"M268.8 37.4C295.7 12.4 329.7 0 368 0c65 0 117.7 39 150.5 80c33.9 42.4 57.5 99.6 57.5 160c0 83.9-55.1 152.8-113.4 196.2C402.1 481.2 321.7 512 240 512c-36.8 0-86.5-4.4-130-19.3C73.4 480.1 0 444.3 0 360c0-38.6 17.8-68.3 42.5-88.1c19.6-15.8 41.4-26.8 63.3-37.8c27.3-13.8 54.6-27.6 77.7-50.7c13.8-13.8 19.7-27.9 30-52.9c3.2-7.7 6.8-16.5 11.2-26.6c7.7-17.6 20.6-44.7 44.1-66.5zm36.8 122l0 0c2.5-6 4.8-11.8 7.1-17c6.9-15.7 13.3-27.1 21.5-34.7c7.5-7 17.5-11.7 33.9-11.7c25.4 0 53.3 16.2 75.5 44c22 27.5 36.5 64.1 36.5 100c0 40.8-28.3 84.6-74.7 119.2C359.4 393.4 298.6 416 240 416c-31 0-69.1-3.9-98.8-14.1C110.1 391.2 96 376.7 96 360c0-9 2.6-13.2 6.9-16.9c5.8-5 15-9.1 30.2-15.5l1.2-.5c29.3-12.4 71.2-30 117-75.8c28.6-28.6 42.9-63.7 54.3-91.9zm6.8-75.2c-13.3 12.4-21.9 29-29 45.3c-2.9 6.6-5.6 13.2-8.3 19.8c-11.4 27.8-22.8 55.7-46.4 79.3c-41.4 41.4-78.6 57.1-107 69l-1.1 .5-.7 .3 0 0c-13.5 5.7-27.5 11.6-37.7 20.3C70.4 328.8 64 342.1 64 360c0 39.3 33.9 60.8 66.8 72.1C165.1 443.9 207 448 240 448c66.3 0 133.6-25.4 184.4-63.2C474.8 347.4 512 295.2 512 240c0-44.1-17.5-87.5-43.5-120C442.7 87.8 406.6 64 368 64c-23.7 0-41.7 7.3-55.6 20.3zM384 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faLocationCrosshairsSlash = {\n prefix: 'fas',\n iconName: 'location-crosshairs-slash',\n icon: [640, 512, [\"location-slash\"], \"f603\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-146-114.5c12.1-20.1 20.6-42.6 24.6-66.6H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H509.3C495.9 143.6 432.4 80.1 352 66.7V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V66.7c-39.9 6.7-75.6 25.7-103.1 52.9L38.8 5.1zm197 154.4C258.3 139.9 287.8 128 320 128c70.7 0 128 57.3 128 128c0 21.2-5.1 41.1-14.2 58.7l-38.9-30.5c3.3-8.8 5.1-18.3 5.1-28.2c0-44.2-35.8-80-80-80c-16.8 0-32.4 5.2-45.3 14l-38.9-30.5zM414.9 422.9l-56.8-44.7C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128c0-2.9 .1-5.7 .3-8.5l-56.8-44.7c-2 6.9-3.6 14-4.8 21.3H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h34.7c13.5 80.4 76.9 143.9 157.3 157.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c22.6-3.8 43.8-11.5 62.9-22.4z\"]\n};\nvar faLocationSlash = faLocationCrosshairsSlash;\nvar faPersonDolly = {\n prefix: 'fas',\n iconName: 'person-dolly',\n icon: [512, 512, [], \"f4d0\", \"M32 48a48 48 0 1 1 96 0A48 48 0 1 1 32 48zM96 241.7v65.1l51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3L98.1 399.4 18.7 320C6.7 308 0 291.7 0 274.7V186.6C0 154.2 26.2 128 58.6 128c24.1 0 46.5 12 59.9 32l42.6 64h46.1l-6.5-26.2c-3.2-12.9 4.6-25.9 17.5-29.1s25.9 4.6 29.1 17.5l49.6 198.4c17.6 2.4 32.9 12 42.8 25.7l134.4-33.6c12.9-3.2 25.9 4.6 29.1 17.5s-4.6 25.9-17.5 29.1L351.4 456.9C347.1 488 320.3 512 288 512c-35.3 0-64-28.7-64-64c0-21.3 10.4-40.1 26.3-51.7L223.3 288H152.6c-16 0-31-8-39.9-21.4L96 241.7zM0 480L0 346.5l64 64V480v0c0 17.7-14.3 32-32 32s-32-14.3-32-32zm288-16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm69.4-87.8c-17.1 4.3-34.5-6.1-38.8-23.3l-22.9-91.5c-4.3-17.1 6.1-34.5 23.3-38.8l91.5-22.9c17.1-4.3 34.5 6.1 38.8 23.3l22.9 91.5c4.3 17.1-6.1 34.5-23.3 38.8l-91.5 22.9z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [512, 512, [127760], \"f0ac\", \"M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [128333], \"f69b\", \"M309.8 3.7c5.9-4.9 14.6-4.9 20.5 0l121 100.8C469.5 119.7 480 142.2 480 166V280.1 512H464 352V416c0-17.7-14.3-32-32-32s-32 14.3-32 32v96H176 160V280.1 166c0-23.7 10.5-46.3 28.8-61.5L309.8 3.7zM512 512V244.5l28.1-31.2c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3l63.8 70.9c7.9 8.8 12.3 20.3 12.3 32.1V448c0 35.3-28.7 64-64 64H512zM128 244.5V512H64c-35.3 0-64-28.7-64-64V316.3c0-11.9 4.4-23.3 12.3-32.1l63.8-70.9c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3L128 244.5zM327 124.3c-3.1-5.4-10.9-5.4-13.9 0l-15.9 28.1-32.3-.3c-6.2-.1-10.1 6.7-7 12.1L274.3 192l-16.4 27.8c-3.2 5.4 .7 12.1 7 12.1l32.3-.3L313 259.7c3.1 5.4 10.9 5.4 13.9 0l15.9-28.1 32.3 .3c6.2 .1 10.1-6.7 7-12.1L365.7 192l16.4-27.8c3.2-5.4-.7-12.1-7-12.1l-32.3 .3L327 124.3z\"]\n};\nvar faFileChartColumn = {\n prefix: 'fas',\n iconName: 'file-chart-column',\n icon: [384, 512, [\"file-chart-line\"], \"f659\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 248V424c0 13.3-10.7 24-24 24s-24-10.7-24-24V248c0-13.3 10.7-24 24-24s24 10.7 24 24zm88 64V424c0 13.3-10.7 24-24 24s-24-10.7-24-24V312c0-13.3 10.7-24 24-24s24 10.7 24 24zM128 376v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFileChartLine = faFileChartColumn;\nvar faPersonHalfDress = {\n prefix: 'fas',\n iconName: 'person-half-dress',\n icon: [320, 512, [], \"e548\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm8 352V128h6.9c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352h0zM58.2 182.3c19.9-33.1 55.3-53.5 93.8-54.3V384h0v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2z\"]\n};\nvar faFolderImage = {\n prefix: 'fas',\n iconName: 'folder-image',\n icon: [512, 512, [], \"e18a\", \"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM176 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm120 0c-8 0-15.5 4-20 10.7l-56 84L202.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h80 48H392c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144C311.5 228 304 224 296 224z\"]\n};\nvar faCalendarPen = {\n prefix: 'fas',\n iconName: 'calendar-pen',\n icon: [512, 512, [\"calendar-edit\"], \"f333\", \"M160 0c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H32V112c0-26.5 21.5-48 48-48h48V32c0-17.7 14.3-32 32-32zM32 192H480V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V192zm308.8 75c-14.7-14.7-38.6-14.7-53.3 0L272.6 282l53.3 53.3 14.9-14.9c14.7-14.7 14.7-38.6 0-53.3zM178.1 376.5c-4.1 4.1-7 9.2-8.4 14.9L160.5 428c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l36.6-9.2c5.6-1.4 10.8-4.3 14.9-8.4l71.9-71.9L250 304.6l-71.9 71.9z\"]\n};\nvar faCalendarEdit = faCalendarPen;\nvar faRoadBridge = {\n prefix: 'fas',\n iconName: 'road-bridge',\n icon: [640, 512, [], \"e563\", \"M352 0H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM480 200c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V224c0-13.3-10.7-24-24-24zm24 184c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V384zM480 40c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V64c0-13.3-10.7-24-24-24zM32 96H288v64H248v64h40v96c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V416c0-53-43-96-96-96V224H72V160H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm168 64H120v64h80V160z\"]\n};\nvar faFaceSmileTear = {\n prefix: 'fas',\n iconName: 'face-smile-tear',\n icon: [512, 512, [], \"e393\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm141.5 67.9c-6.7 5.8-7.4 15.9-1.6 22.6c22.2 25.7 61 53.5 116.1 53.5c8.8 0 16-7.2 16-16s-7.2-16-16-16c-43.4 0-74-21.8-91.9-42.5c-5.8-6.7-15.9-7.4-22.6-1.6zM352 416c26.5 0 48-21 48-47c0-20-28.6-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0C332.4 308.6 304 349 304 369c0 26 21.5 47 48 47zM208.4 208a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMessagePlus = {\n prefix: 'fas',\n iconName: 'message-plus',\n icon: [512, 512, [\"comment-alt-plus\"], \"f4a8\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zM232 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faCommentAltPlus = faMessagePlus;\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [448, 512, [], \"f124\", \"M429.6 92.1c4.9-11.9 2.1-25.6-7-34.7s-22.8-11.9-34.7-7l-352 144c-14.2 5.8-22.2 20.8-19.3 35.8s16.1 25.8 31.4 25.8H224V432c0 15.3 10.8 28.4 25.8 31.4s30-5.1 35.8-19.3l144-352z\"]\n};\nvar faC = {\n prefix: 'fas',\n iconName: 'c',\n icon: [384, 512, [99], \"43\", \"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nvar faTabletButton = {\n prefix: 'fas',\n iconName: 'tablet-button',\n icon: [448, 512, [], \"f10a\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faRectangleHistoryCircleUser = {\n prefix: 'fas',\n iconName: 'rectangle-history-circle-user',\n icon: [640, 512, [], \"e4a4\", \"M320 368c0 59.5 29.5 112.1 74.8 144L64 512c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64l384 0c23.8 0 44.5 12.9 55.5 32.2c-2.5-.1-5-.2-7.5-.2c-97.2 0-176 78.8-176 176zM440 80c13.3 0 24 10.7 24 24s-10.7 24-24 24L72 128c-13.3 0-24-10.7-24-24s10.7-24 24-24l368 0zM392 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L120 48c-13.3 0-24-10.7-24-24s10.7-24 24-24H392zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm221.7 80.7c-6.2-19-24-32.7-45.1-32.7H463.4c-21 0-38.9 13.7-45.1 32.7C438.5 468.1 465.8 480 496 480s57.5-11.9 77.7-31.3zM544 336a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faBuildingLock = {\n prefix: 'fas',\n iconName: 'building-lock',\n icon: [576, 512, [], \"e4d6\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h88.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-23.7 12.9-44.4 32-55.4V272c0-30.5 12.2-58.2 32-78.4V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32v48H432V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faChartLineUp = {\n prefix: 'fas',\n iconName: 'chart-line-up',\n icon: [512, 512, [], \"e0e5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zM439 279c15.1 15.1 41 4.4 41-17V152c0-13.3-10.7-24-24-24H345.9c-21.4 0-32.1 25.9-17 41l32.4 32.4L304 258.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L208 253.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0l80-80L439 279z\"]\n};\nvar faMailbox = {\n prefix: 'fas',\n iconName: 'mailbox',\n icon: [576, 512, [128234], \"f813\", \"M0 208V384c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V208c0-79.5-64.5-144-144-144S0 128.5 0 208zm64 0c0-8.8 7.2-16 16-16H208c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm256 0V384c0 24.6-9.2 47-24.4 64H512c35.3 0 64-28.7 64-64V208c0-79.5-64.5-144-144-144H245.2C290.4 95.9 320 148.5 320 208zm64 0c0-8.8 7.2-16 16-16h64 32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V224H400c-8.8 0-16-7.2-16-16z\"]\n};\nvar faTruckBolt = {\n prefix: 'fas',\n iconName: 'truck-bolt',\n icon: [640, 512, [], \"e3d0\", \"M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM112 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM270.3 87.2L233.9 160H288c6.9 0 13 4.4 15.2 10.9s-.1 13.7-5.6 17.9l-128 96c-5.9 4.5-14.2 4.2-19.9-.5s-7.4-12.8-4.1-19.4L182.1 192H128c-6.9 0-13-4.4-15.2-10.9s.1-13.7 5.6-17.9l128-96c5.9-4.5 14.2-4.2 19.9 .5s7.4 12.8 4.1 19.4z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L110.4 80c.5 0 1.1 0 1.6 0c176.7 0 320 143.3 320 320c0 .5 0 1.1 0 1.6l44.4-11.8c20.8-5.5 36.3-24.7 34.7-47.5C498.5 159.5 352.5 13.5 169.7 .9zM399.8 410.2c.1-3.4 .2-6.8 .2-10.2c0-159.1-128.9-288-288-288c-3.4 0-6.8 .1-10.2 .2L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1L399.8 410.2zM176 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [576, 512, [], \"f53a\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96zM64 352c35.3 0 64 28.7 64 64H64V352zm64-208c0 35.3-28.7 64-64 64V144h64zM512 304v64H448c0-35.3 28.7-64 64-64zM448 96h64v64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [\"area-chart\"], \"f1fe\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm96 288H448c17.7 0 32-14.3 32-32V251.8c0-7.6-2.7-15-7.7-20.8l-65.8-76.8c-12.1-14.2-33.7-15-46.9-1.8l-21 21c-10 10-26.4 9.2-35.4-1.6l-39.2-47c-12.6-15.1-35.7-15.4-48.7-.6L135.9 215c-5.1 5.8-7.9 13.3-7.9 21.1v84c0 17.7 14.3 32 32 32z\"]\n};\nvar faAreaChart = faChartArea;\nvar faHouseFlag = {\n prefix: 'fas',\n iconName: 'house-flag',\n icon: [640, 512, [], \"e50d\", \"M480 0c-17.7 0-32 14.3-32 32V192 512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H512c0-17.7-14.3-32-32-32zM416 159L276.8 39.7c-12-10.3-29.7-10.3-41.7 0l-224 192C1 240.4-2.7 254.5 2 267.1S18.6 288 32 288H64V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v96c0 17.7 14.3 32 32 32h64.7l.2 0h-1V159z\"]\n};\nvar faCircleThreeQuartersStroke = {\n prefix: 'fas',\n iconName: 'circle-three-quarters-stroke',\n icon: [512, 512, [], \"e5d4\", \"M256 64V224c0 17.7 14.3 32 32 32H448c0-106-86-192-192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faPersonCircleMinus = {\n prefix: 'fas',\n iconName: 'person-circle-minus',\n icon: [576, 512, [], \"e540\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faScalpel = {\n prefix: 'fas',\n iconName: 'scalpel',\n icon: [512, 512, [], \"f61d\", \"M387.4 25.1C400.8 9.2 420.6 0 441.4 0c39 0 70.6 31.6 70.6 70.6v4c0 17.6-6.2 34.6-17.6 48.1L369.3 271c-9.1 10.8-22.5 17-36.7 17H200c-6.2 0-11.9-3.6-14.5-9.3s-1.7-12.3 2.3-17.1L387.4 25.1zM169.4 320H176h96 16v16c0 74.9-65.5 118.6-126.1 142.9C100.1 503.6 34.1 512 16 512c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l160-160 4.7-4.7z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [128683, \"cancel\"], \"f05e\", \"M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faCancel = faBan;\nvar faBellExclamation = {\n prefix: 'fas',\n iconName: 'bell-exclamation',\n icon: [448, 512, [], \"f848\", \"M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7zM192 320a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm56-184v96c0 13.3-10.7 24-24 24s-24-10.7-24-24V136c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faCircleBookmark = {\n prefix: 'fas',\n iconName: 'circle-bookmark',\n icon: [512, 512, [\"bookmark-circle\"], \"e100\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 176c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V368c0 6.2-3.5 11.8-9.1 14.4s-12.1 1.9-16.9-1.9l-70-56-70 56c-4.8 3.8-11.4 4.6-16.9 1.9s-9.1-8.3-9.1-14.4V176z\"]\n};\nvar faBookmarkCircle = faCircleBookmark;\nvar faEggFried = {\n prefix: 'fas',\n iconName: 'egg-fried',\n icon: [512, 512, [], \"f7fc\", \"M284.3 39.3c30.4 31.6 89.1 65.9 131.5 76.7c27.5 7 52.8 23.2 71 47.8c42.1 56.8 30.2 137-26.6 179.1c-17.8 13.2-37.9 21.1-58.4 24c-37.2 5.2-84.5 32.7-103.3 65.2c-44.2 76.5-142 102.7-218.6 58.6S-22.7 348.5 21.4 272c24.8-42.9 38.7-105.9 43.1-155.2C67.1 87 80.1 58 103.3 35.7c51-49 132-47.4 181 3.6zM336 240a112 112 0 1 0 -224 0 112 112 0 1 0 224 0zm-160-8c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-39.8 32.2-72 72-72c8.8 0 16 7.2 16 16s-7.2 16-16 16c-22.1 0-40 17.9-40 40z\"]\n};\nvar faFaceWeary = {\n prefix: 'fas',\n iconName: 'face-weary',\n icon: [512, 512, [], \"e3a1\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3h-3.2c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm46.6-164c6.2 6.2 6.2 16.4 0 22.6l-7.4 7.4c-23.6 23.6-53.9 39.2-86.8 44.7l-2.5 .4c-8.7 1.5-17-4.4-18.4-13.2s4.4-17 13.2-18.4l2.5-.4c26.3-4.4 50.6-16.9 69.5-35.7l7.4-7.4c6.2-6.2 16.4-6.2 22.6 0zm89.4 22.6c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l7.4 7.4c18.9 18.9 43.2 31.4 69.5 35.7l2.5 .4c8.7 1.5 14.6 9.7 13.2 18.4s-9.7 14.6-18.4 13.2l-2.5-.4c-32.9-5.5-63.3-21.1-86.8-44.7l-7.4-7.4z\"]\n};\nvar faUniformMartialArts = {\n prefix: 'fas',\n iconName: 'uniform-martial-arts',\n icon: [640, 512, [], \"e3d1\", \"M180 0h28 9.6c12.3 0 23.5 7 28.8 18.1l61.1 126.7L253 288H144V133.1L98 216.7c-1.3 2.4-2 5-2 7.7V384c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224.4c0-18.9 4.8-37.4 13.9-54L80.3 49.7C95.9 21.2 124.9 2.8 157 .3c1-.2 2-.3 3-.3h4.4H180zM389.1 20.6C393.8 8.2 405.7 0 419 0h13 28 15.6H480c1 0 2 .1 3 .3c32.1 2.5 61 20.9 76.7 49.5l66.4 120.7c9.1 16.5 13.9 35.1 13.9 54V384c0 17.7-14.3 32-32 32H576c-17.7 0-32-14.3-32-32V224.4c0-2.7-.7-5.3-2-7.7l-46-83.7V288H287.2l52.7-138.3L389.1 20.6zM320 320H496v32H388.4 349.9l47.4 71.1c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-50.7-76-50.7 76c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2L290.1 352H251.6 144V320H264h56zM216.1 405.4c-14.7 22.1-8.7 51.9 13.3 66.6s51.9 8.7 66.6-13.3L320 422.5l24.1 36.1c14.7 22.1 44.5 28 66.6 13.3s28-44.5 13.3-66.6L409.7 384H496v64c0 35.3-28.7 64-64 64H208c-35.3 0-64-28.7-64-64V384h86.3l-14.2 21.4z\"]\n};\nvar faCameraRotate = {\n prefix: 'fas',\n iconName: 'camera-rotate',\n icon: [640, 512, [], \"e0d8\", \"M213.1 64.8L202.7 96H128c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H437.3L426.9 64.8C420.4 45.2 402.1 32 381.4 32H258.6c-20.7 0-39 13.2-45.5 32.8zM448 256c0 8.8-7.2 16-16 16H355.3c-6.2 0-11.3-5.1-11.3-11.3c0-3 1.2-5.9 3.3-8L371 229c-13.6-13.4-31.9-21-51-21c-19.2 0-37.7 7.6-51.3 21.3L249 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l19.7-19.7C257.4 172.7 288 160 320 160c31.8 0 62.4 12.6 85 35l23.7-23.7c2.1-2.1 5-3.3 8-3.3c6.2 0 11.3 5.1 11.3 11.3V256zM192 320c0-8.8 7.2-16 16-16h76.7c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8L269 347c13.6 13.4 31.9 21 51 21c19.2 0 37.7-7.6 51.3-21.3L391 327c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-19.7 19.7C382.6 403.3 352 416 320 416c-31.8 0-62.4-12.6-85-35l-23.7 23.7c-2.1 2.1-5 3.3-8 3.3c-6.2 0-11.3-5.1-11.3-11.3V320z\"]\n};\nvar faSunDust = {\n prefix: 'fas',\n iconName: 'sun-dust',\n icon: [512, 512, [], \"f764\", \"M371.1 13.1L391 121l-44.5 44.5C323.3 142.3 291.3 128 256 128c-70.7 0-128 57.3-128 128c0 35.3 14.3 67.3 37.5 90.5L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6s8.6 6.6 9.6 11.9zM256 160c26.5 0 50.5 10.7 67.9 28.1L188.1 323.9C170.7 306.5 160 282.5 160 256c0-53 43-96 96-96zm192 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-80 80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm112 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM240 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-80 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM368 400a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 288a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCommentText = {\n prefix: 'fas',\n iconName: 'comment-text',\n icon: [512, 512, [], \"e14d\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM184 160h72 72c13.3 0 24 10.7 24 24s-10.7 24-24 24H280V312c0 13.3-10.7 24-24 24s-24-10.7-24-24V208H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faSprayCanSparkles = {\n prefix: 'fas',\n iconName: 'spray-can-sparkles',\n icon: [512, 512, [\"air-freshener\"], \"f5d0\", \"M96 32v96H224V32c0-17.7-14.3-32-32-32H128C110.3 0 96 14.3 96 32zm0 128c-53 0-96 43-96 96V464c0 26.5 21.5 48 48 48H272c26.5 0 48-21.5 48-48V256c0-53-43-96-96-96H96zm64 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM384 48c0-1.4-1-3-2.2-3.6L352 32 339.6 2.2C339 1 337.4 0 336 0s-3 1-3.6 2.2L320 32 290.2 44.4C289 45 288 46.6 288 48c0 1.4 1 3 2.2 3.6L320 64l12.4 29.8C333 95 334.6 96 336 96s3-1 3.6-2.2L352 64l29.8-12.4C383 51 384 49.4 384 48zm76.4 45.8C461 95 462.6 96 464 96s3-1 3.6-2.2L480 64l29.8-12.4C511 51 512 49.4 512 48c0-1.4-1-3-2.2-3.6L480 32 467.6 2.2C467 1 465.4 0 464 0s-3 1-3.6 2.2L448 32 418.2 44.4C417 45 416 46.6 416 48c0 1.4 1 3 2.2 3.6L448 64l12.4 29.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L448 224l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L448 256l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 256l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6c0-1.4-1-3-2.2-3.6L480 224l-12.4-29.8zM448 144c0-1.4-1-3-2.2-3.6L416 128 403.6 98.2C403 97 401.4 96 400 96s-3 1-3.6 2.2L384 128l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L384 160l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L416 160l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6z\"]\n};\nvar faAirFreshener = faSprayCanSparkles;\nvar faSignalBars = {\n prefix: 'fas',\n iconName: 'signal-bars',\n icon: [640, 512, [\"signal-alt\", \"signal-alt-4\", \"signal-bars-strong\"], \"f690\", \"M560 0c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48s48-21.5 48-48V48c0-26.5-21.5-48-48-48zM352 176V464c0 26.5 21.5 48 48 48s48-21.5 48-48V176c0-26.5-21.5-48-48-48s-48 21.5-48 48zM240 256c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48s48-21.5 48-48V304c0-26.5-21.5-48-48-48zM80 384c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48s48-21.5 48-48V432c0-26.5-21.5-48-48-48z\"]\n};\nvar faSignalAlt = faSignalBars;\nvar faSignalAlt4 = faSignalBars;\nvar faSignalBarsStrong = faSignalBars;\nvar faDiamondExclamation = {\n prefix: 'fas',\n iconName: 'diamond-exclamation',\n icon: [512, 512, [], \"e405\", \"M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zM256 128c-13.3 0-24 10.7-24 24V264c0 13.3 10.7 24 24 24s24-10.7 24-24V152c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z\"]\n};\nvar faDialMin = {\n prefix: 'fas',\n iconName: 'dial-min',\n icon: [576, 512, [], \"e161\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM400.9 401c-56.7 56.7-145.4 62-208 15.7L304.7 304.9c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L158.9 382.8c-46.2-62.6-41-151.3 15.7-208c62.5-62.5 163.8-62.5 226.3 0s62.5 163.8 0 226.3zM512 288a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 96a32 32 0 1 1 64 0A32 32 0 1 1 64 96zM480 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 480a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm416-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faRepeat = {\n prefix: 'fas',\n iconName: 'repeat',\n icon: [512, 512, [128257], \"f363\", \"M0 224c0 17.7 14.3 32 32 32s32-14.3 32-32c0-53 43-96 96-96H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S320 19.1 320 32V64H160C71.6 64 0 135.6 0 224zm512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 53-43 96-96 96H192V352c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V448H352c88.4 0 160-71.6 160-160z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [128327, 10013], \"f654\", \"M176 0c-26.5 0-48 21.5-48 48v80H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h80V464c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V256h80c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H256V48c0-26.5-21.5-48-48-48H176z\"]\n};\nvar faPageCaretDown = {\n prefix: 'fas',\n iconName: 'page-caret-down',\n icon: [384, 512, [\"file-caret-down\"], \"e429\", \"M320 512c35.3 0 64-28.7 64-64V138.5c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0H64C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320zM192 352c-4.5 0-8.8-1.9-11.8-5.2l-75.7-82.6c-14.1-15.4-3.2-40.2 17.7-40.2l139.6 0c20.9 0 31.8 24.8 17.7 40.2l-75.7 82.6c-3 3.3-7.3 5.2-11.8 5.2z\"]\n};\nvar faFileCaretDown = faPageCaretDown;\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [448, 512, [128230], \"f466\", \"M50.7 58.5L0 160H208V32H93.7C75.5 32 58.9 42.3 50.7 58.5zM240 160H448L397.3 58.5C389.1 42.3 372.5 32 354.3 32H240V160zm208 32H0V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [640, 512, [9892], \"f228\", \"M176 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM352 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H208v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C62.1 334.1 0 262.3 0 176C0 78.8 78.8 0 176 0s176 78.8 176 176zM271.9 360.6c19.3-10.1 36.9-23.1 52.1-38.4c20 18.5 46.7 29.8 76.1 29.8c61.9 0 112-50.1 112-112s-50.1-112-112-112c-7.2 0-14.3 .7-21.1 2c-4.9-21.5-13-41.7-24-60.2C369.3 66 384.4 64 400 64c37 0 71.4 11.4 99.8 31l20.6-20.6L487 41c-6.9-6.9-8.9-17.2-5.2-26.2S494.3 0 504 0H616c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L545 140.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176c-50.5 0-96-21.3-128.1-55.4z\"]\n};\nvar faClockSevenThirty = {\n prefix: 'fas',\n iconName: 'clock-seven-thirty',\n icon: [512, 512, [], \"e351\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM232 392V335.3l-20 30c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l64-96c5.9-8.8 16.8-12.7 26.9-9.7s17 12.4 17 23V392c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faArrowPointer = {\n prefix: 'fas',\n iconName: 'arrow-pointer',\n icon: [320, 512, [\"mouse-pointer\"], \"f245\", \"M0 55.2V426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320H297.9c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z\"]\n};\nvar faMousePointer = faArrowPointer;\nvar faClockFourThirty = {\n prefix: 'fas',\n iconName: 'clock-four-thirty',\n icon: [512, 512, [], \"e34b\", \"M256 512A256 256 0 1 1 256 0a256 256 0 1 1 0 512zm24-120V300.8L338.7 340c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3l-96-64c-7.4-4.9-16.8-5.4-24.6-1.2S232 247.1 232 256V392c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faSignalBarsGood = {\n prefix: 'fas',\n iconName: 'signal-bars-good',\n icon: [640, 512, [\"signal-alt-3\"], \"f693\", \"M400 128c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48s48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 304V464c0 26.5 21.5 48 48 48s48-21.5 48-48V304c0-26.5-21.5-48-48-48s-48 21.5-48 48zM32 432v32c0 26.5 21.5 48 48 48s48-21.5 48-48V432c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faSignalAlt3 = faSignalBarsGood;\nvar faCactus = {\n prefix: 'fas',\n iconName: 'cactus',\n icon: [512, 512, [127797], \"f8a7\", \"M160 96c0-53 43-96 96-96s96 43 96 96V352h48c8.8 0 16-7.2 16-16V272c0-26.5 21.5-48 48-48s48 21.5 48 48v64c0 61.9-50.1 112-112 112H352v16c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V320H112C50.1 320 0 269.9 0 208V144c0-26.5 21.5-48 48-48s48 21.5 48 48v64c0 8.8 7.2 16 16 16h48V96zm80 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 240a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faLightbulbGear = {\n prefix: 'fas',\n iconName: 'lightbulb-gear',\n icon: [576, 512, [], \"e5fd\", \"M262.1 352.2c-11 7-19.1 18.6-21.4 31.8H112c-9.6-31.9-29.5-59.1-49.2-86.2l0 0c-5.2-7.1-10.4-14.2-15.4-21.4C27.6 247.9 16 213.3 16 176C16 78.8 94.8 0 192 0c97 0 175.6 78.4 176 175.3c-17.8 7.7-28 25.6-28 43.3v.9c-17.6-9.7-41.5-8.2-57.2 8.7c-9.2 9.9-17.4 20.9-24.4 33s-12.4 24.7-16.4 37.6c-6.7 21.6 3.4 42.7 20 53.3zM112 416H245.6c3.5 9.2 7.7 18.3 12.8 27c2.9 5 6 9.9 9.4 14.6C257.1 489.2 227.2 512 192 512c-44.2 0-80-35.8-80-80V416zm0-240c0-44.2 35.8-80 80-80c8.8 0 16-7.2 16-16s-7.2-16-16-16C130.1 64 80 114.1 80 176c0 8.8 7.2 16 16 16s16-7.2 16-16zm260 42.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8v17.7c0 7.8 4.8 14.8 11.6 18.7c6.8 3.9 15.1 4.5 21.8 .6l13.8-7.9c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-14.4 8.3c-6.5 3.7-10 10.9-10 18.4s3.5 14.7 10 18.4l14.4 8.3c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-13.8-7.9c-6.7-3.9-15.1-3.3-21.8 .6c-6.8 3.9-11.6 10.9-11.6 18.7l0 17.7c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8V467.8c0-7.9-4.9-14.9-11.7-18.9c-6.8-3.9-15.2-4.5-22-.6l-13.5 7.8c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l14-8.1c6.5-3.8 10.1-11.1 10.1-18.6s-3.5-14.8-10.1-18.6l-14-8.1c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l13.6 7.8c6.8 3.9 15.2 3.3 22-.6c6.9-3.9 11.7-11 11.7-18.9V218.2zm92.1 133.5a48.1 48.1 0 1 0 -96.1 0 48.1 48.1 0 1 0 96.1 0z\"]\n};\nvar faMaximize = {\n prefix: 'fas',\n iconName: 'maximize',\n icon: [512, 512, [\"expand-arrows-alt\"], \"f31e\", \"M200 32H56C42.7 32 32 42.7 32 56V200c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l40-40 79 79-79 79L73 295c-6.9-6.9-17.2-8.9-26.2-5.2S32 302.3 32 312V456c0 13.3 10.7 24 24 24H200c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H456c13.3 0 24-10.7 24-24V312c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S209.7 32 200 32z\"]\n};\nvar faExpandArrowsAlt = faMaximize;\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M96 0C60.7 0 32 28.7 32 64V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32s-14.3-32-32-32V304h16c22.1 0 40 17.9 40 40v32c0 39.8 32.2 72 72 72s72-32.2 72-72V252.3c32.5-10.2 56-40.5 56-76.3V144c0-8.8-7.2-16-16-16H544V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H480V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H432c-8.8 0-16 7.2-16 16v32c0 35.8 23.5 66.1 56 76.3V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V344c0-48.6-39.4-88-88-88H320V64c0-35.3-28.7-64-64-64H96zM216.9 82.7c6 4 8.5 11.5 6.3 18.3l-25 74.9H256c6.7 0 12.7 4.2 15 10.4s.5 13.3-4.6 17.7l-112 96c-5.5 4.7-13.4 5.1-19.3 1.1s-8.5-11.5-6.3-18.3l25-74.9H96c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7l112-96c5.5-4.7 13.4-5.1 19.3-1.1z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [\"triangle-circle-square\"], \"f61f\", \"M315.4 15.5C309.7 5.9 299.2 0 288 0s-21.7 5.9-27.4 15.5l-96 160c-5.9 9.9-6.1 22.2-.4 32.2s16.3 16.2 27.8 16.2H384c11.5 0 22.2-6.2 27.8-16.2s5.5-22.3-.4-32.2l-96-160zM288 312V456c0 22.1 17.9 40 40 40H472c22.1 0 40-17.9 40-40V312c0-22.1-17.9-40-40-40H328c-22.1 0-40 17.9-40 40zM128 512a128 128 0 1 0 0-256 128 128 0 1 0 0 256z\"]\n};\nvar faTriangleCircleSquare = faShapes;\nvar faPlaneTail = {\n prefix: 'fas',\n iconName: 'plane-tail',\n icon: [512, 512, [], \"e22c\", \"M61.5 308.8L.8 39C-3.7 19 11.5 0 32 0h76.9c17.3 0 33.9 7 46 19.5L384 256H488h24v24 24V464v24 24H488 267.7c-10.7 0-21.2-1.9-31.2-5.7L40.4 431.9C16.1 422.7 0 399.4 0 373.4c0-28.2 18.8-52.8 45.9-60.3l15.5-4.3zM216 352c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H216z\"]\n};\nvar faGaugeSimpleMax = {\n prefix: 'fas',\n iconName: 'gauge-simple-max',\n icon: [512, 512, [\"tachometer-fastest\"], \"f62b\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-3.7-.3-7.3-.9-10.8l117.5-72.8c11.3-7 14.7-21.8 7.8-33s-21.8-14.8-33-7.8L293.8 300.4C283.2 292.6 270.1 288 256 288c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faTachometerFastest = faGaugeSimpleMax;\nvar faCircleU = {\n prefix: 'fas',\n iconName: 'circle-u',\n icon: [512, 512, [], \"e127\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 168V288c0 35.3 28.7 64 64 64s64-28.7 64-64V168c0-13.3 10.7-24 24-24s24 10.7 24 24V288c0 61.9-50.1 112-112 112s-112-50.1-112-112V168c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faShieldSlash = {\n prefix: 'fas',\n iconName: 'shield-slash',\n icon: [640, 512, [], \"e24b\", \"M320 0c4.6 0 9.2 1 13.4 2.9L521.7 82.8c22 9.3 38.4 31 38.3 57.2c-.3 58.7-14.7 146.2-62.1 225L630.8 469.1c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L131 77.4 306.7 2.9C310.8 1 315.4 0 320 0zM80.6 159.5L437.5 440.7c-25.2 24-55.3 45.4-91.1 62.5c-16.7 8-36.1 8-52.8 0C132 425.8 86.1 261.5 80.6 159.5z\"]\n};\nvar faSquarePhoneHangup = {\n prefix: 'fas',\n iconName: 'square-phone-hangup',\n icon: [448, 512, [\"phone-square-down\"], \"e27a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM359.4 310c-5.3 8.6-16.8 12.3-26.7 8.5l-46.2-17.6c-8.7-3.3-14.1-11.6-13.1-20.3l2.9-26.7c-33.8-10.8-70.8-10.8-104.6 0l2.9 26.7c.9 8.7-4.4 16.9-13.1 20.3l-46.2 17.6c-9.9 3.8-21.4 .2-26.7-8.5L66.8 274.8C62 267 63.4 257.3 70.3 251c84.9-78.6 222.6-78.6 307.5 0c6.8 6.3 8.2 16.1 3.4 23.8L359.4 310z\"]\n};\nvar faPhoneSquareDown = faSquarePhoneHangup;\nvar faArrowUpLeft = {\n prefix: 'fas',\n iconName: 'arrow-up-left',\n icon: [384, 512, [], \"e09d\", \"M64 96c-17.7 0-32 14.3-32 32V352c0 17.7 14.3 32 32 32s32-14.3 32-32V205.3L297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L141.3 160H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z\"]\n};\nvar faTransporter1 = {\n prefix: 'fas',\n iconName: 'transporter-1',\n icon: [512, 512, [], \"e043\", \"M256 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM128 512c-17.7 0-32-14.3-32-32s14.3-32 32-32H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H296 216 128zM383.7 288c-9.3-.1-18.5-4.2-24.7-12l-31-38.7V288H184V237.3L153 276c-6.3 7.8-15.4 11.9-24.7 12H128v0c-7 0-14.1-2.3-20-7c-13.8-11.1-16-31.2-5-45l57.7-72c18.2-22.7 45.8-36 74.9-36h40.7c29.1 0 56.7 13.2 74.9 36L409 236c11 13.8 8.8 33.9-5 45c-5.9 4.7-13 7-20 7v0h-.3zm-327 38.6L64 352l25.4 7.3c3.9 1.1 6.6 4.7 6.6 8.7s-2.7 7.6-6.6 8.7L64 384l-7.3 25.4c-1.1 3.9-4.7 6.6-8.7 6.6s-7.6-2.7-8.7-6.6L32 384 6.6 376.7C2.7 375.6 0 372.1 0 368s2.7-7.6 6.6-8.7L32 352l7.3-25.4c1.1-3.9 4.7-6.6 8.7-6.6s7.6 2.7 8.7 6.6zM480 160l25.4 7.3c3.9 1.1 6.6 4.7 6.6 8.7s-2.7 7.6-6.6 8.7L480 192l-7.3 25.4c-1.1 3.9-4.7 6.6-8.7 6.6s-7.6-2.7-8.7-6.6L448 192l-25.4-7.3c-3.9-1.1-6.6-4.7-6.6-8.7s2.7-7.6 6.6-8.7L448 160l7.3-25.4c1.1-3.9 4.7-6.6 8.7-6.6s7.6 2.7 8.7 6.6L480 160zM176 320H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPeanuts = {\n prefix: 'fas',\n iconName: 'peanuts',\n icon: [640, 512, [129372], \"e431\", \"M299.2 38.9l22.6 50.7c-3.6 10.8-6.5 22.2-8.8 31.5l0 0 0 0 0 0c-1.2 4.6-2.2 8.8-3.1 12.1c-4.2 14.8-8.7 24.6-16.3 32.2s-17.4 12.1-32.2 16.3c-3.4 1-7.5 2-12.1 3.1l0 0c-12.5 3.1-28.5 7.1-42 12.7c-21.3 8.8-41.2 21.9-58.4 39.1C114.3 271.1 96 315.4 96 364v68c0 27.8 10.2 53.3 27 72.9l-3.2 1.4c-33.1 14.7-71.8-.2-86.6-33.2L10.5 422.2C3.8 407.2 .4 391.5 0 376c-.4-15.5 2.2-31.3 8-46.6C14 314 22.7 300.5 33.4 289.3c5.8-6.1 12.3-11.7 19.5-16.6c16.7-11.8 32.5-25.8 39.8-44.9s5-40.1 .4-60c-2.1-8.4-3.2-17-3.4-25.4c-.4-15.4 2.1-31.1 7.9-46.4l.2-.5c5.9-15.3 14.5-28.7 25.2-39.9c10.7-11.2 23.6-20.6 38.7-27.3L212.6 5.7c33.1-14.7 71.8 .1 86.6 33.2zM492 0h68c44.2 0 80 35.8 80 80v68c0 40.6-16.4 77.4-42.9 104.2l-.9 .9c-14.1 14-30.3 24.6-47.6 31.7c-9.5 4-19.6 6.9-30 8.8c-24.5 4.8-49.1 12.6-66.7 30.3s-25.4 42.2-30.3 66.7c-1.9 10.4-4.9 20.5-8.8 30c-7.1 17.1-17.5 33.2-31.3 47.2c-.6 .6-1.1 1.1-1.7 1.7C353.1 495.8 316.5 512 276 512H208c-44.2 0-80-35.8-80-80V364c0-20.1 4-39.2 11.2-56.7c7.2-17.5 17.9-33.8 32.1-48c14.2-14.2 30.6-24.9 48.1-32.1c9.5-4 19.6-6.9 30-8.8c24.5-4.8 49.1-12.6 66.7-30.3s25.4-42.2 30.3-66.7c1.9-10.4 4.9-20.5 8.8-30C362.4 74 373 57.8 387.1 43.6l.4-.4c14.2-14.1 30.5-24.8 47.8-32C452.8 4 471.9 0 492 0zm52 147.2a19.2 19.2 0 1 0 0-38.4 19.2 19.2 0 1 0 0 38.4zm0 64a19.2 19.2 0 1 0 0-38.4 19.2 19.2 0 1 0 0 38.4zm-64 0a19.2 19.2 0 1 0 0-38.4 19.2 19.2 0 1 0 0 38.4zm-224 224a19.2 19.2 0 1 0 0-38.4 19.2 19.2 0 1 0 0 38.4zM339.2 416a19.2 19.2 0 1 0 -38.4 0 19.2 19.2 0 1 0 38.4 0zm0-64a19.2 19.2 0 1 0 -38.4 0 19.2 19.2 0 1 0 38.4 0z\"]\n};\nvar faShuffle = {\n prefix: 'fas',\n iconName: 'shuffle',\n icon: [512, 512, [128256, \"random\"], \"f074\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160H352c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96h32V64c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V416H352c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8h32V320c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"]\n};\nvar faRandom = faShuffle;\nvar faPersonRunning = {\n prefix: 'fas',\n iconName: 'person-running',\n icon: [448, 512, [127939, \"running\"], \"f70c\", \"M320 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM125.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L137.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L238 299l30.9-82.4 5.1 12.3C289 264.7 323.9 288 362.7 288H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H362.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L57.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM91.2 352H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h69.6c19 0 36.2-11.2 43.9-28.5L157 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L91.2 352z\"]\n};\nvar faRunning = faPersonRunning;\nvar faMobileRetro = {\n prefix: 'fas',\n iconName: 'mobile-retro',\n icon: [320, 512, [], \"e527\", \"M0 64C0 28.7 28.7 0 64 0H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm64 96v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 352a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM128 48c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H128z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [192, 512, [], \"f7a5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64z\"]\n};\nvar faBinBottlesRecycle = {\n prefix: 'fas',\n iconName: 'bin-bottles-recycle',\n icon: [640, 512, [], \"e5f6\", \"M152 0c-13.3 0-24 10.7-24 24v8c-8.8 0-16 7.2-16 16s7.2 16 16 16H256c8.8 0 16-7.2 16-16s-7.2-16-16-16V24c0-13.3-10.7-24-24-24H152zM32 192H352c0-26.5-10.7-50.5-28.1-67.9c-1.1-1.1-2.1-2.1-3.2-3.1c-17.1-15.5-39.7-25-64.6-25H128c-53 0-96 43-96 96zm352 0H575.1c-1.2-9.7-4.6-18.7-9.6-26.5c6.4-9.5 10.1-21 10.1-33.3c0-23.2-13.4-44.3-34.4-54.2L528 71.8c-5.3-2.5-10.8-4.4-16.4-5.7V24c0-13.3-10.7-24-24-24h-80c-13.3 0-24 10.7-24 24V66.1c-5.6 1.3-11.1 3.2-16.4 5.7L354.1 78c-7.2 3.4-13.5 8-18.6 13.6C365 115.1 384 151.3 384 192zM32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32L56.2 457c4.5 31.5 31.5 55 63.4 55h401c31.8 0 58.9-23.4 63.4-55L608 288c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM308.5 326.1l-7.6 11.4c-4.8 7.2-14.5 9.3-21.8 4.7c-7.6-4.8-9.8-14.9-4.8-22.4l7.6-11.4c8.5-12.7 22.8-20.4 38.1-20.4c15.4 0 29.8 7.7 38.2 20.6l8.5 12.9c4.9 7.5 2.7 17.6-4.9 22.4c-7.4 4.6-17.1 2.5-21.8-4.8l-8.5-12.9c-2.6-3.9-6.9-6.2-11.5-6.2c-4.6 0-8.9 2.3-11.5 6.1zm-43.1 64.7l-7.9 11.9c-.9 1.4-1.4 3.1-1.4 4.7c0 4.7 3.8 8.6 8.6 8.6h25.2c8.8 0 16 7.2 16 16s-7.2 16-16 16H264.6c-22.4 0-40.6-18.2-40.6-40.6c0-8 2.4-15.8 6.8-22.5l7.9-11.9c4.8-7.2 14.5-9.3 21.8-4.7c7.6 4.8 9.8 14.9 4.8 22.4zM353.7 416h20.9c4.8 0 8.6-3.9 8.6-8.6c0-1.7-.5-3.3-1.4-4.7l-6.6-10.1c-4.9-7.5-2.7-17.6 4.9-22.4c7.4-4.6 17.1-2.5 21.8 4.8l6.6 10.1c4.4 6.6 6.7 14.4 6.7 22.4c0 22.4-18.2 40.6-40.6 40.6H353.7c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faArrowUpFromSquare = {\n prefix: 'fas',\n iconName: 'arrow-up-from-square',\n icon: [512, 512, [], \"e09c\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3V320c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96zM64 112c0-8.8 7.2-16 16-16h8c17.7 0 32-14.3 32-32s-14.3-32-32-32H80C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H432c44.2 0 80-35.8 80-80V112c0-44.2-35.8-80-80-80h-8c-17.7 0-32 14.3-32 32s14.3 32 32 32h8c8.8 0 16 7.2 16 16V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112z\"]\n};\nvar faFileDashedLine = {\n prefix: 'fas',\n iconName: 'file-dashed-line',\n icon: [640, 512, [\"page-break\"], \"f877\", \"M128 64c0-35.3 28.7-64 64-64H352V128c0 17.7 14.3 32 32 32H512v96H128V64zm0 304H512v80c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64V368zM512 128H384V0L512 128zM56 288H168c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zm224 0h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H280c-13.3 0-24-10.7-24-24s10.7-24 24-24zm192 0H584c13.3 0 24 10.7 24 24s-10.7 24-24 24H472c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faPageBreak = faFileDashedLine;\nvar faBracketCurlyRight = {\n prefix: 'fas',\n iconName: 'bracket-curly-right',\n icon: [256, 512, [], \"7d\", \"M192 128c0-53-43-96-96-96H64C46.3 32 32 46.3 32 64s14.3 32 32 32H96c17.7 0 32 14.3 32 32v37.5c0 25.5 10.1 49.9 28.1 67.9L178.7 256l-22.6 22.6c-18 18-28.1 42.4-28.1 67.9V384c0 17.7-14.3 32-32 32H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H96c53 0 96-43 96-96V346.5c0-8.5 3.4-16.6 9.4-22.6l45.3-45.3c12.5-12.5 12.5-32.8 0-45.3l-45.3-45.3c-6-6-9.4-14.1-9.4-22.6V128z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [512, 512, [128375], \"f717\", \"M158.4 32.6c4.8-12.4-1.4-26.3-13.8-31s-26.3 1.4-31 13.8L81.1 100c-7.9 20.7-3 44.1 12.7 59.7l57.4 57.4L70.8 190.3c-2.4-.8-4.3-2.7-5.1-5.1L46.8 128.4C42.6 115.8 29 109 16.4 113.2S-3 131 1.2 143.6l18.9 56.8c5.6 16.7 18.7 29.8 35.4 35.4L116.1 256 55.6 276.2c-16.7 5.6-29.8 18.7-35.4 35.4L1.2 368.4C-3 381 3.8 394.6 16.4 398.8s26.2-2.6 30.4-15.2l18.9-56.8c.8-2.4 2.7-4.3 5.1-5.1l80.4-26.8L93.7 352.3C78.1 368 73.1 391.4 81.1 412l32.5 84.6c4.8 12.4 18.6 18.5 31 13.8s18.5-18.6 13.8-31l-32.5-84.6c-1.1-3-.4-6.3 1.8-8.5L160 353.9c1 52.1 43.6 94.1 96 94.1s95-41.9 96-94.1l32.3 32.3c2.2 2.2 2.9 5.6 1.8 8.5l-32.5 84.6c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8L430.9 412c7.9-20.7 3-44.1-12.7-59.7l-57.4-57.4 80.4 26.8c2.4 .8 4.3 2.7 5.1 5.1l18.9 56.8c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-18.9-56.8c-5.6-16.7-18.7-29.8-35.4-35.4L395.9 256l60.5-20.2c16.7-5.6 29.8-18.7 35.4-35.4l18.9-56.8c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-18.9 56.8c-.8 2.4-2.7 4.3-5.1 5.1l-80.4 26.8 57.4-57.4c15.6-15.6 20.6-39 12.7-59.7L398.4 15.4C393.6 3 379.8-3.2 367.4 1.6s-18.5 18.6-13.8 31l32.5 84.6c1.1 3 .4 6.3-1.8 8.5L336 174.1V160c0-31.8-18.6-59.3-45.5-72.2c-9.1-4.4-18.5 3.3-18.5 13.4V112c0 8.8-7.2 16-16 16s-16-7.2-16-16V101.2c0-10.1-9.4-17.7-18.5-13.4C194.6 100.7 176 128.2 176 160v14.1l-48.3-48.3c-2.2-2.2-2.9-5.6-1.8-8.5l32.5-84.6z\"]\n};\nvar faClockThree = {\n prefix: 'fas',\n iconName: 'clock-three',\n icon: [512, 512, [], \"e356\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120V256c0 13.3 10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faHandsBound = {\n prefix: 'fas',\n iconName: 'hands-bound',\n icon: [640, 512, [], \"e4f9\", \"M96 32C96 14.3 81.7 0 64 0S32 14.3 32 32V96v59.1 .7V192v21.9c0 14.2 5.1 27.9 14.3 38.7L131.6 352H128c-13.3 0-24 10.7-24 24s10.7 24 24 24h32H288h64H480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24h-3.6l85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7V192 155.8v-.7V96 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V96v48.8l-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8c-9.7-5.7-12.1-18.7-5.1-27.5L473 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C361 209.7 352 233.4 352 258.1V320v32H288V320 258.1c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2s-15.2 30.9-4.4 44.5l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5c-8.1 4.8-18.6 2.7-24.2-4.8L96 144.8V96 32zm64 448v32H288V480h64v32H480V480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H480 352 288 160 128c-13.3 0-24 10.7-24 24s10.7 24 24 24h32z\"]\n};\nvar faScalpelLineDashed = {\n prefix: 'fas',\n iconName: 'scalpel-line-dashed',\n icon: [576, 512, [\"scalpel-path\"], \"f61e\", \"M441.4 0c-20.8 0-40.6 9.2-54 25.1L187.8 261.7c-4 4.8-4.9 11.4-2.3 17.1s8.3 9.3 14.5 9.3H332.6c14.1 0 27.6-6.2 36.7-17L494.4 122.7C505.8 109.2 512 92.2 512 74.6v-4C512 31.6 480.4 0 441.4 0zM164.7 324.7l-160 160c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9c18.1 0 84.1-8.4 145.9-33.1C222.5 454.6 288 410.9 288 336V320H272 176h-6.6l-4.7 4.7zM304 480H240c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H368zm128 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H496z\"]\n};\nvar faScalpelPath = faScalpelLineDashed;\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16v17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1 0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1V440c0 8.8-7.2 16-16 16s-16-7.2-16-16V422.2c-11.2-2.1-21.7-5.7-30.9-8.9l0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4l0 0 0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7V232c0-8.8 7.2-16 16-16z\"]\n};\nvar faPipeSmoking = {\n prefix: 'fas',\n iconName: 'pipe-smoking',\n icon: [640, 512, [], \"e3c4\", \"M575.2 64c-32.1 0-62.1 16-79.9 42.7l-61.8 92.7c-3.9-4.8-8.6-9.1-14-12.7l-24-16c-4.7-3.2-9.7-5.6-14.9-7.4L442 71.2C471.7 26.7 521.7 0 575.2 0H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H575.2zM333.4 206.2c9.8-14.7 29.7-18.7 44.4-8.9l24 16c14.7 9.8 18.7 29.7 8.9 44.4L287.8 442.1C258.6 485.8 209.6 512 157.1 512C70.3 512 0 441.7 0 354.9V272c0-26.5 21.5-48 48-48H208c26.5 0 48 21.5 48 48v50.3l77.4-116.1z\"]\n};\nvar faFaceAstonished = {\n prefix: 'fas',\n iconName: 'face-astonished',\n icon: [512, 512, [], \"e36b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-208c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48s-48-21.5-48-48V352c0-26.5 21.5-48 48-48zM144.4 224a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM192 128c-4.4 0-8.8 .3-13 .9c-21.2 2.8-40.6 12.4-56.1 26.8c-6.5 6-16.6 5.7-22.6-.8s-5.7-16.6 .8-22.6c20.1-18.7 45.5-31.5 73.7-35.2c5.6-.7 11.4-1.1 17.2-1.1c8.8 0 16 7.2 16 16s-7.2 16-16 16zm141 .9c-4.3-.6-8.6-.9-13-.9c-8.8 0-16-7.2-16-16s7.2-16 16-16c5.8 0 11.6 .4 17.2 1.1c28.2 3.7 53.7 16.4 73.7 35.2c6.5 6 6.8 16.2 .8 22.6s-16.2 6.8-22.6 .8c-15.5-14.5-34.8-24-56.1-26.8z\"]\n};\nvar faWindow = {\n prefix: 'fas',\n iconName: 'window',\n icon: [512, 512, [], \"f40e\", \"M512 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96zM96 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM288 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faPlaneCircleExclamation = {\n prefix: 'fas',\n iconName: 'plane-circle-exclamation',\n icon: [640, 512, [], \"e556\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faEar = {\n prefix: 'fas',\n iconName: 'ear',\n icon: [384, 512, [128066], \"f5f0\", \"M319.9 335.2c-18.2 16.3-30 39.1-35.1 62.9c-5.6 26.3-18.6 51.3-39 71.7c-56.2 56.2-147.4 56.2-203.6 0C14.1 441.7 0 404.9 0 368V192C0 86 86 0 192 0S384 86 384 192c0 56.9-24.8 108-64.1 143.2zM128 192c0-35.3 28.7-64 64-64s64 28.7 64 64v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8c0-61.9-50.1-112-112-112S80 130.1 80 192v20.2c0 21.2 12 40.6 31 50.1l14 7c1.8 .9 3 2.8 3 4.9c0 1.6-.7 3.2-2 4.2L88.6 309.6c-10.2 8.5-11.6 23.6-3.1 33.8s23.6 11.6 33.8 3.1l37.4-31.2C169 305.1 176 290.1 176 274.2c0-20.2-11.4-38.8-29.5-47.8l-14-7c-2.7-1.4-4.4-4.1-4.4-7.2V192z\"]\n};\nvar faFileLock = {\n prefix: 'fas',\n iconName: 'file-lock',\n icon: [576, 512, [], \"e3a6\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v33.6c-19.8 20.2-32 47.9-32 78.4v24.6c-19.1 11.1-32 31.7-32 55.4V480c0 11.4 3 22.2 8.3 31.5c-2.7 .3-5.5 .5-8.3 .5H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm80 112c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faDiagramVenn = {\n prefix: 'fas',\n iconName: 'diagram-venn',\n icon: [640, 512, [], \"e15a\", \"M256 412.8C216.4 372.4 192 317 192 256s24.4-116.4 64-156.8C245.7 97.1 235 96 224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c11 0 21.7-1.1 32-3.2zm64 45.7c-29.1 13.8-61.6 21.6-96 21.6C100.3 480 0 379.7 0 256S100.3 32 224 32c34.4 0 66.9 7.7 96 21.6C349.1 39.7 381.6 32 416 32c123.7 0 224 100.3 224 224s-100.3 224-224 224c-34.4 0-66.9-7.7-96-21.6zM370.7 192H269.3c-6.5 14.9-10.8 31.1-12.5 48H383.2c-1.7-16.9-6-33.1-12.5-48zM269.3 320H370.7c6.5-14.9 10.8-31.1 12.5-48H256.8c1.7 16.9 6 33.1 12.5 48zM288 352c9.1 12.1 19.9 22.9 32 32c12.1-9.1 22.9-19.9 32-32H288zm64-192c-9.1-12.1-19.9-22.9-32-32c-12.1 9.1-22.9 19.9-32 32h64z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [512, 512, [], \"f497\", \"M0 64C0 46.3 14.3 32 32 32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V96C14.3 96 0 81.7 0 64zM256 96c-8.8 0-16 7.2-16 16v32H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48H128c-8.8 0-16 7.2-16 16s7.2 16 16 16H240v70.6L189.1 307c-5.2-2-10.6-3-16.2-3h-2.1c-23.6 0-42.8 19.2-42.8 42.8c0 9.6 3.2 18.9 9.1 26.4l18.2 23.2c9.7 12.4 24.6 19.6 40.3 19.6H316.4c15.7 0 30.6-7.2 40.3-19.6l18.2-23.2c5.9-7.5 9.1-16.8 9.1-26.4c0-23.6-19.2-42.8-42.8-42.8H339c-5.5 0-11 1-16.2 3L272 326.6V256H384c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V176h80c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16zM208 352a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm80 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faGoalNet = {\n prefix: 'fas',\n iconName: 'goal-net',\n icon: [640, 512, [], \"e3ab\", \"M64 128c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V128c0-53-43-96-96-96H96C43 32 0 75 0 128V448c0 17.7 14.3 32 32 32s32-14.3 32-32V128zm112 0c-8.8 0-16 7.2-16 16v48H112c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v64H112c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v64H112c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V416h64v48c0 8.8 7.2 16 16 16s16-7.2 16-16V416h64v48c0 8.8 7.2 16 16 16s16-7.2 16-16V416h64v48c0 8.8 7.2 16 16 16s16-7.2 16-16V416h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H480V320h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H480V224h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H480V144c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H384V144c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H288V144c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H192V144c0-8.8-7.2-16-16-16zm80 256H192V320h64v64zm96 0H288V320h64v64zm96 0H384V320h64v64zm0-96H384V224h64v64zm-96 0H288V224h64v64zm-96 0H192V224h64v64z\"]\n};\nvar faCoffinCross = {\n prefix: 'fas',\n iconName: 'coffin-cross',\n icon: [384, 512, [], \"e051\", \"M102.4 10.9l-91 104C4.1 123.3 0 134.2 0 145.4c0 4.4 .6 8.7 1.8 12.9L97.3 488.9c4 13.7 16.5 23.1 30.7 23.1H255.9c14.3 0 26.8-9.4 30.7-23.1l95.5-330.6c1.2-4.2 1.8-8.5 1.8-12.9c0-11.2-4.1-22.1-11.5-30.6l-91-104C275.5 4 266.7 0 257.5 0h-131c-9.2 0-18 4-24.1 10.9zM216 120v40h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H216V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V208H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h48V120c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M112 0C99.1 0 87.4 7.8 82.5 19.7l-66.7 160-13.3 32c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L66.7 224h90.7l5.1 12.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-13.3-32-66.7-160C136.6 7.8 124.9 0 112 0zm18.7 160H93.3L112 115.2 130.7 160zM256 32v96 96c0 17.7 14.3 32 32 32h80c44.2 0 80-35.8 80-80c0-23.1-9.8-43.8-25.4-58.4c6-11.2 9.4-24 9.4-37.6c0-44.2-35.8-80-80-80H288c-17.7 0-32 14.3-32 32zm96 64H320V64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-32 64h32 16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320V160zM566.6 310.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L352 434.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l192-192z\"]\n};\nvar faLocationXmark = {\n prefix: 'fas',\n iconName: 'location-xmark',\n icon: [384, 512, [\"map-marker-times\", \"map-marker-xmark\"], \"f60e\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM111 111c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faMapMarkerTimes = faLocationXmark;\nvar faMapMarkerXmark = faLocationXmark;\nvar faCircleQuarterStroke = {\n prefix: 'fas',\n iconName: 'circle-quarter-stroke',\n icon: [512, 512, [], \"e5d3\", \"M64 256l160 0c17.7 0 32-14.3 32-32l0-160c106 0 192 86 192 192s-86 192-192 192S64 362 64 256zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256z\"]\n};\nvar faLasso = {\n prefix: 'fas',\n iconName: 'lasso',\n icon: [576, 512, [], \"f8c8\", \"M576 176c0 97.2-128.9 176-288 176c-13.2 0-26.3-.5-39-1.6c4.6 12.8 7 26.5 7 40.6c0 66.8-54.2 121-121 121H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h71c31.5 0 57-25.5 57-57c0-21.6-12.2-41.3-31.5-51l-46.8-23.4 .2-.4C44.7 284.1 0 233.2 0 176C0 78.8 128.9 0 288 0S576 78.8 576 176zM288 288c123.7 0 224-50.1 224-112s-100.3-112-224-112S64 114.1 64 176s100.3 112 224 112z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z\"]\n};\nvar faPersonToPortal = {\n prefix: 'fas',\n iconName: 'person-to-portal',\n icon: [512, 512, [\"portal-enter\"], \"e022\", \"M272 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM163.2 160c-14.1 0-27.5 5.6-37.5 15.5l-23.1 23.1c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l23.1-23.1C102.4 108.3 132.2 96 163.2 96c11.7 0 23.3 1.7 34.4 5.2l48.7 15c36.4 11.2 65.9 38 80.5 73.1l6.3 15c3.6 8.7 10.9 15.2 19.6 18.1C357.8 96.9 391.4 0 432 0c44.2 0 80 114.6 80 256s-35.8 256-80 256c-40.9 0-74.6-98-79.4-224.5c-34.6-3.6-64.9-25.9-78.5-58.5l-5.1-12.3L238 299l56.7 35.4c18.1 11.3 26.6 33.3 20.7 53.9L286.8 488.8c-4.9 17-22.6 26.8-39.6 22s-26.8-22.6-22-39.6l25.4-88.8-86.2-53.9c-25.1-15.7-36.1-46.5-26.8-74.5l31.2-93.7c-1.9-.2-3.7-.3-5.6-.3zM109.5 310.7c7.4 18.1 20.4 33.9 37.9 44.9l9.5 6-11.5 25.9c-7.7 17.3-24.9 28.5-43.9 28.5H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H91.2l18.3-41.3z\"]\n};\nvar faPortalEnter = faPersonToPortal;\nvar faCalendarStar = {\n prefix: 'fas',\n iconName: 'calendar-star',\n icon: [512, 512, [], \"f736\", \"M160 0c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H32V112c0-26.5 21.5-48 48-48h48V32c0-17.7 14.3-32 32-32zM32 192H480V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V192zm233.3 58.9c-3.8-7.7-14.8-7.7-18.7 0l-23.6 47.8-52.7 7.7c-8.5 1.2-11.9 11.7-5.8 17.7l38.2 37.2-9 52.5c-1.5 8.5 7.5 15 15.1 11L256 400l47.2 24.8c7.6 4 16.5-2.5 15.1-11l-9-52.5 38.2-37.2c6.2-6 2.8-16.5-5.8-17.7l-52.7-7.7-23.6-47.8z\"]\n};\nvar faComputerMouse = {\n prefix: 'fas',\n iconName: 'computer-mouse',\n icon: [384, 512, [128433, \"mouse\"], \"f8cc\", \"M0 192H176V0H160C71.6 0 0 71.6 0 160v32zm0 32V352c0 88.4 71.6 160 160 160h64c88.4 0 160-71.6 160-160V224H192 0zm384-32V160C384 71.6 312.4 0 224 0H208V192H384z\"]\n};\nvar faMouse = faComputerMouse;\nvar faArrowRightToBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-to-bracket',\n icon: [512, 512, [\"sign-in\"], \"f090\", \"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faSignIn = faArrowRightToBracket;\nvar faPegasus = {\n prefix: 'fas',\n iconName: 'pegasus',\n icon: [576, 512, [], \"f703\", \"M448 238.1V160h16l9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1V80c0-19.1-8.4-36.3-21.7-48H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H480 448C378.4 0 321.7 55.6 320 124.8L184.9 34.7c-4.9-3.3-11.2-3.6-16.4-.8s-8.5 8.2-8.5 14.1c0 48.1 3.8 99.9 26 139.8c9.2 16.6 21.7 31.3 38.2 42.7c-7.2-2.5-14-5.4-20.3-8.8c-22.5-12.1-38.6-29.4-49.9-49.8c-7.3-13.2-12.7-27.8-16.5-43c-25.9 3.5-48.1 18.6-61.1 40C33.2 174.5 0 211.4 0 256v56c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9h33.7c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8V480c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V315.7c19.2-19.2 31.5-45.7 32-75.7h0v-1.9zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faFilesMedical = {\n prefix: 'fas',\n iconName: 'files-medical',\n icon: [448, 512, [], \"f7fd\", \"M160 0H320V96c0 17.7 14.3 32 32 32h96V352c0 35.3-28.7 64-64 64H160c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64zM416 64l32 32H402.7 384 352V64 45.3 0l32 32 32 32zM24 96c13.3 0 24 10.7 24 24V376c0 48.6 39.4 88 88 88H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H136C60.9 512 0 451.1 0 376V120c0-13.3 10.7-24 24-24zm216 80v48H192c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V288h48c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H304V176c0-8.8-7.2-16-16-16H256c-8.8 0-16 7.2-16 16z\"]\n};\nvar faNfcLock = {\n prefix: 'fas',\n iconName: 'nfc-lock',\n icon: [576, 512, [], \"e1f8\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64v65.1c-24.9 3.6-47.2 15.3-64 32.5V144c0-26.5-21.5-48-48-48H256c-26.5 0-48 21.5-48 48v66.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V144c0-8.8 7.2-16 16-16h80c8.8 0 16 7.2 16 16V272v24.6c-19.1 11.1-32 31.7-32 55.4v32H112c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112c-26.5 0-48 21.5-48 48V368c0 26.5 21.5 48 48 48H320v64H64c-35.3 0-64-28.7-64-64V96zM464 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faPersonSkiLift = {\n prefix: 'fas',\n iconName: 'person-ski-lift',\n icon: [512, 512, [\"ski-lift\"], \"f7c8\", \"M240 0c8.8 0 16 7.2 16 16V198.3l-32 8.5V16c0-8.8 7.2-16 16-16zM64 80a48 48 0 1 1 96 0A48 48 0 1 1 64 80zm36.4 138c-14.2-30.8 8.3-66 42.2-66c18.2 0 34.8 10.7 42.3 27.3l28.8 63.4 55.9-14.9c25.4-6.8 50.3 12.4 50.3 38.6V388.5L443.1 343c12.6-4.6 20.9-16.6 20.9-30v-1c0-13.3 10.7-24 24-24s24 10.7 24 24v1c0 33.5-20.9 63.4-52.3 75L128.3 510.5c-12.4 4.6-26.2-1.8-30.8-14.2s1.8-26.2 14.2-30.8L256 412.2V297.7l-66.7 17.8c-22.6 6-46.2-5.1-56-26.3L100.4 218zM45.7 189.6l65 135.8c8.3 17.4 28 26.4 46.6 21.3l36.5-9.9c12.8-3.5 26 4.1 29.5 16.8s-4.1 26-16.8 29.5l-36.5 9.9c-41 11.2-84.2-8.6-102.5-46.9L2.3 210.4c-5.7-12-.7-26.3 11.3-32s26.3-.7 32 11.3z\"]\n};\nvar faSkiLift = faPersonSkiLift;\nvar faSquare6 = {\n prefix: 'fas',\n iconName: 'square-6',\n icon: [448, 512, [], \"e25b\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM224 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm-96 48c0 53 43 96 96 96s96-43 96-96c0-44-29.6-81.1-70-92.4l29.6-25.4c10.1-8.6 11.2-23.8 2.6-33.8s-23.8-11.2-33.8-2.6l-81.6 70C142.2 224.8 128 255.6 128 288z\"]\n};\nvar faShopSlash = {\n prefix: 'fas',\n iconName: 'shop-slash',\n icon: [640, 512, [\"store-alt-slash\"], \"e070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43V224H512V376L384 275.7V224H320v1.5L277.2 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L74.1 32.8 38.8 5.1zM36.8 192h85L21 112.5 6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM320 384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V398.5l-64-50.4V384z\"]\n};\nvar faStoreAltSlash = faShopSlash;\nvar faWindTurbine = {\n prefix: 'fas',\n iconName: 'wind-turbine',\n icon: [512, 512, [], \"f89b\", \"M315.7 414.8c9.1 14.8 32 6.5 29.5-10.7L316.8 212c-.5-3.4 .1-6.9 1.8-9.9L411 31.2c8.3-15.3-10.4-31-24-20.1L234.7 131.7c-2.7 2.1-6 3.4-9.5 3.5L31.1 140.6C13.7 141 9.5 165 25.7 171.4l180.6 71.5c3.2 1.3 5.9 3.5 7.7 6.5L315.7 414.8zM224 326.8V464H152c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H288V430.8l-64-104zM256 168a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faSlidersSimple = {\n prefix: 'fas',\n iconName: 'sliders-simple',\n icon: [512, 512, [], \"e253\", \"M96 320a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm90.5 0L480 320c17.7 0 32 14.3 32 32s-14.3 32-32 32l-293.5 0c-13.2 37.3-48.7 64-90.5 64c-53 0-96-43-96-96s43-96 96-96c41.8 0 77.4 26.7 90.5 64zM384 160a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm-58.5-32c13.2-37.3 48.7-64 90.5-64c53 0 96 43 96 96s-43 96-96 96c-41.8 0-77.4-26.7-90.5-64L32 192c-17.7 0-32-14.3-32-32s14.3-32 32-32l293.5 0z\"]\n};\nvar faGridRound = {\n prefix: 'fas',\n iconName: 'grid-round',\n icon: [448, 512, [], \"e5da\", \"M128 96A64 64 0 1 1 0 96a64 64 0 1 1 128 0zm0 160A64 64 0 1 1 0 256a64 64 0 1 1 128 0zM64 480a64 64 0 1 1 0-128 64 64 0 1 1 0 128zM288 96A64 64 0 1 1 160 96a64 64 0 1 1 128 0zM224 320a64 64 0 1 1 0-128 64 64 0 1 1 0 128zm64 96a64 64 0 1 1 -128 0 64 64 0 1 1 128 0zm96-256a64 64 0 1 1 0-128 64 64 0 1 1 0 128zm64 96a64 64 0 1 1 -128 0 64 64 0 1 1 128 0zM384 480a64 64 0 1 1 0-128 64 64 0 1 1 0 128z\"]\n};\nvar faBadgeSheriff = {\n prefix: 'fas',\n iconName: 'badge-sheriff',\n icon: [448, 512, [], \"f8a2\", \"M272 48c0 14.8-6.7 28-17.2 36.8l25 42.8c5.7 9.8 16.2 15.8 27.5 15.9l47.6 .2c6.7-18.5 24.4-31.7 45.2-31.7c26.5 0 48 21.5 48 48s-21.5 48-48 48c-5.9 0-11.6-1.1-16.9-3.1L363 240.1c-5.6 9.8-5.6 21.9 0 31.8l20.1 35.2c5.3-2 10.9-3.1 16.9-3.1c26.5 0 48 21.5 48 48s-21.5 48-48 48c-20.8 0-38.5-13.2-45.2-31.7l-47.6 .2c-11.3 0-21.8 6.1-27.5 15.9l-25 42.8c10.5 8.8 17.2 22 17.2 36.8c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-14.8 6.7-28 17.2-36.8l-25-42.8c-5.7-9.8-16.2-15.8-27.5-15.9l-47.6-.2C86.5 386.8 68.8 400 48 400c-26.5 0-48-21.5-48-48s21.5-48 48-48c5.9 0 11.6 1.1 16.9 3.1L85 271.9c5.6-9.8 5.6-21.9 0-31.8L64.9 204.9c-5.3 2-10.9 3.1-16.9 3.1c-26.5 0-48-21.5-48-48s21.5-48 48-48c20.8 0 38.5 13.2 45.2 31.7l47.6-.2c11.3 0 21.8-6.1 27.5-15.9l25-42.8C182.7 76 176 62.8 176 48c0-26.5 21.5-48 48-48s48 21.5 48 48zM224 320a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faVirusCovidSlash = {\n prefix: 'fas',\n iconName: 'virus-covid-slash',\n icon: [640, 512, [], \"e4a9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c11.4-19.5 19.1-41.4 22.3-64.7H528v16c0 13.3 10.7 24 24 24s24-10.7 24-24V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v16H494.4c-4.2-30.7-16.3-58.8-34.1-82.3L484 125.9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L472.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L450.1 92l-23.8 23.8C402.8 97.9 374.7 85.8 344 81.6V48h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h16V81.6c-30.7 4.2-58.8 16.3-82.3 34.1L189.9 92l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L134.1 79.8 38.8 5.1zM149.2 213.5c-1.5 6-2.7 12.2-3.5 18.5H112V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V280h33.6c4.2 30.7 16.3 58.8 34.1 82.3L156 386.1l-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L189.9 420l23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1V464H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2L149.2 213.5z\"]\n};\nvar faIntersection = {\n prefix: 'fas',\n iconName: 'intersection',\n icon: [384, 512, [8898], \"f668\", \"M32 480c17.7 0 32-14.3 32-32V224c0-70.7 57.3-128 128-128s128 57.3 128 128V448c0 17.7 14.3 32 32 32s32-14.3 32-32V224c0-106-86-192-192-192S0 118 0 224V448c0 17.7 14.3 32 32 32z\"]\n};\nvar faShopLock = {\n prefix: 'fas',\n iconName: 'shop-lock',\n icon: [640, 512, [], \"e4a5\", \"M36.8 192H449.6c20.2-19.8 47.9-32 78.4-32c30.5 0 58.1 12.2 78.3 31.9c18.9-1.6 33.7-17.4 33.7-36.7c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM384 224H320V384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 352 224zm144 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faFamily = {\n prefix: 'fas',\n iconName: 'family',\n icon: [512, 512, [], \"e300\", \"M128 0a64 64 0 1 1 0 128A64 64 0 1 1 128 0zM105.6 160h44.8c9.2 0 18.1 1.6 26.4 4.5c-.5 3.8-.8 7.6-.8 11.5c0 24.3 10.9 46.1 28 60.8c-35.7 18.7-60 56.1-60 99.2v16c0 28.4 12.4 54 32 71.6V480c0 6.1 .8 11.9 2.4 17.5c-8.7 9-20.9 14.5-34.4 14.5H112c-26.5 0-48-21.5-48-48V348.3c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3C29.3 191.9 64 160 105.6 160zM368 512c-13.5 0-25.7-5.6-34.4-14.5c1.6-5.6 2.4-11.4 2.4-17.5V423.6c19.6-17.6 32-43.1 32-71.6V336c0-43.1-24.3-80.5-60-99.2c17.1-14.7 28-36.5 28-60.8c0-2.4-.1-4.7-.3-7.1c9.6-5.7 20.8-8.9 32.6-8.9h31.4c28.6 0 53.7 18.9 61.5 46.4l39.1 136.8c5.8 20.4-9.5 40.8-30.8 40.8H448v80c0 26.5-21.5 48-48 48H368zM384 0a64 64 0 1 1 0 128A64 64 0 1 1 384 0zM256 128a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128c44.2 0 80 35.8 80 80v16c0 23.7-12.9 44.4-32 55.4V480c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V407.4c-19.1-11.1-32-31.7-32-55.4V336c0-44.2 35.8-80 80-80z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [\"hourglass-1\"], \"f251\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM288 437v11H96V437c0-25.5 10.1-49.9 28.1-67.9L192 301.3l67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"]\n};\nvar faHourglass1 = faHourglassStart;\nvar faUserHairBuns = {\n prefix: 'fas',\n iconName: 'user-hair-buns',\n icon: [448, 512, [], \"e3d3\", \"M304 128v16c0 44.2-35.8 80-80 80s-80-35.8-80-80V128c0-5.5 .6-10.8 1.6-16H160c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32h14.4c1 5.2 1.6 10.5 1.6 16zM84 192c7 0 13.7-1.6 19.6-4.6c17.8 49.3 65 84.6 120.4 84.6s102.7-35.3 120.4-84.6c5.9 2.9 12.5 4.6 19.6 4.6c24.3 0 44-19.7 44-44V108c0-24.3-19.7-44-44-44c-9.3 0-17.9 2.9-25 7.8C318.2 29.3 274.5 0 224 0s-94.2 29.3-115 71.8C101.9 66.9 93.3 64 84 64c-24.3 0-44 19.7-44 44v40c0 24.3 19.7 44 44 44zm77.3 128C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7H417.3c17 0 30.7-13.8 30.7-30.7C448 392.2 375.8 320 286.7 320H161.3z\"]\n};\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M224 352L196.8 52.3C194.2 24.2 216.3 0 244.6 0H534.1c21.1 0 36.4 20.1 30.9 40.4L558.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H549.8l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H523.6l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L480 352H224zm-16 32H496c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM147.5 30.7c10.8 6.7 15.3 21 10.6 33.4l-22 57.8c-4.2 10.9-14.5 17.6-25.3 16.4l-33.3-3.6c-13.6 42.2-13.6 88.4 0 130.7l33.3-3.6c10.9-1.2 21.2 5.5 25.3 16.4l22 57.8c4.7 12.4 .2 26.7-10.6 33.4l-44 27.2c-9.7 6-21.9 4.2-29.8-4.3C-24.6 286-24.6 114 73.7 7.8C81.6-.7 93.8-2.5 103.5 3.5l44 27.2z\"]\n};\nvar faHourglassClock = {\n prefix: 'fas',\n iconName: 'hourglass-clock',\n icon: [576, 512, [], \"e41b\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h10.8C285.6 480.1 256 427.5 256 368c0-27.2 6.2-53 17.2-76l-36-36 67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 19-5.6 37.4-16 53H112c-10.3-15.6-16-34-16-53zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM432 288c8.8 0 16 7.2 16 16v48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16z\"]\n};\nvar faPersonSeatReclined = {\n prefix: 'fas',\n iconName: 'person-seat-reclined',\n icon: [512, 512, [], \"e21f\", \"M176 128a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm89 160l-8-32h63c17.7 0 32-14.3 32-32s-14.3-32-32-32H240.8c-6.6-19-24.5-32-44.9-32c-30.9 0-53.6 29.1-46.1 59l21.1 84.5C178 332 203.6 352 233 352h6.3c.5 0 .9 0 1.4 0h78.1c6.7 0 12.6 4.1 15 10.4L370 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9H265zM95.5 154.1c-3.3-17.4-20-28.8-37.3-25.6s-28.8 20-25.6 37.3L65.9 343.6C77.2 404.1 130.1 448 191.7 448H272c17.7 0 32-14.3 32-32s-14.3-32-32-32H191.7c-30.8 0-57.2-21.9-62.9-52.2L95.5 154.1z\"]\n};\nvar faPaperPlaneTop = {\n prefix: 'fas',\n iconName: 'paper-plane-top',\n icon: [512, 512, [\"paper-plane-alt\", \"send\"], \"e20a\", \"M49.9 27.8C15.1 12.7-19.2 50.1-1.2 83.5L68.1 212.2c4.4 8.3 12.6 13.8 21.9 15c0 0 0 0 0 0l176 22c3.4 .4 6 3.3 6 6.7s-2.6 6.3-6 6.7l-176 22s0 0 0 0c-9.3 1.2-17.5 6.8-21.9 15L-1.2 428.5c-18 33.4 16.3 70.8 51.1 55.7L491.8 292.7c32.1-13.9 32.1-59.5 0-73.4L49.9 27.8z\"]\n};\nvar faPaperPlaneAlt = faPaperPlaneTop;\nvar faSend = faPaperPlaneTop;\nvar faMessageArrowUp = {\n prefix: 'fas',\n iconName: 'message-arrow-up',\n icon: [512, 512, [\"comment-alt-arrow-up\"], \"e1dc\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zM280 296V177.9l31 31c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0l-72 72c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l31-31V296c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faCommentAltArrowUp = faMessageArrowUp;\nvar faLightbulbExclamation = {\n prefix: 'fas',\n iconName: 'lightbulb-exclamation',\n icon: [384, 512, [], \"f671\", \"M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zm0-448c13.3 0 24 10.7 24 24V200c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24zM160 288a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faLayerMinus = {\n prefix: 'fas',\n iconName: 'layer-minus',\n icon: [576, 512, [\"layer-group-minus\"], \"f5fe\", \"M408 56c-13.3 0-24 10.7-24 24s10.7 24 24 24H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H408zm-96.5 77.2c-14.9-6.9-32.1-6.9-47 0L45.9 234.2C37.4 238.1 32 246.6 32 256s5.4 17.9 13.9 21.8l218.6 101c14.9 6.9 32.1 6.9 47 0l218.6-101c8.5-3.9 13.9-12.4 13.9-21.8s-5.4-17.9-13.9-21.8l-218.6-101zm13.4 274.7c-23.4 10.8-50.4 10.8-73.8 0l-152-70.2L45.9 362.2C37.4 366.1 32 374.6 32 384s5.4 17.9 13.9 21.8l218.6 101c14.9 6.9 32.1 6.9 47 0l218.6-101c8.5-3.9 13.9-12.4 13.9-21.8s-5.4-17.9-13.9-21.8l-53.2-24.6-152 70.2z\"]\n};\nvar faLayerGroupMinus = faLayerMinus;\nvar faChartPieSimpleCircleCurrency = {\n prefix: 'fas',\n iconName: 'chart-pie-simple-circle-currency',\n icon: [640, 512, [], \"e604\", \"M496 192c4.6 0 9.3 .2 13.8 .5C494.5 83.7 401 0 288 0c-9 0-16 7.6-16 16.6V240H375.2c31.5-29.8 74-48 120.8-48zM320 368c0-28.8 6.9-56 19.2-80H224V66.7c0-18.5-15.7-33.3-33.8-29.5C81.5 60.1 0 156.5 0 272C0 404.6 107.5 512 240 512c43.8 0 84.8-11.7 120.1-32.2C335 449.4 320 410.5 320 368zm320 0a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM521.4 393.4a35.9 35.9 0 1 0 -50.7-50.7 35.9 35.9 0 1 0 50.7 50.7zm10 32.6c-21.6 13.2-49.1 13.2-70.7 0l-17.3 17.3c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L438 403.3c-13.2-21.6-13.2-49.1 0-70.7l-17.3-17.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L460.7 310c21.6-13.2 49.1-13.2 70.7 0l17.3-17.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L554 332.7c13.2 21.6 13.2 49.1 0 70.7l17.3 17.3c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L531.3 426z\"]\n};\nvar faCircleE = {\n prefix: 'fas',\n iconName: 'circle-e',\n icon: [512, 512, [], \"e109\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 128H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H208v56h88c13.3 0 24 10.7 24 24s-10.7 24-24 24H208v56H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24V256 152c0-13.3 10.7-24 24-24z\"]\n};\nvar faBuildingWheat = {\n prefix: 'fas',\n iconName: 'building-wheat',\n icon: [640, 512, [], \"e4db\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm384 80v16c0 44.2-35.8 80-80 80H544V272c0-44.2 35.8-80 80-80h16zm0 128c0 44.2-35.8 80-80 80H544V384c0-44.2 35.8-80 80-80h16v16zm0 112c0 44.2-35.8 80-80 80H544V496c0-44.2 35.8-80 80-80h16v16zM512 496v16H496c-44.2 0-80-35.8-80-80V416h16c44.2 0 80 35.8 80 80zm0-96H496c-44.2 0-80-35.8-80-80V304h16c44.2 0 80 35.8 80 80v16zm0-128v16H496c-44.2 0-80-35.8-80-80V192h16c44.2 0 80 35.8 80 80zM528 32c13.3 0 24 10.7 24 24V160c0 13.3-10.7 24-24 24s-24-10.7-24-24V56c0-13.3 10.7-24 24-24zm96 64v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24s24 10.7 24 24zM456 72c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24z\"]\n};\nvar faGaugeMax = {\n prefix: 'fas',\n iconName: 'gauge-max',\n icon: [512, 512, [\"tachometer-alt-fastest\"], \"f626\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-3.7-.3-7.3-.9-10.8l117.5-72.8c11.3-7 14.7-21.8 7.8-33s-21.8-14.8-33-7.8L293.8 300.4C283.2 292.6 270.1 288 256 288c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faTachometerAltFastest = faGaugeMax;\nvar faPersonBreastfeeding = {\n prefix: 'fas',\n iconName: 'person-breastfeeding',\n icon: [448, 512, [], \"e53a\", \"M224 0a80 80 0 1 1 0 160A80 80 0 1 1 224 0zM436.8 382.8L373.5 462c-16.6 20.7-46.8 24.1-67.5 7.5c-17.6-14.1-22.7-38.1-13.5-57.7l-.8-.1c-38.9-5.6-74.3-25.1-99.7-54.8V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L27.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7c-4.9-2.8-9.2-6.4-12.6-10.6c-4.6-5.4-7.8-11.7-9.6-18.4c-3.3-12-1.9-25.2 4.8-36.6c.6-1.1 1.3-2.2 2-3.2L75.6 256.1c26.7-40.1 71.7-64.1 119.8-64.1h75.2c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4c2.9 6.7 4.3 13.8 4 20.8c-.3 10.6-4.2 21-11.2 29.4zM320 332a44 44 0 1 0 -88 0 44 44 0 1 0 88 0z\"]\n};\nvar faApostrophe = {\n prefix: 'fas',\n iconName: 'apostrophe',\n icon: [192, 512, [], \"27\", \"M72 352c66.3 0 120-53.7 120-120V160 128 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64h64v8c0 30.9-25.1 56-56 56H64c-17.7 0-32 14.3-32 32s14.3 32 32 32h8z\"]\n};\nvar faFireHydrant = {\n prefix: 'fas',\n iconName: 'fire-hydrant',\n icon: [384, 512, [], \"e17f\", \"M224 32v4c45 11.6 80.4 47 92 92h12c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24H68c11.6-45 47-80.4 92-92V32c0-17.7 14.3-32 32-32s32 14.3 32 32zM32 488c0-13.3 10.7-24 24-24h8V400H48c-17.7 0-32-14.3-32-32V304c0-17.7 14.3-32 32-32H64V208H320v64h16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H320v64h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8H64 56c-13.3 0-24-10.7-24-24zm160-88a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faRightToBracket = {\n prefix: 'fas',\n iconName: 'right-to-bracket',\n icon: [512, 512, [\"sign-in-alt\"], \"f2f6\", \"M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM352 416l64 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSignInAlt = faRightToBracket;\nvar faVideoPlus = {\n prefix: 'fas',\n iconName: 'video-plus',\n icon: [576, 512, [], \"f4e1\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm512 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L416 174.9V192 320v17.1l14.2 9.5 96 64c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128zM216 184v48h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h48V184c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faSquareRight = {\n prefix: 'fas',\n iconName: 'square-right',\n icon: [448, 512, [10145, \"arrow-alt-square-right\"], \"f352\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM262.6 135.1l99.9 107.1c3.5 3.8 5.5 8.7 5.5 13.8s-2 10.1-5.5 13.8L262.6 376.9c-4.2 4.5-10.1 7.1-16.3 7.1C234 384 224 374 224 361.7l0-57.7-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-57.7c0-12.3 10-22.3 22.3-22.3c6.2 0 12.1 2.6 16.3 7.1z\"]\n};\nvar faArrowAltSquareRight = faSquareRight;\nvar faCommentSmile = {\n prefix: 'fas',\n iconName: 'comment-smile',\n icon: [512, 512, [], \"f4b4\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM192 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM150.5 270.1c9.9-8.8 25-8 33.9 1.9c17.6 19.7 43.1 32 71.6 32s53.9-12.3 71.6-32c8.8-9.9 24-10.7 33.9-1.9s10.7 24 1.9 33.9C337 333.4 298.6 352 256 352s-81-18.6-107.3-48c-8.8-9.9-8-25 1.9-33.9z\"]\n};\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [384, 512, [9792], \"f221\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V384H128c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V349.1z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM183 278.8c-27.9-13.2-48.4-39.4-53.7-70.8h39.1c1.6 30.4 7.7 53.8 14.6 70.8zm41.3 9.2l-.3 0-.3 0c-2.4-3.5-5.7-8.9-9.1-16.5c-6-13.6-12.4-34.3-14.2-63.5h47.1c-1.8 29.2-8.1 49.9-14.2 63.5c-3.4 7.6-6.7 13-9.1 16.5zm40.7-9.2c6.8-17.1 12.9-40.4 14.6-70.8h39.1c-5.3 31.4-25.8 57.6-53.7 70.8zM279.6 176c-1.6-30.4-7.7-53.8-14.6-70.8c27.9 13.2 48.4 39.4 53.7 70.8H279.6zM223.7 96l.3 0 .3 0c2.4 3.5 5.7 8.9 9.1 16.5c6 13.6 12.4 34.3 14.2 63.5H200.5c1.8-29.2 8.1-49.9 14.2-63.5c3.4-7.6 6.7-13 9.1-16.5zM183 105.2c-6.8 17.1-12.9 40.4-14.6 70.8H129.3c5.3-31.4 25.8-57.6 53.7-70.8zM352 192A128 128 0 1 0 96 192a128 128 0 1 0 256 0zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faInboxIn = {\n prefix: 'fas',\n iconName: 'inbox-in',\n icon: [512, 512, [128229, \"inbox-arrow-down\"], \"f310\", \"M288 32V210.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7V32c0-17.7 14.3-32 32-32s32 14.3 32 32zM48 320h76.2c12.1 0 23.2 6.8 28.6 17.7l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7H316.2c12.1 0 23.2-6.8 28.6-17.7l14.3-28.6c5.4-10.8 16.5-17.7 28.6-17.7H464c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48z\"]\n};\nvar faInboxArrowDown = faInboxIn;\nvar faHeartPulse = {\n prefix: 'fas',\n iconName: 'heart-pulse',\n icon: [512, 512, [\"heartbeat\"], \"f21e\", \"M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4h87c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31H476.3c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240h-132c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9H16c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1v5.8c0 16.9-2.8 33.5-8.3 49.1z\"]\n};\nvar faHeartbeat = faHeartPulse;\nvar faCircle8 = {\n prefix: 'fas',\n iconName: 'circle-8',\n icon: [512, 512, [], \"e0f5\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM264 128H248c-39.8 0-72 32.2-72 72c0 15.7 5 30.1 13.5 42c-18 14.7-29.5 37-29.5 62c0 44.2 35.8 80 80 80h32c44.2 0 80-35.8 80-80c0-25-11.5-47.4-29.5-62c8.5-11.8 13.5-26.3 13.5-42c0-39.8-32.2-72-72-72zm-16 96c-13.2 0-24-10.8-24-24s10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24c0 0 0 0 0 0H248s0 0 0 0zm16 48h8c17.7 0 32 14.3 32 32s-14.3 32-32 32H240c-17.7 0-32-14.3-32-32s14.3-32 32-32h8 16z\"]\n};\nvar faCloudsMoon = {\n prefix: 'fas',\n iconName: 'clouds-moon',\n icon: [640, 512, [], \"f745\", \"M352 160c0 11.5 1.2 22.7 3.5 33.4c53.7 8.2 96.5 49.8 106.4 103c14.2 5.5 27.2 13.4 38.5 23.2c3.7 .3 7.4 .4 11.2 .4c43.2 0 82.5-17.3 111.2-45.3c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-6.5 1.1-13.2 1.7-20 1.7c-64.3 0-116.5-52.3-116.5-116.9c0-43.7 23.9-81.8 59.3-101.9c6.1-3.5 9.2-10.5 7.7-17.3S532 1.2 525.1 .6c-4.5-.4-9-.6-13.5-.6C423.4 0 352 71.7 352 160zM114.8 273.9c20.1-30.1 54.3-49.9 93.2-49.9c12.9 0 25.3 2.2 36.8 6.2c19.6-19.9 45.8-33.5 75-37.2l0-.9c0-35.3-28.6-64-64-64c-7.4 0-14.6 1.3-21.2 3.6c-11.5-30.1-40.6-51.6-74.8-51.6c-38.9 0-71.3 27.8-78.5 64.6c-3.1-.4-6.3-.6-9.5-.6c-39.8 0-72 32.2-72 72s32.2 72 72 72c16.1 0 30.9-5.3 42.9-14.1zM64 431.9c0 44.2 35.8 80 80 80H415.9c53 0 96-43 96-96c0-47.6-34.6-87-80-94.6l0-1.3c0-53-43-96-96-96c-34.9 0-65.4 18.6-82.2 46.4C240.8 261.3 225 256 208 256c-44.2 0-80 35.8-80 80c0 5.9 .6 11.7 1.9 17.2C92.4 359.9 64 392.6 64 431.9z\"]\n};\nvar faClockTenThirty = {\n prefix: 'fas',\n iconName: 'clock-ten-thirty',\n icon: [512, 512, [], \"e355\", \"M256 512A256 256 0 1 1 256 0a256 256 0 1 1 0 512zm24-120V256c0-8-4-15.5-10.7-20l-96-64c-11-7.4-25.9-4.4-33.3 6.7s-4.4 25.9 6.7 33.3L232 268.8V392c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faPeopleCarryBox = {\n prefix: 'fas',\n iconName: 'people-carry-box',\n icon: [640, 512, [\"people-carry\"], \"f4ce\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm64 193.7v65.1l51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3l-14.3-85.9L66.8 320C54.8 308 48 291.7 48 274.7V186.6c0-32.4 26.2-58.6 58.6-58.6c24.1 0 46.5 12 59.9 32l47.4 71.1 10.1 5V160c0-17.7 14.3-32 32-32H384c17.7 0 32 14.3 32 32v76.2l10.1-5L473.5 160c13.3-20 35.8-32 59.9-32c32.4 0 58.6 26.2 58.6 58.6v88.1c0 17-6.7 33.3-18.7 45.3l-79.4 79.4-14.3 85.9c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l15.2-90.9c1.6-9.9 6.3-19 13.4-26.1l51-51V241.7l-19 28.5c-4.6 7-11 12.6-18.5 16.3l-59.6 29.8c-2.4 1.3-4.9 2.2-7.6 2.8c-2.6 .6-5.3 .9-7.9 .8H256.7c-2.5 .1-5-.2-7.5-.7c-2.9-.6-5.6-1.6-8.1-3l-59.5-29.8c-7.5-3.7-13.8-9.4-18.5-16.3l-19-28.5zM2.3 468.1L50.1 348.6l49.2 49.2-37.6 94c-6.6 16.4-25.2 24.4-41.6 17.8S-4.3 484.5 2.3 468.1zM512 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm77.9 348.6l47.8 119.5c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-37.6-94 49.2-49.2z\"]\n};\nvar faPeopleCarry = faPeopleCarryBox;\nvar faFolderUser = {\n prefix: 'fas',\n iconName: 'folder-user',\n icon: [512, 512, [], \"e18e\", \"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416zM320 256a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM144 405.3c0 5.9 4.8 10.7 10.7 10.7H357.3c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3H197.3c-29.5 0-53.3 23.9-53.3 53.3z\"]\n};\nvar faTrashCanXmark = {\n prefix: 'fas',\n iconName: 'trash-can-xmark',\n icon: [448, 512, [], \"e2ae\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zM143 239c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 128A96 96 0 1 0 416 0a96 96 0 1 0 0 192zM96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.2 32 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64c-35.3 0-64 28.7-64 64H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64c0 35.3 28.7 64 64 64v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448c35.3 0 64-28.7 64-64h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V280h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V176h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448c0-35.3-28.7-64-64-64V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H280V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H176V24zM160 128H352c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm192 32H160V352H352V160z\"]\n};\nvar faLeftLongToLine = {\n prefix: 'fas',\n iconName: 'left-long-to-line',\n icon: [640, 512, [], \"e41e\", \"M0 96V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96c0-17.7-14.3-32-32-32S0 78.3 0 96zM279.5 409.4c7 6.6 17.2 8.4 26 4.6s14.5-12.5 14.5-22V320l288 0c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32l-288 0V120c0-9.6-5.7-18.2-14.5-22s-19-2-26 4.6l-144 136c-4.8 4.5-7.5 10.8-7.5 17.4s2.7 12.9 7.5 17.4l144 136z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [576, 512, [128081], \"f521\", \"M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6H426.6c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M224 96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm122.5 32c3.5-10 5.5-20.8 5.5-32c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32H120c-22 0-41.2 15-46.6 36.4l-72 288c-3.6 14.3-.4 29.5 8.7 41.2S33.2 512 48 512H464c14.8 0 28.7-6.8 37.8-18.5s12.3-26.8 8.7-41.2l-72-288C433.2 143 414 128 392 128H346.5z\"]\n};\nvar faXmarksLines = {\n prefix: 'fas',\n iconName: 'xmarks-lines',\n icon: [640, 512, [], \"e59a\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55L41 167c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM104 196h72c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6H124v44c0 11-9 20-20 20s-20-9-20-20V296 216c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20H124v40h52z\"]\n};\nvar faCalendarRange = {\n prefix: 'fas',\n iconName: 'calendar-range',\n icon: [512, 512, [], \"e0d6\", \"M128 32V64H80c-26.5 0-48 21.5-48 48v48H480V112c0-26.5-21.5-48-48-48H384V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H192V32c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 192H32V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V192zM160 288a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM384 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM224 288c0-13.3 10.7-24 24-24H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H248c-13.3 0-24-10.7-24-24zm40 104c13.3 0 24 10.7 24 24s-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24H264z\"]\n};\nvar faFlowerDaffodil = {\n prefix: 'fas',\n iconName: 'flower-daffodil',\n icon: [512, 512, [9880], \"f800\", \"M288 281.3c9.8 4.3 20.6 6.7 32 6.7c44.2 0 80-35.8 80-80c0-26.2-12.6-49.4-32-64c19.4-14.6 32-37.8 32-64c0-44.2-35.8-80-80-80c-26.2 0-49.4 12.6-64 32C241.4 12.6 218.2 0 192 0c-44.2 0-80 35.8-80 80c0 26.2 12.6 49.4 32 64c-19.4 14.6-32 37.8-32 64c0 44.2 35.8 80 80 80c11.4 0 22.2-2.4 32-6.7V394.8C192.1 349.5 139.5 320 80 320H29.5C13.2 320 0 333.2 0 349.5C0 439.3 72.7 512 162.5 512H224h32 32 61.5C439.3 512 512 439.3 512 349.5c0-16.3-13.2-29.5-29.5-29.5H432c-59.5 0-112.1 29.5-144 74.8V281.3zM208 144a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faHandBackPointUp = {\n prefix: 'fas',\n iconName: 'hand-back-point-up',\n icon: [448, 512, [], \"e1a2\", \"M136 0C113.9 0 96 17.9 96 40V240v7 73c0 8.8-7.2 16-16 16s-16-7.2-16-16V264.3c-2 1.4-3.9 3-5.8 4.5L39 284.8C24.4 297 16 315 16 334V372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1H288c70.7 0 128-57.3 128-128V320 288c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C334 227.5 313.3 208 288 208c-12.4 0-23.6 4.7-32.1 12.3C254 195.5 233.3 176 208 176c-12.3 0-23.5 4.6-32 12.2V40c0-22.1-17.9-40-40-40z\"]\n};\nvar faWeightScale = {\n prefix: 'fas',\n iconName: 'weight-scale',\n icon: [512, 512, [\"weight\"], \"f496\", \"M128 176a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zM391.8 64C359.5 24.9 310.7 0 256 0S152.5 24.9 120.2 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H391.8zM296 224c0-10.6-4.1-20.2-10.9-27.4l33.6-78.3c3.5-8.1-.3-17.5-8.4-21s-17.5 .3-21 8.4L255.7 184c-22 .1-39.7 18-39.7 40c0 22.1 17.9 40 40 40s40-17.9 40-40z\"]\n};\nvar faWeight = faWeightScale;\nvar faStarExclamation = {\n prefix: 'fas',\n iconName: 'star-exclamation',\n icon: [576, 512, [], \"f2f3\", \"M288.1 0c12.2 0 23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L438.5 329l24.6 145.7c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L288.1 439.8 159.8 508.3C149 514 135.9 513.1 126 506s-14.9-19.3-12.9-31.3L137.8 329 33.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L195 150.3 259.4 18c5.4-11 16.5-18 28.8-18zM288 128c-13.3 0-24 10.7-24 24V264c0 13.3 10.7 24 24 24s24-10.7 24-24V152c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faBooks = {\n prefix: 'fas',\n iconName: 'books',\n icon: [512, 512, [128218], \"f5db\", \"M0 32C0 14.3 14.3 0 32 0H96c17.7 0 32 14.3 32 32V96H0V32zm0 96H128V384H0V128zM0 416H128v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416zM160 32c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V96H160V32zm0 96H288V384H160V128zm0 288H288v64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V416zm203.6-19.9L320 232.6V142.8l100.4-26.9 66 247.4L363.6 396.1zM412.2 85L320 109.6V11l36.9-9.9c16.9-4.6 34.4 5.5 38.9 22.6L412.2 85zM371.8 427l122.8-32.9 16.3 61.1c4.5 17-5.5 34.5-22.5 39.1l-61.4 16.5c-16.9 4.6-34.4-5.5-38.9-22.6L371.8 427z\"]\n};\nvar faUserGroup = {\n prefix: 'fas',\n iconName: 'user-group',\n icon: [640, 512, [128101, \"user-friends\"], \"f500\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM609.3 512H471.4c5.4-9.4 8.6-20.3 8.6-32v-8c0-60.7-27.1-115.2-69.8-151.8c2.4-.1 4.7-.2 7.1-.2h61.4C567.8 320 640 392.2 640 481.3c0 17-13.8 30.7-30.7 30.7zM432 256c-31 0-59-12.6-79.3-32.9C372.4 196.5 384 163.6 384 128c0-26.8-6.6-52.1-18.3-74.3C384.3 40.1 407.2 32 432 32c61.9 0 112 50.1 112 112s-50.1 112-112 112z\"]\n};\nvar faUserFriends = faUserGroup;\nvar faArrowUpAZ = {\n prefix: 'fas',\n iconName: 'arrow-up-a-z',\n icon: [576, 512, [\"sort-alpha-up\"], \"f15e\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z\"]\n};\nvar faSortAlphaUp = faArrowUpAZ;\nvar faLayerPlus = {\n prefix: 'fas',\n iconName: 'layer-plus',\n icon: [576, 512, [\"layer-group-plus\"], \"f5ff\", \"M464 0c-13.3 0-24 10.7-24 24V56H408c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v32c0 13.3 10.7 24 24 24s24-10.7 24-24V104h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H488V24c0-13.3-10.7-24-24-24zM311.5 133.2c-14.9-6.9-32.1-6.9-47 0L45.9 234.2C37.4 238.1 32 246.6 32 256s5.4 17.9 13.9 21.8l218.6 101c14.9 6.9 32.1 6.9 47 0l218.6-101c8.5-3.9 13.9-12.4 13.9-21.8s-5.4-17.9-13.9-21.8l-218.6-101zm13.4 274.7c-23.4 10.8-50.4 10.8-73.8 0l-152-70.2L45.9 362.2C37.4 366.1 32 374.6 32 384s5.4 17.9 13.9 21.8l218.6 101c14.9 6.9 32.1 6.9 47 0l218.6-101c8.5-3.9 13.9-12.4 13.9-21.8s-5.4-17.9-13.9-21.8l-53.2-24.6-152 70.2z\"]\n};\nvar faLayerGroupPlus = faLayerPlus;\nvar faPlayPause = {\n prefix: 'fas',\n iconName: 'play-pause',\n icon: [640, 512, [], \"e22f\", \"M116.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S64 83.6 64 96V416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4l192-160c7.3-6.1 11.5-15.1 11.5-24.6s-4.2-18.5-11.5-24.6l-192-160zM448 96c0-17.7-14.3-32-32-32s-32 14.3-32 32V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96z\"]\n};\nvar faBlockQuestion = {\n prefix: 'fas',\n iconName: 'block-question',\n icon: [640, 512, [], \"e3dd\", \"M160 32c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64H480c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160zm73.8 149.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L344 280.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V266.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H286.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM288 368a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM144 104a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM472 80a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM144 408a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm328-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faSnooze = {\n prefix: 'fas',\n iconName: 'snooze',\n icon: [448, 512, [128164, \"zzz\"], \"f880\", \"M192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h32l-57.6 76.8c-7.3 9.7-8.4 22.7-3 33.5s16.5 17.7 28.6 17.7h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H256l57.6-76.8c7.3-9.7 8.4-22.7 3-33.5S300.1 0 288 0H192zM320 224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32l-57.6 76.8c-7.3 9.7-8.4 22.7-3 33.5s16.5 17.7 28.6 17.7h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H384l57.6-76.8c7.3-9.7 8.4-22.7 3-33.5S428.1 224 416 224H320zM32 256c-17.7 0-32 14.3-32 32s14.3 32 32 32h91.7L7.4 459.5c-7.9 9.5-9.7 22.8-4.4 34.1S19.6 512 32 512H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H100.3L216.6 308.5c7.9-9.5 9.7-22.8 4.4-34.1s-16.6-18.4-29-18.4H32z\"]\n};\nvar faZzz = faSnooze;\nvar faScannerImage = {\n prefix: 'fas',\n iconName: 'scanner-image',\n icon: [576, 512, [], \"f8f3\", \"M79.1 35.8c-15.6-8.3-35-2.4-43.3 13.2s-2.4 35 13.2 43.3L416 288H64c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V339.2c0-23.6-13-45.3-33.9-56.5L79.1 35.8zM64 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faTvRetro = {\n prefix: 'fas',\n iconName: 'tv-retro',\n icon: [512, 512, [128250], \"f401\", \"M169 7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55H80C35.8 96 0 131.8 0 176V432c0 44.2 35.8 80 80 80H432c44.2 0 80-35.8 80-80V176c0-44.2-35.8-80-80-80H321.9l55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-87 87L169 7zM424 232a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm24 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM64 224c0-35.3 28.7-64 64-64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V224z\"]\n};\nvar faSquareT = {\n prefix: 'fas',\n iconName: 'square-t',\n icon: [448, 512, [], \"e280\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm56 112H224 328c13.3 0 24 10.7 24 24s-10.7 24-24 24H248V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V192H120c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faFarm = {\n prefix: 'fas',\n iconName: 'farm',\n icon: [576, 512, [\"barn-silo\"], \"f864\", \"M0 96C0 43 43 0 96 0s96 43 96 96H0zm181.4 32L132.8 246c-3.2 7.7-4.8 16-4.8 24.4V480c0 11.7 3.1 22.6 8.6 32H48c-26.5 0-48-21.5-48-48V128H181.4zM160 480V270.3c0-4.2 .8-8.3 2.4-12.2l48.9-118.7c3-7.4 8.7-13.3 15.9-16.7L354.3 62.5c8.7-4.1 18.7-4.1 27.4 0l127.1 60.2c7.2 3.4 12.9 9.4 15.9 16.7l48.9 118.7c1.6 3.9 2.4 8 2.4 12.2V480c0 17.7-14.3 32-32 32H432V448c0-26.5-21.5-48-48-48H352c-26.5 0-48 21.5-48 48v64H192c-17.7 0-32-14.3-32-32zM320 248v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V248c0-13.3-10.7-24-24-24H344c-13.3 0-24 10.7-24 24z\"]\n};\nvar faBarnSilo = faFarm;\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [448, 512, [9822], \"f441\", \"M96 48L82.7 61.3C70.7 73.3 64 89.5 64 106.5V238.9c0 10.7 5.3 20.7 14.2 26.6l10.6 7c14.3 9.6 32.7 10.7 48.1 3l3.2-1.6c2.6-1.3 5-2.8 7.3-4.5l49.4-37c6.6-5 15.7-5 22.3 0c10.2 7.7 9.9 23.1-.7 30.3L90.4 350C73.9 361.3 64 380 64 400H384l28.9-159c2.1-11.3 3.1-22.8 3.1-34.3V192C416 86 330 0 224 0H83.8C72.9 0 64 8.9 64 19.8c0 7.5 4.2 14.3 10.9 17.7L96 48zm24 68a20 20 0 1 1 40 0 20 20 0 1 1 -40 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512H409.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L384 432H64L22.6 473.4z\"]\n};\nvar faBarsSort = {\n prefix: 'fas',\n iconName: 'bars-sort',\n icon: [448, 512, [], \"e0ae\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM192 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H160c17.7 0 32 14.3 32 32z\"]\n};\nvar faPalletBoxes = {\n prefix: 'fas',\n iconName: 'pallet-boxes',\n icon: [640, 512, [57863, \"palette-boxes\", \"pallet-alt\"], \"f483\", \"M64 32C64 14.3 78.3 0 96 0H288c17.7 0 32 14.3 32 32V224c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V32zM384 96c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32V224c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V96zM0 352c0-17.7 14.3-32 32-32H96 320 544h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576v64h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H544 320 96 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V384H32c-17.7 0-32-14.3-32-32zm128 96H288V384H128v64zm224 0H512V384H352v64z\"]\n};\nvar faPaletteBoxes = faPalletBoxes;\nvar faPalletAlt = faPalletBoxes;\nvar faFaceLaughSquint = {\n prefix: 'fas',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zm36.7-199.4l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 125.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faLaughSquint = faFaceLaughSquint;\nvar faCodeSimple = {\n prefix: 'fas',\n iconName: 'code-simple',\n icon: [576, 512, [], \"e13d\", \"M214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 214.6 118.6zm146.7 0L498.7 256 361.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3z\"]\n};\nvar faBoltSlash = {\n prefix: 'fas',\n iconName: 'bolt-slash',\n icon: [640, 512, [], \"e0b8\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-182.4-143 52.7-46.1c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H368.5L445.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8L228.4 153.7 38.8 5.1zM138.9 231.9c-10 8.8-13.6 22.9-8.9 35.3s16.6 20.7 30 20.7h83.7l-88.9-70-15.9 13.9zm55.7 235.5c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8L374.4 391 264.5 304.4l-69.9 163z\"]\n};\nvar faPanelFire = {\n prefix: 'fas',\n iconName: 'panel-fire',\n icon: [640, 512, [], \"e42f\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64v32.2c-12.6-1.2-25.5 2.7-35.5 11.7c-9.9 8.9-19.4 18.1-28.5 27.5V128c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H337.5c-4.4 6.2-8.5 12.5-12.3 18.7c-10.9 17.6-20.5 36.4-27.2 55.4c-3-1.4-6.4-2.1-9.9-2.1c-13.3 0-24 10.7-24 24s10.7 24 24 24l.2 0c-.1 2-.2 4.1-.2 6.1c0 49.3 18.6 95.2 49.6 129.9H64c-35.3 0-64-28.7-64-64V96zM120 320a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm72 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM453.5 163.6c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 58.8 24.2 79c0 87.8-71.3 159.8-160 159.8c-89.7 0-160-72.1-160-159.8c0-26.4 12.7-60.7 32.4-92.6c20-32.4 48.1-66.1 81.4-95.8c2.8-2.5 6.4-3.8 10-3.7c3.5 0 7 1.3 9.8 3.8zM530 432.9c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15z\"]\n};\nvar faBinaryCircleCheck = {\n prefix: 'fas',\n iconName: 'binary-circle-check',\n icon: [640, 512, [], \"e33c\", \"M322.7 6c8.3 6 13.3 15.7 13.3 26V160h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H304 256c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V76.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16C303.6-1.6 314.4 0 322.7 6zM98.7 294c8.3 6 13.3 15.7 13.3 26V448h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V364.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM64 0h64c35.3 0 64 28.7 64 64v96c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0zm0 64v96h64V64H64zM192 352c0-35.3 28.7-64 64-64h64c6.2 0 12.2 .9 17.9 2.5c-11.2 22.9-17.6 48.6-17.9 75.7V352H256v96h64v0h19.2c7.8 15.3 17.8 29.3 29.5 41.5C357 503.3 339.5 512 320 512H256c-35.3 0-64-28.7-64-64V352zm128.7 32H320V369.8c0 4.8 .3 9.5 .7 14.2zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faCommentMinus = {\n prefix: 'fas',\n iconName: 'comment-minus',\n icon: [512, 512, [], \"f4b1\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM184 216H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faBurrito = {\n prefix: 'fas',\n iconName: 'burrito',\n icon: [512, 512, [127791], \"f7ed\", \"M251.4 52.6L33.9 270.1c-9.9 9.9-17.8 21.3-23.4 33.7C39.2 324.1 74.2 336 112 336c79.2 0 146.2-52.3 168.3-124.3c5-16.3 7.7-33.7 7.7-51.7c0-40.4-13.6-77.7-36.6-107.4zm15-32C299.7 57.5 320 106.4 320 160c0 11.9-1 23.6-2.9 34.9c11.4-1.9 23-2.9 34.9-2.9c53.6 0 102.5 20.3 139.4 53.6c12.8-14.2 20.6-33 20.6-53.6c0-11.4-2.4-22.2-6.7-32c4.3-9.8 6.7-20.6 6.7-32c0-34.6-22-64.1-52.8-75.2C448.1 22 418.6 0 384 0c-11.4 0-22.2 2.4-32 6.7C342.2 2.4 331.4 0 320 0c-20.6 0-39.4 7.8-53.6 20.6zm193 240C429.7 237.6 392.4 224 352 224c-15.2 0-29.9 1.9-43.9 5.5C279.5 310.2 202.5 368 112 368c-40.8 0-78.8-11.7-110.9-32C.4 341.3 0 346.6 0 352c0 30.7 12.2 60.2 33.9 81.9l44.1 44.1C99.8 499.8 129.3 512 160 512s60.2-12.2 81.9-33.9L459.4 260.6z\"]\n};\nvar faViolin = {\n prefix: 'fas',\n iconName: 'violin',\n icon: [640, 512, [127931], \"f8ed\", \"M630.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L417 177.7C398 166.5 375.7 160 352 160c-20.8 0-40.4 5-57.8 13.8c-6.7 3.4-9.1 11.4-7.7 18.8c1 5 1.5 10.2 1.5 15.4c0 44.2-35.8 80-80 80c-11.6 0-22.7-2.5-32.7-7c-7.4-3.3-16.6-2.4-21.3 4.3C137.6 308.7 128 337.2 128 368c0 15 2.3 29.5 6.6 43.1l44.6-33.5c19.1-14.3 45.9-12.4 62.7 4.5l16 16c16.9 16.9 18.8 43.6 4.5 62.7l-33.5 44.6c13.6 4.3 28.1 6.6 43.1 6.6c30.8 0 59.3-9.6 82.6-26.1c6.7-4.7 7.6-13.8 4.3-21.3c-4.5-10-7-21-7-32.7c0-44.2 35.8-80 80-80c5.3 0 10.5 .5 15.4 1.5c7.4 1.4 15.4-1 18.8-7.7c8.8-17.4 13.8-37 13.8-57.8c0-23.7-6.5-46-17.7-65L630.6 54.6zM520 48a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM345 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 41zM472 96a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm120 72a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm48-48a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM198.4 403.2l-64 48c-3.7 2.8-6 7-6.4 11.7s1.4 9.2 4.6 12.4l32 32c3.3 3.3 7.8 5 12.4 4.6s8.9-2.6 11.7-6.4l48-64c4.8-6.4 4.1-15.3-1.5-20.9l-16-16c-5.6-5.6-14.5-6.3-20.9-1.5z\"]\n};\nvar faObjectsColumn = {\n prefix: 'fas',\n iconName: 'objects-column',\n icon: [448, 512, [], \"e3c1\", \"M48 32C21.5 32 0 53.5 0 80V240c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zM304 224c-26.5 0-48 21.5-48 48V432c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48H304zM0 400v32c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V400c0-26.5-21.5-48-48-48H48c-26.5 0-48 21.5-48 48zM304 32c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H304z\"]\n};\nvar faSquareChevronDown = {\n prefix: 'fas',\n iconName: 'square-chevron-down',\n icon: [448, 512, [\"chevron-square-down\"], \"f329\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM207 345L103 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L241 345c-9.4 9.4-24.6 9.4-33.9 0z\"]\n};\nvar faChevronSquareDown = faSquareChevronDown;\nvar faCommentPlus = {\n prefix: 'fas',\n iconName: 'comment-plus',\n icon: [512, 512, [], \"f4b2\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM232 328V264H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V152c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faTriangleInstrument = {\n prefix: 'fas',\n iconName: 'triangle-instrument',\n icon: [576, 512, [\"triangle-music\"], \"f8e2\", \"M320 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V69.9c-18 6.8-33.6 19.4-44.1 36.1L46.5 367.7C37 382.8 32 400.2 32 418c0 51.9 42.1 94 94 94H450c51.9 0 94-42.1 94-94c0-17.8-5-35.2-14.5-50.2L448.2 239l-46.4 46.4 73.6 116.5c3 4.8 4.6 10.4 4.6 16c0 16.6-13.5 30-30 30H126c-16.6 0-30-13.5-30-30c0-5.7 1.6-11.2 4.6-16L266 140.1c4.8-7.6 13.1-12.1 22-12.1s17.3 4.6 22 12.1l48 75.9-51.2 51.2c-5.9-2.1-12.2-3.2-18.8-3.2c-30.9 0-56 25.1-56 56s25.1 56 56 56s56-25.1 56-56c0-6.6-1.1-12.9-3.2-18.8l43.5-43.5 46.4-46.4L537 105c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-98.6 98.6L364.1 106C353.6 89.2 338 76.7 320 69.9V32z\"]\n};\nvar faTriangleMusic = faTriangleInstrument;\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM120.5 247.2c12.4-4.7 18.7-18.5 14-30.9s-18.5-18.7-30.9-14C43.1 225.1 0 283.5 0 352c0 88.4 71.6 160 160 160c61.2 0 114.3-34.3 141.2-84.7c6.2-11.7 1.8-26.2-9.9-32.5s-26.2-1.8-32.5 9.9C240 440 202.8 464 160 464C98.1 464 48 413.9 48 352c0-47.9 30.1-88.8 72.5-104.8zM259.8 176l-1.9-9.7c-4.5-22.3-24-38.3-46.8-38.3c-30.1 0-52.7 27.5-46.8 57l23.1 115.5c6 29.9 32.2 51.4 62.8 51.4h5.1c.4 0 .8 0 1.3 0h94.1c6.7 0 12.6 4.1 15 10.4L402 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9H282.2l-9.6-48H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H259.8z\"]\n};\nvar faUserPilotTie = {\n prefix: 'fas',\n iconName: 'user-pilot-tie',\n icon: [448, 512, [], \"e2c1\", \"M230.1 .8c-4-1.1-8.2-1.1-12.2 0l-152 40c-8.6 2.3-15.3 9.1-17.3 17.8s1 17.8 7.8 23.6L80 102.5v8.4c0 10.7 5.3 20.8 15.1 25.2c24.1 10.8 68.6 24 128.9 24s104.8-13.2 128.9-24c9.8-4.4 15.1-14.5 15.1-25.2v-8.4l23.6-20.2c6.8-5.8 9.8-14.9 7.8-23.6s-8.7-15.6-17.3-17.8l-152-40zM161.7 72.8c4-7.9 13.6-11.1 21.5-7.2L224 86.1l40.8-20.4c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5l-48 24c-4.5 2.3-9.8 2.3-14.3 0l-48-24c-7.9-4-11.1-13.6-7.2-21.5zm-63.6 96C96.7 176.3 96 184.1 96 192c0 70.7 57.3 128 128 128s128-57.3 128-128c0-7.9-.7-15.7-2.1-23.2C310.8 183.8 268.4 192 224 192s-86.8-8.2-125.9-23.2zm89.5 206.3L208 416l-12.2 48.9L133 360.3c-3-5-8.6-8.1-14.4-7.4C51.8 360.8 0 417.5 0 486.4C0 500.5 11.5 512 25.6 512H192v0h64v0H422.4c14.1 0 25.6-11.5 25.6-25.6c0-68.9-51.8-125.6-118.6-133.5c-5.8-.7-11.4 2.4-14.4 7.4L252.2 464.9 240 416l20.4-40.8c5.3-10.6-2.4-23.2-14.3-23.2H201.9c-11.9 0-19.6 12.5-14.3 23.2zM320 432c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H336c-8.8 0-16-7.2-16-16z\"]\n};\nvar faPianoKeyboard = {\n prefix: 'fas',\n iconName: 'piano-keyboard',\n icon: [576, 512, [127929], \"f8d5\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zM512 224V384H432V315.7c9.6-5.5 16-15.9 16-27.7V224h64zM400 384H304V315.7c9.6-5.5 16-15.9 16-27.7V224h64v64c0 11.8 6.4 22.2 16 27.7V384zm-128 0H176V315.7c9.6-5.5 16-15.9 16-27.7V224h64v64c0 11.8 6.4 22.2 16 27.7V384zm-128 0H64V224h64v64c0 11.8 6.4 22.2 16 27.7V384z\"]\n};\nvar faBedEmpty = {\n prefix: 'fas',\n iconName: 'bed-empty',\n icon: [640, 512, [128719], \"f8f9\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V256v96 96c0 17.7 14.3 32 32 32s32-14.3 32-32V416H352 576v32c0 17.7 14.3 32 32 32s32-14.3 32-32V320c0-53-43-96-96-96H64V64z\"]\n};\nvar faCircleArrowUp = {\n prefix: 'fas',\n iconName: 'circle-arrow-up',\n icon: [512, 512, [\"arrow-circle-up\"], \"f0aa\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM385 231c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V193.9l-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 119c9.4-9.4 24.6-9.4 33.9 0L385 231z\"]\n};\nvar faArrowCircleUp = faCircleArrowUp;\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M192 64C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192s-86-192-192-192H192zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faRectangleVertical = {\n prefix: 'fas',\n iconName: 'rectangle-vertical',\n icon: [384, 512, [\"rectangle-portrait\"], \"f2fb\", \"M320 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0L320 0z\"]\n};\nvar faRectanglePortrait = faRectangleVertical;\nvar faPersonWalking = {\n prefix: 'fas',\n iconName: 'person-walking',\n icon: [320, 512, [128694, \"walking\"], \"f554\", \"M160 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM126.5 199.3c-1 .4-1.9 .8-2.9 1.2l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L281 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L247 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5zM68.7 398l25-62.4c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L68.7 398z\"]\n};\nvar faWalking = faPersonWalking;\nvar faL = {\n prefix: 'fas',\n iconName: 'l',\n icon: [320, 512, [108], \"4c\", \"M64 32c17.7 0 32 14.3 32 32V416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faSignalStream = {\n prefix: 'fas',\n iconName: 'signal-stream',\n icon: [576, 512, [], \"f8dd\", \"M108.2 71c13.8 11.1 16 31.2 5 45C82.4 154.4 64 203 64 256s18.4 101.6 49.1 140c11.1 13.8 8.8 33.9-5 45s-33.9 8.8-45-5C23.7 386.7 0 324.1 0 256S23.7 125.3 63.2 76c11.1-13.8 31.2-16 45-5zm359.7 0c13.8-11.1 33.9-8.8 45 5C552.3 125.3 576 187.9 576 256s-23.7 130.7-63.2 180c-11.1 13.8-31.2 16-45 5s-16-31.2-5-45c30.7-38.4 49.1-87 49.1-140s-18.4-101.6-49.1-140c-11.1-13.8-8.8-33.9 5-45zM232 256a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm-27.5-74.7c-17.8 19.8-28.5 46-28.5 74.7s10.8 54.8 28.5 74.7c11.8 13.2 10.7 33.4-2.5 45.2s-33.4 10.7-45.2-2.5C129 342.2 112 301.1 112 256s17-86.2 44.8-117.3c11.8-13.2 32-14.3 45.2-2.5s14.3 32 2.5 45.2zm214.7-42.7C447 169.8 464 210.9 464 256s-17 86.2-44.8 117.3c-11.8 13.2-32 14.3-45.2 2.5s-14.3-32-2.5-45.2c17.8-19.8 28.5-46 28.5-74.7s-10.8-54.8-28.5-74.7c-11.8-13.2-10.7-33.4 2.5-45.2s33.4-10.7 45.2 2.5z\"]\n};\nvar faDownToBracket = {\n prefix: 'fas',\n iconName: 'down-to-bracket',\n icon: [448, 512, [], \"e4e7\", \"M374.1 217.9L251.3 340.7c-7.2 7.2-17.1 11.3-27.3 11.3s-20.1-4.1-27.3-11.3L73.9 217.9c-6.4-6.4-9.9-15-9.9-24C64 175.2 79.2 160 97.9 160l62.1 0 0-128c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32l0 128 62.1 0c18.7 0 33.9 15.2 33.9 33.9c0 9-3.6 17.6-9.9 24zM64 352v64c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V352c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 53-43 96-96 96H96c-53 0-96-43-96-96V352c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faCircleZ = {\n prefix: 'fas',\n iconName: 'circle-z',\n icon: [512, 512, [], \"e130\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 128H328c8.9 0 17.1 5 21.3 12.9s3.6 17.5-1.5 24.8L229.8 336H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-8.9 0-17.1-5-21.3-12.9s-3.6-17.5 1.5-24.8L282.2 176H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faStars = {\n prefix: 'fas',\n iconName: 'stars',\n icon: [512, 512, [], \"f762\", \"M325.8 152.3c1.3 4.6 5.5 7.7 10.2 7.7s8.9-3.1 10.2-7.7L360 104l48.3-13.8c4.6-1.3 7.7-5.5 7.7-10.2s-3.1-8.9-7.7-10.2L360 56 346.2 7.7C344.9 3.1 340.7 0 336 0s-8.9 3.1-10.2 7.7L312 56 263.7 69.8c-4.6 1.3-7.7 5.5-7.7 10.2s3.1 8.9 7.7 10.2L312 104l13.8 48.3zm-112.4 5.1c-8.8-17.9-34.3-17.9-43.1 0l-46.3 94L20.5 266.5C.9 269.3-7 293.5 7.2 307.4l74.9 73.2L64.5 483.9c-3.4 19.6 17.2 34.6 34.8 25.3l92.6-48.8 92.6 48.8c17.6 9.3 38.2-5.7 34.8-25.3L301.6 380.6l74.9-73.2c14.2-13.9 6.4-38.1-13.3-40.9L259.7 251.4l-46.3-94zm215.4 85.8l11 38.6c1 3.6 4.4 6.2 8.2 6.2s7.1-2.5 8.2-6.2l11-38.6 38.6-11c3.6-1 6.2-4.4 6.2-8.2s-2.5-7.1-6.2-8.2l-38.6-11-11-38.6c-1-3.6-4.4-6.2-8.2-6.2s-7.1 2.5-8.2 6.2l-11 38.6-38.6 11c-3.6 1-6.2 4.4-6.2 8.2s2.5 7.1 6.2 8.2l38.6 11z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [448, 512, [128293], \"f06d\", \"M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z\"]\n};\nvar faBedPulse = {\n prefix: 'fas',\n iconName: 'bed-pulse',\n icon: [640, 512, [\"procedures\"], \"f487\", \"M483.2 9.6L524 64h92c13.3 0 24 10.7 24 24s-10.7 24-24 24H512c-7.6 0-14.7-3.6-19.2-9.6L468.7 70.3l-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L339.2 112H216c-13.3 0-24-10.7-24-24s10.7-24 24-24H352c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5C445.9 6.2 453.2 1 461.6 .1s16.6 2.7 21.6 9.5zM320 160h12.7l20.7 31.1c11.2 16.8 30.6 26.3 50.7 24.8s37.9-13.7 46.5-32L461.9 160H544c53 0 96 43 96 96V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V352H288V192c0-17.7 14.3-32 32-32zm-144 0a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faProcedures = faBedPulse;\nvar faHouseDay = {\n prefix: 'fas',\n iconName: 'house-day',\n icon: [640, 512, [], \"e00e\", \"M174.2 8.3C171.4 3.2 166-.1 160.1-.1s-11.3 3.2-14.1 8.4L118.4 59.5 62.8 42.9c-5.6-1.7-11.7-.1-15.9 4s-5.7 10.3-4 15.9l16.7 55.7L8.3 146.1c-5.2 2.8-8.4 8.2-8.4 14.1s3.2 11.3 8.4 14.1l51.2 27.6L42.8 257.6c-1.7 5.6-.1 11.7 4 15.9s10.3 5.7 15.9 4l55.7-16.7L133.1 288l57.4-53c-9.4 3.9-19.7 6-30.5 6c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80c0 13.1-3.1 25.4-8.7 36.3L296 137.5l-35.3-19 16.7-55.7c1.7-5.6 .1-11.7-4-15.9s-10.3-5.7-15.9-4L201.8 59.5 174.2 8.3zM112 160a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm309.7-55.5c-12.3-11.3-31.2-11.3-43.4 0l-208 192c-9.7 8.9-12.9 22.9-8.1 35.2S178.8 352 192 352h32V464c0 26.5 21.5 48 48 48H528c26.5 0 48-21.5 48-48V352h32c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8.1-35.2l-208-192zM352 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V304z\"]\n};\nvar faShuttleSpace = {\n prefix: 'fas',\n iconName: 'shuttle-space',\n icon: [640, 512, [\"space-shuttle\"], \"f197\", \"M130 480c40.6 0 80.4-11 115.2-31.9L352 384l-224 0 0 96h2zM352 128L245.2 63.9C210.4 43 170.6 32 130 32h-2v96l224 0zM96 128l0-96H80C53.5 32 32 53.5 32 80v48h8c-22.1 0-40 17.9-40 40v16V328v16c0 22.1 17.9 40 40 40H32v48c0 26.5 21.5 48 48 48H96l0-96h8c26.2 0 49.4-12.6 64-32H456c69.3 0 135-22.7 179.2-81.6c6.4-8.5 6.4-20.3 0-28.8C591 182.7 525.3 160 456 160H168c-14.6-19.4-37.8-32-64-32l-8 0zM512 243.6v24.9c0 19.6-15.9 35.6-35.6 35.6c-2.5 0-4.4-2-4.4-4.4V212.4c0-2.5 2-4.4 4.4-4.4c19.6 0 35.6 15.9 35.6 35.6z\"]\n};\nvar faSpaceShuttle = faShuttleSpace;\nvar faShirtLongSleeve = {\n prefix: 'fas',\n iconName: 'shirt-long-sleeve',\n icon: [640, 512, [], \"e3c7\", \"M157 .3c-32.1 2.5-61 20.9-76.7 49.5L13.9 170.5C4.8 187 0 205.6 0 224.4V384c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V224.4c0-2.7 .7-5.3 2-7.7l46-83.7V448c0 35.3 28.7 64 64 64H432c35.3 0 64-28.7 64-64V133.1l46 83.7c1.3 2.4 2 5 2 7.7V384c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V224.4c0-18.9-4.8-37.4-13.9-54L559.7 49.7C544.1 21.2 515.1 2.8 483 .3c-1-.2-2-.3-3-.3h-4.4H460 432c-8.8 0-15.9 7.2-17.3 15.9C407.1 61.4 367.6 96 320 96s-87.1-34.6-94.7-80.1C223.9 7.2 216.8 0 208 0H180 164.4 160c-1 0-2 .1-3 .3z\"]\n};\nvar faChartPieSimple = {\n prefix: 'fas',\n iconName: 'chart-pie-simple',\n icon: [512, 512, [\"chart-pie-alt\"], \"f64e\", \"M495.4 240H272V16.6c0-9 7-16.6 16-16.6C411.7 0 512 100.3 512 224c0 9-7.6 16-16.6 16zM190.2 37.2c18.1-3.8 33.8 11 33.8 29.5V288H445.3c18.5 0 33.3 15.7 29.5 33.8C451.9 430.5 355.5 512 240 512C107.5 512 0 404.6 0 272C0 156.5 81.5 60.1 190.2 37.2z\"]\n};\nvar faChartPieAlt = faChartPieSimple;\nvar faFaceLaugh = {\n prefix: 'fas',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faLaugh = faFaceLaugh;\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M88.7 223.8L0 375.8V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H416c35.3 0 64 28.7 64 64v32H144c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224H544c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480H32c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z\"]\n};\nvar faAlbumCollectionCircleUser = {\n prefix: 'fas',\n iconName: 'album-collection-circle-user',\n icon: [640, 512, [], \"e48f\", \"M32 24c0 13.3 10.7 24 24 24H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H56C42.7 0 32 10.7 32 24zM48 160c-13.8 0-26.9 5.9-36 16.2S-1.3 200.3 .4 214l32 256c3 24 23.4 42 47.6 42H394.8c-18.9-13.3-35.1-30.3-47.5-49.9c-26.9 11.4-58 17.9-91.3 17.9C154.4 480 72 419.1 72 344s82.4-136 184-136c45.4 0 86.9 12.1 119 32.2c31.5-29.9 74.2-48.2 121-48.2c4.5 0 9 .2 13.4 .5c-2-5.9-5.2-11.5-9.4-16.3c-9.1-10.3-22.2-16.2-36-16.2H48zM256 376c17.7 0 32-10.7 32-24s-14.3-24-32-24s-32 10.7-32 24s14.3 24 32 24zM40 80c-13.3 0-24 10.7-24 24s10.7 24 24 24H472c13.3 0 24-10.7 24-24s-10.7-24-24-24H40zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-66.3 80.7C553.5 468.1 526.2 480 496 480s-57.5-11.9-77.7-31.3c6.2-19 24-32.7 45.1-32.7h65.2c21 0 38.9 13.7 45.1 32.7zM448 336a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faCandy = {\n prefix: 'fas',\n iconName: 'candy',\n icon: [640, 512, [127852], \"e3e7\", \"M318.1 64c-24.5 .2-47.9 5.1-69.4 13.7L419.9 420c20.3-12.4 38.2-28.5 52.6-47.3L318.1 64zM492.3 340.8c4.7-9.6 8.7-19.6 11.8-30l93.2 46.6c10.5 5.3 23.3 2.1 30.2-7.4s5.8-22.7-2.5-31l-29.6-29.6 29.1-10.9C633.8 275 640 266 640 256s-6.2-19-15.6-22.5l-29.1-10.9L625 193c8.3-8.3 9.4-21.5 2.5-31s-19.7-12.7-30.2-7.4L504 201.1C483.7 132.9 426.5 80.6 355.5 67.3L492.3 340.8zm-101 93.5L220.1 92c-20.3 12.4-38.2 28.5-52.6 47.3L321.9 448c24.5-.2 47.9-5.1 69.4-13.7zM284.5 444.7L147.7 171.2c-4.7 9.6-8.7 19.6-11.8 30L42.7 154.5c-10.5-5.3-23.3-2.1-30.2 7.4s-5.8 22.7 2.5 31l29.6 29.6L15.6 233.5C6.2 237 0 246 0 256s6.2 19 15.6 22.5l29.1 10.9L15 319c-8.3 8.3-9.4 21.5-2.5 31s19.7 12.7 30.2 7.4L136 310.9c20.3 68.2 77.5 120.6 148.5 133.9z\"]\n};\nvar faBowlHot = {\n prefix: 'fas',\n iconName: 'bowl-hot',\n icon: [512, 512, [\"soup\"], \"f823\", \"M152 0c-13.3 0-24 10.7-24 24v8c0 32.7 15.4 63.6 41.6 83.2C183.7 125.8 192 142.4 192 160v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8c0-32.7-15.4-63.6-41.6-83.2C184.3 66.2 176 49.6 176 32V24c0-13.3-10.7-24-24-24zM33.6 224C15.4 224 .9 239.3 2 257.5c5.4 91.7 59.7 169.7 136.4 209.7l1.2 9.7c2.5 20 19.5 35 39.7 35H332.7c20.2 0 37.2-15 39.7-35l1.2-9.7c76.8-40 131-118 136.4-209.7c1.1-18.2-13.4-33.5-31.6-33.5H33.6zM304 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v8c0 32.7 15.4 63.6 41.6 83.2C311.7 125.8 320 142.4 320 160v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8c0-32.7-15.4-63.6-41.6-83.2C312.3 66.2 304 49.6 304 32V24z\"]\n};\nvar faSoup = faBowlHot;\nvar faFlatbread = {\n prefix: 'fas',\n iconName: 'flatbread',\n icon: [512, 512, [129747], \"e40b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM363.3 171.3l-192 192c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l192-192c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm-112-70.6c6.2 6.2 6.2 16.4 0 22.6l-128 128c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l128-128c6.2-6.2 16.4-6.2 22.6 0zm160 182.6l-128 128c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l128-128c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faHeartCirclePlus = {\n prefix: 'fas',\n iconName: 'heart-circle-plus',\n icon: [576, 512, [], \"e500\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCodeFork = {\n prefix: 'fas',\n iconName: 'code-fork',\n icon: [448, 512, [], \"e13b\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3V192c0 17.7 14.3 32 32 32H304c17.7 0 32-14.3 32-32V153.3C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V192c0 53-43 96-96 96H256v70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V288H144c-53 0-96-43-96-96V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM248 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [127961], \"f64f\", \"M480 48c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48V96H224V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V96H112V24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144v96V464c0 26.5 21.5 48 48 48H304h32 96H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H480V48zm96 320v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM240 416H208c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zM128 400c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM560 256c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32zM256 176v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM112 160c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32zM256 304c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM112 320H80c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zm304-48v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM400 64c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h32zm16 112v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faSignalBarsWeak = {\n prefix: 'fas',\n iconName: 'signal-bars-weak',\n icon: [640, 512, [\"signal-alt-1\"], \"f691\", \"M32 432c0-26.5 21.5-48 48-48s48 21.5 48 48v32c0 26.5-21.5 48-48 48s-48-21.5-48-48V432z\"]\n};\nvar faSignalAlt1 = faSignalBarsWeak;\nvar faMicrophoneLines = {\n prefix: 'fas',\n iconName: 'microphone-lines',\n icon: [384, 512, [127897, \"microphone-alt\"], \"f3c9\", \"M96 96V256c0 53 43 96 96 96s96-43 96-96H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V192H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96S96 43 96 96zM320 240v16c0 70.7-57.3 128-128 128s-128-57.3-128-128V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24z\"]\n};\nvar faMicrophoneAlt = faMicrophoneLines;\nvar faClockTwelve = {\n prefix: 'fas',\n iconName: 'clock-twelve',\n icon: [512, 512, [], \"e358\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm24-392V256c0 13.3-10.7 24-24 24s-24-10.7-24-24V120c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [127798], \"f816\", \"M428.3 3c11.6-6.4 26.2-2.3 32.6 9.3l4.8 8.7c19.3 34.7 19.8 75.7 3.4 110C495.8 159.6 512 197.9 512 240c0 18.5-3.1 36.3-8.9 52.8c-6.1 17.3-28.5 16.3-36.8-.1l-11.7-23.4c-4.1-8.1-12.4-13.3-21.5-13.3H360c-13.3 0-24-10.7-24-24V152c0-13.3-10.7-24-24-24l-17.1 0c-21.3 0-30-23.9-10.8-32.9C304.7 85.4 327.7 80 352 80c28.3 0 54.8 7.3 77.8 20.2c5.5-18.2 3.7-38.4-6-55.8L419 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zM171.2 345.5L264 160l40 0v80c0 26.5 21.5 48 48 48h76.2l23.9 47.8C372.3 443.9 244.3 512 103.2 512H44.4C19.9 512 0 492.1 0 467.6c0-20.8 14.5-38.8 34.8-43.3l49.8-11.1c37.6-8.4 69.5-33.2 86.7-67.7z\"]\n};\nvar faCitrusSlice = {\n prefix: 'fas',\n iconName: 'citrus-slice',\n icon: [512, 512, [], \"e2f5\", \"M41 391c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c115.6 115.6 302.6 116 418.3 .3S540.5 122.6 425 7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c96.9 96.9 97.1 253.6 .3 350.4S137.9 487.9 41 391zm116.3 32.9c9.6 2.7 18.8-4.9 18.8-14.9V264.5c0-6.2-4.3-11.5-10-14c-5.9-2.6-13-2.1-17.6 2.5L59.3 342.2c-6.2 6.2-6.2 16.4 0 22.6l4 4c27.1 27.1 59.6 45.5 94 55.2zM250.5 166c2.5 5.7 7.8 10 14 10H409c10 0 17.6-9.1 14.9-18.8C414.2 123 396 90.6 369.1 63.6l-4.3-4.3c-6.2-6.2-16.4-6.2-22.6 0L253 148.4c-4.6 4.6-5.2 11.7-2.5 17.6zm.6 50.5c-2 4.9-1.4 10.6 2.4 14.3l114 114c6.6 6.6 17.4 6.2 22.9-1.3c26.2-35.8 40.1-77.8 41.5-120.1c.3-8.6-6.8-15.4-15.4-15.4H263c-5.3 0-9.8 3.7-11.8 8.5zm-34.6 34.6c-4.9 2-8.5 6.5-8.5 11.8V416.4c0 8.6 6.8 15.7 15.4 15.4c42.4-1.4 84.4-15.3 120.1-41.5c7.5-5.5 7.9-16.3 1.3-22.9l-114-114c-3.7-3.7-9.4-4.4-14.3-2.4z\"]\n};\nvar faSheep = {\n prefix: 'fas',\n iconName: 'sheep',\n icon: [640, 512, [128017], \"f711\", \"M384 135.8V208c0 44.2 35.8 80 80 80h32c44.2 0 80-35.8 80-80V135.8l14.5 6.2c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5L561.6 77.4C544.7 50.2 514.5 32 480 32s-64.7 18.2-81.6 45.4L350.5 97.9c-12.2 5.2-17.8 19.3-12.6 31.5s19.3 17.8 31.5 12.6l14.5-6.2zm80-7.8a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM352 175.4c-18.7-2.7-35.5-14.8-43.5-33.4c-6.9-16.1-5.7-33.5 1.8-47.9C299 76 278.9 64 256 64c-19.2 0-36.5 8.5-48.2 21.9C196.9 77.2 183 72 168 72c-30.1 0-55.3 20.8-62.2 48.8c-3.2-.5-6.5-.8-9.8-.8c-35.3 0-64 28.7-64 64c0 5.3 .7 10.5 1.9 15.5C13.7 210.3 0 231.5 0 256s13.7 45.7 33.9 56.5c-1.2 5-1.9 10.2-1.9 15.5c0 35.3 28.7 64 64 64c.5 0 1 0 1.5 0l17.6 93.9c2.8 15.1 16.1 26.1 31.5 26.1H176c17.7 0 32-14.3 32-32V426.3c11.7 13.3 28.9 21.7 48 21.7s36.3-8.4 48-21.7V480c0 17.7 14.3 32 32 32h29.4c15.4 0 28.6-11 31.4-26.1L414.5 392c.5 0 1 0 1.5 0c35.3 0 64-28.7 64-64c0-2.7-.2-5.4-.5-8H464c-61.9 0-112-50.1-112-112V175.4z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [128275], \"f09c\", \"M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H144V144z\"]\n};\nvar faColonSign = {\n prefix: 'fas',\n iconName: 'colon-sign',\n icon: [384, 512, [], \"e140\", \"M255 39.8c4.3-17.1-6.1-34.5-23.3-38.8S197.2 7.1 193 24.2L181.9 68.6C96.1 87.8 32 164.4 32 256c0 58.1 25.8 110.2 66.7 145.4L81 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l13-52.1c9 3.4 18.4 6.2 28 8.2L177 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l10.4-41.4c33.4-4.4 64.1-17.4 89.8-36.7c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-10.2 7.7-21.7 13.9-34 18.3L321 160c9.4-.3 18.5-4.7 24.6-12.8c10.6-14.1 7.8-34.2-6.4-44.8c-1.1-.8-2.2-1.6-3.3-2.4L351 39.8c4.3-17.1-6.1-34.5-23.3-38.8S293.2 7.1 289 24.2L277.2 71.5c-9.3-2.7-18.8-4.6-28.6-5.9L255 39.8zM163.2 143.3L117.3 326.8C103.9 306.5 96 282.2 96 256c0-48.7 27.2-91 67.2-112.7zm8.6 229.5l61.1-244.6c9.9 .7 19.5 2.5 28.7 5.3l-62 248.1c-9.7-1.9-19-4.8-27.8-8.8z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M256 48C141.1 48 48 141.1 48 256v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V256C0 114.6 114.6 0 256 0S512 114.6 512 256V400.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24H240c-26.5 0-48-21.5-48-48s21.5-48 48-48h32c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40V256c0-114.9-93.1-208-208-208zM144 208h16c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V272c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64v48c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V240c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faBadgerHoney = {\n prefix: 'fas',\n iconName: 'badger-honey',\n icon: [640, 512, [129441], \"f6b4\", \"M164.6 389.3l16-37.3H298.7l16.9 101.3c2.6 15.4 15.9 26.7 31.6 26.7h31.1c19.8 0 34.8-17.8 31.6-37.3L393 342.1c27.9-29 80.6-70.8 144.1-90.8l16.1 25.8c3.1 5 10.4 5 13.6 0l22.8-36.5c12.9-2.1 25.2-7.4 34.4-16.6c10.2-10.2 16-24.1 16-38.6v-3.8c0-23.2-12.6-44.5-32.8-55.8L525.3 80.3C506.1 69.6 484.5 64 462.5 64c-20.1 0-39.9 4.7-57.8 13.6L400 80c-21 10.5-44.2 16-67.8 16H160 128C57.3 96 0 153.3 0 224v32c0 17.7 14.3 32 32 32c5.4 0 10.6-1.4 15-3.7c9.1 17.1 22.1 31.9 37.7 43.3l-16.8 59c-2.5 8.8-2.5 18.2 .2 27l13.1 43.7c4.1 13.5 16.5 22.8 30.7 22.8H141c21.4 0 36.8-20.7 30.7-41.2l-8.3-27.7c-2.2-7.2-1.7-14.9 1.2-21.8zM570 160H518.6c.9 2.5 1.4 5.2 1.4 8c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-2.8 .5-5.5 1.4-8h-5.9c-23.2 0-46 6.3-65.9 18.2L294.8 242.3c-14.9 9-32 13.7-49.4 13.7H192c-46.4 0-86.2-28.2-103.2-68.5C102 161.7 129 144 160 144H332.2c31 0 61.5-7.2 89.2-21.1l4.7-2.4c11.3-5.6 23.7-8.6 36.3-8.6c13.8 0 27.4 3.5 39.5 10.2L570 160z\"]\n};\nvar faH4 = {\n prefix: 'fas',\n iconName: 'h4',\n icon: [640, 512, [], \"f86a\", \"M479 103.8L441 256H576V96c0-17.7 14.3-32 32-32s32 14.3 32 32V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V320H400c-9.9 0-19.2-4.5-25.2-12.3s-8.2-17.9-5.8-27.5l48-192c4.3-17.1 21.7-27.6 38.8-23.3s27.6 21.7 23.3 38.8zM32 64c17.7 0 32 14.3 32 32V224H256V96c0-17.7 14.3-32 32-32s32 14.3 32 32V256 416c0 17.7-14.3 32-32 32s-32-14.3-32-32V288H64V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V256 96C0 78.3 14.3 64 32 64z\"]\n};\nvar faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68V384 252.6c-4 1-8 1.8-12.3 2.3l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V350.9L301.2 210.7c7-4.4 13.3-9.7 18.8-15.7c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4L522.3 13.1C517.2 5 508.1 0 498.4 0H141.6c-9.7 0-18.8 5-23.9 13.1l-22.7 36L38.8 5.1zm73.4 218.1c4 .5 8.1 .8 12.1 .8c11 0 21.4-2 31-5.6L48.9 134.5c-6.1 40.6 19.5 82.8 63.3 88.7zM160 384V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H480c12.9 0 24.8-3.8 34.9-10.3L365.5 384H160z\"]\n};\nvar faRoadCircleXmark = {\n prefix: 'fas',\n iconName: 'road-circle-xmark',\n icon: [640, 512, [], \"e566\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faSignalSlash = {\n prefix: 'fas',\n iconName: 'signal-slash',\n icon: [640, 512, [], \"f695\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L608 451.2V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V401.1l-64-50.2V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V300.8l-64-50.2V224c0-17.7-14.3-32-32-32c-10.7 0-20.1 5.2-25.9 13.2L38.8 5.1zM576 512l-.3 0h.6l-.3 0zm-96-32v-5.8l-64-50.4V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM352 373.3l-64-50.4V480c0 17.7 14.3 32 32 32s32-14.3 32-32V373.3zM192 288c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V320c0-17.7-14.3-32-32-32zM96 416c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32s32-14.3 32-32V416z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM472 200H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H472c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMarsStrokeUp = {\n prefix: 'fas',\n iconName: 'mars-stroke-up',\n icon: [320, 512, [9896, \"mars-stroke-v\"], \"f22a\", \"M148.7 4.7c6.2-6.2 16.4-6.2 22.6 0l64 64c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9H184v24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H184v24c0 .6 0 1.2-.1 1.8c77 11.6 136.1 78 136.1 158.2c0 88.4-71.6 160-160 160S0 440.4 0 352c0-80.2 59.1-146.7 136.1-158.2c0-.6-.1-1.2-.1-1.8V168H104c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V96H96c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l64-64zM256 352A96 96 0 1 0 64 352a96 96 0 1 0 192 0z\"]\n};\nvar faMarsStrokeV = faMarsStrokeUp;\nvar faChampagneGlasses = {\n prefix: 'fas',\n iconName: 'champagne-glasses',\n icon: [640, 512, [129346, \"glass-cheers\"], \"f79f\", \"M155.6 17.3C163 3 179.9-3.6 195 1.9L320 47.5l125-45.6c15.1-5.5 32 1.1 39.4 15.4l78.8 152.9c28.8 55.8 10.3 122.3-38.5 156.6L556.1 413l41-15c16.6-6 35 2.5 41 19.1s-2.5 35-19.1 41l-71.1 25.9L476.8 510c-16.6 6.1-35-2.5-41-19.1s2.5-35 19.1-41l41-15-31.3-86.2c-59.4 5.2-116.2-34-130-95.2L320 188.8l-14.6 64.7c-13.8 61.3-70.6 100.4-130 95.2l-31.3 86.2 41 15c16.6 6 25.2 24.4 19.1 41s-24.4 25.2-41 19.1L92.2 484.1 21.1 458.2c-16.6-6.1-25.2-24.4-19.1-41s24.4-25.2 41-19.1l41 15 31.3-86.2C66.5 292.5 48.1 226 76.9 170.2L155.6 17.3zm44 54.4l-27.2 52.8L261.6 157l13.1-57.9L199.6 71.7zm240.9 0L365.4 99.1 378.5 157l89.2-32.5L440.5 71.7z\"]\n};\nvar faGlassCheers = faChampagneGlasses;\nvar faTaco = {\n prefix: 'fas',\n iconName: 'taco',\n icon: [512, 512, [127790], \"f826\", \"M274.8 38.4l44.1 34.2c5.6 4.4 12.6 6.6 19.7 6.4l55.8-1.7c14-.4 26.5 8.6 30.4 22.1l15.6 53.6c2 6.8 6.3 12.8 12.2 16.8L498.6 201c11.6 7.9 16.3 22.5 11.6 35.7l-17.1 47.7C441.1 209.2 354.3 160 256 160s-185.1 49.2-237.1 124.4L1.8 236.7c-4.7-13.1 0-27.8 11.6-35.7l46.1-31.4c5.9-4 10.2-9.9 12.2-16.8L87.3 99.3c3.9-13.4 16.4-22.5 30.4-22.1L173.4 79c7.1 .2 14.1-2 19.7-6.4l44.1-34.2c11-8.6 26.5-8.6 37.5 0zM512 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32C0 306.6 114.6 192 256 192s256 114.6 256 256zM112 416a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faHexagonPlus = {\n prefix: 'fas',\n iconName: 'hexagon-plus',\n icon: [512, 512, [\"plus-hexagon\"], \"f300\", \"M17.1 292c-12.9-22.3-12.9-49.7 0-72L105.4 67.1c12.9-22.3 36.6-36 62.4-36H344.3c25.7 0 49.5 13.7 62.4 36L494.9 220c12.9 22.3 12.9 49.7 0 72L406.6 444.9c-12.9 22.3-36.6 36-62.4 36H167.7c-25.7 0-49.5-13.7-62.4-36L17.1 292zM232 344c0 13.3 10.7 24 24 24s24-10.7 24-24V280h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V168c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faPlusHexagon = faHexagonPlus;\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM112 192H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHouseCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-circle-exclamation',\n icon: [640, 512, [], \"e50a\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faFileArrowUp = {\n prefix: 'fas',\n iconName: 'file-arrow-up',\n icon: [384, 512, [\"file-upload\"], \"f574\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24V305.9l-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31V408z\"]\n};\nvar faFileUpload = faFileArrowUp;\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [\"wifi-3\", \"wifi-strong\"], \"f1eb\", \"M54.2 202.9C123.2 136.7 216.8 96 320 96s196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32S90.3 79.5 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9zM320 256c56.8 0 108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c39.5-34.9 91.3-56 148.2-56zm64 160a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faWifi3 = faWifi;\nvar faWifiStrong = faWifi;\nvar faMessages = {\n prefix: 'fas',\n iconName: 'messages',\n icon: [640, 512, [\"comments-alt\"], \"f4b6\", \"M64 0C28.7 0 0 28.7 0 64V256c0 35.3 28.7 64 64 64H96v48c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L202.7 320H352c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM352 352H256v32c0 35.3 28.7 64 64 64H437.3l81.1 60.8c4.8 3.6 11.3 4.2 16.8 1.5s8.8-8.2 8.8-14.3V448h32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H448V256c0 53-43 96-96 96z\"]\n};\nvar faCommentsAlt = faMessages;\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [128705, \"bathtub\"], \"f2cd\", \"M96 77.3c0-7.3 5.9-13.3 13.3-13.3c3.5 0 6.9 1.4 9.4 3.9l14.9 14.9C130 91.8 128 101.7 128 112c0 19.9 7.2 38 19.2 52c-5.3 9.2-4 21.1 3.8 29c9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9c-7.9-7.9-19.8-9.1-29-3.8C246 39.2 227.9 32 208 32c-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0C66.6 0 32 34.6 32 77.3V256c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H96V77.3zM32 352v16c0 28.4 12.4 54 32 71.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V464H384v16c0 17.7 14.3 32 32 32s32-14.3 32-32V439.6c19.6-17.6 32-43.1 32-71.6V352H32z\"]\n};\nvar faBathtub = faBath;\nvar faUmbrellaSimple = {\n prefix: 'fas',\n iconName: 'umbrella-simple',\n icon: [512, 512, [\"umbrella-alt\"], \"e2bc\", \"M256 0c17.7 0 32 14.3 32 32v2C403.8 48.4 495.6 140.2 510 256.1c2.2 17.5-12.4 31.9-30 31.9H32C14.3 288-.2 273.6 2 256.1C16.4 140.2 108.2 48.4 224 34V32c0-17.7 14.3-32 32-32zm32 430.6c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4V320h64V430.6z\"]\n};\nvar faUmbrellaAlt = faUmbrellaSimple;\nvar faRectangleHistoryCirclePlus = {\n prefix: 'fas',\n iconName: 'rectangle-history-circle-plus',\n icon: [640, 512, [], \"e4a3\", \"M320 368c0 59.5 29.5 112.1 74.8 144L64 512c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64l384 0c23.8 0 44.5 12.9 55.5 32.2c-2.5-.1-5-.2-7.5-.2c-97.2 0-176 78.8-176 176zM440 80c13.3 0 24 10.7 24 24s-10.7 24-24 24L72 128c-13.3 0-24-10.7-24-24s10.7-24 24-24l368 0zM392 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L120 48c-13.3 0-24-10.7-24-24s10.7-24 24-24H392zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H432c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H512V304z\"]\n};\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M16 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H128V224c0 53 43 96 96 96s96-43 96-96V96H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V224c0 88.4-71.6 160-160 160s-160-71.6-160-160V96H48C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faPrescriptionBottlePill = {\n prefix: 'fas',\n iconName: 'prescription-bottle-pill',\n icon: [576, 512, [], \"e5c0\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352v83.2c-57 29.1-96 88.4-96 156.8c0 54.5 24.8 103.3 63.8 135.6c-9.4 5.4-20.2 8.4-31.8 8.4H96c-35.3 0-64-28.7-64-64V416H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V320H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V224H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V128zM304.8 300.5c6.7-12.6 23.6-13.5 33.7-3.4L502.9 461.5c10.1 10.1 9.2 27-3.4 33.7C479.4 505.9 456.4 512 432 512c-79.5 0-144-64.5-144-144c0-24.4 6.1-47.4 16.8-67.5zm254.5 135c-6.7 12.6-23.6 13.5-33.7 3.4L361.1 274.5c-10.1-10.1-9.2-27 3.4-33.7C384.6 230.1 407.6 224 432 224c79.5 0 144 64.5 144 144c0 24.4-6.1 47.4-16.8 67.5z\"]\n};\nvar faUserPen = {\n prefix: 'fas',\n iconName: 'user-pen',\n icon: [640, 512, [\"user-edit\"], \"f4ff\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H322.8c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7l40.3-40.3c-32.1-31-75.7-50.1-123.9-50.1H178.3zm435.5-68.3c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z\"]\n};\nvar faUserEdit = faUserPen;\nvar faBinarySlash = {\n prefix: 'fas',\n iconName: 'binary-slash',\n icon: [640, 512, [], \"e33e\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512 376V352c0-35.3-28.7-64-64-64H399.7L298 208.3c13.5-11.7 22-29 22-48.3V64c0-35.3-28.7-64-64-64H192c-35.3 0-64 28.7-64 64V75L38.8 5.1zM192 125.2V64h64v96H236.4L192 125.2zM464 32c0-10.3-4.9-19.9-13.3-26s-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V160H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V32zM240 320c0-10.3-4.9-19.9-13.3-26s-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H240V320zm80 32v96c0 35.3 28.7 64 64 64h64c20.1 0 38.1-9.3 49.8-23.8l-51-40.2H384V398.5l-63.9-50.3c-.1 1.3-.1 2.5-.1 3.8z\"]\n};\nvar faSquareO = {\n prefix: 'fas',\n iconName: 'square-o',\n icon: [448, 512, [], \"e278\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 224a80 80 0 1 0 160 0 80 80 0 1 0 -160 0zm80 128a128 128 0 1 1 0-256 128 128 0 1 1 0 256z\"]\n};\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32v7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92v71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3V128c0-53-43-96-96-96s-96 43-96 96v32c0 17.7 14.3 32 32 32s32-14.3 32-32V128zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5V335.6c0-14.1 9.3-26.6 22.8-30.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24H64.3c-.2-2.8-.3-5.6-.3-8.5V368H24zm592 48c13.3 0 24-10.7 24-24s-10.7-24-24-24H305.9c-6.7 16.3-14.2 32.3-22.3 48H616z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM312.6 63.7c-6.2-6.2-16.4-6.2-22.6 0L256 97.6 222.1 63.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l33.9 33.9-45.3 45.3-56.6-56.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l56.6 56.6-45.3 45.3L86.3 199.4c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L97.6 256 63.7 289.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 45.3 45.3-56.6 56.6c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56.6-56.6 45.3 45.3-33.9 33.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L256 414.4l33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 45.3-45.3 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 45.3-45.3 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L414.4 256l33.9-33.9c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-33.9 33.9-45.3-45.3 56.6-56.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-56.6 56.6-45.3-45.3 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6zM142.9 256l45.3-45.3L233.4 256l-45.3 45.3L142.9 256zm67.9 67.9L256 278.6l45.3 45.3L256 369.1l-45.3-45.3zM278.6 256l45.3-45.3L369.1 256l-45.3 45.3L278.6 256zm22.6-67.9L256 233.4l-45.3-45.3L256 142.9l45.3 45.3z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M0 64C0 46.3 14.3 32 32 32H80 96 224c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128H96 80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V256 96H32C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64H112V224H224zM112 288V416H256c35.3 0 64-28.7 64-64s-28.7-64-64-64H224 112z\"]\n};\nvar faAnchorLock = {\n prefix: 'fas',\n iconName: 'anchor-lock',\n icon: [640, 512, [], \"e4ad\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8 0 15.9-.6 23.6-1.7c-4.8-9-7.6-19.3-7.6-30.3V446.7c-5.2 .9-10.5 1.3-16 1.3H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faBuildingNgo = {\n prefix: 'fas',\n iconName: 'building-ngo',\n icon: [384, 512, [], \"e4d7\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM168 64h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H184v64h16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v24c0 13.3-10.7 24-24 24H176c-13.3 0-24-10.7-24-24V80c0-8.8 7.2-16 16-16zM304 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8-7.2-16-16-16zm-48 16c0-26.5 21.5-48 48-48s48 21.5 48 48v32c0 26.5-21.5 48-48 48s-48-21.5-48-48V112zM61.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4L64 132.8V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4z\"]\n};\nvar faTransporter3 = {\n prefix: 'fas',\n iconName: 'transporter-3',\n icon: [512, 512, [], \"e045\", \"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM128 512h88 80 88c17.7 0 32-14.3 32-32s-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32zM56.7 102.6C55.6 98.7 52.1 96 48 96s-7.6 2.7-8.7 6.6L32 128 6.6 135.3C2.7 136.4 0 139.9 0 144s2.7 7.6 6.6 8.7L32 160l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L64 160l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L64 128l-7.3-25.4zM480 32L472.7 6.6C471.6 2.7 468.1 0 464 0s-7.6 2.7-8.7 6.6L448 32l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L448 64l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L480 64l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L480 32zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176zm-32 64c-8.8 0-16 7.2-16 16s7.2 16 16 16H368c8.8 0 16-7.2 16-16s-7.2-16-16-16H144zm-32 64c-8.8 0-16 7.2-16 16s7.2 16 16 16H400c8.8 0 16-7.2 16-16s-7.2-16-16-16H112zm64 64c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176zm0 64c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176z\"]\n};\nvar faEngineWarning = {\n prefix: 'fas',\n iconName: 'engine-warning',\n icon: [640, 512, [\"engine-exclamation\"], \"f5f2\", \"M424 88c0 13.3-10.7 24-24 24l-72 0v32h81.5c14.5 0 28.6 4.9 40 14L488 188.8c15.2 12.1 24 30.5 24 50V384c0 35.3-28.7 64-64 64H254.8c-19.4 0-37.8-8.8-50-24l-32-40H128c-17.7 0-32-14.3-32-32V280H48v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V160c0-13.3 10.7-24 24-24s24 10.7 24 24v72H96V176c0-17.7 14.3-32 32-32l32 0 48 0 72 0V112l-72 0c-13.3 0-24-10.7-24-24s10.7-24 24-24H400c13.3 0 24 10.7 24 24zM324 208c0-11-9-20-20-20s-20 9-20 20v88c0 11 9 20 20 20s20-9 20-20V208zM304 392a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM576 192h32c17.7 0 32 14.3 32 32V416c0 17.7-14.3 32-32 32H576c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z\"]\n};\nvar faEngineExclamation = faEngineWarning;\nvar faCircleDownRight = {\n prefix: 'fas',\n iconName: 'circle-down-right',\n icon: [512, 512, [], \"e108\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zm96 198.6V336c0 8.8-7.2 16-16 16H198.6c-12.5 0-22.6-10.1-22.6-22.6c0-6 2.4-11.8 6.6-16L216 280l-66.3-66.3C146 210 144 205.1 144 200s2-10 5.7-13.7l36.7-36.7c3.6-3.6 8.5-5.7 13.7-5.7s10 2 13.7 5.7L280 216l33.4-33.4c4.2-4.2 10-6.6 16-6.6c12.5 0 22.6 10.1 22.6 22.6z\"]\n};\nvar faSquareK = {\n prefix: 'fas',\n iconName: 'square-k',\n icon: [448, 512, [], \"e274\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM313.1 168.8l-73 74.3 75.3 102.7c7.8 10.7 5.5 25.7-5.2 33.5s-25.7 5.5-33.5-5.2L206 277.8l-30 30.5V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V298.5 152c0-13.3 10.7-24 24-24s24 10.7 24 24v87.8L278.9 135.2c9.3-9.5 24.5-9.6 33.9-.3s9.6 24.5 .3 33.9z\"]\n};\nvar faManatSign = {\n prefix: 'fas',\n iconName: 'manat-sign',\n icon: [384, 512, [], \"e1d5\", \"M192 32c-17.7 0-32 14.3-32 32V98.7C69.2 113.9 0 192.9 0 288V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-59.6 40.8-109.8 96-124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V164c55.2 14.2 96 64.3 96 124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-95.1-69.2-174.1-160-189.3V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faMoneyCheckPen = {\n prefix: 'fas',\n iconName: 'money-check-pen',\n icon: [640, 512, [\"money-check-edit\"], \"f872\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H330.5l6-23.9c2.8-11.3 8.6-21.5 16.8-29.7L534.6 213.1c11.6-11.6 26.3-18.5 41.4-20.5V128c0-35.3-28.7-64-64-64H64zm48 224H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 208c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm517.8 27.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z\"]\n};\nvar faMoneyCheckEdit = faMoneyCheckPen;\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M369.8 37.4c14.7 9.8 18.7 29.7 8.9 44.4L337.1 144H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H294.5l-64 96H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H187.8l-65.2 97.7c-9.8 14.7-29.7 18.7-44.4 8.9s-18.7-29.7-8.9-44.4L110.9 368H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H153.5l64-96H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H260.2l65.2-97.7c9.8-14.7 29.7-18.7 44.4-8.9z\"]\n};\nvar faBorderTopLeft = {\n prefix: 'fas',\n iconName: 'border-top-left',\n icon: [448, 512, [\"border-style\"], \"f853\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336c0-8.8 7.2-16 16-16l336 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32C35.8 32 0 67.8 0 112L0 448zm160 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-96 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBorderStyle = faBorderTopLeft;\nvar faMapLocationDot = {\n prefix: 'fas',\n iconName: 'map-location-dot',\n icon: [576, 512, [\"map-marked-alt\"], \"f5a0\", \"M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152V422.8c0 9.8-6 18.6-15.1 22.3L416 503V200.4zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6V451.8L32.9 502.7C17.1 509 0 497.4 0 480.4V209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77V504.3L192 449.4V255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faMapMarkedAlt = faMapLocationDot;\nvar faTilde = {\n prefix: 'fas',\n iconName: 'tilde',\n icon: [448, 512, [63135], \"7e\", \"M99.9 192C80.1 192 64 208.1 64 227.9V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V227.9C0 172.7 44.7 128 99.9 128c26.5 0 51.9 10.5 70.6 29.3L322.7 309.5c6.7 6.7 15.9 10.5 25.4 10.5c19.8 0 35.9-16.1 35.9-35.9V192c0-17.7 14.3-32 32-32s32 14.3 32 32v92.1c0 55.2-44.7 99.9-99.9 99.9c-26.5 0-51.9-10.5-70.6-29.3L125.3 202.5c-6.7-6.7-15.9-10.5-25.4-10.5z\"]\n};\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9 0 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5C370.6 435.2 416 382.9 416 320c0-37-15.7-70.4-40.8-93.7c-7-6.5-6.5-18.6 1-24.4C410.1 175.5 432 134.3 432 88c0-16.8-2.9-33-8.2-48c-4.6-13 10.2-30 21.4-22c53.5 38 92.7 94.8 107.8 160.7c.5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9h26c3.4 0 6.2 2.6 6.3 6c.1 3.3 .2 6.6 .2 10c0 17.5-1.7 34.7-4.8 51.3c-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9H526c4.6 0 7.7 4.8 5.7 9C487.2 450.5 394.8 512 288 512S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9H64.5c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3C17.7 274.7 16 257.5 16 240c0-3.3 .1-6.7 .2-10c.1-3.4 2.9-6 6.3-6h26c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9C38.1 112.8 77.3 56 130.8 18c11.3-8 26 8.9 21.4 22c-5.3 15-8.2 31.2-8.2 48c0 46.3 21.9 87.5 55.8 113.9c7.5 5.8 8 17.9 1 24.4C175.7 249.6 160 283 160 320c0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"]\n};\nvar faSquarePollVertical = {\n prefix: 'fas',\n iconName: 'square-poll-vertical',\n icon: [448, 512, [\"poll\"], \"f681\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 192c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm64-64c0-17.7 14.3-32 32-32s32 14.3 32 32V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V160zM320 288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32z\"]\n};\nvar faPoll = faSquarePollVertical;\nvar faArrowDownSquareTriangle = {\n prefix: 'fas',\n iconName: 'arrow-down-square-triangle',\n icon: [576, 512, [\"sort-shapes-down-alt\"], \"f889\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 72c0-22.1 17.9-40 40-40H472c22.1 0 40 17.9 40 40V184c0 22.1-17.9 40-40 40H360c-22.1 0-40-17.9-40-40V72zM443.1 303l80 128c6.2 9.9 6.5 22.3 .9 32.5s-16.4 16.5-28 16.5H336c-11.6 0-22.3-6.3-28-16.5s-5.3-22.6 .9-32.5l80-128c5.8-9.4 16.1-15 27.1-15s21.3 5.7 27.1 15z\"]\n};\nvar faSortShapesDownAlt = faArrowDownSquareTriangle;\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [9749], \"f7b6\", \"M88 0C74.7 0 64 10.7 64 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C120.5 112.3 128 119.9 128 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C119.5 47.7 112 40.1 112 24c0-13.3-10.7-24-24-24zM32 192c-17.7 0-32 14.3-32 32V416c0 53 43 96 96 96H288c53 0 96-43 96-96h16c61.9 0 112-50.1 112-112s-50.1-112-112-112H352 32zm352 64h16c26.5 0 48 21.5 48 48s-21.5 48-48 48H384V256zM224 24c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C232.5 112.3 240 119.9 240 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C231.5 47.7 224 40.1 224 24z\"]\n};\nvar faDogLeashed = {\n prefix: 'fas',\n iconName: 'dog-leashed',\n icon: [576, 512, [129454], \"f6d4\", \"M122.7 4.1l160 144c6.6 5.9 7.1 16 1.2 22.6s-16 7.1-22.6 1.2l-160-144c-6.6-5.9-7.1-16-1.2-22.6s16-7.1 22.6-1.2zM144 192H256V383.3c-5.3 .5-10.6 .7-16 .7c-28.8 0-56-6.9-80-19.2V480c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V249.8c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192h30 16zM320 364.8c-10.1 5.2-20.8 9.4-32 12.6V208.1L416 262l0 218c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V364.8zM426.7 192l-6.2 37.2L305.9 180.9l26.8-161C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32h52.1c12.7 0 24.9 5.1 33.9 14.1L496 64h56c13.3 0 24 10.7 24 24v24c0 44.2-35.8 80-80 80H464 448 426.7zM448 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [\"battery-car\"], \"f5df\", \"M80 96c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32h16c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64l16 0zm304 96c0-8.8-7.2-16-16-16s-16 7.2-16 16v32H320c-8.8 0-16 7.2-16 16s7.2 16 16 16h32v32c0 8.8 7.2 16 16 16s16-7.2 16-16V256h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H384V192zM80 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBatteryCar = faCarBattery;\nvar faFaceDowncastSweat = {\n prefix: 'fas',\n iconName: 'face-downcast-sweat',\n icon: [512, 512, [], \"e371\", \"M35.2 126.3c4.1 1.1 8.4 1.7 12.8 1.7c26.5 0 48-21 48-47c0-5-1.8-11.3-4.6-18.1c-.3-.7-.6-1.4-.9-2.1c-8.9-20.2-26.5-44.9-36-57.5c-3.2-4.4-9.6-4.4-12.8 0C28.6 20.6 0 61 0 81c0 21.7 14.9 39.8 35.2 45.3zM256 0c-51.4 0-99.3 15.2-139.4 41.2c1.5 3.1 3 6.2 4.3 9.3c3.4 8 7.1 19 7.1 30.5c0 44.3-36.6 79-80 79c-9.6 0-18.8-1.7-27.4-4.8C7.3 186.2 0 220.2 0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0zM195.9 410.7c-5.9 6.6-16 7.1-22.6 1.2s-7.1-16-1.2-22.6C188.2 371.4 216.3 352 256 352s67.8 19.4 83.9 37.3c5.9 6.6 5.4 16.7-1.2 22.6s-16.7 5.4-22.6-1.2c-11.7-13-31.6-26.7-60.1-26.7s-48.4 13.7-60.1 26.7zM96 272c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm208-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H304c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMailboxFlagUp = {\n prefix: 'fas',\n iconName: 'mailbox-flag-up',\n icon: [576, 512, [], \"e5bb\", \"M400 16c-29.8 0-54.9 20.4-62 48H245.2C290.4 95.9 320 148.5 320 208V384c0 24.6-9.2 47-24.4 64H512c35.3 0 64-28.7 64-64V208c0-42.6-18.5-81-48-107.3V80c0-35.3-28.7-64-64-64H400zm0 208c-8.8 0-16-7.2-16-16V112 80c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H416v80c0 8.8-7.2 16-16 16zM0 208V384c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V208c0-79.5-64.5-144-144-144S0 128.5 0 208zm64 0c0-8.8 7.2-16 16-16H208c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16z\"]\n};\nvar faMemoCircleInfo = {\n prefix: 'fas',\n iconName: 'memo-circle-info',\n icon: [576, 512, [], \"e49a\", \"M0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V198.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm64 80c0 8.8 7.2 16 16 16H304c8.8 0 16-7.2 16-16s-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16s7.2 16 16 16H240c8.8 0 16-7.2 16-16s-7.2-16-16-16H80zm0 96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H80zm352-96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 96a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-32 48c0 8.8 7.2 16 16 16h0v48h0c-8.8 0-16 7.2-16 16s7.2 16 16 16h16 16c8.8 0 16-7.2 16-16s-7.2-16-16-16V368c0-8.8-7.2-16-16-16H416c-8.8 0-16 7.2-16 16z\"]\n};\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [127873], \"f06b\", \"M190.5 68.8L225.3 128H224 152c-22.1 0-40-17.9-40-40s17.9-40 40-40h2.2c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H438.4c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88h-2.2c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0H152C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40H288h-1.3l34.8-59.2C329.1 55.9 342.9 48 357.8 48H360c22.1 0 40 17.9 40 40zM32 288V464c0 26.5 21.5 48 48 48H224V288H32zM288 512H432c26.5 0 48-21.5 48-48V288H288V512z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [9857], \"f528\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM352 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faVolume = {\n prefix: 'fas',\n iconName: 'volume',\n icon: [576, 512, [128265, \"volume-medium\"], \"f6a8\", \"M333.1 34.8C344.6 40 352 51.4 352 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L163.8 352H96c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L298.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zm172 72.2c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C507.3 341.3 528 301.1 528 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C466.1 199.1 480 225.9 480 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C425.1 284.4 432 271 432 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z\"]\n};\nvar faVolumeMedium = faVolume;\nvar faTransporter5 = {\n prefix: 'fas',\n iconName: 'transporter-5',\n icon: [512, 512, [], \"e2a6\", \"M480 32l25.4 7.3c3.9 1.1 6.6 4.7 6.6 8.7s-2.7 7.6-6.6 8.7L480 64l-7.3 25.4c-1.1 3.9-4.7 6.6-8.7 6.6s-7.6-2.7-8.7-6.6L448 64l-25.4-7.3c-3.9-1.1-6.6-4.7-6.6-8.7s2.7-7.6 6.6-8.7L448 32l7.3-25.4C456.4 2.7 459.9 0 464 0s7.6 2.7 8.7 6.6L480 32zM56.7 134.6L64 160l25.4 7.3c3.9 1.1 6.6 4.7 6.6 8.7s-2.7 7.6-6.6 8.7L64 192l-7.3 25.4c-1.1 3.9-4.7 6.6-8.7 6.6s-7.6-2.7-8.7-6.6L32 192 6.6 184.7C2.7 183.6 0 180.1 0 176s2.7-7.6 6.6-8.7L32 160l7.3-25.4c1.1-3.9 4.7-6.6 8.7-6.6s7.6 2.7 8.7 6.6zM384 512H296 216 128c-17.7 0-32-14.3-32-32s14.3-32 32-32H384c17.7 0 32 14.3 32 32s-14.3 32-32 32zM224 0h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H224c-8.8 0-16-7.2-16-16s7.2-16 16-16zM176 128H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zM112 256H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm64 128H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faGaugeCircleBolt = {\n prefix: 'fas',\n iconName: 'gauge-circle-bolt',\n icon: [640, 512, [], \"e496\", \"M496 192c2.7 0 5.3 .1 8 .2C475.6 81.7 375.4 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512c39.5 0 77-9 110.4-25C337.6 455.7 320 413.9 320 368c0-97.2 78.8-176 176-176zM320 352c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26.9 16.5-49.9 40-59.3V88c0-13.3 10.7-24 24-24s24 10.7 24 24V292.7c23.5 9.5 40 32.5 40 59.3zM144 112a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM336 144a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L516.4 356H552c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L475.6 380H440c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faCoinFront = {\n prefix: 'fas',\n iconName: 'coin-front',\n icon: [512, 512, [], \"e3fc\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM256 96a160 160 0 1 1 0 320 160 160 0 1 1 0-320zm0 352a192 192 0 1 0 0-384 192 192 0 1 0 0 384zm24-264c0-13.3-10.7-24-24-24s-24 10.7-24 24V328c0 13.3 10.7 24 24 24s24-10.7 24-24V184z\"]\n};\nvar faFileSlash = {\n prefix: 'fas',\n iconName: 'file-slash',\n icon: [640, 512, [], \"e3a7\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512 376V160H384c-17.7 0-32-14.3-32-32V0H192c-35.3 0-64 28.7-64 64V75L38.8 5.1zM128 196.9V448c0 35.3 28.7 64 64 64H448c20.1 0 38.1-9.3 49.8-23.8L128 196.9zM512 128L384 0V128H512z\"]\n};\nvar faMessageArrowUpRight = {\n prefix: 'fas',\n iconName: 'message-arrow-up-right',\n icon: [512, 512, [], \"e1dd\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm200 64c-13.3 0-24 10.7-24 24s10.7 24 24 24h54.1l-87 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l87-87V264c0 13.3 10.7 24 24 24s24-10.7 24-24V152c0-13.3-10.7-24-24-24H200z\"]\n};\nvar faTreasureChest = {\n prefix: 'fas',\n iconName: 'treasure-chest',\n icon: [576, 512, [], \"f723\", \"M0 160v96H128V32C57.3 32 0 89.3 0 160zM0 432c0 26.5 21.5 48 48 48h80V288H0V432zM416 288H352v32c0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32V288H160V480H416V288zM528 480c26.5 0 48-21.5 48-48V288H448V480h80zm48-320c0-70.7-57.3-128-128-128V256H576V160zM416 256V32H160V256h64V224c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v32h64zM304 240c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M256 0a56 56 0 1 1 0 112A56 56 0 1 1 256 0zM134.1 143.8c3.3-13 15-23.8 30.2-23.8c12.3 0 22.6 7.2 27.7 17c12 23.2 36.2 39 64 39s52-15.8 64-39c5.1-9.8 15.4-17 27.7-17c15.3 0 27 10.8 30.2 23.8c7 27.8 32.2 48.3 62.1 48.3c10.8 0 21-2.7 29.8-7.4c8.4-4.4 18.9-4.5 27.6 .9c13 8 17.1 25 9.2 38L399.7 400H384 343.6 168.4 128 112.3L5.4 223.6c-7.9-13-3.8-30 9.2-38c8.7-5.3 19.2-5.3 27.6-.9c8.9 4.7 19 7.4 29.8 7.4c29.9 0 55.1-20.5 62.1-48.3zM256 224l0 0 0 0h0zM112 432H400l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H86.6C74.1 512 64 501.9 64 489.4c0-6 2.4-11.8 6.6-16L112 432z\"]\n};\nvar faPaintbrushFine = {\n prefix: 'fas',\n iconName: 'paintbrush-fine',\n icon: [576, 512, [\"paint-brush-alt\", \"paint-brush-fine\", \"paintbrush-alt\"], \"f5a9\", \"M559.6 16.4c21.9 21.9 21.9 57.3 0 79.2L306.9 348.3l-79.2-79.2L480.4 16.4c21.9-21.9 57.3-21.9 79.2 0zM205.1 291.7l79.2 79.2-.1 .1c2.5 9.3 3.8 19 3.8 29c0 61.9-50.1 112-112 112H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h4.8c17.6 0 29.6-18.9 27.8-36.4c-.4-3.8-.6-7.7-.6-11.6c0-61.9 50.1-112 112-112c10 0 19.8 1.3 29 3.8l.1-.1z\"]\n};\nvar faPaintBrushAlt = faPaintbrushFine;\nvar faPaintBrushFine = faPaintbrushFine;\nvar faPaintbrushAlt = faPaintbrushFine;\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1 .1 0 0 0 0 0s0 0-6.3 12.7h0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7h40.6c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7h0c-6.3-12.7-6.3-12.7-6.3-12.7l0 0 0 0 .1 0 .2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7v6.7V352v16c0 61.9-50.1 112-112 112H419.7c-59.4 0-108.5-46.4-111.8-105.8L306.6 352H269.4l-1.2 22.2C264.9 433.6 215.8 480 156.3 480H112C50.1 480 0 429.9 0 368V352 310.7 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4V368c0 26.5 21.5 48 48 48h44.3c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368V325.4c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3H464c26.5 0 48-21.5 48-48z\"]\n};\nvar faHoodCloak = {\n prefix: 'fas',\n iconName: 'hood-cloak',\n icon: [576, 512, [], \"f6ef\", \"M432 0H288h0c-9.8 0-66 0-120.2 37.7C111.4 76.9 64 151.8 64 288c0 58.5-14.6 101.6-28.6 129.7c-7 14.1-14 24.5-19 31.1c-2.5 3.3-4.5 5.7-5.7 7.1c-.6 .7-1.1 1.2-1.3 1.4l-.2 .2c-9 9.1-11.7 22.8-6.8 34.7c5 12 16.6 19.8 29.6 19.8h96V320c0-88.4 71.6-160 160-160s160 71.6 160 160V512h96c12.9 0 24.6-7.8 29.6-19.8c4.9-11.9 2.2-25.6-6.8-34.7l0 0 0 0 0 0-.1-.1c-.2-.2-.7-.7-1.3-1.4c-1.3-1.4-3.2-3.8-5.7-7.1c-5-6.6-11.9-17-19-31.1C526.6 389.6 512 346.5 512 288c0-103.1-46.5-172.8-95.8-217.2l32-29c7.3-6.7 9.8-17.2 6.2-26.4S441.9 0 432 0zM416 512V320c0-70.7-57.3-128-128-128s-128 57.3-128 128V512H416z\"]\n};\nvar faSquareQuote = {\n prefix: 'fas',\n iconName: 'square-quote',\n icon: [448, 512, [], \"e329\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 128h48c17.7 0 32 14.3 32 32v24 24 39.3c0 35.2-25.4 65.2-60.2 71l-7.9 1.3c-13.1 2.2-25.4-6.7-27.6-19.7s6.7-25.4 19.7-27.6l7.9-1.3c11.6-1.9 20.1-11.9 20.1-23.7V272H128c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32zm224 80v39.3c0 35.2-25.4 65.2-60.2 71l-7.9 1.3c-13.1 2.2-25.4-6.7-27.6-19.7s6.7-25.4 19.7-27.6l7.9-1.3c11.6-1.9 20.1-11.9 20.1-23.7V272H272c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32h48c17.7 0 32 14.3 32 32v24 24z\"]\n};\nvar faUpLeft = {\n prefix: 'fas',\n iconName: 'up-left',\n icon: [384, 512, [], \"e2bd\", \"M48 80H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-72 72L372.7 340.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3l-41.4 41.4c-7.2 7.2-17.1 11.3-27.3 11.3s-20.1-4.1-27.3-11.3L142.6 302.6l-72 72c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V112c0-17.7 14.3-32 32-32z\"]\n};\nvar faBringFront = {\n prefix: 'fas',\n iconName: 'bring-front',\n icon: [640, 512, [], \"f857\", \"M64 64h64 32 32 64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V192c0 35.3 28.7 64 64 64h64V192H64V64zM480 448H448 384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H512v64h64V448H512 480zM224 96c-35.3 0-64 28.7-64 64V352c0 35.3 28.7 64 64 64H416c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H224z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [448, 512, [], \"f43c\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 64v64h64V96h64v64h64V96h64v64H320v64h64v64H320v64h64v64H320V352H256v64H192V352H128v64H64V352h64V288H64V224h64V160H64V96h64zm64 128h64V160H192v64zm0 64V224H128v64h64zm64 0H192v64h64V288zm0 0h64V224H256v64z\"]\n};\nvar faBurgerCheese = {\n prefix: 'fas',\n iconName: 'burger-cheese',\n icon: [512, 512, [127828, \"cheeseburger\"], \"f7f1\", \"M32 194.9C32 211 45 224 61.1 224H450.9c16.1 0 29.1-13 29.1-29.1c0-1.9-.2-3.7-.6-5.6C474.1 168.3 433.2 32 256 32S37.9 168.3 32.6 189.3c-.5 1.9-.6 3.7-.6 5.6zM128 112a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm240 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM256 80a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM32 400v16c0 35.3 28.7 64 64 64H416c35.3 0 64-28.7 64-64V400c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16zM234 262.7c-6.5-4.4-14.2-6.7-22.1-6.7H208l-.1 0H64c-26.5 0-48 21.5-48 48s21.5 48 48 48H448c26.5 0 48-21.5 48-48s-21.5-48-48-48H432.1l-.1 0h-3.9c-7.9 0-15.6 2.3-22.1 6.7l-68.2 45.5c-10.7 7.2-24.8 7.2-35.5 0L234 262.7z\"]\n};\nvar faCheeseburger = faBurgerCheese;\nvar faBuildingCircleCheck = {\n prefix: 'fas',\n iconName: 'building-circle-check',\n icon: [640, 512, [], \"e4d2\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faRepeat1 = {\n prefix: 'fas',\n iconName: 'repeat-1',\n icon: [512, 512, [128258], \"f365\", \"M32 256c-17.7 0-32-14.3-32-32C0 135.6 71.6 64 160 64H320V32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V128H160c-53 0-96 43-96 96c0 17.7-14.3 32-32 32zm448 0c17.7 0 32 14.3 32 32c0 88.4-71.6 160-160 160H192v32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6v32H352c53 0 96-43 96-96c0-17.7 14.3-32 32-32zM288 216v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V248c-10 0-19.4-6.4-22.8-16.4c-4.2-12.6 2.6-26.2 15.2-30.4l24-8c7.3-2.4 15.4-1.2 21.6 3.3s10 11.8 10 19.5z\"]\n};\nvar faArrowDownToLine = {\n prefix: 'fas',\n iconName: 'arrow-down-to-line',\n icon: [384, 512, [\"arrow-to-bottom\"], \"f33d\", \"M32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32zM214.6 342.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 242.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V242.7l73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128z\"]\n};\nvar faArrowToBottom = faArrowDownToLine;\nvar faGrid5 = {\n prefix: 'fas',\n iconName: 'grid-5',\n icon: [448, 512, [], \"e199\", \"M0 48c0-8.8 7.2-16 16-16H48c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H16C7.2 96 0 88.8 0 80V48zm0 96c0-8.8 7.2-16 16-16H48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V144zm16 80H48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM0 336c0-8.8 7.2-16 16-16H48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V336zm16 80H48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V432c0-8.8 7.2-16 16-16zM96 48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V48zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM96 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM96 432c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V432zM208 32h32c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V48c0-8.8 7.2-16 16-16zM192 144c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V144zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM192 336c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V336zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V432c0-8.8 7.2-16 16-16zM288 48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V48zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM288 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM288 432c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V432zM400 32h32c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16V48c0-8.8 7.2-16 16-16zM384 144c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16V144zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM384 336c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16V336zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16V432c0-8.8 7.2-16 16-16z\"]\n};\nvar faRightLongToLine = {\n prefix: 'fas',\n iconName: 'right-long-to-line',\n icon: [640, 512, [], \"e444\", \"M640 96V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32zM360.5 409.4c-7 6.6-17.2 8.4-26 4.6s-14.5-12.5-14.5-22V320L32 320c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32l288 0V120c0-9.6 5.7-18.2 14.5-22s19-2 26 4.6l144 136c4.8 4.5 7.5 10.8 7.5 17.4s-2.7 12.9-7.5 17.4l-144 136z\"]\n};\nvar faPersonChalkboard = {\n prefix: 'fas',\n iconName: 'person-chalkboard',\n icon: [640, 512, [], \"e53d\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V192h56 64 16c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64H576V256H384V224H320v48c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48v80H243.1 177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMarsStrokeRight = {\n prefix: 'fas',\n iconName: 'mars-stroke-right',\n icon: [640, 512, [9897, \"mars-stroke-h\"], \"f22b\", \"M208 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm174.4-88C370.7 365.8 297.1 432 208 432c-97.2 0-176-78.8-176-176s78.8-176 176-176c89.1 0 162.7 66.2 174.4 152H416V176c0-13.3 10.7-24 24-24s24 10.7 24 24v56h32V176c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V280H464v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H382.4z\"]\n};\nvar faMarsStrokeH = faMarsStrokeRight;\nvar faHandBackFist = {\n prefix: 'fas',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 0C117.5 0 96 21.5 96 48V96v28.5V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V149.3l-9 7.5C40.4 169 32 187 32 206V244c0 38 16.9 74 46.1 98.3L128 384v96c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V374.7c46.9-19 80-65 80-118.7V176 160 144c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 83.5 329.3 64 304 64c-12.4 0-23.6 4.7-32.1 12.3C270 51.5 249.3 32 224 32c-12.4 0-23.6 4.7-32.1 12.3C190 19.5 169.3 0 144 0z\"]\n};\nvar faHandRock = faHandBackFist;\nvar faGridRound5 = {\n prefix: 'fas',\n iconName: 'grid-round-5',\n icon: [448, 512, [], \"e5de\", \"M64 64A32 32 0 1 1 0 64a32 32 0 1 1 64 0zm0 96A32 32 0 1 1 0 160a32 32 0 1 1 64 0zM32 288a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64A32 32 0 1 1 0 352a32 32 0 1 1 64 0zM32 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM160 64A32 32 0 1 1 96 64a32 32 0 1 1 64 0zM128 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM128 384a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM224 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM224 288a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM224 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM352 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM320 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM320 384a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM416 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM416 288a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM416 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nvar faTally = {\n prefix: 'fas',\n iconName: 'tally',\n icon: [640, 512, [\"tally-5\"], \"f69c\", \"M128 32c17.7 0 32 14.3 32 32V275.6l64-21.3V64c0-17.7 14.3-32 32-32s32 14.3 32 32V232.9l64-21.3V64c0-17.7 14.3-32 32-32s32 14.3 32 32V190.3l64-21.3V64c0-17.7 14.3-32 32-32s32 14.3 32 32v83.6l53.9-18c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L544 215.1V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V236.4l-64 21.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V279.1l-64 21.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V321.7l-64 21.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V364.4l-53.9 18c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5L96 296.9V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faTally5 = faTally;\nvar faSquareCaretUp = {\n prefix: 'fas',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4H120c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nvar faCaretSquareUp = faSquareCaretUp;\nvar faCloudShowersWater = {\n prefix: 'fas',\n iconName: 'cloud-showers-water',\n icon: [576, 512, [], \"e4e4\", \"M224 0c38.6 0 71.9 22.8 87.2 55.7C325.7 41.1 345.8 32 368 32c38.7 0 71 27.5 78.4 64H448c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64c0-53 43-96 96-96zM140.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm327.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM252.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm103.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 64H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faBarChart = faChartBar;\nvar faHandsBubbles = {\n prefix: 'fas',\n iconName: 'hands-bubbles',\n icon: [576, 512, [\"hands-wash\"], \"e05e\", \"M416 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM160 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM32 160l.1 72.6c.1 52.2 24 101 64 133.1c-.1-1.9-.1-3.8-.1-5.7v-8c0-71.8 37-138.6 97.9-176.7l60.2-37.6c8.6-5.4 17.9-8.4 27.3-9.4l45.9-79.5c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8l-78 135.1c-3.3 5.7-10.7 7.7-16.4 4.4s-7.7-10.7-4.4-16.4l62-107.4c6.6-11.5 2.7-26.2-8.8-32.8S214 5 207.4 16.5l-68 117.8 0 0 0 0-43.3 75L96 160c0-17.7-14.4-32-32-32s-32 14.4-32 32zM332.1 88.5L307.5 131c13.9 4.5 26.4 13.7 34.7 27c.9 1.5 1.7 2.9 2.5 4.4l28.9-50c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zm46.4 63.7l-26.8 46.4c-.6 6-2.1 11.8-4.3 17.4H352h13.3l0 0H397l23-39.8c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zM315.1 175c-9.4-15-29.1-19.5-44.1-10.2l-60.2 37.6C159.3 234.7 128 291.2 128 352v8c0 8.9 .8 17.6 2.2 26.1c35.4 8.2 61.8 40 61.8 77.9c0 6.3-.7 12.5-2.1 18.4C215.1 501 246.3 512 280 512H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H352l0 0 0 0H258.8L305 219.1c15-9.4 19.5-29.1 10.2-44.1z\"]\n};\nvar faHandsWash = faHandsBubbles;\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M395.9 93.7c16.4-6.6 24.4-25.2 17.8-41.6s-25.2-24.4-41.6-17.8l-320 128C40 167.1 32 178.9 32 192s8 24.9 20.1 29.7l320 128c16.4 6.6 35-1.4 41.6-17.8s-1.4-35-17.8-41.6L150.2 192 395.9 93.7zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [128646], \"f238\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zM224 288a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faUpFromDottedLine = {\n prefix: 'fas',\n iconName: 'up-from-dotted-line',\n icon: [448, 512, [], \"e456\", \"M73.9 166.1L196.7 43.3C203.9 36.1 213.8 32 224 32s20.1 4.1 27.3 11.3L374.1 166.1c6.4 6.4 9.9 15 9.9 24c0 18.7-15.2 33.9-33.9 33.9H288V352c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V224H97.9C79.2 224 64 208.8 64 190.1c0-9 3.6-17.6 9.9-24zM32 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faEyeLowVision = {\n prefix: 'fas',\n iconName: 'eye-low-vision',\n icon: [640, 512, [\"low-vision\"], \"f2a8\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223 149.5c48.6-44.3 123-50.8 179.3-11.7c60.8 42.4 78.9 123.2 44.2 186.9L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3L223 149.5zm223.1 298L83.1 161.5c-11 14.4-20.5 28.7-28.4 42.2l339 265.7c18.7-5.5 36.2-13 52.6-21.8zM34.5 268.3c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c3.1 0 6.1-.1 9.2-.2L33.1 247.8c-1.8 6.8-1.3 14 1.4 20.5z\"]\n};\nvar faLowVision = faEyeLowVision;\nvar faTrafficLightGo = {\n prefix: 'fas',\n iconName: 'traffic-light-go',\n icon: [320, 512, [], \"f638\", \"M64 0C28.7 0 0 28.7 0 64V352c0 88.4 71.6 160 160 160s160-71.6 160-160V64c0-35.3-28.7-64-64-64H64zm96 416a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm0-200a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm0 72a48 48 0 1 1 0-96 48 48 0 1 1 0 96zM136 112a24 24 0 1 0 48 0 24 24 0 1 0 -48 0zm72 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0z\"]\n};\nvar faFaceExhaling = {\n prefix: 'fas',\n iconName: 'face-exhaling',\n icon: [576, 512, [], \"e480\", \"M256 512c55.8 0 107.4-17.9 149.5-48.2c-10.5-9.3-17.9-22.1-20.5-36.5l-42.2-12.7C329.3 410.6 320 398.1 320 384s9.3-26.6 22.8-30.6L385 340.7c5.3-30 31.5-52.7 63-52.7c.7 0 1.4 0 2.1 0c13.2-14.7 32.3-24 53.7-24c2.7 0 5.4 .2 8.1 .5c.1-2.8 .1-5.6 .1-8.5C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM195.2 238.4c5.3-7.1 15.3-8.5 22.4-3.2s8.5 15.3 3.2 22.4c-30.4 40.5-91.2 40.5-121.6 0c-5.3-7.1-3.9-17.1 3.2-22.4s17.1-3.9 22.4 3.2c17.6 23.5 52.8 23.5 70.4 0zm121.6 0c17.6 23.5 52.8 23.5 70.4 0c5.3-7.1 15.3-8.5 22.4-3.2s8.5 15.3 3.2 22.4c-30.4 40.5-91.2 40.5-121.6 0c-5.3-7.1-3.9-17.1 3.2-22.4s17.1-3.9 22.4 3.2zM256 344a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm287.4-5.5c.1-.8 .1-1.7 .1-2.5c0-22.1-17.9-40-39.9-40c-16.9 0-31.4 10.5-37.2 25.4c-3.3-.9-6.9-1.4-10.5-1.4c-22.1 0-39.9 17.9-39.9 40l-56.1 14.1c-4.6 1.1-7.8 5.2-7.8 9.9s3.2 8.8 7.8 9.9l56.9 14.2c-.5 2.5-.8 5.1-.8 7.8c0 22.1 17.9 40 39.9 40c4.9 0 9.6-.9 14-2.5c7.1 11.1 19.5 18.5 33.7 18.5c22.1 0 39.9-17.9 39.9-40c0-.8 0-1.7-.1-2.5c19-6.4 32.6-24.4 32.6-45.5s-13.6-39.1-32.6-45.5z\"]\n};\nvar faSensorFire = {\n prefix: 'fas',\n iconName: 'sensor-fire',\n icon: [640, 512, [], \"e02a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H337.6c-31-34.7-49.6-80.6-49.6-129.9c0-35.2 16.3-73.6 37.2-107.4c21.7-35.2 51.9-71.2 87.3-102.8c10-8.9 23-12.8 35.5-11.7V96c0-35.3-28.7-64-64-64H64zm48 88V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V120c0-13.3 10.7-24 24-24s24 10.7 24 24zm96 0V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V120c0-13.3 10.7-24 24-24s24 10.7 24 24zm245.5 43.6c-2.8-2.5-6.3-3.7-9.8-3.8c-3.6 0-7.2 1.2-10 3.7c-33.2 29.7-61.4 63.4-81.4 95.8C332.7 291.3 320 325.6 320 352c0 87.8 70.3 159.8 160 159.8c88.7 0 160-72 160-159.8c0-20.2-9.6-50.9-24.2-79c-14.8-28.5-35.7-58.5-60.4-81.1c-5.6-5.1-14.4-5.2-20 0c-9.6 8.8-18.6 19.6-26.5 29.5c-17.3-20.7-35.8-39.9-55.5-57.7zM530 432.9c-15 10-31 15-49 15c-45 0-81-29-81-78c0-24 15-45 45-82c4 5 62 79 62 79l36-42c3 4 5 8 7 12c18 33 10 75-20 96z\"]\n};\nvar faUserUnlock = {\n prefix: 'fas',\n iconName: 'user-unlock',\n icon: [640, 512, [], \"e058\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4c43.6 0 83.6 15.7 114.6 41.7c-.2 2.1-.3 4.2-.3 6.3V480c0 11.7 3.1 22.6 8.6 32H29.7C13.3 512 0 498.7 0 482.3zM496 272v48h16 48 48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272c0-44.2 35.8-80 80-80s80 35.8 80 80H560c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faHexagonDivide = {\n prefix: 'fas',\n iconName: 'hexagon-divide',\n icon: [512, 512, [], \"e1ad\", \"M17.1 292c-12.9-22.3-12.9-49.7 0-72L105.4 67.1c12.9-22.3 36.6-36 62.4-36H344.3c25.7 0 49.5 13.7 62.4 36L494.9 220c12.9 22.3 12.9 49.7 0 72L406.6 444.9c-12.9 22.3-36.6 36-62.4 36H167.7c-25.7 0-49.5-13.7-62.4-36L17.1 292zM256 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-88 40c-13.3 0-24 10.7-24 24s10.7 24 24 24H344c13.3 0 24-10.7 24-24s-10.7-24-24-24H168zM288 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar fa00 = {\n prefix: 'fas',\n iconName: '00',\n icon: [640, 512, [], \"e467\", \"M144 32C64.5 32 0 96.5 0 176V336c0 79.5 64.5 144 144 144s144-64.5 144-144V176c0-79.5-64.5-144-144-144zM64 176c0-44.2 35.8-80 80-80s80 35.8 80 80V336c0 44.2-35.8 80-80 80s-80-35.8-80-80V176zM496 32c-79.5 0-144 64.5-144 144V336c0 79.5 64.5 144 144 144s144-64.5 144-144V176c0-79.5-64.5-144-144-144zM416 176c0-44.2 35.8-80 80-80s80 35.8 80 80V336c0 44.2-35.8 80-80 80s-80-35.8-80-80V176z\"]\n};\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M456 0c-48.6 0-88 39.4-88 88v29.2L12.5 390.6c-14 10.8-16.6 30.9-5.9 44.9s30.9 16.6 44.9 5.9L126.1 384H259.2l46.6 113.1c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3L311.1 384H352c1.1 0 2.1 0 3.2 0l46.6 113.2c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3l-42-102C484.9 354.1 544 280 544 192V128v-8l80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4C629 52 603.4 32 574 32H523.9C507.7 12.5 483.3 0 456 0zm0 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faCassetteBetamax = {\n prefix: 'fas',\n iconName: 'cassette-betamax',\n icon: [576, 512, [\"betamax\"], \"f8a4\", \"M64 32C28.7 32 0 60.7 0 96v32H576V96c0-35.3-28.7-64-64-64H64zM576 160H0V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V160zM192 320a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 320a96 96 0 1 1 192 0A96 96 0 1 1 64 320zm256-64c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32V384c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V256z\"]\n};\nvar faBetamax = faCassetteBetamax;\nvar faSailboat = {\n prefix: 'fas',\n iconName: 'sailboat',\n icon: [576, 512, [], \"e445\", \"M256 16c0-7 4.5-13.2 11.2-15.3s13.9 .4 17.9 6.1l224 320c3.4 4.9 3.8 11.3 1.1 16.6s-8.2 8.6-14.2 8.6H272c-8.8 0-16-7.2-16-16V16zM212.1 96.5c7 1.9 11.9 8.2 11.9 15.5V336c0 8.8-7.2 16-16 16H80c-5.7 0-11-3-13.8-8s-2.9-11-.1-16l128-224c3.6-6.3 11-9.4 18-7.5zM5.7 404.3C2.8 394.1 10.5 384 21.1 384H554.9c10.6 0 18.3 10.1 15.4 20.3l-4 14.3C550.7 473.9 500.4 512 443 512H133C75.6 512 25.3 473.9 9.7 418.7l-4-14.3z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 64H208c-8.8 0-16 7.2-16 16V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V320h16c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm64 32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faNfcMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'nfc-magnifying-glass',\n icon: [640, 512, [], \"e1f9\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64v64c-22.8 0-44.4 4.8-64 13.3V144c0-26.5-21.5-48-48-48H256c-26.5 0-48 21.5-48 48v66.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V144c0-8.8 7.2-16 16-16h80c8.8 0 16 7.2 16 16v48c-38.9 29.2-64 75.7-64 128c0 22.8 4.8 44.4 13.3 64H112c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112c-26.5 0-48 21.5-48 48V368c0 26.5 21.5 48 48 48H320c21.6 28.8 52.7 50 88.6 59.1c-7.6 3.2-15.9 4.9-24.6 4.9H64c-35.3 0-64-28.7-64-64V96zM448 400.2a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0 48c-70.7 0-128-57.3-128-128s57.3-128 128-128s128 57.3 128 128c0 26.7-8.2 51.4-22.1 71.9L633 471.2c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L519.9 426c-20.5 14-45.3 22.1-71.9 22.1z\"]\n};\nvar faFileBinary = {\n prefix: 'fas',\n iconName: 'file-binary',\n icon: [384, 512, [], \"e175\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48zM96 304v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zm144-48h32c8.8 0 16 7.2 16 16V384h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H272 240c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V288H240c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faCircleV = {\n prefix: 'fas',\n iconName: 'circle-v',\n icon: [512, 512, [], \"e12a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM173.5 157.3L256 322.3l82.5-165.1c5.9-11.9 20.3-16.7 32.2-10.7s16.7 20.3 10.7 32.2l-104 208c-4.1 8.1-12.4 13.3-21.5 13.3s-17.4-5.1-21.5-13.3l-104-208c-5.9-11.9-1.1-26.3 10.7-32.2s26.3-1.1 32.2 10.7z\"]\n};\nvar faSquarePlus = {\n prefix: 'fas',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusSquare = faSquarePlus;\nvar faBowlScoops = {\n prefix: 'fas',\n iconName: 'bowl-scoops',\n icon: [448, 512, [127813], \"e3df\", \"M224 208c0 5.4 .4 10.8 1.1 16H446.9c.7-5.2 1.1-10.6 1.1-16c0-61.9-50.1-112-112-112l-1.1 0c-38.7 .4-72.7 20.4-92.6 50.6C230.7 164.2 224 185.3 224 208zM0 208c0 5.4 .4 10.8 1.1 16H192.9c-.6-5.3-.9-10.6-.9-16c0-22 4.9-42.8 13.7-61.4c-13.9-21.2-34.9-37.4-59.6-45.3C135.4 97.9 123.9 96 112 96C50.1 96 0 146.1 0 208zM325.4 64.4C307.5 26.3 268.8 0 224 0s-83.5 26.3-101.4 64.4c40.9 3 77.1 23 101.4 53.1c24.3-30.1 60.5-50.1 101.4-53.1zM16 256c-4.6 0-9 2-12 5.4s-4.5 8-3.9 12.6l2 15.9C11.1 361.9 72.4 416 145 416h40.4l-68.7 68.7c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H320c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4L262.6 416H303c72.6 0 133.9-54.1 142.9-126.1l2-15.9c.6-4.6-.8-9.1-3.9-12.6s-7.4-5.4-12-5.4H16z\"]\n};\nvar faMistletoe = {\n prefix: 'fas',\n iconName: 'mistletoe',\n icon: [576, 512, [], \"f7b4\", \"M312 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v94.1l-98 98L91.3 230.4C38.3 240.6 0 287 0 341c0 41.4 33.6 75 75 75c50.5 0 94.3-33.5 108.1-81.2c7.2 10.4 19.3 17.2 32.9 17.2c22.1 0 40-17.9 40-40s-17.9-40-40-40c-7.9 0-15.3 2.3-21.5 6.3l5.4-28.2L264 185.9v72.4c14.7 13.2 24 32.3 24 53.7c0 39.8-32.2 72-72 72c-7.2 0-14.2-1.1-20.8-3c-2.1 8.4-3.2 17.1-3.2 25.9V416c0 53 43 96 96 96s96-43 96-96v-9.1c0-25.1-9-49.4-25.3-68.4L312 284V185.9L376.1 250l14.4 74.7C400.6 377.7 447 416 501 416c41.4 0 75-33.6 75-75c0-54-38.3-100.3-91.3-110.5L410 216.1l-98-98V24zm64 88a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faCustard = {\n prefix: 'fas',\n iconName: 'custard',\n icon: [576, 512, [127854], \"e403\", \"M396.7 64c30 0 56 20.8 62.5 50.1l13.5 60.8C450.9 167.4 423.5 160 400 160c-26.4 0-45.8 9.4-62.2 17.2l-.7 .3c-16.7 8-30.4 14.4-49.1 14.4s-32.3-6.4-49.1-14.4l-.7-.3C221.8 169.4 202.4 160 176 160c-23.5 0-50.9 7.4-72.6 14.9l13.5-60.8C123.4 84.8 149.3 64 179.3 64H396.7zM64.3 350.9L95.1 212.1c4.1-1.6 8.5-3.3 13.2-5c22-7.9 47.8-15.1 67.7-15.1c18.7 0 32.3 6.4 49.1 14.4l.7 .3c16.4 7.9 35.8 17.2 62.2 17.2s45.8-9.4 62.2-17.2l.7-.3c16.7-8 30.4-14.4 49.1-14.4c19.8 0 45.6 7.2 67.7 15.1c4.7 1.7 9.2 3.4 13.2 5L512 352 64.3 350.9zM32 384H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faLacrosseStick = {\n prefix: 'fas',\n iconName: 'lacrosse-stick',\n icon: [512, 512, [], \"e3b5\", \"M336 64v0c.1 0 .2 0 .3 0c19.9 0 48.1 13.6 73.1 38.6s38.6 53.2 38.6 73.1c0 .1 0 .2 0 .3h0c0 33.1-21.9 62.1-53.7 71.2l-11.5 3.3c-19.6 5.6-37.9 15.1-53.9 27.8L294 306.2c-11.1 8.9-25 13.8-39.2 13.8c-34.7 0-62.8-28.1-62.8-62.8c0-14.3 4.9-28.1 13.8-39.2l27.9-34.9c12.8-15.9 22.2-34.3 27.8-53.9l3.3-11.5C273.9 85.9 302.9 64 336 64zm0-64V0C274.4 0 220.2 40.9 203.3 100.1L200 111.7c-3.3 11.5-8.8 22.2-16.2 31.5l-27.9 34.9c-18 22.5-27.8 50.4-27.8 79.2c0 23.4 6.3 45.3 17.4 64.1l-136 136c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l136-136c18.8 11.1 40.7 17.4 64.1 17.4c28.8 0 56.7-9.8 79.2-27.8l34.9-27.9c9.3-7.4 20-13 31.5-16.2l11.5-3.3C471.1 291.8 512 237.6 512 176h0c0-.1 0-.2 0-.3c0-43.8-26.4-87.4-57.3-118.4S380.1 0 336.3 0c-.1 0-.2 0-.3 0z\"]\n};\nvar faHockeyMask = {\n prefix: 'fas',\n iconName: 'hockey-mask',\n icon: [448, 512, [], \"f6ee\", \"M0 240C0 111 64 0 224 0S448 111 448 240c0 192-48 272-224 272S0 432 0 240zM160 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm88 24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM176 344a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0 64a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 40a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm72-104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM312 80a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM272 408a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 40a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM128 272c35.3 0 64-28.7 64-64c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32c0 35.3 28.7 64 64 64zm256-64c0-17.7-14.3-32-32-32H288c-17.7 0-32 14.3-32 32c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faSunrise = {\n prefix: 'fas',\n iconName: 'sunrise',\n icon: [576, 512, [127749], \"f766\", \"M354.5 135.7L320 104.3V208c0 17.7-14.3 32-32 32s-32-14.3-32-32V104.3l-34.5 31.3c-13.1 11.9-33.3 10.9-45.2-2.2s-10.9-33.3 2.2-45.2l88-80c12.2-11.1 30.8-11.1 43.1 0l88 80c13.1 11.9 14 32.1 2.2 45.2s-32.1 14-45.2 2.2zm39.1 89.5c5 2.1 8.6 6.6 9.6 11.9L423 345l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L512 432H406.7c-19-46.9-65-80-118.7-80s-99.7 33.1-118.7 80H64L34.8 389.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L153 345l19.8-107.9c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L288 289.1l90.3-62.3c4.5-3.1 10.2-3.7 15.2-1.6zM0 488c0-13.3 10.7-24 24-24H552c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24z\"]\n};\nvar faPanelEws = {\n prefix: 'fas',\n iconName: 'panel-ews',\n icon: [512, 512, [], \"e42e\", \"M64 0C28.7 0 0 28.7 0 64V288H16c44.2 0 80 35.8 80 80v16c0 17.7 14.3 32 32 32s32-14.3 32-32V352c-17.7 0-32-14.3-32-32V288c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32v32c0 35.3-28.7 64-64 64s-64-28.7-64-64V368c0-26.5-21.5-48-48-48H0V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm48 64h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm192 0h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H304c-8.8 0-16-7.2-16-16s7.2-16 16-16zM112 128h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm192 0h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H304c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 128h64c17.7 0 32 14.3 32 32V416c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V288c0-17.7 14.3-32 32-32z\"]\n};\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [9961], \"f6a1\", \"M0 80c0 26.5 21.5 48 48 48H64v64h64V128h96v64h64V128h96v64h64V128h16c26.5 0 48-21.5 48-48V13.4C512 6 506 0 498.6 0c-1.7 0-3.4 .3-5 1l-49 19.6C425.7 28.1 405.5 32 385.2 32H126.8c-20.4 0-40.5-3.9-59.4-11.4L18.4 1c-1.6-.6-3.3-1-5-1C6 0 0 6 0 13.4V80zM64 288V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288H384V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64z\"]\n};\nvar faCloudExclamation = {\n prefix: 'fas',\n iconName: 'cloud-exclamation',\n icon: [640, 512, [], \"e491\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zM320 160c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faMessageLines = {\n prefix: 'fas',\n iconName: 'message-lines',\n icon: [512, 512, [\"comment-alt-lines\"], \"f4a6\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm152 80c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H152zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H152z\"]\n};\nvar faCommentAltLines = faMessageLines;\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9c0 21.8-11.7 41.9-30.7 52.7L400.8 323.5 493.3 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H480c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7c-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2c27.9-18.5 65.9-15.4 90.5 9.2c24.7 24.7 27.7 62.9 9 90.9c-2.6 3.8-5.6 7.5-9 10.9L261.8 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-35.3 0-64-28.7-64-64C0 249.6 127 112.9 289.3 97.5C296.2 60.2 328.8 32 368 32zm0 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faBucket = {\n prefix: 'fas',\n iconName: 'bucket',\n icon: [448, 512, [], \"e4cf\", \"M96 152v8H48v-8C48 68.1 116.1 0 200 0h48c83.9 0 152 68.1 152 152v8H352v-8c0-57.4-46.6-104-104-104H200C142.6 48 96 94.6 96 152zM0 224c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32h-5.1L388.5 469c-2.6 24.4-23.2 43-47.7 43H107.2c-24.6 0-45.2-18.5-47.7-43L37.1 256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faFloppyDiskPen = {\n prefix: 'fas',\n iconName: 'floppy-disk-pen',\n icon: [576, 512, [], \"e182\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H258.5l14-55.9c2.8-11.3 8.6-21.5 16.8-29.7L448 235.6V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm325.8-52.2c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 417.1c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 358.8l-71-71L311.9 417.1z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faWindowFrame = {\n prefix: 'fas',\n iconName: 'window-frame',\n icon: [512, 512, [129695], \"e04f\", \"M32 256V64C32 28.7 60.7 0 96 0H416c35.3 0 64 28.7 64 64V256 448c17.7 0 32 14.3 32 32s-14.3 32-32 32H416 96 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V256zm384 32H280V448H416V288zm-184 0H96V448H232V288zm48-64H416V64H280V224zM232 64H96V224H232V64z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [384, 512, [], \"f130\", \"M192 0C139 0 96 43 96 96V256c0 53 43 96 96 96s96-43 96-96V96c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V216z\"]\n};\nvar faCow = {\n prefix: 'fas',\n iconName: 'cow',\n icon: [640, 512, [128004], \"f6c8\", \"M96 224v32V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V327.8c9.9 6.6 20.6 12 32 16.1V368c0 8.8 7.2 16 16 16s16-7.2 16-16V351.1c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9V368c0 8.8 7.2 16 16 16s16-7.2 16-16V343.8c11.4-4 22.1-9.4 32-16.1V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256l32 32v49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21c22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5V184c0-13.3-10.7-24-24-24s-24 10.7-24 24v14.4l-52.9-74.1C496 86.5 452.4 64 405.9 64H272 256 192 144C77.7 64 24 117.7 24 184v54C9.4 249.8 0 267.8 0 288v17.6c0 8 6.4 14.4 14.4 14.4C46.2 320 72 294.2 72 262.4V256 224 184c0-24.3 12.1-45.8 30.5-58.9C98.3 135.9 96 147.7 96 160v64zM560 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16c0-12.5 10.1-22.6 22.6-22.6H361.4c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"]\n};\nvar faFileZip = {\n prefix: 'fas',\n iconName: 'file-zip',\n icon: [512, 512, [], \"e5ee\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H240c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM240 352h64c5.5 0 10.7 2.9 13.6 7.6s3.2 10.6 .7 15.6L265.9 480H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-5.5 0-10.7-2.9-13.6-7.6s-3.2-10.6-.7-15.6L278.1 384H240c-8.8 0-16-7.2-16-16s7.2-16 16-16zm144 16V496c0 8.8-7.2 16-16 16s-16-7.2-16-16V368c0-8.8 7.2-16 16-16s16 7.2 16 16zm32 0c0-8.8 7.2-16 16-16h24c30.9 0 56 25.1 56 56s-25.1 56-56 56h-8v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368zm32 64h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v48z\"]\n};\nvar faSquareRing = {\n prefix: 'fas',\n iconName: 'square-ring',\n icon: [448, 512, [], \"e44f\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 224a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zm96 160a160 160 0 1 1 0-320 160 160 0 1 1 0 320z\"]\n};\nvar faDownFromLine = {\n prefix: 'fas',\n iconName: 'down-from-line',\n icon: [384, 512, [\"arrow-alt-from-top\"], \"f349\", \"M41.9 345.9L164.7 468.7c7.2 7.2 17.1 11.3 27.3 11.3s20.1-4.1 27.3-11.3L342.1 345.9c6.4-6.4 9.9-15 9.9-24c0-18.7-15.2-33.9-33.9-33.9H256V160c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32V288H65.9C47.2 288 32 303.2 32 321.9c0 9 3.6 17.6 9.9 24zM32 96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96z\"]\n};\nvar faArrowAltFromTop = faDownFromLine;\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faShieldXmark = {\n prefix: 'fas',\n iconName: 'shield-xmark',\n icon: [512, 512, [\"shield-times\"], \"e24c\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faShieldTimes = faShieldXmark;\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [129691], \"f54a\", \"M465 7c-8.5-8.5-22-9.4-31.6-2.1l-104 80c-5.9 4.5-9.4 11.6-9.4 19v54.1l-85.6 85.6c6.7 4.2 13 9.3 18.8 15.1s10.9 12.2 15.1 18.8L353.9 192H408c7.5 0 14.5-3.5 19-9.4l80-104c7.4-9.6 6.5-23.1-2.1-31.6L465 7zM121.4 281.4l-112 112c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l112-112c30.2-30.2 30.2-79.1 0-109.3s-79.1-30.2-109.3 0z\"]\n};\nvar faCircleSortDown = {\n prefix: 'fas',\n iconName: 'circle-sort-down',\n icon: [512, 512, [\"sort-circle-down\"], \"e031\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM267.3 411.3c-6.2 6.2-16.4 6.2-22.6 0l-96-96c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9H352c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-96 96zm0-310.6l96 96c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9H160c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l96-96c6.2-6.2 16.4-6.2 22.6 0zM313.4 192L256 134.6 198.6 192H313.4z\"]\n};\nvar faSortCircleDown = faCircleSortDown;\nvar faFolderClosed = {\n prefix: 'fas',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M448 480H64c-35.3 0-64-28.7-64-64V192H512V416c0 35.3-28.7 64-64 64zm64-320H0V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64z\"]\n};\nvar faHouseTsunami = {\n prefix: 'fas',\n iconName: 'house-tsunami',\n icon: [576, 512, [], \"e515\", \"M80.8 136.5C104.9 93.8 152.6 64 209 64c16.9 0 33.1 2.7 48.2 7.7c16.8 5.5 34.9-3.6 40.4-20.4s-3.6-34.9-20.4-40.4C255.8 3.8 232.8 0 209 0C95.2 0 0 88 0 200c0 91.6 53.5 172.1 142.2 194.1c13.4 3.8 27.5 5.9 42.2 5.9c.7 0 1.4 0 2.1-.1c1.8 0 3.7 .1 5.5 .1l0 0c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0c-22.4 15.5-49.9 26.1-77.4 26.1c0 0-.1 0-.1 0c-12.4 0-24-1.5-34.9-4.3C121.6 320.2 96 287 96 248c0-48.5 39.5-88 88.4-88c13.5 0 26.1 3 37.5 8.3c16 7.5 35.1 .6 42.5-15.5s.6-35.1-15.5-42.5C229.3 101.1 207.4 96 184.4 96c-40 0-76.4 15.4-103.6 40.5zm252-18.1c-8.1 6-12.8 15.5-12.8 25.6V265c1.6 1 3.3 2 4.8 3.1c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c5.8 1.4 11.2 3.4 16.2 6.2c.7-2.7 1.1-5.5 1.1-8.4l-.4-144c0-10-4.7-19.4-12.7-25.5l-95.5-72c-11.4-8.6-27.1-8.6-38.5 0l-96 72zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faSquareNfi = {\n prefix: 'fas',\n iconName: 'square-nfi',\n icon: [448, 512, [], \"e576\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm75.7 64.6C68.8 162.5 64 168.8 64 176V336c0 8.8 7.2 16 16 16s16-7.2 16-16V233.8l66.3 110.5c3.7 6.2 11.1 9.1 18 7.2s11.7-8.2 11.7-15.4V176c0-8.8-7.2-16-16-16s-16 7.2-16 16V278.2L93.7 167.8c-3.7-6.2-11.1-9.1-18-7.2zM224 176v64 96c0 8.8 7.2 16 16 16s16-7.2 16-16V256h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H256V192h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm160 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V336c0 8.8 7.2 16 16 16s16-7.2 16-16V176z\"]\n};\nvar faForklift = {\n prefix: 'fas',\n iconName: 'forklift',\n icon: [640, 512, [], \"f47a\", \"M48 160H96V48c0-26.5 21.5-48 48-48H292.7c20.3 0 38.4 12.8 45.2 31.9l75.3 210.8c1.8 5.2 2.8 10.6 2.8 16.1v85.7c19.6 17.6 32 43.1 32 71.6c0 53-43 96-96 96s-96-43-96-96H192c0 53-43 96-96 96s-96-43-96-96V208c0-26.5 21.5-48 48-48zm208 96h94L281.4 64H160v96l96 96zM96 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm256 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM544 32V384h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H512c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faArrowUpFromGroundWater = {\n prefix: 'fas',\n iconName: 'arrow-up-from-ground-water',\n icon: [576, 512, [], \"e4b5\", \"M288 352c17.7 0 32-14.3 32-32V109.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V320c0 17.7 14.3 32 32 32zm-18.5 69.9C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM192 192H48c-26.5 0-48 21.5-48 48V425c5.3-3.1 11.2-5.4 17.5-6.9c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.1 20.3V192zm384 48c0-26.5-21.5-48-48-48H384V416.5h0c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c6.3 1.5 12.1 3.8 17.5 6.9V240z\"]\n};\nvar faBracketSquareRight = {\n prefix: 'fas',\n iconName: 'bracket-square-right',\n icon: [192, 512, [], \"5d\", \"M192 96c0-35.3-28.7-64-64-64H64C46.3 32 32 46.3 32 64s14.3 32 32 32h64V416H64c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c35.3 0 64-28.7 64-64V96z\"]\n};\nvar faMartiniGlass = {\n prefix: 'fas',\n iconName: 'martini-glass',\n icon: [512, 512, [127864, \"glass-martini-alt\"], \"f57b\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM173.3 128l-64-64H402.7l-64 64H173.3z\"]\n};\nvar faGlassMartiniAlt = faMartiniGlass;\nvar faRotateLeft = {\n prefix: 'fas',\n iconName: 'rotate-left',\n icon: [512, 512, [\"rotate-back\", \"rotate-backward\", \"undo-alt\"], \"f2ea\", \"M48.5 224H40c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H48.5z\"]\n};\nvar faRotateBack = faRotateLeft;\nvar faRotateBackward = faRotateLeft;\nvar faUndoAlt = faRotateLeft;\nvar faTableColumns = {\n prefix: 'fas',\n iconName: 'table-columns',\n icon: [512, 512, [\"columns\"], \"f0db\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 64V416H224V160H64zm384 0H288V416H448V160z\"]\n};\nvar faColumns = faTableColumns;\nvar faSquareA = {\n prefix: 'fas',\n iconName: 'square-a',\n icon: [448, 512, [], \"e25f\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm160 96c9.1 0 17.4 5.1 21.5 13.3l104 208c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L289.2 336H158.8l-17.4 34.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l104-208c4.1-8.1 12.4-13.3 21.5-13.3zm0 77.7L182.8 288h82.3L224 205.7z\"]\n};\nvar faTick = {\n prefix: 'fas',\n iconName: 'tick',\n icon: [128, 512, [], \"e32f\", \"M0 98.3V96C0 60.7 28.7 32 64 32s64 28.7 64 64v2.3c0 3.8-.3 7.6-1 11.4L101.5 256.5C98.3 274.7 82.5 288 64 288s-34.3-13.3-37.5-31.5L1 109.6c-.7-3.8-1-7.5-1-11.4z\"]\n};\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M448 96c0-35.3-28.7-64-64-64c-6.6 0-13 1-19 2.9c-22.5 7-48.1 14.9-71 9c-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71C1 403 0 409.4 0 416c0 35.3 28.7 64 64 64c6.6 0 13-1 19.1-2.9c22.5-7 48.1-14.9 71-9c75.2 19.1 156.4-11 213.7-68.3s87.5-138.5 68.3-213.7c-5.8-22.9 2-48.4 9-71c1.9-6 2.9-12.4 2.9-19.1zM212.5 127.4c-54.6 16-101.1 62.5-117.1 117.1C92.9 253 84 257.8 75.5 255.4S62.2 244 64.6 235.5c19.1-65.1 73.7-119.8 138.9-138.9c8.5-2.5 17.4 2.4 19.9 10.9s-2.4 17.4-10.9 19.9z\"]\n};\nvar faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [576, 512, [], \"e063\", \"M32 224.2c0-22.2 3.2-43.6 9.2-63.9L262.2 321c-4 9.5-6.2 20-6.2 31V512H128c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C48.6 322.4 32 274.1 32 224.2zm248.3 70.4L53 129.3C88.7 53 166.2 0 256 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c5.4 6.7 8.6 14.8 9.4 23.2H336c-21.7 0-41.3 8.6-55.7 22.6zM336 304H534l0 0h10l-19.7 64H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H514.5l-9.8 32H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H494.8l-.9 2.8c-8.3 26.9-33.1 45.2-61.2 45.2H288V352c0-14 6-26.7 15.6-35.4c0 0 0 0 0 0c8.5-7.8 19.9-12.6 32.4-12.6zm48-80a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123zM16 128c-8.8 0-16 7.2-16 16V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V128H16zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V144c0-8.8-7.2-16-16-16H544zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.6L63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8L301.5 179.8l57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [\"dolly-box\"], \"f472\", \"M0 32C0 14.3 14.3 0 32 0h72.9c27.5 0 52 17.6 60.7 43.8L257.7 320c30.1 .5 56.8 14.9 74 37l202.1-67.4c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L352 417.7c-.9 52.2-43.5 94.3-96 94.3c-53 0-96-43-96-96c0-30.8 14.5-58.2 37-75.8L104.9 64H32C14.3 64 0 49.7 0 32zM244.8 134.5c-5.5-16.8 3.7-34.9 20.5-40.3L311 79.4l19.8 60.9 60.9-19.8L371.8 59.6l45.7-14.8c16.8-5.5 34.9 3.7 40.3 20.5l49.4 152.2c5.5 16.8-3.7 34.9-20.5 40.3L334.5 307.2c-16.8 5.5-34.9-3.7-40.3-20.5L244.8 134.5z\"]\n};\nvar faDollyBox = faDolly;\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [128684], \"f48d\", \"M448 32V43c0 38.2 15.2 74.8 42.2 101.8l21 21c21 21 32.8 49.5 32.8 79.2v11c0 17.7-14.3 32-32 32s-32-14.3-32-32V245c0-12.7-5.1-24.9-14.1-33.9l-21-21C405.9 151.1 384 98.1 384 43V32c0-17.7 14.3-32 32-32s32 14.3 32 32zM576 256V245c0-38.2-15.2-74.8-42.2-101.8l-21-21c-21-21-32.8-49.5-32.8-79.2V32c0-17.7 14.3-32 32-32s32 14.3 32 32V43c0 12.7 5.1 24.9 14.1 33.9l21 21c39 39 60.9 91.9 60.9 147.1v11c0 17.7-14.3 32-32 32s-32-14.3-32-32zM0 416c0-35.3 28.7-64 64-64H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H64c-35.3 0-64-28.7-64-64V416zm224 0v32H384V416H224zm288-64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32z\"]\n};\nvar faMinimize = {\n prefix: 'fas',\n iconName: 'minimize',\n icon: [512, 512, [\"compress-arrows-alt\"], \"f78c\", \"M456 224H312c-13.3 0-24-10.7-24-24V56c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l40 40L442.3 5.7C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143l40 40c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433l-40 40c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V312c0-13.3 10.7-24 24-24H456zm-256 0c13.3 0 24 10.7 24 24V456c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40L69.7 506.3C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8H200zM56 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l40-40L5.7 69.7C2 66 0 61.1 0 56s2-10 5.7-13.7L42.3 5.7C46 2 50.9 0 56 0s10 2 13.7 5.7L143 79l40-40c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2V200c0 13.3-10.7 24-24 24H56z\"]\n};\nvar faCompressArrowsAlt = faMinimize;\nvar faRefrigerator = {\n prefix: 'fas',\n iconName: 'refrigerator',\n icon: [384, 512, [], \"e026\", \"M96 0C43 0 0 43 0 96v64H288V112c0-8.8 7.2-16 16-16s16 7.2 16 16v48h64V96c0-53-43-96-96-96H96zM384 192H320V368c0 8.8-7.2 16-16 16s-16-7.2-16-16V192H0V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M180.7 4.7c6.2-6.2 16.4-6.2 22.6 0l80 80c2.5 2.5 4.1 5.8 4.6 9.3l40.2 322H55.9L96.1 94c.4-3.5 2-6.8 4.6-9.3l80-80zM152 272c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H152zM32 448H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faOctagonXmark = {\n prefix: 'fas',\n iconName: 'octagon-xmark',\n icon: [512, 512, [\"times-octagon\", \"xmark-octagon\"], \"f2f0\", \"M140.6 21.2C154.1 7.7 172.4 .1 191.5 .1h129c19.1 0 37.4 7.6 50.9 21.1L490.8 140.6c13.5 13.5 21.1 31.8 21.1 50.9v129c0 19.1-7.6 37.4-21.1 50.9L371.4 490.8c-13.5 13.5-31.8 21.1-50.9 21.1h-129c-19.1 0-37.4-7.6-50.9-21.1L21.2 371.4C7.7 357.9 .1 339.6 .1 320.5v-129c0-19.1 7.6-37.4 21.1-50.9L140.6 21.2zM175 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faTimesOctagon = faOctagonXmark;\nvar faXmarkOctagon = faOctagonXmark;\nvar faAlignSlash = {\n prefix: 'fas',\n iconName: 'align-slash',\n icon: [640, 512, [], \"f846\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L481.4 352H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H399.7l-81.7-64H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H236.4L154.8 96H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H128c-13.4 0-24.8 8.2-29.6 19.8L38.8 5.1zM324.9 352l-81.2-64H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H324.9zM162.5 224l-61.8-48.7c-3 4.9-4.7 10.6-4.7 16.7c0 17.7 14.3 32 32 32h34.5zM487.4 480l-81.2-64H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H487.4z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M298.9 64l68.6 160H256l-64-64V64H298.9zM445.1 242.7l-87.4-204C347.6 15.3 324.5 0 298.9 0H176c-26.5 0-48 21.5-48 48V160H96c-17.7 0-32 14.3-32 32V298.8C26.2 316.8 0 355.3 0 400c0 61.9 50.1 112 112 112H368c61.9 0 112-50.1 112-112c0-17.2-3.9-33.5-10.8-48H512v50.7c0 17 6.7 33.3 18.7 45.3l54.6 54.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L576 402.7V320 235.2L633 164c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-57 71.2c-9.1 11.3-14 25.4-14 40V288H448V256.7c.1-2.4-.2-4.8-.6-7.1s-1.2-4.7-2.2-6.8zM368 352c26.5 0 48 21.5 48 48s-21.5 48-48 48H112c-26.5 0-48-21.5-48-48s21.5-48 48-48H368zM144 400a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm216 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-56-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM200 424a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faAnglesRight = {\n prefix: 'fas',\n iconName: 'angles-right',\n icon: [512, 512, [187, \"angle-double-right\"], \"f101\", \"M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faAngleDoubleRight = faAnglesRight;\nvar faTruckRampCouch = {\n prefix: 'fas',\n iconName: 'truck-ramp-couch',\n icon: [640, 512, [\"truck-couch\"], \"f4dd\", \"M640 0V400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8V64c0-35.3 28.7-64 64-64H640zM576 400a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM294.5 209.2c8.7-2.3 17.4-2.1 25.5 .2V334.8l-38.7 10.4L126.7 386.6 64.9 403.2c-17.1 4.6-34.6-5.6-39.2-22.6L13.3 334.2c-6.9-25.6 8.3-51.9 33.9-58.8s51.9 8.3 58.8 33.9l4.1 15.5 154.5-41.4-4.1-15.5c-6.9-25.6 8.3-51.9 33.9-58.8zM8 252.8c-9.1-34.1 11.1-69.2 45.3-78.4l185.5-49.7c34.1-9.1 69.2 11.1 78.4 45.3l1.7 6.4c-10.6-1.6-21.6-1.1-32.6 1.9c-37.4 10-61.5 44.9-59.2 82.1L131.2 286c-16.6-33.4-54.9-51.5-92.3-41.5c-11 2.9-20.8 8-29.2 14.7L8 252.8z\"]\n};\nvar faTruckCouch = faTruckRampCouch;\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M256 0c5.3 0 10.3 2.7 13.3 7.1c15.8 23.5 36.7 63.7 49.2 109c7.2 26.4 11.8 55.2 10.4 84c11.5-8.8 23.7-16.7 35.8-23.6c41-23.3 84.4-36.9 112.2-42.5c5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7c-9.1 15.9-19.9 31.7-32.4 46.3c27.8 6.6 52.4 17.3 67.2 25.5c5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1c-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.1c1.5 6.1-.6 12.4-5.5 16.4s-11.6 4.6-17.2 1.9L280 417.2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V417.2l-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.9s-7-10.3-5.5-16.4l8.3-33.1c-22.2 2.6-45 0-65.2-4.6c-28.9-6.6-54.6-17.6-69.8-26.1c-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14c14.8-8.2 39.4-18.8 67.2-25.5C78.9 296.3 68.1 280.5 59 264.6c-23.4-40.8-37.1-84-42.7-111.7c-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5c12.1 6.9 24.3 14.7 35.8 23.6c-1.4-28.7 3.1-57.6 10.4-84c12.5-45.3 33.4-85.5 49.2-109c3-4.4 8-7.1 13.3-7.1z\"]\n};\nvar faCirclePlay = {\n prefix: 'fas',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9V344c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"]\n};\nvar faPlayCircle = faCirclePlay;\nvar faArrowUpRightAndArrowDownLeftFromCenter = {\n prefix: 'fas',\n iconName: 'arrow-up-right-and-arrow-down-left-from-center',\n icon: [512, 512, [], \"e0a0\", \"M352 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L297.4 169.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V160c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H352zM214.6 297.4c-12.5-12.5-32.8-12.5-45.3 0L64 402.7V352c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32H160c17.7 0 32-14.3 32-32s-14.3-32-32-32H109.3L214.6 342.6c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M614.3 247c16.3-25 25.7-54.9 25.7-87C640 71.6 568.4 0 480 0c-32.1 0-61.9 9.4-87 25.7c-7.9 5.2-8.5 16.2-1.8 22.9L591.4 248.8c6.7 6.7 17.8 6.2 22.9-1.8zM567 294.3c7.9-5.2 8.5-16.2 1.8-22.9L368.6 71.2c-6.7-6.7-17.8-6.2-22.9 1.8c-16.3 25-25.7 54.9-25.7 87c0 88.4 71.6 160 160 160c32.1 0 61.9-9.4 87-25.7zM301.5 368H18.5c-9.5 0-16.9 8.2-15 17.5C18.9 457.8 83.1 512 160 512s141.1-54.2 156.5-126.5c2-9.3-5.5-17.5-15-17.5zm0-32c9.5 0 16.9-8.2 15-17.5C301.1 246.2 236.9 192 160 192S18.9 246.2 3.5 318.5c-2 9.3 5.5 17.5 15 17.5H301.5z\"]\n};\nvar fa360Degrees = {\n prefix: 'fas',\n iconName: '360-degrees',\n icon: [640, 512, [], \"e2dc\", \"M640 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H96L38.4 204.8c-7.3 9.7-8.4 22.7-3 33.5S51.9 256 64 256H80c26.5 0 48 21.5 48 48v48c0 17.7-14.3 32-32 32H90.5c-8.5 0-16.6-3.4-22.6-9.4L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l13.3 13.3c18 18 42.4 28.1 67.9 28.1H96c53 0 96-43 96-96V304c0-47-29-87.3-70.1-103.9l63.7-84.9c7.3-9.7 8.4-22.7 3-33.5S172.1 64 160 64H32zm448 80c0-8.8 7.2-16 16-16s16 7.2 16 16V368c0 8.8-7.2 16-16 16s-16-7.2-16-16V144zm96 224V144c0-44.2-35.8-80-80-80s-80 35.8-80 80V368c0 44.2 35.8 80 80 80s80-35.8 80-80zM288 160c0-17.7 14.3-32 32-32s32-14.3 32-32s-14.3-32-32-32c-53 0-96 43-96 96V288c0 .1 0 .2 0 .2V368c0 44.2 35.8 80 80 80s80-35.8 80-80V272c0-44.2-35.8-80-80-80c-5.5 0-10.8 .6-16 1.6V160zm0 112c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V272z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M0 224V416c0 17.7 14.3 32 32 32H96V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H448V160c0-17.7-14.3-32-32-32H384V96c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32v32H96c-17.7 0-32 14.3-32 32v32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [8364, \"eur\", \"euro\"], \"f153\", \"M48.1 240c-.1 2.7-.1 5.3-.1 8v16c0 2.7 0 5.3 .1 8H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H60.3C89.9 419.9 170 480 264 480h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264c-57.9 0-108.2-32.4-133.9-80H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112.2c-.1-2.6-.2-5.3-.2-8V248c0-2.7 .1-5.4 .2-8H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H130.1c25.7-47.6 76-80 133.9-80h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264C170 32 89.9 92.1 60.3 176H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48.1z\"]\n};\nvar faEur = faEuroSign;\nvar faEuro = faEuroSign;\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [129681], \"f6c0\", \"M248 48V256h48V58.7c23.9 13.8 40 39.7 40 69.3V256h48V128C384 57.3 326.7 0 256 0H192C121.3 0 64 57.3 64 128V256h48V128c0-29.6 16.1-55.5 40-69.3V256h48V48h48zM48 288c-12.1 0-23.2 6.8-28.6 17.7l-16 32c-5 9.9-4.4 21.7 1.4 31.1S20.9 384 32 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32V384H352v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384c11.1 0 21.4-5.7 27.2-15.2s6.4-21.2 1.4-31.1l-16-32C423.2 294.8 412.1 288 400 288H48z\"]\n};\nvar faCircleCheck = {\n prefix: 'fas',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckCircle = faCircleCheck;\nvar faSquareDashedCirclePlus = {\n prefix: 'fas',\n iconName: 'square-dashed-circle-plus',\n icon: [576, 512, [], \"e5c2\", \"M96 32C43 32 0 75 0 128v32H64V128c0-17.7 14.3-32 32-32h32V32H96zM0 192V320H64V192H0zM64 352H0v32c0 53 43 96 96 96h32V416H96c-17.7 0-32-14.3-32-32V352zM384 128v70.6c15.3-4.3 31.4-6.6 48-6.6c5.4 0 10.7 .2 16 .7V128c0-53-43-96-96-96H320V96h32c17.7 0 32 14.3 32 32zM160 480H296.2c-15.3-18.5-26.9-40.2-33.6-64H160v64zm0-384H288V32H160V96zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faMoneySimpleFromBracket = {\n prefix: 'fas',\n iconName: 'money-simple-from-bracket',\n icon: [640, 512, [], \"e313\", \"M64 96v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 43 43 0 96 0H544c53 0 96 43 96 96v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7-14.3-32-32-32H96C78.3 64 64 78.3 64 96zm64 0l384 0 0 352c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64l0-352zM320 352c53 0 96-35.8 96-80s-43-80-96-80s-96 35.8-96 80s43 80 96 80z\"]\n};\nvar faBat = {\n prefix: 'fas',\n iconName: 'bat',\n icon: [576, 512, [], \"f6b5\", \"M235.6 52.8l10.8 14.4c6 8.1 15.5 12.8 25.6 12.8h32c10.1 0 19.6-4.7 25.6-12.8l10.8-14.4c2.3-3 5.8-4.8 9.6-4.8c5.8 0 10.8 4.1 11.8 9.8l19 101.4L452.6 125c16.2-7.7 35.5-3.6 47.1 10C548.9 192.4 576 265.6 576 341.2v37.6c0 9.7-10.2 16-18.9 11.7l-63.8-31.9c-7.5-3.7-16.6-1.1-20.9 6.1l-29.8 49.7c-5.4 8.9-17.7 10.4-25 3.1l-36.6-36.6c-6.8-6.8-18.1-6.1-24 1.6l-56.2 73.1c-6.4 8.3-19 8.3-25.4 0l-56.2-73.1c-5.9-7.7-17.2-8.4-24-1.6l-36.6 36.6c-7.4 7.4-19.7 5.8-25-3.1l-29.8-49.7c-4.3-7.2-13.4-9.8-20.9-6.1L18.9 390.5c-8.7 4.3-18.9-2-18.9-11.7V341.2C0 265.6 27.1 192.4 76.3 135c11.6-13.6 30.9-17.7 47.1-10l71.8 34.2 19-101.4c1.1-5.7 6-9.8 11.8-9.8c3.8 0 7.4 1.8 9.6 4.8z\"]\n};\nvar faCircleStop = {\n prefix: 'fas',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faStopCircle = faCircleStop;\nvar faHeadSideHeadphones = {\n prefix: 'fas',\n iconName: 'head-side-headphones',\n icon: [512, 512, [], \"f8c2\", \"M256 0V0c95.2 0 174.2 69.3 189.4 160.1c2.2 13 6.7 25.7 15 36.1l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2C0 122.8 67.4 36.9 160 9.3V86.6c0 12.4-7.4 23.3-17.4 30.5C114.4 137.4 96 170.6 96 208c0 61.9 50.1 112 112 112s112-50.1 112-112c0-37.4-18.4-70.6-46.6-90.9c-10-7.2-17.4-18.2-17.4-30.5V0zM240 208a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-96 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faPhoneRotary = {\n prefix: 'fas',\n iconName: 'phone-rotary',\n icon: [512, 512, [9742], \"f8d3\", \"M0 141.3c0-8.5 3.4-16.6 9.9-22.1C38.2 95.4 125.9 32 256 32s217.8 63.4 246.1 87.2c6.5 5.5 9.9 13.6 9.9 22.1V176c0 17.7-14.3 32-32 32H437.7c-13.1 0-24.9-8-29.7-20.1l-19.4-48.6c-2.9-7.3-8.4-13.2-15.7-16c-18.6-7-59.5-19.3-116.8-19.3s-98.2 12.3-116.8 19.3c-7.3 2.8-12.8 8.7-15.7 16L104 187.9C99.2 200 87.4 208 74.3 208H32c-17.7 0-32-14.3-32-32V141.3zM32 432V401c0-11.1 2.9-22.1 8.4-31.8l101.1-177C153 172.3 174.2 160 197.1 160H314.9c23 0 44.2 12.3 55.6 32.2l101.1 177c5.5 9.7 8.4 20.6 8.4 31.8v31c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48zM328 312a72 72 0 1 0 -144 0 72 72 0 1 0 144 0z\"]\n};\nvar faCompassDrafting = {\n prefix: 'fas',\n iconName: 'compass-drafting',\n icon: [512, 512, [\"drafting-compass\"], \"f568\", \"M352 96c0 14.3-3.1 27.9-8.8 40.2L396 227.4c-23.7 25.3-54.2 44.1-88.5 53.6L256 192h0 0l-68 117.5c21.5 6.8 44.3 10.5 68.1 10.5c70.7 0 133.8-32.7 174.9-84c11.1-13.8 31.2-16 45-5s16 31.2 5 45C428.1 341.8 347 384 256 384c-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496V440.6c0-8.4 2.2-16.7 6.5-24.1l60-103.7C53.7 301.6 41.8 289.3 31.2 276c-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2c0-53 43-96 96-96s96 43 96 96zm21 297.9c32.6-12.8 62.5-30.8 88.9-52.9l43.7 75.5c4.2 7.3 6.5 15.6 6.5 24.1V496c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9L373 393.9zM256 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faDraftingCompass = faCompassDrafting;\nvar faPlateWheat = {\n prefix: 'fas',\n iconName: 'plate-wheat',\n icon: [512, 512, [], \"e55a\", \"M176 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zM56 64h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48zM400 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zm80 160v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80zm-96 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320H484.2c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446v2c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32v-2c-48.2-9-86.3-48.2-92.5-98.4z\"]\n};\nvar faCalendarCircleMinus = {\n prefix: 'fas',\n iconName: 'calendar-circle-minus',\n icon: [576, 512, [], \"e46f\", \"M128 0C110.3 0 96 14.3 96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32zM256 368c0-91.8 70.3-167.2 160-175.3V192H0V464c0 26.5 21.5 48 48 48H330.8C285.6 480.1 256 427.5 256 368zm320 0a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faChopsticks = {\n prefix: 'fas',\n iconName: 'chopsticks',\n icon: [640, 512, [], \"e3f7\", \"M368 0c-15.3 0-29 7.2-37.7 18.3L3.4 486.1c-5.5 6.9-4.3 17 2.7 22.5s17 4.2 22.5-2.7L405.7 77.7C412.2 69.5 416 59.2 416 48c0-26.5-21.5-48-48-48zM131.9 506.4c5.8 6.7 15.9 7.5 22.6 1.7L623.2 148.4c10.3-8.8 16.8-21.9 16.8-36.4c0-26.5-21.5-48-48-48c-11.9 0-22.8 4.4-31.2 11.6L133.6 483.9c-6.7 5.8-7.5 15.8-1.7 22.6z\"]\n};\nvar faCarWrench = {\n prefix: 'fas',\n iconName: 'car-wrench',\n icon: [512, 512, [\"car-mechanic\"], \"f5e3\", \"M468.9 104H456l-.5 0c-.7 0-1.4-.1-2.1-.1C441.3 102.5 432 92.4 432 80s9.3-22.5 21.3-23.9c.7-.1 1.4-.1 2.1-.1l.5 0h12.9 17.6c10.8 0 18.4-10.6 12.5-19.6c-3.6-5.5-7.8-10.5-12.5-14.9c-4.2-3.9-8.8-7.4-13.8-10.3C470.8 10 468.9 9 466.9 8C456.4 2.9 444.5 0 432 0c-29.1 0-54.5 15.5-68.5 38.7c-3.3 5.4-8.9 9.3-15.3 9.3H163.8c-6.4 0-12-3.8-15.3-9.3C134.5 15.5 109.1 0 80 0C67.5 0 55.6 2.9 45.1 8c-2 1-3.9 2-5.8 3.1c-5 2.9-9.6 6.4-13.8 10.3c-4.7 4.4-9 9.4-12.5 14.9C7 45.4 14.7 56 25.5 56H43.1 56l.5 0c.7 0 1.4 .1 2.1 .1C70.7 57.5 80 67.6 80 80s-9.3 22.5-21.3 23.9c-.7 .1-1.4 .1-2.1 .1l-.5 0H43.1 25.5C14.7 104 7 114.6 12.9 123.6c3.6 5.5 7.8 10.5 12.5 14.9c4.2 3.9 8.8 7.4 13.8 10.3c1.9 1.1 3.8 2.2 5.8 3.1c10.6 5.1 22.4 8 34.9 8c29.1 0 54.5-15.5 68.5-38.7c3.3-5.4 8.9-9.3 15.3-9.3H348.2c6.4 0 12 3.8 15.3 9.3c14 23.2 39.5 38.7 68.5 38.7c12.5 0 24.4-2.9 34.9-8c2-1 3.9-2 5.8-3.1c5-2.9 9.6-6.4 13.8-10.3c4.7-4.4 9-9.4 12.5-14.9c5.9-9-1.7-19.6-12.5-19.6H468.9zM185.8 224H326.2c6.8 0 12.8 4.3 15.1 10.6L360.3 288H151.7l19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344v40 64 32c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V448H384v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448 384 344c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160H185.8c-33.8 0-64 21.3-75.3 53.1zM128 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faCarMechanic = faCarWrench;\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M75.8 304.8L1 35.7c-.7-2.5-1-5-1-7.5C0 12.6 12.6 0 28.2 0H482.4C498.8 0 512 13.2 512 29.6c0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9c-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1c-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7c-9.3 0-17.5-6.2-20-15.2z\"]\n};\nvar faPersonShelter = {\n prefix: 'fas',\n iconName: 'person-shelter',\n icon: [512, 512, [], \"e54f\", \"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160V480c0 17.7 14.3 32 32 32s32-14.3 32-32V178.6L256 68.9 448 178.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm-8 280V400h16v88c0 13.3 10.7 24 24 24s24-10.7 24-24V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H246.2c-32.4 0-62.1 17.8-77.5 46.3l-37.9 70.3c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5V488c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [384, 512, [9906], \"f22c\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V480c0 17.7 14.3 32 32 32s32-14.3 32-32V349.1z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm96 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM144 64h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faKazoo = {\n prefix: 'fas',\n iconName: 'kazoo',\n icon: [640, 512, [], \"f8c7\", \"M514 128h94c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H514c-19.8 10.2-42.2 16-66 16s-46.3-5.8-66-16H224c-3 0-6-.4-9-1.3l-192-56C9.4 322.7 0 310.2 0 296V216c0-14.2 9.4-26.7 23-30.7l192-56c2.9-.8 5.9-1.3 9-1.3H382c19.8-10.2 42.2-16 66-16s46.3 5.8 66 16zm30 128a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM427.3 212.7L448 233.4l20.7-20.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L470.6 256l20.7 20.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L448 278.6l-20.7 20.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L425.4 256l-20.7-20.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M481 31C445.1-4.8 386.9-4.8 351 31l-15 15L322.9 33C294.8 4.9 249.2 4.9 221.1 33L135 119c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L255 66.9c9.4-9.4 24.6-9.4 33.9 0L302.1 80 186.3 195.7 316.3 325.7 481 161c35.9-35.9 35.9-94.1 0-129.9zM293.7 348.3L163.7 218.3 99.5 282.5c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l64.2-64.2z\"]\n};\nvar faBinBottles = {\n prefix: 'fas',\n iconName: 'bin-bottles',\n icon: [640, 512, [], \"e5f5\", \"M152 0h80c13.3 0 24 10.7 24 24v8c8.8 0 16 7.2 16 16s-7.2 16-16 16H128c-8.8 0-16-7.2-16-16s7.2-16 16-16V24c0-13.3 10.7-24 24-24zM32 192c0-53 43-96 96-96H256c24.9 0 47.6 9.5 64.6 25c1.1 1 2.2 2 3.2 3.1C341.3 141.5 352 165.5 352 192H32zm352 0c0-40.7-19-76.9-48.6-100.4c5.2-5.6 11.5-10.3 18.6-13.6l13.2-6.2c5.3-2.5 10.8-4.4 16.4-5.7V24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24V66.1c5.6 1.3 11.1 3.2 16.4 5.7L541.2 78c21 9.9 34.4 31 34.4 54.2c0 12.3-3.7 23.8-10.1 33.3c5 7.8 8.4 16.9 9.6 26.5H384zM0 256c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32s-14.3 32-32 32L583.8 457c-4.5 31.5-31.5 55-63.4 55h-401c-31.8 0-58.9-23.4-63.4-55L32 288c-17.7 0-32-14.3-32-32z\"]\n};\nvar faFaceLaughBeam = {\n prefix: 'fas',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM217.6 212.8l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faLaughBeam = faFaceLaughBeam;\nvar faSquareArrowDownLeft = {\n prefix: 'fas',\n iconName: 'square-arrow-down-left',\n icon: [448, 512, [], \"e261\", \"M64 480c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64zM288 368c13.3 0 24-10.7 24-24s-10.7-24-24-24H193.9L329 185c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-135 135V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V344c0 13.3 10.7 24 24 24H288z\"]\n};\nvar faBatteryBolt = {\n prefix: 'fas',\n iconName: 'battery-bolt',\n icon: [576, 512, [], \"f376\", \"M80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80h92.2c-12.9-14.5-16.1-35.6-7.2-53.5l5.3-10.5H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H219.2l80-64H80zM464 352H324.8l-80 64H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H371.8c13 14.5 16.1 35.6 7.2 53.5L373.7 160H464c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16zM346.1 115.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L193.7 376.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H297.9l52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"]\n};\nvar faTreeLarge = {\n prefix: 'fas',\n iconName: 'tree-large',\n icon: [448, 512, [], \"f7dd\", \"M62 169.4L210.6 5.9C214 2.1 218.9 0 224 0s10 2.1 13.4 5.9L386 169.4c3.9 4.2 6 9.8 6 15.5c0 12.7-10.3 23.1-23.1 23.1H344l75.5 105.7c2.9 4.1 4.5 9 4.5 14.1c0 13.4-10.9 24.2-24.2 24.2H368l76.2 122c2.5 4 3.8 8.5 3.8 13.2c0 13.7-11.1 24.9-24.9 24.9H24.9C11.1 512 0 500.9 0 487.1c0-4.7 1.3-9.2 3.8-13.2L80 352H48.2C34.8 352 24 341.1 24 327.8c0-5 1.6-10 4.5-14.1L104 208H79.1C66.3 208 56 197.7 56 184.9c0-5.7 2.1-11.3 6-15.5z\"]\n};\nvar faHelicopterSymbol = {\n prefix: 'fas',\n iconName: 'helicopter-symbol',\n icon: [512, 512, [], \"e502\", \"M445.3 224H510C495.6 108.2 403.8 16.4 288 2V66.7C368.4 80.1 431.9 143.6 445.3 224zM510 288H445.3C431.9 368.4 368.4 431.9 288 445.4V510c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510V445.4C143.6 431.9 80.1 368.4 66.7 288H2zm0-64H66.7C80.1 143.6 143.6 80.1 224 66.7V2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 17.7 14.3 32 32 32s32-14.3 32-32V288h96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H208V160z\"]\n};\nvar faAperture = {\n prefix: 'fas',\n iconName: 'aperture',\n icon: [512, 512, [], \"e2df\", \"M256 0c4 0 7.9 .1 11.9 .3c11.3 .5 17.5 12.9 11.8 22.8L177.5 200c-6.2 10.7-21.6 10.7-27.7 0L82.8 84.1c-3.6-6.3-2.6-14.3 2.9-19.2C130.9 24.5 190.6 0 256 0zM0 256c0-50.9 14.9-98.3 40.5-138.2c6.1-9.5 19.9-8.6 25.6 1.2L168.2 296c6.2 10.7-1.5 24-13.9 24H20.5c-7.3 0-13.7-4.9-15.2-12.1C1.8 291.2 0 273.8 0 256zM193.7 492c-3.6 6.3-11.1 9.4-18 7.1C111.8 478 59 432.5 28.5 373.6C23.3 363.5 31 352 42.3 352H246.8c12.3 0 20 13.3 13.9 24l-67 116zM256 512c-4 0-7.9-.1-11.9-.3c-11.3-.5-17.5-12.9-11.8-22.8L334.5 312c6.2-10.7 21.6-10.7 27.7 0l66.9 115.9c3.6 6.3 2.6 14.3-2.9 19.2C381.1 487.5 321.4 512 256 512zM512 256c0 50.9-14.9 98.3-40.5 138.2c-6.1 9.5-19.9 8.6-25.6-1.2L343.8 216c-6.2-10.7 1.5-24 13.9-24H491.5c7.3 0 13.7 4.9 15.2 12.1c3.5 16.8 5.3 34.1 5.3 51.9zM318.3 20c3.6-6.3 11.1-9.4 18-7.1C400.2 34 453 79.5 483.5 138.4c5.2 10.1-2.5 21.6-13.8 21.6H265.2c-12.3 0-20-13.3-13.9-24l67-116z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm161.5-86.1c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3v50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6V235.5c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faGearComplex = {\n prefix: 'fas',\n iconName: 'gear-complex',\n icon: [512, 512, [], \"e5e9\", \"M305.4 21.8c-1.3-10.4-9.1-18.8-19.5-20C276.1 .6 266.1 0 256 0c-11.1 0-22.1 .7-32.8 2.1c-10.3 1.3-18 9.7-19.3 20l-2.9 23.1c-.8 6.4-5.4 11.6-11.5 13.7c-9.6 3.2-19 7.2-27.9 11.7c-5.8 3-12.8 2.5-18-1.5l-18-14c-8.2-6.4-19.7-6.8-27.9-.4c-16.6 13-31.5 28-44.4 44.7c-6.3 8.2-5.9 19.6 .5 27.8l14.2 18.3c4 5.1 4.4 12 1.5 17.8c-4.4 8.8-8.2 17.9-11.3 27.4c-2 6.2-7.3 10.8-13.7 11.6l-22.8 2.9c-10.3 1.3-18.7 9.1-20 19.4C.7 234.8 0 245.3 0 256c0 10.6 .6 21.1 1.9 31.4c1.3 10.3 9.7 18.1 20 19.4l22.8 2.9c6.4 .8 11.7 5.4 13.7 11.6c3.1 9.5 6.9 18.7 11.3 27.5c2.9 5.8 2.4 12.7-1.5 17.8L54 384.8c-6.4 8.2-6.8 19.6-.5 27.8c12.9 16.7 27.8 31.7 44.4 44.7c8.2 6.4 19.7 6 27.9-.4l18-14c5.1-4 12.2-4.4 18-1.5c9 4.6 18.3 8.5 27.9 11.7c6.1 2.1 10.7 7.3 11.5 13.7l2.9 23.1c1.3 10.3 9 18.7 19.3 20c10.7 1.4 21.7 2.1 32.8 2.1c10.1 0 20.1-.6 29.9-1.7c10.4-1.2 18.2-9.7 19.5-20l2.8-22.5c.8-6.5 5.5-11.8 11.7-13.8c10-3.2 19.7-7.2 29-11.8c5.8-2.9 12.7-2.4 17.8 1.5L385 457.9c8.2 6.4 19.6 6.8 27.8 .5c2.8-2.2 5.5-4.4 8.2-6.7L451.7 421c1.8-2.2 3.6-4.4 5.4-6.6c6.5-8.2 6-19.7-.4-27.9l-14-17.9c-4-5.1-4.4-12.2-1.5-18c4.8-9.4 9-19.3 12.3-29.5c2-6.2 7.3-10.8 13.7-11.6l22.8-2.8c10.3-1.3 18.8-9.1 20-19.4c.2-1.7 .4-3.5 .6-5.2V230.1c-.2-1.7-.4-3.5-.6-5.2c-1.3-10.3-9.7-18.1-20-19.4l-22.8-2.8c-6.4-.8-11.7-5.4-13.7-11.6c-3.4-10.2-7.5-20.1-12.3-29.5c-3-5.8-2.5-12.8 1.5-18l14-17.9c6.4-8.2 6.8-19.7 .4-27.9c-1.8-2.2-3.6-4.4-5.4-6.6L421 60.3c-2.7-2.3-5.4-4.5-8.2-6.7c-8.2-6.4-19.6-5.9-27.8 .5L366.7 68.3c-5.1 4-12.1 4.4-17.8 1.5c-9.3-4.6-19-8.6-29-11.8c-6.2-2-10.9-7.3-11.7-13.7l-2.8-22.5zM256 176a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faFileMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'file-magnifying-glass',\n icon: [384, 512, [\"file-search\"], \"f865\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm16 304c0 17.8-4.9 34.5-13.3 48.9L297 391.2c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-38.4-38.4C210.4 395.2 193.8 400 176 400c-53 0-96-43-96-96s43-96 96-96s96 43 96 96zm-96 48a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faFileSearch = faFileMagnifyingGlass;\nvar faUpRight = {\n prefix: 'fas',\n iconName: 'up-right',\n icon: [384, 512, [], \"e2be\", \"M336 80H96c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l72 72L11.3 340.7C4.1 347.9 0 357.8 0 368s4.1 20.1 11.3 27.3l41.4 41.4C59.9 443.9 69.8 448 80 448s20.1-4.1 27.3-11.3L241.4 302.6l72 72c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V112c0-17.7-14.3-32-32-32z\"]\n};\nvar faCircleChevronUp = {\n prefix: 'fas',\n iconName: 'circle-chevron-up',\n icon: [512, 512, [\"chevron-circle-up\"], \"f139\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"]\n};\nvar faChevronCircleUp = faCircleChevronUp;\nvar faUserPolice = {\n prefix: 'fas',\n iconName: 'user-police',\n icon: [448, 512, [], \"e333\", \"M230.1 .8l152 40c8.6 2.3 15.3 9.1 17.3 17.8s-1 17.8-7.8 23.6L368 102.5v8.4c0 10.7-5.3 20.8-15.1 25.2c-24.1 10.8-68.6 24-128.9 24s-104.8-13.2-128.9-24C85.3 131.7 80 121.6 80 110.9v-8.4L56.4 82.2c-6.8-5.8-9.8-14.9-7.8-23.6s8.7-15.6 17.3-17.8l152-40c4-1.1 8.2-1.1 12.2 0zM227 48.6c-1.9-.8-4-.8-5.9 0L189 61.4c-3 1.2-5 4.2-5 7.4c0 17.2 7 46.1 36.9 58.6c2 .8 4.2 .8 6.2 0C257 114.9 264 86 264 68.8c0-3.3-2-6.2-5-7.4L227 48.6zM98.1 168.8c39.1 15 81.5 23.2 125.9 23.2s86.8-8.2 125.9-23.2c1.4 7.5 2.1 15.3 2.1 23.2c0 70.7-57.3 128-128 128s-128-57.3-128-128c0-7.9 .7-15.7 2.1-23.2zM134.4 352c2.8 0 5.5 .9 7.7 2.6l72.3 54.2c5.7 4.3 13.5 4.3 19.2 0l72.3-54.2c2.2-1.7 4.9-2.6 7.7-2.6C387.8 352 448 412.2 448 486.4c0 14.1-11.5 25.6-25.6 25.6H25.6C11.5 512 0 500.5 0 486.4C0 412.2 60.2 352 134.4 352zM352 408c-3.5 0-6.5 2.2-7.6 5.5L339 430.2l-17.4 0c-3.5 0-6.6 2.2-7.6 5.5s.1 6.9 2.9 9L331 454.8l-5.4 16.6c-1.1 3.3 .1 6.9 2.9 9s6.6 2 9.4 0L352 470.1l14.1 10.3c2.8 2 6.6 2.1 9.4 0s4-5.7 2.9-9L373 454.8l14.1-10.2c2.8-2 4-5.7 2.9-9s-4.2-5.5-7.6-5.5l-17.4 0-5.4-16.6c-1.1-3.3-4.1-5.5-7.6-5.5z\"]\n};\nvar faLariSign = {\n prefix: 'fas',\n iconName: 'lari-sign',\n icon: [384, 512, [], \"e1c8\", \"M144 32c17.7 0 32 14.3 32 32V96.7c5.3-.4 10.6-.7 16-.7s10.7 .2 16 .7V64c0-17.7 14.3-32 32-32s32 14.3 32 32v49.4c54.9 25.2 95.8 75.5 108.2 136.2c3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.1-29.9-22.5-55.9-45.4-74.3V256c0 17.7-14.3 32-32 32s-32-14.3-32-32V161c-5.2-.7-10.6-1-16-1s-10.8 .3-16 1v95c0 17.7-14.3 32-32 32s-32-14.3-32-32V188.1C82.7 211.5 64 247.6 64 288c0 70.7 57.3 128 128 128H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H192 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48.9C18.5 382 0 337.2 0 288c0-77.5 45.9-144.3 112-174.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faVolcano = {\n prefix: 'fas',\n iconName: 'volcano',\n icon: [512, 512, [127755], \"f770\", \"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15C212.4 12.4 232.7 0 256 0s43.6 12.4 54.8 31C322 21.6 336.3 16 352 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8c19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9c11.3 0 21.8-5.6 28-15l9.7-14.6-58.9-66.3c-9.1-10.2-22.2-16.1-35.9-16.1H235.1c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4L144 352zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2h41.8c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7c0 28.8-23.4 52.2-52.2 52.2H52.2C23.4 512 0 488.6 0 459.8c0-12.8 4.7-25.1 13.2-34.7l150.2-169z\"]\n};\nvar faTeddyBear = {\n prefix: 'fas',\n iconName: 'teddy-bear',\n icon: [576, 512, [], \"e3cf\", \"M154.7 103.7C138.7 93.9 128 76.2 128 56c0-30.9 25.1-56 56-56c24.2 0 44.7 15.3 52.6 36.7C252.5 33.5 269.8 32 288 32s35.5 1.5 51.4 4.7C347.3 15.3 367.8 0 392 0c30.9 0 56 25.1 56 56c0 20.2-10.7 37.9-26.7 47.7c1.8 7.4 2.7 15.5 2.7 24.3c0 70.7-60.9 128-136 128s-136-57.3-136-128c0-8.8 .9-16.8 2.7-24.3zM240 128a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm112-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm0 64c0-26.5-28.7-48-64-48s-64 21.5-64 48s28.7 48 64 48s64-21.5 64-48zm-32-8c0 13.3-14.3 24-32 24s-32-10.7-32-24s14.3-24 32-24s32 10.7 32 24zM50.3 178.3c20.8-16.4 51-12.8 67.4 8L143.5 219c73.7 93.5 215.4 93.5 289.1 0l25.8-32.7c16.4-20.8 46.6-24.4 67.4-8s24.4 46.6 8 67.4l-25.8 32.7c-17.7 22.4-37.9 41.3-59.9 56.7V400h16.6c3.9-27.1 27.2-48 55.4-48c30.9 0 56 25.1 56 56c0 2.7-.2 5.4-.6 8l-13 53.3c-5.8 23.8-26.3 40.9-50.4 42.6v.1h-4H480 96 68 64v-.1c-24.1-1.7-44.6-18.8-50.4-42.6L.6 416c-.4-2.6-.6-5.3-.6-8c0-30.9 25.1-56 56-56c28.2 0 51.6 20.9 55.4 48H128V335.1c-22-15.4-42.3-34.3-59.9-56.7L42.3 245.7c-16.4-20.8-12.8-51 8-67.4zM256 352c-35.3 0-64 28.7-64 64H384c0-35.3-28.7-64-64-64H256z\"]\n};\nvar faStocking = {\n prefix: 'fas',\n iconName: 'stocking',\n icon: [384, 512, [], \"f7d5\", \"M96 0C78.3 0 64 14.3 64 32V64c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H96zm0 128V238.9c0 10.7-5.3 20.7-14.2 26.6L55.7 282.9C20.9 306.1 0 345.1 0 386.9v2.2C0 457 55 512 122.8 512c24.2 0 48-7.2 68.1-20.6L295 422c35.6-23.7 57-63.7 57-106.5V128H96z\"]\n};\nvar faPersonWalkingDashedLineArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-dashed-line-arrow-right',\n icon: [640, 512, [], \"e553\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24V72c0 13.3 10.7 24 24 24s24-10.7 24-24V24c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V152zM392 320c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V344c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24v48c0 13.3 10.7 24 24 24s24-10.7 24-24V440z\"]\n};\nvar faImageSlash = {\n prefix: 'fas',\n iconName: 'image-slash',\n icon: [640, 512, [], \"e1b7\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-55.5-43.5c.5-3.1 .7-6.3 .7-9.6V96c0-35.3-28.7-64-64-64H128c-14.4 0-27.8 4.8-38.5 12.9L38.8 5.1zm120 94.1c5.3-2 11.1-3.2 17.2-3.2c26.5 0 48 21.5 48 48c0 2-.1 4-.4 6L158.8 99.2zM328.1 231.9l20-29.4c4.5-6.6 11.9-10.5 19.8-10.5s15.4 3.9 19.8 10.5L499.4 366.1 328.1 231.9zM221.7 272.5c.3-.4 .6-.7 1-1.1L64 146.4V416c0 35.3 28.7 64 64 64H487.4l-81.2-64H320 248 152c-9.3 0-17.8-5.4-21.8-13.9s-2.6-18.5 3.5-25.6l88-104z\"]\n};\nvar faMaskSnorkel = {\n prefix: 'fas',\n iconName: 'mask-snorkel',\n icon: [576, 512, [], \"e3b7\", \"M544 32c-17.7 0-32 14.3-32 32v96h64V64c0-17.7-14.3-32-32-32zM512 367.4c0 44.5-36.1 80.6-80.6 80.6c-39.4 0-73-28.5-79.5-67.4l-.3-1.9c-2.9-17.4-19.4-29.2-36.8-26.3s-29.2 19.4-26.3 36.8l.3 1.9C300.4 460.9 360.7 512 431.4 512C511.3 512 576 447.3 576 367.4V192H512V367.4zM64 64C28.7 64 0 92.7 0 128v96c0 35.3 28.7 64 64 64h79.7c28.6 0 53.7-18.9 61.5-46.4l3.4-11.7c4.4-15.5 26.3-15.5 30.8 0l3.4 11.7c7.8 27.5 33 46.4 61.5 46.4H384c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faSmoke = {\n prefix: 'fas',\n iconName: 'smoke',\n icon: [640, 512, [], \"f760\", \"M172.3 194.3c-9.2-1.5-18.7-2.3-28.3-2.3c-29.2 0-56.7 7.1-80.9 19.6C43.7 189.2 32 160 32 128C32 57.3 89.3 0 160 0c40.1 0 75.9 18.4 99.3 47.3C277.4 37.5 298 32 320 32c44.3 0 83.4 22.5 106.4 56.8c-11.5 7.3-22 16-31.2 25.9C372.7 102.8 347.2 96 320 96c-66.5 0-123.5 40.6-147.7 98.3zm276.3 62.5C419.5 217.5 372.7 192 320 192c-31.5 0-60.9 9.1-85.7 24.9c-9.6-5.8-19.8-10.6-30.5-14.5C224 158.5 268.4 128 320 128c31.3 0 60.1 11.3 82.3 30c22.4-37.1 63.1-62 109.7-62c70.7 0 128 57.3 128 128c0 42.2-20.4 79.6-51.9 102.9C563.1 284.5 516.9 256 464 256c-5.2 0-10.3 .3-15.4 .8zM144 512C64.5 512 0 447.5 0 368s64.5-144 144-144c34.5 0 66.1 12.1 90.9 32.3C257.6 236.2 287.4 224 320 224c49.1 0 91.8 27.7 113.2 68.3c9.8-2.8 20.1-4.3 30.8-4.3c61.9 0 112 50.1 112 112s-50.1 112-112 112H144z\"]\n};\nvar faSterlingSign = {\n prefix: 'fas',\n iconName: 'sterling-sign',\n icon: [320, 512, [163, \"gbp\", \"pound-sign\"], \"f154\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v44.5c0 17.4-4.7 34.5-13.7 49.4L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H88.5l.7-1.1C104.1 390 112 361.5 112 332.5V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V160.4z\"]\n};\nvar faGbp = faSterlingSign;\nvar faPoundSign = faSterlingSign;\nvar faBatteryExclamation = {\n prefix: 'fas',\n iconName: 'battery-exclamation',\n icon: [576, 512, [], \"e0b0\", \"M208 96v64H80c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H198.7c-4.3 9.8-6.7 20.6-6.7 32s2.4 22.2 6.7 32H80c-44.2 0-80-35.8-80-80V176c0-44.2 35.8-80 80-80H208zM464 416H345.3c4.3-9.8 6.7-20.6 6.7-32s-2.4-22.2-6.7-32H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H336V96H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80zM272 96c13.3 0 24 10.7 24 24V296c0 13.3-10.7 24-24 24s-24-10.7-24-24V120c0-13.3 10.7-24 24-24zM240 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M192 0c13.3 0 24 10.7 24 24V37.5c0 35.6 43.1 53.5 68.3 28.3l9.5-9.5c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-9.5 9.5C293 124.9 310.9 168 346.5 168H360c13.3 0 24 10.7 24 24s-10.7 24-24 24H346.5c-35.6 0-53.5 43.1-28.3 68.3l9.5 9.5c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-9.5-9.5C259.1 293 216 310.9 216 346.5V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V346.5c0-35.6-43.1-53.5-68.3-28.3l-9.5 9.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l9.5-9.5C91 259.1 73.1 216 37.5 216H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H37.5c35.6 0 53.5-43.1 28.3-68.3l-9.5-9.5c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l9.5 9.5C124.9 91 168 73.1 168 37.5V24c0-13.3 10.7-24 24-24zm48 224a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48-64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm320 80c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C574.5 312.1 591 352 624 352c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C551.9 446.5 512 463 512 496c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C417.5 423.9 401 384 368 384c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C440.1 289.5 480 273 480 240c0-8.8 7.2-16 16-16s16 7.2 16 16zm0 112a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faSquarePersonConfined = {\n prefix: 'fas',\n iconName: 'square-person-confined',\n icon: [448, 512, [], \"e577\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm96 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm80 104c0-30.9 25.1-56 56-56s56 25.1 56 56V350.1c0 36.4-29.5 65.9-65.9 65.9c-17.5 0-34.3-6.9-46.6-19.3L184.8 342l-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9L240 306.7V248z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 256A128 128 0 1 1 224 0a128 128 0 1 1 0 256zM209.1 359.2l-18.6-31c-6.4-10.7 1.3-24.2 13.7-24.2H224h19.7c12.4 0 20.1 13.6 13.7 24.2l-18.6 31 33.4 123.9 36-146.9c2-8.1 9.8-13.4 17.9-11.3c70.1 17.6 121.9 81 121.9 156.4c0 17-13.8 30.7-30.7 30.7H285.5c-2.1 0-4-.4-5.8-1.1l.3 1.1H168l.3-1.1c-1.8 .7-3.8 1.1-5.8 1.1H30.7C13.8 512 0 498.2 0 481.3c0-75.5 51.9-138.9 121.9-156.4c8.1-2 15.9 3.3 17.9 11.3l36 146.9 33.4-123.9z\"]\n};\nvar faArrowDownLong = {\n prefix: 'fas',\n iconName: 'arrow-down-long',\n icon: [384, 512, [\"long-arrow-down\"], \"f175\", \"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7L86.6 329.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128z\"]\n};\nvar faLongArrowDown = faArrowDownLong;\nvar faTentArrowDownToLine = {\n prefix: 'fas',\n iconName: 'tent-arrow-down-to-line',\n icon: [640, 512, [], \"e57e\", \"M241.8 111.9c8.9 9.9 8.1 25-1.8 33.9l-80 72c-9.1 8.2-23 8.2-32.1 0l-80-72c-9.9-8.9-10.7-24-1.8-33.9s24-10.7 33.9-1.8l39.9 36L120 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 122.1 39.9-36c9.9-8.9 25-8.1 33.9 1.8zm122.8 22.6c11.5-8.7 27.3-8.7 38.8 0l168 128c6.6 5 11 12.5 12.3 20.7l24 160 .7 4.7c17.5 .2 31.6 14.4 31.6 32c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H159.6l.7-4.7 24-160c1.2-8.2 5.6-15.7 12.3-20.7l168-128zM384 448h76.8L384 320V448z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.3-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z\"]\n};\nvar faCrystalBall = {\n prefix: 'fas',\n iconName: 'crystal-ball',\n icon: [448, 512, [], \"e362\", \"M448 224c0 62.7-25.7 119.3-67.2 160H67.2C25.7 343.3 0 286.7 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224zM152.5 84.3l-9.8 26.4-26.4 9.8c-7 2.6-7 12.4 0 15l26.4 9.8 9.8 26.4c2.6 7 12.4 7 15 0l9.8-26.4 26.4-9.8c7-2.6 7-12.4 0-15l-26.4-9.8-9.8-26.4c-2.6-7-12.4-7-15 0zm159 48c-2.6-7-12.4-7-15 0l-18.4 49.8-49.8 18.4c-7 2.6-7 12.4 0 15l49.8 18.4 18.4 49.8c2.6 7 12.4 7 15 0l18.4-49.8 49.8-18.4c7-2.6 7-12.4 0-15l-49.8-18.4-18.4-49.8zm98.9 331.8c3.7 5.1 5.6 11.3 5.6 17.6c0 16.7-13.6 30.3-30.3 30.3H62.3C45.6 512 32 498.4 32 481.7c0-6.3 2-12.5 5.6-17.6L72 416H376l34.4 48.1z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [\"mail-reply-all\"], \"f122\", \"M209.4 39.5c-9.1-9.6-24.3-10-33.9-.9L33.8 173.2c-19.9 18.9-19.9 50.7 0 69.6L175.5 377.4c9.6 9.1 24.8 8.7 33.9-.9s8.7-24.8-.9-33.9L66.8 208 208.5 73.4c9.6-9.1 10-24.3 .9-33.9zM352 64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144c-6.7 6.1-10.6 14.7-10.6 23.8s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2V288h32c53 0 96 43 96 96c0 30.4-12.8 47.9-22.2 56.7c-5.5 5.1-9.8 12-9.8 19.5c0 10.9 8.8 19.7 19.7 19.7c2.8 0 5.6-.6 8.1-1.9C494.5 467.9 576 417.3 576 304c0-97.2-78.8-176-176-176H352V64z\"]\n};\nvar faMailReplyAll = faReplyAll;\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [129523], \"f0f2\", \"M176 56V96H336V56c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zM128 96V56c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56V96v32V480H128V128 96zM64 96H96V480H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64zM448 480H416V96h32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64z\"]\n};\nvar faPersonSkating = {\n prefix: 'fas',\n iconName: 'person-skating',\n icon: [448, 512, [\"skating\"], \"f7c5\", \"M352 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM128 128c0-17.7 14.3-32 32-32H319.4c43.6 0 64.6 53.4 32.8 83.1l-74.4 69.4 60.2 60.2c9 9 14.1 21.2 14.1 33.9V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V349.3l-77.9-77.8c-26.6-26.6-24.6-70.3 4.3-94.4l20.4-17H160c-17.7 0-32-14.3-32-32zM81.4 353.4l86.9-86.9c4.6 10 11 19.3 19.3 27.5l21.8 21.8-82.7 82.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm322.5 95.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h88.8c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM135.2 478.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L4.7 411.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"]\n};\nvar faSkating = faPersonSkating;\nvar faStarShooting = {\n prefix: 'fas',\n iconName: 'star-shooting',\n icon: [512, 512, [127776], \"e036\", \"M313 41L265 89c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L279 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM170.4 157.4c8.8-17.9 34.3-17.9 43.1 0l46.3 94 103.5 15.1c19.7 2.9 27.5 27 13.3 40.9l-74.9 73.2 17.7 103.3c3.4 19.6-17.2 34.6-34.8 25.3l-92.6-48.8L99.3 509.2c-17.6 9.3-38.2-5.7-34.8-25.3L82.2 380.6 7.2 307.4C-7 293.5 .9 269.3 20.5 266.5l103.5-15.1 46.3-94zM505 199c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0zM505 41L361 185c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faBinaryLock = {\n prefix: 'fas',\n iconName: 'binary-lock',\n icon: [640, 512, [], \"e33d\", \"M322.7 6c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V160H256c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H336V32c0-10.3-4.9-19.9-13.3-26zM98.7 294c-8.3-6-19.1-7.7-28.8-4.4l-48 16C5.1 311.2-3.9 329.4 1.7 346.1s23.7 25.8 40.5 20.2l5.9-2V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H80h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V320c0-10.3-4.9-19.9-13.3-26zM64 0C28.7 0 0 28.7 0 64v96c0 35.3 28.7 64 64 64h64c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm0 64h64v96H64V64zM192 352v96c0 35.3 28.7 64 64 64h64c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H256c-35.3 0-64 28.7-64 64zm128 0v96H256V352h64zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faFilterCircleDollar = {\n prefix: 'fas',\n iconName: 'filter-circle-dollar',\n icon: [576, 512, [\"funnel-dollar\"], \"f662\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm120.8-32.6c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7V288c0-8.8-7.2-16-16-16s-16 7.2-16 16v9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6l0 0 0 0c7 2.3 15.1 4.8 23.7 6.6v11.4c0 8.8 7.2 16 16 16s16-7.2 16-16V438.7c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5l0-.1c-.1-1.9 .3-2.9 .8-3.6z\"]\n};\nvar faFunnelDollar = faFilterCircleDollar;\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [128247], \"f083\", \"M220.6 121.2L271.1 96 448 96v96H333.2c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24H64V128H192c9.9 0 19.7-2.3 28.6-6.8zM0 128V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H271.1c-9.9 0-19.7 2.3-28.6 6.8L192 64H160V48c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM168 304a88 88 0 1 1 176 0 88 88 0 1 1 -176 0z\"]\n};\nvar faCircleArrowDown = {\n prefix: 'fas',\n iconName: 'circle-arrow-down',\n icon: [512, 512, [\"arrow-circle-down\"], \"f0ab\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM127 281c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 136c0-13.3 10.7-24 24-24s24 10.7 24 24l0 182.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 393c-9.4 9.4-24.6 9.4-33.9 0L127 281z\"]\n};\nvar faArrowCircleDown = faCircleArrowDown;\nvar faCommentPen = {\n prefix: 'fas',\n iconName: 'comment-pen',\n icon: [512, 512, [\"comment-edit\"], \"f4ae\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm84.8-293c14.7 14.7 14.7 38.6 0 53.3l-14.9 14.9L272.6 170 287.5 155c14.7-14.7 38.6-14.7 53.3 0zM178.1 264.5L250 192.6l53.3 53.3-71.9 71.9c-4.1 4.1-9.2 7-14.9 8.4l-36.6 9.2c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l9.2-36.7c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faCommentEdit = faCommentPen;\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [\"arrow-right-to-file\"], \"f56f\", \"M128 64c0-35.3 28.7-64 64-64H352V128c0 17.7 14.3 32 32 32H512V448c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64V336H302.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H128V64zm0 224v48H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H128zM512 128H384V0L512 128z\"]\n};\nvar faArrowRightToFile = faFileImport;\nvar faBanjo = {\n prefix: 'fas',\n iconName: 'banjo',\n icon: [512, 512, [129685], \"f8a3\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41L286 180.7c-20.6-13.9-44.3-23.4-70-27V152c0-13.3-10.7-24-24-24s-24 10.7-24 24v1.7c-28.5 4.1-54.6 15.3-76.6 31.7l-1.2-1.2c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l1.2 1.2C41 241.4 29.8 267.5 25.7 296H24c-13.3 0-24 10.7-24 24s10.7 24 24 24h1.7c4.1 28.5 15.3 54.6 31.7 76.6l-1.2 1.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l1.2-1.2c22 16.5 48.2 27.7 76.6 31.7V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-1.7c28.5-4.1 54.6-15.3 76.6-31.7l1.2 1.2c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-1.2-1.2c16.5-22 27.7-48.2 31.7-76.6H360c13.3 0 24-10.7 24-24s-10.7-24-24-24h-1.7c-3.7-25.7-13.1-49.5-27-70l76.1-76.1 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM192 208a112 112 0 1 1 0 224 112 112 0 1 1 0-224zM155.3 308.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48z\"]\n};\nvar faSquareArrowUpRight = {\n prefix: 'fas',\n iconName: 'square-arrow-up-right',\n icon: [448, 512, [\"external-link-square\"], \"f14c\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM160 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h94.1L119 327c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135V328c0 13.3 10.7 24 24 24s24-10.7 24-24V168c0-13.3-10.7-24-24-24H160z\"]\n};\nvar faExternalLinkSquare = faSquareArrowUpRight;\nvar faLightEmergencyOn = {\n prefix: 'fas',\n iconName: 'light-emergency-on',\n icon: [640, 512, [], \"e420\", \"M69.3 36c-11-7.4-25.9-4.4-33.3 6.7s-4.4 25.9 6.7 33.3l48 32c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3l-48-32zM597.3 76c11-7.4 14-22.3 6.7-33.3s-22.3-14-33.3-6.7l-48 32c-11 7.4-14 22.3-6.7 33.3s22.3 14 33.3 6.7l48-32zM24 192c-13.3 0-24 10.7-24 24s10.7 24 24 24H88c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zm528 0c-13.3 0-24 10.7-24 24s10.7 24 24 24h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H552zM320 32c-88.4 0-160 71.6-160 160V352H480V192c0-88.4-71.6-160-160-160zM240 192c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80zM96 416v32c0 17.7 14.3 32 32 32H512c17.7 0 32-14.3 32-32V416c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32z\"]\n};\nvar faKerning = {\n prefix: 'fas',\n iconName: 'kerning',\n icon: [640, 512, [], \"f86f\", \"M454.3 23.2c4-7.9 .7-17.5-7.2-21.5s-17.5-.7-21.5 7.2l-240 480c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l240-480zM60.6 113.7C52.7 97.9 33.5 91.5 17.7 99.4S-4.5 126.5 3.4 142.3l128 256c5.4 10.8 16.5 17.7 28.6 17.7s23.2-6.8 28.6-17.7l128-256c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L160 312.4 60.6 113.7zm320 284.6L403.8 352H556.2l23.2 46.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-128-256C503.2 102.8 492.1 96 480 96s-23.2 6.8-28.6 17.7l-128 256c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3zM480 199.6L524.2 288H435.8L480 199.6z\"]\n};\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6v167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5v-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128h2.2z\"]\n};\nvar faSquareF = {\n prefix: 'fas',\n iconName: 'square-f',\n icon: [448, 512, [], \"e270\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 96H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H176v64h88c13.3 0 24 10.7 24 24s-10.7 24-24 24H176v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 152c0-13.3 10.7-24 24-24z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [576, 512, [128220], \"f70e\", \"M0 80v48c0 17.7 14.3 32 32 32H48 96V80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48V384c0 35.3 28.7 64 64 64s64-28.7 64-64v-5.3c0-32.4 26.3-58.7 58.7-58.7H480V128c0-53-43-96-96-96H112zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16H314.7c-14.7 0-26.7 11.9-26.7 26.7V384c0 53-43 96-96 96H368h96z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M183.1 235.3c33.7 20.7 62.9 48.1 85.8 80.5c7 9.9 13.4 20.3 19.1 31c5.7-10.8 12.1-21.1 19.1-31c22.9-32.4 52.1-59.8 85.8-80.5C437.6 207.8 490.1 192 546 192h9.9c11.1 0 20.1 9 20.1 20.1C576 360.1 456.1 480 308.1 480H288 267.9C119.9 480 0 360.1 0 212.1C0 201 9 192 20.1 192H30c55.9 0 108.4 15.8 153.1 43.3zM301.5 37.6c15.7 16.9 61.1 71.8 84.4 164.6c-38 21.6-71.4 50.8-97.9 85.6c-26.5-34.8-59.9-63.9-97.9-85.6c23.2-92.8 68.6-147.7 84.4-164.6C278 33.9 282.9 32 288 32s10 1.9 13.5 5.6z\"]\n};\nvar faArrowLeftFromLine = {\n prefix: 'fas',\n iconName: 'arrow-left-from-line',\n icon: [448, 512, [8612, \"arrow-from-right\"], \"f344\", \"M384 96c0-17.7 14.3-32 32-32s32 14.3 32 32V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96zM9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 224 288 224c17.7 0 32 14.3 32 32s-14.3 32-32 32l-178.7 0 73.4 73.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-128-128z\"]\n};\nvar faArrowFromRight = faArrowLeftFromLine;\nvar faStrawberry = {\n prefix: 'fas',\n iconName: 'strawberry',\n icon: [512, 512, [], \"e32b\", \"M481.5 1.9c12.2 5.2 17.8 19.3 12.6 31.5c-13.4 31.2-36.9 59-56.3 78.7c32.8 1.8 57.4 18 68.2 26.6c4 3.2 6 8.1 6 13.2s-2 10-6 13.3C495 174.4 469.7 192 440 192c-40 0-55.3-15.3-80-40s-40-40-40-80c0-29.7 17.6-55 26.7-66c3.3-4 8.2-6 13.3-6s10 2 13.2 6C382.3 17.4 400 44.3 400 80c0 .7 0 1.4 0 2.1c.7-.7 1.4-1.3 2-2c18.2-18.2 37.7-41.7 47.9-65.5c5.2-12.2 19.3-17.8 31.5-12.6zM0 336C0 160 96.2 64 192.2 64c32.7 .1 65.3 12.6 90.3 37.5l128 128c25 25 37.5 57.8 37.5 90.5c0 96-96 192-272 192C48 512 0 464 0 336zM172.8 172.8c11.9-11.9 14.6-28.3 8.7-34.3s-22.4-3.2-34.3 8.7s-14.6 28.3-8.7 34.3s22.4 3.2 34.3-8.7zm72.7 29.7c-5.9-5.9-22.4-3.2-34.3 8.7s-14.6 28.3-8.7 34.3s22.4 3.2 34.3-8.7s14.6-28.3 8.7-34.3zm-32 96c-5.9-5.9-22.4-3.2-34.3 8.7s-14.6 28.3-8.7 34.3s22.4 3.2 34.3-8.7s14.6-28.3 8.7-34.3zm-32 96c-5.9-5.9-22.4-3.2-34.3 8.7s-14.6 28.3-8.7 34.3s22.4 3.2 34.3-8.7s14.6-28.3 8.7-34.3zm87.3 2.3c11.9-11.9 14.6-28.3 8.7-34.3s-22.4-3.2-34.3 8.7s-14.6 28.3-8.7 34.3s22.4 3.2 34.3-8.7zm32-96c11.9-11.9 14.6-28.3 8.7-34.3s-22.4-3.2-34.3 8.7s-14.6 28.3-8.7 34.3s22.4 3.2 34.3-8.7zm72.7 29.7c-5.9-5.9-22.4-3.2-34.3 8.7s-14.6 28.3-8.7 34.3s22.4 3.2 34.3-8.7s14.6-28.3 8.7-34.3zm-224-96c-5.9-5.9-22.4-3.2-34.3 8.7s-14.6 28.3-8.7 34.3s22.4 3.2 34.3-8.7s14.6-28.3 8.7-34.3zM108.8 364.8c11.9-11.9 14.6-28.3 8.7-34.3s-22.4-3.2-34.3 8.7s-14.6 28.3-8.7 34.3s22.4 3.2 34.3-8.7z\"]\n};\nvar faLocationPinLock = {\n prefix: 'fas',\n iconName: 'location-pin-lock',\n icon: [512, 512, [], \"e51f\", \"M215.7 499.2c11-13.8 25.1-31.7 40.3-52.3V352c0-23.7 12.9-44.4 32-55.4V272c0-55.6 40.5-101.7 93.6-110.5C367 70 287.7 0 192 0C86 0 0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c17.7 0 32 14.3 32 32v48H368V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [320, 512, [9208], \"f04c\", \"M48 64C21.5 64 0 85.5 0 112V400c0 26.5 21.5 48 48 48H80c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zm192 0c-26.5 0-48 21.5-48 48V400c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H240z\"]\n};\nvar faClockEightThirty = {\n prefix: 'fas',\n iconName: 'clock-eight-thirty',\n icon: [512, 512, [], \"e346\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM232 392V300.8L173.3 340c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l96-64c7.4-4.9 16.8-5.4 24.6-1.2S280 247.1 280 256V392c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlaneEngines = {\n prefix: 'fas',\n iconName: 'plane-engines',\n icon: [576, 512, [9992, \"plane-alt\"], \"f3de\", \"M576 256c0-35-59.5-64-93.7-64l-116.6 0-37.2-65.1C342 123.1 352 110.7 352 96c0-17.7-14.3-32-32-32l-27.4 0L265.2 16.1C259.5 6.2 248.9 0 237.4 0L181.2 0c-10.6 0-18.3 10.2-15.4 20.4l49 171.6L112 192 68.8 134.4c-3-4-7.8-6.4-12.8-6.4l-42 0c-7.8 0-14 6.3-14 14c0 1.3 .2 2.6 .5 3.9l22.7 79.3C9.8 229 0 241.4 0 256s9.8 27 23.2 30.8L.5 366.1c-.4 1.3-.5 2.6-.5 3.9c0 7.8 6.3 14 14 14l42 0c5 0 9.8-2.4 12.8-6.4L112 320l102.9 0-49 171.6c-2.9 10.2 4.8 20.4 15.4 20.4l56.2 0c11.5 0 22.1-6.2 27.8-16.1L292.6 448l27.4 0c17.7 0 32-14.3 32-32c0-14.7-10-27.1-23.5-30.9L365.7 320l116.6 0c34.2 0 93.7-28 93.7-64z\"]\n};\nvar faPlaneAlt = faPlaneEngines;\nvar faHillAvalanche = {\n prefix: 'fas',\n iconName: 'hill-avalanche',\n icon: [576, 512, [], \"e507\", \"M439.7 401.9c34.2 23.1 81.1 19.5 111.4-10.8c34.4-34.4 34.4-90.1 0-124.4c-27.8-27.8-69.5-33.1-102.6-16c-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7C401.2 261.3 416 236.4 416 208c0-33.9-21.1-62.9-50.9-74.5c1.9-6.8 2.9-14 2.9-21.5c0-44.2-35.8-80-80-80c-27.3 0-51.5 13.7-65.9 34.6C216.3 46.6 197.9 32 176 32c-26.5 0-48 21.5-48 48c0 4 .5 7.9 1.4 11.6L439.7 401.9zM480 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87z\"]\n};\nvar faTemperatureEmpty = {\n prefix: 'fas',\n iconName: 'temperature-empty',\n icon: [320, 512, [\"temperature-0\", \"thermometer-0\", \"thermometer-empty\"], \"f2cb\", \"M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM160 0C98.1 0 48 50.2 48 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C272 50.2 221.9 0 160 0zm0 416a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faTemperature0 = faTemperatureEmpty;\nvar faThermometer0 = faTemperatureEmpty;\nvar faThermometerEmpty = faTemperatureEmpty;\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [128163], \"f1e2\", \"M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 304S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-75.1 60.9-136 136-136h8c8.8 0 16 7.2 16 16s-7.2 16-16 16h-8z\"]\n};\nvar faGaugeLow = {\n prefix: 'fas',\n iconName: 'gauge-low',\n icon: [512, 512, [\"tachometer-alt-slow\"], \"f627\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64s-28.7-64-64-64c-.6 0-1.3 0-1.9 0L190 142.3c-5.3-12.1-19.5-17.6-31.6-12.3s-17.6 19.5-12.3 31.6l64.1 145.7C198.9 318.9 192 334.6 192 352c0 35.3 28.7 64 64 64zM128 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faTachometerAltSlow = faGaugeLow;\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152c0-13.3 10.7-24 24-24h88c44.2 0 80 35.8 80 80c0 28-14.4 52.7-36.3 67l34.1 75.1c5.5 12.1 .1 26.3-11.9 31.8s-26.3 .1-31.8-11.9L268.9 288H208v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 152zm48 88h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H208v64z\"]\n};\nvar faTrashCanPlus = {\n prefix: 'fas',\n iconName: 'trash-can-plus',\n icon: [448, 512, [], \"e2ac\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zM200 408c0 13.3 10.7 24 24 24s24-10.7 24-24V344h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V232c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H136c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 256h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-32H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faContactCard = faAddressCard;\nvar faVcard = faAddressCard;\nvar faScaleUnbalancedFlip = {\n prefix: 'fas',\n iconName: 'scale-unbalanced-flip',\n icon: [640, 512, [\"balance-scale-right\"], \"f516\", \"M117.9 62.4c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l113 37.7C265 15.8 290.7 0 320 0c44.2 0 80 35.8 80 80c0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.4 145.2c-4.5 3.2-9.3 5.9-14.4 8.2V480c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-21-9.2-37.2-27-44.2-49l-125.9-42zM200.4 288L128 163.8 55.6 288H200.4zM128 384C65.1 384 12.8 350 2 305.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C243.2 350 190.9 384 128 384zm382.8-92.2L438.4 416H583.3L510.8 291.8zm126 141.3C626 478 573.7 512 510.8 512s-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1z\"]\n};\nvar faBalanceScaleRight = faScaleUnbalancedFlip;\nvar faGlobeSnow = {\n prefix: 'fas',\n iconName: 'globe-snow',\n icon: [448, 512, [], \"f7a3\", \"M448 224c0 62.7-25.7 119.3-67.2 160H256V352h64c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4L262.6 256H288c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9h25.4l-68.7 68.7c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9h64v32H67.2C25.7 343.3 0 286.7 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224zM256 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm80 112a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM96 208a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM20.3 474.2L61.1 416H386.9l40.8 58.2c5.1 7.3 5.8 16.9 1.6 24.8S416.9 512 408 512H40c-8.9 0-17.2-5-21.3-12.9s-3.5-17.5 1.6-24.8z\"]\n};\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V320z\"]\n};\nvar faDiamondTurnRight = {\n prefix: 'fas',\n iconName: 'diamond-turn-right',\n icon: [512, 512, [\"directions\"], \"f5eb\", \"M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8v56H224c-35.3 0-64 28.7-64 64v48c0 13.3 10.7 24 24 24s24-10.7 24-24V280c0-8.8 7.2-16 16-16h64v56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z\"]\n};\nvar faDirections = faDiamondTurnRight;\nvar faIntegral = {\n prefix: 'fas',\n iconName: 'integral',\n icon: [320, 512, [], \"f667\", \"M216 64c-13.3 0-24 10.7-24 24V424c0 48.6-39.4 88-88 88s-88-39.4-88-88v-8c0-17.7 14.3-32 32-32s32 14.3 32 32v8c0 13.3 10.7 24 24 24s24-10.7 24-24V88c0-48.6 39.4-88 88-88s88 39.4 88 88v8c0 17.7-14.3 32-32 32s-32-14.3-32-32V88c0-13.3-10.7-24-24-24z\"]\n};\nvar faBurst = {\n prefix: 'fas',\n iconName: 'burst',\n icon: [512, 512, [], \"e4dc\", \"M37.6 4.2C28-2.3 15.2-1.1 7 7s-9.4 21-2.8 30.5l112 163.3L16.6 233.2C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4L66.8 412.8c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1L392.3 312.2l103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8L388.9 198.7l25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7L278.8 16.6C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6l-32.3 99.6L37.6 4.2z\"]\n};\nvar faHouseLaptop = {\n prefix: 'fas',\n iconName: 'house-laptop',\n icon: [640, 512, [\"laptop-house\"], \"e066\", \"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c6.7 6.2 10.3 14.8 10.3 23.5H336c-19.1 0-36.3 8.4-48 21.7V208c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64V416H112c-26.5 0-48-21.5-48-48V256H32c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM352 304V448H544V304H352zm-48-16c0-17.7 14.3-32 32-32H560c17.7 0 32 14.3 32 32V448h32c8.8 0 16 7.2 16 16c0 26.5-21.5 48-48 48H544 352 304c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16h32V288z\"]\n};\nvar faLaptopHouse = faHouseLaptop;\nvar faFaceTired = {\n prefix: 'fas',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3h-3.2c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm-31.2-182l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faTired = faFaceTired;\nvar faMoneyBills = {\n prefix: 'fas',\n iconName: 'money-bills',\n icon: [640, 512, [], \"e1f3\", \"M96 96V320c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zm64 160c35.3 0 64 28.7 64 64H160V256zM224 96c0 35.3-28.7 64-64 64V96h64zM576 256v64H512c0-35.3 28.7-64 64-64zM512 96h64v64c-35.3 0-64-28.7-64-64zM288 208a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V360c0 66.3 53.7 120 120 120H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H120c-39.8 0-72-32.2-72-72V120z\"]\n};\nvar faBlindsRaised = {\n prefix: 'fas',\n iconName: 'blinds-raised',\n icon: [512, 512, [], \"f8fd\", \"M32 0C14.3 0 0 14.3 0 32C0 43.9 6.5 54.2 16.1 59.8L1.2 100.6c-.8 2.2-1.2 4.6-1.2 7C0 118.9 9.1 128 20.4 128H128V64h32v64H491.6c11.3 0 20.4-9.1 20.4-20.4c0-2.4-.4-4.7-1.2-7L495.9 59.8C505.5 54.2 512 43.9 512 32c0-17.7-14.3-32-32-32H32zM144 512c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V224H491.9c11.1 0 20.1-9 20.1-20.1c0-2.6-.5-5.1-1.4-7.5L496 160H160v64H128V160H16L1.4 196.4c-1 2.4-1.4 4.9-1.4 7.5C0 215 9 224 20.1 224H128V418.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M32 144c0 79.5 64.5 144 144 144H299.3c22.6 19.9 52.2 32 84.7 32s62.1-12.1 84.7-32H496c61.9 0 112-50.1 112-112s-50.1-112-112-112c-10.7 0-21 1.5-30.8 4.3C443.8 27.7 401.1 0 352 0c-32.6 0-62.4 12.2-85.1 32.3C242.1 12.1 210.5 0 176 0C96.5 0 32 64.5 32 144zM616 368H280c-13.3 0-24 10.7-24 24s10.7 24 24 24H616c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-64 96H440c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-192 0H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24zM224 392c0-13.3-10.7-24-24-24H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H200c13.3 0 24-10.7 24-24z\"]\n};\nvar faUfoBeam = {\n prefix: 'fas',\n iconName: 'ufo-beam',\n icon: [576, 512, [], \"e048\", \"M184 152s24 40 104 40s104-40 104-40c0-48-33.3-104-104-104s-104 56-104 104zm-42.6-40.4C159.1 47.2 218.1 0 288 0s128.9 47.2 146.6 111.6C519.2 131.1 576 167 576 208c0 61.9-128.9 112-288 112S0 269.9 0 208c0-41 56.8-76.9 141.4-96.4zM120 208a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm360 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM312 256a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM74.3 325.7l4.2-8.9c14.3 5.6 29.7 10.6 46 15l-6.8 14.5-72 152c-5.7 12-20 17.1-32 11.4s-17.1-20-11.4-32l72-152zm384 20.6l-6.8-14.5c16.3-4.4 31.7-9.4 46-15l4.2 8.9 72 152c5.7 12 .6 26.3-11.4 32s-26.3 .6-32-11.4l-72-152z\"]\n};\nvar faCircleCaretUp = {\n prefix: 'fas',\n iconName: 'circle-caret-up',\n icon: [512, 512, [\"caret-circle-up\"], \"f331\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-368c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4H152c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nvar faCaretCircleUp = faCircleCaretUp;\nvar faUserVneckHairLong = {\n prefix: 'fas',\n iconName: 'user-vneck-hair-long',\n icon: [448, 512, [], \"e463\", \"M304 128c0-11.4-2.4-22.2-6.7-32H296c-20.5 0-38.7-9.6-50.4-24.5C231.9 95.7 205.8 112 176 112H145.6c-1 5.2-1.6 10.5-1.6 16v16c0 44.2 35.8 80 80 80s80-35.8 80-80V128zM96 128C96 57.3 153.3 0 224 0s128 57.3 128 128v11c0 33.9 13.5 66.5 37.5 90.5l3.9 3.9c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H224 70.6C58.1 272 48 261.9 48 249.4c0-6 2.4-11.8 6.6-16l3.9-3.9c24-24 37.5-56.6 37.5-90.5V128zm61.3 199.1l53.9 71.8c6.4 8.5 19.2 8.5 25.6 0l53.9-71.8c3.2-4.3 8.4-6.7 13.7-6.2C385.1 329.7 448 398.2 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3C0 398.2 62.9 329.7 143.7 321c5.3-.6 10.5 1.9 13.7 6.2z\"]\n};\nvar faSquareALock = {\n prefix: 'fas',\n iconName: 'square-a-lock',\n icon: [576, 512, [], \"e44d\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H320V384c-9.1 0-17.7-5.2-21.8-13.9l-12-26.1H161.8l-12 26.1c-5.6 12-19.8 17.3-31.8 11.7s-17.3-19.8-11.7-31.8l96-208c3.9-8.5 12.4-13.9 21.8-13.9s17.9 5.4 21.8 13.9l82.4 178.6c5.6-10 13.9-18.3 23.8-24V272c0-56.4 41.7-103.1 96-110.9V96c0-35.3-28.7-64-64-64H64zM224 209.3L184 296h80l-40-86.7zM464 240c17.7 0 32 14.3 32 32v48H432V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M297.4 9.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0zm-96 144l-34.8 34.8c-12.9 12.9-21.9 29.2-25.8 47.1L116.8 342.9c-1.3 5.9-4.3 11.4-8.6 15.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l98.8-98.8c4.3-4.3 9.7-7.3 15.7-8.6l107.6-23.9c17.8-4 34.1-12.9 47.1-25.8l34.7-34.7c0 0 .1-.1 .1-.1s.1-.1 .1-.1l74.6-74.6-45.3-45.3L336 242.7 269.3 176l52.1-52.1L276.1 78.6l-74.7 74.7zM224 221.3L290.7 288l-12.2 12.2c-4.3 4.3-9.7 7.3-15.7 8.6l-76.7 17 17-76.7c1.3-5.9 4.3-11.4 8.6-15.7L224 221.3z\"]\n};\nvar faGasPumpSlash = {\n prefix: 'fas',\n iconName: 'gas-pump-slash',\n icon: [640, 512, [], \"f5f4\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-72.2-56.6C569.5 397.9 576 379.7 576 360V224 192 168 154.5c0-17-6.7-33.3-18.7-45.3L480 32c-8.8-8.8-23.2-8.8-32 0s-8.8 23.2 0 32l32 32v64c0 29.8 20.4 54.9 48 62V360c0 8.5-2.7 16.4-7.2 22.9L384 275.7V64c0-35.3-28.7-64-64-64H160c-30.9 0-56.7 21.9-62.7 51L38.8 5.1zM96 171.6V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32V398.5L96 171.6z\"]\n};\nvar faFontAwesome = {\n prefix: 'fas',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M448 48V384c-63.1 22.5-82.3 32-119.5 32c-62.8 0-86.6-32-149.3-32c-20.6 0-36.6 3.6-51.2 8.2v-64c14.6-4.6 30.6-8.2 51.2-8.2c62.7 0 86.5 32 149.3 32c20.4 0 35.6-3 55.5-9.3v-208c-19.9 6.3-35.1 9.3-55.5 9.3c-62.8 0-86.6-32-149.3-32c-50.8 0-74.9 20.6-115.2 28.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32s32 14.3 32 32V76.7c40.3-8 64.4-28.7 115.2-28.7c62.7 0 86.5 32 149.3 32c37.1 0 56.4-9.5 119.5-32z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faCloudArrowUp = {\n prefix: 'fas',\n iconName: 'cloud-arrow-up',\n icon: [640, 512, [62338, \"cloud-upload\", \"cloud-upload-alt\"], \"f0ee\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V392c0 13.3 10.7 24 24 24s24-10.7 24-24V257.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\"]\n};\nvar faCloudUpload = faCloudArrowUp;\nvar faCloudUploadAlt = faCloudArrowUp;\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [127912], \"f53f\", \"M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3H344c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faTransporter4 = {\n prefix: 'fas',\n iconName: 'transporter-4',\n icon: [512, 512, [], \"e2a5\", \"M224 0h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H224c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H224c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-48 64H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-32 64H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-32 64H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm64 64H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zM480 160l25.4 7.3c3.9 1.1 6.6 4.7 6.6 8.7s-2.7 7.6-6.6 8.7L480 192l-7.3 25.4c-1.1 3.9-4.7 6.6-8.7 6.6s-7.6-2.7-8.7-6.6L448 192l-25.4-7.3c-3.9-1.1-6.6-4.7-6.6-8.7s2.7-7.6 6.6-8.7L448 160l7.3-25.4c1.1-3.9 4.7-6.6 8.7-6.6s7.6 2.7 8.7 6.6L480 160zM56.7 358.6L64 384l25.4 7.3c3.9 1.1 6.6 4.7 6.6 8.7s-2.7 7.6-6.6 8.7L64 416l-7.3 25.4c-1.1 3.9-4.7 6.6-8.7 6.6s-7.6-2.7-8.7-6.6L32 416 6.6 408.7C2.7 407.6 0 404.1 0 400s2.7-7.6 6.6-8.7L32 384l7.3-25.4c1.1-3.9 4.7-6.6 8.7-6.6s7.6 2.7 8.7 6.6zM96 480c0-17.7 14.3-32 32-32H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H296 216 128c-17.7 0-32-14.3-32-32z\"]\n};\nvar faChartMixedUpCircleCurrency = {\n prefix: 'fas',\n iconName: 'chart-mixed-up-circle-currency',\n icon: [576, 512, [], \"e5d8\", \"M400 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h28.8L319.4 151.5 211.2 70.4c-11.7-8.8-27.8-8.5-39.2 .6L12 199c-13.8 11-16 31.2-5 45s31.2 16 45 5L192.6 136.5l108.2 81.1c11.7 8.8 27.8 8.5 39.2-.6L480 105v39c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H400zM192 224c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32zM64 320c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V352c0-17.7-14.3-32-32-32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm25.4-169.4a35.9 35.9 0 1 0 -50.7 50.7 35.9 35.9 0 1 0 50.7-50.7zM396.7 426l-17.3 17.3c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L374 403.3c-13.2-21.6-13.2-49.1 0-70.7l-17.3-17.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L396.7 310c21.6-13.2 49.1-13.2 70.7 0l17.3-17.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L490 332.7c13.2 21.6 13.2 49.1 0 70.7l17.3 17.3c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L467.3 426c-21.6 13.2-49.1 13.2-70.7 0z\"]\n};\nvar faObjectsAlignRight = {\n prefix: 'fas',\n iconName: 'objects-align-right',\n icon: [512, 512, [], \"e3bf\", \"M512 24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM336 64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48L48 224c-26.5 0-48-21.5-48-48V112C0 85.5 21.5 64 48 64l288 0zm0 224c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H176c-26.5 0-48-21.5-48-48V336c0-26.5 21.5-48 48-48H336z\"]\n};\nvar faArrowsTurnRight = {\n prefix: 'fas',\n iconName: 'arrows-turn-right',\n icon: [448, 512, [], \"e4c0\", \"M297.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L338.7 160H128c-35.3 0-64 28.7-64 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V224C0 153.3 57.3 96 128 96H338.7L297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416H96c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96H242.7l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M207.1 237.4L151.2 69.7C168.6 79.7 192.6 88 224 88s55.4-8.3 72.8-18.3L226.5 280.6c-1.6 4.9-2.5 10-2.5 15.2V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V270.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6V128 54.3 48c0-26.5-21.5-48-48-48h-4.5c-.2 0-.4 0-.6 0c-.4 0-.8 0-1.2 0C311 0 295.7 9.7 285.7 18.8C276.4 27.2 257.2 40 224 40s-52.4-12.8-61.7-21.2C152.3 9.7 137 0 118.3 0c-.4 0-.8 0-1.2 0c-.2 0-.4 0-.6 0H112C85.5 0 64 21.5 64 48v6.3V128v17.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5V464c0 26.5 21.5 48 48 48H176c9.9 0 19-3 26.7-8.1C195.9 492.2 192 478.5 192 464V295.8c0-8.6 1.4-17.1 4.1-25.3l11-33.1zM347.3 356.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-294.6 48l48-48c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z\"]\n};\nvar faPig = {\n prefix: 'fas',\n iconName: 'pig',\n icon: [640, 512, [128022], \"f706\", \"M513.5 32c8 0 14.5 6.5 14.5 14.5V78c0 19.7-9 37.8-23.6 49.7c6.4 4.9 12.7 10.1 18.6 15.7c17.6-15.9 28.5-38.6 29-63.3h40c8.8 0 16 7.2 16 16v16c0 32.8-24.6 59.8-56.3 63.5l6.8 9C570 200 585 212.5 602.2 221.1L608 224h8c13.3 0 24 10.7 24 24v96c0 13.3-10.7 24-24 24H572.5c-22.2 21.2-49.7 36.2-79.8 43.3l-13 45.5C475.8 470.5 463.3 480 449 480H416c-17.7 0-32-14.3-32-32V416H320 272v32c0 17.7-14.3 32-32 32H207c-14.3 0-26.8-9.5-30.8-23.2L155 382.4C110.3 358 80 310.5 80 256V240H47.4C21.2 240 0 218.8 0 192.6c0-21.8 14.8-40.7 35.9-46l8.2-2c8.6-2.1 17.3 3.1 19.4 11.6s-3.1 17.3-11.6 19.4l-8.2 2c-6.9 1.7-11.7 7.9-11.7 15c0 8.5 6.9 15.4 15.4 15.4H83.2C98 135 162.6 80 240 80H362.4c14.5 0 28.8 1.3 42.7 3.9c8.1-19.5 25.4-34.4 47-39.1l58.4-12.5c1-.2 2-.3 3-.3zM468 256a20 20 0 1 0 0-40 20 20 0 1 0 0 40z\"]\n};\nvar faInboxFull = {\n prefix: 'fas',\n iconName: 'inbox-full',\n icon: [512, 512, [], \"e1ba\", \"M58.9 80.5C66 52 91.6 32 121 32H391c29.4 0 55 20 62.1 48.5l57 227.9c1.3 5.1 1.9 10.3 1.9 15.5V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V323.9c0-5.2 .6-10.4 1.9-15.5l57-227.9zM391 96H121L73 288h51.2c12.1 0 23.2 6.8 28.6 17.7l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7H316.2c12.1 0 23.2-6.8 28.6-17.7l14.3-28.6c5.4-10.8 16.5-17.7 28.6-17.7H439L391 96zM176 144H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-32 80H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faCircleEnvelope = {\n prefix: 'fas',\n iconName: 'circle-envelope',\n icon: [512, 512, [\"envelope-circle\"], \"e10c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM128 192c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v9.3L264.7 255.6c-2.7 1.2-5.7 1.9-8.7 1.9s-5.9-.6-8.7-1.9L128 201.3V192zm149.9 92.7L384 236.5V320c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V236.5l106.1 48.3c6.9 3.1 14.3 4.8 21.9 4.8s15-1.6 21.9-4.8z\"]\n};\nvar faEnvelopeCircle = faCircleEnvelope;\nvar faTrianglePersonDigging = {\n prefix: 'fas',\n iconName: 'triangle-person-digging',\n icon: [640, 512, [\"construction\"], \"f85d\", \"M354.5 51.8C347.3 39.5 334.2 32 320 32s-27.3 7.5-34.5 19.8l-216 368c-7.3 12.4-7.3 27.7-.2 40.1S89.7 480 104 480H536c14.3 0 27.6-7.7 34.7-20.1s7-27.8-.2-40.1l-216-368zM216.9 304.7l15.6 9.8 64 40c4.7 2.9 7.5 8.1 7.5 13.6v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V376.9l-40.9-25.5-24.5 55.2c-3.6 8.1-13 11.7-21.1 8.1s-11.7-13-8.1-21.1l32-72 7.5-16.8zm112-45.7l19.7 49.2L402 339l16.3-27.2c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l48 80c3 4.9 3 11.1 .2 16.1s-8.2 8.1-13.9 8.1H384c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l15.2-25.4L232 277.9c-3.8-2.2-6.6-5.9-7.6-10.2s-.2-8.8 2.3-12.5l4.2-6.4c10.3-15.5 27.7-24.8 46.3-24.8c22.7 0 43.2 13.8 51.6 34.9zM288 184a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faConstruction = faTrianglePersonDigging;\nvar faFerry = {\n prefix: 'fas',\n iconName: 'ferry',\n icon: [576, 512, [], \"e4ea\", \"M224 0H352c17.7 0 32 14.3 32 32h75.1c20.6 0 31.6 24.3 18.1 39.8L456 96H120L98.8 71.8C85.3 56.3 96.3 32 116.9 32H192c0-17.7 14.3-32 32-32zM96 128H480c17.7 0 32 14.3 32 32V283.5c0 13.3-4.2 26.3-11.9 37.2l-51.4 71.9c-1.9 1.1-3.7 2.2-5.5 3.5c-15.5 10.7-34 18-51 19.9H375.6c-17.1-1.8-35-9-50.8-19.9c-22.1-15.5-51.6-15.5-73.7 0c-14.8 10.2-32.5 18-50.6 19.9H183.9c-17-1.8-35.6-9.2-51-19.9c-1.8-1.3-3.7-2.4-5.6-3.5L75.9 320.7C68.2 309.8 64 296.8 64 283.5V160c0-17.7 14.3-32 32-32zm32 64v96H448V192H128zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.3-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faBullseyeArrow = {\n prefix: 'fas',\n iconName: 'bullseye-arrow',\n icon: [512, 512, [127919], \"f648\", \"M335.2 244.7c.5 3.7 .8 7.5 .8 11.3c0 44.2-35.8 80-80 80s-80-35.8-80-80s35.8-80 80-80c3.8 0 7.6 .3 11.3 .8l31.2-31.2L293.7 117c-12-3.3-24.7-5-37.7-5c-79.5 0-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144c0-13.1-1.7-25.7-5-37.7l-28.6-4.8-31.2 31.2zm110.1-20.8c1.8 10.4 2.7 21.1 2.7 32.1c0 106-86 192-192 192S64 362 64 256S150 64 256 64c10.9 0 21.6 .9 32.1 2.7l9.3-9.3 43.1-43.1C314 5 285.6 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256c0-29.6-5-58-14.3-84.5l-43.1 43.1-9.3 9.3zm-80.2-43.1l50.7 8.4c10.2 1.7 20.6-1.6 27.9-8.9l51.2-51.2c8.1-8.1 5.3-21.9-5.4-26.2L432 80 409 22.5c-4.3-10.7-18-13.5-26.2-5.4L331.6 68.4c-7.3 7.3-10.6 17.7-8.9 27.9l8.4 50.7L239 239c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l92.1-92.1z\"]\n};\nvar faArrowsDownToPeople = {\n prefix: 'fas',\n iconName: 'arrows-down-to-people',\n icon: [640, 512, [], \"e4b9\", \"M144 0c-13.3 0-24 10.7-24 24V142.1L97 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24zM360 200a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM184 296a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm312 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 345.5V400c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V345.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 468.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5zM415 153l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V142.1l-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [127793, \"sprout\"], \"f4d8\", \"M512 32c0 113.6-84.6 207.5-194.2 222c-7.1-53.4-30.6-101.6-65.3-139.3C290.8 46.3 364 0 448 0h32c17.7 0 32 14.3 32 32zM0 96C0 78.3 14.3 64 32 64H64c123.7 0 224 100.3 224 224v32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320C100.3 320 0 219.7 0 96z\"]\n};\nvar faSprout = faSeedling;\nvar faClockSeven = {\n prefix: 'fas',\n iconName: 'clock-seven',\n icon: [512, 512, [], \"e350\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120V248.7l-60 90c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l64-96c2.6-3.9 4-8.6 4-13.3V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faLeftRight = {\n prefix: 'fas',\n iconName: 'left-right',\n icon: [512, 512, [8596, \"arrows-alt-h\"], \"f337\", \"M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z\"]\n};\nvar faArrowsAltH = faLeftRight;\nvar faBoxesPacking = {\n prefix: 'fas',\n iconName: 'boxes-packing',\n icon: [640, 512, [], \"e4c7\", \"M256 48c0-26.5 21.5-48 48-48H592c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H381.3c1.8-5 2.7-10.4 2.7-16V253.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H256V48zM571.3 347.3c6.2-6.2 6.2-16.4 0-22.6l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L480 310.6V432c0 8.8 7.2 16 16 16s16-7.2 16-16V310.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0zM0 176c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V176zm352 80V480c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V256H352zM144 320c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H144z\"]\n};\nvar faCircleArrowLeft = {\n prefix: 'fas',\n iconName: 'circle-arrow-left',\n icon: [512, 512, [\"arrow-circle-left\"], \"f0a8\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM231 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L376 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-182.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L119 273c-9.4-9.4-9.4-24.6 0-33.9L231 127z\"]\n};\nvar faArrowCircleLeft = faCircleArrowLeft;\nvar faFlashlight = {\n prefix: 'fas',\n iconName: 'flashlight',\n icon: [640, 512, [128294], \"f8b8\", \"M576 416h32c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H576V416zM544 97.7C449.1 107.9 384 160 384 160H48c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H384s65.1 52.1 160 62.3V97.7zM224 256c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32z\"]\n};\nvar faGroupArrowsRotate = {\n prefix: 'fas',\n iconName: 'group-arrows-rotate',\n icon: [512, 512, [], \"e4f6\", \"M201.1 71.9c16.9-5 26.6-22.9 21.5-39.8s-22.9-26.6-39.8-21.5c-21.5 6.4-41.8 15.5-60.6 27C114.3 34 105.4 32 96 32C60.7 32 32 60.7 32 96c0 9.4 2 18.3 5.6 26.3c-11.5 18.7-20.6 39-27 60.6c-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c4.3-14.6 10.4-28.5 17.9-41.4c2 .2 4.1 .3 6.1 .3c35.3 0 64-28.7 64-64c0-2.1-.1-4.1-.3-6.1c12.9-7.5 26.8-13.6 41.4-17.9zm128-61.3c-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c14.6 4.3 28.5 10.4 41.4 17.9c-.2 2-.3 4.1-.3 6.1c0 35.3 28.7 64 64 64c2.1 0 4.1-.1 6.2-.3c7.5 12.9 13.6 26.8 17.9 41.4c5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.6c3.6-8 5.6-16.9 5.6-26.3c0-35.3-28.7-64-64-64c-9.4 0-18.3 2-26.3 5.6c-18.7-11.5-39-20.6-60.6-27zM71.9 310.9c-5-16.9-22.9-26.6-39.8-21.5s-26.6 22.9-21.5 39.8c6.4 21.5 15.5 41.8 27 60.6C34 397.7 32 406.6 32 416c0 35.3 28.7 64 64 64c9.4 0 18.3-2 26.3-5.6c18.7 11.5 39 20.6 60.6 27c16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-14.6-4.3-28.5-10.4-41.4-17.9c.2-2 .3-4.1 .3-6.2c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.2 .3c-7.5-12.9-13.6-26.8-17.9-41.4zm429.4 18.3c5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-4.3 14.6-10.4 28.5-17.9 41.4c-2-.2-4.1-.3-6.2-.3c-35.3 0-64 28.7-64 64c0 2.1 .1 4.1 .3 6.2c-12.9 7.5-26.8 13.6-41.4 17.9c-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.6-27c8 3.6 16.9 5.6 26.3 5.6c35.3 0 64-28.7 64-64c0-9.4-2-18.3-5.6-26.3c11.5-18.7 20.6-39 27-60.6zM192.8 256.8c0-15.6 5.6-29.9 14.9-41.1L223 231c6.6 6.6 17.8 1.9 17.8-7.4V163.2c0-5.7-4.7-10.4-10.4-10.4H169.9c-9.3 0-13.9 11.2-7.4 17.8l11.2 11.2c-17.9 19.8-28.9 46.2-28.9 75.1c0 43.6 24.9 81.3 61.1 99.8c11.8 6 26.3 1.4 32.3-10.4s1.4-26.3-10.4-32.3c-20.8-10.6-34.9-32.2-34.9-57zm93.1-58.6c20.8 10.6 34.9 32.2 34.9 57c0 15.6-5.6 29.9-14.9 41.1L290.6 281c-6.6-6.6-17.8-1.9-17.8 7.4v60.5c0 5.7 4.7 10.4 10.4 10.4h60.5c9.3 0 13.9-11.2 7.4-17.8l-11.2-11.2c17.9-19.8 28.9-46.2 28.9-75.1c0-43.6-24.9-81.3-61.1-99.8c-11.8-6-26.3-1.4-32.3 10.4s-1.4 26.3 10.4 32.3z\"]\n};\nvar faBowlFood = {\n prefix: 'fas',\n iconName: 'bowl-food',\n icon: [512, 512, [], \"e4c6\", \"M0 192c0-35.3 28.7-64 64-64c.5 0 1.1 0 1.6 0C73 91.5 105.3 64 144 64c15 0 29 4.1 40.9 11.2C198.2 49.6 225.1 32 256 32s57.8 17.6 71.1 43.2C339 68.1 353 64 368 64c38.7 0 71 27.5 78.4 64c.5 0 1.1 0 1.6 0c35.3 0 64 28.7 64 64c0 11.7-3.1 22.6-8.6 32H8.6C3.1 214.6 0 203.7 0 192zm0 91.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"]\n};\nvar faSquare9 = {\n prefix: 'fas',\n iconName: 'square-9',\n icon: [448, 512, [], \"e25e\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM224 272a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm-26 44.4l-29.6 25.4c-10.1 8.6-11.2 23.8-2.6 33.8s23.8 11.2 33.8 2.6l81.6-70C305.8 287.2 320 256.4 320 224c0-53-43-96-96-96s-96 43-96 96c0 44 29.6 81.1 70 92.4z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M348.8 131.5c3.7-2.3 7.9-3.5 12.2-3.5c12.7 0 23 10.3 23 23v5.6c0 9.9-5.1 19.1-13.5 24.3L30.1 393.7C.1 412.5-9 451.9 9.7 481.9s58.2 39.1 88.2 20.4L438.4 289.5c45.8-28.6 73.6-78.8 73.6-132.8V151C512 67.6 444.4 0 361 0c-28.3 0-56 8-80.1 23L254.1 39.7c-30 18.7-39.1 58.2-20.4 88.2s58.2 39.1 88.2 20.4l26.8-16.8zM298.4 49.8c9.2-5.7 19.1-10.1 29.4-13.1L348 97.5c-5.7 1.4-11.2 3.7-16.3 6.8l-12.6 7.9L298.4 49.8zm88.5 52.7l46.2-46.2c8.5 6.5 16.1 14.1 22.6 22.6l-46.2 46.2c-5.1-9.6-13-17.5-22.6-22.6zm28.9 59.3l61.6 20.5c-2.2 10.5-5.8 20.7-10.5 30.2l-62-20.7c6.2-8.8 10.1-19.1 11-30.1zm-86.1 82.5l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zm-107.2 67l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zM119.3 375.7l60.4 37.7-30.2 18.9L89.1 394.6l30.2-18.9z\"]\n};\nvar faArrowDownWideShort = {\n prefix: 'fas',\n iconName: 'arrow-down-wide-short',\n icon: [576, 512, [\"sort-amount-asc\", \"sort-amount-down\"], \"f160\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320z\"]\n};\nvar faSortAmountAsc = faArrowDownWideShort;\nvar faSortAmountDown = faArrowDownWideShort;\nvar faSquareDollar = {\n prefix: 'fas',\n iconName: 'square-dollar',\n icon: [448, 512, [\"dollar-square\", \"usd-square\"], \"f2e9\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM244.8 133.6v14.2c9.7 1.2 19.4 3.9 29 6.6c1.9 .5 3.7 1 5.6 1.6c11.5 3.2 18.3 15.1 15.1 26.6s-15.1 18.2-26.6 15.1c-1.6-.4-3.1-.9-4.7-1.3c-7-2-14-3.9-21.1-5.3c-13.2-2.5-28.5-1.3-40.8 4c-11 4.8-20.1 16.4-7.6 24.4c9.8 6.3 21.8 9.5 33.2 12.6c2.4 .6 4.7 1.3 7 1.9c15.6 4.4 35.5 10.1 50.4 20.3c19.4 13.3 28.5 34.9 24.2 58.1c-4.1 22.4-19.7 37.1-38.4 44.7c-7.8 3.2-16.3 5.2-25.2 6.2l0 15.2c0 11.9-9.7 21.6-21.6 21.6s-21.6-9.7-21.6-21.6l0-17.4c-14.5-3.3-28.7-7.9-42.8-12.5c-11.3-3.7-17.5-16-13.7-27.3s16-17.5 27.3-13.7c2.5 .8 5 1.7 7.5 2.5c11.3 3.8 22.9 7.7 34.5 9.6c17 2.5 30.6 1 39.5-2.6c12-4.8 17.7-19.1 5.9-27.1c-10.1-6.9-22.6-10.3-34.5-13.5c-2.3-.6-4.5-1.2-6.8-1.9c-15.1-4.3-34-9.6-48.2-18.7c-19.5-12.5-29.4-33.3-25.2-56.4c4-21.8 21-36.3 39-44.1c5.5-2.4 11.4-4.3 17.5-5.7V133.6c0-11.9 9.7-21.6 21.6-21.6s21.6 9.7 21.6 21.6z\"]\n};\nvar faDollarSquare = faSquareDollar;\nvar faUsdSquare = faSquareDollar;\nvar faPhoneArrowRight = {\n prefix: 'fas',\n iconName: 'phone-arrow-right',\n icon: [512, 512, [], \"e5be\", \"M117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24zM425 7l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H312c-13.3 0-24-10.7-24-24s10.7-24 24-24H430.1L391 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faHandHoldingSeedling = {\n prefix: 'fas',\n iconName: 'hand-holding-seedling',\n icon: [576, 512, [], \"f4bf\", \"M96 14.5C96 6.5 102.5 0 110.5 0H160c88.4 0 160 71.6 160 160v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V160H241.5C161.1 160 96 94.9 96 14.5zm384 0C480 89 424.1 150.3 352 159c-.2-44.9-15.9-86.2-42-118.8C338.2 15.2 375.3 0 416 0h49.5c8 0 14.5 6.5 14.5 14.5zm88.2 321.7c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faMessageCheck = {\n prefix: 'fas',\n iconName: 'message-check',\n icon: [512, 512, [\"comment-alt-check\"], \"f4a2\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm369 89c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 153z\"]\n};\nvar faCommentAltCheck = faMessageCheck;\nvar faCloudBolt = {\n prefix: 'fas',\n iconName: 'cloud-bolt',\n icon: [512, 512, [127785, \"thunderstorm\"], \"f76c\", \"M0 224c0 53 43 96 96 96h47.2L290 202.5c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L333.7 320H352h64c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm330.1 3.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L177.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H281.9l52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"]\n};\nvar faThunderstorm = faCloudBolt;\nvar faChartLineUpDown = {\n prefix: 'fas',\n iconName: 'chart-line-up-down',\n icon: [512, 512, [], \"e5d7\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm313.4 57.4L288 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L208 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l112-112 18.7 18.7c4.2 4.2 10 6.6 16 6.6c12.5 0 22.6-10.1 22.6-22.6V96.2v-.3V80c0-8.8-7.2-16-16-16H374.6C362.1 64 352 74.1 352 86.6c0 6 2.4 11.8 6.6 16l18.7 18.7zm64 141.3l-18.7 18.7-34.7-34.7-45.3 45.3 34.7 34.7-18.7 18.7c-4.2 4.2-6.6 10-6.6 16c0 12.5 10.1 22.6 22.6 22.6l89.4 0c8.8 0 16-7.2 16-16V278.6c0-12.5-10.1-22.6-22.6-22.6c-6 0-11.8 2.4-16 6.6z\"]\n};\nvar faTextSlash = {\n prefix: 'fas',\n iconName: 'text-slash',\n icon: [640, 512, [\"remove-format\"], \"f87d\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96H503L497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C577.6 61.3 554.7 32 523.5 32H376.1h-.3H204.5c-22 0-41.2 15-46.6 36.4l-6.3 25.2L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96H333.7L301.3 210.8l-94.5-74.1zM243.3 416H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H309.8l17.6-62.1L272.9 311 243.3 416z\"]\n};\nvar faRemoveFormat = faTextSlash;\nvar faWatch = {\n prefix: 'fas',\n iconName: 'watch',\n icon: [384, 512, [8986], \"f2e1\", \"M112 0H272c26.5 0 48 21.5 48 48V72.2C283.7 46.8 239.6 32 192 32s-91.7 14.8-128 40.2V48C64 21.5 85.5 0 112 0zM64 464V439.8c36.3 25.3 80.4 40.2 128 40.2s91.7-14.8 128-40.2V464c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48zM0 256a192 192 0 1 1 384 0A192 192 0 1 1 0 256zM192 152c-13.3 0-24 10.7-24 24v80c0 8 4 15.5 10.7 20l48 32c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L216 243.2V176c0-13.3-10.7-24-24-24z\"]\n};\nvar faCircleDownLeft = {\n prefix: 'fas',\n iconName: 'circle-down-left',\n icon: [512, 512, [], \"e107\", \"M256 512A256 256 0 1 1 256 0a256 256 0 1 1 0 512zM160 198.6V336c0 8.8 7.2 16 16 16H313.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L296 280l66.3-66.3c3.6-3.6 5.7-8.5 5.7-13.7s-2-10-5.7-13.7l-36.7-36.7C322 146 317.1 144 312 144s-10 2-13.7 5.7L232 216l-33.4-33.4c-4.2-4.2-10-6.6-16-6.6c-12.5 0-22.6 10.1-22.6 22.6z\"]\n};\nvar faText = {\n prefix: 'fas',\n iconName: 'text',\n icon: [448, 512, [], \"f893\", \"M64 96v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V80C0 53.5 21.5 32 48 32H224 400c26.5 0 48 21.5 48 48v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V96H256l0 320h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H144c-17.7 0-32-14.3-32-32s14.3-32 32-32h48l0-320H64z\"]\n};\nvar faProjector = {\n prefix: 'fas',\n iconName: 'projector',\n icon: [640, 512, [], \"f8d6\", \"M440 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V24zM281 39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56 56c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L281 39zM585 73c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L495 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l56-56zm-9 119H512c-26.7-20.1-60-32-96-32s-69.3 11.9-96 32H64c-35.3 0-64 28.7-64 64V384c0 35.3 28.7 64 64 64l9.9 39.8C77.5 502 90.3 512 105 512h14c14.7 0 27.5-10 31-24.2L160 448H320c26.7 20.1 60 32 96 32c24.4 0 47.5-5.5 68.2-15.2l5.7 23c3.6 14.2 16.4 24.2 31 24.2h14c14.7 0 27.5-10 31-24.2L576 448c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64zM416 224a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM64 320a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFaceSmileWink = {\n prefix: 'fas',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faSmileWink = faFaceSmileWink;\nvar faTombstoneBlank = {\n prefix: 'fas',\n iconName: 'tombstone-blank',\n icon: [448, 512, [129702, \"tombstone-alt\"], \"f721\", \"M224 0C118 0 32 86 32 192V416H416V192C416 86 330 0 224 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faTombstoneAlt = faTombstoneBlank;\nvar faChessKingPiece = {\n prefix: 'fas',\n iconName: 'chess-king-piece',\n icon: [256, 512, [\"chess-king-alt\"], \"f440\", \"M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16V32H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h16V96H60.2C49.1 96 40 105.1 40 116.2c0 2.5 .5 4.9 1.3 7.3L73.8 208H72c-13.3 0-24 10.7-24 24s10.7 24 24 24h4L60 384H196L180 256h4c13.3 0 24-10.7 24-24s-10.7-24-24-24h-1.8l32.5-84.5c.9-2.3 1.3-4.8 1.3-7.3c0-11.2-9.1-20.2-20.2-20.2H144V64h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H144V16zM48 416L4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24H232c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L208 416H48z\"]\n};\nvar faChessKingAlt = faChessKingPiece;\nvar faCircle6 = {\n prefix: 'fas',\n iconName: 'circle-6',\n icon: [512, 512, [], \"e0f3\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-16a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm-96 48c0 53 43 96 96 96s96-43 96-96c0-44-29.6-81.1-70-92.4l29.6-25.4c10.1-8.6 11.2-23.8 2.6-33.8s-23.8-11.2-33.8-2.6l-81.6 70C174.2 224.8 160 255.6 160 288z\"]\n};\nvar faLeft = {\n prefix: 'fas',\n iconName: 'left',\n icon: [448, 512, [\"arrow-alt-left\"], \"f355\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l160-160c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 96 184 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-184 0 0 96c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-160-160z\"]\n};\nvar faArrowAltLeft = faLeft;\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM111 257.1l26.8 89.2 31.6-90.3c3.4-9.6 12.5-16.1 22.7-16.1s19.3 6.4 22.7 16.1l31.6 90.3L273 257.1c3.8-12.7 17.2-19.9 29.9-16.1s19.9 17.2 16.1 29.9l-48 160c-3 10-12 16.9-22.4 17.1s-19.8-6.2-23.2-16.1L192 336.6l-33.3 95.3c-3.4 9.8-12.8 16.3-23.2 16.1s-19.5-7.1-22.4-17.1l-48-160c-3.8-12.7 3.4-26.1 16.1-29.9s26.1 3.4 29.9 16.1z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM136 240h68c42 0 76 34 76 76s-34 76-76 76H160v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V368 264c0-13.3 10.7-24 24-24zm68 104c15.5 0 28-12.5 28-28s-12.5-28-28-28H160v56h44z\"]\n};\nvar faSquareDown = {\n prefix: 'fas',\n iconName: 'square-down',\n icon: [448, 512, [11015, \"arrow-alt-square-down\"], \"f350\", \"M64 480c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64zm39.1-185.4l107.1 99.9c3.8 3.5 8.7 5.5 13.8 5.5s10.1-2 13.8-5.5l107.1-99.9c4.5-4.2 7.1-10.1 7.1-16.3c0-12.3-10-22.3-22.3-22.3H272V160c0-17.7-14.3-32-32-32H208c-17.7 0-32 14.3-32 32v96H118.3C106 256 96 266 96 278.3c0 6.2 2.6 12.1 7.1 16.3z\"]\n};\nvar faArrowAltSquareDown = faSquareDown;\nvar faObjectsAlignCenterVertical = {\n prefix: 'fas',\n iconName: 'objects-align-center-vertical',\n icon: [512, 512, [], \"e3bd\", \"M64 80c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48V232h64V144c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v88h40c13.3 0 24 10.7 24 24s-10.7 24-24 24H448v88c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48V280H224V432c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V280H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H64V80z\"]\n};\nvar faArrowsLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-left-right',\n icon: [512, 512, [\"arrows-h\"], \"f07e\", \"M406.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224l-293.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288l293.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faArrowsH = faArrowsLeftRight;\nvar faHouseLock = {\n prefix: 'fas',\n iconName: 'house-lock',\n icon: [640, 512, [], \"e510\", \"M384 480c0 11.7 3.1 22.6 8.6 32H392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L490.7 166.3C447.2 181.7 416 223.2 416 272v24.6c-19.1 11.1-32 31.7-32 55.4V480zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faCloudArrowDown = {\n prefix: 'fas',\n iconName: 'cloud-arrow-down',\n icon: [640, 512, [62337, \"cloud-download\", \"cloud-download-alt\"], \"f0ed\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-167l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V318.1l-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faCloudDownload = faCloudArrowDown;\nvar faCloudDownloadAlt = faCloudArrowDown;\nvar faWreath = {\n prefix: 'fas',\n iconName: 'wreath',\n icon: [448, 512, [], \"f7e2\", \"M122.2 42.6C131 17.8 154.7 0 182.6 0c15.8 0 30.2 5.7 41.4 15.2C235.2 5.7 249.6 0 265.4 0c27.9 0 51.6 17.8 60.3 42.6c5.8-1.7 11.9-2.6 18.2-2.6c35.3 0 64 28.7 64 64c0 6.3-.9 12.5-2.6 18.2c24.8 8.8 42.6 32.5 42.6 60.3c0 15.8-5.7 30.2-15.2 41.4c9.5 11.2 15.2 25.6 15.2 41.4c0 27.9-17.8 51.6-42.6 60.3c1.7 5.8 2.6 11.9 2.6 18.2c0 32.6-24.4 59.6-56 63.5v-3.7c0-28.6-23.2-51.8-51.8-51.8c-7.2 0-14.4 1.5-21 4.5L224 381l-55.2-24.5c-6.6-2.9-13.8-4.5-21-4.5C119.2 352 96 375.2 96 403.8v3.7c-31.6-3.9-56-30.9-56-63.5c0-6.3 .9-12.5 2.6-18.2C17.8 317 0 293.3 0 265.4c0-15.8 5.7-30.2 15.2-41.4C5.7 212.8 0 198.4 0 182.6c0-27.9 17.8-51.6 42.6-60.3C40.9 116.5 40 110.3 40 104c0-35.3 28.7-64 64-64c6.3 0 12.5 .9 18.2 2.6zM203 142.4c-5.7 6-13.6 9.4-21.9 9.1c-16.6-.6-30.2 13-29.6 29.6c.3 8.3-3 16.3-9.1 21.9c-12.1 11.3-12.1 30.6 0 41.9c6 5.7 9.4 13.6 9.1 21.9c-.6 16.6 13 30.2 29.6 29.6c8.3-.3 16.3 3 21.9 9.1c11.3 12.1 30.6 12.1 41.9 0c5.7-6 13.6-9.4 21.9-9.1c16.6 .6 30.2-13 29.6-29.6c-.3-8.3 3-16.3 9.1-21.9c12.1-11.3 12.1-30.6 0-41.9c-6-5.7-9.4-13.6-9.1-21.9c.6-16.6-13-30.2-29.6-29.6c-8.3 .3-16.3-3-21.9-9.1c-11.3-12.1-30.6-12.1-41.9 0zM128 403.8c0-10.9 8.9-19.8 19.8-19.8c2.8 0 5.5 .6 8 1.7L224 416l68.2-30.3c2.5-1.1 5.3-1.7 8-1.7c10.9 0 19.8 8.9 19.8 19.8v88.4c0 10.9-8.9 19.8-19.8 19.8c-2.8 0-5.5-.6-8-1.7L224 480l-68.2 30.3c-2.5 1.1-5.3 1.7-8 1.7c-10.9 0-19.8-8.9-19.8-19.8V403.8z\"]\n};\nvar faChildren = {\n prefix: 'fas',\n iconName: 'children',\n icon: [640, 512, [], \"e4e1\", \"M160 0a64 64 0 1 1 0 128A64 64 0 1 1 160 0zM88 480V400H70.2c-10.9 0-18.6-10.7-15.2-21.1l31.1-93.4L57.5 323.3c-10.7 14.1-30.8 16.8-44.8 6.2s-16.8-30.7-6.2-44.8L65.4 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47l58.9 77.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.6-37.8L265 378.9c3.5 10.4-4.3 21.1-15.2 21.1H232v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V400H152v80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480 0a64 64 0 1 1 0 128A64 64 0 1 1 480 0zm-8 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V300.5L395.1 321c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9h12.3c33 0 63.7 16.9 81.2 44.9L619.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L552 300.5V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H472z\"]\n};\nvar faMeterDroplet = {\n prefix: 'fas',\n iconName: 'meter-droplet',\n icon: [640, 512, [], \"e1ea\", \"M256 512c53.7 0 103.5-16.5 144.6-44.7C390 447.2 384 424.3 384 400c0-23.6 5.8-46.9 16.9-67.8l75.3-141.2c4.9-9.2 12.1-16.7 20.6-22.1C461.2 70.4 366.8 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512zM192 160v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm96 0v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm96 0v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm120.5 46.1L429.2 347.3C420.5 363.5 416 381.6 416 400c0 61.9 50.1 112 112 112s112-50.1 112-112c0-18.4-4.5-36.5-13.2-52.7L551.5 206.1c-4.6-8.7-13.7-14.1-23.5-14.1s-18.9 5.4-23.5 14.1z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [576, 512, [\"blackboard\"], \"f51b\", \"M96 32C60.7 32 32 60.7 32 96V384H96V96l384 0V384h64V96c0-35.3-28.7-64-64-64H96zM224 384v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H416V384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32z\"]\n};\nvar faBlackboard = faChalkboard;\nvar faUserLargeSlash = {\n prefix: 'fas',\n iconName: 'user-large-slash',\n icon: [640, 512, [\"user-alt-slash\"], \"f4fa\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM545.5 512H528L284.3 320h-59C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7H545.3l.3 0z\"]\n};\nvar faUserAltSlash = faUserLargeSlash;\nvar faSignalStrong = {\n prefix: 'fas',\n iconName: 'signal-strong',\n icon: [640, 512, [\"signal-4\"], \"f68f\", \"M480 128c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V128zM352 224c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V224zM192 288c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V320c0-17.7-14.3-32-32-32zM96 416c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32s32-14.3 32-32V416z\"]\n};\nvar faSignal4 = faSignalStrong;\nvar faLollipop = {\n prefix: 'fas',\n iconName: 'lollipop',\n icon: [512, 512, [127853, \"lollypop\"], \"e424\", \"M210.8 334.8C265.3 314.2 304 261.6 304 200v-8c0-61.9-50.1-112-112-112S80 130.1 80 192c0 39.8 32.2 72 72 72s72-32.2 72-72v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24v8c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-35.3 28.7-64 64-64s64 28.7 64 64v8c0 53-43 96-96 96h-8C94.6 296 48 249.4 48 192c0-79.5 64.5-144 144-144s144 64.5 144 144c0 73.2-54.6 133.6-125.2 142.8zM0 192C0 298 86 384 192 384c41.5 0 79.9-13.1 111.2-35.5L457.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L348.5 303.2C370.9 271.9 384 233.5 384 192C384 86 298 0 192 0S0 86 0 192z\"]\n};\nvar faLollypop = faLollipop;\nvar faListTree = {\n prefix: 'fas',\n iconName: 'list-tree',\n icon: [512, 512, [], \"e1d2\", \"M24 48C10.7 48 0 58.7 0 72v48c0 13.3 10.7 24 24 24V256 384c0 30.9 25.1 56 56 56h48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24H80c-4.4 0-8-3.6-8-8V280h56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24H72V144c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H24zM160 96c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zM288 256c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32zm0 160c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M64 208.1L256 65.9 448 208.1v47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5V208.1zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V208.1c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z\"]\n};\nvar faDrawCircle = {\n prefix: 'fas',\n iconName: 'draw-circle',\n icon: [512, 512, [], \"f5ed\", \"M472.1 196.7c-20.8-76-80.7-135.9-156.7-156.7C305.8 16.5 282.8 0 256 0s-49.8 16.5-59.3 39.9c-76 20.8-135.9 80.7-156.7 156.7C16.5 206.2 0 229.2 0 256s16.5 49.8 39.9 59.3c20.8 76 80.7 135.9 156.7 156.7c9.5 23.4 32.5 39.9 59.3 39.9s49.8-16.5 59.3-39.9c76-20.8 135.9-80.7 156.7-156.7c23.4-9.5 39.9-32.5 39.9-59.3s-16.5-49.8-39.9-59.3zM408 206c-14.7 11.7-24 29.8-24 50s9.4 38.3 24 50c-15.8 48.2-53.9 86.2-102 102c-11.7-14.7-29.8-24-50-24s-38.3 9.4-50 24c-48.2-15.8-86.2-53.9-102-102c14.7-11.7 24-29.8 24-50s-9.4-38.3-24-50c15.8-48.2 53.9-86.2 102-102c11.7 14.7 29.8 24 50 24s38.3-9.4 50-24c48.2 15.8 86.2 53.9 102 102z\"]\n};\nvar faCatSpace = {\n prefix: 'fas',\n iconName: 'cat-space',\n icon: [640, 512, [], \"e001\", \"M576 160c0 70.7-57.3 128-128 128s-128-57.3-128-128c0-32.5 12.1-62.1 32-84.7V160c0 53 43 96 96 96s96-43 96-96V75.3c19.9 22.6 32 52.2 32 84.7zM411.2 89.6L381.8 50.4C401.1 38.7 423.8 32 448 32s46.9 6.7 66.2 18.4L484.8 89.6c-3 4-7.8 6.4-12.8 6.4H424c-5 0-9.8-2.4-12.8-6.4zM480 316.8C553 302 608 237.4 608 160C608 71.6 536.4 0 448 0S288 71.6 288 160c0 11.7 1.3 23.1 3.6 34.1c-54.9 8.1-102.2 39.5-131.6 83.8V192.5c0-48.4-36.1-89.3-84.1-95.3l-7.9-1C50.4 94.1 34.4 106.5 32.2 124s10.2 33.5 27.8 35.7l7.9 1c16 2 28 15.6 28 31.8V416c0 53 43 96 96 96H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H280L416 339.2V480c0 17.7 14.3 32 32 32s32-14.3 32-32V316.8zM400 160a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM231.5 12.3c-2.6-7-12.4-7-15 0L205.8 41.1c-.8 2.2-2.5 3.9-4.7 4.7L172.3 56.5c-7 2.6-7 12.4 0 15l28.8 10.7c2.2 .8 3.9 2.5 4.7 4.7l10.7 28.8c2.6 7 12.4 7 15 0l10.7-28.8c.8-2.2 2.5-3.9 4.7-4.7l28.8-10.7c7-2.6 7-12.4 0-15L246.9 45.8c-2.2-.8-3.9-2.5-4.7-4.7L231.5 12.3z\"]\n};\nvar faHandshakeSimpleSlash = {\n prefix: 'fas',\n iconName: 'handshake-simple-slash',\n icon: [640, 512, [\"handshake-alt-slash\"], \"e05f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.3-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM0 176V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6L41.2 128.5C17.9 131.8 0 151.8 0 176z\"]\n};\nvar faHandshakeAltSlash = faHandshakeSimpleSlash;\nvar faRabbitRunning = {\n prefix: 'fas',\n iconName: 'rabbit-running',\n icon: [576, 512, [\"rabbit-fast\"], \"f709\", \"M460.7 39.3l-2.2-2.1c-4.7-4.6-11.5-6.4-17.9-4.7s-11.4 6.6-13.1 13l-.8 2.9c-3.3 11.8-5.1 23.7-5.5 35.6c24.3 20.6 42.9 47.8 53.3 78.8c-8.2-1.9-16.5-2.9-25-2.9c-.6 0-1.1 0-1.7 0c-18.4-44-56.5-77.4-103.6-89.3l-3.4-.9c-6.2-1.6-12.9-.6-18.5 2.6c-10.8 6.2-15.6 19.5-11.2 31.1c14.9 39.5 44.3 71.4 81.4 89.7c-3.7 6.6-6.4 14-7.6 21.8L279.7 154.9C248.8 137.3 213.8 128 178.2 128c-32.3 0-62.2 16.8-78.9 44.4C89 159.9 73.4 152 56 152c-30.9 0-56 25.1-56 56s25.1 56 56 56c11.3 0 21.8-3.3 30.6-9.1c4.9 17.2 14.5 33.1 28.4 45.9L257.2 431.2C269 442 284.4 448 300.4 448H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H352 335.2 320V340.5c0-42.9-28.4-80.5-69.6-92.3l-30.8-8.8c-8.5-2.4-13.4-11.3-11-19.8s11.3-13.4 19.8-11l30.8 8.8c55 15.7 92.8 65.9 92.8 123.1v15.7l56-32.4 6.4-3.7H515.7c33.3 0 60.3-27 60.3-60.3c0-18.1-8.2-35.3-22.2-46.7l-34.6-28.2c-4.6-3.7-9.4-7.1-14.5-10c8.4-49.3-7.8-100-43.9-135.5zm-318.5 382c-14.7 9.8-18.7 29.7-8.9 44.4s29.7 18.7 44.4 8.9l46-30.7-48.6-44.5-32.9 22zM480 240a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faRabbitFast = faRabbitRunning;\nvar faMemoPad = {\n prefix: 'fas',\n iconName: 'memo-pad',\n icon: [448, 512, [], \"e1da\", \"M0 64V96H448V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64zm0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V128H0zm96 96c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 96c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 96c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16z\"]\n};\nvar faMattressPillow = {\n prefix: 'fas',\n iconName: 'mattress-pillow',\n icon: [640, 512, [], \"e525\", \"M256 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H256V64zm32 384H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H288V448zM64 160c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faAlarmPlus = {\n prefix: 'fas',\n iconName: 'alarm-plus',\n icon: [512, 512, [], \"f844\", \"M14.9 146.4C5.5 131.6 0 114 0 95.2C0 42.6 42.6 0 95.2 0c25 0 47.8 9.6 64.8 25.4L14.9 146.4zM390.2 467.4C352.8 495.4 306.3 512 256 512s-96.8-16.6-134.1-44.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l35.2-35.2C48.6 384.8 32 338.3 32 288C32 164.3 132.3 64 256 64s224 100.3 224 224c0 50.3-16.6 96.8-44.6 134.2l35.2 35.2c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-35.2-35.2zM352 25.4C369 9.6 391.8 0 416.8 0C469.4 0 512 42.6 512 95.2c0 18.8-5.5 36.3-14.9 51.1L352 25.4zM256 176c-13.3 0-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64c0 13.3 10.7 24 24 24s24-10.7 24-24V312h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V200c0-13.3-10.7-24-24-24z\"]\n};\nvar faAlicorn = {\n prefix: 'fas',\n iconName: 'alicorn',\n icon: [640, 512, [], \"f6b0\", \"M448 160v78.1V240h0c-.5 30-12.8 56.4-32 75.7V480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V346.7c-4.1-.7-8.2-1.6-12.3-2.8l-84-24c.2 2.3 .3 4.6 .3 6.9c0 18.6-7.4 36.5-20.6 49.7l-12.7 12.7c-4.8 4.8-6.4 11.8-4.3 18.2l20.8 62.5c6.9 20.7-8.5 42.1-30.4 42.1H143.1c-13.8 0-26-8.8-30.4-21.9L95.3 437.7c-10.6-31.7-6.5-65.9 10-93.9c7.6-12.9 9.5-29.1 1.2-41.6L78.2 259.9c-7.3-11-11.9-23.4-13.6-36.4C54.6 230.8 48 242.6 48 256v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V256c0-44.6 33.2-81.5 76.3-87.2c13-21.4 35.2-36.5 61.1-40c3.8 15.3 9.2 29.8 16.5 43c11.3 20.4 27.4 37.7 49.9 49.8c6.3 3.4 13.1 6.4 20.3 8.8c-16.5-11.4-28.9-26-38.2-42.7C163.8 147.9 160 96.1 160 48c0-5.9 3.2-11.3 8.5-14.1s11.5-2.5 16.4 .8L320 124.8C321.7 55.6 378.4 0 448 0h16 16 64c8.8 0 16 7.2 16 16s-7.2 16-16 16h-5.7c5.2 4.6 9.6 10 13.1 16h79.3c5.1 0 9.3 4.2 9.3 9.3c0 4-2.6 7.6-6.4 8.8L560 90.7v64.8c0 22.1-13.4 41.9-33.9 50.1c-26.1 10.4-55.7-.9-68.3-26L448 160zm64-80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faCommentQuestion = {\n prefix: 'fas',\n iconName: 'comment-question',\n icon: [512, 512, [], \"e14b\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM169.8 149.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 248.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V234.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faGingerbreadMan = {\n prefix: 'fas',\n iconName: 'gingerbread-man',\n icon: [448, 512, [], \"f79d\", \"M296.9 158.5c-5.2 6-1.2 17.5 6.7 17.5H368c35.3 0 64 28.7 64 64s-28.7 64-64 64H347.1c-19 0-29.4 22.2-17.2 36.7L385.2 407c22.6 27.2 19 67.5-8.2 90.1s-67.5 19-90.1-8.2l-45.6-54.8c-9-10.7-25.5-10.7-34.4 0L161.2 489c-22.6 27.2-63 30.8-90.1 8.2s-30.8-63-8.2-90.1l55.2-66.3c12.2-14.6 1.8-36.7-17.2-36.7H80c-35.3 0-64-28.7-64-64s28.7-64 64-64h64.4c7.9 0 11.9-11.5 6.7-17.5C136.7 141.7 128 119.9 128 96c0-53 43-96 96-96s96 43 96 96c0 23.9-8.7 45.7-23.1 62.5zM192 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM224 240a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 112a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-16-48a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faGuaraniSign = {\n prefix: 'fas',\n iconName: 'guarani-sign',\n icon: [384, 512, [], \"e19a\", \"M192 0c-17.7 0-32 14.3-32 32V66.7C69.2 81.9 0 160.9 0 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c90.8-15.2 160-94.2 160-189.3c0-17.7-14.3-32-32-32H224V132c22.1 5.7 41.8 17.1 57.6 32.6c12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C299 92 263.5 73.3 224 66.7V32c0-17.7-14.3-32-32-32zM160 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124zM224 380V288h92c-11.6 45-47 80.4-92 92z\"]\n};\nvar faBurgerFries = {\n prefix: 'fas',\n iconName: 'burger-fries',\n icon: [640, 512, [], \"e0cd\", \"M183.2 1.7c-5-2.5-10.8-2.2-15.6 .7S160 10.5 160 16V206.7l0 0v63.2c9.2 1.4 19.8 2.2 32 2.2s22.8-.8 32-2.2V31.8c-.1-6-3.5-11.4-8.8-14.1l-32-16zM128 14.7l-.2-1.3c-.8-5-4-9.3-8.5-11.6s-9.9-2.3-14.4-.1l-32 16c-6.3 3.1-9.8 10-8.6 16.9l32 192c.5 1.2 .9 2.3 1.2 3.4c2 6.3 6.7 15.9 18.7 24.3c3.2 2.2 7.1 4.5 11.8 6.6V14.7zM40.3 85.6L19.9 80.5c-5.3-1.3-10.8 .1-14.8 3.8S-.7 93.4 .2 98.8l16.5 93.4c1.6-.1 3.1-.2 4.7-.2H48c3.6 0 7 .4 10.2 1L40.3 85.6zM383.8 98.8c.9-5.3-.9-10.8-4.8-14.5s-9.5-5.1-14.8-3.8L346.2 85l-19 107.8c2-.3 4-.6 6.1-.7c11-6.5 23.3-12.3 37.1-17.2l13.4-76.1zM276.3 337.2c-11.8-10.4-19.5-25.3-20.2-42.1c-16.6 5.4-37.6 8.8-64.1 8.8c-91.7 0-117.7-41-125.1-64.3C64.3 231.2 56.8 224 48 224H21.4C9.6 224 0 233.6 0 245.4c0 1.7 .2 3.4 .6 5.1l57.5 237C61.5 501.9 74.4 512 89.2 512H272c-10-13.4-16-30-16-48c0-14.7 6.6-27.8 17-36.6c-10.5-11.4-17-26.6-17-43.4c0-18.5 7.8-35.1 20.3-46.8zm-8.5-82.9c.8-.6 1.6-1.1 2.4-1.7c4.1-6.6 9.4-14 16.1-21.6c.1-.3 .2-.6 .3-.9c.7-2.3 1.7-4.7 2.8-7L319.8 50.8c.9-5.3-.9-10.8-4.8-14.5s-9.5-5.1-14.8-3.8l-32 8C262 42 257.3 47 256.2 53.2l-.2 1.4V261c4.8-2.1 8.7-4.4 11.8-6.6zm372.2 38c0-3-.5-5.9-1.7-8.6c-8.1-18.4-48.4-91.9-174.3-91.9s-166.2 73.5-174.3 91.9c-1.2 2.7-1.7 5.7-1.7 8.6c0 15.2 12.3 27.5 27.5 27.5H612.5c15.2 0 27.5-12.3 27.5-27.5zM384 239.8a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm64 0a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm96 0a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm-224 112c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm-16 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48c0-8.8-7.2-16-16-16H304z\"]\n};\nvar faMugTea = {\n prefix: 'fas',\n iconName: 'mug-tea',\n icon: [576, 512, [], \"f875\", \"M144 64v50.7c0 8.5-3.4 16.6-9.4 22.6l-29.3 29.3c-6 6-9.4 14.1-9.4 22.6V256c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V189.3c0-8.5-3.4-16.6-9.4-22.6l-29.3-29.3c-6-6-9.4-14.1-9.4-22.6V64H384h64c70.7 0 128 57.3 128 128s-57.3 128-128 128H416v32c0 53-43 96-96 96H128c-53 0-96-43-96-96V96c0-17.7 14.3-32 32-32h80zM416 256h32c35.3 0 64-28.7 64-64s-28.7-64-64-64H416V256z\"]\n};\nvar faBorderTop = {\n prefix: 'fas',\n iconName: 'border-top',\n icon: [448, 512, [], \"f855\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zm64 96A32 32 0 1 1 0 160a32 32 0 1 1 64 0zm320 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-128 0a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM0 352a32 32 0 1 1 64 0A32 32 0 1 1 0 352zm448 0a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-256 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM64 256A32 32 0 1 1 0 256a32 32 0 1 1 64 0zm320 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-128 0a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM0 448a32 32 0 1 1 64 0A32 32 0 1 1 0 448zm448 0a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-256 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 256a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 448a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm256 0a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faArrowsRotate = {\n prefix: 'fas',\n iconName: 'arrows-rotate',\n icon: [512, 512, [128472, \"refresh\", \"sync\"], \"f021\", \"M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V448c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H176c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z\"]\n};\nvar faRefresh = faArrowsRotate;\nvar faSync = faArrowsRotate;\nvar faCircleBookOpen = {\n prefix: 'fas',\n iconName: 'circle-book-open',\n icon: [512, 512, [\"book-circle\"], \"e0ff\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 336c-23.1 0-41 11.1-46.3 14.8c-1.1 .8-2.4 1.2-3.7 1.2c-3.3 0-5.9-2.7-5.9-5.9V185.3c0-5.8 3.1-11.1 8.3-13.5c10.4-4.7 29.1-11.9 47.7-11.9s37.2 7.1 47.7 11.9c5.2 2.4 8.3 7.7 8.3 13.5V346.1c0 3.3-2.7 5.9-5.9 5.9c-1.3 0-2.6-.4-3.7-1.2C225 347.1 207.1 336 184 336zm144 0c-23.1 0-41 11.1-46.3 14.8c-1.1 .8-2.4 1.2-3.7 1.2c-3.3 0-5.9-2.7-5.9-5.9V185.3c0-5.8 3.1-11.1 8.3-13.5c10.4-4.7 29.1-11.9 47.7-11.9s37.2 7.1 47.7 11.9c5.2 2.4 8.3 7.7 8.3 13.5V346.1c0 3.3-2.7 5.9-5.9 5.9c-1.3 0-2.6-.4-3.7-1.2C369 347.1 351.1 336 328 336z\"]\n};\nvar faBookCircle = faCircleBookOpen;\nvar faArrowsToDottedLine = {\n prefix: 'fas',\n iconName: 'arrows-to-dotted-line',\n icon: [448, 512, [], \"e0a6\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H256V32zM201.4 329.4l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM32 224a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm96 0a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm96 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-64a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm64 32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0z\"]\n};\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [512, 512, [129519], \"f134\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32v96c0 9.6-4.3 18.7-11.7 24.7s-17.2 8.5-26.6 6.6l-160-32C301.5 124.9 292 115.7 289 104H224v34.8c37.8 18 64 56.5 64 101.2V384H64V240c0-44.7 26.2-83.2 64-101.2V110c-36.2 11.1-66 36.9-82.3 70.5c-5.8 11.9-20.2 16.9-32.1 11.1S-3.3 171.4 2.5 159.5C26.7 109.8 72.7 72.6 128 60.4V32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V56h65c3-11.7 12.5-20.9 24.7-23.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM288 416v32c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V416H288zM176 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faGarageOpen = {\n prefix: 'fas',\n iconName: 'garage-open',\n icon: [640, 512, [], \"e00b\", \"M0 171.3V488c0 13.3 10.7 24 24 24H72c13.3 0 24-10.7 24-24V224c0-17.7 14.3-32 32-32H512c17.7 0 32 14.3 32 32V488c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V171.3c0-26.2-15.9-49.7-40.2-59.4L331.9 4.8c-7.6-3.1-16.1-3.1-23.8 0L40.2 111.9C15.9 121.6 0 145.2 0 171.3zM194.1 320l-5.2 15c-17.2 9.5-28.9 27.9-28.9 49v96c0 17.7 14.3 32 32 32s32-14.3 32-32V464H416v16c0 17.7 14.3 32 32 32s32-14.3 32-32V384c0-21.1-11.7-39.5-28.9-49l-5.2-15H395l2.8 8H242.2l2.8-8H194.1zM240 376a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm136 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM512 224H128v64H512V224z\"]\n};\nvar faShelvesEmpty = {\n prefix: 'fas',\n iconName: 'shelves-empty',\n icon: [640, 512, [], \"e246\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V192 448v32c0 17.7 14.3 32 32 32s32-14.3 32-32H576c0 17.7 14.3 32 32 32s32-14.3 32-32V448 192 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V160H64V32zm0 192H576V416H64V224z\"]\n};\nvar faCruzeiroSign = {\n prefix: 'fas',\n iconName: 'cruzeiro-sign',\n icon: [448, 512, [], \"e152\", \"M96 256c0-88.4 71.6-160 160-160c41 0 78.3 15.4 106.7 40.7c13.2 11.8 33.4 10.7 45.2-2.5s10.7-33.4-2.5-45.2c-39.6-35.5-92-57-149.3-57C132.3 32 32 132.3 32 256s100.3 224 224 224c57.4 0 109.7-21.6 149.3-57c13.2-11.8 14.3-32 2.5-45.2s-32-14.3-45.2-2.5C334.3 400.6 297 416 256 416V320v-8.7c0-12.8 10.4-23.3 23.3-23.3c4.6 0 9.1 1.4 12.9 3.9l10.1 6.7c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4l-10.1-6.7c-14.3-9.6-31.2-14.7-48.4-14.7c-12.4 0-24.2 2.6-34.9 7.3c-5.5-4.5-12.6-7.3-20.3-7.3c-17.7 0-32 14.3-32 32v55.3V320v82.7C135.5 378 96 321.6 96 256z\"]\n};\nvar faWatchApple = {\n prefix: 'fas',\n iconName: 'watch-apple',\n icon: [384, 512, [], \"e2cb\", \"M64 48H320c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48zM80 80C35.8 80 0 115.8 0 160V352c0 44.2 35.8 80 80 80H304c44.2 0 80-35.8 80-80V160c0-44.2-35.8-80-80-80H80zM192 213.3a42.7 42.7 0 1 1 0 85.3 42.7 42.7 0 1 1 0-85.3zM213.3 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-74.7-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm74.7-160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-74.7-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM112 512H272c26.5 0 48-21.5 48-48H64c0 26.5 21.5 48 48 48z\"]\n};\nvar faWatchCalculator = {\n prefix: 'fas',\n iconName: 'watch-calculator',\n icon: [384, 512, [], \"f8f0\", \"M64 48H320c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48zM80 80C35.8 80 0 115.8 0 160V352c0 44.2 35.8 80 80 80H304c44.2 0 80-35.8 80-80V160c0-44.2-35.8-80-80-80H80zm0 64H304c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V160c0-8.8 7.2-16 16-16zm32 128a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zm80 24a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm128-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM88 384a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm128-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zm80 24a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM112 512H272c26.5 0 48-21.5 48-48H64c0 26.5 21.5 48 48 48z\"]\n};\nvar faListDropdown = {\n prefix: 'fas',\n iconName: 'list-dropdown',\n icon: [512, 512, [], \"e1cf\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM448 192V416H64V192H448zM436.7 96c7.1 0 10.7 8.6 5.7 13.7l-36.7 36.7c-3.1 3.1-8.2 3.1-11.3 0l-36.7-36.7c-5-5-1.5-13.7 5.7-13.7h73.4zM128 232c-13.3 0-24 10.7-24 24s10.7 24 24 24H384c13.3 0 24-10.7 24-24s-10.7-24-24-24H128zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H384c13.3 0 24-10.7 24-24s-10.7-24-24-24H128z\"]\n};\nvar faCabinetFiling = {\n prefix: 'fas',\n iconName: 'cabinet-filing',\n icon: [448, 512, [128452], \"f64b\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V240H0V64zM0 272H448V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V272zM128 128v16c0 8.8 7.2 16 16 16s16-7.2 16-16V128H288v16c0 8.8 7.2 16 16 16s16-7.2 16-16V128c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zm0 256v16c0 8.8 7.2 16 16 16s16-7.2 16-16V384H288v16c0 8.8 7.2 16 16 16s16-7.2 16-16V384c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32z\"]\n};\nvar faBurgerSoda = {\n prefix: 'fas',\n iconName: 'burger-soda',\n icon: [640, 512, [], \"f858\", \"M249.3 0c-26 0-48.6 17.9-54.5 43.2l-20 84.8H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H333.4c14-8.2 30.1-15.4 48.6-20.9c1.3-3.5 2-7.2 2-11.1c0-17.7-14.3-32-32-32H224.2l17.4-73.8c.9-3.6 4.1-6.2 7.8-6.2H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H249.3zM40 224L60.3 468c2.1 24.9 22.9 44 47.8 44H272c-10-13.4-16-30-16-48c0-14.7 6.6-27.8 17-36.6c-10.5-11.4-17-26.6-17-43.4c0-18.5 7.8-35.1 20.3-46.8c-12.4-10.9-20.3-26.9-20.3-44.8c0-6.3 1-13.8 4.4-21.5c4.2-9.5 13.8-27.8 32.2-47H40zm600 68.3c0-3-.5-5.9-1.7-8.6c-8.1-18.4-48.4-91.9-174.3-91.9s-166.2 73.5-174.3 91.9c-1.2 2.7-1.7 5.7-1.7 8.6c0 15.2 12.3 27.5 27.5 27.5H612.5c15.2 0 27.5-12.3 27.5-27.5zM384 239.8a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm64 0a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm96 0a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm-224 112c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm-16 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48c0-8.8-7.2-16-16-16H304z\"]\n};\nvar faSquareArrowUp = {\n prefix: 'fas',\n iconName: 'square-arrow-up',\n icon: [448, 512, [\"arrow-square-up\"], \"f33c\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm177 87L353 231c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V193.9l-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L207 119c9.4-9.4 24.6-9.4 33.9 0z\"]\n};\nvar faArrowSquareUp = faSquareArrowUp;\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M52.1 93.7C35.7 87.1 27.7 68.5 34.3 52.1s25.2-24.4 41.6-17.8l320 128C408 167.1 416 178.9 416 192s-8 24.9-20.1 29.7l-320 128c-16.4 6.6-35-1.4-41.6-17.8s1.4-35 17.8-41.6L297.8 192 52.1 93.7zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416z\"]\n};\nvar faPalletBox = {\n prefix: 'fas',\n iconName: 'pallet-box',\n icon: [640, 512, [], \"e208\", \"M176 0h80V112c0 5.9 3.2 11.3 8.5 14.1s11.5 2.5 16.4-.8L320 99.2l39.1 26.1c4.9 3.3 11.2 3.6 16.4 .8s8.5-8.2 8.5-14.1V0h80c26.5 0 48 21.5 48 48V208c0 26.5-21.5 48-48 48H176c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM0 352c0-17.7 14.3-32 32-32H96 320 544h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576v64h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H544 320 96 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V384H32c-17.7 0-32-14.3-32-32zm128 96H288V384H128v64zm224 0H512V384H352v64z\"]\n};\nvar faFaceConfounded = {\n prefix: 'fas',\n iconName: 'face-confounded',\n icon: [512, 512, [], \"e36c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM116 205.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zm-161.6 160L256 380.8l39.1-26.1c5.4-3.6 12.4-3.6 17.8 0l40.3 26.8 23.7-11.8c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5l-32 16c-5.1 2.6-11.3 2.2-16-1L304 387.2l-39.1 26.1c-5.4 3.6-12.4 3.6-17.8 0L208 387.2l-39.1 26.1c-4.8 3.2-10.9 3.6-16 1l-32-16c-7.9-4-11.1-13.6-7.2-21.5s13.6-11.1 21.5-7.2l23.7 11.8 40.3-26.8c5.4-3.6 12.4-3.6 17.8 0z\"]\n};\nvar faShieldHalved = {\n prefix: 'fas',\n iconName: 'shield-halved',\n icon: [512, 512, [\"shield-alt\"], \"f3ed\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8V444.8C394 378 431.1 230.1 432 141.4L256 66.8l0 0z\"]\n};\nvar faShieldAlt = faShieldHalved;\nvar faTruckPlow = {\n prefix: 'fas',\n iconName: 'truck-plow',\n icon: [640, 512, [], \"f7de\", \"M192 96v96H327.5L269.9 96H192zm-64 96V80c0-26.5 21.5-48 48-48h93.9c22.5 0 43.3 11.8 54.9 31.1L402.1 192H448c17.7 0 32 14.3 32 32v64h32V176c0-7.3 2.5-14.3 7-20l64-80c11-13.8 31.2-16 45-5s16 31.2 5 45l-57 71.2V320v36.8L633 428c11 13.8 8.8 33.9-5 45s-33.9 8.8-45-5l-64-80c-4.5-5.7-7-12.7-7-20V352H474.5c3.5 10 5.5 20.8 5.5 32c0 53-43 96-96 96s-96-43-96-96c0-11.2 1.9-22 5.5-32H224c-1.9 0-3.8-.2-5.6-.5c3.7 10.2 5.6 21.1 5.6 32.5c0 53-43 96-96 96s-96-43-96-96c0-11.2 1.9-22 5.5-32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32h96zm32 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm256 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faBookAtlas = {\n prefix: 'fas',\n iconName: 'book-atlas',\n icon: [448, 512, [\"atlas\"], \"f558\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM247.4 283.8c-3.7 3.7-6.2 4.2-7.4 4.2s-3.7-.5-7.4-4.2c-3.8-3.7-8-10-11.8-18.9c-6.2-14.5-10.8-34.3-12.2-56.9h63c-1.5 22.6-6 42.4-12.2 56.9c-3.8 8.9-8 15.2-11.8 18.9zm42.7-9.9c7.3-18.3 12-41.1 13.4-65.9h31.1c-4.7 27.9-21.4 51.7-44.5 65.9zm0-163.8c23.2 14.2 39.9 38 44.5 65.9H303.5c-1.4-24.7-6.1-47.5-13.4-65.9zM368 192a128 128 0 1 0 -256 0 128 128 0 1 0 256 0zM145.3 208h31.1c1.4 24.7 6.1 47.5 13.4 65.9c-23.2-14.2-39.9-38-44.5-65.9zm31.1-32H145.3c4.7-27.9 21.4-51.7 44.5-65.9c-7.3 18.3-12 41.1-13.4 65.9zm56.1-75.8c3.7-3.7 6.2-4.2 7.4-4.2s3.7 .5 7.4 4.2c3.8 3.7 8 10 11.8 18.9c6.2 14.5 10.8 34.3 12.2 56.9h-63c1.5-22.6 6-42.4 12.2-56.9c3.8-8.9 8-15.2 11.8-18.9z\"]\n};\nvar faAtlas = faBookAtlas;\nvar faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L120.2 75C107.7 62.5 87.5 62.5 75 75s-12.5 32.8 0 45.3l8.2 8.2C118.4 163.7 93.4 224 43.5 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H43.5c49.9 0 74.9 60.3 39.6 95.6L75 391.8c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-49.9 60.3-74.9 95.6-39.6l8.2 8.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-8.2-8.2c-35.3-35.3-10.3-95.6 39.6-95.6H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H468.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C348.3 118.4 288 93.4 288 43.5V32zM176 224a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faGridRound2 = {\n prefix: 'fas',\n iconName: 'grid-round-2',\n icon: [512, 512, [], \"e5db\", \"M128 32a96 96 0 1 0 0 192 96 96 0 1 0 0-192zm0 256a96 96 0 1 0 0 192 96 96 0 1 0 0-192zM288 128a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zm96 160a96 96 0 1 0 0 192 96 96 0 1 0 0-192z\"]\n};\nvar faCommentMiddleTop = {\n prefix: 'fas',\n iconName: 'comment-middle-top',\n icon: [512, 512, [], \"e14a\", \"M188.3 103.3l44.5-89C237.2 5.5 246.2 0 256 0s18.8 5.5 23.2 14.3l44.5 89C432.2 127.5 512 208.2 512 304c0 114.9-114.6 208-256 208S0 418.9 0 304c0-95.8 79.8-176.5 188.3-200.7z\"]\n};\nvar faEnvelopeCircleCheck = {\n prefix: 'fas',\n iconName: 'envelope-circle-check',\n icon: [640, 512, [], \"e4e8\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176V384c0 35.3 28.7 64 64 64H360.2C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [576, 512, [], \"f5fd\", \"M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z\"]\n};\nvar faRestroomSimple = {\n prefix: 'fas',\n iconName: 'restroom-simple',\n icon: [640, 512, [], \"e23a\", \"M192 64A64 64 0 1 0 64 64a64 64 0 1 0 128 0zM25.9 233.4l-4.1 49.3c-2.5 29.8 15.7 56.1 42.2 65.6V464c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V348.3c26.5-9.5 44.7-35.8 42.2-65.6l-4.1-49.3C226.7 191.9 192 160 150.4 160H105.6c-41.6 0-76.3 31.9-79.7 73.4zM320 0c-13.3 0-24 10.7-24 24V488c0 13.3 10.7 24 24 24s24-10.7 24-24V24c0-13.3-10.7-24-24-24zM512 128A64 64 0 1 0 512 0a64 64 0 1 0 0 128zm-15.7 32c-28.6 0-53.7 18.9-61.5 46.4L395.7 343.2c-5.8 20.4 9.5 40.8 30.8 40.8H448v80c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V384h21.6c21.3 0 36.6-20.3 30.8-40.8L589.3 206.4c-7.8-27.5-33-46.4-61.5-46.4H496.3z\"]\n};\nvar faArrowsToDot = {\n prefix: 'fas',\n iconName: 'arrows-to-dot',\n icon: [512, 512, [], \"e4be\", \"M256 0c17.7 0 32 14.3 32 32V64h32c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8h32V32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H288v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H192c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224H64V192c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6v32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBorderOuter = {\n prefix: 'fas',\n iconName: 'border-outer',\n icon: [448, 512, [], \"f851\", \"M64 96l0 320H384V96H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm224 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-64 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm128-32a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM224 384a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nvar faHashtagLock = {\n prefix: 'fas',\n iconName: 'hashtag-lock',\n icon: [576, 512, [], \"e415\", \"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128h95.1l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128H416c17.7 0 32 14.3 32 32c0 .4 0 .8 0 1.1c-24.1 3.5-45.8 14.6-62.4 30.9H347.1L325.8 320h2.8c-5.4 9.4-8.6 20.3-8.6 32v32h-4.9l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7H155.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l21.3-128H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320h95.1l21.3-128H187.1zM464 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faClockTwoThirty = {\n prefix: 'fas',\n iconName: 'clock-two-thirty',\n icon: [512, 512, [], \"e35b\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM232 392V256c0-8 4-15.5 10.7-20l96-64c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3L280 268.8V392c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [512, 512, [], \"f557\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H96h64V352c0-53 43-96 96-96s96 43 96 96V480h64 64c17.7 0 32-14.3 32-32s-14.3-32-32-32V128H32V416z\"]\n};\nvar faHeartCircleCheck = {\n prefix: 'fas',\n iconName: 'heart-circle-check',\n icon: [576, 512, [], \"e4fd\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faHouseChimneyCrack = {\n prefix: 'fas',\n iconName: 'house-chimney-crack',\n icon: [576, 512, [\"house-damage\"], \"f6f1\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H326.4L288 448l80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L250.6 263.2c-14.6-11.5-33.8 7-22.8 22L288 368l-85.5 71.2c-6.1 5-7.5 13.8-3.5 20.5L230.4 512H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24z\"]\n};\nvar faHouseDamage = faHouseChimneyCrack;\nvar faFileZipper = {\n prefix: 'fas',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM96 48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm-6.3 71.8c3.7-14 16.4-23.8 30.9-23.8h14.8c14.5 0 27.2 9.7 30.9 23.8l23.5 88.2c1.4 5.4 2.1 10.9 2.1 16.4c0 35.2-28.8 63.7-64 63.7s-64-28.5-64-63.7c0-5.5 .7-11.1 2.1-16.4l23.5-88.2zM112 336c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faFileArchive = faFileZipper;\nvar faHeartHalf = {\n prefix: 'fas',\n iconName: 'heart-half',\n icon: [512, 512, [], \"e1ab\", \"M256 96L244 84l0 0c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9l0-50.7 0-265.4V96z\"]\n};\nvar faCommentCheck = {\n prefix: 'fas',\n iconName: 'comment-check',\n icon: [512, 512, [], \"f4ac\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM369 193L241 321c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 159c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z\"]\n};\nvar faMemo = {\n prefix: 'fas',\n iconName: 'memo',\n icon: [384, 512, [], \"e1d8\", \"M0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm64 80c0 8.8 7.2 16 16 16H304c8.8 0 16-7.2 16-16s-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16s7.2 16 16 16H304c8.8 0 16-7.2 16-16s-7.2-16-16-16H80zm0 96c-8.8 0-16 7.2-16 16s7.2 16 16 16H208c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z\"]\n};\nvar faMartiniGlassEmpty = {\n prefix: 'fas',\n iconName: 'martini-glass-empty',\n icon: [512, 512, [\"glass-martini\"], \"f000\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM256 210.7L109.3 64H402.7L256 210.7z\"]\n};\nvar faGlassMartini = faMartiniGlassEmpty;\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M64 160C64 89.3 121.3 32 192 32H448c70.7 0 128 57.3 128 128v33.6c-36.5 7.4-64 39.7-64 78.4v48H128V272c0-38.7-27.5-71-64-78.4V160zM544 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48V448c0 17.7-14.3 32-32 32H576c-17.7 0-32-14.3-32-32H96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3v48 32h32H512h32V320 272z\"]\n};\nvar faCediSign = {\n prefix: 'fas',\n iconName: 'cedi-sign',\n icon: [384, 512, [], \"e0df\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V66.7C101.2 81.9 32 160.9 32 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c30.9-5.2 59.2-17.7 83.2-35.8c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-13.2 9.9-28.3 17.3-44.8 21.6V132c16.4 4.2 31.6 11.6 44.8 21.6c14.1 10.6 34.2 7.8 44.8-6.4s7.8-34.2-6.4-44.8c-24-18-52.4-30.6-83.2-35.8V32zM192 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [384, 512, [], \"f033\", \"M128 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H293.3L160 416h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H90.7L224 96H160c-17.7 0-32-14.3-32-32z\"]\n};\nvar faGlassCitrus = {\n prefix: 'fas',\n iconName: 'glass-citrus',\n icon: [512, 512, [], \"f869\", \"M448 144c0-44.2-35.8-80-80-80c-26.2 0-49.4 12.6-64 32H232.2C252 40.1 305.3 0 368 0c79.5 0 144 64.5 144 144c0 78.4-62.6 142.1-140.5 144l6.5-64.6c39.5-4.9 70-38.6 70-79.4zM249.3 224l-.1 1.3-.9-1.3h1zM8.3 138.5C14.3 131.8 23 128 32 128H320c9 0 17.7 3.8 23.7 10.5s9 15.7 8.1 24.7L322.7 454.4C319.5 487.1 291.9 512 259 512H93c-32.9 0-60.4-24.9-63.7-57.6L.2 163.2c-.9-9 2-18 8.1-24.7zM67.4 192l6.4 64H278.2l6.4-64H67.4z\"]\n};\nvar faCalendarLinesPen = {\n prefix: 'fas',\n iconName: 'calendar-lines-pen',\n icon: [576, 512, [], \"e472\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448v43.6L289.3 394.3c-8.2 8.2-14 18.5-16.8 29.7l-15 60.1c-2.3 9.4-1.8 19 1.4 27.8H48c-26.5 0-48-21.5-48-48V192zm120 80c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zM96 392c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H120c-13.3 0-24 10.7-24 24zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [9962], \"f51d\", \"M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V48H264c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v46.4L183.3 210c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V251.2c0-16.9-8.8-32.5-23.3-41.2L344 142.4V96h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V24zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faPersonSnowmobiling = {\n prefix: 'fas',\n iconName: 'person-snowmobiling',\n icon: [640, 512, [\"snowmobile\"], \"f7d1\", \"M240 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM373.5 85.3c-5.9-11.9-20.3-16.7-32.2-10.7s-16.7 20.3-10.7 32.2l37.4 74.7L360 192H304l-61.7-55.6c-11.8-10.6-27-16.4-42.8-16.4h-.9c-23.7 0-45.5 13.1-56.6 34.1l-35.3 66.6c-11.4 21.6-9.4 47.8 5.3 67.4H99.8c-12.1 0-23.2 6.8-28.6 17.7l-32 64c-2.5 5-3.6 10.2-3.4 15.2c4-.6 8.1-.9 12.3-.9H272c26.2 0 49.4 12.6 64 32H450l36 48H440c-13.3 0-24 10.7-24 24s10.7 24 24 24H576c6.4 0 12.5-2.5 17-7l40-40c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-33 33H546l-46-61.3 68.9-45.9c4.5-3 7.1-8 7.1-13.3V265.9c0-6.1-3.4-11.6-8.8-14.3L419.8 177.9 373.5 85.3zM298.5 256H312l-24 32H264l-72-32 32-48 29.3 29.3c12 12 28.3 18.7 45.3 18.7zM48 416c-26.5 0-48 21.5-48 48s21.5 48 48 48H272c26.5 0 48-21.5 48-48s-21.5-48-48-48H48z\"]\n};\nvar faSnowmobile = faPersonSnowmobiling;\nvar faFaceHushed = {\n prefix: 'fas',\n iconName: 'face-hushed',\n icon: [512, 512, [], \"e37b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM179 160.9c-21.2 2.8-40.6 12.4-56.1 26.8c-6.5 6-16.6 5.7-22.6-.8s-5.7-16.6 .8-22.6c20.1-18.7 45.5-31.5 73.7-35.2c5.6-.7 11.4-1.1 17.2-1.1c8.8 0 16 7.2 16 16s-7.2 16-16 16c-4.4 0-8.8 .3-13 .9zm141-.9c-8.8 0-16-7.2-16-16s7.2-16 16-16c5.8 0 11.6 .4 17.2 1.1c28.2 3.7 53.7 16.4 73.7 35.2c6.5 6 6.8 16.2 .8 22.6s-16.2 6.8-22.6 .8c-15.5-14.5-34.8-24-56.1-26.8c-4.3-.6-8.6-.9-13-.9zM256 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [640, 512, [], \"f653\", \"M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9l0 0 0 0 .2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2 0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM228 72c0-11-9-20-20-20s-20 9-20 20V86c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V280c0 11 9 20 20 20s20-9 20-20V266.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V72z\"]\n};\nvar faPickaxe = {\n prefix: 'fas',\n iconName: 'pickaxe',\n icon: [512, 512, [], \"e5bf\", \"M462.4 373.5l0 0-.1-.2-.3-.8c-.3-.7-.7-1.8-1.3-3.3c-1.2-2.9-3-7.2-5.5-12.7c-5-11-12.6-26.7-23.1-45.3c-21-37.3-53.6-86-99.5-132s-94.7-78.5-132-99.5c-18.6-10.5-34.3-18.1-45.3-23.1c-5.5-2.5-9.8-4.3-12.7-5.5c-1.4-.6-2.5-1-3.3-1.3l-.8-.3-.2-.1 0 0 0 0c-6.2-2.3-10.4-8.2-10.5-14.8s3.9-12.6 10-15.1C169.5 7 204 0 240 0c59.6 0 114.7 19.2 159.5 51.6l9.4-9.8c6-6.2 14.2-9.7 22.8-9.8s16.9 3.3 22.9 9.4l16 16c6.1 6.1 9.5 14.3 9.4 22.9s-3.6 16.8-9.8 22.8l-9.8 9.4C492.8 157.3 512 212.4 512 272c0 36-7 70.5-19.8 102c-2.5 6.1-8.5 10.1-15.1 10s-12.5-4.3-14.8-10.5l0 0zM9.4 502.6C-3 490.3-3.1 470.4 8.9 457.8l272-282.9c9.7 8.4 19.5 17.4 29.1 27s18.6 19.4 27 29.1L54.2 503.1c-12.6 12.1-32.5 11.9-44.8-.4z\"]\n};\nvar faLinkSimpleSlash = {\n prefix: 'fas',\n iconName: 'link-simple-slash',\n icon: [640, 512, [], \"e1ce\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L532.4 392c45.4-28.2 75.6-78.6 75.6-136c0-88.4-71.6-160-160-160H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c53 0 96 43 96 96c0 43.3-28.6 79.8-67.9 91.8L399.7 288H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H318.1l-81.7-64H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-11.3 0-22.3 1.2-32.9 3.4L38.8 5.1zM121 191.4L70.7 151.7C46.6 179.7 32 216.1 32 256c0 88.4 71.6 160 160 160h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-53 0-96-43-96-96c0-24.9 9.5-47.6 25-64.6z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M64 32c0-8.9 3.8-20.9 6.2-27.3C71.2 1.8 74 0 77 0c1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1C175.2 .7 177.1 0 179 0c3 0 5.8 1.8 6.8 4.7c2.4 6.5 6.2 18.4 6.2 27.3c0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8H480l32 0c40.3 0 78.2 19 102.4 51.2l19.2 25.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4l-19.2-25.6c-5.3-7-11.8-12.8-19.2-17V320H192l-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3h-2C23.9 256 0 232.1 0 202.7c0-12.1 4.1-23.8 11.7-33.3L87.6 74.6C78.1 67.4 64 53.2 64 32zM448 352h96v64 64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V416H288v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416 352h96H448zM260.9 210.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.3-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5zM368.1 208c-2 0-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5c-.9-1.8-2.8-2.9-4.8-2.9zm116.8 2.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5z\"]\n};\nvar faFaceConfused = {\n prefix: 'fas',\n iconName: 'face-confused',\n icon: [512, 512, [], \"e36d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM171.1 395.6l-1.1 .9c-6.9 5.5-17 4.4-22.5-2.5s-4.4-17 2.5-22.5l1.1-.9C205 327.5 272 304 341 304h11c8.8 0 16 7.2 16 16s-7.2 16-16 16H341c-61.8 0-121.7 21-169.9 59.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faPinball = {\n prefix: 'fas',\n iconName: 'pinball',\n icon: [448, 512, [], \"e229\", \"M352 224a96 96 0 1 0 0-192 96 96 0 1 0 0 192zm22.1 254.4c14.9 4.8 30.7-1.8 37.9-15c7.4-13.5 4.2-30.8-8.4-40.6l-246-208.3c-40.6-34.1-101.2-28.8-135.2 11.8S-6.3 327.5 34.3 361.6c9.2 7.7 19.9 13.8 32 17.7l307.8 99.1zM64 288a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faZ = {\n prefix: 'fas',\n iconName: 'z',\n icon: [384, 512, [122], \"5a\", \"M0 64C0 46.3 14.3 32 32 32H352c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faPersonSkiing = {\n prefix: 'fas',\n iconName: 'person-skiing',\n icon: [512, 512, [9975, \"skiing\"], \"f7c9\", \"M380.7 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM2.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L232.7 361.3l46.2-69.2-75.1-75.1c-14.6-14.6-20.4-33.9-18.4-52.1l108.8 52 39.3 39.3c16.2 16.2 18.7 41.5 6 60.6L289.8 391l128.7 66.8c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L12.9 301.3C1.2 295.2-3.4 280.7 2.7 268.9zM118.9 65.6L137 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 54.7 26.2c1.5-.7 3.1-1.4 4.7-2.1l83.4-33.4c34.2-13.7 72.8 4.2 84.5 39.2l17.1 51.2 52.1 26.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-58.1-29c-11.4-5.7-20-15.7-24.1-27.8l-5.8-17.3-27.3 12.1-6.8 3-6.7-3.2L151.5 116.7l-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5z\"]\n};\nvar faSkiing = faPersonSkiing;\nvar faDeer = {\n prefix: 'fas',\n iconName: 'deer',\n icon: [512, 512, [129420], \"f78e\", \"M240 0c8.8 0 16 7.2 16 16V40c0 13.3 10.7 24 24 24h8 8c13.3 0 24-10.7 24-24V16c0-8.8 7.2-16 16-16s16 7.2 16 16V40c0 8.6-1.9 16.7-5.4 24h30.6H416c13.3 0 24-10.7 24-24V16c0-8.8 7.2-16 16-16s16 7.2 16 16V40c0 21.7-12.3 40.4-30.3 49.8c.6 .5 1.1 1.1 1.7 1.6l55.3 55.3c8.5 8.5 13.3 20 13.3 32c0 25-20.3 45.3-45.3 45.3H416h-5.3L384 304v64V480c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V368H251.7c-28.8 0-55.3-9.8-76.3-26.4c-2.1 16.9-9.8 32.6-21.9 44.8L142.9 397c-4.6 4.6-6.2 11.5-4 17.7l19.3 54.7c7.3 20.8-8.1 42.6-30.2 42.6H94.1c-13.6 0-25.7-8.6-30.2-21.4l-15.5-44c-11.4-32.4-7.4-67.8 10-96.3C65 339.4 65 324.9 56 315.9c-3-3-5.7-6.1-8.1-9.5c-1.3 12.9-12.7 22.5-25.7 21.5C8.9 326.9-.9 315.4 .1 302.2L2.4 272c4.2-54.2 49.3-96 103.7-96h7.9H128h64c.6 0 1.2 0 1.7 0c.8 0 1.7 0 2.5 0H302.4l9.6-32H274c-9.9 0-18-8-18-18c0-8.2 5.6-15.4 13.6-17.4L320 96H296h-8-8c-30.9 0-56-25.1-56-56V16c0-8.8 7.2-16 16-16zM400 160a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faInputPipe = {\n prefix: 'fas',\n iconName: 'input-pipe',\n icon: [640, 512, [], \"e1be\", \"M64 128V384H576V128H64zM0 128C0 92.7 28.7 64 64 64H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zm144 56V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V184c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faRoadLock = {\n prefix: 'fas',\n iconName: 'road-lock',\n icon: [640, 512, [], \"e567\", \"M288 32H213.2c-27.1 0-51.3 17.1-60.3 42.6L35.1 407.2c-2.1 5.9-3.1 12-3.1 18.2C32 455.5 56.5 480 86.6 480H288V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64h32V352c0-23.7 12.9-44.4 32-55.4V272c0-58.3 44.6-106.2 101.5-111.5L487.1 74.6C478 49.1 453.9 32 426.8 32H352V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faA = {\n prefix: 'fas',\n iconName: 'a',\n icon: [384, 512, [97], \"41\", \"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L93.3 384H290.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM264 320H120l72-172.8L264 320z\"]\n};\nvar faBookmarkSlash = {\n prefix: 'fas',\n iconName: 'bookmark-slash',\n icon: [640, 512, [], \"e0c2\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512 376V48c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48V75L38.8 5.1zM128 487.7c0 13.4 10.9 24.3 24.3 24.3c5 0 9.9-1.5 14-4.4L320 400 473.7 507.6c4.1 2.9 9 4.4 14 4.4c9.9 0 18.4-5.9 22.2-14.3L128 196.9V487.7z\"]\n};\nvar faTemperatureArrowDown = {\n prefix: 'fas',\n iconName: 'temperature-arrow-down',\n icon: [576, 512, [\"temperature-down\"], \"e03f\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM176 0C114.1 0 64 50.1 64 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V272c0-8.8-7.2-16-16-16s-16 7.2-16 16v50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zm336-64H480V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352H384c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8z\"]\n};\nvar faTemperatureDown = faTemperatureArrowDown;\nvar faMace = {\n prefix: 'fas',\n iconName: 'mace',\n icon: [512, 512, [], \"f6f8\", \"M244.8 95l28-84.1C275 4.4 281.1 0 288 0s13 4.4 15.2 10.9l28 84.1c40.4 13.5 72.3 45.4 85.8 85.8l84.1 28c6.5 2.2 10.9 8.3 10.9 15.2s-4.4 13-10.9 15.2l-84.1 28c-13.5 40.4-45.4 72.3-85.8 85.8l-28 84.1C301 443.6 294.9 448 288 448s-13-4.4-15.2-10.9l-28-84.1c-9.8-3.3-19-7.6-27.7-12.9L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L171.9 294.9c-5.3-8.6-9.6-17.9-12.9-27.7l-84.1-28C68.4 237 64 230.9 64 224s4.4-13 10.9-15.2l84.1-28c13.5-40.4 45.4-72.3 85.8-85.8zM288 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faFeatherPointed = {\n prefix: 'fas',\n iconName: 'feather-pointed',\n icon: [512, 512, [\"feather-alt\"], \"f56b\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l74.8-74.8c7.4 4.6 15.3 8.2 23.8 10.5C200.3 452.8 270 454.5 338 409.4c12.2-8.1 5.8-25.4-8.8-25.4l-16.1 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l97.7-29.3c3.4-1 6.4-3.1 8.4-6.1c4.4-6.4 8.6-12.9 12.6-19.6c6.2-10.3-1.5-23-13.5-23l-38.6 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l80.9-24.3c4.6-1.4 8.4-4.8 10.2-9.3C494.5 163 507.8 86.1 511.9 36.8c.8-9.9-3-19.6-10-26.6s-16.7-10.8-26.6-10C391.5 7 228.5 40.5 137.4 131.6C57.3 211.7 56.7 302.3 71.3 356.4c2.1 7.9 12 9.6 17.8 3.8L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faFeatherAlt = faFeatherPointed;\nvar faSausage = {\n prefix: 'fas',\n iconName: 'sausage',\n icon: [512, 512, [], \"f820\", \"M320 160c0-42 26.9-77.7 64.5-90.7L369.2 27.4c-.8-2.2-1.2-4.6-1.2-7C368 9.1 377.1 0 388.4 0h55.2C454.9 0 464 9.1 464 20.4c0 2.4-.4 4.7-1.2 7L447.5 69.3C485.1 82.3 512 118 512 160c0 194.4-157.6 352-352 352c-42 0-77.7-26.9-90.7-64.5L27.4 462.8c-2.2 .8-4.6 1.2-7 1.2C9.1 464 0 454.9 0 443.6V388.4C0 377.1 9.1 368 20.4 368c2.4 0 4.7 .4 7 1.2l41.9 15.2C82.3 346.9 118 320 160 320c88.4 0 160-71.6 160-160zm80 0c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 114.9-93.1 208-208 208c-8.8 0-16 7.2-16 16s7.2 16 16 16c132.5 0 240-107.5 240-240z\"]\n};\nvar faTrashCanClock = {\n prefix: 'fas',\n iconName: 'trash-can-clock',\n icon: [576, 512, [], \"e2aa\", \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416v64.7c-29.3 2.6-56.6 12.5-80 27.7V208c0-8.8-7.2-16-16-16s-16 7.2-16 16v39.2c-29.8 31.5-48 74-48 120.8c0 59.5 29.6 112.1 74.8 144H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm64 176a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-80c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faP = {\n prefix: 'fas',\n iconName: 'p',\n icon: [320, 512, [112], \"50\", \"M0 96C0 60.7 28.7 32 64 32h96c88.4 0 160 71.6 160 160s-71.6 160-160 160H64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V320 96zM64 288h96c53 0 96-43 96-96s-43-96-96-96H64V288z\"]\n};\nvar faBroomWide = {\n prefix: 'fas',\n iconName: 'broom-wide',\n icon: [512, 512, [], \"e5d1\", \"M502.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128-15.8-15.8c-15.2-15.2-38.5-18.4-57.3-8l-32.5 18L380.4 288.1l18-32.5c10.4-18.7 7.1-42.1-8-57.3l-15.8-15.8 128-128c12.5-12.5 12.5-32.8 0-45.3zM187.5 151.8L16.4 246.9C6.3 252.5 0 263.2 0 274.8c0 8.5 3.4 16.6 9.3 22.6l43.2 43.2c2.1 2.1 5.3 2.9 8.2 1.9l52.1-17.4c6.3-2.1 12.2 3.9 10.1 10.1l-17.4 52.1c-1 2.9-.2 6 1.9 8.2L214.7 502.7c6 6 14.1 9.3 22.6 9.3c11.6 0 22.3-6.3 27.9-16.4l95.1-171.1L187.5 151.8z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c17.7 0 32 14.3 32 32V62.1l15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49v70.3l61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7v70.3l49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V449.9l-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49V311.7l-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3V129.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faStomach = {\n prefix: 'fas',\n iconName: 'stomach',\n icon: [512, 512, [], \"f623\", \"M192 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V96c0 70.7 57.3 128 128 128v64c0 35.3-28.7 64-64 64H128C57.3 352 0 409.3 0 480c0 17.7 14.3 32 32 32s32-14.3 32-32c0-26.5 21.5-48 48-48c24.6 0 36 9.5 58.2 28.2l0 0c1.7 1.4 3.4 2.9 5.3 4.4c12.6 10.5 28.4 22.9 49.6 32.2C246.5 506.2 272 512 304 512c114.9 0 208-93.1 208-208V224c0-70.7-57.3-128-128-128c-47.4 0-88.7 25.7-110.9 64H256c-35.3 0-64-28.7-64-64V32zM445.1 332.7c-7.2 1.9-14.6 3.3-21.1 3.3c-16.8 .2-28.4-7.9-40-16s-23.2-16.3-40-16c-7.9 .1-17.1 2.1-25.6 4.6c1.1-6.7 1.6-13.6 1.6-20.6V224c0-35.3 28.7-64 64-64s64 28.7 64 64v80c0 9.8-1 19.4-2.9 28.7z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M96 96c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H80c-44.2 0-80-35.8-80-80V128c0-17.7 14.3-32 32-32s32 14.3 32 32V400c0 8.8 7.2 16 16 16s16-7.2 16-16V96zm64 24v80c0 13.3 10.7 24 24 24H296c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24H184c-13.3 0-24 10.7-24 24zm208-8c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zM160 304c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faRectangleAd = {\n prefix: 'fas',\n iconName: 'rectangle-ad',\n icon: [576, 512, [\"ad\"], \"f641\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM229.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L253.2 328H162.8l-5.4 10.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zM208 237.7L186.8 280h42.3L208 237.7zM392 256a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm24-43.9V184c0-13.3 10.7-24 24-24s24 10.7 24 24v96 48c0 13.3-10.7 24-24 24c-6.6 0-12.6-2.7-17-7c-9.4 4.5-19.9 7-31 7c-39.8 0-72-32.2-72-72s32.2-72 72-72c8.4 0 16.5 1.4 24 4.1z\"]\n};\nvar faAd = faRectangleAd;\nvar faGuitarElectric = {\n prefix: 'fas',\n iconName: 'guitar-electric',\n icon: [512, 512, [127928], \"f8be\", \"M352 81.1v33.6L243.8 223c-14.6-26.1-5.5-50.4 3.2-64.7c4.8-7.9 4.8-18.7-1.7-25.3s-17.1-6.6-23.6 0l-29.9 30.2c-9.1 9.2-14.7 21.5-20.2 33.5l0 0 0 0c-1.2 2.6-2.3 5.1-3.5 7.6c-3.5 7.3-8.9 15.7-17.1 24c-24.7 25-64.7 40.2-89.6 47.7c-14.5 4.4-28.1 11.7-38.7 22.4c-30 30.4-30 79.6 0 110l79.9 80.8c30 30.4 78.7 30.4 108.8 0c10.7-10.8 17.9-24.5 22.2-39.2c7.5-25.2 22.5-65.6 47.2-90.6c10-10.1 20-16 28.3-19.3l1.1-.5 0 0c11.3-4.6 23-9.4 31.6-18l21.6-21.8c6.5-6.6 6.5-17.3 0-23.8s-17.3-6.6-25.8-3c-11.1 4.7-28 7.3-48.3-4.7L461.3 96H464c26.5 0 48-21.5 48-48s-21.5-48-48-48h-1.1c-9.7 0-19.2 2.9-27.3 8.3L366.2 54.5C357.3 60.4 352 70.4 352 81.1zM195.3 268.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-64 64l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0z\"]\n};\nvar faArrowTurnDownRight = {\n prefix: 'fas',\n iconName: 'arrow-turn-down-right',\n icon: [512, 512, [], \"e3d6\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V224c0 53 43 96 96 96H402.7l-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256H96c-17.7 0-32-14.3-32-32V64z\"]\n};\nvar faMoonCloud = {\n prefix: 'fas',\n iconName: 'moon-cloud',\n icon: [640, 512, [], \"f754\", \"M479.5 32c-118.2 0-214.9 92-223 208.3C310 244.7 352 289.4 352 344c0 27.9-11 53.3-29 72c40.3 39.6 95.5 64 156.4 64c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.2-.5-12.6-.8-19-.8zM64 416H248c39.8 0 72-32.2 72-72s-32.2-72-72-72c-10.1 0-19.7 2.1-28.4 5.8C208.8 246.5 179 224 144 224c-38.7 0-71 27.5-78.4 64c-.5 0-1.1 0-1.6 0c-35.3 0-64 28.7-64 64s28.7 64 64 64z\"]\n};\nvar faBreadSliceButter = {\n prefix: 'fas',\n iconName: 'bread-slice-butter',\n icon: [512, 512, [], \"e3e1\", \"M0 192C0 64 192 32 256 32s256 32 256 160c0 35.3-28.7 64-64 64V432c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V256c-35.3 0-64-28.7-64-64zm182.6 73.4c-12.5 12.5-12.5 32.8 0 45.3l50.7 50.7c12.5 12.5 32.8 12.5 45.3 0l50.7-50.7c12.5-12.5 12.5-32.8 0-45.3l-50.7-50.7c-12.5-12.5-32.8-12.5-45.3 0l-50.7 50.7z\"]\n};\nvar faCircleArrowRight = {\n prefix: 'fas',\n iconName: 'circle-arrow-right',\n icon: [512, 512, [\"arrow-circle-right\"], \"f0a9\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM281 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L136 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l182.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L393 239c9.4 9.4 9.4 24.6 0 33.9L281 385z\"]\n};\nvar faArrowCircleRight = faCircleArrowRight;\nvar faUserGroupCrown = {\n prefix: 'fas',\n iconName: 'user-group-crown',\n icon: [640, 512, [\"users-crown\"], \"f6a5\", \"M144 144V128H304v16c0 44.2-35.8 80-80 80s-80-35.8-80-80zm-.1-124.9c-.3-.2-.6-.4-.8-.6L140 16 124.4 3.5C121.5 1.2 118 0 114.4 0H112c-8.8 0-16 7.2-16 16V39v3.2 .1V144c0 70.7 57.3 128 128 128s128-57.3 128-128V42.3v-.1V39 16c0-8.8-7.2-16-16-16h-2.4c-3.6 0-7.2 1.2-10 3.5L308 16l-3 2.4c-.3 .2-.6 .4-.8 .6l-.1 .1c-10.2 7.5-23.8 8.3-34.9 2L238.9 4c-4.6-2.6-9.7-4-14.9-4s-10.4 1.4-14.9 4L178.9 21.2c-11 6.3-24.7 5.5-34.9-2l-.1-.1zM168 304C75.2 304 0 379.2 0 472v8c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32v-8c0-92.8-75.2-168-168-168H168zm264-48c61.9 0 112-50.1 112-112s-50.1-112-112-112c-17.2 0-33.5 3.9-48 10.8V144c0 5.4-.3 10.7-.8 16c-2.4 24.3-10.3 47.1-22.4 67c-.5 .8-1 1.6-1.4 2.3C379 245.9 404.3 256 432 256zm39.4 256H609.3c17 0 30.7-13.8 30.7-30.7C640 392.2 567.8 320 478.7 320H417.3c-2.4 0-4.8 .1-7.1 .2C452.9 356.8 480 411.3 480 472v8c0 11.7-3.1 22.6-8.6 32z\"]\n};\nvar faUsersCrown = faUserGroupCrown;\nvar faCircleI = {\n prefix: 'fas',\n iconName: 'circle-i',\n icon: [512, 512, [], \"e111\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 128h72 72c13.3 0 24 10.7 24 24s-10.7 24-24 24H280V336h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24h48V176H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faToiletPaperCheck = {\n prefix: 'fas',\n iconName: 'toilet-paper-check',\n icon: [640, 512, [], \"e5b2\", \"M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1H48c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0H444.2zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM291.3 187.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L208 225.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72z\"]\n};\nvar faFilterCircleXmark = {\n prefix: 'fas',\n iconName: 'filter-circle-xmark',\n icon: [576, 512, [], \"e17b\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faLocust = {\n prefix: 'fas',\n iconName: 'locust',\n icon: [576, 512, [], \"e520\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h16c98.7 0 180.6 71.4 197 165.4c-9-3.5-18.8-5.4-29-5.4H431.8l-41.8-97.5c-3.4-7.9-10.8-13.4-19.3-14.4s-17 2.7-22.1 9.6l-40.9 55.5-21.7-50.7c-3.3-7.8-10.5-13.2-18.9-14.3s-16.7 2.3-22 8.9l-240 304c-8.2 10.4-6.4 25.5 4 33.7s25.5 6.4 33.7-4l79.4-100.5 43 16.4-40.5 55c-7.9 10.7-5.6 25.7 5.1 33.6s25.7 5.6 33.6-5.1L215.1 400h74.5l-29.3 42.3c-7.5 10.9-4.8 25.8 6.1 33.4s25.8 4.8 33.4-6.1L348 400h80.4l38.8 67.9c6.6 11.5 21.2 15.5 32.7 8.9s15.5-21.2 8.9-32.7L483.6 400H496c44.1 0 79.8-35.7 80-79.7c0-.1 0-.2 0-.3V280C576 143 465 32 328 32H312zm50.5 168l17.1 40H333l29.5-40zm-87.7 38.1l-1.4 1.9H225.1l32.7-41.5 16.9 39.5zM88.8 240C57.4 240 32 265.4 32 296.8c0 15.5 6.3 30 16.9 40.4L126.7 240H88.8zM496 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [\"unsorted\"], \"f0dc\", \"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z\"]\n};\nvar faUnsorted = faSort;\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [\"list-1-2\", \"list-numeric\"], \"f0cb\", \"M24 56c0-13.3 10.7-24 24-24H80c13.3 0 24 10.7 24 24V176h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H56V80H48C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432H120c13.3 0 24 10.7 24 24s-10.7 24-24 24H32c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faList12 = faListOl;\nvar faListNumeric = faListOl;\nvar faChartWaterfall = {\n prefix: 'fas',\n iconName: 'chart-waterfall',\n icon: [512, 512, [], \"e0eb\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm128-64v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64-96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32zM480 96V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faSparkle = {\n prefix: 'fas',\n iconName: 'sparkle',\n icon: [448, 512, [], \"e5d6\", \"M245.8 45.9C241.9 37.4 233.4 32 224 32s-17.9 5.4-21.8 13.9L142.7 174.7 13.9 234.2C5.4 238.1 0 246.6 0 256s5.4 17.9 13.9 21.8l128.8 59.5 59.5 128.8c3.9 8.5 12.4 13.9 21.8 13.9s17.9-5.4 21.8-13.9l59.5-128.8 128.8-59.5c8.5-3.9 13.9-12.4 13.9-21.8s-5.4-17.9-13.9-21.8L305.3 174.7 245.8 45.9z\"]\n};\nvar faFaceParty = {\n prefix: 'fas',\n iconName: 'face-party',\n icon: [640, 512, [], \"e383\", \"M531.7 400C485.6 467.6 408 512 320 512C178.6 512 64 397.4 64 256S178.6 0 320 0C433.4 0 529.7 73.8 563.3 176H560c-44.2 0-80 35.8-80 80c0 18 6 34.6 16 48H416c-1 0-2 0-3 .1c-1.2-2.3-2.7-4.4-4.3-6.4c-4.3-5.2-10.1-9.7-16.7-13.4C378.7 276.9 361.4 272 344 272c-3.6 0-6.8 2.5-7.7 6s.6 7.2 3.8 9l0 0 0 0 0 0 .2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1 0 0 0 0 0 0 0 0 0 0c-2.5 1.4-4.1 4.1-4.1 7s1.6 5.6 4.1 7l0 0 0 0 0 0 .2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1 0 0 0 0 0 0 0 0c-3.2 1.8-4.7 5.5-3.8 9s4.1 6 7.7 6c17.4 0 34.7-4.9 47.9-12.3c6.6-3.7 12.5-8.2 16.7-13.4c1.6-2 3.1-4.1 4.3-6.4c1 .1 2 .1 3 .1H531.7zM275.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm89.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM512 256c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H400c-8.8 0-16-7.2-16-16s7.2-16 16-16H592c8.8 0 16-7.2 16-16V256c0-8.8-7.2-16-16-16H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H560c-26.5 0-48-21.5-48-48zM51.3 152.2l-20-52C46.6 71.8 66 46 88.8 23.4L132 37.8C96.5 68.5 68.5 107.7 51.3 152.2zM55.1 12.2C40.9 27.6 28 44.4 16.6 62.1L1.1 21.7C-1.2 16 .2 9.4 4.4 4.9S15.2-1.1 21.1 .8L55.1 12.2z\"]\n};\nvar faKidneys = {\n prefix: 'fas',\n iconName: 'kidneys',\n icon: [640, 512, [], \"f5fb\", \"M152 0c-21.5 0-45.5 6.3-64.3 23.8C56.4 52.8 0 119.6 0 224c0 24.9 3.5 54.7 7.1 79.1c7.1 48 48.8 80.9 95.3 80.9c58.4 0 104-50.4 98.2-108.5l-4.1-41.2c-2-20.1 4.5-40.1 17.9-55.1l18.2-20.5c15.2-17.1 23.5-39.1 23.5-61.9c0-31.2-15.6-60.2-41.5-77.5l-3.4-2.3C194.5 5.9 175.1 0 155.2 0H152zM488 0h-3.2c-19.9 0-39.4 5.9-55.9 16.9l-3.4 2.3C399.6 36.5 384 65.6 384 96.7c0 22.8 8.4 44.8 23.5 61.9l18.2 20.5c13.4 15.1 19.9 35.1 17.9 55.1l-4.1 41.2C433.7 333.6 479.3 384 537.7 384c46.5 0 88.2-32.9 95.3-80.9c3.6-24.4 7.1-54.2 7.1-79.1c0-104.4-56.4-171.2-87.7-200.2C533.5 6.3 509.5 0 488 0zM228.2 231.1l1.9 18.8 21.5 10.7c2.7 1.4 4.4 4.1 4.4 7.2V488c0 13.3 10.7 24 24 24s24-10.7 24-24V267.8c0-21.2-12-40.6-31-50.1l-34.8-17.4-.1 .1c-7.5 8.4-11.1 19.5-10 30.7zm173.6-30.7l-.1-.1L367 217.7c-19 9.5-31 28.9-31 50.1V488c0 13.3 10.7 24 24 24s24-10.7 24-24V267.8c0-3 1.7-5.8 4.4-7.2l21.5-10.7 1.9-18.8c1.1-11.2-2.5-22.3-10-30.7z\"]\n};\nvar faWifiExclamation = {\n prefix: 'fas',\n iconName: 'wifi-exclamation',\n icon: [640, 512, [], \"e2cf\", \"M320 32c-27.2 0-48.7 23.1-46.8 50.2l14.9 208C289.3 307 303.2 320 320 320s30.7-13 31.9-29.7l14.9-208C368.7 55.1 347.2 32 320 32zM241.3 84.5c-1.2-17.4 3.3-33.9 11.9-47.6C159.4 51 75.1 94.1 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9c51.3-49.2 116.2-84.3 188.5-99.1l-1.4-19.3zm157.4 0l-1.4 19.3c72.3 14.8 137.2 49.9 188.5 99.1c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C564.9 94.1 480.6 51 386.8 37c8.6 13.7 13.1 30.1 11.9 47.6zM129.5 264c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c23.6-20.8 51.6-36.7 82.4-46.2l-4.7-65.1C204.4 212 163.4 234.1 129.5 264zm260.9-63.3l-4.6 65.1c30.8 9.4 58.8 25.4 82.4 46.2c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2c-33.9-29.9-74.9-52-120.1-63.3zM384 416a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faChartNetwork = {\n prefix: 'fas',\n iconName: 'chart-network',\n icon: [640, 512, [], \"f78a\", \"M288 64c0 13.7-4.3 26.3-11.6 36.7l29.2 62.5c9.8-2.1 20-3.2 30.4-3.2c36.1 0 69 13.3 94.3 35.2L512.4 135c-.2-2.3-.4-4.6-.4-7c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-9.2 0-17.9-1.9-25.8-5.4l-82 60.2c7.6 17.5 11.8 36.9 11.8 57.2c0 15.6-2.5 30.7-7.1 44.8l72 43.2c9.2-5.1 19.8-8 31.1-8c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64l0-1.1-72.1-43.3C413.7 431 376.8 448 336 448c-68.5 0-125.9-47.9-140.4-112H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64s28.7-64 64-64c23.7 0 44.4 12.9 55.4 32h76.1c7.5-33 26.3-61.6 52.1-81.7l-29.2-62.5C185.7 124.9 160 97.5 160 64c0-35.3 28.7-64 64-64s64 28.7 64 64zm48 288a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faPersonDressBurst = {\n prefix: 'fas',\n iconName: 'person-dress-burst',\n icon: [640, 512, [], \"e544\", \"M528 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM390.2 384H408v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h16v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h17.8c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3H474.2c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faDiceD4 = {\n prefix: 'fas',\n iconName: 'dice-d4',\n icon: [512, 512, [], \"f6d0\", \"M228.8 .7C235.5 2.8 240 9 240 16V496c0 6.3-3.7 12-9.4 14.6s-12.5 1.6-17.2-2.6L5.4 324c-6.1-5.4-7.2-14.5-2.5-21.2l208-296c4-5.7 11.3-8.2 17.9-6.1zm54.4 0c6.7-2.1 13.9 .3 17.9 6.1l208 296c4.7 6.7 3.6 15.8-2.5 21.2l-208 184c-4.7 4.2-11.4 5.2-17.2 2.6s-9.4-8.3-9.4-14.6V16c0-7 4.5-13.2 11.2-15.3z\"]\n};\nvar faMoneyCheckDollar = {\n prefix: 'fas',\n iconName: 'money-check-dollar',\n icon: [576, 512, [\"money-check-alt\"], \"f53d\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zM272 192H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 304c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16zM164 152v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V360c0 11-9 20-20 20s-20-9-20-20V345.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V152c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faMoneyCheckAlt = faMoneyCheckDollar;\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [448, 512, [], \"f5cb\", \"M368 80h32v32H368V80zM352 32c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32V160c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H352zM96 160c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32V160zM48 400H80v32H48V400zm320 32V400h32v32H368zM48 112V80H80v32H48z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [512, 512, [], \"f7ec\", \"M256 32C192 32 0 64 0 192c0 35.3 28.7 64 64 64V432c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V256c35.3 0 64-28.7 64-64C512 64 320 32 256 32z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z\"]\n};\nvar faWheatAwnSlash = {\n prefix: 'fas',\n iconName: 'wheat-awn-slash',\n icon: [640, 512, [], \"e338\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L362.5 258.8l28.7-28.7 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L550.5 231c6.2-6.2 6.2-16.4 0-22.6L539.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L569 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L473 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L393.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L369.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L335.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-3.3 3.3-6.3 6.8-9 10.4L38.8 5.1zm255 322.4l-50.6-39.9-29.5 29.5c-3.4-27.3-15.5-53.8-36.5-74.8L165.8 231c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L73.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l36.3-36.3zM569 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L447 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88z\"]\n};\nvar faFaceKissWinkHeart = {\n prefix: 'fas',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M498 339.7c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-22.9-89.3c-10-39 11.8-80.9 51.8-92.1c37.2-10.4 73.8 10.1 87.5 44c12.7-1.6 25.1 .4 36.2 5zM296 332c0 6.9-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C258.7 443.1 241.4 448 224 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.6-.4-.3-.2-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm194.8 57.6c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nvar faKissWinkHeart = faFaceKissWinkHeart;\nvar faDagger = {\n prefix: 'fas',\n iconName: 'dagger',\n icon: [384, 512, [], \"f6cb\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32v96H48c-26.5 0-48 21.5-48 48s21.5 48 48 48c20.9 0 38.7-13.4 45.3-32H192h98.7c6.6 18.6 24.4 32 45.3 32c26.5 0 48-21.5 48-48s-21.5-48-48-48H224V32zM128 224v24V414.8c0 10.5 2.9 20.8 8.5 29.7l35.1 56.2c4.4 7 12.1 11.3 20.4 11.3s16-4.3 20.4-11.3l35.1-56.2c5.6-8.9 8.5-19.2 8.5-29.7V248 224H232 152 128z\"]\n};\nvar faPodium = {\n prefix: 'fas',\n iconName: 'podium',\n icon: [448, 512, [], \"f680\", \"M182.4 72c8.3 14.3 23.8 24 41.6 24h64c26.5 0 48-21.5 48-48s-21.5-48-48-48H224c-17.8 0-33.3 9.7-41.6 24H168c-48.6 0-88 39.4-88 88v32H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H424c13.3 0 24-10.7 24-24s-10.7-24-24-24H128V112c0-22.1 17.9-40 40-40h14.4zM48 224L73.7 455.1c3.6 32.4 31 56.9 63.6 56.9H310.7c32.6 0 60-24.5 63.6-56.9L400 224H48z\"]\n};\nvar faMemoCircleCheck = {\n prefix: 'fas',\n iconName: 'memo-circle-check',\n icon: [576, 512, [], \"e1d9\", \"M0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V198.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm64 80c0 8.8 7.2 16 16 16H304c8.8 0 16-7.2 16-16s-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16s7.2 16 16 16H240c8.8 0 16-7.2 16-16s-7.2-16-16-16H80zm0 96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H80zm208 48a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm188.7-43.3L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0z\"]\n};\nvar faRouteHighway = {\n prefix: 'fas',\n iconName: 'route-highway',\n icon: [448, 512, [], \"f61a\", \"M240.5 4.6c-10.1-6.1-22.8-6.1-32.9 0l-4.7 2.8c-37.5 22.5-84 24.3-123.1 4.7l-1.4-.7c-15.2-7.6-33.7-2-42.1 12.7l-32 56c-5.3 9.3-5.6 20.6-.8 30.2l16.2 32.5C27.8 159.1 32 177 32 195.2c0 14.9-2.8 29.7-8.4 43.6L9.3 274.5C3.2 289.9 0 306.4 0 323c0 49.5 28 94.8 72.2 116.9l137.4 68.7c9 4.5 19.6 4.5 28.6 0l137.4-68.7C420 417.8 448 372.5 448 323c0-16.6-3.2-33.1-9.3-48.5l-14.3-35.7c-5.5-13.9-8.4-28.6-8.4-43.6c0-18.2 4.2-36.2 12.4-52.5l16.2-32.5c4.8-9.6 4.5-20.9-.8-30.2l-32-56c-8.4-14.7-26.9-20.3-42.1-12.7l-1.4 .7c-39.1 19.6-85.6 17.8-123.1-4.7l-4.7-2.8zM96 192H352c0 1.1 0 2.2 0 3.2c0 23.1 4.4 45.9 13 67.3l14.3 35.7c3.2 7.9 4.8 16.3 4.8 24.8c0 25.3-14.3 48.4-36.9 59.7L224 444.2 100.9 382.7C78.3 371.4 64 348.3 64 323c0-8.5 1.6-16.9 4.8-24.8L83 262.6c8.6-21.4 13-44.3 13-67.3c0-1.1 0-2.2 0-3.2z\"]\n};\nvar faDownToLine = {\n prefix: 'fas',\n iconName: 'down-to-line',\n icon: [384, 512, [\"arrow-alt-to-bottom\"], \"f34a\", \"M342.1 249.9L219.3 372.7c-7.2 7.2-17.1 11.3-27.3 11.3s-20.1-4.1-27.3-11.3L41.9 249.9c-6.4-6.4-9.9-15-9.9-24C32 207.2 47.2 192 65.9 192l62.1 0 0-128c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V192l62.1 0c18.7 0 33.9 15.2 33.9 33.9c0 9-3.6 17.6-9.9 24zM32 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faArrowAltToBottom = faDownToLine;\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M3.9 54.9C10.5 40.9 24.5 32 40 32H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9V448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6V320.9L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"]\n};\nvar faSquareG = {\n prefix: 'fas',\n iconName: 'square-g',\n icon: [448, 512, [], \"e271\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 224c0 44.2 35.8 80 80 80c35.8 0 66.1-23.5 76.3-56H248c-13.3 0-24-10.7-24-24s10.7-24 24-24h80c13.3 0 24 10.7 24 24c0 70.7-57.3 128-128 128s-128-57.3-128-128s57.3-128 128-128c32.8 0 62.7 12.3 85.3 32.6c9.9 8.8 10.7 24 1.9 33.9s-24 10.7-33.9 1.9C263.2 183.7 244.5 176 224 176c-44.2 0-80 35.8-80 80z\"]\n};\nvar faCirclePhone = {\n prefix: 'fas',\n iconName: 'circle-phone',\n icon: [512, 512, [\"phone-circle\"], \"e11b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM186.7 128.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L200 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C368.9 378 361 384 352 384c-123.7 0-224-100.3-224-224c0-9 6-16.9 14.7-19.3l44-12z\"]\n};\nvar faPhoneCircle = faCirclePhone;\nvar faClipboardPrescription = {\n prefix: 'fas',\n iconName: 'clipboard-prescription',\n icon: [384, 512, [], \"f5e8\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM104 196h72c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6H124v44c0 11-9 20-20 20s-20-9-20-20V296 216c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20H124v40h52z\"]\n};\nvar faUserNurseHair = {\n prefix: 'fas',\n iconName: 'user-nurse-hair',\n icon: [448, 512, [], \"e45d\", \"M96 70.2V128h.3c-.2 2.6-.3 5.3-.3 8v40c0 70.7 57.3 128 128 128s128-57.3 128-128V136c0-2.7-.1-5.4-.3-8h.3V70.2c0-13.3-8.3-25.3-20.8-30l-96-36c-7.2-2.7-15.2-2.7-22.5 0l-96 36C104.3 44.9 96 56.8 96 70.2zM304 160v16c0 44.2-35.8 80-80 80s-80-35.8-80-80l32 0c29.8 0 55.9-16.3 69.6-40.5C257.3 150.4 275.5 160 296 160h8zM141.3 336.2c-7.6-8.1-18.9-11.9-29.4-8.5C47 348.5 0 409.4 0 481.3c0 17 13.8 30.7 30.7 30.7H417.3c17 0 30.7-13.8 30.7-30.7c0-71.8-47-132.7-111.9-153.6c-10.5-3.4-21.8 .4-29.4 8.5l-71 75.5c-6.3 6.7-17 6.7-23.3 0l-71-75.5zM208 48c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8V64h16c4.4 0 8 3.6 8 8V88c0 4.4-3.6 8-8 8H240v16c0 4.4-3.6 8-8 8H216c-4.4 0-8-3.6-8-8V96H192c-4.4 0-8-3.6-8-8V72c0-4.4 3.6-8 8-8h16V48z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [320, 512, [10067, 10068, 61736], \"3f\", \"M80 160c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64v3.6c0 21.8-11.1 42.1-29.4 53.8l-42.2 27.1c-25.2 16.2-40.4 44.1-40.4 74V320c0 17.7 14.3 32 32 32s32-14.3 32-32v-1.4c0-8.2 4.2-15.8 11-20.2l42.2-27.1c36.6-23.6 58.8-64.1 58.8-107.7V160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm80 320a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V428.7c-2.7 1.1-5.4 2-8.2 2.7l-60.1 15c-3 .7-6 1.2-9 1.4c-.9 .1-1.8 .2-2.7 .2H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 381l-9.8 32.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.8 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8h8.9c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7L384 203.6V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM549.8 139.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 321c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 262.7l-71-71L311.9 321z\"]\n};\nvar faToggleLargeOn = {\n prefix: 'fas',\n iconName: 'toggle-large-on',\n icon: [576, 512, [], \"e5b1\", \"M192 64C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192s-86-192-192-192H192zm192 64a128 128 0 1 1 0 256 128 128 0 1 1 0-256z\"]\n};\nvar faUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'up-down-left-right',\n icon: [512, 512, [\"arrows-alt\"], \"f0b2\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32v96H128V192c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V288h96v96H192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H288V288h96v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H288V128h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faArrowsAlt = faUpDownLeftRight;\nvar faDryerHeat = {\n prefix: 'fas',\n iconName: 'dryer-heat',\n icon: [448, 512, [\"dryer-alt\"], \"f862\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 160a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM64 88a24 24 0 1 1 48 0A24 24 0 1 1 64 88zM184 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM156.7 212.7c-6.2 6.2-6.2 16.4 0 22.6L177.4 256c4.2 4.2 6.6 10 6.6 16s-2.4 11.8-6.6 16l-9.4 9.4c-10.2 10.2-16 24.1-16 38.6s5.8 28.4 16 38.6l20.7 20.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L190.6 352c-4.2-4.2-6.6-10-6.6-16s2.4-11.8 6.6-16l9.4-9.4c10.2-10.2 16-24.1 16-38.6s-5.8-28.4-16-38.6l-20.7-20.7c-6.2-6.2-16.4-6.2-22.6 0zm102.6 0c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L257.4 256c4.2 4.2 6.6 10 6.6 16s-2.4 11.8-6.6 16l-9.4 9.4c-10.2 10.2-16 24.1-16 38.6s5.8 28.4 16 38.6l20.7 20.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L270.6 352c-4.2-4.2-6.6-10-6.6-16s2.4-11.8 6.6-16l9.4-9.4c10.2-10.2 16-24.1 16-38.6s-5.8-28.4-16-38.6l-20.7-20.7z\"]\n};\nvar faDryerAlt = faDryerHeat;\nvar faHouseChimneyUser = {\n prefix: 'fas',\n iconName: 'house-chimney-user',\n icon: [576, 512, [], \"e065\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM288 160a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM176 400c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M148 76.6C148 34.3 182.3 0 224.6 0c20.3 0 39.8 8.1 54.1 22.4l9.3 9.3 9.3-9.3C311.6 8.1 331.1 0 351.4 0C393.7 0 428 34.3 428 76.6c0 20.3-8.1 39.8-22.4 54.1L302.1 234.1c-7.8 7.8-20.5 7.8-28.3 0L170.4 130.7C156.1 116.4 148 96.9 148 76.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faArrowUpSmallBig = {\n prefix: 'fas',\n iconName: 'arrow-up-small-big',\n icon: [576, 512, [\"sort-size-up-alt\"], \"f88f\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM320 80c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V80zm48 176H496c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48z\"]\n};\nvar faSortSizeUpAlt = faArrowUpSmallBig;\nvar faTrainTrack = {\n prefix: 'fas',\n iconName: 'train-track',\n icon: [576, 512, [], \"e453\", \"M222.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L147.6 96H112c-17.7 0-32 14.3-32 32s14.3 32 32 32h14.3l-21.3 64H72c-17.7 0-32 14.3-32 32s14.3 32 32 32H83.6L62.3 352H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h8.9l-7.3 21.9c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l14-42.1H467.6l14 42.1c5.6 16.8 23.7 25.8 40.5 20.2s25.8-23.7 20.2-40.5L535.1 416H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H513.7l-21.3-64H504c17.7 0 32-14.3 32-32s-14.3-32-32-32H471.1l-21.3-64H464c17.7 0 32-14.3 32-32s-14.3-32-32-32H428.4l-14-42.1c-5.6-16.8-23.7-25.8-40.5-20.2s-25.8 23.7-20.2 40.5L360.9 96H215.1l7.3-21.9zM193.7 160H382.3l21.3 64H172.4l21.3-64zM446.3 352H129.7l21.3-64H424.9l21.3 64z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [512, 512, [129513], \"f12e\", \"M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8v0c0 12.8 10.4 23.2 23.2 23.2H336c26.5 0 48 21.5 48 48v56.8c0 12.8 10.4 23.2 23.2 23.2v0c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2v0c-12.8 0-23.2 10.4-23.2 23.2V464c0 26.5-21.5 48-48 48H279.2c-12.8 0-23.2-10.4-23.2-23.2v0c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8v0c0 12.8-10.4 23.2-23.2 23.2H48c-26.5 0-48-21.5-48-48V343.2C0 330.4 10.4 320 23.2 320v0c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256v0C10.4 256 0 245.6 0 232.8V176c0-26.5 21.5-48 48-48H168.8c12.8 0 23.2-10.4 23.2-23.2v0z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [576, 512, [], \"f53c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm48 160H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 336c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zM376 160h80c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24H376c-13.3 0-24-10.7-24-24V184c0-13.3 10.7-24 24-24z\"]\n};\nvar faStarHalfStroke = {\n prefix: 'fas',\n iconName: 'star-half-stroke',\n icon: [640, 512, [\"star-half-alt\"], \"f5c0\", \"M320 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L320.1 86.9l-.1 .3V376.4zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L320.1 439.8 191.8 508.3C181 514 167.9 513.1 158 506s-14.9-19.3-12.9-31.3L169.8 329 65.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L227 150.3 291.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L470.5 329l24.6 145.7z\"]\n};\nvar faStarHalfAlt = faStarHalfStroke;\nvar faFileExclamation = {\n prefix: 'fas',\n iconName: 'file-exclamation',\n icon: [384, 512, [], \"f31a\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM192 192c13.3 0 24 10.7 24 24V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V216c0-13.3 10.7-24 24-24zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faWhiskeyGlass = {\n prefix: 'fas',\n iconName: 'whiskey-glass',\n icon: [512, 512, [129347, \"glass-whiskey\"], \"f7a0\", \"M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5h253c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32H32zM87.7 224L69 96H443L424.3 224H87.7z\"]\n};\nvar faGlassWhiskey = faWhiskeyGlass;\nvar faMoonStars = {\n prefix: 'fas',\n iconName: 'moon-stars',\n icon: [512, 512, [], \"f755\", \"M284.8 99.2l11 38.6c1 3.6 4.4 6.2 8.2 6.2s7.1-2.5 8.2-6.2l11-38.6 38.6-11c3.6-1 6.2-4.4 6.2-8.2s-2.5-7.1-6.2-8.2l-38.6-11-11-38.6c-1-3.6-4.4-6.2-8.2-6.2s-7.1 2.5-8.2 6.2l-11 38.6-38.6 11c-3.6 1-6.2 4.4-6.2 8.2s2.5 7.1 6.2 8.2l38.6 11zm119 211.6c1.6 5.5 6.6 9.2 12.2 9.2s10.7-3.8 12.2-9.2l16.6-58 58-16.6c5.5-1.6 9.2-6.6 9.2-12.2s-3.8-10.7-9.2-12.2l-58-16.6-16.6-58c-1.6-5.5-6.6-9.2-12.2-9.2s-10.7 3.8-12.2 9.2l-16.6 58-58 16.6c-5.5 1.6-9.2 6.6-9.2 12.2s3.8 10.7 9.2 12.2l58 16.6 16.6 58zM191.8 128C85.8 128 0 214.1 0 320.2S85.8 512.4 191.8 512.4c52 0 99.1-20.7 133.6-54.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-8.1 1.4-16.5 2.2-25.1 2.2c-80.7 0-146.2-65.6-146.2-146.6c0-54.8 30-102.6 74.4-127.8c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-5.4-.5-10.8-.7-16.3-.7z\"]\n};\nvar faBuildingCircleExclamation = {\n prefix: 'fas',\n iconName: 'building-circle-exclamation',\n icon: [640, 512, [], \"e4d3\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faClothesHanger = {\n prefix: 'fas',\n iconName: 'clothes-hanger',\n icon: [640, 512, [], \"e136\", \"M209.8 84.8C222.3 35 267.1 0 318.5 0H320c61.9 0 112 50.1 112 112v6.3c0 36.5-17.8 70.8-47.8 91.8l-8.3 5.8L608.2 377.2C628.1 391 640 413.7 640 438c0 40.9-33.1 74-74 74H74c-40.9 0-74-33.1-74-74c0-24.2 11.9-47 31.8-60.8L301.6 189.8l.1-.1 45.8-32c12.8-9 20.5-23.7 20.5-39.3V112c0-26.5-21.5-48-48-48h-1.5c-22 0-41.2 15-46.6 36.4l-.9 3.4c-4.3 17.1-21.7 27.6-38.8 23.3s-27.6-21.7-23.3-38.8l.9-3.4zM320 255L68.3 429.7c-2.7 1.9-4.3 4.9-4.3 8.2c0 5.5 4.5 10 10 10H566c5.5 0 10-4.5 10-10c0-3.3-1.6-6.4-4.3-8.2L320 255z\"]\n};\nvar faMobileNotch = {\n prefix: 'fas',\n iconName: 'mobile-notch',\n icon: [384, 512, [\"mobile-iphone\"], \"e1ee\", \"M128 64V80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V64h32c8.8 0 16 7.2 16 16V432c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h32zM96 0C51.8 0 16 35.8 16 80V432c0 44.2 35.8 80 80 80H288c44.2 0 80-35.8 80-80V80c0-44.2-35.8-80-80-80H96zm32 400c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H144c-8.8 0-16 7.2-16 16z\"]\n};\nvar faMobileIphone = faMobileNotch;\nvar faMagnifyingGlassChart = {\n prefix: 'fas',\n iconName: 'magnifying-glass-chart',\n icon: [512, 512, [], \"e522\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zm-312 8v64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96V280c0 13.3 10.7 24 24 24s24-10.7 24-24V120c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64v96c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faArrowUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'arrow-up-right-from-square',\n icon: [512, 512, [\"external-link\"], \"f08e\", \"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLink = faArrowUpRightFromSquare;\nvar faCubesStacked = {\n prefix: 'fas',\n iconName: 'cubes-stacked',\n icon: [448, 512, [], \"e4e6\", \"M192 64v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H224c-17.7 0-32 14.3-32 32zM82.7 207c-15.3 8.8-20.5 28.4-11.7 43.7l32 55.4c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-32-55.4c-8.8-15.3-28.4-20.5-43.7-11.7L82.7 207zM288 192c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H288zm64 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H352zM160 384v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zM32 352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faImagesUser = {\n prefix: 'fas',\n iconName: 'images-user',\n icon: [576, 512, [], \"e1b9\", \"M96 96V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zm240 0a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM269.7 256H402.3c25.2 0 45.7 20.5 45.7 45.7c0 10.1-8.2 18.3-18.3 18.3H242.3c-10.1 0-18.3-8.2-18.3-18.3c0-25.2 20.5-45.7 45.7-45.7zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [512, 512, [8361, \"krw\", \"won\"], \"f159\", \"M62.4 53.9C56.8 37.1 38.6 28.1 21.9 33.6S-3.9 57.4 1.6 74.1L51.6 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H72.9l56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288h46L321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l50-149.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L392.9 224H329L287 56.2C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L183 224h-64L62.4 53.9zm78 234.1H167l-11.4 45.6L140.4 288zM249 224l7-28.1 7 28.1H249zm96 64h26.6l-15.2 45.6L345 288z\"]\n};\nvar faKrw = faWonSign;\nvar faWon = faWonSign;\nvar faImagePolaroidUser = {\n prefix: 'fas',\n iconName: 'image-polaroid-user',\n icon: [448, 512, [], \"e1b6\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 32V320c0 17.7 14.3 32 32 32h16c0-35.3 28.7-64 64-64h96c35.3 0 64 28.7 64 64h16c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zm96 64a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faVirusCovid = {\n prefix: 'fas',\n iconName: 'virus-covid',\n icon: [512, 512, [], \"e4a8\", \"M192 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H280V81.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L420 125.9l-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3H464V216c0-13.3 10.7-24 24-24s24 10.7 24 24v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H430.4c-4.2 30.7-16.3 58.8-34.1 82.3L420 386.1l11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L386.1 420l-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1V464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V430.4c-30.7-4.2-58.8-16.3-82.3-34.1L125.9 420l11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L92 386.1l23.8-23.8C97.9 338.8 85.8 310.7 81.6 280H48v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V216c0-13.3 10.7-24 24-24s24 10.7 24 24v16H81.6c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92l23.8 23.8c23.5-17.9 51.7-29.9 82.3-34.1V48H216c-13.3 0-24-10.7-24-24zm48 200a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm64 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faSquareEllipsis = {\n prefix: 'fas',\n iconName: 'square-ellipsis',\n icon: [448, 512, [], \"e26e\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 256a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 256a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nvar faPie = {\n prefix: 'fas',\n iconName: 'pie',\n icon: [576, 512, [129383], \"f705\", \"M544 240c-7.6 0-14.3-4.9-17-12C490 132.1 397 64 288 64S86 132.1 49 228c-2.7 7.1-9.4 12-17 12c-17.7 0-32 14.3-32 32c0 17.2 13.6 31.3 30.7 32c17.7-.5 35-7 48.7-14.2c7-3.6 12.7-7.3 16.7-10c2-1.4 3.5-2.5 4.5-3.2c.5-.4 .9-.7 1.1-.8l.2-.2 0 0 20.7 .4 0 0 .2 .1c.2 .2 .5 .4 .9 .8c.9 .7 2.2 1.8 4.1 3.1c3.7 2.6 9.1 6.2 16.1 9.8c14 7.2 33.4 14.2 56.1 14.2s42.2-7 56.1-14.2c7-3.6 12.4-7.2 16.1-9.8c1.8-1.3 3.2-2.4 4.1-3.1c.4-.4 .7-.6 .9-.8l.1-.1c6.1-5.4 15.2-5.4 21.2 0l0 0 .1 .1c.2 .2 .5 .4 .9 .8c.9 .7 2.2 1.8 4.1 3.1c3.7 2.6 9.1 6.2 16.1 9.8c14 7.2 33.4 14.2 56.1 14.2s42.2-7 56.1-14.2c7-3.6 12.4-7.2 16.1-9.8c1.8-1.3 3.2-2.4 4.1-3.1c.4-.4 .7-.6 .9-.8l.1-.1c5.9-5.2 14.6-5.4 20.7-.4l0 0 0 0 0 0 0 0 0 0 0 0 .2 .2c.2 .2 .6 .5 1.1 .8c1 .7 2.5 1.9 4.5 3.2c4 2.7 9.7 6.4 16.7 10c13.7 7.2 31.1 13.7 48.7 14.2c17.1-.7 30.7-14.7 30.7-32c0-17.7-14.3-32-32-32zM122.6 276c-5.9-5.2-14.6-5.4-20.7-.4l0 0 20.7 .4s0 0 0 0zM81.4 404.2c8.7 26.1 33.2 43.8 60.7 43.8H433.9c27.5 0 52-17.6 60.7-43.8l24-71.9c-14.2-3.5-26.8-9-36.8-14.2c-7-3.7-12.9-7.3-17.5-10.3c-4.5 3.1-10.3 6.7-17.4 10.4C429.8 327 405.2 336 376 336s-53.8-9-70.8-17.8c-6.9-3.6-12.7-7.2-17.2-10.2c-4.5 3-10.2 6.6-17.2 10.2C253.8 327 229.2 336 200 336s-53.8-9-70.8-17.8c-7.1-3.6-12.9-7.3-17.4-10.4c-4.6 3-10.5 6.7-17.5 10.3c-10 5.2-22.7 10.7-36.8 14.2l24 71.9zM206.3 151.2l-16 32c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l16-32c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5zm192-14.3l16 32c4 7.9 .7 17.5-7.2 21.5s-17.5 .7-21.5-7.2l-16-32c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2zM304 144v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faChessKnightPiece = {\n prefix: 'fas',\n iconName: 'chess-knight-piece',\n icon: [320, 512, [\"chess-knight-alt\"], \"f442\", \"M57.6 102.4l-6.9 6.9c-12 12-18.7 28.3-18.7 45.3v81.2c0 10.7 5.3 20.7 14.2 26.6l3.5 2.4c12.7 8.5 29.1 9.5 42.8 2.7c2.3-1.1 4.5-2.5 6.5-4l38.8-29.1c5.5-4.1 13.1-4.1 18.6 0c8.2 6.1 8.3 18.4 .2 24.7L81 317c-20.8 16-33 40.7-33 67H272l26.9-107.6c3.4-13.6 5.1-27.5 5.1-41.5c0-94.4-76.5-171-171-171H47.8C39.1 64 32 71.1 32 79.8c0 6 3.4 11.5 8.7 14.2l16.9 8.4zm19.2 54.4a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM48 416L4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24H296c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L272 416H48z\"]\n};\nvar faChessKnightAlt = faChessKnightPiece;\nvar faAustralSign = {\n prefix: 'fas',\n iconName: 'austral-sign',\n icon: [448, 512, [], \"e0a9\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7L122.7 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96L82.7 320H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H56L34.5 435.7c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384H322.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8L392 384h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H365.3L352 288h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H325.3L253.5 51.7zM256 224H192l32-76.8L256 224zm-90.7 64H282.7L296 320H152l13.3-32z\"]\n};\nvar faCloudPlus = {\n prefix: 'fas',\n iconName: 'cloud-plus',\n icon: [640, 512, [], \"e35e\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zM296 376c0 13.3 10.7 24 24 24s24-10.7 24-24V312h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V200c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H232c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faF = {\n prefix: 'fas',\n iconName: 'f',\n icon: [320, 512, [102], \"46\", \"M64 32C28.7 32 0 60.7 0 96V256 448c0 17.7 14.3 32 32 32s32-14.3 32-32V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [512, 512, [], \"f06c\", \"M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5h88c8.8 0 16 7.2 16 16s-7.2 16-16 16H288 216s0 0 0 0c-16.6 0-32.7 1.9-48.2 5.4c-25.9 5.9-50 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440v16c0 13.3 10.7 24 24 24s24-10.7 24-24V440c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z\"]\n};\nvar faBedBunk = {\n prefix: 'fas',\n iconName: 'bed-bunk',\n icon: [576, 512, [], \"f8f8\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V448H256 512v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448 416 288 256 192 160 112C576 50.1 525.9 0 464 0H256c-17.7 0-32 14.3-32 32v96H64V32zM512 256H256c-17.7 0-32 14.3-32 32v96H64V192H256 512v64zM192 304a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM144 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [128739], \"f018\", \"M256 32H181.2c-27.1 0-51.3 17.1-60.3 42.6L3.1 407.2C1.1 413 0 419.2 0 425.4C0 455.5 24.5 480 54.6 480H256V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64H521.4c30.2 0 54.6-24.5 54.6-54.6c0-6.2-1.1-12.4-3.1-18.2L455.1 74.6C446 49.1 421.9 32 394.8 32H320V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [128662, \"cab\"], \"f1ba\", \"M192 0c-17.7 0-32 14.3-32 32V64c0 .1 0 .1 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288V432v48c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V432H416v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V432 288c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1c0-.1 0-.1 0-.2V32c0-17.7-14.3-32-32-32H192zM165.4 128H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 224H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 288a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCab = faTaxi;\nvar faPersonCirclePlus = {\n prefix: 'fas',\n iconName: 'person-circle-plus',\n icon: [576, 512, [], \"e541\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [576, 512, [\"pie-chart\"], \"f200\", \"M304 240V16.6c0-9 7-16.6 16-16.6C443.7 0 544 100.3 544 224c0 9-7.6 16-16.6 16H304zM32 272C32 150.7 122.1 50.3 239 34.3c9.2-1.3 17 6.1 17 15.4V288L412.5 444.5c6.7 6.7 6.2 17.7-1.5 23.1C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zm526.4 16c9.3 0 16.6 7.8 15.4 17c-7.7 55.9-34.6 105.6-73.9 142.3c-6 5.6-15.4 5.2-21.2-.7L320 288H558.4z\"]\n};\nvar faPieChart = faChartPie;\nvar faBoltLightning = {\n prefix: 'fas',\n iconName: 'bolt-lightning',\n icon: [384, 512, [], \"e0b7\", \"M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faClockEight = {\n prefix: 'fas',\n iconName: 'clock-eight',\n icon: [512, 512, [], \"e345\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm24-392V256c0 8-4 15.5-10.7 20l-96 64c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3L232 243.2V120c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faSackXmark = {\n prefix: 'fas',\n iconName: 'sack-xmark',\n icon: [512, 512, [], \"e56a\", \"M192 96H320l47.4-71.1C374.5 14.2 366.9 0 354.1 0H157.9c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32H192c-3.8 2.5-8.1 5.3-13 8.4l0 0 0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96H416c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4zM289.9 336l47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z\"]\n};\nvar faFishFins = {\n prefix: 'fas',\n iconName: 'fish-fins',\n icon: [576, 512, [], \"e4f2\", \"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5c-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.7 4.9S-3 163.3 4.2 175.9L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.7 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3c15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8c39.2-29.4 67.2-64.7 81.6-89.5c5.8-9.9 5.8-22.2 0-32.1c-14.4-24.8-42.5-60.1-81.6-89.5c-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM384 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCircleQ = {\n prefix: 'fas',\n iconName: 'circle-q',\n icon: [512, 512, [], \"e11e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176 256c0 44.2 35.8 80 80 80c13.4 0 25.9-3.3 37-9.1l-30-30c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l30 30c5.8-11.1 9.1-23.7 9.1-37c0-44.2-35.8-80-80-80s-80 35.8-80 80zm208 0c0 26.7-8.2 51.4-22.1 71.9L377 343c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15.1-15.1c-20.5 14-45.3 22.1-71.9 22.1c-70.7 0-128-57.3-128-128s57.3-128 128-128s128 57.3 128 128z\"]\n};\nvar faBuildingFlag = {\n prefix: 'fas',\n iconName: 'building-flag',\n icon: [640, 512, [], \"e4d5\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM448 0c-17.7 0-32 14.3-32 32V512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H480c0-17.7-14.3-32-32-32z\"]\n};\nvar faFaceGrinBeam = {\n prefix: 'fas',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-170.5-84l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faGrinBeam = faFaceGrinBeam;\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H328.6C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V232.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4V232.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4H119.4zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V352h64v40.6c9.7 5.6 17.8 13.7 23.4 23.4H520.6c5.6-9.7 13.7-17.8 23.4-23.4V279.4c-9.7-5.6-17.8-13.7-23.4-23.4h-46c-5.4-15.4-14.6-28.9-26.5-39.6V192h72.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H311.4z\"]\n};\nvar faFaceDisguise = {\n prefix: 'fas',\n iconName: 'face-disguise',\n icon: [512, 512, [], \"e370\", \"M256 512c141.4 0 256-114.6 256-256c0-16.4-1.5-32.5-4.5-48H440c0 50.1-38.4 91.2-87.3 95.6c9.6 7.9 15.3 19.7 15.3 32.4c0 15.9-9 30.4-23.1 37.5L364.5 398c5.5 6.9 4.4 17-2.5 22.5s-17 4.4-22.5-2.5l-23.9-29.9-7.3 3.6 10.5 26.3c3.3 8.2-.7 17.5-8.9 20.8s-17.5-.7-20.8-8.9l-10-24.9c-2.4 .7-4.8 1.3-7.2 1.8V432c0 8.8-7.2 16-16 16s-16-7.2-16-16V406.8c-2.4-.5-4.8-1.1-7.2-1.8l-10 24.9c-3.3 8.2-12.6 12.2-20.8 8.9s-12.2-12.6-8.9-20.8l10.5-26.3-7.3-3.6L172.5 418c-5.5 6.9-15.6 8-22.5 2.5s-8-15.6-2.5-22.5l19.6-24.5C153 366.4 144 351.9 144 336c0-12.7 5.7-24.5 15.3-32.4C110.4 299.2 72 258.1 72 208H4.5C1.5 223.5 0 239.6 0 256C0 397.4 114.6 512 256 512zm61.9-245.5c7.9 3.5 16.8 5.5 26.1 5.5c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64c0 2.5 .1 4.9 .4 7.3c5.4 3.6 10.1 8.4 13.5 14.1l21.4 35.7c1.1 .6 1.9 1 2.6 1.3zM232 208c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64c9.3 0 18.1-2 26.1-5.5c.6-.3 1.5-.7 2.6-1.3L218 229.5c3.5-5.8 8.1-10.6 13.5-14.1c.3-2.4 .4-4.9 .4-7.3zM12.7 176H77.5c5.3-14.9 14.1-28 25.4-38.5l-5.2-10.3c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l3.5 7c4.6-2 9.3-3.6 14.2-4.9V96c0-8.8 7.2-16 16-16s16 7.2 16 16v16.3c4.4 .4 8.7 1 13 2l4.7-9.5c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-3.6 7.3c16.4 10.2 29.5 25.3 37.3 43.1c7.8-17.9 20.9-32.9 37.3-43.1l-3.6-7.3c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l4.7 9.5c4.2-.9 8.6-1.6 13-2V96c0-8.8 7.2-16 16-16s16 7.2 16 16v19c4.9 1.3 9.6 2.9 14.2 4.9l3.5-7c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-5.2 10.3c11.3 10.5 20.1 23.7 25.4 38.5h64.7C465.7 73.8 369.4 0 256 0S46.3 73.8 12.7 176zM256 240c-4.3 0-8.3 2.3-10.5 6l-39.8 66.3-2.4 4-4.2 2.1-17.7 8.8c-3.4 1.7-5.5 5.1-5.5 8.8s2.1 7.2 5.5 8.8l53.1 26.5c13.5 6.8 29.4 6.8 42.9 0l53.1-26.5c3.4-1.7 5.5-5.1 5.5-8.8s-2.1-7.2-5.5-8.8l-17.7-8.8-4.2-2.1-2.4-4L266.5 246c-2.2-3.7-6.2-6-10.5-6zM144 216a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm200-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faCircleArrowDownRight = {\n prefix: 'fas',\n iconName: 'circle-arrow-down-right',\n icon: [512, 512, [], \"e0fa\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM192 368c-13.3 0-24-10.7-24-24s10.7-24 24-24h94.1L151 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l135 135V184c0-13.3 10.7-24 24-24s24 10.7 24 24V344c0 13.3-10.7 24-24 24H192z\"]\n};\nvar faAlien8bit = {\n prefix: 'fas',\n iconName: 'alien-8bit',\n icon: [640, 512, [128126, \"alien-monster\"], \"f8f6\", \"M128 48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16V64h48c8.8 0 16 7.2 16 16v48H384V80c0-8.8 7.2-16 16-16h48V48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H448v32 32h48c8.8 0 16 7.2 16 16v48h32V144c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16V272c0 8.8-7.2 16-16 16H544v80c0 8.8-7.2 16-16 16H480v80c0 8.8-7.2 16-16 16H416 368c-8.8 0-16-7.2-16-16V432c0-8.8 7.2-16 16-16h48V384H224v32h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H224 176c-8.8 0-16-7.2-16-16V384H112c-8.8 0-16-7.2-16-16V288H48c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v80h32V176c0-8.8 7.2-16 16-16h48V128 96H144c-8.8 0-16-7.2-16-16V48zm64 192v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm192 0v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H400c-8.8 0-16 7.2-16 16z\"]\n};\nvar faAlienMonster = faAlien8bit;\nvar faHandPointRibbon = {\n prefix: 'fas',\n iconName: 'hand-point-ribbon',\n icon: [448, 512, [], \"e1a6\", \"M64 32C64 14.3 78.3 0 96 0s32 14.3 32 32h16c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H11.8C5.3 128 0 122.7 0 116.2c0-3.9 1.9-7.5 5.1-9.7L43.6 80 5.1 53.5C1.9 51.3 0 47.7 0 43.8C0 37.3 5.3 32 11.8 32L64 32zm0 208V160h64v80H64zm192-48c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192zm-64-64c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H194.3c-42.4 0-83.1-16.9-113.1-46.9L69.5 453.5C45.5 429.5 32 396.9 32 363V336c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H128c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7C315.8 7.2 352 47.4 352 96c0 11.2-1.9 22-5.5 32H352c35.3 0 64 28.7 64 64c0 19.1-8.4 36.3-21.7 48H408c39.8 0 72 32.2 72 72c0 23.2-11 43.8-28 57c34.1 5.7 60 35.3 60 71c0 39.8-32.2 72-72 72H72c-39.8 0-72-32.2-72-72c0-35.7 25.9-65.3 60-71c-17-13.2-28-33.8-28-57c0-39.8 32.2-72 72-72h13.7C104.4 228.3 96 211.1 96 192c0-35.3 28.7-64 64-64h16.2c44.1-.1 79.8-35.9 79.8-80c0-9.2-1.5-17.9-4.3-26.1c-1.8-5.2-.8-11.1 2.8-15.4z\"]\n};\nvar faObjectExclude = {\n prefix: 'fas',\n iconName: 'object-exclude',\n icon: [512, 512, [], \"e49c\", \"M0 64C0 28.7 28.7 0 64 0H288c35.3 0 64 28.7 64 64v96h96c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64V352H64c-35.3 0-64-28.7-64-64V64zM320 192H192V320H320V192z\"]\n};\nvar faTelescope = {\n prefix: 'fas',\n iconName: 'telescope',\n icon: [576, 512, [128301], \"e03e\", \"M375.7 40c-15.3 8.8-20.6 28.4-11.7 43.7L460 250c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-96-166.3C466 4.4 446.4-.8 431.1 8L375.7 40zM11.8 343.6C.4 350.3-3.6 364.9 3.1 376.4l25.9 44.9c6.6 11.5 21.3 15.4 32.8 8.8l44.1-25.5 .8 1.4c8.6 15 27.6 20.4 42.8 12.2l88.4-47.4L193.8 478.9c-5 12.3 .9 26.3 13.2 31.3s26.3-.9 31.3-13.2L304 335.6l65.8 161.4c5 12.3 19 18.2 31.3 13.2s18.2-19 13.2-31.3L346.4 312.5l86.1-46.2-.2-.3-96-166.3c-1-1.8-2-3.6-2.8-5.4L62.4 268.4c-14.4 9.2-19 28.1-10.4 42.9l4 6.9L11.8 343.6z\"]\n};\nvar faLocationPin = {\n prefix: 'fas',\n iconName: 'location-pin',\n icon: [384, 512, [\"map-marker\"], \"f041\", \"M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z\"]\n};\nvar faMapMarker = faLocationPin;\nvar faSquareList = {\n prefix: 'fas',\n iconName: 'square-list',\n icon: [448, 512, [], \"e489\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24H352c13.3 0 24-10.7 24-24s-10.7-24-24-24H192zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H352c13.3 0 24-10.7 24-24s-10.7-24-24-24H192zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H352c13.3 0 24-10.7 24-24s-10.7-24-24-24H192z\"]\n};\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [128331], \"f66b\", \"M60 120l228 71.2L516 120 288 48.8 60 120zM278.5 1.5c6.2-1.9 12.9-1.9 19.1 0l256 80C566.9 85.6 576 98 576 112v16 0 21.2L292.8 237.7c-3.1 1-6.4 1-9.5 0L0 149.2V128 112C0 98 9.1 85.6 22.5 81.5l256-80zm23.9 266.8L576 182.8v46.5l-52.8 16.5c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5L576 262.8V400c0 14-9.1 26.4-22.5 30.5l-256 80c-6.2 1.9-12.9 1.9-19.1 0l-256-80C9.1 426.4 0 414 0 400V262.8l43.2 13.5c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20L0 229.2V182.8l273.7 85.5c9.3 2.9 19.3 2.9 28.6 0zm-185.5-2.6c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l64 20c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20l-64-20zm352 30.5c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-64 20c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5l64-20zm-224 9.5c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l38.5 12c9.3 2.9 19.3 2.9 28.6 0l38.5-12c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-38.5 12c-3.1 1-6.4 1-9.5 0l-38.5-12z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [640, 512, [129531], \"f71e\", \"M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1H48c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0H444.2zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM144 208a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm64 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faHelmetSafety = {\n prefix: 'fas',\n iconName: 'helmet-safety',\n icon: [576, 512, [\"hard-hat\", \"hat-hard\"], \"f807\", \"M256 32c-17.7 0-32 14.3-32 32v2.3 99.6c0 5.6-4.5 10.1-10.1 10.1c-3.6 0-7-1.9-8.8-5.1L157.1 87C83 123.5 32 199.8 32 288v64H544l0-66.4c-.9-87.2-51.7-162.4-125.1-198.6l-48 83.9c-1.8 3.2-5.2 5.1-8.8 5.1c-5.6 0-10.1-4.5-10.1-10.1V66.3 64c0-17.7-14.3-32-32-32H256zM16.6 384C7.4 384 0 391.4 0 400.6c0 4.7 2 9.2 5.8 11.9C27.5 428.4 111.8 480 288 480s260.5-51.6 282.2-67.5c3.8-2.8 5.8-7.2 5.8-11.9c0-9.2-7.4-16.6-16.6-16.6H16.6z\"]\n};\nvar faHardHat = faHelmetSafety;\nvar faHatHard = faHelmetSafety;\nvar faCommentCode = {\n prefix: 'fas',\n iconName: 'comment-code',\n icon: [512, 512, [], \"e147\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM217 193l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM329 159l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSimCards = {\n prefix: 'fas',\n iconName: 'sim-cards',\n icon: [448, 512, [], \"e251\", \"M160 0C124.7 0 96 28.7 96 64V352c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V141.3c0-17-6.7-33.3-18.7-45.3L352 18.7C340 6.7 323.7 0 306.7 0H160zm48 144v48H160V176c0-17.7 14.3-32 32-32h16zm-48 80h64 96 64v48H320 224 160V224zm224-32H336V144h16c17.7 0 32 14.3 32 32v16zm-80-48v48H240V144h64zm80 160v16c0 17.7-14.3 32-32 32H336V304h48zm-80 48H240V304h64v48zm-96 0H192c-17.7 0-32-14.3-32-32V304h48v48zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V376c0 75.1 60.9 136 136 136H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faStarship = {\n prefix: 'fas',\n iconName: 'starship',\n icon: [640, 512, [], \"e039\", \"M448 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm0 256a192 192 0 1 0 0-384 192 192 0 1 0 0 384zm32-192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM188.9 205.4L137 160h71c17.7 0 32-14.3 32-32s-14.3-32-32-32H32C14.3 96 0 110.3 0 128s14.3 32 32 32H64.1l65.5 57.3-2.2 .4C109.1 221.4 96 237.4 96 256s13.1 34.6 31.4 38.3l2.2 .4L64.1 352H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H208c17.7 0 32-14.3 32-32s-14.3-32-32-32H137l51.9-45.4 43 8.6c-5.2-18.9-7.9-38.7-7.9-59.2s2.7-40.3 7.9-59.2l-43 8.6z\"]\n};\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [9167], \"f052\", \"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320H48c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48s-21.5 48-48 48H48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faCircleRight = {\n prefix: 'fas',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 135.1l99.9 107.1c3.5 3.8 5.5 8.7 5.5 13.8s-2 10.1-5.5 13.8L294.6 376.9c-4.2 4.5-10.1 7.1-16.3 7.1C266 384 256 374 256 361.7l0-57.7-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-57.7c0-12.3 10-22.3 22.3-22.3c6.2 0 12.1 2.6 16.3 7.1z\"]\n};\nvar faArrowAltCircleRight = faCircleRight;\nvar faPlaneCircleCheck = {\n prefix: 'fas',\n iconName: 'plane-circle-check',\n icon: [640, 512, [], \"e555\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faSeal = {\n prefix: 'fas',\n iconName: 'seal',\n icon: [512, 512, [], \"e241\", \"M289.9 18.4c-18.7-18.7-49.1-18.7-67.9 0L176.5 64H112c-26.5 0-48 21.5-48 48v64.5L18.4 222.1c-18.7 18.7-18.7 49.1 0 67.9L64 335.5V400c0 26.5 21.5 48 48 48h64.5l45.6 45.6c18.7 18.7 49.1 18.7 67.9 0L335.5 448H400c26.5 0 48-21.5 48-48V335.5l45.6-45.6c18.7-18.7 18.7-49.1 0-67.9L448 176.5V112c0-26.5-21.5-48-48-48H335.5L289.9 18.4z\"]\n};\nvar faUserCowboy = {\n prefix: 'fas',\n iconName: 'user-cowboy',\n icon: [448, 512, [], \"f8ea\", \"M224 16c6.7 0 10.8-2.8 15.5-6.1C246.1 5.4 254 0 272 0c35.2 0 58.3 58.1 72 110.4C316.4 120 277 128 224 128s-92.4-8-120-17.6C117.7 58.1 140.8 0 176 0c18 0 25.9 5.4 32.5 9.9c4.8 3.3 8.8 6.1 15.5 6.1zM8.6 97.8c7-3.6 15.5-1.7 20.2 4.6c5.6 7.5 22.7 22 55 34.7C115.8 149.6 161.8 160 224 160s108.2-10.4 140.2-22.9c32.4-12.7 49.4-27.2 55-34.7c4.7-6.3 13.3-8.2 20.2-4.6s10.2 11.8 7.8 19.2c-9.3 27.9-35 62.4-72.5 89.9c-7.1 5.2-14.7 10.1-22.7 14.8c0 .8 0 1.5 0 2.3c0 70.7-57.3 128-128 128s-128-57.3-128-128c0-.8 0-1.5 0-2.3c-8-4.6-15.6-9.6-22.7-14.8C35.8 179.5 10.1 145 .8 117.1c-2.5-7.4 .8-15.6 7.8-19.2zM100.7 384H347.3c48.4 0 89.3 36.1 95.3 84.1l1 7.9c2.4 19.1-12.5 36-31.8 36H36.2C17 512 2.1 495.1 4.5 476l1-7.9c6-48 46.8-84.1 95.3-84.1z\"]\n};\nvar faHexagonVerticalNft = {\n prefix: 'fas',\n iconName: 'hexagon-vertical-nft',\n icon: [448, 512, [], \"e505\", \"M260.9 495.5c-22.3 12.9-49.7 12.9-72 0L36 407.2C13.7 394.4 0 370.6 0 344.9V168.3c0-25.7 13.7-49.5 36-62.4L188.9 17.7c22.3-12.9 49.7-12.9 72 0l152.9 88.3c22.3 12.9 36 36.6 36 62.4V344.9c0 25.7-13.7 49.5-36 62.4L260.9 495.5zM95.8 170.6c-2.8-7.1-10.3-11.2-17.9-9.8s-13 8-13 15.7v160c0 8.8 7.2 16 16 16s16-7.2 16-16V259.7l33.1 82.9c2.8 7.1 10.3 11.2 17.9 9.8s13-8 13-15.7v-160c0-8.8-7.2-16-16-16s-16 7.2-16 16v76.9L95.8 170.6zm97.1 5.9v80 80c0 8.8 7.2 16 16 16s16-7.2 16-16v-64h32c8.8 0 16-7.2 16-16s-7.2-16-16-16h-32v-48h32c8.8 0 16-7.2 16-16s-7.2-16-16-16h-48c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16s7.2 16 16 16h16v144c0 8.8 7.2 16 16 16s16-7.2 16-16v-144h16c8.8 0 16-7.2 16-16s-7.2-16-16-16h-64z\"]\n};\nvar faFaceRollingEyes = {\n prefix: 'fas',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 368H320c8.8 0 16 7.2 16 16s-7.2 16-16 16H192c-8.8 0-16-7.2-16-16s7.2-16 16-16zm32-144c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C208.5 175.6 224 198 224 224zm128 64c-35.3 0-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C400.5 175.6 416 198 416 224c0 35.3-28.7 64-64 64z\"]\n};\nvar faMehRollingEyes = faFaceRollingEyes;\nvar faBreadLoaf = {\n prefix: 'fas',\n iconName: 'bread-loaf',\n icon: [640, 512, [127838], \"f7eb\", \"M0 192C0 64 176 32 240 32s240 32 240 160c0 35.3-28.7 64-64 64V432c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V256c-35.3 0-64-28.7-64-64zM397.4 34.9c-2-.9-4.1-1.9-6.2-2.8c3.1-.1 6-.2 8.8-.2c64 0 240 32 240 160c0 35.3-28.7 64-64 64V432c0 26.5-21.5 48-48 48H432c10-13.4 16-30 16-48V282.5c37.3-13.2 64-48.7 64-90.5c0-82.2-57.6-130.7-114.6-157.1z\"]\n};\nvar faRingsWedding = {\n prefix: 'fas',\n iconName: 'rings-wedding',\n icon: [512, 512, [], \"f81b\", \"M113.7 8.8C116.4 3.4 121.9 0 128 0h96c6.1 0 11.6 3.4 14.3 8.8l16 32c2.3 4.5 2.3 9.8 0 14.3l-24.6 49.2C300.6 127.1 352 193.5 352 272c0 52.3-22.8 99.2-59 131.5c-18.7-11.9-32.1-31.5-35.9-54.2C276.2 329.2 288 302 288 272c0-12-1.9-23.6-5.4-34.5c-34.9 19-58.6 56-58.6 98.5c0 61.9 50.1 112 112 112s112-50.1 112-112c0-46.1-27.8-85.7-67.6-102.9c-5-26.2-14.8-50.7-28.6-72.4C441.6 168.7 512 244.1 512 336c0 97.2-78.8 176-176 176c-55.3 0-104.7-25.5-137-65.5c-7.5 1-15.2 1.5-23 1.5C78.8 448 0 369.2 0 272c0-78.5 51.4-144.9 122.3-167.7L97.7 55.2c-2.3-4.5-2.3-9.8 0-14.3l16-32zM176 160c-61.9 0-112 50.1-112 112c0 58.7 45.1 106.8 102.5 111.6c-4.2-15.1-6.5-31.1-6.5-47.6c0-64.4 34.5-120.7 86.1-151.3C226.9 169.2 202.5 160 176 160z\"]\n};\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H456.6C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM456.6 96H119.4c-5.6 9.7-13.7 17.8-23.4 23.4V392.6c9.7 5.6 17.8 13.7 23.4 23.4H456.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z\"]\n};\nvar faFrenchFries = {\n prefix: 'fas',\n iconName: 'french-fries',\n icon: [384, 512, [127839], \"f803\", \"M183.2 1.7c-5-2.5-10.8-2.2-15.6 .7S160 10.5 160 16V206.7l0 0v63.2c9.2 1.4 19.8 2.2 32 2.2s22.8-.8 32-2.2V31.8c-.1-6-3.5-11.4-8.8-14.1l-32-16zM128 14.7l-.2-1.3c-.8-5-4-9.3-8.5-11.6s-9.9-2.3-14.4-.1l-32 16c-6.3 3.1-9.8 10-8.6 16.9l32 192c.5 1.2 .9 2.3 1.2 3.4c2 6.3 6.7 15.9 18.7 24.3c3.2 2.2 7.1 4.5 11.8 6.6V14.7zM40.3 85.6L19.9 80.5c-5.3-1.3-10.8 .1-14.8 3.8S-.7 93.4 .2 98.8l16.5 93.4c1.6-.1 3.1-.2 4.7-.2H48c3.6 0 7 .4 10.2 1L40.3 85.6zM383.8 98.8c.9-5.3-.9-10.8-4.8-14.5s-9.5-5.1-14.8-3.8L346.2 85l-19 107.8c2.8-.5 5.7-.8 8.8-.8h26.6c1.6 0 3.2 .1 4.7 .2l16.5-93.4zm-64-48c.9-5.3-.9-10.8-4.8-14.5s-9.5-5.1-14.8-3.8l-32 8C262 42 257.3 47 256.2 53.2l-.2 1.4V261c4.8-2.1 8.7-4.4 11.8-6.6c12-8.4 16.7-18 18.7-24.3c.7-2.3 1.7-4.7 2.8-7L319.8 50.8zM.6 250.5l57.5 237C61.5 501.9 74.4 512 89.2 512H294.8c14.8 0 27.6-10.1 31.1-24.5l57.5-237c.4-1.7 .6-3.3 .6-5.1c0-11.8-9.6-21.4-21.4-21.4H336c-8.8 0-16.3 7.2-18.9 15.7C309.7 263 283.7 304 192 304s-117.7-41-125.1-64.3C64.3 231.2 56.8 224 48 224H21.4C9.6 224 0 233.6 0 245.4c0 1.7 .2 3.4 .6 5.1z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [\"line-chart\"], \"f201\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLineChart = faChartLine;\nvar faCalendarArrowDown = {\n prefix: 'fas',\n iconName: 'calendar-arrow-down',\n icon: [448, 512, [\"calendar-download\"], \"e0d0\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm248 72c0-13.3-10.7-24-24-24s-24 10.7-24 24V366.1l-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39V264z\"]\n};\nvar faCalendarDownload = faCalendarArrowDown;\nvar faSendBack = {\n prefix: 'fas',\n iconName: 'send-back',\n icon: [640, 512, [], \"f87e\", \"M192 64V192H64V64H192zM64 0C28.7 0 0 28.7 0 64V192c0 35.3 28.7 64 64 64H192c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM576 320V448H448V320H576zM448 256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H448zM160 288v64c0 35.3 28.7 64 64 64H352V320c0-53 43-96 96-96h32V160c0-35.3-28.7-64-64-64H288v96c0 53-43 96-96 96H160z\"]\n};\nvar faMaskVentilator = {\n prefix: 'fas',\n iconName: 'mask-ventilator',\n icon: [640, 512, [], \"e524\", \"M159.1 176C139.4 219.2 128 264.7 128 300.8c0 15.9 2.2 31.4 6.3 46l-31.8-7.9C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H159.1zm26-48H56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l71.3 17.8c22.7 30.5 55.4 54.1 93.8 66.6V393.3c-19.7-16.4-32-40.3-32-66.9c0-49.5 43-134.4 96-134.4c52.5 0 96 84.9 96 134.4c0 26.7-12.4 50.4-32 66.8v76.6c38-12.6 70.6-36 93.5-66.4l71.6-17.9C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H454.5C419.7 73.8 372.1 32 320 32c-52.6 0-100.2 41.8-134.9 96zm295.6 48H584c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9l-31.8 8c4.2-14.7 6.4-30.1 6.4-46.1c0-36.1-11.6-81.6-31.3-124.8zM288 320V512h64V320c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faSignatureLock = {\n prefix: 'fas',\n iconName: 'signature-lock',\n icon: [640, 512, [], \"e3ca\", \"M96 128c0-17.7 14.3-32 32-32s32 14.3 32 32v7.8c0 27.7-2.4 55.3-7.1 82.5L68.4 243.7C27.8 255.8 0 293.2 0 335.6v71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3h72.6c5.6-9.7 13.7-17.8 23.4-23.4V272c0-5.4 .4-10.8 1.1-16H364.4l18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L220.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3V128c0-53-43-96-96-96s-96 43-96 96v32c0 17.7 14.3 32 32 32s32-14.3 32-32V128zM209.9 368c-6.7 16.3-14.2 32.3-22.3 48H384V368H209.9zM86.8 305l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2L79.9 411.7c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5V335.6c0-14.1 9.3-26.6 22.8-30.7zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [8594], \"f061\", \"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"]\n};\nvar faSignsPost = {\n prefix: 'fas',\n iconName: 'signs-post',\n icon: [512, 512, [\"map-signs\"], \"f277\", \"M224 32H64C46.3 32 32 46.3 32 64v64c0 17.7 14.3 32 32 32H441.4c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7H288c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 256c0-17.7-14.3-32-32-32H288V192H224v32H70.6c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7H448c17.7 0 32-14.3 32-32V256zM288 480V384H224v96c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMapSigns = faSignsPost;\nvar faOctagonPlus = {\n prefix: 'fas',\n iconName: 'octagon-plus',\n icon: [512, 512, [\"plus-octagon\"], \"f301\", \"M140.6 21.2C154.1 7.7 172.4 .1 191.5 .1h129c19.1 0 37.4 7.6 50.9 21.1L490.8 140.6c13.5 13.5 21.1 31.8 21.1 50.9v129c0 19.1-7.6 37.4-21.1 50.9L371.4 490.8c-13.5 13.5-31.8 21.1-50.9 21.1h-129c-19.1 0-37.4-7.6-50.9-21.1L21.2 371.4C7.7 357.9 .1 339.6 .1 320.5v-129c0-19.1 7.6-37.4 21.1-50.9L140.6 21.2zM232 344c0 13.3 10.7 24 24 24s24-10.7 24-24V280h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V168c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faPlusOctagon = faOctagonPlus;\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M64 0C46.3 0 32 14.3 32 32V96c0 17.7 14.3 32 32 32h80v32H87c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V378.4c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160H208V128h80c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H64zM96 48H256c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 432c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm48-168a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm120-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM160 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM328 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM256 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM424 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM352 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48z\"]\n};\nvar faPersonCircleQuestion = {\n prefix: 'fas',\n iconName: 'person-circle-question',\n icon: [576, 512, [], \"e542\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faMelonSlice = {\n prefix: 'fas',\n iconName: 'melon-slice',\n icon: [512, 512, [], \"e311\", \"M41 391c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c115.6 115.6 302.6 116 418.3 .3S540.5 122.6 425 7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c96.9 96.9 97.1 253.6 .3 350.4S137.9 487.9 41 391zM320 128c0 106-86 192-192 192c-11.4 0-22.5-1-33.3-2.9c-5.4-.9-11 .6-14.8 4.5L59.3 342.2c-6.2 6.2-6.2 16.4 0 22.6l4 4c84.4 84.4 221.1 84.4 305.5 0c84.2-84.2 84.4-220.7 .3-305.1l-4.3-4.3c-6.2-6.2-16.4-6.2-22.6 0L321.6 79.8c-3.9 3.9-5.4 9.4-4.5 14.8c1.9 10.8 2.9 22 2.9 33.3z\"]\n};\nvar faSpaceStationMoon = {\n prefix: 'fas',\n iconName: 'space-station-moon',\n icon: [512, 512, [], \"e033\", \"M512 256c0 7.8-.3 15.5-1 23.1C438.8 304.7 351.2 320 256 320s-182.8-15.3-255-40.9c-.7-7.6-1-15.3-1-23.1C0 114.6 114.6 0 256 0S512 114.6 512 256zM256 512C134.9 512 33.4 427.9 6.8 314.8C79.4 338.4 164.7 352 256 352s176.6-13.6 249.2-37.2C478.6 427.9 377.1 512 256 512zM160 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm112 0a80 80 0 1 0 -160 0 80 80 0 1 0 160 0z\"]\n};\nvar faMessageSmile = {\n prefix: 'fas',\n iconName: 'message-smile',\n icon: [512, 512, [\"comment-alt-smile\"], \"f4aa\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zM192 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM150.5 238.1c-9.9 8.8-10.7 24-1.9 33.9c26.3 29.4 64.7 48 107.3 48s81-18.6 107.3-48c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-17.6 19.7-43.1 32-71.6 32s-53.9-12.3-71.6-32c-8.8-9.9-24-10.7-33.9-1.9z\"]\n};\nvar faCommentAltSmile = faMessageSmile;\nvar faCupStraw = {\n prefix: 'fas',\n iconName: 'cup-straw',\n icon: [384, 512, [129380], \"e363\", \"M249.3 0H280c13.3 0 24 10.7 24 24s-10.7 24-24 24H249.3c-3.7 0-6.9 2.6-7.8 6.2L224.2 128H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H174.9l20-84.8C200.8 17.9 223.4 0 249.3 0zM60.3 468L40 224H344L323.7 468c-2.1 24.9-22.9 44-47.8 44H108.2c-25 0-45.8-19.1-47.8-44z\"]\n};\nvar faLeftFromLine = {\n prefix: 'fas',\n iconName: 'left-from-line',\n icon: [448, 512, [\"arrow-alt-from-right\"], \"f348\", \"M134.1 406.1L11.3 283.3C4.1 276.1 0 266.2 0 256s4.1-20.1 11.3-27.3L134.1 105.9c6.4-6.4 15-9.9 24-9.9c18.7 0 33.9 15.2 33.9 33.9l0 62.1 128 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-128 0 0 62.1c0 18.7-15.2 33.9-33.9 33.9c-9 0-17.6-3.6-24-9.9zM384 416l0-320c0-17.7 14.3-32 32-32s32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faArrowAltFromRight = faLeftFromLine;\nvar faH = {\n prefix: 'fas',\n iconName: 'h',\n icon: [384, 512, [104], \"48\", \"M320 256l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192L64 192 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0z\"]\n};\nvar faBasketShoppingSimple = {\n prefix: 'fas',\n iconName: 'basket-shopping-simple',\n icon: [576, 512, [\"shopping-basket-alt\"], \"e0af\", \"M243.1 2.7c11.8 6.1 16.3 20.6 10.2 32.4L171.7 192H404.3L322.7 35.1c-6.1-11.8-1.5-26.3 10.2-32.4s26.2-1.5 32.4 10.2L458.4 192H544c17.7 0 32 14.3 32 32s-14.3 32-32 32L492.1 463.5C485 492 459.4 512 430 512H146c-29.4 0-55-20-62.1-48.5L32 256c-17.7 0-32-14.3-32-32s14.3-32 32-32h85.6L210.7 12.9c6.1-11.8 20.6-16.3 32.4-10.2zM144 296a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm312-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faShoppingBasketAlt = faBasketShoppingSimple;\nvar faHandsHoldingHeart = {\n prefix: 'fas',\n iconName: 'hands-holding-heart',\n icon: [640, 512, [\"hands-heart\"], \"f4c3\", \"M180 76.6C180 34.3 214.3 0 256.6 0c20.3 0 39.8 8.1 54.1 22.4l9.3 9.3 9.3-9.3C343.6 8.1 363.1 0 383.4 0C425.7 0 460 34.3 460 76.6c0 20.3-8.1 39.8-22.4 54.1L334.1 234.1c-7.8 7.8-20.5 7.8-28.3 0L202.4 130.7C188.1 116.4 180 96.9 180 76.6zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faHandsHeart = faHandsHoldingHeart;\nvar faClockNine = {\n prefix: 'fas',\n iconName: 'clock-nine',\n icon: [512, 512, [], \"e34c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm24-392V256c0 13.3-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24h80V120c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faTarp = {\n prefix: 'fas',\n iconName: 'tarp',\n icon: [576, 512, [], \"e57b\", \"M576 128c0-35.3-28.7-64-64-64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64l352 0 0-128c0-17.7 14.3-32 32-32H576V128zM448 448L576 320H448l0 128zM96 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFaceSleepy = {\n prefix: 'fas',\n iconName: 'face-sleepy',\n icon: [512, 512, [], \"e38e\", \"M385.1 477.1C347.2 499.3 303.1 512 256 512C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256c0 37-7.8 72.1-22 103.9c-7.4-6.2-15.1-11.8-22.7-16.7C429.6 318.7 383.6 304 352 304c-15.3 0-28.5 10.9-31.4 25.9s5.3 30.1 19.5 35.8c21 8.4 31.6 23.5 37.4 41.7c6.3 19.4 6.5 40.3 6.5 56.6c0 4.5 .4 8.9 1.1 13.1zM176 389.5c-6.8 11.1 6 20.7 18.3 16.4c18.9-6.5 39.8-10.1 61.8-10.1s42.9 3.6 61.8 10.1c12.3 4.2 25.1-5.3 18.3-16.4C321 364.8 290.8 348 256 348s-64.9 16.8-80.1 41.5zM316.8 246.4c-5.3-7.1-15.3-8.5-22.4-3.2s-8.5 15.3-3.2 22.4c30.4 40.5 91.2 40.5 121.6 0c5.3-7.1 3.9-17.1-3.2-22.4s-17.1-3.9-22.4 3.2c-17.6 23.5-52.8 23.5-70.4 0zm-121.6 0c-17.6 23.5-52.8 23.5-70.4 0c-5.3-7.1-15.3-8.5-22.4-3.2s-8.5 15.3-3.2 22.4c30.4 40.5 91.2 40.5 121.6 0c5.3-7.1 3.9-17.1-3.2-22.4s-17.1-3.9-22.4 3.2zM512 464c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-32 0-102.4-64-128c48 0 160 48 160 128z\"]\n};\nvar faHandHorns = {\n prefix: 'fas',\n iconName: 'hand-horns',\n icon: [384, 512, [], \"e1a9\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32V240H32V32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192zm-64-64c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32zM320 96c0-17.7 14.3-32 32-32s32 14.3 32 32v96 96 64c0 88.4-71.6 160-160 160H162.3c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363V336c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c35.3 0 64-28.7 64-64V192 96z\"]\n};\nvar faScrewdriverWrench = {\n prefix: 'fas',\n iconName: 'screwdriver-wrench',\n icon: [512, 512, [\"tools\"], \"f7d9\", \"M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4h54.1l109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109V104c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7H352c-8.8 0-16-7.2-16-16V102.6c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM56 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faTools = faScrewdriverWrench;\nvar faArrowsToEye = {\n prefix: 'fas',\n iconName: 'arrows-to-eye',\n icon: [640, 512, [], \"e4bf\", \"M15 15C24.4 5.7 39.6 5.7 49 15l63 63V40c0-13.3 10.7-24 24-24s24 10.7 24 24v96c0 13.3-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H78.1L15 49C5.7 39.6 5.7 24.4 15 15zM133.5 243.9C158.6 193.6 222.7 112 320 112s161.4 81.6 186.5 131.9c3.8 7.6 3.8 16.5 0 24.2C481.4 318.4 417.3 400 320 400s-161.4-81.6-186.5-131.9c-3.8-7.6-3.8-16.5 0-24.2zM320 320a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM591 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-63 63H600c13.3 0 24 10.7 24 24s-10.7 24-24 24H504c-13.3 0-24-10.7-24-24V40c0-13.3 10.7-24 24-24s24 10.7 24 24V78.1l63-63zM15 497c-9.4-9.4-9.4-24.6 0-33.9l63-63H40c-13.3 0-24-10.7-24-24s10.7-24 24-24h96c13.3 0 24 10.7 24 24v96c0 13.3-10.7 24-24 24s-24-10.7-24-24V433.9L49 497c-9.4 9.4-24.6 9.4-33.9 0zm576 0l-63-63V472c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H561.9l63 63c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faCircleThreeQuarters = {\n prefix: 'fas',\n iconName: 'circle-three-quarters',\n icon: [512, 512, [], \"e125\", \"M256 32c0-17.7-14.4-32.2-31.9-30C97.8 17.7 0 125.4 0 256C0 397.4 114.6 512 256 512c130.6 0 238.3-97.8 254-224.1c2.2-17.5-12.4-31.9-30-31.9H256V32z\"]\n};\nvar faTrophyStar = {\n prefix: 'fas',\n iconName: 'trophy-star',\n icon: [576, 512, [\"trophy-alt\"], \"f2eb\", \"M176 0H400c26.5 0 48.1 21.8 47.1 48.2c-.2 5.3-.4 10.6-.7 15.8H552c13.3 0 24 10.7 24 24c0 92.6-33.5 157-78.5 200.7c-44.3 43.1-98.3 64.8-138.2 75.8c-23.4 6.5-39.4 26-39.4 45.6c0 20.9 17 37.9 37.9 37.9H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h26.1c20.9 0 37.9-17 37.9-37.9c0-19.6-15.9-39.2-39.4-45.6c-39.9-11-93.9-32.7-138.1-75.8C33.5 245 0 180.6 0 88C0 74.7 10.7 64 24 64H129.6c-.3-5.2-.5-10.4-.7-15.8C127.9 21.8 149.5 0 176 0zM133.2 112H48.9c5.1 66.3 31.1 111.2 63 142.3c22.4 21.8 48.3 37.3 73.2 48.3c-22.7-40.3-42.8-100.5-51.9-190.6zM390.8 302.6c24.9-11 50.8-26.5 73.2-48.3c32-31.1 58-76 63-142.3H442.7c-9.1 90.1-29.2 150.3-51.9 190.6zM295.2 86.5c-2.9-5.9-11.4-5.9-14.3 0l-19.2 38.9c-1.2 2.4-3.4 4-6 4.4L212.7 136c-6.6 1-9.2 9-4.4 13.6l31 30.2c1.9 1.8 2.7 4.5 2.3 7.1l-7.3 42.7c-1.1 6.5 5.7 11.5 11.6 8.4L284.3 218c2.3-1.2 5.1-1.2 7.4 0l38.4 20.2c5.9 3.1 12.7-1.9 11.6-8.4L334.4 187c-.4-2.6 .4-5.2 2.3-7.1l31-30.2c4.7-4.6 2.1-12.7-4.4-13.6l-42.9-6.2c-2.6-.4-4.9-2-6-4.4L295.2 86.5z\"]\n};\nvar faTrophyAlt = faTrophyStar;\nvar faPlugCircleBolt = {\n prefix: 'fas',\n iconName: 'plug-circle-bolt',\n icon: [576, 512, [], \"e55b\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faFaceThermometer = {\n prefix: 'fas',\n iconName: 'face-thermometer',\n icon: [576, 512, [], \"e39a\", \"M544 256c0 141.4-114.6 256-256 256S32 397.4 32 256S146.6 0 288 0C400 0 495.2 72 530 172.2c-14-4.1-29.8-.7-41 10.2l-150.8 146c-14.9-5.2-31.6-8.4-50.2-8.4c-55.1 0-93.8 27.9-116.1 53.5c-5.8 6.7-5.1 16.8 1.6 22.6s16.8 5.1 22.6-1.6C214 373.8 244.6 352 288 352s74 21.8 91.9 42.5c5.8 6.7 15.9 7.4 22.6 1.6c5.2-4.5 6.8-11.6 4.5-17.7l9.4-9-24.8-24.8c-4.7-4.7-4.7-12.3 0-17s12.3-4.7 17 0l25.1 25.1 15.3-14.8-25.4-25.4c-4.7-4.7-4.7-12.3 0-17s12.3-4.7 17 0l25.7 25.7 15.3-14.8-26-26c-4.7-4.7-4.7-12.3 0-17s12.3-4.7 17 0l26.3 26.3L514.1 275l-26.6-26.6c-4.7-4.7-4.7-12.3 0-17s12.3-4.7 17 0l26.9 26.9 12.5-12c.1 3.2 .2 6.4 .2 9.6zM240.4 208a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faGridRound4 = {\n prefix: 'fas',\n iconName: 'grid-round-4',\n icon: [448, 512, [], \"e5dd\", \"M44.8 121.6a44.8 44.8 0 1 1 0-89.6 44.8 44.8 0 1 1 0 89.6zm0 119.5a44.8 44.8 0 1 1 0-89.6 44.8 44.8 0 1 1 0 89.6zm44.8 74.7A44.8 44.8 0 1 1 0 315.7a44.8 44.8 0 1 1 89.6 0zM44.8 480a44.8 44.8 0 1 1 0-89.6 44.8 44.8 0 1 1 0 89.6zM209.1 76.8a44.8 44.8 0 1 1 -89.6 0 44.8 44.8 0 1 1 89.6 0zM164.3 241.1a44.8 44.8 0 1 1 0-89.6 44.8 44.8 0 1 1 0 89.6zm44.8 74.7a44.8 44.8 0 1 1 -89.6 0 44.8 44.8 0 1 1 89.6 0zM164.3 480a44.8 44.8 0 1 1 0-89.6 44.8 44.8 0 1 1 0 89.6zM328.5 76.8a44.8 44.8 0 1 1 -89.6 0 44.8 44.8 0 1 1 89.6 0zM283.7 241.1a44.8 44.8 0 1 1 0-89.6 44.8 44.8 0 1 1 0 89.6zm44.8 74.7a44.8 44.8 0 1 1 -89.6 0 44.8 44.8 0 1 1 89.6 0zM283.7 480a44.8 44.8 0 1 1 0-89.6 44.8 44.8 0 1 1 0 89.6zM448 76.8a44.8 44.8 0 1 1 -89.6 0 44.8 44.8 0 1 1 89.6 0zM403.2 241.1a44.8 44.8 0 1 1 0-89.6 44.8 44.8 0 1 1 0 89.6zM448 315.7a44.8 44.8 0 1 1 -89.6 0 44.8 44.8 0 1 1 89.6 0zM403.2 480a44.8 44.8 0 1 1 0-89.6 44.8 44.8 0 1 1 0 89.6z\"]\n};\nvar faShirtRunning = {\n prefix: 'fas',\n iconName: 'shirt-running',\n icon: [384, 512, [], \"e3c8\", \"M80 0c17.7 0 32 14.3 32 32V80c0 44.2 35.8 80 80 80s80-35.8 80-80V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64c0 33.3 2.6 61.5 6.5 85.2L0 393.8V282.5c0-17 6.7-33.5 14.7-48.4C28.8 207.6 48 155 48 64V32C48 14.3 62.3 0 80 0zM3.8 469.8L360.4 215c3 7.5 6 13.8 8.9 19c8 15 14.7 31.5 14.7 48.4V448c0 35.3-28.7 64-64 64H64c-27.7 0-51.3-17.6-60.2-42.2z\"]\n};\nvar faBookCircleArrowUp = {\n prefix: 'fas',\n iconName: 'book-circle-arrow-up',\n icon: [640, 512, [], \"e0bd\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h10.8c-23.3-16.4-42.5-38.4-55.6-64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32H320.7c-.5-5.3-.7-10.6-.7-16c0-80.6 54.1-148.5 128-169.4V32c0-17.7-14.3-32-32-32H384 96zM496 224a144 144 0 1 0 0 288 144 144 0 1 0 0-288zM428.7 371.3c-6.2-6.2-6.2-16.4 0-22.6l56-56c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L512 342.6V432c0 8.8-7.2 16-16 16s-16-7.2-16-16V342.6l-28.7 28.7c-6.2 6.2-16.4 6.2-22.6 0z\"]\n};\nvar faFaceNauseated = {\n prefix: 'fas',\n iconName: 'face-nauseated',\n icon: [512, 512, [], \"e381\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm79.6-336a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-128 32a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-12.3-84.7l-7.4 7.4c-23.6 23.6-53.9 39.2-86.8 44.7l-2.5 .4c-8.7 1.5-17-4.4-18.4-13.2s4.4-17 13.2-18.4l2.5-.4c26.3-4.4 50.6-16.9 69.5-35.7l7.4-7.4c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm121.4-22.6c6.2-6.2 16.4-6.2 22.6 0l7.4 7.4c18.9 18.9 43.2 31.4 69.5 35.7l2.5 .4c8.7 1.5 14.6 9.7 13.2 18.4s-9.7 14.6-18.4 13.2l-2.5-.4c-32.9-5.5-63.3-21.1-86.8-44.7l-7.4-7.4c-6.2-6.2-6.2-16.4 0-22.6zM168 282.7c19.5 11.3 33.8 30.5 38.4 53.3h99.2c4.6-22.8 18.9-42 38.4-53.3c7.7-4.4 17.4-1.8 21.9 5.8s1.8 17.4-5.8 21.9c-14.4 8.3-24 23.8-24 41.6s9.6 33.3 24 41.6c7.6 4.4 10.3 14.2 5.8 21.9s-14.2 10.3-21.9 5.8c-19.5-11.3-33.8-30.5-38.4-53.3H206.4c-4.6 22.8-18.9 42-38.4 53.3c-7.6 4.4-17.4 1.8-21.9-5.8s-1.8-17.4 5.8-21.9c14.4-8.3 24-23.8 24-41.6s-9.6-33.3-24-41.6c-7.6-4.4-10.3-14.2-5.8-21.9s14.2-10.3 21.9-5.8z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z\"]\n};\nvar faFileChartPie = {\n prefix: 'fas',\n iconName: 'file-chart-pie',\n icon: [384, 512, [], \"f65a\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm40 320H208c-8.8 0-16-7.2-16-16V216c0-8.8 7.2-16.1 16-14.9c53.5 7.1 95.9 49.5 103 103c1.2 8.8-6.1 16-14.9 16zM160 230V336c0 8.8 7.2 16 16 16H282c10.1 0 17.7 9.3 14.1 18.8C278.9 415.9 235.2 448 184 448c-66.3 0-120-53.7-120-120c0-51.2 32.1-94.9 77.2-112.2c9.5-3.6 18.8 4 18.8 14.1z\"]\n};\nvar faMarsAndVenus = {\n prefix: 'fas',\n iconName: 'mars-and-venus',\n icon: [512, 512, [9893], \"f224\", \"M337.8 14.8C341.5 5.8 350.3 0 360 0H472c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-24.7 24.7C407 163.3 416 192.6 416 224c0 80.2-59.1 146.7-136.1 158.2c0 .6 .1 1.2 .1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3h24c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l-24 0-24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456H208c-13.3 0-24-10.7-24-24s10.7-24 24-24h24v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2 .1-1.8C155.1 370.7 96 304.2 96 224c0-88.4 71.6-160 160-160c39.6 0 75.9 14.4 103.8 38.2L382.1 80 343 41c-6.9-6.9-8.9-17.2-5.2-26.2zM448 48l0 0h0v0zM256 488h24c0 13.3-10.7 24-24 24s-24-10.7-24-24h24zm96-264a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nvar faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [\"home-user\"], \"e1b0\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24zM352 224a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm-96 96c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H256z\"]\n};\nvar faHomeUser = faHouseUser;\nvar faCircleArrowDownLeft = {\n prefix: 'fas',\n iconName: 'circle-arrow-down-left',\n icon: [512, 512, [], \"e0f9\", \"M256 512A256 256 0 1 1 256 0a256 256 0 1 1 0 512zm64-144c13.3 0 24-10.7 24-24s-10.7-24-24-24H225.9L361 185c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-135 135V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V344c0 13.3 10.7 24 24 24H320z\"]\n};\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0h58c15.1-18.1 32.1-35.7 50.5-52.1c1.5-1.4 3.2-2.6 4.8-3.8L402.9 32H304V160zm209.9-23.7c17.4-15.8 43.9-16.2 61.7-1.2c-.1-.7-.3-1.4-.5-2.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l12.8 64.2c9.6 1 19 4.9 26.6 11.8c11.7 10.6 23 21.6 33.9 33.1c1.6-1.6 3.3-3.2 5-4.8zM325.2 210.7c3.8-6.2 7.9-12.5 12.3-18.7H32l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H337.6c-31-34.7-49.6-80.6-49.6-129.9c0-35.2 16.3-73.6 37.2-107.4zm128.4-78.9c-2.8-2.5-6.3-3.7-9.8-3.8c-3.6 0-7.2 1.2-10 3.7c-33.2 29.7-61.4 63.4-81.4 95.8c-19.7 31.9-32.4 66.2-32.4 92.6C320 407.9 390.3 480 480 480c88.7 0 160-72 160-159.8c0-20.2-9.6-50.9-24.2-79c-14.8-28.5-35.7-58.5-60.4-81.1c-5.6-5.1-14.4-5.2-20 0c-9.6 8.8-18.6 19.6-26.5 29.5c-17.3-20.7-35.8-39.9-55.5-57.7zM530 401c-15 10-31 15-49 15c-45 0-81-29-81-78c0-24 15-45 45-82c4 5 62 79 62 79l36-42c3 4 5 8 7 12c18 33 10 75-20 96z\"]\n};\nvar faHexagonMinus = {\n prefix: 'fas',\n iconName: 'hexagon-minus',\n icon: [512, 512, [\"minus-hexagon\"], \"f307\", \"M17.1 292c-12.9-22.3-12.9-49.7 0-72L105.4 67.1c12.9-22.3 36.6-36 62.4-36H344.3c25.7 0 49.5 13.7 62.4 36L494.9 220c12.9 22.3 12.9 49.7 0 72L406.6 444.9c-12.9 22.3-36.6 36-62.4 36H167.7c-25.7 0-49.5-13.7-62.4-36L17.1 292zM184 232c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faMinusHexagon = faHexagonMinus;\nvar faLeftToLine = {\n prefix: 'fas',\n iconName: 'left-to-line',\n icon: [448, 512, [\"arrow-alt-to-left\"], \"f34b\", \"M230.1 406.1L107.3 283.3C100.1 276.1 96 266.2 96 256s4.1-20.1 11.3-27.3L230.1 105.9c6.4-6.4 15-9.9 24-9.9c18.7 0 33.9 15.2 33.9 33.9l0 62.1 128 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-128 0 0 62.1c0 18.7-15.2 33.9-33.9 33.9c-9 0-17.6-3.6-24-9.9zM64 96l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 96C0 78.3 14.3 64 32 64s32 14.3 32 32z\"]\n};\nvar faArrowAltToLeft = faLeftToLine;\nvar faHouseCrack = {\n prefix: 'fas',\n iconName: 'house-crack',\n icon: [576, 512, [], \"e3b1\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H230.4l-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L288 368l-60.2-82.8c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L288 448l38.4 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32z\"]\n};\nvar faPawSimple = {\n prefix: 'fas',\n iconName: 'paw-simple',\n icon: [448, 512, [\"paw-alt\"], \"f701\", \"M96 80a48 48 0 1 1 96 0A48 48 0 1 1 96 80zm1.7 206c6.2-2.3 11.8-6.3 15-12.2l40-71.9c14.4-25.9 41.7-42 71.3-42s56.9 16.1 71.3 42l40 71.9c3.2 5.8 8.8 9.9 15 12.2c38.3 14 65.7 50.8 65.7 94c0 55.2-44.8 100-100 100c-21.2 0-40.8-6.6-56.9-17.8c-17.4-12-52.8-12-70.1 0C172.8 473.4 153.2 480 132 480C76.8 480 32 435.2 32 380c0-43.2 27.4-80 65.7-94zM304 32a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm48 160a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM48 144a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faPawAlt = faPawSimple;\nvar faArrowLeftLongToLine = {\n prefix: 'fas',\n iconName: 'arrow-left-long-to-line',\n icon: [640, 512, [], \"e3d4\", \"M0 96V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96c0-17.7-14.3-32-32-32S0 78.3 0 96zM137.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 288 608 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128z\"]\n};\nvar faBracketsRound = {\n prefix: 'fas',\n iconName: 'brackets-round',\n icon: [512, 512, [\"parentheses\"], \"e0c5\", \"M145.8 90.6c14.7-9.8 18.7-29.7 8.9-44.4s-29.7-18.7-44.4-8.9C71.9 62.9 0 140.2 0 256S71.9 449 110.2 474.6c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4C120.1 404.3 64 345 64 256s56.1-148.3 81.8-165.4zm220.5 0C391.9 107.7 448 167 448 256s-56.1 148.3-81.8 165.4c-14.7 9.8-18.7 29.7-8.9 44.4s29.7 18.7 44.4 8.9C440.1 449.1 512 371.8 512 256s-71.9-193.1-110.2-218.6c-14.7-9.8-34.6-5.8-44.4 8.9s-5.8 34.6 8.9 44.4z\"]\n};\nvar faParentheses = faBracketsRound;\nvar faMartiniGlassCitrus = {\n prefix: 'fas',\n iconName: 'martini-glass-citrus',\n icon: [576, 512, [\"cocktail\"], \"f561\", \"M432 240c53 0 96-43 96-96s-43-96-96-96c-35.5 0-66.6 19.3-83.2 48H296.2C316 40.1 369.3 0 432 0c79.5 0 144 64.5 144 144s-64.5 144-144 144c-27.7 0-53.5-7.8-75.5-21.3l35.4-35.4c12.2 5.6 25.8 8.7 40.1 8.7zM1.8 142.8C5.5 133.8 14.3 128 24 128H392c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-177 177V464h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H208 120c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V345.9L7 169c-6.9-6.9-8.9-17.2-5.2-26.2z\"]\n};\nvar faCocktail = faMartiniGlassCitrus;\nvar faUserShakespeare = {\n prefix: 'fas',\n iconName: 'user-shakespeare',\n icon: [448, 512, [], \"e2c2\", \"M224 48c-44.2 0-80 35.8-80 80v32c0 40.1 29.5 73.3 68 79.1V224c0-6.6 5.4-12 12-12s12 5.4 12 12v15.1c38.5-5.8 68-39 68-79.1V128c0-44.2-35.8-80-80-80zM96 128C96 57.3 153.3 0 224 0s128 57.3 128 128v23.2c0 10.9 3.7 21.5 10.5 30L373.6 195c6.7 8.4 10.4 18.8 10.4 29.6c0 26.2-21.2 47.4-47.4 47.4H286c-18.4 10.2-39.5 16-62 16s-43.6-5.8-62-16H111.4C85.2 272 64 250.8 64 224.6c0-10.8 3.7-21.2 10.4-29.6l11.1-13.9c6.8-8.5 10.5-19.1 10.5-30V128zm96-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-7.5 39.5c2 2 6 5.3 10.7 8.1c4.9 2.9 9.4 4.4 12.8 4.4c6.6 0 12 5.4 12 12s-5.4 12-12 12c-9.5 0-18.3-3.8-24.8-7.6c-2.5-1.5-4.9-3.1-7.1-4.6C211.6 201 199 204 192 204c-6.6 0-12-5.4-12-12s5.4-12 12-12c2.1 0 12.9-1.9 23.5-12.5c4.7-4.7 12.3-4.7 17 0zM272 304c23.9 0 45.8 8.8 62.6 23.2c65.7 20.4 113.4 81.7 113.4 154c0 17-13.8 30.7-30.7 30.7H240c0-8.8-7.2-16-16-16s-16 7.2-16 16H30.7C13.8 512 0 498.2 0 481.3c0-72.4 47.7-133.6 113.4-154C130.2 312.8 152.1 304 176 304h96zM208 448a16 16 0 1 0 32 0 16 16 0 1 0 -32 0zm-80-48c26.4-10.6 54.6-16 83.1-16h25.8c28.5 0 56.7 5.4 83.1 16c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48z\"]\n};\nvar faArrowRightToArc = {\n prefix: 'fas',\n iconName: 'arrow-right-to-arc',\n icon: [512, 512, [], \"e4b2\", \"M448 256c0-106-86-192-192-192c-17.7 0-32-14.3-32-32s14.3-32 32-32C397.4 0 512 114.6 512 256s-114.6 256-256 256c-17.7 0-32-14.3-32-32s14.3-32 32-32c106 0 192-86 192-192zM230.6 121.4l112 112c12.5 12.5 12.5 32.8 0 45.3l-112 112c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H242.7l-57.4-57.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nvar faFaceSurprise = {\n prefix: 'fas',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSurprise = faFaceSurprise;\nvar faBottleWater = {\n prefix: 'fas',\n iconName: 'bottle-water',\n icon: [320, 512, [], \"e4c5\", \"M120 0h80c13.3 0 24 10.7 24 24V64H96V24c0-13.3 10.7-24 24-24zM32 151.7c0-15.6 9-29.8 23.2-36.5l24.4-11.4c11-5.1 23-7.8 35.1-7.8h90.6c12.1 0 24.1 2.7 35.1 7.8l24.4 11.4c14.1 6.6 23.2 20.8 23.2 36.5c0 14.4-7.5 27-18.9 34.1c11.5 8.8 18.9 22.6 18.9 38.2c0 16.7-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48c0-16.7 8.5-31.4 21.5-40C40.5 415.4 32 400.7 32 384s8.5-31.4 21.5-40C40.5 335.4 32 320.7 32 304s8.5-31.4 21.5-40C40.5 255.4 32 240.7 32 224c0-15.6 7.4-29.4 18.9-38.2C39.5 178.7 32 166.1 32 151.7zM96 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zm16 112c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faCirclePause = {\n prefix: 'fas',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM224 192V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faPauseCircle = faCirclePause;\nvar faGaugeCirclePlus = {\n prefix: 'fas',\n iconName: 'gauge-circle-plus',\n icon: [640, 512, [], \"e498\", \"M496 192c2.7 0 5.3 .1 8 .2C475.6 81.7 375.4 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512c39.5 0 77-9 110.4-25C337.6 455.7 320 413.9 320 368c0-97.2 78.8-176 176-176zM320 352c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26.9 16.5-49.9 40-59.3V88c0-13.3 10.7-24 24-24s24 10.7 24 24V292.7c23.5 9.5 40 32.5 40 59.3zM144 112a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM336 144a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H512v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H432c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faFolders = {\n prefix: 'fas',\n iconName: 'folders',\n icon: [576, 512, [], \"f660\", \"M512 384c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H394.5c-17 0-33.3-6.7-45.3-18.7L322.7 50.7c-12-12-28.3-18.7-45.3-18.7H160c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64H512zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faAngel = {\n prefix: 'fas',\n iconName: 'angel',\n icon: [576, 512, [], \"f779\", \"M384 64c0 0 0 .1 0 .2s-.1 .3-.2 .6c-.3 .6-.9 1.8-2.3 3.5c-1.4 1.7-3.4 3.6-6.2 5.6c6.7 8.3 12.2 17.6 16.3 27.7C407 91 416 78 416 64c0-35.3-57.3-64-128-64S160 28.7 160 64c0 14 9 27 24.3 37.5c4.1-10 9.6-19.3 16.3-27.7c-2.7-2-4.8-4-6.2-5.6c-1.4-1.7-2-2.8-2.3-3.5c-.1-.3-.2-.5-.2-.6s0-.1 0-.2s0-.1 0-.2s.1-.3 .2-.6c.3-.6 .9-1.8 2.3-3.5c2.9-3.5 8.4-7.9 17.3-12.4C229.6 38.4 256.5 32 288 32s58.4 6.4 76.2 15.4c8.9 4.5 14.4 8.9 17.3 12.4c1.4 1.7 2 2.8 2.3 3.5c.1 .3 .2 .5 .2 .6s0 .1 0 .2zm-16 80a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM120 464H49.7l37.9-75.8c5.6-11.1 8.4-23.4 8.4-35.8v-.9c0-12.4-2.9-24.7-8.4-35.8L69.2 279c-3.4-6.7-5.2-14.4-5.2-22.1c0-27.1 22-48.9 48.2-48.9c12.8 0 25 5.1 34.1 14.1l66.4 66.4c-6.8 7.2-12.7 15.5-17.3 24.7L120 464zM253.8 261.8l-73.6-73.6c-18-18-42.5-28.2-68-28.2C59.1 160 16 203.8 16 256.9c0 15.1 3.5 30.1 10.2 43.6l18.4 36.7c2.2 4.4 3.4 9.3 3.4 14.3v.9c0 5-1.2 9.9-3.4 14.3L4.8 446.4C1.6 452.7 0 459.7 0 466.7c0 25 20.3 45.3 45.3 45.3H96h96H384h96 50.7c25 0 45.3-20.3 45.3-45.3c0-7-1.6-14-4.8-20.3l-39.8-79.7c-2.2-4.4-3.4-9.3-3.4-14.3v-.9c0-5 1.2-9.9 3.4-14.3l18.4-36.7C556.5 287 560 272 560 256.9c0-53.1-43.1-96.9-96.2-96.9c-25.5 0-50 10.1-68 28.2l-73.6 73.6C311.4 258 299.8 256 288 256s-23.4 2-34.2 5.8zm126.8 51.4c-4.6-9.2-10.4-17.5-17.3-24.7l66.4-66.4c9-9 21.3-14.1 34.1-14.1c26.1 0 48.2 21.8 48.2 48.9c0 7.7-1.8 15.4-5.2 22.1l-18.4 36.7c-5.6 11.1-8.4 23.4-8.4 35.8v.9c0 12.4 2.9 24.7 8.4 35.8L526.3 464H456L380.6 313.2z\"]\n};\nvar faValueAbsolute = {\n prefix: 'fas',\n iconName: 'value-absolute',\n icon: [512, 512, [], \"f6a6\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32zM182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256l-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 301.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256l73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 210.7l-73.4-73.4zM512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64z\"]\n};\nvar faRabbit = {\n prefix: 'fas',\n iconName: 'rabbit',\n icon: [512, 512, [128007], \"f708\", \"M321.4 128c4.8 0 9.6 .3 14.3 .9c1.1-24-2.6-47.9-10.9-70.1c7.6-17.8 18.6-34.2 32.7-48.3l4.6-4.6c3.7-3.7 8.8-5.8 14-5.8c9.2 0 17.2 6.4 19.3 15.4l1 4.4c9.8 42.4 1.8 86.5-21 122.4c5.5 3.1 10.7 6.6 15.6 10.6L425.8 181c14 11.4 22.2 28.6 22.2 46.7c0 33.3-27 60.3-60.3 60.3H352v25.8l61.7 154.3c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-39.4-98.6L265.6 448H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H208 160c-28.5 0-52.6-18.6-60.9-44.2C88.8 480.1 73.3 488 56 488c-30.9 0-56-25.1-56-56s25.1-56 56-56c17.4 0 33 8 43.3 20.5C114 317.7 176.8 255.9 256 242.7V193.4c0-10.9 2.7-21.2 7.4-30.2c-34.3-36.5-50.3-86.8-43.2-136.8l.7-4.9C222.7 9.2 233.2 0 245.7 0c6.6 0 12.9 2.6 17.6 7.3l3.1 3.1c31.8 31.5 47.9 74.8 45.4 118.4c3.1-.5 6.3-.7 9.6-.7zM368 224a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-109.7-86C569.9 374 608 291.9 608 192C608 86 565 0 512 0s-96 86-96 192c0 49.1 9.2 93.9 24.4 127.9l-59-46.2c1.6-24.8 2.6-52 2.6-81.6c0-65.5 13.2-142.4 60.2-192H160c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM367.3 385.4L66.5 148.4C64.9 162.4 64 177 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512H285.9c22.3 0 45.4-12.1 55.4-36.1c7.4-17.7 17.5-47.2 26-90.6zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z\"]\n};\nvar faCircleEuro = {\n prefix: 'fas',\n iconName: 'circle-euro',\n icon: [512, 512, [], \"e5ce\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM128 272h16c-.6-5-.9-10.1-.9-15.2c0-5.7 .4-11.3 1.1-16.8H128c-8.8 0-16-7.2-16-16s7.2-16 16-16h24.7c19.2-46.9 65.4-80 119.2-80H313c13.3 0 24 10.7 24 24s-10.7 24-24 24H271.9c-26.3 0-49.6 12.6-64.4 32H288c8.8 0 16 7.2 16 16s-7.2 16-16 16H192.9c-1.1 5.4-1.7 11-1.7 16.8c0 5.2 .5 10.3 1.4 15.2H288c8.8 0 16 7.2 16 16s-7.2 16-16 16H206.4c14.7 20.3 38.5 33.5 65.5 33.5H313c13.3 0 24 10.7 24 24s-10.7 24-24 24H271.9c-54.4 0-101-33.8-119.8-81.5H128c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faAppleWhole = {\n prefix: 'fas',\n iconName: 'apple-whole',\n icon: [448, 512, [127822, 127823, \"apple-alt\"], \"f5d1\", \"M224 112c-8.8 0-16-7.2-16-16V80c0-44.2 35.8-80 80-80h16c8.8 0 16 7.2 16 16V32c0 44.2-35.8 80-80 80H224zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z\"]\n};\nvar faAppleAlt = faAppleWhole;\nvar faKitchenSet = {\n prefix: 'fas',\n iconName: 'kitchen-set',\n icon: [576, 512, [], \"e51a\", \"M240 144A96 96 0 1 0 48 144a96 96 0 1 0 192 0zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112h71.8c8.8-9.8 21.6-16 35.8-16H496c26.5 0 48 21.5 48 48s-21.5 48-48 48H392c-14.2 0-27-6.2-35.8-16H284.4zM144 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c13.3 0 24 10.7 24 24v8h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H280c-13.3 0-24-10.7-24-24s10.7-24 24-24h96v-8c0-13.3 10.7-24 24-24zM288 464V352H512V464c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48zM48 320h80 16 32c26.5 0 48 21.5 48 48s-21.5 48-48 48H160c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V336c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160v32h16zM24 464H200c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faDiamondHalf = {\n prefix: 'fas',\n iconName: 'diamond-half',\n icon: [512, 512, [], \"e5b7\", \"M256 0c-10.2 0-20.5 3.9-28.3 11.7l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c7.8 7.8 18 11.7 28.3 11.7V0z\"]\n};\nvar faLockKeyhole = {\n prefix: 'fas',\n iconName: 'lock-keyhole',\n icon: [448, 512, [\"lock-alt\"], \"f30d\", \"M224 64c44.2 0 80 35.8 80 80v48H144V144c0-44.2 35.8-80 80-80zM80 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H368V144C368 64.5 303.5 0 224 0S80 64.5 80 144zM256 320v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faLockAlt = faLockKeyhole;\nvar faR = {\n prefix: 'fas',\n iconName: 'r',\n icon: [320, 512, [114], \"52\", \"M64 32C28.7 32 0 60.7 0 96V288 448c0 17.7 14.3 32 32 32s32-14.3 32-32V320h95.3L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144H64zM176 256H64V96H176c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faTemperatureQuarter = {\n prefix: 'fas',\n iconName: 'temperature-quarter',\n icon: [320, 512, [\"temperature-1\", \"thermometer-1\", \"thermometer-quarter\"], \"f2ca\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature1 = faTemperatureQuarter;\nvar faThermometer1 = faTemperatureQuarter;\nvar faThermometerQuarter = faTemperatureQuarter;\nvar faSquareInfo = {\n prefix: 'fas',\n iconName: 'square-info',\n icon: [448, 512, [8505, \"info-square\"], \"f30f\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM184 336h24V272H184c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faInfoSquare = faSquareInfo;\nvar faWifiSlash = {\n prefix: 'fas',\n iconName: 'wifi-slash',\n icon: [640, 512, [], \"f6ac\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L364.6 260.4c39.2 7.9 74.7 26.1 103.6 51.6c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192c-13.3 0-26.5 .9-39.3 2.7l-95.1-74.5C227.4 104.5 272.7 96 320 96c103.2 0 196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32c-68.7 0-133.7 15.5-191.9 43.1L38.8 5.1zM93.6 169.8L41.7 128.9C30.7 137.7 20 147 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9c12.4-11.9 25.6-23 39.5-33.1zM228 275.7L173 232.3c-15.5 9.2-30.1 19.8-43.5 31.7c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c16.7-14.8 35.6-27 56.2-36.3zM320 352c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64c0-7-1.1-13.7-3.2-20l-55.6-43.8c-1.7-.1-3.4-.2-5.2-.2z\"]\n};\nvar faToiletPaperXmark = {\n prefix: 'fas',\n iconName: 'toilet-paper-xmark',\n icon: [512, 512, [], \"e5b3\", \"M96 0H348.2C336.6 12.2 327 26.9 319.5 41.9C299.5 82 288 135.1 288 192s11.5 110 31.5 150.1c7.5 15 17.1 29.7 28.7 41.9H96C43 384 0 298 0 192S43 0 96 0zM320 192c0-83.6 26.7-154.7 64-181.1C394 3.8 404.8 0 416 0c53 0 96 86 96 192c0 35-4.7 67.8-12.8 96c-16.6 57.4-47.6 96-83.2 96c-11.2 0-22-3.8-32-10.9c-37.3-26.4-64-97.5-64-181.1zm64 0c0 35.3 14.3 64 32 64s32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64zM160 416H416c44.8 0 76.9-35.2 96-72.9V464c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V416zm51.3-283.3c-6.2-6.2-16.4-6.2-22.6 0L152 169.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L129.4 192 92.7 228.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L152 214.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L174.6 192l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faHandsHoldingDollar = {\n prefix: 'fas',\n iconName: 'hands-holding-dollar',\n icon: [640, 512, [\"hands-usd\"], \"f4c5\", \"M344 24V34.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8V232c0 13.3-10.7 24-24 24s-24-10.7-24-24V220.6c-9.5-2.3-18.2-5.3-25.6-7.8l0 0c-2.1-.7-4.1-1.4-5.9-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faHandsUsd = faHandsHoldingDollar;\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6V377.4c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4V134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1v-188L288 246.6v188z\"]\n};\nvar faArrowDownTriangleSquare = {\n prefix: 'fas',\n iconName: 'arrow-down-triangle-square',\n icon: [576, 512, [\"sort-shapes-down\"], \"f888\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM443.1 47l80 128c6.2 9.9 6.5 22.3 .9 32.5s-16.4 16.5-28 16.5H336c-11.6 0-22.3-6.3-28-16.5s-5.3-22.6 .9-32.5l80-128c5.8-9.4 16.1-15 27.1-15s21.3 5.7 27.1 15zM320 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V336z\"]\n};\nvar faSortShapesDown = faArrowDownTriangleSquare;\nvar faBitcoinSign = {\n prefix: 'fas',\n iconName: 'bitcoin-sign',\n icon: [320, 512, [], \"e0b4\", \"M48 32C48 14.3 62.3 0 80 0s32 14.3 32 32V64h32V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64c0 1.5-.1 3.1-.3 4.5C254.1 82.2 288 125.1 288 176c0 24.2-7.7 46.6-20.7 64.9c31.7 19.8 52.7 55 52.7 95.1c0 61.9-50.1 112-112 112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H41.7C18.7 448 0 429.3 0 406.3V288 265.7 224 101.6C0 80.8 16.8 64 37.6 64H48V32zM64 224H176c26.5 0 48-21.5 48-48s-21.5-48-48-48H64v96zm112 64H64v96H208c26.5 0 48-21.5 48-48s-21.5-48-48-48H176z\"]\n};\nvar faShutters = {\n prefix: 'fas',\n iconName: 'shutters',\n icon: [512, 512, [], \"e449\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM20.6 224H491.4c11.4 0 20.6-9.2 20.6-20.6c0-2.2-.4-4.4-1.1-6.5L488 128H24L1.1 196.8c-.7 2.1-1.1 4.3-1.1 6.5C0 214.8 9.2 224 20.6 224zM491.4 352c11.4 0 20.6-9.2 20.6-20.6c0-2.2-.4-4.4-1.1-6.5L488 256H24L1.1 324.8c-.7 2.1-1.1 4.3-1.1 6.5C0 342.8 9.2 352 20.6 352H491.4zM20.6 480H491.4c11.4 0 20.6-9.2 20.6-20.6c0-2.2-.4-4.4-1.1-6.5L488 384H24L1.1 452.8c-.7 2.1-1.1 4.3-1.1 6.5C0 470.8 9.2 480 20.6 480z\"]\n};\nvar faShieldDog = {\n prefix: 'fas',\n iconName: 'shield-dog',\n icon: [512, 512, [], \"e573\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8c35.3 0 64-28.7 64-64V160h44.2c12.1 0 23.2 6.8 28.6 17.7L320 192h64c8.8 0 16 7.2 16 16v32c0 44.2-35.8 80-80 80H272v50.7c0 7.3-5.9 13.3-13.3 13.3c-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4c0-2.8 .6-5.5 1.9-8l15-30zM160 160h40 8v32 32c0 17.7-14.3 32-32 32s-32-14.3-32-32V176c0-8.8 7.2-16 16-16zm128 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M122.2 0C91.7 0 65.5 21.5 59.5 51.4L8.3 307.4C.4 347 30.6 384 71 384H288v64H224c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H569c40.4 0 70.7-36.9 62.8-76.6l-51.2-256C574.5 21.5 548.3 0 517.8 0H122.2zM260.9 64H379.1l10.4 104h-139L260.9 64zM202.3 168H101.4L122.2 64h90.4L202.3 168zM91.8 216H197.5L187.1 320H71L91.8 216zm153.9 0H394.3l10.4 104-169.4 0 10.4-104zm196.8 0H548.2L569 320h-116L442.5 216zm96-48H437.7L427.3 64h90.4l31.4-6.3L517.8 64l20.8 104z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z\"]\n};\nvar faTableTree = {\n prefix: 'fas',\n iconName: 'table-tree',\n icon: [512, 512, [], \"e293\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM448 160V416H64V160H96v64 96c0 26.5 21.5 48 48 48h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H144c-8.8 0-16-7.2-16-16V269.3c5 1.8 10.4 2.7 16 2.7h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H144c-8.8 0-16-7.2-16-16V160H448zM224 240v32c0 8.8 7.2 16 16 16H400c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm80 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V336c0-8.8-7.2-16-16-16H304z\"]\n};\nvar faHouseChimneyHeart = {\n prefix: 'fas',\n iconName: 'house-chimney-heart',\n icon: [576, 512, [], \"e1b2\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM237.3 208c-33.8 0-61.3 27.4-61.3 61.3c0 16.2 6.5 31.8 17.9 43.3l82.7 82.7c6.2 6.2 16.4 6.2 22.6 0l82.7-82.7c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3c-16.2 0-31.8 6.5-43.3 17.9l-7.4 7.4-7.4-7.4c-11.5-11.5-27.1-17.9-43.3-17.9z\"]\n};\nvar faTally3 = {\n prefix: 'fas',\n iconName: 'tally-3',\n icon: [640, 512, [], \"e296\", \"M128 32c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64c0-17.7 14.3-32 32-32zm128 0c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64c0-17.7 14.3-32 32-32zM416 64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faElevator = {\n prefix: 'fas',\n iconName: 'elevator',\n icon: [512, 512, [], \"e16d\", \"M132.7 4.7l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H208c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H64zm96 96a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM80 400c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V400zm192 0c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32V400zm32-128a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM356.7 91.3c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5 0 432 0H304c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64z\"]\n};\nvar faMoneyBillTransfer = {\n prefix: 'fas',\n iconName: 'money-bill-transfer',\n icon: [640, 512, [], \"e528\", \"M535 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L384 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l174.1 0L535 41zM105 377l-23 23L256 400c13.3 0 24 10.7 24 24s-10.7 24-24 24L81.9 448l23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 441c-4.5-4.5-7-10.6-7-17s2.5-12.5 7-17l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM96 64H337.9c-3.7 7.2-5.9 15.3-5.9 24c0 28.7 23.3 52 52 52l117.4 0c-4 17 .6 35.5 13.8 48.8c20.3 20.3 53.2 20.3 73.5 0L608 169.5V384c0 35.3-28.7 64-64 64H302.1c3.7-7.2 5.9-15.3 5.9-24c0-28.7-23.3-52-52-52l-117.4 0c4-17-.6-35.5-13.8-48.8c-20.3-20.3-53.2-20.3-73.5 0L32 342.5V128c0-35.3 28.7-64 64-64zm64 64H96v64c35.3 0 64-28.7 64-64zM544 320c-35.3 0-64 28.7-64 64h64V320zM320 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faMoneyBillTrendUp = {\n prefix: 'fas',\n iconName: 'money-bill-trend-up',\n icon: [512, 512, [], \"e529\", \"M470.7 9.4c3 3.1 5.3 6.6 6.9 10.3s2.4 7.8 2.4 12.2l0 .1v0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3L310.6 214.6c-11.8 11.8-30.8 12.6-43.5 1.7L176 138.1 84.8 216.3c-13.4 11.5-33.6 9.9-45.1-3.5s-9.9-33.6 3.5-45.1l112-96c12-10.3 29.7-10.3 41.7 0l89.5 76.7L370.7 64H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0c8.8 0 16.8 3.6 22.6 9.3l.1 .1zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faHouseFloodWaterCircleArrowRight = {\n prefix: 'fas',\n iconName: 'house-flood-water-circle-arrow-right',\n icon: [640, 512, [], \"e50f\", \"M288 144A144 144 0 1 0 0 144a144 144 0 1 0 288 0zM140.7 76.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L169.4 160H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h89.4L140.7 99.3c-6.2-6.2-6.2-16.4 0-22.6zM320 144c0 57.3-27.4 108.2-69.8 140.3c11.8-3.6 23-9.4 33-16.2c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c2.1 1.7 4.2 3.3 6.5 4.9l-.3-84.4H576c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128C407.6-2 392.4-2 381.2 6.1L301 64.4c12.1 23.9 19 50.9 19 79.6zm18.5 165.9c-11.1-7.9-25.9-7.9-37 0C279 325.4 251.5 336 224 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 389.7 191 400 224 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C471.4 325.2 442.9 336 416 336c-27.5 0-55-10.6-77.5-26.1zm0 112c-11.1-7.9-25.9-7.9-37 0C279 437.4 251.5 448 224 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 501.7 191 512 224 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C471.4 437.2 442.9 448 416 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faSquarePollHorizontal = {\n prefix: 'fas',\n iconName: 'square-poll-horizontal',\n icon: [448, 512, [\"poll-h\"], \"f682\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faPollH = faSquarePollHorizontal;\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z\"]\n};\nvar faCartCircleExclamation = {\n prefix: 'fas',\n iconName: 'cart-circle-exclamation',\n icon: [640, 512, [], \"e3f2\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H76.1l60.3 316.5c2.2 11.3 12.1 19.5 23.6 19.5H320.7c-.5-5.3-.7-10.6-.7-16c0-10.9 1-21.6 2.9-32h-143l-9.1-48H339.2c29.1-57 88.4-96 156.8-96c14.3 0 28.3 1.7 41.6 4.9l35-124.3C578.3 52.3 563 32 541.8 32H122l-2.4-12.5C117.4 8.2 107.5 0 96 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm320 0a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faSword = {\n prefix: 'fas',\n iconName: 'sword',\n icon: [512, 512, [128481], \"f71c\", \"M511.8 18.6c.8-5.1-.8-10.3-4.5-13.9S498.5-.6 493.4 .2L417.6 12.8c-16.4 2.7-31.6 10.6-43.4 22.3L166.6 242.7 269.3 345.4 476.8 137.8c11.8-11.8 19.6-27 22.3-43.4l12.6-75.8zM84.7 228.7l-16 16c-5.4 5.4-6.2 13.8-2 20.2l53.1 79.6c2.1 3.2 1.7 7.4-1 10.1L79.2 394.2c-2.1 2.1-5.3 2.9-8.2 1.9L37.1 384.8c-5.7-1.9-12.1-.4-16.4 3.9l-16 16c-6.2 6.2-6.2 16.4 0 22.6l80 80c6.2 6.2 16.4 6.2 22.6 0l16-16c4.3-4.3 5.8-10.6 3.9-16.4L115.9 441c-1-2.9-.2-6 1.9-8.2l39.6-39.6c2.7-2.7 6.9-3.1 10.1-1l79.6 53.1c6.3 4.2 14.8 3.4 20.2-2l16-16c6.2-6.2 6.2-16.4 0-22.6l-176-176c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nvar faBackwardFast = {\n prefix: 'fas',\n iconName: 'backward-fast',\n icon: [512, 512, [9198, \"fast-backward\"], \"f049\", \"M493.6 445c-11.2 5.3-24.5 3.6-34.1-4.4L288 297.7V416c0 12.4-7.2 23.7-18.4 29s-24.5 3.6-34.1-4.4L64 297.7V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V214.3L235.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S288 83.6 288 96V214.3L459.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S512 83.6 512 96V416c0 12.4-7.2 23.7-18.4 29z\"]\n};\nvar faFastBackward = faBackwardFast;\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [9842, 9850, 9851], \"f1b8\", \"M174.7 45.1C192.2 17 223 0 256 0s63.8 17 81.3 45.1l38.6 61.7 27-15.6c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3l-23.4 87.4c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l28.4-16.4L283 79c-5.8-9.3-16-15-27-15s-21.2 5.7-27 15l-17.5 28c-9.2 14.8-28.6 19.5-43.6 10.5c-15.3-9.2-20.2-29.2-10.7-44.4l17.5-28zM429.5 251.9c15-9 34.4-4.3 43.6 10.5l24.4 39.1c9.4 15.1 14.4 32.4 14.6 50.2c.3 53.1-42.7 96.4-95.8 96.4L320 448v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2v32l96.2 0c17.6 0 31.9-14.4 31.8-32c0-5.9-1.7-11.7-4.8-16.7l-24.4-39.1c-9.5-15.2-4.7-35.2 10.7-44.4zm-364.6-31L36 204.2c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20l87.4-23.4c12.8-3.4 26 4.2 29.4 17L182 241.2c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-26.5-15.3L68.8 335.3c-3.1 5-4.8 10.8-4.8 16.7c-.1 17.6 14.2 32 31.8 32l32.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.2 0C42.7 448-.3 404.8 0 351.6c.1-17.8 5.1-35.1 14.6-50.2l50.3-80.5z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M370.7 96.1C346.1 39.5 289.7 0 224 0S101.9 39.5 77.3 96.1C60.9 97.5 48 111.2 48 128v64c0 16.8 12.9 30.5 29.3 31.9C101.9 280.5 158.3 320 224 320s122.1-39.5 146.7-96.1c16.4-1.4 29.3-15.1 29.3-31.9V128c0-16.8-12.9-30.5-29.3-31.9zM336 144v16c0 53-43 96-96 96H208c-53 0-96-43-96-96V144c0-26.5 21.5-48 48-48H288c26.5 0 48 21.5 48 48zM189.3 162.7l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM112.7 316.5C46.7 342.6 0 407 0 482.3C0 498.7 13.3 512 29.7 512H128V448c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64l98.3 0c16.4 0 29.7-13.3 29.7-29.7c0-75.3-46.7-139.7-112.7-165.8C303.9 338.8 265.5 352 224 352s-79.9-13.2-111.3-35.5zM176 448c-8.8 0-16 7.2-16 16v48h32V464c0-8.8-7.2-16-16-16zm96 32a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faInterrobang = {\n prefix: 'fas',\n iconName: 'interrobang',\n icon: [320, 512, [8253], \"e5ba\", \"M144 96c-35.3 0-64 28.7-64 64c0 17.7-14.3 32-32 32s-32-14.3-32-32C16 89.3 73.3 32 144 32h32c70.7 0 128 57.3 128 128v3.6c0 43.6-22.1 84.1-58.8 107.7L203 298.4c-6.9 4.4-11 12-11 20.2V320c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.4V176c0-17.7 14.3-32 32-32s32 14.3 32 32v53.4l18.6-12c18.3-11.8 29.4-32.1 29.4-53.8V160c0-35.3-28.7-64-64-64H144zM120 440a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n};\nvar faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M514.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64H440.6L630.8 469.1c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L238.1 161.3 197.8 20.4C194.9 10.2 202.6 0 213.2 0h56.2c11.5 0 22.1 6.2 27.8 16.1L397.7 192l116.6 0zM41.5 128.7l321 252.9L297.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6H144l-43.2 57.6c-3 4-7.8 6.4-12.8 6.4H46c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L64 256 32.5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-6.2 4-11.4 9.5-13.3z\"]\n};\nvar faCircleDashed = {\n prefix: 'fas',\n iconName: 'circle-dashed',\n icon: [512, 512, [], \"e105\", \"M1.1 232C6 179.3 26.9 131.3 58.8 92.7l45.5 45.5C83.7 164.8 69.9 196.9 65.5 232H1.1zM138.3 104.3L92.7 58.8C131.3 26.9 179.3 6 232 1.1V65.5c-35.1 4.4-67.2 18.2-93.7 38.8zM280 446.5c35.1-4.4 67.2-18.2 93.7-38.8l45.5 45.5C380.7 485.1 332.7 506 280 510.9V446.5zm127.7-72.8c20.6-26.6 34.5-58.7 38.8-93.7h64.4c-4.9 52.7-25.8 100.7-57.7 139.3l-45.5-45.5zM92.7 453.2l45.5-45.5c26.6 20.6 58.7 34.5 93.7 38.8v64.4c-52.7-4.9-100.7-25.8-139.3-57.7zM58.8 419.3C26.9 380.7 6 332.7 1.1 280H65.5c4.4 35.1 18.2 67.2 38.8 93.7L58.8 419.3zM419.3 58.8l-45.5 45.5C347.2 83.7 315.1 69.9 280 65.5V1.1C332.7 6 380.7 26.9 419.3 58.8zm-11.6 79.5l45.5-45.5c31.9 38.5 52.8 86.6 57.7 139.3H446.5c-4.4-35.1-18.2-67.2-38.8-93.7z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [8482], \"f25c\", \"M345.6 108.8c-8.3-11-22.7-15.5-35.7-11.2S288 114.2 288 128V384c0 17.7 14.3 32 32 32s32-14.3 32-32V224l86.4 115.2c6 8.1 15.5 12.8 25.6 12.8s19.6-4.7 25.6-12.8L576 224V384c0 17.7 14.3 32 32 32s32-14.3 32-32V128c0-13.8-8.8-26-21.9-30.4s-27.5 .1-35.7 11.2L464 266.7 345.6 108.8zM0 128c0 17.7 14.3 32 32 32H96V384c0 17.7 14.3 32 32 32s32-14.3 32-32V160h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32C14.3 96 0 110.3 0 128z\"]\n};\nvar faBasketball = {\n prefix: 'fas',\n iconName: 'basketball',\n icon: [512, 512, [127936, \"basketball-ball\"], \"f434\", \"M86.6 64l85.2 85.2C194.5 121.7 208 86.4 208 48c0-14.7-2-28.9-5.7-42.4C158.6 15 119 35.5 86.6 64zM64 86.6C35.5 119 15 158.6 5.6 202.3C19.1 206 33.3 208 48 208c38.4 0 73.7-13.5 101.3-36.1L64 86.6zM256 0c-7.3 0-14.6 .3-21.8 .9C238 16 240 31.8 240 48c0 47.3-17.1 90.5-45.4 124L256 233.4 425.4 64C380.2 24.2 320.9 0 256 0zM48 240c-16.2 0-32-2-47.1-5.8C.3 241.4 0 248.7 0 256c0 64.9 24.2 124.2 64 169.4L233.4 256 172 194.6C138.5 222.9 95.3 240 48 240zm463.1 37.8c.6-7.2 .9-14.5 .9-21.8c0-64.9-24.2-124.2-64-169.4L278.6 256 340 317.4c33.4-28.3 76.7-45.4 124-45.4c16.2 0 32 2 47.1 5.8zm-4.7 31.9C492.9 306 478.7 304 464 304c-38.4 0-73.7 13.5-101.3 36.1L448 425.4c28.5-32.3 49.1-71.9 58.4-115.7zM340.1 362.7C317.5 390.3 304 425.6 304 464c0 14.7 2 28.9 5.7 42.4C353.4 497 393 476.5 425.4 448l-85.2-85.2zM317.4 340L256 278.6 86.6 448c45.1 39.8 104.4 64 169.4 64c7.3 0 14.6-.3 21.8-.9C274 496 272 480.2 272 464c0-47.3 17.1-90.5 45.4-124z\"]\n};\nvar faBasketballBall = faBasketball;\nvar faForkKnife = {\n prefix: 'fas',\n iconName: 'fork-knife',\n icon: [576, 512, [\"utensils-alt\"], \"f2e6\", \"M475.3 27.3c5.8-5.8 6.3-15.1 1.1-21.5S462-1.9 455.1 2.7l-106.5 71C320.8 92.3 304 123.6 304 157.1c0 19.3 5.5 37.9 15.7 53.9L73.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L365 256.3c16 10.2 34.7 15.7 53.9 15.7c33.5 0 64.8-16.8 83.4-44.6l71-106.5c4.6-6.8 3.2-16-3.2-21.2s-15.6-4.8-21.5 1.1L457.4 192c-5.2 5.2-13.6 5.2-18.8 0c-4.9-4.9-5.2-12.8-.6-18.1l86.1-99.4c5.5-6.3 5.2-15.9-.8-21.8s-15.4-6.3-21.8-.8L402.1 138c-5.3 4.6-13.2 4.3-18.1-.6c-5.2-5.2-5.2-13.6 0-18.8l91.3-91.3zM52.5 7.3C47.9 2.6 41.5 0 34.9 0c-11.2 0-21 7.5-23.5 18.4C6.7 38.6 0 71.5 0 96c0 83.3 48.2 130.5 128.9 209.4c6.5 6.4 13.3 13 20.3 19.9c1.9 1.8 3.8 3.5 5.9 5.1L265.4 220.1 52.5 7.3zM457.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L355.9 310.6l-45.3 45.3L457.4 502.6z\"]\n};\nvar faUtensilsAlt = faForkKnife;\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [128225], \"f7c0\", \"M192 32c0-17.7 14.3-32 32-32C383.1 0 512 128.9 512 288c0 17.7-14.3 32-32 32s-32-14.3-32-32C448 164.3 347.7 64 224 64c-17.7 0-32-14.3-32-32zM60.6 220.6L164.7 324.7l28.4-28.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1l-28.4 28.4L291.4 451.4c14.5 14.5 11.8 38.8-7.3 46.3C260.5 506.9 234.9 512 208 512C93.1 512 0 418.9 0 304c0-26.9 5.1-52.5 14.4-76.1c7.5-19 31.8-21.8 46.3-7.3zM224 96c106 0 192 86 192 192c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-70.7-57.3-128-128-128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faBadgeCheck = {\n prefix: 'fas',\n iconName: 'badge-check',\n icon: [512, 512, [], \"f336\", \"M256 0c36.8 0 68.8 20.7 84.9 51.1C373.8 41 411 49 437 75s34 63.3 23.9 96.1C491.3 187.2 512 219.2 512 256s-20.7 68.8-51.1 84.9C471 373.8 463 411 437 437s-63.3 34-96.1 23.9C324.8 491.3 292.8 512 256 512s-68.8-20.7-84.9-51.1C138.2 471 101 463 75 437s-34-63.3-23.9-96.1C20.7 324.8 0 292.8 0 256s20.7-68.8 51.1-84.9C41 138.2 49 101 75 75s63.3-34 96.1-23.9C187.2 20.7 219.2 0 256 0zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z\"]\n};\nvar faCircleUp = {\n prefix: 'fas',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM135.1 217.4l107.1-99.9c3.8-3.5 8.7-5.5 13.8-5.5s10.1 2 13.8 5.5l107.1 99.9c4.5 4.2 7.1 10.1 7.1 16.3c0 12.3-10 22.3-22.3 22.3H304v96c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V256H150.3C138 256 128 246 128 233.7c0-6.2 2.6-12.1 7.1-16.3z\"]\n};\nvar faArrowAltCircleUp = faCircleUp;\nvar faSlider = {\n prefix: 'fas',\n iconName: 'slider',\n icon: [512, 512, [], \"e252\", \"M352 160V352H320V160h32zM320 96c-35.3 0-64 28.7-64 64V352c0 35.3 28.7 64 64 64h32c35.3 0 64-28.7 64-64V288h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H416V160c0-35.3-28.7-64-64-64H320zM0 256c0 17.7 14.3 32 32 32H224V224H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faMobileScreenButton = {\n prefix: 'fas',\n iconName: 'mobile-screen-button',\n icon: [384, 512, [\"mobile-alt\"], \"f3cd\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM224 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM304 64H80V384H304V64z\"]\n};\nvar faMobileAlt = faMobileScreenButton;\nvar faClockOneThirty = {\n prefix: 'fas',\n iconName: 'clock-one-thirty',\n icon: [512, 512, [], \"e34f\", \"M256 512A256 256 0 1 1 256 0a256 256 0 1 1 0 512zm24-120V263.3l60-90c7.4-11 4.4-25.9-6.7-33.3s-25.9-4.4-33.3 6.7l-64 96c-2.6 3.9-4 8.6-4 13.3V392c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faInboxOut = {\n prefix: 'fas',\n iconName: 'inbox-out',\n icon: [512, 512, [128228, \"inbox-arrow-up\"], \"f311\", \"M288 109.3V288c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM48 320h76.2c12.1 0 23.2 6.8 28.6 17.7l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7H316.2c12.1 0 23.2-6.8 28.6-17.7l14.3-28.6c5.4-10.8 16.5-17.7 28.6-17.7H464c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48z\"]\n};\nvar faInboxArrowUp = faInboxOut;\nvar faCloudSlash = {\n prefix: 'fas',\n iconName: 'cloud-slash',\n icon: [640, 512, [], \"e137\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L600 445c24.6-23.3 40-56.3 40-93c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-46.4 0-88.2 19.8-117.4 51.3L38.8 5.1zM97.2 172.6c-.8 6.4-1.2 12.9-1.2 19.4c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144H487.4L97.2 172.6z\"]\n};\nvar faVolumeHigh = {\n prefix: 'fas',\n iconName: 'volume-high',\n icon: [640, 512, [128266, \"volume-up\"], \"f028\", \"M533.6 32.5C598.5 85.3 640 165.8 640 256s-41.5 170.8-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"]\n};\nvar faVolumeUp = faVolumeHigh;\nvar faUsersRays = {\n prefix: 'fas',\n iconName: 'users-rays',\n icon: [640, 512, [], \"e593\", \"M41 7C31.6-2.3 16.4-2.3 7 7S-2.3 31.6 7 41l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41 7zM599 7L527 79c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7 505c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 471c-9.4 9.4-9.4 24.6 0 33.9zm592 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM212.1 336c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-.5-1.4-1-2.7-1.6-4c-9.4-22.3-29.8-38.9-54.3-43c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-.8 .1-1.7 .3-2.5 .5c-24.9 5.1-45.1 23-53.4 46.5zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H80c-8.8 0-16-7.2-16-16s7.2-16 16-16H448c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM416 272a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faOctagonCheck = {\n prefix: 'fas',\n iconName: 'octagon-check',\n icon: [512, 512, [], \"e426\", \"M140.6 21.2C154.1 7.7 172.4 .1 191.5 .1h129c19.1 0 37.4 7.6 50.9 21.1L490.8 140.6c13.5 13.5 21.1 31.8 21.1 50.9v129c0 19.1-7.6 37.4-21.1 50.9L371.4 490.8c-13.5 13.5-31.8 21.1-50.9 21.1h-129c-19.1 0-37.4-7.6-50.9-21.1L21.2 371.4C7.7 357.9 .1 339.6 .1 320.5v-129c0-19.1 7.6-37.4 21.1-50.9L140.6 21.2zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z\"]\n};\nvar faFlatbreadStuffed = {\n prefix: 'fas',\n iconName: 'flatbread-stuffed',\n icon: [576, 512, [129369], \"e40c\", \"M272.2 4c-12.8-7-28.7-4.5-38.7 6.1L186.6 59.9c-4.6 4.9-10.5 8.2-17.1 9.5L102.4 82.7c-14.3 2.8-24.9 15-25.7 29.6l-3.8 68.3c-.4 6.7-2.8 13-7 18.2L23.1 252.1c-9.1 11.4-9.4 27.5-.7 39.2l40.9 54.8c4 5.3 6.2 11.8 6.4 18.5l.9 41.2c2.6-4.9 5.9-9.4 9.9-13.3l55.9-55.9C121.1 316.3 112 291.2 112 264c0-66.3 53.7-120 120-120c27.2 0 52.3 9.1 72.5 24.3L424.4 48.4c4.6-4.6 10-8.3 15.8-11.1c-6.1-3.9-13.4-5.7-21-4.8l-67.9 8.1c-6.6 .8-13.3-.5-19.2-3.7L272.2 4zM159.3 313.5L281.5 191.3C267.4 181.6 250.4 176 232 176c-48.6 0-88 39.4-88 88c0 18.4 5.6 35.4 15.3 49.5zM482.8 73.1c-4.3-5.4-10.6-8.6-17.4-9s-13.5 2.2-18.3 7l-43 43-43 43-86 86-86 86-86 86c-4.8 4.8-7.4 11.5-7 18.3s3.7 13.2 9 17.4C150.8 487.1 207.3 512 272 512c150.2 0 272-121.8 272-272c0-64.7-24.9-121.2-61.2-166.9zM256 432a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm-48-48a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCartCirclePlus = {\n prefix: 'fas',\n iconName: 'cart-circle-plus',\n icon: [640, 512, [], \"e3f3\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H76.1l60.3 316.5c2.2 11.3 12.1 19.5 23.6 19.5H320.7c-.5-5.3-.7-10.6-.7-16c0-10.9 1-21.6 2.9-32h-143l-9.1-48H339.2c29.1-57 88.4-96 156.8-96c14.3 0 28.3 1.7 41.6 4.9l35-124.3C578.3 52.3 563 32 541.8 32H122l-2.4-12.5C117.4 8.2 107.5 0 96 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM352 368a144 144 0 1 0 288 0 144 144 0 1 0 -288 0zm208 16H512v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H432c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faTruckClock = {\n prefix: 'fas',\n iconName: 'truck-clock',\n icon: [640, 512, [\"shipping-timed\"], \"f48c\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM320 176A112 112 0 1 0 96 176a112 112 0 1 0 224 0zM208 96c8.8 0 16 7.2 16 16v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16z\"]\n};\nvar faShippingTimed = faTruckClock;\nvar faPool8Ball = {\n prefix: 'fas',\n iconName: 'pool-8-ball',\n icon: [512, 512, [], \"e3c5\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm384-64a128 128 0 1 0 -256 0 128 128 0 1 0 256 0zm-80-48c0 11.5-4 22-10.7 30.2C304.8 184.5 312 199.4 312 216c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-16.6 7.2-31.5 18.7-41.8C212 166 208 155.5 208 144c0-26.5 21.5-48 48-48s48 21.5 48 48zm-48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376H80c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h33.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z\"]\n};\nvar faTurnDownLeft = {\n prefix: 'fas',\n iconName: 'turn-down-left',\n icon: [512, 512, [], \"e331\", \"M177.5 446c-8.8 3.8-19 2-26-4.6l-144-136C2.7 300.9 0 294.6 0 288s2.7-12.9 7.5-17.4l144-136c7-6.6 17.2-8.4 26-4.6s14.5 12.5 14.5 22l0 88 192 0c17.7 0 32-14.3 32-32l0-144c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 144c0 70.7-57.3 128-128 128l-192 0 0 88c0 9.6-5.7 18.2-14.5 22z\"]\n};\nvar faLockHashtag = {\n prefix: 'fas',\n iconName: 'lock-hashtag',\n icon: [448, 512, [], \"e423\", \"M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80zm96 48c-8.8 0-16 7.2-16 16v32H128c-8.8 0-16 7.2-16 16s7.2 16 16 16h32v64H128c-8.8 0-16 7.2-16 16s7.2 16 16 16h32v32c0 8.8 7.2 16 16 16s16-7.2 16-16V416h64v32c0 8.8 7.2 16 16 16s16-7.2 16-16V416h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H288V320h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H288V256c0-8.8-7.2-16-16-16s-16 7.2-16 16v32H192V256c0-8.8-7.2-16-16-16zm16 144V320h64v64H192z\"]\n};\nvar faChartRadar = {\n prefix: 'fas',\n iconName: 'chart-radar',\n icon: [512, 512, [], \"e0e7\", \"M72.5 252c-1.4 2.5-1.4 5.5 0 8l88.3 152.9c1.4 2.5 4.1 4 6.9 4H344.3c2.9 0 5.5-1.5 6.9-4L439.5 260l48.7 28.1L439.5 260c1.4-2.5 1.4-5.5 0-8L351.2 99.1c-1.4-2.5-4.1-4-6.9-4H167.7c-2.9 0-5.5 1.5-6.9 4L72.5 252zM17.1 292c-12.9-22.3-12.9-49.7 0-72L105.4 67.1c12.9-22.3 36.6-36 62.4-36H344.3c25.7 0 49.5 13.7 62.4 36L494.9 220c12.9 22.3 12.9 49.7 0 72L406.6 444.9c-12.9 22.3-36.6 36-62.4 36H167.7c-25.7 0-49.5-13.7-62.4-36L17.1 292zM290.2 180.8l40.2 100.6c17.1 4.6 29.6 20.1 29.6 38.6c0 22.1-17.9 40-40 40c-15.9 0-29.7-9.3-36.1-22.7l-97.2-19.4c-7.1 6.3-16.4 10.2-26.7 10.2c-22.1 0-40-17.9-40-40s17.9-40 40-40l57.6-76.8c-1-3.6-1.6-7.3-1.6-11.2c0-22.1 17.9-40 40-40s40 17.9 40 40c0 7.6-2.1 14.7-5.8 20.8zM202 271.9l79.2 15.8-31.7-79.2L202 271.9z\"]\n};\nvar faStaff = {\n prefix: 'fas',\n iconName: 'staff',\n icon: [512, 512, [], \"f71b\", \"M284.2 44.2C297.8 17.1 325.5 0 355.8 0H432c44.2 0 80 35.8 80 80V183.9c0 35.7-23.7 67.1-58 76.9l-3.9 1.1c-4 1.2-7.5 3.9-9.5 7.5l-19 33.6c-4.3 7.7-14.1 10.4-21.8 6.1l-32.8-18.5c-3.7-2.1-8.1-2.6-12.3-1.5l-85.5 24.4c-2.6 .7-5 2.1-6.9 4.1L81.9 497.9c-18.7 18.7-49.1 18.7-67.9 0s-18.7-49.1 0-67.9l77.3-77.3c3-3 4.7-7.1 4.7-11.3V304c0-8.8 7.2-16 16-16h37.5c4.2 0 8.3-1.7 11.3-4.7l39.4-39.4c9.6-9.6 21.5-16.6 34.6-20.4l169.6-48.5c6.9-2 11.6-8.2 11.6-15.4V112c0-8.8-7.2-16-16-16H371.8c-3.7 0-7.2 2.1-8.8 5.5v0c-11.9 23.7-40.7 33.3-64.4 21.5s-33.3-40.7-21.5-64.4l7.2-14.3z\"]\n};\nvar faBurger = {\n prefix: 'fas',\n iconName: 'burger',\n icon: [512, 512, [\"hamburger\"], \"f805\", \"M61.1 224C45 224 32 211 32 194.9c0-1.9 .2-3.7 .6-5.6C37.9 168.3 78.8 32 256 32s218.1 136.3 223.4 157.3c.5 1.9 .6 3.7 .6 5.6c0 16.1-13 29.1-29.1 29.1H61.1zM144 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm240 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM272 96a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM16 304c0-26.5 21.5-48 48-48H448c26.5 0 48 21.5 48 48s-21.5 48-48 48H64c-26.5 0-48-21.5-48-48zm16 96c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16v16c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V400z\"]\n};\nvar faHamburger = faBurger;\nvar faUtilityPole = {\n prefix: 'fas',\n iconName: 'utility-pole',\n icon: [512, 512, [], \"e2c3\", \"M256 0c17.7 0 32 14.3 32 32V64h96V56c0-13.3 10.7-24 24-24s24 10.7 24 24v8h32V56c0-13.3 10.7-24 24-24s24 10.7 24 24V96c0 17.7-14.3 32-32 32H428.8L288 221.9V288 480c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 221.9L83.2 128H32C14.3 128 0 113.7 0 96V56C0 42.7 10.7 32 24 32s24 10.7 24 24v8H80V56c0-13.3 10.7-24 24-24s24 10.7 24 24v8h96V32c0-17.7 14.3-32 32-32zM140.8 128L224 183.4V128H140.8zM288 183.4L371.2 128H288v55.4z\"]\n};\nvar faTransporter6 = {\n prefix: 'fas',\n iconName: 'transporter-6',\n icon: [512, 512, [], \"e2a7\", \"M56.7 6.6L64 32l25.4 7.3C93.3 40.4 96 43.9 96 48s-2.7 7.6-6.6 8.7L64 64 56.7 89.4C55.6 93.3 52.1 96 48 96s-7.6-2.7-8.7-6.6L32 64 6.6 56.7C2.7 55.6 0 52.1 0 48s2.7-7.6 6.6-8.7L32 32 39.3 6.6C40.4 2.7 43.9 0 48 0s7.6 2.7 8.7 6.6zM384 512H296 216 128c-17.7 0-32-14.3-32-32s14.3-32 32-32H384c17.7 0 32 14.3 32 32s-14.3 32-32 32zm96-128l25.4 7.3c3.9 1.1 6.6 4.7 6.6 8.7s-2.7 7.6-6.6 8.7L480 416l-7.3 25.4c-1.1 3.9-4.7 6.6-8.7 6.6s-7.6-2.7-8.7-6.6L448 416l-25.4-7.3c-3.9-1.1-6.6-4.7-6.6-8.7s2.7-7.6 6.6-8.7L448 384l7.3-25.4c1.1-3.9 4.7-6.6 8.7-6.6s7.6 2.7 8.7 6.6L480 384zM224 0h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H224c-8.8 0-16-7.2-16-16s7.2-16 16-16zM112 256H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [128295], \"f0ad\", \"M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBugs = {\n prefix: 'fas',\n iconName: 'bugs',\n icon: [576, 512, [], \"e4d0\", \"M164.5 107.4l33.4-73.5c5.5-12.1 .1-26.3-11.9-31.8s-26.3-.1-31.8 11.9L128 71.7 101.9 14.1C96.4 2 82.1-3.3 70.1 2.1S52.7 21.9 58.1 33.9l33.4 73.5c-10.2 7.1-18.2 17-22.9 28.6h-17l-4.1-20.7c-2.6-13-15.2-21.4-28.2-18.8S-2.1 111.7 .5 124.7l8 40C10.7 175.9 20.6 184 32 184H64v23.3l-37.8 9.5c-9.5 2.4-16.6 10.2-17.9 19.9l-8 56c-1.9 13.1 7.2 25.3 20.4 27.2s25.3-7.2 27.2-20.4l5.7-40 18.4-4.6C82.7 274.6 103.8 288 128 288s45.3-13.4 56.1-33.2l18.4 4.6 5.7 40c1.9 13.1 14 22.2 27.2 20.4s22.2-14 20.4-27.2l-8-56c-1.4-9.7-8.5-17.5-17.9-19.9L192 207.3V184h32c11.4 0 21.3-8.1 23.5-19.3l8-40c2.6-13-5.8-25.6-18.8-28.2s-25.6 5.8-28.2 18.8L204.3 136h-17c-4.7-11.6-12.7-21.5-22.9-28.6zM496 286.5l65.6-47c10.8-7.7 13.3-22.7 5.6-33.5s-22.7-13.3-33.5-5.6l-51.4 36.8 6.1-62.9c1.3-13.2-8.4-24.9-21.6-26.2s-24.9 8.4-26.2 21.6L432.8 250c-12.3 1-24.2 5.6-34.1 13.3L384 254.8l6.8-20c4.2-12.6-2.5-26.2-15-30.4s-26.2 2.5-30.4 15l-13.1 38.6c-3.7 10.8 .8 22.8 10.7 28.5l27.7 16L359 322.7 321.5 312c-9.4-2.7-19.5 .6-25.5 8.3l-34.9 44.5c-8.2 10.4-6.4 25.5 4.1 33.7s25.5 6.4 33.7-4.1l25-31.8 18.2 5.2c-.5 22.6 11 44.7 32 56.8s45.9 11 65.2-.7l13.6 13.2-15.1 37.5c-4.9 12.3 1 26.3 13.3 31.2s26.3-1 31.2-13.3L503.5 440c3.6-9.1 1.4-19.4-5.6-26.2l-28-27.1 11.6-20.1 27.7 16c9.9 5.7 22.5 3.7 30-4.9L566.2 347c8.7-10 7.8-25.1-2.2-33.9s-25.1-7.8-33.9 2.2l-13.9 15.9-14.7-8.5c1.7-12.4-.2-25-5.5-36.2z\"]\n};\nvar faVectorPolygon = {\n prefix: 'fas',\n iconName: 'vector-polygon',\n icon: [448, 512, [], \"e2c7\", \"M0 64C0 46.3 14.3 32 32 32H96c17.7 0 32 14.3 32 32H320c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H384.3l-4.5 7.9-28.4 49.7c.4 2.1 .6 4.2 .6 6.4v64c0 2.2-.2 4.3-.6 6.4l28.4 49.7 4.5 7.9H416c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32H128c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32V160c-17.7 0-32-14.3-32-32V64zM322.2 372.3L292.3 320H256c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32h36.3l29.9-52.3c-1.4-3.6-2.2-7.5-2.2-11.7H128c0 17.7-14.3 32-32 32V352c17.7 0 32 14.3 32 32H320c0-4.1 .8-8.1 2.2-11.7zM48 80v32H80V80H48zm320 0v32h32V80H368zM80 400H48v32H80V400zm288 0v32h32V400H368zM304 240H272v32h32V240z\"]\n};\nvar faDiagramNested = {\n prefix: 'fas',\n iconName: 'diagram-nested',\n icon: [448, 512, [], \"e157\", \"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H128v96c0 17.7 14.3 32 32 32h96V336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V416H160c-53 0-96-43-96-96V224H48c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [448, 512, [8360, \"rupee\"], \"f156\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256.5 16.4c-.9 6 0 8.7 .4 9.8c.4 1.1 1.4 2.6 4.2 4.9c7.2 5.7 18.7 10 37.9 16.8l1.3 .5c16 5.6 38.7 13.6 55.7 28.1c9.5 8.1 17.9 18.6 23.1 32.3c5.1 13.7 6.1 28.5 3.8 44c-4.2 28.1-20.5 49.3-43.8 60.9c-22.1 11-48.1 12.5-73.2 8l-.2 0 0 0c-9.3-1.8-20.5-5.7-29.3-9c-6-2.3-12.6-4.9-17.7-6.9l0 0c-2.5-1-4.6-1.8-6.3-2.5c-16.5-6.4-24.6-25-18.2-41.4s24.9-24.6 41.4-18.2c2.6 1 5.2 2 7.9 3.1l0 0c4.8 1.9 9.8 3.9 15.4 6c8.8 3.3 15.3 5.4 18.7 6c15.7 2.8 26.7 .8 32.9-2.3c5-2.5 8-6 9.1-13c1-6.9 .2-10.5-.5-12.3c-.6-1.7-1.8-3.6-4.5-5.9c-6.9-5.8-18.2-10.4-36.9-17l-3-1.1c-15.5-5.4-37-13-53.3-25.9c-9.5-7.5-18.3-17.6-23.7-31c-5.5-13.4-6.6-28-4.4-43.2c8.4-57.1 67-78 116.9-68.9c6.9 1.3 27.3 5.8 35.4 8.4c16.9 5.2 26.3 23.2 21.1 40.1s-23.2 26.3-40.1 21.1c-4.7-1.4-22.3-5.5-27.9-6.5c-14.6-2.7-25.8-.4-32.6 3.2c-6.3 3.3-8.9 7.6-9.5 12z\"]\n};\nvar faRupee = faRupeeSign;\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm152 32c5.3 0 10.2 2.6 13.2 6.9l88 128c3.4 4.9 3.7 11.3 1 16.5s-8.2 8.6-14.2 8.6H216 176 128 80c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l48-80c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l12.8 21.4 48.3-70.2c3-4.3 7.9-6.9 13.2-6.9z\"]\n};\nvar faCircleQuestion = {\n prefix: 'fas',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faQuestionCircle = faCircleQuestion;\nvar faImageUser = {\n prefix: 'fas',\n iconName: 'image-user',\n icon: [512, 512, [], \"e1b8\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM192 192a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM144 356.6c0-37.9 30.7-68.6 68.6-68.6h86.9c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4H171.4c-15.1 0-27.4-12.3-27.4-27.4z\"]\n};\nvar faBuoy = {\n prefix: 'fas',\n iconName: 'buoy',\n icon: [576, 512, [], \"e5b5\", \"M192 0c-17.7 0-32 14.3-32 32c0 15.3 10.8 28.1 25.1 31.3L133.8 320H96c-17.7 0-32 14.3-32 32v16c0 8.2 .7 16.1 2 23.9c21-11.1 46.9-9.9 66.9 4.2c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c20-14.1 45.9-15.3 66.9-4.2c1.3-7.8 2-15.8 2-23.9V352c0-17.7-14.3-32-32-32H442.2L390.9 63.3C405.2 60.1 416 47.3 416 32c0-17.7-14.3-32-32-32H192zM325.8 64l9.8 49L288 168.5 240.4 113l9.8-49h75.5zm21.8 108.8l17 84.9-44.9-52.4 27.9-32.6zm-91.1 32.6l-44.9 52.4 17-84.9 27.9 32.6zM221.3 320L288 242.2 354.7 320H221.3zm85.2 101.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [128747], \"f5b0\", \"M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2H248.4c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48H542.8c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.3-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM96 171.6L40.6 128H0V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V171.6zM413.6 421.9L128 196.9V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V128H544zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faBookBookmark = {\n prefix: 'fas',\n iconName: 'book-bookmark',\n icon: [448, 512, [], \"e0bb\", \"M0 96C0 43 43 0 96 0h96V190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5V0h32 32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faBorderCenterH = {\n prefix: 'fas',\n iconName: 'border-center-h',\n icon: [448, 512, [], \"f89c\", \"M32 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0-384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM320 416a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-320a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM224 416a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-320a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM416 416a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-384a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM32 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM224 320a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm192 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM32 320a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM416 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM32 128a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm192 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 224z\"]\n};\nvar faCanFood = {\n prefix: 'fas',\n iconName: 'can-food',\n icon: [384, 512, [129387], \"e3e6\", \"M270.3 304.5c12.1-2.5 23.4-5.5 33.7-9V426c-2.8 1.6-6.6 3.6-11.8 5.7C269.8 440.9 234.4 448 192 448s-77.8-7.1-100.2-16.3c-5.2-2.1-9-4.1-11.8-5.7V295.5c10.3 3.5 21.6 6.5 33.7 9c7.6 36.3 39.8 63.5 78.3 63.5s70.7-27.2 78.3-63.5zm-100.1-40a32 32 0 1 1 43.5 46.9 32 32 0 1 1 -43.5-46.9zM16 72V240 440c0 39.8 78.8 72 176 72s176-32.2 176-72V240 72c0-39.8-78.8-72-176-72S16 32.2 16 72zm288 0c0 13.3-50.1 24-112 24S80 85.3 80 72s50.1-24 112-24s112 10.7 112 24z\"]\n};\nvar faTypewriter = {\n prefix: 'fas',\n iconName: 'typewriter',\n icon: [512, 512, [], \"f8e7\", \"M64 64C64 28.7 92.7 0 128 0H354.7c17 0 33.3 6.7 45.3 18.7L429.3 48c12 12 18.7 28.3 18.7 45.3V192h32c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V288c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32H64V64zm320 64H352c-17.7 0-32-14.3-32-32V64H128V192h18.7c8.5 0 16.6 3.4 22.6 9.4l13.3 13.3c6 6 14.1 9.4 22.6 9.4H306.7c8.5 0 16.6-3.4 22.6-9.4l13.3-13.3c6-6 14.1-9.4 22.6-9.4H384V128zM160 288a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm64 0a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm64 0a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm64 0a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm64 0a16 16 0 1 0 0 32 16 16 0 1 0 0-32zM96 288a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm64 128c-8.8 0-16 7.2-16 16s7.2 16 16 16H352c8.8 0 16-7.2 16-16s-7.2-16-16-16H160zm-32-32a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm64 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faArrowRightFromArc = {\n prefix: 'fas',\n iconName: 'arrow-right-from-arc',\n icon: [512, 512, [], \"e4b1\", \"M64 256C64 150 150 64 256 64c17.7 0 32-14.3 32-32s-14.3-32-32-32C114.6 0 0 114.6 0 256S114.6 512 256 512c17.7 0 32-14.3 32-32s-14.3-32-32-32C150 448 64 362 64 256zM390.6 121.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H402.7l-57.4 57.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112z\"]\n};\nvar faCircleK = {\n prefix: 'fas',\n iconName: 'circle-k',\n icon: [512, 512, [], \"e113\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm89.1-343.2l-73.1 74.3 75.3 102.7c7.8 10.7 5.5 25.7-5.2 33.5s-25.7 5.5-33.5-5.2L238 277.8l-30 30.5V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V298.5 152c0-13.3 10.7-24 24-24s24 10.7 24 24v87.8L310.9 135.2c9.3-9.5 24.5-9.6 33.9-.3s9.6 24.5 .3 33.9z\"]\n};\nvar faFaceHandOverMouth = {\n prefix: 'fas',\n iconName: 'face-hand-over-mouth',\n icon: [512, 512, [129762], \"e378\", \"M512 256c0 113.1-73.3 209.1-175.1 242.9l49-49c18.1-18.1 18.7-47.1 1.8-65.9c16.9-18.8 16.3-47.8-1.8-65.9c-1-1-2.1-2-3.2-3c3.7-15.7-.5-32.8-12.8-45s-29.4-16.5-45-12.8c-.9-1.1-1.9-2.2-3-3.2c-18.7-18.7-49.1-18.7-67.9 0L207 301.1c-9.4-13.7-25.1-22.7-43-22.7c-28.7 0-52 23.3-52 52V384v32.8c0 21.9 5.5 42.5 15.3 60.5C51.2 433 0 350.5 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256zM208.4 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-37.1 52.7c6.2 6.2 6.2 16.4 0 22.6L248 350.6c-2.6 2.6-2.6 6.8 0 9.4s6.8 2.6 9.4 0l67.3-67.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L280 382.6c-2.6 2.6-2.6 6.8 0 9.4s6.8 2.6 9.4 0l51.3-51.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L312 414.6c-2.6 2.6-2.6 6.8 0 9.4s6.8 2.6 9.4 0l19.3-19.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-56.8 56.8C288.7 502 264.4 512 239.2 512c-52.6 0-95.2-42.6-95.2-95.2V384 330.4c0-11 9-20 20-20s20 9 20 20v19.7c0 7.1 8.6 10.7 13.7 5.7l79-79c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPopcorn = {\n prefix: 'fas',\n iconName: 'popcorn',\n icon: [448, 512, [127871], \"f819\", \"M32.2 160c-.1-1.3-.2-2.7-.2-4c0-20.9 14.5-38.3 34-42.9c-1.3-4.2-2-8.6-2-13.1c0-24.3 19.7-44 44-44c1.9 0 3.7 .1 5.6 .3C118.7 37.7 135.7 24 156 24c8.5 0 16.5 2.4 23.2 6.6C186.2 12.7 203.6 0 224 0s37.8 12.7 44.8 30.6c6.7-4.2 14.7-6.6 23.2-6.6c20.3 0 37.3 13.7 42.4 32.3c1.8-.2 3.7-.3 5.6-.3c24.3 0 44 19.7 44 44c0 4.6-.7 9-2 13.1c19.5 4.5 34 22 34 42.9c0 1.3-.1 2.7-.2 4H328.2 119.8 32.2zm-4 32H97.8l30.3 257.9c1 8.8 9 15.1 17.8 14s15.1-9 14-17.8L130 192h78V448c0 8.8 7.2 16 16 16s16-7.2 16-16V192h78L288.1 446.1c-1 8.8 5.2 16.7 14 17.8s16.7-5.2 17.8-14L350.2 192h69.6c15.6 0 28.2 12.6 28.2 28.2c0 2.5-.3 5.1-1 7.5L377.8 476.8C372 497.6 353.1 512 331.5 512h-215c-21.6 0-40.5-14.4-46.2-35.2L1 227.7c-.7-2.5-1-5-1-7.5C0 204.6 12.6 192 28.2 192z\"]\n};\nvar faHouseWater = {\n prefix: 'fas',\n iconName: 'house-water',\n icon: [576, 512, [\"house-flood\"], \"f74f\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V393c21.3-12.2 48.1-11.4 68.8 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c20.7-14.6 47.7-15.4 69.1-3l-.5-105.6h32zM224 216c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24H248c-13.3 0-24-10.7-24-24V216zm82.5 205.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faHouseFlood = faHouseWater;\nvar faObjectSubtract = {\n prefix: 'fas',\n iconName: 'object-subtract',\n icon: [512, 512, [], \"e49e\", \"M512 448c0 35.3-28.7 64-64 64l-224 0c-35.3 0-64-28.7-64-64l0-96-96 0c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0L288 0c35.3 0 64 28.7 64 64l0 96 96 0c35.3 0 64 28.7 64 64l0 224zM288 288l0-224L64 64l0 224 224 0z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [448, 512, [], \"f126\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3v87.8c18.8-10.9 40.7-17.1 64-17.1h96c35.3 0 64-28.7 64-64v-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V160c0 70.7-57.3 128-128 128H176c-35.3 0-64 28.7-64 64v6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V352 153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faWarehouseFull = {\n prefix: 'fas',\n iconName: 'warehouse-full',\n icon: [640, 512, [\"warehouse-alt\"], \"f495\", \"M0 488V171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4V488c0 13.3-10.7 24-24 24H568c-13.3 0-24-10.7-24-24V224c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32V488c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zM376 384H488c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24H376c-13.3 0-24-10.7-24-24V408c0-13.3 10.7-24 24-24zM128 248c0-13.3 10.7-24 24-24H296c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24H152c-13.3 0-24-10.7-24-24V248zm24 136H296c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24H152c-13.3 0-24-10.7-24-24V408c0-13.3 10.7-24 24-24z\"]\n};\nvar faWarehouseAlt = faWarehouseFull;\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M320 64c14.4 0 22.3-7 30.8-14.4C360.4 41.1 370.7 32 392 32c49.3 0 84.4 152.2 97.9 221.9C447.8 272.1 390.9 288 320 288s-127.8-15.9-169.9-34.1C163.6 184.2 198.7 32 248 32c21.3 0 31.6 9.1 41.2 17.6C297.7 57 305.6 64 320 64zM111.1 270.7c47.2 24.5 117.5 49.3 209 49.3s161.8-24.8 208.9-49.3c24.8-12.9 49.8-28.3 70.1-47.7c7.9-7.9 20.2-9.2 29.6-3.3c9.5 5.9 13.5 17.9 9.9 28.5c-13.5 37.7-38.4 72.3-66.1 100.6C523.7 398.9 443.6 448 320 448s-203.6-49.1-252.5-99.2C39.8 320.4 14.9 285.8 1.4 248.1c-3.6-10.6 .4-22.6 9.9-28.5c9.5-5.9 21.7-4.5 29.6 3.3c20.4 19.4 45.3 34.8 70.1 47.7z\"]\n};\nvar faBridge = {\n prefix: 'fas',\n iconName: 'bridge',\n icon: [576, 512, [], \"e4c8\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H72v64H0V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96s96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96V160H504V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM456 96v64H376V96h80zM328 96v64H248V96h80zM200 96v64H120V96h80z\"]\n};\nvar faPhoneFlip = {\n prefix: 'fas',\n iconName: 'phone-flip',\n icon: [512, 512, [128381, \"phone-alt\"], \"f879\", \"M347.1 24.6c7.7-18.6 28-28.5 47.4-23.2l88 24C499.9 30.2 512 46 512 64c0 247.4-200.6 448-448 448c-18 0-33.8-12.1-38.6-29.5l-24-88c-5.3-19.4 4.6-39.7 23.2-47.4l96-40c16.3-6.8 35.2-2.1 46.3 11.6L207.3 368c70.4-33.3 127.4-90.3 160.7-160.7L318.7 167c-13.7-11.2-18.4-30-11.6-46.3l40-96z\"]\n};\nvar faPhoneAlt = faPhoneFlip;\nvar faArrowDownFromDottedLine = {\n prefix: 'fas',\n iconName: 'arrow-down-from-dotted-line',\n icon: [448, 512, [], \"e090\", \"M32 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96 0a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM256 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM448 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM374.6 342.6l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 370.7V304 192c0-17.7 14.3-32 32-32s32 14.3 32 32V304v66.7l73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nvar faFileDoc = {\n prefix: 'fas',\n iconName: 'file-doc',\n icon: [512, 512, [], \"e5ed\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM176 352h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H176c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm16 128h16c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H192v96zM456 352h16c22.1 0 40 17.9 40 40v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-4.4-3.6-8-8-8H456c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-8c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 22.1-17.9 40-40 40H456c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40zM288 392c0-22.1 17.9-40 40-40h16c22.1 0 40 17.9 40 40v80c0 22.1-17.9 40-40 40H328c-22.1 0-40-17.9-40-40V392zm40-8c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V392c0-4.4-3.6-8-8-8H328z\"]\n};\nvar faSquareQuarters = {\n prefix: 'fas',\n iconName: 'square-quarters',\n icon: [448, 512, [], \"e44e\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 0L224 256 384 96H64zm0 320H384L224 256 64 416z\"]\n};\nvar faTruckFront = {\n prefix: 'fas',\n iconName: 'truck-front',\n icon: [512, 512, [], \"e2b7\", \"M0 80C0 35.8 35.8 0 80 0H432c44.2 0 80 35.8 80 80V368c0 26.2-12.6 49.4-32 64v48c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V432C12.6 417.4 0 394.2 0 368V80zm129.9 72.2L112 224H400l-17.9-71.8C378.5 138 365.7 128 351 128H161c-14.7 0-27.5 10-31 24.2zM128 320a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [576, 512, [128008], \"f6be\", \"M320 192h17.1c22.1 38.3 63.5 64 110.9 64c11 0 21.8-1.4 32-4v4 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V339.2L280 448h56c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-53 0-96-43-96-96V192.5c0-16.1-12-29.8-28-31.8l-7.9-1c-17.5-2.2-30-18.2-27.8-35.7s18.2-30 35.7-27.8l7.9 1c48 6 84.1 46.8 84.1 95.3v85.3c34.4-51.7 93.2-85.8 160-85.8zm160 26.5v0c-10 3.5-20.8 5.5-32 5.5c-28.4 0-54-12.4-71.6-32h0c-3.7-4.1-7-8.5-9.9-13.2C357.3 164 352 146.6 352 128v0V32 12 10.7C352 4.8 356.7 .1 362.6 0h.2c3.3 0 6.4 1.6 8.4 4.2l0 .1L384 21.3l27.2 36.3L416 64h64l4.8-6.4L512 21.3 524.8 4.3l0-.1c2-2.6 5.1-4.2 8.4-4.2h.2C539.3 .1 544 4.8 544 10.7V12 32v96c0 17.3-4.6 33.6-12.6 47.6c-11.3 19.8-29.6 35.2-51.4 42.9zM432 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faTrashXmark = {\n prefix: 'fas',\n iconName: 'trash-xmark',\n icon: [448, 512, [], \"e2b4\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zM143 239c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faCircleCaretLeft = {\n prefix: 'fas',\n iconName: 'circle-caret-left',\n icon: [512, 512, [\"caret-circle-left\"], \"f32e\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zm-368 0c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nvar faCaretCircleLeft = faCircleCaretLeft;\nvar faFiles = {\n prefix: 'fas',\n iconName: 'files',\n icon: [448, 512, [], \"e178\", \"M320 0H160C124.7 0 96 28.7 96 64V352c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V128H352c-17.7 0-32-14.3-32-32V0zM448 96L416 64 384 32 352 0V45.3 64 96h32 18.7H448zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V376c0 75.1 60.9 136 136 136H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faAnchorCircleExclamation = {\n prefix: 'fas',\n iconName: 'anchor-circle-exclamation',\n icon: [640, 512, [], \"e4ab\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faFaceClouds = {\n prefix: 'fas',\n iconName: 'face-clouds',\n icon: [640, 512, [], \"e47d\", \"M128 0C104.3 0 83.6 12.9 72.6 32H64C28.7 32 0 60.7 0 96s28.7 64 64 64H224c35.3 0 64-28.7 64-64s-28.7-64-64-64c-13.2 0-25.4 4-35.6 10.8C179.7 17.9 155.9 0 128 0zM72.1 192c-5.3 20.5-8.1 41.9-8.1 64c0 114.6 75.4 211.7 179.3 244.3c-12.1-17-19.3-37.8-19.3-60.3c0-50.6 36.2-92.8 84.1-102.1C321.2 290.7 364.6 256 416 256c29.1 0 55.6 11.1 75.5 29.2c8.9-3.4 18.5-5.2 28.5-5.2c20 0 38.3 7.3 52.3 19.5c2.4-14.1 3.7-28.7 3.7-43.5C576 114.6 461.4 0 320 0c-20.6 0-40.7 2.4-59.9 7C295.2 21.3 320 55.8 320 96c0 39.6-24 73.6-58.2 88.3c6.5 5.9 10.5 14.3 10.5 23.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-5.8 1.6-11.3 4.3-16H72.1zm328.3-16a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM336 368h-8c-39.8 0-72 32.2-72 72s32.2 72 72 72H568c39.8 0 72-32.2 72-72s-32.2-72-72-72h-.7c.4-2.6 .7-5.3 .7-8c0-26.5-21.5-48-48-48c-13.9 0-26.4 5.9-35.1 15.3C470.9 303.8 445.3 288 416 288c-44.2 0-80 35.8-80 80z\"]\n};\nvar faUserCrown = {\n prefix: 'fas',\n iconName: 'user-crown',\n icon: [448, 512, [], \"f6a4\", \"M144 128v16c0 44.2 35.8 80 80 80s80-35.8 80-80V128H144zm0-108.8c10.2 7.5 23.8 8.3 34.9 2L209.1 4c4.6-2.6 9.7-4 14.9-4s10.4 1.4 14.9 4l30.2 17.2c11 6.3 24.7 5.5 34.9-2l.1-.1c.3-.2 .6-.4 .8-.6l3-2.4L323.6 3.5c2.8-2.3 6.4-3.5 10-3.5H336c8.8 0 16 7.2 16 16V39v3.2 .1V144c0 70.7-57.3 128-128 128s-128-57.3-128-128V42.3v-.1V39 16c0-8.8 7.2-16 16-16h2.4c3.6 0 7.2 1.2 10 3.5L140 16l3 2.4c.3 .2 .6 .4 .8 .6l.1 .1zM0 472c0-92.8 75.2-168 168-168H280c92.8 0 168 75.2 168 168v8c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32v-8z\"]\n};\nvar faTruckField = {\n prefix: 'fas',\n iconName: 'truck-field',\n icon: [640, 512, [], \"e58d\", \"M32 96c0-35.3 28.7-64 64-64H320c23.7 0 44.4 12.9 55.4 32h51.8c25.3 0 48.2 14.9 58.5 38l52.8 118.8c.5 1.1 .9 2.1 1.3 3.2H544c35.3 0 64 28.7 64 64v32c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V288c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32V96zM384 224h85.9l-42.7-96H384v96zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M512 96c0 50.2-59.1 125.1-84.6 155c-3.8 4.4-9.4 6.1-14.5 5H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c53 0 96 43 96 96s-43 96-96 96H139.6c8.7-9.9 19.3-22.6 30-36.8c6.3-8.4 12.8-17.6 19-27.2H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-53 0-96-43-96-96s43-96 96-96h39.8c-21-31.5-39.8-67.7-39.8-96c0-53 43-96 96-96s96 43 96 96zM117.1 489.1c-3.8 4.3-7.2 8.1-10.1 11.3l-1.8 2-.2-.2c-6 4.6-14.6 4-20-1.8C59.8 473 0 402.5 0 352c0-53 43-96 96-96s96 43 96 96c0 30-21.1 67-43.5 97.9c-10.7 14.7-21.7 28-30.8 38.5l-.6 .7zM128 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faCartCircleCheck = {\n prefix: 'fas',\n iconName: 'cart-circle-check',\n icon: [640, 512, [], \"e3f1\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H76.1l60.3 316.5c2.2 11.3 12.1 19.5 23.6 19.5H320.7c-.5-5.3-.7-10.6-.7-16c0-10.9 1-21.6 2.9-32h-143l-9.1-48H339.2c29.1-57 88.4-96 156.8-96c14.3 0 28.3 1.7 41.6 4.9l35-124.3C578.3 52.3 563 32 541.8 32H122l-2.4-12.5C117.4 8.2 107.5 0 96 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z\"]\n};\nvar faClipboardQuestion = {\n prefix: 'fas',\n iconName: 'clipboard-question',\n icon: [384, 512, [], \"e4e3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V314.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H158.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faPanorama = {\n prefix: 'fas',\n iconName: 'panorama',\n icon: [640, 512, [], \"e209\", \"M45.6 32C20.4 32 0 52.4 0 77.6V434.4C0 459.6 20.4 480 45.6 480c5.1 0 10-.8 14.7-2.4C74.6 472.8 177.6 440 320 440s245.4 32.8 259.6 37.6c4.7 1.6 9.7 2.4 14.7 2.4c25.2 0 45.6-20.4 45.6-45.6V77.6C640 52.4 619.6 32 594.4 32c-5 0-10 .8-14.7 2.4C565.4 39.2 462.4 72 320 72S74.6 39.2 60.4 34.4C55.6 32.8 50.7 32 45.6 32zM96 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm272 0c7.9 0 15.4 3.9 19.8 10.5L512.3 353c5.4 8 5.6 18.4 .4 26.5s-14.7 12.3-24.2 10.7C442.7 382.4 385.2 376 320 376c-65.6 0-123.4 6.5-169.3 14.4c-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L197.3 265c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l26.4 33.1 87-127.6c4.5-6.6 11.9-10.5 19.8-10.5z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM224 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V272H176c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [576, 512, [], \"f62f\", \"M96 32C43 32 0 75 0 128v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-53-43-96-96-96H96zM224 96c26.5 0 48 21.5 48 48v56c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V144c0-26.5 21.5-48 48-48zm80 48c0-26.5 21.5-48 48-48s48 21.5 48 48v56c0 13.3-10.7 24-24 24H328c-13.3 0-24-10.7-24-24V144zM96 128c26.5 0 48 21.5 48 48v24c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V176c0-26.5 21.5-48 48-48zm336 48c0-26.5 21.5-48 48-48s48 21.5 48 48v24c0 13.3-10.7 24-24 24H456c-13.3 0-24-10.7-24-24V176zM96 480H480c53 0 96-43 96-96V352c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v32c0 53 43 96 96 96zm0-64c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48zm176 48c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nvar faUserTieHairLong = {\n prefix: 'fas',\n iconName: 'user-tie-hair-long',\n icon: [448, 512, [], \"e460\", \"M304 144c0 44.2-35.8 80-80 80s-80-35.8-80-80V128c0-5.5 .6-10.8 1.6-16H176c29.8 0 55.9-16.3 69.6-40.5C257.3 86.4 275.5 96 296 96h1.3c4.3 9.8 6.7 20.6 6.7 32v16zM224 0C153.3 0 96 57.3 96 128v11c0 33.9-13.5 66.5-37.5 90.5l-3.9 3.9c-4.2 4.2-6.6 10-6.6 16C48 261.9 58.1 272 70.6 272H224 377.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16l-3.9-3.9c-24-24-37.5-56.6-37.5-90.5V128C352 57.3 294.7 0 224 0zm55.7 510.9c1.8 .7 3.8 1.1 5.8 1.1H417.3c17 0 30.7-13.8 30.7-30.7c0-75.5-51.9-138.9-121.9-156.4c-8.1-2-15.9 3.3-17.9 11.3l-36 146.9L238.9 359.2l18.6-31c6.4-10.7-1.3-24.2-13.7-24.2H224 204.3c-12.4 0-20.1 13.6-13.7 24.2l18.6 31L175.8 483.1l-36-146.9c-2-8.1-9.8-13.4-17.9-11.3C51.9 342.4 0 405.8 0 481.3c0 17 13.8 30.7 30.7 30.7H162.5c2.1 0 4-.4 5.8-1.1L168 512H280l-.3-1.1z\"]\n};\nvar faFileCircleMinus = {\n prefix: 'fas',\n iconName: 'file-circle-minus',\n icon: [576, 512, [], \"e4ed\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faHeadSideMedical = {\n prefix: 'fas',\n iconName: 'head-side-medical',\n icon: [512, 512, [], \"f809\", \"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM192 112v48H144c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h48c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H256V112c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [512, 512, [], \"f02c\", \"M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5V80C0 53.5 21.5 32 48 32H197.5c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [320, 512, [127863], \"f4e3\", \"M32.1 29.3C33.5 12.8 47.4 0 64 0H256c16.6 0 30.5 12.8 31.9 29.3l14 168.4c6 72-42.5 135.2-109.9 150.6V448h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H160 80c-17.7 0-32-14.3-32-32s14.3-32 32-32h48V348.4C60.6 333 12.1 269.8 18.1 197.8l14-168.4zm56 98.7H231.9l-5.3-64H93.4l-5.3 64z\"]\n};\nvar faForwardFast = {\n prefix: 'fas',\n iconName: 'forward-fast',\n icon: [512, 512, [9197, \"fast-forward\"], \"f050\", \"M18.4 445c11.2 5.3 24.5 3.6 34.1-4.4L224 297.7V416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4L448 297.7V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96c0-17.7-14.3-32-32-32s-32 14.3-32 32V214.3L276.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S224 83.6 224 96V214.3L52.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S0 83.6 0 96V416c0 12.4 7.2 23.7 18.4 29z\"]\n};\nvar faFastForward = faForwardFast;\nvar faFaceMehBlank = {\n prefix: 'fas',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm208.4-48a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMehBlank = faFaceMehBlank;\nvar faUserRobot = {\n prefix: 'fas',\n iconName: 'user-robot',\n icon: [448, 512, [], \"e04b\", \"M224 0c8.8 0 16 7.2 16 16V64h64c35.3 0 64 28.7 64 64V256c0 35.3-28.7 64-64 64H144c-35.3 0-64-28.7-64-64V128c0-35.3 28.7-64 64-64h64V16c0-8.8 7.2-16 16-16zM16 144c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V144zm400-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM160 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM160 240a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm48 16a16 16 0 1 0 32 0 16 16 0 1 0 -32 0zm80-16a16 16 0 1 0 0 32 16 16 0 1 0 0-32zM96 352H352c53 0 96 43 96 96v32c0 17.7-14.3 32-32 32H352V448c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32-14.3-32-32V448c0-53 43-96 96-96zm80 112v48H144V464c0-8.8 7.2-16 16-16s16 7.2 16 16zm48-16c8.8 0 16 7.2 16 16v48H208V464c0-8.8 7.2-16 16-16zm80 16v48H272V464c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faSquareParking = {\n prefix: 'fas',\n iconName: 'square-parking',\n icon: [448, 512, [127359, \"parking\"], \"f540\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM192 256h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H192v64zm48 64H192v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 168c0-22.1 17.9-40 40-40h72c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nvar faParking = faSquareParking;\nvar faCardDiamond = {\n prefix: 'fas',\n iconName: 'card-diamond',\n icon: [384, 512, [], \"e3ea\", \"M0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm180.7 84.7l-96 96c-6.2 6.2-6.2 16.4 0 22.6l96 96c6.2 6.2 16.4 6.2 22.6 0l96-96c6.2-6.2 6.2-16.4 0-22.6l-96-96c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nvar faFaceZipper = {\n prefix: 'fas',\n iconName: 'face-zipper',\n icon: [512, 512, [], \"e3a5\", \"M492.4 354.4C505 324.1 512 290.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c50.3 0 97.2-14.5 136.7-39.5c-1.1-1.8-2.2-3.7-3.1-5.7l-29.1-58.1c-9.2-18.5-5.6-40.8 9-55.4l15.7-15.7c14.6-14.6 36.9-18.2 55.4-9l51.8 25.9zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM144 336v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm48-16c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm48-16c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm98.2 132.4c14.7 29.3 53.7 35.6 76.9 12.5l1.8-1.8c23.2-23.2 16.8-62.2-12.5-76.9l-58.1-29.1c-6.2-3.1-13.6-1.9-18.5 3l-15.7 15.7c-4.9 4.9-6.1 12.3-3 18.5l29.1 58.1zm62.3-36.9c4.7 4.7 4.7 12.3 0 17l-16 16c-4.7 4.7-12.3 4.7-17 0s-4.7-12.3 0-17l16-16c4.7-4.7 12.3-4.7 17 0z\"]\n};\nvar faFaceRaisedEyebrow = {\n prefix: 'fas',\n iconName: 'face-raised-eyebrow',\n icon: [512, 512, [], \"e388\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm208.4-16a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM144 352c0 8.8 7.2 16 16 16H352c8.8 0 16-7.2 16-16s-7.2-16-16-16H160c-8.8 0-16 7.2-16 16zM328.8 141.8c10.7-10.7 28.5-8.9 36.9 3.7l4.9 7.4c4.9 7.4 14.8 9.3 22.2 4.4s9.3-14.8 4.4-22.2l-4.9-7.4c-19.6-29.4-61.2-33.5-86.2-8.5l-29.5 29.5c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l29.5-29.5zM128 144c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H128z\"]\n};\nvar faHouseSignal = {\n prefix: 'fas',\n iconName: 'house-signal',\n icon: [576, 512, [], \"e012\", \"M357.7 8.5c-12.3-11.3-31.2-11.3-43.4 0l-208 192c-9.4 8.6-12.7 22-8.5 34c87.1 25.3 155.6 94.2 180.3 181.6H464c26.5 0 48-21.5 48-48V256h32c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8.1-35.2l-208-192zM288 208c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V208zM24 256c-13.3 0-24 10.7-24 24s10.7 24 24 24c101.6 0 184 82.4 184 184c0 13.3 10.7 24 24 24s24-10.7 24-24c0-128.1-103.9-232-232-232zm8 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM0 376c0 13.3 10.7 24 24 24c48.6 0 88 39.4 88 88c0 13.3 10.7 24 24 24s24-10.7 24-24c0-75.1-60.9-136-136-136c-13.3 0-24 10.7-24 24z\"]\n};\nvar faSquareChevronUp = {\n prefix: 'fas',\n iconName: 'square-chevron-up',\n icon: [448, 512, [\"chevron-square-up\"], \"f32c\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM241 167L345 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L207 167c9.4-9.4 24.6-9.4 33.9 0z\"]\n};\nvar faChevronSquareUp = faSquareChevronUp;\nvar faNfcSymbol = {\n prefix: 'fas',\n iconName: 'nfc-symbol',\n icon: [512, 512, [], \"e531\", \"M348.9 471.8c10.3 9.3 25.4 10.8 37.4 3.9C461.6 432.1 512 348.8 512 256s-50.3-176.1-125.7-219.7C371 27.5 351.4 32.7 342.6 48s-3.6 34.9 11.7 43.7C410.1 124 448 186.4 448 256c0 61.4-29.5 117.2-74.8 151.7L213.4 264.2c-13.2-11.8-33.4-10.7-45.2 2.4s-10.7 33.4 2.4 45.2l178.3 160zM163.1 40.2c-10.3-9.3-25.4-10.8-37.4-3.9C50.3 79.9 0 163.2 0 256s50.3 176.1 125.7 219.7c15.3 8.8 34.9 3.6 43.7-11.7s3.6-34.9-11.7-43.7C101.9 388 64 325.7 64 256c0-61.4 29.5-117.2 74.8-151.7L298.6 247.8c13.2 11.8 33.4 10.7 45.2-2.4s10.7-33.4-2.4-45.2L163.1 40.2z\"]\n};\nvar faBarsProgress = {\n prefix: 'fas',\n iconName: 'bars-progress',\n icon: [512, 512, [\"tasks-alt\"], \"f828\", \"M448 160H320V128H448v32zM48 64C21.5 64 0 85.5 0 112v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zM448 352v32H192V352H448zM48 288c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H48z\"]\n};\nvar faTasksAlt = faBarsProgress;\nvar faFaucetDrip = {\n prefix: 'fas',\n iconName: 'faucet-drip',\n icon: [512, 512, [128688], \"e006\", \"M224 0c17.7 0 32 14.3 32 32V44l96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12V32c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32h96l22.6-22.6c6-6 14.1-9.4 22.6-9.4H192V116.2l32-4 32 4V160h18.7c8.5 0 16.6 3.4 22.6 9.4L320 192h32c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32s-14.3-32-32-32H315.9c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48H32c-17.7 0-32-14.3-32-32V224zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V480c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z\"]\n};\nvar faArrowsToLine = {\n prefix: 'fas',\n iconName: 'arrows-to-line',\n icon: [448, 512, [], \"e0a7\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H256V32zM201.4 329.4l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faDolphin = {\n prefix: 'fas',\n iconName: 'dolphin',\n icon: [512, 512, [], \"e168\", \"M477.3 24.9c3.5-5.3 3.6-12.2 .1-17.6S467.7-.8 461.4 .2c-16.7 2.8-43.1 8.6-68.8 17C378 22 362.5 28 349 35.3C306.5 12.8 258 0 206.5 0H176C96.5 0 32 64.5 32 144c0 18.6 3.5 36.4 10 52.7L20.5 209.6C7.8 217.2 0 231 0 245.8C0 269.1 18.9 288 42.2 288H176h16 11.2l92 61.3c4.9 3.3 11.2 3.6 16.4 .8s8.5-8.2 8.5-14.1V288h6.6c31.7 0 57.4 25.7 57.4 57.4c0 30.6-24 55.8-54.5 57.3l-53.4 2.7c-20.2-33-56.3-53.4-95.4-53.4H176c-5.5 0-10.7 2.9-13.6 7.6s-3.2 10.6-.7 15.6L190.1 432l-28.4 56.8c-2.5 5-2.2 10.9 .7 15.6s8.1 7.6 13.6 7.6h4.7c35.9 0 69.2-17.1 90.1-45.4l68 3.8c94.1 5.2 173.3-70 173.3-164.3c0-80.8-31.4-154.5-82.7-209.3l48-72zM176 120a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faArrowUpRight = {\n prefix: 'fas',\n iconName: 'arrow-up-right',\n icon: [384, 512, [], \"e09f\", \"M352 128c0-17.7-14.3-32-32-32L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l146.7 0L41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 205.3 288 352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224z\"]\n};\nvar faCircleR = {\n prefix: 'fas',\n iconName: 'circle-r',\n icon: [512, 512, [], \"e120\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 128H288c44.2 0 80 35.8 80 80c0 36.6-24.6 67.5-58.2 77l45.4 60.6c8 10.6 5.8 25.6-4.8 33.6s-25.6 5.8-33.6-4.8L252 288H208v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 152c0-13.3 10.7-24 24-24zm80 112h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H208v64h56z\"]\n};\nvar faCartFlatbed = {\n prefix: 'fas',\n iconName: 'cart-flatbed',\n icon: [640, 512, [\"dolly-flatbed\"], \"f474\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64H48c8.8 0 16 7.2 16 16V368c0 44.2 35.8 80 80 80h18.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H450.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H144c-8.8 0-16-7.2-16-16V80C128 35.8 92.2 0 48 0H32zM192 80V272c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H464V176c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L400 163.2l-39.1 26.1c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1V32H240c-26.5 0-48 21.5-48 48z\"]\n};\nvar faDollyFlatbed = faCartFlatbed;\nvar faBanSmoking = {\n prefix: 'fas',\n iconName: 'ban-smoking',\n icon: [512, 512, [128685, \"smoking-ban\"], \"f54d\", \"M99.5 144.8L178.7 224l96 96 92.5 92.5C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32H384v32H333.3zm32 32H400c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H269.3L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM272 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16s7.2 16 16 16s16-7.2 16-16c0-26.5-21.5-48-48-48H304c-8.8 0-16-7.2-16-16s-7.2-16-16-16zM229.5 320l-96-96H112c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H229.5z\"]\n};\nvar faSmokingBan = faBanSmoking;\nvar faCircleSortUp = {\n prefix: 'fas',\n iconName: 'circle-sort-up',\n icon: [512, 512, [\"sort-circle-up\"], \"e032\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM267.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-96 96c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H352c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-96-96zm0 310.6l96-96c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9H160c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l96 96c6.2 6.2 16.4 6.2 22.6 0zM313.4 320L256 377.4 198.6 320H313.4z\"]\n};\nvar faSortCircleUp = faCircleSortUp;\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [576, 512, [], \"f120\", \"M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faMobileButton = {\n prefix: 'fas',\n iconName: 'mobile-button',\n icon: [384, 512, [], \"f10b\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zM192 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faHouseMedicalFlag = {\n prefix: 'fas',\n iconName: 'house-medical-flag',\n icon: [640, 512, [], \"e514\", \"M480 0c17.7 0 32 14.3 32 32H624c8.8 0 16 7.2 16 16V176c0 8.8-7.2 16-16 16H512V512H448V192 32c0-17.7 14.3-32 32-32zM276.8 39.7L416 159V512h1l-.2 0H96c-17.7 0-32-14.3-32-32V288H32c-13.4 0-25.4-8.3-30-20.9s-1-26.7 9.2-35.4l224-192c12-10.3 29.7-10.3 41.7 0zM224 208v48H176c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H288V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBasketShopping = {\n prefix: 'fas',\n iconName: 'basket-shopping',\n icon: [576, 512, [\"shopping-basket\"], \"f291\", \"M253.3 35.1c6.1-11.8 1.5-26.3-10.2-32.4s-26.3-1.5-32.4 10.2L117.6 192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32L83.9 463.5C91 492 116.6 512 146 512H430c29.4 0 55-20 62.1-48.5L544 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H458.4L365.3 12.9C359.2 1.2 344.7-3.4 332.9 2.7s-16.3 20.6-10.2 32.4L404.3 192H171.7L253.3 35.1zM192 304v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16zm96-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faShoppingBasket = faBasketShopping;\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [576, 512, [], \"f4db\", \"M380.8 416c41.5-40.7 67.2-97.3 67.2-160C448 132.3 347.7 32 224 32S0 132.3 0 256S100.3 480 224 480H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H380.8zM224 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm64 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faChestnut = {\n prefix: 'fas',\n iconName: 'chestnut',\n icon: [448, 512, [127792], \"e3f6\", \"M224 32c5.3 0 10.3 2.7 13.3 7.1c2.9 4.3 7.9 9.7 15.5 16.6c7.5 6.8 16.7 14.3 27.2 22.8l3.1 2.5 0 0c20.3 16.4 44.7 36.1 68.2 59.6C400.8 190.2 448 258 448 352H0c0-94 47.2-161.8 96.7-211.3c23.5-23.5 47.9-43.2 68.2-59.6l3.1-2.5c10.6-8.5 19.7-16 27.2-22.8c7.6-6.9 12.7-12.3 15.5-16.6c3-4.5 8-7.1 13.3-7.1zM4 384H444c-14.2 55.2-64.3 96-124 96H128C68.4 480 18.2 439.2 4 384z\"]\n};\nvar faBusSimple = {\n prefix: 'fas',\n iconName: 'bus-simple',\n icon: [448, 512, [\"bus-alt\"], \"f55e\", \"M224 0C348.8 0 448 35.2 448 80V96 416c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32V96 80C0 35.2 99.2 0 224 0zM64 128V256c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBusAlt = faBusSimple;\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z\"]\n};\nvar faFaceSadCry = {\n prefix: 'fas',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V477.8C51.5 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 94.8-51.5 177.5-128 221.8V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V493.4zM195.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm121.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM208 336v32c0 26.5 21.5 48 48 48s48-21.5 48-48V336c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faSadCry = faFaceSadCry;\nvar faHeat = {\n prefix: 'fas',\n iconName: 'heat',\n icon: [448, 512, [], \"e00c\", \"M176 32c17.7 0 32 14.3 32 32v80c0 34.6 11.2 68.3 32 96l19.2 25.6C288.3 304.4 304 351.5 304 400v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V400c0-34.6-11.2-68.3-32-96l-19.2-25.6C159.7 239.6 144 192.5 144 144V64c0-17.7 14.3-32 32-32zM32 96c17.7 0 32 14.3 32 32v32c0 34.6 11.2 68.3 32 96l19.2 25.6C144.3 320.4 160 367.5 160 416v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c0-34.6-11.2-68.3-32-96L44.8 294.4C15.7 255.6 0 208.5 0 160V128c0-17.7 14.3-32 32-32zm320 32v32c0 34.6 11.2 68.3 32 96l19.2 25.6C432.3 320.4 448 367.5 448 416v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c0-34.6-11.2-68.3-32-96l-19.2-25.6C303.7 255.6 288 208.5 288 160V128c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faTicketAirline = {\n prefix: 'fas',\n iconName: 'ticket-airline',\n icon: [640, 512, [], \"e29a\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V336c0-8.8-7.3-15.8-15.8-18c-27.7-7-48.2-32.1-48.2-62s20.5-55 48.2-62c8.6-2.2 15.8-9.1 15.8-18V128c0-35.3-28.7-64-64-64H64zm352 64a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm0 64a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm16 48a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm-16 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm16 48a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM176 224l-28.5-85.5c-1.7-5.2 2.1-10.5 7.6-10.5h31.1c8.5 0 16.4 4.5 20.7 11.9L256 224h46.9c16.1 0 31.5 6.4 42.8 17.7c7.9 7.9 7.9 20.7 0 28.5C334.4 281.6 319 288 302.9 288H256l-49.1 84.1c-4.3 7.4-12.2 11.9-20.7 11.9H155.1c-5.5 0-9.3-5.4-7.6-10.5L176 288H120l-19.2 25.6c-3 4-7.8 6.4-12.8 6.4H74.2c-5.2 0-9-4.9-7.8-9.9L79 259.9c.6-2.5 .6-5.2 0-7.8L66.5 201.9c-1.3-5 2.6-9.9 7.8-9.9H88c5 0 9.8 2.4 12.8 6.4L120 224h56z\"]\n};\nvar faBootHeeled = {\n prefix: 'fas',\n iconName: 'boot-heeled',\n icon: [512, 512, [], \"e33f\", \"M128 0H63.3C46 0 32 14 32 31.3c0 1.8 .1 3.9 .6 6.2C34.6 47.1 56 154.3 56 232c0 33.2-12.8 93.5-19.7 123.2C33.6 367 32 379.3 32 391.8V488c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V472.9l125 34.7c10.5 2.9 21.3 4.4 32.1 4.4H456h32c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V429.7c0-27.3-15.4-52.2-39.8-64.4L327.8 309.1c-24.4-12.2-39.8-37.1-39.8-64.4V24c0-13.3-10.7-24-24-24H160V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V0z\"]\n};\nvar faArrowsMinimize = {\n prefix: 'fas',\n iconName: 'arrows-minimize',\n icon: [512, 512, [\"compress-arrows\"], \"e0a5\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V192c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h50.7L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zm448 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L397.3 160H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v50.7L457.4 9.4zM32 320c0-17.7 14.3-32 32-32H192c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352H64c-17.7 0-32-14.3-32-32zm256 0c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H397.3L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 397.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V320z\"]\n};\nvar faCompressArrows = faArrowsMinimize;\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [576, 512, [], \"f29e\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM213.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7l-9.4-18.9H150.9l-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zm-.4 106.6L192 237.7l-21.1 42.2h42.2zM304 184c0-13.3 10.7-24 24-24h56c53 0 96 43 96 96s-43 96-96 96H328c-13.3 0-24-10.7-24-24V184zm48 24v96h32c26.5 0 48-21.5 48-48s-21.5-48-48-48H352z\"]\n};\nvar faPersonMilitaryToPerson = {\n prefix: 'fas',\n iconName: 'person-military-to-person',\n icon: [512, 512, [], \"e54c\", \"M71 12.5c-8.6 1-15 8.2-15 16.8c0 9.3 7.5 16.8 16.7 16.9H184.1c8.8-.1 15.9-7.2 15.9-16V16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1H66.5C64.9 83.8 64 89.8 64 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256v32c0 17.7 14.3 32 32 32H192c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5V256c0-35.3-28.7-64-64-64H96c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32H448c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H352zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376v32l-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0v32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 2.9 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9s14.1-12.4 14.1-21.9l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"]\n};\nvar faFileShield = {\n prefix: 'fas',\n iconName: 'file-shield',\n icon: [576, 512, [], \"e4f0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v47l-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faHexagon = {\n prefix: 'fas',\n iconName: 'hexagon',\n icon: [512, 512, [11043], \"f312\", \"M17.1 220c-12.9 22.3-12.9 49.7 0 72l88.3 152.9c12.9 22.3 36.6 36 62.4 36l176.6 0c25.7 0 49.5-13.7 62.4-36L494.9 292c12.9-22.3 12.9-49.7 0-72L406.6 67.1c-12.9-22.3-36.6-36-62.4-36l-176.6 0c-25.7 0-49.5 13.7-62.4 36L17.1 220z\"]\n};\nvar faManhole = {\n prefix: 'fas',\n iconName: 'manhole',\n icon: [512, 512, [], \"e1d6\", \"M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM281.4 115.4c5.8-7.5 14.5-14.7 23.6-11.8c64.4 20.7 111 81.1 111 152.4s-46.6 131.7-111 152.4c-9 2.9-17.8-4.3-23.6-11.8c-5.8-7.6-15.1-12.6-25.4-12.6s-19.6 4.9-25.4 12.6c-5.8 7.5-14.5 14.7-23.6 11.8C142.6 387.7 96 327.3 96 256s46.6-131.7 111-152.4c9-2.9 17.8 4.3 23.6 11.8c5.8 7.6 15.1 12.6 25.4 12.6s19.6-4.9 25.4-12.6zM192 176a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm0 64a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm0 64a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm80-112a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-32 64a16 16 0 1 0 32 0 16 16 0 1 0 -32 0zm32 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48-144a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm0 64a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm0 64a16 16 0 1 0 0 32 16 16 0 1 0 0-32z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L353.3 251.6C407.9 237 448 187.2 448 128C448 57.3 390.7 0 320 0C250.2 0 193.5 55.8 192 125.2L38.8 5.1zM264.3 304.3C170.5 309.4 96 387.2 96 482.3c0 16.4 13.3 29.7 29.7 29.7H514.3c3.9 0 7.6-.7 11-2.1l-261-205.6z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [128394], \"f304\", \"M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z\"]\n};\nvar faTowerObservation = {\n prefix: 'fas',\n iconName: 'tower-observation',\n icon: [512, 512, [], \"e586\", \"M241.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9C439 137.5 427.7 144 416 144v80c0 17.7-14.3 32-32 32h-4.9l32 192H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H384.5c-.4 0-.8 0-1.1 0H128.6c-.4 0-.8 0-1.1 0H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l32-192H128c-17.7 0-32-14.3-32-32V144c-11.7 0-23-6.5-28.6-17.7c-7.9-15.8-1.5-35 14.3-42.9l160-80zM314.5 448L256 399.2 197.5 448h117zM197.8 256l-4.7 28.3L256 336.8l62.9-52.5L314.2 256H197.8zm-13.9 83.2l-11.2 67L218.5 368l-34.6-28.8zM293.5 368l45.8 38.1-11.2-67L293.5 368zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176z\"]\n};\nvar faFloppyDisks = {\n prefix: 'fas',\n iconName: 'floppy-disks',\n icon: [512, 512, [], \"e183\", \"M96 56c0-30.9 25.1-56 56-56H370.7c14.9 0 29.1 5.9 39.6 16.4l85.3 85.3c10.5 10.5 16.4 24.7 16.4 39.6V360c0 30.9-25.1 56-56 56H152c-30.9 0-56-25.1-56-56V56zm96 8c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32H192zM368 288a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM48 120V376c0 48.6 39.4 88 88 88H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H136C60.9 512 0 451.1 0 376V120c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faToiletPaperBlankUnder = {\n prefix: 'fas',\n iconName: 'toilet-paper-blank-under',\n icon: [512, 512, [\"toilet-paper-reverse-alt\"], \"e29f\", \"M348.2 0H96C43 0 0 86 0 192S43 384 96 384H348.2c-11.6-12.2-21.1-26.9-28.7-41.9C299.5 302 288 248.9 288 192s11.5-110 31.5-150.1c7.5-15 17.1-29.7 28.7-41.9zM384 10.9c-37.3 26.4-64 97.5-64 181.1s26.7 154.7 64 181.1c10 7.1 20.8 10.9 32 10.9c35.5 0 66.6-38.6 83.2-96c8.2-28.2 12.8-61 12.8-96C512 86 469 0 416 0c-11.2 0-22 3.8-32 10.9zM416 256c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64zM160 464c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V343.1c-19.1 37.8-51.2 72.9-96 72.9H160v48z\"]\n};\nvar faToiletPaperReverseAlt = faToiletPaperBlankUnder;\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [128246, \"signal-5\", \"signal-perfect\"], \"f012\", \"M576 0c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM448 96c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM352 224V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zM192 288c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32zM96 416v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faSignal5 = faSignal;\nvar faSignalPerfect = faSignal;\nvar faPump = {\n prefix: 'fas',\n iconName: 'pump',\n icon: [640, 512, [], \"e442\", \"M128 32c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM32 176c-17.7 0-32 14.3-32 32V384c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-17.7-14.3-32-32-32zm128 48H96V384H320V96H160V224zM431.9 106.7L380.5 141c-17.8 11.9-28.5 31.9-28.5 53.3V413.7c0 21.4 10.7 41.4 28.5 53.3l51.4 34.3c10.5 7 22.9 10.7 35.5 10.7H576c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H467.4c-12.6 0-25 3.7-35.5 10.7zM448 208c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H464c-8.8 0-16-7.2-16-16zm0 96c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H464c-8.8 0-16-7.2-16-16zm0 96c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H464c-8.8 0-16-7.2-16-16z\"]\n};\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [576, 512, [128653], \"f207\", \"M288 0C422.4 0 512 35.2 512 80V96l0 32c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H192v32c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h0V96h0V80C64 35.2 153.6 0 288 0zM128 160v96c0 17.7 14.3 32 32 32H272V128H160c-17.7 0-32 14.3-32 32zM304 288H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H304V288zM144 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM384 80c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16s7.2 16 16 16H368c8.8 0 16-7.2 16-16z\"]\n};\nvar faHeartCircleXmark = {\n prefix: 'fas',\n iconName: 'heart-circle-xmark',\n icon: [576, 512, [], \"e501\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faArrowUpLeftFromCircle = {\n prefix: 'fas',\n iconName: 'arrow-up-left-from-circle',\n icon: [512, 512, [], \"e09e\", \"M192 0H32C14.3 0 0 14.3 0 32V192c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3L297.4 342.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 64H192c17.7 0 32-14.3 32-32s-14.3-32-32-32zM325.3 67.1c-17.4-2.9-33.9 8.8-36.9 26.3s8.8 33.9 26.3 36.9C390.4 142.9 448 208.8 448 288c0 88.4-71.6 160-160 160c-79.2 0-145.1-57.6-157.8-133.3c-2.9-17.4-19.4-29.2-36.9-26.3s-29.2 19.4-26.3 36.9C84.9 431.3 177 512 288 512c123.7 0 224-100.3 224-224c0-111-80.7-203.1-186.7-220.9z\"]\n};\nvar faHouseChimney = {\n prefix: 'fas',\n iconName: 'house-chimney',\n icon: [576, 512, [63499, \"home-lg\"], \"e3af\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v64 24c0 22.1 17.9 40 40 40h24 32.5c1.4 0 2.8 0 4.2-.1c1.1 .1 2.2 .1 3.3 .1h16c22.1 0 40-17.9 40-40V455.8c.3-2.6 .5-5.3 .5-8.1l-.7-160.2h32z\"]\n};\nvar faHomeLg = faHouseChimney;\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faDryer = {\n prefix: 'fas',\n iconName: 'dryer',\n icon: [448, 512, [], \"f861\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM368 304A144 144 0 1 0 80 304a144 144 0 1 0 288 0zM88 112a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM208 88a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM336 304c0 61.9-50.1 112-112 112c-56.4 0-103.1-41.7-110.9-96H176c8.8 0 16-7.2 16-16s-7.2-16-16-16H113.1c7.8-54.3 54.4-96 110.9-96c61.9 0 112 50.1 112 112z\"]\n};\nvar faFaceFrown = {\n prefix: 'fas',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFrown = faFaceFrown;\nvar faChessBishopPiece = {\n prefix: 'fas',\n iconName: 'chess-bishop-piece',\n icon: [256, 512, [\"chess-bishop-alt\"], \"f43b\", \"M104 32C90.7 32 80 42.7 80 56c0 12.2 9.1 22.3 20.9 23.8C79.6 100.1 48 139 48 192c0 26.3 13.6 40.5 26.3 48H72c-13.3 0-24 10.7-24 24s10.7 24 24 24h5.7L64 384H192l-13.7-96H184c13.3 0 24-10.7 24-24s-10.7-24-24-24h-2.3c12.7-7.5 26.3-21.7 26.3-48c0-22.5-5.7-42.4-13.9-59.5l-38.8 38.8c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L177 104.4c-7.4-10-15.2-18.2-21.9-24.6C166.9 78.3 176 68.2 176 56c0-13.3-10.7-24-24-24H104zM48 416L4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24H232c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L208 416H48z\"]\n};\nvar faChessBishopAlt = faChessBishopPiece;\nvar faShirtTankTop = {\n prefix: 'fas',\n iconName: 'shirt-tank-top',\n icon: [384, 512, [], \"e3c9\", \"M112 32C112 14.3 97.7 0 80 0S48 14.3 48 32V64c0 91-19.2 143.6-33.3 170.1C6.7 249.1 0 265.5 0 282.5V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V282.5c0-17-6.7-33.5-14.7-48.4C355.2 207.6 336 155 336 64V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V80c0 44.2-35.8 80-80 80s-80-35.8-80-80V32z\"]\n};\nvar faDiploma = {\n prefix: 'fas',\n iconName: 'diploma',\n icon: [640, 512, [\"scroll-ribbon\"], \"f5ea\", \"M302 59.7l18 20.6 18-20.6C353.4 42.1 375.6 32 399 32h1c44.2 0 80 35.8 80 80c0 11.4-2.4 22.2-6.7 32H544v32c0-32 0-32 0-32l0 0 .1 0 .2 0 .5 0c.4 0 .8 0 1.4 .1c1 .1 2.3 .1 3.8 .3c3 .3 7 .9 11.6 2.1c9.2 2.3 21.3 6.9 33.4 15.9C620.9 181.7 640 216.2 640 272c0 47.5-13.7 81.1-32 104.1c-18 22.6-38.5 32.6-49 36.6c-7.3 2.8-14 3.3-19 3.3h-.5c-4.7 0-9.3-.5-13.9-1.5L384 383v81c0 6.2-3.6 11.9-9.2 14.5s-12.3 1.8-17-2.2L320 444.8l-37.8 31.5c-4.8 4-11.4 4.8-17 2.2s-9.2-8.3-9.2-14.5V383L114.4 414.5c-4.6 1-9.2 1.5-13.9 1.5h-.5c-4.9 0-11.7-.5-19-3.3c-10.5-4-31-14-49-36.6C13.7 353.1 0 319.5 0 272c0-55.8 19.1-90.3 44.8-109.6c12.1-9.1 24.3-13.6 33.4-15.9c4.6-1.2 8.6-1.8 11.6-2.1c1.5-.2 2.8-.3 3.8-.3c.5 0 1 0 1.4-.1l.5 0 .2 0 .1 0 0 0c0 0 0 0 0 32V144h70.7c-4.3-9.8-6.7-20.6-6.7-32c0-44.2 35.8-80 80-80h1c23.4 0 45.6 10.1 61 27.7zM240 144h54.4c6.9 0 10.5-8.1 6-13.3L265.9 91.3C259.6 84.1 250.5 80 241 80h-1c-17.7 0-32 14.3-32 32s14.3 32 32 32zm105.6 0H392h8c17.7 0 32-14.3 32-32s-14.3-32-32-32h-1c-1.2 0-2.3 .1-3.5 .2c-8.2 .9-15.8 4.8-21.3 11.1l-34.5 39.5c-4.5 5.2-.9 13.3 6 13.3zM256 208H96.7l-.1 0c-.5 .1-1.5 .2-2.9 .5c-2.8 .7-6.7 2.1-10.6 5.1C76.9 218.3 64 231.8 64 272c0 34.5 9.6 53.7 18.1 64.3c7.2 9 14.9 13.5 19.2 15.6L256 317.4V208zM384 317.4l154.8 34.4c4.3-2 12-6.6 19.2-15.6c8.4-10.6 18.1-29.8 18.1-64.3c0-40.2-12.9-53.7-19.2-58.4c-3.9-2.9-7.7-4.4-10.6-5.1c-1.4-.3-2.4-.5-2.9-.5l-.1 0H384V317.4zM540.1 352c0 0 0 0 0 0l0 0h0zM99.9 352c0 0 0 0 0 0h0z\"]\n};\nvar faScrollRibbon = faDiploma;\nvar faScreencast = {\n prefix: 'fas',\n iconName: 'screencast',\n icon: [576, 512, [], \"e23e\", \"M512 96H64v99c-13-2-26.4-3-40-3H0V96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H288V456c0-13.6-1-27-3-40H512V96zM24 224c128.1 0 232 103.9 232 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM0 344c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24z\"]\n};\nvar faWalker = {\n prefix: 'fas',\n iconName: 'walker',\n icon: [448, 512, [], \"f831\", \"M194 64H320c17.7 0 32 14.3 32 32v64H145l17.9-71.8C166.5 74 179.3 64 194 64zM352 224V392.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4V96c0-53-43-96-96-96H194c-44.1 0-82.4 30-93.1 72.7L1 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3L129 224H352zm32 208a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [448, 512, [], \"f5b1\", \"M32 0C14.3 0 0 14.3 0 32V192v96c0 17.7 14.3 32 32 32s32-14.3 32-32V224h50.7l128 128L137.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7l-85.8-85.8C251.4 209.1 288 164.8 288 112C288 50.1 237.9 0 176 0H32zM176 160H64V64H176c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faShop = {\n prefix: 'fas',\n iconName: 'shop',\n icon: [640, 512, [\"store-alt\"], \"f54f\", \"M36.8 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM64 224V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 224H320V384H128V224H64zm448 0V480c0 17.7 14.3 32 32 32s32-14.3 32-32V224H512z\"]\n};\nvar faStoreAlt = faShop;\nvar faFloppyDisk = {\n prefix: 'fas',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSave = faFloppyDisk;\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M281 22L305.8 4.7c1.3-.9 2.7-1.8 4.1-2.4C313.1 .7 316.6 0 320 0s6.9 .7 10.1 2.2c1.4 .7 2.8 1.5 4.1 2.4L359 22C393 45.8 430.8 63.5 470.8 74.4l23 6.3c1.8 .5 3.6 1.1 5.2 2c3.2 1.7 5.9 4 8.1 6.8c3.8 4.9 5.6 11.3 4.7 17.8c-.4 2.8-1.2 5.4-2.5 7.8c-1.7 3.2-4 5.9-6.8 8.1c-4.3 3.2-9.6 5.1-15.1 4.9H480v56.1l6.4 5.1 5.2 4.1c21.1 16.7 45 29.6 70.5 38.1l28.9 9.6c1.6 .5 3.2 1.2 4.6 2c3.1 1.7 5.8 4.1 7.8 6.9s3.5 6.1 4.1 9.6c.5 2.7 .6 5.5 .1 8.3s-1.4 5.4-2.7 7.8c-1.7 3.1-4.1 5.8-6.9 7.8s-6.1 3.5-9.6 4.1c-1.6 .3-3.3 .4-5 .4H544v65.9c20.5 22.8 47.4 39.2 77.4 46.7C632 403 640 412.6 640 424c0 13.3-10.7 24-24 24H576v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H24c-13.3 0-24-10.7-24-24c0-11.4 8-21 18.6-23.4c30-7.6 56.9-23.9 77.4-46.7V288H56.6c-1.7 0-3.4-.1-5-.4c-3.5-.7-6.8-2.1-9.6-4.1s-5.2-4.7-7-7.8c-1.3-2.4-2.3-5-2.7-7.8s-.4-5.6 .1-8.3c.7-3.5 2.1-6.8 4.1-9.6s4.7-5.2 7.8-6.9c1.4-.8 3-1.5 4.6-2l28.9-9.6c25.5-8.5 49.4-21.4 70.5-38.1l5.2-4.1 6.4-5.1V176 128h-7.5c-5.5 .1-10.8-1.7-15.1-4.9c-2.8-2.1-5.1-4.8-6.8-8.1c-1.2-2.4-2.1-5-2.5-7.8c-.9-6.5 .9-12.8 4.7-17.8c2.1-2.8 4.8-5.1 8.1-6.8c1.6-.8 3.4-1.5 5.2-2l23-6.3C209.2 63.5 247 45.8 281 22zM416 128H320 224v64h72 48 72V128zM160 288v64H296h24 24H480V288H344 320h0H296 160z\"]\n};\nvar faFaceKissClosedEyes = {\n prefix: 'fas',\n iconName: 'face-kiss-closed-eyes',\n icon: [512, 512, [], \"e37d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-93.5-80.1c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zm89.6 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faScaleUnbalanced = {\n prefix: 'fas',\n iconName: 'scale-unbalanced',\n icon: [640, 512, [\"balance-scale-left\"], \"f515\", \"M522.1 62.4c16.8-5.6 25.8-23.7 20.2-40.5S518.6-3.9 501.9 1.6l-113 37.7C375 15.8 349.3 0 320 0c-44.2 0-80 35.8-80 80c0 3 .2 5.9 .5 8.8L117.9 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2V480c0 17.7 14.3 32 32 32H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V153.3c21-9.2 37.2-27 44.2-49l125.9-42zM439.6 288L512 163.8 584.4 288H439.6zM512 384c62.9 0 115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L536.1 109.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L392.7 273.1c-5.7 9.8-9.3 21.1-6.7 32.1C396.8 350 449.1 384 512 384zM129.2 291.8L201.6 416H56.7l72.4-124.2zM3.2 433.1C14 478 66.3 512 129.2 512s115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L153.2 237.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L9.9 401.1c-5.7 9.8-9.3 21.1-6.7 32.1z\"]\n};\nvar faBalanceScaleLeft = faScaleUnbalanced;\nvar faFileUser = {\n prefix: 'fas',\n iconName: 'file-user',\n icon: [384, 512, [], \"f65c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM128 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 432c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faUserPoliceTie = {\n prefix: 'fas',\n iconName: 'user-police-tie',\n icon: [448, 512, [], \"e334\", \"M230.1 .8c-4-1.1-8.2-1.1-12.2 0l-152 40c-8.6 2.3-15.3 9.1-17.3 17.8s1 17.8 7.8 23.6L80 102.5v8.4c0 10.7 5.3 20.8 15.1 25.2c24.1 10.8 68.6 24 128.9 24s104.8-13.2 128.9-24c9.8-4.4 15.1-14.5 15.1-25.2v-8.4l23.6-20.2c6.8-5.8 9.8-14.9 7.8-23.6s-8.7-15.6-17.3-17.8l-152-40zM227 48.6l32 12.8c3 1.2 5 4.2 5 7.4c0 17.2-7 46.1-36.9 58.6c-2 .8-4.2 .8-6.2 0C191 114.9 184 86 184 68.8c0-3.3 2-6.2 5-7.4l32-12.8c1.9-.8 4-.8 5.9 0zM98.1 168.8C96.7 176.3 96 184.1 96 192c0 70.7 57.3 128 128 128s128-57.3 128-128c0-7.9-.7-15.7-2.1-23.2C310.8 183.8 268.4 192 224 192s-86.8-8.2-125.9-23.2zm89.5 206.3L208 416l-12.2 48.9L133 360.3c-3-5-8.6-8.1-14.4-7.4C51.8 360.8 0 417.5 0 486.4C0 500.5 11.5 512 25.6 512H192v0h64v0H422.4c14.1 0 25.6-11.5 25.6-25.6c0-68.9-51.8-125.6-118.6-133.5c-5.8-.7-11.4 2.4-14.4 7.4L252.2 464.9 240 416l20.4-40.8c5.3-10.6-2.4-23.2-14.3-23.2H201.9c-11.9 0-19.6 12.5-14.3 23.2zm172 38.4l5.4 16.6 17.4 0c3.5 0 6.6 2.2 7.6 5.5s-.1 6.9-2.9 9L373 454.8l5.4 16.6c1.1 3.3-.1 6.9-2.9 9s-6.6 2-9.4 0L352 470.1l-14.1 10.3c-2.8 2-6.6 2.1-9.4 0s-4-5.7-2.9-9l5.4-16.6-14.1-10.2c-2.8-2-4-5.7-2.9-9s4.2-5.5 7.6-5.5l17.4 0 5.4-16.6c1.1-3.3 4.1-5.5 7.6-5.5s6.5 2.2 7.6 5.5z\"]\n};\nvar faFaceTongueMoney = {\n prefix: 'fas',\n iconName: 'face-tongue-money',\n icon: [512, 512, [], \"e39d\", \"M0 256C0 364.6 67.7 457.5 163.1 494.6C151.1 476.8 144 455.2 144 432V421.5c-22.4-20.1-39-46.1-47.2-75.4c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1c-8.2 29.4-24.9 55.4-47.2 75.4V432c0 23.2-7.1 44.8-19.1 62.6C444.3 457.5 512 364.6 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM192 104v9.8c4.6 .8 8.7 1.8 12.1 2.7c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-8.3-2.2-18.8-4-27-3.2c-4 .4-6.1 1.4-7.1 2.1c-2.6 1.9-2.6 5.6-.2 7.2c6.9 4.8 15 6.9 23.3 9.1c8.3 2.2 16.7 4.4 23.9 9.4c4.8 3.3 9.5 8 12.4 14.6c3 6.6 3.5 13.9 2.2 21.2c-2 11.5-7.9 20.4-17 25.9c-4.6 2.8-9.5 4.4-14.4 5.2V248c0 8.8-7.2 16-16 16s-16-7.2-16-16V237.2c-8.4-1.9-16-4.4-21.1-6c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c9.5 3.1 21.9 6.9 32 7.1c5 .1 7.6-.8 8.8-1.5l0 0c2.8-1.7 3.2-6.2 .6-8c-3.5-2.4-9.3-4.3-18.8-7l-1.1-.3c-7.9-2.2-18.8-5.4-27.2-11.2c-4.8-3.3-9.5-8-12.4-14.6c-3-6.6-3.5-13.9-2.2-21.2c1.8-10.2 6.9-18.2 14.4-23.6c5.3-3.9 11.3-6 17-7.1V104c0-8.8 7.2-16 16-16s16 7.2 16 16zM336 88c8.8 0 16 7.2 16 16v9.8c4.6 .8 8.7 1.8 12.1 2.7c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-8.3-2.2-18.8-4-27-3.2c-4 .4-6.1 1.4-7.1 2.1c-2.6 1.9-2.6 5.6-.2 7.2c6.9 4.8 15 6.9 23.3 9.1c8.3 2.2 16.7 4.4 23.9 9.4c4.8 3.3 9.5 8 12.4 14.6c3 6.6 3.5 13.9 2.2 21.2c-2 11.5-7.9 20.4-17 25.9c-4.6 2.8-9.5 4.4-14.4 5.2V248c0 8.8-7.2 16-16 16s-16-7.2-16-16V237.2c-8.4-1.9-16-4.4-21.1-6c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c9.5 3.1 21.9 6.9 32 7.1c5 .1 7.6-.8 8.8-1.5l0 0c2.8-1.7 3.2-6.2 .6-8c-3.5-2.4-9.3-4.3-18.8-7l-1.1-.3c-7.9-2.2-18.8-5.4-27.2-11.2c-4.8-3.3-9.5-8-12.4-14.6c-3-6.6-3.5-13.9-2.2-21.2c1.8-10.2 6.9-18.2 14.4-23.6c5.3-3.9 11.3-6 17-7.1V104c0-8.8 7.2-16 16-16zm0 264H176v80c0 44.2 35.8 80 80 80s80-35.8 80-80V352zm-80 16c5.9 0 10.7 4.9 10.7 10.9v6.7c3 .6 5.8 1.2 8.1 1.8c5.7 1.6 9.1 7.5 7.6 13.3s-7.4 9.3-13 7.7c-5.5-1.5-12.6-2.8-18-2.2c-2.7 .3-4.1 .9-4.7 1.4c-1.7 1.3-1.7 3.8-.2 4.9c4.6 3.3 10 4.7 15.5 6.2c5.6 1.5 11.2 3 15.9 6.4c3.2 2.3 6.3 5.5 8.3 9.9c2 4.5 2.3 9.4 1.5 14.4c-1.3 7.8-5.3 13.9-11.3 17.7c-3.1 1.9-6.4 3-9.6 3.6v6.1c0 6-4.8 10.9-10.7 10.9s-10.7-4.9-10.7-10.9v-7.3c-5.6-1.3-10.7-3-14-4.1c-5.6-1.9-8.6-8.1-6.8-13.8s7.9-8.8 13.5-6.9c6.3 2.1 14.6 4.7 21.3 4.8c3.3 .1 5.1-.5 5.9-1c1.8-1.1 2.1-4.3 .4-5.5c-2.3-1.7-6.2-2.9-12.6-4.8l-.8-.2c-5.2-1.5-12.6-3.7-18.1-7.6c-3.2-2.3-6.3-5.5-8.3-9.9c-2-4.5-2.3-9.4-1.5-14.4c1.2-6.9 4.6-12.4 9.6-16.1c3.6-2.6 7.5-4.1 11.3-4.9v-6.4c0-6 4.8-10.9 10.7-10.9z\"]\n};\nvar faTennisBall = {\n prefix: 'fas',\n iconName: 'tennis-ball',\n icon: [512, 512, [127934], \"f45e\", \"M.2 245.1C.1 248.7 0 252.3 0 256C0 397.4 114.6 512 256 512c3.7 0 7.3-.1 10.9-.2c-3.8-10.7-6.6-21.8-8.4-33.1c-4.4-27.2-2.9-55 4.4-81.6s20.2-51.2 37.9-72.4s39.7-38.2 64.5-50.1s52-18.2 79.5-18.7c22.8-.4 45.5 3.3 67 10.9c.2-3.6 .2-7.2 .2-10.9C512 114.6 397.4 0 256 0c-3.7 0-7.3 .1-10.9 .2c10.7 30.5 13.7 63.4 8.2 95.6c-7.1 42.4-28.3 81.2-60 110.1s-72.4 46.4-115.2 49.6c-26.6 2-53.1-1.7-77.9-10.4zM206.8 4.7C104.9 24.6 24.6 104.9 4.7 206.8C26.9 216 51.1 220 75.3 218.2c34.5-2.5 67.2-16.6 92.8-39.9s42.6-54.5 48.4-88.7c4.8-28.7 1.4-58.2-9.7-84.9zM445.4 293.4c-22.2 .4-44 5.5-64 15.1s-37.7 23.3-52 40.3s-24.6 36.9-30.5 58.3s-7.1 43.8-3.5 65.7c1.9 11.9 5.2 23.5 9.8 34.6c101.9-19.8 182.2-100.2 202.1-202.1c-19.6-8.1-40.6-12.1-61.9-11.8z\"]\n};\nvar faSquareL = {\n prefix: 'fas',\n iconName: 'square-l',\n icon: [448, 512, [], \"e275\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM176 152V336H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [\"sort-asc\"], \"f0de\", \"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faSortAsc = faSortUp;\nvar faCalendarArrowUp = {\n prefix: 'fas',\n iconName: 'calendar-arrow-up',\n icon: [448, 512, [\"calendar-upload\"], \"e0d1\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM248 424V321.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V424c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faCalendarUpload = faCalendarArrowUp;\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCommenting = faCommentDots;\nvar faPlantWilt = {\n prefix: 'fas',\n iconName: 'plant-wilt',\n icon: [512, 512, [], \"e5aa\", \"M288 120c0-30.9 25.1-56 56-56s56 25.1 56 56v13c-29.3 10-48 34.5-48 70.1c0 27.9 25.3 74.8 66 111.6c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V120C464 53.7 410.3 0 344 0S224 53.7 224 120v21.8C207.3 133 188.2 128 168 128c-66.3 0-120 53.7-120 120v13c-29.3 10-48 34.5-48 70.1C0 359 25.3 405.9 66 442.7c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V248c0-30.9 25.1-56 56-56s56 25.1 56 56v32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V280 248 120z\"]\n};\nvar faScarf = {\n prefix: 'fas',\n iconName: 'scarf',\n icon: [512, 512, [129507], \"f7c1\", \"M416 168.8c0 22.8-7 44.9-19.9 63.4L278.6 114.7l15.1-15.1C283.1 97.5 270.3 96 256 96s-27.1 1.5-37.8 3.6L256 137.4 374.6 256l9.4 9.4 11.3 11.3 112 112c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L384 310.6 358.6 336 459.3 436.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L336 358.6 310.6 384 411.3 484.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-112-112L128.4 247C107.7 226.3 96 198.1 96 168.8c0-19 4.9-37.7 14.2-54.2l41.5-73.8C165.9 15.6 192.5 0 221.4 0h69.1c28.9 0 55.6 15.6 69.7 40.8l41.5 73.8c9.3 16.6 14.2 35.2 14.2 54.2zM4.7 388.7l112-112 22.6 22.6-112 112c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6zm48 48l112-112 22.6 22.6-112 112c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6zm48 48l112-112 22.6 22.6-112 112c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z\"]\n};\nvar faAlbumCirclePlus = {\n prefix: 'fas',\n iconName: 'album-circle-plus',\n icon: [576, 512, [], \"e48c\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64v96.7c-5.3-.5-10.6-.7-16-.7c-20.1 0-39.5 3.4-57.5 9.6C352.3 140 293.3 96 224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c12.9 0 25.4-1.5 37.4-4.4c6.5 25.5 18.5 48.7 34.8 68.4H64c-35.3 0-64-28.7-64-64V96zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm208 0a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faUserNurseHairLong = {\n prefix: 'fas',\n iconName: 'user-nurse-hair-long',\n icon: [448, 512, [], \"e45e\", \"M96 70.2V128h.3c-.2 2.6-.3 5.3-.3 8v24 11c0 33.9-13.5 66.5-37.5 90.5l-3.9 3.9c-4.2 4.2-6.6 10-6.6 16C48 293.9 58.1 304 70.6 304H224 377.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16l-3.9-3.9c-24-24-37.5-56.6-37.5-90.5V160 136c0-2.7-.1-5.4-.3-8h.3V70.2c0-13.3-8.3-25.3-20.8-30l-96-36c-7.2-2.7-15.2-2.7-22.5 0l-96 36C104.3 44.9 96 56.8 96 70.2zM304 160v16c0 44.2-35.8 80-80 80s-80-35.8-80-80l32 0c29.8 0 55.9-16.3 69.6-40.5C257.3 150.4 275.5 160 296 160h8zM151.4 346.8c-6.4-6.8-15.4-10.6-24.6-9.3C55.1 347.7 0 409.4 0 483.8C0 499.4 12.6 512 28.2 512H419.8c15.6 0 28.2-12.6 28.2-28.2c0-74.5-55.1-136.1-126.7-146.3c-9.2-1.3-18.3 2.5-24.6 9.3l-61 64.8c-6.3 6.7-17 6.7-23.3 0l-61-64.8zM208 48c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8V64h16c4.4 0 8 3.6 8 8V88c0 4.4-3.6 8-8 8H240v16c0 4.4-3.6 8-8 8H216c-4.4 0-8-3.6-8-8V96H192c-4.4 0-8-3.6-8-8V72c0-4.4 3.6-8 8-8h16V48z\"]\n};\nvar faDiamond = {\n prefix: 'fas',\n iconName: 'diamond',\n icon: [512, 512, [9830], \"f219\", \"M284.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z\"]\n};\nvar faSquareLeft = {\n prefix: 'fas',\n iconName: 'square-left',\n icon: [448, 512, [11013, \"arrow-alt-square-left\"], \"f351\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm185.4 39.1L85.5 242.2C82 245.9 80 250.9 80 256s2 10.1 5.5 13.8l99.9 107.1c4.2 4.5 10.1 7.1 16.3 7.1c12.3 0 22.3-10 22.3-22.3l0-57.7 96 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-96 0 0-57.7c0-12.3-10-22.3-22.3-22.3c-6.2 0-12.1 2.6-16.3 7.1z\"]\n};\nvar faArrowAltSquareLeft = faSquareLeft;\nvar faFaceGrinSquint = {\n prefix: 'fas',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM133.5 146.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faGrinSquint = faFaceGrinSquint;\nvar faCircleEllipsisVertical = {\n prefix: 'fas',\n iconName: 'circle-ellipsis-vertical',\n icon: [512, 512, [], \"e10b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-288a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faHandHoldingDollar = {\n prefix: 'fas',\n iconName: 'hand-holding-dollar',\n icon: [576, 512, [\"hand-holding-usd\"], \"f4c0\", \"M312 24V34.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3 0 0c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8V232c0 13.3-10.7 24-24 24s-24-10.7-24-24V220.6c-9.5-2.3-18.2-5.3-25.6-7.8c-2.1-.7-4.1-1.4-6-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingUsd = faHandHoldingDollar;\nvar faGridDividers = {\n prefix: 'fas',\n iconName: 'grid-dividers',\n icon: [512, 512, [], \"e3ad\", \"M0 24C0 10.7 10.7 0 24 0H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H24C10.7 48 0 37.3 0 24zM64 96h64c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32zm0 288h64c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32zM192 128c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V128zm32 256h64c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32zM352 128c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V128zm32 256h64c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32zM24 288H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M423.1 30.6c3.6-12.7-3.7-26-16.5-29.7s-26 3.7-29.7 16.5l-4.2 14.7c-9.8-.4-19.9 .5-29.9 2.8c-12.1 2.8-23.7 5.9-34.9 9.4l-5.9-13.7c-5.2-12.2-19.3-17.8-31.5-12.6s-17.8 19.3-12.6 31.5l4.9 11.3c-22 9.4-42 20.1-60.2 31.8L196 82.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l7.8 11.6c-18 15-33.7 30.8-47.3 47.1L103 157.3c-10.4-8.3-25.5-6.6-33.7 3.7s-6.6 25.5 3.7 33.7l15 12c-2.1 3.2-4.1 6.5-6 9.7c-9.4 15.7-17 31-23.2 45.3l-9.9-3.9c-12.3-4.9-26.3 1.1-31.2 13.4s1.1 26.3 13.4 31.2l11.6 4.6c-.3 1.1-.6 2.1-.9 3.1c-3.5 12.5-5.7 23.2-7.1 31.3c-.7 4.1-1.2 7.5-1.6 10.3c-.2 1.4-.3 2.6-.4 3.6l-.1 1.4-.1 .6 0 .3 0 .1c0 0 0 .1 39.2 3.7l0 0-39.2-3.6c-.5 5-.6 10-.4 14.9l-14.7 4.2C4.7 380.6-2.7 393.8 .9 406.6s16.9 20.1 29.7 16.5l13.8-3.9c10.6 20.7 27.6 37.8 48.5 48.5l-3.9 13.7c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5l4.2-14.7c23.8 1 46.3-5.5 65.1-17.6L215 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c9.1-14.1 15.1-30.5 17-48.3l.1-.8c.3-1.7 1-5.1 2.3-9.8l.2-.8 12.6 5.4c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-11.3-4.8c9.9-14.9 24.9-31.6 48.6-46l2.1 7.5c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7L371 259.2c6.9-2.2 14.3-4.3 22.2-6.1c12.9-3 24.7-8 35.2-14.8L439 249c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c12.2-19 18.6-41.6 17.6-65.1l14.7-4.2c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5l-13.7 3.9c-10.8-21.2-28-38-48.5-48.5l3.9-13.8zM92.1 363.3l0 0L144 368l-51.9-4.7zM112 320a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM240 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40V188.2c8.5-7.6 19.7-12.2 32-12.2c20.6 0 38.2 13 45 31.2c8.8-9.3 21.2-15.2 35-15.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48v48 16 48c0 70.7-57.3 128-128 128l-16 0H240l-.1 0h-5.2c-5 0-9.9-.3-14.7-1c-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7V40zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32c159.1 0 288 48 288 128V352c0 80-128.9 128-288 128S0 432 0 352V160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8c-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4c0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5c47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4C56 130.1 48 150.1 48 160s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5c0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8C224.5 87 224 91.5 224 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2C330.8 81 309.8 80 288 80s-42.8 1-62.6 2.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9l0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"]\n};\nvar faHandsPraying = {\n prefix: 'fas',\n iconName: 'hands-praying',\n icon: [640, 512, [\"praying-hands\"], \"f684\", \"M351.2 4.8c3.2-2 6.6-3.3 10-4.1c4.7-1 9.6-.9 14.1 .1c7.7 1.8 14.8 6.5 19.4 13.6L514.6 194.2c8.8 13.1 13.4 28.6 13.4 44.4v73.5c0 6.9 4.4 13 10.9 15.2l79.2 26.4C631.2 358 640 370.2 640 384v96c0 9.9-4.6 19.3-12.5 25.4s-18.1 8.1-27.7 5.5L431 465.9c-56-14.9-95-65.7-95-123.7V224c0-17.7 14.3-32 32-32s32 14.3 32 32v80c0 8.8 7.2 16 16 16s16-7.2 16-16V219.1c0-7-1.8-13.8-5.3-19.8L340.3 48.1c-1.7-3-2.9-6.1-3.6-9.3c-1-4.7-1-9.6 .1-14.1c1.9-8 6.8-15.2 14.3-19.9zm-62.4 0c7.5 4.6 12.4 11.9 14.3 19.9c1.1 4.6 1.2 9.4 .1 14.1c-.7 3.2-1.9 6.3-3.6 9.3L213.3 199.3c-3.5 6-5.3 12.9-5.3 19.8V304c0 8.8 7.2 16 16 16s16-7.2 16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32V342.3c0 58-39 108.7-95 123.7l-168.7 45c-9.6 2.6-19.9 .5-27.7-5.5S0 490 0 480V384c0-13.8 8.8-26 21.9-30.4l79.2-26.4c6.5-2.2 10.9-8.3 10.9-15.2V238.5c0-15.8 4.7-31.2 13.4-44.4L245.2 14.5c4.6-7.1 11.7-11.8 19.4-13.6c4.6-1.1 9.4-1.2 14.1-.1c3.5 .8 6.9 2.1 10 4.1z\"]\n};\nvar faPrayingHands = faHandsPraying;\nvar faFacePensive = {\n prefix: 'fas',\n iconName: 'face-pensive',\n icon: [512, 512, [], \"e384\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208 384h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16s7.2-16 16-16zM387.2 270.4c5.3-7.1 15.3-8.5 22.4-3.2s8.5 15.3 3.2 22.4c-30.4 40.5-91.2 40.5-121.6 0c-5.3-7.1-3.9-17.1 3.2-22.4s17.1-3.9 22.4 3.2c17.6 23.5 52.8 23.5 70.4 0zm-262.4 0c17.6 23.5 52.8 23.5 70.4 0c5.3-7.1 15.3-8.5 22.4-3.2s8.5 15.3 3.2 22.4c-30.4 40.5-91.2 40.5-121.6 0c-5.3-7.1-3.9-17.1 3.2-22.4s17.1-3.9 22.4 3.2zM65.7 215.2c-4-7.9-.7-17.5 7.2-21.5l22.9-11.4c14.5-7.2 27.2-17.6 37.4-30.2l14.4-18c5.5-6.9 15.6-8 22.5-2.5s8 15.6 2.5 22.5l-14.4 18c-13 16.3-29.4 29.5-48 38.8L87.2 222.3c-7.9 4-17.5 .7-21.5-7.2zm373.5-21.5c7.9 4 11.1 13.6 7.2 21.5s-13.6 11.1-21.5 7.2L402 210.9c-18.6-9.3-35-22.6-48.1-38.8l-14.4-18c-5.5-6.9-4.4-17 2.5-22.5s17-4.4 22.5 2.5l14.4 18c10.1 12.7 22.9 23 37.4 30.2l22.9 11.4z\"]\n};\nvar faUserMusic = {\n prefix: 'fas',\n iconName: 'user-music',\n icon: [640, 512, [], \"f8eb\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c36.3 0 70.1 10.9 98.3 29.5v51.6c-18 2.5-34.8 9.1-48.5 19.4c-17.6 13.2-31.5 34-31.5 59.5c0 19.1 7.7 35.4 18.9 48H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM630 164.5c6.3 4.5 10 11.8 10 19.5v48V392c0 1.2-.1 2.4-.3 3.6c.2 1.5 .3 2.9 .3 4.4c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48c5.5 0 10.9 .5 16 1.5V265.3l-144 48V464c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48c5.5 0 10.9 .5 16 1.5V296 248c0-10.3 6.6-19.5 16.4-22.8l192-64c7.3-2.4 15.4-1.2 21.6 3.3z\"]\n};\nvar faArrowRotateRight = {\n prefix: 'fas',\n iconName: 'arrow-rotate-right',\n icon: [512, 512, [8635, \"arrow-right-rotate\", \"arrow-rotate-forward\", \"redo\"], \"f01e\", \"M386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H464c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z\"]\n};\nvar faArrowRightRotate = faArrowRotateRight;\nvar faArrowRotateForward = faArrowRotateRight;\nvar faRedo = faArrowRotateRight;\nvar faMessagesDollar = {\n prefix: 'fas',\n iconName: 'messages-dollar',\n icon: [640, 512, [\"comments-alt-dollar\"], \"f652\", \"M0 64C0 28.7 28.7 0 64 0H352c35.3 0 64 28.7 64 64V256c0 35.3-28.7 64-64 64H202.7l-81.1 60.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V320H64c-35.3 0-64-28.7-64-64V64zM256 352h96c53 0 96-43 96-96V128H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H544v48c0 6.1-3.4 11.6-8.8 14.3s-11.9 2.1-16.8-1.5L437.3 448H320c-35.3 0-64-28.7-64-64V352zM228 56c0-11-9-20-20-20s-20 9-20 20V70c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V264c0 11 9 20 20 20s20-9 20-20V250.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V56z\"]\n};\nvar faCommentsAltDollar = faMessagesDollar;\nvar faSensorOn = {\n prefix: 'fas',\n iconName: 'sensor-on',\n icon: [640, 512, [], \"e02b\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm88 0c-13.3 0-24 10.7-24 24V264c0 13.3 10.7 24 24 24s24-10.7 24-24V120c0-13.3-10.7-24-24-24zm96 0c-13.3 0-24 10.7-24 24V264c0 13.3 10.7 24 24 24s24-10.7 24-24V120c0-13.3-10.7-24-24-24zm413.3 12l-48 32c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l48-32c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3zM536 232h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H536c-13.3 0-24-10.7-24-24s10.7-24 24-24zm13.3 140l48 32c11 7.4 14 22.3 6.7 33.3s-22.3 14-33.3 6.7l-48-32c-11-7.4-14-22.3-6.7-33.3s22.3-14 33.3-6.7z\"]\n};\nvar faBalloon = {\n prefix: 'fas',\n iconName: 'balloon',\n icon: [384, 512, [], \"e2e3\", \"M0 192C0 86 86 0 192 0S384 86 384 192c0 102.6-102.8 194.9-143.6 227.5c-9.3 7.4-12.5 20.4-7.1 31l21.4 42.7c.9 1.8 1.4 3.8 1.4 5.8c0 7.1-5.8 12.9-12.9 12.9H140.9c-7.1 0-12.9-5.8-12.9-12.9c0-2 .5-4 1.4-5.8l21.4-42.7c5.3-10.6 2.1-23.6-7.1-31C102.8 386.9 0 294.6 0 192zm96-16c0-44.2 35.8-80 80-80c8.8 0 16-7.2 16-16s-7.2-16-16-16C114.1 64 64 114.1 64 176c0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [9763], \"f780\", \"M173.2 0c-1.8 0-3.5 .7-4.8 2C138.5 32.3 120 74 120 120c0 26.2 6 50.9 16.6 73c-22 2.4-43.8 9.1-64.2 20.5C37.9 232.8 13.3 262.4 .4 296c-.7 1.7-.5 3.7 .5 5.2c2.2 3.7 7.4 4.3 10.6 1.3C64.2 254.3 158 245.1 205 324s-8.1 153.1-77.6 173.2c-4.2 1.2-6.3 5.9-4.1 9.6c1 1.6 2.6 2.7 4.5 3c36.5 5.9 75.2 .1 109.7-19.2c20.4-11.4 37.4-26.5 50.5-43.8c13.1 17.3 30.1 32.4 50.5 43.8c34.5 19.3 73.3 25.2 109.7 19.2c1.9-.3 3.5-1.4 4.5-3c2.2-3.7 .1-8.4-4.1-9.6C379.1 477.1 324 403 371 324s140.7-69.8 193.5-21.4c3.2 2.9 8.4 2.3 10.6-1.3c1-1.6 1.1-3.5 .5-5.2c-12.9-33.6-37.5-63.2-72.1-82.5c-20.4-11.4-42.2-18.1-64.2-20.5C450 170.9 456 146.2 456 120c0-46-18.5-87.7-48.4-118c-1.3-1.3-3-2-4.8-2c-5 0-8.4 5.2-6.7 9.9C421.7 80.5 385.6 176 288 176S154.3 80.5 179.9 9.9c1.7-4.7-1.6-9.9-6.7-9.9zM240 272a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM181.7 417.6c6.3-11.8 9.8-25.1 8.6-39.8c-19.5-18-34-41.4-41.2-67.8c-12.5-8.1-26.2-11.8-40-12.4c-9-.4-18.1 .6-27.1 2.7c7.8 57.1 38.7 106.8 82.9 139.4c6.8-6.7 12.6-14.1 16.8-22.1zM288 64c-28.8 0-56.3 5.9-81.2 16.5c2 8.3 5 16.2 9 23.5c6.8 12.4 16.7 23.1 30.1 30.3c13.3-4.1 27.5-6.3 42.2-6.3s28.8 2.2 42.2 6.3c13.4-7.2 23.3-17.9 30.1-30.3c4-7.3 7-15.2 9-23.5C344.3 69.9 316.8 64 288 64zM426.9 310c-7.2 26.4-21.7 49.7-41.2 67.8c-1.2 14.7 2.2 28.1 8.6 39.8c4.3 8 10 15.4 16.8 22.1c44.3-32.6 75.2-82.3 82.9-139.4c-9-2.2-18.1-3.1-27.1-2.7c-13.8 .6-27.5 4.4-40 12.4z\"]\n};\nvar faChessQueenPiece = {\n prefix: 'fas',\n iconName: 'chess-queen-piece',\n icon: [256, 512, [\"chess-queen-alt\"], \"f446\", \"M104 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM229.9 124.9l-41.5 67.5c11.2 2.1 19.6 11.8 19.6 23.6c0 13.3-10.7 24-24 24h-8l19.6 144H60.4L80 240H72c-13.3 0-24-10.7-24-24c0-11.8 8.5-21.5 19.6-23.6L26.1 124.9c-3.7-6-3-13.6 1.6-18.9s12.1-6.9 18.6-4.1c3 1.3 6.3 2.1 9.8 2.1c11.8 0 21.6-8.5 23.6-19.7c1.1-6.3 6-11.4 12.3-12.8s12.8 1.1 16.5 6.4C112.8 84 119.9 88 128 88s15.2-4 19.6-10.1c3.7-5.3 10.2-7.8 16.5-6.4s11.1 6.4 12.3 12.8c2 11.2 11.8 19.7 23.6 19.7c3.5 0 6.8-.7 9.8-2.1c6.4-2.9 13.9-1.2 18.6 4.1s5.3 13 1.6 18.9zM208 416l43.2 57.6c3.1 4.2 4.8 9.2 4.8 14.4c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24c0-5.2 1.7-10.2 4.8-14.4L48 416H208z\"]\n};\nvar faChessQueenAlt = faChessQueenPiece;\nvar faLocationCrosshairs = {\n prefix: 'fas',\n iconName: 'location-crosshairs',\n icon: [512, 512, [\"location\"], \"f601\", \"M256 0c17.7 0 32 14.3 32 32V66.7C368.4 80.1 431.9 143.6 445.3 224H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H445.3C431.9 368.4 368.4 431.9 288 445.3V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C143.6 431.9 80.1 368.4 66.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H66.7C80.1 143.6 143.6 80.1 224 66.7V32c0-17.7 14.3-32 32-32zM128 256a128 128 0 1 0 256 0 128 128 0 1 0 -256 0zm128-80a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faLocation = faLocationCrosshairs;\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [640, 512, [9891], \"f227\", \"M312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L275.8 159c-28.4-19.5-62.7-31-99.8-31C78.8 128 0 206.8 0 304s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L407 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312zm88 48h0v0l0 0zM64 304a112 112 0 1 1 224 0A112 112 0 1 1 64 304zM368 480c97.2 0 176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L599 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H504c-9.7 0-18.5 5.8-22.2 14.8c-1.2 2.9-1.8 6-1.8 9l0 .2v.2c0 6.2 2.5 12.2 7 16.8l33.4 33.4L480 146.7V168c0 22.6-13.6 43.1-34.6 51.7c-.8 .3-1.7 .7-2.5 1C465.7 241.2 480 270.9 480 304c0 61.9-50.1 112-112 112c-5.4 0-10.8-.4-16-1.1c-12.9 20.4-29.1 38.3-48.1 53.1c19.8 7.8 41.4 12 64 12z\"]\n};\nvar faHousePersonLeave = {\n prefix: 'fas',\n iconName: 'house-person-leave',\n icon: [640, 512, [\"house-leave\", \"house-person-depart\"], \"e00f\", \"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0L379.5 117.2c-32.6 19.5-57.5 50.2-69.6 86.7l-2.6 7.8c-11.2 33.5 6.9 69.8 40.5 81c15.8 5.3 32.2 4 46.3-2.3L361.5 372l-44 44H112c-26.5 0-48-21.5-48-48V256H32c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM128 208v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16zM528 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM443.7 200.5l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L601 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L567 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5c-1 .4-1.9 .8-2.9 1.2zm-30 135.1c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1l-61.7 61.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L388.7 398l25-62.4z\"]\n};\nvar faHouseLeave = faHousePersonLeave;\nvar faHousePersonDepart = faHousePersonLeave;\nvar faRulerTriangle = {\n prefix: 'fas',\n iconName: 'ruler-triangle',\n icon: [512, 512, [128208], \"f61c\", \"M0 32V448c0 35.3 28.7 64 64 64H480c17.7 0 32-14.3 32-32v-2.7c0-8.5-3.4-16.6-9.4-22.6l-51.3-51.3-24 24c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l24-24-57.4-57.4-24 24c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l24-24-57.4-57.4-24 24c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l24-24-57.4-57.4-24 24c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l24-24L131.3 83.3l-24 24c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l24-24L57.4 9.4C51.4 3.4 43.2 0 34.7 0H32C14.3 0 0 14.3 0 32zM128 256L256 384H128V256z\"]\n};\nvar faCardClub = {\n prefix: 'fas',\n iconName: 'card-club',\n icon: [384, 512, [], \"e3e9\", \"M0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM130.1 208.3C101.9 211.3 80 235.1 80 264c0 30.9 25.1 56 56 56c15.7 0 29.8-6.4 40-16.8V336H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H208V303.2c10.2 10.4 24.3 16.8 40 16.8c30.9 0 56-25.1 56-56c0-28.9-21.9-52.7-50.1-55.7c1.4-5.2 2.1-10.7 2.1-16.3c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 5.6 .7 11.1 2.1 16.3z\"]\n};\nvar faChildDress = {\n prefix: 'fas',\n iconName: 'child-dress',\n icon: [320, 512, [], \"e59c\", \"M224 64A64 64 0 1 0 96 64a64 64 0 1 0 128 0zM88 400v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h16v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h17.8c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.6 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2l28.7-37.8L55 378.9C51.6 389.3 59.3 400 70.2 400H88z\"]\n};\nvar faUsersBetweenLines = {\n prefix: 'fas',\n iconName: 'users-between-lines',\n icon: [640, 512, [], \"e591\", \"M0 24C0 10.7 10.7 0 24 0H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24C10.7 48 0 37.3 0 24zM0 488c0-13.3 10.7-24 24-24H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zM83.2 160a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 320c0-35.3 28.7-64 64-64h96c12.2 0 23.7 3.4 33.4 9.4c-37.2 15.1-65.6 47.2-75.8 86.6H64c-17.7 0-32-14.3-32-32zm461.6 32c-10.3-40.1-39.6-72.6-77.7-87.4c9.4-5.5 20.4-8.6 32.1-8.6h96c35.3 0 64 28.7 64 64c0 17.7-14.3 32-32 32H493.6zM391.2 290.4c32.1 7.4 58.1 30.9 68.9 61.6c3.5 10 5.5 20.8 5.5 32c0 17.7-14.3 32-32 32h-224c-17.7 0-32-14.3-32-32c0-11.2 1.9-22 5.5-32c10.5-29.7 35.3-52.8 66.1-60.9c7.8-2.1 16-3.1 24.5-3.1h96c7.4 0 14.7 .8 21.6 2.4zm44-130.4a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM321.6 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M320 0c17.7 0 32 14.3 32 32V156.2c-8.5-7.6-19.7-12.2-32-12.2s-23.5 4.6-32 12.2V32c0-17.7 14.3-32 32-32zM444.5 195.5c-16.4-16.4-41.8-18.5-60.5-6.1V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2c-20.9-5.2-38.7-17.1-51.5-32.9c14 1.5 28.5-3 39.2-13.8l-22.6-22.6 22.6 22.6c18.7-18.7 18.7-49.1 0-67.9c-1.1-1.1-1.4-2-1.5-2.5c-.1-.8-.1-1.8 .4-2.9s1.2-1.9 1.8-2.3c.5-.3 1.3-.8 2.9-.8c26.5 0 48-21.5 48-48s-21.5-48-48-48c-1.6 0-2.4-.4-2.9-.8c-.6-.4-1.3-1.2-1.8-2.3s-.5-2.2-.4-2.9c.1-.6 .4-1.4 1.5-2.5c18.7-18.7 18.7-49.1 0-67.9zM421.8 421.8c-6.2 6.2-16.4 6.2-22.6 0C375.9 398.5 336 415 336 448c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C241.5 375.9 225 336 192 336c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C264.1 241.5 304 225 304 192c0-8.8 7.2-16 16-16s16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C398.5 264.1 415 304 448 304c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6zM183.3 491.2l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v24.1c-18.6-12.4-44-10.3-60.5 6.1c-18.7 18.7-18.7 49.1 0 67.9c1.1 1.1 1.4 2 1.5 2.5c.1 .8 .1 1.8-.4 2.9s-1.2 1.9-1.8 2.3c-.5 .3-1.3 .8-2.9 .8c-26.5 0-48 21.5-48 48s21.5 48 48 48c1.6 0 2.4 .4 2.9 .8c.6 .4 1.3 1.2 1.8 2.3s.5 2.2 .4 2.9c-.1 .6-.4 1.4-1.5 2.5c-18.7 18.7-18.7 49.1 0 67.9c10.7 10.7 25.3 15.3 39.2 13.8c-12.8 15.9-30.6 27.7-51.5 32.9zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faSpinnerThird = {\n prefix: 'fas',\n iconName: 'spinner-third',\n icon: [512, 512, [], \"f3f4\", \"M224 32c0-17.7 14.3-32 32-32C397.4 0 512 114.6 512 256c0 46.6-12.5 90.4-34.3 128c-8.8 15.3-28.4 20.5-43.7 11.7s-20.5-28.4-11.7-43.7c16.3-28.2 25.7-61 25.7-96c0-106-86-192-192-192c-17.7 0-32-14.3-32-32z\"]\n};\nvar faFaceGrinTears = {\n prefix: 'fas',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M548.6 371.4C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c3.6-8.8 6.5-18.4 8.8-27.5c4.6-18.2 7.7-37 9.3-48.2c3.9-26.5-18.8-49.2-45.2-45.4c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-26.5-3.9-49.2 18.8-45.2 45.4c1.6 11.3 4.6 30 9.3 48.2c2.3 9.1 5.2 18.8 8.8 27.5c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3zM107 254.1c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9zm454.5 87.1c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zm-90.1-9.7c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.4 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM281.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C190.7 188.4 184 206.1 184 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C350.7 188.4 344 206.1 344 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z\"]\n};\nvar faGrinTears = faFaceGrinTears;\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [128222, 128379], \"f095\", \"M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z\"]\n};\nvar faComputerMouseScrollwheel = {\n prefix: 'fas',\n iconName: 'computer-mouse-scrollwheel',\n icon: [384, 512, [\"mouse-alt\"], \"f8cd\", \"M160 0C71.6 0 0 71.6 0 160V352c0 88.4 71.6 160 160 160h64c88.4 0 160-71.6 160-160V160C384 71.6 312.4 0 224 0H160zm64 128v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V128c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faMouseAlt = faComputerMouseScrollwheel;\nvar faCalendarXmark = {\n prefix: 'fas',\n iconName: 'calendar-xmark',\n icon: [512, 512, [\"calendar-times\"], \"f273\", \"M160 0c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H32V112c0-26.5 21.5-48 48-48h48V32c0-17.7 14.3-32 32-32zM32 192H480V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V192zM337 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z\"]\n};\nvar faCalendarTimes = faCalendarXmark;\nvar faChildReaching = {\n prefix: 'fas',\n iconName: 'child-reaching',\n icon: [384, 512, [], \"e59d\", \"M256 64A64 64 0 1 0 128 64a64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384h32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V221.6c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z\"]\n};\nvar faTableLayout = {\n prefix: 'fas',\n iconName: 'table-layout',\n icon: [512, 512, [], \"e290\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM448 96v64H64V96H448zM64 224h64V416H64V224zm384 0V416H192V224H448z\"]\n};\nvar faNarwhal = {\n prefix: 'fas',\n iconName: 'narwhal',\n icon: [640, 512, [], \"f6fe\", \"M639.3 20.7c2.4-7.8-1.4-16.1-8.9-19.4s-16.2-.4-20.2 6.6L516.7 168.3c-16.9-5.4-34.9-8.3-53.6-8.3c-50.9 0-100.7 17.5-140.2 49.6L154.1 346.8c-10.5 8.5-26.1 1.1-26.1-12.4V253.1l29.9-20.9c21.4-15 34.1-39.4 34.1-65.5l0-54.7c0-6-3.3-11.4-8.6-14.2s-11.7-2.3-16.6 1.1L96 148.5 25.2 98.9c-4.9-3.4-11.3-3.8-16.6-1.1S0 106 0 112l0 54.7c0 26.1 12.7 50.6 34.1 65.5L64 253.1V352c0 88.4 71.6 160 160 160H464c97.2 0 176-78.8 176-176c0-51.4-22.3-97.7-57.8-129.9l57-185.4zM496 280a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faRampLoading = {\n prefix: 'fas',\n iconName: 'ramp-loading',\n icon: [448, 512, [], \"f4d4\", \"M32 48C32 21.5 53.5 0 80 0H368c26.5 0 48 21.5 48 48V440.4l-64-128V64H96V312.4l-64 128V48zM404.4 488.8c.8 1.5 1.2 3 1.5 4.6c1.5 9.3-5.6 18.6-15.8 18.6H368 80 57.9c-10.2 0-17.4-9.2-15.8-18.6c.3-1.5 .7-3.1 1.5-4.6L96 384l32-64H320l32 64 52.4 104.8z\"]\n};\nvar faCalendarCirclePlus = {\n prefix: 'fas',\n iconName: 'calendar-circle-plus',\n icon: [576, 512, [], \"e470\", \"M128 0C110.3 0 96 14.3 96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32zM256 368c0-91.8 70.3-167.2 160-175.3V192H0V464c0 26.5 21.5 48 48 48H330.8C285.6 480.1 256 427.5 256 368zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faToothbrush = {\n prefix: 'fas',\n iconName: 'toothbrush',\n icon: [576, 512, [129701], \"f635\", \"M64 224c-35.3 0-64-28.7-64-64s28.7-64 64-64H288c31.2 0 38.2-22.7 39.6-48c.5-8.8 7.6-16.1 16.4-15.2c52.4 5.3 104 36.7 104 95.2c0 53-43 96-96 96H64zm-8 32c13.3 0 24 10.7 24 24V416h32V280c0-13.3 10.7-24 24-24s24 10.7 24 24V416h32V280c0-13.3 10.7-24 24-24s24 10.7 24 24V416h32V280c0-13.3 10.7-24 24-24s24 10.7 24 24V416h32V280c0-13.3 10.7-24 24-24s24 10.7 24 24V416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V280c0-13.3 10.7-24 24-24z\"]\n};\nvar faBorderInner = {\n prefix: 'fas',\n iconName: 'border-inner',\n icon: [448, 512, [], \"f84e\", \"M64 448A32 32 0 1 1 0 448a32 32 0 1 1 64 0zm96 0a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm0-384A32 32 0 1 1 96 64a32 32 0 1 1 64 0zM320 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM352 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64 352a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 64A32 32 0 1 1 0 64a32 32 0 1 1 64 0zM416 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 352A32 32 0 1 1 0 352a32 32 0 1 1 64 0zM416 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 160A32 32 0 1 1 0 160a32 32 0 1 1 64 0zM0 256c0-17.7 14.3-32 32-32l160 0 0-160c0-17.7 14.3-32 32-32s32 14.3 32 32l0 160 160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0 0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160L32 288c-17.7 0-32-14.3-32-32z\"]\n};\nvar faPawClaws = {\n prefix: 'fas',\n iconName: 'paw-claws',\n icon: [512, 512, [], \"f702\", \"M178.1 15.3C183 9.9 192 13.4 192 20.7V71.2c18.3 9.8 34.3 28.9 42.5 53.6c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5c-4-11.9-5.7-23.9-5.5-35.2h0c0-25.7 9.6-50.6 26.9-69.6l39.2-43.1zm132 206.3c-32.3-10.6-46.9-53.9-32.6-96.8c8.2-24.7 24.2-43.8 42.5-53.6V20.7c0-7.3 9-10.8 13.9-5.4l39.2 43.1c17.3 19 26.9 43.9 26.9 69.6h0c.2 11.3-1.5 23.2-5.5 35.1c-14.3 42.9-52.1 69.1-84.4 58.5zm-209.7 8.9c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3C3.7 267.8-.1 253.3 0 240H0v-3.2c0-13.5 4.3-26.7 12.2-37.6l37.3-51.3c4.6-6.3 14.5-3 14.5 4.7v44.2c13.9 6.1 27.1 17.8 36.4 33.7zM69.2 433.2C121.6 291.9 214.7 256 256 256s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5v1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 512 64 491.1 64 465.3v-1.6c0-10.4 1.6-20.7 5.2-30.5zM421.8 314.7c-24.5-14-29.1-51.7-10.2-84.1c9.3-15.9 22.4-27.6 36.4-33.7V152.6c0-7.7 9.9-11 14.5-4.7l37.3 51.3c8 10.9 12.2 24.1 12.2 37.6V240h0c.1 13.3-3.7 27.8-11.6 41.4c-18.9 32.4-54 47.3-78.5 33.3z\"]\n};\nvar faKiwiFruit = {\n prefix: 'fas',\n iconName: 'kiwi-fruit',\n icon: [448, 512, [], \"e30c\", \"M448 176c0 79.5-100.3 144-224 144S0 255.5 0 176S100.3 32 224 32s224 64.5 224 144zM224 64c-8.8 0-16 7.2-16 16v24c0 8.8 7.2 16 16 16s16-7.2 16-16V80c0-8.8-7.2-16-16-16zM64 176c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm256 0c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336c-8.8 0-16 7.2-16 16zm-96 56c-8.8 0-16 7.2-16 16v24c0 8.8 7.2 16 16 16s16-7.2 16-16V248c0-8.8-7.2-16-16-16zM139.3 92.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-16-16zm192 0c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6zm-176 150.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l16-16zm160-22.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-16-16zM280 176c0-13.3-25.1-24-56-24s-56 10.7-56 24s25.1 24 56 24s56-10.7 56-24zM224 480C102.4 480 3.4 383.1 .1 262.2c13.2 16.4 29.8 30.7 48.2 42.5C94.7 334.6 156.9 352 224 352s129.3-17.4 175.7-47.3c18.5-11.9 35-26.2 48.2-42.5C444.6 383.1 345.6 480 224 480z\"]\n};\nvar faTrafficLightSlow = {\n prefix: 'fas',\n iconName: 'traffic-light-slow',\n icon: [320, 512, [], \"f639\", \"M64 0C28.7 0 0 28.7 0 64V352c0 88.4 71.6 160 160 160s160-71.6 160-160V64c0-35.3-28.7-64-64-64H64zm72 368a24 24 0 1 0 48 0 24 24 0 1 0 -48 0zm72 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm0-128a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zM136 112a24 24 0 1 0 48 0 24 24 0 1 0 -48 0zm72 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0z\"]\n};\nvar faRectangleCode = {\n prefix: 'fas',\n iconName: 'rectangle-code',\n icon: [512, 512, [], \"e322\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm294.2 71.9c-8.9 9.9-8.1 25 1.8 33.9L356.1 256l-60.2 54.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72c-9.9-8.9-25-8.1-33.9 1.8zm-78.1 33.9c9.9-8.9 10.7-24 1.8-33.9s-24-10.7-33.9-1.8l-80 72c-5.1 4.6-7.9 11-7.9 17.8s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L155.9 256l60.2-54.2z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM224 64c-8.8 0-16 7.2-16 16c0 33-39.9 49.5-63.2 26.2c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6C145.5 152.1 129 192 96 192c-8.8 0-16 7.2-16 16s7.2 16 16 16c33 0 49.5 39.9 26.2 63.2c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0C168.1 286.5 208 303 208 336c0 8.8 7.2 16 16 16s16-7.2 16-16c0-33 39.9-49.5 63.2-26.2c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6C302.5 263.9 319 224 352 224c8.8 0 16-7.2 16-16s-7.2-16-16-16c-33 0-49.5-39.9-26.2-63.2c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0C279.9 129.5 240 113 240 80c0-8.8-7.2-16-16-16zm-24 96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faKeyboardBrightness = {\n prefix: 'fas',\n iconName: 'keyboard-brightness',\n icon: [640, 512, [], \"e1c0\", \"M134.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64zM288 192c0 17.7 14.3 32 32 32s32-14.3 32-32V96c0-17.7-14.3-32-32-32s-32 14.3-32 32v96zm153.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64zM0 384c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zm224-32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H224zm320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H544z\"]\n};\nvar faBooksMedical = {\n prefix: 'fas',\n iconName: 'books-medical',\n icon: [576, 512, [], \"f7e8\", \"M64 32C64 14.3 78.3 0 96 0h64c17.7 0 32 14.3 32 32V96H64V32zm0 384H192v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V416zM224 32c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V96H224V32zm0 96H352V384H224V128zm0 288H352v64c0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32V416zm203.6-19.9L384 232.6V142.8l100.4-26.9 66 247.4L427.6 396.1zM476.2 85L384 109.6V11l36.9-9.9c16.9-4.6 34.4 5.5 38.9 22.6L476.2 85zM435.8 427l122.8-32.9 16.3 61.1c4.5 17-5.5 34.5-22.5 39.1l-61.4 16.5c-16.9 4.6-34.4-5.5-38.9-22.6L435.8 427zM64 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H128v48c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V288H16c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16H64V176z\"]\n};\nvar faLightbulbSlash = {\n prefix: 'fas',\n iconName: 'lightbulb-slash',\n icon: [640, 512, [], \"f673\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-195-152.8c4.4-6.2 8.9-12.4 13.4-18.6l0 0 0 0 0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C496 78.8 417.2 0 320 0C249.7 0 189.1 41.2 160.8 100.8L38.8 5.1zM213.3 141.9C227.7 96.7 270 64 320 64c8.8 0 16 7.2 16 16s-7.2 16-16 16c-40 0-73.1 29.3-79 67.6l-27.7-21.7zm-60.9 87.9c5.4 16.8 13.2 32.4 23 46.6c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H348.1L152.4 229.8zM240 416v16c0 44.2 35.8 80 80 80s80-35.8 80-80v-7.1L388.7 416H240z\"]\n};\nvar faHouseBlank = {\n prefix: 'fas',\n iconName: 'house-blank',\n icon: [576, 512, [\"home-blank\"], \"e487\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"]\n};\nvar faHomeBlank = faHouseBlank;\nvar faSquare5 = {\n prefix: 'fas',\n iconName: 'square-5',\n icon: [448, 512, [], \"e25a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm112 96H280c13.3 0 24 10.7 24 24s-10.7 24-24 24H196l-7.8 43 61.4 6.9c40.1 4.5 70.4 38.4 70.4 78.8c0 43.8-35.5 79.3-79.3 79.3h-36c-27.5 0-53.3-13.7-68.6-36.6l-4.1-6.1c-7.4-11-4.5-25.9 6.5-33.3s25.9-4.5 33.3 6.5l4.1 6.1c6.4 9.6 17.2 15.3 28.8 15.3h36c17.3 0 31.3-14 31.3-31.3c0-15.9-12-29.3-27.8-31.1l-86.9-9.8c-6.6-.7-12.6-4.2-16.6-9.5s-5.5-12.1-4.4-18.6l16-88c2.1-11.4 12-19.7 23.6-19.7z\"]\n};\nvar faSquareHeart = {\n prefix: 'fas',\n iconName: 'square-heart',\n icon: [448, 512, [128159, \"heart-square\"], \"f4c8\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM99.9 280.9c-29.4-29.8-29.4-78.2 0-108s77-29.8 106.4 0l17.7 18 17.7-18c29.4-29.8 77-29.8 106.4 0s29.4 78.2 0 108L246.5 384.1c-6.2 6.3-14.3 9.4-22.5 9.4s-16.3-3.1-22.5-9.4L99.9 280.9z\"]\n};\nvar faHeartSquare = faSquareHeart;\nvar faPuzzle = {\n prefix: 'fas',\n iconName: 'puzzle',\n icon: [512, 512, [], \"e443\", \"M320 0H448c35.3 0 64 28.7 64 64V192c0 8.8-7.2 16-16 16H444c-6.6 0-12 5.4-12 12v4c0 17.7-14.3 32-32 32s-32-14.3-32-32v-4c0-6.6-5.4-12-12-12l-36 0c-8.8 0-16-7.2-16-16V160c0-8.8 7.2-16 16-16h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-8.8 0-16-7.2-16-16V16c0-8.8 7.2-16 16-16zM0 256V128C0 92.7 28.7 64 64 64H192c8.8 0 16 7.2 16 16v36c0 6.6 5.4 12 12 12h4c17.7 0 32 14.3 32 32s-14.3 32-32 32h-4c-6.6 0-12 5.4-12 12v52c0 8.8-7.2 16-16 16H160c-8.8 0-16-7.2-16-16V240c0-17.7-14.3-32-32-32s-32 14.3-32 32v16c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16zM0 448V320c0-8.8 7.2-16 16-16H192c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-17.7 0-32 14.3-32 32s14.3 32 32 32h16c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H64c-35.3 0-64-28.7-64-64zM240 320c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v16c0 17.7 14.3 32 32 32s32-14.3 32-32V320c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16V448c0 35.3-28.7 64-64 64H256c-8.8 0-16-7.2-16-16V320z\"]\n};\nvar faUserGear = {\n prefix: 'fas',\n iconName: 'user-gear',\n icon: [640, 512, [\"user-cog\"], \"f4fe\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7v.9c0 9.2 2.7 18.5 7.9 26.3H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8v30.6c7.9 3.4 15.4 7.7 22.3 12.8l24.9-14.3c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-25 14.4c.4 4 .7 8.1 .7 12.3s-.2 8.2-.7 12.3l25 14.4c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-24.9-14.3c-6.9 5.1-14.3 9.4-22.3 12.8l0 30.6c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8V454.8c-8-3.4-15.6-7.7-22.5-12.9l-24.7 14.3c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l24.8-14.3c-.4-4.1-.7-8.2-.7-12.4s.2-8.3 .7-12.4L343.8 325c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l24.8 14.3c6.9-5.1 14.5-9.4 22.5-12.9V218.2zm92.1 133.5a48.1 48.1 0 1 0 -96.1 0 48.1 48.1 0 1 0 96.1 0z\"]\n};\nvar faUserCog = faUserGear;\nvar faPipeCircleCheck = {\n prefix: 'fas',\n iconName: 'pipe-circle-check',\n icon: [640, 512, [], \"e436\", \"M32 96c17.7 0 32 14.3 32 32V384c0 17.7-14.3 32-32 32s-32-14.3-32-32V128c0-17.7 14.3-32 32-32zm448 0c17.7 0 32 14.3 32 32v64.7c-5.3-.5-10.6-.7-16-.7c-16.6 0-32.7 2.3-48 6.6V128c0-17.7 14.3-32 32-32zM320 368c0 5.4 .2 10.7 .7 16H96V128H416v83.2c-57 29.1-96 88.4-96 156.8zm32 0a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faArrowUp19 = {\n prefix: 'fas',\n iconName: 'arrow-up-1-9',\n icon: [576, 512, [\"sort-numeric-up\"], \"f163\", \"M450.7 38c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V108.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM445.7 364.9A32 32 0 1 0 418.3 307a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUp = faArrowUp19;\nvar faOctagonExclamation = {\n prefix: 'fas',\n iconName: 'octagon-exclamation',\n icon: [512, 512, [], \"e204\", \"M140.6 21.2C154.1 7.7 172.4 .1 191.5 .1h129c19.1 0 37.4 7.6 50.9 21.1L490.8 140.6c13.5 13.5 21.1 31.8 21.1 50.9v129c0 19.1-7.6 37.4-21.1 50.9L371.4 490.8c-13.5 13.5-31.8 21.1-50.9 21.1h-129c-19.1 0-37.4-7.6-50.9-21.1L21.2 371.4C7.7 357.9 .1 339.6 .1 320.5v-129c0-19.1 7.6-37.4 21.1-50.9L140.6 21.2zM256 128c-13.3 0-24 10.7-24 24V264c0 13.3 10.7 24 24 24s24-10.7 24-24V152c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faDialLow = {\n prefix: 'fas',\n iconName: 'dial-low',\n icon: [576, 512, [], \"e15d\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-.4 447.6c-80.2 0-146.6-59-158.2-136l158.2 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-158.2 0c11.6-77 78-136 158.2-136c88.4 0 160 71.6 160 160s-71.6 160-160 160zM512 288a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 96a32 32 0 1 1 64 0A32 32 0 1 1 64 96zM480 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 480a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm416-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [576, 512, [128682], \"f52a\", \"M96 64c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V448h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 144 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96V64zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faLaptopMobile = {\n prefix: 'fas',\n iconName: 'laptop-mobile',\n icon: [640, 512, [\"phone-laptop\"], \"f87a\", \"M128 0C92.7 0 64 28.7 64 64V288H19.2C8.6 288 0 296.6 0 307.2C0 349.6 34.4 384 76.8 384H352V288H128V64H448V96h64V64c0-35.3-28.7-64-64-64H128zM448 448V192H576V448H448zM384 176V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H432c-26.5 0-48 21.5-48 48z\"]\n};\nvar faPhoneLaptop = faLaptopMobile;\nvar faConveyorBeltBoxes = {\n prefix: 'fas',\n iconName: 'conveyor-belt-boxes',\n icon: [640, 512, [\"conveyor-belt-alt\"], \"f46f\", \"M64 32C64 14.3 78.3 0 96 0H288c17.7 0 32 14.3 32 32V224c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V32zM384 96c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32V224c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V96zM0 416c0-53 43-96 96-96H544c53 0 96 43 96 96s-43 96-96 96H96c-53 0-96-43-96-96zm160 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm160 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm224-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faConveyorBeltAlt = faConveyorBeltBoxes;\nvar faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 112c8.8 0 16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C334.5 200.1 351 240 384 240c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C311.9 334.5 272 351 272 384c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C177.5 311.9 161 272 128 272c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C200.1 177.5 240 161 240 128c0-8.8 7.2-16 16-16zM232 256a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faStarfighterTwinIonEngineAdvanced = {\n prefix: 'fas',\n iconName: 'starfighter-twin-ion-engine-advanced',\n icon: [640, 512, [\"starfighter-alt-advanced\"], \"e28e\", \"M148.8 7.7c13.4 11.5 15 31.7 3.5 45.1L64 155.8v61.8l107.6-21.5C195.3 137.4 252.8 96 320 96s124.7 41.4 148.4 100.1L576 217.6V148.5L488.5 53.7c-12-13-11.2-33.2 1.8-45.2s33.2-11.2 45.2 1.8L623 105.1c10.9 11.8 17 27.3 17 43.4V348.8c0 14.5-4.9 28.6-14 40L537 500c-11 13.8-31.2 16-45 5s-16-31.2-5-45l89-111.2V294.4L468.4 315.9C444.7 374.6 387.2 416 320 416s-124.7-41.4-148.4-100.1L64 294.4v61.8l88.3 103c11.5 13.4 9.9 33.6-3.5 45.1s-33.6 9.9-45.1-3.5l-88.3-103C5.5 386.2 0 371.4 0 356.2V155.8c0-15.3 5.5-30.1 15.4-41.7l88.3-103c11.5-13.4 31.7-15 45.1-3.5zM304 350.7V318c-5.9-1.5-11.4-3.8-16.5-6.8l-23.1 23.1c11.6 8.2 25 14 39.6 16.4zm-62.3-39l23.1-23.1c-3-5.1-5.3-10.6-6.8-16.5H225.3c2.4 14.6 8.2 28.1 16.4 39.6zM225.3 240H258c1.5-5.9 3.8-11.4 6.8-16.5l-23.1-23.1c-8.2 11.6-14 25-16.4 39.6zm39-62.3l23.1 23.1c5.1-3 10.6-5.3 16.5-6.8V161.3c-14.6 2.4-28.1 8.2-39.6 16.4zM375.6 334.3l-23.1-23.1c-5.1 3-10.6 5.3-16.5 6.8v32.7c14.6-2.4 28.1-8.2 39.6-16.4zm22.6-22.6c8.2-11.6 14-25 16.4-39.6H382c-1.5 5.9-3.8 11.4-6.8 16.5l23.1 23.1zM382 240h32.7c-2.4-14.6-8.2-28.1-16.4-39.6l-23.1 23.1c3 5.1 5.3 10.6 6.8 16.5zm-6.4-62.3c-11.6-8.2-25-14-39.6-16.4V194c5.9 1.5 11.4 3.8 16.5 6.8l23.1-23.1zM342.8 278.5c5.7-5.8 9.2-13.7 9.2-22.5c0-17.7-14.3-32-32-32l0 0 0 0c-17.7 0-32 14.3-32 32c0 17.7 14.3 32 32 32c8.8 0 16.7-3.5 22.5-9.2l.3-.3z\"]\n};\nvar faStarfighterAltAdvanced = faStarfighterTwinIonEngineAdvanced;\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [9861], \"f526\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faStarfighterTwinIonEngine = {\n prefix: 'fas',\n iconName: 'starfighter-twin-ion-engine',\n icon: [576, 512, [\"starfighter-alt\"], \"e038\", \"M32 32c17.7 0 32 14.3 32 32V211.2l75.6-15.1C163.3 137.4 220.8 96 288 96s124.7 41.4 148.4 100.1L512 211.2V64c0-17.7 14.3-32 32-32s32 14.3 32 32V224v64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V300.8l-75.6 15.1C412.7 374.6 355.2 416 288 416s-124.7-41.4-148.4-100.1L64 300.8V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 224 64C0 46.3 14.3 32 32 32zM272 350.7V318c-5.9-1.5-11.4-3.8-16.5-6.8l-23.1 23.1c11.6 8.2 25 14 39.6 16.4zm-62.3-39l23.1-23.1c-3-5.1-5.3-10.6-6.8-16.5H193.3c2.4 14.6 8.2 28.1 16.4 39.6zM193.3 240H226c1.5-5.9 3.8-11.4 6.8-16.5l-23.1-23.1c-8.2 11.6-14 25-16.4 39.6zm39-62.3l23.1 23.1c5.1-3 10.6-5.3 16.5-6.8V161.3c-14.6 2.4-28.1 8.2-39.6 16.4zM343.6 334.3l-23.1-23.1c-5.1 3-10.6 5.3-16.5 6.8v32.7c14.6-2.4 28.1-8.2 39.6-16.4zm22.6-22.6c8.2-11.6 14-25 16.4-39.6H350c-1.5 5.9-3.8 11.4-6.8 16.5l23.1 23.1zM350 240h32.7c-2.4-14.6-8.2-28.1-16.4-39.6l-23.1 23.1c3 5.1 5.3 10.6 6.8 16.5zm-6.4-62.3c-11.6-8.2-25-14-39.6-16.4V194c5.9 1.5 11.4 3.8 16.5 6.8l23.1-23.1zM310.8 278.5c5.7-5.8 9.2-13.7 9.2-22.5c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32c8.8 0 16.7-3.5 22.5-9.2l.3-.3z\"]\n};\nvar faStarfighterAlt = faStarfighterTwinIonEngine;\nvar faRocketLaunch = {\n prefix: 'fas',\n iconName: 'rocket-launch',\n icon: [512, 512, [128640], \"e027\", \"M117.8 128H207C286.9-3.7 409.5-8.5 483.9 5.3c11.6 2.2 20.7 11.2 22.8 22.8c13.8 74.4 9 197-122.7 276.9v89.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9l0-114.7c0-22.6-9-44.3-25-60.3s-37.7-25-60.3-25H24c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3zM424 128a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM166.5 470C132.3 504.3 66 511 28.3 511.9c-16 .4-28.6-12.2-28.2-28.2C1 446 7.7 379.7 42 345.5c34.4-34.4 90.1-34.4 124.5 0s34.4 90.1 0 124.5zm-46.7-36.4c11.4-11.4 11.4-30 0-41.4s-30-11.4-41.4 0c-10.1 10.1-13 28.5-13.7 41.3c-.5 8 5.9 14.3 13.9 13.9c12.8-.7 31.2-3.7 41.3-13.7z\"]\n};\nvar faMosquitoNet = {\n prefix: 'fas',\n iconName: 'mosquito-net',\n icon: [640, 512, [], \"e52c\", \"M168.8 462.3c-7.9-4-11.1-13.6-7.2-21.5L192 380.2l0-44.2c0-4.2 1.7-8.3 4.7-11.3L256 265.4V242.2L139.2 344C87.8 395.3 0 358.9 0 286.3c0-41.1 30.6-75.8 71.4-80.9l159.9-23.9-49.6-41.3c-5.1-4.2-7-11.1-4.9-17.4l13.9-41.7-29-58.1c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l32 64c1.9 3.8 2.2 8.2 .9 12.2l-12.5 37.6L256 160.5V137.9c0-14.9 10.1-27.3 23.8-31V63.7c0-4.5 3.7-8.2 8.2-8.2s8.2 3.7 8.2 8.2V107c13.7 3.6 23.8 16.1 23.8 31v22.6l45.4-37.8L352.8 85.1c-1.3-4-1-8.4 .9-12.2l32-64c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-29 58.1 13.9 41.7c2.1 6.2 .1 13.1-4.9 17.4l-49.6 41.3 159.9 23.9c22.5 2.8 41.8 14.6 54.7 31.4c-2.7 2.6-5.2 5.4-7.3 8.6c-8.6-12.9-23.3-21.5-40-21.5s-31.4 8.5-40 21.5c-8.6-12.9-23.3-21.5-40-21.5c-21.7 0-40 14.3-45.9 34.1c-10.7 3.2-19.8 10.1-25.9 19.2l-40.2-35v23.1l32.4 32.4c-.3 2-.4 4.1-.4 6.2c0 16.7 8.5 31.4 21.5 40c-4 2.6-7.5 5.9-10.6 9.5L320 310.6v50c0 17.7-14.3 32-32 32s-32-14.3-32-32v-50l-32 32 0 41.4c0 2.5-.6 4.9-1.7 7.2l-32 64c-4 7.9-13.6 11.1-21.5 7.2zM512 256c8.8 0 16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H528v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H448v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V400H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V320H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16zm16 112h48V320H528v48zm0 80h48V400H528v48zM448 320v48h48V320H448zm0 80v48h48V400H448z\"]\n};\nvar faVentDamper = {\n prefix: 'fas',\n iconName: 'vent-damper',\n icon: [640, 512, [], \"e465\", \"M64 128c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64v32h32c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H576v32c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V352H32c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32H64V128zm120 16c-13.3 0-24 10.7-24 24s10.7 24 24 24H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H184zm0 88c-13.3 0-24 10.7-24 24s10.7 24 24 24H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H184zm0 88c-13.3 0-24 10.7-24 24s10.7 24 24 24H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faBridgeWater = {\n prefix: 'fas',\n iconName: 'bridge-water',\n icon: [576, 512, [], \"e4ce\", \"M0 96C0 78.3 14.3 64 32 64H544c17.7 0 32 14.3 32 32v35.6c0 15.7-12.7 28.4-28.4 28.4c-37.3 0-67.6 30.2-67.6 67.6V352.5c-12.9 0-25.8 3.9-36.8 11.7c-18 12.4-40.1 20.3-59.2 20.3h0l0-.5V256c0-53-43-96-96-96s-96 43-96 96V384l0 .5c-19 0-41.2-7.9-59.1-20.3c-11.1-7.8-24-11.7-36.9-11.7V227.6C96 190.2 65.8 160 28.4 160C12.7 160 0 147.3 0 131.6V96zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faBanBug = {\n prefix: 'fas',\n iconName: 'ban-bug',\n icon: [512, 512, [\"debug\"], \"f7f9\", \"M256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2L367.2 412.5C335.9 434.9 297.5 448 256 448zm89-148.3l19.9 4c8.7 1.7 17.1-3.9 18.8-12.6s-3.9-17.1-12.6-18.8l-35.1-7V246.7l35.1-7c8.7-1.7 14.3-10.2 12.6-18.8s-10.2-14.3-18.8-12.6l-29.5 5.9c-1.1-9.2-3.8-17.8-7.7-25.8l24.5-14.7c7.6-4.5 10-14.4 5.5-22s-14.4-10-22-5.5L307.8 163c-14-11.9-32.1-19-51.8-19c-18.7 0-35.9 6.4-49.6 17.2L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L345 299.7zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM140.9 272.3c-8.7 1.7-14.3 10.2-12.6 18.8s10.2 14.3 18.8 12.6l29.5-5.9c1.1 9.2 3.8 17.8 7.7 25.8l-24.5 14.7c-7.6 4.5-10 14.4-5.5 22s14.4 10 22 5.5L204.2 349c14 11.9 32.1 19 51.8 19c6.6 0 13-.8 19.2-2.3L175 265.5l-34.1 6.8z\"]\n};\nvar faDebug = faBanBug;\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64V32zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM224 512c17.7 0 32-14.3 32-32V320H192V480c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM112 80A48 48 0 1 0 16 80a48 48 0 1 0 96 0zm0 261.3V269.3l4.7 4.7c9 9 21.2 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H157.3l-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6v55.7l0 .9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384l32 42.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V421.3c0-10.4-3.4-20.5-9.6-28.8L112 341.3z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M64 128V96H192l0 128H176c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H256l0-128H384v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H224 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V416H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H128V320c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"]\n};\nvar faGarageCar = {\n prefix: 'fas',\n iconName: 'garage-car',\n icon: [640, 512, [], \"e00a\", \"M0 488V171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4V488c0 13.3-10.7 24-24 24H568c-13.3 0-24-10.7-24-24V224c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32V488c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zM254.3 293.4L242.2 328H397.8l-12.1-34.6c-1.1-3.2-4.2-5.4-7.6-5.4H261.8c-3.4 0-6.4 2.2-7.6 5.4zM188.9 335L209 277.5c7.9-22.5 29.1-37.5 52.9-37.5H378.2c23.8 0 45 15.1 52.9 37.5L451.1 335c17.2 9.5 28.9 27.9 28.9 49v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V464H224v16c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-21.1 11.7-39.5 28.9-49zM240 424a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm184-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faSquareKanban = {\n prefix: 'fas',\n iconName: 'square-kanban',\n icon: [448, 512, [], \"e488\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zm-64-96c-17.7 0-32-14.3-32-32l0-192c0-17.7 14.3-32 32-32s32 14.3 32 32l0 192c0 17.7-14.3 32-32 32zM256 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64zM128 320c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 128c0 17.7-14.3 32-32 32z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6v1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416H240.9l11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416H64zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [128395, 10002], \"f5ac\", \"M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.4 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z\"]\n};\nvar faCoffeePot = {\n prefix: 'fas',\n iconName: 'coffee-pot',\n icon: [512, 512, [], \"e002\", \"M64 128c0-17.7 14.3-32 32-32h12.8l34 84.9C95 215.9 64 272.3 64 336v8c0 55.5 34.6 99.4 55.9 121.2c9.9 10.2 23.9 14.8 38.1 14.8H418c14.2 0 28.1-4.7 38.1-14.8C477.4 443.4 512 399.5 512 344v-8c0-63.7-31-120.1-78.8-155.1L478.1 68.8c1.3-3.2 1.9-6.6 1.9-10C480 44 468 32 453.2 32H192 122.8 96C43 32 0 75 0 128v64c0 17.7 14.3 32 32 32s32-14.3 32-32V128zm65 192c5.2-41.4 30.1-76.6 65-96H382c34.9 19.4 59.8 54.6 65 96H129z\"]\n};\nvar faMouseField = {\n prefix: 'fas',\n iconName: 'mouse-field',\n icon: [512, 512, [], \"e5a8\", \"M396.4 112.9C398.8 105 400 96.6 400 88c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 29.9 14.9 56.3 37.6 72.2C169.5 164.3 96 240.4 96 333.6c0 12.3 2.7 24 7.5 34.4H72c-39.8 0-72 32.2-72 72s32.2 72 72 72H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H72c-13.3 0-24-10.7-24-24s10.7-24 24-24H178.4 232h8 19H382.6c18.5 0 33.4-15 33.4-33.4c0-14.1-8.8-26.6-22-31.4l-43.7-15.9 23.8-63.5c2 .1 4 .2 6 .2H482.9c16.1 0 29.1-13 29.1-29.1c0-41.5-19.3-78.4-49.4-102.4C473.5 125.8 480 107.7 480 88c0-46.4-35.9-84.4-81.4-87.8C419.2 20.6 432 48.8 432 80c0 13.9-2.5 27.2-7.2 39.5c-9.1-3.2-18.6-5.5-28.4-6.6zM400 196a20 20 0 1 1 40 0 20 20 0 1 1 -40 0zM312 48c22.1 0 40 17.9 40 40v24c0 8.8-7.2 16-16 16H312c-22.1 0-40-17.9-40-40s17.9-40 40-40z\"]\n};\nvar faPersonDigging = {\n prefix: 'fas',\n iconName: 'person-digging',\n icon: [576, 512, [\"digging\"], \"f85e\", \"M208 64a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2H288c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7h32l22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V405.1l-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z\"]\n};\nvar faDigging = faPersonDigging;\nvar faShowerDown = {\n prefix: 'fas',\n iconName: 'shower-down',\n icon: [384, 512, [\"shower-alt\"], \"e24d\", \"M192 0c17.7 0 32 14.3 32 32v3.2C297 50 352 114.6 352 192c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32C32 114.6 87 50 160 35.2V32c0-17.7 14.3-32 32-32zm52.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V480c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4zm-82.2-85.6l18.2-42.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V352c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1zm146.2-42.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V352c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4zM98.7 465.7l18.2-42.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V480c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1zM52.8 295.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V352c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z\"]\n};\nvar faShowerAlt = faShowerDown;\nvar faBoxCircleCheck = {\n prefix: 'fas',\n iconName: 'box-circle-check',\n icon: [576, 512, [], \"e0c4\", \"M93.7 32H208V160H0L50.7 58.5C58.9 42.3 75.5 32 93.7 32zM240 32H354.3c18.2 0 34.8 10.3 42.9 26.5L448 160H416 240V32zM0 416V192H416v.7c-89.7 8.1-160 83.5-160 175.3c0 42.5 15.1 81.6 40.2 112H64c-35.3 0-64-28.7-64-64zm288-48a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faBrightness = {\n prefix: 'fas',\n iconName: 'brightness',\n icon: [512, 512, [], \"e0c9\", \"M224 80V32c0-17.7 14.3-32 32-32s32 14.3 32 32V80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM0 256c0-17.7 14.3-32 32-32H80c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zm432-32h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H432c-17.7 0-32-14.3-32-32s14.3-32 32-32zM256 512c-17.7 0-32-14.3-32-32V432c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 17.7-14.3 32-32 32zM73.4 438.6c-12.5-12.5-12.5-32.8 0-45.3l32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32c-12.5 12.5-32.8 12.5-45.3 0zm288-333.3l32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm77.3 333.3c-12.5 12.5-32.8 12.5-45.3 0l-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32c12.5 12.5 12.5 32.8 0 45.3zm-333.3-288l-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nvar faCarSideBolt = {\n prefix: 'fas',\n iconName: 'car-side-bolt',\n icon: [640, 512, [], \"e344\", \"M82.2 92.3L40.6 196.4C16.8 205.8 0 228.9 0 256V368c0 17.7 14.3 32 32 32H65.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H385.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H608c17.7 0 32-14.3 32-32V320c0-65.2-48.8-119-111.8-127L428.2 68c-18.2-22.8-45.8-36-75-36H171.3c-39.3 0-74.6 23.9-89.1 60.3zM480 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM114.7 368a48 48 0 1 1 90.5 32 48 48 0 1 1 -90.5-32zM331.2 100.6c5.3 5.2 6.3 13.3 2.5 19.6L300.3 176H352c7.1 0 13.4 4.7 15.4 11.6s-.8 14.2-6.9 18l-128 80c-6.3 3.9-14.4 3-19.7-2.2s-6.3-13.3-2.5-19.6L243.7 208H192c-7.1 0-13.4-4.7-15.4-11.6s.8-14.2 6.9-18l128-80c6.3-3.9 14.4-3 19.7 2.2z\"]\n};\nvar faOrnament = {\n prefix: 'fas',\n iconName: 'ornament',\n icon: [384, 512, [], \"f7b8\", \"M192 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm55.4 64c5.4-9.4 8.6-20.3 8.6-32c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 11.7 3.1 22.6 8.6 32H128c-17.7 0-32 14.3-32 32v25.7C66.9 170.5 42.5 194.9 25.7 224H358.3c-16.9-29.1-41.2-53.5-70.3-70.3V128c0-17.7-14.3-32-32-32h-8.6zM0 320c0 22.4 3.8 44 10.9 64H373.1c7.1-20 10.9-41.6 10.9-64s-3.8-44-10.9-64H10.9C3.8 276 0 297.6 0 320zm25.7 96c33.2 57.4 95.2 96 166.3 96s133.1-38.6 166.3-96H25.7z\"]\n};\nvar faPhoneArrowDownLeft = {\n prefix: 'fas',\n iconName: 'phone-arrow-down-left',\n icon: [512, 512, [\"phone-arrow-down\", \"phone-incoming\"], \"e223\", \"M505 41l-135 135H416c13.3 0 24 10.7 24 24s-10.7 24-24 24H312c-13.3 0-24-10.7-24-24V96c0-13.3 10.7-24 24-24s24 10.7 24 24v46.1L471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24z\"]\n};\nvar faPhoneArrowDown = faPhoneArrowDownLeft;\nvar faPhoneIncoming = faPhoneArrowDownLeft;\nvar faCloudWord = {\n prefix: 'fas',\n iconName: 'cloud-word',\n icon: [640, 512, [], \"e138\", \"M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336zm512 32c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16zM240 352c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16h96zM128 304c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm272-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H400c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHandFingersCrossed = {\n prefix: 'fas',\n iconName: 'hand-fingers-crossed',\n icon: [384, 512, [], \"e1a3\", \"M93 18.5l17.3 37.2L75 131.3 35 45.5c-7.5-16-.5-35.1 15.5-42.5s35.1-.5 42.5 15.5zM150.6 272l0 0H152c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H162.3c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363V336c0-35.3 28.7-64 64-64H80l0 0h35.3l0 0h35.3zM192 252.1c-8-5.4-17.2-9.2-27-11L181 207l11 23.7v21.5zM130.2 240H59.6L163 18.5c7.5-16 26.5-22.9 42.5-15.5s22.9 26.5 15.5 42.5L130.2 240zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192zm96 32c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224z\"]\n};\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z\"]\n};\nvar faGaugeSimple = {\n prefix: 'fas',\n iconName: 'gauge-simple',\n icon: [512, 512, [\"gauge-simple-med\", \"tachometer-average\"], \"f629\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGaugeSimpleMed = faGaugeSimple;\nvar faTachometerAverage = faGaugeSimple;\nvar faArrowDownSmallBig = {\n prefix: 'fas',\n iconName: 'arrow-down-small-big',\n icon: [576, 512, [\"sort-size-down-alt\"], \"f88d\", \"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM320 80v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48zm48 176c-26.5 0-48 21.5-48 48V432c0 26.5 21.5 48 48 48H496c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48H368z\"]\n};\nvar faSortSizeDownAlt = faArrowDownSmallBig;\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM208 112v48H160c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h48c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16z\"]\n};\nvar faFaceMelting = {\n prefix: 'fas',\n iconName: 'face-melting',\n icon: [640, 512, [129760], \"e483\", \"M571.4 304.8c-4.5 23.2 11.8 47.2 35.4 47.2H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H44.9c36.8 0 58.4-50.7 42.9-84.1C72.5 331.1 64 294.5 64 256C64 114.6 178.6 0 320 0S576 114.6 576 256c0 16.7-1.6 33-4.6 48.8zM247.2 219.9a32 32 0 1 0 16.6-61.8 32 32 0 1 0 -16.6 61.8zM441 238.7a32 32 0 1 0 -61.8-16.6A32 32 0 1 0 441 238.7zM213.2 299.4c-3.9-7.9-13.4-11.3-21.4-7.4s-11.3 13.4-7.4 21.4c14.8 30.5 45.1 67.5 98.3 81.7s97.9-2.6 126-21.7c7.3-5 9.2-14.9 4.3-22.2s-14.9-9.2-22.2-4.3c-22.7 15.4-57.9 28.5-99.8 17.2s-65.8-40.2-77.8-64.8z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [128169], \"f2fe\", \"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1c0 44.1-35.7 79.9-79.8 80H160c-35.3 0-64 28.7-64 64c0 19.1 8.4 36.3 21.7 48H104c-39.8 0-72 32.2-72 72c0 23.2 11 43.8 28 57c-34.1 5.7-60 35.3-60 71c0 39.8 32.2 72 72 72H440c39.8 0 72-32.2 72-72c0-35.7-25.9-65.3-60-71c17-13.2 28-33.8 28-57c0-39.8-32.2-72-72-72H394.3c13.3-11.7 21.7-28.9 21.7-48c0-35.3-28.7-64-64-64h-5.5c3.5-10 5.5-20.8 5.5-32c0-48.6-36.2-88.8-83.1-95.1zM192 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm64 108.3c0 2.4-.7 4.8-2.2 6.7c-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7c0-6.8 5.5-12.3 12.3-12.3H339.7c6.8 0 12.3 5.5 12.3 12.3z\"]\n};\nvar faPenClipSlash = {\n prefix: 'fas',\n iconName: 'pen-clip-slash',\n icon: [640, 512, [\"pen-alt-slash\"], \"e20f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L409.9 296l55-55 17-17-1-1-16-16-96-96-17-17L338.9 81c-28.1-28.1-73.7-28.1-101.8 0l-44.6 44.6L38.8 5.1zM230.5 155.4L271 114.9c9.4-9.4 24.6-9.4 33.9 0L318.1 128l-53.8 53.8-33.7-26.4zm-67 127.1c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l47.7-47.7L195.8 250.3l-32.3 32.3zM517.3 19.3c-25-25-65.5-25-90.5 0L374.6 71.4l17 17 96 96 16 16 0 0 1 1 0 0 52.1-52.1c25-25 25-65.5 0-90.5L517.3 19.3z\"]\n};\nvar faPenAltSlash = faPenClipSlash;\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [448, 512, [8221, \"quote-right-alt\"], \"f10e\", \"M448 296c0 66.3-53.7 120-120 120h-8c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H320c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72zm-256 0c0 66.3-53.7 120-120 120H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72z\"]\n};\nvar faQuoteRightAlt = faQuoteRight;\nvar faScrollOld = {\n prefix: 'fas',\n iconName: 'scroll-old',\n icon: [576, 512, [], \"f70f\", \"M48 32c26.5 0 48 21.5 48 48v80H48 32c-17.7 0-32-14.3-32-32V80C0 53.5 21.5 32 48 32zm80 48c0-18-6-34.6-16-48H384c51.4 0 93.4 40.5 95.9 91.3c-.4 3.5-2 6.9-4.6 9.4l-21.7 21.7c-3.1 3.1-3.1 8.2 0 11.3l21.7 21.7c3 3 4.7 7.1 4.7 11.3V200v16 1.4c0 4.2-1.7 8.3-4.7 11.3l-21.7 21.7c-3.1 3.1-3.1 8.2 0 11.3l21.7 21.7c3 3 4.7 7.1 4.7 11.3V296v24H314.7c-32.4 0-58.7 26.3-58.7 58.7V384c0 35.3-28.7 64-64 64s-64-28.7-64-64V264v-1.4c0-4.2 1.7-8.3 4.7-11.3l21.7-21.7c3.1-3.1 3.1-8.2 0-11.3l-21.7-21.7c-3-3-4.7-7.1-4.7-11.3V184 80zM576 368c0 61.9-50.1 112-112 112H368 192c53 0 96-43 96-96v-5.3c0-14.7 11.9-26.7 26.7-26.7H344h1.4c4.2 0 8.3 1.7 11.3 4.7l21.7 21.7c3.1 3.1 8.2 3.1 11.3 0l21.7-21.7c3-3 7.1-4.7 11.3-4.7H424 560c8.8 0 16 7.2 16 16z\"]\n};\nvar faGuitars = {\n prefix: 'fas',\n iconName: 'guitars',\n icon: [512, 512, [], \"f8bf\", \"M104 0h48c13.3 0 24 10.7 24 24V76.2c0 6.2-1.4 12.3-4.2 17.9L152 133.7V178c50.3 8.6 88 43.8 88 86c0 14-4.2 27.3-11.6 39.1c-8.2 13-7.5 32 2.9 43.4c5.9 6.5 10.9 13.7 14.8 21.3c-2.3 4.9-4.7 9.6-7 13.9c-8.8 16.3-15 35.6-15 56.5c0 11.6 1.9 22.8 5.4 33.3C205.9 496.1 169.3 512 128 512C57.3 512 0 465.4 0 408c0-23 9.2-44.3 24.8-61.5c10.3-11.4 11.1-30.4 2.9-43.4C20.2 291.3 16 278 16 264c0-42.1 37.7-77.3 88-86V133.7L84.2 94.1C81.4 88.6 80 82.4 80 76.2V24C80 10.7 90.7 0 104 0zm24 344a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM360 148.6l-21.4-24.5c-6.6-7.6-9.3-17.9-7.2-27.8l13.9-64.8C349.2 13.1 365.4 0 384.2 0c22 0 39.8 17.8 39.8 39.8v4.6c0 12.4-6.4 23.3-16 29.7V238.9c27.9-4.2 39.6-19.4 44.5-31.3c3.3-8.2 10.7-15.5 19.5-15.5s16 7.2 16 16v29.3c0 11.6-4.8 22.8-9.3 33.5l-.5 1.1c-3.3 7.8-6.2 18.5-6.2 32.1c0 33.5 17 70.9 28.8 92.9c6.9 12.7 11.2 26.9 11.2 41.3c0 40.8-33 73.8-73.8 73.8H329.8C289 512 256 479 256 438.2c0-14.5 4.3-28.6 11.2-41.3C279 374.9 296 337.5 296 304c0-11.2-2-20.5-4.5-27.8c-.9-2.5-1.8-5-2.7-7.5l0 0 0 0c-4.3-11.8-8.8-23.8-8.8-36.2V192c0-8.8 7.2-16 16-16s16.1 7.2 18.2 15.8c3.9 16.4 14.9 40.5 45.8 46.7V148.6zM336 320c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H352c-8.8 0-16 7.2-16 16zm0 64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H352c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPhoneXmark = {\n prefix: 'fas',\n iconName: 'phone-xmark',\n icon: [640, 512, [], \"e227\", \"M181.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L208 207.3c33.3 70.4 90.3 127.4 160.7 160.7L409 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C545.8 499.9 530 512 512 512C264.6 512 64 311.4 64 64c0-18 12.1-33.8 29.5-38.6l88-24zM399 15c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47L399 49c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faHose = {\n prefix: 'fas',\n iconName: 'hose',\n icon: [448, 512, [], \"e419\", \"M288 104c0 13.3 10.7 24 24 24s24-10.7 24-24v-2.3l80.2-11.5C417.3 98 423.9 104 432 104c8.8 0 16-7.2 16-16V40c0-8.8-7.2-16-16-16c-8.1 0-14.7 6-15.8 13.7L336 26.3V24c0-13.3-10.7-24-24-24s-24 10.7-24 24v80zM64 176c0-44.2 35.8-80 80-80H256V32H144C64.5 32 0 96.5 0 176s64.5 144 144 144H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H144c-44.2 0-80-35.8-80-80zM32 352c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 96c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faClockSix = {\n prefix: 'fas',\n iconName: 'clock-six',\n icon: [512, 512, [], \"e352\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm24-392V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V120c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faShirt = {\n prefix: 'fas',\n iconName: 'shirt',\n icon: [640, 512, [128085, \"t-shirt\", \"tshirt\"], \"f553\", \"M211.8 0c7.8 0 14.3 5.7 16.7 13.2C240.8 51.9 277.1 80 320 80s79.2-28.1 91.5-66.8C413.9 5.7 420.4 0 428.2 0h12.6c22.5 0 44.2 7.9 61.5 22.3L628.5 127.4c6.6 5.5 10.7 13.5 11.4 22.1s-2.1 17.1-7.8 23.6l-56 64c-11.4 13.1-31.2 14.6-44.6 3.5L480 197.7V448c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64V197.7l-51.5 42.9c-13.3 11.1-33.1 9.6-44.6-3.5l-56-64c-5.7-6.5-8.5-15-7.8-23.6s4.8-16.6 11.4-22.1L137.7 22.3C155 7.9 176.7 0 199.2 0h12.6z\"]\n};\nvar faTShirt = faShirt;\nvar faTshirt = faShirt;\nvar faBillboard = {\n prefix: 'fas',\n iconName: 'billboard',\n icon: [640, 512, [], \"e5cd\", \"M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32H256c0-17.7-14.3-32-32-32s-32 14.3-32 32H80C53.5 32 32 53.5 32 80V352c-17.7 0-32 14.3-32 32s14.3 32 32 32H80 288v64c0 17.7 14.3 32 32 32s32-14.3 32-32V416H560h48c17.7 0 32-14.3 32-32s-14.3-32-32-32V80c0-26.5-21.5-48-48-48H448zM320 352H96V96h96v32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V96H384v32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V96h96V352H320z\"]\n};\nvar faSquareR = {\n prefix: 'fas',\n iconName: 'square-r',\n icon: [448, 512, [], \"e27c\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 96H256c44.2 0 80 35.8 80 80c0 36.6-24.6 67.5-58.2 77l45.4 60.6c8 10.6 5.8 25.6-4.8 33.6s-25.6 5.8-33.6-4.8L220 288H176v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 152c0-13.3 10.7-24 24-24zm80 112h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H176v64h56z\"]\n};\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [576, 512, [], \"f1b3\", \"M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5V204.7c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7V413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3V294.7c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3V92.5c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2V152.6L392 121v89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4V354.8L256 323.2v95.9l-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1V354.8L528 323.2v90.7c0 3.2-1.9 6-4.8 7.3z\"]\n};\nvar faEnvelopeOpenDollar = {\n prefix: 'fas',\n iconName: 'envelope-open-dollar',\n icon: [512, 512, [], \"f657\", \"M215.4 96H144 107.8 96v8.8V144v40.4 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3V96c0-26.5 21.5-48 48-48h76.6l49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48H416c26.5 0 48 21.5 48 48v44.3l22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4v-89V144 104.8 96H404.2 368 296.6 215.4zM0 448V242.1L217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1V448v0c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64v0zM276 136v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V344c0 11-9 20-20 20s-20-9-20-20V329.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4l0 0c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V136c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [10135, 247], \"f529\", \"M272 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 320a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 288c17.7 0 32-14.3 32-32s-14.3-32-32-32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H400z\"]\n};\nvar faSunCloud = {\n prefix: 'fas',\n iconName: 'sun-cloud',\n icon: [640, 512, [127780], \"f763\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2l-20.1 29.1C481 193 472.6 192 464 192c-32.9 0-62.4 14.2-82.9 36.7C368.6 171.1 317.3 128 256 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c12.4 0 24.5-1.8 35.8-5.1c11.3 38.8 46.5 67.5 88.7 69l-9.4 51c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM352 256c0 1.9-.1 3.7-.2 5.5c-35.6 12.6-61.5 45.6-63.7 85c-10.1 3.6-20.9 5.5-32.2 5.5c-53 0-96-43-96-96s43-96 96-96s96 43 96 96zm32 160c-35.3 0-64-28.7-64-64s28.7-64 64-64c.5 0 1.1 0 1.6 0c7.4-36.5 39.7-64 78.4-64c35 0 64.8 22.5 75.6 53.8c8.7-3.7 18.3-5.8 28.4-5.8c39.8 0 72 32.2 72 72s-32.2 72-72 72H384z\"]\n};\nvar faLampFloor = {\n prefix: 'fas',\n iconName: 'lamp-floor',\n icon: [640, 512, [], \"e015\", \"M194.3 20.1C199.1 8 210.9 0 224 0H416c13.1 0 24.9 8 29.7 20.1l64 160c3.9 9.9 2.7 21-3.2 29.8s-15.9 14.1-26.5 14.1H160c-10.6 0-20.5-5.3-26.5-14.1s-7.2-20-3.2-29.8l64-160zM288 256h64V448h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64V256z\"]\n};\nvar faSquare7 = {\n prefix: 'fas',\n iconName: 'square-7',\n icon: [448, 512, [], \"e25c\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 96H296c8.4 0 16.3 4.4 20.6 11.7s4.5 16.2 .5 23.7l-112 208c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l93-172.6H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faTengeSign = {\n prefix: 'fas',\n iconName: 'tenge-sign',\n icon: [384, 512, [8376, \"tenge\"], \"f7d7\", \"M0 64C0 46.3 14.3 32 32 32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM0 192c0-17.7 14.3-32 32-32H192 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V224H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faTenge = faTengeSign;\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [127911], \"f025\", \"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80V384 336 288C0 146.6 114.6 32 256 32s256 114.6 256 256v48 48 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"]\n};\nvar faHandsHolding = {\n prefix: 'fas',\n iconName: 'hands-holding',\n icon: [640, 512, [], \"f4c2\", \"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104v56 64V325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7H240c26.5 0 48-21.5 48-48V385.1c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3 0 0-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3V224 144 104zm480 0v40 80 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2 0 0-25.3 25.3c-21 21-32.8 49.5-32.8 79.2V464c0 26.5 21.5 48 48 48h66.7c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9V224 160 104c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nvar faCampfire = {\n prefix: 'fas',\n iconName: 'campfire',\n icon: [512, 512, [], \"f6ba\", \"M232.2 3.4c-2.5-2.3-5.6-3.4-8.8-3.4c-3.2 0-6.4 1.1-9 3.4c-29.9 27-55.3 57.7-73.2 87.1c-17.7 29-29.2 60.2-29.2 84.2C112 254.5 175.3 320 256 320c79.9 0 144-65.5 144-145.3c0-18.3-8.7-46.3-21.7-71.8C365 77 346.2 49.7 323.9 29.1c-5-4.7-12.9-4.7-18 0c-8.7 8-16.7 17.8-23.8 26.8C266.6 37 250 19.6 232.2 3.4zM301 248.2c-13.5 9.1-27.9 13.6-44.1 13.6c-40.5 0-72.9-26.4-72.9-70.9c0-21.8 13.5-40.9 40.5-74.5c3.6 4.5 55.8 71.8 55.8 71.8L312.7 150c2.7 3.6 4.5 7.3 6.3 10.9c16.2 30 9 68.2-18 87.3zM42.8 289.9c-16.6-5.9-35 2.7-40.9 19.4s2.7 35 19.4 40.9L160.9 400 21.2 449.9C4.6 455.8-4.1 474.1 1.9 490.8s24.3 25.3 40.9 19.4L256 434l213.2 76.2c16.6 5.9 35-2.7 40.9-19.4s-2.7-35-19.4-40.9L351.1 400l139.6-49.9c16.6-5.9 25.3-24.3 19.4-40.9s-24.3-25.3-40.9-19.4L256 366 42.8 289.9z\"]\n};\nvar faCircleAmpersand = {\n prefix: 'fas',\n iconName: 'circle-ampersand',\n icon: [512, 512, [], \"e0f8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 191.6c0 4.1 1.6 8.1 4.6 11L235 217.1l23.6-17.3c3.4-2.5 5.4-6.4 5.4-10.6c0-7.3-5.9-13.2-13.2-13.2H231.6c-8.6 0-15.6 7-15.6 15.6zm71 46.9l-17.6 12.9 28.7 28.7 26.2-37.8c7.5-10.9 22.5-13.6 33.4-6.1s13.6 22.5 6.1 33.4l-31.1 45L361 343c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-22.4-22.4c-15.1 18.5-37.8 29.4-62 29.4H210.5c-36.7 0-66.5-29.8-66.5-66.5c0-21.2 10.1-41.1 27.2-53.6l24.7-18.1-9.2-9.2c-11.9-11.9-18.6-28.1-18.6-45c0-35.1 28.5-63.6 63.6-63.6h19.2c33.8 0 61.2 27.4 61.2 61.2c0 19.5-9.3 37.8-25 49.3zm-87.5 64.1c-4.7 3.5-7.5 9-7.5 14.9c0 10.2 8.3 18.5 18.5 18.5h32.2c10.5 0 20.3-5.2 26.3-13.8l1.4-2-40.1-40.1-30.7 22.5z\"]\n};\nvar faSnowflakes = {\n prefix: 'fas',\n iconName: 'snowflakes',\n icon: [640, 512, [], \"f7cf\", \"M224 0c17.7 0 32 14.3 32 32V62.1l15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49v70.3l61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7v70.3l49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V449.9l-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49V311.7l-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3V129.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15V32c0-17.7 14.3-32 32-32zM487 7c9.4-9.4 24.6-9.4 33.9 0l23 23L567 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L487 41c-9.4-9.4-9.4-24.6 0-33.9zm32 192c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faHandsClapping = {\n prefix: 'fas',\n iconName: 'hands-clapping',\n icon: [512, 512, [], \"e1a8\", \"M336 16V80c0 8.8-7.2 16-16 16s-16-7.2-16-16V16c0-8.8 7.2-16 16-16s16 7.2 16 16zm-98.7 7.1l32 48c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-32-48c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4zM135 119c9.4-9.4 24.6-9.4 33.9 0L292.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4c-64 38.4-145.8 28.3-198.5-24.4L7 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L23 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM433.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1c48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4zM424.9 18.7c7.4 4.9 9.3 14.8 4.4 22.2l-32 48c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l32-48c4.9-7.4 14.8-9.3 22.2-4.4z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M0 192C0 103.6 71.6 32 160 32H384c88.4 0 160 71.6 160 160v64H0V192zm415.9-64c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L466 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm-138.3 3.4c-1.1-2.1-3.3-3.4-5.7-3.4s-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L322 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6zM127.9 128c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L178 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm.1 160H320h96 32 64 32v32 80c0 8.8 7.2 16 16 16s16-7.2 16-16V352c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80s-80-35.8-80-80V352H448v32 64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V384H128v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V384 288H128z\"]\n};\nvar faLeafMaple = {\n prefix: 'fas',\n iconName: 'leaf-maple',\n icon: [512, 512, [127809], \"f6f6\", \"M339.8 7.5l15.8 31.6c7.1 14.2 23.6 21.1 38.7 16l67.6-22.5c1.4-.5 2.9-.7 4.4-.7c7.6 0 13.8 6.2 13.8 13.8c0 1.5-.2 2.9-.7 4.4l-22.5 67.6c-5 15.1 1.8 31.6 16 38.7l31.6 15.8c4.6 2.3 7.5 7 7.5 12.2c0 4.7-2.4 9.1-6.4 11.6l-97.9 61.2c-6.8 4.3-3.8 14.8 4.2 14.8h38.3c7.6 0 13.8 6.2 13.8 13.8c0 1.5-.2 2.9-.7 4.4l-8.5 25.5c-4.1 12.3-.3 25.9 9.5 34.4l34.3 29.4c3.4 2.9 5.4 7.2 5.4 11.7c0 5.5-3 10.6-7.8 13.4l-28.9 16.5c-11.6 6.6-17.9 19.8-15.7 33l4.2 25.1c.1 .6 .2 1.3 .2 1.9c0 7.6-7.2 13.2-14.6 11.2l-155-40.4c-8.2-2.1-16.6 2.4-19.2 10.4l-8.5 25.4c-1.7 5-6.3 8.4-11.6 8.4c-4.4 0-8.5-2.4-10.7-6.3l-53-95.3L73 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239.3 270.8c3.6-6.1 2.7-14.1-2.5-19.4c-6.2-6.2-16.4-6.2-22.6 0l-84 84L22.3 275.5c-3.9-2.2-6.3-6.2-6.3-10.7c0-5.3 3.4-9.9 8.4-11.6l25.4-8.5c8-2.7 12.5-11.1 10.4-19.2L19.8 70.6C17.9 63.2 23.4 56 31 56c.6 0 1.3 .1 1.9 .2L58 60.3c13.2 2.2 26.4-4.1 33-15.7l16.5-28.9C110.3 11 115.4 8 120.9 8c4.5 0 8.8 2 11.7 5.4L162 47.7c8.5 9.9 22.1 13.6 34.4 9.5l25.5-8.5c1.4-.5 2.9-.7 4.4-.7c7.6 0 13.8 6.2 13.8 13.8v38.3c0 8 10.5 11.1 14.8 4.2L316 6.4c2.5-4 6.9-6.4 11.6-6.4c5.2 0 9.9 2.9 12.2 7.5z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [8592], \"f060\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faPersonCircleXmark = {\n prefix: 'fas',\n iconName: 'person-circle-xmark',\n icon: [576, 512, [], \"e543\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [512, 512, [128207], \"f545\", \"M177.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L17.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L177.9 494.1z\"]\n};\nvar faCupStrawSwoosh = {\n prefix: 'fas',\n iconName: 'cup-straw-swoosh',\n icon: [384, 512, [], \"e364\", \"M194.8 43.2l-20 84.8H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H224.2l17.4-73.8c.9-3.6 4.1-6.2 7.8-6.2H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H249.3c-26 0-48.6 17.9-54.5 43.2zM40 224L60.3 468c2.1 24.9 22.9 44 47.8 44H275.8c25 0 45.8-19.1 47.8-44L344 224H40zm194.4 78.9c18.8-10.1 42-17.2 72.7-20.6L303 331.2c-20.8 3.1-35.2 8.2-45.8 13.9c-17.2 9.3-26.9 21.2-39.9 37.2l-.7 .8c-13.3 16.4-29.5 35.9-58.7 50.4c-17.7 8.8-39.3 15.2-66.7 18.9l-4-47.9c22.1-3.2 37.7-8.3 49.4-14.1c19.3-9.5 30.1-22 42.8-37.6l1.9-2.3c12.3-15.2 27.4-33.8 53.1-47.7z\"]\n};\nvar faTemperatureSun = {\n prefix: 'fas',\n iconName: 'temperature-sun',\n icon: [640, 512, [\"temperature-hot\"], \"f76a\", \"M320.6 98.5l-2.7-.5L303.8 13.4c-.9-5.4-4.5-10-9.6-12.1s-10.9-1.5-15.4 1.6L208 52.5 137.2 2.9c-4.5-3.2-10.3-3.8-15.4-1.6s-8.7 6.7-9.6 12.1L98.1 98.1 13.4 112.2c-5.4 .9-10 4.5-12.1 9.6s-1.5 10.9 1.6 15.4L52.5 208 2.9 278.8c-3.2 4.5-3.8 10.3-1.6 15.4s6.7 8.7 12.1 9.6l84.7 14.1 14.1 84.7c.9 5.4 4.5 10 9.6 12.1s10.9 1.5 15.4-1.6L208 363.5l70.8 49.6c4.5 3.1 10.3 3.8 15.4 1.6c.7-.3 1.5-.7 2.1-1.1c-5.4-16.9-8.3-34.9-8.3-53.7c0-37.7 11.8-72.6 32-101.2V112c0-4.5 .2-9 .6-13.5zM208 272a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm0-160a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm208 0c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C537.8 332.6 544 349.5 544 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM464 0C402.1 0 352 50.2 352 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8c-18.9 24.4-30.1 55-30.1 88.1c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.3-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C576 50.2 525.9 0 464 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"]\n};\nvar faTemperatureHot = faTemperatureSun;\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M201 10.3c14.3-7.8 31.6-7.8 46 0L422.3 106c5.1 2.8 8.3 8.2 8.3 14s-3.2 11.2-8.3 14L231.7 238c-4.8 2.6-10.5 2.6-15.3 0L25.7 134c-5.1-2.8-8.3-8.2-8.3-14s3.2-11.2 8.3-14L201 10.3zM23.7 170l176 96c5.1 2.8 8.3 8.2 8.3 14V496c0 5.6-3 10.9-7.8 13.8s-10.9 3-15.8 .3L25 423.1C9.6 414.7 0 398.6 0 381V184c0-5.6 3-10.9 7.8-13.8s10.9-3 15.8-.3zm400.7 0c5-2.7 11-2.6 15.8 .3s7.8 8.1 7.8 13.8V381c0 17.6-9.6 33.7-25 42.1L263.7 510c-5 2.7-11 2.6-15.8-.3s-7.8-8.1-7.8-13.8V280c0-5.9 3.2-11.2 8.3-14l176-96z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V325.2c-8.1 9.2-21.1 13.2-33.5 9.4c-16.9-5.3-26.3-23.2-21-40.1l30.9-99.1C44.9 155.3 82 128 124 128h8c42 0 79.1 27.3 91.6 67.4l30.9 99.1c5.3 16.9-4.1 34.8-21 40.1c-12.4 3.9-25.4-.2-33.5-9.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H120zM320 0c13.3 0 24 10.7 24 24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24zM464 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM440 480V384H422.2c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5c-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1c-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1H584v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H504v96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faHighDefinition = {\n prefix: 'fas',\n iconName: 'high-definition',\n icon: [576, 512, [\"rectangle-hd\"], \"e1ae\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm304 88V328c0 13.3 10.7 24 24 24h56c53 0 96-43 96-96s-43-96-96-96H328c-13.3 0-24 10.7-24 24zm80 24c26.5 0 48 21.5 48 48s-21.5 48-48 48H352V208h32zM160 184c0-13.3-10.7-24-24-24s-24 10.7-24 24v72 72c0 13.3 10.7 24 24 24s24-10.7 24-24V280h64v48c0 13.3 10.7 24 24 24s24-10.7 24-24V256 184c0-13.3-10.7-24-24-24s-24 10.7-24 24v48H160V184z\"]\n};\nvar faRectangleHd = faHighDefinition;\nvar faJ = {\n prefix: 'fas',\n iconName: 'j',\n icon: [320, 512, [106], \"4a\", \"M288 32c17.7 0 32 14.3 32 32V320c0 88.4-71.6 160-160 160S0 408.4 0 320V288c0-17.7 14.3-32 32-32s32 14.3 32 32v32c0 53 43 96 96 96s96-43 96-96V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faGalaxy = {\n prefix: 'fas',\n iconName: 'galaxy',\n icon: [512, 512, [], \"e008\", \"M320 0h11.5C342.8 0 352 9.2 352 20.5c0 7.1-3.7 13.7-9.8 17.5l-12.5 7.7c-35.2 21.7-60.9 54.9-73.3 93.1c19.9-7 41.3-10.8 63.5-10.8c106 0 192 86 192 192v11.5c0 11.3-9.2 20.5-20.5 20.5c-7.1 0-13.7-3.7-17.5-9.8l-7.7-12.5c-21.7-35.2-54.9-60.9-93.1-73.3c7 19.9 10.8 41.3 10.8 63.5c0 106-86 192-192 192H180.5c-11.3 0-20.5-9.2-20.5-20.5c0-7.1 3.7-13.7 9.8-17.5l12.5-7.7c35.2-21.7 60.9-54.9 73.3-93.1c-19.9 7-41.3 10.8-63.5 10.8C86 384 0 298 0 192V180.5C0 169.2 9.2 160 20.5 160c7.1 0 13.7 3.7 17.5 9.8l7.7 12.5c21.7 35.2 54.9 60.9 93.1 73.3c-7-19.9-10.8-41.3-10.8-63.5C128 86 214 0 320 0zM256 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faUsersViewfinder = {\n prefix: 'fas',\n iconName: 'users-viewfinder',\n icon: [640, 512, [], \"e595\", \"M48 48h88c13.3 0 24-10.7 24-24s-10.7-24-24-24H32C14.3 0 0 14.3 0 32V136c0 13.3 10.7 24 24 24s24-10.7 24-24V48zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zm-89.4 0c-8.6-24.3-29.9-42.6-55.9-47c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80-32a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM504 48h88v88c0 13.3 10.7 24 24 24s24-10.7 24-24V32c0-17.7-14.3-32-32-32H504c-13.3 0-24 10.7-24 24s10.7 24 24 24zM48 464V376c0-13.3-10.7-24-24-24s-24 10.7-24 24V480c0 17.7 14.3 32 32 32H136c13.3 0 24-10.7 24-24s-10.7-24-24-24H48zm456 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H608c17.7 0 32-14.3 32-32V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v88H504z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V288zM300.9 397.9L256 368V304l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z\"]\n};\nvar faCherries = {\n prefix: 'fas',\n iconName: 'cherries',\n icon: [640, 512, [], \"e0ec\", \"M288 24L302.1 4.5c-6.9-5-15.9-5.9-23.7-2.5s-13.2 10.7-14.2 19.1c0 0 0 0 0 0s0 0 0 0l0 0 0 .2-.1 .9c-.1 .9-.3 2.2-.6 4c-.6 3.6-1.5 9-2.9 15.8c-2.8 13.7-7.6 33.3-15.3 56.3c-14 42-37.4 94.7-75.8 143.7C152.3 233.5 126.5 224 96 224c0 0-96 0-96 112C0 480 144 512 192 512s192-16 192-176c0-112-96-112-96-112c-20.5 0-38.9 4.3-54 9.7c27.1-42.6 45-85.1 56.7-120.2c5.7-17 9.9-32.3 13-45.1c11.7 10.8 25.8 24.7 40.1 41.2c29.6 34.3 59.1 78.4 73.1 128.5c-12-5.3-27-10.3-44.2-12.7C397.3 247.7 416 282.9 416 336c0 71.9-26.1 120.9-62.1 152.9C390.4 506.3 427.7 512 448 512c48 0 192-16 192-176c0-112-96-112-96-112c-32.3 0-59.2 10.6-76.3 19.6C453.5 176 415.2 118.9 380.2 78.3c-19.9-23-39.2-41.3-53.6-53.9c-7.2-6.3-13.2-11.2-17.5-14.5c-2.1-1.7-3.8-3-5-3.9c-.6-.4-1.1-.8-1.4-1l-.4-.3-.1-.1 0 0 0 0s0 0-14.1 19.4z\"]\n};\nvar faUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'up-right-from-square',\n icon: [512, 512, [\"external-link-alt\"], \"f35d\", \"M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLinkAlt = faUpRightFromSquare;\nvar faCircleSort = {\n prefix: 'fas',\n iconName: 'circle-sort',\n icon: [512, 512, [\"sort-circle\"], \"e030\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM267.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-96 96c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H352c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-96-96zM244.7 411.3c6.2 6.2 16.4 6.2 22.6 0l96-96c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9H160c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l96 96z\"]\n};\nvar faSortCircle = faCircleSort;\nvar faTableCells = {\n prefix: 'fas',\n iconName: 'table-cells',\n icon: [512, 512, [\"th\"], \"f00a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 64v64H64V96h88zm56 0h88v64H208V96zm240 0v64H360V96h88zM64 224h88v64H64V224zm232 0v64H208V224h88zm64 0h88v64H360V224zM152 352v64H64V352h88zm56 0h88v64H208V352zm240 0v64H360V352h88z\"]\n};\nvar faTh = faTableCells;\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [512, 512, [], \"f1c1\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z\"]\n};\nvar faSiren = {\n prefix: 'fas',\n iconName: 'siren',\n icon: [448, 512, [], \"e02d\", \"M73 152.1L48 352h57.9l22.2-178c1.1-8.8 9.1-15 17.9-13.9s15 9.1 13.9 17.9L138.1 352H400L375 152.1C371 120 343.8 96 311.5 96h-175C104.2 96 77 120 73 152.1zM32 384c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V416c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faArrowUpToDottedLine = {\n prefix: 'fas',\n iconName: 'arrow-up-to-dotted-line',\n icon: [448, 512, [], \"e0a1\", \"M32 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm96 0a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm64 32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zM320 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm64 32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm-9.4 233.4l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 269.3V336 448c0 17.7 14.3 32 32 32s32-14.3 32-32V336 269.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faImageLandscape = {\n prefix: 'fas',\n iconName: 'image-landscape',\n icon: [576, 512, [\"landscape\"], \"e1b5\", \"M0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zm328 64c-8 0-15.5 4-20 10.7l-56 84L234.7 265c-4.6-5.7-11.4-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h80 48H424c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144C343.5 196 336 192 328 192zM160 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faLandscape = faImageLandscape;\nvar faTankWater = {\n prefix: 'fas',\n iconName: 'tank-water',\n icon: [448, 512, [], \"e452\", \"M285.9 96l-22-40.3L251 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H197L184.1 55.7 162.1 96H64V297.9c8.3-3 16.2-6.8 23.3-10.8c6.9-3.9 13.1-8.2 18.9-12.7c12.9-10 30.6-10 43.4 0c5.9 4.6 12 8.8 18.9 12.7c15.8 9 35.5 16.8 55.2 16.9h.4c19.6 0 39.3-7.9 55.2-16.9c6.9-3.9 13.1-8.2 18.9-12.7c12.9-10 30.6-10 43.4 0c5.9 4.6 12 8.8 19 12.8c7.1 4 15 7.9 23.4 10.8V96H285.9zM175 139.2L212.2 71c2.4-4.3 6.9-7 11.8-7s9.5 2.7 11.8 7L273 139.2c4.6 8.4 7 17.9 7 27.5V168c0 30.9-25.1 56-56 56s-56-25.1-56-56v-1.4c0-9.6 2.4-19 7-27.5z\"]\n};\nvar faCurlingStone = {\n prefix: 'fas',\n iconName: 'curling-stone',\n icon: [576, 512, [129356, \"curling\"], \"f44a\", \"M224 128c0-17.7 14.3-32 32-32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H256c-53 0-96 43-96 96v32c-35.3 0-64 28.7-64 64c-53 0-96 43-96 96v16H576V320c0-53-43-96-96-96c0-35.3-28.7-64-64-64H224V128zM576 368H0v16c0 53 43 96 96 96H480c53 0 96-43 96-96V368z\"]\n};\nvar faCurling = faCurlingStone;\nvar faGamepadModern = {\n prefix: 'fas',\n iconName: 'gamepad-modern',\n icon: [640, 512, [127918, 63676, \"gamepad-alt\"], \"e5a2\", \"M0 369.4v2.8C0 431.7 48.3 480 107.8 480c49.5 0 92.6-33.7 104.6-81.7L216 384H424l3.6 14.3c12 48 55.1 81.7 104.6 81.7C591.7 480 640 431.7 640 372.2v-2.8c0-6.3-.5-12.5-1.6-18.7L605.7 159.8c-8.6-50.2-40.9-93.2-90.3-105.5C469.5 42.9 403.8 32 320 32s-149.5 10.9-195.3 22.3C75.2 66.6 42.9 109.6 34.3 159.8L1.6 350.7C.5 356.9 0 363.1 0 369.4zM432 232a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm24-56a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zm-240-8v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V248H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V168c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faGamepadAlt = faGamepadModern;\nvar faMessagesQuestion = {\n prefix: 'fas',\n iconName: 'messages-question',\n icon: [640, 512, [], \"e1e7\", \"M0 64C0 28.7 28.7 0 64 0H352c35.3 0 64 28.7 64 64V256c0 35.3-28.7 64-64 64H202.7l-81.1 60.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V320H64c-35.3 0-64-28.7-64-64V64zM256 352h96c53 0 96-43 96-96V128H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H544v48c0 6.1-3.4 11.6-8.8 14.3s-11.9 2.1-16.8-1.5L437.3 448H320c-35.3 0-64-28.7-64-64V352zM136.2 92.4l-.4 1c-3.7 10.4 1.8 21.8 12.2 25.5s21.8-1.8 25.5-12.2l.4-1c.9-2.7 3.5-4.4 6.3-4.4h48.5c7 0 12.6 5.7 12.6 12.6c0 4.5-2.4 8.7-6.3 10.9L198 146.1c-6.2 3.6-10 10.2-10 17.3v11.2c0 11 9 20 20 20c10.9 0 19.8-8.8 20-19.6l26.9-15.4c16.3-9.4 26.4-26.8 26.4-45.6c0-29.1-23.6-52.6-52.6-52.6H180.2c-19.8 0-37.4 12.4-44 31.1zM234.7 248a26.7 26.7 0 1 0 -53.3 0 26.7 26.7 0 1 0 53.3 0z\"]\n};\nvar faBookBible = {\n prefix: 'fas',\n iconName: 'book-bible',\n icon: [448, 512, [\"bible\"], \"f647\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zM208 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272V304c0 8.8-7.2 16-16 16H224c-8.8 0-16-7.2-16-16V192H160c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h48V80z\"]\n};\nvar faBible = faBookBible;\nvar faO = {\n prefix: 'fas',\n iconName: 'o',\n icon: [448, 512, [111], \"4f\", \"M224 96a160 160 0 1 0 0 320 160 160 0 1 0 0-320zM448 256A224 224 0 1 1 0 256a224 224 0 1 1 448 0z\"]\n};\nvar faSuitcaseMedical = {\n prefix: 'fas',\n iconName: 'suitcase-medical',\n icon: [512, 512, [\"medkit\"], \"f0fa\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96v32V480H384V128 96 56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM96 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H96V96zM416 480h32c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H416V480zM224 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faMedkit = faSuitcaseMedical;\nvar faBriefcaseArrowRight = {\n prefix: 'fas',\n iconName: 'briefcase-arrow-right',\n icon: [512, 512, [], \"e2f2\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM297 191l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H152c-13.3 0-24-10.7-24-24s10.7-24 24-24H302.1l-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faExpandWide = {\n prefix: 'fas',\n iconName: 'expand-wide',\n icon: [512, 512, [], \"f320\", \"M32 64C14.3 64 0 78.3 0 96v96c0 17.7 14.3 32 32 32s32-14.3 32-32V128h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM64 320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V320zM384 64c-17.7 0-32 14.3-32 32s14.3 32 32 32h64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V96c0-17.7-14.3-32-32-32H384zM512 320c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V320z\"]\n};\nvar faClockElevenThirty = {\n prefix: 'fas',\n iconName: 'clock-eleven-thirty',\n icon: [512, 512, [], \"e348\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM232 392V263.3l-60-90c-7.4-11-4.4-25.9 6.7-33.3s25.9-4.4 33.3 6.7l64 96c2.6 3.9 4 8.6 4 13.3V392c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faRv = {\n prefix: 'fas',\n iconName: 'rv',\n icon: [640, 512, [], \"f7be\", \"M224 16c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16V32H512c53 0 96 43 96 96c0 17.7-14.3 32-32 32H384V416H254.4c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16H96L18.7 338.7C6.7 326.7 0 310.5 0 293.5V96C0 60.7 28.7 32 64 32H224V16zM112 128c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H240c8.8 0 16-7.2 16-16V144c0-8.8-7.2-16-16-16H112zm96 304a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-80-48V400 320 288 216 192h24 76.6c12.9 0 25.5 4.5 35.5 12.7l67.4 55.2c13 10.6 20.5 26.5 20.5 43.3V320v64c0 17.7-14.3 32-32 32H574.4c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80V416zM578.1 288l-56.5-46.2c-1.4-1.2-3.2-1.8-5.1-1.8H464v48H578.1z\"]\n};\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [128373], \"f21b\", \"M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48H45.4C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4H342.7c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.8 3.3-8.8 6.1-15.5 6.1zm56 208H267.6c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2H168c-22.1 0-40-17.9-40-40V169.6c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4V184c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [129446], \"f700\", \"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5c23.5 0 42.6-19.1 42.6-42.6V144c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v21.4c0 23.5 19.1 42.6 42.6 42.6c6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2L135.1 185c-4.5-3-7.1-8-7.1-13.3V168c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6c-3.6 0-7.1-.2-10.6-.6v.6c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V336 320c0-23.7 12.9-44.4 32-55.4c9.4-5.4 20.3-8.6 32-8.6V240c0-26.5 21.5-48 48-48c8.8 0 16 7.2 16 16v32 16 48c0 8.8 7.2 16 16 16s16-7.2 16-16V204.3c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1h0c0 123.7-100.3 224-224 224h-1.1H256h-.6C132 480 32 380 32 256.6V256 216.8c-10.1-14.6-16-32.3-16-51.4V144l0-1.4C6.7 139.3 0 130.5 0 120c0-13.3 10.7-24 24-24h2.8C44.8 58.2 83.3 32 128 32h64c44.7 0 83.2 26.2 101.2 64H296c13.3 0 24 10.7 24 24c0 10.5-6.7 19.3-16 22.6l0 1.4v21.4c0 1.4 0 2.8-.1 4.3c12-6.2 25.7-9.6 40.1-9.6h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-13.3 0-24 10.7-24 24v8h56.4c-15.2 17-24.4 39.4-24.4 64H320c-42.3 0-78.2-27.4-91-65.3c-5.1 .9-10.3 1.3-15.6 1.3c-14.1 0-27.9-3.3-40.5-9.6zM96 128a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm112 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faDreidel = {\n prefix: 'fas',\n iconName: 'dreidel',\n icon: [448, 512, [], \"f792\", \"M438.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 146.7 225.9 84.7c-18.7-18.7-49.1-18.7-67.9 0l-57.4 57.4L337.9 379.3l57.4-57.4c18.7-18.7 18.7-49.1 0-67.9L333.3 192 438.6 86.6zM315.3 401.9L78.1 164.7 18.7 224C6.7 236 0 252.3 0 269.3V416c0 35.3 28.7 64 64 64H210.7c17 0 33.3-6.7 45.3-18.7l59.3-59.3z\"]\n};\nvar faPersonDress = {\n prefix: 'fas',\n iconName: 'person-dress',\n icon: [320, 512, [\"female\"], \"f182\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM88 384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2c20.3-33.7 56.7-54.3 96-54.3h11.6c39.3 0 75.7 20.6 96 54.3l53.6 89.2c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9l-33.9-56.3L265 362.9c3.5 10.4-4.3 21.1-15.2 21.1H232v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H152v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faFemale = faPersonDress;\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm20-312v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V344c0 11-9 20-20 20s-20-9-20-20V329.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V136c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [\"briefcase-clock\"], \"f64a\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 352h8.2c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16 .7V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM320 352H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H360.2C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7 .7-16l-.7 0zm320 16a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM496 288c8.8 0 16 7.2 16 16v48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16z\"]\n};\nvar faBriefcaseClock = faBusinessTime;\nvar faFlowerTulip = {\n prefix: 'fas',\n iconName: 'flower-tulip',\n icon: [512, 512, [127799], \"f801\", \"M96 44v84c0 70.7 57.3 128 128 128V394.8C192.1 349.5 139.5 320 80 320H29.5C13.2 320 0 333.2 0 349.5C0 439.3 72.7 512 162.5 512H224h32 32 61.5C439.3 512 512 439.3 512 349.5c0-16.3-13.2-29.5-29.5-29.5H432c-59.5 0-112.1 29.5-144 74.8V256c70.7 0 128-57.3 128-128V44c0-6.6-5.4-12-12-12c-2.6 0-5.1 .8-7.2 2.4L336 80 268.8 5.3c-3-3.4-7.4-5.3-11.9-5.3h-1.7c-4.5 0-8.9 1.9-11.9 5.3L176 80 115.2 34.4c-2.1-1.6-4.6-2.4-7.2-2.4c-6.6 0-12 5.4-12 12z\"]\n};\nvar faPeoplePantsSimple = {\n prefix: 'fas',\n iconName: 'people-pants-simple',\n icon: [512, 512, [], \"e21a\", \"M128 128A64 64 0 1 0 128 0a64 64 0 1 0 0 128zm-22.4 32c-41.6 0-76.3 31.9-79.7 73.4l-4.1 49.3c-2.5 29.8 15.7 56.1 42.2 65.6V464c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V348.3c26.5-9.5 44.7-35.8 42.2-65.6l-4.1-49.3C226.7 191.9 192 160 150.4 160H105.6zM384 128A64 64 0 1 0 384 0a64 64 0 1 0 0 128zm-22.4 32c-41.6 0-76.3 31.9-79.7 73.4l-4.1 49.3c-2.5 29.8 15.7 56.1 42.2 65.6V464c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V348.3c26.5-9.5 44.7-35.8 42.2-65.6l-4.1-49.3C482.7 191.9 448 160 406.4 160H361.6z\"]\n};\nvar faCloudDrizzle = {\n prefix: 'fas',\n iconName: 'cloud-drizzle',\n icon: [512, 512, [], \"f738\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zm-8 56v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24s24 10.7 24 24zm96 64v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V440c0-13.3 10.7-24 24-24s24 10.7 24 24zm168-24c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V440c0-13.3 10.7-24 24-24zm-72-40v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24s24 10.7 24 24zm168-24c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24z\"]\n};\nvar faTableCellsLarge = {\n prefix: 'fas',\n iconName: 'table-cells-large',\n icon: [512, 512, [\"th-large\"], \"f009\", \"M448 96V224H288V96H448zm0 192V416H288V288H448zM224 224H64V96H224V224zM64 288H224V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faThLarge = faTableCellsLarge;\nvar faBookTanakh = {\n prefix: 'fas',\n iconName: 'book-tanakh',\n icon: [448, 512, [\"tanakh\"], \"f827\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM138.7 208l13.9 24H124.9l13.9-24zm-13.9-24L97.1 232c-6.2 10.7 1.5 24 13.9 24h55.4l27.7 48c6.2 10.7 21.6 10.7 27.7 0l27.7-48H305c12.3 0 20-13.3 13.9-24l-27.7-48 27.7-48c6.2-10.7-1.5-24-13.9-24H249.6L221.9 64c-6.2-10.7-21.6-10.7-27.7 0l-27.7 48H111c-12.3 0-20 13.3-13.9 24l27.7 48zm27.7 0l27.7-48h55.4l27.7 48-27.7 48H180.3l-27.7-48zm0-48l-13.9 24-13.9-24h27.7zm41.6-24L208 88l13.9 24H194.1zm69.3 24h27.7l-13.9 24-13.9-24zm13.9 72l13.9 24H263.4l13.9-24zm-55.4 48L208 280l-13.9-24h27.7z\"]\n};\nvar faTanakh = faBookTanakh;\nvar faSolarSystem = {\n prefix: 'fas',\n iconName: 'solar-system',\n icon: [512, 512, [], \"e02f\", \"M448 256c0 41.9-13.4 80.6-36.2 112.2C387.3 370.3 368 390.9 368 416c0 26.5 21.5 48 48 48s48-21.5 48-48c0-3.2-.3-6.4-.9-9.4C493.8 364.3 512 312.3 512 256C512 114.6 397.4 0 256 0c-42.3 0-82.1 10.2-117.2 28.4c18.6 11.8 32 31.1 36 53.6C199.4 70.4 227 64 256 64c106 0 192 86 192 192zM256 448C150 448 64 362 64 256c0-41.9 13.4-80.6 36.2-112.2C124.7 141.7 144 121.1 144 96c0-26.5-21.5-48-48-48S48 69.5 48 96c0 3.2 .3 6.4 .9 9.4C18.2 147.7 0 199.7 0 256C0 397.4 114.6 512 256 512c42.1 0 81.7-10.1 116.8-28.1c-18.5-11.9-31.8-31.3-35.6-53.8C312.5 441.6 285 448 256 448zM389.2 182.7c1.8-4.6 2.8-9.5 2.8-14.7c0-22.1-17.9-40-40-40c-4 0-7.8 .6-11.5 1.7C316.4 113.5 287.3 104 256 104c-83.9 0-152 68.1-152 152s68.1 152 152 152s152-68.1 152-152c0-26.6-6.8-51.5-18.8-73.3zM312 168.4c.2 20.6 16 37.6 36.2 39.5c7.5 14.4 11.8 30.8 11.8 48.2c0 57.4-46.6 104-104 104s-104-46.6-104-104s46.6-104 104-104c20.6 0 39.8 6 56 16.4zm8 87.6a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faSealQuestion = {\n prefix: 'fas',\n iconName: 'seal-question',\n icon: [512, 512, [], \"e243\", \"M222.1 17.9c18.7-18.7 49.1-18.7 67.9 0L336 64h64c26.5 0 48 21.5 48 48v64l45.6 45.6c18.7 18.7 18.7 49.1 0 67.9L448 335.1V400c0 26.5-21.5 48-48 48H335.1l-45.1 45.1c-18.7 18.7-49.1 18.7-67.9 0L176.9 448H112c-26.5 0-48-21.5-48-48V335.1L18.4 289.5c-18.7-18.7-18.7-49.1 0-67.9L64 176V112c0-26.5 21.5-48 48-48h64l46.1-46.1zM169.8 165.3l-.4 1.2c-4.4 12.5 2.1 26.2 14.6 30.6s26.2-2.1 30.6-14.6l.4-1.2c1.1-3.2 4.2-5.3 7.5-5.3h58.3c8.4 0 15.1 6.8 15.1 15.1c0 5.4-2.9 10.4-7.6 13.1l-44.3 25.4c-7.5 4.3-12.1 12.2-12.1 20.8V264c0 13.3 10.7 24 24 24c13.1 0 23.8-10.5 24-23.6l32.3-18.5c19.6-11.3 31.7-32.2 31.7-54.8c0-34.9-28.3-63.1-63.1-63.1H222.6c-23.7 0-44.8 14.9-52.8 37.3zM288 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [512, 512, [\"volume-control-phone\"], \"f2a0\", \"M280 0C408.1 0 512 103.9 512 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32-72c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24zM117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24z\"]\n};\nvar faVolumeControlPhone = faPhoneVolume;\nvar faDiscDrive = {\n prefix: 'fas',\n iconName: 'disc-drive',\n icon: [512, 512, [], \"f8b5\", \"M32 96c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V416c17.7 0 32 14.3 32 32s-14.3 32-32 32H416 96 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V96zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192 0A160 160 0 1 0 96 256a160 160 0 1 0 320 0z\"]\n};\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M152.7 135.9l-10.4 57.2c6.8-.7 13.6-1.1 20.5-1.1h10.7c39.4 0 77.8 12.1 110.1 34.7L562.4 421.8l35.1 24.6c24.4-6 42.5-28.1 42.5-54.4c0-75.8-94.7-126.6-134.6-144.7L474 83.9C468.2 53.8 441.8 32 411.1 32h-2.7c-5.6 0-11.1 .7-16.5 2.2L199.2 85.5c-23.9 6.4-42 26-46.5 50.4zM0 384c0 35.3 28.7 64 64 64H544L265.3 252.9c-26.9-18.8-58.9-28.9-91.8-28.9H162.9c-60.6 0-116 34.2-143.1 88.4L13.5 325C4.6 342.7 0 362.3 0 382.2V384z\"]\n};\nvar faTableRows = {\n prefix: 'fas',\n iconName: 'table-rows',\n icon: [512, 512, [\"rows\"], \"e292\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm128 0V224H448V96H128zM448 288H128V416H448V288z\"]\n};\nvar faRows = faTableRows;\nvar faLocationExclamation = {\n prefix: 'fas',\n iconName: 'location-exclamation',\n icon: [384, 512, [\"map-marker-exclamation\"], \"f608\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 96c13.3 0 24 10.7 24 24V232c0 13.3-10.7 24-24 24s-24-10.7-24-24V120c0-13.3 10.7-24 24-24zM160 320a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faMapMarkerExclamation = faLocationExclamation;\nvar faFaceFearful = {\n prefix: 'fas',\n iconName: 'face-fearful',\n icon: [512, 512, [], \"e375\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-192c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zM96 224a64 64 0 1 1 128 0A64 64 0 1 1 96 224zm256-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM176 112c-4.4 0-8.8 .3-13 .9c-21.2 2.8-40.6 12.4-56.1 26.8c-6.5 6-16.6 5.7-22.6-.8s-5.7-16.6 .8-22.6c20.1-18.7 45.5-31.5 73.7-35.2c5.6-.7 11.4-1.1 17.2-1.1c8.8 0 16 7.2 16 16s-7.2 16-16 16zm173 .9c-4.3-.6-8.6-.9-13-.9c-8.8 0-16-7.2-16-16s7.2-16 16-16c5.8 0 11.6 .4 17.2 1.1c28.2 3.7 53.7 16.4 73.7 35.2c6.5 6 6.8 16.2 .8 22.6s-16.2 6.8-22.6 .8c-15.5-14.5-34.8-24-56.1-26.8zM192.4 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm160 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faClipboardUser = {\n prefix: 'fas',\n iconName: 'clipboard-user',\n icon: [384, 512, [], \"f7f3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM128 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 432c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faBusSchool = {\n prefix: 'fas',\n iconName: 'bus-school',\n icon: [512, 512, [], \"f5dd\", \"M256 0C380.8 0 464 35.2 464 80V96v16h16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H464v28.2c9.8 8.8 16 21.6 16 35.8v96c0 20.9-13.4 38.7-32 45.3V480c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V448H160v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V445.3c-18.6-6.6-32-24.4-32-45.3V304c0-14.2 6.2-27 16-35.8V240H32c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32H48V96 80C48 35.2 131.2 0 256 0zM112 160v64c0 17.7 14.3 32 32 32h96V128H144c-17.7 0-32 14.3-32 32zm160 96h96c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H272V256zM112 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM352 80c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16z\"]\n};\nvar faFilmSlash = {\n prefix: 'fas',\n iconName: 'film-slash',\n icon: [640, 512, [], \"e179\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-55.5-43.5c.5-3.1 .7-6.3 .7-9.6V96c0-35.3-28.7-64-64-64H128c-14.4 0-27.8 4.8-38.5 12.9L38.8 5.1zM224 150.3V128c0-17.7 14.3-32 32-32H384c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H318.1L224 150.3zM487.4 480l-87-68.5c-4.8 2.9-10.4 4.5-16.4 4.5H256c-17.7 0-32-14.3-32-32V320c0-14.1 9.1-26.1 21.8-30.3l-71.1-56c.8 2 1.3 4.1 1.3 6.4v32c0 8.8-7.2 16-16 16H128c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16h32c.9 0 1.9 .1 2.8 .2L64 146.4V416c0 35.3 28.7 64 64 64H487.4zM112 368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H128c-8.8 0-16-7.2-16-16V368zM464 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H480c-8.8 0-16-7.2-16-16V240zM480 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H480c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16z\"]\n};\nvar faSquareArrowDownRight = {\n prefix: 'fas',\n iconName: 'square-arrow-down-right',\n icon: [448, 512, [], \"e262\", \"M384 480c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384zM160 368c-13.3 0-24-10.7-24-24s10.7-24 24-24h94.1L119 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l135 135V184c0-13.3 10.7-24 24-24s24 10.7 24 24V344c0 13.3-10.7 24-24 24H160z\"]\n};\nvar faBookSparkles = {\n prefix: 'fas',\n iconName: 'book-sparkles',\n icon: [448, 512, [\"book-spells\"], \"f6b8\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zM264 200l16.6-38.8c2.8-6.5 11.9-6.5 14.7 0L312 200l38.8 16.6c6.5 2.8 6.5 11.9 0 14.7L312 248l-16.6 38.8c-2.8 6.5-11.9 6.5-14.7 0L264 248l-38.8-16.6c-6.5-2.8-6.5-11.9 0-14.7L264 200zM168.8 78.3c2.9-5.9 11.4-5.9 14.3 0L192 96l17.7 8.8c5.9 2.9 5.9 11.4 0 14.3L192 128l-8.8 17.7c-2.9 5.9-11.4 5.9-14.3 0L160 128l-17.7-8.8c-5.9-2.9-5.9-11.4 0-14.3L160 96l8.8-17.7z\"]\n};\nvar faBookSpells = faBookSparkles;\nvar faWashingMachine = {\n prefix: 'fas',\n iconName: 'washing-machine',\n icon: [448, 512, [\"washer\"], \"f898\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM368 304A144 144 0 1 0 80 304a144 144 0 1 0 288 0zM88 112a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM208 88a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm16 328c-61.9 0-112-50.1-112-112c0-16.5 3.6-32.2 10-46.3c7.4-1.1 14.8-1.7 22-1.7c32 0 56 16 80 32s48 32 80 32c10.9 0 21.4-.9 31.2-2.5C328.5 373 281.3 416 224 416z\"]\n};\nvar faWasher = faWashingMachine;\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [320, 512, [], \"f1ae\", \"M96 64a64 64 0 1 1 128 0A64 64 0 1 1 96 64zm48 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V287.8L59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H144z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [320, 512, [8356], \"f195\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4V192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H46c-2.2 10.5-6.1 20.6-11.7 29.9L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H88.5l.7-1.1c11.6-19.3 18.9-40.7 21.6-62.9H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V160.4z\"]\n};\nvar faUserVisor = {\n prefix: 'fas',\n iconName: 'user-visor',\n icon: [448, 512, [], \"e04c\", \"M343 175.2C324.2 222.5 278 256 224 256s-100.2-33.5-119-80.8c-14.3-3.2-25-16-25-31.2V80c0-17.7 14.3-32 32-32h12.1C147.5 18.7 183.6 0 224 0s76.5 18.7 99.9 48H336c17.7 0 32 14.3 32 32v64c0 15.3-10.7 28-25 31.2zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zm348.7-19.9c2.4 3.2 7.3 1.4 7.3-2.5c-1.1-35.3-11.3-65.6-30.1-90.2c-1.2-2-4.6-1.9-6.1-.1c-19.9 23-31.9 53-35.8 89.5c-.3 3.5 3.7 5.5 6.5 3.5c1.8-1.4 4.1-3.4 6.6-5.6c9.2-8.1 22.3-19.5 31.7-19.5c2.3 2 7.6 7.8 19.9 25zM144 96c-8.8 0-16 7.2-16 16s7.2 16 16 16H304c8.8 0 16-7.2 16-16s-7.2-16-16-16H144z\"]\n};\nvar faFilePlusMinus = {\n prefix: 'fas',\n iconName: 'file-plus-minus',\n icon: [384, 512, [], \"e177\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM208 208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H208v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H128c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V208c0-8.8 7.2-16 16-16s16 7.2 16 16zM128 384H256c8.8 0 16 7.2 16 16s-7.2 16-16 16H128c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faChessClockFlip = {\n prefix: 'fas',\n iconName: 'chess-clock-flip',\n icon: [640, 512, [\"chess-clock-alt\"], \"f43e\", \"M384 56c0-13.3 10.7-24 24-24H520c13.3 0 24 10.7 24 24s-10.7 24-24 24H488v48h88c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64H96V112c0-8.8 7.2-16 16-16H240c8.8 0 16 7.2 16 16v16H440V80H408c-13.3 0-24-10.7-24-24zM288 304A112 112 0 1 0 64 304a112 112 0 1 0 224 0zm-52.7-59.3c6.2 6.2 6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l48-48c6.2-6.2 16.4-6.2 22.6 0zM464 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm16-176v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V240c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faChessClockAlt = faChessClockFlip;\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [128752], \"f7bf\", \"M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z\"]\n};\nvar faPlaneLock = {\n prefix: 'fas',\n iconName: 'plane-lock',\n icon: [640, 512, [], \"e558\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7v84.6l101.8 58.2C418 247.6 416 259.6 416 272v24.6c-17.9 10.4-30.3 29.1-31.8 50.9L320 329.1V400l57.6 43.2c4 3 6.4 7.8 6.4 12.8v24 18c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400l0-70.9-171.6 49C10.2 381.1 0 373.4 0 362.8V297.3c0-5.7 3.1-11 8.1-13.9L192 178.3V93.7zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faSteeringWheel = {\n prefix: 'fas',\n iconName: 'steering-wheel',\n icon: [512, 512, [], \"f622\", \"M224 358.9v86.5C143.6 431.9 80.1 368.4 66.7 288H168.9L224 358.9zm64 0L343.1 288H445.3C431.9 368.4 368.4 431.9 288 445.3V358.9zM352 224l-7.2-14.3c-5.4-10.8-16.5-17.7-28.6-17.7H195.8c-12.1 0-23.2 6.8-28.6 17.7L160 224H66.7C81.9 133.2 160.9 64 256 64s174.1 69.2 189.3 160H352zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [448, 512, [127991], \"f02b\", \"M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faStretcher = {\n prefix: 'fas',\n iconName: 'stretcher',\n icon: [640, 512, [], \"f825\", \"M83 79.2C64.9 59.8 34.5 58.9 15.2 77S-5.1 125.5 13 144.8L123.5 262.7c15.1 16.1 36.3 25.3 58.4 25.3H592c26.5 0 48-21.5 48-48s-21.5-48-48-48H188.8L83 79.2zM240 448a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80 0c0-5.3-.7-10.5-1.9-15.5L368 396.2l49.9 36.3c-1.2 5-1.9 10.2-1.9 15.5c0 35.3 28.7 64 64 64s64-28.7 64-64s-28.7-64-64-64c-12.4 0-24 3.5-33.9 9.7l-37.3-27.1 64-46.5H391.2L368 336.9 344.8 320H263.2l64 46.5-37.3 27.1c-9.8-6.1-21.4-9.7-33.9-9.7c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zm160-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faBookSection = {\n prefix: 'fas',\n iconName: 'book-section',\n icon: [448, 512, [\"book-law\"], \"e0c1\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM228.5 241.3l7.5 2c37.9 9.8 46.1 15 43.6 27.7c-2.5 13.2-23.7 19.6-51.7 15.7c-10.2-1.4-22.4-5.4-33.1-8.9l-5.9-1.9c-8.4-2.7-17.4 1.9-20.1 10.4c-2.7 8.4 2 17.4 10.4 20.1l5.8 1.9c12 3.9 25.7 8.3 38.6 10.1c7 1 13.8 1.5 20.2 1.5c36.5 0 62.2-15.8 67.3-42.8c4.1-21.2-4-34.9-16.7-44.4c8.7-7.1 14.5-16.4 16.7-27.6c8.6-45.1-36.9-56.9-67-64.7l0 0-7.3-1.9c-36.5-9.7-38-16.5-36.2-25.8c2.5-13.2 23.8-19.7 51.6-15.7c6.6 .9 14.6 2.9 25.2 6.2c8.3 2.6 17.4-2.1 20-10.5c2.6-8.4-2.1-17.4-10.5-20c-12.2-3.8-21.9-6.2-30.2-7.3c-47.1-6.7-81.5 9.6-87.5 41.3c-4.1 21.3 4.4 35.1 16.7 44.5c-8.7 7.1-14.5 16.4-16.7 27.5c-8.5 44.6 37.4 56.8 59.5 62.7zm-2.9-72.8c.9 .2 10.3 2.7 10.3 2.7c37.9 9.8 46.1 15 43.6 27.7c-2.2 11.3-16.5 14.9-25.2 16.1c-3.6-1-17.7-4.7-17.7-4.7c-36.5-9.7-38-16.5-36.2-25.8c2.2-11.3 16.5-14.9 25.2-16.1z\"]\n};\nvar faBookLaw = faBookSection;\nvar faInboxes = {\n prefix: 'fas',\n iconName: 'inboxes',\n icon: [512, 512, [], \"e1bb\", \"M117.7 64L79.3 160h45c12.1 0 23.2 6.8 28.6 17.7l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7H316.2c12.1 0 23.2-6.8 28.6-17.7l14.3-28.6c5.4-10.8 16.5-17.7 28.6-17.7h45L394.3 64H117.7zM60.3 35.2C68.8 13.9 89.4 0 112.2 0H399.8c22.9 0 43.5 13.9 52 35.2L508 175.8c2.6 6.6 4 13.7 4 20.8V264c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V196.6c0-7.1 1.4-14.2 4-20.8L60.3 35.2zM48 352h76.2c12.1 0 23.2 6.8 28.6 17.7l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7H316.2c12.1 0 23.2-6.8 28.6-17.7l14.3-28.6c5.4-10.8 16.5-17.7 28.6-17.7H464c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V400c0-26.5 21.5-48 48-48z\"]\n};\nvar faCoffeeBean = {\n prefix: 'fas',\n iconName: 'coffee-bean',\n icon: [448, 512, [], \"e13e\", \"M331.4 203.3c24.4-24.6 45.4-67.3 59.9-101.7c5.1-12.2 20.9-15.3 28.2-4.3c51.2 77.7 26.2 201.2-63.4 290.8c-79.6 79.6-186 108.1-263.2 77.7c-14.8-5.8-20-23.2-13.2-37.5c.7-1.6 1.5-3.1 2.2-4.7c16.5-34.5 37.5-72.2 57.4-92.3c29.7-29.9 59.7-44.9 91.8-61l.5-.3 0 0c32-15.9 66.1-32.9 99.7-66.8zM53.1 409.7c-5.3 11-19.9 13.6-26.9 3.6c-54-77.4-29.6-203.2 61.2-294C167.6 39.1 275.1 10.7 352.5 42.4c14 5.7 19.4 22 13.7 36c-1.4 3.5-2.9 7.1-4.4 10.8c-14.5 34.5-33.5 71.8-53.1 91.5c-29.7 29.9-59.7 44.9-91.8 61l-.5 .3c-32 15.9-66.1 32.9-99.7 66.8c-24.1 24.3-47.1 66.6-63.6 101z\"]\n};\nvar faCircleYen = {\n prefix: 'fas',\n iconName: 'circle-yen',\n icon: [512, 512, [], \"e5d0\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.9 150.2c9.8-8.9 25-8.2 33.9 1.6L256 220.3l62.2-68.5c8.9-9.8 24.1-10.5 33.9-1.6s10.5 24.1 1.6 33.9L288.4 256H320c8.8 0 16 7.2 16 16s-7.2 16-16 16H280v32h40c8.8 0 16 7.2 16 16s-7.2 16-16 16H280v25c0 13.3-10.7 24-24 24s-24-10.7-24-24V352H192c-8.8 0-16-7.2-16-16s7.2-16 16-16h40V288H192c-8.8 0-16-7.2-16-16s7.2-16 16-16h31.6l-65.3-71.9c-8.9-9.8-8.2-25 1.6-33.9z\"]\n};\nvar faBracketsCurly = {\n prefix: 'fas',\n iconName: 'brackets-curly',\n icon: [576, 512, [], \"f7ea\", \"M416 32H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c17.7 0 32 14.3 32 32v37.5c0 25.5 10.1 49.9 28.1 67.9L498.7 256l-22.6 22.6c-18 18-28.1 42.4-28.1 67.9V384c0 17.7-14.3 32-32 32H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c53 0 96-43 96-96V346.5c0-8.5 3.4-16.6 9.4-22.6l45.3-45.3c12.5-12.5 12.5-32.8 0-45.3l-45.3-45.3c-6-6-9.4-14.1-9.4-22.6V128c0-53-43-96-96-96zM160 32c-53 0-96 43-96 96v37.5c0 8.5-3.4 16.6-9.4 22.6L9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l45.3 45.3c6 6 9.4 14.1 9.4 22.6V384c0 53 43 96 96 96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32-14.3-32-32V346.5c0-25.5-10.1-49.9-28.1-67.9L77.3 256l22.6-22.6c18-18 28.1-42.4 28.1-67.9V128c0-17.7 14.3-32 32-32h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H160z\"]\n};\nvar faEllipsisStrokeVertical = {\n prefix: 'fas',\n iconName: 'ellipsis-stroke-vertical',\n icon: [192, 512, [\"ellipsis-v-alt\"], \"f39c\", \"M96 72a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm0 96A72 72 0 1 1 96 24a72 72 0 1 1 0 144zm24 88a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm-96 0a72 72 0 1 1 144 0A72 72 0 1 1 24 256zm96 160a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm-96 0a72 72 0 1 1 144 0A72 72 0 1 1 24 416z\"]\n};\nvar faEllipsisVAlt = faEllipsisStrokeVertical;\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4l0 0 0 0 0 0 0 0 .3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z\"]\n};\nvar faSquare1 = {\n prefix: 'fas',\n iconName: 'square-1',\n icon: [448, 512, [], \"e256\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm236 35.2c-7.4-4.3-16.5-4.3-24-.1l-56 32c-11.5 6.6-15.5 21.2-8.9 32.7s21.2 15.5 32.7 8.9L200 193.4V336H160c-13.3 0-24 10.7-24 24s10.7 24 24 24h64 64c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V152c0-8.6-4.6-16.5-12-20.8z\"]\n};\nvar faCakeCandles = {\n prefix: 'fas',\n iconName: 'cake-candles',\n icon: [448, 512, [127874, \"birthday-cake\", \"cake\"], \"f1fd\", \"M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c-35.3 0-64 28.7-64 64v71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1 0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4l0 0 0 0 .1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8l0 0 0 0 0 0 .1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9V288c0-35.3-28.7-64-64-64V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H256V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H128V176zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4V480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V394.6z\"]\n};\nvar faBirthdayCake = faCakeCandles;\nvar faCake = faCakeCandles;\nvar faHeadSide = {\n prefix: 'fas',\n iconName: 'head-side',\n icon: [512, 512, [], \"f6e9\", \"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm352-.2a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z\"]\n};\nvar faDollyEmpty = {\n prefix: 'fas',\n iconName: 'dolly-empty',\n icon: [576, 512, [], \"f473\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64h72.9L197 340.2c-22.5 17.6-37 45-37 75.8c0 53 43 96 96 96c52.4 0 95.1-42 96-94.3l202.1-67.4c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2L331.8 357c-17.2-22.1-43.9-36.5-74-37L165.7 43.8C156.9 17.6 132.5 0 104.9 0H32z\"]\n};\nvar faFaceTissue = {\n prefix: 'fas',\n iconName: 'face-tissue',\n icon: [512, 512, [], \"e39c\", \"M512 256c0 141.4-114.6 256-256 256c-11.5 0-22.9-.8-34-2.2c.6-1.9 1-3.9 1.4-5.9l18.4-110.2 5.4 3.6c5.4 3.6 12.4 3.6 17.8 0L304 371.2l39.1 26.1c4.8 3.2 10.9 3.6 16 1l32-16c7.9-4 11.1-13.6 7.2-21.5s-13.6-11.1-21.5-7.2l-23.7 11.8-40.3-26.8c-5.4-3.6-12.4-3.6-17.8 0L256 364.8l-8.5-5.7 7.9-47.2c2.5-15.3-2.4-30.9-13.4-41.8s-26.5-16-41.8-13.4l-192 32c-2 .3-4 .8-5.9 1.4C.8 278.9 0 267.5 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256zM133.5 130.7c-7.9-4.2-17.5 1.5-17.5 10.5c0 2.8 1 5.5 2.8 7.6l36 43.2-36 43.2c-1.8 2.1-2.8 4.8-2.8 7.6c0 9 9.6 14.7 17.5 10.5l89.9-47.9c10.7-5.7 10.7-21.1 0-26.8l-89.9-47.9zM396 141.1c0-9-9.6-14.7-17.5-10.5l-89.9 47.9c-10.7 5.7-10.7 21.1 0 26.8l89.9 47.9c7.9 4.2 17.5-1.5 17.5-10.5c0-2.8-1-5.5-2.8-7.6l-36-43.2 36-43.2c1.8-2.1 2.8-4.8 2.8-7.6zM219.3 292.7c3.7 3.7 5.3 8.8 4.5 13.9l-32 192c-1.1 6.7-6.3 11.9-13 13.1s-13.4-1.9-16.7-7.8l-26-45.5L51.9 479.5c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l21.1-84.2-45.5-26c-5.9-3.4-9-10-7.8-16.7s6.4-11.9 13.1-13l192-32c5.1-.8 10.3 .8 13.9 4.5z\"]\n};\nvar faAnglesUp = {\n prefix: 'fas',\n iconName: 'angles-up',\n icon: [448, 512, [\"angle-double-up\"], \"f102\", \"M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faAngleDoubleUp = faAnglesUp;\nvar faBinRecycle = {\n prefix: 'fas',\n iconName: 'bin-recycle',\n icon: [576, 512, [], \"e5f7\", \"M0 64C0 46.3 14.3 32 32 32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zm32 64H544L517.3 421.8c-3 33-30.6 58.2-63.7 58.2H122.4c-33.1 0-60.7-25.2-63.7-58.2L32 128zm256 88c2.2 0 4.3 1.1 5.5 2.9l20.7 29.6c7.3 10.5 21.6 13.4 32.4 6.6c11.7-7.3 14.8-22.9 6.9-34.1l-20.7-29.6c-10.2-14.6-27-23.3-44.8-23.3s-34.6 8.7-44.8 23.3l-20.7 29.6c-7.9 11.3-4.7 26.8 6.9 34.1c10.8 6.8 25.1 3.9 32.4-6.6l20.7-29.6c1.3-1.8 3.3-2.9 5.5-2.9zm-88.3 77.1c-10.8-6.8-25.1-3.9-32.4 6.6l-21.5 30.7c-6.4 9.1-9.8 20-9.8 31.2c0 30.1 24.4 54.4 54.4 54.4H240c13.3 0 24-10.7 24-24s-10.7-24-24-24H190.4c-3.5 0-6.4-2.9-6.4-6.4c0-1.3 .4-2.6 1.2-3.7l21.5-30.7c7.9-11.3 4.7-26.8-6.9-34.1zM312 392c0 13.3 10.7 24 24 24h49.6c30.1 0 54.4-24.4 54.4-54.4c0-11.2-3.4-22.1-9.8-31.2l-21.5-30.7c-7.3-10.5-21.6-13.4-32.4-6.6c-11.7 7.3-14.8 22.9-6.9 34.1l21.5 30.7c.8 1.1 1.2 2.4 1.2 3.7c0 3.5-2.9 6.4-6.4 6.4H336c-13.3 0-24 10.7-24 24z\"]\n};\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [128206], \"f0c6\", \"M364.2 83.8c-24.4-24.4-64-24.4-88.4 0l-184 184c-42.1 42.1-42.1 110.3 0 152.4s110.3 42.1 152.4 0l152-152c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-152 152c-64 64-167.6 64-231.6 0s-64-167.6 0-231.6l184-184c46.3-46.3 121.3-46.3 167.6 0s46.3 121.3 0 167.6l-176 176c-28.6 28.6-75 28.6-103.6 0s-28.6-75 0-103.6l144-144c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-144 144c-6.7 6.7-6.7 17.7 0 24.4s17.7 6.7 24.4 0l176-176c24.4-24.4 24.4-64 0-88.4z\"]\n};\nvar faChartLineDown = {\n prefix: 'fas',\n iconName: 'chart-line-down',\n icon: [512, 512, [128201], \"f64d\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm217.4 57.4L208 194.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0L304 189.3l57.4 57.4L329 279c-15.1 15.1-4.4 41 17 41H456c13.3 0 24-10.7 24-24V185.9c0-21.4-25.9-32.1-41-17l-32.4 32.4-80-80c-12.5-12.5-32.8-12.5-45.3 0z\"]\n};\nvar faArrowRightToCity = {\n prefix: 'fas',\n iconName: 'arrow-right-to-city',\n icon: [640, 512, [], \"e4b3\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM166.6 153.4l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H146.7l-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nvar faLockA = {\n prefix: 'fas',\n iconName: 'lock-a',\n icon: [448, 512, [], \"e422\", \"M224 64c44.2 0 80 35.8 80 80v48H144V144c0-44.2 35.8-80 80-80zM80 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H368V144C368 64.5 303.5 0 224 0S80 64.5 80 144zm49.7 280.8L209.6 265c.8-1.6 1.8-3 3-4.3c1.4-1.5 3.1-2.6 5-3.4c2.1-.9 4.2-1.3 6.4-1.3s4.3 .4 6.4 1.3c1.8 .8 3.5 1.9 5 3.4c1.3 1.3 2.3 2.7 3.1 4.3l79.9 159.9c4 7.9 .7 17.5-7.2 21.5s-17.5 .7-21.5-7.2L270.1 400H177.9l-19.6 39.2c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5zM193.9 368h60.2L224 307.8 193.9 368z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [127895], \"f4d6\", \"M333.2 322.8l0 0-133.9-146 0 0L146 118.6c7.8-5.1 37-22.6 78-22.6s70.2 17.4 78 22.6L245.7 180l85.6 93.4 27.4-29.8c16.3-17.7 25.3-40.9 25.3-65V149.1c0-19-5.6-37.5-16.1-53.3L327.8 35.6C312.9 13.4 287.9 0 261.2 0h-76c-25.8 0-50.1 12.5-65.1 33.5L81.9 87C70.3 103.2 64 122.8 64 142.8V164c0 23.2 8.4 45.6 23.6 63.1l56 64.2 0 0 83.3 95.6 0 0 91.8 105.3c10 11.5 26.8 14.3 40 6.8l54.5-31.1c17.8-10.2 21.6-34.3 7.7-49.4l-87.7-95.7zM205.2 410.6l-83.3-95.6L27.1 418.5c-13.9 15.1-10.1 39.2 7.7 49.4l55.1 31.5c13 7.4 29.3 4.9 39.4-6.1l75.9-82.6z\"]\n};\nvar faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [129729], \"f604\", \"M320 0c17.7 0 32 14.3 32 32V164.1c0 16.4 8.4 31.7 22.2 40.5l9.8 6.2V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2C414 480.5 384 442.1 384 398V325l90.5 57.6c7.5 4.7 17.3 2.5 22.1-4.9s2.5-17.3-4.9-22.1L384 287.1v-.4l-44.1-28.1c-7.3-4.6-13.9-10.1-19.9-16.1c-5.9 6-12.6 11.5-19.9 16.1L256 286.7 161.2 347l-13.5 8.6c0 0 0 0-.1 0c-7.4 4.8-9.6 14.6-4.8 22.1c4.7 7.5 14.6 9.7 22.1 4.9l91.1-58V398c0 44.1-30 82.5-72.7 93.1l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v45.5l9.8-6.2c13.8-8.8 22.2-24.1 22.2-40.5V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faPersonPinball = {\n prefix: 'fas',\n iconName: 'person-pinball',\n icon: [640, 512, [], \"e21d\", \"M32 48a48 48 0 1 1 96 0A48 48 0 1 1 32 48zM96 241.7v65.1l49.9 49.9c9 9 14.1 21.2 14.1 33.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3L18.7 320C6.7 308 0 291.7 0 274.7V186.6C0 154.2 26.2 128 58.6 128c24.1 0 46.5 12 59.9 32l42.6 64H224c12.9 0 24.1 7.7 29.1 18.7l295-49.2L515.3 95c-2.2-6.5-3.3-13.4-3.3-20.2V32c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V178.2 216v8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H256v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V288H152.6c-16 0-31-8-39.9-21.4L96 241.7zM0 480L0 346.5l64 64V480v0c0 17.7-14.3 32-32 32s-32-14.3-32-32zM280 336a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faArrowUp91 = {\n prefix: 'fas',\n iconName: 'arrow-up-9-1',\n icon: [576, 512, [\"sort-numeric-up-alt\"], \"f887\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM450.7 294c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V364.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zm-5-145.1A32 32 0 1 0 418.3 91a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 192.4 344 159.2 344 120c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 251c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUpAlt = faArrowUp91;\nvar faAppleCore = {\n prefix: 'fas',\n iconName: 'apple-core',\n icon: [384, 512, [], \"e08f\", \"M192 112c-8.8 0-16-7.2-16-16V80c0-44.2 35.8-80 80-80h16c8.8 0 16 7.2 16 16V32c0 44.2-35.8 80-80 80H192zM30.5 167c-8-6.5-9.3-18.7-.7-24.3C43.9 133.4 60.7 128 80 128c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c19.3 0 36.1 5.4 50.3 14.7c8.6 5.6 7.3 17.9-.7 24.3c-40 32.3-65.5 81.7-65.5 137c0 54.4 24.7 103 63.4 135.3c7 5.9 8.8 16.3 2.7 23.1C325.8 493.7 290.9 512 256 512c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3c-34.9 0-69.8-18.3-98.1-49.6c-6.2-6.8-4.4-17.3 2.7-23.1C71.3 407 96 358.4 96 304c0-55.4-25.6-104.7-65.5-137z\"]\n};\nvar faCircleY = {\n prefix: 'fas',\n iconName: 'circle-y',\n icon: [512, 512, [], \"e12f\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM170.1 152.3L256 251.4l85.9-99.1c8.7-10 23.8-11.1 33.9-2.4s11.1 23.8 2.4 33.9L280 297v79c0 13.3-10.7 24-24 24s-24-10.7-24-24V297L133.9 183.7c-8.7-10-7.6-25.2 2.4-33.9s25.2-7.6 33.9 2.4z\"]\n};\nvar faH6 = {\n prefix: 'fas',\n iconName: 'h6',\n icon: [640, 512, [], \"e413\", \"M537 116l-35.3 44.1C578.6 163.1 640 226.4 640 304c0 79.5-64.5 144-144 144s-144-64.5-144-144c0-38.3 13-75.5 37-105.5L487 76c11-13.8 31.2-16 45-5s16 31.2 5 45zM416 304a80 80 0 1 0 160 0 80 80 0 1 0 -160 0zM32 64c17.7 0 32 14.3 32 32V224H256V96c0-17.7 14.3-32 32-32s32 14.3 32 32V256 416c0 17.7-14.3 32-32 32s-32-14.3-32-32V288H64V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V256 96C0 78.3 14.3 64 32 64z\"]\n};\nvar faLitecoinSign = {\n prefix: 'fas',\n iconName: 'litecoin-sign',\n icon: [384, 512, [], \"e1d3\", \"M128 64c0-17.7-14.3-32-32-32S64 46.3 64 64V213.6L23.2 225.2c-17 4.9-26.8 22.6-22 39.6s22.6 26.8 39.6 22L64 280.1V448c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V261.9l136.8-39.1c17-4.9 26.8-22.6 22-39.6s-22.6-26.8-39.6-22L128 195.3V64z\"]\n};\nvar faCircleSmall = {\n prefix: 'fas',\n iconName: 'circle-small',\n icon: [320, 512, [], \"e122\", \"M0 256a160 160 0 1 1 320 0A160 160 0 1 1 0 256z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M32 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM320 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-320a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 288a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm192 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM416 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nvar faArrowTurnDownLeft = {\n prefix: 'fas',\n iconName: 'arrow-turn-down-left',\n icon: [512, 512, [], \"e2e1\", \"M448 64c0-17.7 14.3-32 32-32s32 14.3 32 32V224c0 53-43 96-96 96H109.3l73.4 73.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256H416c17.7 0 32-14.3 32-32V64z\"]\n};\nvar faCircleNodes = {\n prefix: 'fas',\n iconName: 'circle-nodes',\n icon: [512, 512, [], \"e4e2\", \"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M383.5 192c.3-5.3 .5-10.6 .5-16c0-51-15.9-96-40.2-127.6C319.5 16.9 288.2 0 256 0s-63.5 16.9-87.8 48.4C143.9 80 128 125 128 176c0 5.4 .2 10.7 .5 16H240V320H208c-7 0-13.7 1.5-19.7 4.2L68.2 192H96.5c-.3-5.3-.5-10.6-.5-16c0-64 22.2-121.2 57.1-159.3C62 49.3 18.6 122.6 4.2 173.6C1.5 183.1 9 192 18.9 192h6L165.2 346.3c-3.3 6.5-5.2 13.9-5.2 21.7v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V368c0-7.8-1.9-15.2-5.2-21.7L487.1 192h6c9.9 0 17.4-8.9 14.7-18.4C493.4 122.6 450 49.3 358.9 16.7C393.8 54.8 416 112.1 416 176c0 5.4-.2 10.7-.5 16h28.3L323.7 324.2c-6-2.7-12.7-4.2-19.7-4.2H272V192H383.5z\"]\n};\nvar faMessageMedical = {\n prefix: 'fas',\n iconName: 'message-medical',\n icon: [512, 512, [\"comment-alt-medical\"], \"f7f4\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm224 64v48H176c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240h48c8.8 0 16-7.2 16-16V192c0-8.8-7.2-16-16-16H288V128c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16z\"]\n};\nvar faCommentAltMedical = faMessageMedical;\nvar faRugbyBall = {\n prefix: 'fas',\n iconName: 'rugby-ball',\n icon: [512, 512, [], \"e3c6\", \"M368 16c13.4 0 26.4 2.1 38.5 5.9c-21.1 1.8-44.5 8.7-69 19.5c-53.4 23.5-114.8 66.9-172.1 124.1S64.9 284.1 41.4 337.6c-10.8 24.5-17.7 47.9-19.5 69C18.1 394.4 16 381.4 16 368l0-32C16 159.3 159.3 16 336 16l32 0zm122.1 89.5c3.8 12.2 5.9 25.1 5.9 38.5v32c0 176.7-143.3 320-320 320H144c-13.4 0-26.4-2.1-38.5-5.9c21.1-1.8 44.5-8.7 69-19.5c53.4-23.5 114.8-66.9 172.1-124.1s100.6-118.6 124.1-172.1c10.8-24.5 17.7-47.9 19.5-69zM63.7 448.3c-6.7-6.7-10.9-17.8-10.2-34.8c.7-17.1 6.3-38.5 17.1-63c21.5-49 62.3-107.1 117.5-162.3s113.4-95.9 162.3-117.5c24.5-10.8 45.9-16.4 63-17.1c17.1-.7 28.1 3.5 34.8 10.2s10.9 17.8 10.2 34.8c-.7 17.1-6.3 38.5-17.1 63c-21.5 49-62.3 107.1-117.5 162.3s-113.4 95.9-162.3 117.5c-24.5 10.8-45.9 16.4-63 17.1c-17.1 .7-28.1-3.4-34.8-10.2z\"]\n};\nvar faCommentMusic = {\n prefix: 'fas',\n iconName: 'comment-music',\n icon: [512, 512, [], \"f8b0\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm96-320v32V288c0 17.7-21.5 32-48 32s-48-14.3-48-32s21.5-32 48-32c5.6 0 11 .6 16 1.8V183.1l-96 36V320c0 17.7-21.5 32-48 32s-48-14.3-48-32s21.5-32 48-32c5.6 0 11 .6 16 1.8V208 176c0-6.7 4.1-12.6 10.4-15l128-48c4.9-1.8 10.4-1.2 14.7 1.8s6.9 7.9 6.9 13.2z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3V176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"]\n};\nvar faTreeDeciduous = {\n prefix: 'fas',\n iconName: 'tree-deciduous',\n icon: [512, 512, [127795, \"tree-alt\"], \"f400\", \"M384 80c-11.5 0-22.5 2.4-32.4 6.8C347 38.1 305.9 0 256 0s-91 38.1-95.6 86.8C150.5 82.4 139.5 80 128 80c-44.2 0-80 35.8-80 80c0 14.4 3.8 27.9 10.5 39.6C24.1 214.2 0 248.3 0 288c0 53 43 96 96 96H224v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384H416c53 0 96-43 96-96c0-39.7-24.1-73.8-58.5-88.4c6.7-11.7 10.5-25.2 10.5-39.6c0-44.2-35.8-80-80-80z\"]\n};\nvar faTreeAlt = faTreeDeciduous;\nvar faPuzzlePieceSimple = {\n prefix: 'fas',\n iconName: 'puzzle-piece-simple',\n icon: [640, 512, [\"puzzle-piece-alt\"], \"e231\", \"M264.8 64C277.6 64 288 74.4 288 87.2v0c0 9.2-5.8 17.3-13.2 22.8c-11.6 8.7-18.8 20.7-18.8 34c0 26.5 28.7 48 64 48s64-21.5 64-48c0-13.3-7.2-25.3-18.8-34c-7.4-5.5-13.2-13.6-13.2-22.8v0C352 74.4 362.4 64 375.2 64H464c26.5 0 48 21.5 48 48v88.8c0 12.8 10.4 23.2 23.2 23.2v0c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2v0c-12.8 0-23.2 10.4-23.2 23.2V400c0 26.5-21.5 48-48 48H375.2c-12.8 0-23.2-10.4-23.2-23.2v0c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8v0c0 12.8-10.4 23.2-23.2 23.2H176c-26.5 0-48-21.5-48-48V311.2c0-12.8-10.4-23.2-23.2-23.2v0c-9.2 0-17.3 5.8-22.8 13.2C73.3 312.8 61.3 320 48 320c-26.5 0-48-28.7-48-64s21.5-64 48-64c13.3 0 25.3 7.2 34 18.8c5.5 7.4 13.6 13.2 22.8 13.2v0c12.8 0 23.2-10.4 23.2-23.2V112c0-26.5 21.5-48 48-48h88.8z\"]\n};\nvar faPuzzlePieceAlt = faPuzzlePieceSimple;\nvar faTruckFieldUn = {\n prefix: 'fas',\n iconName: 'truck-field-un',\n icon: [640, 512, [], \"e58e\", \"M96 32C60.7 32 32 60.7 32 96v32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32v32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288c0-35.3-28.7-64-64-64h-4.2c-.4-1.1-.9-2.1-1.3-3.2L485.7 102c-10.3-23.1-33.2-38-58.5-38H375.4C364.4 44.9 343.7 32 320 32H96zm288 96h43.2l42.7 96H384V128zM112 384a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM253.3 135.1l34.7 52V144c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM128 144v64c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V144c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faNfcTrash = {\n prefix: 'fas',\n iconName: 'nfc-trash',\n icon: [640, 512, [], \"e1fd\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64v66.7c-11.5 4.1-21.3 12.5-26.9 23.8l-2.7 5.5H400c-5.6 0-11 1-16 2.7V144c0-26.5-21.5-48-48-48H256c-26.5 0-48 21.5-48 48v66.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V144c0-8.8 7.2-16 16-16h80c8.8 0 16 7.2 16 16v96V368c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112c-26.5 0-48 21.5-48 48V368c0 26.5 21.5 48 48 48H336c16.4 0 30.9-8.2 39.6-20.8l6.1 84.8H64c-35.3 0-64-28.7-64-64V96zM449.7 200.8c2.7-5.4 8.2-8.8 14.3-8.8h96c6.1 0 11.6 3.4 14.3 8.8L585.9 224H624c8.8 0 16 7.2 16 16s-7.2 16-16 16H576 448 400c-8.8 0-16-7.2-16-16s7.2-16 16-16h38.1l11.6-23.2zM413.9 482.3L400 288H624L610.1 482.3C608.9 499 595 512 578.2 512H445.8c-16.8 0-30.7-13-31.9-29.7z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M0 32C0 14.3 14.3 0 32 0H64 320h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V75c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1v11c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V437c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75V64C14.3 64 0 49.7 0 32zM96 64V75c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9V64H96zm0 384H288V437c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9v11z\"]\n};\nvar faHourglassEmpty = faHourglass;\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [512, 512, [127956], \"f6fc\", \"M256 32c12.5 0 24.1 6.4 30.8 17L503.4 394.4c5.6 8.9 8.6 19.2 8.6 29.7c0 30.9-25 55.9-55.9 55.9H55.9C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17zm65 192L256 120.4 176.9 246.5l18.3 24.4c6.4 8.5 19.2 8.5 25.6 0l25.6-34.1c6-8.1 15.5-12.8 25.6-12.8h49z\"]\n};\nvar faFileXmark = {\n prefix: 'fas',\n iconName: 'file-xmark',\n icon: [384, 512, [\"file-times\"], \"f317\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM111 239c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faFileTimes = faFileXmark;\nvar faHouseHeart = {\n prefix: 'fas',\n iconName: 'house-heart',\n icon: [576, 512, [\"home-heart\"], \"f4c9\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM176 269.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"]\n};\nvar faHomeHeart = faHouseHeart;\nvar faHouseChimneyBlank = {\n prefix: 'fas',\n iconName: 'house-chimney-blank',\n icon: [576, 512, [], \"e3b0\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32z\"]\n};\nvar faMeterBolt = {\n prefix: 'fas',\n iconName: 'meter-bolt',\n icon: [640, 512, [], \"e1e9\", \"M256 512c73.7 0 140.1-31.1 186.8-81l7.5-15H432c-20.4 0-38.5-12.9-45.3-32.1s-.6-40.6 15.3-53.4l109.6-87.7C504.8 107.5 393 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512zM192 160v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm96 0v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm96 0v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm218.1 67.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L449.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H553.9l52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"]\n};\nvar faUserDoctor = {\n prefix: 'fas',\n iconName: 'user-doctor',\n icon: [448, 512, [\"user-md\"], \"f0f0\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-96 55.2C54 332.9 0 401.3 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-81-54-149.4-128-171.1V362c27.6 7.1 48 32.2 48 62v40c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16s7.2-16 16-16V424c0-17.7-14.3-32-32-32s-32 14.3-32 32v24c8.8 0 16 7.2 16 16s-7.2 16-16 16H256c-8.8 0-16-7.2-16-16V424c0-29.8 20.4-54.9 48-62V304.9c-6-.6-12.1-.9-18.3-.9H178.3c-6.2 0-12.3 .3-18.3 .9v65.4c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7V311.2zM144 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faUserMd = faUserDoctor;\nvar faSlashBack = {\n prefix: 'fas',\n iconName: 'slash-back',\n icon: [320, 512, [], \"5c\", \"M16.1 4.2C.8 13-4.6 32.5 4.2 47.9l256 448c8.8 15.3 28.3 20.7 43.7 11.9s20.7-28.3 11.9-43.7l-256-448C51 .8 31.5-4.6 16.1 4.2z\"]\n};\nvar faCircleInfo = {\n prefix: 'fas',\n iconName: 'circle-info',\n icon: [512, 512, [\"info-circle\"], \"f05a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faInfoCircle = faCircleInfo;\nvar faFishingRod = {\n prefix: 'fas',\n iconName: 'fishing-rod',\n icon: [448, 512, [], \"e3a8\", \"M295.9 48c-3 0-6 .4-8.8 1.2L209.8 71.3C137.7 91.9 88 157.8 88 232.8V288h8c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h8V232.8c0-96.4 63.9-181.2 156.7-207.7L273.8 3.1C281 1 288.4 0 295.9 0C340.1 0 376 35.9 376 80.1V136c0 13.3-10.7 24-24 24s-24-10.7-24-24V80.1C328 62.4 313.6 48 295.9 48zM256 344c0-71.6 55.6-127.8 89-148.1c4.3-2.6 9.6-2.6 14 0c33.5 20.3 89 76.6 89 148.1c0 32-16 80-64 112l27.3 27.3c3 3 4.7 7.1 4.7 11.3V496c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16v-1.4c0-4.2 1.7-8.3 4.7-11.3L320 456c-48-32-64-80-64-112zm128-32a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faHammerCrash = {\n prefix: 'fas',\n iconName: 'hammer-crash',\n icon: [640, 512, [], \"e414\", \"M283.9 378.6l18.3-60.1c18-4.1 34.2-16 43.1-33.8l64-128c10.5-21.1 8.4-45.2-3.7-63.6l52.7-76.6c3.7-5.4 10.4-8 16.7-6.5s11.2 6.7 12.3 13.1l16.2 104.1 105.1-7.4c6.5-.5 12.7 3.1 15.5 9s1.8 12.9-2.6 17.8L550.1 224l71.3 77.5c4.4 4.8 5.5 11.9 2.6 17.8s-9 9.5-15.5 9l-105.1-7.4L487.3 425c-1 6.5-5.9 11.7-12.3 13.1s-13-1.1-16.7-6.5l-59.7-86.7-91.4 52.2c-5.7 3.3-12.8 2.7-17.9-1.4s-7.2-10.9-5.3-17.2zm28.3-101.7c-9.3 10.9-25.2 14.4-38.6 7.7l-65.9-32.9 0 0L122 208.8l0 0L17.7 156.6C1.9 148.7-4.5 129.5 3.4 113.7l40-80C48.8 22.8 59.9 16 72 16H192c5 0 9.9 1.2 14.3 3.4l78.2 39.1 81.8 40.9c15.8 7.9 22.2 27.1 14.3 42.9l-64 128c-1.2 2.4-2.7 4.6-4.4 6.6zM107.6 237.4l85.9 42.9L90.9 485.5c-11.9 23.7-40.7 33.3-64.4 21.5S-6.8 466.2 5.1 442.5L107.6 237.4z\"]\n};\nvar faMessageHeart = {\n prefix: 'fas',\n iconName: 'message-heart',\n icon: [512, 512, [], \"e5c9\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zM144 173.3c0 16.2 6.5 31.8 17.9 43.3l82.7 82.7c6.2 6.2 16.4 6.2 22.6 0l82.7-82.7c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3c-16.2 0-31.8 6.5-43.3 17.9l-7.4 7.4-7.4-7.4c-11.5-11.5-27.1-17.9-43.3-17.9c-33.8 0-61.3 27.4-61.3 61.3z\"]\n};\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M0 224c0 53 43 96 96 96h44.7c9.5-23.5 32.5-40 59.3-40c2 0 3.9 .1 5.8 .3C217.6 265.5 235.7 256 256 256s38.4 9.5 50.2 24.3c1.9-.2 3.9-.3 5.8-.3c26.9 0 49.9 16.5 59.3 40H416c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 1 .1 2.1 .1 3.1c-.7-.8-1.4-1.6-2.1-2.3c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c.7 .7 1.5 1.4 2.3 2.1c-1-.1-2.1-.1-3.1-.1c-17.7 0-32 14.3-32 32s14.3 32 32 32c1 0 2.1-.1 3.1-.1c-.8 .7-1.6 1.3-2.3 2.1c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0c.7-.7 1.4-1.5 2.1-2.3c-.1 1-.1 2.1-.1 3.1c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1-.1-2.1-.1-3.1c.7 .8 1.3 1.6 2.1 2.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3c-.7-.7-1.5-1.4-2.3-2.1c1 .1 2.1 .1 3.1 .1c17.7 0 32-14.3 32-32s-14.3-32-32-32c-1 0-2.1 .1-3.1 .1c.8-.7 1.6-1.3 2.3-2.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-.7 .7-1.4 1.5-2.1 2.3c.1-1 .1-2.1 .1-3.1zM48 448a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm416 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faCameraPolaroid = {\n prefix: 'fas',\n iconName: 'camera-polaroid',\n icon: [576, 512, [], \"f8aa\", \"M64 96c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V246.3l53.3 79.9c7 10.5 10.7 22.9 10.7 35.5V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V361.7c0-12.6 3.7-25 10.7-35.5L64 246.3V96zM288 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM448 128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16H464c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [62258, \"camera-alt\"], \"f030\", \"M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faCameraAlt = faCamera;\nvar faSquareVirus = {\n prefix: 'fas',\n iconName: 'square-virus',\n icon: [448, 512, [], \"e578\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM223.8 93.7c13.3 0 24 10.7 24 24c0 29.3 35.4 43.9 56.1 23.2c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.7 20.7-6 56.1 23.2 56.1c13.3 0 24 10.7 24 24s-10.7 24-24 24c-29.3 0-43.9 35.4-23.2 56.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.7-20.7-56.1-6-56.1 23.2c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-29.3-35.4-43.9-56.1-23.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.7-20.7 6-56.1-23.2-56.1c-13.3 0-24-10.7-24-24s10.7-24 24-24c29.3 0 43.9-35.4 23.2-56.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.7 20.7 56.1 6 56.1-23.2c0-13.3 10.7-24 24-24zM192 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm88 32a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faCartArrowUp = {\n prefix: 'fas',\n iconName: 'cart-arrow-up',\n icon: [576, 512, [], \"e3ee\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H69.5c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H199.7c-11.5 0-21.4-8.2-23.6-19.5L170.7 288H312V177.9l-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l64-64c9.4-9.4 24.6-9.4 33.9 0l64 64c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23V288h99.2c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32h-411C111 12.8 91.6 0 69.5 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [9732], \"f753\", \"M493.7 .9L299.4 75.6l2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309C0 421.1 90.9 512 203 512c72.4 0 139.4-38.6 175.7-101.3L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3L511.1 18.3c.6-1.5 .9-3.2 .9-4.8C512 6 506 0 498.5 0c-1.7 0-3.3 .3-4.8 .9zM192 192a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm16 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faCarOn = {\n prefix: 'fas',\n iconName: 'car-on',\n icon: [512, 512, [], \"e4dd\", \"M280 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V24zM185.8 224H326.2c6.8 0 12.8 4.3 15.1 10.6L360.3 288H151.7l19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344v40 64 32c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V448H384v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448 384 344c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160H185.8c-33.8 0-64 21.3-75.3 53.1zM128 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM39 39c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L73 39c-9.4-9.4-24.6-9.4-33.9 0zm400 0L391 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V256c0 53 43 96 96 96v32h64V352H384v32h64V352c53 0 96-43 96-96V160c17.7 0 32-14.3 32-32s-14.3-32-32-32H512 480c-17.7 0-32 14.3-32 32v41.3c0 30.2-24.5 54.7-54.7 54.7c-75.5 0-145.6-38.9-185.6-102.9l-4.3-6.9C174.2 67.6 125 37.6 70.7 32.7c-2.2-.5-4.4-.7-6.7-.7H55 32zM640 384c0-17.7-14.3-32-32-32s-32 14.3-32 32v8c0 13.3-10.7 24-24 24H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H552c48.6 0 88-39.4 88-88v-8z\"]\n};\nvar faArrowDown19 = {\n prefix: 'fas',\n iconName: 'arrow-down-1-9',\n icon: [576, 512, [\"sort-numeric-asc\", \"sort-numeric-down\"], \"f162\", \"M450.7 38c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V160H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V64c0-10.3-4.9-19.9-13.3-26zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM418.3 307a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 307zM405.1 419.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericAsc = faArrowDown19;\nvar faSortNumericDown = faArrowDown19;\nvar faBuoyMooring = {\n prefix: 'fas',\n iconName: 'buoy-mooring',\n icon: [576, 512, [], \"e5b6\", \"M256 32c0-17.7 14.3-32 32-32s32 14.3 32 32V68.7c38 11.5 67.8 43.2 75.9 83.7l48.5 242.7c-.4 .3-.9 .6-1.3 .9c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-19 0-41.2-7.9-59.2-20.3c-.4-.3-.9-.6-1.3-.9l48.5-242.7c8.1-40.6 37.9-72.2 75.9-83.7V32zm32 96c-22 0-40.9 15.5-45.2 37L218.2 288H357.8L333.2 165c-4.3-21.5-23.2-37-45.2-37zm18.5 293.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faSquare4 = {\n prefix: 'fas',\n iconName: 'square-4',\n icon: [448, 512, [], \"e259\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm191.6 33.2c-12.6-4.2-26.2 2.6-30.4 15.2l-48 144c-2.4 7.3-1.2 15.4 3.3 21.6s11.8 10 19.5 10H240v40c0 13.3 10.7 24 24 24s24-10.7 24-24V320h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v56H169.3l37.5-112.4c4.2-12.6-2.6-26.2-15.2-30.4z\"]\n};\nvar faHandHoldingDroplet = {\n prefix: 'fas',\n iconName: 'hand-holding-droplet',\n icon: [576, 512, [\"hand-holding-water\"], \"f4c1\", \"M275.5 6.6C278.3 2.5 283 0 288 0s9.7 2.5 12.5 6.6L366.8 103C378 119.3 384 138.6 384 158.3V160c0 53-43 96-96 96s-96-43-96-96v-1.7c0-19.8 6-39 17.2-55.3L275.5 6.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingWater = faHandHoldingDroplet;\nvar faTricycleAdult = {\n prefix: 'fas',\n iconName: 'tricycle-adult',\n icon: [640, 512, [], \"e5c4\", \"M312 64c-13.3 0-24 10.7-24 24s10.7 24 24 24h31.4c2.6 0 5 1.3 6.5 3.4l79.2 112.5-48.2 64.3c-5.6 7.5-14.4 11.9-23.7 11.9c-1.9 0-3.8-.2-5.7-.5l-322.9-63c-13-2.5-25.6 6-28.2 19s6 25.6 19 28.2l4.6 .9C9.1 305.4 0 327.6 0 352c0 53 43 96 96 96c18.2 0 35.3-5.1 49.8-13.9c-.6 .4-1.2 .7-1.8 1.1c14.1 8.2 30.5 12.8 48 12.8c53 0 96-43 96-96c0-4.1-.3-8.2-.8-12.2l55.1 10.7c4.9 1 9.9 1.4 14.9 1.4c24.4 0 47.4-11.5 62.1-31.1l38.8-51.8 13.7 19.5C457 305.6 448 327.7 448 352c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-11.4 0-22.3 2-32.5 5.6L389.2 87.8C378.7 72.9 361.6 64 343.4 64H312zM223.5 327.4c5.3 6.8 8.5 15.3 8.5 24.6c0 22.1-17.9 40-40 40c-2.9 0-5.6-.3-8.3-.9c5.3-12 8.3-25.2 8.3-39.1c0-11.2-1.9-21.9-5.4-31.8l36.9 7.2zM96 312a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm448 0a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM94.1 117.2c-6-16.6-24.3-25.3-40.9-19.3s-25.3 24.3-19.3 40.9l14.9 41.7c9.4 26.2 31.7 45.6 58.9 51.3l77.7 16.3c17.3 3.6 34.3-7.4 37.9-24.7s-7.4-34.3-24.7-37.9l-77.7-16.3c-5.4-1.1-9.9-5-11.8-10.3L94.1 117.2z\"]\n};\nvar faWaveform = {\n prefix: 'fas',\n iconName: 'waveform',\n icon: [640, 512, [], \"f8f1\", \"M320 0c12 0 22.1 8.8 23.8 20.7l42 304.4L424.3 84.2c1.9-11.7 12-20.3 23.9-20.2s21.9 8.9 23.6 20.6l28.2 197.3 20.5-102.6c2.2-10.8 11.3-18.7 22.3-19.3s20.9 6.4 24.2 16.9L593.7 264H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H576c-10.5 0-19.8-6.9-22.9-16.9l-4.1-13.4-29.4 147c-2.3 11.5-12.5 19.6-24.2 19.3s-21.4-9-23.1-20.6L446.7 248.3l-39 243.5c-1.9 11.7-12.1 20.3-24 20.2s-21.9-8.9-23.5-20.7L320 199.6 279.8 491.3c-1.6 11.8-11.6 20.6-23.5 20.7s-22.1-8.5-24-20.2l-39-243.5L167.8 427.4c-1.7 11.6-11.4 20.3-23.1 20.6s-21.9-7.8-24.2-19.3l-29.4-147-4.1 13.4C83.8 305.1 74.5 312 64 312H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H46.3l26.8-87.1c3.2-10.5 13.2-17.5 24.2-16.9s20.2 8.5 22.3 19.3l20.5 102.6L168.2 84.6c1.7-11.7 11.7-20.5 23.6-20.6s22 8.5 23.9 20.2l38.5 240.9 42-304.4C297.9 8.8 308 0 320 0z\"]\n};\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faStarSharpHalfStroke = {\n prefix: 'fas',\n iconName: 'star-sharp-half-stroke',\n icon: [576, 512, [\"star-sharp-half-alt\"], \"e28d\", \"M56 230.4L41.3 218.9c-8.1-6.3-11.3-17-8-26.7S45.7 176 56 176H74.7h2.5 .1H214.5L258.6 37.2l.1-.3 1.3-4 0 0 5.2-16.2C268.3 6.8 277.6 0 288 0s19.7 6.8 22.9 16.7L316 32.9l1.3 4 .1 .3L361.6 176H498.7h.1 2.5H520c10.3 0 19.4 6.5 22.7 16.2s.1 20.4-8 26.7L520 230.4l-2 1.5-.1 .1-114 88.7 44.4 139.5 .1 .4 1.4 4.5 5 15.7c3.2 10-.5 21-9.1 27s-20.2 5.7-28.5-.7l-13-10.1-3.7-2.9-.3-.3L288 406.4 175.8 493.7l-.3 .3-3.7 2.9-13 10.1c-8.3 6.5-19.8 6.8-28.5 .7s-12.3-16.9-9.1-27l5-15.7 1.4-4.5 .1-.4 44.4-139.5L58.1 232l-.1-.1-2-1.5zM288 335.5l0 0 34.4 26.7 47.9 37.2-19.7-61.8-11.8-37.2 30.8-24L426.7 232H361.6h-41l-12.4-39L288 129.5l0 0V335.5z\"]\n};\nvar faStarSharpHalfAlt = faStarSharpHalfStroke;\nvar faNfcSignal = {\n prefix: 'fas',\n iconName: 'nfc-signal',\n icon: [512, 512, [], \"e1fb\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V227c-22.4 3.4-43.8 9.6-64 18.3V144c0-26.5-21.5-48-48-48H256c-26.5 0-48 21.5-48 48v66.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V144c0-8.8 7.2-16 16-16h80c8.8 0 16 7.2 16 16V261.7c-47.2 28.4-84.8 71.2-106.7 122.3H112c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112c-26.5 0-48 21.5-48 48V368c0 26.5 21.5 48 48 48H233.9c-5.8 20.4-9.2 41.9-9.8 64H64c-35.3 0-64-28.7-64-64V96zM488 256c13.3 0 24 10.7 24 24s-10.7 24-24 24c-101.6 0-184 82.4-184 184c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-128.1 103.9-232 232-232zm-8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm32-72c0 13.3-10.7 24-24 24c-48.6 0-88 39.4-88 88c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-75.1 60.9-136 136-136c13.3 0 24 10.7 24 24z\"]\n};\nvar faPlaneProp = {\n prefix: 'fas',\n iconName: 'plane-prop',\n icon: [576, 512, [], \"e22b\", \"M240 384l-8.3-66.4-110-11L113.8 370c-1 8-7.8 14-15.9 14H62.1c-8.1 0-14.9-6-15.9-14L36 287.8c-1.3 .2-2.6 .2-4 .2c-17.7 0-32-14.3-32-32s14.3-32 32-32c1.3 0 2.7 .1 4 .2L46.2 142c1-8 7.8-14 15.9-14H97.9c8.1 0 14.9 6 15.9 14l7.9 63.4 110-11L240 128H224c-17.7 0-32-14.3-32-32s14.3-32 32-32h24l6.2-50c1-8 7.8-14 15.9-14h35.8c8.1 0 14.9 6 15.9 14L328 64h40V48c0-8.8 7.2-16 16-16s16 7.2 16 16V80c8.8 0 16 7.2 16 16s-7.2 16-16 16v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V128H336l8 64H482.3c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64H344l-8 64h32V368c0-8.8 7.2-16 16-16s16 7.2 16 16v32c8.8 0 16 7.2 16 16s-7.2 16-16 16v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448H328l-6.2 50c-1 8-7.8 14-15.9 14H270.1c-8.1 0-14.9-6-15.9-14L248 448H224c-17.7 0-32-14.3-32-32s14.3-32 32-32h16z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM329 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L329 305z\"]\n};\nvar faClockDesk = {\n prefix: 'fas',\n iconName: 'clock-desk',\n icon: [448, 512, [], \"e134\", \"M0 224a224 224 0 1 1 448 0A224 224 0 1 1 0 224zM224 96c-13.3 0-24 10.7-24 24V224c0 6.4 2.5 12.5 7 17l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-41-41V120c0-13.3-10.7-24-24-24zm0 384c96.4 0 180.3-53.3 224-132V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V348c43.7 78.7 127.6 132 224 132z\"]\n};\nvar faCalendarClock = {\n prefix: 'fas',\n iconName: 'calendar-clock',\n icon: [576, 512, [\"calendar-time\"], \"e0d2\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H432 0V464c0 26.5 21.5 48 48 48H330.8C285.6 480.1 256 427.5 256 368c0-97.2 78.8-176 176-176c5.4 0 10.7 .2 16 .7V192zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM432 288c8.8 0 16 7.2 16 16v48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16z\"]\n};\nvar faCalendarTime = faCalendarClock;\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M0 96a64 64 0 1 1 128 0A64 64 0 1 1 0 96zM224 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM80 416a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM224 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM352 96a64 64 0 1 1 128 0A64 64 0 1 1 352 96zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0A64 64 0 1 1 512 96zm64 176a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM416 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faPrescriptionBottleMedical = {\n prefix: 'fas',\n iconName: 'prescription-bottle-medical',\n icon: [384, 512, [\"prescription-bottle-alt\"], \"f486\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zM160 240v48H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V352h48c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPrescriptionBottleAlt = faPrescriptionBottleMedical;\nvar faPlateUtensils = {\n prefix: 'fas',\n iconName: 'plate-utensils',\n icon: [640, 512, [58713], \"e43b\", \"M40.7 16c4 .3 7.1 3.5 7.3 7.5L55.5 152H72.9L88.1 23.1c.5-4 3.9-7.1 7.9-7.1s7.5 3 7.9 7.1L119.1 152h17.3L144 23.5c.2-4 3.3-7.2 7.3-7.5s7.6 2.3 8.5 6.1l30.3 128.7c1.3 5.4 1.9 11 1.9 16.6c0 39.9-32.2 72.2-72 72.5V472c0 13.3-10.7 24-24 24s-24-10.7-24-24V240c-39.8-.3-72-32.6-72-72.5c0-5.6 .6-11.2 1.9-16.6L32.2 22.2c.9-3.9 4.5-6.5 8.5-6.1zm572.4 1c2-.7 4-1 6.1-1c11.5 0 20.9 9.3 20.9 20.9V216 320 472c0 13.3-10.7 24-24 24s-24-10.7-24-24V320H544c-17.7 0-32-14.3-32-32V160C512 59.2 596.2 23.2 613.1 17zM221.2 143.6L204.9 74.3C241.8 47.7 287.1 32 336 32c60.3 0 115 23.8 155.3 62.5C484.3 113.3 480 135 480 160v26.2C454.1 132.8 399.3 96 336 96c-44.9 0-85.5 18.5-114.6 48.3l-.2-.8zM336 480c-76.2 0-143.5-38.1-184-96.2V266.8c8.5-2.8 16.6-6.7 24-11.4l0 .6c0 88.4 71.6 160 160 160c68.1 0 126.2-42.5 149.3-102.4c9.2 21 29.3 36.2 53.2 38.2C502.6 427.6 425.4 480 336 480zM208 256a128 128 0 1 1 256 0 128 128 0 1 1 -256 0z\"]\n};\nvar faFamilyPants = {\n prefix: 'fas',\n iconName: 'family-pants',\n icon: [512, 512, [], \"e302\", \"M128 0a64 64 0 1 1 0 128A64 64 0 1 1 128 0zM105.6 160h44.8c9.2 0 18.1 1.6 26.4 4.5c-.5 3.8-.8 7.6-.8 11.5c0 24.3 10.9 46.1 28 60.8c-35.7 18.7-60 56.1-60 99.2v16c0 28.4 12.4 54 32 71.6V480c0 6.1 .8 11.9 2.4 17.5c-8.7 9-20.9 14.5-34.4 14.5H112c-26.5 0-48-21.5-48-48V348.3c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3C29.3 191.9 64 160 105.6 160zM368 512c-13.5 0-25.7-5.6-34.4-14.5c1.6-5.5 2.4-11.4 2.4-17.5V423.6c19.6-17.6 32-43.1 32-71.6V336c0-43.1-24.3-80.5-60-99.2c17.1-14.7 28-36.5 28-60.8c0-3.9-.3-7.8-.8-11.5c8.3-2.9 17.2-4.5 26.4-4.5h44.8c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6V464c0 26.5-21.5 48-48 48H368zM384 0a64 64 0 1 1 0 128A64 64 0 1 1 384 0zM256 128a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128c44.2 0 80 35.8 80 80v16c0 23.7-12.9 44.4-32 55.4V480c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V407.4c-19.1-11.1-32-31.7-32-55.4V336c0-44.2 35.8-80 80-80z\"]\n};\nvar faHoseReel = {\n prefix: 'fas',\n iconName: 'hose-reel',\n icon: [640, 512, [], \"e41a\", \"M320 64c-106 0-192 86-192 192s86 192 192 192c40.8 0 78.6-12.7 109.7-34.4c14.5-10.1 34.4-6.6 44.6 7.9s6.6 34.4-7.9 44.6C424.8 495 374.3 512 320 512C178.6 512 64 397.4 64 256S178.6 0 320 0S576 114.6 576 256v96h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-2.3l-11.5 80.2c7.8 1.1 13.7 7.8 13.7 15.8c0 8.8-7.2 16-16 16H520c-8.8 0-16-7.2-16-16c0-8.1 6-14.7 13.7-15.8L506.3 400H504c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V256c0-106-86-192-192-192zM224 256a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zm96 160a160 160 0 1 1 0-320 160 160 0 1 1 0 320zM256 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faHouseWindow = {\n prefix: 'fas',\n iconName: 'house-window',\n icon: [576, 512, [], \"e3b3\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM248 192h80c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24H248c-13.3 0-24-10.7-24-24V216c0-13.3 10.7-24 24-24z\"]\n};\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [127963], \"f66f\", \"M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8H32c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9V104l4.4-1.6L240.1 4.2zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [128666, 9951], \"f0d1\", \"M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM112 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M256 0c17.7 0 32 14.3 32 32V42.4c93.7 13.9 167.7 88 181.6 181.6H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H469.6c-13.9 93.7-88 167.7-181.6 181.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V469.6C130.3 455.7 56.3 381.7 42.4 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H42.4C56.3 130.3 130.3 56.3 224 42.4V32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6V384c0-17.7 14.3-32 32-32s32 14.3 32 32v20.6c58.3-12.5 104.1-58.4 116.6-116.6H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h20.6C392.1 165.7 346.3 119.9 288 107.4V128c0 17.7-14.3 32-32 32s-32-14.3-32-32V107.4C165.7 119.9 119.9 165.7 107.4 224H128c17.7 0 32 14.3 32 32s-14.3 32-32 32H107.4zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCloudRainbow = {\n prefix: 'fas',\n iconName: 'cloud-rainbow',\n icon: [576, 512, [], \"f73e\", \"M560 64.4C466.8 69.5 385.4 119 336.5 192l-.5 0c-19.7 0-38.3 5.1-54.4 14.1c-5.5-6-11.5-11.4-18-16.4C319.9 81.4 430.9 6.1 560 .4c8.8-.4 16 6.8 16 15.6V48c0 8.8-7.2 16-16 16.4zM424 234.7c-13.3-16.9-31.5-29.9-52.3-36.9C415.4 139.9 483.1 101.2 560 96.5c8.8-.5 16 6.7 16 15.5v32c0 8.8-7.2 15.9-16 16.7c-55.3 4.6-104 32.6-136 74zm23.4 57.2c-1-9.1-3-17.9-6.1-26.2c25.7-40.1 68.9-67.9 118.8-72.9c8.8-.9 16 6.4 16 15.2v32c0 8.8-7.2 15.9-15.9 17.3c-31.4 5.2-57.7 25.8-70.9 53.7c-12.5-8.7-26.6-15.3-41.8-19.1zM96 512c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 318.1 64 311.1 64 304c0-61.9 50.1-112 112-112c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96z\"]\n};\nvar faPersonCane = {\n prefix: 'fas',\n iconName: 'person-cane',\n icon: [448, 512, [], \"e53c\", \"M272 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-8 187.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3zM352 376c0-4.4 3.6-8 8-8s8 3.6 8 8V488c0 13.3 10.7 24 24 24s24-10.7 24-24V376c0-30.9-25.1-56-56-56s-56 25.1-56 56v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8z\"]\n};\nvar faAlien = {\n prefix: 'fas',\n iconName: 'alien',\n icon: [448, 512, [128125], \"f8f5\", \"M224 0C100.3 0 0 100.3 0 224C0 359.3 148.8 471.7 194.7 503.2c8.6 5.9 18.9 8.8 29.3 8.8s20.7-2.9 29.3-8.8C299.2 471.7 448 359.3 448 224C448 100.3 347.7 0 224 0zm32 306.3c0-45.4 36.8-82.3 82.3-82.3h32c7.6 0 13.7 6.1 13.7 13.7c0 45.4-36.8 82.3-82.3 82.3h-32c-7.6 0-13.7-6.1-13.7-13.7zM109.7 224c45.4 0 82.3 36.8 82.3 82.3c0 7.6-6.1 13.7-13.7 13.7h-32C100.8 320 64 283.2 64 237.7c0-7.6 6.1-13.7 13.7-13.7h32z\"]\n};\nvar faTent = {\n prefix: 'fas',\n iconName: 'tent',\n icon: [576, 512, [], \"e57d\", \"M269.4 6C280.5-2 295.5-2 306.6 6l224 160c7.4 5.3 12.2 13.5 13.2 22.5l32 288c1 9-1.9 18.1-8 24.9s-14.7 10.7-23.8 10.7H416L288 288V512H32c-9.1 0-17.8-3.9-23.8-10.7s-9-15.8-8-24.9l32-288c1-9 5.8-17.2 13.2-22.5L269.4 6z\"]\n};\nvar faLaptopBinary = {\n prefix: 'fas',\n iconName: 'laptop-binary',\n icon: [640, 512, [], \"e5e7\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM200 128h16c22.1 0 40 17.9 40 40v32c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V168c0-22.1 17.9-40 40-40zm-8 40v32c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8zm112-40h16c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V160c-8.8 0-16-7.2-16-16s7.2-16 16-16zm80 40c0-22.1 17.9-40 40-40h16c22.1 0 40 17.9 40 40v32c0 22.1-17.9 40-40 40H424c-22.1 0-40-17.9-40-40V168zm40-8c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8H424zM192 272h16c8.8 0 16 7.2 16 16v64H192V304c-8.8 0-16-7.2-16-16s7.2-16 16-16zm256 16v64H416V304c-8.8 0-16-7.2-16-16s7.2-16 16-16h16c8.8 0 16 7.2 16 16zm-80 24v40l-32 0V312c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v40l-32 0V312c0-22.1 17.9-40 40-40h16c22.1 0 40 17.9 40 40z\"]\n};\nvar faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M151.2 69.7l55.9 167.7-11 33.1c-2.7 8.2-4.1 16.7-4.1 25.3V464c0 14.5 3.9 28.2 10.7 39.9C195 509 185.9 512 176 512H48c-26.5 0-48-21.5-48-48V270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6V128 54.3 48C64 21.5 85.5 0 112 0h4.5c.2 0 .4 0 .6 0c.4 0 .8 0 1.2 0c18.8 0 34.1 9.7 44.1 18.8C171.6 27.2 190.8 40 224 40s52.4-12.8 61.7-21.2C295.7 9.7 311 0 329.7 0c.4 0 .8 0 1.2 0c.2 0 .4 0 .6 0H336c26.5 0 48 21.5 48 48v6.3V128v17.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6V464c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V295.8c0-5.2 .8-10.3 2.5-15.2L296.8 69.7C279.4 79.7 255.4 88 224 88s-55.4-8.3-72.8-18.3zM96 456a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305l15.5 15.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288l15.5-15.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280v8 32c0 8.8 7.2 16 16 16h32 8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faPeopleDressSimple = {\n prefix: 'fas',\n iconName: 'people-dress-simple',\n icon: [512, 512, [], \"e218\", \"M128 128A64 64 0 1 0 128 0a64 64 0 1 0 0 128zm-15.7 32c-28.6 0-53.7 18.9-61.5 46.4L11.7 343.2C5.8 363.7 21.2 384 42.4 384H64v80c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V384h21.6c21.3 0 36.6-20.3 30.8-40.8L205.3 206.4c-7.9-27.5-33-46.4-61.5-46.4H112.3zM384 128A64 64 0 1 0 384 0a64 64 0 1 0 0 128zm-15.7 32c-28.6 0-53.7 18.9-61.5 46.4L267.7 343.2c-5.8 20.4 9.5 40.8 30.8 40.8H320v80c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V384h21.6c21.3 0 36.6-20.3 30.8-40.8L461.3 206.4c-7.8-27.5-33-46.4-61.5-46.4H368.3z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [448, 512, [], \"f560\", \"M342.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 54.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z\"]\n};\nvar faArrowDownAZ = {\n prefix: 'fas',\n iconName: 'arrow-down-a-z',\n icon: [576, 512, [\"sort-alpha-asc\", \"sort-alpha-down\"], \"f15d\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z\"]\n};\nvar faSortAlphaAsc = faArrowDownAZ;\nvar faSortAlphaDown = faArrowDownAZ;\nvar faBowlingBallPin = {\n prefix: 'fas',\n iconName: 'bowling-ball-pin',\n icon: [576, 512, [], \"e0c3\", \"M416 64c0-35.3 28.7-64 64-64s64 28.7 64 64v1.1c0 7.4-1 14.8-3 22l-17.7 64.8c-.7 2.7-1.3 5.4-1.8 8.1H438.5c-.5-2.7-1.1-5.4-1.8-8.1L418.9 87.1c-2-7.2-2.9-14.6-2.9-22V64zm22.8 128h82.3c1 6.3 2.6 12.4 4.8 18.4L566 319.3c6.6 17.9 10 36.8 10 55.8c0 20.5-3.9 40.9-11.5 59.9l-22.7 56.9C536.9 504 525.1 512 512 512H448c-13.1 0-24.9-8-29.7-20.1l-17.8-44.5c29.8-40 47.5-89.6 47.5-143.4c0-30.7-5.8-60.1-16.3-87.1l2.4-6.5c2.2-6 3.8-12.1 4.8-18.4zM0 304a208 208 0 1 1 416 0A208 208 0 1 1 0 304zM224 172a28 28 0 1 0 -56 0 28 28 0 1 0 56 0zM196 288a28 28 0 1 0 0-56 28 28 0 1 0 0 56zm-44-68a28 28 0 1 0 -56 0 28 28 0 1 0 56 0z\"]\n};\nvar faBellSchoolSlash = {\n prefix: 'fas',\n iconName: 'bell-school-slash',\n icon: [640, 512, [], \"f5d6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L570.7 422c3.4-6.6 5.3-14.1 5.3-22c0-26.5-21.5-48-48-48c-12.1 0-23.1 4.5-31.5 11.8L445 323.5c22.1-33 35-72.8 35-115.5C480 93.1 386.9 0 272 0C211.2 0 156.6 26.1 118.5 67.6L38.8 5.1zM220 147.2c14-11.9 32.1-19.2 52-19.2c44.2 0 80 35.8 80 80c0 12.9-3.1 25.1-8.5 35.9l-26.1-20.4c1.7-4.9 2.6-10.1 2.6-15.5c0-26.5-21.5-48-48-48c-9.5 0-18.4 2.8-25.9 7.6L220 147.2zM508.3 496.5L465.8 463c-3.2 .7-6.4 1-9.8 1H416V423.8l-16.1-12.7C362.9 434.5 319 448 272 448c-54 0-103.9-17.9-144-48v64c0 26.5 21.5 48 48 48H384h32 40c19.3 0 37.3-5.7 52.3-15.5zM373 389.9L71.5 152.4C66.6 170.1 64 188.7 64 208c0 114.9 93.1 208 208 208c36.7 0 71.1-9.5 101-26.1z\"]\n};\nvar faPlusLarge = {\n prefix: 'fas',\n iconName: 'plus-large',\n icon: [512, 512, [], \"e59e\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H224V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-192 0 0-192z\"]\n};\nvar faMoneyBillWheat = {\n prefix: 'fas',\n iconName: 'money-bill-wheat',\n icon: [512, 512, [], \"e52a\", \"M176 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zM56 16h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56C42.7 64 32 53.3 32 40s10.7-24 24-24zM24 88H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24S10.7 88 24 88zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 16c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80zM400 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 128c8.8 0 16 7.2 16 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faCameraViewfinder = {\n prefix: 'fas',\n iconName: 'camera-viewfinder',\n icon: [512, 512, [\"screenshot\"], \"e0da\", \"M56 0h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-4.4 0-8 3.6-8 8v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V56C0 25.1 25.1 0 56 0zM376 0h80c30.9 0 56 25.1 56 56v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V56c0-4.4-3.6-8-8-8H376c-13.3 0-24-10.7-24-24s10.7-24 24-24zM48 376v80c0 4.4 3.6 8 8 8h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-30.9 0-56-25.1-56-56V376c0-13.3 10.7-24 24-24s24 10.7 24 24zm464 0v80c0 30.9-25.1 56-56 56H376c-13.3 0-24-10.7-24-24s10.7-24 24-24h80c4.4 0 8-3.6 8-8V376c0-13.3 10.7-24 24-24s24 10.7 24 24zM180 128l6.2-16.4c3.5-9.4 12.5-15.6 22.5-15.6h94.7c10 0 19 6.2 22.5 15.6L332 128h36c26.5 0 48 21.5 48 48V336c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h36zM320 256a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faScreenshot = faCameraViewfinder;\nvar faMessageMusic = {\n prefix: 'fas',\n iconName: 'message-music',\n icon: [512, 512, [\"comment-alt-music\"], \"f8af\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zM352 96c0-5.2-2.6-10.2-6.9-13.2s-9.8-3.7-14.7-1.8l-128 48c-6.2 2.3-10.4 8.3-10.4 15v32 81.8c-5-1.2-10.4-1.8-16-1.8c-26.5 0-48 14.3-48 32s21.5 32 48 32s48-14.3 48-32V187.1l96-36v74.7c-5-1.2-10.4-1.8-16-1.8c-26.5 0-48 14.3-48 32s21.5 32 48 32s48-14.3 48-32V128 96z\"]\n};\nvar faCommentAltMusic = faMessageMusic;\nvar faCarBuilding = {\n prefix: 'fas',\n iconName: 'car-building',\n icon: [640, 512, [], \"f859\", \"M48 0C21.5 0 0 21.5 0 48V432c0 26.5 21.5 48 48 48H192V448 352c0-32.8 16.5-61.8 41.6-79.1l5.6-16.9H208c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16h32c8.2 0 14.9 6.1 15.9 14l.5-1.4c10.5-31.6 34.2-56 63.7-68.2V48c0-26.5-21.5-48-48-48H48zM80 192h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0-96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V112zM80 288h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16zm282.6-64H501.4c6.9 0 13 4.4 15.2 10.9L534.3 288H329.7l17.7-53.1c2.2-6.5 8.3-10.9 15.2-10.9zm-75.9-9.3l-26.6 79.7C238.8 304.7 224 326.6 224 352v96h0v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448H560v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32l0-32V352c0-25.4-14.8-47.3-36.1-57.6l-26.6-79.7C566.4 182 535.8 160 501.4 160H362.6c-34.4 0-65 22-75.9 54.7zM304 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faBorderBottomRight = {\n prefix: 'fas',\n iconName: 'border-bottom-right',\n icon: [448, 512, [\"border-style-alt\"], \"f854\", \"M448 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 336c0 8.8-7.2 16-16 16L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l336 0c44.2 0 80-35.8 80-80l0-336zM288 64a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zM96 64a32 32 0 1 0 64 0A32 32 0 1 0 96 64zm96 0a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zM0 64a32 32 0 1 0 64 0A32 32 0 1 0 0 64zM32 224a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0 128a32 32 0 1 0 0 64 32 32 0 1 0 0-64z\"]\n};\nvar faBorderStyleAlt = faBorderBottomRight;\nvar faOctagon = {\n prefix: 'fas',\n iconName: 'octagon',\n icon: [512, 512, [128721], \"f306\", \"M191.5 .1c-19.1 0-37.4 7.6-50.9 21.1L21.2 140.6C7.7 154.1 .1 172.4 .1 191.5v129c0 19.1 7.6 37.4 21.1 50.9L140.6 490.8c13.5 13.5 31.8 21.1 50.9 21.1h129c19.1 0 37.4-7.6 50.9-21.1L490.8 371.4c13.5-13.5 21.1-31.8 21.1-50.9v-129c0-19.1-7.6-37.4-21.1-50.9L371.4 21.2C357.9 7.7 339.6 .1 320.5 .1h-129z\"]\n};\nvar faCommentArrowUpRight = {\n prefix: 'fas',\n iconName: 'comment-arrow-up-right',\n icon: [512, 512, [], \"e145\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM200 160H312c13.3 0 24 10.7 24 24V296c0 13.3-10.7 24-24 24s-24-10.7-24-24V241.9l-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87H200c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faOctagonDivide = {\n prefix: 'fas',\n iconName: 'octagon-divide',\n icon: [512, 512, [], \"e203\", \"M140.6 21.2C154.1 7.7 172.4 .1 191.5 .1h129c19.1 0 37.4 7.6 50.9 21.1L490.8 140.6c13.5 13.5 21.1 31.8 21.1 50.9v129c0 19.1-7.6 37.4-21.1 50.9L371.4 490.8c-13.5 13.5-31.8 21.1-50.9 21.1h-129c-19.1 0-37.4-7.6-50.9-21.1L21.2 371.4C7.7 357.9 .1 339.6 .1 320.5v-129c0-19.1 7.6-37.4 21.1-50.9L140.6 21.2zM256 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-88 40c-13.3 0-24 10.7-24 24s10.7 24 24 24H344c13.3 0 24-10.7 24-24s-10.7-24-24-24H168zM288 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [127850], \"f563\", \"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArrowRotateLeft = {\n prefix: 'fas',\n iconName: 'arrow-rotate-left',\n icon: [512, 512, [8634, \"arrow-left-rotate\", \"arrow-rotate-back\", \"arrow-rotate-backward\", \"undo\"], \"f0e2\", \"M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z\"]\n};\nvar faArrowLeftRotate = faArrowRotateLeft;\nvar faArrowRotateBack = faArrowRotateLeft;\nvar faArrowRotateBackward = faArrowRotateLeft;\nvar faUndo = faArrowRotateLeft;\nvar faTvMusic = {\n prefix: 'fas',\n iconName: 'tv-music',\n icon: [640, 512, [], \"f8e6\", \"M576 64V352H64V64H576zM64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM96 480c0 17.7 14.3 32 32 32H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H128c-17.7 0-32 14.3-32 32zM416 112c0-5.2-2.6-10.2-6.9-13.2s-9.8-3.7-14.7-1.8l-128 48c-6.2 2.3-10.4 8.3-10.4 15v48 49.8c-5-1.2-10.4-1.8-16-1.8c-26.5 0-48 14.3-48 32s21.5 32 48 32s48-14.3 48-32V219.1l96-36v42.7c-5-1.2-10.4-1.8-16-1.8c-26.5 0-48 14.3-48 32s21.5 32 48 32s48-14.3 48-32V160 112z\"]\n};\nvar faHardDrive = {\n prefix: 'fas',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V280.4c-17-15.2-39.4-24.4-64-24.4H64c-24.6 0-47 9.2-64 24.4V96zM64 288H448c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64zM320 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faHdd = faHardDrive;\nvar faReel = {\n prefix: 'fas',\n iconName: 'reel',\n icon: [448, 512, [], \"e238\", \"M0 32C0 14.3 14.3 0 32 0H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V88c0 13.3-10.7 24-24 24H88c-13.3 0-24-10.7-24-24V64H32C14.3 64 0 49.7 0 32zM0 480c0-17.7 14.3-32 32-32H64V424c0-13.3 10.7-24 24-24H360c13.3 0 24 10.7 24 24v24h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM80 144H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFaceGrinSquintTears = {\n prefix: 'fas',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-6.8 6.8-21.4 12.4-37.4 16.7c-16.3 4.4-34.1 7.5-46.3 9.3c-1.6 .2-3.1 .5-4.6 .6c-4.9 .8-9.1-2.8-9.5-7.4c-.1-.7 0-1.4 .1-2.1c1.6-11.2 4.6-29.6 9-47c.3-1.3 .7-2.6 1-3.9c4.3-15.9 9.8-30.5 16.7-37.4zm-44.7 19c-1.5 4.8-2.9 9.6-4.1 14.3c-4.8 18.9-8 38.5-9.7 50.3c-4 26.8 18.9 49.7 45.7 45.8c11.9-1.6 31.5-4.8 50.4-9.7c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c4.8-18.9 8-38.5 9.7-50.3c4-26.8-18.9-49.7-45.7-45.8c-11.9 1.6-31.5 4.8-50.4 9.7c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75C158.2-8.3 284.5-22.2 382.2 33.2zM51.5 410.1c18.5-5 38.8-8.3 50.9-10c.4-.1 .7-.1 1-.1c5.1-.2 9.2 4.3 8.4 9.6c-1.7 12.1-5 32.4-10 50.9C97.6 476.4 92 491 85.2 497.8C66 517 34.5 516.6 14.9 497.1s-20-51-.7-70.3c6.8-6.8 21.4-12.4 37.4-16.7zM416.9 209c-4.7-11.9-20.8-11-26.8 .3c-19 35.5-45 70.8-77.5 103.3S244.8 371.1 209.3 390c-11.3 6-12.2 22.1-.3 26.8c57.6 22.9 125.8 11 172.3-35.5s58.4-114.8 35.5-172.3zM87.1 285.1c2 2 4.6 3.2 7.3 3.4l56.1 5.1 5.1 56.1c.3 2.8 1.5 5.4 3.4 7.3c6.3 6.3 17.2 3.6 19.8-4.9l29.7-97.4c3.5-11.6-7.3-22.5-19-19L92 265.3c-8.6 2.6-11.3 13.4-4.9 19.8zM265.3 92l-29.7 97.4c-3.5 11.6 7.3 22.5 19 19l97.4-29.7c8.6-2.6 11.3-13.4 4.9-19.8c-2-2-4.6-3.2-7.3-3.4l-56.1-5.1-5.1-56.1c-.3-2.8-1.5-5.4-3.4-7.3c-6.3-6.3-17.2-3.6-19.8 4.9z\"]\n};\nvar faGrinSquintTears = faFaceGrinSquintTears;\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M96 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V224v64V448c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V384H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H96V64zm448 0v64h32c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32v64c0 17.7-14.3 32-32 32H544v64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V288 224 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32zM416 224v64H224V224H416z\"]\n};\nvar faRectangleList = {\n prefix: 'fas',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224z\"]\n};\nvar faListAlt = faRectangleList;\nvar faTarpDroplet = {\n prefix: 'fas',\n iconName: 'tarp-droplet',\n icon: [576, 512, [], \"e57c\", \"M288 160c-35.3 0-64-26.9-64-60c0-24 33.7-70.1 52.2-93.5c6.1-7.7 17.5-7.7 23.6 0C318.3 29.9 352 76 352 100c0 33.1-28.7 60-64 60zM64 128H197.5c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H512c35.3 0 64 28.7 64 64V352H448c-17.7 0-32 14.3-32 32l0 128L64 512c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zM448 512l0-128H576L448 512zM96 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faAlarmExclamation = {\n prefix: 'fas',\n iconName: 'alarm-exclamation',\n icon: [512, 512, [], \"f843\", \"M14.9 146.4C5.5 131.6 0 114 0 95.2C0 42.6 42.6 0 95.2 0c25 0 47.8 9.6 64.8 25.4L14.9 146.4zM390.2 467.4C352.8 495.4 306.3 512 256 512s-96.8-16.6-134.1-44.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l35.2-35.2C48.6 384.8 32 338.3 32 288C32 164.3 132.3 64 256 64s224 100.3 224 224c0 50.3-16.6 96.8-44.6 134.2l35.2 35.2c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-35.2-35.2zM352 25.4C369 9.6 391.8 0 416.8 0C469.4 0 512 42.6 512 95.2c0 18.8-5.5 36.3-14.9 51.1L352 25.4zM288 384a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-8-200c0-13.3-10.7-24-24-24s-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184z\"]\n};\nvar faHouseMedicalCircleCheck = {\n prefix: 'fas',\n iconName: 'house-medical-circle-check',\n icon: [640, 512, [], \"e511\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm32 0a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faTrafficCone = {\n prefix: 'fas',\n iconName: 'traffic-cone',\n icon: [512, 512, [], \"f636\", \"M173.7 128L216 20.3C220.8 8.1 232.7 0 245.8 0h20.4c13.2 0 25 8.1 29.8 20.3L338.3 128H173.7zm-25.1 64H363.4l37.7 96H110.9l37.7-96zM48 448l37.7-96H426.3L464 448h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48z\"]\n};\nvar faGrate = {\n prefix: 'fas',\n iconName: 'grate',\n icon: [448, 512, [], \"e193\", \"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64h64 96 96 64c35.3 0 64-28.7 64-64V256 96c0-35.3-28.7-64-64-64H320 224 128 64zm0 64H96V224H64V96zm0 192H96V416H64V288zm96 128V288h32V416H160zm96 0V288h32V416H256zm96 0V288h32V416H352zm32-192H352V96h32V224zM288 96V224H256V96h32zm-96 0V224H160V96h32z\"]\n};\nvar faArrowDownRight = {\n prefix: 'fas',\n iconName: 'arrow-down-right',\n icon: [384, 512, [], \"e093\", \"M320 416c17.7 0 32-14.3 32-32l0-224c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 146.7L86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 352 96 352c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0z\"]\n};\nvar faPersonSkiingNordic = {\n prefix: 'fas',\n iconName: 'person-skiing-nordic',\n icon: [576, 512, [\"skiing-nordic\"], \"f7ca\", \"M336 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM227.2 160c1.9 0 3.8 .1 5.6 .3L201.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9L291.3 464H202.8l41.1-88.1-32.4-20.3c-7.8-4.9-14.7-10.7-20.6-17.3L132.2 464H99.7l54.2-257.6c4.6-1.5 9-4.1 12.7-7.8l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5zM121.4 198.6c.4 .4 .8 .8 1.3 1.2L67 464H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H159.3c.4 0 .9 0 1.3 0H319.3c.5 0 1 0 1.4 0H504c39.8 0 72-32.2 72-72v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24v8c0 13.3-10.7 24-24 24H434.6l27.6-179.3c10.5-5.2 17.8-16.1 17.8-28.7c0-17.7-14.3-32-32-32H426.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c-12.5 12.5-12.5 32.8 0 45.3zm308 89.4L402.3 464H357.8l21.6-75.6c5.9-20.6-2.6-42.6-20.7-53.9L302 299l30.9-82.4 5.1 12.3C353 264.7 387.9 288 426.7 288h2.7z\"]\n};\nvar faSkiingNordic = faPersonSkiingNordic;\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [512, 512, [], \"f271\", \"M128 32V64H80c-26.5 0-48 21.5-48 48v48H480V112c0-26.5-21.5-48-48-48H384V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H192V32c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 192H32V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V192zM256 248c13.3 0 24 10.7 24 24v56h56c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V376H176c-13.3 0-24-10.7-24-24s10.7-24 24-24h56V272c0-13.3 10.7-24 24-24z\"]\n};\nvar faPersonFromPortal = {\n prefix: 'fas',\n iconName: 'person-from-portal',\n icon: [512, 512, [\"portal-exit\"], \"e023\", \"M154.2 352c3.8-29.6 5.8-62.1 5.8-96c0-18.3-.6-36.1-1.7-53.4c12.4 8.3 29.4 7 40.4-4l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L233.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L334 299l30.9-82.4 5.1 12.3C385 264.7 419.9 288 458.7 288H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H458.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c0 0 0 0-.1 .1C141 63.1 112.8 0 80 0C35.8 0 0 114.6 0 256S35.8 512 80 512c25.3 0 47.8-37.5 62.5-96h55.1c19 0 36.2-11.2 43.9-28.5L253 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L187.2 352h-33zM368 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faPortalExit = faPersonFromPortal;\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [128748], \"f5af\", \"M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0h40.1c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14-9.3-22.5zM32 448H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm96-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCowbellCirclePlus = {\n prefix: 'fas',\n iconName: 'cowbell-circle-plus',\n icon: [576, 512, [\"cowbell-more\"], \"f8b4\", \"M112 96h16V40c0-22.1 17.9-40 40-40H280c22.1 0 40 17.9 40 40V96h16c21.4 0 40.3 14.2 46.2 34.8l18.3 64C318.3 209.7 256 281.6 256 368c0 16.6 2.3 32.7 6.6 48H48c-15.1 0-29.3-7.1-38.3-19.1s-12-27.6-7.8-42.1l64-224C71.7 110.2 90.6 96 112 96zM285.5 465.6C277.9 492.4 253.2 512 224 512c-35.3 0-64-28.7-64-64H275.2c3.1 6.1 6.6 12 10.3 17.6zM272 96V48H176V96h96zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faCowbellMore = faCowbellCirclePlus;\nvar faCircleLeft = {\n prefix: 'fas',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9L117.5 269.8c-3.5-3.8-5.5-8.7-5.5-13.8s2-10.1 5.5-13.8l99.9-107.1c4.2-4.5 10.1-7.1 16.3-7.1c12.3 0 22.3 10 22.3 22.3l0 57.7 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 57.7c0 12.3-10 22.3-22.3 22.3c-6.2 0-12.1-2.6-16.3-7.1z\"]\n};\nvar faArrowAltCircleLeft = faCircleLeft;\nvar faDistributeSpacingVertical = {\n prefix: 'fas',\n iconName: 'distribute-spacing-vertical',\n icon: [512, 512, [], \"e366\", \"M0 56C0 42.7 10.7 32 24 32H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H24C10.7 80 0 69.3 0 56zM96 208c0-26.5 21.5-48 48-48H368c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V208zM24 432H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faSignalBarsFair = {\n prefix: 'fas',\n iconName: 'signal-bars-fair',\n icon: [640, 512, [\"signal-alt-2\"], \"f692\", \"M240 256c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48s48-21.5 48-48V304c0-26.5-21.5-48-48-48zM80 384c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48s48-21.5 48-48V432c0-26.5-21.5-48-48-48z\"]\n};\nvar faSignalAlt2 = faSignalBarsFair;\nvar faSportsball = {\n prefix: 'fas',\n iconName: 'sportsball',\n icon: [512, 512, [], \"e44b\", \"M487.6 48.9c-.1-.5-.2-1-.3-1.5L365.3 169.3c34.8 30.2 79 49.8 127.6 53.9c9.3-63 4.7-125.5-5.4-174.3zM464.8 24.6c-1.1-.3-2.2-.5-3.3-.7c-65.6-11-122.9-12.5-172.8-6c3.9 49.1 23.6 93.7 54 128.8L464.8 24.6zM446 358.4c19.8-32.3 33-67.7 41.1-103.6c-55.1-5.3-105.1-28.1-144.4-62.8l-64 64L418.5 395.9c10.3-11.8 19.4-24.4 27.4-37.5zM320 169.4C285 129.7 262.1 79 257 23.3c-17 3.6-33 8.3-48.1 13.9c-37 13.7-67.8 33-93.1 56L256 233.4l64-64zM233.4 256L93.4 116.1C83.2 127.9 74.1 140.5 66 153.6c-19.8 32.3-33 67.7-41.1 103.6c55.1 5.3 105.1 28.1 144.4 62.8l64-64zM192 342.6c35 39.7 58 90.3 63 146.1c17-3.6 33-8.3 48.1-13.9c37-13.7 67.8-33 93.1-56L256 278.6l-64 64zm-45.3 .1c-34.8-30.2-79-49.8-127.6-53.9c-9.3 63-4.7 125.5 5.4 174.3c.1 .5 .2 1 .3 1.5L146.7 342.7zm22.6 22.6L47.2 487.4c1.1 .3 2.2 .5 3.3 .7c65.6 11 123 12.5 172.8 6c-3.9-49.1-23.6-93.7-54-128.8z\"]\n};\nvar faGameConsoleHandheldCrank = {\n prefix: 'fas',\n iconName: 'game-console-handheld-crank',\n icon: [640, 512, [], \"e5b9\", \"M32 96c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V96zm96 0c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H128zm32 240c0-8.8-7.2-16-16-16s-16 7.2-16 16v16H112c-8.8 0-16 7.2-16 16s7.2 16 16 16h16v16c0 8.8 7.2 16 16 16s16-7.2 16-16V384h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H160V336zm144 24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM512 168c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H560v72c0 13.3-10.7 24-24 24H512V272 256 200 168z\"]\n};\nvar faTrainSubway = {\n prefix: 'fas',\n iconName: 'train-subway',\n icon: [448, 512, [\"subway\"], \"f239\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 128c0-17.7 14.3-32 32-32h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM272 96h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H272c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM64 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm288-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSubway = faTrainSubway;\nvar faChartGantt = {\n prefix: 'fas',\n iconName: 'chart-gantt',\n icon: [512, 512, [], \"e0e4\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32zm96 64H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFaceSmileUpsideDown = {\n prefix: 'fas',\n iconName: 'face-smile-upside-down',\n icon: [512, 512, [], \"e395\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zm91.9 186.5C330 165.8 299.4 144 256 144s-74 21.8-91.9 42.5c-5.8 6.7-15.9 7.4-22.6 1.6s-7.4-15.9-1.6-22.6c22.2-25.7 61-53.5 116.1-53.5s93.8 27.9 116.1 53.5c5.8 6.7 5.1 16.8-1.6 22.6s-16.8 5.1-22.6-1.6zM367.6 304a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-192 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nvar faBallPile = {\n prefix: 'fas',\n iconName: 'ball-pile',\n icon: [640, 512, [], \"f77e\", \"M320 160A80 80 0 1 0 320 0a80 80 0 1 0 0 160zM208 328a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM192 432A80 80 0 1 0 32 432a80 80 0 1 0 160 0zm128 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm288-80a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM432 328a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nvar faBadgeDollar = {\n prefix: 'fas',\n iconName: 'badge-dollar',\n icon: [512, 512, [], \"f645\", \"M256 0c36.8 0 68.8 20.7 84.9 51.1C373.8 41 411 49 437 75s34 63.3 23.9 96.1C491.3 187.2 512 219.2 512 256s-20.7 68.8-51.1 84.9C471 373.8 463 411 437 437s-63.3 34-96.1 23.9C324.8 491.3 292.8 512 256 512s-68.8-20.7-84.9-51.1C138.2 471 101 463 75 437s-34-63.3-23.9-96.1C20.7 324.8 0 292.8 0 256s20.7-68.8 51.1-84.9C41 138.2 49 101 75 75s63.3-34 96.1-23.9C187.2 20.7 219.2 0 256 0zm20.9 140.4c0-11-9-20-20-20s-20 9-20 20v17.4c-8.8 1.8-17.7 4.8-25.7 9.6c-15 8.9-27.7 24.4-27.6 46.9c.1 21.5 12.6 35.1 26.3 43.4c11.9 7.2 27 11.7 39.1 15.4l1.9 .6c13.9 4.2 24.4 7.6 31.7 12.2c6.1 3.8 7.5 6.8 7.6 11c.1 6.5-2.5 10.4-7.6 13.6c-6 3.7-15.2 5.9-25.1 5.6c-12.7-.4-24.6-4.4-39.7-9.6l0 0 0 0 0 0 0 0c-2.6-.9-5.2-1.8-8-2.7c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c2.2 .7 4.5 1.5 6.8 2.3c9.7 3.3 20.9 7.2 32.8 9.6v18c0 11 9 20 20 20s20-9 20-20V354.4c9.3-1.7 18.6-4.9 26.8-10.1c15.3-9.5 26.8-25.7 26.5-48.1c-.3-21.6-12.4-35.6-26.3-44.3c-12.5-7.9-28.3-12.6-40.8-16.4l-.6-.2c-14.1-4.3-24.6-7.5-31.9-11.9c-6.2-3.7-7-6.3-7-9.3c0-5.1 2.1-8.8 7.9-12.3c6.5-3.8 16-6 25-5.8c10.9 .2 22.9 2.6 35.2 5.8c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-7.8-2.1-16.3-4.1-25.1-5.4V140.4z\"]\n};\nvar faMoneyBillsSimple = {\n prefix: 'fas',\n iconName: 'money-bills-simple',\n icon: [640, 512, [\"money-bills-alt\"], \"e1f4\", \"M96 96V320c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zM288 208a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V360c0 66.3 53.7 120 120 120H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H120c-39.8 0-72-32.2-72-72V120z\"]\n};\nvar faMoneyBillsAlt = faMoneyBillsSimple;\nvar faListTimeline = {\n prefix: 'fas',\n iconName: 'list-timeline',\n icon: [512, 512, [], \"e1d1\", \"M16 96a48 48 0 1 1 96 0A48 48 0 1 1 16 96zM64 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 160a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM191.5 54.4c5.5-4.2 12.3-6.4 19.2-6.4H424c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24H210.7c-6.9 0-13.7-2.2-19.2-6.4l-38.4-28.8c-8.5-6.4-8.5-19.2 0-25.6l38.4-28.8zM153.1 243.2l38.4-28.8c5.5-4.2 12.3-6.4 19.2-6.4H488c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24H210.7c-6.9 0-13.7-2.2-19.2-6.4l-38.4-28.8c-8.5-6.4-8.5-19.2 0-25.6zm0 160l38.4-28.8c5.5-4.2 12.3-6.4 19.2-6.4H424c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24H210.7c-6.9 0-13.7-2.2-19.2-6.4l-38.4-28.8c-8.5-6.4-8.5-19.2 0-25.6z\"]\n};\nvar faIndianRupeeSign = {\n prefix: 'fas',\n iconName: 'indian-rupee-sign',\n icon: [320, 512, [\"indian-rupee\", \"inr\"], \"e1bc\", \"M0 64C0 46.3 14.3 32 32 32H96h16H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H231.8c9.6 14.4 16.7 30.6 20.7 48H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H252.4c-13.2 58.3-61.9 103.2-122.2 110.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256h80c32.8 0 61-19.7 73.3-48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H185.3C173 115.7 144.8 96 112 96H96 32C14.3 96 0 81.7 0 64z\"]\n};\nvar faIndianRupee = faIndianRupeeSign;\nvar faInr = faIndianRupeeSign;\nvar faCropSimple = {\n prefix: 'fas',\n iconName: 'crop-simple',\n icon: [512, 512, [\"crop-alt\"], \"f565\", \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H128V32zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-256c0-35.3-28.7-64-64-64L160 64v64l224 0 0 352z\"]\n};\nvar faCropAlt = faCropSimple;\nvar faMoneyBill1 = {\n prefix: 'fas',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm76-48c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillAlt = faMoneyBill1;\nvar faLeftLong = {\n prefix: 'fas',\n iconName: 'left-long',\n icon: [512, 512, [\"long-arrow-alt-left\"], \"f30a\", \"M177.5 414c-8.8 3.8-19 2-26-4.6l-144-136C2.7 268.9 0 262.6 0 256s2.7-12.9 7.5-17.4l144-136c7-6.6 17.2-8.4 26-4.6s14.5 12.5 14.5 22l0 72 288 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-288 0 0 72c0 9.6-5.7 18.2-14.5 22z\"]\n};\nvar faLongArrowAltLeft = faLeftLong;\nvar faKeyboardDown = {\n prefix: 'fas',\n iconName: 'keyboard-down',\n icon: [576, 512, [], \"e1c2\", \"M64 0C28.7 0 0 28.7 0 64V224c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM80 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zM64 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176zm112-16H400c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16zm272 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V176zM176 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V80zM368 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V80zM153.8 366.8c-3.7 9-1.7 19.3 5.2 26.2L271 505c9.4 9.4 24.6 9.4 33.9 0L417 393c6.9-6.9 8.9-17.2 5.2-26.2s-12.5-14.8-22.2-14.8H176c-9.7 0-18.5 5.8-22.2 14.8z\"]\n};\nvar faCircleUpRight = {\n prefix: 'fas',\n iconName: 'circle-up-right',\n icon: [512, 512, [], \"e129\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zm96 313.4V176c0-8.8-7.2-16-16-16H198.6c-12.5 0-22.6 10.1-22.6 22.6c0 6 2.4 11.8 6.6 16L216 232l-66.3 66.3C146 302 144 306.9 144 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L280 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6c12.5 0 22.6-10.1 22.6-22.6z\"]\n};\nvar faCloudBoltMoon = {\n prefix: 'fas',\n iconName: 'cloud-bolt-moon',\n icon: [576, 512, [\"thunderstorm-moon\"], \"f76d\", \"M361.4 79.9C380.6 33 427.1 0 481.2 0c3.7 0 7.3 .2 10.9 .5c7 .6 12.8 5.7 14.3 12.6s-1.7 13.9-7.8 17.4c-26.9 15.1-44.9 43.6-44.9 76.1c0 48.1 39.4 87.4 88.4 87.4c5.2 0 10.3-.4 15.2-1.3c6.9-1.2 13.8 2.3 17 8.6s1.9 13.9-3.2 18.7c-23.3 22.4-55 36.1-89.9 36.1c-.8 0-1.6 0-2.4 0c-5.4-37.8-29.7-69.5-63-85.3c-1.8-38.6-23.1-72.1-54.3-90.8zm86.4 192.1c0 44.2-35.8 80-80 80H349.2C342.4 332.8 324.3 320 304 320H285.7l29.3-58.5c10.1-20.2 4.8-44.6-12.8-58.8s-42.6-14.2-60.2-.2L82 330.5c-6 4.8-10.5 10.7-13.6 17.4C28.8 336 0 299.4 0 255.9c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7zM282.1 227.6c5.8 4.7 7.6 12.9 4.3 19.6L233.9 352H304c6.8 0 12.8 4.3 15.1 10.7s.2 13.5-5.1 17.8l-160 128c-5.9 4.7-14.2 4.7-20.1-.1s-7.6-12.9-4.3-19.6L182.1 384H112c-6.8 0-12.8-4.3-15.1-10.7s-.2-13.5 5.1-17.8l160-128c5.9-4.7 14.2-4.7 20.1 .1z\"]\n};\nvar faThunderstormMoon = faCloudBoltMoon;\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [129516], \"f471\", \"M416 0c17.7 0 32 14.3 32 32c0 59.8-30.3 107.5-69.4 146.6c-28 28-62.5 53.5-97.3 77.4l-2.5 1.7c-11.9 8.1-23.8 16.1-35.5 23.9l0 0 0 0 0 0-1.6 1c-6 4-11.9 7.9-17.8 11.9c-20.9 14-40.8 27.7-59.3 41.5H283.3c-9.8-7.4-20.1-14.7-30.7-22.1l7-4.7 3-2c15.1-10.1 30.9-20.6 46.7-31.6c25 18.1 48.9 37.3 69.4 57.7C417.7 372.5 448 420.2 448 480c0 17.7-14.3 32-32 32s-32-14.3-32-32H64c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-59.8 30.3-107.5 69.4-146.6c28-28 62.5-53.5 97.3-77.4c-34.8-23.9-69.3-49.3-97.3-77.4C30.3 139.5 0 91.8 0 32C0 14.3 14.3 0 32 0S64 14.3 64 32H384c0-17.7 14.3-32 32-32zM338.6 384H109.4c-10.1 10.6-18.6 21.3-25.5 32H364.1c-6.8-10.7-15.3-21.4-25.5-32zM109.4 128H338.6c10.1-10.7 18.6-21.3 25.5-32H83.9c6.8 10.7 15.3 21.3 25.5 32zm55.4 48c18.4 13.8 38.4 27.5 59.3 41.5c20.9-14 40.8-27.7 59.3-41.5H164.7z\"]\n};\nvar faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-154.3-121c-2-30.1 20.8-60.1 56-60.1H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H532.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C412.3 118.4 352 93.4 352 43.5V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L184.2 75c-12.5-12.5-32.8-12.5-45.3 0c-1.6 1.6-3.1 3.4-4.3 5.3L38.8 5.1zm225.8 177c6.9-3.9 14.9-6.1 23.4-6.1c26.5 0 48 21.5 48 48c0 4.4-.6 8.7-1.7 12.7l-69.7-54.6zM402 412.7L144.7 210c-9.5 8.5-22.2 14-37.2 14H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h11.5c49.9 0 74.9 60.3 39.6 95.6l-8.2 8.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-31.2 23.6-52.7 50-55.7z\"]\n};\nvar faBracketRoundRight = {\n prefix: 'fas',\n iconName: 'bracket-round-right',\n icon: [192, 512, [], \"29\", \"M37.4 46.2C27.6 61 31.5 80.8 46.3 90.6C71.9 107.7 128 167 128 256s-56.1 148.3-81.8 165.4c-14.7 9.8-18.7 29.7-8.9 44.4s29.7 18.7 44.4 8.9C120.1 449 192 371.8 192 256S120.1 62.9 81.8 37.4C67 27.6 47.2 31.5 37.4 46.2z\"]\n};\nvar faCircleSterling = {\n prefix: 'fas',\n iconName: 'circle-sterling',\n icon: [512, 512, [], \"e5cf\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm5.5-352c-16.8 0-30.4 13.7-30.3 30.5l.2 33.5H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H231.7l.1 9.7c.1 18.6-3.1 37-9.6 54.3H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-8.4 0-16.1-4.4-20.5-11.5s-4.7-16-.8-23.5l9.6-18.6c7.7-14.9 11.6-31.5 11.5-48.3l-.1-10.1H176c-8.8 0-16-7.2-16-16s7.2-16 16-16h7.5l-.2-33.1c-.3-43.5 34.8-78.9 78.3-78.9c10 0 19.8 1.9 29.1 5.6l30.3 12.1c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4l-30.3-12.1c-3.6-1.4-7.4-2.2-11.3-2.2z\"]\n};\nvar faCircle5 = {\n prefix: 'fas',\n iconName: 'circle-5',\n icon: [512, 512, [], \"e0f2\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208 128H312c13.3 0 24 10.7 24 24s-10.7 24-24 24H228l-7.8 43 61.4 6.9c40.1 4.5 70.4 38.4 70.4 78.8c0 43.8-35.5 79.3-79.3 79.3h-36c-27.5 0-53.3-13.7-68.6-36.6l-4.1-6.1c-7.4-11-4.5-25.9 6.5-33.3s25.9-4.5 33.3 6.5l4.1 6.1c6.4 9.6 17.2 15.3 28.8 15.3h36c17.3 0 31.3-14 31.3-31.3c0-15.9-12-29.3-27.8-31.1l-86.9-9.8c-6.6-.7-12.6-4.2-16.6-9.5s-5.5-12.1-4.4-18.6l16-88c2.1-11.4 12-19.7 23.6-19.7z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [8211, 8722, 10134, \"subtract\"], \"f068\", \"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faSubtract = faMinus;\nvar faFireFlame = {\n prefix: 'fas',\n iconName: 'fire-flame',\n icon: [384, 512, [\"flame\"], \"f6df\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zM188.8 148.3c2-2.7 5.2-4.3 8.5-4.3c5.9 0 10.7 4.8 10.7 10.7v11.4c0 8.9 3.6 17.4 9.9 23.6l51.5 50.7C291.5 262.2 304 292 304 323c0 60.2-48.8 109-109 109h-3c-61.9 0-112-50.1-112-112v-8.2c0-21.2 7.8-41.6 21.8-57.4l6.9-7.8c2.1-2.4 5.1-3.7 8.3-3.7c6.1 0 11 4.9 11 11v44c0 24.3 19.8 44 44.1 44c24.2 0 43.9-19.6 43.9-43.8c0-11.6-4.6-22.8-12.8-31l-13.2-13.2c-14-14-21.9-33.1-21.9-53c0-16.2 5.3-32 15-44.9l5.8-7.8z\"]\n};\nvar faFlame = faFireFlame;\nvar faRightToLine = {\n prefix: 'fas',\n iconName: 'right-to-line',\n icon: [448, 512, [\"arrow-alt-to-right\"], \"f34c\", \"M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM384 416l0-320c0-17.7 14.3-32 32-32s32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faArrowAltToRight = faRightToLine;\nvar faGif = {\n prefix: 'fas',\n iconName: 'gif',\n icon: [576, 512, [], \"e190\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm304 64c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16s16-7.2 16-16V176c0-8.8-7.2-16-16-16zm48 16v80 80c0 8.8 7.2 16 16 16s16-7.2 16-16V272h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H384V192h80c8.8 0 16-7.2 16-16s-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zM128 256c0-35.3 28.7-64 64-64c14.4 0 27.7 4.8 38.4 12.8c7.1 5.3 17.1 3.9 22.4-3.2s3.9-17.1-3.2-22.4c-16-12.1-36-19.2-57.6-19.2c-53 0-96 43-96 96s43 96 96 96c21.6 0 41.6-7.1 57.6-19.2c4-3 6.4-7.8 6.4-12.8V264c0-8.8-7.2-16-16-16H184c-8.8 0-16 7.2-16 16s7.2 16 16 16h40v31.4c-9.4 5.4-20.3 8.6-32 8.6c-35.3 0-64-28.7-64-64z\"]\n};\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16V32H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h16V96H60.2C49.1 96 40 105.1 40 116.2c0 2.5 .5 4.9 1.3 7.3L73.8 208H72c-13.3 0-24 10.7-24 24s10.7 24 24 24h4L60 384H196L180 256h4c13.3 0 24-10.7 24-24s-10.7-24-24-24h-1.8l32.5-84.5c.9-2.3 1.3-4.8 1.3-7.3c0-11.2-9.1-20.2-20.2-20.2H144V64h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H144V16zM48 416L4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24H232c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L208 416H48zm288 0l-43.2 57.6c-3.1 4.2-4.8 9.2-4.8 14.4c0 13.3 10.7 24 24 24H488c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L464 416H336zM304 208v51.9c0 7.8 2.8 15.3 8 21.1L339.2 312 337 384H462.5l-3.3-72 28.3-30.8c5.4-5.9 8.5-13.6 8.5-21.7V208c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16v16H424V208c0-8.8-7.2-16-16-16H392c-8.8 0-16 7.2-16 16v16H352V208c0-8.8-7.2-16-16-16H320c-8.8 0-16 7.2-16 16zm80 96c0-8.8 7.2-16 16-16s16 7.2 16 16v32H384V304z\"]\n};\nvar faTrashSlash = {\n prefix: 'fas',\n iconName: 'trash-slash',\n icon: [640, 512, [], \"e2b3\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L497.2 364.4 512 128H195.6L154.8 96H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H416l-7.2-14.3C403.4 6.8 392.3 0 380.2 0H259.8c-12.1 0-23.2 6.8-28.6 17.7L224 32H128c-13.4 0-24.8 8.2-29.6 19.8L38.8 5.1zM149.2 467c1.6 25.3 22.6 45 47.9 45H442.9c20.6 0 38.3-13 45.1-31.5L132.5 200.4 149.2 467z\"]\n};\nvar faArrowLeftLong = {\n prefix: 'fas',\n iconName: 'arrow-left-long',\n icon: [512, 512, [\"long-arrow-left\"], \"f177\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128z\"]\n};\nvar faLongArrowLeft = faArrowLeftLong;\nvar faPlugCircleCheck = {\n prefix: 'fas',\n iconName: 'plug-circle-check',\n icon: [576, 512, [], \"e55c\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faFontCase = {\n prefix: 'fas',\n iconName: 'font-case',\n icon: [640, 512, [], \"f866\", \"M206 52.8C201.3 40.3 189.3 32 176 32s-25.3 8.3-30 20.8L2 436.8c-6.2 16.5 2.2 35 18.7 41.2s35-2.2 41.2-18.7L96.2 368H255.8L290 459.2c6.2 16.5 24.7 24.9 41.2 18.7s24.9-24.6 18.7-41.2L206 52.8zM231.8 304H120.2L176 155.1 231.8 304zM608 160c-13 0-24.1 7.7-29.2 18.8C559.4 166.9 536.5 160 512 160c-70.7 0-128 57.3-128 128v64c0 70.7 57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32V352 288 192c0-17.7-14.3-32-32-32zM576 288v64c0 35.3-28.7 64-64 64s-64-28.7-64-64V288c0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64v48c0 17.7 14.3 32 32 32h1.8l11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5h38.7c16.3 0 30-12.3 31.8-28.5L318.2 304H320c17.7 0 32-14.3 32-32V224c0-35.3-28.7-64-64-64H224zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\"]\n};\nvar faArrowDownLeft = {\n prefix: 'fas',\n iconName: 'arrow-down-left',\n icon: [384, 512, [], \"e091\", \"M32 384c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-146.7 0L342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L96 306.7 96 160c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 224z\"]\n};\nvar faFrancSign = {\n prefix: 'fas',\n iconName: 'franc-sign',\n icon: [320, 512, [], \"e18f\", \"M80 32C62.3 32 48 46.3 48 64V224v96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faFlaskRoundPoison = {\n prefix: 'fas',\n iconName: 'flask-round-poison',\n icon: [448, 512, [\"flask-poison\"], \"f6e0\", \"M328.5 172.1c-5.2-3-8.5-8.4-8.5-14.4V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H304 256 192 144 128C110.3 0 96 14.3 96 32s14.3 32 32 32v93.7c0 6-3.3 11.4-8.5 14.4l0 0c-5.3 3.1-10.4 6.4-15.4 9.9C50.8 219.7 16 281.8 16 352c0 56 22.1 106.9 58.2 144.3C84.5 507 99.3 512 114.2 512H333.8c15 0 29.7-5 40.1-15.7C409.9 458.9 432 408 432 352c0-76.8-41.6-143.8-103.5-179.9zM300 376.6c-7.1 5.2-12 13-12 21.8V408c0 13.3-10.7 24-24 24H184c-13.3 0-24-10.7-24-24v-9.6c0-8.8-4.9-16.7-12-21.8c-22.1-16.1-36-39.1-36-64.6c0-48.6 50.1-88 112-88s112 39.4 112 88c0 25.5-13.9 48.6-36 64.6zM184 336a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm104-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faFlaskPoison = faFlaskRoundPoison;\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [320, 512, [], \"f026\", \"M320 64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L131.8 160H64c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64h67.8L266.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S320 460.6 320 448V64z\"]\n};\nvar faBookCircleArrowRight = {\n prefix: 'fas',\n iconName: 'book-circle-arrow-right',\n icon: [640, 512, [], \"e0bc\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h10.8c-23.3-16.4-42.5-38.4-55.6-64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32H320.7c-.5-5.3-.7-10.6-.7-16c0-80.6 54.1-148.5 128-169.4V32c0-17.7-14.3-32-32-32H384 96zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM492.7 300.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L521.4 384H432c-8.8 0-16-7.2-16-16s7.2-16 16-16h89.4l-28.7-28.7c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faChartUser = {\n prefix: 'fas',\n iconName: 'chart-user',\n icon: [640, 512, [\"user-chart\"], \"f6a3\", \"M160 64c0-35.3 28.7-64 64-64H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H336.8c-11.8-25.5-29.9-47.5-52.4-64H576V64L224 64v49.1C205.2 102.2 183.3 96 160 96V64zm252.7 75.3c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9h88c8.8 0 16 7.2 16 16v88c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-27-27L401 273c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 55.7-55.7-27-27zM64 224a96 96 0 1 1 192 0A96 96 0 1 1 64 224zM0 485.3C0 411.7 59.7 352 133.3 352h53.3C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7H26.7C11.9 512 0 500.1 0 485.3z\"]\n};\nvar faUserChart = faChartUser;\nvar faHandsAslInterpreting = {\n prefix: 'fas',\n iconName: 'hands-asl-interpreting',\n icon: [640, 512, [\"american-sign-language-interpreting\", \"asl-interpreting\", \"hands-american-sign-language-interpreting\"], \"f2a3\", \"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7V256c0 70.7 57.3 128 128 128h72 8v-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2V256c0-70.7-57.3-128-128-128H440h-8v.3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"]\n};\nvar faAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faAslInterpreting = faHandsAslInterpreting;\nvar faHandsAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faPresentationScreen = {\n prefix: 'fas',\n iconName: 'presentation-screen',\n icon: [576, 512, [\"presentation\"], \"f685\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V288c0 35.3 28.7 64 64 64H256v34.7l-70.6 70.6c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 445.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L320 386.7V352H480c35.3 0 64-28.7 64-64V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H512 64 32zM96 64H480V288H288 96V64z\"]\n};\nvar faPresentation = faPresentationScreen;\nvar faCircleBolt = {\n prefix: 'fas',\n iconName: 'circle-bolt',\n icon: [512, 512, [], \"e0fe\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm74.1-396.4c5.8 4.7 7.6 12.9 4.2 19.6L281.9 240H352c6.8 0 12.9 4.3 15.1 10.7s.2 13.5-5.1 17.8l-160 128c-5.9 4.7-14.2 4.7-20.1-.1s-7.6-12.9-4.3-19.6L230.1 272H160c-6.8 0-12.8-4.3-15.1-10.7s-.2-13.5 5.1-17.8l160-128c5.9-4.7 14.2-4.7 20.1 .1z\"]\n};\nvar faFaceSmileHalo = {\n prefix: 'fas',\n iconName: 'face-smile-halo',\n icon: [512, 512, [], \"e38f\", \"M512 80c0 44.2-114.6 80-256 80S0 124.2 0 80S114.6 0 256 0S512 35.8 512 80zm-64 0c0-17.7-86-32-192-32S64 62.3 64 80s86 32 192 32s192-14.3 192-32zM16 272c0-41.9 10.7-81.3 29.6-115.5C98.1 178.3 173 192 256 192s157.9-13.7 210.4-35.5C485.3 190.7 496 230.1 496 272c0 132.5-107.5 240-240 240S16 404.5 16 272zm148.1 85.5c-5.8-6.7-15.9-7.4-22.6-1.6s-7.4 15.9-1.6 22.6c22.2 25.7 61 53.5 116.1 53.5s93.8-27.9 116.1-53.5c5.8-6.7 5.1-16.8-1.6-22.6s-16.8-5.1-22.6 1.6C330 378.2 299.4 400 256 400s-74-21.8-91.9-42.5zm53.5-56.7l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 260.4 120 278.1 120 296c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0zm160 0l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 260.4 280 278.1 280 296c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0z\"]\n};\nvar faCartCircleArrowDown = {\n prefix: 'fas',\n iconName: 'cart-circle-arrow-down',\n icon: [640, 512, [], \"e3ef\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H76.1l60.3 316.5c2.2 11.3 12.1 19.5 23.6 19.5H320.7c-.5-5.3-.7-10.6-.7-16c0-10.9 1-21.6 2.9-32h-143l-9.1-48H339.2c29.1-57 88.4-96 156.8-96c14.3 0 28.3 1.7 41.6 4.9l35-124.3C578.3 52.3 563 32 541.8 32H122l-2.4-12.5C117.4 8.2 107.5 0 96 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm320 0a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm67.3-147.3c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0l-56-56c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 393.4V304c0-8.8 7.2-16 16-16s16 7.2 16 16v89.4l28.7-28.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faHousePersonReturn = {\n prefix: 'fas',\n iconName: 'house-person-return',\n icon: [640, 512, [\"house-person-arrive\", \"house-return\"], \"e011\", \"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0L388.9 125.9c-19 14.8-34.4 34.5-44.1 57.7l-10.7 25.8-10.7 5.4c-31.6 15.8-44.4 54.3-28.6 85.9c15.4 30.9 52.5 43.8 83.6 29.7l-6.8 7.5c-9 9.8-15.4 21.7-18.6 34.7L342 416H112c-26.5 0-48-21.5-48-48V256H32c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM128 208v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16zM432 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm84.3 200.5c-1-.4-1.9-.8-2.9-1.2l16.9 63.5c5.6 21.1 .1 43.6-14.7 59.7l-70.7 77.1-22 88.1c-4.3 17.1-21.7 27.6-38.8 23.3s-27.6-21.7-23.3-38.8l23-92.1c1.9-7.8 5.8-14.9 11.2-20.8l49.5-54-19.3-65.5-9.6 23c-4.4 10.6-12.5 19.3-22.8 24.5l-26.7 13.3c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L359 232.7l15.3-36.8c17.1-41.1 57.3-67.9 101.9-67.9c22.8 0 45.3 4.8 66.1 14l8 3.5c32.9 14.6 58.1 42.4 69.4 76.5l2.6 7.8c5.6 16.8-3.5 34.9-20.2 40.5s-34.9-3.5-40.5-20.2l-2.6-7.8c-5.7-17.1-18.3-30.9-34.7-38.2l-8-3.5zm30 135.1l25 62.4 59.4 59.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L523.7 441c-4.6-4.6-8.2-10.1-10.6-16.1l-14.5-36.2 40.7-44.4c2.5-2.7 4.8-5.6 7-8.6z\"]\n};\nvar faHousePersonArrive = faHousePersonReturn;\nvar faHouseReturn = faHousePersonReturn;\nvar faMessageXmark = {\n prefix: 'fas',\n iconName: 'message-xmark',\n icon: [512, 512, [\"comment-alt-times\", \"message-times\"], \"f4ab\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm175 63c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faCommentAltTimes = faMessageXmark;\nvar faMessageTimes = faMessageXmark;\nvar faFileCertificate = {\n prefix: 'fas',\n iconName: 'file-certificate',\n icon: [512, 512, [\"file-award\"], \"f5f3\", \"M128 64c0-35.3 28.7-64 64-64H352V128c0 17.7 14.3 32 32 32H512V448c0 35.3-28.7 64-64 64H221.3c1.8-5.1 2.7-10.5 2.7-16V416c1.3-.5 2.5-1 3.8-1.5c6.8-3 14.3-7.8 20.6-15.5c6.4-7.9 10.1-17.2 11.4-27.1c.5-3.6 .8-5.7 1.1-7.1c1.1-.9 2.8-2.3 5.6-4.5c19.9-15.4 27.1-42.2 17.5-65.5c-1.4-3.3-2.1-5.4-2.6-6.7c.5-1.4 1.2-3.4 2.6-6.7c9.5-23.3 2.4-50.1-17.5-65.5c-2.8-2.2-4.5-3.6-5.6-4.5c-.3-1.4-.6-3.6-1.1-7.1c-3.4-24.9-23-44.6-47.9-47.9c-3.6-.5-5.7-.8-7.1-1.1c-.9-1.1-2.3-2.8-4.5-5.6c-15.4-19.9-42.2-27.1-65.5-17.5c-2.6 1.1-5.1 2.3-6.6 3l-.1 .1V64zm384 64H384V0L512 128zM109.2 161.6L125 168c1.9 .8 4.1 .8 6.1 0l15.8-6.5c10-4.1 21.5-1 28.1 7.5l10.5 13.5c1.3 1.7 3.2 2.7 5.2 3l16.9 2.3c10.7 1.5 19.1 9.9 20.5 20.5l2.3 16.9c.3 2.1 1.4 4 3 5.2l13.5 10.5c8.5 6.6 11.6 18.1 7.5 28.1L248 285c-.8 1.9-.8 4.1 0 6.1l6.5 15.8c4.1 10 1 21.5-7.5 28.1l-13.5 10.5c-1.7 1.3-2.7 3.2-3 5.2l-2.3 16.9c-1.5 10.7-9.9 19.1-20.5 20.6L192 390.2V496c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L128 483.2 88.9 509.3c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1V390.2l-15.5-2.1c-10.7-1.5-19.1-9.9-20.5-20.6l-2.3-16.9c-.3-2.1-1.4-4-3-5.2L9.1 334.9c-8.5-6.6-11.6-18.1-7.5-28.1L8 291c.8-1.9 .8-4.1 0-6.1L1.6 269.2c-4.1-10-1-21.5 7.5-28.1l13.5-10.5c1.7-1.3 2.7-3.2 3-5.2l2.3-16.9c1.5-10.7 9.9-19.1 20.5-20.5l16.9-2.3c2.1-.3 4-1.4 5.2-3l10.5-13.5c6.6-8.5 18.1-11.6 28.1-7.5zM192 288A64 64 0 1 0 64 288a64 64 0 1 0 128 0z\"]\n};\nvar faFileAward = faFileCertificate;\nvar faUserDoctorHairLong = {\n prefix: 'fas',\n iconName: 'user-doctor-hair-long',\n icon: [448, 512, [], \"e459\", \"M304 128c0-11.4-2.4-22.2-6.7-32H296c-20.5 0-38.7-9.6-50.4-24.5C231.9 95.7 205.8 112 176 112H145.6c-1 5.2-1.6 10.5-1.6 16v16c0 44.2 35.8 80 80 80s80-35.8 80-80V128zM96 128C96 57.3 153.3 0 224 0s128 57.3 128 128v11c0 33.9 13.5 66.5 37.5 90.5l3.9 3.9c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H224 70.6C58.1 272 48 261.9 48 249.4c0-6 2.4-11.8 6.6-16l3.9-3.9c24-24 37.5-56.6 37.5-90.5V128zM288 320v42c-27.6 7.1-48 32.2-48 62v40c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16s-7.2-16-16-16V424c0-17.7 14.3-32 32-32s32 14.3 32 32v24c-8.8 0-16 7.2-16 16s7.2 16 16 16h16c8.8 0 16-7.2 16-16V424c0-29.8-20.4-54.9-48-62V323.4c73.1 15.3 128 80.2 128 157.8c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-77.7 54.9-142.5 128-157.8v46.9c-23.1 6.9-40 28.3-40 53.7c0 30.9 25.1 56 56 56s56-25.1 56-56c0-25.4-16.9-46.8-40-53.7V320l1.3 0H286.7l1.3 0zM120 424a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faCameraSecurity = {\n prefix: 'fas',\n iconName: 'camera-security',\n icon: [448, 512, [\"camera-home\"], \"f8fe\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H310l59 36.9c12.1 7.6 17.7 22.2 13.8 36S366.3 512 352 512H96c-14.3 0-26.8-9.5-30.8-23.2s1.7-28.4 13.8-36L138 416H64c-35.3 0-64-28.7-64-64V64zM128 208a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0A128 128 0 1 0 96 208a128 128 0 1 0 256 0z\"]\n};\nvar faCameraHome = faCameraSecurity;\nvar faGear = {\n prefix: 'fas',\n iconName: 'gear',\n icon: [512, 512, [9881, \"cog\"], \"f013\", \"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nvar faCog = faGear;\nvar faDropletSlash = {\n prefix: 'fas',\n iconName: 'droplet-slash',\n icon: [640, 512, [\"tint-slash\"], \"f5c7\", \"M320 512c53.2 0 101.4-21.6 136.1-56.6l-298.3-235C140 257.1 128 292.3 128 320c0 106 86 192 192 192zM505.2 370.7c4.4-16.1 6.8-33.1 6.8-50.7c0-91.2-130.2-262.3-166.6-308.3C339.4 4.2 330.5 0 320.9 0h-1.8c-9.6 0-18.5 4.2-24.5 11.7C277.8 33 240.7 81.3 205.8 136L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L505.2 370.7zM224 336c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faTintSlash = faDropletSlash;\nvar faBookHeart = {\n prefix: 'fas',\n iconName: 'book-heart',\n icon: [448, 512, [], \"f499\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zm64-258.7c0 16.2 6.5 31.8 17.9 43.3l82.7 82.7c6.2 6.2 16.4 6.2 22.6 0l82.7-82.7c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3c-16.2 0-31.8 6.5-43.3 17.9l-7.4 7.4-7.4-7.4C221.1 102.5 205.5 96 189.3 96c-33.8 0-61.3 27.4-61.3 61.3z\"]\n};\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [128332], \"f678\", \"M400 0c5 0 9.8 2.4 12.8 6.4c34.7 46.3 78.1 74.9 133.5 111.5l0 0 0 0c5.2 3.4 10.5 7 16 10.6c28.9 19.2 45.7 51.7 45.7 86.1c0 28.6-11.3 54.5-29.8 73.4H221.8c-18.4-19-29.8-44.9-29.8-73.4c0-34.4 16.7-66.9 45.7-86.1c5.4-3.6 10.8-7.1 16-10.6l0 0 0 0C309.1 81.3 352.5 52.7 387.2 6.4c3-4 7.8-6.4 12.8-6.4zM288 512V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H192c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H560V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H448V454c0-19-8.4-37-23-49.2L400 384l-25 20.8C360.4 417 352 435 352 454v58H288zM70.4 5.2c5.7-4.3 13.5-4.3 19.2 0l16 12C139.8 42.9 160 83.2 160 126v2H0v-2C0 83.2 20.2 42.9 54.4 17.2l16-12zM0 160H160V296.6c-19.1 11.1-32 31.7-32 55.4V480c0 9.6 2.1 18.6 5.8 26.8c-6.6 3.4-14 5.2-21.8 5.2H48c-26.5 0-48-21.5-48-48V176 160z\"]\n};\nvar faDuck = {\n prefix: 'fas',\n iconName: 'duck',\n icon: [512, 512, [129414], \"f6d8\", \"M400.7 224c-.4 0-.7 .3-.7 .7v0 24c0 6.6 2.8 12.8 7.2 17.7C427.6 289.1 440 319.1 440 352c0 70.7-57.3 128-128 128H196C87.8 480 0 392.2 0 284v-5.4C0 266.1 10.1 256 22.6 256c6 0 11.8 2.4 16 6.6L54 278c6.2 6.2 15.2 8.5 23.6 6.1l172.8-49.4c10.4-3 15.7-14.5 7.8-21.7v0c-21-19-34.1-46.5-34.1-77c0-57.4 46.6-104 104-104c53.8 0 98.1 40.9 103.5 93.3c0 .4 .3 .6 .7 .7v0c10.5 1.3 21.2 1.3 31.8 0l35.3-4.4c6.8-.8 12.8 4.4 12.8 11.3c0 50.3-40.8 91.1-91.1 91.1H400.7zM368 136a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM340.6 296.9c.5-8.8-6.2-16.4-15-16.9s-16.4 6.2-16.9 15c-2.4 41.2-32.6 79-77.3 90.1c-40.3 10.1-80.5-4.6-103.7-33.5c-5.5-6.9-15.6-8-22.5-2.5s-8 15.6-2.5 22.5c31.1 38.7 84 57.6 136.4 44.5c58-14.5 98.3-63.8 101.5-119.3z\"]\n};\nvar faMosquito = {\n prefix: 'fas',\n iconName: 'mosquito',\n icon: [640, 512, [], \"e52b\", \"M463.7 505.9c9.8-8.9 10.7-24.3 2.1-34.3l-42.1-49 0-54.7c0-5.5-1.8-10.8-5.1-15.1L352 266.3l0-.3L485.4 387.8C542.4 447.6 640 405.2 640 320.6c0-47.9-34-88.3-79.4-94.2l-153-23.9 40.8-40.9c7.8-7.8 9.4-20.1 3.9-29.8L428.5 90.1l38.2-50.9c8-10.6 6.1-25.9-4.3-34.1s-25.2-6.3-33.2 4.4l-48 63.9c-5.9 7.9-6.6 18.6-1.7 27.2L402.2 140 352 190.3l0-38.2c0-14.9-10.2-27.4-24-31l0-57.2c0-4.4-3.6-8-8-8s-8 3.6-8 8l0 57.2c-13.8 3.6-24 16.1-24 31l0 38.1L237.8 140l22.6-39.5c4.9-8.6 4.2-19.3-1.7-27.2l-48-63.9c-8-10.6-22.8-12.6-33.2-4.4s-12.2 23.5-4.3 34.1l38.2 50.9-23.9 41.7c-5.5 9.7-3.9 22 3.9 29.8l40.8 40.9-153 23.9C34 232.3 0 272.7 0 320.6c0 84.6 97.6 127 154.6 67.1L288 266l0 .3-66.5 86.4c-3.3 4.3-5.1 9.6-5.1 15.1l0 54.7-42.1 49c-8.6 10.1-7.7 25.5 2.1 34.3s24.7 7.9 33.4-2.1l48-55.9c3.8-4.4 5.9-10.2 5.9-16.1l0-55.4L288 344.7l0 63.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-63.1 24.3 31.6 0 55.4c0 5.9 2.1 11.7 5.9 16.1l48 55.9c8.6 10.1 23.6 11 33.4 2.1z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [512, 512, [10017], \"f69a\", \"M404.2 309.5L383.1 344h42.3l-21.1-34.5zM371.4 256l-54-88H194.6l-54 88 54 88H317.4l54-88zm65.7 0l53.4 87c3.6 5.9 5.5 12.7 5.5 19.6c0 20.7-16.8 37.4-37.4 37.4H348.7l-56.2 91.5C284.8 504.3 270.9 512 256 512s-28.8-7.7-36.6-20.5L163.3 400H53.4C32.8 400 16 383.2 16 362.6c0-6.9 1.9-13.7 5.5-19.6l53.4-87L21.5 169c-3.6-5.9-5.5-12.7-5.5-19.6C16 128.8 32.8 112 53.4 112H163.3l56.2-91.5C227.2 7.7 241.1 0 256 0s28.8 7.7 36.6 20.5L348.7 112H458.6c20.7 0 37.4 16.8 37.4 37.4c0 6.9-1.9 13.7-5.5 19.6l-53.4 87zm-54-88l21.1 34.5L425.4 168H383.1zM283 112L256 68l-27 44h54zM128.9 168H86.6l21.1 34.5L128.9 168zM107.8 309.5L86.6 344h42.3l-21.1-34.5zM229 400l27 44 27-44H229z\"]\n};\nvar faFlagSwallowtail = {\n prefix: 'fas',\n iconName: 'flag-swallowtail',\n icon: [448, 512, [\"flag-alt\"], \"f74c\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352H424c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L352 192 443.2 70.4c3.1-4.2 4.8-9.2 4.8-14.4c0-13.3-10.7-24-24-24H64z\"]\n};\nvar faFlagAlt = faFlagSwallowtail;\nvar faPersonMilitaryRifle = {\n prefix: 'fas',\n iconName: 'person-military-rifle',\n icon: [512, 512, [], \"e54b\", \"M160 39c0-13 10-23.8 22.9-24.9L334.7 1.4C344 .7 352 8 352 17.4V48c0 8.8-7.2 16-16 16H185c-13.8 0-25-11.2-25-25zm17.6 57H334.4c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L352 369.7V480c0 1.3-.1 2.5-.2 3.8L177.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9h50.4c15.9 0 31.3 2.8 45.8 7.9L421.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l13.9 8 13.9 8c7.7 4.4 10.3 14.2 5.9 21.9L416 173.9l1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L392.6 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM320 512H192c-17.7 0-32-14.3-32-32V369.7l-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8l76.1-128.8c9.4-15.8 21.7-29.3 36-40L331.1 510c-3.5 1.3-7.2 2-11.1 2zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faCarGarage = {\n prefix: 'fas',\n iconName: 'car-garage',\n icon: [640, 512, [], \"f5e2\", \"M343.8 8.8c-14.8-8.4-32.9-8.4-47.6 0L24.1 164.2C8.8 173 3.5 192.5 12.2 207.9s28.3 20.7 43.7 11.9L320 68.9 584.1 219.8c15.3 8.8 34.9 3.4 43.7-11.9s3.4-34.9-11.9-43.7L343.8 8.8zM249.8 224H390.2c6.8 0 12.8 4.3 15.1 10.6L424.3 288H215.7l19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9l-28.3 79.3C126.1 300.9 112 320.8 112 344v40 64 32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448H448v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448 384 344c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C454.1 181.3 424 160 390.2 160H249.8c-33.8 0-64 21.3-75.3 53.1zM192 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faCartShopping = {\n prefix: 'fas',\n iconName: 'cart-shopping',\n icon: [576, 512, [128722, \"shopping-cart\"], \"f07a\", \"M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faShoppingCart = faCartShopping;\nvar faBookFont = {\n prefix: 'fas',\n iconName: 'book-font',\n icon: [448, 512, [], \"e0bf\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM254.3 72.8c-2.7-5.4-8.3-8.8-14.3-8.8s-11.6 3.4-14.3 8.8l-64 128-32 64c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2L185.9 224H294.1l27.6 55.2c4 7.9 13.6 11.1 21.5 7.2s11.1-13.6 7.2-21.5l-32-64-64-128zM240 115.8L278.1 192H201.9L240 115.8z\"]\n};\nvar faShieldPlus = {\n prefix: 'fas',\n iconName: 'shield-plus',\n icon: [512, 512, [], \"e24a\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [512, 512, [], \"f493\", \"M0 64C0 46.3 14.3 32 32 32H88h48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96C14.3 96 0 81.7 0 64zM136 96H88V256h48V96zM288 64c0-17.7 14.3-32 32-32h56 48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96c-17.7 0-32-14.3-32-32zM424 96H376V256h48V96z\"]\n};\nvar faEyeDropperFull = {\n prefix: 'fas',\n iconName: 'eye-dropper-full',\n icon: [512, 512, [], \"e172\", \"M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6v42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480h42.4c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9 176.1 202.6 55.4 323.3z\"]\n};\nvar faDistributeSpacingHorizontal = {\n prefix: 'fas',\n iconName: 'distribute-spacing-horizontal',\n icon: [512, 512, [], \"e365\", \"M32 24C32 10.7 42.7 0 56 0S80 10.7 80 24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V24zM160 144c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V368c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V144zM456 0c13.3 0 24 10.7 24 24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24z\"]\n};\nvar faTabletRugged = {\n prefix: 'fas',\n iconName: 'tablet-rugged',\n icon: [448, 512, [], \"f48f\", \"M32 176L8.8 164.4C3.4 161.7 0 156.2 0 150.1V73.9c0-6.1 3.4-11.6 8.8-14.3L34.3 46.8C41.8 19.8 66.6 0 96 0H352c29.4 0 54.2 19.8 61.7 46.8l25.5 12.7c5.4 2.7 8.8 8.3 8.8 14.3v76.2c0 6.1-3.4 11.6-8.8 14.3L416 176v16l23.2 11.6c5.4 2.7 8.8 8.3 8.8 14.3v76.2c0 6.1-3.4 11.6-8.8 14.3L416 320v16l23.2 11.6c5.4 2.7 8.8 8.2 8.8 14.3v76.2c0 6.1-3.4 11.6-8.8 14.3l-25.5 12.7c-7.5 27-32.3 46.8-61.7 46.8H96c-29.4 0-54.2-19.8-61.7-46.8L8.8 452.4C3.4 449.7 0 444.2 0 438.1V361.9c0-6.1 3.4-11.6 8.8-14.3L32 336V320L8.8 308.4C3.4 305.7 0 300.2 0 294.1V217.9c0-6.1 3.4-11.6 8.8-14.3L32 192V176zM112 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H112z\"]\n};\nvar faTemperatureSnow = {\n prefix: 'fas',\n iconName: 'temperature-snow',\n icon: [576, 512, [\"temperature-frigid\"], \"f768\", \"M384 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C505.8 332.6 512 349.5 512 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM432 0C370.1 0 320 50.1 320 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8c-18.9 24.4-30.1 55-30.1 88.1c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.3-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C544 50.1 493.9 0 432 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V272c0-8.8-7.2-16-16-16s-16 7.2-16 16v50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM288 131.6l-88 50.8V126.6l35.3-35.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L200 81.4V56c0-13.3-10.7-24-24-24s-24 10.7-24 24V81.4L139.3 68.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L152 126.6v55.8l-48.3-27.9L90.7 106.3C88.5 97.7 79.7 92.7 71.2 95s-13.6 11.1-11.3 19.6l4.6 17.3-22-12.7C31 112.6 16.3 116.5 9.7 128s-2.7 26.2 8.8 32.8l22 12.7-17.3 4.6c-8.5 2.3-13.6 11.1-11.3 19.6s11.1 13.6 19.6 11.3l48.2-12.9L128 224 79.7 251.9 31.4 239c-8.5-2.3-17.3 2.8-19.6 11.3s2.8 17.3 11.3 19.6l17.3 4.6-22 12.7C7 293.8 3.1 308.5 9.7 320s21.3 15.4 32.8 8.8l22-12.7-4.6 17.3c-2.3 8.5 2.8 17.3 11.3 19.6s17.3-2.8 19.6-11.3l12.9-48.2L152 265.6v55.8l-35.3 35.3c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L152 366.6V392c0 13.3 10.7 24 24 24s24-10.7 24-24V366.6l12.7 12.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L200 321.4V265.6l67.7 39.1c5.2-13.5 12-26.2 20.3-37.9v-5.8l-64-37 64-37V131.6z\"]\n};\nvar faTemperatureFrigid = faTemperatureSnow;\nvar faMoped = {\n prefix: 'fas',\n iconName: 'moped',\n icon: [640, 512, [], \"e3b9\", \"M328 56c0-13.3 10.7-24 24-24h41.3c23.8 0 45.1 15.1 52.9 37.6l8.1 23.3 51-25.5c4.4-2.2 9.3-3.4 14.3-3.4H528c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16h-8.4c-5 0-9.9-1.2-14.3-3.4l-34.9-17.5L500 224.4c4-.3 8-.4 12-.4c43.7 0 83.3 17.5 112.1 45.8c9.5 9.3 9.6 24.5 .3 33.9s-24.5 9.6-33.9 .3C570.2 284.2 542.6 272 512 272c-55.1 0-101 39.8-110.3 92.3c-2 11.5-12 19.8-23.6 19.8H336c-.9 0-1.7 0-2.6-.1H256c0 53-43 96-96 96s-96-43-96-96H32c-17.7 0-32-14.3-32-32V320c0-70.7 57.3-128 128-128h96c17.7 0 32 14.3 32 32v64c0 17.7 14.3 32 32 32h77.3c16.8-38.5 48.4-69.2 87.6-84.7L400.8 85.4c-1.1-3.2-4.2-5.4-7.6-5.4H352c-13.3 0-24-10.7-24-24zM128 96h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32 336c26.5 0 48-21.5 48-48H112c0 26.5 21.5 48 48 48zm352 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm0-144a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faFaceSmilePlus = {\n prefix: 'fas',\n iconName: 'face-smile-plus',\n icon: [640, 512, [\"smile-plus\"], \"f5b9\", \"M544 0c-13.3 0-24 10.7-24 24V72H472c-13.3 0-24 10.7-24 24s10.7 24 24 24h48v48c0 13.3 10.7 24 24 24s24-10.7 24-24V120h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H568V24c0-13.3-10.7-24-24-24zM224 512a224 224 0 1 0 0-448 224 224 0 1 0 0 448zM144.4 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM140 346.1c20.5 23.3 50.6 37.9 84 37.9s63.5-14.6 84-37.9c5.8-6.6 16-7.3 22.6-1.4s7.3 16 1.4 22.6C305.6 397.1 267 416 224 416s-81.6-18.9-108-48.7c-5.8-6.6-5.2-16.7 1.4-22.6s16.7-5.2 22.6 1.4z\"]\n};\nvar faSmilePlus = faFaceSmilePlus;\nvar faRadioTuner = {\n prefix: 'fas',\n iconName: 'radio-tuner',\n icon: [512, 512, [\"radio-alt\"], \"f8d8\", \"M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192v4V304 448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H218.5L494.8 47zM320 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 336H208c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 64h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 224c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32z\"]\n};\nvar faRadioAlt = faRadioTuner;\nvar faFaceSwear = {\n prefix: 'fas',\n iconName: 'face-swear',\n icon: [640, 512, [], \"e399\", \"M320 0C178.6 0 64 114.6 64 256H576C576 114.6 461.4 0 320 0zM240.4 224c-17.7 0-32-14.3-32-32c0-8.8 3.6-16.8 9.3-22.6l-30.7-10.2c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1l96 32c8.4 2.8 12.9 11.9 10.1 20.2s-11.9 12.9-20.2 10.1l-10.9-3.6c.2 1.5 .3 2.9 .3 4.4c0 17.7-14.3 32-32 32zm192-32c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-1.6 .1-3.2 .3-4.7l-11.7 3.9c-8.4 2.8-17.4-1.7-20.2-10.1s1.7-17.4 10.1-20.2l96-32c8.4-2.8 17.4 1.7 20.2 10.1s-1.7 17.4-10.1 20.2l-30.2 10.1c5.9 5.8 9.5 13.9 9.5 22.8zM48 288c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H48zm352 96H384v32h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H384v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V448H320v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V448H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V384H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V336c0-8.8 7.2-16 16-16s16 7.2 16 16v16h32V336c0-8.8 7.2-16 16-16s16 7.2 16 16v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-80 0v32h32V384H320zm250.4-52.1c6.7 5.8 7.5 15.8 1.7 22.6l-96 112c-5.8 6.7-15.8 7.5-22.6 1.7s-7.5-15.8-1.7-22.6l96-112c5.8-6.7 15.8-7.5 22.6-1.7zM448 352a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM208 320c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM184 456a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM128 336v1.8c4.6 .8 8.7 1.7 12.1 2.6c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-7.9-2.1-18.5-3.9-26.8-2.9c-4.1 .5-6.3 1.4-7.4 2.2c-.6 .4-1.2 .9-1.5 2.9c-.2 1-.1 1.6-.1 1.8c.1 .1 .5 .6 1.5 1.3c3.7 2.5 9.6 4.4 19.2 7.3l.7 .2c8 2.4 19.1 5.8 27.6 11.9c4.7 3.4 9.3 8.2 12.1 14.7c2.9 6.6 3.4 13.8 2.2 21.1c-2 11.5-7.9 20.5-17 25.9c-4.9 3-10.1 4.6-15.3 5.4v.8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-3c-8.1-1.9-15.3-4.2-20.2-5.9c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c9.5 3.2 21.9 6.9 32 7.1c5 .1 7.6-.8 8.8-1.5l0 0c.5-.3 1.4-.9 2-4c.2-1.2 .2-1.9 .2-2.3c0-.4-.1-.6-.1-.6l0 0c0-.1-.3-.6-1.6-1.6c-3.5-2.5-9.3-4.6-18.7-7.4L106 414c-7.7-2.3-18.3-5.5-26.4-11c-4.7-3.2-9.4-7.7-12.4-14.1c-3.1-6.5-3.7-13.7-2.5-20.9c1.8-10.2 7-18.1 14.5-23.5c5.3-3.8 11.2-5.9 16.9-7V336c0-8.8 7.2-16 16-16s16 7.2 16 16zM96.1 375.4a.1 .1 0 1 0 .1-.1 .1 .1 0 1 0 -.1 .1z\"]\n};\nvar faWaterArrowDown = {\n prefix: 'fas',\n iconName: 'water-arrow-down',\n icon: [576, 512, [\"water-lower\"], \"f774\", \"M354.5 104.3L320 135.7V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V135.7l-34.5-31.3c-13.1-11.9-33.3-10.9-45.2 2.2s-10.9 33.3 2.2 45.2l88 80c12.2 11.1 30.8 11.1 43.1 0l88-80c13.1-11.9 14-32.1 2.2-45.2s-32.1-14-45.2-2.2zm-85 189.6C247 309.4 219.5 320 192 320c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 373.7 159 384 192 384c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 309.2 410.9 320 384 320c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zm37 128c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faWaterLower = faWaterArrowDown;\nvar faScannerTouchscreen = {\n prefix: 'fas',\n iconName: 'scanner-touchscreen',\n icon: [512, 512, [], \"f48a\", \"M152 0h16c13.3 0 24 10.7 24 24V64H128V24c0-13.3 10.7-24 24-24zM0 160c0-35.3 28.7-64 64-64H288c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm64 16V432c0 8.8 7.2 16 16 16H272c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM288 24c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24V64H288V24zM240 0c8.8 0 16 7.2 16 16V64H224V16c0-8.8 7.2-16 16-16zM384 16c0-8.8 7.2-16 16-16s16 7.2 16 16V272c0 8.8-7.2 16-16 16s-16-7.2-16-16V16zM472 0h16c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24H472c-13.3 0-24-10.7-24-24V24c0-13.3 10.7-24 24-24z\"]\n};\nvar faCircle7 = {\n prefix: 'fas',\n iconName: 'circle-7',\n icon: [512, 512, [], \"e0f4\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 128H328c8.4 0 16.3 4.4 20.6 11.7s4.5 16.2 .5 23.7l-112 208c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l93-172.6H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faPlugCirclePlus = {\n prefix: 'fas',\n iconName: 'plug-circle-plus',\n icon: [576, 512, [], \"e55f\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faPersonSkiJumping = {\n prefix: 'fas',\n iconName: 'person-ski-jumping',\n icon: [512, 512, [\"ski-jump\"], \"f7c7\", \"M352 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM128 128c0-17.7 14.3-32 32-32H304.5c46 0 65.7 58.4 29 86.2L230.1 260.8l-6.4 7.5c-2.4 2.8-4.4 6.1-5.7 9.6L179.5 380.6 433.7 249.1c18.6-9.6 30.3-28.8 30.3-49.7V192c0-13.3 10.7-24 24-24s24 10.7 24 24v7.3c0 38.9-21.7 74.5-56.2 92.4L35 509.3C23.3 515.4 8.8 510.8 2.7 499s-1.5-26.3 10.3-32.3l111.2-57.5c-10.7-8.4-15.2-23-10.2-36.4l44-117.4c3.9-10.5 9.7-20.2 17-28.8L232.1 160H160c-17.7 0-32-14.3-32-32z\"]\n};\nvar faSkiJump = faPersonSkiJumping;\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M224 109.3V217.6L183.3 242c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V283.2c0-16.9-8.8-32.5-23.3-41.2L416 217.6V109.3c0-8.5-3.4-16.6-9.4-22.6L331.3 11.3c-6.2-6.2-16.4-6.2-22.6 0L233.4 86.6c-6 6-9.4 14.1-9.4 22.6zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faWaterArrowUp = {\n prefix: 'fas',\n iconName: 'water-arrow-up',\n icon: [576, 512, [\"water-rise\"], \"f775\", \"M354.5 135.7L320 104.3V208c0 17.7-14.3 32-32 32s-32-14.3-32-32V104.3l-34.5 31.3c-13.1 11.9-33.3 10.9-45.2-2.2s-10.9-33.3 2.2-45.2l88-80c12.2-11.1 30.8-11.1 43.1 0l88 80c13.1 11.9 14 32.1 2.2 45.2s-32.1 14-45.2 2.2zm-85 158.2c11.1-7.9 25.9-7.9 37 0C329 309.4 356.5 320 384 320c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 373.7 417 384 384 384c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 309.2 165.1 320 192 320c27.5 0 55-10.6 77.5-26.1zm37 128C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faWaterRise = faWaterArrowUp;\nvar faWaveformLines = {\n prefix: 'fas',\n iconName: 'waveform-lines',\n icon: [640, 512, [\"waveform-path\"], \"f8f2\", \"M352 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM544 96c0-17.7-14.3-32-32-32s-32 14.3-32 32V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96zM256 128c0-17.7-14.3-32-32-32s-32 14.3-32 32V384c0 17.7 14.3 32 32 32s32-14.3 32-32V128zm192 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 17.7 14.3 32 32 32s32-14.3 32-32V160zM160 224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32s32-14.3 32-32V224zM0 256a32 32 0 1 0 64 0A32 32 0 1 0 0 256zm576 0a32 32 0 1 0 64 0 32 32 0 1 0 -64 0z\"]\n};\nvar faWaveformPath = faWaveformLines;\nvar faSplit = {\n prefix: 'fas',\n iconName: 'split',\n icon: [512, 512, [], \"e254\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160H346.5c-8.5 0-16.6 3.4-22.6 9.4L237.3 256l86.6 86.6c6 6 14.1 9.4 22.6 9.4H384V320c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V416H346.5c-25.5 0-49.9-10.1-67.9-28.1L178.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H178.7l99.9-99.9c18-18 42.4-28.1 67.9-28.1H384V64c0-12.9 7.8-24.6 19.8-29.6z\"]\n};\nvar faFilmCanister = {\n prefix: 'fas',\n iconName: 'film-canister',\n icon: [576, 512, [\"film-cannister\"], \"f8b7\", \"M128 0C110.3 0 96 14.3 96 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32s-14.3-32-32-32V96c17.7 0 32-14.3 32-32s-14.3-32-32-32H256c0-17.7-14.3-32-32-32H128zM352 128V416H480c17.7 0 32-14.3 32-32V352c0-17.7 14.3-32 32-32s32-14.3 32-32V160c0-17.7-14.3-32-32-32H352zm56 40h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H408c-8.8 0-16-7.2-16-16V184c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H504c-8.8 0-16-7.2-16-16V184zM408 328h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H408c-8.8 0-16-7.2-16-16V344c0-8.8 7.2-16 16-16z\"]\n};\nvar faFilmCannister = faFilmCanister;\nvar faFolderXmark = {\n prefix: 'fas',\n iconName: 'folder-xmark',\n icon: [512, 512, [\"folder-times\"], \"f65f\", \"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM175 207c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faFolderTimes = faFolderXmark;\nvar faToiletPaperBlank = {\n prefix: 'fas',\n iconName: 'toilet-paper-blank',\n icon: [640, 512, [\"toilet-paper-alt\"], \"f71f\", \"M384 192c0-65.5 13.2-142.4 60.2-192H160C107 0 64 86 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512H285.9c22.3 0 45.4-12.1 55.4-36.1C356.7 439 384 350.8 384 192zm224 0C608 86 565 0 512 0s-96 86-96 192s43 192 96 192s96-86 96-192zm-64 0c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z\"]\n};\nvar faToiletPaperAlt = faToiletPaperBlank;\nvar faTabletScreen = {\n prefix: 'fas',\n iconName: 'tablet-screen',\n icon: [448, 512, [\"tablet-android-alt\"], \"f3fc\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 448c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM384 64H64V384H384V64z\"]\n};\nvar faTabletAndroidAlt = faTabletScreen;\nvar faHexagonVerticalNftSlanted = {\n prefix: 'fas',\n iconName: 'hexagon-vertical-nft-slanted',\n icon: [448, 512, [], \"e506\", \"M260.9 495.5c-22.3 12.9-49.7 12.9-72 0L36 407.2C13.7 394.4 0 370.6 0 344.9V168.3c0-25.7 13.7-49.5 36-62.4L188.9 17.7c22.3-12.9 49.7-12.9 72 0l152.9 88.3c22.3 12.9 36 36.6 36 62.4V344.9c0 25.7-13.7 49.5-36 62.4L260.9 495.5zm11.1-372c0-5.7-3.1-11-8.1-13.9L216.1 82.3c-2-1.2-4.3-2-6.8-2.2c-.5 0-1-.1-1.4-.1l-.1 0c-3.3 0-6.3 1-8.8 2.6c-1.5 1-2.9 2.2-4 3.7c-1.2 1.5-2.1 3.3-2.6 5.2c-.4 1.6-.6 3.1-.6 4.7V256.6v144c0 8.8 7.2 16 16 16s16-7.2 16-16v-128h32c8.8 0 16-7.2 16-16s-7.2-16-16-16h-32v-117l24.2 13.8c10.7 6.1 23.9-1.6 23.9-13.9zm16 27.4c0 5.7 3.1 11 8.1 13.9l23.8 13.6V352.6c0 8.8 7.2 16 16 16s16-7.2 16-16V196.6l16.2 9.3c7.7 4.4 17.4 1.7 21.8-6s1.7-17.4-6-21.8l-72-41.1c-10.7-6.1-23.9 1.6-23.9 13.9zM143.8 128.6c-8.8 0-16 7.2-16 16V270L95 171.5c-2.5-7.4-10-12-17.7-10.7s-13.4 7.9-13.4 15.8v160c0 8.8 7.2 16 16 16s16-7.2 16-16V275.2l32.8 98.5c2.5 7.4 10 12 17.7 10.7s13.4-7.9 13.4-15.8v-224c0-8.8-7.2-16-16-16z\"]\n};\nvar faFolderMusic = {\n prefix: 'fas',\n iconName: 'folder-music',\n icon: [512, 512, [], \"e18d\", \"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416zM352 192c0-5.2-2.6-10.2-6.9-13.2s-9.8-3.7-14.7-1.8l-128 48c-6.2 2.3-10.4 8.3-10.4 15v32 81.8c-5-1.2-10.4-1.8-16-1.8c-26.5 0-48 14.3-48 32s21.5 32 48 32s48-14.3 48-32V283.1l96-36v74.7c-5-1.2-10.4-1.8-16-1.8c-26.5 0-48 14.3-48 32s21.5 32 48 32s48-14.3 48-32V224 192z\"]\n};\nvar faDisplayMedical = {\n prefix: 'fas',\n iconName: 'display-medical',\n icon: [576, 512, [\"desktop-medical\"], \"e166\", \"M0 64C0 28.7 28.7 0 64 0H512c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H336l10.7 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32h69.3L240 416H64c-35.3 0-64-28.7-64-64V64zm64 0V352H512V64H64zm192 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240H208c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16h48V128z\"]\n};\nvar faDesktopMedical = faDisplayMedical;\nvar faShareAll = {\n prefix: 'fas',\n iconName: 'share-all',\n icon: [576, 512, [], \"f367\", \"M366.6 39.5c9.1-9.6 24.3-10 33.9-.9L542.2 173.2c19.9 18.9 19.9 50.7 0 69.6L400.5 377.4c-9.6 9.1-24.8 8.7-33.9-.9s-8.7-24.8 .9-33.9L509.2 208 367.5 73.4c-9.6-9.1-10-24.3-.9-33.9zM224 64c0-12.6 7.4-24.1 19-29.2s25-3 34.4 5.4l160 144c6.7 6.1 10.6 14.7 10.6 23.8s-3.8 17.7-10.6 23.8l-160 144c-9.4 8.5-22.9 10.6-34.4 5.4s-19-16.6-19-29.2V288H192c-53 0-96 43-96 96c0 30.4 12.8 47.9 22.2 56.7c5.5 5.1 9.8 12 9.8 19.5c0 10.9-8.8 19.7-19.7 19.7c-2.8 0-5.6-.6-8.1-1.9C81.5 467.9 0 417.3 0 304c0-97.2 78.8-176 176-176h48V64z\"]\n};\nvar faPeapod = {\n prefix: 'fas',\n iconName: 'peapod',\n icon: [512, 512, [], \"e31c\", \"M464 0H416C186.2 0 0 186.2 0 416v48c0 26.5 21.5 48 48 48H96c229.8 0 416-186.2 416-416V48c0-26.5-21.5-48-48-48zM256 200a56 56 0 1 1 0 112 56 56 0 1 1 0-112zM88 368a56 56 0 1 1 112 0A56 56 0 1 1 88 368zM368 88a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faChessClock = {\n prefix: 'fas',\n iconName: 'chess-clock',\n icon: [640, 512, [], \"f43d\", \"M256 56c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v48H64c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H544V112c0-8.8-7.2-16-16-16H400c-8.8 0-16 7.2-16 16v16H200V80h32c13.3 0 24-10.7 24-24zM576 304a112 112 0 1 1 -224 0 112 112 0 1 1 224 0zm-52.7-59.3c-6.2-6.2-16.4-6.2-22.6 0l-48 48c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l48-48c6.2-6.2 6.2-16.4 0-22.6zM176 192a112 112 0 1 1 0 224 112 112 0 1 1 0-224zm-16 48v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faAxe = {\n prefix: 'fas',\n iconName: 'axe',\n icon: [640, 512, [129683], \"f6b2\", \"M374.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3L384 301.3V384c0 17.7 14.3 32 32 32c123.7 0 224-100.3 224-224c0-17.7-14.3-32-32-32H525.3l-56-56 33.4-33.4c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0L408 42.7 374.6 9.4zM448 316c45-11.6 80.4-47 92-92h32.8C560.1 286.7 510.7 336.1 448 348.8V316zM244.1 206.6L9.4 441.4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0L305.4 267.9l-61.3-61.3z\"]\n};\nvar faSquareD = {\n prefix: 'fas',\n iconName: 'square-d',\n icon: [448, 512, [], \"e268\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 96h72c70.7 0 128 57.3 128 128s-57.3 128-128 128H152c-13.3 0-24-10.7-24-24V152c0-13.3 10.7-24 24-24zm24 208h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H176V336z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z\"]\n};\nvar faMobileSignalOut = {\n prefix: 'fas',\n iconName: 'mobile-signal-out',\n icon: [512, 512, [], \"e1f0\", \"M64 64H224V0H64C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V288H288V448H64V64zm80 320c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H144zM280 0c-13.3 0-24 10.7-24 24s10.7 24 24 24c101.6 0 184 82.4 184 184c0 13.3 10.7 24 24 24s24-10.7 24-24C512 103.9 408.1 0 280 0zm8 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM256 120c0 13.3 10.7 24 24 24c48.6 0 88 39.4 88 88c0 13.3 10.7 24 24 24s24-10.7 24-24c0-75.1-60.9-136-136-136c-13.3 0-24 10.7-24 24z\"]\n};\nvar faArrowTurnUp = {\n prefix: 'fas',\n iconName: 'arrow-turn-up',\n icon: [384, 512, [\"level-up\"], \"f148\", \"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"]\n};\nvar faLevelUp = faArrowTurnUp;\nvar faU = {\n prefix: 'fas',\n iconName: 'u',\n icon: [384, 512, [117], \"55\", \"M32 32c17.7 0 32 14.3 32 32V288c0 70.7 57.3 128 128 128s128-57.3 128-128V64c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 106-86 192-192 192S0 394 0 288V64C0 46.3 14.3 32 32 32z\"]\n};\nvar faArrowUpFromDottedLine = {\n prefix: 'fas',\n iconName: 'arrow-up-from-dotted-line',\n icon: [448, 512, [], \"e09b\", \"M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 141.3V208 320c0 17.7 14.3 32 32 32s32-14.3 32-32V208 141.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM32 416a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm96 0a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm128 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm64-32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm64 32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0z\"]\n};\nvar faSquareRootVariable = {\n prefix: 'fas',\n iconName: 'square-root-variable',\n icon: [576, 512, [\"square-root-alt\"], \"f698\", \"M282.6 78.1c8-27.3 33-46.1 61.4-46.1H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H344L238.7 457c-3.6 12.3-14.1 21.2-26.8 22.8s-25.1-4.6-31.5-15.6L77.6 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H77.6c22.8 0 43.8 12.1 55.3 31.8l65.2 111.8L282.6 78.1zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0L480 274.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 320l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 365.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 320l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faSquareRootAlt = faSquareRootVariable;\nvar faLightSwitchOn = {\n prefix: 'fas',\n iconName: 'light-switch-on',\n icon: [384, 512, [], \"e019\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm96 96h64c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H160c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64zm32-64a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm0 416a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM160 128c-17.7 0-32 14.3-32 32v96H256V160c0-17.7-14.3-32-32-32H160z\"]\n};\nvar faArrowDownArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-down-arrow-up',\n icon: [576, 512, [\"sort-alt\"], \"f883\", \"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L128 370.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V370.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-96 96zm352-333.3c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L448 141.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V141.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96z\"]\n};\nvar faSortAlt = faArrowDownArrowUp;\nvar faRaindrops = {\n prefix: 'fas',\n iconName: 'raindrops',\n icon: [448, 512, [], \"f75c\", \"M102.4 133.6c-4.2 8.6-6.4 18-6.4 27.6c0 34.7 28.1 62.8 62.8 62.8h2.4c34.7 0 62.8-28.1 62.8-62.8c0-9.6-2.2-19-6.4-27.6L171.5 39.2c-2.1-4.4-6.6-7.2-11.5-7.2s-9.4 2.8-11.5 7.2l-46.1 94.4zm-96 192c-4.2 8.6-6.4 18-6.4 27.6C0 387.9 28.1 416 62.8 416h2.4c34.7 0 62.8-28.1 62.8-62.8c0-9.6-2.2-19-6.4-27.6L75.5 231.2c-2.1-4.4-6.6-7.2-11.5-7.2s-9.4 2.8-11.5 7.2L6.4 325.6zM307.8 134.8L210 294.2c-11.8 19.2-18 41.3-18 63.8c0 67.4 54.6 122 122 122h12c67.4 0 122-54.6 122-122c0-22.5-6.2-44.6-18-63.8L332.2 134.8c-2.6-4.2-7.2-6.8-12.2-6.8s-9.6 2.6-12.2 6.8z\"]\n};\nvar faDash = {\n prefix: 'fas',\n iconName: 'dash',\n icon: [512, 512, [\"minus-large\"], \"e404\", \"M0 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faMinusLarge = faDash;\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faClockFour = faClock;\nvar faInputNumeric = {\n prefix: 'fas',\n iconName: 'input-numeric',\n icon: [640, 512, [], \"e1bd\", \"M576 128V384H64V128H576zM64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm40 120c0 13.3 10.7 24 24 24h8v96H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H184V184c0-13.3-10.7-24-24-24H128c-13.3 0-24 10.7-24 24zm190.6 30.4c5.7-8 17.5-8.6 24-1.2c5.2 5.9 5 14.7-.3 20.5l-72 78c-6.5 7-8.2 17.2-4.3 25.9s12.5 14.4 22 14.4h88c13.3 0 24-10.7 24-24s-10.7-24-24-24H318.8l34.8-37.7c22-23.8 22.4-60.3 1.1-84.7c-26.9-30.7-75.4-28.4-99.2 4.9l-11.1 15.6c-7.7 10.8-5.2 25.8 5.6 33.5s25.8 5.2 33.5-5.6l11.1-15.6z\"]\n};\nvar faTruckTow = {\n prefix: 'fas',\n iconName: 'truck-tow',\n icon: [640, 512, [], \"e2b8\", \"M96 0h49.6c9.1 0 17.8 3.9 23.9 10.7L384 252V128c0-17.7 14.3-32 32-32h82.7c17 0 33.3 6.7 45.3 18.7L621.3 192c12 12 18.7 28.3 18.7 45.3V256v32 88c0 22.1-17.9 40-40 40H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48H192L96 64V176c0 26.5-21.5 48-48 48s-48-21.5-48-48V160c0-8.8 7.2-16 16-16s16 7.2 16 16v16c0 8.8 7.2 16 16 16s16-7.2 16-16V32C64 14.3 78.3 0 96 0zM576 256V237.3L498.7 160H448v96H576zM208 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm272 48a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faBackwardStep = {\n prefix: 'fas',\n iconName: 'backward-step',\n icon: [320, 512, [\"step-backward\"], \"f048\", \"M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241V96c0-17.7-14.3-32-32-32S0 78.3 0 96V416c0 17.7 14.3 32 32 32s32-14.3 32-32V271l11.5 9.6 192 160z\"]\n};\nvar faStepBackward = faBackwardStep;\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 320 544h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H576V384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H544 320 96 32zm96 64H288v64H128V384zm224 0H512v64H352V384z\"]\n};\nvar faCarBolt = {\n prefix: 'fas',\n iconName: 'car-bolt',\n icon: [512, 512, [], \"e341\", \"M74.8 96.3L39.6 196.8C16.4 206.4 0 229.3 0 256V400v48c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V400H416v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V400 256c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32H165.4c-40.8 0-77.1 25.8-90.6 64.3zM96 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM318.3 119.2L281.9 192H336c6.9 0 13 4.4 15.2 10.9s-.1 13.7-5.6 17.9l-128 96c-5.9 4.5-14.2 4.2-19.9-.5s-7.4-12.8-4.1-19.4L230.1 224H176c-6.9 0-13-4.4-15.2-10.9s.1-13.7 5.6-17.9l128-96c5.9-4.5 14.2-4.2 19.9 .5s7.4 12.8 4.1 19.4z\"]\n};\nvar faArrowsMaximize = {\n prefix: 'fas',\n iconName: 'arrows-maximize',\n icon: [512, 512, [\"expand-arrows\"], \"f31d\", \"M320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L256 210.7 141.3 96H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H64C46.3 32 32 46.3 32 64V192c0 17.7 14.3 32 32 32s32-14.3 32-32V141.3L210.7 256 96 370.7V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H141.3L256 301.3 370.7 416H320c-17.7 0-32 14.3-32 32s14.3 32 32 32H448c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v50.7L301.3 256 416 141.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H320z\"]\n};\nvar faExpandArrows = faArrowsMaximize;\nvar faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M192 96v12L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l96-12 31-3.9 1-.1 1 .1 31 3.9 96 12c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 12V96c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 256c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H132.1c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48H352c17.7 0 32 14.3 32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32c0-88.4-71.6-160-160-160H320l-22.6-22.6c-6-6-14.1-9.4-22.6-9.4H256V180.2l-32-4-32 4V224H173.3c-8.5 0-16.6 3.4-22.6 9.4L128 256H32z\"]\n};\nvar faCloudSleet = {\n prefix: 'fas',\n iconName: 'cloud-sleet',\n icon: [512, 512, [], \"f741\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zM81.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6S-3.3 490.7 1.9 478.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm272 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zM216 376v16h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V440H152c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V376c0-13.3 10.7-24 24-24s24 10.7 24 24zm256 0v16h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H472v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V440H408c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V376c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faLampStreet = {\n prefix: 'fas',\n iconName: 'lamp-street',\n icon: [512, 512, [], \"e1c5\", \"M64 176c0-61.9 50.1-112 112-112c57.4 0 104.7 43.2 111.2 98.8C207.1 176.6 144 239.9 130.6 320.1C127.7 337.6 142.3 352 160 352H480c17.7 0 32.3-14.4 29.4-31.9c-13.5-80.6-77.2-144.2-157.9-157.6C344.6 71.6 268.7 0 176 0C78.8 0 0 78.8 0 176V480c0 17.7 14.3 32 32 32s32-14.3 32-32V176zM320 448c35.3 0 64-28.7 64-64H256c0 35.3 28.7 64 64 64z\"]\n};\nvar faListRadio = {\n prefix: 'fas',\n iconName: 'list-radio',\n icon: [512, 512, [], \"e1d0\", \"M64 160A64 64 0 1 0 64 32a64 64 0 1 0 0 128zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM40 416a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm88 0A64 64 0 1 0 0 416a64 64 0 1 0 128 0zM64 232a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0 88a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faPenNibSlash = {\n prefix: 'fas',\n iconName: 'pen-nib-slash',\n icon: [640, 512, [], \"e4a1\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L450.3 327.6l28.3-94.4 2.8-9.2L352 94.6l-9.2 2.8L208.1 137.8 38.8 5.1zm29 440.7c-3.8 11.3-1 23.9 7.3 32.4L228.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-9.4 2.7-18.2 7.4-25.7l-85-67L67.8 445.8zM272 352c-7.4 0-14.4-1.7-20.7-4.7L97.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c3.6-1.2 7.1-2.8 10.5-4.6l-98.5-77.6c-8.7 9-20.9 14.6-34.4 14.6zM432.4 18.3L376.7 74.1 501.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L511.6 18.3c-21.9-21.9-57.3-21.9-79.2 0z\"]\n};\nvar faBaseballBatBall = {\n prefix: 'fas',\n iconName: 'baseball-bat-ball',\n icon: [512, 512, [], \"f432\", \"M424 0c-12.4 0-24.2 4.9-33 13.7L233.5 171.2c-10.5 10.5-19.8 22.1-27.7 34.6L132.7 321.6c-7.3 11.5-15.8 22.2-25.5 31.9L69.9 390.7l51.3 51.3 37.3-37.3c9.6-9.6 20.3-18.2 31.9-25.5l115.8-73.1c12.5-7.9 24.1-17.2 34.6-27.7L498.3 121c8.7-8.7 13.7-20.6 13.7-33s-4.9-24.2-13.7-33L457 13.7C448.2 4.9 436.4 0 424 0zm88 432a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM15 399c-9.4 9.4-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L49 399c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faSquareUpLeft = {\n prefix: 'fas',\n iconName: 'square-up-left',\n icon: [448, 512, [], \"e282\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 281.4V176c0-8.8 7.2-16 16-16H281.4c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16L264 232l66.3 66.3c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C290 366 285.1 368 280 368s-10-2-13.7-5.7L200 296l-33.4 33.4c-4.2 4.2-10 6.6-16 6.6c-12.5 0-22.6-10.1-22.6-22.6z\"]\n};\nvar faOverline = {\n prefix: 'fas',\n iconName: 'overline',\n icon: [448, 512, [], \"f876\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm192 96a176 176 0 1 0 0 352 176 176 0 1 0 0-352zM336 304a112 112 0 1 1 -224 0 112 112 0 1 1 224 0z\"]\n};\nvar faS = {\n prefix: 'fas',\n iconName: 's',\n icon: [320, 512, [115], \"53\", \"M99.1 105.4C79 114 68.2 127.2 65.2 144.8c-2.4 14.1-.7 23.2 2 29.4c2.8 6.3 7.9 12.4 16.7 18.6c19.2 13.4 48.3 22.1 84.9 32.5c1 .3 1.9 .6 2.9 .8c32.7 9.3 72 20.6 100.9 40.7c15.7 10.9 29.9 25.5 38.6 45.1c8.8 19.8 10.8 42 6.6 66.3c-7.3 42.5-35.3 71.7-71.8 87.3c-35.4 15.2-79.1 17.9-123.7 10.9l-.2 0 0 0c-24-3.9-62.7-17.1-87.6-25.6c-4.8-1.7-9.2-3.1-12.8-4.3C5.1 440.8-3.9 422.7 1.6 405.9s23.7-25.8 40.5-20.3c4.9 1.6 10.2 3.4 15.9 5.4c25.4 8.6 56.4 19.2 74.4 22.1c36.8 5.7 67.5 2.5 88.5-6.5c20.1-8.6 30.8-21.8 33.9-39.4c2.4-14.1 .7-23.2-2-29.4c-2.8-6.3-7.9-12.4-16.7-18.6c-19.2-13.4-48.3-22.1-84.9-32.5c-1-.3-1.9-.6-2.9-.8c-32.7-9.3-72-20.6-100.9-40.7c-15.7-10.9-29.9-25.5-38.6-45.1c-8.8-19.8-10.8-42-6.6-66.3l31.5 5.5L2.1 133.9C9.4 91.4 37.4 62.2 73.9 46.6c35.4-15.2 79.1-17.9 123.7-10.9c13 2 52.4 9.6 66.6 13.4c17.1 4.5 27.2 22.1 22.7 39.2s-22.1 27.2-39.2 22.7c-11.2-3-48.1-10.2-60.1-12l4.9-31.5-4.9 31.5c-36.9-5.8-67.5-2.5-88.6 6.5z\"]\n};\nvar faTimeline = {\n prefix: 'fas',\n iconName: 'timeline',\n icon: [640, 512, [], \"e29c\", \"M128 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32 97.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288v54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V288H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V169.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3V224H160V169.3zM488 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM320 392a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm16 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V144zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM160 336c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336zM272 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM256 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM368 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM352 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V240zM464 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM448 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16z\"]\n};\nvar faArrowsFromDottedLine = {\n prefix: 'fas',\n iconName: 'arrows-from-dotted-line',\n icon: [448, 512, [], \"e0a3\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32v32c0 17.7 14.3 32 32 32s32-14.3 32-32V128h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64zM192 352v32H160c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H256V352c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 224a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm96 0a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm96 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-64a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm64 32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0z\"]\n};\nvar faUsbDrive = {\n prefix: 'fas',\n iconName: 'usb-drive',\n icon: [640, 512, [], \"f8e9\", \"M64 96C28.7 96 0 124.7 0 160V352c0 35.3 28.7 64 64 64H416c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H64zm544 32H480V384H608c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32zM560 232a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm24 72a24 24 0 1 1 -48 0 24 24 0 1 1 48 0z\"]\n};\nvar faBallot = {\n prefix: 'fas',\n iconName: 'ballot',\n icon: [448, 512, [], \"f732\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm0 112c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112zm0 128c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zM80 352h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm112 32c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zm16-272H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16s7.2-16 16-16zM192 256c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"]\n};\nvar faLocationDotSlash = {\n prefix: 'fas',\n iconName: 'location-dot-slash',\n icon: [640, 512, [\"map-marker-alt-slash\"], \"f605\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L459 334.5c30-51.6 53-103.7 53-142.5C512 86 426 0 320 0C249.2 0 187.3 38.4 154 95.4L38.8 5.1zm219 171.7c6.8-28 32.1-48.8 62.2-48.8c35.3 0 64 28.7 64 64c0 24.7-13.9 46-34.4 56.7l-91.8-72zm85.9 322.4c16.2-20.2 39-49.6 62.5-83.1L128.1 196.9c4.2 88.2 117.8 239.3 168.2 302.2c12.3 15.3 35.1 15.3 47.4 0z\"]\n};\nvar faMapMarkerAltSlash = faLocationDotSlash;\nvar faCards = {\n prefix: 'fas',\n iconName: 'cards',\n icon: [640, 512, [], \"e3ed\", \"M7.5 194.9c-15.4-26.6-6.3-60.7 20.4-76.1L220.7 7.5c26.6-15.4 60.7-6.3 76.1 20.4l167 289.3c15.4 26.6 6.2 60.7-20.4 76.1L250.5 504.5c-26.6 15.4-60.7 6.2-76.1-20.4L7.5 194.9zM197 159.6c-11.1-3-22.6 3.6-25.6 14.8l-7.2 26.9-20.4 76.1c-7 26 8.5 52.7 34.4 59.7s52.7-8.5 59.7-34.4l2.4-8.8c.1-.4 .2-.8 .3-1.1l17.7 30.7-12.1 7c-6.7 3.8-8.9 12.4-5.1 19s12.4 8.9 19 5.1l48.2-27.8c6.7-3.8 8.9-12.4 5.1-19s-12.4-8.9-19-5.1l-12.1 7-17.7-30.7c.4 .1 .8 .2 1.1 .3l8.8 2.4c26 7 52.7-8.5 59.7-34.4s-8.5-52.7-34.4-59.7l-76.1-20.4L197 159.6zM459.4 420.9c41.9-24.2 56.3-77.8 32.1-119.8L354.7 64.2c1.7-.2 3.5-.2 5.3-.2H584c30.9 0 56 25.1 56 56V456c0 30.9-25.1 56-56 56H360c-13.7 0-26.2-4.9-35.9-13l135.3-78.1zm74.5-183.3L582 187.6c14-14.5 13.2-38.5-2.2-51.9c-14-11.7-34.5-9.5-46.9 3.2l-4.7 5.2-5-5.2c-12.5-12.7-33.2-15-46.7-3.2c-15.7 13.5-16.5 37.5-2.5 51.9l48.4 49.9c3 3.2 8.2 3.2 11.5 0z\"]\n};\nvar faHouseChimneyMedical = {\n prefix: 'fas',\n iconName: 'house-chimney-medical',\n icon: [576, 512, [\"clinic-medical\"], \"f7f2\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM272 192c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H320V208c0-8.8-7.2-16-16-16H272z\"]\n};\nvar faClinicMedical = faHouseChimneyMedical;\nvar faBoxingGlove = {\n prefix: 'fas',\n iconName: 'boxing-glove',\n icon: [448, 512, [129354, \"glove-boxing\"], \"f438\", \"M0 96C0 43 43 0 96 0H288c53 0 96 43 96 96v32H352c-26.2 0-49.4 12.6-64 32H144c-21.2 0-34.3-5.3-41.8-9.7c-3.8-2.3-6.3-4.4-7.7-5.8c-.7-.7-1.1-1.2-1.3-1.5l-.1-.1 0 0c-5-7.1-14.7-9-22-4.2c-7.4 4.9-9.3 14.8-4.4 22.2L80 152c-13.3 8.9-13.3 8.9-13.3 8.9l0 0 0 0 .1 .1 .1 .2 .4 .5c.3 .4 .6 .8 1.1 1.4c.9 1.1 2 2.4 3.6 4c3.1 3.1 7.6 6.9 13.8 10.7C98.3 185.3 117.2 192 144 192H273.6c-1 5.2-1.6 10.5-1.6 16c0 37.3 25.5 68.6 60 77.5c8.6 2.2 17.3-2.9 19.5-11.5s-2.9-17.3-11.5-19.5c-20.7-5.3-36-24.1-36-46.5c0-26.5 21.5-48 48-48h32c35.3 0 64 28.7 64 64v24.2c0 25.5-10.1 49.9-28.1 67.9l-49.1 49.1c-12 12-18.7 28.3-18.7 45.3V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V359.6C12.4 342 0 316.4 0 288V96zM152.9 354.7c-7.4-4.9-17.3-2.9-22.2 4.4s-2.9 17.3 4.4 22.2l28 18.7-28 18.7c-7.4 4.9-9.3 14.8-4.4 22.2s14.8 9.3 22.2 4.4L192 419.2l39.1 26.1c7.4 4.9 17.3 2.9 22.2-4.4s2.9-17.3-4.4-22.2l-28-18.7 28-18.7c7.4-4.9 9.3-14.8 4.4-22.2s-14.8-9.3-22.2-4.4L192 380.8l-39.1-26.1z\"]\n};\nvar faGloveBoxing = faBoxingGlove;\nvar faTemperatureThreeQuarters = {\n prefix: 'fas',\n iconName: 'temperature-three-quarters',\n icon: [320, 512, [\"temperature-3\", \"thermometer-3\", \"thermometer-three-quarters\"], \"f2c8\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V144c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature3 = faTemperatureThreeQuarters;\nvar faThermometer3 = faTemperatureThreeQuarters;\nvar faThermometerThreeQuarters = faTemperatureThreeQuarters;\nvar faBellSchool = {\n prefix: 'fas',\n iconName: 'bell-school',\n icon: [512, 512, [], \"f5d5\", \"M208 128a80 80 0 1 1 0 160 80 80 0 1 1 0-160zm0 288A208 208 0 1 0 208 0a208 208 0 1 0 0 416zm48-208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 448c-54 0-103.9-17.9-144-48v64c0 26.5 21.5 48 48 48H320h32 40c43.4 0 80.1-28.8 92-68.3c16.6-7.6 28-24.3 28-43.7c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15.5 7.3 29.2 18.7 38c-8 15.4-24.1 26-42.7 26H352V400c-40.1 30.1-90 48-144 48z\"]\n};\nvar faMobileScreen = {\n prefix: 'fas',\n iconName: 'mobile-screen',\n icon: [384, 512, [\"mobile-android-alt\"], \"f3cf\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM144 448c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160c-8.8 0-16 7.2-16 16zM304 64H80V384H304V64z\"]\n};\nvar faMobileAndroidAlt = faMobileScreen;\nvar faPlaneUp = {\n prefix: 'fas',\n iconName: 'plane-up',\n icon: [512, 512, [], \"e22d\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 66.3L497.8 278.5c8.9 5.9 14.2 15.9 14.2 26.6v56.7c0 10.9-10.7 18.6-21.1 15.2L320 320v80l57.6 43.2c4 3 6.4 7.8 6.4 12.8v42c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400V320L21.1 377C10.7 380.4 0 372.7 0 361.8V305.1c0-10.7 5.3-20.7 14.2-26.6L192 160V93.7z\"]\n};\nvar faFolderHeart = {\n prefix: 'fas',\n iconName: 'folder-heart',\n icon: [512, 512, [], \"e189\", \"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416zM144 253.3c0 16.2 6.5 31.8 17.9 43.3l82.7 82.7c6.2 6.2 16.4 6.2 22.6 0l82.7-82.7c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3c-16.2 0-31.8 6.5-43.3 17.9l-7.4 7.4-7.4-7.4c-11.5-11.5-27.1-17.9-43.3-17.9c-33.8 0-61.3 27.4-61.3 61.3z\"]\n};\nvar faCircleLocationArrow = {\n prefix: 'fas',\n iconName: 'circle-location-arrow',\n icon: [512, 512, [\"location-circle\"], \"f602\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM358.2 182.7l-84 196c-3.5 8.1-11.4 13.3-20.2 13.3c-1.4 0-2.9-.1-4.4-.4C239.4 389.5 232 380.4 232 370V280H142c-10.4 0-19.5-7.4-21.5-17.6c-2.1-10.2 3.3-20.5 12.9-24.6l196-84c8.5-3.5 18-1.7 24.2 4.7c6.4 6.3 8.2 15.9 4.7 24.2z\"]\n};\nvar faLocationCircle = faCircleLocationArrow;\nvar faFaceHeadBandage = {\n prefix: 'fas',\n iconName: 'face-head-bandage',\n icon: [576, 512, [], \"e37a\", \"M288 0C213.6 0 146.6 31.8 99.8 82.4c-12.5 2.5-25 5.2-37.3 8.2c-8.2 2-15.3 7.1-19.7 14.3C26.9 130.6 15 158.9 7.8 189c-2.4 10.2 .3 20.9 7.2 28.7c-2.5 2.8-4.9 5.6-7.3 8.5c-4.7 5.5-7.3 12.4-7.6 19.6C.1 249.2 0 252.6 0 256c0 31.4 5 61.7 14.4 90.1c3.8 11.6 13.9 20 26 21.7c5.6 .8 11.2 0 16.3-2C97.8 452.2 185.9 512 288 512c141.4 0 256-114.6 256-256c0-9.5-.5-18.8-1.5-28c6.1-1.1 11.9-3.9 16.5-8.3c8.3-7.9 11.8-19.6 9.2-30.7c-7.2-30.1-19.1-58.4-34.9-84.1c-3.3-5.3-8-9.5-13.5-12.1c-.6-6-2.9-11.9-6.9-16.8c-21.2-26.5-47-49.1-76.2-66.8c-6.1-3.7-13.4-5.2-20.5-4.4c-16.2 2-32.2 4.6-48.1 7.9C342.9 4.5 316 0 288 0zM219.2 98.5s0 0 0 0s0 0 0 0C241.9 96.8 264.9 96 288 96c40 0 79.3 2.5 118 7.4c2.2 .3 4.4 .6 6.6 .9c31.7 4.3 62.9 10.1 93.5 17.5c.1 .2 .2 .3 .3 .5c7.3 11.9 13.7 24.4 19 37.5c4.8 11.8 8.7 24.1 11.7 36.7c-11.9-3.6-23.9-6.9-36-10c-59.4-15.1-121.2-24-184.8-26c-.3 0-.5 0-.8 0c-9.1-.3-18.3-.4-27.5-.4c-17.1 0-34.1 .5-51 1.5c-48.2 2.8-95.4 9.6-141.2 20c-7 1.6-13.9 3.3-20.9 5c-12.1 3.1-24.1 6.4-36 10c.5-2 1-4 1.5-6c2.8-10.5 6.2-20.8 10.2-30.7c5.4-13.3 11.8-26 19.3-38c23.2-5.6 46.8-10.3 70.7-14.1c0 0 0 0 0 0c.8-.1 1.6-.3 2.5-.4c25-3.9 50.4-6.9 76.1-8.7zM50.3 226.4c41-12.2 83.3-21.3 126.6-27.1c-40.6 29.4-77 64.4-108 103.7c-8.5 10.7-16.5 21.7-24.2 33.1c-4.4-13.3-7.7-27.1-9.9-41.3C33 282.1 32 269.2 32 256c0-3 .1-6.1 .2-9.1c5.9-7 12-13.8 18.2-20.5zm126 13.6c13.5-10.8 27.6-20.9 42.1-30.4c12.7 4.2 21.9 16.2 21.9 30.4c0 17.7-14.3 32-32 32s-32-14.3-32-32zM476.2 82.4C419.3 71.1 360.6 64.9 300.6 64.1c38.3-13 78.3-22.2 119.5-27.4c13.7 8.3 26.6 17.9 38.5 28.5c6.1 5.5 11.9 11.2 17.5 17.2zm-103 315.1C356.4 382.2 330.8 368 296 368c-13.1 0-24.8 2-35.2 5.3c-8.4 2.7-17.4-2-20.1-10.5s2-17.4 10.5-20.1c13.4-4.2 28.4-6.8 44.8-6.8c44.2 0 77.2 18.3 98.8 37.9c6.5 5.9 7 16.1 1.1 22.6s-16.1 7-22.6 1.1zM368.4 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSushiRoll = {\n prefix: 'fas',\n iconName: 'sushi-roll',\n icon: [448, 512, [\"maki-roll\", \"makizushi\"], \"e48b\", \"M448 368V144C448 82.1 347.7 32 224 32S0 82.1 0 144V368c0 61.9 100.3 112 224 112s224-50.1 224-112zM308.2 198.4c-24.5 6.1-53.3 9.6-84.2 9.6c-40.7 0-77.8-6.1-106-16.1c14.8-14.8 32.8-26.7 51.4-36.1c20.5-10.3 40.9-17 56.9-20.8c18.2 27.3 46.6 49.9 82 63.4zM205.1 80.4c.8 6 2.1 11.9 3.8 17.7c-17.3 4.7-37.4 11.8-57.5 21.9c-24.5 12.3-49.9 29.4-70.3 52.7C70.2 164.1 64 154.4 64 144c0-32.8 61.7-59.8 141.1-63.6zm40.7 .2c78 4.3 138.2 31 138.2 63.4c0 9.8-5.5 19.1-15.4 27.4c-69.5-5.5-113.5-48.4-122.8-90.8z\"]\n};\nvar faMakiRoll = faSushiRoll;\nvar faMakizushi = faSushiRoll;\nvar faCarBump = {\n prefix: 'fas',\n iconName: 'car-bump',\n icon: [640, 512, [], \"f5e0\", \"M145.1 120.6L292.4 81.2c12.7-3.4 26.3 1.3 34.1 12l37.8 51.6L114.6 211.6l7-63.6c1.4-13.1 10.8-24 23.5-27.4zM58 141.1L47.8 234.2C27.4 249.4 17.2 276 24.2 302.1L57.3 425.8l12.4 46.4c4.6 17.1 22.1 27.2 39.2 22.6l30.9-8.3c17.1-4.6 27.2-22.1 22.6-39.2L150 400.9l278.2-74.5 12.4 46.4c4.6 17.1 22.1 27.2 39.2 22.6l30.9-8.3c17.1-4.6 27.2-22.1 22.6-39.2L521 301.5 487.8 177.9c-7-26.1-29.1-44.1-54.4-47L378.1 55.3c-23.4-31.9-64-46.2-102.3-36L128.5 58.8C90.3 69.1 62.3 101.7 58 141.1zm58.9 136.2a32 32 0 1 1 16.6 61.8 32 32 0 1 1 -16.6-61.8zm255.6-35.3a32 32 0 1 1 61.8-16.6 32 32 0 1 1 -61.8 16.6zM584.8 512c19.5 0 34.7-17.7 25.8-35c-18.6-36.2-56.3-61-99.7-61s-81.2 24.8-99.7 61c-8.9 17.3 6.3 35 25.8 35H584.8z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M400 96l0 .7c-5.3-.4-10.6-.7-16-.7H256c-16.5 0-32.5 2.1-47.8 6c-.1-2-.2-4-.2-6c0-53 43-96 96-96s96 43 96 96zm-16 32c3.5 0 7 .1 10.4 .3c4.2 .3 8.4 .7 12.6 1.3C424.6 109.1 450.8 96 480 96h11.5c10.4 0 18 9.8 15.5 19.9l-13.8 55.2c15.8 14.8 28.7 32.8 37.5 52.9H544c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H512c-9.1 12.1-19.9 22.9-32 32v64c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H256v32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V416c-34.9-26.2-58.7-66.3-63.2-112H68c-37.6 0-68-30.4-68-68s30.4-68 68-68h4c13.3 0 24 10.7 24 24s-10.7 24-24 24H68c-11 0-20 9-20 20s9 20 20 20H99.2c12.1-59.8 57.7-107.5 116.3-122.8c12.9-3.4 26.5-5.2 40.5-5.2H384zm64 136a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faRacquet = {\n prefix: 'fas',\n iconName: 'racquet',\n icon: [512, 512, [], \"f45a\", \"M349 64c-36 0-76.4 15.8-108.8 48.2S192 184.9 192 221c0 28.2 9.6 53.2 27.7 71.3c40.4 40.4 120.7 38.9 180.1-20.5C432.2 239.4 448 199.1 448 163c0-28.2-9.6-53.2-27.7-71.3S377.1 64 349 64zm-154 2.9C238.5 23.4 294.8 0 349 0c42.8 0 84.9 14.8 116.6 46.5S512 120.2 512 163c0 54.2-23.4 110.5-66.9 154c-54.4 54.4-131.9 78.7-198.2 61.7c-29.4-7.5-62.9-5.5-84.3 16L148.3 409c6.4 12.1 4.5 27.4-5.6 37.6l-56 56c-12.5 12.5-32.8 12.5-45.3 0l-32-32c-12.5-12.5-12.5-32.8 0-45.3l56-56c10.2-10.2 25.5-12.1 37.6-5.6l14.5-14.5c21.4-21.4 23.5-54.7 16-84C129.8 250.9 128 236 128 221c0-54.2 23.4-110.5 66.9-154z\"]\n};\nvar faCarMirrors = {\n prefix: 'fas',\n iconName: 'car-mirrors',\n icon: [576, 512, [], \"e343\", \"M167.2 117.4c4.5-12.8 16.6-21.4 30.2-21.4H378.6c13.6 0 25.7 8.6 30.2 21.4L434.9 192H141.1l26.1-74.6zM32 224h8.6c-5.4 9.4-8.6 20.3-8.6 32V400v48c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V400H448v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V400 256c0-11.7-3.1-22.6-8.6-32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H491.5L469.2 96.3C455.7 57.8 419.4 32 378.6 32H197.4c-40.8 0-77.1 25.8-90.6 64.3L84.5 160H32c-17.7 0-32 14.3-32 32s14.3 32 32 32zm64 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm352-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faIndustryWindows = {\n prefix: 'fas',\n iconName: 'industry-windows',\n icon: [576, 512, [127981, \"industry-alt\"], \"f3b3\", \"M32 64c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V215.4L316.6 131c16-8.6 35.4 3 35.4 21.1v63.2L508.6 131c16-8.6 35.4 3 35.4 21.1V304 432c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V352 304 64zM264 312c-8.8 0-16 7.2-16 16v48c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16V328c0-8.8-7.2-16-16-16H264zM120 328v48c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16V328c0-8.8-7.2-16-16-16H136c-8.8 0-16 7.2-16 16zm272-16c-8.8 0-16 7.2-16 16v48c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16V328c0-8.8-7.2-16-16-16H392z\"]\n};\nvar faIndustryAlt = faIndustryWindows;\nvar faBoltAuto = {\n prefix: 'fas',\n iconName: 'bolt-auto',\n icon: [576, 512, [], \"e0b6\", \"M317.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224C.9 240.7-2.6 254.8 2 267.3S18.7 288 32 288H143.5L66.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H240.5L317.4 44.6zM464 288c-12.1 0-23.2 6.8-28.6 17.7l-80 160c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-80-160C487.2 294.8 476.1 288 464 288zM447.8 424L464 391.6 480.2 424H447.8z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [576, 512, [\"battery-3\"], \"f242\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm208 96H96V320H288V192z\"]\n};\nvar faBattery3 = faBatteryHalf;\nvar faFluxCapacitor = {\n prefix: 'fas',\n iconName: 'flux-capacitor',\n icon: [448, 512, [], \"f8ba\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM148.7 237.3l-49-49c-15.6-15.6-15.6-40.9 0-56.6s40.9-15.6 56.6 0l49 49c1.8-6.6 2.7-13.6 2.7-20.7c0-44.2-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80c7.2 0 14.1-.9 20.7-2.7zM184 282.7c-23.9 13.8-40 39.7-40 69.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-29.6-16.1-55.5-40-69.3V352c0 22.1-17.9 40-40 40s-40-17.9-40-40V282.7zm115.3-45.4c6.6 1.8 13.6 2.7 20.7 2.7c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80c0 7.2 .9 14.1 2.7 20.7l49-49c15.6-15.6 40.9-15.6 56.6 0s15.6 40.9 0 56.6l-49 49zm-160-88.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L208 262.6V352c0 8.8 7.2 16 16 16s16-7.2 16-16V262.6l91.3-91.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L224 233.4l-84.7-84.7z\"]\n};\nvar faMountainCity = {\n prefix: 'fas',\n iconName: 'mountain-city',\n icon: [640, 512, [], \"e52e\", \"M336 0c-26.5 0-48 21.5-48 48v92.1l71.4 118.4c2.5-1.6 5.4-2.5 8.6-2.5h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16h-3.5l73.8 122.4c12.4 20.6 12.9 46.3 1.2 67.3c-.4 .8-.9 1.6-1.4 2.3H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H568V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H480V48c0-26.5-21.5-48-48-48H336zm32 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zM352 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176zm160 96c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zM224 188.9L283.8 288H223l-48 64-24.6-41.2L224 188.9zm29.4-44.2C247.1 134.3 236 128 224 128s-23.1 6.3-29.4 16.7L5.1 458.9c-6.5 10.8-6.7 24.3-.7 35.3S22 512 34.5 512H413.5c12.5 0 24-6.8 30.1-17.8s5.8-24.5-.7-35.3L253.4 144.7z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2l0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5V176c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336V300.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4V304v5.7V336zm32 0V304 278.1c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5V272c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5V432c0 44.2-86 80-192 80S0 476.2 0 432V396.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z\"]\n};\nvar faHoneyPot = {\n prefix: 'fas',\n iconName: 'honey-pot',\n icon: [448, 512, [127855], \"e418\", \"M128 32H64C46.3 32 32 46.3 32 64s14.3 32 32 32C25.1 125.2 0 171.7 0 224C0 362.8 79.6 441.9 113.3 469.1c9.3 7.5 21.1 10.9 33.1 10.9H301.6c12 0 23.7-3.3 33.1-10.9C368.4 441.9 448 362.8 448 224c0-52.3-25.1-98.8-64-128c17.7 0 32-14.3 32-32s-14.3-32-32-32H176V136c0 13.3-10.7 24-24 24s-24-10.7-24-24V32zM64 224H384c0 53.7-14.7 96.1-32.9 128H96.9C78.7 320.1 64 277.7 64 224z\"]\n};\nvar faOlive = {\n prefix: 'fas',\n iconName: 'olive',\n icon: [448, 512, [], \"e316\", \"M160 480C71.6 480 0 408.4 0 320C0 128 181.9 32 280 32c56 0 112 56 112 56s56 56 56 112c0 98.1-96 280-288 280zM287.1 192.9c30.3 30.3 69.6 40.1 87.8 21.9s8.4-57.5-21.9-87.8s-69.6-40.1-87.8-21.9s-8.4 57.5 21.9 87.8z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [9772], \"f66d\", \"M245.8 3.7c5.9-4.9 14.6-4.9 20.5 0l48 40c5.9 4.9 7.5 13.2 3.8 19.9l0 0 0 0 0 0 0 0-.1 .1-.3 .6c-.3 .5-.7 1.3-1.2 2.3c-1 2-2.6 5-4.4 8.6c-.5 .9-.9 1.9-1.4 2.9C344.9 97.4 368 134 368 176s-23.1 78.6-57.3 97.8c.5 1 1 2 1.4 2.9c1.8 3.7 3.3 6.6 4.4 8.6c.5 1 .9 1.8 1.2 2.3l.3 .6 .1 .1 0 0 0 0c3.6 6.7 2 15-3.8 19.9L272 343.5v19.8l35.6-24.5 41.1-28.2c42.8-29.4 68.4-78 68.4-130c0-31.1-9.2-61.6-26.5-87.5l-2.8-4.2c-4-6-3.5-14 1.3-19.5s12.7-7 19.2-3.7L401.1 80c7.2-14.3 7.2-14.3 7.2-14.3l0 0 0 0 .1 0 .3 .2 1 .5c.8 .4 2 1.1 3.5 1.9c2.9 1.7 7 4.1 11.8 7.3c9.6 6.4 22.5 16.1 35.4 29c25.7 25.7 52.7 65.6 52.7 119.3c0 53.1-26.4 100.5-51.2 133.6c-12.6 16.7-25.1 30.3-34.5 39.7c-4.7 4.7-8.7 8.4-11.5 10.9c-1.4 1.3-2.5 2.2-3.3 2.9l-.9 .8-.3 .2-.1 .1 0 0 0 0s0 0-10.2-12.3l10.2 12.3c-5.1 4.3-12.4 4.9-18.2 1.6l-75.6-43-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21L272 423.4v28.9c9.6 5.5 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7V424.1l-40.3 27.7C197.8 463.3 187.9 472 176 472c-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-75.6 43c-5.8 3.3-13 2.7-18.2-1.6L112 400c-10.2 12.3-10.2 12.3-10.3 12.3l0 0 0 0-.1-.1-.3-.2-.9-.8c-.8-.7-1.9-1.7-3.3-2.9c-2.8-2.5-6.7-6.2-11.5-10.9c-9.4-9.4-21.9-23-34.5-39.7C26.4 324.5 0 277.1 0 224c0-53.7 26.9-93.6 52.7-119.3c12.9-12.9 25.8-22.6 35.4-29C93 72.5 97 70 99.9 68.4c1.5-.8 2.6-1.5 3.5-1.9l1-.5 .3-.2 .1 0 0 0 0 0s0 0 7.2 14.3l-7.2-14.3c6.5-3.2 14.3-1.7 19.2 3.7s5.3 13.4 1.3 19.5l-2.8 4.2C105.2 119 96 149.5 96 180.6c0 51.9 25.6 100.6 68.4 130l41.1 28.2L240 362.6V343.5l-42.2-35.2c-5.9-4.9-7.5-13.2-3.8-19.9l0 0 0 0 0 0 .1-.1 .3-.6c.3-.5 .7-1.3 1.2-2.3c1-2 2.6-5 4.4-8.6c.5-.9 .9-1.9 1.4-2.9C167.1 254.6 144 218 144 176s23.1-78.6 57.3-97.8c-.5-1-1-2-1.4-2.9c-1.8-3.7-3.3-6.6-4.4-8.6c-.5-1-.9-1.8-1.2-2.3l-.3-.6-.1-.1 0 0 0 0 0 0c-3.6-6.7-2-15 3.8-19.9l48-40zM220.2 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1C227 210.2 232 190.9 232 176s-5-34.2-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1C285 141.8 280 161.1 280 176s5 34.2 11.8 53.1z\"]\n};\nvar faFilterList = {\n prefix: 'fas',\n iconName: 'filter-list',\n icon: [512, 512, [], \"e17c\", \"M40 64C24.2 64 9.9 73.3 3.5 87.7s-3.8 31.3 6.8 43L112 243.8V368c0 10.1 4.7 19.6 12.8 25.6l64 48c9.7 7.3 22.7 8.4 33.5 3s17.7-16.5 17.7-28.6V243.8l101.7-113c10.6-11.7 13.2-28.6 6.8-43S327.8 64 312 64H40zM352 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H352zM320 256c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H352c-17.7 0-32 14.3-32 32zM416 64c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H416z\"]\n};\nvar faOutlet = {\n prefix: 'fas',\n iconName: 'outlet',\n icon: [448, 512, [], \"e01c\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm0 224c0-61.1 30.8-99.1 49.7-116.6c8.8-8.2 20.7-11.4 32.6-11.4H301.6c12 0 23.9 3.3 32.6 11.4C353.2 156.9 384 194.9 384 256s-30.8 99-49.7 116.6c-8.8 8.2-20.7 11.4-32.6 11.4H146.4c-12 0-23.9-3.3-32.6-11.4C94.8 355 64 317.1 64 256zm96-64c-8.8 0-16 7.2-16 16v48c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm128 0c-8.8 0-16 7.2-16 16v48c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm-64 96c-13.3 0-24 10.7-24 24v16c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V312c0-13.3-10.7-24-24-24z\"]\n};\nvar faSliders = {\n prefix: 'fas',\n iconName: 'sliders',\n icon: [512, 512, [\"sliders-h\"], \"f1de\", \"M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z\"]\n};\nvar faSlidersH = faSliders;\nvar faCauldron = {\n prefix: 'fas',\n iconName: 'cauldron',\n icon: [448, 512, [], \"f6bf\", \"M160 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm112 64a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM35.1 224C16.5 257 0 297.1 0 334.4c0 37.4 11.9 69.4 32 95.5V488c0 13.3 10.7 24 24 24s24-10.7 24-24V473c40.4 25.5 91.8 39 144 39s103.6-13.5 144-39v15c0 13.3 10.7 24 24 24s24-10.7 24-24V429.9c20.1-26.1 32-58.1 32-95.5c0-37.3-16.5-77.4-35.1-110.4H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H368 224 80 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h3.1z\"]\n};\nvar faPeople = {\n prefix: 'fas',\n iconName: 'people',\n icon: [640, 512, [], \"e216\", \"M160 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9c9.8-5.9 15.3-16.2 15.5-26.9c.2 10.7 5.7 21 15.5 26.9c15.1 9.1 34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1H408v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h16v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h17.8c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3H474.2c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-3 5-4.5 10.5-4.6 15.9c-.1-5.4-1.6-10.9-4.6-15.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H145.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L88 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM528 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faFolderTree = {\n prefix: 'fas',\n iconName: 'folder-tree',\n icon: [576, 512, [], \"f802\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32v96V384c0 35.3 28.7 64 64 64H256V384H64V160H256V96H64V32zM288 192c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V192zm0 288c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V480z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M256 64H384v64H256V64zM240 0c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96v32H80c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H240c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H192V288H448v32H400c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H512V288h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V192h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H240zM96 448V384H224v64H96zm320-64H544v64H416V384z\"]\n};\nvar faCroissant = {\n prefix: 'fas',\n iconName: 'croissant',\n icon: [512, 512, [129360], \"f7f6\", \"M259.4 1.4c3.9 5.9 7 12.5 9.1 19.5l59.9 199.7c1.2 4.1 2 8.2 2.4 12.4L440.3 92.2c13.6-17.4 10.5-42.8-8.6-53.9C389.4 14 340.3 0 288 0c-9.7 0-19.2 .5-28.6 1.4zM233 330.8c-4.1-.4-8.3-1.2-12.4-2.4L20.9 268.5c-7-2.1-13.6-5.2-19.5-9.1C.5 268.8 0 278.3 0 288c0 52.3 14 101.4 38.4 143.7c11 19.1 36.4 22.2 53.9 8.6L233 330.8zM232.7 19l0 0c2 3 3.6 6.4 4.8 10c-1.2-3.6-2.8-6.9-4.8-10l0 0zm232.9 92.8L390 209l87.6 14.6c1.6 .3 3.2 .4 4.9 .4c16.3 0 29.6-13.2 29.6-29.6V189c0-4.2-.7-8.3-2.3-12.2c-10.1-25.2-24.1-48.5-41.3-69c-.9 1.4-1.9 2.7-2.9 4zM209 390l-97.1 75.6c-1.3 1-2.6 2-4 2.9c20.5 17.2 43.8 31.2 69 41.3c3.9 1.5 8 2.3 12.2 2.3h5.4c16.3 0 29.6-13.2 29.6-29.6c0-1.6-.1-3.3-.4-4.9L209 390zM19 232.7l0 0c2.3 1.5 4.7 2.8 7.3 3.8c1.2 .5 2.5 1 3.8 1.3l199.7 59.9c11.3 3.4 23.5 .3 31.8-8l28.1-28.1c8.3-8.3 11.4-20.5 8-31.8L237.8 30.1C232.5 12.2 216 0 197.4 0c-4.6 0-9.2 .7-13.5 2.3C99.7 33 33 99.7 2.3 183.9C.7 188.2 0 192.8 0 197.4c0 14.5 7.4 27.6 19 35.3l0 0z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [320, 512, [128205], \"f276\", \"M16 144a144 144 0 1 1 288 0A144 144 0 1 1 16 144zM160 80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-53 0-96 43-96 96c0 8.8 7.2 16 16 16s16-7.2 16-16c0-35.3 28.7-64 64-64zM128 480V317.1c10.4 1.9 21.1 2.9 32 2.9s21.6-1 32-2.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M34.6 288H80c8.8 0 16-7.2 16-16V72c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V40c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V72c0-22.1 17.9-40 40-40s40 17.9 40 40V272c0 8.8 7.2 16 16 16h45.4c19.1 0 34.6 15.5 34.6 34.6c0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71s-119.4-25.8-160.6-71L9 345.9c-5.8-6.4-9-14.7-9-23.3C0 303.5 15.5 288 34.6 288zM256 288c-38.4 0-76.8 35.8-90.6 50.2c-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCentSign = {\n prefix: 'fas',\n iconName: 'cent-sign',\n icon: [384, 512, [], \"e3f5\", \"M224 0c17.7 0 32 14.3 32 32V66.7c30.9 5.2 59.2 17.7 83.2 35.8c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4C279.4 137.5 252.9 128 224 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c28.9 0 55.4-9.5 76.8-25.6c14.1-10.6 34.2-7.8 44.8 6.4s7.8 34.2-6.4 44.8c-24 18-52.4 30.6-83.2 35.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C101.2 430.1 32 351.1 32 256s69.2-174.1 160-189.3V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faSwordsLaser = {\n prefix: 'fas',\n iconName: 'swords-laser',\n icon: [640, 512, [], \"e03d\", \"M135 7c-9.1 9.1-9.4 23.7-.7 33.2L360 286.9V181.8L168.2 6.3C158.7-2.4 144.1-2.1 135 7zm263 349.7l49 49 27.3-27.3 32-32L533.7 319 411.3 196.7c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8V322.7c0 12.7 5.1 24.9 14.1 33.9zM523.3 352L629 457.7l3.5-3.5c4.8-4.8 7.5-11.3 7.5-18.1s-2.7-13.3-7.5-18.1L545 330.3 523.3 352zM512 363.3L491.3 384 597 489.7 617.7 469 512 363.3zm-32 32L458.3 417l87.5 87.5c4.8 4.8 11.3 7.5 18.1 7.5s13.3-2.7 18.1-7.5l3.5-3.5L480 395.3zM247.6 211.4l-24.7 22.6c-1.6-3.9-4.7-7.2-8.7-8.8c-6-2.5-12.9-1.1-17.4 3.5l-25.4 25.4-4.9-4.9c-12.5-12.3-32.6-12.2-45 .2c-12.5 12.5-12.5 32.8 0 45.3l4.7 4.7L7.5 417.9C2.7 422.7 0 429.2 0 436s2.7 13.3 7.5 18.1l50.3 50.3c4.8 4.8 11.3 7.5 18.1 7.5s13.3-2.7 18.1-7.5L209.9 388.7c9-9 14.1-21.2 14.1-33.9v-6.6l74.3-81.2-50.7-55.5zm142.8-45.2l115.3-126c8.7-9.5 8.3-24.1-.7-33.2s-23.7-9.4-33.2-.7L343.7 123.5l46.7 42.7zM152 344a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM192 196.8V64h64V196.8c0 23.7 6.6 46.9 19 67.1L309.5 320h-171L173 263.9c12.4-20.2 19-43.4 19-67.1z\"]\n};\nvar faPersonPregnant = {\n prefix: 'fas',\n iconName: 'person-pregnant',\n icon: [384, 512, [], \"e31e\", \"M192 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM120 383c-13.8-3.6-24-16.1-24-31V296.9l-4.6 7.6c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c15-24.9 40.3-41.5 68.7-45.6c4.1-.6 8.2-1 12.5-1h1.1 12.5H192c1.4 0 2.8 .1 4.1 .3c35.7 2.9 65.4 29.3 72.1 65l6.1 32.5c44.3 8.6 77.7 47.5 77.7 94.3v32c0 17.7-14.3 32-32 32H304 264v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384h-8-8v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V383z\"]\n};\nvar faSquareU = {\n prefix: 'fas',\n iconName: 'square-u',\n icon: [448, 512, [], \"e281\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm96 136V288c0 35.3 28.7 64 64 64s64-28.7 64-64V168c0-13.3 10.7-24 24-24s24 10.7 24 24V288c0 61.9-50.1 112-112 112s-112-50.1-112-112V168c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faWandSparkles = {\n prefix: 'fas',\n iconName: 'wand-sparkles',\n icon: [512, 512, [], \"f72b\", \"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7V176c0 8.8-7.2 16-16 16H384.2c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9V272c0-8.8 7.2-16 16-16h34.6c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"]\n};\nvar faRouter = {\n prefix: 'fas',\n iconName: 'router',\n icon: [576, 512, [], \"f8da\", \"M352 48c58.8 0 112.5 21.8 153.4 57.9c9.9 8.8 25.1 7.8 33.9-2.1s7.8-25.1-2.1-33.9C487.8 26.4 422.9 0 352 0S216.2 26.4 166.9 69.9c-9.9 8.8-10.9 23.9-2.1 33.9s23.9 10.9 33.9 2.1C239.5 69.8 293.2 48 352 48zm24 200c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H64c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V384c0-35.3-28.7-64-64-64H376V248zM96 384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM276.5 186.7C297.1 170 323.4 160 352 160s54.9 10 75.5 26.7c10.3 8.3 25.4 6.8 33.8-3.5s6.8-25.4-3.5-33.8C428.8 126 392 112 352 112s-76.8 14-105.7 37.4c-10.3 8.3-11.9 23.5-3.5 33.8s23.5 11.9 33.8 3.5z\"]\n};\nvar faEllipsisVertical = {\n prefix: 'fas',\n iconName: 'ellipsis-vertical',\n icon: [128, 512, [\"ellipsis-v\"], \"f142\", \"M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z\"]\n};\nvar faEllipsisV = faEllipsisVertical;\nvar faSwordLaserAlt = {\n prefix: 'fas',\n iconName: 'sword-laser-alt',\n icon: [512, 512, [], \"e03c\", \"M505.7 40.2c8.7-9.5 8.3-24.1-.7-33.2s-23.7-9.4-33.2-.7L225.1 232H330.2L505.7 40.2zM189.3 256c-12.7 0-24.9 5.1-33.9 14.1l-49 49 27.3 27.3 32 32L193 405.7 315.3 283.3c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9H189.3zm-7.6 161L160 395.3 54.3 501l3.5 3.5c4.8 4.8 11.3 7.5 18.1 7.5s13.3-2.7 18.1-7.5L181.7 417zM43 489.7L148.7 384 128 363.3 22.3 469 43 489.7zm-32-32L116.7 352 95 330.3 7.5 417.9C2.7 422.7 0 429.2 0 436s2.7 13.3 7.5 18.1l3.5 3.5z\"]\n};\nvar faTicket = {\n prefix: 'fas',\n iconName: 'ticket',\n icon: [576, 512, [127903], \"f145\", \"M64 64C28.7 64 0 92.7 0 128v64c0 8.8 7.4 15.7 15.7 18.6C34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V320c0-8.8-7.4-15.7-15.7-18.6C541.5 294.9 528 277 528 256s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6V128c0-35.3-28.7-64-64-64H64zm64 112l0 160c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16zM96 160c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [9211], \"f011\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V256c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z\"]\n};\nvar faCoin = {\n prefix: 'fas',\n iconName: 'coin',\n icon: [512, 512, [129689], \"f85c\", \"M256 352C114.6 352 0 287.5 0 208S114.6 64 256 64s256 64.5 256 144s-114.6 144-256 144zM86.6 248.2c12 11.4 27.7 20.1 44.4 26.8c33.6 13.4 77.8 21 125 21s91.4-7.6 125-21c16.7-6.7 32.4-15.4 44.4-26.8C437.5 236.7 448 220.5 448 200s-10.5-36.7-22.6-48.2c-12-11.4-27.7-20.1-44.4-26.8c-33.6-13.4-77.8-21-125-21s-91.4 7.6-125 21c-16.7 6.7-32.4 15.4-44.4 26.8C74.5 163.3 64 179.5 64 200s10.5 36.7 22.6 48.2zM96 200c0-35.3 71.6-64 160-64s160 28.7 160 64s-71.6 64-160 64s-160-28.7-160-64zM0 290.1c13.2 15.6 29.7 29.3 48 40.9l0 63.7C17.8 373.6 0 347.9 0 320l0-29.9zM80 413l0-64.7c28.4 13.2 60.9 23 96 29l0 64.3c-36.2-6-68.9-15.9-96-28.7zm128 32.8l0-64.1c15.7 1.6 31.7 2.4 48 2.4s32.3-.8 48-2.4l0 64.1c-15.5 1.5-31.6 2.2-48 2.2s-32.5-.8-48-2.2zm128-4.1l0-64.3c35.1-6 67.6-15.9 96-29l0 64.7c-27.1 12.8-59.8 22.7-96 28.7zm128-47l0-63.7c18.3-11.5 34.8-25.2 48-40.9l0 29.9c0 27.9-17.8 53.6-48 74.6z\"]\n};\nvar faLaptopSlash = {\n prefix: 'fas',\n iconName: 'laptop-slash',\n icon: [640, 512, [], \"e1c7\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-14-10.9c14.3-13.9 23.2-33.4 23.2-55c0-10.6-8.6-19.2-19.2-19.2H522.2L154.8 96H512V352h64V96c0-35.3-28.7-64-64-64H128c-14.4 0-27.8 4.8-38.5 12.9L38.8 5.1zM128 197L64 146.6V352h64V197zM487.2 480L365.3 384H19.2C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480H487.2z\"]\n};\nvar faRightLong = {\n prefix: 'fas',\n iconName: 'right-long',\n icon: [512, 512, [\"long-arrow-alt-right\"], \"f30b\", \"M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 72L32 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l288 0 0 72c0 9.6 5.7 18.2 14.5 22z\"]\n};\nvar faLongArrowAltRight = faRightLong;\nvar faCircleB = {\n prefix: 'fas',\n iconName: 'circle-b',\n icon: [512, 512, [], \"e0fd\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152c0-13.3 10.7-24 24-24h92c42 0 76 34 76 76c0 16.2-5.1 31.3-13.8 43.7C356.3 261.6 368 283.4 368 308c0 42-34 76-76 76H184c-13.3 0-24-10.7-24-24V256 152zm144 52c0-15.5-12.5-28-28-28H208v56h68c15.5 0 28-12.5 28-28zM208 336h84c15.5 0 28-12.5 28-28s-12.5-28-28-28H276 208v56z\"]\n};\nvar faPersonDressSimple = {\n prefix: 'fas',\n iconName: 'person-dress-simple',\n icon: [256, 512, [], \"e21c\", \"M64 64a64 64 0 1 1 128 0A64 64 0 1 1 64 64zM50.7 206.4c7.8-27.5 33-46.4 61.5-46.4h31.4c28.6 0 53.7 18.9 61.5 46.4l39.1 136.8c5.8 20.4-9.5 40.8-30.8 40.8H192v80c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V384H42.4c-21.3 0-36.6-20.3-30.8-40.8L50.7 206.4z\"]\n};\nvar faPipeCollar = {\n prefix: 'fas',\n iconName: 'pipe-collar',\n icon: [512, 512, [], \"e437\", \"M18.7 18.7c25-25 65.5-25 90.5 0L126 35.4C164.1 12.9 208.5 0 256 0s91.9 12.9 130 35.4l16.7-16.7c25-25 65.5-25 90.5 0s25 65.5 0 90.5L476.6 126c22.5 38.1 35.4 82.6 35.4 130s-12.9 91.9-35.4 130l16.7 16.7c25 25 25 65.5 0 90.5s-65.5 25-90.5 0L386 476.6C347.9 499.1 303.5 512 256 512s-91.9-12.9-130-35.4l-16.7 16.7c-25 25-65.5 25-90.5 0s-25-65.5 0-90.5L35.4 386C12.9 347.9 0 303.5 0 256s12.9-91.9 35.4-130L18.7 109.3c-25-25-25-65.5 0-90.5zM64 80a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM256 416a160 160 0 1 0 0-320 160 160 0 1 0 0 320zM80 448a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM448 80a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 368a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faLightsHoliday = {\n prefix: 'fas',\n iconName: 'lights-holiday',\n icon: [640, 512, [], \"f7b2\", \"M5.4 78.2c9.8-14.7 29.6-18.7 44.3-9l0 0 .4 .3c.5 .3 1.3 .8 2.5 1.5c2.4 1.4 6.3 3.6 11.7 6.3C75 82.7 91.6 90.1 114.1 97.6C159 112.6 227.6 128 320 128s161-15.4 205.9-30.4c22.5-7.5 39.1-14.9 49.8-20.3c5.4-2.7 9.3-4.9 11.7-6.3c1.2-.7 2.1-1.2 2.5-1.5l.4-.2 0 0c0 0 0 0 .1 0c14.7-9.7 34.5-5.8 44.3 8.9c9.8 14.7 5.8 34.6-8.9 44.4L608 96c17.8 26.6 17.7 26.6 17.7 26.6l0 0-.1 0-.2 .1-.4 .3c-.3 .2-.7 .5-1.2 .8c-1 .6-2.4 1.5-4.2 2.5c-3.6 2.1-8.7 4.9-15.3 8.2c-13.3 6.6-32.7 15.2-58.2 23.7C495 175.4 419.6 192 320 192s-175-16.6-226.1-33.6c-25.5-8.5-44.9-17.1-58.2-23.7c-6.6-3.3-11.7-6.1-15.3-8.2c-1.8-1-3.2-1.9-4.2-2.5c-.5-.3-.9-.6-1.2-.8l-.4-.3-.1-.1-.1 0 0 0c0 0 0 0 17.7-26.6L14.2 122.6C-.5 112.8-4.4 93 5.4 78.2zM523.2 198.7l9.4 25.8c30.8 1.9 59 21.7 70.2 52.5c16.4 45.1-8.8 139.4-31.4 147.6s-102.5-47.8-119-92.9c-11.2-30.8-2.3-64.1 20-85.3l-12.3-33.8c23.2-4 44.2-8.7 63.1-13.8zM320 224c10.9 0 21.6-.2 32-.6v39.2c28.3 12.3 48 40.5 48 73.3c0 48-56 128-80 128s-80-80-80-128c0-32.8 19.7-61 48-73.3V223.4c10.4 .4 21.1 .6 32 .6zM179.9 212.5l-12.3 33.8c22.3 21.3 31.2 54.5 20 85.3c-16.4 45.1-96.4 101.1-119 92.9S20.8 322.1 37.3 277c11.2-30.8 39.4-50.6 70.2-52.5l9.4-25.8c18.8 5.1 39.9 9.9 63.1 13.8z\"]\n};\nvar faCitrus = {\n prefix: 'fas',\n iconName: 'citrus',\n icon: [512, 512, [], \"e2f4\", \"M304 128h80c53 0 96-43 96-96V16c0-8.8-7.2-16-16-16H384c-53 0-96 43-96 96v16c0 8.8 7.2 16 16 16zM256 96c0-23.1 6.1-44.7 16.8-63.4c-5.5-.4-11.1-.6-16.8-.6C123.5 32 16 139.5 16 272s107.5 240 240 240s240-107.5 240-240c0-49.5-15-95.5-40.7-133.7C435 152 410.4 160 384 160H304c-26.5 0-48-21.5-48-48V96z\"]\n};\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [448, 512, [], \"f74d\", \"M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1v36.1l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-20.3-9-41.8-14.7-63.6-16.9v32.2c17.4 2.1 34.4 6.7 50.6 13.9l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 136.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 203.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 232.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 299.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 328.3v33.5c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 400v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V416 345.5 312.8 249.5 216.8 153.5 120.8 64 32C0 14.3 14.3 0 32 0zm80 96A16 16 0 1 0 80 96a16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-32 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faLaptopFile = {\n prefix: 'fas',\n iconName: 'laptop-file',\n icon: [640, 512, [], \"e51d\", \"M128 0C92.7 0 64 28.7 64 64V288H19.2C8.6 288 0 296.6 0 307.2C0 349.6 34.4 384 76.8 384H320V288H128V64H448V96h64V64c0-35.3-28.7-64-64-64H128zM512 128H400c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V256H544c-17.7 0-32-14.3-32-32V128zm32 0v96h96l-96-96z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [\"teletype\"], \"f1e4\", \"M38.3 241.3L15.1 200.6c-9.2-16.2-8.4-36.5 4.5-50C61.4 106.8 144.7 48 256 48s194.6 58.8 236.4 102.6c12.9 13.5 13.7 33.8 4.5 50l-23.1 40.7c-7.5 13.2-23.3 19.3-37.8 14.6l-81.1-26.6c-13.1-4.3-22-16.6-22-30.4V144c-49.6-18.1-104-18.1-153.6 0v54.8c0 13.8-8.9 26.1-22 30.4L76.1 255.8c-14.5 4.7-30.3-1.4-37.8-14.6zM32 336c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V336zm0 96c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V432zM144 320h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V336zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V336zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V432c0-8.8 7.2-16 16-16zM128 432c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V432z\"]\n};\nvar faTeletype = faTty;\nvar faChartTreeMap = {\n prefix: 'fas',\n iconName: 'chart-tree-map',\n icon: [512, 512, [], \"e0ea\", \"M0 80C0 53.5 21.5 32 48 32H176c26.5 0 48 21.5 48 48V192c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zM0 320c0-26.5 21.5-48 48-48H176c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V320zM304 32H464c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zM256 240c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V240zm48 112H464c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V400c0-26.5 21.5-48 48-48z\"]\n};\nvar faDiagramNext = {\n prefix: 'fas',\n iconName: 'diagram-next',\n icon: [512, 512, [], \"e476\", \"M512 160c0 35.3-28.7 64-64 64H280v64h46.1c21.4 0 32.1 25.9 17 41L273 399c-9.4 9.4-24.6 9.4-33.9 0L169 329c-15.1-15.1-4.4-41 17-41H232V224H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64v64zM448 416V352H365.3l.4-.4c18.4-18.4 20.4-43.7 11-63.6l71.3 0c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64l71.3 0c-9.4 19.9-7.4 45.2 11 63.6l.4 .4H64v64H210.7l5.7 5.7c21.9 21.9 57.3 21.9 79.2 0l5.7-5.7H448z\"]\n};\nvar faPersonRifle = {\n prefix: 'fas',\n iconName: 'person-rifle',\n icon: [576, 512, [], \"e54e\", \"M265.2 192c25.4 0 49.8 7.1 70.8 19.9V512H144V337.7L90.4 428.3c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8L97.7 258.8c24.5-41.4 69-66.8 117.1-66.8h50.4zM160 80a80 80 0 1 1 160 0A80 80 0 1 1 160 80zM448 0c8.8 0 16 7.2 16 16V132.3c9.6 5.5 16 15.9 16 27.7V269.3l16-5.3V208c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v84.5c0 6.9-4.4 13-10.9 15.2L480 325.3V352h48c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H484l23 92.1c2.5 10.1-5.1 19.9-15.5 19.9H432c-8.8 0-16-7.2-16-16V400H400c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32V160c0-11.8 6.4-22.2 16-27.7V32c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 16z\"]\n};\nvar faClockFiveThirty = {\n prefix: 'fas',\n iconName: 'clock-five-thirty',\n icon: [512, 512, [], \"e34a\", \"M256 512A256 256 0 1 1 256 0a256 256 0 1 1 0 512zm24-120V335.3l20 30c7.4 11 22.3 14 33.3 6.7s14-22.3 6.7-33.3l-64-96c-5.9-8.8-16.8-12.7-26.9-9.7s-17 12.4-17 23V392c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faPipeValve = {\n prefix: 'fas',\n iconName: 'pipe-valve',\n icon: [512, 512, [], \"e439\", \"M288 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V76L128 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128-16 128 16c17.7 0 32-14.3 32-32s-14.3-32-32-32L288 76V64zm0 84.2l-32-4-32 4V192H96V448H416V192H288V148.2zM32 160c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V192c0-17.7-14.3-32-32-32zm480 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V192z\"]\n};\nvar faArrowUpFromArc = {\n prefix: 'fas',\n iconName: 'arrow-up-from-arc',\n icon: [512, 512, [], \"e4b4\", \"M256 448C150 448 64 362 64 256c0-17.7-14.3-32-32-32s-32 14.3-32 32C0 397.4 114.6 512 256 512s256-114.6 256-256c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 106-86 192-192 192zM121.4 121.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 224 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 57.4 57.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0l-112 112z\"]\n};\nvar faFaceSpiralEyes = {\n prefix: 'fas',\n iconName: 'face-spiral-eyes',\n icon: [512, 512, [], \"e485\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm56.9-137.1l14.8-9.9c14.3-9.6 32.7-10.7 48.1-3l15.4 7.7c7.9 4 11.1 13.6 7.2 21.5s-13.6 11.1-21.5 7.2l-15.4-7.7c-5.1-2.6-11.3-2.2-16 1l-14.8 9.9c-16.1 10.7-37.1 10.7-53.3 0l-12.5-8.3c-5.4-3.6-12.4-3.6-17.8 0l-12.5 8.3c-16.1 10.7-37.1 10.7-53.3 0l-14.8-9.9c-4.8-3.2-10.9-3.6-16-1l-15.4 7.7c-7.9 4-17.5 .7-21.5-7.2s-.7-17.5 7.2-21.5l15.4-7.7c15.4-7.7 33.8-6.6 48.1 3l14.8 9.9c5.4 3.6 12.4 3.6 17.8 0l12.5-8.3c16.1-10.7 37.1-10.7 53.3 0l12.5 8.3c5.4 3.6 12.4 3.6 17.8 0zm-147-263.3c.3 6.6-4.9 12.2-11.5 12.5c-46.9 1.9-82.2 45-78.1 84.3l0 .3 0 .3c2 40.2 40.8 70.7 76.2 66.7l.3 0 .3 0c36.3-2 62.1-35.7 58.4-64.5l0-.3 0-.3c-2.1-29.8-31.3-51-56-47.5l-.3 0-.3 0c-25.7 2.2-42 26.2-38.9 44.5l.1 .4 0 .4c2.1 19.5 21.5 31.3 35.5 28.6l.3-.1 .3 0c15.2-2.1 22-16.3 19.9-24l-.1-.4-.1-.4c-.9-4.3-3.4-7.4-6.5-9.2c-.9-.5-1.8-.9-2.6-1.2c1.7 1.9 2.8 4.2 3 6.9c1 11.1-8.8 15.8-14.1 16.4c-6.6 .8-13.4-2.2-17.6-8.5c-5-6.8-4.4-15.6-1.8-21.8c2.9-7 8.9-13.2 17.8-16c9.2-3.3 19.4-1.3 27.5 3.3c8.3 4.9 15.5 13.4 17.9 24.8c5.8 22.8-11.9 49.5-39.5 53.6c-27.7 5.3-59.8-16.2-63.6-49.2c-5.4-33 21.9-68.7 60.3-72.1c38.2-5.2 79.6 25.8 82.9 69.3c5.4 43.3-31.5 88.2-80.6 91.2c-48.8 5.3-99.6-35.2-102.5-89.1c-5.5-53.8 41.1-108.1 101-110.5c6.6-.3 12.2 4.9 12.5 11.5zM357.6 292c46.9-1.9 82.2-45 78.1-84.3l0-.3 0-.3c-2-40.2-40.8-70.7-76.2-66.7l-.3 0-.3 0c-36.3 2-62.1 35.7-58.4 64.5l0 .3 0 .3c2.1 29.8 31.3 51 56 47.5l.3 0 .3 0c25.7-2.2 42-26.2 38.9-44.5l-.1-.4 0-.4c-2.1-19.5-21.5-31.3-35.5-28.6l-.3 .1-.3 0c-15.2 2.1-21.9 16.3-19.9 24l.1 .4 .1 .4c.9 4.3 3.4 7.4 6.5 9.2c.9 .5 1.8 .9 2.6 1.2c-1.7-1.9-2.8-4.2-3-6.9c-1-11.1 8.8-15.8 14.1-16.4c6.6-.8 13.4 2.2 17.6 8.5c5 6.8 4.4 15.6 1.8 21.8c-2.9 7-8.9 13.2-17.8 16c-9.2 3.3-19.4 1.3-27.5-3.3c-8.3-4.9-15.5-13.4-17.9-24.8c-5.8-22.8 11.9-49.5 39.5-53.6c27.7-5.3 59.8 16.2 63.6 49.2c5.4 33-21.9 68.7-60.3 72.1c-38.2 5.2-79.6-25.8-82.9-69.3c-5.4-43.3 31.5-88.2 80.6-91.2c48.8-5.3 99.6 35.2 102.5 89.1c5.5 53.8-41.1 108.1-101 110.5c-6.6 .3-12.2-4.9-12.5-11.5s4.9-12.2 11.5-12.5z\"]\n};\nvar faCompressWide = {\n prefix: 'fas',\n iconName: 'compress-wide',\n icon: [512, 512, [], \"f326\", \"M160 96c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V96zM32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V320c0-17.7-14.3-32-32-32H32zM416 96c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H416V96zM384 288c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V352h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H384z\"]\n};\nvar faCirclePhoneHangup = {\n prefix: 'fas',\n iconName: 'circle-phone-hangup',\n icon: [512, 512, [\"phone-circle-down\"], \"e11d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM391.4 310c-5.3 8.6-16.8 12.3-26.7 8.5l-46.2-17.6c-8.7-3.3-14.1-11.6-13.1-20.3l2.9-26.7c-33.8-10.8-70.8-10.8-104.6 0l2.9 26.7c.9 8.7-4.4 16.9-13.1 20.3l-46.2 17.6c-9.9 3.8-21.4 .2-26.7-8.5L98.8 274.8c-4.8-7.8-3.4-17.5 3.4-23.8c84.9-78.6 222.6-78.6 307.5 0c6.8 6.3 8.2 16.1 3.4 23.8L391.4 310z\"]\n};\nvar faPhoneCircleDown = faCirclePhoneHangup;\nvar faGearComplexCode = {\n prefix: 'fas',\n iconName: 'gear-complex-code',\n icon: [512, 512, [], \"e5eb\", \"M305.4 21.8c-1.3-10.4-9.1-18.8-19.5-20C276.1 .6 266.1 0 256 0c-11.1 0-22.1 .7-32.8 2.1c-10.3 1.3-18 9.7-19.3 20l-2.9 23.1c-.8 6.4-5.4 11.6-11.5 13.7c-9.6 3.2-19 7.2-27.9 11.7c-5.8 3-12.8 2.5-18-1.5l-18-14c-8.2-6.4-19.7-6.8-27.9-.4c-16.6 13-31.5 28-44.4 44.7c-6.3 8.2-5.9 19.6 .5 27.8l14.2 18.3c4 5.1 4.4 12 1.5 17.8c-4.4 8.8-8.2 17.9-11.3 27.4c-2 6.2-7.3 10.8-13.7 11.6l-22.8 2.9c-10.3 1.3-18.7 9.1-20 19.4C.7 234.8 0 245.3 0 256c0 10.6 .6 21.1 1.9 31.4c1.3 10.3 9.7 18.1 20 19.4l22.8 2.9c6.4 .8 11.7 5.4 13.7 11.6c3.1 9.5 6.9 18.7 11.3 27.5c2.9 5.8 2.4 12.7-1.5 17.8L54 384.8c-6.4 8.2-6.8 19.6-.5 27.8c12.9 16.7 27.8 31.7 44.4 44.7c8.2 6.4 19.7 6 27.9-.4l18-14c5.1-4 12.2-4.4 18-1.5c9 4.6 18.3 8.5 27.9 11.7c6.1 2.1 10.7 7.3 11.5 13.7l2.9 23.1c1.3 10.3 9 18.7 19.3 20c10.7 1.4 21.7 2.1 32.8 2.1c10.1 0 20.1-.6 29.9-1.7c10.4-1.2 18.2-9.7 19.5-20l2.8-22.5c.8-6.5 5.5-11.8 11.7-13.8c10-3.2 19.7-7.2 29-11.8c5.8-2.9 12.7-2.4 17.8 1.5L385 457.9c8.2 6.4 19.6 6.8 27.8 .5c2.8-2.2 5.5-4.4 8.2-6.7L451.7 421c1.8-2.2 3.6-4.4 5.4-6.6c6.5-8.2 6-19.7-.4-27.9l-14-17.9c-4-5.1-4.4-12.2-1.5-18c4.8-9.4 9-19.3 12.3-29.5c2-6.2 7.3-10.8 13.7-11.6l22.8-2.8c10.3-1.3 18.8-9.1 20-19.4c.2-1.7 .4-3.5 .6-5.2V230.1c-.2-1.7-.4-3.5-.6-5.2c-1.3-10.3-9.7-18.1-20-19.4l-22.8-2.8c-6.4-.8-11.7-5.4-13.7-11.6c-3.4-10.2-7.5-20.1-12.3-29.5c-3-5.8-2.5-12.8 1.5-18l14-17.9c6.4-8.2 6.8-19.7 .4-27.9c-1.8-2.2-3.6-4.4-5.4-6.6L421 60.3c-2.7-2.3-5.4-4.5-8.2-6.7c-8.2-6.4-19.6-5.9-27.8 .5L366.7 68.3c-5.1 4-12.1 4.4-17.8 1.5c-9.3-4.6-19-8.6-29-11.8c-6.2-2-10.9-7.3-11.7-13.7l-2.8-22.5zM287.8 162.6l-32 192c-1.5 8.7-9.7 14.6-18.4 13.2s-14.6-9.7-13.2-18.4l32-192c1.5-8.7 9.7-14.6 18.4-13.2s14.6 9.7 13.2 18.4zM187.3 227.3L158.6 256l28.7 28.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6l40-40c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm160-22.6l40 40c6.2 6.2 6.2 16.4 0 22.6l-40 40c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L353.4 256l-28.7-28.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0z\"]\n};\nvar faHouseMedicalCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-medical-circle-exclamation',\n icon: [640, 512, [], \"e512\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faBadminton = {\n prefix: 'fas',\n iconName: 'badminton',\n icon: [576, 512, [], \"e33a\", \"M349 64c-36 0-76.4 15.8-108.8 48.2S192 184.9 192 221c0 28.2 9.6 53.2 27.7 71.3c40.4 40.4 120.7 38.9 180.1-20.5C432.2 239.4 448 199.1 448 163c0-28.2-9.6-53.2-27.7-71.3S377.1 64 349 64zm-154 2.9C238.5 23.4 294.8 0 349 0c42.8 0 84.9 14.8 116.6 46.5S512 120.2 512 163c0 54.2-23.4 110.5-66.9 154c-54.4 54.4-131.9 78.7-198.2 61.7c-29.4-7.5-62.9-5.5-84.3 16L148.3 409c6.4 12.1 4.5 27.4-5.6 37.6l-56 56c-12.5 12.5-32.8 12.5-45.3 0l-32-32c-12.5-12.5-12.5-32.8 0-45.3l56-56c10.2-10.2 25.5-12.1 37.6-5.6l14.5-14.5c21.4-21.4 23.5-54.7 16-84C129.8 250.9 128 236 128 221c0-54.2 23.4-110.5 66.9-154zM464 400c0-26.5 21.5-48 48-48s48 21.5 48 48v32H464V400zm-15.3 91.4l13-43.4h33.4l-15.8 52.6c-2.5 8.5-11.5 13.3-19.9 10.7s-13.3-11.5-10.7-19.9zM496 496V448h32v48c0 8.8-7.2 16-16 16s-16-7.2-16-16zm48.7 4.6L528.9 448h33.4l13 43.4c2.5 8.5-2.3 17.4-10.7 19.9s-17.4-2.3-19.9-10.7z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nvar faPersonHiking = {\n prefix: 'fas',\n iconName: 'person-hiking',\n icon: [384, 512, [\"hiking\"], \"f6ec\", \"M192 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm51.3 182.7L224.2 307l49.7 49.7c9 9 14.1 21.2 14.1 33.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3l-73.9-73.9c-15.8-15.8-22.2-38.6-16.9-60.3l20.4-84c8.3-34.1 42.7-54.9 76.7-46.4c19 4.8 35.6 16.4 46.4 32.7L305.1 208H336V184c0-13.3 10.7-24 24-24s24 10.7 24 24v55.8c0 .1 0 .2 0 .2s0 .2 0 .2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V272H296.6c-16 0-31-8-39.9-21.4l-13.3-20zM81.1 471.9L117.3 334c3 4.2 6.4 8.2 10.1 11.9l41.9 41.9L142.9 488.1c-4.5 17.1-22 27.3-39.1 22.8s-27.3-22-22.8-39.1zm55.5-346L101.4 266.5c-3 12.1-14.9 19.9-27.2 17.9l-47.9-8c-14-2.3-22.9-16.3-19.2-30L31.9 155c9.5-34.8 41.1-59 77.2-59h4.2c15.6 0 27.1 14.7 23.3 29.8z\"]\n};\nvar faHiking = faPersonHiking;\nvar faRightFromLine = {\n prefix: 'fas',\n iconName: 'right-from-line',\n icon: [448, 512, [\"arrow-alt-from-left\"], \"f347\", \"M313.9 105.9L436.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L313.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM64 96l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 96C0 78.3 14.3 64 32 64s32 14.3 32 32z\"]\n};\nvar faArrowAltFromLeft = faRightFromLine;\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [640, 512, [9890], \"f226\", \"M192 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM368 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H224v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C78.1 334.1 16 262.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176zM344 318c14.6-15.6 26.8-33.4 36-53c18.8 14.4 42.4 23 68 23c61.9 0 112-50.1 112-112s-50.1-112-112-112c-25.6 0-49.1 8.6-68 23c-9.3-19.5-21.5-37.4-36-53C373.1 12.6 409.1 0 448 0c97.2 0 176 78.8 176 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H480v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1c-26.6-4.9-51.1-15.7-72-31.1z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M160 32c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320H328 280 200c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM192 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [384, 512, [128425], \"f1ec\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM96 64H288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32zm32 160a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 352a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM64 416c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM192 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nvar faShuttlecock = {\n prefix: 'fas',\n iconName: 'shuttlecock',\n icon: [512, 512, [], \"f45b\", \"M320 32c0 8.8-7.2 16-16 16c-24.4 0-46 15.8-53.4 39.1l-29.3 92.8c-1.3 4.1-4.2 7.6-8.1 9.5l-32.4 16.2c-3.1 1.5-5.6 4.1-7.2 7.2l-32.5 64.9c-3.1 6.2-1.9 13.6 3 18.5L163 315l71.9-71.9L281.1 96.8C284.3 86.8 293.5 80 304 80H408c13.3 0 24 10.7 24 24V208c0 10.5-6.8 19.7-16.8 22.9L268.8 277.1 197 349l18.9 18.9c4.9 4.9 12.3 6.1 18.5 3l64.9-32.5c3.1-1.5 5.6-4.1 7.2-7.2l16.2-32.4c1.9-3.9 5.4-6.8 9.5-8.1l92.8-29.3c23.3-7.4 39.1-29 39.1-53.4c0-8.8 7.2-16 16-16h8c13.3 0 24 10.7 24 24v51.7c0 12.4-7.2 23.7-18.4 29L250.1 411.2c-6.7 3.1-12.8 7.4-18 12.7l-28.8 28.8-144-144 28.8-28.8c5.2-5.2 9.5-11.3 12.7-18L215.4 18.4C220.6 7.2 231.9 0 244.3 0H296c13.3 0 24 10.7 24 24v8zM36.7 331.3l144 144-6.9 6.9c-19.1 19.1-45 29.8-72 29.8C45.6 512 0 466.4 0 410.2c0-27 10.7-52.9 29.8-72l6.9-6.9z\"]\n};\nvar faUserHair = {\n prefix: 'fas',\n iconName: 'user-hair',\n icon: [448, 512, [], \"e45a\", \"M304 128v16c0 44.2-35.8 80-80 80s-80-35.8-80-80V128c0-5.5 .6-10.8 1.6-16H176c29.8 0 55.9-16.3 69.6-40.5C257.3 86.4 275.5 96 296 96h1.3c4.3 9.8 6.7 20.6 6.7 32zM96 128v16c0 70.7 57.3 128 128 128s128-57.3 128-128V128C352 57.3 294.7 0 224 0S96 57.3 96 128zm65.3 192C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7H417.3c17 0 30.7-13.8 30.7-30.7C448 392.2 375.8 320 286.7 320H161.3z\"]\n};\nvar faEyeEvil = {\n prefix: 'fas',\n iconName: 'eye-evil',\n icon: [640, 512, [], \"f6db\", \"M254.9 112.2c-10.7 2.8-21.1 6.3-30.9 10.4L114.4 76.1c-8.7-3.7-18.7-1-24.4 6.5s-5.5 17.9 .4 25.2l57.3 70.8c-7 9-12.8 18.6-17.3 28.6L15.5 236.1C6.4 238.4 0 246.6 0 256s6.4 17.6 15.5 19.9l114.9 28.7c4.5 10.1 10.3 19.7 17.3 28.6L90.4 404.1c-5.9 7.3-6.1 17.7-.4 25.2s15.7 10.2 24.4 6.5L224 389.4c9.8 4.1 20.1 7.6 30.9 10.4l42.7 97.6c3.9 8.9 12.7 14.7 22.4 14.7s18.5-5.8 22.4-14.7l42.7-97.6c10.7-2.8 21.1-6.3 30.9-10.4l109.7 46.5c8.7 3.7 18.7 1 24.4-6.5s5.5-17.9-.4-25.2l-57.3-70.8c7-9 12.8-18.6 17.3-28.6l114.9-28.7c9.1-2.3 15.5-10.5 15.5-19.9s-6.4-17.6-15.5-19.9L509.6 207.4c-4.5-10.1-10.3-19.7-17.3-28.6l57.3-70.8c5.9-7.3 6.1-17.7 .4-25.2s-15.7-10.2-24.4-6.5L416 122.6c-9.8-4.1-20.1-7.6-30.9-10.4L342.4 14.7C338.5 5.8 329.7 0 320 0s-18.5 5.8-22.4 14.7l-42.7 97.6zM320 352c-53 0-96-43-96-96c0-19.7 6-38.1 16.2-53.3c16.6 9.6 35 16.2 54.7 19.3c-3.9 9.4-6.8 20.8-6.8 34c0 31.5 16.5 52.7 23.8 60.6c2.1 2.3 5.1 3.4 8.2 3.4s6.1-1.1 8.2-3.4c7.3-7.9 23.8-29.2 23.8-60.6c0-13.2-2.9-24.6-6.8-34c19.6-3.1 38.1-9.8 54.7-19.3C410 217.9 416 236.3 416 256c0 53-43 96-96 96z\"]\n};\nvar faPeoplePulling = {\n prefix: 'fas',\n iconName: 'people-pulling',\n icon: [576, 512, [], \"e535\", \"M80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zM64 128c-35.3 0-64 28.7-64 64V320c0 17.7 14.3 32 32 32c9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8L123.1 352h15.7l30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7c8.6 3.6 18 3.1 25.9-.7c3.4-1.6 6.6-3.9 9.3-6.7c3.1-3.2 5.5-7 7.1-11.4c.1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L537 232.7l-15.3-36.8C504.5 154.8 464.3 128 419.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128H64zM464 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"]\n};\nvar faN = {\n prefix: 'fas',\n iconName: 'n',\n icon: [384, 512, [110], \"4e\", \"M21.1 33.9c12.7-4.6 26.9-.7 35.5 9.6L320 359.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V448c0 13.5-8.4 25.5-21.1 30.1s-26.9 .7-35.5-9.6L64 152.4V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 50.5 8.4 38.5 21.1 33.9z\"]\n};\nvar faGarage = {\n prefix: 'fas',\n iconName: 'garage',\n icon: [640, 512, [], \"e009\", \"M0 171.3V488c0 13.3 10.7 24 24 24H72c13.3 0 24-10.7 24-24V224c0-17.7 14.3-32 32-32H512c17.7 0 32 14.3 32 32V488c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V171.3c0-26.2-15.9-49.7-40.2-59.4L331.9 4.8c-7.6-3.1-16.1-3.1-23.8 0L40.2 111.9C15.9 121.6 0 145.2 0 171.3zM128 224v96H512V224H128zm0 128V512H512V352H128zm128 80c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16z\"]\n};\nvar faCableCar = {\n prefix: 'fas',\n iconName: 'cable-car',\n icon: [512, 512, [128673, 57551, \"tram\"], \"f7da\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 56a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 288c0-35.3 28.7-64 64-64H232V157.5l-203.1 42c-13 2.7-25.7-5.7-28.4-18.6s5.7-25.7 18.6-28.4l232-48 232-48c13-2.7 25.7 5.7 28.4 18.6s-5.7 25.7-18.6 28.4L280 147.5V224H416c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V288zm64 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H96zm112 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H352z\"]\n};\nvar faTram = faCableCar;\nvar faShovelSnow = {\n prefix: 'fas',\n iconName: 'shovel-snow',\n icon: [512, 512, [], \"f7c3\", \"M391 7c9.4-9.4 24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-31.4 31.4c-15.1 15.1-35.6 23.6-57 23.6c-13.5 0-26.2-3.3-37.4-9.2l-83.5 83.5 47 47c11.3 11.3 12.5 29.1 3 41.8l-120 160c-5.6 7.4-14.1 12.1-23.3 12.7s-18.3-2.7-24.9-9.3l-168-168C2.8 328.1-.6 319 .1 309.7s5.3-17.8 12.7-23.3l160-120c12.7-9.6 30.6-8.3 41.8 3l47 47 83.5-83.5c-5.9-11.2-9.2-23.9-9.2-37.4c0-21.4 8.5-41.9 23.6-57L391 7zm17 50.9L393.5 72.4c-6.1 6.1-9.5 14.4-9.5 23c0 18 14.6 32.6 32.6 32.6c8.6 0 16.9-3.4 23-9.5L454.1 104 408 57.9zM203.3 267.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-80 80c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l80-80zm64 64c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-80 80c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l80-80z\"]\n};\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [127783, 9926], \"f73d\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zm-6.8 52c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L89.2 372zm160 0c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L249.2 372zm124.9 64.6L409.2 372c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3z\"]\n};\nvar faFaceLying = {\n prefix: 'fas',\n iconName: 'face-lying',\n icon: [512, 512, [], \"e37e\", \"M494 350.5c-4.5 1-9.2 1.5-14 1.5H352c-8.8 0-16-7.2-16-16s7.2-16 16-16H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-8.8 0-16-7.2-16-16s7.2-16 16-16H480c11.2 0 21.7 2.9 30.9 7.9C498.8 101.8 389.3 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512c108 0 200.4-66.9 238-161.5zM144.4 176a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm160 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM188.8 393.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4C180.7 351.1 208.6 336 240 336c13.6 0 26.6 2.8 38.4 8c8.1 3.5 11.8 13 8.3 21.1s-13 11.8-21.1 8.3c-7.8-3.4-16.5-5.3-25.6-5.3c-20.9 0-39.5 10-51.2 25.6z\"]\n};\nvar faSprinkler = {\n prefix: 'fas',\n iconName: 'sprinkler',\n icon: [512, 512, [], \"e035\", \"M24 0a24 24 0 1 1 0 48A24 24 0 1 1 24 0zM0 128a24 24 0 1 1 48 0A24 24 0 1 1 0 128zM0 232a24 24 0 1 1 48 0A24 24 0 1 1 0 232zM64 72a24 24 0 1 1 48 0A24 24 0 1 1 64 72zm24 88a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-32a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm360 80a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm24-80a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM488 0a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM448 72a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zm-24 88a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-40-32a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM256 64c17.7 0 32 14.3 32 32V256H388.2c15.3 0 27.8 12.4 27.8 27.8c0 7.8-3.3 15.2-9 20.5L320 384v96c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V384l-87-79.7c-5.7-5.3-9-12.7-9-20.5c0-15.3 12.4-27.8 27.8-27.8H224V96c0-17.7 14.3-32 32-32z\"]\n};\nvar faBuildingCircleXmark = {\n prefix: 'fas',\n iconName: 'building-circle-xmark',\n icon: [640, 512, [], \"e4d4\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPersonSledding = {\n prefix: 'fas',\n iconName: 'person-sledding',\n icon: [512, 512, [\"sledding\"], \"f7cb\", \"M400 128a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM35.1 226.7c-11.8-6.1-26.3-1.5-32.4 10.2s-1.5 26.3 10.2 32.4L396.4 468.4c27.3 14.2 59.7 14.4 87.2 .7l15.2-7.6c11.9-5.9 16.7-20.3 10.7-32.2s-20.3-16.7-32.2-10.7l-15.2 7.6c-13.7 6.9-29.9 6.7-43.6-.3l-41.7-21.6c4.5-5.5 7.2-12.5 7.2-20.2V304c0-26.5-21.5-48-48-48H301.3L361 196.3c25.2-25.2 7.4-68.3-28.3-68.3H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h84l-59.2 40.3c-23.6 16.1-26 44.8-13.8 64.9L35.1 226.7zM320 320v54.6L214.7 320H320z\"]\n};\nvar faSledding = faPersonSledding;\nvar faGameConsoleHandheld = {\n prefix: 'fas',\n iconName: 'game-console-handheld',\n icon: [384, 512, [], \"f8bb\", \"M0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V416c0 53-43 96-96 96H96c-53 0-96-43-96-96V64zM96 80V192c0 17.7 14.3 32 32 32H256c17.7 0 32-14.3 32-32V80c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zM232 384a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm88-72a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM96 304v16H80c-8.8 0-16 7.2-16 16s7.2 16 16 16H96v16c0 8.8 7.2 16 16 16s16-7.2 16-16V352h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H128V304c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [576, 512, [128674], \"f21a\", \"M192 32c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V64h48c26.5 0 48 21.5 48 48V240l44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240V112c0-26.5 21.5-48 48-48h48V32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7V128H160v90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faClockSixThirty = {\n prefix: 'fas',\n iconName: 'clock-six-thirty',\n icon: [512, 512, [], \"e353\", \"M256 512A256 256 0 1 1 256 0a256 256 0 1 1 0 512zm24-120V256c0-13.3-10.7-24-24-24s-24 10.7-24 24V392c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faBatterySlash = {\n prefix: 'fas',\n iconName: 'battery-slash',\n icon: [640, 512, [], \"f377\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-87.5-68.6C563.1 386 576 362.5 576 336V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H154.8L38.8 5.1zM236.4 160H496c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H481.4l-245-192zm88.5 192H112c-8.8 0-16-7.2-16-16V176c0-1.4 .2-2.7 .5-4L45.4 131.7C36.9 144.4 32 159.6 32 176V336c0 44.2 35.8 80 80 80H406.2l-81.2-64z\"]\n};\nvar faTugrikSign = {\n prefix: 'fas',\n iconName: 'tugrik-sign',\n icon: [384, 512, [], \"e2ba\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H160V199L56.2 225c-17.1 4.3-27.6 21.7-23.3 38.8s21.7 27.6 38.8 23.3L160 265v30L56.2 321c-17.1 4.3-27.6 21.7-23.3 38.8s21.7 27.6 38.8 23.3L160 361v87c0 17.7 14.3 32 32 32s32-14.3 32-32V345L327.8 319c17.1-4.3 27.6-21.7 23.3-38.8s-21.7-27.6-38.8-23.3L224 279V249L327.8 223c17.1-4.3 27.6-21.7 23.3-38.8s-21.7-27.6-38.8-23.3L224 183V96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H192 32z\"]\n};\nvar faArrowsDownToLine = {\n prefix: 'fas',\n iconName: 'arrows-down-to-line',\n icon: [576, 512, [], \"e4b8\", \"M544 416L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zm22.6-137.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L480 274.7 480 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zm-320-45.3c-12.5-12.5-32.8-12.5-45.3 0L160 274.7 160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7L54.6 233.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faShelves = {\n prefix: 'fas',\n iconName: 'shelves',\n icon: [640, 512, [\"inventory\"], \"f480\", \"M32 0C49.7 0 64 14.3 64 32V160H576V32c0-17.7 14.3-32 32-32s32 14.3 32 32V192 448v32c0 17.7-14.3 32-32 32s-32-14.3-32-32H64c0 17.7-14.3 32-32 32s-32-14.3-32-32V448 192 32C0 14.3 14.3 0 32 0zM64 416H576V224H64V416zM352 32c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V32zM128 256h64c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V288c0-17.7 14.3-32 32-32zm160 0h64c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V288c0-17.7 14.3-32 32-32z\"]\n};\nvar faInventory = faShelves;\nvar faCloudSnow = {\n prefix: 'fas',\n iconName: 'cloud-snow',\n icon: [512, 512, [127784], \"f742\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zM64 352c13.3 0 24 10.7 24 24v16h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H88v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V440H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H40V376c0-13.3 10.7-24 24-24zm192 32c13.3 0 24 10.7 24 24v16h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V472H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V408c0-13.3 10.7-24 24-24zm216-8v16h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H472v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V440H408c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V376c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFaceGrin = {\n prefix: 'fas',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrin = faFaceGrin;\nvar faDeleteLeft = {\n prefix: 'fas',\n iconName: 'delete-left',\n icon: [576, 512, [9003, \"backspace\"], \"f55a\", \"M576 128c0-35.3-28.7-64-64-64H205.3c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7H512c35.3 0 64-28.7 64-64V128zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faBackspace = faDeleteLeft;\nvar faOven = {\n prefix: 'fas',\n iconName: 'oven',\n icon: [448, 512, [], \"e01d\", \"M0 96v64H448V96c0-53-43-96-96-96H96C43 0 0 43 0 96zM56 80a24 24 0 1 1 48 0A24 24 0 1 1 56 80zM176 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm72 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm16 200V448H64l0-192H384zM64 192H0v64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256 192H384 64zm48 96c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faCloudBinary = {\n prefix: 'fas',\n iconName: 'cloud-binary',\n icon: [640, 512, [], \"e601\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm16-280v32c0 22.1 17.9 40 40 40h16c22.1 0 40-17.9 40-40V200c0-22.1-17.9-40-40-40H200c-22.1 0-40 17.9-40 40zm40-8h16c4.4 0 8 3.6 8 8v32c0 4.4-3.6 8-8 8H200c-4.4 0-8-3.6-8-8V200c0-4.4 3.6-8 8-8zm88-16c0 8.8 7.2 16 16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V176c0-8.8-7.2-16-16-16H304c-8.8 0-16 7.2-16 16zm136-16c-22.1 0-40 17.9-40 40v32c0 22.1 17.9 40 40 40h16c22.1 0 40-17.9 40-40V200c0-22.1-17.9-40-40-40H424zm-8 40c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v32c0 4.4-3.6 8-8 8H424c-4.4 0-8-3.6-8-8V200zM176 320c0 8.8 7.2 16 16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V320c0-8.8-7.2-16-16-16H192c-8.8 0-16 7.2-16 16zm96 24v32c0 22.1 17.9 40 40 40h16c22.1 0 40-17.9 40-40V344c0-22.1-17.9-40-40-40H312c-22.1 0-40 17.9-40 40zm40-8h16c4.4 0 8 3.6 8 8v32c0 4.4-3.6 8-8 8H312c-4.4 0-8-3.6-8-8V344c0-4.4 3.6-8 8-8zm104-32c-8.8 0-16 7.2-16 16s7.2 16 16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V320c0-8.8-7.2-16-16-16H416z\"]\n};\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [\"eye-dropper-empty\", \"eyedropper\"], \"f1fb\", \"M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6v42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480h42.4c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7H96V379.9c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z\"]\n};\nvar faEyeDropperEmpty = faEyeDropper;\nvar faEyedropper = faEyeDropper;\nvar faCommentCaptions = {\n prefix: 'fas',\n iconName: 'comment-captions',\n icon: [512, 512, [], \"e146\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM120 208H264c13.3 0 24 10.7 24 24s-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24zm224 0h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H344c-13.3 0-24-10.7-24-24s10.7-24 24-24zM120 288h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24zm128 0H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H248c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faCommentsQuestion = {\n prefix: 'fas',\n iconName: 'comments-question',\n icon: [640, 512, [], \"e14e\", \"M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9l0 0 0 0 .2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2 0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM136.2 108.4l-.4 1c-3.7 10.4 1.8 21.8 12.2 25.5s21.8-1.8 25.5-12.2l.4-1c.9-2.7 3.5-4.4 6.3-4.4h48.5c7 0 12.6 5.7 12.6 12.6c0 4.5-2.4 8.7-6.3 10.9L198 162.1c-6.2 3.6-10 10.2-10 17.3v11.2c0 11 9 20 20 20c10.9 0 19.8-8.8 20-19.6l26.9-15.4c16.3-9.4 26.4-26.8 26.4-45.6c0-29.1-23.6-52.6-52.6-52.6H180.2c-19.8 0-37.4 12.4-44 31.1zM234.7 264a26.7 26.7 0 1 0 -53.3 0 26.7 26.7 0 1 0 53.3 0z\"]\n};\nvar faScribble = {\n prefix: 'fas',\n iconName: 'scribble',\n icon: [512, 512, [], \"e23f\", \"M170 23.3C186.5 8.3 208 0 230.3 0h1.1C280.3 0 320 39.7 320 88.6c0 23.5-9.3 46-25.9 62.6L103.2 342.1c-4.6 4.6-7.2 10.9-7.2 17.4C96 373 107 384 120.6 384c6.5 0 12.8-2.6 17.4-7.2L360.8 153.9c16.6-16.6 39.1-25.9 62.6-25.9c48.9 0 88.6 39.7 88.6 88.6c0 23.5-9.3 46-25.9 62.6l-88.2 88.2c-8.8 8.8-13.8 20.9-13.8 33.4c0 26 21.1 47.1 47 47.1c6.2 0 12.4-1.5 18-4.2l16.7-8.4c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L477.6 501c-14.5 7.2-30.4 11-46.6 11c-61.4 0-111-49.9-111-111.1c0-29.5 11.7-57.8 32.6-78.7l88.2-88.2c4.6-4.6 7.2-10.9 7.2-17.4c0-13.6-11-24.6-24.6-24.6c-6.5 0-12.8 2.6-17.4 7.2L183.2 422.1c-16.6 16.6-39.1 25.9-62.6 25.9C71.7 448 32 408.3 32 359.4c0-23.5 9.3-46 25.9-62.6L248.8 105.9c4.6-4.6 7.2-10.9 7.2-17.4C256 75 245 64 231.4 64h-1.1c-6.4 0-12.6 2.4-17.3 6.7L53.5 215.7c-13.1 11.9-33.3 10.9-45.2-2.2s-10.9-33.3 2.2-45.2L170 23.3z\"]\n};\nvar faRotateExclamation = {\n prefix: 'fas',\n iconName: 'rotate-exclamation',\n icon: [512, 512, [], \"e23c\", \"M74.9 192L46.1 178.2c-7.6 15.9-.9 35 15 42.7s35 .9 42.7-15l0 0 0 0 0-.1 .2-.3 .7-1.5c.6-1.3 1.6-3.2 2.8-5.6c2.5-4.8 5.9-11.4 10-18.5c8.7-15.3 18.2-29.8 25.3-36.9c62.5-62.5 163.8-62.5 226.3 0L386.3 160H352c-17.7 0-32 14.3-32 32s14.3 32 32 32H464c17.7 0 32-14.3 32-32V80c0-17.7-14.3-32-32-32s-32 14.3-32 32v35.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0c-13.8 13.8-27 35.2-35.7 50.6c-4.6 8.2-8.6 15.6-11.3 21c-1.4 2.7-2.5 4.9-3.3 6.5l-.9 1.8-.2 .5-.1 .2 0 0 0 0 0 0s0 0 28.9 13.8zM280 152c0-13.3-10.7-24-24-24s-24 10.7-24 24V264c0 13.3 10.7 24 24 24s24-10.7 24-24V152zM256 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM48 464c17.7 0 32-14.3 32-32V396.8l17.6 17.6c87.5 87.5 229.3 87.5 316.8 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0L125.7 352H160c17.7 0 32-14.3 32-32s-14.3-32-32-32H48c-17.7 0-32 14.3-32 32V432c0 17.7 14.3 32 32 32z\"]\n};\nvar faFileCircleCheck = {\n prefix: 'fas',\n iconName: 'file-circle-check',\n icon: [576, 512, [], \"e5a0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faGlass = {\n prefix: 'fas',\n iconName: 'glass',\n icon: [384, 512, [129371], \"f804\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM70.9 128L66.4 64H317.6l-4.6 64H70.9z\"]\n};\nvar faLoader = {\n prefix: 'fas',\n iconName: 'loader',\n icon: [512, 512, [], \"e1d4\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32zm0 384c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32s32-14.3 32-32V416zM0 256c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zm416-32c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H416zM75 75c-12.5 12.5-12.5 32.8 0 45.3l45.3 45.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L120.2 75C107.7 62.5 87.5 62.5 75 75zM391.8 346.5c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L391.8 437c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-45.3-45.3zM75 437c12.5 12.5 32.8 12.5 45.3 0l45.3-45.3c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L75 391.8c-12.5 12.5-12.5 32.8 0 45.3zM346.5 120.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L437 120.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-45.3 45.3z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [9193], \"f04e\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L224 214.3V256v41.7L52.5 440.6zM256 352V256 128 96c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l192 160c7.3 6.1 11.5 15.1 11.5 24.6s-4.2 18.5-11.5 24.6l-192 160c-9.5 7.9-22.8 9.7-34.1 4.4s-18.4-16.6-18.4-29V352z\"]\n};\nvar faUserPilot = {\n prefix: 'fas',\n iconName: 'user-pilot',\n icon: [448, 512, [], \"e2c0\", \"M230.1 .8c-4-1.1-8.2-1.1-12.2 0l-152 40c-8.6 2.3-15.3 9.1-17.3 17.8s1 17.8 7.8 23.6L80 102.5v8.4c0 10.7 5.3 20.8 15.1 25.2c24.1 10.8 68.6 24 128.9 24s104.8-13.2 128.9-24c9.8-4.4 15.1-14.5 15.1-25.2v-8.4l23.6-20.2c6.8-5.8 9.8-14.9 7.8-23.6s-8.7-15.6-17.3-17.8l-152-40zM161.7 72.8c4-7.9 13.6-11.1 21.5-7.2L224 86.1l40.8-20.4c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5l-48 24c-4.5 2.3-9.8 2.3-14.3 0l-48-24c-7.9-4-11.1-13.6-7.2-21.5zm-63.6 96C96.7 176.3 96 184.1 96 192c0 70.7 57.3 128 128 128s128-57.3 128-128c0-7.9-.7-15.7-2.1-23.2C310.8 183.8 268.4 192 224 192s-86.8-8.2-125.9-23.2zm116.3 240l-72.3-54.2c-2.2-1.7-4.9-2.6-7.7-2.6C60.2 352 0 412.2 0 486.4C0 500.5 11.5 512 25.6 512H422.4c14.1 0 25.6-11.5 25.6-25.6C448 412.2 387.8 352 313.6 352c-2.8 0-5.5 .9-7.7 2.6l-72.3 54.2c-5.7 4.3-13.5 4.3-19.2 0zM336 416h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H336c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [384, 512, [128241, \"mobile-android\", \"mobile-phone\"], \"f3ce\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zm80 432h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMobileAndroid = faMobile;\nvar faMobilePhone = faMobile;\nvar faCodePullRequestClosed = {\n prefix: 'fas',\n iconName: 'code-pull-request-closed',\n icon: [512, 512, [], \"e3f9\", \"M329.4 9.4c12.5-12.5 32.8-12.5 45.3 0L400 34.7 425.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L445.3 80l25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L400 125.3l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L354.7 80 329.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zM136 80A24 24 0 1 0 88 80a24 24 0 1 0 48 0zm56 0c0 32.8-19.7 61-48 73.3V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V153.3C51.7 141 32 112.8 32 80C32 35.8 67.8 0 112 0s80 35.8 80 80zM112 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm288 0a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0 56c-44.2 0-80-35.8-80-80c0-32.8 19.7-61 48-73.3V224c0-17.7 14.3-32 32-32s32 14.3 32 32V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80z\"]\n};\nvar faFaceMeh = {\n prefix: 'fas',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 336H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMeh = faFaceMeh;\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M352 64c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32z\"]\n};\nvar faBookSkull = {\n prefix: 'fas',\n iconName: 'book-skull',\n icon: [448, 512, [\"book-dead\"], \"f6b7\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM320 112c0-35.3-35.8-64-80-64s-80 28.7-80 64c0 20.9 12.6 39.5 32 51.2V176c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V163.2c19.4-11.7 32-30.3 32-51.2zM208 96a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM134.3 209.3c-8.1-3.5-17.5 .3-21 8.4s.3 17.5 8.4 21L199.4 272l-77.7 33.3c-8.1 3.5-11.9 12.9-8.4 21s12.9 11.9 21 8.4L240 289.4l105.7 45.3c8.1 3.5 17.5-.3 21-8.4s-.3-17.5-8.4-21L280.6 272l77.7-33.3c8.1-3.5 11.9-12.9 8.4-21s-12.9-11.9-21-8.4L240 254.6 134.3 209.3z\"]\n};\nvar faBookDead = faBookSkull;\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M0 96l576 0c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm0 32V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128H0zM64 405.3c0-29.5 23.9-53.3 53.3-53.3H234.7c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7H74.7c-5.9 0-10.7-4.8-10.7-10.7zM176 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm176 16c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16z\"]\n};\nvar faDriversLicense = faIdCard;\nvar faFaceDotted = {\n prefix: 'fas',\n iconName: 'face-dotted',\n icon: [512, 512, [129765], \"e47f\", \"M216 3.1C229 1.1 242.4 0 256 0s27 1.1 40 3.1c17.5 2.7 29.4 19.1 26.6 36.6s-19.1 29.4-36.6 26.6C276.3 64.8 266.3 64 256 64s-20.3 .8-30.1 2.3c-17.5 2.7-33.8-9.2-36.6-26.6S198.5 5.9 216 3.1zM150.2 55.9c10.4 14.3 7.2 34.3-7 44.7c-16.3 11.9-30.7 26.2-42.5 42.5c-10.4 14.3-30.4 17.4-44.7 7s-17.4-30.4-7-44.7c15.8-21.7 34.9-40.8 56.6-56.6c14.3-10.4 34.3-7.2 44.7 7zm211.6 0c10.4-14.3 30.4-17.4 44.7-7c21.7 15.8 40.8 34.9 56.6 56.6c10.4 14.3 7.2 34.3-7 44.7s-34.3 7.2-44.7-7c-11.9-16.3-26.2-30.7-42.5-42.5c-14.3-10.4-17.4-30.4-7-44.7zM472.3 189.3c17.5-2.7 33.8 9.2 36.6 26.6c2.1 13.1 3.1 26.4 3.1 40s-1.1 27-3.1 40c-2.7 17.5-19.1 29.4-36.6 26.6s-29.4-19.1-26.6-36.6c1.5-9.8 2.3-19.8 2.3-30.1s-.8-20.3-2.3-30.1c-2.7-17.5 9.2-33.8 26.6-36.6zm-432.6 0c17.5 2.7 29.4 19.1 26.6 36.6C64.8 235.7 64 245.7 64 256s.8 20.3 2.3 30.1c2.7 17.5-9.2 33.8-26.6 36.6S5.9 313.5 3.1 296C1.1 283 0 269.6 0 256s1.1-27 3.1-40c2.7-17.5 19.1-29.4 36.6-26.6zM55.9 361.8c14.3-10.4 34.3-7.2 44.7 7c11.9 16.3 26.2 30.7 42.5 42.5c14.3 10.4 17.4 30.4 7 44.7s-30.4 17.4-44.7 7c-21.7-15.8-40.8-34.9-56.6-56.6c-10.4-14.3-7.2-34.3 7-44.7zm400.1 0c14.3 10.4 17.4 30.4 7 44.7c-15.8 21.7-34.9 40.8-56.6 56.6c-14.3 10.4-34.3 7.2-44.7-7s-7.2-34.3 7-44.7c16.3-11.9 30.7-26.2 42.5-42.5c10.4-14.3 30.4-17.4 44.7-7zM189.3 472.3c2.7-17.5 19.1-29.4 36.6-26.6c9.8 1.5 19.8 2.3 30.1 2.3s20.3-.8 30.1-2.3c17.5-2.7 33.8 9.2 36.6 26.6s-9.2 33.8-26.6 36.6c-13.1 2.1-26.4 3.1-40 3.1s-27-1.1-40-3.1c-17.5-2.7-29.4-19.1-26.6-36.6zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm160 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM184 328H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faFaceWorried = {\n prefix: 'fas',\n iconName: 'face-worried',\n icon: [512, 512, [], \"e3a3\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm-73.6-97.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8zM144.4 272a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM192 160c-4.4 0-8.8 .3-13 .9c-21.2 2.8-40.6 12.4-56.1 26.8c-6.5 6-16.6 5.7-22.6-.8s-5.7-16.6 .8-22.6c20.1-18.7 45.5-31.5 73.7-35.2c5.6-.7 11.4-1.1 17.2-1.1c8.8 0 16 7.2 16 16s-7.2 16-16 16zm141 .9c-4.3-.6-8.6-.9-13-.9c-8.8 0-16-7.2-16-16s7.2-16 16-16c5.8 0 11.6 .4 17.2 1.1c28.2 3.7 53.7 16.4 73.7 35.2c6.5 6 6.8 16.2 .8 22.6s-16.2 6.8-22.6 .8c-15.5-14.5-34.8-24-56.1-26.8z\"]\n};\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [\"dedent\"], \"f03b\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM.2 268.6c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6V335.3c0 13.3-15.3 20.8-25.8 12.6L.2 268.6z\"]\n};\nvar faDedent = faOutdent;\nvar faHeartCircleExclamation = {\n prefix: 'fas',\n iconName: 'heart-circle-exclamation',\n icon: [576, 512, [], \"e4fe\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faHouse = {\n prefix: 'fas',\n iconName: 'house',\n icon: [576, 512, [127968, 63498, 63500, \"home\", \"home-alt\", \"home-lg-alt\"], \"f015\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"]\n};\nvar faHome = faHouse;\nvar faHomeAlt = faHouse;\nvar faHomeLgAlt = faHouse;\nvar faVectorCircle = {\n prefix: 'fas',\n iconName: 'vector-circle',\n icon: [512, 512, [], \"e2c6\", \"M192 32c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v9.3C392.2 62.8 449.2 119.8 470.7 192H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32h-9.3C449.2 392.2 392.2 449.2 320 470.7V480c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32v-9.3C119.8 449.2 62.8 392.2 41.3 320H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32h9.3C62.8 119.8 119.8 62.8 192 41.3V32zM403.7 194.4c-16.2-38.9-47.3-70-86.2-86.2C312.7 119.9 301.3 128 288 128H224c-13.3 0-24.7-8.1-29.6-19.7c-38.9 16.2-70 47.3-86.2 86.2c11.6 4.8 19.7 16.2 19.7 29.6v64c0 13.3-8.1 24.7-19.7 29.6c16.2 38.9 47.3 70 86.2 86.2c4.8-11.6 16.2-19.7 29.6-19.7h64c13.3 0 24.7 8.1 29.6 19.7c38.9-16.2 70-47.3 86.2-86.2C392.1 312.7 384 301.3 384 288V224c0-13.3 8.1-24.7 19.7-29.6zM240 48V80h32V48H240zm32 384H240v32h32V432zM432 240v32h32V240H432zM80 240H48v32H80V240z\"]\n};\nvar faCarCircleBolt = {\n prefix: 'fas',\n iconName: 'car-circle-bolt',\n icon: [640, 512, [], \"e342\", \"M135.2 117.4L109.1 192H402.9l-26.1-74.6C372.3 104.6 360.2 96 346.6 96H165.4c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32H346.6c40.8 0 77.1 25.8 90.6 64.3l34.1 97.4C385.8 205.7 320 279.2 320 368c0 10.9 1 21.6 2.9 32H96v48c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V400 256c0-26.7 16.4-49.6 39.6-59.2zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm368-64a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm47.9 63c-4.3-3.7-10.6-4-15.1-.6l-96 72c-4.1 3.1-5.8 8.5-4.2 13.4s6.2 8.2 11.4 8.2h35.6l-30.1 54.2c-2.8 5-1.7 11.1 2.6 14.9s10.6 4 15.1 .6l96-72c4.1-3.1 5.8-8.5 4.2-13.4s-6.2-8.2-11.4-8.2H516.4l30.1-54.2c2.8-5 1.7-11.1-2.6-14.9z\"]\n};\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H368c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faFlyingDisc = {\n prefix: 'fas',\n iconName: 'flying-disc',\n icon: [640, 512, [], \"e3a9\", \"M119.7 456.3c-25.2-25.2-29.6-66.7-16.5-114.9c3.2 9.5 8.4 18.5 16.2 26.3c15.6 15.6 36 20.7 55 20.5c18.9-.1 38.8-5.3 58.2-13.3c39-16.1 82-46 121.2-85.1s69-82.2 85.1-121.2c8-19.4 13.2-39.4 13.3-58.2c.1-19-5-39.5-20.5-55c-7.8-7.8-16.8-13-26.3-16.2c48.2-13 89.8-8.6 114.9 16.6c55.3 55.3 10.5 189.8-100.2 300.5S175 511.6 119.7 456.3zM331.1 267.1C257.4 340.9 172.7 375.8 141.9 345s4.1-115.4 77.9-189.2S378.3 47.2 409 77.9s-4.1 115.4-77.9 189.2z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H352v48c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V272H240c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faSquareDownRight = {\n prefix: 'fas',\n iconName: 'square-down-right',\n icon: [448, 512, [], \"e26c\", \"M384 480c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384zM320 198.6V336c0 8.8-7.2 16-16 16H166.6c-12.5 0-22.6-10.1-22.6-22.6c0-6 2.4-11.8 6.6-16L184 280l-66.3-66.3C114 210 112 205.1 112 200s2-10 5.7-13.7l36.7-36.7c3.6-3.6 8.5-5.7 13.7-5.7s10 2 13.7 5.7L248 216l33.4-33.4c4.2-4.2 10-6.6 16-6.6c12.5 0 22.6 10.1 22.6 22.6z\"]\n};\nvar faB = {\n prefix: 'fas',\n iconName: 'b',\n icon: [320, 512, [98], \"42\", \"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H192c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128H64zm96 192H64V96h96c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288h96 32c35.3 0 64 28.7 64 64s-28.7 64-64 64H64V288z\"]\n};\nvar faSeatAirline = {\n prefix: 'fas',\n iconName: 'seat-airline',\n icon: [448, 512, [], \"e244\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V143.6c0 15.2 3.1 30.2 9.1 44.1L82 357.8c15.1 35.3 49.8 58.2 88.2 58.2H216v48H120c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H264V416h96c15.1 0 29.3-7.1 38.4-19.2l43.2-57.6c7.3-9.7 8.4-22.7 3-33.5S428.1 288 416 288H121.7L108 256H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H80.5L67.9 162.5c-2.6-6-3.9-12.4-3.9-18.9V32z\"]\n};\nvar faMoonOverSun = {\n prefix: 'fas',\n iconName: 'moon-over-sun',\n icon: [512, 512, [\"eclipse-alt\"], \"f74a\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM400 256a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-258 0c0-63.1 51.6-114 115-114c3.3 0 6.5 .1 9.7 .4c7 .6 12.8 5.7 14.3 12.6s-1.7 13.9-7.8 17.4c-22.9 12.8-38.3 37.1-38.3 64.8c0 41 33.6 74.5 75.4 74.5c4.4 0 8.8-.4 13-1.1c6.9-1.2 13.8 2.3 17 8.6s1.9 13.9-3.2 18.7c-20.7 19.9-49 32.2-80.1 32.2c-63.4 0-115-50.9-115-114z\"]\n};\nvar faEclipseAlt = faMoonOverSun;\nvar faPipe = {\n prefix: 'fas',\n iconName: 'pipe',\n icon: [64, 512, [], \"7c\", \"M32 0C49.7 0 64 14.3 64 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V32C0 14.3 14.3 0 32 0z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM160 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H224v48c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V352H112c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16h48V240z\"]\n};\nvar faPotato = {\n prefix: 'fas',\n iconName: 'potato',\n icon: [512, 512, [129364], \"e440\", \"M466.3 249.2C494.4 222.9 512 185.5 512 144C512 64.5 447.5 0 368 0c-39.8 0-75.9 16.2-102 42.3C238.6 69.8 205 95 170.9 113.6c-24.1 13.2-44 33.1-57.3 57.3C95 205 69.8 238.6 42.3 266C16.2 292.1 0 328.2 0 368c0 79.5 64.5 144 144 144c30.3 0 58.4-9.3 81.5-25.3c28.1-19.3 60.2-35.3 92.5-46.2c44.1-14.9 80.1-50.9 93.1-99.2c9.2-34.2 29.4-67.9 55.2-92.1zM384 168a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM192 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM136 416a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [9856], \"f525\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCircleA = {\n prefix: 'fas',\n iconName: 'circle-a',\n icon: [512, 512, [], \"e0f7\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-400c9.1 0 17.4 5.1 21.5 13.3l104 208c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L321.2 320H190.8l-17.4 34.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l104-208c4.1-8.1 12.4-13.3 21.5-13.3zm0 77.7L214.8 272h82.3L256 189.7z\"]\n};\nvar faHelmetBattle = {\n prefix: 'fas',\n iconName: 'helmet-battle',\n icon: [576, 512, [], \"f6eb\", \"M80 17.1c.6-8.3-5.3-15.7-13.6-17s-16.1 4.1-18 12.2L.8 218.8c-.5 2.2-.8 4.5-.8 6.8C0 242.4 13.6 256 30.4 256h2.2c17.1 0 31.3-13.2 32.5-30.2L80 17.1zM320 352V488c0 18.4 20.8 30.1 36.5 20.5l144-88c9.2-5.6 13.5-16.7 10.6-27.1C494.1 333.6 480 270.2 480 208c0-85-89.1-149.2-153.1-189c-1.9-1.2-4-2.6-6.3-4.1l0 0C311.2 8.4 298.7 0 288 0s-23.2 8.4-32.7 14.9c-2.3 1.5-4.4 3-6.3 4.1C185.1 58.8 96 123 96 208c0 62.2-14.1 125.6-31.1 185.4c-3 10.4 1.4 21.4 10.6 27.1l144 88c15.7 9.6 36.5-2.1 36.5-20.5V296h0V267.5c0-6.9-4.4-13-10.9-15.2l-72.3-24.1c-7.6-2.5-12.7-9.6-12.7-17.6c0-10.3 8.3-18.6 18.6-18.6H397.4c10.3 0 18.6 8.3 18.6 18.6c0 8-5.1 15.1-12.7 17.6l-72.3 24.1c-6.5 2.2-10.9 8.3-10.9 15.2V352h0zM509.6 .2c-8.3 1.2-14.2 8.6-13.6 17l14.9 208.6c1.2 17 15.4 30.2 32.5 30.2h2.2c16.8 0 30.4-13.6 30.4-30.4c0-2.3-.3-4.6-.8-6.8L527.6 12.4c-1.9-8.1-9.7-13.5-18-12.2z\"]\n};\nvar faButter = {\n prefix: 'fas',\n iconName: 'butter',\n icon: [640, 512, [129480], \"e3e4\", \"M64 128c0-35.3 28.7-64 64-64H448V288H64V128zM32 320H608c17.7 0 32 14.3 32 32s-14.3 32-32 32v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V384c-17.7 0-32-14.3-32-32s14.3-32 32-32zM512 64c35.3 0 64 28.7 64 64V288H480V64h32z\"]\n};\nvar faBlanketFire = {\n prefix: 'fas',\n iconName: 'blanket-fire',\n icon: [640, 512, [], \"e3da\", \"M0 128V352c0 70.7 57.3 128 128 128H337.6c-16.5-18.6-29.6-40.3-38.1-64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64H301.8c6.3-15.5 14.4-30.8 23.3-45.3c21.7-35.2 51.9-71.2 87.3-102.8c10-8.9 23-12.8 35.5-11.7V128c0-53-43-96-96-96H96C43 32 0 75 0 128zM288 350.1c0-9.8 1.3-19.9 3.6-30.1H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H291c-2-11.1-3-22.4-3-33.9zM453.5 163.8c-2.8-2.5-6.3-3.7-9.8-3.8c-3.6 0-7.2 1.2-10 3.7c-33.2 29.7-61.4 63.4-81.4 95.8c-19.7 31.9-32.4 66.2-32.4 92.6C320 439.9 390.3 512 480 512c88.7 0 160-72 160-159.8c0-20.2-9.6-50.9-24.2-79c-14.8-28.5-35.7-58.5-60.4-81.1c-5.6-5.1-14.4-5.2-20 0c-9.6 8.8-18.6 19.6-26.5 29.5c-17.3-20.7-35.8-39.9-55.5-57.7zM530 433c-15 10-31 15-49 15c-45 0-81-29-81-78c0-24 15-45 45-82c4 5 62 79 62 79l36-42c3 4 5 8 7 12c18 33 10 75-20 96z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4H448c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1s11.2-8.3 11.2-15.3V224c0-70.7-57.3-128-128-128H392.3c-36.4 0-69.9-17.6-101.1-36.4C262.3 42.1 228.3 32 192 32C86 32 0 118 0 224c0 71.1 38.6 133.1 96 166.3V456c0 13.3 10.7 24 24 24s24-10.7 24-24V410c15.3 3.9 31.4 6 48 6c5.4 0 10.7-.2 16-.7V456c0 13.3 10.7 24 24 24s24-10.7 24-24V405.1c12.4-4.4 24.2-10 35.2-16.7zM448 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faCastle = {\n prefix: 'fas',\n iconName: 'castle',\n icon: [640, 512, [], \"e0de\", \"M128 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16V64h48V16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16V64h32V16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16V64h48V16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v96V224h64V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v96V464c0 26.5-21.5 48-48 48H384V384c0-35.3-28.7-64-64-64s-64 28.7-64 64V512H48c-26.5 0-48-21.5-48-48V272 176c0-8.8 7.2-16 16-16H48c8.8 0 16 7.2 16 16v48h64V112 16z\"]\n};\nvar faGolfClub = {\n prefix: 'fas',\n iconName: 'golf-club',\n icon: [512, 512, [], \"f451\", \"M508.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L264 392.5l0-.5L42.1 318C21.4 311.1 0 326.6 0 348.4V376H48c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v32H48c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v8c0 17.7 14.3 32 32 32H255.3c12 .3 23.6-6.3 29.3-17.7l224-448z\"]\n};\nvar faArrowRightArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-right-arrow-left',\n icon: [448, 512, [8644, \"exchange\"], \"f0ec\", \"M438.6 150.6c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96 32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l306.7 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96zm-333.3 352c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 416 416 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96z\"]\n};\nvar faExchange = faArrowRightArrowLeft;\nvar faRotateRight = {\n prefix: 'fas',\n iconName: 'rotate-right',\n icon: [512, 512, [\"redo-alt\", \"rotate-forward\"], \"f2f9\", \"M463.5 224H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5z\"]\n};\nvar faRedoAlt = faRotateRight;\nvar faRotateForward = faRotateRight;\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [448, 512, [127860, 61685, \"cutlery\"], \"f2e7\", \"M416 0C400 0 288 32 288 176V288c0 35.3 28.7 64 64 64h32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352 240 32c0-17.7-14.3-32-32-32zM64 16C64 7.8 57.9 1 49.7 .1S34.2 4.6 32.4 12.5L2.1 148.8C.7 155.1 0 161.5 0 167.9c0 45.9 35.1 83.6 80 87.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V255.6c44.9-4.1 80-41.8 80-87.7c0-6.4-.7-12.8-2.1-19.1L191.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S160 7.8 160 16V150.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L127.9 14.6C127.2 6.3 120.3 0 112 0s-15.2 6.3-15.9 14.6L83.7 151c-.5 5.1-4.7 9-9.8 9c-5.4 0-9.8-4.4-9.8-9.8V16zm48.3 152l-.3 0-.3 0 .3-.7 .3 .7z\"]\n};\nvar faCutlery = faUtensils;\nvar faArrowUpWideShort = {\n prefix: 'fas',\n iconName: 'arrow-up-wide-short',\n icon: [576, 512, [\"sort-amount-up\"], \"f161\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSortAmountUp = faArrowUpWideShort;\nvar faChartPieSimpleCircleDollar = {\n prefix: 'fas',\n iconName: 'chart-pie-simple-circle-dollar',\n icon: [640, 512, [], \"e605\", \"M496 192c4.6 0 9.3 .2 13.8 .5C494.5 83.7 401 0 288 0c-9 0-16 7.6-16 16.6V240H375.2c31.5-29.8 74-48 120.8-48zM320 368c0-28.8 6.9-56 19.2-80H224V66.7c0-18.5-15.7-33.3-33.8-29.5C81.5 60.1 0 156.5 0 272C0 404.6 107.5 512 240 512c43.8 0 84.8-11.7 120.1-32.2C335 449.4 320 410.5 320 368zm320 0a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM472.8 335.4c-.4 .7-.9 1.6-.8 3.6l0 .1c0 .4 0 1.9 4.8 4.5c5.6 3 13.5 5.2 23.9 8.2l.2 0c9.3 2.6 21.1 6 30.5 11.5c10.2 6 20 16.1 20.5 32.3c.5 18.2-9.7 30.4-21.7 36.9c-5.8 3.1-12.1 5.1-18.3 6.2v10.8c0 8.8-7.2 16-16 16s-16-7.2-16-16V438.1c-8.6-1.7-16.7-4.3-23.7-6.6l0 0 0 0c-1.7-.6-3.4-1.1-5-1.6c-8.4-2.6-13.2-11.6-10.5-20s11.6-13.2 20-10.5c2 .6 3.9 1.2 5.8 1.8c11.4 3.6 20.4 6.5 29.9 6.8c6.7 .2 13.8-1.1 18.5-3.6c2.2-1.2 3.4-2.4 4-3.3c.5-.8 1.1-2.1 1-4.5c0-1.4-.2-3-4.7-5.6c-5.3-3.1-12.9-5.4-23.2-8.3l-1.8-.5c-8.9-2.5-19.8-5.6-28.6-10.3c-9.9-5.3-20.6-14.7-21.6-30.7c-1.2-18.8 10-30.9 21.8-37.2c5.7-3.1 12-5.1 18-6.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v9.4c6.3 .9 12.3 2.3 17.9 3.7c8.6 2.1 13.8 10.8 11.7 19.4s-10.8 13.8-19.4 11.7c-9.3-2.3-18.2-4-26.4-4.1c-6.2-.1-13.6 1.3-18.7 4c-2.4 1.3-3.6 2.5-4.2 3.4z\"]\n};\nvar faBalloons = {\n prefix: 'fas',\n iconName: 'balloons',\n icon: [640, 512, [], \"e2e4\", \"M320 160C320 71.6 248.4 0 160 0S0 71.6 0 160c0 92.5 87.2 174 117.7 199.7c5.9 5 7.8 13.4 4.4 20.3L97.4 429.3c-.9 1.8-1.4 3.8-1.4 5.8c0 7.1 5.8 12.9 12.9 12.9H211.1c7.1 0 12.9-5.8 12.9-12.9c0-2-.5-4-1.4-5.8L198 379.9c-3.5-6.9-1.6-15.3 4.4-20.3C232.8 334 320 252.5 320 160zM144 96c-26.5 0-48 21.5-48 48c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16s-7.2 16-16 16zM437.7 423.7c5.9 5 7.8 13.4 4.4 20.3l-24.7 49.3c-.9 1.8-1.4 3.8-1.4 5.8c0 7.1 5.8 12.9 12.9 12.9H531.1c7.1 0 12.9-5.8 12.9-12.9c0-2-.5-4-1.4-5.8L518 443.9c-3.5-6.9-1.6-15.3 4.4-20.3C552.8 398 640 316.5 640 224c0-88.4-71.6-160-160-160c-53.7 0-101.2 26.4-130.2 67c1.4 9.5 2.2 19.2 2.2 29c0 37.2-11.5 71.8-27.3 101.9c18.5 76.2 86.8 139.7 113 161.8zM416 208c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-26.5 0-48 21.5-48 48z\"]\n};\nvar faMillSign = {\n prefix: 'fas',\n iconName: 'mill-sign',\n icon: [384, 512, [], \"e1ed\", \"M302.1 42.8c5.9-16.6-2.7-35-19.4-40.9s-35 2.7-40.9 19.4L208 116.1c-5.7 4-11.1 8.5-16 13.5C171.7 108.9 143.3 96 112 96c-19.5 0-37.8 5-53.7 13.7C52.5 101.4 42.9 96 32 96C14.3 96 0 110.3 0 128v80V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-26.5 21.5-48 48-48s48 21.5 48 48v42.5L81.9 469.2c-5.9 16.6 2.7 35 19.4 40.9s35-2.7 40.9-19.4l21.4-60C168.9 441 179.6 448 192 448c17.7 0 32-14.3 32-32V261.5l35.7-100c3.9-1 8.1-1.6 12.3-1.6c26.5 0 48 21.5 48 48V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-58.2-44.3-106-101.1-111.5l19.2-53.8z\"]\n};\nvar faBowlRice = {\n prefix: 'fas',\n iconName: 'bowl-rice',\n icon: [512, 512, [], \"e2eb\", \"M176 56c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24zm24 48h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176H72c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H248c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H104c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H344c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H440c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H392c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faTimelineArrow = {\n prefix: 'fas',\n iconName: 'timeline-arrow',\n icon: [640, 512, [], \"e29d\", \"M128 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32 97.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H192v54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V288H530.7l-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384V169.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3V224H160V169.3zM328 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM224 392a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [128128], \"f54c\", \"M416 398.9c58.5-41.1 96-104.1 96-174.9C512 100.3 397.4 0 256 0S0 100.3 0 224c0 70.7 37.5 133.8 96 174.9c0 .4 0 .7 0 1.1v64c0 26.5 21.5 48 48 48h48V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h64V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h48c26.5 0 48-21.5 48-48V400c0-.4 0-.7 0-1.1zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm256-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faGameBoardSimple = {\n prefix: 'fas',\n iconName: 'game-board-simple',\n icon: [448, 512, [\"game-board-alt\"], \"f868\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm224 0V256H384V96H224zm0 160H64V416H224V256z\"]\n};\nvar faGameBoardAlt = faGameBoardSimple;\nvar faCircleVideo = {\n prefix: 'fas',\n iconName: 'circle-video',\n icon: [512, 512, [\"video-circle\"], \"e12b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM128 192c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V192zM396.9 317.9L352 288V224l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V307.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z\"]\n};\nvar faVideoCircle = faCircleVideo;\nvar faChartScatterBubble = {\n prefix: 'fas',\n iconName: 'chart-scatter-bubble',\n icon: [512, 512, [], \"e0e9\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 272a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm224-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM192 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM384 64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faHouseTurret = {\n prefix: 'fas',\n iconName: 'house-turret',\n icon: [640, 512, [], \"e1b4\", \"M256 464V277.1c0-13.5 5.6-26.3 15.6-35.4l144-132c18.4-16.8 46.5-16.8 64.9 0l144 132c9.9 9.1 15.6 21.9 15.6 35.4V464c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48zM424 272c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V296c0-13.3-10.7-24-24-24H424zM24 0C10.7 0 0 10.7 0 24V96v8 93.5c0 17 6.7 33.3 18.7 45.3L64 288V464c0 26.5 21.5 48 48 48H240c-10-13.4-16-30-16-48V277.1c0-22.4 9.4-43.8 25.9-59L352 124.6V104 96 24c0-13.3-10.7-24-24-24H280c-13.3 0-24 10.7-24 24V96H224V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24V96H96V24C96 10.7 85.3 0 72 0H24zM176 160c22.1 0 40 17.9 40 40v24c0 8.8-7.2 16-16 16H152c-8.8 0-16-7.2-16-16V200c0-22.1 17.9-40 40-40z\"]\n};\nvar faBanana = {\n prefix: 'fas',\n iconName: 'banana',\n icon: [576, 512, [], \"e2e5\", \"M304 144c0 35.7-7.3 69.6-20.5 100.5c4.8 3 9.4 6.2 13.9 9.8l35.5 28.4L413.9 261c10.6-2.8 21.4-4.4 32.3-4.9c1.2-10.5 1.8-21.3 1.8-32.1c0-84.7-36.6-160.9-94.8-213.6C345.6 3.6 335.9 0 326.1 0c-29.4 0-47.5 29.4-38 55c10.3 27.7 15.9 57.7 15.9 89zM277.4 279.2c-18.8-15-42.1-23.2-66.1-23.2c-22.9 0-45.2 7.4-63.5 21.2l-42.2 31.6c-10.6 8-12.8 23-4.8 33.6s23 12.8 33.6 4.8l42.2-31.6c10-7.5 22.2-11.6 34.7-11.6c10.5 0 20.8 2.9 29.7 8.2C194.1 366 125 400 48 400c-26.5 0-48 21.5-48 48v16c0 26.5 21.5 48 48 48l112 0c117.3 0 218.2-70.1 263.1-170.6l11.5-3.1c5.7-1.5 11.6-2.3 17.5-2.3c23.8 0 45.9 12.5 58.1 32.9l21.3 35.4c6.8 11.4 21.6 15 32.9 8.2s15-21.6 8.2-32.9l-21.3-35.4C530.4 309.3 492.7 288 452 288c-3.8 0-7.5 .2-11.3 .6c-5.5 .5-10.9 1.5-16.3 2.8c-.8 .2-1.5 .4-2.3 .6l-96.7 25.8h0l-48.1-38.5z\"]\n};\nvar faHandHoldingSkull = {\n prefix: 'fas',\n iconName: 'hand-holding-skull',\n icon: [576, 512, [], \"e1a4\", \"M371.6 232.2c-6 3.8-9.4 10.8-8 17.7l4.1 20.6c.2 .9 .3 1.9 .3 2.9c0 8-6.5 14.6-14.6 14.6H222.6c-8 0-14.6-6.5-14.6-14.6c0-1 .1-1.9 .3-2.9l4.1-20.6c1.4-7-2-13.9-8-17.7C167.8 209 144 171 144 128C144 57.3 208.5 0 288 0s144 57.3 144 128c0 43-23.8 81-60.4 104.2zM240 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faPeopleDress = {\n prefix: 'fas',\n iconName: 'people-dress',\n icon: [640, 512, [], \"e217\", \"M208 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM70.2 384H88v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h16v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h17.8c10.9 0 18.6-10.7 15.2-21.1L226.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9c9.8-5.9 15.3-16.2 15.5-26.9c.2 10.7 5.7 21 15.5 26.9c15.1 9.1 34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1H408v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h16v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h17.8c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3H474.2c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-3 5-4.5 10.5-4.6 15.9c-.1-5.4-1.6-10.9-4.6-15.9l-53.6-89.2c-20.3-33.7-56.7-54.3-96-54.3H154.2c-39.3 0-75.7 20.6-96 54.3L4.6 271.5c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L55 362.9C51.6 373.3 59.3 384 70.2 384zM528 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faLoveseat = {\n prefix: 'fas',\n iconName: 'loveseat',\n icon: [512, 512, [\"couch-small\"], \"f4cc\", \"M64 160C64 89.3 121.3 32 192 32H320c70.7 0 128 57.3 128 128v33.6c-36.5 7.4-64 39.7-64 78.4v48H128V272c0-38.7-27.5-71-64-78.4V160zM416 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48V448c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32H96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3v48 32h32H384h32V320 272z\"]\n};\nvar faCouchSmall = faLoveseat;\nvar faTowerBroadcast = {\n prefix: 'fas',\n iconName: 'tower-broadcast',\n icon: [576, 512, [\"broadcast-tower\"], \"f519\", \"M80.3 44C69.8 69.9 64 98.2 64 128s5.8 58.1 16.3 84c6.6 16.4-1.3 35-17.7 41.7s-35-1.3-41.7-17.7C7.4 202.6 0 166.1 0 128S7.4 53.4 20.9 20C27.6 3.6 46.2-4.3 62.6 2.3S86.9 27.6 80.3 44zM555.1 20C568.6 53.4 576 89.9 576 128s-7.4 74.6-20.9 108c-6.6 16.4-25.3 24.3-41.7 17.7S489.1 228.4 495.7 212c10.5-25.9 16.3-54.2 16.3-84s-5.8-58.1-16.3-84C489.1 27.6 497 9 513.4 2.3s35 1.3 41.7 17.7zM352 128c0 23.7-12.9 44.4-32 55.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V183.4c-19.1-11.1-32-31.7-32-55.4c0-35.3 28.7-64 64-64s64 28.7 64 64zM170.6 76.8C163.8 92.4 160 109.7 160 128s3.8 35.6 10.6 51.2c7.1 16.2-.3 35.1-16.5 42.1s-35.1-.3-42.1-16.5c-10.3-23.6-16-49.6-16-76.8s5.7-53.2 16-76.8c7.1-16.2 25.9-23.6 42.1-16.5s23.6 25.9 16.5 42.1zM464 51.2c10.3 23.6 16 49.6 16 76.8s-5.7 53.2-16 76.8c-7.1 16.2-25.9 23.6-42.1 16.5s-23.6-25.9-16.5-42.1c6.8-15.6 10.6-32.9 10.6-51.2s-3.8-35.6-10.6-51.2c-7.1-16.2 .3-35.1 16.5-42.1s35.1 .3 42.1 16.5z\"]\n};\nvar faBroadcastTower = faTowerBroadcast;\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [128763], \"f63c\", \"M368.6 96l76.8 96H288V96h80.6zM224 80V192H64c-17.7 0-32 14.3-32 32v64c-17.7 0-32 14.3-32 32s14.3 32 32 32H65.1c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16h66.3c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32V224c0-17.7-14.3-32-32-32H527.4L418.6 56c-12.1-15.2-30.5-24-50-24H272c-26.5 0-48 21.5-48 48zm0 288a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm288 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0z\"]\n};\nvar faBlockQuote = {\n prefix: 'fas',\n iconName: 'block-quote',\n icon: [448, 512, [], \"e0b5\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM160 224c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H160zM128 416c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM32 224c-17.7 0-32 14.3-32 32V416c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32z\"]\n};\nvar faUpLong = {\n prefix: 'fas',\n iconName: 'up-long',\n icon: [320, 512, [\"long-arrow-alt-up\"], \"f30c\", \"M318 177.5c3.8-8.8 2-19-4.6-26l-136-144C172.9 2.7 166.6 0 160 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26S14.4 192 24 192H96l0 288c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32l0-288h72c9.6 0 18.2-5.7 22-14.5z\"]\n};\nvar faLongArrowAltUp = faUpLong;\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [384, 512, [9209], \"f04d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nvar faCodeMerge = {\n prefix: 'fas',\n iconName: 'code-merge',\n icon: [448, 512, [], \"f387\", \"M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3V358.7C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V272c26.7 20.1 60 32 96 32h86.7c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48H208c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faMoneyCheckDollarPen = {\n prefix: 'fas',\n iconName: 'money-check-dollar-pen',\n icon: [640, 512, [\"money-check-edit-alt\"], \"f873\", \"M0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64v64.6c-15.2 2-29.8 8.8-41.4 20.5L353.3 394.3c-8.2 8.2-14 18.5-16.8 29.7l-6 23.9H64c-35.3 0-64-28.7-64-64V128zM256 304c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm16-112c-8.8 0-16 7.2-16 16s7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H272zM144 139.9c-11.1 0-20.1 9-20.1 20.1v6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.7 4c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9l0 0 0 0c-2.2-.7-4.3-1.5-6.4-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1V352c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1v-5.5c5.3-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4V160c0-11.1-9-20.1-20.1-20.1zm469.8 95.8l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM375.9 417L505.1 287.8l71 71L446.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faMoneyCheckEditAlt = faMoneyCheckDollarPen;\nvar faUpFromLine = {\n prefix: 'fas',\n iconName: 'up-from-line',\n icon: [384, 512, [\"arrow-alt-from-bottom\"], \"f346\", \"M41.9 166.1L164.7 43.3C171.9 36.1 181.8 32 192 32s20.1 4.1 27.3 11.3L342.1 166.1c6.4 6.4 9.9 15 9.9 24c0 18.7-15.2 33.9-33.9 33.9H256V352c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V224H65.9C47.2 224 32 208.8 32 190.1c0-9 3.6-17.6 9.9-24zM32 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faArrowAltFromBottom = faUpFromLine;\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faHurricane = {\n prefix: 'fas',\n iconName: 'hurricane',\n icon: [384, 512, [], \"f751\", \"M0 208C0 104.4 75.7 18.5 174.9 2.6C184 1.2 192 8.6 192 17.9V81.2c0 8.4 6.5 15.3 14.7 16.5C307 112.5 384 199 384 303.4c0 103.6-75.7 189.5-174.9 205.4c-9.2 1.5-17.1-5.9-17.1-15.2V430.2c0-8.4-6.5-15.3-14.7-16.5C77 398.9 0 312.4 0 208zm288 48A96 96 0 1 0 96 256a96 96 0 1 0 192 0zm-96-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGridRound2Plus = {\n prefix: 'fas',\n iconName: 'grid-round-2-plus',\n icon: [512, 512, [], \"e5dc\", \"M128 224a96 96 0 1 1 0-192 96 96 0 1 1 0 192zm0 256a96 96 0 1 1 0-192 96 96 0 1 1 0 192zM480 128a96 96 0 1 1 -192 0 96 96 0 1 1 192 0zM384 272c13.3 0 24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H408v64c0 13.3-10.7 24-24 24s-24-10.7-24-24V408H296c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V296c0-13.3 10.7-24 24-24z\"]\n};\nvar faPeoplePants = {\n prefix: 'fas',\n iconName: 'people-pants',\n icon: [640, 512, [], \"e219\", \"M160 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9c9.8-5.9 15.3-16.2 15.5-26.9c.2 10.7 5.7 21 15.5 26.9c15.1 9.1 34.8 4.2 43.9-10.9L408 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H465.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-3 5-4.5 10.5-4.6 15.9c-.1-5.4-1.6-10.9-4.6-15.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H145.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L88 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM480 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faMound = {\n prefix: 'fas',\n iconName: 'mound',\n icon: [576, 512, [], \"e52d\", \"M144.1 179.2C173.8 127.7 228.6 96 288 96s114.2 31.7 143.9 83.2L540.4 368c12.3 21.3-3.1 48-27.7 48H63.3c-24.6 0-40-26.6-27.7-48L144.1 179.2z\"]\n};\nvar faWindsock = {\n prefix: 'fas',\n iconName: 'windsock',\n icon: [512, 512, [], \"f777\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V320h64v8.6c0 20.3 18.7 35.5 38.5 31.3l41.5-8.6V64.7L166.5 56c-19.9-4.1-38.5 11-38.5 31.3V96H64V32zm64 112V272H64V144h64zM272 78V338l96-20V98L272 78zM486.5 293.3c14.8-3.1 25.5-16.2 25.5-31.3V154c0-15.2-10.6-28.2-25.5-31.3L432 111.3V304.7l54.5-11.4z\"]\n};\nvar faCircleHalf = {\n prefix: 'fas',\n iconName: 'circle-half',\n icon: [512, 512, [], \"e110\", \"M256 32c0-17.7-14.4-32.2-31.9-30C97.8 17.7 0 125.4 0 256S97.8 494.3 224.1 510c17.5 2.2 31.9-12.4 31.9-30V32z\"]\n};\nvar faBrakeWarning = {\n prefix: 'fas',\n iconName: 'brake-warning',\n icon: [640, 512, [], \"e0c7\", \"M96 256a224 224 0 1 1 448 0A224 224 0 1 1 96 256zM344 152c0-13.3-10.7-24-24-24s-24 10.7-24 24V264c0 13.3 10.7 24 24 24s24-10.7 24-24V152zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM91.1 109C63.8 151.4 48 201.8 48 256s15.8 104.6 43.1 147c7.2 11.1 4 26-7.2 33.2s-26 4-33.2-7.2C18.6 379.1 0 319.7 0 256S18.6 132.9 50.7 83c7.2-11.1 22-14.4 33.2-7.2s14.4 22 7.2 33.2zM589.3 83C621.4 132.9 640 192.3 640 256s-18.6 123.1-50.7 173c-7.2 11.1-22 14.4-33.2 7.2s-14.4-22-7.2-33.2c27.3-42.4 43.1-92.8 43.1-147s-15.8-104.6-43.1-147c-7.2-11.1-4-26 7.2-33.2s26-4 33.2 7.2z\"]\n};\nvar faToiletPortable = {\n prefix: 'fas',\n iconName: 'toilet-portable',\n icon: [320, 512, [], \"e583\", \"M0 32V64H320V32c0-17.7-14.3-32-32-32H32C14.3 0 0 14.3 0 32zM24 96H0v24V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H272v8c0 13.3 10.7 24 24 24s24-10.7 24-24V120 96H296 24zM256 240v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V240c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [512, 512, [128191, 128192, 128440], \"f51f\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-96-32a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zM96 240c0-35 17.5-71.1 45.2-98.8S205 96 240 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-45.4 0-89.2 22.3-121.5 54.5S64 194.6 64 240c0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faFileArrowDown = {\n prefix: 'fas',\n iconName: 'file-arrow-down',\n icon: [384, 512, [\"file-download\"], \"f56d\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFileDownload = faFileArrowDown;\nvar faSaxophoneFire = {\n prefix: 'fas',\n iconName: 'saxophone-fire',\n icon: [640, 512, [\"sax-hot\"], \"f8db\", \"M102.6 0c-2.5 0-5 .9-7 2.6c-23.3 20.8-43 44.4-57 67.1C24.9 92 16 116 16 134.5c0 14.6 2.8 28.6 7.9 41.5H79.5c-4.8-8-7.5-17.8-7.5-29c0-16.8 10.5-31.5 31.5-57.4c2.8 3.5 43.4 55.3 43.4 55.3l25.2-29.4c2.1 2.8 3.5 5.6 4.9 8.4c9.1 16.7 8.7 36.7-.2 52.1H232c5.1-12.9 8-26.9 8-41.5c0-14.1-6.7-35.7-16.9-55.3c-10.3-19.9-25-40.9-42.3-56.8c-3.9-3.6-10.1-3.6-14 0c-6.7 6.1-13 13.7-18.5 20.7c-12.1-14.5-25-28-38.8-40.4C107.5 .9 105.1 0 102.6 0zm68.8 338.1L218.9 256H232c13.3 0 24-10.7 24-24s-10.7-24-24-24H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H16.9L4.4 309.4C1.5 321.8 0 334.4 0 347.1v3.1C0 439.6 72.4 512 161.8 512c49.4 0 96.1-22.6 126.8-61.4L534.4 140.1c6.1-7.7 15.3-12.1 25.1-12.1h64.2c9 0 16.3-7.3 16.3-16.3c0-4.9-2.2-9.5-5.9-12.6L609.8 78.8c-11.5-9.6-26-14.8-41-14.8H538.5c-17 0-33.3 6.7-45.3 18.7L449 127l-8-8c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l8 8L401 175l-8-8c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l8 8L353 223l-8-8c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l8 8L206.6 369.4c-4.2 4.2-10 6.6-16 6.6c-12.5 0-22.6-10.1-22.6-22.6v-2.6c0-4.4 1.2-8.8 3.4-12.6zM144 280a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM88 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faSaxHot = faSaxophoneFire;\nvar faCameraWebSlash = {\n prefix: 'fas',\n iconName: 'camera-web-slash',\n icon: [640, 512, [\"webcam-slash\"], \"f833\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135.2-106C525.9 324.9 544 276.6 544 224C544 100.3 443.7 0 320 0C248 0 183.9 34 143 86.7L38.8 5.1zM193.3 126.2C222.6 88.4 268.5 64 320 64c88.4 0 160 71.6 160 160c0 37.7-13 72.3-34.8 99.6L420 303.9c17.5-21.9 28-49.7 28-79.9c0-70.7-57.3-128-128-128c-41.3 0-78.1 19.6-101.5 50l-25.2-19.7zm88.2 69.1l-25.2-19.7C270.9 156.4 294 144 320 144c8.8 0 16 7.2 16 16s-7.2 16-16 16c-15.8 0-29.8 7.6-38.5 19.3zM507.7 496L359.4 379.1c-12.6 3.2-25.8 4.9-39.4 4.9c-88.4 0-160-71.6-160-160c0-.6 0-1.3 0-1.9l-58.8-46.3C97.8 191.3 96 207.4 96 224c0 79.5 41.4 149.3 103.8 189.1l-58.2 40.7c-11.4 8-16.4 22.5-12.2 35.8S146 512 160 512H480c11.6 0 22.1-6.2 27.7-16zM324.8 351.9L194.5 249.2C206.2 307.8 257.9 352 320 352c1.6 0 3.2 0 4.8-.1z\"]\n};\nvar faWebcamSlash = faCameraWebSlash;\nvar faFolderMedical = {\n prefix: 'fas',\n iconName: 'folder-medical',\n icon: [512, 512, [], \"e18c\", \"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM224 208v48H176c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H288V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16z\"]\n};\nvar faFolderGear = {\n prefix: 'fas',\n iconName: 'folder-gear',\n icon: [512, 512, [\"folder-cog\"], \"e187\", \"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416zM368.6 259.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3l-2.9 1.7c-9.2 5.3-20.4 4-29.6-1.3s-16.1-14.5-16.1-25.1v-3.4c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9v3.4c0 10.6-6.9 19.8-16.1 25.1s-20.4 6.6-29.6 1.3l-2.9-1.7c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 18l2.9 1.7c9.2 5.3 13.7 15.8 13.7 26.4s-4.5 21.1-13.7 26.4l-3 1.7c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3.1 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3l2.9-1.7c9.2-5.3 20.4-4 29.6 1.3s16.1 14.5 16.1 25.1v3.4c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9v-3.4c0-10.6 6.9-19.8 16.1-25.1s20.4-6.6 29.6-1.3l2.9 1.7c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-3-1.7c-9.2-5.3-13.7-15.8-13.7-26.4s4.5-21.1 13.7-26.4l3-1.7zM216 288a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n};\nvar faFolderCog = faFolderGear;\nvar faHandWave = {\n prefix: 'fas',\n iconName: 'hand-wave',\n icon: [512, 512, [], \"e1a7\", \"M352.2 82.3L351 73.8c-3-21.1-19.6-37.7-40.7-40.7l-8.5-1.2c-8.7-1.2-14.8-9.4-13.6-18.1S297.5-1.1 306.3 .2l8.5 1.2c35.2 5 62.9 32.7 67.9 67.9l1.2 8.5c1.2 8.7-4.8 16.9-13.6 18.1s-16.9-4.8-18.1-13.6zM185.4 70.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192c3.3 3.3 9.4 1.1 9.4-3.7l0-77.7c0-22.1 17.9-40 40-40s40 17.9 40 40V312.3c0 60.2-27.9 116.9-75.5 153.7C385.7 505.3 321 515.7 263 498.7c-28.4-7.1-55.3-21.8-77.6-44.1l-4.9-4.9L73.4 342.6l-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l31.9 31.9 .1 .1L165.3 344c5.2 5.2 13.6 5.2 18.7 0s5.2-13.6 0-18.7L57.4 198.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L229.3 280c5.2 5.2 13.6 5.2 18.7 0s5.2-13.6 0-18.7L105.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L293.3 216c5.2 5.2 13.6 5.2 18.7 0s5.2-13.6 0-18.7L185.4 70.6zM13.7 352.2c8.7-1.2 16.9 4.8 18.1 13.6l1.2 8.5c3 21.1 19.6 37.7 40.7 40.7l8.5 1.2c8.7 1.3 14.8 9.4 13.6 18.1s-9.4 14.8-18.1 13.6l-8.5-1.2c-35.2-5-62.9-32.7-67.9-67.9L.2 370.3c-1.2-8.7 4.8-16.9 13.6-18.1z\"]\n};\nvar faArrowUpArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-up-arrow-down',\n icon: [576, 512, [\"sort-up-down\"], \"e099\", \"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 141.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96zm352 333.3c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L448 370.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V370.7l-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96z\"]\n};\nvar faSortUpDown = faArrowUpArrowDown;\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M0 112C0 67.8 35.8 32 80 32H416c88.4 0 160 71.6 160 160V352h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0H288c0 53-43 96-96 96s-96-43-96-96H80c-44.2 0-80-35.8-80-80V112zM320 352H448V256H416c-8.8 0-16-7.2-16-16s7.2-16 16-16h32V160c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32V352zM96 128c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96zm96 336a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faShieldCat = {\n prefix: 'fas',\n iconName: 'shield-cat',\n icon: [512, 512, [], \"e572\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4h.2c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4h48c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3h.2c5.8 0 10.4 4.7 10.4 10.4V272c0 53-43 96-96 96s-96-43-96-96V154.4zM216 288a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm96-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faMessageSlash = {\n prefix: 'fas',\n iconName: 'message-slash',\n icon: [640, 512, [\"comment-alt-slash\"], \"f4a9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-82.3-64.5C565.1 393 576 373.8 576 352V64c0-35.3-28.7-64-64-64H128C104.4 0 83.8 12.7 72.7 31.7L38.8 5.1zM64 352c0 35.3 28.7 64 64 64h96v80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L373.3 416h32.8L64 146.4V352z\"]\n};\nvar faCommentAltSlash = faMessageSlash;\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [448, 512, [9889, \"zap\"], \"f0e7\", \"M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288H175.5L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H272.5L349.4 44.6z\"]\n};\nvar faZap = faBolt;\nvar faTrashCanCheck = {\n prefix: 'fas',\n iconName: 'trash-can-check',\n icon: [448, 512, [], \"e2a9\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zM337 265c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L337 265z\"]\n};\nvar faGlassWater = {\n prefix: 'fas',\n iconName: 'glass-water',\n icon: [384, 512, [], \"e4f4\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM73 156.5L66.4 64H317.6L311 156.5l-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0c-20.9-10.4-45.5-10.4-66.4 0c-19.4 9.7-42.2 9.7-61.6 0L73 156.5z\"]\n};\nvar faOilWell = {\n prefix: 'fas',\n iconName: 'oil-well',\n icon: [576, 512, [], \"e532\", \"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4L308.5 167.5l-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39L96 222.6V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H406.7L340 257.5l-62.2 16.1L305.3 352H238.7L265 277l-74.6 19.3L137.3 448H96V288.8l337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l11.2-32H327.7l11.2 32H205.1z\"]\n};\nvar faPersonSimple = {\n prefix: 'fas',\n iconName: 'person-simple',\n icon: [256, 512, [], \"e220\", \"M64 64a64 64 0 1 1 128 0A64 64 0 1 1 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160h44.8c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6V464c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V348.3c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3z\"]\n};\nvar faVault = {\n prefix: 'fas',\n iconName: 'vault',\n icon: [576, 512, [], \"e2c5\", \"M64 0C28.7 0 0 28.7 0 64V416c0 35.3 28.7 64 64 64H80l16 32h64l16-32H400l16 32h64l16-32h16c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 320a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-240a160 160 0 1 1 0 320 160 160 0 1 1 0-320zM480 221.3V336c0 8.8-7.2 16-16 16s-16-7.2-16-16V221.3c-18.6-6.6-32-24.4-32-45.3c0-26.5 21.5-48 48-48s48 21.5 48 48c0 20.9-13.4 38.7-32 45.3z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [448, 512, [9794], \"f222\", \"M289.8 46.8c3.7-9 12.5-14.8 22.2-14.8H424c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L321 204.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176S0 401.2 0 304s78.8-176 176-176c37 0 71.4 11.4 99.8 31l52.6-52.6L295 73c-6.9-6.9-8.9-17.2-5.2-26.2zM400 80l0 0h0v0zM176 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [448, 512, [128701], \"f7d8\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V196.9c-1.9 1.4-3.8 2.9-5.6 4.4C10.9 214.5 0 232.9 0 256c0 46.9 14.3 84.1 37 112.5c14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H352c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8c22.7-28.4 37-65.5 37-112.5c0-23.1-10.9-41.5-26.4-54.6c-1.8-1.5-3.7-3-5.6-4.4V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM384 256.3c0 1-.3 2.6-3.8 5.6c-4.8 4.1-14 9-29.3 13.4C320.5 284 276.1 288 224 288s-96.5-4-126.9-12.8c-15.3-4.4-24.5-9.3-29.3-13.4c-3.5-3-3.8-4.6-3.8-5.6l0-.3 0-.1c0-1 0-2.5 3.8-5.8c4.8-4.1 14-9 29.3-13.4C127.5 228 171.9 224 224 224s96.5 4 126.9 12.8c15.3 4.4 24.5 9.3 29.3 13.4c3.8 3.2 3.8 4.8 3.8 5.8l0 .1 0 .3zM328.2 384l-.2 .5 0-.5h.2zM112 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPlaneCircleXmark = {\n prefix: 'fas',\n iconName: 'plane-circle-xmark',\n icon: [640, 512, [], \"e557\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [320, 512, [165, \"cny\", \"jpy\", \"rmb\", \"yen\"], \"f157\", \"M58.6 46.2C48.8 31.5 29 27.6 14.3 37.4S-4.4 67 5.4 81.7L100.2 224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V288h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H219.8L314.6 81.7c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L160 198.3 58.6 46.2z\"]\n};\nvar faCny = faYenSign;\nvar faJpy = faYenSign;\nvar faRmb = faYenSign;\nvar faYen = faYenSign;\nvar faGearCode = {\n prefix: 'fas',\n iconName: 'gear-code',\n icon: [512, 512, [], \"e5e8\", \"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zm-208.2-3.9c1.5-8.7-4.4-17-13.2-18.4s-17 4.4-18.4 13.2l-32 192c-1.5 8.7 4.4 17 13.2 18.4s17-4.4 18.4-13.2l32-192zM187.3 227.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-40 40c-6.2 6.2-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L158.6 256l28.7-28.7zm160-22.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L353.4 256l-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l40-40c6.2-6.2 6.2-16.4 0-22.6l-40-40z\"]\n};\nvar faNotes = {\n prefix: 'fas',\n iconName: 'notes',\n icon: [512, 512, [], \"e202\", \"M160 32c-35.3 0-64 28.7-64 64V352c0 35.3 28.7 64 64 64H339.2c4.3 0 8.6-.4 12.8-1.3V320c0-17.7 14.3-32 32-32h94.7c.9-4.2 1.3-8.5 1.3-12.8V96c0-35.3-28.7-64-64-64H160zM384 352v45.7V416l96-96H461.7 416 384v32zM296 464H136c-48.6 0-88-39.4-88-88l0-224c0-13.3-10.7-24-24-24s-24 10.7-24 24V376c0 75.1 60.9 136 136 136H296c13.3 0 24-10.7 24-24s-10.7-24-24-24z\"]\n};\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [8381, \"rouble\", \"rub\", \"ruble\"], \"f158\", \"M96 32C78.3 32 64 46.3 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V416H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V320H240c79.5 0 144-64.5 144-144s-64.5-144-144-144H96zM240 256H128V96H240c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faRouble = faRubleSign;\nvar faRub = faRubleSign;\nvar faRuble = faRubleSign;\nvar faTrashUndo = {\n prefix: 'fas',\n iconName: 'trash-undo',\n icon: [448, 512, [\"trash-arrow-turn-left\"], \"f895\", \"M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128zM217.8 199.9c8.9 9.9 8.1 25-1.8 33.9L182.5 264H240c48.6 0 88 39.4 88 88v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V352c0-22.1-17.9-40-40-40H182.5l33.5 30.2c9.9 8.9 10.7 24 1.8 33.9s-24 10.7-33.9 1.8l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c9.9-8.9 25-8.1 33.9 1.8z\"]\n};\nvar faTrashArrowTurnLeft = faTrashUndo;\nvar faChampagneGlass = {\n prefix: 'fas',\n iconName: 'champagne-glass',\n icon: [320, 512, [\"glass-champagne\"], \"f79e\", \"M88 0C71.9 0 58.3 12 56.3 27.9L33.2 208C24.9 273.4 67.3 332.4 128 348V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348c60.7-15.6 103.1-74.6 94.8-140l-23-180.1C261.7 12 248.1 0 232 0H88zm20 128l8.2-64h87.7l8.2 64H108z\"]\n};\nvar faGlassChampagne = faChampagneGlass;\nvar faObjectsAlignCenterHorizontal = {\n prefix: 'fas',\n iconName: 'objects-align-center-horizontal',\n icon: [512, 512, [], \"e3bc\", \"M256 0c-13.3 0-24 10.7-24 24V64H80c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48H232v64H144c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h88v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h88c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H280V224H432c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H280V24c0-13.3-10.7-24-24-24z\"]\n};\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nvar faTrashCanSlash = {\n prefix: 'fas',\n iconName: 'trash-can-slash',\n icon: [640, 512, [\"trash-alt-slash\"], \"e2ad\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512 376V128H195.6L154.8 96H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H416l-7.2-14.3C403.4 6.8 392.3 0 380.2 0H259.8c-12.1 0-23.2 6.8-28.6 17.7L224 32H128c-13.4 0-24.8 8.2-29.6 19.8L38.8 5.1zM304 213v-5c0-8.8 7.2-16 16-16s16 7.2 16 16v30L304 213zm96 75.2V208c0-8.8 7.2-16 16-16s16 7.2 16 16V313.3l-32-25.1zM128 448c0 35.3 28.7 64 64 64H448c20.1 0 38.1-9.3 49.8-23.8L431.5 436c-1.8 6.9-8 12-15.5 12c-8.8 0-16-7.2-16-16V411.2l-64-50.4V432c0 8.8-7.2 16-16 16s-16-7.2-16-16V335.5l-64-50.4V432c0 8.8-7.2 16-16 16s-16-7.2-16-16V259.9l-80-63V448z\"]\n};\nvar faTrashAltSlash = faTrashCanSlash;\nvar faScreenUsers = {\n prefix: 'fas',\n iconName: 'screen-users',\n icon: [640, 512, [\"users-class\"], \"f63d\", \"M96 0C60.7 0 32 28.7 32 64V248.4C49 233.2 71.4 224 96 224V64l448 0V224c24.6 0 47 9.2 64 24.4V64c0-35.3-28.7-64-64-64H96zm64 320A64 64 0 1 0 32 320a64 64 0 1 0 128 0zM0 480c0 17.7 14.3 32 32 32H160c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64zM384 320a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM224 480c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H288c-35.3 0-64 28.7-64 64zm320-96a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-35.3 0-64 28.7-64 64c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H512z\"]\n};\nvar faUsersClass = faScreenUsers;\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 256a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faSquareArrowLeft = {\n prefix: 'fas',\n iconName: 'square-arrow-left',\n icon: [448, 512, [\"arrow-square-left\"], \"f33a\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM87 239L199 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L344 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-182.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L87 273c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faArrowSquareLeft = faSquareArrowLeft;\nvar faSquare8 = {\n prefix: 'fas',\n iconName: 'square-8',\n icon: [448, 512, [], \"e25d\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm232 32H216c-39.8 0-72 32.2-72 72c0 15.7 5 30.1 13.5 42c-18 14.7-29.5 37-29.5 62c0 44.2 35.8 80 80 80h32c44.2 0 80-35.8 80-80c0-25-11.5-47.4-29.5-62c8.5-11.8 13.5-26.3 13.5-42c0-39.8-32.2-72-72-72zm-16 96c-13.2 0-24-10.8-24-24s10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24c0 0 0 0 0 0H216s0 0 0 0zm16 48h8c17.7 0 32 14.3 32 32s-14.3 32-32 32H208c-17.7 0-32-14.3-32-32s14.3-32 32-32h8 16z\"]\n};\nvar faFaceSmileHearts = {\n prefix: 'fas',\n iconName: 'face-smile-hearts',\n icon: [640, 512, [], \"e390\", \"M448.2 34.3c-1.3 19.7 5.5 39.8 20.5 54.9l55.5 55.8c9.2 9.3 21.1 14.2 33.2 14.9C569.4 189.6 576 222 576 256c0 37.4-8 73-22.5 105.1c-27-15.2-61.9-11.3-84.8 11.8c-25.8 26-27.5 67.1-4.9 94.9C422.8 495.7 373.3 512 320 512c-61.3 0-117.6-21.6-161.7-57.6l13.1-13.1c27.6-27.7 27.6-72.6 0-100.4c-24.8-25-63.6-27.6-91.3-7.7c-1.7-1.2-3.5-2.4-5.2-3.4C67.8 306.5 64 281.7 64 256C64 114.6 178.6 0 320 0c46.7 0 90.5 12.5 128.2 34.3zM205.5 323.9c-6.7 5.8-7.4 15.9-1.6 22.6c22.2 25.7 61 53.5 116.1 53.5s93.8-27.9 116.1-53.5c5.8-6.7 5.1-16.8-1.6-22.6s-16.8-5.1-22.6 1.6C394 346.2 363.4 368 320 368s-74-21.8-91.9-42.5c-5.8-6.7-15.9-7.4-22.6-1.6zm-.7-90.3c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zm230.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM573.7 11.5c15.2-15.3 39.8-15.3 54.9 0s15.2 40 0 55.2l-55.4 55.8c-7.3 7.3-19.1 7.3-26.3 0L491.4 66.7c-15.2-15.3-15.2-40 0-55.2s39.8-15.3 54.9 0L560 25.3l13.7-13.8zm54.9 384c15.2 15.3 15.2 40 0 55.2l-55.4 55.8c-7.3 7.3-19.1 7.3-26.3 0l-55.5-55.8c-15.2-15.3-15.2-40 0-55.2s39.8-15.3 54.9 0L560 409.3l13.7-13.8c15.2-15.3 39.8-15.3 54.9 0zm-534.9-32c15.2-15.3 39.8-15.3 54.9 0s15.2 40 0 55.2L93.2 474.5c-7.3 7.3-19.1 7.3-26.3 0L11.4 418.7c-15.2-15.3-15.2-40 0-55.2s39.8-15.3 54.9 0L80 377.3l13.7-13.8z\"]\n};\nvar faBracketsSquare = {\n prefix: 'fas',\n iconName: 'brackets-square',\n icon: [448, 512, [\"brackets\"], \"f7e9\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h64V96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zM64 32h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H64V416h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32z\"]\n};\nvar faBrackets = faBracketsSquare;\nvar faLaptopArrowDown = {\n prefix: 'fas',\n iconName: 'laptop-arrow-down',\n icon: [640, 512, [], \"e1c6\", \"M128 32C92.7 32 64 60.7 64 96V352h64V96H256V32H128zM512 96V352h64V96c0-35.3-28.7-64-64-64H384V96H512zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480H563.2c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2H19.2zM344 56c0-13.3-10.7-24-24-24s-24 10.7-24 24V238.1l-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39V56z\"]\n};\nvar faHockeyStickPuck = {\n prefix: 'fas',\n iconName: 'hockey-stick-puck',\n icon: [640, 512, [], \"e3ae\", \"M462.3 3.4c15.8 7.9 22.2 27.1 14.3 42.9L261.5 476.6c-10.8 21.7-33 35.4-57.2 35.4H160 128 96V480 352H252.2L419.4 17.7c7.9-15.8 27.1-22.2 42.9-14.3zM0 384c0-17.7 14.3-32 32-32H64V512H32c-17.7 0-32-14.3-32-32V384zm416 32H608c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448c0-17.7 14.3-32 32-32z\"]\n};\nvar faHouseTree = {\n prefix: 'fas',\n iconName: 'house-tree',\n icon: [640, 512, [], \"e1b3\", \"M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H514.6L601 300c7.7 9.6 9.2 22.8 3.9 33.9S588.3 352 576 352H546.6L633 460c7.7 9.6 9.2 22.8 3.9 33.9S620.3 512 608 512H400c10-13.4 16-30 16-48V277.1c0-22.4-9.4-43.8-25.9-59L282.9 119.9 393.4 9.4zM0 277.1c0-13.5 5.6-26.3 15.6-35.4l144-132c18.4-16.8 46.5-16.8 64.9 0l144 132c9.9 9.1 15.6 21.9 15.6 35.4V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V277.1zM144 296v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V296c0-13.3-10.7-24-24-24H168c-13.3 0-24 10.7-24 24z\"]\n};\nvar faSignalFair = {\n prefix: 'fas',\n iconName: 'signal-fair',\n icon: [640, 512, [\"signal-2\"], \"f68d\", \"M224 320c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V320zM96 416c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32s32-14.3 32-32V416z\"]\n};\nvar faSignal2 = faSignalFair;\nvar faFaceLaughWink = {\n prefix: 'fas',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faLaughWink = faFaceLaughWink;\nvar faCircleDollar = {\n prefix: 'fas',\n iconName: 'circle-dollar',\n icon: [512, 512, [\"dollar-circle\", \"usd-circle\"], \"f2e8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm20.8-378.4v14.2c9.7 1.2 19.4 3.9 29 6.6c1.9 .5 3.7 1 5.6 1.6c11.5 3.2 18.3 15.1 15.1 26.6s-15.1 18.2-26.6 15.1c-1.6-.4-3.1-.9-4.7-1.3c-7-2-14-3.9-21.1-5.3c-13.2-2.5-28.5-1.3-40.8 4c-11 4.8-20.1 16.4-7.6 24.4c9.8 6.3 21.8 9.5 33.2 12.6c2.4 .6 4.7 1.3 7 1.9c15.6 4.4 35.5 10.1 50.4 20.3c19.4 13.3 28.5 34.9 24.2 58.1c-4.1 22.4-19.7 37.1-38.4 44.7c-7.8 3.2-16.3 5.2-25.2 6.2l0 15.2c0 11.9-9.7 21.6-21.6 21.6s-21.6-9.7-21.6-21.6l0-17.4c-14.5-3.3-28.7-7.9-42.8-12.5c-11.3-3.7-17.5-16-13.7-27.3s16-17.5 27.3-13.7c2.5 .8 5 1.7 7.5 2.5c11.3 3.8 22.9 7.7 34.5 9.6c17 2.5 30.6 1 39.5-2.6c12-4.8 17.7-19.1 5.9-27.1c-10.1-6.9-22.6-10.3-34.5-13.5c-2.3-.6-4.5-1.2-6.8-1.9c-15.1-4.3-34-9.6-48.2-18.7c-19.5-12.5-29.4-33.3-25.2-56.4c4-21.8 21-36.3 39-44.1c5.5-2.4 11.4-4.3 17.5-5.7V133.6c0-11.9 9.7-21.6 21.6-21.6s21.6 9.7 21.6 21.6z\"]\n};\nvar faDollarCircle = faCircleDollar;\nvar faUsdCircle = faCircleDollar;\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [640, 512, [], \"f7ab\", \"M64 464V316.9c0-108.4 68.3-205.1 170.5-241.3L404.2 15.5C425.6 7.9 448 23.8 448 46.4c0 11-5.5 21.2-14.6 27.3L400 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5c-16 16-37.8 25.1-60.5 25.1h-3.4c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4l-.1 0 0 0c-6.3 0-12.5-.5-18.6-1.5c-3.6-.6-7.2-1.4-10.7-2.3l0 0c-28.9-7.8-53.1-26.8-67.8-52.2c-4.4-7.6-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4c0 20.3-16.5 36.8-36.8 36.8H112c-26.5 0-48-21.5-48-48zM392 224a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faArrowsRepeat = {\n prefix: 'fas',\n iconName: 'arrows-repeat',\n icon: [512, 512, [\"repeat-alt\"], \"f364\", \"M1.6 213.9c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2C77.1 189.9 118.5 160 165.2 160H338.7l-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96H165.2C91 96 25.1 143.5 1.6 213.9zm508.7 84.2c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2C434.9 322.1 393.5 352 346.8 352H173.3l41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L173.3 416H346.8c74.2 0 140.1-47.5 163.6-117.9z\"]\n};\nvar faRepeatAlt = faArrowsRepeat;\nvar faBoreHole = {\n prefix: 'fas',\n iconName: 'bore-hole',\n icon: [512, 512, [], \"e4c3\", \"M256 0c-17.7 0-32 14.3-32 32V296.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4V32c0-17.7-14.3-32-32-32zM48 128c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H384c-17.7 0-32 14.3-32 32V352c0 53-43 96-96 96s-96-43-96-96V160c0-17.7-14.3-32-32-32H48z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [576, 512, [], \"f275\", \"M64 32C46.3 32 32 46.3 32 64V304v48 80c0 26.5 21.5 48 48 48H496c26.5 0 48-21.5 48-48V304 152.2c0-18.2-19.4-29.7-35.4-21.1L352 215.4V152.2c0-18.2-19.4-29.7-35.4-21.1L160 215.4V64c0-17.7-14.3-32-32-32H64z\"]\n};\nvar faImagePolaroid = {\n prefix: 'fas',\n iconName: 'image-polaroid',\n icon: [448, 512, [], \"f8c4\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 96H352c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32zm152 64c-5.3 0-10.2 2.6-13.2 6.9l-52.4 76.3-9.6-12.8c-3-4-7.8-6.4-12.8-6.4s-9.8 2.4-12.8 6.4l-48 64c-3.6 4.8-4.2 11.3-1.5 16.8s8.3 8.8 14.3 8.8h48 48 40 88c5.9 0 11.4-3.3 14.2-8.6s2.4-11.6-1-16.5l-88-128c-3-4.3-7.9-6.9-13.2-6.9zM128 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faWaveTriangle = {\n prefix: 'fas',\n iconName: 'wave-triangle',\n icon: [640, 512, [], \"f89a\", \"M176 32c10.1 0 19.6 4.7 25.6 12.8L464 394.7 582.4 236.8c10.6-14.1 30.7-17 44.8-6.4s17 30.7 6.4 44.8l-144 192c-6 8.1-15.5 12.8-25.6 12.8s-19.6-4.7-25.6-12.8L176 117.3 57.6 275.2c-10.6 14.1-30.7 17-44.8 6.4s-17-30.7-6.4-44.8l144-192c6-8.1 15.5-12.8 25.6-12.8z\"]\n};\nvar faPersonRunningFast = {\n prefix: 'fas',\n iconName: 'person-running-fast',\n icon: [512, 512, [], \"e5ff\", \"M368 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM259.2 160c-14.1 0-27.5 5.6-37.5 15.5l-23.1 23.1c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l23.1-23.1C198.4 108.3 228.2 96 259.2 96c11.7 0 23.3 1.7 34.4 5.2l48.7 15c36.4 11.2 65.9 38 80.5 73.1l6.3 15c5 11.9 16.6 19.7 29.5 19.7H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H458.7c-38.8 0-73.7-23.3-88.6-59.1l-5.1-12.3L334 299l56.7 35.4c18.1 11.3 26.6 33.3 20.7 53.9L382.8 488.8c-4.9 17-22.6 26.8-39.6 22s-26.8-22.6-22-39.6l25.4-88.8-86.2-53.9c-25.1-15.7-36.1-46.5-26.8-74.5l31.2-93.7c-1.9-.2-3.7-.3-5.6-.3zM205.5 310.7c7.4 18.1 20.4 33.9 37.9 44.9l9.5 6-11.5 25.9c-7.7 17.3-24.9 28.5-43.9 28.5H128c-17.7 0-32-14.3-32-32s14.3-32 32-32h59.2l18.3-41.3zM16 95.8H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H16c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16s-7.2 16-16 16H16c-8.8 0-16-7.2-16-16zm16 48H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H16c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faCircleDown = {\n prefix: 'fas',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6L269.8 394.5c-3.8 3.5-8.7 5.5-13.8 5.5s-10.1-2-13.8-5.5L135.1 294.6c-4.5-4.2-7.1-10.1-7.1-16.3c0-12.3 10-22.3 22.3-22.3l57.7 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 57.7 0c12.3 0 22.3 10 22.3 22.3c0 6.2-2.6 12.1-7.1 16.3z\"]\n};\nvar faArrowAltCircleDown = faCircleDown;\nvar faGrill = {\n prefix: 'fas',\n iconName: 'grill',\n icon: [448, 512, [], \"e5a3\", \"M0 72C0 49.9 17.9 32 40 32H408c22.1 0 40 17.9 40 40V96c0 89.8-52.9 167.3-129.2 203l63.2 147.5c5.2 12.2-.4 26.3-12.6 31.5s-26.3-.4-31.5-12.6L316.7 416H160c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64c3.4 0 6.8 .3 10.1 .8L129.2 299C52.9 263.3 0 185.8 0 96V72zM151.8 368H296.2l-22.9-53.4c-15.9 3.6-32.3 5.4-49.3 5.4s-33.4-1.9-49.3-5.4L151.8 368zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faArrowsTurnToDots = {\n prefix: 'fas',\n iconName: 'arrows-turn-to-dots',\n icon: [512, 512, [], \"e4c1\", \"M249.4 25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 96 416 96c53 0 96 43 96 96v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7-14.3-32-32-32l-146.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm13.3 256l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM384 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192A64 64 0 1 1 64 64a64 64 0 1 1 0 128z\"]\n};\nvar faChartMixed = {\n prefix: 'fas',\n iconName: 'chart-mixed',\n icon: [512, 512, [\"analytics\"], \"f643\", \"M500 89c13.8-11 16-31.2 5-45s-31.2-16-45-5L319.4 151.5 211.2 70.4c-11.7-8.8-27.8-8.5-39.2 .6L12 199c-13.8 11-16 31.2-5 45s31.2 16 45 5L192.6 136.5l108.2 81.1c11.7 8.8 27.8 8.5 39.2-.6L500 89zM160 256V448c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 352v96c0 17.7 14.3 32 32 32s32-14.3 32-32V352c0-17.7-14.3-32-32-32s-32 14.3-32 32zm288-64c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320c0-17.7-14.3-32-32-32zm96-32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faAnalytics = faChartMixed;\nvar faFlorinSign = {\n prefix: 'fas',\n iconName: 'florin-sign',\n icon: [384, 512, [], \"e184\", \"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32h80L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H69.3c38.8 0 73.7-23.3 88.6-59.1L213.3 288H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H240l45.1-108.3c5-11.9 16.6-19.7 29.5-19.7H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H314.7z\"]\n};\nvar faArrowDownShortWide = {\n prefix: 'fas',\n iconName: 'arrow-down-short-wide',\n icon: [576, 512, [\"sort-amount-desc\", \"sort-amount-down-alt\"], \"f884\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSortAmountDesc = faArrowDownShortWide;\nvar faSortAmountDownAlt = faArrowDownShortWide;\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [62774], \"3c\", \"M380.6 81.7c7.9 15.8 1.5 35-14.3 42.9L103.6 256 366.3 387.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-320-160C6.8 279.2 0 268.1 0 256s6.8-23.2 17.7-28.6l320-160c15.8-7.9 35-1.5 42.9 14.3z\"]\n};\nvar faDisplayCode = {\n prefix: 'fas',\n iconName: 'display-code',\n icon: [576, 512, [\"desktop-code\"], \"e165\", \"M0 64C0 28.7 28.7 0 64 0H512c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H336l10.7 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32h69.3L240 416H64c-35.3 0-64-28.7-64-64V64zm64 0V352H512V64H64zM249 177l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM361 143l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faDesktopCode = faDisplayCode;\nvar faFaceDrooling = {\n prefix: 'fas',\n iconName: 'face-drooling',\n icon: [512, 512, [], \"e372\", \"M384 477.8c76.5-44.3 128-127 128-221.8C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c33.9 0 66.4-6.6 96-18.6V370.9c-9.7 6.4-20.3 12.2-32 16.9V448c0 8.8-7.2 16-16 16s-16-7.2-16-16V397.1c-10.1 1.9-20.8 2.9-32 2.9c-67 0-113.8-36.7-140.5-70c-5.5-6.9-4.4-17 2.5-22.5s17-4.4 22.5 2.5c22.8 28.5 61.3 58 115.5 58s92.7-29.5 115.5-58c5.5-6.9 15.6-8 22.5-2.5s8 15.6 2.5 22.5c-3.8 4.7-7.9 9.5-12.5 14.2V477.8zM158.6 189.6c-8.4 8-13.5 17.7-15.4 23.5c-2.8 8.4-11.9 12.9-20.2 10.1s-12.9-11.9-10.1-20.2c3.4-10.2 11.1-24.6 23.8-36.5C149.5 154.2 167.9 144 192 144c8.8 0 16 7.2 16 16s-7.2 16-16 16c-14.3 0-25.2 5.8-33.4 13.6zm210.2 23.5c-1.9-5.8-7-15.4-15.4-23.5c-8.2-7.8-19-13.6-33.4-13.6c-8.8 0-16-7.2-16-16s7.2-16 16-16c24.1 0 42.5 10.2 55.4 22.4c12.6 12 20.4 26.3 23.8 36.5c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1z\"]\n};\nvar faOilTemperature = {\n prefix: 'fas',\n iconName: 'oil-temperature',\n icon: [576, 512, [\"oil-temp\"], \"f614\", \"M256 32c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H320V96h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320v70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V128 32zM400 304l0-1.2c21.9-3.2 43.7-12.6 61.5-24.9l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 357.7 417 368 384 368c-1.4 0-2.7 0-4-.1c12.6-18.1 20-40.2 20-63.9zM192 368c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7l0 0c17.8 12.3 39.6 21.7 61.4 24.9l0 1.2c0 23.8 7.4 45.8 20 63.9c-1.3 0-2.7 .1-4 .1zm192 80c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0C329 437.4 356.5 448 384 448z\"]\n};\nvar faOilTemp = faOilTemperature;\nvar faSquareQuestion = {\n prefix: 'fas',\n iconName: 'square-question',\n icon: [448, 512, [\"question-square\"], \"f2fd\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm73.8 133.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L248 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H190.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM192 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faQuestionSquare = faSquareQuestion;\nvar faAirConditioner = {\n prefix: 'fas',\n iconName: 'air-conditioner',\n icon: [576, 512, [], \"f8f4\", \"M64 0C28.7 0 0 28.7 0 64v96c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM80 128H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 256H192V416c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7c15.3-8.9 20.5-28.4 11.7-43.7s-28.4-20.5-43.7-11.7C83.4 349.4 64 380.4 64 416c0 53 43 96 96 96s96-43 96-96V256zm64 128c0 53 43 96 96 96s96-43 96-96c0-35.6-19.4-66.6-48-83.1c-15.3-8.8-34.9-3.6-43.7 11.7s-3.6 34.9 11.7 43.7c9.6 5.6 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32V256H320V384z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [448, 512, [8964], \"f107\", \"M201.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 274.7 86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faMountains = {\n prefix: 'fas',\n iconName: 'mountains',\n icon: [640, 512, [9968], \"f6fd\", \"M381.1 480H55.9C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17s24.1 6.4 30.8 17l126 200.7 48.2-79C465 164.1 472.2 160 480 160s15 4.1 19.1 10.7l132 216.3c5.8 9.6 8.9 20.6 8.9 31.8c0 33.8-27.4 61.1-61.1 61.1H456.1h-75z\"]\n};\nvar faOmega = {\n prefix: 'fas',\n iconName: 'omega',\n icon: [448, 512, [], \"f67a\", \"M224 96C135.6 96 64 167.6 64 256c0 56.4 29.1 106 73.3 134.5c13.3 8.6 22.7 23.7 22.7 41.2c0 26.7-21.6 48.3-48.3 48.3H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H67.2C25.8 375.4 0 318.7 0 256C0 132.3 100.3 32 224 32s224 100.3 224 224c0 62.7-25.8 119.4-67.2 160H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H336.3c-26.7 0-48.3-21.6-48.3-48.3c0-17.5 9.4-32.6 22.7-41.2C354.9 362 384 312.4 384 256c0-88.4-71.6-160-160-160z\"]\n};\nvar faCarTunnel = {\n prefix: 'fas',\n iconName: 'car-tunnel',\n icon: [512, 512, [], \"e4de\", \"M256 0C114.6 0 0 114.6 0 256V448c0 35.3 28.7 64 64 64h42.8c-6.6-5.9-10.8-14.4-10.8-24V376c0-20.8 11.3-38.9 28.1-48.6l21-64.7c7.5-23.1 29-38.7 53.3-38.7H313.6c24.3 0 45.8 15.6 53.3 38.7l21 64.7c16.8 9.7 28.2 27.8 28.2 48.6V488c0 9.6-4.2 18.1-10.8 24H448c35.3 0 64-28.7 64-64V256C512 114.6 397.4 0 256 0zM362.8 512c-6.6-5.9-10.8-14.4-10.8-24V448H160v40c0 9.6-4.2 18.1-10.8 24H362.8zM190.8 277.5L177 320H335l-13.8-42.5c-1.1-3.3-4.1-5.5-7.6-5.5H198.4c-3.5 0-6.5 2.2-7.6 5.5zM168 408a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm200-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faPersonDollyEmpty = {\n prefix: 'fas',\n iconName: 'person-dolly-empty',\n icon: [512, 512, [], \"f4d1\", \"M80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zM96 306.7V241.7l16.6 24.9c8.9 13.4 23.9 21.4 39.9 21.4h70.7l27.1 108.3c-16 11.6-26.3 30.5-26.3 51.7c0 35.3 28.7 64 64 64c32.3 0 59.1-24 63.4-55.1l134.4-33.6c12.9-3.2 20.7-16.2 17.5-29.1s-16.2-20.7-29.1-17.5L339.7 410.3c-10-13.7-25.3-23.3-42.8-25.7L247.3 186.2c-3.2-12.9-16.2-20.7-29.1-17.5s-20.7 16.2-17.5 29.1l6.5 26.2H161.1l-42.6-64c-13.3-20-35.8-32-59.9-32C26.2 128 0 154.2 0 186.6v88.1c0 17 6.7 33.3 18.7 45.3l79.4 79.4 14.3 85.9c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8l-15.2-90.9c-1.6-9.9-6.3-19-13.4-26.1l-51-51zM0 346.5L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32v0V410.5l-64-64zM272 448a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faPanFood = {\n prefix: 'fas',\n iconName: 'pan-food',\n icon: [640, 512, [129368], \"e42b\", \"M320 512A256 256 0 1 0 320 0a256 256 0 1 0 0 512zm0-448c37.2 0 69.3 26.3 76.6 62.8l.6 3.2c1.4 7.3-4.1 14-11.5 14H254.3c-7.4 0-12.9-6.8-11.5-14l.6-3.2C250.7 90.3 282.8 64 320 64zM230.1 185.9c7.8 7.8 7.8 20.5 0 28.3l-32 32c-7.8 7.8-20.5 7.8-28.3 0s-7.8-20.5 0-28.3l32-32c7.8-7.8 20.5-7.8 28.3 0zM296 224a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM416 360a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM227.3 284.7c2.1 2.1 3.5 4.6 4.2 7.3c.4 1.7 .8 3.4 1.1 5.1c1.1 5.4 2.1 11 5.9 14.7l3.4 3.4c3 3 7.1 4.7 11.3 4.7H280c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56V349.3c0-4.2-1.7-8.3-4.7-11.3l-3.4-3.4c-3.8-3.8-9.3-4.8-14.7-5.9c-1.7-.3-3.5-.7-5.1-1.1c-2.7-.7-5.2-2.1-7.3-4.2c-6.2-6.2-6.2-16.4 0-22.6l8-8 8-8c6.2-6.2 16.4-6.2 22.6 0zM455.8 184.2c4.5-4.5 11.9-4.5 16.4 0l2.8 2.8c13.4 13.4 21 31.6 21 50.6v4.8c0 18.7-8.5 36.4-23.1 48.1C462 299.2 448.4 304 434.4 304l-4.1 0c-19.4 0-38-7.7-51.8-21.4l-2.4-2.4c-4.5-4.5-4.5-11.9 0-16.4l79.6-79.6zM24 160c-13.3 0-24 10.7-24 24V328c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm616 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V328c0 13.3 10.7 24 24 24s24-10.7 24-24V184z\"]\n};\nvar faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v0 32L339.2 365.6c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9L448 416v16c0 26.5-21.5 48-48 48H320v8c0 13.3-10.7 24-24 24H256v0H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm352-.2a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM464 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm152-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM592 480a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 312a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [448, 512, [], \"f7a4\", \"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2H464c26.5 0 48-21.5 48-48c0-18.5-10.5-34.6-25.9-42.6C497 236.6 504 223.1 504 208c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48H294.5c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7V192v48 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 384H96c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H32C14.3 96 0 110.3 0 128V352c0 17.7 14.3 32 32 32z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H392.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-2.1 .1-4.2 .3-6.3c-31-26-71-41.7-114.6-41.7H178.3zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faArrowRightLong = {\n prefix: 'fas',\n iconName: 'arrow-right-long',\n icon: [512, 512, [\"long-arrow-right\"], \"f178\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLongArrowRight = faArrowRightLong;\nvar faTicketsAirline = {\n prefix: 'fas',\n iconName: 'tickets-airline',\n icon: [640, 512, [], \"e29b\", \"M96 96V320c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V272c0-8.8-7.4-15.7-15.7-18.6C605.5 246.9 592 229 592 208s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zm416 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm0 64a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm16 48a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm-16 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM265.3 106.5c-1.7-5.2 2.1-10.5 7.6-10.5H304c8.5 0 16.4 4.5 20.7 11.9L364.4 176h40.3c16.1 0 31.5 6.4 42.8 17.7c7.9 7.9 7.9 20.7 0 28.5c-11.4 11.4-26.8 17.7-42.8 17.7H364.4l-39.7 68.1c-4.3 7.4-12.2 11.9-20.7 11.9H272.9c-5.5 0-9.3-5.3-7.6-10.5L288.4 240H245.8l-19.2 25.6c-3 4-7.8 6.4-12.8 6.4H200c-5.2 0-9-4.9-7.8-9.9l12.5-50.2c.6-2.5 .6-5.2 0-7.8l-12.5-50.2c-1.3-5 2.6-9.9 7.8-9.9h13.8c5 0 9.8 2.4 12.8 6.4L245.8 176h42.7l-23.2-69.5zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V360c0 66.3 53.7 120 120 120H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H120c-39.8 0-72-32.2-72-72V120z\"]\n};\nvar faAnchorCircleXmark = {\n prefix: 'fas',\n iconName: 'anchor-circle-xmark',\n icon: [640, 512, [], \"e4ac\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faEllipsis = {\n prefix: 'fas',\n iconName: 'ellipsis',\n icon: [448, 512, [\"ellipsis-h\"], \"f141\", \"M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faEllipsisH = faEllipsis;\nvar faNfcSlash = {\n prefix: 'fas',\n iconName: 'nfc-slash',\n icon: [640, 512, [], \"e1fc\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68V96c0-35.3-28.7-64-64-64H160c-21.6 0-40.7 10.7-52.3 27.1L38.8 5.1zM173.5 110.7c8.7-9 21-14.7 34.5-14.7h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-3.3 0-6.4 1-8.9 2.7l-25.6-20.1zM302.1 211.5c.6-.3 1.3-.5 1.9-.7V144c0-26.5 21.5-48 48-48h80c26.5 0 48 21.5 48 48V350.9l-32-25.1V144c0-8.8-7.2-16-16-16H352c-8.8 0-16 7.2-16 16v66.7c18.6 6.6 32 24.4 32 45.3c0 2.3-.2 4.6-.5 6.8l-65.5-51.3zM486.9 479.6L406.2 416H208c-26.5 0-48-21.5-48-48V222.1L96 171.6V416c0 35.3 28.7 64 64 64H480c2.3 0 4.6-.1 6.9-.4zM208 384H365.5L192 247.3V368c0 8.8 7.2 16 16 16z\"]\n};\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M215.5 224c29.2-18.4 48.5-50.9 48.5-88c0-57.4-46.6-104-104-104S56 78.6 56 136c0 37.1 19.4 69.6 48.5 88H96c-17.7 0-32 14.3-32 32c0 16.5 12.5 30 28.5 31.8L80 400H240L227.5 287.8c16-1.8 28.5-15.3 28.5-31.8c0-17.7-14.3-32-32-32h-8.5zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512H281.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L256 432H64L22.6 473.4z\"]\n};\nvar faKitMedical = {\n prefix: 'fas',\n iconName: 'kit-medical',\n icon: [576, 512, [\"first-aid\"], \"f479\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H96V32H64zm64 0V480H448V32H128zM512 480c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H480V480h32zM256 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V288H208c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16h48V176z\"]\n};\nvar faFirstAid = faKitMedical;\nvar faGrid2Plus = {\n prefix: 'fas',\n iconName: 'grid-2-plus',\n icon: [512, 512, [], \"e197\", \"M80 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm0 256h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V336c0-26.5 21.5-48 48-48zM288 80c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48V80zm96 192c13.3 0 24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H408v64c0 13.3-10.7 24-24 24s-24-10.7-24-24V408H296c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V296c0-13.3 10.7-24 24-24z\"]\n};\nvar faBells = {\n prefix: 'fas',\n iconName: 'bells',\n icon: [640, 512, [], \"f77f\", \"M230.8 245.5l18.7 51.2c11.7 31.8 12.9 66.5 3.5 99.1l-1.1 3.9L21.4 315.8C10 311.7 2 301.5 .6 289.5s4.1-23.8 14.3-30.4l8.2-5.4C57.6 231 84 197.8 98.2 159l14.7-40C138 50.4 214 15.1 282.6 40.1c4.8 1.7 9.4 3.7 13.9 6c-64.1 42.2-93.3 124.2-65.7 199.5zm30.1-10.9c-26.1-71.3 10.5-150.2 81.9-176.2s150.4 10.8 176.5 82.1L538 191.7c14 38.2 39.8 71 73.6 93.6l13.7 9.2c10 6.7 15.4 18.5 14 30.4s-9.5 22.1-20.8 26.2L321.1 459.4c-11.3 4.1-24 1.5-32.8-6.7s-12.3-20.7-9-32.2l4.6-15.8c11.2-39 9.7-80.7-4.3-118.9l-18.8-51.2zM480.8 480c-21.2 0-40-10.2-51.7-25.9l116.1-42.3c.1 1.3 .1 2.6 .1 3.9c0 35.5-28.9 64.3-64.5 64.3zM94.3 376.1l117.6 43.4c-11.6 17.1-31.2 28.4-53.5 28.4c-35.6 0-64.5-28.8-64.5-64.3c0-2.5 .1-5.1 .4-7.5z\"]\n};\nvar faPersonThroughWindow = {\n prefix: 'fas',\n iconName: 'person-through-window',\n icon: [640, 512, [], \"e5a9\", \"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4C167.6 186.5 128 245 128 310.2l0 73.8s0 0 0 0H64V64zm288 0l224 0V384H508.3l-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4c44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320H379.2l42.7 64H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48V400c0 26.5 21.5 48 48 48H308.2l33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4L310.5 336l74.6 0 40 48zm-159.5 0H192s0 0 0 0l0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [129520], \"f552\", \"M176 88v40H336V88c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zm-48 40V88c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56v40h28.1c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9V304H384V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H192V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H0V227.9c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1H128zM0 416V336H128v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H320v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H512v80c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faEnvelopeDot = {\n prefix: 'fas',\n iconName: 'envelope-dot',\n icon: [576, 512, [\"envelope-badge\"], \"e16f\", \"M496 0a80 80 0 1 1 0 160A80 80 0 1 1 496 0zM48 64H385.1c-.7 5.2-1.1 10.6-1.1 16c0 45.6 27.2 84.8 66.3 102.3L275.2 313.6c-11.4 8.5-27 8.5-38.4 0L19.2 150.4C7.1 141.3 0 127.1 0 112C0 85.5 21.5 64 48 64zM294.4 339.2L490.8 191.9c1.7 .1 3.4 .1 5.2 .1c5.4 0 10.8-.4 16-1.1V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V176L217.6 339.2c22.8 17.1 54 17.1 76.8 0z\"]\n};\nvar faEnvelopeBadge = faEnvelopeDot;\nvar faHandsHoldingCircle = {\n prefix: 'fas',\n iconName: 'hands-holding-circle',\n icon: [640, 512, [], \"e4fb\", \"M320 0a128 128 0 1 1 0 256A128 128 0 1 1 320 0zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M256 0c53 0 96 43 96 96v3.6c0 15.7-12.7 28.4-28.4 28.4H188.4c-15.7 0-28.4-12.7-28.4-28.4V96c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4H312c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6V240c0-8.8-7.2-16-16-16s-16 7.2-16 16V479.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96.3c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faBowlChopsticks = {\n prefix: 'fas',\n iconName: 'bowl-chopsticks',\n icon: [512, 512, [], \"e2e9\", \"M18.5 125.1l473.8-74c11.3-1.8 19.7-11.5 19.7-23c0-14.6-13.3-25.6-27.6-22.9L13.1 93.6C5.5 95 0 101.6 0 109.3c0 9.8 8.8 17.3 18.5 15.8zM0 159.7c0 9 7.3 16.2 16.2 16.2H488.4c13 0 23.6-10.6 23.6-23.6c0-13.3-11-24-24.4-23.6L15.7 143.5C7 143.8 0 151 0 159.7zM33.6 224C15.4 224 .9 239.3 2 257.5c5.4 91.7 59.7 169.7 136.4 209.7l1.2 9.7c2.5 20 19.5 35 39.7 35H332.7c20.2 0 37.2-15 39.7-35l1.2-9.7c76.8-40 131-118 136.4-209.7c1.1-18.2-13.4-33.5-31.6-33.5H33.6z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M64 32C28.7 32 0 60.7 0 96v32H576V96c0-35.3-28.7-64-64-64H64zM576 224H0V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V224zM112 352h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faCreditCardAlt = faCreditCard;\nvar faCircleS = {\n prefix: 'fas',\n iconName: 'circle-s',\n icon: [512, 512, [], \"e121\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM207.6 196.2c-1.1 6.4-.2 9.7 .6 11.6c1 2 2.9 4.6 7.4 7.7c10.1 6.8 25.7 11.5 46.8 17.4l2 .6c18.4 5.2 41.4 11.7 58.6 23.2c9.5 6.4 18.5 15.1 24.1 27.2c5.7 12.3 7 25.9 4.4 40.3c-4.7 26.3-23 43.3-45 52c-21.3 8.4-47 9.6-72.6 5.7l-.1 0 0 0c-16.3-2.6-43.7-10.7-57.3-15.1c-12.6-4-19.6-17.6-15.5-30.2s17.6-19.6 30.2-15.5c13.9 4.5 37.8 11.4 50 13.4c20.2 3 36.8 1.4 47.7-2.9c10.3-4.1 14.2-9.6 15.4-15.8c1.1-6.4 .2-9.7-.6-11.6c-1-2-2.9-4.6-7.4-7.7c-10.1-6.8-25.7-11.5-46.8-17.4l-2-.6c-18.4-5.2-41.4-11.7-58.6-23.2c-9.5-6.4-18.5-15.1-24.1-27.2c-5.7-12.3-7-25.9-4.4-40.3c4.7-26.3 23-43.3 45-52c21.3-8.4 47-9.6 72.6-5.7c8.1 1.2 24.4 4.8 32 6.7c12.8 3.3 20.6 16.4 17.3 29.2s-16.4 20.6-29.2 17.3c-6.7-1.7-21.3-4.9-27.3-5.7c-20.3-3.1-36.8-1.4-47.8 2.9c-10.3 4.1-14.2 9.6-15.4 15.8z\"]\n};\nvar faBoxBallot = {\n prefix: 'fas',\n iconName: 'box-ballot',\n icon: [576, 512, [128499], \"f735\", \"M128 32c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32V224H128V32zM0 352H576V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V352zM48 160H96v96H480V160h48c26.5 0 48 21.5 48 48V320H0V208c0-26.5 21.5-48 48-48z\"]\n};\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [128664, \"automobile\"], \"f1b9\", \"M135.2 117.4L109.1 192H402.9l-26.1-74.6C372.3 104.6 360.2 96 346.6 96H165.4c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32H346.6c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2V400v48c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V400H96v48c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V400 256c0-26.7 16.4-49.6 39.6-59.2zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faAutomobile = faCar;\nvar faHandHoldingHand = {\n prefix: 'fas',\n iconName: 'hand-holding-hand',\n icon: [576, 512, [], \"e4f7\", \"M7.8 207.7c-13.1-17.8-9.3-42.8 8.5-55.9L142.9 58.5C166.2 41.3 194.5 32 223.5 32H384 544c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H507.2l-44.9 36c-22.7 18.2-50.9 28-80 28H304 288 224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64 16c8.8 0 16-7.2 16-16s-7.2-16-16-16H183.4L63.7 216.2c-17.8 13.1-42.8 9.3-55.9-8.5zM382.4 160l0 0 .9 0c-.3 0-.6 0-.9 0zM568.2 304.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 453.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 352l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faUserTieHair = {\n prefix: 'fas',\n iconName: 'user-tie-hair',\n icon: [448, 512, [], \"e45f\", \"M304 144c0 44.2-35.8 80-80 80s-80-35.8-80-80V128c0-5.5 .6-10.8 1.6-16H176c29.8 0 55.9-16.3 69.6-40.5C257.3 86.4 275.5 96 296 96h1.3c4.3 9.8 6.7 20.6 6.7 32v16zM224 0C153.3 0 96 57.3 96 128v16c0 70.7 57.3 128 128 128s128-57.3 128-128V128C352 57.3 294.7 0 224 0zm55.7 510.9c1.8 .7 3.8 1.1 5.8 1.1H417.3c17 0 30.7-13.8 30.7-30.7c0-75.5-51.9-138.9-121.9-156.4c-8.1-2-15.9 3.3-17.9 11.3l-36 146.9L238.9 359.2l18.6-31c6.4-10.7-1.3-24.2-13.7-24.2H224 204.3c-12.4 0-20.1 13.6-13.7 24.2l18.6 31L175.8 483.1l-36-146.9c-2-8.1-9.8-13.4-17.9-11.3C51.9 342.4 0 405.8 0 481.3c0 17 13.8 30.7 30.7 30.7H162.5c2.1 0 4-.4 5.8-1.1L168 512H280l-.3-1.1z\"]\n};\nvar faPodiumStar = {\n prefix: 'fas',\n iconName: 'podium-star',\n icon: [448, 512, [], \"f758\", \"M168 72c-22.1 0-40 17.9-40 40v32H424c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H80V112c0-48.6 39.4-88 88-88h14.4C190.7 9.7 206.2 0 224 0h64c26.5 0 48 21.5 48 48s-21.5 48-48 48H224c-17.8 0-33.3-9.7-41.6-24H168zM73.7 455.1L48 224H400L374.3 455.1c-3.6 32.4-31 56.9-63.6 56.9H137.3c-32.6 0-60-24.5-63.6-56.9zM231.3 276.8c-2.9-6.4-11.7-6.4-14.5 0l-20.2 45.5c-1.2 2.6-3.6 4.4-6.3 4.8l-47.9 5.9c-6.8 .8-9.5 9.5-4.5 14.3l35.4 34c2 2 3 4.9 2.4 7.7l-9.4 49.1c-1.3 6.9 5.8 12.3 11.8 8.9l42.1-24.4c2.4-1.4 5.4-1.4 7.8 0L270 446.9c6 3.5 13.1-1.9 11.8-8.9L272.3 389c-.5-2.8 .4-5.8 2.4-7.7l35.4-34c5-4.8 2.3-13.5-4.5-14.3L257.8 327c-2.8-.3-5.2-2.1-6.3-4.8l-20.2-45.5z\"]\n};\nvar faUserHairMullet = {\n prefix: 'fas',\n iconName: 'user-hair-mullet',\n icon: [448, 512, [\"business-front\", \"party-back\", \"trian-balbot\"], \"e45c\", \"M304 128v16c0 18-6 34.6-16 48h0v0c-14.6 19.4-37.8 32-64 32s-49.4-12.6-64-32v0h0c-10-13.4-16-30-16-48V128c0-5.7 .6-11.3 1.7-16.6c30.6-3.1 58.5-17.9 78.3-40.6c19.8 22.7 47.6 37.5 78.3 40.6c1.1 5.4 1.7 10.9 1.7 16.6zM237.4 271.3L255 289c5.5 5.5 13.2 8 20.8 6.7s14.2-6.1 17.6-13l6.1-12.2 19.5 7.8c9.3 3.7 19.8 1.3 26.6-6s8.3-18.1 3.8-27c-8.5-17-11-22.3-12.2-27.1c-.7-2.9-1.1-5.9-1.2-12.3C346.2 187.5 352 166.4 352 144V128c0-7.1-.6-14-1.7-20.7c5.9-4.4 9.7-11.4 9.7-19.3c0-13.3-10.7-24-24-24h-1.1C312.7 25.7 271.4 0 224 0s-88.7 25.7-110.9 64H112C98.7 64 88 74.7 88 88c0 7.9 3.8 14.9 9.7 19.3C96.6 114 96 120.9 96 128v16c0 22.4 5.8 43.5 15.9 61.8c-.1 6.4-.5 9.4-1.2 12.3c-1.2 4.8-3.7 10.1-12.2 27.1c-4.5 8.9-2.9 19.7 3.8 27s17.3 9.7 26.6 6l19.5-7.8 6.1 12.2c3.5 6.9 10 11.7 17.6 13s15.4-1.3 20.8-6.7l17.7-17.7c4.4 .5 8.9 .7 13.4 .7s9-.2 13.4-.7zM161.3 320C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7H417.3c17 0 30.7-13.8 30.7-30.7C448 392.2 375.8 320 286.7 320H161.3z\"]\n};\nvar faBusinessFront = faUserHairMullet;\nvar faPartyBack = faUserHairMullet;\nvar faTrianBalbot = faUserHairMullet;\nvar faMicrophoneStand = {\n prefix: 'fas',\n iconName: 'microphone-stand',\n icon: [512, 512, [127908], \"f8cb\", \"M479.2 32.8c-43.7-43.7-114.7-43.7-158.4 0l-4.7 4.7L474.5 195.9l4.7-4.7c43.7-43.7 43.7-114.7 0-158.4zM293.5 60.1l-4.7 4.7c-24.4 24.4-35.2 57.2-32.4 89L358.2 255.6c31.8 2.8 64.6-8 89-32.4l4.7-4.7L293.5 60.1zM229.1 171.7L215.8 187 7.8 427c-11 12.7-10.3 31.7 1.6 43.6l32 32c11.9 11.9 30.9 12.6 43.6 1.6L224 383.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V328.2l37-32 15.3-13.3L229.1 171.7z\"]\n};\nvar faBookOpenReader = {\n prefix: 'fas',\n iconName: 'book-open-reader',\n icon: [512, 512, [\"book-reader\"], \"f5da\", \"M160 96a96 96 0 1 1 192 0A96 96 0 1 1 160 96zm80 152V512l-48.4-24.2c-20.9-10.4-43.5-17-66.8-19.3l-96-9.6C12.5 457.2 0 443.5 0 427V224c0-17.7 14.3-32 32-32H62.3c63.6 0 125.6 19.6 177.7 56zm32 264V248c52.1-36.4 114.1-56 177.7-56H480c17.7 0 32 14.3 32 32V427c0 16.4-12.5 30.2-28.8 31.8l-96 9.6c-23.2 2.3-45.9 8.9-66.8 19.3L272 512z\"]\n};\nvar faBookReader = faBookOpenReader;\nvar faFamilyDress = {\n prefix: 'fas',\n iconName: 'family-dress',\n icon: [512, 512, [], \"e301\", \"M128 0a64 64 0 1 1 0 128A64 64 0 1 1 128 0zM112.3 160h31.4c11.8 0 23 3.2 32.6 8.9c-.2 2.3-.3 4.7-.3 7.1c0 24.3 10.9 46.1 28 60.8c-35.7 18.7-60 56.1-60 99.2v16c0 28.4 12.4 54 32 71.6V480c0 6.1 .8 11.9 2.4 17.5c-8.7 9-20.9 14.5-34.4 14.5H112c-26.5 0-48-21.5-48-48V384H42.4c-21.3 0-36.6-20.3-30.8-40.8L50.7 206.4c7.8-27.5 33-46.4 61.5-46.4zM368 512c-13.5 0-25.7-5.6-34.4-14.5c1.6-5.5 2.4-11.4 2.4-17.5V423.6c19.6-17.6 32-43.1 32-71.6V336c0-43.1-24.3-80.5-60-99.2c17.1-14.7 28-36.5 28-60.8c0-2.4-.1-4.8-.3-7.1c9.6-5.7 20.8-8.9 32.6-8.9h31.4c28.6 0 53.7 18.9 61.5 46.4l39.1 136.8c5.8 20.4-9.5 40.8-30.8 40.8H448v80c0 26.5-21.5 48-48 48H368zM384 0a64 64 0 1 1 0 128A64 64 0 1 1 384 0zM256 128a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128c44.2 0 80 35.8 80 80v16c0 23.7-12.9 44.4-32 55.4V480c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V407.4c-19.1-11.1-32-31.7-32-55.4V336c0-44.2 35.8-80 80-80z\"]\n};\nvar faCircleX = {\n prefix: 'fas',\n iconName: 'circle-x',\n icon: [512, 512, [], \"e12e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM186.3 136.5L256 218.8l69.7-82.3c8.6-10.1 23.7-11.4 33.8-2.8s11.4 23.7 2.8 33.8L287.4 256l74.9 88.5c8.6 10.1 7.3 25.3-2.8 33.8s-25.3 7.3-33.8-2.8L256 293.2l-69.7 82.3c-8.6 10.1-23.7 11.4-33.8 2.8s-11.4-23.7-2.8-33.8L224.6 256l-74.9-88.5c-8.6-10.1-7.3-25.3 2.8-33.8s25.3-7.3 33.8 2.8z\"]\n};\nvar faCabin = {\n prefix: 'fas',\n iconName: 'cabin',\n icon: [512, 512, [], \"e46d\", \"M237.4 6C248.5-2 263.5-2 274.6 6L384 84.1V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32v88.7L498.6 166c11.3 8.1 16.1 22.6 11.9 35.8S493.9 224 480 224H448 416 32c-13.9 0-26.2-9-30.5-22.2S2.1 174 13.4 166L237.4 6zM32 280c0-13.3 10.7-24 24-24H168c13.3 0 24 10.7 24 24v16c0 13.3-10.7 24-24 24H56c-13.3 0-24-10.7-24-24V280zm24 72H168c13.3 0 24 10.7 24 24v16c0 13.3-10.7 24-24 24H56c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24zm0 96H168c13.3 0 24 10.7 24 24v16c0 13.3-10.7 24-24 24H56c-13.3 0-24-10.7-24-24V472c0-13.3 10.7-24 24-24zM320 280c0-13.3 10.7-24 24-24H456c13.3 0 24 10.7 24 24v16c0 13.3-10.7 24-24 24H344c-13.3 0-24-10.7-24-24V280zm24 168H456c13.3 0 24 10.7 24 24v16c0 13.3-10.7 24-24 24H344c-13.3 0-24-10.7-24-24V472c0-13.3 10.7-24 24-24zm-24-72c0-13.3 10.7-24 24-24H456c13.3 0 24 10.7 24 24v16c0 13.3-10.7 24-24 24H344c-13.3 0-24-10.7-24-24V376zM256 160a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMountainSun = {\n prefix: 'fas',\n iconName: 'mountain-sun',\n icon: [640, 512, [], \"e52f\", \"M560 160A80 80 0 1 0 560 0a80 80 0 1 0 0 160zM55.9 512H381.1h75H578.9c33.8 0 61.1-27.4 61.1-61.1c0-11.2-3.1-22.2-8.9-31.8l-132-216.3C495 196.1 487.8 192 480 192s-15 4.1-19.1 10.7l-48.2 79L286.8 81c-6.6-10.6-18.3-17-30.8-17s-24.1 6.4-30.8 17L8.6 426.4C3 435.3 0 445.6 0 456.1C0 487 25 512 55.9 512z\"]\n};\nvar faChartSimpleHorizontal = {\n prefix: 'fas',\n iconName: 'chart-simple-horizontal',\n icon: [448, 512, [], \"e474\", \"M400 320c26.5 0 48-21.5 48-48l0-32c0-26.5-21.5-48-48-48L48 192c-26.5 0-48 21.5-48 48l0 32c0 26.5 21.5 48 48 48l352 0zM208 480c26.5 0 48-21.5 48-48l0-32c0-26.5-21.5-48-48-48L48 352c-26.5 0-48 21.5-48 48l0 32c0 26.5 21.5 48 48 48l160 0zM384 112l0-32c0-26.5-21.5-48-48-48L48 32C21.5 32 0 53.5 0 80l0 32c0 26.5 21.5 48 48 48l288 0c26.5 0 48-21.5 48-48z\"]\n};\nvar faBluetooth = {\n prefix: 'fas',\n iconName: 'bluetooth',\n icon: [384, 512, [], \"f293\", \"M178.8 2.9c11.4-5.2 24.8-3.2 34.3 5.1l128 112C348 126 352 134.8 352 144s-4 18-10.9 24.1L240.6 256l100.5 87.9C348 350 352 358.8 352 368s-4 18-10.9 24.1l-128 112c-9.4 8.3-22.9 10.2-34.3 5.1S160 492.6 160 480V326.5L85.1 392.1c-13.3 11.6-33.5 10.3-45.2-3s-10.3-33.5 3-45.2L143.4 256 42.9 168.1c-13.3-11.6-14.6-31.9-3-45.2s31.9-14.6 45.2-3L160 185.5V32c0-12.6 7.3-24 18.8-29.1zM224 326.5v83L271.4 368 224 326.5zm0-141L271.4 144 224 102.5v83z\"]\n};\nvar faArrowsLeftRightToLine = {\n prefix: 'fas',\n iconName: 'arrows-left-right-to-line',\n icon: [640, 512, [], \"e4ba\", \"M32 64c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64zm214.6 73.4c12.5 12.5 12.5 32.8 0 45.3L205.3 224l229.5 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 288l-229.5 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0zM640 96V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faHandBackPointLeft = {\n prefix: 'fas',\n iconName: 'hand-back-point-left',\n icon: [512, 512, [], \"e19f\", \"M0 184c0-22.1 17.9-40 40-40l200 0h7l73 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-55.7 0c1.4-2 3-3.9 4.5-5.8l16-19.2C297 72.4 315 64 334 64L372 64c38 0 74 16.9 98.3 46.1l4.5 5.4c24 28.8 37.1 65 37.1 102.4V336c0 70.7-57.3 128-128 128l-64 0H288c-26.5 0-48-21.5-48-48c0-12.4 4.7-23.6 12.3-32.1C227.5 382 208 361.3 208 336c0-12.4 4.7-23.6 12.3-32.1C195.5 302 176 281.3 176 256c0-12.3 4.6-23.5 12.2-32L40 224c-22.1 0-40-17.9-40-40z\"]\n};\nvar faMessageDots = {\n prefix: 'fas',\n iconName: 'message-dots',\n icon: [512, 512, [\"comment-alt-dots\", \"messaging\"], \"f4a3\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zM128 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faCommentAltDots = faMessageDots;\nvar faMessaging = faMessageDots;\nvar faFileHeart = {\n prefix: 'fas',\n iconName: 'file-heart',\n icon: [384, 512, [], \"e176\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 301.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0L97.9 344.6C86.5 333.1 80 317.5 80 301.3z\"]\n};\nvar faBeerMug = {\n prefix: 'fas',\n iconName: 'beer-mug',\n icon: [512, 512, [\"beer-foam\"], \"e0b3\", \"M267.7 133.3C253 149.7 231.7 160 208 160s-45-10.3-59.7-26.7c-6.9-7.7-21.4-8.6-29.6-2.3C108 139.1 94.6 144 80 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c14.6 0 28 4.9 38.7 13c8.2 6.3 22.7 5.4 29.6-2.3C163 10.3 184.3 0 208 0s45 10.3 59.7 26.7c6.9 7.7 21.4 8.6 29.6 2.3C308 20.9 321.4 16 336 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.6 0-28-4.9-38.7-13c-8.2-6.3-22.7-5.4-29.6 2.3zM32 448V163.2C46.1 171.3 62.5 176 80 176c18.7 0 36.2-5.4 51-14.7c20 19 47.2 30.7 77 30.7s57-11.7 77-30.7c14.8 9.3 32.3 14.7 51 14.7c19.6 0 37.9-5.9 53.1-16h46.1c42.4 0 76.8 34.4 76.8 76.8V338.9c0 30.3-17.9 57.9-45.6 70.2L384 445.7V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64zm352-72.4l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7V236.8c0-7.1-5.7-12.8-12.8-12.8H384V375.6zM160 240c0-8.8-7.2-16-16-16s-16 7.2-16 16V400c0 8.8 7.2 16 16 16s16-7.2 16-16V240zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V400c0 8.8 7.2 16 16 16s16-7.2 16-16V240zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V400c0 8.8 7.2 16 16 16s16-7.2 16-16V240z\"]\n};\nvar faBeerFoam = faBeerMug;\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [512, 512, [], \"f6cf\", \"M48.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L201.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L47.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM16 171.7V295.3c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L40.2 158C29.6 151.6 16 159.3 16 171.7zM310.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L322.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM496 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4V171.7zm-49.3 246L286.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9v52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM233.2 512c3.7 0 6.8-3 6.8-6.8V452.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM41.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L30.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L402.9 238.1c-6.5-10-21.4-9.6-27.3 .8L290.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9H183.1c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM174.4 176H337.6c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2h-3.2c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z\"]\n};\nvar faDrone = {\n prefix: 'fas',\n iconName: 'drone',\n icon: [512, 512, [], \"f85f\", \"M223 127.2L171.6 88.7C162.3 64.9 139.1 48 112 48c-35.3 0-64 28.7-64 64c0 27.1 16.9 50.3 40.7 59.6L127.2 223c-5 .7-10.1 1-15.2 1C50.1 224 0 173.9 0 112S50.1 0 112 0s112 50.1 112 112c0 5.2-.3 10.2-1 15.2zm-49.6 2.8l39.8 29.9 .1 .1h85.3l.1-.1 39.8-29.9 29.7-22.3C370.3 92.1 383.8 80 400 80c17.7 0 32 14.3 32 32c0 16.2-12.1 29.7-27.8 31.7l-22.3 29.7-29.9 39.8-.1 .1v85.3l.1 .1 29.9 39.8 22.3 29.7c15.7 2.1 27.8 15.5 27.8 31.7c0 17.7-14.3 32-32 32c-16.2 0-29.7-12.1-31.7-27.8l-29.7-22.3-39.8-29.9-.1-.1H213.3l-.1 .1-39.8 29.9-29.7 22.3C141.7 419.9 128.2 432 112 432c-17.7 0-32-14.3-32-32c0-16.2 12.1-29.7 27.8-31.7l22.3-29.7 29.9-39.8 .1-.1V213.3l-.1-.1-29.9-39.8-22.3-29.7C92.1 141.7 80 128.2 80 112c0-17.7 14.3-32 32-32c16.2 0 29.7 12.1 31.7 27.8l29.7 22.3zM224 400c0 61.9-50.1 112-112 112S0 461.9 0 400s50.1-112 112-112c5.2 0 10.2 .3 15.2 1L88.7 340.4C64.9 349.7 48 372.9 48 400c0 35.3 28.7 64 64 64c27.1 0 50.3-16.9 59.6-40.7L223 384.8c.7 5 1 10.1 1 15.2zm65-272.8c-.7-5-1-10.1-1-15.2C288 50.1 338.1 0 400 0s112 50.1 112 112s-50.1 112-112 112c-5.2 0-10.2-.3-15.2-1l38.5-51.3c23.8-9.3 40.7-32.5 40.7-59.6c0-35.3-28.7-64-64-64c-27.1 0-50.3 16.9-59.6 40.7L289 127.2zM288 400c0-5.2 .3-10.2 1-15.2l51.3 38.5c9.3 23.8 32.5 40.7 59.6 40.7c35.3 0 64-28.7 64-64c0-27.1-16.9-50.3-40.7-59.6L384.8 289c5-.7 10.1-1 15.2-1c61.9 0 112 50.1 112 112s-50.1 112-112 112s-112-50.1-112-112z\"]\n};\nvar faTruckDroplet = {\n prefix: 'fas',\n iconName: 'truck-droplet',\n icon: [640, 512, [], \"e58c\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 272c39.8 0 72-29.6 72-66c0-27-39.4-82.9-59.9-110.3c-6.1-8.2-18.1-8.2-24.2 0C175.4 123 136 179 136 206c0 36.5 32.2 66 72 66z\"]\n};\nvar faFileCircleXmark = {\n prefix: 'fas',\n iconName: 'file-circle-xmark',\n icon: [576, 512, [], \"e5a1\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faTemperatureArrowUp = {\n prefix: 'fas',\n iconName: 'temperature-arrow-up',\n icon: [576, 512, [\"temperature-up\"], \"e040\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM176 0C114.1 0 64 50.1 64 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM480 160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V160z\"]\n};\nvar faTemperatureUp = faTemperatureArrowUp;\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [127941], \"f5a2\", \"M4.1 38.2C1.4 34.2 0 29.4 0 24.6C0 11 11 0 24.6 0H133.9c11.2 0 21.7 5.9 27.4 15.5l68.5 114.1c-48.2 6.1-91.3 28.6-123.4 61.9L4.1 38.2zm503.7 0L405.6 191.5c-32.1-33.3-75.2-55.8-123.4-61.9L350.7 15.5C356.5 5.9 366.9 0 378.1 0H487.4C501 0 512 11 512 24.6c0 4.8-1.4 9.6-4.1 13.6zM80 336a176 176 0 1 1 352 0A176 176 0 1 1 80 336zm184.4-94.9c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1L168 298.9c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.2 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9l44.8-23.6c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.6-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1l-22.4-45.4z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [128716], \"f236\", \"M32 32c17.7 0 32 14.3 32 32V320H288V160c0-17.7 14.3-32 32-32H544c53 0 96 43 96 96V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V416H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32zm144 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faBookCopy = {\n prefix: 'fas',\n iconName: 'book-copy',\n icon: [576, 512, [], \"e0be\", \"M160 96L96 96C43 96 0 139 0 192V416c0 53 43 96 96 96H320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 288 96c-17.7 0-32-14.3-32-32s14.3-32 32-32h81.1c-10.9-18.8-17.1-40.7-17.1-64V96zM320 416h32H512h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H512 288c-53 0-96 43-96 96V320c0 24.6 9.2 47 24.4 64c17.6 19.6 43.1 32 71.6 32h32zm-64-96c0-17.7 14.3-32 32-32h96 96v64H384 288c-17.7 0-32-14.3-32-32z\"]\n};\nvar faSquareH = {\n prefix: 'fas',\n iconName: 'square-h',\n icon: [448, 512, [\"h-square\"], \"f0fd\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM336 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H160l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H288V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHSquare = faSquareH;\nvar faSquareC = {\n prefix: 'fas',\n iconName: 'square-c',\n icon: [448, 512, [], \"e266\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM167.4 199.4c-31.2 31.2-31.2 81.9 0 113.1s81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0z\"]\n};\nvar faClockTwo = {\n prefix: 'fas',\n iconName: 'clock-two',\n icon: [512, 512, [], \"e35a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm24-392v91.2L338.7 172c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3l-96 64c-7.4 4.9-16.8 5.4-24.6 1.2S232 264.9 232 256V120c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faSquareEllipsisVertical = {\n prefix: 'fas',\n iconName: 'square-ellipsis-vertical',\n icon: [448, 512, [], \"e26f\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCalendarUsers = {\n prefix: 'fas',\n iconName: 'calendar-users',\n icon: [640, 512, [], \"e5e2\", \"M192 32V64H144c-26.5 0-48 21.5-48 48v48h32H512h32V112c0-26.5-21.5-48-48-48H448V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H256V32c0-17.7-14.3-32-32-32s-32 14.3-32 32zm55.4 480H392.6c-5.4-9.4-8.6-20.3-8.6-32c0-43.8 29.4-80.8 69.6-92.3c-23-20.5-37.6-50.4-37.6-83.7c0-56.4 41.7-103.1 96-110.9V192H128v1.1c54.3 7.8 96 54.4 96 110.9c0 33.3-14.5 63.2-37.6 83.7C226.6 399.2 256 436.2 256 480c0 11.7-3.1 22.6-8.6 32zM528 384a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm-48 32c-35.3 0-64 28.7-64 64c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H480zM192 304A80 80 0 1 0 32 304a80 80 0 1 0 160 0zM0 480c0 17.7 14.3 32 32 32H192c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64z\"]\n};\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M319.4 372c48.5-31.3 80.6-85.9 80.6-148c0-97.2-78.8-176-176-176S48 126.8 48 224c0 62.1 32.1 116.6 80.6 148c1.2 17.3 4 38 7.2 57.1l.2 1C56 395.8 0 316.5 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224c0 92.5-56 171.9-136 206.1l.2-1.1c3.1-19.2 6-39.8 7.2-57zm-2.3-38.1c-1.6-5.7-3.9-11.1-7-16.2c-5.8-9.7-13.5-17-21.9-22.4c19.5-17.6 31.8-43 31.8-71.3c0-53-43-96-96-96s-96 43-96 96c0 28.3 12.3 53.8 31.8 71.3c-8.4 5.4-16.1 12.7-21.9 22.4c-3.1 5.1-5.4 10.5-7 16.2C99.8 307.5 80 268 80 224c0-79.5 64.5-144 144-144s144 64.5 144 144c0 44-19.8 83.5-50.9 109.9zM224 312c32.9 0 64 8.6 64 43.8c0 33-12.9 104.1-20.6 132.9c-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8c0-35.1 31.1-43.8 64-43.8zm0-144a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faBee = {\n prefix: 'fas',\n iconName: 'bee',\n icon: [576, 512, [], \"e0b2\", \"M196.7 4.7c6.2-6.2 16.4-6.2 22.6 0l34.8 34.8C264.4 34.7 275.9 32 288 32s23.6 2.7 33.9 7.5L356.7 4.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L347.8 58.8C360.4 73 368 91.6 368 112c0 3-.2 6-.5 8.9C390.3 105 419 96 448 96c65 0 128 44.9 128 112c0 61.9-53.6 104.9-112.9 111.2c.6-5.1 .9-10.2 .9-15.2c0-16.8-2.4-33.1-6.8-48.5c35.2-3.6 54.8-27.9 54.8-47.5c0-21.3-22.9-48-64-48c-34.8 0-56.6 19.2-62.4 38.1c28.6 26.3 46.4 64 46.4 105.9c0 83.8-103.6 179.7-129.9 202.8c-3.9 3.4-8.9 5.2-14.1 5.2s-10.2-1.8-14.1-5.2C247.6 483.7 144 387.8 144 304c0-41.9 17.9-79.6 46.4-105.9C184.6 179.2 162.8 160 128 160c-41.1 0-64 26.7-64 48c0 19.6 19.5 43.9 54.8 47.5c-4.4 15.4-6.8 31.7-6.8 48.5c0 5 .3 10.1 .9 15.2C53.6 312.9 0 269.9 0 208C0 140.9 63 96 128 96c29 0 57.7 9 80.5 24.9c-.3-2.9-.5-5.9-.5-8.9c0-20.4 7.6-39 20.2-53.2L196.7 27.3c-6.2-6.2-6.2-16.4 0-22.6zm52.8 384.1c12.8 16.4 26.5 31.3 38.5 43.4c12-12.1 25.7-27 38.5-43.4c1.2-1.6 2.5-3.2 3.7-4.8H245.8c1.2 1.6 2.4 3.2 3.7 4.8zM359.6 336c5.6-12.6 8.4-23.4 8.4-32H208c0 8.6 2.8 19.4 8.4 32H359.6zM352 256c-14.6-19.4-37.8-32-64-32s-49.4 12.6-64 32H352z\"]\n};\nvar faTemperatureFull = {\n prefix: 'fas',\n iconName: 'temperature-full',\n icon: [320, 512, [\"temperature-4\", \"thermometer-4\", \"thermometer-full\"], \"f2c7\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V112c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature4 = faTemperatureFull;\nvar faThermometer4 = faTemperatureFull;\nvar faThermometerFull = faTemperatureFull;\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nvar faCandyBar = {\n prefix: 'fas',\n iconName: 'candy-bar',\n icon: [640, 512, [127851, \"chocolate-bar\"], \"e3e8\", \"M0 320H128V224H0v96zm0 64c0 35.3 28.7 64 64 64h64V352H0v32zm288 64V352H160v96H288zm0-224H160v96H288V224zm0-160H160V192H288V64zm288 0H320V448H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM44.2 192H120s0 0 0 0h8V160h0V108.2c0-7.1-9-11.1-15-7.4C101 107.9 87 112 72 112c-4 0-7.9-.3-11.7-.9c-7-1-14.2 6.2-13.1 13.1c.6 3.8 .9 7.7 .9 11.7c0 15-4.1 29-11.3 41c-3.6 6.1 .4 15 7.4 15z\"]\n};\nvar faChocolateBar = faCandyBar;\nvar faXmarkLarge = {\n prefix: 'fas',\n iconName: 'xmark-large',\n icon: [448, 512, [], \"e59b\", \"M393.4 41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 256 438.6 425.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 301.3 54.6 470.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0L224 210.7 393.4 41.4z\"]\n};\nvar faPinata = {\n prefix: 'fas',\n iconName: 'pinata',\n icon: [512, 512, [], \"e3c3\", \"M112 318.1V254.7l25.8 9.9c14.7 5.6 31.1 4.9 45.1-2.2L259.8 224H288 432c44.2 0 80 35.8 80 80v13.2l-23.3 9.3-19.1-9.6c-8.2-4.1-17.7-4.5-26.2-1.1l-26.7 10.7-19.1-9.6c-8.2-4.1-17.7-4.5-26.2-1.1l-26.7 10.7-19.1-9.6c-8.2-4.1-17.7-4.5-26.2-1.1l-26.7 10.7-19.1-9.6c-8.2-4.1-17.7-4.5-26.2-1.1l-26.7 10.7-19.1-9.6c-8.2-4.1-17.7-4.5-26.2-1.1l-26.7 10.7L112 318.1zm0 35.8l2.4 1.2c8.2 4.1 17.7 4.5 26.2 1.1l26.7-10.7 19.1 9.6c8.2 4.1 17.7 4.5 26.2 1.1l26.7-10.7 19.1 9.6c8.2 4.1 17.7 4.5 26.2 1.1l26.7-10.7 19.1 9.6c8.2 4.1 17.7 4.5 26.2 1.1l26.7-10.7 19.1 9.6c8.2 4.1 17.7 4.5 26.2 1.1l26.7-10.7 19.1 9.6c8.2 4.1 17.7 4.5 26.2 1.1l11.4-4.6v50.5l-24 12-17.7-8.8c-9-4.5-19.6-4.5-28.6 0l-16.5 8.3-16.3-10.8c-2.6-1.8-5.7-2.7-8.9-2.7H224c-3.2 0-6.2 .9-8.9 2.7l-16.3 10.8-16.5-8.3c-9-4.5-19.6-4.5-28.6 0L136 414.1l-24-12V353.9zm37.3-119.2L34.4 190.6C13.4 179.6 0 157.8 0 133.8V128C0 92.7 28.7 64 64 64H176V32c0-17.7 14.3-32 32-32s32 14.3 32 32V198.1l-71.4 35.7c-6 3-13.1 3.4-19.3 .9zM112 437.9l9.7 4.8c9 4.5 19.6 4.5 28.6 0l17.7-8.8 16.5 8.3c10.3 5.1 22.5 4.4 32.1-2l7.4-4.9V480c0 17.7-14.3 32-32 32H144c-17.7 0-32-14.3-32-32V437.9zm288-2.7l7.4 4.9c9.6 6.4 21.8 7.1 32.1 2l16.5-8.3 17.7 8.8c9 4.5 19.6 4.5 28.6 0l9.7-4.8V480c0 17.7-14.3 32-32 32H432c-17.7 0-32-14.3-32-32V435.2zM200 144a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faArrowsFromLine = {\n prefix: 'fas',\n iconName: 'arrows-from-line',\n icon: [448, 512, [], \"e0a4\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32v32c0 17.7 14.3 32 32 32s32-14.3 32-32V128h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64zM192 352v32H160c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H256V352c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V32zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32z\"]\n};\nvar faBowlSpoon = {\n prefix: 'fas',\n iconName: 'bowl-spoon',\n icon: [512, 512, [129379], \"e3e0\", \"M112 192C50.1 192 0 149 0 96S50.1 0 112 0c48.8 0 90.3 26.7 105.6 64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H217.6c-15.4 37.3-56.9 64-105.6 64zM2 257.5C.9 239.3 15.4 224 33.6 224H478.4c18.2 0 32.7 15.3 31.6 33.5c-5.4 91.7-59.7 169.7-136.4 209.7l-1.2 9.7c-2.5 20-19.5 35-39.7 35H179.3c-20.2 0-37.2-15-39.7-35l-1.2-9.7C61.6 427.2 7.4 349.3 2 257.5z\"]\n};\nvar faHexagonCheck = {\n prefix: 'fas',\n iconName: 'hexagon-check',\n icon: [512, 512, [], \"e416\", \"M17.1 292c-12.9-22.3-12.9-49.7 0-72L105.4 67.1c12.9-22.3 36.6-36 62.4-36H344.3c25.7 0 49.5 13.7 62.4 36L494.9 220c12.9 22.3 12.9 49.7 0 72L406.6 444.9c-12.9 22.3-36.6 36-62.4 36H167.7c-25.7 0-49.5-13.7-62.4-36L17.1 292zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z\"]\n};\nvar faPlugCircleXmark = {\n prefix: 'fas',\n iconName: 'plug-circle-xmark',\n icon: [576, 512, [], \"e560\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [512, 512, [], \"f621\", \"M208 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V172.9l122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.5 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1V480c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V339.1L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4V32z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M228.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C76.1 30.2 64 46 64 64c0 107.4 37.8 206 100.8 283.1L9.2 469.1c-10.4 8.2-12.3 23.3-4.1 33.7s23.3 12.3 33.7 4.1l592-464c10.4-8.2 12.3-23.3 4.1-33.7s-23.3-12.3-33.7-4.1L253 278c-17.8-21.5-32.9-45.2-45-70.7L257.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96zm96.8 319l-91.3 72C310.7 476 407.1 512 512 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L368.7 368c-15-7.1-29.3-15.2-43-24.3z\"]\n};\nvar faTrafficLightStop = {\n prefix: 'fas',\n iconName: 'traffic-light-stop',\n icon: [320, 512, [], \"f63a\", \"M64 0C28.7 0 0 28.7 0 64V352c0 88.4 71.6 160 160 160s160-71.6 160-160V64c0-35.3-28.7-64-64-64H64zm72 368a24 24 0 1 0 48 0 24 24 0 1 0 -48 0zm72 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zM160 216a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm0 72a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm0-128a48 48 0 1 1 0-96 48 48 0 1 1 0 96z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M0 64C0 28.7 28.7 0 64 0H352c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 352c0-17.7 14.3-32 32-32V304c0-44.2 35.8-80 80-80H416c17.7 0 32-14.3 32-32V160 69.5c37.3 13.2 64 48.7 64 90.5v32c0 53-43 96-96 96H272c-8.8 0-16 7.2-16 16v16c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faAccentGrave = {\n prefix: 'fas',\n iconName: 'accent-grave',\n icon: [192, 512, [], \"60\", \"M108.3 204.8L41.2 95c-6-9.8-9.2-21.2-9.2-32.7C32 28.1 59.7 0 93.9 0c29.2 0 54.4 20.4 60.6 49l27.1 126.6C187 200.5 168 224 142.5 224c-14 0-26.9-7.3-34.2-19.2z\"]\n};\nvar faHandshakeAngle = {\n prefix: 'fas',\n iconName: 'handshake-angle',\n icon: [640, 512, [\"hands-helping\"], \"f4c4\", \"M544 248v3.3l69.7-69.7c21.9-21.9 21.9-57.3 0-79.2L535.6 24.4c-21.9-21.9-57.3-21.9-79.2 0L416.3 64.5c-2.7-.3-5.5-.5-8.3-.5H296c-37.1 0-67.6 28-71.6 64H224V248c0 22.1 17.9 40 40 40s40-17.9 40-40V176c0 0 0-.1 0-.1V160l16 0 136 0c0 0 0 0 .1 0H464c44.2 0 80 35.8 80 80v8zM336 192v56c0 39.8-32.2 72-72 72s-72-32.2-72-72V129.4c-35.9 6.2-65.8 32.3-76 68.2L99.5 255.2 26.3 328.4c-21.9 21.9-21.9 57.3 0 79.2l78.1 78.1c21.9 21.9 57.3 21.9 79.2 0l37.7-37.7c.9 0 1.8 .1 2.7 .1H384c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16H432c26.5 0 48-21.5 48-48c0-12.8-5-24.4-13.2-33c25.7-5 45.1-27.6 45.2-54.8v-.4c-.1-30.8-25.1-55.8-56-55.8c0 0 0 0 0 0l-120 0z\"]\n};\nvar faHandsHelping = faHandshakeAngle;\nvar faCircle0 = {\n prefix: 'fas',\n iconName: 'circle-0',\n icon: [512, 512, [], \"e0ed\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c53 0 96 43 96 96v64c0 53-43 96-96 96s-96-43-96-96V224c0-53 43-96 96-96zm-48 96v64c0 26.5 21.5 48 48 48s48-21.5 48-48V224c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faDialMedLow = {\n prefix: 'fas',\n iconName: 'dial-med-low',\n icon: [576, 512, [], \"e160\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM174.6 400.5c-56.7-56.7-62-145.4-15.7-208L270.8 304.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L192.8 158.5c62.6-46.2 151.3-41 208 15.7c62.5 62.5 62.5 163.8 0 226.3s-163.8 62.5-226.3 0zM512 288a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 96a32 32 0 1 1 64 0A32 32 0 1 1 64 96zM480 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 480a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm416-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faLocationDot = {\n prefix: 'fas',\n iconName: 'location-dot',\n icon: [384, 512, [\"map-marker-alt\"], \"f3c5\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faMapMarkerAlt = faLocationDot;\nvar faCrab = {\n prefix: 'fas',\n iconName: 'crab',\n icon: [512, 512, [129408], \"e3ff\", \"M128 0C60 0 4.4 53 .2 120c0 .2 0 .3 0 .5L0 128H7.9l.1 0H0v33.3c0 28.1 16.3 53.6 41.8 65.4L98.9 253c-3.7 6-6.9 12.4-9.6 19H51.8L23.2 257.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l32 16c2.2 1.1 4.7 1.7 7.2 1.7H81c-.7 5.2-1 10.6-1 16v9.8l-21.1 7c-2.4 .8-4.5 2.1-6.3 3.9l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L72.6 366l28-9.3 30.7 30.7L90.9 400.8c-2.4 .8-4.5 2.1-6.3 3.9l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L104.6 430l52-17.3 15.7 15.7-36.6 21.9c-4.8 2.9-7.8 8.1-7.8 13.7v32c0 8.8 7.2 16 16 16s16-7.2 16-16V473.1L201.8 448H310.2L352 473.1V496c0 8.8 7.2 16 16 16s16-7.2 16-16V464c0-5.6-3-10.8-7.8-13.7l-36.6-21.9 15.7-15.7 52 17.3 29.3 29.3c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-32-32c-1.8-1.8-3.9-3.1-6.3-3.9l-40.4-13.5 30.7-30.7 28 9.3 29.3 29.3c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-32-32c-1.8-1.8-3.9-3.1-6.3-3.9l-21.1-7V320c0-5.4-.3-10.8-1-16h33c2.5 0 4.9-.6 7.2-1.7l32-16c7.9-4 11.1-13.6 7.2-21.5s-13.6-11.1-21.5-7.2L460.2 272H422.7c-2.7-6.6-5.9-13-9.6-19l57.1-26.3c25.5-11.8 41.8-37.3 41.8-65.4V128h-8c0 0 .1 0 .1 0H512l-.2-7.5c0-.1 0-.3 0-.4l0 0 0 0C507.6 53 452 0 384 0H339.3c-7.1 0-10.7 8.6-5.7 13.7l36.7 36.7c5 5 1.5 13.7-5.7 13.7H328c-4.4 0-8.1 3.6-7.5 8c3.9 31.6 30.9 56 63.5 56h80v33.3c0 9.4-5.4 17.9-13.9 21.8L378.7 216c-16.9-12.2-37-20.3-58.7-23V144c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H224V144c0-8.8-7.2-16-16-16s-16 7.2-16 16v49c-21.7 2.7-41.7 10.9-58.7 23L61.9 183.1C53.4 179.2 48 170.6 48 161.3V128h80c32.6 0 59.6-24.4 63.5-56c.5-4.4-3.1-8-7.5-8H147.3c-7.1 0-10.7-8.6-5.7-13.7l36.7-36.7c5-5 1.5-13.7-5.7-13.7H128z\"]\n};\nvar faBoxOpenFull = {\n prefix: 'fas',\n iconName: 'box-open-full',\n icon: [640, 512, [\"box-full\"], \"f49c\", \"M508.9 64.9l-27.5 73.4L320 158.5l-7.2-.9c4.6-8.8 7.2-18.9 7.2-29.6c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 5.1 .6 10 1.7 14.7l-65.5-8.2c-.1-2.2-.2-4.3-.2-6.5C128 57.3 185.3 0 256 0c69.6 0 126.2 55.6 128 124.7l35.1-93.6c9.3-24.8 37-37.4 61.8-28.1s37.4 37 28.1 61.8zM576 338.3v83.4c0 14.7-10 27.5-24.2 31L335.5 506.8c-10.2 2.6-20.9 2.6-31 0L88.2 452.8C74 449.2 64 436.4 64 421.7V338.3l127.6 36.5c27.8 8 57.6-3.8 72.5-28.6L320 252.9l55.9 93.2c14.9 24.8 44.6 36.6 72.5 28.6L576 338.3zM58.9 168.8c3-6.1 9.6-9.6 16.3-8.7L320 190.7l244.8-30.6c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 344c-13.9 4-28.8-1.9-36.2-14.3L320 190.7l-83.4 139c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 297.3c-19.3-5.5-28.8-27.2-19.8-45.1l41.7-83.4z\"]\n};\nvar faBoxFull = faBoxOpenFull;\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [62769], \"3e\", \"M3.4 81.7c-7.9 15.8-1.5 35 14.3 42.9L280.5 256 17.7 387.4C1.9 395.3-4.5 414.5 3.4 430.3s27.1 22.2 42.9 14.3l320-160c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-320-160c-15.8-7.9-35-1.5-42.9 14.3z\"]\n};\nvar faQuotes = {\n prefix: 'fas',\n iconName: 'quotes',\n icon: [576, 512, [], \"e234\", \"M88 0C39.4 0 0 39.4 0 88v56 24 24c0 26.5 21.5 48 48 48H96c26.5 0 48-21.5 48-48V144c0-26.5-21.5-48-48-48H64V88c0-13.3 10.7-24 24-24h8c17.7 0 32-14.3 32-32s-14.3-32-32-32H88zM264 0c-48.6 0-88 39.4-88 88v56 24 24c0 26.5 21.5 48 48 48h48c26.5 0 48-21.5 48-48V144c0-26.5-21.5-48-48-48H240V88c0-13.3 10.7-24 24-24h8c17.7 0 32-14.3 32-32s-14.3-32-32-32h-8zM576 424V368 344 320c0-26.5-21.5-48-48-48H480c-26.5 0-48 21.5-48 48v48c0 26.5 21.5 48 48 48h32v8c0 13.3-10.7 24-24 24h-8c-17.7 0-32 14.3-32 32s14.3 32 32 32h8c48.6 0 88-39.4 88-88zM312 512c48.6 0 88-39.4 88-88V368 344 320c0-26.5-21.5-48-48-48H304c-26.5 0-48 21.5-48 48v48c0 26.5 21.5 48 48 48h32v8c0 13.3-10.7 24-24 24h-8c-17.7 0-32 14.3-32 32s14.3 32 32 32h8z\"]\n};\nvar faPretzel = {\n prefix: 'fas',\n iconName: 'pretzel',\n icon: [512, 512, [129384], \"e441\", \"M138.6 32C62.1 32 0 94.1 0 170.6C0 253.3 40.9 326.5 103.7 371L71.3 417C58.6 435 62.9 460 81 472.7s43 8.4 55.7-9.7l40-56.8c21.8 6.4 44.9 9.8 68.7 9.8H256h10.6c23.9 0 46.9-3.4 68.7-9.8l40 56.8c12.7 18.1 37.7 22.4 55.7 9.7s22.4-37.7 9.7-55.7l-32.4-46C471.1 326.5 512 253.3 512 170.6C512 94.1 449.9 32 373.4 32H364c-42.6 0-81 18-108 46.8C229 50 190.6 32 148 32h-9.4zM216 180v7.4c0 15.5-4.8 30.7-13.7 43.4l-52.5 74.7C107.5 275.6 80 226.3 80 170.6c0-32.4 26.2-58.6 58.6-58.6H148c37.6 0 68 30.4 68 68zm40 113.5L285.2 335c-6.1 .7-12.3 1-18.6 1H256 245.4c-6.3 0-12.5-.3-18.6-1L256 293.5zm53.7-62.6C300.8 218.2 296 203 296 187.4V180c0-37.6 30.4-68 68-68h9.4c32.4 0 58.6 26.2 58.6 58.6c0 55.7-27.5 105-69.7 134.9l-52.5-74.7z\"]\n};\nvar faPersonSwimming = {\n prefix: 'fas',\n iconName: 'person-swimming',\n icon: [576, 512, [127946, \"swimmer\"], \"f5c4\", \"M309.5 178.4L447.9 297.1c-1.6 .9-3.2 2-4.8 3c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-10.1 0-21.1-2.2-31.9-6.2C163.1 193.2 262.2 96 384 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-26.9 0-52.3 6.6-74.5 18.4zM160 160A64 64 0 1 1 32 160a64 64 0 1 1 128 0zM306.5 325.9C329 341.4 356.5 352 384 352c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 405.7 417 416 384 416c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 341.2 165.1 352 192 352c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faSwimmer = faPersonSwimming;\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [384, 512, [8595], \"f063\", \"M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faUserRobotXmarks = {\n prefix: 'fas',\n iconName: 'user-robot-xmarks',\n icon: [448, 512, [], \"e4a7\", \"M224 0c8.8 0 16 7.2 16 16V64h64c35.3 0 64 28.7 64 64V256c0 35.3-28.7 64-64 64H144c-35.3 0-64-28.7-64-64V128c0-35.3 28.7-64 64-64h64V16c0-8.8 7.2-16 16-16zM16 144c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V144zm400-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM160 240a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm48 16a16 16 0 1 0 32 0 16 16 0 1 0 -32 0zm80-16a16 16 0 1 0 0 32 16 16 0 1 0 0-32zM96 352H352c53 0 96 43 96 96v32c0 17.7-14.3 32-32 32H352V448c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32-14.3-32-32V448c0-53 43-96 96-96zm80 112v48H144V464c0-8.8 7.2-16 16-16s16 7.2 16 16zm48-16c8.8 0 16 7.2 16 16v48H208V464c0-8.8 7.2-16 16-16zm80 16v48H272V464c0-8.8 7.2-16 16-16s16 7.2 16 16zM119.5 119.5c-4.7 4.7-4.7 12.3 0 17L143 160l-23.5 23.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L160 177l23.5 23.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L177 160l23.5-23.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L160 143l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0zm145 0c-4.7-4.7-12.3-4.7-17 0s-4.7 12.3 0 17L271 160l-23.5 23.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L288 177l23.5 23.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L305 160l23.5-23.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L288 143l-23.5-23.5z\"]\n};\nvar faMessageQuote = {\n prefix: 'fas',\n iconName: 'message-quote',\n icon: [512, 512, [\"comment-alt-quote\"], \"e1e4\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm160 48c-17.7 0-32 14.3-32 32v48c0 17.7 14.3 32 32 32h32v7.3c0 11.7-8.5 21.7-20.1 23.7l-7.9 1.3c-13.1 2.2-21.9 14.5-19.7 27.6s14.5 21.9 27.6 19.7l7.9-1.3c34.7-5.8 60.2-35.8 60.2-71V192 168 144c0-17.7-14.3-32-32-32H160zm224 80V168 144c0-17.7-14.3-32-32-32H304c-17.7 0-32 14.3-32 32v48c0 17.7 14.3 32 32 32h32v7.3c0 11.7-8.5 21.7-20.1 23.7l-7.9 1.3c-13.1 2.2-21.9 14.5-19.7 27.6s14.5 21.9 27.6 19.7l7.9-1.3c34.7-5.8 60.2-35.8 60.2-71V192z\"]\n};\nvar faCommentAltQuote = faMessageQuote;\nvar faCandyCorn = {\n prefix: 'fas',\n iconName: 'candy-corn',\n icon: [640, 512, [], \"f6bd\", \"M440.6 256c9.8 25.6 19.6 49 28.7 67.2c3.3 6.7 6.2 12.4 9.3 17.7c.5 .8 1 1.7 1.4 2.4c.5-.8 1-1.6 1.4-2.4c3.1-5.3 6-11 9.3-17.7c9-18.2 18.9-41.5 28.7-67.2H440.6zM480 0c44.1 0 90.4 4.2 132.6 18.1C629 23.5 640 38.8 640 56c0 17.4-5.3 43.8-12.3 71.4c-4.4-1-9.3-2.1-14.5-3.1c-30.9-6.2-76-12.3-133.1-12.3s-102.2 6.1-133.1 12.3c-5.3 1.1-10.1 2.1-14.5 3.1c-7-27.6-12.3-54-12.3-71.4c0-17.2 11.4-32.6 27.8-38.1C390 4.4 436 0 480 0zM370.3 250.4c-11-30.8-21.3-62.9-29.6-92.1c3.8-.9 8-1.8 12.4-2.7c29.1-5.8 72-11.7 126.9-11.7s97.8 5.9 126.9 11.7c4.5 .9 8.6 1.8 12.4 2.7c-8.3 29.2-18.6 61.3-29.6 92.1c-13.2 37.2-27.9 73.6-41.6 101.3c-13.4 27-32.9 64.3-68.1 64.3s-54.6-37.3-68.1-64.3c-13.8-27.7-28.4-64.1-41.6-101.3zM83 211.1c30.4-30.4 65.3-59.4 103.9-79c15-7.5 33.1-4.6 45 7.3c12 12 26.6 33.9 40.7 57.7c-3.8 2.3-7.8 5-12.2 7.9c-25.6 17.1-60.9 43.9-100.3 83.3S94 363 76.9 388.6c-2.9 4.3-5.5 8.4-7.9 12.2C45.2 386.6 23.3 372 11.3 360C-.6 348.1-3.3 329.6 4.2 314.6C23.9 276.2 52.6 241.5 83 211.1zm97 248.2c-28.8-13.7-58-28.7-83.9-43c2-3.2 4.3-6.7 6.7-10.4c16-24 41.6-57.7 79.4-95.5S253.7 247 277.7 231c3.7-2.5 7.2-4.7 10.4-6.7c14.4 25.9 29.4 55.1 43.1 83.9c16.5 34.8 31.5 70 41.1 98.5c9.3 27.9 21.7 67-2.6 91.2s-63.4 11.9-91.2 2.6c-28.5-9.6-63.7-24.6-98.5-41.1zm52.3-44.6c24.4 11 47.3 20.2 66.1 26.5c6.9 2.3 12.8 4.2 18.6 5.8c.9 .2 1.8 .5 2.7 .7c-.2-.9-.4-1.7-.7-2.7c-1.5-5.8-3.4-11.7-5.8-18.6c-6.3-18.8-15.6-41.7-26.5-66.1l-54.4 54.4z\"]\n};\nvar faFolderMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'folder-magnifying-glass',\n icon: [512, 512, [\"folder-search\"], \"e18b\", \"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM336 272c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c17.8 0 34.4-4.8 48.7-13.2L327 393.1c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-38.3-38.3c8.5-14.3 13.3-31 13.3-48.9zm-96-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faFolderSearch = faFolderMagnifyingGlass;\nvar faNotebook = {\n prefix: 'fas',\n iconName: 'notebook',\n icon: [512, 512, [], \"e201\", \"M64 48v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v80H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v80H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56c0 26.5 21.5 48 48 48h80V0H112C85.5 0 64 21.5 64 48zM432 0H224V512H432c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48z\"]\n};\nvar faDroplet = {\n prefix: 'fas',\n iconName: 'droplet',\n icon: [384, 512, [128167, \"tint\"], \"f043\", \"M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0h1.8c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z\"]\n};\nvar faTint = faDroplet;\nvar faBullseyePointer = {\n prefix: 'fas',\n iconName: 'bullseye-pointer',\n icon: [512, 512, [], \"f649\", \"M256 448c106 0 192-86 192-192s-86-192-192-192S64 150 64 256c0 3.9 .1 7.8 .4 11.7L1.8 286.1C.6 276.2 0 266.2 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256s-114.6 256-256 256c-10.2 0-20.2-.6-30.1-1.8l18.4-62.6c3.9 .2 7.8 .4 11.7 .4zm2.3-48l19.7-67c33.5-9.6 58-40.4 58-76.9c0-44.2-35.8-80-80-80c-36.5 0-67.4 24.5-76.9 58L112 253.7C113.2 175.2 177.2 112 256 112c79.5 0 144 64.5 144 144c0 78.8-63.2 142.8-141.7 144zM39 308.5l204.8-60.2c12.1-3.6 23.4 7.7 19.9 19.9L203.5 473c-4.1 13.9-23.2 15.6-29.7 2.6l-28.7-57.3c-.7-1.3-1.5-2.6-2.5-3.7l-88 88c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l88-88c-1.1-1-2.3-1.9-3.7-2.5L36.4 338.2c-13-6.5-11.3-25.6 2.6-29.7z\"]\n};\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [576, 512, [], \"f12d\", \"M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7H288h9.4H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H387.9L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416H288l-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z\"]\n};\nvar faHexagonImage = {\n prefix: 'fas',\n iconName: 'hexagon-image',\n icon: [512, 512, [], \"e504\", \"M17.1 220c-12.9 22.3-12.9 49.7 0 72l88.3 152.9c12.9 22.3 36.6 36 62.4 36H344.3c25.7 0 49.5-13.7 62.4-36L494.9 292c12.9-22.3 12.9-49.7 0-72L406.6 67.1c-12.9-22.3-36.6-36-62.4-36H167.7c-25.7 0-49.5 13.7-62.4 36L17.1 220zm141.2 59.8c4.5-4.9 10.8-7.7 17.4-7.8s13 2.6 17.6 7.4L232.2 320l71.6-86.2c4.6-5.5 11.3-8.7 18.5-8.7s13.9 3.2 18.5 8.7l72.6 87.4-55.2 95.7c-2.9 5-8.1 8-13.9 8l-176.6 0c-5.7 0-11-3-13.9-8l-46.8-81 51.2-56.1zM192 120a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nvar faEarthAmericas = {\n prefix: 'fas',\n iconName: 'earth-americas',\n icon: [512, 512, [127758, \"earth\", \"earth-america\", \"globe-americas\"], \"f57d\", \"M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5v39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9v39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7v-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1H257c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faEarth = faEarthAmericas;\nvar faEarthAmerica = faEarthAmericas;\nvar faGlobeAmericas = faEarthAmericas;\nvar faCrateApple = {\n prefix: 'fas',\n iconName: 'crate-apple',\n icon: [512, 512, [\"apple-crate\"], \"f6b1\", \"M160 54.9C160 24.6 184.6 0 214.9 0c5 0 9.1 4.1 9.1 9.1C224 39.4 199.4 64 169.1 64c-5 0-9.1-4.1-9.1-9.1zM32 171.4C32 127.8 52.4 80 96 80c15.6 0 34.1 5.9 47.2 11c10.7 4.2 22.8 4.2 33.5 0c13.1-5.1 31.6-11 47.2-11c43.6 0 64 47.8 64 91.4c0 7-.4 13.9-1.2 20.6H33.2c-.8-6.7-1.2-13.5-1.2-20.6zM319 192c.7-6.7 1-13.6 1-20.6c0-26.1-6-55.1-20.3-78.6c-2.7-4.4-5.7-8.7-9-12.7c15 .6 32.2 6.1 44.6 11c10.7 4.2 22.8 4.2 33.5 0c13.1-5.1 31.6-11 47.2-11c43.6 0 64 47.8 64 91.4c0 7-.4 13.9-1.2 20.6H319zM406.9 0c5 0 9.1 4.1 9.1 9.1C416 39.4 391.4 64 361.1 64c-5 0-9.1-4.1-9.1-9.1C352 24.6 376.6 0 406.9 0zM0 272c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48v80H0V272zM0 384H512v80c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V384zm80-96a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM64 464a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM464 288a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM448 464a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faAppleCrate = faCrateApple;\nvar faPersonBurst = {\n prefix: 'fas',\n iconName: 'person-burst',\n icon: [640, 512, [], \"e53b\", \"M480 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H465.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L408 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faGameBoard = {\n prefix: 'fas',\n iconName: 'game-board',\n icon: [448, 512, [], \"f867\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm144 0v80h80V96H144zm0 160V176H64v80h80zm80 0H144v80H64v80h80V336h80v80h80V336h80V256H304V176h80V96H304v80H224v80zm0 0h80v80H224V256z\"]\n};\nvar faHatChef = {\n prefix: 'fas',\n iconName: 'hat-chef',\n icon: [512, 512, [], \"f86b\", \"M153.6 51.2C177 20.1 214.1 0 256 0s79 20.1 102.4 51.2c16-12.1 36-19.2 57.6-19.2c7.1 0 14.4 .8 21.6 2.5C482 44.7 512 84.3 512 128c0 7.1-.8 14.4-2.5 21.6C496 224 448 320 448 320H373.6l26.2-157.4c1.5-8.7-4.4-17-13.2-18.4s-17 4.4-18.4 13.2L341.1 320H272V160c0-8.8-7.2-16-16-16s-16 7.2-16 16V320H170.9L143.8 157.4c-1.5-8.7-9.7-14.6-18.4-13.2s-14.6 9.7-13.2 18.4L138.4 320H64s-48-96-61.5-170.4C.8 142.4 0 135.1 0 128c0-43.7 30-83.3 74.4-93.5C81.6 32.8 88.9 32 96 32c21.6 0 41.6 7.1 57.6 19.2zM448 448c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V352H448v96z\"]\n};\nvar faHandBackPointRight = {\n prefix: 'fas',\n iconName: 'hand-back-point-right',\n icon: [512, 512, [], \"e1a1\", \"M512 168c0-22.1-17.9-40-40-40l-200 0-7 0-73 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l55.7 0c-1.4-2-3-3.9-4.5-5.8L227.2 71C215 56.4 197 48 178 48L140 48c-38 0-74 16.9-98.3 46.1l-4.5 5.4C13.1 128.3 0 164.5 0 201.9L0 320c0 70.7 57.3 128 128 128l64 0 32 0c26.5 0 48-21.5 48-48c0-12.4-4.7-23.6-12.3-32.1C284.5 366 304 345.3 304 320c0-12.4-4.7-23.6-12.3-32.1C316.5 286 336 265.3 336 240c0-12.3-4.6-23.5-12.2-32L472 208c22.1 0 40-17.9 40-40z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [128330], \"f4ba\", \"M160.8 96.5c14 17 31 30.9 49.5 42.2c25.9 15.8 53.7 25.9 77.7 31.6V138.8C265.8 108.5 250 71.5 248.6 28c-.4-11.3-7.5-21.5-18.4-24.4c-7.6-2-15.8-.2-21 5.8c-13.3 15.4-32.7 44.6-48.4 87.2zM320 144v30.6l0 0v1.3l0 0 0 32.1c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8 .9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5L245.6 448H320c88.4 0 160-71.6 160-160V128l29.9-44.9c1.3-2 2.1-4.4 2.1-6.8c0-6.8-5.5-12.3-12.3-12.3H400c-44.2 0-80 35.8-80 80zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faSnowflakeDroplets = {\n prefix: 'fas',\n iconName: 'snowflake-droplets',\n icon: [640, 512, [], \"e5c1\", \"M320 0c17.7 0 32 14.3 32 32V62.1l15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49v70.3l61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.7 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L383.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 21.5 12.6-29.3 57-22.7-13.2 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L352 311.7v70.3l49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V449.9l-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49V311.7l-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L145 395.1l-29.3-57 21.5-12.6-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L256.5 256l-60.9-35.5-67.7 18.1c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8-25.3-14.8c-15.3-8.9-20.4-28.5-11.5-43.8s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L288 200.3V129.9L239 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15V32c0-17.7 14.3-32 32-32zM519.1 418.1l47.5-92.4c1.8-3.5 5.4-5.7 9.3-5.7s7.5 2.2 9.3 5.7l47.5 92.4c4.7 9.1 7.1 19.3 7.1 29.5c0 35.3-28.7 64.3-64 64.3s-64-29-64-64.3c0-10.2 2.4-20.4 7.1-29.5zM54.7 325.7c1.8-3.5 5.4-5.7 9.3-5.7s7.5 2.2 9.3 5.7l47.5 92.4c4.7 9.1 7.1 19.3 7.1 29.5C128 483 99.3 512 64 512s-64-29-64-64.3c0-10.2 2.4-20.4 7.1-29.5l47.5-92.4z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [576, 512, [\"battery-0\"], \"f244\", \"M80 160c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zM0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176z\"]\n};\nvar faBattery0 = faBatteryEmpty;\nvar faGrid4 = {\n prefix: 'fas',\n iconName: 'grid-4',\n icon: [448, 512, [], \"e198\", \"M0 48c0-8.8 7.2-16 16-16H73.6c8.8 0 16 7.2 16 16v57.6c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V48zM0 167.5c0-8.8 7.2-16 16-16H73.6c8.8 0 16 7.2 16 16v57.6c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V167.5zM16 270.9H73.6c8.8 0 16 7.2 16 16v57.6c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V286.9c0-8.8 7.2-16 16-16zM0 406.4c0-8.8 7.2-16 16-16H73.6c8.8 0 16 7.2 16 16V464c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V406.4zM119.5 48c0-8.8 7.2-16 16-16h57.6c8.8 0 16 7.2 16 16v57.6c0 8.8-7.2 16-16 16H135.5c-8.8 0-16-7.2-16-16V48zm0 119.5c0-8.8 7.2-16 16-16h57.6c8.8 0 16 7.2 16 16v57.6c0 8.8-7.2 16-16 16H135.5c-8.8 0-16-7.2-16-16V167.5zm16 103.5h57.6c8.8 0 16 7.2 16 16v57.6c0 8.8-7.2 16-16 16H135.5c-8.8 0-16-7.2-16-16V286.9c0-8.8 7.2-16 16-16zm-16 135.5c0-8.8 7.2-16 16-16h57.6c8.8 0 16 7.2 16 16V464c0 8.8-7.2 16-16 16H135.5c-8.8 0-16-7.2-16-16V406.4zM254.9 32h57.6c8.8 0 16 7.2 16 16v57.6c0 8.8-7.2 16-16 16H254.9c-8.8 0-16-7.2-16-16V48c0-8.8 7.2-16 16-16zm0 119.5h57.6c8.8 0 16 7.2 16 16v57.6c0 8.8-7.2 16-16 16H254.9c-8.8 0-16-7.2-16-16V167.5c0-8.8 7.2-16 16-16zm-16 135.5c0-8.8 7.2-16 16-16h57.6c8.8 0 16 7.2 16 16v57.6c0 8.8-7.2 16-16 16H254.9c-8.8 0-16-7.2-16-16V286.9zm16 103.5h57.6c8.8 0 16 7.2 16 16V464c0 8.8-7.2 16-16 16H254.9c-8.8 0-16-7.2-16-16V406.4c0-8.8 7.2-16 16-16zM358.4 48c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16v57.6c0 8.8-7.2 16-16 16H374.4c-8.8 0-16-7.2-16-16V48zm0 119.5c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16v57.6c0 8.8-7.2 16-16 16H374.4c-8.8 0-16-7.2-16-16V167.5zm16 103.5H432c8.8 0 16 7.2 16 16v57.6c0 8.8-7.2 16-16 16H374.4c-8.8 0-16-7.2-16-16V286.9c0-8.8 7.2-16 16-16zm-16 135.5c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16V464c0 8.8-7.2 16-16 16H374.4c-8.8 0-16-7.2-16-16V406.4z\"]\n};\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [129510], \"f696\", \"M175.2 476.6c-9.7-18-15.2-38.7-15.2-60.6c0-40.3 19-78.2 51.2-102.4l64-48c8.1-6 12.8-15.5 12.8-25.6V96H128V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C14.2 357.3 0 385.8 0 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l21.6-16.2zM128 64H288V48c0-14.5 3.9-28.2 10.7-39.9C291 3 281.9 0 272 0H176c-26.5 0-48 21.5-48 48V64zM320 96V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C206.2 357.3 192 385.8 192 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l115.2-86.4C493 382.2 512 344.3 512 304V96H320zM512 64V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48V64H512z\"]\n};\nvar faFaceSunglasses = {\n prefix: 'fas',\n iconName: 'face-sunglasses',\n icon: [512, 512, [], \"e398\", \"M256 512c141.4 0 256-114.6 256-256c0-16.6-1.6-32.8-4.6-48.5l2.6-15.7c7.9-47.6-20.5-91.8-63.3-106.6C399.8 32.9 331.8 0 256 0S112.2 32.9 65.3 85.2C22.4 100-6 144.2 2 191.8l2.6 15.7C1.6 223.2 0 239.4 0 256C0 397.4 114.6 512 256 512zM183.3 272H104.7c-23.5 0-43.5-17-47.3-40.1l-8-48C44.4 154.6 67 128 96.7 128h94.7c14.4 0 27.1 6.2 35.8 16h57.8c8.7-9.8 21.4-16 35.8-16h94.7c29.7 0 52.2 26.6 47.3 55.9l-8 48C450.8 255 430.8 272 407.3 272H328.7c-23.5 0-43.5-17-47.3-40.1l-8-48c-.4-2.7-.7-5.3-.7-7.9H239.3c0 2.6-.2 5.2-.7 7.9l-8 48C226.8 255 206.8 272 183.3 272zm-19.2 69.5C182 362.2 212.6 384 256 384s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 388.1 311.1 416 256 416s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [512, 512, [], \"f01c\", \"M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V323.9c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32H121zm0 64H391l48 192H387.8c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7H195.8c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7H73L121 96z\"]\n};\nvar faSquare0 = {\n prefix: 'fas',\n iconName: 'square-0',\n icon: [448, 512, [], \"e255\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm160 96c53 0 96 43 96 96v64c0 53-43 96-96 96s-96-43-96-96V224c0-53 43-96 96-96zm-48 96v64c0 26.5 21.5 48 48 48s48-21.5 48-48V224c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faSection = {\n prefix: 'fas',\n iconName: 'section',\n icon: [256, 512, [], \"e447\", \"M64.9 96C67.1 84.4 73.7 76.2 86 70.6c13.8-6.2 34.8-8.9 61.2-4.5c8.8 1.4 36.1 7.1 44.1 9.3c17 4.8 34.7-5.1 39.5-22.2s-5.1-34.7-22.2-39.5c-11.1-3.1-41-9.2-50.9-10.8C123-2.7 88.3-.6 59.7 12.3C29.9 25.8 7.5 50.9 1.6 86.5c-.1 .5-.2 1.1-.2 1.6c-2.2 19.7 .3 37.9 8.1 54.1c7.7 16.1 19.4 28 32 36.9c.6 .5 1.3 .9 2 1.4C22.3 194.2 6.5 215.1 1.7 243c-.1 .6-.2 1.1-.2 1.7c-2.3 19.3 .4 37.1 8.4 53c7.9 15.6 19.8 27 32.3 35.5c22.4 15.2 51.9 24 75.4 31l0 0 3.7 1.1c27.2 8.2 46.9 14.6 59.4 23.8c5.5 4 8.2 7.6 9.5 10.9c1.3 3.2 2.6 8.6 .9 18.1c-1.7 10.1-7.7 18-20.7 23.5c-14 6-35.4 8.5-62 4.4c-12.8-2.1-35.1-9.7-54.1-16.2l0 0c-4.3-1.5-8.5-2.9-12.3-4.2C25.3 420 7.2 429.1 1.6 445.8s3.5 34.9 20.3 40.5c2.6 .8 5.7 1.9 9.2 3.1c18.6 6.3 48.5 16.6 67.3 19.6l0 0 .2 0c34.5 5.4 68.8 3.4 97.2-8.7c29.4-12.6 52.5-36.5 58.5-71.5c3.3-19.3 1.9-37.4-5-53.9c-6.3-15-16.4-26.4-27.6-35.2c16.5-13.9 28.5-33.2 32.6-58.2c3.2-19.8 1.9-38.3-4.8-55.1c-6.7-16.8-17.8-29.4-30.2-39c-22.8-17.6-53.6-27.4-77.7-35l-1.4-.5c-27.4-8.7-47.8-15.3-61.5-25c-6.1-4.4-9.5-8.5-11.4-12.4c-1.8-3.7-3.2-9.3-2.3-18.5zm76.7 208.5c-.2-.1-.4-.1-.6-.2l-1.4-.4c-27.4-8.2-47.9-14.5-61.7-23.8c-6.2-4.2-9.3-7.9-11-11.3c-1.5-3-2.9-7.7-2.1-15.7c1.9-9.7 7.9-17.3 20.5-22.7c14-6 35.4-8.5 62.1-4.3l16.4 2.6c6.3 2.9 11.7 6 16.2 9.5c5.5 4.2 8.4 8.2 10 12.2c1.6 4 2.8 10.4 1.1 20.9c-2.4 14.7-12.8 26.4-37.1 31l-12.4 2.3z\"]\n};\nvar faSquareThisWayUp = {\n prefix: 'fas',\n iconName: 'square-this-way-up',\n icon: [448, 512, [\"box-up\"], \"f49f\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM80 384H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zM265.4 192c-9.6 0-17.4-7.8-17.4-17.4c0-4.3 1.6-8.4 4.4-11.6L306.7 102c3.4-3.8 8.2-6 13.3-6s9.9 2.2 13.3 6l54.3 61.1c2.8 3.2 4.4 7.3 4.4 11.6c0 9.6-7.8 17.4-17.4 17.4H352V304c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V192H265.4zm-192 0c-9.6 0-17.4-7.8-17.4-17.4c0-4.3 1.6-8.4 4.4-11.6L114.7 102c3.4-3.8 8.2-6 13.3-6s9.9 2.2 13.3 6l54.3 61.1c2.8 3.2 4.4 7.3 4.4 11.6c0 9.6-7.8 17.4-17.4 17.4H160V304c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V192H73.4z\"]\n};\nvar faBoxUp = faSquareThisWayUp;\nvar faGaugeHigh = {\n prefix: 'fas',\n iconName: 'gauge-high',\n icon: [512, 512, [62461, \"tachometer-alt\", \"tachometer-alt-fast\"], \"f625\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faTachometerAlt = faGaugeHigh;\nvar faTachometerAltFast = faGaugeHigh;\nvar faSquareAmpersand = {\n prefix: 'fas',\n iconName: 'square-ampersand',\n icon: [448, 512, [], \"e260\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM184 191.6c0 4.1 1.6 8.1 4.6 11L203 217.1l23.6-17.3c3.4-2.5 5.4-6.4 5.4-10.6c0-7.3-5.9-13.2-13.2-13.2H199.6c-8.6 0-15.6 7-15.6 15.6zm71 46.9l-17.6 12.9 28.7 28.7 26.2-37.8c7.5-10.9 22.5-13.6 33.4-6.1s13.6 22.5 6.1 33.4l-31.1 45L329 343c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-22.4-22.4c-15.1 18.5-37.8 29.4-62 29.4H178.5c-36.7 0-66.5-29.8-66.5-66.5c0-21.2 10.1-41.1 27.2-53.6l24.7-18.1-9.2-9.2c-11.9-11.9-18.6-28.1-18.6-45c0-35.1 28.5-63.6 63.6-63.6h19.2c33.8 0 61.2 27.4 61.2 61.2c0 19.5-9.3 37.8-25 49.3zm-87.5 64.1c-4.7 3.5-7.5 9-7.5 14.9c0 10.2 8.3 18.5 18.5 18.5h32.2c10.5 0 20.3-5.2 26.3-13.8l1.4-2-40.1-40.1-30.7 22.5z\"]\n};\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M215.4 96H144 107.8 96v8.8V144v40.4 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3V96c0-26.5 21.5-48 48-48h76.6l49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48H416c26.5 0 48 21.5 48 48v44.3l22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4v-89V144 104.8 96H404.2 368 296.6 215.4zM0 448V242.1L217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1V448v0c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64v0zM176 160H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faLampDesk = {\n prefix: 'fas',\n iconName: 'lamp-desk',\n icon: [512, 512, [], \"e014\", \"M192 65.9C192 29.5 221.5 0 257.9 0c17.5 0 34.3 6.9 46.6 19.3L349.3 64H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-73.5 73.5-45.1 45.1-73.5 73.5c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V173.3l-92.6 92.6L209 448H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H184.7c-.5 0-.9 0-1.4 0H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H143L97 263.8c-2.7-10.9 .5-22.4 8.4-30.4L218.7 120l-7.4-7.4C198.9 100.2 192 83.4 192 65.9zM432 288c-14.7 0-27.8-6.6-36.6-16.9l67.7-67.7c10.3 8.8 16.9 21.9 16.9 36.6c0 26.5-21.5 48-48 48z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M192 48c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48V512H368V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H192V48zM48 96H160V512H48c-26.5 0-48-21.5-48-48V320H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V224H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V144c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v48H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80V464c0 26.5-21.5 48-48 48H480V96H592zM312 64c-8.8 0-16 7.2-16 16v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V152h24c8.8 0 16-7.2 16-16V120c0-8.8-7.2-16-16-16H344V80c0-8.8-7.2-16-16-16H312z\"]\n};\nvar faHospitalAlt = faHospital;\nvar faHospitalWide = faHospital;\nvar faPollPeople = {\n prefix: 'fas',\n iconName: 'poll-people',\n icon: [640, 512, [], \"f759\", \"M128 48A48 48 0 1 0 32 48a48 48 0 1 0 96 0zm448 80H480V96h96v32zM272 32c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H272zM576 416H352V384H576v32zM272 320c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H272zM64 128c-35.3 0-64 28.7-64 64c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H64zm64 208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM64 416c-35.3 0-64 28.7-64 64c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faWhiskeyGlassIce = {\n prefix: 'fas',\n iconName: 'whiskey-glass-ice',\n icon: [512, 512, [\"glass-whiskey-rocks\"], \"f7a1\", \"M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5h253c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32H32zM417 283.7c9.6 9.6 15 22.7 15 36.3s-5.4 26.7-15 36.3L356.3 417c-9.6 9.6-22.7 15-36.3 15s-26.7-5.4-36.3-15l-49-49H160c-35.3 0-64-28.7-64-64V281.1L69 96H443L415.8 282.5l1.2 1.2zM160 208c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h50.6c-1.7-5.1-2.6-10.5-2.6-16c0-13.6 5.4-26.7 15-36.3l33-33V240c0-17.7-14.3-32-32-32H160zm85.7 98.3C242 310 240 314.9 240 320s2 10 5.7 13.7l60.7 60.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7l60.7-60.7c3.6-3.6 5.7-8.5 5.7-13.7s-2-10-5.7-13.7l-60.7-60.7C330 242 325.1 240 320 240s-10 2-13.7 5.7l-60.7 60.7z\"]\n};\nvar faGlassWhiskeyRocks = faWhiskeyGlassIce;\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l64 64c12.5 12.5 12.5 32.8 0 45.3c-11.8 11.8-30.7 12.5-43.2 1.9l-9.5 9.5-48.8 48.8c-9.2 9.2-11.5 22.9-8.6 35.6c9.4 40.9-1.9 85.6-33.8 117.5L197.3 493.3c-25 25-65.5 25-90.5 0l-88-88c-25-25-25-65.5 0-90.5L180.2 153.3c31.9-31.9 76.6-43.1 117.5-33.8c12.6 2.9 26.4 .5 35.5-8.6l48.8-48.8 9.5-9.5c-10.6-12.6-10-31.4 1.9-43.2zM99.3 347.3l65.4 65.4c6.2 6.2 16.4 6.2 22.6 0l97.4-97.4c6.2-6.2 6.2-16.4 0-22.6l-65.4-65.4c-6.2-6.2-16.4-6.2-22.6 0L99.3 324.7c-6.2 6.2-6.2 16.4 0 22.6z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [448, 512, [9820], \"f447\", \"M32 192V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V192c0 10.1-4.7 19.6-12.8 25.6L352 256l16 144H80L96 256 44.8 217.6C36.7 211.6 32 202.1 32 192zm176 96h32c8.8 0 16-7.2 16-16V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 8.8 7.2 16 16 16zM22.6 473.4L64 432H384l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H38.6C26.1 512 16 501.9 16 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nvar faUserBountyHunter = {\n prefix: 'fas',\n iconName: 'user-bounty-hunter',\n icon: [448, 512, [], \"e2bf\", \"M323 120C309.4 78 270 48 224 48s-85.4 30-99 72H323zm5.5 36.4L248 171.5v98.4l9.5-1.9c7.6-49.7 42.9-81.5 71.9-97.8l-.9-13.8zm-209 0l-.9 13.8c29 16.3 64.2 48.1 71.9 97.8l9.5 1.9V171.5l-80.5-15.1zM96 70C123.1 27.7 170.5 0 224 0c80.1 0 146.5 62.2 151.7 142.2L383 256.5c1.3 20-12.4 37.9-32.1 41.8L250.1 318.4c-5.2 1-10.4 1.6-15.7 1.6H213.5c-5.3 0-10.5-.5-15.7-1.6L97 298.3c-16.2-3.2-28.4-16-31.4-31.6c-1-3.4-1.6-7-1.6-10.7V16C64 7.2 71.2 0 80 0H96c8.8 0 16 7.2 16 16s-7.2 16-16 16V70zm38.4 282H313.6C387.8 352 448 412.2 448 486.4c0 14.1-11.5 25.6-25.6 25.6H25.6C11.5 512 0 500.5 0 486.4C0 412.2 60.2 352 134.4 352zm37.1 103.4c-3.7 2.8-1.7 8.6 2.9 8.6h99.2c4.6 0 6.6-5.9 2.9-8.6l-47.7-35.8c-2.8-2.1-6.8-2.1-9.6 0l-47.7 35.8z\"]\n};\nvar faBarsStaggered = {\n prefix: 'fas',\n iconName: 'bars-staggered',\n icon: [512, 512, [\"reorder\", \"stream\"], \"f550\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faReorder = faBarsStaggered;\nvar faStream = faBarsStaggered;\nvar faDiagramSankey = {\n prefix: 'fas',\n iconName: 'diagram-sankey',\n icon: [576, 512, [], \"e158\", \"M294.4 44.8c6-8.1 15.5-12.8 25.6-12.8H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H336L249.6 211.2c-6 8.1-15.5 12.8-25.6 12.8H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H208L294.4 44.8zM141.9 320H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H216.5l57.6 96H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-11.2 0-21.7-5.9-27.4-15.5L141.9 320z\"]\n};\nvar faCloudHailMixed = {\n prefix: 'fas',\n iconName: 'cloud-hail-mixed',\n icon: [512, 512, [], \"f73a\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zM81.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-10.3 24c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l10.3-24c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm232 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zM326.1 385.5l-10.3 24c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l10.3-24c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM32 448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCircleUpLeft = {\n prefix: 'fas',\n iconName: 'circle-up-left',\n icon: [512, 512, [], \"e128\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 313.4V176c0-8.8 7.2-16 16-16H313.4c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16L296 232l66.3 66.3c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C322 366 317.1 368 312 368s-10-2-13.7-5.7L232 296l-33.4 33.4c-4.2 4.2-10 6.6-16 6.6c-12.5 0-22.6-10.1-22.6-22.6z\"]\n};\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [9784], \"f655\", \"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.5 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.5-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faObjectsAlignLeft = {\n prefix: 'fas',\n iconName: 'objects-align-left',\n icon: [512, 512, [], \"e3be\", \"M0 24L0 488c0 13.3 10.7 24 24 24s24-10.7 24-24L48 24C48 10.7 37.3 0 24 0S0 10.7 0 24zM176 64c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48l288 0c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48L176 64zm0 224c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H176z\"]\n};\nvar faOilCanDrip = {\n prefix: 'fas',\n iconName: 'oil-can-drip',\n icon: [640, 512, [], \"e205\", \"M352 96c0 17.7-14.3 32-32 32H288v32h80.9c9.9 0 19.7 2.3 28.6 6.8L448 192l167-35.8c18.1-3.9 30.7 17.6 18.4 31.5L451.1 394.3c-12.1 13.8-29.6 21.7-48 21.7H144c-26.5 0-48-21.5-48-48V346.7l-67.5-30C11.2 309 0 291.8 0 272.8V208c0-26.5 21.5-48 48-48H96h48 80V128H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H320c17.7 0 32 14.3 32 32zM48 208v64.8l48 21.3V208H48zM592 448c-26.5 0-48-21.5-48-48c0-21 20.6-62.6 34.9-88.8c5.8-10.6 20.5-10.6 26.3 0C619.4 337.4 640 379 640 400c0 32-21.5 48-48 48z\"]\n};\nvar faFaceSmilingHands = {\n prefix: 'fas',\n iconName: 'face-smiling-hands',\n icon: [640, 512, [], \"e396\", \"M411.1 495.3c-17-21.6-27.1-48.9-27.1-78.5V386c-18.1 8.4-39.4 14-64 14s-45.9-5.6-64-14v30.8c0 29.6-10.1 56.9-27.1 78.5c28.3 10.8 59 16.7 91.1 16.7s62.8-5.9 91.1-16.7zM320 0C183.1 0 71.3 107.5 64.3 242.6c16.8-5.8 36.2-2 49.6 11.4L161 301.1c9.4-13.7 25.1-22.7 43-22.7c28.7 0 52 23.3 52 52v19.2c16.8 10.6 38.1 18.4 64 18.4s47.2-7.7 64-18.4V330.4c0-28.7 23.3-52 52-52c17.9 0 33.6 9 43 22.7l47.1-47.1c13.4-13.4 32.8-17.2 49.6-11.4C568.7 107.5 456.9 0 320 0zM281.6 228.8l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0zm160 0l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zM68.7 299.3L120 350.6c2.6 2.6 2.6 6.8 0 9.4s-6.8 2.6-9.4 0L43.3 292.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L88 382.6c2.6 2.6 2.6 6.8 0 9.4s-6.8 2.6-9.4 0L27.3 340.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L56 414.6c2.6 2.6 2.6 6.8 0 9.4s-6.8 2.6-9.4 0L27.3 404.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l56.8 56.8C79.3 502 103.6 512 128.8 512c52.6 0 95.2-42.6 95.2-95.2V384 330.4c0-11-9-20-20-20s-20 9-20 20v19.7c0 7.1-8.6 10.7-13.7 5.7l-79-79c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6zm502.6 0c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-79 79c-5 5-13.7 1.5-13.7-5.7V330.4c0-11-9-20-20-20s-20 9-20 20V384v32.8c0 52.6 42.6 95.2 95.2 95.2c25.2 0 49.5-10 67.3-27.9l56.8-56.8c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L593.4 424c-2.6 2.6-6.8 2.6-9.4 0s-2.6-6.8 0-9.4l51.3-51.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L561.4 392c-2.6 2.6-6.8 2.6-9.4 0s-2.6-6.8 0-9.4l67.3-67.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L529.4 360c-2.6 2.6-6.8 2.6-9.4 0s-2.6-6.8 0-9.4l51.3-51.3z\"]\n};\nvar faBroccoli = {\n prefix: 'fas',\n iconName: 'broccoli',\n icon: [512, 512, [129382], \"e3e2\", \"M0 256c0 53 43 96 96 96H416c53 0 96-43 96-96c0-45.5-31.6-83.6-74.1-93.5c6.4-10 10.1-21.8 10.1-34.5c0-35.3-28.7-64-64-64c-12.7 0-24.6 3.7-34.5 10.1C339.6 31.6 301.5 0 256 0s-83.6 31.6-93.5 74.1C152.6 67.7 140.7 64 128 64c-35.3 0-64 28.7-64 64c0 12.7 3.7 24.6 10.1 34.5C31.6 172.4 0 210.5 0 256zM192.2 490.3c5 12.8 17.1 21.7 30.9 21.7h65.9c13.8 0 25.9-8.9 30.9-21.7c17.6-45.3 39.6-82.1 56.1-106.3H280l-16.8 33.7c-2.9 5.9-11.4 5.9-14.3 0L232 384H136.1c16.5 24.2 38.5 60.9 56.1 106.3z\"]\n};\nvar faRouteInterstate = {\n prefix: 'fas',\n iconName: 'route-interstate',\n icon: [512, 512, [], \"f61b\", \"M85.3 192h341c-.8 44.3-7.9 81.8-21.9 114.4c-23.4 54.1-68.5 99.1-149 138.5c-81.5-36.2-126.1-80.9-149-135.4c-14-33.3-20.6-72-21-117.4zM276.9 7.3c-12.8-7.8-29-7.8-41.8 0c-27.5 16.8-50.2 26-73.4 30c-23.3 4-49.2 3.2-83.7-3.2C55.9 30 34.4 45 31.1 67.7C16 170.4 15.9 259.5 47.3 334.2c32.1 76.4 94.6 132.5 193 173.9c10.4 4.4 22.3 4.1 32.5-.6c95.7-44.8 157.8-100.7 190.3-175.7c32-73.9 32.9-161.2 17.8-264.1C477.6 45.1 456.1 30 434 34.1c-34.4 6.3-60.3 7.2-83.7 3.2c-23.2-4-45.9-13.2-73.4-30z\"]\n};\nvar faEarMuffs = {\n prefix: 'fas',\n iconName: 'ear-muffs',\n icon: [640, 512, [], \"f795\", \"M320 64c-78.2 0-143.3 56.1-157.2 130.2c-6-1.4-12.3-2.2-18.8-2.2c-17.7 0-34.1 5.8-47.4 15.6C105 91.5 201.8 0 320 0S535 91.5 543.4 207.6C530.1 197.8 513.7 192 496 192c-6.5 0-12.7 .8-18.8 2.2C463.3 120.1 398.2 64 320 64zM179.8 304c7.6 8.5 12.2 19.7 12.2 32s-4.6 23.5-12.2 32c7.6 8.5 12.2 19.7 12.2 32s-4.6 23.5-12.2 32c7.6 8.5 12.2 19.7 12.2 32c0 26.5-21.5 48-48 48c-22.1 0-40.8-15-46.3-35.4C92.2 478.8 86.2 480 80 480c-26.5 0-48-21.5-48-48c0-6.2 1.2-12.2 3.4-17.7C15 408.8 0 390.1 0 368s15-40.8 35.4-46.3C33.2 316.2 32 310.2 32 304c0-26.5 21.5-48 48-48c6.2 0 12.2 1.2 17.7 3.4C103.2 239 121.9 224 144 224c26.5 0 48 21.5 48 48c0 12.3-4.6 23.5-12.2 32zm280.4 0c-7.6-8.5-12.2-19.7-12.2-32c0-26.5 21.5-48 48-48c22.1 0 40.8 15 46.3 35.4c5.5-2.2 11.4-3.4 17.7-3.4c26.5 0 48 21.5 48 48c0 6.2-1.2 12.2-3.4 17.7C625 327.2 640 345.9 640 368s-15 40.8-35.4 46.3c2.2 5.5 3.4 11.4 3.4 17.7c0 26.5-21.5 48-48 48c-6.2 0-12.2-1.2-17.7-3.4C536.8 497 518.1 512 496 512c-26.5 0-48-21.5-48-48c0-12.3 4.6-23.5 12.2-32c-7.6-8.5-12.2-19.7-12.2-32s4.6-23.5 12.2-32c-7.6-8.5-12.2-19.7-12.2-32s4.6-23.5 12.2-32z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [127789], \"f80f\", \"M488.6 23.4c31.2 31.2 31.2 81.9 0 113.1l-352 352c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1l352-352c31.2-31.2 81.9-31.2 113.1 0zM443.3 92.7c-6.2-6.2-16.4-6.2-22.6 0c-12.5 12.5-23.8 15.1-37.5 17.6l-2.5 .4c-13.8 2.5-31.6 5.6-48 22c-16.7 16.7-20.9 36-24.1 50.9l0 0v0l-.2 1c-3.4 15.6-6 26.4-15.7 36.1s-20.5 12.3-36.1 15.7l-1 .2c-14.9 3.2-34.2 7.4-50.9 24.1s-20.9 36-24.1 50.9l-.2 1c-3.4 15.6-6 26.4-15.7 36.1c-9.2 9.2-18 10.8-32.7 13.4l0 0-.9 .2c-15.6 2.8-34.9 6.9-54.4 26.4c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0c12.5-12.5 23.8-15.1 37.5-17.6l2.5-.4c13.8-2.5 31.6-5.6 48-22c16.7-16.7 20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1s20.5-12.3 36.1-15.7l1-.2c14.9-3.2 34.2-7.4 50.9-24.1s20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1c9.2-9.2 18-10.8 32.7-13.4l.9-.2c15.6-2.8 34.9-6.9 54.4-26.4c6.2-6.2 6.2-16.4 0-22.6zM191.2 479.2l288-288L495 207c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L289 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17l-15.8-15.8zM17 305C6.1 294.1 0 279.4 0 264s6.1-30.1 17-41L223 17C233.9 6.1 248.6 0 264 0s30.1 6.1 41 17l15.8 15.8-288 288L17 305z\"]\n};\nvar faTransporterEmpty = {\n prefix: 'fas',\n iconName: 'transporter-empty',\n icon: [512, 512, [], \"e046\", \"M296 512h88c17.7 0 32-14.3 32-32s-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32h88 80z\"]\n};\nvar faPersonWalkingWithCane = {\n prefix: 'fas',\n iconName: 'person-walking-with-cane',\n icon: [512, 512, [\"blind\"], \"f29d\", \"M176 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8.4 32c-36.4 0-69.6 20.5-85.9 53.1L35.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L128 231.6v43.2c0 17 6.7 33.3 18.7 45.3L224 397.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V390.6c0-12.7-5.1-24.9-14.1-33.9L224 306.7V213.3l70.4 93.9c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8L268.8 166.4C250.7 142.2 222.2 128 192 128H167.6zM128.3 346.8L97 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l22-88.2-52.8-52.8zM450.8 505.1c5 7.3 15 9.1 22.3 4s9.1-15 4-22.3L358.9 316.1c-2.8 3.8-6.1 7.3-10.1 10.3c-5 3.8-10.5 6.4-16.2 7.9L450.8 505.1z\"]\n};\nvar faBlind = faPersonWalkingWithCane;\nvar faAngle90 = {\n prefix: 'fas',\n iconName: 'angle-90',\n icon: [448, 512, [], \"e08d\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V64zM96 97.6v48.3c31 3.6 60.4 12.5 87.4 25.7l25.3-41.1C174.2 113 136.2 101.6 96 97.6zm115.2 89.7c32.6 21 60.5 48.9 81.5 81.5l40.9-25.2c-25-39-58.2-72.2-97.2-97.2l-25.2 40.9zM334.1 384h48.3c-4-40.2-15.4-78.2-32.9-112.6l-41.1 25.3c13.2 26.9 22 56.3 25.7 87.4z\"]\n};\nvar faRectangleTerminal = {\n prefix: 'fas',\n iconName: 'rectangle-terminal',\n icon: [512, 512, [], \"e236\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm102.3 55.8c-9 9.8-8.3 25 1.5 33.9L180.5 256l-76.7 70.3c-9.8 9-10.4 24.1-1.5 33.9s24.1 10.4 33.9 1.5l96-88c5-4.5 7.8-11 7.8-17.7s-2.8-13.1-7.8-17.7l-96-88c-9.8-9-25-8.3-33.9 1.5zM248 336c-13.3 0-24 10.7-24 24s10.7 24 24 24H392c13.3 0 24-10.7 24-24s-10.7-24-24-24H248z\"]\n};\nvar faKite = {\n prefix: 'fas',\n iconName: 'kite',\n icon: [640, 512, [129665], \"f6f4\", \"M344 0c-14.9 0-27.8 10.3-31.2 24.8l-80 344c-.4 1.7-.7 3.5-.8 5.2l-85.4 85.4c-2.9 2.9-6.9 4.6-11 4.6c-8.6 0-15.6-7-15.6-15.6V359.8l-24-12-24 12v88.6c0 35.1 28.5 63.6 63.6 63.6c16.9 0 33-6.7 45-18.6L266 407.9c1.8-.1 3.5-.4 5.2-.8l344-80c14.5-3.4 24.8-16.3 24.8-31.2V32c0-17.7-14.3-32-32-32H344zM24 128c-13.3 0-24 10.7-24 24s10.7 24 24 24h8c22.1 0 40 17.9 40 40v68L18.7 257.4c-1.8-.9-3.8-1.4-5.8-1.4C5.8 256 0 261.8 0 268.9v70.1C0 346.2 5.8 352 12.9 352c2 0 4-.5 5.8-1.4L72 324v0l9.7-4.8c4.5-2.3 9.4-3.4 14.3-3.4l.5 0c3.5 .1 7 .7 10.4 1.9c1.2 .4 2.3 .9 3.4 1.5l0 0L120 324l53.3 26.6c1.8 .9 3.8 1.4 5.8 1.4c7.1 0 12.9-5.8 12.9-12.9V268.9c0-7.1-5.8-12.9-12.9-12.9c-2 0-4 .5-5.8 1.4L120 284V216c0-48.6-39.4-88-88-88H24zM427.3 84.7L480 137.4l52.7-52.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L502.6 160l52.7 52.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L480 182.6 363.3 299.3c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L457.4 160l-52.7-52.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0z\"]\n};\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [129345], \"f569\", \"M501.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L370.2 104.5C335.8 98.7 297 96 256 96C114.6 96 0 128 0 208V368c0 31.3 27.4 58.8 72 78.7V344c0-13.3 10.7-24 24-24s24 10.7 24 24V463.4c33 8.9 71.1 14.5 112 16.1V376c0-13.3 10.7-24 24-24s24 10.7 24 24V479.5c40.9-1.6 79-7.2 112-16.1V344c0-13.3 10.7-24 24-24s24 10.7 24 24V446.7c44.6-19.9 72-47.4 72-78.7V208c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM307.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5C458.4 181.8 464 197.4 464 208c0 .8-2.7 17.2-46 35.9C379.1 260.7 322 272 256 272s-123.1-11.3-162-28.1C50.7 225.2 48 208.8 48 208c0-10.6 5.6-26.2 44.4-41.3C130.6 151.9 187.8 144 256 144c18 0 35.1 .5 51.4 1.6z\"]\n};\nvar faScrubber = {\n prefix: 'fas',\n iconName: 'scrubber',\n icon: [512, 512, [], \"f2f8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-320a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [127848], \"f810\", \"M367.1 160c.6-5.3 .9-10.6 .9-16C368 64.5 303.5 0 224 0S80 64.5 80 144c0 5.4 .3 10.7 .9 16H80c-26.5 0-48 21.5-48 48s21.5 48 48 48h53.5 181H368c26.5 0 48-21.5 48-48s-21.5-48-48-48h-.9zM96 288L200.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L352 288H96z\"]\n};\nvar faHeartCircleBolt = {\n prefix: 'fas',\n iconName: 'heart-circle-bolt',\n icon: [576, 512, [], \"e4fc\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faFishBones = {\n prefix: 'fas',\n iconName: 'fish-bones',\n icon: [576, 512, [], \"e304\", \"M87.1 148.2c5.6 4.6 8.9 11.4 8.9 18.7V208h0v24h40V160c0-13.3 10.7-24 24-24s24 10.7 24 24v72h48V160c0-13.3 10.7-24 24-24s24 10.7 24 24v72h48V160c0-13.3 10.7-24 24-24s24 10.7 24 24v72h40V130.9c0-16.9 17.1-28.4 31.8-20c16 9.1 30.6 19.7 43.7 30.7c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8c-13.1 11-27.7 21.6-43.7 30.7c-14.7 8.4-31.8-3.1-31.8-20V280H376v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H280v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H184v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H96v24h0v41.1c0 7.2-3.3 14.1-8.9 18.7l-48 38.9c-8.8 7.1-21.3 7.1-30.1 .1s-11.5-19.2-6.6-29.3L54.9 266.6c3.3-6.7 3.3-14.5 0-21.2L2.5 138.6c-5-10.1-2.2-22.3 6.6-29.3s21.3-7 30.1 .1l48 38.9z\"]\n};\nvar faDeerRudolph = {\n prefix: 'fas',\n iconName: 'deer-rudolph',\n icon: [576, 512, [], \"f78f\", \"M256 16c0-8.8-7.2-16-16-16s-16 7.2-16 16V40c0 30.9 25.1 56 56 56h8 8 24l-50.4 12.6c-8 2-13.6 9.2-13.6 17.4c0 9.9 8 18 18 18h38l-9.6 32H196.3c-.8 0-1.7 0-2.5 0c-.6 0-1.2 0-1.7 0H128 113.9h-7.9C51.7 176 6.6 217.8 2.4 272L.1 302.2c-1 13.2 8.9 24.8 22.1 25.8c13 1 24.4-8.6 25.7-21.5c2.4 3.3 5.2 6.5 8.1 9.5c9 9 9 23.5 2.4 34.4c-17.4 28.6-21.5 63.9-10 96.3l15.5 44C68.4 503.4 80.5 512 94.1 512H128c22.1 0 37.5-21.8 30.2-42.6l-19.3-54.7c-2.2-6.2-.6-13 4-17.7l10.6-10.6c12.1-12.1 19.8-27.9 21.9-44.8c21 16.5 47.5 26.4 76.3 26.4H288V480c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V368 304l26.7-80H416h50.7c25 0 45.3-20.3 45.3-45.3c0-1.2 0-2.4-.1-3.6c2.6 .5 5.4 .8 8.1 .8c22.1 0 40-17.9 40-40s-17.9-40-40-40c-19.6 0-35.9 14.1-39.3 32.7L443.4 91.4c-.6-.6-1.1-1.1-1.7-1.6C459.7 80.4 472 61.7 472 40V16c0-8.8-7.2-16-16-16s-16 7.2-16 16V40c0 13.3-10.7 24-24 24H377.3 346.6c3.5-7.3 5.4-15.4 5.4-24V16c0-8.8-7.2-16-16-16s-16 7.2-16 16V40c0 13.3-10.7 24-24 24h-8-8c-13.3 0-24-10.7-24-24V16zM384 144a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [128224, 128439], \"f1ac\", \"M128 64v96h64V64H386.7L416 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L432 18.7C420 6.7 403.7 0 386.7 0H192c-35.3 0-64 28.7-64 64zM0 160V480c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zm480 32H128V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM256 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [182], \"f1dd\", \"M192 32h64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352H288V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H192c-88.4 0-160-71.6-160-160s71.6-160 160-160z\"]\n};\nvar faHeadSideHeart = {\n prefix: 'fas',\n iconName: 'head-side-heart',\n icon: [512, 512, [], \"e1aa\", \"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm112-35c0 16.2 6.5 31.8 17.9 43.3l82.7 82.7c6.2 6.2 16.4 6.2 22.6 0l82.7-82.7c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3c-16.2 0-31.8 6.5-43.3 17.9l-7.4 7.4-7.4-7.4c-11.5-11.5-27.1-17.9-43.3-17.9c-33.8 0-61.3 27.4-61.3 61.3z\"]\n};\nvar faSquareE = {\n prefix: 'fas',\n iconName: 'square-e',\n icon: [448, 512, [], \"e26d\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 96H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H176v56h88c13.3 0 24 10.7 24 24s-10.7 24-24 24H176v56H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24V256 152c0-13.3 10.7-24 24-24z\"]\n};\nvar faMeterFire = {\n prefix: 'fas',\n iconName: 'meter-fire',\n icon: [640, 512, [], \"e1eb\", \"M256 512c33.6 0 65.7-6.5 95.1-18.3c-39-35.9-63.1-87.5-63.1-143.7c0-35.2 16.3-73.6 37.2-107.4c4.4-7.1 9.1-14.2 14.1-21.3C327.9 216.5 320 205.2 320 192V160c0-17.7 14.3-32 32-32s32 14.3 32 32v7.4c9-9.4 18.5-18.6 28.5-27.5C430.2 124 457.3 124 475 140c5.6 5.1 11.1 10.2 16.6 15.5C452.5 64.1 361.7 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512zM192 160v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm96 0v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm165.5 3.6c-2.8-2.5-6.3-3.7-9.8-3.8c-3.6 0-7.2 1.2-10 3.7c-33.2 29.7-61.4 63.4-81.4 95.8C332.7 291.3 320 325.6 320 352c0 87.8 70.3 159.8 160 159.8c88.7 0 160-72 160-159.8c0-20.2-9.6-50.9-24.2-79c-14.8-28.5-35.7-58.5-60.4-81.1c-5.6-5.1-14.4-5.2-20 0c-9.6 8.8-18.6 19.6-26.5 29.5c-17.3-20.7-35.8-39.9-55.5-57.7zM530 432.9c-15 10-31 15-49 15c-45 0-81-29-81-78c0-24 15-45 45-82c4 5 62 79 62 79l36-42c3 4 5 8 7 12c18 33 10 75-20 96z\"]\n};\nvar faCloudHail = {\n prefix: 'fas',\n iconName: 'cloud-hail',\n icon: [512, 512, [], \"f739\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zm0 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm160-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 480a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm160-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCheckToSlot = {\n prefix: 'fas',\n iconName: 'check-to-slot',\n icon: [576, 512, [\"vote-yea\"], \"f772\", \"M96 80c0-26.5 21.5-48 48-48H432c26.5 0 48 21.5 48 48V384H96V80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48H64V416H512V288h16c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336z\"]\n};\nvar faVoteYea = faCheckToSlot;\nvar faMoneyFromBracket = {\n prefix: 'fas',\n iconName: 'money-from-bracket',\n icon: [640, 512, [], \"e312\", \"M64 96v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 43 43 0 96 0H544c53 0 96 43 96 96v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7-14.3-32-32-32H96C78.3 64 64 78.3 64 96zm64 0l384 0 0 352c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64l0-352zM256 448c0-35.3-28.7-64-64-64v64h64zm192-64c-35.3 0-64 28.7-64 64h64l0-64zM320 352c53 0 96-35.8 96-80s-43-80-96-80s-96 35.8-96 80s43 80 96 80z\"]\n};\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8V0zM429.9 512c1.1 .1 2.1 .1 3.2 0h-3.2z\"]\n};\nvar faCarBus = {\n prefix: 'fas',\n iconName: 'car-bus',\n icon: [640, 512, [], \"f85a\", \"M32 416H48v32c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V416h64V352c0-32.8 16.5-61.8 41.6-79.1L249.9 224H208V96h88c13.3 0 24 10.7 24 24v16.4c13.2-5.4 27.7-8.4 42.6-8.4H384V74.5c0-16.2-9.2-31-23.7-38.3C312.8 12.4 260.3 0 207.1 0H176.9C123.7 0 71.2 12.4 23.7 36.2C9.2 43.4 0 58.2 0 74.5V384c0 17.7 14.3 32 32 32zM88 96h88V224H88c-13.3 0-24-10.7-24-24V120c0-13.3 10.7-24 24-24zm8 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm266.6-72H501.4c6.9 0 13 4.4 15.2 10.9L534.3 288H329.7l17.7-53.1c2.2-6.5 8.3-10.9 15.2-10.9zm-75.9-9.3l-26.6 79.7C238.8 304.7 224 326.6 224 352v96h0v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448H560v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32l0-32V352c0-25.4-14.8-47.3-36.1-57.6l-26.6-79.7C566.4 182 535.8 160 501.4 160H362.6c-34.4 0-65 22-75.9 54.7zM304 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faSpeaker = {\n prefix: 'fas',\n iconName: 'speaker',\n icon: [384, 512, [], \"f8df\", \"M0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM304 336A112 112 0 1 0 80 336a112 112 0 1 0 224 0zM192 272a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm0-112a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faTimer = {\n prefix: 'fas',\n iconName: 'timer',\n icon: [512, 512, [], \"e29e\", \"M256 0c-17.7 0-32 14.3-32 32V96c0 17.7 14.3 32 32 32s32-14.3 32-32V66.7C378.8 81.9 448 160.9 448 256c0 106-86 192-192 192S64 362 64 256c0-53.7 22-102.3 57.6-137.1c12.6-12.4 12.8-32.6 .5-45.3S89.5 60.8 76.8 73.1C29.5 119.6 0 184.4 0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0zM193 159c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l80 80c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80z\"]\n};\nvar faBoxesStacked = {\n prefix: 'fas',\n iconName: 'boxes-stacked',\n icon: [576, 512, [62625, \"boxes\", \"boxes-alt\"], \"f468\", \"M248 0H208c-26.5 0-48 21.5-48 48V160c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V48c0-26.5-21.5-48-48-48H328V80c0 8.8-7.2 16-16 16H264c-8.8 0-16-7.2-16-16V0zM64 256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H184v80c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V256H64zM352 512H512c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H472v80c0 8.8-7.2 16-16 16H408c-8.8 0-16-7.2-16-16V256H352c-15 0-28.8 5.1-39.7 13.8c4.9 10.4 7.7 22 7.7 34.2V464c0 12.2-2.8 23.8-7.7 34.2C323.2 506.9 337 512 352 512z\"]\n};\nvar faBoxes = faBoxesStacked;\nvar faBoxesAlt = faBoxesStacked;\nvar faGrillHot = {\n prefix: 'fas',\n iconName: 'grill-hot',\n icon: [448, 512, [], \"e5a5\", \"M120 0c13.3 0 24 10.7 24 24v2.6c0 5.3 2.7 10.3 7.1 13.3l12.4 8.3C181.3 60 192 80 192 101.4V104c0 13.3-10.7 24-24 24s-24-10.7-24-24v-2.6c0-5.3-2.7-10.3-7.1-13.3l-12.4-8.3C106.7 68 96 48 96 26.6V24c0-13.3 10.7-24 24-24zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32c0 78.1-46.6 145.3-113.6 175.3l47.7 111.2c5.2 12.2-.4 26.3-12.6 31.5s-26.3-.4-31.5-12.6L327 472H155.3c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c3.4 0 6.8 .3 10.1 .8l7.5-17.5C46.6 337.3 0 270.1 0 192zM155.3 424H306.5l-18.3-42.7C277.7 383.1 267 384 256 384H192c-11 0-21.7-.9-32.2-2.7L147.5 410c3.2 4.3 5.8 9 7.8 14zM96 472a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM256 24v2.6c0 5.3 2.7 10.3 7.1 13.3l12.4 8.3C293.3 60 304 80 304 101.4V104c0 13.3-10.7 24-24 24s-24-10.7-24-24v-2.6c0-5.3-2.7-10.3-7.1-13.3l-12.4-8.3C218.7 68 208 48 208 26.6V24c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faBallotCheck = {\n prefix: 'fas',\n iconName: 'ballot-check',\n icon: [448, 512, [], \"f733\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm0 112c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112zm0 256c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V368zm144 0H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16s7.2-16 16-16zM192 128c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zm16 112H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-52.7-27.3c6.2 6.2 6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0l-24-24c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L96 249.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [640, 512, [128279, \"chain\"], \"f0c1\", \"M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z\"]\n};\nvar faChain = faLink;\nvar faEarListen = {\n prefix: 'fas',\n iconName: 'ear-listen',\n icon: [512, 512, [\"assistive-listening-systems\"], \"f2a2\", \"M398.3 3.4c-15.8-7.9-35-1.5-42.9 14.3c-7.9 15.8-1.5 34.9 14.2 42.9l.4 .2c.4 .2 1.1 .6 2.1 1.2c2 1.2 5 3 8.7 5.6c7.5 5.2 17.6 13.2 27.7 24.2C428.5 113.4 448 146 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7C441.6 33.2 427.7 22.2 417.3 15c-5.3-3.7-9.7-6.4-13-8.3c-1.6-1-3-1.7-4-2.2c-.5-.3-.9-.5-1.2-.7l-.4-.2-.2-.1-.1 0 0 0c0 0 0 0-14.3 28.6L398.3 3.4zM128.7 227.5c6.2-56 53.7-99.5 111.3-99.5c61.9 0 112 50.1 112 112c0 29.3-11.2 55.9-29.6 75.9c-17 18.4-34.4 45.1-34.4 78V400c0 26.5-21.5 48-48 48c-17.7 0-32 14.3-32 32s14.3 32 32 32c61.9 0 112-50.1 112-112v-6.1c0-9.8 5.4-21.7 17.4-34.7C398.3 327.9 416 286 416 240c0-97.2-78.8-176-176-176C149.4 64 74.8 132.5 65.1 220.5c-1.9 17.6 10.7 33.4 28.3 35.3s33.4-10.7 35.3-28.3zM32 512a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM192 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM208 240c0-17.7 14.3-32 32-32s32 14.3 32 32c0 13.3 10.7 24 24 24s24-10.7 24-24c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faAssistiveListeningSystems = faEarListen;\nvar faFileMinus = {\n prefix: 'fas',\n iconName: 'file-minus',\n icon: [384, 512, [], \"f318\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM120 304H264c13.3 0 24 10.7 24 24s-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faTreeCity = {\n prefix: 'fas',\n iconName: 'tree-city',\n icon: [640, 512, [], \"e587\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM224 160c0 6-1 11-2 16c20 14 34 38 34 64c0 45-36 80-80 80H160V480c0 18-15 32-32 32c-18 0-32-14-32-32V320H80c-45 0-80-35-80-80c0-26 13-50 33-64c-1-5-1-10-1-16c0-53 42-96 96-96c53 0 96 43 96 96z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [384, 512, [9654], \"f04b\", \"M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-1.8l18-48H303.8l18 48H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H390.2L254 52.8zM279.8 304H168.2L224 155.1 279.8 304z\"]\n};\nvar faCupTogo = {\n prefix: 'fas',\n iconName: 'cup-togo',\n icon: [448, 512, [\"coffee-togo\"], \"f6c5\", \"M55.2 17.7C60.6 6.8 71.7 0 83.8 0H364.2c12.1 0 23.2 6.8 28.6 17.7L416 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96S14.3 64 32 64L55.2 17.7zM74.7 453.8L48 160H400L373.3 453.8c-3 33-30.6 58.2-63.7 58.2H138.4c-33.1 0-60.7-25.2-63.7-58.2zM323.8 290.9c1.7-18.7-13.1-34.9-31.9-34.9H156c-18.8 0-33.6 16.2-31.9 34.9l8.7 96c1.5 16.5 15.3 29.1 31.9 29.1H283.2c16.6 0 30.4-12.6 31.9-29.1l8.7-96z\"]\n};\nvar faCoffeeTogo = faCupTogo;\nvar faSquareDownLeft = {\n prefix: 'fas',\n iconName: 'square-down-left',\n icon: [448, 512, [], \"e26b\", \"M64 480c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64zm64-281.4V336c0 8.8 7.2 16 16 16H281.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L264 280l66.3-66.3c3.6-3.6 5.7-8.5 5.7-13.7s-2-10-5.7-13.7l-36.7-36.7C290 146 285.1 144 280 144s-10 2-13.7 5.7L200 216l-33.4-33.4c-4.2-4.2-10-6.6-16-6.6c-12.5 0-22.6 10.1-22.6 22.6z\"]\n};\nvar faBurgerLettuce = {\n prefix: 'fas',\n iconName: 'burger-lettuce',\n icon: [512, 512, [], \"e3e3\", \"M32 194.9C32 211 45 224 61.1 224H450.9c16.1 0 29.1-13 29.1-29.1c0-1.9-.2-3.7-.6-5.6C474.1 168.3 433.2 32 256 32S37.9 168.3 32.6 189.3c-.5 1.9-.6 3.7-.6 5.6zM128 112a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm240 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM256 80a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM32 400v16c0 35.3 28.7 64 64 64H416c35.3 0 64-28.7 64-64V400c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16zm48-48c24.6 0 44.2-11.8 56.2-19c.9-.5 1.7-1 2.5-1.5c13.7-8.1 20.8-11.5 29.3-11.5c7.7 0 12.3 2.5 25.4 10.9l.2 .1c13 8.3 32.6 21 62.4 21c29.7 0 48.6-12.6 61-20.9l.8-.5c11.6-7.7 16.6-10.6 26.2-10.6c10.5 0 17.9 3.7 30.2 11.3c.9 .5 1.8 1.1 2.8 1.7c11.4 7.1 30.3 19 55 19c21.5 0 38.4-5.4 50.3-11.4c5.9-3 10.5-6 13.9-8.5c1.7-1.3 3.1-2.4 4.1-3.3c.5-.5 1-.9 1.4-1.2l.5-.5 .2-.2 .1-.1 0 0 0 0c0 0 0 0-22.6-22.6l22.6 22.6c12.5-12.5 12.5-32.8 0-45.3c-12.3-12.3-32-12.5-44.5-.7l-.3 .2c-.6 .5-2 1.4-4.1 2.5c-4.1 2-11.2 4.6-21.7 4.6c-5.2 0-9.2-2-24.2-11.3C394.1 268.3 373.5 256 344 256c-29.7 0-48.6 12.6-61 20.9l-.8 .5C270.6 285.1 265.7 288 256 288c-10 0-16.1-3.2-28-10.9l-1.8-1.1c-11.9-7.7-30.8-20-58.3-20c-27.7 0-48.4 12.3-61.6 20.2l-.5 .3C90.7 285.6 85.6 288 80 288c-10.5 0-17.6-2.6-21.7-4.6c-2.1-1-3.5-2-4.1-2.5l-.3-.2c-12.5-11.8-32.3-11.6-44.5 .7c-12.5 12.5-12.5 32.8 0 45.3l22.4-22.4C9.4 326.6 9.4 326.6 9.4 326.6l0 0 0 0 .1 .1 .2 .2 .5 .5c.4 .4 .8 .8 1.4 1.2c1.1 .9 2.4 2.1 4.1 3.3c3.4 2.5 8 5.6 13.9 8.5C41.6 346.6 58.5 352 80 352z\"]\n};\nvar faRupiahSign = {\n prefix: 'fas',\n iconName: 'rupiah-sign',\n icon: [512, 512, [], \"e23d\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256-96h80c61.9 0 112 50.1 112 112s-50.1 112-112 112H352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 192c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48H352v96h48z\"]\n};\nvar faMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'magnifying-glass',\n icon: [512, 512, [128269, \"search\"], \"f002\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"]\n};\nvar faSearch = faMagnifyingGlass;\nvar faTableTennisPaddleBall = {\n prefix: 'fas',\n iconName: 'table-tennis-paddle-ball',\n icon: [640, 512, [127955, \"ping-pong-paddle-ball\", \"table-tennis\"], \"f45d\", \"M480 288c-50.1 0-93.6 28.8-114.6 70.8L132.9 126.3l.6-.6 60.1-60.1c87.5-87.5 229.3-87.5 316.8 0c67.1 67.1 82.7 166.3 46.8 248.3C535.8 297.6 509 288 480 288zM113.3 151.9L354.1 392.7c-1.4 7.5-2.1 15.3-2.1 23.3c0 23.2 6.2 44.9 16.9 63.7c-3 .2-6.1 .3-9.2 .3H357c-33.9 0-66.5-13.5-90.5-37.5l-9.8-9.8c-13.1-13.1-34.6-12.4-46.8 1.7L152.2 501c-5.8 6.7-14.2 10.7-23 11s-17.5-3.1-23.8-9.4l-32-32c-6.3-6.3-9.7-14.9-9.4-23.8s4.3-17.2 11-23l66.6-57.7c14-12.2 14.8-33.7 1.7-46.8l-9.8-9.8c-24-24-37.5-56.6-37.5-90.5v-2.7c0-22.8 6.1-44.9 17.3-64.3zM480 320a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faPingPongPaddleBall = faTableTennisPaddleBall;\nvar faTableTennis = faTableTennisPaddleBall;\nvar faPersonDotsFromLine = {\n prefix: 'fas',\n iconName: 'person-dots-from-line',\n icon: [576, 512, [\"diagnoses\"], \"f470\", \"M288 176A88 88 0 1 0 288 0a88 88 0 1 0 0 176zM78.7 372.9c15-12.5 50-34.4 97.3-50.1V432H400V322.7c47.3 15.8 82.3 37.7 97.3 50.1c20.4 17 50.6 14.2 67.6-6.1s14.2-50.6-6.1-67.6c-12-10-30.1-22.5-53.2-35C497.2 278.4 481.7 288 464 288c-26.5 0-48-21.5-48-48c0-4.3 .6-8.4 1.6-12.4C379.1 215.9 335.3 208 288 208c-60.2 0-114.9 12.9-160 29.9c0 .7 0 1.4 0 2.1c0 26.5-21.5 48-48 48c-11.8 0-22.7-4.3-31-11.4c-13.1 8.1-23.7 15.9-31.7 22.5c-20.4 17-23.1 47.2-6.1 67.6s47.2 23.1 67.6 6.1zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM224 280a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM96 240a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm368 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faDiagnoses = faPersonDotsFromLine;\nvar faChevronsDown = {\n prefix: 'fas',\n iconName: 'chevrons-down',\n icon: [512, 512, [\"chevron-double-down\"], \"f322\", \"M278.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-192-192c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L256 402.7 425.4 233.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-192 192zm192-384l-192 192c-12.5 12.5-32.8 12.5-45.3 0l-192-192c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L256 210.7 425.4 41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nvar faChevronDoubleDown = faChevronsDown;\nvar faTrashCanArrowUp = {\n prefix: 'fas',\n iconName: 'trash-can-arrow-up',\n icon: [448, 512, [\"trash-restore-alt\"], \"f82a\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestoreAlt = faTrashCanArrowUp;\nvar faSignalGood = {\n prefix: 'fas',\n iconName: 'signal-good',\n icon: [640, 512, [\"signal-3\"], \"f68e\", \"M320 192c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32zM192 288c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32zM96 416v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faSignal3 = faSignalGood;\nvar faLocationQuestion = {\n prefix: 'fas',\n iconName: 'location-question',\n icon: [384, 512, [\"map-marker-question\"], \"f60b\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM105.8 133.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 232.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V218.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H158.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 320a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faMapMarkerQuestion = faLocationQuestion;\nvar faFloppyDiskCircleXmark = {\n prefix: 'fas',\n iconName: 'floppy-disk-circle-xmark',\n icon: [576, 512, [\"floppy-disk-times\", \"save-circle-xmark\", \"save-times\"], \"e181\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H296.2c-17.6-21.4-30.3-46.9-36.3-75c-10.2 6.9-22.6 11-35.9 11c-35.3 0-64-28.7-64-64s28.7-64 64-64c16.8 0 32.1 6.5 43.6 17.1C292.9 239 357 192 432 192c5.4 0 10.7 .2 16 .7V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faFloppyDiskTimes = faFloppyDiskCircleXmark;\nvar faSaveCircleXmark = faFloppyDiskCircleXmark;\nvar faSaveTimes = faFloppyDiskCircleXmark;\nvar faNairaSign = {\n prefix: 'fas',\n iconName: 'naira-sign',\n icon: [448, 512, [], \"e1f6\", \"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H228.2l97.2 145.8c7.8 11.7 22.4 17 35.9 12.9s22.7-16.5 22.7-30.6V320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V256H262.5L122.6 46.3zM305.1 320H320v22.3L305.1 320zM185.5 256H128V169.7L185.5 256z\"]\n};\nvar faPeach = {\n prefix: 'fas',\n iconName: 'peach',\n icon: [512, 512, [], \"e20b\", \"M344 80c-31.5 0-61.4 7.3-88 20.4C229.4 87.3 199.5 80 168 80c-11.4 0-22.6 1-33.5 2.8C120.5 67.2 112 46.6 112 24c0-13.3 10.7-24 24-24h24c53 0 96 43 96 96c0-53 43-96 96-96h24c13.3 0 24 10.7 24 24c0 22.6-8.5 43.2-22.5 58.8C366.6 81 355.4 80 344 80zM168 112c17.8 0 34.9 2.8 50.9 7.9c63 20 109.9 76.2 116.3 144.2c.8 8.8 7.9 16 16.8 16s16.1-7.2 15.4-16c-4.6-58.2-34.2-109.5-78-143c.8-.2 1.5-.5 2.3-.7c16.5-5.4 34-8.3 52.3-8.3c92.8 0 168 75.2 168 168c0 136.2-199.3 214.6-240.6 229.4c-5 1.8-10.1 2.6-15.4 2.6s-10.4-.8-15.4-2.6C199.3 494.6 0 416.2 0 280c0-92.8 75.2-168 168-168z\"]\n};\nvar faTaxiBus = {\n prefix: 'fas',\n iconName: 'taxi-bus',\n icon: [640, 512, [], \"e298\", \"M48 416H32c-17.7 0-32-14.3-32-32V74.5c0-16.2 9.2-31 23.7-38.3C71.2 12.4 123.7 0 176.9 0h30.3c53.2 0 105.6 12.4 153.2 36.2C374.8 43.4 384 58.2 384 74.5V96c-21.9 0-40.4 14.7-46.2 34.8c-6.1 1.4-12.1 3.3-17.8 5.6V120c0-13.3-10.7-24-24-24H208V224h41.9l-16.3 48.9C208.5 290.2 192 319.2 192 352v64H128v32c0 17.7-14.3 32-32 32H80c-17.7 0-32-14.3-32-32V416zM64 120v80c0 13.3 10.7 24 24 24h88V96H88c-13.3 0-24 10.7-24 24zm56 200a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM368 152c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24v8h5.4c34.4 0 65 22 75.9 54.7l26.6 79.7C625.2 304.7 640 326.6 640 352l0 96v32c0 17.7-14.3 32-32 32H592c-17.7 0-32-14.3-32-32V448H304v32c0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32V448h0V352c0-25.4 14.8-47.3 36.1-57.6l26.6-79.7C297.6 182 328.2 160 362.6 160H368v-8zm-20.6 82.9L329.7 288H534.3l-17.7-53.1c-2.2-6.5-8.3-10.9-15.2-10.9H362.6c-6.9 0-13 4.4-15.2 10.9zM328 368a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm232 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faBracketCurly = {\n prefix: 'fas',\n iconName: 'bracket-curly',\n icon: [256, 512, [\"bracket-curly-left\"], \"7b\", \"M64 128c0-53 43-96 96-96h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32 14.3-32 32v37.5c0 25.5-10.1 49.9-28.1 67.9L77.3 256l22.6 22.6c18 18 28.1 42.4 28.1 67.9V384c0 17.7 14.3 32 32 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-53 0-96-43-96-96V346.5c0-8.5-3.4-16.6-9.4-22.6L9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l45.3-45.3c6-6 9.4-14.1 9.4-22.6V128z\"]\n};\nvar faBracketCurlyLeft = faBracketCurly;\nvar faLobster = {\n prefix: 'fas',\n iconName: 'lobster',\n icon: [512, 512, [129438], \"e421\", \"M80 8.2c0-3.7-2.5-6.9-6.1-7.5C70.7 .3 67.4 0 64 0C28.7 0 0 28.7 0 64v64c0 35.3 28.7 64 64 64l.7 0 41.8 27.9C126.2 233 149.4 240 173.1 240H192v16H143.1c-7.5 0-14.8-1.7-21.5-5.1L87.2 233.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l34.5 17.2c11.1 5.6 23.4 8.4 35.8 8.4H192v16H122.4c-5.2 0-10.3-.8-15.2-2.5L69.1 288.8c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l38.1 12.7c8.2 2.7 16.7 4.1 25.3 4.1H192v16H175.1c-12.4 0-24.7 2.9-35.8 8.4l-18.5 9.2c-7.9 4-11.1 13.6-7.2 21.5s13.6 11.1 21.5 7.2l18.5-9.2c6.7-3.3 14-5.1 21.5-5.1H192l21.4 64.1c-29.8 1.8-53.4 26.5-53.4 56.8c0 3.9 3.2 7.1 7.1 7.1H344.9c3.9 0 7.1-3.2 7.1-7.1c0-30.2-23.6-55-53.4-56.8L320 384h16.9c7.4 0 14.8 1.7 21.5 5.1l18.5 9.2c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-18.5-9.2c-11.1-5.6-23.4-8.4-35.8-8.4H320V336h69.6c8.6 0 17.1-1.4 25.3-4.1l38.1-12.7c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-38.1 12.7c-4.9 1.6-10 2.5-15.2 2.5H320V288h48.9c12.4 0 24.7-2.9 35.8-8.4l34.5-17.2c7.9-4 11.1-13.6 7.2-21.5s-13.6-11.1-21.5-7.2l-34.5 17.2c-6.7 3.3-14 5.1-21.5 5.1H320V240h18.9c23.7 0 46.9-7 66.6-20.2L447.3 192l.7 0c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64c-3.4 0-6.7 .3-9.9 .8c-3.6 .6-6.1 3.8-6.1 7.5V72c0 7.7-9.8 11-14.4 4.8L397.4 49.9c-3.7-4.9-11.2-3.9-12.3 2.1c-.7 3.9-1.1 7.9-1.1 11.9v64c0 14.9 5.1 28.6 13.6 39.4l-18.7 12.5C367 187.8 353.1 192 338.9 192H314.2c-2.7-7.3-6.2-14-10.2-20.2V80.7c0-15.6 11.3-29 26.7-31.6l7.9-1.3c8.7-1.5 14.6-9.7 13.2-18.4s-9.7-14.6-18.4-13.2l-7.9 1.3C294.6 22.7 272 49.4 272 80.7V138c-3.1-2.3-6.2-4.4-9-6.1c-4.3-2.6-9.7-2.6-13.9 0c-2.8 1.7-5.9 3.8-9 6.1V80.7c0-31.3-22.6-58-53.5-63.1l-7.9-1.3c-8.7-1.5-17 4.4-18.4 13.2s4.4 17 13.2 18.4l7.9 1.3C196.7 51.7 208 65 208 80.7v91.1c-4 6.2-7.5 13-10.2 20.2H173.1c-14.2 0-28.1-4.2-39.9-12.1l-18.7-12.5c8.5-10.9 13.6-24.6 13.6-39.4V64c0-4.1-.4-8.1-1.1-11.9c-1.1-6-8.6-7.1-12.3-2.1L94.4 76.8C89.8 83 80 79.7 80 72V8.2z\"]\n};\nvar faCartFlatbedEmpty = {\n prefix: 'fas',\n iconName: 'cart-flatbed-empty',\n icon: [640, 512, [\"dolly-flatbed-empty\"], \"f476\", \"M0 32C0 14.3 14.3 0 32 0H48c44.2 0 80 35.8 80 80V368c0 8.8 7.2 16 16 16H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H541.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H253.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H144c-44.2 0-80-35.8-80-80V80c0-8.8-7.2-16-16-16H32C14.3 64 0 49.7 0 32z\"]\n};\nvar faDollyFlatbedEmpty = faCartFlatbedEmpty;\nvar faColon = {\n prefix: 'fas',\n iconName: 'colon',\n icon: [192, 512, [], \"3a\", \"M96 192A64 64 0 1 0 96 64a64 64 0 1 0 0 128zm0 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H69.5c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H199.7c-11.5 0-21.4-8.2-23.6-19.5L170.7 288H459.2c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32H360V134.1l23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23V32H120.1C111 12.8 91.6 0 69.5 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faWand = {\n prefix: 'fas',\n iconName: 'wand',\n icon: [512, 512, [], \"f72a\", \"M497 7c-9-9-23.5-9.4-33-.9L189.3 251.9c-2.9 2.6-6.7 4.1-10.7 4.1H144c-8.8 0-16 7.2-16 16v27.6c0 4.6-1.9 8.9-5.3 11.9L11.1 411.3C4 417.7 0 426.7 0 436.2c0 8.8 3.5 17.3 9.7 23.5l42.6 42.6c6.2 6.2 14.7 9.8 23.5 9.8c9.5 0 18.5-4 24.8-11.1L372.3 197.3c3-3.4 7.4-5.3 11.9-5.3H400c8.8 0 16-7.2 16-16V154.6c0-3.9 1.5-7.7 4.1-10.7L505.9 48c8.5-9.5 8.1-24-.9-33l-8-8z\"]\n};\nvar faWalkieTalkie = {\n prefix: 'fas',\n iconName: 'walkie-talkie',\n icon: [384, 512, [], \"f8ef\", \"M112 24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144V300.1c0 12.7 5.1 24.9 14.1 33.9l3.9 3.9c9 9 14.1 21.2 14.1 33.9V464c0 26.5 21.5 48 48 48H304c26.5 0 48-21.5 48-48V371.9c0-12.7 5.1-24.9 14.1-33.9l3.9-3.9c9-9 14.1-21.2 14.1-33.9V144c0-26.5-21.5-48-48-48H320c0-17.7-14.3-32-32-32s-32 14.3-32 32H224c0-17.7-14.3-32-32-32s-32 14.3-32 32H112V24zm0 136H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFilePen = {\n prefix: 'fas',\n iconName: 'file-pen',\n icon: [576, 512, [128221, \"file-edit\"], \"f31c\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V285.7l-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faFileEdit = faFilePen;\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [129534], \"f543\", \"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.3-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6s14 12.4 14 21.8V488c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6L304 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L192 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488V24C0 14.6 5.5 6.1 14 2.2zM96 144c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96zM80 352c0 8.8 7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zM96 240c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96z\"]\n};\nvar faTablePicnic = {\n prefix: 'fas',\n iconName: 'table-picnic',\n icon: [512, 512, [], \"e32d\", \"M319.3 64H192.7c-.5 0-1 0-1.5 0H96C78.3 64 64 78.3 64 96s14.3 32 32 32h48.7l-38.4 96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H80.7h68.9H362.3h68.9H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H405.7l-38.4-96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320.7c-.5 0-1 0-1.5 0zM444.1 320H375.1l43.2 107.9c6.6 16.4 25.2 24.4 41.6 17.8s24.4-25.2 17.8-41.6L444.1 320zm-307.2 0H67.9L34.3 404.1c-6.6 16.4 1.4 35 17.8 41.6s35-1.4 41.6-17.8L136.9 320zm38.4-96l38.4-96h84.7l38.4 96H175.3z\"]\n};\nvar faSquarePen = {\n prefix: 'fas',\n iconName: 'square-pen',\n icon: [448, 512, [\"pen-square\", \"pencil-square\"], \"f14b\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faPenSquare = faSquarePen;\nvar faPencilSquare = faSquarePen;\nvar faCircleMicrophoneLines = {\n prefix: 'fas',\n iconName: 'circle-microphone-lines',\n icon: [512, 512, [\"microphone-circle-alt\"], \"e117\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM256 96c-26.5 0-48 21.5-48 48V256c0 26.5 21.5 48 48 48s48-21.5 48-48V240H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h32V176H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h32c0-26.5-21.5-48-48-48zM160 240c0-8.8-7.2-16-16-16s-16 7.2-16 16v16c0 65.3 48.9 119.1 112 127v17c0 8.8 7.2 16 16 16s16-7.2 16-16V383c63.1-7.9 112-61.7 112-127V240c0-8.8-7.2-16-16-16s-16 7.2-16 16v16c0 53-43 96-96 96s-96-43-96-96V240z\"]\n};\nvar faMicrophoneCircleAlt = faCircleMicrophoneLines;\nvar faDisplaySlash = {\n prefix: 'fas',\n iconName: 'display-slash',\n icon: [640, 512, [\"desktop-slash\"], \"e2fa\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-70.5-55.2c27.4-7.2 47.6-32.2 47.6-61.9V64c0-35.3-28.7-64-64-64H96C79.6 0 64.6 6.2 53.2 16.4L38.8 5.1zM113.9 64H544V352H481.4L113.9 64zM32 352c0 35.3 28.7 64 64 64H272l-10.7 32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H448c17.7 0 32-14.3 32-32c0-2.1-.2-4.1-.6-6.1L446.6 448H378.7L368 416h38l-81.2-64H96V171.8L32 121.4V352z\"]\n};\nvar faDesktopSlash = faDisplaySlash;\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M144 56c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v72H144V56zm176 72H288V56c0-30.9-25.1-56-56-56H152C121.1 0 96 25.1 96 56v72H64c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32H256c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64zM112 224H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPersonCircleExclamation = {\n prefix: 'fas',\n iconName: 'person-circle-exclamation',\n icon: [576, 512, [], \"e53f\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faTransporter2 = {\n prefix: 'fas',\n iconName: 'transporter-2',\n icon: [512, 512, [], \"e044\", \"M56.7 6.6C55.6 2.7 52.1 0 48 0s-7.6 2.7-8.7 6.6L32 32 6.6 39.3C2.7 40.4 0 43.9 0 48s2.7 7.6 6.6 8.7L32 64l7.3 25.4C40.4 93.3 43.9 96 48 96s7.6-2.7 8.7-6.6L64 64l25.4-7.3C93.3 55.6 96 52.1 96 48s-2.7-7.6-6.6-8.7L64 32 56.7 6.6zM256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM128 512h88 80 88c17.7 0 32-14.3 32-32s-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32zM399.4 224l-48.1-60c-18.2-22.7-45.8-36-74.9-36H235.7c-29.1 0-56.7 13.2-74.9 36l-48.1 60H399.4zM480 352l-7.3-25.4c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L448 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L448 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L480 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L480 352zM112 256c-8.8 0-16 7.2-16 16s7.2 16 16 16H400c8.8 0 16-7.2 16-16s-7.2-16-16-16H112zm64 64c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176zm0 64c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176z\"]\n};\nvar faHandsHoldingDiamond = {\n prefix: 'fas',\n iconName: 'hands-holding-diamond',\n icon: [640, 512, [\"hand-receiving\"], \"f47c\", \"M297.4 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0zM80 104c0-22.1-17.9-40-40-40S0 81.9 0 104v56 64V325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7H240c26.5 0 48-21.5 48-48V385.1c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3 0 0-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3V224 144 104zm480 0v40 80 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2 0 0-25.3 25.3c-21 21-32.8 49.5-32.8 79.2V464c0 26.5 21.5 48 48 48h66.7c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9V224 160 104c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nvar faHandReceiving = faHandsHoldingDiamond;\nvar faMoneyBillSimpleWave = {\n prefix: 'fas',\n iconName: 'money-bill-simple-wave',\n icon: [576, 512, [], \"e1f2\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [512, 512, [], \"f078\", \"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [576, 512, [128267, \"battery\", \"battery-5\"], \"f240\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm368 96H96V320H448V192z\"]\n};\nvar faBattery = faBatteryFull;\nvar faBattery5 = faBatteryFull;\nvar faBellPlus = {\n prefix: 'fas',\n iconName: 'bell-plus',\n icon: [448, 512, [], \"f849\", \"M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7zM224 152c13.3 0 24 10.7 24 24v40h40c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V264H160c-13.3 0-24-10.7-24-24s10.7-24 24-24h40V176c0-13.3 10.7-24 24-24z\"]\n};\nvar faBookArrowRight = {\n prefix: 'fas',\n iconName: 'book-arrow-right',\n icon: [640, 512, [], \"e0b9\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V232H558.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H448V32c0-17.7-14.3-32-32-32H384 96zM448 184v48H248c-13.3 0-24-10.7-24-24s10.7-24 24-24H448zM96 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faHospitals = {\n prefix: 'fas',\n iconName: 'hospitals',\n icon: [576, 512, [], \"f80e\", \"M304 0c-26.5 0-48 21.5-48 48V64c35.3 0 64 28.7 64 64V480c0 11.7-3.1 22.6-8.6 32H528c26.5 0 48-21.5 48-48V384H464c-8.8 0-16-7.2-16-16s7.2-16 16-16H576V288H464c-8.8 0-16-7.2-16-16s7.2-16 16-16H576V48c0-26.5-21.5-48-48-48H304zM408 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v24h24c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H456v24c0 8.8-7.2 16-16 16H424c-8.8 0-16-7.2-16-16V168H384c-8.8 0-16-7.2-16-16V136c0-8.8 7.2-16 16-16h24V96zM0 144V384H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v48c0 26.5 21.5 48 48 48H240c26.5 0 48-21.5 48-48V144c0-26.5-21.5-48-48-48H48C21.5 96 0 117.5 0 144zm120 48c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v24h24c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H168v24c0 8.8-7.2 16-16 16H136c-8.8 0-16-7.2-16-16V264H96c-8.8 0-16-7.2-16-16V232c0-8.8 7.2-16 16-16h24V192z\"]\n};\nvar faClub = {\n prefix: 'fas',\n iconName: 'club',\n icon: [512, 512, [9827], \"f327\", \"M380 160.1c2.6-10.2 4-21 4-32.1C384 57.3 326.7 0 256 0S128 57.3 128 128c0 11.1 1.4 21.8 4 32.1c-1.3 0-2.7-.1-4-.1C57.3 160 0 217.3 0 288s57.3 128 128 128c38.2 0 72.5-16.8 96-43.3V448H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V372.7c23.5 26.6 57.8 43.3 96 43.3c70.7 0 128-57.3 128-128s-57.3-128-128-128c-1.4 0-2.7 0-4 .1z\"]\n};\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [128369, 9760], \"f714\", \"M368 128c0 44.4-25.4 83.5-64 106.4V256c0 17.7-14.3 32-32 32H176c-17.7 0-32-14.3-32-32V234.4c-38.6-23-64-62.1-64-106.4C80 57.3 144.5 0 224 0s144 57.3 144 128zM168 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM3.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L224 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L295.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L224 419.8 46.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L152.4 384 17.7 316.6C1.9 308.7-4.5 289.5 3.4 273.7z\"]\n};\nvar faDropletDegree = {\n prefix: 'fas',\n iconName: 'droplet-degree',\n icon: [512, 512, [\"dewpoint\"], \"f748\", \"M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0h1.8c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM464 112a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-112 0a80 80 0 1 1 160 0 80 80 0 1 1 -160 0z\"]\n};\nvar faDewpoint = faDropletDegree;\nvar faCodeCompare = {\n prefix: 'fas',\n iconName: 'code-compare',\n icon: [512, 512, [], \"e13a\", \"M320 488c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1s14.2 12.4 14.2 21.9v40h16c35.3 0 64-28.7 64-64V153.3C371.7 141 352 112.8 352 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V320c0 70.7-57.3 128-128 128H320v40zM456 80a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 24c0-9.5 5.6-18.1 14.2-21.9s18.8-2.3 25.8 4.1l80 72c5.1 4.6 7.9 11 7.9 17.8s-2.9 13.3-7.9 17.8l-80 72c-7 6.3-17.2 7.9-25.8 4.1s-14.2-12.4-14.2-21.9V128H176c-35.3 0-64 28.7-64 64V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-70.7 57.3-128 128-128h16V24zM56 432a24 24 0 1 0 48 0 24 24 0 1 0 -48 0z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [\"list-dots\"], \"f0ca\", \"M64 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM64 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48-208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faListDots = faListUl;\nvar faHandHoldingMagic = {\n prefix: 'fas',\n iconName: 'hand-holding-magic',\n icon: [576, 512, [], \"f6e5\", \"M192 80c0 8.8 7.2 16 16 16h80c17.7 0 32 14.3 32 32s-14.3 32-32 32H208c-44.2 0-80-35.8-80-80s35.8-80 80-80H320c70.7 0 128 57.3 128 128s-57.3 128-128 128H288c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32h64c35.3 0 64-28.7 64-64s-28.7-64-64-64H208c-8.8 0-16 7.2-16 16zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faWatermelonSlice = {\n prefix: 'fas',\n iconName: 'watermelon-slice',\n icon: [512, 512, [], \"e337\", \"M41 391c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c115.6 115.6 302.6 116 418.3 .3S540.5 122.6 425 7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c96.9 96.9 97.1 253.6 .3 350.4S137.9 487.9 41 391zm22.3-22.3c84.4 84.4 221.1 84.4 305.5 0c84.2-84.2 84.4-220.7 .3-305.1l-4.3-4.3c-6.2-6.2-16.4-6.2-22.6 0L59.3 342.2c-6.2 6.2-6.2 16.4 0 22.6l4 4zm245.4-220c6.2-6.2 16.4-6.2 22.6 0l16 16c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-16-16c-6.2-6.2-6.2-16.4 0-22.6zm-80 80c6.2-6.2 16.4-6.2 22.6 0l16 16c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-16-16c-6.2-6.2-6.2-16.4 0-22.6zm88 8c6.2-6.2 16.4-6.2 22.6 0l16 16c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-16-16c-6.2-6.2-6.2-16.4 0-22.6zm-168 72c6.2-6.2 16.4-6.2 22.6 0l16 16c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-16-16c-6.2-6.2-6.2-16.4 0-22.6zm88 8c6.2-6.2 16.4-6.2 22.6 0l16 16c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-16-16c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faCircleEllipsis = {\n prefix: 'fas',\n iconName: 'circle-ellipsis',\n icon: [512, 512, [], \"e10a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSchoolLock = {\n prefix: 'fas',\n iconName: 'school-lock',\n icon: [640, 512, [], \"e56f\", \"M302.2 5.4c10.7-7.2 24.8-7.2 35.5 0L473.7 96H592c26.5 0 48 21.5 48 48V272c0-61.9-50.1-112-112-112s-112 50.1-112 112v24.6c-19.1 11.1-32 31.7-32 55.4H320.3l-.3 0c-35.3 0-64 28.7-64 64v96h64v0H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48H166.3L302.2 5.4zM80 208v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm0 128v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm240-72a88 88 0 1 0 0-176 88 88 0 1 0 0 176zm16-120v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 96c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTowerCell = {\n prefix: 'fas',\n iconName: 'tower-cell',\n icon: [576, 512, [], \"e585\", \"M62.6 2.3C46.2-4.3 27.6 3.6 20.9 20C7.4 53.4 0 89.9 0 128s7.4 74.6 20.9 108c6.6 16.4 25.3 24.3 41.7 17.7S86.9 228.4 80.3 212C69.8 186.1 64 157.8 64 128s5.8-58.1 16.3-84C86.9 27.6 79 9 62.6 2.3zm450.8 0C497 9 489.1 27.6 495.7 44C506.2 69.9 512 98.2 512 128s-5.8 58.1-16.3 84c-6.6 16.4 1.3 35 17.7 41.7s35-1.3 41.7-17.7c13.5-33.4 20.9-69.9 20.9-108s-7.4-74.6-20.9-108C548.4 3.6 529.8-4.3 513.4 2.3zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9L177.7 448H398.3l20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM369.2 384H206.8l14.5-32H354.7l14.5 32zM288 205.3L325.6 288H250.4L288 205.3zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"]\n};\nvar faSdCards = {\n prefix: 'fas',\n iconName: 'sd-cards',\n icon: [448, 512, [], \"e240\", \"M384 0H237.3C220.3 0 204 6.7 192 18.7L114.7 96c-12 12-18.7 28.3-18.7 45.3V352c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM280 64c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24zm80 0c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V376c0 75.1 60.9 136 136 136H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faJugBottle = {\n prefix: 'fas',\n iconName: 'jug-bottle',\n icon: [640, 512, [], \"e5fb\", \"M120 0C106.7 0 96 10.7 96 24V48H88C74.7 48 64 58.7 64 72s10.7 24 24 24H232c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V24c0-13.3-10.7-24-24-24H120zm8 128C57.3 128 0 185.3 0 256V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V256c0-70.7-57.3-128-128-128H128zm160 96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zM472 64c-13.3 0-24 10.7-24 24v40H576V88c0-13.3-10.7-24-24-24H472zM416.4 392.4c-.1 .1-.2 .1-.4 .2V448c0 16.9-4.3 32.7-12 46.5c11.5 10.9 27 17.5 44 17.5H576c35.3 0 64-28.7 64-64c0-24.1-13.3-45.1-33-56c19.7-10.9 33-31.9 33-56c0-23.5-12.6-44-31.5-55.1c18.7-10.1 31.5-29.9 31.5-52.7c0-23.2-13.4-44.3-34.4-54.2l-13.2-6.2c-11-5.1-23-7.8-35.1-7.8H466.7c-12.1 0-24.1 2.7-35.1 7.8L418.4 174c-6.9 3.2-13 7.7-18 13c10 20.9 15.6 44.3 15.6 69V391.4c.3 .2 .7 .4 1 .6c-.2 .1-.4 .2-.6 .4z\"]\n};\nvar faDownLong = {\n prefix: 'fas',\n iconName: 'down-long',\n icon: [320, 512, [\"long-arrow-alt-down\"], \"f309\", \"M2 334.5c-3.8 8.8-2 19 4.6 26l136 144c4.5 4.8 10.8 7.5 17.4 7.5s12.9-2.7 17.4-7.5l136-144c6.6-7 8.4-17.2 4.6-26s-12.5-14.5-22-14.5l-72 0 0-288c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32l0 288-72 0c-9.6 0-18.2 5.7-22 14.5z\"]\n};\nvar faLongArrowAltDown = faDownLong;\nvar faEnvelopes = {\n prefix: 'fas',\n iconName: 'envelopes',\n icon: [576, 512, [], \"e170\", \"M316.7 249.6c5.6 4.1 12.4 6.4 19.3 6.4s13.7-2.2 19.3-6.4l220-163C570.8 55.7 544.2 32 512 32H160c-32.2 0-58.8 23.7-63.3 54.7l220 163zm57.7 25.7C363.3 283.6 349.8 288 336 288s-27.3-4.4-38.4-12.7L96 126V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V126L374.4 275.3zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faPhoneOffice = {\n prefix: 'fas',\n iconName: 'phone-office',\n icon: [576, 512, [], \"f67d\", \"M128 0C110.3 0 96 14.3 96 32V384c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H128zM64 32C28.7 32 0 60.7 0 96V448c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H256V384c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V32zm256 96c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V128zm32 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm160-32a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM480 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-96-32a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nvar faRankingStar = {\n prefix: 'fas',\n iconName: 'ranking-star',\n icon: [640, 512, [], \"e561\", \"M353.8 54.1L330.2 6.3c-3.9-8.3-16.1-8.6-20.4 0L286.2 54.1l-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V288c0-17.7-14.3-32-32-32H256zM32 320c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H160c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zm416 96v64c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V416c0-17.7-14.3-32-32-32H480c-17.7 0-32 14.3-32 32z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M224 0c17.7 0 32 14.3 32 32V48h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H256v48H408c22.1 0 40 17.9 40 40c0 5.3-1 10.5-3.1 15.4L368 400H80L3.1 215.4C1 210.5 0 205.3 0 200c0-22.1 17.9-40 40-40H192V112H176c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V32c0-17.7 14.3-32 32-32zM38.6 473.4L80 432H368l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H54.6C42.1 512 32 501.9 32 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nvar faNfcPen = {\n prefix: 'fas',\n iconName: 'nfc-pen',\n icon: [576, 512, [], \"e1fa\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V235.6l-64 64V144c0-26.5-21.5-48-48-48H256c-26.5 0-48 21.5-48 48v66.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V144c0-8.8 7.2-16 16-16h80c8.8 0 16 7.2 16 16V331.6L299.6 384H112c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112c-26.5 0-48 21.5-48 48V368c0 26.5 21.5 48 48 48H275.1c-1 2.6-1.9 5.3-2.6 8.1l-14 55.9H64c-35.3 0-64-28.7-64-64V96zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faPersonHarassing = {\n prefix: 'fas',\n iconName: 'person-harassing',\n icon: [576, 512, [], \"e549\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM59.4 304.5L88 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H145.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM464 344v58.7l-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L408.8 438l54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3c36.4 0 65.9-29.5 65.9-65.9V344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16h56c8.8 0 16-7.2 16-16s-7.2-16-16-16H304c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"]\n};\nvar faHatWinter = {\n prefix: 'fas',\n iconName: 'hat-winter',\n icon: [512, 512, [], \"f7a8\", \"M279.9 22.2C279 9.8 268.7 0 256 0s-23 9.8-23.9 22.2c-9.4-8.1-23.7-7.7-32.6 1.2s-9.4 23.2-1.2 32.6C185.8 57 176 67.3 176 80s9.8 23 22.2 23.9c-8.1 9.4-7.7 23.7 1.2 32.6s23.2 9.4 32.6 1.2C233 150.2 243.3 160 256 160s23-9.8 23.9-22.2c9.4 8.1 23.7 7.7 32.6-1.2s9.4-23.2 1.2-32.6C326.2 103 336 92.7 336 80s-9.8-23-22.2-23.9c8.1-9.4 7.7-23.7-1.2-32.6s-23.2-9.4-32.6-1.2zM0 480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM216.4 175.6c-14.2 0-28.4-5.4-39.3-16.1c-62.7 27.1-98.6 85.4-118.9 139.6c4.2 1.6 8.9 1.4 13-.6l35.4-17.7c13.5-6.8 29.4-6.8 42.9 0l35.4 17.7c4.5 2.3 9.8 2.3 14.3 0l35.4-17.7c13.5-6.8 29.4-6.8 42.9 0l35.4 17.7c4.5 2.3 9.8 2.3 14.3 0l35.4-17.7c13.5-6.8 29.4-6.8 42.9 0l35.4 17.7c4.1 2 8.8 2.2 13 .6c-20.3-54.2-56.2-112.5-118.9-139.6c-10.9 10.7-25.1 16.1-39.3 16.1C285.5 185.7 271.5 192 256 192s-29.5-6.3-39.6-16.4zM48.1 329.5C34.3 377.5 32 416 32 416H480s-2.3-38.5-16.1-86.5c-12.2 4.3-25.6 3.5-37.3-2.4l-35.4-17.7c-4.5-2.3-9.8-2.3-14.3 0l-35.4 17.7c-13.5 6.8-29.4 6.8-42.9 0l-35.4-17.7c-4.5-2.3-9.8-2.3-14.3 0l-35.4 17.7c-13.5 6.8-29.4 6.8-42.9 0l-35.4-17.7c-4.5-2.3-9.8-2.3-14.3 0L85.5 327.2c-11.7 5.8-25.2 6.6-37.3 2.4z\"]\n};\nvar faBrazilianRealSign = {\n prefix: 'fas',\n iconName: 'brazilian-real-sign',\n icon: [512, 512, [], \"e46c\", \"M400 0c17.7 0 32 14.3 32 32V50.2c12.5 2.3 24.7 6.4 36.2 12.1l10.1 5.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-10.2-5.1c-9.9-5-20.9-7.5-32-7.5h-1.7c-29.8 0-53.9 24.1-53.9 53.9c0 22 13.4 41.8 33.9 50l52 20.8c44.7 17.9 74.1 61.2 74.1 109.4v3.4c0 51.2-33.6 94.6-80 109.2V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V460.6c-15-3.5-29.4-9.7-42.3-18.3l-23.4-15.6c-14.7-9.8-18.7-29.7-8.9-44.4s29.7-18.7 44.4-8.9L361.2 389c10.8 7.2 23.4 11 36.3 11c27.9 0 50.5-22.6 50.5-50.5v-3.4c0-22-13.4-41.8-33.9-50l-52-20.8C317.3 257.4 288 214.1 288 165.9C288 114 321.5 70 368 54.2V32c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256z\"]\n};\nvar faLandmarkDome = {\n prefix: 'fas',\n iconName: 'landmark-dome',\n icon: [512, 512, [\"landmark-alt\"], \"f752\", \"M248 0h16c13.3 0 24 10.7 24 24V34.7C368.4 48.1 431.9 111.6 445.3 192H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h2.7C80.1 111.6 143.6 48.1 224 34.7V24c0-13.3 10.7-24 24-24zM64 288h64V416h40V288h64V416h48V288h64V416h40V288h64V420.3c.6 .3 1.2 .7 1.7 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V288z\"]\n};\nvar faLandmarkAlt = faLandmarkDome;\nvar faBoneBreak = {\n prefix: 'fas',\n iconName: 'bone-break',\n icon: [640, 512, [], \"f5d8\", \"M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V24zM201 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L201 71zM473 105c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-48 48c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48zM143.9 223.8C129.3 204.5 106.1 192 80 192c-44.2 0-80 35.8-80 80c0 35.8 23.5 66.1 55.9 76.3c4.6 1.5 8.3 5.1 9.3 9.8s-1.1 9.5-4.8 12.6C43.1 385.5 32 407.5 32 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-11.9 7-23.8 18.6-26.1L320 384l109.4 21.9C441 408.2 448 420.1 448 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-24.5-11.1-46.5-28.5-61.2c-3.7-3.1-5.7-7.9-4.8-12.6s4.7-8.4 9.3-9.8C616.5 338.1 640 307.8 640 272c0-44.2-35.8-80-80-80c-26.1 0-49.3 12.5-63.9 31.8c-10.1 13.3-25.7 23.8-42.1 20.5l-70.6-14.1c-17.3-3.5-34.2 7.8-37.7 25.1L320 384 294.3 255.4c-3.5-17.3-20.3-28.6-37.7-25.1L186 244.4c-16.4 3.3-32.1-7.2-42.1-20.5z\"]\n};\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [384, 512, [8593], \"f062\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"]\n};\nvar faDownFromDottedLine = {\n prefix: 'fas',\n iconName: 'down-from-dotted-line',\n icon: [448, 512, [], \"e407\", \"M73.9 345.9L196.7 468.7c7.2 7.2 17.1 11.3 27.3 11.3s20.1-4.1 27.3-11.3L374.1 345.9c6.4-6.4 9.9-15 9.9-24c0-18.7-15.2-33.9-33.9-33.9H288V160c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32V288H97.9C79.2 288 64 303.2 64 321.9c0 9 3.6 17.6 9.9 24zM32 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm96 0a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM256 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm64-32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zM448 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [63717, \"television\", \"tv-alt\"], \"f26c\", \"M64 64V352H576V64H64zM0 64C0 28.7 28.7 0 64 0H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM128 448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faTelevision = faTv;\nvar faTvAlt = faTv;\nvar faBorderLeft = {\n prefix: 'fas',\n iconName: 'border-left',\n icon: [448, 512, [], \"f84f\", \"M32 480c-17.7 0-32-14.3-32-32L0 64C0 46.3 14.3 32 32 32s32 14.3 32 32l0 384c0 17.7-14.3 32-32 32zm96-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-320a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM320 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM224 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-320a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM416 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM224 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nvar faCircleDivide = {\n prefix: 'fas',\n iconName: 'circle-divide',\n icon: [512, 512, [], \"e106\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM168 232H344c13.3 0 24 10.7 24 24s-10.7 24-24 24H168c-13.3 0-24-10.7-24-24s10.7-24 24-24zm56 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faShrimp = {\n prefix: 'fas',\n iconName: 'shrimp',\n icon: [512, 512, [129424], \"e448\", \"M64 32C28.7 32 0 60.7 0 96s28.7 64 64 64h1c3.7 88.9 77 160 167 160h56V128H264 88.8 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H464c8.8 0 16-7.2 16-16s-7.2-16-16-16H64zM224 456c0 13.3 10.7 24 24 24h72V407.8l-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3v69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111c0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6c0 4.6-.7 9-1.9 13.1L472.6 415zM336 128H320V320h18.3c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM168 192a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faListCheck = {\n prefix: 'fas',\n iconName: 'list-check',\n icon: [512, 512, [\"tasks\"], \"f0ae\", \"M152.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 113C-2.3 103.6-2.3 88.4 7 79s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM224 96c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32zM48 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faTasks = faListCheck;\nvar faDiagramSubtask = {\n prefix: 'fas',\n iconName: 'diagram-subtask',\n icon: [512, 512, [], \"e479\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H160v96c0 17.7 14.3 32 32 32h32c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H288c-35.3 0-64-28.7-64-64H192c-53 0-96-43-96-96V224H64c-35.3 0-64-28.7-64-64V96zM448 352H288v64H448V352z\"]\n};\nvar faJugDetergent = {\n prefix: 'fas',\n iconName: 'jug-detergent',\n icon: [384, 512, [], \"e519\", \"M96 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24V48h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H88C74.7 96 64 85.3 64 72s10.7-24 24-24h8V24zM0 256c0-70.7 57.3-128 128-128H256c70.7 0 128 57.3 128 128V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256zm256 0v96c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faCircleUser = {\n prefix: 'fas',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M399 384.2C376.9 345.8 335.4 320 288 320H224c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z\"]\n};\nvar faUserCircle = faCircleUser;\nvar faSquareY = {\n prefix: 'fas',\n iconName: 'square-y',\n icon: [448, 512, [], \"e287\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm74.1 120.3L224 251.4l85.9-99.1c8.7-10 23.8-11.1 33.9-2.4s11.1 23.8 2.4 33.9L248 297v79c0 13.3-10.7 24-24 24s-24-10.7-24-24V297L101.9 183.7c-8.7-10-7.6-25.2 2.4-33.9s25.2-7.6 33.9 2.4z\"]\n};\nvar faUserDoctorHair = {\n prefix: 'fas',\n iconName: 'user-doctor-hair',\n icon: [448, 512, [], \"e458\", \"M304 144c0 44.2-35.8 80-80 80s-80-35.8-80-80V128c0-5.5 .6-10.8 1.6-16h31.8c28.9 0 55.8-15.2 70.6-40l5.3 5.3C265 89 280.8 95.7 297.3 96c4.3 9.8 6.7 20.6 6.7 32v16zM224 0C153.3 0 96 57.3 96 128v16c0 70.7 57.3 128 128 128s128-57.3 128-128V128C352 57.3 294.7 0 224 0zm64 320l-1.3 0H161.3l-1.3 0v50.3c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7V323.4C54.9 338.8 0 403.6 0 481.3c0 17 13.8 30.7 30.7 30.7H417.3c17 0 30.7-13.8 30.7-30.7c0-77.7-54.9-142.5-128-157.8V362c27.6 7.1 48 32.2 48 62v40c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16s7.2-16 16-16V424c0-17.7-14.3-32-32-32s-32 14.3-32 32v24c8.8 0 16 7.2 16 16s-7.2 16-16 16H256c-8.8 0-16-7.2-16-16V424c0-29.8 20.4-54.9 48-62V320zM168 424a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faPlanetRinged = {\n prefix: 'fas',\n iconName: 'planet-ringed',\n icon: [512, 512, [129680], \"e020\", \"M319.7 319.7C456.6 182.8 539.1 43.3 503.9 8.1C481.7-14 418.3 10.4 340.2 65.7C314.4 54.3 286 48 256 48C141.1 48 48 141.1 48 256c0 30 6.3 58.4 17.7 84.2C10.4 418.3-14 481.7 8.1 503.9c35.2 35.2 174.7-47.3 311.6-184.2zM256 464c114.9 0 208-93.1 208-208c0-16.1-1.8-31.8-5.3-46.9c-31.8 42.6-71.4 88.2-116.4 133.2s-90.6 84.6-133.2 116.4c15.1 3.5 30.7 5.3 46.9 5.3z\"]\n};\nvar faMushroom = {\n prefix: 'fas',\n iconName: 'mushroom',\n icon: [512, 512, [127812], \"e425\", \"M24 258.1C24 133.2 125.2 32 250.1 32h11.8C386.8 32 488 133.2 488 258.1c0 34.2-27.7 61.9-61.9 61.9H313 199 85.9C51.7 320 24 292.3 24 258.1zm387.5-96.7c-3.7-.9-7.5-1.4-11.5-1.4c-26.5 0-48 21.5-48 48s21.5 48 48 48c15.9 0 30-7.7 38.7-19.6c-3.3-27.4-12.9-52.9-27.2-75zM145.9 113.6c8 35.7 39.9 62.4 78.1 62.4c44.2 0 80-35.8 80-80c0-3.8-.3-7.5-.8-11.2C290 81.7 276.1 80 261.9 80H250.1c-38.9 0-74.9 12.5-104.2 33.6zM191 352H321L343 440.2c2.4 9.6 .2 19.7-5.8 27.5s-15.4 12.3-25.2 12.3H200c-9.9 0-19.2-4.5-25.2-12.3s-8.2-17.9-5.8-27.5L191 352zM160 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c1.8 0 3.5-.2 5.3-.5c-76.3-55.1-99.8-141-103.1-200.2c-16.1-4.8-33.1-7.3-50.7-7.3H178.3zm308.8-78.3l-120 48C358 277.4 352 286.2 352 296c0 63.3 25.9 168.8 134.8 214.2c5.9 2.5 12.6 2.5 18.5 0C614.1 464.8 640 359.3 640 296c0-9.8-6-18.6-15.1-22.3l-120-48c-5.7-2.3-12.1-2.3-17.8 0zM591.4 312c-3.9 50.7-27.2 116.7-95.4 149.7V273.8L591.4 312z\"]\n};\nvar faMegaphone = {\n prefix: 'fas',\n iconName: 'megaphone',\n icon: [576, 512, [128227], \"f675\", \"M544 32c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64c0-17.7 14.3-32 32-32zM64 190.3L480 64V448L348.9 408.2C338.2 449.5 300.7 480 256 480c-53 0-96-43-96-96c0-11 1.9-21.7 5.3-31.5L64 321.7C63.1 338.6 49.1 352 32 352c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32c17.1 0 31.1 13.4 32 30.3zm239 203.9l-91.6-27.8c-2.1 5.4-3.3 11.4-3.3 17.6c0 26.5 21.5 48 48 48c23 0 42.2-16.2 46.9-37.8z\"]\n};\nvar faWreathLaurel = {\n prefix: 'fas',\n iconName: 'wreath-laurel',\n icon: [640, 512, [], \"e5d2\", \"M144 112C144 50.1 194.1 0 256 0h16c8.8 0 16 7.2 16 16V32c0 60.2-47.5 109.3-107 111.9c-23.9 32.2-37 71.5-37 112.1c0 97.2 78.8 176 176 176h11.6c43.5 0 86.3 10.1 125.2 29.6l9.9 5c11.9 5.9 16.7 20.3 10.7 32.2s-20.3 16.7-32.2 10.7l-9.9-5C403.1 488.4 367.6 480 331.6 480H320 308.4c-36 0-71.5 8.4-103.8 24.5l-9.9 5c-11.9 5.9-26.3 1.1-32.2-10.7s-1.1-26.3 10.7-32.2l9.9-5c8.3-4.2 16.8-7.9 25.4-11.2c-5.6-3.2-11-6.7-16.3-10.3c-59.6 28.2-131.9 6.3-165.4-51.8l-8-13.9c-4.4-7.7-1.8-17.4 5.9-21.9c13.8-8 28.4-13.1 43.3-15.5C27.5 315.6 0 273 0 224V208c0-8.8 7.2-16 16-16c15.9 0 31.1 2.9 45.2 8.2c-24.3-38.8-26.8-89.5-2.3-131.9l8-13.9c4.4-7.7 14.2-10.3 21.9-5.9C115 63.7 133.8 86.8 144 113v-1zm315 31.9C399.5 141.3 352 92.2 352 32V16c0-8.8 7.2-16 16-16h16c61.9 0 112 50.1 112 112v1c10.2-26.2 29-49.2 55.3-64.4c7.7-4.4 17.4-1.8 21.9 5.9l8 13.9c24.5 42.4 21.9 93.1-2.3 131.9c14.1-5.3 29.3-8.2 45.2-8.2c8.8 0 16 7.2 16 16v16c0 49-27.5 91.6-68 113.1c14.8 2.4 29.5 7.5 43.3 15.5c7.7 4.4 10.3 14.2 5.9 21.9l-8 13.9c-24.2 42-68.7 65.1-114 64c-4.8-5.8-10.9-10.8-18.1-14.4l-9.9-5c-2.8-1.4-5.7-2.8-8.6-4.1c-10.4-4.8-21-9-31.8-12.6c-7.9-2.7-15.9-5-24-7C460 378.9 496 321.7 496 256c0-40.6-13.1-79.9-37-112.1z\"]\n};\nvar faCircleExclamationCheck = {\n prefix: 'fas',\n iconName: 'circle-exclamation-check',\n icon: [640, 512, [], \"e10d\", \"M506.5 203L480 229.5l-18.7-18.7c-25-25-65.5-25-90.5 0s-25 65.5 0 90.5l64 64c11.9 11.9 27.4 18.2 43 18.7c-44.3 76.5-127 128-221.8 128C114.6 512 0 397.4 0 256S114.6 0 256 0C379.2 0 482.1 87 506.5 203zM280 152c0-13.3-10.7-24-24-24s-24 10.7-24 24V264c0 13.3 10.7 24 24 24s24-10.7 24-24V152zM256 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM625 209L497 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M288 32c0 17.7 14.3 32 32 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c53 0 96-43 96-96s-43-96-96-96H320c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32 14.3-32 32zM128 512h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H160c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faBoxDollar = {\n prefix: 'fas',\n iconName: 'box-dollar',\n icon: [448, 512, [\"box-usd\"], \"f4a0\", \"M93.7 32H208V160H0L50.7 58.5C58.9 42.3 75.5 32 93.7 32zM240 32H354.3c18.2 0 34.8 10.3 42.9 26.5L448 160H240V32zM0 192H448V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm244 40c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5l0 0c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V440c0 11 9 20 20 20s20-9 20-20V426.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l0 0-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V232z\"]\n};\nvar faBoxUsd = faBoxDollar;\nvar faCarBurst = {\n prefix: 'fas',\n iconName: 'car-burst',\n icon: [640, 512, [\"car-crash\"], \"f5e1\", \"M176 8c-6.6 0-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6l35.3-32.5 9.5-35.4 10.4-38.6c8-29.9 30.5-52.1 57.9-60.9l41-59.2c11.3-16.3 26.4-28.9 43.5-37.2c-.4-.6-.8-1.2-1.3-1.8c-4.1-5.1-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74C188.4 12 182.6 8 176 8zM367.7 161.5l135.6 36.3c6.5 1.8 11.3 7.4 11.8 14.2l4.6 56.5-201.5-54 32.2-46.6c3.8-5.6 10.8-8.1 17.3-6.4zm-69.9-30l-47.9 69.3c-21.6 3-40.3 18.6-46.3 41l-10.4 38.6-16.6 61.8-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 247.3 66.3-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9L595 388l10.4-38.6c6-22.4-2.5-45.2-19.6-58.7l-6.8-84c-2.7-33.7-26.4-62-59-70.8L384.2 99.7c-32.7-8.8-67.3 4-86.5 31.8zm-17 131a24 24 0 1 1 -12.4 46.4 24 24 0 1 1 12.4-46.4zm217.9 83.2A24 24 0 1 1 545 358.1a24 24 0 1 1 -46.4-12.4z\"]\n};\nvar faCarCrash = faCarBurst;\nvar faY = {\n prefix: 'fas',\n iconName: 'y',\n icon: [384, 512, [121], \"59\", \"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V298.3L378 82.6c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"]\n};\nvar faUserHeadset = {\n prefix: 'fas',\n iconName: 'user-headset',\n icon: [448, 512, [], \"f82d\", \"M224 32C135.6 32 64 103.6 64 192v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V192C32 86 118 0 224 0S416 86 416 192v16c0 61.9-50.1 112-112 112H240 224 208c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32h32c44.2 0 80-35.8 80-80V192c0-88.4-71.6-160-160-160zM96 192c0-70.7 57.3-128 128-128s128 57.3 128 128c0 13.9-2.2 27.3-6.3 39.8C337.4 246.3 321.8 256 304 256h-8.6c-11.1-19.1-31.7-32-55.4-32H208c-35.3 0-64 28.7-64 64c0 1.4 0 2.7 .1 4C114.8 268.6 96 232.5 96 192zM224 352h16 64 9.6C387.8 352 448 412.2 448 486.4c0 14.1-11.5 25.6-25.6 25.6H25.6C11.5 512 0 500.5 0 486.4C0 412.2 60.2 352 134.4 352H208h16z\"]\n};\nvar faArrowsRetweet = {\n prefix: 'fas',\n iconName: 'arrows-retweet',\n icon: [640, 512, [\"retweet-alt\"], \"f361\", \"M150.6 73.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 173.3V320c0 53 43 96 96 96H304c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32-14.3-32-32V173.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96zM336 96c-17.7 0-32 14.3-32 32s14.3 32 32 32H448c17.7 0 32 14.3 32 32V338.7l-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L544 338.7V192c0-53-43-96-96-96H336z\"]\n};\nvar faRetweetAlt = faArrowsRetweet;\nvar faPersonSnowboarding = {\n prefix: 'fas',\n iconName: 'person-snowboarding',\n icon: [512, 512, [127938, \"snowboarding\"], \"f7ce\", \"M209.7 3.4c15.8-7.9 35-1.5 42.9 14.3l25 50 42.4 8.5c19.5 3.9 37.8 12.3 53.5 24.5l126.1 98.1c14 10.9 16.5 31 5.6 44.9s-31 16.5-44.9 5.6l-72.1-56.1-71.5 31.8 33.1 27.6c23.2 19.3 33.5 50 26.7 79.4l-17.4 75.2c-2.2 9.4-8.2 16.8-16.1 21l86.5 33.1c4.6 1.8 9.4 2.6 14.3 2.6H472c13.3 0 24 10.7 24 24s-10.7 24-24 24H443.8c-10.8 0-21.4-2-31.5-5.8L60.1 371.3c-11.5-4.4-22-11.2-30.8-20L7 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l22.4 8.6c-.8-1.6-1.5-3.2-2.1-4.9c-5.6-16.8 3.5-34.9 20.2-40.5L192 264.9l0-53.2c0-24.2 13.7-46.4 35.4-57.2l45.2-22.6-7.5-1.5c-19.4-3.9-35.9-16.5-44.7-34.1l-25-50c-7.9-15.8-1.5-35 14.3-42.9zM139 350.1l159 60.9c-2.1-5.6-2.6-11.9-1.1-18.2l17.4-75.2c1.4-5.9-.7-12-5.3-15.9l-52.8-44 0 18.8c0 20.7-13.2 39-32.8 45.5L139 350.1zM432 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faSnowboarding = faPersonSnowboarding;\nvar faSquareChevronRight = {\n prefix: 'fas',\n iconName: 'square-chevron-right',\n icon: [448, 512, [\"chevron-square-right\"], \"f32b\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM313 273L209 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L313 239c9.4 9.4 9.4 24.6 0 33.9z\"]\n};\nvar faChevronSquareRight = faSquareChevronRight;\nvar faLacrosseStickBall = {\n prefix: 'fas',\n iconName: 'lacrosse-stick-ball',\n icon: [576, 512, [], \"e3b6\", \"M336 64v0c.1 0 .2 0 .3 0c19.9 0 48.1 13.6 73.1 38.6s38.6 53.2 38.6 73.1c0 .1 0 .2 0 .3h0c0 33.1-21.9 62.1-53.7 71.2l-11.5 3.3c-19.6 5.6-37.9 15.1-53.9 27.8L294 306.2c-11.1 8.9-25 13.8-39.2 13.8c-34.7 0-62.8-28.1-62.8-62.8c0-14.3 4.9-28.1 13.8-39.2l27.9-34.9c12.8-15.9 22.2-34.3 27.8-53.9l3.3-11.5C273.9 85.9 302.9 64 336 64zm0-64V0C274.4 0 220.2 40.9 203.3 100.1L200 111.7c-3.3 11.5-8.8 22.2-16.2 31.5l-27.9 34.9c-18 22.5-27.8 50.4-27.8 79.2c0 23.4 6.3 45.3 17.4 64.1l-136 136c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l136-136c18.8 11.1 40.7 17.4 64.1 17.4c28.8 0 56.7-9.8 79.2-27.8l34.9-27.9c9.3-7.4 20-13 31.5-16.2l11.5-3.3C471.1 291.8 512 237.6 512 176h0c0-.1 0-.2 0-.3c0-43.8-26.4-87.4-57.3-118.4S380.1 0 336.3 0c-.1 0-.2 0-.3 0zM496 512a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nvar faTruckFast = {\n prefix: 'fas',\n iconName: 'truck-fast',\n icon: [640, 512, [\"shipping-fast\"], \"f48b\", \"M112 0C85.5 0 64 21.5 64 48V96H16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 272c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 48c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 240c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 208c8.8 0 16 7.2 16 16s-7.2 16-16 16H64V416c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H112zM544 237.3V256H416V160h50.7L544 237.3zM160 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm272 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faShippingFast = faTruckFast;\nvar faUserMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'user-magnifying-glass',\n icon: [640, 512, [], \"e5c5\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-.8 0-1.5 0-2.3c-88.4 0-160-71.6-160-160c0-5.1 .2-10.1 .7-15c-6.2-.7-12.6-1-19-1H178.3zM448 240.1a80 80 0 1 1 0 160 80 80 0 1 1 0-160zm0 208c26.7 0 51.4-8.2 71.9-22.1L599 505.1c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-79.1-79.1c14-20.5 22.1-45.3 22.1-71.9c0-70.7-57.3-128-128-128s-128 57.3-128 128s57.3 128 128 128z\"]\n};\nvar faStarSharp = {\n prefix: 'fas',\n iconName: 'star-sharp',\n icon: [576, 512, [], \"e28b\", \"M310.9 16.7C307.7 6.8 298.5 0 288 0s-19.7 6.8-22.9 16.7L214.5 176H56c-10.3 0-19.4 6.5-22.7 16.2s-.1 20.4 8 26.7L172.1 320.7 121.1 480.7c-3.2 10 .5 21 9.1 27s20.2 5.7 28.5-.7L288 406.4 417.3 506.9c8.3 6.5 19.8 6.8 28.5 .7s12.3-16.9 9.1-27L403.9 320.7 534.7 218.9c8.1-6.3 11.3-17 8-26.7s-12.4-16.2-22.7-16.2H361.5L310.9 16.7z\"]\n};\nvar faCommentHeart = {\n prefix: 'fas',\n iconName: 'comment-heart',\n icon: [512, 512, [], \"e5c8\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM144 205.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"]\n};\nvar faCircle1 = {\n prefix: 'fas',\n iconName: 'circle-1',\n icon: [512, 512, [], \"e0ee\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM268 131.2c-7.4-4.3-16.5-4.3-24-.1l-56 32c-11.5 6.6-15.5 21.2-8.9 32.7s21.2 15.5 32.7 8.9L232 193.4V336H192c-13.3 0-24 10.7-24 24s10.7 24 24 24h64 64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V152c0-8.6-4.6-16.5-12-20.8z\"]\n};\nvar faCircleStar = {\n prefix: 'fas',\n iconName: 'circle-star',\n icon: [512, 512, [\"star-circle\"], \"e123\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM256 104c-6.1 0-11.7 3.5-14.3 8.9l-36.2 73.4-81 11.8c-6 .9-11 5.1-12.9 10.9s-.3 12.2 4 16.4l58.6 57.2-13.8 80.7c-1 6 1.4 12.1 6.4 15.6s11.5 4.1 16.8 1.2L256 342.1l72.5 38.1c5.4 2.8 11.9 2.4 16.9-1.2s7.4-9.6 6.4-15.6l-13.8-80.7 58.6-57.2c4.4-4.3 5.9-10.6 4-16.4s-6.9-10-12.9-10.9l-81.1-11.8-36.2-73.4c-2.7-5.5-8.3-8.9-14.3-8.9z\"]\n};\nvar faStarCircle = faCircleStar;\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [128031], \"f578\", \"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8C452.3 403.5 399.4 432 336 432s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faCloudFog = {\n prefix: 'fas',\n iconName: 'cloud-fog',\n icon: [640, 512, [127787, \"fog\"], \"f74e\", \"M160 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2c-1.3-6.7-1.9-13.7-1.9-20.8C128 50.1 178.1 0 240 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H160zM0 392c0-13.3 10.7-24 24-24H552c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm64 96c0-13.3 10.7-24 24-24H200c13.3 0 24 10.7 24 24s-10.7 24-24 24H88c-13.3 0-24-10.7-24-24zm208 0c0-13.3 10.7-24 24-24H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24z\"]\n};\nvar faFog = faCloudFog;\nvar faWaffle = {\n prefix: 'fas',\n iconName: 'waffle',\n icon: [512, 512, [129479], \"e466\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM160 80c-8.8 0-16 7.2-16 16v48H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v64H64c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V368h64v80c0 8.8 7.2 16 16 16s16-7.2 16-16V368h64v48c0 8.8 7.2 16 16 16s16-7.2 16-16V368h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H368V272h80c8.8 0 16-7.2 16-16s-7.2-16-16-16H368V176h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H368V96c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H272V64c0-8.8-7.2-16-16-16s-16 7.2-16 16v80H176V96c0-8.8-7.2-16-16-16zm16 256V272h64v64H176zm96 0V272h64v64H272zm64-160v64H272V176h64zm-96 0v64H176V176h64z\"]\n};\nvar faMusicNote = {\n prefix: 'fas',\n iconName: 'music-note',\n icon: [384, 512, [\"music-alt\"], \"f8cf\", \"M384 32c0-9.9-4.5-19.2-12.3-25.2S353.8-1.4 344.2 1l-128 32C202 36.5 192 49.3 192 64v64V359.7c-14.5-4.9-30.8-7.7-48-7.7c-61.9 0-112 35.8-112 80s50.1 80 112 80s112-35.8 112-80V153L359.8 127C374 123.5 384 110.7 384 96V32z\"]\n};\nvar faMusicAlt = faMusicNote;\nvar faHexagonExclamation = {\n prefix: 'fas',\n iconName: 'hexagon-exclamation',\n icon: [512, 512, [], \"e417\", \"M17.1 292c-12.9-22.3-12.9-49.7 0-72L105.4 67.1c12.9-22.3 36.6-36 62.4-36H344.3c25.7 0 49.5 13.7 62.4 36L494.9 220c12.9 22.3 12.9 49.7 0 72L406.6 444.9c-12.9 22.3-36.6 36-62.4 36H167.7c-25.7 0-49.5-13.7-62.4-36L17.1 292zM256 128c-13.3 0-24 10.7-24 24V264c0 13.3 10.7 24 24 24s24-10.7 24-24V152c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faCartShoppingFast = {\n prefix: 'fas',\n iconName: 'cart-shopping-fast',\n icon: [640, 512, [], \"e0dc\", \"M88 0C74.7 0 64 10.7 64 24s10.7 24 24 24h45.5c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5H552c13.3 0 24-10.7 24-24s-10.7-24-24-24H263.7c-11.5 0-21.4-8.2-23.6-19.5L234.7 288H523.2c32.6 0 61.1-21.8 69.5-53.3l41-152.3C640.6 57 621.4 32 595.1 32h-411C175 12.8 155.6 0 133.5 0H88zM240 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM24 96C10.7 96 0 106.7 0 120s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zm0 80c-13.3 0-24 10.7-24 24s10.7 24 24 24h96c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zm0 80c-13.3 0-24 10.7-24 24s10.7 24 24 24H136c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"]\n};\nvar faObjectUnion = {\n prefix: 'fas',\n iconName: 'object-union',\n icon: [512, 512, [], \"e49f\", \"M64 0C28.7 0 0 28.7 0 64V288c0 35.3 28.7 64 64 64h96v96c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V224c0-35.3-28.7-64-64-64H352V64c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M219.3 .5c3.1-.6 6.3-.6 9.4 0l200 40C439.9 42.7 448 52.6 448 64s-8.1 21.3-19.3 23.5L352 102.9V160c0 70.7-57.3 128-128 128s-128-57.3-128-128V102.9L48 93.3v65.1l15.7 78.4c.9 4.7-.3 9.6-3.3 13.3s-7.6 5.9-12.4 5.9H16c-4.8 0-9.3-2.1-12.4-5.9s-4.3-8.6-3.3-13.3L16 158.4V86.6C6.5 83.3 0 74.3 0 64C0 52.6 8.1 42.7 19.3 40.5l200-40zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6z\"]\n};\nvar faStarfighter = {\n prefix: 'fas',\n iconName: 'starfighter',\n icon: [640, 512, [], \"e037\", \"M353.8 14L384 256V464c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V256L286.2 14c1-8 7.8-14 15.9-14h35.8c8.1 0 14.9 6 15.9 14zM288 256v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V256c0-17.7-14.3-32-32-32s-32 14.3-32 32zM48 72c13.3 0 24 10.7 24 24v24c13.3 0 24 10.7 24 24s-10.7 24-24 24V352h56V320c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32v32 64 32 32c0 17.7-14.3 32-32 32s-32-14.3-32-32v-9.6L72 444v4c0 13.3-10.7 24-24 24s-24-10.7-24-24V168c-13.3 0-24-10.7-24-24s10.7-24 24-24V96c0-13.3 10.7-24 24-24zm544 0c13.3 0 24 10.7 24 24v24c13.3 0 24 10.7 24 24s-10.7 24-24 24V448c0 13.3-10.7 24-24 24s-24-10.7-24-24v-4l-88 26.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V448 416 352 320c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32v32h56V168c-13.3 0-24-10.7-24-24s10.7-24 24-24V96c0-13.3 10.7-24 24-24z\"]\n};\nvar faCircleHalfStroke = {\n prefix: 'fas',\n iconName: 'circle-half-stroke',\n icon: [512, 512, [9680, \"adjust\"], \"f042\", \"M448 256c0-106-86-192-192-192V448c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faAdjust = faCircleHalfStroke;\nvar faArrowRightLongToLine = {\n prefix: 'fas',\n iconName: 'arrow-right-long-to-line',\n icon: [640, 512, [], \"e3d5\", \"M640 96V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32zM502.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L402.7 288 32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l370.7 0-73.4-73.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l128 128z\"]\n};\nvar faSquareArrowDown = {\n prefix: 'fas',\n iconName: 'square-arrow-down',\n icon: [448, 512, [\"arrow-square-down\"], \"f339\", \"M64 480c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64zm177-87L353 281c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-71 71V136c0-13.3-10.7-24-24-24s-24 10.7-24 24V318.1l-71-71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L207 393c9.4 9.4 24.6 9.4 33.9 0z\"]\n};\nvar faArrowSquareDown = faSquareArrowDown;\nvar faDiamondHalfStroke = {\n prefix: 'fas',\n iconName: 'diamond-half-stroke',\n icon: [512, 512, [], \"e5b8\", \"M256 78.5L433.5 256 256 433.5V78.5zm28.3-66.8c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z\"]\n};\nvar faClapperboard = {\n prefix: 'fas',\n iconName: 'clapperboard',\n icon: [512, 512, [], \"e131\", \"M448 32H361.9l-1 1-127 127h92.1l1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128V96c0-15.1-5.3-29.1-14-40l-104 104H512zM294.1 32H201.9l-1 1L73.9 160h92.1l1-1 127-127zM64 32C28.7 32 0 60.7 0 96v64H6.1l1-1 127-127H64zM512 192H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faSquareChevronLeft = {\n prefix: 'fas',\n iconName: 'square-chevron-left',\n icon: [448, 512, [\"chevron-square-left\"], \"f32a\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM135 239L239 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L135 273c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faChevronSquareLeft = faSquareChevronLeft;\nvar faPhoneIntercom = {\n prefix: 'fas',\n iconName: 'phone-intercom',\n icon: [512, 512, [], \"e434\", \"M48 32H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80C0 53.5 21.5 32 48 32zM160 96c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64V96zM320 368a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm48-48c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H368zm0 64c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H368zM224 128v96c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32z\"]\n};\nvar faLinkHorizontal = {\n prefix: 'fas',\n iconName: 'link-horizontal',\n icon: [640, 512, [\"chain-horizontal\"], \"e1cb\", \"M144.6 64C64.7 64 0 128.7 0 208.6c0 70.7 51.1 131 120.8 142.6l1.9 .3c17.4 2.9 33.9-8.9 36.8-26.3s-8.9-33.9-26.3-36.8l-1.9-.3C92.5 281.6 64 248 64 208.6c0-44.5 36.1-80.6 80.6-80.6H303.4c44.5 0 80.6 36.1 80.6 80.6c0 39.4-28.5 73-67.4 79.5l-1.9 .3c-17.4 2.9-29.2 19.4-26.3 36.8s19.4 29.2 36.8 26.3l1.9-.3c69.7-11.6 120.8-72 120.8-142.6C448 128.7 383.3 64 303.4 64H144.6zM495.4 448C575.3 448 640 383.3 640 303.4c0-70.7-51.1-131-120.8-142.6l-1.9-.3c-17.4-2.9-33.9 8.9-36.8 26.3s8.9 33.9 26.3 36.8l1.9 .3c38.9 6.5 67.4 40.1 67.4 79.5c0 44.5-36.1 80.6-80.6 80.6H336.6c-44.5 0-80.6-36.1-80.6-80.6c0-39.4 28.5-73 67.4-79.5l1.9-.3c17.4-2.9 29.2-19.4 26.3-36.8s-19.4-29.2-36.8-26.3l-1.9 .3C243.1 172.4 192 232.7 192 303.4C192 383.3 256.7 448 336.6 448H495.4z\"]\n};\nvar faChainHorizontal = faLinkHorizontal;\nvar faMango = {\n prefix: 'fas',\n iconName: 'mango',\n icon: [512, 512, [], \"e30f\", \"M344 0h8 24 8 56c39.8 0 72 32.2 72 72c0 13.3-10.7 24-24 24H448c-33.4 0-62.8-17-80-42.9v49c32.2 8.3 62.6 25 87.8 50.2C493.3 189.7 512 238.9 512 288c0 76.6-57.5 224-224 224c-144 0-244.1-43.3-244.1-43.3C10.3 457.6-7.9 421.4 3.3 387.9C7.4 375.4 15 365 24.7 357.5c34.3-25.7 52.1-57.6 71.2-91.8c20.6-36.8 42.6-76.3 88.4-113.5C221.7 114.7 270.9 96 320 96V24c0-13.3 10.7-24 24-24zm88 304c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 53-43 96-96 96c-8.8 0-16 7.2-16 16s7.2 16 16 16c70.7 0 128-57.3 128-128z\"]\n};\nvar faMusicNoteSlash = {\n prefix: 'fas',\n iconName: 'music-note-slash',\n icon: [640, 512, [\"music-alt-slash\"], \"f8d0\", \"M512 32c0-9.9-4.5-19.2-12.3-25.2S481.8-1.4 472.2 1l-128 32C330 36.5 320 49.3 320 64v64 97.5L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L384 275.7V153L487.8 127C502 123.5 512 110.7 512 96V32zM272 352c-61.9 0-112 35.8-112 80s50.1 80 112 80s112-35.8 112-80V411.2L317.8 359c-14-4.5-29.5-7-45.8-7z\"]\n};\nvar faMusicAltSlash = faMusicNoteSlash;\nvar faCircleRadiation = {\n prefix: 'fas',\n iconName: 'circle-radiation',\n icon: [512, 512, [9762, \"radiation-alt\"], \"f7ba\", \"M256 64a192 192 0 1 1 0 384 192 192 0 1 1 0-384zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM200 256c0-20.7 11.3-38.8 28-48.5l-36-62.3c-8.8-15.3-28.7-20.8-42-9c-25.6 22.6-43.9 53.3-50.9 88.1C95.7 241.5 110.3 256 128 256l72 0zm28 48.5l-36 62.4c-8.8 15.3-3.6 35.2 13.1 40.8c16 5.4 33.1 8.3 50.9 8.3s34.9-2.9 50.9-8.3c16.7-5.6 21.9-25.5 13.1-40.8l-36-62.4c-8.2 4.8-17.8 7.5-28 7.5s-19.8-2.7-28-7.5zM312 256l72 0c17.7 0 32.3-14.5 28.8-31.8c-7-34.8-25.3-65.5-50.9-88.1c-13.2-11.7-33.1-6.3-42 9l-36 62.3c16.7 9.7 28 27.8 28 48.5zm-56 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faRadiationAlt = faCircleRadiation;\nvar faFaceTongueSweat = {\n prefix: 'fas',\n iconName: 'face-tongue-sweat',\n icon: [576, 512, [], \"e39e\", \"M544 256c0 112.9-73.1 208.7-174.5 242.8C378.7 484 384 466.6 384 448V416.7c10.2-7.2 16-15.7 16-24.7c0-26.5-50.1-48-112-48s-112 21.5-112 48c0 9 5.8 17.5 16 24.7V448c0 18.6 5.3 36 14.5 50.8c-41.3-13.9-78-38-106.9-69.4C116.9 415 128 393.5 128 369c0-11.4-3.8-22.4-7.1-30.5c-3.7-8.7-8.4-17.6-13.2-25.7C98.1 296.7 87 281.3 80 272.1c-11.6-15.6-31.7-19.9-48-12.8c0-1.1 0-2.2 0-3.3C32 114.6 146.6 0 288 0S544 114.6 544 256zM96 369c0 14.2-6.4 26.9-16.5 35.5C71 411.7 60 416 48 416c-26.5 0-48-21-48-47c0-17.3 21.4-50 35.7-69.7c2.2-3 4.2-5.8 5.9-8.1c3.2-4.4 9.6-4.4 12.8 0C67.6 308.6 96 349 96 369zm239.6-97a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm-128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm19.7-155.3c-6.2-6.2-16.4-6.2-22.6 0l-7.4 7.4c-18.9 18.9-43.2 31.4-69.5 35.7l-2.5 .4c-8.7 1.5-14.6 9.7-13.2 18.4s9.7 14.6 18.4 13.2l2.5-.4c32.9-5.5 63.3-21.1 86.8-44.7l7.4-7.4c6.2-6.2 6.2-16.4 0-22.6zm121.4 22.6l7.4 7.4c23.6 23.6 53.9 39.2 86.8 44.7l2.5 .4c8.7 1.5 17-4.4 18.4-13.2s-4.4-17-13.2-18.4l-2.5-.4c-26.3-4.4-50.6-16.9-69.5-35.7l-7.4-7.4c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6zM352 402.6V448c0 35.3-28.7 64-64 64s-64-28.7-64-64V402.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6z\"]\n};\nvar faGlobeStand = {\n prefix: 'fas',\n iconName: 'globe-stand',\n icon: [448, 512, [], \"f5f6\", \"M15 367c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l18.5-18.5c34.3 27.7 74.9 43.8 116.5 48.3V464H88c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V430.7c49.1-5.3 96.8-26.7 134.4-64.3c81.7-81.7 87.1-211 16.1-298.9L401 49c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L332.5 49.6c-9.4 9.4-9.4 24.6 0 33.9c68.7 68.7 68.7 180.2 0 248.9s-180.2 68.7-248.9 0c-9.4-9.4-24.6-9.4-33.9 0L15 367zm193-15a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"]\n};\nvar faBaseball = {\n prefix: 'fas',\n iconName: 'baseball',\n icon: [512, 512, [129358, 9918, \"baseball-ball\"], \"f433\", \"M62.7 223.4c-4.8 .4-9.7 .6-14.7 .6c-15.6 0-30.8-2-45.2-5.9C19.2 107.1 107.1 19.2 218.1 2.8C222 17.2 224 32.4 224 48c0 4.9-.2 9.8-.6 14.7c-.7 8.8 5.8 16.5 14.6 17.3s16.5-5.8 17.3-14.6c.5-5.7 .7-11.5 .7-17.3c0-16.5-1.9-32.6-5.6-47.9c1.8 0 3.7-.1 5.6-.1C397.4 0 512 114.6 512 256c0 1.9 0 3.7-.1 5.6c-15.4-3.6-31.4-5.6-47.9-5.6c-5.8 0-11.6 .2-17.3 .7c-8.8 .7-15.4 8.5-14.6 17.3s8.5 15.4 17.3 14.6c4.8-.4 9.7-.6 14.7-.6c15.6 0 30.8 2 45.2 5.9C492.8 404.9 404.9 492.8 293.9 509.2C290 494.8 288 479.6 288 464c0-4.9 .2-9.8 .6-14.7c.7-8.8-5.8-16.5-14.6-17.3s-16.5 5.8-17.3 14.6c-.5 5.7-.7 11.5-.7 17.3c0 16.5 1.9 32.6 5.6 47.9c-1.8 0-3.7 .1-5.6 .1C114.6 512 0 397.4 0 256c0-1.9 0-3.7 .1-5.6C15.4 254.1 31.5 256 48 256c5.8 0 11.6-.2 17.3-.7c8.8-.7 15.4-8.5 14.6-17.3s-8.5-15.4-17.3-14.6zM121.3 208c-8 3.7-11.6 13.2-7.9 21.2s13.2 11.6 21.2 7.9c45.2-20.8 81.7-57.2 102.5-102.5c3.7-8 .2-17.5-7.9-21.2s-17.5-.2-21.2 7.9c-17.6 38.3-48.5 69.2-86.7 86.7zm277.2 74.7c-3.7-8-13.2-11.6-21.2-7.9c-45.2 20.8-81.7 57.2-102.5 102.5c-3.7 8-.2 17.5 7.9 21.2s17.5 .2 21.2-7.9c17.6-38.3 48.5-69.2 86.7-86.7c8-3.7 11.6-13.2 7.9-21.2z\"]\n};\nvar faBaseballBall = faBaseball;\nvar faCircleP = {\n prefix: 'fas',\n iconName: 'circle-p',\n icon: [512, 512, [], \"e11a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 128h92c50.8 0 92 41.2 92 92s-41.2 92-92 92H208v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V288 152c0-13.3 10.7-24 24-24zm92 136c24.3 0 44-19.7 44-44s-19.7-44-44-44H208v88h68z\"]\n};\nvar faAwardSimple = {\n prefix: 'fas',\n iconName: 'award-simple',\n icon: [384, 512, [], \"e0ab\", \"M173.3 5.3c11.5-7 26-7 37.5 0l17.9 10.9c5.9 3.6 12.7 5.4 19.6 5.2l20.9-.5c13.5-.3 26 6.9 32.5 18.7l10 18.4c3.3 6.1 8.3 11 14.3 14.3l18.4 10c11.8 6.5 19.1 19 18.7 32.5l-.5 20.9c-.2 6.9 1.7 13.7 5.2 19.6l10.9 17.9c7 11.5 7 26 0 37.5l-10.9 17.9c-3.6 5.9-5.4 12.7-5.2 19.6l.5 20.9c.3 13.5-6.9 26-18.7 32.5l-18.4 10c-6.1 3.3-11 8.3-14.3 14.3l-10 18.4c-6.5 11.8-19 19.1-32.5 18.7l-20.9-.5c-6.9-.2-13.7 1.7-19.6 5.2l-17.9 10.9c-11.5 7-26 7-37.5 0l-17.9-10.9c-5.9-3.6-12.7-5.4-19.6-5.2l-20.9 .5c-13.5 .3-26-6.9-32.5-18.7L72.4 326c-3.3-6.1-8.3-11-14.3-14.3l-18.4-10c-11.8-6.5-19.1-19-18.7-32.5l.5-20.9c.2-6.9-1.7-13.7-5.2-19.6L5.3 210.7c-7-11.5-7-26 0-37.5l10.9-17.9c3.6-5.9 5.4-12.7 5.2-19.6l-.5-20.9c-.3-13.5 6.9-26 18.7-32.5L58 72.4c6.1-3.3 11-8.3 14.3-14.3l10-18.4c6.5-11.8 19-19.1 32.5-18.7l20.9 .5c6.9 .2 13.7-1.7 19.6-5.2L173.3 5.3zM272 192a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM64.4 492.4L88 390c8.9 3.7 18.6 5.6 28.6 5.4l20.7-.5c.2 0 .4 .1 .6 .2l17.6 10.7c22.4 13.6 50.5 13.6 72.9 0L246.1 395c.2-.1 .4-.2 .6-.2l20.7 .5c10 .2 19.7-1.7 28.6-5.4l23.6 102.4c1.3 5.5-.5 11.3-4.6 15.2s-10 5.3-15.4 3.8L192 480.6 84.4 511.4c-5.4 1.6-11.3 .1-15.4-3.8s-5.8-9.7-4.6-15.2z\"]\n};\nvar faJetFighterUp = {\n prefix: 'fas',\n iconName: 'jet-fighter-up',\n icon: [512, 512, [], \"e518\", \"M270.7 9.7C268.2 3.8 262.4 0 256 0s-12.2 3.8-14.7 9.7L197.2 112.6c-3.4 8-5.2 16.5-5.2 25.2v77l-144 84V280c0-13.3-10.7-24-24-24s-24 10.7-24 24v56 32 24c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H192v32.7L133.5 468c-3.5 3-5.5 7.4-5.5 12v16c0 8.8 7.2 16 16 16h96V448c0-8.8 7.2-16 16-16s16 7.2 16 16v64h96c8.8 0 16-7.2 16-16V480c0-4.6-2-9-5.5-12L320 416.7V384H464v8c0 13.3 10.7 24 24 24s24-10.7 24-24V368 336 280c0-13.3-10.7-24-24-24s-24 10.7-24 24v18.8l-144-84v-77c0-8.7-1.8-17.2-5.2-25.2L270.7 9.7z\"]\n};\nvar faDiagramProject = {\n prefix: 'fas',\n iconName: 'diagram-project',\n icon: [576, 512, [\"project-diagram\"], \"f542\", \"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48V96H384V80c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H432c-26.5 0-48-21.5-48-48V160H192v16c0 1.7-.1 3.4-.3 5L272 288h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V336c0-1.7 .1-3.4 .3-5L144 224H48c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faProjectDiagram = faDiagramProject;\nvar faPedestal = {\n prefix: 'fas',\n iconName: 'pedestal',\n icon: [448, 512, [], \"e20d\", \"M96 0C60.7 0 32 28.7 32 64V416H416V64c0-35.3-28.7-64-64-64H96zm24 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM304 88a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faChartPyramid = {\n prefix: 'fas',\n iconName: 'chart-pyramid',\n icon: [512, 512, [], \"e0e6\", \"M290.6 59.7c-15.4-26.5-53.7-26.5-69.1 0L163 160H349L290.6 59.7zM69.6 320H442.4L367.7 192H144.3L69.6 320zM51 352L11.4 419.8C-4.2 446.5 15.1 480 45.9 480H466.1c30.9 0 50.1-33.5 34.6-60.2L461 352H51z\"]\n};\nvar faSidebar = {\n prefix: 'fas',\n iconName: 'sidebar',\n icon: [512, 512, [], \"e24e\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm224 0V416H448V96H224zM88 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H88zM64 216c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H88c-13.3 0-24 10.7-24 24zm24 72c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H88z\"]\n};\nvar faSnowmanHead = {\n prefix: 'fas',\n iconName: 'snowman-head',\n icon: [448, 512, [\"frosty-head\"], \"f79b\", \"M64 64C64 28.7 92.7 0 128 0H320c35.3 0 64 28.7 64 64v96H224 64V64zM330.2 192H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H390.3c16.3 28.2 25.7 61 25.7 96c0 59.8-27.4 113.3-70.3 148.5c-9.7 8-22.3 11.5-34.9 11.5H137.2c-12.6 0-25.1-3.5-34.9-11.5C59.4 465.3 32 411.8 32 352c0-35 9.3-67.8 25.7-96H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h85.8H330.2zM152 336a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm168-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM219.3 445.2c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l23.8-46.3c2.3-4.5 3.5-9.6 3.5-14.7c0-17.7-14.3-32.2-32-32.2s-32 14.5-32 32.2c0 5.1 1.2 10.2 3.5 14.7l23.8 46.3z\"]\n};\nvar faFrostyHead = faSnowmanHead;\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [512, 512, [], \"f0c5\", \"M272 0H396.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128H192v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z\"]\n};\nvar faBurgerGlass = {\n prefix: 'fas',\n iconName: 'burger-glass',\n icon: [640, 512, [], \"e0ce\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H272c-10-13.4-16-30-16-48c0-14.7 6.6-27.8 17-36.6c-10.5-11.4-17-26.6-17-43.4c0-18.5 7.8-35.1 20.3-46.8c-12.4-10.9-20.3-26.9-20.3-44.8c0-6.3 1-13.8 4.4-21.5c5.5-12.5 20.5-40.4 52.7-65.3c16.2-12.5 36.3-23.8 60.9-32l10-139.4c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM73.2 160L66.4 64H317.6l-6.9 96H73.2zM640 292.3c0-3-.5-5.9-1.7-8.6c-8.1-18.4-48.4-91.9-174.3-91.9s-166.2 73.5-174.3 91.9c-1.2 2.7-1.7 5.7-1.7 8.6c0 15.2 12.3 27.5 27.5 27.5H612.5c15.2 0 27.5-12.3 27.5-27.5zM384 239.8a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm64 0a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm96 0a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm-224 112c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm-16 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48c0-8.8-7.2-16-16-16H304z\"]\n};\nvar faVolumeXmark = {\n prefix: 'fas',\n iconName: 'volume-xmark',\n icon: [576, 512, [\"volume-mute\", \"volume-times\"], \"f6a9\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM425 167l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faVolumeMute = faVolumeXmark;\nvar faVolumeTimes = faVolumeXmark;\nvar faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M320 0c17.7 0 32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V128c0-17.7 14.3-32 32-32s32 14.3 32 32V323.1c-11.9 4.8-21.3 14.9-25 27.8l-8.9 31.2L478.9 391C460.6 396.3 448 413 448 432c0 18.9 12.5 35.6 30.6 40.9C448.4 497.4 409.9 512 368 512H348.8c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V32c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L288 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L288 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L320 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L320 352l-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456l-13.8 48.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456l-48.3-13.8c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408l13.8-48.3c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"]\n};\nvar faBarsFilter = {\n prefix: 'fas',\n iconName: 'bars-filter',\n icon: [448, 512, [], \"e0ad\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM288 416c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h64c17.7 0 32 14.3 32 32z\"]\n};\nvar faPaintbrushPencil = {\n prefix: 'fas',\n iconName: 'paintbrush-pencil',\n icon: [576, 512, [], \"e206\", \"M559.6 95.6c21.9-21.9 21.9-57.3 0-79.2s-57.3-21.9-79.2 0L227.7 269.1l79.2 79.2L559.6 95.6zM205 291.8c-9.3-2.5-19-3.8-29-3.8c-61.9 0-112 50.1-112 112c0 3.9 .2 7.8 .6 11.6C66.4 429.1 54.4 448 36.8 448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H176c61.9 0 112-50.1 112-112c0-10-1.3-19.8-3.8-29l.1-.1-79.2-79.2-.1 .1zm93.4-138.7L164.7 19.3c-25-25-65.5-25-90.5 0L50.7 42.7c-25 25-25 65.5 0 90.5L173.5 256c.8 0 1.7 0 2.5 0c6.2 0 12.4 .4 18.4 1.2L298.5 153.1zM320 402.5l64.6 64.6c6.7 6.7 15.1 11.6 24.2 14.2l104 29.7c8.4 2.4 17.4 .1 23.6-6.1s8.5-15.2 6.1-23.6l-29.7-104c-2.6-9.2-7.5-17.5-14.2-24.2l-75.6-75.6L318.8 381.6c.8 6 1.2 12.2 1.2 18.4c0 .8 0 1.7 0 2.5z\"]\n};\nvar faPartyBell = {\n prefix: 'fas',\n iconName: 'party-bell',\n icon: [512, 512, [], \"e31a\", \"M0 224C0 100.3 100.3 0 224 0c35.3 0 68.9 8.2 98.7 22.8C341.9 32.3 352 51.7 352 70.7c0 14.5-5.7 28.3-16 38.5L109.2 336C99 346.3 85.1 352 70.7 352c-19 0-38.4-10.1-47.8-29.3C8.2 292.9 0 259.3 0 224zM480 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM352 448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM96 480a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM359 167c9.4-9.4 24.6-9.4 33.9 0l8.3 8.3c16.7 16.7 38.6 27.2 62.1 29.8l27.4 3c13.2 1.5 22.7 13.3 21.2 26.5s-13.3 22.7-26.5 21.2l-27.4-3c-34.3-3.8-66.3-19.2-90.7-43.6L359 201c-9.4-9.4-9.4-24.6 0-33.9zM201 359l8.3 8.2c24.4 24.4 39.8 56.4 43.6 90.7l3 27.4c1.5 13.2-8 25-21.2 26.5s-25-8-26.5-21.2l-3-27.4c-2.6-23.5-13.1-45.4-29.8-62.1L167 393c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM503.5 506.3c-10.1 8.6-25.3 7.3-33.8-2.8l-8.5-10c-12.5-14.8-19.1-33.7-18.6-53c.5-16.6-12.4-30.6-29-31.6l-30-1.8c-42.5-2.5-75.3-38.3-74.2-80.8c.2-7.6-2.4-15-7.3-20.7l-8.5-10c-8.6-10.1-7.3-25.3 2.8-33.8s25.3-7.3 33.8 2.8l8.5 10c12.5 14.8 19.1 33.7 18.6 53c-.5 16.6 12.4 30.6 29 31.6l30 1.8c42.5 2.5 75.3 38.3 74.2 80.8c-.2 7.6 2.4 15 7.3 20.7l8.5 10c8.6 10.1 7.3 25.3-2.8 33.8z\"]\n};\nvar faUserVneckHair = {\n prefix: 'fas',\n iconName: 'user-vneck-hair',\n icon: [448, 512, [], \"e462\", \"M304 128v16c0 44.2-35.8 80-80 80s-80-35.8-80-80V128c0-5.5 .6-10.8 1.6-16H176c29.8 0 55.9-16.3 69.6-40.5C257.3 86.4 275.5 96 296 96h1.3c4.3 9.8 6.7 20.6 6.7 32zM96 128v16c0 70.7 57.3 128 128 128s128-57.3 128-128V128C352 57.3 294.7 0 224 0S96 57.3 96 128zm61.3 199.1c-3.2-4.3-8.4-6.7-13.7-6.2C62.9 329.7 0 398.2 0 481.3c0 17 13.8 30.7 30.7 30.7H417.3c17 0 30.7-13.8 30.7-30.7c0-83.1-62.9-151.5-143.7-160.3c-5.3-.6-10.5 1.9-13.7 6.2l-53.9 71.8c-6.4 8.5-19.2 8.5-25.6 0l-53.9-71.8z\"]\n};\nvar faJackOLantern = {\n prefix: 'fas',\n iconName: 'jack-o-lantern',\n icon: [576, 512, [127875], \"f30e\", \"M234.6 103.9C251.5 98.8 269.4 96 288 96c22.8 0 44.7 4.2 64.8 11.7c-.6-2-.8-4.1-.8-6.3V35.4c0-6.9-4.1-13.2-10.5-15.9L299.3 1.4c-2.2-.9-4.5-1.4-6.8-1.4h-1.2c-6.9 0-13.1 4.1-15.8 10.4l-40.9 93.5zm161.6 27.3c12.1 8.8 23.1 19.1 32.7 30.5c5.6 6.7-2.9 14.6-10.4 10.1C380.3 149 335.7 136 288 136s-92.3 13-130.5 35.7c-7.5 4.5-16-3.4-10.4-10.1c9.6-11.4 20.6-21.7 32.7-30.5c-.6-.1-1.2-.2-1.8-.3c-8.5-1.8-17.2-2.8-26-2.8C68.1 128 0 214 0 320S68.1 512 152 512c19.3 0 37.8-4.5 54.7-12.8c8.3-4.1 18.2-4.1 26.5 0c17 8.3 35.4 12.8 54.7 12.8s37.8-4.5 54.7-12.8c8.3-4.1 18.2-4.1 26.5 0c17 8.3 35.4 12.8 54.7 12.8c83.9 0 152-86 152-192s-68.1-192-152-192c-8.9 0-17.6 1-26 2.8c-.6 .1-1.2 .2-1.8 .3zM208 208c5.3 0 10.3 2.7 13.3 7.1l32 48c3.3 4.9 3.6 11.2 .8 16.4s-8.2 8.5-14.1 8.5H176c-5.9 0-11.3-3.2-14.1-8.5s-2.5-11.5 .8-16.4l32-48c3-4.5 8-7.1 13.3-7.1zm173.3 7.1l32 48c3.3 4.9 3.6 11.2 .8 16.4s-8.2 8.5-14.1 8.5H336c-5.9 0-11.3-3.2-14.1-8.5s-2.5-11.5 .8-16.4l32-48c3-4.5 8-7.1 13.3-7.1s10.3 2.7 13.3 7.1zM368 437.5C346.2 444 319.8 448 288 448s-58.2-4-80-10.5V416c0-8.8-7.2-16-16-16H176c-8.6 0-15.7 6.9-16 15.4c-36.9-24.7-49.9-56.7-54.1-71.4c-1.4-5 .3-10.2 4-13.8c5.8-5.8 15.1-6.6 22.2-2.4c18 10.6 55.5 29.1 107.9 36.8V384c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V368c77.6 0 132.8-26.6 155.9-40.2c7.1-4.2 16.4-3.4 22.2 2.4c3.7 3.7 5.4 8.8 4 13.8c-4.2 14.7-17.3 46.8-54.1 71.4c-.3-8.6-7.3-15.4-16-15.4H384c-8.8 0-16 7.2-16 16v21.5z\"]\n};\nvar faGrip = {\n prefix: 'fas',\n iconName: 'grip',\n icon: [448, 512, [\"grip-horizontal\"], \"f58d\", \"M128 136c0-22.1-17.9-40-40-40L40 96C17.9 96 0 113.9 0 136l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40l0-48zm0 192c0-22.1-17.9-40-40-40H40c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40H200c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40H360c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328z\"]\n};\nvar faGripHorizontal = faGrip;\nvar faShareFromSquare = {\n prefix: 'fas',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M352 224H305.5c-45 0-81.5 36.5-81.5 81.5c0 22.3 10.3 34.3 19.2 40.5c6.8 4.7 12.8 12 12.8 20.3c0 9.8-8 17.8-17.8 17.8h-2.5c-2.4 0-4.8-.4-7.1-1.4C210.8 374.8 128 333.4 128 240c0-79.5 64.5-144 144-144h80V34.7C352 15.5 367.5 0 386.7 0c8.6 0 16.8 3.2 23.2 8.9L548.1 133.3c7.6 6.8 11.9 16.5 11.9 26.7s-4.3 19.9-11.9 26.7l-139 125.1c-5.9 5.3-13.5 8.2-21.4 8.2H384c-17.7 0-32-14.3-32-32V224zM80 96c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16H400c8.8 0 16-7.2 16-16V384c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V112C0 67.8 35.8 32 80 32h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H80z\"]\n};\nvar faShareSquare = faShareFromSquare;\nvar faKeynote = {\n prefix: 'fas',\n iconName: 'keynote',\n icon: [512, 512, [], \"f66c\", \"M184 72h14.4c8.3 14.3 23.8 24 41.6 24h64c26.5 0 48-21.5 48-48s-21.5-48-48-48H240c-17.8 0-33.3 9.7-41.6 24H184c-48.6 0-88 39.4-88 88v48H80c-12.1 0-23.2 6.8-28.6 17.7l-48 96C1.2 278.1 0 283 0 288v32c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V288c0-5-1.2-9.9-3.4-14.3l-48-96C455.2 166.8 444.1 160 432 160H144V112c0-22.1 17.9-40 40-40zM160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V384H224v64H160z\"]\n};\nvar faChildCombatant = {\n prefix: 'fas',\n iconName: 'child-combatant',\n icon: [576, 512, [\"child-rifle\"], \"e4e0\", \"M176 128A64 64 0 1 0 176 0a64 64 0 1 0 0 128zm-8 352V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V300.5L260.9 321c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-51.7-82.1c-17.6-27.9-48.3-44.9-81.2-44.9H169.8c-33 0-63.7 16.9-81.2 44.9L36.9 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10L104 300.5V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM448 0H432 416c-8.8 0-16 7.2-16 16s7.2 16 16 16V132.3c-9.6 5.5-16 15.9-16 27.7v32c-17.7 0-32 14.3-32 32V368c0 17.7 14.3 32 32 32h16v96c0 8.8 7.2 16 16 16h59.5c10.4 0 18-9.8 15.5-19.9L484 400h44c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H480V325.3l53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2V208c0-8.8-7.2-16-16-16H512c-8.8 0-16 7.2-16 16v56l-16 5.3V160c0-11.8-6.4-22.2-16-27.7V16c0-8.8-7.2-16-16-16z\"]\n};\nvar faChildRifle = faChildCombatant;\nvar faGun = {\n prefix: 'fas',\n iconName: 'gun',\n icon: [576, 512, [], \"e19b\", \"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24v8H32C14.3 64 0 78.3 0 96V208c0 17.7 14.3 32 32 32H42c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480h96c14.7 0 27.5-10 31-24.2L217 352H321.4c23.7 0 44.8-14.9 52.7-37.2L400.9 240H432c8.5 0 16.6-3.4 22.6-9.4L477.3 208H544c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32H528V56zM321.4 304H229l16-64h105l-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSquarePhone = {\n prefix: 'fas',\n iconName: 'square-phone',\n icon: [448, 512, [\"phone-square\"], \"f098\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm90.7 96.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L168 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C336.9 378 329 384 320 384C196.3 384 96 283.7 96 160c0-9 6-16.9 14.7-19.3l44-12z\"]\n};\nvar faPhoneSquare = faSquarePhone;\nvar faHatBeach = {\n prefix: 'fas',\n iconName: 'hat-beach',\n icon: [640, 512, [], \"e606\", \"M320 448c176.7 0 320-57.3 320-128c0-19.3-11.8-36.7-29.7-43.9L574.9 262c.7 4.2 1.1 8.5 1.1 12.8c0 42.7-34.6 77.3-77.3 77.3c-12.2 0-24.1-2.9-34.7-8.3c-10.7 5.4-22.6 8.3-34.7 8.3c-38.6 0-70.6-28.3-76.3-65.4c-10.6 .9-21.6 1.4-32.9 1.4c-88.4 0-160-28.7-160-64v0L29.7 276.1C11.8 283.3 0 300.7 0 320c0 70.7 143.3 128 320 128zm32-242.7c0-42.7 34.6-77.3 77.3-77.3c7.1 0 14.1 1 20.9 2.9C421.1 90.4 373.6 64 320 64c-70.4 0-130.2 45.5-151.6 108.7l.1-.2C174.7 201.3 240.1 224 320 224c11.7 0 23-.5 34-1.4c-1.3-5.6-2-11.5-2-17.3zM473.1 168c-5.5 3.8-12.7 3.8-18.2 0c-7.5-5.2-16.4-8-25.7-8c-25 0-45.3 20.3-45.3 45.3c0 9.2 2.8 18.2 8 25.7c3.8 5.5 3.8 12.7 0 18.2c-5.2 7.5-8 16.4-8 25.7c0 25 20.3 45.3 45.3 45.3c9.2 0 18.2-2.8 25.7-8c5.5-3.8 12.7-3.8 18.2 0c7.5 5.2 16.4 8 25.7 8c25 0 45.3-20.3 45.3-45.3c0-9.2-2.8-18.2-8-25.7c-3.8-5.5-3.8-12.7 0-18.2c5.2-7.5 8-16.4 8-25.7c0-25-20.3-45.3-45.3-45.3c-9.2 0-18.2 2.8-25.7 8zM464 216a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [10133, 61543, \"add\"], \"2b\", \"M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z\"]\n};\nvar faAdd = faPlus;\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M32 32C14.3 32 0 46.3 0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V352zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H320zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V352z\"]\n};\nvar faComputer = {\n prefix: 'fas',\n iconName: 'computer',\n icon: [640, 512, [], \"e4e5\", \"M384 96V320H64L64 96H384zM64 32C28.7 32 0 60.7 0 96V320c0 35.3 28.7 64 64 64H181.3l-10.7 32H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H277.3l-10.7-32H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm464 0c-26.5 0-48 21.5-48 48V432c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H528zm16 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFort = {\n prefix: 'fas',\n iconName: 'fort',\n icon: [640, 512, [], \"e486\", \"M0 16C0 7.2 7.2 0 16 0H48c8.8 0 16 7.2 16 16V64H96V16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16V64h32V16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16V96v16 48H384V112 96 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16V64h32V16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16V64h32V16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16V96v16 64c0 20.9-13.4 38.7-32 45.3V464c0 26.5-21.5 48-48 48H384V384c0-35.3-28.7-64-64-64s-64 28.7-64 64V512H80c-26.5 0-48-21.5-48-48V221.3C13.4 214.7 0 196.9 0 176V112 96 16z\"]\n};\nvar faCloudCheck = {\n prefix: 'fas',\n iconName: 'cloud-check',\n icon: [640, 512, [], \"e35c\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zM433 241c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L433 241z\"]\n};\nvar faXmark = {\n prefix: 'fas',\n iconName: 'xmark',\n icon: [384, 512, [128473, 10005, 10006, 10060, 215, \"close\", \"multiply\", \"remove\", \"times\"], \"f00d\", \"M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z\"]\n};\nvar faClose = faXmark;\nvar faMultiply = faXmark;\nvar faRemove = faXmark;\nvar faTimes = faXmark;\nvar faFaceSmirking = {\n prefix: 'fas',\n iconName: 'face-smirking',\n icon: [512, 512, [], \"e397\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm96-48c0 8.8 7.2 16 16 16h32c0 17.7 14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32H112c-8.8 0-16 7.2-16 16zM375.8 338.6c1.5-8.7-4.4-17-13.2-18.4s-17 4.4-18.4 13.2l-.2 1.2c-3.2 19.3-19.9 33.4-39.5 33.4H192c-8.8 0-16 7.2-16 16s7.2 16 16 16H304.6c35.2 0 65.2-25.4 71-60.2l.2-1.2zM288 208c0 8.8 7.2 16 16 16h32c0 17.7 14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32H304c-8.8 0-16 7.2-16 16z\"]\n};\nvar faArrowsUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-up-down-left-right',\n icon: [512, 512, [\"arrows\"], \"f047\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4V224H109.3l9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4H224V402.7l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4V288H402.7l-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4H288V109.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n};\nvar faArrows = faArrowsUpDownLeftRight;\nvar faChalkboardUser = {\n prefix: 'fas',\n iconName: 'chalkboard-user',\n icon: [640, 512, [\"chalkboard-teacher\"], \"f51c\", \"M160 64c0-35.3 28.7-64 64-64H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H336.8c-11.8-25.5-29.9-47.5-52.4-64H384V320c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v32h64V64L224 64v49.1C205.2 102.2 183.3 96 160 96V64zm0 64a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM133.3 352h53.3C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7H26.7C11.9 512 0 500.1 0 485.3C0 411.7 59.7 352 133.3 352z\"]\n};\nvar faChalkboardTeacher = faChalkboardUser;\nvar faRhombus = {\n prefix: 'fas',\n iconName: 'rhombus',\n icon: [448, 512, [], \"e23b\", \"M254.4 14.1C246.8 5.1 235.7 0 224 0s-22.8 5.1-30.4 14.1l-184 216C-3.2 245-3.2 267 9.6 281.9l184 216c7.6 8.9 18.7 14.1 30.4 14.1s22.8-5.1 30.4-14.1l184-216c12.7-14.9 12.7-36.9 0-51.9l-184-216z\"]\n};\nvar faClawMarks = {\n prefix: 'fas',\n iconName: 'claw-marks',\n icon: [576, 512, [], \"f6c2\", \"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4l96 96 64 64 160 160 64 64 64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L434.7 448H384c-17.7 0-32-14.3-32-32V365.3L210.7 224H160c-17.7 0-32-14.3-32-32V141.3L41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm0 224c12.5-12.5 32.8-12.5 45.3 0l64 64 96 96 64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L210.7 448H128c-17.7 0-32-14.3-32-32V333.3L41.4 278.6c-12.5-12.5-12.5-32.8 0-45.3zM310.6 9.4l32 32 64 64 64 64 64 64 32 32c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L498.7 288H448c-17.7 0-32-14.3-32-32V205.3L370.7 160H320c-17.7 0-32-14.3-32-32V77.3L265.4 54.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nvar faPesoSign = {\n prefix: 'fas',\n iconName: 'peso-sign',\n icon: [384, 512, [], \"e222\", \"M64 32C46.3 32 32 46.3 32 64v64c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c68.4 0 127.7-39 156.8-96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.7c.5-5.3 .7-10.6 .7-16s-.2-10.7-.7-16h.7c17.7 0 32-14.3 32-32s-14.3-32-32-32H332.8C303.7 71 244.4 32 176 32H64zm190.4 96H96V96h80c30.5 0 58.2 12.2 78.4 32zM96 192H286.9c.7 5.2 1.1 10.6 1.1 16s-.4 10.8-1.1 16H96V192zm158.4 96c-20.2 19.8-47.9 32-78.4 32H96V288H254.4z\"]\n};\nvar faFaceSmileTongue = {\n prefix: 'fas',\n iconName: 'face-smile-tongue',\n icon: [512, 512, [], \"e394\", \"M503.4 322c5.6-21.1 8.6-43.2 8.6-66C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c61.5 0 118-21.7 162.1-57.9c-2.8-1.2-5.5-2.7-8.2-4.2l-68.1-40.4C316.3 423.8 287.1 432 256 432c-84.1 0-154-59.7-175.5-139.9c-2.3-8.5 2.8-17.3 11.3-19.6s17.3 2.8 19.6 11.3C129.5 351.5 187.9 400 256 400s126.5-48.5 144.5-116.1c2.3-8.5 11.1-13.6 19.6-11.3c1.5 .4 2.9 1 4.2 1.8l65.4 37.8c5 2.9 9.6 6.2 13.7 10zM370.6 389.3l55.7 33.1c22.6 13.4 51.8 5.8 65-17c13.3-23 5.4-52.3-17.6-65.6l-48.6-28.1c-11.7 30.4-30.5 57.1-54.5 77.6zm-153-160.5l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faCartCircleXmark = {\n prefix: 'fas',\n iconName: 'cart-circle-xmark',\n icon: [640, 512, [], \"e3f4\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H76.1l60.3 316.5c2.2 11.3 12.1 19.5 23.6 19.5H320.7c-.5-5.3-.7-10.6-.7-16c0-10.9 1-21.6 2.9-32h-143l-9.1-48H339.2c29.1-57 88.4-96 156.8-96c14.3 0 28.3 1.7 41.6 4.9l35-124.3C578.3 52.3 563 32 541.8 32H122l-2.4-12.5C117.4 8.2 107.5 0 96 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm320 0a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faBuildingShield = {\n prefix: 'fas',\n iconName: 'building-shield',\n icon: [576, 512, [], \"e4d8\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V207l-42.4 17H304 272c-8.8 0-16 7.2-16 16v32 24.2V304c0 .9 .1 1.7 .2 2.6c2.3 58.1 24.1 144.8 98.7 201.5c-5.8 2.5-12.2 3.9-18.9 3.9H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zM423.1 225.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faCirclePhoneFlip = {\n prefix: 'fas',\n iconName: 'circle-phone-flip',\n icon: [512, 512, [\"phone-circle-alt\"], \"e11c\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zm69.3 128.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L312 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C143.1 378 151 384 160 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z\"]\n};\nvar faPhoneCircleAlt = faCirclePhoneFlip;\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [448, 512, [], \"f77c\", \"M152 88a72 72 0 1 1 144 0A72 72 0 1 1 152 88zM39.7 144.5c13-17.9 38-21.8 55.9-8.8L131.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25V288H128V251.7c-15.2-6.7-29.7-15.1-43.3-25L48.5 200.3c-17.9-13-21.8-38-8.8-55.9zm89.8 184.8l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C70 438.6 68.1 417 79.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L284 419.4l-26-37.2z\"]\n};\nvar faUsersLine = {\n prefix: 'fas',\n iconName: 'users-line',\n icon: [640, 512, [], \"e592\", \"M211.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM32 256c0 17.7 14.3 32 32 32h85.6c10.1-39.4 38.6-71.5 75.8-86.6c-9.7-6-21.2-9.4-33.4-9.4H96c-35.3 0-64 28.7-64 64zm461.6 32H576c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H448c-11.7 0-22.7 3.1-32.1 8.6c38.1 14.8 67.4 47.3 77.7 87.4zM391.2 226.4c-6.9-1.6-14.2-2.4-21.6-2.4h-96c-8.5 0-16.7 1.1-24.5 3.1c-30.8 8.1-55.6 31.1-66.1 60.9c-3.5 10-5.5 20.8-5.5 32c0 17.7 14.3 32 32 32h224c17.7 0 32-14.3 32-32c0-11.2-1.9-22-5.5-32c-10.8-30.7-36.8-54.2-68.9-61.6zM563.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM321.6 192a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [448, 512, [8220, \"quote-left-alt\"], \"f10d\", \"M0 216C0 149.7 53.7 96 120 96h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320 288 216zm256 0c0-66.3 53.7-120 120-120h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H320c-35.3 0-64-28.7-64-64V320 288 216z\"]\n};\nvar faQuoteLeftAlt = faQuoteLeft;\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [128668], \"f722\", \"M96 64c0-35.3 28.7-64 64-64H266.3c26.2 0 49.7 15.9 59.4 40.2L373.7 160H480V126.2c0-24.8 5.8-49.3 16.9-71.6l2.5-5c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.5 5c-6.7 13.3-10.1 28-10.1 42.9V160h56c22.1 0 40 17.9 40 40v45.4c0 16.5-8.5 31.9-22.6 40.7l-43.3 27.1c-14.2-5.9-29.8-9.2-46.1-9.2c-39.3 0-74.1 18.9-96 48H352c0 17.7-14.3 32-32 32h-8.2c-1.7 4.8-3.7 9.5-5.8 14.1l5.8 5.8c12.5 12.5 12.5 32.8 0 45.3l-22.6 22.6c-12.5 12.5-32.8 12.5-45.3 0l-5.8-5.8c-4.6 2.2-9.3 4.1-14.1 5.8V480c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32v-8.2c-4.8-1.7-9.5-3.7-14.1-5.8l-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1H32c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h8.2c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6V192 160 64zm170.3 0H160v96h32H304.7L266.3 64zM176 256a80 80 0 1 0 0 160 80 80 0 1 0 0-160zM528 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z\"]\n};\nvar faKeySkeleton = {\n prefix: 'fas',\n iconName: 'key-skeleton',\n icon: [448, 512, [128477], \"f6f3\", \"M304 64a80 80 0 1 1 0 160 80 80 0 1 1 0-160zm0 224c79.5 0 144-64.5 144-144S383.5 0 304 0S160 64.5 160 144c0 28.2 8.1 54.5 22.1 76.7L9.4 393.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 416 96 397.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L141.3 352l86.1-86.1c22.2 14 48.5 22.1 76.7 22.1z\"]\n};\nvar faTrashArrowUp = {\n prefix: 'fas',\n iconName: 'trash-arrow-up',\n icon: [448, 512, [\"trash-restore\"], \"f829\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestore = faTrashArrowUp;\nvar faArrowDownUpLock = {\n prefix: 'fas',\n iconName: 'arrow-down-up-lock',\n icon: [640, 512, [], \"e4b0\", \"M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7V288H416V272c0-17.2 3.9-33.5 10.8-48H352V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3V224l-128 0H96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32H96V402.7L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0zM160 192V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64zM288 320V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H288zm240-80c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faArrowDownToBracket = {\n prefix: 'fas',\n iconName: 'arrow-down-to-bracket',\n icon: [448, 512, [], \"e094\", \"M374.6 214.6l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 242.7V32c0-17.7 14.3-32 32-32s32 14.3 32 32V242.7l73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM64 352v64c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V352c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 53-43 96-96 96H96c-53 0-96-43-96-96V352c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faLinesLeaning = {\n prefix: 'fas',\n iconName: 'lines-leaning',\n icon: [384, 512, [], \"e51e\", \"M190.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM352 32c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faSquareQ = {\n prefix: 'fas',\n iconName: 'square-q',\n icon: [448, 512, [], \"e27b\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 224c0 44.2 35.8 80 80 80c13.4 0 25.9-3.3 37-9.1l-30-30c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l30 30c5.8-11.1 9.1-23.7 9.1-37c0-44.2-35.8-80-80-80s-80 35.8-80 80zm208 0c0 26.7-8.2 51.4-22.1 71.9L345 343c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15.1-15.1c-20.5 14-45.3 22.1-71.9 22.1c-70.7 0-128-57.3-128-128s57.3-128 128-128s128 57.3 128 128z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M.2 468.9C2.7 493.1 23.1 512 48 512l96 0 320 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-48c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 368l0 96c0 1.7 .1 3.3 .2 4.9z\"]\n};\nvar faSymbols = {\n prefix: 'fas',\n iconName: 'symbols',\n icon: [512, 512, [128291, \"icons-alt\"], \"f86e\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32V176c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V71L352 90.2V208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V64c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM32 0H192c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 64 0 49.7 0 32S14.3 0 32 0zM502.6 342.6l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM0 128c0-17.7 14.3-32 32-32h80 80c17.7 0 32 14.3 32 32s-14.3 32-32 32H144v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V160H32c-17.7 0-32-14.3-32-32zM288 328a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM472 432a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM135.6 374l10.3 10.8 23.5-23.5c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-24.7 24.7L215.2 458c12.2 12.8 11.6 33.1-1.2 45.2s-33.1 11.6-45.2-1.2l-24.1-25.4-12.8 12.8C117.4 503.9 97.7 512 77.3 512C34.6 512 0 477.4 0 434.7v-.9c0-19.4 7.2-38.2 20.3-52.6l13.1-14.4C22.5 354.3 16 337.9 16 320c0-39.8 32.2-72 72-72s72 32.2 72 72c0 21.5-9.4 40.8-24.4 54zm-68 50.3c-2.4 2.6-3.7 6-3.7 9.5v.9c0 7.3 5.9 13.3 13.3 13.3c3.5 0 6.9-1.4 9.4-3.9l14-14L81.1 409.5 67.7 424.3zM104 320a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faIconsAlt = faSymbols;\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z\"]\n};\nvar faFlaskGear = {\n prefix: 'fas',\n iconName: 'flask-gear',\n icon: [640, 512, [], \"e5f1\", \"M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c10.6 0 20.7-2.4 29.7-6.6c-2.8-6.2-4.2-12.9-4.2-19.7v-.9c-17.6 9.7-41.5 8.1-57.2-8.7c-9.2-9.9-17.4-20.9-24.4-33s-12.5-24.7-16.4-37.6c-6.7-21.6 3.4-42.7 20-53.3l-.2-.2h-207L173 263.9c12.4-20.2 19-43.4 19-67.1V64h64V196.8c0 23.7 6.6 46.9 19 67.1L304 311c.1-4 .8-8.1 2-12.2c4-12.9 9.4-25.5 16.4-37.6c4.1-7.1 8.7-13.9 13.6-20.3l-6.5-10.6c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM436 218.2v17.4c0 7.9-4.9 15-11.7 18.9c-6.8 3.9-15.2 4.5-22 .6l-13.6-7.8c-6.1-3.5-13.7-2.7-18.5 2.4c-7.5 8.1-14.3 17.2-20.1 27.2s-10.3 20.4-13.5 31c-2.1 6.7 1.1 13.7 7.2 17.2l14 8.1c6.5 3.8 10.1 11 10.1 18.6s-3.5 14.8-10.1 18.6l-14 8.1c-6.1 3.5-9.2 10.5-7.2 17.2c3.3 10.6 7.8 21 13.5 31s12.5 19.1 20.1 27.2c4.8 5.1 12.5 5.9 18.5 2.4l13.5-7.8c6.8-3.9 15.2-3.3 22 .6c6.9 3.9 11.7 11 11.7 18.9v17.4c0 7 4.5 13.3 11.3 14.8c10.5 2.4 21.5 3.7 32.7 3.7s22.2-1.3 32.7-3.7c6.8-1.5 11.3-7.8 11.3-14.8V467.5c0-7.8 4.8-14.8 11.6-18.7c6.7-3.9 15.1-4.5 21.8-.6l13.8 7.9c6.1 3.5 13.7 2.7 18.5-2.4c7.6-8.1 14.3-17.2 20.1-27.2s10.3-20.4 13.5-31c2.1-6.7-1.1-13.7-7.2-17.2l-14.4-8.3c-6.5-3.7-10-10.9-10-18.4s3.5-14.7 10-18.4l14.4-8.3c6.1-3.5 9.2-10.5 7.2-17.2c-3.3-10.6-7.8-21-13.5-31s-12.5-19.1-20.1-27.2c-4.8-5.1-12.5-5.9-18.5-2.4l-13.8 7.9c-6.7 3.9-15.1 3.3-21.8-.6c-6.8-3.9-11.6-10.9-11.6-18.7V218.2c0-7-4.5-13.3-11.3-14.8c-10.5-2.4-21.5-3.7-32.7-3.7s-22.2 1.3-32.7 3.7c-6.8 1.5-11.3 7.8-11.3 14.8zm-4.1 133.5a48.1 48.1 0 1 1 96.1 0 48.1 48.1 0 1 1 -96.1 0z\"]\n};\nvar faHighlighterLine = {\n prefix: 'fas',\n iconName: 'highlighter-line',\n icon: [576, 512, [], \"e1af\", \"M229 229l215-158.4 29.3 29.3L315 315 229 229zM128 320l0 0-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3l50.7 50.7c12.5 12.5 32.8 12.5 45.3 0L224 416h71.7c15.3 0 29.6-7.2 38.6-19.5L535.6 123.4c5.5-7.4 8.4-16.4 8.4-25.6c0-11.4-4.5-22.4-12.6-30.5L476.6 12.6C468.5 4.5 457.6 0 446.2 0C437 0 428 2.9 420.6 8.4L147.5 209.6c-12.3 9-19.5 23.4-19.5 38.6V320zM70.1 403.3l-63 63c-4.5 4.5-7 10.6-7 17V488c0 13.3 10.7 24 24 24H92.7c6.4 0 12.5-2.5 17-7l31-31L70.1 403.3zM224 464c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24H224z\"]\n};\nvar faBracketSquare = {\n prefix: 'fas',\n iconName: 'bracket-square',\n icon: [192, 512, [\"bracket\", \"bracket-left\"], \"5b\", \"M0 96C0 60.7 28.7 32 64 32h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H64V416h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-35.3 0-64-28.7-64-64V96z\"]\n};\nvar faBracket = faBracketSquare;\nvar faBracketLeft = faBracketSquare;\nvar faIslandTropical = {\n prefix: 'fas',\n iconName: 'island-tropical',\n icon: [512, 512, [127965, \"island-tree-palm\"], \"f811\", \"M114.3 93.7c-1.5 1.5-3.5 2.3-5.7 2.3H78.2c-8.8 0-16.1-7.2-13.8-15.8C73.6 44.8 112.8 0 190.2 0c58.4 0 95 25.5 113.5 53.2C323.6 40.6 350.2 32 384 32c77.4 0 116.6 44.8 125.8 80.2c2.2 8.6-5 15.8-13.8 15.8H451.3c-2.1 0-4.2-.8-5.7-2.3l-24-24c-3.1-3.1-8.2-3.1-11.3 0l-24 24c-1.5 1.5-3.5 2.3-5.7 2.3H301.5c28 79.9 21.2 170.2 9.9 226.1C370.9 365.1 416 417.3 416 480c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32c0-70.7 57.3-128 128-128h64c29.7-79.3 29.4-150.9 22.8-194l-87.6 87.6c-6.2 6.2-16.5 6.2-21-1.4c-18.5-31.6-22.5-90.9 32.3-145.7c1.4-1.4 2.8-2.7 4.1-4c-.3-.3-.7-.5-1-.8l-24-24c-3.1-3.1-8.2-3.1-11.3 0l-24 24z\"]\n};\nvar faIslandTreePalm = faIslandTropical;\nvar faArrowRightFromLine = {\n prefix: 'fas',\n iconName: 'arrow-right-from-line',\n icon: [448, 512, [8614, \"arrow-from-left\"], \"f343\", \"M64 96c0-17.7-14.3-32-32-32S0 78.3 0 96V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96zM438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 224 160 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l178.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faArrowFromLeft = faArrowRightFromLine;\nvar faH2 = {\n prefix: 'fas',\n iconName: 'h2',\n icon: [640, 512, [], \"f314\", \"M64 96c0-17.7-14.3-32-32-32S0 78.3 0 96V256 416c0 17.7 14.3 32 32 32s32-14.3 32-32V288H256V416c0 17.7 14.3 32 32 32s32-14.3 32-32V256 96c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H64V96zm385.9 47.4c11.6-9.9 26.4-15.4 41.7-15.4H496c35.3 0 64 28.7 64 64v5.8c0 17.9-7.5 35.1-20.8 47.2L378.4 392.4c-9.7 8.9-13 22.9-8.2 35.2S386.8 448 400 448H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H482.3l100.2-91.9c26.4-24.2 41.5-58.5 41.5-94.4V192c0-70.7-57.3-128-128-128h-4.5c-30.6 0-60.1 10.9-83.3 30.8l-29 24.9c-13.4 11.5-15 31.7-3.5 45.1s31.7 15 45.1 3.5l29-24.9z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [62764], \"3d\", \"M48 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48z\"]\n};\nvar faCakeSlice = {\n prefix: 'fas',\n iconName: 'cake-slice',\n icon: [512, 512, [127856, \"shortcake\"], \"e3e5\", \"M276.2 38.9c5.6-4.4 12.6-6.9 19.8-6.9c44.3 0 97.6 19.2 139.9 55.8C479.2 125.2 512 181.7 512 256v.5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .2 .3 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2c0 35.4-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V272c0-9.8 4.5-19.1 12.2-25.1l264-208zM448 288H64v48H448v-.1-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.4-.4V330v-.4-.4V329v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V325v-.4-.4V324v-.4-.4-.4-.4-.4-.4-.4V321v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V312v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V307v-.4-.4-.4-.4V305v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V297v-.4-.4-.4-.4V295v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V290v-.4-.4-.4-.4V288zM64 416H448v-.2-.2-.2-.2-.2V415v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V413v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V411v-.2-.2-.2-.2V410v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V406v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V401v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V398v-.2-.2-.2-.2-.2-.2-.2-.2V396v-.2-.2-.2-.2-.2-.2-.2-.2V394v-.2-.2-.2V393v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V390v-.2-.2-.2V389v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.3-.2-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V379v-.3-.3-.3V378v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V374v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V371v-.3-.3-.3-.3-.3-.3V369v-.3-.3-.3V368H64v48z\"]\n};\nvar faShortcake = faCakeSlice;\nvar faPeanut = {\n prefix: 'fas',\n iconName: 'peanut',\n icon: [512, 512, [], \"e430\", \"M432 0H364c-20.1 0-39.2 4-56.7 11.2c-17.4 7.2-33.7 17.8-47.8 32l-.4 .4C245 57.8 234.4 74 227.2 91.4c-4 9.5-6.9 19.6-8.8 30c-4.8 24.5-12.6 49.1-30.3 66.7s-42.2 25.4-66.7 30.3c-10.4 1.9-20.5 4.9-30 8.8c-17.5 7.2-33.9 17.9-48.1 32.1c-14.2 14.2-24.9 30.5-32.1 48C4 324.8 0 343.9 0 364v68c0 44.2 35.8 80 80 80h68c40.5 0 77.1-16.2 103.8-42.5c.6-.6 1.1-1.1 1.7-1.7c13.8-14 24.2-30.1 31.3-47.2c4-9.5 6.9-19.6 8.8-30c4.8-24.5 12.6-49.1 30.3-66.7s42.2-25.4 66.7-30.3c10.4-1.9 20.5-4.9 30-8.8c17.3-7.2 33.5-17.7 47.6-31.7l.9-.9C495.6 225.4 512 188.6 512 148V80c0-44.2-35.8-80-80-80zM396.8 128a19.2 19.2 0 1 1 38.4 0 19.2 19.2 0 1 1 -38.4 0zm0 64a19.2 19.2 0 1 1 38.4 0 19.2 19.2 0 1 1 -38.4 0zm-64 0a19.2 19.2 0 1 1 38.4 0 19.2 19.2 0 1 1 -38.4 0zm-224 224a19.2 19.2 0 1 1 38.4 0 19.2 19.2 0 1 1 -38.4 0zM192 396.8a19.2 19.2 0 1 1 0 38.4 19.2 19.2 0 1 1 0-38.4zm0-64a19.2 19.2 0 1 1 0 38.4 19.2 19.2 0 1 1 0-38.4z\"]\n};\nvar faWrenchSimple = {\n prefix: 'fas',\n iconName: 'wrench-simple',\n icon: [384, 512, [], \"e2d1\", \"M132.7 164.7l48 48c6.2 6.2 16.4 6.2 22.6 0l48-48c3-3 4.7-7.1 4.7-11.3V17.6c0-11 10.9-18.7 20.8-13.8C340.3 35 384 100.4 384 176c0 71.1-38.6 133.1-96 166.3V464c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V342.3C38.6 309.1 0 247.1 0 176C0 100.4 43.7 35 107.2 3.7C117.1-1.2 128 6.5 128 17.6V153.4c0 4.2 1.7 8.3 4.7 11.3z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M0 64C0 28.7 28.7 0 64 0h64 32H470.1c21.1 0 36.4 20.1 30.9 40.4L494.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.8l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H459.6l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L416 352H160l-8.7-96H64c-35.3 0-64-28.7-64-64V64zM145.5 192L133.8 64H64V192h81.5zM144 384H432c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [576, 512, [], \"f62e\", \"M0 128C0 75 43 32 96 32H480c53 0 96 43 96 96V384c0 53-43 96-96 96H96c-53 0-96-43-96-96V128zm176 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48s-48 21.5-48 48zm176-48c-26.5 0-48 21.5-48 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48zM48 208v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zM96 384c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H72c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-48c0 26.5 21.5 48 48 48s48-21.5 48-48V312c0-13.3-10.7-24-24-24H200c-13.3 0-24 10.7-24 24v24zm176 48c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H328c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-176v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zm48 176c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H456c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48z\"]\n};\nvar faTally2 = {\n prefix: 'fas',\n iconName: 'tally-2',\n icon: [640, 512, [], \"e295\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [8362, \"ils\", \"shekel\", \"sheqel\", \"sheqel-sign\"], \"f20b\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H192c35.3 0 64 28.7 64 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-70.7-57.3-128-128-128H32zM320 480c70.7 0 128-57.3 128-128V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 35.3-28.7 64-64 64H192V192c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32H320z\"]\n};\nvar faIls = faShekelSign;\nvar faShekel = faShekelSign;\nvar faSheqel = faShekelSign;\nvar faSheqelSign = faShekelSign;\nvar faCars = {\n prefix: 'fas',\n iconName: 'cars',\n icon: [640, 512, [], \"f85b\", \"M123.4 74.9c2.2-6.5 8.3-10.9 15.2-10.9H277.4c6.9 0 13 4.4 15.2 10.9L310.3 128H105.7l17.7-53.1zM36.1 134.4C14.8 144.7 0 166.6 0 192v96H0v32c0 17.7 14.3 32 32 32H48c17.7 0 32-14.3 32-32V288H216.5c5.1-5.7 10.8-10.7 17.1-15.1l22.8-68.3c15.2-45.7 58-76.6 106.3-76.6h15.1L353.3 54.7C342.4 22 311.8 0 277.4 0H138.6c-34.4 0-65 22-75.9 54.7L36.1 134.4zM56 208a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm306.6 16H501.4c6.9 0 13 4.4 15.2 10.9L534.3 288H329.7l17.7-53.1c2.2-6.5 8.3-10.9 15.2-10.9zm-75.9-9.3l-26.6 79.7C238.8 304.7 224 326.6 224 352v96h0v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448H560v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32l0-32V352c0-25.4-14.8-47.3-36.1-57.6l-26.6-79.7C566.4 182 535.8 160 501.4 160H362.6c-34.4 0-65 22-75.9 54.7zM304 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faAxeBattle = {\n prefix: 'fas',\n iconName: 'axe-battle',\n icon: [512, 512, [], \"f6b3\", \"M95.9 14l0 .1c0 .1 .1 .4 .1 .7c.1 .7 .3 1.8 .6 3.3c.6 3 1.7 7.4 3.5 12.8c3.6 10.8 9.9 25.1 20.6 39.5c13.9 18.6 36 37.9 71.2 48.8V266.8c-29.9 11.1-50.9 29.3-65.6 47.3c-11.9 14.6-19.7 29.3-24.5 40.3c-2.4 5.5-4 10-5.1 13.1c-.5 1.5-.9 2.7-1.1 3.5l-.2 .8 0 .1 0 0c-1.5 5.8-6.1 10.3-11.9 11.7s-12-.7-15.8-5.3L80 368c-12.2 10.3-12.2 10.3-12.2 10.3l0 0 0 0-.1-.1-.2-.2-.6-.8c-.5-.7-1.3-1.6-2.3-2.9c-1.9-2.5-4.6-6.1-7.7-10.6c-6.3-9.2-14.7-22.4-23.1-38.9C17 291.9 0 245.3 0 192S17 92.1 33.7 59.3c8.4-16.5 16.8-29.7 23.1-38.9c3.2-4.6 5.8-8.2 7.7-10.6c1-1.2 1.7-2.2 2.3-2.9l.6-.8 .2-.2 .1-.1 0 0 0 0s0 0 12.2 10.3L67.8 5.7c4.1-4.9 10.7-6.8 16.8-5c6.1 1.8 10.5 7 11.3 13.3l0 0zM320 266.8V119.2c35.2-10.9 57.3-30.2 71.2-48.8C403.3 54.3 412.8 34 416.1 14c.8-6.3 5.3-11.5 11.3-13.3c6.1-1.8 12.8 .3 16.9 5.2c13.3 16.3 24.4 34.8 33.9 53.4c12.4 24.5 25.1 56.6 30.7 93.4c.5 3.5-1.4 7-4.7 8.4l-55.1 23.6c-6.5 2.8-6.5 11.9 0 14.7L504.3 223c3.3 1.4 5.3 4.8 4.7 8.4c-8 53-31.3 105.5-64.5 146.6c-3.9 4.6-10.3 7-16.1 5.6s-10.5-6-11.9-11.8c-5.9-21-17.2-40.9-30.9-57.7c-14.7-18-35.7-36.2-65.6-47.3zM288 64V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faUserHairLong = {\n prefix: 'fas',\n iconName: 'user-hair-long',\n icon: [448, 512, [], \"e45b\", \"M304 128c0-11.4-2.4-22.2-6.7-32H296c-20.5 0-38.7-9.6-50.4-24.5C231.9 95.7 205.8 112 176 112H145.6c-1 5.2-1.6 10.5-1.6 16v16c0 44.2 35.8 80 80 80s80-35.8 80-80V128zM96 128C96 57.3 153.3 0 224 0s128 57.3 128 128v11c0 33.9 13.5 66.5 37.5 90.5l3.9 3.9c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H224 70.6C58.1 272 48 261.9 48 249.4c0-6 2.4-11.8 6.6-16l3.9-3.9c24-24 37.5-56.6 37.5-90.5V128zm65.3 192H286.7C375.8 320 448 392.2 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3C0 392.2 72.2 320 161.3 320z\"]\n};\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M384 476.1L192 421.2V35.9L384 90.8V476.1zm32-1.2V88.4L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3V394.6c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2V423.6L32.9 474.5C17.1 480.8 0 469.2 0 452.2V117.4c0-9.8 6-18.6 15.1-22.3z\"]\n};\nvar faFileCircleInfo = {\n prefix: 'fas',\n iconName: 'file-circle-info',\n icon: [576, 512, [58604], \"e493\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 96a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-32 48c0 8.8 7.2 16 16 16h0v48h0c-8.8 0-16 7.2-16 16s7.2 16 16 16h16 16c8.8 0 16-7.2 16-16s-7.2-16-16-16V368c0-8.8-7.2-16-16-16H416c-8.8 0-16 7.2-16 16z\"]\n};\nvar faFaceDisappointed = {\n prefix: 'fas',\n iconName: 'face-disappointed',\n icon: [512, 512, [], \"e36f\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm60.1-101.3c-11.7-13-31.6-26.7-60.1-26.7s-48.4 13.7-60.1 26.7c-5.9 6.6-16 7.1-22.6 1.2s-7.1-16-1.2-22.6C188.2 371.4 216.3 352 256 352s67.8 19.4 83.9 37.3c5.9 6.6 5.4 16.7-1.2 22.6s-16.7 5.4-22.6-1.2zM211.3 267.3l-7.4 7.4c-23.6 23.6-53.9 39.2-86.8 44.7l-2.5 .4c-8.7 1.5-17-4.4-18.4-13.2s4.4-17 13.2-18.4l2.5-.4c26.3-4.4 50.6-16.9 69.5-35.7l7.4-7.4c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm89.4 0c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l7.4 7.4c18.9 18.9 43.2 31.4 69.5 35.7l2.5 .4c8.7 1.5 14.6 9.7 13.2 18.4s-9.7 14.6-18.4 13.2l-2.5-.4c-32.9-5.5-63.3-21.1-86.8-44.7l-7.4-7.4z\"]\n};\nvar faLassoSparkles = {\n prefix: 'fas',\n iconName: 'lasso-sparkles',\n icon: [576, 512, [], \"e1c9\", \"M290.7 0L288 0C128.9 0 0 78.8 0 176c0 57.2 44.7 108.1 113.9 140.2l-.2 .4L160.5 340c19.3 9.7 31.5 29.4 31.5 51c0 31.5-25.5 57-57 57H64c-17.7 0-32 14.3-32 32s14.3 32 32 32h71c66.8 0 121-54.2 121-121c0-14.1-2.4-27.8-7-40.6c12.8 1.1 25.8 1.6 39 1.6c159.1 0 288-78.8 288-176c0-76.4-79.6-141.4-191-165.8l5.6 15.1 26 9.6C435.5 42 448 59.9 448 80c0 5.6-1 11.1-2.8 16.2C486.4 116.5 512 144.8 512 176c0 61.9-100.3 112-224 112S64 237.9 64 176c0-51 68.2-94 161.4-107.6c3.8-15.2 14.8-27.9 29.9-33.4l26-9.6L290.7 0zM351 10.4C348.7 4.2 342.7 0 336 0s-12.7 4.2-15 10.4L306.3 50.3 266.4 65c-6.3 2.3-10.4 8.3-10.4 15s4.2 12.7 10.4 15l39.8 14.7L321 149.6c2.3 6.3 8.3 10.4 15 10.4s12.7-4.2 15-10.4l14.7-39.8L405.6 95c6.3-2.3 10.4-8.3 10.4-15s-4.2-12.7-10.4-15L365.7 50.3 351 10.4zM496 352c-6.7 0-12.7 4.2-15 10.4l-14.7 39.8L426.4 417c-6.3 2.3-10.4 8.3-10.4 15s4.2 12.7 10.4 15l39.8 14.7L481 501.6c2.3 6.3 8.3 10.4 15 10.4s12.7-4.2 15-10.4l14.7-39.8L565.6 447c6.3-2.3 10.4-8.3 10.4-15s-4.2-12.7-10.4-15l-39.8-14.7L511 362.4c-2.3-6.3-8.3-10.4-15-10.4z\"]\n};\nvar faClockEleven = {\n prefix: 'fas',\n iconName: 'clock-eleven',\n icon: [512, 512, [], \"e347\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120v56.7l-20-30c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l64 96c5.9 8.8 16.8 12.7 26.9 9.7s17-12.4 17-23V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2v82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9V380.8c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faSirenOn = {\n prefix: 'fas',\n iconName: 'siren-on',\n icon: [640, 512, [], \"e02e\", \"M69.3 36l48 32c11 7.4 14 22.3 6.7 33.3s-22.3 14-33.3 6.7l-48-32c-11-7.4-14-22.3-6.7-33.3s22.3-14 33.3-6.7zM597.3 76l-48 32c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l48-32c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3zM24 192H88c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm528 0h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552c-13.3 0-24-10.7-24-24s10.7-24 24-24zM144 352l25-199.9c4-32 31.2-56.1 63.5-56.1h175c32.3 0 59.5 24 63.5 56.1L496 352H234.1l21.8-174c1.1-8.8-5.1-16.8-13.9-17.9s-16.8 5.1-17.9 13.9L201.9 352H144zM96 416c0-17.7 14.3-32 32-32H512c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V416z\"]\n};\nvar faClockTen = {\n prefix: 'fas',\n iconName: 'clock-ten',\n icon: [512, 512, [], \"e354\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120v91.2L173.3 172c-11-7.4-25.9-4.4-33.3 6.7s-4.4 25.9 6.7 33.3l96 64c7.4 4.9 16.8 5.4 24.6 1.2S280 264.9 280 256V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faCandleHolder = {\n prefix: 'fas',\n iconName: 'candle-holder',\n icon: [448, 512, [128367], \"f6bc\", \"M160 192c-44.2 0-80-35.8-80-80c0-39.6 49.1-90.1 66.2-106.6C149.9 1.9 154.8 0 160 0s10.1 1.9 13.8 5.4C190.9 21.9 240 72.4 240 112c0 44.2-35.8 80-80 80zm-32 32v48c0 8.8 7.2 16 16 16s16-7.2 16-16V224h64c17.7 0 32 14.3 32 32V464h52.1c-2.7-7.5-4.1-15.6-4.1-24c0-39.8 32.2-72 72-72s72 32.2 72 72s-32.2 72-72 72H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H64V256c0-17.7 14.3-32 32-32h32zM400 440a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faVideoArrowDownLeft = {\n prefix: 'fas',\n iconName: 'video-arrow-down-left',\n icon: [576, 512, [], \"e2c8\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm512 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L416 174.9V192 320v17.1l14.2 9.5 96 64c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128zM232 352H120c-13.3 0-24-10.7-24-24V216c0-13.3 10.7-24 24-24s24 10.7 24 24v54.1L247 167c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-103 103H232c13.3 0 24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faPhotoFilm = {\n prefix: 'fas',\n iconName: 'photo-film',\n icon: [640, 512, [\"photo-video\"], \"f87c\", \"M256 0H576c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H256c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h80 48H552c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 128h96V384v32c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V384H512v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V312c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H72zm336 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H424c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPhotoVideo = faPhotoFilm;\nvar faFloppyDiskCircleArrowRight = {\n prefix: 'fas',\n iconName: 'floppy-disk-circle-arrow-right',\n icon: [576, 512, [\"save-circle-arrow-right\"], \"e180\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H296.2c-17.6-21.4-30.3-46.9-36.3-75c-10.2 6.9-22.6 11-35.9 11c-35.3 0-64-28.7-64-64s28.7-64 64-64c16.8 0 32.1 6.5 43.6 17.1C292.9 239 357 192 432 192c5.4 0 10.7 .2 16 .7V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM428.7 300.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L457.4 384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h89.4l-28.7-28.7c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faSaveCircleArrowRight = faFloppyDiskCircleArrowRight;\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM184 272c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faPlanetMoon = {\n prefix: 'fas',\n iconName: 'planet-moon',\n icon: [576, 512, [], \"e01f\", \"M512 0a64 64 0 1 1 0 128A64 64 0 1 1 512 0zM0 288a224 224 0 1 1 448 0A224 224 0 1 1 0 288zM236.2 112.4c-4-.3-8.1-.4-12.2-.4c-76.2 0-141.1 48.4-165.6 116.2C53.3 242.3 64.7 256 79.7 256h28.4c12.7 0 24.9 5.1 33.9 14.1L185 313c4.5 4.5 7 10.6 7 17V352c0 9.2 3.9 17.6 10.2 23.4l1.9 1.8c9.3 8.6 19.9 18.4 19.9 30.8v23c0 13.8 11.2 25 25 25c9.2 0 17.7-5.1 22-13.2l41.3-76.6c5-9.3 7.6-19.8 7.6-30.3V320c0-17.7-14.3-32-32-32H222.1c-9 0-17.7-3.6-24.1-10c-12.5-12.5-13.4-32.4-2.1-45.9l52.7-63.2c4.8-5.8 7.4-13 7.4-20.5V134.9c0-11.6-8.3-21.7-19.8-22.5z\"]\n};\nvar faFaceEyesXmarks = {\n prefix: 'fas',\n iconName: 'face-eyes-xmarks',\n icon: [512, 512, [], \"e374\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM123.3 132.7L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm192 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zM256 304c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80z\"]\n};\nvar faChartScatter = {\n prefix: 'fas',\n iconName: 'chart-scatter',\n icon: [512, 512, [], \"f7ee\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zM192 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm64 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64-224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM160 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faDisplayArrowDown = {\n prefix: 'fas',\n iconName: 'display-arrow-down',\n icon: [576, 512, [], \"e164\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H352V64H512V352H64V64H224V0H64zM312 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V206.1l-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39V24z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [576, 512, [], \"f54e\", \"M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0H109.6C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4zM499.7 254.9l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V384H128V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V384 252.6c-4 1-8 1.8-12.3 2.3z\"]\n};\nvar faArrowTrendUp = {\n prefix: 'fas',\n iconName: 'arrow-trend-up',\n icon: [576, 512, [], \"e098\", \"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32s-32-14.3-32-32V205.3L342.6 374.6c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160H384z\"]\n};\nvar faPlugCircleMinus = {\n prefix: 'fas',\n iconName: 'plug-circle-minus',\n icon: [576, 512, [], \"e55e\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faOliveBranch = {\n prefix: 'fas',\n iconName: 'olive-branch',\n icon: [640, 512, [], \"e317\", \"M2.7 53.1C13.8 41.6 59 0 128 0c66.9 0 111.4 39.1 124.2 52L306 26.7C343.3 9.1 384 0 425.2 0H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H425.2c-34.2 0-67.9 7.5-98.8 22.1L191.9 133.4C189.1 219.3 118.6 288 32 288H16c-8.8 0-16-7.2-16-16V256c0-61.4 34.5-114.6 85.2-141.5C40.4 102.8 11.3 75.8 2.7 66.9C.9 65 0 62.6 0 60s.9-5 2.7-6.9zM480 320c0 106-64.5 192-144 192s-144-86-144-192s64.5-192 144-192s144 86 144 192zM465.7 471.8c29.2-40.5 46.3-94 46.3-151.8c0-59.3-18-114.2-48.6-155c-10.5-14-22.7-26.5-36.2-36.9c48.2 1.6 101.3 25.8 144.2 70.3c75 77.8 90.2 188.1 33.9 246.4c-34.1 35.4-86.8 43.5-139.6 27z\"]\n};\nvar faAngle = {\n prefix: 'fas',\n iconName: 'angle',\n icon: [448, 512, [], \"e08c\", \"M252.6 78.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3l-192 384c-5 9.9-4.4 21.7 1.4 31.1S20.9 480 32 480H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H83.8L252.6 78.3zm-12.2 96l-21.9 43.8c21.4 17.4 40.4 37.7 56.2 60.4l40.8-25.3c-20.7-30.1-46.1-56.7-75.1-78.9zM321.1 384h49c-7-37-19.8-71.9-37.6-103.7l-40.8 25.3c13.3 24.2 23.3 50.5 29.5 78.3z\"]\n};\nvar faVacuumRobot = {\n prefix: 'fas',\n iconName: 'vacuum-robot',\n icon: [512, 512, [], \"e04e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM356.7 356.7c55.6-55.6 55.6-145.8 0-201.4s-145.8-55.6-201.4 0c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6c68.1-68.1 178.5-68.1 246.6 0s68.1 178.5 0 246.6c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6zm-144-144c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-80 16c6.2-6.2 16.4-6.2 22.6 0l128 128c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-128-128c-6.2-6.2-6.2-16.4 0-22.6zm-16 102.6c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64z\"]\n};\nvar faSignHanging = {\n prefix: 'fas',\n iconName: 'sign-hanging',\n icon: [512, 512, [\"sign\"], \"f4d9\", \"M96 0c17.7 0 32 14.3 32 32V64l352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128H32C14.3 128 0 113.7 0 96S14.3 64 32 64H64V32C64 14.3 78.3 0 96 0zm96 160H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faSign = faSignHanging;\nvar faSquareDivide = {\n prefix: 'fas',\n iconName: 'square-divide',\n icon: [448, 512, [], \"e26a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm160 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM136 232H312c13.3 0 24 10.7 24 24s-10.7 24-24 24H136c-13.3 0-24-10.7-24-24s10.7-24 24-24zm56 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faSignalStreamSlash = {\n prefix: 'fas',\n iconName: 'signal-stream-slash',\n icon: [640, 512, [], \"e250\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-91.7-71.9C562.6 355.5 576 307.3 576 256c0-68.1-23.7-130.7-63.2-180c-11.1-13.8-31.2-16-45-5s-16 31.2-5 45c30.7 38.4 49.1 87 49.1 140c0 36.4-8.7 70.8-24.1 101.1l-38.7-30.4c9.5-21.7 14.8-45.6 14.8-70.8c0-45.1-17-86.2-44.8-117.3c-11.8-13.2-32-14.3-45.2-2.5s-14.3 32-2.5 45.2c17.8 19.8 28.5 46 28.5 74.7c0 10.1-1.3 19.9-3.8 29.2l-53.6-42c-5.8-24.7-28-43.2-54.5-43.2c-.2 0-.4 0-.5 0L38.8 5.1zm84.7 188.2C116.1 212.8 112 233.9 112 256c0 45.1 17 86.2 44.8 117.3c11.8 13.2 32 14.3 45.2 2.5s14.3-32 2.5-45.2c-17.8-19.8-28.5-46-28.5-74.7c0-6.8 .6-13.5 1.8-19.9l-54.3-42.8zM33 122C11.9 162 0 207.6 0 256c0 68.1 23.7 130.7 63.2 180c11.1 13.8 31.2 16 45 5s16-31.2 5-45C82.4 357.6 64 309 64 256c0-33.4 7.3-65.1 20.4-93.5L33 122z\"]\n};\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M296 136V88h48v48H296zM288 32c-26.5 0-48 21.5-48 48v4H121.6C111.2 62.7 89.3 48 64 48C28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36h66.9c-58.9 39.6-98.9 105-104 180H80c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-3.3c5.9-67 48.5-123.4 107.5-149.1c8.6 12.7 23.2 21.1 39.8 21.1h64c16.6 0 31.1-8.4 39.8-21.1c59 25.7 101.6 82.1 107.5 149.1H496c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-4.5c-5-75-45.1-140.4-104-180h66.9c10.4 21.3 32.3 36 57.6 36c35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36H400V80c0-26.5-21.5-48-48-48H288zM88 376h48v48H88V376zm416 48V376h48v48H504z\"]\n};\nvar faEyeDropperHalf = {\n prefix: 'fas',\n iconName: 'eye-dropper-half',\n icon: [512, 512, [], \"e173\", \"M240.1 130.8L341.6 29.2c39-39 102.2-39 141.1 0s39 102.2 0 141.1L381.2 271.9l9.4 9.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l9.4 9.4zm-63.9 71.8l45.3 45.3L149.3 320h85.5l29.4-29.4 45.3 45.3L188.7 456.6c-15 15-35.4 23.4-56.6 23.4H89.7L49.7 506.6c-12.7 8.5-29.6 6.8-40.4-4s-12.5-27.7-4-40.4L32 422.3V379.9c0-21.2 8.4-41.6 23.4-56.6L176.1 202.6z\"]\n};\nvar faStoreLock = {\n prefix: 'fas',\n iconName: 'store-lock',\n icon: [640, 512, [], \"e4a6\", \"M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0H109.6C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c5 5.5 10.6 10.3 16.8 14.4C455.2 179.6 489.3 160 528 160c10.4 0 20.5 1.4 30.1 4.1c4.4-19.8 1.5-41.5-10.4-60.3zM128 384V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H392.6c-5.4-9.4-8.6-20.3-8.6-32V384H128zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-87.5-68.6c.5-1.7 .7-3.5 .7-5.4c0-27.6-11-54.1-30.5-73.7L512 320c-20.5-20.5-32-48.3-32-77.3V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V51.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM160 242.7c0 29-11.5 56.8-32 77.3l-1.5 1.5C107 341 96 367.5 96 395.2c0 11.5 9.3 20.8 20.8 20.8H406.2L160 222.1v20.7zM384 448H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nvar faCloudBoltSun = {\n prefix: 'fas',\n iconName: 'cloud-bolt-sun',\n icon: [640, 512, [\"thunderstorm-sun\"], \"f76e\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l10.4 62.4c-23.3 10.8-42.9 28.4-56 50.3c-14.6-9-31.8-14.1-50.2-14.1c-53 0-96 43-96 96c0 35.5 19.3 66.6 48 83.2c.8 31.8 13.2 60.7 33.1 82.7l-56 39.2c-4.5 3.1-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM208 144c13.8 0 26.7 4.4 37.1 11.9c-1.2 4.1-2.2 8.3-3 12.6c-37.9 14.6-67.2 46.6-77.8 86.4C151.8 243.1 144 226.5 144 208c0-35.3 28.7-64 64-64zM639.9 303.9c0 44.2-35.8 80-80 80H541.3c3.5-10.1 3.7-21.3 0-31.8C534.5 332.9 516.4 320 496 320H477.7l29.3-58.5c10.1-20.2 4.8-44.6-12.8-58.8s-42.6-14.2-60.2-.2l-160 128c-14.5 11.6-20.9 30.5-16.8 48.4c-37.9-12.8-65.2-48.7-65.2-90.9c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7zM474.1 227.6c5.8 4.7 7.6 12.9 4.3 19.6L425.9 352H496c6.8 0 12.8 4.3 15.1 10.7s.2 13.5-5.1 17.8l-160 128c-5.9 4.7-14.2 4.7-20.1-.1s-7.6-12.9-4.3-19.6L374.1 384H304c-6.8 0-12.8-4.3-15.1-10.7s-.2-13.5 5.1-17.8l160-128c5.9-4.7 14.2-4.7 20.1 .1z\"]\n};\nvar faThunderstormSun = faCloudBoltSun;\nvar faCameraSlash = {\n prefix: 'fas',\n iconName: 'camera-slash',\n icon: [640, 512, [], \"e0d9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-55.5-43.5c.5-3.1 .7-6.3 .7-9.6V160c0-35.3-28.7-64-64-64H437.3L426.9 64.8C420.4 45.2 402.1 32 381.4 32H258.6c-20.7 0-39 13.2-45.5 32.8L202.7 96H154.8L38.8 5.1zM285.4 198.4c10.7-4.1 22.4-6.4 34.6-6.4c53 0 96 43 96 96c0 4.1-.3 8.2-.8 12.2L285.4 198.4zM224 288c0-5 .4-9.9 1.1-14.6L65.2 147.4c-.8 4.1-1.2 8.3-1.2 12.6V416c0 35.3 28.7 64 64 64H487.4L356.4 376.8c-11.2 4.6-23.5 7.2-36.4 7.2c-53 0-96-43-96-96z\"]\n};\nvar faCommentQuote = {\n prefix: 'fas',\n iconName: 'comment-quote',\n icon: [512, 512, [], \"e14c\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM160 144h48c17.7 0 32 14.3 32 32v24 24 39.3c0 35.2-25.4 65.2-60.2 71l-7.9 1.3c-13.1 2.2-25.4-6.7-27.6-19.7s6.7-25.4 19.7-27.6l7.9-1.3c11.6-1.9 20.1-11.9 20.1-23.7V256H160c-17.7 0-32-14.3-32-32V176c0-17.7 14.3-32 32-32zm224 80v39.3c0 35.2-25.4 65.2-60.2 71l-7.9 1.3c-13.1 2.2-25.4-6.7-27.6-19.7s6.7-25.4 19.7-27.6l7.9-1.3c11.6-1.9 20.1-11.9 20.1-23.7V256H304c-17.7 0-32-14.3-32-32V176c0-17.7 14.3-32 32-32h48c17.7 0 32 14.3 32 32v24 24z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [\"tablet-android\"], \"f3fb\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM176 432h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faTabletAndroid = faTablet;\nvar faSchoolFlag = {\n prefix: 'fas',\n iconName: 'school-flag',\n icon: [576, 512, [], \"e56e\", \"M288 0H400c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H320.7l89.6 64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H336V400c0-26.5-21.5-48-48-48s-48 21.5-48 48V512H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64H165.7L256 95.5V32c0-17.7 14.3-32 32-32zm48 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM80 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm368 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H80zm384 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H464z\"]\n};\nvar faMessageCode = {\n prefix: 'fas',\n iconName: 'message-code',\n icon: [512, 512, [], \"e1df\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm217 97c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-64 64c-9.4 9.4-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47zM329 127c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9l-64-64z\"]\n};\nvar faGlassHalf = {\n prefix: 'fas',\n iconName: 'glass-half',\n icon: [384, 512, [\"glass-half-empty\", \"glass-half-full\"], \"e192\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM77.8 224L66.4 64H317.6L306.2 224H77.8z\"]\n};\nvar faGlassHalfEmpty = faGlassHalf;\nvar faGlassHalfFull = faGlassHalf;\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M86.6 9.4C74.1-3.1 53.9-3.1 41.4 9.4s-12.5 32.8 0 45.3L122.7 136 30.6 228.1c-37.5 37.5-37.5 98.3 0 135.8L148.1 481.4c37.5 37.5 98.3 37.5 135.8 0L474.3 290.9c28.1-28.1 28.1-73.7 0-101.8L322.9 37.7c-28.1-28.1-73.7-28.1-101.8 0L168 90.7 86.6 9.4zM168 181.3l49.4 49.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L213.3 136l53.1-53.1c3.1-3.1 8.2-3.1 11.3 0L429.1 234.3c3.1 3.1 3.1 8.2 0 11.3L386.7 288H67.5c1.4-5.4 4.2-10.4 8.4-14.6L168 181.3z\"]\n};\nvar faMessageMinus = {\n prefix: 'fas',\n iconName: 'message-minus',\n icon: [512, 512, [\"comment-alt-minus\"], \"f4a7\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zM184 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faCommentAltMinus = faMessageMinus;\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [448, 512, [8963], \"f106\", \"M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"]\n};\nvar faDinosaur = {\n prefix: 'fas',\n iconName: 'dinosaur',\n icon: [640, 512, [], \"e5fe\", \"M446.2 0H448C554 0 640 86 640 192v30.6c0 88-51.5 165.6-128 201.5V480c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V458c-15.3 3.9-31.4 6-48 6c-6.8 0-13.5-.4-20.1-1c-7.5-18.9-24.4-33.3-45.4-36.8L162 408.1c-19.6-3.3-34-20.2-34-40.1c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 35.5 25.7 65.8 60.7 71.7l108.5 18.1c13.2 2.2 22.8 13.6 22.8 26.9c0 15.1-12.2 27.3-27.3 27.3H256 224 192 120.7C54.1 512 0 457.9 0 391.3c0-34 14.4-66.5 39.5-89.3l89.7-81.6C172 181.5 227.6 160 285.3 160c50.2 0 99 16.3 139.2 46.4L480 248c6.9 5.2 15.3 8 24 8c22.1 0 40-17.9 40-40V192c0-35.3-28.7-64-64-64H448 415.7c-26.3 0-47.7-21.4-47.7-47.7V75.6c0-16.7 10.1-31.6 25.6-37.8l1.7-.7c8.2-3.3 14.8-9.4 18.7-17.2C420.2 7.7 432.6 0 446.2 0zM464 64a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2C69.8 320.6 65 320 60 320c-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12c0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5c-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4H336c6.3 0 12.4-.3 18.5-1c11.9-1.2 16.4-15.5 10.8-26c-8.5-15.8-13.3-33.8-13.3-53c0-61.9 50.1-112 112-112c8 0 15.7 .8 23.2 2.4c11.7 2.5 24.1-5.9 22-17.6C494.5 62.5 422.5 0 336 0C238.8 0 160 78.8 160 176v89.2z\"]\n};\nvar faLinkHorizontalSlash = {\n prefix: 'fas',\n iconName: 'link-horizontal-slash',\n icon: [640, 512, [\"chain-horizontal-slash\"], \"e1cc\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-56.7-44.4c39.6-25.8 65.9-70.5 65.9-121.3c0-70.7-51.1-131-120.8-142.6l-1.9-.3c-17.4-2.9-33.9 8.9-36.8 26.3s8.9 33.9 26.3 36.8l1.9 .3c38.9 6.5 67.4 40.1 67.4 79.5c0 36.6-24.4 67.6-57.9 77.4L415.3 300.2c20.5-25.1 32.7-57.1 32.7-91.6C448 128.7 383.3 64 303.4 64H144.6c-9.4 0-18.5 .9-27.4 2.6L38.8 5.1zM195.6 128H303.4c44.5 0 80.6 36.1 80.6 80.6c0 19.7-7.1 38-19.1 52.1L195.6 128zM446.8 448l-81.2-64H336.6c-44.5 0-80.6-36.1-80.6-80.6c0-1.9 .1-3.7 .2-5.5l-55.5-43.8c-5.6 15.4-8.6 32.1-8.6 49.3C192 383.3 256.7 448 336.6 448H446.8zM30.4 119.9C11.3 144.4 0 175.2 0 208.6c0 70.7 51.1 131 120.8 142.6l1.9 .3c17.4 2.9 33.9-8.9 36.8-26.3s-8.9-33.9-26.3-36.8l-1.9-.3C92.5 281.6 64 248 64 208.6c0-18.5 6.2-35.5 16.6-49.1L30.4 119.9z\"]\n};\nvar faChainHorizontalSlash = faLinkHorizontalSlash;\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [512, 512, [], \"f7aa\", \"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM276.8 383.8c1 .1 2.1 .2 3.2 .2c39.8 0 72 32.2 72 72v22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.6 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6c-34.6 0-62.7-28.1-62.7-62.7v-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7c4.2 9.7 5.8 20.8 3.7 32.3L275 298.7c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.6 234.5c-15.5-5.2-31.6 6.4-31.6 22.8v32C96 323.9 67.9 352 33.3 352c-16.4 0-27.9 16-22.8 31.6l4.3 12.8c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.2 489.4 22.6 505.8 40.5 501L60 495.6c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8v-32c0-34.6 28.1-62.7 62.7-62.7c16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5L196 240.4c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384 144a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faNose = {\n prefix: 'fas',\n iconName: 'nose',\n icon: [448, 512, [], \"e5bd\", \"M324.2 231.9L421 338.3c17.4 19.1 27 44 27 69.9C448 465.5 401.5 512 344.1 512h-9.4c-32.3 0-63.6-11.3-88.4-32l-6.4-5.3c-20.7-17.2-46.7-26.7-73.6-26.7c-21.2 0-38.3 17.2-38.3 38.3V492c0 1.7 .1 3.4 .3 5.1c.8 7.1-4 14.9-11.2 14.9H112C50.8 512 1.1 462.9 0 401.9C1 345.3 44.3 298 100.9 292.4l44.7-4.5c8.8-.9 15.2-8.7 14.3-17.5s-8.7-15.2-17.5-14.3l-44.7 4.5c-7.1 .7-14 1.9-20.7 3.6c-6.4 1.6-13-3-13-9.7V32C64 14.3 78.3 0 96 0h61.6c11.4 0 21.9 6 27.6 15.9l75.6 129.6c18.1 30.9 39.3 59.9 63.4 86.4z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [9001], \"f053\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"]\n};\nvar faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M304.9 .7c-9.6-2.7-19.5 2.8-22.3 12.4l-4.3 15.2c-8.3-.6-16.8 0-25.2 1.9c-7.3 1.7-14.3 3.5-21.1 5.5l-5.5-12.7c-3.9-9.1-14.5-13.4-23.6-9.5s-13.4 14.5-9.5 23.6l4.4 10.4c-16.6 6.7-31.7 14.4-45.4 22.8L147 62c-5.5-8.3-16.7-10.5-25-5s-10.5 16.7-5 25l6 9c-13.7 11-25.5 22.8-35.8 34.9l-10-8c-7.8-6.2-19.1-5-25.3 2.8s-5 19.1 2.8 25.3L65.9 155c-1.8 2.8-3.5 5.7-5.1 8.5c-6.6 11.4-11.8 22.6-16 33l-8-3.2c-9.2-3.7-19.7 .8-23.4 10s.8 19.7 10 23.4l10.4 4.2c-.2 .8-.4 1.5-.5 2.3c-2.2 9.3-3.4 17.3-4.1 23.4c-.4 3.1-.6 5.7-.8 7.8c-.1 1.1-.1 2-.2 2.8l-.1 1.1 0 .5 0 .2 0 .1c0 0 0 .1 29.1 1l-.1 0L28 269.3c-.1 3.1 0 6.1 .2 9.1l-15.2 4.3C3.5 285.4-2 295.4 .7 304.9s12.7 15.1 22.3 12.4l15.6-4.5c7.6 13.6 18.9 25 32.6 32.6L66.7 361c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.3-12.4l4.3-15.2c1.2 .1 2.4 .2 3.6 .2c15.6 .5 30.3-3.3 43-10.2l9 9c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-7.2-7.2c9.3-12.6 15.2-27.8 16.3-44.5l7.1 3c9.1 3.9 19.7-.3 23.6-9.5s-.3-19.7-9.5-23.6l-8.6-3.7c6.4-9.9 17.3-22.4 36.9-33.3l1.3 4.4c2.7 9.6 12.7 15.1 22.3 12.4s15.1-12.7 12.4-22.3l-2.3-8.1c3.8-1.1 7.7-2.1 11.9-3.1c11.6-2.7 22.1-7.7 31.1-14.4l7.2 7.2c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-9-9c7.6-13.9 11.3-30.1 10.1-46.6l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3S370.6 64 361 66.7l-15.6 4.5c-7.7-13.9-19.1-25.1-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3zM112 272l-48-1.5 0 0c11.7 .4 27.3 .9 48 1.6zm16-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-48a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM322.7 489c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.2-12.4l4.3-15.2c8.3 .6 16.8 0 25.2-1.9c7.3-1.7 14.3-3.5 21.1-5.5l5.5 12.7c3.9 9.1 14.5 13.4 23.6 9.5s13.4-14.5 9.5-23.6l-4.4-10.4c16.6-6.7 31.7-14.4 45.4-22.8L493 450c5.5 8.3 16.7 10.5 25 5s10.5-16.7 5-25l-6-9c13.7-11 25.5-22.8 35.8-34.9l10 8c7.8 6.2 19.1 5 25.3-2.8s5-19.1-2.8-25.3L574.1 357c1.8-2.8 3.5-5.7 5.1-8.5c6.6-11.4 11.8-22.6 16-33l8 3.2c9.2 3.7 19.7-.8 23.4-10s-.8-19.7-10-23.4l-10.4-4.2c.2-.8 .4-1.5 .5-2.3c2.2-9.3 3.4-17.3 4.1-23.4c.4-3.1 .6-5.7 .8-7.8c.1-1.1 .1-2 .2-2.8l.1-1.1 0-.5 0-.2 0-.1c0 0 0-.1-29.1-1l.1 0 29.1 .9c.1-3.1 0-6.1-.2-9.1l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3s-12.7-15.1-22.3-12.4l-15.6 4.5c-7.6-13.6-18.9-25-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3s-19.5 2.8-22.3 12.4l-4.3 15.2c-1.2-.1-2.4-.2-3.6-.2c-15.6-.5-30.3 3.3-43 10.2l-9-9c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l7.2 7.2c-9.3 12.6-15.2 27.8-16.3 44.5l-7.1-3c-9.1-3.9-19.7 .3-23.6 9.5s.3 19.7 9.5 23.6l8.6 3.7c-6.4 9.9-17.3 22.4-36.9 33.3l-1.3-4.4c-2.7-9.6-12.7-15.1-22.3-12.4s-15.1 12.7-12.4 22.3l2.3 8.1c-3.8 1.1-7.7 2.1-11.9 3.1c-11.6 2.7-22.1 7.7-31.1 14.4l-7.2-7.2c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l9 9c-7.6 13.9-11.3 30.1-10.1 46.6l-15.2 4.3c-9.6 2.7-15.1 12.7-12.4 22.2s12.7 15.1 22.3 12.4l15.6-4.5c7.7 13.9 19.1 25.1 32.6 32.6L322.7 489zM576 241.5l0 0c-11.7-.4-27.3-.9-48-1.6l48 1.5zM448 384a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nvar faClouds = {\n prefix: 'fas',\n iconName: 'clouds',\n icon: [640, 512, [], \"f744\", \"M304 160c-74.1 0-135.2 56-143.1 128H96c-53 0-96-43-96-96s43-96 96-96l1.1 0C104.9 41.7 151.6 0 208 0c47.9 0 88.8 30.1 104.8 72.4C324.8 67 338 64 352 64c53 0 96 43 96 96c0 12.1-2.2 23.6-6.3 34.2c-11.4 2.3-22.2 6.4-32.1 11.9C383.3 177.7 345.7 160 304 160zM224 512c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2c-1.3-6.7-1.9-13.7-1.9-20.8c0-61.9 50.1-112 112-112c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H224z\"]\n};\nvar faMoneyBillSimple = {\n prefix: 'fas',\n iconName: 'money-bill-simple',\n icon: [576, 512, [], \"e1f1\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm224 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M0 112C0 85.5 21.5 64 48 64H160h80 46.5c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8v12 16 48c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V402.2L273.9 352H240 160 112c-26.5 0-48-21.5-48-48s21.5-48 48-48h48 80c26.5 0 48-21.5 48-48s-21.5-48-48-48H160 48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faTablePivot = {\n prefix: 'fas',\n iconName: 'table-pivot',\n icon: [512, 512, [], \"e291\", \"M0 96C0 60.7 28.7 32 64 32h64V160H0V96zm448 64H160V32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192H128V416H448V160zm-33.2 86.1c-2.5 6-8.3 9.9-14.8 9.9H384v48c0 26.5-21.5 48-48 48H288v16c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-32-32c-6.2-6.2-6.2-16.4 0-22.6l32-32c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8v16h48c8.8 0 16-7.2 16-16V256H336c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l32-32c6.2-6.2 16.4-6.2 22.6 0l32 32c4.6 4.6 5.9 11.5 3.5 17.4z\"]\n};\nvar faFilterSlash = {\n prefix: 'fas',\n iconName: 'filter-slash',\n icon: [640, 512, [], \"e17d\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L406.6 293.4 567 97.3c9.8-12 11.8-28.5 5.2-42.5S551.5 32 536 32H104c-8.1 0-15.8 2.5-22.3 6.8L38.8 5.1zM256 400c0 10.1 4.7 19.6 12.8 25.6l64 48c9.7 7.3 22.7 8.4 33.5 3s17.7-16.5 17.7-28.6V398.5L256 297.7V400z\"]\n};\nvar faTrashCanUndo = {\n prefix: 'fas',\n iconName: 'trash-can-undo',\n icon: [448, 512, [\"trash-can-arrow-turn-left\", \"trash-undo-alt\"], \"f896\", \"M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32V448c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V128zM217.8 199.9c8.9 9.9 8.1 25-1.8 33.9L182.5 264H240c48.6 0 88 39.4 88 88v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V352c0-22.1-17.9-40-40-40H182.5l33.5 30.2c9.9 8.9 10.7 24 1.8 33.9s-24 10.7-33.9 1.8l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c9.9-8.9 25-8.1 33.9 1.8z\"]\n};\nvar faTrashCanArrowTurnLeft = faTrashCanUndo;\nvar faTrashUndoAlt = faTrashCanUndo;\nvar faNotdef = {\n prefix: 'fas',\n iconName: 'notdef',\n icon: [384, 512, [], \"e1fe\", \"M64 390.3L153.5 256 64 121.7V390.3zM102.5 448H281.5L192 313.7 102.5 448zm128-192L320 390.3V121.7L230.5 256zM281.5 64H102.5L192 198.3 281.5 64zM0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"]\n};\nvar faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M236.4 61.4L227 75.5c-21.3 32-59.4 48.5-97.3 42.1l-59.6-9.9C33.4 101.6 0 129.9 .1 167.1c0 15.9 6.4 31.2 17.6 42.5l29.2 29.2c11 11 17.2 25.9 17.2 41.5c0 15.8-6.4 30.9-17.7 42L33.3 335.1C22.2 345.9 16 360.7 16 376.2c0 36.8 34.1 64.2 70.1 56.2l62.3-13.8c7.7-1.7 15.7-2.6 23.6-2.6h10c27.2 0 53.7 9.3 75 26.3L287.8 467c10.5 8.4 23.6 13 37 13c32.7 0 59.3-26.5 59.3-59.3l0-25.2c0-34.9 21.4-66.2 53.9-78.8l36.9-14.3c22.4-8.7 37.2-30.3 37.2-54.3c0-28.1-20.1-52.3-47.8-57.3l-28-5.1c-36.5-6.7-65.4-34.5-73.6-70.7l-7.1-31.5C348.9 53.4 322.1 32 291.3 32c-22 0-42.6 11-54.9 29.4zM160 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm0 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faPersonToDoor = {\n prefix: 'fas',\n iconName: 'person-to-door',\n icon: [576, 512, [58704], \"e433\", \"M272 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM163.2 160c-14.1 0-27.5 5.6-37.5 15.5l-23.1 23.1c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l23.1-23.1C102.4 108.3 132.2 96 163.2 96c11.7 0 23.3 1.7 34.4 5.2l48.7 15c36.4 11.2 65.9 38 80.5 73.1l6.3 15c5 11.9 16.6 19.7 29.5 19.7H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H362.7c-38.8 0-73.7-23.3-88.6-59.1l-5.1-12.3L238 299l56.7 35.4c18.1 11.3 26.6 33.3 20.7 53.9L286.8 488.8c-4.9 17-22.6 26.8-39.6 22s-26.8-22.6-22-39.6l25.4-88.8-86.2-53.9c-25.1-15.7-36.1-46.5-26.8-74.5l31.2-93.7c-1.9-.2-3.7-.3-5.6-.3zM109.5 310.7c7.4 18.1 20.4 33.9 37.9 44.9l9.5 6-11.5 25.9c-7.7 17.3-24.9 28.5-43.9 28.5H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H91.2l18.3-41.3zM384 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432c-26.5 0-48-21.5-48-48V320h0c35.3 0 64-28.7 64-64s-28.7-64-64-64h0V48z\"]\n};\nvar faTurntable = {\n prefix: 'fas',\n iconName: 'turntable',\n icon: [576, 512, [], \"f8e4\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM384 256A160 160 0 1 0 64 256a160 160 0 1 0 320 0zM512 112c0-8.8-7.2-16-16-16s-16 7.2-16 16V272.4c0 2.5-.6 4.9-1.7 7.2l-16.2 32.5c-11 .7-21.4 7-26.7 17.6l-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l16-32c5.3-10.6 4.2-22.7-1.9-31.9l16.2-32.4c3.3-6.7 5.1-14 5.1-21.5V112zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zm96 152c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [384, 512, [], \"f22d\", \"M192 144a112 112 0 1 1 0 224 112 112 0 1 1 0-224zm0 288a176 176 0 1 0 0-352 176 176 0 1 0 0 352z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [9002], \"f054\", \"M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"]\n};\nvar faSignalWeak = {\n prefix: 'fas',\n iconName: 'signal-weak',\n icon: [640, 512, [\"signal-1\"], \"f68c\", \"M64 384c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c0-17.7 14.3-32 32-32z\"]\n};\nvar faSignal1 = faSignalWeak;\nvar faClockFive = {\n prefix: 'fas',\n iconName: 'clock-five',\n icon: [512, 512, [], \"e349\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm24-392V248.7l60 90c7.4 11 4.4 25.9-6.7 33.3s-25.9 4.4-33.3-6.7l-64-96c-2.6-3.9-4-8.6-4-13.3V120c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [576, 512, [], \"f079\", \"M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32-14.3-32-32V192h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96H272zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0V192c0-53-43-96-96-96L304 96z\"]\n};\nvar faCarRear = {\n prefix: 'fas',\n iconName: 'car-rear',\n icon: [512, 512, [\"car-alt\"], \"f5de\", \"M165.4 96H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 192H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256v80c0 23.7 12.9 44.4 32 55.4V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V400H384v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V391.4c19.1-11.1 32-31.7 32-55.4V256c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32H165.4c-40.8 0-77.1 25.8-90.6 64.3zM208 272h96c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V288c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-13.3 0-24-10.7-24-24zm360-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H408c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faCarAlt = faCarRear;\nvar faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [448, 512, [], \"e06b\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM256 360c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9c3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C219 279.1 256 327.5 256 360z\"]\n};\nvar faComputerClassic = {\n prefix: 'fas',\n iconName: 'computer-classic',\n icon: [448, 512, [], \"f8b1\", \"M0 48C0 21.5 21.5 0 48 0H400c26.5 0 48 21.5 48 48V368c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48zM32 480V448H416v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32zM96 64C78.3 64 64 78.3 64 96V224c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32H96zM80 360a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm144-24c0 8.8 7.2 16 16 16H368c8.8 0 16-7.2 16-16s-7.2-16-16-16H240c-8.8 0-16 7.2-16 16z\"]\n};\nvar faFrame = {\n prefix: 'fas',\n iconName: 'frame',\n icon: [448, 512, [], \"e495\", \"M448 128c0-17.7-14.3-32-32-32l-32 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L128 96l0-32c0-17.7-14.3-32-32-32S64 46.3 64 64l0 32L32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l32 0 0 192-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 192 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-192 32 0c17.7 0 32-14.3 32-32zM128 352l0-192 192 0 0 192-192 0z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9V192 320v5.8l-32-25.1V128c0-35.3-28.7-64-64-64H113.9L38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5V384c0 35.3 28.7 64 64 64H352c23.4 0 43.9-12.6 55-31.3z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [576, 512, [\"battery-2\"], \"f243\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm112 96H96V320h96V192z\"]\n};\nvar faBattery2 = faBatteryQuarter;\nvar faEllipsisStroke = {\n prefix: 'fas',\n iconName: 'ellipsis-stroke',\n icon: [512, 512, [\"ellipsis-h-alt\"], \"f39b\", \"M416 280a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm0-96a72 72 0 1 0 0 144 72 72 0 1 0 0-144zM256 280a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm0-96a72 72 0 1 0 0 144 72 72 0 1 0 0-144zM120 256a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zm-96 0a72 72 0 1 0 144 0A72 72 0 1 0 24 256z\"]\n};\nvar faEllipsisHAlt = faEllipsisStroke;\nvar faRadio = {\n prefix: 'fas',\n iconName: 'radio',\n icon: [512, 512, [128251], \"f8d7\", \"M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192v4V304 448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H218.5L494.8 47zM368 240a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM80 256c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16zM64 320c0-8.8 7.2-16 16-16H208c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm16 64c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [\"carriage-baby\"], \"f77d\", \"M256 192H.1C2.7 117.9 41.3 52.9 99 14.1c13.3-8.9 30.8-4.3 39.9 8.8L256 192zm128-32c0-35.3 28.7-64 64-64h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0v64c0 25.2-5.8 50.2-17 73.5s-27.8 44.5-48.6 62.3s-45.5 32-72.7 41.6S253.4 416 224 416s-58.5-5-85.7-14.6s-51.9-23.8-72.7-41.6s-37.3-39-48.6-62.3S0 249.2 0 224l224 0 160 0V160zM80 416a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm240 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faCarriageBaby = faBabyCarriage;\nvar faFaceExpressionless = {\n prefix: 'fas',\n iconName: 'face-expressionless',\n icon: [512, 512, [], \"e373\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 336H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16zM128 208c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm176-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H304c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faDownToDottedLine = {\n prefix: 'fas',\n iconName: 'down-to-dotted-line',\n icon: [448, 512, [], \"e408\", \"M0 448a32 32 0 1 0 64 0A32 32 0 1 0 0 448zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64-32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM73.9 249.9L196.7 372.7c7.2 7.2 17.1 11.3 27.3 11.3s20.1-4.1 27.3-11.3L374.1 249.9c6.4-6.4 9.9-15 9.9-24c0-18.7-15.2-33.9-33.9-33.9H288V64c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32V192H97.9C79.2 192 64 207.2 64 225.9c0 9 3.6 17.6 9.9 24z\"]\n};\nvar faCloudMusic = {\n prefix: 'fas',\n iconName: 'cloud-music',\n icon: [640, 512, [], \"f8ae\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zM416 184c0-5.2-2.6-10.2-6.9-13.2s-9.8-3.7-14.7-1.8l-128 48c-6.2 2.3-10.4 8.3-10.4 15v32 81.8c-5-1.2-10.4-1.8-16-1.8c-26.5 0-48 14.3-48 32s21.5 32 48 32s48-14.3 48-32V275.1l96-36v74.7c-5-1.2-10.4-1.8-16-1.8c-26.5 0-48 14.3-48 32s21.5 32 48 32s48-14.3 48-32V216 184z\"]\n};\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [320, 512, [128678], \"f637\", \"M64 0C28.7 0 0 28.7 0 64V352c0 88.4 71.6 160 160 160s160-71.6 160-160V64c0-35.3-28.7-64-64-64H64zm96 416a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm48-176a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm-48-80a48 48 0 1 1 0-96 48 48 0 1 1 0 96z\"]\n};\nvar faCloudMinus = {\n prefix: 'fas',\n iconName: 'cloud-minus',\n icon: [640, 512, [], \"e35d\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zM248 264c-13.3 0-24 10.7-24 24s10.7 24 24 24H392c13.3 0 24-10.7 24-24s-10.7-24-24-24H248z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M96 382.1V293.3c0-14.9 5.9-29.1 16.4-39.6l27.3-27.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 45.5-45.5C355.2 10.9 381.4 0 408.8 0C465.8 0 512 46.2 512 103.2c0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4H129.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l89-89z\"]\n};\nvar faShieldMinus = {\n prefix: 'fas',\n iconName: 'shield-minus',\n icon: [512, 512, [], \"e249\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M576 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H184.4c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faCarTilt = {\n prefix: 'fas',\n iconName: 'car-tilt',\n icon: [640, 512, [], \"f5e5\", \"M145.1 120.6L292.4 81.2c12.7-3.4 26.3 1.3 34.1 12l37.8 51.6L114.6 211.6l7-63.6c1.4-13.1 10.8-24 23.5-27.4zM58 141.1L47.8 234.2C27.4 249.4 17.2 276 24.2 302.1L57.3 425.8l6 22.2H48c-26.5 0-48 21.5-48 48v16H640V496c0-26.5-21.5-48-48-48H162.6c-.1-.2-.1-.5-.2-.7L150 400.9l278.2-74.5 12.4 46.4c4.6 17.1 22.1 27.2 39.2 22.6l30.9-8.3c17.1-4.6 27.2-22.1 22.6-39.2L521 301.5 487.8 177.9c-7-26.1-29.1-44.1-54.4-47L378.1 55.3c-23.4-31.9-64-46.2-102.3-36L128.5 58.8C90.3 69.1 62.3 101.7 58 141.1zm58.9 136.2a32 32 0 1 1 16.6 61.8 32 32 0 1 1 -16.6-61.8zm255.6-35.3a32 32 0 1 1 61.8-16.6 32 32 0 1 1 -61.8 16.6z\"]\n};\nvar faGaugeCircleMinus = {\n prefix: 'fas',\n iconName: 'gauge-circle-minus',\n icon: [640, 512, [], \"e497\", \"M496 192c2.7 0 5.3 .1 8 .2C475.6 81.7 375.4 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512c39.5 0 77-9 110.4-25C337.6 455.7 320 413.9 320 368c0-97.2 78.8-176 176-176zM320 352c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26.9 16.5-49.9 40-59.3V88c0-13.3 10.7-24 24-24s24 10.7 24 24V292.7c23.5 9.5 40 32.5 40 59.3zM144 112a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM336 144a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16s7.2-16 16-16H560c8.8 0 16 7.2 16 16z\"]\n};\nvar faBrightnessLow = {\n prefix: 'fas',\n iconName: 'brightness-low',\n icon: [512, 512, [], \"e0ca\", \"M224 80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm96 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM432 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM112 256a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM352 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm0-256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 384a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [448, 512, [128405], \"f806\", \"M232 0c-22.1 0-40 17.9-40 40V204.2c-8.5-7.6-19.7-12.2-32-12.2c-26.5 0-48 21.5-48 48v7 73c0 8.8-7.2 16-16 16s-16-7.2-16-16V264.3c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334V372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1H304c70.7 0 128-57.3 128-128V320 288c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 227.5 329.3 208 304 208c-12.3 0-23.5 4.6-32 12.2V40c0-22.1-17.9-40-40-40z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [384, 512, [62101, 62785, \"percentage\"], \"25\", \"M374.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l320-320zM128 128A64 64 0 1 0 0 128a64 64 0 1 0 128 0zM384 384a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faPercentage = faPercent;\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M64 32C28.7 32 0 60.7 0 96V304v80 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16H416h33.6c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H608c17.7 0 32-14.3 32-32V288 272 261.7c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5H480V96c0-35.3-28.7-64-64-64H64zM585 256H480V192h48.8c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM176 400a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM80 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGlassWaterDroplet = {\n prefix: 'fas',\n iconName: 'glass-water-droplet',\n icon: [384, 512, [], \"e4f5\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM83 297.5L66.4 64H317.6L301 297.5 288 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0s-43.9 10.1-64 0l-13-6.5zM256 196c0-24-33.7-70.1-52.2-93.5c-6.1-7.7-17.5-7.7-23.6 0C161.7 125.9 128 172 128 196c0 33.1 28.7 60 64 60s64-26.9 64-60z\"]\n};\nvar faConveyorBelt = {\n prefix: 'fas',\n iconName: 'conveyor-belt',\n icon: [640, 512, [], \"f46e\", \"M176 0h80V112c0 5.9 3.2 11.3 8.5 14.1s11.5 2.5 16.4-.8L320 99.2l39.1 26.1c4.9 3.3 11.2 3.6 16.4 .8s8.5-8.2 8.5-14.1V0h80c26.5 0 48 21.5 48 48V208c0 26.5-21.5 48-48 48H176c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM0 416c0-53 43-96 96-96H544c53 0 96 43 96 96s-43 96-96 96H96c-53 0-96-43-96-96zm160 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm160 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm224-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faLocationCheck = {\n prefix: 'fas',\n iconName: 'location-check',\n icon: [384, 512, [\"map-marker-check\"], \"f606\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM305 145L177 273c-9.4 9.4-24.6 9.4-33.9 0L79 209c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 111c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faMapMarkerCheck = faLocationCheck;\nvar faCoinVertical = {\n prefix: 'fas',\n iconName: 'coin-vertical',\n icon: [384, 512, [], \"e3fd\", \"M288 256c0 141.4-64.5 256-144 256S0 397.4 0 256S64.5 0 144 0s144 114.6 144 256zM184.2 425.4c11.4-12 20.1-27.7 26.8-44.4c13.4-33.6 21-77.8 21-125s-7.6-91.4-21-125c-6.7-16.7-15.4-32.4-26.8-44.4C172.7 74.5 156.5 64 136 64s-36.7 10.5-48.2 22.6C76.5 98.6 67.7 114.3 61 131c-13.4 33.6-21 77.8-21 125s7.6 91.4 21 125c6.7 16.7 15.4 32.4 26.8 44.4C99.3 437.5 115.5 448 136 448s36.7-10.5 48.2-22.6zM136 416c-35.3 0-64-71.6-64-160s28.7-160 64-160s64 71.6 64 160s-28.7 160-64 160zm90.1 96c15.6-13.2 29.3-29.7 40.9-48h63.7c-21 30.2-46.8 48-74.6 48H226.1zM349 432H284.3c13.2-28.4 23-60.9 29-96h64.3c-6 36.2-15.9 68.9-28.7 96zm32.8-128H317.6c1.6-15.7 2.4-31.7 2.4-48s-.8-32.3-2.4-48h64.1c1.5 15.5 2.2 31.6 2.2 48s-.8 32.5-2.2 48zm-4.1-128H313.3c-6-35.1-15.9-67.6-29-96H349c12.8 27.1 22.7 59.8 28.7 96zm-47-128H267c-11.5-18.3-25.2-34.8-40.9-48H256c27.9 0 53.6 17.8 74.6 48z\"]\n};\nvar faDisplay = {\n prefix: 'fas',\n iconName: 'display',\n icon: [576, 512, [], \"e163\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V352H64V64H512z\"]\n};\nvar faPersonSign = {\n prefix: 'fas',\n iconName: 'person-sign',\n icon: [512, 512, [], \"f757\", \"M438.1 32.2c4.5-12.5-1.9-26.2-14.3-30.8S397.5 3.3 393 15.8l-4.6 12.7L328.7 6.7c-12.5-4.5-26.2 1.9-30.8 14.3L259.6 126.3c-4.5 12.5 1.9 26.2 14.3 30.8l59.7 21.7-15.4 42.4-28.8-10.8c-9.7-3.7-18.4-9.6-25.4-17.4L235 160.2c-18.2-20.5-44.3-32.2-71.8-32.2H135.6c-36.4 0-69.6 20.5-85.9 53.1L3.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L80 263.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h20.2L192 407.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V407.6c0-9.9-2.3-19.7-6.8-28.6L216 312.4V235.2l.3 .3c13.8 15.6 31.2 27.5 50.7 34.8l29.3 11L289 301.5c-4.5 12.5 1.9 26.2 14.3 30.8s26.2-1.9 30.8-14.3l44.6-122.6 60.6 22c12.5 4.5 26.2-1.9 30.8-14.3L508.4 97.7c4.5-12.5-1.9-26.2-14.3-30.8l-60.6-22 4.6-12.7zM192 48A48 48 0 1 0 96 48a48 48 0 1 0 96 0z\"]\n};\nvar faFaceSmile = {\n prefix: 'fas',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSmile = faFaceSmile;\nvar faPhoneHangup = {\n prefix: 'fas',\n iconName: 'phone-hangup',\n icon: [640, 512, [], \"e225\", \"M11.7 266.3l41.9 94.3c6.1 13.7 20.8 21.3 35.5 18.4l109.2-21.8c15-3 25.7-16.1 25.7-31.4V240c62.3-20.8 129.7-20.8 192 0v85.8c0 15.3 10.8 28.4 25.7 31.4L550.9 379c14.7 2.9 29.4-4.7 35.5-18.4l41.9-94.3c7.2-16.2 5.1-35.1-7.4-47.7C570.8 168.1 464.2 96 320 96S69.2 168.1 19.1 218.6c-12.5 12.6-14.6 31.5-7.4 47.7z\"]\n};\nvar faSignatureSlash = {\n prefix: 'fas',\n iconName: 'signature-slash',\n icon: [640, 512, [], \"e3cb\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L563 416h53c13.3 0 24-10.7 24-24s-10.7-24-24-24H501.8l-61.2-48H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3V128c0-53-43-96-96-96c-37 0-69.1 20.9-85.1 51.6L38.8 5.1zM192.1 125.3C193.5 108.9 207.2 96 224 96c17.7 0 32 14.3 32 32v7.8c0 12.8-.5 25.6-1.5 38.3l-62.4-48.9zM355.3 253.2l42.8-12.8-12.3 36.8-30.5-23.9zm-190.9-9.5c-40.6 12.2-68.4 49.6-68.4 92v71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c17.5-30.5 31.9-62.7 43.1-95.9L181.1 238.7l-16.7 5zm67.4 46.6c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5V335.6c0-14.1 9.3-26.6 22.8-30.7l49-14.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24H64.3c-.2-2.8-.3-5.6-.3-8.5V368H24z\"]\n};\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [128204, 128392, \"thumb-tack\"], \"f08d\", \"M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faThumbTack = faThumbtack;\nvar faWheatSlash = {\n prefix: 'fas',\n iconName: 'wheat-slash',\n icon: [640, 512, [], \"e339\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L362.5 258.8l28.7-28.7 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L550.5 231c6.2-6.2 6.2-16.4 0-22.6L539.2 197c-34.1-34.1-82.6-44.9-125.9-32.5c12.4-43.3 1.5-91.8-32.5-125.9L369.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L335.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-3.3 3.3-6.3 6.8-9 10.4L38.8 5.1zm255 322.4l-50.6-39.9-29.5 29.5c-3.4-27.3-15.5-53.8-36.5-74.8L165.8 231c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L73.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l36.3-36.3zM536 0c-48.6 0-88 39.4-88 88v24c0 8.8 7.2 16 16 16h24c48.6 0 88-39.4 88-88V16c0-8.8-7.2-16-16-16H536z\"]\n};\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [127942], \"f091\", \"M400 0H176c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8H24C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H357.9C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24H446.4c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112h84.4c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6h84.4c-5.1 66.3-31.1 111.2-63 142.3z\"]\n};\nvar faCloudsSun = {\n prefix: 'fas',\n iconName: 'clouds-sun',\n icon: [640, 512, [], \"f746\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 30.7 5.1c-26.4 10.6-47 32.6-55.7 59.9C276.8 132.7 244.8 112 208 112c-53 0-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17.1c-4.5 3.1-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm450.6 75c-18.9-35.1-56-59-98.7-59c-12.9 0-25.3 2.2-36.8 6.2C435.9 206.6 403.7 192 368 192c-16.7 0-32.6 3.2-47.3 9c-.4-2.9-.6-5.9-.6-8.9c0-35.3 28.6-64 64-64c7.4 0 14.6 1.3 21.2 3.6c11.5-30.1 40.6-51.6 74.8-51.6c38.9 0 71.3 27.8 78.5 64.6c3.1-.4 6.3-.6 9.5-.6c39.8 0 72 32.2 72 72c0 30.4-18.8 56.3-45.4 66.9zm45.3 148.9c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faPersonPraying = {\n prefix: 'fas',\n iconName: 'person-praying',\n icon: [448, 512, [128720, \"pray\"], \"f683\", \"M352 64A64 64 0 1 0 224 64a64 64 0 1 0 128 0zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432H72c-22.1 0-40 17.9-40 40s17.9 40 40 40H280c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z\"]\n};\nvar faPray = faPersonPraying;\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [128296], \"f6e3\", \"M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6V105.5L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0h18.1c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z\"]\n};\nvar faFaceVomit = {\n prefix: 'fas',\n iconName: 'face-vomit',\n icon: [576, 512, [], \"e3a0\", \"M544 256c0 72.5-30.1 137.9-78.5 184.5l-16.7-5.6c-11.9-4-21.5-12.3-27.2-22.9c16.7-12.6 26.4-27.7 26.4-44c0-44.2-71.6-80-160-80s-160 35.8-160 80c0 16.3 9.7 31.4 26.4 44c-5.7 10.6-15.2 19-27.2 22.9l-16.7 5.6C62.1 393.9 32 328.5 32 256C32 114.6 146.6 0 288 0S544 114.6 544 256zM148 141.1c0 2.8 1 5.5 2.8 7.6l36 43.2-36 43.2c-1.8 2.1-2.8 4.8-2.8 7.6c0 9 9.6 14.7 17.5 10.5l89.9-47.9c10.7-5.7 10.7-21.1 0-26.8l-89.9-47.9c-7.9-4.2-17.5 1.5-17.5 10.5zm262.5-10.5l-89.9 47.9c-10.7 5.7-10.7 21.1 0 26.8l89.9 47.9c7.9 4.2 17.5-1.5 17.5-10.5c0-2.8-1-5.5-2.8-7.6l-36-43.2 36-43.2c1.8-2.1 2.8-4.8 2.8-7.6c0-9-9.6-14.7-17.5-10.5zM32 448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm480 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM192 396.1V338.7c23.6-11.1 57.3-18.7 96-18.7s72.4 7.6 96 18.7v57.4c0 31 19.8 58.5 49.2 68.3l34.1 11.4c7.6 2.5 12.7 9.6 12.7 17.6c0 10.3-8.3 18.6-18.6 18.6H114.6c-10.3 0-18.6-8.3-18.6-18.6c0-8 5.1-15.1 12.7-17.6l34.1-11.4c29.4-9.8 49.2-37.3 49.2-68.3zM304 384a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm-48 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faSpeakers = {\n prefix: 'fas',\n iconName: 'speakers',\n icon: [640, 512, [], \"f8e0\", \"M64 0H280.4C265.2 17 256 39.4 256 64V257.6c-20.3-20.7-48.7-33.6-80-33.6c-61.9 0-112 50.1-112 112s50.1 112 112 112c31.3 0 59.7-12.9 80-33.6V448c0 24.6 9.2 47 24.4 64H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0zM320 503.4c-19.1-11.1-32-31.7-32-55.4V336 64c0-23.7 12.9-44.4 32-55.4C329.4 3.1 340.3 0 352 0H576c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H352c-11.7 0-22.6-3.1-32-8.6zM352 336a112 112 0 1 0 224 0 112 112 0 1 0 -224 0zM176 272a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm0-112a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM400 336a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM512 112a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faTtyAnswer = {\n prefix: 'fas',\n iconName: 'tty-answer',\n icon: [640, 512, [\"teletype-answer\"], \"e2b9\", \"M117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24zM304 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zm0 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16zm80-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16V80zM496 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H592c-8.8 0-16-7.2-16-16V80zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H592c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16zM384 176c0-8.8 7.2-16 16-16H528c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16V176z\"]\n};\nvar faTeletypeAnswer = faTtyAnswer;\nvar faMugTeaSaucer = {\n prefix: 'fas',\n iconName: 'mug-tea-saucer',\n icon: [640, 512, [], \"e1f5\", \"M208 82.7V32H128c-17.7 0-32 14.3-32 32V288c0 53 43 96 96 96H384c53 0 96-43 96-96h32c70.7 0 128-57.3 128-128s-57.3-128-128-128H448 240V82.7c0 8.5 3.4 16.6 9.4 22.6l29.3 29.3c6 6 9.4 14.1 9.4 22.6V224c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V157.3c0-8.5 3.4-16.6 9.4-22.6l29.3-29.3c6-6 9.4-14.1 9.4-22.6zM480 96h32c35.3 0 64 28.7 64 64s-28.7 64-64 64H480V96zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faDiagramLeanCanvas = {\n prefix: 'fas',\n iconName: 'diagram-lean-canvas',\n icon: [640, 512, [], \"e156\", \"M512 96V304h64V96H512zm-48 0H400v80h64V96zM352 96H288V304h64V96zM240 96H176v80h64V96zM128 96H64V304h64V96zM64 352v64H296V352H64zm280 64H576V352H344v64zM0 96C0 60.7 28.7 32 64 32H576c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM240 304V224H176v80h64zm224-80H400v80h64V224z\"]\n};\nvar faAlt = {\n prefix: 'fas',\n iconName: 'alt',\n icon: [640, 512, [], \"e08a\", \"M448 64c-9.7 0-18.9 4.4-25 12L176.6 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H192c9.7 0 18.9-4.4 25-12L463.4 128H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H448zm0 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H448z\"]\n};\nvar faDial = {\n prefix: 'fas',\n iconName: 'dial',\n icon: [576, 512, [\"dial-med-high\"], \"e15b\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM175.1 174.2c56.7-56.7 145.4-62 208-15.7L271.3 270.4c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L417.1 192.4c46.2 62.6 41 151.3-15.7 208c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3zM512 288a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 96a32 32 0 1 1 64 0A32 32 0 1 1 64 96zM480 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM64 480a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm416-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faDialMedHigh = faDial;\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M224 0c17.7 0 32 14.3 32 32V240H192V32c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zM93.3 51.2L175.9 240H106.1L34.7 76.8C27.6 60.6 35 41.8 51.2 34.7s35.1 .3 42.1 16.5zm27 221.3l-.2-.5h69.9H216c22.1 0 40 17.9 40 40s-17.9 40-40 40H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H226.3c-42.4 0-83.1-16.9-113.1-46.9l-11.6-11.6C77.5 429.5 64 396.9 64 363V336c0-32.7 24.6-59.7 56.3-63.5z\"]\n};\nvar faCircleTrash = {\n prefix: 'fas',\n iconName: 'circle-trash',\n icon: [512, 512, [\"trash-circle\"], \"e126\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 128h41.4l11.3-11.3c3-3 7.1-4.7 11.3-4.7h64c4.2 0 8.3 1.7 11.3 4.7L310.6 128H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H352L338.4 354.7c-1.4 16.6-15.2 29.3-31.9 29.3H205.4c-16.6 0-30.5-12.8-31.9-29.3L160 192z\"]\n};\nvar faTrashCircle = faCircleTrash;\nvar faRotate = {\n prefix: 'fas',\n iconName: 'rotate',\n icon: [512, 512, [128260, \"sync-alt\"], \"f2f1\", \"M142.9 142.9c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5c0 0 0 0 0 0H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5c7.7-21.8 20.2-42.3 37.8-59.8zM16 312v7.6 .7V440c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l41.6-41.6c87.6 86.5 228.7 86.2 315.8-1c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.2 62.2-162.7 62.5-225.3 1L185 329c6.9-6.9 8.9-17.2 5.2-26.2s-12.5-14.8-22.2-14.8H48.4h-.7H40c-13.3 0-24 10.7-24 24z\"]\n};\nvar faSyncAlt = faRotate;\nvar faCircleQuarters = {\n prefix: 'fas',\n iconName: 'circle-quarters',\n icon: [512, 512, [], \"e3f8\", \"M120.2 391.8L256 256 391.8 391.8C426.5 357 448 309 448 256s-21.5-101-56.2-135.8L256 256 120.2 120.2C85.5 155 64 203 64 256s21.5 101 56.2 135.8zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z\"]\n};\nvar faTowerControl = {\n prefix: 'fas',\n iconName: 'tower-control',\n icon: [448, 512, [], \"e2a2\", \"M184 0c-13.3 0-24 10.7-24 24s10.7 24 24 24h16V96H160c-17.7 0-32 14.3-32 32H42.6C16 128-3.2 153.4 4.1 179L44.5 320.2C28.5 321.9 16 335.5 16 352c0 17.7 14.3 32 32 32H80v96c0 17.7 14.3 32 32 32H336c17.7 0 32-14.3 32-32V384l32 0c17.7 0 32-14.3 32-32c0-16.5-12.5-30.1-28.5-31.8L443.9 179c7.3-25.6-11.9-51-38.5-51H320c0-17.7-14.3-32-32-32H248V48h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H224 184zM128 192V320H111c-.1-.3-.1-.5-.2-.8L74.4 192H128zm48 128V192h96V320l-96 0zM320 192h53.6L337.2 319.2l-.1 .3-.1 .5H320V192z\"]\n};\nvar faArrowUpTriangleSquare = {\n prefix: 'fas',\n iconName: 'arrow-up-triangle-square',\n icon: [576, 512, [\"sort-shapes-up\"], \"f88a\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM443.1 47C437.3 37.7 427 32 416 32s-21.3 5.7-27.1 15l-80 128c-6.2 9.9-6.5 22.3-.9 32.5s16.4 16.5 28 16.5H496c11.6 0 22.3-6.3 28-16.5s5.3-22.6-.9-32.5l-80-128zM320 336v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48z\"]\n};\nvar faSortShapesUp = faArrowUpTriangleSquare;\nvar faWhale = {\n prefix: 'fas',\n iconName: 'whale',\n icon: [640, 512, [128011], \"f72c\", \"M175.8 13.4c-1-5.9-5.2-10.8-10.9-12.6s-12-.3-16.2 3.9L108 45.4C89.7 63.7 81.4 89.6 85.6 115.1l7.9 47.4L43.6 212.4C15.7 240.3 0 278.2 0 317.6C0 407.3 72.7 480 162.4 480H544c53 0 96-43 96-96V272.1C640 192.5 575.5 128 495.9 128c-82.5 0-162.4 29.5-225 83.2L156.4 309.4c-8 6.8-18.1 10.6-28.6 10.6h-1.1c-18.3 0-34.5-11.7-40.3-29c-4-12-2.4-25.2 4.3-35.9l37.6-60.1 44.7 7.5c25.5 4.2 51.5-4.1 69.7-22.3l40.7-40.7c4.2-4.2 5.8-10.5 3.9-16.2s-6.7-9.9-12.6-10.9L189.9 98.1 175.8 13.4zM400 280a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [129302], \"f544\", \"M320 0c17.7 0 32 14.3 32 32V96H472c39.8 0 72 32.2 72 72V440c0 39.8-32.2 72-72 72H168c-39.8 0-72-32.2-72-72V168c0-39.8 32.2-72 72-72H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [512, 512, [9774], \"f67c\", \"M224 445.3V323.5l-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8V66.7C133.2 81.9 64 160.9 64 256c0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5L288 323.5V445.3c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1c0-95.1-69.2-174.1-160-189.3V240.8L422.8 351.1zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faPartyHorn = {\n prefix: 'fas',\n iconName: 'party-horn',\n icon: [512, 512, [], \"e31b\", \"M32 32a32 32 0 1 1 64 0A32 32 0 1 1 32 32zM448 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM167 153c-9.4-9.4-9.4-24.6 0-33.9l8.3-8.3c16.7-16.7 27.2-38.6 29.8-62.1l3-27.4C209.6 8.2 221.5-1.3 234.7 .1s22.7 13.3 21.2 26.5l-3 27.4c-3.8 34.3-19.2 66.3-43.6 90.7L201 153c-9.4 9.4-24.6 9.4-33.9 0zM359 311l8.2-8.3c24.4-24.4 56.4-39.8 90.7-43.6l27.4-3c13.2-1.5 25 8 26.5 21.2s-8 25-21.2 26.5l-27.4 3c-23.5 2.6-45.4 13.1-62.1 29.8L393 345c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9zM506.3 8.5c8.6 10.1 7.3 25.3-2.8 33.8l-10 8.5c-14.8 12.5-33.7 19.1-53 18.6c-16.6-.4-30.6 12.4-31.6 29l-1.8 30c-2.5 42.5-38.3 75.3-80.8 74.2c-7.6-.2-15 2.4-20.7 7.3l-10 8.5c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l10-8.5c14.8-12.5 33.7-19.1 53-18.6c16.6 .4 30.6-12.4 31.6-29l1.8-30c2.5-42.5 38.3-75.3 80.8-74.2c7.6 .2 15-2.4 20.7-7.3l10-8.5c10.1-8.6 25.3-7.3 33.8 2.8zM150.6 201.4l160 160c7.7 7.7 11 18.8 8.6 29.4s-9.9 19.4-20 23.2l-39.7 14.9L83.1 252.5 98 212.8c3.8-10.2 12.6-17.7 23.2-20s21.7 1 29.4 8.6zM48.2 345.6l22.6-60.2L226.6 441.2l-60.2 22.6L48.2 345.6zM35.9 378.5l97.6 97.6L43.2 510c-11.7 4.4-25 1.5-33.9-7.3S-2.4 480.5 2 468.8l33.8-90.3z\"]\n};\nvar faGears = {\n prefix: 'fas',\n iconName: 'gears',\n icon: [640, 512, [\"cogs\"], \"f085\", \"M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8h-.7c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCogs = faGears;\nvar faSunBright = {\n prefix: 'fas',\n iconName: 'sun-bright',\n icon: [512, 512, [\"sun-alt\"], \"e28f\", \"M256 0c-13.3 0-24 10.7-24 24V88c0 13.3 10.7 24 24 24s24-10.7 24-24V24c0-13.3-10.7-24-24-24zm0 400c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V424c0-13.3-10.7-24-24-24zM488 280c13.3 0 24-10.7 24-24s-10.7-24-24-24H424c-13.3 0-24 10.7-24 24s10.7 24 24 24h64zM112 256c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H88c13.3 0 24-10.7 24-24zM437 108.9c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-45.3 45.3c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L437 108.9zM154.2 357.8c-9.4-9.4-24.6-9.4-33.9 0L75 403.1c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l45.3-45.3c9.4-9.4 9.4-24.6 0-33.9zM403.1 437c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-45.3-45.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L403.1 437zM154.2 154.2c9.4-9.4 9.4-24.6 0-33.9L108.9 75c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l45.3 45.3c9.4 9.4 24.6 9.4 33.9 0zM256 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n};\nvar faSunAlt = faSunBright;\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M0 488V171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4V488c0 13.3-10.7 24-24 24H568c-13.3 0-24-10.7-24-24V224c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32V488c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm488 24l-336 0c-13.3 0-24-10.7-24-24V432H512l0 56c0 13.3-10.7 24-24 24zM128 400V336H512v64H128zm0-96V224H512l0 80H128z\"]\n};\nvar faConveyorBeltArm = {\n prefix: 'fas',\n iconName: 'conveyor-belt-arm',\n icon: [640, 512, [], \"e5f8\", \"M240.9 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H267.1l-5.7 34c.8 1 1.5 2 2.3 3l204.5 27.3c17.5 2.3 29.8 18.4 27.5 35.9c-1.4 10.2-7.4 18.7-15.7 23.5V208c0 8.8-7.2 16-16 16s-16-7.2-16-16V190.1L255.2 164.5c-8.4 7.2-19.3 11.6-31.2 11.6c-26.5 0-48-21.5-48-48c0-17.1 8.9-32 22.3-40.6L202.2 64H160c-17.7 0-32-14.3-32-32s14.3-32 32-32h79c.6 0 1.2 0 1.9 0zM240 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM416 280c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v40h32c53 0 96 43 96 96s-43 96-96 96H96c-53 0-96-43-96-96s43-96 96-96l0-40c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v40h64V280c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v40h64V280zM128 448a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm224-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm160 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faLockKeyholeOpen = {\n prefix: 'fas',\n iconName: 'lock-keyhole-open',\n icon: [576, 512, [\"lock-open-alt\"], \"f3c2\", \"M432 64c-44.2 0-80 35.8-80 80v48h32c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H288V144C288 64.5 352.5 0 432 0s144 64.5 144 144v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V144c0-44.2-35.8-80-80-80zM256 384c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h64z\"]\n};\nvar faLockOpenAlt = faLockKeyholeOpen;\nvar faSquareFragile = {\n prefix: 'fas',\n iconName: 'square-fragile',\n icon: [448, 512, [\"box-fragile\", \"square-wine-glass-crack\"], \"f49b\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 86.3C128 106 138 96 150.3 96H176l32 64-32 32 80 64-32-64 48-32L240 96h57.7C310 96 320 106 320 118.3V208c0 47.6-34.6 87.1-80 94.7V384h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V302.7c-45.4-7.6-80-47.1-80-94.7V118.3z\"]\n};\nvar faBoxFragile = faSquareFragile;\nvar faSquareWineGlassCrack = faSquareFragile;\nvar faArrowUpRightDots = {\n prefix: 'fas',\n iconName: 'arrow-up-right-dots',\n icon: [576, 512, [], \"e4b7\", \"M160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L9.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V160c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H160zM576 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM448 208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm128 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM272 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM144 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM576 336a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-48-80a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faSquareN = {\n prefix: 'fas',\n iconName: 'square-n',\n icon: [448, 512, [], \"e277\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm90.3 104.5L288 294.5V152c0-13.3 10.7-24 24-24s24 10.7 24 24V360c0 10.1-6.3 19.1-15.7 22.5s-20.1 .7-26.6-7L160 217.5V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-10.1 6.3-19.1 15.7-22.5s20.1-.7 26.6 7z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M208.5 62.3l28.1-36.9C248.8 9.4 267.8 0 288 0c28.5 0 53.6 18.7 61.8 46l17.8 59.4c10.3 34.4 36.1 62 69.8 74.6l39.8 14.9c20.9 7.9 34.8 27.9 34.8 50.2c0 16.9-7.9 32.8-21.5 42.9l-67.3 50.5c-24.3 18.2-37.2 47.9-33.8 78.1l2.5 22.7c4.3 38.7-26 72.6-65 72.6c-14.8 0-29.3-5.1-40.8-14.3l-55.4-44.3c-4.5-3.6-9.3-6.7-14.5-9.2c-15.8-7.9-33.7-10.4-51-7.3L82.4 451.9C47.8 458.2 16 431.6 16 396.5c0-13.2 4.7-26 13.1-36.2l11.2-13.4c14.6-17.4 22.6-39.4 22.6-62.1c0-18.8-5.5-37.2-15.8-53L8.8 173.5C3.1 164.7 0 154.4 0 143.9c0-33.4 30.1-58.8 63-53.2l51.3 8.7c35.9 6.1 72.2-8.2 94.2-37.1z\"]\n};\nvar faFaceGrinHearts = {\n prefix: 'fas',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM199.3 129.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm154.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nvar faGrinHearts = faFaceGrinHearts;\nvar faMeter = {\n prefix: 'fas',\n iconName: 'meter',\n icon: [512, 512, [], \"e1e8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm96 0v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm96 0v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faMandolin = {\n prefix: 'fas',\n iconName: 'mandolin',\n icon: [512, 512, [], \"f6f9\", \"M435.3 3.6C444.8-2.3 457.1-.9 465 7l40 40c7.9 7.9 9.3 20.2 3.4 29.7l-40 64c-3.2 5.1-8.2 8.8-14 10.4L388 169.2l-65.9 65.9C323.7 322.4 311.5 512 176 512C78.8 512 0 433.2 0 336C0 200.5 189.6 188.3 276.9 189.8L342.8 124l18.1-66.3c1.6-5.8 5.3-10.8 10.4-14l64-40zM208 352a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [9859], \"f524\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM352 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M64 0H242.7c17 0 33.3 6.7 45.3 18.7L365.3 96c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0zM96 192c-17.7 0-32 14.3-32 32v32h64V192H96zM64 352h80 96 80V288H240 144 64v64zM320 224c0-17.7-14.3-32-32-32H256v64h64V224zM160 192v64h64V192H160zM288 448c17.7 0 32-14.3 32-32V384H256v64h32zM160 384v64h64V384H160zM64 416c0 17.7 14.3 32 32 32h32V384H64v32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [512, 512, [9895, \"transgender-alt\"], \"f225\", \"M112 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-31 31L112 78.1l7-7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-7 7 15.2 15.2C187.7 107.6 220.5 96 256 96s68.3 11.6 94.9 31.2l68.8-68.8-31-31c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9h96c8.8 0 16 7.2 16 16v96c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-31-31-68.8 68.8C404.4 187.7 416 220.5 416 256c0 80.2-59 146.6-136 158.2V432h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v8c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V414.2C155 402.6 96 336.2 96 256c0-35.5 11.6-68.3 31.2-94.9L112 145.9l-7 7c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l7-7L58.3 92.3l-31 31c-4.6 4.6-11.5 5.9-17.4 3.5S0 118.5 0 112V16C0 7.2 7.2 0 16 0h96zM352 256a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nvar faTransgenderAlt = faTransgender;\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [384, 512, [9791], \"f223\", \"M72.1 7C85.8-4 106-1.8 117 12c17.6 22 44.7 36 75 36s57.3-14 75-36c11.1-13.8 31.2-16 45-5s16 31.2 5 45c-7.8 9.7-16.6 18.4-26.4 26.1C337.3 109.7 368 163.3 368 224c0 89.1-66.2 162.7-152 174.4V424h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V472H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V398.4C82.2 386.7 16 313.1 16 224c0-60.7 30.7-114.3 77.5-145.9C83.7 70.5 74.9 61.7 67.1 52c-11.1-13.8-8.8-33.9 5-45zM80 224a112 112 0 1 0 224 0A112 112 0 1 0 80 224z\"]\n};\nvar faUpFromBracket = {\n prefix: 'fas',\n iconName: 'up-from-bracket',\n icon: [448, 512, [], \"e590\", \"M73.9 134.1L196.7 11.3C203.9 4.1 213.8 0 224 0s20.1 4.1 27.3 11.3L374.1 134.1c6.4 6.4 9.9 15 9.9 24c0 18.7-15.2 33.9-33.9 33.9H288V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192H97.9C79.2 192 64 176.8 64 158.1c0-9 3.6-17.6 9.9-24zM64 352v64c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V352c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 53-43 96-96 96H96c-53 0-96-43-96-96V352c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faKnifeKitchen = {\n prefix: 'fas',\n iconName: 'knife-kitchen',\n icon: [576, 512, [128298], \"f6f5\", \"M488 0c9.4 0 18.3 3.7 25 10.3L557.7 55c6.6 6.6 10.3 15.6 10.3 25s-3.7 18.3-10.3 25l-97 97c-3 3-4.7 7.1-4.7 11.3v31.9c0 17.4-9.4 33.5-24.7 42l-31 17.2L295.9 200.1l-11.3-11.3L463 10.3C469.7 3.7 478.6 0 488 0zM432 160a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM262 211.4l11.3 11.3 126 126c6.2 6.2 6.2 16.4 0 22.6C321.4 449.2 235.3 512 112 512c-25.6 0-50.9-4.2-69.5-8.4c-9.4-2.1-17.2-4.2-22.7-5.7c-2.8-.8-4.9-1.4-6.5-1.9c-.8-.2-1.4-.4-1.8-.6l-.5-.2-.1 0 0 0 0 0 0 0s0 0 5.1-15.2l-5.1 15.2c-5.3-1.8-9.2-6.1-10.5-11.5s.3-11.1 4.3-15l246-246L262 211.4z\"]\n};\nvar faBorderRight = {\n prefix: 'fas',\n iconName: 'border-right',\n icon: [448, 512, [], \"f852\", \"M416 32c17.7 0 32 14.3 32 32l0 384c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-384c0-17.7 14.3-32 32-32zM320 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM128 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192-32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm192-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArrowTurnDown = {\n prefix: 'fas',\n iconName: 'arrow-turn-down',\n icon: [384, 512, [\"level-down\"], \"f149\", \"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"]\n};\nvar faLevelDown = faArrowTurnDown;\nvar faSpade = {\n prefix: 'fas',\n iconName: 'spade',\n icon: [512, 512, [9824], \"f2f4\", \"M278 12.5c-12.3-11.7-31.7-11.7-44 0L168 75.1 40 196.3c-51.3 48.6-53.5 129.6-4.9 181s129.6 53.5 181 4.9l8-7.6V448H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V374.6l8 7.6c51.3 48.6 132.3 46.4 181-4.9s46.4-132.3-4.9-181L344 75.1 278 12.5z\"]\n};\nvar faCardSpade = {\n prefix: 'fas',\n iconName: 'card-spade',\n icon: [384, 512, [], \"e3ec\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM175 137.8c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6 64 64c21.9 21.9 21.9 57.3 0 79.2s-57.3 21.9-79.2 0l-7.4-7.4c-.3-.3-.6-.6-1-.9V336h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V295.2c-.3 .3-.7 .6-1 .9l-7.4 7.4c-21.9 21.9-57.3 21.9-79.2 0s-21.9-57.3 0-79.2l64-64L175 137.8z\"]\n};\nvar faLineColumns = {\n prefix: 'fas',\n iconName: 'line-columns',\n icon: [512, 512, [], \"f870\", \"M224 64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H192c17.7 0 32-14.3 32-32zm0 128c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H192c17.7 0 32-14.3 32-32zM0 320c0 17.7 14.3 32 32 32H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM224 448c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H192c17.7 0 32-14.3 32-32zM288 64c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32zM512 192c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32zM288 320c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32zM512 448c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32z\"]\n};\nvar faArrowRightToLine = {\n prefix: 'fas',\n iconName: 'arrow-right-to-line',\n icon: [448, 512, [8677, \"arrow-to-right\"], \"f340\", \"M448 96c0-17.7-14.3-32-32-32s-32 14.3-32 32V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96zM310.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l178.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faArrowToRight = faArrowRightToLine;\nvar faPersonFallingBurst = {\n prefix: 'fas',\n iconName: 'person-falling-burst',\n icon: [640, 512, [], \"e547\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 9.8c0 39-23.7 74-59.9 88.4C71.6 154.5 32 213 32 278.2V352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-73.8c0-10 1.6-19.8 4.5-29L261.1 497.4c9.6 14.8 29.4 19.1 44.3 9.5s19.1-29.4 9.5-44.3L222.6 320H224l80 0 38.4 51.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C341.3 263.1 327.1 256 312 256l-71.5 0-56.8-80.2-.2-.3c44.7-29 72.5-79 72.5-133.6l0-9.8zM96 80A48 48 0 1 0 0 80a48 48 0 1 0 96 0zM464 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 78.7-12.2c6.5-1 11.7-5.9 13.1-12.2s-1.1-13-6.5-16.7l-65.6-45.1L603 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L508.3 92.1l-29.4-74C476.4 12 470.6 8 464 8s-12.4 4-14.9 10.1l-29.4 74L343.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7c.1 .3 .1 .6 .2 .8l19.4 0c20.1 0 39.2 7.5 53.8 20.8l18.4 2.9L383 265.3l36.2 48.3c2.1 2.8 3.9 5.7 5.5 8.6L464 286.1z\"]\n};\nvar faFlagPennant = {\n prefix: 'fas',\n iconName: 'flag-pennant',\n icon: [448, 512, [128681, \"pennant\"], \"f456\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352L433 213.6c9-3.4 15-12 15-21.6s-6-18.2-15-21.6L64 32z\"]\n};\nvar faPennant = faFlagPennant;\nvar faConveyorBeltEmpty = {\n prefix: 'fas',\n iconName: 'conveyor-belt-empty',\n icon: [640, 512, [], \"e150\", \"M96 320c-53 0-96 43-96 96s43 96 96 96H544c53 0 96-43 96-96s-43-96-96-96H96zm32 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm160 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faUserGroupSimple = {\n prefix: 'fas',\n iconName: 'user-group-simple',\n icon: [640, 512, [], \"e603\", \"M160 32a104 104 0 1 1 0 208 104 104 0 1 1 0-208zm320 0a104 104 0 1 1 0 208 104 104 0 1 1 0-208zM0 416c0-70.7 57.3-128 128-128h64c70.7 0 128 57.3 128 128v16c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V416zm448 64c-38.3 0-72.7-16.8-96.1-43.5c.1-1.5 .1-3 .1-4.5V416c0-34.9-11.2-67.1-30.1-93.4c5.8-20 24.2-34.6 46.1-34.6H592c26.5 0 48 21.5 48 48v16c0 70.7-57.3 128-128 128H448z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M173.8 5.5c11-7.3 25.4-7.3 36.4 0L228 17.2c6 3.9 13 5.8 20.1 5.4l21.3-1.3c13.2-.8 25.6 6.4 31.5 18.2l9.6 19.1c3.2 6.4 8.4 11.5 14.7 14.7L344.5 83c11.8 5.9 19 18.3 18.2 31.5l-1.3 21.3c-.4 7.1 1.5 14.2 5.4 20.1l11.8 17.8c7.3 11 7.3 25.4 0 36.4L366.8 228c-3.9 6-5.8 13-5.4 20.1l1.3 21.3c.8 13.2-6.4 25.6-18.2 31.5l-19.1 9.6c-6.4 3.2-11.5 8.4-14.7 14.7L301 344.5c-5.9 11.8-18.3 19-31.5 18.2l-21.3-1.3c-7.1-.4-14.2 1.5-20.1 5.4l-17.8 11.8c-11 7.3-25.4 7.3-36.4 0L156 366.8c-6-3.9-13-5.8-20.1-5.4l-21.3 1.3c-13.2 .8-25.6-6.4-31.5-18.2l-9.6-19.1c-3.2-6.4-8.4-11.5-14.7-14.7L39.5 301c-11.8-5.9-19-18.3-18.2-31.5l1.3-21.3c.4-7.1-1.5-14.2-5.4-20.1L5.5 210.2c-7.3-11-7.3-25.4 0-36.4L17.2 156c3.9-6 5.8-13 5.4-20.1l-1.3-21.3c-.8-13.2 6.4-25.6 18.2-31.5l19.1-9.6C65 70.2 70.2 65 73.4 58.6L83 39.5c5.9-11.8 18.3-19 31.5-18.2l21.3 1.3c7.1 .4 14.2-1.5 20.1-5.4L173.8 5.5zM272 192a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM1.3 441.8L44.4 339.3c.2 .1 .3 .2 .4 .4l9.6 19.1c11.7 23.2 36 37.3 62 35.8l21.3-1.3c.2 0 .5 0 .7 .2l17.8 11.8c5.1 3.3 10.5 5.9 16.1 7.7l-37.6 89.3c-2.3 5.5-7.4 9.2-13.3 9.7s-11.6-2.2-14.8-7.2L74.4 455.5l-56.1 8.3c-5.7 .8-11.4-1.5-15-6s-4.3-10.7-2.1-16zm248 60.4L211.7 413c5.6-1.8 11-4.3 16.1-7.7l17.8-11.8c.2-.1 .4-.2 .7-.2l21.3 1.3c26 1.5 50.3-12.6 62-35.8l9.6-19.1c.1-.2 .2-.3 .4-.4l43.2 102.5c2.2 5.3 1.4 11.4-2.1 16s-9.3 6.9-15 6l-56.1-8.3-32.2 49.2c-3.2 5-8.9 7.7-14.8 7.2s-11-4.3-13.3-9.7z\"]\n};\nvar faTicketSimple = {\n prefix: 'fas',\n iconName: 'ticket-simple',\n icon: [576, 512, [\"ticket-alt\"], \"f3ff\", \"M0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64v64c0 8.8-7.4 15.7-15.7 18.6C541.5 217.1 528 235 528 256s13.5 38.9 32.3 45.4c8.3 2.9 15.7 9.8 15.7 18.6v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320c0-8.8 7.4-15.7 15.7-18.6C34.5 294.9 48 277 48 256s-13.5-38.9-32.3-45.4C7.4 207.7 0 200.8 0 192V128z\"]\n};\nvar faTicketAlt = faTicketSimple;\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16z\"]\n};\nvar faAnglesLeft = {\n prefix: 'fas',\n iconName: 'angles-left',\n icon: [512, 512, [171, \"angle-double-left\"], \"f100\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n};\nvar faAngleDoubleLeft = faAnglesLeft;\nvar faCamcorder = {\n prefix: 'fas',\n iconName: 'camcorder',\n icon: [576, 512, [128249, \"video-handheld\"], \"f8a8\", \"M128 96c-17.7 0-32 14.3-32 32v32H320c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V224c0-23.7 12.9-44.4 32-55.4V128c0-53 43-96 96-96H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H128zm431.1 67.8c10.4 5.6 16.9 16.4 16.9 28.2V448c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 401.1V384 256 238.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6zM80 224c-8.8 0-16 7.2-16 16s7.2 16 16 16H304c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z\"]\n};\nvar faVideoHandheld = faCamcorder;\nvar faPancakes = {\n prefix: 'fas',\n iconName: 'pancakes',\n icon: [512, 512, [129374], \"e42d\", \"M256 192c0-17.7 14.3-31.9 32-32.6c108.6-4.4 192-31.1 192-63.4c0-35.3-100.3-64-224-64S32 60.7 32 96c0 13.8 15.3 26.6 41.3 37C86.5 138.3 96 150.6 96 164.8V272c0 17.7 14.3 32 32 32s32-14.3 32-32V171.7c0-9.5 8.1-16.8 17.5-15.7c8.1 .9 14.5 7.6 14.5 15.7V224c0 17.7 14.3 32 32 32s32-14.3 32-32V192zM192 80c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zM14.9 133C5.3 141.4 0 150.5 0 160c0 20.3 24.2 38.8 64 52.9V164.8c0-.1-.1-.2-.2-.4c-.4-.5-1.2-1.3-2.4-1.8c-14.7-5.9-28.7-13.4-39.6-22.9c-2.3-2-4.6-4.3-6.8-6.8zM286.1 239.5C413.3 234.8 512 201 512 160c0-9.5-5.3-18.6-14.9-27c-4 4.5-8.5 8.4-12.7 11.5c-13.4 10-30.9 17.8-49.8 24C396.6 181 345.5 189 289.3 191.3c-.5 0-.9 .2-1.2 .5c-.1 .1-.1 .2-.1 .2l0 32c0 5.3-.7 10.5-1.9 15.5zM7.2 221.1C2.5 227.2 0 233.5 0 240c0 21 25.8 40 68 54.3c-2.6-6.9-4-14.5-4-22.3V246.7c-21.5-6.8-41.1-15.2-56.8-25.6zM256 320c141.4 0 256-35.8 256-80c0-6.5-2.5-12.8-7.2-18.9c-16.1 10.6-36.2 19.1-58.3 26c-47.8 14.9-111.2 24-180.2 24.8c-11.3 10-26.1 16.1-42.4 16.1c-11.8 0-22.9-3.2-32.4-8.8c-1.6 14.1-7.8 26.9-17 36.7c25.6 2.7 52.9 4.1 81.4 4.1zm256 0c0-6.5-2.5-12.8-7.2-18.9c-16.1 10.6-36.2 19.1-58.3 26C396.4 342.8 329 352 256 352s-140.4-9.2-190.6-24.9c-22-6.9-42.2-15.4-58.3-26C2.5 307.2 0 313.5 0 320c0 44.2 114.6 80 256 80s256-35.8 256-80zm0 80c0-6.5-2.5-12.8-7.2-18.9c-16.1 10.6-36.2 19.1-58.3 26C396.4 422.8 329 432 256 432s-140.4-9.2-190.6-24.9c-22-6.9-42.2-15.4-58.3-26C2.5 387.2 0 393.5 0 400c0 44.2 114.6 80 256 80s256-35.8 256-80z\"]\n};\nvar faAlbumCircleUser = {\n prefix: 'fas',\n iconName: 'album-circle-user',\n icon: [576, 512, [], \"e48d\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64v96.7c-5.3-.5-10.6-.7-16-.7c-20.1 0-39.5 3.4-57.5 9.6C352.3 140 293.3 96 224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c12.9 0 25.4-1.5 37.4-4.4c6.5 25.5 18.5 48.7 34.8 68.4H64c-35.3 0-64-28.7-64-64V96zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 144a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm221.7 80.7c-6.2-19-24-32.7-45.1-32.7H399.4c-21 0-38.9 13.7-45.1 32.7C374.5 468.1 401.8 480 432 480s57.5-11.9 77.7-31.3zM480 336a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zM64 96v64h64V96H64zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336zm64 16v64h64V352H64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm80 64H320v64h64V96zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V304zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z\"]\n};\nvar faDiceD10 = {\n prefix: 'fas',\n iconName: 'dice-d10',\n icon: [512, 512, [], \"f6cd\", \"M209.7 16.3C212.4 8.3 206.4 0 198 0V0c-3.8 0-7.3 1.7-9.7 4.6L2.4 237C.8 238.9 0 241.3 0 243.8v0c0 7 6.4 12.1 13.2 10.6l117.6-26.1c5.5-1.2 9.9-5.2 11.7-10.6L209.7 16.3zM8.7 288.2C3.6 289.4 0 293.9 0 299.1v0c0 3.1 1.3 6.1 3.6 8.2L220.7 508.9c2.1 2 4.9 3.1 7.8 3.1v0c6.3 0 11.5-5.1 11.5-11.5V328.8c0-5.3-2.6-10.2-6.9-13.2l-78.7-54.5c-3.7-2.5-8.2-3.4-12.6-2.5L8.7 288.2zM272 500.5c0 6.3 5.1 11.5 11.5 11.5v0c2.9 0 5.7-1.1 7.8-3.1L508.4 307.3c2.3-2.1 3.6-5.1 3.6-8.2v0c0-5.2-3.6-9.8-8.7-10.9L370.2 258.7c-4.4-1-8.9-.1-12.6 2.5l-78.7 54.5c-4.3 3-6.9 7.9-6.9 13.2V500.5zM498.8 254.4c6.8 1.5 13.2-3.7 13.2-10.6v0c0-2.5-.8-4.9-2.4-6.8L323.7 4.6C321.4 1.7 317.8 0 314 0V0c-8.5 0-14.4 8.3-11.7 16.3l67.2 201.5c1.8 5.3 6.2 9.3 11.7 10.6l117.6 26.1zM246.6 6.8L174.8 222.3c-2.2 6.7 .2 14.2 6.1 18.2l66.1 45.7c5.5 3.8 12.7 3.8 18.2 0l66.1-45.7c5.8-4 8.3-11.5 6.1-18.2L265.4 6.8C264 2.7 260.3 0 256 0V0c-4.3 0-8 2.7-9.4 6.8z\"]\n};\nvar faFireplace = {\n prefix: 'fas',\n iconName: 'fireplace',\n icon: [640, 512, [], \"f79a\", \"M0 32V64C0 81.7 14.3 96 32 96H608c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H32C14.3 0 0 14.3 0 32zm608 96H32V480c0 17.7 14.3 32 32 32h96V352c0-88.4 71.6-160 160-160s160 71.6 160 160V512h96c17.7 0 32-14.3 32-32V128zM300.6 258.7c-2-1.8-4.6-2.7-7.1-2.7c-2.6 0-5.2 .9-7.3 2.7c-24.2 21.6-44.7 46.1-59.2 69.7c-14.3 23.2-23.6 48.2-23.6 67.4c0 63.8 51.1 116.3 116.4 116.3c64.5 0 116.4-52.4 116.4-116.3c0-14.7-7-37-17.6-57.4c-10.7-20.7-25.9-42.5-43.9-59c-4.1-3.7-10.4-3.8-14.5 0c-7 6.4-13.5 14.3-19.2 21.5c-12.6-15.1-26-29-40.4-42zm55.6 195.8c-10.9 7.3-22.5 10.9-35.6 10.9c-32.7 0-58.9-21.1-58.9-56.7c0-17.5 10.9-32.7 32.7-59.6c2.9 3.6 45.1 57.5 45.1 57.5L365.7 376c2.2 2.9 3.6 5.8 5.1 8.7c13.1 24 7.3 54.5-14.5 69.8z\"]\n};\nvar faBrowser = {\n prefix: 'fas',\n iconName: 'browser',\n icon: [512, 512, [128468], \"f37e\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 32a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm384 0c0-13.3-10.7-24-24-24H184c-13.3 0-24 10.7-24 24s10.7 24 24 24H424c13.3 0 24-10.7 24-24z\"]\n};\nvar faPenPaintbrush = {\n prefix: 'fas',\n iconName: 'pen-paintbrush',\n icon: [576, 512, [\"pencil-paintbrush\"], \"f618\", \"M95.6 16.4L226.3 147.1l-79.2 79.2L16.4 95.6c-21.9-21.9-21.9-57.3 0-79.2s57.3-21.9 79.2 0zM400 512c-53.6 0-98.5-37.7-109.4-88.1L423.9 290.6c50.3 11 88.1 55.8 88.1 109.4c0 3.9-.2 7.8-.6 11.6c-1.8 17.5 10.2 36.4 27.8 36.4H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H400zM501.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L354.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM76.9 353.2L331.7 98.3 445.7 212.3 190.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2z\"]\n};\nvar faPencilPaintbrush = faPenPaintbrush;\nvar faFishCooked = {\n prefix: 'fas',\n iconName: 'fish-cooked',\n icon: [576, 512, [], \"f7fe\", \"M320 64c120 0 256 128 256 192s-136 192-256 192c-74.8 0-155.9-49.8-206.3-102.8c-6-6.3-15.8-7.2-22.5-1.7L26.1 396.4c-5.3 4.3-12.9 4.8-18.7 1.1s-8.6-10.7-6.9-17.4L30.5 259.9c.6-2.5 .6-5.2 0-7.8L.5 131.9c-1.6-6.5 .9-13.2 6.4-17s12.7-3.8 18.2 0l72 49.5c6.6 4.5 15.5 3.5 21.1-2.2C168.9 110.9 247.4 64 320 64zm-4.7 84.7c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c6.2-6.2 6.2-16.4 0-22.6zm112 16c-6.2-6.2-16.4-6.2-22.6 0l-160 160c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l160-160c6.2-6.2 6.2-16.4 0-22.6zm16 112c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faChairOffice = {\n prefix: 'fas',\n iconName: 'chair-office',\n icon: [448, 512, [], \"f6c1\", \"M160 0H288c35.3 0 64 28.7 64 64V256H96V64c0-35.3 28.7-64 64-64zM64 160v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm384 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zM51.4 305.7C56.8 294.8 67.9 288 80 288H368c12.1 0 23.2 6.8 28.6 17.7l16 32c5 9.9 4.4 21.7-1.4 31.1s-16.1 15.2-27.2 15.2H256v64h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H224 160c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V384H64c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32z\"]\n};\nvar faNestingDolls = {\n prefix: 'fas',\n iconName: 'nesting-dolls',\n icon: [640, 512, [], \"e3ba\", \"M192 0c61.9 0 112 50.1 112 112V224H80V112C80 50.1 130.1 0 192 0zm-8.7 64.9c-11.7 15.1-28.7 26-48.2 29.7c-4 .8-7.2 4.2-6.8 8.2c1.5 14 7.6 27.7 18.4 38.5c25 25 65.5 25 90.5 0c10.8-10.8 16.9-24.4 18.4-38.5c.4-4.1-2.7-7.5-6.8-8.2c-19.5-3.7-36.5-14.6-48.2-29.7c-4.1-5.3-13.2-5.3-17.3 0zM635.5 474.1c5.2 7.3 5.9 16.9 1.8 24.9s-12.4 13-21.3 13H312c-9 0-17.2-5-21.3-13c-4.1-8-3.4-17.6 1.8-24.9l0 0 .2-.3c.2-.3 .6-.8 1-1.5c.9-1.4 2.3-3.5 4-6.3c3.4-5.6 7.9-13.8 12.5-23.8c9.2-20.3 17.8-46.8 17.8-74.1v-8c0-75.1 60.9-136 136-136s136 60.9 136 136v8c0 27.3 8.6 53.7 17.8 74.1c4.6 10 9.1 18.2 12.5 23.8c1.7 2.8 3.1 5 4 6.3c.5 .7 .8 1.2 1 1.5l.2 .3 0 0 0 0zM455.3 320.9C440.7 339.8 417.8 352 392 352c-4.3 0-8 3.3-7.6 7.6c1.7 17.9 9.4 35.3 23.1 49c31.2 31.2 81.9 31.2 113.1 0c13.7-13.7 21.4-31.1 23.1-49c.4-4.3-3.3-7.6-7.6-7.6c-25.8 0-48.7-12.2-63.3-31.1c-4.1-5.3-13.2-5.3-17.3 0zM296 360v8c0 21-6.8 42.7-15 60.8c-4 8.7-7.9 15.8-10.8 20.6c-1.4 2.4-2.6 4.1-3.2 5.2c-.3 .5-.6 .9-.7 1l0 0 0 .1 0 0 0 0c-11.7 16.6-13.5 38.1-4.9 56.3H74.5c-17 0-33.4-6.7-42.7-20.9C17.9 469.7 0 432.8 0 384c0-44.4 20.2-84.4 37.9-119.4c2.7-5.3 8.1-8.6 14-8.6H332.1C309.5 284.6 296 320.7 296 360z\"]\n};\nvar faClockRotateLeft = {\n prefix: 'fas',\n iconName: 'clock-rotate-left',\n icon: [512, 512, [\"history\"], \"f1da\", \"M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z\"]\n};\nvar faHistory = faClockRotateLeft;\nvar faTrumpet = {\n prefix: 'fas',\n iconName: 'trumpet',\n icon: [640, 512, [127930], \"f8e3\", \"M628.7 64.7C635.4 66.8 640 73 640 80V368c0 7-4.6 13.2-11.3 15.3s-14-.4-17.9-6.2l0 0 0 0-.1-.2-.7-.9c-.6-.8-1.5-2.1-2.8-3.8c-2.5-3.3-6.2-8.1-11-13.9c-9.6-11.6-23.6-26.9-40.8-42.3c-35-31.1-81.3-60-131.4-60H400V382c27.6-7.1 48-32.2 48-62V290.8c22 5 43.7 16.4 64 31.2c-1.1 69.8-58 126-128 126H288.1c0 0 0 0-.1 0H192c-70.7 0-128-57.3-128-128c0-23.3 6.2-45.2 17.1-64H46.6c-3.3 9.3-12.2 16-22.6 16c-13.3 0-24-10.7-24-24V200c0-13.3 10.7-24 24-24c10.4 0 19.3 6.7 22.6 16H176V160c0-13.3 10.7-24 24-24s24 10.7 24 24v32h40V160c0-13.3 10.7-24 24-24s24 10.7 24 24v32h40V160c0-13.3 10.7-24 24-24s24 10.7 24 24v32h24c50.1 0 96.4-28.8 131.4-60c17.3-15.3 31.2-30.7 40.8-42.3c4.8-5.8 8.5-10.6 11-13.9c1.2-1.7 2.2-2.9 2.8-3.8l.7-.9 .1-.2 0 0 0 0c4-5.8 11.2-8.3 17.9-6.2zM312 384h40V256H312V384zM224 256V384h40V256H224zm-96 64c0 29.8 20.4 54.9 48 62V258c-27.6 7.1-48 32.2-48 62z\"]\n};\nvar faFaceGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3c-4.1 1.1-8.4 1.7-12.8 1.7c-26.5 0-48-21-48-47c0-5 1.8-11.3 4.6-18.1c.3-.7 .6-1.4 .9-2.1c9-20.2 26.5-44.9 36-57.5c3.2-4.4 9.6-4.4 12.8 0C483.4 20.6 512 61 512 81c0 21.7-14.9 39.8-35.2 45.3zM256 0c51.4 0 99.3 15.2 139.4 41.2c-1.5 3.1-3 6.2-4.3 9.3c-3.4 8-7.1 19-7.1 30.5c0 44.3 36.6 79 80 79c9.6 0 18.8-1.7 27.4-4.8c13.3 30.9 20.6 65 20.6 100.8c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0zM383.8 317.8C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7c5.1-11.8-6.9-22.4-19.2-18.7zm-166.2-89l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0zm160 0l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0z\"]\n};\nvar faGrinBeamSweat = faFaceGrinBeamSweat;\nvar faFireSmoke = {\n prefix: 'fas',\n iconName: 'fire-smoke',\n icon: [640, 512, [], \"f74b\", \"M283.7 0c-3.6 0-7.2 1.2-10 3.7c-33.2 29.7-61.4 63.4-81.4 95.8c-19.7 31.9-32.4 66.2-32.4 92.6c0 30 8.2 58.3 22.7 82.4c4.6 2.6 9 5.4 13.3 8.5c13.7-16.8 30.7-30.8 50.1-40.9c-3.9-9.4-6-20.2-6-32.1c0-24 15-45 45-82c4 5 62 79 62 79l36-42c3 4 5 8 7 12c11.3 20.7 12.3 44.9 4.2 65.2c19.3 10.1 36.2 24 49.9 40.8c4.2-3 8.5-5.8 12.9-8.3c14.6-24.1 23-52.4 23-82.5c0-20.2-9.6-50.9-24.2-79C441.1 84.7 420.2 54.7 395.5 32c-5.6-5.1-14.4-5.2-20 0c-9.6 8.8-18.6 19.6-26.5 29.5c-17.3-20.7-35.8-39.9-55.5-57.7c-2.8-2.5-6.3-3.7-9.8-3.8zM0 400c0 61.9 50.1 112 112 112H320 528c61.9 0 112-50.1 112-112s-50.1-112-112-112c-37 0-69.9 18-90.3 45.7C418.2 288 372.8 256 320 256s-98.2 32-117.7 77.7C181.9 306 149 288 112 288C50.1 288 0 338.1 0 400z\"]\n};\nvar faPhoneMissed = {\n prefix: 'fas',\n iconName: 'phone-missed',\n icon: [640, 512, [], \"e226\", \"M232 0c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-39 39 58.7 58.7C282.3 152.4 300.8 160 320 160s37.7-7.6 51.3-21.3L503 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L405.3 172.7C382.6 195.3 352 208 320 208s-62.6-12.7-85.3-35.3L176 113.9l-39 39c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V24c0-13.3 10.7-24 24-24H232zM51.4 489.9l-35.4-62c-9.7-16.9-8.3-38.1 5.5-51.7C72.6 325.9 178.1 256 320 256s247.4 69.9 298.5 120.2c13.9 13.6 15.2 34.8 5.5 51.7l-35.4 62c-7.4 12.9-22.7 19.1-37 14.8L438.8 470.8c-13.5-4.1-22.8-16.5-22.8-30.6V384c-62.3-20.8-129.7-20.8-192 0v56.2c0 14.1-9.3 26.6-22.8 30.6L88.4 504.7c-14.3 4.3-29.6-1.8-37-14.8z\"]\n};\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [\"arrow-right-from-file\"], \"f56e\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V288H216c-13.3 0-24 10.7-24 24s10.7 24 24 24H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM384 336V288H494.1l-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H384zm0-208H256V0L384 128z\"]\n};\nvar faArrowRightFromFile = faFileExport;\nvar faShield = {\n prefix: 'fas',\n iconName: 'shield',\n icon: [512, 512, [128737, \"shield-blank\"], \"f132\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0z\"]\n};\nvar faShieldBlank = faShield;\nvar faArrowUpShortWide = {\n prefix: 'fas',\n iconName: 'arrow-up-short-wide',\n icon: [576, 512, [\"sort-amount-up-alt\"], \"f885\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faSortAmountUpAlt = faArrowUpShortWide;\nvar faArrowsRepeat1 = {\n prefix: 'fas',\n iconName: 'arrows-repeat-1',\n icon: [512, 512, [\"repeat-1-alt\"], \"f366\", \"M21.9 254.4C5.1 248.8-3.9 230.6 1.6 213.9C25.1 143.5 91 96 165.2 96H338.7L297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H165.2c-46.7 0-88.1 29.9-102.8 74.1c-5.6 16.8-23.7 25.8-40.5 20.2zm468.2 3.3c16.8 5.6 25.8 23.7 20.2 40.5C486.9 368.5 421 416 346.8 416H173.3l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H346.8c46.7 0 88.1-29.9 102.8-74.1c5.6-16.8 23.7-25.8 40.5-20.2zM288 216v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V248c-10 0-19.4-6.4-22.8-16.4c-4.2-12.6 2.6-26.2 15.2-30.4l24-8c7.3-2.4 15.4-1.2 21.6 3.3s10 11.8 10 19.5z\"]\n};\nvar faRepeat1Alt = faArrowsRepeat1;\nvar faGunSlash = {\n prefix: 'fas',\n iconName: 'gun-slash',\n icon: [640, 512, [], \"e19c\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L412.3 297.8 432.9 240H464c8.5 0 16.6-3.4 22.6-9.4L509.3 208H576c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32H560V56c0-13.3-10.7-24-24-24s-24 10.7-24 24v8H113.9L38.8 5.1zM195.6 128H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H236.4l-40.8-32zM338.5 240h43.4l-9.5 26.6L338.5 240zM324.9 352L264 304h-3l.5-2L32 121.2V208c0 17.7 14.3 32 32 32H74c20.8 0 36.1 19.6 31 39.8L65 440.2c-2.4 9.6-.2 19.7 5.8 27.5S86.1 480 96 480h96c14.7 0 27.5-10 31-24.2L249 352h75.9z\"]\n};\nvar faAvocado = {\n prefix: 'fas',\n iconName: 'avocado',\n icon: [512, 512, [], \"e0aa\", \"M459.4 255.3c-18.5 15.2-33.5 35.6-38.1 59.1c-10.2 51.9-34 104.5-66.3 136.7c-81.2 81.2-212.9 81.2-294.2 0s-81.2-212.9 0-294.2c32.3-32.3 84.9-56.1 136.7-66.3c23.5-4.6 43.9-19.6 59.1-38.1C283.1 20.5 323.2 0 368 0c79.5 0 144 64.5 144 144c0 44.8-20.5 84.9-52.6 111.3zM283.2 347.2c41.7-41.7 49.1-102.1 16.4-134.8s-93-25.3-134.8 16.4s-49.1 102.1-16.4 134.8s93 25.3 134.8-16.4z\"]\n};\nvar faBinary = {\n prefix: 'fas',\n iconName: 'binary',\n icon: [384, 512, [], \"e33b\", \"M336 32V160h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H304 256c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V76.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16C303.6-1.6 314.4 0 322.7 6s13.3 15.7 13.3 26zM112 320V448h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V364.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4s13.3 15.7 13.3 26zM0 64C0 28.7 28.7 0 64 0h64c35.3 0 64 28.7 64 64v96c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm128 0H64v96h64V64zM256 288h64c35.3 0 64 28.7 64 64v96c0 35.3-28.7 64-64 64H256c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64zm0 64v96h64V352H256z\"]\n};\nvar faGlassesRound = {\n prefix: 'fas',\n iconName: 'glasses-round',\n icon: [576, 512, [128083, \"glasses-alt\"], \"f5f5\", \"M118.6 80c-11.5 0-21.4 7.9-24 19.1L64.4 228.3C85.2 215.4 109.7 208 136 208c55.1 0 102.6 32.8 124 80H316c21.3-47.2 68.8-80 124-80c26.3 0 50.8 7.4 71.6 20.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l40.5 173.7c4.9 20.9 7.3 42.2 7.3 63.6V336c0 .8 0 1.6-.1 2.4c.1 1.9 .1 3.8 .1 5.6c0 75.1-60.9 136-136 136c-72.4 0-131.6-56.6-135.8-128H271.8c-4.1 71.4-63.3 128-135.8 128C60.9 480 0 419.1 0 344c0-1.9 0-3.8 .1-5.6c-.1-.8-.1-1.6-.1-2.4V325.5c0-21.4 2.5-42.8 7.3-63.6L47.9 88.2C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM136 416a72 72 0 1 0 0-144 72 72 0 1 0 0 144zm376-72a72 72 0 1 0 -144 0 72 72 0 1 0 144 0z\"]\n};\nvar faGlassesAlt = faGlassesRound;\nvar faPhonePlus = {\n prefix: 'fas',\n iconName: 'phone-plus',\n icon: [640, 512, [], \"f4d2\", \"M456 200V136H392c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V24c0-13.3 10.7-24 24-24s24 10.7 24 24V88h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H504v64c0 13.3-10.7 24-24 24s-24-10.7-24-24zM181.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L208 207.3c33.3 70.4 90.3 127.4 160.7 160.7L409 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C545.8 499.9 530 512 512 512C264.6 512 64 311.4 64 64c0-18 12.1-33.8 29.5-38.6l88-24z\"]\n};\nvar faDitto = {\n prefix: 'fas',\n iconName: 'ditto',\n icon: [320, 512, [], \"22\", \"M0 96v2.3c0 3.8 .3 7.6 1 11.4L26.5 256.5C29.7 274.7 45.5 288 64 288s34.3-13.3 37.5-31.5L127 109.6c.7-3.8 1-7.5 1-11.4V96c0-35.3-28.7-64-64-64S0 60.7 0 96zm192 0v2.3c0 3.8 .3 7.6 1 11.4l25.5 146.8c3.2 18.2 19 31.5 37.5 31.5s34.3-13.3 37.5-31.5L319 109.6c.7-3.8 1-7.5 1-11.4V96c0-35.3-28.7-64-64-64s-64 28.7-64 64z\"]\n};\nvar faPersonSeat = {\n prefix: 'fas',\n iconName: 'person-seat',\n icon: [384, 512, [], \"e21e\", \"M144 128a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 160V256h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H189.3c-6.6-18.6-24.4-32-45.3-32c-26.5 0-48 21.5-48 48v80c0 35.3 28.7 64 64 64h85.6c8.1 0 14.9 6 15.9 14l10.7 86c2 16 15.6 28 31.8 28h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H332.2L325 358.1c-5-40-39-70.1-79.4-70.1H192zM64 160c0-17.7-14.3-32-32-32s-32 14.3-32 32V320c0 70.7 57.3 128 128 128h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H128c-35.3 0-64-28.7-64-64V160z\"]\n};\nvar faHouseMedical = {\n prefix: 'fas',\n iconName: 'house-medical',\n icon: [576, 512, [], \"e3b2\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM256 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V320H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGolfBallTee = {\n prefix: 'fas',\n iconName: 'golf-ball-tee',\n icon: [384, 512, [\"golf-ball\"], \"f450\", \"M384 192c0 66.8-34.1 125.6-85.8 160H85.8C34.1 317.6 0 258.8 0 192C0 86 86 0 192 0S384 86 384 192zM242.1 256.6c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zm-52.3-49.3c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4c0 18.5-15 33.5-33.5 33.5zm113.5-17.5c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zM96 416c0-17.7 14.3-32 32-32h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H240c-8.8 0-16 7.2-16 16v16c0 17.7-14.3 32-32 32s-32-14.3-32-32V464c0-8.8-7.2-16-16-16H128c-17.7 0-32-14.3-32-32z\"]\n};\nvar faGolfBall = faGolfBallTee;\nvar faCircleChevronLeft = {\n prefix: 'fas',\n iconName: 'circle-chevron-left',\n icon: [512, 512, [\"chevron-circle-left\"], \"f137\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"]\n};\nvar faChevronCircleLeft = faCircleChevronLeft;\nvar faHouseChimneyWindow = {\n prefix: 'fas',\n iconName: 'house-chimney-window',\n icon: [576, 512, [], \"e00d\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM248 192c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V216c0-13.3-10.7-24-24-24H248z\"]\n};\nvar faScythe = {\n prefix: 'fas',\n iconName: 'scythe',\n icon: [640, 512, [], \"f710\", \"M614.7 .7c5.6 1.2 10.5 3.8 14.5 7.3c8.4 7.4 12.6 19 10.1 30.7l-4.8 22.6L577.6 326.7l-34.3 160c-3.7 17.3-20.7 28.3-38 24.6s-28.3-20.7-24.6-38l26-121.3H416c-17.7 0-32-14.3-32-32s14.3-32 32-32H520.4L569 61.3l7.7-36 0 0L582.1 0H608c2.2 0 4.5 .2 6.7 .7zM352 0H549.4l-4 18.6L508.3 192H12.7C5.7 192 0 186.3 0 179.3c0-2.1 .5-4.1 1.6-6C15 151.1 114.8 0 352 0z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [10001], \"f5ad\", \"M368.4 18.3L312.7 74.1 437.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L447.6 18.3c-21.9-21.9-57.3-21.9-79.2 0zM288 94.6l-9.2 2.8L134.7 140.6c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-3.8 11.3-1 23.9 7.3 32.4L164.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48c-7.4 0-14.4-1.7-20.7-4.7L33.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 2.8-9.2L288 94.6z\"]\n};\nvar faBanParking = {\n prefix: 'fas',\n iconName: 'ban-parking',\n icon: [512, 512, [\"parking-circle-slash\"], \"f616\", \"M412.5 367.2L342.3 297c20.6-17.6 33.7-43.8 33.7-73c0-53-43-96-96-96H208c-9.7 0-18.6 3.5-25.5 9.2L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2zm-45.3 45.3C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2L367.2 412.5zM296.6 251.4L237.3 192H280c17.7 0 32 14.3 32 32c0 11.6-6.2 21.7-15.4 27.4zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM168 261.3V288v64c0 17.7 14.3 32 32 32s32-14.3 32-32V325.3l-64-64z\"]\n};\nvar faParkingCircleSlash = faBanParking;\nvar faTentArrowTurnLeft = {\n prefix: 'fas',\n iconName: 'tent-arrow-turn-left',\n icon: [576, 512, [], \"e580\", \"M120.1 41.8c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120 456 120c39.8 0 72 32.2 72 72v40c0 13.3 10.7 24 24 24s24-10.7 24-24V192c0-66.3-53.7-120-120-120L86.5 72l33.5-30.2zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faFaceDiagonalMouth = {\n prefix: 'fas',\n iconName: 'face-diagonal-mouth',\n icon: [512, 512, [129764], \"e47e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM372.4 319.4l-224 64c-8.5 2.4-17.4-2.5-19.8-11s2.5-17.4 11-19.8l224-64c8.5-2.4 17.4 2.5 19.8 11s-2.5 17.4-11 19.8zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faDiagramCells = {\n prefix: 'fas',\n iconName: 'diagram-cells',\n icon: [512, 512, [], \"e475\", \"M512 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64v64zM448 416V352H64v64l384 0zm0 64L64 480c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64z\"]\n};\nvar faCricketBatBall = {\n prefix: 'fas',\n iconName: 'cricket-bat-ball',\n icon: [512, 512, [127951, \"cricket\"], \"f449\", \"M502.6 9.4c12.5 12.5 12.5 32.8 0 45.3l-135 135L409 231c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-23 23H240c-8.8 0-16-7.2-16-16V126.1l23-23c9.4-9.4 24.6-9.4 33.9 0l41.4 41.4 135-135c12.5-12.5 32.8-12.5 45.3 0zM352 432a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM16.1 334L192 158.1V272c0 26.5 21.5 48 48 48H353.9L178 495.9c-10 10-24.4 16.7-40.4 15.6c-11.3-.8-28.6-2.8-46.4-8.2C73.9 498.2 54.1 489.1 39 473c-16.2-15-25.2-34.9-30.4-52.2C3.2 403 1.2 385.7 .5 374.4C-.6 358.4 6.1 344 16.1 334z\"]\n};\nvar faCricket = faCricketBatBall;\nvar faTents = {\n prefix: 'fas',\n iconName: 'tents',\n icon: [640, 512, [], \"e582\", \"M396.6 6.5L235.8 129.1c9.6 1.8 18.9 5.8 27 12l168 128c13.2 10.1 22 24.9 24.5 41.4l6.2 41.5H608c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128c-11.5-8.7-27.3-8.7-38.8 0zm-153.2 160c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S22.7 512 32 512H224V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faWandMagic = {\n prefix: 'fas',\n iconName: 'wand-magic',\n icon: [512, 512, [\"magic\"], \"f0d0\", \"M14.1 463.3c-18.7-18.7-18.7-49.1 0-67.9L395.4 14.1c18.7-18.7 49.1-18.7 67.9 0l34.6 34.6c18.7 18.7 18.7 49.1 0 67.9L116.5 497.9c-18.7 18.7-49.1 18.7-67.9 0L14.1 463.3zM347.6 187.6l105-105L429.4 59.3l-105 105 23.3 23.3z\"]\n};\nvar faMagic = faWandMagic;\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [128021], \"f6d3\", \"M309.6 158.5L332.7 19.8C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32h52.1c12.7 0 24.9 5.1 33.9 14.1L496 64h56c13.3 0 24 10.7 24 24v24c0 44.2-35.8 80-80 80H464 448 426.7l-5.1 30.5-112-64zM416 256.1L416 480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V364.8c-24 12.3-51.2 19.2-80 19.2s-56-6.9-80-19.2V480c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V249.8c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192h30 16H303.8L416 256.1zM464 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faPenLine = {\n prefix: 'fas',\n iconName: 'pen-line',\n icon: [576, 512, [], \"e212\", \"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-48.4 48.4L314.3 67.7l48.4-48.4c25-25 65.5-25 90.5 0zM58.6 323.5L291.7 90.3 421.7 220.3 188.5 453.4c-10.4 10.4-23.3 18-37.4 22.2L30.8 511c-8.4 2.5-17.5 .2-23.7-6.1S-1.5 489.7 1 481.2L36.4 360.9c4.2-14.1 11.8-27 22.2-37.4zM248 464H552c13.3 0 24 10.7 24 24s-10.7 24-24 24H248c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faAtomSimple = {\n prefix: 'fas',\n iconName: 'atom-simple',\n icon: [512, 512, [\"atom-alt\"], \"f5d3\", \"M100.9 411.1c-1.3-1.3-12.4-16.8 3.3-64c3.5-10.4 8-21.4 13.6-32.9c11.6 14.2 24.3 28.3 38 41.9s27.7 26.4 41.9 38c-11.4 5.6-22.4 10.2-32.8 13.6c-47.2 15.7-62.7 4.6-64 3.3zM153.7 256c13.5-18.3 29.3-36.8 47.4-54.9s36.6-33.9 54.9-47.4c18.3 13.5 36.8 29.3 54.9 47.4s33.9 36.6 47.4 54.9c-13.5 18.3-29.3 36.8-47.4 54.9s-36.6 33.9-54.9 47.4c-18.3-13.5-36.8-29.3-54.9-47.4s-33.9-36.6-47.4-54.9zm44.1-138.1c-14.2 11.6-28.3 24.3-41.9 38s-26.4 27.7-38 41.9c-5.6-11.4-10.2-22.4-13.6-32.8c-15.7-47.2-4.6-62.7-3.3-64s16.8-12.4 64 3.3c10.4 3.5 21.4 8 32.8 13.6zM256 76.8C173.9 27.6 94.9 16.5 55.7 55.7S27.6 173.9 76.8 256C27.6 338.1 16.5 417.1 55.7 456.3s118.2 28.1 200.3-21.1c82.1 49.2 161.1 60.3 200.3 21.1s28.1-118.2-21.1-200.3c49.2-82.1 60.3-161.1 21.1-200.3S338.1 27.6 256 76.8zm58.2 41.1c11.4-5.6 22.4-10.2 32.9-13.6c47.2-15.7 62.7-4.6 64-3.3s12.4 16.8-3.3 64c-3.5 10.4-8 21.4-13.6 32.8c-11.6-14.2-24.3-28.3-38-41.9s-27.7-26.4-41.9-38zm79.9 196.3c5.6 11.4 10.2 22.4 13.6 32.9c15.7 47.2 4.6 62.7 3.3 64s-16.8 12.4-64-3.3c-10.4-3.5-21.4-8-32.9-13.6c14.2-11.6 28.3-24.3 41.9-38s26.4-27.7 38-41.9zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faAtomAlt = faAtomSimple;\nvar faAmpersand = {\n prefix: 'fas',\n iconName: 'ampersand',\n icon: [448, 512, [], \"26\", \"M180.7 96h38c20.6 0 37.3 16.7 37.3 37.3c0 11.8-5.5 22.8-14.9 29.9l-48 36-39-41.3c-6.4-6.8-10-15.8-10-25.2c0-20.3 16.4-36.7 36.7-36.7zm56.6 150l42.2-31.6C305 195.3 320 165.2 320 133.3C320 77.4 274.6 32 218.7 32h-38C125.1 32 80 77.1 80 132.7c0 25.7 9.8 50.4 27.5 69.1l34 36L74.7 288C47.8 308.1 32 339.8 32 373.3C32 432.2 79.8 480 138.7 480h74.5c37.4 0 72.4-18.7 93.2-49.9l6.9-10.4L360.7 470c12.1 12.8 32.4 13.4 45.2 1.3s13.4-32.4 1.3-45.2l-57.5-60.9 60.9-91.4c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9l-52.7 79.1L237.3 246zm-51.5 38.6L268.2 372l-15.1 22.6C244.2 408 229.2 416 213.2 416H138.7C115.1 416 96 396.9 96 373.3c0-13.4 6.3-26.1 17.1-34.1l72.7-54.5z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [129365], \"f787\", \"M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM244.6 136c-40 0-77.1 18.1-101.7 48.2l60.5 60.5c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-55.3-55.3 0 .1L2.2 477.9C-2 487-.1 497.8 7 505s17.9 9 27.1 4.8l134.7-62.4-52.1-52.1c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L199.7 433l100.2-46.4c46.4-21.5 76.2-68 76.2-119.2C376 194.8 317.2 136 244.6 136z\"]\n};\nvar faArrowUpFromLine = {\n prefix: 'fas',\n iconName: 'arrow-up-from-line',\n icon: [384, 512, [8613, \"arrow-from-bottom\"], \"f342\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.3V208 320c0 17.7 14.3 32 32 32s32-14.3 32-32V208 141.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faArrowFromBottom = faArrowUpFromLine;\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [384, 512, [127769, 9214], \"f186\", \"M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z\"]\n};\nvar faPenSlash = {\n prefix: 'fas',\n iconName: 'pen-slash',\n icon: [640, 512, [], \"e213\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L409.9 296l75.7-75.7L355.7 90.3l-91.5 91.5L38.8 5.1zm78 324.1c-6.6 6.6-11.5 14.8-14.1 23.8L65 481.2c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l128.2-37.7c9-2.6 17.2-7.5 23.8-14.1l94.4-94.4L195.8 250.3l-79 79zM426.7 19.3L378.3 67.7 508.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L517.3 19.3c-25-25-65.5-25-90.5 0z\"]\n};\nvar faWineGlassEmpty = {\n prefix: 'fas',\n iconName: 'wine-glass-empty',\n icon: [320, 512, [\"wine-glass-alt\"], \"f5ce\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348.4c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0H64zM81.9 203.1L93.4 64H226.6l11.6 139.1C242 248.8 205.9 288 160 288s-82-39.2-78.1-84.9z\"]\n};\nvar faWineGlassAlt = faWineGlassEmpty;\nvar faSquareStar = {\n prefix: 'fas',\n iconName: 'square-star',\n icon: [448, 512, [], \"e27f\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm224 8c-6.1 0-11.7 3.5-14.3 8.9l-36.2 73.4-81 11.8c-6 .9-11 5.1-12.9 10.9s-.3 12.2 4 16.4l58.6 57.2-13.8 80.7c-1 6 1.4 12.1 6.4 15.6s11.5 4.1 16.8 1.2L224 342.1l72.5 38.1c5.4 2.8 11.9 2.4 16.8-1.2s7.4-9.6 6.4-15.6l-13.8-80.7 58.6-57.2c4.4-4.3 5.9-10.6 4-16.4s-6.9-10-12.9-10.9l-81.1-11.8-36.2-73.4c-2.7-5.5-8.3-8.9-14.3-8.9z\"]\n};\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M512 240.2V256H0c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7C418.8 32 512 125.2 512 240.2zm0 47.8V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V288H512z\"]\n};\nvar faSendBackward = {\n prefix: 'fas',\n iconName: 'send-backward',\n icon: [512, 512, [], \"f87f\", \"M64 0C28.7 0 0 28.7 0 64V288c0 35.3 28.7 64 64 64h64V224c0-53 43-96 96-96H352V64c0-35.3-28.7-64-64-64H64zM224 224H448V448H224V224zm-64 0V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V224c0-35.3-28.7-64-64-64H224c-35.3 0-64 28.7-64 64z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [512, 512, [9775], \"f6ad\", \"M256 64c53 0 96 43 96 96s-43 96-96 96s-96 43-96 96s43 96 96 96C150 448 64 362 64 256S150 64 256 64zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm32-352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [127925], \"f001\", \"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7v72V368c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V147L192 223.8V432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V200 128c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"]\n};\nvar faCompassSlash = {\n prefix: 'fas',\n iconName: 'compass-slash',\n icon: [640, 512, [], \"f5e9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-95.4-74.8C561.1 354.5 576 307 576 256C576 114.6 461.4 0 320 0C246.8 0 180.9 30.7 134.2 79.9L38.8 5.1zM270.3 186.5l143.3-55.1c19.4-7.5 38.5 11.6 31 31L397.1 285.9 270.3 186.5zM320 512c55.2 0 106.3-17.5 148.1-47.2L317 345.8l-90.6 34.8c-19.4 7.5-38.5-11.6-31-31l29.4-76.5L82.3 160.8C70.5 190.2 64 222.4 64 256c0 141.4 114.6 256 256 256z\"]\n};\nvar faClockOne = {\n prefix: 'fas',\n iconName: 'clock-one',\n icon: [512, 512, [], \"e34e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm24-392v56.7l20-30c7.4-11 22.3-14 33.3-6.7s14 22.3 6.7 33.3l-64 96c-5.9 8.8-16.8 12.7-26.9 9.7s-17-12.4-17-23V120c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFileMusic = {\n prefix: 'fas',\n iconName: 'file-music',\n icon: [384, 512, [], \"f8b6\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm32 224v32V384c0 17.7-21.5 32-48 32s-48-14.3-48-32s21.5-32 48-32c5.6 0 11 .6 16 1.8V279.1l-96 36V416c0 17.7-21.5 32-48 32s-48-14.3-48-32s21.5-32 48-32c5.6 0 11 .6 16 1.8V304 272c0-6.7 4.1-12.6 10.4-15l128-48c4.9-1.8 10.4-1.2 14.7 1.8s6.9 7.9 6.9 13.2z\"]\n};\nvar faCodeCommit = {\n prefix: 'fas',\n iconName: 'code-commit',\n icon: [640, 512, [], \"f386\", \"M320 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm156.8-48C462 361 397.4 416 320 416s-142-55-156.8-128H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H163.2C178 151 242.6 96 320 96s142 55 156.8 128H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H476.8z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M448 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 96a96 96 0 1 1 192 0A96 96 0 1 1 320 96zM144 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C70.2 332.6 64 349.5 64 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM32 112C32 50.2 82.1 0 144 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S0 447.5 0 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM192 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faPersonBiking = {\n prefix: 'fas',\n iconName: 'person-biking',\n icon: [640, 512, [128692, \"biking\"], \"f84a\", \"M400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1V416c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H427.2zM56 384a72 72 0 1 1 144 0A72 72 0 1 1 56 384zm200 0A128 128 0 1 0 0 384a128 128 0 1 0 256 0zm184 0a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zm200 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nvar faBiking = faPersonBiking;\nvar faDisplayChartUpCircleCurrency = {\n prefix: 'fas',\n iconName: 'display-chart-up-circle-currency',\n icon: [640, 512, [], \"e5e5\", \"M0 64C0 28.7 28.7 0 64 0H512c35.3 0 64 28.7 64 64V211.2c-19.5-10-41.1-16.4-64-18.5V64H64V352H320.7c-.5 5.3-.7 10.6-.7 16c0 59.5 29.5 112.1 74.8 144H160c-17.7 0-32-14.3-32-32s14.3-32 32-32h69.3L240 416H64c-35.3 0-64-28.7-64-64V64zm480 56v72.7c-16.7 1.5-32.7 5.3-47.7 11.2c-.2-1.3-.3-2.6-.3-3.9V177.9L321 289c-4.5 4.5-10.6 7-17 7s-12.5-2.5-17-7l-63-63-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L207 175c9.4-9.4 24.6-9.4 33.9 0l63 63L398.1 144H376c-13.3 0-24-10.7-24-24s10.7-24 24-24h80c13.3 0 24 10.7 24 24zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm118.6-25.4a35.9 35.9 0 1 1 50.7 50.7 35.9 35.9 0 1 1 -50.7-50.7zM531.3 426l17.3 17.3c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L554 403.3c13.2-21.6 13.2-49.1 0-70.7l17.3-17.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L531.3 310c-21.6-13.2-49.1-13.2-70.7 0l-17.3-17.3c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L438 332.7c-13.2 21.6-13.2 49.1 0 70.7l-17.3 17.3c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L460.7 426c21.6 13.2 49.1 13.2 70.7 0z\"]\n};\nvar faSkeleton = {\n prefix: 'fas',\n iconName: 'skeleton',\n icon: [512, 512, [], \"f620\", \"M256 0c17.7 0 32 14.3 32 32V64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H288v32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H288v32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H288v64c0 .8 0 1.6-.1 2.3l67.6-29c8.3-3.5 17.2-5.4 26.1-5.4c36.7 0 66.4 29.7 66.4 66.4v1.5c0 18-7.2 35.3-19.9 48l-25.8 25.8c-11.7 11.7-27.6 18.3-44.1 18.3H153.9c-16.6 0-32.4-6.6-44.1-18.3L83.9 467.9c-12.7-12.7-19.9-30-19.9-48v-1.5c0-36.7 29.7-66.4 66.4-66.4c9 0 17.9 1.8 26.1 5.4l67.6 29c-.1-.8-.1-1.5-.1-2.3V320H128c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V224H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H224V128H96c-17.7 0-32-14.3-32-32s14.3-32 32-32H224V32c0-17.7 14.3-32 32-32zM184 440a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm192 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faCircleG = {\n prefix: 'fas',\n iconName: 'circle-g',\n icon: [512, 512, [], \"e10f\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176 256c0 44.2 35.8 80 80 80c35.8 0 66.1-23.5 76.3-56H280c-13.3 0-24-10.7-24-24s10.7-24 24-24h80c13.3 0 24 10.7 24 24c0 70.7-57.3 128-128 128s-128-57.3-128-128s57.3-128 128-128c32.8 0 62.7 12.3 85.3 32.6c9.9 8.8 10.7 24 1.9 33.9s-24 10.7-33.9 1.9C295.2 183.7 276.5 176 256 176c-44.2 0-80 35.8-80 80z\"]\n};\nvar faCircleArrowUpLeft = {\n prefix: 'fas',\n iconName: 'circle-arrow-up-left',\n icon: [512, 512, [], \"e0fb\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm64-368c13.3 0 24 10.7 24 24s-10.7 24-24 24H225.9L361 327c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-135-135V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V168c0-13.3 10.7-24 24-24H320z\"]\n};\nvar faCoinBlank = {\n prefix: 'fas',\n iconName: 'coin-blank',\n icon: [512, 512, [], \"e3fb\", \"M0 208c0 79.5 114.6 144 256 144s256-64.5 256-144s-114.6-144-256-144S0 128.5 0 208zm0 82.1L0 320c0 27.9 17.8 53.6 48 74.6L48 331c-18.3-11.5-34.8-25.2-48-40.9zM80 413c27.1 12.8 59.8 22.7 96 28.7l0-64.3c-35.1-6-67.6-15.9-96-29L80 413zm128 32.8c15.5 1.5 31.6 2.2 48 2.2s32.5-.8 48-2.2l0-64.1c-15.7 1.6-31.7 2.4-48 2.4s-32.3-.8-48-2.4l0 64.1zm128-4.1c36.2-6 68.9-15.9 96-28.7l0-64.7c-28.4 13.2-60.9 23-96 29l0 64.3zm128-47c30.2-21 48-46.8 48-74.6l0-29.9c-13.2 15.6-29.7 29.3-48 40.9l0 63.7z\"]\n};\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [576, 512, [129529], \"f51a\", \"M566.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192-34.7-34.7c-4.2-4.2-10-6.6-16-6.6c-12.5 0-22.6 10.1-22.6 22.6v29.1L364.3 320h29.1c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16l-34.7-34.7 192-192zM341.1 353.4L222.6 234.9c-42.7-3.7-85.2 11.7-115.8 42.3l-8 8C76.5 307.5 64 337.7 64 369.2c0 6.8 7.1 11.2 13.2 8.2l51.1-25.5c5-2.5 9.5 4.1 5.4 7.9L7.3 473.4C2.7 477.6 0 483.6 0 489.9C0 502.1 9.9 512 22.1 512l173.3 0c38.8 0 75.9-15.4 103.4-42.8c30.6-30.6 45.9-73.1 42.3-115.8z\"]\n};\nvar faVacuum = {\n prefix: 'fas',\n iconName: 'vacuum',\n icon: [640, 512, [], \"e04d\", \"M301.6 64H512c35.3 0 64 28.7 64 64c0 21.9-11 41.2-27.8 52.8C513.8 148.1 467.2 128 416 128c-35.3 0-64 28.7-64 64V292c10.2-2.6 21-4 32-4c70.7 0 128 57.3 128 128c0 38.2-16.8 72.5-43.3 96H544c35.3 0 64-28.7 64-64V320c0-31.7-7.7-61.7-21.3-88C619 208.7 640 170.8 640 128C640 57.3 582.7 0 512 0H301.6C241.3 0 189.1 42.2 176.4 101.2L150.1 224h65.5L239 114.6C245.4 85.1 271.4 64 301.6 64zM208.7 256H143.3L109 416H83.8c-33.8 0-64.7 18.9-80 49C1.4 469.5 0 474.6 0 480c0 17.7 14.3 32 32 32h95.4c.4 0 .9 0 1.3 0H176c26.5 0 48-21.5 48-48s-21.5-48-48-48h-1.6l34.3-160zM480 416a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zm-128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faShieldHeart = {\n prefix: 'fas',\n iconName: 'shield-heart',\n icon: [512, 512, [], \"e574\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM144 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"]\n};\nvar faCardHeart = {\n prefix: 'fas',\n iconName: 'card-heart',\n icon: [384, 512, [], \"e3eb\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM80 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0L97.9 264.6C86.5 253.1 80 237.5 80 221.3z\"]\n};\nvar faLightbulbCflOn = {\n prefix: 'fas',\n iconName: 'lightbulb-cfl-on',\n icon: [640, 512, [], \"e5a7\", \"M351 24.2c4.3 17.1-6.1 34.5-23.3 38.8l-128 32c-17.1 4.3-34.5-6.1-38.8-23.3s6.1-34.5 23.3-38.8l128-32c17.1-4.3 34.5 6.1 38.8 23.3zM455.8 127l-256 64c-17.1 4.3-34.5-6.1-38.8-23.3s6.1-34.5 23.3-38.8l256-64c17.1-4.3 34.5 6.1 38.8 23.3s-6.1 34.5-23.3 38.8zM479 184.2c4.3 17.1-6.1 34.5-23.3 38.8l-256 64c-17.1 4.3-34.5-6.1-38.8-23.3s6.1-34.5 23.3-38.8l256-64c17.1-4.3 34.5 6.1 38.8 23.3zM256 384V306l48-12v90h80c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H352c0 17.7-14.3 32-32 32s-32-14.3-32-32H256c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32zm199.8-65l-64 16L384 337v47H336V308.7c0-.5 0-.9 0-1.4V304l.2 0c1.6-12.7 10.8-23.7 24-27l16-4 64-16c17.1-4.3 34.5 6.1 38.8 23.3s-6.1 34.5-23.3 38.8zM53.3 4l48 32c11 7.4 14 22.3 6.7 33.3s-22.3 14-33.3 6.7l-48-32c-11-7.4-14-22.3-6.7-33.3S42.3-3.3 53.3 4zM613.3 44l-48 32c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l48-32c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3zM24 160H88c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm528 0h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552c-13.3 0-24-10.7-24-24s10.7-24 24-24zM101.3 332l-48 32c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l48-32c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3zm464-39.9l48 32c11 7.4 14 22.3 6.7 33.3s-22.3 14-33.3 6.7l-48-32c-11-7.4-14-22.3-6.7-33.3s22.3-14 33.3-6.7z\"]\n};\nvar faMelon = {\n prefix: 'fas',\n iconName: 'melon',\n icon: [512, 512, [], \"e310\", \"M256 512c-38.5 0-75-8.5-107.7-23.7c67.1-5.8 149.8-48.2 220.8-119.2s113.4-153.8 119.2-220.8C503.5 181 512 217.5 512 256c0 141.4-114.6 256-256 256zM74.7 436.8c-19.1-19.4-26.8-55.8-11.9-108c14.6-51.2 49.6-110.2 102.7-163.3s112.1-88.1 163.3-102.7c52.4-15 88.9-7.1 108.2 12.2s27.2 55.9 12.2 108.2c-14.6 51.2-49.6 110.2-102.7 163.3s-112.1 88.1-163.3 102.7c-52.1 14.9-88.6 7.2-108-11.9c-.2-.2-.4-.4-.5-.5zm-51-73.1C8.5 331 0 294.5 0 256C0 114.6 114.6 0 256 0c38.5 0 75 8.5 107.7 23.7c-67.1 5.8-149.8 48.2-220.8 119.2s-113.4 153.8-119.2 220.8z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M120 0c13.3 0 24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h48V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8V64v64c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H416V352H384V224H352V128H320v96h32V352h32V512H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H128V352h32V224h32V128H160v96H128V352H96V512H32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32V256c0-17.7 14.3-32 32-32V160c0-17.7 14.3-32 32-32V64 32 24c0-13.3 10.7-24 24-24zM256 272c-17.7 0-32 14.3-32 32v48h64V304c0-17.7-14.3-32-32-32zm-32-80v32h64V192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faEarthOceania = {\n prefix: 'fas',\n iconName: 'earth-oceania',\n icon: [512, 512, [\"globe-oceania\"], \"e47b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208.6 357.3l-39-13.5c-6.5-2.2-13.6-2.3-20.1-.3l-15.3 4.9c-18.5 5.9-38.5-2.4-47.5-19.5l-3.3-6.2c-10.6-20.1-2.3-45 18.2-54.7l35.3-16.8c2.3-1.1 4.4-2.8 5.9-4.8l5.3-7c7.2-9.6 18.6-15.3 30.6-15.3s23.4 5.7 30.6 15.3l4.6 6.1c2 2.6 4.9 4.5 8.1 5.1c7.8 1.6 15.7-1.5 20.4-7.9l10.4-14.2c2-2.8 5.3-4.4 8.7-4.4c4.4 0 8.4 2.7 10 6.8l10.1 25.9c2.8 7.2 6.7 14 11.5 20.2L311 299.8c5.8 7.4 9 16.6 9 26s-3.2 18.6-9 26L299 367.2c-8.3 10.6-21 16.8-34.4 16.8c-8.4 0-16.6-2.4-23.7-7l-25.4-16.4c-2.2-1.4-4.5-2.5-6.9-3.4zm65.2-214.8L296 164.7c10.1 10.1 2.9 27.3-11.3 27.3H254.8c-5.6 0-11.1-1.2-16.2-3.4l-42.8-19c-14.3-6.3-11.9-27.3 3.4-30.3l38.5-7.7c13.1-2.6 26.7 1.5 36.1 10.9zM248 432c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H264c-8.8 0-16-7.2-16-16zM431.2 298.9l8 24c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1l-8-24c-2.8-8.4 1.7-17.4 10.1-20.2s17.4 1.7 20.2 10.1zm-19.9 80.4l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faGlobeOceania = faEarthOceania;\nvar faContainerStorage = {\n prefix: 'fas',\n iconName: 'container-storage',\n icon: [640, 512, [], \"f4b7\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32V96c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM176 152V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24s24 10.7 24 24zm112 0V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24s24 10.7 24 24zm112 0V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24s24 10.7 24 24zm112 0V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFacePouting = {\n prefix: 'fas',\n iconName: 'face-pouting',\n icon: [512, 512, [], \"e387\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM161.3 382.1c-5.4 12.3 8.7 21.6 21.1 16.4c22.4-9.5 47.4-14.8 73.7-14.8s51.3 5.3 73.7 14.8c12.4 5.2 26.5-4.1 21.1-16.4c-16-36.6-52.4-62.1-94.8-62.1s-78.8 25.6-94.8 62.1zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faSquareXmark = {\n prefix: 'fas',\n iconName: 'square-xmark',\n icon: [448, 512, [10062, \"times-square\", \"xmark-square\"], \"f2d3\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm79 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesSquare = faSquareXmark;\nvar faXmarkSquare = faSquareXmark;\nvar faFaceExplode = {\n prefix: 'fas',\n iconName: 'face-explode',\n icon: [512, 512, [\"exploding-head\"], \"e2fe\", \"M320 196.5c0 7.9 2.5 15.4 7 21.6c-14.5-6.6-31.5-5.6-45.3 3l-17.3 10.8c-5.2 3.2-11.8 3.2-17 0L230.2 221c-13.8-8.6-30.8-9.6-45.3-3c4.5-6.2 7-13.7 7-21.6V192c0-17.7-14.3-32-32-32H120c-30.9 0-56-25.1-56-56s25.1-56 56-56c8.9 0 17.3 2.1 24.8 5.8C149.7 23.3 176.1 0 208 0c19.1 0 36.3 8.4 48 21.7C267.7 8.4 284.9 0 304 0c31.9 0 58.3 23.3 63.2 53.8c7.5-3.7 15.9-5.8 24.8-5.8c30.9 0 56 25.1 56 56s-25.1 56-56 56H352c-17.7 0-32 14.3-32 32v4.5zM299 248c5.1-3 11.4-3 16.4 0h0c.1 .1 .2 .1 .3 .2L333 259c15.6 9.7 35.3 9.7 50.9 0l17.3-10.8c5.2-3.2 11.8-3.2 17 0l20.7 12.9c12.8 8 28.6 9.5 42.7 4.1L512 253.5c0 .8 0 1.7 0 2.5c0 141.4-114.6 256-256 256S0 397.4 0 256c0-.8 0-1.7 0-2.5l30.5 11.7c14.1 5.4 29.9 3.9 42.7-4.1l20.7-12.9c5.2-3.2 11.8-3.2 17 0L128.2 259c15.6 9.7 35.3 9.7 50.9 0l17.3-10.8c.1-.1 .2-.1 .3-.2h0c5.1-3 11.4-3 16.4 0h0c.1 .1 .2 .1 .3 .2L230.6 259c15.6 9.7 35.3 9.7 50.9 0l17.3-10.8c.1-.1 .2-.1 .3-.2h0zm-90.6 88a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM192 437.3c0 5.9 4.8 10.7 10.7 10.7H309.3c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3H245.3c-29.5 0-53.3 23.9-53.3 53.3z\"]\n};\nvar faExplodingHead = faFaceExplode;\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [62098], \"23\", \"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128h95.1l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H347.1L325.8 320H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H315.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7H155.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l21.3-128H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320h95.1l21.3-128H187.1z\"]\n};\nvar faUpRightAndDownLeftFromCenter = {\n prefix: 'fas',\n iconName: 'up-right-and-down-left-from-center',\n icon: [512, 512, [\"expand-alt\"], \"f424\", \"M344 0H488c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512H24c-13.3 0-24-10.7-24-24V344c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z\"]\n};\nvar faExpandAlt = faUpRightAndDownLeftFromCenter;\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32H144 96 48c-26.5 0-48 21.5-48 48v64.8c0 19 11.2 36.2 28.5 43.9l67.5 30V368c0 26.5 21.5 48 48 48H403.1c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192l-50.5-25.2c-8.9-4.4-18.7-6.8-28.6-6.8H288V128h32zM96 208v86.1L48 272.8V208H96z\"]\n};\nvar faT = {\n prefix: 'fas',\n iconName: 't',\n icon: [384, 512, [116], \"54\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H160V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H192 32z\"]\n};\nvar faTransformerBolt = {\n prefix: 'fas',\n iconName: 'transformer-bolt',\n icon: [384, 512, [], \"e2a4\", \"M136 24v8h24c8.8 0 16 7.2 16 16s-7.2 16-16 16H112 64c-8.8 0-16-7.2-16-16s7.2-16 16-16H88V24C88 10.7 98.7 0 112 0s24 10.7 24 24zm160 0v8h24c8.8 0 16 7.2 16 16s-7.2 16-16 16H272 224c-8.8 0-16-7.2-16-16s7.2-16 16-16h24V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM48 112c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H64c-8.8 0-16-7.2-16-16zm160 0c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H224c-8.8 0-16-7.2-16-16zM0 192c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V224c-17.7 0-32-14.3-32-32zm232.9 34.7c-6-4-13.9-3.6-19.3 1.1l-112 96c-5.1 4.4-6.9 11.4-4.6 17.7s8.3 10.4 15 10.4h57.8l-25 74.9c-2.3 6.8 .3 14.3 6.3 18.3s13.9 3.6 19.3-1.1l112-96c5.1-4.4 6.9-11.4 4.6-17.7s-8.3-10.4-15-10.4H214.2l25-74.9c2.3-6.8-.3-14.3-6.3-18.3z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [129435], \"f6ed\", \"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2h32c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1c0 10.2 7.4 18.8 16.7 23c27.9 12.5 47.3 40.5 47.3 73c0 26.2-12.6 49.4-32 64v32c0 8.8-7.2 16-16 16H560c-8.8 0-16-7.2-16-16V320H480v16c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V318.4c-11.8-2.4-22.7-7.4-32-14.4c-1.5-1.1-2.9-2.3-4.3-3.5c-17-14.7-27.7-36.4-27.7-60.5c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2V352c0 17.7 14.3 32 32 32h32v64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V372c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12v76c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V329.1L45.9 369.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7C32 155.7 117.2 68 223.8 64.1l.2-.1h7.2H256h32c41.7 0 83.4 12.1 117.2 25.7c1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM480 144a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faChartColumn = {\n prefix: 'fas',\n iconName: 'chart-column',\n icon: [512, 512, [], \"e0e3\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm128-64V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64 32c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32zM480 96V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faCassetteVhs = {\n prefix: 'fas',\n iconName: 'cassette-vhs',\n icon: [576, 512, [128252, \"vhs\"], \"f8ec\", \"M0 96v32H576V96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm0 64V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V160H0zM467.9 384H416V349.3c18.6-6.6 32-24.4 32-45.3s-13.4-38.7-32-45.3V224h51.9c17.6 21.9 28.1 49.7 28.1 80s-10.5 58.1-28.1 80zM160 349.3V384H108.1C90.5 362.1 80 334.3 80 304s10.5-58.1 28.1-80H160v34.7c-18.6 6.6-32 24.4-32 45.3s13.4 38.7 32 45.3zM256 224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32V256c0-17.7 14.3-32 32-32z\"]\n};\nvar faVhs = faCassetteVhs;\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [8734, 9854], \"f534\", \"M0 241.1C0 161 65 96 145.1 96c38.5 0 75.4 15.3 102.6 42.5L320 210.7l72.2-72.2C419.5 111.3 456.4 96 494.9 96C575 96 640 161 640 241.1v29.7C640 351 575 416 494.9 416c-38.5 0-75.4-15.3-102.6-42.5L320 301.3l-72.2 72.2C220.5 400.7 183.6 416 145.1 416C65 416 0 351 0 270.9V241.1zM274.7 256l-72.2-72.2c-15.2-15.2-35.9-23.8-57.4-23.8C100.3 160 64 196.3 64 241.1v29.7c0 44.8 36.3 81.1 81.1 81.1c21.5 0 42.2-8.5 57.4-23.8L274.7 256zm90.5 0l72.2 72.2c15.2 15.2 35.9 23.8 57.4 23.8c44.8 0 81.1-36.3 81.1-81.1V241.1c0-44.8-36.3-81.1-81.1-81.1c-21.5 0-42.2 8.5-57.4 23.8L365.3 256z\"]\n};\nvar faVialCircleCheck = {\n prefix: 'fas',\n iconName: 'vial-circle-check',\n icon: [512, 512, [], \"e596\", \"M0 64C0 46.3 14.3 32 32 32H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V266.8c-20.2 28.6-32 63.5-32 101.2c0 25.2 5.3 49.1 14.8 70.8C189.5 463.7 160.6 480 128 480c-53 0-96-43-96-96V96C14.3 96 0 81.7 0 64zM96 96v96h64V96H96zM224 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L352 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faChimney = {\n prefix: 'fas',\n iconName: 'chimney',\n icon: [448, 512, [], \"f78b\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V64zM32 192h96V320H32V192zm384 0V320H160V192H416zM288 352V480H32V352H288zm128 0V480H320V352h96z\"]\n};\nvar faObjectIntersect = {\n prefix: 'fas',\n iconName: 'object-intersect',\n icon: [512, 512, [], \"e49d\", \"M288 64v96H224c-35.3 0-64 28.7-64 64v64H64V64H288zM64 352h96v96c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V224c0-35.3-28.7-64-64-64H352V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V288c0 35.3 28.7 64 64 64zM448 224V448H224V352h64c35.3 0 64-28.7 64-64V224h96z\"]\n};\nvar faPersonArrowDownToLine = {\n prefix: 'fas',\n iconName: 'person-arrow-down-to-line',\n icon: [640, 512, [], \"e538\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM464 64V306.7l-25.4-25.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L528 306.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M144 320a80 80 0 1 1 0-160 80 80 0 1 1 0 160zm119.8 0c15.3-22.9 24.2-50.4 24.2-80c0-79.5-64.5-144-144-144S0 160.5 0 240s64.5 144 144 144H496c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144c0 29.6 8.9 57.1 24.2 80H263.8zM496 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faBlockBrick = {\n prefix: 'fas',\n iconName: 'block-brick',\n icon: [448, 512, [\"wall-brick\"], \"e3db\", \"M96 32v80H352V32H96zM64 112V32C28.7 32 0 60.7 0 96v16H64zM0 144v96H208V144H0zM0 368H64V272H0v96zm0 32v16c0 35.3 28.7 64 64 64H208V400H0zm240 0v80H384c35.3 0 64-28.7 64-64V400H240zm208-32V272H384v96h64zm-96 0V272H96v96H352zm96-224H240v96H448V144zm0-32V96c0-35.3-28.7-64-64-64v80h64z\"]\n};\nvar faWallBrick = faBlockBrick;\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M258.6 0c-1.7 0-3.4 .1-5.1 .5C168 17 115.6 102.3 130.5 189.3c2.9 17 8.4 32.9 15.9 47.4L32 224H29.4C13.2 224 0 237.2 0 253.4c0 1.7 .1 3.4 .5 5.1C17 344 102.3 396.4 189.3 381.5c17-2.9 32.9-8.4 47.4-15.9L224 480v2.6c0 16.2 13.2 29.4 29.4 29.4c1.7 0 3.4-.1 5.1-.5C344 495 396.4 409.7 381.5 322.7c-2.9-17-8.4-32.9-15.9-47.4L480 288h2.6c16.2 0 29.4-13.2 29.4-29.4c0-1.7-.1-3.4-.5-5.1C495 168 409.7 115.6 322.7 130.5c-17 2.9-32.9 8.4-47.4 15.9L288 32V29.4C288 13.2 274.8 0 258.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBagsShopping = {\n prefix: 'fas',\n iconName: 'bags-shopping',\n icon: [576, 512, [128717], \"f847\", \"M176 96v64h96V96c0-26.5-21.5-48-48-48s-48 21.5-48 48zm-48 64V96c0-53 43-96 96-96s96 43 96 96v64h64c35.3 0 64 28.7 64 64H240c-44.2 0-80 35.8-80 80V464c0 5.5 .6 10.8 1.6 16H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h64zm128 96H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H256c-35.3 0-64-28.7-64-64V320c0-35.3 28.7-64 64-64zm64 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v16c0 53 43 96 96 96s96-43 96-96V336c0-8.8-7.2-16-16-16s-16 7.2-16 16v16c0 35.3-28.7 64-64 64s-64-28.7-64-64V336z\"]\n};\nvar faParagraphLeft = {\n prefix: 'fas',\n iconName: 'paragraph-left',\n icon: [384, 512, [\"paragraph-rtl\"], \"f878\", \"M320 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 144C82.1 0 32 50.1 32 112s50.1 112 112 112h16l0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224h32l0 224c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM128 384V337.6c0-9.7-7.9-17.6-17.6-17.6c-4.2 0-8.2 1.5-11.3 4.2l-93 78.7C2.2 406.1 0 410.9 0 416s2.2 9.9 6.1 13.2l93 78.7c3.2 2.7 7.2 4.2 11.3 4.2c9.7 0 17.6-7.9 17.6-17.6V448H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H128z\"]\n};\nvar faParagraphRtl = faParagraphLeft;\nvar faPersonWalkingLuggage = {\n prefix: 'fas',\n iconName: 'person-walking-luggage',\n icon: [576, 512, [], \"e554\", \"M432 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM347.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L505 232.7l-15.3-36.8C472.5 154.8 432.3 128 387.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L340.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM256 274.1c-7.7-4.4-17.4-1.8-21.9 5.9l-32 55.4L147.7 304c-15.3-8.8-34.9-3.6-43.7 11.7L40 426.6c-8.8 15.3-3.6 34.9 11.7 43.7l55.4 32c15.3 8.8 34.9 3.6 43.7-11.7l64-110.9c1.5-2.6 2.6-5.2 3.3-8L261.9 296c4.4-7.7 1.8-17.4-5.9-21.9z\"]\n};\nvar faCaravanSimple = {\n prefix: 'fas',\n iconName: 'caravan-simple',\n icon: [640, 512, [\"caravan-alt\"], \"e000\", \"M80 32C35.8 32 0 67.8 0 112V336c0 44.2 35.8 80 80 80H96c0 53 43 96 96 96s96-43 96-96H576l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32H576V192c0-88.4-71.6-160-160-160H80zM64 160c0-17.7 14.3-32 32-32H224c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160zm288-32h64c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zM144 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faCaravanAlt = faCaravanSimple;\nvar faTurtle = {\n prefix: 'fas',\n iconName: 'turtle',\n icon: [576, 512, [128034], \"f726\", \"M384 249.2c0 21.4-17.4 38.8-38.8 38.8H70.8C49.4 288 32 270.6 32 249.2V208c0-97.2 78.8-176 176-176s176 78.8 176 176v41.2zM480 288c-2 0-4-.1-5.9-.3c-16.3 53.3-64.3 92.7-122.1 96V440c0 22.1-17.9 40-40 40H264c-22.1 0-40-17.9-40-40V384H192v56c0 22.1-17.9 40-40 40H104c-22.1 0-40-17.9-40-40V384H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h72 48H264h48 32c39.8 0 72-32.2 72-72V224 192 176c0-35.3 28.7-64 64-64c53 0 96 43 96 96v16c0 35.3-28.7 64-64 64H480zm16-64a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faPencilMechanical = {\n prefix: 'fas',\n iconName: 'pencil-mechanical',\n icon: [512, 512, [], \"e5ca\", \"M475.3 11.3C468.1 4.1 458.2 0 448 0s-20.1 4.1-27.3 11.3L390.6 41.4l80 80 30.1-30.1C507.9 84.1 512 74.2 512 64s-4.1-20.1-11.3-27.3L475.3 11.3zm-233 76.3c3.1-3.1 8.2-3.1 11.3 0L283 117 72.8 327.2C67 333 62.8 340.1 60.6 348L32.8 445.3 7 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l25.7-25.7L164 451.4c7.8-2.2 15-6.4 20.8-12.2L436.7 187.3c7.2-7.2 11.3-17.1 11.3-27.3s-4.1-20.1-11.3-27.3L379.3 75.3C372.1 68.1 362.2 64 352 64s-20.1 4.1-27.3 11.3L317 83 287.6 53.7c-21.9-21.9-57.3-21.9-79.2 0L103 159c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L242.3 87.6zM89.1 422.9l17.3-60.5 43.2 43.2L89.1 422.9z\"]\n};\nvar faUpDown = {\n prefix: 'fas',\n iconName: 'up-down',\n icon: [256, 512, [8597, 11021, \"arrows-alt-v\"], \"f338\", \"M145.6 7.7C141 2.8 134.7 0 128 0s-13 2.8-17.6 7.7l-104 112c-6.5 7-8.2 17.2-4.4 25.9S14.5 160 24 160H80V352H24c-9.5 0-18.2 5.7-22 14.4s-2.1 18.9 4.4 25.9l104 112c4.5 4.9 10.9 7.7 17.6 7.7s13-2.8 17.6-7.7l104-112c6.5-7 8.2-17.2 4.4-25.9s-12.5-14.4-22-14.4H176V160h56c9.5 0 18.2-5.7 22-14.4s2.1-18.9-4.4-25.9l-104-112z\"]\n};\nvar faArrowsAltV = faUpDown;\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M481.2 0C417 0 363.5 46.5 353.7 107.6c35.4 17.6 60.2 53.3 62.1 95.1c23.2 11 42 29.7 53.1 52.7c4 .4 8.1 .6 12.3 .6c34.9 0 66.7-13.8 89.9-36.1c5.1-4.9 6.4-12.5 3.2-18.7s-10.1-9.7-17-8.6c-4.9 .8-10 1.3-15.2 1.3c-49 0-88.4-39.3-88.4-87.4c0-32.6 18-61.1 44.9-76.1c6.1-3.4 9.3-10.5 7.8-17.4s-7.3-12-14.3-12.6c-3.6-.3-7.3-.5-10.9-.5zM367.9 383.9c44.2 0 80-35.8 80-80c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C241.3 114.6 210.8 96 176 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96H367.9zM85.4 420.1c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3z\"]\n};\nvar faBoothCurtain = {\n prefix: 'fas',\n iconName: 'booth-curtain',\n icon: [512, 512, [], \"f734\", \"M64 0C28.7 0 0 28.7 0 64V480c0 17.7 14.3 32 32 32s32-14.3 32-32V64l64 0V0H64zM512 64c0-35.3-28.7-64-64-64H352 256 192c-17.7 0-32 14.3-32 32V400c0 26.5 21.5 48 48 48s48-21.5 48-48c0 26.5 21.5 48 48 48s48-21.5 48-48c0 26.5 21.5 48 48 48s48-21.5 48-48v80c0 17.7 14.3 32 32 32s32-14.3 32-32V64z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\"]\n};\nvar faBoxHeart = {\n prefix: 'fas',\n iconName: 'box-heart',\n icon: [448, 512, [], \"f49d\", \"M93.7 32H208V160H0L50.7 58.5C58.9 42.3 75.5 32 93.7 32zM240 32H354.3c18.2 0 34.8 10.3 42.9 26.5L448 160H240V32zM0 192H448V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zM212.7 420.7c6.2 6.2 16.4 6.2 22.6 0l77.3-77.3c20.5-20.5 20.5-53.8 0-74.3s-53.8-20.5-74.3 0L224 283.4l-14.3-14.3c-20.5-20.5-53.8-20.5-74.3 0s-20.5 53.8 0 74.3l77.3 77.3z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M48 32C21.5 32 0 53.5 0 80V336c0 26.5 21.5 48 48 48H65.1c7.8-54.3 54.4-96 110.9-96s103.1 41.7 110.9 96H488h8H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V80c0-26.5-21.5-48-48-48H48zM80 96c8.8 0 16 7.2 16 16l0 131.2c-11.4 5.9-22.2 12.9-32 21V112c0-8.8 7.2-16 16-16zm96 128c-5.4 0-10.7 .2-16 .7L160 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112.7c-5.3-.5-10.6-.7-16-.7zm80 19.2L256 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 152.2c-9.8-8.1-20.6-15.2-32-21zM368 96c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16zm112 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16s16 7.2 16 16zM176 480a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-112a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faUserDoctorMessage = {\n prefix: 'fas',\n iconName: 'user-doctor-message',\n icon: [640, 512, [\"user-md-chat\"], \"f82e\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3c0-81 54-149.4 128-171.1v59.1c-23.1 6.9-40 28.3-40 53.7c0 30.9 25.1 56 56 56s56-25.1 56-56c0-25.4-16.9-46.8-40-53.7V304.9c6-.6 12.1-.9 18.3-.9h91.4c6.2 0 12.3 .3 18.3 .9V362c-27.6 7.1-48 32.2-48 62v40c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16s-7.2-16-16-16V424c0-17.7 14.3-32 32-32s32 14.3 32 32v24c-8.8 0-16 7.2-16 16s7.2 16 16 16h16c8.8 0 16-7.2 16-16V424c0-29.8-20.4-54.9-48-62V311.2c74 21.7 128 90.1 128 171.1c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM120 424a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM432 0H592c26.5 0 48 21.5 48 48V176c0 26.5-21.5 48-48 48H544l-83.2 62.4c-2.4 1.8-5.7 2.1-8.4 .8s-4.4-4.1-4.4-7.2V224H432c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48z\"]\n};\nvar faUserMdChat = faUserDoctorMessage;\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [576, 512, [\"haykal\"], \"f666\", \"M288 0c14.5 0 27.2 9.7 30.9 23.8l23.9 89.6 75.9-53.3c11.9-8.3 27.8-7.6 39 1.7s14.6 24.9 8.4 38.1l-39.3 84 92.4 8c14.4 1.2 26.2 12 28.8 26.3s-4.9 28.5-18 34.6l-84.1 39.1 65.7 65.5c10.3 10.2 12.4 26.1 5.1 38.7s-22 18.7-36 14.9L391 386.8l8.2 92.4c1.3 14.4-7.3 27.9-20.9 32.9s-28.9 .1-37.2-11.7l-53.1-76-53.1 76c-8.3 11.9-23.6 16.7-37.2 11.7s-22.2-18.5-20.9-32.9l8.2-92.4L95.4 410.9c-14 3.8-28.8-2.3-36-14.9s-5.2-28.4 5.1-38.7l65.7-65.5L46 252.7c-13.1-6.1-20.5-20.3-18-34.6s14.3-25.1 28.8-26.3l92.4-8-39.3-84c-6.1-13.1-2.7-28.8 8.4-38.1s27.1-10 39-1.7l75.9 53.3 23.9-89.6C260.8 9.7 273.5 0 288 0zm0 156.2l-4.8 18c-2.7 10.1-10.2 18.2-20 21.8s-20.8 2.1-29.3-3.9l-15.2-10.7 7.9 16.8c4.4 9.5 4 20.5-1.3 29.6s-14.5 15-25 15.9l-18.5 1.6 16.8 7.8c9.5 4.4 16.2 13.2 18 23.5s-1.5 20.8-8.9 28.2l-13.2 13.1 17.9-4.8c10.1-2.7 20.9-.3 28.9 6.4s12.2 16.9 11.3 27.3l-1.6 18.5 10.6-15.2c6-8.6 15.8-13.7 26.2-13.7s20.2 5.1 26.2 13.7l10.6 15.2-1.6-18.5c-.9-10.4 3.3-20.6 11.3-27.3s18.8-9.1 28.9-6.4l17.9 4.8-13.2-13.1c-7.4-7.4-10.7-17.9-8.9-28.2s8.5-19.1 18-23.5l16.8-7.8-18.5-1.6c-10.4-.9-19.7-6.8-25-15.9s-5.7-20.1-1.3-29.6l7.9-16.8-15.2 10.7c-8.6 6-19.5 7.5-29.3 3.9s-17.3-11.7-20-21.8l-4.8-18z\"]\n};\nvar faHaykal = faBahai;\nvar faAmpGuitar = {\n prefix: 'fas',\n iconName: 'amp-guitar',\n icon: [512, 512, [], \"f8a1\", \"M256 0c-48.9 0-92.5 28.8-121.6 53.8c-15 12.9-27.3 25.7-35.8 35.3c-2.3 2.6-4.3 4.9-6 6.9H64C28.7 96 0 124.7 0 160V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H419.5c-1.7-2.1-3.8-4.4-6-6.9c-8.5-9.6-20.8-22.4-35.8-35.3C348.5 28.8 304.9 0 256 0zm96.9 96H159.1c2.1-1.9 4.3-3.8 6.5-5.8C192.5 67.2 224.9 48 256 48s63.5 19.2 90.4 42.2c2.2 1.9 4.4 3.9 6.5 5.8zM96 152a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm72 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm152-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm72 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 448V256H448V448H64zm64-128a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48-64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm16-32a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm16-32a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48-64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM256 416a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48-64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm16-32a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm16-32a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48-64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM384 416a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H141.3C124.3 0 108 6.7 96 18.7L18.7 96C6.7 108 0 124.3 0 141.3V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 88v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faVolumeSlash = {\n prefix: 'fas',\n iconName: 'volume-slash',\n icon: [640, 512, [128263], \"f2e2\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.1 386.2C556.7 352 576 306.3 576 256c0-60.1-27.7-113.8-70.9-149c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C507.3 170.7 528 210.9 528 256c0 39.1-15.6 74.5-40.9 100.5L449 326.6c19-17.5 31-42.7 31-70.6c0-30.1-13.9-56.9-35.4-74.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C425.1 227.6 432 241 432 256s-6.9 28.4-17.7 37.3c-1.3 1-2.4 2.2-3.4 3.4L352 250.6V64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L197.8 129.8 38.8 5.1zM352 373.3L82.9 161.3C53.8 167.4 32 193.1 32 224v64c0 35.3 28.7 64 64 64h67.8L298.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S352 460.6 352 448V373.3z\"]\n};\nvar faBorderBottom = {\n prefix: 'fas',\n iconName: 'border-bottom',\n icon: [448, 512, [], \"f84d\", \"M448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32zm-64-96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM64 352A32 32 0 1 1 0 352a32 32 0 1 1 64 0zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM448 160a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM0 160a32 32 0 1 1 64 0A32 32 0 1 1 0 160zm256 0a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm128 96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM64 256A32 32 0 1 1 0 256a32 32 0 1 1 64 0zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM448 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM0 64a32 32 0 1 1 64 0A32 32 0 1 1 0 64zm256 0a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm32 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM352 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 64a32 32 0 1 1 64 0A32 32 0 1 1 96 64zm64 192a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nvar faWifiWeak = {\n prefix: 'fas',\n iconName: 'wifi-weak',\n icon: [640, 512, [\"wifi-1\"], \"f6aa\", \"M256 416a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faWifi1 = faWifiWeak;\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [128009], \"f6d5\", \"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4L294.4 28.8c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0H416h32 16c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8c0 26.5-21.5 48-48 48H538.5c-17 0-33.3-6.7-45.3-18.7L480 160H448v21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1C640 462.9 590.9 512 530.2 512H496 432 32.3c-3.3 0-6.6-.4-9.6-1.4C13.5 507.8 6 501 2.4 492.1C1 488.7 .2 485.2 0 481.4c-.2-3.7 .3-7.3 1.3-10.7c2.8-9.2 9.6-16.7 18.6-20.4c3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1c0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1V181.5v-57zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3v.6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9c0 13.3 10.7 24 24 24c10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87V227c0 32.8 8.4 64.8 24 93H112c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9s-1.5-14.1 3.8-18.8L130.9 116.5z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M416 0C352.3 0 256 32 256 32V160c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64h32V32H192c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32V480s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64H96V352H64c-35.3 0-64 28.7-64 64z\"]\n};\nvar faCirclePlus = {\n prefix: 'fas',\n iconName: 'circle-plus',\n icon: [512, 512, [\"plus-circle\"], \"f055\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusCircle = faCirclePlus;\nvar faFaceGrinTongueWink = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M174.5 498.8C73.1 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 112.9-73.1 208.7-174.5 242.8C346.7 484 352 466.6 352 448V401.1c24.3-17.5 43.6-41.6 55.4-69.6c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c11.7 27.8 30.8 51.7 54.8 69.2V448c0 18.6 5.3 36 14.5 50.8zm20.7-265.2c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM336 272a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM320 402.6V448c0 35.3-28.7 64-64 64s-64-28.7-64-64V402.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6zM336 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faGrinTongueWink = faFaceGrinTongueWink;\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-366.1-8.3a.5 .5 0 1 1 -.9 .1 .5 .5 0 1 1 .9-.1z\"]\n};\nvar faPlugCircleExclamation = {\n prefix: 'fas',\n iconName: 'plug-circle-exclamation',\n icon: [576, 512, [], \"e55d\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faLinkSlash = {\n prefix: 'fas',\n iconName: 'link-slash',\n icon: [640, 512, [\"chain-broken\", \"chain-slash\", \"unlink\"], \"f127\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM406.6 416.4L220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3zm-290-228.5L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9z\"]\n};\nvar faChainBroken = faLinkSlash;\nvar faChainSlash = faLinkSlash;\nvar faUnlink = faLinkSlash;\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M288 448H64V224h64V160H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H288v64zm-64-96H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64z\"]\n};\nvar faPersonWalkingArrowLoopLeft = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-loop-left',\n icon: [640, 512, [], \"e551\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384H480c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96H461.3l25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z\"]\n};\nvar faArrowUpZA = {\n prefix: 'fas',\n iconName: 'arrow-up-z-a',\n icon: [576, 512, [\"sort-alpha-up-alt\"], \"f882\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 64c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zm96 192c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 262.8 428.1 256 416 256zM395.8 400L416 359.6 436.2 400H395.8z\"]\n};\nvar faSortAlphaUpAlt = faArrowUpZA;\nvar faFireFlameCurved = {\n prefix: 'fas',\n iconName: 'fire-flame-curved',\n icon: [384, 512, [\"fire-alt\"], \"f7e4\", \"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0C198.4 0 208 9.6 208 21.3V43.5c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7C384 434 306 512 209.7 512H192C86 512 0 426 0 320v-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6C85.9 176 96 186.1 96 198.6V288c0 35.3 28.7 64 64 64s64-28.7 64-64v-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7c0-27.7 9-54.8 25.6-76.9z\"]\n};\nvar faFireAlt = faFireFlameCurved;\nvar faTornado = {\n prefix: 'fas',\n iconName: 'tornado',\n icon: [448, 512, [127786], \"f76f\", \"M0 32V45.6C0 62.7 1.7 79.6 5 96H357.8c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16C416 10.1 405.9 0 393.4 0H32C14.3 0 0 14.3 0 32zm352.2 96H13.6c12.2 35.9 32.3 68.7 58.8 96H412l-47.2-62.9c-7.3-9.7-11.6-21.2-12.6-33.1zm-226 138.2l116.4 68.5c8.2 4.8 15.8 10.7 22.5 17.3H445c2-9.8 3-19.9 3-30.1c0-23-5.3-45.5-15.3-65.9H110.2c5.2 3.6 10.5 7 16 10.2zM288 384c10.3 21.4 13.8 45.5 9.9 69l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4c5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c12.8-12.8 23.1-27.7 30.4-43.9H288z\"]\n};\nvar faFileCirclePlus = {\n prefix: 'fas',\n iconName: 'file-circle-plus',\n icon: [576, 512, [58606], \"e494\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faDeleteRight = {\n prefix: 'fas',\n iconName: 'delete-right',\n icon: [576, 512, [], \"e154\", \"M0 128C0 92.7 28.7 64 64 64H370.7c17 0 33.3 6.7 45.3 18.7L566.6 233.4c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6L416 429.3c-12 12-28.3 18.7-45.3 18.7H64c-35.3 0-64-28.7-64-64V128zm143 47c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faBookQuran = {\n prefix: 'fas',\n iconName: 'book-quran',\n icon: [448, 512, [\"quran\"], \"f687\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM274.1 150.2l-8.9 21.4-23.1 1.9c-5.7 .5-8 7.5-3.7 11.2L256 199.8l-5.4 22.6c-1.3 5.5 4.7 9.9 9.6 6.9L280 217.2l19.8 12.1c4.9 3 10.9-1.4 9.6-6.9L304 199.8l17.6-15.1c4.3-3.7 2-10.8-3.7-11.2l-23.1-1.9-8.9-21.4c-2.2-5.3-9.6-5.3-11.8 0zM96 192c0 70.7 57.3 128 128 128c25.6 0 49.5-7.5 69.5-20.5c3.2-2.1 4.5-6.2 3.1-9.7s-5.2-5.6-9-4.8c-6.1 1.2-12.5 1.9-19 1.9c-52.4 0-94.9-42.5-94.9-94.9s42.5-94.9 94.9-94.9c6.5 0 12.8 .7 19 1.9c3.8 .8 7.5-1.3 9-4.8s.2-7.6-3.1-9.7C273.5 71.5 249.6 64 224 64C153.3 64 96 121.3 96 192z\"]\n};\nvar faQuran = faBookQuran;\nvar faCircleQuarter = {\n prefix: 'fas',\n iconName: 'circle-quarter',\n icon: [512, 512, [], \"e11f\", \"M32 256C14.3 256-.2 241.6 2 224.1C16.4 108.2 108.2 16.4 224.1 2C241.6-.2 256 14.3 256 32V224c0 17.7-14.3 32-32 32L32 256z\"]\n};\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [9875], \"f13d\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c88.4 0 160-71.6 160-160v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 53-43 96-96 96H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M384 96V224H256V96H384zm0 192V416H256V288H384zM192 224H64V96H192V224zM64 288H192V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faFunction = {\n prefix: 'fas',\n iconName: 'function',\n icon: [640, 512, [], \"f661\", \"M64 96c0-53 43-96 96-96h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32 14.3-32 32v96h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H128V383.5c0 48.4-36.1 89.3-84.1 95.3l-7.9 1C18.4 481.9 2.4 469.5 .2 452s10.2-33.5 27.8-35.7l7.9-1c16-2 28-15.6 28-31.8V256H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V96zm266.7 81.7C303.7 218.4 288 267.3 288 320s15.7 101.6 42.7 142.3c9.8 14.7 5.7 34.6-9 44.3s-34.6 5.7-44.3-9C243.6 446.7 224 385.6 224 320s19.6-126.7 53.3-177.7c9.8-14.7 29.6-18.8 44.3-9s18.8 29.6 9 44.3zm202.6 0c-9.8-14.7-5.7-34.6 9-44.3s34.6-5.7 44.3 9C620.4 193.3 640 254.4 640 320s-19.6 126.7-53.3 177.7c-9.8 14.7-29.6 18.8-44.3 9s-18.8-29.6-9-44.3c27-40.7 42.7-89.6 42.7-142.3s-15.7-101.6-42.7-142.3zM398.6 241.4L432 274.7l33.4-33.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L477.3 320l33.4 33.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L432 365.3l-33.4 33.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L386.7 320l-33.4-33.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nvar faFaceAngry = {\n prefix: 'fas',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM338.7 395.9c6.6-5.9 7.1-16 1.2-22.6C323.8 355.4 295.7 336 256 336s-67.8 19.4-83.9 37.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c11.7-13 31.6-26.7 60.1-26.7s48.4 13.7 60.1 26.7c5.9 6.6 16 7.1 22.6 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faAngry = faFaceAngry;\nvar faPeopleSimple = {\n prefix: 'fas',\n iconName: 'people-simple',\n icon: [512, 512, [], \"e21b\", \"M128 128A64 64 0 1 0 128 0a64 64 0 1 0 0 128zm-22.4 32c-41.6 0-76.3 31.9-79.7 73.4l-4.1 49.3c-2.5 29.8 15.7 56.1 42.2 65.6V464c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V348.3c26.5-9.5 44.7-35.8 42.2-65.6l-4.1-49.3C226.7 191.9 192 160 150.4 160H105.6zM384 128A64 64 0 1 0 384 0a64 64 0 1 0 0 128zm-15.7 32c-28.6 0-53.7 18.9-61.5 46.4L267.7 343.2c-5.8 20.4 9.5 40.8 30.8 40.8H320v80c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V384h21.6c21.3 0 36.6-20.3 30.8-40.8L461.3 206.4c-7.9-27.5-33-46.4-61.5-46.4H368.3z\"]\n};\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArrowTrendDown = {\n prefix: 'fas',\n iconName: 'arrow-trend-down',\n icon: [576, 512, [], \"e097\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v82.7L342.6 137.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352H384z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [\"feed\"], \"f09e\", \"M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFeed = faRss;\nvar faFaceMonocle = {\n prefix: 'fas',\n iconName: 'face-monocle',\n icon: [512, 512, [], \"e380\", \"M427.2 446.3C381.9 487.2 321.8 512 256 512C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256c0 62.8-22.6 120.3-60.1 164.9c-2.5-8.6-3.9-17.7-3.9-26.9V224c0-61.9-50.1-112-112-112s-112 50.1-112 112s50.1 112 112 112c31.3 0 59.7-12.9 80-33.6v91.5c0 18.4 3.9 36.2 11.2 52.4zM256 224a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zm-79.6-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm144 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM144 352c0 8.8 7.2 16 16 16c14.3 0 37.9 2.9 60.6 11.7c22.8 8.8 42.7 22.7 53.1 43.4c4 7.9 13.6 11.1 21.5 7.2s11.1-13.6 7.2-21.5c-15.3-30.5-43.3-48.6-70.1-59C205.3 339.5 177.7 336 160 336c-8.8 0-16 7.2-16 16zM305.2 89.9c8-6.4 18-9.9 28.2-9.9c8.9 0 17.6 2.6 25.1 7.6l8.6 5.7c7.4 4.9 17.3 2.9 22.2-4.4s2.9-17.3-4.4-22.2L376.3 61c-12.7-8.5-27.6-13-42.8-13c-17.5 0-34.5 6-48.2 16.9L262 83.5c-6.9 5.5-8 15.6-2.5 22.5s15.6 8 22.5 2.5l23.2-18.6z\"]\n};\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M96 151.4V360.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c0-.1 .1-.2 .1-.3l-4.5-7.9-32-56 0 0c-1.4 .1-2.8 .1-4.2 .1c-35.3 0-64-28.7-64-64s28.7-64 64-64c1.4 0 2.8 0 4.2 .1l0 0 32-56 4.5-7.9-.1-.3H119.4c-5.6 9.7-13.7 17.8-23.4 23.4zM384.3 352c35.2 .2 63.7 28.7 63.7 64c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V151.4C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32H328.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 35.3-28.5 63.8-63.7 64l-4.5 7.9-32 56-2.3 4c4.2 8.5 6.5 18 6.5 28.1s-2.3 19.6-6.5 28.1l2.3 4 32 56 4.5 7.9z\"]\n};\nvar faScaleBalanced = {\n prefix: 'fas',\n iconName: 'scale-balanced',\n icon: [640, 512, [9878, \"balance-scale\"], \"f24e\", \"M384 32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H398.4c-5.2 25.8-22.9 47.1-46.4 57.3V448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-23.5-10.3-41.2-31.6-46.4-57.3H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288H584.4L512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C627.2 382 574.9 416 512 416zM126.8 195.8L54.4 320H199.3L126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C242 382 189.7 416 126.8 416S11.7 382 .9 337.1z\"]\n};\nvar faBalanceScale = faScaleBalanced;\nvar faCalendarLines = {\n prefix: 'fas',\n iconName: 'calendar-lines',\n icon: [448, 512, [\"calendar-note\"], \"e0d5\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192zM96 296c0-13.3 10.7-24 24-24H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H120c-13.3 0-24-10.7-24-24zm24 72H232c13.3 0 24 10.7 24 24s-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faCalendarNote = faCalendarLines;\nvar faArrowDownBigSmall = {\n prefix: 'fas',\n iconName: 'arrow-down-big-small',\n icon: [576, 512, [\"sort-size-down\"], \"f88c\", \"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM320 368v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48zM368 32c-26.5 0-48 21.5-48 48V208c0 26.5 21.5 48 48 48H496c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H368z\"]\n};\nvar faSortSizeDown = faArrowDownBigSmall;\nvar faGaugeSimpleHigh = {\n prefix: 'fas',\n iconName: 'gauge-simple-high',\n icon: [512, 512, [61668, \"tachometer\", \"tachometer-fast\"], \"f62a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-15.9-5.8-30.4-15.3-41.6l76.6-147.4c6.1-11.8 1.5-26.3-10.2-32.4s-26.2-1.5-32.4 10.2L262.1 288.3c-2-.2-4-.3-6.1-.3c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faTachometer = faGaugeSimpleHigh;\nvar faTachometerFast = faGaugeSimpleHigh;\nvar faDoNotEnter = {\n prefix: 'fas',\n iconName: 'do-not-enter',\n icon: [512, 512, [], \"f5ec\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96 208H416c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16z\"]\n};\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [128703], \"f2cc\", \"M64 131.9C64 112.1 80.1 96 99.9 96c9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.2-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32C44.7 32 0 76.7 0 131.9V448c0 17.7 14.3 32 32 32s32-14.3 32-32V131.9zM256 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faDiceD8 = {\n prefix: 'fas',\n iconName: 'dice-d8',\n icon: [512, 512, [], \"f6d2\", \"M240 16c0-6.5-4-12.4-10-14.8s-13-1-17.5 3.7l-208 216c-3.7 3.9-5.3 9.3-4.1 14.6s4.9 9.5 9.9 11.5l208 80c4.9 1.9 10.5 1.2 14.8-1.7s6.9-7.9 6.9-13.2V16zM34.6 307.5c-4.1 6.3-3.3 14.6 1.9 20l176 179.7c4.5 4.6 11.5 6.1 17.5 3.6s10-8.3 10-14.8V384c0-6.6-4.1-12.6-10.3-14.9l-176-67.7c-7-2.7-15-.1-19.1 6.1zm442.7 0c-4.1-6.3-12.1-8.8-19.1-6.1l-176 67.7c-6.2 2.4-10.3 8.3-10.3 14.9V496c0 6.5 3.9 12.4 10 14.8s12.9 1 17.5-3.6l176-179.7c5.3-5.4 6.1-13.7 1.9-20zM282 1.2C276 3.6 272 9.5 272 16V312c0 5.3 2.6 10.2 6.9 13.2s9.9 3.6 14.8 1.7l208-80c5-1.9 8.7-6.2 9.9-11.5s-.4-10.7-4.1-14.6l-208-216C295 .2 288.1-1.3 282 1.2z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [128421, 61704, \"desktop-alt\"], \"f390\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V288H64V64H512z\"]\n};\nvar faDesktopAlt = faDesktop;\nvar faM = {\n prefix: 'fas',\n iconName: 'm',\n icon: [448, 512, [109], \"4d\", \"M22.7 33.4c13.5-4.1 28.1 1.1 35.9 12.9L224 294.3 389.4 46.2c7.8-11.7 22.4-17 35.9-12.9S448 49.9 448 64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V169.7L250.6 369.8c-5.9 8.9-15.9 14.2-26.6 14.2s-20.7-5.3-26.6-14.2L64 169.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 49.9 9.2 37.5 22.7 33.4z\"]\n};\nvar faGripDotsVertical = {\n prefix: 'fas',\n iconName: 'grip-dots-vertical',\n icon: [256, 512, [], \"e411\", \"M48 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm0 160a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM96 416A48 48 0 1 0 0 416a48 48 0 1 0 96 0zM208 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 112a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faFaceViewfinder = {\n prefix: 'fas',\n iconName: 'face-viewfinder',\n icon: [512, 512, [], \"e2ff\", \"M56 0h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-4.4 0-8 3.6-8 8v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V56C0 25.1 25.1 0 56 0zM376 0h80c30.9 0 56 25.1 56 56v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V56c0-4.4-3.6-8-8-8H376c-13.3 0-24-10.7-24-24s10.7-24 24-24zM48 376v80c0 4.4 3.6 8 8 8h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-30.9 0-56-25.1-56-56V376c0-13.3 10.7-24 24-24s24 10.7 24 24zm464 0v80c0 30.9-25.1 56-56 56H376c-13.3 0-24-10.7-24-24s10.7-24 24-24h80c4.4 0 8-3.6 8-8V376c0-13.3 10.7-24 24-24s24 10.7 24 24zM96 256a160 160 0 1 1 320 0A160 160 0 1 1 96 256zm128-40a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM169.9 292.5c-6.4 6.1-6.6 16.2-.5 22.6C191.2 337.8 222 352 256 352s64.8-14.2 86.6-36.9c6.1-6.4 5.9-16.5-.5-22.6s-16.5-5.9-22.6 .5C303.5 309.6 281 320 256 320s-47.5-10.4-63.5-27.1c-6.1-6.4-16.2-6.6-22.6-.5z\"]\n};\nvar faSoftServe = {\n prefix: 'fas',\n iconName: 'soft-serve',\n icon: [384, 512, [127846, \"creemee\"], \"e400\", \"M208 0c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l6.1 6.1c3.4 3.4 5.3 7.9 5.3 12.7C208 56 200 64 190.1 64H128c-35.3 0-64 28.7-64 64c0 11.8 3.2 22.9 8.8 32.4C40.8 164 16 191.1 16 224c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64s-28.7-64-64-64h-2.3c11.5-14.4 18.3-32.7 18.3-52.6C320 48.1 271.9 0 212.6 0H208zM48 320v32c0 17.7 14.3 32 32 32h1.8l11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5H259.4c16.3 0 30-12.3 31.8-28.5L302.2 384H304c17.7 0 32-14.3 32-32V320H48z\"]\n};\nvar faCreemee = faSoftServe;\nvar faH5 = {\n prefix: 'fas',\n iconName: 'h5',\n icon: [640, 512, [], \"e412\", \"M64 96c0-17.7-14.3-32-32-32S0 78.3 0 96V256 416c0 17.7 14.3 32 32 32s32-14.3 32-32V288H256V416c0 17.7 14.3 32 32 32s32-14.3 32-32V256 96c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H64V96zM432 64c-15.1 0-28.2 10.6-31.3 25.4l-32 152c-2 9.4 .4 19.3 6.5 26.8s15.2 11.8 24.8 11.8H524c28.7 0 52 23.3 52 52s-23.3 52-52 52H456.4c-10.3 0-19.5-6.6-22.8-16.4l-3.2-9.7c-5.6-16.8-23.7-25.8-40.5-20.2s-25.8 23.7-20.2 40.5l3.2 9.7c12 35.9 45.6 60.2 83.5 60.2H524c64.1 0 116-51.9 116-116s-51.9-116-116-116H439.4L458 128H576c17.7 0 32-14.3 32-32s-14.3-32-32-32H432z\"]\n};\nvar faHandBackPointDown = {\n prefix: 'fas',\n iconName: 'hand-back-point-down',\n icon: [448, 512, [], \"e19e\", \"M136 512c-22.1 0-40-17.9-40-40V272v-7V192c0-8.8-7.2-16-16-16s-16 7.2-16 16v55.7c-2-1.4-3.9-3-5.8-4.5L39 227.2C24.4 215 16 197 16 178V140c0-38 16.9-74 46.1-98.3l5.4-4.5C96.3 13.1 132.5 0 169.9 0H288c70.7 0 128 57.3 128 128v64 32c0 26.5-21.5 48-48 48c-12.4 0-23.6-4.7-32.1-12.3C334 284.5 313.3 304 288 304c-12.4 0-23.6-4.7-32.1-12.3C254 316.5 233.3 336 208 336c-12.3 0-23.5-4.6-32-12.2V472c0 22.1-17.9 40-40 40z\"]\n};\nvar faTableList = {\n prefix: 'fas',\n iconName: 'table-list',\n icon: [512, 512, [\"th-list\"], \"f00b\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 0v64h64V96H64zm384 0H192v64H448V96zM64 224v64h64V224H64zm384 0H192v64H448V224zM64 352v64h64V352H64zm384 0H192v64H448V352z\"]\n};\nvar faThList = faTableList;\nvar faCommentSms = {\n prefix: 'fas',\n iconName: 'comment-sms',\n icon: [512, 512, [\"sms\"], \"f7cd\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM202.9 176.8c6.5-2.2 13.7 .1 17.9 5.6L256 229.3l35.2-46.9c4.1-5.5 11.3-7.8 17.9-5.6s10.9 8.3 10.9 15.2v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V240l-19.2 25.6c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L224 240v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-6.9 4.4-13 10.9-15.2zm173.1 38c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.2-.4-23.7-4.4-32.6-7.4l0 0 0 0c-1.4-.5-2.7-.9-4-1.4c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.7 .6 3.3 1.1 4.9 1.6l0 0 0 0c9.1 3.1 15.6 5.3 22.6 5.5c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4c-7.2-2.2-16.7-5-24.3-9.6c-9-5.4-17.7-14.7-17.7-29.4c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c10 .2 19.7 2.3 27.9 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-7.3-1.9-14.1-3.3-20.1-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9zm-272 0c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.3-.4-24.2-4.5-33.2-7.6l0 0 0 0c-1.3-.4-2.5-.8-3.6-1.2c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.4 .5 2.8 .9 4.1 1.4l0 0 0 0c9.5 3.2 16.5 5.6 23.7 5.8c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4 0 0c-7.2-2.2-16.7-5-24.3-9.6C80.8 239 72.1 229.7 72 215c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c9.5 .1 22.2 2.1 31.1 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-6.6-1.8-16.8-3.3-23.3-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9z\"]\n};\nvar faSms = faCommentSms;\nvar faRectangle = {\n prefix: 'fas',\n iconName: 'rectangle',\n icon: [512, 512, [9644, \"rectangle-landscape\"], \"f2fa\", \"M0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nvar faRectangleLandscape = faRectangle;\nvar faClipboardListCheck = {\n prefix: 'fas',\n iconName: 'clipboard-list-check',\n icon: [384, 512, [], \"f737\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-4.7 132.7c6.2 6.2 6.2 16.4 0 22.6l-64 64c-6.2 6.2-16.4 6.2-22.6 0l-32-32c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L112 249.4l52.7-52.7c6.2-6.2 16.4-6.2 22.6 0zM192 272c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zm-16 80H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zM72 368a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faTurkey = {\n prefix: 'fas',\n iconName: 'turkey',\n icon: [640, 512, [], \"f725\", \"M472 56c0 22.1-1.2 49.3-19.3 62l-31.6 22.3C375.9 112.2 327.9 96 288 96C176 96 0 224 0 384C0 512 160 512 288 512s288 0 288-128c0-63-27.3-121.1-67.3-168.3c-.4 .2-.7 .4-1 .6l-28.3 20c-8.3 5.9-15.1 15-21.2 28.3c-6.1 13.4-10.5 28.6-15.4 46l-.3 1c-7.9 27.5-24 53-47.9 72.3c-61.8 50-152.5 40.5-202.5-21.4c-13.9-17.2-23.2-36.6-28.1-56.7c-2.3-9.4 5.3-17.9 15-17.9c8 0 14.6 5.8 16.9 13.5c4 14.5 10.9 28.5 21 41c21.3 26.3 52.1 40.5 83.5 41.5c25.9 .8 52.2-7.3 74-24.9c18.6-15 31.1-34.8 37.2-56.2l.6-2c9.6-33.7 20.1-70.5 48.7-90.6L486.7 192s0 0 0 0l2.5-1.8c18.3-12.9 43.3-10.4 67.4-8c9.4 .9 18.6 1.8 27.3 1.8c30.9 0 56-25.1 56-56s-25.1-56-56-56c-1.1 0-2-1.1-1.7-2.2c1.1-4.4 1.7-9 1.7-13.8c0-30.9-25.1-56-56-56s-56 25.1-56 56z\"]\n};\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [128212], \"f02d\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM504 312V248H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V136c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faIceSkate = {\n prefix: 'fas',\n iconName: 'ice-skate',\n icon: [576, 512, [9976], \"f7ac\", \"M512 336c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V132.2c0-21.4 14.2-40.3 34.8-46.2L256 32c0-17.7 14.3-32 32-32s32 14.3 32 32V96H272c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v32H272c-8.8 0-16 7.2-16 16s7.2 16 16 16h48l119.3 29.8C482 232.5 512 270.9 512 315v21zm40 72c13.3 0 24 10.7 24 24v8c0 39.8-32.2 72-72 72H408 120 24c-13.3 0-24-10.7-24-24s10.7-24 24-24H96V416h48v48H384V416h48v48h72c13.3 0 24-10.7 24-24v-8c0-13.3 10.7-24 24-24z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [448, 512, [10003, 10004], \"f00c\", \"M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [576, 512, [\"battery-4\"], \"f241\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm272 96H96V320H352V192z\"]\n};\nvar faBattery4 = faBatteryThreeQuarters;\nvar faTomato = {\n prefix: 'fas',\n iconName: 'tomato',\n icon: [512, 512, [], \"e330\", \"M241 7L224 24C241 7 241 7 241 7l0 0 0 0 .1 .1 .2 .2 .5 .5c.4 .4 1 1 1.7 1.8c1.4 1.5 3.2 3.6 5.4 6.3c4.4 5.4 10.1 13.1 15.8 22.8c6.6 11.2 13.4 25.5 18 42.1c45.7 3.1 88.5 14.2 125.1 32.8c6.6 3.4 10 10.8 8.3 18s-8.2 12.3-15.6 12.3H365.9l15.4 23.1c3.9 5.9 3.5 13.7-1 19.1s-12.1 7.3-18.6 4.5L256 145.4 150.3 190.7c-6.5 2.8-14.1 1-18.6-4.5s-4.9-13.2-1-19.1l15.5-23.3-31.3-.2c-7 1.5-14.3-1.7-17.7-8.4c-4-7.9-.9-17.5 7-21.5l.8-.4C142.2 94.6 185.6 83.5 232 80.7c-2.6-6.4-5.6-12.3-8.7-17.6c-4.3-7.3-8.6-13-11.7-16.9c-1.6-1.9-2.8-3.4-3.6-4.3c-.4-.4-.7-.8-.9-.9l-.1-.1c-9.3-9.4-9.3-24.5 .1-33.9c9.4-9.4 24.6-9.4 33.9 0zM71.1 154c6 9.4 14.9 16.1 25 19.5c-.6 11.8 3.1 23.7 11 33.2c13.6 16.3 36.3 21.8 55.8 13.4L256 180.2l93.1 39.9c19.5 8.4 42.2 2.9 55.8-13.4c7.9-9.5 11.7-21.5 11-33.2c10.3-3.5 19.1-10.4 25-19.5c44 35.5 71.1 86.4 71.1 150c0 130.9-114.6 208-256 208S0 434.9 0 304c0-63.6 27.1-114.5 71.1-150z\"]\n};\nvar faSwordLaser = {\n prefix: 'fas',\n iconName: 'sword-laser',\n icon: [512, 512, [], \"e03b\", \"M505 7c9.1 9.1 9.4 23.7 .7 33.2L285.2 281.3l-54.4-54.4L471.8 6.3c9.5-8.7 24.1-8.3 33.2 .7zM195.3 236.7l80 80c6.2 6.2 6.2 16.4 0 22.6c-6.1 6.1-15.8 6.2-22.1 .5l-81-81c-5.8-6.3-5.6-16 .5-22.1c6.2-6.2 16.4-6.2 22.6 0zm-57.7 57.7l23.7-23.7 80 80-23.7 23.7-80-80zm-11.3 11.3l80 80-20.7 20.7-80-80 20.7-20.7zM87 330.3L181.7 425l-2.3 2.3L105 501.7C98.3 508.3 89.4 512 80 512s-18.3-3.7-25-10.3L10.3 457C3.7 450.3 0 441.4 0 432s3.7-18.3 10.3-25l74.3-74.3 2.3-2.3z\"]\n};\nvar faHouseCircleCheck = {\n prefix: 'fas',\n iconName: 'house-circle-check',\n icon: [640, 512, [], \"e509\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faBuildings = {\n prefix: 'fas',\n iconName: 'buildings',\n icon: [512, 512, [], \"e0cc\", \"M256 0c-35.3 0-64 28.7-64 64v64H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256 448c35.3 0 64-28.7 64-64V192 64c0-35.3-28.7-64-64-64H256zM64 304c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V304zm208 16c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272zm112-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16zM80 192h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zM256 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V80zM400 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zM256 208V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16zm144 16c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [320, 512, [8249], \"f104\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faCartFlatbedBoxes = {\n prefix: 'fas',\n iconName: 'cart-flatbed-boxes',\n icon: [640, 512, [\"dolly-flatbed-alt\"], \"f475\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64H48c8.8 0 16 7.2 16 16V368c0 44.2 35.8 80 80 80h18.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H450.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H144c-8.8 0-16-7.2-16-16V80C128 35.8 92.2 0 48 0H32zM224 32c-17.7 0-32 14.3-32 32V288c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H224zM416 64v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32zm32 128c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H576c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H448z\"]\n};\nvar faDollyFlatbedAlt = faCartFlatbedBoxes;\nvar faDiagramSuccessor = {\n prefix: 'fas',\n iconName: 'diagram-successor',\n icon: [512, 512, [], \"e47a\", \"M512 416l0-64c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64zM64 160l0-64 144 0 16 0 0 64L64 160zm224 0l0-64 80 0c8.8 0 16 7.2 16 16l0 16-38.1 0c-21.4 0-32.1 25.9-17 41L399 239c9.4 9.4 24.6 9.4 33.9 0L503 169c15.1-15.1 4.4-41-17-41L448 128l0-16c0-44.2-35.8-80-80-80L224 32l-16 0L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64z\"]\n};\nvar faTruckArrowRight = {\n prefix: 'fas',\n iconName: 'truck-arrow-right',\n icon: [640, 512, [], \"e58b\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM257 95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H262.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9L257 95z\"]\n};\nvar faSquareW = {\n prefix: 'fas',\n iconName: 'square-w',\n icon: [448, 512, [], \"e285\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm54.9 136.7L160 297.3l41.1-128.6c3.2-9.9 12.4-16.7 22.9-16.7s19.7 6.7 22.9 16.7L288 297.3l41.1-128.6c4-12.6 17.5-19.6 30.2-15.5s19.6 17.5 15.5 30.2l-64 200c-3.2 9.9-12.4 16.7-22.9 16.7s-19.7-6.7-22.9-16.7L224 254.7 182.9 383.3c-3.2 9.9-12.4 16.7-22.9 16.7s-19.7-6.7-22.9-16.7l-64-200c-4-12.6 2.9-26.1 15.5-30.2s26.1 2.9 30.2 15.5z\"]\n};\nvar faArrowsSplitUpAndLeft = {\n prefix: 'fas',\n iconName: 'arrows-split-up-and-left',\n icon: [512, 512, [], \"e4bc\", \"M246.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 109.3V384c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c-70.7 0-128-57.3-128-128c0-35.3-28.7-64-64-64H109.3l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256H224c23.3 0 45.2 6.2 64 17.1V109.3l-41.4 41.4z\"]\n};\nvar faLamp = {\n prefix: 'fas',\n iconName: 'lamp',\n icon: [448, 512, [], \"f4ca\", \"M82.5 19.7C87.4 7.8 99.1 0 112 0H336c12.9 0 24.6 7.8 29.5 19.7l80 192c4.1 9.9 3 21.2-2.9 30.1s-15.9 14.2-26.6 14.2H32c-10.7 0-20.7-5.3-26.6-14.2s-7-20.2-2.9-30.1l80-192zM160 288H288v32s64 50.5 64 112c0 24.4-8.3 44.6-16.4 58.7c-8.5 14.7-25.2 21.3-42.1 21.3h-139c-17 0-33.6-6.6-42.1-21.3C104.3 476.6 96 456.4 96 432c0-61.5 64-112 64-112V288z\"]\n};\nvar faAirplay = {\n prefix: 'fas',\n iconName: 'airplay',\n icon: [576, 512, [], \"e089\", \"M480 96H96c-17.7 0-32 14.3-32 32V320c0 17.7 14.3 32 32 32h69.5l-50.7 50.7c-4 4-7.4 8.5-10.2 13.3H96c-53 0-96-43-96-96V128C0 75 43 32 96 32H480c53 0 96 43 96 96V320c0 53-43 96-96 96h-8.6c-2.8-4.8-6.2-9.2-10.2-13.3L410.5 352H480c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32zM265.4 297.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H160c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128z\"]\n};\nvar faHandFist = {\n prefix: 'fas',\n iconName: 'hand-fist',\n icon: [448, 512, [9994, \"fist-raised\"], \"f6de\", \"M192 0c17.7 0 32 14.3 32 32V144H160V32c0-17.7 14.3-32 32-32zM64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v80H64V64zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V64zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V128zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V256c0 52.3-25.1 98.8-64 128v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V401.6c-17.3-7.9-33.2-18.8-46.9-32.5L69.5 357.5C45.5 333.5 32 300.9 32 267V240c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H128c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faFistRaised = faHandFist;\nvar faShieldQuartered = {\n prefix: 'fas',\n iconName: 'shield-quartered',\n icon: [512, 512, [], \"e575\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM80 141.4L256 66.8V224H90.1c-6.9-30-9.8-58.5-10.1-82.6zM256 444.8V224H422c-18.5 80.5-65.5 172.2-166 220.8z\"]\n};\nvar faSlashForward = {\n prefix: 'fas',\n iconName: 'slash-forward',\n icon: [320, 512, [], \"2f\", \"M303.9 4.2c15.3 8.8 20.7 28.3 11.9 43.7l-256 448c-8.8 15.3-28.3 20.7-43.7 11.9S-4.6 479.5 4.2 464.1l256-448C269 .8 288.5-4.6 303.9 4.2z\"]\n};\nvar faLocationPen = {\n prefix: 'fas',\n iconName: 'location-pen',\n icon: [384, 512, [\"map-marker-edit\"], \"f607\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM276.8 107c14.7 14.7 14.7 38.6 0 53.3l-14.9 14.9L208.6 122 223.5 107c14.7-14.7 38.6-14.7 53.3 0zM114.1 216.5L186 144.6l53.3 53.3-71.9 71.9c-4.1 4.1-9.2 7-14.9 8.4l-36.6 9.2c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l9.2-36.7c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faMapMarkerEdit = faLocationPen;\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [640, 512, [], \"f6c3\", \"M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80H96c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faPotFood = {\n prefix: 'fas',\n iconName: 'pot-food',\n icon: [640, 512, [127858], \"e43f\", \"M112 24c0 26.5 10.5 38.7 25.9 56.1l.4 .4C154.8 99 176 122.9 176 168c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-26.5-10.5-38.7-25.9-56.1l-.4-.4C85.2 93 64 69.1 64 24C64 10.7 74.7 0 88 0s24 10.7 24 24zm112 0c0 26.5 10.5 38.7 25.9 56.1l.4 .4C266.8 99 288 122.9 288 168c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-26.5-10.5-38.7-25.9-56.1l-.4-.4C197.2 93 176 69.1 176 24c0-13.3 10.7-24 24-24s24 10.7 24 24zm208 88c50.7 0 93.6 33.7 107.4 80H324.6c13.8-46.3 56.6-80 107.4-80zM77.7 320H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H65.9c-.2-17.5 14-32 31.7-32H542.4c17.7 0 31.9 14.5 31.7 32H592c17.7 0 32 14.3 32 32s-14.3 32-32 32H562.3c-20.6 64-66.1 116.7-124.7 147.2l-1.2 9.7c-2.5 20-19.5 35-39.7 35H243.3c-20.2 0-37.2-15-39.7-35l-1.2-9.7C143.8 436.7 98.3 384 77.7 320z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [128188], \"f0b1\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 320 512V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM512 288H320v32c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V288z\"]\n};\nvar faPersonFalling = {\n prefix: 'fas',\n iconName: 'person-falling',\n icon: [512, 512, [], \"e546\", \"M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0h-1.4l92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32V278.2c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 32a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faImagePortrait = {\n prefix: 'fas',\n iconName: 'image-portrait',\n icon: [384, 512, [\"portrait\"], \"f3e0\", \"M384 64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64l0-384zM128 192a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 356.6c0-37.9 30.7-68.6 68.6-68.6h86.9c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4H107.4C92.3 384 80 371.7 80 356.6z\"]\n};\nvar faPortrait = faImagePortrait;\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c10 0 18.8-4.9 24.2-12.5l-99.2-99.2c-14.9-14.9-23.3-35.1-23.3-56.1v-33c-15.9-4.7-32.8-7.2-50.3-7.2H178.3zM384 224c-17.7 0-32 14.3-32 32v82.7c0 17 6.7 33.3 18.7 45.3L478.1 491.3c18.7 18.7 49.1 18.7 67.9 0l73.4-73.4c18.7-18.7 18.7-49.1 0-67.9L512 242.7c-12-12-28.3-18.7-45.3-18.7H384zm24 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faRug = {\n prefix: 'fas',\n iconName: 'rug',\n icon: [640, 512, [], \"e569\", \"M24 64H56 80V88v88 80 80 88 24H56 24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V360H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V280H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V200H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V112H24C10.7 112 0 101.3 0 88S10.7 64 24 64zm88 0H528V448H112V64zM640 88c0 13.3-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H584 560V424 336 256 176 88 64h24 32c13.3 0 24 10.7 24 24z\"]\n};\nvar faPrintSlash = {\n prefix: 'fas',\n iconName: 'print-slash',\n icon: [640, 512, [], \"f686\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L522.2 384H544c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H277.2L192 125.2V64H418.7L448 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L464 18.7C452 6.7 435.7 0 418.7 0H192c-35.3 0-64 28.7-64 64V75L38.8 5.1zm459 483.1l-51-40.2H192V384 368 352H324.9L122.2 192.3C89.6 195.2 64 222.6 64 256v96c0 17.7 14.3 32 32 32h32v64c0 35.3 28.7 64 64 64H448c20.1 0 38.1-9.3 49.8-23.8zM496 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faEarthEurope = {\n prefix: 'fas',\n iconName: 'earth-europe',\n icon: [512, 512, [\"globe-europe\"], \"f7a2\", \"M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1v9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1h1c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24v4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H379.3c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3h11.3c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16H454c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.7-15.4H251.4c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3v3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3H248c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faGlobeEurope = faEarthEurope;\nvar faCartFlatbedSuitcase = {\n prefix: 'fas',\n iconName: 'cart-flatbed-suitcase',\n icon: [640, 512, [\"luggage-cart\"], \"f59d\", \"M0 32C0 14.3 14.3 0 32 0H48c44.2 0 80 35.8 80 80V368c0 8.8 7.2 16 16 16H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H541.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H253.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H144c-44.2 0-80-35.8-80-80V80c0-8.8-7.2-16-16-16H32C14.3 64 0 49.7 0 32zM432 96V56c0-4.4-3.6-8-8-8H344c-4.4 0-8 3.6-8 8V96h96zM288 96V56c0-30.9 25.1-56 56-56h80c30.9 0 56 25.1 56 56V96 320H288V96zM512 320V96h16c26.5 0 48 21.5 48 48V272c0 26.5-21.5 48-48 48H512zM240 96h16V320H240c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faLuggageCart = faCartFlatbedSuitcase;\nvar faHandBackPointRibbon = {\n prefix: 'fas',\n iconName: 'hand-back-point-ribbon',\n icon: [448, 512, [], \"e1a0\", \"M112 128H43.8c-6.5 0-11.8-5.3-11.8-11.8c0-3.9 1.9-7.5 5.1-9.7L75.6 80 37.1 53.5c-3.2-2.2-5.1-5.8-5.1-9.7C32 37.3 37.3 32 43.8 32h69C116.5 13.7 132.6 0 152 0c22.1 0 40 17.9 40 40v8 64 16H176 112zm0 112V160h80v28.2c8.5-7.6 19.7-12.2 32-12.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48v32 64c0 70.7-57.3 128-128 128H185.9c-37.4 0-73.7-13.1-102.4-37.1l-5.4-4.5C48.9 446.1 32 410 32 372V334c0-19 8.4-37 23-49.2l19.2-16c1.9-1.6 3.8-3.1 5.8-4.5V320c0 8.8 7.2 16 16 16s16-7.2 16-16V247v-7z\"]\n};\nvar faRectangleXmark = {\n prefix: 'fas',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faRectangleTimes = faRectangleXmark;\nvar faTimesRectangle = faRectangleXmark;\nvar faWindowClose = faRectangleXmark;\nvar faTireRugged = {\n prefix: 'fas',\n iconName: 'tire-rugged',\n icon: [512, 512, [], \"f634\", \"M320 24c0-13.3-10.7-24-24-24H216c-13.3 0-24 10.7-24 24V40c0 .4 0 .8 0 1.3c-14.9 4.4-29.2 10.4-42.6 17.7c-.3-.3-.6-.6-.9-.9L137.2 46.7c-9.4-9.4-24.6-9.4-33.9 0L46.7 103.3c-9.4 9.4-9.4 24.6 0 33.9L58 148.5c.3 .3 .6 .6 .9 .9c-7.3 13.4-13.2 27.7-17.7 42.6c-.4 0-.8 0-1.3 0H24c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24H40c.4 0 .8 0 1.3 0c4.4 14.9 10.4 29.2 17.7 42.6c-.3 .3-.6 .6-.9 .9L46.7 374.8c-9.4 9.4-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0L148.5 454c.3-.3 .6-.6 .9-.9c13.4 7.3 27.7 13.2 42.6 17.7c0 .4 0 .8 0 1.3v16c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V472c0-.4 0-.8 0-1.3c14.9-4.4 29.2-10.4 42.6-17.7c.3 .3 .6 .6 .9 .9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0l56.6-56.6c9.4-9.4 9.4-24.6 0-33.9L454 363.5c-.3-.3-.6-.6-.9-.9c7.3-13.4 13.2-27.7 17.7-42.6c.4 0 .8 0 1.3 0h16c13.3 0 24-10.7 24-24V216c0-13.3-10.7-24-24-24H472c-.4 0-.8 0-1.3 0c-4.4-14.9-10.4-29.2-17.7-42.6c.3-.3 .6-.6 .9-.9l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9L408.7 46.7c-9.4-9.4-24.6-9.4-33.9 0L363.5 58c-.3 .3-.6 .6-.9 .9c-13.4-7.3-27.7-13.2-42.6-17.7c0-.4 0-.8 0-1.3V24zM256 128a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 80a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-61.1 2.9a24 24 0 1 0 -14.8 45.7 24 24 0 1 0 14.8-45.7zm106.7 30.2a24 24 0 1 0 45.7-14.8 24 24 0 1 0 -45.7 14.8zm-22.7 87.2a24 24 0 1 0 38.8-28.2 24 24 0 1 0 -38.8 28.2zm-51.1-33.5a24 24 0 1 0 -28.2 38.8 24 24 0 1 0 28.2-38.8z\"]\n};\nvar faLightbulbDollar = {\n prefix: 'fas',\n iconName: 'lightbulb-dollar',\n icon: [384, 512, [], \"f670\", \"M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zM212 88v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V296c0 11-9 20-20 20s-20-9-20-20V281.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V88c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faCowbell = {\n prefix: 'fas',\n iconName: 'cowbell',\n icon: [448, 512, [], \"f8b3\", \"M112 96h16V40c0-22.1 17.9-40 40-40H280c22.1 0 40 17.9 40 40V96h16c21.4 0 40.3 14.2 46.2 34.8l64 224c4.1 14.5 1.2 30.1-7.8 42.1s-23.3 19.1-38.3 19.1H48c-15.1 0-29.3-7.1-38.3-19.1s-12-27.6-7.8-42.1l64-224C71.7 110.2 90.6 96 112 96zm160 0V48H176V96h96zm16 352c0 35.3-28.7 64-64 64s-64-28.7-64-64H288z\"]\n};\nvar faBahtSign = {\n prefix: 'fas',\n iconName: 'baht-sign',\n icon: [320, 512, [], \"e0ac\", \"M144 0c-17.7 0-32 14.3-32 32V64H37.6C16.8 64 0 80.8 0 101.6V224v41.7V288 406.3c0 23 18.7 41.7 41.7 41.7H112v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c61.9 0 112-50.1 112-112c0-40.1-21.1-75.3-52.7-95.1C280.3 222.6 288 200.2 288 176c0-61.9-50.1-112-112-112V32c0-17.7-14.3-32-32-32zM112 128v96H64V128h48zm64 96V128c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-64 64v96H64V288h48zm64 96V288h32c26.5 0 48 21.5 48 48s-21.5 48-48 48H176z\"]\n};\nvar faCorner = {\n prefix: 'fas',\n iconName: 'corner',\n icon: [448, 512, [], \"e3fe\", \"M0 192c0-17.7 14.3-32 32-32H384c35.3 0 64 28.7 64 64V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V224H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faChevronsRight = {\n prefix: 'fas',\n iconName: 'chevrons-right',\n icon: [512, 512, [\"chevron-double-right\"], \"f324\", \"M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-192-192c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 233.4 425.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l192-192zm-384 192l192-192c12.5-12.5 12.5-32.8 0-45.3l-192-192c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 41.4 425.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faChevronDoubleRight = faChevronsRight;\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [128214, 128366], \"f518\", \"M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5V78.6c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C93.5 32 46.3 45.3 18.1 56.1C6.8 60.5 0 71.7 0 83.8V454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5V83.8c0-12.1-6.8-23.3-18.1-27.6C529.7 45.3 482.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11V456c0 11.4 11.7 19.3 22.4 15.5z\"]\n};\nvar faBookJournalWhills = {\n prefix: 'fas',\n iconName: 'book-journal-whills',\n icon: [448, 512, [\"journal-whills\"], \"f66a\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zm90.4-234.4l-21.2-21.2c-3 10.1-5.1 20.6-5.1 31.6c0 .2 0 .5 .1 .8s.1 .5 .1 .8L165.2 226c2.5 2.1 3.4 5.8 2.3 8.9c-1.3 3-4.1 5.1-7.5 5.1c-1.9-.1-3.8-.8-5.2-2l-23.6-20.6C142.8 267 186.9 304 240 304s97.3-37 108.9-86.6L325.3 238c-1.4 1.2-3.3 2-5.3 2c-2.2-.1-4.4-1.1-6-2.8c-1.2-1.5-1.9-3.4-2-5.2c.1-2.2 1.1-4.4 2.8-6l37.1-32.5c0-.3 0-.5 .1-.8s.1-.5 .1-.8c0-11-2.1-21.5-5.1-31.6l-21.2 21.2c-3.1 3.1-8.1 3.1-11.3 0s-3.1-8.1 0-11.2l26.4-26.5c-8.2-17-20.5-31.7-35.9-42.6c-2.7-1.9-6.2 1.4-5 4.5c8.5 22.4 3.6 48-13 65.6c-3.2 3.4-3.6 8.9-.9 12.7c9.8 14 12.7 31.9 7.5 48.5c-5.9 19.4-22 34.1-41.9 38.3l-1.4-34.3 12.6 8.6c.6 .4 1.5 .6 2.3 .6c1.5 0 2.7-.8 3.5-2s.6-2.8-.1-4L260 225.4l18-3.6c1.8-.4 3.1-2.1 3.1-4s-1.4-3.5-3.1-3.9l-18-3.7 8.5-14.3c.8-1.2 .9-2.9 .1-4.1s-2-2-3.5-2l-.1 0c-.7 .1-1.5 .3-2.1 .7l-14.1 9.6L244 87.9c-.1-2.2-1.9-3.9-4-3.9s-3.9 1.6-4 3.9l-4.6 110.8-12-8.1c-1.5-1.1-3.6-.9-5 .4s-1.6 3.4-.8 5l8.6 14.3-18 3.7c-1.8 .4-3.1 2-3.1 3.9s1.4 3.6 3.1 4l18 3.8-8.6 14.2c-.2 .6-.5 1.4-.5 2c0 1.1 .5 2.1 1.2 3c.8 .6 1.8 1 2.8 1c.7 0 1.6-.2 2.2-.6l10.4-7.1-1.4 32.8c-19.9-4.1-36-18.9-41.9-38.3c-5.1-16.6-2.2-34.4 7.6-48.5c2.7-3.9 2.3-9.3-.9-12.7c-16.6-17.5-21.6-43.1-13.1-65.5c1.2-3.1-2.3-6.4-5-4.5c-15.3 10.9-27.6 25.6-35.8 42.6l26.4 26.5c3.1 3.1 3.1 8.1 0 11.2s-8.1 3.1-11.2 0z\"]\n};\nvar faJournalWhills = faBookJournalWhills;\nvar faInhaler = {\n prefix: 'fas',\n iconName: 'inhaler',\n icon: [576, 512, [], \"f5f9\", \"M429.8 32.7c-12.7-3.2-25.6 4.4-29 17l-14 51.8L533.2 248 575.2 94.3c1.7-6.2 .8-12.9-2.4-18.4s-8.6-9.6-14.9-11.2l-128-32zM534.1 305.5c1.5-5.5-.1-11.5-4.1-15.5L383.8 143.8c-8.7-8.7-23.6-4.7-26.8 7.2l-16.5 61.2c-1.9 7-8.2 11.8-15.4 11.8H232c-22.1 0-40 17.9-40 40V440c0 22.1 17.9 40 40 40H456c18 0 33.8-12.1 38.6-29.5l39.5-145zM64 256A32 32 0 1 0 0 256a32 32 0 1 0 64 0zm0 96A32 32 0 1 0 0 352a32 32 0 1 0 64 0zm64-16a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM64 448A32 32 0 1 0 0 448a32 32 0 1 0 64 0zm64-16a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faHandcuffs = {\n prefix: 'fas',\n iconName: 'handcuffs',\n icon: [640, 512, [], \"e4f8\", \"M240 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM192 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32 80c17.7 0 32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C280.3 229.6 320 286.2 320 352c0 88.4-71.6 160-160 160S0 440.4 0 352c0-65.8 39.7-122.4 96.5-146.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32zm0 320a96 96 0 1 0 0-192 96 96 0 1 0 0 192zm192-96c0-25.9-5.1-50.5-14.4-73.1c16.9-32.9 44.8-59.1 78.9-73.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32s32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C600.3 229.6 640 286.2 640 352c0 88.4-71.6 160-160 160c-62 0-115.8-35.3-142.4-86.9c9.3-22.5 14.4-47.2 14.4-73.1zm224 0a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM368 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm80 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSnake = {\n prefix: 'fas',\n iconName: 'snake',\n icon: [512, 512, [128013], \"f716\", \"M483.4 65.7L403.6 25.8c-30.8-15.4-68-9.4-92.3 15L288 64H176C96.5 64 32 128.5 32 208s64.5 144 144 144H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H256.1l-.1 0H111.6c-10.3 0-20.6 1.7-30.4 4.9l-66 22C6.1 446 0 454.4 0 464s6.1 18 15.2 21.1l66 22c9.8 3.3 20 4.9 30.4 4.9h64.3l.1 0H320c70.7 0 128-57.3 128-128s-57.3-128-128-128H176c-26.5 0-48-21.5-48-48s21.5-48 48-48H288l23.2 23.2c24.3 24.3 61.5 30.4 92.3 15l79.8-39.9c17.5-8.8 28.6-26.7 28.6-46.3s-11.1-37.5-28.6-46.3zM352 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm16 48a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faTriangleExclamation = {\n prefix: 'fas',\n iconName: 'triangle-exclamation',\n icon: [512, 512, [9888, \"exclamation-triangle\", \"warning\"], \"f071\", \"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faExclamationTriangle = faTriangleExclamation;\nvar faWarning = faTriangleExclamation;\nvar faNoteMedical = {\n prefix: 'fas',\n iconName: 'note-medical',\n icon: [448, 512, [], \"e200\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V320H336c-26.5 0-48 21.5-48 48V480H64c-35.3 0-64-28.7-64-64V96zM402.7 352H448l-32 32-64 64-32 32V434.7 368c0-8.8 7.2-16 16-16h66.7zM192 144v48H144c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V256h48c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H256V144c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16z\"]\n};\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 80v48c0 44.2-100.3 80-224 80S0 172.2 0 128V80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6V288c0 44.2-100.3 80-224 80S0 332.2 0 288V186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6V432c0 44.2-100.3 80-224 80S0 476.2 0 432V346.1z\"]\n};\nvar faDownLeft = {\n prefix: 'fas',\n iconName: 'down-left',\n icon: [384, 512, [], \"e16a\", \"M48 432H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-72-72L372.7 171.3c7.2-7.2 11.3-17.1 11.3-27.3s-4.1-20.1-11.3-27.3L331.3 75.3C324.1 68.1 314.2 64 304 64s-20.1 4.1-27.3 11.3L142.6 209.4l-72-72c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6V400c0 17.7 14.3 32 32 32z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [\"arrow-turn-right\", \"mail-forward\"], \"f064\", \"M307 34.8c-11.5 5.1-19 16.6-19 29.2v64H176C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96h96v64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z\"]\n};\nvar faArrowTurnRight = faShare;\nvar faMailForward = faShare;\nvar faFaceThinking = {\n prefix: 'fas',\n iconName: 'face-thinking',\n icon: [512, 512, [], \"e39b\", \"M512 256c0 141.4-114.6 256-256 256c-10.6 0-21.1-.6-31.4-1.9c4-5.7 7.3-12 9.8-18.8l21-57.7 35.8-13c23.9-8.7 38.3-32 36.8-56.1c-1.3-24.4-16.5-46.1-39.2-55.6L166.2 257.3c-8.1-3.4-17.5 .4-21 8.5s.4 17.5 8.5 21l82.4 34.7L144 355v-3c0-30.9-25.1-56-56-56s-56 25.1-56 56v28C11.6 343.3 0 301 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256zM208.4 176a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 48a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM143 121.9c23.5-13.4 52.9-10.6 73.4 7l13.2 11.3c6.7 5.8 16.8 5 22.6-1.7s5-16.8-1.7-22.6l-13.2-11.3C206.4 78.1 162.3 74 127.1 94.1l-7.1 4c-7.7 4.4-10.3 14.2-6 21.8s14.2 10.3 21.8 6l7.1-4zM112 352v48.6l151.8-55.2c12.5-4.5 26.2 1.9 30.8 14.4s-1.9 26.2-14.4 30.8l-49.8 18.1-26.1 71.7c-6.9 19-24.9 31.6-45.1 31.6H112c-26.5 0-48-21.5-48-48V352c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faTurnDownRight = {\n prefix: 'fas',\n iconName: 'turn-down-right',\n icon: [512, 512, [], \"e455\", \"M334.5 446c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 88-192 0c-17.7 0-32-14.3-32-32L96 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64L0 208c0 70.7 57.3 128 128 128l192 0 0 88c0 9.6 5.7 18.2 14.5 22z\"]\n};\nvar faBottleDroplet = {\n prefix: 'fas',\n iconName: 'bottle-droplet',\n icon: [320, 512, [], \"e4c4\", \"M96 0C82.7 0 72 10.7 72 24s10.7 24 24 24c4.4 0 8 3.6 8 8v64.9c0 12.2-7.2 23.1-17.2 30.1C53.7 174.1 32 212.5 32 256V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V256c0-43.5-21.7-81.9-54.8-105c-10-7-17.2-17.9-17.2-30.1V56c0-4.4 3.6-8 8-8c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0 0 0 0H104l0 0 0 0L96 0zm64 382c-26.5 0-48-20.1-48-45c0-16.8 22.1-48.1 36.3-66.4c6-7.8 17.5-7.8 23.5 0C185.9 288.9 208 320.2 208 337c0 24.9-21.5 45-48 45z\"]\n};\nvar faMaskFace = {\n prefix: 'fas',\n iconName: 'mask-face',\n icon: [640, 512, [], \"e1d7\", \"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1H144 128 56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l108 27C233.8 435 275.4 448 320 448s86.2-13 121.1-35.5l108-27C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H512 496h-9.2c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM132.3 346.3l-29.8-7.4C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H96v48c0 45.1 13.4 87.2 36.3 122.3zm405.1-7.4l-29.8 7.4c23-35.2 36.3-77.2 36.3-122.3V176h40c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9zM192 208c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zm16 48H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 80c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHillRockslide = {\n prefix: 'fas',\n iconName: 'hill-rockslide',\n icon: [576, 512, [], \"e508\", \"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2H293.4c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9V309.4c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9v53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faScannerKeyboard = {\n prefix: 'fas',\n iconName: 'scanner-keyboard',\n icon: [512, 512, [], \"f489\", \"M152 0h16c13.3 0 24 10.7 24 24V64H128V24c0-13.3 10.7-24 24-24zM312 0h16c13.3 0 24 10.7 24 24V64H288V24c0-13.3 10.7-24 24-24zM224 16c0-8.8 7.2-16 16-16s16 7.2 16 16V64H224V16zM400 0c8.8 0 16 7.2 16 16V272c0 8.8-7.2 16-16 16s-16-7.2-16-16V16c0-8.8 7.2-16 16-16zm48 24c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24H472c-13.3 0-24-10.7-24-24V24zM0 160c0-35.3 28.7-64 64-64H288c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm64 24v16c0 13.3 10.7 24 24 24H264c13.3 0 24-10.7 24-24V184c0-13.3-10.7-24-24-24H88c-13.3 0-24 10.7-24 24zm0 120v32c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80zm112-80v32c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208z\"]\n};\nvar faCircleO = {\n prefix: 'fas',\n iconName: 'circle-o',\n icon: [512, 512, [], \"e119\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176 256a80 80 0 1 0 160 0 80 80 0 1 0 -160 0zm80 128a128 128 0 1 1 0-256 128 128 0 1 1 0 256z\"]\n};\nvar faGridHorizontal = {\n prefix: 'fas',\n iconName: 'grid-horizontal',\n icon: [448, 512, [], \"e307\", \"M128 168c0-22.1-17.9-40-40-40H40c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V168zm0 160c0-22.1-17.9-40-40-40H40c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V328zm32-160v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V168c0-22.1-17.9-40-40-40H200c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40H200c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328zm32-160v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V168c0-22.1-17.9-40-40-40H360c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40H360c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328z\"]\n};\nvar faMessageDollar = {\n prefix: 'fas',\n iconName: 'message-dollar',\n icon: [512, 512, [\"comment-alt-dollar\"], \"f650\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm276 40c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V312c0 11 9 20 20 20s20-9 20-20V298.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V104z\"]\n};\nvar faCommentAltDollar = faMessageDollar;\nvar faRightLeft = {\n prefix: 'fas',\n iconName: 'right-left',\n icon: [512, 512, [\"exchange-alt\"], \"f362\", \"M32 96l320 0V32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H160v64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64H480z\"]\n};\nvar faExchangeAlt = faRightLeft;\nvar faColumns3 = {\n prefix: 'fas',\n iconName: 'columns-3',\n icon: [640, 512, [], \"e361\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM192 96V416H64V96H192zm64 0H384V416H256V96zm320 0V416H448V96H576z\"]\n};\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z\"]\n};\nvar faRoadCircleExclamation = {\n prefix: 'fas',\n iconName: 'road-circle-exclamation',\n icon: [640, 512, [], \"e565\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M336.6 156.5c1.3 1.1 2.7 2.2 3.9 3.3c9.3 8.2 23 10.5 33.4 3.6l67.6-45.1c11.4-7.6 14.2-23.2 5.1-33.4C430 66.6 410.9 50.6 389.7 37.6c-11.9-7.3-26.9-1.4-32.1 11.6l-30.5 76.2c-4.5 11.1 .2 23.6 9.5 31.2zM328 36.8c5.1-12.8-1.6-27.4-15-30.5C294.7 2.2 275.6 0 256 0s-38.7 2.2-57 6.4C185.5 9.4 178.8 24 184 36.8l30.3 75.8c4.5 11.3 16.8 17.2 29 16c4.2-.4 8.4-.6 12.7-.6s8.6 .2 12.7 .6c12.1 1.2 24.4-4.7 29-16L328 36.8zM65.5 85c-9.1 10.2-6.3 25.8 5.1 33.4l67.6 45.1c10.3 6.9 24.1 4.6 33.4-3.6c1.3-1.1 2.6-2.3 4-3.3c9.3-7.5 13.9-20.1 9.5-31.2L154.4 49.2c-5.2-12.9-20.3-18.8-32.1-11.6C101.1 50.6 82 66.6 65.5 85zm314 137.1c.9 3.3 1.7 6.6 2.3 10c2.5 13 13 23.9 26.2 23.9h80c13.3 0 24.1-10.8 22.9-24c-2.5-27.2-9.3-53.2-19.7-77.3c-5.5-12.9-21.4-16.6-33.1-8.9l-68.6 45.7c-9.8 6.5-13.2 19.2-10 30.5zM53.9 145.8c-11.6-7.8-27.6-4-33.1 8.9C10.4 178.8 3.6 204.8 1.1 232c-1.2 13.2 9.6 24 22.9 24h80c13.3 0 23.8-10.8 26.2-23.9c.6-3.4 1.4-6.7 2.3-10c3.1-11.4-.2-24-10-30.5L53.9 145.8zM104 288H24c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24zm304 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24H408zM24 416c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H24zm384 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H408zM272 192c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V192zm-64 32c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224zm128 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224z\"]\n};\nvar faHandHoldingBox = {\n prefix: 'fas',\n iconName: 'hand-holding-box',\n icon: [576, 512, [], \"f47b\", \"M224 121.7c0 3.5 2.8 6.3 6.3 6.3c1.1 0 2.2-.3 3.1-.8l46.6-26.6c4.9-2.8 11-2.8 15.9 0l46.6 26.6c1 .5 2 .8 3.1 .8c3.5 0 6.3-2.8 6.3-6.3V0h80c26.5 0 48 21.5 48 48V208c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48h80V121.7zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faInputText = {\n prefix: 'fas',\n iconName: 'input-text',\n icon: [640, 512, [], \"e1bf\", \"M64 128V384H576V128H64zM0 128C0 92.7 28.7 64 64 64H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zm184 32c9.5 0 18.1 5.6 21.9 14.3l64 144c5.4 12.1-.1 26.3-12.2 31.7s-26.3-.1-31.7-12.2l-4.3-9.7H146.3l-4.3 9.7c-5.4 12.1-19.6 17.6-31.7 12.2s-17.6-19.6-12.2-31.7l64-144c3.9-8.7 12.4-14.3 21.9-14.3zm0 83.1L167.6 280h32.8L184 243.1zM304 184c0-13.3 10.7-24 24-24h52c33.1 0 60 26.9 60 60c0 9.2-2.1 17.9-5.8 25.7c13.3 11 21.8 27.6 21.8 46.3c0 33.1-26.9 60-60 60H328c-13.3 0-24-10.7-24-24v-8V256 192v-8zm48 24v24h28c6.6 0 12-5.4 12-12s-5.4-12-12-12H352zm0 96h44c6.6 0 12-5.4 12-12s-5.4-12-12-12H380 352v24z\"]\n};\nvar faWindowFlip = {\n prefix: 'fas',\n iconName: 'window-flip',\n icon: [512, 512, [\"window-alt\"], \"f40f\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm416 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 128a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm-64 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faWindowAlt = faWindowFlip;\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M448 64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faScannerGun = {\n prefix: 'fas',\n iconName: 'scanner-gun',\n icon: [576, 512, [\"scanner\"], \"f488\", \"M112 32C50.1 32 0 82.1 0 144c0 50.7 33.8 93.6 80 107.4L8.1 374.7c-13.3 22.8-5.7 52.2 17.1 65.6l53.4 31.4c22.8 13.4 52.3 5.8 65.7-17L261.2 256H304c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H112zm328 0c-13.3 0-24 10.7-24 24V72c0 13.3 10.7 24 24 24H552c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H440zM416 216v16c0 13.3 10.7 24 24 24H552c13.3 0 24-10.7 24-24V216c0-13.3-10.7-24-24-24H440c-13.3 0-24 10.7-24 24zm24 200c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24H552c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H440zM416 144c0 8.8 7.2 16 16 16H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H432c-8.8 0-16 7.2-16 16zm16 144c-8.8 0-16 7.2-16 16s7.2 16 16 16H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H432zm-16 80c0 8.8 7.2 16 16 16H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H432c-8.8 0-16 7.2-16 16z\"]\n};\nvar faScanner = faScannerGun;\nvar faTire = {\n prefix: 'fas',\n iconName: 'tire',\n icon: [512, 512, [], \"f631\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm32-256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-16.1 62l0 65c44.3-5.5 81.5-33.6 99.8-72.4l-61.9-20.1c-8.6 13.5-22.1 23.5-38 27.6zm47.9-58l61.8 20.1c1.5-7.8 2.3-15.9 2.3-24.2c0-36.8-15.5-69.9-40.3-93.3l-38.2 52.6c9.1 11 14.5 25.2 14.5 40.6c0 1.4 0 2.7-.1 4zm-40.2-63.5l38.2-52.6C299.5 133.8 278.4 128 256 128s-43.5 5.8-61.8 15.9l28.1 38.8 10 13.8c7.3-2.9 15.3-4.5 23.6-4.5s16.3 1.6 23.6 4.5zM168.3 162.7C143.5 186.1 128 219.2 128 256c0 8.3 .8 16.3 2.3 24.2L192.1 260c-.1-1.3-.1-2.7-.1-4c0-15.4 5.5-29.6 14.5-40.6l-10.1-13.9-28.1-38.7zm33.7 127.7l-61.9 20.1c18.3 38.8 55.5 66.9 99.8 72.4l0-65c-15.8-4.1-29.3-14.1-37.9-27.5zM256 96a160 160 0 1 1 0 320 160 160 0 1 1 0-320z\"]\n};\nvar faEngine = {\n prefix: 'fas',\n iconName: 'engine',\n icon: [640, 512, [], \"e16e\", \"M400 112c13.3 0 24-10.7 24-24s-10.7-24-24-24H208c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0v32H208 160 128c-17.7 0-32 14.3-32 32v56H48V160c0-13.3-10.7-24-24-24s-24 10.7-24 24V352c0 13.3 10.7 24 24 24s24-10.7 24-24V280H96v72c0 17.7 14.3 32 32 32h44.8l32 40c12.1 15.2 30.5 24 50 24H448c35.3 0 64-28.7 64-64V238.8c0-19.4-8.8-37.8-24-50L449.5 158c-11.3-9.1-25.4-14-40-14H328V112l72 0zM288 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192-32c-17.7 0-32 14.3-32 32V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H576z\"]\n};\nvar faMoneyBill1Wave = {\n prefix: 'fas',\n iconName: 'money-bill-1-wave',\n icon: [576, 512, [\"money-bill-wave-alt\"], \"f53b\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM128 416H64V352c35.3 0 64 28.7 64 64zM64 224V160h64c0 35.3-28.7 64-64 64zM448 352c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM384 256c0 61.9-43 112-96 112s-96-50.1-96-112s43-112 96-112s96 50.1 96 112zM252 208c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillWaveAlt = faMoneyBill1Wave;\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3s-20.2-113.9-54-157.3c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256s20.2 113.9 54 157.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [576, 512, [\"sign-language\", \"signing\"], \"f2a7\", \"M544 160l-.1 72.6c-.1 52.2-24 101-64 133.1c.1-1.9 .1-3.8 .1-5.7v-8c0-71.8-37-138.6-97.9-176.7l-60.2-37.6c-8.6-5.4-17.9-8.4-27.3-9.4L248.7 48.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8l78 135.1c3.3 5.7 10.7 7.7 16.4 4.4s7.7-10.7 4.4-16.4l-62-107.4c-6.6-11.5-2.7-26.2 8.8-32.8S362 5 368.6 16.5l68 117.8 0 0 0 0 43.3 75L480 160c0-17.7 14.4-32 32-32s32 14.4 32 32zM243.9 88.5L268.5 131c-13.9 4.5-26.4 13.7-34.7 27c-.9 1.4-1.7 2.9-2.5 4.4l-28.9-50c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zm-46.4 63.7l26.8 46.4c.6 6 2.1 11.8 4.3 17.4H224 210.7l0 0H179l-23-39.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zM260.9 175c9.4-15 29.1-19.5 44.1-10.2l60.2 37.6C416.7 234.7 448 291.2 448 352v8c0 83.9-68.1 152-152 152H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h92c6.6 0 12-5.4 12-12s-5.4-12-12-12H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H212c6.6 0 12-5.4 12-12s-5.4-12-12-12H56c-13.3 0-24-10.7-24-24s10.7-24 24-24H212c6.6 0 12-5.4 12-12s-5.4-12-12-12H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H224l0 0 0 0h93.2L271 219.1c-15-9.4-19.5-29.1-10.2-44.1z\"]\n};\nvar faSignLanguage = faHands;\nvar faSigning = faHands;\nvar faCircleCaretRight = {\n prefix: 'fas',\n iconName: 'circle-caret-right',\n icon: [512, 512, [\"caret-circle-right\"], \"f330\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm368 0c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nvar faCaretCircleRight = faCircleCaretRight;\nvar faWheat = {\n prefix: 'fas',\n iconName: 'wheat',\n icon: [512, 512, [], \"f72d\", \"M472 0c-48.6 0-88 39.4-88 88v24c0 8.8 7.2 16 16 16h24c48.6 0 88-39.4 88-88V16c0-8.8-7.2-16-16-16H472zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-34.1-34.1-82.6-44.9-125.9-32.5c12.4-43.3 1.5-91.8-32.5-125.9L305.5 27.3z\"]\n};\nvar faFileSpreadsheet = {\n prefix: 'fas',\n iconName: 'file-spreadsheet',\n icon: [384, 512, [], \"f65b\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM88 224H296c17.7 0 32 14.3 32 32v16 80 64c0 17.7-14.3 32-32 32H232 152 88c-17.7 0-32-14.3-32-32V352 272 256c0-17.7 14.3-32 32-32zm0 112h48V288H88v48zm80 0h48V288H168v48zm80 0h48V288H248v48zm0 32v48h48V368H248zm-32 0H168v48h48V368zm-80 0H88v48h48V368z\"]\n};\nvar faAudioDescriptionSlash = {\n prefix: 'fas',\n iconName: 'audio-description-slash',\n icon: [640, 512, [], \"e0a8\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-30-23.5c4.6-8.8 7.2-18.9 7.2-29.6V96c0-35.3-28.7-64-64-64H96c-6.7 0-13.1 1-19.2 2.9L38.8 5.1zM336 238V184c0-13.3 10.7-24 24-24h56c53 0 96 43 96 96c0 35.3-19 66.1-47.4 82.8l-44.6-35c24.7-2 44.1-22.7 44.1-47.8c0-26.5-21.5-48-48-48H384v67.7L336 238zM487.4 480L314.3 343.6c-2 2.4-4.6 4.4-7.5 5.9c-11.9 5.9-26.3 1.1-32.2-10.7l-9.4-18.9H182.9l-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l42.5-85L32 121.2V416c0 35.3 28.7 64 64 64H487.4zm-254-200.2l-21.8-17.2-8.6 17.2h30.4z\"]\n};\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faWaterLadder = {\n prefix: 'fas',\n iconName: 'water-ladder',\n icon: [576, 512, [\"ladder-water\", \"swimming-pool\"], \"f5c5\", \"M128 127.7C128 74.9 170.9 32 223.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V224H384V127.7C384 74.9 426.9 32 479.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V361c-1.6 1-3.3 2-4.8 3.1c-18 12.4-40.1 20.3-59.2 20.3h0V288H192v96.5c-19 0-41.2-7.9-59.1-20.3c-1.6-1.1-3.2-2.2-4.9-3.1V127.7zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faLadderWater = faWaterLadder;\nvar faSwimmingPool = faWaterLadder;\nvar faArrowsUpDown = {\n prefix: 'fas',\n iconName: 'arrows-up-down',\n icon: [320, 512, [\"arrows-v\"], \"f07d\", \"M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nvar faArrowsV = faArrowsUpDown;\nvar faChessPawnPiece = {\n prefix: 'fas',\n iconName: 'chess-pawn-piece',\n icon: [256, 512, [\"chess-pawn-alt\"], \"f444\", \"M176 240c19.4-14.6 32-37.8 32-64c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 26.2 12.6 49.4 32 64H72c-13.3 0-24 10.7-24 24s10.7 24 24 24h5.7L64 384H192l-13.7-96H184c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8zM4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24H232c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L208 416H48L4.8 473.6z\"]\n};\nvar faChessPawnAlt = faChessPawnPiece;\nvar faFaceGrimace = {\n prefix: 'fas',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm96-112h-8V360l55.3 0c-3.8 22.7-23.6 40-47.3 40zm47.3-56L344 344V304h8c23.8 0 43.5 17.3 47.3 40zM328 344H264V304h64v40zm0 56H264V360h64v40zm-80-96v40l-64 0V304h64zm0 56v40H184V360l64 0zm-80-16H112.7c3.8-22.7 23.6-40 47.3-40h8v40zm0 56h-8c-23.8 0-43.5-17.3-47.3-40H168v40zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrimace = faFaceGrimace;\nvar faWheelchairMove = {\n prefix: 'fas',\n iconName: 'wheelchair-move',\n icon: [448, 512, [\"wheelchair-alt\"], \"e2ce\", \"M320 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM204.5 121.3c-5.4-2.5-11.7-1.9-16.4 1.7l-40.9 30.7c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l40.9-30.7c23.7-17.8 55.3-21 82.1-8.4l90.4 42.5c29.1 13.7 36.8 51.6 15.2 75.5L299.1 224h97.4c30.3 0 53 27.7 47.1 57.4L415.4 422.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L377 288H306.7c8.6 19.6 13.3 41.2 13.3 64c0 88.4-71.6 160-160 160S0 440.4 0 352s71.6-160 160-160c11.1 0 22 1.1 32.4 3.3l54.2-54.2-42.1-19.8zM160 448a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faWheelchairAlt = faWheelchairMove;\nvar faTurnDown = {\n prefix: 'fas',\n iconName: 'turn-down',\n icon: [384, 512, [10549, \"level-down-alt\"], \"f3be\", \"M350 334.5c3.8 8.8 2 19-4.6 26l-136 144c-4.5 4.8-10.8 7.5-17.4 7.5s-12.9-2.7-17.4-7.5l-136-144c-6.6-7-8.4-17.2-4.6-26s12.5-14.5 22-14.5h88l0-192c0-17.7-14.3-32-32-32H32C14.3 96 0 81.7 0 64V32C0 14.3 14.3 0 32 0l80 0c70.7 0 128 57.3 128 128l0 192h88c9.6 0 18.2 5.7 22 14.5z\"]\n};\nvar faLevelDownAlt = faTurnDown;\nvar faSquareS = {\n prefix: 'fas',\n iconName: 'square-s',\n icon: [448, 512, [], \"e27d\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM175.6 196.2c-1.1 6.4-.2 9.7 .6 11.6c1 2 2.9 4.6 7.4 7.7c10.1 6.8 25.7 11.5 46.8 17.4l2 .6 0 0c18.4 5.2 41.4 11.7 58.6 23.2c9.5 6.4 18.5 15.1 24.1 27.2c5.7 12.3 7 25.9 4.4 40.3c-4.7 26.3-23.1 43.3-45 52c-21.3 8.4-47 9.6-72.6 5.7l-.1 0 0 0c-16.3-2.6-43.7-10.7-57.3-15.1c-12.6-4-19.6-17.6-15.5-30.2s17.6-19.6 30.2-15.5c13.9 4.5 37.8 11.4 50 13.4c20.2 3 36.8 1.4 47.7-2.9c10.3-4.1 14.2-9.6 15.4-15.8c1.1-6.4 .2-9.7-.6-11.6c-1-2-2.9-4.6-7.4-7.7c-10.1-6.8-25.7-11.5-46.8-17.4l-2-.6c-18.4-5.2-41.4-11.7-58.6-23.2c-9.5-6.4-18.5-15.1-24.1-27.2c-5.7-12.3-7-25.9-4.4-40.3c4.7-26.3 23.1-43.3 45-52c21.3-8.4 47-9.6 72.6-5.7c8.1 1.2 24.4 4.8 32 6.7c12.8 3.3 20.6 16.4 17.3 29.2s-16.4 20.6-29.2 17.3c-6.7-1.7-21.3-4.9-27.3-5.7c-20.3-3.1-36.8-1.4-47.8 2.9c-10.3 4.1-14.2 9.6-15.4 15.8z\"]\n};\nvar faRectangleBarcode = {\n prefix: 'fas',\n iconName: 'rectangle-barcode',\n icon: [576, 512, [\"barcode-alt\"], \"f463\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm56 96c13.3 0 24 10.7 24 24V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zm56 16c0-8.8 7.2-16 16-16s16 7.2 16 16V368c0 8.8-7.2 16-16 16s-16-7.2-16-16V144zm88-16c13.3 0 24 10.7 24 24V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zm88 24c0-13.3 10.7-24 24-24s24 10.7 24 24V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V152zm112-24c8.8 0 16 7.2 16 16V368c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-8.8 7.2-16 16-16z\"]\n};\nvar faBarcodeAlt = faRectangleBarcode;\nvar faPersonWalkingArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-right',\n icon: [640, 512, [], \"e552\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z\"]\n};\nvar faSquareEnvelope = {\n prefix: 'fas',\n iconName: 'square-envelope',\n icon: [448, 512, [\"envelope-square\"], \"f199\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM218 271.7L64.2 172.4C66 156.4 79.5 144 96 144H352c16.5 0 30 12.4 31.8 28.4L230 271.7c-1.8 1.2-3.9 1.8-6 1.8s-4.2-.6-6-1.8zm29.4 26.9L384 210.4V336c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V210.4l136.6 88.2c7 4.5 15.1 6.9 23.4 6.9s16.4-2.4 23.4-6.9z\"]\n};\nvar faEnvelopeSquare = faSquareEnvelope;\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [127922], \"f522\", \"M274.9 34.3c-28.1-28.1-73.7-28.1-101.8 0L34.3 173.1c-28.1 28.1-28.1 73.7 0 101.8L173.1 413.7c28.1 28.1 73.7 28.1 101.8 0L413.7 274.9c28.1-28.1 28.1-73.7 0-101.8L274.9 34.3zM200 224a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM96 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 376a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM352 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 120a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm96 328c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H461.7c11.6 36 3.1 77-25.4 105.5L320 413.8V448zM480 328a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faUnicorn = {\n prefix: 'fas',\n iconName: 'unicorn',\n icon: [640, 512, [129412], \"f727\", \"M448 160v78.1V240h0c-.5 30-12.8 56.4-32 75.7V480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V346.7c-4.1-.7-8.2-1.6-12.3-2.8l-84-24c.2 2.3 .3 4.6 .3 6.9c0 18.6-7.4 36.5-20.6 49.7l-12.7 12.7c-4.8 4.8-6.4 11.8-4.3 18.2l20.8 62.5c6.9 20.7-8.5 42.1-30.4 42.1H143.1c-13.8 0-26-8.8-30.4-21.9L95.3 437.7c-10.6-31.7-6.5-65.9 10-93.9c7.6-12.9 9.5-29.1 1.2-41.6L78.2 259.9c-7.3-11-11.9-23.4-13.6-36.4C54.6 230.8 48 242.6 48 256v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V256c0-44.6 33.2-81.5 76.3-87.2c14.9-24.4 41.8-40.8 72.5-40.8h54.4H224h96C320 57.3 377.3 0 448 0h16 16 64c8.8 0 16 7.2 16 16s-7.2 16-16 16h-5.7c5.2 4.6 9.6 10 13.1 16h79.3c5.1 0 9.3 4.2 9.3 9.3c0 4-2.6 7.6-6.4 8.8L560 90.7v64.8c0 22.1-13.4 41.9-33.9 50.1c-26.1 10.4-55.7-.9-68.3-26L448 160zm64-80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [512, 512, [], \"f436\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM240 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM208 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-64-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faPompebled = {\n prefix: 'fas',\n iconName: 'pompebled',\n icon: [512, 512, [], \"e43d\", \"M460.3 172c-46.2-33.2-117-14.1-165.1 44.3c-5.9 8.6-17.2 10.6-25.6 4.5s-10.3-17.6-4.4-26.2c36.9-66.9 29-141.3-17.7-173.5C188.6-20.6 103.1 1.5 56.9 70.4c-85.5 126.3-77.6 313.4 44.2 400.4c121.4 87 296.3 27.7 381.8-98.6c46.2-68.4 36.4-158.5-22.6-200.2z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [512, 512, [129504], \"f5dc\", \"M184 0c30.9 0 56 25.1 56 56V456c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56V56c0-30.9 25.1-56 56-56z\"]\n};\nvar faWatchSmart = {\n prefix: 'fas',\n iconName: 'watch-smart',\n icon: [384, 512, [], \"e2cc\", \"M64 48H320c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48zM80 80C35.8 80 0 115.8 0 160V352c0 44.2 35.8 80 80 80H304c44.2 0 80-35.8 80-80V160c0-44.2-35.8-80-80-80H80zm136 80v86.1l41 41c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-4.5-4.5-7-10.6-7-17V160c0-13.3 10.7-24 24-24s24 10.7 24 24zM112 512H272c26.5 0 48-21.5 48-48H64c0 26.5 21.5 48 48 48z\"]\n};\nvar faBookUser = {\n prefix: 'fas',\n iconName: 'book-user',\n icon: [448, 512, [], \"f7e7\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM304 128a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM128 304c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H208c-44.2 0-80 35.8-80 80z\"]\n};\nvar faSensorCloud = {\n prefix: 'fas',\n iconName: 'sensor-cloud',\n icon: [640, 512, [\"sensor-smoke\"], \"e02c\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H234.8c-6.9-14.5-10.8-30.8-10.8-48c0-44.7 26.2-83.3 64.1-101.3C290.9 271.3 339.9 224 400 224c17.2 0 33.5 3.9 48 10.8V96c0-35.3-28.7-64-64-64H64zm48 88V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V120c0-13.3 10.7-24 24-24s24 10.7 24 24zm96 0V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V120c0-13.3 10.7-24 24-24s24 10.7 24 24zM336 512H560c44.2 0 80-35.8 80-80c0-39-27.9-71.5-64.8-78.6c.5-3.1 .8-6.2 .8-9.4c0-30.9-25.1-56-56-56c-18.1 0-34.1 8.6-44.4 21.8C464.8 278.5 435 256 400 256c-44.2 0-80 35.8-80 80c0 5.9 .6 11.7 1.9 17.2C284.4 359.9 256 392.6 256 432c0 44.2 35.8 80 80 80z\"]\n};\nvar faSensorSmoke = faSensorCloud;\nvar faClapperboardPlay = {\n prefix: 'fas',\n iconName: 'clapperboard-play',\n icon: [512, 512, [], \"e132\", \"M453.8 32.3L327 159l-1 1H233.9L361 33l1-1H448c2 0 3.9 .1 5.8 .3zM393.9 160L498 56c8.8 11 14 24.9 14 40v64H393.9zM201.9 32h92.1L167 159l-1 1H73.9L201 33l1-1zm-67.9 0L7 159l-1 1H0V96C0 60.7 28.7 32 64 32h70.1zM0 192H512V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm216.5 65.9c-5.2 2.8-8.5 8.2-8.5 14.1V400c0 5.9 3.2 11.3 8.5 14.1s11.5 2.5 16.4-.8l96-64c4.4-3 7.1-8 7.1-13.3s-2.7-10.3-7.1-13.3l-96-64c-4.9-3.3-11.2-3.6-16.4-.8z\"]\n};\nvar faBandage = {\n prefix: 'fas',\n iconName: 'bandage',\n icon: [640, 512, [129657, \"band-aid\"], \"f462\", \"M480 416h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H480V416zM448 96H192V416H448V96zM64 96C28.7 96 0 124.7 0 160V352c0 35.3 28.7 64 64 64h96V96H64zM248 208a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM248 304a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBandAid = faBandage;\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [512, 512, [], \"f272\", \"M160 0c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H32V112c0-26.5 21.5-48 48-48h48V32c0-17.7 14.3-32 32-32zM32 192H480V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V192zM344 376c13.3 0 24-10.7 24-24s-10.7-24-24-24H168c-13.3 0-24 10.7-24 24s10.7 24 24 24H344z\"]\n};\nvar faCircleXmark = {\n prefix: 'fas',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesCircle = faCircleXmark;\nvar faXmarkCircle = faCircleXmark;\nvar faCircle4 = {\n prefix: 'fas',\n iconName: 'circle-4',\n icon: [512, 512, [], \"e0f1\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM223.6 129.2c-12.6-4.2-26.2 2.6-30.4 15.2l-48 144c-2.4 7.3-1.2 15.4 3.3 21.6s11.8 10 19.5 10H272v40c0 13.3 10.7 24 24 24s24-10.7 24-24V320h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v56H201.3l37.5-112.4c4.2-12.6-2.6-26.2-15.2-30.4z\"]\n};\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M200.6 32C205 19.5 198.5 5.8 186 1.4S159.8 3.5 155.4 16L144.7 46.2l-9.9-29.8C130.6 3.8 117-3 104.4 1.2S85 19 89.2 31.6l8.3 25-27.4-20c-10.7-7.8-25.7-5.4-33.5 5.3s-5.4 25.7 5.3 33.5L70.2 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H200.6c-5.4-9.4-8.6-20.3-8.6-32V256c0-29.9 20.5-55 48.2-62c1.8-31 17.1-58.2 40.1-76.1C271.7 104.7 256.9 96 240 96H217.8l28.3-20.6c10.7-7.8 13.1-22.8 5.3-33.5s-22.8-13.1-33.5-5.3L192.5 55.1 200.6 32zM363.5 185.5L393.1 224H344c-13.3 0-24-10.7-24-24c0-13.1 10.8-24 24.2-24c7.6 0 14.7 3.5 19.3 9.5zM272 200c0 8.4 1.4 16.5 4.1 24H272c-26.5 0-48 21.5-48 48v80H416V256h32v96H640V272c0-26.5-21.5-48-48-48h-4.1c2.7-7.5 4.1-15.6 4.1-24c0-39.9-32.5-72-72.2-72c-22.4 0-43.6 10.4-57.3 28.2L432 195.8l-30.5-39.6c-13.7-17.8-35-28.2-57.3-28.2c-39.7 0-72.2 32.1-72.2 72zM224 464c0 26.5 21.5 48 48 48H416V384H224v80zm224 48H592c26.5 0 48-21.5 48-48V384H448V512zm96-312c0 13.3-10.7 24-24 24H470.9l29.6-38.5c4.6-5.9 11.7-9.5 19.3-9.5c13.4 0 24.2 10.9 24.2 24z\"]\n};\nvar faAlbumCollection = {\n prefix: 'fas',\n iconName: 'album-collection',\n icon: [512, 512, [], \"f8a0\", \"M32 24c0 13.3 10.7 24 24 24H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H56C42.7 0 32 10.7 32 24zM48 160c-13.8 0-26.9 5.9-36 16.2S-1.3 200.3 .4 214l32 256c3 24 23.4 42 47.6 42H432c24.2 0 44.6-18 47.6-42l32-256c1.7-13.7-2.5-27.4-11.6-37.7s-22.2-16.2-36-16.2H48zM440 344c0 75.1-82.4 136-184 136S72 419.1 72 344s82.4-136 184-136s184 60.9 184 136zM256 376c17.7 0 32-10.7 32-24s-14.3-24-32-24s-32 10.7-32 24s14.3 24 32 24zM40 80c-13.3 0-24 10.7-24 24s10.7 24 24 24H472c13.3 0 24-10.7 24-24s-10.7-24-24-24H40z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [512, 512, [127976], \"f594\", \"M0 32C0 14.3 14.3 0 32 0H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64C14.3 64 0 49.7 0 32zm96 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zM240 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H240zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zM112 192c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H112zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H368zM328 384c13.3 0 24.3-10.9 21-23.8c-10.6-41.5-48.2-72.2-93-72.2s-82.5 30.7-93 72.2c-3.3 12.8 7.8 23.8 21 23.8H328z\"]\n};\nvar faEarthAsia = {\n prefix: 'fas',\n iconName: 'earth-asia',\n icon: [512, 512, [127759, \"globe-asia\"], \"f57e\", \"M51.7 295.1l31.7 6.3c7.9 1.6 16-.9 21.7-6.6l15.4-15.4c11.6-11.6 31.1-8.4 38.4 6.2l9.3 18.5c4.8 9.6 14.6 15.7 25.4 15.7c15.2 0 26.1-14.6 21.7-29.2l-6-19.9c-4.6-15.4 6.9-30.9 23-30.9h2.3c13.4 0 25.9-6.7 33.3-17.8l10.7-16.1c5.6-8.5 5.3-19.6-.8-27.7l-16.1-21.5c-10.3-13.7-3.3-33.5 13.4-37.7l17-4.3c7.5-1.9 13.6-7.2 16.5-14.4l16.4-40.9C303.4 52.1 280.2 48 256 48C141.1 48 48 141.1 48 256c0 13.4 1.3 26.5 3.7 39.1zm407.7 4.6c-3-.3-6-.1-9 .8l-15.8 4.4c-6.7 1.9-13.8-.9-17.5-6.7l-2-3.1c-6-9.4-16.4-15.1-27.6-15.1s-21.6 5.7-27.6 15.1l-6.1 9.5c-1.4 2.2-3.4 4.1-5.7 5.3L312 330.1c-18.1 10.1-25.5 32.4-17 51.3l5.5 12.4c8.6 19.2 30.7 28.5 50.5 21.1l2.6-1c10-3.7 21.3-2.2 29.9 4.1l1.5 1.1c37.2-29.5 64.1-71.4 74.4-119.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm144.5 92.1c-2.1 8.6 3.1 17.3 11.6 19.4l32 8c8.6 2.1 17.3-3.1 19.4-11.6s-3.1-17.3-11.6-19.4l-32-8c-8.6-2.1-17.3 3.1-19.4 11.6zm92-20c-2.1 8.6 3.1 17.3 11.6 19.4s17.3-3.1 19.4-11.6l8-32c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-8 32zM343.2 113.7c-7.9-4-17.5-.7-21.5 7.2l-16 32c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l16-32c4-7.9 .7-17.5-7.2-21.5z\"]\n};\nvar faGlobeAsia = faEarthAsia;\nvar faIdCardClip = {\n prefix: 'fas',\n iconName: 'id-card-clip',\n icon: [576, 512, [\"id-card-alt\"], \"f47f\", \"M256 0h64c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM64 64H192v48c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64zM176 437.3c0 5.9 4.8 10.7 10.7 10.7H389.3c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3H229.3c-29.5 0-53.3 23.9-53.3 53.3zM288 352a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faIdCardAlt = faIdCardClip;\nvar faMagnifyingGlassPlus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-plus',\n icon: [512, 512, [\"search-plus\"], \"f00e\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faSearchPlus = faMagnifyingGlassPlus;\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z\"]\n};\nvar faCloudShowers = {\n prefix: 'fas',\n iconName: 'cloud-showers',\n icon: [512, 512, [], \"f73f\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zm16 32c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24zm192 0c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24zm-72 56v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V408c0-13.3 10.7-24 24-24s24 10.7 24 24zm168-24c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V408c0-13.3 10.7-24 24-24z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c20.6 0 40.4 3.5 58.8 9.9C323 331 320 349.1 320 368c0 59.5 29.5 112.1 74.8 144H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-80c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H512V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faOnion = {\n prefix: 'fas',\n iconName: 'onion',\n icon: [448, 512, [129477], \"e427\", \"M216.8 17.7l-3.4-6.8C210.1 4.2 203.3 0 195.8 0c-10.9 0-19.6 9-21.3 19.8C167 67.8 132 96.2 95.3 126C49 163.7 0 203.5 0 288c0 80.4 58 135.2 131.9 160.3l-10.7 32.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2L178.6 460c7.1 1.2 14.2 2.1 21.4 2.7V488c0 13.3 10.7 24 24 24s24-10.7 24-24V462.7c7.2-.7 14.3-1.6 21.4-2.7l11.9 35.6c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-10.7-32.1C390 423.2 448 368.4 448 288c0-84.5-49-124.3-95.3-162C316 96.2 281 67.8 273.5 19.8C271.8 9 263.1 0 252.2 0c-7.5 0-14.3 4.2-17.7 10.9l-3.4 6.8c-2.9 5.9-11.4 5.9-14.3 0zM97 186.2l.4-.9c.4-.8 .8-1.5 1.2-2.2c2.5-3.8 6.6-6.4 11.3-6.9c1.9-.2 3.8-.1 5.6 .3s3.6 1.2 5.2 2.2c3.9 2.6 6.4 6.8 7 11.2c.3 1.9 .2 3.9-.3 5.9c-.3 1.3-.8 2.5-1.3 3.6l-.3 .7c-.3 .6-.8 1.6-1.4 2.9c-1.2 2.6-2.9 6.4-4.9 11.2c-4 9.6-9 23-13.3 38.2c-8.8 31.3-13.5 67.1-3.4 94c3.1 8.3-1.1 17.5-9.4 20.6s-17.5-1.1-20.6-9.4c-13.9-37-6.6-81.3 2.6-114c4.7-16.7 10.2-31.4 14.5-41.8c2.2-5.2 4-9.4 5.4-12.3c.7-1.5 1.2-2.6 1.6-3.4zM209 122.5c.3-.9 .8-1.8 1.3-2.7c1.2-2.1 2.9-3.8 4.8-5c3.4-2.3 7.7-3.3 11.9-2.5c1.9 .4 3.7 1 5.2 2c2 1.2 3.7 2.9 5 4.8s2.2 4.1 2.6 6.4c.3 1.8 .3 3.7-.1 5.5c-.2 1.1-.5 2.2-1 3.3l0 .1-.5 1.3c-.4 1.1-1.1 2.8-1.9 5c-1.6 4.4-4 10.9-6.6 18.9c-5.4 16.2-12.2 38.7-18.1 64c-11.9 51.7-18.9 111.9-4.4 155.3c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1c-17.5-52.5-8.5-120.3 3.6-172.7c6.1-26.6 13.3-50.1 18.9-67c2.8-8.4 5.2-15.2 7-19.9c.9-2.4 1.6-4.2 2.1-5.4l.6-1.5 .1-.1zM288 160c0-8.8 7.2-16 16-16c.1 0 .2 0 .2 0c.1 0 .2 0 .4 0c5.8-.2 11.6 2.7 14.6 8.2l-1 .6 0 0c1-.5 1-.5 1-.5l0 0 0 0 0 .1 .2 .3 .6 1.1c.5 .9 1.2 2.2 2.1 3.9c1.8 3.4 4.2 8.3 7.1 14.3c5.7 12.1 13.1 29.2 19.8 48.9c13.1 38.7 24.5 90.6 11.7 135.5c-2.4 8.5-11.3 13.4-19.8 11s-13.4-11.3-11-19.8c10-35.1 1.4-79.2-11.2-116.5c-6.2-18.3-13.1-34.2-18.4-45.6c-2.7-5.7-4.9-10.2-6.5-13.2l-.1-.1c-3.5-2.9-5.7-7.3-5.7-12.2z\"]\n};\nvar faClockTwelveThirty = {\n prefix: 'fas',\n iconName: 'clock-twelve-thirty',\n icon: [512, 512, [], \"e359\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm24-360V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faArrowDownToDottedLine = {\n prefix: 'fas',\n iconName: 'arrow-down-to-dotted-line',\n icon: [448, 512, [], \"e095\", \"M374.6 214.6l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 242.7V176 64c0-17.7 14.3-32 32-32s32 14.3 32 32V176v66.7l73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM32 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96 0a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm128-32a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nvar faHandDots = {\n prefix: 'fas',\n iconName: 'hand-dots',\n icon: [512, 512, [\"allergies\"], \"f461\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32zM240 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80 16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48-16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-16 80a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM240 432a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-48-48a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faAllergies = faHandDots;\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 96H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm0 32v64H288V256H96zM240 416h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faRectangleWide = {\n prefix: 'fas',\n iconName: 'rectangle-wide',\n icon: [640, 512, [], \"f2fc\", \"M0 128C0 92.7 28.7 64 64 64H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nvar faCommentArrowUp = {\n prefix: 'fas',\n iconName: 'comment-arrow-up',\n icon: [512, 512, [], \"e144\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm24-120c0 13.3-10.7 24-24 24s-24-10.7-24-24V209.9l-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31V328z\"]\n};\nvar faGarlic = {\n prefix: 'fas',\n iconName: 'garlic',\n icon: [512, 512, [129476], \"e40e\", \"M83.4 169.1C42.3 200.5 0 232.7 0 288C0 392.6 85.5 411.7 116.7 415.2C85 390.5 64 352.6 64 304c0-27.8 4.3-48.7 11-66.5c5.9-15.6 13.6-28.6 20.7-40.5c.8-1.4 1.7-2.8 2.5-4.2c7.8-13.2 15.1-26.2 20.5-43.3c1.2-3.7 2.3-7.7 3.3-11.9c-11.7 10.9-25.1 21.1-38.7 31.5zM384 416s128 0 128-128c0-55.3-42.3-87.5-83.4-118.9C389.8 139.5 352 110.6 352 64V48c0-26.5-21.5-48-48-48H288V80c0 30.2 4.7 51.9 11.4 69c6.7 17.1 15.7 30.3 25.5 43.8c1.2 1.6 2.4 3.3 3.6 4.9l0 0 0 0c19 25.8 39.4 53.5 39.4 106.3c0 49.2-21.5 87.3-53.7 112H384zM256 80V0H208c-26.5 0-48 21.5-48 48V64 80c0 33.4-4.2 58.5-10.8 79.2c-6.6 20.7-15.3 36.2-23.5 49.9l-2.5 4.2c-7.2 12.1-13.5 22.6-18.3 35.5c-5.3 13.9-9 31-9 55.2c0 69.3 54.9 112 120 112s120-42.7 120-112c0-42.1-15-62.5-33.5-87.7l0 0 0-.1c-1.1-1.5-2.2-3.1-3.4-4.6c-10.2-13.9-21.2-29.8-29.5-50.9C261.3 139.5 256 113.8 256 80zM136 448v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448H136zm64 0v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448H200zm64 0v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448H264zm64 0v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448H328z\"]\n};\nvar faMugSaucer = {\n prefix: 'fas',\n iconName: 'mug-saucer',\n icon: [640, 512, [\"coffee\"], \"f0f4\", \"M96 64c0-17.7 14.3-32 32-32H448h64c70.7 0 128 57.3 128 128s-57.3 128-128 128H480c0 53-43 96-96 96H192c-53 0-96-43-96-96V64zM480 224h32c35.3 0 64-28.7 64-64s-28.7-64-64-64H480V224zM32 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCoffee = faMugSaucer;\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M162.4 6c-1.5-3.6-5-6-8.9-6h-19c-3.9 0-7.5 2.4-8.9 6L104.9 57.7c-3.2 8-14.6 8-17.8 0L66.4 6c-1.5-3.6-5-6-8.9-6H48C21.5 0 0 21.5 0 48V224v22.4V256H9.6 374.4 384v-9.6V224 48c0-26.5-21.5-48-48-48H230.5c-3.9 0-7.5 2.4-8.9 6L200.9 57.7c-3.2 8-14.6 8-17.8 0L162.4 6zM0 288v32c0 35.3 28.7 64 64 64h64v64c0 35.3 28.7 64 64 64s64-28.7 64-64V384h64c35.3 0 64-28.7 64-64V288H0zM192 432a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faTreeDecorated = {\n prefix: 'fas',\n iconName: 'tree-decorated',\n icon: [448, 512, [], \"f7dc\", \"M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208H104L28.5 313.7c-2.9 4.1-4.5 9-4.5 14.1C24 341.1 34.8 352 48.2 352H80L3.8 474c-2.5 4-3.8 8.5-3.8 13.2C0 500.9 11.1 512 24.9 512H423.1c13.7 0 24.9-11.1 24.9-24.9c0-4.7-1.3-9.2-3.8-13.2L368 352h31.8c13.4 0 24.2-10.9 24.2-24.2c0-5-1.6-10-4.5-14.1L344 208h24.9c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9zM160 264a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm72-104a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm56 232a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [576, 512, [], \"f6fa\", \"M288 64C64 64 0 160 0 272S80 448 176 448h8.4c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4H400c96 0 176-64 176-176s-64-208-288-208zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm320-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faCalendarHeart = {\n prefix: 'fas',\n iconName: 'calendar-heart',\n icon: [448, 512, [], \"e0d3\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM112 317.3c0 16.2 6.5 31.8 17.9 43.3l82.7 82.7c6.2 6.2 16.4 6.2 22.6 0l82.7-82.7c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3c-16.2 0-31.8 6.5-43.3 17.9l-7.4 7.4-7.4-7.4c-11.5-11.5-27.1-17.9-43.3-17.9c-33.8 0-61.3 27.4-61.3 61.3z\"]\n};\nvar faMagnifyingGlassMinus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-minus',\n icon: [512, 512, [\"search-minus\"], \"f010\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H136z\"]\n};\nvar faSearchMinus = faMagnifyingGlassMinus;\nvar faFlower = {\n prefix: 'fas',\n iconName: 'flower',\n icon: [448, 512, [127804, 10047], \"f7ff\", \"M128 480c38.2 0 72.5-16.8 96-43.3c23.5 26.6 57.8 43.3 96 43.3c70.7 0 128-57.3 128-128c0-38.2-16.8-72.5-43.3-96c26.6-23.5 43.3-57.8 43.3-96c0-70.7-57.3-128-128-128c-38.2 0-72.5 16.8-96 43.3C200.5 48.8 166.2 32 128 32C57.3 32 0 89.3 0 160c0 38.2 16.8 72.5 43.3 96C16.8 279.5 0 313.8 0 352c0 70.7 57.3 128 128 128zm96-304a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faRightLeftLarge = {\n prefix: 'fas',\n iconName: 'right-left-large',\n icon: [640, 512, [], \"e5e1\", \"M184.4 512c-19 0-37.2-7.5-50.6-21L15 372.3C5.4 362.7 0 349.6 0 336s5.4-26.7 15-36.3L133.8 181c13.4-13.4 31.6-21 50.6-21c37 0 67.4 28 71.2 64H320h96 16c8.8 0 16 7.2 16 16v16 24.4c0 4.2 3.4 7.6 7.6 7.6c2 0 3.9-.8 5.4-2.2L570.7 176 461 66.2c-1.4-1.4-3.4-2.2-5.4-2.2c-4.2 0-7.6 3.4-7.6 7.6V96v16c0 8.8-7.2 16-16 16H416 320c-17.7 0-32-14.3-32-32s14.3-32 32-32h64.4c3.8-36 34.2-64 71.2-64c19 0 37.2 7.5 50.6 21L625 139.7c9.6 9.6 15 22.7 15 36.3s-5.4 26.7-15 36.3L506.2 331c-13.4 13.4-31.6 21-50.6 21c-37 0-67.4-28-71.2-64H320 224 208c-8.8 0-16-7.2-16-16V256 231.6c0-4.2-3.4-7.6-7.6-7.6c-2 0-3.9 .8-5.4 2.2L69.3 336 179 445.8c1.4 1.4 3.4 2.2 5.4 2.2c4.2 0 7.6-3.4 7.6-7.6V416 400c0-8.8 7.2-16 16-16h16 96c17.7 0 32 14.3 32 32s-14.3 32-32 32H255.6c-3.8 36-34.2 64-71.2 64z\"]\n};\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M0 48C0 21.5 21.5 0 48 0H208c26.5 0 48 21.5 48 48V96H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"]\n};\nvar faCirclesOverlap = {\n prefix: 'fas',\n iconName: 'circles-overlap',\n icon: [640, 512, [], \"e600\", \"M192 288c0 34.2 7.7 66.6 21.4 95.7C130 378.2 64 308.8 64 224c0-88.4 71.6-160 160-160c32.2 0 62.2 9.5 87.3 25.9C240.4 127.5 192 202.1 192 288zm32 160c11.2 0 22.1-.8 32.8-2.4c40.6 41 96.9 66.4 159.2 66.4c123.7 0 224-100.3 224-224S539.7 64 416 64c-11.2 0-22.1 .8-32.8 2.4C342.6 25.4 286.3 0 224 0C100.3 0 0 100.3 0 224S100.3 448 224 448zm192 0c-32.2 0-62.2-9.5-87.3-25.9C399.6 384.5 448 309.9 448 224c0-34.2-7.7-66.6-21.4-95.7C510 133.8 576 203.2 576 288c0 88.4-71.6 160-160 160z\"]\n};\nvar faUserLarge = {\n prefix: 'fas',\n iconName: 'user-large',\n icon: [512, 512, [\"user-alt\"], \"f406\", \"M256 288A144 144 0 1 0 256 0a144 144 0 1 0 0 288zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7H481.3c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320H161.3z\"]\n};\nvar faUserAlt = faUserLarge;\nvar faStarshipFreighter = {\n prefix: 'fas',\n iconName: 'starship-freighter',\n icon: [576, 512, [], \"e03a\", \"M224 480C100.3 480 0 379.7 0 256S100.3 32 224 32c42.3 0 84.2 7.9 123.6 23.2l207.9 80.9c12.3 4.8 20.4 16.6 20.4 29.8V208c0 8.8-7.2 16-16 16H445.7 432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h13.7H560c8.8 0 16 7.2 16 16v42.1c0 13.2-8.1 25-20.4 29.8l-82.1 31.9c4.1 7.1 6.5 15.3 6.5 24.1c0 26.5-21.5 48-48 48H352c-11.5 0-21.6-6.1-27.3-15.2C292.2 474.9 258.2 480 224 480zm0-272a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM80 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48-112a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM112 368a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faTrainTram = {\n prefix: 'fas',\n iconName: 'train-tram',\n icon: [448, 512, [128650], \"e5b4\", \"M86.8 48c-12.2 0-23.6 5.5-31.2 15L42.7 79C34.5 89.3 19.4 91 9 82.7S-3 59.4 5.3 49L18 33C34.7 12.2 60 0 86.8 0H361.2c26.7 0 52 12.2 68.7 33l12.8 16c8.3 10.4 6.6 25.5-3.8 33.7s-25.5 6.6-33.7-3.7L392.5 63c-7.6-9.5-19.1-15-31.2-15H248V96h40c53 0 96 43 96 96V352c0 30.6-14.3 57.8-36.6 75.4l65.5 65.5c7.1 7.1 2.1 19.1-7.9 19.1H365.3c-8.5 0-16.6-3.4-22.6-9.4L288 448H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H43c-10 0-15-12.1-7.9-19.1l65.5-65.5C78.3 409.8 64 382.6 64 352V192c0-53 43-96 96-96h40V48H86.8zM160 160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H160zm32 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBridgeSuspension = {\n prefix: 'fas',\n iconName: 'bridge-suspension',\n icon: [640, 512, [], \"e4cd\", \"M128 8c9.1 0 17 5 21.1 12.5C184.2 81.6 249.7 120 320 120s135.8-38.4 170.9-99.5C495 13 502.9 8 512 8c8.8 0 16.5 4.7 20.7 11.8c13.1 21.2 26.6 42.2 42 59.8c15.5 17.7 31.7 30.6 49.4 36.9c12.5 4.5 18.9 18.2 14.4 30.7s-18.2 18.9-30.7 14.4c-25.5-9.2-46.4-25.8-63.9-44.5V256h64c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32c-35.3 0-64 28.7-64 64v64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V448c0-53-43-96-96-96H288c-53 0-96 43-96 96v32c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V416c0-35.3-28.7-64-64-64c-17.7 0-32-14.3-32-32V288c0-17.7 14.3-32 32-32H96V117.1c-17.4 18.7-38.4 35.3-63.9 44.5c-12.5 4.5-26.2-2-30.7-14.4s2-26.2 14.4-30.7c17.7-6.4 33.9-19.3 49.4-36.9c15.4-17.6 29-38.6 42-59.8C111.5 12.7 119.2 8 128 8zM480 108.1c-12.4 10.7-25.8 20.1-40 28.2V256h40V108.1zm-88 49c-15.5 4.8-31.6 8.1-48 9.8V256h48V157zm-96 9.8c-16.4-1.6-32.5-4.9-48-9.8v99h48V166.8zm-96-30.5c-14.2-8-27.6-17.5-40-28.2V256h40V136.3z\"]\n};\nvar faTrashCheck = {\n prefix: 'fas',\n iconName: 'trash-check',\n icon: [448, 512, [], \"e2af\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zM337 249c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L337 249z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M96 128V70.2c0-13.3 8.3-25.3 20.8-30l96-36c7.2-2.7 15.2-2.7 22.5 0l96 36c12.5 4.7 20.8 16.6 20.8 30V128h-.3c.2 2.6 .3 5.3 .3 8v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V136c0-2.7 .1-5.4 .3-8H96zm48 48c0 44.2 35.8 80 80 80s80-35.8 80-80V160H144v16zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6zM208 48V64H192c-4.4 0-8 3.6-8 8V88c0 4.4 3.6 8 8 8h16v16c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V96h16c4.4 0 8-3.6 8-8V72c0-4.4-3.6-8-8-8H240V48c0-4.4-3.6-8-8-8H216c-4.4 0-8 3.6-8 8z\"]\n};\nvar faBoombox = {\n prefix: 'fas',\n iconName: 'boombox',\n icon: [640, 512, [128254], \"f8a5\", \"M120 48H520c22.1 0 40 17.9 40 40v72H448c0-17.7-14.3-32-32-32s-32 14.3-32 32H352c0-17.7-14.3-32-32-32s-32 14.3-32 32H256c0-17.7-14.3-32-32-32s-32 14.3-32 32H80V88c0-22.1 17.9-40 40-40zM608 168.6V88c0-48.6-39.4-88-88-88H120C71.4 0 32 39.4 32 88v80.6C12.9 179.6 0 200.3 0 224V448c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V224c0-23.7-12.9-44.4-32-55.4zM256 336A80 80 0 1 0 96 336a80 80 0 1 0 160 0zM64 336a112 112 0 1 1 224 0A112 112 0 1 1 64 336zm400 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-192a112 112 0 1 1 0 224 112 112 0 1 1 0-224z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [128137], \"f48e\", \"M441 7l32 32 32 32c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15L417.9 128l55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72L295 73c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l55 55L422.1 56 407 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM210.3 155.7l61.1-61.1c.3 .3 .6 .7 1 1l16 16 56 56 56 56 16 16c.3 .3 .6 .6 1 1l-191 191c-10.5 10.5-24.7 16.4-39.6 16.4H97.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V325.3c0-14.9 5.9-29.1 16.4-39.6l43.3-43.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [9925], \"f6c4\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 84.7 14.1c5.4 .9 10 4.5 12.1 9.6s1.5 10.9-1.6 15.4l-38.5 55c-2.2-.1-4.4-.2-6.7-.2c-23.3 0-45.1 6.2-64 17.1l0-1.1c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM639.9 431.9c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faShieldExclamation = {\n prefix: 'fas',\n iconName: 'shield-exclamation',\n icon: [512, 512, [], \"e247\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 128c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H176zM288 204c28.7 0 52 23.3 52 52v96c0 28.7-23.3 52-52 52s-52-23.3-52-52V256c0-28.7 23.3-52 52-52zm-12 52v96c0 6.6 5.4 12 12 12s12-5.4 12-12V256c0-6.6-5.4-12-12-12s-12 5.4-12 12zM159.5 244c-5.4 0-10.2 3.5-11.9 8.6l-.6 1.7c-3.5 10.5-14.8 16.1-25.3 12.6s-16.1-14.8-12.6-25.3l.6-1.7c7.2-21.5 27.2-35.9 49.8-35.9c29 0 52.5 23.5 52.5 52.5v2.2c0 13.4-4.9 26.4-13.8 36.4l-39 43.9c-6.2 7-10 15.7-10.9 24.9H192c11 0 20 9 20 20s-9 20-20 20H128c-11 0-20-9-20-20V368.3c0-20.6 7.5-40.4 21.2-55.8l39-43.9c2.4-2.7 3.7-6.2 3.7-9.8v-2.2c0-6.9-5.6-12.5-12.5-12.5z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M0 0H512V512H0V0z\"]\n};\nvar faGripDots = {\n prefix: 'fas',\n iconName: 'grip-dots',\n icon: [448, 512, [], \"e410\", \"M336 176a48 48 0 1 0 96 0 48 48 0 1 0 -96 0zm-160 0a48 48 0 1 0 96 0 48 48 0 1 0 -96 0zM64 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM336 336a48 48 0 1 0 96 0 48 48 0 1 0 -96 0zM224 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM16 336a48 48 0 1 0 96 0 48 48 0 1 0 -96 0z\"]\n};\nvar faCommentExclamation = {\n prefix: 'fas',\n iconName: 'comment-exclamation',\n icon: [512, 512, [], \"f4af\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm0-336c13.3 0 24 10.7 24 24V248c0 13.3-10.7 24-24 24s-24-10.7-24-24V136c0-13.3 10.7-24 24-24zM224 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faPenSwirl = {\n prefix: 'fas',\n iconName: 'pen-swirl',\n icon: [512, 512, [], \"e214\", \"M347.8 17C319.3 6 288.4 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512c17.7 0 32-14.3 32-32s-14.3-32-32-32C150 448 64 362 64 256S150 64 256 64c14.1 0 27.8 1.5 41 4.4L347.8 17zM310.6 349.4c-5.4 5.3-11.4 9.8-17.8 13.6c-1.7 2.7-3 5.7-3.8 9c-4.4 17.1 5.9 34.6 23 39c12.8 3.3 26.2 5 40 5c88.4 0 160-71.6 160-160c0-32.2-5.9-63-16.8-91.3l-51.4 51.4c2.7 12.9 4.2 26.2 4.2 39.9c0 53-43 96-96 96c-8.3 0-16.4-1.1-24-3c-5.9-1.5-11.9-1.3-17.4 .4zM473.9 16c-18.8-18.8-49.2-18.7-67.9 0L366.4 55.7l89.3 89.3 39.8-38.9c19.1-18.7 19.2-49.4 .4-68.2L473.9 16zM200.5 221.8c-7 7-12.3 15.6-15.4 25l-23.8 71.3c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l71.5-23.9c9.2-3.1 17.6-8.2 24.5-15L432.8 167.5 343.7 78.4 200.5 221.8z\"]\n};\nvar faFalafel = {\n prefix: 'fas',\n iconName: 'falafel',\n icon: [576, 512, [129478], \"e40a\", \"M166.6 162.5c5.9 7.1 8 16.7 5.7 25.7c-.3 1.3-.6 2.6-.7 3.9c17.2 .6 33.9 8.6 45.1 22.8c28.3 .2 52.1 20.3 58.1 47.4c4.8 2.4 9.2 5.4 13.1 8.8c3.9-3.4 8.3-6.4 13.1-8.8c6-27.1 29.8-47.1 58.1-47.4c17.3-21.9 47.4-29.2 72.8-17c1.5-.7 3-1.4 4.5-1.9c.1-2.6-.2-5.2-.9-7.8c-2.3-9-.1-18.6 5.7-25.7c8.8-10.7 8.8-26.3 0-37c-5.9-7.1-8-16.7-5.7-25.7c3.4-13.5-3.2-27.6-15.7-33.3c-8.3-3.8-14.3-11.5-16.1-20.6c-2.7-13.7-14.6-23.5-28.3-23.1c-9.1 .3-17.8-4-23.2-11.4C344 .3 329.1-3.2 316.9 3.2c-8.1 4.3-17.7 4.3-25.8 0C278.9-3.2 264 .3 255.8 11.4c-5.5 7.4-14.1 11.7-23.2 11.4c-13.7-.4-25.7 9.4-28.3 23.1c-1.8 9.1-7.8 16.8-16.1 20.6c-12.5 5.7-19.2 19.8-15.7 33.3c2.3 9 .1 18.6-5.7 25.7c-8.8 10.7-8.8 26.3 0 37zm48.8 84.4c-3.6 .1-7.2-.5-10.5-1.8c-5-1.9-9.4-5.2-12.7-9.6c-8.2-11.2-23.2-14.6-35.3-8.2c-8.1 4.3-17.7 4.3-25.8 0c-12.2-6.4-27.1-2.9-35.3 8.2c-5.5 7.4-14.1 11.7-23.2 11.4c-13.7-.4-25.7 9.4-28.3 23.1c-1.8 9.1-7.8 16.8-16.1 20.6c-12.5 5.7-19.2 19.8-15.7 33.3c2.3 9 .1 18.6-5.7 25.7c-8.8 10.7-8.8 26.3 0 37c5.9 7.1 8 16.7 5.7 25.7c-3.4 13.5 3.2 27.6 15.7 33.3c8.3 3.8 14.3 11.5 16.1 20.6c2.7 13.7 14.6 23.5 28.3 23.1c9.1-.3 17.8 4 23.2 11.4c8.2 11.2 23.2 14.6 35.3 8.2c8.1-4.3 17.7-4.3 25.8 0c12.2 6.4 27.1 2.9 35.3-8.2c5.5-7.4 14.1-11.7 23.2-11.4c13.7 .4 25.7-9.4 28.3-23.1c1.8-9.1 7.8-16.8 16.1-20.6c4.1-1.9 7.6-4.7 10.3-8.1c-3.1-10.1-3.7-21-1.2-31.7c-17.3-22.1-17.3-53.3 0-75.4c-2.4-10.7-1.9-21.7 1.2-31.7c-2.7-3.4-6.2-6.2-10.3-8.1c-8.3-3.8-14.3-11.5-16.1-20.6c-.2-1-.5-2-.8-3c-3.7-12.1-14.9-20.4-27.6-20.1zM224 144a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM80 352a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-16 48a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm453.4-42.6c4.1-4.1 7-9.2 8.7-14.9c0-.2 .1-.3 .1-.5c7-25-7.6-62.8-38.6-93.7c-23.3-23.3-50.5-37.4-73.1-39.9c0 0 0 0 0 0c-2-.2-3.9-.4-5.8-.4c0 0 0 0 0 0c-9.6-.2-18.3 1.8-25.1 6.4c0 0 0 0 0 0c0 0-.1 0-.1 .1c-1.6 1.1-3.1 2.3-4.5 3.6c-.2 .2-.3 .3-.5 .5c-19.2 19.2-11.4 59 16.6 94.3c4 5 8.4 10 13.2 14.8c38.4 38.4 87.2 51.7 109.1 29.8zM508.6 412c-26-7.1-52.6-23.3-74.9-45.7s-38.6-48.9-45.7-74.9c-5.3-19.6-6.4-43.3 4.2-63.6c-3.2 1.9-6.1 4.4-8.4 7.6c-5.5 7.4-14.1 11.7-23.2 11.4c-13.7-.4-25.7 9.4-28.3 23.1c-1.8 9.1-7.8 16.8-16.1 20.6c-12.5 5.7-19.2 19.8-15.7 33.3c2.3 9 .1 18.6-5.7 25.7c-8.8 10.7-8.8 26.3 0 37c5.9 7.1 8 16.7 5.7 25.7c-3.4 13.5 3.2 27.6 15.7 33.3c8.3 3.8 14.3 11.5 16.1 20.6c2.7 13.7 14.6 23.5 28.3 23.1c9.1-.3 17.8 4 23.2 11.4c8.2 11.2 23.2 14.6 35.3 8.2c8.1-4.3 17.7-4.3 25.8 0c12.2 6.4 27.1 2.9 35.3-8.2c5.5-7.4 14.1-11.7 23.2-11.4c13.7 .4 25.7-9.4 28.3-23.1c1.8-9.1 7.8-16.8 16.1-20.6c12.5-5.7 19.2-19.8 15.7-33.3l-.1-.6c-18.1 6.4-38 5-54.9 .4zM368 352a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm16 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faCircle2 = {\n prefix: 'fas',\n iconName: 'circle-2',\n icon: [512, 512, [], \"e0ef\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM222.7 184.7l-24.2 18.4c-10.5 8-25.6 6-33.6-4.5s-6-25.6 4.5-33.6l24.2-18.4c15.8-12 35.2-18.4 55.1-18.1l3.4 .1c46.5 .7 83.8 38.6 83.8 85.1c0 23.5-9.7 46-26.9 62.1L244.7 336H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-9.8 0-18.7-6-22.3-15.2s-1.3-19.6 5.9-26.3L276.3 240.6c7.5-7 11.7-16.8 11.7-27.1c0-20.3-16.3-36.8-36.6-37.1l-3.4-.1c-9.1-.1-18 2.8-25.3 8.3z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [448, 512, [129522], \"f076\", \"M0 160v96C0 379.7 100.3 480 224 480s224-100.3 224-224V160H320v96c0 53-43 96-96 96s-96-43-96-96V160H0zm0-32H128V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64zm320 0H448V64c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32v64z\"]\n};\nvar faJar = {\n prefix: 'fas',\n iconName: 'jar',\n icon: [320, 512, [], \"e516\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm96 64c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H96z\"]\n};\nvar faGramophone = {\n prefix: 'fas',\n iconName: 'gramophone',\n icon: [384, 512, [], \"f8bd\", \"M127 0c10.5-.4 20 6 23.6 15.9l0 .1 .3 .7c.3 .7 .7 1.7 1.3 3.2c1.2 2.9 3.2 7.3 6 12.8c5.7 11.1 14.8 27 28.2 45.1c26.9 36.2 71.4 81.5 141.3 116.8c17.3 8.7 31.6 22.9 40.1 40.4c5.4 10.9 8.2 23 8.2 35l0 .3 0 .3c0 45-36.5 81.4-81.4 81.4H184c-13.3 0-24-10.7-24-24s10.7-24 24-24l110 0c18.7 0 33.9-15.1 34-33.7c-.1-5.4-1.5-10.7-4.1-15.6c-3.1-4.9-7.7-7.8-12.4-8.6c-44.1-7.3-133.1-7.9-241.4 69.4c-.3 .2-.7 .5-1 .7c-2.7 1.8-5.6 2.9-8.7 3.5c-3.2 .6-6.6 .6-10-.2c-1.2-.3-2.4-.7-3.6-1.1c-.5-.2-1-.5-1.5-.7c-.9-.4-1.7-.9-2.5-1.5c-1.2-.8-2.2-1.6-3.2-2.6c-1.4-1.3-2.5-2.7-3.6-4.2c-1.8-2.8-3-5.8-3.6-8.9c-.6-3.1-.5-6.4 .2-9.6c.1-.3 .2-.7 .3-1L104.8 17.9C107.5 7.7 116.5 .4 127 0zM32 416c0-17.7 14.3-32 32-32H320c17.7 0 32 14.3 32 32v32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V416z\"]\n};\nvar faDiceD12 = {\n prefix: 'fas',\n iconName: 'dice-d12',\n icon: [512, 512, [], \"f6ce\", \"M318.2 0c4.2 0 8.4 1.1 12 3.2l72 41.6c5.9 3.4 5.1 12.2-1.3 14.5L264.1 108.1c-5.2 1.9-10.9 1.9-16.1 0L111.1 59.3c-6.4-2.3-7.2-11.1-1.3-14.5l72-41.6c3.6-2.1 7.8-3.2 12-3.2H318.2zM149.9 490.4L74.2 446.6c-3.6-2.1-6.7-5.1-8.8-8.8L3.2 330.2c-2.1-3.6-3.2-7.8-3.2-12V233.9c0-7.1 8.6-10.7 13.7-5.7l96.1 96.1c2.7 2.7 4.8 6.1 5.9 9.8L161.6 481c2.2 7-5.3 13-11.6 9.3zM512 233.9v84.2c0 4.2-1.1 8.4-3.2 12L446.6 437.8c-2.1 3.6-5.1 6.7-8.8 8.8l-75.8 43.7c-6.3 3.6-13.8-2.4-11.6-9.3l45.9-146.9c1.2-3.7 3.2-7.1 5.9-9.8l96.1-96.1c5-5 13.7-1.5 13.7 5.7zM15.3 184.7c-5.1-5.1-6.2-13-2.5-19.3L57.4 88c3.9-6.7 12-9.7 19.2-7.1l152.8 54.6c6.4 2.3 10.6 8.3 10.6 15.1v85.7c0 6.1-3.4 11.6-8.8 14.3l-89.7 44.8c-6.2 3.1-13.6 1.9-18.5-3L15.3 184.7zM454.6 88l44.7 77.3c3.6 6.3 2.6 14.2-2.5 19.3L389 292.4c-4.9 4.9-12.3 6.1-18.5 3l-89.7-44.8c-5.4-2.7-8.8-8.3-8.8-14.3V150.6c0-6.8 4.3-12.8 10.6-15.1L435.4 80.9c7.3-2.6 15.4 .4 19.2 7.1zM295.5 512H216.5c-7 0-13.2-4.5-15.3-11.2L151.4 341.2c-2.3-7.5 1.1-15.6 8.1-19.1l89.3-44.7c4.5-2.3 9.8-2.3 14.3 0l89.3 44.7c7 3.5 10.5 11.6 8.1 19.1L310.7 500.8c-2.1 6.7-8.3 11.2-15.3 11.2z\"]\n};\nvar faNoteSticky = {\n prefix: 'fas',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H288V368c0-26.5 21.5-48 48-48H448V96c0-35.3-28.7-64-64-64H64zM448 352H402.7 336c-8.8 0-16 7.2-16 16v66.7V480l32-32 64-64 32-32z\"]\n};\nvar faStickyNote = faNoteSticky;\nvar faDown = {\n prefix: 'fas',\n iconName: 'down',\n icon: [384, 512, [\"arrow-alt-down\"], \"f354\", \"M214.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l96 0 0-184c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 184 96 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-160 160z\"]\n};\nvar faArrowAltDown = faDown;\nvar faHundredPoints = {\n prefix: 'fas',\n iconName: 'hundred-points',\n icon: [512, 512, [128175, \"100\"], \"e41c\", \"M163 101.8C168 61.9 201.9 32 242 32c47.9 0 85 42 79 89.5L309 218.2c-5 39.8-38.9 69.8-79 69.8c-47.9 0-85-42-79-89.5L163 101.8zM242 96c-7.9 0-14.5 5.9-15.5 13.7l-12.1 96.7c-1.2 9.3 6.1 17.6 15.5 17.6c7.9 0 14.5-5.9 15.5-13.7l12.1-96.7c1.2-9.3-6.1-17.6-15.5-17.6zM135.7 68l-32 224c-2.5 17.5-18.7 30-36.2 27.7S37.8 301.5 40.3 284L64.3 116.5l-19.7 8.7c-16.2 7.2-35.1 0-42-16.1s.6-35.1 16.8-42.3l72-32c10.6-4.7 22.9-3.4 32.1 3.5s13.8 18.2 12.2 29.7zm376 247.5c2.5 17.5-9.7 33.7-27.2 36.2l-448 64C19 418.2 2.8 406 .3 388.5S10 354.8 27.5 352.3l448-64c17.5-2.5 33.7 9.7 36.2 27.2zm0 96c2.5 17.5-9.7 33.7-27.2 36.2l-224 32c-17.5 2.5-33.7-9.7-36.2-27.2s9.7-33.7 27.2-36.2l224-32c17.5-2.5 33.7 9.7 36.2 27.2zM427.7 32c46.9 0 83.7 40.3 79.5 87l-7.3 80.4c-3.7 41.1-38.2 72.6-79.5 72.6c-46.9 0-83.7-40.3-79.5-87l7.3-80.4C351.9 63.5 386.4 32 427.7 32zm-15.7 78.4l-7.3 80.4c-.8 9.3 6.4 17.2 15.7 17.2c8.2 0 15-6.2 15.7-14.4l7.3-80.4c.8-9.3-6.4-17.2-15.7-17.2c-8.2 0-15 6.2-15.7 14.4z\"]\n};\nvar fa100 = faHundredPoints;\nvar faPaperclipVertical = {\n prefix: 'fas',\n iconName: 'paperclip-vertical',\n icon: [384, 512, [], \"e3c2\", \"M32 128C32 57.3 89.3 0 160 0s128 57.3 128 128V320c0 44.2-35.8 80-80 80s-80-35.8-80-80V160c0-17.7 14.3-32 32-32s32 14.3 32 32V320c0 8.8 7.2 16 16 16s16-7.2 16-16V128c0-35.3-28.7-64-64-64s-64 28.7-64 64V336c0 61.9 50.1 112 112 112s112-50.1 112-112V160c0-17.7 14.3-32 32-32s32 14.3 32 32V336c0 97.2-78.8 176-176 176s-176-78.8-176-176V128z\"]\n};\nvar faWindWarning = {\n prefix: 'fas',\n iconName: 'wind-warning',\n icon: [640, 512, [\"wind-circle-exclamation\"], \"f776\", \"M418 368c-38.7 67-111.1 112-194 112C100.3 480 0 379.7 0 256S100.3 32 224 32c118.3 0 215.2 91.8 223.4 208H384c-35.3 0-64 28.7-64 64s28.7 64 64 64h34zM248 152c0-13.3-10.7-24-24-24s-24 10.7-24 24V264c0 13.3 10.7 24 24 24s24-10.7 24-24V152zM224 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm248 48c0-17.7 14.3-32 32-32h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H384c-17.7 0-32-14.3-32-32s14.3-32 32-32H536c53 0 96 43 96 96s-43 96-96 96H504c-17.7 0-32-14.3-32-32zm72-192H479.5c-1.4-22.2-5.6-43.7-12.3-64H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H512c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nvar faWindCircleExclamation = faWindWarning;\nvar faLocationPinSlash = {\n prefix: 'fas',\n iconName: 'location-pin-slash',\n icon: [640, 512, [\"map-marker-slash\"], \"f60c\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L459 334.5c30-51.6 53-103.7 53-142.5C512 86 426 0 320 0C249.2 0 187.3 38.4 154 95.4L38.8 5.1zM343.7 499.2c16.2-20.2 39-49.6 62.5-83.1L128.1 196.9c4.2 88.2 117.8 239.3 168.2 302.2c12.3 15.3 35.1 15.3 47.4 0z\"]\n};\nvar faMapMarkerSlash = faLocationPinSlash;\nvar faFaceSadSweat = {\n prefix: 'fas',\n iconName: 'face-sad-sweat',\n icon: [576, 512, [], \"e38a\", \"M288 512c141.4 0 256-114.6 256-256S429.4 0 288 0S32 114.6 32 256c0 1.1 0 2.2 0 3.3c16.3-7.1 36.4-2.8 48 12.8c7 9.2 18.1 24.6 27.7 40.7c4.8 8.1 9.6 17 13.2 25.7c3.4 8 7.1 19 7.1 30.5c0 24.5-11.1 46-28.4 60.3C146.4 480.2 213.5 512 288 512zM79.5 404.5C89.6 395.9 96 383.2 96 369c0-20-28.4-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0c-1.7 2.3-3.8 5-5.9 8.1C21.4 319.1 0 351.7 0 369c0 26 21.5 47 48 47c12 0 23-4.3 31.5-11.5zm291.3 7.4c-6.6 5.9-16.7 5.4-22.6-1.2c-11.7-13-31.6-26.7-60.1-26.7s-48.4 13.7-60.1 26.7c-5.9 6.6-16 7.1-22.6 1.2s-7.1-16-1.2-22.6C220.2 371.4 248.3 352 288 352s67.8 19.4 83.9 37.3c5.9 6.6 5.4 16.7-1.2 22.6zM367.6 240a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-128 32a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM227.3 171.3l-7.4 7.4c-23.6 23.6-53.9 39.2-86.8 44.7l-2.5 .4c-8.7 1.5-17-4.4-18.4-13.2s4.4-17 13.2-18.4l2.5-.4c26.3-4.4 50.6-16.9 69.5-35.7l7.4-7.4c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm121.4-22.6c6.2-6.2 16.4-6.2 22.6 0l7.4 7.4c18.9 18.9 43.2 31.4 69.5 35.7l2.5 .4c8.7 1.5 14.6 9.7 13.2 18.4s-9.7 14.6-18.4 13.2l-2.5-.4c-32.9-5.5-63.3-21.1-86.8-44.7l-7.4-7.4c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faBugSlash = {\n prefix: 'fas',\n iconName: 'bug-slash',\n icon: [640, 512, [], \"e490\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L477.4 348.9c1.7-9.4 2.6-19 2.6-28.9h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H479.7c-1.1-14.1-5-27.5-11.1-39.5c.7-.6 1.4-1.2 2.1-1.9l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-.7 .7-1.3 1.4-1.9 2.1C409.2 164.1 393.1 160 376 160H264c-8.3 0-16.3 1-24 2.8L38.8 5.1zM320 0c-53 0-96 43-96 96v3.6c0 15.7 12.7 28.4 28.4 28.4H387.6c15.7 0 28.4-12.7 28.4-28.4V96c0-53-43-96-96-96zM160.3 256H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c0 24.6 5.5 47.8 15.4 68.6c-2.2 1.3-4.2 2.9-6 4.8l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l63.1-63.1c24.5 21.8 55.8 36.2 90.3 39.6V335.5L166.7 227.3c-3.4 9-5.6 18.7-6.4 28.7zM336 479.2c36.6-3.6 69.7-19.6 94.8-43.8L336 360.7V479.2z\"]\n};\nvar faCupcake = {\n prefix: 'fas',\n iconName: 'cupcake',\n icon: [448, 512, [129473], \"e402\", \"M240 0c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l6.1 6.1c3.4 3.4 5.3 7.9 5.3 12.7C240 56 232 64 222.1 64H160c-35.3 0-64 28.7-64 64l0 .8c-3.3 .5-6.6 1.4-9.9 2.4L50.9 143C20.5 153.2 0 181.6 0 213.6C0 254.7 33.3 288 74.4 288H373.6c41.1 0 74.4-33.3 74.4-74.4c0-32-20.5-60.4-50.9-70.6l-35.3-11.8c-4.1-1.4-8.2-2.3-12.5-2.8c1.7-6.7 2.6-13.8 2.6-21C352 48.1 303.9 0 244.6 0H240zm27.9 512l24-192H156.1l24 192h87.8zM64 320L89.3 471.9C93.2 495 113.2 512 136.7 512h11.2l-24-192H64zM300.1 512h11.2c23.5 0 43.5-17 47.3-40.1L384 320H324.1l-24 192z\"]\n};\nvar faLightSwitchOff = {\n prefix: 'fas',\n iconName: 'light-switch-off',\n icon: [384, 512, [], \"e018\", \"M64 512c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64zm96-96h64c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64V352c0 35.3 28.7 64 64 64zm32 32a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm0-416a16 16 0 1 0 0 32 16 16 0 1 0 0-32zM160 384c-17.7 0-32-14.3-32-32V256H256v96c0 17.7-14.3 32-32 32H160z\"]\n};\nvar faToggleLargeOff = {\n prefix: 'fas',\n iconName: 'toggle-large-off',\n icon: [576, 512, [], \"e5b0\", \"M192 384a128 128 0 1 1 0-256 128 128 0 1 1 0 256zm0 64H384c106 0 192-86 192-192s-86-192-192-192H192C86 64 0 150 0 256S86 448 192 448zm143.1-64c30.4-34 48.9-78.8 48.9-128s-18.5-94-48.9-128H384c70.7 0 128 57.3 128 128s-57.3 128-128 128H335.1z\"]\n};\nvar faPenFancySlash = {\n prefix: 'fas',\n iconName: 'pen-fancy-slash',\n icon: [640, 512, [], \"e210\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L387.9 278.7l161-140.2c17.2-15 27.1-36.7 27.1-59.6c0-43.6-35.4-79-79-79c-22.8 0-44.6 9.9-59.6 27.1L287.1 199.7 38.8 5.1zM318 346.5L211 262.3l-60.1 13.9c-17.1 3.9-30.7 16.9-35.4 33.8L65.7 487.6l95.4-95.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1L88.4 510.3 266 460.5c16.9-4.7 29.9-18.3 33.8-35.4L318 346.5z\"]\n};\nvar faTruckContainer = {\n prefix: 'fas',\n iconName: 'truck-container',\n icon: [640, 512, [], \"f4dc\", \"M48 32H352c26.5 0 48 21.5 48 48V240c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80C0 53.5 21.5 32 48 32zM80 80c-8.8 0-16 7.2-16 16V224c0 8.8 7.2 16 16 16s16-7.2 16-16V96c0-8.8-7.2-16-16-16zM224 96V224c0 8.8 7.2 16 16 16s16-7.2 16-16V96c0-8.8-7.2-16-16-16s-16 7.2-16 16zM160 80c-8.8 0-16 7.2-16 16V224c0 8.8 7.2 16 16 16s16-7.2 16-16V96c0-8.8-7.2-16-16-16zM304 96V224c0 8.8 7.2 16 16 16s16-7.2 16-16V96c0-8.8-7.2-16-16-16s-16 7.2-16 16zm128 72c0-13.3 10.7-24 24-24h72.8c16.8 0 32.7 7.5 43.3 20.5L631 236.4c5.8 7.1 9 16.1 9 25.3V272v16 64c0 17.7-14.3 32-32 32h-1.6c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16H432 286.4c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80c-26.2 0-49.4-12.6-64-32c-14.6 19.4-37.8 32-64 32c-44.2 0-80-35.8-80-80V384 352c0-17.7 14.3-32 32-32H80 208 432V288 256 168zm48 88H585l-50-61.1c-1.5-1.9-3.8-2.9-6.2-2.9H480v64zm80 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM208 432a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-96-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faBoot = {\n prefix: 'fas',\n iconName: 'boot',\n icon: [512, 512, [129406], \"f782\", \"M0 32C0 14.3 14.3 0 32 0H320c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H0V32zM0 457.4V448H512v9.4c0 14.5-5.8 28.4-16 38.6s-24.1 16-38.6 16H442.5c-17 0-33.3-6.7-45.3-18.7l-7.6-7.6c-3.1-3.1-8.2-3.1-11.3 0l-7.6 7.6c-12 12-28.3 18.7-45.3 18.7h-11c-17 0-33.3-6.7-45.3-18.7l-7.6-7.6c-3.1-3.1-8.2-3.1-11.3 0l-7.6 7.6c-12 12-28.3 18.7-45.3 18.7h-11c-17 0-33.3-6.7-45.3-18.7l-7.6-7.6c-3.1-3.1-8.2-3.1-11.3 0l-7.6 7.6c-12 12-28.3 18.7-45.3 18.7H54.6c-14.5 0-28.4-5.8-38.6-16S0 471.9 0 457.4zM0 416V128H320v32H272c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v32H272c-8.8 0-16 7.2-16 16s7.2 16 16 16h48l119.3 29.8C482 296.5 512 334.9 512 379v37H0z\"]\n};\nvar faArrowUpFromWaterPump = {\n prefix: 'fas',\n iconName: 'arrow-up-from-water-pump',\n icon: [576, 512, [], \"e4b6\", \"M112 0C85.5 0 64 21.5 64 48V256H48c-26.5 0-48 21.5-48 48v96c0 8 2 15.6 5.4 22.2c3.8-1.7 7.8-3.1 12-4.1c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c4.2 1 8.2 2.4 12 4.1C574 415.6 576 408 576 400V304c0-26.5-21.5-48-48-48H480l0-146.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 109.3 416 256H288V48c0-26.5-21.5-48-48-48H112zM306.5 421.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faFileCheck = {\n prefix: 'fas',\n iconName: 'file-check',\n icon: [384, 512, [], \"f316\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm49 281L177 409c-9.4 9.4-24.6 9.4-33.9 0L79 345c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 247c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [576, 512, [129460], \"f5d7\", \"M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2H384c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336H192c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z\"]\n};\nvar faCardsBlank = {\n prefix: 'fas',\n iconName: 'cards-blank',\n icon: [640, 512, [], \"e4df\", \"M27.8 118.8C1.2 134.2-7.9 168.2 7.5 194.9l167 289.3c15.4 26.6 49.4 35.8 76.1 20.4L443.4 393.2c26.6-15.4 35.8-49.4 20.4-76.1L296.8 27.8C281.4 1.2 247.3-7.9 220.7 7.5L27.8 118.8zM459.4 420.9L324.1 499c9.7 8.1 22.2 13 35.9 13H584c30.9 0 56-25.1 56-56V120c0-30.9-25.1-56-56-56H360c-1.8 0-3.5 .1-5.3 .2L491.5 301.1c24.2 41.9 9.8 95.6-32.1 119.8z\"]\n};\nvar faCircle3 = {\n prefix: 'fas',\n iconName: 'circle-3',\n icon: [512, 512, [], \"e0f0\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 128H312c9.9 0 18.8 6.1 22.4 15.3s1.1 19.7-6.2 26.4l-50.8 46.5c41.9 4.8 74.6 40.4 74.6 83.6c0 46.5-37.7 84.2-84.2 84.2H240c-30.1 0-58.1-15.6-73.9-41.2l-2.6-4.2c-7-11.3-3.5-26.1 7.8-33s26.1-3.5 33 7.8l2.6 4.2c7.1 11.5 19.6 18.4 33 18.4h27.8c20 0 36.2-16.2 36.2-36.2c0-20.1-16.3-36.3-36.4-36.2l-51.5 .3c-9.9 .1-18.9-6-22.5-15.2s-1.2-19.8 6.1-26.5L250.3 176H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faBenchTree = {\n prefix: 'fas',\n iconName: 'bench-tree',\n icon: [640, 512, [], \"e2e7\", \"M608 96c0 5.1-.4 10.2-1.2 15.1C626.9 125.7 640 149.3 640 176c0 44.2-35.8 80-80 80H544V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256H464c-44.2 0-80-35.8-80-80c0-26.7 13.1-50.3 33.2-64.9c-.8-4.9-1.2-10-1.2-15.1c0-53 43-96 96-96s96 43 96 96zM32 224c0-17.7 14.3-32 32-32H320c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V224zm0 128H352c17.7 0 32 14.3 32 32s-14.3 32-32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416H96v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faKeyboardBrightnessLow = {\n prefix: 'fas',\n iconName: 'keyboard-brightness-low',\n icon: [640, 512, [], \"e1c1\", \"M320 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM160 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM128 384a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96-32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H224z\"]\n};\nvar faSkiBootSki = {\n prefix: 'fas',\n iconName: 'ski-boot-ski',\n icon: [640, 512, [], \"e3cd\", \"M390.3 .6c17.3 3.5 28.6 20.3 25.1 37.7l-6.4 32L397.4 128H336c-8.8 0-16 7.2-16 16s7.2 16 16 16h55l-9.6 48H320c-8.8 0-16 7.2-16 16s7.2 16 16 16h62.2l78.7 34.7c11.6 5.1 19.1 16.6 19.1 29.3v80c0 17.7-14.3 32-32 32H120c-9.6 0-18.7-4.3-24.7-11.7s-8.5-17.2-6.6-26.6l24.7-123.6c2.9-.5 6.1-1.2 9.5-2.1c15.6-3.9 36.4-11.6 58.3-26.9c42.4-29.7 86.4-86.4 104.5-193.1h65.7l1.3-6.3C356.1 8.4 372.9-2.8 390.3 .6zM162.8 198.9c-15.8 11-30.8 17.2-42.6 20.7L152.6 57.7c3-15 16.1-25.7 31.4-25.7h69.2c-17.4 96-56.7 143.3-90.4 166.9zM640 416c0 53-43 96-96 96H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32-14.3 32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faBrainCircuit = {\n prefix: 'fas',\n iconName: 'brain-circuit',\n icon: [512, 512, [], \"e0c6\", \"M240 56c0-30.9-25.1-56-56-56c-28.9 0-52.7 21.9-55.7 49.9C100.6 56.9 80 82.1 80 112c0 6 .8 11.9 2.4 17.4C53.6 135.7 32 161.3 32 192c0 15 5.1 28.8 13.8 39.7C18.7 244.5 0 272.1 0 304c0 34.2 21.4 63.4 51.6 74.8C49.3 385.4 48 392.6 48 400c0 35.3 28.7 64 64 64c5.6 0 11.1-.7 16.3-2.1c2.9 28.2 26.8 50.1 55.7 50.1c30.9 0 56-25.1 56-56V272H192c-8.8 0-16 7.2-16 16v34.7c18.6 6.6 32 24.4 32 45.3c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V288c0-26.5 21.5-48 48-48h48V160H205.3c-6.6 18.6-24.4 32-45.3 32c-26.5 0-48-21.5-48-48s21.5-48 48-48c20.9 0 38.7 13.4 45.3 32H240V56zm32 104V352h34.7c6.6-18.6 24.4-32 45.3-32c26.5 0 48 21.5 48 48s-21.5 48-48 48c-20.9 0-38.7-13.4-45.3-32H272v72c0 30.9 25.1 56 56 56c28.9 0 52.7-21.9 55.7-50.1c5.2 1.4 10.7 2.1 16.3 2.1c35.3 0 64-28.7 64-64c0-7.4-1.3-14.6-3.6-21.2C490.6 367.4 512 338.2 512 304c0-31.9-18.7-59.5-45.8-72.3C474.9 220.8 480 207 480 192c0-30.7-21.6-56.3-50.4-62.6c1.6-5.5 2.4-11.4 2.4-17.4c0-29.9-20.6-55.1-48.3-62.1C380.6 21.9 356.9 0 328 0c-30.9 0-56 25.1-56 56v72h48c26.5 0 48 21.5 48 48v2.7c18.6 6.6 32 24.4 32 45.3c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V176c0-8.8-7.2-16-16-16H272zM144 144a16 16 0 1 0 32 0 16 16 0 1 0 -32 0zm208 64a16 16 0 1 0 0 32 16 16 0 1 0 0-32zM144 368a16 16 0 1 0 32 0 16 16 0 1 0 -32 0zm192 0a16 16 0 1 0 32 0 16 16 0 1 0 -32 0z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M240 80H342.7c-7.9-19.5-20.4-36.5-36.2-49.9L240 80zm37.7-68.2C261.3 4.2 243.2 0 224 0c-53.7 0-99.7 33.1-118.7 80h81.4l91-68.2zM224 256c70.7 0 128-57.3 128-128c0-5.4-.3-10.8-1-16H97c-.7 5.2-1 10.6-1 16c0 70.7 57.3 128 128 128zM124 312.4c-9.7 3.1-19.1 7-28 11.7V512H243.7L181.5 408.2 124 312.4zm33-7.2L204.3 384H272c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48h82.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3c-7.2 0-14.3 .4-21.3 1.3zM0 482.3C0 498.7 13.3 512 29.7 512H64V345.4C24.9 378.1 0 427.3 0 482.3zM320 464c0-26.5-21.5-48-48-48H223.5l57.1 95.2C303 507.2 320 487.6 320 464z\"]\n};\nvar faBlockBrickFire = {\n prefix: 'fas',\n iconName: 'block-brick-fire',\n icon: [640, 512, [\"firewall\"], \"e3dc\", \"M128 32v80H384V32H128zM96 112V32C60.7 32 32 60.7 32 96v16H96zM32 144v96H240V144H32zm0 224H96V272H32v96zm0 32v16c0 35.3 28.7 64 64 64H240V400H32zm240 0v80h65.6c-20.2-22.6-35.1-50-43.1-80H272zM480 144h-.6l.6 .6V144zm-208 0v96h54.9c20.6-32.8 48.5-66.2 81-96H272zM128 272v96H288.8c-.5-5.9-.8-11.9-.8-17.9c0-25.4 8.5-52.4 21-78.1H128zM480 112V96c0-35.3-28.7-64-64-64v80h64zm-26.5 51.8c-2.8-2.5-6.3-3.7-9.8-3.8c-3.6 0-7.2 1.2-10 3.7c-33.2 29.7-61.4 63.4-81.4 95.8c-19.7 31.9-32.4 66.2-32.4 92.6C320 439.9 390.3 512 480 512c88.7 0 160-72 160-159.8c0-20.2-9.6-50.9-24.2-79c-14.8-28.5-35.7-58.5-60.4-81.1c-5.6-5.1-14.4-5.2-20 0c-9.6 8.8-18.6 19.6-26.5 29.5c-17.3-20.7-35.8-39.9-55.5-57.7zM530 433c-15 10-31 15-49 15c-45 0-81-29-81-78c0-24 15-45 45-82c4 5 62 79 62 79l36-42c3 4 5 8 7 12c18 33 10 75-20 96z\"]\n};\nvar faFirewall = faBlockBrickFire;\nvar faFaceSadTear = {\n prefix: 'fas',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM367.6 208a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSadTear = faFaceSadTear;\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z\"]\n};\nvar faTentArrowsDown = {\n prefix: 'fas',\n iconName: 'tent-arrows-down',\n icon: [576, 512, [], \"e581\", \"M209.8 111.9c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L136 24c0-13.3-10.7-24-24-24S88 10.7 88 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zm352 0c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V146.1l-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [64, 512, [10069, 10071, 61738], \"21\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM32 480a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faArrowsSpin = {\n prefix: 'fas',\n iconName: 'arrows-spin',\n icon: [512, 512, [], \"e4bb\", \"M256 96c38.4 0 73.7 13.5 101.3 36.1l-32.6 32.6c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H448c8.8 0 16-7.2 16-16V64c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-34 34C363.4 52.6 312.1 32 256 32c-10.9 0-21.5 .8-32 2.3V99.2c10.3-2.1 21-3.2 32-3.2zM132.1 154.7l32.6 32.6c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8V64c0-8.8-7.2-16-16-16H64c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l34 34C52.6 148.6 32 199.9 32 256c0 10.9 .8 21.5 2.3 32H99.2c-2.1-10.3-3.2-21-3.2-32c0-38.4 13.5-73.7 36.1-101.3zM477.7 224H412.8c2.1 10.3 3.2 21 3.2 32c0 38.4-13.5 73.7-36.1 101.3l-32.6-32.6c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8V448c0 8.8 7.2 16 16 16H448c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-34-34C459.4 363.4 480 312.1 480 256c0-10.9-.8-21.5-2.3-32zM256 416c-38.4 0-73.7-13.5-101.3-36.1l32.6-32.6c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9H64c-8.8 0-16 7.2-16 16l0 112c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l34-34C148.6 459.4 199.9 480 256 480c10.9 0 21.5-.8 32-2.3V412.8c-10.3 2.1-21 3.2-32 3.2z\"]\n};\nvar faFaceSmileRelaxed = {\n prefix: 'fas',\n iconName: 'face-smile-relaxed',\n icon: [512, 512, [], \"e392\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm47.1-91.9c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zm89.6 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faCommentXmark = {\n prefix: 'fas',\n iconName: 'comment-xmark',\n icon: [512, 512, [\"comment-times\"], \"f4b5\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM175 159c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faCommentTimes = faCommentXmark;\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [128424, 128438, 9113], \"f02f\", \"M128 0C92.7 0 64 28.7 64 64v96h64V64H354.7L384 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0H128zM384 352v32 64H128V384 368 352H384zm64 32h32c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v96c0 17.7 14.3 32 32 32H64v64c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V384zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faTurkishLiraSign = {\n prefix: 'fas',\n iconName: 'turkish-lira-sign',\n icon: [384, 512, [\"try\", \"turkish-lira\"], \"e2bb\", \"M96 32c17.7 0 32 14.3 32 32V99.3L247.2 65.2c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 165.9v29.4l119.2-34.1c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 261.9V416h63.8c68.2 0 124.4-53.5 127.8-121.6l.4-8c.9-17.7 15.9-31.2 33.6-30.4s31.2 15.9 30.4 33.6l-.4 8C378.5 399.8 294.1 480 191.8 480H96c-17.7 0-32-14.3-32-32V280.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 213.6V184.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 117.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faTry = faTurkishLiraSign;\nvar faTurkishLira = faTurkishLiraSign;\nvar faFaceNoseSteam = {\n prefix: 'fas',\n iconName: 'face-nose-steam',\n icon: [512, 512, [], \"e382\", \"M498.2 339.1c8.9-26.1 13.8-54 13.8-83.1C512 114.6 397.4 0 256 0S0 114.6 0 256c0 28.6 4.7 56.1 13.3 81.8c4.9-1.5 9.9-2.4 15-2.7c1.2-1.4 2.4-2.7 3.7-4l4 4-4-4c23.3-23.3 60.1-24.9 85.3-4.7l51-30.6c30-18 64.1 16.1 46.1 46.1l-30.6 51c20.2 25.1 18.6 62-4.7 85.3c-1.3 1.3-2.6 2.5-4 3.7c-.3 5.4-1.3 10.8-3 16C198.4 507 226.6 512 256 512c28.7 0 56.3-4.7 82-13.4c-1.6-5.1-2.6-10.5-2.9-15.8c-1.4-1.2-2.7-2.4-4-3.7c-23.3-23.3-24.9-60.1-4.7-85.3l-30.6-51c-18-30 16.1-64.1 46.1-46.1l51 30.6c25.1-20.2 62-18.6 85.3 4.7c1.3 1.3 2.5 2.6 3.7 4c5.5 .3 11 1.3 16.3 3.1zm-12.4 29.7c-1.9-.5-3.8-.8-5.8-.9c-5.4-.3-10.8 .7-15.7 3.1c-1-5.2-3.3-10.1-6.9-14.4c-.6-.7-1.2-1.4-1.8-2c-12-12-31.2-12.5-43.8-1.4c-.5 .5-1 .9-1.5 1.4c-3.7 3.7-6.3 8.1-7.8 12.8L332.8 323c-2.8-1.8-6.5-1.4-8.8 1l-.2 .2c-.3 .2-.6 .5-.7 .8c-1.6 2.3-1.7 5.3-.1 7.7l44.2 70.4c-4.9 1.5-9.6 4.1-13.4 8c-4.7 4.7-7.6 10.4-8.8 16.4c-.5 2.4-.7 4.8-.6 7.2c.2 7.9 3.4 15.7 9.4 21.7c.7 .7 1.3 1.3 2 1.9c4.2 3.6 9.2 5.9 14.4 6.9c-1.5 3.2-2.5 6.7-2.9 10.1c-.2 1.8-.3 3.7-.2 5.6c0 .7 .1 1.4 .2 2c.8 6.9 3.9 13.5 9.1 18.8c12.5 12.5 32.8 12.5 45.3 0c2.1-2.1 3.8-4.3 5.2-6.7c18.8 14.5 45.9 13.1 63.1-4.2s18.6-44.3 4.2-63.1c2.4-1.4 4.7-3.1 6.7-5.2c12.5-12.5 12.5-32.8 0-45.3c-4.3-4.3-9.5-7.1-15-8.5l0 0zM142.4 485.5c.4-1.8 .7-3.6 .8-5.4c.3-5.4-.7-10.8-3.1-15.7c5.2-1 10.1-3.3 14.4-6.9c.7-.6 1.4-1.2 2-1.8c1.5-1.5 2.8-3.1 4-4.8c8-11.9 7.1-27.9-2.5-38.9c-.5-.5-.9-1-1.4-1.5c-3.6-3.6-7.9-6.2-12.5-7.7l44.9-69.8c1.8-2.8 1.4-6.5-.9-8.8c-2.3-2.3-5.9-2.7-8.7-1L108 367.5c0-.2-.1-.3-.1-.5c-1.5-4.8-4.1-9.4-8-13.2c-.2-.2-.4-.4-.7-.6c-.3-.3-.6-.5-.8-.8c-12.6-11.1-31.7-10.6-43.8 1.4c-.7 .7-1.3 1.3-1.9 2c-3.6 4.3-5.9 9.2-6.9 14.4c-4.9-2.4-10.3-3.4-15.7-3.1c-1.5 .1-3.1 .3-4.6 .6c-5.9 1.2-11.6 4.1-16.2 8.7c-12.5 12.5-12.5 32.8 0 45.3c2.1 2.1 4.3 3.8 6.7 5.2C1.7 445.6 3 472.7 20.3 489.9s44.3 18.6 63.1 4.2c1.4 2.4 3.1 4.7 5.2 6.7c12.5 12.5 32.8 12.5 45.3 0c4.4-4.4 7.2-9.8 8.5-15.4zM112 224h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm192 32c-8.8 0-16-7.2-16-16s7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H304zm95.2-133.1c2.8 8.4-1.7 17.4-10.1 20.2c-35.5 11.8-64.4 34.8-73.7 44.1c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6c12-12 45-38.1 86.3-51.9c8.4-2.8 17.4 1.7 20.2 10.1zm-286.4 0c2.8-8.4 11.9-12.9 20.2-10.1c41.3 13.8 74.2 39.9 86.3 51.9c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0c-9.3-9.3-38.2-32.3-73.7-44.1c-8.4-2.8-12.9-11.9-10.1-20.2z\"]\n};\nvar faCircleWaveformLines = {\n prefix: 'fas',\n iconName: 'circle-waveform-lines',\n icon: [512, 512, [\"waveform-circle\"], \"e12d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm32-368V368c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16zM160 176V336c0 8.8-7.2 16-16 16s-16-7.2-16-16V176c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 24V312c0 8.8-7.2 16-16 16s-16-7.2-16-16V200c0-8.8 7.2-16 16-16s16 7.2 16 16zM224 216v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V216c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 24v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V240c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faWaveformCircle = faCircleWaveformLines;\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [320, 512, [128178, 61781, \"dollar\", \"usd\"], \"24\", \"M160 0c17.7 0 32 14.3 32 32V67.7c1.6 .2 3.1 .4 4.7 .7c.4 .1 .7 .1 1.1 .2l48 8.8c17.4 3.2 28.9 19.9 25.7 37.2s-19.9 28.9-37.2 25.7l-47.5-8.7c-31.3-4.6-58.9-1.5-78.3 6.2s-27.2 18.3-29 28.1c-2 10.7-.5 16.7 1.2 20.4c1.8 3.9 5.5 8.3 12.8 13.2c16.3 10.7 41.3 17.7 73.7 26.3l2.9 .8c28.6 7.6 63.6 16.8 89.6 33.8c14.2 9.3 27.6 21.9 35.9 39.5c8.5 17.9 10.3 37.9 6.4 59.2c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.1c-.4-.1-.9-.1-1.3-.2l-.2 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.1-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.5 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.6 .4-16.7-1.3-20.4c-1.9-4-5.6-8.4-13-13.3c-16.4-10.7-41.5-17.7-74-26.3l-2.8-.7 0 0C119.4 279.3 84.4 270 58.4 253c-14.2-9.3-27.5-22-35.8-39.6c-8.4-17.9-10.1-37.9-6.1-59.2C23.7 116 52.3 91.2 84.8 78.3c13.3-5.3 27.9-8.9 43.2-11V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faDollar = faDollarSign;\nvar faUsd = faDollarSign;\nvar faFerrisWheel = {\n prefix: 'fas',\n iconName: 'ferris-wheel',\n icon: [512, 512, [], \"e174\", \"M302.7 36.9c27.7 5.9 53.5 16.9 76.4 31.9c6.3-3.1 13.4-4.8 20.9-4.8c26.5 0 48 21.5 48 48c0 7.5-1.7 14.6-4.8 20.9c15.1 22.9 26 48.7 31.9 76.4c21.1 5 36.9 24 36.9 46.7s-15.7 41.7-36.9 46.7c-5.9 27.7-16.9 53.5-31.9 76.4c3.1 6.3 4.8 13.4 4.8 20.9c0 25.6-20 46.4-45.1 47.9l-38.5-80c4.6-5.1 10.3-9.2 16.6-12c17.2-21.5 29-47.5 33.2-75.9H332.3c2.4-7.6 3.7-15.6 3.7-24s-1.3-16.4-3.7-24h81.9c-3.9-26.3-14.3-50.4-29.4-70.9L326.9 219c-7.6-14.5-19.5-26.4-33.9-33.9l57.9-57.9c-20.5-15.1-44.6-25.4-70.9-29.4v81.9c-7.6-2.4-15.6-3.7-24-3.7s-16.4 1.3-24 3.7V97.8c-26.3 4-50.4 14.3-70.9 29.4L219 185.1c-14.5 7.6-26.4 19.5-33.9 33.9l-57.9-57.9c-15.1 20.5-25.4 44.6-29.4 70.9h81.9c-2.4 7.6-3.7 15.6-3.7 24s1.3 16.4 3.7 24H97.8c4.3 28.5 16.1 54.4 33.2 75.9c6.4 2.8 12.1 6.9 16.7 12l-38.5 80C84 446.4 64 425.6 64 400c0-7.5 1.7-14.6 4.8-20.9c-15.1-22.9-26.1-48.7-31.9-76.4C15.7 297.7 0 278.7 0 256s15.7-41.7 36.9-46.7c5.9-27.7 16.9-53.5 31.9-76.4C65.7 126.6 64 119.5 64 112c0-26.5 21.5-48 48-48c7.5 0 14.6 1.7 20.9 4.8c22.9-15.1 48.7-26.1 76.4-31.9C214.3 15.7 233.3 0 256 0s41.7 15.7 46.7 36.9zM304 256c0 11.6-4.1 22.3-11 30.6l88.8 191.3c3.4 7.4 2.9 16.1-1.5 23s-12 11.1-20.2 11.1H152c-8.2 0-15.8-4.2-20.2-11.1s-5-15.6-1.5-23L219 286.6c-6.9-8.3-11-19-11-30.6c0-26.5 21.5-48 48-48s48 21.5 48 48z\"]\n};\nvar faComputerSpeaker = {\n prefix: 'fas',\n iconName: 'computer-speaker',\n icon: [640, 512, [], \"f8b2\", \"M288 432V416H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H304c-10-13.4-16-30-16-48zM64 32C28.7 32 0 60.7 0 96V320c0 35.3 28.7 64 64 64H288V320H64V96H288V80c0-18 6-34.6 16-48H64zm304 0c-26.5 0-48 21.5-48 48V432c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H368zM544 320a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm-160 0a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm64-192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faSkullCow = {\n prefix: 'fas',\n iconName: 'skull-cow',\n icon: [640, 512, [], \"f8de\", \"M63.2 21.1c2.5-7.4-.7-15.4-7.5-19.1S40.3 0 35.5 6L28 15.3C9.9 38 0 66.4 0 95.5C0 166.1 57.2 224 128 224V208 192 160 144 128H105c-28.7 0-52.7-21.7-55.6-50.3c-.8-7.8 .1-15.8 2.6-23.2L63.2 21.1zM240 96c-44.2 0-80 35.8-80 80V288c0 37 25.2 68.2 59.3 77.3l27.6 110.3c5.3 21.4 24.5 36.4 46.6 36.4h53c22 0 41.2-15 46.6-36.4l27.6-110.3C454.8 356.2 480 325 480 288V176c0-44.2-35.8-80-80-80H240zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm160-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM584.4 1.9c-6.8 3.7-10 11.8-7.5 19.1L588 54.5c2.5 7.5 3.4 15.4 2.6 23.2C587.7 106.3 563.7 128 535 128H512v16 16 32 16 16c70.8 0 128-57.9 128-128.5c0-29-9.9-57.4-28-80.1L604.5 6c-4.8-6.1-13.3-7.8-20.1-4.1z\"]\n};\nvar faX = {\n prefix: 'fas',\n iconName: 'x',\n icon: [384, 512, [120], \"58\", \"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"]\n};\nvar faMagnifyingGlassDollar = {\n prefix: 'fas',\n iconName: 'magnifying-glass-dollar',\n icon: [512, 512, [\"search-dollar\"], \"f688\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM228 104c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V312c0 11 9 20 20 20s20-9 20-20V298.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V104z\"]\n};\nvar faSearchDollar = faMagnifyingGlassDollar;\nvar faUsersGear = {\n prefix: 'fas',\n iconName: 'users-gear',\n icon: [640, 512, [\"users-cog\"], \"f509\", \"M144 160A80 80 0 1 0 144 0a80 80 0 1 0 0 160zm368 0A80 80 0 1 0 512 0a80 80 0 1 0 0 160zM0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7H106.7C47.8 192 0 239.8 0 298.7zM320 320c24 0 45.9-8.8 62.7-23.3c2.5-3.7 5.2-7.3 8-10.7c2.7-3.3 5.7-6.1 9-8.3C410 262.3 416 243.9 416 224c0-53-43-96-96-96s-96 43-96 96s43 96 96 96zm65.4 60.2c-10.3-5.9-18.1-16.2-20.8-28.2H261.3C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H455.2c-2.1-5.2-3.2-10.9-3.2-16.4v-3c-1.3-.7-2.7-1.5-4-2.3l-2.6 1.5c-16.8 9.7-40.5 8-54.7-9.7c-4.5-5.6-8.6-11.5-12.4-17.6l-.1-.2-.1-.2-2.4-4.1-.1-.2-.1-.2c-3.4-6.2-6.4-12.6-9-19.3c-8.2-21.2 2.2-42.6 19-52.3l2.7-1.5c0-.8 0-1.5 0-2.3s0-1.5 0-2.3l-2.7-1.5zM533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 17.4-3.5 33.9-9.7 49c2.5 .9 4.9 2 7.1 3.3l2.6 1.5c1.3-.8 2.6-1.6 4-2.3v-3c0-19.4 13.3-39.1 35.8-42.6c7.9-1.2 16-1.9 24.2-1.9s16.3 .6 24.2 1.9c22.5 3.5 35.8 23.2 35.8 42.6v3c1.3 .7 2.7 1.5 4 2.3l2.6-1.5c16.8-9.7 40.5-8 54.7 9.7c2.3 2.8 4.5 5.8 6.6 8.7c-2.1-57.1-49-102.7-106.6-102.7zm91.3 163.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3L574.4 311c-8.9-7.6-19.1-13.6-30.4-17.6v-21c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9v21c-11.2 4-21.5 10-30.4 17.6l-18.2-10.5c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 17.9l18.2 10.5c-1 5.7-1.6 11.6-1.6 17.6s.6 11.9 1.6 17.5l-18.2 10.5c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3L449.6 457c8.9 7.6 19.2 13.6 30.4 17.6v21c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9v-21c11.2-4 21.5-10 30.4-17.6l18.2 10.5c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-18.2-10.5c1-5.7 1.6-11.6 1.6-17.5s-.6-11.9-1.6-17.6l18.2-10.5zM472 384a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n};\nvar faUsersCog = faUsersGear;\nvar faPersonMilitaryPointing = {\n prefix: 'fas',\n iconName: 'person-military-pointing',\n icon: [576, 512, [], \"e54a\", \"M246.9 14.1C234 15.2 224 26 224 39c0 13.8 11.2 25 25 25H400c8.8 0 16-7.2 16-16V17.4C416 8 408 .7 398.7 1.4L246.9 14.1zM240 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H241.6c-1 5.2-1.6 10.5-1.6 16zM72 224c-22.1 0-40 17.9-40 40s17.9 40 40 40H224v89.4L386.8 230.5c-13.3-4.3-27.3-6.5-41.6-6.5H240 72zm345.7 20.9L246.6 416H416V369.7l53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L462.3 290.8c-11.2-18.9-26.6-34.5-44.6-45.9zM224 448v32c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V448H224z\"]\n};\nvar faBuildingColumns = {\n prefix: 'fas',\n iconName: 'building-columns',\n icon: [512, 512, [\"bank\", \"institution\", \"museum\", \"university\"], \"f19c\", \"M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160v8c0 13.3 10.7 24 24 24H456c13.3 0 24-10.7 24-24v-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8-3.4-17.2-3.4-25.2 0zM128 224H64V420.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512H480c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1V224H384V416H344V224H280V416H232V224H168V416H128V224zM256 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBank = faBuildingColumns;\nvar faInstitution = faBuildingColumns;\nvar faMuseum = faBuildingColumns;\nvar faUniversity = faBuildingColumns;\nvar faCircleT = {\n prefix: 'fas',\n iconName: 'circle-t',\n icon: [512, 512, [], \"e124\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM152 144H256 360c13.3 0 24 10.7 24 24s-10.7 24-24 24H280V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V192H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faSack = {\n prefix: 'fas',\n iconName: 'sack',\n icon: [512, 512, [], \"f81c\", \"M192 96H320l47.4-71.1C374.5 14.2 366.9 0 354.1 0H157.9c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32H192c-3.8 2.5-8.1 5.3-13 8.4l0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96H416c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4z\"]\n};\nvar faGrid2 = {\n prefix: 'fas',\n iconName: 'grid-2',\n icon: [512, 512, [], \"e196\", \"M224 80c0-26.5-21.5-48-48-48H80C53.5 32 32 53.5 32 80v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80zm0 256c0-26.5-21.5-48-48-48H80c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V336zM288 80v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48zM480 336c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V336z\"]\n};\nvar faCameraCctv = {\n prefix: 'fas',\n iconName: 'camera-cctv',\n icon: [576, 512, [\"cctv\"], \"f8ac\", \"M140.3 2.5c-14.9-6.2-32.1-.3-40.1 13.7l-96 168c-4.6 8-5.5 17.5-2.5 26.2s9.5 15.7 18 19.2l158.1 65.9L137.9 400H64V384c0-17.7-14.3-32-32-32s-32 14.3-32 32v48 48c0 17.7 14.3 32 32 32s32-14.3 32-32V464h96c13.3 0 25.2-8.2 29.9-20.6l47-123.4 70.8 29.5c9.9 4.1 21.2 3 30.1-2.9l192-128c9.8-6.5 15.2-18 14.1-29.7s-8.6-21.9-19.5-26.5l-384-160zM513.4 398.6c3.9 1.8 8.4 1.9 12.5 .3s7.2-4.7 8.9-8.7l40-96c3.3-8-.3-17.2-8.3-20.8l-36.7-16.3L396.9 345.6l116.5 52.9z\"]\n};\nvar faCctv = faCameraCctv;\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M288 0c17.7 0 32 14.3 32 32V49.7C451.8 63.4 557.7 161 573.9 285.9c2 15.6-17.3 24.4-27.8 12.7C532.1 283 504.8 272 480 272c-38.7 0-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C359 299.5 326.7 272 288 272s-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C167 299.5 134.7 272 96 272c-24.8 0-52.1 11-66.1 26.7C19.4 310.4 .1 301.5 2.1 285.9C18.3 161 124.2 63.4 256 49.7V32c0-17.7 14.3-32 32-32zm0 304c12.3 0 23.5 4.6 32 12.2V430.6c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4V316.2c8.5-7.6 19.7-12.2 32-12.2z\"]\n};\nvar faTrowel = {\n prefix: 'fas',\n iconName: 'trowel',\n icon: [512, 512, [], \"e589\", \"M343.9 213.4L245.3 312l65.4 65.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9S-2.1 481.8 1.5 470.5l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L200 266.7l98.6-98.6c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"]\n};\nvar faHorizontalRule = {\n prefix: 'fas',\n iconName: 'horizontal-rule',\n icon: [640, 512, [8213], \"f86c\", \"M0 256c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faBedFront = {\n prefix: 'fas',\n iconName: 'bed-front',\n icon: [512, 512, [\"bed-alt\"], \"f8f7\", \"M32 80c0-26.5 21.5-48 48-48H432c26.5 0 48 21.5 48 48V209.1c-14.5-8.4-30.7-14-48-16.1c0-.3 0-.7 0-1V160c0-17.7-14.3-32-32-32H304c-17.7 0-32 14.3-32 32v32H240V160c0-17.7-14.3-32-32-32H112c-17.7 0-32 14.3-32 32v32c0 .3 0 .7 0 1c-17.3 2.2-33.6 7.8-48 16.1V80zM0 320c0-53 43-96 96-96H416c53 0 96 43 96 96V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V416H64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V320z\"]\n};\nvar faBedAlt = faBedFront;\nvar faD = {\n prefix: 'fas',\n iconName: 'd',\n icon: [384, 512, [100], \"44\", \"M0 96C0 60.7 28.7 32 64 32h96c123.7 0 224 100.3 224 224s-100.3 224-224 224H64c-35.3 0-64-28.7-64-64V96zm160 0H64V416h96c88.4 0 160-71.6 160-160s-71.6-160-160-160z\"]\n};\nvar faStapler = {\n prefix: 'fas',\n iconName: 'stapler',\n icon: [640, 512, [], \"e5af\", \"M640 299.3V304 432c0 26.5-21.5 48-48 48H512 448 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H448V368H96c-17.7 0-32-14.3-32-32V219.4L33.8 214C14.2 210.5 0 193.5 0 173.7c0-8.9 2.9-17.5 8.2-24.6l35.6-47.5C76.7 57.8 128.2 32 182.9 32c27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304V288L128 230.9V304H448z\"]\n};\nvar faMasksTheater = {\n prefix: 'fas',\n iconName: 'masks-theater',\n icon: [640, 512, [127917, \"theater-masks\"], \"f630\", \"M74.6 373.2c41.7 36.1 108 82.5 166.1 73.7c6.1-.9 12.1-2.5 18-4.5c-9.2-12.3-17.3-24.4-24.2-35.4c-21.9-35-28.8-75.2-25.9-113.6c-20.6 4.1-39.2 13-54.7 25.4c-6.5 5.2-16.3 1.3-14.8-7c6.4-33.5 33-60.9 68.2-66.3c2.6-.4 5.3-.7 7.9-.8l19.4-131.3c2-13.8 8-32.7 25-45.9C278.2 53.2 310.5 37 363.2 32.2c-.8-.7-1.6-1.4-2.4-2.1C340.6 14.5 288.4-11.5 175.7 5.6S20.5 63 5.7 83.9C0 91.9-.8 102 .6 111.8L24.8 276.1c5.5 37.3 21.5 72.6 49.8 97.2zm87.7-219.6c4.4-3.1 10.8-2 11.8 3.3c.1 .5 .2 1.1 .3 1.6c3.2 21.8-11.6 42-33.1 45.3s-41.5-11.8-44.7-33.5c-.1-.5-.1-1.1-.2-1.6c-.6-5.4 5.2-8.4 10.3-6.7c9 3 18.8 3.9 28.7 2.4s19.1-5.3 26.8-10.8zM261.6 390c29.4 46.9 79.5 110.9 137.6 119.7s124.5-37.5 166.1-73.7c28.3-24.5 44.3-59.8 49.8-97.2l24.2-164.3c1.4-9.8 .6-19.9-5.1-27.9c-14.8-20.9-57.3-61.2-170-78.3S299.4 77.2 279.2 92.8c-7.8 6-11.5 15.4-12.9 25.2L242.1 282.3c-5.5 37.3-.4 75.8 19.6 107.7zM404.5 235.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6c-1 5.3-7.4 6.4-11.8 3.3zm136.2 15.5c-1 5.3-7.4 6.4-11.8 3.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6zM530 350.2c-19.6 44.7-66.8 72.5-116.8 64.9s-87.1-48.2-93-96.7c-1-8.3 8.9-12.1 15.2-6.7c23.9 20.8 53.6 35.3 87 40.3s66.1 .1 94.9-12.8c7.6-3.4 16 3.2 12.6 10.9z\"]\n};\nvar faTheaterMasks = faMasksTheater;\nvar faKipSign = {\n prefix: 'fas',\n iconName: 'kip-sign',\n icon: [384, 512, [], \"e1c4\", \"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4V64c0-17.7-14.3-32-32-32S64 46.3 64 64V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V325.6L299.2 472.3c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L182.5 288H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H182.5L340.8 88.3z\"]\n};\nvar faFaceWoozy = {\n prefix: 'fas',\n iconName: 'face-woozy',\n icon: [512, 512, [], \"e3a2\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM411.3 347.3L372 386.6c-13.7 13.7-32.3 21.4-51.7 21.4c-13.7 0-27.1-3.8-38.7-11.1L267.4 388c-18.2-11.4-40.8-13.4-60.7-5.4c-30.4 12.2-64.8 8.6-92-9.6l-11.5-7.7c-7.4-4.9-9.3-14.8-4.4-22.2s14.8-9.3 22.2-4.4l11.5 7.7c18.5 12.3 41.8 14.7 62.4 6.5c29.4-11.8 62.7-8.8 89.6 8l14.2 8.9c6.5 4.1 14.1 6.2 21.8 6.2c10.9 0 21.3-4.3 29-12l39.3-39.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM200.9 98.7c7.4 4.9 9.3 14.8 4.4 22.2c-28 42-69.6 64.1-88.3 70.3c-8.4 2.8-17.4-1.7-20.2-10.1s1.7-17.4 10.1-20.2c13.4-4.5 48.5-22.9 71.7-57.7c4.9-7.4 14.8-9.3 22.2-4.4zm22.6 121.4c2.1 8.6-3.1 17.3-11.6 19.4l-64 16c-8.6 2.1-17.3-3.1-19.4-11.6s3.1-17.3 11.6-19.4l64-16c8.6-2.1 17.3 3.1 19.4 11.6zM336 272c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nvar faCloudQuestion = {\n prefix: 'fas',\n iconName: 'cloud-question',\n icon: [640, 512, [], \"e492\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm89.8-282.7l-.4 1.2c-4.4 12.5 2.1 26.2 14.6 30.6s26.2-2.1 30.6-14.6l.4-1.2c1.1-3.2 4.2-5.3 7.5-5.3h58.3c8.4 0 15.1 6.8 15.1 15.1c0 5.4-2.9 10.4-7.6 13.1l-44.3 25.4c-7.5 4.3-12.1 12.2-12.1 20.8V296c0 13.3 10.7 24 24 24c13.1 0 23.8-10.5 24-23.6l32.3-18.5c19.6-11.3 31.7-32.2 31.7-54.8c0-34.9-28.3-63.1-63.1-63.1H286.6c-23.7 0-44.8 14.9-52.8 37.3zM352 384a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faPineapple = {\n prefix: 'fas',\n iconName: 'pineapple',\n icon: [512, 512, [], \"e31f\", \"M431.5 12.1c-1.1-4.5-4.2-8.4-8.4-10.5s-9.1-2.2-13.4-.4C393.8 8.1 383 20.8 378.1 35.4L363.3 20.7c-6.2-6.2-16.4-6.2-22.6 0C325.3 36.1 317.1 56 316.2 76.2C297.3 68.2 276.9 64 256 64c-41 0-80.3 16.3-109.3 45.3L45.3 210.7C16.3 239.7 0 279 0 320s16.3 80.3 45.3 109.3l37.5 37.5c29 29 68.3 45.3 109.3 45.3s80.3-16.3 109.3-45.3L402.7 365.3c29-29 45.3-68.3 45.3-109.3c0-20.9-4.2-41.3-12.2-60.2c20.2-.9 40.1-9.1 55.5-24.5c6.2-6.2 6.2-16.4 0-22.6l-14.7-14.7c14.6-4.9 27.3-15.8 34.1-31.6c1.8-4.3 1.7-9.2-.4-13.4s-5.9-7.3-10.5-8.4l-14.3-3.6C492.4 65 496 51.4 496 37.5V32c0-8.8-7.2-16-16-16h-5.5c-13.9 0-27.5 3.6-39.4 10.4l-3.6-14.3zM164.7 212.7c6.2-6.2 16.4-6.2 22.6 0L208 233.4l20.7-20.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-32 32c-6.2 6.2-16.4 6.2-22.6 0l-32-32c-6.2-6.2-6.2-16.4 0-22.6zm-80 80c6.2-6.2 16.4-6.2 22.6 0L128 313.4l20.7-20.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-32 32c-6.2 6.2-16.4 6.2-22.6 0l-32-32c-6.2-6.2-6.2-16.4 0-22.6zm182.6 0L288 313.4l20.7-20.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-32 32c-6.2 6.2-16.4 6.2-22.6 0l-32-32c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zM164.7 395.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L208 393.4l20.7-20.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-32 32c-6.2 6.2-16.4 6.2-22.6 0l-32-32z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0V96L32 96zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm-64-64c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H224zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32c0 13.2-4 25.4-10.8 35.6c24.9 8.7 42.8 32.5 42.8 60.4c0 11.7-3.1 22.6-8.6 32H352c88.4 0 160-71.6 160-160V226.3c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64v88c0 22.1 17.9 40 40 40s40-17.9 40-40V160c0-8.8 7.2-16 16-16s16 7.2 16 16v56c0 39.8-32.2 72-72 72z\"]\n};\nvar faGalleryThumbnails = {\n prefix: 'fas',\n iconName: 'gallery-thumbnails',\n icon: [576, 512, [], \"e3aa\", \"M512 64V288H64L64 64H512zM64 0C28.7 0 0 28.7 0 64V288c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM0 448v32c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V448c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zm192-32c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V448c0-17.7-14.3-32-32-32H192zm128 32v32c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V448c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32zm192-32c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V448c0-17.7-14.3-32-32-32H512z\"]\n};\nvar faCircleJ = {\n prefix: 'fas',\n iconName: 'circle-j',\n icon: [512, 512, [], \"e112\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm80-360V288c0 53-43 96-96 96s-96-43-96-96v-8c0-13.3 10.7-24 24-24s24 10.7 24 24v8c0 26.5 21.5 48 48 48s48-21.5 48-48V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faEyes = {\n prefix: 'fas',\n iconName: 'eyes',\n icon: [640, 512, [], \"e367\", \"M96 224c-11.1 0-21.6 2.8-30.7 7.8c4-36.7 16.8-68.8 34.5-92.4C121.3 110.8 148.6 96 176 96s54.7 14.8 76.2 43.4C273.7 168.1 288 209.2 288 256s-14.3 87.9-35.8 116.6S203.4 416 176 416s-54.7-14.8-76.2-43.4c-4.9-6.5-9.4-13.6-13.4-21.3c3.1 .5 6.4 .7 9.6 .7c35.3 0 64-28.7 64-64s-28.7-64-64-64zm224-97.3c-5-9.1-10.5-17.6-16.6-25.7C272.8 60.2 228.1 32 176 32s-96.8 28.2-127.4 69C18 141.8 0 196.7 0 256s18 114.2 48.6 155c30.6 40.8 75.3 69 127.4 69s96.8-28.2 127.4-69c6-8 11.6-16.6 16.6-25.7c5 9.1 10.5 17.6 16.6 25.7c30.6 40.8 75.3 69 127.4 69s96.8-28.2 127.4-69C622 370.2 640 315.3 640 256s-18-114.2-48.6-155C560.8 60.2 516.1 32 464 32s-96.8 28.2-127.4 69c-6 8-11.6 16.6-16.6 25.7zm54.4 224.6c3.1 .5 6.4 .7 9.6 .7c35.3 0 64-28.7 64-64s-28.7-64-64-64c-11.1 0-21.6 2.8-30.7 7.8c4-36.7 16.8-68.8 34.5-92.4C409.3 110.8 436.6 96 464 96s54.7 14.8 76.2 43.4C561.7 168.1 576 209.2 576 256s-14.3 87.9-35.8 116.6S491.4 416 464 416s-54.7-14.8-76.2-43.4c-4.9-6.5-9.4-13.6-13.4-21.3z\"]\n};\nvar faHandshakeSimple = {\n prefix: 'fas',\n iconName: 'handshake-simple',\n icon: [640, 512, [129309, \"handshake-alt\"], \"f4c6\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48H48c-26.5 0-48 21.5-48 48V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z\"]\n};\nvar faHandshakeAlt = faHandshakeSimple;\nvar faPageCaretUp = {\n prefix: 'fas',\n iconName: 'page-caret-up',\n icon: [384, 512, [\"file-caret-up\"], \"e42a\", \"M320 512c35.3 0 64-28.7 64-64V138.5c0-17-6.7-33.3-18.7-45.3L290.7 18.7C278.7 6.7 262.5 0 245.5 0H64C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320zM192 192c4.5 0 8.8 1.9 11.8 5.2l75.7 82.6c14.1 15.4 3.2 40.2-17.7 40.2H122.2c-20.9 0-31.8-24.8-17.7-40.2l75.7-82.6c3-3.3 7.3-5.2 11.8-5.2z\"]\n};\nvar faFileCaretUp = faPageCaretUp;\nvar faJetFighter = {\n prefix: 'fas',\n iconName: 'jet-fighter',\n icon: [640, 512, [\"fighter-jet\"], \"f0fb\", \"M160 24c0-13.3 10.7-24 24-24H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H280L384 192H500.4c7.7 0 15.3 1.4 22.5 4.1L625 234.4c9 3.4 15 12 15 21.6s-6 18.2-15 21.6L522.9 315.9c-7.2 2.7-14.8 4.1-22.5 4.1H384L280 464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V320H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H82.7c8.5 0 16.6 3.4 22.6 9.4L160 192h32V48h-8c-13.3 0-24-10.7-24-24zM80 240c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z\"]\n};\nvar faFighterJet = faJetFighter;\nvar faComet = {\n prefix: 'fas',\n iconName: 'comet',\n icon: [512, 512, [], \"e003\", \"M299.4 75.6L493.7 .9c1.5-.6 3.2-.9 4.8-.9C506 0 512 6 512 13.5c0 1.7-.3 3.3-.9 4.8L436.4 212.6l29.3-2.3c12.8-1 21.5 12.8 15.1 24L378.6 410.7C342.3 473.4 275.4 512 203 512C90.9 512 0 421.1 0 309c0-72.4 38.6-139.4 101.3-175.7L277.7 31.2c11.1-6.5 25 2.2 24 15.1l-2.3 29.3zM192 200c-6.1 0-11.7 3.5-14.3 8.9l-29.2 59.2-65.3 9.5c-6 .9-11 5.1-12.9 10.9s-.3 12.2 4 16.4l47.2 46-11.2 65c-1 6 1.4 12.1 6.4 15.7s11.5 4.1 16.8 1.2L192 402.1l58.4 30.7c5.4 2.8 11.9 2.4 16.8-1.2s7.4-9.6 6.4-15.7l-11.2-65 47.2-46c4.4-4.3 5.9-10.6 4-16.4s-6.9-10-12.9-10.9l-65.3-9.5-29.2-59.2c-2.7-5.5-8.3-8.9-14.3-8.9z\"]\n};\nvar faSquareShareNodes = {\n prefix: 'fas',\n iconName: 'square-share-nodes',\n icon: [448, 512, [\"share-alt-square\"], \"f1e1\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM384 160c0 35.3-28.7 64-64 64c-15.4 0-29.5-5.4-40.6-14.5L194.1 256l85.3 46.5c11-9.1 25.2-14.5 40.6-14.5c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L174.5 300c-11.7 12.3-28.2 20-46.5 20c-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3c0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nvar faShareAltSquare = faSquareShareNodes;\nvar faShieldKeyhole = {\n prefix: 'fas',\n iconName: 'shield-keyhole',\n icon: [512, 512, [], \"e248\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM312 208c0 22.3-13.1 41.6-32 50.6V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V258.6c-18.9-9-32-28.3-32-50.6c0-30.9 25.1-56 56-56s56 25.1 56 56z\"]\n};\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M24 32C10.7 32 0 42.7 0 56V456c0 13.3 10.7 24 24 24H40c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H24zm88 0c-8.8 0-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16zm72 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H184zm96 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H280zM448 56V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H472c-13.3 0-24 10.7-24 24zm-64-8V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faPlusMinus = {\n prefix: 'fas',\n iconName: 'plus-minus',\n icon: [384, 512, [], \"e43c\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V144H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H160V320c0 17.7 14.3 32 32 32s32-14.3 32-32V208H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V32zM0 480c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faSquareSlidersVertical = {\n prefix: 'fas',\n iconName: 'square-sliders-vertical',\n icon: [448, 512, [\"sliders-v-square\"], \"f3f2\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm144 0c-17.7 0-32 14.3-32 32v32H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V384c0 17.7 14.3 32 32 32s32-14.3 32-32V224h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H176V128c0-17.7-14.3-32-32-32zm192 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V288H256c-17.7 0-32 14.3-32 32s14.3 32 32 32h16v32c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H336V128z\"]\n};\nvar faSlidersVSquare = faSquareSlidersVertical;\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [\"video-camera\"], \"f03d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2V384c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V320 192 174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z\"]\n};\nvar faVideoCamera = faVideo;\nvar faMessageMiddle = {\n prefix: 'fas',\n iconName: 'message-middle',\n icon: [512, 512, [\"comment-middle-alt\"], \"e1e1\", \"M343.5 416H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H168.5l75.2 90.2c3 3.6 7.5 5.8 12.3 5.8s9.3-2.1 12.3-5.8L343.5 416z\"]\n};\nvar faCommentMiddleAlt = faMessageMiddle;\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [127891, \"mortar-board\"], \"f19d\", \"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"]\n};\nvar faMortarBoard = faGraduationCap;\nvar faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M224 24V80H168c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h56v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176h56c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H320V24c0-13.3-10.7-24-24-24H248c-13.3 0-24 10.7-24 24zM559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2l.9 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nvar faPersonCircleCheck = {\n prefix: 'fas',\n iconName: 'person-circle-check',\n icon: [576, 512, [], \"e53e\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faSquareZ = {\n prefix: 'fas',\n iconName: 'square-z',\n icon: [448, 512, [], \"e288\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm72 96H312c9.3 0 17.8 5.4 21.8 13.9s2.6 18.5-3.5 25.6L187.7 336H312c13.3 0 24 10.7 24 24s-10.7 24-24 24H136c-9.3 0-17.8-5.4-21.8-13.9s-2.6-18.5 3.5-25.6L260.3 176H136c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMessageText = {\n prefix: 'fas',\n iconName: 'message-text',\n icon: [512, 512, [\"comment-alt-text\"], \"e1e6\", \"M0 64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L185.6 508.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V416H64c-35.3 0-64-28.7-64-64V64zm168 48c-13.3 0-24 10.7-24 24s10.7 24 24 24h64V296c0 13.3 10.7 24 24 24s24-10.7 24-24V160h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H256 168z\"]\n};\nvar faCommentAltText = faMessageText;\nvar faTurnUp = {\n prefix: 'fas',\n iconName: 'turn-up',\n icon: [384, 512, [10548, \"level-up-alt\"], \"f3bf\", \"M350 177.5c3.8-8.8 2-19-4.6-26l-136-144C204.9 2.7 198.6 0 192 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26s12.5 14.5 22 14.5h88l0 192c0 17.7-14.3 32-32 32H32c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32l80 0c70.7 0 128-57.3 128-128l0-192h88c9.6 0 18.2-5.7 22-14.5z\"]\n};\nvar faLevelUpAlt = faTurnUp;\nvar icons = {\n fa0: fa0,\n fa1: fa1,\n fa2: fa2,\n fa3: fa3,\n fa4: fa4,\n fa5: fa5,\n fa6: fa6,\n fa7: fa7,\n fa8: fa8,\n fa9: fa9,\n faFillDrip: faFillDrip,\n faArrowsToCircle: faArrowsToCircle,\n faCircleChevronRight: faCircleChevronRight,\n faChevronCircleRight: faChevronCircleRight,\n faWagonCovered: faWagonCovered,\n faLineHeight: faLineHeight,\n faBagel: faBagel,\n faTransporter7: faTransporter7,\n faAt: faAt,\n faRectanglesMixed: faRectanglesMixed,\n faPhoneArrowUpRight: faPhoneArrowUpRight,\n faPhoneArrowUp: faPhoneArrowUp,\n faPhoneOutgoing: faPhoneOutgoing,\n faTrashCan: faTrashCan,\n faTrashAlt: faTrashAlt,\n faCircleL: faCircleL,\n faHeadSideGoggles: faHeadSideGoggles,\n faHeadVr: faHeadVr,\n faTextHeight: faTextHeight,\n faUserXmark: faUserXmark,\n faUserTimes: faUserTimes,\n faFaceHandYawn: faFaceHandYawn,\n faGaugeSimpleMin: faGaugeSimpleMin,\n faTachometerSlowest: faTachometerSlowest,\n faStethoscope: faStethoscope,\n faCoffin: faCoffin,\n faMessage: faMessage,\n faCommentAlt: faCommentAlt,\n faSalad: faSalad,\n faBowlSalad: faBowlSalad,\n faInfo: faInfo,\n faRobotAstromech: faRobotAstromech,\n faRingDiamond: faRingDiamond,\n faFonduePot: faFonduePot,\n faTheta: faTheta,\n faFaceHandPeeking: faFaceHandPeeking,\n faSquareUser: faSquareUser,\n faDownLeftAndUpRightToCenter: faDownLeftAndUpRightToCenter,\n faCompressAlt: faCompressAlt,\n faExplosion: faExplosion,\n faFileLines: faFileLines,\n faFileAlt: faFileAlt,\n faFileText: faFileText,\n faWaveSquare: faWaveSquare,\n faRing: faRing,\n faBuildingUn: faBuildingUn,\n faDiceThree: faDiceThree,\n faTirePressureWarning: faTirePressureWarning,\n faWifiFair: faWifiFair,\n faWifi2: faWifi2,\n faCalendarDays: faCalendarDays,\n faCalendarAlt: faCalendarAlt,\n faMp3Player: faMp3Player,\n faAnchorCircleCheck: faAnchorCircleCheck,\n faTally4: faTally4,\n faRectangleHistory: faRectangleHistory,\n faBuildingCircleArrowRight: faBuildingCircleArrowRight,\n faVolleyball: faVolleyball,\n faVolleyballBall: faVolleyballBall,\n faSunHaze: faSunHaze,\n faTextSize: faTextSize,\n faUfo: faUfo,\n faFork: faFork,\n faUtensilFork: faUtensilFork,\n faArrowsUpToLine: faArrowsUpToLine,\n faMobileSignal: faMobileSignal,\n faBarcodeScan: faBarcodeScan,\n faSortDown: faSortDown,\n faSortDesc: faSortDesc,\n faFolderArrowDown: faFolderArrowDown,\n faFolderDownload: faFolderDownload,\n faCircleMinus: faCircleMinus,\n faMinusCircle: faMinusCircle,\n faFaceIcicles: faFaceIcicles,\n faShovel: faShovel,\n faDoorOpen: faDoorOpen,\n faFilms: faFilms,\n faRightFromBracket: faRightFromBracket,\n faSignOutAlt: faSignOutAlt,\n faFaceGlasses: faFaceGlasses,\n faNfc: faNfc,\n faAtom: faAtom,\n faSoap: faSoap,\n faIcons: faIcons,\n faHeartMusicCameraBolt: faHeartMusicCameraBolt,\n faMicrophoneLinesSlash: faMicrophoneLinesSlash,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faClosedCaptioningSlash: faClosedCaptioningSlash,\n faCalculatorSimple: faCalculatorSimple,\n faCalculatorAlt: faCalculatorAlt,\n faBridgeCircleCheck: faBridgeCircleCheck,\n faSlidersUp: faSlidersUp,\n faSlidersV: faSlidersV,\n faLocationMinus: faLocationMinus,\n faMapMarkerMinus: faMapMarkerMinus,\n faPumpMedical: faPumpMedical,\n faFingerprint: faFingerprint,\n faSkiBoot: faSkiBoot,\n faStandardDefinition: faStandardDefinition,\n faRectangleSd: faRectangleSd,\n faH1: faH1,\n faHandPointRight: faHandPointRight,\n faMagnifyingGlassLocation: faMagnifyingGlassLocation,\n faSearchLocation: faSearchLocation,\n faMessageBot: faMessageBot,\n faForwardStep: faForwardStep,\n faStepForward: faStepForward,\n faFaceSmileBeam: faFaceSmileBeam,\n faSmileBeam: faSmileBeam,\n faLightCeiling: faLightCeiling,\n faMessageExclamation: faMessageExclamation,\n faCommentAltExclamation: faCommentAltExclamation,\n faBowlScoop: faBowlScoop,\n faBowlShavedIce: faBowlShavedIce,\n faSquareX: faSquareX,\n faUtilityPoleDouble: faUtilityPoleDouble,\n faFlagCheckered: faFlagCheckered,\n faChevronsUp: faChevronsUp,\n faChevronDoubleUp: faChevronDoubleUp,\n faFootball: faFootball,\n faFootballBall: faFootballBall,\n faUserVneck: faUserVneck,\n faSchoolCircleExclamation: faSchoolCircleExclamation,\n faCrop: faCrop,\n faAnglesDown: faAnglesDown,\n faAngleDoubleDown: faAngleDoubleDown,\n faUsersRectangle: faUsersRectangle,\n faPeopleRoof: faPeopleRoof,\n faSquareArrowRight: faSquareArrowRight,\n faArrowSquareRight: faArrowSquareRight,\n faLocationPlus: faLocationPlus,\n faMapMarkerPlus: faMapMarkerPlus,\n faLightbulbExclamationOn: faLightbulbExclamationOn,\n faPeopleLine: faPeopleLine,\n faBeerMugEmpty: faBeerMugEmpty,\n faBeer: faBeer,\n faCrateEmpty: faCrateEmpty,\n faDiagramPredecessor: faDiagramPredecessor,\n faTransporter: faTransporter,\n faCalendarCircleUser: faCalendarCircleUser,\n faArrowUpLong: faArrowUpLong,\n faLongArrowUp: faLongArrowUp,\n faPersonCarryBox: faPersonCarryBox,\n faPersonCarry: faPersonCarry,\n faFireFlameSimple: faFireFlameSimple,\n faBurn: faBurn,\n faPerson: faPerson,\n faMale: faMale,\n faLaptop: faLaptop,\n faFileCsv: faFileCsv,\n faMenorah: faMenorah,\n faUnion: faUnion,\n faChevronsLeft: faChevronsLeft,\n faChevronDoubleLeft: faChevronDoubleLeft,\n faCircleHeart: faCircleHeart,\n faHeartCircle: faHeartCircle,\n faTruckPlane: faTruckPlane,\n faRecordVinyl: faRecordVinyl,\n faBringForward: faBringForward,\n faSquareP: faSquareP,\n faFaceGrinStars: faFaceGrinStars,\n faGrinStars: faGrinStars,\n faSigma: faSigma,\n faCameraMovie: faCameraMovie,\n faBong: faBong,\n faClarinet: faClarinet,\n faTruckFlatbed: faTruckFlatbed,\n faSpaghettiMonsterFlying: faSpaghettiMonsterFlying,\n faPastafarianism: faPastafarianism,\n faArrowDownUpAcrossLine: faArrowDownUpAcrossLine,\n faLeafHeart: faLeafHeart,\n faHouseBuilding: faHouseBuilding,\n faCheeseSwiss: faCheeseSwiss,\n faSpoon: faSpoon,\n faUtensilSpoon: faUtensilSpoon,\n faJarWheat: faJarWheat,\n faEnvelopesBulk: faEnvelopesBulk,\n faMailBulk: faMailBulk,\n faFileCircleExclamation: faFileCircleExclamation,\n faBowArrow: faBowArrow,\n faCartXmark: faCartXmark,\n faHexagonXmark: faHexagonXmark,\n faTimesHexagon: faTimesHexagon,\n faXmarkHexagon: faXmarkHexagon,\n faCircleH: faCircleH,\n faHospitalSymbol: faHospitalSymbol,\n faMerge: faMerge,\n faPager: faPager,\n faCartMinus: faCartMinus,\n faAddressBook: faAddressBook,\n faContactBook: faContactBook,\n faPanFrying: faPanFrying,\n faGrid: faGrid,\n faGrid3: faGrid3,\n faFootballHelmet: faFootballHelmet,\n faHandLove: faHandLove,\n faTrees: faTrees,\n faStrikethrough: faStrikethrough,\n faPage: faPage,\n faK: faK,\n faDiagramPrevious: faDiagramPrevious,\n faGaugeMin: faGaugeMin,\n faTachometerAltSlowest: faTachometerAltSlowest,\n faFolderGrid: faFolderGrid,\n faEggplant: faEggplant,\n faRam: faRam,\n faLandmarkFlag: faLandmarkFlag,\n faLips: faLips,\n faPencil: faPencil,\n faPencilAlt: faPencilAlt,\n faBackward: faBackward,\n faCaretRight: faCaretRight,\n faComments: faComments,\n faPaste: faPaste,\n faFileClipboard: faFileClipboard,\n faDesktopArrowDown: faDesktopArrowDown,\n faCodePullRequest: faCodePullRequest,\n faPumpkin: faPumpkin,\n faClipboardList: faClipboardList,\n faPenField: faPenField,\n faBlueberries: faBlueberries,\n faTruckRampBox: faTruckRampBox,\n faTruckLoading: faTruckLoading,\n faNote: faNote,\n faArrowDownToSquare: faArrowDownToSquare,\n faUserCheck: faUserCheck,\n faCloudXmark: faCloudXmark,\n faVialVirus: faVialVirus,\n faBookBlank: faBookBlank,\n faBookAlt: faBookAlt,\n faGolfFlagHole: faGolfFlagHole,\n faMessageArrowDown: faMessageArrowDown,\n faCommentAltArrowDown: faCommentAltArrowDown,\n faFaceUnamused: faFaceUnamused,\n faSheetPlastic: faSheetPlastic,\n faCircle9: faCircle9,\n faBlog: faBlog,\n faUserNinja: faUserNinja,\n faPencilSlash: faPencilSlash,\n faBowlingPins: faBowlingPins,\n faPersonArrowUpFromLine: faPersonArrowUpFromLine,\n faDownRight: faDownRight,\n faScrollTorah: faScrollTorah,\n faTorah: faTorah,\n faWebhook: faWebhook,\n faBlindsOpen: faBlindsOpen,\n faFence: faFence,\n faUp: faUp,\n faArrowAltUp: faArrowAltUp,\n faBroomBall: faBroomBall,\n faQuidditch: faQuidditch,\n faQuidditchBroomBall: faQuidditchBroomBall,\n faDrumstick: faDrumstick,\n faSquareV: faSquareV,\n faFaceAwesome: faFaceAwesome,\n faGaveDandy: faGaveDandy,\n faDialOff: faDialOff,\n faToggleOff: faToggleOff,\n faFaceSmileHorns: faFaceSmileHorns,\n faBoxArchive: faBoxArchive,\n faArchive: faArchive,\n faGrapes: faGrapes,\n faPersonDrowning: faPersonDrowning,\n faDialMax: faDialMax,\n faCircleM: faCircleM,\n faCalendarImage: faCalendarImage,\n faCircleCaretDown: faCircleCaretDown,\n faCaretCircleDown: faCaretCircleDown,\n faArrowDown91: faArrowDown91,\n faSortNumericDesc: faSortNumericDesc,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faFaceGrinTongueSquint: faFaceGrinTongueSquint,\n faGrinTongueSquint: faGrinTongueSquint,\n faShishKebab: faShishKebab,\n faSprayCan: faSprayCan,\n faAlarmSnooze: faAlarmSnooze,\n faScarecrow: faScarecrow,\n faTruckMonster: faTruckMonster,\n faGiftCard: faGiftCard,\n faW: faW,\n faCodePullRequestDraft: faCodePullRequestDraft,\n faSquareB: faSquareB,\n faElephant: faElephant,\n faEarthAfrica: faEarthAfrica,\n faGlobeAfrica: faGlobeAfrica,\n faRainbow: faRainbow,\n faCircleNotch: faCircleNotch,\n faTabletScreenButton: faTabletScreenButton,\n faTabletAlt: faTabletAlt,\n faPaw: faPaw,\n faMessageQuestion: faMessageQuestion,\n faCloud: faCloud,\n faTrowelBricks: faTrowelBricks,\n faSquare3: faSquare3,\n faFaceFlushed: faFaceFlushed,\n faFlushed: faFlushed,\n faHospitalUser: faHospitalUser,\n faMicrowave: faMicrowave,\n faChfSign: faChfSign,\n faTentArrowLeftRight: faTentArrowLeftRight,\n faCartCircleArrowUp: faCartCircleArrowUp,\n faTrashClock: faTrashClock,\n faGavel: faGavel,\n faLegal: faLegal,\n faSprinklerCeiling: faSprinklerCeiling,\n faBrowsers: faBrowsers,\n faTrillium: faTrillium,\n faMusicSlash: faMusicSlash,\n faTruckRamp: faTruckRamp,\n faBinoculars: faBinoculars,\n faMicrophoneSlash: faMicrophoneSlash,\n faBoxTissue: faBoxTissue,\n faCircleC: faCircleC,\n faStarChristmas: faStarChristmas,\n faChartBullet: faChartBullet,\n faMotorcycle: faMotorcycle,\n faTreeChristmas: faTreeChristmas,\n faTireFlat: faTireFlat,\n faSunglasses: faSunglasses,\n faBadge: faBadge,\n faMessagePen: faMessagePen,\n faCommentAltEdit: faCommentAltEdit,\n faMessageEdit: faMessageEdit,\n faBellConcierge: faBellConcierge,\n faConciergeBell: faConciergeBell,\n faPenRuler: faPenRuler,\n faPencilRuler: faPencilRuler,\n faArrowProgress: faArrowProgress,\n faChessRookPiece: faChessRookPiece,\n faChessRookAlt: faChessRookAlt,\n faSquareRoot: faSquareRoot,\n faAlbumCollectionCirclePlus: faAlbumCollectionCirclePlus,\n faPeopleArrows: faPeopleArrows,\n faPeopleArrowsLeftRight: faPeopleArrowsLeftRight,\n faFaceAngryHorns: faFaceAngryHorns,\n faMarsAndVenusBurst: faMarsAndVenusBurst,\n faTombstone: faTombstone,\n faSquareCaretRight: faSquareCaretRight,\n faCaretSquareRight: faCaretSquareRight,\n faScissors: faScissors,\n faCut: faCut,\n faListMusic: faListMusic,\n faSunPlantWilt: faSunPlantWilt,\n faToiletsPortable: faToiletsPortable,\n faHockeyPuck: faHockeyPuck,\n faMustache: faMustache,\n faHyphen: faHyphen,\n faTable: faTable,\n faUserChef: faUserChef,\n faMessageImage: faMessageImage,\n faCommentAltImage: faCommentAltImage,\n faUsersMedical: faUsersMedical,\n faSensorTriangleExclamation: faSensorTriangleExclamation,\n faSensorAlert: faSensorAlert,\n faMagnifyingGlassArrowRight: faMagnifyingGlassArrowRight,\n faTachographDigital: faTachographDigital,\n faDigitalTachograph: faDigitalTachograph,\n faFaceMask: faFaceMask,\n faPickleball: faPickleball,\n faStarSharpHalf: faStarSharpHalf,\n faUsersSlash: faUsersSlash,\n faClover: faClover,\n faMeat: faMeat,\n faReply: faReply,\n faMailReply: faMailReply,\n faStarAndCrescent: faStarAndCrescent,\n faEmptySet: faEmptySet,\n faHouseFire: faHouseFire,\n faSquareMinus: faSquareMinus,\n faMinusSquare: faMinusSquare,\n faHelicopter: faHelicopter,\n faBird: faBird,\n faCompass: faCompass,\n faSquareCaretDown: faSquareCaretDown,\n faCaretSquareDown: faCaretSquareDown,\n faHeartHalfStroke: faHeartHalfStroke,\n faHeartHalfAlt: faHeartHalfAlt,\n faFileCircleQuestion: faFileCircleQuestion,\n faLaptopCode: faLaptopCode,\n faJoystick: faJoystick,\n faGrillFire: faGrillFire,\n faRectangleVerticalHistory: faRectangleVerticalHistory,\n faSwatchbook: faSwatchbook,\n faPrescriptionBottle: faPrescriptionBottle,\n faBars: faBars,\n faNavicon: faNavicon,\n faKeyboardLeft: faKeyboardLeft,\n faPeopleGroup: faPeopleGroup,\n faHourglassEnd: faHourglassEnd,\n faHourglass3: faHourglass3,\n faHeartCrack: faHeartCrack,\n faHeartBroken: faHeartBroken,\n faFaceBeamHandOverMouth: faFaceBeamHandOverMouth,\n faDropletPercent: faDropletPercent,\n faHumidity: faHumidity,\n faSquareUpRight: faSquareUpRight,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faFaceKissBeam: faFaceKissBeam,\n faKissBeam: faKissBeam,\n faCorn: faCorn,\n faRollerCoaster: faRollerCoaster,\n faPhotoFilmMusic: faPhotoFilmMusic,\n faRadar: faRadar,\n faSickle: faSickle,\n faFilm: faFilm,\n faCoconut: faCoconut,\n faRulerHorizontal: faRulerHorizontal,\n faShieldCross: faShieldCross,\n faCassetteTape: faCassetteTape,\n faSquareTerminal: faSquareTerminal,\n faPeopleRobbery: faPeopleRobbery,\n faLightbulb: faLightbulb,\n faCaretLeft: faCaretLeft,\n faCommentMiddle: faCommentMiddle,\n faTrashCanList: faTrashCanList,\n faBlock: faBlock,\n faCircleExclamation: faCircleExclamation,\n faExclamationCircle: faExclamationCircle,\n faSchoolCircleXmark: faSchoolCircleXmark,\n faArrowRightFromBracket: faArrowRightFromBracket,\n faSignOut: faSignOut,\n faFaceFrownSlight: faFaceFrownSlight,\n faCircleChevronDown: faCircleChevronDown,\n faChevronCircleDown: faChevronCircleDown,\n faSidebarFlip: faSidebarFlip,\n faUnlockKeyhole: faUnlockKeyhole,\n faUnlockAlt: faUnlockAlt,\n faTemperatureList: faTemperatureList,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faHeadphonesSimple: faHeadphonesSimple,\n faHeadphonesAlt: faHeadphonesAlt,\n faSitemap: faSitemap,\n faPipeSection: faPipeSection,\n faSpaceStationMoonConstruction: faSpaceStationMoonConstruction,\n faSpaceStationMoonAlt: faSpaceStationMoonAlt,\n faCircleDollarToSlot: faCircleDollarToSlot,\n faDonate: faDonate,\n faMemory: faMemory,\n faFaceSleeping: faFaceSleeping,\n faRoadSpikes: faRoadSpikes,\n faFireBurner: faFireBurner,\n faSquirrel: faSquirrel,\n faArrowUpToLine: faArrowUpToLine,\n faArrowToTop: faArrowToTop,\n faFlag: faFlag,\n faFaceCowboyHat: faFaceCowboyHat,\n faHanukiah: faHanukiah,\n faChartScatter3d: faChartScatter3d,\n faDisplayChartUp: faDisplayChartUp,\n faSquareCode: faSquareCode,\n faFeather: faFeather,\n faVolumeLow: faVolumeLow,\n faVolumeDown: faVolumeDown,\n faXmarkToSlot: faXmarkToSlot,\n faTimesToSlot: faTimesToSlot,\n faVoteNay: faVoteNay,\n faBoxTaped: faBoxTaped,\n faBoxAlt: faBoxAlt,\n faCommentSlash: faCommentSlash,\n faSwords: faSwords,\n faCloudSunRain: faCloudSunRain,\n faAlbum: faAlbum,\n faCircleN: faCircleN,\n faCompress: faCompress,\n faWheatAwn: faWheatAwn,\n faWheatAlt: faWheatAlt,\n faAnkh: faAnkh,\n faHandsHoldingChild: faHandsHoldingChild,\n faAsterisk: faAsterisk,\n faKeySkeletonLeftRight: faKeySkeletonLeftRight,\n faCommentLines: faCommentLines,\n faLuchadorMask: faLuchadorMask,\n faLuchador: faLuchador,\n faMaskLuchador: faMaskLuchador,\n faSquareCheck: faSquareCheck,\n faCheckSquare: faCheckSquare,\n faShredder: faShredder,\n faBookOpenCover: faBookOpenCover,\n faBookOpenAlt: faBookOpenAlt,\n faSandwich: faSandwich,\n faPesetaSign: faPesetaSign,\n faSquareParkingSlash: faSquareParkingSlash,\n faParkingSlash: faParkingSlash,\n faTrainTunnel: faTrainTunnel,\n faHeading: faHeading,\n faHeader: faHeader,\n faGhost: faGhost,\n faFaceAnguished: faFaceAnguished,\n faHockeySticks: faHockeySticks,\n faAbacus: faAbacus,\n faFilmSimple: faFilmSimple,\n faFilmAlt: faFilmAlt,\n faList: faList,\n faListSquares: faListSquares,\n faTreePalm: faTreePalm,\n faSquarePhoneFlip: faSquarePhoneFlip,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faCartPlus: faCartPlus,\n faGamepad: faGamepad,\n faBorderCenterV: faBorderCenterV,\n faCircleDot: faCircleDot,\n faDotCircle: faDotCircle,\n faClipboardMedical: faClipboardMedical,\n faFaceDizzy: faFaceDizzy,\n faDizzy: faDizzy,\n faEgg: faEgg,\n faUpToLine: faUpToLine,\n faArrowAltToTop: faArrowAltToTop,\n faHouseMedicalCircleXmark: faHouseMedicalCircleXmark,\n faWatchFitness: faWatchFitness,\n faClockNineThirty: faClockNineThirty,\n faCampground: faCampground,\n faFolderPlus: faFolderPlus,\n faJug: faJug,\n faFutbol: faFutbol,\n faFutbolBall: faFutbolBall,\n faSoccerBall: faSoccerBall,\n faSnowBlowing: faSnowBlowing,\n faPaintbrush: faPaintbrush,\n faPaintBrush: faPaintBrush,\n faLock: faLock,\n faArrowDownFromLine: faArrowDownFromLine,\n faArrowFromTop: faArrowFromTop,\n faGasPump: faGasPump,\n faSignalBarsSlash: faSignalBarsSlash,\n faSignalAltSlash: faSignalAltSlash,\n faMonkey: faMonkey,\n faRectanglePro: faRectanglePro,\n faPro: faPro,\n faHouseNight: faHouseNight,\n faHotTubPerson: faHotTubPerson,\n faHotTub: faHotTub,\n faBlanket: faBlanket,\n faMapLocation: faMapLocation,\n faMapMarked: faMapMarked,\n faHouseFloodWater: faHouseFloodWater,\n faCommentsQuestionCheck: faCommentsQuestionCheck,\n faTree: faTree,\n faArrowsCross: faArrowsCross,\n faBackpack: faBackpack,\n faSquareSmall: faSquareSmall,\n faFolderArrowUp: faFolderArrowUp,\n faFolderUpload: faFolderUpload,\n faBridgeLock: faBridgeLock,\n faCrosshairsSimple: faCrosshairsSimple,\n faSackDollar: faSackDollar,\n faPenToSquare: faPenToSquare,\n faEdit: faEdit,\n faSquareSliders: faSquareSliders,\n faSlidersHSquare: faSlidersHSquare,\n faCarSide: faCarSide,\n faMessageMiddleTop: faMessageMiddleTop,\n faCommentMiddleTopAlt: faCommentMiddleTopAlt,\n faLightbulbOn: faLightbulbOn,\n faKnife: faKnife,\n faUtensilKnife: faUtensilKnife,\n faShareNodes: faShareNodes,\n faShareAlt: faShareAlt,\n faDisplayChartUpCircleDollar: faDisplayChartUpCircleDollar,\n faWaveSine: faWaveSine,\n faHeartCircleMinus: faHeartCircleMinus,\n faCircleW: faCircleW,\n faCircleCalendar: faCircleCalendar,\n faCalendarCircle: faCalendarCircle,\n faHourglassHalf: faHourglassHalf,\n faHourglass2: faHourglass2,\n faMicroscope: faMicroscope,\n faSunset: faSunset,\n faSink: faSink,\n faCalendarExclamation: faCalendarExclamation,\n faTruckContainerEmpty: faTruckContainerEmpty,\n faHandHeart: faHandHeart,\n faBagShopping: faBagShopping,\n faShoppingBag: faShoppingBag,\n faArrowDownZA: faArrowDownZA,\n faSortAlphaDesc: faSortAlphaDesc,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faMitten: faMitten,\n faReplyClock: faReplyClock,\n faReplyTime: faReplyTime,\n faPersonRays: faPersonRays,\n faRight: faRight,\n faArrowAltRight: faArrowAltRight,\n faCircleF: faCircleF,\n faUsers: faUsers,\n faFacePleading: faFacePleading,\n faEyeSlash: faEyeSlash,\n faFlaskVial: faFlaskVial,\n faPoliceBox: faPoliceBox,\n faCucumber: faCucumber,\n faHeadSideBrain: faHeadSideBrain,\n faHand: faHand,\n faHandPaper: faHandPaper,\n faPersonBikingMountain: faPersonBikingMountain,\n faBikingMountain: faBikingMountain,\n faUtensilsSlash: faUtensilsSlash,\n faPrintMagnifyingGlass: faPrintMagnifyingGlass,\n faPrintSearch: faPrintSearch,\n faFolderBookmark: faFolderBookmark,\n faOm: faOm,\n faPi: faPi,\n faFlaskRoundPotion: faFlaskRoundPotion,\n faFlaskPotion: faFlaskPotion,\n faFaceShush: faFaceShush,\n faWorm: faWorm,\n faHouseCircleXmark: faHouseCircleXmark,\n faPlug: faPlug,\n faCalendarCircleExclamation: faCalendarCircleExclamation,\n faSquareI: faSquareI,\n faChevronUp: faChevronUp,\n faFaceSaluting: faFaceSaluting,\n faGaugeSimpleLow: faGaugeSimpleLow,\n faTachometerSlow: faTachometerSlow,\n faFacePersevering: faFacePersevering,\n faCircleCamera: faCircleCamera,\n faCameraCircle: faCameraCircle,\n faHandSpock: faHandSpock,\n faSpiderWeb: faSpiderWeb,\n faCircleMicrophone: faCircleMicrophone,\n faMicrophoneCircle: faMicrophoneCircle,\n faBookArrowUp: faBookArrowUp,\n faPopsicle: faPopsicle,\n faCommand: faCommand,\n faBlinds: faBlinds,\n faStopwatch: faStopwatch,\n faSaxophone: faSaxophone,\n faSquare2: faSquare2,\n faFieldHockeyStickBall: faFieldHockeyStickBall,\n faFieldHockey: faFieldHockey,\n faArrowUpSquareTriangle: faArrowUpSquareTriangle,\n faSortShapesUpAlt: faSortShapesUpAlt,\n faFaceScream: faFaceScream,\n faSquareM: faSquareM,\n faCameraWeb: faCameraWeb,\n faWebcam: faWebcam,\n faCommentArrowDown: faCommentArrowDown,\n faLightbulbCfl: faLightbulbCfl,\n faWindowFrameOpen: faWindowFrameOpen,\n faFaceKiss: faFaceKiss,\n faKiss: faKiss,\n faBridgeCircleXmark: faBridgeCircleXmark,\n faPeriod: faPeriod,\n faFaceGrinTongue: faFaceGrinTongue,\n faGrinTongue: faGrinTongue,\n faUpToDottedLine: faUpToDottedLine,\n faThoughtBubble: faThoughtBubble,\n faSkeletonRibs: faSkeletonRibs,\n faRaygun: faRaygun,\n faFlute: faFlute,\n faAcorn: faAcorn,\n faVideoArrowUpRight: faVideoArrowUpRight,\n faGrateDroplet: faGrateDroplet,\n faSealExclamation: faSealExclamation,\n faChessBishop: faChessBishop,\n faMessageSms: faMessageSms,\n faCoffeeBeans: faCoffeeBeans,\n faHatWitch: faHatWitch,\n faFaceGrinWink: faFaceGrinWink,\n faGrinWink: faGrinWink,\n faClockThreeThirty: faClockThreeThirty,\n faEarDeaf: faEarDeaf,\n faDeaf: faDeaf,\n faDeafness: faDeafness,\n faHardOfHearing: faHardOfHearing,\n faAlarmClock: faAlarmClock,\n faEclipse: faEclipse,\n faFaceRelieved: faFaceRelieved,\n faRoadCircleCheck: faRoadCircleCheck,\n faDiceFive: faDiceFive,\n faOctagonMinus: faOctagonMinus,\n faMinusOctagon: faMinusOctagon,\n faSquareRss: faSquareRss,\n faRssSquare: faRssSquare,\n faFaceZany: faFaceZany,\n faTricycle: faTricycle,\n faLandMineOn: faLandMineOn,\n faSquareArrowUpLeft: faSquareArrowUpLeft,\n faICursor: faICursor,\n faChartMixedUpCircleDollar: faChartMixedUpCircleDollar,\n faSaltShaker: faSaltShaker,\n faStamp: faStamp,\n faFilePlus: faFilePlus,\n faDrawSquare: faDrawSquare,\n faToiletPaperUnderSlash: faToiletPaperUnderSlash,\n faToiletPaperReverseSlash: faToiletPaperReverseSlash,\n faStairs: faStairs,\n faDroneFront: faDroneFront,\n faDroneAlt: faDroneAlt,\n faGlassEmpty: faGlassEmpty,\n faDialHigh: faDialHigh,\n faUserHelmetSafety: faUserHelmetSafety,\n faUserConstruction: faUserConstruction,\n faUserHardHat: faUserHardHat,\n faI: faI,\n faHryvniaSign: faHryvniaSign,\n faHryvnia: faHryvnia,\n faArrowDownLeftAndArrowUpRightToCenter: faArrowDownLeftAndArrowUpRightToCenter,\n faPills: faPills,\n faFaceGrinWide: faFaceGrinWide,\n faGrinAlt: faGrinAlt,\n faTooth: faTooth,\n faBasketballHoop: faBasketballHoop,\n faObjectsAlignBottom: faObjectsAlignBottom,\n faV: faV,\n faSparkles: faSparkles,\n faSquid: faSquid,\n faLeafyGreen: faLeafyGreen,\n faCircleArrowUpRight: faCircleArrowUpRight,\n faCalendars: faCalendars,\n faBangladeshiTakaSign: faBangladeshiTakaSign,\n faBicycle: faBicycle,\n faHammerWar: faHammerWar,\n faCircleD: faCircleD,\n faSpiderBlackWidow: faSpiderBlackWidow,\n faStaffSnake: faStaffSnake,\n faRodAsclepius: faRodAsclepius,\n faRodSnake: faRodSnake,\n faStaffAesculapius: faStaffAesculapius,\n faPear: faPear,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faTriangle: faTriangle,\n faApartment: faApartment,\n faTruckMedical: faTruckMedical,\n faAmbulance: faAmbulance,\n faPepper: faPepper,\n faPiano: faPiano,\n faGunSquirt: faGunSquirt,\n faWheatAwnCircleExclamation: faWheatAwnCircleExclamation,\n faSnowman: faSnowman,\n faUserAlien: faUserAlien,\n faShieldCheck: faShieldCheck,\n faMortarPestle: faMortarPestle,\n faRoadBarrier: faRoadBarrier,\n faChartCandlestick: faChartCandlestick,\n faBriefcaseBlank: faBriefcaseBlank,\n faSchool: faSchool,\n faIgloo: faIgloo,\n faBracketRound: faBracketRound,\n faParenthesis: faParenthesis,\n faJoint: faJoint,\n faHorseSaddle: faHorseSaddle,\n faMugMarshmallows: faMugMarshmallows,\n faFilters: faFilters,\n faBellOn: faBellOn,\n faAngleRight: faAngleRight,\n faDialMed: faDialMed,\n faHorse: faHorse,\n faQ: faQ,\n faMonitorWaveform: faMonitorWaveform,\n faMonitorHeartRate: faMonitorHeartRate,\n faLinkSimple: faLinkSimple,\n faWhistle: faWhistle,\n faG: faG,\n faWineGlassCrack: faWineGlassCrack,\n faFragile: faFragile,\n faSlotMachine: faSlotMachine,\n faNotesMedical: faNotesMedical,\n faCarWash: faCarWash,\n faEscalator: faEscalator,\n faCommentImage: faCommentImage,\n faTemperatureHalf: faTemperatureHalf,\n faTemperature2: faTemperature2,\n faThermometer2: faThermometer2,\n faThermometerHalf: faThermometerHalf,\n faDongSign: faDongSign,\n faDonut: faDonut,\n faDoughnut: faDoughnut,\n faCapsules: faCapsules,\n faPooStorm: faPooStorm,\n faPooBolt: faPooBolt,\n faTally1: faTally1,\n faFaceFrownOpen: faFaceFrownOpen,\n faFrownOpen: faFrownOpen,\n faSquareDashed: faSquareDashed,\n faSquareJ: faSquareJ,\n faHandPointUp: faHandPointUp,\n faMoneyBill: faMoneyBill,\n faArrowUpBigSmall: faArrowUpBigSmall,\n faSortSizeUp: faSortSizeUp,\n faBarcodeRead: faBarcodeRead,\n faBaguette: faBaguette,\n faBowlSoftServe: faBowlSoftServe,\n faFaceHoldingBackTears: faFaceHoldingBackTears,\n faSquareUp: faSquareUp,\n faArrowAltSquareUp: faArrowAltSquareUp,\n faTrainSubwayTunnel: faTrainSubwayTunnel,\n faSubwayTunnel: faSubwayTunnel,\n faSquareExclamation: faSquareExclamation,\n faExclamationSquare: faExclamationSquare,\n faSemicolon: faSemicolon,\n faBookmark: faBookmark,\n faFanTable: faFanTable,\n faAlignJustify: faAlignJustify,\n faBatteryLow: faBatteryLow,\n faBattery1: faBattery1,\n faCreditCardFront: faCreditCardFront,\n faBrainArrowCurvedRight: faBrainArrowCurvedRight,\n faMindShare: faMindShare,\n faUmbrellaBeach: faUmbrellaBeach,\n faHelmetUn: faHelmetUn,\n faLocationSmile: faLocationSmile,\n faMapMarkerSmile: faMapMarkerSmile,\n faArrowLeftToLine: faArrowLeftToLine,\n faArrowToLeft: faArrowToLeft,\n faBullseye: faBullseye,\n faSushi: faSushi,\n faNigiri: faNigiri,\n faMessageCaptions: faMessageCaptions,\n faCommentAltCaptions: faCommentAltCaptions,\n faTrashList: faTrashList,\n faBacon: faBacon,\n faOption: faOption,\n faHandPointDown: faHandPointDown,\n faArrowUpFromBracket: faArrowUpFromBracket,\n faTrashPlus: faTrashPlus,\n faObjectsAlignTop: faObjectsAlignTop,\n faFolder: faFolder,\n faFolderBlank: faFolderBlank,\n faFaceAnxiousSweat: faFaceAnxiousSweat,\n faCreditCardBlank: faCreditCardBlank,\n faFileWaveform: faFileWaveform,\n faFileMedicalAlt: faFileMedicalAlt,\n faMicrochipAi: faMicrochipAi,\n faMug: faMug,\n faPlaneUpSlash: faPlaneUpSlash,\n faRadiation: faRadiation,\n faPenCircle: faPenCircle,\n faBagSeedling: faBagSeedling,\n faChartSimple: faChartSimple,\n faCrutches: faCrutches,\n faCircleParking: faCircleParking,\n faParkingCircle: faParkingCircle,\n faMarsStroke: faMarsStroke,\n faLeafOak: faLeafOak,\n faSquareBolt: faSquareBolt,\n faVial: faVial,\n faGauge: faGauge,\n faDashboard: faDashboard,\n faGaugeMed: faGaugeMed,\n faTachometerAltAverage: faTachometerAltAverage,\n faWandMagicSparkles: faWandMagicSparkles,\n faMagicWandSparkles: faMagicWandSparkles,\n faLambda: faLambda,\n faE: faE,\n faPizza: faPizza,\n faBowlChopsticksNoodles: faBowlChopsticksNoodles,\n faH3: faH3,\n faPenClip: faPenClip,\n faPenAlt: faPenAlt,\n faBridgeCircleExclamation: faBridgeCircleExclamation,\n faBadgePercent: faBadgePercent,\n faUser: faUser,\n faSensor: faSensor,\n faComma: faComma,\n faSchoolCircleCheck: faSchoolCircleCheck,\n faToiletPaperUnder: faToiletPaperUnder,\n faToiletPaperReverse: faToiletPaperReverse,\n faLightEmergency: faLightEmergency,\n faArrowDownToArc: faArrowDownToArc,\n faDumpster: faDumpster,\n faVanShuttle: faVanShuttle,\n faShuttleVan: faShuttleVan,\n faBuildingUser: faBuildingUser,\n faLightSwitch: faLightSwitch,\n faSquareCaretLeft: faSquareCaretLeft,\n faCaretSquareLeft: faCaretSquareLeft,\n faHighlighter: faHighlighter,\n faWavePulse: faWavePulse,\n faHeartRate: faHeartRate,\n faKey: faKey,\n faHatSanta: faHatSanta,\n faTamale: faTamale,\n faBoxCheck: faBoxCheck,\n faBullhorn: faBullhorn,\n faSteak: faSteak,\n faLocationCrosshairsSlash: faLocationCrosshairsSlash,\n faLocationSlash: faLocationSlash,\n faPersonDolly: faPersonDolly,\n faGlobe: faGlobe,\n faSynagogue: faSynagogue,\n faFileChartColumn: faFileChartColumn,\n faFileChartLine: faFileChartLine,\n faPersonHalfDress: faPersonHalfDress,\n faFolderImage: faFolderImage,\n faCalendarPen: faCalendarPen,\n faCalendarEdit: faCalendarEdit,\n faRoadBridge: faRoadBridge,\n faFaceSmileTear: faFaceSmileTear,\n faMessagePlus: faMessagePlus,\n faCommentAltPlus: faCommentAltPlus,\n faLocationArrow: faLocationArrow,\n faC: faC,\n faTabletButton: faTabletButton,\n faRectangleHistoryCircleUser: faRectangleHistoryCircleUser,\n faBuildingLock: faBuildingLock,\n faChartLineUp: faChartLineUp,\n faMailbox: faMailbox,\n faTruckBolt: faTruckBolt,\n faPizzaSlice: faPizzaSlice,\n faMoneyBillWave: faMoneyBillWave,\n faChartArea: faChartArea,\n faAreaChart: faAreaChart,\n faHouseFlag: faHouseFlag,\n faCircleThreeQuartersStroke: faCircleThreeQuartersStroke,\n faPersonCircleMinus: faPersonCircleMinus,\n faScalpel: faScalpel,\n faBan: faBan,\n faCancel: faCancel,\n faBellExclamation: faBellExclamation,\n faCircleBookmark: faCircleBookmark,\n faBookmarkCircle: faBookmarkCircle,\n faEggFried: faEggFried,\n faFaceWeary: faFaceWeary,\n faUniformMartialArts: faUniformMartialArts,\n faCameraRotate: faCameraRotate,\n faSunDust: faSunDust,\n faCommentText: faCommentText,\n faSprayCanSparkles: faSprayCanSparkles,\n faAirFreshener: faAirFreshener,\n faSignalBars: faSignalBars,\n faSignalAlt: faSignalAlt,\n faSignalAlt4: faSignalAlt4,\n faSignalBarsStrong: faSignalBarsStrong,\n faDiamondExclamation: faDiamondExclamation,\n faStar: faStar,\n faDialMin: faDialMin,\n faRepeat: faRepeat,\n faCross: faCross,\n faPageCaretDown: faPageCaretDown,\n faFileCaretDown: faFileCaretDown,\n faBox: faBox,\n faVenusMars: faVenusMars,\n faClockSevenThirty: faClockSevenThirty,\n faArrowPointer: faArrowPointer,\n faMousePointer: faMousePointer,\n faClockFourThirty: faClockFourThirty,\n faSignalBarsGood: faSignalBarsGood,\n faSignalAlt3: faSignalAlt3,\n faCactus: faCactus,\n faLightbulbGear: faLightbulbGear,\n faMaximize: faMaximize,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faChargingStation: faChargingStation,\n faShapes: faShapes,\n faTriangleCircleSquare: faTriangleCircleSquare,\n faPlaneTail: faPlaneTail,\n faGaugeSimpleMax: faGaugeSimpleMax,\n faTachometerFastest: faTachometerFastest,\n faCircleU: faCircleU,\n faShieldSlash: faShieldSlash,\n faSquarePhoneHangup: faSquarePhoneHangup,\n faPhoneSquareDown: faPhoneSquareDown,\n faArrowUpLeft: faArrowUpLeft,\n faTransporter1: faTransporter1,\n faPeanuts: faPeanuts,\n faShuffle: faShuffle,\n faRandom: faRandom,\n faPersonRunning: faPersonRunning,\n faRunning: faRunning,\n faMobileRetro: faMobileRetro,\n faGripLinesVertical: faGripLinesVertical,\n faBinBottlesRecycle: faBinBottlesRecycle,\n faArrowUpFromSquare: faArrowUpFromSquare,\n faFileDashedLine: faFileDashedLine,\n faPageBreak: faPageBreak,\n faBracketCurlyRight: faBracketCurlyRight,\n faSpider: faSpider,\n faClockThree: faClockThree,\n faHandsBound: faHandsBound,\n faScalpelLineDashed: faScalpelLineDashed,\n faScalpelPath: faScalpelPath,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faPipeSmoking: faPipeSmoking,\n faFaceAstonished: faFaceAstonished,\n faWindow: faWindow,\n faPlaneCircleExclamation: faPlaneCircleExclamation,\n faEar: faEar,\n faFileLock: faFileLock,\n faDiagramVenn: faDiagramVenn,\n faXRay: faXRay,\n faGoalNet: faGoalNet,\n faCoffinCross: faCoffinCross,\n faSpellCheck: faSpellCheck,\n faLocationXmark: faLocationXmark,\n faMapMarkerTimes: faMapMarkerTimes,\n faMapMarkerXmark: faMapMarkerXmark,\n faCircleQuarterStroke: faCircleQuarterStroke,\n faLasso: faLasso,\n faSlash: faSlash,\n faPersonToPortal: faPersonToPortal,\n faPortalEnter: faPortalEnter,\n faCalendarStar: faCalendarStar,\n faComputerMouse: faComputerMouse,\n faMouse: faMouse,\n faArrowRightToBracket: faArrowRightToBracket,\n faSignIn: faSignIn,\n faPegasus: faPegasus,\n faFilesMedical: faFilesMedical,\n faNfcLock: faNfcLock,\n faPersonSkiLift: faPersonSkiLift,\n faSkiLift: faSkiLift,\n faSquare6: faSquare6,\n faShopSlash: faShopSlash,\n faStoreAltSlash: faStoreAltSlash,\n faWindTurbine: faWindTurbine,\n faSlidersSimple: faSlidersSimple,\n faGridRound: faGridRound,\n faBadgeSheriff: faBadgeSheriff,\n faServer: faServer,\n faVirusCovidSlash: faVirusCovidSlash,\n faIntersection: faIntersection,\n faShopLock: faShopLock,\n faFamily: faFamily,\n faHourglassStart: faHourglassStart,\n faHourglass1: faHourglass1,\n faUserHairBuns: faUserHairBuns,\n faBlenderPhone: faBlenderPhone,\n faHourglassClock: faHourglassClock,\n faPersonSeatReclined: faPersonSeatReclined,\n faPaperPlaneTop: faPaperPlaneTop,\n faPaperPlaneAlt: faPaperPlaneAlt,\n faSend: faSend,\n faMessageArrowUp: faMessageArrowUp,\n faCommentAltArrowUp: faCommentAltArrowUp,\n faLightbulbExclamation: faLightbulbExclamation,\n faLayerMinus: faLayerMinus,\n faLayerGroupMinus: faLayerGroupMinus,\n faChartPieSimpleCircleCurrency: faChartPieSimpleCircleCurrency,\n faCircleE: faCircleE,\n faBuildingWheat: faBuildingWheat,\n faGaugeMax: faGaugeMax,\n faTachometerAltFastest: faTachometerAltFastest,\n faPersonBreastfeeding: faPersonBreastfeeding,\n faApostrophe: faApostrophe,\n faFireHydrant: faFireHydrant,\n faRightToBracket: faRightToBracket,\n faSignInAlt: faSignInAlt,\n faVideoPlus: faVideoPlus,\n faSquareRight: faSquareRight,\n faArrowAltSquareRight: faArrowAltSquareRight,\n faCommentSmile: faCommentSmile,\n faVenus: faVenus,\n faPassport: faPassport,\n faInboxIn: faInboxIn,\n faInboxArrowDown: faInboxArrowDown,\n faHeartPulse: faHeartPulse,\n faHeartbeat: faHeartbeat,\n faCircle8: faCircle8,\n faCloudsMoon: faCloudsMoon,\n faClockTenThirty: faClockTenThirty,\n faPeopleCarryBox: faPeopleCarryBox,\n faPeopleCarry: faPeopleCarry,\n faFolderUser: faFolderUser,\n faTrashCanXmark: faTrashCanXmark,\n faTemperatureHigh: faTemperatureHigh,\n faMicrochip: faMicrochip,\n faLeftLongToLine: faLeftLongToLine,\n faCrown: faCrown,\n faWeightHanging: faWeightHanging,\n faXmarksLines: faXmarksLines,\n faFilePrescription: faFilePrescription,\n faCalendarRange: faCalendarRange,\n faFlowerDaffodil: faFlowerDaffodil,\n faHandBackPointUp: faHandBackPointUp,\n faWeightScale: faWeightScale,\n faWeight: faWeight,\n faStarExclamation: faStarExclamation,\n faBooks: faBooks,\n faUserGroup: faUserGroup,\n faUserFriends: faUserFriends,\n faArrowUpAZ: faArrowUpAZ,\n faSortAlphaUp: faSortAlphaUp,\n faLayerPlus: faLayerPlus,\n faLayerGroupPlus: faLayerGroupPlus,\n faPlayPause: faPlayPause,\n faBlockQuestion: faBlockQuestion,\n faSnooze: faSnooze,\n faZzz: faZzz,\n faScannerImage: faScannerImage,\n faTvRetro: faTvRetro,\n faSquareT: faSquareT,\n faFarm: faFarm,\n faBarnSilo: faBarnSilo,\n faChessKnight: faChessKnight,\n faBarsSort: faBarsSort,\n faPalletBoxes: faPalletBoxes,\n faPaletteBoxes: faPaletteBoxes,\n faPalletAlt: faPalletAlt,\n faFaceLaughSquint: faFaceLaughSquint,\n faLaughSquint: faLaughSquint,\n faCodeSimple: faCodeSimple,\n faBoltSlash: faBoltSlash,\n faPanelFire: faPanelFire,\n faBinaryCircleCheck: faBinaryCircleCheck,\n faCommentMinus: faCommentMinus,\n faBurrito: faBurrito,\n faViolin: faViolin,\n faObjectsColumn: faObjectsColumn,\n faSquareChevronDown: faSquareChevronDown,\n faChevronSquareDown: faChevronSquareDown,\n faCommentPlus: faCommentPlus,\n faTriangleInstrument: faTriangleInstrument,\n faTriangleMusic: faTriangleMusic,\n faWheelchair: faWheelchair,\n faUserPilotTie: faUserPilotTie,\n faPianoKeyboard: faPianoKeyboard,\n faBedEmpty: faBedEmpty,\n faCircleArrowUp: faCircleArrowUp,\n faArrowCircleUp: faArrowCircleUp,\n faToggleOn: faToggleOn,\n faRectangleVertical: faRectangleVertical,\n faRectanglePortrait: faRectanglePortrait,\n faPersonWalking: faPersonWalking,\n faWalking: faWalking,\n faL: faL,\n faSignalStream: faSignalStream,\n faDownToBracket: faDownToBracket,\n faCircleZ: faCircleZ,\n faStars: faStars,\n faFire: faFire,\n faBedPulse: faBedPulse,\n faProcedures: faProcedures,\n faHouseDay: faHouseDay,\n faShuttleSpace: faShuttleSpace,\n faSpaceShuttle: faSpaceShuttle,\n faShirtLongSleeve: faShirtLongSleeve,\n faChartPieSimple: faChartPieSimple,\n faChartPieAlt: faChartPieAlt,\n faFaceLaugh: faFaceLaugh,\n faLaugh: faLaugh,\n faFolderOpen: faFolderOpen,\n faAlbumCollectionCircleUser: faAlbumCollectionCircleUser,\n faCandy: faCandy,\n faBowlHot: faBowlHot,\n faSoup: faSoup,\n faFlatbread: faFlatbread,\n faHeartCirclePlus: faHeartCirclePlus,\n faCodeFork: faCodeFork,\n faCity: faCity,\n faSignalBarsWeak: faSignalBarsWeak,\n faSignalAlt1: faSignalAlt1,\n faMicrophoneLines: faMicrophoneLines,\n faMicrophoneAlt: faMicrophoneAlt,\n faClockTwelve: faClockTwelve,\n faPepperHot: faPepperHot,\n faCitrusSlice: faCitrusSlice,\n faSheep: faSheep,\n faUnlock: faUnlock,\n faColonSign: faColonSign,\n faHeadset: faHeadset,\n faBadgerHoney: faBadgerHoney,\n faH4: faH4,\n faStoreSlash: faStoreSlash,\n faRoadCircleXmark: faRoadCircleXmark,\n faSignalSlash: faSignalSlash,\n faUserMinus: faUserMinus,\n faMarsStrokeUp: faMarsStrokeUp,\n faMarsStrokeV: faMarsStrokeV,\n faChampagneGlasses: faChampagneGlasses,\n faGlassCheers: faGlassCheers,\n faTaco: faTaco,\n faHexagonPlus: faHexagonPlus,\n faPlusHexagon: faPlusHexagon,\n faClipboard: faClipboard,\n faHouseCircleExclamation: faHouseCircleExclamation,\n faFileArrowUp: faFileArrowUp,\n faFileUpload: faFileUpload,\n faWifi: faWifi,\n faWifi3: faWifi3,\n faWifiStrong: faWifiStrong,\n faMessages: faMessages,\n faCommentsAlt: faCommentsAlt,\n faBath: faBath,\n faBathtub: faBathtub,\n faUmbrellaSimple: faUmbrellaSimple,\n faUmbrellaAlt: faUmbrellaAlt,\n faRectangleHistoryCirclePlus: faRectangleHistoryCirclePlus,\n faUnderline: faUnderline,\n faPrescriptionBottlePill: faPrescriptionBottlePill,\n faUserPen: faUserPen,\n faUserEdit: faUserEdit,\n faBinarySlash: faBinarySlash,\n faSquareO: faSquareO,\n faSignature: faSignature,\n faStroopwafel: faStroopwafel,\n faBold: faBold,\n faAnchorLock: faAnchorLock,\n faBuildingNgo: faBuildingNgo,\n faTransporter3: faTransporter3,\n faEngineWarning: faEngineWarning,\n faEngineExclamation: faEngineExclamation,\n faCircleDownRight: faCircleDownRight,\n faSquareK: faSquareK,\n faManatSign: faManatSign,\n faMoneyCheckPen: faMoneyCheckPen,\n faMoneyCheckEdit: faMoneyCheckEdit,\n faNotEqual: faNotEqual,\n faBorderTopLeft: faBorderTopLeft,\n faBorderStyle: faBorderStyle,\n faMapLocationDot: faMapLocationDot,\n faMapMarkedAlt: faMapMarkedAlt,\n faTilde: faTilde,\n faJedi: faJedi,\n faSquarePollVertical: faSquarePollVertical,\n faPoll: faPoll,\n faArrowDownSquareTriangle: faArrowDownSquareTriangle,\n faSortShapesDownAlt: faSortShapesDownAlt,\n faMugHot: faMugHot,\n faDogLeashed: faDogLeashed,\n faCarBattery: faCarBattery,\n faBatteryCar: faBatteryCar,\n faFaceDowncastSweat: faFaceDowncastSweat,\n faMailboxFlagUp: faMailboxFlagUp,\n faMemoCircleInfo: faMemoCircleInfo,\n faGift: faGift,\n faDiceTwo: faDiceTwo,\n faVolume: faVolume,\n faVolumeMedium: faVolumeMedium,\n faTransporter5: faTransporter5,\n faGaugeCircleBolt: faGaugeCircleBolt,\n faCoinFront: faCoinFront,\n faFileSlash: faFileSlash,\n faMessageArrowUpRight: faMessageArrowUpRight,\n faTreasureChest: faTreasureChest,\n faChessQueen: faChessQueen,\n faPaintbrushFine: faPaintbrushFine,\n faPaintBrushAlt: faPaintBrushAlt,\n faPaintBrushFine: faPaintBrushFine,\n faPaintbrushAlt: faPaintbrushAlt,\n faGlasses: faGlasses,\n faHoodCloak: faHoodCloak,\n faSquareQuote: faSquareQuote,\n faUpLeft: faUpLeft,\n faBringFront: faBringFront,\n faChessBoard: faChessBoard,\n faBurgerCheese: faBurgerCheese,\n faCheeseburger: faCheeseburger,\n faBuildingCircleCheck: faBuildingCircleCheck,\n faRepeat1: faRepeat1,\n faArrowDownToLine: faArrowDownToLine,\n faArrowToBottom: faArrowToBottom,\n faGrid5: faGrid5,\n faRightLongToLine: faRightLongToLine,\n faPersonChalkboard: faPersonChalkboard,\n faMarsStrokeRight: faMarsStrokeRight,\n faMarsStrokeH: faMarsStrokeH,\n faHandBackFist: faHandBackFist,\n faHandRock: faHandRock,\n faGridRound5: faGridRound5,\n faTally: faTally,\n faTally5: faTally5,\n faSquareCaretUp: faSquareCaretUp,\n faCaretSquareUp: faCaretSquareUp,\n faCloudShowersWater: faCloudShowersWater,\n faChartBar: faChartBar,\n faBarChart: faBarChart,\n faHandsBubbles: faHandsBubbles,\n faHandsWash: faHandsWash,\n faLessThanEqual: faLessThanEqual,\n faTrain: faTrain,\n faUpFromDottedLine: faUpFromDottedLine,\n faEyeLowVision: faEyeLowVision,\n faLowVision: faLowVision,\n faTrafficLightGo: faTrafficLightGo,\n faFaceExhaling: faFaceExhaling,\n faSensorFire: faSensorFire,\n faUserUnlock: faUserUnlock,\n faHexagonDivide: faHexagonDivide,\n fa00: fa00,\n faCrow: faCrow,\n faCassetteBetamax: faCassetteBetamax,\n faBetamax: faBetamax,\n faSailboat: faSailboat,\n faWindowRestore: faWindowRestore,\n faNfcMagnifyingGlass: faNfcMagnifyingGlass,\n faFileBinary: faFileBinary,\n faCircleV: faCircleV,\n faSquarePlus: faSquarePlus,\n faPlusSquare: faPlusSquare,\n faBowlScoops: faBowlScoops,\n faMistletoe: faMistletoe,\n faCustard: faCustard,\n faLacrosseStick: faLacrosseStick,\n faHockeyMask: faHockeyMask,\n faSunrise: faSunrise,\n faPanelEws: faPanelEws,\n faToriiGate: faToriiGate,\n faCloudExclamation: faCloudExclamation,\n faMessageLines: faMessageLines,\n faCommentAltLines: faCommentAltLines,\n faFrog: faFrog,\n faBucket: faBucket,\n faFloppyDiskPen: faFloppyDiskPen,\n faImage: faImage,\n faWindowFrame: faWindowFrame,\n faMicrophone: faMicrophone,\n faCow: faCow,\n faFileZip: faFileZip,\n faSquareRing: faSquareRing,\n faDownFromLine: faDownFromLine,\n faArrowAltFromTop: faArrowAltFromTop,\n faCaretUp: faCaretUp,\n faShieldXmark: faShieldXmark,\n faShieldTimes: faShieldTimes,\n faScrewdriver: faScrewdriver,\n faCircleSortDown: faCircleSortDown,\n faSortCircleDown: faSortCircleDown,\n faFolderClosed: faFolderClosed,\n faHouseTsunami: faHouseTsunami,\n faSquareNfi: faSquareNfi,\n faForklift: faForklift,\n faArrowUpFromGroundWater: faArrowUpFromGroundWater,\n faBracketSquareRight: faBracketSquareRight,\n faMartiniGlass: faMartiniGlass,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faRotateLeft: faRotateLeft,\n faRotateBack: faRotateBack,\n faRotateBackward: faRotateBackward,\n faUndoAlt: faUndoAlt,\n faTableColumns: faTableColumns,\n faColumns: faColumns,\n faSquareA: faSquareA,\n faTick: faTick,\n faLemon: faLemon,\n faHeadSideMask: faHeadSideMask,\n faHandshake: faHandshake,\n faGem: faGem,\n faDolly: faDolly,\n faDollyBox: faDollyBox,\n faSmoking: faSmoking,\n faMinimize: faMinimize,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faRefrigerator: faRefrigerator,\n faMonument: faMonument,\n faOctagonXmark: faOctagonXmark,\n faTimesOctagon: faTimesOctagon,\n faXmarkOctagon: faXmarkOctagon,\n faAlignSlash: faAlignSlash,\n faSnowplow: faSnowplow,\n faAnglesRight: faAnglesRight,\n faAngleDoubleRight: faAngleDoubleRight,\n faTruckRampCouch: faTruckRampCouch,\n faTruckCouch: faTruckCouch,\n faCannabis: faCannabis,\n faCirclePlay: faCirclePlay,\n faPlayCircle: faPlayCircle,\n faArrowUpRightAndArrowDownLeftFromCenter: faArrowUpRightAndArrowDownLeftFromCenter,\n faTablets: faTablets,\n fa360Degrees: fa360Degrees,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faEur: faEur,\n faEuro: faEuro,\n faChair: faChair,\n faCircleCheck: faCircleCheck,\n faCheckCircle: faCheckCircle,\n faSquareDashedCirclePlus: faSquareDashedCirclePlus,\n faMoneySimpleFromBracket: faMoneySimpleFromBracket,\n faBat: faBat,\n faCircleStop: faCircleStop,\n faStopCircle: faStopCircle,\n faHeadSideHeadphones: faHeadSideHeadphones,\n faPhoneRotary: faPhoneRotary,\n faCompassDrafting: faCompassDrafting,\n faDraftingCompass: faDraftingCompass,\n faPlateWheat: faPlateWheat,\n faCalendarCircleMinus: faCalendarCircleMinus,\n faChopsticks: faChopsticks,\n faCarWrench: faCarWrench,\n faCarMechanic: faCarMechanic,\n faIcicles: faIcicles,\n faPersonShelter: faPersonShelter,\n faNeuter: faNeuter,\n faIdBadge: faIdBadge,\n faKazoo: faKazoo,\n faMarker: faMarker,\n faBinBottles: faBinBottles,\n faFaceLaughBeam: faFaceLaughBeam,\n faLaughBeam: faLaughBeam,\n faSquareArrowDownLeft: faSquareArrowDownLeft,\n faBatteryBolt: faBatteryBolt,\n faTreeLarge: faTreeLarge,\n faHelicopterSymbol: faHelicopterSymbol,\n faAperture: faAperture,\n faUniversalAccess: faUniversalAccess,\n faGearComplex: faGearComplex,\n faFileMagnifyingGlass: faFileMagnifyingGlass,\n faFileSearch: faFileSearch,\n faUpRight: faUpRight,\n faCircleChevronUp: faCircleChevronUp,\n faChevronCircleUp: faChevronCircleUp,\n faUserPolice: faUserPolice,\n faLariSign: faLariSign,\n faVolcano: faVolcano,\n faTeddyBear: faTeddyBear,\n faStocking: faStocking,\n faPersonWalkingDashedLineArrowRight: faPersonWalkingDashedLineArrowRight,\n faImageSlash: faImageSlash,\n faMaskSnorkel: faMaskSnorkel,\n faSmoke: faSmoke,\n faSterlingSign: faSterlingSign,\n faGbp: faGbp,\n faPoundSign: faPoundSign,\n faBatteryExclamation: faBatteryExclamation,\n faViruses: faViruses,\n faSquarePersonConfined: faSquarePersonConfined,\n faUserTie: faUserTie,\n faArrowDownLong: faArrowDownLong,\n faLongArrowDown: faLongArrowDown,\n faTentArrowDownToLine: faTentArrowDownToLine,\n faCertificate: faCertificate,\n faCrystalBall: faCrystalBall,\n faReplyAll: faReplyAll,\n faMailReplyAll: faMailReplyAll,\n faSuitcase: faSuitcase,\n faPersonSkating: faPersonSkating,\n faSkating: faSkating,\n faStarShooting: faStarShooting,\n faBinaryLock: faBinaryLock,\n faFilterCircleDollar: faFilterCircleDollar,\n faFunnelDollar: faFunnelDollar,\n faCameraRetro: faCameraRetro,\n faCircleArrowDown: faCircleArrowDown,\n faArrowCircleDown: faArrowCircleDown,\n faCommentPen: faCommentPen,\n faCommentEdit: faCommentEdit,\n faFileImport: faFileImport,\n faArrowRightToFile: faArrowRightToFile,\n faBanjo: faBanjo,\n faSquareArrowUpRight: faSquareArrowUpRight,\n faExternalLinkSquare: faExternalLinkSquare,\n faLightEmergencyOn: faLightEmergencyOn,\n faKerning: faKerning,\n faBoxOpen: faBoxOpen,\n faSquareF: faSquareF,\n faScroll: faScroll,\n faSpa: faSpa,\n faArrowLeftFromLine: faArrowLeftFromLine,\n faArrowFromRight: faArrowFromRight,\n faStrawberry: faStrawberry,\n faLocationPinLock: faLocationPinLock,\n faPause: faPause,\n faClockEightThirty: faClockEightThirty,\n faPlaneEngines: faPlaneEngines,\n faPlaneAlt: faPlaneAlt,\n faHillAvalanche: faHillAvalanche,\n faTemperatureEmpty: faTemperatureEmpty,\n faTemperature0: faTemperature0,\n faThermometer0: faThermometer0,\n faThermometerEmpty: faThermometerEmpty,\n faBomb: faBomb,\n faGaugeLow: faGaugeLow,\n faTachometerAltSlow: faTachometerAltSlow,\n faRegistered: faRegistered,\n faTrashCanPlus: faTrashCanPlus,\n faAddressCard: faAddressCard,\n faContactCard: faContactCard,\n faVcard: faVcard,\n faScaleUnbalancedFlip: faScaleUnbalancedFlip,\n faBalanceScaleRight: faBalanceScaleRight,\n faGlobeSnow: faGlobeSnow,\n faSubscript: faSubscript,\n faDiamondTurnRight: faDiamondTurnRight,\n faDirections: faDirections,\n faIntegral: faIntegral,\n faBurst: faBurst,\n faHouseLaptop: faHouseLaptop,\n faLaptopHouse: faLaptopHouse,\n faFaceTired: faFaceTired,\n faTired: faTired,\n faMoneyBills: faMoneyBills,\n faBlindsRaised: faBlindsRaised,\n faSmog: faSmog,\n faUfoBeam: faUfoBeam,\n faCircleCaretUp: faCircleCaretUp,\n faCaretCircleUp: faCaretCircleUp,\n faUserVneckHairLong: faUserVneckHairLong,\n faSquareALock: faSquareALock,\n faCrutch: faCrutch,\n faGasPumpSlash: faGasPumpSlash,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faCloudArrowUp: faCloudArrowUp,\n faCloudUpload: faCloudUpload,\n faCloudUploadAlt: faCloudUploadAlt,\n faPalette: faPalette,\n faTransporter4: faTransporter4,\n faChartMixedUpCircleCurrency: faChartMixedUpCircleCurrency,\n faObjectsAlignRight: faObjectsAlignRight,\n faArrowsTurnRight: faArrowsTurnRight,\n faVest: faVest,\n faPig: faPig,\n faInboxFull: faInboxFull,\n faCircleEnvelope: faCircleEnvelope,\n faEnvelopeCircle: faEnvelopeCircle,\n faTrianglePersonDigging: faTrianglePersonDigging,\n faConstruction: faConstruction,\n faFerry: faFerry,\n faBullseyeArrow: faBullseyeArrow,\n faArrowsDownToPeople: faArrowsDownToPeople,\n faSeedling: faSeedling,\n faSprout: faSprout,\n faClockSeven: faClockSeven,\n faLeftRight: faLeftRight,\n faArrowsAltH: faArrowsAltH,\n faBoxesPacking: faBoxesPacking,\n faCircleArrowLeft: faCircleArrowLeft,\n faArrowCircleLeft: faArrowCircleLeft,\n faFlashlight: faFlashlight,\n faGroupArrowsRotate: faGroupArrowsRotate,\n faBowlFood: faBowlFood,\n faSquare9: faSquare9,\n faCandyCane: faCandyCane,\n faArrowDownWideShort: faArrowDownWideShort,\n faSortAmountAsc: faSortAmountAsc,\n faSortAmountDown: faSortAmountDown,\n faSquareDollar: faSquareDollar,\n faDollarSquare: faDollarSquare,\n faUsdSquare: faUsdSquare,\n faPhoneArrowRight: faPhoneArrowRight,\n faHandHoldingSeedling: faHandHoldingSeedling,\n faMessageCheck: faMessageCheck,\n faCommentAltCheck: faCommentAltCheck,\n faCloudBolt: faCloudBolt,\n faThunderstorm: faThunderstorm,\n faChartLineUpDown: faChartLineUpDown,\n faTextSlash: faTextSlash,\n faRemoveFormat: faRemoveFormat,\n faWatch: faWatch,\n faCircleDownLeft: faCircleDownLeft,\n faText: faText,\n faProjector: faProjector,\n faFaceSmileWink: faFaceSmileWink,\n faSmileWink: faSmileWink,\n faTombstoneBlank: faTombstoneBlank,\n faTombstoneAlt: faTombstoneAlt,\n faChessKingPiece: faChessKingPiece,\n faChessKingAlt: faChessKingAlt,\n faCircle6: faCircle6,\n faLeft: faLeft,\n faArrowAltLeft: faArrowAltLeft,\n faFileWord: faFileWord,\n faFilePowerpoint: faFilePowerpoint,\n faSquareDown: faSquareDown,\n faArrowAltSquareDown: faArrowAltSquareDown,\n faObjectsAlignCenterVertical: faObjectsAlignCenterVertical,\n faArrowsLeftRight: faArrowsLeftRight,\n faArrowsH: faArrowsH,\n faHouseLock: faHouseLock,\n faCloudArrowDown: faCloudArrowDown,\n faCloudDownload: faCloudDownload,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faWreath: faWreath,\n faChildren: faChildren,\n faMeterDroplet: faMeterDroplet,\n faChalkboard: faChalkboard,\n faBlackboard: faBlackboard,\n faUserLargeSlash: faUserLargeSlash,\n faUserAltSlash: faUserAltSlash,\n faSignalStrong: faSignalStrong,\n faSignal4: faSignal4,\n faLollipop: faLollipop,\n faLollypop: faLollypop,\n faListTree: faListTree,\n faEnvelopeOpen: faEnvelopeOpen,\n faDrawCircle: faDrawCircle,\n faCatSpace: faCatSpace,\n faHandshakeSimpleSlash: faHandshakeSimpleSlash,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faRabbitRunning: faRabbitRunning,\n faRabbitFast: faRabbitFast,\n faMemoPad: faMemoPad,\n faMattressPillow: faMattressPillow,\n faAlarmPlus: faAlarmPlus,\n faAlicorn: faAlicorn,\n faCommentQuestion: faCommentQuestion,\n faGingerbreadMan: faGingerbreadMan,\n faGuaraniSign: faGuaraniSign,\n faBurgerFries: faBurgerFries,\n faMugTea: faMugTea,\n faBorderTop: faBorderTop,\n faArrowsRotate: faArrowsRotate,\n faRefresh: faRefresh,\n faSync: faSync,\n faCircleBookOpen: faCircleBookOpen,\n faBookCircle: faBookCircle,\n faArrowsToDottedLine: faArrowsToDottedLine,\n faFireExtinguisher: faFireExtinguisher,\n faGarageOpen: faGarageOpen,\n faShelvesEmpty: faShelvesEmpty,\n faCruzeiroSign: faCruzeiroSign,\n faWatchApple: faWatchApple,\n faWatchCalculator: faWatchCalculator,\n faListDropdown: faListDropdown,\n faCabinetFiling: faCabinetFiling,\n faBurgerSoda: faBurgerSoda,\n faSquareArrowUp: faSquareArrowUp,\n faArrowSquareUp: faArrowSquareUp,\n faGreaterThanEqual: faGreaterThanEqual,\n faPalletBox: faPalletBox,\n faFaceConfounded: faFaceConfounded,\n faShieldHalved: faShieldHalved,\n faShieldAlt: faShieldAlt,\n faTruckPlow: faTruckPlow,\n faBookAtlas: faBookAtlas,\n faAtlas: faAtlas,\n faVirus: faVirus,\n faGridRound2: faGridRound2,\n faCommentMiddleTop: faCommentMiddleTop,\n faEnvelopeCircleCheck: faEnvelopeCircleCheck,\n faLayerGroup: faLayerGroup,\n faRestroomSimple: faRestroomSimple,\n faArrowsToDot: faArrowsToDot,\n faBorderOuter: faBorderOuter,\n faHashtagLock: faHashtagLock,\n faClockTwoThirty: faClockTwoThirty,\n faArchway: faArchway,\n faHeartCircleCheck: faHeartCircleCheck,\n faHouseChimneyCrack: faHouseChimneyCrack,\n faHouseDamage: faHouseDamage,\n faFileZipper: faFileZipper,\n faFileArchive: faFileArchive,\n faHeartHalf: faHeartHalf,\n faCommentCheck: faCommentCheck,\n faSquare: faSquare,\n faMemo: faMemo,\n faMartiniGlassEmpty: faMartiniGlassEmpty,\n faGlassMartini: faGlassMartini,\n faCouch: faCouch,\n faCediSign: faCediSign,\n faItalic: faItalic,\n faGlassCitrus: faGlassCitrus,\n faCalendarLinesPen: faCalendarLinesPen,\n faChurch: faChurch,\n faPersonSnowmobiling: faPersonSnowmobiling,\n faSnowmobile: faSnowmobile,\n faFaceHushed: faFaceHushed,\n faCommentsDollar: faCommentsDollar,\n faPickaxe: faPickaxe,\n faLinkSimpleSlash: faLinkSimpleSlash,\n faDemocrat: faDemocrat,\n faFaceConfused: faFaceConfused,\n faPinball: faPinball,\n faZ: faZ,\n faPersonSkiing: faPersonSkiing,\n faSkiing: faSkiing,\n faDeer: faDeer,\n faInputPipe: faInputPipe,\n faRoadLock: faRoadLock,\n faA: faA,\n faBookmarkSlash: faBookmarkSlash,\n faTemperatureArrowDown: faTemperatureArrowDown,\n faTemperatureDown: faTemperatureDown,\n faMace: faMace,\n faFeatherPointed: faFeatherPointed,\n faFeatherAlt: faFeatherAlt,\n faSausage: faSausage,\n faTrashCanClock: faTrashCanClock,\n faP: faP,\n faBroomWide: faBroomWide,\n faSnowflake: faSnowflake,\n faStomach: faStomach,\n faNewspaper: faNewspaper,\n faRectangleAd: faRectangleAd,\n faAd: faAd,\n faGuitarElectric: faGuitarElectric,\n faArrowTurnDownRight: faArrowTurnDownRight,\n faMoonCloud: faMoonCloud,\n faBreadSliceButter: faBreadSliceButter,\n faCircleArrowRight: faCircleArrowRight,\n faArrowCircleRight: faArrowCircleRight,\n faUserGroupCrown: faUserGroupCrown,\n faUsersCrown: faUsersCrown,\n faCircleI: faCircleI,\n faToiletPaperCheck: faToiletPaperCheck,\n faFilterCircleXmark: faFilterCircleXmark,\n faLocust: faLocust,\n faSort: faSort,\n faUnsorted: faUnsorted,\n faListOl: faListOl,\n faList12: faList12,\n faListNumeric: faListNumeric,\n faChartWaterfall: faChartWaterfall,\n faSparkle: faSparkle,\n faFaceParty: faFaceParty,\n faKidneys: faKidneys,\n faWifiExclamation: faWifiExclamation,\n faChartNetwork: faChartNetwork,\n faPersonDressBurst: faPersonDressBurst,\n faDiceD4: faDiceD4,\n faMoneyCheckDollar: faMoneyCheckDollar,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faVectorSquare: faVectorSquare,\n faBreadSlice: faBreadSlice,\n faLanguage: faLanguage,\n faWheatAwnSlash: faWheatAwnSlash,\n faFaceKissWinkHeart: faFaceKissWinkHeart,\n faKissWinkHeart: faKissWinkHeart,\n faDagger: faDagger,\n faPodium: faPodium,\n faMemoCircleCheck: faMemoCircleCheck,\n faRouteHighway: faRouteHighway,\n faDownToLine: faDownToLine,\n faArrowAltToBottom: faArrowAltToBottom,\n faFilter: faFilter,\n faSquareG: faSquareG,\n faCirclePhone: faCirclePhone,\n faPhoneCircle: faPhoneCircle,\n faClipboardPrescription: faClipboardPrescription,\n faUserNurseHair: faUserNurseHair,\n faQuestion: faQuestion,\n faFileSignature: faFileSignature,\n faToggleLargeOn: faToggleLargeOn,\n faUpDownLeftRight: faUpDownLeftRight,\n faArrowsAlt: faArrowsAlt,\n faDryerHeat: faDryerHeat,\n faDryerAlt: faDryerAlt,\n faHouseChimneyUser: faHouseChimneyUser,\n faHandHoldingHeart: faHandHoldingHeart,\n faArrowUpSmallBig: faArrowUpSmallBig,\n faSortSizeUpAlt: faSortSizeUpAlt,\n faTrainTrack: faTrainTrack,\n faPuzzlePiece: faPuzzlePiece,\n faMoneyCheck: faMoneyCheck,\n faStarHalfStroke: faStarHalfStroke,\n faStarHalfAlt: faStarHalfAlt,\n faFileExclamation: faFileExclamation,\n faCode: faCode,\n faWhiskeyGlass: faWhiskeyGlass,\n faGlassWhiskey: faGlassWhiskey,\n faMoonStars: faMoonStars,\n faBuildingCircleExclamation: faBuildingCircleExclamation,\n faClothesHanger: faClothesHanger,\n faMobileNotch: faMobileNotch,\n faMobileIphone: faMobileIphone,\n faMagnifyingGlassChart: faMagnifyingGlassChart,\n faArrowUpRightFromSquare: faArrowUpRightFromSquare,\n faExternalLink: faExternalLink,\n faCubesStacked: faCubesStacked,\n faImagesUser: faImagesUser,\n faWonSign: faWonSign,\n faKrw: faKrw,\n faWon: faWon,\n faImagePolaroidUser: faImagePolaroidUser,\n faVirusCovid: faVirusCovid,\n faSquareEllipsis: faSquareEllipsis,\n faPie: faPie,\n faChessKnightPiece: faChessKnightPiece,\n faChessKnightAlt: faChessKnightAlt,\n faAustralSign: faAustralSign,\n faCloudPlus: faCloudPlus,\n faF: faF,\n faLeaf: faLeaf,\n faBedBunk: faBedBunk,\n faRoad: faRoad,\n faTaxi: faTaxi,\n faCab: faCab,\n faPersonCirclePlus: faPersonCirclePlus,\n faChartPie: faChartPie,\n faPieChart: faPieChart,\n faBoltLightning: faBoltLightning,\n faClockEight: faClockEight,\n faSackXmark: faSackXmark,\n faFileExcel: faFileExcel,\n faFileContract: faFileContract,\n faFishFins: faFishFins,\n faCircleQ: faCircleQ,\n faBuildingFlag: faBuildingFlag,\n faFaceGrinBeam: faFaceGrinBeam,\n faGrinBeam: faGrinBeam,\n faObjectUngroup: faObjectUngroup,\n faFaceDisguise: faFaceDisguise,\n faCircleArrowDownRight: faCircleArrowDownRight,\n faAlien8bit: faAlien8bit,\n faAlienMonster: faAlienMonster,\n faHandPointRibbon: faHandPointRibbon,\n faPoop: faPoop,\n faObjectExclude: faObjectExclude,\n faTelescope: faTelescope,\n faLocationPin: faLocationPin,\n faMapMarker: faMapMarker,\n faSquareList: faSquareList,\n faKaaba: faKaaba,\n faToiletPaper: faToiletPaper,\n faHelmetSafety: faHelmetSafety,\n faHardHat: faHardHat,\n faHatHard: faHatHard,\n faCommentCode: faCommentCode,\n faSimCards: faSimCards,\n faStarship: faStarship,\n faEject: faEject,\n faCircleRight: faCircleRight,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faPlaneCircleCheck: faPlaneCircleCheck,\n faSeal: faSeal,\n faUserCowboy: faUserCowboy,\n faHexagonVerticalNft: faHexagonVerticalNft,\n faFaceRollingEyes: faFaceRollingEyes,\n faMehRollingEyes: faMehRollingEyes,\n faBreadLoaf: faBreadLoaf,\n faRingsWedding: faRingsWedding,\n faObjectGroup: faObjectGroup,\n faFrenchFries: faFrenchFries,\n faChartLine: faChartLine,\n faLineChart: faLineChart,\n faCalendarArrowDown: faCalendarArrowDown,\n faCalendarDownload: faCalendarDownload,\n faSendBack: faSendBack,\n faMaskVentilator: faMaskVentilator,\n faSignatureLock: faSignatureLock,\n faArrowRight: faArrowRight,\n faSignsPost: faSignsPost,\n faMapSigns: faMapSigns,\n faOctagonPlus: faOctagonPlus,\n faPlusOctagon: faPlusOctagon,\n faCashRegister: faCashRegister,\n faPersonCircleQuestion: faPersonCircleQuestion,\n faMelonSlice: faMelonSlice,\n faSpaceStationMoon: faSpaceStationMoon,\n faMessageSmile: faMessageSmile,\n faCommentAltSmile: faCommentAltSmile,\n faCupStraw: faCupStraw,\n faLeftFromLine: faLeftFromLine,\n faArrowAltFromRight: faArrowAltFromRight,\n faH: faH,\n faBasketShoppingSimple: faBasketShoppingSimple,\n faShoppingBasketAlt: faShoppingBasketAlt,\n faHandsHoldingHeart: faHandsHoldingHeart,\n faHandsHeart: faHandsHeart,\n faClockNine: faClockNine,\n faTarp: faTarp,\n faFaceSleepy: faFaceSleepy,\n faHandHorns: faHandHorns,\n faScrewdriverWrench: faScrewdriverWrench,\n faTools: faTools,\n faArrowsToEye: faArrowsToEye,\n faCircleThreeQuarters: faCircleThreeQuarters,\n faTrophyStar: faTrophyStar,\n faTrophyAlt: faTrophyAlt,\n faPlugCircleBolt: faPlugCircleBolt,\n faFaceThermometer: faFaceThermometer,\n faGridRound4: faGridRound4,\n faShirtRunning: faShirtRunning,\n faBookCircleArrowUp: faBookCircleArrowUp,\n faFaceNauseated: faFaceNauseated,\n faHeart: faHeart,\n faFileChartPie: faFileChartPie,\n faMarsAndVenus: faMarsAndVenus,\n faHouseUser: faHouseUser,\n faHomeUser: faHomeUser,\n faCircleArrowDownLeft: faCircleArrowDownLeft,\n faDumpsterFire: faDumpsterFire,\n faHexagonMinus: faHexagonMinus,\n faMinusHexagon: faMinusHexagon,\n faLeftToLine: faLeftToLine,\n faArrowAltToLeft: faArrowAltToLeft,\n faHouseCrack: faHouseCrack,\n faPawSimple: faPawSimple,\n faPawAlt: faPawAlt,\n faArrowLeftLongToLine: faArrowLeftLongToLine,\n faBracketsRound: faBracketsRound,\n faParentheses: faParentheses,\n faMartiniGlassCitrus: faMartiniGlassCitrus,\n faCocktail: faCocktail,\n faUserShakespeare: faUserShakespeare,\n faArrowRightToArc: faArrowRightToArc,\n faFaceSurprise: faFaceSurprise,\n faSurprise: faSurprise,\n faBottleWater: faBottleWater,\n faCirclePause: faCirclePause,\n faPauseCircle: faPauseCircle,\n faGaugeCirclePlus: faGaugeCirclePlus,\n faFolders: faFolders,\n faAngel: faAngel,\n faValueAbsolute: faValueAbsolute,\n faRabbit: faRabbit,\n faToiletPaperSlash: faToiletPaperSlash,\n faCircleEuro: faCircleEuro,\n faAppleWhole: faAppleWhole,\n faAppleAlt: faAppleAlt,\n faKitchenSet: faKitchenSet,\n faDiamondHalf: faDiamondHalf,\n faLockKeyhole: faLockKeyhole,\n faLockAlt: faLockAlt,\n faR: faR,\n faTemperatureQuarter: faTemperatureQuarter,\n faTemperature1: faTemperature1,\n faThermometer1: faThermometer1,\n faThermometerQuarter: faThermometerQuarter,\n faSquareInfo: faSquareInfo,\n faInfoSquare: faInfoSquare,\n faWifiSlash: faWifiSlash,\n faToiletPaperXmark: faToiletPaperXmark,\n faHandsHoldingDollar: faHandsHoldingDollar,\n faHandsUsd: faHandsUsd,\n faCube: faCube,\n faArrowDownTriangleSquare: faArrowDownTriangleSquare,\n faSortShapesDown: faSortShapesDown,\n faBitcoinSign: faBitcoinSign,\n faShutters: faShutters,\n faShieldDog: faShieldDog,\n faSolarPanel: faSolarPanel,\n faLockOpen: faLockOpen,\n faTableTree: faTableTree,\n faHouseChimneyHeart: faHouseChimneyHeart,\n faTally3: faTally3,\n faElevator: faElevator,\n faMoneyBillTransfer: faMoneyBillTransfer,\n faMoneyBillTrendUp: faMoneyBillTrendUp,\n faHouseFloodWaterCircleArrowRight: faHouseFloodWaterCircleArrowRight,\n faSquarePollHorizontal: faSquarePollHorizontal,\n faPollH: faPollH,\n faCircle: faCircle,\n faCartCircleExclamation: faCartCircleExclamation,\n faSword: faSword,\n faBackwardFast: faBackwardFast,\n faFastBackward: faFastBackward,\n faRecycle: faRecycle,\n faUserAstronaut: faUserAstronaut,\n faInterrobang: faInterrobang,\n faPlaneSlash: faPlaneSlash,\n faCircleDashed: faCircleDashed,\n faTrademark: faTrademark,\n faBasketball: faBasketball,\n faBasketballBall: faBasketballBall,\n faForkKnife: faForkKnife,\n faUtensilsAlt: faUtensilsAlt,\n faSatelliteDish: faSatelliteDish,\n faBadgeCheck: faBadgeCheck,\n faCircleUp: faCircleUp,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faSlider: faSlider,\n faMobileScreenButton: faMobileScreenButton,\n faMobileAlt: faMobileAlt,\n faClockOneThirty: faClockOneThirty,\n faInboxOut: faInboxOut,\n faInboxArrowUp: faInboxArrowUp,\n faCloudSlash: faCloudSlash,\n faVolumeHigh: faVolumeHigh,\n faVolumeUp: faVolumeUp,\n faUsersRays: faUsersRays,\n faWallet: faWallet,\n faOctagonCheck: faOctagonCheck,\n faFlatbreadStuffed: faFlatbreadStuffed,\n faClipboardCheck: faClipboardCheck,\n faCartCirclePlus: faCartCirclePlus,\n faTruckClock: faTruckClock,\n faShippingTimed: faShippingTimed,\n faPool8Ball: faPool8Ball,\n faFileAudio: faFileAudio,\n faTurnDownLeft: faTurnDownLeft,\n faLockHashtag: faLockHashtag,\n faChartRadar: faChartRadar,\n faStaff: faStaff,\n faBurger: faBurger,\n faHamburger: faHamburger,\n faUtilityPole: faUtilityPole,\n faTransporter6: faTransporter6,\n faWrench: faWrench,\n faBugs: faBugs,\n faVectorPolygon: faVectorPolygon,\n faDiagramNested: faDiagramNested,\n faRupeeSign: faRupeeSign,\n faRupee: faRupee,\n faFileImage: faFileImage,\n faCircleQuestion: faCircleQuestion,\n faQuestionCircle: faQuestionCircle,\n faImageUser: faImageUser,\n faBuoy: faBuoy,\n faPlaneDeparture: faPlaneDeparture,\n faHandshakeSlash: faHandshakeSlash,\n faBookBookmark: faBookBookmark,\n faBorderCenterH: faBorderCenterH,\n faCanFood: faCanFood,\n faTypewriter: faTypewriter,\n faArrowRightFromArc: faArrowRightFromArc,\n faCircleK: faCircleK,\n faFaceHandOverMouth: faFaceHandOverMouth,\n faPopcorn: faPopcorn,\n faHouseWater: faHouseWater,\n faHouseFlood: faHouseFlood,\n faObjectSubtract: faObjectSubtract,\n faCodeBranch: faCodeBranch,\n faWarehouseFull: faWarehouseFull,\n faWarehouseAlt: faWarehouseAlt,\n faHatCowboy: faHatCowboy,\n faBridge: faBridge,\n faPhoneFlip: faPhoneFlip,\n faPhoneAlt: faPhoneAlt,\n faArrowDownFromDottedLine: faArrowDownFromDottedLine,\n faFileDoc: faFileDoc,\n faSquareQuarters: faSquareQuarters,\n faTruckFront: faTruckFront,\n faCat: faCat,\n faTrashXmark: faTrashXmark,\n faCircleCaretLeft: faCircleCaretLeft,\n faCaretCircleLeft: faCaretCircleLeft,\n faFiles: faFiles,\n faAnchorCircleExclamation: faAnchorCircleExclamation,\n faFaceClouds: faFaceClouds,\n faUserCrown: faUserCrown,\n faTruckField: faTruckField,\n faRoute: faRoute,\n faCartCircleCheck: faCartCircleCheck,\n faClipboardQuestion: faClipboardQuestion,\n faPanorama: faPanorama,\n faCommentMedical: faCommentMedical,\n faTeethOpen: faTeethOpen,\n faUserTieHairLong: faUserTieHairLong,\n faFileCircleMinus: faFileCircleMinus,\n faHeadSideMedical: faHeadSideMedical,\n faTags: faTags,\n faWineGlass: faWineGlass,\n faForwardFast: faForwardFast,\n faFastForward: faFastForward,\n faFaceMehBlank: faFaceMehBlank,\n faMehBlank: faMehBlank,\n faUserRobot: faUserRobot,\n faSquareParking: faSquareParking,\n faParking: faParking,\n faCardDiamond: faCardDiamond,\n faFaceZipper: faFaceZipper,\n faFaceRaisedEyebrow: faFaceRaisedEyebrow,\n faHouseSignal: faHouseSignal,\n faSquareChevronUp: faSquareChevronUp,\n faChevronSquareUp: faChevronSquareUp,\n faNfcSymbol: faNfcSymbol,\n faBarsProgress: faBarsProgress,\n faTasksAlt: faTasksAlt,\n faFaucetDrip: faFaucetDrip,\n faArrowsToLine: faArrowsToLine,\n faDolphin: faDolphin,\n faArrowUpRight: faArrowUpRight,\n faCircleR: faCircleR,\n faCartFlatbed: faCartFlatbed,\n faDollyFlatbed: faDollyFlatbed,\n faBanSmoking: faBanSmoking,\n faSmokingBan: faSmokingBan,\n faCircleSortUp: faCircleSortUp,\n faSortCircleUp: faSortCircleUp,\n faTerminal: faTerminal,\n faMobileButton: faMobileButton,\n faHouseMedicalFlag: faHouseMedicalFlag,\n faBasketShopping: faBasketShopping,\n faShoppingBasket: faShoppingBasket,\n faTape: faTape,\n faChestnut: faChestnut,\n faBusSimple: faBusSimple,\n faBusAlt: faBusAlt,\n faEye: faEye,\n faFaceSadCry: faFaceSadCry,\n faSadCry: faSadCry,\n faHeat: faHeat,\n faTicketAirline: faTicketAirline,\n faBootHeeled: faBootHeeled,\n faArrowsMinimize: faArrowsMinimize,\n faCompressArrows: faCompressArrows,\n faAudioDescription: faAudioDescription,\n faPersonMilitaryToPerson: faPersonMilitaryToPerson,\n faFileShield: faFileShield,\n faHexagon: faHexagon,\n faManhole: faManhole,\n faUserSlash: faUserSlash,\n faPen: faPen,\n faTowerObservation: faTowerObservation,\n faFloppyDisks: faFloppyDisks,\n faToiletPaperBlankUnder: faToiletPaperBlankUnder,\n faToiletPaperReverseAlt: faToiletPaperReverseAlt,\n faFileCode: faFileCode,\n faSignal: faSignal,\n faSignal5: faSignal5,\n faSignalPerfect: faSignalPerfect,\n faPump: faPump,\n faBus: faBus,\n faHeartCircleXmark: faHeartCircleXmark,\n faArrowUpLeftFromCircle: faArrowUpLeftFromCircle,\n faHouseChimney: faHouseChimney,\n faHomeLg: faHomeLg,\n faWindowMaximize: faWindowMaximize,\n faDryer: faDryer,\n faFaceFrown: faFaceFrown,\n faFrown: faFrown,\n faChessBishopPiece: faChessBishopPiece,\n faChessBishopAlt: faChessBishopAlt,\n faShirtTankTop: faShirtTankTop,\n faDiploma: faDiploma,\n faScrollRibbon: faScrollRibbon,\n faScreencast: faScreencast,\n faWalker: faWalker,\n faPrescription: faPrescription,\n faShop: faShop,\n faStoreAlt: faStoreAlt,\n faFloppyDisk: faFloppyDisk,\n faSave: faSave,\n faVihara: faVihara,\n faFaceKissClosedEyes: faFaceKissClosedEyes,\n faScaleUnbalanced: faScaleUnbalanced,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faFileUser: faFileUser,\n faUserPoliceTie: faUserPoliceTie,\n faFaceTongueMoney: faFaceTongueMoney,\n faTennisBall: faTennisBall,\n faSquareL: faSquareL,\n faSortUp: faSortUp,\n faSortAsc: faSortAsc,\n faCalendarArrowUp: faCalendarArrowUp,\n faCalendarUpload: faCalendarUpload,\n faCommentDots: faCommentDots,\n faCommenting: faCommenting,\n faPlantWilt: faPlantWilt,\n faScarf: faScarf,\n faAlbumCirclePlus: faAlbumCirclePlus,\n faUserNurseHairLong: faUserNurseHairLong,\n faDiamond: faDiamond,\n faSquareLeft: faSquareLeft,\n faArrowAltSquareLeft: faArrowAltSquareLeft,\n faFaceGrinSquint: faFaceGrinSquint,\n faGrinSquint: faGrinSquint,\n faCircleEllipsisVertical: faCircleEllipsisVertical,\n faHandHoldingDollar: faHandHoldingDollar,\n faHandHoldingUsd: faHandHoldingUsd,\n faGridDividers: faGridDividers,\n faBacterium: faBacterium,\n faHandPointer: faHandPointer,\n faDrumSteelpan: faDrumSteelpan,\n faHandScissors: faHandScissors,\n faHandsPraying: faHandsPraying,\n faPrayingHands: faPrayingHands,\n faFacePensive: faFacePensive,\n faUserMusic: faUserMusic,\n faArrowRotateRight: faArrowRotateRight,\n faArrowRightRotate: faArrowRightRotate,\n faArrowRotateForward: faArrowRotateForward,\n faRedo: faRedo,\n faMessagesDollar: faMessagesDollar,\n faCommentsAltDollar: faCommentsAltDollar,\n faSensorOn: faSensorOn,\n faBalloon: faBalloon,\n faBiohazard: faBiohazard,\n faChessQueenPiece: faChessQueenPiece,\n faChessQueenAlt: faChessQueenAlt,\n faLocationCrosshairs: faLocationCrosshairs,\n faLocation: faLocation,\n faMarsDouble: faMarsDouble,\n faHousePersonLeave: faHousePersonLeave,\n faHouseLeave: faHouseLeave,\n faHousePersonDepart: faHousePersonDepart,\n faRulerTriangle: faRulerTriangle,\n faCardClub: faCardClub,\n faChildDress: faChildDress,\n faUsersBetweenLines: faUsersBetweenLines,\n faLungsVirus: faLungsVirus,\n faSpinnerThird: faSpinnerThird,\n faFaceGrinTears: faFaceGrinTears,\n faGrinTears: faGrinTears,\n faPhone: faPhone,\n faComputerMouseScrollwheel: faComputerMouseScrollwheel,\n faMouseAlt: faMouseAlt,\n faCalendarXmark: faCalendarXmark,\n faCalendarTimes: faCalendarTimes,\n faChildReaching: faChildReaching,\n faTableLayout: faTableLayout,\n faNarwhal: faNarwhal,\n faRampLoading: faRampLoading,\n faCalendarCirclePlus: faCalendarCirclePlus,\n faToothbrush: faToothbrush,\n faBorderInner: faBorderInner,\n faPawClaws: faPawClaws,\n faKiwiFruit: faKiwiFruit,\n faTrafficLightSlow: faTrafficLightSlow,\n faRectangleCode: faRectangleCode,\n faHeadSideVirus: faHeadSideVirus,\n faKeyboardBrightness: faKeyboardBrightness,\n faBooksMedical: faBooksMedical,\n faLightbulbSlash: faLightbulbSlash,\n faHouseBlank: faHouseBlank,\n faHomeBlank: faHomeBlank,\n faSquare5: faSquare5,\n faSquareHeart: faSquareHeart,\n faHeartSquare: faHeartSquare,\n faPuzzle: faPuzzle,\n faUserGear: faUserGear,\n faUserCog: faUserCog,\n faPipeCircleCheck: faPipeCircleCheck,\n faArrowUp19: faArrowUp19,\n faSortNumericUp: faSortNumericUp,\n faOctagonExclamation: faOctagonExclamation,\n faDialLow: faDialLow,\n faDoorClosed: faDoorClosed,\n faLaptopMobile: faLaptopMobile,\n faPhoneLaptop: faPhoneLaptop,\n faConveyorBeltBoxes: faConveyorBeltBoxes,\n faConveyorBeltAlt: faConveyorBeltAlt,\n faShieldVirus: faShieldVirus,\n faStarfighterTwinIonEngineAdvanced: faStarfighterTwinIonEngineAdvanced,\n faStarfighterAltAdvanced: faStarfighterAltAdvanced,\n faDiceSix: faDiceSix,\n faStarfighterTwinIonEngine: faStarfighterTwinIonEngine,\n faStarfighterAlt: faStarfighterAlt,\n faRocketLaunch: faRocketLaunch,\n faMosquitoNet: faMosquitoNet,\n faVentDamper: faVentDamper,\n faBridgeWater: faBridgeWater,\n faBanBug: faBanBug,\n faDebug: faDebug,\n faPersonBooth: faPersonBooth,\n faTextWidth: faTextWidth,\n faGarageCar: faGarageCar,\n faSquareKanban: faSquareKanban,\n faHatWizard: faHatWizard,\n faPenFancy: faPenFancy,\n faCoffeePot: faCoffeePot,\n faMouseField: faMouseField,\n faPersonDigging: faPersonDigging,\n faDigging: faDigging,\n faShowerDown: faShowerDown,\n faShowerAlt: faShowerAlt,\n faBoxCircleCheck: faBoxCircleCheck,\n faBrightness: faBrightness,\n faCarSideBolt: faCarSideBolt,\n faOrnament: faOrnament,\n faPhoneArrowDownLeft: faPhoneArrowDownLeft,\n faPhoneArrowDown: faPhoneArrowDown,\n faPhoneIncoming: faPhoneIncoming,\n faCloudWord: faCloudWord,\n faHandFingersCrossed: faHandFingersCrossed,\n faTrash: faTrash,\n faGaugeSimple: faGaugeSimple,\n faGaugeSimpleMed: faGaugeSimpleMed,\n faTachometerAverage: faTachometerAverage,\n faArrowDownSmallBig: faArrowDownSmallBig,\n faSortSizeDownAlt: faSortSizeDownAlt,\n faBookMedical: faBookMedical,\n faFaceMelting: faFaceMelting,\n faPoo: faPoo,\n faPenClipSlash: faPenClipSlash,\n faPenAltSlash: faPenAltSlash,\n faQuoteRight: faQuoteRight,\n faQuoteRightAlt: faQuoteRightAlt,\n faScrollOld: faScrollOld,\n faGuitars: faGuitars,\n faPhoneXmark: faPhoneXmark,\n faHose: faHose,\n faClockSix: faClockSix,\n faShirt: faShirt,\n faTShirt: faTShirt,\n faTshirt: faTshirt,\n faBillboard: faBillboard,\n faSquareR: faSquareR,\n faCubes: faCubes,\n faEnvelopeOpenDollar: faEnvelopeOpenDollar,\n faDivide: faDivide,\n faSunCloud: faSunCloud,\n faLampFloor: faLampFloor,\n faSquare7: faSquare7,\n faTengeSign: faTengeSign,\n faTenge: faTenge,\n faHeadphones: faHeadphones,\n faHandsHolding: faHandsHolding,\n faCampfire: faCampfire,\n faCircleAmpersand: faCircleAmpersand,\n faSnowflakes: faSnowflakes,\n faHandsClapping: faHandsClapping,\n faRepublican: faRepublican,\n faLeafMaple: faLeafMaple,\n faArrowLeft: faArrowLeft,\n faPersonCircleXmark: faPersonCircleXmark,\n faRuler: faRuler,\n faCupStrawSwoosh: faCupStrawSwoosh,\n faTemperatureSun: faTemperatureSun,\n faTemperatureHot: faTemperatureHot,\n faAlignLeft: faAlignLeft,\n faDiceD6: faDiceD6,\n faRestroom: faRestroom,\n faHighDefinition: faHighDefinition,\n faRectangleHd: faRectangleHd,\n faJ: faJ,\n faGalaxy: faGalaxy,\n faUsersViewfinder: faUsersViewfinder,\n faFileVideo: faFileVideo,\n faCherries: faCherries,\n faUpRightFromSquare: faUpRightFromSquare,\n faExternalLinkAlt: faExternalLinkAlt,\n faCircleSort: faCircleSort,\n faSortCircle: faSortCircle,\n faTableCells: faTableCells,\n faTh: faTh,\n faFilePdf: faFilePdf,\n faSiren: faSiren,\n faArrowUpToDottedLine: faArrowUpToDottedLine,\n faImageLandscape: faImageLandscape,\n faLandscape: faLandscape,\n faTankWater: faTankWater,\n faCurlingStone: faCurlingStone,\n faCurling: faCurling,\n faGamepadModern: faGamepadModern,\n faGamepadAlt: faGamepadAlt,\n faMessagesQuestion: faMessagesQuestion,\n faBookBible: faBookBible,\n faBible: faBible,\n faO: faO,\n faSuitcaseMedical: faSuitcaseMedical,\n faMedkit: faMedkit,\n faBriefcaseArrowRight: faBriefcaseArrowRight,\n faExpandWide: faExpandWide,\n faClockElevenThirty: faClockElevenThirty,\n faRv: faRv,\n faUserSecret: faUserSecret,\n faOtter: faOtter,\n faDreidel: faDreidel,\n faPersonDress: faPersonDress,\n faFemale: faFemale,\n faCommentDollar: faCommentDollar,\n faBusinessTime: faBusinessTime,\n faBriefcaseClock: faBriefcaseClock,\n faFlowerTulip: faFlowerTulip,\n faPeoplePantsSimple: faPeoplePantsSimple,\n faCloudDrizzle: faCloudDrizzle,\n faTableCellsLarge: faTableCellsLarge,\n faThLarge: faThLarge,\n faBookTanakh: faBookTanakh,\n faTanakh: faTanakh,\n faSolarSystem: faSolarSystem,\n faSealQuestion: faSealQuestion,\n faPhoneVolume: faPhoneVolume,\n faVolumeControlPhone: faVolumeControlPhone,\n faDiscDrive: faDiscDrive,\n faHatCowboySide: faHatCowboySide,\n faTableRows: faTableRows,\n faRows: faRows,\n faLocationExclamation: faLocationExclamation,\n faMapMarkerExclamation: faMapMarkerExclamation,\n faFaceFearful: faFaceFearful,\n faClipboardUser: faClipboardUser,\n faBusSchool: faBusSchool,\n faFilmSlash: faFilmSlash,\n faSquareArrowDownRight: faSquareArrowDownRight,\n faBookSparkles: faBookSparkles,\n faBookSpells: faBookSpells,\n faWashingMachine: faWashingMachine,\n faWasher: faWasher,\n faChild: faChild,\n faLiraSign: faLiraSign,\n faUserVisor: faUserVisor,\n faFilePlusMinus: faFilePlusMinus,\n faChessClockFlip: faChessClockFlip,\n faChessClockAlt: faChessClockAlt,\n faSatellite: faSatellite,\n faPlaneLock: faPlaneLock,\n faSteeringWheel: faSteeringWheel,\n faTag: faTag,\n faStretcher: faStretcher,\n faBookSection: faBookSection,\n faBookLaw: faBookLaw,\n faInboxes: faInboxes,\n faCoffeeBean: faCoffeeBean,\n faCircleYen: faCircleYen,\n faBracketsCurly: faBracketsCurly,\n faEllipsisStrokeVertical: faEllipsisStrokeVertical,\n faEllipsisVAlt: faEllipsisVAlt,\n faComment: faComment,\n faSquare1: faSquare1,\n faCakeCandles: faCakeCandles,\n faBirthdayCake: faBirthdayCake,\n faCake: faCake,\n faHeadSide: faHeadSide,\n faEnvelope: faEnvelope,\n faDollyEmpty: faDollyEmpty,\n faFaceTissue: faFaceTissue,\n faAnglesUp: faAnglesUp,\n faAngleDoubleUp: faAngleDoubleUp,\n faBinRecycle: faBinRecycle,\n faPaperclip: faPaperclip,\n faChartLineDown: faChartLineDown,\n faArrowRightToCity: faArrowRightToCity,\n faLockA: faLockA,\n faRibbon: faRibbon,\n faLungs: faLungs,\n faPersonPinball: faPersonPinball,\n faArrowUp91: faArrowUp91,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faAppleCore: faAppleCore,\n faCircleY: faCircleY,\n faH6: faH6,\n faLitecoinSign: faLitecoinSign,\n faCircleSmall: faCircleSmall,\n faBorderNone: faBorderNone,\n faArrowTurnDownLeft: faArrowTurnDownLeft,\n faCircleNodes: faCircleNodes,\n faParachuteBox: faParachuteBox,\n faMessageMedical: faMessageMedical,\n faCommentAltMedical: faCommentAltMedical,\n faRugbyBall: faRugbyBall,\n faCommentMusic: faCommentMusic,\n faIndent: faIndent,\n faTreeDeciduous: faTreeDeciduous,\n faTreeAlt: faTreeAlt,\n faPuzzlePieceSimple: faPuzzlePieceSimple,\n faPuzzlePieceAlt: faPuzzlePieceAlt,\n faTruckFieldUn: faTruckFieldUn,\n faNfcTrash: faNfcTrash,\n faHourglass: faHourglass,\n faHourglassEmpty: faHourglassEmpty,\n faMountain: faMountain,\n faFileXmark: faFileXmark,\n faFileTimes: faFileTimes,\n faHouseHeart: faHouseHeart,\n faHomeHeart: faHomeHeart,\n faHouseChimneyBlank: faHouseChimneyBlank,\n faMeterBolt: faMeterBolt,\n faUserDoctor: faUserDoctor,\n faUserMd: faUserMd,\n faSlashBack: faSlashBack,\n faCircleInfo: faCircleInfo,\n faInfoCircle: faInfoCircle,\n faFishingRod: faFishingRod,\n faHammerCrash: faHammerCrash,\n faMessageHeart: faMessageHeart,\n faCloudMeatball: faCloudMeatball,\n faCameraPolaroid: faCameraPolaroid,\n faCamera: faCamera,\n faCameraAlt: faCameraAlt,\n faSquareVirus: faSquareVirus,\n faCartArrowUp: faCartArrowUp,\n faMeteor: faMeteor,\n faCarOn: faCarOn,\n faSleigh: faSleigh,\n faArrowDown19: faArrowDown19,\n faSortNumericAsc: faSortNumericAsc,\n faSortNumericDown: faSortNumericDown,\n faBuoyMooring: faBuoyMooring,\n faSquare4: faSquare4,\n faHandHoldingDroplet: faHandHoldingDroplet,\n faHandHoldingWater: faHandHoldingWater,\n faTricycleAdult: faTricycleAdult,\n faWaveform: faWaveform,\n faWater: faWater,\n faStarSharpHalfStroke: faStarSharpHalfStroke,\n faStarSharpHalfAlt: faStarSharpHalfAlt,\n faNfcSignal: faNfcSignal,\n faPlaneProp: faPlaneProp,\n faCalendarCheck: faCalendarCheck,\n faClockDesk: faClockDesk,\n faCalendarClock: faCalendarClock,\n faCalendarTime: faCalendarTime,\n faBraille: faBraille,\n faPrescriptionBottleMedical: faPrescriptionBottleMedical,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faPlateUtensils: faPlateUtensils,\n faFamilyPants: faFamilyPants,\n faHoseReel: faHoseReel,\n faHouseWindow: faHouseWindow,\n faLandmark: faLandmark,\n faTruck: faTruck,\n faCrosshairs: faCrosshairs,\n faCloudRainbow: faCloudRainbow,\n faPersonCane: faPersonCane,\n faAlien: faAlien,\n faTent: faTent,\n faLaptopBinary: faLaptopBinary,\n faVestPatches: faVestPatches,\n faPeopleDressSimple: faPeopleDressSimple,\n faCheckDouble: faCheckDouble,\n faArrowDownAZ: faArrowDownAZ,\n faSortAlphaAsc: faSortAlphaAsc,\n faSortAlphaDown: faSortAlphaDown,\n faBowlingBallPin: faBowlingBallPin,\n faBellSchoolSlash: faBellSchoolSlash,\n faPlusLarge: faPlusLarge,\n faMoneyBillWheat: faMoneyBillWheat,\n faCameraViewfinder: faCameraViewfinder,\n faScreenshot: faScreenshot,\n faMessageMusic: faMessageMusic,\n faCommentAltMusic: faCommentAltMusic,\n faCarBuilding: faCarBuilding,\n faBorderBottomRight: faBorderBottomRight,\n faBorderStyleAlt: faBorderStyleAlt,\n faOctagon: faOctagon,\n faCommentArrowUpRight: faCommentArrowUpRight,\n faOctagonDivide: faOctagonDivide,\n faCookie: faCookie,\n faArrowRotateLeft: faArrowRotateLeft,\n faArrowLeftRotate: faArrowLeftRotate,\n faArrowRotateBack: faArrowRotateBack,\n faArrowRotateBackward: faArrowRotateBackward,\n faUndo: faUndo,\n faTvMusic: faTvMusic,\n faHardDrive: faHardDrive,\n faHdd: faHdd,\n faReel: faReel,\n faFaceGrinSquintTears: faFaceGrinSquintTears,\n faGrinSquintTears: faGrinSquintTears,\n faDumbbell: faDumbbell,\n faRectangleList: faRectangleList,\n faListAlt: faListAlt,\n faTarpDroplet: faTarpDroplet,\n faAlarmExclamation: faAlarmExclamation,\n faHouseMedicalCircleCheck: faHouseMedicalCircleCheck,\n faTrafficCone: faTrafficCone,\n faGrate: faGrate,\n faArrowDownRight: faArrowDownRight,\n faPersonSkiingNordic: faPersonSkiingNordic,\n faSkiingNordic: faSkiingNordic,\n faCalendarPlus: faCalendarPlus,\n faPersonFromPortal: faPersonFromPortal,\n faPortalExit: faPortalExit,\n faPlaneArrival: faPlaneArrival,\n faCowbellCirclePlus: faCowbellCirclePlus,\n faCowbellMore: faCowbellMore,\n faCircleLeft: faCircleLeft,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faDistributeSpacingVertical: faDistributeSpacingVertical,\n faSignalBarsFair: faSignalBarsFair,\n faSignalAlt2: faSignalAlt2,\n faSportsball: faSportsball,\n faGameConsoleHandheldCrank: faGameConsoleHandheldCrank,\n faTrainSubway: faTrainSubway,\n faSubway: faSubway,\n faChartGantt: faChartGantt,\n faFaceSmileUpsideDown: faFaceSmileUpsideDown,\n faBallPile: faBallPile,\n faBadgeDollar: faBadgeDollar,\n faMoneyBillsSimple: faMoneyBillsSimple,\n faMoneyBillsAlt: faMoneyBillsAlt,\n faListTimeline: faListTimeline,\n faIndianRupeeSign: faIndianRupeeSign,\n faIndianRupee: faIndianRupee,\n faInr: faInr,\n faCropSimple: faCropSimple,\n faCropAlt: faCropAlt,\n faMoneyBill1: faMoneyBill1,\n faMoneyBillAlt: faMoneyBillAlt,\n faLeftLong: faLeftLong,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faKeyboardDown: faKeyboardDown,\n faCircleUpRight: faCircleUpRight,\n faCloudBoltMoon: faCloudBoltMoon,\n faThunderstormMoon: faThunderstormMoon,\n faDna: faDna,\n faVirusSlash: faVirusSlash,\n faBracketRoundRight: faBracketRoundRight,\n faCircleSterling: faCircleSterling,\n faCircle5: faCircle5,\n faMinus: faMinus,\n faSubtract: faSubtract,\n faFireFlame: faFireFlame,\n faFlame: faFlame,\n faRightToLine: faRightToLine,\n faArrowAltToRight: faArrowAltToRight,\n faGif: faGif,\n faChess: faChess,\n faTrashSlash: faTrashSlash,\n faArrowLeftLong: faArrowLeftLong,\n faLongArrowLeft: faLongArrowLeft,\n faPlugCircleCheck: faPlugCircleCheck,\n faFontCase: faFontCase,\n faStreetView: faStreetView,\n faArrowDownLeft: faArrowDownLeft,\n faFrancSign: faFrancSign,\n faFlaskRoundPoison: faFlaskRoundPoison,\n faFlaskPoison: faFlaskPoison,\n faVolumeOff: faVolumeOff,\n faBookCircleArrowRight: faBookCircleArrowRight,\n faChartUser: faChartUser,\n faUserChart: faUserChart,\n faHandsAslInterpreting: faHandsAslInterpreting,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAslInterpreting: faAslInterpreting,\n faHandsAmericanSignLanguageInterpreting: faHandsAmericanSignLanguageInterpreting,\n faPresentationScreen: faPresentationScreen,\n faPresentation: faPresentation,\n faCircleBolt: faCircleBolt,\n faFaceSmileHalo: faFaceSmileHalo,\n faCartCircleArrowDown: faCartCircleArrowDown,\n faHousePersonReturn: faHousePersonReturn,\n faHousePersonArrive: faHousePersonArrive,\n faHouseReturn: faHouseReturn,\n faMessageXmark: faMessageXmark,\n faCommentAltTimes: faCommentAltTimes,\n faMessageTimes: faMessageTimes,\n faFileCertificate: faFileCertificate,\n faFileAward: faFileAward,\n faUserDoctorHairLong: faUserDoctorHairLong,\n faCameraSecurity: faCameraSecurity,\n faCameraHome: faCameraHome,\n faGear: faGear,\n faCog: faCog,\n faDropletSlash: faDropletSlash,\n faTintSlash: faTintSlash,\n faBookHeart: faBookHeart,\n faMosque: faMosque,\n faDuck: faDuck,\n faMosquito: faMosquito,\n faStarOfDavid: faStarOfDavid,\n faFlagSwallowtail: faFlagSwallowtail,\n faFlagAlt: faFlagAlt,\n faPersonMilitaryRifle: faPersonMilitaryRifle,\n faCarGarage: faCarGarage,\n faCartShopping: faCartShopping,\n faShoppingCart: faShoppingCart,\n faBookFont: faBookFont,\n faShieldPlus: faShieldPlus,\n faVials: faVials,\n faEyeDropperFull: faEyeDropperFull,\n faDistributeSpacingHorizontal: faDistributeSpacingHorizontal,\n faTabletRugged: faTabletRugged,\n faTemperatureSnow: faTemperatureSnow,\n faTemperatureFrigid: faTemperatureFrigid,\n faMoped: faMoped,\n faFaceSmilePlus: faFaceSmilePlus,\n faSmilePlus: faSmilePlus,\n faRadioTuner: faRadioTuner,\n faRadioAlt: faRadioAlt,\n faFaceSwear: faFaceSwear,\n faWaterArrowDown: faWaterArrowDown,\n faWaterLower: faWaterLower,\n faScannerTouchscreen: faScannerTouchscreen,\n faCircle7: faCircle7,\n faPlugCirclePlus: faPlugCirclePlus,\n faPersonSkiJumping: faPersonSkiJumping,\n faSkiJump: faSkiJump,\n faPlaceOfWorship: faPlaceOfWorship,\n faWaterArrowUp: faWaterArrowUp,\n faWaterRise: faWaterRise,\n faWaveformLines: faWaveformLines,\n faWaveformPath: faWaveformPath,\n faSplit: faSplit,\n faFilmCanister: faFilmCanister,\n faFilmCannister: faFilmCannister,\n faFolderXmark: faFolderXmark,\n faFolderTimes: faFolderTimes,\n faToiletPaperBlank: faToiletPaperBlank,\n faToiletPaperAlt: faToiletPaperAlt,\n faTabletScreen: faTabletScreen,\n faTabletAndroidAlt: faTabletAndroidAlt,\n faHexagonVerticalNftSlanted: faHexagonVerticalNftSlanted,\n faFolderMusic: faFolderMusic,\n faDisplayMedical: faDisplayMedical,\n faDesktopMedical: faDesktopMedical,\n faShareAll: faShareAll,\n faPeapod: faPeapod,\n faChessClock: faChessClock,\n faAxe: faAxe,\n faSquareD: faSquareD,\n faGripVertical: faGripVertical,\n faMobileSignalOut: faMobileSignalOut,\n faArrowTurnUp: faArrowTurnUp,\n faLevelUp: faLevelUp,\n faU: faU,\n faArrowUpFromDottedLine: faArrowUpFromDottedLine,\n faSquareRootVariable: faSquareRootVariable,\n faSquareRootAlt: faSquareRootAlt,\n faLightSwitchOn: faLightSwitchOn,\n faArrowDownArrowUp: faArrowDownArrowUp,\n faSortAlt: faSortAlt,\n faRaindrops: faRaindrops,\n faDash: faDash,\n faMinusLarge: faMinusLarge,\n faClock: faClock,\n faClockFour: faClockFour,\n faInputNumeric: faInputNumeric,\n faTruckTow: faTruckTow,\n faBackwardStep: faBackwardStep,\n faStepBackward: faStepBackward,\n faPallet: faPallet,\n faCarBolt: faCarBolt,\n faArrowsMaximize: faArrowsMaximize,\n faExpandArrows: faExpandArrows,\n faFaucet: faFaucet,\n faCloudSleet: faCloudSleet,\n faLampStreet: faLampStreet,\n faListRadio: faListRadio,\n faPenNibSlash: faPenNibSlash,\n faBaseballBatBall: faBaseballBatBall,\n faSquareUpLeft: faSquareUpLeft,\n faOverline: faOverline,\n faS: faS,\n faTimeline: faTimeline,\n faKeyboard: faKeyboard,\n faArrowsFromDottedLine: faArrowsFromDottedLine,\n faUsbDrive: faUsbDrive,\n faBallot: faBallot,\n faCaretDown: faCaretDown,\n faLocationDotSlash: faLocationDotSlash,\n faMapMarkerAltSlash: faMapMarkerAltSlash,\n faCards: faCards,\n faHouseChimneyMedical: faHouseChimneyMedical,\n faClinicMedical: faClinicMedical,\n faBoxingGlove: faBoxingGlove,\n faGloveBoxing: faGloveBoxing,\n faTemperatureThreeQuarters: faTemperatureThreeQuarters,\n faTemperature3: faTemperature3,\n faThermometer3: faThermometer3,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faBellSchool: faBellSchool,\n faMobileScreen: faMobileScreen,\n faMobileAndroidAlt: faMobileAndroidAlt,\n faPlaneUp: faPlaneUp,\n faFolderHeart: faFolderHeart,\n faCircleLocationArrow: faCircleLocationArrow,\n faLocationCircle: faLocationCircle,\n faFaceHeadBandage: faFaceHeadBandage,\n faSushiRoll: faSushiRoll,\n faMakiRoll: faMakiRoll,\n faMakizushi: faMakizushi,\n faCarBump: faCarBump,\n faPiggyBank: faPiggyBank,\n faRacquet: faRacquet,\n faCarMirrors: faCarMirrors,\n faIndustryWindows: faIndustryWindows,\n faIndustryAlt: faIndustryAlt,\n faBoltAuto: faBoltAuto,\n faBatteryHalf: faBatteryHalf,\n faBattery3: faBattery3,\n faFluxCapacitor: faFluxCapacitor,\n faMountainCity: faMountainCity,\n faCoins: faCoins,\n faHoneyPot: faHoneyPot,\n faOlive: faOlive,\n faKhanda: faKhanda,\n faFilterList: faFilterList,\n faOutlet: faOutlet,\n faSliders: faSliders,\n faSlidersH: faSlidersH,\n faCauldron: faCauldron,\n faPeople: faPeople,\n faFolderTree: faFolderTree,\n faNetworkWired: faNetworkWired,\n faCroissant: faCroissant,\n faMapPin: faMapPin,\n faHamsa: faHamsa,\n faCentSign: faCentSign,\n faSwordsLaser: faSwordsLaser,\n faFlask: faFlask,\n faPersonPregnant: faPersonPregnant,\n faSquareU: faSquareU,\n faWandSparkles: faWandSparkles,\n faRouter: faRouter,\n faEllipsisVertical: faEllipsisVertical,\n faEllipsisV: faEllipsisV,\n faSwordLaserAlt: faSwordLaserAlt,\n faTicket: faTicket,\n faPowerOff: faPowerOff,\n faCoin: faCoin,\n faLaptopSlash: faLaptopSlash,\n faRightLong: faRightLong,\n faLongArrowAltRight: faLongArrowAltRight,\n faCircleB: faCircleB,\n faPersonDressSimple: faPersonDressSimple,\n faPipeCollar: faPipeCollar,\n faLightsHoliday: faLightsHoliday,\n faCitrus: faCitrus,\n faFlagUsa: faFlagUsa,\n faLaptopFile: faLaptopFile,\n faTty: faTty,\n faTeletype: faTeletype,\n faChartTreeMap: faChartTreeMap,\n faDiagramNext: faDiagramNext,\n faPersonRifle: faPersonRifle,\n faClockFiveThirty: faClockFiveThirty,\n faPipeValve: faPipeValve,\n faArrowUpFromArc: faArrowUpFromArc,\n faFaceSpiralEyes: faFaceSpiralEyes,\n faCompressWide: faCompressWide,\n faCirclePhoneHangup: faCirclePhoneHangup,\n faPhoneCircleDown: faPhoneCircleDown,\n faGearComplexCode: faGearComplexCode,\n faHouseMedicalCircleExclamation: faHouseMedicalCircleExclamation,\n faBadminton: faBadminton,\n faClosedCaptioning: faClosedCaptioning,\n faPersonHiking: faPersonHiking,\n faHiking: faHiking,\n faRightFromLine: faRightFromLine,\n faArrowAltFromLeft: faArrowAltFromLeft,\n faVenusDouble: faVenusDouble,\n faImages: faImages,\n faCalculator: faCalculator,\n faShuttlecock: faShuttlecock,\n faUserHair: faUserHair,\n faEyeEvil: faEyeEvil,\n faPeoplePulling: faPeoplePulling,\n faN: faN,\n faGarage: faGarage,\n faCableCar: faCableCar,\n faTram: faTram,\n faShovelSnow: faShovelSnow,\n faCloudRain: faCloudRain,\n faFaceLying: faFaceLying,\n faSprinkler: faSprinkler,\n faBuildingCircleXmark: faBuildingCircleXmark,\n faPersonSledding: faPersonSledding,\n faSledding: faSledding,\n faGameConsoleHandheld: faGameConsoleHandheld,\n faShip: faShip,\n faClockSixThirty: faClockSixThirty,\n faBatterySlash: faBatterySlash,\n faTugrikSign: faTugrikSign,\n faArrowsDownToLine: faArrowsDownToLine,\n faDownload: faDownload,\n faShelves: faShelves,\n faInventory: faInventory,\n faCloudSnow: faCloudSnow,\n faFaceGrin: faFaceGrin,\n faGrin: faGrin,\n faDeleteLeft: faDeleteLeft,\n faBackspace: faBackspace,\n faOven: faOven,\n faCloudBinary: faCloudBinary,\n faEyeDropper: faEyeDropper,\n faEyeDropperEmpty: faEyeDropperEmpty,\n faEyedropper: faEyedropper,\n faCommentCaptions: faCommentCaptions,\n faCommentsQuestion: faCommentsQuestion,\n faScribble: faScribble,\n faRotateExclamation: faRotateExclamation,\n faFileCircleCheck: faFileCircleCheck,\n faGlass: faGlass,\n faLoader: faLoader,\n faForward: faForward,\n faUserPilot: faUserPilot,\n faMobile: faMobile,\n faMobileAndroid: faMobileAndroid,\n faMobilePhone: faMobilePhone,\n faCodePullRequestClosed: faCodePullRequestClosed,\n faFaceMeh: faFaceMeh,\n faMeh: faMeh,\n faAlignCenter: faAlignCenter,\n faBookSkull: faBookSkull,\n faBookDead: faBookDead,\n faIdCard: faIdCard,\n faDriversLicense: faDriversLicense,\n faFaceDotted: faFaceDotted,\n faFaceWorried: faFaceWorried,\n faOutdent: faOutdent,\n faDedent: faDedent,\n faHeartCircleExclamation: faHeartCircleExclamation,\n faHouse: faHouse,\n faHome: faHome,\n faHomeAlt: faHomeAlt,\n faHomeLgAlt: faHomeLgAlt,\n faVectorCircle: faVectorCircle,\n faCarCircleBolt: faCarCircleBolt,\n faCalendarWeek: faCalendarWeek,\n faFlyingDisc: faFlyingDisc,\n faLaptopMedical: faLaptopMedical,\n faSquareDownRight: faSquareDownRight,\n faB: faB,\n faSeatAirline: faSeatAirline,\n faMoonOverSun: faMoonOverSun,\n faEclipseAlt: faEclipseAlt,\n faPipe: faPipe,\n faFileMedical: faFileMedical,\n faPotato: faPotato,\n faDiceOne: faDiceOne,\n faCircleA: faCircleA,\n faHelmetBattle: faHelmetBattle,\n faButter: faButter,\n faBlanketFire: faBlanketFire,\n faKiwiBird: faKiwiBird,\n faCastle: faCastle,\n faGolfClub: faGolfClub,\n faArrowRightArrowLeft: faArrowRightArrowLeft,\n faExchange: faExchange,\n faRotateRight: faRotateRight,\n faRedoAlt: faRedoAlt,\n faRotateForward: faRotateForward,\n faUtensils: faUtensils,\n faCutlery: faCutlery,\n faArrowUpWideShort: faArrowUpWideShort,\n faSortAmountUp: faSortAmountUp,\n faChartPieSimpleCircleDollar: faChartPieSimpleCircleDollar,\n faBalloons: faBalloons,\n faMillSign: faMillSign,\n faBowlRice: faBowlRice,\n faTimelineArrow: faTimelineArrow,\n faSkull: faSkull,\n faGameBoardSimple: faGameBoardSimple,\n faGameBoardAlt: faGameBoardAlt,\n faCircleVideo: faCircleVideo,\n faVideoCircle: faVideoCircle,\n faChartScatterBubble: faChartScatterBubble,\n faHouseTurret: faHouseTurret,\n faBanana: faBanana,\n faHandHoldingSkull: faHandHoldingSkull,\n faPeopleDress: faPeopleDress,\n faLoveseat: faLoveseat,\n faCouchSmall: faCouchSmall,\n faTowerBroadcast: faTowerBroadcast,\n faBroadcastTower: faBroadcastTower,\n faTruckPickup: faTruckPickup,\n faBlockQuote: faBlockQuote,\n faUpLong: faUpLong,\n faLongArrowAltUp: faLongArrowAltUp,\n faStop: faStop,\n faCodeMerge: faCodeMerge,\n faMoneyCheckDollarPen: faMoneyCheckDollarPen,\n faMoneyCheckEditAlt: faMoneyCheckEditAlt,\n faUpFromLine: faUpFromLine,\n faArrowAltFromBottom: faArrowAltFromBottom,\n faUpload: faUpload,\n faHurricane: faHurricane,\n faGridRound2Plus: faGridRound2Plus,\n faPeoplePants: faPeoplePants,\n faMound: faMound,\n faWindsock: faWindsock,\n faCircleHalf: faCircleHalf,\n faBrakeWarning: faBrakeWarning,\n faToiletPortable: faToiletPortable,\n faCompactDisc: faCompactDisc,\n faFileArrowDown: faFileArrowDown,\n faFileDownload: faFileDownload,\n faSaxophoneFire: faSaxophoneFire,\n faSaxHot: faSaxHot,\n faCameraWebSlash: faCameraWebSlash,\n faWebcamSlash: faWebcamSlash,\n faFolderMedical: faFolderMedical,\n faFolderGear: faFolderGear,\n faFolderCog: faFolderCog,\n faHandWave: faHandWave,\n faArrowUpArrowDown: faArrowUpArrowDown,\n faSortUpDown: faSortUpDown,\n faCaravan: faCaravan,\n faShieldCat: faShieldCat,\n faMessageSlash: faMessageSlash,\n faCommentAltSlash: faCommentAltSlash,\n faBolt: faBolt,\n faZap: faZap,\n faTrashCanCheck: faTrashCanCheck,\n faGlassWater: faGlassWater,\n faOilWell: faOilWell,\n faPersonSimple: faPersonSimple,\n faVault: faVault,\n faMars: faMars,\n faToilet: faToilet,\n faPlaneCircleXmark: faPlaneCircleXmark,\n faYenSign: faYenSign,\n faCny: faCny,\n faJpy: faJpy,\n faRmb: faRmb,\n faYen: faYen,\n faGearCode: faGearCode,\n faNotes: faNotes,\n faRubleSign: faRubleSign,\n faRouble: faRouble,\n faRub: faRub,\n faRuble: faRuble,\n faTrashUndo: faTrashUndo,\n faTrashArrowTurnLeft: faTrashArrowTurnLeft,\n faChampagneGlass: faChampagneGlass,\n faGlassChampagne: faGlassChampagne,\n faObjectsAlignCenterHorizontal: faObjectsAlignCenterHorizontal,\n faSun: faSun,\n faTrashCanSlash: faTrashCanSlash,\n faTrashAltSlash: faTrashAltSlash,\n faScreenUsers: faScreenUsers,\n faUsersClass: faUsersClass,\n faGuitar: faGuitar,\n faSquareArrowLeft: faSquareArrowLeft,\n faArrowSquareLeft: faArrowSquareLeft,\n faSquare8: faSquare8,\n faFaceSmileHearts: faFaceSmileHearts,\n faBracketsSquare: faBracketsSquare,\n faBrackets: faBrackets,\n faLaptopArrowDown: faLaptopArrowDown,\n faHockeyStickPuck: faHockeyStickPuck,\n faHouseTree: faHouseTree,\n faSignalFair: faSignalFair,\n faSignal2: faSignal2,\n faFaceLaughWink: faFaceLaughWink,\n faLaughWink: faLaughWink,\n faCircleDollar: faCircleDollar,\n faDollarCircle: faDollarCircle,\n faUsdCircle: faUsdCircle,\n faHorseHead: faHorseHead,\n faArrowsRepeat: faArrowsRepeat,\n faRepeatAlt: faRepeatAlt,\n faBoreHole: faBoreHole,\n faIndustry: faIndustry,\n faImagePolaroid: faImagePolaroid,\n faWaveTriangle: faWaveTriangle,\n faPersonRunningFast: faPersonRunningFast,\n faCircleDown: faCircleDown,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faGrill: faGrill,\n faArrowsTurnToDots: faArrowsTurnToDots,\n faChartMixed: faChartMixed,\n faAnalytics: faAnalytics,\n faFlorinSign: faFlorinSign,\n faArrowDownShortWide: faArrowDownShortWide,\n faSortAmountDesc: faSortAmountDesc,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faLessThan: faLessThan,\n faDisplayCode: faDisplayCode,\n faDesktopCode: faDesktopCode,\n faFaceDrooling: faFaceDrooling,\n faOilTemperature: faOilTemperature,\n faOilTemp: faOilTemp,\n faSquareQuestion: faSquareQuestion,\n faQuestionSquare: faQuestionSquare,\n faAirConditioner: faAirConditioner,\n faAngleDown: faAngleDown,\n faMountains: faMountains,\n faOmega: faOmega,\n faCarTunnel: faCarTunnel,\n faPersonDollyEmpty: faPersonDollyEmpty,\n faPanFood: faPanFood,\n faHeadSideCough: faHeadSideCough,\n faGripLines: faGripLines,\n faThumbsDown: faThumbsDown,\n faUserLock: faUserLock,\n faArrowRightLong: faArrowRightLong,\n faLongArrowRight: faLongArrowRight,\n faTicketsAirline: faTicketsAirline,\n faAnchorCircleXmark: faAnchorCircleXmark,\n faEllipsis: faEllipsis,\n faEllipsisH: faEllipsisH,\n faNfcSlash: faNfcSlash,\n faChessPawn: faChessPawn,\n faKitMedical: faKitMedical,\n faFirstAid: faFirstAid,\n faGrid2Plus: faGrid2Plus,\n faBells: faBells,\n faPersonThroughWindow: faPersonThroughWindow,\n faToolbox: faToolbox,\n faEnvelopeDot: faEnvelopeDot,\n faEnvelopeBadge: faEnvelopeBadge,\n faHandsHoldingCircle: faHandsHoldingCircle,\n faBug: faBug,\n faBowlChopsticks: faBowlChopsticks,\n faCreditCard: faCreditCard,\n faCreditCardAlt: faCreditCardAlt,\n faCircleS: faCircleS,\n faBoxBallot: faBoxBallot,\n faCar: faCar,\n faAutomobile: faAutomobile,\n faHandHoldingHand: faHandHoldingHand,\n faUserTieHair: faUserTieHair,\n faPodiumStar: faPodiumStar,\n faUserHairMullet: faUserHairMullet,\n faBusinessFront: faBusinessFront,\n faPartyBack: faPartyBack,\n faTrianBalbot: faTrianBalbot,\n faMicrophoneStand: faMicrophoneStand,\n faBookOpenReader: faBookOpenReader,\n faBookReader: faBookReader,\n faFamilyDress: faFamilyDress,\n faCircleX: faCircleX,\n faCabin: faCabin,\n faMountainSun: faMountainSun,\n faChartSimpleHorizontal: faChartSimpleHorizontal,\n faBluetooth: faBluetooth,\n faArrowsLeftRightToLine: faArrowsLeftRightToLine,\n faHandBackPointLeft: faHandBackPointLeft,\n faMessageDots: faMessageDots,\n faCommentAltDots: faCommentAltDots,\n faMessaging: faMessaging,\n faFileHeart: faFileHeart,\n faBeerMug: faBeerMug,\n faBeerFoam: faBeerFoam,\n faDiceD20: faDiceD20,\n faDrone: faDrone,\n faTruckDroplet: faTruckDroplet,\n faFileCircleXmark: faFileCircleXmark,\n faTemperatureArrowUp: faTemperatureArrowUp,\n faTemperatureUp: faTemperatureUp,\n faMedal: faMedal,\n faBed: faBed,\n faBookCopy: faBookCopy,\n faSquareH: faSquareH,\n faHSquare: faHSquare,\n faSquareC: faSquareC,\n faClockTwo: faClockTwo,\n faSquareEllipsisVertical: faSquareEllipsisVertical,\n faCalendarUsers: faCalendarUsers,\n faPodcast: faPodcast,\n faBee: faBee,\n faTemperatureFull: faTemperatureFull,\n faTemperature4: faTemperature4,\n faThermometer4: faThermometer4,\n faThermometerFull: faThermometerFull,\n faBell: faBell,\n faCandyBar: faCandyBar,\n faChocolateBar: faChocolateBar,\n faXmarkLarge: faXmarkLarge,\n faPinata: faPinata,\n faArrowsFromLine: faArrowsFromLine,\n faSuperscript: faSuperscript,\n faBowlSpoon: faBowlSpoon,\n faHexagonCheck: faHexagonCheck,\n faPlugCircleXmark: faPlugCircleXmark,\n faStarOfLife: faStarOfLife,\n faPhoneSlash: faPhoneSlash,\n faTrafficLightStop: faTrafficLightStop,\n faPaintRoller: faPaintRoller,\n faAccentGrave: faAccentGrave,\n faHandshakeAngle: faHandshakeAngle,\n faHandsHelping: faHandsHelping,\n faCircle0: faCircle0,\n faDialMedLow: faDialMedLow,\n faLocationDot: faLocationDot,\n faMapMarkerAlt: faMapMarkerAlt,\n faCrab: faCrab,\n faBoxOpenFull: faBoxOpenFull,\n faBoxFull: faBoxFull,\n faFile: faFile,\n faGreaterThan: faGreaterThan,\n faQuotes: faQuotes,\n faPretzel: faPretzel,\n faPersonSwimming: faPersonSwimming,\n faSwimmer: faSwimmer,\n faArrowDown: faArrowDown,\n faUserRobotXmarks: faUserRobotXmarks,\n faMessageQuote: faMessageQuote,\n faCommentAltQuote: faCommentAltQuote,\n faCandyCorn: faCandyCorn,\n faFolderMagnifyingGlass: faFolderMagnifyingGlass,\n faFolderSearch: faFolderSearch,\n faNotebook: faNotebook,\n faDroplet: faDroplet,\n faTint: faTint,\n faBullseyePointer: faBullseyePointer,\n faEraser: faEraser,\n faHexagonImage: faHexagonImage,\n faEarthAmericas: faEarthAmericas,\n faEarth: faEarth,\n faEarthAmerica: faEarthAmerica,\n faGlobeAmericas: faGlobeAmericas,\n faCrateApple: faCrateApple,\n faAppleCrate: faAppleCrate,\n faPersonBurst: faPersonBurst,\n faGameBoard: faGameBoard,\n faHatChef: faHatChef,\n faHandBackPointRight: faHandBackPointRight,\n faDove: faDove,\n faSnowflakeDroplets: faSnowflakeDroplets,\n faBatteryEmpty: faBatteryEmpty,\n faBattery0: faBattery0,\n faGrid4: faGrid4,\n faSocks: faSocks,\n faFaceSunglasses: faFaceSunglasses,\n faInbox: faInbox,\n faSquare0: faSquare0,\n faSection: faSection,\n faSquareThisWayUp: faSquareThisWayUp,\n faBoxUp: faBoxUp,\n faGaugeHigh: faGaugeHigh,\n faTachometerAlt: faTachometerAlt,\n faTachometerAltFast: faTachometerAltFast,\n faSquareAmpersand: faSquareAmpersand,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faLampDesk: faLampDesk,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalWide: faHospitalWide,\n faPollPeople: faPollPeople,\n faWhiskeyGlassIce: faWhiskeyGlassIce,\n faGlassWhiskeyRocks: faGlassWhiskeyRocks,\n faWineBottle: faWineBottle,\n faChessRook: faChessRook,\n faUserBountyHunter: faUserBountyHunter,\n faBarsStaggered: faBarsStaggered,\n faReorder: faReorder,\n faStream: faStream,\n faDiagramSankey: faDiagramSankey,\n faCloudHailMixed: faCloudHailMixed,\n faCircleUpLeft: faCircleUpLeft,\n faDharmachakra: faDharmachakra,\n faObjectsAlignLeft: faObjectsAlignLeft,\n faOilCanDrip: faOilCanDrip,\n faFaceSmilingHands: faFaceSmilingHands,\n faBroccoli: faBroccoli,\n faRouteInterstate: faRouteInterstate,\n faEarMuffs: faEarMuffs,\n faHotdog: faHotdog,\n faTransporterEmpty: faTransporterEmpty,\n faPersonWalkingWithCane: faPersonWalkingWithCane,\n faBlind: faBlind,\n faAngle90: faAngle90,\n faRectangleTerminal: faRectangleTerminal,\n faKite: faKite,\n faDrum: faDrum,\n faScrubber: faScrubber,\n faIceCream: faIceCream,\n faHeartCircleBolt: faHeartCircleBolt,\n faFishBones: faFishBones,\n faDeerRudolph: faDeerRudolph,\n faFax: faFax,\n faParagraph: faParagraph,\n faHeadSideHeart: faHeadSideHeart,\n faSquareE: faSquareE,\n faMeterFire: faMeterFire,\n faCloudHail: faCloudHail,\n faCheckToSlot: faCheckToSlot,\n faVoteYea: faVoteYea,\n faMoneyFromBracket: faMoneyFromBracket,\n faStarHalf: faStarHalf,\n faCarBus: faCarBus,\n faSpeaker: faSpeaker,\n faTimer: faTimer,\n faBoxesStacked: faBoxesStacked,\n faBoxes: faBoxes,\n faBoxesAlt: faBoxesAlt,\n faGrillHot: faGrillHot,\n faBallotCheck: faBallotCheck,\n faLink: faLink,\n faChain: faChain,\n faEarListen: faEarListen,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faFileMinus: faFileMinus,\n faTreeCity: faTreeCity,\n faPlay: faPlay,\n faFont: faFont,\n faCupTogo: faCupTogo,\n faCoffeeTogo: faCoffeeTogo,\n faSquareDownLeft: faSquareDownLeft,\n faBurgerLettuce: faBurgerLettuce,\n faRupiahSign: faRupiahSign,\n faMagnifyingGlass: faMagnifyingGlass,\n faSearch: faSearch,\n faTableTennisPaddleBall: faTableTennisPaddleBall,\n faPingPongPaddleBall: faPingPongPaddleBall,\n faTableTennis: faTableTennis,\n faPersonDotsFromLine: faPersonDotsFromLine,\n faDiagnoses: faDiagnoses,\n faChevronsDown: faChevronsDown,\n faChevronDoubleDown: faChevronDoubleDown,\n faTrashCanArrowUp: faTrashCanArrowUp,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faSignalGood: faSignalGood,\n faSignal3: faSignal3,\n faLocationQuestion: faLocationQuestion,\n faMapMarkerQuestion: faMapMarkerQuestion,\n faFloppyDiskCircleXmark: faFloppyDiskCircleXmark,\n faFloppyDiskTimes: faFloppyDiskTimes,\n faSaveCircleXmark: faSaveCircleXmark,\n faSaveTimes: faSaveTimes,\n faNairaSign: faNairaSign,\n faPeach: faPeach,\n faTaxiBus: faTaxiBus,\n faBracketCurly: faBracketCurly,\n faBracketCurlyLeft: faBracketCurlyLeft,\n faLobster: faLobster,\n faCartFlatbedEmpty: faCartFlatbedEmpty,\n faDollyFlatbedEmpty: faDollyFlatbedEmpty,\n faColon: faColon,\n faCartArrowDown: faCartArrowDown,\n faWand: faWand,\n faWalkieTalkie: faWalkieTalkie,\n faFilePen: faFilePen,\n faFileEdit: faFileEdit,\n faReceipt: faReceipt,\n faTablePicnic: faTablePicnic,\n faSquarePen: faSquarePen,\n faPenSquare: faPenSquare,\n faPencilSquare: faPencilSquare,\n faCircleMicrophoneLines: faCircleMicrophoneLines,\n faMicrophoneCircleAlt: faMicrophoneCircleAlt,\n faDisplaySlash: faDisplaySlash,\n faDesktopSlash: faDesktopSlash,\n faSuitcaseRolling: faSuitcaseRolling,\n faPersonCircleExclamation: faPersonCircleExclamation,\n faTransporter2: faTransporter2,\n faHandsHoldingDiamond: faHandsHoldingDiamond,\n faHandReceiving: faHandReceiving,\n faMoneyBillSimpleWave: faMoneyBillSimpleWave,\n faChevronDown: faChevronDown,\n faBatteryFull: faBatteryFull,\n faBattery: faBattery,\n faBattery5: faBattery5,\n faBellPlus: faBellPlus,\n faBookArrowRight: faBookArrowRight,\n faHospitals: faHospitals,\n faClub: faClub,\n faSkullCrossbones: faSkullCrossbones,\n faDropletDegree: faDropletDegree,\n faDewpoint: faDewpoint,\n faCodeCompare: faCodeCompare,\n faListUl: faListUl,\n faListDots: faListDots,\n faHandHoldingMagic: faHandHoldingMagic,\n faWatermelonSlice: faWatermelonSlice,\n faCircleEllipsis: faCircleEllipsis,\n faSchoolLock: faSchoolLock,\n faTowerCell: faTowerCell,\n faSdCards: faSdCards,\n faJugBottle: faJugBottle,\n faDownLong: faDownLong,\n faLongArrowAltDown: faLongArrowAltDown,\n faEnvelopes: faEnvelopes,\n faPhoneOffice: faPhoneOffice,\n faRankingStar: faRankingStar,\n faChessKing: faChessKing,\n faNfcPen: faNfcPen,\n faPersonHarassing: faPersonHarassing,\n faHatWinter: faHatWinter,\n faBrazilianRealSign: faBrazilianRealSign,\n faLandmarkDome: faLandmarkDome,\n faLandmarkAlt: faLandmarkAlt,\n faBoneBreak: faBoneBreak,\n faArrowUp: faArrowUp,\n faDownFromDottedLine: faDownFromDottedLine,\n faTv: faTv,\n faTelevision: faTelevision,\n faTvAlt: faTvAlt,\n faBorderLeft: faBorderLeft,\n faCircleDivide: faCircleDivide,\n faShrimp: faShrimp,\n faListCheck: faListCheck,\n faTasks: faTasks,\n faDiagramSubtask: faDiagramSubtask,\n faJugDetergent: faJugDetergent,\n faCircleUser: faCircleUser,\n faUserCircle: faUserCircle,\n faSquareY: faSquareY,\n faUserDoctorHair: faUserDoctorHair,\n faPlanetRinged: faPlanetRinged,\n faMushroom: faMushroom,\n faUserShield: faUserShield,\n faMegaphone: faMegaphone,\n faWreathLaurel: faWreathLaurel,\n faCircleExclamationCheck: faCircleExclamationCheck,\n faWind: faWind,\n faBoxDollar: faBoxDollar,\n faBoxUsd: faBoxUsd,\n faCarBurst: faCarBurst,\n faCarCrash: faCarCrash,\n faY: faY,\n faUserHeadset: faUserHeadset,\n faArrowsRetweet: faArrowsRetweet,\n faRetweetAlt: faRetweetAlt,\n faPersonSnowboarding: faPersonSnowboarding,\n faSnowboarding: faSnowboarding,\n faSquareChevronRight: faSquareChevronRight,\n faChevronSquareRight: faChevronSquareRight,\n faLacrosseStickBall: faLacrosseStickBall,\n faTruckFast: faTruckFast,\n faShippingFast: faShippingFast,\n faUserMagnifyingGlass: faUserMagnifyingGlass,\n faStarSharp: faStarSharp,\n faCommentHeart: faCommentHeart,\n faCircle1: faCircle1,\n faCircleStar: faCircleStar,\n faStarCircle: faStarCircle,\n faFish: faFish,\n faCloudFog: faCloudFog,\n faFog: faFog,\n faWaffle: faWaffle,\n faMusicNote: faMusicNote,\n faMusicAlt: faMusicAlt,\n faHexagonExclamation: faHexagonExclamation,\n faCartShoppingFast: faCartShoppingFast,\n faObjectUnion: faObjectUnion,\n faUserGraduate: faUserGraduate,\n faStarfighter: faStarfighter,\n faCircleHalfStroke: faCircleHalfStroke,\n faAdjust: faAdjust,\n faArrowRightLongToLine: faArrowRightLongToLine,\n faSquareArrowDown: faSquareArrowDown,\n faArrowSquareDown: faArrowSquareDown,\n faDiamondHalfStroke: faDiamondHalfStroke,\n faClapperboard: faClapperboard,\n faSquareChevronLeft: faSquareChevronLeft,\n faChevronSquareLeft: faChevronSquareLeft,\n faPhoneIntercom: faPhoneIntercom,\n faLinkHorizontal: faLinkHorizontal,\n faChainHorizontal: faChainHorizontal,\n faMango: faMango,\n faMusicNoteSlash: faMusicNoteSlash,\n faMusicAltSlash: faMusicAltSlash,\n faCircleRadiation: faCircleRadiation,\n faRadiationAlt: faRadiationAlt,\n faFaceTongueSweat: faFaceTongueSweat,\n faGlobeStand: faGlobeStand,\n faBaseball: faBaseball,\n faBaseballBall: faBaseballBall,\n faCircleP: faCircleP,\n faAwardSimple: faAwardSimple,\n faJetFighterUp: faJetFighterUp,\n faDiagramProject: faDiagramProject,\n faProjectDiagram: faProjectDiagram,\n faPedestal: faPedestal,\n faChartPyramid: faChartPyramid,\n faSidebar: faSidebar,\n faSnowmanHead: faSnowmanHead,\n faFrostyHead: faFrostyHead,\n faCopy: faCopy,\n faBurgerGlass: faBurgerGlass,\n faVolumeXmark: faVolumeXmark,\n faVolumeMute: faVolumeMute,\n faVolumeTimes: faVolumeTimes,\n faHandSparkles: faHandSparkles,\n faBarsFilter: faBarsFilter,\n faPaintbrushPencil: faPaintbrushPencil,\n faPartyBell: faPartyBell,\n faUserVneckHair: faUserVneckHair,\n faJackOLantern: faJackOLantern,\n faGrip: faGrip,\n faGripHorizontal: faGripHorizontal,\n faShareFromSquare: faShareFromSquare,\n faShareSquare: faShareSquare,\n faKeynote: faKeynote,\n faChildCombatant: faChildCombatant,\n faChildRifle: faChildRifle,\n faGun: faGun,\n faSquarePhone: faSquarePhone,\n faPhoneSquare: faPhoneSquare,\n faHatBeach: faHatBeach,\n faPlus: faPlus,\n faAdd: faAdd,\n faExpand: faExpand,\n faComputer: faComputer,\n faFort: faFort,\n faCloudCheck: faCloudCheck,\n faXmark: faXmark,\n faClose: faClose,\n faMultiply: faMultiply,\n faRemove: faRemove,\n faTimes: faTimes,\n faFaceSmirking: faFaceSmirking,\n faArrowsUpDownLeftRight: faArrowsUpDownLeftRight,\n faArrows: faArrows,\n faChalkboardUser: faChalkboardUser,\n faChalkboardTeacher: faChalkboardTeacher,\n faRhombus: faRhombus,\n faClawMarks: faClawMarks,\n faPesoSign: faPesoSign,\n faFaceSmileTongue: faFaceSmileTongue,\n faCartCircleXmark: faCartCircleXmark,\n faBuildingShield: faBuildingShield,\n faCirclePhoneFlip: faCirclePhoneFlip,\n faPhoneCircleAlt: faPhoneCircleAlt,\n faBaby: faBaby,\n faUsersLine: faUsersLine,\n faQuoteLeft: faQuoteLeft,\n faQuoteLeftAlt: faQuoteLeftAlt,\n faTractor: faTractor,\n faKeySkeleton: faKeySkeleton,\n faTrashArrowUp: faTrashArrowUp,\n faTrashRestore: faTrashRestore,\n faArrowDownUpLock: faArrowDownUpLock,\n faArrowDownToBracket: faArrowDownToBracket,\n faLinesLeaning: faLinesLeaning,\n faSquareQ: faSquareQ,\n faRulerCombined: faRulerCombined,\n faSymbols: faSymbols,\n faIconsAlt: faIconsAlt,\n faCopyright: faCopyright,\n faFlaskGear: faFlaskGear,\n faHighlighterLine: faHighlighterLine,\n faBracketSquare: faBracketSquare,\n faBracket: faBracket,\n faBracketLeft: faBracketLeft,\n faIslandTropical: faIslandTropical,\n faIslandTreePalm: faIslandTreePalm,\n faArrowRightFromLine: faArrowRightFromLine,\n faArrowFromLeft: faArrowFromLeft,\n faH2: faH2,\n faEquals: faEquals,\n faCakeSlice: faCakeSlice,\n faShortcake: faShortcake,\n faPeanut: faPeanut,\n faWrenchSimple: faWrenchSimple,\n faBlender: faBlender,\n faTeeth: faTeeth,\n faTally2: faTally2,\n faShekelSign: faShekelSign,\n faIls: faIls,\n faShekel: faShekel,\n faSheqel: faSheqel,\n faSheqelSign: faSheqelSign,\n faCars: faCars,\n faAxeBattle: faAxeBattle,\n faUserHairLong: faUserHairLong,\n faMap: faMap,\n faFileCircleInfo: faFileCircleInfo,\n faFaceDisappointed: faFaceDisappointed,\n faLassoSparkles: faLassoSparkles,\n faClockEleven: faClockEleven,\n faRocket: faRocket,\n faSirenOn: faSirenOn,\n faClockTen: faClockTen,\n faCandleHolder: faCandleHolder,\n faVideoArrowDownLeft: faVideoArrowDownLeft,\n faPhotoFilm: faPhotoFilm,\n faPhotoVideo: faPhotoVideo,\n faFloppyDiskCircleArrowRight: faFloppyDiskCircleArrowRight,\n faSaveCircleArrowRight: faSaveCircleArrowRight,\n faFolderMinus: faFolderMinus,\n faPlanetMoon: faPlanetMoon,\n faFaceEyesXmarks: faFaceEyesXmarks,\n faChartScatter: faChartScatter,\n faDisplayArrowDown: faDisplayArrowDown,\n faStore: faStore,\n faArrowTrendUp: faArrowTrendUp,\n faPlugCircleMinus: faPlugCircleMinus,\n faOliveBranch: faOliveBranch,\n faAngle: faAngle,\n faVacuumRobot: faVacuumRobot,\n faSignHanging: faSignHanging,\n faSign: faSign,\n faSquareDivide: faSquareDivide,\n faSignalStreamSlash: faSignalStreamSlash,\n faBezierCurve: faBezierCurve,\n faEyeDropperHalf: faEyeDropperHalf,\n faStoreLock: faStoreLock,\n faBellSlash: faBellSlash,\n faCloudBoltSun: faCloudBoltSun,\n faThunderstormSun: faThunderstormSun,\n faCameraSlash: faCameraSlash,\n faCommentQuote: faCommentQuote,\n faTablet: faTablet,\n faTabletAndroid: faTabletAndroid,\n faSchoolFlag: faSchoolFlag,\n faMessageCode: faMessageCode,\n faGlassHalf: faGlassHalf,\n faGlassHalfEmpty: faGlassHalfEmpty,\n faGlassHalfFull: faGlassHalfFull,\n faFill: faFill,\n faMessageMinus: faMessageMinus,\n faCommentAltMinus: faCommentAltMinus,\n faAngleUp: faAngleUp,\n faDinosaur: faDinosaur,\n faDrumstickBite: faDrumstickBite,\n faLinkHorizontalSlash: faLinkHorizontalSlash,\n faChainHorizontalSlash: faChainHorizontalSlash,\n faHollyBerry: faHollyBerry,\n faNose: faNose,\n faChevronLeft: faChevronLeft,\n faBacteria: faBacteria,\n faClouds: faClouds,\n faMoneyBillSimple: faMoneyBillSimple,\n faHandLizard: faHandLizard,\n faTablePivot: faTablePivot,\n faFilterSlash: faFilterSlash,\n faTrashCanUndo: faTrashCanUndo,\n faTrashCanArrowTurnLeft: faTrashCanArrowTurnLeft,\n faTrashUndoAlt: faTrashUndoAlt,\n faNotdef: faNotdef,\n faDisease: faDisease,\n faPersonToDoor: faPersonToDoor,\n faTurntable: faTurntable,\n faBriefcaseMedical: faBriefcaseMedical,\n faGenderless: faGenderless,\n faChevronRight: faChevronRight,\n faSignalWeak: faSignalWeak,\n faSignal1: faSignal1,\n faClockFive: faClockFive,\n faRetweet: faRetweet,\n faCarRear: faCarRear,\n faCarAlt: faCarAlt,\n faPumpSoap: faPumpSoap,\n faComputerClassic: faComputerClassic,\n faFrame: faFrame,\n faVideoSlash: faVideoSlash,\n faBatteryQuarter: faBatteryQuarter,\n faBattery2: faBattery2,\n faEllipsisStroke: faEllipsisStroke,\n faEllipsisHAlt: faEllipsisHAlt,\n faRadio: faRadio,\n faBabyCarriage: faBabyCarriage,\n faCarriageBaby: faCarriageBaby,\n faFaceExpressionless: faFaceExpressionless,\n faDownToDottedLine: faDownToDottedLine,\n faCloudMusic: faCloudMusic,\n faTrafficLight: faTrafficLight,\n faCloudMinus: faCloudMinus,\n faThermometer: faThermometer,\n faShieldMinus: faShieldMinus,\n faVrCardboard: faVrCardboard,\n faCarTilt: faCarTilt,\n faGaugeCircleMinus: faGaugeCircleMinus,\n faBrightnessLow: faBrightnessLow,\n faHandMiddleFinger: faHandMiddleFinger,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faTruckMoving: faTruckMoving,\n faGlassWaterDroplet: faGlassWaterDroplet,\n faConveyorBelt: faConveyorBelt,\n faLocationCheck: faLocationCheck,\n faMapMarkerCheck: faMapMarkerCheck,\n faCoinVertical: faCoinVertical,\n faDisplay: faDisplay,\n faPersonSign: faPersonSign,\n faFaceSmile: faFaceSmile,\n faSmile: faSmile,\n faPhoneHangup: faPhoneHangup,\n faSignatureSlash: faSignatureSlash,\n faThumbtack: faThumbtack,\n faThumbTack: faThumbTack,\n faWheatSlash: faWheatSlash,\n faTrophy: faTrophy,\n faCloudsSun: faCloudsSun,\n faPersonPraying: faPersonPraying,\n faPray: faPray,\n faHammer: faHammer,\n faFaceVomit: faFaceVomit,\n faSpeakers: faSpeakers,\n faTtyAnswer: faTtyAnswer,\n faTeletypeAnswer: faTeletypeAnswer,\n faMugTeaSaucer: faMugTeaSaucer,\n faDiagramLeanCanvas: faDiagramLeanCanvas,\n faAlt: faAlt,\n faDial: faDial,\n faDialMedHigh: faDialMedHigh,\n faHandPeace: faHandPeace,\n faCircleTrash: faCircleTrash,\n faTrashCircle: faTrashCircle,\n faRotate: faRotate,\n faSyncAlt: faSyncAlt,\n faCircleQuarters: faCircleQuarters,\n faSpinner: faSpinner,\n faTowerControl: faTowerControl,\n faArrowUpTriangleSquare: faArrowUpTriangleSquare,\n faSortShapesUp: faSortShapesUp,\n faWhale: faWhale,\n faRobot: faRobot,\n faPeace: faPeace,\n faPartyHorn: faPartyHorn,\n faGears: faGears,\n faCogs: faCogs,\n faSunBright: faSunBright,\n faSunAlt: faSunAlt,\n faWarehouse: faWarehouse,\n faConveyorBeltArm: faConveyorBeltArm,\n faLockKeyholeOpen: faLockKeyholeOpen,\n faLockOpenAlt: faLockOpenAlt,\n faSquareFragile: faSquareFragile,\n faBoxFragile: faBoxFragile,\n faSquareWineGlassCrack: faSquareWineGlassCrack,\n faArrowUpRightDots: faArrowUpRightDots,\n faSquareN: faSquareN,\n faSplotch: faSplotch,\n faFaceGrinHearts: faFaceGrinHearts,\n faGrinHearts: faGrinHearts,\n faMeter: faMeter,\n faMandolin: faMandolin,\n faDiceFour: faDiceFour,\n faSimCard: faSimCard,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faMercury: faMercury,\n faUpFromBracket: faUpFromBracket,\n faKnifeKitchen: faKnifeKitchen,\n faBorderRight: faBorderRight,\n faArrowTurnDown: faArrowTurnDown,\n faLevelDown: faLevelDown,\n faSpade: faSpade,\n faCardSpade: faCardSpade,\n faLineColumns: faLineColumns,\n faArrowRightToLine: faArrowRightToLine,\n faArrowToRight: faArrowToRight,\n faPersonFallingBurst: faPersonFallingBurst,\n faFlagPennant: faFlagPennant,\n faPennant: faPennant,\n faConveyorBeltEmpty: faConveyorBeltEmpty,\n faUserGroupSimple: faUserGroupSimple,\n faAward: faAward,\n faTicketSimple: faTicketSimple,\n faTicketAlt: faTicketAlt,\n faBuilding: faBuilding,\n faAnglesLeft: faAnglesLeft,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faCamcorder: faCamcorder,\n faVideoHandheld: faVideoHandheld,\n faPancakes: faPancakes,\n faAlbumCircleUser: faAlbumCircleUser,\n faQrcode: faQrcode,\n faDiceD10: faDiceD10,\n faFireplace: faFireplace,\n faBrowser: faBrowser,\n faPenPaintbrush: faPenPaintbrush,\n faPencilPaintbrush: faPencilPaintbrush,\n faFishCooked: faFishCooked,\n faChairOffice: faChairOffice,\n faNestingDolls: faNestingDolls,\n faClockRotateLeft: faClockRotateLeft,\n faHistory: faHistory,\n faTrumpet: faTrumpet,\n faFaceGrinBeamSweat: faFaceGrinBeamSweat,\n faGrinBeamSweat: faGrinBeamSweat,\n faFireSmoke: faFireSmoke,\n faPhoneMissed: faPhoneMissed,\n faFileExport: faFileExport,\n faArrowRightFromFile: faArrowRightFromFile,\n faShield: faShield,\n faShieldBlank: faShieldBlank,\n faArrowUpShortWide: faArrowUpShortWide,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faArrowsRepeat1: faArrowsRepeat1,\n faRepeat1Alt: faRepeat1Alt,\n faGunSlash: faGunSlash,\n faAvocado: faAvocado,\n faBinary: faBinary,\n faGlassesRound: faGlassesRound,\n faGlassesAlt: faGlassesAlt,\n faPhonePlus: faPhonePlus,\n faDitto: faDitto,\n faPersonSeat: faPersonSeat,\n faHouseMedical: faHouseMedical,\n faGolfBallTee: faGolfBallTee,\n faGolfBall: faGolfBall,\n faCircleChevronLeft: faCircleChevronLeft,\n faChevronCircleLeft: faChevronCircleLeft,\n faHouseChimneyWindow: faHouseChimneyWindow,\n faScythe: faScythe,\n faPenNib: faPenNib,\n faBanParking: faBanParking,\n faParkingCircleSlash: faParkingCircleSlash,\n faTentArrowTurnLeft: faTentArrowTurnLeft,\n faFaceDiagonalMouth: faFaceDiagonalMouth,\n faDiagramCells: faDiagramCells,\n faCricketBatBall: faCricketBatBall,\n faCricket: faCricket,\n faTents: faTents,\n faWandMagic: faWandMagic,\n faMagic: faMagic,\n faDog: faDog,\n faPenLine: faPenLine,\n faAtomSimple: faAtomSimple,\n faAtomAlt: faAtomAlt,\n faAmpersand: faAmpersand,\n faCarrot: faCarrot,\n faArrowUpFromLine: faArrowUpFromLine,\n faArrowFromBottom: faArrowFromBottom,\n faMoon: faMoon,\n faPenSlash: faPenSlash,\n faWineGlassEmpty: faWineGlassEmpty,\n faWineGlassAlt: faWineGlassAlt,\n faSquareStar: faSquareStar,\n faCheese: faCheese,\n faSendBackward: faSendBackward,\n faYinYang: faYinYang,\n faMusic: faMusic,\n faCompassSlash: faCompassSlash,\n faClockOne: faClockOne,\n faFileMusic: faFileMusic,\n faCodeCommit: faCodeCommit,\n faTemperatureLow: faTemperatureLow,\n faPersonBiking: faPersonBiking,\n faBiking: faBiking,\n faDisplayChartUpCircleCurrency: faDisplayChartUpCircleCurrency,\n faSkeleton: faSkeleton,\n faCircleG: faCircleG,\n faCircleArrowUpLeft: faCircleArrowUpLeft,\n faCoinBlank: faCoinBlank,\n faBroom: faBroom,\n faVacuum: faVacuum,\n faShieldHeart: faShieldHeart,\n faCardHeart: faCardHeart,\n faLightbulbCflOn: faLightbulbCflOn,\n faMelon: faMelon,\n faGopuram: faGopuram,\n faEarthOceania: faEarthOceania,\n faGlobeOceania: faGlobeOceania,\n faContainerStorage: faContainerStorage,\n faFacePouting: faFacePouting,\n faSquareXmark: faSquareXmark,\n faTimesSquare: faTimesSquare,\n faXmarkSquare: faXmarkSquare,\n faFaceExplode: faFaceExplode,\n faExplodingHead: faExplodingHead,\n faHashtag: faHashtag,\n faUpRightAndDownLeftFromCenter: faUpRightAndDownLeftFromCenter,\n faExpandAlt: faExpandAlt,\n faOilCan: faOilCan,\n faT: faT,\n faTransformerBolt: faTransformerBolt,\n faHippo: faHippo,\n faChartColumn: faChartColumn,\n faCassetteVhs: faCassetteVhs,\n faVhs: faVhs,\n faInfinity: faInfinity,\n faVialCircleCheck: faVialCircleCheck,\n faChimney: faChimney,\n faObjectIntersect: faObjectIntersect,\n faPersonArrowDownToLine: faPersonArrowDownToLine,\n faVoicemail: faVoicemail,\n faBlockBrick: faBlockBrick,\n faWallBrick: faWallBrick,\n faFan: faFan,\n faBagsShopping: faBagsShopping,\n faParagraphLeft: faParagraphLeft,\n faParagraphRtl: faParagraphRtl,\n faPersonWalkingLuggage: faPersonWalkingLuggage,\n faCaravanSimple: faCaravanSimple,\n faCaravanAlt: faCaravanAlt,\n faTurtle: faTurtle,\n faPencilMechanical: faPencilMechanical,\n faUpDown: faUpDown,\n faArrowsAltV: faArrowsAltV,\n faCloudMoonRain: faCloudMoonRain,\n faBoothCurtain: faBoothCurtain,\n faCalendar: faCalendar,\n faBoxHeart: faBoxHeart,\n faTrailer: faTrailer,\n faUserDoctorMessage: faUserDoctorMessage,\n faUserMdChat: faUserMdChat,\n faBahai: faBahai,\n faHaykal: faHaykal,\n faAmpGuitar: faAmpGuitar,\n faSdCard: faSdCard,\n faVolumeSlash: faVolumeSlash,\n faBorderBottom: faBorderBottom,\n faWifiWeak: faWifiWeak,\n faWifi1: faWifi1,\n faDragon: faDragon,\n faShoePrints: faShoePrints,\n faCirclePlus: faCirclePlus,\n faPlusCircle: faPlusCircle,\n faFaceGrinTongueWink: faFaceGrinTongueWink,\n faGrinTongueWink: faGrinTongueWink,\n faHandHolding: faHandHolding,\n faPlugCircleExclamation: faPlugCircleExclamation,\n faLinkSlash: faLinkSlash,\n faChainBroken: faChainBroken,\n faChainSlash: faChainSlash,\n faUnlink: faUnlink,\n faClone: faClone,\n faPersonWalkingArrowLoopLeft: faPersonWalkingArrowLoopLeft,\n faArrowUpZA: faArrowUpZA,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faFireFlameCurved: faFireFlameCurved,\n faFireAlt: faFireAlt,\n faTornado: faTornado,\n faFileCirclePlus: faFileCirclePlus,\n faDeleteRight: faDeleteRight,\n faBookQuran: faBookQuran,\n faQuran: faQuran,\n faCircleQuarter: faCircleQuarter,\n faAnchor: faAnchor,\n faBorderAll: faBorderAll,\n faFunction: faFunction,\n faFaceAngry: faFaceAngry,\n faAngry: faAngry,\n faPeopleSimple: faPeopleSimple,\n faCookieBite: faCookieBite,\n faArrowTrendDown: faArrowTrendDown,\n faRss: faRss,\n faFeed: faFeed,\n faFaceMonocle: faFaceMonocle,\n faDrawPolygon: faDrawPolygon,\n faScaleBalanced: faScaleBalanced,\n faBalanceScale: faBalanceScale,\n faCalendarLines: faCalendarLines,\n faCalendarNote: faCalendarNote,\n faArrowDownBigSmall: faArrowDownBigSmall,\n faSortSizeDown: faSortSizeDown,\n faGaugeSimpleHigh: faGaugeSimpleHigh,\n faTachometer: faTachometer,\n faTachometerFast: faTachometerFast,\n faDoNotEnter: faDoNotEnter,\n faShower: faShower,\n faDiceD8: faDiceD8,\n faDesktop: faDesktop,\n faDesktopAlt: faDesktopAlt,\n faM: faM,\n faGripDotsVertical: faGripDotsVertical,\n faFaceViewfinder: faFaceViewfinder,\n faSoftServe: faSoftServe,\n faCreemee: faCreemee,\n faH5: faH5,\n faHandBackPointDown: faHandBackPointDown,\n faTableList: faTableList,\n faThList: faThList,\n faCommentSms: faCommentSms,\n faSms: faSms,\n faRectangle: faRectangle,\n faRectangleLandscape: faRectangleLandscape,\n faClipboardListCheck: faClipboardListCheck,\n faTurkey: faTurkey,\n faBook: faBook,\n faUserPlus: faUserPlus,\n faIceSkate: faIceSkate,\n faCheck: faCheck,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBattery4: faBattery4,\n faTomato: faTomato,\n faSwordLaser: faSwordLaser,\n faHouseCircleCheck: faHouseCircleCheck,\n faBuildings: faBuildings,\n faAngleLeft: faAngleLeft,\n faCartFlatbedBoxes: faCartFlatbedBoxes,\n faDollyFlatbedAlt: faDollyFlatbedAlt,\n faDiagramSuccessor: faDiagramSuccessor,\n faTruckArrowRight: faTruckArrowRight,\n faSquareW: faSquareW,\n faArrowsSplitUpAndLeft: faArrowsSplitUpAndLeft,\n faLamp: faLamp,\n faAirplay: faAirplay,\n faHandFist: faHandFist,\n faFistRaised: faFistRaised,\n faShieldQuartered: faShieldQuartered,\n faSlashForward: faSlashForward,\n faLocationPen: faLocationPen,\n faMapMarkerEdit: faMapMarkerEdit,\n faCloudMoon: faCloudMoon,\n faPotFood: faPotFood,\n faBriefcase: faBriefcase,\n faPersonFalling: faPersonFalling,\n faImagePortrait: faImagePortrait,\n faPortrait: faPortrait,\n faUserTag: faUserTag,\n faRug: faRug,\n faPrintSlash: faPrintSlash,\n faEarthEurope: faEarthEurope,\n faGlobeEurope: faGlobeEurope,\n faCartFlatbedSuitcase: faCartFlatbedSuitcase,\n faLuggageCart: faLuggageCart,\n faHandBackPointRibbon: faHandBackPointRibbon,\n faRectangleXmark: faRectangleXmark,\n faRectangleTimes: faRectangleTimes,\n faTimesRectangle: faTimesRectangle,\n faWindowClose: faWindowClose,\n faTireRugged: faTireRugged,\n faLightbulbDollar: faLightbulbDollar,\n faCowbell: faCowbell,\n faBahtSign: faBahtSign,\n faCorner: faCorner,\n faChevronsRight: faChevronsRight,\n faChevronDoubleRight: faChevronDoubleRight,\n faBookOpen: faBookOpen,\n faBookJournalWhills: faBookJournalWhills,\n faJournalWhills: faJournalWhills,\n faInhaler: faInhaler,\n faHandcuffs: faHandcuffs,\n faSnake: faSnake,\n faTriangleExclamation: faTriangleExclamation,\n faExclamationTriangle: faExclamationTriangle,\n faWarning: faWarning,\n faNoteMedical: faNoteMedical,\n faDatabase: faDatabase,\n faDownLeft: faDownLeft,\n faShare: faShare,\n faArrowTurnRight: faArrowTurnRight,\n faMailForward: faMailForward,\n faFaceThinking: faFaceThinking,\n faTurnDownRight: faTurnDownRight,\n faBottleDroplet: faBottleDroplet,\n faMaskFace: faMaskFace,\n faHillRockslide: faHillRockslide,\n faScannerKeyboard: faScannerKeyboard,\n faCircleO: faCircleO,\n faGridHorizontal: faGridHorizontal,\n faMessageDollar: faMessageDollar,\n faCommentAltDollar: faCommentAltDollar,\n faRightLeft: faRightLeft,\n faExchangeAlt: faExchangeAlt,\n faColumns3: faColumns3,\n faPaperPlane: faPaperPlane,\n faRoadCircleExclamation: faRoadCircleExclamation,\n faDungeon: faDungeon,\n faHandHoldingBox: faHandHoldingBox,\n faInputText: faInputText,\n faWindowFlip: faWindowFlip,\n faWindowAlt: faWindowAlt,\n faAlignRight: faAlignRight,\n faScannerGun: faScannerGun,\n faScanner: faScanner,\n faTire: faTire,\n faEngine: faEngine,\n faMoneyBill1Wave: faMoneyBill1Wave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faLifeRing: faLifeRing,\n faHands: faHands,\n faSignLanguage: faSignLanguage,\n faSigning: faSigning,\n faCircleCaretRight: faCircleCaretRight,\n faCaretCircleRight: faCaretCircleRight,\n faWheat: faWheat,\n faFileSpreadsheet: faFileSpreadsheet,\n faAudioDescriptionSlash: faAudioDescriptionSlash,\n faCalendarDay: faCalendarDay,\n faWaterLadder: faWaterLadder,\n faLadderWater: faLadderWater,\n faSwimmingPool: faSwimmingPool,\n faArrowsUpDown: faArrowsUpDown,\n faArrowsV: faArrowsV,\n faChessPawnPiece: faChessPawnPiece,\n faChessPawnAlt: faChessPawnAlt,\n faFaceGrimace: faFaceGrimace,\n faGrimace: faGrimace,\n faWheelchairMove: faWheelchairMove,\n faWheelchairAlt: faWheelchairAlt,\n faTurnDown: faTurnDown,\n faLevelDownAlt: faLevelDownAlt,\n faSquareS: faSquareS,\n faRectangleBarcode: faRectangleBarcode,\n faBarcodeAlt: faBarcodeAlt,\n faPersonWalkingArrowRight: faPersonWalkingArrowRight,\n faSquareEnvelope: faSquareEnvelope,\n faEnvelopeSquare: faEnvelopeSquare,\n faDice: faDice,\n faUnicorn: faUnicorn,\n faBowlingBall: faBowlingBall,\n faPompebled: faPompebled,\n faBrain: faBrain,\n faWatchSmart: faWatchSmart,\n faBookUser: faBookUser,\n faSensorCloud: faSensorCloud,\n faSensorSmoke: faSensorSmoke,\n faClapperboardPlay: faClapperboardPlay,\n faBandage: faBandage,\n faBandAid: faBandAid,\n faCalendarMinus: faCalendarMinus,\n faCircleXmark: faCircleXmark,\n faTimesCircle: faTimesCircle,\n faXmarkCircle: faXmarkCircle,\n faCircle4: faCircle4,\n faGifts: faGifts,\n faAlbumCollection: faAlbumCollection,\n faHotel: faHotel,\n faEarthAsia: faEarthAsia,\n faGlobeAsia: faGlobeAsia,\n faIdCardClip: faIdCardClip,\n faIdCardAlt: faIdCardAlt,\n faMagnifyingGlassPlus: faMagnifyingGlassPlus,\n faSearchPlus: faSearchPlus,\n faThumbsUp: faThumbsUp,\n faCloudShowers: faCloudShowers,\n faUserClock: faUserClock,\n faOnion: faOnion,\n faClockTwelveThirty: faClockTwelveThirty,\n faArrowDownToDottedLine: faArrowDownToDottedLine,\n faHandDots: faHandDots,\n faAllergies: faAllergies,\n faFileInvoice: faFileInvoice,\n faWindowMinimize: faWindowMinimize,\n faRectangleWide: faRectangleWide,\n faCommentArrowUp: faCommentArrowUp,\n faGarlic: faGarlic,\n faMugSaucer: faMugSaucer,\n faCoffee: faCoffee,\n faBrush: faBrush,\n faTreeDecorated: faTreeDecorated,\n faMask: faMask,\n faCalendarHeart: faCalendarHeart,\n faMagnifyingGlassMinus: faMagnifyingGlassMinus,\n faSearchMinus: faSearchMinus,\n faFlower: faFlower,\n faRightLeftLarge: faRightLeftLarge,\n faRulerVertical: faRulerVertical,\n faCirclesOverlap: faCirclesOverlap,\n faUserLarge: faUserLarge,\n faUserAlt: faUserAlt,\n faStarshipFreighter: faStarshipFreighter,\n faTrainTram: faTrainTram,\n faBridgeSuspension: faBridgeSuspension,\n faTrashCheck: faTrashCheck,\n faUserNurse: faUserNurse,\n faBoombox: faBoombox,\n faSyringe: faSyringe,\n faCloudSun: faCloudSun,\n faShieldExclamation: faShieldExclamation,\n faStopwatch20: faStopwatch20,\n faSquareFull: faSquareFull,\n faGripDots: faGripDots,\n faCommentExclamation: faCommentExclamation,\n faPenSwirl: faPenSwirl,\n faFalafel: faFalafel,\n faCircle2: faCircle2,\n faMagnet: faMagnet,\n faJar: faJar,\n faGramophone: faGramophone,\n faDiceD12: faDiceD12,\n faNoteSticky: faNoteSticky,\n faStickyNote: faStickyNote,\n faDown: faDown,\n faArrowAltDown: faArrowAltDown,\n faHundredPoints: faHundredPoints,\n fa100: fa100,\n faPaperclipVertical: faPaperclipVertical,\n faWindWarning: faWindWarning,\n faWindCircleExclamation: faWindCircleExclamation,\n faLocationPinSlash: faLocationPinSlash,\n faMapMarkerSlash: faMapMarkerSlash,\n faFaceSadSweat: faFaceSadSweat,\n faBugSlash: faBugSlash,\n faCupcake: faCupcake,\n faLightSwitchOff: faLightSwitchOff,\n faToggleLargeOff: faToggleLargeOff,\n faPenFancySlash: faPenFancySlash,\n faTruckContainer: faTruckContainer,\n faBoot: faBoot,\n faArrowUpFromWaterPump: faArrowUpFromWaterPump,\n faFileCheck: faFileCheck,\n faBone: faBone,\n faCardsBlank: faCardsBlank,\n faCircle3: faCircle3,\n faBenchTree: faBenchTree,\n faKeyboardBrightnessLow: faKeyboardBrightnessLow,\n faSkiBootSki: faSkiBootSki,\n faBrainCircuit: faBrainCircuit,\n faUserInjured: faUserInjured,\n faBlockBrickFire: faBlockBrickFire,\n faFirewall: faFirewall,\n faFaceSadTear: faFaceSadTear,\n faSadTear: faSadTear,\n faPlane: faPlane,\n faTentArrowsDown: faTentArrowsDown,\n faExclamation: faExclamation,\n faArrowsSpin: faArrowsSpin,\n faFaceSmileRelaxed: faFaceSmileRelaxed,\n faCommentXmark: faCommentXmark,\n faCommentTimes: faCommentTimes,\n faPrint: faPrint,\n faTurkishLiraSign: faTurkishLiraSign,\n faTry: faTry,\n faTurkishLira: faTurkishLira,\n faFaceNoseSteam: faFaceNoseSteam,\n faCircleWaveformLines: faCircleWaveformLines,\n faWaveformCircle: faWaveformCircle,\n faDollarSign: faDollarSign,\n faDollar: faDollar,\n faUsd: faUsd,\n faFerrisWheel: faFerrisWheel,\n faComputerSpeaker: faComputerSpeaker,\n faSkullCow: faSkullCow,\n faX: faX,\n faMagnifyingGlassDollar: faMagnifyingGlassDollar,\n faSearchDollar: faSearchDollar,\n faUsersGear: faUsersGear,\n faUsersCog: faUsersCog,\n faPersonMilitaryPointing: faPersonMilitaryPointing,\n faBuildingColumns: faBuildingColumns,\n faBank: faBank,\n faInstitution: faInstitution,\n faMuseum: faMuseum,\n faUniversity: faUniversity,\n faCircleT: faCircleT,\n faSack: faSack,\n faGrid2: faGrid2,\n faCameraCctv: faCameraCctv,\n faCctv: faCctv,\n faUmbrella: faUmbrella,\n faTrowel: faTrowel,\n faHorizontalRule: faHorizontalRule,\n faBedFront: faBedFront,\n faBedAlt: faBedAlt,\n faD: faD,\n faStapler: faStapler,\n faMasksTheater: faMasksTheater,\n faTheaterMasks: faTheaterMasks,\n faKipSign: faKipSign,\n faFaceWoozy: faFaceWoozy,\n faCloudQuestion: faCloudQuestion,\n faPineapple: faPineapple,\n faHandPointLeft: faHandPointLeft,\n faGalleryThumbnails: faGalleryThumbnails,\n faCircleJ: faCircleJ,\n faEyes: faEyes,\n faHandshakeSimple: faHandshakeSimple,\n faHandshakeAlt: faHandshakeAlt,\n faPageCaretUp: faPageCaretUp,\n faFileCaretUp: faFileCaretUp,\n faJetFighter: faJetFighter,\n faFighterJet: faFighterJet,\n faComet: faComet,\n faSquareShareNodes: faSquareShareNodes,\n faShareAltSquare: faShareAltSquare,\n faShieldKeyhole: faShieldKeyhole,\n faBarcode: faBarcode,\n faPlusMinus: faPlusMinus,\n faSquareSlidersVertical: faSquareSlidersVertical,\n faSlidersVSquare: faSlidersVSquare,\n faVideo: faVideo,\n faVideoCamera: faVideoCamera,\n faMessageMiddle: faMessageMiddle,\n faCommentMiddleAlt: faCommentMiddleAlt,\n faGraduationCap: faGraduationCap,\n faMortarBoard: faMortarBoard,\n faHandHoldingMedical: faHandHoldingMedical,\n faPersonCircleCheck: faPersonCircleCheck,\n faSquareZ: faSquareZ,\n faMessageText: faMessageText,\n faCommentAltText: faCommentAltText,\n faTurnUp: faTurnUp,\n faLevelUpAlt: faLevelUpAlt\n};\n\nexport { icons as fas, prefix, fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, faFillDrip, faArrowsToCircle, faCircleChevronRight, faChevronCircleRight, faWagonCovered, faLineHeight, faBagel, faTransporter7, faAt, faRectanglesMixed, faPhoneArrowUpRight, faPhoneArrowUp, faPhoneOutgoing, faTrashCan, faTrashAlt, faCircleL, faHeadSideGoggles, faHeadVr, faTextHeight, faUserXmark, faUserTimes, faFaceHandYawn, faGaugeSimpleMin, faTachometerSlowest, faStethoscope, faCoffin, faMessage, faCommentAlt, faSalad, faBowlSalad, faInfo, faRobotAstromech, faRingDiamond, faFonduePot, faTheta, faFaceHandPeeking, faSquareUser, faDownLeftAndUpRightToCenter, faCompressAlt, faExplosion, faFileLines, faFileAlt, faFileText, faWaveSquare, faRing, faBuildingUn, faDiceThree, faTirePressureWarning, faWifiFair, faWifi2, faCalendarDays, faCalendarAlt, faMp3Player, faAnchorCircleCheck, faTally4, faRectangleHistory, faBuildingCircleArrowRight, faVolleyball, faVolleyballBall, faSunHaze, faTextSize, faUfo, faFork, faUtensilFork, faArrowsUpToLine, faMobileSignal, faBarcodeScan, faSortDown, faSortDesc, faFolderArrowDown, faFolderDownload, faCircleMinus, faMinusCircle, faFaceIcicles, faShovel, faDoorOpen, faFilms, faRightFromBracket, faSignOutAlt, faFaceGlasses, faNfc, faAtom, faSoap, faIcons, faHeartMusicCameraBolt, faMicrophoneLinesSlash, faMicrophoneAltSlash, faClosedCaptioningSlash, faCalculatorSimple, faCalculatorAlt, faBridgeCircleCheck, faSlidersUp, faSlidersV, faLocationMinus, faMapMarkerMinus, faPumpMedical, faFingerprint, faSkiBoot, faStandardDefinition, faRectangleSd, faH1, faHandPointRight, faMagnifyingGlassLocation, faSearchLocation, faMessageBot, faForwardStep, faStepForward, faFaceSmileBeam, faSmileBeam, faLightCeiling, faMessageExclamation, faCommentAltExclamation, faBowlScoop, faBowlShavedIce, faSquareX, faUtilityPoleDouble, faFlagCheckered, faChevronsUp, faChevronDoubleUp, faFootball, faFootballBall, faUserVneck, faSchoolCircleExclamation, faCrop, faAnglesDown, faAngleDoubleDown, faUsersRectangle, faPeopleRoof, faSquareArrowRight, faArrowSquareRight, faLocationPlus, faMapMarkerPlus, faLightbulbExclamationOn, faPeopleLine, faBeerMugEmpty, faBeer, faCrateEmpty, faDiagramPredecessor, faTransporter, faCalendarCircleUser, faArrowUpLong, faLongArrowUp, faPersonCarryBox, faPersonCarry, faFireFlameSimple, faBurn, faPerson, faMale, faLaptop, faFileCsv, faMenorah, faUnion, faChevronsLeft, faChevronDoubleLeft, faCircleHeart, faHeartCircle, faTruckPlane, faRecordVinyl, faBringForward, faSquareP, faFaceGrinStars, faGrinStars, faSigma, faCameraMovie, faBong, faClarinet, faTruckFlatbed, faSpaghettiMonsterFlying, faPastafarianism, faArrowDownUpAcrossLine, faLeafHeart, faHouseBuilding, faCheeseSwiss, faSpoon, faUtensilSpoon, faJarWheat, faEnvelopesBulk, faMailBulk, faFileCircleExclamation, faBowArrow, faCartXmark, faHexagonXmark, faTimesHexagon, faXmarkHexagon, faCircleH, faHospitalSymbol, faMerge, faPager, faCartMinus, faAddressBook, faContactBook, faPanFrying, faGrid, faGrid3, faFootballHelmet, faHandLove, faTrees, faStrikethrough, faPage, faK, faDiagramPrevious, faGaugeMin, faTachometerAltSlowest, faFolderGrid, faEggplant, faRam, faLandmarkFlag, faLips, faPencil, faPencilAlt, faBackward, faCaretRight, faComments, faPaste, faFileClipboard, faDesktopArrowDown, faCodePullRequest, faPumpkin, faClipboardList, faPenField, faBlueberries, faTruckRampBox, faTruckLoading, faNote, faArrowDownToSquare, faUserCheck, faCloudXmark, faVialVirus, faBookBlank, faBookAlt, faGolfFlagHole, faMessageArrowDown, faCommentAltArrowDown, faFaceUnamused, faSheetPlastic, faCircle9, faBlog, faUserNinja, faPencilSlash, faBowlingPins, faPersonArrowUpFromLine, faDownRight, faScrollTorah, faTorah, faWebhook, faBlindsOpen, faFence, faUp, faArrowAltUp, faBroomBall, faQuidditch, faQuidditchBroomBall, faDrumstick, faSquareV, faFaceAwesome, faGaveDandy, faDialOff, faToggleOff, faFaceSmileHorns, faBoxArchive, faArchive, faGrapes, faPersonDrowning, faDialMax, faCircleM, faCalendarImage, faCircleCaretDown, faCaretCircleDown, faArrowDown91, faSortNumericDesc, faSortNumericDownAlt, faFaceGrinTongueSquint, faGrinTongueSquint, faShishKebab, faSprayCan, faAlarmSnooze, faScarecrow, faTruckMonster, faGiftCard, faW, faCodePullRequestDraft, faSquareB, faElephant, faEarthAfrica, faGlobeAfrica, faRainbow, faCircleNotch, faTabletScreenButton, faTabletAlt, faPaw, faMessageQuestion, faCloud, faTrowelBricks, faSquare3, faFaceFlushed, faFlushed, faHospitalUser, faMicrowave, faChfSign, faTentArrowLeftRight, faCartCircleArrowUp, faTrashClock, faGavel, faLegal, faSprinklerCeiling, faBrowsers, faTrillium, faMusicSlash, faTruckRamp, faBinoculars, faMicrophoneSlash, faBoxTissue, faCircleC, faStarChristmas, faChartBullet, faMotorcycle, faTreeChristmas, faTireFlat, faSunglasses, faBadge, faMessagePen, faCommentAltEdit, faMessageEdit, faBellConcierge, faConciergeBell, faPenRuler, faPencilRuler, faArrowProgress, faChessRookPiece, faChessRookAlt, faSquareRoot, faAlbumCollectionCirclePlus, faPeopleArrows, faPeopleArrowsLeftRight, faFaceAngryHorns, faMarsAndVenusBurst, faTombstone, faSquareCaretRight, faCaretSquareRight, faScissors, faCut, faListMusic, faSunPlantWilt, faToiletsPortable, faHockeyPuck, faMustache, faHyphen, faTable, faUserChef, faMessageImage, faCommentAltImage, faUsersMedical, faSensorTriangleExclamation, faSensorAlert, faMagnifyingGlassArrowRight, faTachographDigital, faDigitalTachograph, faFaceMask, faPickleball, faStarSharpHalf, faUsersSlash, faClover, faMeat, faReply, faMailReply, faStarAndCrescent, faEmptySet, faHouseFire, faSquareMinus, faMinusSquare, faHelicopter, faBird, faCompass, faSquareCaretDown, faCaretSquareDown, faHeartHalfStroke, faHeartHalfAlt, faFileCircleQuestion, faLaptopCode, faJoystick, faGrillFire, faRectangleVerticalHistory, faSwatchbook, faPrescriptionBottle, faBars, faNavicon, faKeyboardLeft, faPeopleGroup, faHourglassEnd, faHourglass3, faHeartCrack, faHeartBroken, faFaceBeamHandOverMouth, faDropletPercent, faHumidity, faSquareUpRight, faExternalLinkSquareAlt, faFaceKissBeam, faKissBeam, faCorn, faRollerCoaster, faPhotoFilmMusic, faRadar, faSickle, faFilm, faCoconut, faRulerHorizontal, faShieldCross, faCassetteTape, faSquareTerminal, faPeopleRobbery, faLightbulb, faCaretLeft, faCommentMiddle, faTrashCanList, faBlock, faCircleExclamation, faExclamationCircle, faSchoolCircleXmark, faArrowRightFromBracket, faSignOut, faFaceFrownSlight, faCircleChevronDown, faChevronCircleDown, faSidebarFlip, faUnlockKeyhole, faUnlockAlt, faTemperatureList, faCloudShowersHeavy, faHeadphonesSimple, faHeadphonesAlt, faSitemap, faPipeSection, faSpaceStationMoonConstruction, faSpaceStationMoonAlt, faCircleDollarToSlot, faDonate, faMemory, faFaceSleeping, faRoadSpikes, faFireBurner, faSquirrel, faArrowUpToLine, faArrowToTop, faFlag, faFaceCowboyHat, faHanukiah, faChartScatter3d, faDisplayChartUp, faSquareCode, faFeather, faVolumeLow, faVolumeDown, faXmarkToSlot, faTimesToSlot, faVoteNay, faBoxTaped, faBoxAlt, faCommentSlash, faSwords, faCloudSunRain, faAlbum, faCircleN, faCompress, faWheatAwn, faWheatAlt, faAnkh, faHandsHoldingChild, faAsterisk, faKeySkeletonLeftRight, faCommentLines, faLuchadorMask, faLuchador, faMaskLuchador, faSquareCheck, faCheckSquare, faShredder, faBookOpenCover, faBookOpenAlt, faSandwich, faPesetaSign, faSquareParkingSlash, faParkingSlash, faTrainTunnel, faHeading, faHeader, faGhost, faFaceAnguished, faHockeySticks, faAbacus, faFilmSimple, faFilmAlt, faList, faListSquares, faTreePalm, faSquarePhoneFlip, faPhoneSquareAlt, faCartPlus, faGamepad, faBorderCenterV, faCircleDot, faDotCircle, faClipboardMedical, faFaceDizzy, faDizzy, faEgg, faUpToLine, faArrowAltToTop, faHouseMedicalCircleXmark, faWatchFitness, faClockNineThirty, faCampground, faFolderPlus, faJug, faFutbol, faFutbolBall, faSoccerBall, faSnowBlowing, faPaintbrush, faPaintBrush, faLock, faArrowDownFromLine, faArrowFromTop, faGasPump, faSignalBarsSlash, faSignalAltSlash, faMonkey, faRectanglePro, faPro, faHouseNight, faHotTubPerson, faHotTub, faBlanket, faMapLocation, faMapMarked, faHouseFloodWater, faCommentsQuestionCheck, faTree, faArrowsCross, faBackpack, faSquareSmall, faFolderArrowUp, faFolderUpload, faBridgeLock, faCrosshairsSimple, faSackDollar, faPenToSquare, faEdit, faSquareSliders, faSlidersHSquare, faCarSide, faMessageMiddleTop, faCommentMiddleTopAlt, faLightbulbOn, faKnife, faUtensilKnife, faShareNodes, faShareAlt, faDisplayChartUpCircleDollar, faWaveSine, faHeartCircleMinus, faCircleW, faCircleCalendar, faCalendarCircle, faHourglassHalf, faHourglass2, faMicroscope, faSunset, faSink, faCalendarExclamation, faTruckContainerEmpty, faHandHeart, faBagShopping, faShoppingBag, faArrowDownZA, faSortAlphaDesc, faSortAlphaDownAlt, faMitten, faReplyClock, faReplyTime, faPersonRays, faRight, faArrowAltRight, faCircleF, faUsers, faFacePleading, faEyeSlash, faFlaskVial, faPoliceBox, faCucumber, faHeadSideBrain, faHand, faHandPaper, faPersonBikingMountain, faBikingMountain, faUtensilsSlash, faPrintMagnifyingGlass, faPrintSearch, faFolderBookmark, faOm, faPi, faFlaskRoundPotion, faFlaskPotion, faFaceShush, faWorm, faHouseCircleXmark, faPlug, faCalendarCircleExclamation, faSquareI, faChevronUp, faFaceSaluting, faGaugeSimpleLow, faTachometerSlow, faFacePersevering, faCircleCamera, faCameraCircle, faHandSpock, faSpiderWeb, faCircleMicrophone, faMicrophoneCircle, faBookArrowUp, faPopsicle, faCommand, faBlinds, faStopwatch, faSaxophone, faSquare2, faFieldHockeyStickBall, faFieldHockey, faArrowUpSquareTriangle, faSortShapesUpAlt, faFaceScream, faSquareM, faCameraWeb, faWebcam, faCommentArrowDown, faLightbulbCfl, faWindowFrameOpen, faFaceKiss, faKiss, faBridgeCircleXmark, faPeriod, faFaceGrinTongue, faGrinTongue, faUpToDottedLine, faThoughtBubble, faSkeletonRibs, faRaygun, faFlute, faAcorn, faVideoArrowUpRight, faGrateDroplet, faSealExclamation, faChessBishop, faMessageSms, faCoffeeBeans, faHatWitch, faFaceGrinWink, faGrinWink, faClockThreeThirty, faEarDeaf, faDeaf, faDeafness, faHardOfHearing, faAlarmClock, faEclipse, faFaceRelieved, faRoadCircleCheck, faDiceFive, faOctagonMinus, faMinusOctagon, faSquareRss, faRssSquare, faFaceZany, faTricycle, faLandMineOn, faSquareArrowUpLeft, faICursor, faChartMixedUpCircleDollar, faSaltShaker, faStamp, faFilePlus, faDrawSquare, faToiletPaperUnderSlash, faToiletPaperReverseSlash, faStairs, faDroneFront, faDroneAlt, faGlassEmpty, faDialHigh, faUserHelmetSafety, faUserConstruction, faUserHardHat, faI, faHryvniaSign, faHryvnia, faArrowDownLeftAndArrowUpRightToCenter, faPills, faFaceGrinWide, faGrinAlt, faTooth, faBasketballHoop, faObjectsAlignBottom, faV, faSparkles, faSquid, faLeafyGreen, faCircleArrowUpRight, faCalendars, faBangladeshiTakaSign, faBicycle, faHammerWar, faCircleD, faSpiderBlackWidow, faStaffSnake, faRodAsclepius, faRodSnake, faStaffAesculapius, faPear, faHeadSideCoughSlash, faTriangle, faApartment, faTruckMedical, faAmbulance, faPepper, faPiano, faGunSquirt, faWheatAwnCircleExclamation, faSnowman, faUserAlien, faShieldCheck, faMortarPestle, faRoadBarrier, faChartCandlestick, faBriefcaseBlank, faSchool, faIgloo, faBracketRound, faParenthesis, faJoint, faHorseSaddle, faMugMarshmallows, faFilters, faBellOn, faAngleRight, faDialMed, faHorse, faQ, faMonitorWaveform, faMonitorHeartRate, faLinkSimple, faWhistle, faG, faWineGlassCrack, faFragile, faSlotMachine, faNotesMedical, faCarWash, faEscalator, faCommentImage, faTemperatureHalf, faTemperature2, faThermometer2, faThermometerHalf, faDongSign, faDonut, faDoughnut, faCapsules, faPooStorm, faPooBolt, faTally1, faFaceFrownOpen, faFrownOpen, faSquareDashed, faSquareJ, faHandPointUp, faMoneyBill, faArrowUpBigSmall, faSortSizeUp, faBarcodeRead, faBaguette, faBowlSoftServe, faFaceHoldingBackTears, faSquareUp, faArrowAltSquareUp, faTrainSubwayTunnel, faSubwayTunnel, faSquareExclamation, faExclamationSquare, faSemicolon, faBookmark, faFanTable, faAlignJustify, faBatteryLow, faBattery1, faCreditCardFront, faBrainArrowCurvedRight, faMindShare, faUmbrellaBeach, faHelmetUn, faLocationSmile, faMapMarkerSmile, faArrowLeftToLine, faArrowToLeft, faBullseye, faSushi, faNigiri, faMessageCaptions, faCommentAltCaptions, faTrashList, faBacon, faOption, faHandPointDown, faArrowUpFromBracket, faTrashPlus, faObjectsAlignTop, faFolder, faFolderBlank, faFaceAnxiousSweat, faCreditCardBlank, faFileWaveform, faFileMedicalAlt, faMicrochipAi, faMug, faPlaneUpSlash, faRadiation, faPenCircle, faBagSeedling, faChartSimple, faCrutches, faCircleParking, faParkingCircle, faMarsStroke, faLeafOak, faSquareBolt, faVial, faGauge, faDashboard, faGaugeMed, faTachometerAltAverage, faWandMagicSparkles, faMagicWandSparkles, faLambda, faE, faPizza, faBowlChopsticksNoodles, faH3, faPenClip, faPenAlt, faBridgeCircleExclamation, faBadgePercent, faUser, faSensor, faComma, faSchoolCircleCheck, faToiletPaperUnder, faToiletPaperReverse, faLightEmergency, faArrowDownToArc, faDumpster, faVanShuttle, faShuttleVan, faBuildingUser, faLightSwitch, faSquareCaretLeft, faCaretSquareLeft, faHighlighter, faWavePulse, faHeartRate, faKey, faHatSanta, faTamale, faBoxCheck, faBullhorn, faSteak, faLocationCrosshairsSlash, faLocationSlash, faPersonDolly, faGlobe, faSynagogue, faFileChartColumn, faFileChartLine, faPersonHalfDress, faFolderImage, faCalendarPen, faCalendarEdit, faRoadBridge, faFaceSmileTear, faMessagePlus, faCommentAltPlus, faLocationArrow, faC, faTabletButton, faRectangleHistoryCircleUser, faBuildingLock, faChartLineUp, faMailbox, faTruckBolt, faPizzaSlice, faMoneyBillWave, faChartArea, faAreaChart, faHouseFlag, faCircleThreeQuartersStroke, faPersonCircleMinus, faScalpel, faBan, faCancel, faBellExclamation, faCircleBookmark, faBookmarkCircle, faEggFried, faFaceWeary, faUniformMartialArts, faCameraRotate, faSunDust, faCommentText, faSprayCanSparkles, faAirFreshener, faSignalBars, faSignalAlt, faSignalAlt4, faSignalBarsStrong, faDiamondExclamation, faStar, faDialMin, faRepeat, faCross, faPageCaretDown, faFileCaretDown, faBox, faVenusMars, faClockSevenThirty, faArrowPointer, faMousePointer, faClockFourThirty, faSignalBarsGood, faSignalAlt3, faCactus, faLightbulbGear, faMaximize, faExpandArrowsAlt, faChargingStation, faShapes, faTriangleCircleSquare, faPlaneTail, faGaugeSimpleMax, faTachometerFastest, faCircleU, faShieldSlash, faSquarePhoneHangup, faPhoneSquareDown, faArrowUpLeft, faTransporter1, faPeanuts, faShuffle, faRandom, faPersonRunning, faRunning, faMobileRetro, faGripLinesVertical, faBinBottlesRecycle, faArrowUpFromSquare, faFileDashedLine, faPageBreak, faBracketCurlyRight, faSpider, faClockThree, faHandsBound, faScalpelLineDashed, faScalpelPath, faFileInvoiceDollar, faPipeSmoking, faFaceAstonished, faWindow, faPlaneCircleExclamation, faEar, faFileLock, faDiagramVenn, faXRay, faGoalNet, faCoffinCross, faSpellCheck, faLocationXmark, faMapMarkerTimes, faMapMarkerXmark, faCircleQuarterStroke, faLasso, faSlash, faPersonToPortal, faPortalEnter, faCalendarStar, faComputerMouse, faMouse, faArrowRightToBracket, faSignIn, faPegasus, faFilesMedical, faNfcLock, faPersonSkiLift, faSkiLift, faSquare6, faShopSlash, faStoreAltSlash, faWindTurbine, faSlidersSimple, faGridRound, faBadgeSheriff, faServer, faVirusCovidSlash, faIntersection, faShopLock, faFamily, faHourglassStart, faHourglass1, faUserHairBuns, faBlenderPhone, faHourglassClock, faPersonSeatReclined, faPaperPlaneTop, faPaperPlaneAlt, faSend, faMessageArrowUp, faCommentAltArrowUp, faLightbulbExclamation, faLayerMinus, faLayerGroupMinus, faChartPieSimpleCircleCurrency, faCircleE, faBuildingWheat, faGaugeMax, faTachometerAltFastest, faPersonBreastfeeding, faApostrophe, faFireHydrant, faRightToBracket, faSignInAlt, faVideoPlus, faSquareRight, faArrowAltSquareRight, faCommentSmile, faVenus, faPassport, faInboxIn, faInboxArrowDown, faHeartPulse, faHeartbeat, faCircle8, faCloudsMoon, faClockTenThirty, faPeopleCarryBox, faPeopleCarry, faFolderUser, faTrashCanXmark, faTemperatureHigh, faMicrochip, faLeftLongToLine, faCrown, faWeightHanging, faXmarksLines, faFilePrescription, faCalendarRange, faFlowerDaffodil, faHandBackPointUp, faWeightScale, faWeight, faStarExclamation, faBooks, faUserGroup, faUserFriends, faArrowUpAZ, faSortAlphaUp, faLayerPlus, faLayerGroupPlus, faPlayPause, faBlockQuestion, faSnooze, faZzz, faScannerImage, faTvRetro, faSquareT, faFarm, faBarnSilo, faChessKnight, faBarsSort, faPalletBoxes, faPaletteBoxes, faPalletAlt, faFaceLaughSquint, faLaughSquint, faCodeSimple, faBoltSlash, faPanelFire, faBinaryCircleCheck, faCommentMinus, faBurrito, faViolin, faObjectsColumn, faSquareChevronDown, faChevronSquareDown, faCommentPlus, faTriangleInstrument, faTriangleMusic, faWheelchair, faUserPilotTie, faPianoKeyboard, faBedEmpty, faCircleArrowUp, faArrowCircleUp, faToggleOn, faRectangleVertical, faRectanglePortrait, faPersonWalking, faWalking, faL, faSignalStream, faDownToBracket, faCircleZ, faStars, faFire, faBedPulse, faProcedures, faHouseDay, faShuttleSpace, faSpaceShuttle, faShirtLongSleeve, faChartPieSimple, faChartPieAlt, faFaceLaugh, faLaugh, faFolderOpen, faAlbumCollectionCircleUser, faCandy, faBowlHot, faSoup, faFlatbread, faHeartCirclePlus, faCodeFork, faCity, faSignalBarsWeak, faSignalAlt1, faMicrophoneLines, faMicrophoneAlt, faClockTwelve, faPepperHot, faCitrusSlice, faSheep, faUnlock, faColonSign, faHeadset, faBadgerHoney, faH4, faStoreSlash, faRoadCircleXmark, faSignalSlash, faUserMinus, faMarsStrokeUp, faMarsStrokeV, faChampagneGlasses, faGlassCheers, faTaco, faHexagonPlus, faPlusHexagon, faClipboard, faHouseCircleExclamation, faFileArrowUp, faFileUpload, faWifi, faWifi3, faWifiStrong, faMessages, faCommentsAlt, faBath, faBathtub, faUmbrellaSimple, faUmbrellaAlt, faRectangleHistoryCirclePlus, faUnderline, faPrescriptionBottlePill, faUserPen, faUserEdit, faBinarySlash, faSquareO, faSignature, faStroopwafel, faBold, faAnchorLock, faBuildingNgo, faTransporter3, faEngineWarning, faEngineExclamation, faCircleDownRight, faSquareK, faManatSign, faMoneyCheckPen, faMoneyCheckEdit, faNotEqual, faBorderTopLeft, faBorderStyle, faMapLocationDot, faMapMarkedAlt, faTilde, faJedi, faSquarePollVertical, faPoll, faArrowDownSquareTriangle, faSortShapesDownAlt, faMugHot, faDogLeashed, faCarBattery, faBatteryCar, faFaceDowncastSweat, faMailboxFlagUp, faMemoCircleInfo, faGift, faDiceTwo, faVolume, faVolumeMedium, faTransporter5, faGaugeCircleBolt, faCoinFront, faFileSlash, faMessageArrowUpRight, faTreasureChest, faChessQueen, faPaintbrushFine, faPaintBrushAlt, faPaintBrushFine, faPaintbrushAlt, faGlasses, faHoodCloak, faSquareQuote, faUpLeft, faBringFront, faChessBoard, faBurgerCheese, faCheeseburger, faBuildingCircleCheck, faRepeat1, faArrowDownToLine, faArrowToBottom, faGrid5, faRightLongToLine, faPersonChalkboard, faMarsStrokeRight, faMarsStrokeH, faHandBackFist, faHandRock, faGridRound5, faTally, faTally5, faSquareCaretUp, faCaretSquareUp, faCloudShowersWater, faChartBar, faBarChart, faHandsBubbles, faHandsWash, faLessThanEqual, faTrain, faUpFromDottedLine, faEyeLowVision, faLowVision, faTrafficLightGo, faFaceExhaling, faSensorFire, faUserUnlock, faHexagonDivide, fa00, faCrow, faCassetteBetamax, faBetamax, faSailboat, faWindowRestore, faNfcMagnifyingGlass, faFileBinary, faCircleV, faSquarePlus, faPlusSquare, faBowlScoops, faMistletoe, faCustard, faLacrosseStick, faHockeyMask, faSunrise, faPanelEws, faToriiGate, faCloudExclamation, faMessageLines, faCommentAltLines, faFrog, faBucket, faFloppyDiskPen, faImage, faWindowFrame, faMicrophone, faCow, faFileZip, faSquareRing, faDownFromLine, faArrowAltFromTop, faCaretUp, faShieldXmark, faShieldTimes, faScrewdriver, faCircleSortDown, faSortCircleDown, faFolderClosed, faHouseTsunami, faSquareNfi, faForklift, faArrowUpFromGroundWater, faBracketSquareRight, faMartiniGlass, faGlassMartiniAlt, faRotateLeft, faRotateBack, faRotateBackward, faUndoAlt, faTableColumns, faColumns, faSquareA, faTick, faLemon, faHeadSideMask, faHandshake, faGem, faDolly, faDollyBox, faSmoking, faMinimize, faCompressArrowsAlt, faRefrigerator, faMonument, faOctagonXmark, faTimesOctagon, faXmarkOctagon, faAlignSlash, faSnowplow, faAnglesRight, faAngleDoubleRight, faTruckRampCouch, faTruckCouch, faCannabis, faCirclePlay, faPlayCircle, faArrowUpRightAndArrowDownLeftFromCenter, faTablets, fa360Degrees, faEthernet, faEuroSign, faEur, faEuro, faChair, faCircleCheck, faCheckCircle, faSquareDashedCirclePlus, faMoneySimpleFromBracket, faBat, faCircleStop, faStopCircle, faHeadSideHeadphones, faPhoneRotary, faCompassDrafting, faDraftingCompass, faPlateWheat, faCalendarCircleMinus, faChopsticks, faCarWrench, faCarMechanic, faIcicles, faPersonShelter, faNeuter, faIdBadge, faKazoo, faMarker, faBinBottles, faFaceLaughBeam, faLaughBeam, faSquareArrowDownLeft, faBatteryBolt, faTreeLarge, faHelicopterSymbol, faAperture, faUniversalAccess, faGearComplex, faFileMagnifyingGlass, faFileSearch, faUpRight, faCircleChevronUp, faChevronCircleUp, faUserPolice, faLariSign, faVolcano, faTeddyBear, faStocking, faPersonWalkingDashedLineArrowRight, faImageSlash, faMaskSnorkel, faSmoke, faSterlingSign, faGbp, faPoundSign, faBatteryExclamation, faViruses, faSquarePersonConfined, faUserTie, faArrowDownLong, faLongArrowDown, faTentArrowDownToLine, faCertificate, faCrystalBall, faReplyAll, faMailReplyAll, faSuitcase, faPersonSkating, faSkating, faStarShooting, faBinaryLock, faFilterCircleDollar, faFunnelDollar, faCameraRetro, faCircleArrowDown, faArrowCircleDown, faCommentPen, faCommentEdit, faFileImport, faArrowRightToFile, faBanjo, faSquareArrowUpRight, faExternalLinkSquare, faLightEmergencyOn, faKerning, faBoxOpen, faSquareF, faScroll, faSpa, faArrowLeftFromLine, faArrowFromRight, faStrawberry, faLocationPinLock, faPause, faClockEightThirty, faPlaneEngines, faPlaneAlt, faHillAvalanche, faTemperatureEmpty, faTemperature0, faThermometer0, faThermometerEmpty, faBomb, faGaugeLow, faTachometerAltSlow, faRegistered, faTrashCanPlus, faAddressCard, faContactCard, faVcard, faScaleUnbalancedFlip, faBalanceScaleRight, faGlobeSnow, faSubscript, faDiamondTurnRight, faDirections, faIntegral, faBurst, faHouseLaptop, faLaptopHouse, faFaceTired, faTired, faMoneyBills, faBlindsRaised, faSmog, faUfoBeam, faCircleCaretUp, faCaretCircleUp, faUserVneckHairLong, faSquareALock, faCrutch, faGasPumpSlash, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faCloudArrowUp, faCloudUpload, faCloudUploadAlt, faPalette, faTransporter4, faChartMixedUpCircleCurrency, faObjectsAlignRight, faArrowsTurnRight, faVest, faPig, faInboxFull, faCircleEnvelope, faEnvelopeCircle, faTrianglePersonDigging, faConstruction, faFerry, faBullseyeArrow, faArrowsDownToPeople, faSeedling, faSprout, faClockSeven, faLeftRight, faArrowsAltH, faBoxesPacking, faCircleArrowLeft, faArrowCircleLeft, faFlashlight, faGroupArrowsRotate, faBowlFood, faSquare9, faCandyCane, faArrowDownWideShort, faSortAmountAsc, faSortAmountDown, faSquareDollar, faDollarSquare, faUsdSquare, faPhoneArrowRight, faHandHoldingSeedling, faMessageCheck, faCommentAltCheck, faCloudBolt, faThunderstorm, faChartLineUpDown, faTextSlash, faRemoveFormat, faWatch, faCircleDownLeft, faText, faProjector, faFaceSmileWink, faSmileWink, faTombstoneBlank, faTombstoneAlt, faChessKingPiece, faChessKingAlt, faCircle6, faLeft, faArrowAltLeft, faFileWord, faFilePowerpoint, faSquareDown, faArrowAltSquareDown, faObjectsAlignCenterVertical, faArrowsLeftRight, faArrowsH, faHouseLock, faCloudArrowDown, faCloudDownload, faCloudDownloadAlt, faWreath, faChildren, faMeterDroplet, faChalkboard, faBlackboard, faUserLargeSlash, faUserAltSlash, faSignalStrong, faSignal4, faLollipop, faLollypop, faListTree, faEnvelopeOpen, faDrawCircle, faCatSpace, faHandshakeSimpleSlash, faHandshakeAltSlash, faRabbitRunning, faRabbitFast, faMemoPad, faMattressPillow, faAlarmPlus, faAlicorn, faCommentQuestion, faGingerbreadMan, faGuaraniSign, faBurgerFries, faMugTea, faBorderTop, faArrowsRotate, faRefresh, faSync, faCircleBookOpen, faBookCircle, faArrowsToDottedLine, faFireExtinguisher, faGarageOpen, faShelvesEmpty, faCruzeiroSign, faWatchApple, faWatchCalculator, faListDropdown, faCabinetFiling, faBurgerSoda, faSquareArrowUp, faArrowSquareUp, faGreaterThanEqual, faPalletBox, faFaceConfounded, faShieldHalved, faShieldAlt, faTruckPlow, faBookAtlas, faAtlas, faVirus, faGridRound2, faCommentMiddleTop, faEnvelopeCircleCheck, faLayerGroup, faRestroomSimple, faArrowsToDot, faBorderOuter, faHashtagLock, faClockTwoThirty, faArchway, faHeartCircleCheck, faHouseChimneyCrack, faHouseDamage, faFileZipper, faFileArchive, faHeartHalf, faCommentCheck, faSquare, faMemo, faMartiniGlassEmpty, faGlassMartini, faCouch, faCediSign, faItalic, faGlassCitrus, faCalendarLinesPen, faChurch, faPersonSnowmobiling, faSnowmobile, faFaceHushed, faCommentsDollar, faPickaxe, faLinkSimpleSlash, faDemocrat, faFaceConfused, faPinball, faZ, faPersonSkiing, faSkiing, faDeer, faInputPipe, faRoadLock, faA, faBookmarkSlash, faTemperatureArrowDown, faTemperatureDown, faMace, faFeatherPointed, faFeatherAlt, faSausage, faTrashCanClock, faP, faBroomWide, faSnowflake, faStomach, faNewspaper, faRectangleAd, faAd, faGuitarElectric, faArrowTurnDownRight, faMoonCloud, faBreadSliceButter, faCircleArrowRight, faArrowCircleRight, faUserGroupCrown, faUsersCrown, faCircleI, faToiletPaperCheck, faFilterCircleXmark, faLocust, faSort, faUnsorted, faListOl, faList12, faListNumeric, faChartWaterfall, faSparkle, faFaceParty, faKidneys, faWifiExclamation, faChartNetwork, faPersonDressBurst, faDiceD4, faMoneyCheckDollar, faMoneyCheckAlt, faVectorSquare, faBreadSlice, faLanguage, faWheatAwnSlash, faFaceKissWinkHeart, faKissWinkHeart, faDagger, faPodium, faMemoCircleCheck, faRouteHighway, faDownToLine, faArrowAltToBottom, faFilter, faSquareG, faCirclePhone, faPhoneCircle, faClipboardPrescription, faUserNurseHair, faQuestion, faFileSignature, faToggleLargeOn, faUpDownLeftRight, faArrowsAlt, faDryerHeat, faDryerAlt, faHouseChimneyUser, faHandHoldingHeart, faArrowUpSmallBig, faSortSizeUpAlt, faTrainTrack, faPuzzlePiece, faMoneyCheck, faStarHalfStroke, faStarHalfAlt, faFileExclamation, faCode, faWhiskeyGlass, faGlassWhiskey, faMoonStars, faBuildingCircleExclamation, faClothesHanger, faMobileNotch, faMobileIphone, faMagnifyingGlassChart, faArrowUpRightFromSquare, faExternalLink, faCubesStacked, faImagesUser, faWonSign, faKrw, faWon, faImagePolaroidUser, faVirusCovid, faSquareEllipsis, faPie, faChessKnightPiece, faChessKnightAlt, faAustralSign, faCloudPlus, faF, faLeaf, faBedBunk, faRoad, faTaxi, faCab, faPersonCirclePlus, faChartPie, faPieChart, faBoltLightning, faClockEight, faSackXmark, faFileExcel, faFileContract, faFishFins, faCircleQ, faBuildingFlag, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faFaceDisguise, faCircleArrowDownRight, faAlien8bit, faAlienMonster, faHandPointRibbon, faPoop, faObjectExclude, faTelescope, faLocationPin, faMapMarker, faSquareList, faKaaba, faToiletPaper, faHelmetSafety, faHardHat, faHatHard, faCommentCode, faSimCards, faStarship, faEject, faCircleRight, faArrowAltCircleRight, faPlaneCircleCheck, faSeal, faUserCowboy, faHexagonVerticalNft, faFaceRollingEyes, faMehRollingEyes, faBreadLoaf, faRingsWedding, faObjectGroup, faFrenchFries, faChartLine, faLineChart, faCalendarArrowDown, faCalendarDownload, faSendBack, faMaskVentilator, faSignatureLock, faArrowRight, faSignsPost, faMapSigns, faOctagonPlus, faPlusOctagon, faCashRegister, faPersonCircleQuestion, faMelonSlice, faSpaceStationMoon, faMessageSmile, faCommentAltSmile, faCupStraw, faLeftFromLine, faArrowAltFromRight, faH, faBasketShoppingSimple, faShoppingBasketAlt, faHandsHoldingHeart, faHandsHeart, faClockNine, faTarp, faFaceSleepy, faHandHorns, faScrewdriverWrench, faTools, faArrowsToEye, faCircleThreeQuarters, faTrophyStar, faTrophyAlt, faPlugCircleBolt, faFaceThermometer, faGridRound4, faShirtRunning, faBookCircleArrowUp, faFaceNauseated, faHeart, faFileChartPie, faMarsAndVenus, faHouseUser, faHomeUser, faCircleArrowDownLeft, faDumpsterFire, faHexagonMinus, faMinusHexagon, faLeftToLine, faArrowAltToLeft, faHouseCrack, faPawSimple, faPawAlt, faArrowLeftLongToLine, faBracketsRound, faParentheses, faMartiniGlassCitrus, faCocktail, faUserShakespeare, faArrowRightToArc, faFaceSurprise, faSurprise, faBottleWater, faCirclePause, faPauseCircle, faGaugeCirclePlus, faFolders, faAngel, faValueAbsolute, faRabbit, faToiletPaperSlash, faCircleEuro, faAppleWhole, faAppleAlt, faKitchenSet, faDiamondHalf, faLockKeyhole, faLockAlt, faR, faTemperatureQuarter, faTemperature1, faThermometer1, faThermometerQuarter, faSquareInfo, faInfoSquare, faWifiSlash, faToiletPaperXmark, faHandsHoldingDollar, faHandsUsd, faCube, faArrowDownTriangleSquare, faSortShapesDown, faBitcoinSign, faShutters, faShieldDog, faSolarPanel, faLockOpen, faTableTree, faHouseChimneyHeart, faTally3, faElevator, faMoneyBillTransfer, faMoneyBillTrendUp, faHouseFloodWaterCircleArrowRight, faSquarePollHorizontal, faPollH, faCircle, faCartCircleExclamation, faSword, faBackwardFast, faFastBackward, faRecycle, faUserAstronaut, faInterrobang, faPlaneSlash, faCircleDashed, faTrademark, faBasketball, faBasketballBall, faForkKnife, faUtensilsAlt, faSatelliteDish, faBadgeCheck, faCircleUp, faArrowAltCircleUp, faSlider, faMobileScreenButton, faMobileAlt, faClockOneThirty, faInboxOut, faInboxArrowUp, faCloudSlash, faVolumeHigh, faVolumeUp, faUsersRays, faWallet, faOctagonCheck, faFlatbreadStuffed, faClipboardCheck, faCartCirclePlus, faTruckClock, faShippingTimed, faPool8Ball, faFileAudio, faTurnDownLeft, faLockHashtag, faChartRadar, faStaff, faBurger, faHamburger, faUtilityPole, faTransporter6, faWrench, faBugs, faVectorPolygon, faDiagramNested, faRupeeSign, faRupee, faFileImage, faCircleQuestion, faQuestionCircle, faImageUser, faBuoy, faPlaneDeparture, faHandshakeSlash, faBookBookmark, faBorderCenterH, faCanFood, faTypewriter, faArrowRightFromArc, faCircleK, faFaceHandOverMouth, faPopcorn, faHouseWater, faHouseFlood, faObjectSubtract, faCodeBranch, faWarehouseFull, faWarehouseAlt, faHatCowboy, faBridge, faPhoneFlip, faPhoneAlt, faArrowDownFromDottedLine, faFileDoc, faSquareQuarters, faTruckFront, faCat, faTrashXmark, faCircleCaretLeft, faCaretCircleLeft, faFiles, faAnchorCircleExclamation, faFaceClouds, faUserCrown, faTruckField, faRoute, faCartCircleCheck, faClipboardQuestion, faPanorama, faCommentMedical, faTeethOpen, faUserTieHairLong, faFileCircleMinus, faHeadSideMedical, faTags, faWineGlass, faForwardFast, faFastForward, faFaceMehBlank, faMehBlank, faUserRobot, faSquareParking, faParking, faCardDiamond, faFaceZipper, faFaceRaisedEyebrow, faHouseSignal, faSquareChevronUp, faChevronSquareUp, faNfcSymbol, faBarsProgress, faTasksAlt, faFaucetDrip, faArrowsToLine, faDolphin, faArrowUpRight, faCircleR, faCartFlatbed, faDollyFlatbed, faBanSmoking, faSmokingBan, faCircleSortUp, faSortCircleUp, faTerminal, faMobileButton, faHouseMedicalFlag, faBasketShopping, faShoppingBasket, faTape, faChestnut, faBusSimple, faBusAlt, faEye, faFaceSadCry, faSadCry, faHeat, faTicketAirline, faBootHeeled, faArrowsMinimize, faCompressArrows, faAudioDescription, faPersonMilitaryToPerson, faFileShield, faHexagon, faManhole, faUserSlash, faPen, faTowerObservation, faFloppyDisks, faToiletPaperBlankUnder, faToiletPaperReverseAlt, faFileCode, faSignal, faSignal5, faSignalPerfect, faPump, faBus, faHeartCircleXmark, faArrowUpLeftFromCircle, faHouseChimney, faHomeLg, faWindowMaximize, faDryer, faFaceFrown, faFrown, faChessBishopPiece, faChessBishopAlt, faShirtTankTop, faDiploma, faScrollRibbon, faScreencast, faWalker, faPrescription, faShop, faStoreAlt, faFloppyDisk, faSave, faVihara, faFaceKissClosedEyes, faScaleUnbalanced, faBalanceScaleLeft, faFileUser, faUserPoliceTie, faFaceTongueMoney, faTennisBall, faSquareL, faSortUp, faSortAsc, faCalendarArrowUp, faCalendarUpload, faCommentDots, faCommenting, faPlantWilt, faScarf, faAlbumCirclePlus, faUserNurseHairLong, faDiamond, faSquareLeft, faArrowAltSquareLeft, faFaceGrinSquint, faGrinSquint, faCircleEllipsisVertical, faHandHoldingDollar, faHandHoldingUsd, faGridDividers, faBacterium, faHandPointer, faDrumSteelpan, faHandScissors, faHandsPraying, faPrayingHands, faFacePensive, faUserMusic, faArrowRotateRight, faArrowRightRotate, faArrowRotateForward, faRedo, faMessagesDollar, faCommentsAltDollar, faSensorOn, faBalloon, faBiohazard, faChessQueenPiece, faChessQueenAlt, faLocationCrosshairs, faLocation, faMarsDouble, faHousePersonLeave, faHouseLeave, faHousePersonDepart, faRulerTriangle, faCardClub, faChildDress, faUsersBetweenLines, faLungsVirus, faSpinnerThird, faFaceGrinTears, faGrinTears, faPhone, faComputerMouseScrollwheel, faMouseAlt, faCalendarXmark, faCalendarTimes, faChildReaching, faTableLayout, faNarwhal, faRampLoading, faCalendarCirclePlus, faToothbrush, faBorderInner, faPawClaws, faKiwiFruit, faTrafficLightSlow, faRectangleCode, faHeadSideVirus, faKeyboardBrightness, faBooksMedical, faLightbulbSlash, faHouseBlank, faHomeBlank, faSquare5, faSquareHeart, faHeartSquare, faPuzzle, faUserGear, faUserCog, faPipeCircleCheck, faArrowUp19, faSortNumericUp, faOctagonExclamation, faDialLow, faDoorClosed, faLaptopMobile, faPhoneLaptop, faConveyorBeltBoxes, faConveyorBeltAlt, faShieldVirus, faStarfighterTwinIonEngineAdvanced, faStarfighterAltAdvanced, faDiceSix, faStarfighterTwinIonEngine, faStarfighterAlt, faRocketLaunch, faMosquitoNet, faVentDamper, faBridgeWater, faBanBug, faDebug, faPersonBooth, faTextWidth, faGarageCar, faSquareKanban, faHatWizard, faPenFancy, faCoffeePot, faMouseField, faPersonDigging, faDigging, faShowerDown, faShowerAlt, faBoxCircleCheck, faBrightness, faCarSideBolt, faOrnament, faPhoneArrowDownLeft, faPhoneArrowDown, faPhoneIncoming, faCloudWord, faHandFingersCrossed, faTrash, faGaugeSimple, faGaugeSimpleMed, faTachometerAverage, faArrowDownSmallBig, faSortSizeDownAlt, faBookMedical, faFaceMelting, faPoo, faPenClipSlash, faPenAltSlash, faQuoteRight, faQuoteRightAlt, faScrollOld, faGuitars, faPhoneXmark, faHose, faClockSix, faShirt, faTShirt, faTshirt, faBillboard, faSquareR, faCubes, faEnvelopeOpenDollar, faDivide, faSunCloud, faLampFloor, faSquare7, faTengeSign, faTenge, faHeadphones, faHandsHolding, faCampfire, faCircleAmpersand, faSnowflakes, faHandsClapping, faRepublican, faLeafMaple, faArrowLeft, faPersonCircleXmark, faRuler, faCupStrawSwoosh, faTemperatureSun, faTemperatureHot, faAlignLeft, faDiceD6, faRestroom, faHighDefinition, faRectangleHd, faJ, faGalaxy, faUsersViewfinder, faFileVideo, faCherries, faUpRightFromSquare, faExternalLinkAlt, faCircleSort, faSortCircle, faTableCells, faTh, faFilePdf, faSiren, faArrowUpToDottedLine, faImageLandscape, faLandscape, faTankWater, faCurlingStone, faCurling, faGamepadModern, faGamepadAlt, faMessagesQuestion, faBookBible, faBible, faO, faSuitcaseMedical, faMedkit, faBriefcaseArrowRight, faExpandWide, faClockElevenThirty, faRv, faUserSecret, faOtter, faDreidel, faPersonDress, faFemale, faCommentDollar, faBusinessTime, faBriefcaseClock, faFlowerTulip, faPeoplePantsSimple, faCloudDrizzle, faTableCellsLarge, faThLarge, faBookTanakh, faTanakh, faSolarSystem, faSealQuestion, faPhoneVolume, faVolumeControlPhone, faDiscDrive, faHatCowboySide, faTableRows, faRows, faLocationExclamation, faMapMarkerExclamation, faFaceFearful, faClipboardUser, faBusSchool, faFilmSlash, faSquareArrowDownRight, faBookSparkles, faBookSpells, faWashingMachine, faWasher, faChild, faLiraSign, faUserVisor, faFilePlusMinus, faChessClockFlip, faChessClockAlt, faSatellite, faPlaneLock, faSteeringWheel, faTag, faStretcher, faBookSection, faBookLaw, faInboxes, faCoffeeBean, faCircleYen, faBracketsCurly, faEllipsisStrokeVertical, faEllipsisVAlt, faComment, faSquare1, faCakeCandles, faBirthdayCake, faCake, faHeadSide, faEnvelope, faDollyEmpty, faFaceTissue, faAnglesUp, faAngleDoubleUp, faBinRecycle, faPaperclip, faChartLineDown, faArrowRightToCity, faLockA, faRibbon, faLungs, faPersonPinball, faArrowUp91, faSortNumericUpAlt, faAppleCore, faCircleY, faH6, faLitecoinSign, faCircleSmall, faBorderNone, faArrowTurnDownLeft, faCircleNodes, faParachuteBox, faMessageMedical, faCommentAltMedical, faRugbyBall, faCommentMusic, faIndent, faTreeDeciduous, faTreeAlt, faPuzzlePieceSimple, faPuzzlePieceAlt, faTruckFieldUn, faNfcTrash, faHourglass, faHourglassEmpty, faMountain, faFileXmark, faFileTimes, faHouseHeart, faHomeHeart, faHouseChimneyBlank, faMeterBolt, faUserDoctor, faUserMd, faSlashBack, faCircleInfo, faInfoCircle, faFishingRod, faHammerCrash, faMessageHeart, faCloudMeatball, faCameraPolaroid, faCamera, faCameraAlt, faSquareVirus, faCartArrowUp, faMeteor, faCarOn, faSleigh, faArrowDown19, faSortNumericAsc, faSortNumericDown, faBuoyMooring, faSquare4, faHandHoldingDroplet, faHandHoldingWater, faTricycleAdult, faWaveform, faWater, faStarSharpHalfStroke, faStarSharpHalfAlt, faNfcSignal, faPlaneProp, faCalendarCheck, faClockDesk, faCalendarClock, faCalendarTime, faBraille, faPrescriptionBottleMedical, faPrescriptionBottleAlt, faPlateUtensils, faFamilyPants, faHoseReel, faHouseWindow, faLandmark, faTruck, faCrosshairs, faCloudRainbow, faPersonCane, faAlien, faTent, faLaptopBinary, faVestPatches, faPeopleDressSimple, faCheckDouble, faArrowDownAZ, faSortAlphaAsc, faSortAlphaDown, faBowlingBallPin, faBellSchoolSlash, faPlusLarge, faMoneyBillWheat, faCameraViewfinder, faScreenshot, faMessageMusic, faCommentAltMusic, faCarBuilding, faBorderBottomRight, faBorderStyleAlt, faOctagon, faCommentArrowUpRight, faOctagonDivide, faCookie, faArrowRotateLeft, faArrowLeftRotate, faArrowRotateBack, faArrowRotateBackward, faUndo, faTvMusic, faHardDrive, faHdd, faReel, faFaceGrinSquintTears, faGrinSquintTears, faDumbbell, faRectangleList, faListAlt, faTarpDroplet, faAlarmExclamation, faHouseMedicalCircleCheck, faTrafficCone, faGrate, faArrowDownRight, faPersonSkiingNordic, faSkiingNordic, faCalendarPlus, faPersonFromPortal, faPortalExit, faPlaneArrival, faCowbellCirclePlus, faCowbellMore, faCircleLeft, faArrowAltCircleLeft, faDistributeSpacingVertical, faSignalBarsFair, faSignalAlt2, faSportsball, faGameConsoleHandheldCrank, faTrainSubway, faSubway, faChartGantt, faFaceSmileUpsideDown, faBallPile, faBadgeDollar, faMoneyBillsSimple, faMoneyBillsAlt, faListTimeline, faIndianRupeeSign, faIndianRupee, faInr, faCropSimple, faCropAlt, faMoneyBill1, faMoneyBillAlt, faLeftLong, faLongArrowAltLeft, faKeyboardDown, faCircleUpRight, faCloudBoltMoon, faThunderstormMoon, faDna, faVirusSlash, faBracketRoundRight, faCircleSterling, faCircle5, faMinus, faSubtract, faFireFlame, faFlame, faRightToLine, faArrowAltToRight, faGif, faChess, faTrashSlash, faArrowLeftLong, faLongArrowLeft, faPlugCircleCheck, faFontCase, faStreetView, faArrowDownLeft, faFrancSign, faFlaskRoundPoison, faFlaskPoison, faVolumeOff, faBookCircleArrowRight, faChartUser, faUserChart, faHandsAslInterpreting, faAmericanSignLanguageInterpreting, faAslInterpreting, faHandsAmericanSignLanguageInterpreting, faPresentationScreen, faPresentation, faCircleBolt, faFaceSmileHalo, faCartCircleArrowDown, faHousePersonReturn, faHousePersonArrive, faHouseReturn, faMessageXmark, faCommentAltTimes, faMessageTimes, faFileCertificate, faFileAward, faUserDoctorHairLong, faCameraSecurity, faCameraHome, faGear, faCog, faDropletSlash, faTintSlash, faBookHeart, faMosque, faDuck, faMosquito, faStarOfDavid, faFlagSwallowtail, faFlagAlt, faPersonMilitaryRifle, faCarGarage, faCartShopping, faShoppingCart, faBookFont, faShieldPlus, faVials, faEyeDropperFull, faDistributeSpacingHorizontal, faTabletRugged, faTemperatureSnow, faTemperatureFrigid, faMoped, faFaceSmilePlus, faSmilePlus, faRadioTuner, faRadioAlt, faFaceSwear, faWaterArrowDown, faWaterLower, faScannerTouchscreen, faCircle7, faPlugCirclePlus, faPersonSkiJumping, faSkiJump, faPlaceOfWorship, faWaterArrowUp, faWaterRise, faWaveformLines, faWaveformPath, faSplit, faFilmCanister, faFilmCannister, faFolderXmark, faFolderTimes, faToiletPaperBlank, faToiletPaperAlt, faTabletScreen, faTabletAndroidAlt, faHexagonVerticalNftSlanted, faFolderMusic, faDisplayMedical, faDesktopMedical, faShareAll, faPeapod, faChessClock, faAxe, faSquareD, faGripVertical, faMobileSignalOut, faArrowTurnUp, faLevelUp, faU, faArrowUpFromDottedLine, faSquareRootVariable, faSquareRootAlt, faLightSwitchOn, faArrowDownArrowUp, faSortAlt, faRaindrops, faDash, faMinusLarge, faClock, faClockFour, faInputNumeric, faTruckTow, faBackwardStep, faStepBackward, faPallet, faCarBolt, faArrowsMaximize, faExpandArrows, faFaucet, faCloudSleet, faLampStreet, faListRadio, faPenNibSlash, faBaseballBatBall, faSquareUpLeft, faOverline, faS, faTimeline, faKeyboard, faArrowsFromDottedLine, faUsbDrive, faBallot, faCaretDown, faLocationDotSlash, faMapMarkerAltSlash, faCards, faHouseChimneyMedical, faClinicMedical, faBoxingGlove, faGloveBoxing, faTemperatureThreeQuarters, faTemperature3, faThermometer3, faThermometerThreeQuarters, faBellSchool, faMobileScreen, faMobileAndroidAlt, faPlaneUp, faFolderHeart, faCircleLocationArrow, faLocationCircle, faFaceHeadBandage, faSushiRoll, faMakiRoll, faMakizushi, faCarBump, faPiggyBank, faRacquet, faCarMirrors, faIndustryWindows, faIndustryAlt, faBoltAuto, faBatteryHalf, faBattery3, faFluxCapacitor, faMountainCity, faCoins, faHoneyPot, faOlive, faKhanda, faFilterList, faOutlet, faSliders, faSlidersH, faCauldron, faPeople, faFolderTree, faNetworkWired, faCroissant, faMapPin, faHamsa, faCentSign, faSwordsLaser, faFlask, faPersonPregnant, faSquareU, faWandSparkles, faRouter, faEllipsisVertical, faEllipsisV, faSwordLaserAlt, faTicket, faPowerOff, faCoin, faLaptopSlash, faRightLong, faLongArrowAltRight, faCircleB, faPersonDressSimple, faPipeCollar, faLightsHoliday, faCitrus, faFlagUsa, faLaptopFile, faTty, faTeletype, faChartTreeMap, faDiagramNext, faPersonRifle, faClockFiveThirty, faPipeValve, faArrowUpFromArc, faFaceSpiralEyes, faCompressWide, faCirclePhoneHangup, faPhoneCircleDown, faGearComplexCode, faHouseMedicalCircleExclamation, faBadminton, faClosedCaptioning, faPersonHiking, faHiking, faRightFromLine, faArrowAltFromLeft, faVenusDouble, faImages, faCalculator, faShuttlecock, faUserHair, faEyeEvil, faPeoplePulling, faN, faGarage, faCableCar, faTram, faShovelSnow, faCloudRain, faFaceLying, faSprinkler, faBuildingCircleXmark, faPersonSledding, faSledding, faGameConsoleHandheld, faShip, faClockSixThirty, faBatterySlash, faTugrikSign, faArrowsDownToLine, faDownload, faShelves, faInventory, faCloudSnow, faFaceGrin, faGrin, faDeleteLeft, faBackspace, faOven, faCloudBinary, faEyeDropper, faEyeDropperEmpty, faEyedropper, faCommentCaptions, faCommentsQuestion, faScribble, faRotateExclamation, faFileCircleCheck, faGlass, faLoader, faForward, faUserPilot, faMobile, faMobileAndroid, faMobilePhone, faCodePullRequestClosed, faFaceMeh, faMeh, faAlignCenter, faBookSkull, faBookDead, faIdCard, faDriversLicense, faFaceDotted, faFaceWorried, faOutdent, faDedent, faHeartCircleExclamation, faHouse, faHome, faHomeAlt, faHomeLgAlt, faVectorCircle, faCarCircleBolt, faCalendarWeek, faFlyingDisc, faLaptopMedical, faSquareDownRight, faB, faSeatAirline, faMoonOverSun, faEclipseAlt, faPipe, faFileMedical, faPotato, faDiceOne, faCircleA, faHelmetBattle, faButter, faBlanketFire, faKiwiBird, faCastle, faGolfClub, faArrowRightArrowLeft, faExchange, faRotateRight, faRedoAlt, faRotateForward, faUtensils, faCutlery, faArrowUpWideShort, faSortAmountUp, faChartPieSimpleCircleDollar, faBalloons, faMillSign, faBowlRice, faTimelineArrow, faSkull, faGameBoardSimple, faGameBoardAlt, faCircleVideo, faVideoCircle, faChartScatterBubble, faHouseTurret, faBanana, faHandHoldingSkull, faPeopleDress, faLoveseat, faCouchSmall, faTowerBroadcast, faBroadcastTower, faTruckPickup, faBlockQuote, faUpLong, faLongArrowAltUp, faStop, faCodeMerge, faMoneyCheckDollarPen, faMoneyCheckEditAlt, faUpFromLine, faArrowAltFromBottom, faUpload, faHurricane, faGridRound2Plus, faPeoplePants, faMound, faWindsock, faCircleHalf, faBrakeWarning, faToiletPortable, faCompactDisc, faFileArrowDown, faFileDownload, faSaxophoneFire, faSaxHot, faCameraWebSlash, faWebcamSlash, faFolderMedical, faFolderGear, faFolderCog, faHandWave, faArrowUpArrowDown, faSortUpDown, faCaravan, faShieldCat, faMessageSlash, faCommentAltSlash, faBolt, faZap, faTrashCanCheck, faGlassWater, faOilWell, faPersonSimple, faVault, faMars, faToilet, faPlaneCircleXmark, faYenSign, faCny, faJpy, faRmb, faYen, faGearCode, faNotes, faRubleSign, faRouble, faRub, faRuble, faTrashUndo, faTrashArrowTurnLeft, faChampagneGlass, faGlassChampagne, faObjectsAlignCenterHorizontal, faSun, faTrashCanSlash, faTrashAltSlash, faScreenUsers, faUsersClass, faGuitar, faSquareArrowLeft, faArrowSquareLeft, faSquare8, faFaceSmileHearts, faBracketsSquare, faBrackets, faLaptopArrowDown, faHockeyStickPuck, faHouseTree, faSignalFair, faSignal2, faFaceLaughWink, faLaughWink, faCircleDollar, faDollarCircle, faUsdCircle, faHorseHead, faArrowsRepeat, faRepeatAlt, faBoreHole, faIndustry, faImagePolaroid, faWaveTriangle, faPersonRunningFast, faCircleDown, faArrowAltCircleDown, faGrill, faArrowsTurnToDots, faChartMixed, faAnalytics, faFlorinSign, faArrowDownShortWide, faSortAmountDesc, faSortAmountDownAlt, faLessThan, faDisplayCode, faDesktopCode, faFaceDrooling, faOilTemperature, faOilTemp, faSquareQuestion, faQuestionSquare, faAirConditioner, faAngleDown, faMountains, faOmega, faCarTunnel, faPersonDollyEmpty, faPanFood, faHeadSideCough, faGripLines, faThumbsDown, faUserLock, faArrowRightLong, faLongArrowRight, faTicketsAirline, faAnchorCircleXmark, faEllipsis, faEllipsisH, faNfcSlash, faChessPawn, faKitMedical, faFirstAid, faGrid2Plus, faBells, faPersonThroughWindow, faToolbox, faEnvelopeDot, faEnvelopeBadge, faHandsHoldingCircle, faBug, faBowlChopsticks, faCreditCard, faCreditCardAlt, faCircleS, faBoxBallot, faCar, faAutomobile, faHandHoldingHand, faUserTieHair, faPodiumStar, faUserHairMullet, faBusinessFront, faPartyBack, faTrianBalbot, faMicrophoneStand, faBookOpenReader, faBookReader, faFamilyDress, faCircleX, faCabin, faMountainSun, faChartSimpleHorizontal, faBluetooth, faArrowsLeftRightToLine, faHandBackPointLeft, faMessageDots, faCommentAltDots, faMessaging, faFileHeart, faBeerMug, faBeerFoam, faDiceD20, faDrone, faTruckDroplet, faFileCircleXmark, faTemperatureArrowUp, faTemperatureUp, faMedal, faBed, faBookCopy, faSquareH, faHSquare, faSquareC, faClockTwo, faSquareEllipsisVertical, faCalendarUsers, faPodcast, faBee, faTemperatureFull, faTemperature4, faThermometer4, faThermometerFull, faBell, faCandyBar, faChocolateBar, faXmarkLarge, faPinata, faArrowsFromLine, faSuperscript, faBowlSpoon, faHexagonCheck, faPlugCircleXmark, faStarOfLife, faPhoneSlash, faTrafficLightStop, faPaintRoller, faAccentGrave, faHandshakeAngle, faHandsHelping, faCircle0, faDialMedLow, faLocationDot, faMapMarkerAlt, faCrab, faBoxOpenFull, faBoxFull, faFile, faGreaterThan, faQuotes, faPretzel, faPersonSwimming, faSwimmer, faArrowDown, faUserRobotXmarks, faMessageQuote, faCommentAltQuote, faCandyCorn, faFolderMagnifyingGlass, faFolderSearch, faNotebook, faDroplet, faTint, faBullseyePointer, faEraser, faHexagonImage, faEarthAmericas, faEarth, faEarthAmerica, faGlobeAmericas, faCrateApple, faAppleCrate, faPersonBurst, faGameBoard, faHatChef, faHandBackPointRight, faDove, faSnowflakeDroplets, faBatteryEmpty, faBattery0, faGrid4, faSocks, faFaceSunglasses, faInbox, faSquare0, faSection, faSquareThisWayUp, faBoxUp, faGaugeHigh, faTachometerAlt, faTachometerAltFast, faSquareAmpersand, faEnvelopeOpenText, faLampDesk, faHospital, faHospitalAlt, faHospitalWide, faPollPeople, faWhiskeyGlassIce, faGlassWhiskeyRocks, faWineBottle, faChessRook, faUserBountyHunter, faBarsStaggered, faReorder, faStream, faDiagramSankey, faCloudHailMixed, faCircleUpLeft, faDharmachakra, faObjectsAlignLeft, faOilCanDrip, faFaceSmilingHands, faBroccoli, faRouteInterstate, faEarMuffs, faHotdog, faTransporterEmpty, faPersonWalkingWithCane, faBlind, faAngle90, faRectangleTerminal, faKite, faDrum, faScrubber, faIceCream, faHeartCircleBolt, faFishBones, faDeerRudolph, faFax, faParagraph, faHeadSideHeart, faSquareE, faMeterFire, faCloudHail, faCheckToSlot, faVoteYea, faMoneyFromBracket, faStarHalf, faCarBus, faSpeaker, faTimer, faBoxesStacked, faBoxes, faBoxesAlt, faGrillHot, faBallotCheck, faLink, faChain, faEarListen, faAssistiveListeningSystems, faFileMinus, faTreeCity, faPlay, faFont, faCupTogo, faCoffeeTogo, faSquareDownLeft, faBurgerLettuce, faRupiahSign, faMagnifyingGlass, faSearch, faTableTennisPaddleBall, faPingPongPaddleBall, faTableTennis, faPersonDotsFromLine, faDiagnoses, faChevronsDown, faChevronDoubleDown, faTrashCanArrowUp, faTrashRestoreAlt, faSignalGood, faSignal3, faLocationQuestion, faMapMarkerQuestion, faFloppyDiskCircleXmark, faFloppyDiskTimes, faSaveCircleXmark, faSaveTimes, faNairaSign, faPeach, faTaxiBus, faBracketCurly, faBracketCurlyLeft, faLobster, faCartFlatbedEmpty, faDollyFlatbedEmpty, faColon, faCartArrowDown, faWand, faWalkieTalkie, faFilePen, faFileEdit, faReceipt, faTablePicnic, faSquarePen, faPenSquare, faPencilSquare, faCircleMicrophoneLines, faMicrophoneCircleAlt, faDisplaySlash, faDesktopSlash, faSuitcaseRolling, faPersonCircleExclamation, faTransporter2, faHandsHoldingDiamond, faHandReceiving, faMoneyBillSimpleWave, faChevronDown, faBatteryFull, faBattery, faBattery5, faBellPlus, faBookArrowRight, faHospitals, faClub, faSkullCrossbones, faDropletDegree, faDewpoint, faCodeCompare, faListUl, faListDots, faHandHoldingMagic, faWatermelonSlice, faCircleEllipsis, faSchoolLock, faTowerCell, faSdCards, faJugBottle, faDownLong, faLongArrowAltDown, faEnvelopes, faPhoneOffice, faRankingStar, faChessKing, faNfcPen, faPersonHarassing, faHatWinter, faBrazilianRealSign, faLandmarkDome, faLandmarkAlt, faBoneBreak, faArrowUp, faDownFromDottedLine, faTv, faTelevision, faTvAlt, faBorderLeft, faCircleDivide, faShrimp, faListCheck, faTasks, faDiagramSubtask, faJugDetergent, faCircleUser, faUserCircle, faSquareY, faUserDoctorHair, faPlanetRinged, faMushroom, faUserShield, faMegaphone, faWreathLaurel, faCircleExclamationCheck, faWind, faBoxDollar, faBoxUsd, faCarBurst, faCarCrash, faY, faUserHeadset, faArrowsRetweet, faRetweetAlt, faPersonSnowboarding, faSnowboarding, faSquareChevronRight, faChevronSquareRight, faLacrosseStickBall, faTruckFast, faShippingFast, faUserMagnifyingGlass, faStarSharp, faCommentHeart, faCircle1, faCircleStar, faStarCircle, faFish, faCloudFog, faFog, faWaffle, faMusicNote, faMusicAlt, faHexagonExclamation, faCartShoppingFast, faObjectUnion, faUserGraduate, faStarfighter, faCircleHalfStroke, faAdjust, faArrowRightLongToLine, faSquareArrowDown, faArrowSquareDown, faDiamondHalfStroke, faClapperboard, faSquareChevronLeft, faChevronSquareLeft, faPhoneIntercom, faLinkHorizontal, faChainHorizontal, faMango, faMusicNoteSlash, faMusicAltSlash, faCircleRadiation, faRadiationAlt, faFaceTongueSweat, faGlobeStand, faBaseball, faBaseballBall, faCircleP, faAwardSimple, faJetFighterUp, faDiagramProject, faProjectDiagram, faPedestal, faChartPyramid, faSidebar, faSnowmanHead, faFrostyHead, faCopy, faBurgerGlass, faVolumeXmark, faVolumeMute, faVolumeTimes, faHandSparkles, faBarsFilter, faPaintbrushPencil, faPartyBell, faUserVneckHair, faJackOLantern, faGrip, faGripHorizontal, faShareFromSquare, faShareSquare, faKeynote, faChildCombatant, faChildRifle, faGun, faSquarePhone, faPhoneSquare, faHatBeach, faPlus, faAdd, faExpand, faComputer, faFort, faCloudCheck, faXmark, faClose, faMultiply, faRemove, faTimes, faFaceSmirking, faArrowsUpDownLeftRight, faArrows, faChalkboardUser, faChalkboardTeacher, faRhombus, faClawMarks, faPesoSign, faFaceSmileTongue, faCartCircleXmark, faBuildingShield, faCirclePhoneFlip, faPhoneCircleAlt, faBaby, faUsersLine, faQuoteLeft, faQuoteLeftAlt, faTractor, faKeySkeleton, faTrashArrowUp, faTrashRestore, faArrowDownUpLock, faArrowDownToBracket, faLinesLeaning, faSquareQ, faRulerCombined, faSymbols, faIconsAlt, faCopyright, faFlaskGear, faHighlighterLine, faBracketSquare, faBracket, faBracketLeft, faIslandTropical, faIslandTreePalm, faArrowRightFromLine, faArrowFromLeft, faH2, faEquals, faCakeSlice, faShortcake, faPeanut, faWrenchSimple, faBlender, faTeeth, faTally2, faShekelSign, faIls, faShekel, faSheqel, faSheqelSign, faCars, faAxeBattle, faUserHairLong, faMap, faFileCircleInfo, faFaceDisappointed, faLassoSparkles, faClockEleven, faRocket, faSirenOn, faClockTen, faCandleHolder, faVideoArrowDownLeft, faPhotoFilm, faPhotoVideo, faFloppyDiskCircleArrowRight, faSaveCircleArrowRight, faFolderMinus, faPlanetMoon, faFaceEyesXmarks, faChartScatter, faDisplayArrowDown, faStore, faArrowTrendUp, faPlugCircleMinus, faOliveBranch, faAngle, faVacuumRobot, faSignHanging, faSign, faSquareDivide, faSignalStreamSlash, faBezierCurve, faEyeDropperHalf, faStoreLock, faBellSlash, faCloudBoltSun, faThunderstormSun, faCameraSlash, faCommentQuote, faTablet, faTabletAndroid, faSchoolFlag, faMessageCode, faGlassHalf, faGlassHalfEmpty, faGlassHalfFull, faFill, faMessageMinus, faCommentAltMinus, faAngleUp, faDinosaur, faDrumstickBite, faLinkHorizontalSlash, faChainHorizontalSlash, faHollyBerry, faNose, faChevronLeft, faBacteria, faClouds, faMoneyBillSimple, faHandLizard, faTablePivot, faFilterSlash, faTrashCanUndo, faTrashCanArrowTurnLeft, faTrashUndoAlt, faNotdef, faDisease, faPersonToDoor, faTurntable, faBriefcaseMedical, faGenderless, faChevronRight, faSignalWeak, faSignal1, faClockFive, faRetweet, faCarRear, faCarAlt, faPumpSoap, faComputerClassic, faFrame, faVideoSlash, faBatteryQuarter, faBattery2, faEllipsisStroke, faEllipsisHAlt, faRadio, faBabyCarriage, faCarriageBaby, faFaceExpressionless, faDownToDottedLine, faCloudMusic, faTrafficLight, faCloudMinus, faThermometer, faShieldMinus, faVrCardboard, faCarTilt, faGaugeCircleMinus, faBrightnessLow, faHandMiddleFinger, faPercent, faPercentage, faTruckMoving, faGlassWaterDroplet, faConveyorBelt, faLocationCheck, faMapMarkerCheck, faCoinVertical, faDisplay, faPersonSign, faFaceSmile, faSmile, faPhoneHangup, faSignatureSlash, faThumbtack, faThumbTack, faWheatSlash, faTrophy, faCloudsSun, faPersonPraying, faPray, faHammer, faFaceVomit, faSpeakers, faTtyAnswer, faTeletypeAnswer, faMugTeaSaucer, faDiagramLeanCanvas, faAlt, faDial, faDialMedHigh, faHandPeace, faCircleTrash, faTrashCircle, faRotate, faSyncAlt, faCircleQuarters, faSpinner, faTowerControl, faArrowUpTriangleSquare, faSortShapesUp, faWhale, faRobot, faPeace, faPartyHorn, faGears, faCogs, faSunBright, faSunAlt, faWarehouse, faConveyorBeltArm, faLockKeyholeOpen, faLockOpenAlt, faSquareFragile, faBoxFragile, faSquareWineGlassCrack, faArrowUpRightDots, faSquareN, faSplotch, faFaceGrinHearts, faGrinHearts, faMeter, faMandolin, faDiceFour, faSimCard, faTransgender, faTransgenderAlt, faMercury, faUpFromBracket, faKnifeKitchen, faBorderRight, faArrowTurnDown, faLevelDown, faSpade, faCardSpade, faLineColumns, faArrowRightToLine, faArrowToRight, faPersonFallingBurst, faFlagPennant, faPennant, faConveyorBeltEmpty, faUserGroupSimple, faAward, faTicketSimple, faTicketAlt, faBuilding, faAnglesLeft, faAngleDoubleLeft, faCamcorder, faVideoHandheld, faPancakes, faAlbumCircleUser, faQrcode, faDiceD10, faFireplace, faBrowser, faPenPaintbrush, faPencilPaintbrush, faFishCooked, faChairOffice, faNestingDolls, faClockRotateLeft, faHistory, faTrumpet, faFaceGrinBeamSweat, faGrinBeamSweat, faFireSmoke, faPhoneMissed, faFileExport, faArrowRightFromFile, faShield, faShieldBlank, faArrowUpShortWide, faSortAmountUpAlt, faArrowsRepeat1, faRepeat1Alt, faGunSlash, faAvocado, faBinary, faGlassesRound, faGlassesAlt, faPhonePlus, faDitto, faPersonSeat, faHouseMedical, faGolfBallTee, faGolfBall, faCircleChevronLeft, faChevronCircleLeft, faHouseChimneyWindow, faScythe, faPenNib, faBanParking, faParkingCircleSlash, faTentArrowTurnLeft, faFaceDiagonalMouth, faDiagramCells, faCricketBatBall, faCricket, faTents, faWandMagic, faMagic, faDog, faPenLine, faAtomSimple, faAtomAlt, faAmpersand, faCarrot, faArrowUpFromLine, faArrowFromBottom, faMoon, faPenSlash, faWineGlassEmpty, faWineGlassAlt, faSquareStar, faCheese, faSendBackward, faYinYang, faMusic, faCompassSlash, faClockOne, faFileMusic, faCodeCommit, faTemperatureLow, faPersonBiking, faBiking, faDisplayChartUpCircleCurrency, faSkeleton, faCircleG, faCircleArrowUpLeft, faCoinBlank, faBroom, faVacuum, faShieldHeart, faCardHeart, faLightbulbCflOn, faMelon, faGopuram, faEarthOceania, faGlobeOceania, faContainerStorage, faFacePouting, faSquareXmark, faTimesSquare, faXmarkSquare, faFaceExplode, faExplodingHead, faHashtag, faUpRightAndDownLeftFromCenter, faExpandAlt, faOilCan, faT, faTransformerBolt, faHippo, faChartColumn, faCassetteVhs, faVhs, faInfinity, faVialCircleCheck, faChimney, faObjectIntersect, faPersonArrowDownToLine, faVoicemail, faBlockBrick, faWallBrick, faFan, faBagsShopping, faParagraphLeft, faParagraphRtl, faPersonWalkingLuggage, faCaravanSimple, faCaravanAlt, faTurtle, faPencilMechanical, faUpDown, faArrowsAltV, faCloudMoonRain, faBoothCurtain, faCalendar, faBoxHeart, faTrailer, faUserDoctorMessage, faUserMdChat, faBahai, faHaykal, faAmpGuitar, faSdCard, faVolumeSlash, faBorderBottom, faWifiWeak, faWifi1, faDragon, faShoePrints, faCirclePlus, faPlusCircle, faFaceGrinTongueWink, faGrinTongueWink, faHandHolding, faPlugCircleExclamation, faLinkSlash, faChainBroken, faChainSlash, faUnlink, faClone, faPersonWalkingArrowLoopLeft, faArrowUpZA, faSortAlphaUpAlt, faFireFlameCurved, faFireAlt, faTornado, faFileCirclePlus, faDeleteRight, faBookQuran, faQuran, faCircleQuarter, faAnchor, faBorderAll, faFunction, faFaceAngry, faAngry, faPeopleSimple, faCookieBite, faArrowTrendDown, faRss, faFeed, faFaceMonocle, faDrawPolygon, faScaleBalanced, faBalanceScale, faCalendarLines, faCalendarNote, faArrowDownBigSmall, faSortSizeDown, faGaugeSimpleHigh, faTachometer, faTachometerFast, faDoNotEnter, faShower, faDiceD8, faDesktop, faDesktopAlt, faM, faGripDotsVertical, faFaceViewfinder, faSoftServe, faCreemee, faH5, faHandBackPointDown, faTableList, faThList, faCommentSms, faSms, faRectangle, faRectangleLandscape, faClipboardListCheck, faTurkey, faBook, faUserPlus, faIceSkate, faCheck, faBatteryThreeQuarters, faBattery4, faTomato, faSwordLaser, faHouseCircleCheck, faBuildings, faAngleLeft, faCartFlatbedBoxes, faDollyFlatbedAlt, faDiagramSuccessor, faTruckArrowRight, faSquareW, faArrowsSplitUpAndLeft, faLamp, faAirplay, faHandFist, faFistRaised, faShieldQuartered, faSlashForward, faLocationPen, faMapMarkerEdit, faCloudMoon, faPotFood, faBriefcase, faPersonFalling, faImagePortrait, faPortrait, faUserTag, faRug, faPrintSlash, faEarthEurope, faGlobeEurope, faCartFlatbedSuitcase, faLuggageCart, faHandBackPointRibbon, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faTireRugged, faLightbulbDollar, faCowbell, faBahtSign, faCorner, faChevronsRight, faChevronDoubleRight, faBookOpen, faBookJournalWhills, faJournalWhills, faInhaler, faHandcuffs, faSnake, faTriangleExclamation, faExclamationTriangle, faWarning, faNoteMedical, faDatabase, faDownLeft, faShare, faArrowTurnRight, faMailForward, faFaceThinking, faTurnDownRight, faBottleDroplet, faMaskFace, faHillRockslide, faScannerKeyboard, faCircleO, faGridHorizontal, faMessageDollar, faCommentAltDollar, faRightLeft, faExchangeAlt, faColumns3, faPaperPlane, faRoadCircleExclamation, faDungeon, faHandHoldingBox, faInputText, faWindowFlip, faWindowAlt, faAlignRight, faScannerGun, faScanner, faTire, faEngine, faMoneyBill1Wave, faMoneyBillWaveAlt, faLifeRing, faHands, faSignLanguage, faSigning, faCircleCaretRight, faCaretCircleRight, faWheat, faFileSpreadsheet, faAudioDescriptionSlash, faCalendarDay, faWaterLadder, faLadderWater, faSwimmingPool, faArrowsUpDown, faArrowsV, faChessPawnPiece, faChessPawnAlt, faFaceGrimace, faGrimace, faWheelchairMove, faWheelchairAlt, faTurnDown, faLevelDownAlt, faSquareS, faRectangleBarcode, faBarcodeAlt, faPersonWalkingArrowRight, faSquareEnvelope, faEnvelopeSquare, faDice, faUnicorn, faBowlingBall, faPompebled, faBrain, faWatchSmart, faBookUser, faSensorCloud, faSensorSmoke, faClapperboardPlay, faBandage, faBandAid, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faCircle4, faGifts, faAlbumCollection, faHotel, faEarthAsia, faGlobeAsia, faIdCardClip, faIdCardAlt, faMagnifyingGlassPlus, faSearchPlus, faThumbsUp, faCloudShowers, faUserClock, faOnion, faClockTwelveThirty, faArrowDownToDottedLine, faHandDots, faAllergies, faFileInvoice, faWindowMinimize, faRectangleWide, faCommentArrowUp, faGarlic, faMugSaucer, faCoffee, faBrush, faTreeDecorated, faMask, faCalendarHeart, faMagnifyingGlassMinus, faSearchMinus, faFlower, faRightLeftLarge, faRulerVertical, faCirclesOverlap, faUserLarge, faUserAlt, faStarshipFreighter, faTrainTram, faBridgeSuspension, faTrashCheck, faUserNurse, faBoombox, faSyringe, faCloudSun, faShieldExclamation, faStopwatch20, faSquareFull, faGripDots, faCommentExclamation, faPenSwirl, faFalafel, faCircle2, faMagnet, faJar, faGramophone, faDiceD12, faNoteSticky, faStickyNote, faDown, faArrowAltDown, faHundredPoints, fa100, faPaperclipVertical, faWindWarning, faWindCircleExclamation, faLocationPinSlash, faMapMarkerSlash, faFaceSadSweat, faBugSlash, faCupcake, faLightSwitchOff, faToggleLargeOff, faPenFancySlash, faTruckContainer, faBoot, faArrowUpFromWaterPump, faFileCheck, faBone, faCardsBlank, faCircle3, faBenchTree, faKeyboardBrightnessLow, faSkiBootSki, faBrainCircuit, faUserInjured, faBlockBrickFire, faFirewall, faFaceSadTear, faSadTear, faPlane, faTentArrowsDown, faExclamation, faArrowsSpin, faFaceSmileRelaxed, faCommentXmark, faCommentTimes, faPrint, faTurkishLiraSign, faTry, faTurkishLira, faFaceNoseSteam, faCircleWaveformLines, faWaveformCircle, faDollarSign, faDollar, faUsd, faFerrisWheel, faComputerSpeaker, faSkullCow, faX, faMagnifyingGlassDollar, faSearchDollar, faUsersGear, faUsersCog, faPersonMilitaryPointing, faBuildingColumns, faBank, faInstitution, faMuseum, faUniversity, faCircleT, faSack, faGrid2, faCameraCctv, faCctv, faUmbrella, faTrowel, faHorizontalRule, faBedFront, faBedAlt, faD, faStapler, faMasksTheater, faTheaterMasks, faKipSign, faFaceWoozy, faCloudQuestion, faPineapple, faHandPointLeft, faGalleryThumbnails, faCircleJ, faEyes, faHandshakeSimple, faHandshakeAlt, faPageCaretUp, faFileCaretUp, faJetFighter, faFighterJet, faComet, faSquareShareNodes, faShareAltSquare, faShieldKeyhole, faBarcode, faPlusMinus, faSquareSlidersVertical, faSlidersVSquare, faVideo, faVideoCamera, faMessageMiddle, faCommentMiddleAlt, faGraduationCap, faMortarBoard, faHandHoldingMedical, faPersonCircleCheck, faSquareZ, faMessageText, faCommentAltText, faTurnUp, faLevelUpAlt };\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"variant\", \"pill\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n pill: false\n};\nvar Badge = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n variant = _ref.variant,\n pill = _ref.pill,\n className = _ref.className,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'span' : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'badge');\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, prefix, pill && prefix + \"-pill\", variant && prefix + \"-\" + variant)\n }));\n});\nBadge.displayName = 'Badge';\nBadge.defaultProps = defaultProps;\nexport default Badge;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"className\", \"children\", \"dimension\", \"getDimensionValue\"];\n\nvar _collapseStyles;\n\nimport classNames from 'classnames';\nimport css from 'dom-helpers/css';\nimport React, { useMemo } from 'react';\nimport Transition, { ENTERED, ENTERING, EXITED, EXITING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport createChainedFunction from './createChainedFunction';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nvar MARGINS = {\n height: ['marginTop', 'marginBottom'],\n width: ['marginLeft', 'marginRight']\n};\n\nfunction getDefaultDimensionValue(dimension, elem) {\n var offset = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1);\n var value = elem[offset];\n var margins = MARGINS[dimension];\n return value + // @ts-ignore\n parseInt(css(elem, margins[0]), 10) + // @ts-ignore\n parseInt(css(elem, margins[1]), 10);\n}\n\nvar collapseStyles = (_collapseStyles = {}, _collapseStyles[EXITED] = 'collapse', _collapseStyles[EXITING] = 'collapsing', _collapseStyles[ENTERING] = 'collapsing', _collapseStyles[ENTERED] = 'collapse show', _collapseStyles);\nvar defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n getDimensionValue: getDefaultDimensionValue\n};\nvar Collapse = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var onEnter = _ref.onEnter,\n onEntering = _ref.onEntering,\n onEntered = _ref.onEntered,\n onExit = _ref.onExit,\n onExiting = _ref.onExiting,\n className = _ref.className,\n children = _ref.children,\n _ref$dimension = _ref.dimension,\n dimension = _ref$dimension === void 0 ? 'height' : _ref$dimension,\n _ref$getDimensionValu = _ref.getDimensionValue,\n getDimensionValue = _ref$getDimensionValu === void 0 ? getDefaultDimensionValue : _ref$getDimensionValu,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n /* Compute dimension */\n var computedDimension = typeof dimension === 'function' ? dimension() : dimension;\n /* -- Expanding -- */\n\n var handleEnter = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = '0';\n }, onEnter);\n }, [computedDimension, onEnter]);\n var handleEntering = useMemo(function () {\n return createChainedFunction(function (elem) {\n var scroll = \"scroll\" + computedDimension[0].toUpperCase() + computedDimension.slice(1);\n elem.style[computedDimension] = elem[scroll] + \"px\";\n }, onEntering);\n }, [computedDimension, onEntering]);\n var handleEntered = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = null;\n }, onEntered);\n }, [computedDimension, onEntered]);\n /* -- Collapsing -- */\n\n var handleExit = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = getDimensionValue(computedDimension, elem) + \"px\";\n triggerBrowserReflow(elem);\n }, onExit);\n }, [onExit, getDimensionValue, computedDimension]);\n var handleExiting = useMemo(function () {\n return createChainedFunction(function (elem) {\n elem.style[computedDimension] = null;\n }, onExiting);\n }, [computedDimension, onExiting]);\n return /*#__PURE__*/React.createElement(Transition // @ts-ignore\n , _extends({\n ref: ref,\n addEndListener: transitionEndListener\n }, props, {\n \"aria-expanded\": props.role ? props.in : null,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: handleEntered,\n onExit: handleExit,\n onExiting: handleExiting\n }), function (state, innerProps) {\n return /*#__PURE__*/React.cloneElement(children, _extends({}, innerProps, {\n className: classNames(className, children.props.className, collapseStyles[state], computedDimension === 'width' && 'width')\n }));\n });\n}); // @ts-ignore\n\n// @ts-ignore\nCollapse.defaultProps = defaultProps;\nexport default Collapse;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"fluid\", \"as\", \"className\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar defaultProps = {\n fluid: false\n};\nvar Container = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n fluid = _ref.fluid,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'container');\n var suffix = typeof fluid === 'string' ? \"-\" + fluid : '-fluid';\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: classNames(className, fluid ? \"\" + prefix + suffix : prefix)\n }));\n});\nContainer.displayName = 'Container';\nContainer.defaultProps = defaultProps;\nexport default Container;","// ES6 Map\nvar map\ntry {\n map = Map\n} catch (_) { }\nvar set\n\n// ES6 Set\ntry {\n set = Set\n} catch (_) { }\n\nfunction baseClone (src, circulars, clones) {\n // Null/undefined/functions/etc\n if (!src || typeof src !== 'object' || typeof src === 'function') {\n return src\n }\n\n // DOM Node\n if (src.nodeType && 'cloneNode' in src) {\n return src.cloneNode(true)\n }\n\n // Date\n if (src instanceof Date) {\n return new Date(src.getTime())\n }\n\n // RegExp\n if (src instanceof RegExp) {\n return new RegExp(src)\n }\n\n // Arrays\n if (Array.isArray(src)) {\n return src.map(clone)\n }\n\n // ES6 Maps\n if (map && src instanceof map) {\n return new Map(Array.from(src.entries()))\n }\n\n // ES6 Sets\n if (set && src instanceof set) {\n return new Set(Array.from(src.values()))\n }\n\n // Object\n if (src instanceof Object) {\n circulars.push(src)\n var obj = Object.create(src)\n clones.push(obj)\n for (var key in src) {\n var idx = circulars.findIndex(function (i) {\n return i === src[key]\n })\n obj[key] = idx > -1 ? clones[idx] : baseClone(src[key], circulars, clones)\n }\n return obj\n }\n\n // ???\n return src\n}\n\nexport default function clone (src) {\n return baseClone(src, [], [])\n}\n","import { getCoord, getGeom } from \"@turf/invariant\";\n// http://en.wikipedia.org/wiki/Even%E2%80%93odd_rule\n// modified from: https://github.com/substack/point-in-polygon/blob/master/index.js\n// which was modified from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n/**\n * Takes a {@link Point} and a {@link Polygon} or {@link MultiPolygon} and determines if the point\n * resides inside the polygon. The polygon can be convex or concave. The function accounts for holes.\n *\n * @name booleanPointInPolygon\n * @param {Coord} point input point\n * @param {Feature<Polygon|MultiPolygon>} polygon input polygon or multipolygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.ignoreBoundary=false] True if polygon boundary should be ignored when determining if\n * the point is inside the polygon otherwise false.\n * @returns {boolean} `true` if the Point is inside the Polygon; `false` if the Point is not inside the Polygon\n * @example\n * var pt = turf.point([-77, 44]);\n * var poly = turf.polygon([[\n * [-81, 41],\n * [-81, 47],\n * [-72, 47],\n * [-72, 41],\n * [-81, 41]\n * ]]);\n *\n * turf.booleanPointInPolygon(pt, poly);\n * //= true\n */\nexport default function booleanPointInPolygon(point, polygon, options) {\n if (options === void 0) { options = {}; }\n // validation\n if (!point) {\n throw new Error(\"point is required\");\n }\n if (!polygon) {\n throw new Error(\"polygon is required\");\n }\n var pt = getCoord(point);\n var geom = getGeom(polygon);\n var type = geom.type;\n var bbox = polygon.bbox;\n var polys = geom.coordinates;\n // Quick elimination if point is not inside bbox\n if (bbox && inBBox(pt, bbox) === false) {\n return false;\n }\n // normalize to multipolygon\n if (type === \"Polygon\") {\n polys = [polys];\n }\n var insidePoly = false;\n for (var i = 0; i < polys.length && !insidePoly; i++) {\n // check if it is in the outer ring first\n if (inRing(pt, polys[i][0], options.ignoreBoundary)) {\n var inHole = false;\n var k = 1;\n // check for the point in any of the holes\n while (k < polys[i].length && !inHole) {\n if (inRing(pt, polys[i][k], !options.ignoreBoundary)) {\n inHole = true;\n }\n k++;\n }\n if (!inHole) {\n insidePoly = true;\n }\n }\n }\n return insidePoly;\n}\n/**\n * inRing\n *\n * @private\n * @param {Array<number>} pt [x,y]\n * @param {Array<Array<number>>} ring [[x,y], [x,y],..]\n * @param {boolean} ignoreBoundary ignoreBoundary\n * @returns {boolean} inRing\n */\nfunction inRing(pt, ring, ignoreBoundary) {\n var isInside = false;\n if (ring[0][0] === ring[ring.length - 1][0] &&\n ring[0][1] === ring[ring.length - 1][1]) {\n ring = ring.slice(0, ring.length - 1);\n }\n for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n var xi = ring[i][0];\n var yi = ring[i][1];\n var xj = ring[j][0];\n var yj = ring[j][1];\n var onBoundary = pt[1] * (xi - xj) + yi * (xj - pt[0]) + yj * (pt[0] - xi) === 0 &&\n (xi - pt[0]) * (xj - pt[0]) <= 0 &&\n (yi - pt[1]) * (yj - pt[1]) <= 0;\n if (onBoundary) {\n return !ignoreBoundary;\n }\n var intersect = yi > pt[1] !== yj > pt[1] &&\n pt[0] < ((xj - xi) * (pt[1] - yi)) / (yj - yi) + xi;\n if (intersect) {\n isInside = !isInside;\n }\n }\n return isInside;\n}\n/**\n * inBBox\n *\n * @private\n * @param {Position} pt point [x,y]\n * @param {BBox} bbox BBox [west, south, east, north]\n * @returns {boolean} true/false if point is inside BBox\n */\nfunction inBBox(pt, bbox) {\n return (bbox[0] <= pt[0] && bbox[1] <= pt[1] && bbox[2] >= pt[0] && bbox[3] >= pt[1]);\n}\n","import { isNumber, } from \"@turf/helpers\";\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nexport function getCoord(coord) {\n if (!coord) {\n throw new Error(\"coord is required\");\n }\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" &&\n coord.geometry !== null &&\n coord.geometry.type === \"Point\") {\n return coord.geometry.coordinates;\n }\n if (coord.type === \"Point\") {\n return coord.coordinates;\n }\n }\n if (Array.isArray(coord) &&\n coord.length >= 2 &&\n !Array.isArray(coord[0]) &&\n !Array.isArray(coord[1])) {\n return coord;\n }\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nexport function getCoords(coords) {\n if (Array.isArray(coords)) {\n return coords;\n }\n // Feature\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) {\n return coords.geometry.coordinates;\n }\n }\n else {\n // Geometry\n if (coords.coordinates) {\n return coords.coordinates;\n }\n }\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nexport function containsNumber(coordinates) {\n if (coordinates.length > 1 &&\n isNumber(coordinates[0]) &&\n isNumber(coordinates[1])) {\n return true;\n }\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nexport function geojsonType(value, type, name) {\n if (!type || !name) {\n throw new Error(\"type and name required\");\n }\n if (!value || value.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n value.type);\n }\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nexport function featureOf(feature, type, name) {\n if (!feature) {\n throw new Error(\"No feature passed\");\n }\n if (!name) {\n throw new Error(\".featureOf() requires a name\");\n }\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n feature.geometry.type);\n }\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nexport function collectionOf(featureCollection, type, name) {\n if (!featureCollection) {\n throw new Error(\"No featureCollection passed\");\n }\n if (!name) {\n throw new Error(\".collectionOf() requires a name\");\n }\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n }\n for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n var feature = _a[_i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n feature.geometry.type);\n }\n }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nexport function getGeom(geojson) {\n if (geojson.type === \"Feature\") {\n return geojson.geometry;\n }\n return geojson;\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nexport function getType(geojson, _name) {\n if (geojson.type === \"FeatureCollection\") {\n return \"FeatureCollection\";\n }\n if (geojson.type === \"GeometryCollection\") {\n return \"GeometryCollection\";\n }\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n return geojson.geometry.type;\n }\n return geojson.type;\n}\n","const toString = Object.prototype.toString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => '';\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\n\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\n\nfunction printSimpleValue(val, quoteStrings = false) {\n if (val == null || val === true || val === false) return '' + val;\n const typeOf = typeof val;\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return quoteStrings ? `\"${val}\"` : val;\n if (typeOf === 'function') return '[Function ' + (val.name || 'anonymous') + ']';\n if (typeOf === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n const tag = toString.call(val).slice(8, -1);\n if (tag === 'Date') return isNaN(val.getTime()) ? '' + val : val.toISOString(val);\n if (tag === 'Error' || val instanceof Error) return '[' + errorToString.call(val) + ']';\n if (tag === 'RegExp') return regExpToString.call(val);\n return null;\n}\n\nexport default function printValue(value, quoteStrings) {\n let result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n return JSON.stringify(value, function (key, value) {\n let result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n }, 2);\n}","import printValue from './util/printValue';\nexport let mixed = {\n default: '${path} is invalid',\n required: '${path} is a required field',\n oneOf: '${path} must be one of the following values: ${values}',\n notOneOf: '${path} must not be one of the following values: ${values}',\n notType: ({\n path,\n type,\n value,\n originalValue\n }) => {\n let isCast = originalValue != null && originalValue !== value;\n let msg = `${path} must be a \\`${type}\\` type, ` + `but the final value was: \\`${printValue(value, true)}\\`` + (isCast ? ` (cast from the value \\`${printValue(originalValue, true)}\\`).` : '.');\n\n if (value === null) {\n msg += `\\n If \"null\" is intended as an empty value be sure to mark the schema as \\`.nullable()\\``;\n }\n\n return msg;\n },\n defined: '${path} must be defined'\n};\nexport let string = {\n length: '${path} must be exactly ${length} characters',\n min: '${path} must be at least ${min} characters',\n max: '${path} must be at most ${max} characters',\n matches: '${path} must match the following: \"${regex}\"',\n email: '${path} must be a valid email',\n url: '${path} must be a valid URL',\n uuid: '${path} must be a valid UUID',\n trim: '${path} must be a trimmed string',\n lowercase: '${path} must be a lowercase string',\n uppercase: '${path} must be a upper case string'\n};\nexport let number = {\n min: '${path} must be greater than or equal to ${min}',\n max: '${path} must be less than or equal to ${max}',\n lessThan: '${path} must be less than ${less}',\n moreThan: '${path} must be greater than ${more}',\n positive: '${path} must be a positive number',\n negative: '${path} must be a negative number',\n integer: '${path} must be an integer'\n};\nexport let date = {\n min: '${path} field must be later than ${min}',\n max: '${path} field must be at earlier than ${max}'\n};\nexport let boolean = {\n isValue: '${path} field must be ${value}'\n};\nexport let object = {\n noUnknown: '${path} field has unspecified keys: ${unknown}'\n};\nexport let array = {\n min: '${path} field must have at least ${min} items',\n max: '${path} field must have less than or equal to ${max} items',\n length: '${path} must have ${length} items'\n};\nexport default Object.assign(Object.create(null), {\n mixed,\n string,\n number,\n date,\n object,\n array,\n boolean\n});","const isSchema = obj => obj && obj.__isYupSchema__;\n\nexport default isSchema;","import has from 'lodash/has';\nimport isSchema from './util/isSchema';\n\nclass Condition {\n constructor(refs, options) {\n this.fn = void 0;\n this.refs = refs;\n this.refs = refs;\n\n if (typeof options === 'function') {\n this.fn = options;\n return;\n }\n\n if (!has(options, 'is')) throw new TypeError('`is:` is required for `when()` conditions');\n if (!options.then && !options.otherwise) throw new TypeError('either `then:` or `otherwise:` is required for `when()` conditions');\n let {\n is,\n then,\n otherwise\n } = options;\n let check = typeof is === 'function' ? is : (...values) => values.every(value => value === is);\n\n this.fn = function (...args) {\n let options = args.pop();\n let schema = args.pop();\n let branch = check(...args) ? then : otherwise;\n if (!branch) return undefined;\n if (typeof branch === 'function') return branch(schema);\n return schema.concat(branch.resolve(options));\n };\n }\n\n resolve(base, options) {\n let values = this.refs.map(ref => ref.getValue(options == null ? void 0 : options.value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context));\n let schema = this.fn.apply(base, values.concat(base, options));\n if (schema === undefined || schema === base) return base;\n if (!isSchema(schema)) throw new TypeError('conditions must return a schema object');\n return schema.resolve(options);\n }\n\n}\n\nexport default Condition;","export default function toArray(value) {\n return value == null ? [] : [].concat(value);\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport printValue from './util/printValue';\nimport toArray from './util/toArray';\nlet strReg = /\\$\\{\\s*(\\w+)\\s*\\}/g;\nexport default class ValidationError extends Error {\n static formatError(message, params) {\n const path = params.label || params.path || 'this';\n if (path !== params.path) params = _extends({}, params, {\n path\n });\n if (typeof message === 'string') return message.replace(strReg, (_, key) => printValue(params[key]));\n if (typeof message === 'function') return message(params);\n return message;\n }\n\n static isError(err) {\n return err && err.name === 'ValidationError';\n }\n\n constructor(errorOrErrors, value, field, type) {\n super();\n this.value = void 0;\n this.path = void 0;\n this.type = void 0;\n this.errors = void 0;\n this.params = void 0;\n this.inner = void 0;\n this.name = 'ValidationError';\n this.value = value;\n this.path = field;\n this.type = type;\n this.errors = [];\n this.inner = [];\n toArray(errorOrErrors).forEach(err => {\n if (ValidationError.isError(err)) {\n this.errors.push(...err.errors);\n this.inner = this.inner.concat(err.inner.length ? err.inner : err);\n } else {\n this.errors.push(err);\n }\n });\n this.message = this.errors.length > 1 ? `${this.errors.length} errors occurred` : this.errors[0];\n if (Error.captureStackTrace) Error.captureStackTrace(this, ValidationError);\n }\n\n}","import ValidationError from '../ValidationError';\n\nconst once = cb => {\n let fired = false;\n return (...args) => {\n if (fired) return;\n fired = true;\n cb(...args);\n };\n};\n\nexport default function runTests(options, cb) {\n let {\n endEarly,\n tests,\n args,\n value,\n errors,\n sort,\n path\n } = options;\n let callback = once(cb);\n let count = tests.length;\n const nestedErrors = [];\n errors = errors ? errors : [];\n if (!count) return errors.length ? callback(new ValidationError(errors, value, path)) : callback(null, value);\n\n for (let i = 0; i < tests.length; i++) {\n const test = tests[i];\n test(args, function finishTestRun(err) {\n if (err) {\n // always return early for non validation errors\n if (!ValidationError.isError(err)) {\n return callback(err, value);\n }\n\n if (endEarly) {\n err.value = value;\n return callback(err, value);\n }\n\n nestedErrors.push(err);\n }\n\n if (--count <= 0) {\n if (nestedErrors.length) {\n if (sort) nestedErrors.sort(sort); //show parent errors after the nested ones: name.first, name\n\n if (errors.length) nestedErrors.push(...errors);\n errors = nestedErrors;\n }\n\n if (errors.length) {\n callback(new ValidationError(errors, value, path), value);\n return;\n }\n\n callback(null, value);\n }\n });\n }\n}","import { getter } from 'property-expr';\nconst prefixes = {\n context: '$',\n value: '.'\n};\nexport function create(key, options) {\n return new Reference(key, options);\n}\nexport default class Reference {\n constructor(key, options = {}) {\n this.key = void 0;\n this.isContext = void 0;\n this.isValue = void 0;\n this.isSibling = void 0;\n this.path = void 0;\n this.getter = void 0;\n this.map = void 0;\n if (typeof key !== 'string') throw new TypeError('ref must be a string, got: ' + key);\n this.key = key.trim();\n if (key === '') throw new TypeError('ref must be a non-empty string');\n this.isContext = this.key[0] === prefixes.context;\n this.isValue = this.key[0] === prefixes.value;\n this.isSibling = !this.isContext && !this.isValue;\n let prefix = this.isContext ? prefixes.context : this.isValue ? prefixes.value : '';\n this.path = this.key.slice(prefix.length);\n this.getter = this.path && getter(this.path, true);\n this.map = options.map;\n }\n\n getValue(value, parent, context) {\n let result = this.isContext ? context : this.isValue ? value : parent;\n if (this.getter) result = this.getter(result || {});\n if (this.map) result = this.map(result);\n return result;\n }\n /**\n *\n * @param {*} value\n * @param {Object} options\n * @param {Object=} options.context\n * @param {Object=} options.parent\n */\n\n\n cast(value, options) {\n return this.getValue(value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context);\n }\n\n resolve() {\n return this;\n }\n\n describe() {\n return {\n type: 'ref',\n key: this.key\n };\n }\n\n toString() {\n return `Ref(${this.key})`;\n }\n\n static isRef(value) {\n return value && value.__isYupRef;\n }\n\n} // @ts-ignore\n\nReference.prototype.__isYupRef = true;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport mapValues from 'lodash/mapValues';\nimport ValidationError from '../ValidationError';\nimport Ref from '../Reference';\nexport default function createValidation(config) {\n function validate(_ref, cb) {\n let {\n value,\n path = '',\n label,\n options,\n originalValue,\n sync\n } = _ref,\n rest = _objectWithoutPropertiesLoose(_ref, [\"value\", \"path\", \"label\", \"options\", \"originalValue\", \"sync\"]);\n\n const {\n name,\n test,\n params,\n message\n } = config;\n let {\n parent,\n context\n } = options;\n\n function resolve(item) {\n return Ref.isRef(item) ? item.getValue(value, parent, context) : item;\n }\n\n function createError(overrides = {}) {\n const nextParams = mapValues(_extends({\n value,\n originalValue,\n label,\n path: overrides.path || path\n }, params, overrides.params), resolve);\n const error = new ValidationError(ValidationError.formatError(overrides.message || message, nextParams), value, nextParams.path, overrides.type || name);\n error.params = nextParams;\n return error;\n }\n\n let ctx = _extends({\n path,\n parent,\n type: name,\n createError,\n resolve,\n options,\n originalValue\n }, rest);\n\n if (!sync) {\n try {\n Promise.resolve(test.call(ctx, value, ctx)).then(validOrError => {\n if (ValidationError.isError(validOrError)) cb(validOrError);else if (!validOrError) cb(createError());else cb(null, validOrError);\n }).catch(cb);\n } catch (err) {\n cb(err);\n }\n\n return;\n }\n\n let result;\n\n try {\n var _ref2;\n\n result = test.call(ctx, value, ctx);\n\n if (typeof ((_ref2 = result) == null ? void 0 : _ref2.then) === 'function') {\n throw new Error(`Validation test of type: \"${ctx.type}\" returned a Promise during a synchronous validate. ` + `This test will finish after the validate call has returned`);\n }\n } catch (err) {\n cb(err);\n return;\n }\n\n if (ValidationError.isError(result)) cb(result);else if (!result) cb(createError());else cb(null, result);\n }\n\n validate.OPTIONS = config;\n return validate;\n}","import { forEach } from 'property-expr';\n\nlet trim = part => part.substr(0, part.length - 1).substr(1);\n\nexport function getIn(schema, path, value, context = value) {\n let parent, lastPart, lastPartDebug; // root path: ''\n\n if (!path) return {\n parent,\n parentPath: path,\n schema\n };\n forEach(path, (_part, isBracket, isArray) => {\n let part = isBracket ? trim(_part) : _part;\n schema = schema.resolve({\n context,\n parent,\n value\n });\n\n if (schema.innerType) {\n let idx = isArray ? parseInt(part, 10) : 0;\n\n if (value && idx >= value.length) {\n throw new Error(`Yup.reach cannot resolve an array item at index: ${_part}, in the path: ${path}. ` + `because there is no value at that index. `);\n }\n\n parent = value;\n value = value && value[idx];\n schema = schema.innerType;\n } // sometimes the array index part of a path doesn't exist: \"nested.arr.child\"\n // in these cases the current part is the next schema and should be processed\n // in this iteration. For cases where the index signature is included this\n // check will fail and we'll handle the `child` part on the next iteration like normal\n\n\n if (!isArray) {\n if (!schema.fields || !schema.fields[part]) throw new Error(`The schema does not contain the path: ${path}. ` + `(failed at: ${lastPartDebug} which is a type: \"${schema._type}\")`);\n parent = value;\n value = value && value[part];\n schema = schema.fields[part];\n }\n\n lastPart = part;\n lastPartDebug = isBracket ? '[' + _part + ']' : '.' + _part;\n });\n return {\n schema,\n parent,\n parentPath: lastPart\n };\n}\n\nconst reach = (obj, path, value, context) => getIn(obj, path, value, context).schema;\n\nexport default reach;","import Reference from '../Reference';\nexport default class ReferenceSet {\n constructor() {\n this.list = void 0;\n this.refs = void 0;\n this.list = new Set();\n this.refs = new Map();\n }\n\n get size() {\n return this.list.size + this.refs.size;\n }\n\n describe() {\n const description = [];\n\n for (const item of this.list) description.push(item);\n\n for (const [, ref] of this.refs) description.push(ref.describe());\n\n return description;\n }\n\n toArray() {\n return Array.from(this.list).concat(Array.from(this.refs.values()));\n }\n\n resolveAll(resolve) {\n return this.toArray().reduce((acc, e) => acc.concat(Reference.isRef(e) ? resolve(e) : e), []);\n }\n\n add(value) {\n Reference.isRef(value) ? this.refs.set(value.key, value) : this.list.add(value);\n }\n\n delete(value) {\n Reference.isRef(value) ? this.refs.delete(value.key) : this.list.delete(value);\n }\n\n clone() {\n const next = new ReferenceSet();\n next.list = new Set(this.list);\n next.refs = new Map(this.refs);\n return next;\n }\n\n merge(newItems, removeItems) {\n const next = this.clone();\n newItems.list.forEach(value => next.add(value));\n newItems.refs.forEach(value => next.add(value));\n removeItems.list.forEach(value => next.delete(value));\n removeItems.refs.forEach(value => next.delete(value));\n return next;\n }\n\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n// @ts-ignore\nimport cloneDeep from 'nanoclone';\nimport { mixed as locale } from './locale';\nimport Condition from './Condition';\nimport runTests from './util/runTests';\nimport createValidation from './util/createValidation';\nimport printValue from './util/printValue';\nimport Ref from './Reference';\nimport { getIn } from './util/reach';\nimport ValidationError from './ValidationError';\nimport ReferenceSet from './util/ReferenceSet';\nimport toArray from './util/toArray'; // const UNSET = 'unset' as const;\n\nexport default class BaseSchema {\n constructor(options) {\n this.deps = [];\n this.tests = void 0;\n this.transforms = void 0;\n this.conditions = [];\n this._mutate = void 0;\n this._typeError = void 0;\n this._whitelist = new ReferenceSet();\n this._blacklist = new ReferenceSet();\n this.exclusiveTests = Object.create(null);\n this.spec = void 0;\n this.tests = [];\n this.transforms = [];\n this.withMutation(() => {\n this.typeError(locale.notType);\n });\n this.type = (options == null ? void 0 : options.type) || 'mixed';\n this.spec = _extends({\n strip: false,\n strict: false,\n abortEarly: true,\n recursive: true,\n nullable: false,\n presence: 'optional'\n }, options == null ? void 0 : options.spec);\n } // TODO: remove\n\n\n get _type() {\n return this.type;\n }\n\n _typeCheck(_value) {\n return true;\n }\n\n clone(spec) {\n if (this._mutate) {\n if (spec) Object.assign(this.spec, spec);\n return this;\n } // if the nested value is a schema we can skip cloning, since\n // they are already immutable\n\n\n const next = Object.create(Object.getPrototypeOf(this)); // @ts-expect-error this is readonly\n\n next.type = this.type;\n next._typeError = this._typeError;\n next._whitelistError = this._whitelistError;\n next._blacklistError = this._blacklistError;\n next._whitelist = this._whitelist.clone();\n next._blacklist = this._blacklist.clone();\n next.exclusiveTests = _extends({}, this.exclusiveTests); // @ts-expect-error this is readonly\n\n next.deps = [...this.deps];\n next.conditions = [...this.conditions];\n next.tests = [...this.tests];\n next.transforms = [...this.transforms];\n next.spec = cloneDeep(_extends({}, this.spec, spec));\n return next;\n }\n\n label(label) {\n let next = this.clone();\n next.spec.label = label;\n return next;\n }\n\n meta(...args) {\n if (args.length === 0) return this.spec.meta;\n let next = this.clone();\n next.spec.meta = Object.assign(next.spec.meta || {}, args[0]);\n return next;\n } // withContext<TContext extends AnyObject>(): BaseSchema<\n // TCast,\n // TContext,\n // TOutput\n // > {\n // return this as any;\n // }\n\n\n withMutation(fn) {\n let before = this._mutate;\n this._mutate = true;\n let result = fn(this);\n this._mutate = before;\n return result;\n }\n\n concat(schema) {\n if (!schema || schema === this) return this;\n if (schema.type !== this.type && this.type !== 'mixed') throw new TypeError(`You cannot \\`concat()\\` schema's of different types: ${this.type} and ${schema.type}`);\n let base = this;\n let combined = schema.clone();\n\n const mergedSpec = _extends({}, base.spec, combined.spec); // if (combined.spec.nullable === UNSET)\n // mergedSpec.nullable = base.spec.nullable;\n // if (combined.spec.presence === UNSET)\n // mergedSpec.presence = base.spec.presence;\n\n\n combined.spec = mergedSpec;\n combined._typeError || (combined._typeError = base._typeError);\n combined._whitelistError || (combined._whitelistError = base._whitelistError);\n combined._blacklistError || (combined._blacklistError = base._blacklistError); // manually merge the blacklist/whitelist (the other `schema` takes\n // precedence in case of conflicts)\n\n combined._whitelist = base._whitelist.merge(schema._whitelist, schema._blacklist);\n combined._blacklist = base._blacklist.merge(schema._blacklist, schema._whitelist); // start with the current tests\n\n combined.tests = base.tests;\n combined.exclusiveTests = base.exclusiveTests; // manually add the new tests to ensure\n // the deduping logic is consistent\n\n combined.withMutation(next => {\n schema.tests.forEach(fn => {\n next.test(fn.OPTIONS);\n });\n });\n combined.transforms = [...base.transforms, ...combined.transforms];\n return combined;\n }\n\n isType(v) {\n if (this.spec.nullable && v === null) return true;\n return this._typeCheck(v);\n }\n\n resolve(options) {\n let schema = this;\n\n if (schema.conditions.length) {\n let conditions = schema.conditions;\n schema = schema.clone();\n schema.conditions = [];\n schema = conditions.reduce((schema, condition) => condition.resolve(schema, options), schema);\n schema = schema.resolve(options);\n }\n\n return schema;\n }\n /**\n *\n * @param {*} value\n * @param {Object} options\n * @param {*=} options.parent\n * @param {*=} options.context\n */\n\n\n cast(value, options = {}) {\n let resolvedSchema = this.resolve(_extends({\n value\n }, options));\n\n let result = resolvedSchema._cast(value, options);\n\n if (value !== undefined && options.assert !== false && resolvedSchema.isType(result) !== true) {\n let formattedValue = printValue(value);\n let formattedResult = printValue(result);\n throw new TypeError(`The value of ${options.path || 'field'} could not be cast to a value ` + `that satisfies the schema type: \"${resolvedSchema._type}\". \\n\\n` + `attempted value: ${formattedValue} \\n` + (formattedResult !== formattedValue ? `result of cast: ${formattedResult}` : ''));\n }\n\n return result;\n }\n\n _cast(rawValue, _options) {\n let value = rawValue === undefined ? rawValue : this.transforms.reduce((value, fn) => fn.call(this, value, rawValue, this), rawValue);\n\n if (value === undefined) {\n value = this.getDefault();\n }\n\n return value;\n }\n\n _validate(_value, options = {}, cb) {\n let {\n sync,\n path,\n from = [],\n originalValue = _value,\n strict = this.spec.strict,\n abortEarly = this.spec.abortEarly\n } = options;\n let value = _value;\n\n if (!strict) {\n // this._validating = true;\n value = this._cast(value, _extends({\n assert: false\n }, options)); // this._validating = false;\n } // value is cast, we can check if it meets type requirements\n\n\n let args = {\n value,\n path,\n options,\n originalValue,\n schema: this,\n label: this.spec.label,\n sync,\n from\n };\n let initialTests = [];\n if (this._typeError) initialTests.push(this._typeError);\n let finalTests = [];\n if (this._whitelistError) finalTests.push(this._whitelistError);\n if (this._blacklistError) finalTests.push(this._blacklistError);\n runTests({\n args,\n value,\n path,\n sync,\n tests: initialTests,\n endEarly: abortEarly\n }, err => {\n if (err) return void cb(err, value);\n runTests({\n tests: this.tests.concat(finalTests),\n args,\n path,\n sync,\n value,\n endEarly: abortEarly\n }, cb);\n });\n }\n\n validate(value, options, maybeCb) {\n let schema = this.resolve(_extends({}, options, {\n value\n })); // callback case is for nested validations\n\n return typeof maybeCb === 'function' ? schema._validate(value, options, maybeCb) : new Promise((resolve, reject) => schema._validate(value, options, (err, value) => {\n if (err) reject(err);else resolve(value);\n }));\n }\n\n validateSync(value, options) {\n let schema = this.resolve(_extends({}, options, {\n value\n }));\n let result;\n\n schema._validate(value, _extends({}, options, {\n sync: true\n }), (err, value) => {\n if (err) throw err;\n result = value;\n });\n\n return result;\n }\n\n isValid(value, options) {\n return this.validate(value, options).then(() => true, err => {\n if (ValidationError.isError(err)) return false;\n throw err;\n });\n }\n\n isValidSync(value, options) {\n try {\n this.validateSync(value, options);\n return true;\n } catch (err) {\n if (ValidationError.isError(err)) return false;\n throw err;\n }\n }\n\n _getDefault() {\n let defaultValue = this.spec.default;\n\n if (defaultValue == null) {\n return defaultValue;\n }\n\n return typeof defaultValue === 'function' ? defaultValue.call(this) : cloneDeep(defaultValue);\n }\n\n getDefault(options) {\n let schema = this.resolve(options || {});\n return schema._getDefault();\n }\n\n default(def) {\n if (arguments.length === 0) {\n return this._getDefault();\n }\n\n let next = this.clone({\n default: def\n });\n return next;\n }\n\n strict(isStrict = true) {\n let next = this.clone();\n next.spec.strict = isStrict;\n return next;\n }\n\n _isPresent(value) {\n return value != null;\n }\n\n defined(message = locale.defined) {\n return this.test({\n message,\n name: 'defined',\n exclusive: true,\n\n test(value) {\n return value !== undefined;\n }\n\n });\n }\n\n required(message = locale.required) {\n return this.clone({\n presence: 'required'\n }).withMutation(s => s.test({\n message,\n name: 'required',\n exclusive: true,\n\n test(value) {\n return this.schema._isPresent(value);\n }\n\n }));\n }\n\n notRequired() {\n let next = this.clone({\n presence: 'optional'\n });\n next.tests = next.tests.filter(test => test.OPTIONS.name !== 'required');\n return next;\n }\n\n nullable(isNullable = true) {\n let next = this.clone({\n nullable: isNullable !== false\n });\n return next;\n }\n\n transform(fn) {\n let next = this.clone();\n next.transforms.push(fn);\n return next;\n }\n /**\n * Adds a test function to the schema's queue of tests.\n * tests can be exclusive or non-exclusive.\n *\n * - exclusive tests, will replace any existing tests of the same name.\n * - non-exclusive: can be stacked\n *\n * If a non-exclusive test is added to a schema with an exclusive test of the same name\n * the exclusive test is removed and further tests of the same name will be stacked.\n *\n * If an exclusive test is added to a schema with non-exclusive tests of the same name\n * the previous tests are removed and further tests of the same name will replace each other.\n */\n\n\n test(...args) {\n let opts;\n\n if (args.length === 1) {\n if (typeof args[0] === 'function') {\n opts = {\n test: args[0]\n };\n } else {\n opts = args[0];\n }\n } else if (args.length === 2) {\n opts = {\n name: args[0],\n test: args[1]\n };\n } else {\n opts = {\n name: args[0],\n message: args[1],\n test: args[2]\n };\n }\n\n if (opts.message === undefined) opts.message = locale.default;\n if (typeof opts.test !== 'function') throw new TypeError('`test` is a required parameters');\n let next = this.clone();\n let validate = createValidation(opts);\n let isExclusive = opts.exclusive || opts.name && next.exclusiveTests[opts.name] === true;\n\n if (opts.exclusive) {\n if (!opts.name) throw new TypeError('Exclusive tests must provide a unique `name` identifying the test');\n }\n\n if (opts.name) next.exclusiveTests[opts.name] = !!opts.exclusive;\n next.tests = next.tests.filter(fn => {\n if (fn.OPTIONS.name === opts.name) {\n if (isExclusive) return false;\n if (fn.OPTIONS.test === validate.OPTIONS.test) return false;\n }\n\n return true;\n });\n next.tests.push(validate);\n return next;\n }\n\n when(keys, options) {\n if (!Array.isArray(keys) && typeof keys !== 'string') {\n options = keys;\n keys = '.';\n }\n\n let next = this.clone();\n let deps = toArray(keys).map(key => new Ref(key));\n deps.forEach(dep => {\n // @ts-ignore\n if (dep.isSibling) next.deps.push(dep.key);\n });\n next.conditions.push(new Condition(deps, options));\n return next;\n }\n\n typeError(message) {\n let next = this.clone();\n next._typeError = createValidation({\n message,\n name: 'typeError',\n\n test(value) {\n if (value !== undefined && !this.schema.isType(value)) return this.createError({\n params: {\n type: this.schema._type\n }\n });\n return true;\n }\n\n });\n return next;\n }\n\n oneOf(enums, message = locale.oneOf) {\n let next = this.clone();\n enums.forEach(val => {\n next._whitelist.add(val);\n\n next._blacklist.delete(val);\n });\n next._whitelistError = createValidation({\n message,\n name: 'oneOf',\n\n test(value) {\n if (value === undefined) return true;\n let valids = this.schema._whitelist;\n let resolved = valids.resolveAll(this.resolve);\n return resolved.includes(value) ? true : this.createError({\n params: {\n values: valids.toArray().join(', '),\n resolved\n }\n });\n }\n\n });\n return next;\n }\n\n notOneOf(enums, message = locale.notOneOf) {\n let next = this.clone();\n enums.forEach(val => {\n next._blacklist.add(val);\n\n next._whitelist.delete(val);\n });\n next._blacklistError = createValidation({\n message,\n name: 'notOneOf',\n\n test(value) {\n let invalids = this.schema._blacklist;\n let resolved = invalids.resolveAll(this.resolve);\n if (resolved.includes(value)) return this.createError({\n params: {\n values: invalids.toArray().join(', '),\n resolved\n }\n });\n return true;\n }\n\n });\n return next;\n }\n\n strip(strip = true) {\n let next = this.clone();\n next.spec.strip = strip;\n return next;\n }\n\n describe() {\n const next = this.clone();\n const {\n label,\n meta\n } = next.spec;\n const description = {\n meta,\n label,\n type: next.type,\n oneOf: next._whitelist.describe(),\n notOneOf: next._blacklist.describe(),\n tests: next.tests.map(fn => ({\n name: fn.OPTIONS.name,\n params: fn.OPTIONS.params\n })).filter((n, idx, list) => list.findIndex(c => c.name === n.name) === idx)\n };\n return description;\n }\n\n} // eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n// @ts-expect-error\nBaseSchema.prototype.__isYupSchema__ = true;\n\nfor (const method of ['validate', 'validateSync']) BaseSchema.prototype[`${method}At`] = function (path, value, options = {}) {\n const {\n parent,\n parentPath,\n schema\n } = getIn(this, path, value, options.context);\n return schema[method](parent && parent[parentPath], _extends({}, options, {\n parent,\n path\n }));\n};\n\nfor (const alias of ['equals', 'is']) BaseSchema.prototype[alias] = BaseSchema.prototype.oneOf;\n\nfor (const alias of ['not', 'nope']) BaseSchema.prototype[alias] = BaseSchema.prototype.notOneOf;\n\nBaseSchema.prototype.optional = BaseSchema.prototype.notRequired;","import BaseSchema from './schema';\nconst Mixed = BaseSchema;\nexport default Mixed;\nexport function create() {\n return new Mixed();\n} // XXX: this is using the Base schema so that `addMethod(mixed)` works as a base class\n\ncreate.prototype = Mixed.prototype;","const isAbsent = value => value == null;\n\nexport default isAbsent;","import BaseSchema from './schema';\nimport { boolean as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nexport function create() {\n return new BooleanSchema();\n}\nexport default class BooleanSchema extends BaseSchema {\n constructor() {\n super({\n type: 'boolean'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n if (!this.isType(value)) {\n if (/^(true|1)$/i.test(String(value))) return true;\n if (/^(false|0)$/i.test(String(value))) return false;\n }\n\n return value;\n });\n });\n }\n\n _typeCheck(v) {\n if (v instanceof Boolean) v = v.valueOf();\n return typeof v === 'boolean';\n }\n\n isTrue(message = locale.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'true'\n },\n\n test(value) {\n return isAbsent(value) || value === true;\n }\n\n });\n }\n\n isFalse(message = locale.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'false'\n },\n\n test(value) {\n return isAbsent(value) || value === false;\n }\n\n });\n }\n\n}\ncreate.prototype = BooleanSchema.prototype;","import { string as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nimport BaseSchema from './schema'; // eslint-disable-next-line\n\nlet rEmail = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i; // eslint-disable-next-line\n\nlet rUrl = /^((https?|ftp):)?\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i; // eslint-disable-next-line\n\nlet rUUID = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\n\nlet isTrimmed = value => isAbsent(value) || value === value.trim();\n\nlet objStringTag = {}.toString();\nexport function create() {\n return new StringSchema();\n}\nexport default class StringSchema extends BaseSchema {\n constructor() {\n super({\n type: 'string'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n if (this.isType(value)) return value;\n if (Array.isArray(value)) return value;\n const strValue = value != null && value.toString ? value.toString() : value;\n if (strValue === objStringTag) return value;\n return strValue;\n });\n });\n }\n\n _typeCheck(value) {\n if (value instanceof String) value = value.valueOf();\n return typeof value === 'string';\n }\n\n _isPresent(value) {\n return super._isPresent(value) && !!value.length;\n }\n\n length(length, message = locale.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n\n test(value) {\n return isAbsent(value) || value.length === this.resolve(length);\n }\n\n });\n }\n\n min(min, message = locale.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n test(value) {\n return isAbsent(value) || value.length >= this.resolve(min);\n }\n\n });\n }\n\n max(max, message = locale.max) {\n return this.test({\n name: 'max',\n exclusive: true,\n message,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value.length <= this.resolve(max);\n }\n\n });\n }\n\n matches(regex, options) {\n let excludeEmptyString = false;\n let message;\n let name;\n\n if (options) {\n if (typeof options === 'object') {\n ({\n excludeEmptyString = false,\n message,\n name\n } = options);\n } else {\n message = options;\n }\n }\n\n return this.test({\n name: name || 'matches',\n message: message || locale.matches,\n params: {\n regex\n },\n test: value => isAbsent(value) || value === '' && excludeEmptyString || value.search(regex) !== -1\n });\n }\n\n email(message = locale.email) {\n return this.matches(rEmail, {\n name: 'email',\n message,\n excludeEmptyString: true\n });\n }\n\n url(message = locale.url) {\n return this.matches(rUrl, {\n name: 'url',\n message,\n excludeEmptyString: true\n });\n }\n\n uuid(message = locale.uuid) {\n return this.matches(rUUID, {\n name: 'uuid',\n message,\n excludeEmptyString: false\n });\n } //-- transforms --\n\n\n ensure() {\n return this.default('').transform(val => val === null ? '' : val);\n }\n\n trim(message = locale.trim) {\n return this.transform(val => val != null ? val.trim() : val).test({\n message,\n name: 'trim',\n test: isTrimmed\n });\n }\n\n lowercase(message = locale.lowercase) {\n return this.transform(value => !isAbsent(value) ? value.toLowerCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n test: value => isAbsent(value) || value === value.toLowerCase()\n });\n }\n\n uppercase(message = locale.uppercase) {\n return this.transform(value => !isAbsent(value) ? value.toUpperCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n test: value => isAbsent(value) || value === value.toUpperCase()\n });\n }\n\n}\ncreate.prototype = StringSchema.prototype; //\n// String Interfaces\n//","import { number as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nimport BaseSchema from './schema';\n\nlet isNaN = value => value != +value;\n\nexport function create() {\n return new NumberSchema();\n}\nexport default class NumberSchema extends BaseSchema {\n constructor() {\n super({\n type: 'number'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n let parsed = value;\n\n if (typeof parsed === 'string') {\n parsed = parsed.replace(/\\s/g, '');\n if (parsed === '') return NaN; // don't use parseFloat to avoid positives on alpha-numeric strings\n\n parsed = +parsed;\n }\n\n if (this.isType(parsed)) return parsed;\n return parseFloat(parsed);\n });\n });\n }\n\n _typeCheck(value) {\n if (value instanceof Number) value = value.valueOf();\n return typeof value === 'number' && !isNaN(value);\n }\n\n min(min, message = locale.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n test(value) {\n return isAbsent(value) || value >= this.resolve(min);\n }\n\n });\n }\n\n max(max, message = locale.max) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value <= this.resolve(max);\n }\n\n });\n }\n\n lessThan(less, message = locale.lessThan) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n less\n },\n\n test(value) {\n return isAbsent(value) || value < this.resolve(less);\n }\n\n });\n }\n\n moreThan(more, message = locale.moreThan) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n more\n },\n\n test(value) {\n return isAbsent(value) || value > this.resolve(more);\n }\n\n });\n }\n\n positive(msg = locale.positive) {\n return this.moreThan(0, msg);\n }\n\n negative(msg = locale.negative) {\n return this.lessThan(0, msg);\n }\n\n integer(message = locale.integer) {\n return this.test({\n name: 'integer',\n message,\n test: val => isAbsent(val) || Number.isInteger(val)\n });\n }\n\n truncate() {\n return this.transform(value => !isAbsent(value) ? value | 0 : value);\n }\n\n round(method) {\n var _method;\n\n let avail = ['ceil', 'floor', 'round', 'trunc'];\n method = ((_method = method) == null ? void 0 : _method.toLowerCase()) || 'round'; // this exists for symemtry with the new Math.trunc\n\n if (method === 'trunc') return this.truncate();\n if (avail.indexOf(method.toLowerCase()) === -1) throw new TypeError('Only valid options for round() are: ' + avail.join(', '));\n return this.transform(value => !isAbsent(value) ? Math[method](value) : value);\n }\n\n}\ncreate.prototype = NumberSchema.prototype; //\n// Number Interfaces\n//","/* eslint-disable */\n\n/**\n *\n * Date.parse with progressive enhancement for ISO 8601 <https://github.com/csnover/js-iso8601>\n * NON-CONFORMANT EDITION.\n * © 2011 Colin Snover <http://zetafleet.com>\n * Released under MIT license.\n */\n// 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm\nvar isoReg = /^(\\d{4}|[+\\-]\\d{6})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:[ T]?(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\nexport default function parseIsoDate(date) {\n var numericKeys = [1, 4, 5, 6, 7, 10, 11],\n minutesOffset = 0,\n timestamp,\n struct;\n\n if (struct = isoReg.exec(date)) {\n // avoid NaN timestamps caused by “undefined” values being passed to Date.UTC\n for (var i = 0, k; k = numericKeys[i]; ++i) struct[k] = +struct[k] || 0; // allow undefined days and months\n\n\n struct[2] = (+struct[2] || 1) - 1;\n struct[3] = +struct[3] || 1; // allow arbitrary sub-second precision beyond milliseconds\n\n struct[7] = struct[7] ? String(struct[7]).substr(0, 3) : 0; // timestamps without timezone identifiers should be considered local time\n\n if ((struct[8] === undefined || struct[8] === '') && (struct[9] === undefined || struct[9] === '')) timestamp = +new Date(struct[1], struct[2], struct[3], struct[4], struct[5], struct[6], struct[7]);else {\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\n minutesOffset = struct[10] * 60 + struct[11];\n if (struct[9] === '+') minutesOffset = 0 - minutesOffset;\n }\n\n timestamp = Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7]);\n }\n } else timestamp = Date.parse ? Date.parse(date) : NaN;\n\n return timestamp;\n}","// @ts-ignore\nimport isoParse from './util/isodate';\nimport { date as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nimport Ref from './Reference';\nimport BaseSchema from './schema';\nlet invalidDate = new Date('');\n\nlet isDate = obj => Object.prototype.toString.call(obj) === '[object Date]';\n\nexport function create() {\n return new DateSchema();\n}\nexport default class DateSchema extends BaseSchema {\n constructor() {\n super({\n type: 'date'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n if (this.isType(value)) return value;\n value = isoParse(value); // 0 is a valid timestamp equivalent to 1970-01-01T00:00:00Z(unix epoch) or before.\n\n return !isNaN(value) ? new Date(value) : invalidDate;\n });\n });\n }\n\n _typeCheck(v) {\n return isDate(v) && !isNaN(v.getTime());\n }\n\n prepareParam(ref, name) {\n let param;\n\n if (!Ref.isRef(ref)) {\n let cast = this.cast(ref);\n if (!this._typeCheck(cast)) throw new TypeError(`\\`${name}\\` must be a Date or a value that can be \\`cast()\\` to a Date`);\n param = cast;\n } else {\n param = ref;\n }\n\n return param;\n }\n\n min(min, message = locale.min) {\n let limit = this.prepareParam(min, 'min');\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n test(value) {\n return isAbsent(value) || value >= this.resolve(limit);\n }\n\n });\n }\n\n max(max, message = locale.max) {\n let limit = this.prepareParam(max, 'max');\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value <= this.resolve(limit);\n }\n\n });\n }\n\n}\nDateSchema.INVALID_DATE = invalidDate;\ncreate.prototype = DateSchema.prototype;\ncreate.INVALID_DATE = invalidDate;","function findIndex(arr, err) {\n let idx = Infinity;\n arr.some((key, ii) => {\n var _err$path;\n\n if (((_err$path = err.path) == null ? void 0 : _err$path.indexOf(key)) !== -1) {\n idx = ii;\n return true;\n }\n });\n return idx;\n}\n\nexport default function sortByKeyOrder(keys) {\n return (a, b) => {\n return findIndex(keys, a) - findIndex(keys, b);\n };\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport has from 'lodash/has';\nimport snakeCase from 'lodash/snakeCase';\nimport camelCase from 'lodash/camelCase';\nimport mapKeys from 'lodash/mapKeys';\nimport mapValues from 'lodash/mapValues';\nimport { getter } from 'property-expr';\nimport { object as locale } from './locale';\nimport sortFields from './util/sortFields';\nimport sortByKeyOrder from './util/sortByKeyOrder';\nimport runTests from './util/runTests';\nimport ValidationError from './ValidationError';\nimport BaseSchema from './schema';\n\nlet isObject = obj => Object.prototype.toString.call(obj) === '[object Object]';\n\nfunction unknown(ctx, value) {\n let known = Object.keys(ctx.fields);\n return Object.keys(value).filter(key => known.indexOf(key) === -1);\n}\n\nconst defaultSort = sortByKeyOrder([]);\nexport default class ObjectSchema extends BaseSchema {\n constructor(spec) {\n super({\n type: 'object'\n });\n this.fields = Object.create(null);\n this._sortErrors = defaultSort;\n this._nodes = [];\n this._excludedEdges = [];\n this.withMutation(() => {\n this.transform(function coerce(value) {\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value);\n } catch (err) {\n value = null;\n }\n }\n\n if (this.isType(value)) return value;\n return null;\n });\n\n if (spec) {\n this.shape(spec);\n }\n });\n }\n\n _typeCheck(value) {\n return isObject(value) || typeof value === 'function';\n }\n\n _cast(_value, options = {}) {\n var _options$stripUnknown;\n\n let value = super._cast(_value, options); //should ignore nulls here\n\n\n if (value === undefined) return this.getDefault();\n if (!this._typeCheck(value)) return value;\n let fields = this.fields;\n let strip = (_options$stripUnknown = options.stripUnknown) != null ? _options$stripUnknown : this.spec.noUnknown;\n\n let props = this._nodes.concat(Object.keys(value).filter(v => this._nodes.indexOf(v) === -1));\n\n let intermediateValue = {}; // is filled during the transform below\n\n let innerOptions = _extends({}, options, {\n parent: intermediateValue,\n __validating: options.__validating || false\n });\n\n let isChanged = false;\n\n for (const prop of props) {\n let field = fields[prop];\n let exists = has(value, prop);\n\n if (field) {\n let fieldValue;\n let inputValue = value[prop]; // safe to mutate since this is fired in sequence\n\n innerOptions.path = (options.path ? `${options.path}.` : '') + prop; // innerOptions.value = value[prop];\n\n field = field.resolve({\n value: inputValue,\n context: options.context,\n parent: intermediateValue\n });\n let fieldSpec = 'spec' in field ? field.spec : undefined;\n let strict = fieldSpec == null ? void 0 : fieldSpec.strict;\n\n if (fieldSpec == null ? void 0 : fieldSpec.strip) {\n isChanged = isChanged || prop in value;\n continue;\n }\n\n fieldValue = !options.__validating || !strict ? // TODO: use _cast, this is double resolving\n field.cast(value[prop], innerOptions) : value[prop];\n\n if (fieldValue !== undefined) {\n intermediateValue[prop] = fieldValue;\n }\n } else if (exists && !strip) {\n intermediateValue[prop] = value[prop];\n }\n\n if (intermediateValue[prop] !== value[prop]) {\n isChanged = true;\n }\n }\n\n return isChanged ? intermediateValue : value;\n }\n\n _validate(_value, opts = {}, callback) {\n let errors = [];\n let {\n sync,\n from = [],\n originalValue = _value,\n abortEarly = this.spec.abortEarly,\n recursive = this.spec.recursive\n } = opts;\n from = [{\n schema: this,\n value: originalValue\n }, ...from]; // this flag is needed for handling `strict` correctly in the context of\n // validation vs just casting. e.g strict() on a field is only used when validating\n\n opts.__validating = true;\n opts.originalValue = originalValue;\n opts.from = from;\n\n super._validate(_value, opts, (err, value) => {\n if (err) {\n if (!ValidationError.isError(err) || abortEarly) {\n return void callback(err, value);\n }\n\n errors.push(err);\n }\n\n if (!recursive || !isObject(value)) {\n callback(errors[0] || null, value);\n return;\n }\n\n originalValue = originalValue || value;\n\n let tests = this._nodes.map(key => (_, cb) => {\n let path = key.indexOf('.') === -1 ? (opts.path ? `${opts.path}.` : '') + key : `${opts.path || ''}[\"${key}\"]`;\n let field = this.fields[key];\n\n if (field && 'validate' in field) {\n field.validate(value[key], _extends({}, opts, {\n // @ts-ignore\n path,\n from,\n // inner fields are always strict:\n // 1. this isn't strict so the casting will also have cast inner values\n // 2. this is strict in which case the nested values weren't cast either\n strict: true,\n parent: value,\n originalValue: originalValue[key]\n }), cb);\n return;\n }\n\n cb(null);\n });\n\n runTests({\n sync,\n tests,\n value,\n errors,\n endEarly: abortEarly,\n sort: this._sortErrors,\n path: opts.path\n }, callback);\n });\n }\n\n clone(spec) {\n const next = super.clone(spec);\n next.fields = _extends({}, this.fields);\n next._nodes = this._nodes;\n next._excludedEdges = this._excludedEdges;\n next._sortErrors = this._sortErrors;\n return next;\n }\n\n concat(schema) {\n let next = super.concat(schema);\n let nextFields = next.fields;\n\n for (let [field, schemaOrRef] of Object.entries(this.fields)) {\n const target = nextFields[field];\n\n if (target === undefined) {\n nextFields[field] = schemaOrRef;\n } else if (target instanceof BaseSchema && schemaOrRef instanceof BaseSchema) {\n nextFields[field] = schemaOrRef.concat(target);\n }\n }\n\n return next.withMutation(() => next.shape(nextFields, this._excludedEdges));\n }\n\n getDefaultFromShape() {\n let dft = {};\n\n this._nodes.forEach(key => {\n const field = this.fields[key];\n dft[key] = 'default' in field ? field.getDefault() : undefined;\n });\n\n return dft;\n }\n\n _getDefault() {\n if ('default' in this.spec) {\n return super._getDefault();\n } // if there is no default set invent one\n\n\n if (!this._nodes.length) {\n return undefined;\n }\n\n return this.getDefaultFromShape();\n }\n\n shape(additions, excludes = []) {\n let next = this.clone();\n let fields = Object.assign(next.fields, additions);\n next.fields = fields;\n next._sortErrors = sortByKeyOrder(Object.keys(fields));\n\n if (excludes.length) {\n // this is a convenience for when users only supply a single pair\n if (!Array.isArray(excludes[0])) excludes = [excludes];\n next._excludedEdges = [...next._excludedEdges, ...excludes];\n }\n\n next._nodes = sortFields(fields, next._excludedEdges);\n return next;\n }\n\n pick(keys) {\n const picked = {};\n\n for (const key of keys) {\n if (this.fields[key]) picked[key] = this.fields[key];\n }\n\n return this.clone().withMutation(next => {\n next.fields = {};\n return next.shape(picked);\n });\n }\n\n omit(keys) {\n const next = this.clone();\n const fields = next.fields;\n next.fields = {};\n\n for (const key of keys) {\n delete fields[key];\n }\n\n return next.withMutation(() => next.shape(fields));\n }\n\n from(from, to, alias) {\n let fromGetter = getter(from, true);\n return this.transform(obj => {\n if (obj == null) return obj;\n let newObj = obj;\n\n if (has(obj, from)) {\n newObj = _extends({}, obj);\n if (!alias) delete newObj[from];\n newObj[to] = fromGetter(obj);\n }\n\n return newObj;\n });\n }\n\n noUnknown(noAllow = true, message = locale.noUnknown) {\n if (typeof noAllow === 'string') {\n message = noAllow;\n noAllow = true;\n }\n\n let next = this.test({\n name: 'noUnknown',\n exclusive: true,\n message: message,\n\n test(value) {\n if (value == null) return true;\n const unknownKeys = unknown(this.schema, value);\n return !noAllow || unknownKeys.length === 0 || this.createError({\n params: {\n unknown: unknownKeys.join(', ')\n }\n });\n }\n\n });\n next.spec.noUnknown = noAllow;\n return next;\n }\n\n unknown(allow = true, message = locale.noUnknown) {\n return this.noUnknown(!allow, message);\n }\n\n transformKeys(fn) {\n return this.transform(obj => obj && mapKeys(obj, (_, key) => fn(key)));\n }\n\n camelCase() {\n return this.transformKeys(camelCase);\n }\n\n snakeCase() {\n return this.transformKeys(snakeCase);\n }\n\n constantCase() {\n return this.transformKeys(key => snakeCase(key).toUpperCase());\n }\n\n describe() {\n let base = super.describe();\n base.fields = mapValues(this.fields, value => value.describe());\n return base;\n }\n\n}\nexport function create(spec) {\n return new ObjectSchema(spec);\n}\ncreate.prototype = ObjectSchema.prototype;","import has from 'lodash/has'; // @ts-expect-error\n\nimport toposort from 'toposort';\nimport { split } from 'property-expr';\nimport Ref from '../Reference';\nimport isSchema from './isSchema';\nexport default function sortFields(fields, excludedEdges = []) {\n let edges = [];\n let nodes = new Set();\n let excludes = new Set(excludedEdges.map(([a, b]) => `${a}-${b}`));\n\n function addNode(depPath, key) {\n let node = split(depPath)[0];\n nodes.add(node);\n if (!excludes.has(`${key}-${node}`)) edges.push([key, node]);\n }\n\n for (const key in fields) if (has(fields, key)) {\n let value = fields[key];\n nodes.add(key);\n if (Ref.isRef(value) && value.isSibling) addNode(value.path, key);else if (isSchema(value) && 'deps' in value) value.deps.forEach(path => addNode(path, key));\n }\n\n return toposort.array(Array.from(nodes), edges).reverse();\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport isAbsent from './util/isAbsent';\nimport isSchema from './util/isSchema';\nimport printValue from './util/printValue';\nimport { array as locale } from './locale';\nimport runTests from './util/runTests';\nimport ValidationError from './ValidationError';\nimport BaseSchema from './schema';\nexport function create(type) {\n return new ArraySchema(type);\n}\nexport default class ArraySchema extends BaseSchema {\n constructor(type) {\n super({\n type: 'array'\n }); // `undefined` specifically means uninitialized, as opposed to\n // \"no subtype\"\n\n this.innerType = void 0;\n this.innerType = type;\n this.withMutation(() => {\n this.transform(function (values) {\n if (typeof values === 'string') try {\n values = JSON.parse(values);\n } catch (err) {\n values = null;\n }\n return this.isType(values) ? values : null;\n });\n });\n }\n\n _typeCheck(v) {\n return Array.isArray(v);\n }\n\n get _subType() {\n return this.innerType;\n }\n\n _cast(_value, _opts) {\n const value = super._cast(_value, _opts); //should ignore nulls here\n\n\n if (!this._typeCheck(value) || !this.innerType) return value;\n let isChanged = false;\n const castArray = value.map((v, idx) => {\n const castElement = this.innerType.cast(v, _extends({}, _opts, {\n path: `${_opts.path || ''}[${idx}]`\n }));\n\n if (castElement !== v) {\n isChanged = true;\n }\n\n return castElement;\n });\n return isChanged ? castArray : value;\n }\n\n _validate(_value, options = {}, callback) {\n var _options$abortEarly, _options$recursive;\n\n let errors = [];\n let sync = options.sync;\n let path = options.path;\n let innerType = this.innerType;\n let endEarly = (_options$abortEarly = options.abortEarly) != null ? _options$abortEarly : this.spec.abortEarly;\n let recursive = (_options$recursive = options.recursive) != null ? _options$recursive : this.spec.recursive;\n let originalValue = options.originalValue != null ? options.originalValue : _value;\n\n super._validate(_value, options, (err, value) => {\n if (err) {\n if (!ValidationError.isError(err) || endEarly) {\n return void callback(err, value);\n }\n\n errors.push(err);\n }\n\n if (!recursive || !innerType || !this._typeCheck(value)) {\n callback(errors[0] || null, value);\n return;\n }\n\n originalValue = originalValue || value; // #950 Ensure that sparse array empty slots are validated\n\n let tests = new Array(value.length);\n\n for (let idx = 0; idx < value.length; idx++) {\n let item = value[idx];\n let path = `${options.path || ''}[${idx}]`; // object._validate note for isStrict explanation\n\n let innerOptions = _extends({}, options, {\n path,\n strict: true,\n parent: value,\n index: idx,\n originalValue: originalValue[idx]\n });\n\n tests[idx] = (_, cb) => innerType.validate(item, innerOptions, cb);\n }\n\n runTests({\n sync,\n path,\n value,\n errors,\n endEarly,\n tests\n }, callback);\n });\n }\n\n clone(spec) {\n const next = super.clone(spec);\n next.innerType = this.innerType;\n return next;\n }\n\n concat(schema) {\n let next = super.concat(schema);\n next.innerType = this.innerType;\n if (schema.innerType) next.innerType = next.innerType ? // @ts-expect-error Lazy doesn't have concat()\n next.innerType.concat(schema.innerType) : schema.innerType;\n return next;\n }\n\n of(schema) {\n // FIXME: this should return a new instance of array without the default to be\n let next = this.clone();\n if (!isSchema(schema)) throw new TypeError('`array.of()` sub-schema must be a valid yup schema not: ' + printValue(schema)); // FIXME(ts):\n\n next.innerType = schema;\n return next;\n }\n\n length(length, message = locale.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n\n test(value) {\n return isAbsent(value) || value.length === this.resolve(length);\n }\n\n });\n }\n\n min(min, message) {\n message = message || locale.min;\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n // FIXME(ts): Array<typeof T>\n test(value) {\n return isAbsent(value) || value.length >= this.resolve(min);\n }\n\n });\n }\n\n max(max, message) {\n message = message || locale.max;\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value.length <= this.resolve(max);\n }\n\n });\n }\n\n ensure() {\n return this.default(() => []).transform((val, original) => {\n // We don't want to return `null` for nullable schema\n if (this._typeCheck(val)) return val;\n return original == null ? [] : [].concat(original);\n });\n }\n\n compact(rejector) {\n let reject = !rejector ? v => !!v : (v, i, a) => !rejector(v, i, a);\n return this.transform(values => values != null ? values.filter(reject) : values);\n }\n\n describe() {\n let base = super.describe();\n if (this.innerType) base.innerType = this.innerType.describe();\n return base;\n }\n\n nullable(isNullable = true) {\n return super.nullable(isNullable);\n }\n\n defined() {\n return super.defined();\n }\n\n required(msg) {\n return super.required(msg);\n }\n\n}\ncreate.prototype = ArraySchema.prototype; //\n// Interfaces\n//","/*!\n * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Commercial License)\n */\nvar prefix = \"far\";\nvar faAbacus = {\n prefix: 'far',\n iconName: 'abacus',\n icon: [576, 512, [], \"f640\", \"M552 0c-13.25 0-24 10.74-24 24v48h-48V48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v24H240V48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v24h-48V48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v24H48V24C48 10.74 37.25 0 24 0S0 10.74 0 24v476c0 6.63 5.37 12 12 12h24c6.63 0 12-5.37 12-12v-60h48v24c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-24h48v24c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-24h192v24c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-24h48v60c0 6.63 5.37 12 12 12h24c6.63 0 12-5.37 12-12V24c0-13.26-10.75-24-24-24zM96 120v24c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-24h48v24c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-24h192v24c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-24h48v112H336v-24c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v24h-48v-24c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v24h-48v-24c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v24H48V120h48zm384 272v-24c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v24H240v-24c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v24h-48v-24c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v24H48V280h48v24c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-24h48v24c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-24h48v24c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-24h192v112h-48z\"]\n};\nvar faAcorn = {\n prefix: 'far',\n iconName: 'acorn',\n icon: [448, 512, [], \"f6ae\", \"M352 64H251.5c3.4-9.4 8.47-18.18 15.16-26.04 5.56-6.52 5.31-15.91-.62-21.86L254.69 4.78c-3.12-3.16-7.72-5.14-11.97-4.72-4.38.14-8.5 2.08-11.31 5.3-14.75 16.8-24.55 37.06-29.39 58.65H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32v32c0 98.06 55.4 187.7 143.11 231.55L224 512l48.89-24.45C360.6 443.7 416 354.06 416 256v-32c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96zM48 160c0-26.47 21.53-48 48-48h256c26.47 0 48 21.53 48 48v16H48v-16zm320 96c0 80.39-44.67 152.67-116.57 188.62L224 458.33l-27.43-13.71C124.67 408.67 80 336.39 80 256v-32h288v32z\"]\n};\nvar faAd = {\n prefix: 'far',\n iconName: 'ad',\n icon: [512, 512, [], \"f641\", \"M101.42 352h16.94c6.81 0 12.88-4.32 15.12-10.75l7.38-21.25h70.29l7.38 21.25A16 16 0 0 0 233.65 352h16.94c11.01 0 18.73-10.85 15.12-21.25L212 176.13A24.004 24.004 0 0 0 189.33 160h-26.66c-10.22 0-19.32 6.47-22.67 16.12L86.31 330.75C82.7 341.15 90.42 352 101.42 352zM176 218.78L194.48 272h-36.96L176 218.78zM352 352c9.93 0 19.4-2.02 28.02-5.68 2.94 3.41 7.13 5.68 11.98 5.68h16c8.84 0 16-7.16 16-16V176c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v36.42c-7.54-2.69-15.54-4.42-24-4.42-39.7 0-72 32.3-72 72s32.3 72 72 72zm0-96c13.23 0 24 10.77 24 24s-10.77 24-24 24-24-10.77-24-24 10.77-24 24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm0 336H48V112h416v288z\"]\n};\nvar faAddressBook = {\n prefix: 'far',\n iconName: 'address-book',\n icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-68 304H48V48h320v416zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z\"]\n};\nvar faAddressCard = {\n prefix: 'far',\n iconName: 'address-card',\n icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H48V80h480v352zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2zM360 320h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8z\"]\n};\nvar faAdjust = {\n prefix: 'far',\n iconName: 'adjust',\n icon: [512, 512, [], \"f042\", \"M256 56c110.549 0 200 89.468 200 200 0 110.549-89.468 200-200 200-110.549 0-200-89.468-200-200 0-110.549 89.468-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 96c-83.947 0-152 68.053-152 152s68.053 152 152 152V104z\"]\n};\nvar faAirConditioner = {\n prefix: 'far',\n iconName: 'air-conditioner',\n icon: [576, 512, [], \"f8f4\", \"M437.42,309.5A16.1,16.1,0,0,0,416,324.67v17.62c0,6.38,3.93,11.85,9.66,14.63,14.92,7.25,24.72,23.06,21.84,41.47C444.4,418.12,426.2,432,406.22,432H400a40,40,0,0,1-40-40V288H312V392a88,88,0,0,0,88,88h4.53c44.92,0,85.21-32.18,90.77-76.76A87.55,87.55,0,0,0,437.42,309.5ZM216,424a40,40,0,0,1-40,40h-6.22c-20,0-38.18-13.88-41.28-33.61-2.88-18.41,6.92-34.22,21.84-41.47,5.73-2.78,9.66-8.25,9.66-14.63V356.67a16.1,16.1,0,0,0-21.42-15.17A87.55,87.55,0,0,0,80.7,435.24C86.26,479.82,126.55,512,171.47,512H176a88,88,0,0,0,88-88V288H216ZM544,0H32A32,32,0,0,0,0,32V224a32,32,0,0,0,32,32H544a32,32,0,0,0,32-32V32A32,32,0,0,0,544,0ZM528,208H48V48H528ZM112,176H464a16,16,0,0,0,16-16V144a16,16,0,0,0-16-16H112a16,16,0,0,0-16,16v16A16,16,0,0,0,112,176Z\"]\n};\nvar faAirFreshener = {\n prefix: 'far',\n iconName: 'air-freshener',\n icon: [512, 512, [], \"f5d0\", \"M448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578ZM224 32C224 14.406 209.594 0 192 0H128C110.406 0 96 14.406 96 32V128H224V32ZM160 272C124.625 272 96 300.625 96 336S124.625 400 160 400S224 371.375 224 336S195.375 272 160 272ZM224 160H96C43 160 0 203 0 256V448C0 483.203 28.812 512 64 512H256C291.188 512 320 483.203 320 448V256C320 203 277 160 224 160ZM272 432C272 449.672 257.688 464 240 464H80C62.312 464 48 449.672 48 432V256C48 229.484 69.5 208 96 208H224C250.5 208 272 229.484 272 256V432Z\"]\n};\nvar faAlarmClock = {\n prefix: 'far',\n iconName: 'alarm-clock',\n icon: [512, 512, [], \"f34e\", \"M256 64C132.26 64 32 164.29 32 288a222.69 222.69 0 0 0 44.75 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.63 22.62a16 16 0 0 0 22.62 0l40.1-40.12a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.63 0l22.62-22.62a16 16 0 0 0 0-22.63L435.21 422A222.7 222.7 0 0 0 480 288c0-123.71-100.3-224-224-224zm0 400a176 176 0 1 1 176-176 176 176 0 0 1-176 176zM96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm184 292.47V168a8 8 0 0 0-8-8h-32a8 8 0 0 0-8 8v132.16a32 32 0 0 0 12 25l64.54 51.57a8.58 8.58 0 0 0 5.87 1.72 8 8 0 0 0 5.35-2.95l20-25a8 8 0 0 0-1.25-11.27zM416 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96z\"]\n};\nvar faAlarmExclamation = {\n prefix: 'far',\n iconName: 'alarm-exclamation',\n icon: [512, 512, [], \"f843\", \"M256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 400a176 176 0 1 1 176-176 176 176 0 0 1-176 176zM96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 352a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm22.3-192h-44.6a16.06 16.06 0 0 0-15.9 17.6l12.8 128a16 16 0 0 0 15.9 14.4h19a16 16 0 0 0 15.9-14.4l12.8-128a16 16 0 0 0-15.89-17.6z\"]\n};\nvar faAlarmPlus = {\n prefix: 'far',\n iconName: 'alarm-plus',\n icon: [512, 512, [], \"f844\", \"M256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 400a176 176 0 1 1 176-176 176 176 0 0 1-176 176zm96-200h-72v-72a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v72h-72a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h72v72a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-72h72a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96z\"]\n};\nvar faAlarmSnooze = {\n prefix: 'far',\n iconName: 'alarm-snooze',\n icon: [512, 512, [], \"f845\", \"M256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 400a176 176 0 1 1 176-176 176 176 0 0 1-176 176zm64-280H192a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h78.07l-96.83 121A24 24 0 0 0 192 392h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-78.08l96.8-121A24 24 0 0 0 320 184zM96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96z\"]\n};\nvar faAlbum = {\n prefix: 'far',\n iconName: 'album',\n icon: [448, 512, [], \"f89f\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-16 400H48V80h352zm-176-32A144 144 0 1 0 80 256a144 144 0 0 0 144 144zm0-168a24 24 0 1 1-24 24 24 24 0 0 1 24-24z\"]\n};\nvar faAlbumCollection = {\n prefix: 'far',\n iconName: 'album-collection',\n icon: [512, 512, [], \"f8a0\", \"M496 104a24 24 0 0 0-24-24H40a24 24 0 0 0-24 24v24h480zm-16-80a24 24 0 0 0-24-24H56a24 24 0 0 0-24 24v24h448zm0 136H32A32 32 0 0 0 .13 194.9l26.19 288A32 32 0 0 0 58.18 512h395.64a32 32 0 0 0 31.86-29.1l26.19-288A32 32 0 0 0 480 160zm-40.8 304H72.8L49.52 208h413zM256 448c80.13 0 148.25-45.29 152.34-104 4.32-62-63.78-114.89-152.35-114.89S99.33 282.05 103.66 344c4.1 58.71 72.21 104 152.34 104zm0-120.41c14.56 0 26.26 8.69 26.14 19.32s-11.82 19-26.14 19-26-8.47-26.13-19 11.58-19.32 26.13-19.32z\"]\n};\nvar faAlicorn = {\n prefix: 'far',\n iconName: 'alicorn',\n icon: [640, 512, [], \"f6b0\", \"M448 96c0-8.84-7.16-16-16-16s-16 7.16-16 16 7.16 16 16 16 16-7.16 16-16zm183.98-32H526.61l-15.28-18.57c16.37-5.23 29.03-18.72 32.51-35.79C544.85 4.68 540.96 0 535.9 0H399.95c-68.22 0-125.48 47.71-140.26 111.5-36.9-1.23-73.89-13.34-98.32-40.94-4.02-4.54-9.17-6.56-14.21-6.56-9.78 0-19.16 7.6-19.16 19.06 0 86.09 59.76 162.72 140.01 183.21 10.11 2.58 19.99-5.19 19.99-15.63v-16.36c0-6.96-4.44-13.34-11.15-15.21-37.34-10.46-68.92-37.67-86.32-73.34 23.38 9.37 48.83 14.27 75.24 14.27h38.18v-16c0-53.02 42.98-96 96-96h51.33l44.67 54.28.05 65.35c0 4.77-3.03 9.01-7.54 10.55l-31.02 10.59c-1.51.52-9.71 2.95-16.48-3.83L416 160h-32v80c0 26.09-12.68 49.03-32 63.64V464h-48V320l-107.91-30.83-28.65 79.78L191.53 464H150l-21.13-87.86a31.698 31.698 0 0 1 .37-16.18l22.7-76.72C128.54 273.72 112 250.83 112 224c0-14.93 5.32-28.49 13.9-39.38-9.05-14.37-15.81-30.08-20.87-46.54-7.91 6.56-15.17 13.86-21.04 22.32C37.36 162.55 0 200.84 0 248v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.18 2.59-.78 5.05-.78 7.68 0 30.13 11.9 58.09 32.16 78.58l-12.95 43.76a78.913 78.913 0 0 0-1.05 40.84l24.12 100.29c3.46 14.38 16.32 24.52 31.11 24.52h74.7c20.86 0 36.14-19.64 31.02-39.86l-25.53-100.76 8.51-23.71L256 356.2V480c0 17.67 14.33 32 32 32h80c17.67 0 32-14.33 32-32V324.35c20.57-23.15 32-52.8 32-84.35v-5.62c20.95 6.97 38.32.72 40.93-.17l31.03-10.59c23.96-8.18 40.05-30.7 40.04-56.01l-.04-52.28 92.46-36.67c6.59-4.39 3.48-14.66-4.44-14.66z\"]\n};\nvar faAlien = {\n prefix: 'far',\n iconName: 'alien',\n icon: [448, 512, [], \"f8f5\", \"M224,0C100.28125,0,0,88.0293,0,232.45117,0,344.22852,134.21484,457.04883,194.86328,502.32422a48.70766,48.70766,0,0,0,58.27344,0C313.78516,457.04883,448,344.22852,448,232.45117,448,88.0293,347.71875,0,224,0Zm-.42188,463.85938C113.63672,381.78711,48,295.2793,48,232.45117,48,122.125,118.72852,48,224,48s176,74.125,176,184.45117C400,295.2793,334.36328,381.78711,223.57812,463.85938ZM129.8125,224h-32a15.99954,15.99954,0,0,0-16,16,80.00021,80.00021,0,0,0,80,80h32a16.00079,16.00079,0,0,0,16-16A79.999,79.999,0,0,0,129.8125,224Zm224,0h-32a79.999,79.999,0,0,0-80,80,16.00079,16.00079,0,0,0,16,16h32a80.00021,80.00021,0,0,0,80-80A15.99954,15.99954,0,0,0,353.8125,224Z\"]\n};\nvar faAlienMonster = {\n prefix: 'far',\n iconName: 'alien-monster',\n icon: [576, 512, [], \"f8f6\", \"M560,128H544a15.99954,15.99954,0,0,0-16,16v96H480V176a15.99954,15.99954,0,0,0-16-16H432V96h32a16.00079,16.00079,0,0,0,16-16V48a15.99954,15.99954,0,0,0-16-16H448a15.99954,15.99954,0,0,0-16,16V64H400a15.99954,15.99954,0,0,0-16,16v48H192V80a15.99954,15.99954,0,0,0-16-16H144V48a15.99954,15.99954,0,0,0-16-16H112A15.99954,15.99954,0,0,0,96,48V80a16.00079,16.00079,0,0,0,16,16h32v64H112a15.99954,15.99954,0,0,0-16,16v64H48V144a15.99954,15.99954,0,0,0-16-16H16A15.99954,15.99954,0,0,0,0,144V272a16.00079,16.00079,0,0,0,16,16H64v80a16.00079,16.00079,0,0,0,16,16h48v80a16.00079,16.00079,0,0,0,16,16h96a16.00079,16.00079,0,0,0,16-16V448a15.99954,15.99954,0,0,0-16-16H176V384H400v48H336a15.99954,15.99954,0,0,0-16,16v16a16.00079,16.00079,0,0,0,16,16h96a16.00079,16.00079,0,0,0,16-16V384h48a16.00079,16.00079,0,0,0,16-16V288h48a16.00079,16.00079,0,0,0,16-16V144A15.99954,15.99954,0,0,0,560,128ZM464,336H112V288h32V208h48V176H384v32h48v80h32ZM240,224H208a15.99954,15.99954,0,0,0-16,16v48a16.00079,16.00079,0,0,0,16,16h32a16.00079,16.00079,0,0,0,16-16V240A15.99954,15.99954,0,0,0,240,224Zm128,0H336a15.99954,15.99954,0,0,0-16,16v48a16.00079,16.00079,0,0,0,16,16h32a16.00079,16.00079,0,0,0,16-16V240A15.99954,15.99954,0,0,0,368,224Z\"]\n};\nvar faAlignCenter = {\n prefix: 'far',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M108.1 88h231.81A12.09 12.09 0 0 0 352 75.9V52.09A12.09 12.09 0 0 0 339.91 40H108.1A12.09 12.09 0 0 0 96 52.09V75.9A12.1 12.1 0 0 0 108.1 88zM432 424H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0-256H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm-92.09 176A12.09 12.09 0 0 0 352 331.9v-23.81A12.09 12.09 0 0 0 339.91 296H108.1A12.09 12.09 0 0 0 96 308.09v23.81a12.1 12.1 0 0 0 12.1 12.1z\"]\n};\nvar faAlignJustify = {\n prefix: 'far',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M432 424H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 56v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16z\"]\n};\nvar faAlignLeft = {\n prefix: 'far',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M12.83 344h262.34A12.82 12.82 0 0 0 288 331.17v-22.34A12.82 12.82 0 0 0 275.17 296H12.83A12.82 12.82 0 0 0 0 308.83v22.34A12.82 12.82 0 0 0 12.83 344zm0-256h262.34A12.82 12.82 0 0 0 288 75.17V52.83A12.82 12.82 0 0 0 275.17 40H12.83A12.82 12.82 0 0 0 0 52.83v22.34A12.82 12.82 0 0 0 12.83 88zM432 168H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faAlignRight = {\n prefix: 'far',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M16 216h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16zm416 208H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 52.83v22.34A12.82 12.82 0 0 0 172.83 88h262.34A12.82 12.82 0 0 0 448 75.17V52.83A12.82 12.82 0 0 0 435.17 40zm0 256H172.83A12.82 12.82 0 0 0 160 308.83v22.34A12.82 12.82 0 0 0 172.83 344h262.34A12.82 12.82 0 0 0 448 331.17v-22.34A12.82 12.82 0 0 0 435.17 296z\"]\n};\nvar faAlignSlash = {\n prefix: 'far',\n iconName: 'align-slash',\n icon: [640, 512, [], \"f846\", \"M634 471L36 3.5A16 16 0 0 0 13.49 6l-10 12.5A16 16 0 0 0 6 41l598 467.5a16 16 0 0 0 22.5-2.5l10-12.5A16 16 0 0 0 634 471zM528 296h-39.94l52.69 41.19A15.6 15.6 0 0 0 544 328v-16a16 16 0 0 0-16-16zm16-112a16 16 0 0 0-16-16H324.34l61.39 48H528a16 16 0 0 0 16-16zm-16-96a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16H160.61L222 88zM112 424a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h367.37L418 424zm0-80h203.65l-61.39-48H112a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z\"]\n};\nvar faAllergies = {\n prefix: 'far',\n iconName: 'allergies',\n icon: [480, 512, [], \"f461\", \"M256 304c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-64-16c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm64 112c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm152-288c-2.7 0-5.4.2-8 .4V104c0-39.7-32.3-72-72-72-6.4 0-12.7.8-18.6 2.4C296.7 13.8 273.9 0 248 0s-48.7 13.8-61.4 34.4c-5.9-1.6-12.2-2.4-18.6-2.4-39.7 0-72 32.3-72 72v92.1c-10.5-3.7-38.1-10.2-65.3 8.9C-1.8 227.8-9.8 272.8 13 305.3l113.5 171c14.9 22.4 39.8 35.7 66.6 35.7h180.6c38 0 71-27 78.5-64.3l20.6-103.2c4.7-23.7 7.1-48 7.1-72.2V184c.1-39.7-32.2-72-71.9-72zm24 160.3c0 21.1-2.1 42.1-6.2 62.8l-20.6 103.2c-3 15-16.1 25.7-31.4 25.7H193.1c-10.7 0-20.7-5.4-26.7-14.3L52.3 277.8c-18-25.7 20.7-54.1 39.3-27.5l37.8 54.4c4.5 6.5 14.6 3.2 14.6-4.6V104c0-31.8 48-31.7 48 0v144c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V72c0-31.8 48-31.7 48 0v176c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V104c0-31.8 48-31.7 48 0v144c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-64c0-31.8 48-31.7 48 0v88.3zM192 368c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm192-80c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-32 112c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-32-64c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16z\"]\n};\nvar faAmbulance = {\n prefix: 'far',\n iconName: 'ambulance',\n icon: [640, 512, [], \"f0f9\", \"M296 160h-56v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56h-56c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h56v56c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-56h56c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm328 208h-16V251.9c0-19-7.7-37.5-21.1-50.9L503 117.1C489.6 103.7 471 96 452.1 96H416V56c0-30.9-25.1-56-56-56H56C25.1 0 0 25.1 0 56v304c0 30.9 25.1 56 56 56h8c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-464 96c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm208-96H242.7c-16.6-28.6-47.2-48-82.7-48s-66.1 19.4-82.7 48H56c-4.4 0-8-3.6-8-8V56c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v312zm48-224h36.1c6.3 0 12.5 2.6 17 7l73 73H416v-80zm64 320c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-100.9c-17.2-25.9-46.6-43.1-80-43.1-24.7 0-47 9.6-64 24.9V272h144v91.1z\"]\n};\nvar faAmericanSignLanguageInterpreting = {\n prefix: 'far',\n iconName: 'american-sign-language-interpreting',\n icon: [640, 512, [], \"f2a3\", \"M635.1 210.8c-.1-.1-40.2-80.4-40.2-80.4-11.4-22.7-39.9-33.6-64.4-21.3L478.9 135s-76.4-7-77.4-7c-18.7 0-36.6 4.3-52.7 12.5-6.6-8.8-14.3-14.1-23.5-18.3 11.4-35.6-14.8-73.5-53.5-73.2-3.2-26.4-25.9-49-55.5-49-13 0-25.6 4.5-35.7 12.8-45.4 37.3-74.4 89.6-82.4 146.6l-29.7 53.5s-44.7 25.4-44.8 25.5C2.1 251.1-6.1 278.5 4.9 301.2c.1.1 40.2 80.4 40.2 80.4 11.5 22.9 40.1 33.5 64.4 21.3l51.6-25.9c76.9 7 76.9 7 78.8 7 18.1 0 35.6-4.5 51.2-12.5 6.6 8.8 14.3 14.1 23.5 18.3-11.8 37 17.1 73.8 53.5 73.4 3.4 27.1 26.7 48.9 55.6 48.9 13 0 25.7-4.5 35.6-12.8 45.4-37.3 74.4-89.6 82.4-146.6l29.7-53.5s44.7-25.4 44.8-25.5c21.7-12.8 29.9-40.1 18.9-62.9zM297 188.6c-19.9-9.9-43.4-11.3-64.5-3.9-8.4 3-6.3 15.5 2.7 15.5 32.4 0 57.2 14.5 69.8 41 9 18.8-19.8 32.9-28.8 13.6l-.1-.1c-6.9-14-20.7-22.7-36.2-22.7-22.1 0-40 17.9-40 40 0 24.7 20.8 40 40 40 15.5 0 29.3-8.7 36.2-22.7l.1-.1c9.1-19.2 37.8-5.2 28.8 13.6-11.9 24.9-37.3 41.1-64.7 41.2-4.6-.4-62.2-5.7-84.6-7.7-1.5-.1-3 .1-4.3.8l-59.8 30c-4.5 2.2-9.1 0-10.8-3.4l-40-79.9c-1.9-3.9-.5-8.7 3.1-10.8l52.2-29.7c1.3-.7 2.3-1.8 3-3.1l37-66.7c.5-.9.8-1.9 1-3 5.6-49.8 30-94.8 68.9-126.7 6.7-5.6 16.9-4.8 22.4 2.1 6 7.5 4.4 17.2-2.2 22.6-12.1 10.2-22.4 21.5-30.6 33.5-4.9 7.3 3.8 16.1 11.1 11.1C226 100 247.3 92 270 89.2c8.2-1.1 16.4 4.1 17.8 13.9 1.1 8.7-4.8 16.7-13.8 17.8-15 1.8-29.4 6.8-42.9 14.8-7.8 4.6-3 16.6 5.8 14.7 23.6-5.2 51.3-1.7 74 9.3 19.2 9.5 5.1 38.1-13.9 28.9zm299.1 50.5l-52.2 29.7c-1.3.7-2.3 1.8-3 3.1l-37 66.7c-.5.9-.8 1.9-1 3-5.6 49.8-30 94.8-68.9 126.7-16 13.4-36.8-11-20.2-24.7 12.2-10.3 22.5-21.6 30.7-33.6 5-7.4-4-16-11.1-11.1-19.3 13.1-40.6 21.2-63.2 23.9-21.2 2.6-24.9-29.3-4.1-31.6 15-1.8 29.4-6.8 42.9-14.8 7.8-4.6 3-16.6-5.8-14.7-23.6 5.2-51.3 1.7-74-9.3-19.2-9.6-5-38.2 13.9-28.9 19.9 9.9 43.4 11.4 64.5 3.9 8.4-3 6.3-15.5-2.7-15.5-32.4 0-57.2-14.5-69.8-41-9-18.8 19.8-32.9 28.8-13.6l.1.1c6.9 14 20.7 22.7 36.2 22.7 22.1 0 40-17.9 40-40 0-24.7-20.8-40-40-40-15.5 0-29.3 8.7-36.2 22.7l-.1.1c-9.1 19.2-37.8 5.2-28.8-13.6 12.1-25.3 37.4-41.1 66.2-41.2l83.1 7.7c1.5.1 3-.1 4.3-.8l59.8-30c4.5-2.2 9.1 0 10.8 3.4l40 79.9c1.7 3.9.4 8.6-3.2 10.8z\"]\n};\nvar faAmpGuitar = {\n prefix: 'far',\n iconName: 'amp-guitar',\n icon: [512, 512, [], \"f8a1\", \"M464 80h-61.5C377.75 52.71 321.51 0 256 0S134.25 52.71 109.5 80H48a48 48 0 0 0-48 48v336a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V128a48 48 0 0 0-48-48zM256 48c26.9 0 54 14.79 76.25 32h-152.5C202 62.77 229.1 48 256 48zm208 416H48V272h416zm0-240H48v-96h416zM128 400a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm64-64a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm-96 48a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm32-48a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm128 0a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm128 0a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm-64 0a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm-160 48a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm192 0a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm32 16a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm-64 0a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm-128 0a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm224-16a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm-192 0a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm32 16a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm32-16a16 16 0 1 0-16-16 16 16 0 0 0 16 16zM112 200a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm80 0a24 24 0 1 0-24-24 24 24 0 0 0 24 24z\"]\n};\nvar faAnalytics = {\n prefix: 'far',\n iconName: 'analytics',\n icon: [608, 512, [], \"f643\", \"M416 320h-64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zm-16 144h-32v-96h32v96zm176-272h-64c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V224c0-17.67-14.33-32-32-32zm-16 272h-32V240h32v224zM256 192h-64c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V224c0-17.67-14.33-32-32-32zm-16 272h-32V240h32v224zM96 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM80 464H48v-64h32v64zM64 256c26.51 0 48-21.49 48-48 0-4.27-.74-8.34-1.78-12.28l101.5-101.5C215.66 95.26 219.73 96 224 96c6.15 0 11.97-1.26 17.38-3.37l95.34 76.27c-.35 2.33-.71 4.67-.71 7.1 0 26.51 21.49 48 48 48s48-21.49 48-48c0-2.43-.37-4.76-.71-7.09l95.34-76.27C532.03 94.74 537.85 96 544 96c26.51 0 48-21.49 48-48S570.51 0 544 0s-48 21.49-48 48c0 2.43.37 4.76.71 7.09l-95.34 76.27c-5.4-2.11-11.23-3.37-17.38-3.37s-11.97 1.26-17.38 3.37L271.29 55.1c.35-2.33.71-4.67.71-7.1 0-26.51-21.49-48-48-48s-48 21.49-48 48c0 4.27.74 8.34 1.78 12.28l-101.5 101.5C72.34 160.74 68.27 160 64 160c-26.51 0-48 21.49-48 48s21.49 48 48 48z\"]\n};\nvar faAnchor = {\n prefix: 'far',\n iconName: 'anchor',\n icon: [576, 512, [], \"f13d\", \"M571.515 331.515l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h44.268C453.531 417.326 380.693 456.315 312 462.865V216h60c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-60v-11.668c32.456-10.195 56-40.512 56-76.332 0-44.183-35.817-80-80-80s-80 35.817-80 80c0 35.82 23.544 66.138 56 76.332V168h-60c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h60v246.865C195.192 456.304 122.424 417.176 102.762 352h44.268c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.03 67.029C-3.074 339.074 2.28 352 12.971 352h40.284C73.657 451.556 181.238 512 288 512c113.135 0 215.338-65.3 234.745-160h40.284c10.691 0 16.045-12.926 8.486-20.485zM288 48c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z\"]\n};\nvar faAngel = {\n prefix: 'far',\n iconName: 'angel',\n icon: [576, 512, [], \"f779\", \"M571.7 453.1l-38.2-78.6c-6.6-13.5-6.6-29.6 0-43.1 16.2-33.4 26.4-37.5 26.4-75.3 0-51.1-46.9-96-100.4-96-25.1 0-48.7 10-66.3 28.1l-72.7 73.4c-10.3-3.4-21.2-5.4-32.5-5.4-11.2 0-22.1 2-32.4 5.4l-72.7-73.3c-17.6-18-41.2-28.1-66.3-28.1-53.5 0-100.4 44.9-100.4 96 0 37.9 10.2 42 26.4 75.3 6.6 13.5 6.6 29.6 0 43.1L4.4 453.1c-14.5 29.8 9.3 58.9 36.3 58.9h494.7c27.6 0 50.4-29.9 36.3-58.9zM52.4 464l33.4-68.6c12.9-26.6 12.9-58.5 0-85.1-5.4-11.2-9.9-18.9-13.5-25.1-7.2-12.4-8.1-14-8.1-29.2 0-24.7 25.5-48 52.4-48 12.1 0 23.5 4.9 32.1 13.7l65.2 65.8c-7.3 7.5-13.6 16.1-18.4 25.7L120.1 464H52.4zm121.4 0l64.6-129.3c9.5-18.9 28.5-30.7 49.7-30.7 21.2 0 40.2 11.8 49.7 30.7L402.3 464H173.8zm282.1 0l-75.3-150.8c-4.8-9.7-11.1-18.2-18.4-25.7l65.2-65.8c8.6-8.9 20-13.7 32.1-13.7 27 0 52.4 23.3 52.4 48 0 15.2-.9 16.8-8.1 29.2-3.6 6.2-8.1 13.9-13.5 25.1-12.9 26.6-12.9 58.5 0 85.1l33.4 68.6h-67.8zM208 144c0 44.2 35.8 80 80 80s80-35.8 80-80-35.8-80-80-80-80 35.8-80 80zm112 0c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32zm-143.3-6.7l.2-.1c.8-13 3.9-25.2 8.8-36.6-11-6-17.6-13-17.6-20.6 0-22.1 53.7-40 120-40s120 17.9 120 40c0 7.6-6.7 14.6-17.6 20.6 4.9 11.4 8 23.6 8.8 36.6l.2.1C429.3 122.8 448 102.5 448 80c0-44.2-71.6-80-160-80S128 35.8 128 80c0 22.5 18.7 42.8 48.7 57.3z\"]\n};\nvar faAngleDoubleDown = {\n prefix: 'far',\n iconName: 'angle-double-down',\n icon: [320, 512, [], \"f103\", \"M151.5 427.8L3.5 281c-4.7-4.7-4.7-12.3 0-17l19.8-19.8c4.7-4.7 12.3-4.7 17 0L160 362.7l119.7-118.5c4.7-4.7 12.3-4.7 17 0l19.8 19.8c4.7 4.7 4.7 12.3 0 17l-148 146.8c-4.7 4.7-12.3 4.7-17 0zm17-160l148-146.8c4.7-4.7 4.7-12.3 0-17l-19.8-19.8c-4.7-4.7-12.3-4.7-17 0L160 202.7 40.3 84.2c-4.7-4.7-12.3-4.7-17 0L3.5 104c-4.7 4.7-4.7 12.3 0 17l148 146.8c4.7 4.7 12.3 4.7 17 0z\"]\n};\nvar faAngleDoubleLeft = {\n prefix: 'far',\n iconName: 'angle-double-left',\n icon: [384, 512, [], \"f100\", \"M20.2 247.5L167 99.5c4.7-4.7 12.3-4.7 17 0l19.8 19.8c4.7 4.7 4.7 12.3 0 17L85.3 256l118.5 119.7c4.7 4.7 4.7 12.3 0 17L184 412.5c-4.7 4.7-12.3 4.7-17 0l-146.8-148c-4.7-4.7-4.7-12.3 0-17zm160 17l146.8 148c4.7 4.7 12.3 4.7 17 0l19.8-19.8c4.7-4.7 4.7-12.3 0-17L245.3 256l118.5-119.7c4.7-4.7 4.7-12.3 0-17L344 99.5c-4.7-4.7-12.3-4.7-17 0l-146.8 148c-4.7 4.7-4.7 12.3 0 17z\"]\n};\nvar faAngleDoubleRight = {\n prefix: 'far',\n iconName: 'angle-double-right',\n icon: [384, 512, [], \"f101\", \"M363.8 264.5L217 412.5c-4.7 4.7-12.3 4.7-17 0l-19.8-19.8c-4.7-4.7-4.7-12.3 0-17L298.7 256 180.2 136.3c-4.7-4.7-4.7-12.3 0-17L200 99.5c4.7-4.7 12.3-4.7 17 0l146.8 148c4.7 4.7 4.7 12.3 0 17zm-160-17L57 99.5c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8c-4.7 4.7-4.7 12.3 0 17L138.7 256 20.2 375.7c-4.7 4.7-4.7 12.3 0 17L40 412.5c4.7 4.7 12.3 4.7 17 0l146.8-148c4.7-4.7 4.7-12.3 0-17z\"]\n};\nvar faAngleDoubleUp = {\n prefix: 'far',\n iconName: 'angle-double-up',\n icon: [320, 512, [], \"f102\", \"M168.5 84.2l148 146.8c4.7 4.7 4.7 12.3 0 17l-19.8 19.8c-4.7 4.7-12.3 4.7-17 0L160 149.3 40.3 267.8c-4.7 4.7-12.3 4.7-17 0L3.5 248c-4.7-4.7-4.7-12.3 0-17l148-146.8c4.7-4.7 12.3-4.7 17 0zm-17 160L3.5 391c-4.7 4.7-4.7 12.3 0 17l19.8 19.8c4.7 4.7 12.3 4.7 17 0L160 309.3l119.7 118.5c4.7 4.7 12.3 4.7 17 0l19.8-19.8c4.7-4.7 4.7-12.3 0-17l-148-146.8c-4.7-4.7-12.3-4.7-17 0z\"]\n};\nvar faAngleDown = {\n prefix: 'far',\n iconName: 'angle-down',\n icon: [320, 512, [], \"f107\", \"M151.5 347.8L3.5 201c-4.7-4.7-4.7-12.3 0-17l19.8-19.8c4.7-4.7 12.3-4.7 17 0L160 282.7l119.7-118.5c4.7-4.7 12.3-4.7 17 0l19.8 19.8c4.7 4.7 4.7 12.3 0 17l-148 146.8c-4.7 4.7-12.3 4.7-17 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'far',\n iconName: 'angle-left',\n icon: [192, 512, [], \"f104\", \"M4.2 247.5L151 99.5c4.7-4.7 12.3-4.7 17 0l19.8 19.8c4.7 4.7 4.7 12.3 0 17L69.3 256l118.5 119.7c4.7 4.7 4.7 12.3 0 17L168 412.5c-4.7 4.7-12.3 4.7-17 0L4.2 264.5c-4.7-4.7-4.7-12.3 0-17z\"]\n};\nvar faAngleRight = {\n prefix: 'far',\n iconName: 'angle-right',\n icon: [192, 512, [], \"f105\", \"M187.8 264.5L41 412.5c-4.7 4.7-12.3 4.7-17 0L4.2 392.7c-4.7-4.7-4.7-12.3 0-17L122.7 256 4.2 136.3c-4.7-4.7-4.7-12.3 0-17L24 99.5c4.7-4.7 12.3-4.7 17 0l146.8 148c4.7 4.7 4.7 12.3 0 17z\"]\n};\nvar faAngleUp = {\n prefix: 'far',\n iconName: 'angle-up',\n icon: [320, 512, [], \"f106\", \"M168.5 164.2l148 146.8c4.7 4.7 4.7 12.3 0 17l-19.8 19.8c-4.7 4.7-12.3 4.7-17 0L160 229.3 40.3 347.8c-4.7 4.7-12.3 4.7-17 0L3.5 328c-4.7-4.7-4.7-12.3 0-17l148-146.8c4.7-4.7 12.3-4.7 17 0z\"]\n};\nvar faAngry = {\n prefix: 'far',\n iconName: 'angry',\n icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-144c-33.6 0-65.2 14.8-86.8 40.6-8.5 10.2-7.1 25.3 3.1 33.8s25.3 7.2 33.8-3c24.8-29.7 75-29.7 99.8 0 8.1 9.7 23.2 11.9 33.8 3 10.2-8.5 11.5-23.6 3.1-33.8-21.6-25.8-53.2-40.6-86.8-40.6zm-48-72c10.3 0 19.9-6.7 23-17.1 3.8-12.7-3.4-26.1-16.1-29.9l-80-24c-12.8-3.9-26.1 3.4-29.9 16.1-3.8 12.7 3.4 26.1 16.1 29.9l28.2 8.5c-3.1 4.9-5.3 10.4-5.3 16.6 0 17.7 14.3 32 32 32s32-14.4 32-32.1zm199-54.9c-3.8-12.7-17.1-19.9-29.9-16.1l-80 24c-12.7 3.8-19.9 17.2-16.1 29.9 3.1 10.4 12.7 17.1 23 17.1 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.2-2.2-11.7-5.3-16.6l28.2-8.5c12.7-3.7 19.9-17.1 16.1-29.8z\"]\n};\nvar faAnkh = {\n prefix: 'far',\n iconName: 'ankh',\n icon: [320, 512, [], \"f644\", \"M304 272h-76.92c29.46-36.35 54.82-87.85 54.82-134.86C281.9 52.98 227.33 0 160 0S38.1 52.98 38.1 137.14c0 47 25.36 98.51 54.82 134.86H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h120v176c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V320h120c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM160 48c44.21 0 73.9 35.82 73.9 89.14 0 53.83-49.69 119.49-73.9 133.35-24.21-13.85-73.9-79.52-73.9-133.35C86.1 83.82 115.8 48 160 48z\"]\n};\nvar faAppleAlt = {\n prefix: 'far',\n iconName: 'apple-alt',\n icon: [448, 512, [], \"f5d1\", \"M415.22 177.62c-18.53-26.47-43.99-43.17-73.58-48.28h-.03c-34.49-5.98-86.14 9.16-117.6 23.77-31.46-14.61-82.95-29.77-117.64-23.77-29.59 5.11-55.05 21.81-73.58 48.28C4.85 217.5-6.55 280.12 3.73 337.17 18.97 421.69 69.96 512 167.23 512c13.44 0 27.62-4.03 42.21-11.97 9-4.88 20.12-4.88 29.12 0 14.59 7.94 28.78 11.97 42.21 11.97 97.26 0 148.25-90.31 163.5-174.84 10.28-57.04-1.12-119.66-29.05-159.54zm-18.19 151.02C392.97 351.25 368.19 464 280.77 464c-5.25 0-11.9-2.12-19.28-6.12-11.56-6.3-24.53-9.45-37.49-9.45s-25.93 3.16-37.49 9.45c-7.37 4-14.03 6.12-19.28 6.12-87.42 0-112.2-112.75-116.26-135.34-8-44.39.5-94.03 21.12-123.5 11.19-15.98 25.46-25.58 42.43-28.5 12.55-2.16 53.83-.07 109.48 30.75 55.68-30.84 97-32.94 109.48-30.75 16.97 2.92 31.24 12.52 42.43 28.5 20.62 29.46 29.12 79.11 21.12 123.48zM222.41 112c18.66 0 52.09-3.26 73.2-24.38C326.17 57.06 319.32.65 319.32.65S313.93 0 305.57 0c-18.66 0-52.09 3.27-73.19 24.38-30.56 30.57-23.71 86.97-23.71 86.97s5.39.65 13.74.65z\"]\n};\nvar faAppleCrate = {\n prefix: 'far',\n iconName: 'apple-crate',\n icon: [576, 512, [], \"f6b1\", \"M434.22 50.47c11.29-12.19 14.43-32.03 13.22-50.22-12.88-.86-35.67-.12-50.02 13.28-16.53 16.6-13.77 46.36-13.22 50.22 18.47 1.23 37.77-1.85 50.02-13.28zm-191.69 0c11.29-12.19 14.43-32.03 13.22-50.22-12.88-.86-35.67-.12-50.02 13.28-16.53 16.6-13.77 46.36-13.22 50.22 18.47 1.23 37.77-1.85 50.02-13.28zM560 192h-49.71c3.97-26.97.44-63.55-17.22-89.06-11.25-16.31-27.09-26.7-45.78-30.06l-.29-.05c-18.22-3.02-43.56 3.02-63 11.41-19.5-8.39-44.91-14.39-63.28-11.36-12.35 2.23-23.3 7.82-32.68 15.9-9.39-8.09-20.36-13.67-32.76-15.9l-.28-.05c-18.22-3.02-43.56 3.02-63 11.41-19.47-8.41-45-14.36-63.28-11.36-18.62 3.36-34.44 13.73-45.69 30.03-17.76 25.71-21.32 62.47-17.34 89.09H16c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm-245.5-61.8c5.25-7.61 10.91-9.41 14.44-10.03 6.78-1.17 28.5 3.37 43.38 11.69l11.69 6.55 11.72-6.56c14.78-8.27 36.19-12.81 43.25-11.69 3.81.7 9.44 2.56 14.62 10.06 10.12 14.66 12.22 40.64 9 58.03-.23 1.37-.76 2.42-1.02 3.75H318.29c2.64-17.95 1.48-40.01-4.47-60.38.27-.42.4-1.01.68-1.42zm-191.97 0c5.25-7.61 10.91-9.41 14.38-10.03 7.03-.95 28.5 3.36 43.38 11.67l11.72 6.56 11.72-6.56c14.78-8.27 36.16-12.81 43.25-11.69 6 1.12 10.69 4.33 14.66 10.09 10.12 14.64 12.19 40.61 8.97 58-.23 1.37-.76 2.42-1.02 3.75h-155.1c-.29-1.47-.87-2.62-1.12-4.14-3.18-16.94-1.03-42.93 9.16-57.65zM528 464H48v-88h480v88zm0-136H48v-88h480v88zM96 304c8.84 0 16-7.16 16-16s-7.16-16-16-16-16 7.16-16 16 7.16 16 16 16zm384 128c8.84 0 16-7.16 16-16s-7.16-16-16-16-16 7.16-16 16 7.16 16 16 16zm-384 0c8.84 0 16-7.16 16-16s-7.16-16-16-16-16 7.16-16 16 7.16 16 16 16zm384-128c8.84 0 16-7.16 16-16s-7.16-16-16-16-16 7.16-16 16 7.16 16 16 16z\"]\n};\nvar faArchive = {\n prefix: 'far',\n iconName: 'archive',\n icon: [512, 512, [], \"f187\", \"M464 32H48C21.5 32 0 53.5 0 80v80c0 8.8 7.2 16 16 16h16v272c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V176h16c8.8 0 16-7.2 16-16V80c0-26.5-21.5-48-48-48zm-32 400H80V176h352v256zm32-304H48V80h416v48zM204 272h104c6.6 0 12-5.4 12-12v-24c0-6.6-5.4-12-12-12H204c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12z\"]\n};\nvar faArchway = {\n prefix: 'far',\n iconName: 'archway',\n icon: [576, 512, [], \"f557\", \"M560 48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v16c0 8.84 7.16 16 16 16h16v416H16.02c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96v160h.02v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-16V48h16zm-64 0v40H80V48h416zm-64 416V320c0-79.4-64.6-144-144-144s-144 64.6-144 144v144H80V136h416v328h-64z\"]\n};\nvar faArrowAltCircleDown = {\n prefix: 'far',\n iconName: 'arrow-alt-circle-down',\n icon: [512, 512, [], \"f358\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm-32-316v116h-67c-10.7 0-16 12.9-8.5 20.5l99 99c4.7 4.7 12.3 4.7 17 0l99-99c7.6-7.6 2.2-20.5-8.5-20.5h-67V140c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n prefix: 'far',\n iconName: 'arrow-alt-circle-left',\n icon: [512, 512, [], \"f359\", \"M8 256c0 137 111 248 248 248s248-111 248-248S393 8 256 8 8 119 8 256zm448 0c0 110.5-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56s200 89.5 200 200zm-72-20v40c0 6.6-5.4 12-12 12H256v67c0 10.7-12.9 16-20.5 8.5l-99-99c-4.7-4.7-4.7-12.3 0-17l99-99c7.6-7.6 20.5-2.2 20.5 8.5v67h116c6.6 0 12 5.4 12 12z\"]\n};\nvar faArrowAltCircleRight = {\n prefix: 'far',\n iconName: 'arrow-alt-circle-right',\n icon: [512, 512, [], \"f35a\", \"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z\"]\n};\nvar faArrowAltCircleUp = {\n prefix: 'far',\n iconName: 'arrow-alt-circle-up',\n icon: [512, 512, [], \"f35b\", \"M256 504c137 0 248-111 248-248S393 8 256 8 8 119 8 256s111 248 248 248zm0-448c110.5 0 200 89.5 200 200s-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56zm20 328h-40c-6.6 0-12-5.4-12-12V256h-67c-10.7 0-16-12.9-8.5-20.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v116c0 6.6-5.4 12-12 12z\"]\n};\nvar faArrowAltDown = {\n prefix: 'far',\n iconName: 'arrow-alt-down',\n icon: [448, 512, [], \"f354\", \"M400 208h-73.8V80c0-26.5-21.5-48-48-48H169.8c-26.5 0-48 21.5-48 48v128H48.1c-42.6 0-64.2 51.7-33.9 81.9l175.9 176c18.7 18.7 49.1 18.7 67.9 0l176-176c30-30.1 8.7-81.9-34-81.9zM224 432L48 256h121.8V80h108.3v176H400L224 432z\"]\n};\nvar faArrowAltFromBottom = {\n prefix: 'far',\n iconName: 'arrow-alt-from-bottom',\n icon: [384, 512, [], \"f346\", \"M384 444v24c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12zM14.1 190.1l144-144c18.7-18.7 49.1-18.7 67.9 0l143.9 144c30.2 30.2 8.7 81.9-33.9 81.9h-51.6v80c0 26.5-21.5 48-48 48h-88.6c-26.5 0-48-21.5-48-48v-80H48c-42.7 0-64-51.8-33.9-81.9zM48 224h99.7v128h88.6V224H336L192 80 48 224z\"]\n};\nvar faArrowAltFromLeft = {\n prefix: 'far',\n iconName: 'arrow-alt-from-left',\n icon: [448, 512, [], \"f347\", \"M36 448H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v360c0 6.6-5.4 12-12 12zM289.9 78.1l144 144c18.7 18.7 18.7 49.1 0 67.9l-144 143.9c-30.2 30.2-81.9 8.7-81.9-33.9v-51.6h-80c-26.5 0-48-21.5-48-48v-88.6c0-26.5 21.5-48 48-48h80V112c0-42.7 51.8-64 81.9-33.9zM256 112v99.7H128v88.6h128V400l144-144-144-144z\"]\n};\nvar faArrowAltFromRight = {\n prefix: 'far',\n iconName: 'arrow-alt-from-right',\n icon: [448, 512, [], \"f348\", \"M412 64h24c6.6 0 12 5.4 12 12v360c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12zM158.1 433.9l-144-144c-18.7-18.7-18.7-49.1 0-67.9l144-143.9C188.3 47.9 240 69.4 240 112v51.6h80c26.5 0 48 21.5 48 48v88.6c0 26.5-21.5 48-48 48h-80V400c0 42.7-51.8 64-81.9 33.9zM192 400v-99.7h128v-88.6H192V112L48 256l144 144z\"]\n};\nvar faArrowAltFromTop = {\n prefix: 'far',\n iconName: 'arrow-alt-from-top',\n icon: [384, 512, [], \"f349\", \"M0 68V44c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H12C5.4 80 0 74.6 0 68zm369.9 253.9l-144 144c-18.7 18.7-49.1 18.7-67.9 0l-143.9-144c-30.2-30.2-8.7-81.9 34-81.9h51.6v-80c0-26.5 21.5-48 48-48h88.6c26.5 0 48 21.5 48 48v80H336c42.7 0 64 51.8 33.9 81.9zM336 288h-99.7V160h-88.6v128H48l144 144 144-144z\"]\n};\nvar faArrowAltLeft = {\n prefix: 'far',\n iconName: 'arrow-alt-left',\n icon: [448, 512, [], \"f355\", \"M272 431.952v-73.798h128c26.51 0 48-21.49 48-48V201.846c0-26.51-21.49-48-48-48H272V80.057c0-42.638-51.731-64.15-81.941-33.941l-176 175.943c-18.745 18.745-18.746 49.137 0 67.882l176 175.952C220.208 496.042 272 474.675 272 431.952zM48 256L224 80v121.846h176v108.308H224V432L48 256z\"]\n};\nvar faArrowAltRight = {\n prefix: 'far',\n iconName: 'arrow-alt-right',\n icon: [448, 512, [], \"f356\", \"M176 80.048v73.798H48c-26.51 0-48 21.49-48 48v108.308c0 26.51 21.49 48 48 48h128v73.789c0 42.638 51.731 64.151 81.941 33.941l176-175.943c18.745-18.745 18.746-49.137 0-67.882l-176-175.952C227.792 15.958 176 37.325 176 80.048zM400 256L224 432V310.154H48V201.846h176V80l176 176z\"]\n};\nvar faArrowAltSquareDown = {\n prefix: 'far',\n iconName: 'arrow-alt-square-down',\n icon: [448, 512, [], \"f350\", \"M204 128h40c6.6 0 12 5.4 12 12v116h67c10.7 0 16 12.9 8.5 20.5l-99 99c-4.7 4.7-12.3 4.7-17 0l-99-99c-7.6-7.6-2.2-20.5 8.5-20.5h67V140c0-6.6 5.4-12 12-12zm244-48v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faArrowAltSquareLeft = {\n prefix: 'far',\n iconName: 'arrow-alt-square-left',\n icon: [448, 512, [], \"f351\", \"M352 236v40c0 6.6-5.4 12-12 12H224v67c0 10.7-12.9 16-20.5 8.5l-99-99c-4.7-4.7-4.7-12.3 0-17l99-99c7.6-7.6 20.5-2.2 20.5 8.5v67h116c6.6 0 12 5.4 12 12zm96-156v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faArrowAltSquareRight = {\n prefix: 'far',\n iconName: 'arrow-alt-square-right',\n icon: [448, 512, [], \"f352\", \"M96 276v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H108c-6.6 0-12-5.4-12-12zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faArrowAltSquareUp = {\n prefix: 'far',\n iconName: 'arrow-alt-square-up',\n icon: [448, 512, [], \"f353\", \"M244 384h-40c-6.6 0-12-5.4-12-12V256h-67c-10.7 0-16-12.9-8.5-20.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v116c0 6.6-5.4 12-12 12zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faArrowAltToBottom = {\n prefix: 'far',\n iconName: 'arrow-alt-to-bottom',\n icon: [384, 512, [], \"f34a\", \"M336 176h-51.6V80c0-26.5-21.5-48-48-48h-88.6c-26.5 0-48 21.5-48 48v96H48.1c-42.6 0-64.2 51.7-33.9 81.9l143.9 144c18.7 18.7 49.1 18.7 67.9 0l144-144c30-30.1 8.7-81.9-34-81.9zM192 368L48 224h99.7V80h88.6v144H336L192 368zm192 76v24c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12z\"]\n};\nvar faArrowAltToLeft = {\n prefix: 'far',\n iconName: 'arrow-alt-to-left',\n icon: [448, 512, [], \"f34b\", \"M304 400v-51.6h96c26.5 0 48-21.5 48-48v-88.6c0-26.5-21.5-48-48-48h-96v-51.6c0-42.6-51.7-64.2-81.9-33.9l-144 143.9c-18.7 18.7-18.7 49.1 0 67.9l144 144C252.2 464 304 442.7 304 400zM112 256l144-144v99.7h144v88.6H256V400L112 256zM36 448H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v360c0 6.6-5.4 12-12 12z\"]\n};\nvar faArrowAltToRight = {\n prefix: 'far',\n iconName: 'arrow-alt-to-right',\n icon: [448, 512, [], \"f34c\", \"M144 112v51.6H48c-26.5 0-48 21.5-48 48v88.6c0 26.5 21.5 48 48 48h96v51.6c0 42.6 51.7 64.2 81.9 33.9l144-143.9c18.7-18.7 18.7-49.1 0-67.9l-144-144C195.8 48 144 69.3 144 112zm192 144L192 400v-99.7H48v-88.6h144V112l144 144zm76-192h24c6.6 0 12 5.4 12 12v360c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12z\"]\n};\nvar faArrowAltToTop = {\n prefix: 'far',\n iconName: 'arrow-alt-to-top',\n icon: [384, 512, [], \"f34d\", \"M48 336h51.6v96c0 26.5 21.5 48 48 48h88.6c26.5 0 48-21.5 48-48v-96h51.6c42.6 0 64.2-51.7 33.9-81.9l-143.9-144c-18.7-18.7-49.1-18.7-67.9 0l-144 144C-16 284.2 5.3 336 48 336zm144-192l144 144h-99.7v144h-88.6V288H48l144-144zM0 68V44c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H12C5.4 80 0 74.6 0 68z\"]\n};\nvar faArrowAltUp = {\n prefix: 'far',\n iconName: 'arrow-alt-up',\n icon: [448, 512, [], \"f357\", \"M48.048 304h73.798v128c0 26.51 21.49 48 48 48h108.308c26.51 0 48-21.49 48-48V304h73.789c42.638 0 64.151-51.731 33.941-81.941l-175.943-176c-18.745-18.745-49.137-18.746-67.882 0l-175.952 176C-16.042 252.208 5.325 304 48.048 304zM224 80l176 176H278.154v176H169.846V256H48L224 80z\"]\n};\nvar faArrowCircleDown = {\n prefix: 'far',\n iconName: 'arrow-circle-down',\n icon: [512, 512, [], \"f0ab\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm129.9-206.1l-19.6-19.6c-4.8-4.8-12.5-4.7-17.2.2L282 300.8V140c0-6.6-5.4-12-12-12h-28c-6.6 0-12 5.4-12 12v160.8l-67.1-70.3c-4.7-4.9-12.4-5-17.2-.2l-19.6 19.6c-4.7 4.7-4.7 12.3 0 17l121.4 121.4c4.7 4.7 12.3 4.7 17 0l121.4-121.4c4.7-4.7 4.7-12.3 0-17z\"]\n};\nvar faArrowCircleLeft = {\n prefix: 'far',\n iconName: 'arrow-circle-left',\n icon: [512, 512, [], \"f0a8\", \"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm189.1 129.9L123.7 264.5c-4.7-4.7-4.7-12.3 0-17l121.4-121.4c4.7-4.7 12.3-4.7 17 0l19.6 19.6c4.8 4.8 4.7 12.5-.2 17.2L211.2 230H372c6.6 0 12 5.4 12 12v28c0 6.6-5.4 12-12 12H211.2l70.3 67.1c4.9 4.7 5 12.4.2 17.2l-19.6 19.6c-4.7 4.7-12.3 4.7-17 0z\"]\n};\nvar faArrowCircleRight = {\n prefix: 'far',\n iconName: 'arrow-circle-right',\n icon: [512, 512, [], \"f0a9\", \"M8 256c0 137 111 248 248 248s248-111 248-248S393 8 256 8 8 119 8 256zm448 0c0 110.5-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56s200 89.5 200 200zM266.9 126.1l121.4 121.4c4.7 4.7 4.7 12.3 0 17L266.9 385.9c-4.7 4.7-12.3 4.7-17 0l-19.6-19.6c-4.8-4.8-4.7-12.5.2-17.2l70.3-67.1H140c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h160.8l-70.3-67.1c-4.9-4.7-5-12.4-.2-17.2l19.6-19.6c4.7-4.7 12.3-4.7 17 0z\"]\n};\nvar faArrowCircleUp = {\n prefix: 'far',\n iconName: 'arrow-circle-up',\n icon: [512, 512, [], \"f0aa\", \"M256 504c137 0 248-111 248-248S393 8 256 8 8 119 8 256s111 248 248 248zm0-448c110.5 0 200 89.5 200 200s-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56zM126.1 245.1l121.4-121.4c4.7-4.7 12.3-4.7 17 0l121.4 121.4c4.7 4.7 4.7 12.3 0 17l-19.6 19.6c-4.8 4.8-12.5 4.7-17.2-.2L282 211.2V372c0 6.6-5.4 12-12 12h-28c-6.6 0-12-5.4-12-12V211.2l-67.1 70.3c-4.7 4.9-12.4 5-17.2.2l-19.6-19.6c-4.7-4.7-4.7-12.3 0-17z\"]\n};\nvar faArrowDown = {\n prefix: 'far',\n iconName: 'arrow-down',\n icon: [448, 512, [], \"f063\", \"M441.9 250.1l-19.8-19.8c-4.7-4.7-12.3-4.7-17 0L250 385.4V44c0-6.6-5.4-12-12-12h-28c-6.6 0-12 5.4-12 12v341.4L42.9 230.3c-4.7-4.7-12.3-4.7-17 0L6.1 250.1c-4.7 4.7-4.7 12.3 0 17l209.4 209.4c4.7 4.7 12.3 4.7 17 0l209.4-209.4c4.7-4.7 4.7-12.3 0-17z\"]\n};\nvar faArrowFromBottom = {\n prefix: 'far',\n iconName: 'arrow-from-bottom',\n icon: [384, 512, [], \"f342\", \"M35.5 183.9l148-148.4c4.7-4.7 12.3-4.7 17 0l148 148.4c4.7 4.7 4.7 12.3 0 17l-19.6 19.6c-4.8 4.8-12.5 4.7-17.1-.2L218 123.2V372c0 6.6-5.4 12-12 12h-28c-6.6 0-12-5.4-12-12V123.2l-93.7 97.1c-4.7 4.8-12.4 4.9-17.1.2l-19.6-19.6c-4.8-4.7-4.8-12.3-.1-17zM372 428H12c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12z\"]\n};\nvar faArrowFromLeft = {\n prefix: 'far',\n iconName: 'arrow-from-left',\n icon: [448, 512, [], \"f343\", \"M296.1 99.5l148.4 148c4.7 4.7 4.7 12.3 0 17l-148.4 148c-4.7 4.7-12.3 4.7-17 0l-19.6-19.6c-4.8-4.8-4.7-12.5.2-17.1l97.1-93.7H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h248.8l-97.1-93.7c-4.8-4.7-4.9-12.4-.2-17.1l19.6-19.6c4.7-4.9 12.3-4.9 17-.2zM52 436V76c0-6.6-5.4-12-12-12H12C5.4 64 0 69.4 0 76v360c0 6.6 5.4 12 12 12h28c6.6 0 12-5.4 12-12z\"]\n};\nvar faArrowFromRight = {\n prefix: 'far',\n iconName: 'arrow-from-right',\n icon: [448, 512, [], \"f344\", \"M151.9 412.5L3.5 264.5c-4.7-4.7-4.7-12.3 0-17l148.4-148c4.7-4.7 12.3-4.7 17 0l19.6 19.6c4.8 4.8 4.7 12.5-.2 17.1L91.2 230H340c6.6 0 12 5.4 12 12v28c0 6.6-5.4 12-12 12H91.2l97.1 93.7c4.8 4.7 4.9 12.4.2 17.1l-19.6 19.6c-4.7 4.8-12.3 4.8-17 .1zM396 76v360c0 6.6 5.4 12 12 12h28c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12h-28c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowFromTop = {\n prefix: 'far',\n iconName: 'arrow-from-top',\n icon: [384, 512, [], \"f345\", \"M348.5 328.1l-148 148.4c-4.7 4.7-12.3 4.7-17 0l-148-148.4c-4.7-4.7-4.7-12.3 0-17l19.6-19.6c4.8-4.8 12.5-4.7 17.1.2l93.7 97.1V140c0-6.6 5.4-12 12-12h28c6.6 0 12 5.4 12 12v248.8l93.7-97.1c4.7-4.8 12.4-4.9 17.1-.2l19.6 19.6c4.9 4.7 4.9 12.3.2 17zM12 84h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12H12C5.4 32 0 37.4 0 44v28c0 6.6 5.4 12 12 12z\"]\n};\nvar faArrowLeft = {\n prefix: 'far',\n iconName: 'arrow-left',\n icon: [448, 512, [], \"f060\", \"M229.9 473.899l19.799-19.799c4.686-4.686 4.686-12.284 0-16.971L94.569 282H436c6.627 0 12-5.373 12-12v-28c0-6.627-5.373-12-12-12H94.569l155.13-155.13c4.686-4.686 4.686-12.284 0-16.971L229.9 38.101c-4.686-4.686-12.284-4.686-16.971 0L3.515 247.515c-4.686 4.686-4.686 12.284 0 16.971L212.929 473.9c4.686 4.686 12.284 4.686 16.971-.001z\"]\n};\nvar faArrowRight = {\n prefix: 'far',\n iconName: 'arrow-right',\n icon: [448, 512, [], \"f061\", \"M218.101 38.101L198.302 57.9c-4.686 4.686-4.686 12.284 0 16.971L353.432 230H12c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h341.432l-155.13 155.13c-4.686 4.686-4.686 12.284 0 16.971l19.799 19.799c4.686 4.686 12.284 4.686 16.971 0l209.414-209.414c4.686-4.686 4.686-12.284 0-16.971L235.071 38.101c-4.686-4.687-12.284-4.687-16.97 0z\"]\n};\nvar faArrowSquareDown = {\n prefix: 'far',\n iconName: 'arrow-square-down',\n icon: [448, 512, [], \"f339\", \"M353.9 266.9L232.5 388.3c-4.7 4.7-12.3 4.7-17 0L94.1 266.9c-4.7-4.7-4.7-12.3 0-17l19.6-19.6c4.8-4.8 12.5-4.7 17.2.2l67.1 70.3V140c0-6.6 5.4-12 12-12h28c6.6 0 12 5.4 12 12v160.8l67.1-70.3c4.7-4.9 12.4-5 17.2-.2l19.6 19.6c4.7 4.7 4.7 12.3 0 17zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faArrowSquareLeft = {\n prefix: 'far',\n iconName: 'arrow-square-left',\n icon: [448, 512, [], \"f33a\", \"M213.1 385.9L91.7 264.5c-4.7-4.7-4.7-12.3 0-17l121.4-121.4c4.7-4.7 12.3-4.7 17 0l19.6 19.6c4.8 4.8 4.7 12.5-.2 17.2L179.2 230H340c6.6 0 12 5.4 12 12v28c0 6.6-5.4 12-12 12H179.2l70.3 67.1c4.9 4.7 5 12.4.2 17.2l-19.6 19.6c-4.7 4.7-12.3 4.7-17 0zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faArrowSquareRight = {\n prefix: 'far',\n iconName: 'arrow-square-right',\n icon: [448, 512, [], \"f33b\", \"M234.9 126.1l121.4 121.4c4.7 4.7 4.7 12.3 0 17L234.9 385.9c-4.7 4.7-12.3 4.7-17 0l-19.6-19.6c-4.8-4.8-4.7-12.5.2-17.2l70.3-67.1H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h160.8l-70.3-67.1c-4.9-4.7-5-12.4-.2-17.2l19.6-19.6c4.7-4.7 12.3-4.7 17 0zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faArrowSquareUp = {\n prefix: 'far',\n iconName: 'arrow-square-up',\n icon: [448, 512, [], \"f33c\", \"M94.1 245.1l121.4-121.4c4.7-4.7 12.3-4.7 17 0l121.4 121.4c4.7 4.7 4.7 12.3 0 17l-19.6 19.6c-4.8 4.8-12.5 4.7-17.2-.2L250 211.2V372c0 6.6-5.4 12-12 12h-28c-6.6 0-12-5.4-12-12V211.2l-67.1 70.3c-4.7 4.9-12.4 5-17.2.2l-19.6-19.6c-4.7-4.7-4.7-12.3 0-17zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faArrowToBottom = {\n prefix: 'far',\n iconName: 'arrow-to-bottom',\n icon: [384, 512, [], \"f33d\", \"M348.5 232.1l-148 148.4c-4.7 4.7-12.3 4.7-17 0l-148-148.4c-4.7-4.7-4.7-12.3 0-17l19.6-19.6c4.8-4.8 12.5-4.7 17.1.2l93.7 97.1V44c0-6.6 5.4-12 12-12h28c6.6 0 12 5.4 12 12v248.8l93.7-97.1c4.7-4.8 12.4-4.9 17.1-.2l19.6 19.6c4.9 4.7 4.9 12.3.2 17zM372 428H12c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12z\"]\n};\nvar faArrowToLeft = {\n prefix: 'far',\n iconName: 'arrow-to-left',\n icon: [448, 512, [], \"f33e\", \"M247.9 412.5l-148.4-148c-4.7-4.7-4.7-12.3 0-17l148.4-148c4.7-4.7 12.3-4.7 17 0l19.6 19.6c4.8 4.8 4.7 12.5-.2 17.1L187.2 230H436c6.6 0 12 5.4 12 12v28c0 6.6-5.4 12-12 12H187.2l97.1 93.7c4.8 4.7 4.9 12.4.2 17.1l-19.6 19.6c-4.7 4.8-12.3 4.8-17 .1zM52 436V76c0-6.6-5.4-12-12-12H12C5.4 64 0 69.4 0 76v360c0 6.6 5.4 12 12 12h28c6.6 0 12-5.4 12-12z\"]\n};\nvar faArrowToRight = {\n prefix: 'far',\n iconName: 'arrow-to-right',\n icon: [448, 512, [], \"f340\", \"M200.1 99.5l148.4 148c4.7 4.7 4.7 12.3 0 17l-148.4 148c-4.7 4.7-12.3 4.7-17 0l-19.6-19.6c-4.8-4.8-4.7-12.5.2-17.1l97.1-93.7H12c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h248.8l-97.1-93.7c-4.8-4.7-4.9-12.4-.2-17.1l19.6-19.6c4.7-4.9 12.3-4.9 17-.2zM396 76v360c0 6.6 5.4 12 12 12h28c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12h-28c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowToTop = {\n prefix: 'far',\n iconName: 'arrow-to-top',\n icon: [384, 512, [], \"f341\", \"M35.5 279.9l148-148.4c4.7-4.7 12.3-4.7 17 0l148 148.4c4.7 4.7 4.7 12.3 0 17l-19.6 19.6c-4.8 4.8-12.5 4.7-17.1-.2L218 219.2V468c0 6.6-5.4 12-12 12h-28c-6.6 0-12-5.4-12-12V219.2l-93.7 97.1c-4.7 4.8-12.4 4.9-17.1.2l-19.6-19.6c-4.8-4.7-4.8-12.3-.1-17zM12 84h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12H12C5.4 32 0 37.4 0 44v28c0 6.6 5.4 12 12 12z\"]\n};\nvar faArrowUp = {\n prefix: 'far',\n iconName: 'arrow-up',\n icon: [448, 512, [], \"f062\", \"M6.101 261.899L25.9 281.698c4.686 4.686 12.284 4.686 16.971 0L198 126.568V468c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12V126.568l155.13 155.13c4.686 4.686 12.284 4.686 16.971 0l19.799-19.799c4.686-4.686 4.686-12.284 0-16.971L232.485 35.515c-4.686-4.686-12.284-4.686-16.971 0L6.101 244.929c-4.687 4.686-4.687 12.284 0 16.97z\"]\n};\nvar faArrows = {\n prefix: 'far',\n iconName: 'arrows',\n icon: [512, 512, [], \"f047\", \"M360.549 412.216l-96.064 96.269c-4.686 4.686-12.284 4.686-16.971 0l-96.064-96.269c-4.686-4.686-4.686-12.284 0-16.971l19.626-19.626c4.753-4.753 12.484-4.675 17.14.173L230 420.78h2V280H91.22v2l44.986 41.783c4.849 4.656 4.927 12.387.173 17.14l-19.626 19.626c-4.686 4.686-12.284 4.686-16.971 0L3.515 264.485c-4.686-4.686-4.686-12.284 0-16.971l96.269-96.064c4.686-4.686 12.284-4.686 16.97 0l19.626 19.626c4.753 4.753 4.675 12.484-.173 17.14L91.22 230v2H232V91.22h-2l-41.783 44.986c-4.656 4.849-12.387 4.927-17.14.173l-19.626-19.626c-4.686-4.686-4.686-12.284 0-16.971l96.064-96.269c4.686-4.686 12.284-4.686 16.971 0l96.064 96.269c4.686 4.686 4.686 12.284 0 16.971l-19.626 19.626c-4.753 4.753-12.484 4.675-17.14-.173L282 91.22h-2V232h140.78v-2l-44.986-41.783c-4.849-4.656-4.927-12.387-.173-17.14l19.626-19.626c4.686-4.686 12.284-4.686 16.971 0l96.269 96.064c4.686 4.686 4.686 12.284 0 16.971l-96.269 96.064c-4.686 4.686-12.284 4.686-16.971 0l-19.626-19.626c-4.753-4.753-4.675-12.484.173-17.14L420.78 282v-2H280v140.78h2l41.783-44.986c4.656-4.849 12.387-4.927 17.14-.173l19.626 19.626c4.687 4.685 4.687 12.283 0 16.969z\"]\n};\nvar faArrowsAlt = {\n prefix: 'far',\n iconName: 'arrows-alt',\n icon: [512, 512, [], \"f0b2\", \"M276 236.075h115.85v-76.15c0-10.691 12.926-16.045 20.485-8.485l96.149 96.149c4.686 4.686 4.686 12.284 0 16.971l-96.149 96.149c-7.56 7.56-20.485 2.206-20.485-8.485v-76.149H275.999v115.776h76.15c10.691 0 16.045 12.926 8.485 20.485l-96.149 96.15c-4.686 4.686-12.284 4.686-16.971 0l-96.149-96.149c-7.56-7.56-2.206-20.485 8.485-20.485H236V276.075H120.149v76.149c0 10.691-12.926 16.045-20.485 8.485L3.515 264.56c-4.686-4.686-4.686-12.284 0-16.971l96.149-96.149c7.56-7.56 20.485-2.206 20.485 8.485v76.15H236V120.15h-76.149c-10.691 0-16.045-12.926-8.485-20.485l96.149-96.149c4.686-4.686 12.284-4.686 16.971 0l96.149 96.149c7.56 7.56 2.206 20.485-8.485 20.485H276v115.925z\"]\n};\nvar faArrowsAltH = {\n prefix: 'far',\n iconName: 'arrows-alt-h',\n icon: [512, 512, [], \"f337\", \"M508.485 247.515l-99.03-99.029c-7.56-7.56-20.485-2.206-20.485 8.485V228H123.03v-71.03c0-10.691-12.926-16.045-20.485-8.485l-99.03 99.029c-4.686 4.686-4.686 12.284 0 16.971l99.03 99.029c7.56 7.56 20.485 2.206 20.485-8.485V284h265.941v71.03c0 10.691 12.926 16.045 20.485 8.485l99.03-99.029c4.686-4.687 4.686-12.285-.001-16.971z\"]\n};\nvar faArrowsAltV = {\n prefix: 'far',\n iconName: 'arrows-alt-v',\n icon: [256, 512, [], \"f338\", \"M227.03 388.97H156V123.03h71.03c10.691 0 16.045-12.926 8.485-20.485l-99.029-99.03c-4.686-4.686-12.284-4.686-16.971 0l-99.029 99.03c-7.56 7.56-2.206 20.485 8.485 20.485H100v265.94H28.97c-10.691 0-16.045 12.926-8.485 20.485l99.029 99.03c4.686 4.686 12.284 4.686 16.971 0l99.029-99.03c7.56-7.559 2.206-20.485-8.484-20.485z\"]\n};\nvar faArrowsH = {\n prefix: 'far',\n iconName: 'arrows-h',\n icon: [512, 512, [], \"f07e\", \"M347.404 142.86c-4.753 4.753-4.675 12.484.173 17.14l73.203 70H91.22l73.203-70c4.849-4.656 4.927-12.387.173-17.14l-19.626-19.626c-4.686-4.686-12.284-4.686-16.971 0L3.515 247.515c-4.686 4.686-4.686 12.284 0 16.971L128 388.766c4.686 4.686 12.284 4.686 16.971 0l19.626-19.626c4.753-4.753 4.675-12.484-.173-17.14L91.22 282h329.56l-73.203 70c-4.849 4.656-4.927 12.387-.173 17.14l19.626 19.626c4.686 4.686 12.284 4.686 16.971 0l124.485-124.281c4.686-4.686 4.686-12.284 0-16.971L384 123.234c-4.686-4.686-12.284-4.686-16.971 0l-19.625 19.626z\"]\n};\nvar faArrowsV = {\n prefix: 'far',\n iconName: 'arrows-v',\n icon: [320, 512, [], \"f07d\", \"M273.1 347.4c-4.8-4.8-12.5-4.7-17.1.2l-70 73.2V91.2l70 73.2c4.7 4.8 12.4 4.9 17.1.2l19.6-19.6c4.7-4.7 4.7-12.3 0-17L168.5 3.5c-4.7-4.7-12.3-4.7-17 0L27.2 128c-4.7 4.7-4.7 12.3 0 17l19.6 19.6c4.8 4.8 12.5 4.7 17.1-.2l70-73.2v329.6l-70-73.2c-4.7-4.8-12.4-4.9-17.1-.2L27.2 367c-4.7 4.7-4.7 12.3 0 17l124.3 124.5c4.7 4.7 12.3 4.7 17 0L292.8 384c4.7-4.7 4.7-12.3 0-17l-19.7-19.6z\"]\n};\nvar faAssistiveListeningSystems = {\n prefix: 'far',\n iconName: 'assistive-listening-systems',\n icon: [512, 512, [], \"f2a2\", \"M189.149 512c-13.255 0-24-10.745-24-24s10.745-24 24-24c36.393 0 66-30.016 66-66.909l.002-.334C256.157 324.62 328 312.824 328 264c0-66.918-53.497-120-120-120-66.38 0-120 52.95-120 120 0 13.255-10.745 24-24 24s-24-10.745-24-24c0-93.338 74.866-168 168-168 92.97 0 168 74.484 168 168 0 74.659-72.099 87.835-72.851 133.282-.106 63.272-51.205 114.718-114 114.718zM296 264c0-48.523-39.477-88-88-88s-88 39.477-88 88c0 13.255 10.745 24 24 24s24-10.745 24-24c0-22.056 17.944-40 40-40s40 17.944 40 40c0 13.255 10.745 24 24 24s24-10.745 24-24zm130.99-71c11.94-5.755 16.955-20.1 11.2-32.04-17.206-35.699-42.929-67.404-74.385-91.688-10.495-8.099-25.564-6.16-33.664 4.333s-6.16 25.563 4.332 33.664c25.581 19.748 46.493 45.521 60.477 74.532 5.759 11.946 20.109 16.951 32.04 11.199zm71.404-35.37c11.945-5.744 16.974-20.083 11.23-32.029-23.882-49.678-55.813-90.241-94.916-120.565-10.475-8.122-25.549-6.218-33.674 4.258-8.122 10.474-6.216 25.55 4.258 33.673 33.17 25.723 60.443 60.522 81.073 103.432 5.744 11.949 20.084 16.972 32.029 11.231zM208 280c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 64c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zM24 464c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm104.971-16.971l-64-64L31.03 416.97l64 64 33.941-33.941z\"]\n};\nvar faAsterisk = {\n prefix: 'far',\n iconName: 'asterisk',\n icon: [512, 512, [], \"f069\", \"M479.31 357.216L303.999 256l175.31-101.215c5.74-3.314 7.706-10.653 4.392-16.392l-12-20.785c-3.314-5.74-10.653-7.706-16.392-4.392L280 214.431V12c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v202.431L56.69 113.215c-5.74-3.314-13.079-1.347-16.392 4.392l-12 20.785c-3.314 5.74-1.347 13.079 4.392 16.392L208 256 32.69 357.216c-5.74 3.314-7.706 10.653-4.392 16.392l12 20.784c3.314 5.739 10.653 7.706 16.392 4.392L232 297.569V500c0 6.627 5.373 12 12 12h24c6.627 0 12-5.373 12-12V297.569l175.31 101.215c5.74 3.314 13.078 1.347 16.392-4.392l12-20.784c3.314-5.739 1.347-13.079-4.392-16.392z\"]\n};\nvar faAt = {\n prefix: 'far',\n iconName: 'at',\n icon: [512, 512, [], \"f1fa\", \"M504 232C504 95.751 394.053 8 256 8 118.94 8 8 118.919 8 256c0 137.059 110.919 248 248 248 52.926 0 104.681-17.079 147.096-48.321 5.501-4.052 6.423-11.924 2.095-17.211l-15.224-18.597c-4.055-4.954-11.249-5.803-16.428-2.041C339.547 442.517 298.238 456 256 456c-110.28 0-200-89.72-200-200S145.72 56 256 56c109.469 0 200 65.02 200 176 0 63.106-42.478 98.29-83.02 98.29-19.505 0-20.133-12.62-16.366-31.463l28.621-148.557c1.426-7.402-4.245-14.27-11.783-14.27h-39.175a12.005 12.005 0 0 0-11.784 9.735c-1.102 5.723-1.661 8.336-2.28 13.993-11.923-19.548-35.878-31.068-65.202-31.068C183.412 128.66 120 191.149 120 281.53c0 61.159 32.877 102.11 93.18 102.11 29.803 0 61.344-16.833 79.749-42.239 4.145 30.846 28.497 38.01 59.372 38.01C451.467 379.41 504 315.786 504 232zm-273.9 97.35c-28.472 0-45.47-19.458-45.47-52.05 0-57.514 39.56-93.41 74.61-93.41 30.12 0 45.471 21.532 45.471 51.58 0 46.864-33.177 93.88-74.611 93.88z\"]\n};\nvar faAtlas = {\n prefix: 'far',\n iconName: 'atlas',\n icon: [448, 512, [], \"f558\", \"M224 320c66.28 0 120-53.73 120-120 0-66.28-53.72-120-120-120-66.27 0-120 53.72-120 120 0 66.27 53.73 120 120 120zm86.38-136h-34.59c-1.39-23.68-5.75-44.99-12.27-62.19 24.05 12.21 41.81 34.87 46.86 62.19zm-34.59 32h34.59c-5.05 27.32-22.82 49.98-46.86 62.19 6.53-17.21 10.88-38.51 12.27-62.19zM224 114.24c6.91 8.37 17.51 32.39 19.96 69.76h-39.93c2.46-37.37 13.06-61.39 19.97-69.76zM243.96 216c-2.45 37.37-13.05 61.39-19.96 69.76-6.91-8.37-17.51-32.39-19.96-69.76h39.92zm-59.49-94.19c-6.52 17.2-10.87 38.51-12.27 62.19h-34.59c5.06-27.32 22.82-49.98 46.86-62.19zM172.21 216c1.4 23.68 5.75 44.98 12.27 62.19-24.04-12.21-41.8-34.87-46.86-62.19h34.59zM448 384V16c0-8.8-7.2-16-16-16H80C35.8 0 0 35.8 0 80v352c0 44.2 35.8 80 80 80h352c8.8 0 16-7.2 16-16v-16c0-7.8-5.6-14.3-12.9-15.7-4.2-13-4.2-51.6 0-64.6 7.4-1.5 12.9-7.9 12.9-15.7zm-54 80H80c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h314c-2.7 17.3-2.7 46.7 0 64zm6-112H80c-11.4 0-22.2 2.4-32 6.7V80c0-17.7 14.3-32 32-32h320v304z\"]\n};\nvar faAtom = {\n prefix: 'far',\n iconName: 'atom',\n icon: [448, 512, [], \"f5d2\", \"M223.96093,224a32,32,0,1,0,32.01344,32A32.06712,32.06712,0,0,0,223.96093,224ZM439.1941,128c-15.5457-27.73828-49.52629-41.332-93.10817-41.33008a243.233,243.233,0,0,0-28.21981,1.94336C295.08477,34.42578,261.52418,0,224,0s-71.08477,34.42383-93.86612,88.61133a243.21832,243.21832,0,0,0-28.21981-1.94141C58.34,86.67188,24.3477,100.26562,8.8059,128c-18.75525,33.4668-6.61444,80.59766,27.51656,127.99805C2.19146,303.39844-9.94935,350.5332,8.8059,384c15.5457,27.73633,49.52629,41.33008,93.10817,41.33008a243.233,243.233,0,0,0,28.21981-1.94336C152.91523,477.57422,186.47582,512,224,512s71.08477-34.42578,93.86612-88.61328a243.233,243.233,0,0,0,28.21981,1.94336c43.57407,0,77.56637-13.59766,93.10817-41.33008,18.75525-33.4668,6.61444-80.60156-27.51656-128.00195C445.80854,208.59766,457.94935,161.4668,439.1941,128ZM224,48c14.38534,0,32.158,18.14844,47.09227,49.95508A406.60211,406.60211,0,0,0,224,114.166a406.74553,406.74553,0,0,0-47.09031-16.21485C191.844,66.14648,209.61466,48,224,48ZM101.91407,377.33008c-26.55349,0-46.76994-6.64063-52.75927-17.33008-7.15361-12.76367-.47274-37.64453,18.54623-66.66211a421.10486,421.10486,0,0,0,36.99674,33.623,441.83594,441.83594,0,0,0,9.61888,49.20312C110.24757,376.42773,105.823,377.33008,101.91407,377.33008Zm2.7837-192.291a421.13793,421.13793,0,0,0-36.9987,33.62305C48.6801,189.64453,42.00119,164.76367,49.15284,152c5.99129-10.6875,26.21164-17.33008,52.773-17.332,3.90693,0,8.32763.90234,12.3928,1.166A441.86723,441.86723,0,0,0,104.69777,185.03906ZM224,464c-14.38534,0-32.158-18.14844-47.09227-49.95508A406.60211,406.60211,0,0,0,224,397.834a406.72488,406.72488,0,0,0,47.09031,16.2129C256.15605,445.85352,238.38534,464,224,464Zm-.03907-112a96,96,0,1,1,96.01689-96A96.0082,96.0082,0,0,1,223.96093,352Zm174.88623,8c-5.99129,10.68945-26.20774,17.33008-52.76123,17.33008-3.9089,0-8.3335-.90235-12.40258-1.166a441.83594,441.83594,0,0,0,9.61888-49.20312,421.13793,421.13793,0,0,0,36.9987-33.623C399.3199,322.35547,405.99881,347.23633,398.84716,360ZM380.299,218.66211a421.10486,421.10486,0,0,0-36.99674-33.62305,441.30414,441.30414,0,0,0-9.61888-49.20312c4.071-.26367,8.49759-1.168,12.40844-1.168,26.54959,0,46.76408,6.64258,52.75341,17.332C405.99881,164.76367,399.31794,189.64453,380.299,218.66211Z\"]\n};\nvar faAtomAlt = {\n prefix: 'far',\n iconName: 'atom-alt',\n icon: [448, 512, [], \"f5d3\", \"M397.88114,255.83232c53.65542,83.42019,66.68647,161.24674,27.09333,200.80844-61.06155,60.95189-182.77841-15.32781-200.96563-26.99945C205.88412,441.26607,84.04227,517.6239,23.012,456.64076c-39.56188-39.5617-26.53083-117.40388,27.09333-200.80844C-3.55012,172.41213-16.54992,94.57,23.012,55.02388,62.6676,15.4778,140.54139,28.50879,224.00884,82.07021c83.43621-53.59267,161.3725-66.63928,200.96563-27.04633C464.56761,94.57,451.53656,172.41213,397.88114,255.83232ZM80.69857,213.2863A619.57734,619.57734,0,0,1,181.447,112.61646C139.6664,88.617,79.32359,66.69552,56.98019,88.96069,40.23045,105.69473,46.41785,153.61564,80.69857,213.2863ZM181.5095,398.92318A610.36594,610.36594,0,0,1,80.69857,298.34709C46.41785,358.03338,40.23045,405.93866,56.98019,422.6727,73.79243,439.39111,121.79168,433.20373,181.5095,398.92318ZM338.94456,255.83232a552.289,552.289,0,0,0-114.967-115.357,551.74859,551.74859,0,0,0-114.93571,115.357c33.96822,45.71783,69.90516,81.42023,114.93571,114.84143C269.41439,337.00255,305.25758,301.17515,338.94456,255.83232Zm-82.905-.01563a32.04639,32.04639,0,1,1-32.03075-32.015A32.021,32.021,0,0,1,256.03959,255.81669Zm111.24828,42.5304A610.3659,610.3659,0,0,1,266.47693,398.92318c59.71782,34.29618,107.71708,40.48355,124.52932,23.74952C407.756,405.93866,401.59983,358.03338,367.28787,298.34709ZM266.53943,112.61646A619.36058,619.36058,0,0,1,367.28787,213.2863c34.312-59.67066,40.46812-107.59157,23.71838-124.32561C368.75659,66.78927,308.63253,88.44508,266.53943,112.61646Z\"]\n};\nvar faAudioDescription = {\n prefix: 'far',\n iconName: 'audio-description',\n icon: [512, 512, [], \"f29e\", \"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zm-212.541-63.861l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm-82.534-97.43l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zM331.2 160h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386 0-58.977-37.919-95.614-98.96-95.614zm-1.801 145.39h-14.523v-98.78h14.523c28.685 0 46.175 16.767 46.175 49.005 0 32.098-16.399 49.775-46.175 49.775z\"]\n};\nvar faAward = {\n prefix: 'far',\n iconName: 'award',\n icon: [448, 512, [], \"f559\", \"M446.34 433.21l-62.35-137.6c4.44-11.43 8.32-14.17 22.34-28.19a44.715 44.715 0 0 0 11.57-43.18c-8.29-30.95-8.3-26.65 0-57.62a44.721 44.721 0 0 0-11.57-43.18c-22.68-22.7-20.52-18.94-28.82-49.92a44.68 44.68 0 0 0-31.61-31.61c-30.96-8.29-27.22-6.13-49.9-28.81a44.714 44.714 0 0 0-43.19-11.58c-30.87 8.27-26.69 8.29-57.62 0A44.72 44.72 0 0 0 152 13.1c-22.66 22.66-18.93 20.51-49.9 28.81a44.68 44.68 0 0 0-31.61 31.61c-8.29 30.96-6.13 27.22-28.81 49.9-11.29 11.29-15.71 27.76-11.57 43.18 8.29 30.95 8.3 26.65 0 57.62a44.715 44.715 0 0 0 11.57 43.18c15.1 15.11 18.02 17.06 22.34 28.19L1.66 433.21c-5.96 13.15 4.85 27.44 20.45 27.44.29 0 .59-.01.88-.02l72.86-2.51 50.13 47.65C150.45 510 156.26 512 162 512c8.53 0 16.92-4.39 20.55-12.4L224 408.13l41.45 91.47c3.63 8.01 12.02 12.4 20.55 12.4 5.75 0 11.56-2 16.01-6.23l50.13-47.65 72.86 2.51c.3.01.59.02.88.02 15.6-.01 26.42-14.29 20.46-27.44zM153.73 446.9l-39.4-37.44-49.99 1.72 29.72-65.59c2.59 1.28 5.18 2.57 8.04 3.34 25.14 6.74 26.79 5.7 43.06 21.97 8.63 8.63 20.07 13.1 31.63 13.1 1.95 0 3.87-.55 5.81-.8l-28.87 63.7zm23.55-111.76c-22.02-22.08-33.74-24.8-60.92-32.09-11.34-42.3-17.04-45.88-39.4-68.24 11.51-42.93 7.89-49.38 0-78.79 30.96-30.96 31.22-37.69 39.41-68.24 29.09-7.78 37.07-8.22 68.25-39.4 42.62 11.42 49.19 7.94 78.79 0 21.29 21.29 25.65 27.98 68.24 39.4 11.34 42.3 17.04 45.88 39.4 68.25-11.33 42.3-8.19 48.26 0 78.81-21.29 21.29-27.98 25.66-39.4 68.25-26.27 7.04-38.28 9.44-60.93 32.09-31.14-18.18-67.02-15.45-93.44-.04zm176.51 75.01l-20.12-.69-39.4 37.44-28.87-63.7c1.94.26 3.86.8 5.81.8 11.55 0 23-4.47 31.63-13.1 16.41-16.41 17.81-15.2 43.06-21.97 2.85-.76 5.44-2.06 8.04-3.34l29.72 65.58-29.87-1.02zM320 192c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zm-96 48c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faAxe = {\n prefix: 'far',\n iconName: 'axe',\n icon: [640, 512, [], \"f6b2\", \"M525.74 160l-58.59-58.59 39.92-39.92c6.25-6.25 6.25-16.38 0-22.63L473.13 4.93c-6.25-6.25-16.38-6.25-22.63 0l-39.92 39.92-35.46-35.48C368.87 3.12 360.68 0 352.49 0s-16.38 3.12-22.63 9.37l-96.49 96.49c-12.5 12.5-12.5 32.76 0 45.25l35.47 35.47L4.69 450.74c-6.25 6.25-6.25 16.38 0 22.63l33.94 33.94c6.25 6.25 16.38 6.25 22.63 0l264.16-264.16L384 301.74V416h32c123.71 0 224-100.29 224-224v-32H525.74zM432 367.28v-85.42l-4.69-4.69-148.68-148.68 73.85-73.87 148.7 148.7 4.69 4.69h85.42c-7.64 84.3-74.98 151.64-159.29 159.27z\"]\n};\nvar faAxeBattle = {\n prefix: 'far',\n iconName: 'axe-battle',\n icon: [512, 512, [], \"f6b3\", \"M512 176.38c-3.73-68.04-31.19-128.82-73.55-171.67-3.19-3.23-7.04-4.7-10.83-4.7-7.08 0-13.96 5.14-16.01 13.66-4.69 19.52-30.54 106.3-131.61 106.3V80c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v39.96c-100.01 0-126.17-86.81-130.85-106.3C99.1 5.15 92.21 0 85.13 0c-3.79 0-7.64 1.48-10.83 4.7C28.71 50.83 0 117.62 0 192c0 74.38 28.71 141.17 74.31 187.3 3.19 3.22 7.04 4.7 10.83 4.7 7.08 0 13.96-5.14 16.01-13.66 4.69-19.5 30.84-106.3 130.85-106.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V264.03c101.07 0 126.91 86.78 131.61 106.3 2.05 8.52 8.93 13.66 16.01 13.66 3.79 0 7.64-1.48 10.83-4.7 42.36-42.85 69.82-103.63 73.55-171.67L496.73 192 512 176.38zM76.88 303.53C58.27 270.65 48.07 231.96 48.07 192c0-39.97 10.2-78.65 28.81-111.53 31.76 53.46 84.2 87.5 155.12 87.5v48.07c-70.69-.01-123.23 33.82-155.12 87.49zm385.16-78.3c-3.96 28.21-12.87 54.77-26.17 78.31-31.48-53.01-83.46-87.51-155.87-87.51v-48.07c71.15 0 123.69-33.33 155.87-87.5 13.29 23.54 22.21 50.1 26.17 78.31L429.56 192l32.48 33.23z\"]\n};\nvar faBaby = {\n prefix: 'far',\n iconName: 'baby',\n icon: [384, 512, [], \"f77c\", \"M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm135.6 56.2l42.8-30c14.5-10.1 18-30.1 7.8-44.6-10.1-14.5-30.1-18-44.6-7.8l-42.8 30c-58.9 41.3-138.9 41.3-197.8 0l-42.8-30c-14.5-10.2-34.5-6.6-44.6 7.8-10.2 14.5-6.7 34.4 7.8 44.6l42.8 30c17.4 12.2 36.2 21.4 55.6 28.5v40.2c-9.4 5.6-16 15.4-16 27.1v18.7c0 6.2 2.3 11.9 5.6 17L63 396c-9.1 11.4-9.3 27.5-.6 39.2l48 64c6.3 8.4 15.9 12.8 25.6 12.8 6.7 0 13.4-2.1 19.2-6.4 14.2-10.6 17-30.7 6.4-44.8l-33.1-44.2 18.3-22.9c11.3 9 25.2 14.2 39.8 14.2h11c14.6 0 28.5-5.2 39.8-14.2l18.3 22.9-33.1 44.2c-10.6 14.1-7.8 34.2 6.4 44.8 5.8 4.3 12.5 6.4 19.2 6.4 9.8 0 19.3-4.4 25.6-12.8l48-64c8.8-11.7 8.5-27.8-.6-39.2l-38.6-48.3c3.3-5.1 5.6-10.8 5.6-17V312c0-11.7-6.6-21.5-16-27.1v-40.2c19.3-7.1 38-16.3 55.4-28.5zM256 330.7l-35.9 35.9c-6 6-14.1 9.4-22.6 9.4h-11c-8.5 0-16.6-3.3-22.6-9.4L128 330.7V312h128v18.7z\"]\n};\nvar faBabyCarriage = {\n prefix: 'far',\n iconName: 'baby-carriage',\n icon: [512, 512, [], \"f77d\", \"M496 96h-40c-30.9 0-56 25.1-56 56v40H293.2L189.1 28.2C179.9 13.7 164.7 3.8 147.3.9c-17.2-2.8-34.4 1.6-47.5 12C41.1 59.8-.3 138.8 0 216c.2 50.1 17.6 99.5 60.3 138.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-72c0-4.4 3.6-8 8-8h40c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM129.8 50.4c3.5-2.7 7.5-2.5 9.7-2.2 3.8.6 7.3 2.8 9.2 5.7L236.3 192H49.4c6.5-54.7 35-105.4 80.4-141.6zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32zm-176-64c-90.4 0-165.2-56.1-174.9-128h349.8c-9.7 71.9-84.5 128-174.9 128z\"]\n};\nvar faBackpack = {\n prefix: 'far',\n iconName: 'backpack',\n icon: [448, 512, [], \"f5d4\", \"M320 80h-8V56c0-30.88-25.12-56-56-56h-64c-30.88 0-56 25.12-56 56v24h-8C57.31 80 0 137.31 0 208v240c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V208c0-70.69-57.31-128-128-128zM184 56c0-4.41 3.59-8 8-8h64c4.41 0 8 3.59 8 8v24h-80V56zm136 408H128v-64h192v64zm0-112H128v-32c0-17.67 14.33-32 32-32h128c17.67 0 32 14.33 32 32v32zm80 96c0 8.82-7.18 16-16 16h-16V320c0-44.11-35.89-80-80-80H160c-44.11 0-80 35.89-80 80v144H64c-8.82 0-16-7.18-16-16V208c0-44.11 35.89-80 80-80h192c44.11 0 80 35.89 80 80v240zm-96-288H144c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faBackspace = {\n prefix: 'far',\n iconName: 'backspace',\n icon: [640, 512, [], \"f55a\", \"M469.65 181.65l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0L384 222.06l-51.72-51.72c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L350.06 256l-51.72 51.72c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0L384 289.94l51.72 51.72c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L417.94 256l51.72-51.72c6.24-6.25 6.24-16.38-.01-22.63zM576 64H205.26C188.28 64 172 70.74 160 82.74L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm16 320c0 8.82-7.18 16-16 16H205.26c-4.27 0-8.29-1.66-11.31-4.69L54.63 256l139.31-139.31c3.02-3.02 7.04-4.69 11.31-4.69H576c8.82 0 16 7.18 16 16v256z\"]\n};\nvar faBackward = {\n prefix: 'far',\n iconName: 'backward',\n icon: [512, 512, [], \"f04a\", \"M267.5 281.2l192 159.4c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6L267.5 232c-15.3 12.8-15.3 36.4 0 49.2zM464 130.3V382L313 256.6l151-126.3zM11.5 281.2l192 159.4c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6L11.5 232c-15.3 12.8-15.3 36.4 0 49.2zM208 130.3V382L57 256.6l151-126.3z\"]\n};\nvar faBacon = {\n prefix: 'far',\n iconName: 'bacon',\n icon: [576, 512, [], \"f7e5\", \"M566.93 104.4L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.11c-29.75 78.82-89.55 94.67-98.72 98.08-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l96.14 95.49a30.73 30.73 0 0 0 21.71 8.9 31.05 31.05 0 0 0 18.47-6.08c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.26 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05zM83.14 413.53l-26.06-25.89c23.06-16.11 42.75-23.44 62.56-30.79 74.36-25.31 109.53-82.38 125.91-125.79l1-2.57c28-75.17 81.75-128 159.85-157.13 13.55-5 26.5-9.87 40.61-18.47l22.41 22.27c-13.09 7.23-25.26 11.84-37.73 16.55-28.28 10.6-57.57 21.59-97.35 61.37s-50.78 69.06-61.34 97.36c-9.88 26.27-19.16 51.06-54 85.95s-59.66 44.16-85.91 54c-15.82 5.9-31.95 12.1-49.95 23.14zm373.17-258.32C381.87 180.56 346.73 237.64 330.36 281l-.91 2.42c-28.06 75.28-81.86 128.18-159.9 157.25-13.51 5-26.43 9.84-40.51 18.41l-22.41-22.27c13-7.21 25.17-11.83 37.62-16.5 28.28-10.6 57.53-21.57 97.31-61.33s50.75-69 61.35-97.35c9.87-26.26 19.15-51.06 54.06-86s59.69-44.19 86-54c15.76-5.91 31.9-12.13 49.92-23.19l26.07 25.9c-23.12 16.18-42.82 23.51-62.65 30.87z\"]\n};\nvar faBacteria = {\n prefix: 'far',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4.1-9.27c3.79-1,7.52-2.19,11.45-2.84a82.48,82.48,0,0,0,34.29-14.38L333.56,186a17.76,17.76,0,1,0,23.92-26.27L347,150.21a81.46,81.46,0,0,0,10.67-46.93l13.63-4a17.73,17.73,0,1,0-10.15-34l-13.58,4a82.85,82.85,0,0,0-34.85-33.52l3.55-13.56a17.8,17.8,0,0,0-34.47-8.93l-3.48,13.31a83.77,83.77,0,0,0-16.79,1.09,288.11,288.11,0,0,0-31.8,7.38l-4-11.12a17.8,17.8,0,0,0-33.56,11.89l3.9,10.94a284.78,284.78,0,0,0-43.61,23.42l-7.06-9.42a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l7,9.32A285.14,285.14,0,0,0,89,126.42l-9.5-6.92a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77L68,155a283,283,0,0,0-23,43.68l-11.07-3.79a17.73,17.73,0,1,0-11.59,33.52l11.18,3.83a282,282,0,0,0-6.6,28.91,81.66,81.66,0,0,0-.71,19.51l-13.46,4a17.73,17.73,0,1,0,10.13,34l13.6-4a82.5,82.5,0,0,0,34.75,33.48l-3.57,13.7a17.81,17.81,0,0,0,34.48,8.92l3.52-13.48c1.11.05,2.24.28,3.35.28A82.81,82.81,0,0,0,152.62,345l9.73,10a17.77,17.77,0,0,0,25.56-24.7l-9.82-10.07a81.61,81.61,0,0,0,12.8-31.79,118.24,118.24,0,0,1,3.56-14.22l9.3,4.35a17.74,17.74,0,1,0,15.15-32.09l-9.27-4.33a118.71,118.71,0,0,1,35.11-34l4.11,9.28a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM143.5,281.92A35.81,35.81,0,0,1,108.11,312a36.45,36.45,0,0,1-6-.51A36,36,0,0,1,72.5,270.08,240.4,240.4,0,0,1,270.16,72.48a35.83,35.83,0,0,1,41.34,29.61,36,36,0,0,1-29.59,41.42A168.43,168.43,0,0,0,143.5,281.92Zm470.29-50.61,13.46-4a17.73,17.73,0,1,0-10.13-34l-13.6,4a82.39,82.39,0,0,0-34.76-33.47l3.58-13.71a17.81,17.81,0,0,0-34.48-8.91l-3.52,13.47c-1.11-.05-2.24-.28-3.35-.28a82.9,82.9,0,0,0-43.61,12.58l-9.73-10a17.77,17.77,0,0,0-25.56,24.7l9.82,10.07a81.67,81.67,0,0,0-12.8,31.79,118.24,118.24,0,0,1-3.56,14.22l-9.3-4.35a17.74,17.74,0,1,0-15.15,32.09l9.27,4.33a118.7,118.7,0,0,1-35.11,34l-4.11-9.28a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4.1,9.27c-3.79,1-7.52,2.19-11.45,2.84a82.43,82.43,0,0,0-34.29,14.38L306.44,326a17.77,17.77,0,1,0-23.92,26.28L293,361.79a81.46,81.46,0,0,0-10.67,46.93l-13.64,4a17.73,17.73,0,1,0,10.16,34l13.58-4a82.85,82.85,0,0,0,34.85,33.52l-3.55,13.56a17.8,17.8,0,0,0,34.47,8.93l3.48-13.31a83.77,83.77,0,0,0,16.79-1.09,285.86,285.86,0,0,0,31.8-7.38l4,11.12a17.8,17.8,0,0,0,33.56-11.89l-3.9-10.94a284.78,284.78,0,0,0,43.61-23.42l7.06,9.42a17.89,17.89,0,0,0,24.94,3.6A17.68,17.68,0,0,0,523.16,430l-7-9.33A285.14,285.14,0,0,0,551,385.58l9.5,6.92a17.76,17.76,0,1,0,21-28.63L572,357a283,283,0,0,0,23-43.68l11.07,3.79a17.73,17.73,0,1,0,11.59-33.52l-11.18-3.83a282,282,0,0,0,6.6-28.91A81.64,81.64,0,0,0,613.79,231.31ZM369.84,439.52a35.85,35.85,0,0,1-41.35-29.61,36,36,0,0,1,29.6-41.41A168.45,168.45,0,0,0,496.5,230.08,35.82,35.82,0,0,1,531.89,200a36.45,36.45,0,0,1,6,.51,36,36,0,0,1,29.58,41.42A240.39,240.39,0,0,1,369.84,439.52ZM112,224a16,16,0,1,0,16,16A16,16,0,0,0,112,224Zm96-96a16,16,0,1,0,16,16A16,16,0,0,0,208,128ZM400,384a16,16,0,1,0,16,16A16,16,0,0,0,400,384Z\"]\n};\nvar faBacterium = {\n prefix: 'far',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M511,102.93A23.76,23.76,0,0,0,481.47,87l-18.09,5.36a110.58,110.58,0,0,0-46.47-44.69l4.73-18.08a23.74,23.74,0,0,0-46-11.91L371,35.44a110.9,110.9,0,0,0-22.38,1.46,380.94,380.94,0,0,0-42.41,9.83L301,31.91a23.74,23.74,0,0,0-44.75,15.85l5.21,14.59a380,380,0,0,0-58.15,31.22L193.85,81a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l9.33,12.43a380.18,380.18,0,0,0-46.41,46.83L106,159.34a23.68,23.68,0,1,0-28,38.17l12.64,9.2A376.32,376.32,0,0,0,60,265l-14.76-5.06a23.65,23.65,0,1,0-15.47,44.69l14.91,5.12a377.91,377.91,0,0,0-8.8,38.53,109.1,109.1,0,0,0-.94,26l-18,5.31a23.64,23.64,0,0,0,13.51,45.31l18.12-5.36A110,110,0,0,0,95,464.14l-4.77,18.28a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7l4.69-18c1.48.05,3,.37,4.47.37a110.4,110.4,0,0,0,58.14-16.78l13,13.31a23.7,23.7,0,0,0,34.08-32.93l-13.09-13.43a109.15,109.15,0,0,0,17.06-42.38,155.49,155.49,0,0,1,4.75-19l12.4,5.8a23.66,23.66,0,1,0,20.19-42.79l-12.35-5.78a158.12,158.12,0,0,1,46.81-45.38l5.48,12.37a23.74,23.74,0,0,0,43.48-19.08l-5.47-12.36c5.05-1.36,10-2.92,15.27-3.79a109.9,109.9,0,0,0,45.72-19.17L444.75,248a23.69,23.69,0,1,0,31.88-35l-14-12.63a108.75,108.75,0,0,0,14.23-62.57L495,132.32A23.61,23.61,0,0,0,511,102.93ZM420.07,181.2a63.54,63.54,0,0,1-41.56,25.92,208.58,208.58,0,0,0-171.39,171.4,64,64,0,1,1-126.24-21A336.53,336.53,0,0,1,357.56,80.87,63.14,63.14,0,0,1,368.17,80c30.8,0,57.87,23,62.95,53.51A63.53,63.53,0,0,1,420.07,181.2ZM160,288a32,32,0,1,0,32,32A32,32,0,0,0,160,288Zm80-104a24,24,0,1,0,24,24A24,24,0,0,0,240,184Z\"]\n};\nvar faBadge = {\n prefix: 'far',\n iconName: 'badge',\n icon: [512, 512, [], \"f335\", \"M256 512c-36.2 0-68.2-18.6-86.7-46.7-33.1 6.8-68.7-2.6-94.3-28.3-25.6-25.6-35.1-61.4-28.3-94.3C18.7 324.3 0 292.3 0 256c0-36.2 18.6-68.2 46.7-86.7-6.8-32.8 2.6-68.7 28.3-94.3 25.6-25.6 61.4-35.1 94.3-28.3C187.7 18.7 219.7 0 256 0c36.3 0 68.2 18.7 86.7 46.7 32.8-6.8 68.7 2.6 94.3 28.3 25.6 25.6 35.1 61.4 28.3 94.3 27.9 18.3 46.7 50.2 46.7 86.7 0 36.2-18.6 68.2-46.7 86.7 6.8 32.8-2.6 68.7-28.3 94.3-25.6 25.6-61.2 35.1-94.3 28.3-18.4 27.9-50.3 46.7-86.7 46.7zm-61.2-108.2c6.5 17.4 15.9 60.2 61.2 60.2 43.9 0 53.5-39.6 61.2-60.2 30.5 13.8 57.8 27.3 85.8-.7 31-31 9.8-65.9.7-85.8 17.4-6.5 60.2-15.9 60.2-61.2 0-43.9-39.6-53.5-60.2-61.2 7.7-16.9 31.3-53.8-.7-85.8-31-31-65.9-9.8-85.8-.7C310.7 90.8 301.3 48 256 48c-43.9 0-53.5 39.6-61.2 60.2-16.9-7.7-53.8-31.3-85.8.7-31 31-9.8 65.9-.7 85.8-17.5 6.6-60.3 16-60.3 61.3 0 43.9 39.6 53.5 60.2 61.2-7.7 16.9-31.3 53.8.7 85.8 31 31 64.8 10.4 85.9.8z\"]\n};\nvar faBadgeCheck = {\n prefix: 'far',\n iconName: 'badge-check',\n icon: [512, 512, [], \"f336\", \"M332.73 178.37c-3.85-3.88-10.11-3.9-13.98-.06l-87.36 86.66-37.88-38.19c-3.84-3.88-10.11-3.9-13.98-.06l-23.4 23.21c-3.88 3.85-3.9 10.11-.06 13.98l68.05 68.6c3.85 3.88 10.11 3.9 13.98.06l117.78-116.83c3.88-3.85 3.9-10.11.06-13.98l-23.21-23.39zM512 256c0-36.5-18.8-68.4-46.7-86.7 6.8-32.9-2.7-68.7-28.3-94.3-25.6-25.7-61.5-35.1-94.3-28.3C324.2 18.7 292.3 0 256 0s-68.3 18.7-86.7 46.7C136.4 39.9 100.6 49.4 75 75c-25.7 25.6-35.1 61.5-28.3 94.3C18.6 187.8 0 219.8 0 256c0 36.3 18.7 68.3 46.7 86.7-6.8 32.9 2.7 68.7 28.3 94.3 25.6 25.7 61.2 35.1 94.3 28.3 18.5 28.1 50.5 46.7 86.7 46.7 36.4 0 68.3-18.8 86.7-46.7 33.1 6.8 68.7-2.7 94.3-28.3 25.7-25.6 35.1-61.5 28.3-94.3 28.1-18.5 46.7-50.5 46.7-86.7zm-108.3 61.3c9.1 19.9 30.3 54.8-.7 85.8-28 28-55.3 14.5-85.8.7-7.7 20.6-17.3 60.2-61.2 60.2-45.3 0-54.7-42.8-61.2-60.2-21.1 9.6-54.9 30.2-85.9-.8-32-32-8.4-68.9-.7-85.8C87.6 309.5 48 299.9 48 256c0-45.3 42.8-54.7 60.3-61.3-9.1-19.9-30.3-54.8.7-85.8 32-32 68.9-8.4 85.8-.7C202.5 87.6 212.1 48 256 48c45.3 0 54.7 42.8 61.2 60.4 19.9-9.1 54.8-30.3 85.8.7 32 32 8.4 68.9.7 85.8 20.6 7.7 60.2 17.3 60.2 61.2 0 45.3-42.8 54.7-60.2 61.2z\"]\n};\nvar faBadgeDollar = {\n prefix: 'far',\n iconName: 'badge-dollar',\n icon: [512, 512, [], \"f645\", \"M286.41 239.72l-50.07-14.3a8.46 8.46 0 0 1-6.12-8.11c0-4.64 3.78-8.42 8.44-8.42h32.78c3.6 0 7.08.77 10.26 2.22 4.8 2.21 10.37 1.71 14.11-2.03l17.52-17.52c5.27-5.27 4.67-14.28-1.55-18.38-9.5-6.27-20.35-10.11-31.78-11.46V144c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v17.56c-30.29 3.62-53.37 30.98-49.32 63.05 2.9 22.95 20.66 41.31 42.91 47.67l50.07 14.3a8.46 8.46 0 0 1 6.12 8.11c0 4.64-3.78 8.42-8.44 8.42h-32.78c-3.6 0-7.08-.77-10.26-2.22-4.8-2.21-10.37-1.71-14.11 2.03l-17.52 17.52c-5.27 5.27-4.67 14.28 1.55 18.38 9.5 6.27 20.35 10.11 31.78 11.46V368c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-17.56c30.29-3.62 53.37-30.98 49.32-63.05-2.9-22.95-20.66-41.31-42.91-47.67zM512 256c0-36.5-18.8-68.4-46.7-86.7 6.8-32.9-2.7-68.7-28.3-94.3-25.6-25.7-61.5-35.1-94.3-28.3C324.2 18.7 292.3 0 256 0s-68.3 18.7-86.7 46.7C136.4 39.9 100.6 49.4 75 75c-25.7 25.6-35.1 61.5-28.3 94.3C18.6 187.8 0 219.8 0 256c0 36.3 18.7 68.3 46.7 86.7-6.8 32.9 2.7 68.7 28.3 94.3 25.6 25.7 61.2 35.1 94.3 28.3 18.5 28.1 50.5 46.7 86.7 46.7 36.4 0 68.3-18.8 86.7-46.7 33.1 6.8 68.7-2.7 94.3-28.3 25.7-25.6 35.1-61.5 28.3-94.3 28.1-18.5 46.7-50.5 46.7-86.7zm-108.3 61.3c9.1 19.9 30.3 54.8-.7 85.8-28 28-55.3 14.5-85.8.7-7.7 20.6-17.3 60.2-61.2 60.2-45.3 0-54.7-42.8-61.2-60.2-21.1 9.6-54.9 30.2-85.9-.8-32-32-8.4-68.9-.7-85.8C87.6 309.5 48 299.9 48 256c0-45.3 42.8-54.7 60.3-61.3-9.1-19.9-30.3-54.8.7-85.8 32-32 68.9-8.4 85.8-.7C202.5 87.6 212.1 48 256 48c45.3 0 54.7 42.8 61.2 60.4 19.9-9.1 54.8-30.3 85.8.7 32 32 8.4 68.9.7 85.8 20.6 7.7 60.2 17.3 60.2 61.2 0 45.3-42.8 54.7-60.2 61.2z\"]\n};\nvar faBadgePercent = {\n prefix: 'far',\n iconName: 'badge-percent',\n icon: [512, 512, [], \"f646\", \"M341.65 181.65l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0L170.35 307.72c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l137.37-137.37c6.24-6.26 6.24-16.39-.01-22.64zM192 224c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm128 64c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm192-32c0-36.5-18.8-68.4-46.7-86.7 6.8-32.9-2.7-68.7-28.3-94.3-25.6-25.7-61.5-35.1-94.3-28.3C324.2 18.7 292.3 0 256 0s-68.3 18.7-86.7 46.7C136.4 39.9 100.6 49.4 75 75c-25.7 25.6-35.1 61.5-28.3 94.3C18.6 187.8 0 219.8 0 256c0 36.3 18.7 68.3 46.7 86.7-6.8 32.9 2.7 68.7 28.3 94.3 25.6 25.7 61.2 35.1 94.3 28.3 18.5 28.1 50.5 46.7 86.7 46.7 36.4 0 68.3-18.8 86.7-46.7 33.1 6.8 68.7-2.7 94.3-28.3 25.7-25.6 35.1-61.5 28.3-94.3 28.1-18.5 46.7-50.5 46.7-86.7zm-108.3 61.3c9.1 19.9 30.3 54.8-.7 85.8-28 28-55.3 14.5-85.8.7-7.7 20.6-17.3 60.2-61.2 60.2-45.3 0-54.7-42.8-61.2-60.2-21.1 9.6-54.9 30.2-85.9-.8-32-32-8.4-68.9-.7-85.8C87.6 309.5 48 299.9 48 256c0-45.3 42.8-54.7 60.3-61.3-9.1-19.9-30.3-54.8.7-85.8 32-32 68.9-8.4 85.8-.7C202.5 87.6 212.1 48 256 48c45.3 0 54.7 42.8 61.2 60.4 19.9-9.1 54.8-30.3 85.8.7 32 32 8.4 68.9.7 85.8 20.6 7.7 60.2 17.3 60.2 61.2 0 45.3-42.8 54.7-60.2 61.2z\"]\n};\nvar faBadgeSheriff = {\n prefix: 'far',\n iconName: 'badge-sheriff',\n icon: [512, 512, [], \"f8a2\", \"M440 320c-1.16 0-2.14.56-3.28.66L398.22 256l38.49-64.61c1.14.09 2.12.66 3.29.66a40 40 0 1 0-36.57-56h-76.55L285.5 66.48A39.55 39.55 0 0 0 296 40a40 40 0 0 0-80 0 39.55 39.55 0 0 0 10.59 26.62L185.28 136h-76.71A40 40 0 1 0 72 192c1.16 0 2.14-.56 3.28-.66l38.5 64.71-38.49 64.61c-1.14-.09-2.12-.66-3.29-.66a40 40 0 1 0 36.57 56h76.55l41.38 69.52A39.55 39.55 0 0 0 216 472a40 40 0 0 0 80 0 39.55 39.55 0 0 0-10.59-26.62L326.72 376h76.71A40 40 0 1 0 440 320zm-126.94 8a24 24 0 0 0-20.62 11.72l-36.53 61.36-36.5-61.35A24 24 0 0 0 198.78 328h-72l35.53-59.66a24 24 0 0 0 0-24.54L126.78 184h72.16a24 24 0 0 0 20.62-11.72l36.53-61.36 36.5 61.35A24 24 0 0 0 313.22 184h72l-35.53 59.66a24 24 0 0 0 0 24.54l35.53 59.8zM256 208a48 48 0 1 0 48 48 48 48 0 0 0-48-48z\"]\n};\nvar faBadgerHoney = {\n prefix: 'far',\n iconName: 'badger-honey',\n icon: [640, 512, [], \"f6b4\", \"M622.25 142.46c-25.64-14.52-42.75-26.42-70.68-45.37-14.21-9.64-29.74-18.01-44.88-24.55C493.37 66.79 479.4 64 465.45 64c-19.05 0-38.09 5.21-55.47 15.21C392.89 89.04 374.06 96 354.96 96H128C57.31 96 0 153.31 0 224v16c0 8.84 7.16 16 16 16h20.03c7.09 30.4 23.81 55.89 45.93 73.08l-12.39 33.03c-6.25 16.83-7.28 34.88-1.97 55.23l13.66 34.23c5.06 16.83 20.53 28.42 38.28 28.42h63.1c12.25 0 24.04-5.28 31.74-14.8 7.99-9.87 10.78-22.65 7.72-34.92l-12.72-34.14L231.14 352h55.08l19.18 95.86c3.75 18.62 20.22 32.14 39.22 32.14h62.66c11.73 0 23.07-4.82 30.79-13.65 8.23-9.42 11.56-21.95 9.14-34.19L421.77 304.9c52.93-31.81 91.06-46.85 119.35-54.67L560 288l23.06-46.11c22.4-2.82 32.95-2.82 40.79-19 7.32-15.11 16.16-35.79 16.16-47.62-.01-13.93-6.89-26.65-17.76-32.81zM128 144h226.96c25.67 0 52.24-7.8 78.97-23.19 10.02-5.77 20.92-8.81 31.53-8.81 7.65 0 15.12 1.55 22.22 4.62 24.46 10.56 33.51 18.62 48.47 27.38H460c-31.69 0-61.5 13.05-93.12 28.33l-100.62 61.02c-9.22 4.42-18.91 6.66-28.75 6.66H192c-36.94 0-71.81-43.97-78.58-94.63 4.73-.89 9.6-1.38 14.58-1.38zm456.67 49.32c-98.73 12.31-162.93 55.59-216.6 87.84 8.85 44.28 4.93 24.65 30.16 150.83h-47.05c-22.36-111.76-15.68-78.35-25.61-128H201.29c-30.77 62.39-23.89 48.44-44.13 89.49 7.88 21.15 5.08 13.63 14.35 38.51h-46.39l-11.69-29.3c-2.54-11.53-.77-18.78 1.07-23.73 14.89-39.67 8.33-22.19 24.81-66.12l-27.91-21.68c-14.08-10.94-24.25-27.3-28.63-46.08L74.12 208H49.61c4.22-20.73 16.66-38.34 33.55-49.88C94.18 216.67 135.67 272 192 272h45.5c14.69 0 29-3.3 43.94-10.55l100.66-61.02C408.91 187.56 435.03 176 460 176h16.81c1.91 9.06 9.56 16 19.19 16s17.29-6.94 19.19-16h80.45c-3.4 5.19-8.99 12.91-10.97 17.32z\"]\n};\nvar faBagsShopping = {\n prefix: 'far',\n iconName: 'bags-shopping',\n icon: [576, 512, [], \"f847\", \"M272 240a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-32h80v48h48v-64a32 32 0 0 0-32-32h-96V96a96 96 0 0 0-192 0v64H32a32 32 0 0 0-32 32v256a32 32 0 0 0 32 32h128v-48H48V208h80v32a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-32h96zm-96-80V96a48 48 0 0 1 96 0v64zm368 128H224a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zm-112 48a48 48 0 0 1-96 0zm96 128H240V336h48.3c1.57 47.4 35.8 89.12 83.07 95.19A96.12 96.12 0 0 0 480 336h48z\"]\n};\nvar faBahai = {\n prefix: 'far',\n iconName: 'bahai',\n icon: [512, 512, [], \"f666\", \"M496.25 202.52l-110-15.44 41.82-104.34c5.26-13.11-4.98-25.55-16.89-25.55-3.2 0-6.52.9-9.69 2.92L307.45 120l-34.1-107.18C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-3.18-2.02-6.5-2.92-9.69-2.92-11.91 0-22.15 12.43-16.89 25.55l41.82 104.34-110 15.44c-17.53 2.46-21.67 26.27-6.03 34.67l98.16 52.66-74.49 83.53c-10.92 12.25-1.72 30.93 13.28 30.93 1.32 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.16 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.55 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c1.39.3 2.75.45 4.07.45 15.01 0 24.2-18.69 13.28-30.93l-74.48-83.54 98.16-52.66c15.65-8.4 11.51-32.21-6.03-34.67zM369.02 322.05l13.99 15.69-20.39-4.44-59.48-12.96 2.25 61.67.77 21.14-12.81-16.7L256 337.74l-37.35 48.71-12.81 16.7.77-21.14 2.25-61.67-59.48 12.96-20.39 4.44 13.99-15.69 40.81-45.77-53.78-28.85-18.44-9.89 20.66-2.9 60.27-8.46-22.91-57.17-7.86-19.6 17.67 11.25 51.52 32.81 18.68-58.73 6.4-20.14 6.4 20.14 18.68 58.73 51.52-32.81 17.67-11.25-7.86 19.6-22.91 57.17 60.27 8.46 20.66 2.9-18.44 9.89-53.78 28.85 40.81 45.77z\"]\n};\nvar faBalanceScale = {\n prefix: 'far',\n iconName: 'balance-scale',\n icon: [640, 512, [], \"f24e\", \"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-8.83-17.65-25.89-26.49-42.95-26.49-17.04 0-34.08 8.82-42.92 26.49C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM83.24 265.13c11.4-22.65 26.02-51.69 44.46-89.1.03-.01.13-.03.29-.03l.02-.04c19.82 39.64 35.03 69.81 46.7 92.96 11.28 22.38 19.7 39.12 25.55 51.08H55.83c6.2-12.68 15.24-30.69 27.41-54.87zM528 464H344V155.93c27.42-8.67 48.59-31.36 54.39-59.93H528c8.84 0 16-7.16 16-16V64c0-8.84-7.16-16-16-16H393.25C380.89 19.77 352.79 0 320 0s-60.89 19.77-73.25 48H112c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h129.61c5.8 28.57 26.97 51.26 54.39 59.93V464H112c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM320 112c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm319.98 224c0-16.18 1.34-8.73-85.05-181.51-8.83-17.65-25.89-26.49-42.95-26.49-17.04 0-34.08 8.82-42.92 26.49-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zm-200.15-16c6.19-12.68 15.23-30.69 27.4-54.87 11.4-22.65 26.02-51.69 44.46-89.1.03-.01.13-.03.29-.03l.02-.04c19.82 39.64 35.03 69.81 46.7 92.96 11.28 22.38 19.7 39.12 25.55 51.08H439.83z\"]\n};\nvar faBalanceScaleLeft = {\n prefix: 'far',\n iconName: 'balance-scale-left',\n icon: [640, 512, [], \"f515\", \"M512 384c70.69 0 128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51C546.11 104.84 529.04 96 511.99 96c-17.04 0-34.08 8.82-42.92 26.49-87.13 174.26-85.05 165.84-85.05 181.51H384c0 44.18 57.31 80 128 80zm72.25-96H439.83c6.19-12.68 72-144 72.15-144l.02-.04c19.82 39.64 66.4 132.08 72.25 144.04zM130.36 178.35l131.29-43.93c9.28 9.95 21.06 17.31 34.34 21.51V496c0 8.84 7.16 16 16 16h216c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H344V155.93c29.77-9.42 51.76-35.54 55.15-67.52l125.71-42.06c8.38-2.8 12.9-11.87 10.1-20.25l-5.08-15.17c-2.8-8.38-11.87-12.9-20.25-10.1L389.47 41.04C375.76 16.66 349.96 0 320 0c-44.18 0-80 35.82-80 80 0 3.66.6 7.16 1.08 10.69l-125.95 42.14c-8.38 2.8-12.9 11.87-10.1 20.25l5.08 15.17c2.81 8.38 11.87 12.9 20.25 10.1zM288 80c0-17.64 14.36-32 32-32s32 14.36 32 32-14.36 32-32 32-32-14.35-32-32zM0 432c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51-8.83-17.65-25.89-26.49-42.95-26.49-17.04 0-34.08 8.82-42.92 26.49C-2.06 424.75.02 416.33.02 432H0zm55.83-16c6.19-12.68 53.43-106.56 71.87-143.97.03-.01.13-.03.29-.03l.02-.04c19.82 39.64 66.4 132.08 72.25 144.04H55.83z\"]\n};\nvar faBalanceScaleRight = {\n prefix: 'far',\n iconName: 'balance-scale-right',\n icon: [640, 512, [], \"f516\", \"M256 304h-.02c0-15.67 2.08-7.25-85.05-181.51C162.1 104.82 145.05 96 128.01 96c-17.06 0-34.12 8.84-42.95 26.49C-1.32 295.27.02 287.82.02 304H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 143.96l.02.04c.15 0 65.96 131.32 72.15 144H55.75c5.85-11.96 52.43-104.4 72.25-144.04zm401.89 24.29l5.08-15.17c2.8-8.38-1.72-17.45-10.1-20.25L398.92 90.69C399.4 87.16 400 83.66 400 80c0-44.18-35.82-80-80-80-29.96 0-55.76 16.66-69.47 41.04L130.36.83c-8.38-2.8-17.45 1.72-20.25 10.1l-5.08 15.17c-2.8 8.38 1.72 17.45 10.1 20.25l125.71 42.06c3.39 31.98 25.38 58.1 55.15 67.52V464H112c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h216c8.84 0 16-7.16 16-16V155.93c13.29-4.2 25.06-11.57 34.34-21.51l131.29 43.93c8.39 2.8 17.45-1.72 20.26-10.1zM320 112c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm319.98 320c0-15.67 2.08-7.25-85.05-181.51-8.84-17.67-25.88-26.5-42.92-26.49-17.06 0-34.12 8.84-42.95 26.49-86.38 172.78-85.04 165.33-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zm-200.23-16c5.85-11.96 52.43-104.4 72.25-144.04l.02.04c.15 0 .26.03.29.03 18.44 37.41 65.67 131.29 71.87 143.97H439.75z\"]\n};\nvar faBallPile = {\n prefix: 'far',\n iconName: 'ball-pile',\n icon: [576, 512, [], \"f77e\", \"M480 320c-10.4 0-20.3 2.1-29.7 5.2 18.2-17.5 29.7-41.9 29.7-69.2 0-53-43-96-96-96-10.4 0-20.3 2.1-29.7 5.2 18.3-17.5 29.7-42 29.7-69.2 0-53-43-96-96-96s-96 43-96 96c0 27.2 11.4 51.7 29.7 69.2-9.4-3.1-19.2-5.2-29.7-5.2-53 0-96 43-96 96 0 27.2 11.4 51.7 29.7 69.2-9.4-3.1-19.2-5.2-29.7-5.2-53 0-96 43-96 96s43 96 96 96 96-43 96-96c0-27.2-11.4-51.7-29.7-69.2 9.4 3.1 19.2 5.2 29.7 5.2s20.3-2.1 29.7-5.2c-18.3 17.5-29.7 42-29.7 69.2 0 53 43 96 96 96s96-43 96-96c0-27.2-11.4-51.7-29.7-69.2 9.4 3.1 19.2 5.2 29.7 5.2s20.3-2.1 29.7-5.2c-18.3 17.5-29.7 42-29.7 69.2 0 53 43 96 96 96s96-43 96-96-43-96-96-96zM288 48c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm29.7 277.2c-9.4-3.1-19.2-5.2-29.7-5.2s-20.3 2.1-29.7 5.2c18.2-17.5 29.7-41.9 29.7-69.2s-11.4-51.7-29.7-69.2c9.4 3.1 19.2 5.2 29.7 5.2s20.3-2.1 29.7-5.2c-18.3 17.5-29.7 42-29.7 69.2s11.4 51.7 29.7 69.2zM96 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm96-160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm96 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm96-160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm96 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faBallot = {\n prefix: 'far',\n iconName: 'ballot',\n icon: [448, 512, [], \"f732\", \"M200 408h144c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8zm-88 8h32c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm0-128h32c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm88-8h144c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8zm-88-120h32c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm88-8h144c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8zM416 0H32C14.3 0 0 14.3 0 32v448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32zm-16 464H48V48h352v416z\"]\n};\nvar faBallotCheck = {\n prefix: 'far',\n iconName: 'ballot-check',\n icon: [448, 512, [], \"f733\", \"M344 360H200c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8h144c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8zm-232 56h32c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm0-256h32c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm88-8h144c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8zM416 0H32C14.3 0 0 14.3 0 32v448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32zm-16 464H48V48h352v416zM134.6 286.4c2.1 2.1 5.5 2.1 7.6 0l64.2-63.6c2.1-2.1 2.1-5.5 0-7.6l-12.6-12.7c-2.1-2.1-5.5-2.1-7.6 0l-47.6 47.2-20.6-20.9c-2.1-2.1-5.5-2.1-7.6 0l-12.7 12.6c-2.1 2.1-2.1 5.5 0 7.6l36.9 37.4zM344 232H237.4c-1.9 5-4.6 9.7-8.5 13.5L194.2 280H344c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8z\"]\n};\nvar faBan = {\n prefix: 'far',\n iconName: 'ban',\n icon: [512, 512, [], \"f05e\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm141.421 106.579c73.176 73.175 77.05 187.301 15.964 264.865L132.556 98.615c77.588-61.105 191.709-57.193 264.865 15.964zM114.579 397.421c-73.176-73.175-77.05-187.301-15.964-264.865l280.829 280.829c-77.588 61.105-191.709 57.193-264.865-15.964z\"]\n};\nvar faBandAid = {\n prefix: 'far',\n iconName: 'band-aid',\n icon: [640, 512, [], \"f462\", \"M552 96H88c-48.5 0-88 39.5-88 88v144c0 48.5 39.5 88 88 88h464c48.5 0 88-39.5 88-88V184c0-48.5-39.5-88-88-88zM88 368c-22.1 0-40-17.9-40-40V184c0-22.1 17.9-40 40-40h104v224H88zm184-88c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-24-72c0-13.3 10.7-24 24-24s24 10.7 24 24-10.7 24-24 24-24-10.7-24-24zm96 96c0-13.3 10.7-24 24-24s24 10.7 24 24-10.7 24-24 24-24-10.7-24-24zm24-72c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm224 96c0 22.1-17.9 40-40 40H448V144h104c22.1 0 40 17.9 40 40v144z\"]\n};\nvar faBanjo = {\n prefix: 'far',\n iconName: 'banjo',\n icon: [512, 512, [], \"f8a3\", \"M502.63 39L473.05 9.37a32 32 0 0 0-45.26 0l-46.31 46.32A35.26 35.26 0 0 0 373 69.48L355.11 123l-62.88 62.87a166.32 166.32 0 0 0-73.54-31.2l-.51-.51a26.18 26.18 0 0 0-52.36 0v.46a166.32 166.32 0 0 0-72.32 29.84l-.23-.23a26.18 26.18 0 0 0-37 37l.23.22a166.31 166.31 0 0 0-29.84 72.34h-.46a26.18 26.18 0 0 0 0 52.36h.46a166.31 166.31 0 0 0 29.84 72.34l-.23.22a26.18 26.18 0 1 0 37 37l.23-.23a166.32 166.32 0 0 0 72.32 29.82v.46a26.18 26.18 0 0 0 52.36 0v-.46a166.32 166.32 0 0 0 72.32-29.82l.23.23a26.18 26.18 0 1 0 37-37l-.23-.22a166.31 166.31 0 0 0 29.84-72.34h.46a26.18 26.18 0 0 0 0-52.36l-.47-.07a166.12 166.12 0 0 0-31.19-73.91l63-63 53.35-17.78a35.26 35.26 0 0 0 13.79-8.53l46.32-46.31a32 32 0 0 0 .03-45.19zM192 440a120 120 0 1 1 120-120 120.13 120.13 0 0 1-120 120zm-41.38-131.31a16 16 0 0 0-22.63 0L116.68 320a16 16 0 0 0 0 22.63l52.69 52.68a16 16 0 0 0 22.63 0L203.31 384a16 16 0 0 0 0-22.63z\"]\n};\nvar faBarcode = {\n prefix: 'far',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z\"]\n};\nvar faBarcodeAlt = {\n prefix: 'far',\n iconName: 'barcode-alt',\n icon: [640, 512, [], \"f463\", \"M360 384h48c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8zm96 0h48c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8zm-160 0h16c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8zM592 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h544c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm0 464H48V48h544v416zm-456-80h48c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8zm96 0h16c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8z\"]\n};\nvar faBarcodeRead = {\n prefix: 'far',\n iconName: 'barcode-read',\n icon: [640, 512, [], \"f464\", \"M248 128h-16c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8zm-64 0h-48c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8zm-40 336H48v-96c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM16 160h16c8.8 0 16-7.2 16-16V48h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v128c0 8.8 7.2 16 16 16zm496 216V136c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8zM312 128h-16c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8zm312 224h-16c-8.8 0-16 7.2-16 16v96h-96c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm0-352H496c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h96v96c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM408 128h-48c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8z\"]\n};\nvar faBarcodeScan = {\n prefix: 'far',\n iconName: 'barcode-scan',\n icon: [640, 512, [], \"f465\", \"M632 232H8c-4.4 0-8 2.7-8 6v36c0 3.3 3.6 6 8 6h624c4.4 0 8-2.7 8-6v-36c0-3.3-3.6-6-8-6zM288 8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152h64V8zm96 0c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v152h32V8zm96 0c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152h64V8zM160 8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v152h96V8zm416 0c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152h64V8zm-64 496c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V352h-64v152zm-160 0c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V352h-32v152zm64 0c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V352h-64v152zm-192 0c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V352h-64v152zm-160 0c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V352H64v152z\"]\n};\nvar faBars = {\n prefix: 'far',\n iconName: 'bars',\n icon: [448, 512, [], \"f0c9\", \"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z\"]\n};\nvar faBaseball = {\n prefix: 'far',\n iconName: 'baseball',\n icon: [640, 512, [], \"f432\", \"M625.6 54.5l-16.7-22c-27.1-37-77.6-41.9-112.3-16.9L308.8 152.2c-48.1 34.7-92 73.3-131 117.8-54.8 62.6-106 101.2-135.6 122.5-8.4-9.8-23-11.3-33.2-3.3-10.3 8.3-12 23.4-3.7 33.7l64 80c7.8 9.8 22.9 12.4 33.8 3.7 9.3-7.5 11.2-20.4 5.4-30.4 29.1-21 81.9-56.6 156-87.9 54.7-23.1 106.5-52.2 154.6-86.9L605 166c35.9-25.9 46.7-75.9 20.6-111.5zm-547 383.4l-7.1-8.9c35.9-27 77.4-61.6 111.6-95.1l21.6 29.5c-42.8 21.5-89.1 49.1-126.1 74.5zM576 128.4L390.9 264c-75 52.8-136.4 76-161.7 87.6l-27.1-37.1c18.9-20.2 59.8-69.3 134.8-123.4L524.7 54.9c13.6-9.8 34.3-8.9 45.5 6.3l13 21.5c10.3 14.3 7.2 34-7.2 45.7zM512 320c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faBaseballBall = {\n prefix: 'far',\n iconName: 'baseball-ball',\n icon: [496, 512, [], \"f433\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM114 404c12-14.4 22.5-30 30.8-47.1l-26.8-13c-6.8 13.9-15.3 26.5-24.9 38.4-55.4-67.7-64.8-173.4 0-252.7 9.6 11.8 18.1 24.4 24.8 38.2l26.8-13.1c-8.3-17-18.7-32.5-30.7-46.8 73.3-66.4 188.4-72 268 0-12 14.3-22.4 29.9-30.7 47l26.8 13c6.8-13.9 15.3-26.5 24.8-38.3 55.8 68.3 64.4 173.9.1 252.7-9.6-11.8-18.1-24.4-24.9-38.3l-26.8 13.1c8.3 17 18.7 32.6 30.8 46.9-73.6 66.7-188.8 71.9-268.1 0zm42.7-76.5l-28.3-9.2c12.2-37.5 14-81.5-.1-124.7l28.3-9.2c16.3 50 14 100.4.1 143.1zm211-9.2l-28.3 9.2c-16.3-50-14-100.5-.1-143.1l28.3 9.2c-12.2 37.4-14 81.5.1 124.7z\"]\n};\nvar faBasketballBall = {\n prefix: 'far',\n iconName: 'basketball-ball',\n icon: [496, 512, [], \"f434\", \"M248 8C111 8 0 118.9 0 256c0 137.9 111.6 248 248 248 136.2 0 248-110 248-248C496 119 385.2 8 248 8zm-13.9 447.3c-38.9-2.7-77.1-16.7-109.4-42L248 290l43 43c-29.2 35.1-48.9 77.4-56.9 122.3zm91.5-87.7l45.7 45.7c-26.1 20.5-56.1 33.6-87.2 39.3 7.3-31.1 21.6-59.9 41.5-85zm34-33.9c25-20 53.9-34.2 85.1-41.5-5.8 31.9-19.2 61.7-39.4 87.3l-45.7-45.8zm87.7-91.6c-45 8.1-87.2 27.8-122.4 57l-43-43 123.3-123.4c24.8 31.4 39.4 69.2 42.1 109.4zM139 181c-25.8 20.6-55.8 35-88.1 42.1 5.5-33 19-63.9 39.8-90.4L139 181zm-14.3-82.3C151.1 77.9 182 64.4 215 58.9c-7.1 32.3-21.5 62.3-42.1 88.1l-48.2-48.3zm140.2-41.9c39.1 3.3 75.8 17.8 106.4 41.9L248 222.1l-40.4-40.4c29.7-35.8 49.6-78.9 57.3-124.9zM48.8 273c46-7.8 89.1-27.6 124.8-57.3l40.4 40.4L90.7 379.4C66.6 348.7 52.1 312 48.8 273z\"]\n};\nvar faBasketballHoop = {\n prefix: 'far',\n iconName: 'basketball-hoop',\n icon: [640, 512, [], \"f435\", \"M639.9 336.9c0 22.8-13.6 43.2-34.7 51.8l-103.5 42.5 3.8-53.4 81.4-33.5c3-1.2 5-4.2 5-7.4V218.6C509.1 1.6 133.4.7 48 218.7V337c0 3.3 2 6.2 5 7.4l81.4 33.5 3.8 53.4-103.5-42.5C13.6 380.1 0 359.8 0 336.9L1.2 207C1.8 205 68.7 8 320 8s318.1 197 318.8 199c1.6 10.2 1.1-8.5 1.1 129.9zM461.2 512l-75.4-71.6L320 512l-65.8-71.6-75.4 71.6-18.2-224H136c-4.4 0-8-3.6-8-8v-32c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v32c0 4.4-3.6 8-8 8h-24.6l-18.2 224zM206.7 352.4l46.7 43.6 44-44-42.1-42.1-48.6 42.5zm113.3-23l41.4-41.4h-82.8l41.4 41.4zm22.6 22.6l44 44 46.7-43.6-48.6-42.5-42.1 42.1zm104.7-64h-39l36.5 31.9 2.5-31.9zm-254.6 0l2.6 31.9 36.5-31.9h-39.1zm38.1 130.6l-29.9-27.9 4.3 53.5 25.6-25.6zm132.4-.8L320 374.6l-43.2 43.2 43.2 40.3 43.2-40.3zm71.6 26.4l4.3-53.5-29.9 27.9 25.6 25.6zM464 208v-80H176v80h32v-48h224v48h32z\"]\n};\nvar faBat = {\n prefix: 'far',\n iconName: 'bat',\n icon: [640, 512, [], \"f6b5\", \"M638.61 287.25L568.3 129.7c-5.47-12.27-17.85-19.4-30.67-19.4-5.81 0-11.71 1.46-17.1 4.57l-104.9 60.44L384 64l-58.12 48h-11.77L256 64l-31.62 111.3-104.9-60.44a34.122 34.122 0 0 0-17.1-4.57c-12.83 0-25.2 7.13-30.67 19.4L1.39 287.25c-4.91 10.99 3.9 22.34 15.21 22.34 1.75 0 3.55-.27 5.38-.85l16.48-5.28a69.085 69.085 0 0 1 21.07-3.29c21.83 0 42.85 10.33 55.46 28.51l38.4 55.32 12.31-11.82c13.11-12.59 30.14-18.75 47.08-18.75 20.13 0 40.15 8.69 53.36 25.6L320 448l53.86-68.97c13.21-16.91 33.23-25.6 53.36-25.6 16.95 0 33.98 6.16 47.09 18.75l12.3 11.82 38.41-55.33c12.61-18.17 33.63-28.51 55.46-28.51 7.02 0 14.13 1.07 21.07 3.29l16.48 5.28c1.82.58 3.63.85 5.38.85 11.3.01 20.11-11.34 15.2-22.33zM485.59 301.3l-10.08 14.51c-14.95-6.8-31.36-10.38-48.3-10.38-36.08 0-69.32 16.06-91.19 44.06L320 370.02l-16.03-20.53c-21.87-28-55.1-44.06-91.19-44.06-16.94 0-33.35 3.58-48.3 10.38l-10.07-14.51c-19.49-28.08-50.74-45.83-84.98-48.72l39.46-88.42 91.53 52.74 53.32 30.72 16.82-59.2 11.54-40.62 1.46 1.2 13.29 11h46.29l13.31-10.99 1.46-1.2 11.54 40.62 16.82 59.2 53.32-30.72 91.53-52.74 39.46 88.43c-34.25 2.87-65.49 20.62-84.99 48.7z\"]\n};\nvar faBath = {\n prefix: 'far',\n iconName: 'bath',\n icon: [512, 512, [], \"f2cd\", \"M496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l12,12a74,74,0,0,0,15.18,88A15.9,15.9,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a15.89,15.89,0,0,0-21.78-.56,74,74,0,0,0-88-15.18l-12-12A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H32v80a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16H96a16,16,0,0,0,16-16V478.39A95.87,95.87,0,0,0,128,480H384a95.87,95.87,0,0,0,16-1.61V496a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V304h16a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256ZM178,120.51c-5.93-5-10-12.1-10-20.51a28,28,0,0,1,28-28c8.46,0,15.58,4.08,20.58,10.07C205.07,93.75,192.62,106.2,178,120.51ZM432,384a48.05,48.05,0,0,1-48,48H128a48.05,48.05,0,0,1-48-48V304H432Z\"]\n};\nvar faBatteryBolt = {\n prefix: 'far',\n iconName: 'battery-bolt',\n icon: [640, 512, [], \"f376\", \"M445.394 223.522L304.616 469.519c-3.522 6.654-9.943 10.481-16.623 10.481-12.266 0-21.553-12.557-18.677-25.843l36.847-166.382h-94.961c-11.6 0-20.566-11.186-19.031-23.775l25.597-213.775C219.04 39.792 227.177 32 236.8 32h108.8c12.604 0 21.8 13.087 18.552 26.411L336.458 192h92.321c14.785 0 24.011 17.55 16.615 31.522zM48 144h110.197l5.747-48H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h180.604l10.63-48H48V144zm568 16h-8v-16c0-26.51-21.49-48-48-48H405.38l-9.951 48H560v64h32v96h-32v64H418.017l-27.469 48H560c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'far',\n iconName: 'battery-empty',\n icon: [640, 512, [], \"f244\", \"M560 144v64h32v96h-32v64H48V144h512m0-48H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z\"]\n};\nvar faBatteryFull = {\n prefix: 'far',\n iconName: 'battery-full',\n icon: [640, 512, [], \"f240\", \"M560 144v64h32v96h-32v64H48V144h512m0-48H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z\"]\n};\nvar faBatteryHalf = {\n prefix: 'far',\n iconName: 'battery-half',\n icon: [640, 512, [], \"f242\", \"M320 320H96V192h224v128zm240-176H48v224h512v-64h32v-96h-32v-64m0-48c26.51 0 48 21.49 48 48v16h8c13.255 0 24 10.745 24 24v144c0 13.255-10.745 24-24 24h-8v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V144c0-26.51 21.49-48 48-48h512z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'far',\n iconName: 'battery-quarter',\n icon: [640, 512, [], \"f243\", \"M224 320H96V192h128v128zm336-176H48v224h512v-64h32v-96h-32v-64m0-48c26.51 0 48 21.49 48 48v16h8c13.255 0 24 10.745 24 24v144c0 13.255-10.745 24-24 24h-8v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V144c0-26.51 21.49-48 48-48h512z\"]\n};\nvar faBatterySlash = {\n prefix: 'far',\n iconName: 'battery-slash',\n icon: [640, 512, [], \"f377\", \"M36 3.51A16 16 0 0 0 13.51 6l-10 12.49A16 16 0 0 0 6 41l598 467.49a16 16 0 0 0 22.49-2.49l10-12.49A16 16 0 0 0 634 471zM616 160h-8v-16a48 48 0 0 0-48-48H232.24l61.39 48H560v64h32v96h-32v48.25l44.18 34.53A47.74 47.74 0 0 0 608 368v-16h8a24 24 0 0 0 24-24V184a24 24 0 0 0-24-24zM48 368V134.74l-32.79-25.63A47.74 47.74 0 0 0 0 144v224a48 48 0 0 0 48 48h359.76l-61.39-48z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'far',\n iconName: 'battery-three-quarters',\n icon: [640, 512, [], \"f241\", \"M416 320H96V192h320v128zm144-176H48v224h512v-64h32v-96h-32v-64m0-48c26.51 0 48 21.49 48 48v16h8c13.255 0 24 10.745 24 24v144c0 13.255-10.745 24-24 24h-8v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V144c0-26.51 21.49-48 48-48h512z\"]\n};\nvar faBed = {\n prefix: 'far',\n iconName: 'bed',\n icon: [640, 512, [], \"f236\", \"M168 304c48.52 0 88-39.48 88-88s-39.48-88-88-88-88 39.48-88 88 39.48 88 88 88zm0-128c22.06 0 40 17.94 40 40s-17.94 40-40 40-40-17.94-40-40 17.94-40 40-40zm360-48H304c-8.84 0-16 7.16-16 16v192H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-48h544v48c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112zm64 208H336V176h192c35.29 0 64 28.71 64 64v96z\"]\n};\nvar faBedAlt = {\n prefix: 'far',\n iconName: 'bed-alt',\n icon: [512, 512, [], \"f8f7\", \"M80,160a32,32,0,0,1,32-32h96a32,32,0,0,1,32,32v32h32V160a32,32,0,0,1,32-32h96a32,32,0,0,1,32,32v32h48V64a32,32,0,0,0-32-32H64A32,32,0,0,0,32,64V192H80Zm368,64H64A64,64,0,0,0,0,288V464a16,16,0,0,0,16,16H32a16,16,0,0,0,16-16V416H464v48a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V288A64,64,0,0,0,448,224Zm16,144H48V288a16,16,0,0,1,16-16H448a16,16,0,0,1,16,16Z\"]\n};\nvar faBedBunk = {\n prefix: 'far',\n iconName: 'bed-bunk',\n icon: [576, 512, [], \"f8f8\", \"M152,144A72,72,0,1,0,80,72,72,72,0,0,0,152,144Zm0-96a24,24,0,1,1-24,24A24,24,0,0,1,152,48ZM464,0H272a16,16,0,0,0-16,16V160H48V16A16,16,0,0,0,32,0H16A16,16,0,0,0,0,16V496a16,16,0,0,0,16,16H32a16,16,0,0,0,16-16V464H528v32a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V128C576,50.14,525.88,0,464,0Zm64,416H304V304H464a64.07,64.07,0,0,1,64,64Zm0-139.74A111.31,111.31,0,0,0,464,256H272a16,16,0,0,0-16,16V416H48V208H528ZM528,160H304V48H464a64.07,64.07,0,0,1,64,64ZM152,400a72,72,0,1,0-72-72A72,72,0,0,0,152,400Zm0-96a24,24,0,1,1-24,24A24,24,0,0,1,152,304Z\"]\n};\nvar faBedEmpty = {\n prefix: 'far',\n iconName: 'bed-empty',\n icon: [640, 512, [], \"f8f9\", \"M528,128H48V80A16,16,0,0,0,32,64H16A16,16,0,0,0,0,80V432a16,16,0,0,0,16,16H32a16,16,0,0,0,16-16V384H592v48a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V240A112,112,0,0,0,528,128ZM160,336H48V176H160Zm432,0H208V176H528a64.07,64.07,0,0,1,64,64Z\"]\n};\nvar faBeer = {\n prefix: 'far',\n iconName: 'beer',\n icon: [448, 512, [], \"f0fc\", \"M152 152v208c0 13.255-10.745 24-24 24s-24-10.745-24-24V152c0-13.255 10.745-24 24-24s24 10.745 24 24zm72-24c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24s24-10.745 24-24V152c0-13.255-10.745-24-24-24zm224 40v145.288c0 27.985-16.418 53.646-41.827 65.373L352 403.664V432c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h256c26.51 0 48 21.49 48 48v16h24c39.701 0 72 32.299 72 72zM298 80H54c-3.314 0-6 2.678-6 5.992v340.016A5.993 5.993 0 0 0 54 432h244a6 6 0 0 0 6-6V86a6 6 0 0 0-6-6zm102 88c0-13.233-10.767-24-24-24h-24v206.798l34.058-15.719c8.47-3.909 13.942-12.463 13.942-21.791V168z\"]\n};\nvar faBell = {\n prefix: 'far',\n iconName: 'bell',\n icon: [448, 512, [], \"f0f3\", \"M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBellExclamation = {\n prefix: 'far',\n iconName: 'bell-exclamation',\n icon: [448, 512, [], \"f848\", \"M236.46 290.51a31.94 31.94 0 1 0 17 17 31.92 31.92 0 0 0-17-17zM246.29 128h-44.6a16.06 16.06 0 0 0-15.9 17.6l12.8 96a16 16 0 0 0 15.9 14.4h19a16 16 0 0 0 15.9-14.4l12.8-96a16 16 0 0 0-15.9-17.6zM224 512a64 64 0 0 0 64-64H160a64 64 0 0 0 64 64zm215.37-149.7c-19.31-20.77-55.46-52-55.46-154.3 0-77.7-54.47-139.91-127.94-155.16V32A32 32 0 1 0 192 32v20.84C118.56 68.09 64.09 130.3 64.09 208c0 102.3-36.15 133.53-55.46 154.3A31.17 31.17 0 0 0 0 384c.13 16.41 13 32 32.09 32h383.82c19.12 0 32-15.59 32.09-32a31.17 31.17 0 0 0-8.63-21.7zM67.53 368c21.22-28 44.41-74.33 44.53-159.42 0-.2-.06-.38-.06-.58a112 112 0 0 1 224 0c0 .2-.06.38-.06.58.12 85.11 23.31 131.47 44.53 159.42z\"]\n};\nvar faBellOn = {\n prefix: 'far',\n iconName: 'bell-on',\n icon: [640, 512, [], \"f8fa\", \"M520.94,100a23.8,23.8,0,0,0,12-3.22l55.42-32a24,24,0,0,0-24-41.56l-55.42,32a24,24,0,0,0,12,44.78ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192ZM51.66,64.78l55.42,32a24,24,0,1,0,24-41.56l-55.42-32a24,24,0,1,0-24,41.56ZM616,168H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM479.9,208c0-77.7-54.46-139.91-127.93-155.16V32A32,32,0,1,0,288,32V52.84C214.56,68.09,160.09,130.3,160.09,208c0,102.3-36.15,133.53-55.47,154.3A31.15,31.15,0,0,0,96,384c.12,16.41,13,32,32.09,32H511.9c19.13,0,32-15.59,32.1-32a31.17,31.17,0,0,0-8.63-21.7C516.06,341.53,479.9,310.3,479.9,208ZM163.53,368c21.22-28,44.41-74.33,44.53-159.42,0-.2-.06-.38-.06-.58a112,112,0,0,1,224,0c0,.2-.06.38-.06.58.12,85.11,23.31,131.47,44.53,159.42ZM320,512a64,64,0,0,0,64-64H256A64,64,0,0,0,320,512Z\"]\n};\nvar faBellPlus = {\n prefix: 'far',\n iconName: 'bell-plus',\n icon: [448, 512, [], \"f849\", \"M224 512a64 64 0 0 0 64-64H160a64 64 0 0 0 64 64zm215.37-149.7c-19.31-20.77-55.46-52-55.46-154.3 0-77.7-54.47-139.91-127.94-155.16V32A32 32 0 1 0 192 32v20.84C118.56 68.09 64.09 130.3 64.09 208c0 102.3-36.15 133.53-55.46 154.3A31.17 31.17 0 0 0 0 384c.13 16.41 13 32 32.09 32h383.82c19.12 0 32-15.59 32.09-32a31.17 31.17 0 0 0-8.63-21.7zM67.53 368c21.22-28 44.41-74.33 44.53-159.42 0-.2-.06-.38-.06-.58a112 112 0 0 1 224 0c0 .2-.06.38-.06.58.12 85.11 23.31 131.47 44.53 159.42zM288 216h-40v-40a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v40h-40a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h40v40a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-40h40a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faBellSchool = {\n prefix: 'far',\n iconName: 'bell-school',\n icon: [512, 512, [], \"f5d5\", \"M208 112c-52.94 0-96 43.06-96 96s43.06 96 96 96 96-43.06 96-96-43.06-96-96-96zm0 144c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm256 32c-26.51 0-48 21.49-48 48 0 16.43 8.27 30.89 20.86 39.55C430.78 389.9 416.55 400 400 400h-48v-42.26c39.36-37.87 64-90.94 64-149.74C416 93.31 322.69 0 208 0S0 93.31 0 208c0 58.8 24.64 111.88 64 149.74V480c0 17.67 14.33 32 32 32h224c17.67 0 32-14.33 32-32v-32h48c42.2 0 77.48-29.87 85.98-69.56 15.39-8 26.02-23.9 26.02-42.44 0-26.51-21.49-48-48-48zM304 464H112v-71.67c28.75 15.04 61.37 23.67 96 23.67s67.25-8.63 96-23.67V464zm-96-96c-88.22 0-160-71.78-160-160S119.78 48 208 48s160 71.78 160 160-71.78 160-160 160z\"]\n};\nvar faBellSchoolSlash = {\n prefix: 'far',\n iconName: 'bell-school-slash',\n icon: [640, 512, [], \"f5d6\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM576 336c0-26.51-21.49-48-48-48-12.86 0-24.47 5.12-33.09 13.36l74.54 58.28c4.05-6.98 6.55-14.97 6.55-23.64zm-304 32c-88.22 0-160-71.78-160-160 0-7.37 1.21-14.42 2.18-21.53l-42.6-33.31C66.78 170.67 64 189 64 208c0 58.8 24.64 111.87 64 149.74V480c0 17.67 14.33 32 32 32h224c17.67 0 32-14.33 32-32v-57.56l-84.61-66.15C312.99 363.69 293.01 368 272 368zm96 96H176v-71.67c28.75 15.04 61.37 23.67 96 23.67s67.25-8.63 96-23.67V464zM272 48c88.22 0 160 71.78 160 160 0 13.81-2.31 26.99-5.61 39.78L467 279.53c8.25-22.33 13-46.35 13-71.53C480 93.31 386.69 0 272 0c-43.2 0-83.35 13.26-116.64 35.89l40.96 32.02C218.95 55.62 244.48 48 272 48zm-17.08 65.73l112.44 87.91C364.01 151.71 322.76 112 272 112c-5.85 0-11.52.72-17.08 1.73z\"]\n};\nvar faBellSlash = {\n prefix: 'far',\n iconName: 'bell-slash',\n icon: [640, 512, [], \"f1f6\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM163.53 368c16.71-22.03 34.48-55.8 41.4-110.58l-45.47-35.55c-3.27 90.73-36.47 120.68-54.84 140.42-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h279.66l-61.4-48H163.53zM320 96c61.86 0 112 50.14 112 112 0 .2-.06.38-.06.58.02 16.84 1.16 31.77 2.79 45.73l59.53 46.54c-8.31-22.13-14.34-51.49-14.34-92.85 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-26.02 5.41-49.45 16.94-69.13 32.72l38.17 29.84C275 103.18 296.65 96 320 96zm0 416c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBells = {\n prefix: 'far',\n iconName: 'bells',\n icon: [640, 512, [], \"f77f\", \"M638.4 313.9c-2.1-5.9-6.4-11.2-12.9-14.5-21-10.8-58.3-24.9-87.4-105-.8-2.2-14.7-40.5-15.4-42.6C503 97.6 451.8 64 397.4 64c-15.1 0-30.5 2.6-45.6 8.1-3.6 1.3-6.6 3.3-10 4.8-14.2-16-32.1-29-53.5-36.8-15-5.5-30.5-8.1-45.6-8.1-54.5 0-105.6 33.6-125.3 87.8-.8 2.1-14.6 40.4-15.4 42.6-29.2 80.1-66.4 94.3-87.4 105-6.5 3.3-10.8 8.6-12.9 14.5-4.6 12.9 1 28.8 16 34.2L99.5 346c-2.1 7-3.5 14.3-3.5 22 0 44.2 35.8 80 80 80 32.6 0 60.5-19.6 72.9-47.6l42.1 15.3c-2.8 6.5-7.5 14.8-3.4 26 4.9 13.1 19.6 21.3 34.3 15.9l76.3-27.8C410 459.1 438.4 480 472 480c44.2 0 80-35.8 80-80 0-8.7-1.9-16.8-4.5-24.6l75-27.3c14.9-5.4 20.5-21.3 15.9-34.2zM176 400c-17.6 0-32-14.4-32-32 0-1.9.6-3.7.9-5.5l58.4 21.2c-5.6 9.6-15.5 16.3-27.3 16.3zM76.1 286.4c23.2-18.2 49.7-49.3 70.9-107.5 9.1-25 5.6-15.6 15.4-42.6 12.2-33.6 44.5-56.2 80.2-56.2 21.5 0 42.5 7.8 59.4 24.8-34.4 35.5-48 88.6-30 138.2.8 2.1 14.8 40.4 15.6 42.6 13.1 36.1 16.2 62.6 15 83.3L76.1 286.4zM504 400c0 17.6-14.4 32-32 32-12.8 0-23.5-7.8-28.4-18.7l58.9-21.5c.8 2.6 1.5 5.3 1.5 8.2zm-156.5-2.9c6-28.8 6.4-69.7-14.8-128-8.6-23.5-5.5-15-15.6-42.6-16.1-44.2 6.8-93.3 51-109.4 44.6-16.2 93.4 7.1 109.4 51 9.7 26.7 5 13.8 15.4 42.6 21.2 58.3 47.8 89.3 70.9 107.6l-216.3 78.8z\"]\n};\nvar faBetamax = {\n prefix: 'far',\n iconName: 'betamax',\n icon: [512, 512, [], \"f8a4\", \"M464 400H48V192H0v208a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V192h-48zM240 288a80 80 0 1 0-80 80 80 80 0 0 0 80-80zm-112 0a32 32 0 1 1 32 32 32 32 0 0 1-32-32zM496 64H16A16 16 0 0 0 0 80v80h512V80a16 16 0 0 0-16-16zm-96 304a32 32 0 0 0 32-32v-96a32 32 0 0 0-32-32h-96a32 32 0 0 0-32 32v96a32 32 0 0 0 32 32zm-80-112h64v64h-64z\"]\n};\nvar faBezierCurve = {\n prefix: 'far',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M576 176c35.35 0 64-28.65 64-64s-28.65-64-64-64c-26.8 0-49.45 16.61-58.95 40H400V64c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32v24H122.95C113.45 64.61 90.8 48 64 48 28.65 48 0 76.65 0 112s28.65 64 64 64c26.8 0 49.45-16.61 58.95-40H203C138.68 173.78 94.2 241.52 88.81 320H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32h-23.19c5.79-66.78 47.39-123.33 105.47-150.54C246.33 182.38 257.73 192 272 192h96c14.27 0 25.67-9.62 29.72-22.54C455.8 196.67 497.4 253.22 503.19 320H480c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32h-24.81c-5.39-78.48-49.87-146.22-114.18-184h80.05c9.49 23.39 32.14 40 58.94 40zm-16-65.59l.62-2.4C562.45 100.94 568.78 96 576 96c8.82 0 16 7.18 16 16s-7.18 16-16 16c-7.22 0-13.55-4.94-15.38-12.01l-.62-2.4v-3.18zm-480 3.18l-.62 2.4C77.55 123.06 71.22 128 64 128c-8.82 0-16-7.18-16-16s7.18-16 16-16c7.22 0 13.55 4.94 15.38 12.01l.62 2.39v3.19zM144 368v64H80v-64h64zm208-224h-64V80h64v64zm208 224v64h-64v-64h64z\"]\n};\nvar faBible = {\n prefix: 'far',\n iconName: 'bible',\n icon: [448, 512, [], \"f647\", \"M160 208h48v96c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-96h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48V96c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16zm288 176V16c0-8.8-7.2-16-16-16H80C35.8 0 0 35.8 0 80v352c0 44.2 35.8 80 80 80h352c8.8 0 16-7.2 16-16v-16c0-7.8-5.6-14.3-12.9-15.7-4.2-13-4.2-51.6 0-64.6 7.4-1.5 12.9-7.9 12.9-15.7zm-54 80H80c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h314c-2.7 17.3-2.7 46.7 0 64zm6-112H80c-11.4 0-22.2 2.4-32 6.7V80c0-17.7 14.3-32 32-32h320v304z\"]\n};\nvar faBicycle = {\n prefix: 'far',\n iconName: 'bicycle',\n icon: [640, 512, [], \"f206\", \"M514.115 192.017c-17.637-.285-34.469 3.005-49.832 9.181l-79.29-127.746A20 20 0 0 0 368 64h-68c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h56.874l32.276 52H256v-16c0-6.627-5.373-12-12-12h-96c-11.046 0-20 8.954-20 20s8.954 20 20 20h61.187l-25.65 36.644c-16.797-8.102-35.634-12.643-55.532-12.644C57.375 191.998-.443 250.196.003 320.824.446 391.137 57.583 448 128 448c58.192 0 107.306-38.835 122.859-92H284a20.005 20.005 0 0 0 16.385-8.53l110.038-157.197 19.539 31.48c-28.136 23.519-46.021 58.892-45.962 98.445.104 68.88 57.908 127.158 126.785 127.797 71.601.664 129.787-57.467 129.21-129.048-.556-69.152-56.736-125.812-125.88-126.93zM128 408c-48.523 0-88-39.477-88-88s39.477-88 88-88a87.552 87.552 0 0 1 32.134 6.075L99.615 324.53C90.342 337.781 99.857 356 116 356h92.294c-13.785 30.625-44.589 52-80.294 52zm26.413-92l38.641-55.201c13.409 14.722 21.898 33.997 22.852 55.201h-61.493zm119.174 0h-17.655c-1.069-34.805-16.026-66.113-39.524-88.563L238.413 196h119.174l-84 120zm234.284 91.905c-45.514-2.092-82.216-39.219-83.815-84.752-.924-26.302 9.764-50.177 27.328-66.888l47.843 77.08c3.495 5.631 10.894 7.362 16.524 3.867l13.594-8.438c5.631-3.495 7.362-10.893 3.867-16.524l-47.351-76.287c9.012-2.809 18.641-4.205 28.626-3.928 45.797 1.27 83.314 38.07 85.418 83.837 2.379 51.775-40.258 94.413-92.034 92.033z\"]\n};\nvar faBiking = {\n prefix: 'far',\n iconName: 'biking',\n icon: [640, 512, [], \"f84a\", \"M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 208a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80zm384-208a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 208a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80zM401 210.73a24 24 0 0 0 15 5.27h64a24 24 0 0 0 0-48h-55.59L351 109.27a24 24 0 0 0-30.62.51l-104 89.11a32 32 0 0 0 3.06 50.94l76.53 51V416a24 24 0 0 0 48 0V288a24 24 0 0 0-10.69-20l-50.11-33.4 71.29-61.1z\"]\n};\nvar faBikingMountain = {\n prefix: 'far',\n iconName: 'biking-mountain',\n icon: [640, 512, [], \"f84b\", \"M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm224 256h-5.2a110.19 110.19 0 0 0-8.65-20.89l3.67-3.67a16 16 0 0 0 0-22.63l-22.63-22.63a16 16 0 0 0-22.63 0l-3.66 3.67a110.72 110.72 0 0 0-20.9-8.65V272a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v5.2a110.19 110.19 0 0 0-20.89 8.65l-3.67-3.67a16 16 0 0 0-22.63 0l-22.62 22.63a16 16 0 0 0 0 22.63l3.67 3.67A110.45 110.45 0 0 0 405.2 352H400a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h5.2a110.19 110.19 0 0 0 8.65 20.89l-3.67 3.67a16 16 0 0 0 0 22.63l22.62 22.63a16 16 0 0 0 22.63 0l3.67-3.67a110.94 110.94 0 0 0 20.9 8.65v5.2a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-5.2a110.56 110.56 0 0 0 20.9-8.65l3.67 3.67a16 16 0 0 0 22.62 0l22.63-22.63a16 16 0 0 0 0-22.63l-3.67-3.67A110.45 110.45 0 0 0 618.8 416h5.2a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-112 96a64 64 0 1 1 64-64 64 64 0 0 1-64 64zm-272-96h-5.2a110.19 110.19 0 0 0-8.65-20.89l3.67-3.67a16 16 0 0 0 0-22.63l-22.63-22.63a16 16 0 0 0-22.63 0l-3.66 3.67a110.72 110.72 0 0 0-20.9-8.65V272a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v5.2a110.19 110.19 0 0 0-20.89 8.65l-3.67-3.67a16 16 0 0 0-22.63 0l-22.63 22.63a16 16 0 0 0 0 22.63l3.67 3.67A110.45 110.45 0 0 0 21.2 352H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h5.2a110.19 110.19 0 0 0 8.65 20.89l-3.67 3.67a16 16 0 0 0 0 22.63l22.62 22.63a16 16 0 0 0 22.63 0l3.67-3.67A110.94 110.94 0 0 0 96 490.8v5.2a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-5.2a110.56 110.56 0 0 0 20.9-8.65l3.67 3.67a16 16 0 0 0 22.62 0l22.63-22.63a16 16 0 0 0 0-22.63l-3.67-3.67A110.45 110.45 0 0 0 234.8 416h5.2a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-112 96a64 64 0 1 1 64-64 64 64 0 0 1-64 64zm273-237.27a24 24 0 0 0 15 5.27h64a24 24 0 0 0 0-48h-55.59L351 109.27a24 24 0 0 0-30.62.51l-112 96a24 24 0 0 0 2.31 38.22L296 300.84V416a24 24 0 0 0 48 0V288a24 24 0 0 0-10.69-20l-43.23-28.82 70.73-60.63zM159.19 172a35.53 35.53 0 0 0 49.45 3.77l87.3-74.45c16.82-14.24 14.56-37 3.27-49.84C270 18.45 219 13.88 185.93 42L132.2 87.91a34.9 34.9 0 0 0-3.26 49.85zm57.88-93.5c9.92-8.42 24-9.35 35.65-3.43l-65.64 56-13.54-15.31z\"]\n};\nvar faBinoculars = {\n prefix: 'far',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M511.67 388c-3.46-129.77-61.06-150.16-63.58-243.98-.48-17.65-14.28-32.02-31.93-32.02H416V64c0-17.67-14.33-32-32-32h-80c-17.67 0-32 14.33-32 32v48h-32V64c0-17.67-14.33-32-32-32h-80c-17.67 0-32 14.33-32 32v48h-.16c-17.65 0-31.45 14.38-31.93 32.02C61.39 237.84 3.79 258.23.33 388L0 432c0 26.51 21.49 48 48 48h128c26.51 0 48-21.49 48-48V288h64v144c0 26.51 21.49 48 48 48h128c26.51 0 48-21.49 48-48l-.33-44zM320 80h48v32h-48V80zm-176 0h48v32h-48V80zm32 352l-128 .36.31-43.08c1.61-60.24 16.07-91.47 31.39-124.54 13.05-28.17 27.67-59.73 31.4-104.74H176v272zm48-192v-80h64v80h-64zm112 192V160h64.9c3.73 45.01 18.35 76.58 31.4 104.74 15.32 33.07 29.78 64.3 31.37 123.61L464 432H336z\"]\n};\nvar faBiohazard = {\n prefix: 'far',\n iconName: 'biohazard',\n icon: [576, 512, [], \"f780\", \"M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faBirthdayCake = {\n prefix: 'far',\n iconName: 'birthday-cake',\n icon: [448, 512, [], \"f1fd\", \"M192 64c0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40-32-14.25-32-32zm160 32c17.75 0 32-13.5 32-40S364 0 352 0c0 41-32 33-32 64 0 17.75 14.25 32 32 32zm96 176v240H0V272c0-26.5 21.5-48 48-48h24V112h48v112h80V112h48v112h80V112h48v112h24c26.5 0 48 21.5 48 48zm-400 6v56.831c8.352 7 15.27 13.169 26.75 13.169 25.378 0 30.13-32 74.75-32 43.974 0 49.754 32 74.5 32 25.588 0 30.061-32 74.75-32 44.473 0 49.329 32 74.75 32 11.258 0 18.135-6.18 26.5-13.187v-56.805a6 6 0 0 0-6-6L54 272a6 6 0 0 0-6 6zm352 186v-80.87c-7.001 2.914-15.54 4.87-26.5 4.87-44.544 0-49.389-32-74.75-32-25.144 0-30.329 32-74.75 32-43.974 0-49.755-32-74.5-32-25.587 0-30.062 32-74.75 32-11.084 0-19.698-1.974-26.75-4.911V464h352zM96 96c17.75 0 32-13.5 32-40S108 0 96 0c0 41-32 33-32 64 0 17.75 14.25 32 32 32z\"]\n};\nvar faBlanket = {\n prefix: 'far',\n iconName: 'blanket',\n icon: [512, 512, [], \"f498\", \"M440 368H112c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h328c39.8 0 71.7-32.5 71.6-72.4l.4.4V88c0-48.5-39.5-88-88-88H88C39.5 0 0 39.5 0 88v304l.3-.5c0 8.4.5 17 2.3 25.7C14.1 473.3 66.2 512 123.4 512H496c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16H120c-42.2 0-76-36.5-71.6-79.5C52.2 347 86.6 320 124.3 320H440c13.2 0 24 10.8 24 24s-10.8 24-24 24zm-4.3-96H120c-27 0-51.9 9.2-72 24.3V88c0-22.1 17.9-40 40-40h336c22.1 0 40 17.9 40 40v189.3c-8.9-3.4-18.4-5.3-28.3-5.3z\"]\n};\nvar faBlender = {\n prefix: 'far',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M425.91 330.01L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h102.26l6.17 70.99C121.06 341.14 96 375.57 96 416v64c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-64c0-37.92-22.17-70.39-54.09-85.99zM48 208V48h84.17l13.91 160H48zM449.87 48l-12.52 48H296c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h133l-16.7 64H296c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h107.96l-25.04 96H204.01L180.36 48h269.51zM432 464H144v-48c0-26.47 21.53-48 48-48h192c26.47 0 48 21.53 48 48v48zm-144-72c-13.26 0-24 10.74-24 24 0 13.25 10.74 24 24 24s24-10.75 24-24c0-13.26-10.74-24-24-24z\"]\n};\nvar faBlenderPhone = {\n prefix: 'far',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M352 392c-13.26 0-24 10.74-24 24 0 13.25 10.74 24 24 24s24-10.75 24-24c0-13.26-10.74-24-24-24zm137.91-61.99L576 0H192l28.43 326.99C185.06 341.14 160 375.57 160 416v64c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-64c0-37.92-22.17-70.39-54.09-85.99zM513.87 48l-12.52 48H360c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h133l-16.7 64H360c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h107.96l-25.04 96H268.01L244.36 48h269.51zM496 464H208v-48c0-26.47 21.53-48 48-48h192c26.47 0 48 21.53 48 48v48zM115.78 122.61c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.88-4.22 9.7-12.67 6.68-20.07l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.04 4.42z\"]\n};\nvar faBlind = {\n prefix: 'far',\n iconName: 'blind',\n icon: [384, 512, [], \"f29d\", \"M192.913 510.276c-12.325 4.929-26.281-1.079-31.196-13.37l-50.539-126.341 22.976-71.801 72.129 180.316c4.923 12.307-1.063 26.274-13.37 31.196zM96 0C71.699 0 52 19.699 52 44s19.699 44 44 44 44-19.699 44-44S120.301 0 96 0zm12.53 140.603a4.002 4.002 0 0 1 5.605.802L219.2 281.6c5.429 7.239 15.514 8.364 22.399 3.2 7.051-5.288 8.472-15.373 3.2-22.399l-120-160c-3.14-4.188-7.939-6.385-12.8-6.386L80 96v.009c-4.69.003-9.336 2.049-12.494 5.996L0 186.388v85.161c0 8.616 6.621 16.029 15.227 16.433C24.416 288.414 32 281.093 32 272v-74.388l32-40v176.64L17.142 480.679c-4.039 12.624 2.92 26.133 15.544 30.173 12.63 4.041 26.134-2.924 30.173-15.544L128 291.746V173.333l-20.275-27.132a4.003 4.003 0 0 1 .805-5.598zm274.307 359.245L252.28 284.813a24.013 24.013 0 0 1-12.67 9.96L369.161 508.15a8 8 0 0 0 10.989 2.687 7.998 7.998 0 0 0 2.687-10.989z\"]\n};\nvar faBlinds = {\n prefix: 'far',\n iconName: 'blinds',\n icon: [512, 512, [], \"f8fb\", \"M512,32V16A16,16,0,0,0,496,0H16A16,16,0,0,0,0,16V32A15.94,15.94,0,0,0,10.28,46.85L.07,158.55a16,16,0,0,0,9.65,16.09L.08,270.41a15.94,15.94,0,0,0,9.64,16.22L.08,382.41a15.94,15.94,0,0,0,9.64,16.22L.08,494.41a16,16,0,0,0,16,17.59H495.89a16,16,0,0,0,16-17.59l-9.64-95.78a15.93,15.93,0,0,0,9.64-16.22l-9.64-95.78a15.93,15.93,0,0,0,9.64-16.22l-9.64-95.77a16,16,0,0,0,9.65-16.09L501.72,46.85A15.94,15.94,0,0,0,512,32ZM58.38,48H120v80H51.06Zm-7,416,6.45-64H454.17l6.44,64ZM454.17,176l6.44,64H217.22a79.22,79.22,0,0,1,5.16,48H454.17l6.44,64H51.38l6.45-64h7.79a79.25,79.25,0,0,1,5.16-48H51.38l6.45-64H120v54.66a48,48,0,1,0,48,0V48H453.62l7.32,80H200v48Z\"]\n};\nvar faBlindsOpen = {\n prefix: 'far',\n iconName: 'blinds-open',\n icon: [512, 512, [], \"f8fc\", \"M16,352h64.4A79.24,79.24,0,0,1,64,304H21.35A16,16,0,0,0,6.17,314.94l-5.34,16A16,16,0,0,0,16,352Zm489.82-37.06A16,16,0,0,0,490.65,304H224a79.24,79.24,0,0,1-16.41,48H496a16,16,0,0,0,15.18-21.06Zm0,160A16,16,0,0,0,490.65,464H21.35A16,16,0,0,0,6.17,474.94l-5.34,16A16,16,0,0,0,16,512H496a16,16,0,0,0,15.18-21.06Zm0-320A16,16,0,0,0,490.65,144H200v48H496a16,16,0,0,0,15.18-21.06ZM496,0H16A16,16,0,0,0,0,16V32A16,16,0,0,0,16,48H120v96H21.35A16,16,0,0,0,6.17,154.94l-5.34,16A16,16,0,0,0,16,192H120v70.66a48,48,0,1,0,48,0V48H496a16,16,0,0,0,16-16V16A16,16,0,0,0,496,0Z\"]\n};\nvar faBlindsRaised = {\n prefix: 'far',\n iconName: 'blinds-raised',\n icon: [512, 512, [], \"f8fd\", \"M512,32V16A16,16,0,0,0,496,0H16A16,16,0,0,0,0,16V32A15.94,15.94,0,0,0,10.28,46.85L.07,158.55a16,16,0,0,0,9.65,16.09L.08,270.41a16,16,0,0,0,16,17.59H120V422.66a48,48,0,1,0,48,0V48H453.62l7.32,80H200v48H454.17l6.45,64H200v48H495.89a16,16,0,0,0,16-17.59l-9.64-95.77a16,16,0,0,0,9.65-16.09L501.72,46.85A15.94,15.94,0,0,0,512,32ZM51.38,240l6.45-64H120v64ZM120,128H51.06l7.32-80H120Z\"]\n};\nvar faBlog = {\n prefix: 'far',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M208.8 96c-9.1-.7-16.8 7-16.8 16.2v16c0 8.6 6.8 15.3 15.4 15.8 85.3 5.9 153.2 75.3 160.4 160.7.7 8.5 7.3 15.2 15.8 15.2h16.2c9.1 0 16.8-7.7 16.2-16.8-8.3-110.4-96.7-198.9-207.2-207.1zm-.1-96C199.6-.4 192 7.2 192 16.3v16c0 8.6 6.8 15.3 15.4 15.8C345.6 55.8 457.2 166.4 464 304.5c.4 8.6 7.2 15.5 15.8 15.5h16c9.1 0 16.7-7.6 16.3-16.7C503.5 139.9 372.1 8.5 208.7 0zM137 224h-9c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h10.9c47 0 88 38.4 84.9 85.3-2.6 39.9-34.6 71.8-74.4 74.5C102.4 451 64 410 64 362.9V112c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v249c0 82.6 66.5 153.7 149 150.9 75.4-2.6 136.3-63.5 138.9-138.9 2.9-82.5-68.3-149-150.9-149z\"]\n};\nvar faBold = {\n prefix: 'far',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M314.52 238.78A119.76 119.76 0 0 0 232 32H48a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h16v352H48a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h208a128 128 0 0 0 128-128c0-49.49-28.38-91.92-69.48-113.22zM128 80h88a72 72 0 0 1 0 144h-88zm112 352H128V272h112a80 80 0 0 1 0 160z\"]\n};\nvar faBolt = {\n prefix: 'far',\n iconName: 'bolt',\n icon: [384, 512, [], \"f0e7\", \"M377.8 167.9c-8.2-14.3-23.1-22.9-39.6-22.9h-94.4l28.7-87.5c3.7-13.8.8-28.3-7.9-39.7C255.8 6.5 242.5 0 228.2 0H97.7C74.9 0 55.4 17.1 52.9 37.1L.5 249.3c-1.9 13.8 2.2 27.7 11.3 38.2C20.9 298 34.1 304 48 304h98.1l-34.9 151.7c-3.2 13.7-.1 27.9 8.6 38.9 8.7 11.1 21.8 17.4 35.9 17.4 16.3 0 31.5-8.8 38.8-21.6l183.2-276.7c8.4-14.3 8.4-31.5.1-45.8zM160.1 457.4L206.4 256H47.5L97.7 48l127.6-.9L177.5 193H334L160.1 457.4z\"]\n};\nvar faBomb = {\n prefix: 'far',\n iconName: 'bomb',\n icon: [512, 512, [], \"f1e2\", \"M384.5 144.5l56-56-17-17-56 56-52.2-52.2c-6.2-6.2-16.4-6.2-22.6 0l-28.4 28.4c-17.9-5-36.8-7.7-56.3-7.7C93.1 96 0 189.1 0 304s93.1 208 208 208 208-93.1 208-208c0-19.5-2.7-38.4-7.7-56.3l28.4-28.4c6.2-6.2 6.2-16.4 0-22.6l-52.2-52.2zm-30 89.1c7.9 28.2 13.5 43.9 13.5 70.4 0 88.4-71.6 160-160 160S48 392.4 48 304s71.6-160 160-160c26.3 0 41.4 5.4 70.4 13.5l25.6-25.6 76.1 76.1-25.6 25.6zM512 72c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12s5.4-12 12-12h24c6.6 0 12 5.4 12 12zm-60-60v24c0 6.6-5.4 12-12 12s-12-5.4-12-12V12c0-6.6 5.4-12 12-12s12 5.4 12 12zm5 43c-4.7-4.7-4.7-12.3 0-17l17-17c4.7-4.7 12.3-4.7 17 0 4.7 4.7 4.7 12.3 0 17l-17 17c-4.7 4.7-12.3 4.7-17 0zm-67.9-16.9c-4.7-4.7-4.7-12.3 0-17 4.7-4.7 12.3-4.7 17 0l17 17c4.7 4.7 4.7 12.3 0 17-4.7 4.7-12.3 4.7-17 0l-17-17zm101.8 67.8c4.7 4.7 4.7 12.3 0 17-4.7 4.7-12.3 4.7-17 0l-17-17c-4.7-4.7-4.7-12.3 0-17 4.7-4.7 12.3-4.7 17 0l17 17zM216 208c0 13.3-10.7 24-24 24-30.9 0-56 25.1-56 56 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.3 46.7-104 104-104 13.3 0 24 10.7 24 24z\"]\n};\nvar faBone = {\n prefix: 'far',\n iconName: 'bone',\n icon: [640, 512, [], \"f5d7\", \"M640 183.23C640 135.14 598.38 96 547.19 96c-39.72 0-75 23.73-87.84 59.06C458.23 158.3 452.72 176 448 176H192c-4.72 0-10.23-17.7-11.34-20.94C167.81 119.73 132.53 96 92.81 96 41.62 96 0 135.14 0 183.23c0 29.45 8.09 53.34 32.34 72.77C7.93 275.57 0 299.54 0 328.77 0 376.86 41.62 416 92.81 416c39.72 0 75-23.73 87.84-59.05 1.09-3.23 6.89-20.95 11.34-20.95h256c4.45 0 10.25 17.73 11.34 20.95 12.84 35.31 48.12 59.05 87.84 59.05 51.19 0 92.81-39.14 92.81-87.23 0-29.23-7.93-53.19-32.34-72.77 24.27-19.43 32.36-43.31 32.36-72.77zm-72.06 104.3c19.34 8.88 24.06 23.12 24.06 41.23 0 21.64-20.09 39.23-44.81 39.23-19.59 0-36.75-11.02-42.72-27.41C494.42 310.66 483.78 288 448 288H192c-35.78 0-46.42 22.66-56.47 52.59-5.97 16.39-23.12 27.41-42.72 27.41C68.09 368 48 350.41 48 328.77c0-18.12 4.72-32.36 24.06-41.23 12.62-5.81 20.5-17.89 20.5-31.53s-7.84-25.7-20.5-31.53C52.28 215.39 48 200.72 48 183.23 48 161.59 68.09 144 92.81 144c19.59 0 36.75 11.02 42.72 27.42C154.17 225.19 176.64 224 192 224h256c15.36 0 37.83 1.19 56.47-52.58 5.97-16.41 23.12-27.42 42.72-27.42 24.72 0 44.81 17.59 44.81 39.23 0 17.48-4.28 32.16-24.06 41.23-12.66 5.83-20.5 17.89-20.5 31.53s7.87 25.73 20.5 31.54z\"]\n};\nvar faBoneBreak = {\n prefix: 'far',\n iconName: 'bone-break',\n icon: [640, 512, [], \"f5d8\", \"M640 87.23C640 39.14 598.37 0 547.19 0c-39.72 0-75 23.73-87.84 59.06C458.23 62.3 452.72 80 448 80h-80c-26.51 0-48 21.49-48 48h128c15.36 0 37.83 1.19 56.47-52.58C510.44 59.02 527.59 48 547.19 48 571.91 48 592 65.59 592 87.23c0 17.48-4.28 32.16-24.06 41.23-12.66 5.83-20.5 17.89-20.5 31.53s7.88 25.72 20.5 31.53c19.34 8.88 24.06 23.12 24.06 41.23 0 21.64-20.09 39.23-44.81 39.23-19.59 0-36.75-11.02-42.72-27.41C494.42 214.66 483.78 192 448 192h-16c-26.51 0-48 21.49-48 48h64c4.45 0 10.25 17.73 11.34 20.95 12.84 35.31 48.12 59.05 87.84 59.05 51.19 0 92.81-39.14 92.81-87.23 0-29.23-7.93-53.19-32.34-72.77C631.91 140.57 640 116.69 640 87.23zM234.24 323.01c-10.86 10.86-27.6 25.91-2.75 77.11 7.38 15.82 3.04 35.74-10.82 49.6-17.48 17.48-44.13 19.25-59.43 3.95-12.36-12.36-19.71-25.77-12.14-46.17 4.83-13.07 1.85-27.15-7.8-36.79s-23.76-12.62-36.79-7.8c-19.95 7.4-33.36.67-46.17-12.14-15.3-15.3-13.53-41.95 3.95-59.43 13.85-13.85 33.78-18.2 49.59-10.83 28.27 14.06 51.82 22.56 77.12-2.74l58.45-58.45c18.74-18.74 18.74-49.14 0-67.88l-92.38 92.38c-3.15 3.15-19.79-5.28-22.84-6.79-34.05-15.89-75.78-7.72-103.87 20.36-36.2 36.19-37.95 93.3-3.95 127.31 20.67 20.67 43.22 32 74.32 28.58-3.41 30.89 7.76 53.5 28.58 74.32 34.01 34.01 91.12 32.25 127.31-3.94 28.09-28.09 36.25-69.82 20.35-103.88-1.5-3.07-10.12-19.49-6.78-22.83l26.44-26.44c18.75-18.75 18.75-49.14 0-67.88l-60.39 60.38z\"]\n};\nvar faBong = {\n prefix: 'far',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M443.31 217.37l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V47.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-15.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 15.73c-.01 8.85 7.17 16.02 16.02 16.01L96 47.96v169.93C38.67 251.1 0 312.97 0 384c0 43.81 14.8 84.07 39.52 116.35C45.34 507.96 54.73 512 64.31 512h255.37c9.58 0 18.97-4.04 24.79-11.65C369.21 468.07 384 427.8 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63zm-323.25 42.06L144 245.56V47.99h96v197.57l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57zM311.53 464H72.47C56.43 440.25 48 412.77 48 384c0-5.39.47-10.71 1.07-16h285.85c.6 5.29 1.07 10.61 1.07 16 .01 28.77-8.42 56.25-24.46 80z\"]\n};\nvar faBook = {\n prefix: 'far',\n iconName: 'book',\n icon: [448, 512, [], \"f02d\", \"M128 152v-32c0-4.4 3.6-8 8-8h208c4.4 0 8 3.6 8 8v32c0 4.4-3.6 8-8 8H136c-4.4 0-8-3.6-8-8zm8 88h208c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H136c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8zm299.1 159.7c-4.2 13-4.2 51.6 0 64.6 7.3 1.4 12.9 7.9 12.9 15.7v16c0 8.8-7.2 16-16 16H80c-44.2 0-80-35.8-80-80V80C0 35.8 35.8 0 80 0h352c8.8 0 16 7.2 16 16v368c0 7.8-5.5 14.2-12.9 15.7zm-41.1.3H80c-17.6 0-32 14.4-32 32 0 17.7 14.3 32 32 32h314c-2.7-17.3-2.7-46.7 0-64zm6-352H80c-17.7 0-32 14.3-32 32v278.7c9.8-4.3 20.6-6.7 32-6.7h320V48z\"]\n};\nvar faBookAlt = {\n prefix: 'far',\n iconName: 'book-alt',\n icon: [448, 512, [], \"f5d9\", \"M435.1 399.7c-4.2 13-4.2 51.6 0 64.6 7.3 1.4 12.9 7.9 12.9 15.7v16c0 8.8-7.2 16-16 16H80c-44.2 0-80-35.8-80-80V80C0 35.8 35.8 0 80 0h352c8.8 0 16 7.2 16 16v368c0 7.8-5.5 14.2-12.9 15.7zm-41.1.3H80c-17.6 0-32 14.4-32 32 0 17.7 14.3 32 32 32h314c-2.7-17.3-2.7-46.7 0-64zm6-352H80c-17.7 0-32 14.3-32 32v278.7c9.8-4.3 20.6-6.7 32-6.7h320V48z\"]\n};\nvar faBookDead = {\n prefix: 'far',\n iconName: 'book-dead',\n icon: [448, 512, [], \"f6b7\", \"M128.3 297.64l4.31 16.24c1.19 4.48 5.52 7.07 9.67 5.79L240 289.56l97.71 30.11c4.15 1.28 8.48-1.31 9.67-5.79l4.31-16.24c1.19-4.48-1.21-9.16-5.37-10.44L296.99 272l49.33-15.2c4.16-1.28 6.56-5.95 5.37-10.44l-4.31-16.24c-1.19-4.48-5.52-7.07-9.67-5.79L240 254.44l-97.71-30.11c-4.15-1.28-8.48 1.31-9.67 5.79l-4.31 16.24c-1.19 4.48 1.21 9.16 5.37 10.44l49.33 15.2-49.33 15.2c-4.16 1.28-6.57 5.95-5.38 10.44zM192 194.91V208c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-13.09c19.32-11.68 32-30.04 32-50.91 0-35.35-35.82-64-80-64s-80 28.65-80 64c0 20.87 12.68 39.23 32 50.91zM272 128c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm-64 0c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm240 256V16c0-8.8-7.2-16-16-16H80C35.8 0 0 35.8 0 80v352c0 44.2 35.8 80 80 80h352c8.8 0 16-7.2 16-16v-16c0-7.8-5.6-14.3-12.9-15.7-4.2-13-4.2-51.6 0-64.6 7.4-1.5 12.9-7.9 12.9-15.7zm-54 80H80c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h314c-2.7 17.3-2.7 46.7 0 64zm6-112H80c-11.4 0-22.2 2.4-32 6.7V80c0-17.7 14.3-32 32-32h320v304z\"]\n};\nvar faBookHeart = {\n prefix: 'far',\n iconName: 'book-heart',\n icon: [448, 512, [], \"f499\", \"M448 384V16c0-8.8-7.2-16-16-16H80C35.8 0 0 35.8 0 80v352c0 44.2 35.8 80 80 80h352c8.8 0 16-7.2 16-16v-16c0-7.8-5.6-14.3-12.9-15.7-4.2-13-4.2-51.6 0-64.6 7.4-1.5 12.9-7.9 12.9-15.7zm-54 80H80c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h314c-2.7 17.3-2.7 46.7 0 64zm6-112H80c-11.4 0-22.2 2.4-32 6.7V80c0-17.7 14.3-32 32-32h320v304zm-184.5-67.5c4.7 4.6 12.3 4.6 17 0l72.6-71.3c21.1-20.7 19.8-55.1-3.7-74.2s-54.3-10.6-70 4.8l-7.4 7.3-7.4-7.3c-15.3-15.1-46.2-24.1-70-4.8-23.6 19.1-24.8 53.5-3.7 74.2l72.6 71.3z\"]\n};\nvar faBookMedical = {\n prefix: 'far',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M448 384V16a16 16 0 0 0-16-16H80A80 80 0 0 0 0 80v352a80 80 0 0 0 80 80h352a16 16 0 0 0 16-16v-16a16 16 0 0 0-12.9-15.7c-4.2-13-4.2-51.6 0-64.6A16 16 0 0 0 448 384zm-54 80H80a32 32 0 0 1 0-64h314c-2.7 17.3-2.7 46.7 0 64zm6-112H80a79.37 79.37 0 0 0-32 6.7V80a32 32 0 0 1 32-32h320zM136 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8z\"]\n};\nvar faBookOpen = {\n prefix: 'far',\n iconName: 'book-open',\n icon: [640, 512, [], \"f518\", \"M561.91 0C549.44 0 406.51 6.49 320 56.89 233.49 6.49 90.56 0 78.09 0 35.03 0 0 34.34 0 76.55v313.72c0 40.73 32.47 74.3 73.92 76.41 36.78 1.91 128.81 9.5 187.73 38.69 8.19 4.05 17.25 6.29 26.34 6.58v.05h64.02v-.05c9.09-.29 18.15-2.53 26.34-6.58 58.92-29.19 150.95-36.78 187.73-38.69C607.53 464.57 640 431 640 390.27V76.55C640 34.34 604.97 0 561.91 0zM296 438.15c0 11.09-10.96 18.91-21.33 14.96-64.53-24.54-153.96-32.07-198.31-34.38-15.9-.8-28.36-13.3-28.36-28.46V76.55C48 60.81 61.5 48 78.06 48c19.93.1 126.55 7.81 198.53 40.49 11.63 5.28 19.27 16.66 19.28 29.44L296 224v214.15zm296-47.88c0 15.16-12.46 27.66-28.36 28.47-44.35 2.3-133.78 9.83-198.31 34.38-10.37 3.94-21.33-3.87-21.33-14.96V224l.14-106.08c.02-12.78 7.65-24.15 19.28-29.44C435.4 55.81 542.02 48.1 561.94 48 578.5 48 592 60.81 592 76.55v313.72z\"]\n};\nvar faBookReader = {\n prefix: 'far',\n iconName: 'book-reader',\n icon: [512, 512, [], \"f5da\", \"M459.91 192.02c-.7 0-1.39.02-2.06.05-49.8 2.84-140.51 13-201.84 47.57-61.33-34.57-152.05-44.73-201.84-47.57-.67-.04-1.36-.05-2.06-.05C31.71 192.01 0 206.36 0 242.22v178.05c0 26.69 21.25 48.7 48.34 50.12 34.41 1.81 120.56 9.08 177 37.47 5.47 2.77 11.34 4.14 17.19 4.14h26.94c5.84 0 11.72-1.37 17.19-4.14 56.44-28.39 142.59-35.65 177-37.47 27.09-1.42 48.34-23.44 48.34-50.12V242.22c0-35.86-31.71-50.2-52.09-50.2zM232 458.43c-60.63-25.8-138.17-33.71-181.14-35.97-1.71-.09-2.86-1.21-2.86-2.19l-.46-178.45c.76-.76 3.29-1.74 3.88-1.84 35.86 2.04 125.09 10.18 180.58 41.26v177.19zm232-38.16c0 .98-1.15 2.1-2.87 2.19-42.94 2.26-120.43 10.16-181.13 35.98v-177.2c55.32-30.98 144.17-39.16 179.93-41.22 1.4.13 3.78 1.09 4.07 2.2v178.05zM256 191.99c53.02 0 96-42.98 96-95.99S309.02 0 256 0s-96 42.98-96 95.99 42.98 96 96 96zM256 48c26.47 0 48 21.53 48 48s-21.53 48-48 48-48-21.53-48-48 21.53-48 48-48z\"]\n};\nvar faBookSpells = {\n prefix: 'far',\n iconName: 'book-spells',\n icon: [448, 512, [], \"f6b8\", \"M448 384V16c0-8.8-7.2-16-16-16H80C35.8 0 0 35.8 0 80v352c0 44.2 35.8 80 80 80h352c8.8 0 16-7.2 16-16v-16c0-7.8-5.6-14.3-12.9-15.7-4.2-13-4.2-51.6 0-64.6 7.4-1.5 12.9-7.9 12.9-15.7zm-54 80H80c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h314c-2.7 17.3-2.7 46.7 0 64zm6-112H80c-11.4 0-22.2 2.4-32 6.7V80c0-17.7 14.3-32 32-32h320v304zm-154.66-85.33L272 320l26.66-53.33L352 240l-53.34-26.67L272 160l-26.66 53.33L192 240l53.34 26.67zM160 200l18.66-37.33L216 144l-37.34-18.67L160 88l-18.67 37.33L104 144l37.33 18.67L160 200z\"]\n};\nvar faBookUser = {\n prefix: 'far',\n iconName: 'book-user',\n icon: [448, 512, [], \"f7e7\", \"M240 208a64 64 0 1 0-64-64 64 64 0 0 0 64 64zm208 176V16a16 16 0 0 0-16-16H80A80 80 0 0 0 0 80v352a80 80 0 0 0 80 80h352a16 16 0 0 0 16-16v-16a16 16 0 0 0-12.9-15.7c-4.2-13-4.2-51.6 0-64.6A16 16 0 0 0 448 384zm-54 80H80a32 32 0 0 1 0-64h314c-2.7 17.3-2.7 46.7 0 64zm6-112H80a79.37 79.37 0 0 0-32 6.7V80a32 32 0 0 1 32-32h320zm-256-32h192a16 16 0 0 0 16-16v-22.4c0-31.81-30.09-57.6-67.2-57.6h-4.95a103.25 103.25 0 0 1-79.7 0h-5c-37.11 0-67.2 25.79-67.2 57.6V304A16 16 0 0 0 144 320z\"]\n};\nvar faBookmark = {\n prefix: 'far',\n iconName: 'bookmark',\n icon: [384, 512, [], \"f02e\", \"M336 0H48C21.49 0 0 21.49 0 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996V428.43z\"]\n};\nvar faBooks = {\n prefix: 'far',\n iconName: 'books',\n icon: [576, 512, [], \"f5db\", \"M575.46 454.59L458.55 11.86c-2.28-8.5-11.1-13.59-19.6-11.31L423.5 4.68c-7.54 2.02-12.37 9.11-11.83 16.53-11.47 7.42-64.22 21.55-77.85 20.86-3.24-6.69-10.97-10.42-18.5-8.4L304 36.7V32c0-17.67-14.33-32-40-32H24C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 24 32h240c25.67 0 40-14.33 40-32V115.94l101.45 384.2c2.28 8.5 11.1 13.59 19.6 11.31l15.46-4.14c7.54-2.02 12.37-9.11 11.83-16.52 11.47-7.42 64.21-21.55 77.85-20.86 3.24 6.69 10.97 10.42 18.5 8.4l15.46-4.14c8.49-2.28 13.58-11.1 11.31-19.6zM128 464H48v-48h80v48zm0-96H48V144h80v224zm0-272H48V48h80v48zm128 368h-80v-48h80v48zm0-96h-80V144h80v224zm0-272h-80V48h80v48zm185.98 355.01L344.74 81.69c16.76-1.8 60.74-13.39 77.28-20.71l97.24 369.32c-16.76 1.81-60.74 13.4-77.28 20.71z\"]\n};\nvar faBooksMedical = {\n prefix: 'far',\n iconName: 'books-medical',\n icon: [640, 512, [], \"f7e8\", \"M256 256a128 128 0 1 0-128 128 128 128 0 0 0 128-128zm-149.33 58.67v-37.34H69.33A5.33 5.33 0 0 1 64 272v-32a5.33 5.33 0 0 1 5.33-5.33h37.34v-37.34A5.33 5.33 0 0 1 112 192h32a5.33 5.33 0 0 1 5.33 5.33v37.34h37.34A5.33 5.33 0 0 1 192 240v32a5.33 5.33 0 0 1-5.33 5.33h-37.34v37.34A5.33 5.33 0 0 1 144 320h-32a5.33 5.33 0 0 1-5.33-5.33zm532.79 139.92L522.55 11.86A16 16 0 0 0 503 .55l-15.5 4.13a16 16 0 0 0-11.83 16.53c-11.47 7.42-64.22 21.55-77.85 20.86a16 16 0 0 0-18.5-8.4L368 36.7V32c0-17.67-14.33-32-40-32H88c-9.67 0-24 14.33-24 32v77.56c14.91-6.56 31.14-10.24 48-11.94V48h80v61.56A160.44 160.44 0 0 1 242 144h78v224h-78a160.44 160.44 0 0 1-50 34.44V464h-80v-49.62c-16.86-1.7-33.09-5.4-48-11.94V480c0 17.67 14.33 32 24 32h240c25.67 0 40-14.33 40-32V115.94l101.45 384.2a16 16 0 0 0 19.6 11.31l15.46-4.14a16 16 0 0 0 11.83-16.52c11.47-7.42 64.21-21.55 77.85-20.86a16 16 0 0 0 18.5 8.4l15.46-4.14a16.06 16.06 0 0 0 11.31-19.6zM320 464h-80v-48h80zm0-368h-80V48h80zm186 355L408.74 81.69C425.5 79.89 469.48 68.3 486 61l97.26 369.3c-16.76 1.81-60.74 13.4-77.26 20.7z\"]\n};\nvar faBoombox = {\n prefix: 'far',\n iconName: 'boombox',\n icon: [640, 512, [], \"f8a5\", \"M448 432a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm144-272V56a56.06 56.06 0 0 0-56-56H104a56.07 56.07 0 0 0-56 56v104a48 48 0 0 0-48 48v256a48 48 0 0 0 48 48h544a48 48 0 0 0 48-48V208a48 48 0 0 0-48-48zM96 56a8 8 0 0 1 8-8h432a8 8 0 0 1 8 8v104h-96v-16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v16h-32v-16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v16h-32v-16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v16H96zm496 408H48V208h544zm-400-32a96 96 0 1 0-96-96 96 96 0 0 0 96 96z\"]\n};\nvar faBoot = {\n prefix: 'far',\n iconName: 'boot',\n icon: [512, 512, [], \"f782\", \"M415 263.8L352 248V144c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H32C14.3 0 0 14.3 0 32v434.7c0 8.5 3.4 16.6 9.4 22.6L32 512h64l32-32 32 32h64l32-32 32 32h64l32-32 32 32h64l22.6-22.6c6-6 9.4-14.1 9.4-22.6V388c0-58.8-40-110-97-124.2zM48 48h288v48H48V48zm416 368H48V144h256v48h-72c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h72v32h-72c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h82.1l89.3 22.3c35.7 8.9 60.6 40.8 60.6 77.6V416z\"]\n};\nvar faBoothCurtain = {\n prefix: 'far',\n iconName: 'booth-curtain',\n icon: [512, 512, [], \"f734\", \"M0 32v464c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V48h56v328c0 39.7 32.3 72 72 72 16.3 0 31.7-5.5 44-15 24.7 19.1 63.3 19.1 88 0 24.7 19.1 63.3 19.1 88 0 12.3 9.5 27.7 15 44 15 8.5 0 16.5-1.7 24-4.4V496c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V24c0-13.2-10.8-24-24-24H32C14.3 0 0 14.3 0 32zm152 16h312v328c0 13.2-10.8 24-24 24-9.5 0-18.2-5.7-22-14.5-7.6-17.5-36.4-17.5-44 0-7.6 17.6-36.4 17.6-44 0-7.6-17.5-36.4-17.5-44 0-7.6 17.6-36.4 17.6-44 0-3.8-8.8-12.4-14.4-22-14.4s-18.2 5.7-22 14.4c-3.8 8.8-12.5 14.5-22 14.5-13.2 0-24-10.8-24-24V48z\"]\n};\nvar faBorderAll = {\n prefix: 'far',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-16 48v152H248V80zm-200 0v152H48V80zM48 432V280h152v152zm200 0V280h152v152z\"]\n};\nvar faBorderBottom = {\n prefix: 'far',\n iconName: 'border-bottom',\n icon: [448, 512, [], \"f84d\", \"M432 432H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM112 88h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm0 196h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm100 0h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm100 0h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zM212 184h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm100-96h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm-100 0h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm0 296h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm220-156h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0 100h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-200h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-96h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM16 384h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm0-200h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm0-96h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v24a16 16 0 0 0 16 16zm0 196h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16z\"]\n};\nvar faBorderCenterH = {\n prefix: 'far',\n iconName: 'border-center-h',\n icon: [448, 512, [], \"f89c\", \"M432 232H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM112 88h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm0 392h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm100 0h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm100 0h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zM212 184h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm100-96h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm-100 0h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm0 296h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm220 40h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-96h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-200h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-96h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM16 384h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm0-200h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm0-96h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v24a16 16 0 0 0 16 16zm0 392h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16z\"]\n};\nvar faBorderCenterV = {\n prefix: 'far',\n iconName: 'border-center-v',\n icon: [448, 512, [], \"f89d\", \"M248 464V48a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v416a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16zm144-320v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16zM0 144v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16zm0 100v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16zm0 100v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16zm296-100v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16zm96 100v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16zm0-100v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16zm-296 0v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16zM56 464v-24a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16zm96 0v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16zm200 0v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16zm96 0v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16zM96 48v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16zm200 0v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16zm96 0v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16zM0 48v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48z\"]\n};\nvar faBorderInner = {\n prefix: 'far',\n iconName: 'border-inner',\n icon: [448, 512, [], \"f84e\", \"M432 232H248V48a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v184H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h184v184a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V280h184a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM40 424H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zM16 184h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm24 144H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm72-240h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm-96 0h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v24a16 16 0 0 0 16 16zm296 0h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm120 240h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm-296 96h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zM432 32h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm0 96h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm-96 296h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm96 0h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16z\"]\n};\nvar faBorderLeft = {\n prefix: 'far',\n iconName: 'border-left',\n icon: [448, 512, [], \"f84f\", \"M32 32H16A16 16 0 0 0 0 48v416a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm204 392h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-96h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-200h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zM136 32h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm100 0h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM136 424h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-196h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm100 0h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm196-100h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0 100h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-196h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 392h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm96-96h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm-96-100h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm96 196h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zM336 32h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderNone = {\n prefix: 'far',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M336 228h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm96 0h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm-296 0h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm200 196h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm96 0h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-96h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-200h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zM136 424h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm100-196h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0 196h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-96h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-200h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-96h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm100 0h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM40 228H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0 196H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-200H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderOuter = {\n prefix: 'far',\n iconName: 'border-outer',\n icon: [448, 512, [], \"f851\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-16 400H48V80h352zM212 184h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm100 100h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm-200 0h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm100 0h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm0 100h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16z\"]\n};\nvar faBorderRight = {\n prefix: 'far',\n iconName: 'border-right',\n icon: [448, 512, [], \"f852\", \"M432 32h-16a16 16 0 0 0-16 16v416a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM40 32H16A16 16 0 0 0 0 48v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm0 392h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-196h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zM40 128H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0 296H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-196H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0 100H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm296 96h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm-100 0h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm100-196h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-196h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-100 0h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm0 96h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0 200h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-100h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16z\"]\n};\nvar faBorderStyle = {\n prefix: 'far',\n iconName: 'border-style',\n icon: [448, 512, [], \"f853\", \"M432 32H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V80h384a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM236 424h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm-100 0h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm200 0h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm96-196h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0 100h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-200h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0 296h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16z\"]\n};\nvar faBorderStyleAlt = {\n prefix: 'far',\n iconName: 'border-style-alt',\n icon: [448, 512, [], \"f854\", \"M432 32h-16a16 16 0 0 0-16 16v384H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h400a32 32 0 0 0 32-32V48a16 16 0 0 0-16-16zM312 88h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm-100 0h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zM16 384h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm0-100h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm96-196h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm-96 96h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16zm0-96h24a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v24a16 16 0 0 0 16 16z\"]\n};\nvar faBorderTop = {\n prefix: 'far',\n iconName: 'border-top',\n icon: [448, 512, [], \"f855\", \"M432 32H16A16 16 0 0 0 0 48v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM136 424h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-196h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm100 196h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zM40 228H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0 196H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-200H16a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm196 200h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm100 96h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm96-196h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm0-100h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zM236 228h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm196 100h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zM236 128h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm196 296h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16zm-96-196h-24a16 16 0 0 0-16 16v24a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-24a16 16 0 0 0-16-16z\"]\n};\nvar faBowArrow = {\n prefix: 'far',\n iconName: 'bow-arrow',\n icon: [512, 512, [], \"f6b9\", \"M145.78 286.65l33.94-33.9-99.54-99.42c33.83-24.46 74.26-37.85 116.85-37.85 34.01 0 66.7 8.5 95.73 24.37l34.96-34.91c-38.88-24.21-83.72-37.4-130.69-37.4-55.44 0-107.96 18.26-151.12 51.56l-7.28-7.27c-6.25-6.24-16.38-6.24-22.63 0l-11.31 11.3c-6.25 6.24-6.25 16.36 0 22.6l141.09 140.92zM493.2.3L364.62 25.98c-12.29 2.45-16.88 17.6-8.02 26.45l34.47 34.42-250.63 250.33-49.7-16.55c-1.93-.64-12.39-3.68-21.03 4.96l-63.68 63.6c-10.8 10.79-6.46 29.17 8.04 33.99l55.65 18.53 18.55 55.58c2.99 8.97 11.19 14.05 19.57 14.05 5.14 0 10.36-1.92 14.47-6.02l63.67-63.59a20.51 20.51 0 0 0 4.97-21.01l-16.57-49.64L425 120.75l34.46 34.42c8.92 8.91 24.04 4.2 26.48-8.01l25.72-128.43C514.02 7 503.46-1.74 493.2.3zM116.27 454.85l-14.93-44.72-44.78-14.91 32.92-32.88 44.78 14.91 14.93 44.72-32.92 32.88zM455.64 94.86L417 56.26l48.3-9.65-9.66 48.25zm-48.57 89l-34.96 34.91c16.19 29.21 24.9 62.14 24.9 96.45 0 42.53-13.42 82.9-37.91 116.69L258.9 331.83l-33.94 33.9 141.75 141.58c6.25 6.24 16.38 6.24 22.62 0l11.31-11.3c6.25-6.24 6.25-16.36 0-22.6l-7.28-7.27c33.35-43.1 51.64-95.55 51.64-150.92.01-47.23-13.36-92.33-37.93-131.36z\"]\n};\nvar faBowlingBall = {\n prefix: 'far',\n iconName: 'bowling-ball',\n icon: [496, 512, [], \"f436\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-96-296c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112-32c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm-16 64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faBowlingPins = {\n prefix: 'far',\n iconName: 'bowling-pins',\n icon: [496, 512, [], \"f437\", \"M491 308.2c-13.4-54-49.4-87.4-53.8-132-3-30.5 21.4-53.1 18.8-95.8C453.1 34 419.5.1 376 0c-43.4.1-77 34-79.9 80.5-2.8 42.7 21.7 65.3 18.7 95.8-4.4 44.5-40.5 78.1-53.7 131.9-13 52.5.3 140.1 29.1 191.5l6.9 12.3h158.1l6.9-12.3c28.6-51.4 41.9-139.1 28.9-191.5zM408.1 83.5c1.5 24.2-14.9 43.4-18.4 76.6h-27.4c-3.5-33.4-19.9-52.2-18.4-76.6 3-47.5 61.2-47.5 64.2 0zm18.1 380.4H325.9c-18.8-42.2-27.4-107-18.2-144.2 10.7-43.1 43.5-75 52.9-127.7h31c9.4 52.7 42.2 84.6 52.9 127.7 9.1 37.2.4 102-18.3 144.2zm-245-287.6c-3-30.5 21.4-53.1 18.7-95.8C197 34 163.4.2 119.9.1 76.5.2 42.9 34 40 80.5c-2.7 42.8 21.8 65.2 18.7 95.8C54.3 221 18.4 254.2 5 308.2c-13 52.5.3 140.2 29 191.5l6.9 12.3H199l6.9-12.3c28.7-51.3 42-139 29-191.5-13.3-54-49.3-87.2-53.7-131.9zM152 83.5c1.5 24.3-14.9 43.2-18.4 76.5h-27.4c-3.5-33.5-19.9-52-18.4-76.5 3.1-47.4 61.3-47.4 64.2 0zM170.1 464H69.8C51 421.7 42.4 356.9 51.6 319.7c10.6-43 43.4-74.8 52.9-127.7h30.9c9.5 53 42.3 84.7 52.9 127.8 9.2 37.2.6 101.9-18.2 144.2z\"]\n};\nvar faBox = {\n prefix: 'far',\n iconName: 'box',\n icon: [512, 512, [], \"f466\", \"M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-1.6 4.9-2.5 10-2.5 15.2V464c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V199.8c0-5.2-.8-10.3-2.5-15.2zm-48.1 7.4H280V48h133.4l48 144zM98.6 48H232v144H50.6l48-144zM48 464V240h416v224H48z\"]\n};\nvar faBoxAlt = {\n prefix: 'far',\n iconName: 'box-alt',\n icon: [448, 512, [], \"f49a\", \"M447.9 176c0-10.6-2.6-21-7.6-30.3l-49.1-91.9c-4.3-13-16.5-21.8-30.3-21.8H87.1c-13.8 0-26 8.8-30.4 21.9L7.6 145.8c-5 9.3-7.6 19.7-7.6 30.3C.1 236.6 0 448 0 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32 0 0-.1-211.4-.1-272zm-97.1-96l42.8 80H278.4l-24-80h96.4zM97.2 80h96.4l-24 80H54.4l42.8-80zM48 432c0-42.3.1-157.9.1-224H160v64c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-64h111.9c0 66.1 0 181.8.1 224H48z\"]\n};\nvar faBoxBallot = {\n prefix: 'far',\n iconName: 'box-ballot',\n icon: [576, 512, [], \"f735\", \"M573.8 282.5L520 148.3c-4.8-12.3-16.6-20.3-29.8-20.3H448V32c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32v96H85.8c-13.2 0-25 8.1-29.8 20.3L2.2 282.4C.8 286.1 0 290 0 294l.2 185.9c-.1 17.7 14.3 32.2 32 32.2h511.6c17.7 0 32.1-14.4 32-32.2L576 294c0-4-.8-7.9-2.2-11.5zM176 48h224v144H176V48zM96.7 176H128v64h320v-64h31.3L520 280H55.9l40.8-104zM48.3 464l.7-136h478l.8 136H48.3z\"]\n};\nvar faBoxCheck = {\n prefix: 'far',\n iconName: 'box-check',\n icon: [640, 512, [], \"f467\", \"M492.5 133.4L458.9 32.8C452.4 13.2 434.1 0 413.4 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-1.6 4.9-2.5 10-2.5 15.2V464c0 26.5 21.5 48 48 48h400c106 0 192-86 192-192 0-90.7-63-166.5-147.5-186.6zM280 48h133.4l26.8 80.4c-49.8 2-94.7 22.7-127.7 55.6H280V48zM98.6 48H232v136H53.3L98.6 48zM48 464V232h229.5c-13.6 26.4-21.5 56.3-21.5 88 0 57.4 25.3 108.8 65.3 144H48zm400 0c-79.4 0-144-64.6-144-144s64.6-144 144-144 144 64.6 144 144-64.6 144-144 144zm64.6-205.7c-3.1-3.1-8.1-3.1-11.2 0l-69.9 69.3-30.3-30.6c-3.1-3.1-8.1-3.1-11.2 0l-18.7 18.6c-3.1 3.1-3.1 8.1 0 11.2l54.4 54.9c3.1 3.1 8.1 3.1 11.2 0l94.2-93.5c3.1-3.1 3.1-8.1 0-11.2l-18.5-18.7z\"]\n};\nvar faBoxFragile = {\n prefix: 'far',\n iconName: 'box-fragile',\n icon: [512, 512, [], \"f49b\", \"M448 0H64C28.7 0 0 28.7 0 64v384c0 35.3 28.7 64 64 64h384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v384zM336 96h-43.9l22.9 36.4-64 32 37 59.6-91-68.4 64-32L236.4 96H176c-8.8 0-16 7.2-16 16v97.6c0 44.7 30.7 81.6 72 92.3V368h-24c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16h-24v-66.1c41.3-10.7 72-47.6 72-92.3V112c0-8.8-7.2-16-16-16z\"]\n};\nvar faBoxFull = {\n prefix: 'far',\n iconName: 'box-full',\n icon: [640, 512, [], \"f49c\", \"M638.3 239.8L586.8 137c-4-8.1-12.1-9.5-16.7-8.9l-50.7 6.5L541.5 74c3.7-10 3.2-20.9-1.3-30.6-4.5-9.7-12.5-17-22.6-20.7L462.1 2.4c-20.7-7.6-43.7 3.2-51.3 23.9l-30.9 84.9C365 47.5 308.2 0 240 0 164.7 0 103.6 58 97.2 131.6l-27.4-3.5c-4.6-.6-12.6.9-16.7 8.9L1.7 239.8c-4.6 9.2.3 20.2 10.1 23L64 277.7V425c0 14.7 10 27.5 24.2 31l216.2 54.1c13.6 3.4 25 1.5 31 0L551.8 456c14.2-3.6 24.2-16.4 24.2-31V277.7l52.1-14.9c9.9-2.8 14.7-13.8 10.2-23zM453.2 50.3L493.7 65l-27.8 76.4-48.2 6.1 35.5-97.2zM61.7 227.2L86 178.6l154.8 19.7-41.2 68.3-137.9-39.4zM296 458.5l-184-46V291.4l97.8 27.9c8 2.3 15.2-1.8 18.5-7.3L296 199.8v258.7zm38.6-300.4L320 160l-175.4-22.3C148 87.7 189.2 48 240 48c52.9 0 96 43.1 96 96 0 4.8-.7 9.5-1.4 14.1zM528 412.5l-184 46V199.8l67.7 112.3c3.3 5.5 10.6 9.6 18.5 7.3l97.8-27.9v121zm-87.7-145.9l-41.2-68.3L554 178.6l24.3 48.6-138 39.4z\"]\n};\nvar faBoxHeart = {\n prefix: 'far',\n iconName: 'box-heart',\n icon: [448, 512, [], \"f49d\", \"M301.3 243c-23.5-19.1-54.3-10.6-70 4.8l-7.4 7.3-7.4-7.3c-15.3-15.1-46.2-24.1-70-4.8-23.6 19.1-24.8 53.5-3.7 74.2l72.6 71.3c4.7 4.6 12.3 4.6 17 0l72.6-71.3c21.1-20.7 19.9-55.1-3.7-74.2zm146.6-67c0-10.6-2.6-21-7.6-30.3l-49.1-91.9c-4.3-13-16.5-21.8-30.3-21.8H87.1c-13.8 0-26 8.8-30.4 21.9L7.6 145.8c-5 9.3-7.6 19.7-7.6 30.3C.1 236.6 0 448 0 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32 0 0-.1-211.4-.1-272zM248 80h102.8l34.2 64H248V80zM97.2 80H200v64H63l34.2-64zM48 432c0-36.5.1-163.5.1-240h351.8c0 76.5.1 203.5.1 240H48z\"]\n};\nvar faBoxOpen = {\n prefix: 'far',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M638.3 143.8L586.8 41c-4-8-12.1-9.5-16.7-8.9L320 64 69.8 32.1c-4.6-.6-12.6.9-16.6 8.9L1.7 143.8c-4.6 9.2.3 20.2 10.1 23L64 181.7V393c0 14.7 10 27.5 24.2 31l216.2 54.1c6 1.5 17.4 3.4 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V181.7l52.1-14.9c9.9-2.8 14.7-13.8 10.2-23zM86 82.6l154.8 19.7-41.2 68.3-138-39.4L86 82.6zm26 112.8l97.8 27.9c8 2.3 15.2-1.8 18.5-7.3L296 103.8v322.7l-184-46V195.4zm416 185.1l-184 46V103.8l67.7 112.3c3.3 5.5 10.6 9.6 18.5 7.3l97.8-27.9v185zm-87.7-209.9l-41.2-68.3L554 82.6l24.3 48.6-138 39.4z\"]\n};\nvar faBoxTissue = {\n prefix: 'far',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M480,208H410.67L448,96H338.6A70.2,70.2,0,0,1,272,48,70.19,70.19,0,0,0,205.4,0H64l46.22,208H32A32,32,0,0,0,0,240V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V240A32,32,0,0,0,480,208ZM205.4,48a22.16,22.16,0,0,1,21.06,15.18A118.06,118.06,0,0,0,338.6,144h42.8l-48,144H177.17L123.84,48ZM48,256h72.89L128,288H112a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16H400a16,16,0,0,0,16-16V304a16,16,0,0,0-16-16H384l10.67-32H464V368H48ZM464,464H48V416H464Z\"]\n};\nvar faBoxUp = {\n prefix: 'far',\n iconName: 'box-up',\n icon: [512, 512, [], \"f49f\", \"M400 368H112c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h288c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM448 0H64C28.7 0 0 28.7 0 64v384c0 35.3 28.7 64 64 64h384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v384zM358.2 99c-3.1-3.8-9.4-3.8-12.5 0l-64 80c-4.2 5.3-.4 13 6.2 13h32v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V192h32c6.7 0 10.4-7.7 6.2-13l-63.9-80zM128 192v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V192h32c6.7 0 10.4-7.7 6.2-13l-64-80c-3.1-3.8-9.4-3.8-12.5 0l-64 80c-4.2 5.3-.4 13 6.2 13H128z\"]\n};\nvar faBoxUsd = {\n prefix: 'far',\n iconName: 'box-usd',\n icon: [448, 512, [], \"f4a0\", \"M447.9 176c0-10.6-2.6-21-7.6-30.3l-49.1-91.9c-4.3-13-16.5-21.8-30.3-21.8H87.1c-13.8 0-26 8.8-30.4 21.9L7.6 145.8c-5 9.3-7.6 19.7-7.6 30.3C.1 236.6 0 448 0 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32 0 0-.1-211.4-.1-272zM248 80h102.8l34.2 64H248V80zM97.2 80H200v64H63l34.2-64zM48 432c0-36.5.1-163.5.1-240h351.8c0 76.5.1 203.5.1 240H48zm201.3-129.7l-42.2-11.4c-4.2-1.1-7.1-4.5-7.1-8.3 0-4.8 4.5-8.7 10.1-8.7h26.3c4.1 0 8.2 1 11.8 3 3.1 1.7 6.8 1.4 9.2-1.2l12.1-12.7c3.1-3.3 2.6-8.6-1.1-11.2-8.3-5.7-18.1-8.9-28.3-9.5V232c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v10.2c-22.2 1.1-40 18.6-40 40.3 0 18.2 12.6 34.3 30.7 39.2l42.2 11.4c4.2 1.1 7.1 4.5 7.1 8.3 0 4.8-4.5 8.7-10.1 8.7h-26.3c-4.1 0-8.2-1-11.8-3-3.1-1.7-6.8-1.4-9.2 1.2L178.6 361c-3.1 3.3-2.6 8.6 1.1 11.2 8.3 5.7 18.1 8.9 28.3 9.5V392c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-10.2c22.2-1.1 40-18.6 40-40.3 0-18.2-12.6-34.3-30.7-39.2z\"]\n};\nvar faBoxes = {\n prefix: 'far',\n iconName: 'boxes',\n icon: [640, 512, [], \"f468\", \"M592 224H480V48c0-26.5-21.5-48-48-48H208c-26.5 0-48 21.5-48 48v176H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h544c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zM208 48h64v90.7l48-21.3 48 21.3V48h64v176H208V48zm88 416H48V272h80v90.7l48-21.3 48 21.3V272h72v192zm296 0H344V272h72v90.7l48-21.3 48 21.3V272h80v192z\"]\n};\nvar faBoxesAlt = {\n prefix: 'far',\n iconName: 'boxes-alt',\n icon: [640, 512, [], \"f4a1\", \"M592 224H480V48c0-26.5-21.5-48-48-48H208c-26.5 0-48 21.5-48 48v176H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h544c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zM208 48h80v72c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V48h80v176H208V48zm88 416H48V272h96v72c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-72h88v192zm296 0H344V272h88v72c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-72h96v192z\"]\n};\nvar faBoxingGlove = {\n prefix: 'far',\n iconName: 'boxing-glove',\n icon: [448, 512, [], \"f438\", \"M252.4 360.8l7.2 14.3c2 4 .4 8.8-3.6 10.7L227.8 400l28.2 14.1c4 2 5.6 6.8 3.6 10.7l-7.2 14.3c-2 4-6.8 5.6-10.7 3.6L192 417.9l-49.7 24.8c-4 2-8.8.4-10.7-3.6l-7.2-14.3c-2-4-.4-8.8 3.6-10.7l28.2-14.1-28.2-14.1c-4-2-5.6-6.8-3.6-10.7l7.2-14.3c2-4 6.8-5.6 10.7-3.6l49.7 24.8 49.7-24.8c3.9-2 8.7-.4 10.7 3.5zM448 229.5c0 55.7-23.3 110.2-63.9 149.6L368 394.7v77.9c0 21.8-17.9 39.5-40 39.5H72c-22.1 0-40-17.7-40-39.5v-82.8l-17-102C5 229.5 0 170 0 111 0 49.8 50.8 0 113.2 0H288c61.8 0 112 49.8 112 111v33.2c28.8 18.1 48 49.5 48 85.3zm-48 0c0-29.5-25.1-53.5-56-53.5h-31.3c-21.5 0-40.2 17.6-40.7 39.1-.5 20.2 14.2 37.2 33.4 40.4 3.8.6 6.6 4 6.6 7.9v32.3c0 4.7-4.1 8.4-8.8 8-44.4-4.4-79.2-42-79.2-87.6 0-8.4 1.6-16.3 3.7-24h-70.5c-30.6 0-59.5-10.9-82.3-30.8-3.5-3.1-3.7-8.4-.4-11.7l11.3-11.3c3-3 7.7-3.1 10.9-.4 16.9 14.4 38.1 22.3 60.5 22.3h87.4c16.2-19.4 40.2-32 67.3-32h32c10.2 0 8 6 8-17 0-35.3-28.1-63-64-63H113.2C77.2 48 48 76.2 48 111c0 95.9 11.4 151 31.4 273H104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H80v48h240v-48h-24c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h24c0-6.2 2.5-12.1 6.9-16.4l23.8-23.1c31.8-30.7 49.3-71.6 49.3-115z\"]\n};\nvar faBrackets = {\n prefix: 'far',\n iconName: 'brackets',\n icon: [448, 512, [], \"f7e9\", \"M128 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h96a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H48V80h80a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm288 0h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h80v352h-80a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h96a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32z\"]\n};\nvar faBracketsCurly = {\n prefix: 'far',\n iconName: 'brackets-curly',\n icon: [576, 512, [], \"f7ea\", \"M208 32h-88a56 56 0 0 0-56 56v77.49a40 40 0 0 1-11.72 28.29L7 239a24 24 0 0 0 0 34l45.24 45.24A40 40 0 0 1 64 346.52V424a56 56 0 0 0 56 56h88a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-88a8 8 0 0 1-8-8v-77.48a88.06 88.06 0 0 0-25.78-62.24L57.93 256l28.29-28.28A88.06 88.06 0 0 0 112 165.48V88a8 8 0 0 1 8-8h88a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm361 207l-45.25-45.24A40.07 40.07 0 0 1 512 165.48V88a56 56 0 0 0-56-56h-88a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h88a8 8 0 0 1 8 8v77.48a88 88 0 0 0 25.78 62.24L518.06 256l-28.28 28.28A88 88 0 0 0 464 346.52V424a8 8 0 0 1-8 8h-88a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h88a56 56 0 0 0 56-56v-77.49a40 40 0 0 1 11.72-28.29L569 273a24 24 0 0 0 0-34z\"]\n};\nvar faBraille = {\n prefix: 'far',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M112 256c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zM64 392c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm0-344c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm160 184c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm0 160c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm0-344c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm224 184c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm0 160c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm0-344c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm160 184c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm0 160c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm0-320c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z\"]\n};\nvar faBrain = {\n prefix: 'far',\n iconName: 'brain',\n icon: [544, 512, [], \"f5dc\", \"M511.9 228.2c1.9-7.5 2.9-15.2 2.9-23 0-33-16.7-63-43.7-80.6-.4-39.7-29.4-72.8-67.5-79.8C389.9 17.8 361.8 0 330.3 0c-22.8 0-43.4 9.2-58.3 24.1A82.316 82.316 0 0 0 213.7 0c-31.4 0-59.6 17.8-73.3 44.9-38.1 7-67.1 40.1-67.5 79.8-27.1 17.6-43.7 47.6-43.7 80.6 0 7.7 1 15.4 2.9 23C11.9 246.3 0 272.2 0 299.5c0 33 16.7 63 43.7 80.6.5 47.5 38.5 86.2 85.8 88.3 15.9 26.7 44.9 43.6 76.8 43.6 26 0 49.2-11.2 65.6-28.8 16.4 17.6 39.6 28.8 65.6 28.8 31.9 0 60.9-16.9 76.8-43.6 47.4-2 85.4-40.8 85.9-88.3 27-17.6 43.7-47.7 43.7-80.6.1-27.3-11.8-53.2-32-71.3zm-264 194.6c0 22.8-18.6 41.2-41.5 41.2-32.9 0-39.5-29.5-45.6-47.6l-20.3 3.4c-24 4-48.5-15.3-48.5-40.5 0-2.8 4.7-27.4 4.7-27.4l-18.2-7.5c-36.9-15.2-41.3-66.1-5.5-86.6l19.5-11.2-9.9-20.1C65 190.7 94 166 107.7 160.4l18.9-7.7c-5-21.9-5.5-22.8-5.5-27.2 0-18.8 15.3-34 31.9-34.1l22.9 1.2 4.8-18.9c3.9-15.1 17.4-25.6 32.9-25.6 18.9 0 34.2 15.2 34.2 34l.1 340.7zm217.7-78.5l-18.3 7.5s4.6 24.6 4.6 27.4c0 25.2-24.5 44.4-48.5 40.5l-20.3-3.4c-6.1 18.2-12.7 47.6-45.6 47.6-22.9 0-41.5-18.5-41.5-41.2V82c0-18.8 15.3-34 34.2-34 15.5 0 29.1 10.5 32.9 25.6l4.8 18.9 22.9-1.2c16.5.1 31.9 15.4 31.9 34.1 0 4.4-.4 5.3-5.5 27.2l18.9 7.7c13.7 5.6 42.7 30.2 25.1 65.9l-9.9 20.1 19.5 11.2c36.1 20.7 31.7 71.6-5.2 86.8z\"]\n};\nvar faBreadLoaf = {\n prefix: 'far',\n iconName: 'bread-loaf',\n icon: [640, 512, [], \"f7eb\", \"M400 32H240C107.45 32 0 103.63 0 192c0 35.35 26.86 64 60 64h4v192a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V256h4c33.14 0 60-28.65 60-64 0-88.37-107.45-160-240-160zm20 176h-52v224H112V208H60c-5.79 0-12-6.43-12-16 0-59.66 89.72-112 192-112s192 52.34 192 112c0 9.57-6.21 16-12 16z\"]\n};\nvar faBreadSlice = {\n prefix: 'far',\n iconName: 'bread-slice',\n icon: [576, 512, [], \"f7ec\", \"M288 0C110.12 0 0 93.77 0 180.66c0 37.74 26 66.42 64 73.54V480a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V254.41c39.71-6.85 64-35.73 64-73.75C576 93.77 465.88 0 288 0zm215.84 207.11L464 208v256H112V208l-39.16-1C65.37 205.62 48 200.25 48 180.66 48 126.44 133.46 48 288 48s240 78.44 240 132.66c0 14.99-7.9 23.64-24.16 26.45z\"]\n};\nvar faBriefcase = {\n prefix: 'far',\n iconName: 'briefcase',\n icon: [512, 512, [], \"f0b1\", \"M464 128h-80V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zM176 80h160v48H176V80zM54 176h404c3.31 0 6 2.69 6 6v74H48v-74c0-3.31 2.69-6 6-6zm404 256H54c-3.31 0-6-2.69-6-6V304h144v24c0 13.25 10.75 24 24 24h80c13.25 0 24-10.75 24-24v-24h144v122c0 3.31-2.69 6-6 6z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'far',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M344 288h-56v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56h-56c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h56v56c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-56h56c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm120-160H352V80c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM208 80h96v48h-96V80zm256 378c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V182c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v276z\"]\n};\nvar faBringForward = {\n prefix: 'far',\n iconName: 'bring-forward',\n icon: [512, 512, [], \"f856\", \"M352 304V48a48 48 0 0 0-48-48H48A48 48 0 0 0 0 48v256a48 48 0 0 0 48 48h256a48 48 0 0 0 48-48zM48 48h256v256H48zm416 112h-80v48h80v256H208v-80h-48v80a48 48 0 0 0 48 48h256a48 48 0 0 0 48-48V208a48 48 0 0 0-48-48zM240 416a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16V256a16 16 0 0 0-16-16h-32v144H240z\"]\n};\nvar faBringFront = {\n prefix: 'far',\n iconName: 'bring-front',\n icon: [640, 512, [], \"f857\", \"M480 368V144a48 48 0 0 0-48-48H208a48 48 0 0 0-48 48v224a48 48 0 0 0 48 48h224a48 48 0 0 0 48-48zM208 144h224v224H208zM48 48h160v16h48V48a48 48 0 0 0-48-48H48A48 48 0 0 0 0 48v160a48 48 0 0 0 48 48h80v-48H48zm544 208h-80v48h80v160H432v-16h-48v16a48 48 0 0 0 48 48h160a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48zM96 160h32v-16a79.24 79.24 0 0 1 16.41-48H96zm448 192h-32v16a79.24 79.24 0 0 1-16.41 48H544z\"]\n};\nvar faBroadcastTower = {\n prefix: 'far',\n iconName: 'broadcast-tower',\n icon: [640, 512, [], \"f519\", \"M168.67 192c11 0 18.61-10.83 14.85-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C187.29 74.83 179.68 64 168.67 64h-17.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24h17.73zm-120.8-64c0-37.81 9.46-73.41 26.05-104.66C79.56 12.72 71.97 0 59.97 0H40.61c-6.27 0-12.13 3.59-14.73 9.31C8.22 48.13-1.31 91.41.15 137.12c1.24 38.89 10.78 75.94 26.53 109.73 2.62 5.63 8.41 9.14 14.61 9.14h18.87c12.02 0 19.6-12.74 13.94-23.37C57.43 201.39 47.87 165.84 47.87 128zM614.07 9.29C611.46 3.58 605.61 0 599.34 0h-19.43c-11.98 0-19.66 12.66-14.02 23.25 23.26 43.67 32.56 95.83 21.53 150.66-4.16 20.72-11.49 40.35-21.26 58.57-5.72 10.68 1.8 23.52 13.91 23.52h19.24c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.93-118.71zM489.06 64h-17.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h17.73c7.01 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zM372.7 187.76C389.31 173.1 400 151.89 400 128c0-44.18-35.82-80-80.01-80-5.52 0-10.92.56-16.12 1.62a79.525 79.525 0 0 0-28.61 12.04c-21.28 14.38-35.27 38.72-35.27 66.34 0 23.86 10.83 44.86 27.4 59.52L143.98 483.68c-3.4 8.16.46 17.52 8.62 20.92l14.78 6.16c8.16 3.4 17.53-.46 20.93-8.62L245.26 368h149.47l56.96 134.15c3.4 8.16 12.77 12.02 20.93 8.62l14.78-6.16c8.16-3.4 12.01-12.77 8.62-20.92L372.7 187.76zM320 96c17.65 0 32 14.36 32 32s-14.36 32-32 32-32-14.36-32-32 14.35-32 32-32zm-54.35 224l47.84-112.66c2.19.18 4.28.66 6.51.66 2.23 0 4.33-.48 6.52-.66L374.35 320h-108.7z\"]\n};\nvar faBroom = {\n prefix: 'far',\n iconName: 'broom',\n icon: [640, 512, [], \"f51a\", \"M636.52 31.02l-19.92-25c-5.5-6.9-15.57-8.05-22.49-2.56L363.38 181.38l-34.72-43.56c-4.82-6.05-14.03-6.02-18.81.06l-57.61 73.18c-31.09.74-103.98 6.65-151.87 44.66C38.28 304.99 0 511.31 0 511.31c15.1.66 212.37 7.35 272.15-40.1 47.71-37.87 70-107.39 77.79-137.63l84.34-39.52c7.02-3.29 9.13-12.28 4.29-18.35l-35.34-44.34 230.73-177.9c6.92-5.5 8.06-15.54 2.56-22.45zM242.27 433.73c-16.64 13.21-74.29 28.51-182.8 30.21 4.76-19.1 10.1-38.18 15.8-56.35l45.29-35.95c4.96-3.94 1.23-11.88-4.97-10.57l-26.06 5.5c13.43-35.28 27.73-63.05 40.72-73.36 27.04-21.46 71.32-31.04 109.74-33.53l59.81 75.03c-9.44 30.94-28.14 75.69-57.53 99.02zm88.06-143.88l-39.78-49.91 24.22-30.77c2.39-3.04 7-3.05 9.41-.03l43.77 54.91c2.42 3.03 1.37 7.53-2.15 9.17l-35.47 16.63z\"]\n};\nvar faBrowser = {\n prefix: 'far',\n iconName: 'browser',\n icon: [512, 512, [], \"f37e\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM48 92c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V92zm416 334c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V168h416v258zm0-310c0 6.6-5.4 12-12 12H172c-6.6 0-12-5.4-12-12V92c0-6.6 5.4-12 12-12h280c6.6 0 12 5.4 12 12v24z\"]\n};\nvar faBrush = {\n prefix: 'far',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M352 0H32C14.33 0 0 14.33 0 32v288c0 35.35 28.65 64 64 64h48v48c0 44.18 35.82 80 80 80s80-35.82 80-80v-48h48c35.35 0 64-28.65 64-64V32c0-17.67-14.33-32-32-32zm-16 48v176H48V48h288zm-16 288h-96v96c0 17.64-14.36 32-32 32s-32-14.36-32-32v-96H64c-8.82 0-16-7.18-16-16v-48h288v48c0 8.82-7.18 16-16 16z\"]\n};\nvar faBug = {\n prefix: 'far',\n iconName: 'bug',\n icon: [576, 512, [], \"f188\", \"M536 264h-64v-94.059l40.971-40.971c9.372-9.373 9.372-24.569 0-33.941-9.373-9.372-24.568-9.372-33.941 0L438.059 136H425C425 60.87 364.091 0 289 0c-75.13 0-136 60.909-136 136h-15.059l-40.97-40.971c-9.373-9.372-24.568-9.372-33.941 0-9.373 9.373-9.373 24.569 0 33.941L104 169.941V264H40c-13.255 0-24 10.745-24 24s10.745 24 24 24h64v24c0 29.275 7.91 56.733 21.694 80.365L71.029 471.03c-9.373 9.373-9.373 24.568 0 33.941 9.371 9.372 24.568 9.373 33.941 0l51.029-51.029C184.482 480.046 222.411 496 264 496h48c41.589 0 79.518-15.954 108.001-42.058l51.029 51.029c9.372 9.372 24.568 9.373 33.941 0 9.372-9.373 9.372-24.568 0-33.941l-54.665-54.665C464.09 392.734 472 365.275 472 336v-24h64c13.255 0 24-10.745 24-24s-10.745-24-24-24zM289 48c48.601 0 88 39.399 88 88H201c0-48.601 39.399-88 88-88zm23 400V260c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v188c-61.757 0-112-50.243-112-112V184h272v152c0 61.757-50.243 112-112 112z\"]\n};\nvar faBuilding = {\n prefix: 'far',\n iconName: 'building',\n icon: [448, 512, [], \"f1ad\", \"M128 148v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12zm140 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-128 96h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm128 0h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-76 84v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm76 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm180 124v36H0v-36c0-6.6 5.4-12 12-12h19.5V24c0-13.3 10.7-24 24-24h337c13.3 0 24 10.7 24 24v440H436c6.6 0 12 5.4 12 12zM79.5 463H192v-67c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v67h112.5V49L80 48l-.5 415z\"]\n};\nvar faBullhorn = {\n prefix: 'far',\n iconName: 'bullhorn',\n icon: [576, 512, [], \"f0a1\", \"M544 184.88V32.01C544 23.26 537.02 0 512.01 0H512c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64l-.48 32c0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h106.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13c19.05-11.09 32-31.49 32-55.12.01-23.64-12.94-44.04-31.99-55.13zM127.73 464c-10.76-25.45-16.21-52.31-16.21-80 0-14.22 1.72-25.34 2.6-32h64.91c-2.09 10.7-3.52 21.41-3.52 32 0 28.22 6.58 55.4 19.21 80h-66.99zM240 304H64c-8.82 0-16-7.18-16-16v-96c0-8.82 7.18-16 16-16h176v128zm256 110.7l-59.04-47.24c-42.8-34.22-94.79-55.37-148.96-61.45V173.99c54.17-6.08 106.16-27.23 148.97-61.46L496 65.3v349.4z\"]\n};\nvar faBullseye = {\n prefix: 'far',\n iconName: 'bullseye',\n icon: [496, 512, [], \"f140\", \"M248 104c-84.02 0-152 68-152 152 0 84.02 68 152 152 152 84.02 0 152-68 152-152 0-84.02-68-152-152-152zm0 256c-57.35 0-104-46.65-104-104s46.65-104 104-104 104 46.65 104 104-46.65 104-104 104zm0-352C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200zm0-256c-30.88 0-56 25.12-56 56s25.12 56 56 56 56-25.12 56-56-25.12-56-56-56z\"]\n};\nvar faBullseyeArrow = {\n prefix: 'far',\n iconName: 'bullseye-arrow',\n icon: [496, 512, [], \"f648\", \"M305.05 98.74l16.57 49.7-90.59 90.59c-9.38 9.38-9.38 24.56 0 33.94 9.37 9.37 24.56 9.38 33.94 0l90.59-90.59 49.7 16.57c7.39 2.46 15.53.54 21.04-4.96l63.67-63.67c10.8-10.8 6.46-29.2-8.04-34.04l-55.66-18.55-18.55-55.65c-4.83-14.5-23.23-18.84-34.04-8.04L310.02 77.7a20.582 20.582 0 0 0-4.97 21.04zM248 152c7.66 0 15.08.96 22.27 2.54l14.74-14.74-10.32-30.95c-.24-.73-.2-1.47-.41-2.21-8.57-1.5-17.28-2.65-26.29-2.65-84.02 0-152 68-152 152 0 84.02 68 152 152 152 84.02 0 152-68 152-152 0-9.03-1.15-17.75-2.65-26.34-.72-.21-1.49-.12-2.2-.36l-30.94-10.31-14.74 14.74c1.58 7.19 2.53 14.61 2.53 22.27 0 57.35-46.65 104-104 104s-104-46.65-104-104S190.65 152 248 152zm236.43 29.1l-35.5 35.5c-1.34 1.34-2.87 2.38-4.32 3.55 2.12 11.65 3.39 23.59 3.39 35.84 0 110.28-89.72 200-200 200s-200-89.72-200-200 89.72-200 200-200c12.34 0 24.37 1.28 36.1 3.43 1.16-1.42 1.98-3.04 3.3-4.36l35.5-35.5A248.155 248.155 0 0 0 248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248c0-26.11-4.09-51.26-11.57-74.9z\"]\n};\nvar faBullseyePointer = {\n prefix: 'far',\n iconName: 'bullseye-pointer',\n icon: [496, 512, [], \"f649\", \"M242.16 240.67L27.98 301.55c-15.17 4.31-16.95 25.1-2.73 31.92l68.47 32.89-89.17 89.17c-6.07 6.06-6.07 15.9 0 21.96l21.96 21.96c6.07 6.06 15.9 6.06 21.96 0l89.17-89.17 32.89 68.47c6.83 14.22 27.61 12.44 31.92-2.73l60.87-214.18c3.68-12.91-8.25-24.83-21.16-21.17zm27.36 117.03l-14.08 49.55C335.92 403.3 400 337.46 400 256c0-84.02-68-152-152-152-81.47 0-147.3 64.1-151.25 144.57l49.55-14.08C156.25 187.44 198.04 152 248 152c57.35 0 104 46.65 104 104 0 49.96-35.44 91.75-82.48 101.7zM248 8C111.03 8 0 119.03 0 256c0 7.3.47 14.49 1.09 21.63 3.46-1.97 7-3.87 10.99-5l36.24-10.3c-.07-2.12-.32-4.19-.32-6.33 0-110.28 89.72-200 200-200s200 89.72 200 200-89.72 200-200 200c-2.14 0-4.21-.25-6.33-.32l-10.3 36.24c-1.14 4.02-3.15 7.5-5.14 10.98 7.19.63 14.42 1.1 21.77 1.1 136.97 0 248-111.03 248-248S384.97 8 248 8z\"]\n};\nvar faBurgerSoda = {\n prefix: 'far',\n iconName: 'burger-soda',\n icon: [640, 512, [], \"f858\", \"M110.47 464L81.72 176H336a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H206.74l20-80H272a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16h-51.5a40 40 0 0 0-38.81 30.3L157.26 128H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h17.48l30.57 306.29A31.88 31.88 0 0 0 96 512h160a31.56 31.56 0 0 0 10.11-1.94A115.79 115.79 0 0 1 238.3 464zM528 312a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm-80-16a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm192 80c0-12.92-6.53-23.88-16-31.19a71.86 71.86 0 0 0-5.11-74.32C585.46 222.87 518.41 192.06 448 192c-70.36.06-137.41 30.87-170.82 78.49a71.83 71.83 0 0 0-5.18 74.32c-9.51 7.31-16 18.27-16 31.19a39.64 39.64 0 0 0 12.65 28.91A59.64 59.64 0 0 0 264 428a84.09 84.09 0 0 0 84 84h200a84.09 84.09 0 0 0 84-84 59.64 59.64 0 0 0-4.65-23.09A39.64 39.64 0 0 0 640 376zm-323.56-77.95c22.77-32.45 72.89-58 131.56-58.05s108.8 25.6 131.57 58.06A24.07 24.07 0 0 1 559.84 336H336.17a24.07 24.07 0 0 1-19.73-37.95zM548 464H348a36 36 0 0 1-36-36 12 12 0 0 1 12-12h248a12 12 0 0 1 12 12 36 36 0 0 1-36 36zM368 312a16 16 0 1 0-16-16 16 16 0 0 0 16 16z\"]\n};\nvar faBurn = {\n prefix: 'far',\n iconName: 'burn',\n icon: [384, 512, [], \"f46a\", \"M192 0C86.2 93.5 0 214.4 0 298.1 0 424 79 512 192 512s192-88 192-213.9c0-84-87.3-205.6-192-298.1zm0 65.2c51.4 51.1 144 158.5 144 232.9 0 29.5-5.6 55.6-15.1 78.4-3.5-74.7-83.7-157.9-128.9-208.8-45.8 51.5-125.4 133.8-128.9 208.8-9.4-22.8-15.1-49-15.1-78.4 0-74.2 92.6-181.7 144-232.9zm-18.1 397c-38.1-7.5-63.4-38.7-63.4-81.1 0-20.6 13.5-64.6 81.5-141.1 68 76.5 81.5 120.5 81.5 141.1 0 42.4-25.3 73.7-63.4 81.1-20.9 2.4-15.4 2.4-36.2 0z\"]\n};\nvar faBurrito = {\n prefix: 'far',\n iconName: 'burrito',\n icon: [512, 512, [], \"f7ed\", \"M512 123a74.13 74.13 0 0 0-52.26-70.74A74.05 74.05 0 0 0 358.12 6.73a80.49 80.49 0 0 0-106 41.57L34 266.45a116 116 0 0 0 0 164.05L81.5 478a116 116 0 0 0 164.05 0L463.7 259.87a80.49 80.49 0 0 0 41.57-106A73.46 73.46 0 0 0 512 123zM163.52 464a67.54 67.54 0 0 1-48.08-19.92l-47.52-47.52a67.27 67.27 0 0 1-17.1-29.71A216.16 216.16 0 0 0 112 376c92.14 0 170.78-58.11 201.75-139.52a171.27 171.27 0 0 1 98.57 6.9l-200.7 200.7a67.55 67.55 0 0 1-48.1 19.92zM268.43 99.88A167.07 167.07 0 0 1 280 160c0 92.64-75.38 168-168 168a168 168 0 0 1-56.44-10.07 67.89 67.89 0 0 1 12.37-17.54z\"]\n};\nvar faBus = {\n prefix: 'far',\n iconName: 'bus',\n icon: [512, 512, [], \"f207\", \"M368 368c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-224 0c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm344-240h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h16c17.67 0 32-14.33 32-32v-32h224v32c0 17.67 14.33 32 32 32h16c17.67 0 32-14.33 32-32v-32c17.67 0 32-14.33 32-32V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zm-56 272H80V272h352v128zm0-176H80v-64h352v64zm0-112H80V85.43C94.18 71.6 156.69 48 256 48s161.82 23.6 176 37.43V112z\"]\n};\nvar faBusAlt = {\n prefix: 'far',\n iconName: 'bus-alt',\n icon: [512, 512, [], \"f55e\", \"M144 304c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm344-176h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h16c17.67 0 32-14.33 32-32v-32h224v32c0 17.67 14.33 32 32 32h16c17.67 0 32-14.33 32-32v-32c17.67 0 32-14.33 32-32V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM80 160h152v64H80v-64zm352 240H80V272h352v128zm0-176H280v-64h152v64zm0-112h-96c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H80V85.43C94.18 71.6 156.69 48 256 48s161.82 23.6 176 37.43V112zm-64 256c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32z\"]\n};\nvar faBusSchool = {\n prefix: 'far',\n iconName: 'bus-school',\n icon: [512, 512, [], \"f5dd\", \"M488 128h-24V80c0-44.8-92.11-80-208-80S48 35.2 48 80v48H24c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h16.91C25.59 273.01 16 295.3 16 320v64c0 29.95 20.65 54.88 48.43 61.87-.05.74-.43 1.37-.43 2.13v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32c0-.76-.38-1.39-.43-2.13C475.35 438.88 496 413.95 496 384v-64c0-24.7-9.59-46.99-24.91-64H488c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM96 84.4C108.24 71.08 164.99 48 256 48s147.76 23.08 160 36.4V112h-80c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H96V84.4zM416 160v64H272v-64h144zm-320 0h144v64H96v-64zm352 224c0 8.82-7.18 16-16 16H80c-8.82 0-16-7.18-16-16v-64c0-26.47 21.53-48 48-48h288c26.47 0 48 21.53 48 48v64zm-80-80c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-224 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faBusinessTime = {\n prefix: 'far',\n iconName: 'business-time',\n icon: [640, 512, [], \"f64a\", \"M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM216 320h80c13.25 0 24-10.75 24-24v-24h28.68a177.277 177.277 0 0 1 46.45-48H48v-74c0-3.31 2.69-6 6-6h404c3.31 0 6 2.69 6 6v45.06c10.39-1.92 21.06-3.06 32-3.06 5.4 0 10.72.33 16 .81V144c0-26.51-21.49-48-48-48h-80V48c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h291.43a174.578 174.578 0 0 1-16.37-48H54c-3.31 0-6-2.69-6-6V272h144v24c0 13.25 10.75 24 24 24zM176 48h160v48H176V48z\"]\n};\nvar faCabinetFiling = {\n prefix: 'far',\n iconName: 'cabinet-filing',\n icon: [512, 512, [], \"f64b\", \"M464 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V48c0-26.51-21.49-48-48-48zm0 464H48V280h416v184zm0-232H48V48h416v184zm-304-56h16c8.84 0 16-7.16 16-16v-8h128v8c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-24c0-17.67-14.33-32-32-32H176c-17.67 0-32 14.33-32 32v24c0 8.84 7.16 16 16 16zm0 232h16c8.84 0 16-7.16 16-16v-8h128v8c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-24c0-17.67-14.33-32-32-32H176c-17.67 0-32 14.33-32 32v24c0 8.84 7.16 16 16 16z\"]\n};\nvar faCactus = {\n prefix: 'far',\n iconName: 'cactus',\n icon: [512, 512, [], \"f8a7\", \"M240 129.94a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm32 224a16 16 0 1 0 16 16 16 16 0 0 0-16-16zM464 224a48 48 0 0 0-48 48v64a16 16 0 0 1-16 16h-48V101.43c0-52-38.93-98.58-90.84-101.3C259.43 0 257.71 0 256 0a96 96 0 0 0-96 96v128h-48a16 16 0 0 1-16-16v-64a48 48 0 0 0-96 0v64a112 112 0 0 0 112 112h48v160a32 32 0 0 0 32 32h128a32 32 0 0 0 32-32v-32h48a112 112 0 0 0 112-112v-64a48 48 0 0 0-48-48zM304 464h-96V96a48 48 0 0 1 48-48l2.65.07c25 1.31 45.35 25.25 45.35 53.36z\"]\n};\nvar faCalculator = {\n prefix: 'far',\n iconName: 'calculator',\n icon: [448, 512, [], \"f1ec\", \"M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zm0 464H48V208h352v256zm0-304H48V48h352v112zM108.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8v-38.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v38.4c0 6.4 6.4 12.8 12.8 12.8zm192 96h38.4c6.4 0 12.8-6.4 12.8-12.8V268.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-38.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v38.4c0 6.4 6.4 12.8 12.8 12.8zm96-96h38.4c6.4 0 12.8-6.4 12.8-12.8v-38.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v38.4c0 6.4 6.4 12.8 12.8 12.8zm0 96h38.4c6.4 0 12.8-6.4 12.8-12.8v-38.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v38.4c0 6.4 6.4 12.8 12.8 12.8z\"]\n};\nvar faCalculatorAlt = {\n prefix: 'far',\n iconName: 'calculator-alt',\n icon: [512, 512, [], \"f64c\", \"M477.71 0H34.29C15.35 0 0 15.35 0 34.29v443.43C0 496.65 15.35 512 34.29 512h443.43c18.94 0 34.29-15.35 34.29-34.29V34.29C512 15.35 496.65 0 477.71 0zM232 464H48V280h184v184zm0-232H48V48h184v184zm232 232H280V280h184v184zm0-232H280V48h184v184zm-360-72h80c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8h-80c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8zm224 248h80c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8h-80c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8zm0-48h80c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8h-80c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8zm0-200h24v24c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-24h24c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8h-24v-24c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v24h-24c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8zM104.4 396.28l11.31 11.31c3.12 3.12 8.19 3.12 11.31 0L144 390.63l16.97 16.97c3.12 3.12 8.19 3.12 11.31 0l11.31-11.31c3.12-3.12 3.12-8.19 0-11.31L166.63 368l16.97-16.97c3.12-3.12 3.12-8.19 0-11.31l-11.31-11.31c-3.12-3.12-8.19-3.12-11.31 0L144 345.37l-16.97-16.97c-3.12-3.12-8.19-3.12-11.31 0l-11.31 11.31c-3.12 3.12-3.12 8.19 0 11.31L121.37 368l-16.97 16.97c-3.12 3.12-3.12 8.19 0 11.31z\"]\n};\nvar faCalendar = {\n prefix: 'far',\n iconName: 'calendar',\n icon: [448, 512, [], \"f133\", \"M400 64h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V160h352v298c0 3.3-2.7 6-6 6z\"]\n};\nvar faCalendarAlt = {\n prefix: 'far',\n iconName: 'calendar-alt',\n icon: [448, 512, [], \"f073\", \"M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCalendarCheck = {\n prefix: 'far',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M400 64h-48V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H160V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V160h352v298a6 6 0 0 1-6 6zm-52.849-200.65L198.842 404.519c-4.705 4.667-12.303 4.637-16.971-.068l-75.091-75.699c-4.667-4.705-4.637-12.303.068-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l44.104 44.461 111.072-110.181c4.705-4.667 12.303-4.637 16.971.068l22.536 22.718c4.667 4.705 4.636 12.303-.069 16.97z\"]\n};\nvar faCalendarDay = {\n prefix: 'far',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M112 368h96c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V160h352v298z\"]\n};\nvar faCalendarEdit = {\n prefix: 'far',\n iconName: 'calendar-edit',\n icon: [448, 512, [], \"f333\", \"M243.1 234.1l46.8 46.8c2 2 2 5.2 0 7.2L175.4 402.6l-48.2 5.4c-6.4.7-11.9-4.7-11.2-11.2l5.4-48.2 114.5-114.5c2-2 5.2-2 7.2 0zm83-10.8l-25.4-25.4c-7.9-7.9-20.7-7.9-28.6 0l-19.5 19.5c-2 2-2 5.2 0 7.2l46.8 46.8c2 2 5.2 2 7.2 0l19.5-19.5c7.9-7.9 7.9-20.7 0-28.6zM448 112v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCalendarExclamation = {\n prefix: 'far',\n iconName: 'calendar-exclamation',\n icon: [448, 512, [], \"f334\", \"M188.6 212.7l6.5 104c.4 6.3 5.6 11.3 12 11.3h33.8c6.3 0 11.6-4.9 12-11.3l6.5-104c.4-6.9-5.1-12.7-12-12.7h-46.8c-6.9 0-12.4 5.8-12 12.7zM264 384c0 22.1-17.9 40-40 40s-40-17.9-40-40 17.9-40 40-40 40 17.9 40 40zM400 64h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V160h352v298c0 3.3-2.7 6-6 6z\"]\n};\nvar faCalendarMinus = {\n prefix: 'far',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M124 328c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H124zm324-216v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCalendarPlus = {\n prefix: 'far',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M336 292v24c0 6.6-5.4 12-12 12h-76v76c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12v-76h-76c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h76v-76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v76h76c6.6 0 12 5.4 12 12zm112-180v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCalendarStar = {\n prefix: 'far',\n iconName: 'calendar-star',\n icon: [448, 512, [], \"f736\", \"M167 331.4l-9.4 54.6c-1.7 9.9 8.7 17.2 17.4 12.6l48.9-25.8 48.9 25.8c8.7 4.6 19.1-2.8 17.4-12.6l-9.4-54.6 39.6-38.6c7.1-6.9 3.2-19-6.6-20.5l-54.7-8-24.5-49.6c-4.4-8.8-17.1-9-21.5 0l-24.5 49.6-54.7 8c-9.8 1.4-13.7 13.5-6.6 20.5l39.7 38.6zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V160h352v298z\"]\n};\nvar faCalendarTimes = {\n prefix: 'far',\n iconName: 'calendar-times',\n icon: [448, 512, [], \"f273\", \"M311.7 374.7l-17 17c-4.7 4.7-12.3 4.7-17 0L224 337.9l-53.7 53.7c-4.7 4.7-12.3 4.7-17 0l-17-17c-4.7-4.7-4.7-12.3 0-17l53.7-53.7-53.7-53.7c-4.7-4.7-4.7-12.3 0-17l17-17c4.7-4.7 12.3-4.7 17 0l53.7 53.7 53.7-53.7c4.7-4.7 12.3-4.7 17 0l17 17c4.7 4.7 4.7 12.3 0 17L257.9 304l53.7 53.7c4.8 4.7 4.8 12.3.1 17zM448 112v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCalendarWeek = {\n prefix: 'far',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M112 304h224c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V160h352v298z\"]\n};\nvar faCamcorder = {\n prefix: 'far',\n iconName: 'camcorder',\n icon: [576, 512, [], \"f8a8\", \"M543.86 160a32.13 32.13 0 0 0-18.27 5.73l-109.59 75V224a64 64 0 0 0-64-64H96v-40a40 40 0 0 1 40-40h168a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H136a88 88 0 0 0-88 88v42.26A63.85 63.85 0 0 0 0 224v192a64 64 0 0 0 64 64h288a64 64 0 0 0 64-64v-16.8l109.59 75a32 32 0 0 0 18.26 5.8c16.63 0 32.15-13 32.15-31.59V191.5c0-18.5-15.49-31.5-32.14-31.5zM368 416a16 16 0 0 1-16 16H64a16 16 0 0 1-16-16V224a16 16 0 0 1 16-16h288a16 16 0 0 1 16 16zm160 1.69L416 341v-42.09l112-76.68zM304 256H112a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faCamera = {\n prefix: 'far',\n iconName: 'camera',\n icon: [512, 512, [], \"f030\", \"M342.7 144H464v288H48V144h121.3l24-64h125.5l23.9 64zM324.3 32h-131c-20 0-37.9 12.4-44.9 31.1L136 96H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V144c0-26.5-21.5-48-48-48h-88l-14.3-38c-5.8-15.7-20.7-26-37.4-26zM256 408c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-192c-39.7 0-72 32.3-72 72s32.3 72 72 72 72-32.3 72-72-32.3-72-72-72z\"]\n};\nvar faCameraAlt = {\n prefix: 'far',\n iconName: 'camera-alt',\n icon: [512, 512, [], \"f332\", \"M256 408c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-192c-39.7 0-72 32.3-72 72s32.3 72 72 72 72-32.3 72-72-32.3-72-72-72zm-24 72c0-13.2 10.8-24 24-24 8.8 0 16-7.2 16-16s-7.2-16-16-16c-30.9 0-56 25.1-56 56 0 8.8 7.2 16 16 16s16-7.2 16-16zm110.7-145H464v288H48V143h121.3l24-64h125.5l23.9 64zM324.3 31h-131c-20 0-37.9 12.4-44.9 31.1L136 95H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V143c0-26.5-21.5-48-48-48h-88l-14.3-38c-5.8-15.7-20.7-26-37.4-26z\"]\n};\nvar faCameraHome = {\n prefix: 'far',\n iconName: 'camera-home',\n icon: [448, 512, [], \"f8fe\", \"M224,160a64.12,64.12,0,0,0-64,64,16,16,0,0,0,32,0,32,32,0,0,1,32-32,16,16,0,0,0,0-32Zm0-80C144.59,80,80,144.59,80,224s64.59,144,144,144,144-64.59,144-144S303.41,80,224,80Zm0,240a96,96,0,1,1,96-96A96,96,0,0,1,224,320ZM384,0H64A64,64,0,0,0,0,64V384a64,64,0,0,0,64,64H81.42l-4.89,2.83c-6.9,4.33-12.5,14.45-12.5,22.6v11.9A26.68,26.68,0,0,0,90.7,512H357.37A26.68,26.68,0,0,0,384,485.33V473.45c0-8.17-5.65-18.3-12.58-22.62L366.57,448H384a64,64,0,0,0,64-64V64A64,64,0,0,0,384,0Zm16,384a16,16,0,0,1-16,16H64a16,16,0,0,1-16-16V64A16,16,0,0,1,64,48H384a16,16,0,0,1,16,16Z\"]\n};\nvar faCameraMovie = {\n prefix: 'far',\n iconName: 'camera-movie',\n icon: [576, 512, [], \"f8a9\", \"M176 96a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm192 0a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm182.29 144a25.69 25.69 0 0 0-14.61 4.59L448 303.22v.78a63.5 63.5 0 0 0-10.37-34.74C481.75 244.62 512 198 512 144 512 64.6 447.4 0 368 0c-35.15 0-69.24 13.27-96 37.37C245.24 13.27 211.15 0 176 0 96.6 0 32 64.6 32 144c0 37 14.43 70.46 37.46 96H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h48v80a64 64 0 0 0 64 64h240a64 64 0 0 0 64-64v.73l87.68 58.62a25.56 25.56 0 0 0 14.61 4.6c13.3 0 25.71-10.36 25.71-25.23v-221.5c0-14.82-12.39-25.22-25.71-25.22zM400 448a16 16 0 0 1-16 16H144a16 16 0 0 1-16-16V320H48v-32h336a16 16 0 0 1 16 16zm-32-208H176a96 96 0 0 1 0-192c23.27 0 45.95 8.89 63.88 25L272 102l32.13-29c17.92-16.14 40.6-25 63.87-25a96 96 0 0 1 0 192zm160 204.48L448 391v-30l80-53.5z\"]\n};\nvar faCameraPolaroid = {\n prefix: 'far',\n iconName: 'camera-polaroid',\n icon: [576, 512, [], \"f8aa\", \"M288 128a80 80 0 1 0 80 80 80.12 80.12 0 0 0-80-80zm0 112a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm282.63 103.94L512 256V80a48 48 0 0 0-48-48H112a48 48 0 0 0-48 48v176L5.38 343.94A32 32 0 0 0 0 361.69V448a32 32 0 0 0 32 32h512a32 32 0 0 0 32-32v-86.31a32 32 0 0 0-5.37-17.75zM112 270.53V80h352v190.53L507.64 336H68.36zM528 432H48v-48h480zM424 112h-32a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8h32a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8z\"]\n};\nvar faCameraRetro = {\n prefix: 'far',\n iconName: 'camera-retro',\n icon: [512, 512, [], \"f083\", \"M154 80H38c-3.3 0-6-2.7-6-6V38c0-3.3 2.7-6 6-6h116c3.3 0 6 2.7 6 6v36c0 3.3-2.7 6-6 6zm358 0v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h136l33.6-44.8C226.7 39.1 240.9 32 256 32h208c26.5 0 48 21.5 48 48zm-48 64H48v288h416V144zm0-64H256l-12 16h220V80zm-88 208c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-48 0c0 39.7-32.3 72-72 72s-72-32.3-72-72 32.3-72 72-72 72 32.3 72 72zm-96 0c0-13.2 10.8-24 24-24 8.8 0 16-7.2 16-16s-7.2-16-16-16c-30.9 0-56 25.1-56 56 0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faCampfire = {\n prefix: 'far',\n iconName: 'campfire',\n icon: [512, 512, [], \"f6ba\", \"M256 320c79.53 0 144-64.47 144-144 0-33.29-33.42-101.96-80-144-13.37 12.06-25.45 24.75-36.14 37.48C266.34 46.01 244.61 22.21 220 0c-63.17 56.98-108 131.22-108 176 0 79.53 64.47 144 144 144zM220.26 67.87c9.13 10.02 17.58 20.21 25.14 30.33l36.26 48.56 36.85-43.89C339.82 133.29 352 165.07 352 176c0 52.93-43.06 96-96 96-52.93 0-96-43.07-96-96 0-19.32 20.77-63.38 60.26-108.13zM500.9 465.46l-165.41-52.32 165.41-52.32c8.33-2.64 12.98-11.61 10.38-20.04l-4.71-15.27c-2.6-8.43-11.47-13.14-19.8-10.5L256 387.99 25.24 315c-8.33-2.64-17.2 2.07-19.8 10.5L.73 340.77c-2.6 8.43 2.04 17.41 10.37 20.04l165.41 52.32L11.1 465.46C2.77 468.09-1.88 477.07.73 485.5l4.71 15.27c2.6 8.44 11.47 13.14 19.8 10.5L256 438.28l230.76 72.99c8.33 2.63 17.2-2.07 19.8-10.5l4.71-15.27c2.61-8.44-2.03-17.41-10.37-20.04z\"]\n};\nvar faCampground = {\n prefix: 'far',\n iconName: 'campground',\n icon: [640, 512, [], \"f6bb\", \"M624 464h-28.53l-245.9-341.21 63.33-87.88c5.22-7.12 3.68-17.14-3.44-22.36L396.58 3.1c-7.13-5.23-17.14-3.69-22.37 3.44L320 81.76 265.79 6.54c-5.22-7.13-15.24-8.67-22.37-3.44l-12.88 9.45c-7.12 5.22-8.67 15.24-3.44 22.36l63.33 87.88L44.53 464H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM320 163.82L536.33 464h-99.97L320 304 203.64 464h-99.97L320 163.82z\"]\n};\nvar faCandleHolder = {\n prefix: 'far',\n iconName: 'candle-holder',\n icon: [448, 512, [], \"f6bc\", \"M160 192c45.93 0 78-32.61 78-79.29C238 82.72 205.41 37.82 160 0c-45.62 38-78 82.84-78 112.71 0 46.68 32.07 79.29 78 79.29zm0-125.83c20.01 22.07 29.44 39.99 30 46.53 0 11.69-3.9 31.29-30 31.29s-30-19.61-30.01-31c.56-6.74 10-24.73 30.01-46.82zM376 368c-39.7 0-72 32.3-72 72 0 8.46 1.73 16.46 4.42 24H272V256c0-17.67-14.33-32-32-32H80c-17.67 0-32 14.33-32 32v208H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h360c39.7 0 72-32.3 72-72s-32.3-72-72-72zm-152 96H96V272h32v56c0 13.25 10.75 24 24 24s24-10.75 24-24v-56h48v192zm152 0c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24z\"]\n};\nvar faCandyCane = {\n prefix: 'far',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M497.1 95.4C469.2 36.6 411.5 0 346.5 0c-29.9 0-59.2 8.1-85 23.5l-25.8 15.4c-21.8 13-28.9 41.3-15.9 63.1l30.8 51.5c12.1 20.2 39.9 29.7 63.1 15.9l25.8-15.4c16-9.6 30.1 14.6 14.4 24L22.5 375c-10.6 6.3-18 16.4-21 28.3s-1.2 24.3 5.1 34.8l30.8 51.5c8.3 13.8 23.4 22.4 39.5 22.4 8.3 0 16.4-2.3 23.6-6.5l325.7-193.6c75.7-45.3 106.9-140.4 70.9-216.5zM212.4 383.3L156 351.5l64.2-38.2 56.4 31.8-64.2 38.2zm111.8-66.5L267.8 285l59.4-35.3 56.3 31.7-59.3 35.4zM395.1 128c-3.2-4.1-6.8-7.7-10.9-10.8V54.3c30.1 10 55.3 31.6 69.5 61.7 1.9 3.9 2.9 8 4.3 12.1h-62.9zm-59-79.3v56.7c-15.9 2.8-19.3 6.2-45.1 22l-28.9-48.3c27.6-16.5 42.6-27.6 74-30.4zM108.4 379.8l56.5 31.8-87.2 51.9-28.9-48.3 59.6-35.4zm318.2-129.2l-51.8-29.2c17.9-10.6 29.2-23.2 32.9-45.4h55.4c-3.1 27.5-15.9 53.9-36.5 74.6z\"]\n};\nvar faCandyCorn = {\n prefix: 'far',\n iconName: 'candy-corn',\n icon: [640, 512, [], \"f6bd\", \"M480 0C314.19 1.62 315.52 39.54 322.11 72.47 352.45 224.02 416.18 416 479.91 416h.09c63.77-.18 127.53-191.9 157.89-343.53C644.48 39.54 645.81 1.62 480 0zm-.07 365.62c-12.06-10.3-29.27-39.56-47.6-84.11 31.25-1.83 64.03-1.83 95.28 0-18.35 44.56-35.59 73.82-47.68 84.11zM591 63c-3.27 16.31-6.73 31.93-10.29 47.16-63.77-8.07-137.65-8.07-201.42 0C375.73 94.93 372.26 79.31 369 63c-.12-.62-.23-1.19-.33-1.72 10.2-4.34 38.91-12.52 111.34-13.26 72.42.74 101.13 8.92 111.34 13.26-.11.53-.22 1.1-.35 1.72zM84.94 205.81c-116.1 118.4-88.35 144.26-60.4 162.89 128.62 85.71 309.43 176.4 354.49 131.34l.06-.06c44.96-45.22-45.52-225.87-131.27-354.56-18.62-27.96-44.48-55.71-162.88 60.39zm6.69 149.12c-13.29-8.26-26.78-16.85-40.62-26.07-.53-.35-1.01-.68-1.45-.98 4.14-10.28 18.66-36.37 69.35-88.1 51.74-50.69 77.82-65.21 88.1-69.35.3.44.63.93.98 1.45 9.23 13.84 17.81 27.34 26.07 40.63-50.81 39.37-103.05 91.61-142.43 142.42zm226.04 16.27c18.53 44.49 27.03 77.37 25.76 93.2-15.81 1.24-48.68-7.28-93.13-25.82 20.81-23.39 43.98-46.57 67.37-67.38z\"]\n};\nvar faCannabis = {\n prefix: 'far',\n iconName: 'cannabis',\n icon: [544, 512, [], \"f55f\", \"M516.88 312.08c-2.16-1.05-11.9-5.64-27.19-10.96 39.01-57.61 52.25-110.92 52.98-113.95 3.85-15.95-.78-32.74-12.27-44.54-9.21-9.45-21.8-14.64-34.78-14.64-3.21 0-6.45.32-9.66.97-3.1.63-55.54 11.56-114.37 43.47-14.48-85.81-57.6-148.6-59.79-151.74C302.76 7.74 287.89 0 272 0s-30.76 7.74-39.79 20.7c-2.19 3.14-45.31 65.92-59.79 151.74-58.83-31.91-111.27-42.85-114.37-43.47a48.7 48.7 0 0 0-9.66-.97c-12.98 0-25.57 5.19-34.78 14.64-11.5 11.79-16.13 28.58-12.28 44.53.73 3.03 13.98 56.34 52.98 113.95-15.29 5.32-25.03 9.91-27.19 10.96C10.54 320.13.01 336.85 0 355.17c-.01 18.32 10.49 35.05 27.06 43.12 2.17 1.05 46.28 22.24 105.46 28.67a47.751 47.751 0 0 0 13.09 38.15c9.26 9.65 21.98 14.89 35.03 14.89 4.47 0 8.97-.62 13.4-1.88 3.67-1.05 25.83-7.77 53.96-22.27V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-40.15c28.13 14.5 50.29 21.22 53.96 22.27 4.42 1.27 8.93 1.88 13.4 1.88 13.05 0 25.77-5.24 35.03-14.89 9.91-10.32 14.56-24.32 13.09-38.15 59.18-6.44 103.29-27.62 105.46-28.67 16.57-8.07 27.07-24.8 27.06-43.12-.01-18.32-10.54-35.04-27.12-43.09zM378.22 380.8c-17.3 0-31.13-.86-42.42-2.33-.22.11-.4.15-.62.27 19.77 28.81 28.18 53.26 28.18 53.26s-48-13.73-91.36-48.48C228.63 418.27 180.64 432 180.64 432s8.42-24.45 28.18-53.26c-.22-.11-.4-.15-.62-.27-11.29 1.46-25.12 2.33-42.42 2.33-64.84 0-117.4-25.6-117.4-25.6s40.88-19.84 94.97-24.56c-.85-.77-1.57-1.3-2.43-2.09C69.37 263.02 48.38 176 48.38 176s95.02 19.22 166.57 84.75c.93.85 1.57 1.57 2.48 2.41-.85-10.83-1.33-22.72-1.33-35.96C216.1 128.23 272 48 272 48s55.9 80.23 55.9 179.2c0 13.23-.48 25.13-1.33 35.96.91-.84 1.54-1.56 2.48-2.41C400.6 195.22 495.62 176 495.62 176s-20.99 87.02-92.54 152.55c-.86.79-1.58 1.32-2.43 2.09 54.09 4.71 94.97 24.56 94.97 24.56s-52.56 25.6-117.4 25.6z\"]\n};\nvar faCapsules = {\n prefix: 'far',\n iconName: 'capsules',\n icon: [544, 512, [], \"f46b\", \"M529 296.8l-111.5-193C386.8 50.4 318.6 32.2 265.3 63c-21.2 12.3-36.6 30.5-45.8 51.3C206.4 67 163.5 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V214c.2.4.3.8.5 1.2l111.5 193c30.8 53.3 98.9 71.6 152.3 40.8s71.5-98.9 40.7-152.2zM176 256H48V144c0-84.7 128-84.7 128 0v112zm89.9-64.7c-42.1-73 68.2-136.7 110.3-63.7l43.8 75.8-110.3 63.7-43.8-75.8z\"]\n};\nvar faCar = {\n prefix: 'far',\n iconName: 'car',\n icon: [512, 512, [], \"f1b9\", \"M499.99 192.01h-52.21l-31.36-77.88C404.24 83.84 374.86 64 342.22 64H169.78c-32.64 0-62.02 19.84-74.21 50.12L64.21 192h-52.2C4.2 192-1.53 199.34.37 206.91l6 24A12.01 12.01 0 0 0 18.01 240h11.31C21.04 254.16 16 270.41 16 287.99V424c0 13.25 10.75 24 24 24h16c13.25 0 24-10.75 24-24v-24h352v24c0 13.25 10.75 24 24 24h16c13.25 0 24-10.75 24-24V288c0-17.59-5.04-33.84-13.31-47.99H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.58-3.84-14.91-11.65-14.91zM140.1 132.05C145 119.87 156.65 112 169.78 112h172.44c13.13 0 24.78 7.87 29.68 20.05l24.13 59.94H115.97l24.13-59.94zM448 336c0 8.82-7.18 16-16 16H80c-8.82 0-16-7.18-16-16v-48c0-26.47 21.53-48 48-48h288c26.47 0 48 21.53 48 48v48zm-320-72.01c-19.2 0-32 12.76-32 31.91s12.8 31.91 32 31.91 48 3.19 48-15.96c0-19.14-28.8-47.86-48-47.86zm256 0c-19.2 0-48 28.72-48 47.86 0 19.15 28.8 15.96 48 15.96s32-12.76 32-31.91c0-19.14-12.8-31.91-32-31.91z\"]\n};\nvar faCarAlt = {\n prefix: 'far',\n iconName: 'car-alt',\n icon: [480, 512, [], \"f5de\", \"M438.73 209.26l-38.3-95.14C388.24 83.84 358.87 64 326.22 64H153.78c-32.64 0-62.02 19.84-74.21 50.12l-38.31 95.14C16.37 226.6 0 255.35 0 287.99V424c0 13.25 10.75 24 24 24h16c13.25 0 24-10.75 24-24v-24h352v24c0 13.25 10.75 24 24 24h16c13.25 0 24-10.75 24-24V288c0-32.65-16.37-61.4-41.27-78.74zM124.1 132.05C129 119.87 140.65 112 153.78 112h172.44c13.13 0 24.78 7.87 29.68 20.05l24.13 59.94H99.97l24.13-59.94zM432 336c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16v-48c0-26.47 21.53-48 48-48h288c26.47 0 48 21.53 48 48v48zm-320-72.01c-19.2 0-32 12.76-32 31.91s12.8 31.91 32 31.91 48 3.19 48-15.96c0-19.14-28.8-47.86-48-47.86zm256 0c-19.2 0-48 28.72-48 47.86 0 19.15 28.8 15.96 48 15.96s32-12.76 32-31.91c0-19.14-12.8-31.91-32-31.91z\"]\n};\nvar faCarBattery = {\n prefix: 'far',\n iconName: 'car-battery',\n icon: [512, 512, [], \"f5df\", \"M480 96h-48V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v15.98L208 96V80c0-8.84-7.16-16-16-16H96c-8.84 0-16 7.16-16 16v16H32c-17.67 0-32 14.33-32 32v288c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zm-16 304H48V144h416v256zM200 232H88c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8h112c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8zm224 0h-32v-32c0-4.42-3.58-8-8-8h-32c-4.42 0-8 3.58-8 8v32h-32c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8h32v32c0 4.42 3.58 8 8 8h32c4.42 0 8-3.58 8-8v-32h32c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8z\"]\n};\nvar faCarBuilding = {\n prefix: 'far',\n iconName: 'car-building',\n icon: [640, 512, [], \"f859\", \"M148 192h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm0 96h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm0-192h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm156 80.14a143.45 143.45 0 0 1 48-25.81V32a32 32 0 0 0-32-32H32A32 32 0 0 0 0 32v400a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V48h256zM204 96a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm324 248a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm58.77-67.4l-14-32.72A111.86 111.86 0 0 0 469.8 176h-75.6a111.86 111.86 0 0 0-102.94 67.88l-14 32.72A80.15 80.15 0 0 0 224 352v32a79.67 79.67 0 0 0 32.07 63.65c0 .12-.07.23-.07.35v32a32 32 0 0 0 32 32h16a32 32 0 0 0 32-32v-16h192v16a32 32 0 0 0 32 32h16a32 32 0 0 0 32-32v-32c0-.12-.07-.23-.07-.35A79.67 79.67 0 0 0 640 384v-32a80.16 80.16 0 0 0-53.23-75.4zM592 384a32 32 0 0 1-32 32H304a32 32 0 0 1-32-32v-32a32 32 0 0 1 32-32h6.86l24.52-57.21A64 64 0 0 1 394.2 224h75.6a64 64 0 0 1 58.82 38.79L553.14 320H560a32 32 0 0 1 32 32zM256 244v-40a12 12 0 0 0-12-12h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12zm80 100a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm163.32-68.35A32.06 32.06 0 0 0 469.8 256h-75.6a32 32 0 0 0-29.41 19.4L345.2 320h173.6z\"]\n};\nvar faCarBump = {\n prefix: 'far',\n iconName: 'car-bump',\n icon: [576, 512, [], \"f5e0\", \"M101.98 308.12c-17.69 8.02-23.99 24.81-15.77 41.96 8.22 17.15 25.5 23.24 43.18 15.22 17.69-8.02 45.59-17.2 37.37-34.35-8.22-17.16-47.09-30.86-64.78-22.83zm235.83-106.97c-17.69 8.02-31.88 45.79-23.66 62.94 8.22 17.15 33.38 2.26 51.07-5.76 17.69-8.02 23.99-24.81 15.77-41.96-8.22-17.15-25.5-23.24-43.18-15.22zM116.19 450.03l324.26-147.08 10.31 21.51c5.69 11.88 20.21 17.01 32.42 11.48l14.74-6.69c12.21-5.54 17.49-19.66 11.8-31.53l-44.67-93.19-13.75-28.67c-14.02-29.25-41.45-48.16-71.83-53.3l-76.15-69.24c-24.24-22.04-59.82-27.54-89.89-13.9L54.57 111.46C24.5 125.1 5.96 155.15 7.73 187.38l5.58 101.25c-15.48 25.94-18.22 58.54-4.19 87.79l58.42 121.86c5.69 11.88 20.21 17.02 32.42 11.48l14.74-6.69c12.21-5.54 17.49-19.66 11.8-31.53l-10.31-21.51zm-41-295.56l158.85-72.05c12.09-5.49 26.21-3.3 35.96 5.56l47.98 43.62-122.81 55.71-135.2 61.32-3.52-63.79c-.71-12.96 6.64-24.88 18.74-30.37zm20.38 252.55c-8.13 3.69-17.82.25-21.61-7.65l-20.62-43.01c-11.37-23.72-.78-52.01 23.6-63.07l265.3-120.33c24.38-11.06 53.47-.76 64.83 22.95l20.62 43.01c3.79 7.91.26 17.34-7.87 21.02L95.57 407.02zM464 384c-61.75 0-112 46.65-112 104 0 13.25 10.75 24 24 24s24-10.75 24-24c0-30.87 28.72-56 64-56s64 25.12 64 56c0 13.25 10.75 24 24 24s24-10.75 24-24c0-57.34-50.25-104-112-104z\"]\n};\nvar faCarBus = {\n prefix: 'far',\n iconName: 'car-bus',\n icon: [640, 512, [], \"f85a\", \"M336 344.48a23.93 23.93 0 1 0 24 23.93 24 24 0 0 0-24-23.93zm163.32-68.16a32.06 32.06 0 0 0-29.52-19.59h-75.6a32 32 0 0 0-29.41 19.34l-19.59 44.47h173.6zM528 344.48a23.93 23.93 0 1 0 24 23.93 24 24 0 0 0-24-23.93zm58.77-67.21l-14-32.63A111.88 111.88 0 0 0 469.8 177h-75.6a111.88 111.88 0 0 0-102.94 67.69l-14 32.63A79.93 79.93 0 0 0 224 352.45v31.91c0 26 12.72 48.9 32.07 63.47 0 .13-.07.23-.07.35v31.91A32 32 0 0 0 288 512h16a32 32 0 0 0 32-31.91v-15.95h192v15.95A32 32 0 0 0 560 512h16a32 32 0 0 0 32-31.91v-31.91c0-.12-.07-.22-.07-.35 19.35-14.57 32.07-37.48 32.07-63.47v-31.91a79.93 79.93 0 0 0-53.23-75.18zM592 384.36a32 32 0 0 1-32 31.91H304a32 32 0 0 1-32-31.91v-31.91a32 32 0 0 1 32-31.91h6.86l24.52-57a64 64 0 0 1 58.82-38.68h75.6a64 64 0 0 1 58.82 38.68l24.52 57H560a32 32 0 0 1 32 31.91zM176 97.18H96a16 16 0 0 0-16 15.95v111.69a16 16 0 0 0 16 16h80zM48 328.52V99.15c0-28.72 63.77-51.29 144-51.29s144 22.57 144 51.29v58.33a144.12 144.12 0 0 1 48-11.69V99.15C384 26 280.57 0 192 0S0 26 0 99.15v229.37a56 56 0 0 0 56 55.84h8v31.91a32 32 0 0 0 32 31.91h16a32 32 0 0 0 32-31.91v-31.91h48v-31.91a110.91 110.91 0 0 1 1.18-15.95H56a8 8 0 0 1-8-7.98zm32-39.89a24 24 0 1 0 24-23.93 24 24 0 0 0-24 23.93zm181.84-56.56a143.19 143.19 0 0 1 42.16-55v-64a16 16 0 0 0-16-15.95h-80v143.65h50.11z\"]\n};\nvar faCarCrash = {\n prefix: 'far',\n iconName: 'car-crash',\n icon: [640, 512, [], \"f5e1\", \"M136.89 123.07a31.77 31.77 0 0 0 12.66-22.45l2.16-21.95 12.19 18.36a31.944 31.944 0 0 0 21.75 13.86c9 1.28 17.94-1.17 24.97-6.89l52.16-42.94c10.25-8.42 11.72-23.55 3.28-33.78-8.47-10.23-23.56-11.66-33.78-3.28l-38.31 31.55-27.47-41.31C159.09 3.02 145.28-2.32 132.25.97c-13.06 3.28-22.66 14.47-23.91 27.78l-4.81 49.41-48.66-9.81c-13.09-2.56-26.66 3.3-33.56 14.84-6.94 11.53-5.81 26.23 2.72 36.56l31.53 38.31-41.34 27.48C2.88 193.1-2.31 206.52 1 219.74c3.28 13.22 14.19 22.62 27.78 23.97l49.41 4.78-9.81 48.66c-2.62 12.98 5.78 25.64 18.78 28.27 1.62.31 3.22.47 4.78.47 11.19 0 21.19-7.86 23.5-19.27l13.34-66.27c1.75-8.8-.31-17.97-5.62-25.17-5.34-7.2-13.53-11.84-22.5-12.73l-21.94-2.12 18.31-12.17c7.5-4.95 12.56-12.89 13.91-21.78a32.07 32.07 0 0 0-6.91-24.97l-14-17.02 21.62 4.36c8.68 1.76 17.99-.32 25.24-5.68zm397.86 187.6c-18.54-4.97-53.8 15.31-58.75 33.81s23.69 22.87 42.23 27.83c18.54 4.97 34.21-4.04 39.17-22.54s-4.11-34.13-22.65-39.1zm82.49-34.56L604.86 174.3c-3.94-32.41-27.18-59.17-58.71-67.62L379.59 62.06c-31.53-8.45-65.04 3.11-84.65 29.21l-61.62 81.98c-28.54 10.31-51.79 33.84-60.24 65.37l-35.2 131.37c-3.43 12.8 4.17 25.96 16.97 29.39l15.45 4.14c12.8 3.43 25.96-4.17 29.39-16.97l6.21-23.18 340.01 91.11-6.21 23.18c-3.43 12.8 4.17 25.96 16.97 29.39l15.46 4.14c12.8 3.43 25.96-4.17 29.39-16.97l26.92-100.46 8.28-30.91c8.45-31.54.08-63.54-19.48-86.74zM333.31 120.1c7.89-10.5 21.18-15.08 33.86-11.68l166.56 44.63c12.68 3.4 21.9 14.01 23.48 27.04l7.8 64.14-270.53-72.49 38.83-51.64zm257.05 230.32l-12.42 46.37c-2.28 8.52-11.07 13.6-19.6 11.31L218.33 317c-8.52-2.28-13.6-11.07-11.31-19.6l12.42-46.37c6.85-25.56 33.22-40.79 58.79-33.94l278.19 74.54c25.56 6.85 40.79 33.22 33.94 58.79zM287.47 244.41c-18.54-4.97-34.21 4.05-39.17 22.54s4.11 34.13 22.65 39.1c18.55 4.97 45.54 15.5 50.49-2.99 4.96-18.49-15.42-53.68-33.97-58.65z\"]\n};\nvar faCarGarage = {\n prefix: 'far',\n iconName: 'car-garage',\n icon: [640, 512, [], \"f5e2\", \"M631.76 168.24L331.67 3.02a24.06 24.06 0 0 0-23.35 0L8.24 168.24c-7.74 4.3-10.52 14.05-6.23 21.79l7.78 14.01c4.3 7.74 14.05 10.52 21.79 6.23L320 51.53l288.41 158.73c7.74 4.3 17.49 1.51 21.79-6.23l7.78-14.01c4.3-7.73 1.51-17.49-6.22-21.78zM192 328c-19.2 0-32 12.76-32 31.91 0 19.14 12.8 31.91 32 31.91s48 3.19 48-15.96c0-19.14-28.8-47.86-48-47.86zm256 0c-19.2 0-48 28.72-48 47.86s28.8 15.96 48 15.96 32-12.76 32-31.91S467.2 328 448 328zm58.21-61.83l-25.79-64.04c-12.19-30.28-41.56-50.12-74.21-50.12H233.78c-32.65 0-62.02 19.84-74.21 50.12l-25.79 64.04C102.04 281.83 80 314.2 80 352v136c0 13.25 10.75 24 24 24h16c13.25 0 24-10.75 24-24v-24h352v24c0 13.25 10.75 24 24 24h16c13.25 0 24-10.75 24-24V352c0-37.8-22.04-70.17-53.79-85.83zM204.1 220.06c4.9-12.18 16.56-20.05 29.69-20.05h172.44c13.13 0 24.78 7.87 29.69 20.05L450.37 256H189.63l14.47-35.94zM512 400c0 8.82-7.18 16-16 16H144c-8.82 0-16-7.18-16-16v-48c0-26.47 21.53-48 48-48h288c26.47 0 48 21.53 48 48v48z\"]\n};\nvar faCarMechanic = {\n prefix: 'far',\n iconName: 'car-mechanic',\n icon: [512, 512, [], \"f5e3\", \"M503.91 104h-55.98l-24-24 24-24h55.97c5.95 0 9.9-6.31 7.25-11.64-15.19-30.52-49.01-50.04-86.84-42.88-25.65 4.87-46.72 22.99-57.05 46.52H145.01c-12.38-28.17-40.2-48-72.94-48C40.75 0 13.9 18.12.84 44.37-1.81 49.7 2.15 56 8.09 56h55.98l24 24-24 24H8.09c-5.95 0-9.9 6.31-7.25 11.64 15.19 30.52 49.01 50.04 86.84 42.88 25.65-4.86 46.73-22.99 57.05-46.52h222.25c12.38 28.17 40.2 48 72.94 48 31.32 0 58.17-18.12 71.23-44.38 2.66-5.31-1.3-11.62-7.24-11.62zm-69.7 162.17l-25.79-64.04c-12.18-30.29-41.55-50.13-74.2-50.13H161.78c-32.65 0-62.02 19.84-74.21 50.12l-25.79 64.04C30.04 281.83 8 314.2 8 352v136c0 13.25 10.75 24 24 24h16c13.25 0 24-10.75 24-24v-24h352v24c0 13.25 10.75 24 24 24h16c13.25 0 24-10.75 24-24V352c0-37.8-22.04-70.17-53.79-85.83zM132.1 220.05C137 207.87 148.66 200 161.79 200h172.44c13.13 0 24.78 7.87 29.69 20.05l14.47 35.94H117.63l14.47-35.94zM440 400c0 8.82-7.18 16-16 16H72c-8.82 0-16-7.18-16-16v-48c0-26.47 21.53-48 48-48h288c26.47 0 48 21.53 48 48v48zm-320-72.01c-19.2 0-32 12.76-32 31.91s12.8 31.91 32 31.91 48 3.19 48-15.96-28.8-47.86-48-47.86zm256 0c-19.2 0-48 28.72-48 47.86s28.8 15.96 48 15.96 32-12.76 32-31.91-12.8-31.91-32-31.91z\"]\n};\nvar faCarSide = {\n prefix: 'far',\n iconName: 'car-side',\n icon: [640, 512, [], \"f5e4\", \"M544 192h-16L419.21 56.02A63.99 63.99 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 192v2.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM280 80h89.24c4.89 0 9.44 2.19 12.49 6l84.8 106H280V80zM140.47 90.06c2.45-6.11 8.28-10.06 14.86-10.06H232v112H99.7l40.77-101.94zM160 432c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm320 0c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm112-96h-29.31c-16.63-28.57-47.24-48-82.69-48s-66.05 19.43-82.69 48H242.69c-16.63-28.57-47.24-48-82.69-48s-66.05 19.43-82.69 48H48v-80c0-8.82 7.18-16 16-16h480c26.47 0 48 21.53 48 48v48z\"]\n};\nvar faCarTilt = {\n prefix: 'far',\n iconName: 'car-tilt',\n icon: [640, 512, [], \"f5e5\", \"M198.33 314.05c-13.48 13.48-13.51 31.43-.06 44.87 13.44 13.44 31.39 13.42 44.87-.06 13.48-13.48 35.94-31.46 22.5-44.9-13.45-13.45-53.83-13.39-67.31.09zm179.73-179.72c-13.48 13.48-13.54 53.86-.1 67.3 13.44 13.44 31.42-9.02 44.9-22.5 13.48-13.48 13.51-31.42.06-44.87-13.43-13.43-31.38-13.41-44.86.07zM624 464H280.38l-20.26-20.77 247.12-247.12 16.85 16.85c9.3 9.3 24.39 9.3 33.7 0l11.23-11.23c9.3-9.3 9.3-24.39 0-33.7l-95.48-95.48c-22.92-22.92-54.59-31.6-84.24-26.3l-93.68-39.9C265.8-6.35 231.25.34 208.33 23.26L87.27 144.32c-22.92 22.92-29.61 57.46-16.91 87.28l39.9 93.68c-5.3 29.65 3.38 61.32 26.3 84.24L191.03 464H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM114.2 212.94c-5.11-11.99-2.45-25.7 6.76-34.91L242.03 56.96c9.22-9.22 22.92-11.87 34.91-6.77l59.02 25.14-196.62 196.62-25.14-59.01zm89.75 196.59l-33.7-33.7c-18.58-18.58-18.58-48.81 0-67.39l202.19-202.19c18.58-18.58 48.82-18.58 67.4 0l33.7 33.7c6.19 6.19 6.19 16.27 0 22.46L226.42 409.53c-6.2 6.19-16.28 6.19-22.47 0z\"]\n};\nvar faCarWash = {\n prefix: 'far',\n iconName: 'car-wash',\n icon: [480, 512, [], \"f5e6\", \"M80 128c23.56 0 42.67-19.1 42.67-42.67S80 0 80 0 37.33 61.77 37.33 85.33 56.44 128 80 128zm160 0c23.56 0 42.67-19.1 42.67-42.67S240 0 240 0s-42.67 61.77-42.67 85.33S216.44 128 240 128zm160 0c23.56 0 42.67-19.1 42.67-42.67S400 0 400 0s-42.67 61.77-42.67 85.33S376.44 128 400 128zm26.21 138.17l-25.79-64.04c-12.18-30.29-41.55-50.13-74.2-50.13H153.78c-32.65 0-62.02 19.84-74.21 50.12l-25.79 64.04C22.04 281.83 0 314.2 0 352v136c0 13.25 10.75 24 24 24h16c13.25 0 24-10.75 24-24v-24h352v24c0 13.25 10.75 24 24 24h16c13.25 0 24-10.75 24-24V352c0-37.8-22.04-70.17-53.79-85.83zM124.1 220.05C129 207.87 140.66 200 153.79 200h172.44c13.13 0 24.78 7.87 29.69 20.05l14.47 35.94H109.63l14.47-35.94zM432 400c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16v-48c0-26.47 21.53-48 48-48h288c26.47 0 48 21.53 48 48v48zm-64-72.01c-19.2 0-48 28.72-48 47.86s28.8 15.96 48 15.96 32-12.76 32-31.91-12.8-31.91-32-31.91zm-256 0c-19.2 0-32 12.76-32 31.91s12.8 31.91 32 31.91 48 3.19 48-15.96-28.8-47.86-48-47.86z\"]\n};\nvar faCaravan = {\n prefix: 'far',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M624,336H576V160A160,160,0,0,0,416,0H96A96,96,0,0,0,0,96V288a96,96,0,0,0,96,96,96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V352A16,16,0,0,0,624,336ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432ZM432,208a16,16,0,0,0,0,32v96H368V144h64Zm96,128H480V136a40,40,0,0,0-40-40H360a40,40,0,0,0-40,40V336H274.69c-16.64-28.57-47.25-48-82.69-48s-66,19.43-82.69,48H96a48.05,48.05,0,0,1-48-48V96A48.05,48.05,0,0,1,96,48H416A112.12,112.12,0,0,1,528,160ZM256,96H128a32,32,0,0,0-32,32v64a32,32,0,0,0,32,32H256a32,32,0,0,0,32-32V128A32,32,0,0,0,256,96Z\"]\n};\nvar faCaravanAlt = {\n prefix: 'far',\n iconName: 'caravan-alt',\n icon: [640, 512, [], \"e000\", \"M416,96H352a32,32,0,0,0-32,32v64a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V128A32,32,0,0,0,416,96ZM624,336H576V160A160,160,0,0,0,416,0H96A96,96,0,0,0,0,96V288a96,96,0,0,0,96,96,96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V352A16,16,0,0,0,624,336ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm336-96H274.69c-16.64-28.57-47.25-48-82.69-48s-66,19.43-82.69,48H96a48.05,48.05,0,0,1-48-48V96A48.05,48.05,0,0,1,96,48H416A112.12,112.12,0,0,1,528,160ZM256,96H128a32,32,0,0,0-32,32v64a32,32,0,0,0,32,32H256a32,32,0,0,0,32-32V128A32,32,0,0,0,256,96Z\"]\n};\nvar faCaretCircleDown = {\n prefix: 'far',\n iconName: 'caret-circle-down',\n icon: [512, 512, [], \"f32d\", \"M157.1 216h197.8c10.7 0 16.1 13 8.5 20.5l-98.9 98.3c-4.7 4.7-12.2 4.7-16.9 0l-98.9-98.3c-7.7-7.5-2.3-20.5 8.4-20.5zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-48 0c0-110.5-89.5-200-200-200S56 145.5 56 256s89.5 200 200 200 200-89.5 200-200z\"]\n};\nvar faCaretCircleLeft = {\n prefix: 'far',\n iconName: 'caret-circle-left',\n icon: [512, 512, [], \"f32e\", \"M296 157.1v197.8c0 10.7-13 16.1-20.5 8.5l-98.3-98.9c-4.7-4.7-4.7-12.2 0-16.9l98.3-98.9c7.5-7.7 20.5-2.3 20.5 8.4zM256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm0-48c110.5 0 200-89.5 200-200S366.5 56 256 56 56 145.5 56 256s89.5 200 200 200z\"]\n};\nvar faCaretCircleRight = {\n prefix: 'far',\n iconName: 'caret-circle-right',\n icon: [512, 512, [], \"f330\", \"M216 354.9V157.1c0-10.7 13-16.1 20.5-8.5l98.3 98.9c4.7 4.7 4.7 12.2 0 16.9l-98.3 98.9c-7.5 7.7-20.5 2.3-20.5-8.4zM256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm0 48C145.5 56 56 145.5 56 256s89.5 200 200 200 200-89.5 200-200S366.5 56 256 56z\"]\n};\nvar faCaretCircleUp = {\n prefix: 'far',\n iconName: 'caret-circle-up',\n icon: [512, 512, [], \"f331\", \"M354.9 296H157.1c-10.7 0-16.1-13-8.5-20.5l98.9-98.3c4.7-4.7 12.2-4.7 16.9 0l98.9 98.3c7.7 7.5 2.3 20.5-8.4 20.5zM8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm48 0c0 110.5 89.5 200 200 200s200-89.5 200-200S366.5 56 256 56 56 145.5 56 256z\"]\n};\nvar faCaretDown = {\n prefix: 'far',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M272 160H48.1c-42.6 0-64.2 51.7-33.9 81.9l111.9 112c18.7 18.7 49.1 18.7 67.9 0l112-112c30-30.1 8.7-81.9-34-81.9zM160 320L48 208h224L160 320z\"]\n};\nvar faCaretLeft = {\n prefix: 'far',\n iconName: 'caret-left',\n icon: [224, 512, [], \"f0d9\", \"M224 367.952V144.057c0-42.638-51.731-64.151-81.941-33.941l-112 111.943c-18.745 18.745-18.746 49.137 0 67.882l112 111.952C172.208 432.042 224 410.675 224 367.952zM64 256l112-112v224L64 256z\"]\n};\nvar faCaretRight = {\n prefix: 'far',\n iconName: 'caret-right',\n icon: [224, 512, [], \"f0da\", \"M0 144.048v223.895c0 42.638 51.731 64.151 81.941 33.941l112-111.943c18.745-18.745 18.746-49.137 0-67.882l-112-111.952C51.792 79.958 0 101.325 0 144.048zM160 256L48 368V144l112 112z\"]\n};\nvar faCaretSquareDown = {\n prefix: 'far',\n iconName: 'caret-square-down',\n icon: [448, 512, [], \"f150\", \"M125.1 208h197.8c10.7 0 16.1 13 8.5 20.5l-98.9 98.3c-4.7 4.7-12.2 4.7-16.9 0l-98.9-98.3c-7.7-7.5-2.3-20.5 8.4-20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareLeft = {\n prefix: 'far',\n iconName: 'caret-square-left',\n icon: [448, 512, [], \"f191\", \"M272 157.1v197.8c0 10.7-13 16.1-20.5 8.5l-98.3-98.9c-4.7-4.7-4.7-12.2 0-16.9l98.3-98.9c7.5-7.7 20.5-2.3 20.5 8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareRight = {\n prefix: 'far',\n iconName: 'caret-square-right',\n icon: [448, 512, [], \"f152\", \"M176 354.9V157.1c0-10.7 13-16.1 20.5-8.5l98.3 98.9c4.7 4.7 4.7 12.2 0 16.9l-98.3 98.9c-7.5 7.7-20.5 2.3-20.5-8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretSquareUp = {\n prefix: 'far',\n iconName: 'caret-square-up',\n icon: [448, 512, [], \"f151\", \"M322.9 304H125.1c-10.7 0-16.1-13-8.5-20.5l98.9-98.3c4.7-4.7 12.2-4.7 16.9 0l98.9 98.3c7.7 7.5 2.3 20.5-8.4 20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faCaretUp = {\n prefix: 'far',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M48.048 352h223.895c42.638 0 64.151-51.731 33.941-81.941l-111.943-112c-18.745-18.745-49.137-18.746-67.882 0l-111.952 112C-16.042 300.208 5.325 352 48.048 352zM160 192l112 112H48l112-112z\"]\n};\nvar faCarrot = {\n prefix: 'far',\n iconName: 'carrot',\n icon: [512, 512, [], \"f787\", \"M369.8 142.2c22.7-47.5 11-103.8-35.4-142.2-44.5 36.9-56.7 90-37.4 136.1-14-4.9-28.3-8.1-42.5-8.1-48 0-94.1 26.8-116.6 72.8L2.4 478.3c-3 6.2-3.3 13.8 0 20.5 4.1 8.3 12.4 13.1 21 13.1 3.4 0 6.9-.8 10.3-2.4L311.3 374c25-12.2 46.4-32.6 59.6-59.6 15.7-32.1 16.9-67.6 6.1-98.9 45.9 18.7 98.4 6.3 135.1-37.9-38.6-46.4-94.8-58.1-142.3-35.4zm-42.1 151.2c-8.1 16.5-21 29.5-37.5 37.5l-57.3 28L209 335c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l12.2 12.2-110.4 54L173 238.3l34 34.7c4.7 4.7 10.8 7 17 7s12.3-2.3 17-7c9.4-9.4 9.4-24.6 0-33.9l-41.6-40.9c14.8-13.7 34-22.1 55.1-22.1 12.4 0 24.4 2.8 35.7 8.3 19.6 9.6 34.3 26.2 41.4 46.8 7 20.5 5.7 42.7-3.9 62.2z\"]\n};\nvar faCars = {\n prefix: 'far',\n iconName: 'cars',\n icon: [640, 512, [], \"f85b\", \"M499.32 275.65A32.06 32.06 0 0 0 469.8 256h-75.6a32 32 0 0 0-29.41 19.4L345.2 320h173.6zM336 344a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm250.77-67.4l-14-32.72A111.86 111.86 0 0 0 469.8 176h-75.6a111.86 111.86 0 0 0-102.94 67.88l-14 32.72A80.16 80.16 0 0 0 224 352v32a79.67 79.67 0 0 0 32.07 63.65c0 .12-.07.23-.07.35v32a32 32 0 0 0 32 32h16a32 32 0 0 0 32-32v-16h192v16a32 32 0 0 0 32 32h16a32 32 0 0 0 32-32v-32c0-.12-.07-.23-.07-.35A79.67 79.67 0 0 0 640 384v-32a80.16 80.16 0 0 0-53.23-75.4zM592 384a32 32 0 0 1-32 32H304a32 32 0 0 1-32-32v-32a32 32 0 0 1 32-32h6.86l24.52-57.21A64 64 0 0 1 394.2 224h75.6a64 64 0 0 1 58.82 38.79L553.14 320H560a32 32 0 0 1 32 32zm-64-40a24 24 0 1 0 24 24 24 24 0 0 0-24-24zM275.32 99.65A32.06 32.06 0 0 0 245.8 80h-75.6a32 32 0 0 0-29.41 19.4L121.2 144h173.6zM252.79 252.4l5.32-12.4H80a32 32 0 0 1-32-32v-32a32 32 0 0 1 32-32h6.86l24.52-57.21A64 64 0 0 1 170.2 48h75.6a64 64 0 0 1 58.82 38.79L329.14 144H336c6.62 0 12.41 2.49 17.52 5.93A143.81 143.81 0 0 1 394.2 144h14.88a80.3 80.3 0 0 0-46.31-43.4l-14-32.72A111.86 111.86 0 0 0 245.8 0h-75.6A111.86 111.86 0 0 0 67.26 67.88l-14 32.72A80.16 80.16 0 0 0 0 176v32a79.67 79.67 0 0 0 32.07 63.65c0 .12-.07.23-.07.35v32a32 32 0 0 0 32 32h16a32 32 0 0 0 32-32v-16h100.46a112 112 0 0 1 40.33-35.6zM88 192a24 24 0 1 0 24-24 24 24 0 0 0-24 24z\"]\n};\nvar faCartArrowDown = {\n prefix: 'far',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M551.991 64H144.28l-8.726-44.608C133.35 8.128 123.478 0 112 0H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h80.24l69.594 355.701C150.796 415.201 144 430.802 144 448c0 35.346 28.654 64 64 64s64-28.654 64-64a63.681 63.681 0 0 0-8.583-32h145.167a63.681 63.681 0 0 0-8.583 32c0 35.346 28.654 64 64 64 35.346 0 64-28.654 64-64 0-18.136-7.556-34.496-19.676-46.142l1.035-4.757c3.254-14.96-8.142-29.101-23.452-29.101H203.76l-9.39-48h312.405c11.29 0 21.054-7.869 23.452-18.902l45.216-208C578.695 78.139 567.299 64 551.991 64zM208 472c-13.234 0-24-10.766-24-24s10.766-24 24-24 24 10.766 24 24-10.766 24-24 24zm256 0c-13.234 0-24-10.766-24-24s10.766-24 24-24 24 10.766 24 24-10.766 24-24 24zm23.438-200H184.98l-31.31-160h368.548l-34.78 160zm-91.923-59.515l-51.029 51.029c-4.686 4.686-12.284 4.686-16.971 0l-51.029-51.029c-7.56-7.56-2.206-20.485 8.485-20.485H312v-52c0-6.627 5.373-12 12-12h24c6.627 0 12 5.373 12 12v52h27.029c10.691 0 16.045 12.926 8.486 20.485z\"]\n};\nvar faCartPlus = {\n prefix: 'far',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M551.991 64H144.28l-8.726-44.608C133.35 8.128 123.478 0 112 0H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h80.24l69.594 355.701C150.796 415.201 144 430.802 144 448c0 35.346 28.654 64 64 64s64-28.654 64-64a63.681 63.681 0 0 0-8.583-32h145.167a63.681 63.681 0 0 0-8.583 32c0 35.346 28.654 64 64 64s64-28.654 64-64c0-18.136-7.556-34.496-19.676-46.142l1.035-4.757c3.254-14.96-8.142-29.101-23.452-29.101H203.76l-9.39-48h312.405c11.29 0 21.054-7.869 23.452-18.902l45.216-208C578.695 78.139 567.299 64 551.991 64zM464 424c13.234 0 24 10.766 24 24s-10.766 24-24 24-24-10.766-24-24 10.766-24 24-24zm-256 0c13.234 0 24 10.766 24 24s-10.766 24-24 24-24-10.766-24-24 10.766-24 24-24zm279.438-152H184.98l-31.31-160h368.548l-34.78 160zM272 200v-16c0-6.627 5.373-12 12-12h32v-32c0-6.627 5.373-12 12-12h16c6.627 0 12 5.373 12 12v32h32c6.627 0 12 5.373 12 12v16c0 6.627-5.373 12-12 12h-32v32c0 6.627-5.373 12-12 12h-16c-6.627 0-12-5.373-12-12v-32h-32c-6.627 0-12-5.373-12-12z\"]\n};\nvar faCashRegister = {\n prefix: 'far',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M168 296h-16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-32-48c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-16zm96 0c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-16zm128 48h-16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm48-64h-16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm103.4 147.5l-25.5-178.3c-3.4-23.6-23.6-41.2-47.5-41.2H208v-32h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v32H73.6c-23.9 0-44.1 17.6-47.5 41.2L.6 379.5c-.4 3-.6 6-.6 9.1V464c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-75.5c0-3-.2-6-.6-9zM80 80V48h192v32H80zm-6.4 128h364.7l22.9 160H50.8l22.8-160zM464 464H48v-48h416v48zM328 248c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-16zm-64 48h-16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16z\"]\n};\nvar faCassetteTape = {\n prefix: 'far',\n iconName: 'cassette-tape',\n icon: [512, 512, [], \"f8ab\", \"M144 288h224a64 64 0 0 0 0-128H144a64 64 0 0 0 0 128zm224-80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-162.27 0h100.54a57.52 57.52 0 0 0 0 32H205.73a57.52 57.52 0 0 0 0-32zM144 208a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM464 64H48a48 48 0 0 0-48 48v288a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V112a48 48 0 0 0-48-48zM141.67 400l16-32h196.66l16 32zM464 400h-40l-40-80H128l-40 80H48V112h416z\"]\n};\nvar faCat = {\n prefix: 'far',\n iconName: 'cat',\n icon: [576, 512, [], \"f6be\", \"M416 128c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16zM547.53 4.15A47.971 47.971 0 0 0 528.01 0c-11.64 0-23.13 4.23-32.12 12.32L456.25 48h-16.49l-39.64-35.68a48.032 48.032 0 0 0-51.65-8.17C331.16 11.87 320 29.04 320 48v112c0 4.24.85 8.24 1.25 12.38l-47 7.12c-67.48 10.23-124.62 46.4-162.25 97.52V184c0-48.53-39.47-88-88-88-13.25 0-24 10.75-24 24 0 13.47 11.12 24.37 24.68 23.99C47.02 143.37 64 164.57 64 186.92V399.3c0 73.41 39.4 112.7 88 112.7h184c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-16.14c-.11-7.37-.78-14.63-1.85-21.81L384 393.95V480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V270.2c38.07-22.2 64-63.03 64-110.19V48c0-18.95-11.16-36.13-28.47-43.85zM464 464h-32v-98.02c0-11.45-6.16-22.09-16.09-27.77-9.91-5.69-22.22-5.62-32.12.19l-96.35 56.68c-12.08-24.98-30.23-46.88-53.45-63.11-7.52-5.26-18.07-2.21-22.53 5.81l-7.44 13.39c-3.97 7.15-2.55 16.49 4.07 21.29 29.22 21.17 46.87 55.04 47.63 91.54H152c-22.06 0-40-17.94-40-40 0-99.28 71.25-182.16 169.44-197.03l53.57-8.12C356.4 259.74 398.75 288 448 288c5.48 0 10.7-.95 16-1.62V464zm64-304c0 44.18-35.82 80-80 80s-80-35.82-80-80V48l53.33 48h53.33L528 48v112zm-64-16c0 8.84 7.16 16 16 16s16-7.16 16-16-7.16-16-16-16-16 7.16-16 16z\"]\n};\nvar faCatSpace = {\n prefix: 'far',\n iconName: 'cat-space',\n icon: [640, 512, [], \"e001\", \"M448,0A176,176,0,0,0,272,176c0,1.32227.168,2.60156.19727,3.916C205.63672,190.57422,149.23633,226.43555,112,277.01562V184A88.08953,88.08953,0,0,0,24,96a23.99716,23.99716,0,1,0,.6875,47.98438C47.03125,143.375,64,164.5625,64,186.92188v212.375C64,472.70312,103.40625,512,152,512H336a15.9908,15.9908,0,0,0,16-16,32.01159,32.01159,0,0,0-32-32H303.875A163.00191,163.00191,0,0,0,302,442.1875l82-48.23438V480a32.01159,32.01159,0,0,0,32,32h64a32.01159,32.01159,0,0,0,32-32V339.81836C577.51953,314.19727,624,250.59375,624,176A175.99871,175.99871,0,0,0,448,0Zm0,48a127.06647,127.06647,0,0,1,72.9375,23.0625L480,112H416L375.0625,71.0625A127.06647,127.06647,0,0,1,448,48Zm56,128a16,16,0,1,1-16-16A15.9908,15.9908,0,0,1,504,176Zm-80,0a16,16,0,1,1-16-16A15.9908,15.9908,0,0,1,424,176ZM287.4375,395.07812A163.5365,163.5365,0,0,0,234,331.96875c-7.53125-5.26563-18.09375-2.20313-22.53125,5.8125l-7.4375,13.39063c-3.96875,7.14062-2.5625,16.48437,4.0625,21.28124A115.85626,115.85626,0,0,1,255.71875,464H152a40.037,40.037,0,0,1-40-40c0-98.66406,70.42969-180.97852,167.67188-196.59961A176.345,176.345,0,0,0,382.38672,339.22656ZM464,464H432V365.98438a31.91955,31.91955,0,0,0-3.96094-15.19336A162.0303,162.0303,0,0,0,464,351.19336ZM448,304A128.1454,128.1454,0,0,1,320,176c0-32.16992,12.334-61.25391,32-83.76367V176a96,96,0,0,0,192,0V92.23633C563.666,114.74609,576,143.83008,576,176A128.14414,128.14414,0,0,1,448,304ZM146.94531,68.76953l39.71094,16.56055,16.5625,39.71094a5.32345,5.32345,0,0,0,9.53906,0l16.5586-39.71094,39.71484-16.56055a5.336,5.336,0,0,0,0-9.541l-39.71484-16.5586L212.75781,2.957a5.325,5.325,0,0,0-9.53906,0l-16.5625,39.71289-39.71094,16.5586a5.336,5.336,0,0,0,0,9.541Z\"]\n};\nvar faCauldron = {\n prefix: 'far',\n iconName: 'cauldron',\n icon: [448, 512, [], \"f6bf\", \"M448 196v-24c0-6.63-6.27-12-14-12H14c-7.73 0-14 5.37-14 12v24c0 6.63 6.27 12 14 12h29.63C16.35 250.46 0 299.55 0 345.6c0 39.08 11.82 70.65 32 95.53V488c0 13.25 10.75 24 24 24s24-10.75 24-24v-7.49c38.95 21.3 89.14 31.49 144 31.49s105.05-10.19 144-31.49V488c0 13.25 10.75 24 24 24s24-10.75 24-24v-46.87c20.18-24.88 32-56.45 32-95.53 0-46.04-16.35-95.13-43.63-137.6H434c7.73 0 14-5.37 14-12zm-54.51 188H392c.49 0 .89.25 1.37.28C367.36 455.26 269.65 464 224 464s-143.36-8.74-169.37-79.72c.48-.03.88-.28 1.37-.28h-1.49C50.44 372.78 48 360.14 48 345.6c0-45.61 21.15-97.83 54.92-137.6h242.17C378.85 247.77 400 299.99 400 345.6c0 14.54-2.44 27.18-6.51 38.4zM160 64c17.67 0 32-14.33 32-32S177.67 0 160 0s-32 14.33-32 32 14.33 32 32 32zm112 64c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faCctv = {\n prefix: 'far',\n iconName: 'cctv',\n icon: [576, 512, [], \"f8ac\", \"M573.86 256.4a30.75 30.75 0 0 0-16.38-17.09l-33.8-14.86c20.74-14.36 17.57-46.33-6.25-55.86L139.24 2.32C119.9-5.41 104.23 8 99.57 16.15L4.23 183a32 32 0 0 0 16.85 45.94l164 67.92L143.37 408H48v-40a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v128a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-40h112a24 24 0 0 0 22.47-15.56l46.95-125.21 75.92 31.45c12.8 4.65 25-1.14 27.89-2.94l20.79-13 136.82 60.16.09.06a31.15 31.15 0 0 0 40.75-16l41.65-94.83a30.62 30.62 0 0 0 .53-23.73zM314.8 298.65L54.93 191l79.16-138.51 337.3 148.29z\"]\n};\nvar faCertificate = {\n prefix: 'far',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M489.199 255.927c41.041-40.173 24.263-102.49-31.145-116.634C473.43 85.289 427.935 38 372.589 53.775 358.41-1.828 295.346-17.915 256 22.621 242.445 8.655 226.954.019 205.706.018c-29.388-.001-57.144 17.868-66.295 53.757-54.95-15.663-100.976 31.042-85.465 85.518-55.295 14.115-72.274 76.374-31.145 116.634-40.946 40.08-24.367 102.464 31.145 116.634-15.512 54.481 30.59 101.158 85.465 85.518C153.747 514.3 216.434 529.714 256 489.25c39.511 40.408 102.326 24.759 116.589-31.171 55.007 15.678 100.937-31.177 85.465-85.518 55.295-14.115 72.274-76.374 31.145-116.634zm-31.205 36.574c11.133 10.539 5.95 29.28-8.665 32.775l-50.903 12.992 14.349 50.387c4.055 14.491-9.607 28.165-24.099 24.108l-50.37-14.354-12.987 50.92c-3.525 14.75-22.608 19.626-32.764 8.668L256 420.621l-36.554 37.376c-10.263 10.849-29.158 6.421-32.764-8.668l-12.987-50.92-50.37 14.354c-14.489 4.056-28.154-9.615-24.099-24.108l14.349-50.387-50.903-12.992c-14.609-3.494-19.803-22.231-8.665-32.775l37.363-36.566-37.363-36.566c-11.133-10.539-5.95-29.28 8.665-32.775l50.903-12.992-14.349-50.387c-4.054-14.49 9.605-28.166 24.099-24.108l50.37 14.354 12.987-50.92c3.476-14.546 22.503-19.514 32.764-8.668L256 91.525l36.554-37.652c10.382-10.974 29.328-5.71 32.764 8.668l12.987 50.92 50.37-14.354c14.488-4.056 28.154 9.615 24.099 24.108l-14.349 50.387 50.903 12.992c14.609 3.494 19.802 22.231 8.665 32.775l-37.363 36.566 37.364 36.566z\"]\n};\nvar faChair = {\n prefix: 'far',\n iconName: 'chair',\n icon: [448, 512, [], \"f6c0\", \"M445.13 326.27l-10.66-31.97c-7.33-22.02-27.44-36.74-50.44-37.87L384 128C384 57.31 326.69 0 256 0h-64C121.31 0 64 57.31 64 128l-.03 128.43c-23 1.13-43.11 15.85-50.41 37.84L2.85 326.3c-5.66 17.03-2.78 35.89 7.72 50.44 5.57 7.73 13.02 13.65 21.41 17.65L32 496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-96h288.04l-.04 96c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16l.04-101.61c8.39-4 15.84-9.92 21.41-17.65 10.49-14.55 13.37-33.41 7.68-50.47zM296 59.13c23.8 13.88 40 39.39 40 68.87v128h-40V59.13zM200 48h48v208h-48V48zm-48 11.13V256h-40V128c0-29.48 16.2-54.99 40-68.87zM48.38 341.48l10.72-32.03c1.06-3.27 4.12-5.45 7.56-5.45h314.69c3.44 0 6.5 2.19 7.59 5.48l10.66 31.97c1.77 5.33-2.24 10.55-7.59 10.55H56c-5.42 0-9.33-5.28-7.62-10.52z\"]\n};\nvar faChairOffice = {\n prefix: 'far',\n iconName: 'chair-office',\n icon: [448, 512, [], \"f6c1\", \"M64 224v-64c0-17.67-14.33-32-32-32S0 142.33 0 160v64c0 17.67 14.33 32 32 32s32-14.33 32-32zm352-96c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32s32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm-13.53 166.3c-7.34-22.03-27.46-36.75-50.47-37.88V64c0-35.35-28.65-64-64-64H160c-35.35 0-64 28.65-64 64v192.42c-23.01 1.12-43.13 15.84-50.43 37.84L34.85 326.3c-5.66 17.03-2.78 35.89 7.72 50.44C53.07 391.31 70.04 400 88.01 400H200v50.01c-31.93 4.97-57.99 19.43-69.85 38.56-6.41 10.34 2.41 23.43 15.02 23.43h157.66c12.61 0 21.44-13.09 15.02-23.43-11.86-19.13-37.92-33.59-69.85-38.56V400h112c17.97 0 34.94-8.69 45.45-23.27 10.5-14.55 13.38-33.41 7.69-50.47l-10.67-31.96zM144 64c0-8.82 7.18-16 16-16h128c8.82 0 16 7.18 16 16v192H144V64zm216 288H88.01c-5.42 0-9.33-5.28-7.62-10.52l10.72-32.03c1.06-3.27 4.12-5.45 7.56-5.45h250.67c3.44 0 6.5 2.19 7.6 5.48l10.66 31.97c1.77 5.35-2.26 10.55-7.6 10.55z\"]\n};\nvar faChalkboard = {\n prefix: 'far',\n iconName: 'chalkboard',\n icon: [640, 512, [], \"f51b\", \"M80 48h480v368h48V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h48V48zm544 416H512v-80c0-17.67-14.33-32-32-32H288c-17.67 0-32 14.33-32 32v80H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-160 0H304v-64h160v64z\"]\n};\nvar faChalkboardTeacher = {\n prefix: 'far',\n iconName: 'chalkboard-teacher',\n icon: [640, 512, [], \"f51c\", \"M226.79 342.02C199 342.02 192.02 352 160 352c-31.97 0-38.95-9.98-66.79-9.98C21.12 342.02 0 403 0 434.67V472c0 22.09 17.91 40 40 40h240c22.09 0 40-17.91 40-40v-37.33c0-42.72-30.58-92.65-93.21-92.65zM272 464H48v-29.33c0-14.01 8.15-44.65 45.21-44.65 17.24 0 29.56 9.98 66.79 9.98 37.37 0 49.49-9.98 66.79-9.98 37.02 0 45.21 30.58 45.21 44.65V464zM160 320c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zm0-144c26.47 0 48 21.53 48 48s-21.53 48-48 48-48-21.53-48-48 21.53-48 48-48zM592 0H208c-26.47 0-48 22.25-48 49.59V96c9.69 0 32.27 3.13 48 9.52V48h384v320h-48v-48c0-17.67-14.33-32-32-32H384c-17.67 0-32 14.33-32 32v96h240c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0zm-96 368h-96v-32h96v32z\"]\n};\nvar faChargingStation = {\n prefix: 'far',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M120.57 224h42.39l-8.78 54.77c-1.28 4.74 2.86 9.23 8.34 9.23 2.98 0 5.85-1.37 7.42-3.74l66.93-99.28c3.3-4.99-.82-11.26-7.42-11.26h-41.22l8.28-36.28c1.45-4.76-2.66-9.43-8.28-9.43h-48.57c-4.3 0-7.93 2.78-8.5 6.51l-19.1 81c-.67 4.49 3.33 8.48 8.51 8.48zM560 128h-16V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v48c0 35.76 23.62 65.69 56 75.93V372c0 15.44-12.56 28-28 28s-28-12.56-28-28v-28c0-48.53-39.47-88-88-88h-8V48c0-26.51-21.49-48-48-48H80C53.49 0 32 21.49 32 48v416H8c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8h336c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8h-24V304h8c22.06 0 40 17.94 40 40v28c0 41.91 34.09 76 76 76s76-34.09 76-76V267.93c32.38-10.24 56-40.17 56-75.93v-48c0-8.84-7.16-16-16-16zM272 464H80V48h192v416zm256-272c0 17.64-14.36 32-32 32s-32-14.36-32-32v-16h64v16z\"]\n};\nvar faChartArea = {\n prefix: 'far',\n iconName: 'chart-area',\n icon: [512, 512, [], \"f1fe\", \"M500 400c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v324h452zM372 128.7l-84 56-85.1-85.1c-5.5-5.5-14.8-4.4-18.8 2.3L96 256v96h384l-90.3-218.1c-3-6.9-11.5-9.4-17.7-5.2zM144 269.3l57.5-103.2 80.4 80.4c71.8-47.9 8.2-5.4 80.7-53.8L407.2 304H144v-34.7z\"]\n};\nvar faChartBar = {\n prefix: 'far',\n iconName: 'chart-bar',\n icon: [512, 512, [], \"f080\", \"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\"]\n};\nvar faChartLine = {\n prefix: 'far',\n iconName: 'chart-line',\n icon: [512, 512, [], \"f201\", \"M117.65 277.65c6.25 6.25 16.38 6.25 22.63 0L192 225.94l84.69 84.69c6.25 6.25 16.38 6.25 22.63 0L409.54 200.4l29.49 29.5c15.12 15.12 40.97 4.41 40.97-16.97V112c0-8.84-7.16-16-16-16H363.07c-21.38 0-32.09 25.85-16.97 40.97l29.5 29.49-87.6 87.6-84.69-84.69c-6.25-6.25-16.38-6.25-22.63 0l-74.34 74.34c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faChartLineDown = {\n prefix: 'far',\n iconName: 'chart-line-down',\n icon: [512, 512, [], \"f64d\", \"M180.69 246.62c6.25 6.25 16.38 6.25 22.63 0L288 161.94l87.6 87.6-29.5 29.49c-15.12 15.12-4.41 40.97 16.97 40.97H464c8.84 0 16-7.16 16-16V203.07c0-21.38-25.85-32.09-40.97-16.97l-29.49 29.5-110.23-110.22c-6.25-6.25-16.38-6.25-22.63 0L192 190.06l-51.72-51.72c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l74.35 74.34zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faChartNetwork = {\n prefix: 'far',\n iconName: 'chart-network',\n icon: [640, 512, [], \"f78a\", \"M568 368c-19.1 0-36.3 7.6-49.2 19.7L440.6 343c4.5-12.2 7.4-25.2 7.4-39 0-61.9-50.1-112-112-112-8.4 0-16.6 1.1-24.4 2.9l-32.2-69c15-13.2 24.6-32.3 24.6-53.8 0-39.8-32.2-72-72-72s-72 32.2-72 72 32.2 72 72 72c.9 0 1.8-.2 2.7-.3l33.5 71.7C241.5 235.9 224 267.8 224 304c0 61.9 50.1 112 112 112 30.7 0 58.6-12.4 78.8-32.5l82.2 47c-.4 3.1-1 6.3-1 9.5 0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72zM232 96c-13.2 0-24-10.8-24-24s10.8-24 24-24 24 10.8 24 24-10.8 24-24 24zm104 272c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm232 96c-13.2 0-24-10.8-24-24s10.8-24 24-24 24 10.8 24 24-10.8 24-24 24zm-54.4-261.2l-19.2-25.6-48 36 19.2 25.6 48-36zM576 192c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zM152 320h48v-32h-48v32zm-88-80c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z\"]\n};\nvar faChartPie = {\n prefix: 'far',\n iconName: 'chart-pie',\n icon: [544, 512, [], \"f200\", \"M511.96 223.2C503.72 103.74 408.26 8.28 288.8.04c-.35-.03-.7-.04-1.04-.04C279.11 0 272 7.44 272 16.23V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM320 192V53.51C387.56 70.95 441.05 124.44 458.49 192H320zm-96 96V50.72c0-8.83-7.18-16.21-15.74-16.21-.7 0-1.4.05-2.11.15C86.99 51.49-4.1 155.6.14 280.37 4.47 407.53 113.18 512 240.12 512c.98 0 1.93-.01 2.91-.02 50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288zm18.44 175.99l-2.31.01c-100.66 0-188.59-84.84-192.01-185.26-2.91-85.4 50.15-160.37 127.88-187.6v216.74l14.06 14.06 126.22 126.22c-23.16 10.1-48.16 15.5-73.84 15.83zM527.79 288H290.5l158.03 158.03c3.17 3.17 7.41 4.81 11.62 4.81 3.82 0 7.62-1.35 10.57-4.13 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85z\"]\n};\nvar faChartPieAlt = {\n prefix: 'far',\n iconName: 'chart-pie-alt',\n icon: [512, 512, [], \"f64e\", \"M461.29 288H224V50.71c0-8.83-7.18-16.21-15.74-16.21-.7 0-1.4.05-2.11.15C87.08 51.47-3.96 155.43.13 280.07 4.2 404.1 107.91 507.8 231.93 511.87c2.69.09 5.39.13 8.07.13 121.04 0 220.89-89.66 237.35-206.16 1.33-9.45-6.52-17.84-16.06-17.84zM240 464c-2.15 0-4.33-.04-6.5-.11-98.98-3.25-182.15-86.42-185.4-185.4C45.31 193.22 98.36 118.35 176 91.14V336h244.78C394.15 411.06 322.06 464 240 464zM288.8.04c-.35-.03-.7-.04-1.04-.04C279.1 0 272 7.44 272 16.23V240h223.77c9.14 0 16.82-7.69 16.2-16.8C503.72 103.74 408.26 8.28 288.8.04z\"]\n};\nvar faChartScatter = {\n prefix: 'far',\n iconName: 'chart-scatter',\n icon: [512, 512, [], \"f7ee\", \"M496 400H48V80a16 16 0 0 0-16-16H16A16 16 0 0 0 0 80v336a32 32 0 0 0 32 32h464a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm-336-80a32 32 0 1 0-32-32 32 32 0 0 0 32 32zm256-160a32 32 0 1 0-32-32 32 32 0 0 0 32 32zm-224 0a32 32 0 1 0-32-32 32 32 0 0 0 32 32zm192 160a32 32 0 1 0-32-32 32 32 0 0 0 32 32zm-96-64a32 32 0 1 0-32-32 32 32 0 0 0 32 32z\"]\n};\nvar faCheck = {\n prefix: 'far',\n iconName: 'check',\n icon: [512, 512, [], \"f00c\", \"M435.848 83.466L172.804 346.51l-96.652-96.652c-4.686-4.686-12.284-4.686-16.971 0l-28.284 28.284c-4.686 4.686-4.686 12.284 0 16.971l133.421 133.421c4.686 4.686 12.284 4.686 16.971 0l299.813-299.813c4.686-4.686 4.686-12.284 0-16.971l-28.284-28.284c-4.686-4.686-12.284-4.686-16.97 0z\"]\n};\nvar faCheckCircle = {\n prefix: 'far',\n iconName: 'check-circle',\n icon: [512, 512, [], \"f058\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z\"]\n};\nvar faCheckDouble = {\n prefix: 'far',\n iconName: 'check-double',\n icon: [448, 512, [], \"f560\", \"M444.09 166.99l-27.39-28.37c-2.6-1.96-5.53-2.93-8.8-2.93-3.27 0-5.87.98-7.82 2.93L142.81 396.86l-94.88-94.88c-1.96-2.61-4.55-3.91-7.82-3.91-3.27 0-6.21 1.3-8.8 3.91l-27.4 27.38c-2.6 2.61-3.91 5.55-3.91 8.8s1.31 5.87 3.91 7.82l130.1 131.07c2.6 1.96 5.53 2.94 8.8 2.94 3.27 0 5.87-.98 7.82-2.94L444.08 183.6c2.6-2.61 3.91-5.55 3.91-8.8.01-3.24-1.3-5.86-3.9-7.81zM131.88 285.04c2.62 1.97 5.58 2.96 8.88 2.96s5.92-.99 7.89-2.96L353.34 80.35c2.62-2.64 3.95-5.6 3.95-8.88 0-3.28-1.33-5.92-3.95-7.89l-27.63-28.62c-2.62-1.97-5.58-2.96-8.88-2.96s-5.92.99-7.89 2.96L140.76 204.12l-60.41-60.41c-1.97-2.64-4.59-3.95-7.89-3.95s-6.26 1.31-8.88 3.95l-27.63 27.63c-2.62 2.64-3.95 5.6-3.95 8.88 0 3.29 1.33 5.92 3.95 7.89l95.93 96.93z\"]\n};\nvar faCheckSquare = {\n prefix: 'far',\n iconName: 'check-square',\n icon: [448, 512, [], \"f14a\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 400H48V80h352v352zm-35.864-241.724L191.547 361.48c-4.705 4.667-12.303 4.637-16.97-.068l-90.781-91.516c-4.667-4.705-4.637-12.303.069-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l59.792 60.277 141.352-140.216c4.705-4.667 12.303-4.637 16.97.068l22.536 22.718c4.667 4.706 4.637 12.304-.068 16.971z\"]\n};\nvar faCheese = {\n prefix: 'far',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M299.83 32h-1.49a32.27 32.27 0 0 0-19.64 7L0 255.87V448a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V255.87C512 136.05 418 38.2 299.83 32zm3.77 48.4c87.74 7.67 155.63 79.47 159.64 167.42H88.47zM464 432H48V295.89h416z\"]\n};\nvar faCheeseSwiss = {\n prefix: 'far',\n iconName: 'cheese-swiss',\n icon: [512, 512, [], \"f7f0\", \"M176 319.9a48 48 0 1 0 48 48 48 48 0 0 0-48-48zM299.83 32h-1.49a32.27 32.27 0 0 0-19.64 7L0 255.87V448a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V255.87C512 136.05 418 38.2 299.83 32zM196.48 163.8A47.9 47.9 0 1 0 270 106.59l33.6-26.15c87.74 7.67 155.63 79.47 159.64 167.42h-53.9a47.59 47.59 0 0 0-82.68 0H88.47zM464 432H48V295.89h278.66a47.59 47.59 0 0 0 82.68 0H464z\"]\n};\nvar faCheeseburger = {\n prefix: 'far',\n iconName: 'cheeseburger',\n icon: [512, 512, [], \"f7f1\", \"M352 176a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm-96-32a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm-96 32a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm352 112a79.33 79.33 0 0 0-28.1-60.4 8.78 8.78 0 0 0 1.2-1.5 72.49 72.49 0 0 0 .6-75.4C442.3 78.7 352.19 32.1 256 32c-96.1.1-186.31 46.7-229.71 118.7a72.45 72.45 0 0 0 .6 75.4 15.76 15.76 0 0 0 1.2 1.5 79.35 79.35 0 0 0-9.3 111.8 78.09 78.09 0 0 0 15 13.7c-.7 2.8-1.7 5.5-1.7 8.5v34.7a83.73 83.73 0 0 0 83.7 83.7h280.6a83.8 83.8 0 0 0 83.71-83.7v-34.7c0-3-1.1-5.7-1.7-8.5A80 80 0 0 0 512 288zM67.37 175.5c34.9-57.9 109-95.4 188.61-95.5 79.71.1 153.81 37.6 188.72 95.5a24.51 24.51 0 0 1-.2 25.2c-2.9 4.7-7.41 7.4-12.21 7.4H79.67c-4.8 0-9.3-2.7-12.2-7.4a24.73 24.73 0 0 1-.1-25.2zM432 396.3a35.72 35.72 0 0 1-35.7 35.7H115.67A35.72 35.72 0 0 1 80 396.3v-25.6h352zm0-76.3H80a32 32 0 0 1 0-64h144l96 48 96-48h16a32 32 0 1 1 0 64z\"]\n};\nvar faChess = {\n prefix: 'far',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M497.59 279.17A31.92 31.92 0 0 0 512 252.44V192a32 32 0 0 0-32-32H288a32 32 0 0 0-32 32v60.5c0 10.92 5.47 21 12.75 25.52L296 299.61v74.77a23.69 23.69 0 0 0-8 17.62v24l-25.6 19.2A16 16 0 0 0 256 448a16 16 0 0 0-6.4-12.8L224 416v-24a23.73 23.73 0 0 0-16.83-22.55c-3.84-25-6.41-50.14-6.41-75.42V256H208a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-3.1l26.91-80.41A24 24 0 0 0 209 96h-64.24V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24h-24a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H48.5a24 24 0 0 0-22.78 31.59l27 80.41H48a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h8.76v38c0 25.17-2.56 50.23-6.36 75.1C39.93 371.71 32 380.73 32 392v24L6.4 435.2A16 16 0 0 0 0 448v48a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16 16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-48a16 16 0 0 0-6.4-12.8L480 416v-24a23.69 23.69 0 0 0-8-17.62v-74.82zM175.71 144l-16.33 48.76-5.1 15.24h-50.92l-5.14-15.28L81.87 144zm-17 224H98.82c3.55-25.22 5.94-50.12 5.94-74v-38h48v38c0 23.92 2.4 48.81 5.94 74zM48 464l12.8-9.6L80 440v-24h96v24l19.2 14.4L208 464zm256 0l12.8-9.6L336 440v-24h96v24l19.2 14.4L464 464zm160-219.33l-40 31.74V368h-80v-91.61l-40-31.56V208h32v24h32v-24h32v24h32v-24h32zM384 288a16 16 0 0 0-16 16v32h32v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessBishop = {\n prefix: 'far',\n iconName: 'chess-bishop',\n icon: [320, 512, [], \"f43a\", \"M304 464H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM0 304c0 51.64 30.14 85.24 64 96v32h48v-67.11l-33.46-10.64C63.78 349.56 48 333.9 48 304c0-74.57 66.13-165.78 101.33-201.84a15.81 15.81 0 0 1 22.27-.24c12.64 11.8 34 35.52 59.22 81.33l-66.13 66.13a16 16 0 0 0 0 22.62L176 283.31a16 16 0 0 0 22.62 0L252.94 229c11.43 27.7 19.06 54.54 19.06 75 0 29.9-15.78 45.56-30.54 50.25L208 364.89V432h48v-32c33.86-10.76 64-44.36 64-96 0-73.38-67.81-197.2-120.6-241.49C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 0 230.62 0 304z\"]\n};\nvar faChessBishopAlt = {\n prefix: 'far',\n iconName: 'chess-bishop-alt',\n icon: [256, 512, [], \"f43b\", \"M249.6 435.2L224 416v-24c0-12.1-9.1-21.68-20.74-23.34a460.24 460.24 0 0 1-3.2-48.66H208a16 16 0 0 0 16-16v-16a15.8 15.8 0 0 0-13.62-15.52C224 261.59 232 243.33 232 211.37c0-41.66-25.85-100.61-57.95-132.6C184.27 76 192 67.06 192 56a24.07 24.07 0 0 0-24-24H88a24.07 24.07 0 0 0-24 24c0 11.06 7.73 20 18 22.77-32.15 31.99-58 90.94-58 132.6 0 32 8 50.22 21.62 61.11A15.8 15.8 0 0 0 32 288v16a16 16 0 0 0 16 16h7.94a460.24 460.24 0 0 1-3.2 48.66C41.1 370.31 32 379.9 32 392v24L6.4 435.2A16 16 0 0 0 0 448v48a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-48a16 16 0 0 0-6.4-12.8zM115.21 110.39a16.3 16.3 0 0 1 25.58 0 220.39 220.39 0 0 1 17.78 26.27L121 174.28a8 8 0 0 0 0 11.32l13.45 13.45a8 8 0 0 0 11.32 0l28.66-28.67c5.8 15.3 9.62 29.88 9.62 41v.55A49.85 49.85 0 0 1 169 247l-9 9v16H96v-16l-9-9a49.83 49.83 0 0 1-15-35.1v-.59c0-25.71 17.81-68.97 43.21-100.92zM154.9 368h-53.8c1.58-16 2.78-31.95 2.84-48h48.12c.06 16.05 1.26 32 2.84 48zM48 464l32-24v-24h96v24l32 24z\"]\n};\nvar faChessBoard = {\n prefix: 'far',\n iconName: 'chess-board',\n icon: [512, 512, [], \"f43c\", \"M448 384v-64h-64v64zm0-127.93v-64h-64v64zM320.07 448h64v-64h-64zm-127.94 0h64v-64h-64zM64.2 256.1v64h64v-64zM448 64.2h-64v64h64zm-255.87 0h-64v64h64zm-127.93 64v64h64v-64zm255.87-64h-64v64h64zm-64 255.87v64h64v-64zm-64 0h-64v64h64zM384 192.13v-64h-64v64zm-64 127.94h64v-64h-64zm-64-127.94v-64h-64v64zm64 64v-64h-64v64zm-64 0h-64v64h64zm-64-64h-64v64h64zm-64 191.9H64v64h64zM480 0H32A32 32 0 0 0 0 32v448a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zm-16 464H48V48h416z\"]\n};\nvar faChessClock = {\n prefix: 'far',\n iconName: 'chess-clock',\n icon: [640, 512, [], \"f43d\", \"M448.22 416.06a112 112 0 1 0-112-111.95 112 112 0 0 0 112 111.95zm-12.67-122.19L486.46 243a12 12 0 0 1 17 0l5.66 5.65a12 12 0 0 1 0 17l-50.91 50.9a12 12 0 0 1-17 0l-5.65-5.66a12 12 0 0 1-.01-17.02zM600 96h-55.79V80a16 16 0 0 0-16-16h-128a16 16 0 0 0-16 16v16H200.08V48h40a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H112a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h40v48H40a40 40 0 0 0-40 40v336a40 40 0 0 0 40 40h560a40 40 0 0 0 40-40V136a40 40 0 0 0-40-40zm-8 368H48V144h544zm-399.88-48.09a112 112 0 1 0-112-112 112 112 0 0 0 112 112zm-16-179.91a12 12 0 0 1 12-12h8a12 12 0 0 1 12 12v72a12 12 0 0 1-12 12h-8a12 12 0 0 1-12-12z\"]\n};\nvar faChessClockAlt = {\n prefix: 'far',\n iconName: 'chess-clock-alt',\n icon: [640, 512, [], \"f43e\", \"M600 96H487.94V48h40a16 16 0 0 0 16-16V16A16 16 0 0 0 528 0H400a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h40v48H256V80a16 16 0 0 0-16-16H112a16 16 0 0 0-16 16v16H40a40 40 0 0 0-40 40v336a40 40 0 0 0 40 40h560a40 40 0 0 0 40-40V136a40 40 0 0 0-40-40zm-8 368H48V144h544zm-400-47.94A112 112 0 1 0 80 304.11a112 112 0 0 0 112 111.95zm-12.67-122.19L230.24 243a12 12 0 0 1 17 0l5.65 5.65a12 12 0 0 1 0 17L202 316.49a12 12 0 0 1-17 0l-5.66-5.66a12 12 0 0 1-.01-16.96zM448 415.91A112 112 0 1 0 336 304a112 112 0 0 0 112 111.91zM432 236a12 12 0 0 1 12-12h8a12 12 0 0 1 12 12v72a12 12 0 0 1-12 12h-8a12 12 0 0 1-12-12z\"]\n};\nvar faChessKing = {\n prefix: 'far',\n iconName: 'chess-king',\n icon: [448, 512, [], \"f43f\", \"M400 464H48a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm37.05-281.16A55.37 55.37 0 0 0 391.93 160H248v-56h48a8 8 0 0 0 8-8V64a8 8 0 0 0-8-8h-48V8a8 8 0 0 0-8-8h-32a8 8 0 0 0-8 8v48h-48a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8h48v56H56a55.95 55.95 0 0 0-53.31 73.06L68.51 432h50.54L48.38 218.38A8 8 0 0 1 56 208h335.93a8 8 0 0 1 7.78 10l-70.82 214h50.55l66-199.31a55.35 55.35 0 0 0-8.39-49.85z\"]\n};\nvar faChessKingAlt = {\n prefix: 'far',\n iconName: 'chess-king-alt',\n icon: [320, 512, [], \"f440\", \"M281.6 435.2L256 416v-24a23.73 23.73 0 0 0-16.83-22.55c-3.83-25-6.41-50.14-6.41-75.42V256H240a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-3.1l26.92-80.41A24 24 0 0 0 241 96h-64.24V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24h-24a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H80.5a24 24 0 0 0-22.78 31.59l27 80.41H80a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h8.76v38c0 25.17-2.56 50.23-6.36 75.1C71.93 371.71 64 380.73 64 392v24l-25.6 19.2A16 16 0 0 0 32 448v48a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-48a16 16 0 0 0-6.4-12.8zM207.72 144l-21.52 64h-50.88l-21.5-64zm-17.29 224H131.1c3.37-24.53 5.66-49.2 5.66-74v-38h48v38c0 24.8 2.29 49.47 5.67 74zM80 464l32-24v-24h96v24l32 24z\"]\n};\nvar faChessKnight = {\n prefix: 'far',\n iconName: 'chess-knight',\n icon: [384, 512, [], \"f441\", \"M44.05 320.68l14.41 6.41A113 113 0 0 0 32.07 400v32h48v-32a65.49 65.49 0 0 1 36.18-58.57L154.36 318a39.31 39.31 0 0 0 21.71-35.15v-58.78l-15.27 9.06a19.64 19.64 0 0 0-10.26 12.8L143 271a26.2 26.2 0 0 1-15.35 16.78L117.17 292a26.12 26.12 0 0 1-20.36-.38l-33.26-14.8A26.21 26.21 0 0 1 48 252.88V140.53a19.67 19.67 0 0 1 5.75-13.9l7.34-7.34L49.46 96A14 14 0 0 1 48 89.82 9.82 9.82 0 0 1 57.82 80h105.09c86.76 0 157 70.37 157 157.17V432h48V237.17C367.93 124 276 32 162.91 32H57.82A57.89 57.89 0 0 0 0 89.82a62.22 62.22 0 0 0 5.15 24.72 67.51 67.51 0 0 0-5.15 26v112.34a74.26 74.26 0 0 0 44.05 67.8zM80.07 164a20 20 0 1 0 20-20 20 20 0 0 0-20 20zM368 464H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faChessKnightAlt = {\n prefix: 'far',\n iconName: 'chess-knight-alt',\n icon: [320, 512, [], \"f442\", \"M89.69 195.2a13.87 13.87 0 1 0-13.81-13.87 13.84 13.84 0 0 0 13.81 13.87zm223.91 240L288 416v-30.13a78.67 78.67 0 0 0 16-47.13V232.61C304 139.64 228.38 64 135.42 64h-80a55.65 55.65 0 0 0-52.31 74.15 62.19 62.19 0 0 0-3.06 19.56v84.84a67.88 67.88 0 0 0 37 60.43q-15.76 22.09-20.2 51.52A75.61 75.61 0 0 0 32 411.57V416L6.4 435.2A16 16 0 0 0 0 448v48a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-48a16 16 0 0 0-6.4-12.8zM55.43 112h80C201.74 112 256 166.27 256 232.61v106.13a32 32 0 0 1-9.37 22.63L240 368H64.8c-.19-2.14-.78-4.23-.45-6.4 4.34-29 21.48-45.89 46.18-57l34.85-10.86A24.76 24.76 0 0 0 160 271.19v-48.26l-27.12 4.7a14.88 14.88 0 0 0-7.72 9.68l-5.68 18.95A19.76 19.76 0 0 1 108 268.93c-5.54 2.22-10.22 4.61-15.48 4.61a18.67 18.67 0 0 1-7.71-1.74l-25-11.15A19.83 19.83 0 0 1 48 242.55v-84.84c0-7.37 4.39-10.55 9.85-16l-8.71-17.61c-3.3-6.63 1.14-12.1 6.29-12.1zM48 464l32-24v-24h160v24l32 24z\"]\n};\nvar faChessPawn = {\n prefix: 'far',\n iconName: 'chess-pawn',\n icon: [320, 512, [], \"f443\", \"M304 464H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM48 288h32v29.5c0 40.29-3.51 81.23-23.43 114.5h53.57c15-37 17.86-77.35 17.86-114.5V288h64v29.5c0 37.15 2.91 77.49 17.86 114.5h53.57C243.51 398.73 240 357.79 240 317.5V288h32a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-31c23.8-21.93 39-53.08 39-88a120 120 0 0 0-240 0c0 34.92 15.16 66.07 39 88H48a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16zM160 80a72 72 0 1 1-72 72 72.08 72.08 0 0 1 72-72z\"]\n};\nvar faChessPawnAlt = {\n prefix: 'far',\n iconName: 'chess-pawn-alt',\n icon: [256, 512, [], \"f444\", \"M249.6 435.2L224 416v-24a24 24 0 0 0-24-24h2.61c-1.54-16-2.61-32-2.61-48v-32h8a16 16 0 0 0 16-16v-16a15.76 15.76 0 0 0-13.61-15.46A95 95 0 0 0 224 192a96 96 0 1 0-178.42 48.49A15.79 15.79 0 0 0 32 256v16a16 16 0 0 0 16 16h8v32c0 16-1.07 32-2.61 48H56a24 24 0 0 0-24 24v24L6.4 435.2A16 16 0 0 0 0 448v48a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-48a16 16 0 0 0-6.4-12.8zM152 288v30c0 16.69 1 33.35 2.54 50h-53.08c1.54-16.62 2.54-33.28 2.54-50v-30zm-24-144a48 48 0 1 1-48 48 48.05 48.05 0 0 1 48-48zM48 464l32-24v-24h96v24l32 24z\"]\n};\nvar faChessQueen = {\n prefix: 'far',\n iconName: 'chess-queen',\n icon: [512, 512, [], \"f445\", \"M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm248.87 72.16l-28.51-15.92a15.09 15.09 0 0 0-8.45-2.59 17.59 17.59 0 0 0-13.84 7.27A47.48 47.48 0 0 1 416 192a50.79 50.79 0 0 1-9.16-.85C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49-1.12.07-2.23.11-3.33.11a47.47 47.47 0 0 1-38.21-19.26 17.17 17.17 0 0 0-13.61-7.13 15.16 15.16 0 0 0-8.48 2.59l-28.57 16a16 16 0 0 0-5.44 20.47L109.84 432H163L69.91 236.32A94.78 94.78 0 0 0 96 240c2.17 0 4.37-.07 6.57-.22 34.06-2.31 63.1-23 78.23-52.22a95.81 95.81 0 0 0 150.29.14c13.29 26 37.51 45.18 67 50.64A98.41 98.41 0 0 0 416 240a96.13 96.13 0 0 0 26-3.55L349 432h53.16l108.15-227.37a16 16 0 0 0-5.44-20.47zM432 464H80a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faChessQueenAlt = {\n prefix: 'far',\n iconName: 'chess-queen-alt',\n icon: [256, 512, [], \"f446\", \"M223.67 416v-24c0-11.22-7.86-20.21-18.25-22.84-3.12-22.26-5.34-44.64-5.34-67.13V256h24a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-7.5l38.59-105a8.16 8.16 0 0 0-2.76-10.42l-12.15-8.11c-3.8-2.53-8.61-1.24-11.33 2.39-14 18.65-43.76 9-43.76-16.06a6.82 6.82 0 0 0-6.85-6.8h-19.71a6.6 6.6 0 0 0-6.54 5 24.4 24.4 0 0 1-47.76 0 6.59 6.59 0 0 0-6.54-5H78.06a6.82 6.82 0 0 0-6.82 6.82c0 25.32-30 34.55-43.83 16-2.44-3.28-7.21-5-11.23-2.31L4 92.6A8.16 8.16 0 0 0 1.24 103l38.59 105h-7.5a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h24v46c0 22.44-2.21 44.76-5.33 67-10.78 2.35-19 11.5-19 23v24L6.39 435.2A16 16 0 0 0 0 448v48a16 16 0 0 0 16 16h223.64a16 16 0 0 0 16-16v-48a16 16 0 0 0-6.39-12.8zM93.26 127.36a71.71 71.71 0 0 0 69.71.08 70.83 70.83 0 0 0 26.82 14.43L166.92 208H89.46l-22.89-66.19a71.44 71.44 0 0 0 26.69-14.45zM156.92 368H99.46c2.78-21.9 4.77-43.89 4.77-66v-46h47.92v46c0 22.11 1.99 44.1 4.77 66zm-109 96l31.95-24v-24h95.86v24l31.95 24zm80.27-408a28 28 0 1 0-28-28 28 28 0 0 0 28 28z\"]\n};\nvar faChessRook = {\n prefix: 'far',\n iconName: 'chess-rook',\n icon: [384, 512, [], \"f447\", \"M368 464H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM346 32H38A38 38 0 0 0 0 70v139.43a32 32 0 0 0 11 24.14l37 32.21c0 48.49 1.54 93-11.85 166.22h49C98 356.41 96 309.53 96 238.22l-48-41.78V80h64v48h48V80h64v48h48V80h64v116.44l-48 41.78C288 309 286 356.6 298.86 432h49C334.47 358.81 336 314 336 265.78l37-32.21a32 32 0 0 0 11-24.14V70a38 38 0 0 0-38-38zM192 224a32 32 0 0 0-32 32v64h64v-64a32 32 0 0 0-32-32z\"]\n};\nvar faChessRookAlt = {\n prefix: 'far',\n iconName: 'chess-rook-alt',\n icon: [320, 512, [], \"f448\", \"M313.6 435.2L288 416v-24c0-11.17-7.79-20.14-18.13-22.81l-5.34-117.63 26.73-20.15A32 32 0 0 0 304 205.86V96a32 32 0 0 0-32-32H48a32 32 0 0 0-32 32v110a32 32 0 0 0 12.78 25.58l26.69 20.05-5.34 117.6C39.79 371.86 32 380.83 32 392v24L6.4 435.2A16 16 0 0 0 0 448v48a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-48a16 16 0 0 0-6.4-12.8zM64 112h40v32h32v-32h48v32h32v-32h40v85.88l-40.53 30.56L221.55 368H98.45l6.08-139.59L64 197.94zM48 464l32-24v-24h160v24l32 24zm136-216.41a23.59 23.59 0 0 0-47.18 0V288H184z\"]\n};\nvar faChevronCircleDown = {\n prefix: 'far',\n iconName: 'chevron-circle-down',\n icon: [512, 512, [], \"f13a\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm8.5-107.5l122.8-122.8c4.7-4.7 4.7-12.3 0-17l-22.6-22.6c-4.7-4.7-12.3-4.7-17 0L256 277.8l-91.7-91.7c-4.7-4.7-12.3-4.7-17 0l-22.6 22.6c-4.7 4.7-4.7 12.3 0 17l122.8 122.8c4.7 4.7 12.3 4.7 17 0z\"]\n};\nvar faChevronCircleLeft = {\n prefix: 'far',\n iconName: 'chevron-circle-left',\n icon: [512, 512, [], \"f137\", \"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm107.5-8.5l122.8-122.8c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17L234.2 256l91.7 91.7c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L163.5 264.5c-4.7-4.7-4.7-12.3 0-17z\"]\n};\nvar faChevronCircleRight = {\n prefix: 'far',\n iconName: 'chevron-circle-right',\n icon: [512, 512, [], \"f138\", \"M8 256c0 137 111 248 248 248s248-111 248-248S393 8 256 8 8 119 8 256zm448 0c0 110.5-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56s200 89.5 200 200zm-107.5 8.5L225.7 387.3c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l91.7-91.7-91.7-91.7c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l122.8 122.8c4.7 4.7 4.7 12.3 0 17z\"]\n};\nvar faChevronCircleUp = {\n prefix: 'far',\n iconName: 'chevron-circle-up',\n icon: [512, 512, [], \"f139\", \"M264.5 163.5l122.8 122.8c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 234.2l-91.7 91.7c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l122.8-122.8c4.7-4.7 12.3-4.7 17 0zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-48 0c0-110.5-89.5-200-200-200S56 145.5 56 256s89.5 200 200 200 200-89.5 200-200z\"]\n};\nvar faChevronDoubleDown = {\n prefix: 'far',\n iconName: 'chevron-double-down',\n icon: [448, 512, [], \"f322\", \"M441.9 89.7L232.5 299.1c-4.7 4.7-12.3 4.7-17 0L6.1 89.7c-4.7-4.7-4.7-12.3 0-17l19.8-19.8c4.7-4.7 12.3-4.7 17 0L224 233.6 405.1 52.9c4.7-4.7 12.3-4.7 17 0l19.8 19.8c4.7 4.7 4.7 12.3 0 17zm0 143l-19.8-19.8c-4.7-4.7-12.3-4.7-17 0L224 393.6 42.9 212.9c-4.7-4.7-12.3-4.7-17 0L6.1 232.7c-4.7 4.7-4.7 12.3 0 17l209.4 209.4c4.7 4.7 12.3 4.7 17 0l209.4-209.4c4.7-4.7 4.7-12.3 0-17z\"]\n};\nvar faChevronDoubleLeft = {\n prefix: 'far',\n iconName: 'chevron-double-left',\n icon: [448, 512, [], \"f323\", \"M390.3 473.9L180.9 264.5c-4.7-4.7-4.7-12.3 0-17L390.3 38.1c4.7-4.7 12.3-4.7 17 0l19.8 19.8c4.7 4.7 4.7 12.3 0 17L246.4 256l180.7 181.1c4.7 4.7 4.7 12.3 0 17l-19.8 19.8c-4.7 4.7-12.3 4.7-17 0zm-143 0l19.8-19.8c4.7-4.7 4.7-12.3 0-17L86.4 256 267.1 74.9c4.7-4.7 4.7-12.3 0-17l-19.8-19.8c-4.7-4.7-12.3-4.7-17 0L20.9 247.5c-4.7 4.7-4.7 12.3 0 17l209.4 209.4c4.7 4.7 12.3 4.7 17 0z\"]\n};\nvar faChevronDoubleRight = {\n prefix: 'far',\n iconName: 'chevron-double-right',\n icon: [448, 512, [], \"f324\", \"M57.7 38.1l209.4 209.4c4.7 4.7 4.7 12.3 0 17L57.7 473.9c-4.7 4.7-12.3 4.7-17 0l-19.8-19.8c-4.7-4.7-4.7-12.3 0-17L201.6 256 20.9 74.9c-4.7-4.7-4.7-12.3 0-17l19.8-19.8c4.7-4.7 12.3-4.7 17 0zm143 0l-19.8 19.8c-4.7 4.7-4.7 12.3 0 17L361.6 256 180.9 437.1c-4.7 4.7-4.7 12.3 0 17l19.8 19.8c4.7 4.7 12.3 4.7 17 0l209.4-209.4c4.7-4.7 4.7-12.3 0-17L217.7 38.1c-4.7-4.7-12.3-4.7-17 0z\"]\n};\nvar faChevronDoubleUp = {\n prefix: 'far',\n iconName: 'chevron-double-up',\n icon: [448, 512, [], \"f325\", \"M6.1 422.3l209.4-209.4c4.7-4.7 12.3-4.7 17 0l209.4 209.4c4.7 4.7 4.7 12.3 0 17l-19.8 19.8c-4.7 4.7-12.3 4.7-17 0L224 278.4 42.9 459.1c-4.7 4.7-12.3 4.7-17 0L6.1 439.3c-4.7-4.7-4.7-12.3 0-17zm0-143l19.8 19.8c4.7 4.7 12.3 4.7 17 0L224 118.4l181.1 180.7c4.7 4.7 12.3 4.7 17 0l19.8-19.8c4.7-4.7 4.7-12.3 0-17L232.5 52.9c-4.7-4.7-12.3-4.7-17 0L6.1 262.3c-4.7 4.7-4.7 12.3 0 17z\"]\n};\nvar faChevronDown = {\n prefix: 'far',\n iconName: 'chevron-down',\n icon: [448, 512, [], \"f078\", \"M441.9 167.3l-19.8-19.8c-4.7-4.7-12.3-4.7-17 0L224 328.2 42.9 147.5c-4.7-4.7-12.3-4.7-17 0L6.1 167.3c-4.7 4.7-4.7 12.3 0 17l209.4 209.4c4.7 4.7 12.3 4.7 17 0l209.4-209.4c4.7-4.7 4.7-12.3 0-17z\"]\n};\nvar faChevronLeft = {\n prefix: 'far',\n iconName: 'chevron-left',\n icon: [256, 512, [], \"f053\", \"M231.293 473.899l19.799-19.799c4.686-4.686 4.686-12.284 0-16.971L70.393 256 251.092 74.87c4.686-4.686 4.686-12.284 0-16.971L231.293 38.1c-4.686-4.686-12.284-4.686-16.971 0L4.908 247.515c-4.686 4.686-4.686 12.284 0 16.971L214.322 473.9c4.687 4.686 12.285 4.686 16.971-.001z\"]\n};\nvar faChevronRight = {\n prefix: 'far',\n iconName: 'chevron-right',\n icon: [256, 512, [], \"f054\", \"M24.707 38.101L4.908 57.899c-4.686 4.686-4.686 12.284 0 16.971L185.607 256 4.908 437.13c-4.686 4.686-4.686 12.284 0 16.971L24.707 473.9c4.686 4.686 12.284 4.686 16.971 0l209.414-209.414c4.686-4.686 4.686-12.284 0-16.971L41.678 38.101c-4.687-4.687-12.285-4.687-16.971 0z\"]\n};\nvar faChevronSquareDown = {\n prefix: 'far',\n iconName: 'chevron-square-down',\n icon: [448, 512, [], \"f329\", \"M215.5 348.5L92.7 225.7c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l91.7 91.7 91.7-91.7c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17L232.5 348.5c-4.7 4.7-12.3 4.7-17 0zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faChevronSquareLeft = {\n prefix: 'far',\n iconName: 'chevron-square-left',\n icon: [448, 512, [], \"f32a\", \"M131.5 247.5l122.8-122.8c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17L202.2 256l91.7 91.7c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L131.5 264.5c-4.7-4.7-4.7-12.3 0-17zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faChevronSquareRight = {\n prefix: 'far',\n iconName: 'chevron-square-right',\n icon: [448, 512, [], \"f32b\", \"M316.5 264.5L193.7 387.3c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l91.7-91.7-91.7-91.7c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l122.8 122.8c4.7 4.7 4.7 12.3 0 17zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faChevronSquareUp = {\n prefix: 'far',\n iconName: 'chevron-square-up',\n icon: [448, 512, [], \"f32c\", \"M232.5 163.5l122.8 122.8c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L224 234.2l-91.7 91.7c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l122.8-122.8c4.7-4.7 12.3-4.7 17 0zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faChevronUp = {\n prefix: 'far',\n iconName: 'chevron-up',\n icon: [448, 512, [], \"f077\", \"M6.101 359.293L25.9 379.092c4.686 4.686 12.284 4.686 16.971 0L224 198.393l181.13 180.698c4.686 4.686 12.284 4.686 16.971 0l19.799-19.799c4.686-4.686 4.686-12.284 0-16.971L232.485 132.908c-4.686-4.686-12.284-4.686-16.971 0L6.101 342.322c-4.687 4.687-4.687 12.285 0 16.971z\"]\n};\nvar faChild = {\n prefix: 'far',\n iconName: 'child',\n icon: [448, 512, [], \"f1ae\", \"M410.947 101.089c-22.433-22.431-55.179-26.458-81.062-14.53C320.167 38.057 277.177 0 224 0c-53.179 0-96.168 38.06-105.885 86.559-25.929-11.95-58.664-7.866-81.06 14.527-28.074 28.075-28.074 73.752-.003 101.825L96 261.823V440c0 39.701 32.299 72 72 72h8c18.423 0 35.253-6.955 48-18.378C236.747 505.045 253.577 512 272 512h8c39.701 0 72-32.299 72-72V261.823l58.946-58.912c28.072-28.073 28.072-73.75.001-101.822zM224 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm152.971 120.971L304 241.941V440c0 13.255-10.745 24-24 24h-8c-13.255 0-24-10.745-24-24v-96h-48v96c0 13.255-10.745 24-24 24h-8c-13.255 0-24-10.745-24-24V241.941L71.029 168.97c-9.372-9.373-9.372-24.569 0-33.942 9.373-9.372 24.568-9.372 33.941 0L177.941 208h92.117l72.971-72.971c9.373-9.372 24.568-9.372 33.941 0 9.373 9.373 9.373 24.569.001 33.942z\"]\n};\nvar faChimney = {\n prefix: 'far',\n iconName: 'chimney',\n icon: [512, 512, [], \"f78b\", \"M480 0H32C14.3 0 0 14.3 0 32v160c0 17.7 14.3 32 32 32v256c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V224c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32zM304 464H80v-80h224v80zM80 336V224h80v112H80zm352 128h-80v-80h80v80zm0-128H208V224h224v112zm32-160H48V48h416v128z\"]\n};\nvar faChurch = {\n prefix: 'far',\n iconName: 'church',\n icon: [576, 512, [], \"f51d\", \"M281.71 320.3c-33.27 3.17-57.71 33.02-57.71 66.45V496c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16V384c0-37.42-32.12-67.34-70.29-63.7zm276.86 19.69L448 292.58v-34.46c0-11.24-5.9-21.66-15.54-27.44L312 158.4V112h60c6.63 0 12-5.37 12-12V76c0-6.63-5.37-12-12-12h-60V12c0-6.63-5.37-12-12-12h-24c-6.63 0-12 5.37-12 12v52h-60c-6.63 0-12 5.37-12 12v24c0 6.63 5.37 12 12 12h60v46.4l-120.46 72.28A31.997 31.997 0 0 0 128 258.12v34.47l-110.57 47.4C6.96 344.99 0 357.89 0 372.32v122.44C0 504.28 5.97 512 13.33 512H32c8.84 0 16-7.16 16-16V379.11l80-34.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V267.17l112-67.2 112 67.2V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V344.81l80 34.3V496c0 8.84 7.16 16 16 16h18.67c7.37 0 13.33-7.71 13.33-17.23V372.32c0-14.43-6.96-27.33-17.43-32.33z\"]\n};\nvar faCircle = {\n prefix: 'far',\n iconName: 'circle',\n icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z\"]\n};\nvar faCircleNotch = {\n prefix: 'far',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M288 28.977v16.391c0 7.477 5.182 13.945 12.474 15.598C389.568 81.162 456 160.742 456 256c0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-95.244 66.422-174.837 155.526-195.034C218.818 59.313 224 52.845 224 45.368V28.981c0-10.141-9.322-17.76-19.246-15.675C91.959 37.004 7.373 137.345 8.004 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-119.349-84.308-219.003-196.617-242.665C297.403 11.232 288 18.779 288 28.977z\"]\n};\nvar faCity = {\n prefix: 'far',\n iconName: 'city',\n icon: [640, 512, [], \"f64f\", \"M244 384h-40c-6.63 0-12 5.37-12 12v40c0 6.63 5.37 12 12 12h40c6.63 0 12-5.37 12-12v-40c0-6.63-5.37-12-12-12zm0-192h-40c-6.63 0-12 5.37-12 12v40c0 6.63 5.37 12 12 12h40c6.63 0 12-5.37 12-12v-40c0-6.63-5.37-12-12-12zm-96 0h-40c-6.63 0-12 5.37-12 12v40c0 6.63 5.37 12 12 12h40c6.63 0 12-5.37 12-12v-40c0-6.63-5.37-12-12-12zm0 192h-40c-6.63 0-12 5.37-12 12v40c0 6.63 5.37 12 12 12h40c6.63 0 12-5.37 12-12v-40c0-6.63-5.37-12-12-12zm0-96h-40c-6.63 0-12 5.37-12 12v40c0 6.63 5.37 12 12 12h40c6.63 0 12-5.37 12-12v-40c0-6.63-5.37-12-12-12zm96 0h-40c-6.63 0-12 5.37-12 12v40c0 6.63 5.37 12 12 12h40c6.63 0 12-5.37 12-12v-40c0-6.63-5.37-12-12-12zm288 96h-40c-6.63 0-12 5.37-12 12v40c0 6.63 5.37 12 12 12h40c6.63 0 12-5.37 12-12v-40c0-6.63-5.37-12-12-12zm0-96h-40c-6.63 0-12 5.37-12 12v40c0 6.63 5.37 12 12 12h40c6.63 0 12-5.37 12-12v-40c0-6.63-5.37-12-12-12zm84-96H512V24c0-13.26-10.74-24-24-24H280c-13.26 0-24 10.74-24 24v72h-32V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v376c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V144h256V48h160v192h128v256c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V216c0-13.26-10.75-24-24-24zM404 96h-40c-6.63 0-12 5.37-12 12v40c0 6.63 5.37 12 12 12h40c6.63 0 12-5.37 12-12v-40c0-6.63-5.37-12-12-12zm0 192h-40c-6.63 0-12 5.37-12 12v40c0 6.63 5.37 12 12 12h40c6.63 0 12-5.37 12-12v-40c0-6.63-5.37-12-12-12zm0-96h-40c-6.63 0-12 5.37-12 12v40c0 6.63 5.37 12 12 12h40c6.63 0 12-5.37 12-12v-40c0-6.63-5.37-12-12-12z\"]\n};\nvar faClarinet = {\n prefix: 'far',\n iconName: 'clarinet',\n icon: [640, 512, [], \"f8ad\", \"M616 112a23.7 23.7 0 0 0-13.28 4l-66 44H480v-32h24a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H232a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H101.2a31.92 31.92 0 0 0-10.12 1.64l-69.2 23.07A32 32 0 0 0 0 215.06v81.88a32 32 0 0 0 21.88 30.35l69.2 23.07A31.92 31.92 0 0 0 101.2 352h435.53l66 44A24 24 0 0 0 640 376V136a24 24 0 0 0-24-24zm-232 16h64v32h-64zm-96 0h64v32h-64zm304 203.15L551.27 304H103.79L48 285.4v-58.8l55.79-18.6h447.48L592 180.84zM464 232a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm-96 0a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm-96 0a24 24 0 1 0 24 24 24 24 0 0 0-24-24z\"]\n};\nvar faClawMarks = {\n prefix: 'far',\n iconName: 'claw-marks',\n icon: [512, 512, [], \"f6c2\", \"M7.11 224.51c-4.99-2.37-9.39 4.09-5.49 8l85.11 85.13c6 6 9.37 14.14 9.37 22.63V384h43.73c8.49 0 16.62 3.37 22.62 9.37l117.13 117.16c3.86 3.86 10.31-.56 7.98-5.49C206.47 333.11 63.46 251.26 7.11 224.51zM246.69 29.63c6 6 9.37 14.14 9.37 22.63V96h43.73c8.49 0 16.62 3.37 22.62 9.37l52.25 52.26c6 6 9.37 14.14 9.37 22.63V224h43.72c8.49 0 16.62 3.37 22.62 9.37l53.14 53.16c3.86 3.86 10.31-.56 7.98-5.49C430.42 109.11 287.41 27.26 231.05.51c-4.99-2.37-9.39 4.09-5.49 8l21.13 21.12zm262.25 436.9l-1.44-3.03C453.42 347.77 321.51 134.06 45.64 3.14 31.74-3.47 15.02.89 6.06 13.53-2.97 26.3-1.51 43.59 7.8 52.74l144.28 179.7V296h62.05l65.92 65.94V424h64.42l114.97 80.47a31.741 31.741 0 0 0 20.5 7.48c6.44 0 12.87-1.92 18.46-5.86 12.69-8.93 17.13-25.56 10.54-39.56zM359.6 376h-31.56v-33.94L234 248h-33.93v-32.44L92.85 82.16C277.03 188.93 382.78 335.35 435.9 429.43L359.6 376z\"]\n};\nvar faClinicMedical = {\n prefix: 'far',\n iconName: 'clinic-medical',\n icon: [576, 512, [], \"f7f2\", \"M256 200v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8zm314.24 15.44L323.87 13a56 56 0 0 0-71.74 0L5.76 215.42a16 16 0 0 0-2 22.54L14 250.26a16 16 0 0 0 22.53 2L64 229.71V288h-.31v208a16.13 16.13 0 0 0 16.1 16H496a16 16 0 0 0 16-16V229.71l27.5 22.59a16 16 0 0 0 22.53-2l10.26-12.3a16 16 0 0 0-2.05-22.58zM464 224h-.21v240h-352.1V194.48l.31-.25v-4L288 45.65l176 144.62z\"]\n};\nvar faClipboard = {\n prefix: 'far',\n iconName: 'clipboard',\n icon: [384, 512, [], \"f328\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm144 418c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h42v36c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-36h42c3.3 0 6 2.7 6 6z\"]\n};\nvar faClipboardCheck = {\n prefix: 'far',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M269.3 225.8c-3.9-3.9-10.2-3.9-14.1-.1l-88 87.3-38.1-38.5c-3.9-3.9-10.2-3.9-14.1-.1l-23.6 23.4c-3.9 3.9-3.9 10.2-.1 14.1l68.5 69.1c3.9 3.9 10.2 3.9 14.1.1l118.6-117.6c3.9-3.9 3.9-10.2.1-14.1l-23.3-23.6zM336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 48c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm144 408c0 4.4-3.6 8-8 8H56c-4.4 0-8-3.6-8-8V120c0-4.4 3.6-8 8-8h40v32c0 8.8 7.2 16 16 16h160c8.8 0 16-7.2 16-16v-32h40c4.4 0 8 3.6 8 8v336z\"]\n};\nvar faClipboardList = {\n prefix: 'far',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M280 240H168c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8zm0 96H168c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8zM112 232c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 48c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm144 408c0 4.4-3.6 8-8 8H56c-4.4 0-8-3.6-8-8V120c0-4.4 3.6-8 8-8h40v32c0 8.8 7.2 16 16 16h160c8.8 0 16-7.2 16-16v-32h40c4.4 0 8 3.6 8 8v336z\"]\n};\nvar faClipboardListCheck = {\n prefix: 'far',\n iconName: 'clipboard-list-check',\n icon: [384, 512, [], \"f737\", \"M126.2 286.4l64.2-63.6c2.1-2.1 2.1-5.5 0-7.6l-12.6-12.7c-2.1-2.1-5.5-2.1-7.6 0l-47.6 47.2-20.6-20.9c-2.1-2.1-5.5-2.1-7.6 0l-12.7 12.6c-2.1 2.1-2.1 5.5 0 7.6l37.1 37.4c1.9 2.1 5.3 2.1 7.4 0zM336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 48c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm144 408c0 4.4-3.6 8-8 8H56c-4.4 0-8-3.6-8-8V120c0-4.4 3.6-8 8-8h40v32c0 8.8 7.2 16 16 16h160c8.8 0 16-7.2 16-16v-32h40c4.4 0 8 3.6 8 8v336zM112 328c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm168-88h-63.3c-1.3 1.8-2.1 3.9-3.7 5.5L186.2 272H280c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8zm0 96H168c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8z\"]\n};\nvar faClipboardPrescription = {\n prefix: 'far',\n iconName: 'clipboard-prescription',\n icon: [384, 512, [], \"f5e8\", \"M336 64h-80c0-35.35-28.65-64-64-64s-64 28.65-64 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zM192 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm144 408c0 4.42-3.58 8-8 8H56c-4.42 0-8-3.58-8-8V120c0-4.42 3.58-8 8-8h40v32c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-32h40c4.42 0 8 3.58 8 8v336zm-50.34-127.03c3.12-3.12 3.12-8.19 0-11.31l-11.31-11.31c-3.12-3.12-8.19-3.12-11.31 0l-36.69 36.69c-.91.91-.99 2.16-1.37 3.31l-32.3-32.3C211.17 304.9 224 286.03 224 264c0-30.93-25.07-56-56-56h-64c-4.42 0-8 3.58-8 8v144c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-40h25.37l48.97 48.97c-1.15.38-2.4.46-3.31 1.37l-36.69 36.69c-3.12 3.12-3.12 8.19 0 11.31l11.31 11.31c3.12 3.12 8.19 3.12 11.31 0l36.69-36.69c.92-.92.99-2.16 1.37-3.31l40 40c3.12 3.12 8.19 3.12 11.31 0l11.31-11.31c3.12-3.12 3.12-8.19 0-11.31l-40-40c1.15-.38 2.4-.46 3.31-1.37l36.71-36.69zM168 288h-40v-48h40c13.23 0 24 10.77 24 24s-10.77 24-24 24z\"]\n};\nvar faClipboardUser = {\n prefix: 'far',\n iconName: 'clipboard-user',\n icon: [384, 512, [], \"f7f3\", \"M336 64h-80a64 64 0 0 0-128 0H48a48 48 0 0 0-48 48v352a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V112a48 48 0 0 0-48-48zM192 40a24 24 0 1 1-24 24 24 24 0 0 1 24-24zm144 418a6 6 0 0 1-6 6H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h42v36a12 12 0 0 0 12 12h168a12 12 0 0 0 12-12v-36h42a6 6 0 0 1 6 6zm-99.2-106h-5a103.25 103.25 0 0 1-79.7 0h-5c-37.01 0-67.1 25.79-67.1 57.6v6.4a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-6.4c0-31.81-30.09-57.6-67.2-57.6zM192 336a64 64 0 1 0-64-64 64 64 0 0 0 64 64z\"]\n};\nvar faClock = {\n prefix: 'far',\n iconName: 'clock',\n icon: [512, 512, [], \"f017\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z\"]\n};\nvar faClone = {\n prefix: 'far',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M464 0H144c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h320c26.51 0 48-21.49 48-48v-48h48c26.51 0 48-21.49 48-48V48c0-26.51-21.49-48-48-48zM362 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h42v224c0 26.51 21.49 48 48 48h224v42a6 6 0 0 1-6 6zm96-96H150a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h308a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'far',\n iconName: 'closed-captioning',\n icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-211.1-85.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7zm190.4 0c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.9-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 220.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7z\"]\n};\nvar faCloud = {\n prefix: 'far',\n iconName: 'cloud',\n icon: [640, 512, [], \"f0c2\", \"M543.7 200.1C539.7 142.1 491.4 96 432 96c-7.6 0-15.1.8-22.4 2.3C377.7 58.3 328.1 32 272 32c-84.6 0-155.5 59.7-172.3 139.8C39.9 196.1 0 254.4 0 320c0 88.4 71.6 160 160 160h336c79.5 0 144-64.5 144-144 0-61.8-39.2-115.8-96.3-135.9zM496 432H160c-61.9 0-112-50.1-112-112 0-56.4 41.7-103.1 96-110.9V208c0-70.7 57.3-128 128-128 53.5 0 99.3 32.8 118.4 79.4 11.2-9.6 25.7-15.4 41.6-15.4 35.3 0 64 28.7 64 64 0 11.8-3.2 22.9-8.8 32.4 2.9-.3 5.9-.4 8.8-.4 53 0 96 43 96 96s-43 96-96 96z\"]\n};\nvar faCloudDownload = {\n prefix: 'far',\n iconName: 'cloud-download',\n icon: [640, 512, [], \"f0ed\", \"M543.7 200.1C539.7 142.1 491.4 96 432 96c-7.6 0-15.1.8-22.4 2.3C377.7 58.3 328.1 32 272 32c-84.6 0-155.5 59.7-172.3 139.8C39.9 196.1 0 254.4 0 320c0 88.4 71.6 160 160 160h336c79.5 0 144-64.5 144-144 0-61.8-39.2-115.8-96.3-135.9zM496 432H160c-61.9 0-112-50.1-112-112 0-56.4 41.7-103.1 96-110.9V208c0-70.7 57.3-128 128-128 53.5 0 99.3 32.8 118.4 79.4 11.2-9.6 25.7-15.4 41.6-15.4 35.3 0 64 28.7 64 64 0 11.8-3.2 22.9-8.8 32.4 2.9-.3 5.9-.4 8.8-.4 53 0 96 43 96 96s-43 96-96 96zM383.6 255.6c-4.7-4.7-12.4-4.7-17.1.1L312 311.5V172c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v139.5l-54.5-55.8c-4.7-4.8-12.3-4.8-17.1-.1l-16.9 16.9c-4.7 4.7-4.7 12.3 0 17l104 104c4.7 4.7 12.3 4.7 17 0l104-104c4.7-4.7 4.7-12.3 0-17l-16.9-16.9z\"]\n};\nvar faCloudDownloadAlt = {\n prefix: 'far',\n iconName: 'cloud-download-alt',\n icon: [640, 512, [], \"f381\", \"M543.7 200.1C539.7 142.1 491.4 96 432 96c-7.6 0-15.1.8-22.4 2.3C377.7 58.3 328.1 32 272 32c-84.6 0-155.5 59.7-172.3 139.8C39.9 196.1 0 254.4 0 320c0 88.4 71.6 160 160 160h336c79.5 0 144-64.5 144-144 0-61.8-39.2-115.8-96.3-135.9zM496 432H160c-61.9 0-112-50.1-112-112 0-56.4 41.7-103.1 96-110.9V208c0-70.7 57.3-128 128-128 53.5 0 99.3 32.8 118.4 79.4 11.2-9.6 25.7-15.4 41.6-15.4 35.3 0 64 28.7 64 64 0 11.8-3.2 22.9-8.8 32.4 2.9-.3 5.9-.4 8.8-.4 53 0 96 43 96 96s-43 96-96 96zM387 256h-67v-84c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84h-67c-10.7 0-16 12.9-8.5 20.5l99 99c4.7 4.7 12.3 4.7 17 0l99-99c7.6-7.6 2.2-20.5-8.5-20.5z\"]\n};\nvar faCloudDrizzle = {\n prefix: 'far',\n iconName: 'cloud-drizzle',\n icon: [512, 512, [], \"f738\", \"M48 360c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16s16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm96 80c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16s16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm96-80c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16s16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm96 80c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16s16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm96-80c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16s16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm-21.3-255.8C397.2 61.8 358 32 312 32c-13.5 0-26.8 2.6-39.2 7.7C250.3 14.5 218.4 0 184 0 120 0 67.6 50.3 64.2 113.4 25.6 130.4 0 168.5 0 212c0 59.5 48.4 108 108 108h296c59.6 0 108-48.5 108-108 0-57.3-44.9-104.3-101.3-107.8zM404 272H108c-33.1 0-60-26.9-60-60 0-28 19.1-52 46.4-58.3l20.8-4.8-2.8-24.9c-.2-1.3-.4-2.6-.4-4 0-39.7 32.3-72 72-72 25.2 0 48.2 13.1 61.4 35.1l13.3 22.1 21.1-14.9C289.4 83.6 300.5 80 312 80c28.6 0 52.4 21.7 55.3 50.4l2.2 21.6H404c33.1 0 60 26.9 60 60s-26.9 60-60 60z\"]\n};\nvar faCloudHail = {\n prefix: 'far',\n iconName: 'cloud-hail',\n icon: [512, 512, [], \"f739\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-192 96c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm128 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-64-96c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM64 448c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm64-96c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm282.7-247.8C397.2 61.8 358 32 312 32c-13.5 0-26.8 2.6-39.2 7.7C250.3 14.5 218.4 0 184 0 120 0 67.6 50.3 64.2 113.4 25.6 130.4 0 168.5 0 212c0 59.5 48.4 108 108 108h296c59.6 0 108-48.5 108-108 0-57.3-44.9-104.3-101.3-107.8zM404 272H108c-33.1 0-60-26.9-60-60 0-28 19.1-52 46.4-58.3l20.8-4.8-2.8-24.9c-.2-1.3-.4-2.6-.4-4 0-39.7 32.3-72 72-72 25.2 0 48.2 13.1 61.4 35.1l13.3 22.1 21.1-14.9C289.4 83.6 300.5 80 312 80c28.6 0 52.4 21.7 55.3 50.4l2.2 21.6H404c33.1 0 60 26.9 60 60s-26.9 60-60 60z\"]\n};\nvar faCloudHailMixed = {\n prefix: 'far',\n iconName: 'cloud-hail-mixed',\n icon: [512, 512, [], \"f73a\", \"M410.7 104.2C397.2 61.8 358 32 312 32c-13.5 0-26.8 2.6-39.2 7.7C250.3 14.5 218.4 0 184 0 120 0 67.6 50.3 64.2 113.4 25.6 130.4 0 168.5 0 212c0 59.5 48.4 108 108 108h296c59.6 0 108-48.5 108-108 0-57.3-44.9-104.3-101.3-107.8zM404 272H108c-33.1 0-60-26.9-60-60 0-28 19.1-52 46.4-58.3l20.8-4.8-2.8-24.9c-.2-1.3-.4-2.6-.4-4 0-39.7 32.3-72 72-72 25.2 0 48.2 13.1 61.4 35.1l13.3 22.1 21.1-14.9C289.4 83.6 300.5 80 312 80c28.6 0 52.4 21.7 55.3 50.4l2.2 21.6H404c33.1 0 60 26.9 60 60s-26.9 60-60 60zM87.2 369.7c-7.9-3.9-17.5-.8-21.5 7.2l-16 32c-3.9 7.9-.8 17.5 7.2 21.5 2.3 1.1 4.8 1.7 7.2 1.7 5.8 0 11.5-3.2 14.3-8.8l16-32c3.8-8.1.7-17.7-7.2-21.6zm384 0c-7.9-3.9-17.5-.8-21.5 7.2l-16 32c-3.9 7.9-.8 17.5 7.2 21.5 2.3 1.1 4.8 1.7 7.2 1.7 5.8 0 11.5-3.2 14.3-8.8l16-32c3.8-8.1.7-17.7-7.2-21.6zm-95.3.4c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96.7-.4c-7.9-3.9-17.5-.8-21.5 7.2l-16 32c-3.9 7.9-.8 17.5 7.2 21.5 2.3 1.1 4.8 1.7 7.2 1.7 5.8 0 11.5-3.2 14.3-8.8l16-32c3.8-8.1.7-17.7-7.2-21.6zm-95.3.4c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCloudMeatball = {\n prefix: 'far',\n iconName: 'cloud-meatball',\n icon: [576, 512, [], \"f73b\", \"M384.5 375.6l-16.7-8.7 5.7-18c6.1-19.2-7.5-35.9-25.3-35.9-6 0-8.5 1.2-27.1 7.1l-8.7-16.7c-10.8-20.7-38.1-20.6-48.8 0l-8.7 16.7c-17.7-5.6-20.8-7.1-27.1-7.1-17.8 0-31.4 16.7-25.3 35.9l5.7 18-16.7 8.7c-20.5 10.7-20.8 38 0 48.8l16.7 8.7-5.7 18c-6.3 19.9 8.6 36.4 26.1 36.4 3.7 0 12.5-3.2 26.3-7.6l8.7 16.7c10.8 20.7 38.1 20.6 48.8 0l8.7-16.7c13.9 4.4 22.6 7.6 26.3 7.6 17.6 0 32.4-16.4 26.1-36.4l-5.7-18 16.7-8.7c20.7-10.8 20.6-38.1 0-48.8zM576 256c0-59.2-41.5-110.1-97.6-123.8C468.9 75.4 419.4 32 360 32c-12.8 0-25.6 2.2-38 6.5C293.6 13.5 258 0 220 0 137.7 0 70.1 64.1 64.4 145 24.8 167.6 0 209.6 0 256c0 70.6 57.4 128 128 128h18.5c3.8-13.1 12-24.8 23.7-32.8-1-5.1-1.1-10.2-.8-15.2H128c-44.1 0-80-35.9-80-80 0-32.5 19.4-61.5 49.6-73.9l15.6-6.4-.8-16.9c-.1-1.4-.2-2.8-.4-2.8 0-59.5 48.4-108 108-108 30.1 0 58.2 12.4 79.1 35l12.3 13.3 16.2-8.2c49-24.9 103.5 12.6 104.4 62.5l-2.8 24.1 24.9 1.9c41.5 3.2 73.9 38 73.9 79.3 0 44.1-35.9 80-80 80h-41.4c.3 5 .2 10.1-.7 15.2 11.7 8 19.9 19.7 23.7 32.8H448c70.6.1 128-57.3 128-127.9zM64 416c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm448 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCloudMoon = {\n prefix: 'far',\n iconName: 'cloud-moon',\n icon: [640, 512, [], \"f6c3\", \"M390.8 296.4C383.3 246.4 340 208 288 208c-5.1 0-10.2.4-15.2 1.1C248.5 188 217.2 176 184 176c-64 0-118.3 45.2-132.4 105.3C19.6 305.1 0 343 0 384c0 70.6 57.4 128 128 128h204c64 0 116-52 116-116 0-41.8-22.8-79.3-57.2-99.6zM332 464H128c-44.2 0-80-35.8-80-80 0-32.8 19.8-61 48.1-73.3.7-48 39.7-86.7 87.9-86.7 31.2 0 58.4 16.3 74.1 40.8 8.7-5.5 18.9-8.8 29.9-8.8 30.9 0 56 25.1 56 56 0 5.9-1.2 11.5-2.9 16.9 33.2 4.5 58.9 32.6 58.9 67.1 0 37.6-30.5 68-68 68zm305.6-176.8c-4.1-8.6-12.4-13.9-21.8-13.9-1.5 0-3 .1-4.6.4-7.7 1.5-15.5 2.2-23.2 2.2-67 0-121.5-54.7-121.5-121.9 0-43.7 23.6-84.3 61.6-106 8.9-5.1 13.6-15 11.9-25.1-1.7-10.2-9.4-17.9-19.5-19.8-11.5-2-23.2-3.1-35-3.1-100.5 0-183.1 77.9-191 176.6 16.8.8 32.8 4.8 47.6 11.3 1.9-66.3 48.5-121.6 110.8-136.1-21.9 29.1-34.4 64.9-34.4 102.4 0 81.1 57 149.1 132.9 165.9-20.1 10.4-42.6 16-65.9 16-6.7 0-13.1-1.1-19.6-2 7.3 15.5 11.8 32.3 13.3 49.7 2.1.1 4.2.3 6.3.3 58.1 0 112.4-25.9 149-71.1 6-7.4 7.2-17.3 3.1-25.8z\"]\n};\nvar faCloudMoonRain = {\n prefix: 'far',\n iconName: 'cloud-moon-rain',\n icon: [640, 512, [], \"f73c\", \"M268.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm288 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-1.1-234.7c-12-36.8-46.7-63.4-87.4-63.4-3.1 0-6.1.2-9.1.5C245.3 104.7 219.2 96 192 96c-52.4 0-97.6 31.3-117.2 77.2C31.4 187.3 0 228 0 276c0 59.6 48.4 108 108 108h200c59.6 0 108-48.4 108-108 0-38.8-20.8-73.6-52.6-92.6zM308 336H108c-33.1 0-60-26.9-60-60s26.9-60 60-60c1.6 0 3.2.4 4.8.5 3.8-40.6 37.6-72.5 79.2-72.5 25.2 0 47.4 11.9 62.1 30.1 6.5-3.8 13.9-6.1 21.9-6.1 24.3 0 44 19.7 44 44 0 1.8-.3 3.4-.5 5.2 27.6 5.4 48.5 29.6 48.5 58.8 0 33.1-26.9 60-60 60zm329.8-99.3c-3.8-7.9-11.8-13-20.5-13h-1.5l-2.8.4c-6.1 1.2-12.3 1.8-18.4 1.8-53.2 0-96.5-43.4-96.5-96.8 0-34.7 18.8-67 49-84.2 8.4-4.8 12.8-14 11.2-23.6-1.6-9.5-8.8-16.8-18.3-18.6C530.3.9 520.5 0 510.7 0c-73.6 0-135.1 50.3-153.6 118.2 13.8 11.9 25 26.8 32.6 44.1.6.4 1 .9 1.6 1.3 0-1.2-.4-2.4-.4-3.6 0-58.9 42.6-108 98.6-118.1-19.9 24.2-31.3 54.9-31.3 87.1 0 67.4 48.8 123.5 112.9 134.8-18 10.5-38.7 16.2-60.2 16.2-23.4 0-45.1-7-63.6-18.7.5 4.9.9 9.8.9 14.7 0 10.1-1.3 19.8-3.3 29.3 20.2 9.2 42.4 14.7 66.1 14.7 48.4 0 93.6-21.6 124.2-59.2 5.3-6.9 6.4-16.1 2.6-24.1z\"]\n};\nvar faCloudMusic = {\n prefix: 'far',\n iconName: 'cloud-music',\n icon: [640, 512, [], \"f8ae\", \"M543.69 200.09A111.8 111.8 0 0 0 409.59 98.3a176 176 0 0 0-309.9 73.5A160 160 0 0 0 160 480h336a144 144 0 0 0 47.69-279.91zM496 432H160a112 112 0 0 1-16-222.91V208a128 128 0 0 1 246.41-48.59 64 64 0 0 1 96.78 81A81.06 81.06 0 0 1 496 240a96 96 0 0 1 0 192zM363.19 176.75l-128 47.25A16 16 0 0 0 224 239.25V338a69.27 69.27 0 0 0-16-2c-26.5 0-48 14.33-48 32s21.5 32 48 32 48-14.33 48-32v-84.84l96-37.52V306a69.27 69.27 0 0 0-16-2c-26.5 0-48 14.33-48 32s21.5 32 48 32 48-14.33 48-32V192a16 16 0 0 0-20.81-15.25z\"]\n};\nvar faCloudRain = {\n prefix: 'far',\n iconName: 'cloud-rain',\n icon: [512, 512, [], \"f73d\", \"M88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm2.7-270C397.2 61.8 358 32 312 32c-13.5 0-26.8 2.6-39.2 7.7C250.3 14.5 218.4 0 184 0 120 0 67.6 50.3 64.2 113.4 25.6 130.4 0 168.5 0 212c0 59.5 48.4 108 108 108h296c59.6 0 108-48.5 108-108 0-57.3-44.9-104.3-101.3-107.8zM404 272H108c-33.1 0-60-26.9-60-60 0-28 19.1-52 46.4-58.3l20.8-4.8-2.8-24.9c-.2-1.3-.4-2.6-.4-4 0-39.7 32.3-72 72-72 25.2 0 48.2 13.1 61.4 35.1l13.3 22.1 21.1-14.9C289.4 83.6 300.5 80 312 80c28.6 0 52.4 21.7 55.3 50.4l2.2 21.6H404c33.1 0 60 26.9 60 60s-26.9 60-60 60z\"]\n};\nvar faCloudRainbow = {\n prefix: 'far',\n iconName: 'cloud-rainbow',\n icon: [576, 512, [], \"f73e\", \"M560.6 48c8.6-.4 15.4-7.1 15.4-15.7V16.2c0-9-7.6-16.6-16.6-16.2-140.2 6-260.9 87.3-323.5 204.2C220 196.4 202.4 192 184 192c-64 0-116.4 50.3-119.8 113.4C25.6 322.4 0 360.5 0 404c0 59.5 48.4 108 108 108h296c59.6 0 108-48.5 108-108 0-38.5-20.4-71.9-50.8-91.1 23.7-30.7 59.1-52 99.7-56.2 8.4-.9 15.1-7.4 15.1-15.9v-16.1c0-9.2-7.7-16.9-16.8-16.1-61 5.3-113.8 39.2-145.5 87.9-1-.1-1.9-.4-3-.5-5.6-17.8-16-33.1-29.3-45.2 41.2-56 105.7-93.9 179.3-98.5 8.5-.5 15.3-7.2 15.3-15.8v-16c0-9.1-7.6-16.7-16.7-16.2-91.1 5.2-170.7 53-220.1 123.4-8.7-2.4-17.8-3.9-27.2-3.9-12 0-23.8 2.4-35 6.5C331.2 126.5 436.9 53.6 560.6 48zM312 272c28.6 0 52.4 21.7 55.3 50.4l2.2 21.6H404c33.1 0 60 26.9 60 60s-26.9 60-60 60H108c-33.1 0-60-26.9-60-60 0-28 19.1-52 46.4-58.3l20.8-4.8-2.8-24.9c-.2-1.3-.4-2.6-.4-4 0-39.7 32.3-72 72-72 25.2 0 48.2 13.1 61.4 35.1l13.3 22.1 21.1-14.9c9.6-6.7 20.7-10.3 32.2-10.3z\"]\n};\nvar faCloudShowers = {\n prefix: 'far',\n iconName: 'cloud-showers',\n icon: [512, 512, [], \"f73f\", \"M48 368c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16v-80c0-8.8-7.2-16-16-16zm96 32c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16v-80c0-8.8-7.2-16-16-16zm96-32c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16v-80c0-8.8-7.2-16-16-16zm96 32c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16v-80c0-8.8-7.2-16-16-16zm96-32c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16v-80c0-8.8-7.2-16-16-16zm-21.3-263.8C397.2 61.8 358 32 312 32c-13.5 0-26.8 2.6-39.2 7.7C250.3 14.5 218.4 0 184 0 120 0 67.6 50.3 64.2 113.4 25.6 130.4 0 168.5 0 212c0 59.5 48.4 108 108 108h296c59.6 0 108-48.5 108-108 0-57.3-44.9-104.3-101.3-107.8zM404 272H108c-33.1 0-60-26.9-60-60 0-28 19.1-52 46.4-58.3l20.8-4.8-2.8-24.9c-.2-1.3-.4-2.6-.4-4 0-39.7 32.3-72 72-72 25.2 0 48.2 13.1 61.4 35.1l13.3 22.1 21.1-14.9C289.4 83.6 300.5 80 312 80c28.6 0 52.4 21.7 55.3 50.4l2.2 21.6H404c33.1 0 60 26.9 60 60s-26.9 60-60 60z\"]\n};\nvar faCloudShowersHeavy = {\n prefix: 'far',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M87.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm226.8-265.9C397.2 61.8 358 32 312 32c-13.5 0-26.8 2.6-39.2 7.7C250.3 14.5 218.4 0 184 0 120 0 67.6 50.3 64.2 113.4 25.6 130.4 0 168.5 0 212c0 59.5 48.4 108 108 108h296c59.6 0 108-48.5 108-108 0-57.3-44.9-104.3-101.3-107.8zM404 272H108c-33.1 0-60-26.9-60-60 0-28 19.1-52 46.4-58.3l20.7-4.8-2.7-24.9c-.2-1.3-.4-2.6-.4-4 0-39.7 32.3-72 72-72 25.2 0 48.2 13.1 61.4 35.1l13.3 22.1 21.1-14.9C289.4 83.6 300.5 80 312 80c28.6 0 52.4 21.7 55.3 50.4l2.2 21.6H404c33.1 0 60 26.9 60 60s-26.9 60-60 60z\"]\n};\nvar faCloudSleet = {\n prefix: 'far',\n iconName: 'cloud-sleet',\n icon: [512, 512, [], \"f741\", \"M87.2 353.7c-7.9-3.9-17.5-.7-21.5 7.2l-64 128c-3.9 7.9-.8 17.5 7.2 21.5 2.3 1.1 4.8 1.7 7.2 1.7 5.8 0 11.5-3.2 14.3-8.8l64-128c3.8-8.1.7-17.7-7.2-21.6zm256 0c-7.9-3.9-17.5-.7-21.5 7.2l-64 128c-3.9 7.9-.8 17.5 7.2 21.5 2.3 1.1 4.8 1.7 7.2 1.7 5.8 0 11.5-3.2 14.3-8.8l64-128c3.8-8.1.7-17.7-7.2-21.6zm151.7 35.4l-8-13.9c-2.2-3.8-7.1-5.1-10.9-2.9l-28 16.1V360c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v28.4l-28-16.1c-3.8-2.2-8.7-.9-10.9 2.9l-8 13.9c-2.2 3.8-.9 8.7 2.9 10.9l27.9 16-27.9 16c-3.8 2.2-5.1 7.1-2.9 10.9l8 13.9c2.2 3.8 7.1 5.1 10.9 2.9l28-16.1V472c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-28.4l28 16.1c3.8 2.2 8.7.9 10.9-2.9l8-13.9c2.2-3.8.9-8.7-2.9-10.9l-27.9-16 27.9-16c3.8-2.2 5.1-7.1 2.9-10.9zm-256 0l-8-13.9c-2.2-3.8-7.1-5.1-10.9-2.9l-28 16.1V360c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v28.4l-28-16.1c-3.8-2.2-8.7-.9-10.9 2.9l-8 13.9c-2.2 3.8-.9 8.7 2.9 10.9l27.9 16-27.9 16c-3.8 2.2-5.1 7.1-2.9 10.9l8 13.9c2.2 3.8 7.1 5.1 10.9 2.9l28-16.1V472c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-28.4l28 16.1c3.8 2.2 8.7.9 10.9-2.9l8-13.9c2.2-3.8.9-8.7-2.9-10.9l-27.9-16 27.9-16c3.8-2.2 5.1-7.1 2.9-10.9zM512 212c0-57.3-44.9-104.3-101.3-107.8C397.2 61.8 358 32 312 32c-13.5 0-26.8 2.6-39.2 7.7C250.3 14.5 218.4 0 184 0 120 0 67.6 50.3 64.2 113.4 25.6 130.4 0 168.5 0 212c0 59.5 48.4 108 108 108h296c59.6 0 108-48.5 108-108zm-464 0c0-28 19.1-52 46.4-58.3l20.8-4.8-2.8-24.9c-.2-1.3-.4-2.6-.4-4 0-39.7 32.3-72 72-72 25.2 0 48.2 13.1 61.4 35.1l13.3 22.1 21.1-14.9C289.4 83.6 300.5 80 312 80c28.6 0 52.4 21.7 55.3 50.4l2.2 21.6H404c33.1 0 60 26.9 60 60s-26.9 60-60 60H108c-33.1 0-60-26.9-60-60z\"]\n};\nvar faCloudSnow = {\n prefix: 'far',\n iconName: 'cloud-snow',\n icon: [512, 512, [], \"f742\", \"M510.9 389.1l-8-13.9c-2.2-3.8-7.1-5.1-10.9-2.9l-28 16.1V360c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v28.4l-28-16.1c-3.8-2.2-8.7-.9-10.9 2.9l-8 13.9c-2.2 3.8-.9 8.7 2.9 10.9l27.9 16-27.9 16c-3.8 2.2-5.1 7.1-2.9 10.9l8 13.9c2.2 3.8 7.1 5.1 10.9 2.9l28-16.1V472c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-28.4l28 16.1c3.8 2.2 8.7.9 10.9-2.9l8-13.9c2.2-3.8.9-8.7-2.9-10.9l-27.9-16 27.9-16c3.8-2.2 5.1-7.1 2.9-10.9zm-384 0l-8-13.9c-2.2-3.8-7.1-5.1-10.9-2.9l-28 16.1V360c0-4.4-3.6-8-8-8H56c-4.4 0-8 3.6-8 8v28.4l-28-16.1c-3.8-2.2-8.7-.9-10.9 2.9l-8 13.9c-2.2 3.8-.9 8.7 2.9 10.9l27.9 16L4 432c-3.8 2.2-5.1 7.1-2.9 10.9l8 13.9c2.2 3.8 7.1 5.1 10.9 2.9l28-16.1V472c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-28.4l28 16.1c3.8 2.2 8.7.9 10.9-2.9l8-13.9c2.2-3.8.9-8.7-2.9-10.9l-27.9-16 27.9-16c3.8-2.2 5.1-7.1 2.9-10.9zm192 32l-8-13.9c-2.2-3.8-7.1-5.1-10.9-2.9l-28 16.1V392c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v28.4l-28-16.1c-3.8-2.2-8.7-.9-10.9 2.9l-8 13.9c-2.2 3.8-.9 8.7 2.9 10.9l27.9 16-27.9 16c-3.8 2.2-5.1 7.1-2.9 10.9l8 13.9c2.2 3.8 7.1 5.1 10.9 2.9l28-16.1V504c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-28.4l28 16.1c3.8 2.2 8.7.9 10.9-2.9l8-13.9c2.2-3.8.9-8.7-2.9-10.9l-27.9-16 27.9-16c3.8-2.2 5.1-7.1 2.9-10.9zM108 320h296c59.6 0 108-48.5 108-108 0-57.3-44.9-104.3-101.3-107.8C397.2 61.8 358 32 312 32c-13.5 0-26.8 2.6-39.2 7.7C250.3 14.5 218.4 0 184 0 120 0 67.6 50.3 64.2 113.4 25.6 130.4 0 168.5 0 212c0 59.5 48.4 108 108 108zM94.4 153.7l20.7-4.8-2.7-24.9c-.2-1.3-.4-2.6-.4-4 0-39.7 32.3-72 72-72 25.2 0 48.2 13.1 61.4 35.1l13.3 22.1 21.1-14.9C289.4 83.6 300.5 80 312 80c28.6 0 52.4 21.7 55.3 50.4l2.2 21.6H404c33.1 0 60 26.9 60 60s-26.9 60-60 60H108c-33.1 0-60-26.9-60-60 0-28 19.1-52 46.4-58.3z\"]\n};\nvar faCloudSun = {\n prefix: 'far',\n iconName: 'cloud-sun',\n icon: [640, 512, [], \"f6c4\", \"M582.8 296.4C575.3 246.4 532 208 480 208c-5.1 0-10.2.4-15.2 1.1C440.5 188 409.2 176 376 176c-64 0-118.3 45.2-132.4 105.3C211.6 305.1 192 343 192 384c0 70.6 57.4 128 128 128h204c64 0 116-52 116-116 0-41.8-22.8-79.3-57.2-99.6zM524 464H320c-44.2 0-80-35.8-80-80 0-32.8 19.8-61 48.1-73.3.7-48 39.7-86.7 87.9-86.7 31.2 0 58.4 16.3 74.1 40.8 8.7-5.5 18.9-8.8 29.9-8.8 30.9 0 56 25.1 56 56 0 5.9-1.2 11.5-2.9 16.9 33.2 4.5 58.9 32.6 58.9 67.1 0 37.6-30.4 68-68 68zM106.5 341.3l8.5-43.9 6-31.1-26.2-17.8-37-25.1 37-25.1 26.2-17.8-6-31.1-8.5-43.9 43.7 8.5 31.2 6 17.8-26.3L224 57v1l24.9 36.9 17.8 26.3 31.2-6 43.6-8.5-8.4 43.6c13.9-3.8 28.2-6.3 42.9-6.3 2.4 0 4.7.5 7 .6l9.1-47c2.2-11.6-1.4-23.5-9.7-31.8-6.7-6.7-15.6-10.4-25-10.4-2.2 0-4.5.2-6.8.6l-62 12-35.4-52.4C246.7 5.8 235.8 0 224 0c-11.4 0-22.7 4.9-29.3 14.7l-35.4 52.4-62-12c-2.3-.4-4.5-.7-6.8-.7-9.3 0-18.3 3.7-25 10.4-8.3 8.4-11.9 20.2-9.7 31.8l12 62.1-52.3 35.5C5.8 200.8 0 211.8 0 223.5c0 11.8 5.8 22.7 15.6 29.3l52.3 35.4-12 62.1c-2.2 11.6 1.4 23.5 9.7 31.8 6.7 6.7 15.6 10.4 25 10.4 2.2 0 4.5-.2 6.8-.6l62-12 .8 1.3c.3-18 3.8-35.6 9.9-52.2l-19.8 3.8-43.8 8.5zm109.2-79c-18-3.9-31.7-19.2-31.7-38.3 0-22.1 17.9-40 40-40 12 0 22.4 5.5 29.7 13.9 11-11.8 23.7-21.7 37.5-29.9-16.1-19.4-40.1-32-67.2-32-48.5 0-88 39.5-88 88 0 33.7 19.2 62.7 47.1 77.5 8.7-14.4 19.5-27.4 32.4-38.5.1-.3.2-.5.2-.7z\"]\n};\nvar faCloudSunRain = {\n prefix: 'far',\n iconName: 'cloud-sun-rain',\n icon: [640, 512, [], \"f743\", \"M588.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm286.9-234.7c-12-36.8-46.7-63.4-87.4-63.4-3.1 0-6.1.2-9.1.5C469.3 104.7 443.2 96 416 96c-52.4 0-97.6 31.3-117.2 77.2C255.4 187.3 224 228 224 276c0 59.6 48.4 108 108 108h200c59.6 0 108-48.4 108-108 0-38.8-20.8-73.6-52.6-92.6zM532 336H332c-33.1 0-60-26.9-60-60s26.9-60 60-60c1.6 0 3.2.4 4.8.5 3.8-40.6 37.6-72.5 79.2-72.5 25.2 0 47.4 11.9 62.1 30.1 6.5-3.8 13.9-6.1 21.9-6.1 24.3 0 44 19.7 44 44 0 1.8-.3 3.4-.5 5.2 27.6 5.4 48.5 29.6 48.5 58.8 0 33.1-26.9 60-60 60zm-339.1-72.3l-5.9 8.7-10.8 16-11.2-16.7-17.8-26.3-31.2 6-19.4 3.8 3.8-19.6 6-31.1-26.2-17.8-16.5-11.2 16.5-11.2 26.2-17.8-6-31.1-3.8-19.5 19.4 3.8 31.2 6L165 79.5l10.8-16L187 80.3l17.8 26.3 31.2-6 19.4-3.7-3.8 19.6-6 31.1 13.5 9.2c5.3-3.2 10.7-6.2 16.4-8.7 7-13 15.7-24.8 25.7-35.2l7-36.1c1.8-9.1-1.1-18.4-7.6-25-5.2-5.3-12.3-8.2-19.6-8.2-1.8 0-3.6.2-5.3.5L227 53.5l-28-41.3C193.9 4.6 185.2 0 176 0c-8.9 0-17.9 3.8-23 11.5l-27.8 41.2-48.7-9.4c-1.8-.3-3.6-.5-5.3-.5-7.3 0-14.3 2.9-19.6 8.2-6.5 6.6-9.4 15.9-7.6 25l9.4 48.8-41.1 27.9C4.6 157.8 0 166.4 0 175.6s4.6 17.9 12.2 23.1l41.1 27.8-9.4 48.8c-1.8 9.1 1.1 18.4 7.6 25 5.2 5.3 12.3 8.2 19.6 8.2 1.8 0 3.6-.2 5.3-.5l48.7-9.4 27.8 41.2c5.2 7.7 13.8 12.3 23 12.3 8.9 0 17.9-3.8 23-11.5l5.2-7.8c-7.8-17.4-12.3-36.5-12.3-56.7.2-4.3.7-8.3 1.1-12.4zM176 136c-22.1 0-40 17.9-40 40s17.9 40 40 40 40-17.9 40-40-17.9-40-40-40z\"]\n};\nvar faCloudUpload = {\n prefix: 'far',\n iconName: 'cloud-upload',\n icon: [640, 512, [], \"f0ee\", \"M543.7 200.1C539.7 142.1 491.4 96 432 96c-7.6 0-15.1.8-22.4 2.3C377.7 58.3 328.1 32 272 32c-84.6 0-155.5 59.7-172.3 139.8C39.9 196.1 0 254.4 0 320c0 88.4 71.6 160 160 160h336c79.5 0 144-64.5 144-144 0-61.8-39.2-115.8-96.3-135.9zM496 432H160c-61.9 0-112-50.1-112-112 0-56.4 41.7-103.1 96-110.9V208c0-70.7 57.3-128 128-128 53.5 0 99.3 32.8 118.4 79.4 11.2-9.6 25.7-15.4 41.6-15.4 35.3 0 64 28.7 64 64 0 11.8-3.2 22.9-8.8 32.4 2.9-.3 5.9-.4 8.8-.4 53 0 96 43 96 96s-43 96-96 96zM296.5 150.5c-4.7-4.7-12.3-4.7-17 0l-104 104c-4.7 4.7-4.7 12.3 0 17l16.9 16.9c4.7 4.7 12.4 4.7 17.1-.1l54.5-55.8V372c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12V232.5l54.5 55.8c4.7 4.8 12.3 4.8 17.1.1l16.9-16.9c4.7-4.7 4.7-12.3 0-17l-104-104z\"]\n};\nvar faCloudUploadAlt = {\n prefix: 'far',\n iconName: 'cloud-upload-alt',\n icon: [640, 512, [], \"f382\", \"M395.5 267.5l-99-99c-4.7-4.7-12.3-4.7-17 0l-99 99c-7.6 7.6-2.2 20.5 8.5 20.5h67v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-84h67c10.7 0 16.1-12.9 8.5-20.5zm148.2-67.4C539.7 142.1 491.4 96 432 96c-7.6 0-15.1.8-22.4 2.3C377.7 58.3 328.1 32 272 32c-84.6 0-155.5 59.7-172.3 139.8C39.9 196.1 0 254.4 0 320c0 88.4 71.6 160 160 160h336c79.5 0 144-64.5 144-144 0-61.8-39.2-115.8-96.3-135.9zM496 432H160c-61.9 0-112-50.1-112-112 0-56.4 41.7-103.1 96-110.9V208c0-70.7 57.3-128 128-128 53.5 0 99.3 32.8 118.4 79.4 11.2-9.6 25.7-15.4 41.6-15.4 35.3 0 64 28.7 64 64 0 11.8-3.2 22.9-8.8 32.4 2.9-.3 5.9-.4 8.8-.4 53 0 96 43 96 96s-43 96-96 96z\"]\n};\nvar faClouds = {\n prefix: 'far',\n iconName: 'clouds',\n icon: [640, 512, [], \"f744\", \"M538.7 296.2C525.2 253.8 486 224 440 224c-13.5 0-26.8 2.6-39.2 7.7-1.8-2.1-4.1-3.6-6-5.5 17-19 26.5-43.6 26.5-68.9 0-57.3-46.7-104-104-104-7 0-13.9.7-20.7 2.1C275.5 21.6 238 0 197.3 0c-51.2 0-96 33.9-111.3 81.6C37.2 90.1 0 132.8 0 184c0 57.3 46.7 104 104 104h90.8c-1.2 5.7-2.3 11.4-2.7 17.4-38.6 17-64.2 55.1-64.2 98.6 0 59.5 48.4 108 108 108h296c59.6 0 108-48.5 108-108 .1-57.3-44.8-104.3-101.2-107.8zM104 240c-30.9 0-56-25.1-56-56 0-30.4 24.4-55.3 54.7-56l23.4.8 3-21.3c4.8-33.9 34.2-59.5 68.2-59.5 29 0 54.3 17.7 64.6 45l9 24 23.3-10.6c7.5-3.4 15.2-5.1 23-5.1 30.9 0 56 25.1 56 56 0 15.8-6.7 30.5-18.8 41.4l-1.3 1.2c-13-4.8-26.8-7.9-41.3-7.9-39.1 0-73.8 18.9-95.7 48H104zm428 224H236c-33.1 0-60-26.9-60-60 0-28 19.1-52 46.4-58.3l20.8-4.8-2.8-24.9c-.2-1.3-.4-2.6-.4-4 0-39.7 32.3-72 72-72 25.2 0 48.2 13.1 61.4 35.1l13.3 22.1 21.1-14.9c9.6-6.8 20.7-10.3 32.2-10.3 28.6 0 52.4 21.7 55.3 50.4l2.2 21.6H532c33.1 0 60 26.9 60 60s-26.9 60-60 60z\"]\n};\nvar faCloudsMoon = {\n prefix: 'far',\n iconName: 'clouds-moon',\n icon: [640, 512, [], \"f745\", \"M382.8 273.9c-3.8-5.8-8.5-10.7-13.2-15.6 7.4-14.1 11.9-29.9 11.9-47 0-56.1-44.4-102-99.7-103.9-23.7-29.7-60-48.1-99-48.1-40.1 0-77.2 19-100.9 50.3C35.1 119.5 0 161.4 0 211.3c0 37 19.5 69.1 48.6 87.5C21.4 320.7 4.2 354.3 4.2 392c0 66.2 53.5 120 119.2 120h238.4c65.7 0 119.2-53.8 119.2-120 0-59-42.4-108.2-98.2-118.1zM47.7 211.3c0-30.9 24.9-56 55.6-56h6.7c12.3-28.2 40.2-48 72.8-48 34.2 0 63 21.8 74.3 52.2 6.5-2.7 13.6-4.2 21.1-4.2 30.7 0 55.6 25.1 55.6 56 0 7.4-1.8 14.2-4.4 20.7-12.3-4.7-25.2-8-39-8-9.6 0-19 1.2-28.1 3.6-20-12.7-43.3-19.6-67.2-19.6-43.5 0-82.8 22.4-105.8 57.2-24-6.3-41.6-27.9-41.6-53.9zM361.8 464H123.4c-39.5 0-71.5-32.2-71.5-72 0-37.6 28.7-68 65.1-71.3 7.1-36.8 39.3-64.7 77.9-64.7 23.7 0 44.8 10.7 59.4 27.3 10.2-7.1 22.6-11.3 36-11.3 30 0 54.9 20.9 61.6 49 3.3-.5 6.5-1 9.9-1 39.5 0 71.5 32.2 71.5 72 .1 39.8-32 72-71.5 72zm275.9-202c-3.9-8.2-12.1-13.4-21-13.4h-1.5l-2.9.4c-6.9 1.3-13.8 2-20.7 2-59.7 0-108.3-49.1-108.3-109.4 0-39.2 21-75.7 54.9-95.1 8.6-4.9 13.1-14.5 11.4-24.3-1.7-9.8-9-17.4-18.8-19.2-10.3-2-21.1-3-31.7-3-66.6 0-124.6 37.8-154 93.1 14.6 8.3 27.3 19.4 37.8 32.4 14.8-34.4 43.7-61.2 79.8-72.1-17.2 25.6-26.9 56.3-26.9 88.2 0 72.3 48.5 133.3 114.4 151.7-15.9 7-33.2 10.7-51 10.7-5.4 0-10.4-1.1-15.6-1.8 10.7 14.7 18.5 31.4 23.5 49.3 49.9-2.2 96.1-25.4 127.8-64.7 5.6-7.1 6.7-16.6 2.8-24.8z\"]\n};\nvar faCloudsSun = {\n prefix: 'far',\n iconName: 'clouds-sun',\n icon: [640, 512, [], \"f746\", \"M640 236.8c0-50.8-38.5-92.9-87.8-98.6C532 103.4 494.4 80 452 80c-46 0-85.9 26.4-104.5 66-31.7 13.8-54.4 43.6-58.6 79-22.3 12.7-40.7 31.8-52.1 55.3C191.4 297.6 160 341.1 160 392c0 66.2 53.8 120 120 120h240c66.2 0 120-53.8 120-120 0-32-12.8-60.8-33.3-82.3 20.1-18.1 33.3-43.7 33.3-72.9zM520 464H280c-39.8 0-72-32.2-72-72 0-37.6 28.9-68 65.5-71.3C280.7 283.9 313 256 352 256c23.9 0 45.1 10.7 59.8 27.3 10.3-7.1 22.8-11.3 36.2-11.3 30.2 0 55.3 20.9 62 49 3.3-.5 6.5-1 10-1 39.8 0 72 32.2 72 72s-32.2 72-72 72zm45.6-182.7c-7.8-3.2-15.9-6-24.5-7.5-20.3-30.5-54.7-49.8-93.1-49.8-9.6 0-19.2 1.2-28.3 3.6-20.2-12.7-43.6-19.6-67.7-19.6-2.2 0-4.2.4-6.4.5 8.8-12.9 22.8-21.9 39.4-22.6 4.9-32.7 32.9-57.8 67-57.8 35.8 0 64.8 27.8 67.5 62.9 6.5-3.1 13.6-5.3 21.3-5.3 28.3 0 51.2 22.9 51.2 51.2 0 19.1-10.7 35.7-26.4 44.4zM115 297.4l6-31.1-26.2-17.8-37-25.1 37-25.1 26.2-17.8-6-31.1-8.5-43.9 43.7 8.5 31.2 6 17.8-26.3L224 57v1l24.9 36.9 17.8 26.3 31.2-6 35.1-6.8c13.1-18 29.9-32.5 49.2-42.8-6.6-6.5-15.4-10.2-24.6-10.2-2.2 0-4.5.2-6.8.6l-62 12-35.4-52.4C246.7 5.8 235.8 0 224 0c-11.4 0-22.7 4.9-29.3 14.7l-35.4 52.4-62-12c-2.3-.4-4.5-.7-6.8-.7-9.3 0-18.3 3.7-25 10.4-8.3 8.4-11.9 20.2-9.7 31.8l12 62.1-52.3 35.5C5.8 200.8 0 211.8 0 223.5c0 11.8 5.8 22.7 15.6 29.3l52.3 35.4-12 62.1c-2.2 11.6 1.4 23.5 9.7 31.8 6.7 6.7 15.6 10.4 25 10.4 2.2 0 4.5-.2 6.8-.6l31.1-6c.7-17.9 4.4-35.1 10.8-51l-32.7 6.3 8.4-43.8zM224 184c15.5 0 28.7 9.1 35.3 22.1.3-.2.6-.4.8-.6 4.2-17.1 11.6-33.1 22-47.1-15.5-13.7-35.7-22.4-58.1-22.4-48.5 0-88 39.5-88 88 0 26.7 12.2 50.3 31 66.5 11.1-12.3 24.4-22.7 39.5-31C193.3 253 184 239.7 184 224c0-22.1 17.9-40 40-40z\"]\n};\nvar faClub = {\n prefix: 'far',\n iconName: 'club',\n icon: [512, 512, [], \"f327\", \"M256 48c60.3 0 101.3 60.9 79.6 116.5L321 201.9c-1.6 4 1.4 8.2 5.6 8.2.3 0 .5 0 .8-.1l39.8-5.3c3.9-.5 7.7-.8 11.5-.8 46.8 0 85.5 38.2 85.3 85.8-.2 47.3-39.4 85.1-86.6 85.1h-.8c-38.1-.3-48.9-6-78.4-36.2-1.2-1.3-2.7-1.8-4.2-1.8-3.1 0-6 2.4-6 6V360c0 37.7-2.3 48.8 24.7 82.9 6.8 8.5.7 21.1-10.2 21.1h-93.1c-10.9 0-16.9-12.6-10.2-21.1 27-34 24.7-45.2 24.7-82.9v-17.1c0-3.6-3-6-6-6-1.5 0-3 .6-4.2 1.8-29.2 29.9-40.1 35.8-78.3 36.2h-.8c-47.2 0-86.5-37.9-86.6-85.2-.1-47.5 38.6-85.6 85.3-85.6 3.8 0 7.6.2 11.5.8l39.8 5.3c.3 0 .5.1.8.1 4.1 0 7.1-4.2 5.6-8.2l-14.6-37.4C154.6 108.8 195.8 48 256 48m0-48c-22.4 0-44.5 5.6-63.9 16.2-18.3 10-34.3 24.6-46.2 42-11.9 17.4-19.6 37.6-22.3 58.4-1.7 13.2-1.4 26.6.9 39.7-14.8 1-29.3 4.4-43.1 10.3-15.9 6.8-30.2 16.4-42.4 28.7-25.2 25.3-39.1 58.8-39 94.5.2 73.4 60.5 133.1 134.6 133.1h1.2c6.9-.1 13.5-.3 19.9-.8-3.9 7.2-6.3 15.2-7.1 23.5-1 11 1 22.1 5.9 32 4.8 10 12.2 18.4 21.4 24.5 9.9 6.5 21.5 10 33.5 10h93.1c12 0 23.6-3.5 33.5-10 9.2-6.1 16.6-14.5 21.4-24.5 4.8-10 6.8-21 5.9-32-.7-8.3-3.2-16.2-7.1-23.5 6.4.5 13 .8 20 .8h1.2c73.9 0 134.3-59.6 134.6-132.9.1-35.7-13.7-69.3-38.9-94.6-12.3-12.3-26.5-22-42.5-28.7-13.8-5.9-28.3-9.3-43.1-10.3 2.3-13.1 2.6-26.5.9-39.7-2.7-20.8-10.4-41-22.3-58.4s-27.9-31.9-46.2-41.9C300.5 5.6 278.4 0 256 0z\"]\n};\nvar faCocktail = {\n prefix: 'far',\n iconName: 'cocktail',\n icon: [576, 512, [], \"f561\", \"M296 464h-64V346.78l176.74-176.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L184 346.78V464h-64c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM81.1 176h253.8L208 302.9 81.1 176zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z\"]\n};\nvar faCode = {\n prefix: 'far',\n iconName: 'code',\n icon: [576, 512, [], \"f121\", \"M234.8 511.7L196 500.4c-4.2-1.2-6.7-5.7-5.5-9.9L331.3 5.8c1.2-4.2 5.7-6.7 9.9-5.5L380 11.6c4.2 1.2 6.7 5.7 5.5 9.9L244.7 506.2c-1.2 4.3-5.6 6.7-9.9 5.5zm-83.2-121.1l27.2-29c3.1-3.3 2.8-8.5-.5-11.5L72.2 256l106.1-94.1c3.4-3 3.6-8.2.5-11.5l-27.2-29c-3-3.2-8.1-3.4-11.3-.4L2.5 250.2c-3.4 3.2-3.4 8.5 0 11.7L140.3 391c3.2 3 8.2 2.8 11.3-.4zm284.1.4l137.7-129.1c3.4-3.2 3.4-8.5 0-11.7L435.7 121c-3.2-3-8.3-2.9-11.3.4l-27.2 29c-3.1 3.3-2.8 8.5.5 11.5L503.8 256l-106.1 94.1c-3.4 3-3.6 8.2-.5 11.5l27.2 29c3.1 3.2 8.1 3.4 11.3.4z\"]\n};\nvar faCodeBranch = {\n prefix: 'far',\n iconName: 'code-branch',\n icon: [384, 512, [], \"f126\", \"M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.5 14-17.4 21.1-39.8 21.6-67.9 31.6-10.7 54.4-40.6 54.4-75.8zM80 48c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm0 416c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm224-288c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\"]\n};\nvar faCodeCommit = {\n prefix: 'far',\n iconName: 'code-commit',\n icon: [640, 512, [], \"f386\", \"M128 256c0 10.8.9 21.5 2.6 32H12c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h118.6c-1.7 10.5-2.6 21.2-2.6 32zm500-32H509.4c1.8 10.5 2.6 21.2 2.6 32s-.9 21.5-2.6 32H628c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12zm-308-80c-29.9 0-58 11.7-79.2 32.8C219.6 198 208 226.1 208 256s11.6 58 32.8 79.2C262 356.3 290.1 368 320 368s58-11.7 79.2-32.8C420.4 314 432 285.9 432 256s-11.6-58-32.8-79.2C378 155.7 349.9 144 320 144m0-48c88.4 0 160 71.6 160 160s-71.6 160-160 160-160-71.6-160-160S231.6 96 320 96z\"]\n};\nvar faCodeMerge = {\n prefix: 'far',\n iconName: 'code-merge',\n icon: [384, 512, [], \"f387\", \"M304 192c-38 0-69.8 26.5-77.9 62-23.9-3.5-58-12.9-83.9-37.6-16.6-15.9-27.9-36.5-33.7-61.6C138.6 143.3 160 114.1 160 80c0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-35.8-23.5-66.1-56-76.3V246.1c1.6 1.7 3.3 3.4 5 5 39.3 37.5 90.4 48.6 121.2 51.8 12.1 28.9 40.6 49.2 73.8 49.2 44.2 0 80-35.8 80-80S348.2 192 304 192zM80 48c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm0 416c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm224-160c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\"]\n};\nvar faCoffee = {\n prefix: 'far',\n iconName: 'coffee',\n icon: [640, 512, [], \"f0f4\", \"M512 32H112c-8.8 0-16 7.2-16 16v256c0 44.2 35.8 80 80 80h224c44.2 0 80-35.8 80-80v-16h32c70.6 0 128-57.4 128-128S582.6 32 512 32zm-80 272c0 17.6-14.4 32-32 32H176c-17.6 0-32-14.4-32-32V80h288v224zm80-64h-32V80h32c44.1 0 80 35.9 80 80s-35.9 80-80 80zm55.8 240H40.2c-37.3 0-50.2-48-32-48h591.7c18.1 0 5.2 48-32.1 48z\"]\n};\nvar faCoffeePot = {\n prefix: 'far',\n iconName: 'coffee-pot',\n icon: [512, 512, [], \"e002\", \"M428,175,480,32H88A88,88,0,0,0,0,120v88a16,16,0,0,0,16,16H32a16,16,0,0,0,16-16V120A40,40,0,0,1,88,80h25.46l34.73,95.53C96.92,215.22,64,276.16,64,344.62c0,51.47,18.62,84.77,49.64,117.71A57.18,57.18,0,0,0,155.17,480H420.84a57.08,57.08,0,0,0,41.45-17.6c31-32.95,49.69-66.24,49.71-117.72C512,276.86,480,215.07,428,175ZM411.47,80l-29.09,80H193.62L164.53,80ZM114.09,320c7.11-46.22,34.2-85.91,72.12-112H392.07c37.25,26.13,63,66.23,69.84,112Z\"]\n};\nvar faCoffeeTogo = {\n prefix: 'far',\n iconName: 'coffee-togo',\n icon: [448, 512, [], \"f6c5\", \"M432 96h-16l-24.71-74.12C386.94 8.81 374.71 0 360.94 0h-274C73.16 0 61.07 8.81 56.71 21.88L32 96H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h19.84l25.8 322.55C62.97 499.18 76.86 512 93.54 512h260.92c16.68 0 30.57-12.82 31.9-29.45L412.16 160H432c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM98.6 48h250.8l21.33 64H77.26L98.6 48zm9.71 416l-7.68-96h246.73l-7.68 96H108.31zm250.58-240H89.11l-5.12-64H364l-5.11 64z\"]\n};\nvar faCoffin = {\n prefix: 'far',\n iconName: 'coffin',\n icon: [384, 512, [], \"f6c6\", \"M374.44,115.19,266.7,9.37a32.89,32.89,0,0,0-23-9.37H140.32a32.89,32.89,0,0,0-23,9.37L9.54,115.19A31.61,31.61,0,0,0,1,145.58L88.08,487.76A32.47,32.47,0,0,0,119.69,512H264.31a32.48,32.48,0,0,0,31.61-24.24L383,145.58a31.65,31.65,0,0,0-8.59-30.39ZM252.43,464H131.55L49.81,142.91,146.45,48h91.08l96.64,94.91Z\"]\n};\nvar faCoffinCross = {\n prefix: 'far',\n iconName: 'coffin-cross',\n icon: [384, 512, [], \"e051\", \"M374.45 115.19L266.71 9.37c-6.11-6-14.4-9.37-23.04-9.37H140.33c-8.64 0-16.93 3.37-23.04 9.37L9.55 115.19C1.46 123.14-1.8 134.67.98 145.58l87.11 342.18C91.71 502.01 104.75 512 119.7 512h144.62c14.95 0 27.98-9.99 31.61-24.24l87.11-342.18c2.76-10.91-.49-22.44-8.59-30.39zM252.44 464H131.56L49.82 142.91 146.46 48h91.08l96.64 94.91L252.44 464zM216 112c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v128c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V208h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-48z\"]\n};\nvar faCog = {\n prefix: 'far',\n iconName: 'cog',\n icon: [512, 512, [], \"f013\", \"M452.515 237l31.843-18.382c9.426-5.441 13.996-16.542 11.177-27.054-11.404-42.531-33.842-80.547-64.058-110.797-7.68-7.688-19.575-9.246-28.985-3.811l-31.785 18.358a196.276 196.276 0 0 0-32.899-19.02V39.541a24.016 24.016 0 0 0-17.842-23.206c-41.761-11.107-86.117-11.121-127.93-.001-10.519 2.798-17.844 12.321-17.844 23.206v36.753a196.276 196.276 0 0 0-32.899 19.02l-31.785-18.358c-9.41-5.435-21.305-3.877-28.985 3.811-30.216 30.25-52.654 68.265-64.058 110.797-2.819 10.512 1.751 21.613 11.177 27.054L59.485 237a197.715 197.715 0 0 0 0 37.999l-31.843 18.382c-9.426 5.441-13.996 16.542-11.177 27.054 11.404 42.531 33.842 80.547 64.058 110.797 7.68 7.688 19.575 9.246 28.985 3.811l31.785-18.358a196.202 196.202 0 0 0 32.899 19.019v36.753a24.016 24.016 0 0 0 17.842 23.206c41.761 11.107 86.117 11.122 127.93.001 10.519-2.798 17.844-12.321 17.844-23.206v-36.753a196.34 196.34 0 0 0 32.899-19.019l31.785 18.358c9.41 5.435 21.305 3.877 28.985-3.811 30.216-30.25 52.654-68.266 64.058-110.797 2.819-10.512-1.751-21.613-11.177-27.054L452.515 275c1.22-12.65 1.22-25.35 0-38zm-52.679 63.019l43.819 25.289a200.138 200.138 0 0 1-33.849 58.528l-43.829-25.309c-31.984 27.397-36.659 30.077-76.168 44.029v50.599a200.917 200.917 0 0 1-67.618 0v-50.599c-39.504-13.95-44.196-16.642-76.168-44.029l-43.829 25.309a200.15 200.15 0 0 1-33.849-58.528l43.819-25.289c-7.63-41.299-7.634-46.719 0-88.038l-43.819-25.289c7.85-21.229 19.31-41.049 33.849-58.529l43.829 25.309c31.984-27.397 36.66-30.078 76.168-44.029V58.845a200.917 200.917 0 0 1 67.618 0v50.599c39.504 13.95 44.196 16.642 76.168 44.029l43.829-25.309a200.143 200.143 0 0 1 33.849 58.529l-43.819 25.289c7.631 41.3 7.634 46.718 0 88.037zM256 160c-52.935 0-96 43.065-96 96s43.065 96 96 96 96-43.065 96-96-43.065-96-96-96zm0 144c-26.468 0-48-21.532-48-48 0-26.467 21.532-48 48-48s48 21.533 48 48c0 26.468-21.532 48-48 48z\"]\n};\nvar faCogs = {\n prefix: 'far',\n iconName: 'cogs',\n icon: [640, 512, [], \"f085\", \"M217.1 478.1c-23.8 0-41.6-3.5-57.5-7.5-10.6-2.7-18.1-12.3-18.1-23.3v-31.7c-9.4-4.4-18.4-9.6-26.9-15.6l-26.7 15.4c-9.6 5.6-21.9 3.8-29.5-4.3-35.4-37.6-44.2-58.6-57.2-98.5-3.6-10.9 1.1-22.7 11-28.4l26.8-15c-.9-10.3-.9-20.7 0-31.1L12.2 223c-10-5.6-14.6-17.5-11-28.4 13.1-40 21.9-60.9 57.2-98.5 7.6-8.1 19.8-9.9 29.5-4.3l26.7 15.4c8.5-6 17.5-11.2 26.9-15.6V61.4c0-11.1 7.6-20.8 18.4-23.3 44.2-10.5 70-10.5 114.3 0 10.8 2.6 18.4 12.2 18.4 23.3v30.4c9.4 4.4 18.4 9.6 26.9 15.6L346.2 92c9.7-5.6 21.9-3.7 29.6 4.4 26.1 27.9 48.4 58.5 56.8 100.3 2 9.8-2.4 19.8-10.9 25.1l-26.6 16.5c.9 10.3.9 20.7 0 31.1l26.6 16.5c8.4 5.2 12.9 15.2 10.9 24.9-8.1 40.5-29.6 71.3-56.9 100.6-7.6 8.1-19.8 9.9-29.5 4.3l-26.7-15.4c-8.5 6-17.5 11.2-26.9 15.6v31.7c0 11-7.4 20.6-18.1 23.3-15.8 3.8-33.6 7.2-57.4 7.2zm-27.6-50.7c18.3 2.9 36.9 2.9 55.1 0v-44.8l16-5.7c15.2-5.4 29.1-13.4 41.3-23.9l12.9-11 38.8 22.4c11.7-14.4 21-30.5 27.6-47.7l-38.8-22.4 3.1-16.7c2.9-15.9 2.9-32 0-47.9l-3.1-16.7 38.8-22.4c-6.6-17.2-15.9-33.3-27.6-47.7l-38.8 22.4-12.9-11c-12.3-10.5-26.2-18.6-41.3-23.9l-16-5.7V80c-18.3-2.9-36.9-2.9-55.1 0v44.8l-16 5.7c-15.2 5.4-29.1 13.4-41.3 23.9l-12.9 11L80.5 143c-11.7 14.4-21 30.5-27.6 47.7l38.8 22.4-3.1 16.7c-2.9 15.9-2.9 32 0 47.9l3.1 16.7-38.8 22.4c6.6 17.2 15.9 33.4 27.6 47.7l38.8-22.4 12.9 11c12.3 10.5 26.2 18.6 41.3 23.9l16 5.7v44.7zm27.1-85.1c-22.6 0-45.2-8.6-62.4-25.8-34.4-34.4-34.4-90.4 0-124.8 34.4-34.4 90.4-34.4 124.8 0 34.4 34.4 34.4 90.4 0 124.8-17.3 17.2-39.9 25.8-62.4 25.8zm0-128.4c-10.3 0-20.6 3.9-28.5 11.8-15.7 15.7-15.7 41.2 0 56.9 15.7 15.7 41.2 15.7 56.9 0 15.7-15.7 15.7-41.2 0-56.9-7.8-7.9-18.1-11.8-28.4-11.8zM638.5 85c-1-5.8-6-10-11.9-10h-16.1c-3.5-9.9-8.8-19-15.5-26.8l8-13.9c2.9-5.1 1.8-11.6-2.7-15.3C591 11.3 580.5 5.1 569 .8c-5.5-2.1-11.8.1-14.7 5.3l-8 13.9c-10.2-1.9-20.7-1.9-30.9 0l-8-13.9c-3-5.1-9.2-7.3-14.7-5.3-11.5 4.3-22.1 10.5-31.4 18.2-4.5 3.7-5.7 10.2-2.7 15.3l8 13.9c-6.7 7.8-12 16.9-15.5 26.8H435c-5.9 0-11 4.3-11.9 10.2-2 12.2-1.9 24.5 0 36.2 1 5.8 6 10 11.9 10h16.1c3.5 9.9 8.8 19 15.5 26.8l-8 13.9c-2.9 5.1-1.8 11.6 2.7 15.3 9.3 7.7 19.9 13.9 31.4 18.2 5.5 2.1 11.8-.1 14.7-5.3l8-13.9c10.2 1.9 20.7 1.9 30.9 0l8 13.9c3 5.1 9.2 7.3 14.7 5.3 11.5-4.3 22.1-10.5 31.4-18.2 4.5-3.7 5.7-10.2 2.7-15.3l-8-13.9c6.7-7.8 12-16.9 15.5-26.8h16.1c5.9 0 11-4.3 11.9-10.2 1.9-12.2 1.9-24.4-.1-36.2zm-107.8 50.2c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm107.8 255.4c-1-5.8-6-10-11.9-10h-16.1c-3.5-9.9-8.8-19-15.5-26.8l8-13.9c2.9-5.1 1.8-11.6-2.7-15.3-9.3-7.7-19.9-13.9-31.4-18.2-5.5-2.1-11.8.1-14.7 5.3l-8 13.9c-10.2-1.9-20.7-1.9-30.9 0l-8-13.9c-3-5.1-9.2-7.3-14.7-5.3-11.5 4.3-22.1 10.5-31.4 18.2-4.5 3.7-5.7 10.2-2.7 15.3l8 13.9c-6.7 7.8-12 16.9-15.5 26.8h-16.1c-5.9 0-11 4.3-11.9 10.2-2 12.2-1.9 24.5 0 36.2 1 5.8 6 10 11.9 10H451c3.5 9.9 8.8 19 15.5 26.8l-8 13.9c-2.9 5.1-1.8 11.6 2.7 15.3 9.3 7.7 19.9 13.9 31.4 18.2 5.5 2.1 11.8-.1 14.7-5.3l8-13.9c10.2 1.9 20.7 1.9 30.9 0l8 13.9c3 5.1 9.2 7.3 14.7 5.3 11.5-4.3 22.1-10.5 31.4-18.2 4.5-3.7 5.7-10.2 2.7-15.3l-8-13.9c6.7-7.8 12-16.9 15.5-26.8h16.1c5.9 0 11-4.3 11.9-10.2 2-12.1 2-24.4 0-36.2zm-107.8 50.2c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCoin = {\n prefix: 'far',\n iconName: 'coin',\n icon: [512, 512, [], \"f85c\", \"M256 64C114.67 64 0 128.44 0 208v112c0 70.72 114.67 128 256 128s256-57.28 256-128V208c0-79.56-114.67-144-256-144zM88 363.37C62.42 349.16 48 333.2 48 320v-28.27a226 226 0 0 0 40 24.75zm96 30.88a348.83 348.83 0 0 1-64-16.32v-48.09a373.73 373.73 0 0 0 64 16.28zm112 4c-12.81 1.1-26.1 1.78-40 1.78s-27.19-.68-40-1.78v-48.18c13.07 1.16 26.36 1.93 40 1.93s26.93-.77 40-1.93zm96-20.29a348.83 348.83 0 0 1-64 16.32v-48.16a373.73 373.73 0 0 0 64-16.28zM464 320c0 13.2-14.42 29.16-40 43.37v-46.89a226 226 0 0 0 40-24.75zm-208-16c-119 0-208-50.68-208-96s89-96 208-96 208 50.68 208 96-88.95 96-208 96z\"]\n};\nvar faCoins = {\n prefix: 'far',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M320 0C214 0 128 35.8 128 80v52.6C53.5 143.6 0 173.2 0 208v224c0 44.2 86 80 192 80s192-35.8 192-80v-52.7c74.5-11 128-40.5 128-75.3V80c0-44.2-86-80-192-80zm16 428.3C326 440 275.6 464 192 464S58 440 48 428.3v-39.5c35.2 16.6 86.6 27.2 144 27.2s108.8-10.6 144-27.2v39.5zm0-96C326 344 275.6 368 192 368S58 344 48 332.3v-44.9c35.2 20 86.6 32.6 144 32.6s108.8-12.7 144-32.6v44.9zM192 272c-79.5 0-144-21.5-144-48s64.5-48 144-48 144 21.5 144 48-64.5 48-144 48zm272 28.3c-7.1 8.3-34.9 22.6-80 30.4V283c31-4.6 58.7-12.1 80-22.2v39.5zm0-96c-7.1 8.3-34.9 22.6-80 30.4V208c0-7.2-2.5-14.2-6.8-20.9 33.8-5.3 64-14.8 86.8-27.8v45zM320 144c-5 0-9.8-.3-14.7-.5-26-7.9-56.8-13.2-90.4-14.9C191 120 176 108.6 176 96c0-26.5 64.5-48 144-48s144 21.5 144 48-64.5 48-144 48z\"]\n};\nvar faColumns = {\n prefix: 'far',\n iconName: 'columns',\n icon: [512, 512, [], \"f0db\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM232 432H54a6 6 0 0 1-6-6V112h184v320zm226 0H280V112h184v314a6 6 0 0 1-6 6z\"]\n};\nvar faComet = {\n prefix: 'far',\n iconName: 'comet',\n icon: [512, 512, [], \"e003\", \"M308.422,263.93781l-61.1094-8.92187L219.961,199.48281a13.37629,13.37629,0,0,0-24.01563,0l-27.35353,55.53313-61.10939,8.92187a13.40072,13.40072,0,0,0-7.40625,22.86911l44.26173,43.166-10.4961,61.01164a13.38,13.38,0,0,0,19.416,14.11913l54.69533-28.81051,54.69533,28.81051a13.386,13.386,0,0,0,19.416-14.11913L271.631,329.97288l44.25392-43.166A13.4298,13.4298,0,0,0,308.422,263.93781ZM502.34978,9.75648a32.86732,32.86732,0,0,0-33.0879-8.29687c-28.4004,8.5-94.98245,29.18356-153.252,52.291a38.60717,38.60717,0,0,0-53.8965-20.29489c-42.21095,21.998-146.28325,79.17959-203.461,136.283-78.20315,78.19522-78.20315,205.36889,0,283.56411a200.55452,200.55452,0,0,0,283.53916,0c57.084-56.99407,114.38481-161.28105,136.38091-203.36889a38.52636,38.52636,0,0,0-20.40235-53.90033c23.1836-58.49407,43.8047-124.89438,52.30275-153.18731A32.66975,32.66975,0,0,0,502.34978,9.75648Zm-71.5801,227.97433c-23.90235,44.79291-73.98635,133.18929-122.47661,181.57594a152.39983,152.39983,0,0,1-215.64655,0c-59.39456-59.49406-59.39456-156.1873,0-215.68137,49.084-49.08783,141.754-101.08191,181.6524-122.3768,2.446,8.03684,4.29138,14.41977,10.998,37.38667l24.90236-10.68749c47.584-20.40427,107.3848-40.19917,146.28325-52.40032-12.2168,38.79292-31.9004,98.39636-52.3965,146.28107l-10.7168,24.90426C421.60232,235.09874,424.78362,236.06512,430.76968,237.73081Z\"]\n};\nvar faComment = {\n prefix: 'far',\n iconName: 'comment',\n icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faCommentAlt = {\n prefix: 'far',\n iconName: 'comment-alt',\n icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288z\"]\n};\nvar faCommentAltCheck = {\n prefix: 'far',\n iconName: 'comment-alt-check',\n icon: [512, 512, [], \"f4a2\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288zM332.7 130.4c-3.8-3.9-10.1-3.9-14-.1L231.4 217l-37.9-38.2c-3.8-3.9-10.1-3.9-14-.1l-23.4 23.2c-3.9 3.8-3.9 10.1-.1 14l68.1 68.6c3.8 3.9 10.1 3.9 14 .1l117.8-116.8c3.9-3.8 3.9-10.1.1-14l-23.3-23.4z\"]\n};\nvar faCommentAltDollar = {\n prefix: 'far',\n iconName: 'comment-alt-dollar',\n icon: [512, 512, [], \"f650\", \"M448 0H64C28.65 0 0 28.65 0 64v288c0 35.35 28.65 64 64 64h96v83.98c0 7.1 5.83 12.02 12.05 12.02 2.41 0 4.88-.74 7.08-2.37L304 416h144c35.35 0 64-28.65 64-64V64c0-35.35-28.65-64-64-64zm16 352c0 8.82-7.18 16-16 16H288l-12.8 9.6-67.2 50.39V368H64c-8.82 0-16-7.18-16-16V64c0-8.82 7.18-16 16-16h384c8.82 0 16 7.18 16 16v288zM286.41 191.72l-50.07-14.3a8.46 8.46 0 0 1-6.12-8.11c0-4.64 3.78-8.42 8.44-8.42h32.78c3.6 0 7.08.77 10.26 2.22 4.8 2.21 10.37 1.71 14.11-2.03l17.52-17.52c5.27-5.27 4.67-14.28-1.55-18.38-9.5-6.27-20.35-10.11-31.78-11.46V96c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v17.56c-30.29 3.62-53.37 30.98-49.32 63.05 2.9 22.95 20.66 41.31 42.91 47.67l50.07 14.3a8.46 8.46 0 0 1 6.12 8.11c0 4.64-3.78 8.42-8.44 8.42h-32.78c-3.6 0-7.08-.77-10.26-2.22-4.8-2.21-10.37-1.71-14.11 2.03l-17.52 17.52c-5.27 5.27-4.68 14.28 1.55 18.38 9.5 6.27 20.35 10.11 31.78 11.46V320c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-17.56c30.29-3.62 53.37-30.98 49.32-63.05-2.9-22.95-20.66-41.31-42.91-47.67z\"]\n};\nvar faCommentAltDots = {\n prefix: 'far',\n iconName: 'comment-alt-dots',\n icon: [512, 512, [], \"f4a3\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288zM128 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm128 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm128 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCommentAltEdit = {\n prefix: 'far',\n iconName: 'comment-alt-edit',\n icon: [512, 512, [], \"f4a4\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288zM164.9 243.2l-4.8 42.8c-.6 5.7 4.2 10.6 10 10l42.8-4.8 85.5-85.5-48-48-85.5 85.5zm159.3-133.9c-7-7-18.4-7-25.4 0l-28.3 28.3 48 48 28.3-28.3c7-7 7-18.4 0-25.4l-22.6-22.6z\"]\n};\nvar faCommentAltExclamation = {\n prefix: 'far',\n iconName: 'comment-alt-exclamation',\n icon: [512, 512, [], \"f4a5\", \"M256 256c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288zM284.7 96h-57.4c-10 0-17.6 9.1-15.7 18.9l18 96c1.4 7.6 8 13.1 15.7 13.1h21.4c7.7 0 14.3-5.5 15.7-13.1l18-96c1.9-9.8-5.7-18.9-15.7-18.9z\"]\n};\nvar faCommentAltLines = {\n prefix: 'far',\n iconName: 'comment-alt-lines',\n icon: [512, 512, [], \"f4a6\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288zm-96-216H144c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-96 96H144c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16z\"]\n};\nvar faCommentAltMedical = {\n prefix: 'far',\n iconName: 'comment-alt-medical',\n icon: [512, 512, [], \"f7f4\", \"M448 0H64A64 64 0 0 0 0 64v288a64 64 0 0 0 64 64h96v84a12 12 0 0 0 12.05 12 11.84 11.84 0 0 0 7.08-2.37L304 416h144a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm16 352a16 16 0 0 1-16 16H288l-12.79 9.6L208 428v-60H64a16 16 0 0 1-16-16V64a16 16 0 0 1 16-16h384a16 16 0 0 1 16 16zM344 176h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8z\"]\n};\nvar faCommentAltMinus = {\n prefix: 'far',\n iconName: 'comment-alt-minus',\n icon: [512, 512, [], \"f4a7\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288zM336 184H176c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h160c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16z\"]\n};\nvar faCommentAltMusic = {\n prefix: 'far',\n iconName: 'comment-alt-music',\n icon: [512, 512, [], \"f8af\", \"M331.19 96.75l-128 47.25A16 16 0 0 0 192 159.25V258a69.82 69.82 0 0 0-16-2c-26.5 0-48 14.33-48 32s21.5 32 48 32 48-14.33 48-32v-84.84l96-37.52V226a69.82 69.82 0 0 0-16-2c-26.5 0-48 14.33-48 32s21.5 32 48 32 48-14.33 48-32V112a16 16 0 0 0-20.81-15.25zM448 0H64A64.05 64.05 0 0 0 0 64v288a64.05 64.05 0 0 0 64 64h96v84a12 12 0 0 0 12 12 11.35 11.35 0 0 0 7.09-2.41L304 416h144a64.05 64.05 0 0 0 64-64V64a64.05 64.05 0 0 0-64-64zm16 352a16 16 0 0 1-16 16H288l-12.81 9.59L208 428v-60H64a16 16 0 0 1-16-16V64a16 16 0 0 1 16-16h384a16 16 0 0 1 16 16z\"]\n};\nvar faCommentAltPlus = {\n prefix: 'far',\n iconName: 'comment-alt-plus',\n icon: [512, 512, [], \"f4a8\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288zM336 184h-56v-56c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v56h-56c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h56v56c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-56h56c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16z\"]\n};\nvar faCommentAltSlash = {\n prefix: 'far',\n iconName: 'comment-alt-slash',\n icon: [640, 512, [], \"f4a9\", \"M634 471L36 3.5C29.1-2 19-.9 13.5 6l-10 12.5C-2 25.4-.9 35.5 6 41l58 45.3 41.6 32.5L604 508.5c6.9 5.5 17 4.4 22.5-2.5l10-12.5c5.5-6.9 4.4-17-2.5-22.5zM512 48c8.8 0 16 7.2 16 16v263.2l46.8 36.6c.7-3.8 1.2-7.8 1.2-11.8V64c0-35.3-28.7-64-64-64H128c-5.5 0-10.7.9-15.8 2.2L170.8 48H512zM339.2 377.6L272 428v-60H128c-8.8 0-16-7.2-16-16V184.8l-48-37.5V352c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L368 416h39.8l-58.6-45.8-10 7.4z\"]\n};\nvar faCommentAltSmile = {\n prefix: 'far',\n iconName: 'comment-alt-smile',\n icon: [512, 512, [], \"f4aa\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288zM325.8 240.2C308.5 260.4 283.1 272 256 272s-52.5-11.6-69.8-31.8c-8.6-10.1-23.8-11.3-33.8-2.7s-11.2 23.8-2.7 33.8c26.5 31 65.2 48.7 106.3 48.7s79.8-17.8 106.2-48.7c8.6-10.1 7.4-25.2-2.7-33.8-10-8.6-25.1-7.4-33.7 2.7zM192 192c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faCommentAltTimes = {\n prefix: 'far',\n iconName: 'comment-alt-times',\n icon: [512, 512, [], \"f4ab\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288zM329.5 145.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 174.1l-39.6-39.6c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6l39.6 39.6-39.6 39.6c-6.2 6.2-6.2 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l39.6-39.6 39.6 39.6c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L289.9 208l39.6-39.6c6.3-6.2 6.3-16.4 0-22.6z\"]\n};\nvar faCommentCheck = {\n prefix: 'far',\n iconName: 'comment-check',\n icon: [512, 512, [], \"f4ac\", \"M332.7 162.4c-3.8-3.9-10.1-3.9-14-.1L231.4 249l-37.9-38.2c-3.8-3.9-10.1-3.9-14-.1l-23.4 23.2c-3.9 3.8-3.9 10.1-.1 14l68.1 68.6c3.8 3.9 10.1 3.9 14 .1l117.8-116.8c3.9-3.8 3.9-10.1.1-14l-23.3-23.4zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faCommentDollar = {\n prefix: 'far',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 32C114.62 32 0 125.13 0 240c0 47.55 19.86 91.23 52.9 126.27C38 405.72 6.97 439.06 6.54 439.5c-6.56 6.95-8.38 17.19-4.59 25.98S14.39 480 23.98 480c61.51 0 110.02-25.72 139.15-46.33C191.95 442.8 223.2 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm0 368c-26.69 0-53.05-4.07-78.37-12.09l-22.74-7.21-19.48 13.78c-14.34 10.15-33.88 21.45-57.47 28.97 7.29-12.06 14.38-25.7 19.86-40.22l10.61-28.07-20.59-21.83C69.65 314.07 48 282.25 48 240c0-88.22 93.31-160 208-160s208 71.78 208 160-93.31 160-208 160zm30.41-176.28l-50.07-14.3a8.46 8.46 0 0 1-6.12-8.11c0-4.64 3.78-8.42 8.44-8.42h32.78c3.6 0 7.08.77 10.26 2.22 4.8 2.21 10.37 1.71 14.11-2.03l17.52-17.52c5.27-5.27 4.67-14.28-1.55-18.38-9.5-6.27-20.35-10.11-31.78-11.46V128c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v17.56c-30.29 3.62-53.37 30.98-49.32 63.05 2.9 22.95 20.66 41.31 42.91 47.67l50.07 14.3a8.46 8.46 0 0 1 6.12 8.11c0 4.64-3.78 8.42-8.44 8.42h-32.78c-3.6 0-7.08-.77-10.26-2.22-4.8-2.21-10.37-1.71-14.11 2.03l-17.52 17.52c-5.27 5.27-4.68 14.28 1.55 18.38 9.5 6.27 20.35 10.11 31.78 11.46V352c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-17.56c30.29-3.62 53.37-30.98 49.32-63.05-2.9-22.95-20.66-41.31-42.91-47.67z\"]\n};\nvar faCommentDots = {\n prefix: 'far',\n iconName: 'comment-dots',\n icon: [512, 512, [], \"f4ad\", \"M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faCommentEdit = {\n prefix: 'far',\n iconName: 'comment-edit',\n icon: [512, 512, [], \"f4ae\", \"M164.9 275.2l-4.8 42.8c-.6 5.7 4.2 10.6 10 10l42.8-4.8 85.5-85.5-48-48-85.5 85.5zm159.3-133.9c-7-7-18.4-7-25.4 0l-28.3 28.3 48 48 28.3-28.3c7-7 7-18.4 0-25.4l-22.6-22.6zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faCommentExclamation = {\n prefix: 'far',\n iconName: 'comment-exclamation',\n icon: [512, 512, [], \"f4af\", \"M256 288c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm28.7-160h-57.4c-10 0-17.6 9.1-15.7 18.9l18 96c1.4 7.6 8 13.1 15.7 13.1h21.4c7.7 0 14.3-5.5 15.7-13.1l18-96c1.9-9.8-5.7-18.9-15.7-18.9zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faCommentLines = {\n prefix: 'far',\n iconName: 'comment-lines',\n icon: [512, 512, [], \"f4b0\", \"M368 168H144c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-96 96H144c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faCommentMedical = {\n prefix: 'far',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M344 208h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8zM256 32C114.62 32 0 125.12 0 240c0 47.55 19.86 91.23 52.9 126.27C38 405.72 7 439.06 6.54 439.5A24 24 0 0 0 24 480c61.51 0 110-25.72 139.15-46.33A307.33 307.33 0 0 0 256 448c141.38 0 256-93.13 256-208S397.38 32 256 32zm0 368a259.17 259.17 0 0 1-78.37-12.09l-22.75-7.21-19.47 13.78a212 212 0 0 1-57.47 29 247.26 247.26 0 0 0 19.86-40.25l10.61-28.07-20.59-21.83C69.65 314.07 48 282.25 48 240c0-88.22 93.31-160 208-160s208 71.78 208 160-93.31 160-208 160z\"]\n};\nvar faCommentMinus = {\n prefix: 'far',\n iconName: 'comment-minus',\n icon: [512, 512, [], \"f4b1\", \"M336 216H176c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h160c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faCommentMusic = {\n prefix: 'far',\n iconName: 'comment-music',\n icon: [512, 512, [], \"f8b0\", \"M256 32C114.64 32 .07 125.09.07 240 .07 287.59 20 331.2 53 366.3c-14.91 39.4-45.9 72.79-46.4 73.2A24 24 0 0 0 24.06 480c61.49 0 110-25.7 139.08-46.3A308.73 308.73 0 0 0 256 448c141.39 0 256-93.09 256-208S397.42 32 256 32zm0 368a259.93 259.93 0 0 1-78.39-12.09L155 380.7l-19.5 13.8a215.27 215.27 0 0 1-57.5 29 252.11 252.11 0 0 0 19.91-40.2l10.59-28.1-20.63-21.79C69.74 314.09 48.06 282.2 48.06 240c0-88.2 93.3-160 208-160s208 71.8 208 160S370.71 400 256 400zm75.18-271.25L203.23 176A16 16 0 0 0 192 191.25V290a69.82 69.82 0 0 0-16-2c-26.49 0-48 14.33-48 32s21.5 32 48 32 48-14.33 48-32v-84.84l96-37.52V258a69.8 69.8 0 0 0-16-2c-26.5 0-48 14.33-48 32s21.5 32 48 32 48-14.33 48-32V144a16 16 0 0 0-20.79-15.25z\"]\n};\nvar faCommentPlus = {\n prefix: 'far',\n iconName: 'comment-plus',\n icon: [512, 512, [], \"f4b2\", \"M336 216h-56v-56c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v56h-56c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h56v56c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-56h56c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faCommentSlash = {\n prefix: 'far',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M320 80c114.7 0 208 71.8 208 160 0 25.3-7.9 49.1-21.5 70.4l37.9 29.6c20.1-29.6 31.6-63.7 31.6-100 0-114.9-114.6-208-256-208-48.2 0-93 11-131.5 29.8l43 33.6C258.4 85.6 288.3 80 320 80zm0 320c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C133.7 314.1 112 282.2 112 240c0-16.6 3.3-32.7 9.5-47.8L82.8 162c-12 24.1-18.8 50.4-18.8 78 0 47.6 19.9 91.2 52.9 126.3-14.9 39.4-45.9 72.8-46.4 73.2-6.6 7-8.4 17.2-4.6 26S78.4 480 88 480c61.5 0 110-25.7 139.1-46.3C256 442.8 287.2 448 320 448c37.5 0 73-6.7 105.1-18.5l-46.2-36.2c-18.7 4.3-38.5 6.7-58.9 6.7zm314 71L481.6 351.8l-6.8-5.3L36 3.5C29.1-2 19-.9 13.5 6l-10 12.5C-2 25.4-.9 35.5 6 41l598 467.5c6.9 5.5 17 4.4 22.5-2.5l10-12.5c5.5-6.9 4.4-17-2.5-22.5z\"]\n};\nvar faCommentSmile = {\n prefix: 'far',\n iconName: 'comment-smile',\n icon: [512, 512, [], \"f4b4\", \"M325.8 272.2C308.5 292.4 283.1 304 256 304s-52.5-11.6-69.8-31.8c-8.6-10.1-23.8-11.2-33.8-2.7-10.1 8.6-11.2 23.8-2.7 33.8 26.5 31 65.2 48.7 106.3 48.7s79.8-17.8 106.2-48.7c8.6-10.1 7.4-25.2-2.7-33.8-10-8.6-25.1-7.4-33.7 2.7zM192 224c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faCommentTimes = {\n prefix: 'far',\n iconName: 'comment-times',\n icon: [512, 512, [], \"f4b5\", \"M329.5 177.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 206.1l-39.6-39.6c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6l39.6 39.6-39.6 39.6c-6.2 6.2-6.2 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l39.6-39.6 39.6 39.6c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L289.9 240l39.6-39.6c6.3-6.2 6.3-16.4 0-22.6zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faComments = {\n prefix: 'far',\n iconName: 'comments',\n icon: [576, 512, [], \"f086\", \"M532 386.2c27.5-27.1 44-61.1 44-98.2 0-80-76.5-146.1-176.2-157.9C368.3 72.5 294.3 32 208 32 93.1 32 0 103.6 0 192c0 37 16.5 71 44 98.2-15.3 30.7-37.3 54.5-37.7 54.9-6.3 6.7-8.1 16.5-4.4 25 3.6 8.5 12 14 21.2 14 53.5 0 96.7-20.2 125.2-38.8 9.2 2.1 18.7 3.7 28.4 4.9C208.1 407.6 281.8 448 368 448c20.8 0 40.8-2.4 59.8-6.8C456.3 459.7 499.4 480 553 480c9.2 0 17.5-5.5 21.2-14 3.6-8.5 1.9-18.3-4.4-25-.4-.3-22.5-24.1-37.8-54.8zm-392.8-92.3L122.1 305c-14.1 9.1-28.5 16.3-43.1 21.4 2.7-4.7 5.4-9.7 8-14.8l15.5-31.1L77.7 256C64.2 242.6 48 220.7 48 192c0-60.7 73.3-112 160-112s160 51.3 160 112-73.3 112-160 112c-16.5 0-33-1.9-49-5.6l-19.8-4.5zM498.3 352l-24.7 24.4 15.5 31.1c2.6 5.1 5.3 10.1 8 14.8-14.6-5.1-29-12.3-43.1-21.4l-17.1-11.1-19.9 4.6c-16 3.7-32.5 5.6-49 5.6-54 0-102.2-20.1-131.3-49.7C338 339.5 416 272.9 416 192c0-3.4-.4-6.7-.7-10C479.7 196.5 528 238.8 528 288c0 28.7-16.2 50.6-29.7 64z\"]\n};\nvar faCommentsAlt = {\n prefix: 'far',\n iconName: 'comments-alt',\n icon: [576, 512, [], \"f4b6\", \"M512 160h-96V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64v160c0 35.3 28.7 64 64 64h32v52c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4l76.9-43.5V384c0 35.3 28.7 64 64 64h96l108.9 61.6c2.2 1.6 4.7 2.4 7.1 2.4 6.2 0 12-4.9 12-12v-52h32c35.3 0 64-28.7 64-64V224c0-35.3-28.7-64-64-64zM96 240H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v160c0 8.8-7.2 16-16 16H211.4l-11 6.2-56.4 31.9V240H96zm432 144c0 8.8-7.2 16-16 16h-80v38.1l-56.4-31.9-11-6.2H256c-8.8 0-16-7.2-16-16v-96h112c35.3 0 64-28.7 64-64v-16h96c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faCommentsAltDollar = {\n prefix: 'far',\n iconName: 'comments-alt-dollar',\n icon: [576, 512, [], \"f652\", \"M512 160h-96V64c0-35.35-28.65-64-64-64H64C28.65 0 0 28.65 0 64v208c0 35.35 28.65 64 64 64h32v51.98c0 7.1 5.83 12.02 12.05 12.02 2.41 0 4.87-.74 7.08-2.37L192 354.12V384c0 35.35 28.65 64 64 64h96l108.87 61.63c2.21 1.63 4.68 2.37 7.08 2.37 6.22 0 12.05-4.92 12.05-12.02V448h32c35.35 0 64-28.65 64-64V224c0-35.35-28.65-64-64-64zM200.35 294.23L144 326.13V288H64c-8.82 0-16-7.18-16-16V64c0-8.82 7.18-16 16-16h288c8.82 0 16 7.18 16 16v208c0 8.82-7.18 16-16 16H211.36l-11.01 6.23zM528 384c0 8.82-7.18 16-16 16h-80v38.13l-56.35-31.9-11-6.23H256c-8.82 0-16-7.18-16-16v-48h112c35.35 0 64-28.65 64-64v-64h96c8.82 0 16 7.18 16 16v160zM233.28 158.28l-42.19-11.44c-4.19-1.14-7.09-4.55-7.09-8.3 0-4.8 4.5-8.7 10.06-8.7h26.34c4.15 0 8.23 1.04 11.77 2.95 3.08 1.66 6.84 1.37 9.24-1.18l12.07-12.73c3.11-3.28 2.6-8.64-1.13-11.19-8.3-5.65-18.06-8.88-28.35-9.52V88c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v10.25c-22.18 1.1-40 18.57-40 40.3 0 18.17 12.62 34.28 30.72 39.17l42.19 11.44c4.19 1.14 7.09 4.55 7.09 8.3 0 4.8-4.5 8.7-10.06 8.7H195.6c-4.15 0-8.23-1.04-11.77-2.95-3.08-1.67-6.84-1.37-9.24 1.18l-12.07 12.73c-3.11 3.28-2.6 8.64 1.13 11.19 8.3 5.65 18.06 8.88 28.35 9.52V248c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-10.25c22.18-1.1 40-18.57 40-40.3 0-18.17-12.62-34.28-30.72-39.17z\"]\n};\nvar faCommentsDollar = {\n prefix: 'far',\n iconName: 'comments-dollar',\n icon: [576, 512, [], \"f653\", \"M532.01 386.17C559.48 359.05 576 325.04 576 288c0-80.02-76.45-146.13-176.18-157.94C368.35 72.46 294.32 32 208 32 93.12 32 0 103.64 0 192c0 37.04 16.52 71.05 43.99 98.17-15.3 30.74-37.34 54.53-37.7 54.89-6.31 6.69-8.05 16.53-4.42 24.99A23.085 23.085 0 0 0 23.06 384c53.54 0 96.67-20.24 125.17-38.78 9.21 2.12 18.69 3.74 28.37 4.89C208.11 407.58 281.8 448 368 448c20.79 0 40.83-2.41 59.77-6.78C456.27 459.76 499.4 480 552.94 480c9.22 0 17.55-5.5 21.18-13.96 3.64-8.46 1.89-18.3-4.42-24.99-.35-.36-22.39-24.14-37.69-54.88zm-372.99-87.72l-19.87-4.58-17.09 11.12c-14.07 9.15-28.46 16.29-43.1 21.41a258.5 258.5 0 0 0 8-14.84l15.49-31.12-24.74-24.42C64.16 242.63 48 220.66 48 192c0-60.71 73.27-112 160-112s160 51.29 160 112-73.27 112-160 112c-16.52 0-33-1.87-48.98-5.55zm339.27 53.56l-24.74 24.42 15.49 31.12c2.56 5.15 5.26 10.11 8 14.84-14.64-5.11-29.03-12.26-43.1-21.4l-17.09-11.12-19.87 4.58A218.576 218.576 0 0 1 368 400c-53.96 0-102.22-20.06-131.3-49.7C337.96 339.53 416 272.86 416 192c0-3.37-.39-6.66-.65-9.97C479.7 196.49 528 238.85 528 288c0 28.66-16.16 50.63-29.71 64.01zM233.28 182.28l-42.19-11.44c-4.19-1.14-7.09-4.55-7.09-8.3 0-4.8 4.5-8.7 10.06-8.7h26.34c4.15 0 8.23 1.04 11.77 2.95 3.08 1.66 6.84 1.37 9.24-1.18l12.07-12.73c3.11-3.28 2.6-8.64-1.13-11.19-8.3-5.65-18.06-8.88-28.35-9.52V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v10.25c-22.18 1.1-40 18.57-40 40.3 0 18.17 12.62 34.28 30.72 39.17l42.19 11.44c4.19 1.14 7.09 4.55 7.09 8.3 0 4.8-4.5 8.7-10.06 8.7H195.6c-4.15 0-8.23-1.04-11.77-2.95-3.08-1.67-6.84-1.37-9.24 1.18l-12.07 12.73c-3.11 3.28-2.6 8.64 1.13 11.19 8.3 5.65 18.06 8.88 28.35 9.52V272c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-10.25c22.18-1.1 40-18.57 40-40.3 0-18.17-12.62-34.28-30.72-39.17z\"]\n};\nvar faCompactDisc = {\n prefix: 'far',\n iconName: 'compact-disc',\n icon: [496, 512, [], \"f51f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-360c-88.2 0-160 71.8-160 160h32c0-70.6 57.4-128 128-128V96zm0 72c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 120c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCompass = {\n prefix: 'far',\n iconName: 'compass',\n icon: [496, 512, [], \"f14e\", \"M347.94 129.86L203.6 195.83a31.938 31.938 0 0 0-15.77 15.77l-65.97 144.34c-7.61 16.65 9.54 33.81 26.2 26.2l144.34-65.97a31.938 31.938 0 0 0 15.77-15.77l65.97-144.34c7.61-16.66-9.54-33.81-26.2-26.2zm-77.36 148.72c-12.47 12.47-32.69 12.47-45.16 0-12.47-12.47-12.47-32.69 0-45.16 12.47-12.47 32.69-12.47 45.16 0 12.47 12.47 12.47 32.69 0 45.16zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\"]\n};\nvar faCompassSlash = {\n prefix: 'far',\n iconName: 'compass-slash',\n icon: [640, 512, [], \"f5e9\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM320 56c110.28 0 200 89.72 200 200 0 20.23-3.07 39.75-8.69 58.18l39.84 31.15C561.88 317.58 568 287.53 568 256 568 119.03 456.97 8 320 8c-53.08 0-102.15 16.82-142.49 45.21l40.06 31.32C247.58 66.54 282.54 56 320 56zm99.94 73.86l-91.12 41.65 81.23 63.51 36.09-78.96c7.61-16.66-9.54-33.81-26.2-26.2zM220.06 382.14l91.13-41.65-81.23-63.51-36.09 78.96c-7.62 16.65 9.53 33.81 26.19 26.2zM320 456c-110.28 0-200-89.72-200-200 0-20.24 3.08-39.76 8.69-58.18l-39.84-31.15C78.12 194.42 72 224.47 72 256c0 136.97 111.03 248 248 248 53.08 0 102.15-16.82 142.49-45.22l-40.06-31.32C392.42 445.46 357.46 456 320 456z\"]\n};\nvar faCompress = {\n prefix: 'far',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v100h100c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v100H12c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h100v100c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12zm176 0V368h100c6.6 0 12-5.4 12-12v-24c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12z\"]\n};\nvar faCompressAlt = {\n prefix: 'far',\n iconName: 'compress-alt',\n icon: [448, 512, [], \"f422\", \"M224 232v-95.005c0-21.382 25.851-32.09 40.971-16.971l27.704 27.704L404.888 35.515c4.686-4.686 12.284-4.686 16.971 0l22.627 22.627c4.686 4.686 4.686 12.284 0 16.971L332.272 187.326l27.704 27.704c15.119 15.119 4.411 40.97-16.971 40.97H248c-13.255 0-24-10.745-24-24zM43.112 476.485l112.213-112.213 27.704 27.704c15.12 15.119 40.971 4.411 40.971-16.971V280c0-13.255-10.745-24-24-24h-95.005c-21.382 0-32.09 25.851-16.971 40.971l27.704 27.704L3.515 436.888c-4.686 4.686-4.686 12.284 0 16.971l22.627 22.627c4.686 4.686 12.284 4.686 16.97-.001z\"]\n};\nvar faCompressArrowsAlt = {\n prefix: 'far',\n iconName: 'compress-arrows-alt',\n icon: [512, 512, [], \"f78c\", \"M300 224h136c10.7 0 16-12.9 8.4-20.5l-50.9-51L507.3 38.6c6.2-6.2 6.2-16.4 0-22.6L496 4.7c-6.2-6.2-16.4-6.2-22.6 0L359.5 118.6l-51-51C300.9 60 288 65.3 288 76v136c0 6.6 5.4 12 12 12zm93.4 135.5l51-51c7.5-7.6 2.2-20.5-8.5-20.5H300c-6.6 0-12 5.4-12 12v136c0 10.7 12.9 16 20.5 8.4l51-50.9 113.9 113.9c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-113.9-114zM212 288H76c-10.7 0-16 12.9-8.4 20.5l50.9 51L4.7 473.4c-6.2 6.2-6.2 16.4 0 22.6L16 507.3c6.2 6.2 16.4 6.2 22.6 0l113.9-113.9 51 51c7.6 7.5 20.5 2.2 20.5-8.5V300c0-6.6-5.4-12-12-12zm-93.4-135.5l-51 51C60 211.1 65.3 224 76 224h136c6.6 0 12-5.4 12-12V76c0-10.7-12.9-16-20.5-8.4l-51 50.9L38.6 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 16c-6.2 6.2-6.2 16.4 0 22.6l113.9 113.9z\"]\n};\nvar faCompressWide = {\n prefix: 'far',\n iconName: 'compress-wide',\n icon: [512, 512, [], \"f326\", \"M500 224H376c-13.3 0-24-10.7-24-24V76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v100h100c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12zm-340-24V76c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v100H12c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 236V312c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h100v100c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12zm240 0V336h100c6.6 0 12-5.4 12-12v-24c0-6.6-5.4-12-12-12H376c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12z\"]\n};\nvar faComputerClassic = {\n prefix: 'far',\n iconName: 'computer-classic',\n icon: [448, 512, [], \"f8b1\", \"M360 304H216a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h144a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8zM96 340a20 20 0 1 0-20-20 20 20 0 0 0 20 20zm16-84h224a32 32 0 0 0 32-32V112a32 32 0 0 0-32-32H112a32 32 0 0 0-32 32v112a32 32 0 0 0 32 32zM416 0H32A32 32 0 0 0 0 32v352a32 32 0 0 0 32 32v64a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32v-64a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zm-48 464H80v-48h288zm32-96H48V48h352z\"]\n};\nvar faComputerSpeaker = {\n prefix: 'far',\n iconName: 'computer-speaker',\n icon: [640, 512, [], \"f8b2\", \"M592 32H368a48 48 0 0 0-48 48v352a48 48 0 0 0 48 48h224a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm0 400H368V80h224zm-480 0a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h192.41A79.24 79.24 0 0 1 288 432zM0 80v256a48 48 0 0 0 48 48h240v-48H48V80h240a79.24 79.24 0 0 1 16.41-48H48A48 48 0 0 0 0 80zm480 112a32 32 0 1 0-32-32 32 32 0 0 0 32 32zm0 208a80 80 0 1 0-80-80 80 80 0 0 0 80 80zm0-112a32 32 0 1 1-32 32 32 32 0 0 1 32-32z\"]\n};\nvar faConciergeBell = {\n prefix: 'far',\n iconName: 'concierge-bell',\n icon: [512, 512, [], \"f562\", \"M496 400h-16v-48c0-112.82-83.49-205.89-192-221.46V112h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h48v18.54C115.49 146.11 32 239.18 32 352v48H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-64 0H80v-48c0-97.05 78.95-176 176-176s176 78.95 176 176v48z\"]\n};\nvar faConstruction = {\n prefix: 'far',\n iconName: 'construction',\n icon: [640, 512, [], \"f85d\", \"M324 216a28 28 0 1 0-28-28 28 28 0 0 0 28 28zm-18.62 140.36l-83-53.67-29.8 109.11a16 16 0 0 0 11.22 19.64 15.8 15.8 0 0 0 4.2.56 16 16 0 0 0 15.43-11.8l18.25-66.89L288 383.23V416a16 16 0 0 0 32 0v-32.77a31.92 31.92 0 0 0-14.62-26.87zm135-9.26l-14 20.86L358.31 326l-10.53-52.75c-3.75-18.61-18.13-33.3-35.56-37.12l-24.59-7.3a48 48 0 0 0-48.78 18l-11.62 15.48a16 16 0 0 0 4.41 23.23l103.92 64 .09.07 70.67 43.48H385a19.13 19.13 0 0 0-18.21 12.51l-9.2 26.4h163.89l-54.32-84.64a16 16 0 0 0-26.75-.26zm190.67 80.78L367.37 25.3a57 57 0 0 0-94.71 0L8.89 427.89a52.87 52.87 0 0 0-2.31 54.88A56.23 56.23 0 0 0 56.29 512h527.45a56.23 56.23 0 0 0 49.71-29.27 52.82 52.82 0 0 0-2.37-54.85zm-39.84 32c-.66 1.24-2.72 4.08-7.5 4.08H56.29c-4.78 0-6.84-2.84-7.5-4.06a5.25 5.25 0 0 1 .25-5.75l263.77-402.6a9.06 9.06 0 0 1 14.41 0L591 454.19a5.27 5.27 0 0 1 .24 5.73z\"]\n};\nvar faContainerStorage = {\n prefix: 'far',\n iconName: 'container-storage',\n icon: [640, 512, [], \"f4b7\", \"M640 64V48c0-8.8-7.2-16-16-16H16C7.2 32 0 39.2 0 48v16c0 8.8 7.2 16 16 16v352c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16V80c8.8 0 16-7.2 16-16zm-64 368H64V80h512v352zm-440-48h32c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8h-32c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8zm224 0h32c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8h-32c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8zm112 0h32c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8h-32c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8zm-224 0h32c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8h-32c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8z\"]\n};\nvar faConveyorBelt = {\n prefix: 'far',\n iconName: 'conveyor-belt',\n icon: [640, 512, [], \"f46e\", \"M544 320H96c-53 0-96 43-96 96s43 96 96 96h448c53 0 96-43 96-96s-43-96-96-96zm0 144H96c-26.5 0-48-21.5-48-48s21.5-48 48-48h448c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-416-80c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm384 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-176-96h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm32-240h80v112l64-32 64 32V48h80v192H176V48z\"]\n};\nvar faConveyorBeltAlt = {\n prefix: 'far',\n iconName: 'conveyor-belt-alt',\n icon: [640, 512, [], \"f46f\", \"M544 320H96c-53 0-96 43-96 96s43 96 96 96h448c53 0 96-43 96-96s-43-96-96-96zm0 144H96c-26.5 0-48-21.5-48-48s21.5-48 48-48h448c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-416-80c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm384 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-208-96h416c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H384V16c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm272-176h112v128H384V112zM144 48h192v192H144V48z\"]\n};\nvar faCookie = {\n prefix: 'far',\n iconName: 'cookie',\n icon: [512, 512, [], \"f563\", \"M352 320c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-32-160c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-128 32c0-17.67-14.33-32-32-32s-32 14.33-32 32 14.33 32 32 32 32-14.33 32-32zm0 128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm222.37 30.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15A131.26 131.26 0 0 0 236.34 0c-20.72 0-41.25 4.88-59.89 14.38l-69.12 35.21a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.87A132.602 132.602 0 0 0 1.62 257.2l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c6.86 1.09 13.75 1.62 20.63 1.62 20.72 0 41.25-4.88 59.88-14.38l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87a132.56 132.56 0 0 0 12.82-80.93zm-55.59 59.15l-35.1 68.88c-8.13 15.97-20.86 28.7-36.81 36.82l-69.12 35.21C302 460.83 288.83 464 275.66 464a84.8 84.8 0 0 1-13.12-1.03l-76.69-12.14c-17.63-2.79-33.64-10.95-46.28-23.59l-54.76-54.76c-12.69-12.68-20.88-28.77-23.69-46.51L49.04 249.7c-2.81-17.76.01-35.62 8.18-51.64l35.1-68.88c8.13-15.97 20.86-28.7 36.81-36.82l69.12-35.21C210 51.17 223.17 48 236.35 48c4.38 0 8.79.35 13.12 1.03l76.7 12.15c17.63 2.79 33.63 10.95 46.27 23.59l54.76 54.75c12.69 12.69 20.88 28.77 23.69 46.52l12.08 76.26c2.8 17.76-.02 35.62-8.19 51.64z\"]\n};\nvar faCookieBite = {\n prefix: 'far',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M352 320c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zM192 192c0-17.67-14.33-32-32-32s-32 14.33-32 32 14.33 32 32 32 32-14.33 32-32zm0 128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm222.52 31.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45C249.57.5 242.9 0 236.26 0c-20.68 0-41.18 4.85-59.79 14.33l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.28a132.555 132.555 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.14c6.86 1.09 13.76 1.62 20.64 1.62 20.72 0 41.25-4.88 59.89-14.38l69.13-35.22a132.221 132.221 0 0 0 57.79-57.81l35.1-68.88c12.56-24.63 17.01-52.57 12.91-79.9zm-55.68 58.1l-35.1 68.88c-8.14 15.97-20.87 28.7-36.81 36.83l-69.13 35.22c-11.74 5.98-24.92 9.15-38.1 9.15-4.38 0-8.8-.35-13.13-1.03l-76.71-12.14c-17.64-2.79-33.64-10.95-46.28-23.59l-54.77-54.76c-12.69-12.69-20.88-28.77-23.69-46.52l-12.08-76.27c-2.81-17.77.01-35.62 8.18-51.64l35.1-68.88c8.14-15.97 20.87-28.71 36.81-36.83l69.13-35.22c5.52-2.81 11.36-5 17.38-6.52 17.83 58.88 65.85 104.96 125.69 120.09 15.12 59.85 61.22 107.87 120.11 125.69a83.485 83.485 0 0 1-6.6 17.54z\"]\n};\nvar faCopy = {\n prefix: 'far',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"]\n};\nvar faCopyright = {\n prefix: 'far',\n iconName: 'copyright',\n icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm107.351-101.064c-9.614 9.712-45.53 41.396-104.065 41.396-82.43 0-140.484-61.425-140.484-141.567 0-79.152 60.275-139.401 139.762-139.401 55.531 0 88.738 26.62 97.593 34.779a11.965 11.965 0 0 1 1.936 15.322l-18.155 28.113c-3.841 5.95-11.966 7.282-17.499 2.921-8.595-6.776-31.814-22.538-61.708-22.538-48.303 0-77.916 35.33-77.916 80.082 0 41.589 26.888 83.692 78.277 83.692 32.657 0 56.843-19.039 65.726-27.225 5.27-4.857 13.596-4.039 17.82 1.738l19.865 27.17a11.947 11.947 0 0 1-1.152 15.518z\"]\n};\nvar faCorn = {\n prefix: 'far',\n iconName: 'corn',\n icon: [512, 512, [], \"f6c7\", \"M441.79.32c-2.07-.2-4.57-.32-7.04-.32-12.1 0-23.73 2.82-34.13 8.01-3.53-.5-7.11-.75-10.72-.75-7.27 0-14.52 1.05-21.53 3.12a76.524 76.524 0 0 0-25.45 12.79c-9.17.42-18.11 2.45-26.63 6.07-8.9 4.01-16.77 9.4-23.38 15.86a76.438 76.438 0 0 0-26.06 9.58c-7.6 4.3-14.32 9.96-19.91 16.61-8.69 2.35-16.93 6.25-24.4 11.58-5.01 3.53-8.85 8.24-12.81 12.8-4.79-5.68-9.5-11.39-14.94-16.82L152.63 36.7c-9.01-9.01-24.43-4.34-26.93 8.15L98.51 180.72l-61.48 61.46c-47.25 47.23-49.15 122.14-6.51 171.46l60.7 61.97c27.39 27.38 65.59 40.41 105.41 35.3 29.25-3.75 55.89-18.9 76.75-39.75l57.83-57.81 135.93-27.18c12.5-2.5 17.17-17.91 8.15-26.92l-42.16-42.15c-5.32-5.32-10.89-10.28-16.62-14.96 3.61-3.4 7.61-6.35 10.55-10.46 5.29-7.4 9.13-15.55 11.49-24.04a76.011 76.011 0 0 0 17.39-20.81c4.6-7.74 7.69-16.19 9.24-24.91a76.238 76.238 0 0 0 15.55-22.55c3.97-8.82 6.19-18.12 6.68-27.45a77.528 77.528 0 0 0 12.88-24.7 78.082 78.082 0 0 0 2.61-31.7 77.244 77.244 0 0 0 8.93-32.94l.04-1v-1c2.4-41.1-28.34-76.61-70.08-80.26zM64.38 379.79c-24.07-30.62-21.7-75.58 6.5-103.78l71.73-71.7 18.33-91.64c45.96 45.94 62.27 102.09 48.95 155.23-33.79 12.01-65.48 31.89-92.77 59.17l-52.74 52.72zm243.24-10.53l-71.73 71.7c-30.38 30.37-80.44 31.18-110.82.81l-27.5-27.49 53.39-53.37c37.92-37.91 86.06-58.39 133.48-58.39 41.21 0 81.88 15.47 114.84 48.42l-91.66 18.32zM447.95 105.4c6.45 7.13 9.43 17.47 6.45 27.58-3 9.65-10.59 16.78-19.55 19.53 5.05 7.82 6.21 17.93 2.07 27.12-4.14 9.19-12.42 14.94-21.61 16.55 4.14 8.27 3.91 18.38-1.14 26.89-4.84 8.51-13.57 13.56-22.77 14.25 3.22 8.5 2.3 18.38-3.44 26.43-4.12 5.77-10.05 8.77-16.29 10.44-27.19-12.65-56.74-19.53-87.22-19.53-7.91 0-15.79.47-23.62 1.32 4.84-38.96-2.36-78.56-21.29-115.62 1.36-7.19 4.66-13.99 10.93-18.41 9.49-6.78 20.02-5.96 26.66-3.46.69-8.96 5.75-17.7 14.26-22.53 13.58-8.05 26.54-1.31 26.9-1.14 1.61-8.97 7.59-17.24 16.78-21.38 11.56-4.9 21.83-1.13 27.13 2.3 2.76-9.19 10.11-16.54 19.77-19.3 2.58-.76 16.01-4.31 27.59 6.89 23.37-44.68 85.4 17.95 38.39 42.07z\"]\n};\nvar faCouch = {\n prefix: 'far',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M576 196.6V128c0-53-43-96-96-96H160c-53 0-96 43-96 96v68.6C29.4 207.3 3.1 236.9.3 273-2 302 9.9 329.5 32 347.6V440c0 22.1 17.9 40 40 40h88c4 0 30.2-.9 31.9-32h256.2c1.4 30.8 28 32 31.9 32h88c22.1 0 40-17.9 40-40v-92.4c22-18.1 34-45.5 31.7-74.6-2.8-36.1-29.1-65.7-63.7-76.4zM144 432H80V321.3l-11.9-7C54.6 306.5 47 292 48.2 276.7 49.7 256.5 69.4 240 92 240h12c22.1 0 40 17.9 40 40v152zm304-128v96H192v-96h256zm3.7-48H188.2c-9.8-34.3-39.7-59.8-76.2-63.2V128c0-26.5 21.5-48 48-48h320c26.5 0 48 21.5 48 48v64.8c-36.6 3.4-66.5 28.9-76.3 63.2zm120.2 58.4l-11.9 7V432h-64V280c0-22.1 17.9-40 40-40h12c22.6 0 42.3 16.5 43.9 36.8 1.1 15.3-6.5 29.7-20 37.6z\"]\n};\nvar faCow = {\n prefix: 'far',\n iconName: 'cow',\n icon: [640, 512, [], \"f6c8\", \"M624.48 237.99l-16.51-19.15v-42.82c0-11.89-12.52-19.63-23.15-14.31-6.08 3.04-11.32 7.1-16.1 11.58l-59.99-69.6A96.044 96.044 0 0 0 430.96 64H111.99c-48.6 0-88 39.4-88 88v86.41C9.48 250.14 0 267.88 0 288v32c39.76 0 72-32.24 72-72v-96c0-16.88 10.57-31.18 25.38-37.04-.87 4.21-1.35 8.57-1.35 13.04v288c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-39.98c2.55.87 5.4 1.3 8.04 2.05V392c0 8.84 7.16 16 16 16s16-7.16 16-16v-8.68c2.68.15 13.27.14 16-.01V392c0 8.84 7.16 16 16 16s16-7.16 16-16v-13.98c2.62-.74 5.44-1.17 7.96-2.03V416c0 17.67 14.33 32 32 32h63.96c17.67 0 31.99-14.32 32-31.99l.04-143.97L463.97 288v41.98c0 12.32 3.56 24.38 10.24 34.73l35.46 54.89a62.08 62.08 0 0 0 52.14 28.4H576c35.34 0 64-28.65 64-64V279.78c0-15.34-5.51-30.17-15.52-41.79zm-414.37 82.58c6.95-27.82 31.97-48.57 61.9-48.57 29.92 0 54.92 20.73 61.89 48.53-61.3 20.93-62.19 21.03-123.79.04zM592 384c0 8.82-7.18 16-16 16h-14.19c-4.8 0-9.22-2.41-11.83-6.44l-35.46-54.9c-.87-2.95-1.69-5.72-2.56-8.68v-61.87l-75.77-75.77c-13.35-13.35-36.17-3.9-36.17 14.98L399.98 400h-31.97v-64c0-45.59-38.14-96-95.99-96-58.15 0-95.99 50.69-95.99 96v64h-32V128c0-8.82 7.18-16 16-16h4.32c.8 1.5 25.36 34.82 25.36 34.82C211.52 175.75 241.1 192 271.94 192h.17c30.84 0 60.42-16.25 82.23-45.18 0 0 24.56-33.32 25.36-34.82h51.27c15.34 0 29.87 7.42 38.87 19.85l118.28 137.49c2.5 2.91 3.88 6.62 3.88 10.46V384zm-32-80c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16z\"]\n};\nvar faCowbell = {\n prefix: 'far',\n iconName: 'cowbell',\n icon: [448, 512, [], \"f8b3\", \"M384.19 122.35A32 32 0 0 0 352.64 96h-16V48a48.1 48.1 0 0 0-48.12-48H160.29a48.1 48.1 0 0 0-48.09 48v48H95.36a32 32 0 0 0-31.55 26.35l-63.3 352A32 32 0 0 0 32.07 512h383.86a32 32 0 0 0 31.56-37.65zM160 48h128v48H160zM51.14 464l57.54-320h230.64l57.54 320z\"]\n};\nvar faCowbellMore = {\n prefix: 'far',\n iconName: 'cowbell-more',\n icon: [640, 512, [], \"f8b4\", \"M464 160c-97 0-176 79-176 176s79 176 176 176 176-78.95 176-176-78.95-176-176-176zm0 304a128 128 0 1 1 128-128 128 128 0 0 1-128 128zm80-152h-56v-56a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v56h-56a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h56v56a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-56h56a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM300.39 464H51.14l57.54-320h230.64l4.1 22.84a207.09 207.09 0 0 1 44.42-24.2l-3.65-20.29A32 32 0 0 0 352.64 96h-16V48a48.1 48.1 0 0 0-48.12-48H160.29a48.1 48.1 0 0 0-48.09 48v48H95.36a32 32 0 0 0-31.55 26.35l-63.3 352A32 32 0 0 0 32.07 512h321.59a209.26 209.26 0 0 1-53.27-48zM160 48h128v48H160z\"]\n};\nvar faCreditCard = {\n prefix: 'far',\n iconName: 'credit-card',\n icon: [576, 512, [], \"f09d\", \"M527.9 32H48.1C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48.1 48h479.8c26.6 0 48.1-21.5 48.1-48V80c0-26.5-21.5-48-48.1-48zM54.1 80h467.8c3.3 0 6 2.7 6 6v42H48.1V86c0-3.3 2.7-6 6-6zm467.8 352H54.1c-3.3 0-6-2.7-6-6V256h479.8v170c0 3.3-2.7 6-6 6zM192 332v40c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12zm192 0v40c0 6.6-5.4 12-12 12H236c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12z\"]\n};\nvar faCreditCardBlank = {\n prefix: 'far',\n iconName: 'credit-card-blank',\n icon: [576, 512, [], \"f389\", \"M527.9 32H48.1C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48.1 48h479.8c26.6 0 48.1-21.5 48.1-48V80c0-26.5-21.5-48-48.1-48zm-6 400H54.1c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h467.8c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6zM192 364v8c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12zm192 0v8c0 6.6-5.4 12-12 12H236c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12z\"]\n};\nvar faCreditCardFront = {\n prefix: 'far',\n iconName: 'credit-card-front',\n icon: [576, 512, [], \"f38a\", \"M527.9 32H48.1C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48.1 48h479.8c26.6 0 48.1-21.5 48.1-48V80c0-26.5-21.5-48-48.1-48zm-6 400H54.1c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h467.8c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6zM192 364v8c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12zm192 0v8c0 6.6-5.4 12-12 12H236c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12zm-124-44h-56c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm28-12v-40c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12zm-192 0v-40c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12zm384-40v40c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12zm0-132v48c0 13.3-10.7 24-24 24h-80c-13.3 0-24-10.7-24-24v-48c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24z\"]\n};\nvar faCricket = {\n prefix: 'far',\n iconName: 'cricket',\n icon: [640, 512, [], \"f449\", \"M635.7 31.9l-15.2-21.6c-7.6-10.8-22.6-13.5-33.4-5.9L442.6 105.9c-14.5 10.1-34.4 6.6-44.5-7.8L385.4 80c-9.9-14-29.7-18.2-44.5-7.8L13.8 300.7C4.9 306.9-.7 317.2.1 328c5.6 79.3 54.7 149.2 127.4 181.6 15.4 6.9 28.9-2.5 30.4-3.5L485 277.6c14.5-10.1 18-30 7.9-44.4l-15.3-21.8c-10.1-14.4-6.6-34.3 7.9-44.4L629.8 65.2c10.8-7.6 13.5-22.5 5.9-33.3zM138 461.5c-48.8-25.3-82-72.6-89.1-126.9l224.8-157.1-19.1 107.9 108.2 19L138 461.5zM437.8 252l-37.9 26.5-108.2-19 19.1-107.9 37.9-26.5c3.6-2.5 8.6-1.6 11.1 2L439.7 241c2.6 3.5 1.7 8.5-1.9 11zm73.8 68.5c-52.9 0-95.9 42.9-95.9 95.7s43 95.7 95.9 95.7 95.9-42.9 95.9-95.7-43-95.7-95.9-95.7zm0 143.6c-26.4 0-48-21.5-48-47.9s21.5-47.9 48-47.9c26.4 0 48 21.5 48 47.9 0 26.5-21.5 47.9-48 47.9z\"]\n};\nvar faCroissant = {\n prefix: 'far',\n iconName: 'croissant',\n icon: [512, 512, [], \"f7f6\", \"M507.72 168a161 161 0 0 0-73.48-84 71.07 71.07 0 0 0-26.18-42.49A203.31 203.31 0 0 0 285.49 0a199 199 0 0 0-46.12 5.77 72.23 72.23 0 0 0-46-3.57A262.32 262.32 0 0 0 2.13 193.38a73 73 0 0 0 3.5 45.5 201.29 201.29 0 0 0 35.73 168.36 71 71 0 0 0 41.5 25.95 161.71 161.71 0 0 0 85.06 74.52c46.79 17.71 95.34-22 87.11-71.4l-15.85-95.07a69.94 69.94 0 0 0 4.32-5.7 72.79 72.79 0 0 0 48.24-21.17l22.64-22.62c12.94-12.94 19.78-29.95 20.85-47.58a69.1 69.1 0 0 0 6.62-4.83l94.45 15.74c49.82 8.3 89.02-40.72 71.42-87.08zM111.81 382.26c-11.51 9-25.79 4.39-32.28-4.12-21.85-28.64-31.86-63.25-30.84-97.94 1.1.39 2.06 1 3.18 1.33l135.28 41.61zm73.13 80.58a113.44 113.44 0 0 1-50.43-38.27 70.28 70.28 0 0 0 6.94-4.56l55-43.16 11.23 67.35a17 17 0 0 1-22.74 18.64zm95.49-205l-22.62 22.62a25.57 25.57 0 0 1-25.6 6.36L66 235.66A25.58 25.58 0 0 1 48.7 205 214.41 214.41 0 0 1 205 48.76 25.57 25.57 0 0 1 235.64 66l51.15 166.18a25.56 25.56 0 0 1-6.36 25.63zm42.95-69.89l-41.85-136c-.39-1.24-1-2.36-1.42-3.56 1.79-.08 3.58-.38 5.37-.38a154 154 0 0 1 93.46 31.63c8.58 6.54 13.08 20.85 4.12 32.27zm120.82 19.79l-66.64-11.1 43.26-55.12a69.1 69.1 0 0 0 4.31-6.55 113.54 113.54 0 0 1 37.71 50 17 17 0 0 1-18.64 22.77z\"]\n};\nvar faCrop = {\n prefix: 'far',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M496 352h-80V141.25l91.31-91.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L370.75 96H192v64h114.75L160 306.75V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h80v224c0 17.67 14.33 32 32 32h192v-64H205.25L352 205.25V496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h80c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faCropAlt = {\n prefix: 'far',\n iconName: 'crop-alt',\n icon: [512, 512, [], \"f565\", \"M160 16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h80v224c0 17.67 14.33 32 32 32h192v-64H160V16zm336 336h-80V128c0-17.67-14.33-32-32-32H192v64h160v336c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h80c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faCross = {\n prefix: 'far',\n iconName: 'cross',\n icon: [384, 512, [], \"f654\", \"M344 104h-64V40c0-22.06-17.94-40-40-40h-96c-22.06 0-40 17.94-40 40v64H40c-22.06 0-40 17.94-40 40v96c0 22.06 17.94 40 40 40h64v192c0 22.06 17.94 40 40 40h96c22.06 0 40-17.94 40-40V280h64c22.06 0 40-17.94 40-40v-96c0-22.06-17.94-40-40-40zm-8 128H232v232h-80V232H48v-80h104V48h80v104h104v80z\"]\n};\nvar faCrosshairs = {\n prefix: 'far',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M500 232h-29.334C459.597 131.885 380.115 52.403 280 41.334V12c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v29.334C131.885 52.403 52.403 131.885 41.334 232H12c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h29.334C52.403 380.115 131.885 459.597 232 470.666V500c0 6.627 5.373 12 12 12h24c6.627 0 12-5.373 12-12v-29.334C380.115 459.597 459.597 380.115 470.666 280H500c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12zM280 422.301V380c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v42.301C158.427 411.84 100.154 353.532 89.699 280H132c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12H89.699C100.16 158.427 158.468 100.154 232 89.699V132c0 6.627 5.373 12 12 12h24c6.627 0 12-5.373 12-12V89.699C353.573 100.16 411.846 158.468 422.301 232H380c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h42.301C411.84 353.573 353.532 411.846 280 422.301zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z\"]\n};\nvar faCrow = {\n prefix: 'far',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M448 72c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24zm96-40h-24.91C501.51 12.49 476.32 0 448 0c-53.02 0-96 42.98-96 96v30.16L12.09 393.57A30.216 30.216 0 0 0 0 417.74C0 435.26 14.37 448 30.23 448c4.48 0 9.08-1.02 13.5-3.23L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-48 160c0 79.4-64.6 144-144 144h-77.74l45.33-12.95c48.03-13.73 88.41-47.23 110.72-91.89 3.94-7.91.75-17.52-7.16-21.47-7.91-3.91-17.5-.73-21.47 7.16-18.31 36.66-51.44 64.16-90.91 75.42l-144.93 41.41 215.83-169.8L400 149.47V96c0-26.47 21.53-48 48-48s48 21.53 48 48v96z\"]\n};\nvar faCrown = {\n prefix: 'far',\n iconName: 'crown',\n icon: [640, 512, [], \"f521\", \"M528 464H112c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm64-336c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-5.2 3.1-10.8 4.6-16.4 4.6-11.1 0-21.9-5.8-27.8-16.1L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-5.9 10.4-16.7 16.1-27.8 16.1-5.6 0-11.3-1.5-16.4-4.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48zM478.7 368H161.3l-36-96.1 14 8.4c12.4 7.5 26.7 11.4 41.1 11.4 28.7 0 55.3-15.4 69.5-40.3L320 128.7l70.1 122.7c14.2 24.9 40.8 40.3 69.5 40.3 14.5 0 28.7-3.9 41.1-11.4l14-8.4-36 96.1z\"]\n};\nvar faCrutch = {\n prefix: 'far',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M507.31 185.59L326.29 4.68a16 16 0 0 0-22.62 0L292.35 16a16 16 0 0 0 0 22.61l181 180.9a16 16 0 0 0 22.63 0l11.31-11.3a16 16 0 0 0 .02-22.62zm-178.75 77.2l-79.19-79.15 71.43-71.38-33.94-33.92-121.14 121a87.62 87.62 0 0 0-23.5 42.43l-28.31 122.47L5.27 472.81a18 18 0 0 0 0 25.44l8.49 8.48a18 18 0 0 0 25.45 0l108.66-108.59 122.5-28.24a87.85 87.85 0 0 0 42.41-23.51l121.16-121.06L400 191.41zm-49.75 49.7a39.75 39.75 0 0 1-19.25 10.66l-91.78 21.18L189 252.59a39.74 39.74 0 0 1 10.69-19.27l15.77-15.76 79.19 79.14z\"]\n};\nvar faCrutches = {\n prefix: 'far',\n iconName: 'crutches',\n icon: [640, 512, [], \"f7f8\", \"M635.31 185.59L454.29 4.68a16 16 0 0 0-22.62 0L420.35 16a16 16 0 0 0 0 22.61l181 180.9a16 16 0 0 0 22.63 0l11.31-11.3a16 16 0 0 0 .02-22.62zm-178.75 77.2l-79.19-79.15 71.43-71.38-33.94-33.92-121.14 121a87.62 87.62 0 0 0-23.5 42.43l-28.31 122.47-108.64 108.57a18 18 0 0 0 0 25.44l8.49 8.48a18 18 0 0 0 25.45 0l108.67-108.59 122.49-28.24a87.85 87.85 0 0 0 42.41-23.51l121.16-121.06L528 191.41zm-49.75 49.7a39.75 39.75 0 0 1-19.25 10.66l-91.78 21.18L317 252.59a39.74 39.74 0 0 1 10.69-19.27l15.77-15.76 79.19 79.14zM207.93 353l4.87-4.86 10.51-45.47L89.38 168.79l79.2-79.15L264 185c2.33-2.79 4.57-5.64 7.15-8.22l26.27-26.25-94.9-94.81 17.13-17.12a16 16 0 0 0 0-22.61L208.33 4.68a16 16 0 0 0-22.62 0L4.69 185.59a16 16 0 0 0 0 22.61L16 219.5a16 16 0 0 0 22.63 0l16.81-16.79 143.78 143.68c2.59 2.61 5.83 4.33 8.71 6.61zm219.43 40.53a120.22 120.22 0 0 1-21.8 7.6l-31.27 7.21 98.5 98.43a18 18 0 0 0 25.45 0l8.49-8.48a18 18 0 0 0 0-25.44z\"]\n};\nvar faCube = {\n prefix: 'far',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M239.1 7.5l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V130.5c0-20-12.4-37.9-31.1-44.9l-208-78C262 3.4 250 3.4 239.1 7.5zm16.9 45l208 78v.3l-208 84.5-208-84.5v-.3l208-78zM48 182.6l184 74.8v190.2l-184-92v-173zm232 264.9V257.4l184-74.8v172.9l-184 92z\"]\n};\nvar faCubes = {\n prefix: 'far',\n iconName: 'cubes',\n icon: [512, 512, [], \"f1b3\", \"M384 215.1V102.5c0-15-9.3-28.4-23.4-33.7l-92-34.5c-8.1-3.1-17.1-3.1-25.3 0l-92 34.5c-14.1 5.3-23.4 18.7-23.4 33.7v112.6L23.4 254.4C9.3 259.6 0 273.1 0 288.1v106.6c0 13.6 7.7 26.1 19.9 32.2l98.6 49.3c10.1 5.1 22.1 5.1 32.2 0L256 423.6l105.3 52.6c10.1 5.1 22.1 5.1 32.2 0l98.6-49.3c12.2-6.1 19.9-18.6 19.9-32.2V288.1c0-15-9.3-28.4-23.4-33.7L384 215.1zm-116 34.8V152l92-31.7v97.6l-92 32zM152 94.2l104-39 104 39v.2L256 131 152 94.3v-.1zm0 26.1l92 31.7v97.9l-92-32v-97.6zm-30 329.4l-96.8-48.4V308l96.8 39.3v102.4zM25.2 280.8v-.2l109.4-41 108.1 40.5v1.2l-108.1 43.9-109.4-44.4zm122 66.5l95.5-38.8V402l-95.5 47.8V347.3zm217.6 102.4L269.3 402v-93.4l95.5 38.8v102.3zm122-48.4L390 449.7V347.3l96.8-39.3v93.3zm0-120.5l-109.4 44.4-108.1-43.9v-1.2l108.1-40.5 109.4 41v.2z\"]\n};\nvar faCurling = {\n prefix: 'far',\n iconName: 'curling',\n icon: [640, 512, [], \"f44a\", \"M540.5 199.7C529.7 158.5 492.6 128 448 128H288v-16c0-26.5 21.5-48 48-48h128c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H336c-61.9 0-112 50.1-112 112v16h-32c-44.6 0-81.7 30.5-92.5 71.7C41.9 218.6 0 272.1 0 336v32c0 79.5 64.5 144 144 144h352c79.5 0 144-64.5 144-144v-32c0-63.9-41.9-117.4-99.5-136.3zM144 240h352c52.9 0 96 43.1 96 96H48c0-52.9 43.1-96 96-96zm352 224H144c-52.9 0-96-43.1-96-96h544c0 52.9-43.1 96-96 96z\"]\n};\nvar faCut = {\n prefix: 'far',\n iconName: 'cut',\n icon: [448, 512, [], \"f0c4\", \"M263.39 256L445.66 73.37c3.12-3.12 3.12-8.19 0-11.31-18.74-18.74-49.14-18.74-67.88 0L223.82 216.35l-43.1-43.18C187.92 159.71 192 144.33 192 128c0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c16.31 0 31.66-4.07 45.11-11.24L184.26 256l-43.15 43.24C127.66 292.07 112.31 288 96 288c-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-16.33-4.08-31.71-11.28-45.17l43.1-43.18 153.95 154.29c18.74 18.74 49.14 18.74 67.88 0 3.12-3.12 3.12-8.19 0-11.31L263.39 256zM96 176c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm0 256c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faDagger = {\n prefix: 'far',\n iconName: 'dagger',\n icon: [384, 512, [], \"f6cb\", \"M344 96H216V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80H40c-22.09 0-40 17.91-40 40s17.91 40 40 40c19.25 0 34.57-13.88 38.38-32H112v264.05l63.36 95.04c3.96 5.94 10.3 8.91 16.64 8.91s12.68-2.97 16.64-8.91L272 408.05V144h33.62c3.81 18.12 19.13 32 38.38 32 22.09 0 40-17.91 40-40s-17.91-40-40-40zM224 393.52l-32 48-32-48V144h64v249.52z\"]\n};\nvar faDatabase = {\n prefix: 'far',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M224 48c97.167 0 176 27.723 176 61.714v4.571C400 148.277 321.167 176 224 176S48 148.277 48 114.286v-4.571C48 75.723 126.833 48 224 48m176 135.018v26.399c0 33.991-78.833 61.714-176 61.714S48 243.408 48 209.417v-26.399C85.813 210.982 155.021 224 224 224s138.187-13.018 176-40.982m0 96v26.834c0 33.991-78.833 61.714-176 61.714S48 339.842 48 305.851v-26.834C85.813 306.982 155.021 320 224 320s138.187-13.018 176-40.982m0 96v27.268C400 436.277 321.167 464 224 464S48 436.277 48 402.286v-27.268C85.813 402.982 155.021 416 224 416s138.187-13.018 176-40.982M224 0C137.052 0 0 23.26 0 109.714v292.571C0 488.758 137.03 512 224 512c86.948 0 224-23.26 224-109.714V109.714C448 23.242 310.97 0 224 0z\"]\n};\nvar faDeaf = {\n prefix: 'far',\n iconName: 'deaf',\n icon: [512, 512, [], \"f2a4\", \"M404.486 124.485l-16.971-16.971c-4.686-4.686-4.686-12.284 0-16.971l87.029-87.029c4.686-4.686 12.284-4.686 16.971 0l16.971 16.971c4.686 4.686 4.686 12.284 0 16.971l-87.029 87.029c-4.687 4.687-12.285 4.687-16.971 0zm-367.03 384l151.029-151.029c4.686-4.686 4.686-12.284 0-16.971l-16.971-16.971c-4.686-4.686-12.284-4.686-16.971 0L3.515 474.544c-4.686 4.686-4.686 12.284 0 16.971l16.971 16.971c4.686 4.686 12.284 4.686 16.97-.001zM351.15 397.282C351.901 351.835 424 338.659 424 264c0-93.516-75.03-168-168-168-93.134 0-168 74.662-168 168 0 13.255 10.745 24 24 24s24-10.745 24-24c0-67.05 53.62-120 120-120 66.503 0 120 53.082 120 120 0 48.824-71.843 60.62-72.849 132.757l-.002.334c0 36.894-29.607 66.909-66 66.909-13.255 0-24 10.745-24 24s10.745 24 24 24c62.796 0 113.894-51.446 114.001-114.718zM320 288c-13.255 0-24-10.745-24-24 0-22.056-17.944-40-40-40s-40 17.944-40 40c0 13.255-10.745 24-24 24s-24-10.745-24-24c0-48.523 39.477-88 88-88s88 39.477 88 88c0 13.255-10.745 24-24 24z\"]\n};\nvar faDebug = {\n prefix: 'far',\n iconName: 'debug',\n icon: [512, 512, [], \"f7f9\", \"M117.75 271a16 16 0 1 0 4.5 31.68l42.75-6.09a90.21 90.21 0 0 0 10.81 39l-35.51 23.69a16 16 0 1 0 17.7 26.61l37.64-25.1a87.82 87.82 0 0 0 83.24 19.94L162.77 264.58zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.28 0-200-89.72-200-200a198.86 198.86 0 0 1 42.81-123.25l280.44 280.44A198.86 198.86 0 0 1 256 456zm157.19-76.75L345 311.08a89.64 89.64 0 0 0 2-14.49l42.73 6.11a16 16 0 1 0 4.5-31.68l-46.82-6.69v-24.65l46.82-6.7a16 16 0 1 0-4.5-31.68l-43.52 6.22a90.15 90.15 0 0 0-10-31.1l35.51-23.69A16 16 0 1 0 354 126.11l-37.64 25.1a90.27 90.27 0 0 0-126.08 5.1l-57.5-57.5A198.86 198.86 0 0 1 256 56c110.28 0 200 89.72 200 200a198.86 198.86 0 0 1-42.81 123.25z\"]\n};\nvar faDeer = {\n prefix: 'far',\n iconName: 'deer',\n icon: [512, 512, [], \"f78e\", \"M384 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm81.4-51.5l-68.7-19.4c3-3.3 6.2-6.3 8.7-10L423.5 52c4.9-7.3 2.9-17.3-4.4-22.2l-13.3-8.9c-7.4-4.9-17.3-2.9-22.2 4.4l-18.1 27.2c-3.9 5.8-9.2 10.5-15.4 13.6l-48.8 24.4-9.5-2.8c7.9-9.9 12.3-22.3 12.3-35V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v36.8c0 1.8-.6 3.6-1.7 5L241 74.6l-11-3.1c-3.4-1-5.8-4.1-5.8-7.7V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v47.8c0 25 16.8 47.2 40.9 53.9l63.8 17.9-14.6 24.4H88c-48.5 0-88 39.5-88 88v64h48v7.2L37.6 347c-6.2 16.8-7.3 34.9-2.6 53.3l24.5 81.5c4.5 17.8 20.4 30.3 38.8 30.3h63.8c12.4 0 23.9-5.6 31.5-15.3 7.6-9.8 10.3-22.3 7-35.4l-24-80.7 10.7-28.6H240v120c0 22.1 17.9 40 40 40h64c22.1 0 40-17.9 40-40V295.3l20.8-31.3H448c35.3 0 64-28.7 64-64v-29.9c0-28.5-19.2-53.8-46.6-61.6zM464 200c0 8.8-7.2 16-16 16h-68.8L336 280.7V464h-48V304H154l-28.1 74.8 25.4 85.2h-47.1l-23.1-76.5c-2-7.9-1.5-16.1 1.3-23.7L96.5 332l-.5-68H48v-16c0-22.1 17.9-40 40-40h205.7l34.5-58.8c7.5-15 24.6-22.5 40.8-18l83.3 23.5c6.9 1.9 11.7 8.3 11.7 15.4V200z\"]\n};\nvar faDeerRudolph = {\n prefix: 'far',\n iconName: 'deer-rudolph',\n icon: [576, 512, [], \"f78f\", \"M400 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm136-64c-15.5 0-28.5 9.1-35.2 22-5.8-4.1-12.3-7.4-19.4-9.4l-68.7-19.4c3-3.3 6.2-6.3 8.7-10L439.5 52c4.9-7.4 2.9-17.3-4.4-22.2l-13.3-8.9c-7.4-4.9-17.3-2.9-22.2 4.4l-18.1 27.2c-3.9 5.8-9.2 10.5-15.4 13.6l-48.8 24.4-1.3.6-9-2.5.7-.9c7.9-9.9 12.3-22.3 12.3-35V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v36.8c0 1.8-.6 3.6-1.7 5l-13.4 16.8-11-3.1c-3.4-1-5.8-4.1-5.8-7.7V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v47.8c0 25 16.8 47.2 40.9 53.9l63.8 17.9-14.5 24.4H88c-48.5 0-88 39.5-88 88v64h48v7.2L37.6 347c-6.2 16.8-7.3 34.9-2.6 53.3l24.5 81.5c4.5 17.8 20.4 30.3 38.8 30.3h63.8c12.4 0 23.9-5.6 31.5-15.3 7.6-9.8 10.3-22.3 7-35.4l-24-80.7 10.7-28.6H256v120c0 22.1 17.9 40 40 40h64c22.1 0 40-17.9 40-40V302.4l21.9-38.4H464c35.3 0 64-28.7 64-64v-25.6c2.7.6 5.2 1.6 8 1.6 22.1 0 40-17.9 40-40s-17.9-40-40-40zm-56 104c0 8.8-7.2 16-16 16h-69.9L352 289.6V464h-48V304H154l-28.1 74.8 25.4 85.2h-47.1l-23.1-76.5c-2-7.9-1.5-16.1 1.3-23.7L96.5 332l-.5-68H48v-16c0-22.1 17.9-40 40-40h221.7l34.5-58.8c7.5-15 24.6-22.5 40.8-18l83.3 23.5c6.9 1.9 11.7 8.3 11.7 15.4V200z\"]\n};\nvar faDemocrat = {\n prefix: 'far',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M638.7 221.2L619 191.7c-25.2-37.8-66.5-61.2-111.6-63.7h-219l-73.6-61.2c11.3-19.2 11.5-43.1-.9-61.9-3.4-5.2-10.8-5.9-15.2-1.5l-40.9 40.8-41.9-41.8c-3.6-3.6-9.6-3-12.4 1.2-11.4 17.2-9.9 39.7 3.1 56l-93 108.7C-1.1 185.4-4 209.6 6.1 229.7l13.7 27.4c9.6 19.1 28.8 30.9 50.1 30.9h31c14.8 0 29.2-6 38.2-15.1l10.3-8.7 26.3 68.3V472c0 22.1 18 40 40 40h72.1c22.1 0 40-17.9 40-40v-40h96.1v40c0 22.1 18 40 40 40H536c22.1 0 40-17.9 40-40V216c0-.5-.1-1-.2-1.5 1 1.4 2.3 2.4 3.3 3.9l19.6 29.4c1.2 1.8 3 3 5.1 3.4 2.2.5 4.2 0 6-1.2l26.7-17.7c3.6-2.5 4.6-7.5 2.2-11.1zM527.9 464h-56.1v-64c0-8.8-7.2-16-16-16H295.7c-8.8 0-16 7.2-16 16v64h-56.1V352h304.3v112zm0-160H214.7l-36.9-98.8c-3.9-10.4-16.9-13.8-25.4-6.6l-46 39.1c-1.5 1.5-3.6 2.3-5.7 2.3h-31c-3.1 0-5.8-1.7-7.2-4.4l-13.7-27.3c-1.4-2.9-1-6.3 1.1-8.8L138.6 96h36.3l96.1 80h216.9c22.1 0 40 17.9 40 40v88zm-244.2-77.2l-8.2-16.5c-1.5-3-5.7-3-7.2 0l-8.2 16.5-18.3 2.7c-3.3.5-4.6 4.5-2.2 6.8l13.2 12.9-3.1 18.2c-.6 3.3 2.9 5.8 5.8 4.2l16.3-8.6 16.3 8.6c2.9 1.5 6.4-.9 5.8-4.2l-3.1-18.2 13.2-12.9c2.4-2.3 1.1-6.3-2.2-6.8l-18.1-2.7zm95.8 0l-8.2-16.5c-1.5-3-5.7-3-7.2 0l-8.2 16.5-18.3 2.7c-3.3.5-4.6 4.5-2.2 6.8l13.2 12.9-3.1 18.2c-.6 3.3 2.9 5.8 5.8 4.2l16.3-8.6 16.3 8.6c2.9 1.5 6.4-.9 5.8-4.2l-3.1-18.2 13.2-12.9c2.4-2.3 1.1-6.3-2.2-6.8l-18.1-2.7zm96.2 0l-8.2-16.5c-1.5-3-5.7-3-7.2 0l-8.2 16.5-18.3 2.7c-3.3.5-4.6 4.5-2.2 6.8l13.2 12.9-3.1 18.2c-.6 3.3 2.9 5.8 5.8 4.2l16.3-8.6 16.3 8.6c2.9 1.5 6.4-.9 5.8-4.2l-3.1-18.2 13.2-12.9c2.4-2.3 1.1-6.3-2.2-6.8l-18.1-2.7z\"]\n};\nvar faDesktop = {\n prefix: 'far',\n iconName: 'desktop',\n icon: [576, 512, [], \"f108\", \"M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-42 152c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z\"]\n};\nvar faDesktopAlt = {\n prefix: 'far',\n iconName: 'desktop-alt',\n icon: [576, 512, [], \"f390\", \"M528 0H48C21.5 0 0 21.5 0 48v288c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM48 54c0-3.3 2.7-6 6-6h468c3.3 0 6 2.7 6 6v234H48V54zm432 434c0 13.3-10.7 24-24 24H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h98.7l18.6-55.8c1.6-4.9 6.2-8.2 11.4-8.2h78.7c5.2 0 9.8 3.3 11.4 8.2l18.6 55.8H456c13.3 0 24 10.7 24 24z\"]\n};\nvar faDewpoint = {\n prefix: 'far',\n iconName: 'dewpoint',\n icon: [448, 512, [], \"f748\", \"M176 0c-12.4 0-24.7 6.8-29.2 20.7C100 168.6 0 240.8 0 345c0 92.3 78.7 167 176 167s176-74.7 176-167c0-104.8-99.8-175.8-146.8-324.3C201.2 7.1 188.6 0 176 0zm128 345c0 65.6-57.4 119-128 119S48 410.6 48 345c0-42.9 25.1-82.9 56.8-133.5 23.7-37.8 49.9-79.6 71.2-131 21.4 51.7 47.6 93.4 71.4 131.2C279 262.1 304 301.9 304 345zM368 0c-44.1 0-80 35.9-80 80s35.9 80 80 80 80-35.9 80-80-35.9-80-80-80zm0 112c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faDharmachakra = {\n prefix: 'far',\n iconName: 'dharmachakra',\n icon: [512, 512, [], \"f655\", \"M499.23 232.01l-20.46.62c-4.6-44.33-22.16-84.78-48.78-117.59l14.96-14.07c5.13-4.72 5.3-12.76.37-17.69l-16.6-16.6c-4.93-4.93-12.97-4.76-17.69.37l-14.07 14.96c-32.81-26.62-73.26-44.18-117.59-48.78l.62-20.46C280.28 5.8 274.71 0 267.74 0h-23.48c-6.97 0-12.54 5.8-12.25 12.77l.62 20.46c-44.33 4.6-84.77 22.16-117.59 48.78l-14.07-14.96c-4.72-5.13-12.76-5.3-17.69-.37l-16.6 16.6c-4.93 4.93-4.76 12.97.37 17.69l14.96 14.07c-26.62 32.81-44.18 73.26-48.78 117.59l-20.46-.62C5.8 231.72 0 237.29 0 244.26v23.48c0 6.97 5.8 12.54 12.77 12.25l20.46-.62c4.6 44.33 22.16 84.77 48.78 117.59l-14.96 14.07c-5.13 4.72-5.3 12.76-.37 17.69l16.6 16.6c4.93 4.93 12.97 4.76 17.69-.37l14.07-14.96c32.81 26.62 73.26 44.18 117.59 48.78l-.62 20.46c-.29 6.96 5.28 12.77 12.25 12.77h23.48c6.97 0 12.54-5.81 12.25-12.77l-.62-20.46c44.33-4.6 84.77-22.16 117.59-48.78l14.07 14.96c4.72 5.13 12.76 5.3 17.69.37l16.6-16.6c4.93-4.93 4.76-12.97-.37-17.69l-14.96-14.07c26.62-32.81 44.18-73.26 48.78-117.59l20.46.62c6.97.29 12.77-5.28 12.77-12.25v-23.48c0-6.97-5.8-12.54-12.77-12.25zm-68.74 2.1l-80.48 2.46c-2.49-12.06-7.33-23.25-13.89-33.2l58.67-55.2c18.98 24.37 31.68 53.79 35.7 85.94zM256 304c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm107.84-186.79l-55.2 58.67c-9.95-6.56-21.14-11.4-33.2-13.89l2.46-80.48c32.14 4.01 61.56 16.72 85.94 35.7zm-129.73-35.7l2.46 80.48c-12.06 2.49-23.25 7.33-33.2 13.89l-55.2-58.67c24.37-18.98 53.79-31.69 85.94-35.7zm-116.9 66.65l58.67 55.2c-6.56 9.95-11.4 21.14-13.89 33.2l-80.48-2.46c4.02-32.14 16.72-61.56 35.7-85.94zm-35.7 129.73l80.48-2.46c2.49 12.06 7.33 23.25 13.89 33.2l-58.67 55.2c-18.98-24.37-31.69-53.79-35.7-85.94zm66.65 116.9l55.2-58.67c9.95 6.56 21.14 11.4 33.2 13.89l-2.46 80.48c-32.14-4.01-61.56-16.72-85.94-35.7zm129.73 35.7l-2.46-80.48c12.06-2.49 23.25-7.33 33.2-13.89l55.2 58.67c-24.37 18.98-53.79 31.69-85.94 35.7zm116.9-66.65l-58.67-55.2c6.56-9.95 11.4-21.14 13.89-33.2l80.48 2.46c-4.01 32.14-16.72 61.56-35.7 85.94z\"]\n};\nvar faDiagnoses = {\n prefix: 'far',\n iconName: 'diagnoses',\n icon: [640, 512, [], \"f470\", \"M632 464H8c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8h624c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8zM256 304c0 8.8 7.2 16 16 16s16-7.2 16-16-7.2-16-16-16-16 7.2-16 16zm240-48c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM96 272c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm488.6 56.4l-17.8 26.7c-3.1 4.6-8.1 7.2-13.3 7.2-9.8 0-55.6-34.9-137.5-58.9V416h48v-43.8c26.3 11.7 46.7 23.1 57 29.2 9.9 5.8 21.1 8.9 32.5 8.9 21.4 0 41.3-10.7 53.2-28.6l17.8-26.7c9.7-14.6 13.1-32.7 9.2-49.7-3.8-16.9-14.5-31.7-29.4-40.6-13.8-8.3-35.3-20.1-61.2-32.3 4.2 26.5-13.3 41.5-17.4 44.9 23.2 11.1 42.2 21.6 53.9 28.6 8 4.7 10.1 14.9 5 22.5zM33.2 381.7c11.9 17.9 31.8 28.6 53.2 28.6 11.4 0 22.7-3.1 32.5-8.9 10.3-6.1 30.7-17.5 57-29.2V416h48V303.4C142.8 327.2 96 362.3 86.4 362.3c-5.2 0-10.2-2.5-13.3-7.2l-17.8-26.7c-5.1-7.6-2.9-17.8 4.9-22.5 3.6-2.2 8.5-4.9 13.4-7.7-14.7-7.8-24.9-23-25.5-40.7-4.4 2.5-9.1 5.1-12.6 7.2-14.9 8.9-25.6 23.7-29.4 40.6-3.8 17-.5 35.1 9.2 49.7l17.9 26.7zm110-117.3C192.7 243.5 255.7 224 320 224c44.9 0 89 9.6 128.6 22.4-3.6-26.6 14.1-41.1 18.3-44.4-19.9-6.6-41.1-12.3-63-16.8 17.2-19.7 28-45.1 28-73.3C432 50.2 381.8 0 320 0c-61.8 0-112 50.2-112 112 0 28 10.7 53.4 27.8 73.1-39.8 8.1-77.1 20.8-109.3 34.2 15.3 12.7 19.3 30.2 16.7 45.1zM320 48c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm32 336c0 8.8 7.2 16 16 16s16-7.2 16-16-7.2-16-16-16-16 7.2-16 16z\"]\n};\nvar faDiamond = {\n prefix: 'far',\n iconName: 'diamond',\n icon: [448, 512, [], \"f219\", \"M189.5 496L11 285.7c-14.6-17.2-14.6-42.2 0-59.5L189.5 16c18.1-21.4 50.9-21.3 69 0L437 226.3c14.6 17.2 14.6 42.2 0 59.5L258.5 496c-18.1 21.4-50.9 21.3-69 0zM48 256l176 206.5L400 256 224 49.5 48 256z\"]\n};\nvar faDice = {\n prefix: 'far',\n iconName: 'dice',\n icon: [640, 512, [], \"f522\", \"M480 328c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24zm96-136H439.38v.01c-2.89-5.17-6.26-10.15-10.66-14.55L270.54 19.28C257.69 6.42 240.84 0 224 0s-33.69 6.42-46.54 19.28L19.28 177.46c-25.7 25.7-25.7 67.38 0 93.08l158.18 158.18C190.31 441.57 207.16 448 224 448s33.69-6.43 46.54-19.28L320 379.26V448c0 35.35 28.65 64 64 64h192c35.35 0 64-28.65 64-64V256c0-35.35-28.65-64-64-64zM235.63 393.82c-4.19 4.19-9.09 4.82-11.63 4.82s-7.44-.63-11.63-4.82L54.18 235.63c-6.42-6.42-6.42-16.86 0-23.27L212.37 54.18c4.19-4.19 9.09-4.82 11.63-4.82s7.44.63 11.63 4.82l158.19 158.18c6.42 6.41 6.42 16.85 0 23.27L235.63 393.82zM592 448c0 8.82-7.18 16-16 16H384c-8.82 0-16-7.18-16-16V331.26l60.72-60.72c8.73-8.73 14.26-19.37 17.05-30.54H576c8.82 0 16 7.18 16 16v192zM224 200c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24zm96 0c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24zm-192 0c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24zm96 96c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24zm0-192c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24z\"]\n};\nvar faDiceD10 = {\n prefix: 'far',\n iconName: 'dice-d10',\n icon: [512, 512, [], \"f6cd\", \"M503.88 261.29L279.8 10.64C273.45 3.55 264.73 0 256 0s-17.45 3.55-23.8 10.64L8.12 261.29c-11.81 13.21-10.6 33.5 2.69 45.22l224.08 197.52c6.03 5.32 13.57 7.97 21.11 7.97s15.08-2.66 21.11-7.97L501.19 306.5c13.29-11.71 14.49-32.01 2.69-45.21zM256 287.83l-66.08-44.05L256 89.6l66.08 154.18L256 287.83zm-113.37-55.56l-56.9 14.23 97.58-109.15-40.68 94.92zm12.9 46.26L232 329.51v107.97L74.61 298.76l80.92-20.23zM280 329.51l76.47-50.98 80.92 20.22L280 437.49V329.51zm89.37-97.24l-40.68-94.92 97.58 109.15-56.9-14.23z\"]\n};\nvar faDiceD12 = {\n prefix: 'far',\n iconName: 'dice-d12',\n icon: [512, 512, [], \"f6ce\", \"M508.62 185.24l-55.85-111.7a32.06 32.06 0 0 0-14.31-14.31L326.76 3.38A32.066 32.066 0 0 0 312.45 0h-112.9c-4.97 0-9.87 1.16-14.31 3.38L73.54 59.23a32.06 32.06 0 0 0-14.31 14.31L3.38 185.24A32.066 32.066 0 0 0 0 199.55v112.89c0 4.97 1.16 9.87 3.38 14.31l55.85 111.7a32.06 32.06 0 0 0 14.31 14.31l111.7 55.85c4.44 2.22 9.34 3.38 14.31 3.38h112.89c4.97 0 9.87-1.16 14.31-3.38l111.7-55.85a32.06 32.06 0 0 0 14.31-14.31l55.85-111.7c2.22-4.44 3.38-9.34 3.38-14.31V199.55c.01-4.96-1.15-9.86-3.37-14.31zm-53.62.1l-78.18 104.24L280 241.17v-93.5l140.72-28.14-.93-4.61L455 185.34zM300.56 464h-89.11l-52.96-132.41L256 282.83l97.52 48.76L300.56 464zM203.33 48h105.34l64.28 32.14L256 103.53 139.06 80.14 203.33 48zM92.21 114.92l-.93 4.61L232 147.68v93.5l-96.82 48.41L57 185.34l35.21-70.42zM48 308.67v-55.35l58.9 78.53 41.96 104.91-49.08-24.54L48 308.67zm364.22 103.55l-49.08 24.54 41.96-104.91 58.9-78.53v55.35l-51.78 103.55z\"]\n};\nvar faDiceD20 = {\n prefix: 'far',\n iconName: 'dice-d20',\n icon: [448, 512, [], \"f6cf\", \"M431.88 116.13L239.88 4.3a31.478 31.478 0 0 0-31.76 0l-192 111.84C6.15 121.94 0 132.75 0 144.45v223.09c0 11.71 6.15 22.51 16.12 28.32l192 111.84a31.478 31.478 0 0 0 31.76 0l192-111.84c9.97-5.81 16.12-16.62 16.12-28.32V144.45c0-11.7-6.15-22.51-16.12-28.32zM224 87.87L296.47 184H151.53L224 87.87zm0 251.42L155.72 232h136.56L224 339.29zm-110.88-84.82l63.37 99.58-83.42-19.37 20.05-80.21zm221.76 0l20.05 80.21-83.42 19.37 63.37-99.58zm16.6-77.22l-70.41-93.41 106.02 61.76-35.61 31.65zm-254.96 0L60.91 145.6l106.02-61.76-70.41 93.41zm-24.24 42.66L48 317.05V198.33l24.28 21.58zM200 408.78v38.64L89.71 383.18 200 408.78zm48 0l110.29-25.61L248 447.42v-38.64zm152-91.73l-24.28-97.13L400 198.33v118.72z\"]\n};\nvar faDiceD4 = {\n prefix: 'far',\n iconName: 'dice-d4',\n icon: [512, 512, [], \"f6d0\", \"M504.9 289.03L280.85 11.86C274.45 3.96 265.23 0 256 0s-18.45 3.96-24.85 11.86L7.1 289.03c-11.31 14-8.84 34.57 5.47 45.49l224.05 170.94a31.87 31.87 0 0 0 19.38 6.55c6.83 0 13.66-2.18 19.38-6.55l224.05-170.94c14.31-10.92 16.78-31.5 5.47-45.49zM232 87.17v354.38L54.81 306.37 232 87.17zm48 354.38V87.17l177.19 219.2L280 441.55z\"]\n};\nvar faDiceD6 = {\n prefix: 'far',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M431.88 116.13L239.88 4.3a31.478 31.478 0 0 0-31.76 0l-192 111.84C6.15 121.94 0 132.75 0 144.45v223.09c0 11.71 6.15 22.51 16.12 28.32l192 111.84a31.478 31.478 0 0 0 31.76 0l192-111.84c9.97-5.81 16.12-16.62 16.12-28.32V144.45c0-11.7-6.15-22.51-16.12-28.32zM224 50.6l152.35 88.74L224 228.22 71.65 139.34 224 50.6zM48 181.12l152 88.66v177.64L48 358.88V181.12zm200 266.3V269.78l152-88.66v177.76l-152 88.54z\"]\n};\nvar faDiceD8 = {\n prefix: 'far',\n iconName: 'dice-d8',\n icon: [512, 512, [], \"f6d2\", \"M502.12 232.14L279.86 9.88C273.27 3.29 264.64 0 256 0s-17.27 3.29-23.86 9.88L9.88 232.14c-13.18 13.18-13.18 34.55 0 47.73l222.25 222.25c6.59 6.59 15.23 9.88 23.86 9.88s17.27-3.29 23.86-9.88L502.1 279.87c13.19-13.19 13.19-34.55.02-47.73zM280 77.9l166.38 166.38L280 315.6V77.9zm-48 237.7L65.62 244.29 232 77.9v237.7zm0 52.22v66.27L116.04 318.13 232 367.82zm48 0l115.97-49.69L280 434.1v-66.28z\"]\n};\nvar faDiceFive = {\n prefix: 'far',\n iconName: 'dice-five',\n icon: [448, 512, [], \"f523\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zm16 384c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16V96c0-8.82 7.18-16 16-16h320c8.82 0 16 7.18 16 16v320zM128 128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm192-192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm0 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faDiceFour = {\n prefix: 'far',\n iconName: 'dice-four',\n icon: [448, 512, [], \"f524\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zm16 384c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16V96c0-8.82 7.18-16 16-16h320c8.82 0 16 7.18 16 16v320zM128 128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm0 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm192-192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm0 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faDiceOne = {\n prefix: 'far',\n iconName: 'dice-one',\n icon: [448, 512, [], \"f525\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zm16 384c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16V96c0-8.82 7.18-16 16-16h320c8.82 0 16 7.18 16 16v320zM224 224c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faDiceSix = {\n prefix: 'far',\n iconName: 'dice-six',\n icon: [448, 512, [], \"f526\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zm16 384c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16V96c0-8.82 7.18-16 16-16h320c8.82 0 16 7.18 16 16v320zM128 128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm0 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm192 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-192 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm192-192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm0 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faDiceThree = {\n prefix: 'far',\n iconName: 'dice-three',\n icon: [448, 512, [], \"f527\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zm16 384c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16V96c0-8.82 7.18-16 16-16h320c8.82 0 16 7.18 16 16v320zM128 128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faDiceTwo = {\n prefix: 'far',\n iconName: 'dice-two',\n icon: [448, 512, [], \"f528\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zm16 384c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16V96c0-8.82 7.18-16 16-16h320c8.82 0 16 7.18 16 16v320zM128 128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm192 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faDigging = {\n prefix: 'far',\n iconName: 'digging',\n icon: [576, 512, [], \"f85e\", \"M272 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm39.06 320a32 32 0 0 0-30.35 21.88L256 512h320L474.07 305.69a32 32 0 0 0-56.07-2.15l-31.52 53.69-75-40.52L289 194.56a121.81 121.81 0 0 0-65.47-85.62A123 123 0 0 0 168.72 96H96a24 24 0 0 0-17.94 8.06L21.2 170.38a32 32 0 0 0 9 49l331.6 179.9L352 416zM107.84 206L70 185.38 106.78 144h55.33zm82.51 45l49.18-54.63 18 91.15zm203 189.26l50.84-86.63L498.75 464H379.48zM195.5 346.94L65.33 273.88l-64.24 207a24 24 0 1 0 45.81 14.23l46.35-149.27L160 382.25V488a24 24 0 0 0 48 0V368a24 24 0 0 0-12.5-21.06z\"]\n};\nvar faDigitalTachograph = {\n prefix: 'far',\n iconName: 'digital-tachograph',\n icon: [640, 512, [], \"f566\", \"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zm-16 272H48V144h544v224zM96 240h192c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H96c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16zm-8 104h208c4.42 0 8-3.58 8-8v-8c0-4.42-3.58-8-8-8H88c-4.42 0-8 3.58-8 8v8c0 4.42 3.58 8 8 8zm256 0h208c4.42 0 8-3.58 8-8v-8c0-4.42-3.58-8-8-8H344c-4.42 0-8 3.58-8 8v8c0 4.42 3.58 8 8 8zM96 264c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H96zm58.67 0c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8h-16zm58.66 0c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8h-16zm58.67 0c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8h-16z\"]\n};\nvar faDiploma = {\n prefix: 'far',\n iconName: 'diploma',\n icon: [640, 512, [], \"f5ea\", \"M608.64 79.58c-5.62-9.54-17.06-15.56-29.38-15.56-7.35 0 1.98-2.46-134.62 43.56a390.517 390.517 0 0 1-124.65 20.44c-42.38 0-84.48-6.9-124.65-20.44C58.15 61.36 68.05 64.03 60.74 64.03c-12.31 0-23.75 6.01-29.38 15.56-41.81 70.93-41.81 217.94 0 288.87 5.63 9.54 17.06 15.56 29.38 15.56 7.35 0-1.98 2.46 134.62-43.56 7.54-2.54 15.21-4.61 22.88-6.69l-57.4 98.91c-3.05 7.49 2.65 15.63 10.73 15.32l36.64.01 25.21 28.52c5.56 5.87 15.33 4.04 18.39-3.45L320 352.01l68.2 121.06c3.05 7.49 12.83 9.32 18.39 3.45l25.2-28.52 36.64-.01c8.08.31 13.78-7.83 10.73-15.32l-57.4-98.92c7.67 2.07 15.34 4.15 22.89 6.69C581.85 386.67 571.95 384 579.27 384c12.31 0 23.75-6.01 29.38-15.56 41.8-70.92 41.8-217.92-.01-288.86zM180.02 294.96l-113 38.07c-25.49-56.48-25.49-161.56 0-218.04l113 38.07c24.81 8.36 50.23 14.23 75.98 18.03v97.58l-5.15 8.88c-23.99 3.84-47.66 9.61-70.83 17.41zm392.96 38.08l-113-38.07c-23.16-7.8-46.84-13.57-70.82-17.4l-5.15-8.88V171.1c25.74-3.8 51.16-9.67 75.98-18.03l113-38.07c25.47 56.48 25.47 161.56-.01 218.04z\"]\n};\nvar faDirections = {\n prefix: 'far',\n iconName: 'directions',\n icon: [512, 512, [], \"f5eb\", \"M502.61 233.32L278.68 9.39C272.42 3.13 264.21 0 256 0s-16.42 3.13-22.68 9.39L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c6.26 6.26 14.47 9.39 22.68 9.39s16.42-3.13 22.68-9.39l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zM256 457.4L54.6 256 256 54.6 457.4 256 256 457.4zM160 248v80c0 4.42 3.58 8 8 8h32c4.42 0 8-3.58 8-8v-64h80v53.73c0 4.8 3.93 8.02 8.05 8.02 1.87 0 3.78-.66 5.38-2.14l84.21-77.73c3.43-3.17 3.43-8.59 0-11.76l-84.21-77.73c-1.6-1.47-3.51-2.14-5.38-2.14-4.12 0-8.05 3.22-8.05 8.02V216h-96c-17.67 0-32 14.33-32 32z\"]\n};\nvar faDiscDrive = {\n prefix: 'far',\n iconName: 'disc-drive',\n icon: [512, 512, [], \"f8b5\", \"M256 112a144 144 0 1 0 144 144 144 144 0 0 0-144-144zm0 176a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm240 144h-16V96a64 64 0 0 0-64-64H96a64 64 0 0 0-64 64v336H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm-64 0H80V96a16 16 0 0 1 16-16h320a16 16 0 0 1 16 16z\"]\n};\nvar faDisease = {\n prefix: 'far',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M459.68 179.63l-60.78-20.49c-9.81-3.32-16.94-9.95-19-17.7L365.37 87.5c-6.81-25.46-27.65-45-55.71-52.44-30.88-8.1-63.12.15-84.25 21.62L183.6 99.25c-7 7.16-18.59 11-30.15 10.14l-65.12-5c-33.75-2.54-65.06 13.19-79.93 40.19-12.85 23.38-10.88 50.32 5.37 72.06l34.9 46.8c4.63 6.17 5.32 13.16 2 19.67L25 334c-11.85 23.36-9.25 49.83 6.93 70.85 19.21 24.91 52.9 36.44 86.07 29.35l63.4-13.64c11.32-2.49 23.82-.05 32.38 6.28L263 463.3a87.24 87.24 0 0 0 51.87 16.7 89.76 89.76 0 0 0 37.25-8c25.41-11.6 41.75-33.77 43.75-59.35l4.25-55.24c.56-7.44 6-14.47 14.62-18.8L471 310.25c27.21-13.73 42.87-39.6 40.87-67.54-2.07-28.71-22.07-52.92-52.19-63.08zm-10.35 87.74l-56.21 28.35c-23.72 12-39 33.64-40.87 58L348 408.93c-.88 11.38-11.35 17.33-15.78 19.36-10.25 4.69-27 6.52-40.66-3.56l-49.21-36.47c-14.69-10.85-33.22-16.64-52-16.64a90.73 90.73 0 0 0-19 2l-63.4 13.64c-17 3.73-31.41-3.25-38-11.77-4.87-6.33-5.59-13-2.12-19.83l25.74-50.88c11.44-22.59 9-49.44-6.37-70.07L52.21 187.9c-4.91-6.58-5.5-13.38-1.75-20.18 4.4-8 16.43-16.87 34.18-15.5l65.12 5c25.25 2 51.12-7.1 68.09-24.36l41.81-42.55c8.87-9.08 23.78-12.54 37.78-8.85 11.22 2.94 19.25 9.83 21.56 18.46l14.5 54c6.28 23.29 25 42.24 50.09 50.7l60.77 20.5C456 229 463.3 236.9 464 246.12c.58 8.52-4.76 16.27-14.67 21.25zM160 192a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm128 96a32 32 0 1 0 32 32 32 32 0 0 0-32-31.95zm16-96a16 16 0 1 0 16 16 16 16 0 0 0-16-16z\"]\n};\nvar faDivide = {\n prefix: 'far',\n iconName: 'divide',\n icon: [384, 512, [], \"f529\", \"M192 160c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm176 64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM192 352c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faDizzy = {\n prefix: 'far',\n iconName: 'dizzy',\n icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-33.8-217.9c7.8-7.8 7.8-20.5 0-28.3L196.3 192l17.9-17.9c7.8-7.8 7.8-20.5 0-28.3-7.8-7.8-20.5-7.8-28.3 0L168 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.9 7.7 20.5 7.7 28.4-.2zm160-92.2c-7.8-7.8-20.5-7.8-28.3 0L328 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.8 7.8 20.5 7.8 28.3 0 7.8-7.8 7.8-20.5 0-28.3l-17.8-18 17.9-17.9c7.7-7.8 7.7-20.4 0-28.2zM248 272c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z\"]\n};\nvar faDna = {\n prefix: 'far',\n iconName: 'dna',\n icon: [384, 512, [], \"f471\", \"M0 495.1C-.5 503 5.2 512 15.4 512h15.4c8.1 0 14.7-6.2 15.3-14.4.3-4.5 1-10.5 2.2-17.6h287c1.2 7.1 2.1 13.4 2.5 17.7.7 8.1 7.3 14.3 15.3 14.3h15.5c11.5 0 15.8-10.7 15.3-16.8-2.1-29.5-16.3-126.8-108.5-208.8-12.6 9.3-26.2 18.2-40.9 26.7 9.1 7.5 17 15.2 24.6 23H123.6c20.6-20.9 46.4-41.3 79.3-59.3C359.8 190.5 381.2 56 384 16.9 384.5 9 378.8 0 368.6 0h-15.4c-8.1 0-14.7 6.2-15.3 14.4-.3 4.5-1 10.5-2.2 17.6H48.6c-1.3-7.1-2-13.2-2.4-17.7C45.5 6.2 38.9 0 30.9 0H15.4C5.2 0-.5 9.1 0 16.9c2.6 35.7 21.2 153 147.9 238.9C21.3 341.4 2.6 458.9 0 495.1zM322.4 80c-5.7 15-13.6 31.3-24.2 48H86.3C75.7 111.3 67.8 95 62 80h260.4zM192 228.8c-27.4-16.3-49.4-34.3-67.5-52.8h135.4c-18.2 18.4-40.3 36.4-67.9 52.8zM61.4 432c5.7-14.9 13.5-31.2 24.1-48h211.7c10.6 16.8 18.6 33 24.4 48H61.4z\"]\n};\nvar faDoNotEnter = {\n prefix: 'far',\n iconName: 'do-not-enter',\n icon: [496, 512, [], \"f5ec\", \"M394.67 192H101.33C93.97 192 88 199.16 88 208v96c0 8.84 5.97 16 13.33 16h293.33c7.36 0 13.33-7.16 13.33-16v-96c.01-8.84-5.96-16-13.32-16zM360 272H136v-32h224v32zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\"]\n};\nvar faDog = {\n prefix: 'far',\n iconName: 'dog',\n icon: [576, 512, [], \"f6d3\", \"M576,104v48a88.09,88.09,0,0,1-88,88h-8V480a32,32,0,0,1-32,32H368a32,32,0,0,1-32-32V384H208v96a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V312a118.82,118.82,0,0,1,7.88-41.63A88,88,0,0,1,0,184a24,24,0,0,1,48,0,40,40,0,0,0,40,40h15.06c21.38-19.69,49.66-32,80.94-32H304V16c0-14.25,17.22-21.39,27.31-11.31L358.59,32l-.12.15c.53,0,1-.15,1.53-.15h76.22a55.65,55.65,0,0,1,50.09,31l.53,1H536A40,40,0,0,1,576,104ZM432,268.73,317.06,240H184a72.09,72.09,0,0,0-72,72V464h48V336H384V464h48ZM528,112H457.16L443.38,84.42A8,8,0,0,0,436.22,80H360a8,8,0,0,0-8,8V199.26l80,20V192h56a40,40,0,0,0,40-40Zm-96,0a16,16,0,1,1-16-16A16,16,0,0,1,432,112Z\"]\n};\nvar faDogLeashed = {\n prefix: 'far',\n iconName: 'dog-leashed',\n icon: [576, 512, [], \"f6d4\", \"M576,104v48a88.09,88.09,0,0,1-88,88h-8V480a32,32,0,0,1-32,32H368a32,32,0,0,1-32-32V384H208v96a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V312a118.82,118.82,0,0,1,7.88-41.63A88,88,0,0,1,0,184a24,24,0,0,1,48,0,40,40,0,0,0,40,40h15c21.39-19.68,49.67-32,81-32h55.59L38.42,41.63a16,16,0,0,1-3.23-22.4L44.77,6.42A16,16,0,0,1,67.16,3.19L304,180.22V16c0-14.25,17.23-21.39,27.31-11.31L358.6,32l-.14.16c.53,0,1-.16,1.54-.16h76.22a55.67,55.67,0,0,1,50.09,31l.53,1H536A40,40,0,0,1,576,104ZM280,240H184a72.09,72.09,0,0,0-72,72V464h48V336H280Zm152,28.73-104-26V336h56V464h48ZM528,112H457.16L443.38,84.42A8,8,0,0,0,436.22,80H360a8,8,0,0,0-8,8V199.27l80,20V192h56a40,40,0,0,0,40-40Zm-96,0a16,16,0,1,1-16-16A16,16,0,0,1,432,112Z\"]\n};\nvar faDollarSign = {\n prefix: 'far',\n iconName: 'dollar-sign',\n icon: [288, 512, [], \"f155\", \"M211.9 242.1L95.6 208.9c-15.8-4.5-28.6-17.2-31.1-33.5C60.6 150 80.3 128 105 128h73.8c15.9 0 31.5 5 44.4 14.1 6.4 4.5 15 3.8 20.5-1.7l22.9-22.9c6.8-6.8 6.1-18.2-1.5-24.1C240.4 74.3 210.4 64 178.8 64H176V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C60.3 64 14.9 95.8 3.1 143.6c-13.9 56.2 20.2 111.2 73 126.3l116.3 33.2c15.8 4.5 28.6 17.2 31.1 33.5C227.4 362 207.7 384 183 384h-73.8c-15.9 0-31.5-5-44.4-14.1-6.4-4.5-15-3.8-20.5 1.7l-22.9 22.9c-6.8 6.8-6.1 18.2 1.5 24.1 24.6 19.1 54.6 29.4 86.3 29.4h2.8v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h2.5c49.2 0 94.6-31.8 106.4-79.6 13.9-56.2-20.2-111.2-73-126.3z\"]\n};\nvar faDolly = {\n prefix: 'far',\n iconName: 'dolly',\n icon: [576, 512, [], \"f472\", \"M575.2 309.9l-5.1-15.2c-2.8-8.4-11.9-12.9-20.2-10.1L531 291 459.1 75.3C455.7 65.2 448.6 57 439 52.2c-9.5-4.7-20.4-5.5-30.5-2.2l-221.9 74L158 38.3C150.4 15.4 129 0 105 0H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h88.9c3.4 0 6.5 2.2 7.6 5.5l93.6 280.8c-27.6 16.9-46.2 47-46.2 81.7 0 53 43 96 96 96s96-43 96-96c0-4.9-.7-9.5-1.4-14.2L565 330.2c8.4-2.8 13-11.9 10.2-20.3zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm75.6-106.5C314 334.8 286.9 320 256 320c-1.3 0-2.6.3-3.9.4l-50.3-150.8 86.5-28.8 19.9 59.7c2.8 8.4 11.9 12.9 20.2 10.1l15.2-5.1c8.4-2.8 12.9-11.9 10.1-20.2l-19.9-59.7 82.3-27.4 69.4 208.1-153.9 51.2z\"]\n};\nvar faDollyEmpty = {\n prefix: 'far',\n iconName: 'dolly-empty',\n icon: [576, 512, [], \"f473\", \"M575.2 309.9l-5.1-15.2c-2.8-8.4-11.9-12.9-20.2-10.1l-218.3 72.9C314 334.8 286.9 320 256 320c-1.3 0-2.6.3-3.9.4l-94-282.1C150.4 15.4 129 0 105 0H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h88.9c3.4 0 6.5 2.2 7.6 5.5l93.6 280.8c-27.6 16.9-46.2 47-46.2 81.7 0 53 43 96 96 96s96-43 96-96c0-4.9-.7-9.5-1.4-14.2L565 330.2c8.4-2.8 13-11.9 10.2-20.3zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faDollyFlatbed = {\n prefix: 'far',\n iconName: 'dolly-flatbed',\n icon: [640, 512, [], \"f474\", \"M208 352h384c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm32-240h112v112l48-32 48 32V112h112v192H240V112zm384 288H144V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h80v384c0 8.8 7.2 16 16 16h50.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16z\"]\n};\nvar faDollyFlatbedAlt = {\n prefix: 'far',\n iconName: 'dolly-flatbed-alt',\n icon: [640, 512, [], \"f475\", \"M208 352h384c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm208-240h80v80h-80v-80zm0 128h144v64H416v-64zM240 112h128v192H240V112zm384 288H144V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h80v384c0 8.8 7.2 16 16 16h50.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16z\"]\n};\nvar faDollyFlatbedEmpty = {\n prefix: 'far',\n iconName: 'dolly-flatbed-empty',\n icon: [640, 512, [], \"f476\", \"M624 400H144V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h80v384c0 8.8 7.2 16 16 16h50.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16z\"]\n};\nvar faDonate = {\n prefix: 'far',\n iconName: 'donate',\n icon: [512, 512, [], \"f4b9\", \"M225.6 232.3l50.1 14.3c3.6 1 6.1 4.4 6.1 8.1 0 4.6-3.8 8.4-8.4 8.4h-32.8c-3.6 0-7.1-.8-10.3-2.2-4.8-2.2-10.4-1.7-14.1 2l-17.5 17.5c-5.3 5.3-4.7 14.3 1.5 18.4 9.5 6.3 20.4 10.1 31.8 11.5V328c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-17.6c30.3-3.6 53.4-31 49.3-63-2.9-23-20.7-41.3-42.9-47.7l-50.1-14.3c-3.6-1-6.1-4.4-6.1-8.1 0-4.6 3.8-8.4 8.4-8.4h32.8c3.6 0 7.1.8 10.3 2.2 4.8 2.2 10.4 1.7 14.1-2l17.5-17.5c5.3-5.3 4.7-14.3-1.5-18.4-9.5-6.3-20.4-10.1-31.8-11.5V104c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v17.6c-30.3 3.6-53.4 31-49.3 63 2.9 23 20.6 41.3 42.9 47.7zM480 320h-34.7c17-30.9 26.7-66.3 26.7-104C472 96.7 375.3 0 256 0S40 96.7 40 216c0 37.7 9.7 73.1 26.7 104H32c-17.7 0-32 17.2-32 38.4v115.2C0 494.8 14.3 512 32 512h448c17.7 0 32-17.2 32-38.4V358.4c0-21.2-14.3-38.4-32-38.4zM256 48c92.6 0 168 75.4 168 168s-75.4 168-168 168S88 308.6 88 216 163.4 48 256 48zm208 416H48v-96h54.6c12.2 12.3 25.9 22.9 40.7 32H104c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8h-39.3c14.8-9.1 28.5-19.7 40.7-32H464v96z\"]\n};\nvar faDoorClosed = {\n prefix: 'far',\n iconName: 'door-closed',\n icon: [640, 512, [], \"f52a\", \"M624 464H512V32c0-17.67-14.33-32-32-32H160c-17.67 0-32 14.33-32 32v432H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-160 0H176V48h288v416zm-64-176c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32z\"]\n};\nvar faDoorOpen = {\n prefix: 'far',\n iconName: 'door-open',\n icon: [640, 512, [], \"f52b\", \"M288 288c13.25 0 24-14.33 24-32s-10.75-32-24-32-24 14.33-24 32 10.75 32 24 32zm336 176H512V113.45C512 86.19 490.47 64 464 64h-80V33.18C384 14.42 369.21 0 352.06 0c-2.57 0-5.19.32-7.83 1.01l-192 49.74C137.99 54.44 128 67.7 128 82.92V464H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-288 0H176V94.18l160-41.45V464zm128 0h-80V112h80v352z\"]\n};\nvar faDotCircle = {\n prefix: 'far',\n iconName: 'dot-circle',\n icon: [512, 512, [], \"f192\", \"M256 56c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 168c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80z\"]\n};\nvar faDove = {\n prefix: 'far',\n iconName: 'dove',\n icon: [512, 512, [], \"f4ba\", \"M368 160.2c0 8.8 7.2 16 16 16s16-7.2 16-16-7.2-16-16-16c-8.9 0-16 7.2-16 16zM384 64c-46.2 0-84.8 32.8-93.9 76.4-29-36.6-49-79.8-56.2-126.5C231.8.6 215-5.1 206 5.5c-25.1 29.6-44.3 65.1-55 105.1-1.6 5.8-2.4 11.7-3.4 17.5-25.4-24.4-46.3-53.5-60.6-86.3-5.5-12.6-23.3-13.1-29.1-.7-16.1 34.1-25.3 72-25.9 112-1.3 96.1 54.8 163.1 95.9 199.4L13.8 391C1.6 394.3-3.9 409.2 3 420.3c19.8 32.3 68.9 87 174.8 91.6 13.5.6 17.6-4.6 25.2-9.4l76.4-54.1H320c88.4 0 160-71.7 160-160.1V159.9L512 64H384zm-186.6 59c2.6-9.7 5.8-19.1 9.6-28.2 15.9 38.4 39.9 72.9 69.3 102.4-30.2-6.8-58.6-18.2-84.1-34.1.4-13.7 1.8-27.2 5.2-40.1zM432 152.1v136.1c0 61.8-50.2 111.7-112 111.7h-55.9l-89.4 63.7c-52.3-3.3-85.9-21.4-107-40.2l154-52C165.9 324.9 78.6 261.1 80 153.7c.1-9 .8-17 1.9-25.7C174.6 249.1 320 256 336 256v-95.8c0-26.6 21.5-48.1 48-48.1h61.4l-13.4 40z\"]\n};\nvar faDownload = {\n prefix: 'far',\n iconName: 'download',\n icon: [576, 512, [], \"f019\", \"M528 288h-92.1l46.1-46.1c30.1-30.1 8.8-81.9-33.9-81.9h-64V48c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v112h-64c-42.6 0-64.2 51.7-33.9 81.9l46.1 46.1H48c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48zm-400-80h112V48h96v160h112L288 368 128 208zm400 256H48V336h140.1l65.9 65.9c18.8 18.8 49.1 18.7 67.9 0l65.9-65.9H528v128zm-88-64c0-13.3 10.7-24 24-24s24 10.7 24 24-10.7 24-24 24-24-10.7-24-24z\"]\n};\nvar faDraftingCompass = {\n prefix: 'far',\n iconName: 'drafting-compass',\n icon: [512, 512, [], \"f568\", \"M450.33 296.36c14.32-13.92 27.51-29.15 38.7-46.11 5.02-7.6 2.23-18.06-5.64-22.62l-13.79-8c-7.39-4.28-16.54-1.77-21.29 5.34-6.52 9.75-13.92 18.7-21.73 27.24l-76.3-141.76c.72-4.75 1.45-9.51 1.45-14.46C351.72 42.98 308.86 0 256 0s-95.72 42.98-95.72 95.99c0 4.95.73 9.71 1.45 14.46L85.46 252.16c-7.85-8.49-15.24-17.44-21.76-27.19-4.75-7.11-13.9-9.63-21.29-5.34l-13.79 8c-7.87 4.56-10.66 15.02-5.64 22.62 11.17 16.92 24.68 31.66 39.06 45.44L0 410.94l7.91 65.75c1.5 12.62 8.63 23.51 19.6 29.89 6.2 3.59 13.06 5.42 19.94 5.42 5.3 0 10.66-1.08 15.74-3.27l61.44-26.33 62.2-115.57c22.37 5.83 45.54 9.13 69.17 9.13 23.65 0 46.91-3.07 69.31-8.87l62.05 115.3 61.48 26.34c5.08 2.17 10.41 3.25 15.7 3.25 6.89 0 13.74-1.83 19.94-5.42 10.97-6.37 18.1-17.26 19.57-29.83l7.95-65.81-61.67-114.56zM256 48c26.43 0 47.86 21.49 47.86 48s-21.43 48-47.86 48-47.86-21.49-47.86-48S229.57 48 256 48zM90.48 444.85l-36.3 15.56-4.83-40.09 138.38-257.15c11.16 11.41 25.27 19.66 40.93 24.37l.15.28L90.48 444.85zM256 327.98c-15.5 0-30.71-1.85-45.58-4.97L256 238.32l45.56 84.65c-14.89 3.03-30.07 5.01-45.56 5.01zm27.18-140.17l.15-.28c15.67-4.71 29.77-12.96 40.93-24.37l65.57 121.85c-13.04 9.27-27.14 16.89-41.8 23.3l-64.85-120.5zm174.64 272.6l-36.3-15.56-50.76-94.31c14.56-6.61 28.6-14.25 41.83-23.24l50.06 93.03-4.83 40.08z\"]\n};\nvar faDragon = {\n prefix: 'far',\n iconName: 'dragon',\n icon: [640, 512, [], \"f6d5\", \"M481.12 119.98c14.92.85 27.36-9.89 30.88-24.59l-58.43-15.37c-6.5 27.13 15.51 39.27 27.55 39.96zm82.55 136.9l-94.19-44.21a9.876 9.876 0 0 1-4.6-4.69h18.68c4.9 3.12 8.91 5.72 12.25 7.89 16.52 10.73 24.81 16.12 42.65 16.12h27.87c23.03 0 43.8-12.59 54.22-32.85l12.88-25.04c10.49-20.39 8.19-45.32-5.84-63.51L560.5 23.65C549.07 8.84 530.99 0 512.12 0h-213.7c-37.28 0-52.93 46.77-24.99 69.01l12.52 9.94c-4.44 1.8-3.56 1.43-4.75 2.01-29.37 14.28-29.24 55.87.01 70.08L320 166.01v12.95l-167.69-41.84c-22.03-5.48-45.5 3.28-58.53 21.77L5.03 285.13c-14.39 22.6 4.05 52.39 33.06 48.25l91.52-17.21c-14.71 23.28 5.27 52.03 31.82 48.36l180.76-24.23c4.91 10.23 10.58 19.99 17.01 29.17-147.08 10.08-247.2 32.47-321.46 48.52C15.88 422.71 0 442.24 0 464.42c0 26.21 21.52 47.54 47.98 47.54l449.17.04c76.07.01 138.73-55.84 142.65-127.15 2.96-53.81-26.93-104.04-76.13-127.97zM68.03 278.95l65-92.44c1.66-2.38 4.59-3.66 7.69-2.81l69.82 17.33-41.4 58.87-101.11 19.05zm123.03 33.18l69.38-98.67L320 228.47c0 21.25.13 36.77 6.72 65.48l-135.66 18.18zM497.15 464l-449.26.9c92.02-19.88 196.84-43.56 383.18-51.02 16.58-.67 23.38-21.76 9.29-31.79C367.78 330.38 368 258.74 368 239.03V132.98l-45.11-17.22 57.34-23.24L324.16 48h188.22c3.96 0 7.7 1.84 10.12 4.97l67.13 87.01c2.7 3.5 3.13 8.23 1.11 12.16l-12.88 25.04c-2.12 4.13-6.65 6.79-11.53 6.79h-27.87c-3.61 0-3.61 0-16.5-8.37-5.12-3.33-24.56-15.64-24.56-15.64H416v44.11c0 22.19 12.6 42.09 33.08 52.04l93.59 43.92c32.27 15.69 51.12 47.18 49.2 82.16-2.48 45.13-44.97 81.82-94.72 81.81z\"]\n};\nvar faDrawCircle = {\n prefix: 'far',\n iconName: 'draw-circle',\n icon: [512, 512, [], \"f5ed\", \"M512 256c0-30.3-21.11-55.54-49.39-62.17-20.85-69.11-75.33-123.6-144.44-144.45C311.54 21.11 286.3 0 256 0s-55.54 21.11-62.17 49.39c-69.11 20.85-123.6 75.33-144.44 144.45C21.12 200.46 0 225.7 0 256c0 30.3 21.12 55.54 49.39 62.17 20.85 69.11 75.33 123.6 144.44 144.45C200.46 490.89 225.7 512 256 512s55.54-21.11 62.17-49.39c69.11-20.85 123.6-75.33 144.44-144.45C490.89 311.54 512 286.3 512 256zm-64 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16zM256 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM64 240c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm192 224c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16zm53.89-50.28C298.53 395.9 278.71 384 256 384c-22.7 0-42.53 11.9-53.89 29.72A166.552 166.552 0 0 1 98.28 309.89C116.1 298.53 128 278.7 128 256c0-22.71-11.9-42.53-29.72-53.89A166.567 166.567 0 0 1 202.12 98.28C213.47 116.1 233.3 128 256 128c22.71 0 42.53-11.9 53.89-29.72a166.614 166.614 0 0 1 103.84 103.83C395.9 213.47 384 233.29 384 256c0 22.7 11.9 42.53 29.72 53.89a166.529 166.529 0 0 1-103.83 103.83z\"]\n};\nvar faDrawPolygon = {\n prefix: 'far',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M384 352c-3.36 0-6.59.49-9.81.99l-35.21-58.68C347.05 283.6 352 270.43 352 256s-4.95-27.6-13.01-38.31l35.21-58.68c3.22.5 6.45.99 9.81.99 35.35 0 64-28.65 64-64s-28.65-64-64-64c-26.84 0-49.75 16.56-59.25 40H123.25c-9.5-23.44-32.4-40-59.25-40C28.65 32 0 60.65 0 96c0 26.84 16.56 49.75 40 59.25v201.49C16.56 366.25 0 389.15 0 416c0 35.35 28.65 64 64 64 26.85 0 49.75-16.56 59.25-40h201.49c9.5 23.44 32.41 40 59.25 40 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-296 4.75v-201.5A64.053 64.053 0 0 0 123.25 120h201.49c2.1 5.19 4.96 9.92 8.28 14.32l-35.21 58.67c-3.22-.5-6.45-.99-9.82-.99-35.35 0-64 28.65-64 64s28.65 64 64 64c3.36 0 6.59-.49 9.82-.99l35.21 58.67c-3.32 4.4-6.18 9.14-8.28 14.32H123.25A64.053 64.053 0 0 0 88 356.75zM288 240c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm96-160c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm0 352c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16zm320 0c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faDrawSquare = {\n prefix: 'far',\n iconName: 'draw-square',\n icon: [448, 512, [], \"f5ef\", \"M408 356.75v-201.5c23.44-9.5 40-32.41 40-59.25 0-35.35-28.65-64-64-64-26.84 0-49.75 16.56-59.25 40h-201.5c-9.5-23.44-32.4-40-59.25-40C28.65 32 0 60.65 0 96c0 26.84 16.56 49.75 40 59.25v201.49C16.56 366.25 0 389.15 0 416c0 35.35 28.65 64 64 64 26.85 0 49.75-16.56 59.25-40h201.49c9.5 23.44 32.41 40 59.25 40 35.35 0 64-28.65 64-64 .01-26.85-16.55-49.75-39.99-59.25zm-320 0v-201.5A64.053 64.053 0 0 0 123.25 120h201.49a64.053 64.053 0 0 0 35.25 35.25v201.49a64.053 64.053 0 0 0-35.25 35.25H123.25A64.066 64.066 0 0 0 88 356.75zM384 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm0 352c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16zm320 0c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faDreidel = {\n prefix: 'far',\n iconName: 'dreidel',\n icon: [448, 512, [], \"f792\", \"M443.3 48L432 36.7c-6.2-6.2-16.4-6.2-22.6 0L294.7 151.4l-77.6-77.6c-6.5-6.5-15.1-9.8-23.6-9.8-8.6 0-17.1 3.3-23.6 9.8L19.6 224C7 236.5 0 253.5 0 271.3v141.8c0 37 29.9 66.9 66.9 66.9h141.8c17.7 0 34.7-7 47.3-19.6l150.2-150.2c13.1-13.1 13.1-34.2 0-47.3l-77.6-77.6L443.3 70.6c6.3-6.2 6.3-16.4 0-22.6zM222.1 426.5c-3.6 3.6-8.3 5.5-13.3 5.5H66.9c-10.4 0-18.9-8.5-18.9-18.9V271.3c0-5 2-9.8 5.5-13.3l53.2-53.2 168.5 168.5-53.1 53.2zm87.1-87.2L140.7 170.8l52.7-52.7L362 286.6l-52.8 52.7z\"]\n};\nvar faDrone = {\n prefix: 'far',\n iconName: 'drone',\n icon: [512, 512, [], \"f85f\", \"M339.41 92.33a63.82 63.82 0 1 1 80.26 80.26l-35.93 49.77A110.32 110.32 0 0 0 400 224a112 112 0 1 0-112-112 110.32 110.32 0 0 0 1.64 16.26zM111 368.2a31.91 31.91 0 1 0 32.8 32.8l67.86-49h88.68l67.86 49a31.91 31.91 0 1 0 32.8-32.8l-49-67.86v-88.68l49-67.86a31.91 31.91 0 1 0-32.8-32.8l-67.86 49h-88.68l-67.86-49a31.91 31.91 0 1 0-32.8 32.8l49 67.86v88.68zM208 208h96v96h-96zm192 80a110.45 110.45 0 0 0-16.26 1.64l35.93 49.77a63.82 63.82 0 1 1-80.26 80.25l-49.77-35.92A110.32 110.32 0 0 0 288 400a112 112 0 1 0 112-112zm-288-64a110.32 110.32 0 0 0 16.26-1.64l-35.92-49.77a63.82 63.82 0 1 1 80.25-80.26l49.77 35.93A110.45 110.45 0 0 0 224 112a112 112 0 1 0-112 112zm60.59 195.67a63.82 63.82 0 1 1-80.26-80.26l35.93-49.77A110.32 110.32 0 0 0 112 288a112 112 0 1 0 112 112 110.32 110.32 0 0 0-1.64-16.26z\"]\n};\nvar faDroneAlt = {\n prefix: 'far',\n iconName: 'drone-alt',\n icon: [640, 512, [], \"f860\", \"M287.94 136a24 24 0 0 0-24-24h-97.6a23.65 23.65 0 0 0-44.76 0H24a24 24 0 0 0 0 48h240a24 24 0 0 0 23.94-24zm184 101.65l-96.85-29.05a191.87 191.87 0 0 0-110.32 0L168 237.65V192h-48v64.05a32 32 0 0 0 32 32h45.44a178.39 178.39 0 0 0-53.36 110.24 16.13 16.13 0 0 0 16 17.71h16.25c8.34 0 14.76-6.58 15.68-14.87a130.07 130.07 0 0 1 41.87-81.89L251 336.38A53.34 53.34 0 0 0 288.7 352h62.47a53.32 53.32 0 0 0 37.7-15.62L406 319.24a130.07 130.07 0 0 1 41.87 81.89c.92 8.29 7.34 14.85 15.67 14.87h16.26a16.14 16.14 0 0 0 16-17.71 178.49 178.49 0 0 0-53.36-110.24h45.46a32 32 0 0 0 32-32V192h-48zm-117 64.79a5.38 5.38 0 0 1-3.77 1.56H288.7a5.36 5.36 0 0 1-3.77-1.56l-38.28-38.29 31.91-9.57a143.9 143.9 0 0 1 82.74 0l31.92 9.58zm261.45-190.37l-97.9.31a23.57 23.57 0 0 0-44.94.15l-98 .31a23.55 23.55 0 0 0 .15 47.09l240.86-.77a23.55 23.55 0 0 0-.15-47.09z\"]\n};\nvar faDrum = {\n prefix: 'far',\n iconName: 'drum',\n icon: [512, 512, [], \"f569\", \"M431.67 121.83l73.2-47.2a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-109.8 70.81C319.94 97 273.56 96 256 96 213.25 96 0 101.4 0 208v160c0 61.86 114.62 112 256 112s256-50.14 256-112V208c0-43.4-35.52-69.85-80.33-86.17zM88 400.21C62 387.88 48 375.08 48 368v-88.56A216.21 216.21 0 0 0 88 297zM232 431c-37.53-1.64-69.81-6.57-96-13.54V309.2c36.05 6.87 71.63 9.43 96 10.33zm144-13.54c-26.19 7-58.47 11.9-96 13.54V319.53c24.37-.9 59.95-3.46 96-10.33zM464 368c0 7.08-14 19.88-40 32.21V297a216.21 216.21 0 0 0 40-17.54zm-208-96c-114.88 0-208-28.65-208-64s93.12-64 208-64c17.19 0 33.8.71 49.78 1.92l-72.91 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.74-76.56C430.13 167.93 464 186.73 464 208c0 35.35-93.13 64-208 64z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'far',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm0 48c24.31 0 47.75 1.23 69.87 3.47l-11.5 44.71C341.86 145.73 315.67 160 288 160c-27.67 0-53.86-14.27-58.37-31.82l-11.5-44.71C240.25 81.23 263.69 80 288 80zm-58.38 95.55C245.95 185.92 266.66 192 288 192c21.02 0 41.47-5.87 57.68-15.95 2.82 21.76 11.49 41.94 24.64 59.01C344.61 238.2 316.97 240 288 240c-29.32 0-57.28-1.84-83.25-5.05 13.11-17.29 21.97-37.61 24.87-59.4zm-55.11-86.04l13.02 46.08c9.82 34.77-3.37 70.58-30.33 91.44C91.51 212.75 48 188.09 48 160c0-30.5 51.21-56.99 126.51-70.49zM528 352c0 27.47-93.46 80-240 80-146.54 0-240-52.53-240-80V230.7C99.59 265.22 187.77 288 288 288s188.41-22.78 240-57.3V352zM418.16 227.15c-8.38-6.16-15.65-13.85-21.32-22.94-11.73-18.82-15.42-41.09-10.4-62.7l12.19-52.46C475.46 102.39 528 129.13 528 160c0 28.18-43.8 52.9-109.84 67.15z\"]\n};\nvar faDrumstick = {\n prefix: 'far',\n iconName: 'drumstick',\n icon: [512, 512, [], \"f6d6\", \"M471.06 57.65A169.92 169.92 0 0 0 348.12.07a172.16 172.16 0 0 0-126.19 49.72C195.34 76.21 160 119.46 160 189.81v60.42L116.3 294c-1.93 1.88-5.75 1-7.75.17A79.19 79.19 0 0 0 23.22 423.7a76.41 76.41 0 0 0 43.57 21.59 76.39 76.39 0 0 0 21.57 43.55 79.19 79.19 0 0 0 129.58-85.33c-1-2.5-1.56-6 .16-7.75L261.84 352H323c38.72 0 72.75-10.17 104-31.08 46.22-30.88 76.69-79.36 83.56-133 6.22-48.32-7.81-94.58-39.5-130.27zM173.37 421.34A31.07 31.07 0 0 1 144.43 464c-12 0-27.64-7.82-30.11-25.39l-5-35.8-35.81-5.05C56 395.28 48 379.69 48 367.65a31.13 31.13 0 0 1 42.5-29 60.4 60.4 0 0 0 22.5 4.42 52.8 52.8 0 0 0 37.27-15.17l20.43-20.45a84.92 84.92 0 0 0 34 33.87l-20.49 20.5c-15.3 15.24-19.43 38.05-10.84 59.52zM400.31 281c-23.13 15.47-48.44 23-77.34 23h-77.81A37 37 0 0 1 208 267.2v-77.39c0-41 14.28-72.7 47.78-106 57.69-57.39 139.86-38.82 179.4 5.7 61.93 69.83 14.31 158.66-34.87 191.49z\"]\n};\nvar faDrumstickBite = {\n prefix: 'far',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M471.15 57.65A170 170 0 0 0 348.19.07 172.2 172.2 0 0 0 222 49.79c-26.62 26.42-62 69.67-62 140.01v60.42L116.3 294c-1.93 1.88-5.75 1-7.75.17A79.19 79.19 0 0 0 23.22 423.7a76.41 76.41 0 0 0 43.57 21.59 76.39 76.39 0 0 0 21.57 43.55 79.19 79.19 0 0 0 129.58-85.33c-1-2.5-1.56-6 .16-7.75L261.89 352H323a189.07 189.07 0 0 0 50.76-6.94A24 24 0 0 0 388.29 310c-19.38-33.91-14.6-75.9 11.63-102.15 21-21 51.48-28.58 81.7-20.23A24 24 0 0 0 512 164.24c-.38-40.09-14.5-76.95-40.85-106.59zM173.37 421.34A31.07 31.07 0 0 1 144.43 464c-12 0-27.64-7.82-30.11-25.38l-5-35.81-35.81-5.05C56 395.28 48 379.7 48 367.65a31.13 31.13 0 0 1 42.5-29 60.4 60.4 0 0 0 22.5 4.42 52.77 52.77 0 0 0 37.28-15.17l20.46-20.47a85 85 0 0 0 34 33.87c-21.21 21.15-18.74 18.7-20.59 20.52-15.23 15.24-19.36 38.05-10.78 59.52zM366 173.92c-33.85 33.86-45.38 83.82-32.16 129.66-3.59.27-7.16.41-10.78.41H245.2A37 37 0 0 1 208 267.2v-77.4c0-41 14.29-72.7 47.79-106 57.7-57.39 139.9-38.81 179.44 5.7a112.62 112.62 0 0 1 25.07 46.91 128.69 128.69 0 0 0-94.3 37.51z\"]\n};\nvar faDryer = {\n prefix: 'far',\n iconName: 'dryer',\n icon: [448, 512, [], \"f861\", \"M384 0H64A64 64 0 0 0 0 64v416a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a64 64 0 0 0-64-64zm16 464H48V64a16 16 0 0 1 16-16h320a16 16 0 0 1 16 16zM128 104a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm56 24a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm40 32a136 136 0 1 0 136 136 136 136 0 0 0-136-136zm-25.5 179.93c6.59 6.17 15.25 14.28 17.71 28.13a6.94 6.94 0 0 1-7.07 7.94h-14.5a7.05 7.05 0 0 1-6.83-5.06c-1.21-4.29-4.25-7.3-9.42-12.15-7.77-7.27-18.39-17.23-18.39-36.07s10.62-28.83 18.39-36.11c7-6.54 10.06-9.75 10.06-17.25s-3.09-10.72-10.06-17.25c-6.6-6.19-15.26-14.3-17.71-28.17a6.94 6.94 0 0 1 7.06-7.94h14.51a7 7 0 0 1 6.82 5.07c1.22 4.3 4.25 7.33 9.43 12.18 7.76 7.28 18.39 17.24 18.39 36.11s-10.63 28.83-18.39 36.1c-7 6.54-10.05 9.76-10.05 17.26s3.08 10.67 10.05 17.21zm71.11 0c6.59 6.17 15.25 14.28 17.71 28.13a6.94 6.94 0 0 1-7.06 7.94h-14.51a7 7 0 0 1-6.82-5.06c-1.22-4.29-4.26-7.3-9.43-12.15-7.76-7.27-18.39-17.23-18.39-36.07s10.63-28.83 18.39-36.11c7-6.54 10.05-9.75 10.05-17.25s-3.08-10.72-10.05-17.25c-6.59-6.19-15.25-14.3-17.71-28.17a6.94 6.94 0 0 1 7.06-7.94h14.51a7 7 0 0 1 6.82 5.07c1.22 4.3 4.25 7.33 9.43 12.18 7.77 7.28 18.39 17.24 18.39 36.11s-10.62 28.83-18.39 36.1c-7 6.54-10.06 9.76-10.06 17.26s3.09 10.67 10.06 17.21z\"]\n};\nvar faDryerAlt = {\n prefix: 'far',\n iconName: 'dryer-alt',\n icon: [448, 512, [], \"f862\", \"M224 160a136 136 0 1 0 136 136 136 136 0 0 0-136-136zm0 224c-40.15 0-73.73-27.18-84.25-64H176a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-36.25c10.52-36.82 44.1-64 84.25-64a88 88 0 0 1 0 176zm-96-280a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm56 24a24 24 0 1 0-24-24 24 24 0 0 0 24 24zM384 0H64A64 64 0 0 0 0 64v416a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a64 64 0 0 0-64-64zm16 464H48V64a16 16 0 0 1 16-16h320a16 16 0 0 1 16 16z\"]\n};\nvar faDuck = {\n prefix: 'far',\n iconName: 'duck',\n icon: [576, 512, [], \"f6d8\", \"M416 144c0-8.84-7.16-16-16-16s-16 7.16-16 16 7.16 16 16 16 16-7.16 16-16zm48 96c61.86 0 112-50.14 112-112h-65.57c-.46-3.32-.6-6.58-1.36-9.95-9.15-40.61-41.97-73.7-82.54-83-9-2.07-17.88-3.05-26.53-3.05-61.86 0-112 50.14-112 112v80h-54.23c-39 0-78.18-13.76-104.79-42.28-3.96-4.25-8.94-6.14-13.82-6.14-9.78 0-19.16 7.59-19.16 19.06 0 94.71 72.21 178.39 164.58 188.02 9.47.99 17.77-6.49 17.77-16.01v-16.09c0-8.02-5.94-14.86-13.9-15.77-45.77-5.2-85.53-35.7-105.91-77.49 23.38 9.37 48.83 14.27 75.24 14.27L336 272V144c0-35.29 28.71-64 64-64 5.19 0 10.5.62 15.79 1.83 22.66 5.2 41.32 23.99 46.46 46.77 7.9 35.06-11.85 61.87-34.92 72.89L400 214.54v71.63l11.86 13.57c8.89 10.18 19.61 27.21 20.12 50.54.43 19.57-7.61 38.82-22.64 54.19-17.12 17.5-40.59 27.54-64.39 27.54h-91.17c-6.03 0-12.1-.31-18.66-.97-88.83-7.9-163.37-73.51-183.76-159.04h29.28a190.546 190.546 0 0 1-14.15-48H32.25C12.96 224-2.39 241.03.31 260.13 16.82 376.94 112.22 468.3 230.87 478.84c7.53.77 15.18 1.16 22.91 1.16h91.17c71.96 0 136.61-58.84 135.02-130.78-.69-31.13-12.86-59.21-31.97-81.07V240h16z\"]\n};\nvar faDumbbell = {\n prefix: 'far',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M632 224h-24v-72c0-30.9-25.1-56-56-56h-32c-2.7 0-5.4.4-8 .8V88c0-30.9-25.1-56-56-56h-32c-30.9 0-56 25.1-56 56v136h-96V88c0-30.9-25.1-56-56-56h-32c-30.9 0-56 25.1-56 56v8.8c-2.6-.4-5.3-.8-8-.8H88c-30.9 0-56 25.1-56 56v72H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v72c0 30.9 25.1 56 56 56h32c2.7 0 5.4-.4 8-.8v8.8c0 30.9 25.1 56 56 56h32c30.9 0 56-25.1 56-56V288h96v136c0 30.9 25.1 56 56 56h32c30.9 0 56-25.1 56-56v-8.8c2.6.4 5.3.8 8 .8h32c30.9 0 56-25.1 56-56v-72h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM120 368H88c-4.4 0-8-3.6-8-8V152c0-4.4 3.6-8 8-8h32c4.4 0 8 3.6 8 8v208c0 4.4-3.6 8-8 8zm104 56c0 4.4-3.6 8-8 8h-32c-4.4 0-8-3.6-8-8V88c0-4.4 3.6-8 8-8h32c4.4 0 8 3.6 8 8v336zm240 0c0 4.4-3.6 8-8 8h-32c-4.4 0-8-3.6-8-8V88c0-4.4 3.6-8 8-8h32c4.4 0 8 3.6 8 8v336zm96-64c0 4.4-3.6 8-8 8h-32c-4.4 0-8-3.6-8-8V152c0-4.4 3.6-8 8-8h32c4.4 0 8 3.6 8 8v208z\"]\n};\nvar faDumpster = {\n prefix: 'far',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM404.5 32H304v128h126.1L404.5 32zM560 224h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h26l22 176v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l22-176h26c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-90.4 176H106.4l-20-160h403.3l-20.1 160zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zM272 32H171.5l-25.6 128H272V32z\"]\n};\nvar faDumpsterFire = {\n prefix: 'far',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zm42.6 0c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM272 32H171.5l-25.6 128H272V32zM106.4 400l-20-160h225.3c7.9-15.7 17.6-31.9 28.9-48H32l4 32H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h26l22 176v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-12.8-14.3-23.5-30.4-31.6-48H106.4zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm535.1 3.2c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zM480 432c-61.8 0-112-49.5-112-110.4 0-22.6 24.9-74.7 72.2-126.4 22.4 23.7 30.5 35.7 68.5 86.1 40.6-47.8 39.1-46.1 41.1-48.4 26.4 35.3 42.2 74 42.2 88.8 0 60.8-50.2 110.3-112 110.3z\"]\n};\nvar faDungeon = {\n prefix: 'far',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M512 295.43c0-8.47-1.91-16.51-5.33-23.7 3.66-7.9 5.48-16.63 5.14-25.42-1.32-35.2-9.77-69.19-25.09-101-4.32-8.97-10.97-16.45-19.02-21.85-1.4-9.57-5.29-18.7-11.41-26.4-21.33-26.84-47.35-48.81-77.33-65.3a55.498 55.498 0 0 0-26.64-6.84c-.44 0-.88 0-1.31.02-6.72-7.04-15.24-12.27-24.74-15C303.32 3.35 279.67 0 256 0s-47.32 3.35-70.29 9.95c-9.49 2.72-18 7.95-24.72 14.99-.44-.01-.88-.02-1.31-.02-9.29 0-18.49 2.36-26.62 6.83-29.99 16.5-56.01 38.47-77.35 65.32a55.208 55.208 0 0 0-11.41 26.39c-8.05 5.39-14.7 12.87-19.02 21.84C9.95 177.12 1.51 211.1.18 246.32c-.33 8.77 1.48 17.5 5.14 25.4A55.223 55.223 0 0 0 0 295.43v57.14c0 8.37 1.86 16.31 5.2 23.43-3.34 7.12-5.2 15.06-5.2 23.43v57.14C0 487.13 24.87 512 55.43 512h401.14c30.56 0 55.43-24.87 55.43-55.43v-57.14c0-8.37-1.86-16.31-5.2-23.43 3.33-7.12 5.2-15.06 5.2-23.43v-57.14zM112 456.57c0 4.1-3.33 7.43-7.43 7.43H55.43c-4.1 0-7.43-3.33-7.43-7.43v-57.14c0-4.1 3.33-7.43 7.43-7.43h49.14c4.1 0 7.43 3.33 7.43 7.43v57.14zm0-104c0 4.1-3.33 7.43-7.43 7.43H55.43c-4.1 0-7.43-3.33-7.43-7.43v-57.14c0-4.1 3.33-7.43 7.43-7.43h49.14c4.1 0 7.43 3.33 7.43 7.43v57.14zm21.22-148.4c-5.98 13.92-9.85 28.93-10.74 44.79-.22 3.92-3.26 7.04-7.19 7.04H55.81c-4.25 0-7.82-3.62-7.66-7.86 1.1-29.28 8.33-57 20.37-81.99 1.29-2.67 4.01-4.17 6.8-4.17 1.39 0 2.8.37 4.05 1.15l51.11 31.94c3.09 1.93 4.18 5.75 2.74 9.1zm16.94-33.11c-1.3 0-2.6-.35-3.79-1.09L95.3 138.05c-3.78-2.36-4.79-7.62-2.02-11.11 17.19-21.62 38.54-39.72 62.89-53.12a7.23 7.23 0 0 1 3.5-.89c3.03 0 5.99 1.85 7.17 4.86l22.1 56.24c1.31 3.33-.03 7-3.07 8.89a133.5 133.5 0 0 0-30.09 25.55c-1.47 1.68-3.53 2.59-5.62 2.59zM208 456c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V203.13c8.16-12.3 19.22-22.32 32-29.78V456zm64 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V161.62c5.23-.89 10.52-1.62 16-1.62s10.77.73 16 1.62V456zm16.88-329.27c-.64 0-1.3-.08-1.94-.24-10.99-2.81-20.99-4.2-30.95-4.2-10.02 0-20 1.41-30.92 4.2-.65.17-1.3.25-1.95.25-2.98 0-5.79-1.7-6.91-4.56l-22.04-56.09c-1.6-4.08.59-8.79 4.8-10C217.1 50.87 236.21 48 256 48s38.9 2.87 57.03 8.08c4.21 1.21 6.4 5.92 4.8 10l-22.04 56.1c-1.12 2.86-3.93 4.55-6.91 4.55zM336 456c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V173.36c12.78 7.46 23.84 17.47 32 29.78V456zm25.84-284.94c-2.08 0-4.14-.91-5.62-2.6a133.758 133.758 0 0 0-30.09-25.55c-3.04-1.89-4.38-5.56-3.07-8.89l22.1-56.24c1.18-3.01 4.13-4.86 7.17-4.86 1.19 0 2.39.28 3.5.89a208.882 208.882 0 0 1 62.89 53.12c2.77 3.49 1.76 8.75-2.02 11.11l-51.07 31.92c-1.19.75-2.5 1.1-3.79 1.1zm27.68 77.9c-.89-15.85-4.76-30.87-10.74-44.79-1.44-3.35-.35-7.17 2.74-9.1l51.11-31.94a7.639 7.639 0 0 1 4.05-1.15c2.79 0 5.51 1.5 6.8 4.17 12.04 24.99 19.27 52.71 20.37 81.99.16 4.24-3.41 7.86-7.66 7.86H396.7c-3.92 0-6.96-3.12-7.18-7.04zM464 456.57c0 4.1-3.33 7.43-7.43 7.43h-49.14c-4.1 0-7.43-3.33-7.43-7.43v-57.14c0-4.1 3.33-7.43 7.43-7.43h49.14c4.1 0 7.43 3.33 7.43 7.43v57.14zm0-104c0 4.1-3.33 7.43-7.43 7.43h-49.14c-4.1 0-7.43-3.33-7.43-7.43v-57.14c0-4.1 3.33-7.43 7.43-7.43h49.14c4.1 0 7.43 3.33 7.43 7.43v57.14z\"]\n};\nvar faEar = {\n prefix: 'far',\n iconName: 'ear',\n icon: [384, 512, [], \"f5f0\", \"M192 92c-55.12 0-100 44.86-100 100 0 37.5 30.5 68 68 68 15.44 0 28 12.56 28 28s-12.56 28-28 28h-20c-6.62 0-12 5.39-12 12v16c0 6.61 5.38 12 12 12h20c37.5 0 68-30.5 68-68s-30.5-68-68-68c-15.44 0-28-12.56-28-28 0-33.08 26.91-60 60-60s60 26.92 60 60v20c0 6.61 5.38 12 12 12h16c6.62 0 12-5.39 12-12v-20c0-55.14-44.88-100-100-100zm0-92C85.96 0 0 85.96 0 192v176c0 79.53 64.47 144 144 144s144-64.47 144-144v-9.9c57.33-33.21 96-95.08 96-166.1C384 85.96 298.04 0 192 0zm71.94 316.57L240 330.44v37.57c0 52.93-43.06 96-96 96s-96-43.07-96-96V192c0-79.4 64.6-144 144-144s144 64.6 144 144c0 51.09-27.61 98.82-72.06 124.57z\"]\n};\nvar faEarMuffs = {\n prefix: 'far',\n iconName: 'ear-muffs',\n icon: [640, 512, [], \"f795\", \"M621.4 305.2c-6.3-39.7-43.5-50-44.4-50.2-13.8-18.4-32.2-22.3-33.1-22.6V224C544 100.5 443.5.1 320 0 196.5.1 96 100.5 96 224v8.4c-.9.3-19.2 4.2-33.1 22.6-.9.3-38 10.5-44.4 50.2-15 15-23.5 38.8-15.3 63.2-7.8 24.2.5 48 15.7 63 5.2 30.3 28.2 45 44.9 50.1.5.7 23.7 32.6 66 23.9 8.9 4.3 18.7 6.6 29 6.6 36 0 65.3-28.3 65.3-63.1 0-6.9-1.2-13.7-3.6-20.2 6.4-17.6 2.8-32.9.2-40.5 6.1-17.6 2.6-32.7 0-40.3 2.7-7.6 6.2-22.8-.2-40.5 2.4-6.5 3.6-13.3 3.6-20.2 0-34.8-29.3-63.1-65.3-63.1h-14.7c0-97 78.9-176 176-176 97 0 176 79 176 176h-14.7c-36 0-65.3 28.3-65.3 63.1 0 6.9 1.2 13.7 3.6 20.2-6.4 17.6-2.8 32.9-.2 40.5-2.6 7.6-6.1 22.7 0 40.3-2.6 7.6-6.2 22.8.2 40.5-2.4 6.5-3.6 13.3-3.6 20.2 0 34.8 29.3 63.1 65.3 63.1 10.2 0 20.1-2.3 29-6.6 42.3 8.7 65.5-23.2 66-23.9 16.7-5.1 39.7-19.8 44.9-50.1 15.2-15 23.5-38.7 15.7-63 8-24.4-.5-48.2-15.6-63.2zM167.5 314c11.7 10.1 11.1 26.5 0 36 11.7 10.1 11.1 26.5 0 36 11.7 10.1 11.1 26.5 0 36 24.5 21-7.7 57.1-31.4 35.6-16 14.5-41.3 2.5-39.7-19.3-20.5 7.7-38.2-13-30.5-31.6-16.9-4.5-24.1-24.8-11.5-38.7-12.6-13.9-5.4-34.2 11.5-38.8-7.7-18.5 9.7-39.3 30.5-31.6-1.6-21.8 23.6-33.9 39.7-19.3 23.7-21.5 55.8 14.7 31.4 35.7zm406.6 92.8c7.8 18.6-9.9 39.2-30.5 31.6 1.6 21.8-23.6 33.9-39.7 19.3-23.7 21.4-55.9-14.7-31.4-35.7-11.1-9.5-11.7-25.9 0-36-11.1-9.5-11.7-25.9 0-36-11.1-9.5-11.7-25.9 0-36-24.4-21 7.7-57.2 31.4-35.6 16-14.5 41.3-2.5 39.7 19.3 20.7-7.8 38.2 13.1 30.5 31.6 16.9 4.6 24.1 24.9 11.5 38.8 12.6 13.8 5.4 34.1-11.5 38.7z\"]\n};\nvar faEclipse = {\n prefix: 'far',\n iconName: 'eclipse',\n icon: [640, 512, [], \"f749\", \"M448 64c-106 0-192 86-192 192s86 192 192 192 192-86 192-192S554 64 448 64zm0 336c-79.4 0-144-64.6-144-144s64.6-144 144-144 144 64.6 144 144-64.6 144-144 144zm-192 58l-51.9-77-90.9 17.6 17.6-91.2-76.8-52 76.8-52-17.6-91.2 91 17.6L256 53l31.7 46.9c11.2-11.5 23.7-21.9 37.2-30.8l-35.3-52.4c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7C98 60.4 84.5 64.5 75 74.1s-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5C6.6 229.5 0 242 0 255.5s6.7 26 17.8 33.5l59.8 40.5-13.7 71c-2.6 13.2 1.6 26.8 11.1 36.3 9.5 9.5 22.9 13.7 36.3 11.1l70.8-13.7 40.4 59.9C230 505.3 242.6 512 256 512s26-6.7 33.5-17.8l34.8-51.6c-13.5-9-25.8-19.4-37.1-30.9L256 458zm-26.4-251.1c4.3-19.1 11-37.3 19.9-54.3-54.3 3.5-97.5 48.3-97.5 103.4s43.2 99.9 97.5 103.3c-8.9-16.9-15.6-35.1-19.9-54.3-17.5-9.5-29.6-27.8-29.6-49.1s12.1-39.5 29.6-49z\"]\n};\nvar faEclipseAlt = {\n prefix: 'far',\n iconName: 'eclipse-alt',\n icon: [512, 512, [], \"f74a\", \"M326.1 309.2c-46.5 8.9-89.3-26.8-89.3-73.9 0-27.1 14.5-52 38-65.4 3.6-2.1 2.7-7.6-1.4-8.3-5.8-1.1-11.6-1.6-17.5-1.6-52.9 0-95.9 42.9-95.9 96 0 53 42.9 96 95.9 96 29.6 0 56.6-13.5 74.5-35.5 2.7-3.3-.2-8.1-4.3-7.3zm168.1-87.3l-59.8-40.5 13.7-71c2.6-13.2-1.6-26.8-11.1-36.4-9.6-9.5-23.2-13.7-36.2-11.1l-70.9 13.7-40.4-59.9c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7C98 60.4 84.5 64.5 75 74.1c-9.5 9.6-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5C6.6 229.5 0 242 0 255.5s6.7 26 17.8 33.5l59.8 40.5-13.7 71c-2.6 13.2 1.6 26.8 11.1 36.3 9.5 9.5 22.9 13.7 36.3 11.1l70.8-13.7 40.4 59.9C230 505.3 242.6 512 256 512s26-6.7 33.5-17.8l40.4-59.9 70.9 13.7c13.4 2.7 26.8-1.6 36.3-11.1 9.5-9.5 13.6-23.1 11.1-36.3l-13.7-71 59.8-40.5c11.1-7.5 17.8-20.1 17.8-33.5-.1-13.6-6.7-26.1-17.9-33.7zm-112.9 85.6l17.6 91.2-91-17.6L256 458l-51.9-77-90.9 17.6 17.6-91.2-76.8-52 76.8-52-17.6-91.2 91 17.6L256 53l51.9 76.9 91-17.6-17.6 91.1 76.8 52-76.8 52.1z\"]\n};\nvar faEdit = {\n prefix: 'far',\n iconName: 'edit',\n icon: [576, 512, [], \"f044\", \"M402.3 344.9l32-32c5-5 13.7-1.5 13.7 5.7V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h273.5c7.1 0 10.7 8.6 5.7 13.7l-32 32c-1.5 1.5-3.5 2.3-5.7 2.3H48v352h352V350.5c0-2.1.8-4.1 2.3-5.6zm156.6-201.8L296.3 405.7l-90.4 10c-26.2 2.9-48.5-19.2-45.6-45.6l10-90.4L432.9 17.1c22.9-22.9 59.9-22.9 82.7 0l43.2 43.2c22.9 22.9 22.9 60 .1 82.8zM460.1 174L402 115.9 216.2 301.8l-7.3 65.3 65.3-7.3L460.1 174zm64.8-79.7l-43.2-43.2c-4.1-4.1-10.8-4.1-14.8 0L436 82l58.1 58.1 30.9-30.9c4-4.2 4-10.8-.1-14.9z\"]\n};\nvar faEgg = {\n prefix: 'far',\n iconName: 'egg',\n icon: [384, 512, [], \"f7fb\", \"M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0zm0 464c-79.4 0-144-64.6-144-144 0-117.41 90.58-272 144-272s144 154.59 144 272c0 79.4-64.6 144-144 144z\"]\n};\nvar faEggFried = {\n prefix: 'far',\n iconName: 'egg-fried',\n icon: [512, 512, [], \"f7fc\", \"M478.32 150.45c-39.5-40.71-100.73-46.29-144.39-82.24S255.63 0 200.54 0a157.74 157.74 0 0 0-25.15 2.1c-86.78 14-111.71 80-125 157.13-11.1 64.34-54.41 127-50 192.91s52.83 128.45 114.97 150.75c17.64 6.32 33.83 9.11 48.92 9.11 64.66 0 108.94-51.18 155.72-95.56 43.68-41.44 93.4-37.72 140.93-73.89 56.28-42.82 71.71-140.55 17.39-192.1zm-46.43 153.84C415.7 316.61 398.22 323 378 330.39c-28.26 10.33-60.29 22-91 51.18-5.51 5.23-11 10.55-16.48 15.88C233.77 433.13 202.05 464 164.28 464c-10.22 0-20.92-2.06-32.72-6.29C87.09 441.7 51.26 395 48.2 349c-1.92-29 10.31-61.4 23.26-95.69 10.3-27.28 21-55.49 26.19-85.85C111.48 87.34 133 57.6 183 49.54a110.62 110.62 0 0 1 17.52-1.49c32.33 0 54.3 17 93.51 49.5l9.39 7.77c25.45 21 54.09 33.12 79.36 43.85 25 10.6 46.52 19.75 61.08 34.76l.69.71.72.68c17.78 16.88 19.27 40.81 18.57 53.57-1.39 26.03-13.95 51.7-31.95 65.4zM224 128.14c-61.72 0-112 50.3-112 112.13s50.24 112.11 112 112.11 112-50.3 112-112.11-50.21-112.13-112-112.13zm0 72.07a40.08 40.08 0 0 0-40 40.06 16 16 0 1 1-32 0 72.13 72.13 0 0 1 72-72.09 16 16 0 0 1 0 32z\"]\n};\nvar faEject = {\n prefix: 'far',\n iconName: 'eject',\n icon: [448, 512, [], \"f052\", \"M400 320H48c-26.51 0-48 21.49-48 48v64c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-64c0-26.51-21.49-48-48-48zm0 112H48v-64h352v64zM48.048 304h351.895c42.637 0 64.151-51.731 33.941-81.941l-175.943-176c-18.745-18.745-49.137-18.746-67.882 0l-175.952 176C-16.042 252.208 5.325 304 48.048 304zM224 80l176 176H48L224 80z\"]\n};\nvar faElephant = {\n prefix: 'far',\n iconName: 'elephant',\n icon: [640, 512, [], \"f6da\", \"M528 127.97c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16zm-16-96h-61.16c-3.64-3.77-7.46-7.4-11.71-10.66-25.97-19.88-59.44-26.22-91.82-17.46-18.04 4.9-33.88 14.96-46.49 28.11H192C85.96 31.97 0 117.93 0 223.98v112.01c0 8.84 7.16 16 16 16h16V480c0 17.67 14.33 32 32 32h80c17.67 0 32-14.33 32-32v-72.84c18.48 5.11 66.55 16.98 128 0V480c0 17.67 14.33 32 32 32h80c17.67 0 32-14.33 32-32V287.98h144v88.01c0 13.24-10.78 24-24 24s-24-10.77-24-24v-8c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v4.78c0 37.58 27.38 71.2 64.78 74.87 42.91 4.21 79.22-29.56 79.22-71.65V159.97c0-70.69-57.31-128-128-128zM400 464h-48V344.09c-120.67 33.34-111.08 31.2-224 0V464H80V303.98H48v-80.01c0-79.54 64.47-144.01 144-144.01h83.24c-6.11 26.93-2.43 54.18 11.54 77.47 11.53 19.19 28.91 34.05 49.22 42.53 0 40.15 27.18 73.73 64 84.26V464zm192-256.02c0 17.67-14.33 32-32 32H424c-22.06 0-40-17.94-40-40v-37.24c-22.65-4.59-41.89-6.4-56.06-30-16.43-27.46-7.38-71.86 31.94-82.57 29.16-7.91 55.52 6.33 66.66 29.8H512c44.11 0 80 35.89 80 80.01v48z\"]\n};\nvar faEllipsisH = {\n prefix: 'far',\n iconName: 'ellipsis-h',\n icon: [512, 512, [], \"f141\", \"M304 256c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48 48 21.5 48 48zm120-48c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-336 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z\"]\n};\nvar faEllipsisHAlt = {\n prefix: 'far',\n iconName: 'ellipsis-h-alt',\n icon: [512, 512, [], \"f39b\", \"M256 184c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 96c-13.2 0-24-10.8-24-24s10.8-24 24-24 24 10.8 24 24-10.8 24-24 24zm176-96c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 96c-13.2 0-24-10.8-24-24s10.8-24 24-24 24 10.8 24 24-10.8 24-24 24zM80 184c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 96c-13.2 0-24-10.8-24-24s10.8-24 24-24 24 10.8 24 24-10.8 24-24 24z\"]\n};\nvar faEllipsisV = {\n prefix: 'far',\n iconName: 'ellipsis-v',\n icon: [128, 512, [], \"f142\", \"M64 208c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM16 104c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm0 304c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48z\"]\n};\nvar faEllipsisVAlt = {\n prefix: 'far',\n iconName: 'ellipsis-v-alt',\n icon: [192, 512, [], \"f39c\", \"M96 184c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 96c-13.2 0-24-10.8-24-24s10.8-24 24-24 24 10.8 24 24-10.8 24-24 24zm0 80c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 96c-13.2 0-24-10.8-24-24s10.8-24 24-24 24 10.8 24 24-10.8 24-24 24zm0-304c39.8 0 72-32.2 72-72S135.8 8 96 8 24 40.2 24 80s32.2 72 72 72zm0-96c13.2 0 24 10.8 24 24s-10.8 24-24 24-24-10.8-24-24 10.8-24 24-24z\"]\n};\nvar faEmptySet = {\n prefix: 'far',\n iconName: 'empty-set',\n icon: [448, 512, [], \"f656\", \"M443.31 48L432 36.69c-6.25-6.25-16.38-6.25-22.63 0l-67.77 67.77C309.09 79.19 268.36 64 224 64 117.96 64 32 149.96 32 256c0 44.36 15.19 85.09 40.46 117.6L4.69 441.38c-6.25 6.25-6.25 16.38 0 22.63L16 475.31c6.25 6.25 16.38 6.25 22.63 0l67.77-67.77C138.9 432.81 179.64 448 224 448c106.04 0 192-85.96 192-192 0-44.36-15.19-85.09-40.46-117.6l67.77-67.77c6.25-6.25 6.25-16.39 0-22.63zM80 256c0-79.4 64.6-144 144-144 31.04 0 59.64 10.11 83.18 26.88l-200.31 200.3C90.1 315.64 80 287.05 80 256zm288 0c0 79.4-64.6 144-144 144-31.05 0-59.64-10.1-83.19-26.88l200.31-200.3C357.9 196.36 368 224.96 368 256z\"]\n};\nvar faEngineWarning = {\n prefix: 'far',\n iconName: 'engine-warning',\n icon: [640, 512, [], \"f5f2\", \"M320 32C196.3 32 96 132.3 96 256c0 123.76 100.3 224 224 224s224-100.24 224-224c0-123.7-100.3-224-224-224zm0 400c-97.05 0-176-78.95-176-176S222.95 80 320 80s176 78.95 176 176-78.95 176-176 176zm0-112c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm22.32-192h-44.64c-9.47 0-16.86 8.17-15.92 17.59l12.8 128c.82 8.18 7.7 14.41 15.92 14.41h19.04c8.22 0 15.1-6.23 15.92-14.41l12.8-128c.94-9.42-6.45-17.59-15.92-17.59zM48 256c0-59.53 19.55-117.38 55.36-164.51 5.18-6.81 4.48-16.31-2.03-21.86l-12.2-10.41c-6.91-5.9-17.62-5.06-23.15 2.15C23.32 117.02 0 185.5 0 256c0 70.47 23.32 138.96 65.96 194.62 5.53 7.21 16.23 8.05 23.15 2.16l12.19-10.4c6.51-5.55 7.21-15.04 2.04-21.86C67.55 373.37 48 315.53 48 256zM572.73 59.71c-5.58-7.18-16.29-7.95-23.17-2l-12.15 10.51c-6.47 5.6-7.1 15.09-1.88 21.87C572.04 137.47 592 195.81 592 256c0 60.23-19.96 118.57-56.46 165.95-5.22 6.78-4.59 16.27 1.88 21.87l12.15 10.5c6.87 5.95 17.59 5.18 23.17-2C616.21 396.38 640 327.31 640 256c0-71.27-23.79-140.34-67.27-196.29z\"]\n};\nvar faEnvelope = {\n prefix: 'far',\n iconName: 'envelope',\n icon: [512, 512, [], \"f0e0\", \"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'far',\n iconName: 'envelope-open',\n icon: [512, 512, [], \"f2b6\", \"M494.586 164.516c-4.697-3.883-111.723-89.95-135.251-108.657C337.231 38.191 299.437 0 256 0c-43.205 0-80.636 37.717-103.335 55.859-24.463 19.45-131.07 105.195-135.15 108.549A48.004 48.004 0 0 0 0 201.485V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V201.509a48 48 0 0 0-17.414-36.993zM464 458a6 6 0 0 1-6 6H54a6 6 0 0 1-6-6V204.347c0-1.813.816-3.526 2.226-4.665 15.87-12.814 108.793-87.554 132.364-106.293C200.755 78.88 232.398 48 256 48c23.693 0 55.857 31.369 73.41 45.389 23.573 18.741 116.503 93.493 132.366 106.316a5.99 5.99 0 0 1 2.224 4.663V458zm-31.991-187.704c4.249 5.159 3.465 12.795-1.745 16.981-28.975 23.283-59.274 47.597-70.929 56.863C336.636 362.283 299.205 400 256 400c-43.452 0-81.287-38.237-103.335-55.86-11.279-8.967-41.744-33.413-70.927-56.865-5.21-4.187-5.993-11.822-1.745-16.981l15.258-18.528c4.178-5.073 11.657-5.843 16.779-1.726 28.618 23.001 58.566 47.035 70.56 56.571C200.143 320.631 232.307 352 256 352c23.602 0 55.246-30.88 73.41-45.389 11.994-9.535 41.944-33.57 70.563-56.568 5.122-4.116 12.601-3.346 16.778 1.727l15.258 18.526z\"]\n};\nvar faEnvelopeOpenDollar = {\n prefix: 'far',\n iconName: 'envelope-open-dollar',\n icon: [512, 512, [], \"f657\", \"M230.72 233.72l42.19 11.44c4.19 1.14 7.09 4.55 7.09 8.3 0 4.8-4.5 8.7-10.06 8.7H243.6c-4.15 0-8.23-1.04-11.77-2.95-3.08-1.67-6.84-1.37-9.24 1.18l-12.07 12.73c-3.11 3.28-2.6 8.64 1.13 11.19 8.3 5.65 18.06 8.88 28.35 9.52V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-10.25c22.18-1.1 40-18.57 40-40.3 0-18.17-12.62-34.28-30.72-39.17l-42.19-11.44c-4.19-1.14-7.09-4.55-7.09-8.3 0-4.8 4.5-8.7 10.06-8.7h26.34c4.15 0 8.23 1.04 11.77 2.95 3.08 1.66 6.84 1.37 9.24-1.18l12.07-12.73c3.11-3.28 2.6-8.64-1.13-11.19-8.3-5.65-18.06-8.88-28.35-9.52V144c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v10.25c-22.18 1.1-40 18.57-40 40.3 0 18.17 12.62 34.28 30.72 39.17zm263.87-69.2c-1.52-1.26-13.86-11.2-30.59-24.66V96c0-26.51-21.49-48-48-48h-66.13C327.24 28.85 293.77 0 256 0c-37.65 0-70.9 28.63-93.85 48H96c-26.51 0-48 21.49-48 48v43.85c-16.81 13.52-29.15 23.46-30.48 24.56A48.002 48.002 0 0 0 0 201.48V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V201.51c0-14.31-6.38-27.88-17.41-36.99zM96 96h320v156.66c-36.26 29.32-78.69 63.67-86.59 69.95C311.25 337.12 279.6 368 256 368c-23.69 0-55.86-31.37-73.41-45.39-7.9-6.28-50.33-40.64-86.59-69.97V96zm368 362c0 3.31-2.69 6-6 6H54c-3.31 0-6-2.69-6-6V275.56c38.96 31.48 95.95 77.65 104.66 84.58C174.71 377.76 212.55 416 256 416c43.21 0 80.64-37.72 103.34-55.86 9-7.15 65.84-53.19 104.66-84.56V458z\"]\n};\nvar faEnvelopeOpenText = {\n prefix: 'far',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M494.59 164.52c-1.52-1.26-13.86-11.2-30.59-24.66V96c0-26.51-21.49-48-48-48h-66.13C327.24 28.85 293.77 0 256 0c-37.65 0-70.9 28.63-93.85 48H96c-26.51 0-48 21.49-48 48v43.85c-16.81 13.52-29.15 23.46-30.48 24.56A48.002 48.002 0 0 0 0 201.48V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V201.51c0-14.31-6.38-27.88-17.41-36.99zM96 96h320v156.66c-36.26 29.32-78.69 63.67-86.59 69.95C311.25 337.12 279.6 368 256 368c-23.69 0-55.86-31.37-73.41-45.39-7.9-6.28-50.33-40.64-86.59-69.97V96zm368 362c0 3.31-2.69 6-6 6H54c-3.31 0-6-2.69-6-6V275.56c38.96 31.48 95.95 77.65 104.66 84.58C174.71 377.76 212.55 416 256 416c43.21 0 80.64-37.72 103.34-55.86 9-7.15 65.84-53.19 104.66-84.56V458zM176 192h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm176 64v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16z\"]\n};\nvar faEnvelopeSquare = {\n prefix: 'far',\n iconName: 'envelope-square',\n icon: [448, 512, [], \"f199\", \"M187.293 260.374C114.743 210.491 115.482 210.366 96 196v-12c0-13.255 10.745-24 24-24h208c13.255 0 24 10.745 24 24v12c-19.497 14.376-18.747 14.494-91.293 64.374-8.414 5.812-25.104 19.79-36.707 19.625-11.6.166-28.296-13.816-36.707-19.625zm91.563 26.355C267.519 294.575 247.377 312.105 224 312c-23.241.104-43.082-17.118-54.849-25.266-45.054-30.977-62.02-42.883-73.151-50.958V328c0 13.255 10.745 24 24 24h208c13.255 0 24-10.745 24-24v-92.224c-11.13 8.074-28.094 19.978-73.144 50.953zM448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-48 346V86a6 6 0 0 0-6-6H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6z\"]\n};\nvar faEquals = {\n prefix: 'far',\n iconName: 'equals',\n icon: [384, 512, [], \"f52c\", \"M368 304H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-160H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faEraser = {\n prefix: 'far',\n iconName: 'eraser',\n icon: [512, 512, [], \"f12d\", \"M497.94 273.94a48 48 0 0 0 0-67.88l-160-160a48 48 0 0 0-67.88 0l-256 256a48 48 0 0 0 0 67.88l96 96A48 48 0 0 0 144 480h356a12 12 0 0 0 12-12v-24a12 12 0 0 0-12-12H339.88l158.06-158.06zM304 80l160 160-103 103-160-160zM144 432l-96-96 119-119 160 160-55 55z\"]\n};\nvar faEthernet = {\n prefix: 'far',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16zm-32 208h-48V288h-32v112h-64V288h-32v112h-64V288h-32v112h-64V288H96v112H48V240h64v-64h64v-64h160v64h64v64h64v160z\"]\n};\nvar faEuroSign = {\n prefix: 'far',\n iconName: 'euro-sign',\n icon: [320, 512, [], \"f153\", \"M315.6 458.6l-6.5-29.4c-1.4-6.5-8-10.6-14.5-9.1-10.3 2.4-26.5 5.4-44.7 5.4-65.5 0-117-39.5-138.2-97.4h129.5c5.7 0 10.6-4 11.7-9.6l5-24c1.5-7.5-4.1-14.4-11.7-14.4h-148c-1.5-16.1-2.1-32.3-.6-48h162.5c5.7 0 10.6-4 11.7-9.5l5.1-24c1.6-7.5-4.1-14.5-11.7-14.5H108.1c21-58.4 72.5-98 140-98 14.7 0 28.9 2.1 38.2 3.8 6.2 1.1 12.2-2.6 13.8-8.7l7.9-29.6c1.8-6.8-2.5-13.6-9.4-14.9-11.4-2.1-29.4-4.7-49.3-4.7-100 0-179.7 64.1-205.9 152H12c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h23.1c-1.2 15.8-1 35.5.4 48H12c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h32.2c26 88.7 103.4 152 205 152 24.4 0 45.4-4.2 57.5-7.2 6.4-1.6 10.3-7.9 8.9-14.2z\"]\n};\nvar faExchange = {\n prefix: 'far',\n iconName: 'exchange',\n icon: [512, 512, [], \"f0ec\", \"M508.485 168.485l-100.375 100c-4.686 4.686-12.284 4.686-16.97 0l-19.626-19.626c-4.753-4.753-4.675-12.484.173-17.14L422.916 184H12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h410.916l-51.228-47.719c-4.849-4.656-4.927-12.387-.173-17.14l19.626-19.626c4.686-4.686 12.284-4.686 16.97 0l100.375 100c4.685 4.686 4.685 12.284-.001 16.97zm-504.97 192l100.375 100c4.686 4.686 12.284 4.686 16.97 0l19.626-19.626c4.753-4.753 4.675-12.484-.173-17.14L89.084 376H500c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12H89.084l51.228-47.719c4.849-4.656 4.927-12.387.173-17.14l-19.626-19.626c-4.686-4.686-12.284-4.686-16.97 0l-100.375 100c-4.686 4.686-4.686 12.284.001 16.97z\"]\n};\nvar faExchangeAlt = {\n prefix: 'far',\n iconName: 'exchange-alt',\n icon: [512, 512, [], \"f362\", \"M508.485 168.48l-96.16 96.16c-7.58 7.58-20.485 2.14-20.485-8.485L391.833 184H12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h379.833l.01-72.162c.001-10.683 12.949-16.022 20.485-8.485l96.156 96.156c4.687 4.686 4.688 12.285.001 16.971zM3.515 360.491l96.156 96.156c7.536 7.536 20.484 2.198 20.485-8.485l.01-72.162H500c6.627 0 12-5.373 12-12v-24c0-6.628-5.373-12-12-12H120.167l-.007-72.154c0-10.625-12.905-16.066-20.485-8.485l-96.16 96.16c-4.687 4.685-4.686 12.284 0 16.97z\"]\n};\nvar faExclamation = {\n prefix: 'far',\n iconName: 'exclamation',\n icon: [256, 512, [], \"f12a\", \"M173.854 48c6.874 0 12.343 5.763 11.984 12.628l-11.742 224c-.334 6.375-5.6 11.372-11.984 11.372H93.888c-6.383 0-11.65-4.997-11.984-11.372l-11.742-224C69.802 53.763 75.271 48 82.146 48h91.708M128 336c35.29 0 64 28.71 64 64s-28.71 64-64 64-64-28.71-64-64 28.71-64 64-64M173.854 0H82.146C47.881 0 20.427 28.783 22.228 63.141l11.742 224c.698 13.309 5.689 25.414 13.592 35.001C28.035 342.31 16 369.777 16 400c0 61.757 50.243 112 112 112s112-50.243 112-112c0-30.223-12.035-57.69-31.561-77.858a59.78 59.78 0 0 0 13.592-35.001l11.742-224C235.566 28.922 208.259 0 173.854 0z\"]\n};\nvar faExclamationCircle = {\n prefix: 'far',\n iconName: 'exclamation-circle',\n icon: [512, 512, [], \"f06a\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm42-104c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42zm-81.37-211.401l6.8 136c.319 6.387 5.591 11.401 11.985 11.401h41.17c6.394 0 11.666-5.014 11.985-11.401l6.8-136c.343-6.854-5.122-12.599-11.985-12.599h-54.77c-6.863 0-12.328 5.745-11.985 12.599z\"]\n};\nvar faExclamationSquare = {\n prefix: 'far',\n iconName: 'exclamation-square',\n icon: [448, 512, [], \"f321\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-48 346V86a6 6 0 0 0-6-6H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6zm-134-74c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42zm-81.37-211.401l6.8 136c.319 6.387 5.591 11.401 11.985 11.401h41.17c6.394 0 11.666-5.014 11.985-11.401l6.8-136c.343-6.854-5.122-12.599-11.985-12.599h-54.77c-6.863 0-12.328 5.745-11.985 12.599z\"]\n};\nvar faExclamationTriangle = {\n prefix: 'far',\n iconName: 'exclamation-triangle',\n icon: [576, 512, [], \"f071\", \"M248.747 204.705l6.588 112c.373 6.343 5.626 11.295 11.979 11.295h41.37a12 12 0 0 0 11.979-11.295l6.588-112c.405-6.893-5.075-12.705-11.979-12.705h-54.547c-6.903 0-12.383 5.812-11.978 12.705zM330 384c0 23.196-18.804 42-42 42s-42-18.804-42-42 18.804-42 42-42 42 18.804 42 42zm-.423-360.015c-18.433-31.951-64.687-32.009-83.154 0L6.477 440.013C-11.945 471.946 11.118 512 48.054 512H527.94c36.865 0 60.035-39.993 41.577-71.987L329.577 23.985zM53.191 455.002L282.803 57.008c2.309-4.002 8.085-4.002 10.394 0l229.612 397.993c2.308 4-.579 8.998-5.197 8.998H58.388c-4.617.001-7.504-4.997-5.197-8.997z\"]\n};\nvar faExpand = {\n prefix: 'far',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H48v100c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v24c0 6.6 5.4 12 12 12h100v100c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-24c-6.6 0-12 5.4-12 12v100H300c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-24c0-6.6-5.4-12-12-12H48V332c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"]\n};\nvar faExpandAlt = {\n prefix: 'far',\n iconName: 'expand-alt',\n icon: [448, 512, [], \"f424\", \"M448 56v95.005c0 21.382-25.851 32.09-40.971 16.971l-27.704-27.704-107.242 107.243c-4.686 4.686-12.284 4.686-16.971 0l-22.627-22.627c-4.686-4.686-4.686-12.284 0-16.971l107.243-107.243-27.704-27.704C296.905 57.851 307.613 32 328.995 32H424c13.255 0 24 10.745 24 24zM175.917 264.485L68.674 371.728 40.97 344.024C25.851 328.905 0 339.613 0 360.995V456c0 13.255 10.745 24 24 24h95.005c21.382 0 32.09-25.851 16.971-40.971l-27.704-27.704 107.243-107.243c4.686-4.686 4.686-12.284 0-16.971l-22.627-22.627c-4.687-4.685-12.285-4.685-16.971.001z\"]\n};\nvar faExpandArrows = {\n prefix: 'far',\n iconName: 'expand-arrows',\n icon: [448, 512, [], \"f31d\", \"M447.9 332l.1 136c0 6.6-5.4 12-12 12l-136-.1c-6.6 0-12-5.4-12-12v-27.8c0-6.7 5.5-12.1 12.2-12l61.4 2.3 1.4-1.4-139-139L85 429l1.4 1.4 61.4-2.3c6.7-.1 12.2 5.3 12.2 12v27.8c0 6.6-5.4 12-12 12L12 480c-6.6 0-12-5.4-12-12l.1-136c0-6.6 5.4-12 12-12h27.8c6.7 0 12.1 5.5 12 12.2l-2.3 61.4L51 395l139-139L51 117l-1.4 1.4 2.3 61.4c.1 6.7-5.3 12.2-12 12.2H12.1c-6.6 0-12-5.4-12-12L0 44c0-6.6 5.4-12 12-12l136 .1c6.6 0 12 5.4 12 12v27.8c0 6.7-5.5 12.1-12.2 12l-61.4-2.3L85 83l139 139L363 83l-1.4-1.4-61.4 2.3c-6.7.1-12.2-5.3-12.2-12V44.1c0-6.6 5.4-12 12-12l136-.1c6.6 0 12 5.4 12 12l-.1 136c0 6.6-5.4 12-12 12h-27.8c-6.7 0-12.1-5.5-12-12.2l2.3-61.4-1.4-1.4-139 139 139 139 1.4-1.4-2.3-61.4c-.1-6.7 5.3-12.2 12-12.2h27.8c6.6 0 12 5.4 12 12z\"]\n};\nvar faExpandArrowsAlt = {\n prefix: 'far',\n iconName: 'expand-arrows-alt',\n icon: [448, 512, [], \"f31e\", \"M252.3 256l121.4 121.4 53.8-53.8c7.6-7.6 20.5-2.2 20.5 8.5v136c0 6.6-5.4 12-12 12H300c-10.7 0-16-12.9-8.5-20.5l53.8-53.8L224 284.3 102.6 405.7l53.8 53.8c7.6 7.6 2.2 20.5-8.5 20.5h-136c-6.6 0-12-5.4-12-12V332c0-10.7 12.9-16 20.5-8.5l53.8 53.8L195.7 256 74.3 134.6l-53.8 53.8C12.9 196 0 190.7 0 180V44c0-6.6 5.4-12 12-12h136c10.7 0 16 12.9 8.5 20.5l-53.8 53.8L224 227.7l121.4-121.4-53.8-53.8C284 44.9 289.3 32 300 32h136c6.6 0 12 5.4 12 12v136c0 10.7-12.9 16-20.5 8.5l-53.8-53.8L252.3 256z\"]\n};\nvar faExpandWide = {\n prefix: 'far',\n iconName: 'expand-wide',\n icon: [512, 512, [], \"f320\", \"M0 212V88c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H48v100c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM352 76v24c0 6.6 5.4 12 12 12h100v100c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12V88c0-13.3-10.7-24-24-24H364c-6.6 0-12 5.4-12 12zm148 212h-24c-6.6 0-12 5.4-12 12v100H364c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V300c0-6.6-5.4-12-12-12zM160 436v-24c0-6.6-5.4-12-12-12H48V300c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"]\n};\nvar faExternalLink = {\n prefix: 'far',\n iconName: 'external-link',\n icon: [512, 512, [], \"f08e\", \"M497.6,0,334.4.17A14.4,14.4,0,0,0,320,14.57V47.88a14.4,14.4,0,0,0,14.69,14.4l73.63-2.72,2.06,2.06L131.52,340.49a12,12,0,0,0,0,17l23,23a12,12,0,0,0,17,0L450.38,101.62l2.06,2.06-2.72,73.63A14.4,14.4,0,0,0,464.12,192h33.31a14.4,14.4,0,0,0,14.4-14.4L512,14.4A14.4,14.4,0,0,0,497.6,0ZM432,288H416a16,16,0,0,0-16,16V458a6,6,0,0,1-6,6H54a6,6,0,0,1-6-6V118a6,6,0,0,1,6-6H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V304A16,16,0,0,0,432,288Z\"]\n};\nvar faExternalLinkAlt = {\n prefix: 'far',\n iconName: 'external-link-alt',\n icon: [512, 512, [], \"f35d\", \"M432,288H416a16,16,0,0,0-16,16V458a6,6,0,0,1-6,6H54a6,6,0,0,1-6-6V118a6,6,0,0,1,6-6H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V304A16,16,0,0,0,432,288ZM500,0H364a12,12,0,0,0-8.48,20.48l48.19,48.21L131.51,340.89a12,12,0,0,0,0,17l22.63,22.63a12,12,0,0,0,17,0l272.2-272.21,48.21,48.2A12,12,0,0,0,512,148V12A12,12,0,0,0,500,0Z\"]\n};\nvar faExternalLinkSquare = {\n prefix: 'far',\n iconName: 'external-link-square',\n icon: [448, 512, [], \"f14c\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h340a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-54-304l-136 .145c-6.627 0-12 5.373-12 12V167.9c0 6.722 5.522 12.133 12.243 11.998l58.001-2.141L99.515 340.485c-4.686 4.686-4.686 12.284 0 16.971l23.03 23.029c4.686 4.686 12.284 4.686 16.97 0l162.729-162.729-2.141 58.001c-.136 6.721 5.275 12.242 11.998 12.242h27.755c6.628 0 12-5.373 12-12L352 140c0-6.627-5.373-12-12-12z\"]\n};\nvar faExternalLinkSquareAlt = {\n prefix: 'far',\n iconName: 'external-link-square-alt',\n icon: [448, 512, [], \"f360\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h340a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-54-304H204.015c-10.658 0-16.039 12.93-8.485 20.485l48.187 48.201L99.515 340.888c-4.686 4.686-4.686 12.284 0 16.971l22.627 22.627c4.687 4.686 12.285 4.686 16.971 0l144.201-144.201 48.201 48.192c7.513 7.513 20.485 2.235 20.485-8.485V140c0-6.627-5.373-12-12-12z\"]\n};\nvar faEye = {\n prefix: 'far',\n iconName: 'eye',\n icon: [576, 512, [], \"f06e\", \"M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z\"]\n};\nvar faEyeDropper = {\n prefix: 'far',\n iconName: 'eye-dropper',\n icon: [512, 512, [], \"f1fb\", \"M483.89 28.14l-.02-.02-.03-.03c-37.47-37.47-98.26-37.46-135.72.03l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-63.6 63.6c-9.37 9.37-9.37 24.57 0 33.94l16.98 16.98L50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62 16.96 16.96c9.44 9.44 24.65 9.31 33.94 0l63.6-63.6c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.5-37.47 37.5-98.25.02-135.73zM144.8 427.32a15.892 15.892 0 0 1-11.31 4.68H80v-53.49c0-4.27 1.66-8.29 4.69-11.31l126.63-126.62 60.12 60.12L144.8 427.32zm305.14-297.38l-77.09 77.09-33.94 33.94 30.07 30.06-29.66 29.66-128-128 29.66-29.65 30.06 30.07L382.08 62.05c9.05-9.06 21.1-14.05 33.91-14.05 12.82 0 24.86 4.98 33.91 14.04l.04.04C459.01 71.14 464 83.19 464 96.01c0 12.81-5 24.86-14.06 33.93z\"]\n};\nvar faEyeEvil = {\n prefix: 'far',\n iconName: 'eye-evil',\n icon: [640, 512, [], \"f6db\", \"M610.12 217.47l-94.53-25.09c14.97-23.36 41.28-64.52 41.31-64.56 9.09-14.31 8.16-32.16-2.44-45.44-11-13.81-29.66-19.02-46.62-13.09l-101.62 36.06c-3.97-1.7-8.03-3.31-12.19-4.81l-36.75-77.16C350.41 8.95 336.12 0 320 0s-30.41 8.95-37.28 23.39l-36.75 77.14c-4.16 1.5-8.22 3.11-12.19 4.81L132.16 69.3c-16.94-6.02-35.62-.7-46.62 13.08-10.6 13.28-11.54 31.12-2.42 45.5 0 0 26.31 41.14 41.28 64.5l-94.53 25.09C12 222.2 0 237.69 0 256s12 33.8 29.84 38.53l94.5 25.08c-14.91 23.33-41.22 64.55-41.25 64.58-9.09 14.31-8.16 32.16 2.44 45.44 11 13.83 29.72 19.08 46.62 13.09l101.62-36.06c3.97 1.7 8.03 3.31 12.19 4.81l36.75 77.12C289.59 503.03 303.88 512 320 512s30.41-8.97 37.28-23.41l36.75-77.12c4.16-1.5 8.22-3.11 12.19-4.81l101.62 36.05c16.97 6.05 35.66.73 46.62-13.08 10.59-13.28 11.53-31.12 2.41-45.48 0 0-26.31-41.2-41.22-64.53l94.47-25.08C628 289.8 640 274.31 640 256s-12-33.8-29.88-38.53zm-123.81 60.26l-5 6.67a298.45 298.45 0 0 1-13.78 17.12l-11.81 13.73 9.88 15.17c1.34 2.08 23.72 37.08 38.31 59.95l-100.28-35.58-9.06 4.41c-7.72 3.78-16.12 7.09-24.94 9.83l-10.03 3.12-39.6 83.12-39.59-83.09-10.03-3.12c-8.81-2.73-17.22-6.05-24.94-9.83l-9.06-4.41L136.1 390.4c14.59-22.88 36.94-57.86 38.28-59.89l10.03-15.2-11.94-13.77c-5.12-5.91-9.69-11.64-13.78-17.12l-5-6.67L71.81 256l81.88-21.75 5-6.67c4.12-5.5 8.69-11.23 13.81-17.16l11.91-13.8-10-15.22c-1.5-2.31-23.75-37.05-38.28-59.78l100.25 35.56 9.06-4.41c7.72-3.78 16.12-7.09 24.94-9.83l10.03-3.12L320 56.72l39.59 83.11 10.03 3.12c8.81 2.73 17.22 6.05 24.94 9.83l9.06 4.41 100.25-35.56c-14.53 22.75-36.75 57.44-38.19 59.66l-10.28 15.27 12.09 13.88c5.12 5.92 9.69 11.66 13.81 17.16l5 6.67L568.19 256l-81.88 21.73zm-142.1-55.71c4.41 9.25 7.79 20.41 7.79 33.98 0 42.67-32 64-32 64s-32-21.33-32-64c0-13.57 3.37-24.73 7.79-33.98-20.82-3-39.68-9.76-55.59-19.33C229.99 217.94 224 236.27 224 256c0 53.02 42.98 96 96 96s96-42.98 96-96c0-19.73-5.99-38.06-16.2-53.31-15.9 9.57-34.77 16.33-55.59 19.33z\"]\n};\nvar faEyeSlash = {\n prefix: 'far',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M634 471L36 3.51A16 16 0 0 0 13.51 6l-10 12.49A16 16 0 0 0 6 41l598 467.49a16 16 0 0 0 22.49-2.49l10-12.49A16 16 0 0 0 634 471zM296.79 146.47l134.79 105.38C429.36 191.91 380.48 144 320 144a112.26 112.26 0 0 0-23.21 2.47zm46.42 219.07L208.42 260.16C210.65 320.09 259.53 368 320 368a113 113 0 0 0 23.21-2.46zM320 112c98.65 0 189.09 55 237.93 144a285.53 285.53 0 0 1-44 60.2l37.74 29.5a333.7 333.7 0 0 0 52.9-75.11 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64c-36.7 0-71.71 7-104.63 18.81l46.41 36.29c18.94-4.3 38.34-7.1 58.22-7.1zm0 288c-98.65 0-189.08-55-237.93-144a285.47 285.47 0 0 1 44.05-60.19l-37.74-29.5a333.6 333.6 0 0 0-52.89 75.1 32.35 32.35 0 0 0 0 29.19C89.72 376.41 197.08 448 320 448c36.7 0 71.71-7.05 104.63-18.81l-46.41-36.28C359.28 397.2 339.89 400 320 400z\"]\n};\nvar faFan = {\n prefix: 'far',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M256 224a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm255.69 41.06C501 180.11 428.72 116 343.53 116a244.34 244.34 0 0 0-42.5 3.63l7.78-77.15A38.8 38.8 0 0 0 265.09.34C180.09 11 116 83.31 116 168.49a244.42 244.42 0 0 0 3.63 42.5l-77.16-7.78a38.4 38.4 0 0 0-31.38 11.43A39.06 39.06 0 0 0 .31 246.92C11 331.92 83.28 396 168.47 396a244.34 244.34 0 0 0 42.5-3.63l-7.78 77.15a38.25 38.25 0 0 0 11.44 31.35A39 39 0 0 0 242 512a38.44 38.44 0 0 0 5-.31c84.91-10.69 149-82.97 149-168.15a244.42 244.42 0 0 0-3.63-42.5l77.16 7.78a38.5 38.5 0 0 0 31.34-11.43 39 39 0 0 0 10.82-32.31zM324.75 246l13 35.91c6.78 18.65 10.22 39.4 10.22 61.65 0 57.25-40.47 106.4-95.84 118.59L266 324.76l-35.9 13c-18.63 6.81-39.38 10.24-61.63 10.24-57.25 0-106.38-40.47-118.59-95.84l137.37 13.88-13-35.91c-6.78-18.65-10.22-39.4-10.22-61.65 0-57.25 40.47-106.37 95.84-118.59L246 187.27l35.9-13c18.66-6.78 39.41-10.22 61.66-10.22 57.25 0 106.41 40.47 118.59 95.84z\"]\n};\nvar faFanTable = {\n prefix: 'far',\n iconName: 'fan-table',\n icon: [448, 512, [], \"e004\", \"M448,224C448,100.29,347.71,0,224,0S0,100.29,0,224C0,339.6,87.58,434.69,200,446.68V464H112c-21.32,0-41.21,13.89-47.48,33.12C62.11,504.53,68.41,512,76.2,512H371.81c7.78,0,14.08-7.47,11.67-14.88C377.22,477.89,357.32,464,336,464H248V446.68C360.42,434.69,448,339.6,448,224ZM224,400c-97,0-176-78.95-176-176S127,48,224,48s176,79,176,176S321.05,400,224,400ZM354.06,266.31a17.49,17.49,0,0,0,20.34-17.25,87.62,87.62,0,0,0-144.35-66.88L195.62,90.24c-2.57-6.85-13-15.9-25.1-9l0,0a87.06,87.06,0,0,0-40.87,53.25c-8.85,33.12,2.3,86.06,55.38,104.9l-62.65,76.1c-8.76,10.6-1.81,22.47,4.77,26.26a87.71,87.71,0,0,0,119.77-32.11,86.67,86.67,0,0,0,9.95-59.52ZM224,240a16,16,0,1,1,16-16A16,16,0,0,1,224,240Z\"]\n};\nvar faFarm = {\n prefix: 'far',\n iconName: 'farm',\n icon: [576, 512, [], \"f864\", \"M112 48a64.07 64.07 0 0 1 64 64v37.43l14.25-28.49a64.12 64.12 0 0 1 31.24-29.86l.38-.17A111.93 111.93 0 0 0 0 112v384a16 16 0 0 0 16 16h112v-48H48V112a64.07 64.07 0 0 1 64-64zm288 176h-64a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm172.62 22.22l-55.49-111a32 32 0 0 0-15.62-14.93L381 66.76a32 32 0 0 0-26 0l-120.51 53.56c-5.17 2.3-11 8-10.49 8a31.56 31.56 0 0 0-5.13 6.95l-55.49 111a32.08 32.08 0 0 0-3.38 14.27V512h400a16 16 0 0 0 16-16V260.54a32.08 32.08 0 0 0-3.38-14.32zM528 464H416v-64a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v64H208V264.31l51.23-102.46L368 113.51l108.77 48.34L528 264.31z\"]\n};\nvar faFastBackward = {\n prefix: 'far',\n iconName: 'fast-backward',\n icon: [512, 512, [], \"f049\", \"M12 448h24c6.6 0 12-5.4 12-12V277.7c1.1 1.2 2.2 2.4 3.5 3.4l184 159.5c20.6 17.2 52.5 2.8 52.5-24.6V292l171.5 148.6c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6L288 221.1v-125c0-27.4-31.9-41.8-52.5-24.6L51.5 232c-1.3 1.1-2.4 2.2-3.5 3.4V76c0-6.6-5.4-12-12-12H12C5.4 64 0 69.4 0 76v360c0 6.6 5.4 12 12 12zm452-316.8V381L320.4 256.5 464 131.2zm-224 0V381L96.4 256.5 240 131.2z\"]\n};\nvar faFastForward = {\n prefix: 'far',\n iconName: 'fast-forward',\n icon: [512, 512, [], \"f050\", \"M500 64h-24c-6.6 0-12 5.4-12 12v158.3c-1.1-1.2-2.2-2.4-3.5-3.4l-184-159.5C255.9 54.3 224 68.6 224 96v124L52.5 71.4C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6L224 291v125c0 27.4 31.9 41.8 52.5 24.6l184-160.5c1.3-1.1 2.4-2.2 3.5-3.4V436c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12zM48 380.8V131.1l143.6 124.4L48 380.8zm224 0V131.1l143.6 124.4L272 380.8z\"]\n};\nvar faFaucet = {\n prefix: 'far',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M368,224H323.18c-18.67-23.11-44.83-39.81-75.18-45.58V147.6S366.6,160,368,160c8.71,0,16-7.48,16-16.89V112.89c0-9.42-7.26-16.89-16-16.89-1.4,0,6.12-.79-120,13.32V80a16,16,0,0,0-16-16H216a16,16,0,0,0-16,16v29.32C73.88,95.21,81.38,96,80,96c-8.72,0-16,7.47-16,16.89v30.22C64,152.52,71.26,160,80,160c1.43,0,120-12.4,120-12.4v30.82c-30.35,5.77-56.51,22.47-75.18,45.58H16A16,16,0,0,0,0,240v16a16,16,0,0,0,16,16H150.75a79.89,79.89,0,0,1,146.5,0H368a96.1,96.1,0,0,1,96,96v32H400V368a32,32,0,0,0-32-32H297.25a79.89,79.89,0,0,1-146.5,0H16A16,16,0,0,0,0,352v16a16,16,0,0,0,16,16H124.82c23.46,29.05,58.93,48,99.18,48s75.72-18.95,99.18-48H352v16a48,48,0,0,0,48,48h64a48,48,0,0,0,48-48V368C512,288.6,447.4,224,368,224Z\"]\n};\nvar faFaucetDrip = {\n prefix: 'far',\n iconName: 'faucet-drip',\n icon: [512, 512, [], \"e006\", \"M416,480a32,32,0,0,0,64,0c0-17.67-32-64-32-64S416,462.33,416,480ZM368,160H323.18c-18.67-23.11-44.83-39.81-75.18-45.58V83.6S366.6,96,368,96c8.71,0,16-7.48,16-16.89V48.89C384,39.47,376.74,32,368,32c-1.4,0,6.12-.79-120,13.32V16A16,16,0,0,0,232,0H216a16,16,0,0,0-16,16V45.32C73.88,31.21,81.38,32,80,32c-8.72,0-16,7.47-16,16.89V79.11C64,88.52,71.26,96,80,96c1.43,0,120-12.4,120-12.4v30.82c-30.35,5.77-56.51,22.47-75.18,45.58H16A16,16,0,0,0,0,176v16a16,16,0,0,0,16,16H150.75a79.89,79.89,0,0,1,146.5,0H368a96.1,96.1,0,0,1,96,96v32H400V304a32,32,0,0,0-32-32H297.25a79.89,79.89,0,0,1-146.5,0H16A16,16,0,0,0,0,288v16a16,16,0,0,0,16,16H124.82c23.46,29.05,58.93,48,99.18,48s75.72-18.95,99.18-48H352v16a48,48,0,0,0,48,48h64a48,48,0,0,0,48-48V304C512,224.6,447.4,160,368,160Z\"]\n};\nvar faFax = {\n prefix: 'far',\n iconName: 'fax',\n icon: [512, 512, [], \"f1ac\", \"M288 368h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192-167.12V77.25a32 32 0 0 0-9.38-22.63L425.38 9.38A32 32 0 0 0 402.75 0H176a32 32 0 0 0-32 32v104.88a63.33 63.33 0 0 0-32-8.88H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h48a63.44 63.44 0 0 0 40-14.41A63.44 63.44 0 0 0 192 512h256a64 64 0 0 0 64-64V256a63.71 63.71 0 0 0-32-55.12zM128 448a16 16 0 0 1-16 16H64a16 16 0 0 1-16-16V192a16 16 0 0 1 16-16h48a16 16 0 0 1 16 16zm64-400h192v32a16 16 0 0 0 16 16h32v96H192zm272 400a16 16 0 0 1-16 16H192a16 16 0 0 1-16-16V240h272a16 16 0 0 1 16 16zM288 272h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faFeather = {\n prefix: 'far',\n iconName: 'feather',\n icon: [512, 512, [], \"f52d\", \"M467.1 44.9C438.24 16.04 401.59 0 361.59 0c-46.7 0-97.98 21.85-146.78 70.66l-85.75 85.76C54 231.47 56.69 352.92 72.69 405.37L7.03 471.03c-9.37 9.37-9.37 24.57 0 33.94 9.37 9.37 24.57 9.37 33.94 0l65.6-65.6c17.44 5.3 42.43 9.15 70.88 9.15 57.19 0 128.04-15.48 178.13-65.57l85.76-85.75c90.61-90.62 88.32-189.75 25.76-252.3zM147.37 398.57L193.94 352h124.12c-44.62 41.83-106.87 48.46-140.61 48.46-11.41.01-21.29-.81-30.08-1.89zM350.58 320H225.94l64-64h123.81c-2.23 2.4-4.01 4.83-6.39 7.21L350.58 320zm88.31-96H321.94l22.51-22.51c9.37-9.37 9.37-24.57 0-33.94-9.37-9.37-24.57-9.37-33.94 0l-197 197c-5.27-45.97-.29-124.34 49.52-174.15 0 0 18.71-18.71 85.75-85.76 37.02-37.02 76.03-56.58 112.8-56.58 26.63 0 51.37 10.66 71.53 30.82 39.17 39.16 40.02 92.25 5.78 145.12z\"]\n};\nvar faFeatherAlt = {\n prefix: 'far',\n iconName: 'feather-alt',\n icon: [512, 512, [], \"f56b\", \"M71.46 287.61c-4.85 41.95-7.25 84.14-7.38 126.37L7.03 471.03c-9.37 9.37-9.37 24.57 0 33.94 9.37 9.37 24.57 9.37 33.94 0l57.05-57.05c42.23-.12 84.42-2.53 126.37-7.38C473.8 415.14 508.44 51.72 512 0 460.28 3.56 96.87 38.2 71.46 287.61zm147.42 105.25c-23.41 2.71-47.3 4.36-71.31 5.51L193.94 352h125.37c-27.89 21.72-60.89 36.83-100.43 40.86zM352.81 320H225.94l64-64h106.12c-12.11 23.11-26.54 44.76-43.25 64zm-30.87-96l13.54-13.54c9.37-9.37 9.37-24.57 0-33.94-9.37-9.37-24.57-9.37-33.94 0l-187.9 187.9c1.16-24.09 2.83-48.13 5.58-71.96C136.33 124.4 349.77 70.87 457.48 54.51c-6.89 45.3-20.53 109.25-46.37 169.49h-89.17z\"]\n};\nvar faFemale = {\n prefix: 'far',\n iconName: 'female',\n icon: [320, 512, [], \"f182\", \"M300.6 331.5l-48-139c-3.5-10.2-9.4-19.4-17.4-26.6 15.4-17.6 24.8-40.6 24.8-65.8C260 44.9 215.1 0 160 0S60 44.9 60 100c0 25.2 9.4 48.2 24.8 65.8-7.9 7.3-13.9 16.4-17.4 26.6L19.5 331.2C5.2 374 36.9 416 80 416v32c0 35.3 28.7 64 64 64h32c35.3 0 64-28.7 64-64v-32c44-.2 74.5-42.9 60.6-84.5zM160 48c28.7 0 52 23.3 52 52s-23.3 52-52 52-52-23.3-52-52 23.3-52 52-52zm79.6 320H192v80c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16v-80H80c-10.5 0-18.8-10.2-15.1-21.4L112.8 208c2.2-6.5 8.3-10.9 15.2-10.9h7.9c15.8 3.9 32.4 3.9 48.2 0h7.9c6.9 0 13 4.4 15.2 10.9l48 138.9c3.3 10-3.8 21.1-15.6 21.1z\"]\n};\nvar faFieldHockey = {\n prefix: 'far',\n iconName: 'field-hockey',\n icon: [640, 512, [], \"f44c\", \"M619.5 96.3L558.8 157l-45.2-45.2 91.2-91.2C612.4 12.9 607 0 596.3 0h-33.9c-3.2 0-6.2 1.3-8.5 3.5L214.7 342.7c-29.4 29.5-75.6-14.8-45.3-45.2 31.2-31.2 31.2-81.9 0-113.1-31.2-31.2-81.8-31.3-113.1 0C20 220.6 0 268.8 0 320.1 0 426.7 86.3 512 192 512c86.5 0 131.8-52.2 153.3-73.7 18.2 43.3 61 73.7 110.7 73.7 66.2 0 120-53.8 120-120 0-49.8-30.5-92.5-73.7-110.7l134.2-134.2c2.3-2.3 3.5-5.3 3.5-8.5v-33.9c0-10.6-12.9-16-20.5-8.4zM192 464c-38.5 0-74.7-14.9-101.8-42C63 394.8 48 358.6 48 320.1c0-38.5 15-74.7 42.2-101.8 29.5-29.6 75.6 14.9 45.2 45.3-31.1 31.2-31.1 81.9.2 113.2 31.1 30.8 81.7 31.3 113-.2l231.1-231.1 45.2 45.2-82.5 82.5c-55.2 6.3-98.7 49.8-105 105C293.3 422.5 262.2 464 192 464zm336-72c0 39.7-32.3 72-72 72s-72-32.3-72-72 32.3-72 72-72 72 32.3 72 72z\"]\n};\nvar faFighterJet = {\n prefix: 'far',\n iconName: 'fighter-jet',\n icon: [640, 512, [], \"f0fb\", \"M520 181.4l-108-12.34L370.22 152h-11.15L288.5 63.79C310.73 62.56 328 56.09 328 48c0-9-21.38-16-47.19-16H128v32h16v63.53L119.48 96h-74.3L8 133.18v62.12l-8 1v119.42l8 1v62.12L45.18 416h74.3L144 384.47V448h-16v32h152.81c25.81 0 47.19-7 47.19-16 0-8.09-17.27-14.56-39.5-15.79L359.07 360h11.15L412 342.94l108-12.34c61-13.55 120.35-22 120-74.6.3-52.76-59.54-61.15-120-74.6zm-8 101.8L400 296l-39.2 16H336l-96 120h-48V296h-40l-56 72H65.07L56 358.93V304h8v-16h40v-8l-56-6.8v-34.4l56-6.8v-8H64v-16h-8v-54.93l9.07-9.07H96l56 72h40V80h48l96 120h24.8l39.2 16 112 12.8c81.6 18.13 80 22.6 80 27.2s1.6 9.07-80 27.2z\"]\n};\nvar faFile = {\n prefix: 'far',\n iconName: 'file',\n icon: [384, 512, [], \"f15b\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z\"]\n};\nvar faFileAlt = {\n prefix: 'far',\n iconName: 'file-alt',\n icon: [384, 512, [], \"f15c\", \"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z\"]\n};\nvar faFileArchive = {\n prefix: 'far',\n iconName: 'file-archive',\n icon: [384, 512, [], \"f1c6\", \"M128.3 160v32h32v-32zm64-96h-32v32h32zm-64 32v32h32V96zm64 32h-32v32h32zm177.6-30.1L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h79.7v16h32V48H208v104c0 13.3 10.7 24 24 24h104zM194.2 265.7c-1.1-5.6-6-9.7-11.8-9.7h-22.1v-32h-32v32l-19.7 97.1C102 385.6 126.8 416 160 416c33.1 0 57.9-30.2 51.5-62.6zm-33.9 124.4c-17.9 0-32.4-12.1-32.4-27s14.5-27 32.4-27 32.4 12.1 32.4 27-14.5 27-32.4 27zm32-198.1h-32v32h32z\"]\n};\nvar faFileAudio = {\n prefix: 'far',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm144-76.024c0 10.691-12.926 16.045-20.485 8.485L136 360.486h-28c-6.627 0-12-5.373-12-12v-56c0-6.627 5.373-12 12-12h28l35.515-36.947c7.56-7.56 20.485-2.206 20.485 8.485v135.952zm41.201-47.13c9.051-9.297 9.06-24.133.001-33.439-22.149-22.752 12.235-56.246 34.395-33.481 27.198 27.94 27.212 72.444.001 100.401-21.793 22.386-56.947-10.315-34.397-33.481z\"]\n};\nvar faFileCertificate = {\n prefix: 'far',\n iconName: 'file-certificate',\n icon: [512, 512, [], \"f5f3\", \"M497.83 97.98L413.94 14.1c-9-9-21.2-14.1-33.89-14.1H175.99C149.5.1 128 21.6 128 48.09V128h47.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H464v287.95H224V512h239.93c26.5 0 48.07-21.5 48.07-47.99V131.97c0-12.69-5.17-24.99-14.17-33.99zm-113.88 30.09V51.99l76.09 76.08h-76.09zM247.42 338.28c7.4-7.53 10.29-18.5 7.58-28.79-5.43-20.65-5.44-17.74 0-38.42 2.71-10.29-.18-21.26-7.58-28.79-14.86-15.12-13.43-12.61-18.87-33.27-2.71-10.29-10.6-18.32-20.71-21.07-20.28-5.53-17.84-4.1-32.69-19.21-7.4-7.53-18.18-10.47-28.29-7.71-20.32 5.54-17.46 5.53-37.75 0-10.1-2.76-20.88.19-28.28 7.71-14.91 15.18-12.5 13.7-32.69 19.21-10.11 2.76-18 10.79-20.71 21.07-5.46 20.74-4 18.13-18.87 33.27-7.4 7.53-10.29 18.5-7.58 28.79 5.45 20.71 5.42 17.79 0 38.42-2.71 10.29.18 21.26 7.58 28.79 14.85 15.11 13.43 12.61 18.87 33.27 2.71 10.29 10.6 18.32 20.71 21.07 14.31 3.9 11.52 2.97 15.84 5V512l64-32 64 32V397.62c4.31-2.02 1.52-1.1 15.84-5 10.11-2.76 18-10.79 20.71-21.07 5.48-20.75 4.02-18.14 18.89-33.27zM128 352c-35.34 0-64-28.65-64-64s28.66-64 64-64 64 28.65 64 64-28.66 64-64 64z\"]\n};\nvar faFileChartLine = {\n prefix: 'far',\n iconName: 'file-chart-line',\n icon: [384, 512, [], \"f659\", \"M131.2 320h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8zm72-64h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8h22.4c6.4 0 12.8-6.4 12.8-12.8V268.8c0-6.4-6.4-12.8-12.8-12.8zm49.6 160h22.4c6.4 0 12.8-6.4 12.8-12.8V300.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v102.4c0 6.4 6.4 12.8 12.8 12.8zM369.83 97.98L285.94 14.1c-9-9-21.2-14.1-33.89-14.1H47.99C21.5.1 0 21.6 0 48.09v415.92C0 490.5 21.5 512 47.99 512h287.94c26.5 0 48.07-21.5 48.07-47.99V131.97c0-12.69-5.17-24.99-14.17-33.99zM255.95 51.99l76.09 76.08h-76.09V51.99zM336 464.01H47.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H336v287.95z\"]\n};\nvar faFileChartPie = {\n prefix: 'far',\n iconName: 'file-chart-pie',\n icon: [384, 512, [], \"f65a\", \"M369.83 97.98L285.94 14.1c-9-9-21.2-14.1-33.89-14.1H47.99C21.5.1 0 21.6 0 48.09v415.92C0 490.5 21.5 512 47.99 512h287.94c26.5 0 48.07-21.5 48.07-47.99V131.97c0-12.69-5.17-24.99-14.17-33.99zM255.95 51.99l76.09 76.08h-76.09V51.99zM336 464.01H47.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H336v287.95zm-176-206.4c-36.52 7.41-64 39.68-64 78.39 0 44.18 35.82 80 80 80 38.7 0 70.97-27.49 78.39-64H160v-94.39zm32-32V320h94.39a80.321 80.321 0 0 0 1.61-16c0-44.18-35.82-80-80-80-5.48 0-10.83.56-16 1.61z\"]\n};\nvar faFileCheck = {\n prefix: 'far',\n iconName: 'file-check',\n icon: [384, 512, [], \"f316\", \"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm261.151-192.661L166.842 412.508c-4.705 4.667-12.303 4.637-16.971-.068l-75.091-75.7c-4.667-4.705-4.637-12.303.068-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l44.104 44.461 111.072-110.181c4.705-4.667 12.303-4.637 16.971.068l22.536 22.718c4.667 4.706 4.636 12.303-.069 16.971z\"]\n};\nvar faFileCode = {\n prefix: 'far',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z\"]\n};\nvar faFileContract = {\n prefix: 'far',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M196.66 363.33l-13.88-41.62c-3.28-9.81-12.44-16.41-22.78-16.41s-19.5 6.59-22.78 16.41L119 376.36c-1.5 4.58-5.78 7.64-10.59 7.64H96c-8.84 0-16 7.16-16 16s7.16 16 16 16h12.41c18.62 0 35.09-11.88 40.97-29.53L160 354.58l16.81 50.48a15.994 15.994 0 0 0 14.06 10.89c.38.03.75.05 1.12.05 6.03 0 11.59-3.41 14.31-8.86l7.66-15.33c2.78-5.59 7.94-6.19 10.03-6.19s7.25.59 10.19 6.53c7.38 14.7 22.19 23.84 38.62 23.84H288c8.84 0 16-7.16 16-16s-7.16-16-16-16h-15.19c-4.28 0-8.12-2.38-10.16-6.5-11.93-23.85-46.24-30.33-65.99-14.16zM369.83 97.98L285.94 14.1c-9-9-21.2-14.1-33.89-14.1H47.99C21.5.1 0 21.6 0 48.09v415.92C0 490.5 21.5 512 47.99 512h287.94c26.5 0 48.07-21.5 48.07-47.99V131.97c0-12.69-5.17-24.99-14.17-33.99zM255.95 51.99l76.09 76.08h-76.09V51.99zM336 464.01H47.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H336v287.95zM88 112h80c4.42 0 8-3.58 8-8V88c0-4.42-3.58-8-8-8H88c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8zm0 64h80c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H88c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\"]\n};\nvar faFileCsv = {\n prefix: 'far',\n iconName: 'file-csv',\n icon: [384, 512, [], \"f6dd\", \"M369.83 97.98L285.94 14.1c-9-9-21.2-14.1-33.89-14.1H47.99C21.5.1 0 21.6 0 48.09v415.92C0 490.5 21.5 512 47.99 512h287.94c26.5 0 48.07-21.5 48.07-47.99V131.97c0-12.69-5.17-24.99-14.17-33.99zM255.95 51.99l76.09 76.08h-76.09V51.99zM336 464.01H47.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H336v287.95zM224 264v20.8c0 35.48 12.88 68.89 36.28 94.09 3.02 3.25 7.27 5.11 11.72 5.11s8.7-1.86 11.72-5.11c23.41-25.2 36.28-58.61 36.28-94.09V264c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v20.8c0 20.27-5.7 40.17-16 56.88-10.3-16.7-16-36.61-16-56.88V264c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8zm-104-8h-8c-26.51 0-48 21.49-48 48v32c0 26.51 21.49 48 48 48h8c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8h-8c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h8c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm59.45 42.47c-1.38-1.19-2.12-2.55-2.12-3.84 0-3.12 4.45-6.62 10.41-6.62H200c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8h-12.27c-23.39 0-42.41 17.33-42.41 38.62 0 10.66 4.86 20.92 13.33 28.14l21.89 18.77c1.38 1.19 2.12 2.55 2.12 3.84 0 3.12-4.45 6.62-10.41 6.62H160c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h12.27c23.39 0 42.41-17.33 42.41-38.62 0-10.66-4.86-20.92-13.33-28.14l-21.9-18.77z\"]\n};\nvar faFileDownload = {\n prefix: 'far',\n iconName: 'file-download',\n icon: [384, 512, [], \"f56d\", \"M216 236.07c0-6.63-5.37-12-12-12h-24c-6.63 0-12 5.37-12 12v84.01h-48.88c-10.71 0-16.05 12.97-8.45 20.52l72.31 71.77c4.99 4.95 13.04 4.95 18.03 0l72.31-71.77c7.6-7.54 2.26-20.52-8.45-20.52H216v-84.01zM369.83 97.98L285.94 14.1c-9-9-21.2-14.1-33.89-14.1H47.99C21.5.1 0 21.6 0 48.09v415.92C0 490.5 21.5 512 47.99 512h287.94c26.5 0 48.07-21.5 48.07-47.99V131.97c0-12.69-5.17-24.99-14.17-33.99zM255.95 51.99l76.09 76.08h-76.09V51.99zM336 464.01H47.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H336v287.95z\"]\n};\nvar faFileEdit = {\n prefix: 'far',\n iconName: 'file-edit',\n icon: [384, 512, [], \"f31c\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm163.1-229.9l46.8 46.8c2 2 2 5.2 0 7.2L143.4 402.6 95.2 408c-6.4.7-11.9-4.7-11.2-11.2l5.4-48.2 114.5-114.5c2-2 5.2-2 7.2 0zm83 17.8l-19.5 19.5c-2 2-5.2 2-7.2 0l-46.8-46.8c-2-2-2-5.2 0-7.2l19.5-19.5c7.9-7.9 20.7-7.9 28.6 0l25.4 25.4c7.9 7.9 7.9 20.7 0 28.6z\"]\n};\nvar faFileExcel = {\n prefix: 'far',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm212-240h-28.8c-4.4 0-8.4 2.4-10.5 6.3-18 33.1-22.2 42.4-28.6 57.7-13.9-29.1-6.9-17.3-28.6-57.7-2.1-3.9-6.2-6.3-10.6-6.3H124c-9.3 0-15 10-10.4 18l46.3 78-46.3 78c-4.7 8 1.1 18 10.4 18h28.9c4.4 0 8.4-2.4 10.5-6.3 21.7-40 23-45 28.6-57.7 14.9 30.2 5.9 15.9 28.6 57.7 2.1 3.9 6.2 6.3 10.6 6.3H260c9.3 0 15-10 10.4-18L224 320c.7-1.1 30.3-50.5 46.3-78 4.7-8-1.1-18-10.3-18z\"]\n};\nvar faFileExclamation = {\n prefix: 'far',\n iconName: 'file-exclamation',\n icon: [384, 512, [], \"f31a\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm108.6-251.3l6.5 104c.4 6.3 5.6 11.3 12 11.3h33.8c6.3 0 11.6-4.9 12-11.3l6.5-104c.4-6.9-5.1-12.7-12-12.7h-46.8c-6.9 0-12.4 5.8-12 12.7zM232 384c0 22.1-17.9 40-40 40s-40-17.9-40-40 17.9-40 40-40 40 17.9 40 40z\"]\n};\nvar faFileExport = {\n prefix: 'far',\n iconName: 'file-export',\n icon: [576, 512, [], \"f56e\", \"M572.29 279.06l-71.77-72.31c-7.55-7.6-20.52-2.26-20.52 8.45v48.88h-96v-132.1c0-12.7-5.17-25-14.17-33.99L285.94 14.1c-9-9-21.2-14.1-33.89-14.1H47.99C21.5.1 0 21.6 0 48.09v415.92C0 490.5 21.5 512 47.99 512h287.94c26.5 0 48.07-21.5 48.07-47.99V360.07h-48v103.94H47.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H336v88.01H172c-6.63 0-12 5.37-12 12v24c0 6.63 5.37 12 12 12h308v48.88c0 10.71 12.97 16.05 20.52 8.45l71.77-72.31c4.95-4.99 4.95-13.04 0-18.03zM255.95 128.07V51.99l76.09 76.08h-76.09z\"]\n};\nvar faFileImage = {\n prefix: 'far',\n iconName: 'file-image',\n icon: [384, 512, [], \"f1c5\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z\"]\n};\nvar faFileImport = {\n prefix: 'far',\n iconName: 'file-import',\n icon: [512, 512, [], \"f56f\", \"M497.83 97.98L413.94 14.1c-9-9-21.2-14.1-33.89-14.1H175.99C149.5.1 128 21.6 128 48.09v215.98H12c-6.63 0-12 5.37-12 12v24c0 6.63 5.37 12 12 12h276v48.88c0 10.71 12.97 16.05 20.52 8.45l71.77-72.31c4.95-4.99 4.95-13.04 0-18.03l-71.77-72.31c-7.55-7.6-20.52-2.26-20.52 8.45v48.88H175.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H464v287.95H175.99V360.07H128v103.94c0 26.49 21.5 47.99 47.99 47.99h287.94c26.5 0 48.07-21.5 48.07-47.99V131.97c0-12.69-5.17-24.99-14.17-33.99zm-113.88 30.09V51.99l76.09 76.08h-76.09z\"]\n};\nvar faFileInvoice = {\n prefix: 'far',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M296 400h-80c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h80c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM80 240v96c0 8.84 7.16 16 16 16h192c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16H96c-8.84 0-16 7.16-16 16zm32 16h160v64H112v-64zM369.83 97.98L285.94 14.1c-9-9-21.2-14.1-33.89-14.1H47.99C21.5.1 0 21.6 0 48.09v415.92C0 490.5 21.5 512 47.99 512h287.94c26.5 0 48.07-21.5 48.07-47.99V131.97c0-12.69-5.17-24.99-14.17-33.99zM255.95 51.99l76.09 76.08h-76.09V51.99zM336 464.01H47.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H336v287.95zM88 112h80c4.42 0 8-3.58 8-8V88c0-4.42-3.58-8-8-8H88c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8zm0 64h80c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H88c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'far',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M369.83 97.98L285.94 14.1c-9-9-21.2-14.1-33.89-14.1H47.99C21.5.1 0 21.6 0 48.09v415.92C0 490.5 21.5 512 47.99 512h287.94c26.5 0 48.07-21.5 48.07-47.99V131.97c0-12.69-5.17-24.99-14.17-33.99zM255.95 51.99l76.09 76.08h-76.09V51.99zM336 464.01H47.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H336v287.95zM208 216c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v24.12c-23.62.63-42.67 20.55-42.67 45.07 0 19.97 12.98 37.81 31.58 43.39l45 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.11c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V424c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-24.12c23.62-.63 42.67-20.54 42.67-45.07 0-19.97-12.98-37.81-31.58-43.39l-45-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V216zM88 112h80c4.42 0 8-3.58 8-8V88c0-4.42-3.58-8-8-8H88c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8zm88 56v-16c0-4.42-3.58-8-8-8H88c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h80c4.42 0 8-3.58 8-8z\"]\n};\nvar faFileMedical = {\n prefix: 'far',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M224 232c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56h-56c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h56v56c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-56h56c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-56v-56zM369.8 98l-83.9-83.9C276.9 5.1 264.7 0 252 0H48C21.5.1 0 21.6 0 48.1V464c0 26.5 21.5 48 48 48h287.9c26.5 0 48.1-21.5 48.1-48V132c0-12.7-5.2-25-14.2-34zM255.9 52l76.1 76.1h-76.1V52zM336 464H48V48.1h160v104c0 13.3 10.7 24 24 24h104V464z\"]\n};\nvar faFileMedicalAlt = {\n prefix: 'far',\n iconName: 'file-medical-alt',\n icon: [448, 512, [], \"f478\", \"M433.9 98l-84-84c-9-9-21.1-14-33.8-14h-204C85.6.1 64 21.6 64 48.1V272H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h113.2l32.5 65.1c5.9 11.8 22.7 11.8 28.6 0l49.7-99.4 17.2 34.3H344c13.2 0 24-10.8 24-24s-10.8-24-24-24h-57.2l-32.5-65.1c-5.9-11.8-22.7-11.8-28.6 0L176 306.3 158.9 272H112V48.1h160v104c0 13.3 10.7 24 24 24h104V464H112.1v-96H64v96c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V132c0-12.8-5.1-25-14.1-34zM320 128.1V52l76.1 76.1H320z\"]\n};\nvar faFileMinus = {\n prefix: 'far',\n iconName: 'file-minus',\n icon: [384, 512, [], \"f318\", \"M369.9,98,286,14.1A48,48,0,0,0,252.1,0H48A48.16,48.16,0,0,0,0,48.1v416a48,48,0,0,0,48,48H336a48,48,0,0,0,48-48V132A48.23,48.23,0,0,0,369.9,98ZM256,52l76.1,76.1H256Zm80,412.1H48V48.1H208v104a23.94,23.94,0,0,0,24,24H336ZM111.48,280.35a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h160a16,16,0,0,0,16-16v-16a16,16,0,0,0-16-16Z\"]\n};\nvar faFileMusic = {\n prefix: 'far',\n iconName: 'file-music',\n icon: [384, 512, [], \"f8b6\", \"M144 271.29V370a69.27 69.27 0 0 0-16-2c-26.5 0-48 14.32-48 32s21.5 32 48 32 48-14.32 48-32v-84.81l96-37.51V338a69.82 69.82 0 0 0-16-2c-26.5 0-48 14.33-48 32s21.5 32 48 32 48-14.32 48-32V224a16 16 0 0 0-20.81-15.24l-128 47.24A16 16 0 0 0 144 271.29zM369.91 98L286 14.09A48 48 0 0 0 252.09 0H48A48.15 48.15 0 0 0 0 48.08V464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V132a48.22 48.22 0 0 0-14.09-34zM256 52l76.09 76.08H256zm80 412H48V48.08h160v104a23.93 23.93 0 0 0 24 24h104z\"]\n};\nvar faFilePdf = {\n prefix: 'far',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm250.2-143.7c-12.2-12-47-8.7-64.4-6.5-17.2-10.5-28.7-25-36.8-46.3 3.9-16.1 10.1-40.6 5.4-56-4.2-26.2-37.8-23.6-42.6-5.9-4.4 16.1-.4 38.5 7 67.1-10 23.9-24.9 56-35.4 74.4-20 10.3-47 26.2-51 46.2-3.3 15.8 26 55.2 76.1-31.2 22.4-7.4 46.8-16.5 68.4-20.1 18.9 10.2 41 17 55.8 17 25.5 0 28-28.2 17.5-38.7zm-198.1 77.8c5.1-13.7 24.5-29.5 30.4-35-19 30.3-30.4 35.7-30.4 35zm81.6-190.6c7.4 0 6.7 32.1 1.8 40.8-4.4-13.9-4.3-40.8-1.8-40.8zm-24.4 136.6c9.7-16.9 18-37 24.7-54.7 8.3 15.1 18.9 27.2 30.1 35.5-20.8 4.3-38.9 13.1-54.8 19.2zm131.6-5s-5 6-37.3-7.8c35.1-2.6 40.9 5.4 37.3 7.8z\"]\n};\nvar faFilePlus = {\n prefix: 'far',\n iconName: 'file-plus',\n icon: [384, 512, [], \"f319\", \"M369.9,97.9,286,14A48,48,0,0,0,252.1-.1H48A48.16,48.16,0,0,0,0,48V464a48,48,0,0,0,48,48H336a48,48,0,0,0,48-48V131.9A48.23,48.23,0,0,0,369.9,97.9ZM256,51.9,332.1,128H256ZM336,464H48V48H208V152a23.94,23.94,0,0,0,24,24H336ZM215,223.75a16,16,0,0,0-16-16H183a16,16,0,0,0-16,16v56.5h-55.5a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16H167v56a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16v-56h56.5a16,16,0,0,0,16-16v-16a16,16,0,0,0-16-16H215Z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'far',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm72-60V236c0-6.6 5.4-12 12-12h69.2c36.7 0 62.8 27 62.8 66.3 0 74.3-68.7 66.5-95.5 66.5V404c0 6.6-5.4 12-12 12H132c-6.6 0-12-5.4-12-12zm48.5-87.4h23c7.9 0 13.9-2.4 18.1-7.2 8.5-9.8 8.4-28.5.1-37.8-4.1-4.6-9.9-7-17.4-7h-23.9v52z\"]\n};\nvar faFilePrescription = {\n prefix: 'far',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M369.83 97.98L285.94 14.1c-9-9-21.2-14.1-33.89-14.1H47.99C21.5.1 0 21.6 0 48.09v415.92C0 490.5 21.5 512 47.99 512h287.94c26.5 0 48.07-21.5 48.07-47.99V131.97c0-12.69-5.17-24.99-14.17-33.99zM255.95 51.99l76.09 76.08h-76.09V51.99zM336 464.01H47.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H336v287.95zM224.97 330.34l-32.3-32.3C211.17 288.9 224 270.03 224 248c0-30.93-25.07-56-56-56h-64c-4.42 0-8 3.58-8 8v144c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-40h25.37l48.97 48.97c-1.15.38-2.4.46-3.31 1.37l-36.69 36.69c-3.12 3.12-3.12 8.19 0 11.31l11.31 11.31c3.12 3.12 8.19 3.12 11.31 0l36.69-36.69c.92-.92.99-2.16 1.37-3.31l40 40c3.12 3.12 8.19 3.12 11.31 0l11.31-11.31c3.12-3.12 3.12-8.19 0-11.31l-40-40c1.15-.38 2.4-.46 3.31-1.37l36.69-36.69c3.12-3.12 3.12-8.19 0-11.31l-11.31-11.31c-3.12-3.12-8.19-3.12-11.31 0l-36.69 36.69c-.9.9-.98 2.15-1.36 3.3zM168 272h-40v-48h40c13.23 0 24 10.77 24 24s-10.77 24-24 24z\"]\n};\nvar faFileSearch = {\n prefix: 'far',\n iconName: 'file-search',\n icon: [640, 512, [], \"f865\", \"M603.32 473.39l-81.48-81.46a128 128 0 1 0-33.93 33.93l81.48 81.46a16 16 0 0 0 22.62 0L603.32 496a16 16 0 0 0 0-22.61zM416 400a80 80 0 1 1 80-80 80.09 80.09 0 0 1-80 80zM80 464V48.09h160v104a23.93 23.93 0 0 0 24 24h83.29c20.89-10 44-16.06 68.71-16.06V132a48.23 48.23 0 0 0-14.1-34L318 14.1A48 48 0 0 0 284.1 0H80a48.16 48.16 0 0 0-48 48.09V464a48 48 0 0 0 48 48h288a47.86 47.86 0 0 0 45.15-32.29A158.48 158.48 0 0 1 347.43 464zM288 52l76.1 76.08H288z\"]\n};\nvar faFileSignature = {\n prefix: 'far',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M568.54 167.33l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01zM329.06 306a63.974 63.974 0 0 0-16.26 27.11L297.57 384h-24.76c-4.28 0-8.12-2.38-10.16-6.5-11.97-23.86-46.28-30.34-66-14.17l-13.88-41.62c-3.28-9.81-12.44-16.41-22.78-16.41s-19.5 6.59-22.78 16.41L119 376.36c-1.5 4.58-5.78 7.64-10.59 7.64H96c-8.84 0-16 7.16-16 16s7.16 16 16 16h12.41c18.62 0 35.09-11.88 40.97-29.53L160 354.58l16.81 50.48a15.994 15.994 0 0 0 14.06 10.89c.38.03.75.05 1.12.05 6.03 0 11.59-3.41 14.31-8.86l7.66-15.33c2.78-5.59 7.94-6.19 10.03-6.19s7.25.59 10.19 6.53c7.38 14.7 22.19 23.84 38.62 23.84H336V464H47.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H336v78l48-47.58v-74.5c0-12.7-5.17-25-14.17-33.99L285.94 14.1c-9-9-21.2-14.1-33.89-14.1H47.99C21.5.1 0 21.6 0 48.09v415.92C0 490.5 21.5 512 47.99 512h287.94c26.5 0 48.07-21.5 48.07-47.99V388.8l134.66-135.58-67.88-67.88L329.06 306zM255.95 51.99l76.09 76.08h-76.09V51.99z\"]\n};\nvar faFileSpreadsheet = {\n prefix: 'far',\n iconName: 'file-spreadsheet',\n icon: [384, 512, [], \"f65b\", \"M80 240v176c0 8.84 7.16 16 16 16h192c8.84 0 16-7.16 16-16V240c0-8.84-7.16-16-16-16H96c-8.84 0-16 7.16-16 16zm128 32h64v48h-64v-48zm0 80h64v48h-64v-48zm-96-80h64v48h-64v-48zm0 80h64v48h-64v-48zM369.83 97.98L285.94 14.1c-9-9-21.2-14.1-33.89-14.1H47.99C21.5.1 0 21.6 0 48.09v415.92C0 490.5 21.5 512 47.99 512h287.94c26.5 0 48.07-21.5 48.07-47.99V131.97c0-12.69-5.17-24.99-14.17-33.99zM255.95 51.99l76.09 76.08h-76.09V51.99zM336 464.01H47.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H336v287.95z\"]\n};\nvar faFileTimes = {\n prefix: 'far',\n iconName: 'file-times',\n icon: [384, 512, [], \"f317\", \"M369.9,98,286,14.1A48,48,0,0,0,252.1,0H48A48.16,48.16,0,0,0,0,48.1v416a48,48,0,0,0,48,48H336a48,48,0,0,0,48-48V132A48.23,48.23,0,0,0,369.9,98ZM256,52l76.1,76.1H256Zm80,412.1H48V48.1H208v104a23.94,23.94,0,0,0,24,24H336ZM264.85,264a16,16,0,0,0,0-22.63L253.53,230a16,16,0,0,0-22.63,0l-40,40-39.24-39.24a16,16,0,0,0-22.63,0l-11.31,11.31a16,16,0,0,0,0,22.63L157,303.92l-39.6,39.6a16,16,0,0,0,0,22.63l11.32,11.31a16,16,0,0,0,22.63,0L191,337.86l40,40a16,16,0,0,0,22.63,0l11.32-11.32a16,16,0,0,0,0-22.63l-40-39.95Z\"]\n};\nvar faFileUpload = {\n prefix: 'far',\n iconName: 'file-upload',\n icon: [384, 512, [], \"f574\", \"M369.83 97.98L285.94 14.1c-9-9-21.2-14.1-33.89-14.1H47.99C21.5.1 0 21.6 0 48.09v415.92C0 490.5 21.5 512 47.99 512h287.94c26.5 0 48.07-21.5 48.07-47.99V131.97c0-12.69-5.17-24.99-14.17-33.99zM255.95 51.99l76.09 76.08h-76.09V51.99zM336 464.01H47.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H336v287.95zM182.98 227.79l-72.31 71.77c-7.6 7.54-2.26 20.52 8.45 20.52H168v84c0 6.63 5.37 12 12 12h24c6.63 0 12-5.37 12-12v-84h48.88c10.71 0 16.05-12.97 8.45-20.52l-72.31-71.77c-4.99-4.95-13.05-4.95-18.04 0z\"]\n};\nvar faFileUser = {\n prefix: 'far',\n iconName: 'file-user',\n icon: [384, 512, [], \"f65c\", \"M369.83 97.98L285.94 14.1c-9-9-21.2-14.1-33.89-14.1H47.99C21.5.1 0 21.6 0 48.09v415.92C0 490.5 21.5 512 47.99 512h287.94c26.5 0 48.07-21.5 48.07-47.99V131.97c0-12.69-5.17-24.99-14.17-33.99zM255.95 51.99l76.09 76.08h-76.09V51.99zM336 464.01H47.99V48.09h159.97v103.98c0 13.3 10.7 23.99 24 23.99H336v287.95zM128 272c0 35.35 28.65 64 64 64s64-28.65 64-64-28.65-64-64-64-64 28.65-64 64zm103.85 80c-12.29 5.12-25.73 8-39.85 8s-27.56-2.88-39.85-8h-4.95c-37.11 0-67.2 25.79-67.2 57.6v6.4c0 8.84 7.16 16 16 16h192c8.84 0 16-7.16 16-16v-6.4c0-31.81-30.09-57.6-67.2-57.6h-4.95z\"]\n};\nvar faFileVideo = {\n prefix: 'far',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm228.687-211.303L224 305.374V268c0-11.046-8.954-20-20-20H100c-11.046 0-20 8.954-20 20v104c0 11.046 8.954 20 20 20h104c11.046 0 20-8.954 20-20v-37.374l52.687 52.674C286.704 397.318 304 390.28 304 375.986V264.011c0-14.311-17.309-21.319-27.313-11.314z\"]\n};\nvar faFileWord = {\n prefix: 'far',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm220.1-208c-5.7 0-10.6 4-11.7 9.5-20.6 97.7-20.4 95.4-21 103.5-.2-1.2-.4-2.6-.7-4.3-.8-5.1.3.2-23.6-99.5-1.3-5.4-6.1-9.2-11.7-9.2h-13.3c-5.5 0-10.3 3.8-11.7 9.1-24.4 99-24 96.2-24.8 103.7-.1-1.1-.2-2.5-.5-4.2-.7-5.2-14.1-73.3-19.1-99-1.1-5.6-6-9.7-11.8-9.7h-16.8c-7.8 0-13.5 7.3-11.7 14.8 8 32.6 26.7 109.5 33.2 136 1.3 5.4 6.1 9.1 11.7 9.1h25.2c5.5 0 10.3-3.7 11.6-9.1l17.9-71.4c1.5-6.2 2.5-12 3-17.3l2.9 17.3c.1.4 12.6 50.5 17.9 71.4 1.3 5.3 6.1 9.1 11.6 9.1h24.7c5.5 0 10.3-3.7 11.6-9.1 20.8-81.9 30.2-119 34.5-136 1.9-7.6-3.8-14.9-11.6-14.9h-15.8z\"]\n};\nvar faFilesMedical = {\n prefix: 'far',\n iconName: 'files-medical',\n icon: [448, 512, [], \"f7fd\", \"M433.94 65.94l-51.88-51.88A48 48 0 0 0 348.12 0H176a48 48 0 0 0-48 48v48H48a48 48 0 0 0-48 48v320a48 48 0 0 0 48 48h224a48 48 0 0 0 48-48v-48h80a48 48 0 0 0 48-48V99.88a48 48 0 0 0-14.06-33.94zM352 51.88L396.12 96H352zM272 458a6 6 0 0 1-6 6H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224a48 48 0 0 0 48 48h96zm128-96a6 6 0 0 1-6 6H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h122v64a32 32 0 0 0 32 32h64zm-85.33-179.34A6.67 6.67 0 0 0 308 176h-40a6.67 6.67 0 0 0-6.67 6.66v46.67h-46.66A6.67 6.67 0 0 0 208 236v40a6.67 6.67 0 0 0 6.67 6.66h46.66v46.67A6.67 6.67 0 0 0 268 336h40a6.67 6.67 0 0 0 6.67-6.67v-46.67h46.66A6.67 6.67 0 0 0 368 276v-40a6.67 6.67 0 0 0-6.67-6.67h-46.66z\"]\n};\nvar faFill = {\n prefix: 'far',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M502.63 217.06L294.94 9.37A31.94 31.94 0 0 0 272.31 0c-8.19 0-16.38 3.12-22.62 9.37L162.5 96.56 70.62 4.69c-6.25-6.25-16.38-6.25-22.63 0L36.69 16c-6.25 6.25-6.25 16.38 0 22.63l91.88 91.88L28.11 230.95c-37.49 37.48-37.49 98.26 0 135.75L145.3 483.89c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.51-12.51 12.51-32.76.02-45.26zM247.11 449.95C238.05 459.01 226 464 213.18 464s-24.87-4.99-33.93-14.05L65.3 336h295.75L247.11 449.95zM409.06 288H49.34c2-8.67 6.27-16.67 12.71-23.11L162.5 164.44l69.9 69.9c9.37 9.37 24.56 9.37 33.94 0 9.37-9.37 9.37-24.57 0-33.94l-69.9-69.9 75.87-75.87 185.06 185.06L409.06 288z\"]\n};\nvar faFillDrip = {\n prefix: 'far',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37A31.94 31.94 0 0 0 272.31 0c-8.19 0-16.38 3.12-22.62 9.37L162.5 96.56 70.62 4.69c-6.25-6.25-16.38-6.25-22.63 0L36.69 16c-6.25 6.25-6.25 16.38 0 22.63l91.88 91.88L28.11 230.95c-37.49 37.48-37.49 98.26 0 135.75L145.3 483.89c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.51-12.51 12.51-32.76.02-45.26zM247.11 449.95C238.05 459.01 226 464 213.18 464s-24.87-4.99-33.93-14.05L65.3 336h295.75L247.11 449.95zM409.06 288H49.34c2-8.67 6.27-16.67 12.71-23.11L162.5 164.44l69.9 69.9c9.37 9.37 24.56 9.37 33.94 0 9.37-9.37 9.37-24.57 0-33.94l-69.9-69.9 75.87-75.87 185.05 185.06-48.3 48.31z\"]\n};\nvar faFilm = {\n prefix: 'far',\n iconName: 'film',\n icon: [512, 512, [], \"f008\", \"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm288 208c0 6.6-5.4 12-12 12H140c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H140c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v96zm96 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faFilmAlt = {\n prefix: 'far',\n iconName: 'film-alt',\n icon: [512, 512, [], \"f3a0\", \"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm280 208c0 6.6-5.4 12-12 12H148c-6.6 0-12-5.4-12-12V124c0-6.6 5.4-12 12-12h216c6.6 0 12 5.4 12 12v264zm104-16c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faFilmCanister = {\n prefix: 'far',\n iconName: 'film-canister',\n icon: [576, 512, [], \"f8b7\", \"M544 112H320V80h16a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-80V16a16 16 0 0 0-16-16H112a16 16 0 0 0-16 16v16H16A16 16 0 0 0 0 48v16a16 16 0 0 0 16 16h16v384H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-16v-32h160a32 32 0 0 0 32-32v-48a32 32 0 0 1 32-32 32 32 0 0 0 32-32V144a32 32 0 0 0-32-32zM80 464V80h192v384zm344-104a16 16 0 0 1-16 16h-16a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h16a16 16 0 0 1 16 16zm0-160a16 16 0 0 1-16 16h-16a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h16a16 16 0 0 1 16 16zm96 0a16 16 0 0 1-16 16h-16a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h16a16 16 0 0 1 16 16z\"]\n};\nvar faFilter = {\n prefix: 'far',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M463.952 0H48.057C5.419 0-16.094 51.731 14.116 81.941L176 243.882V416c0 15.108 7.113 29.335 19.2 40l64 47.066c31.273 21.855 76.8 1.538 76.8-38.4V243.882L497.893 81.941C528.042 51.792 506.675 0 463.952 0zM288 224v240l-64-48V224L48 48h416L288 224z\"]\n};\nvar faFingerprint = {\n prefix: 'far',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z\"]\n};\nvar faFire = {\n prefix: 'far',\n iconName: 'fire',\n icon: [384, 512, [], \"f06d\", \"M216 24.01c0-23.8-31.16-33.11-44.15-13.04C76.55 158.25 200 238.73 200 288c0 22.06-17.94 40-40 40s-40-17.94-40-40V182.13c0-19.39-21.86-30.76-37.73-19.68C30.75 198.38 0 257.28 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-192.85-168-295.99zM192 464c-79.4 0-144-64.6-144-144 0-28.66 8.56-64.71 24-88v56c0 48.52 39.48 88 88 88s88-39.48 88-88c0-64.27-88-120-64-208 40 88 152 121.77 152 240 0 79.4-64.6 144-144 144z\"]\n};\nvar faFireAlt = {\n prefix: 'far',\n iconName: 'fire-alt',\n icon: [448, 512, [], \"f7e4\", \"M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zM224 464c-97.05 0-176-81.83-176-182.4 0-45.37 44.3-133.21 120.16-214.09 22.34 23.36 42.82 47.72 60.34 71.86l36.62 50.44 39.41-48.29c5.83-7.15 11.85-14.15 18.01-20.97C368.89 177.96 400 250.42 400 281.6 400 382.17 321.05 464 224 464zm89.47-220.84l-51.3 58.52S181.75 198.98 175.69 192C133.27 242.86 112 272.62 112 306.41 112 374.23 163.37 416 226.5 416c25.26 0 48.62-7.87 67.58-21.13 43.08-30.14 53.18-88.58 29.26-134.24-2.95-5.62-6.24-11.48-9.87-17.47z\"]\n};\nvar faFireExtinguisher = {\n prefix: 'far',\n iconName: 'fire-extinguisher',\n icon: [448, 512, [], \"f134\", \"M420.054 20.658l-144 24C264.919 46.514 256 54.906 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.318-72-92.975V120h40c0 16.871 8.727 25.454 20.054 27.342l144 24C434.681 173.78 448 162.501 448 147.669V44.331c0-14.829-13.316-26.112-27.946-23.673zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16zm96 168v224h-96V241.205c0-26.936 21.366-49.009 47.632-49.204L192 192c26.467 0 48 21.533 48 48zm168-111.218l-112-18.667v-28.23l112-18.667v65.564z\"]\n};\nvar faFireSmoke = {\n prefix: 'far',\n iconName: 'fire-smoke',\n icon: [576, 512, [], \"f74b\", \"M456 272c-27.3 0-53.1 9.2-74 25.8-23.9-26.3-57.8-41.8-94-41.8s-70.1 15.5-94 41.8c-20.9-16.6-46.6-25.8-74-25.8C53.8 272 0 325.8 0 392s53.8 120 120 120h336c66.2 0 120-53.8 120-120s-53.8-120-120-120zm0 192H120c-39.7 0-72-32.3-72-72s32.3-72 72-72c22.7 0 43.7 10.7 57.6 29.3l22.5 30.2 17.9-33.1c14-26.2 40.9-42.4 70-42.4s56 16.2 70.1 42.3l17.9 33.1 22.5-30.2c13.8-18.6 34.8-29.3 57.6-29.3 39.7 0 72 32.3 72 72S495.7 464 456 464zM320 200s-70.2-71.7-75.4-77.9c-36.2 44.9-54.4 71.2-54.4 101.1 0 11.4 2 21.6 5 31.3C222.1 235 254.5 224 288 224c32.4 0 63.7 10.5 90.1 28.7 5.9-22.8 3.7-48-7.4-69.9-2.5-5-5.3-10.1-8.4-15.4L320 200zm-200 40c15.7 0 30.9 2.6 45.4 7.2-3.2-10.9-5.4-22.3-5.4-34.2 0-29.8 31.5-89.7 84.2-146.1 14.5 15.1 27.9 30.7 39.5 46.1l36.1 47.9 38.8-45.8c2.1-2.5 4.2-4.9 6.4-7.3 31.9 40.9 51 87.8 51 105.2 0 11.9-2.2 23.3-5.4 34.2 14.5-4.6 29.7-7.2 45.4-7.2 1.9 0 3.7.5 5.6.6 1.5-9 2.4-18.2 2.4-27.6 0-40.3-40.8-123.4-97.8-174.2-16.3 14.6-31.1 29.9-44.2 45.4-21.4-28.5-47.9-57.3-78-84.2-77.2 68.9-132 158.8-132 213 0 9.4 1 18.6 2.4 27.6 1.9-.1 3.7-.6 5.6-.6z\"]\n};\nvar faFireplace = {\n prefix: 'far',\n iconName: 'fireplace',\n icon: [640, 512, [], \"f79a\", \"M342.3 311.6c-14-18.8-31.4-37.8-51.1-55.6-50.5 45.6-86.4 105-86.4 140.8 0 63.6 51.6 115.2 115.2 115.2s115.2-51.6 115.2-115.2c0-26.6-26.7-81.6-64-115.2-10.7 9.6-20.4 19.8-28.9 30zm15.5 136.9c-10.6 7.7-23.7 12.3-37.8 12.3-35.3 0-64-24.4-64-64 0-19.7 11.9-37.1 35.6-66.8 3.4 4.1 48.3 64.1 48.3 64.1l28.7-34.2c2 3.5 3.9 6.9 5.5 10.2 13.4 26.6 7.8 60.8-16.3 78.4zM624 0H16C7.2 0 0 7.2 0 16v112c0 8.8 7.2 16 16 16h16v344c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24v-96.6c0-83.7 60.9-158.7 144.2-166.7 5.3-.5 10.6-.8 15.8-.8 88.4 0 160 71.6 160 160v104c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V144h16c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm-64 464h-32v-80c0-114.7-93.3-208-208-208-6.7 0-13.5.3-20.3 1C194.5 187 112 281 112 390.9V464H80V144h480v320zm32-368H48V48h544v48z\"]\n};\nvar faFirstAid = {\n prefix: 'far',\n iconName: 'first-aid',\n icon: [576, 512, [], \"f479\", \"M200 288h56v56c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-56h56c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-56v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56h-56c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM96 432H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h42v352zm336 0H144V80h288v352zm96-6c0 3.3-2.7 6-6 6h-42V80h42c3.3 0 6 2.7 6 6v340z\"]\n};\nvar faFish = {\n prefix: 'far',\n iconName: 'fish',\n icon: [640, 512, [], \"f578\", \"M360.18 64c-103.38 0-183.5 63.14-220.38 98.67l-72.88-56.3c-13.91-10.75-33.25-11.66-48.22-2.23C4.39 113.17-2.61 129.53.89 145.81L24.64 256 .89 366.19c-3.5 16.28 3.5 32.64 17.81 41.67 14.97 9.42 34.31 8.5 48.22-2.22l72.88-56.31c36.88 35.53 117 98.67 220.38 98.67C514.09 448 640 303.05 640 256S514.09 64 360.18 64zm0 336c-81.19 0-156.79-51.09-200.44-98.91l-14.91-16.31-92.72 71.63L73.77 256 52.11 155.59l92.72 71.63 14.91-16.31C203.4 163.09 278.99 112 360.18 112c125.22 0 227.97 119.88 231.85 143.2C588.15 280.13 485.4 400 360.18 400zM448 224c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faFishCooked = {\n prefix: 'far',\n iconName: 'fish-cooked',\n icon: [640, 512, [], \"f7fe\", \"M360.18 64C257 64 176.93 126.92 140 162.48l-73-57.73a42.27 42.27 0 0 0-48.22-2.19C4.39 111.59-2.61 128 .89 144.14L24.67 256 .89 367.8a39.15 39.15 0 0 0 17.82 41.65 42.33 42.33 0 0 0 48.4-2.37L140 349.5c37 35.56 117 98.5 220.22 98.5C514.09 448 640 303.05 640 256S514.09 64 360.18 64zm0 336c-18 0-107.64 2.59-215.57-115.39l-92.5 73.16L73.74 256 52.11 154.2l92.57 73.19C252.75 109 341.55 112 360.18 112c125.22 0 228 119.88 231.85 143.2C588.16 280.12 485.4 400 360.18 400zm-12.87-240L336 148.69a16 16 0 0 0-22.62 0l-84.69 84.69a16 16 0 0 0 0 22.62L240 267.31a16 16 0 0 0 22.63 0l84.69-84.69a16 16 0 0 0-.01-22.62zm112 16L448 164.69a16 16 0 0 0-22.63 0L276.68 313.38a16 16 0 0 0 0 22.62L288 347.31a16 16 0 0 0 22.63 0l148.68-148.69a16 16 0 0 0 0-22.62zM496 244.69a16 16 0 0 0-22.63 0l-84.69 84.69a16 16 0 0 0 0 22.62L400 363.31a16 16 0 0 0 22.63 0l84.69-84.69a16 16 0 0 0 0-22.62z\"]\n};\nvar faFistRaised = {\n prefix: 'far',\n iconName: 'fist-raised',\n icon: [448, 512, [], \"f6de\", \"M400 180.33V88c0-30.93-25.07-56-56-56h-24c-4.4 0-8.64.63-12.75 1.6C298.59 13.86 278.9 0 256 0h-24c-22.9 0-42.59 13.86-51.25 33.6-4.11-.97-8.35-1.6-12.75-1.6h-24c-22.9 0-42.59 13.86-51.25 33.6C88.64 64.63 84.4 64 80 64H56C25.07 64 0 89.07 0 120v210.98c0 40.29 16 78.94 44.49 107.43L64 457.93V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-57.94l-33.53-33.54C59.09 385.16 48 358.34 48 330.98v-59.79c2.63.38 5.26.81 8 .81h24c11.91 0 22.91-3.8 32-10.17 9.09 6.37 20.09 10.17 32 10.17h24c11.78 0 22.69-3.7 31.72-9.94 4.72 11.09 11.44 21.25 20.16 29.98 3.85 3.86 8.04 7.23 12.39 10.33-18.28 15.61-33.47 36.18-49.5 60.2-5.94 8.91-3.53 20.94 5.38 26.87l7.69 5.12c8.91 5.94 20.94 3.53 26.87-5.37 29.28-43.91 46.74-64.58 83.3-68.49 8-.86 13.98-7.8 13.98-15.85V288c0-8.84-7.16-16-16-16h-16.68c-26.16 0-47.36-21.2-47.36-47.36v-.74c0-8.78 7.12-15.9 15.9-15.9H336c35.35 0 64 28.65 64 64v48c0 25.46-10.11 49.88-28.12 67.88L320 439.76V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-36.35l37.83-37.83A144 144 0 0 0 448 320v-48c0-37.94-19.06-71.4-48-91.67zM80 224H56c-4.41 0-8-3.59-8-8v-96c0-4.41 3.59-8 8-8h24c4.41 0 8 3.59 8 8v96c0 4.41-3.59 8-8 8zm96-8c0 4.41-3.59 8-8 8h-24c-4.41 0-8-3.59-8-8V88c0-4.41 3.59-8 8-8h24c4.41 0 8 3.59 8 8v128zm48-47.13V56c0-4.41 3.59-8 8-8h24c4.41 0 8 3.59 8 8v104h-8.03c-11.7 0-22.53 3.38-31.97 8.87zm88-8.87V88c0-4.41 3.59-8 8-8h24c4.41 0 8 3.59 8 8v73.62c-5.27-.76-10.52-1.62-16-1.62h-24z\"]\n};\nvar faFlag = {\n prefix: 'far',\n iconName: 'flag',\n icon: [512, 512, [], \"f024\", \"M336.174 80c-49.132 0-93.305-32-161.913-32-31.301 0-58.303 6.482-80.721 15.168a48.04 48.04 0 0 0 2.142-20.727C93.067 19.575 74.167 1.594 51.201.104 23.242-1.71 0 20.431 0 48c0 17.764 9.657 33.262 24 41.562V496c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-83.443C109.869 395.28 143.259 384 199.826 384c49.132 0 93.305 32 161.913 32 58.479 0 101.972-22.617 128.548-39.981C503.846 367.161 512 352.051 512 335.855V95.937c0-34.459-35.264-57.768-66.904-44.117C409.193 67.309 371.641 80 336.174 80zM464 336c-21.783 15.412-60.824 32-102.261 32-59.945 0-102.002-32-161.913-32-43.361 0-96.379 9.403-127.826 24V128c21.784-15.412 60.824-32 102.261-32 59.945 0 102.002 32 161.913 32 43.271 0 96.32-17.366 127.826-32v240z\"]\n};\nvar faFlagAlt = {\n prefix: 'far',\n iconName: 'flag-alt',\n icon: [512, 512, [], \"f74c\", \"M472.5 0c-7 0-14.3 1.5-21.2 4.6-50.5 22.7-87.8 30.3-119.1 30.3C266.1 34.9 227.7.4 151.4.4c-28.4 0-62.2 4.9-104.5 18C44.3 7.9 35.3 0 24 0 10.7 0 0 10.7 0 24v476c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12V398.1c37.3-11.8 69.6-16.5 98.5-16.5 81.2 0 137.8 34.4 219.1 34.4 35.3 0 75.1-6.5 123.7-25 14-5.4 22.8-17.9 22.8-31.2V33.4C512 13 493.4 0 472.5 0zM464 349.1c-35.3 12.7-67.6 18.9-98.5 18.9-75.5 0-128.5-34.4-219.1-34.4-31.9 0-64.5 4.7-98.5 14.2V68.5C87.7 55 121.7 48.4 151.4 48.4c66.3 0 105.2 34.5 180.8 34.5 40.3 0 82.3-10 131.8-31.5v297.7z\"]\n};\nvar faFlagCheckered = {\n prefix: 'far',\n iconName: 'flag-checkered',\n icon: [512, 512, [], \"f11e\", \"M448 327.4V258c-15.5 9.4-44 19-72 22.9v70.4c28.7-2.8 54.8-13.5 72-23.9zm0-207.3c-21.2 8.1-46.7 15.8-72 20.2v70.6c25-4 48.6-12.5 72-21.4zM88 336.8c21.7-7 47.2-11.9 72-14.5v-70.1c-24.3 2.4-48 7.6-72 15.3zm357.1-285C409.2 67.3 371.6 80 336.2 80c-49.1 0-93.3-32-161.9-32-31.3 0-58.3 6.5-80.8 15.2 2.2-6.7 3-13.7 2.1-20.7C93.1 19.6 74.2 1.6 51.2.1 23.2-1.7 0 20.4 0 48c0 17.8 9.7 33.3 24 41.6V496c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-83.4c37.9-17.3 71.3-28.6 127.8-28.6 49.1 0 93.3 32 161.9 32 58.5 0 102-22.6 128.5-40 13.6-8.9 21.7-24 21.7-40.2V95.9c.1-34.4-35.2-57.7-66.8-44.1zM464 336c-21.8 15.4-60.8 32-102.3 32-59.9 0-102-32-161.9-32-43.4 0-96.4 9.4-127.8 24V128c21.8-15.4 60.8-32 102.3-32 59.9 0 102 32 161.9 32 43.3 0 96.3-17.4 127.8-32zM88 136.6V206c15.5-9.4 44-19 72-22.9v-70.4c-28.7 2.8-54.8 13.4-72 23.9zm72 46.5v69.1c30.5-3 51.4-1.3 72 3.1v-67c-28.5-7.6-48.7-8.4-72-5.2zm144 92.7c-23.7-6.2-46.5-15.2-72-20.5v67.5c25.9 4.3 48.9 12.9 72 19.6v-66.6c28.5 7.5 48.7 8.3 72 5.2v-70c-23.8 3.8-46.5 3.3-72-2.1zm0-134.5c-25.9-4.3-48.8-12.9-72-19.7v66.6c23.8 6.3 46.5 15.2 72 20.5z\"]\n};\nvar faFlagUsa = {\n prefix: 'far',\n iconName: 'flag-usa',\n icon: [512, 512, [], \"f74d\", \"M472.5 0c-7 0-14.3 1.5-21.2 4.6-50.5 22.7-87.8 30.3-119.1 30.3C266.1 34.9 227.7.4 151.4.4c-28.4 0-62.2 4.9-104.5 18C44.3 7.9 35.3 0 24 0 10.7 0 0 10.7 0 24v476c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12V398.1c37.3-11.8 69.6-16.5 98.5-16.5 81.2 0 137.8 34.4 219.1 34.4 35.3 0 75.1-6.5 123.7-25 14-5.4 22.8-17.9 22.8-31.2V33.4C512 13 493.4 0 472.5 0zM176 40c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 56c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm-72-56c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 56c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm360 253.1c-79 28.4-125.8 20.7-196.4 3.1-73-18.2-132.2-28.8-219.6-4.4v-55.3c92.6-32.5 146-19.4 202.2-5.2C304.4 301 363.8 317.4 464 286v63.1zm0-113.6c-92.5 32.4-146 19.4-202.1 5.2-57.5-14.5-117.4-29-213.9 1.3v-61.6c92.6-32.5 146-19.4 202.2-5.2C304.4 189 363.8 205.4 464 174v61.5zm0-112c-96.5 33.8-150.9 18.1-208 3.7V71c22.2 6.4 46.9 11.9 76.2 11.9 40.3 0 82.3-10 131.8-31.5v72.1z\"]\n};\nvar faFlame = {\n prefix: 'far',\n iconName: 'flame',\n icon: [384, 512, [], \"f6df\", \"M192 0C79.7 101.33 0 220.92 0 300.55 0 425.05 78.95 512 192 512s192-86.95 192-211.45C384 220.6 303.78 100.86 192 0zm0 464c-86.13 0-144-65.69-144-163.45 0-46.27 45.31-136.62 143.96-234.47C278.21 151.97 336 244.82 336 300.55 336 398.31 278.13 464 192 464zm45.07-224.32c-19.89-17-38.67-33.06-38.67-58.22 0-3.4-2.82-4.69-4.04-5.08-2.32-.74-5.77-.57-7.94 2.38C131.52 253.42 216 248 216 302c0 23.2-18.8 42-42 42-23.19 0-42-18.8-42-42v-30a6 6 0 0 0-10.24-4.24C115.38 273.95 96 294.48 96 327.58c0 48.75 43.06 88.42 96 88.42s96-39.67 96-88.42c0-44.37-25.89-66.5-50.93-87.9z\"]\n};\nvar faFlashlight = {\n prefix: 'far',\n iconName: 'flashlight',\n icon: [640, 512, [], \"f8b8\", \"M608 96h-32a317 317 0 0 0-175.89 53.26L384 160H48a48 48 0 0 0-48 48v96a48 48 0 0 0 48 48h336l16.13 10.75A317.07 317.07 0 0 0 576 416h32a32 32 0 0 0 32-32V128a32 32 0 0 0-32-32zm-64 269.65a267.55 267.55 0 0 1-117.24-42.84L398.53 304H48v-96h350.54l28.19-18.8A267.73 267.73 0 0 1 544 146.35zM284 232h-24a24 24 0 0 0 0 48h24a24 24 0 0 0 0-48z\"]\n};\nvar faFlask = {\n prefix: 'far',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M437.2 403.5L320 215V48h20c6.6 0 12-5.4 12-12V12c0-6.6-5.4-12-12-12H108c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h20v167L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM377.1 464H70.9c-18.1 0-28.7-20.1-19.3-35.2l117.2-188.5c4.7-7.6 7.2-16.4 7.2-25.3V48h96v167c0 9 2.5 17.7 7.2 25.3l117.2 188.5c9.4 15.1-1.1 35.2-19.3 35.2z\"]\n};\nvar faFlaskPoison = {\n prefix: 'far',\n iconName: 'flask-poison',\n icon: [416, 512, [], \"f6e0\", \"M304 169.05V48h16c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v120.12C45.61 202.85 0 271.88 0 352c0 53.79 20.43 102.79 53.94 139.7 11.95 13.17 29.22 20.3 47 20.3h214.05c18.06 0 35.49-7.44 47.58-20.85 32.24-35.78 52.25-82.79 53.39-134.48 1.75-79.95-44.77-151.49-111.96-187.62zm22.91 289.96c-2.81 3.12-7.27 4.99-11.92 4.99H100.94c-4.58 0-8.86-1.71-11.45-4.56C62.73 429.97 48 391.81 48 352c0-59.36 33.05-113.52 86.25-141.35L160 197.17V48h96v149.74l25.27 13.59c53.96 29.02 87.99 85.65 86.7 144.29-.85 38.23-15.43 74.95-41.06 103.39zM208 256c-49.09 0-88.89 31.84-88.89 71.11 0 23.19 14.09 43.59 35.55 56.57v14.54c0 9.82 7.96 17.78 17.78 17.78h71.11c9.82 0 17.78-7.96 17.78-17.78v-14.54c21.47-12.98 35.55-33.38 35.55-56.57C296.89 287.84 257.1 256 208 256zm-35.55 88.89c-9.82 0-17.78-7.96-17.78-17.78s7.96-17.78 17.78-17.78 17.78 7.96 17.78 17.78c-.01 9.82-7.97 17.78-17.78 17.78zm71.11 0c-9.82 0-17.78-7.96-17.78-17.78s7.96-17.78 17.78-17.78 17.78 7.96 17.78 17.78-7.97 17.78-17.78 17.78z\"]\n};\nvar faFlaskPotion = {\n prefix: 'far',\n iconName: 'flask-potion',\n icon: [416, 512, [], \"f6e1\", \"M304 169.05V48h16c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v120.12C45.61 202.85 0 271.88 0 352c0 53.79 20.43 102.79 53.94 139.7 11.95 13.17 29.22 20.3 47 20.3h214.05c18.06 0 35.49-7.44 47.58-20.85 32.24-35.78 52.25-82.79 53.39-134.48 1.75-79.95-44.77-151.49-111.96-187.62zm-144 28.12V48h96v149.74c16.81 9.04 94.76 40.59 109.67 130.26h-31.76c-26.41 0-52.88-6.08-76.47-17.58-61-29.75-133.88-29.75-194.88 0l-9.93 4.84C72.41 232.48 142.66 206.25 160 197.17zm166.91 261.84c-2.81 3.12-7.27 4.99-11.92 4.99H100.94c-4.58 0-8.86-1.71-11.45-4.56-22.64-24.94-36.04-56.23-39.81-89.35l33.92-16.51c47.81-23.34 104.97-23.34 152.84 0 30.09 14.67 63.81 22.42 97.47 22.42h31.77c-4.68 30.72-17.76 59.7-38.77 83.01z\"]\n};\nvar faFlower = {\n prefix: 'far',\n iconName: 'flower',\n icon: [512, 512, [], \"f7ff\", \"M461.55 256C492.22 229.19 512 190.23 512 146.29A146.28 146.28 0 0 0 365.71 0C321.77 0 282.81 19.78 256 50.45 229.19 19.78 190.23 0 146.29 0A146.28 146.28 0 0 0 0 146.29c0 43.94 19.78 82.9 50.45 109.71C19.78 282.81 0 321.77 0 365.71A146.29 146.29 0 0 0 146.29 512c43.94 0 82.9-19.78 109.71-50.45C282.81 492.22 321.77 512 365.71 512A146.29 146.29 0 0 0 512 365.71c0-43.94-19.78-82.9-50.45-109.71zm-95.84 208c-28.25 0-54.38-12.09-73.57-34L256 388.62 219.86 430c-19.19 22-45.32 34-73.57 34A98.4 98.4 0 0 1 48 365.71c0-28.25 12.09-54.38 34-73.57L123.38 256 82 219.86c-22-19.19-34-45.32-34-73.57A98.4 98.4 0 0 1 146.29 48c28.25 0 54.38 12.09 73.57 34L256 123.38 292.14 82c19.19-22 45.32-34 73.57-34A98.4 98.4 0 0 1 464 146.29c0 28.25-12.09 54.38-34 73.57L388.62 256 430 292.14c22 19.19 34 45.32 34 73.57A98.4 98.4 0 0 1 365.71 464zM256 176a80 80 0 1 0 80 80 80 80 0 0 0-80-80z\"]\n};\nvar faFlowerDaffodil = {\n prefix: 'far',\n iconName: 'flower-daffodil',\n icon: [512, 512, [], \"f800\", \"M495.87 288h-47.26c-67.45 0-127.49 30-168.61 77v-82a90.52 90.52 0 0 0 102.53-139A89.43 89.43 0 0 0 400 90.67 90.76 90.76 0 0 0 309.34 0 89.39 89.39 0 0 0 256 17.47 89.4 89.4 0 0 0 202.65 0 90.75 90.75 0 0 0 112 90.67 89.43 89.43 0 0 0 129.47 144 89.43 89.43 0 0 0 112 197.33a90.48 90.48 0 0 0 120 85.72v82c-41.12-47-101.16-77-168.6-77H16.13c-9.19 0-17 9-16.06 19.65C10.06 422.15 106.43 512 223.83 512h64.34c117.4 0 213.77-89.85 223.76-204.35.92-10.65-6.87-19.65-16.06-19.65zm-272 176c-79.54 0-148.7-54.09-169.91-128 75.25 0 128.67 32.21 160.93 85.92L240.13 464zm12.92-241.37a42.48 42.48 0 1 1-59.38-59.38L203.19 144l-25.82-19.25A42.27 42.27 0 0 1 160 90.67 42.7 42.7 0 0 1 202.65 48a42.26 42.26 0 0 1 34.1 17.38L256 91.2l19.25-25.82A42.24 42.24 0 0 1 309.34 48 42.71 42.71 0 0 1 352 90.67a42.28 42.28 0 0 1-17.38 34.08L308.81 144l25.81 19.25A42.28 42.28 0 0 1 352 197.33 42.71 42.71 0 0 1 309.34 240a42.26 42.26 0 0 1-34.09-17.37L256 196.8zM288 464h-16.13l25.28-42.08c32.07-53.4 85.3-85.92 160.93-85.92-21.22 73.91-90.39 128-170.08 128zm0-320a32 32 0 1 0-32 32 32 32 0 0 0 32-32z\"]\n};\nvar faFlowerTulip = {\n prefix: 'far',\n iconName: 'flower-tulip',\n icon: [512, 512, [], \"f801\", \"M495.87 288H448.6c-67.44 0-127.48 30-168.6 77v-77.16c75.24-.88 136-62 136-137.44V16a16 16 0 0 0-25.45-12.88l-73.91 53.64-48.35-51a16 16 0 0 0-24.58 0l-48.35 51-73.91-53.64A16 16 0 0 0 96 16v134.4c0 75.45 60.76 136.6 136 137.44V365c-41.12-47-101.16-77-168.6-77H16.13c-9.19 0-17 9-16.06 19.65C10.06 422.15 106.43 512 223.83 512h64.34c117.4 0 213.77-89.85 223.76-204.35.92-10.65-6.87-19.65-16.06-19.65zM144 150.4v-72l56 41.6 56-56 56 56 56-41.6v72a89.6 89.6 0 0 1-89.6 89.6h-44.8a89.61 89.61 0 0 1-89.6-89.6zM223.83 464c-79.54 0-148.7-54.09-169.91-128 75.25 0 128.67 32.21 160.93 85.92L240.13 464zm64.17 0h-16.13l25.28-42.08c32-53.34 85.23-85.92 160.93-85.92-21.22 73.91-90.39 128-170.08 128z\"]\n};\nvar faFlushed = {\n prefix: 'far',\n iconName: 'flushed',\n icon: [496, 512, [], \"f579\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm96-312c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-112 24c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80zm-80 48c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm160 144H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z\"]\n};\nvar faFlute = {\n prefix: 'far',\n iconName: 'flute',\n icon: [640, 512, [], \"f8b9\", \"M592 160H48a48 48 0 0 0-48 48v96a48 48 0 0 0 48 48h544a48 48 0 0 0 48-48v-96a48 48 0 0 0-48-48zM96 304H48v-96h48zm496 0H144v-96h448zm-80-24a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm-96 0a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm-96 0a24 24 0 1 0-24-24 24 24 0 0 0 24 24z\"]\n};\nvar faFluxCapacitor = {\n prefix: 'far',\n iconName: 'flux-capacitor',\n icon: [448, 512, [], \"f8ba\", \"M448,120V392a88.1599,88.1599,0,0,1-88,88H88A88.15989,88.15989,0,0,1,0,392V120A88.15989,88.15989,0,0,1,88,32H360A88.1599,88.1599,0,0,1,448,120Zm-48,0a40.027,40.027,0,0,0-40-40H88a40.027,40.027,0,0,0-40,40V392a40.027,40.027,0,0,0,40,40H360a40.027,40.027,0,0,0,40-40Zm-16,56a80.034,80.034,0,0,1-80,80,91.97421,91.97421,0,0,1-20.43751-3l48.71876-48.71875C339,197.76562,344.5,184.875,344.5,175.51562a40.017,40.017,0,0,0-40-40c-9.375,0-22.25,5.46876-28.78125,12.20313L224,199.4375l-51.71875-51.73438C165.75,140.96875,152.875,135.5,143.5,135.5a40.027,40.027,0,0,0-40,40c0,9.375,5.5,22.26562,12.21875,28.76562L164.4375,253A91.97413,91.97413,0,0,1,144,256a80,80,0,1,1,80-80,80,80,0,0,1,160,0ZM208,336V262.625l-75.3125-75.3125a18.38329,18.38329,0,0,1-4.375-11.01562,15.97086,15.97086,0,0,1,16-16,18.49292,18.49292,0,0,1,11,4.39062L224,233.375l68.68749-68.6875a18.49294,18.49294,0,0,1,11-4.39062,15.97086,15.97086,0,0,1,16,16,18.38323,18.38323,0,0,1-4.375,11.01562L240,262.625V336a16,16,0,0,1-32,0Zm96,.10938a80,80,0,0,1-160,0C144,312.125,160.3125,282.0625,180.43749,269L184,272.5625V336a40,40,0,0,0,80,0V272.5625L267.56249,269C287.68749,282.0625,304,312.125,304,336.10938Z\"]\n};\nvar faFog = {\n prefix: 'far',\n iconName: 'fog',\n icon: [640, 512, [], \"f74e\", \"M208 464H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H288c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-48-56v-16c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16zm-404-88h296c59.6 0 108-48.5 108-108 0-57.3-44.9-104.3-101.3-107.8C461.2 61.8 422 32 376 32c-13.5 0-26.8 2.6-39.2 7.7C314.3 14.5 282.4 0 248 0c-64 0-116.4 50.3-119.8 113.4C89.6 130.4 64 168.5 64 212c0 59.5 48.4 108 108 108zm-13.6-166.3l20.8-4.8-2.8-24.9c-.2-1.3-.4-2.6-.4-4 0-39.7 32.3-72 72-72 25.2 0 48.2 13.1 61.4 35.1l13.3 22.1 21.1-14.9C353.4 83.6 364.5 80 376 80c28.6 0 52.4 21.7 55.3 50.4l2.2 21.6H468c33.1 0 60 26.9 60 60s-26.9 60-60 60H172c-33.1 0-60-26.9-60-60 0-28 19.1-52 46.4-58.3z\"]\n};\nvar faFolder = {\n prefix: 'far',\n iconName: 'folder',\n icon: [512, 512, [], \"f07b\", \"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z\"]\n};\nvar faFolderDownload = {\n prefix: 'far',\n iconName: 'folder-download',\n icon: [512, 512, [], \"e053\", \"M464,128H272L217.37,73.37A32,32,0,0,0,194.74,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128Zm0,272H48V112H188.12L232,155.88V256H183.12a12,12,0,0,0-8.45,20.52L247,348.29a12.81,12.81,0,0,0,18,0h0l72.31-71.77A12,12,0,0,0,328.88,256H280V176H464Z\"]\n};\nvar faFolderMinus = {\n prefix: 'far',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224zM176 280v16c0 8.84 7.16 16 16 16h128c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H192c-8.84 0-16 7.16-16 16z\"]\n};\nvar faFolderOpen = {\n prefix: 'far',\n iconName: 'folder-open',\n icon: [576, 512, [], \"f07c\", \"M527.9 224H480v-48c0-26.5-21.5-48-48-48H272l-64-64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h400c16.5 0 31.9-8.5 40.7-22.6l79.9-128c20-31.9-3-73.4-40.7-73.4zM48 118c0-3.3 2.7-6 6-6h134.1l64 64H426c3.3 0 6 2.7 6 6v42H152c-16.8 0-32.4 8.8-41.1 23.2L48 351.4zm400 282H72l77.2-128H528z\"]\n};\nvar faFolderPlus = {\n prefix: 'far',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M464,128H272L217.37,73.37A32,32,0,0,0,194.74,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128Zm0,272H48V112H188.12l54.63,54.63A32,32,0,0,0,265.38,176H464ZM247.5,208a16,16,0,0,0-16,16v40H192a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h39.5v40a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V312H320a16,16,0,0,0,16-16V280a16,16,0,0,0-16-16H279.5V224a16,16,0,0,0-16-16Z\"]\n};\nvar faFolderTimes = {\n prefix: 'far',\n iconName: 'folder-times',\n icon: [512, 512, [], \"f65f\", \"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224zM227.71 225.77a15.964 15.964 0 0 0-11.31-4.69c-4.09 0-8.19 1.56-11.31 4.69l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L222.06 288l-28.28 28.28c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31c3.12 3.12 7.22 4.69 11.31 4.69s8.19-1.56 11.31-4.69L256 321.94l28.29 28.28c3.12 3.12 7.22 4.69 11.31 4.69s8.19-1.56 11.31-4.69l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L289.94 288l28.28-28.29c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31a15.964 15.964 0 0 0-11.31-4.69c-4.09 0-8.19 1.56-11.31 4.69L256 254.06l-28.29-28.29z\"]\n};\nvar faFolderTree = {\n prefix: 'far',\n iconName: 'folder-tree',\n icon: [576, 512, [], \"f802\", \"M288 224h224a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32H400L368 0h-80a32 32 0 0 0-32 32v72H80V16A16 16 0 0 0 64 0H48a16 16 0 0 0-16 16v392a32 32 0 0 0 32 32h192v40a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32H400l-32-32h-80a32 32 0 0 0-32 32v72H80V152h176v40a32 32 0 0 0 32 32zm16-176h44.12l32 32H496v96H304zm0 288h44.12l32 32H496v96H304z\"]\n};\nvar faFolderUpload = {\n prefix: 'far',\n iconName: 'folder-upload',\n icon: [512, 512, [], \"e054\", \"M464,128H272L217.37,73.37A32,32,0,0,0,194.74,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128Zm0,272H280V320h48.88a12,12,0,0,0,8.45-20.52L265,227.71a12.81,12.81,0,0,0-18,0h0l-72.31,71.77A12,12,0,0,0,183.12,320H232v80H48V112H188.12l54.63,54.63A32,32,0,0,0,265.38,176H464Z\"]\n};\nvar faFolders = {\n prefix: 'far',\n iconName: 'folders',\n icon: [640, 512, [], \"f660\", \"M592 64H400L345.37 9.37c-6-6-14.14-9.37-22.63-9.37H176c-26.51 0-48 21.49-48 48v80H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48v-80h80c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zM464 464H48V176h80v160c0 26.51 21.49 48 48 48h288v80zm128-128H176V48h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H592v224z\"]\n};\nvar faFont = {\n prefix: 'far',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M432 432h-33.32l-135-389.24A16 16 0 0 0 248.55 32h-49.1a16 16 0 0 0-15.12 10.76L49.32 432H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-35.44l33.31-96h164.26l33.31 96H304a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM158.53 288L224 99.31 289.47 288z\"]\n};\nvar faFontAwesomeLogoFull = {\n prefix: 'far',\n iconName: 'font-awesome-logo-full',\n icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFontCase = {\n prefix: 'far',\n iconName: 'font-case',\n icon: [640, 512, [], \"f866\", \"M624 160h-16a16 16 0 0 0-16 16v12.82C570 171.07 542.44 160 512 160a128 128 0 0 0-128 128v32a128 128 0 0 0 128 128c30.44 0 58-11.07 80-28.82V432a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V176a16 16 0 0 0-16-16zm-32 160a80 80 0 0 1-160 0v-32a80 80 0 0 1 160 0zM212.5 74.35a16 16 0 0 0-15-10.35h-43.03a16 16 0 0 0-15 10.35L1 426.35A16 16 0 0 0 16 448h17.14a16 16 0 0 0 15-10.35L88.22 336h175.56l40.11 101.65a16 16 0 0 0 15 10.35H336a16 16 0 0 0 15-21.65zM107.16 288L176 113.58 244.84 288z\"]\n};\nvar faFootballBall = {\n prefix: 'far',\n iconName: 'football-ball',\n icon: [496, 512, [], \"f44e\", \"M481.4 60.9c-4.8-18.2-19.1-32.5-37.2-37.4-23.8-6.4-211.8-59.9-349.7 78.2C-28.2 224.6-2.4 386.9 14.6 451.6c4.8 18.2 19.1 31.6 37.2 36.5 23.8 6.4 211.7 60.9 349.7-77.3 122.7-122.9 96.9-285.3 79.9-349.9zM64.3 442.6c-1.6-.4-2.8-1.7-3.2-3.3-5.4-20.3-11.7-51.9-12.8-88.9l105.1 105.1c-36.8-1.2-68.5-7.4-89.1-12.9zm303.3-66.7c-41.2 41.3-91.6 66.6-150.1 75.9L52.3 286.6c8.2-50.2 29.6-103.9 76.1-150.5 41.2-41.3 91.6-66.6 150.1-75.9l165.1 165.1c-8.1 50.3-29.5 104-76 150.6zm-25-319.4c36.8 1.2 68.5 7.4 89.1 12.9 1.6.4 2.8 1.7 3.2 3.3 5.4 20.3 11.7 51.9 12.8 88.9L342.6 56.5zm-88.9 103.3l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-22.7 22.7-28.3-28.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-22.6 22.6-28.3-28.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-28.3 28.3c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l28.3-28.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.1 3.1-8.2 0-11.3l-28.3-28.3 22.6-22.6 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.1 3.1-8.2 0-11.3L270.6 256l22.6-22.6 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.1 3.1-8.2 0-11.3l-28.3-28.3 28.3-28.3c3.1-3.1 3.1-8.2 0-11.3l-11.3-11.3c-3.1-3.1-8.2-3.1-11.3 0l-28.3 28.3-28.2-28.4c-3.2-3.1-8.2-3.1-11.3 0z\"]\n};\nvar faFootballHelmet = {\n prefix: 'far',\n iconName: 'football-helmet',\n icon: [512, 512, [], \"f44f\", \"M479.6 320H355.5l-15.2-76 136.5-17.8c9-1.2 15.6-9.8 13.9-18.7C468.1 93.8 368.3 8 248 8 114.9 8 18.2 109.5 2.6 219.9-7.6 292 13.3 359 53.7 409.9c3.1 3.9 7.8 6.1 12.8 6.1H120c92.7 46.4 95 49.8 115 49.8 17 0 33.8-6.6 46.4-19.2 36.2-36.2 10.9-79.7 5-94.6h42.9l9.5 49.5c9.5 47.4 47.6 83.2 95.6 89.2 42.2 5.3 52.6 9.6 66.5-2.6 14.3-12.6 10.8-18.4 10.8-136.1-.1-17.7-14.4-32-32.1-32zm-206 0l-10.3-25.7c-7.8-19.4 4.9-40.9 25.6-43.6l19.6-2.6 14.4 71.9h-49.3zm9.1-116.9c-51.8 6.7-83.4 60.5-64 109l32.6 81.6c4.6 11.5-3.9 24.1-16.3 24.1-5.9 0 .2 2.1-103.7-49.8H82.4c-28-41.2-39.5-90.9-32.3-141.4C62.3 140.1 139.6 56 248 56c83.2 0 156.4 51.9 185.8 127.4l-151.1 19.7zm196.9 261l-41.3-5.2c-25.9-3.2-47.6-18.7-59.7-40.7h101.1l-.1 45.9zm0-80.1H368.3l-6.4-32h117.7v32zM176 312c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24z\"]\n};\nvar faForklift = {\n prefix: 'far',\n iconName: 'forklift',\n icon: [640, 512, [], \"f47a\", \"M416 344.9V237.1c0-8.7-1.8-17.2-5.2-25.2L332.5 29.1C324.9 11.4 307.6 0 288.3 0H144c-26.5 0-48 21.5-48 48v112H48c-26.5 0-48 21.5-48 48v208c0 53 43 96 96 96s96-43 96-96h64c0 53 43 96 96 96s96-43 96-96c0-28.3-12.5-53.5-32-71.1zM144 48h144.3l78.4 182.8c.9 2 1.3 4.1 1.3 6.3v2.9H246.1c-8.9 0-17.7-3-24.7-8.5L144 170.6V48zM96 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm173.3-96h-90.6c-16.6-28.6-47.2-48-82.7-48-17.6 0-33.8 5.1-48 13.3V208h65.9l77.9 61.2c15.4 12.1 34.8 18.8 54.4 18.8H368v33.6c-5.2-.9-10.5-1.6-16-1.6-35.4 0-66.1 19.4-82.7 48zm82.7 96c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm272-64h-96V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v416c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16z\"]\n};\nvar faForward = {\n prefix: 'far',\n iconName: 'forward',\n icon: [512, 512, [], \"f04e\", \"M244.5 230.8L52.5 71.4C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160.6c15.3-12.8 15.3-36.4 0-49.2zM48 381.7V130.1l151 125.4L48 381.7zm452.5-150.9l-192-159.4C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160.6c15.3-12.8 15.3-36.4 0-49.2zM304 381.7V130.1l151 125.4-151 126.2z\"]\n};\nvar faFragile = {\n prefix: 'far',\n iconName: 'fragile',\n icon: [288, 512, [], \"f4bb\", \"M200 464h-32V349.4c72.7-12.4 126.3-79.5 119.4-156.7l-16-178.1C270.7 6.3 263.9 0 255.7 0H32.3c-8.2 0-15 6.3-15.7 14.6L.6 192.7C-6.3 269.9 47.3 337 120 349.4V464H88.1c-37.2 0-50 48-32 48h175.8c18.1 0 5.2-48-31.9-48zM72.6 272c-18.5-20.6-27.4-47.3-24.9-75L61.1 48h61.7l26.6 38L80 130l98.7 94-40.1-82L208 98l-24.8-50H227l13.3 149c2.5 27.8-6.4 54.4-24.9 75s-43.9 32-71.4 32-52.9-11.3-71.4-32z\"]\n};\nvar faFrenchFries = {\n prefix: 'far',\n iconName: 'french-fries',\n icon: [512, 512, [], \"f803\", \"M351.54 228.14c.4-1.78 1.46-3.22 2.06-4.91l30.15-172.46a16 16 0 0 0-20.34-18.08l-34.28 10.25c-4.24 1.27-7.17 4.51-9.13 8.33v207.27c17.55-8.38 29.15-19.54 31.54-30.4zM288 268.78V32a16 16 0 0 0-8.84-14.31l-32-16A16 16 0 0 0 224 16v252.78a160.62 160.62 0 0 0 64 0zM431.45 192l16.3-93.23a16 16 0 0 0-20.34-18.08l-17.31 5.17-18.75 107.26c2.24-.32 4.33-1.12 6.63-1.12zm-350.9 0H114c3.6 0 7 1 10.35 1.75l-20-107.16-19.74-5.9a16 16 0 0 0-20.36 18.08zm84.62 45.79c5.3 7.58 14.49 14.86 26.83 20.75V33.17l-3.76-20.1a16 16 0 0 0-25.39-9.81l-28.51 21.62a16 16 0 0 0-6.07 15.69zM432 224h-34c-6.92 0-13.7 4.27-15.19 11-8.6 39-62.09 69-126.79 69s-118.19-30-126.79-69c-1.49-6.76-8.27-11-15.19-11H80a16 16 0 0 0-15.62 19.47l54.1 243.47A32 32 0 0 0 149.73 512h212.54a32 32 0 0 0 31.24-25.06l54.1-243.47A16 16 0 0 0 432 224zm-82.56 240H162.56l-33.3-149.86C161.08 337.86 205.8 352 256 352s94.92-14.14 126.74-37.86z\"]\n};\nvar faFrog = {\n prefix: 'far',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M576 189.94c0-21.4-11.72-40.95-30.48-51.23-28.68-15.71-65.94-29.69-85.51-36.62C448.64 61.74 411.98 32 368 32c-42.97 0-78.91 28.42-91.16 67.35C120.27 120.52-.49 254.49 0 416.98.11 451.89 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-29.74l18.87-25.48c9.29-13.93 14.7-29.24 17.15-44.82L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.183 58.183 0 0 0 576 189.94zm-53.19 8.87l-174.79 96.05c-7.56-15.39-18.32-29.45-32.92-40.4-39.66-29.72-95-29.75-134.72 0l-34.78 26.09c-10.59 7.95-12.75 23-4.78 33.61 7.97 10.59 23 12.77 33.59 4.8l34.78-26.09c22.72-17.08 54.44-17.02 77.09 0 27.28 20.45 33.81 58.67 15.59 86.06L262.56 432H64c-8.65 0-15.97-6.95-16-15.17-.41-135.69 100.74-251.73 235.27-269.92l30.21-4.08 9.15-29.08C328.98 93.56 347.21 80 368 80c21.15 0 39.99 14.43 45.81 35.1l6.74 23.93 23.44 8.3c18.33 6.49 52.91 19.47 78.47 33.47 3.47 1.9 5.54 5.32 5.54 9.14 0 3.67-1.99 7.07-5.19 8.87zM368 120c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24z\"]\n};\nvar faFrostyHead = {\n prefix: 'far',\n iconName: 'frosty-head',\n icon: [384, 512, [], \"f79b\", \"M368 240h-32V32c0-17.7-14.3-32-32-32H80C62.3 0 48 14.3 48 32v208H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h13.1C20.9 308.4 16 330.4 16 353.7c0 62.8 32.8 117.5 82 148.8 10.7 6.8 23.6 9.5 36.2 9.5h41c-8.6-12.5-19.8-28.1-31.1-48h-9.9c-5.4 0-8.9-1-10.4-2C86.3 438.2 64 397.7 64 353.7c0-24.3 7.4-46.4 19.2-65.7H302c7.6 12.7 13.1 26.6 15.8 41.3 9.2 50.8-11.2 100.6-53.1 129.8-4.7 3.3-10.1 5-15.7 5h-9.2c-11.3 20-22.4 35.5-31.1 48H249c15.4 0 30.5-4.8 43.1-13.6 53.9-37.6 86.1-104.1 72.8-177.7-2-11.4-5.6-22.2-9.8-32.7H368c8.8 0 16-7.2 16-16v-16c0-8.9-7.2-16.1-16-16.1zm-80 0H96v-64h192v64zm0-112H96V48h192v80zm-96 240c-20.6 0-37.3 16.7-37.3 37.3C154.7 426 192 480 192 480s37.3-54 37.3-74.7c0-20.6-16.7-37.3-37.3-37.3zm-82.7-26.7c0 11.8 9.6 21.3 21.3 21.3 11.8 0 21.3-9.6 21.3-21.3 0-11.8-9.6-21.3-21.3-21.3-11.7 0-21.3 9.6-21.3 21.3zm165.4 0c0-11.8-9.6-21.3-21.3-21.3-11.8 0-21.3 9.6-21.3 21.3 0 11.8 9.6 21.3 21.3 21.3 11.7.1 21.3-9.5 21.3-21.3z\"]\n};\nvar faFrown = {\n prefix: 'far',\n iconName: 'frown',\n icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z\"]\n};\nvar faFrownOpen = {\n prefix: 'far',\n iconName: 'frown-open',\n icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-48-248c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 112c-35.6 0-88.8 21.3-95.8 61.2-2 11.8 9 21.5 20.5 18.1 31.2-9.6 59.4-15.3 75.3-15.3s44.1 5.7 75.3 15.3c11.4 3.5 22.5-6.3 20.5-18.1-7-39.9-60.2-61.2-95.8-61.2z\"]\n};\nvar faFunction = {\n prefix: 'far',\n iconName: 'function',\n icon: [640, 512, [], \"f661\", \"M224 48c0-8.84-7.16-16-16-16h-48c-48.6 0-88 39.4-88 88v48H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v144c0 22.09-17.91 40-40 40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16c48.6 0 88-39.4 88-88V216h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-48c0-22.09 17.91-40 40-40h48c8.84 0 16-7.16 16-16V48zm93.43 60.92l-12.8-9.63c-7.22-5.44-17.81-4.01-22.92 3.41C244.39 157 224 222.17 224 288c0 65.85 20.39 131.02 57.71 185.3 5.11 7.43 15.7 8.85 22.92 3.41l12.8-9.63c6.84-5.14 8.09-14.54 3.28-21.59C289.2 399.27 272 343.92 272 288c0-55.91 17.2-111.26 48.71-157.5 4.8-7.05 3.55-16.44-3.28-21.58zm264.86-6.22c-5.11-7.43-15.7-8.85-22.92-3.41l-12.8 9.63c-6.84 5.14-8.09 14.54-3.28 21.59C574.8 176.73 592 232.08 592 288c0 55.91-17.2 111.26-48.71 157.5-4.8 7.05-3.55 16.44 3.28 21.59l12.8 9.63c7.22 5.44 17.81 4.02 22.92-3.41C619.61 419 640 353.83 640 288c0-65.85-20.39-131.02-57.71-185.3zm-74.84 120.84l-10.99-10.99c-6.07-6.07-15.91-6.07-21.98 0L432 255.03l-42.47-42.47c-6.07-6.07-15.91-6.07-21.98 0l-10.99 10.99c-6.07 6.07-6.07 15.91 0 21.98L399.03 288l-42.47 42.47c-6.07 6.07-6.07 15.91 0 21.98l10.99 10.99c6.07 6.07 15.91 6.07 21.98 0L432 320.97l42.47 42.47c6.07 6.07 15.91 6.07 21.98 0l10.99-10.99c6.07-6.07 6.07-15.91 0-21.98L464.97 288l42.47-42.47c6.08-6.07 6.08-15.92.01-21.99z\"]\n};\nvar faFunnelDollar = {\n prefix: 'far',\n iconName: 'funnel-dollar',\n icon: [640, 512, [], \"f662\", \"M471.61 160.38l94.5-103.14C587.24 36.12 572.27 0 542.4 0H33.6C3.73 0-11.24 36.12 9.89 57.25L192 256v135.91c0 15.11 7.11 29.33 19.2 38.4l95.99 72c8.91 6.68 18.89 9.7 28.63 9.7 16.62 0 32.46-8.82 41.17-23.14C402.66 503.51 432.31 512 464 512c97.2 0 176-78.8 176-176 0-94.63-74.74-171.6-168.39-175.62zM335.99 463.91l-95.99-72V237.33L66.52 48h442.96L393.15 174.96C331.26 202.23 288 264.02 288 336c0 46.7 18.31 89.03 47.99 120.53v7.38zM464 464c-70.58 0-128-57.42-128-128s57.42-128 128-128 128 57.42 128 128-57.42 128-128 128zm27.09-136.58l-45-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V240c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.62.63-42.67 20.55-42.67 45.07 0 19.97 12.98 37.81 31.58 43.39l45 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.11c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V432c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.62-.63 42.67-20.54 42.67-45.07 0-19.97-12.98-37.81-31.58-43.39z\"]\n};\nvar faFutbol = {\n prefix: 'far',\n iconName: 'futbol',\n icon: [496, 512, [], \"f1e3\", \"M483.8 179.4C449.8 74.6 352.6 8 248.1 8c-25.4 0-51.2 3.9-76.7 12.2C41.2 62.5-30.1 202.4 12.2 332.6 46.2 437.4 143.4 504 247.9 504c25.4 0 51.2-3.9 76.7-12.2 130.2-42.3 201.5-182.2 159.2-312.4zm-74.5 193.7l-52.2 6.4-43.7-60.9 24.4-75.2 71.1-22.1 38.9 36.4c-.2 30.7-7.4 61.1-21.7 89.2-4.7 9.3-10.7 17.8-16.8 26.2zm0-235.4l-10.4 53.1-70.7 22-64.2-46.5V92.5l47.4-26.2c39.2 13 73.4 38 97.9 71.4zM184.9 66.4L232 92.5v73.8l-64.2 46.5-70.6-22-10.1-52.5c24.3-33.4 57.9-58.6 97.8-71.9zM139 379.5L85.9 373c-14.4-20.1-37.3-59.6-37.8-115.3l39-36.4 71.1 22.2 24.3 74.3-43.5 61.7zm48.2 67l-22.4-48.1 43.6-61.7H287l44.3 61.7-22.4 48.1c-6.2 1.8-57.6 20.4-121.7 0z\"]\n};\nvar faGalaxy = {\n prefix: 'far',\n iconName: 'galaxy',\n icon: [512, 512, [], \"e008\", \"M506.46308,266.91212l-.03125-.01563C489.18219,193.742,428.121,134.7434,354.59127,120.07188a202.37262,202.37262,0,0,0-60.84248-2.953,106.7548,106.7548,0,0,1,50.81144-45.827,36.20633,36.20633,0,0,0,21.84329-39.31156,36.23237,36.23237,0,0,0-32.59307-30.968A201.526,201.526,0,0,0,266.87436,5.559C193.75089,22.85546,134.75213,83.88525,120.06494,157.43036a202.4291,202.4291,0,0,0-2.84369,60.87354A106.56522,106.56522,0,0,1,71.28471,167.477,36.44256,36.44256,0,0,0,31.973,145.60252a36.21769,36.21769,0,0,0-30.9681,32.593,201.27673,201.27673,0,0,0,4.5624,66.92027C22.817,318.27026,83.8782,377.26885,157.4079,391.94037a201.36172,201.36172,0,0,0,60.84248,2.95306,106.75481,106.75481,0,0,1-50.81144,45.827A36.7142,36.7142,0,0,0,178.18872,511a194.69683,194.69683,0,0,0,19.81156,1,205.81064,205.81064,0,0,0,47.12453-5.54674C318.24828,489.1568,377.247,428.127,391.93423,354.58189a202.42908,202.42908,0,0,0,2.84369-60.87354,106.5652,106.5652,0,0,1,45.93654,50.82691,36.70618,36.70618,0,0,0,70.27978-10.7185A201.96376,201.96376,0,0,0,506.46308,266.91212ZM365.966,233.89728a24.011,24.011,0,0,0-26.24945,31.5305,151.14812,151.14812,0,0,1,5.15614,79.74809c-11.34546,56.73887-58.29565,105.98574-120.96621,116.62221a155.27325,155.27325,0,0,0,54.21761-95.81021,24.02479,24.02479,0,0,0-31.53059-26.265A152.37383,152.37383,0,0,1,166.814,344.879C109.87179,333.50623,60.59548,286.17728,50.22265,223.94439A155.24373,155.24373,0,0,0,146.03314,278.115a24.01235,24.01235,0,0,0,26.24945-31.53049,151.14813,151.14813,0,0,1-5.15614-79.74809C178.47192,110.09751,225.4221,60.85064,288.09266,50.21418a155.27325,155.27325,0,0,0-54.21761,95.8102,24.02987,24.02987,0,0,0,31.53059,26.265,151.21288,151.21288,0,0,1,79.77958-5.15613c56.83669,11.3513,106.19894,58.58454,116.5913,120.93461A155.24378,155.24378,0,0,0,365.966,233.89728Zm-109.96644-17.8902a39.999,39.999,0,1,0,39.99916,39.999A39.99858,39.99858,0,0,0,255.99959,216.00708Z\"]\n};\nvar faGameBoard = {\n prefix: 'far',\n iconName: 'game-board',\n icon: [512, 512, [], \"f867\", \"M480 0H32A32 32 0 0 0 0 32v448a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zm-16 464H48V48h416zm-32-32v-88h-88v88zm0-176v-88h-88v88zM80 80v88h88V80zm264 0h-88v88h88zM168 432h88v-88h-88zm88-264h-88v88h88zm0 176h88v-88h-88zm-88-88H80v88h88z\"]\n};\nvar faGameBoardAlt = {\n prefix: 'far',\n iconName: 'game-board-alt',\n icon: [512, 512, [], \"f868\", \"M480 0H32A32 32 0 0 0 0 32v448a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zm-16 464H48V48h416zm-48-48V256H256v160zM256 96H96v160h160z\"]\n};\nvar faGameConsoleHandheld = {\n prefix: 'far',\n iconName: 'game-console-handheld',\n icon: [384, 512, [], \"f8bb\", \"M352 0H32A32 32 0 0 0 0 32v448a32 32 0 0 0 32 32h256a96 96 0 0 0 96-96V32a32 32 0 0 0-32-32zm-16 416a48.05 48.05 0 0 1-48 48H48V48h288zM112 240h144a32 32 0 0 0 32-32V96a16 16 0 0 0-16-16H112a16 16 0 0 0-16 16v128a16 16 0 0 0 16 16zM88 352h24v24a8 8 0 0 0 8 8h16a8 8 0 0 0 8-8v-24h24a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8h-24v-24a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm144-16a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm24-24a24 24 0 1 0 24-24 24 24 0 0 0-24 24z\"]\n};\nvar faGamepad = {\n prefix: 'far',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M432 240a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-184-24h-48v-48a8 8 0 0 0-8-8h-32a8 8 0 0 0-8 8v48h-48a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8h48v48a8 8 0 0 0 8 8h32a8 8 0 0 0 8-8v-48h48a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8zm248-40a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM464 64H176a176 176 0 1 0 120.81 304h46.38A176 176 0 1 0 464 64zm0 304c-55.81 0-85.5-32.69-101.69-48h-84.62c-15.6 14.69-45.5 48-101.69 48a128 128 0 0 1 0-256h288a128 128 0 0 1 0 256z\"]\n};\nvar faGamepadAlt = {\n prefix: 'far',\n iconName: 'gamepad-alt',\n icon: [640, 512, [], \"f8bc\", \"M400 224a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm238.57 114.4l-27.5-181.25C603.32 106 565.45 65 515.68 53.79a889.52 889.52 0 0 0-391.36 0C74.55 65 36.68 106 28.93 157.15L1.44 338.4C-9.86 412.85 46.94 480 121.21 480h.25a121 121 0 0 0 108.38-67.94L243.67 384h152.66l13.83 28.06A121 121 0 0 0 518.55 480h.25c74.27 0 131.06-67.15 119.77-141.6zm-64.85 68.19A71.66 71.66 0 0 1 518.55 432c-27.79 0-52.82-15.77-65.34-41.17l-13.83-28.05-13.2-26.78H213.82l-13.2 26.78-13.83 28.05c-12.52 25.4-37.55 41.17-65.58 41.17a71.55 71.55 0 0 1-54.93-25.41 76 76 0 0 1-17.39-61l27.49-181.24c4.83-31.8 27.79-56.82 58.5-63.74a841.73 841.73 0 0 1 370.25 0c30.71 6.92 53.66 31.94 58.49 63.74l27.49 181.25a76 76 0 0 1-17.39 60.99zM496 160a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-232 40h-48v-48a8 8 0 0 0-8-8h-32a8 8 0 0 0-8 8v48h-48a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8h48v48a8 8 0 0 0 8 8h32a8 8 0 0 0 8-8v-48h48a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8z\"]\n};\nvar faGarage = {\n prefix: 'far',\n iconName: 'garage',\n icon: [640, 512, [], \"e009\", \"M597.91,110.08,346.31,5.29a68.1,68.1,0,0,0-52.62,0L42.09,110.08A68.11,68.11,0,0,0,0,173.2V496a16,16,0,0,0,16,16H32a16,16,0,0,0,16-16V173.2a20.18,20.18,0,0,1,12.5-18.8L312.19,49.58a20.49,20.49,0,0,1,15.72,0L579.5,154.4A20.38,20.38,0,0,1,592,173.2V496a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V173.2A68.11,68.11,0,0,0,597.91,110.08ZM504,192H136a40,40,0,0,0-40,40V496a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V352H496V496a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V232A40,40,0,0,0,504,192Zm-8,128H144V240H496ZM368,416H272a16,16,0,0,0,0,32h96a16,16,0,0,0,0-32Z\"]\n};\nvar faGarageCar = {\n prefix: 'far',\n iconName: 'garage-car',\n icon: [640, 512, [], \"e00a\", \"M504,192H136a40,40,0,0,0-40,40V496a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V240H496V496a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V232A40,40,0,0,0,504,192Zm93.91-81.91L346.31,5.29a68.1,68.1,0,0,0-52.62,0L42.09,110.08A68.1,68.1,0,0,0,0,173.19V496a16,16,0,0,0,16,16H32a16,16,0,0,0,16-16V173.19a20.19,20.19,0,0,1,12.5-18.8L312.19,49.58a20.49,20.49,0,0,1,15.72,0L579.5,154.39a20.39,20.39,0,0,1,12.5,18.8V496a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V173.19A68.1,68.1,0,0,0,597.91,110.08ZM430.19,370.38l-11.61-46.45a69.07,69.07,0,0,0-67.12-52.4h-64A69.07,69.07,0,0,0,220.35,324l-11.7,46.79A47.83,47.83,0,0,0,176,416v24a23.79,23.79,0,0,0,16,22.38V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V464H384v32a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V462.38A23.79,23.79,0,0,0,464,440V416A47.83,47.83,0,0,0,430.19,370.38ZM232,436.56c-9.6,0-16-6.64-16-16.61s6.4-16.62,16-16.62,24,14.95,24,24.92S241.6,436.56,232,436.56ZM258.81,368l8.11-32.42a21.14,21.14,0,0,1,20.54-16.05h64A21.14,21.14,0,0,1,372,335.58L380.12,368ZM408,436.56c-9.6,0-24,1.66-24-8.31s14.4-24.92,24-24.92S424,410,424,420,417.6,436.56,408,436.56Z\"]\n};\nvar faGarageOpen = {\n prefix: 'far',\n iconName: 'garage-open',\n icon: [640, 512, [], \"e00b\", \"M597.91,110.08,346.31,5.29a68.1,68.1,0,0,0-52.62,0L42.09,110.08A68.1,68.1,0,0,0,0,173.19V496a16,16,0,0,0,16,16H32a16,16,0,0,0,16-16V173.19a20.19,20.19,0,0,1,12.5-18.8L312.19,49.58a20.49,20.49,0,0,1,15.72,0L579.5,154.39a20.39,20.39,0,0,1,12.5,18.8V496a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V173.19A68.1,68.1,0,0,0,597.91,110.08ZM504,192H136a40,40,0,0,0-40,40V496a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V320H496V496a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V232A40,40,0,0,0,504,192Zm-8,48v48H144V240H496ZM430.19,370.38,425.6,352H376.12l4,16H258.81l4-16H213.33l-4.68,18.74A47.83,47.83,0,0,0,176,416v24a23.79,23.79,0,0,0,16,22.38V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V464H384v32a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V462.38A23.79,23.79,0,0,0,464,440V416A47.83,47.83,0,0,0,430.19,370.38ZM232,436.56c-9.6,0-16-6.64-16-16.61s6.4-16.62,16-16.62,24,14.95,24,24.92S241.6,436.56,232,436.56Zm176,0c-9.6,0-24,1.66-24-8.31s14.4-24.92,24-24.92S424,410,424,420,417.6,436.56,408,436.56Z\"]\n};\nvar faGasPump = {\n prefix: 'far',\n iconName: 'gas-pump',\n icon: [512, 512, [], \"f52f\", \"M493.3 107.3l-86.6-86.6c-3.1-3.1-8.2-3.1-11.3 0l-22.6 22.6c-3.1 3.1-3.1 8.2 0 11.3L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V48c0-26.5-21.5-48-48-48H80C53.5 0 32 21.5 32 48v416H8c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8h336c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8h-24V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.7-33.3-18.7-45.3zM272 464H80V240h192v224zm0-272H80V48h192v144z\"]\n};\nvar faGasPumpSlash = {\n prefix: 'far',\n iconName: 'gas-pump-slash',\n icon: [640, 512, [], \"f5f4\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM480 97.94V160c0 28.14 20.93 51.27 48 55.19v112.04l48 37.53V152.57c0-16.97-6.74-33.25-18.75-45.26l-86.63-86.63c-3.12-3.12-8.19-3.12-11.31 0L436.68 43.3c-3.12 3.12-3.12 8.19 0 11.31L480 97.94zM336 48v129.12l48 37.53V48c0-26.51-21.49-48-48-48H144c-9.28 0-17.86 2.75-25.21 7.31L170.84 48H336zm72 416h-24v-66.58l-48-37.53V464H144V209.79l-48-37.53V464H72c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8h336c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8z\"]\n};\nvar faGavel = {\n prefix: 'far',\n iconName: 'gavel',\n icon: [512, 512, [], \"f0e3\", \"M497.965 176.618l-23.185-23.185c-13.611-13.61-33.433-17.321-50.434-11.133l-54.624-54.624c6.189-16.998 2.479-36.821-11.133-50.433l-23.185-23.174c-18.757-18.757-49.122-18.76-67.882 0L163.914 117.667c-18.715 18.715-18.715 49.167 0 67.883l23.184 23.184c13.613 13.613 33.433 17.326 50.434 11.133l10.342 10.342-56.543 56.52c-22.021-22.02-51.866-19.249-69.498-1.616L14.069 392.908c-18.757 18.757-18.76 49.122 0 67.882l37.163 37.174c18.714 18.714 49.165 18.715 67.882 0l107.773-107.796c17.412-17.41 20.652-47.231-1.616-69.499l56.543-56.519 10.341 10.341c-6.189 16.998-2.479 36.821 11.134 50.434l25.417 25.417c17.484 17.484 45.932 17.485 63.417 0L497.965 244.5c18.713-18.715 18.713-49.167 0-67.882zM85.195 464.043l-.021-.021L48 426.849l107.773-107.795 37.173 37.173L85.195 464.043zm275.219-149.875l-23.184-23.184 14.793-14.793L235.832 160l-14.792 14.792-23.184-23.184L301.465 48l23.184 23.184L307.832 88l116.191 116.191 16.816-16.816 23.184 23.184-103.609 103.609z\"]\n};\nvar faGem = {\n prefix: 'far',\n iconName: 'gem',\n icon: [576, 512, [], \"f3a5\", \"M464 0H112c-4 0-7.8 2-10 5.4L2 152.6c-2.9 4.4-2.6 10.2.7 14.2l276 340.8c4.8 5.9 13.8 5.9 18.6 0l276-340.8c3.3-4.1 3.6-9.8.7-14.2L474.1 5.4C471.8 2 468.1 0 464 0zm-19.3 48l63.3 96h-68.4l-51.7-96h56.8zm-202.1 0h90.7l51.7 96H191l51.6-96zm-111.3 0h56.8l-51.7 96H68l63.3-96zm-43 144h51.4L208 352 88.3 192zm102.9 0h193.6L288 435.3 191.2 192zM368 352l68.2-160h51.4L368 352z\"]\n};\nvar faGenderless = {\n prefix: 'far',\n iconName: 'genderless',\n icon: [288, 512, [], \"f22d\", \"M144 160c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96m0-48C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z\"]\n};\nvar faGhost = {\n prefix: 'far',\n iconName: 'ghost',\n icon: [384, 512, [], \"f6e2\", \"M192 0c-1.96 0-3.93.03-5.91.09C81.01 3.24 0 94.92 0 200.05v263.92C0 473.61 7.89 480 16.12 480c3.93 0 7.94-1.46 11.2-4.72l24.92-18.53c2.86-2.12 6.21-3.16 9.54-3.16 4.43 0 8.82 1.83 11.97 5.38l42.95 48.35c3.12 3.12 7.22 4.69 11.31 4.69s8.19-1.56 11.31-4.69l40.72-45.85c3.18-3.58 7.57-5.38 11.96-5.38s8.78 1.79 11.96 5.38l40.72 45.85c3.12 3.12 7.22 4.69 11.31 4.69s8.19-1.56 11.31-4.69l42.95-48.35a15.994 15.994 0 0 1 21.51-2.22l24.92 18.53c3.26 3.26 7.27 4.72 11.2 4.72 8.22 0 16.12-6.39 16.12-16.03V192C384 85.96 298.04 0 192 0zm144 407.07c-4.48-.98-9.09-1.48-13.77-1.48-18.28 0-35.72 7.83-47.86 21.5L256 447.77l-16.15-18.18c-12.13-13.66-29.58-21.5-47.85-21.5s-35.71 7.84-47.85 21.5L128 447.77l-18.38-20.69a64.069 64.069 0 0 0-47.86-21.49c-4.68 0-9.29.5-13.77 1.48V200.05c0-81.49 62.6-149.67 139.53-151.98L192 48c79.4 0 144 64.6 144 144v215.07zM128 160c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm128 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faGift = {\n prefix: 'far',\n iconName: 'gift',\n icon: [512, 512, [], \"f06b\", \"M464 144h-26.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H48c-26.5 0-48 21.5-48 48v128c0 8.8 7.2 16 16 16h16v107.4c0 29 23.6 52.6 52.6 52.6h342.8c29 0 52.6-23.6 52.6-52.6V336h16c8.8 0 16-7.2 16-16V192c0-26.5-21.5-48-48-48zM232 448H84.6c-2.5 0-4.6-2-4.6-4.6V336h112v-48H48v-96h184v256zm-78.1-304c-22.1 0-40-17.9-40-40s17.9-40 40-40c22 0 37.5 7.6 84.1 77l2 3h-86.1zm122-3C322.5 71.6 338 64 360 64c22.1 0 40 17.9 40 40s-17.9 40-40 40h-86.1l2-3zM464 288H320v48h112v107.4c0 2.5-2 4.6-4.6 4.6H280V192h184v96z\"]\n};\nvar faGiftCard = {\n prefix: 'far',\n iconName: 'gift-card',\n icon: [576, 512, [], \"f663\", \"M528 128h-58.07c6.22-12.06 10.07-25.52 10.07-40 0-48.52-39.48-88-88-88-41.6 0-68.51 21.34-103.04 68.33C254.44 21.33 227.53 0 185.93 0c-48.52 0-88 39.48-88 88 0 14.48 3.85 27.94 10.07 40H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zM392 48c22.06 0 40 17.94 40 40 0 22.05-17.94 40-40 40h-86.07c51.36-76.47 65.72-80 86.07-80zM145.93 88c0-22.06 17.94-40 40-40 19.94 0 34.58 3.27 86.07 80h-86.07c-22.06 0-40-17.95-40-40zm76.13 88l-51.72 51.72c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0L288 177.94l83.72 83.72c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L353.94 176H528v144H48V176h174.06zM48 464v-80h480v80H48z\"]\n};\nvar faGifts = {\n prefix: 'far',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M608 224h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-11.4-26-36.9-69.4-80-74.3v-1c0-17.7-14.3-32-32-32h-61.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C153 2.1 143.8-2.1 135.5 1l-15 5.6c-8.3 3.1-12.5 12.3-9.4 20.6l11.5 30.6-32-22.8c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-88.1-48c17.7 0 24.1 14.5 24.1 24.2 0 5.1-1.5 12.6-8.8 19-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.9-48 44.5-48zm-175.8 0c18.7 0 35.6 27.4 44.5 48H336c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2zM224 256v208H48V144h250.7c-17 14-26.7 35.2-26.7 56.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32zm184 208H272v-72h136v72zm0-120H272v-72h136v72zm23.3-120l.7-.2.7.2h-1.4zM592 464H456v-72h136v72zm0-120H456v-72h136v72z\"]\n};\nvar faGingerbreadMan = {\n prefix: 'far',\n iconName: 'gingerbread-man',\n icon: [448, 512, [], \"f79d\", \"M192 96c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm32 240c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm222.7-109.4c-7.6-46.7-48.5-81-98-82.5.9-5.9 1.3-12 1.3-18.1 0-33.7-13.1-65.3-36.9-89.1C289.3 13.1 257.7 0 224 0s-65.3 13.1-89.1 36.9C111.1 60.7 98 92.3 98 126c0 6.1.4 12.1 1.3 18.1-49.4 1.5-90.4 35.8-98 82.5-4.8 29.2 3.4 58.8 22.5 81.2 11.3 13.3 25.7 23.2 41.7 29.1l-7 8.5c-18 21.6-26.6 50.2-23.6 78.5 2.9 27 15.9 50.9 36.7 67.1 17.4 13.5 39.2 21 61.4 21 29.8 0 57.8-13.1 76.8-36l14.2-17 14.2 17c19.1 22.9 47.1 36 76.8 36 22.2 0 44-7.5 61.5-21.1 20.8-16.2 33.8-40 36.7-67.1 3-28.3-5.6-56.9-23.6-78.5l-7-8.5c16-5.9 30.3-15.8 41.7-29.1 18.9-22.3 27.1-51.9 22.4-81.1zM348 295h-31.2c-8.2 0-14.8 6.6-14.8 14.8 0 3.5 1.2 6.8 3.4 9.5l47.3 56.7c18.9 22.7 17.5 58.8-5.8 77-25.5 19.9-56.9 10.3-71.9-7.7L244 408c-5.2-6.2-12.6-9.4-20-9.4s-14.8 3.1-20 9.4l-31.1 37.3c-15 18.1-46.4 27.6-71.9 7.7-23.3-18.2-24.7-54.3-5.8-77l47.3-56.7c2.2-2.7 3.4-6 3.4-9.5 0-8.2-6.6-14.8-14.8-14.8H100c-66.9 0-72-103 2.8-103h60.4c5.8 0 8.5-7.9 4.5-12.1-13.4-14-21.7-33-21.7-53.9 0-43.1 34.9-78 78-78s78 34.9 78 78c0 20.9-8.3 39.9-21.7 53.9-4 4.2-1.4 12.1 4.5 12.1h60.4c74.8 0 69.8 103 2.8 103zm-124-23c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm32-176c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-32 112c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16z\"]\n};\nvar faGlass = {\n prefix: 'far',\n iconName: 'glass',\n icon: [384, 512, [], \"f804\", \"M352 0H32A32 32 0 0 0 .06 34l32 448A32 32 0 0 0 64 512h256a32 32 0 0 0 31.94-30l32-448A32 32 0 0 0 352 0zm-17.19 48l-8 112H57.18l-8-112zM305.1 464H78.9L60.61 208h262.77z\"]\n};\nvar faGlassChampagne = {\n prefix: 'far',\n iconName: 'glass-champagne',\n icon: [256, 512, [], \"f79e\", \"M200 464h-48V349.5c65-12 111.6-71 103-137.1l-27-185C225.7 11.7 212.2 0 196.3 0H59.7C43.8 0 30.3 11.7 28 27.4L1 212.3c-8.7 66.2 38 125.2 103 137.1V464H56c-22.1 0-40 17.9-40 40 0 4.4 3.6 8 8 8h208c4.4 0 8-3.6 8-8 0-22.1-17.9-40-40-40zM73.5 48h109l11.7 80H61.8l11.7-80zm-6.9 228.6c-14.3-16.3-20.7-37-18-57.4l6.3-43.3h146.3l6.2 42.6c2.8 21.1-3.6 41.7-17.9 58.1C174.2 294 151.8 304 128 304s-46.2-10-61.4-27.4z\"]\n};\nvar faGlassCheers = {\n prefix: 'far',\n iconName: 'glass-cheers',\n icon: [640, 512, [], \"f79f\", \"M587.6 414.1l-29.8 11.7-40.5-103c50.9-33.5 70.1-100.2 40.2-154.3l-84.1-152C467.6 6.1 456.8 0 445.4 0c-3.9 0-7.9.7-11.7 2.2L320 46.9 206.3 2.2C202.5.7 198.5 0 194.6 0c-11.3 0-22.2 6.1-28 16.5l-84.1 152c-29.9 54.1-10.7 120.8 40.2 154.3l-40.5 103-29.8-11.7c-20.6-8.1-43.8 2-51.9 22.6-1.6 4.1.4 8.8 4.5 10.4l163.8 64.4c4.1 1.6 8.8-.4 10.4-4.5 8.1-20.6-2-43.8-22.6-51.9l-29.8-11.7L167.1 341c8 1.6 16 2.5 23.8 2.5 52.6 0 100.9-34.2 114.2-87.4l14.8-59.6 14.8 59.6c13.2 53.2 61.5 87.4 114.2 87.4 7.9 0 15.9-.9 23.8-2.5l40.2 102.3-29.8 11.7c-20.6 8.1-30.7 31.3-22.6 51.9 1.6 4.1 6.3 6.1 10.4 4.5l164-64.4c4.1-1.6 6.1-6.3 4.5-10.4-8-20.5-31.3-30.6-51.8-22.5zm-329-169.6c-7.5 30-35.3 51-67.6 51-9.4 0-18.7-1.8-27.8-5.3-20.1-7.9-35.7-23.8-42.8-43.5-6.7-18.5-5.2-38 4.1-54.8l25.1-45.3 121.5 47.8-12.5 50.1zm24.2-97.2L173 104.1 201.8 52l95.4 37.5-14.4 57.8zm74.4 0l-14.4-57.7L438.2 52l28.8 52.1-109.8 43.2zm119.6 142.8c-9 3.5-18.3 5.3-27.8 5.3-32.3 0-60.1-21-67.6-51l-12.5-50.3 121.5-47.8 25.1 45.3c9.3 16.8 10.8 36.3 4.1 54.8-7.1 19.9-22.7 35.8-42.8 43.7z\"]\n};\nvar faGlassCitrus = {\n prefix: 'far',\n iconName: 'glass-citrus',\n icon: [512, 512, [], \"f869\", \"M368 0c-62.61 0-115.35 40.2-135.18 96h52.54C302 67.45 332.63 48 368 48a96.11 96.11 0 0 1 96 96c0 50.07-38.67 90.84-87.63 95.15l-4.84 48.49C449.39 285.73 512 222.32 512 144A144 144 0 0 0 368 0zm-48 128H32A32 32 0 0 0 .16 163.18l32 320A32 32 0 0 0 64 512h224a32 32 0 0 0 31.84-28.82l32-320A32 32 0 0 0 320 128zm-46.48 336h-195l-16-160h227zm20.8-208H57.68l-8-80h252.64z\"]\n};\nvar faGlassMartini = {\n prefix: 'far',\n iconName: 'glass-martini',\n icon: [512, 512, [], \"f000\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L232 279.64V463h-64c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-64V279.64L502.05 57.6zM256 235.76L68.23 48h375.53L256 235.76z\"]\n};\nvar faGlassMartiniAlt = {\n prefix: 'far',\n iconName: 'glass-martini-alt',\n icon: [512, 512, [], \"f57b\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L232 279.64V464h-64c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-64V279.64L502.05 57.6zM256 235.76L164.24 144h183.53L256 235.76zM443.77 48l-48 48H116.24l-48-48h375.53z\"]\n};\nvar faGlassWhiskey = {\n prefix: 'far',\n iconName: 'glass-whiskey',\n icon: [512, 512, [], \"f7a0\", \"M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-87.3 400h-273c-7.9 0-14.7-5.9-15.9-14.4L85.9 304h340.4l-17.8 114.3c-1.1 7.8-7.9 13.7-15.8 13.7zm41.1-176H78.4L50.7 80h410.6l-27.5 176z\"]\n};\nvar faGlassWhiskeyRocks = {\n prefix: 'far',\n iconName: 'glass-whiskey-rocks',\n icon: [512, 512, [], \"f7a1\", \"M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-87.3 400h-273c-7.9 0-14.7-5.9-15.9-14.4l-13.3-84.7c11.6 11.8 27.7 19.1 45.5 19.1h64c21.7 0 40.9-10.9 52.5-27.6 2.5 4.1 5.4 8 9 11.6l45.3 45.3c12.1 12.1 28.2 18.7 45.3 18.7 17.1 0 33.2-6.7 45.3-18.7l20.2-20.2-8.9 57.2c-1.3 7.8-8.1 13.7-16 13.7zM120 288v-64c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16zm175.4-8.6l45.3-45.3c3-3 7-4.7 11.3-4.7s8.3 1.7 11.3 4.7l45.3 45.3c6.2 6.2 6.2 16.4 0 22.6l-45.3 45.3c-3 3-7 4.7-11.3 4.7s-8.3-1.7-11.3-4.7L295.4 302c-6.2-6.2-6.2-16.3 0-22.6zm141-40l-39.2-39.2c-12.1-12.1-28.2-18.7-45.3-18.7-17.1 0-33.2 6.7-45.3 18.7L264 243v-19c0-35.3-28.7-64-64-64h-64c-33.5 0-60.8 26-63.5 58.8L50.7 80h410.6l-24.9 159.4z\"]\n};\nvar faGlasses = {\n prefix: 'far',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-39.9 0-85.63 9.2-133.04 36.34H269.6c-47.41-27.15-93.13-36.35-133.04-36.35-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zM219.33 371c-2.6 34.2-32.03 61-67.02 61H115.2C78.15 432 48 402.44 48 366.11v-48.47c19.77-8.19 51.23-17.99 88.58-18 29.78 0 58.86 6.22 86.76 18.53L219.33 371zM528 366.12c0 36.33-30.15 65.88-67.2 65.88h-37.12c-34.98 0-64.42-26.79-67.01-61l-4.01-52.82c27.91-12.31 57-18.53 86.79-18.53 37.37 0 68.84 9.82 88.55 17.98v48.49z\"]\n};\nvar faGlassesAlt = {\n prefix: 'far',\n iconName: 'glasses-alt',\n icon: [576, 512, [], \"f5f5\", \"M560.51 225.9L528.75 98.64C522.05 71.78 495.01 32 443.33 32c-15.63 0-23.03 2.94-43.02 9.6-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.24 6.7 8.48 10.94 15.18 10.94 3.54 0 4.82-.74 18.23-5.21 26.07-8.68 48.2 6.13 53.53 27.54l29.67 118.68C490.97 215.88 466.47 208 440 208c-55.09 0-102.27 32.91-123.65 80h-56.7c-21.38-47.09-68.56-80-123.65-80-26.47 0-50.97 7.88-71.86 20.96l29.67-118.68c5.32-21.41 27.46-36.22 53.53-27.54 13.42 4.47 14.7 5.21 18.23 5.21 6.7 0 12.94-4.24 15.18-10.94l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24C155.7 34.94 148.3 32 132.67 32 81 32 53.95 71.78 47.25 98.64L15.49 225.9C2.16 279.34 0 300.12 0 344c0 75.11 60.89 136 136 136 72.37 0 130.97-56.69 135.19-128h33.61c4.22 71.31 62.82 128 135.19 128 75.11 0 136-60.89 136-136 .01-43.88-2.15-64.66-15.48-118.1zM136 432c-48.52 0-88-39.48-88-88s39.48-88 88-88 88 39.48 88 88-39.48 88-88 88zm304 0c-48.52 0-88-39.48-88-88s39.48-88 88-88 88 39.48 88 88-39.48 88-88 88z\"]\n};\nvar faGlobe = {\n prefix: 'far',\n iconName: 'globe',\n icon: [496, 512, [], \"f0ac\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm179.3 160h-67.2c-6.7-36.5-17.5-68.8-31.2-94.7 42.9 19 77.7 52.7 98.4 94.7zM248 56c18.6 0 48.6 41.2 63.2 112H184.8C199.4 97.2 229.4 56 248 56zM48 256c0-13.7 1.4-27.1 4-40h77.7c-1 13.1-1.7 26.3-1.7 40s.7 26.9 1.7 40H52c-2.6-12.9-4-26.3-4-40zm20.7 88h67.2c6.7 36.5 17.5 68.8 31.2 94.7-42.9-19-77.7-52.7-98.4-94.7zm67.2-176H68.7c20.7-42 55.5-75.7 98.4-94.7-13.7 25.9-24.5 58.2-31.2 94.7zM248 456c-18.6 0-48.6-41.2-63.2-112h126.5c-14.7 70.8-44.7 112-63.3 112zm70.1-160H177.9c-1.1-12.8-1.9-26-1.9-40s.8-27.2 1.9-40h140.3c1.1 12.8 1.9 26 1.9 40s-.9 27.2-2 40zm10.8 142.7c13.7-25.9 24.4-58.2 31.2-94.7h67.2c-20.7 42-55.5 75.7-98.4 94.7zM366.3 296c1-13.1 1.7-26.3 1.7-40s-.7-26.9-1.7-40H444c2.6 12.9 4 26.3 4 40s-1.4 27.1-4 40h-77.7z\"]\n};\nvar faGlobeAfrica = {\n prefix: 'far',\n iconName: 'globe-africa',\n icon: [496, 512, [], \"f57c\", \"M248 8C111.04 8 0 119.03 0 256s111.04 248 248 248 248-111.03 248-248S384.96 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56c10.92 0 21.55 1.12 32 2.81v21.7c0 8.56-6.94 15.5-15.5 15.5h-24.21c-5.18 0-10.02 2.59-12.89 6.9l-8.08 12.11c-2.14 3.21-5.4 5.5-9.14 6.44l-14.45 3.61a15.492 15.492 0 0 0-11.74 15.04v4.4c0 8.56 6.94 15.5 15.5 15.5h90.09c4.11 0 8.05 1.63 10.96 4.54l6.92 6.92c2.91 2.91 6.85 4.54 10.96 4.54h10.09c8.56 0 15.5 6.94 15.5 15.5 0 6.67-4.27 12.59-10.6 14.7l-47.31 15.77c-3.9 1.3-8.15 1-11.83-.84l-14.72-7.36a54.682 54.682 0 0 0-24.43-5.77h-.89c-11.82 0-23.32 3.83-32.78 10.93l-27.58 20.69A54.545 54.545 0 0 0 152 283.31v14.06c0 14.49 5.76 28.38 16 38.63a54.641 54.641 0 0 0 38.63 16h25.88c8.56 0 15.5 6.94 15.5 15.5v29.88c0 12.25 2.85 24.33 8.33 35.29 4.7 9.4 14.31 15.34 24.82 15.34 9.28 0 17.94-4.64 23.09-12.36l13.03-19.55a159.608 159.608 0 0 1 25-29.16c2.47-2.26 4.14-5.26 4.76-8.56l4.3-22.83c.44-2.33 1.41-4.53 2.83-6.43l18.74-24.98c2.01-2.68 3.1-5.95 3.1-9.3V303.5c0-8.56-6.94-15.5-15.5-15.5h-8.21c-5.18 0-10.02-2.59-12.89-6.9l-13.24-19.86c-5.67-8.5-1.7-20.07 7.99-23.3l2.65-.88c4.54-1.51 9.52-.85 13.5 1.81l18.21 12.14a15.532 15.532 0 0 0 15.53.97l15.39-7.7c5.25-2.62 8.57-7.99 8.57-13.86v-6.93c0-8.56 6.94-15.5 15.5-15.5h18.44c3.82 15.41 6.07 31.43 6.07 48C448 366.28 358.28 456 248 456z\"]\n};\nvar faGlobeAmericas = {\n prefix: 'far',\n iconName: 'globe-americas',\n icon: [496, 512, [], \"f57d\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-32 50.8v11.3c0 11.9-12.5 19.6-23.2 14.3l-24-12c14.9-6.4 30.7-10.9 47.2-13.6zm32 369.8V456c-110.3 0-200-89.7-200-200 0-29.1 6.4-56.7 17.6-81.7 9.9 14.7 25.2 37.4 34.6 51.1 5.2 7.6 11.2 14.6 18.1 20.7l.8.7c9.5 8.6 20.2 16 31.6 21.8 14 7 34.4 18.2 48.8 26.1 10.2 5.6 16.5 16.3 16.5 28v32c0 8.5 3.4 16.6 9.4 22.6 15 15.1 24.3 38.7 22.6 51.3zm42.7 22.7l17.4-46.9c2-5.5 3.3-11.2 4.8-16.9 1.1-4 3.2-7.7 6.2-10.7l11.3-11.3c8.8-8.7 13.7-20.6 13.7-33 0-8.1-3.2-15.9-8.9-21.6l-13.7-13.7c-6-6-14.1-9.4-22.6-9.4H232c-9.4-4.7-21.5-32-32-32s-20.9-2.5-30.3-7.2l-11.1-5.5c-4-2-6.6-6.2-6.6-10.7 0-5.1 3.3-9.7 8.2-11.3l31.2-10.4c5.4-1.8 11.3-.6 15.5 3.1l9.3 8.1c1.5 1.3 3.3 2 5.2 2h5.6c6 0 9.8-6.3 7.2-11.6l-15.6-31.2c-1.6-3.1-.9-6.9 1.6-9.3l9.9-9.6c1.5-1.5 3.5-2.3 5.6-2.3h9c2.1 0 4.2-.8 5.7-2.3l8-8c3.1-3.1 3.1-8.2 0-11.3l-4.7-4.7c-3.1-3.1-3.1-8.2 0-11.3L264 112l4.7-4.7c6.2-6.2 6.2-16.4 0-22.6l-28.3-28.3c2.5-.1 5-.4 7.6-.4 78.2 0 145.8 45.2 178.7 110.7l-13 6.5c-3.7 1.9-6.9 4.7-9.2 8.1l-19.6 29.4c-5.4 8.1-5.4 18.6 0 26.6l18 27c3.3 5 8.4 8.5 14.1 10l29.2 7.3c-10.8 84-73.9 151.9-155.5 169.7z\"]\n};\nvar faGlobeAsia = {\n prefix: 'far',\n iconName: 'globe-asia',\n icon: [496, 512, [], \"f57e\", \"M403.31 322.49l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66V292c0-2.21-1.79-4-4-4H379c-1.78 0-3.35 1.18-3.84 2.88l-4.2 14.47a3.996 3.996 0 0 1-3.84 2.88h-3.8a3.99 3.99 0 0 1-3.69-2.46l-5.35-12.85a8.003 8.003 0 0 0-7.39-4.93H334.8c-1.66 0-3.29.52-4.64 1.48l-23.71 16.89a26.355 26.355 0 0 1-5.59 3.05l-39.34 15.74a7.996 7.996 0 0 0-5.03 7.43v10.21c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 7.07 4.69 11.31 4.69h10.34c1.31 0 2.61-.16 3.88-.48l21.27-5.32c9.12-2.28 18.77.39 25.42 7.04l13.01 13.01c3 3 7.07 4.69 11.31 4.69h15.16c4.24 0 8.31-1.69 11.31-4.69l9.57-9.57c3-3 4.69-7.07 4.69-11.31V333.8c-.01-4.24-1.7-8.31-4.7-11.31zM248 8C111.04 8 0 119.03 0 256s111.04 248 248 248 248-111.03 248-248S384.96 8 248 8zm0 448c-99.37 0-181.8-72.91-197.19-168h62.57c4.24 0 8.31-1.69 11.31-4.69l19.47-19.46c3.86-3.86 10.37-2.8 12.81 2.08l22.62 45.23c2.71 5.42 8.25 8.85 14.31 8.85h6.1c8.84 0 16-7.16 16-16v-9.37c0-4.24-1.69-8.31-4.69-11.31l-5.66-5.66c-3.12-3.12-3.12-8.19 0-11.31l5.66-5.66c3-3 7.07-4.69 11.31-4.69h.31c5.62 0 10.83-2.95 13.72-7.77l17.37-28.95c1.8-3 6.2-2.83 7.76.3a7.996 7.996 0 0 0 7.15 4.42H272c4.42 0 8-3.58 8-8V137.9c0-6.06-3.42-11.6-8.84-14.31l-10.83-5.41c-5.49-2.75-5.97-10.4-.86-13.81l50.16-38.53C389.83 91.88 448 167.23 448 256c0 110.28-89.72 200-200 200z\"]\n};\nvar faGlobeEurope = {\n prefix: 'far',\n iconName: 'globe-europe',\n icon: [496, 512, [], \"f7a2\", \"M178.1 123.7c0-6.2-5.1-11.3-11.3-11.3-3 0-5.9 1.2-8 3.3l-25.4 25.4c-2.1 2.1-3.3 5-3.3 8 0 6.2 5.1 11.3 11.3 11.3h16c3 0 5.9-1.2 8-3.3l9.4-9.4c2.1-2.1 3.3-5 3.3-8v-16zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm175.1 344.4h-13.4c-4.8 0-9.5-1.9-12.9-5.3l-17.3-17.3c-6-6-14.1-9.4-22.6-9.4h-18.3l-43.2-37.1c-8.2-7.1-18.7-10.9-29.6-10.9h-31.2c-8.2 0-16.3 2.2-23.4 6.5l-42.9 25.7c-13.7 8.2-22.1 23-22.1 39v23.9c0 14.3 6.7 27.8 18.2 36.4l22.2 16.7c8.6 6.5 24.6 11.8 35.4 11.8h20.2c8.8 0 16 7.2 16 16v7.1c-3.4.2-6.7.5-10.1.5-110.3 0-200-89.7-200-200 0-108.3 86.7-196.6 194.3-199.7L213.3 78c-2 1.5-3.2 3.9-3.2 6.4v20c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-8l16-16h20.7c6.2 0 11.3 5 11.3 11.3 0 3-1.2 5.9-3.3 8L260 126.5c-1.2 1.2-2.7 2.2-4.4 2.7l-40 13.3c-3.3 1.1-5.5 4.1-5.5 7.6 0 6.6-2.6 12.8-7.2 17.5l-20.1 20.1c-3 3-4.7 7.1-4.7 11.3v25.4c0 8.8 7.2 16 16 16h22.1c6.1 0 11.6-3.4 14.3-8.8l9.4-18.7c1.4-2.7 4.1-4.4 7.2-4.4h3.1c4.4 0 8 3.6 8 8s3.6 8 8 8h16c4.4 0 8-3.6 8-8v-2.2c0-3.4 2.2-6.5 5.5-7.6l31.6-10.5c6.5-2.2 10.9-8.3 10.9-15.2v-4.5c0-8.8 7.2-16 16-16h36.7c6.2 0 11.3 5.1 11.3 11.3v9.4c0 6.2-5.1 11.3-11.3 11.3h-32c-3 0-5.9 1.2-8 3.3l-9.4 9.4c-2.1 2.1-3.3 5-3.3 8 0 6.2 5.1 11.3 11.3 11.3h16c3 0 5.9 1.2 8 3.3l9.4 9.4c2.1 2.1 3.3 5 3.3 8v8.7l-12.5 12.5c-4.6 4.6-4.6 12-.1 16.7l31.9 32.6c3 3.1 7.1 4.8 11.4 4.8h20.3c-3.8 11-8.5 21.7-14.1 31.9z\"]\n};\nvar faGlobeSnow = {\n prefix: 'far',\n iconName: 'globe-snow',\n icon: [448, 512, [], \"f7a3\", \"M232 80c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-128 80c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm224-16c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm35.3 255c51.5-41 84.7-104 84.7-175C448 100.3 347.7 0 224 0S0 100.3 0 224c0 71 33.2 134 84.7 175l-46.3 61.8C22.6 481.9 37.6 512 64 512h320c26.4 0 41.4-30.1 25.6-51.2L363.3 399zM96 464l24-32h208l24 32H96zm200.9-80H256v-48h57.9c14.2 0 22-15 12.9-24.9L276 256h15.4c10.7 0 16.5-11.2 9.7-18.7l-67.4-73.2c-5-5.5-14.3-5.5-19.3 0L147 237.3c-6.8 7.4-1 18.7 9.7 18.7H172l-50.7 55.1c-9.1 9.9-1.3 24.9 12.9 24.9H192v48h-40.9C90.4 356.2 48 295 48 224c0-97 79-176 176-176s176 79 176 176c0 71-42.4 132.2-103.1 160z\"]\n};\nvar faGlobeStand = {\n prefix: 'far',\n iconName: 'globe-stand',\n icon: [448, 512, [], \"f5f6\", \"M208.07 352c88.4 0 160.06-71.63 160.06-160 0-88.32-71.61-160-160.06-160-88.4 0-160.06 71.63-160.06 160 .01 88.31 71.61 160 160.06 160zm0-272c61.88 0 112.04 50.14 112.04 112s-50.16 112-112.04 112S96.03 253.86 96.03 192 146.19 80 208.07 80zm140.05 384H248.09v-35.53c47.5-7.92 93.08-30.1 129.75-66.77 85.25-85.22 92.73-218.44 22.91-312.38l10.7-10.7c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.3c-6.25-6.25-16.38-6.25-22.64 0L334.47 47.7c3.17 2.79 6.39 5.52 9.41 8.53 36.28 36.26 56.26 84.48 56.26 135.77s-19.98 99.5-56.26 135.76S259.37 384 208.07 384s-99.53-19.97-135.81-56.24c-3.02-3.02-5.75-6.23-8.53-9.41L4.69 377.38c-6.25 6.25-6.25 16.38 0 22.63L16 411.31c6.25 6.25 16.38 6.25 22.64 0l26.71-26.7c40.03 29.72 87.18 45.3 134.72 46.95V464H100.03c-19.89 0-36.01 16.12-36.01 36 0 6.63 5.37 12 12 12h296.1c6.63 0 12-5.37 12-12 .01-19.88-16.11-36-36-36z\"]\n};\nvar faGolfBall = {\n prefix: 'far',\n iconName: 'golf-ball',\n icon: [416, 512, [], \"f450\", \"M416 208C416 94.2 324.7 1.8 211.3 0 97.3-1.8 2.5 89.4.1 203.4c-1.3 60.7 23.6 115.3 64 154.1V416c0 30.9 25.1 56 56 56h16c4.4 0 8 3.6 8 8v20c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12v-20c0-30.9-25.1-56-56-56-12.8 0-24 2.1-24-8v-32h192v32c0 10.1-11.2 8-24 8-30.9 0-56 25.1-56 56v20c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12v-20c0-4.4 3.6-8 8-8h16c30.9 0 56-25.1 56-56v-58.5C391.3 319.7 416 266.8 416 208zM208 48c88.2 0 160 71.8 160 160 0 52.7-25.9 99-65.5 128h-189C73.9 307 48 260.7 48 208c0-88.2 71.8-160 160-160zm48 142.9c0 18.3-14.8 33.1-33.1 33.1-14.4 0-26.3-9.3-30.9-22.1 26.3 9.4 51.5-15.2 41.9-41.9 12.8 4.6 22.1 16.5 22.1 30.9zm80 16c0 18.3-14.8 33.1-33.1 33.1-14.4 0-26.3-9.3-30.9-22.1 26.3 9.4 51.5-15.2 41.9-41.9 12.8 4.6 22.1 16.5 22.1 30.9zm-64 64c0 18.3-14.8 33.1-33.1 33.1-14.4 0-26.3-9.3-30.9-22.1 26.3 9.4 51.5-15.2 41.9-41.9 12.8 4.6 22.1 16.5 22.1 30.9z\"]\n};\nvar faGolfClub = {\n prefix: 'far',\n iconName: 'golf-club',\n icon: [640, 512, [], \"f451\", \"M631 8.6l-14.4-6.9c-8-3.9-17.5-.5-21.4 7.4L465.5 279.3 75.8 206.2C36 198.7 0 229.5 0 269.1V448c0 35.3 28.6 64 64 64h302.7c24.6 0 47-14.1 57.7-36.3l214-445.8c3.8-7.9.5-17.5-7.4-21.3zM434.9 342.9l-53.8 112c-2.7 5.5-8.3 9.1-14.4 9.1H64c-19.1 0-16-23-16-24h72c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H48v-48h72c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H48v-26.9c0-9.6 8.6-17.7 18.9-15.7l356.5 66.9c10.4 1.9 16 13.1 11.5 22.6z\"]\n};\nvar faGopuram = {\n prefix: 'far',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M496 352h-16V240c0-8.84-7.16-16-16-16h-16v-80c0-8.84-7.16-16-16-16h-16V24c0-13.26-10.75-24-24-24s-24 10.74-24 24v8h-48v-8c0-13.26-10.75-24-24-24s-24 10.74-24 24v8h-32v-8c0-13.26-10.75-24-24-24s-24 10.74-24 24v8h-48v-8c0-13.26-10.75-24-24-24S96 10.74 96 24v104H80c-8.84 0-16 7.16-16 16v80H48c-8.84 0-16 7.16-16 16v112H16c-8.84 0-16 7.16-16 16v128c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-96h48v104c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V400h256v104c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V400h48v96c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V368c0-8.84-7.16-16-16-16zM144 80h224v48H144V80zm120 120h-16c-8.84 0-16 7.16-16 16v8h-40v-48h128v48h-40v-8c0-8.84-7.16-16-16-16zm-152-24h48v48h-48v-48zm16 176H80v-80h48v80zm224 0h-64v-32c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v32h-64v-80h192v80zm0-128v-48h48v48h-48zm80 128h-48v-80h48v80zm-144 80h-64c-8.84 0-16 7.16-16 16v64h96v-64c0-8.84-7.16-16-16-16z\"]\n};\nvar faGraduationCap = {\n prefix: 'far',\n iconName: 'graduation-cap',\n icon: [640, 512, [], \"f19d\", \"M606.72 147.91l-258-79.57c-18.81-5.78-38.62-5.78-57.44 0l-258 79.57C13.38 154.05 0 171.77 0 192.02s13.38 37.97 33.28 44.11l22.64 6.98c-2.46 5.19-4.4 10.62-5.7 16.31C39.53 264.6 32 275.33 32 288.01c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.95 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.66c8.17-5.8 13.86-14.87 13.86-25.65 0-10.6-5.49-19.54-13.43-25.36 1.13-3.55 2.96-6.67 4.85-9.83l54.87 16.92L128 384c0 35.34 85.96 64 192 64s192-28.65 192-64l-14.28-114.26 109-33.62c19.91-6.14 33.28-23.86 33.28-44.11s-13.38-37.96-33.28-44.1zM462.44 374.47c-59.7 34.2-225.9 33.78-284.87 0l11.3-90.36 102.42 31.59c11.15 3.43 32.24 7.77 57.44 0l102.42-31.59 11.29 90.36zM334.59 269.82c-9.44 2.91-19.75 2.91-29.19 0L154.62 223.3l168.31-31.56c8.69-1.62 14.41-9.98 12.78-18.67-1.62-8.72-10.09-14.36-18.66-12.76l-203.78 38.2c-6.64 1.24-12.8 3.54-18.71 6.27L53.19 192l252.22-77.79c9.44-2.91 19.75-2.91 29.19 0l252.22 77.82-252.23 77.79z\"]\n};\nvar faGramophone = {\n prefix: 'far',\n iconName: 'gramophone',\n icon: [384, 512, [], \"f8bd\", \"M56 320a24 24 0 0 0 13.56-4.2c40.13-27.48 125-77.19 201.19-77.19a144.32 144.32 0 0 1 37.41 4.67A26.79 26.79 0 0 1 328 269.15a34.81 34.81 0 0 1-34.78 34.77H184a24 24 0 0 0-24 24v24h133.22A82.87 82.87 0 0 0 376 269.15a74.88 74.88 0 0 0-55.41-72.26C236.91 174.46 175.43 65 150.84 13.63A24 24 0 0 0 106 17.79l-73.19 272A24 24 0 0 0 56 320zm80.7-231.24c21.79 36.43 50.58 76 86 106.73-46.25 9-91.24 29.2-127.8 49.52zM368 464h-16v-48a32 32 0 0 0-32-32H64a32 32 0 0 0-32 32v48H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm-64 0H80v-32h224z\"]\n};\nvar faGreaterThan = {\n prefix: 'far',\n iconName: 'greater-than',\n icon: [320, 512, [], \"f531\", \"M311.16 218.53L37.47 81.69c-7.9-3.95-17.52-.75-21.47 7.16L1.69 117.48c-3.95 7.9-.75 17.51 7.16 21.46L242.96 256 8.85 373.06c-7.9 3.95-11.11 13.56-7.16 21.46L16 423.15c3.95 7.9 13.56 11.11 21.47 7.16l273.68-136.84c5.42-2.71 8.84-8.25 8.84-14.31v-46.31c.01-6.07-3.41-11.61-8.83-14.32z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'far',\n iconName: 'greater-than-equal',\n icon: [384, 512, [], \"f532\", \"M368 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM33.15 310.37l11.88 31.1c3.28 8.59 12.59 12.77 20.8 9.33l276.12-115.56c6.08-2.54 10.06-8.7 10.06-15.54v-55.4c0-6.84-3.98-13-10.06-15.54L65.82 33.2c-8.21-3.43-17.52.74-20.8 9.33l-11.88 31.1c-3.28 8.58.71 18.32 8.92 21.76L272.91 192 42.06 288.61c-8.2 3.44-12.19 13.18-8.91 21.76z\"]\n};\nvar faGrimace = {\n prefix: 'far',\n iconName: 'grimace',\n icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm16 16H152c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h192c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48zm-168 96h-24c-8.8 0-16-7.2-16-16v-8h40v24zm0-40h-40v-8c0-8.8 7.2-16 16-16h24v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm56 24c0 8.8-7.2 16-16 16h-24v-24h40v8zm0-24h-40v-24h24c8.8 0 16 7.2 16 16v8z\"]\n};\nvar faGrin = {\n prefix: 'far',\n iconName: 'grin',\n icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faGrinAlt = {\n prefix: 'far',\n iconName: 'grin-alt',\n icon: [496, 512, [], \"f581\", \"M200.3 248c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zm128 0c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3z\"]\n};\nvar faGrinBeam = {\n prefix: 'far',\n iconName: 'grin-beam',\n icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-235.9-72.9c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3zm160 0c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3z\"]\n};\nvar faGrinBeamSweat = {\n prefix: 'far',\n iconName: 'grin-beam-sweat',\n icon: [496, 512, [], \"f583\", \"M440 160c29.5 0 53.3-26.3 53.3-58.7 0-25-31.7-75.5-46.2-97.3-3.6-5.3-10.7-5.3-14.2 0-14.5 21.8-46.2 72.3-46.2 97.3 0 32.4 23.8 58.7 53.3 58.7zM248 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zm105.3-52.9c-24.6 15.7-46 12.9-46.4 12.9 6.9 20.2 10.8 41.8 10.8 64.3 0 110.3-89.7 200-200 200S48 366.3 48 256 137.7 56 248 56c39.8 0 76.8 11.8 108 31.9 1.7-9.5 6.3-24.1 17.2-45.7C336.4 20.6 293.7 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-27-4.4-52.9-12.4-77.2zM168 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z\"]\n};\nvar faGrinHearts = {\n prefix: 'far',\n iconName: 'grin-hearts',\n icon: [496, 512, [], \"f584\", \"M353.6 304.6c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-152.8-48.9c4.5 1.2 9.2-1.5 10.5-6l19.4-69.9c5.6-20.3-7.4-41.1-28.8-44.5-18.6-3-36.4 9.8-41.5 27.9l-2 7.1-7.1-1.9c-18.2-4.7-38.2 4.3-44.9 22-7.7 20.2 3.8 41.9 24.2 47.2l70.2 18.1zm188.8-65.3c-6.7-17.6-26.7-26.7-44.9-22l-7.1 1.9-2-7.1c-5-18.1-22.8-30.9-41.5-27.9-21.4 3.4-34.4 24.2-28.8 44.5l19.4 69.9c1.2 4.5 5.9 7.2 10.5 6l70.2-18.2c20.4-5.3 31.9-26.9 24.2-47.1zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200z\"]\n};\nvar faGrinSquint = {\n prefix: 'far',\n iconName: 'grin-squint',\n icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-234.7-40.8c3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3l-80-48c-5.1-3-11.4-1.9-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11.1.1 15.5zm242.9 2.5c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11-.1-15.5-3.8-4.4-10.2-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48z\"]\n};\nvar faGrinSquintTears = {\n prefix: 'far',\n iconName: 'grin-squint-tears',\n icon: [512, 512, [], \"f586\", \"M117.1 384.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 479 124.3 420.8 128 395c.8-6.4-4.6-11.8-10.9-10.9zm-41.2-41.7C40.3 268 53 176.1 114.6 114.6 152.4 76.8 202.6 56 256 56c36.2 0 70.8 9.8 101.2 27.7 3.8-20.3 8-36.1 12-48.3C333.8 17.2 294.9 8 256 8 192.5 8 129.1 32.2 80.6 80.6c-74.1 74.1-91.3 183.4-52 274 12.2-4.1 27.7-8.3 47.3-12.2zm352.3-187.6c45 76.6 34.9 176.9-30.8 242.6-37.8 37.8-88 58.6-141.4 58.6-30.5 0-59.8-7-86.4-19.8-3.9 19.5-8 35-12.2 47.2 31.4 13.6 65 20.6 98.7 20.6 63.5 0 126.9-24.2 175.4-72.6 78.1-78.1 93.1-195.4 45.2-288.6-12.3 4-28.2 8.1-48.5 12zm-33.3-26.9c25.8-3.7 84-13.7 100.9-30.6 21.9-21.9 21.5-57.9-.9-80.3s-58.3-22.8-80.3-.9C397.7 33 387.7 91.2 384 117c-.8 6.4 4.6 11.8 10.9 10.9zm-187 108.3c-3-3-7.2-4.2-11.4-3.2L106 255.7c-5.7 1.4-9.5 6.7-9.1 12.6.5 5.8 5.1 10.5 10.9 11l52.3 4.8 4.8 52.3c.5 5.8 5.2 10.4 11 10.9h.9c5.5 0 10.3-3.7 11.7-9.1l22.6-90.5c1-4.2-.2-8.5-3.2-11.5zm39.7-25.1l90.5-22.6c5.7-1.4 9.5-6.7 9.1-12.6-.5-5.8-5.1-10.5-10.9-11l-52.3-4.8-4.8-52.3c-.5-5.8-5.2-10.4-11-10.9-5.6-.1-11.2 3.4-12.6 9.1L233 196.5c-1 4.1.2 8.4 3.2 11.4 5 5 11.3 3.2 11.4 3.2zm52 88.5c-29.1 29.1-59.7 52.9-83.9 65.4-9.2 4.8-10 17.5-1.7 23.4 38.9 27.7 107 6.2 143.7-30.6S416 253 388.3 214.1c-5.8-8.2-18.5-7.6-23.4 1.7-12.3 24.2-36.2 54.7-65.3 83.8z\"]\n};\nvar faGrinStars = {\n prefix: 'far',\n iconName: 'grin-stars',\n icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-227.9-57.5c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.5 1.9-12.2-4.3-13.2l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6.1 34.9zm259.7-72.7l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6 34.9c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.6 1.8-12.2-4.4-13.2z\"]\n};\nvar faGrinTears = {\n prefix: 'far',\n iconName: 'grin-tears',\n icon: [640, 512, [], \"f588\", \"M117.1 256.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 351 124.3 292.8 128 267c.8-6.4-4.6-11.8-10.9-10.9zm506.7 30.6c-16.9-16.9-75.1-26.9-100.9-30.6-6.3-.9-11.7 4.5-10.8 10.8 3.7 25.8 13.7 84 30.6 100.9 21.9 21.9 57.9 21.5 80.3-.9 22.3-22.3 22.7-58.3.8-80.2zm-126.6 61.7C463.8 412.3 396.9 456 320 456c-76.9 0-143.8-43.7-177.2-107.6-12.5 37.4-25.2 43.9-28.3 46.5C159.1 460.7 234.5 504 320 504s160.9-43.3 205.5-109.1c-3.2-2.7-15.9-9.2-28.3-46.5zM122.7 224.5C137.9 129.2 220.5 56 320 56c99.5 0 182.1 73.2 197.3 168.5 2.1-.2 5.2-2.4 49.5 7C554.4 106 448.7 8 320 8S85.6 106 73.2 231.4c44.5-9.4 47.1-7.2 49.5-6.9zM320 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zM240 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z\"]\n};\nvar faGrinTongue = {\n prefix: 'far',\n iconName: 'grin-tongue',\n icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zM168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faGrinTongueSquint = {\n prefix: 'far',\n iconName: 'grin-tongue-squint',\n icon: [496, 512, [], \"f58a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zm36.9-281.1c-3.8-4.4-10.3-5.5-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zm-162.9 45.5l-80-48c-5-3-11.4-2-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3z\"]\n};\nvar faGrinTongueWink = {\n prefix: 'far',\n iconName: 'grin-tongue-wink',\n icon: [496, 512, [], \"f58b\", \"M152 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm176-52c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3z\"]\n};\nvar faGrinWink = {\n prefix: 'far',\n iconName: 'grin-wink',\n icon: [496, 512, [], \"f58c\", \"M328 180c-25.69 0-55.88 16.92-59.86 42.12-1.75 11.22 11.5 18.24 19.83 10.84l9.55-8.48c14.81-13.19 46.16-13.19 60.97 0l9.55 8.48c8.48 7.43 21.56.25 19.83-10.84C383.88 196.92 353.69 180 328 180zm-160 60c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm185.55 64.64c-25.93 8.3-64.4 13.06-105.55 13.06s-79.62-4.75-105.55-13.06c-9.94-3.13-19.4 5.37-17.71 15.34C132.67 367.13 196.06 400 248 400s115.33-32.87 123.26-80.02c1.68-9.89-7.67-18.48-17.71-15.34zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\"]\n};\nvar faGripHorizontal = {\n prefix: 'far',\n iconName: 'grip-horizontal',\n icon: [512, 512, [], \"f58d\", \"M488 96h-96c-13.25 0-24 10.74-24 24v96c0 13.25 10.75 24 24 24h96c13.25 0 24-10.75 24-24v-96c0-13.26-10.75-24-24-24zm-24 96h-48v-48h48v48zm24 80h-96c-13.25 0-24 10.74-24 24v96c0 13.25 10.75 24 24 24h96c13.25 0 24-10.75 24-24v-96c0-13.26-10.75-24-24-24zm-24 96h-48v-48h48v48zM120 96H24c-13.25 0-24 10.74-24 24v96c0 13.25 10.75 24 24 24h96c13.25 0 24-10.75 24-24v-96c0-13.26-10.75-24-24-24zm-24 96H48v-48h48v48zm24 80H24c-13.25 0-24 10.74-24 24v96c0 13.25 10.75 24 24 24h96c13.25 0 24-10.75 24-24v-96c0-13.26-10.75-24-24-24zm-24 96H48v-48h48v48zM304 96h-96c-13.25 0-24 10.74-24 24v96c0 13.25 10.75 24 24 24h96c13.25 0 24-10.75 24-24v-96c0-13.26-10.75-24-24-24zm-24 96h-48v-48h48v48zm24 80h-96c-13.25 0-24 10.74-24 24v96c0 13.25 10.75 24 24 24h96c13.25 0 24-10.75 24-24v-96c0-13.26-10.75-24-24-24zm-24 96h-48v-48h48v48z\"]\n};\nvar faGripLines = {\n prefix: 'far',\n iconName: 'grip-lines',\n icon: [448, 512, [], \"f7a4\", \"M432 288H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm0-112H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'far',\n iconName: 'grip-lines-vertical',\n icon: [256, 512, [], \"f7a5\", \"M96 464V48c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16v416c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16zm112 0V48c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v416c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16z\"]\n};\nvar faGripVertical = {\n prefix: 'far',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M120 0H24C10.75 0 0 10.74 0 24v96c0 13.25 10.75 24 24 24h96c13.26 0 24-10.75 24-24V24c0-13.26-10.74-24-24-24zM96 96H48V48h48v48zM296 0h-96c-13.25 0-24 10.74-24 24v96c0 13.25 10.75 24 24 24h96c13.26 0 24-10.75 24-24V24c0-13.26-10.74-24-24-24zm-24 96h-48V48h48v48zM120 368H24c-13.25 0-24 10.74-24 24v96c0 13.25 10.75 24 24 24h96c13.26 0 24-10.75 24-24v-96c0-13.26-10.74-24-24-24zm-24 96H48v-48h48v48zm200-96h-96c-13.25 0-24 10.74-24 24v96c0 13.25 10.75 24 24 24h96c13.26 0 24-10.75 24-24v-96c0-13.26-10.74-24-24-24zm-24 96h-48v-48h48v48zM120 184H24c-13.25 0-24 10.74-24 24v96c0 13.25 10.75 24 24 24h96c13.26 0 24-10.75 24-24v-96c0-13.26-10.74-24-24-24zm-24 96H48v-48h48v48zm200-96h-96c-13.25 0-24 10.74-24 24v96c0 13.25 10.75 24 24 24h96c13.26 0 24-10.75 24-24v-96c0-13.26-10.74-24-24-24zm-24 96h-48v-48h48v48z\"]\n};\nvar faGuitar = {\n prefix: 'far',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M502.63 39L473.05 9.37a32 32 0 0 0-45.26 0L381.48 55.7A35.14 35.14 0 0 0 373 69.49l-17.81 53.45-36 36c-15.44-12.85-33.06-23-52.59-27.54a125.39 125.39 0 0 0-28.48-3.4c-26.37 0-51.12 9-69.57 27.4a90 90 0 0 0-22.07 36.51c-6.57 20.24-25.31 35.66-46 37.6C74.65 232 50.62 242 32.21 260.53-17.57 310.18-8.61 399.58 51.9 460.12 86.08 494.3 129.45 512 169.67 512c31 0 60.19-10.53 81.81-32.17 18.52-18.41 28.54-42.43 31-68.4 1.92-20.57 17.34-39.42 37.57-46a90.34 90.34 0 0 0 36.52-22.08c24.94-25 32.43-61.48 24-97.92-4.52-19.54-14.63-37.17-27.47-52.62l35.94-36L442.48 139a35.26 35.26 0 0 0 13.79-8.53l46.32-46.32a32 32 0 0 0 .04-45.15zM305.26 319.79c-38.49 12.49-66.84 47.53-70.52 87.06-4.83 50.32-48.2 57.14-65.07 57.14-29.24 0-59.8-13.78-83.82-37.81S48 371.51 48 342.25c0-16.78 7-60.17 57-64.94 39.64-3.72 74.67-32.08 87.18-70.68 10.82-33.74 56.12-41.8 92.82-13.54l-64.72 64.72a48.8 48.8 0 1 0 33.92 34L319 227c26.49 34.56 22.06 81.22-13.74 92.79z\"]\n};\nvar faGuitarElectric = {\n prefix: 'far',\n iconName: 'guitar-electric',\n icon: [512, 512, [], \"f8be\", \"M511.21 39.58a48.13 48.13 0 0 0-37.8-38.27C450.48-3 450.66.79 366.74 54.94a32.15 32.15 0 0 0-14.74 27v44.59l-83.23 83.17a12.45 12.45 0 0 1-1.77-12.77l15.9-34.18a41.31 41.31 0 0 0-66.67-46.65L181 151.34a95.94 95.94 0 0 0-22.42 35.47 47.67 47.67 0 0 1-24.74 27.11l-70.29 32.57c-31 12.38-54.45 40.37-61.43 74.36a102.65 102.65 0 0 0 28 93.48l67.51 67.5A102.9 102.9 0 0 0 266 447.28l32.05-69.15a47.69 47.69 0 0 1 27.12-24.74A96 96 0 0 0 360.65 331l19.84-19.83a42.28 42.28 0 0 0 0-59.82c-17.58-17.58-38.86-11.62-42.76-10.38l-21.8 6.95c-7 2.23-11.51-1.82-13.58-3.89l149.37-149.4A47.44 47.44 0 0 0 464 96.42a48 48 0 0 0 47.21-56.84zM312.08 288.49a52.57 52.57 0 0 0 16-2.49l24.14-6.39-19.84 23.08a55.75 55.75 0 0 1-20.59 13 87.92 87.92 0 0 0-50 45.62l-32.9 71.1A62.9 62.9 0 0 1 126 453.54L58.45 386a61.92 61.92 0 0 1-17.15-57.1c4.33-21.1 18.28-37.78 39.05-46.12l70.32-32.56a87.89 87.89 0 0 0 45.62-50 55.77 55.77 0 0 1 13-20.59L245.48 144l-14.71 36.05a52.86 52.86 0 0 0 10.51 59.46l33.56 33.56a52.36 52.36 0 0 0 37.24 15.42zm-177.46 36.2a16 16 0 0 0-22.63 0L100.68 336a16 16 0 0 0 0 22.63l52.69 52.68a16 16 0 0 0 22.63 0L187.31 400a16 16 0 0 0 0-22.63zm64-64a16 16 0 0 0-22.63 0L164.68 272a16 16 0 0 0 0 22.63l52.69 52.68a16 16 0 0 0 22.63 0L251.31 336a16 16 0 0 0 0-22.63z\"]\n};\nvar faGuitars = {\n prefix: 'far',\n iconName: 'guitars',\n icon: [512, 512, [], \"f8bf\", \"M188.1 444.13C172.69 456.75 150.78 464 128 464s-44.7-7.25-60.1-19.87C60.46 438 48 425.1 48 406.83c0-9.38 3.6-18.55 10.72-27.18 23.07-27.85 27.37-68.53 10.64-101.31-12.86-25.09 17-42.53 17.43-42.8 4.29-2.68 10.34-4.66 17.21-6V312a24 24 0 0 0 48 0v-82.5c6.89 1.38 12.94 3.38 17.21 6 16 10 26 26.11 17.39 42.88-16.69 32.7-12.39 73.38 10.62 101.16 2 2.36 3 4.84 4.4 7.28l23.15-63a45.72 45.72 0 0 1 4.58-23.59c.11-.22.15-.45.26-.67a39.93 39.93 0 0 0-3.52-14.19A104.73 104.73 0 0 1 216 240.71V212.9c-1-1.12-1.82-2.37-2.89-3.44a104 104 0 0 0-18.58-14.67c-12.84-8-27.55-12-42.58-13.83v-54.22l16.62-33.23a29.12 29.12 0 0 0 3.07-13v-54.1A26.4 26.4 0 0 0 145.28 0h-34.56A26.41 26.41 0 0 0 84.3 26.41v54.08a29.12 29.12 0 0 0 3.07 13L104 126.74V181c-15 1.84-29.74 5.84-42.58 13.83a103.66 103.66 0 0 0-18.58 14.67c-15.39 15.39-24.62 35-24.62 56.58a74.37 74.37 0 0 0 8.42 34.2c8 15.65 6 35.59-4.88 48.78C8.11 365.55-.07 385.43 0 407c-.07 58 57.34 105 128 105a144.89 144.89 0 0 0 79.87-23.54 111 111 0 0 1-15.26-48.54c-1.61 1.54-3.17 3.08-4.51 4.21zM400 384h-64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm105.48 16.82l-26.93-73.45a72.1 72.1 0 0 1 2.58-55.79 72.13 72.13 0 0 0 7-30.94v-28.32a18.45 18.45 0 0 0-18.45-18.47 18.49 18.49 0 0 0-16.42 10l-10.64 20.55c-5.36 10.37-15.35 17-26.62 19l-24-.1V73.38a34.2 34.2 0 0 0 5.09-3.8A40.75 40.75 0 0 0 368.25 0a40.2 40.2 0 0 0-22.6 6.83c-16.39 11.15-14 13.35-31.84 96.24a27.27 27.27 0 0 0 7.32 25L344 151v91.66l-24-.11c-11.31-3.11-20.83-11-25-22.37l-13-35.76a17.46 17.46 0 0 0-16.41-11.49 17.51 17.51 0 0 0-17.5 17.5v50.33a72.22 72.22 0 0 0 7 30.93 72.07 72.07 0 0 1 2.53 55.78l-27 73.48C208 453.51 246.53 512 303.73 512h128.41c57.26-.06 95.86-58.59 73.34-111.18zM432.15 464H303.73c-28.89 0-35.44-29.3-29.07-44.16.35-.83-3.08 8.57 27.93-75.84a126.27 126.27 0 0 0 6.58-56s116.79.18 117.67 0c-1.86 18.06.33 38.67 6.64 55.89 30.95 84.4 27.53 75 27.88 75.83C472.74 446.3 448.33 464 432.15 464z\"]\n};\nvar faHSquare = {\n prefix: 'far',\n iconName: 'h-square',\n icon: [448, 512, [], \"f0fd\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h340a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-50-292v232c0 6.627-5.373 12-12 12h-24c-6.627 0-12-5.373-12-12v-92H152v92c0 6.627-5.373 12-12 12h-24c-6.627 0-12-5.373-12-12V140c0-6.627 5.373-12 12-12h24c6.627 0 12 5.373 12 12v92h144v-92c0-6.627 5.373-12 12-12h24c6.627 0 12 5.373 12 12z\"]\n};\nvar faH1 = {\n prefix: 'far',\n iconName: 'h1',\n icon: [576, 512, [], \"f313\", \"M304 96h-98.94A13.06 13.06 0 0 0 192 109.06v21.88A13.06 13.06 0 0 0 205.06 144H232v88H88v-88h26.94A13.06 13.06 0 0 0 128 130.94V112a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v18.94A13.06 13.06 0 0 0 13.06 144H40v224H13.06A13.06 13.06 0 0 0 0 381.06V400a16 16 0 0 0 16 16h98.94A13.06 13.06 0 0 0 128 402.94v-21.88A13.06 13.06 0 0 0 114.94 368H88v-88h144v88h-26.94A13.06 13.06 0 0 0 192 381.06V400a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-18.94A13.06 13.06 0 0 0 306.94 368H280V144h26.94A13.06 13.06 0 0 0 320 130.94V112a16 16 0 0 0-16-16zm256 272h-56V120a24 24 0 0 0-24-24h-24a24 24 0 0 0-21.44 13.26l-24 48A24 24 0 0 0 432 192h24v176h-56a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faH2 = {\n prefix: 'far',\n iconName: 'h2',\n icon: [576, 512, [], \"f314\", \"M304 96h-98.94A13.06 13.06 0 0 0 192 109.06v21.88A13.06 13.06 0 0 0 205.06 144H232v88H88v-88h26.94A13.06 13.06 0 0 0 128 130.94V112a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v18.94A13.06 13.06 0 0 0 13.06 144H40v224H13.06A13.06 13.06 0 0 0 0 381.06V400a16 16 0 0 0 16 16h98.94A13.06 13.06 0 0 0 128 402.94v-21.88A13.06 13.06 0 0 0 114.94 368H88v-88h144v88h-26.94A13.06 13.06 0 0 0 192 381.06V400a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-18.94A13.06 13.06 0 0 0 306.94 368H280V144h26.94A13.06 13.06 0 0 0 320 130.94V112a16 16 0 0 0-16-16zm244.14 272.13H410.82c8.52-60.35 146-79.28 146-179.31C556.8 134.17 515 96 455.05 96a114.71 114.71 0 0 0-97.92 55.05 11.81 11.81 0 0 0 3.58 15.95L382 181.23a11.89 11.89 0 0 0 16.27-3c13-18.23 31.58-31.35 53.72-31.35 29.57 0 49.43 18.08 49.43 45 0 67-149.45 84-149.45 195.49a137.14 137.14 0 0 0 1.39 18.42 12.18 12.18 0 0 0 11.8 10.21h183A11.85 11.85 0 0 0 560 404.18V380a11.85 11.85 0 0 0-11.86-11.87z\"]\n};\nvar faH3 = {\n prefix: 'far',\n iconName: 'h3',\n icon: [576, 512, [], \"f315\", \"M480.07 219.78l75.39-85.88a11.82 11.82 0 0 0 2.93-7.76v-18.32A11.89 11.89 0 0 0 546.44 96H379.87a11.88 11.88 0 0 0-11.94 11.82V132a11.88 11.88 0 0 0 11.94 11.83s102.44-.11 106-.25c-2.77 2.88-74.12 85.58-74.12 85.58a11.67 11.67 0 0 0-1.86 12.38l6.71 15.3a12.94 12.94 0 0 0 10.93 7.16h17.08c48.61 0 65.85 27.23 65.85 50.56 0 28.57-24.58 50.13-57.17 50.13-24 0-46.88-10.46-65.29-26.89a12 12 0 0 0-17.76 1.81l-16 22a11.73 11.73 0 0 0 1.4 15.41c24.6 23.34 60.62 39 99.38 39 64.2 0 109.86-46.22 109.86-103.17.01-51.1-36.73-84.17-84.81-93.07zM304 96h-98.94A13.06 13.06 0 0 0 192 109.06v21.88A13.06 13.06 0 0 0 205.06 144H232v88H88v-88h26.94A13.06 13.06 0 0 0 128 130.94V112a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v18.94A13.06 13.06 0 0 0 13.06 144H40v224H13.06A13.06 13.06 0 0 0 0 381.06V400a16 16 0 0 0 16 16h98.94A13.06 13.06 0 0 0 128 402.94v-21.88A13.06 13.06 0 0 0 114.94 368H88v-88h144v88h-26.94A13.06 13.06 0 0 0 192 381.06V400a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-18.94A13.06 13.06 0 0 0 306.94 368H280V144h26.94A13.06 13.06 0 0 0 320 130.94V112a16 16 0 0 0-16-16z\"]\n};\nvar faH4 = {\n prefix: 'far',\n iconName: 'h4',\n icon: [576, 512, [], \"f86a\", \"M304 96h-98.94A13.06 13.06 0 0 0 192 109.06v21.88A13.06 13.06 0 0 0 205.06 144H232v88H88v-88h26.94A13.06 13.06 0 0 0 128 130.94V112a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v18.94A13.06 13.06 0 0 0 13.06 144H40v224H13.06A13.06 13.06 0 0 0 0 381.06V400a16 16 0 0 0 16 16h98.94A13.06 13.06 0 0 0 128 402.94v-21.88A13.06 13.06 0 0 0 114.94 368H88v-88h144v88h-26.94A13.06 13.06 0 0 0 192 381.06V400a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-18.94A13.06 13.06 0 0 0 306.94 368H280V144h26.94A13.06 13.06 0 0 0 320 130.94V112a16 16 0 0 0-16-16zm256 136h-16V112a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v120h-96V112a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v136a32 32 0 0 0 32 32h112v120a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V280h16a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faHamburger = {\n prefix: 'far',\n iconName: 'hamburger',\n icon: [512, 512, [], \"f805\", \"M352 176a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm-96-32a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm-96 32a16 16 0 1 0-16-16 16 16 0 0 0 16 16zm352 112a79.45 79.45 0 0 0-28.07-60.4c.36-.54.85-.92 1.2-1.48a72.63 72.63 0 0 0 .63-75.43C442.33 78.69 352.18 32.09 256 32c-96.11.09-186.26 46.67-229.7 118.67a72.65 72.65 0 0 0 .6 75.44c.35.55.85.94 1.21 1.49a79.32 79.32 0 0 0 5.65 125.46c-.66 2.83-1.73 5.51-1.73 8.53v34.68A83.82 83.82 0 0 0 115.72 480h280.56A83.82 83.82 0 0 0 480 396.27v-34.68c0-3-1.07-5.7-1.73-8.53A79.75 79.75 0 0 0 512 288zM67.37 175.46C102.3 117.56 176.32 80.09 256 80c79.69.09 153.75 37.57 188.69 95.47a24.59 24.59 0 0 1-.21 25.17c-2.93 4.68-7.38 7.36-12.2 7.36H79.75c-4.82 0-9.26-2.69-12.2-7.37a24.56 24.56 0 0 1-.18-25.17zM432 396.27A35.77 35.77 0 0 1 396.28 432H115.72A35.77 35.77 0 0 1 80 396.27v-25.6h352zm0-76.27H80a32 32 0 0 1 0-64h352a32 32 0 0 1 0 64z\"]\n};\nvar faHammer = {\n prefix: 'far',\n iconName: 'hammer',\n icon: [576, 512, [], \"f6e3\", \"M571.31 193.94l-22.63-22.63c-6.25-6.24-16.38-6.25-22.63 0l-11.31 11.31-28.91-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25C392.99 15.62 352.05 0 311.1 0c-40.95 0-81.9 15.62-113.14 46.86l67.88 67.88v18.75c0 8.05 1.62 15.91 4.5 23.27L22.77 387.89C-6.88 415.57-7.68 462.32 21 491c14.03 14.03 32.37 21 50.69 21 19.15 0 38.27-7.62 52.42-22.77l230.92-247.34c7.56 3 15.58 4.52 23.61 4.52 5.61 0 11.23-.73 16.7-2.17l28.91 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.63c6.25 6.24 16.37 6.25 22.63 0l113.14-113.14c6.23-6.25 6.23-16.38-.02-22.63zM89.02 456.47c-9.86 10.56-25.36 9.31-34.08.59-10.21-10.22-8.44-25.66.59-34.08L300.3 194.46l17.24 17.24L89.02 456.47zm380.47-205.96l-59.74-59.73-26.68 7.05c-9.5 2.52-15.12-3.61-15.4-3.88l-49.14-49.14c-2.98-2.98-4.69-7.1-4.69-11.31V94.86l-40.4-40.4C285.37 50.21 298.06 48 311.1 48c29.92 0 58.04 11.65 79.2 32.8l45.25 45.25c5.84 5.84 4.45 13.26 3.89 15.4l-7.05 26.69 59.74 59.73-22.64 22.64z\"]\n};\nvar faHammerWar = {\n prefix: 'far',\n iconName: 'hammer-war',\n icon: [384, 512, [], \"f6e4\", \"M352.07 32c-3.83 0 5.08-1.29-136.07 22.23V12c0-6.63-5.37-12-12-12h-24c-6.63 0-12 5.37-12 12v42.23C26.22 30.6 35.77 32 31.93 32 14.64 32 0 46.05 0 64.01v191.98C0 273.95 14.64 288 31.94 288c3.86 0-5.08 1.29 136.06-22.23V500c0 6.63 5.37 12 12 12h24c6.63 0 12-5.37 12-12V265.77C357.77 289.4 348.23 288 352.06 288c17.3 0 31.94-14.05 31.94-32.01V64.01C384 46.05 369.36 32 352.07 32zM336 237.11l-144-24-144 24V82.89l144 24 144-24v154.22z\"]\n};\nvar faHamsa = {\n prefix: 'far',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M256.01 288c-53.01 0-95.98 64-95.98 64s42.97 64 95.98 64 95.98-64 95.98-64-42.98-64-95.98-64zm0 96c-17.67 0-31.99-14.33-31.99-32s14.33-32 31.99-32S288 334.33 288 352s-14.33 32-31.99 32zm249.54-100.6c-11.79-26.32-38.34-43.4-67.59-43.4h-6V113.71c0-39.77-28.77-74.45-66.91-80.65-4.42-.72-8.79-1.06-13.07-1.06-10.18 0-19.93 1.91-28.89 5.4-11.97-18.9-31.34-32.65-54.01-36.34A81.3 81.3 0 0 0 256 0c-28.39 0-53.38 14.88-67.58 37.24a75.764 75.764 0 0 0-15.33-4.18c-4.42-.72-8.79-1.06-13.07-1.06-44.1 0-79.98 35.89-79.98 80v128h-5.99c-29.25 0-55.8 17.08-67.63 43.5-12.21 27.09-6.7 58.57 14.08 80.12l83.42 86.46C141.91 489.43 197.34 512 256.01 512s114.1-22.57 152.08-61.91l83.42-86.46c20.79-21.55 26.3-53.04 14.04-80.23zm-48.57 46.89l-83.42 86.45C344.58 446.78 301.75 464 256.01 464s-88.57-17.22-117.56-47.25L55.03 330.3c-7.06-7.32-8.96-17.99-4.82-27.17C54.32 293.94 63.69 288 74.05 288h53.98V112c0-17.67 14.32-32 31.99-32 1.76 0 3.56.14 5.37.44 15.73 2.56 26.62 17.33 26.62 33.27V216c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V80c0-17.67 14.32-32 31.99-32 1.76 0 3.56.14 5.37.44 15.73 2.56 26.62 17.33 26.62 33.27V216c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V112c0-17.67 14.32-32 31.99-32 1.76 0 3.56.14 5.37.44 15.73 2.56 26.62 17.33 26.62 33.27V288h53.99c10.36 0 19.72 5.94 23.84 15.12 4.14 9.19 2.24 19.86-4.82 27.17z\"]\n};\nvar faHandHeart = {\n prefix: 'far',\n iconName: 'hand-heart',\n icon: [480, 512, [], \"f4bc\", \"M408 112c-2.7 0-5.4.2-8 .4V104c0-39.7-32.3-72-72-72-6.4 0-12.7.8-18.6 2.4C296.7 13.8 273.9 0 248 0s-48.7 13.8-61.4 34.4c-5.9-1.6-12.2-2.4-18.6-2.4-39.7 0-72 32.3-72 72v92.1c-10.5-3.7-38.1-10.2-65.3 8.9C-1.8 227.8-9.8 272.8 13 305.3l113.5 171c14.9 22.4 39.8 35.7 66.6 35.7h180.6c38 0 71-27 78.5-64.3l20.6-103.2c4.7-23.7 7.1-48 7.1-72.2V184c.1-39.7-32.2-72-71.9-72zm24 160.3c0 21.1-2.1 42.1-6.2 62.8l-20.6 103.2c-3 15-16.1 25.7-31.4 25.7H193.1c-10.7 0-20.7-5.4-26.7-14.3L52.3 277.8c-18-25.7 20.7-54.1 39.3-27.5l37.8 54.4c4.5 6.5 14.6 3.2 14.6-4.6V104c0-31.8 48-31.7 48 0v144c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V72c0-31.8 48-31.7 48 0v176c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V104c0-31.8 48-31.7 48 0v144c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-64c0-31.8 48-31.7 48 0v88.3zm-95.5 24.5c-19.6-15.3-45.2-8.5-58.3 3.9l-6.2 5.8-6.2-5.8c-12.8-12-38.5-19.3-58.3-3.9-19.6 15.3-20.7 42.8-3.1 59.4l60.5 57.1c3.9 3.7 10.2 3.7 14.1 0l60.5-57.1c17.6-16.6 16.6-44.1-3-59.4z\"]\n};\nvar faHandHolding = {\n prefix: 'far',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M551.9 312c-31.1-26.4-69.3-16.1-88.4-1.8l-60.4 45.5h-3.3c-.2-38-30.5-67.8-69.2-67.8h-144c-28.4 0-56.3 9.4-78.5 26.3L79.8 336H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h80l41.3-31.5c14-10.7 31.4-16.5 49.4-16.5h144c27.9 0 29.1 40.2-1.1 40.2h-59.8c-7.6 0-13.8 6.2-13.8 13.8v.1c0 7.6 6.2 13.8 13.8 13.8h134.5c9.7 0 19.2-3.2 26.9-9l61.3-46.1c8.3-6.2 20.5-6.7 28.4 0 10.1 8.5 9.3 23.1-.9 30.7L419.4 455c-7.8 5.8-17.2 9-26.9 9H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h376.8c19.9 0 39.3-6.5 55.2-18.5l100.8-75.9c16.6-12.5 26.5-31.5 27.1-52 .7-20.5-8.1-40.1-24-53.6z\"]\n};\nvar faHandHoldingBox = {\n prefix: 'far',\n iconName: 'hand-holding-box',\n icon: [576, 512, [], \"f47b\", \"M551.9 312c-31.1-26.4-69.3-16.1-88.4-1.8l-60.4 45.5h-3.3c-.2-38-30.5-67.8-69.2-67.8h-144c-28.4 0-56.3 9.4-78.5 26.3L79.8 336H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h80l41.3-31.5c14-10.7 31.4-16.5 49.4-16.5h144c27.9 0 29.1 40.2-1.1 40.2h-59.8c-7.6 0-13.8 6.2-13.8 13.8v.1c0 7.6 6.2 13.8 13.8 13.8h134.5c9.7 0 19.2-3.2 26.9-9l61.3-46.1c8.3-6.2 20.5-6.7 28.4 0 10.1 8.5 9.3 23.1-.9 30.7L419.4 455c-7.8 5.8-17.2 9-26.9 9H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h376.8c19.9 0 39.3-6.5 55.2-18.5l100.8-75.9c16.6-12.5 26.5-31.5 27.1-52 .7-20.5-8.1-40.1-24-53.6zm-439.4-56h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-352c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm32-208h80v112l64-32 64 32V48h80v160h-288V48z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'far',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M266.8 247.1c13 13.4 32.5 10.2 42.4 0l98.7-102c30.1-31.1 36.4-90.1-6-126.3C363.5-14 312.8 1 288 26.6 263.2 1 212.5-14 174.2 18.8c-42.4 36.2-36.1 95.2-6 126.3l98.6 102zM204.5 55.6c14.1-12 36.1-9 49.3 4.7L288 95.6l34.1-35.4c13.2-13.7 35.3-16.7 49.3-4.7 18.9 16.1 15.7 42.4 2.7 55.9L288 200.5l-86.1-89.1c-13.1-13.4-16.2-39.7 2.6-55.8zM551.9 312c-31.1-26.4-69.3-16.1-88.4-1.8l-60.4 45.5h-3.3c-.2-38-30.5-67.8-69.2-67.8h-144c-28.4 0-56.3 9.4-78.5 26.3L79.8 336H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h80l41.3-31.5c14-10.7 31.4-16.5 49.4-16.5h144c27.9 0 29.1 40.2-1.1 40.2h-59.8c-7.6 0-13.8 6.2-13.8 13.8v.1c0 7.6 6.2 13.8 13.8 13.8h134.5c9.7 0 19.2-3.2 26.9-9l61.3-46.1c8.3-6.2 20.5-6.7 28.4 0 10.1 8.5 9.3 23.1-.9 30.7L419.4 455c-7.8 5.8-17.2 9-26.9 9H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h376.8c19.9 0 39.3-6.5 55.2-18.5l100.8-75.9c16.6-12.5 26.5-31.5 27.1-52 .7-20.5-8.1-40.1-24-53.6z\"]\n};\nvar faHandHoldingMagic = {\n prefix: 'far',\n iconName: 'hand-holding-magic',\n icon: [576, 512, [], \"f6e5\", \"M551.94 312.03c-31.11-26.43-69.35-16.09-88.37-1.77l-60.43 45.5h-3.27c-.17-38.03-30.51-67.76-69.2-67.76h-144c-28.38 0-56.26 9.35-78.5 26.33L79.79 336H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h80.02l41.27-31.52c13.96-10.66 31.39-16.48 49.37-16.48h144c27.86 0 29.07 40.16-1.14 40.16h-59.76c-7.6 0-13.76 6.16-13.76 13.76v.08c0 7.6 6.16 13.76 13.76 13.76h134.46c9.71 0 19.17-3.16 26.93-9l61.29-46.15c8.27-6.22 20.49-6.73 28.42 0 10.05 8.54 9.26 23.06-.87 30.68L419.43 455c-7.76 5.84-17.2 9-26.92 9H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h376.83c19.92 0 39.3-6.48 55.21-18.46l100.81-75.91c16.6-12.48 26.49-31.45 27.11-52.03.62-20.54-8.13-40.06-24.02-53.57zM224 192h41.69c42.62 0 78.28-30.48 86.31-70.8-16.09 9.98-44.81 22.8-86.31 22.8H224c-22.53 0-40-21.5-40-40V88c0-22.06 17.94-40 40-40h144c22.06 0 40 17.94 40 40v33.22c0 33.94-15.78 68.22-44.47 96.5L324.72 256c73.34-5.77 130.75-63.72 131.28-133.28V88c0-48.53-39.47-88-88-88H224c-48.53 0-88 39.47-88 88v16c0 46.88 41.12 88 88 88z\"]\n};\nvar faHandHoldingMedical = {\n prefix: 'far',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M160,176h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16V176h64a16,16,0,0,0,16-16V96a16,16,0,0,0-16-16H320V16A16,16,0,0,0,304,0H240a16,16,0,0,0-16,16V80H160a16,16,0,0,0-16,16v64A16,16,0,0,0,160,176ZM552,312c-31.11-26.4-69.32-16.09-88.41-1.8l-60.42,45.49h-3.29c-.21-38-30.51-67.78-69.21-67.78h-144a130.4,130.4,0,0,0-78.51,26.29L79.8,336H16A16,16,0,0,0,0,352v16a16,16,0,0,0,16,16H96l41.3-31.49A81.37,81.37,0,0,1,186.72,336h144c27.89,0,29.09,40.2-1.11,40.2H269.82A13.82,13.82,0,0,0,256,390v.1a13.83,13.83,0,0,0,13.79,13.81H404.34a45,45,0,0,0,26.91-9l61.3-46.1c8.3-6.21,20.5-6.71,28.41,0a19.28,19.28,0,0,1-.91,30.69L419.45,455a45.16,45.16,0,0,1-26.91,9H16A16,16,0,0,0,0,480v16a16,16,0,0,0,16,16H392.84A91.69,91.69,0,0,0,448,493.5l100.81-75.89A67.32,67.32,0,0,0,552,312Z\"]\n};\nvar faHandHoldingSeedling = {\n prefix: 'far',\n iconName: 'hand-holding-seedling',\n icon: [576, 512, [], \"f4bf\", \"M250.7 192H264v48c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-48h13.3C410.6 192 480 116.6 480 24V0h-61.3C363.5 0 315.4 31.7 288 79 260.6 31.7 212.5 0 157.3 0H96v24c0 92.6 69.4 168 154.7 168zm168-144h11.2c-9.9 54.7-53 96-104.5 96h-11.2c9.9-54.7 53-96 104.5-96zm-261.4 0c51.5 0 94.6 41.3 104.5 96h-11.2c-51.5 0-94.6-41.3-104.5-96h11.2zm394.6 264c-31.1-26.4-69.3-16.1-88.4-1.8l-60.4 45.5h-3.3c-.2-38-30.5-67.8-69.2-67.8h-144c-28.4 0-56.3 9.4-78.5 26.3L79.8 336H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h80l41.3-31.5c14-10.7 31.4-16.5 49.4-16.5h144c27.9 0 29.1 40.2-1.1 40.2h-59.8c-7.6 0-13.8 6.2-13.8 13.8v.1c0 7.6 6.2 13.8 13.8 13.8h134.5c9.7 0 19.2-3.2 26.9-9l61.3-46.1c8.3-6.2 20.5-6.7 28.4 0 10.1 8.5 9.3 23.1-.9 30.7L419.4 455c-7.8 5.8-17.2 9-26.9 9H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h376.8c19.9 0 39.3-6.5 55.2-18.5l100.8-75.9c16.6-12.5 26.5-31.5 27.1-52 .7-20.5-8.1-40.1-24-53.6z\"]\n};\nvar faHandHoldingUsd = {\n prefix: 'far',\n iconName: 'hand-holding-usd',\n icon: [576, 512, [], \"f4c0\", \"M551.9 312c-31.1-26.4-69.3-16.1-88.4-1.8l-60.4 45.5h-3.3c-.2-38-30.5-67.8-69.2-67.8h-144c-28.4 0-56.3 9.4-78.5 26.3L79.8 336H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h80l41.3-31.5c14-10.7 31.4-16.5 49.4-16.5h144c27.9 0 29.1 40.2-1.1 40.2h-59.8c-7.6 0-13.8 6.2-13.8 13.8v.1c0 7.6 6.2 13.8 13.8 13.8h134.5c9.7 0 19.2-3.2 26.9-9l61.3-46.1c8.3-6.2 20.5-6.7 28.4 0 10.1 8.5 9.3 23.1-.9 30.7L419.4 455c-7.8 5.8-17.2 9-26.9 9H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h376.8c19.9 0 39.3-6.5 55.2-18.5l100.8-75.9c16.6-12.5 26.5-31.5 27.1-52 .7-20.5-8.1-40.1-24-53.6zM257.6 144.3l50.1 14.3c3.6 1 6.1 4.4 6.1 8.1 0 4.6-3.8 8.4-8.4 8.4h-32.8c-3.6 0-7.1-.8-10.3-2.2-4.8-2.2-10.4-1.7-14.1 2l-17.5 17.5c-5.3 5.3-4.7 14.3 1.5 18.4 9.5 6.3 20.4 10.1 31.8 11.5V240c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-17.6c30.3-3.6 53.4-31 49.3-63-2.9-23-20.7-41.3-42.9-47.7l-50.1-14.3c-3.6-1-6.1-4.4-6.1-8.1 0-4.6 3.8-8.4 8.4-8.4h32.8c3.6 0 7.1.8 10.3 2.2 4.8 2.2 10.4 1.7 14.1-2l17.5-17.5c5.3-5.3 4.7-14.3-1.5-18.4-9.5-6.3-20.4-10.1-31.8-11.5V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v17.6c-30.3 3.6-53.4 31-49.3 63 2.9 23 20.6 41.3 42.9 47.7z\"]\n};\nvar faHandHoldingWater = {\n prefix: 'far',\n iconName: 'hand-holding-water',\n icon: [576, 512, [], \"f4c1\", \"M551.9 312c-31.1-26.4-69.3-16.1-88.4-1.8l-60.4 45.5h-3.3c-.2-38-30.5-67.8-69.2-67.8h-144c-28.4 0-56.3 9.4-78.5 26.3L79.8 336H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h80l41.3-31.5c14-10.7 31.4-16.5 49.4-16.5h144c27.9 0 29.1 40.2-1.1 40.2h-59.8c-7.6 0-13.8 6.2-13.8 13.8v.1c0 7.6 6.2 13.8 13.8 13.8h134.5c9.7 0 19.2-3.2 26.9-9l61.3-46.1c8.3-6.2 20.5-6.7 28.4 0 10.1 8.5 9.3 23.1-.9 30.7L419.4 455c-7.8 5.8-17.2 9-26.9 9H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h376.8c19.9 0 39.3-6.5 55.2-18.5l100.8-75.9c16.6-12.5 26.5-31.5 27.1-52 .7-20.5-8.1-40.1-24-53.6zM288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-3.2-4.3-8-6.4-12.8-6.4s-9.6 2.1-12.8 6.4C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm0-185.1c34 49.8 47.5 81.1 48 91.1 0 25.4-21.5 46-48 46s-48-20.6-48-45.8c.5-10.1 14-41.5 48-91.3z\"]\n};\nvar faHandLizard = {\n prefix: 'far',\n iconName: 'hand-lizard',\n icon: [576, 512, [], \"f258\", \"M556.686 290.542L410.328 64.829C397.001 44.272 374.417 32 349.917 32H56C25.121 32 0 57.122 0 88v8c0 44.112 35.888 80 80 80h196.042l-18.333 48H144c-48.523 0-88 39.477-88 88 0 30.879 25.121 56 56 56h131.552c2.987 0 5.914.549 8.697 1.631L352 408.418V480h224V355.829c0-23.225-6.679-45.801-19.314-65.287zM528 432H400v-23.582c0-19.948-12.014-37.508-30.604-44.736l-99.751-38.788A71.733 71.733 0 0 0 243.552 320H112c-4.411 0-8-3.589-8-8 0-22.056 17.944-40 40-40h113.709c19.767 0 37.786-12.407 44.84-30.873l24.552-64.281c8.996-23.553-8.428-48.846-33.63-48.846H80c-17.645 0-32-14.355-32-32v-8c0-4.411 3.589-8 8-8h293.917c8.166 0 15.693 4.09 20.137 10.942l146.358 225.715A71.84 71.84 0 0 1 528 355.829V432z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'far',\n iconName: 'hand-middle-finger',\n icon: [512, 512, [], \"f806\", \"M479.94 312.91c-.01-12.53-4.34-63.48-64.95-78.63-4.52-25.94-24.73-46.96-51.36-51.91-30.66-5.7-42.63-6.36-43.67-6.31l.04-96.07c0-44.18-35.82-80-80-80-44.11 0-79.85 35.7-79.98 79.78l-.05 96.29c-10.39-.49-23.46 2.65-36.82 5.33-11.88 2.38-59.16 16.77-59.16 76.94l-19.77 9.89C16.94 281.86 0 309.28 0 339.78v46.97c0 21.37 8.32 41.46 23.43 56.57l26.5 26.5c27.2 27.2 63.36 42.18 101.82 42.18h184.29c79.59 0 144.02-64.44 143.96-144.09l-.06-55zM336.04 464H151.75a95.942 95.942 0 0 1-67.87-28.12l-26.51-26.51c-6-6-9.37-14.14-9.37-22.63v-46.97a32 32 0 0 1 17.69-28.62L80 304v32c0 8.84 7.16 16 16 16s16-7.16 16-16l-.01-82.43c0-12.2 8.66-22.72 20.62-25.11 19.46-3.89 21.11-4.46 24.21-4.46 10.34 0 19.16 8.4 19.16 19.21 0 7.07 5.73 12.79 12.79 12.79h6.41c7.07 0 12.79-5.73 12.79-12.79L208 81.37c0-16.71 12.22-31.63 28.86-33.22C255.94 46.33 272 61.29 272 80l-.04 163.2c0 7.07 5.73 12.8 12.79 12.8h6.4c7.07 0 12.79-5.73 12.79-12.79 0-10.81 8.82-19.21 19.15-19.21 2.89 0 3.31.29 31.69 5.56 7.58 1.41 13.14 8.03 13.14 15.75V272l39.77 9.94c14.23 3.56 24.22 16.34 24.23 31.01l.06 55c.06 53.03-42.91 96.05-95.94 96.05z\"]\n};\nvar faHandPaper = {\n prefix: 'far',\n iconName: 'hand-paper',\n icon: [448, 512, [], \"f256\", \"M372.57 112.641v-10.825c0-43.612-40.52-76.691-83.039-65.546-25.629-49.5-94.09-47.45-117.982.747C130.269 26.456 89.144 57.945 89.144 102v126.13c-19.953-7.427-43.308-5.068-62.083 8.871-29.355 21.796-35.794 63.333-14.55 93.153L132.48 498.569a32 32 0 0 0 26.062 13.432h222.897c14.904 0 27.835-10.289 31.182-24.813l30.184-130.958A203.637 203.637 0 0 0 448 310.564V179c0-40.62-35.523-71.992-75.43-66.359zm27.427 197.922c0 11.731-1.334 23.469-3.965 34.886L368.707 464h-201.92L51.591 302.303c-14.439-20.27 15.023-42.776 29.394-22.605l27.128 38.079c8.995 12.626 29.031 6.287 29.031-9.283V102c0-25.645 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V67c0-25.663 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V101.125c0-25.672 36.57-24.81 36.57.691V256c0 8.837 7.163 16 16 16h6.857c8.837 0 16-7.163 16-16v-76.309c0-26.242 36.57-25.64 36.57-.691v131.563z\"]\n};\nvar faHandPeace = {\n prefix: 'far',\n iconName: 'hand-peace',\n icon: [448, 512, [], \"f25b\", \"M362.146 191.976c-13.71-21.649-38.761-34.016-65.006-30.341V74c0-40.804-32.811-74-73.141-74-40.33 0-73.14 33.196-73.14 74L160 168l-18.679-78.85C126.578 50.843 83.85 32.11 46.209 47.208 8.735 62.238-9.571 104.963 5.008 142.85l55.757 144.927c-30.557 24.956-43.994 57.809-24.733 92.218l54.853 97.999C102.625 498.97 124.73 512 148.575 512h205.702c30.744 0 57.558-21.44 64.555-51.797l27.427-118.999a67.801 67.801 0 0 0 1.729-15.203L448 256c0-44.956-43.263-77.343-85.854-64.024zM399.987 326c0 1.488-.169 2.977-.502 4.423l-27.427 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H148.575c-6.486 0-12.542-3.621-15.805-9.449l-54.854-98c-4.557-8.141-2.619-18.668 4.508-24.488l26.647-21.764a16 16 0 0 0 4.812-18.139l-64.09-166.549C37.226 92.956 84.37 74.837 96.51 106.389l59.784 155.357A16 16 0 0 0 171.227 272h11.632c8.837 0 16-7.163 16-16V74c0-34.375 50.281-34.43 50.281 0v182c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16v-28c0-25.122 36.567-25.159 36.567 0v28c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16 0-25.12 36.567-25.16 36.567 0v70z\"]\n};\nvar faHandPointDown = {\n prefix: 'far',\n iconName: 'hand-point-down',\n icon: [448, 512, [], \"f0a7\", \"M188.8 512c45.616 0 83.2-37.765 83.2-83.2v-35.647a93.148 93.148 0 0 0 22.064-7.929c22.006 2.507 44.978-3.503 62.791-15.985C409.342 368.1 448 331.841 448 269.299V248c0-60.063-40-98.512-40-127.2v-2.679c4.952-5.747 8-13.536 8-22.12V32c0-17.673-12.894-32-28.8-32H156.8C140.894 0 128 14.327 128 32v64c0 8.584 3.048 16.373 8 22.12v2.679c0 6.964-6.193 14.862-23.668 30.183l-.148.129-.146.131c-9.937 8.856-20.841 18.116-33.253 25.851C48.537 195.798 0 207.486 0 252.8c0 56.928 35.286 92 83.2 92 8.026 0 15.489-.814 22.4-2.176V428.8c0 45.099 38.101 83.2 83.2 83.2zm0-48c-18.7 0-35.2-16.775-35.2-35.2V270.4c-17.325 0-35.2 26.4-70.4 26.4-26.4 0-35.2-20.625-35.2-44 0-8.794 32.712-20.445 56.1-34.926 14.575-9.074 27.225-19.524 39.875-30.799 18.374-16.109 36.633-33.836 39.596-59.075h176.752C364.087 170.79 400 202.509 400 248v21.299c0 40.524-22.197 57.124-61.325 50.601-8.001 14.612-33.979 24.151-53.625 12.925-18.225 19.365-46.381 17.787-61.05 4.95V428.8c0 18.975-16.225 35.2-35.2 35.2zM328 64c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24z\"]\n};\nvar faHandPointLeft = {\n prefix: 'far',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M0 220.8C0 266.416 37.765 304 83.2 304h35.647a93.148 93.148 0 0 0 7.929 22.064c-2.507 22.006 3.503 44.978 15.985 62.791C143.9 441.342 180.159 480 242.701 480H264c60.063 0 98.512-40 127.2-40h2.679c5.747 4.952 13.536 8 22.12 8h64c17.673 0 32-12.894 32-28.8V188.8c0-15.906-14.327-28.8-32-28.8h-64c-8.584 0-16.373 3.048-22.12 8H391.2c-6.964 0-14.862-6.193-30.183-23.668l-.129-.148-.131-.146c-8.856-9.937-18.116-20.841-25.851-33.253C316.202 80.537 304.514 32 259.2 32c-56.928 0-92 35.286-92 83.2 0 8.026.814 15.489 2.176 22.4H83.2C38.101 137.6 0 175.701 0 220.8zm48 0c0-18.7 16.775-35.2 35.2-35.2h158.4c0-17.325-26.4-35.2-26.4-70.4 0-26.4 20.625-35.2 44-35.2 8.794 0 20.445 32.712 34.926 56.1 9.074 14.575 19.524 27.225 30.799 39.875 16.109 18.374 33.836 36.633 59.075 39.596v176.752C341.21 396.087 309.491 432 264 432h-21.299c-40.524 0-57.124-22.197-50.601-61.325-14.612-8.001-24.151-33.979-12.925-53.625-19.365-18.225-17.787-46.381-4.95-61.05H83.2C64.225 256 48 239.775 48 220.8zM448 360c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z\"]\n};\nvar faHandPointRight = {\n prefix: 'far',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M428.8 137.6h-86.177a115.52 115.52 0 0 0 2.176-22.4c0-47.914-35.072-83.2-92-83.2-45.314 0-57.002 48.537-75.707 78.784-7.735 12.413-16.994 23.317-25.851 33.253l-.131.146-.129.148C135.662 161.807 127.764 168 120.8 168h-2.679c-5.747-4.952-13.536-8-22.12-8H32c-17.673 0-32 12.894-32 28.8v230.4C0 435.106 14.327 448 32 448h64c8.584 0 16.373-3.048 22.12-8h2.679c28.688 0 67.137 40 127.2 40h21.299c62.542 0 98.8-38.658 99.94-91.145 12.482-17.813 18.491-40.785 15.985-62.791A93.148 93.148 0 0 0 393.152 304H428.8c45.435 0 83.2-37.584 83.2-83.2 0-45.099-38.101-83.2-83.2-83.2zm0 118.4h-91.026c12.837 14.669 14.415 42.825-4.95 61.05 11.227 19.646 1.687 45.624-12.925 53.625 6.524 39.128-10.076 61.325-50.6 61.325H248c-45.491 0-77.21-35.913-120-39.676V215.571c25.239-2.964 42.966-21.222 59.075-39.596 11.275-12.65 21.725-25.3 30.799-39.875C232.355 112.712 244.006 80 252.8 80c23.375 0 44 8.8 44 35.2 0 35.2-26.4 53.075-26.4 70.4h158.4c18.425 0 35.2 16.5 35.2 35.2 0 18.975-16.225 35.2-35.2 35.2zM88 384c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z\"]\n};\nvar faHandPointUp = {\n prefix: 'far',\n iconName: 'hand-point-up',\n icon: [448, 512, [], \"f0a6\", \"M105.6 83.2v86.177a115.52 115.52 0 0 0-22.4-2.176c-47.914 0-83.2 35.072-83.2 92 0 45.314 48.537 57.002 78.784 75.707 12.413 7.735 23.317 16.994 33.253 25.851l.146.131.148.129C129.807 376.338 136 384.236 136 391.2v2.679c-4.952 5.747-8 13.536-8 22.12v64c0 17.673 12.894 32 28.8 32h230.4c15.906 0 28.8-14.327 28.8-32v-64c0-8.584-3.048-16.373-8-22.12V391.2c0-28.688 40-67.137 40-127.2v-21.299c0-62.542-38.658-98.8-91.145-99.94-17.813-12.482-40.785-18.491-62.791-15.985A93.148 93.148 0 0 0 272 118.847V83.2C272 37.765 234.416 0 188.8 0c-45.099 0-83.2 38.101-83.2 83.2zm118.4 0v91.026c14.669-12.837 42.825-14.415 61.05 4.95 19.646-11.227 45.624-1.687 53.625 12.925 39.128-6.524 61.325 10.076 61.325 50.6V264c0 45.491-35.913 77.21-39.676 120H183.571c-2.964-25.239-21.222-42.966-39.596-59.075-12.65-11.275-25.3-21.725-39.875-30.799C80.712 279.645 48 267.994 48 259.2c0-23.375 8.8-44 35.2-44 35.2 0 53.075 26.4 70.4 26.4V83.2c0-18.425 16.5-35.2 35.2-35.2 18.975 0 35.2 16.225 35.2 35.2zM352 424c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z\"]\n};\nvar faHandPointer = {\n prefix: 'far',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M358.182 179.361c-19.493-24.768-52.679-31.945-79.872-19.098-15.127-15.687-36.182-22.487-56.595-19.629V67c0-36.944-29.736-67-66.286-67S89.143 30.056 89.143 67v161.129c-19.909-7.41-43.272-5.094-62.083 8.872-29.355 21.795-35.793 63.333-14.55 93.152l109.699 154.001C134.632 501.59 154.741 512 176 512h178.286c30.802 0 57.574-21.5 64.557-51.797l27.429-118.999A67.873 67.873 0 0 0 448 326v-84c0-46.844-46.625-79.273-89.818-62.639zM80.985 279.697l27.126 38.079c8.995 12.626 29.031 6.287 29.031-9.283V67c0-25.12 36.571-25.16 36.571 0v175c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16v-35c0-25.12 36.571-25.16 36.571 0v35c0 8.836 7.163 16 16 16H272c8.837 0 16-7.164 16-16v-21c0-25.12 36.571-25.16 36.571 0v21c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16 0-25.121 36.571-25.16 36.571 0v84c0 1.488-.169 2.977-.502 4.423l-27.43 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H176c-5.769 0-11.263-2.878-14.697-7.697l-109.712-154c-14.406-20.223 14.994-42.818 29.394-22.606zM176.143 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.733 0-14-7.163-14-16zm75.428 0v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16zM327 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16z\"]\n};\nvar faHandReceiving = {\n prefix: 'far',\n iconName: 'hand-receiving',\n icon: [640, 512, [], \"f47c\", \"M297.6 246.7c6.2 6.2 14.3 9.3 22.4 9.3s16.2-3.1 22.4-9.3l96.4-96.4c12.4-12.3 12.4-32.4 0-44.7L342.4 9.3C336.2 3.1 328.1 0 320 0s-16.2 3.1-22.4 9.3l-96.4 96.4c-12.4 12.3-12.4 32.4 0 44.7l96.4 96.3zM320 54l74 74-74 74-74-74 74-74zm252.9 42.2C531 93.4 496 126.7 496 168c0 0-.1 39-.2 76-11.7-7.8-25.7-12-39.8-12-22.5 0-43.3 10.2-57 28l-71.8 93.3c-2.7 3.5-5 7.4-7.2 11.2-2.3-3.8-4.5-7.7-7.2-11.2L241 260c-13.8-17.8-34.6-28-57-28-14.1 0-28.1 4.3-39.8 12-.1-37.1-.2-76-.2-76 0-41.3-35-74.6-76.9-71.8C28.8 98.7 0 132.2 0 170.5V362c0 25.3 8.7 50.2 24.5 70l58.7 74c3 3.8 7.7 6.1 12.5 6.1H112c8.8 0 16-7.2 16-16v-11.6L62 402c-9.1-11.3-14-25.4-14-40V168.9c0-11.6 7.8-22.3 19.2-24.4 15.3-3 28.8 8.7 28.8 23.5 0 0 .2 101 .3 132.6 0 7.6 2.8 14.8 7.8 20.6l76.5 92.6c4.4 5.3 10.7 8 17 8 5.8 0 11.7-2.3 16.1-7 7.5-7.9 7.3-20.4.8-29.2l-49.5-67c-8.1-10.5-6.1-25.6 4.4-33.7 4.4-3.4 9.5-5 14.6-5 7.2 0 14.3 3.2 19.1 9.4l71.7 93.2c8.6 11.2 13.3 24.9 13.3 39V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-74.4c0-14.1 4.7-27.8 13.3-39l71.7-93.2c4.7-6.1 11.9-9.4 19.1-9.4 5.1 0 10.2 1.6 14.6 5 10.5 8.1 12.5 23.1 4.4 33.7l-49.5 67c-6.5 8.8-6.6 21.3.8 29.2 4.4 4.7 10.2 7 16.1 7 6.3 0 12.6-2.7 17-8l76.5-92.6c5-5.8 7.7-13 7.8-20.6-.1-31.7.1-132.7.1-132.7 0-14.8 13.4-26.5 28.8-23.5 11.4 2.2 19.2 12.8 19.2 24.4V362c0 14.5-4.9 28.6-14 39.9l-66 82.5V496c0 8.8 7.2 16 16 16h16.3c4.9 0 9.5-2.2 12.5-6.1l58.7-74c15.8-19.8 24.5-44.6 24.5-70V170.5c0-38.3-28.8-71.8-67.1-74.3z\"]\n};\nvar faHandRock = {\n prefix: 'far',\n iconName: 'hand-rock',\n icon: [512, 512, [], \"f255\", \"M408.864 79.052c-22.401-33.898-66.108-42.273-98.813-23.588-29.474-31.469-79.145-31.093-108.334-.022-47.16-27.02-108.71 5.055-110.671 60.806C44.846 105.407 0 140.001 0 187.429v56.953c0 32.741 14.28 63.954 39.18 85.634l97.71 85.081c4.252 3.702 3.11 5.573 3.11 32.903 0 17.673 14.327 32 32 32h252c17.673 0 32-14.327 32-32 0-23.513-1.015-30.745 3.982-42.37l42.835-99.656c6.094-14.177 9.183-29.172 9.183-44.568V146.963c0-52.839-54.314-88.662-103.136-67.911zM464 261.406a64.505 64.505 0 0 1-5.282 25.613l-42.835 99.655c-5.23 12.171-7.883 25.04-7.883 38.25V432H188v-10.286c0-16.37-7.14-31.977-19.59-42.817l-97.71-85.08C56.274 281.255 48 263.236 48 244.381v-56.953c0-33.208 52-33.537 52 .677v41.228a16 16 0 0 0 5.493 12.067l7 6.095A16 16 0 0 0 139 235.429V118.857c0-33.097 52-33.725 52 .677v26.751c0 8.836 7.164 16 16 16h7c8.836 0 16-7.164 16-16v-41.143c0-33.134 52-33.675 52 .677v40.466c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16v-27.429c0-33.03 52-33.78 52 .677v26.751c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16 0-33.146 52-33.613 52 .677v114.445z\"]\n};\nvar faHandScissors = {\n prefix: 'far',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M256 480l70-.013c5.114 0 10.231-.583 15.203-1.729l118.999-27.427C490.56 443.835 512 417.02 512 386.277V180.575c0-23.845-13.03-45.951-34.005-57.69l-97.999-54.853c-34.409-19.261-67.263-5.824-92.218 24.733L142.85 37.008c-37.887-14.579-80.612 3.727-95.642 41.201-15.098 37.642 3.635 80.37 41.942 95.112L168 192l-94-9.141c-40.804 0-74 32.811-74 73.14 0 40.33 33.196 73.141 74 73.141h87.635c-3.675 26.245 8.692 51.297 30.341 65.006C178.657 436.737 211.044 480 256 480zm0-48.013c-25.16 0-25.12-36.567 0-36.567 8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16h-28c-25.159 0-25.122-36.567 0-36.567h28c8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16H74c-34.43 0-34.375-50.281 0-50.281h182c8.837 0 16-7.163 16-16v-11.632a16 16 0 0 0-10.254-14.933L106.389 128.51c-31.552-12.14-13.432-59.283 19.222-46.717l166.549 64.091a16.001 16.001 0 0 0 18.139-4.812l21.764-26.647c5.82-7.127 16.348-9.064 24.488-4.508l98 54.854c5.828 3.263 9.449 9.318 9.449 15.805v205.701c0 8.491-5.994 15.804-14.576 17.782l-119.001 27.427a19.743 19.743 0 0 1-4.423.502h-70z\"]\n};\nvar faHandSparkles = {\n prefix: 'far',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M471.38,467.5l-1-.43-1-.49a37.63,37.63,0,0,1-6.06-4.23,31.74,31.74,0,0,1-9.47,1.65H273.14a32.29,32.29,0,0,1-26.69-14.3L132.34,277.8c-18-25.71,20.7-54.1,39.3-27.5l37.81,54.4c4.5,6.5,14.59,3.21,14.59-4.61V104c0-31.8,48-31.7,48,0V248a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8V72c0-31.8,48-31.7,48,0V248a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8V104c0-31.8,48-31.7,48,0V248a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8V184c0-31.8,48-31.7,48,0v88.3a321.9,321.9,0,0,1-6.2,62.79L495.6,386.4l13.27-5.53,15.63-37.49.41-1,.47-.95c5.83-11.74,18-19.6,31-20.92A371.21,371.21,0,0,0,560,272.3V184A71.94,71.94,0,0,0,488,112c-2.7,0-5.4.2-8,.41V104a72.08,72.08,0,0,0-72-72,70.77,70.77,0,0,0-18.59,2.41,72,72,0,0,0-122.81,0A70.79,70.79,0,0,0,248,32a72.08,72.08,0,0,0-72,72v92.09c-10.5-3.68-38.09-10.18-65.29,8.91A72.13,72.13,0,0,0,93,305.3l113.5,171a79.81,79.81,0,0,0,66.6,35.7H453.75a79.85,79.85,0,0,0,57-24.3l-1.9-4.57ZM86,156.3l20.69-49.63h0l.09,0L156.3,86A7.29,7.29,0,0,0,160,80h0A7.28,7.28,0,0,0,156.3,74L106.73,53.37l-.07,0L86,3.7A6.65,6.65,0,0,0,74,3.7L53.34,53.33l-.05,0L3.7,74A7.28,7.28,0,0,0,0,80H0A7.29,7.29,0,0,0,3.7,86l49.57,20.67.07,0L74,156.3a6.65,6.65,0,0,0,11.92,0ZM307.58,288a4,4,0,0,0-7.15,0L288,317.79l-29.79,12.42a4,4,0,0,0,0,7.15L288,349.78l12.42,29.78a4,4,0,0,0,7.15,0L320,349.78l29.79-12.42a4,4,0,0,0,0-7.15L320,317.79ZM640,432A7.28,7.28,0,0,0,636.3,426l-49.57-20.67-.07,0L566,355.7a6.65,6.65,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426A7.28,7.28,0,0,0,480,432h0A7.29,7.29,0,0,0,483.7,438l49.57,20.67.07,0L554,508.3a6.65,6.65,0,0,0,11.92,0l20.69-49.63h0l.09-.05L636.3,438A7.29,7.29,0,0,0,640,432h0Z\"]\n};\nvar faHandSpock = {\n prefix: 'far',\n iconName: 'hand-spock',\n icon: [512, 512, [], \"f259\", \"M501.03053,116.17605c-19.39059-31.50779-51.24406-35.72849-66.31044-35.01756-14.11325-50.81051-62.0038-54.08-70.73816-54.08a74.03091,74.03091,0,0,0-72.23816,58.916l-4.64648,22.66014-13.68357-53.207c-9.09569-35.37107-46.412-64.05074-89.66-53.07223a73.89749,73.89749,0,0,0-55.121,78.94722,73.68273,73.68273,0,0,0-64.8495,94.42181l24.35933,82.19721c-38.24017-7.54492-62.79677,16.18358-68.11512,21.84764a73.6791,73.6791,0,0,0,3.19921,104.19329l91.36509,85.9765A154.164,154.164,0,0,0,220.62279,512h107.4549A127.30079,127.30079,0,0,0,452.3392,413.86139l57.623-241.96272A73.20274,73.20274,0,0,0,501.03053,116.17605Zm-37.7597,44.60544L405.64788,402.74812a79.46616,79.46616,0,0,1-77.57019,61.25972H220.62279a106.34052,106.34052,0,0,1-73.1366-28.998l-91.369-85.98041C31.34381,325.72669,66.61133,288.131,91.39644,311.5392l51.123,48.10739c5.42577,5.10937,13.48239.71679,13.48239-5.82617a246.79914,246.79914,0,0,0-10.17771-70.1523l-36.01362-121.539c-9.7324-32.88279,39.69916-47.27145,49.38664-14.625l31.3437,105.77923c5.59374,18.90428,33.78119,10.71288,28.9648-8.00781L177.06427,80.23662c-8.50389-33.1035,41.43157-45.64646,49.86515-12.83593l47.32609,184.035c4.42773,17.24218,29.16207,16.5039,32.71089-.80468l31.791-154.9706c6.81054-33.1074,57.51748-24.10741,50.11906,11.96288L360.32764,246.78924c-3.72265,18.10936,23.66793,24.63084,28.05659,6.21679L413.185,148.85962C421.1498,115.512,471.14,127.79713,463.27083,160.78149Z\"]\n};\nvar faHands = {\n prefix: 'far',\n iconName: 'hands',\n icon: [640, 512, [], \"f4c2\", \"M572.9 96.2C531 93.4 496 126.7 496 168c0 0-.1 39-.2 76-11.7-7.8-25.7-12-39.8-12-22.5 0-43.3 10.2-57 28l-71.8 93.3c-2.7 3.5-5 7.4-7.2 11.2-2.3-3.8-4.5-7.7-7.2-11.2L241 260c-13.8-17.8-34.6-28-57-28-14.1 0-28.1 4.3-39.8 12-.1-37.1-.2-76-.2-76 0-41.3-35-74.6-76.9-71.8C28.8 98.7 0 132.2 0 170.5V362c0 25.3 8.7 50.2 24.5 70l58.7 74c3 3.8 7.7 6.1 12.5 6.1H112c8.8 0 16-7.2 16-16v-11.6L62 402c-9.1-11.3-14-25.4-14-40V168.9c0-11.6 7.8-22.3 19.2-24.4 15.3-3 28.8 8.7 28.8 23.5 0 0 .2 101 .3 132.6 0 7.6 2.8 14.8 7.8 20.6l76.5 92.6c4.4 5.3 10.7 8 17 8 5.8 0 11.7-2.3 16.1-7 7.5-7.9 7.3-20.4.8-29.2l-49.5-67c-8.1-10.5-6.1-25.6 4.4-33.7 4.4-3.4 9.5-5 14.6-5 7.2 0 14.3 3.2 19.1 9.4l71.7 93.2c8.6 11.2 13.3 24.9 13.3 39V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-74.4c0-14.1 4.7-27.8 13.3-39l71.7-93.2c4.7-6.1 11.9-9.4 19.1-9.4 5.1 0 10.2 1.6 14.6 5 10.5 8.1 12.5 23.1 4.4 33.7l-49.5 67c-6.5 8.8-6.6 21.3.8 29.2 4.4 4.7 10.2 7 16.1 7 6.3 0 12.6-2.7 17-8l76.5-92.6c5-5.8 7.7-13 7.8-20.6-.1-31.7.1-132.7.1-132.7 0-14.8 13.4-26.5 28.8-23.5 11.4 2.2 19.2 12.8 19.2 24.4V362c0 14.5-4.9 28.6-14 39.9l-66 82.5V496c0 8.8 7.2 16 16 16h16.3c4.9 0 9.5-2.2 12.5-6.1l58.7-74c15.8-19.8 24.5-44.6 24.5-70V170.5c0-38.3-28.8-71.8-67.1-74.3z\"]\n};\nvar faHandsHeart = {\n prefix: 'far',\n iconName: 'hands-heart',\n icon: [640, 512, [], \"f4c3\", \"M298.8 247.1c6.3 6.5 13.8 8.9 21.2 8.9 7.3.1 14.9-2.4 21.2-8.9l98.7-102c30.1-31.1 36.4-90.1-6-126.3C395.5-14 344.8 1 320 26.6 295.2 1 244.5-14 206.2 18.8c-42.4 36.2-36.1 95.2-6 126.3l98.6 102zM236.5 55.6c14.1-12 36.1-9 49.3 4.7L320 95.6l34.1-35.4c13.2-13.7 35.3-16.7 49.3-4.7 18.9 16.1 15.7 42.4 2.7 55.9L320 200.5l-86.1-89.1c-13.1-13.4-16.2-39.7 2.6-55.8zm336.4 40.6C531 93.4 496 126.7 496 168c0 0-.1 39-.2 76-29.8-19.8-72.5-15.5-96.8 16l-71.8 93.3c-2.7 3.5-5 7.4-7.2 11.2-2.3-3.8-4.5-7.7-7.2-11.2L241 260c-24.6-31.9-67.4-35.5-96.8-16-.1-37.1-.2-76-.2-76 0-41.3-35-74.6-76.9-71.8C28.8 98.7 0 132.2 0 170.5V362c0 25.3 8.7 50.2 24.5 70l58.7 74c3 3.8 7.7 6.1 12.5 6.1H112c8.8 0 16-7.2 16-16 0-7.5-2.6-14.8-7.2-20.6L62 402c-9.1-11.3-14-25.4-14-40V168.9c0-11.6 7.8-22.3 19.2-24.4 15.3-3 28.8 8.7 28.8 23.5 0 0 .2 101 .3 132.6 0 7.6 2.8 14.8 7.8 20.6l76.5 92.6c17.7 21.4 52.2-3.3 33.9-28.2l-49.5-67c-8.1-10.5-6.1-25.6 4.4-33.7 10.8-8.4 25.8-5.8 33.7 4.4l71.7 93.2c8.6 11.2 13.3 24.9 13.3 39V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-74.4c0-14.1 4.7-27.8 13.3-39l71.7-93.2c7.9-10.2 22.9-12.7 33.7-4.4 10.5 8.1 12.5 23.1 4.4 33.7l-49.5 67c-18.4 24.9 16.2 49.6 33.9 28.2l76.5-92.6c5-5.8 7.7-13 7.8-20.6-.1-31.7.1-132.7.1-132.7 0-14.8 13.4-26.5 28.8-23.5 11.4 2.2 19.2 12.8 19.2 24.4V362c0 14.5-4.9 28.6-14 39.9l-58.7 73.4c-4.7 5.9-7.2 13.1-7.2 20.6 0 8.8 7.2 16 16 16h16.3c4.9 0 9.5-2.2 12.5-6.1l58.7-74c15.8-19.8 24.5-44.6 24.5-70V170.5c-.1-38.3-28.9-71.8-67.2-74.3z\"]\n};\nvar faHandsHelping = {\n prefix: 'far',\n iconName: 'hands-helping',\n icon: [640, 512, [], \"f4c4\", \"M637.9 203.9l-8-13.9c-4.4-7.7-14.2-10.3-21.9-5.9l-96.7 56.4c-3.7-27.4-26.9-48.6-55.3-48.6H304v64c0 17.6-14.3 32-32 32s-32-14.4-32-32v-86.3c0-11 5.7-21.3 15-27.1l33.4-20.9c10.2-6.4 21.9-9.7 33.9-9.7h105.3l119.8-68.2c7.7-4.4 10.4-14.1 6-21.8L545.5 8c-4.4-7.7-14.1-10.4-21.8-6L415 64h-92.7c-21 0-41.5 5.9-59.3 17l-33.5 20.9c-18.3 11.4-30.6 29.4-35.2 49.8l-59.4 35.6C110.8 201.8 96 227.9 96 256.1v34.1L8 341c-7.7 4.4-10.3 14.2-5.9 21.9l8 13.9c4.4 7.7 14.2 10.3 21.9 5.9L144 318v-61.8c0-11.3 5.9-21.8 15.6-27.6L192 209v42.2c0 41.8 30 80.1 71.7 84.3 47.9 4.9 88.3-32.7 88.3-79.6v-16h104c4.4 0 8 3.6 8 8v32c0 4.4-3.6 8-8 8h-32v60c0 15.4-12.5 27.8-27.8 27.8h-24.1v24c0 17.8-14.4 32.2-32.2 32.2H211.3l-62.8 36.3c-7.7 4.4-10.3 14.2-5.9 21.9l8 13.9c4.4 7.7 14.2 10.3 21.9 5.9l51.6-29.9h115.8c36.9 0 68.1-25.1 77.4-59.2 31.5-9.2 54.7-38.4 54.7-72.8v-14.3c17.6-5.3 31.5-19 37.1-36.4L632 225.8c7.7-4.5 10.3-14.2 5.9-21.9z\"]\n};\nvar faHandsUsd = {\n prefix: 'far',\n iconName: 'hands-usd',\n icon: [640, 512, [], \"f4c5\", \"M289.6 144.3l50.1 14.3c3.6 1 6.1 4.4 6.1 8.1 0 4.6-3.8 8.4-8.4 8.4h-32.8c-3.6 0-7.1-.8-10.3-2.2-4.8-2.2-10.4-1.7-14.1 2l-17.5 17.5c-5.3 5.3-4.7 14.3 1.5 18.4 9.5 6.3 20.4 10.1 31.8 11.5V240c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-17.6c30.3-3.6 53.4-31 49.3-63-2.9-23-20.7-41.3-42.9-47.7l-50.1-14.3c-3.6-1-6.1-4.4-6.1-8.1 0-4.6 3.8-8.4 8.4-8.4h32.8c3.6 0 7.1.8 10.3 2.2 4.8 2.2 10.4 1.7 14.1-2l17.5-17.5c5.3-5.3 4.7-14.3-1.5-18.4-9.5-6.3-20.4-10.1-31.8-11.5V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v17.6c-30.3 3.6-53.4 31-49.3 63 2.9 23 20.6 41.3 42.9 47.7zm283.3-48.1C531 93.4 496 126.7 496 168c0 0-.1 39-.2 76-11.7-7.8-25.7-12-39.8-12-22.5 0-43.3 10.2-57 28l-71.8 93.3c-2.7 3.5-5 7.4-7.2 11.2-2.3-3.8-4.5-7.7-7.2-11.2L241 260c-13.8-17.8-34.6-28-57-28-14.1 0-28.1 4.3-39.8 12-.1-37.1-.2-76-.2-76 0-41.3-35-74.6-76.9-71.8C28.8 98.7 0 132.2 0 170.5V362c0 25.3 8.7 50.2 24.5 70l58.7 74c3 3.8 7.7 6.1 12.5 6.1H112c8.8 0 16-7.2 16-16 0-7.5-2.6-14.8-7.2-20.6L62 402c-9.1-11.3-14-25.4-14-40V168.9c0-11.6 7.8-22.3 19.2-24.4 15.3-3 28.8 8.7 28.8 23.5 0 0 .2 101 .3 132.6 0 7.6 2.8 14.8 7.8 20.6l76.5 92.6c8.1 9.8 23.6 11.1 33.1 1 7.5-7.9 7.3-20.4.8-29.2l-49.5-67c-8.1-10.5-6.1-25.6 4.4-33.7 4.4-3.4 9.5-5 14.6-5 7.2 0 14.3 3.2 19.1 9.4l71.7 93.2c8.6 11.2 13.3 24.9 13.3 39V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-74.4c0-14.1 4.7-27.8 13.3-39l71.7-93.2c4.7-6.1 11.9-9.4 19.1-9.4 5.1 0 10.2 1.6 14.6 5 10.5 8.1 12.5 23.1 4.4 33.7l-49.5 67c-6.5 8.8-6.6 21.3.8 29.2 10.2 10.9 25.7 7.9 33.1-1l76.5-92.6c5-5.8 7.7-13 7.8-20.6-.1-31.7.1-132.7.1-132.7 0-14.8 13.4-26.5 28.8-23.5 11.4 2.2 19.2 12.8 19.2 24.4V362c0 14.5-4.9 28.6-14 39.9l-58.7 73.4c-4.7 5.9-7.2 13.1-7.2 20.6 0 8.8 7.2 16 16 16h16.3c4.9 0 9.5-2.2 12.5-6.1l58.7-74c15.8-19.8 24.5-44.6 24.5-70V170.5c-.1-38.3-28.9-71.8-67.2-74.3z\"]\n};\nvar faHandsWash = {\n prefix: 'far',\n iconName: 'hands-wash',\n icon: [576, 512, [], \"e05e\", \"M576,192a80.09,80.09,0,0,0-80-80c-2.39,0-4.64.5-7,.71A63.65,63.65,0,1,0,448,128c.19,0,.37,0,.56-.06A78.77,78.77,0,0,0,421.64,221H386.21a67.83,67.83,0,0,0-4.49-12.92l12.42-39.3a67.5,67.5,0,0,0-42.83-84.32,68.3,68.3,0,0,0-6.63-13.17A67.28,67.28,0,0,0,309.56,44,67.66,67.66,0,0,0,253.9.45,66,66,0,0,0,246.24,0,66.87,66.87,0,0,0,208,11.94a68.38,68.38,0,0,0-11.55-2.37,66.08,66.08,0,0,0-7.66-.44c-29.57,0-55.51,19.24-64.56,47.89l-19.15,60.61c-1.5-.11-3-.17-4.54-.18-37.52,0-68.09,29.94-68.57,66.75v92.23A150.26,150.26,0,0,0,56.43,356C23.87,366.09,0,396.15,0,432a80.09,80.09,0,0,0,80,80c31.25,0,58.09-18.19,71.25-44.38A144.84,144.84,0,0,0,255.5,512h169A67.5,67.5,0,0,0,492,445.76a67.47,67.47,0,0,0,26-52,67.61,67.61,0,0,0,24.77-66.19A66.67,66.67,0,0,0,518,287.42a53.17,53.17,0,0,0-3-17.95C549.93,260.88,576,229.53,576,192ZM448,80a16,16,0,1,1,16-16A16,16,0,0,1,448,80ZM311,143.26c8.13-25.71,45.21-13.61,37.41,11.05l-5.83,18.48a65.19,65.19,0,0,0-40.58-1Zm-4.34-29.4-19.7,62.36L241.29,190.3c.21-.38.6-.6.74-1l27.18-86.46C277.34,77.09,314.41,89.19,306.62,113.86ZM80,184.83c.14-10.79,9.44-19.39,20.16-19.39h.07a19.52,19.52,0,0,1,19.39,19.63l1.69,40.66L170,71.48c8.12-25.72,45.2-13.62,37.41,11L176.12,181.7a6.5,6.5,0,1,0,12.4,3.91L227.46,62.35c8.12-25.72,45.2-13.62,37.41,11.05l-35.24,112a6.33,6.33,0,0,0,3.44,7.48l-20,6.17C151,219.7,110,276.41,110,340.47v5.66a99.83,99.83,0,0,1-30-69.7ZM80,464a32,32,0,1,1,32-32A32,32,0,0,1,80,464ZM476.5,360h-130a6.5,6.5,0,0,0,0,13H449.77c9.43,0,18.08,6.37,19.86,15.63A19.53,19.53,0,0,1,450.5,412h-104a6.5,6.5,0,0,0,0,13h77.27c9.43,0,18.08,6.37,19.86,15.63A19.53,19.53,0,0,1,424.5,464h-169A97.5,97.5,0,0,1,158,366.5v-26a100.65,100.65,0,0,1,69.22-95.59l87.52-27a20,20,0,0,1,5.73-.85,19.5,19.5,0,0,1,5.79,38.13L288,269H449.77c9.43,0,18.08,6.37,19.86,15.63A19.53,19.53,0,0,1,450.5,308h-104a6.5,6.5,0,0,0,0,13H475.77c9.43,0,18.08,6.37,19.86,15.63A19.53,19.53,0,0,1,476.5,360ZM496,224a32,32,0,1,1,32-32A32,32,0,0,1,496,224Z\"]\n};\nvar faHandshake = {\n prefix: 'far',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M519.2 127.9l-47.6-47.6A56.252 56.252 0 0 0 432 64H205.2c-14.8 0-29.1 5.9-39.6 16.3L118 127.9H0v255.7h64c17.6 0 31.8-14.2 31.9-31.7h9.1l84.6 76.4c30.9 25.1 73.8 25.7 105.6 3.8 12.5 10.8 26 15.9 41.1 15.9 18.2 0 35.3-7.4 48.8-24 22.1 8.7 48.2 2.6 64-16.8l26.2-32.3c5.6-6.9 9.1-14.8 10.9-23h57.9c.1 17.5 14.4 31.7 31.9 31.7h64V127.9H519.2zM48 351.6c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16zm390-6.9l-26.1 32.2c-2.8 3.4-7.8 4-11.3 1.2l-23.9-19.4-30 36.5c-6 7.3-15 4.8-18 2.4l-36.8-31.5-15.6 19.2c-13.9 17.1-39.2 19.7-55.3 6.6l-97.3-88H96V175.8h41.9l61.7-61.6c2-.8 3.7-1.5 5.7-2.3H262l-38.7 35.5c-29.4 26.9-31.1 72.3-4.4 101.3 14.8 16.2 61.2 41.2 101.5 4.4l8.2-7.5 108.2 87.8c3.4 2.8 3.9 7.9 1.2 11.3zm106-40.8h-69.2c-2.3-2.8-4.9-5.4-7.7-7.7l-102.7-83.4 12.5-11.4c6.5-6 7-16.1 1-22.6L367 167.1c-6-6.5-16.1-6.9-22.6-1l-55.2 50.6c-9.5 8.7-25.7 9.4-34.6 0-9.3-9.9-8.5-25.1 1.2-33.9l65.6-60.1c7.4-6.8 17-10.5 27-10.5l83.7-.2c2.1 0 4.1.8 5.5 2.3l61.7 61.6H544v128zm48 47.7c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16z\"]\n};\nvar faHandshakeAlt = {\n prefix: 'far',\n iconName: 'handshake-alt',\n icon: [640, 512, [], \"f4c6\", \"M255.7 182.7l65.6-60.1c7.4-6.8 17-10.5 27-10.5l83.7-.2c2.1 0 4.1.8 5.5 2.3l61.7 61.6H624c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16H519.2l-47.6-47.6C461.1 69.9 446.9 64 432 64H205.2c-14.8 0-29.1 5.9-39.6 16.3L118 127.9H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h121.9l61.7-61.6c2-.8 3.7-1.5 5.7-2.3H262l-38.7 35.5c-29.4 26.9-31.1 72.3-4.4 101.3 14.8 16.2 61.2 41.2 101.5 4.4l8.2-7.5 108.2 87.8c3.4 2.8 4 7.8 1.2 11.3L411.9 377c-2.8 3.4-7.8 4-11.3 1.2l-23.9-19.4-30 36.5c-2.2 2.7-5.4 4.4-8.9 4.8-3.5.4-7-.7-9.1-2.4l-36.8-31.5-15.6 19.2c-13.9 17.1-39.2 19.7-55.3 6.6l-97.3-88H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h89l84.6 76.4c30.9 25.1 73.8 25.7 105.6 3.8 12.5 10.8 26 15.9 41.1 15.9 18.2 0 35.3-7.4 48.8-24 22.1 8.7 48.2 2.6 64-16.8l26.2-32.3c5.6-6.9 9.1-14.8 10.9-23H624c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16H474.8c-2.3-2.8-4.9-5.4-7.7-7.7l-102.7-83.4 12.5-11.4c6.5-6 7-16.1 1-22.6L367 167.1c-6-6.5-16.1-6.9-22.6-1l-55.2 50.6c-9.5 8.7-25.7 9.4-34.6 0-9.4-9.9-8.5-25.2 1.1-34z\"]\n};\nvar faHandshakeAltSlash = {\n prefix: 'far',\n iconName: 'handshake-alt-slash',\n icon: [640, 512, [], \"e05f\", \"M16,175.91h84.67l-61.4-48H16a16,16,0,0,0-16,16v16A16,16,0,0,0,16,175.91ZM346.7,395.3a13.36,13.36,0,0,1-8.9,4.8,12.76,12.76,0,0,1-9.1-2.39l-36.79-31.5-15.61,19.2C262.41,402.5,237.09,405.1,221,392l-97.3-88H16A16.05,16.05,0,0,0,0,320v16a16,16,0,0,0,16,16h89l84.59,76.41c30.91,25.09,73.82,25.69,105.61,3.79,12.5,10.8,26,15.9,41.1,15.9,18.2,0,35.29-7.4,48.79-24a56.09,56.09,0,0,0,35.28,1.75l-60.14-47Zm31.21-216.39L367,167.1a16.07,16.07,0,0,0-22.59-1l-10.36,9.5,38.37,30,4.49-4.1A16,16,0,0,0,377.91,178.91ZM624,304H498.3l61.4,48H624a16,16,0,0,0,16-16V320A16.05,16.05,0,0,0,624,304Zm0-176.2H519.2L471.59,80.21A56.54,56.54,0,0,0,432,64H205.2a56.09,56.09,0,0,0-12.07,1.42L296,145.82,321.3,122.6a39.79,39.79,0,0,1,27-10.5l83.7-.19a7.5,7.5,0,0,1,5.5,2.3l61.7,61.59H624a16,16,0,0,0,16-16v-16A16.05,16.05,0,0,0,624,127.8ZM36,3.52A16,16,0,0,0,13.51,6l-10,12.49A16,16,0,0,0,6,41L604,508.48A16,16,0,0,0,626.48,506l10-12.49A16,16,0,0,0,634,471Z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'far',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M346.7,395.21c-6,7.29-15,4.79-18,2.39l-36.79-31.5L276.3,385.3c-13.89,17.11-39.21,19.7-55.3,6.61l-97.3-88H96V175.8h4.53L39.27,127.91H0V383.6H64a31.89,31.89,0,0,0,31.91-31.69H105l84.59,76.39c30.91,25.11,73.82,25.7,105.61,3.8,12.5,10.81,26,15.9,41.1,15.9,18.2,0,35.29-7.4,48.79-24a56,56,0,0,0,35.2,1.78l-60.1-47ZM48,351.6a16,16,0,1,1,16-16A16,16,0,0,1,48,351.6ZM377.91,178.8,367,167.1a16.07,16.07,0,0,0-22.59-1L334,175.6l38.32,30,4.55-4.14A16,16,0,0,0,377.91,178.8ZM519.2,127.91,471.59,80.3C462.52,71.3,444.78,64,432,64H205.2a56.09,56.09,0,0,0-12.07,1.42l102.94,80.48,25.34-23.2a39.77,39.77,0,0,1,27-10.5l83.68-.2a7.43,7.43,0,0,1,5.5,2.29l61.71,61.61H544v128H498.18L600.11,383.6H640V127.91ZM592,351.6a16,16,0,1,1,16-16A16,16,0,0,1,592,351.6ZM36,3.52A16,16,0,0,0,13.51,6l-10,12.49A16,16,0,0,0,6,41L604,508.48A16,16,0,0,0,626.48,506l10-12.49A16,16,0,0,0,634,471Z\"]\n};\nvar faHanukiah = {\n prefix: 'far',\n iconName: 'hanukiah',\n icon: [640, 512, [], \"f6e6\", \"M456 160c-4.42 0-8 3.58-8 8v128h32V168c0-4.42-3.58-8-8-8h-16zM320 80c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm224 88c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v128h32V168zm72-40c13.25 0 24-11.94 24-26.67C640 86.61 616 48 616 48s-24 38.61-24 53.33c0 14.73 10.75 26.67 24 26.67zm-224 32c-4.42 0-8 3.58-8 8v128h32V168c0-4.42-3.58-8-8-8h-16zm-288 0c-4.42 0-8 3.58-8 8v128h32V168c0-4.42-3.58-8-8-8h-16zm-80-32c13.25 0 24-11.94 24-26.67C48 86.61 24 48 24 48S0 86.61 0 101.33C0 116.06 10.75 128 24 128zm600 32h-16c-8.84 0-16 7.16-16 16v118.22c0 23.07-18.71 41.78-41.78 41.78H344V128c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v208H89.78C66.71 336 48 317.29 48 294.22V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v118.22C0 343.8 40.2 384 89.78 384H296v80H112c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H344v-80h206.22c49.59 0 89.78-40.2 89.78-89.78V176c0-8.84-7.16-16-16-16zm-456 0c-4.42 0-8 3.58-8 8v128h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v128h32V168c0-4.42-3.58-8-8-8h-16zm-120-32c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z\"]\n};\nvar faHardHat = {\n prefix: 'far',\n iconName: 'hard-hat',\n icon: [512, 512, [], \"f807\", \"M480 320c0-101.46-67.5-187-160-214.6V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v25.4C99.49 133 32 218.54 32 320a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zM172.16 165.29l17.78 81.27a12 12 0 0 0 11.72 9.44H212a12 12 0 0 0 12-12V112h64v132a12 12 0 0 0 12 12h10.34a12 12 0 0 0 11.72-9.44l17.78-81.27A176.14 176.14 0 0 1 432 320H80a176.14 176.14 0 0 1 92.16-154.71zM464 400H48v-32h416z\"]\n};\nvar faHashtag = {\n prefix: 'far',\n iconName: 'hashtag',\n icon: [448, 512, [], \"f292\", \"M443.524 190.109l4.286-24c1.313-7.355-4.342-14.109-11.813-14.109h-89.045l18.909-105.89c1.313-7.355-4.342-14.11-11.813-14.11h-24.38a12 12 0 0 0-11.813 9.89L298.192 152h-111.24l18.909-105.89c1.313-7.355-4.342-14.11-11.813-14.11h-24.38a12 12 0 0 0-11.813 9.89L138.192 152H44.86a12 12 0 0 0-11.813 9.891l-4.286 24C27.448 193.246 33.103 200 40.575 200h89.045l-20 112H16.289a12 12 0 0 0-11.813 9.891l-4.286 24C-1.123 353.246 4.532 360 12.003 360h89.045L82.139 465.891C80.826 473.246 86.481 480 93.953 480h24.38a12 12 0 0 0 11.813-9.891L149.808 360h111.24l-18.909 105.891c-1.313 7.355 4.342 14.109 11.813 14.109h24.38a12 12 0 0 0 11.813-9.891L309.808 360h93.331a12 12 0 0 0 11.813-9.891l4.286-24c1.313-7.355-4.342-14.109-11.813-14.109H318.38l20-112h93.331a12 12 0 0 0 11.813-9.891zM269.62 312H158.38l20-112h111.24l-20 112z\"]\n};\nvar faHatChef = {\n prefix: 'far',\n iconName: 'hat-chef',\n icon: [512, 512, [], \"f86b\", \"M416 32a95.17 95.17 0 0 0-57.73 19.74C334.93 20.5 298 0 256 0s-78.93 20.5-102.27 51.74A95.56 95.56 0 0 0 0 128c0 41.74 64 224 64 224v128a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V352s64-182.26 64-224a96 96 0 0 0-96-96zM112 464v-80h288v80zm290.74-128h-29.55L384 201.25a8 8 0 0 0-7.33-8.61l-16-1.28h-.65a8 8 0 0 0-8 7.37l-11 137.3h-69.68V200a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v136h-68.42l-11-137.3a8 8 0 0 0-8-7.37h-.65l-16 1.28a8 8 0 0 0-7.33 8.61L138.81 336h-29.55C80 252.78 48.46 149.34 48 128a47.57 47.57 0 0 1 76.72-38l38.52 29.22 28.94-38.73C207.6 59.84 230.86 48 256 48s48.4 11.84 63.82 32.47l28.94 38.73L387.28 90A47.57 47.57 0 0 1 464 127.92c-.46 21.42-32 124.86-61.26 208.08z\"]\n};\nvar faHatCowboy = {\n prefix: 'far',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M617.78 239.05c-24.06-11.08-43.34 4.24-49.07 11.62-1.64 2.45-17.73 25.85-57.17 48.4C495.86 198.05 462 64 392.32 64c-18.35 0-36.06 7.23-52.66 21.52-11.75 10.09-27.5 10.09-39.25 0C283.81 71.23 266.1 64 247.75 64 178.1 64 144.2 198.09 128.53 299.12c-36.85-21.06-53.26-42.81-56.4-47.35a40.82 40.82 0 0 0-49.53-13c-18.21 8.1-27 27.85-20.42 45.93C5.28 292.87 79.16 480 320 480s314.79-187.13 317.82-195.1c6.55-17.99-2.09-37.61-20.04-45.85zm-370-127c6.53 0 13.72 3.33 21.35 9.89 30 25.83 71.9 25.81 101.87 0 7.63-6.58 14.82-9.91 21.35-9.91 18.19 0 44.6 57.37 63.46 148.85-78.15 35.67-186.45 38.81-271.49 0C203.15 169.37 229.56 112 247.75 112zM320 432c-135.81 0-209.67-67.5-245.16-115.87 41.5 27 117.19 58.27 245.16 58.27s204-31.73 245.31-58.54C529.85 364.36 456 432 320 432z\"]\n};\nvar faHatCowboySide = {\n prefix: 'far',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M483.88 230l-18.54-101a78.2 78.2 0 0 0-93.25-63.26l-161.78 34.33a77.94 77.94 0 0 0-61.47 68L142 228.25C74.23 243.76 19.9 303.83 1.86 387.88c-4.65 21.7-.5 44.39 11.44 62.28C26 469.12 45.4 480 66.58 480h492.7A80.83 80.83 0 0 0 640 399.27c0-40.81-38.51-143.56-156.12-169.27zM66.58 432c-10.86 0-21.7-15.95-17.78-34 16.2-75.38 67.54-126 127.85-126 26.47 0 52.22 9.44 73.87 26.73l91 78.46c24.59 21.19 46.81 39.62 69.37 54.81zm245-144l-30.37-26.17a167.25 167.25 0 0 0-90.55-36.61l5.93-51.9A30.07 30.07 0 0 1 220.27 147L382 112.71a30.13 30.13 0 0 1 36.06 24.67L445.71 288zm250.25 143.48a269.19 269.19 0 0 1-41.77-4.26l-26.52-144.53C572.85 309.9 592 382.34 592 399.27c0 17.14-13.39 30.84-30.17 32.21z\"]\n};\nvar faHatSanta = {\n prefix: 'far',\n iconName: 'hat-santa',\n icon: [640, 512, [], \"f7a7\", \"M627 178.3c-1.5-13.2-7.4-25.9-17.4-35.9-9.7-9.7-22.2-15.8-35.8-17.3-10.5-8.3-23.6-13.1-37.8-13.1s-27.3 4.8-37.8 13.1c-.1 0-.2.1-.4.1C426.3 59 379.8 32 305.4 32h-.2c-72.8.1-138.4 45-167.4 114.4L58.8 336H32c-17.7 0-32 16.1-32 36v72c0 19.9 14.3 36 32 36h448c17.7 0 32-16.1 32-36v-72c0-19.9-14.3-36-32-36h-29.6l-62.8-112.8 51.8 20.3c1.8 3.5 3.2 7.1 5.6 10.2 1.5 13.2 7.4 25.9 17.4 35.9 9.8 9.8 22.4 15.9 36 17.5 10.4 8.2 23.5 12.9 37.5 12.9s27.1-4.7 37.5-12.9c13.6-1.6 26.2-7.7 36-17.5 10-10 15.9-22.6 17.4-35.8 8.3-10.4 13-23.6 13-37.7s-4.6-27.3-12.8-37.8zM464 384v48H48v-48h416zM335.4 227.9L395.5 336H110.8l71.3-171.2C203.5 113.3 251.8 80 305.2 80h.1c54.4 0 89.5 17.1 150.3 72-5.5 8.1-9.6 16.9-10.7 26.4-3.1 3.9-5.1 8.5-7.2 13l-52.5-20.6c-4.8-1.9-9.8-2.8-14.8-2.8-14.2 0-27.5 7.7-34.8 20-7.1 12.3-7.3 27.3-.2 39.9zm246.9.6l-9.5 2.8 4.7 8.7c2.9 5.3 2.1 11.6-2 15.6-2.5 2.5-5.9 3.9-9.4 3.9-1.8 0-3.8-.6-6.2-1.9l-8.7-4.7-2.8 9.5c-1.7 5.8-6.7 9.7-12.5 9.7s-10.8-3.9-12.5-9.7l-2.8-9.5-8.7 4.7c-2.4 1.3-4.4 1.9-6.2 1.9-3.6 0-6.9-1.4-9.4-3.9-4.1-4.1-4.9-10.3-2-15.6l4.7-8.7-9.5-2.8c-5.8-1.7-9.7-6.7-9.7-12.5s3.9-10.8 9.7-12.5l9.5-2.8-4.7-8.7c-2.9-5.3-2.1-11.6 2-15.6 2.4-2.4 5.6-3.7 9-3.7 2.3 0 4.6.6 6.7 1.7l8.7 4.7 2.8-9.5c1.7-5.8 6.7-9.7 12.5-9.7s10.8 3.9 12.5 9.7l2.8 9.5 8.7-4.7c2.1-1.1 4.4-1.7 6.7-1.7 3.4 0 6.6 1.3 9 3.7 4.1 4.1 4.9 10.3 2 15.6l-4.7 8.7 9.5 2.8c5.8 1.7 9.7 6.7 9.7 12.5s-4.1 10.8-9.9 12.5z\"]\n};\nvar faHatWinter = {\n prefix: 'far',\n iconName: 'hat-winter',\n icon: [512, 512, [], \"f7a8\", \"M480 416H32c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-32c0-17.7-14.3-32-32-32zM195.2 105.2c-5.5 10.1-4.4 22.8 4.2 31.4 5.2 5.2 12 7.8 18.9 7.8 4.4 0 8.6-1.5 12.5-3.6 3.3 11 13.1 19.2 25.2 19.2s21.9-8.2 25.2-19.2c4 2.1 8.2 3.6 12.5 3.6 6.8 0 13.6-2.6 18.9-7.8 8.6-8.6 9.7-21.3 4.2-31.4 11-3.3 19.2-13.1 19.2-25.2s-8.2-21.9-19.2-25.2c5.5-10.1 4.4-22.8-4.2-31.4s-21.3-9.7-31.4-4.2C277.9 8.2 268.1 0 256 0s-21.9 8.2-25.2 19.2c-10.1-5.5-22.8-4.4-31.4 4.2s-9.7 21.3-4.2 31.4C184.2 58.1 176 67.9 176 80s8.2 21.9 19.2 25.2zM85.9 335.9l42.1-21.1 64 32 64-32 64 32 64-32 42.1 21.1c5.5 26.4 5.9 45.6 5.9 48.1h48c0-2-2.3-165.5-131.9-244.9-2.8 7.3-7.1 14.2-13 20.1-6.6 6.6-14.6 11.2-23.2 14 46.8 24.6 75.2 61.8 92.6 98.2L384 261.2l-64 32-64-32-64 32-64-32-20.6 10.3c17.4-36.4 45.8-73.6 92.6-98.2-8.6-2.8-16.6-7.4-23.2-14-5.9-5.9-10.1-12.7-12.9-20.1C34.3 218.5 32 382 32 384h48c0-2.5.4-21.7 5.9-48.1z\"]\n};\nvar faHatWitch = {\n prefix: 'far',\n iconName: 'hat-witch',\n icon: [576, 512, [], \"f6e7\", \"M572 433.06l-10.47-11.86c-5.57-6.31-14.94-6.85-21.65-1.76-10.95 8.32-22.75 15.26-34.96 21.38L408.2 223.85c-4.54-10.61-5.05-22.71-1.33-33.87l6.35-19.04A15.982 15.982 0 0 1 428.4 160h39.2c6.9 0 13 4.4 15.18 10.94l14.04 42.12 13.94 41.82 16.13-41.03 30.36-77.24c6.07-18.15 1.63-36.97-11.31-49.91l-69.08-72.38C467.53 4.99 455.47 0 442.64 0c-8.33 0-16.56 2.19-23.8 6.32L252.01 109.58c-26.33 15.03-47.13 38.04-59.67 66.26L71.48 441c-12.35-6.16-24.29-13.15-35.37-21.56-6.71-5.1-16.07-4.55-21.65 1.76L4 433.06c-5.92 6.71-5.25 17.25 1.85 22.71C53.08 492.14 111.35 512 171.63 512h232.75c60.28 0 118.54-19.86 165.77-56.23 7.09-5.47 7.77-16 1.85-22.71zm-364 31.82h-36.37c-18.73 0-37.01-3.02-54.85-7.51L135.63 416H208v48.88zm112-.88h-64v-64h64v64zm10-112h-84c-12.59 0-23.22 6.55-30.14 16h-58.35l78.7-172.67c8.36-18.81 22.23-34.15 41.07-44.94L442.65 48.01l69.32 72.6-2.68 6.81A63.876 63.876 0 0 0 467.6 112h-39.2a63.913 63.913 0 0 0-60.71 43.76l-6.35 19.04c-7.44 22.33-6.44 46.54 3.02 68.6L419.91 368h-59.77c-6.92-9.45-17.55-16-30.14-16zm74.37 112.88H368V416h73.3l18.39 41.25c-17.99 4.57-36.42 7.63-55.32 7.63z\"]\n};\nvar faHatWizard = {\n prefix: 'far',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M496 464h-35.5l-81.32-200.17c-7.21-17.73-7.99-37.64-2.21-55.94L442.67 0 223.83 131.92c-27.61 16.64-49.46 42.15-62.37 72.8L52.22 464H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-256 0l10.67-21.33L304 416l-53.33-26.67L224 336l-26.67 53.33L144 416l53.33 26.67L208 464H104.31l101.38-240.64c.99-2.36 2.34-4.5 3.49-6.77L224 224l16 32 16-32 32-16-32-16-8.93-17.86c.53-.34 1-.79 1.54-1.11l110-66.31-27.4 86.71c-9.15 28.96-7.91 60.38 3.51 88.47l6.86 16.89L320 288l-16-32-16 32-32 16 32 16 16 32 16-32 25.09-12.55L408.69 464H240z\"]\n};\nvar faHdd = {\n prefix: 'far',\n iconName: 'hdd',\n icon: [576, 512, [], \"f0a0\", \"M567.403 235.642L462.323 84.589A48 48 0 0 0 422.919 64H153.081a48 48 0 0 0-39.404 20.589L8.597 235.642A48.001 48.001 0 0 0 0 263.054V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V263.054c0-9.801-3-19.366-8.597-27.412zM153.081 112h269.838l77.913 112H75.168l77.913-112zM528 400H48V272h480v128zm-32-64c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32zm-96 0c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32z\"]\n};\nvar faHeadSide = {\n prefix: 'far',\n iconName: 'head-side',\n icon: [512, 512, [], \"f6e9\", \"M352 192c0-17.67-14.33-32-32-32s-32 14.33-32 32 14.33 32 32 32 32-14.33 32-32zm157.21 83c-20.94-47.12-48.44-151.73-73.08-186.75C397.68 33.6 334.56 0 266.09 0h-66.08C95.47 0 4.12 80.08.14 184.55-2.13 244.33 23.1 298.14 64 334.82V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V313.39l-15.95-14.31c-46.94-42.1-63.11-111.72-32.19-172.5C89.2 76.78 143.11 48 198.99 48h67.1c51.99 0 100.88 25.37 130.78 67.87 11.2 15.91 28.06 65.67 40.38 102 6.55 19.32 12.86 37.92 18.97 54.13H400v112c0 8.84-7.16 16-16 16h-80v96c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-48h32c35.35 0 64-28.65 64-64v-64h31.96c23.16 0 38.65-23.84 29.25-45z\"]\n};\nvar faHeadSideBrain = {\n prefix: 'far',\n iconName: 'head-side-brain',\n icon: [512, 512, [], \"f808\", \"M509.21 275c-20.94-47.12-48.44-151.73-73.08-186.75A207.94 207.94 0 0 0 266.09 0H200C95.47 0 4.12 80.08.14 184.55A191.3 191.3 0 0 0 64 334.82V496a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V313.39l-16-14.31C49.11 257 32.94 187.36 63.86 126.58 89.2 76.78 143.11 48 199 48h67.1a160.06 160.06 0 0 1 130.78 67.87c11.2 15.91 28.06 65.67 40.38 102 6.55 19.32 12.86 37.92 19 54.13H400v112a16 16 0 0 1-16 16h-80v96a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-48h32a64 64 0 0 0 64-64v-64h32a32 32 0 0 0 29.21-45zM313.6 192c21.21 0 38.4-16.48 38.4-36.8s-17.19-36.8-38.4-36.8H311a38.09 38.09 0 0 0-35.8-25.6c-7.1 0-13.38 2.45-19.08 5.81C249.35 87.68 237.8 80 224 80s-25.34 7.68-32.11 18.61c-5.71-3.36-12-5.81-19.09-5.81a38.4 38.4 0 0 0-38.4 38.4A38.4 38.4 0 0 0 96 169.6c0 16.84 11 30.74 26.11 35.92-.06.86-.51 1.6-.51 2.48a38.4 38.4 0 0 0 38.4 38.4 37.91 37.91 0 0 0 12.8-2.58V288H224v-44.18a37.91 37.91 0 0 0 12.8 2.58 38.4 38.4 0 0 0 38.4-38.4 37.84 37.84 0 0 0-3.73-16z\"]\n};\nvar faHeadSideCough = {\n prefix: 'far',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M320,224a32,32,0,1,0-32-32A32,32,0,0,0,320,224Zm189.2,51c-20.93-47.13-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H198.17C93.66,0,3.67,80.86.11,185.3A191.31,191.31,0,0,0,64,334.81V496a16,16,0,0,0,16,16H96a16,16,0,0,0,16-16V313.39l-16-14.31c-46.6-41.79-62.88-110.71-32.86-171.17C88.2,77.53,142.07,48,198.32,48h67.77a160.1,160.1,0,0,1,130.79,67.87c11.18,15.91,28.06,65.68,40.37,102,6.55,19.32,12.86,37.93,19,54.13H400v48H347.17c-30.32,0-57.5,22.71-59.09,53A56,56,0,0,0,344,432h56v16a16,16,0,0,1-16,16H304v48h80a64,64,0,0,0,64-64V408a16,16,0,0,0-16-16H344a16,16,0,0,1,0-32h88a16,16,0,0,0,16-16V320H480A32,32,0,0,0,509.2,275ZM616,360a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm0,104a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-160a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,16a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm0,96a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360Z\"]\n};\nvar faHeadSideCoughSlash = {\n prefix: 'far',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M448,325.61V320H480a32,32,0,0,0,29.25-45c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H198.17A201.1,201.1,0,0,0,80.5,38.31L36,3.52A16,16,0,0,0,13.51,6l-10,12.49A16,16,0,0,0,6,41L531.61,451.9l13.77,10.76-10.52-8.22,63.65,49.76,1.41,1.1,1.52,1.18,1,.77h0l1.58,1.24a15.58,15.58,0,0,0,3.14,1.62,14,14,0,0,1-2.07-1.07h0a14.19,14.19,0,0,0,2.29,1.18A15.73,15.73,0,0,0,626.48,506l10-12.48A16,16,0,0,0,634,471Zm-48-37.52-82.66-64.63c.92.08,1.72.54,2.66.54a32,32,0,1,0-32-32,31.13,31.13,0,0,0,2.05,10.13L120,69.2A156.89,156.89,0,0,1,198.32,48h67.77a160.11,160.11,0,0,1,130.79,67.88c11.18,15.9,28.06,65.67,40.37,102,6.55,19.31,12.86,37.92,19,54.12H400ZM552,368a24,24,0,1,0-24-24A24,24,0,0,0,552,368Zm64-64a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM344,392a16,16,0,0,1,0-32h18.11l-42.46-33.2c-17.57,8.86-30.5,25.69-31.57,46.19A56,56,0,0,0,344,432h56v16a16,16,0,0,1-16,16H304v48h80a64,64,0,0,0,64-64V427.15L403,392ZM63.19,127.91c.19-.39.46-.71.65-1.09L26,97.2A184.69,184.69,0,0,0,.11,185.3,191.29,191.29,0,0,0,64,334.81V496a16,16,0,0,0,16,16H96a16,16,0,0,0,16-16V313.39l-16-14.31C49.45,257.29,33.17,188.37,63.19,127.91ZM616,360a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z\"]\n};\nvar faHeadSideHeadphones = {\n prefix: 'far',\n iconName: 'head-side-headphones',\n icon: [512, 512, [], \"f8c2\", \"M509.21 275c-20.94-47.12-48.44-151.73-73.09-186.75A207.88 207.88 0 0 0 266.09 0H200C95.48 0 4.14 80.08.14 184.55A191.34 191.34 0 0 0 64 334.81V496a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V313.39l-15.93-14.31C49.14 257 33 187.36 63.89 126.58 88.13 78.88 138.68 50.76 192 48.45v52.75c-46.15 13.8-80 56.14-80 106.8a112 112 0 1 0 224 0c0-50.66-33.85-93-80-106.8V48h10.09a160.07 160.07 0 0 1 130.78 67.88c11.19 15.9 28.06 65.67 40.37 102 6.56 19.31 12.88 37.92 19 54.12H400v112a16 16 0 0 1-16 16h-80v96a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-48h32a64 64 0 0 0 64-64v-64h32a32 32 0 0 0 29.21-45zM288 208a64 64 0 1 1-64-64 64.07 64.07 0 0 1 64 64zm-96 0a32 32 0 1 0 32-32 32 32 0 0 0-32 32z\"]\n};\nvar faHeadSideMask = {\n prefix: 'far',\n iconName: 'head-side-mask',\n icon: [512, 512, [], \"e063\", \"M320.06,160a32,32,0,1,0,32,32A32,32,0,0,0,320.06,160ZM509.29,275c-20.94-47.12-48.44-151.73-73.09-186.75A207.93,207.93,0,0,0,266.14,0H198.2C93.68,0,3.67,80.86.11,185.31A191.26,191.26,0,0,0,64,334.81V496a16,16,0,0,0,16,16H96a16,16,0,0,0,16-16V313.39l-16-14.31a144.19,144.19,0,0,1-47.64-98.94L224,319.29V480a32,32,0,0,0,32,32h115a88.21,88.21,0,0,0,82.81-58.2l54.6-151.63A31.4,31.4,0,0,0,509.29,275Zm-69.76,77H336.06a16,16,0,1,0,0,32H428l-11.52,32H336.06a16,16,0,1,0,0,32H403a40.09,40.09,0,0,1-31.92,16h-99V320h179Zm-199.7-80L55.62,147a146.1,146.1,0,0,1,7.58-19.12C88.22,77.53,142.1,48,198.36,48h67.78a160.12,160.12,0,0,1,130.8,67.88c11.19,15.9,28.07,65.67,40.39,102,6.54,19.31,12.86,37.92,19,54.12Z\"]\n};\nvar faHeadSideMedical = {\n prefix: 'far',\n iconName: 'head-side-medical',\n icon: [512, 512, [], \"f809\", \"M336 216v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8zm173.21 59c-20.94-47.12-48.44-151.73-73.08-186.75A207.94 207.94 0 0 0 266.09 0H200C95.47 0 4.12 80.08.14 184.55A191.3 191.3 0 0 0 64 334.82V496a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V313.39l-16-14.31C49.11 257 32.94 187.36 63.86 126.58 89.2 76.78 143.11 48 199 48h67.1a160.06 160.06 0 0 1 130.78 67.87c11.2 15.91 28.06 65.67 40.38 102 6.55 19.32 12.86 37.92 19 54.13H400v112a16 16 0 0 1-16 16h-80v96a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-48h32a64 64 0 0 0 64-64v-64h32a32 32 0 0 0 29.21-45z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'far',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M126.2,238.2H137c25.3,0,38,30.6,20.1,48.6l-7.6,7.6c-5.6,5.5-5.6,14.5-0.1,20.1c5.5,5.6,14.6,5.5,20.2,0l7.6-7.6 c17.9-17.9,48.6-5.2,48.6,20.1v10.8c0,7.9,6.4,14.2,14.2,14.2s14.2-6.4,14.2-14.2V327c0-25.3,30.6-38,48.6-20.1l7.6,7.6 c2.7,2.7,6.3,4.2,10.1,4.2c7.9,0,14.2-6.4,14.2-14.3c0-3.8-1.5-7.4-4.2-10l-7.6-7.6c-17.9-17.9-5.2-48.6,20.1-48.6h10.8 c7.9,0,14.2-6.4,14.2-14.2s-6.4-14.2-14.2-14.2H343c-25.3,0-38-30.6-20.1-48.6l7.6-7.6c5.6-5.6,5.6-14.6,0-20.1s-14.6-5.6-20.1,0 l-7.6,7.6c-17.9,17.9-48.6,5.2-48.6-20.1v-10.8c0-7.9-6.4-14.2-14.2-14.2s-14.2,6.4-14.2,14.2V121c0,25.3-30.6,38-48.6,20.1 l-7.6-7.6c-5.6-5.6-14.6-5.6-20.1,0c-5.6,5.6-5.6,14.6,0,20.1l7.6,7.6c17.9,17.9,5.2,48.6-20.1,48.6h-10.8 c-7.9,0-14.2,6.4-14.2,14.2S118.4,238.2,126.2,238.2z M208,224c-8.8,0-16-7.2-16-16s7.2-16,16-16s16,7.2,16,16S216.8,224,208,224z M272,256c-8.8,0-16-7.2-16-16s7.2-16,16-16s16,7.2,16,16S280.8,256,272,256z M509.2,275c-20.9-47.1-48.4-151.7-73.1-186.8 C397.2,32.9,333.8,0,266.1,0H200C95.5,0,4.1,80.1,0.1,184.6C-2.1,241.7,21.3,296.8,64,334.8V496c0,8.8,7.2,16,16,16h16 c8.8,0,16-7.2,16-16V313.4l-16-14.3C49.1,257,32.9,187.4,63.9,126.6C89.2,76.8,143.1,48,199,48h67.1c52,0,100.8,25.3,130.8,67.9 c11.2,15.9,28.1,65.7,40.4,102c6.5,19.3,12.9,37.9,19,54.1H400v112c0,8.8-7.2,16-16,16h-80v96c0,8.8,7.2,16,16,16h16 c8.8,0,16-7.2,16-16v-48h32c35.3,0,64-28.7,64-64v-64h32c17.7,0,32-14.4,32-32C512,283.5,511,279.1,509.2,275z\"]\n};\nvar faHeadVr = {\n prefix: 'far',\n iconName: 'head-vr',\n icon: [512, 512, [], \"f6ea\", \"M398.34 48C361.82 17.72 315.46 0 266.09 0h-66.08C134.87 0 75.11 31.29 38.16 80H32C14.33 80 0 94.33 0 112v64c0 17.67 14.33 32 32 32h184c.27 0 .42-.26.68-.28C234.26 227.38 259.55 240 288 240h192c17.67 0 32-14.33 32-32V80c0-17.67-14.33-32-32-32h-81.66zM193.61 160H48v-32h145.61c-.88 5.23-1.61 10.52-1.61 16s.73 10.77 1.61 16zM216 80H104.07c26.77-20.36 60.23-32 94.92-32h67.1c4.66 0 9.26.4 13.86.81-25.14 2.12-47.39 13.71-63.27 31.47-.26-.02-.41-.28-.68-.28zm168 112h-96c-26.47 0-48-21.53-48-48s21.53-48 48-48h96v96zm80 0h-32V96h32v96zM56.5 240H6.39c9.64 37.12 29.89 69.96 57.61 94.82V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V313.39l-15.95-14.31C77.91 282.82 64.51 262.39 56.5 240zm451.49 32H400v112c0 8.84-7.16 16-16 16h-80v96c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-48h32c35.35 0 64-28.65 64-64v-64h31.96c23.16 0 38.65-23.84 29.24-45-.39-.88-.82-2.08-1.21-3z\"]\n};\nvar faHeading = {\n prefix: 'far',\n iconName: 'heading',\n icon: [512, 512, [], \"f1dc\", \"M432 80v352h32a16 16 0 0 1 16 16v16a16 16 0 0 1-16 16H336a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h32V280H144v152h32a16 16 0 0 1 16 16v16a16 16 0 0 1-16 16H48a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h32V80H48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h128a16 16 0 0 1 16 16v16a16 16 0 0 1-16 16h-32v152h224V80h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h128a16 16 0 0 1 16 16v16a16 16 0 0 1-16 16z\"]\n};\nvar faHeadphones = {\n prefix: 'far',\n iconName: 'headphones',\n icon: [512, 512, [], \"f025\", \"M256 32C114.52 32 0 146.497 0 288v49.714a24.001 24.001 0 0 0 12.319 20.966l19.702 10.977C32.908 430.748 82.698 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-40.744 0-76.402 21.758-96 54.287V288c0-114.691 93.309-208 208-208s208 93.309 208 208v22.287C444.402 277.758 408.744 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c61.302 0 111.092-49.252 111.979-110.344l19.702-10.977A24.001 24.001 0 0 0 512 337.713V288c0-141.48-114.497-256-256-256zM144 304v128c-35.29 0-64-28.71-64-64s28.71-64 64-64zm224 128V304c35.29 0 64 28.71 64 64s-28.71 64-64 64z\"]\n};\nvar faHeadphonesAlt = {\n prefix: 'far',\n iconName: 'headphones-alt',\n icon: [512, 512, [], \"f58f\", \"M192 288h-48c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h48c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm-16 143.91h-32c-8.82 0-16-7.19-16-16.03v-63.76c0-8.84 7.18-16.03 16-16.03h32v95.82zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32zm112 256h-48c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h48c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zm16 127.88c0 8.84-7.18 16.03-16 16.03h-32v-95.82h32c8.82 0 16 7.19 16 16.03v63.76z\"]\n};\nvar faHeadset = {\n prefix: 'far',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M224 336V192.36c0-17.67-14.33-32-32-32h-48c-35.35 0-64 28.65-64 64V304c0 35.35 28.65 64 64 64h48c17.67 0 32-14.33 32-32zm-48-16h-32c-8.82 0-16-7.18-16-16v-79.64c0-8.82 7.18-16 16-16h32V320zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0zm112 368c35.35 0 64-28.65 64-64v-79.64c0-35.35-28.65-64-64-64h-48c-17.67 0-32 14.33-32 32V336c0 17.67 14.33 32 32 32h48zm-32-159.64h32c8.82 0 16 7.18 16 16V304c0 8.82-7.18 16-16 16h-32V208.36z\"]\n};\nvar faHeart = {\n prefix: 'far',\n iconName: 'heart',\n icon: [512, 512, [], \"f004\", \"M458.4 64.3C400.6 15.7 311.3 23 256 79.3 200.7 23 111.4 15.6 53.6 64.3-21.6 127.6-10.6 230.8 43 285.5l175.4 178.7c10 10.2 23.4 15.9 37.6 15.9 14.3 0 27.6-5.6 37.6-15.8L469 285.6c53.5-54.7 64.7-157.9-10.6-221.3zm-23.6 187.5L259.4 430.5c-2.4 2.4-4.4 2.4-6.8 0L77.2 251.8c-36.5-37.2-43.9-107.6 7.3-150.7 38.9-32.7 98.9-27.8 136.5 10.5l35 35.7 35-35.7c37.8-38.5 97.8-43.2 136.5-10.6 51.1 43.1 43.5 113.9 7.3 150.8z\"]\n};\nvar faHeartBroken = {\n prefix: 'far',\n iconName: 'heart-broken',\n icon: [512, 512, [], \"f7a9\", \"M473.7 73.9l-2.4-2.5C445.5 45.1 411.6 32 377.6 32s-67.9 13.1-93.7 39.4L256 100l-27.9-28.5C202.4 45.2 168.4 32 134.4 32S66.5 45.2 40.7 71.5l-2.4 2.4C-10.4 123.7-12.5 203 31 256l212.1 218.5c3.5 3.6 8.2 5.5 12.8 5.5 4.7 0 9.3-1.8 12.8-5.5L481 256c43.5-53 41.4-132.3-7.3-182.1zM445 224.2L256 418.9 67 224.2c-27.2-34.6-24.9-85.5 5.2-116.3l2.8-2.8C90.8 88.9 111.9 80 134.4 80s43.6 8.9 59.4 25.1l26 26.6L240 192l-75.6 35.2c-4.8 2.4-5.9 8.7-2.3 12.6l86.8 88.6c5.9 6 15.8.1 13.4-7.9L240 248l76.6-52.4c3-2.1 4.2-6 2.9-9.4l-23.6-58.3 22.3-22.8C334 88.9 355.1 80 377.6 80s43.6 8.9 59 24.7l2.7 2.8c30.6 31.2 32.9 82.1 5.7 116.7z\"]\n};\nvar faHeartCircle = {\n prefix: 'far',\n iconName: 'heart-circle',\n icon: [496, 512, [], \"f4c7\", \"M361.8 162.8c-38.3-32.8-89-17.8-113.8 7.8-24.8-25.6-75.5-40.6-113.8-7.8-42.4 36.2-36.1 95.2-6 126.3l98.7 102c13 13.4 32.5 10.2 42.4 0l98.7-102c29.9-31.1 36.2-90.1-6.2-126.3zm-27.7 92.7l-86.1 89-86.1-89.1c-13-13.5-16.2-39.7 2.7-55.9 14.1-12 36.1-9 49.3 4.7l34.1 35.4 34.1-35.4c13.2-13.7 35.3-16.7 49.3-4.7 18.9 16.2 15.8 42.5 2.7 56zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200z\"]\n};\nvar faHeartRate = {\n prefix: 'far',\n iconName: 'heart-rate',\n icon: [640, 512, [], \"f5f8\", \"M624 232H480c-9.3 0-17.76 5.37-21.72 13.79l-35.78 76.04-79.28-303.89C340.47 7.36 330.91 0 320 0c-.19 0-.41 0-.62.02-11.12.28-20.62 8.2-22.88 19.12l-75.84 366.52-37.53-136.03c-2.87-10.41-12.35-17.62-23.15-17.62H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h125.72l59.16 214.38A23.974 23.974 0 0 0 224 512c.25 0 .53 0 .78-.02 11.09-.36 20.47-8.27 22.72-19.12l75.19-363.44 70.09 268.64c2.53 9.77 10.94 16.91 21 17.83 10.5 1.14 19.62-4.53 23.94-13.67L495.22 280H624c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faHeartSquare = {\n prefix: 'far',\n iconName: 'heart-square',\n icon: [448, 512, [], \"f4c8\", \"M325.2 160.4c-13.9-11.7-29.6-16.4-44.9-16.4-22.1 0-43.3 10-56.3 23.3-13-13.3-34.2-23.3-56.3-23.3-15.3 0-31 4.7-44.9 16.4-37.6 31.7-32.1 83.3-5.3 110.5l87.7 89.3c5.5 5.6 12.1 7.8 18.5 7.8h.6c6.4 0 13-2.2 18.5-7.8l87.7-89.3c26.7-27.2 32.3-78.8-5.3-110.5zm-28.9 76.9L224 310.9l-72.3-73.6c-4-4.1-16.4-24.7 2-40.2 13.6-11.4 31.3-1.1 36.1 3.7l34.2 34.8 34.2-34.8c4.7-4.8 22.4-15.2 36.1-3.7 18.3 15.5 5.9 36.2 2 40.2zM392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm8 392c0 4.4-3.6 8-8 8H56c-4.4 0-8-3.6-8-8V88c0-4.4 3.6-8 8-8h336c4.4 0 8 3.6 8 8v336z\"]\n};\nvar faHeartbeat = {\n prefix: 'far',\n iconName: 'heartbeat',\n icon: [512, 512, [], \"f21e\", \"M266.4 427.7c-5.8 5.7-15.1 5.7-20.9 0L136.7 320H68.5l143.3 141.8c24.5 24.2 63.9 24.3 88.4 0L443.5 320h-68.2L266.4 427.7zM354.7 32c-36.5 0-71 12.3-98.7 34.9C228.3 44.3 193.8 32 157.3 32 86.2 32 0 88.9 0 188c0 37.3 13.7 72.1 37.8 100h116.8l29.9-71.7 56.9 126.3c5.5 12.3 22.9 12.7 28.9.6l49.7-99.4 22.1 44.2h132c24.1-27.9 37.8-62.7 37.8-100 .1-99.1-86.1-156-157.2-156zm83.9 224h-76.7l-27.6-55.2c-5.9-11.8-22.7-11.8-28.6 0l-48.9 97.9-58.2-129.3c-5.7-12.8-24-12.5-29.4.4L133.3 256H73.4c-58.8-69.5-7-176 83.9-176 31 0 51 6.2 98.7 53.4C307.1 82.9 325.1 80 354.7 80c91.2 0 142.7 106.5 83.9 176z\"]\n};\nvar faHeat = {\n prefix: 'far',\n iconName: 'heat',\n icon: [448, 512, [], \"e00c\", \"M48,156.12V112A16,16,0,0,0,32,96H16A16,16,0,0,0,0,112v44.12A186.57,186.57,0,0,0,54.67,288.6,140.87,140.87,0,0,1,96,387.88V464a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V387.88A186.61,186.61,0,0,0,89.33,255.39,140.83,140.83,0,0,1,48,156.12Zm152,0V48a16,16,0,0,0-16-16H168a16,16,0,0,0-16,16V156.12A186.57,186.57,0,0,0,206.67,288.6,140.87,140.87,0,0,1,248,387.88V464a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V387.88a186.61,186.61,0,0,0-54.67-132.49A140.83,140.83,0,0,1,200,156.12Zm193.33,99.27A140.83,140.83,0,0,1,352,156.12V112a16,16,0,0,0-16-16H320a16,16,0,0,0-16,16v44.12A186.57,186.57,0,0,0,358.67,288.6,140.87,140.87,0,0,1,400,387.88V464a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V387.88A186.61,186.61,0,0,0,393.33,255.39Z\"]\n};\nvar faHelicopter = {\n prefix: 'far',\n iconName: 'helicopter',\n icon: [640, 512, [], \"f533\", \"M316.5 416.02h235.22c15.69 0 30.81-6.63 41.51-18.16 10.55-11.41 15.9-26.75 14.68-42.13-9.94-122.54-110.45-219.35-231.95-226.98V48h184.03c8.84 0 16-7.16 16-16V16c0-8.84-7.17-16-16-16H143.93c-8.84 0-16 7.16-16 16v16c0 8.84 7.17 16 16 16h184.03v80H148.19l-36.07-48.02C104.58 69.97 92.58 64 80.06 64H39.99C27.56 64 16.04 69.61 8.4 79.39c-7.64 9.78-10.3 22.28-7.01 35.2L36.2 233.95l164.93 65.85 70.47 93.82c10.55 14.03 27.33 22.4 44.9 22.4zm91.47-234.03c81.63 20.18 144.96 90.87 151.98 177.57.22 2.66-1 4.58-2.07 5.72-.94 1.02-3 2.73-6.17 2.73H407.97V181.99zM75.84 198.07L50.7 112h25.36l48.09 64h235.82v192.01H316.5c-2.51 0-4.92-1.19-6.42-3.2L231.5 260.23 75.84 198.07zm561.88 274.49l-22.16-22.14c-3.09-3.09-8.06-3.09-11.22-.07-7.39 7.06-16.14 13.65-30.41 13.65H239.95c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h333.98c13.41 0 31.79 0 63.16-27.47a8.564 8.564 0 0 0 2.91-6.09c.06-2.24-.75-4.33-2.28-5.88z\"]\n};\nvar faHelmetBattle = {\n prefix: 'far',\n iconName: 'helmet-battle',\n icon: [576, 512, [], \"f6eb\", \"M32.01 256C49.68 256 64 243.44 64 227.94V0L.97 221.13C-4.08 238.84 11.2 256 32.01 256zm543.02-34.87L512 0v227.94c0 15.5 14.32 28.06 31.99 28.06 20.81 0 36.09-17.16 31.04-34.87zM480 210.82C480 90.35 288 0 288 0S96 90.35 96 210.82c0 82.76-22.86 145.9-31.13 180.71-3.43 14.43 3.59 29.37 16.32 35.24l161.54 78.76a64.01 64.01 0 0 0 28.05 6.47h34.46c9.72 0 19.31-2.21 28.05-6.47l161.54-78.76c12.73-5.87 19.75-20.81 16.32-35.24-8.29-34.81-31.15-97.95-31.15-180.71zM312 462.5V288l88-32v-32H176v32l88 32v174.5l-149.12-72.69c.77-2.82 1.58-5.77 2.43-8.86 10.63-38.59 26.69-96.9 26.69-170.13 0-63.44 91.88-127.71 144-156.76 52.12 29.05 144 93.32 144 156.76 0 73.23 16.06 131.54 26.69 170.12.85 3.08 1.66 6.04 2.43 8.85L312 462.5z\"]\n};\nvar faHexagon = {\n prefix: 'far',\n iconName: 'hexagon',\n icon: [576, 512, [], \"f312\", \"M441.5 39.8C432.9 25.1 417.1 16 400 16H176c-17.1 0-32.9 9.1-41.5 23.8l-112 192c-8.7 14.9-8.7 33.4 0 48.4l112 192c8.6 14.7 24.4 23.8 41.5 23.8h224c17.1 0 32.9-9.1 41.5-23.8l112-192c8.7-14.9 8.7-33.4 0-48.4l-112-192zM400 448H176L64 256 176 64h224l112 192-112 192z\"]\n};\nvar faHighlighter = {\n prefix: 'far',\n iconName: 'highlighter',\n icon: [544, 512, [], \"f591\", \"M0 479.98L99.88 512l35.56-35.58-67.01-67.04L0 479.98zM527.93 79.27l-63.17-63.2C454.09 5.39 440.04 0 425.97 0c-12.93 0-25.88 4.55-36.28 13.73L124.8 239.96a36.598 36.598 0 0 0-10.79 38.1l13.05 42.83-33.95 33.97c-9.37 9.37-9.37 24.56 0 33.93l62.26 62.29c9.37 9.38 24.58 9.38 33.95 0l33.86-33.88 42.72 13.08a36.54 36.54 0 0 0 10.7 1.61 36.57 36.57 0 0 0 27.43-12.38l226.25-265.13c19.16-21.72 18.14-54.61-2.35-75.11zM272.78 382.18l-35.55-10.89-27.59-8.45-20.4 20.41-16.89 16.9-28.31-28.32 16.97-16.98 20.37-20.38-8.4-27.57-10.86-35.66 38.23-32.65 105.18 105.23-32.75 38.36zm220.99-258.97L326.36 319.39l-101.6-101.65 196.68-168c1.29-1.14 2.82-1.72 4.53-1.72 1.3 0 3.2.35 4.86 2.01l63.17 63.2c2.54 2.56 2.67 6.68-.23 9.98z\"]\n};\nvar faHiking = {\n prefix: 'far',\n iconName: 'hiking',\n icon: [384, 512, [], \"f6ec\", \"M114.13 252.08L142.88 141c5.59-21.31-9.34-38.69-25.94-42.69-42.84-10.25-87.22 15.28-98.19 57.28L1.13 224.05c-4.9 18.7 6.53 38.01 25.94 42.69l44.41 10.64c20.2 4.76 38.24-8.23 42.65-25.3zm-43.31-24.22l-19.87-4.77 14.28-55.47c3.28-12.59 14.31-21.45 27.22-23.28l-21.63 83.52zM368 160h-16c-8.84 0-16 7.16-16 16v24h-37.12l-50.09-57.16c-9.59-9.58-22.34-14.84-35.87-14.84-23.37 0-43.62 15.83-49.25 38.47l-22.53 90.08c-4.78 18.97.84 39.34 14.72 53.23l73.81 73.81c1.5 1.5 2.34 3.55 2.34 5.66V488c0 13.25 10.75 24 24 24s24-10.75 24-24v-98.75c0-14.95-5.81-29.02-16.41-39.59l-50.37-50.38 24.55-96.21 32.16 36.75c4.56 5.2 11.16 8.19 18.06 8.19h48v248c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c0-8.84-7.16-16-16-16zM121.87 317.6L80.73 482.17c-3.22 12.86 4.59 25.89 17.47 29.11 1.94.48 3.91.72 5.84.72 10.75 0 20.53-7.28 23.25-18.17l33.47-133.88-27.55-27.55c-4.46-4.46-8-9.59-11.34-14.8zM239.99 96c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faHippo = {\n prefix: 'far',\n iconName: 'hippo',\n icon: [640, 512, [], \"f6ed\", \"M559.21 91.45c-18.74 1.41-34.99 8.97-49.36 15.86-18.82-25.75-48.45-42.44-80.98-43.51-6.67-18.5-24.2-31.8-44.98-31.8H351.9c-26.5 0-47.99 21.49-47.99 48v4.23C275.19 71.45 242.66 64 207.94 64 99.48 64 0 128 0 224v224c0 17.67 14.32 32 31.99 32h79.98c17.67 0 31.99-14.33 31.99-32v-40.58c55.92 15.3 103.01 6.82 127.96 0V448c0 17.67 14.32 32 31.99 32h79.98c17.67 0 31.99-14.33 31.99-32V303.75l95.97-.07V336c0 8.84 7.16 16 16 16h31.99c8.83 0 16-7.16 16-16v-32.37l12.78-.01c28.34 0 51.39-23.08 51.39-51.44v-82.55c-.01-43.7-35.95-81.28-80.8-78.18zM367.89 432H319.9v-87.47c-122.94 33.63-114.46 29.95-223.93 0V432H47.99V235.51C56.43 156.2 132.07 112 207.94 112c35.88 0 69.1 10.02 95.97 26.58l.19 58.89c0 43.64 26.27 80.96 63.79 97.35V432zm224.12-176.38l-181.63.13h-.03c-32.18 0-58.26-26.09-58.26-58.28L351.9 88c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v31.52c22.43-6.57 33.96-8.29 44.57-7.53 21.76 1.55 40.8 15.33 49.31 35.42l8.97 21.17c54.94-20.54 59.67-28.03 76.04-29.25 18.26-1.58 29.24 16.98 29.24 30.31v85.98zM431.87 160c-8.83 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16z\"]\n};\nvar faHistory = {\n prefix: 'far',\n iconName: 'history',\n icon: [512, 512, [], \"f1da\", \"M504 255.532c.252 136.64-111.182 248.372-247.822 248.468-64.014.045-122.373-24.163-166.394-63.942-5.097-4.606-5.3-12.543-.443-17.4l16.96-16.96c4.529-4.529 11.776-4.659 16.555-.395C158.208 436.843 204.848 456 256 456c110.549 0 200-89.468 200-200 0-110.549-89.468-200-200-200-55.52 0-105.708 22.574-141.923 59.043l49.091 48.413c7.641 7.535 2.305 20.544-8.426 20.544H26.412c-6.627 0-12-5.373-12-12V45.443c0-10.651 12.843-16.023 20.426-8.544l45.097 44.474C124.866 36.067 187.15 8 256 8c136.811 0 247.747 110.781 248 247.532zm-167.058 90.173l14.116-19.409c3.898-5.36 2.713-12.865-2.647-16.763L280 259.778V116c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v168.222l88.179 64.13c5.36 3.897 12.865 2.712 16.763-2.647z\"]\n};\nvar faHockeyMask = {\n prefix: 'far',\n iconName: 'hockey-mask',\n icon: [448, 512, [], \"f6ee\", \"M192 416c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16zm0-64c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16zm80-240c8.84 0 16-7.16 16-16s-7.16-16-16-16-16 7.16-16 16 7.17 16 16 16zm-96 0c8.84 0 16-7.16 16-16s-7.16-16-16-16-16 7.16-16 16 7.16 16 16 16zm16 176c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16zm64 128c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16zm0-128c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16zm0 64c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16zm-32-224c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16zm152.61-73.54C335.13 18.15 279.56 0 224 0 168.43 0 112.87 18.15 71.39 54.46 7.36 110.5-31.01 224.44 32.63 416 64.53 512 224 512 224 512s159.47 0 191.37-96c63.64-191.56 25.27-305.5-38.76-361.54zm-6.8 346.41C352.86 451.91 256.36 463.84 224 464c-26.37 0-128.4-10.71-145.81-63.13-47.21-142.08-38.16-255.17 24.82-310.3C133.92 63.52 178.02 48 224 48c45.98 0 90.08 15.52 120.99 42.57 62.98 55.13 72.03 168.22 24.82 310.3zM200 208c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32 0 35.35 28.65 64 64 64s64-28.65 64-64zm80-32c-17.67 0-32 14.33-32 32 0 35.35 28.65 64 64 64s64-28.65 64-64c0-17.67-14.33-32-32-32h-64z\"]\n};\nvar faHockeyPuck = {\n prefix: 'far',\n iconName: 'hockey-puck',\n icon: [544, 512, [], \"f453\", \"M272 48C136.6 48 0 87.6 0 176v144c0 94.5 136.8 144 272 144s272-49.5 272-144V176c0-88.4-136.6-128-272-128zm224 272c0 53-100.3 96-224 96S48 373 48 320v-66.3c101.2 67.2 346.8 67.2 448 0V320zm-224-64c-123.7 0-224-35.8-224-80s100.3-80 224-80 224 35.8 224 80-100.3 80-224 80z\"]\n};\nvar faHockeySticks = {\n prefix: 'far',\n iconName: 'hockey-sticks',\n icon: [640, 512, [], \"f454\", \"M600 304H407.3L520 86.5c9.9-19.7 1.8-43.7-17.9-53.6L444.8 4.2c-19.7-9.9-43.7-1.9-53.6 17.7L320 158.2 248.8 21.9c-9.9-19.6-33.9-27.6-53.6-17.7l-57.3 28.6c-19.7 9.9-27.8 34-17.9 53.6L232.7 304H40c-22.1 0-40 18-40 40v128c0 22.1 17.9 40 40 40h186.5c37.2 0 71.2-17 93.6-45.1 22.4 28.1 56.3 45.1 93.5 45.1H600c22.1 0 40-17.9 40-40V344c0-22-17.9-40-40-40zM166.6 72.2l43-21.5 83.3 159.4-27.5 52.7-98.8-190.6zM79.6 464H48V352h31.6v112zm211.3-39.8c-12.3 24.6-37 39.8-64.5 39.8H111.6V352h141.9c12.3 0 23.3-6.8 28.5-17.3l148.4-284 43 21.5-182.5 352zm237 39.8H413.5c-6.6 0-43.4.8-66.5-43.7l35.7-68.9c7.2.9-21.4.6 145.2.6v112zm64.1 0h-32V352h32v112z\"]\n};\nvar faHollyBerry = {\n prefix: 'far',\n iconName: 'holly-berry',\n icon: [448, 512, [], \"f7aa\", \"M224 96c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm31.9 48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zM144 191.9c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm276 144.3c-14.4-1.4-29.2-4.2-43.9-8.4-7.1-2-11.4-8.7-9.8-15.2 3.5-14.2 8.3-27.7 14.1-40 8.8-18.7-3.9-40.8-25-42.6-77.4-6.9-94.9-37.9-131.4-37.9-37.6 0-52.9 30.9-131.4 37.9-21.3 1.9-33.8 24.1-25 42.6 5.9 12.4 10.6 25.9 14.1 40.1 1.6 6.5-2.7 13.2-9.8 15.2-14.8 4.2-29.6 7-43.9 8.4C8.7 338.2-6.7 358.9 3 379c14.4 29.8 22 64.1 22.2 99 .1 24.3 21.5 34.1 34.9 34.1 5.9 0 11.8-1.5 17.3-4.5 32.2-17.5 67.5-28.4 102.1-31.5 21.2-1.9 33.9-24 25-42.6-5.9-12.4-10.6-25.9-14.1-40-6.6-26.3 73.7-26.3 67.1 0-3.5 14.2-8.3 27.6-14.1 40-8.8 18.7 3.9 40.8 25 42.6 34.6 3.1 69.9 14 102.1 31.5 5.5 3 11.4 4.5 17.3 4.5 13.2 0 34.8-9.7 34.9-34.1.2-34.9 7.8-69.2 22.2-99 10.2-21.1-6.5-41-24.9-42.8zm-232.9-4.1c-32.2 9.1-51.2 41.2-43.2 73 2.3 9 4.9 17.8 8 26.3-27.1 4.6-53.7 13-79.5 25-2-26.4-7.5-51.7-16.5-75.7 9.7-1.8 19.4-4 29.1-6.8 32.2-9.1 51.2-41.2 43.2-73-2.3-9-4.9-17.8-8-26.3 27-4.6 53.9-13.1 79.5-25.1 2 26.2 7.6 51.8 16.5 75.7-9.7 1.8-19.4 4.1-29.1 6.9zm188.5 124.3c-25.7-12-52.3-20.4-79.5-25 3.1-8.5 5.7-17.3 8-26.3 7.1-28.3-7.3-56.7-33.2-69.1-1.9-14-17.9-35.3-22.9-85 0-.5.1-1 .2-1.5 25.6 11.9 52.5 20.4 79.5 25.1-3.1 8.5-5.7 17.3-8 26.3-8 31.8 11 63.9 43.2 73 9.7 2.8 19.4 5 29.1 6.8-8.9 24-14.4 49.3-16.4 75.7z\"]\n};\nvar faHome = {\n prefix: 'far',\n iconName: 'home',\n icon: [576, 512, [], \"f015\", \"M570.24 247.41L512 199.52V104a8 8 0 0 0-8-8h-32a8 8 0 0 0-7.95 7.88v56.22L323.87 45a56.06 56.06 0 0 0-71.74 0L5.76 247.41a16 16 0 0 0-2 22.54L14 282.25a16 16 0 0 0 22.53 2L64 261.69V448a32.09 32.09 0 0 0 32 32h128a32.09 32.09 0 0 0 32-32V344h64v104a32.09 32.09 0 0 0 32 32h128a32.07 32.07 0 0 0 32-31.76V261.67l27.53 22.62a16 16 0 0 0 22.53-2L572.29 270a16 16 0 0 0-2.05-22.59zM463.85 432H368V328a32.09 32.09 0 0 0-32-32h-96a32.09 32.09 0 0 0-32 32v104h-96V222.27L288 77.65l176 144.56z\"]\n};\nvar faHomeAlt = {\n prefix: 'far',\n iconName: 'home-alt',\n icon: [576, 512, [], \"f80a\", \"M570.24 247.41L323.87 45a56.06 56.06 0 0 0-71.74 0L5.76 247.41a16 16 0 0 0-2 22.54L14 282.25a16 16 0 0 0 22.53 2L64 261.69V448a32.09 32.09 0 0 0 32 32h128a32.09 32.09 0 0 0 32-32V344h64v104a32.09 32.09 0 0 0 32 32h128a32.07 32.07 0 0 0 32-31.76V261.67l27.53 22.62a16 16 0 0 0 22.53-2L572.29 270a16 16 0 0 0-2.05-22.59zM463.85 432H368V328a32.09 32.09 0 0 0-32-32h-96a32.09 32.09 0 0 0-32 32v104h-96V222.27L288 77.65l176 144.56z\"]\n};\nvar faHomeHeart = {\n prefix: 'far',\n iconName: 'home-heart',\n icon: [576, 512, [], \"f4c9\", \"M231.3 191.8c-15.3 0-31 4.8-44.9 16.5-37.7 31.7-32.1 83.3-5.3 110.6l87.8 89.4c12.7 12.9 30.3 7.5 37.7 0l87.8-89.4c26.8-27.3 32.4-78.9-5.3-110.6-13.9-11.7-29.7-16.5-44.9-16.5-22.2 0-43.3 10-56.4 23.3-13.2-13.3-34.3-23.3-56.5-23.3zM358.1 245c18.3 15.4 5.9 36.1 2 40.2l-72.4 73.6-72.3-73.6c-4-4.1-16.4-24.8 2-40.2 13.6-11.5 31.3-1.1 36.1 3.8l34.3 34.9 34.3-34.9c4.6-4.9 22.3-15.3 36-3.8zM573 224l-61.1-52.2V72c0-4.4-3.6-8-8-8h-32c-4.4 0-8 3.6-8 8v60.5L313.2 9.1c-14.7-12.1-36-12.1-50.7 0L2.9 224.3c-3.4 2.8-3.9 7.8-1.1 11.3l20.3 24.8c2.8 3.4 7.8 3.9 11.3 1.1l30.3-27.7V496c0 8.8 7.3 16 16.1 16H496c8.8 0 16-7.2 16-16V233.8l30.8 27.3c3.4 2.8 8.5 2.3 11.3-1.1l20.3-24.8c2.6-3.4 2-8.4-1.4-11.2zM463.8 464H111.7V194.5l171-140c2.9-2.4 7.2-2.4 10.1 0l171 140V464z\"]\n};\nvar faHomeLg = {\n prefix: 'far',\n iconName: 'home-lg',\n icon: [576, 512, [], \"f80b\", \"M570.24 215.42l-58.35-47.95V72a8 8 0 0 0-8-8h-32a8 8 0 0 0-7.89 7.71v56.41L323.87 13a56 56 0 0 0-71.74 0L5.76 215.42a16 16 0 0 0-2 22.54L14 250.26a16 16 0 0 0 22.53 2L64 229.71V288h-.31v208a16.13 16.13 0 0 0 16.1 16H496a16 16 0 0 0 16-16V229.71l27.5 22.59a16 16 0 0 0 22.53-2l10.26-12.3a16 16 0 0 0-2.05-22.58zM464 224h-.21v240H352V320a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32v144H111.69V194.48l.31-.25v-4L288 45.65l176 144.62z\"]\n};\nvar faHomeLgAlt = {\n prefix: 'far',\n iconName: 'home-lg-alt',\n icon: [576, 512, [], \"f80c\", \"M570.24 215.42L323.87 13a56 56 0 0 0-71.75 0L5.76 215.42a16 16 0 0 0-2 22.54L14 250.26a16 16 0 0 0 22.53 2L64 229.71V288h-.31v208a16.13 16.13 0 0 0 16.1 16H496a16 16 0 0 0 16-16V229.71l27.5 22.59a16 16 0 0 0 22.53-2l10.26-12.3a16 16 0 0 0-2.05-22.58zM464 224h-.21v240H352V320a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32v144H111.69V194.48l.31-.25v-4L288 45.65l176 144.62z\"]\n};\nvar faHoodCloak = {\n prefix: 'far',\n iconName: 'hood-cloak',\n icon: [576, 512, [], \"f6ef\", \"M569.6 460.8C512 383.9 512 320 512 320v-64c0-84-46.4-123-101.2-182.7l39.8-39.8C462.9 21.2 454.2 0 436.7 0H287.6C192 0 64 109.5 64 256v64s0 63.9-57.7 140.8c-15.8 21-.3 51.2 26 51.2h511.3c26.4 0 41.8-30.1 26-51.2zM368.3 464h-160V328c0-44.1 35.9-80 80-80s80 35.9 80 80zm48 0V328c0-70.6-57.4-128-128-128s-128 57.4-128 128v136H62.5c48-75.8 49.5-136.6 49.5-144v-64c0-118.7 106.5-208 175.5-208h80.7l-23.9 23.9c36.5 39.7 34.4 37.5 49.2 53.2C441.1 175.8 464 202.6 464 256v64c0 7.4 1.5 68.2 49.5 144z\"]\n};\nvar faHorizontalRule = {\n prefix: 'far',\n iconName: 'horizontal-rule',\n icon: [640, 512, [], \"f86c\", \"M640 247.5v17a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-17a16 16 0 0 1 16-16h608a16 16 0 0 1 16 16z\"]\n};\nvar faHorse = {\n prefix: 'far',\n iconName: 'horse',\n icon: [576, 512, [], \"f6f0\", \"M464 80c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16zm111.95 22.25a48.011 48.011 0 0 0-10.94-30.47L543.28 45.3c16.02-5.4 29.13-18.84 32.56-35.66C576.85 4.68 572.96 0 567.9 0H432c-68.4 0-125.82 47.95-140.42 112H176c-38.12 0-71.77 19.22-92.01 48.4C37.36 162.55 0 200.84 0 248v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.18 2.59-.78 5.05-.78 7.68 0 30.13 11.91 58.09 32.16 78.58l-12.94 43.76a78.948 78.948 0 0 0-1.05 40.85l24.11 100.29c3.46 14.38 16.32 24.52 31.11 24.52h74.7c20.86 0 36.14-19.64 31.02-39.86l-25.53-100.76 9.48-26.41L288 358.5V480c0 17.67 14.33 32 32 32h80c17.67 0 32-14.33 32-32V324.35c19.96-22.47 31.31-51.04 31.97-81.55.05-.93.08-8.43.08-8.43 20.95 6.97 38.32.72 40.94-.17l31.02-10.59c23.96-8.18 40.01-30.7 39.99-56.02l-.05-65.34zm-55.44 75.94l-31.02 10.59c-1.51.52-9.71 2.95-16.48-3.83L448.05 160h-32v80H416c0 26.09-12.68 49.03-32 63.64V464h-48V320l-139.82-31.07-28.73 80.02L191.53 464H150l-21.13-87.86a31.698 31.698 0 0 1 .37-16.18l22.7-76.72C128.54 273.72 112 250.83 112 224c0-35.35 28.65-64 64-64h160v-16c0-53.02 42.98-96 96-96h51.33L528 102.28l.05 65.35c0 4.77-3.03 9.02-7.54 10.56z\"]\n};\nvar faHorseHead = {\n prefix: 'far',\n iconName: 'horse-head',\n icon: [512, 512, [], \"f7ab\", \"M506.9 268.6c-.8-1.9-71.4-140.4-103.9-166 6.1-18.9 6.7-39.9 1-61.3-8.2-31.5-42-48.9-72.4-38L166.8 65.1C19 118.2 0 257 0 372v76c0 35.3 28.7 64 64 64h232c19.9 0 38.5-10.7 48.4-27.9 10-17.2 10.1-38.6.2-55.9l-.5-.9-.5-.9-39.1-62.2c2.3-1 .3-.5 3.9-1.6l5.5 7.4c14.1 18.8 36.6 30 60 30h27.3c18.8 0 36.5-7 50.3-19.7 42.8-35.4 36.8-30.3 38.8-32.3 20.8-20.8 27.3-52 16.6-79.4zM456.4 314l-36.8 30.3c-4.9 4.9-11.5 7.6-18.4 7.6h-27.3c-8.5 0-16.6-4-21.7-10.8l-33.7-45.5C299.9 314.2 281 328 250.8 328c-34.6 0-66-20.6-80.1-52.6-2.5-5.8-8.3-9.5-14.6-9.5-4.2 0-8.2 1.7-11.3 4.7l-12.1 12.1c-5 5-6.2 12.4-3.1 18.6C153 347.4 199.4 376 250.7 376c1.4 0 2.7-.3 4-.4l48.1 76.4c3 5.3-.8 12-6.9 12H64c-8.8 0-16-7.2-16-16v-76c0-129.9 29.2-223.7 135.6-262l164.3-61.6c5.5-2 9.1 2.6 9.7 5 9.9 37.7-13.1 58.3-27.7 66.9 34.6 6.7 60.5 35.9 75.5 64.4l56.8 101.5c3.8 9.6 1.5 20.5-5.8 27.8zM296 176c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24c0-13.2-10.7-24-24-24z\"]\n};\nvar faHorseSaddle = {\n prefix: 'far',\n iconName: 'horse-saddle',\n icon: [576, 512, [], \"f8c3\", \"M464 80a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm111.94 22.25c0-9.48-4.91-23.14-10.94-30.47L543.28 45.3c16-5.39 29.12-18.85 32.56-35.66A8.11 8.11 0 0 0 567.9 0H432c-68.41 0-125.81 48-140.41 112H176a111.81 111.81 0 0 0-92 48.41C37.37 162.55 0 200.84 0 248v56a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-56c0-13.22 6.87-24.39 16.78-31.69-.16 2.17-6.73 47.72 31.38 86.27l-12.94 43.76a82.4 82.4 0 0 0-1.06 40.85l24.12 100.29A32 32 0 0 0 137.37 512h74.72a32 32 0 0 0 31-39.86l-25.5-100.76 9.47-26.38L288 358.5V480a32 32 0 0 0 32 32h80a32 32 0 0 0 32-32V324.34a126.17 126.17 0 0 0 32-81.54c.06-.92.09-8.42.09-8.42a64.41 64.41 0 0 0 40.91-.18l31-10.59a59.07 59.07 0 0 0 40-56zM224 295.12l-27.81-6.18-28.75 80L191.53 464H150l-21.13-87.86a33 33 0 0 1 .38-16.19l22.69-76.72a63.79 63.79 0 0 1 8.06-121V176c0 40.16 27.18 73.73 64 84.25zM208 176v-16h80v16a40 40 0 0 1-80 0zm312.5 2.19l-31 10.59A16 16 0 0 1 473 185l-24.94-25h-32v80H416a79.66 79.66 0 0 1-32 63.64V464h-48V320l-64-14.22v-45.53c36.82-10.52 64-44.09 64-84.25v-32a96 96 0 0 1 96-96h51.34L528 102.28l.06 65.34a11.13 11.13 0 0 1-7.56 10.57z\"]\n};\nvar faHospital = {\n prefix: 'far',\n iconName: 'hospital',\n icon: [448, 512, [], \"f0f8\", \"M128 244v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12zm140 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm-76 84v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm76 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm180 124v36H0v-36c0-6.627 5.373-12 12-12h19.5V85.035C31.5 73.418 42.245 64 55.5 64H144V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v40h88.5c13.255 0 24 9.418 24 21.035V464H436c6.627 0 12 5.373 12 12zM79.5 463H192v-67c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v67h112.5V112H304v24c0 13.255-10.745 24-24 24H168c-13.255 0-24-10.745-24-24v-24H79.5v351zM266 64h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6z\"]\n};\nvar faHospitalAlt = {\n prefix: 'far',\n iconName: 'hospital-alt',\n icon: [640, 512, [], \"f47d\", \"M500 416h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12zm0-160h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12zM340 416h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12zm0-160h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12zM180 416h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12zm0-160h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12zm182-144h-26V86c0-3.3-2.7-6-6-6h-20c-3.3 0-6 2.7-6 6v26h-26c-3.3 0-6 2.7-6 6v20c0 3.3 2.7 6 6 6h26v26c0 3.3 2.7 6 6 6h20c3.3 0 6-2.7 6-6v-26h26c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6zm222-16H464V53.7C464 24.1 439.9 0 410.3 0H229.7C200.1 0 176 24.1 176 53.7V96H56c-30.9 0-56 25.1-56 56v352c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V152c0-4.4 3.6-8 8-8h168V53.7c0-3.2 2.6-5.7 5.7-5.7h180.6c3.2 0 5.7 2.6 5.7 5.7V144h168c4.4 0 8 3.6 8 8v352c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V152c0-30.9-25.1-56-56-56z\"]\n};\nvar faHospitalSymbol = {\n prefix: 'far',\n iconName: 'hospital-symbol',\n icon: [512, 512, [], \"f47e\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 464c-114.7 0-208-93.3-208-208S141.3 48 256 48s208 93.3 208 208-93.3 208-208 208zm88-320h-32c-4.4 0-8 3.6-8 8v80h-96v-80c0-4.4-3.6-8-8-8h-32c-4.4 0-8 3.6-8 8v208c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8v-80h96v80c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8z\"]\n};\nvar faHospitalUser = {\n prefix: 'far',\n iconName: 'hospital-user',\n icon: [640, 512, [], \"f80d\", \"M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm0-144a48 48 0 1 1-48 48 48.05 48.05 0 0 1 48-48zm143.69 205.13C606.44 355.5 577 342 546.79 342a102 102 0 0 0-29.58 4.39 126.42 126.42 0 0 1-74.42 0 101.87 101.87 0 0 0-29.58-4.39c-30.23 0-59.65 13.48-76.9 39.11A95.5 95.5 0 0 0 320 434.67V472a40 40 0 0 0 40 40h240a40 40 0 0 0 40-40v-37.33a95.5 95.5 0 0 0-16.31-53.54zM592 464H368v-29.33a47.74 47.74 0 0 1 8.12-26.74c7.55-11.21 21.41-17.93 37.08-17.93a54 54 0 0 1 15.63 2.31 174.49 174.49 0 0 0 102.33 0 53.4 53.4 0 0 1 15.63-2.31c15.67 0 29.53 6.7 37.08 17.91a47.74 47.74 0 0 1 8.13 26.76zM148 224h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm0 96h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm0 96h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm96-96h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm0-96h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm108 101.83V128a32 32 0 0 0-32-32h-16V32a32 32 0 0 0-32-32H80a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V144h48V48h160v96h48v229.36c1.86-3.4 3.58-6.86 5.76-10.1 10.73-15.94 25.46-28.33 42.24-37.43zM244 416h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm-52-272h26a6 6 0 0 0 6-6v-20a6 6 0 0 0-6-6h-26V86a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6z\"]\n};\nvar faHospitals = {\n prefix: 'far',\n iconName: 'hospitals',\n icon: [640, 512, [], \"f80e\", \"M192 144h26a6 6 0 0 0 6-6v-20a6 6 0 0 0-6-6h-26V86a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6zm244 272h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm-192-96h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm0-96h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm-96 192h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm0-192h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm0 96h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm96 96h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm288-192h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm0 96h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm76-224h-16V32a32 32 0 0 0-32-32H368a32 32 0 0 0-32 32v64h-32V32a32 32 0 0 0-32-32H80a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V144h48V48h160v96h40v352a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V144h40V48h160v96h48v352a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V128a32 32 0 0 0-32-32zm-76 320h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm-96-96h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm0-96h-40a12 12 0 0 0-12 12v40a12 12 0 0 0 12 12h40a12 12 0 0 0 12-12v-40a12 12 0 0 0-12-12zm44-80h26a6 6 0 0 0 6-6v-20a6 6 0 0 0-6-6h-26V86a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6z\"]\n};\nvar faHotTub = {\n prefix: 'far',\n iconName: 'hot-tub',\n icon: [512, 512, [], \"f593\", \"M432.83 209.65c1 8.21 7.62 14.35 15.48 14.35h15.85c9.35 0 16.8-8.57 15.73-18.35-4.26-39.11-22.02-74.53-49.29-97.16-17.07-14.17-28.34-36.75-31.44-62.15-1-8.21-7.62-14.35-15.48-14.35h-15.85c-9.35 0-16.8 8.57-15.73 18.35 4.27 39.11 22.02 74.53 49.29 97.16 17.08 14.18 28.34 36.76 31.44 62.15zm-96 0c1 8.21 7.62 14.35 15.48 14.35h15.85c9.35 0 16.8-8.57 15.73-18.35-4.26-39.11-22.02-74.53-49.29-97.16-17.07-14.17-28.34-36.75-31.44-62.15-1-8.21-7.62-14.35-15.48-14.35h-15.85c-9.35 0-16.8 8.57-15.73 18.35 4.27 39.11 22.02 74.53 49.29 97.16 17.08 14.18 28.34 36.76 31.44 62.15zM480 288H288l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v192c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V320c0-17.67-14.33-32-32-32zM48 256c0-8.82 7.18-16 16-16h74.67c3.44 0 6.85 1.14 9.6 3.2L208 288H48v-32zm64 208H64c-8.82 0-16-7.18-16-16V336h64v128zm120 0h-72V336h72v128zm120 0h-72V336h72v128zm112-16c0 8.82-7.18 16-16 16h-48V336h64v112zM96 160c44.18 0 80-35.82 80-80 0-44.19-35.82-80-80-80S16 35.81 16 80c0 44.18 35.82 80 80 80zm0-112c17.64 0 32 14.36 32 32s-14.36 32-32 32-32-14.36-32-32 14.36-32 32-32z\"]\n};\nvar faHotdog = {\n prefix: 'far',\n iconName: 'hotdog',\n icon: [512, 512, [], \"f80f\", \"M484.05 186.63C501.86 166.11 512 140.44 512 113A113 113 0 0 0 399 0c-27.45 0-53.12 10.15-73.65 28l-2.88-2.88C306.56 9.14 284.94 0 263.12 0a74.51 74.51 0 0 0-53.18 21.69L21.69 209.89c-30.1 30.11-28.6 80.64 3.37 112.59l2.94 2.89C10.14 345.89 0 371.56 0 399a113 113 0 0 0 113 113c27.46 0 53.13-10.15 73.65-28l2.88 2.88c15.91 15.98 37.53 25.12 59.35 25.12a74.51 74.51 0 0 0 53.18-21.69l188.22-188.2c30.1-30.13 28.6-80.64-3.37-112.59zm-428.43 57.2L243.84 55.62c10.18-10.21 29.32-12 47 5.72L61.33 290.88c-17.72-17.72-15.85-36.88-5.71-47.05zm400.76 24.34L268.16 456.38c-10.18 10.2-29.32 12-47-5.72l229.51-229.54c17.72 17.72 15.85 36.88 5.71 47.05zM445 159L159 445a65 65 0 0 1-92-92L353 67a65 65 0 1 1 92 92zm-45-47c-10.5 10.52-19 11.53-30.75 13-5.61.68-63.52 3.28-71.66 71.67-5.1 41.72-35.25 42.67-43.68 43.68-5.63.67-63.51 3.23-71.5 71.53-1 8.32-1.92 38.53-43.53 43.51-13.91 1.66-31.19 3.72-49.5 22A16 16 0 0 0 112 400c10.47-10.47 18.94-11.48 30.69-12.89 5.68-.68 63.48-3.22 71.47-71.5 1-8.15 1.86-38.53 43.56-43.53 5.72-.69 63.49-3.27 71.62-71.63 5.11-41.74 35.35-42.7 43.72-43.72 13.94-1.68 31.22-3.78 49.56-22.11A16 16 0 0 0 400 112z\"]\n};\nvar faHotel = {\n prefix: 'far',\n iconName: 'hotel',\n icon: [576, 512, [], \"f594\", \"M560 48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v16c0 8.84 7.16 16 16 16h15.98v416H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-16V48h16zm-64 416H320v-80h64c0-53.02-42.98-96-96-96s-96 42.98-96 96h64v80H79.98V48H496v416zM268.8 160h38.4c6.4 0 12.8-6.4 12.8-12.8v-38.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v38.4c0 6.4 6.4 12.8 12.8 12.8zm0 96h38.4c6.4 0 12.8-6.4 12.8-12.8v-38.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v38.4c0 6.4 6.4 12.8 12.8 12.8zm128 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-38.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v38.4c0 6.4 6.4 12.8 12.8 12.8zm0-96h38.4c6.4 0 12.8-6.4 12.8-12.8v-38.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v38.4c0 6.4 6.4 12.8 12.8 12.8zm-256 96h38.4c6.4 0 12.8-6.4 12.8-12.8v-38.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v38.4c0 6.4 6.4 12.8 12.8 12.8zm0-96h38.4c6.4 0 12.8-6.4 12.8-12.8v-38.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v38.4c0 6.4 6.4 12.8 12.8 12.8z\"]\n};\nvar faHourglass = {\n prefix: 'far',\n iconName: 'hourglass',\n icon: [384, 512, [], \"f254\", \"M368 48h4c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h4c0 80.564 32.188 165.807 97.18 208C47.899 298.381 16 383.9 16 464h-4c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-4c0-80.564-32.188-165.807-97.18-208C336.102 213.619 368 128.1 368 48zM64 48h256c0 101.62-57.307 184-128 184S64 149.621 64 48zm256 416H64c0-101.62 57.308-184 128-184s128 82.38 128 184z\"]\n};\nvar faHourglassEnd = {\n prefix: 'far',\n iconName: 'hourglass-end',\n icon: [384, 512, [], \"f253\", \"M372 0H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h4c0 80.564 32.188 165.807 97.18 208C47.898 298.381 16 383.9 16 464h-4c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-4c0-80.564-32.188-165.807-97.18-208C336.102 213.619 368 128.1 368 48h4c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12zM192 232c-70.692 0-128-82.379-128-184h256c0 101.621-57.308 184-128 184z\"]\n};\nvar faHourglassHalf = {\n prefix: 'far',\n iconName: 'hourglass-half',\n icon: [384, 512, [], \"f252\", \"M368 48h4c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h4c0 80.564 32.188 165.807 97.18 208C47.898 298.381 16 383.9 16 464h-4c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-4c0-80.564-32.188-165.807-97.18-208C336.102 213.619 368 128.1 368 48zm-48 0c0 28.672-4.564 55.81-12.701 80H76.701C68.564 103.81 64 76.672 64 48h256zm-12.701 336H76.701C97.405 322.453 141.253 280 192 280s94.595 42.453 115.299 104z\"]\n};\nvar faHourglassStart = {\n prefix: 'far',\n iconName: 'hourglass-start',\n icon: [384, 512, [], \"f251\", \"M372 0H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h4c0 80.564 32.188 165.807 97.18 208C47.898 298.381 16 383.9 16 464h-4c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-4c0-80.564-32.188-165.807-97.18-208C336.102 213.619 368 128.1 368 48h4c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12zm-52 464H64c0-101.62 57.308-184 128-184s128 82.38 128 184z\"]\n};\nvar faHouse = {\n prefix: 'far',\n iconName: 'house',\n icon: [576, 512, [], \"e00d\", \"M570.63,240,512,187.36V56a24,24,0,0,0-24-24H392a24,24,0,0,0-24,24v2.08l-53.44-48a40,40,0,0,0-53.12,0L5.37,240A16,16,0,0,0,4,262.58l10.62,11.95a16,16,0,0,0,22.59,1.34l26.75-24V472a40,40,0,0,0,40,40H472a40,40,0,0,0,40-40V251.85l26.75,24a16,16,0,0,0,22.59-1.34L572,262.58A16,16,0,0,0,570.63,240ZM464,464H112V208.75l176-158,176,158Zm0-319.74-48-43.09V80h48ZM224,208v96a16,16,0,0,0,16,16h96a16,16,0,0,0,16-16V208a16,16,0,0,0-16-16H240A16,16,0,0,0,224,208Z\"]\n};\nvar faHouseDamage = {\n prefix: 'far',\n iconName: 'house-damage',\n icon: [576, 512, [], \"f6f1\", \"M573.05 224l-61.13-52.23v-99.8c0-4.4-3.6-8-8-8H471.9c-4.4 0-8 3.6-8 8v60.5L313.23 9.07c-14.71-12.1-36.01-12.1-50.72 0L2.92 224.33c-3.4 2.8-3.9 7.8-1.1 11.3l20.31 24.8c2.8 3.4 7.8 3.9 11.3 1.1l30.28-27.67V496c0 8.8 7.31 16 16.11 16H253.2l-47.55-118.83 79.83-53.2A23.963 23.963 0 0 0 296.17 320v-59.58l68.95 86.12-74.26 49.48c-10.07 6.72-13.57 19.87-8.16 30.7L325.34 512h170.67c8.8 0 15.95-7.2 15.95-16V233.77l30.77 27.33c3.4 2.8 8.5 2.3 11.3-1.1l20.31-24.8c2.61-3.4 2.11-8.4-1.29-11.2zM463.8 464H355.04l-19.91-39.78 78.42-52.25a23.99 23.99 0 0 0 10.41-16.28c1.03-6.66-.78-13.42-4.97-18.69L290.92 177c-6.38-7.94-17.13-11.05-26.7-7.64-9.63 3.38-16.07 12.45-16.07 22.64v115.16l-85.36 56.87c-9.44 6.3-13.2 18.34-8.97 28.87l28.45 71.1h-70.53V194.47l170.97-140c2.9-2.4 7.21-2.4 10.1 0l170.99 140V464z\"]\n};\nvar faHouseDay = {\n prefix: 'far',\n iconName: 'house-day',\n icon: [640, 512, [], \"e00e\", \"M352,304v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16V304a16.05,16.05,0,0,0-16-16H368A16.05,16.05,0,0,0,352,304Zm282.63-8L576,242.85V144a16,16,0,0,0-16-16H544a16,16,0,0,0-16,16v55.34L424.06,105.12a36.35,36.35,0,0,0-48.15,0L165.37,296A16,16,0,0,0,164,318.58l10.62,12a16,16,0,0,0,22.59,1.33L224,307.61V472a40,40,0,0,0,40,40H536a40,40,0,0,0,40-40V307.61l26.75,24.26a16,16,0,0,0,22.59-1.33l10.62-12A16,16,0,0,0,634.63,296ZM528,464H272V264.06L400,148,528,264.06ZM104,176a72.08,72.08,0,0,1,72-72c38.61,0,70,30.61,71.68,68.8l40-36.28-7.39-3.69,23-69a11.89,11.89,0,0,0-15.06-15l-69,23L186.66,6.6a11.9,11.9,0,0,0-21.31,0L132.83,71.71l-69.09-23a11.89,11.89,0,0,0-15.06,15l23,69L6.6,165.35a11.9,11.9,0,0,0,0,21.31l65.11,32.51-23,69.1a11.89,11.89,0,0,0,15.06,15.06L127,282.23,166,246.81C131.1,241.89,104,212.27,104,176Zm32,0a40,40,0,1,0,40-40A40.07,40.07,0,0,0,136,176Z\"]\n};\nvar faHouseFlood = {\n prefix: 'far',\n iconName: 'house-flood',\n icon: [576, 512, [], \"f74f\", \"M38.1 244.8c2.8 3.4 7.8 3.9 11.3 1.1l14.7-12v177.5c9.3-6.6 20.3-10.6 31.9-10.6 5.5 0 10.8 1.2 16 2.7v-209l170.9-140c2.9-2.4 7.2-2.4 10.1 0l170.9 140V224h.1v179.5c5.2-1.5 10.5-2.8 16-2.8 11.6 0 22.8 4 32.1 10.7V233.8l14.7 12c3.4 2.8 8.5 2.3 11.3-1.1l20.3-24.8c2.6-3.4 2.1-8.4-1.3-11.2L512 171.8V72c0-4.4-3.6-8-8-8h-32c-4.4 0-8 3.6-8 8v60.5L313.4 9.1c-14.7-12.1-36-12.1-50.7 0L18.9 208.7c-3.4 2.8-3.9 7.8-1.1 11.3l20.3 24.8zm523.4 219.1c-25.1-2.6-49.2-11.9-66.4-25.9-8.7-7.1-21.6-7-30.3.1-20.5 16.9-50 26.6-80.8 26.6-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-20.5 16.9-50 26.6-80.8 26.6-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-17.2 14.2-40.7 23.3-66.1 25.8-8.2.9-14.7 7.3-14.7 15.5v16.5c0 9.1 7.6 16.8 16.7 16 28.9-2.5 56.5-11.5 79.3-25.8 54.9 34.2 137.9 33.9 192 0 54.9 34.2 137.9 33.9 192 0 22.9 14.3 50.5 23.3 79.2 25.8 9.1.8 16.7-6.9 16.7-16v-16.7c.1-8.1-6.3-14.4-14.4-15.3zM240 192c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-96z\"]\n};\nvar faHouseLeave = {\n prefix: 'far',\n iconName: 'house-leave',\n icon: [640, 512, [], \"e00f\", \"M363.25,389a7.4,7.4,0,0,0,1.62-2.64L372.46,368H112.05V168L240.1,51.93l104.81,95A123.2,123.2,0,0,1,381,124.32l7.13-2.89L264.17,9.1a36.4,36.4,0,0,0-48.18,0L5.37,200A16,16,0,0,0,4,222.55l10.63,12a16,16,0,0,0,22.6,1.33L64,211.57V376a40,40,0,0,0,40,40H336.36ZM528,96A48,48,0,1,0,480.1,48,47.91,47.91,0,0,0,528,96Zm111,185.52a21.92,21.92,0,0,0-.8-2.54,25.55,25.55,0,0,0-5.49-8.08L603.43,242a8.75,8.75,0,0,1-2-3.2L588.55,200a105.09,105.09,0,0,0-99.85-72c-34.83,0-53,8.79-95.73,26a92.15,92.15,0,0,0-48.24,44.8L330.32,229.9a25,25,0,0,0-2.23,9.22c0,.71-.08,1.41-.06,2.09a21.6,21.6,0,0,0,1.59,7.93c.06.14.17.25.23.39a23.39,23.39,0,0,0,4.31,6.17c.43.45.86.91,1.32,1.34a26.84,26.84,0,0,0,6.46,4.45c.23.11.48.16.72.26a26.44,26.44,0,0,0,7,1.92c.62.09,1.23.18,1.85.22a23.15,23.15,0,0,0,7.86-.71c.26-.08.5-.25.76-.34a23.62,23.62,0,0,0,8.13-5,25.45,25.45,0,0,0,5.61-7.73l14-30.38a43.71,43.71,0,0,1,22.82-21c21.69-8.71,33.1-13.5,44.33-17.11l-19.82,79.2c-4.69,18.9.31,38.79,14.91,54.61l79,73a39.65,39.65,0,0,1,11.79,20.39l19.51,84.8a23.62,23.62,0,0,0,3.36,7.61,24.53,24.53,0,0,0,1.77,2.05,24.25,24.25,0,0,0,4.05,4.05,23.65,23.65,0,0,0,2.8,1.65,23.34,23.34,0,0,0,5,2.12,22.79,22.79,0,0,0,3.54.64,23.67,23.67,0,0,0,8.21-.12,24,24,0,0,0,17.91-28.8l-19.51-84.7a88.16,88.16,0,0,0-26-44.89l-53.83-49.61,26.2-104.79c7.4,9.7,7.5,12.61,21.82,55.4a57.41,57.41,0,0,0,13.82,22.21l29.29,29a24.91,24.91,0,0,0,8.44,5.38,20.4,20.4,0,0,0,3,.59,22.16,22.16,0,0,0,5.82.79,23.39,23.39,0,0,0,2.35-.36,24.52,24.52,0,0,0,5.65-1.55c.81-.34,1.61-.7,2.39-1.12a27.36,27.36,0,0,0,5-3.56c.51-.45,1.08-.82,1.55-1.3a26.48,26.48,0,0,0,4.7-6.55c.25-.5.34-1.06.56-1.57a23,23,0,0,0,1.63-6.13,20.79,20.79,0,0,0,.09-2.62A21.18,21.18,0,0,0,639.05,281.52ZM176.1,192a16.05,16.05,0,0,0-16,16v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16V208a16.05,16.05,0,0,0-16-16ZM427.43,338l-.87-.93c-1.69-1.83-2.85-3.91-4.38-5.82l-27.71,67.3A38.74,38.74,0,0,1,385.56,412l-58.43,58.49A23.95,23.95,0,1,0,361,504.39l58.4-58.5a87.66,87.66,0,0,0,19.41-29.5l19.44-49.93L428.36,338.9Z\"]\n};\nvar faHouseNight = {\n prefix: 'far',\n iconName: 'house-night',\n icon: [640, 512, [], \"e010\", \"M112,224a111.77,111.77,0,0,0,87-41.47,5.25,5.25,0,0,0-5.05-8.47A87.74,87.74,0,0,1,134.11,11.6a5.26,5.26,0,0,0-1.65-9.73A136.16,136.16,0,0,0,112,0a112,112,0,0,0,0,224ZM195,68.78l39.72,16.56,16.56,39.72a5.32,5.32,0,0,0,9.54,0l16.56-39.72,39.72-16.56a5.33,5.33,0,0,0,0-9.54L277.33,42.68,260.77,3a5.32,5.32,0,0,0-9.54,0L234.67,42.68,195,59.24a5.33,5.33,0,0,0,0,9.54Zm-37.9,310.46-39.72-16.56L100.77,323a5.32,5.32,0,0,0-9.54,0L74.67,362.68,35,379.24a5.33,5.33,0,0,0,0,9.54l39.72,16.56,16.56,39.72a5.32,5.32,0,0,0,9.54,0l16.56-39.72,39.72-16.56a5.33,5.33,0,0,0,0-9.54ZM634.63,296,576,242.85V144a16,16,0,0,0-16-16H544a16,16,0,0,0-16,16v55.34L424.06,105.12a36.35,36.35,0,0,0-48.15,0L165.37,296A16,16,0,0,0,164,318.58l10.62,12a16,16,0,0,0,22.59,1.33L224,307.61V472a40,40,0,0,0,40,40H536a40,40,0,0,0,40-40V307.61l26.75,24.26a16,16,0,0,0,22.59-1.33l10.62-12A16,16,0,0,0,634.63,296ZM528,464H272V264.06L400,148,528,264.06ZM352,304v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16V304a16.05,16.05,0,0,0-16-16H368A16.05,16.05,0,0,0,352,304Z\"]\n};\nvar faHouseReturn = {\n prefix: 'far',\n iconName: 'house-return',\n icon: [640, 512, [], \"e011\", \"M176.08,192a16.06,16.06,0,0,0-16,16v64a16.05,16.05,0,0,0,16,16h64a16,16,0,0,0,16-16V208a16.05,16.05,0,0,0-16-16Zm-64-23.91L240.08,52,357.34,157.72a136.72,136.72,0,0,1,32.27-34.21L264.15,9.12a36.37,36.37,0,0,0-48.17,0L5.37,200A16,16,0,0,0,4,222.58l10.62,11.95a16,16,0,0,0,22.6,1.33L64,211.6V376a40,40,0,0,0,40,40H335.58l5.78-25.12A119.54,119.54,0,0,1,349.67,368H112ZM432.07,96a48,48,0,1,0-47.9-48A47.94,47.94,0,0,0,432.07,96Zm92.84,164.79-19.82-79.2c11.22,3.61,22.63,8.4,44.33,17.11a43.74,43.74,0,0,1,22.82,21l14,30.38a25.45,25.45,0,0,0,5.61,7.73,23.62,23.62,0,0,0,8.13,5c.26.09.5.26.76.34a23.15,23.15,0,0,0,7.86.71c.62,0,1.23-.13,1.84-.22a26.51,26.51,0,0,0,7-1.92c.23-.1.49-.15.72-.26a26.59,26.59,0,0,0,6.45-4.45c.47-.43.9-.89,1.33-1.34a23.39,23.39,0,0,0,4.31-6.17c.06-.14.17-.25.23-.39a21.6,21.6,0,0,0,1.58-7.93c0-.68,0-1.38,0-2.09a25.19,25.19,0,0,0-2.24-9.22l-14.41-31.11A92.09,92.09,0,0,0,567.11,154c-42.7-17.2-60.9-26-95.72-26a105.08,105.08,0,0,0-99.84,72l-12.88,38.8a8.75,8.75,0,0,1-2,3.2L327.34,270.9a25.35,25.35,0,0,0-5.48,8.08,20.21,20.21,0,0,0-.81,2.54,22.73,22.73,0,0,0-.86,8.5,23,23,0,0,0,1.64,6.13c.21.51.3,1.07.55,1.57a26.48,26.48,0,0,0,4.7,6.55c.47.48,1.05.85,1.55,1.3a27.1,27.1,0,0,0,5,3.56,24.81,24.81,0,0,0,2.39,1.12,24.44,24.44,0,0,0,5.64,1.55,23.39,23.39,0,0,0,2.35.36,22,22,0,0,0,5.82-.79,20.4,20.4,0,0,0,3-.59,24.91,24.91,0,0,0,8.44-5.38l29.29-29a57.41,57.41,0,0,0,13.82-22.21c14.32-42.79,14.41-45.7,21.82-55.4l26.19,104.79-53.83,49.61a88.21,88.21,0,0,0-26,44.89L353,482.78A24,24,0,0,0,371,511.58a23.67,23.67,0,0,0,8.21.12,22.79,22.79,0,0,0,3.54-.64,23.34,23.34,0,0,0,5-2.12,23.65,23.65,0,0,0,2.8-1.65,24.19,24.19,0,0,0,4-4.05,22.92,22.92,0,0,0,1.78-2.05,23.84,23.84,0,0,0,3.36-7.61l19.51-84.8A39.63,39.63,0,0,1,431,388.39l79-73C524.6,299.58,529.6,279.69,524.91,260.79Zm108,209.69L574.52,412a38.74,38.74,0,0,1-8.91-13.41l-27.71-67.3c-1.52,1.91-2.69,4-4.38,5.82l-.86.93-.94.87-29.84,27.56,19.43,49.93a87.54,87.54,0,0,0,19.42,29.5l58.39,58.5a23.95,23.95,0,0,0,33.82-33.91Z\"]\n};\nvar faHouseSignal = {\n prefix: 'far',\n iconName: 'house-signal',\n icon: [640, 512, [], \"e012\", \"M0,224H0v48c132.55,0,240,107.45,240,240h48C288,352.94,159.06,224,0,224ZM0,416v48a48,48,0,0,1,48,48H96A96,96,0,0,0,0,416Zm0-96v48A144,144,0,0,1,144,512h48C192,406,106,320,0,320ZM634.63,200,576,146.84V48a16,16,0,0,0-16-16H544a16,16,0,0,0-16,16v55.34L424.06,9.1a36.36,36.36,0,0,0-48.15,0L165.37,200A16,16,0,0,0,164,222.57l10.62,12a16,16,0,0,0,22.59,1.33L224,211.59V262.5a339.26,339.26,0,0,1,48,53.35V168.05L400,51.93,528,168.05V368H303.41a332.68,332.68,0,0,1,18.07,48H536a40,40,0,0,0,40-40V211.59l26.75,24.27a16,16,0,0,0,22.59-1.33l10.62-12A16,16,0,0,0,634.63,200ZM432,288a16.05,16.05,0,0,0,16-16V208a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16v64a16.05,16.05,0,0,0,16,16Z\"]\n};\nvar faHouseUser = {\n prefix: 'far',\n iconName: 'house-user',\n icon: [576, 512, [], \"e065\", \"M570.61,240,512,187.37V56a24,24,0,0,0-24-24H392a24,24,0,0,0-24,24v2.08l-53.44-48C308.28,4.53,296.39,0,288,0s-20.28,4.53-26.56,10.09L5.39,240A18.21,18.21,0,0,0,0,252a18.47,18.47,0,0,0,4,10.61l10.62,12a18.15,18.15,0,0,0,12,5.37,18.54,18.54,0,0,0,10.63-4l26.75-24V472a40,40,0,0,0,40,40H472a40,40,0,0,0,40-40V251.85l26.75,24a16,16,0,0,0,22.59-1.33L572,262.59A18.47,18.47,0,0,0,576,252,18.21,18.21,0,0,0,570.61,240ZM464,464H416V448a96,96,0,0,0-96-96H256a96,96,0,0,0-96,96v16H112V208.76l176-158,176,158Zm0-319.72-48-43.1V80h48ZM224,256a64,64,0,1,0,64-64A64,64,0,0,0,224,256Z\"]\n};\nvar faHryvnia = {\n prefix: 'far',\n iconName: 'hryvnia',\n icon: [384, 512, [], \"f6f2\", \"M368 240c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-71.22C311.4 174.48 320 151.63 320 127.86 320 75 280.3 32 231.5 32h-73.88c-23.84 0-46.83 8.87-64.49 24.89L70.35 77.55c-6.54 5.94-7.04 16.05-1.1 22.6l21.5 23.7c5.94 6.54 16.06 7.04 22.6 1.1l22.76-20.64c5.9-5.35 13.58-8.31 21.54-8.31h73.85c13.28 0 24.5 14.59 24.5 31.86 0 9.59-3.39 18.64-9.28 24.8L209.01 192H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h147.01l-30.67 32H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h71.22C72.6 337.52 64 360.37 64 384.14 64 437 103.7 480 152.5 480h73.88c23.85 0 46.84-8.88 64.51-24.9l22.77-20.65c6.54-5.94 7.04-16.06 1.1-22.6l-21.5-23.71c-5.94-6.54-16.06-7.04-22.6-1.1l-22.77 20.66a32.006 32.006 0 0 1-21.5 8.3H152.5c-13.28 0-24.5-14.59-24.5-31.86 0-9.59 3.39-18.64 9.28-24.8L174.99 320H368c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H220.99l30.67-32H368z\"]\n};\nvar faHumidity = {\n prefix: 'far',\n iconName: 'humidity',\n icon: [384, 512, [], \"f750\", \"M160 292c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm92 60c-15.5 0-28 12.5-28 28s12.5 28 28 28 28-12.5 28-28-12.5-28-28-28zM223.9 22.1C219.5 7.5 205.8 0 192 0c-13.5 0-27 7.2-31.8 22.1C109.1 179.8 0 222.7 0 333.9 0 432.3 85.9 512 192 512s192-79.7 192-178.1c0-111.7-108.9-153.3-160.1-311.8zM192 464c-79.4 0-144-58.4-144-130.1 0-40.3 19.3-67.6 56.3-116.2 28-36.8 61.8-81.2 87.7-143.5 26 62.6 59.8 106.9 87.9 143.6 36.9 48.3 56.1 75.4 56.1 116 0 71.8-64.6 130.2-144 130.2zm61-196.2l-12.5-10c-3.5-2.8-8.5-2.2-11.2 1.2l-99.5 134c-2.8 3.5-2.2 8.5 1.2 11.2l12.5 10c3.5 2.8 8.5 2.2 11.2-1.2l99.5-134c2.8-3.4 2.2-8.5-1.2-11.2z\"]\n};\nvar faHurricane = {\n prefix: 'far',\n iconName: 'hurricane',\n icon: [384, 512, [], \"f751\", \"M209.9 89.6l12.3-39c4.1-12.7 1.5-26.5-7-36.7C206.8 3.8 194-1.4 181.3.3 77.9 13.1 0 104.3 0 212.5c0 106 75.6 194.1 174.1 209.9l-12.3 39c-4.1 12.7-1.5 26.4 7 36.7 7.3 8.9 18.1 13.9 29.3 13.9 1.5 0 3.1-.1 4.7-.3C306.1 498.9 384 407.7 384 299.5c0-106-75.6-194-174.1-209.9zm2.2 371.8l26.7-84.4H206c-87.1 0-158-73.8-158-164.5C48 134 100.3 67 171.9 50.6L145.2 135H178c87.1 0 158 73.8 158 164.5 0 78.5-52.3 145.5-123.9 161.9zM192 184c-39.7 0-72 32.3-72 72s32.3 72 72 72 72-32.3 72-72-32.3-72-72-72zm0 96c-13.2 0-24-10.8-24-24s10.8-24 24-24 24 10.8 24 24-10.8 24-24 24z\"]\n};\nvar faICursor = {\n prefix: 'far',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M128 41.522C91.867.049 43.399-.377 11.818.076 5.26.17 0 5.516 0 12.075v23.609c0 6.641 5.393 12.037 12.034 12C39.464 47.528 104 52.257 104 104v128H68c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h36v128c0 51.494-62.335 55.801-92.092 55.985C5.314 464.026 0 469.39 0 475.984v23.943c0 6.558 5.258 11.903 11.815 11.999 31.535.46 80.027.054 116.185-41.448 36.132 41.473 84.601 41.899 116.182 41.446 6.558-.094 11.818-5.44 11.818-11.999v-23.608c0-6.641-5.393-12.037-12.034-12C216.538 464.47 152 459.731 152 408V280h36c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-36V104c0-51.514 62.301-55.805 92.092-55.985C250.686 47.975 256 42.61 256 36.016V12.073C256 5.515 250.742.17 244.185.074 212.65-.386 164.157.02 128 41.522z\"]\n};\nvar faIceCream = {\n prefix: 'far',\n iconName: 'ice-cream',\n icon: [448, 512, [], \"f810\", \"M380.91 129.3C366.57 55.65 301.85 0 224 0S81.43 55.65 67.09 129.3A79.87 79.87 0 0 0 80 288h.94l92.81 192.13A55.56 55.56 0 0 0 224 512c21.47 0 40.72-12.2 50.25-31.86L367.06 288h.94a79.87 79.87 0 0 0 12.91-158.7zM231 459.25c-3.81 7.87-10.25 7.87-14.06 0L134.25 288h179.5zM368 240H80a32 32 0 0 1-32-32 31.72 31.72 0 0 1 26.83-31.33l33-5.39 6.39-32.82a111.85 111.85 0 0 1 219.58 0l6.39 32.82 33 5.39A31.72 31.72 0 0 1 400 208a32 32 0 0 1-32 32z\"]\n};\nvar faIceSkate = {\n prefix: 'far',\n iconName: 'ice-skate',\n icon: [576, 512, [], \"f7ac\", \"M568 416h-32c-4.4 0-8 3.6-8 8v16c0 13.3-10.7 24-24 24h-72v-48h16c35.3 0 64-28.7 64-64v-53c0-44.1-30-82.4-72.7-93.1L352 184V8c0-4.4-3.6-8-8-8h-32c-4.4 0-8 3.6-8 8v24h-99.7c-8.1 0-16.2 1.6-23.8 4.6L52.1 88C40 92.8 32 104.6 32 117.7V352c0 35.3 28.7 64 64 64v48H8c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8h504c35.3 0 64-28.7 64-64v-24c0-4.4-3.6-8-8-8zM80 352V128.5l118.4-47.4c1.9-.8 3.9-1.1 5.9-1.1H304v48h-72c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h72v32h-72c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h82.1l113.5 28.4C449 257.7 464 276.9 464 299v53c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16zm64 64h240v48H144v-48z\"]\n};\nvar faIcicles = {\n prefix: 'far',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M480 0H32C10.6 0-4.8 20.7 1.4 41.2l79.5 235.9c2.5 7.2 8.8 10.9 15.1 10.9 6.3 0 12.7-3.6 15.1-10.9l28.8-86.6 36.4 181.1c1.9 8.3 8.7 12.4 15.6 12.4 6.8 0 13.7-4.1 15.6-12.4l38.7-190.7 26.4 95.7c2.3 7.6 8.8 11.4 15.3 11.4s13-3.8 15.3-11.4l38.1-134.8 58.8 357.4C402 507.7 409 512 416 512s14-4.3 15.7-12.8l79.8-461.3C515.1 18.2 500 0 480 0zM95.8 171.2L54.3 48h82.5l-41 123.2zm103.4.1l-7.1 35L187 181 160.3 48h64l-25.1 123.3zm96.1-42.6l-6.9 24.4-29-105.1h58.7l-22.8 80.7zm121.5 175l-28-169.7-14.2-86H461l-44.2 255.7z\"]\n};\nvar faIcons = {\n prefix: 'far',\n iconName: 'icons',\n icon: [512, 512, [], \"f86d\", \"M144 343.78a48 48 0 1 0 48 48 48 48 0 0 0-48-48zM101.74 213a37 37 0 0 0 52.36 0l78.56-78.44A79.06 79.06 0 0 0 227 17.49c-28.08-23.13-69.54-22.82-99-.86-29.45-22-71-22.3-99.05.89a79.11 79.11 0 0 0-5.77 117.08zM59.42 54.53A29.54 29.54 0 0 1 78.35 48 35.08 35.08 0 0 1 103 58.32l25 24.89 24.93-24.89c12.25-12.15 31.43-13.83 43.58-3.82a31.09 31.09 0 0 1 2.31 46.15l-70.85 70.71-70.87-70.69a31.13 31.13 0 0 1 2.32-46.14zm337.93 305.24l32.27-69.89a24 24 0 1 0-43.54-20.12l-63.7 138h109.27l-36.92 68.58A24 24 0 1 0 437 499.05l75-139.28zm-141.44-72h-27.42l-7.09-14.17a27.36 27.36 0 0 0-25.64-17.76H92.08a27.39 27.39 0 0 0-25.65 17.76l-7 14.21H32a32 32 0 0 0-32 32V480a32 32 0 0 0 32 32h223.91a32 32 0 0 0 32-32V319.79a32 32 0 0 0-32-31.98zm-16 176.23H48V335.79h41.22l13.21-26.73 2.57-5.26h77.83l2.69 5.4 13.24 26.59h41.13zm112-256V68.24L463.83 51v78.58a84 84 0 0 0-16-1.69c-35.34 0-64 21.47-64 48s28.64 48 64 48 64-21.48 64-48V32c0-17.9-13.54-32-29.64-32a28.08 28.08 0 0 0-4.26.33L329.39 23.17c-14.63 2.25-25.5 15.74-25.5 31.66V161.6a83.25 83.25 0 0 0-16-1.7c-35.33 0-64 21.55-64 48.13s28.64 48.13 64 48.13 63.98-21.55 63.98-48.16z\"]\n};\nvar faIconsAlt = {\n prefix: 'far',\n iconName: 'icons-alt',\n icon: [512, 512, [], \"f86e\", \"M16 128.33h72v80a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-80h72a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16zm480 164.36a16 16 0 0 0-22.62 0L292.7 473.38a16 16 0 0 0 0 22.62l11.3 11.31a16 16 0 0 0 22.62 0l180.69-180.69a16 16 0 0 0 0-22.62zM16 48h192a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H16A16 16 0 0 0 0 16v16a16 16 0 0 0 16 16zM482.34 0a28 28 0 0 0-4.25.33L329.52 23.18C314.88 25.44 304 38.94 304 54.86V161.7a83.25 83.25 0 0 0-16-1.7c-35.34 0-64 21.56-64 48.16s28.65 48.17 64 48.17 64-21.57 64-48.17V68.29l112-17.23v78.64a83.25 83.25 0 0 0-16-1.7c-35.34 0-64 21.49-64 48s28.65 48 64 48 64-21.49 64-48V32c0-17.91-13.55-32-29.66-32zM328 368a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm143.67 64a40 40 0 1 0 40 40 40 40 0 0 0-39.99-40zm-266.51 11.21l27.33-16.06a16 16 0 0 0 5.09-22l-8.48-13.57a16 16 0 0 0-22-5.1l-37 21.71-23.32-23.32c21.25-11.72 35.84-34.08 35.84-60A68.79 68.79 0 1 0 45 324.8a68.08 68.08 0 0 0 15.76 43.27l-26 15.66a71.33 71.33 0 0 0-32.33 42.55 67.57 67.57 0 0 0 7.22 52.85c12.72 21.12 35.35 32.78 58.94 32.78A72.6 72.6 0 0 0 106 501.44l56.38-33.12 39 39a16 16 0 0 0 22.63 0L235.33 496a16 16 0 0 0 0-22.62zM80.93 460.52c-10.66 6.43-24.22 3.68-30.16-6.14-5.18-8.66-3.21-22.33 8.72-29.52l37.12-22.32 30.73 30.72zm32.9-114.93a20.8 20.8 0 1 1 20.78-20.79 20.83 20.83 0 0 1-20.78 20.79z\"]\n};\nvar faIdBadge = {\n prefix: 'far',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm0 464H48V48h288v416zM144 112h96c8.8 0 16-7.2 16-16s-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16zm48 176c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z\"]\n};\nvar faIdCard = {\n prefix: 'far',\n iconName: 'id-card',\n icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H303.2c.9-4.5.8 3.6.8-22.4 0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6 0 26-.2 17.9.8 22.4H48V144h480v288zm-168-80h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm-168 96c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faIdCardAlt = {\n prefix: 'far',\n iconName: 'id-card-alt',\n icon: [576, 512, [], \"f47f\", \"M512 64H368V32c0-17.7-14.3-32-32-32h-96c-17.7 0-32 14.3-32 32v32H64C28.7 64 0 92.7 0 128v320c0 35.3 28.7 64 64 64h448c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM256 48h64v64h-64V48zm272 400c0 8.8-7.2 16-16 16H399.2c.2-1.1.8-2.1.8-3.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 1.1.5 2.1.8 3.2H64c-8.8 0-16-7.2-16-16V128c0-8.8 7.2-16 16-16h144v48h160v-48h144c8.8 0 16 7.2 16 16v320zM288 224c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z\"]\n};\nvar faIgloo = {\n prefix: 'far',\n iconName: 'igloo',\n icon: [640, 512, [], \"f7ae\", \"M320 0C146.3 0 4.7 139.3.4 312H0v136c0 35.3 28.7 64 64 64h512c35.3 0 64-28.7 64-64V312h-.4C635.3 139.3 493.7 0 320 0zm243.7 200c16.8 34 26.7 71.9 27.9 112H520V200h43.7zM392 58c56.7 15.6 106 49 141.5 94H392V58zm-72-10c8.1 0 16.1.5 24 1.2V152H106.5C156.4 88.8 233.4 48 320 48zM76.3 200H120v112H48.4c1.2-40.1 11.1-78 27.9-112zM192 384v80H64c-8.8 0-16-7.2-16-16v-88h146.4c-1.5 7.8-2.4 15.8-2.4 24zm208 80H240v-80c0-44.1 35.9-80 80-80s80 35.9 80 80v80zm-80-208c-43.9 0-82.6 22.2-105.7 56H168V200h304v112h-46.3c-23.1-33.8-61.8-56-105.7-56zm272 192c0 8.8-7.2 16-16 16H448v-80c0-8.2-.9-16.2-2.4-24H592v88z\"]\n};\nvar faImage = {\n prefix: 'far',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z\"]\n};\nvar faImagePolaroid = {\n prefix: 'far',\n iconName: 'image-polaroid',\n icon: [448, 512, [], \"f8c4\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-16 400H48v-64h352zm0-112h-16l-97.07-121c-7.46-9.31-22.4-9.31-29.86 0l-63.38 79-33.05-45.78c-7.92-11-25.36-11-33.28 0L64 320H48V80h352zM144 176a32 32 0 1 0-32-32 32 32 0 0 0 32 32z\"]\n};\nvar faImages = {\n prefix: 'far',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v48H54a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6v-10h48zm42-336H150a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6V86a6 6 0 0 0-6-6zm6-48c26.51 0 48 21.49 48 48v256c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h384zM264 144c0 22.091-17.909 40-40 40s-40-17.909-40-40 17.909-40 40-40 40 17.909 40 40zm-72 96l39.515-39.515c4.686-4.686 12.284-4.686 16.971 0L288 240l103.515-103.515c4.686-4.686 12.284-4.686 16.971 0L480 208v80H192v-48z\"]\n};\nvar faInbox = {\n prefix: 'far',\n iconName: 'inbox',\n icon: [576, 512, [], \"f01c\", \"M567.403 235.642L462.323 84.589A48 48 0 0 0 422.919 64H153.081a48 48 0 0 0-39.404 20.589L8.597 235.642A48.001 48.001 0 0 0 0 263.054V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V263.054c0-9.801-3-19.366-8.597-27.412zM153.081 112h269.838l77.913 112H378.334l-32 64H229.666l-32-64H75.168l77.913-112zM528 400H48V272h120l32 64h176l32-64h120v128z\"]\n};\nvar faInboxIn = {\n prefix: 'far',\n iconName: 'inbox-in',\n icon: [576, 512, [], \"f310\", \"M395.5 185.5l-99 99c-4.7 4.7-12.3 4.7-17 0l-99-99c-7.6-7.6-2.2-20.5 8.5-20.5h67V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v153h67c10.7 0 16.1 12.9 8.5 20.5zM528 352H408l-32 64H200l-32-64H48v112h480V352zm48 2.2V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V354.2c0-11.8 4.3-23.1 12.1-31.9l101.6-114.2c2.3-2.6 4.9-4.9 7.7-7 2.4-1.7 5.6-1.4 7.7.7l24.8 24.9c2.2 2.2 2.3 5.9.2 8.2L92.7 304h105l32 64h116.7l32-64h105L422 234.9c-2.1-2.4-2-5.9.2-8.2l24.6-25c2-2.1 5.3-2.4 7.7-.7 2.9 2.1 5.5 4.4 7.9 7.1L564 322.3c7.7 8.8 12 20.2 12 31.9z\"]\n};\nvar faInboxOut = {\n prefix: 'far',\n iconName: 'inbox-out',\n icon: [576, 512, [], \"f311\", \"M180.5 102.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v153c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V123h-67c-10.7 0-16.1-12.9-8.5-20.5zM576 354.2V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V354.2c0-11.8 4.3-23.1 12.1-31.9l101.6-114.2c9.1-10.2 22.2-16.1 35.9-16.1H202c3.3 0 6 2.7 6 6v36c0 3.3-2.7 6-6 6h-52.4l-56.9 64h105l32 64h116.7l32-64h105l-56.9-64H374c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h52.4c13.7 0 26.8 5.9 35.9 16.1l101.6 114.2c7.8 8.8 12.1 20.2 12.1 31.9zm-48-2.2H408l-32 64H200l-32-64H48v112h480V352z\"]\n};\nvar faIndent = {\n prefix: 'far',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M432 424H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM435.17 168H204.83A12.82 12.82 0 0 0 192 180.83v22.34A12.82 12.82 0 0 0 204.83 216h230.34A12.82 12.82 0 0 0 448 203.17v-22.34A12.82 12.82 0 0 0 435.17 168zM432 48H16A16 16 0 0 0 0 64v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm3.17 248H204.83A12.82 12.82 0 0 0 192 308.83v22.34A12.82 12.82 0 0 0 204.83 344h230.34A12.82 12.82 0 0 0 448 331.17v-22.34A12.82 12.82 0 0 0 435.17 296z\"]\n};\nvar faIndustry = {\n prefix: 'far',\n iconName: 'industry',\n icon: [512, 512, [], \"f275\", \"M475.115 163.723L336 252.251v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.251V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V183.971c0-18.917-20.931-30.399-36.885-20.248zM464 432H48V80h64v215.971c0 18.916 20.931 30.399 36.885 20.248L288 227.691v68.28c0 18.915 20.931 30.399 36.885 20.248L464 227.691V432z\"]\n};\nvar faIndustryAlt = {\n prefix: 'far',\n iconName: 'industry-alt',\n icon: [512, 512, [], \"f3b3\", \"M475.115 131.752L336 220.28V152c0-18.916-20.931-30.399-36.885-20.248L160 220.28V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V152c0-18.917-20.931-30.399-36.885-20.248zM464 432H48V80h64v184c0 18.916 20.931 30.399 36.885 20.248L288 195.72V264c0 18.915 20.931 30.399 36.885 20.248L464 195.72V432zm-60-48h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm-128 0h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm-128 0h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\"]\n};\nvar faInfinity = {\n prefix: 'far',\n iconName: 'infinity',\n icon: [640, 512, [], \"f534\", \"M484.4 96C407 96 349.3 164.1 320 208.5 290.7 164.1 233 96 155.6 96 69.8 96 0 167.8 0 256s69.8 160 155.6 160c77.5 0 135.1-68.1 164.4-112.5C349.3 347.9 407 416 484.4 416c85.8 0 155.6-71.8 155.6-160S570.2 96 484.4 96zM155.6 368C96.2 368 48 317.8 48 256s48.2-112 107.6-112c67.8 0 120.5 82.3 137.2 112-16.8 29.7-69.4 112-137.2 112zm328.8 0c-67.8 0-120.5-82.3-137.2-112 16.8-29.7 69.4-112 137.2-112 59.3 0 107.6 50.2 107.6 112s-48.2 112-107.6 112z\"]\n};\nvar faInfo = {\n prefix: 'far',\n iconName: 'info',\n icon: [256, 512, [], \"f129\", \"M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z\"]\n};\nvar faInfoCircle = {\n prefix: 'far',\n iconName: 'info-circle',\n icon: [512, 512, [], \"f05a\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm0-338c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"]\n};\nvar faInfoSquare = {\n prefix: 'far',\n iconName: 'info-square',\n icon: [448, 512, [], \"f30f\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-48 346V86a6 6 0 0 0-6-6H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6zM224 118c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"]\n};\nvar faInhaler = {\n prefix: 'far',\n iconName: 'inhaler',\n icon: [640, 512, [], \"f5f9\", \"M128 400c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96 48c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 48c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm281.19-192.18c-3.21-3.21-7.26-4.7-11.25-4.7-6.87 0-13.56 4.39-15.54 11.95L346.49 256H224c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h270.62c29.09 0 54.53-19.62 61.91-47.76l37.96-144.71c2.88-11-.28-22.71-8.32-30.75L409.19 111.82zM510.1 452.06c-1.84 7.03-8.21 11.94-15.48 11.94H240V304h143.53l9.39-35.82 21.77-82.99 131.04 131.04-35.63 135.83zM616.27 38.02L478.47 1.1c-2.77-.74-5.56-1.1-8.3-1.1-14.13 0-27.06 9.43-30.89 23.72l-15.41 57.52 39.19 39.19 18.45-68.83L588.4 80.24l-34.98 130.55 39.19 39.19L638.9 77.21c4.58-17.07-5.55-34.61-22.63-39.19z\"]\n};\nvar faIntegral = {\n prefix: 'far',\n iconName: 'integral',\n icon: [384, 512, [], \"f667\", \"M340.18 58.73C325.55 41.75 303.85 32 280.67 32c-35.78 0-66.49 22.94-74.62 55.78l-80.66 325.25C122.67 424.02 111.57 432 99 432c-8.3 0-16.31-3.53-21.41-9.44l-35.66-41.45c-5.84-6.79-16.27-7.71-23.29-2.06l-12.7 10.24c-7.01 5.65-7.96 15.74-2.13 22.53l35.67 41.47C54.12 470.27 75.82 480 99 480c35.78 0 66.49-22.94 74.62-55.78l80.66-325.25C257 87.98 268.11 80 280.67 80c8.3 0 16.31 3.53 21.41 9.44l39.99 46.53c5.84 6.79 16.27 7.72 23.29 2.07l12.69-10.22c7.02-5.65 7.97-15.74 2.14-22.53l-40.01-46.56z\"]\n};\nvar faIntersection = {\n prefix: 'far',\n iconName: 'intersection',\n icon: [320, 512, [], \"f668\", \"M48 432V227.22c0-53.45 36.12-102.08 88.48-112.81C208.46 99.67 272 154.56 272 224v208c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V231.14c0-83.51-60.89-158.24-144.01-166.35C80.62 55.47 0 130.5 0 224v208c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16z\"]\n};\nvar faInventory = {\n prefix: 'far',\n iconName: 'inventory',\n icon: [640, 512, [], \"f480\", \"M624 0h-16c-8.8 0-16 7.2-16 16v144h-48V16c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16v144H48V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v496h48v-32h544v32h48V16c0-8.8-7.2-16-16-16zM368 48h128v112H368V48zM144 432V304h120v128H144zm168 0V304h120v128H312zm168 0V272c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16v160H48V208h544v224H480z\"]\n};\nvar faIslandTropical = {\n prefix: 'far',\n iconName: 'island-tropical',\n icon: [448, 512, [], \"f811\", \"M336.53 32a125.17 125.17 0 0 0-65 17.87C249.61 20.28 207.89 0 159.39 0 94.9 0 41.49 35.43 32.21 81.64 30.71 89.09 37.4 96 46.4 96H80l16-32 19 37.91c-6.27 9.6-11.45 19.63-14.53 30.14-8.18 27.9-4.92 59.59 21.76 89.32a8.26 8.26 0 0 0 11.74.35l66.65-68.67c-5.77 76.67-32.31 153.22-51 199H128A128 128 0 0 0 0 482.08C.28 498.93 15.14 512 32 512h320c16.84 0 31.71-13 32-29.88 1-60.75-40.53-111.58-96.62-125.79C308.51 248 297.19 139.47 295.9 128H368l16-32 16 32h35.4a12.38 12.38 0 0 0 12.42-14.36C439.69 67.43 393 32 336.53 32zm-87.47 118.16l.66.11c2.7 35.85 5.82 120.48-10.87 201.73h-37.68c19.52-51 43.18-126.26 47.89-201.84zM334.39 464H49.61A80.14 80.14 0 0 1 128 400h128a80.14 80.14 0 0 1 78.39 64z\"]\n};\nvar faItalic = {\n prefix: 'far',\n iconName: 'italic',\n icon: [320, 512, [], \"f033\", \"M320 48v16a16 16 0 0 1-16 16h-67l-88 352h59a16 16 0 0 1 16 16v16a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h67l88-352h-59a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"]\n};\nvar faJackOLantern = {\n prefix: 'far',\n iconName: 'jack-o-lantern',\n icon: [576, 512, [], \"f30e\", \"M494.59 104.28C455.6 67.15 396.8 62.07 352 89V35.81c0-6.06-3.42-11.6-8.84-14.31l-39.6-19.8c-8.37-4.19-18.54-.32-22.01 8.37l-26.7 66.74c-10.24 2.99-20.02 7.37-28.85 13.23-45.03-28.27-105.03-23.42-144.59 14.25C28.91 154.28 0 220.94 0 292s28.91 137.72 81.41 187.73c37.66 35.8 95.62 42.53 141.09 16.3 2.16-1.23 4.91-1.08 7.41.39C247.06 506.75 266.62 512 288 512s40.94-5.25 58.09-15.58c2.53-1.47 5.28-1.62 7.41-.39 45.44 26.23 103.41 19.52 141.09-16.31C547.09 429.72 576 363.06 576 292s-28.91-137.72-81.41-187.72zm-33.12 340.67c-22.28 21.27-56.88 25.16-83.97 9.52-17.28-10-38.81-9.59-56.16.83-19.44 11.72-47.25 11.72-66.69 0-17.41-10.48-38.94-10.81-56.16-.83-27.16 15.64-61.69 11.75-83.97-9.5C71.62 404.11 48 349.8 48 292s23.62-112.11 66.53-152.97c13.19-12.56 30.72-18.87 48.28-18.87 17.12 0 34.25 5.98 47.44 17.97l16.59 15.09 16.19-15.53c24.75-23.81 65.19-23.81 89.94 0l16.19 15.53 16.59-15.09c26.72-24.25 69.69-23.89 95.72.91C504.38 179.89 528 234.2 528 292s-23.62 112.11-66.53 152.95zM249.15 272c2.85 0 4.86-1.11 6-3.33s1.14-4.44 0-6.67L214 195.33c-1.71-2.23-3.86-3.33-6.43-3.33s-4.43 1.11-5.57 3.33L160.85 262c-1.14 2.23-1.14 4.44 0 6.67s3.15 3.33 6 3.33h82.3zm160 0c2.85 0 4.86-1.11 6-3.33s1.14-4.44 0-6.67L374 195.33c-1.71-2.23-3.86-3.33-6.43-3.33s-4.43 1.11-5.57 3.33L320.85 262c-1.14 2.23-1.14 4.44 0 6.67s3.15 3.33 6 3.33h82.3zm37.4 18.27c-45.82 27.05-100.16 42.79-158.54 42.79h-.02v14.26c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-18.18c-40.08-6.1-77.53-19.4-110.47-38.84-12.68-7.48-28.11 4.78-23.24 18.67 6.02 17.15 12.92 28.87 19.04 37.46 9.21 12.72 21.04 23.43 34.75 32.51.21-8.65 7.22-15.63 15.92-15.63h16c8.84 0 16 7.16 16 16v21.49c23.45 6.86 50.17 10.51 80.02 10.51 29.83 0 56.52-3.64 79.98-10.52v-21.48c0-8.84 7.16-16 16-16h16c8.68 0 15.66 6.93 15.91 15.55 13.85-9.19 25.81-20.04 35.19-32.99 5.95-8.35 12.75-19.93 18.7-36.96 4.86-13.88-10.57-26.12-23.24-18.64z\"]\n};\nvar faJedi = {\n prefix: 'far',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M560,241.23438C560,390.53125,437.94015,512,287.91215,512q-6.37486,0-12.84347-.29688C136.22793,505.34375,22.4804,392.125,16.10554,253.95312c-.28125-6.29687.18749-12.48437.31249-18.71874a15.86953,15.86953,0,0,1,.125-7.75,269.32041,269.32041,0,0,1,113.90378-207,23.736,23.736,0,0,1,13.7497-4.42188,24.13055,24.13055,0,0,1,19.93707,10.64062A23.88407,23.88407,0,0,1,166.53978,49a126.06575,126.06575,0,0,0-8.96856,46.65625c0,41.10937,19.18709,78.90625,52.62386,103.67187a24.03259,24.03259,0,0,1,1.81246,37.375c-23.99948,21.67188-37.21794,51.03126-37.21794,82.6875,0,51.90626,35.718,95.26563,83.87318,108.17188l2.2187-57.26562-20.6558,14.03124a12.34237,12.34237,0,0,1-14.99967-1.17187,12.00668,12.00668,0,0,1-2.06246-14.875l17.28088-28.9375-36.593-7.57813a12.00026,12.00026,0,0,1,0-23.5l36.593-7.59374L223.16355,271.75a11.99745,11.99745,0,0,1,17.06213-16.0625l24.46822,16.60938L275.91241,11.51562a12.00927,12.00927,0,0,1,23.99948.03126l11.2185,260.71874,24.46822-16.60937a12.08736,12.08736,0,0,1,14.99968,1.1875,13.74639,13.74639,0,0,1,3.74992,8.70313,14.18111,14.18111,0,0,1-1.68747,6.15624l-17.24962,28.9375,36.56171,7.59376a12.00026,12.00026,0,0,1,0,23.5l-36.56171,7.57812,17.24962,28.92188a12.001,12.001,0,0,1-2.06245,14.875,12.28459,12.28459,0,0,1-14.99968,1.1875l-20.6558-14.03126,2.2187,57.57813c40.74912-10.51563,73.15467-43.89063,81.52949-85.375A111.53351,111.53351,0,0,0,363.81675,236.6875a24.04957,24.04957,0,0,1,1.81246-37.39062C399.066,174.53125,418.22182,136.75,418.22182,95.64062a126.30747,126.30747,0,0,0-8.96855-46.70312,23.934,23.934,0,0,1,36.03047-28.53125A270.72551,270.72551,0,0,1,559.125,226.84375a15.84287,15.84287,0,0,1,.46874,7.64063C559.65626,236.75,560,238.95312,560,241.23438Zm-452.1152,57.3125a15.98428,15.98428,0,0,1-22.562,1.51562L68.6044,285.4375c12.781,62.125,51.90513,115.4375,105.279,147.20312a158.932,158.932,0,0,1-12.406-212.03124,174.82519,174.82519,0,0,1-51.62388-114.625c-14.156,18.39062-24.812,39.0625-32.59305,60.82812l29.9056,29.875a15.99812,15.99812,0,1,1-22.62451,22.625L67.85442,202.65625a220.57569,220.57569,0,0,0-3.24993,36.75l41.78034,36.54687A15.992,15.992,0,0,1,107.8848,298.54688ZM507.00115,285.625l-16.49964,14.4375a16.00682,16.00682,0,0,1-21.062-24.10938l42.34284-37.03124a219.80562,219.80562,0,0,0-3.46868-36.625L491.28274,219.3125a15.9926,15.9926,0,0,1-22.62451-22.60938l30.06185-30.0625A223.23012,223.23012,0,0,0,465.93954,106.125a174.70091,174.70091,0,0,1-51.59263,114.45312c29.24936,36.70313,40.90536,84.14063,31.40557,131.375a159.13826,159.13826,0,0,1-43.87405,81.03126A223.24987,223.24987,0,0,0,507.00115,285.625Z\"]\n};\nvar faJoint = {\n prefix: 'far',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M476.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h32c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C479.85 125.02 464 99.34 464 70.31V8c0-4.42-3.58-8-8-8h-32c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zm76.94-94.01c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-32c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C566.79 153.04 592 199.54 592 249.69V280c0 4.42 3.58 8 8 8h32c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM616 352H278.94C180.3 352 83.65 379.72 0 432c83.65 52.28 180.3 80 278.94 80H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24zM278.94 464c-59.16 0-117.42-10.93-172.06-32 49.28-19.01 101.56-29.28 154.74-31.2l54.19 63.2h-36.87zm100.11 0l-54.88-64h96.77l54.88 64h-96.77zM592 464h-52.95l-54.88-64H592v64z\"]\n};\nvar faJournalWhills = {\n prefix: 'far',\n iconName: 'journal-whills',\n icon: [448, 512, [], \"f66a\", \"M435.09375,399.70312c-4.1875,13-4.1875,51.59376,0,64.59376A16.0064,16.0064,0,0,1,448,480v16a16.0612,16.0612,0,0,1-16,16H80A79.964,79.964,0,0,1,0,432V80A79.964,79.964,0,0,1,80,0H432a16.0612,16.0612,0,0,1,16,16V384A15.9909,15.9909,0,0,1,435.09375,399.70312ZM400,48H80A31.9517,31.9517,0,0,0,48,80V358.70312A79.33472,79.33472,0,0,1,80,352H400Zm-6,352H80a32,32,0,0,0,0,64H394C391.28125,446.70312,391.28125,417.29688,394,400ZM116.125,201.46875c0-.34375-.125-.6875-.125-1.04687a113.9228,113.9228,0,0,1,4.65625-31.9375l17.6875,17.6875a7.99915,7.99915,0,0,0,11.3125-11.3125L126.9375,152.15625a122.208,122.208,0,0,1,52.875-55.6875,4.02047,4.02047,0,0,1,4.84376.79687,4.06586,4.06586,0,0,1,.4375,4.89063,60.044,60.044,0,0,0-9.65626,32.25c0,14.28125,5.18751,27.79687,15,39.10937a4.01624,4.01624,0,0,1,.25,4.92188A59.86683,59.86683,0,0,0,227.375,271.125H228V243.3125l-6.34375,6.34375a7.99915,7.99915,0,0,1-11.3125-11.3125L220.68749,228H208a8,8,0,0,1,0-16h12.68749l-10.34374-10.34375a7.99915,7.99915,0,0,1,11.3125-11.3125L228,196.6875V100a12,12,0,0,1,24,0v96.6875l6.34375-6.34375a7.99915,7.99915,0,0,1,11.3125,11.3125L259.31249,212H272a8,8,0,0,1,0,16H259.31249l10.34376,10.35938a7.99915,7.99915,0,1,1-11.3125,11.3125L252,243.32812v27.82813h.65625a59.88671,59.88671,0,0,0,36.65624-92.70313,3.99355,3.99355,0,0,1,.25-4.90624c9.81251-11.3125,15-24.84376,15-39.125a60.044,60.044,0,0,0-9.65624-32.25,4.78239,4.78239,0,0,1-.625-2.15626,4.60792,4.60792,0,0,1,1.0625-2.71874,3.98087,3.98087,0,0,1,4.84374-.8125,122.44378,122.44378,0,0,1,52.875,55.6875L330.34375,174.875a7.99915,7.99915,0,0,0,11.3125,11.3125L359.34375,168.5A112.796,112.796,0,0,1,364,200.4375c0,.35938-.125.6875-.125,1.04688l-33.15625,29.03124A9.11316,9.11316,0,0,0,328,236.53125a9.24745,9.24745,0,0,0,1.96875,5.26563,8.03814,8.03814,0,0,0,11.3125.75l20.03124-17.53126C349.5,279.1875,299.625,320,240,320s-109.53125-40.8125-121.3125-94.96875l20.03125,17.51563a8.005,8.005,0,1,0,10.5625-12.03126Z\"]\n};\nvar faJoystick = {\n prefix: 'far',\n iconName: 'joystick',\n icon: [448, 512, [], \"f8c5\", \"M416 352H248V221.28a112 112 0 1 0-48 0V352h-72v-16a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v16H32a32 32 0 0 0-32 32v96a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32v-96a32 32 0 0 0-32-32zM160 112a64 64 0 1 1 64 64 64.07 64.07 0 0 1-64-64zm240 352H48v-64h352z\"]\n};\nvar faJug = {\n prefix: 'far',\n iconName: 'jug',\n icon: [448, 512, [], \"f8c6\", \"M304 288H144a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h160a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm144-120a72 72 0 0 0-72-72 70.93 70.93 0 0 0-54.58 25.77l-10.41-13a32 32 0 0 1-7-20V48a16 16 0 0 0 16-16V16A16 16 0 0 0 304 0H144a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16v40.78a32 32 0 0 1-7 20l-76.95 96.16a128 128 0 0 0-28 80V448a64 64 0 0 0 64 64H352a64 64 0 0 0 64-64V284.9a127.59 127.59 0 0 0-11.1-51A72 72 0 0 0 448 168zm-80 280a16 16 0 0 1-16 16H96a16 16 0 0 1-16-16V284.9a80.32 80.32 0 0 1 17.53-50l76.94-96.17a80.31 80.31 0 0 0 17.53-50V48h64v40.78a80.31 80.31 0 0 0 17.53 50l76.94 96.17a80.34 80.34 0 0 1 17.53 50zm9.38-256.28l-24.09-30.1C356.14 151.54 365 144 376 144a23.88 23.88 0 0 1 1.38 47.72z\"]\n};\nvar faKaaba = {\n prefix: 'far',\n iconName: 'kaaba',\n icon: [576, 512, [], \"f66b\", \"M554.12 83.51L318.36 4.93C308.51 1.64 298.25 0 288 0s-20.51 1.64-30.36 4.93L21.88 83.51A32.006 32.006 0 0 0 0 113.87v310.8c0 15 10.42 27.98 25.06 31.24l242.12 53.8c6.86 1.53 13.84 2.29 20.83 2.29s13.97-.76 20.83-2.29l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24v-310.8c-.02-13.77-8.83-26-21.9-30.36zM528 248.87l-69.89-19.06c-5.09-1.39-10.11 2.44-10.11 7.72v16.58c0 3.61 2.41 6.77 5.89 7.72L528 282.04v129.8l-229.59 51.02c-4.1.91-11.66 2.03-20.83 0L48 411.84v-129.8l74.11-20.21a7.997 7.997 0 0 0 5.89-7.72v-16.58c0-5.28-5.02-9.11-10.11-7.72L48 248.87v-34.63l228.56-68.55c7.41-2.28 15.38-2.25 22.91 0L528 214.24v34.63zm0-84.74L313.31 99.72c-16.56-4.97-34.03-5-50.59 0L48 164.13V125.4l224.82-74.94c5.68-1.9 17.04-4.44 30.36 0L528 125.4v38.73zm-266.11 26.41l-96 26.18a7.997 7.997 0 0 0-5.89 7.72v16.58c0 5.28 5.02 9.11 10.11 7.72l96-26.18a7.997 7.997 0 0 0 5.89-7.72v-16.57c0-5.29-5.02-9.12-10.11-7.73zm48 32.01l96 26.18c5.09 1.39 10.11-2.44 10.11-7.72v-16.58c0-3.61-2.41-6.77-5.89-7.72l-96-26.18c-5.09-1.39-10.11 2.44-10.11 7.72v16.57a8 8 0 0 0 5.89 7.73z\"]\n};\nvar faKazoo = {\n prefix: 'far',\n iconName: 'kazoo',\n icon: [640, 512, [], \"f8c7\", \"M608 128H480.68c-19.53-9.89-41.29-16-64.68-16s-45.15 6.11-64.68 16H241.93a128.3 128.3 0 0 0-35.17 4.92L23.21 185.37A32 32 0 0 0 0 216.14v79.72a32 32 0 0 0 23.21 30.77l183.55 52.44a127.93 127.93 0 0 0 35.17 4.93h109.39c19.53 9.89 41.29 16 64.68 16s45.15-6.11 64.68-16H608a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32zM296.32 336h-54.39a80.08 80.08 0 0 1-22-3.08L48 283.79v-55.58l172-49.13a80.08 80.08 0 0 1 22-3.08h54.39a143.74 143.74 0 0 0 0 160zM416 352a96 96 0 1 1 96-96 96.1 96.1 0 0 1-96 96zm176-16h-56.32a143.74 143.74 0 0 0 0-160H592zM466.91 216.4l-11.31-11.31a8 8 0 0 0-11.32 0L416 233.37l-28.28-28.28a8 8 0 0 0-11.32 0l-11.31 11.31a8 8 0 0 0 0 11.31L393.37 256l-28.28 28.28a8 8 0 0 0 0 11.32l11.31 11.31a8 8 0 0 0 11.32 0L416 278.63l28.28 28.28a8 8 0 0 0 11.32 0l11.31-11.31a8 8 0 0 0 0-11.32L438.63 256l28.28-28.29a8 8 0 0 0 0-11.31z\"]\n};\nvar faKerning = {\n prefix: 'far',\n iconName: 'kerning',\n icon: [640, 512, [], \"f86f\", \"M416.54 0h-17A8 8 0 0 0 392 5.32l-176.28 496a8 8 0 0 0 7.55 10.68h17a8 8 0 0 0 7.54-5.32l176.29-496A8 8 0 0 0 416.54 0zm206.25 393.94l-103.91-288A16 16 0 0 0 504.07 96h-48.14a16 16 0 0 0-14.81 9.94l-103.91 288A16 16 0 0 0 352 416h25.92a16 16 0 0 0 14.81-9.94l19.1-54.06h136.34l19.08 54.06a16 16 0 0 0 14.81 9.94H608a16 16 0 0 0 14.79-22.06zM434.42 288L480 158.84 525.59 288zM288 96h-25.94a16 16 0 0 0-14.81 9.94L160 353.16 72.75 105.94A16 16 0 0 0 57.94 96H32a16 16 0 0 0-14.81 22.06l103.91 288a16 16 0 0 0 14.83 9.94h48.14a16 16 0 0 0 14.81-9.94l103.91-288A16 16 0 0 0 288 96z\"]\n};\nvar faKey = {\n prefix: 'far',\n iconName: 'key',\n icon: [512, 512, [], \"f084\", \"M320 48c79.529 0 144 64.471 144 144s-64.471 144-144 144c-18.968 0-37.076-3.675-53.66-10.339L224 368h-32v48h-48v48H48v-96l134.177-134.177A143.96 143.96 0 0 1 176 192c0-79.529 64.471-144 144-144m0-48C213.965 0 128 85.954 128 192c0 8.832.602 17.623 1.799 26.318L7.029 341.088A24.005 24.005 0 0 0 0 358.059V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24v-24h24c13.255 0 24-10.745 24-24v-20l40.049-40.167C293.106 382.604 306.461 384 320 384c106.035 0 192-85.954 192-192C512 85.965 426.046 0 320 0zm0 144c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z\"]\n};\nvar faKeySkeleton = {\n prefix: 'far',\n iconName: 'key-skeleton',\n icon: [512, 512, [], \"f6f3\", \"M313.5 153.27c-12.49 12.49-12.49 32.74 0 45.23 12.49 12.49 32.74 12.49 45.23 0 12.49-12.49 12.49-32.74 0-45.23-12.49-12.49-32.74-12.49-45.23 0zm63.96-63.96c-12.49 12.49-12.49 32.74 0 45.23 12.49 12.49 32.74 12.49 45.23 0 12.49-12.49 12.49-32.74 0-45.23-12.49-12.49-32.74-12.49-45.23 0zM448.04 0H288.15c-35.32 0-63.96 28.64-63.96 63.96v159.89c0 8.86 1.81 17.3 5.07 24.97L4.68 473.4c-6.24 6.24-6.24 16.37 0 22.61l11.3 11.3c6.24 6.24 16.37 6.24 22.61 0l38.79-38.79 38.31 38.31c6.24 6.24 16.37 6.24 22.61 0l43.13-43.13c6.24-6.24 6.24-16.37 0-22.61l-38.31-38.31 30.86-30.86 39.12 39.12c6.24 6.25 16.37 6.25 22.61 0l15.76-15.76c6.24-6.24 6.24-16.37 0-22.61l-39.12-39.12 50.81-50.81a63.69 63.69 0 0 0 24.97 5.07h159.89c35.32 0 63.96-28.64 63.96-63.96V63.96C512 28.64 483.37 0 448.04 0zm15.99 223.85c0 8.82-7.17 15.99-15.99 15.99H288.15c-8.82 0-15.99-7.17-15.99-15.99V63.96c0-8.82 7.17-15.99 15.99-15.99h159.89c8.82 0 15.99 7.17 15.99 15.99v159.89z\"]\n};\nvar faKeyboard = {\n prefix: 'far',\n iconName: 'keyboard',\n icon: [576, 512, [], \"f11c\", \"M528 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm8 336c0 4.411-3.589 8-8 8H48c-4.411 0-8-3.589-8-8V112c0-4.411 3.589-8 8-8h480c4.411 0 8 3.589 8 8v288zM170 270v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-336 82v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm384 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zM122 188v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-98 158v-16c0-6.627-5.373-12-12-12H180c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h216c6.627 0 12-5.373 12-12z\"]\n};\nvar faKeynote = {\n prefix: 'far',\n iconName: 'keynote',\n icon: [512, 512, [], \"f66c\", \"M505.24 274.49l-48.4-96.8A32 32 0 0 0 428.22 160H144c0-33.85 21.22-62.7 52.02-74.36C204.92 110.28 228.29 128 256 128h32c35.35 0 64-28.65 64-64S323.35 0 288 0h-32c-24.63 0-45.77 14.07-56.47 34.47C140.63 45.94 96 97.8 96 160H83.78a32 32 0 0 0-28.62 17.69l-48.4 96.8A63.874 63.874 0 0 0 0 303.11V352c0 17.67 14.33 32 32 32h200v80h-88c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-88v-80h200c17.67 0 32-14.33 32-32v-48.89c0-9.94-2.31-19.74-6.76-28.62zM256 48h32c8.82 0 16 7.18 16 16s-7.18 16-16 16h-32c-8.82 0-16-7.18-16-16s7.18-16 16-16zm208 288H48v-32.89c0-2.47.58-4.95 1.69-7.15L93.67 208h324.67l43.98 87.95c1.11 2.21 1.69 4.69 1.69 7.16V336z\"]\n};\nvar faKhanda = {\n prefix: 'far',\n iconName: 'khanda',\n icon: [512, 512, [], \"f66d\", \"M415.81 66a16.095 16.095 0 0 0-7.76-1.99c-4.28 0-8.51 1.71-11.6 5.01a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.25 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-3-3.21-7.34-4.8-11.69-4.8-2.89 0-5.8.7-8.33 2.1C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c3.12 3.65 7.6 5.59 12.15 5.59 2.55 0 5.13-.61 7.5-1.88l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c2.38 1.26 4.95 1.88 7.5 1.88 4.55 0 9.03-1.94 12.15-5.59l52.51-61.31c18.86-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zM119.53 359.7l-39.29-45.88c-10.22-11.93-17.7-23.84-22.25-35.4-8.06-20.5-11.11-41.58-9.63-61.89 10.7 53.27 41.94 100.63 87.51 131.05l2.79 1.95-19.13 10.17zM327.81 176c0 25.53-13.44 47.86-33.52 60.65l-8.96-19.67c-8.75-24.52-8.75-51.04 0-75.56l11.25-24.68c18.83 13 31.23 34.69 31.23 59.26zm-143.91 0c0-24.57 12.4-46.26 31.23-59.26l11.25 24.68c8.75 24.52 8.75 51.03 0 75.56l-8.96 19.67c-20.08-12.79-33.52-35.12-33.52-60.65zm275.64 85.5c-4.88 18.91-15.39 37.87-31.23 56.37l-35.84 41.84-19.15-10.19 1.78-1.24c46.36-30.96 77.82-78.56 88.55-132.04 1.12 14.77-.18 30.03-4.11 45.26z\"]\n};\nvar faKidneys = {\n prefix: 'far',\n iconName: 'kidneys',\n icon: [640, 512, [], \"f5fb\", \"M273.01 217.61l-38.77-20.36c2.87-3.38 5.84-6.25 8.42-8.47 39.91-34.35 55.32-103 8.94-153.13-40.67-43.95-110.76-47.78-156.24-8.6C14.53 96.69-18.2 199.6 9.9 295.58c24.29 83.83 92.05 88.38 109.62 88.38 22.23 0 70.65-8.2 97.65-56.45 13.83-24.74 17.11-53.24 9.41-80.25l24.94 13.3c2.72 1.38 4.44 4.09 4.44 7.16l.03 228.28c0 8.84 7.17 16 16 16H288c8.84 0 16-7.17 16-16l-.02-228.28c0-21.33-11.84-40.52-30.97-50.11zm-61.68-65.22c-11.34 9.76-49.83 42.31-31.01 107.46 11.53 39.19-18.57 66.98-43.39 73.73-33.6 9.13-68.93-10.38-78.08-41.54-27.18-93.78 3.57-173.24 67.83-228.63 27.3-23.5 67.34-19.29 89.65 4.83 22.73 24.54 20.71 61.97-5 84.15zM544.64 27.05c-45.48-39.18-115.56-35.35-156.23 8.6-46.38 50.12-30.97 118.78 8.94 153.13a79.29 79.29 0 0 1 8.42 8.47L367 217.61c-19.13 9.6-30.98 28.79-30.98 50.11L336 496c0 8.84 7.17 16 16 16h16.01c8.84 0 16-7.17 16-16l.02-228.28c0-3.06 1.72-5.78 4.44-7.16l24.94-13.3c-7.7 27.01-4.42 55.51 9.41 80.25 27 48.25 75.42 56.45 97.65 56.45 17.58 0 85.33-4.55 109.62-88.38 28.11-95.98-4.62-198.89-85.45-268.53zm36.51 265c-9.16 31.16-44.48 50.67-78.08 41.54-24.82-6.75-54.92-34.54-43.39-73.73 18.82-65.15-19.67-97.7-31.01-107.46-25.71-22.18-27.73-59.61-5-84.14 22.31-24.12 62.35-28.33 89.65-4.83 64.26 55.38 95.01 134.83 67.83 228.62z\"]\n};\nvar faKiss = {\n prefix: 'far',\n iconName: 'kiss',\n icon: [496, 512, [], \"f596\", \"M168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm136 132c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faKissBeam = {\n prefix: 'far',\n iconName: 'kiss-beam',\n icon: [496, 512, [], \"f597\", \"M168 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm56-148c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zm24-156c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4z\"]\n};\nvar faKissWinkHeart = {\n prefix: 'far',\n iconName: 'kiss-wink-heart',\n icon: [504, 512, [], \"f598\", \"M304 308.5c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36 21.7-9.1 35.1-23.4 35.1-36.4zm70.5-83.5l9.5 8.5c3.8 3.3 9.3 4 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 5.8 3.1 11.2.7 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0zM136 208.5c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm365.1 194c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zM334 436.3c-26.1 12.5-55.2 19.7-86 19.7-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200c0 22.1-3.7 43.3-10.4 63.2 9 6.4 17 14.2 22.6 23.9 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-2.5-7.3 4.3 17.2-13.4-46.8z\"]\n};\nvar faKite = {\n prefix: 'far',\n iconName: 'kite',\n icon: [640, 512, [], \"f6f4\", \"M608 0H345.5c-14.9 0-27.8 10.3-31.2 24.8 0 0-79.2 344.6-79.3 346.3l-88.3 88.3c-9.8 9.8-26.6 2.9-26.6-11V319.3l47.1 30.1c10.6 6.8 24.9-.5 24.9-12.8v-65.3c0-12.2-14.2-19.5-24.9-12.8L120 288.7V224c0-48.6-39.4-88-88-88H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h16c22.1 0 40 17.9 40 40v64.7l-47.1-30.1c-10.7-6.8-24.9.5-24.9 12.7v65.3c0 12.2 14.2 19.5 24.9 12.8L72 319.3v124c0 16.5 5 33 15.7 45.7 26.5 31.5 69 28.3 92.9 4.3l88.3-88.3c1.7-.1 346.3-79.3 346.3-79.3 14.5-3.3 24.8-16.3 24.8-31.2V32c0-17.7-14.3-32-32-32zm-16 281.8L288 352l187-187L358.2 48H592L475.1 164.9z\"]\n};\nvar faKiwiBird = {\n prefix: 'far',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M575.83 217.98C572.66 157.41 518.3 112 457.65 112h-9.37c-52.83 0-104.26-16.25-147.74-46.24C269.69 44.48 232.32 32 191.99 32 80.36 32-.05 121.84 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.37 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.83 0 16-7.16 16-16v-59.46c14.24-5.06 27.89-11.37 40.34-19.48C342.08 355.25 393.88 336 448.48 336h15.51c2.59 0 5-.61 7.55-.79l74.42 136.44c2.84 5.23 8.28 8.34 14.03 8.34 8.41 0 16-6.77 16-16 0-255.95.07-241.71-.16-246.01zM96.33 390.21c.01 0 .01.01.02.01-.01.05-.01.04-.02-.01zM463.99 288h-15.51c-60.45 0-120.46 19.12-178.35 56.84-23.25 15.15-50.27 23.16-78.14 23.16-77.75 0-144.18-62.88-144.03-144 .15-83.71 66.68-144 144.03-144 29.21 0 57.32 8.74 81.29 25.27 51.92 35.8 112.43 54.73 175 54.73h9.37c36.99 0 68.5 27.13 70.25 60.49 1.95 37.26-27.61 67.51-63.91 67.51zm80 113.25l-39.87-73.08c15.12-5.83 28.74-14.6 39.87-25.98v99.06zm-80-201.25c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24z\"]\n};\nvar faKnifeKitchen = {\n prefix: 'far',\n iconName: 'knife-kitchen',\n icon: [576, 512, [], \"f6f5\", \"M566.28 88.57c12.96-12.5 12.96-32.76 0-45.25L531.07 9.37c-12.96-12.5-33.98-12.5-46.94 0L319.99 160 4.76 464.14c-8.25 7.96-5.38 22.16 5.53 25.69C53.72 503.86 102.37 512 150.51 512c75.83 0 150.42-20.19 201.49-69.35l104.4-100.04c12.95-12.41 13.17-33.05.49-45.73L448 288v-80L566.28 88.57zM496 64c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zM318.71 408.07C281.24 444.14 221.5 464 150.51 464c-23.16 0-46.79-2.1-70.07-6.17L319.4 227.28l91.99 91.99-92.68 88.8zM432 160c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.17 16-16 16z\"]\n};\nvar faLambda = {\n prefix: 'far',\n iconName: 'lambda',\n icon: [448, 512, [], \"f66e\", \"M440 432h-72.91L183.81 50.15A32.01 32.01 0 0 0 154.96 32H8c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8h136.91l9.08 18.92L1.31 457.7C-3.21 468.25 4.53 480 16.02 480h17.41c6.4 0 12.18-3.81 14.71-9.7l134.01-312.7 146.04 304.25A31.998 31.998 0 0 0 357.04 480H440c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8z\"]\n};\nvar faLamp = {\n prefix: 'far',\n iconName: 'lamp',\n icon: [448, 512, [], \"f4ca\", \"M445.5 237.8L368 21.8C363.3 8.6 352.4 0 340.4 0H120.6c-11.4 0-21.8 7.7-27 19.9l-90.4 216c-10 23.9 4.6 52.1 27 52.1h89.2C94.7 323.1 80 366.5 80 401.6c0 32.7 12.8 64.2 36 88.7 13 13.8 31.8 21.7 51.5 21.7h113c19.7 0 38.5-7.9 51.5-21.7 23.2-24.5 36-56.1 36-88.7 0-35.1-14.7-78.5-39.4-113.6h89.2c21.7 0 36.3-26.4 27.7-50.2zM320 401.6c0 21.3-8.7 40.7-22.9 55.7-4.3 4.5-10.4 6.7-16.6 6.7h-113c-6.2 0-12.4-2.2-16.6-6.7-14.2-15-22.9-34.4-22.9-55.7 0-34.7 22.8-87.4 55.6-113.6h80.7c32.9 26.2 55.7 78.9 55.7 113.6zM53.5 240l80.4-192h192.6l68.9 192H53.5z\"]\n};\nvar faLampDesk = {\n prefix: 'far',\n iconName: 'lamp-desk',\n icon: [512, 512, [], \"e014\", \"M392.65,278.4a56,56,0,0,0,77.75-77.76ZM509.3,85.76A35.08,35.08,0,0,0,476.76,64h-85L355.88,28.12A95.68,95.68,0,0,0,202.76,139.3L103,239a24,24,0,0,0-6.09,23.56L154.48,464H48C26.69,464,6.78,477.89.52,497.12-1.89,504.53,4.41,512,12.19,512H371.81c7.79,0,14.08-7.47,11.67-14.88C377.22,477.89,357.32,464,336,464H204.38L147,263l86.13-86.13L256,199.76v85a35.23,35.23,0,0,0,60.14,24.9L501.63,124.15A35.06,35.06,0,0,0,509.3,85.76ZM304,253.92v-74l-49.93-49.94a48,48,0,0,1,67.87-67.88L371.88,112h74Z\"]\n};\nvar faLampFloor = {\n prefix: 'far',\n iconName: 'lamp-floor',\n icon: [384, 512, [], \"e015\", \"M382,212.76l-71.13-192A31.63,31.63,0,0,0,281.23,0H102.77a31.64,31.64,0,0,0-29.6,20.76L2,212.76C-5.71,233.68,9.57,256,31.64,256H168.29V464H113c-21.06,0-40.72,13.89-46.91,33.12C63.68,504.53,69.9,512,77.59,512H306.4c7.7,0,13.92-7.47,11.54-14.88C311.75,477.89,292.09,464,271,464H215.71V256H352.36C374.43,256,389.71,233.68,382,212.76ZM54.45,208,113.73,48H270.27l59.28,160Z\"]\n};\nvar faLandmark = {\n prefix: 'far',\n iconName: 'landmark',\n icon: [576, 512, [], \"f66f\", \"M48 160h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98L299.24 2.04C295.62.68 291.81 0 288 0s-7.62.68-11.24 2.04L42.38 92.11A16.001 16.001 0 0 0 32 107.09V144c0 8.84 7.16 16 16 16zM288 49.14L451.58 112H124.42L288 49.14zM560 464h-16v-64c0-17.67-16.37-32-36.57-32H480V192h-48v176h-64V192h-48v176h-64V192h-48v176h-64V192H96v176H68.57C48.37 368 32 382.33 32 400v64H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-64 0H80v-48h416v48z\"]\n};\nvar faLandmarkAlt = {\n prefix: 'far',\n iconName: 'landmark-alt',\n icon: [512, 512, [], \"f752\", \"M496 464h-16v-80c0-8.8-7.2-16-16-16h-16V256h16c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16h-16.8C439.7 117.6 369.3 44.9 280 33.7V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v17.7C142.7 44.9 72.3 117.6 64.8 208H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h16v112H48c-8.8 0-16 7.2-16 16v80H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM256 80c73.9 0 134.3 56.2 142.4 128H113.6c8.1-71.8 68.5-128 142.4-128zm144 176v112h-64V256h64zm-112 0v112h-64V256h64zm-176 0h64v112h-64V256zm320 208H80v-48h352v48z\"]\n};\nvar faLanguage = {\n prefix: 'far',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M160.3 203.8h-.5s-4.3 20.9-7.8 33l-11 37.3h37.9l-10.7-37.3c-3.6-12.1-7.9-33-7.9-33zM616 96H24c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h592c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zM233.2 352h-22.6a12 12 0 0 1-11.5-8.6l-9.3-31.7h-59.9l-9.1 31.6c-1.5 5.1-6.2 8.7-11.5 8.7H86.8c-8.2 0-14-8.1-11.4-15.9l57.1-168c1.7-4.9 6.2-8.1 11.4-8.1h32.2c5.1 0 9.7 3.3 11.4 8.1l57.1 168c2.6 7.8-3.2 15.9-11.4 15.9zM600 376H320V136h280zM372 228h110.8c-6.3 12.8-15.1 25.9-25.9 38.5-6.6-7.8-12.8-15.8-18.3-24-3.5-5.3-10.6-6.9-16.1-3.6l-13.7 8.2c-5.9 3.5-7.6 11.3-3.8 17 6.5 9.7 14.4 20.1 23.5 30.6-9 7.7-18.6 14.8-28.7 21.2-5.4 3.4-7.1 10.5-3.9 16l7.9 13.9c3.4 5.9 11 7.9 16.8 4.2 12.5-7.9 24.6-17 36-26.8 10.7 9.6 22.3 18.6 34.6 26.6 5.8 3.7 13.6 1.9 17-4.1l8-13.9c3.1-5.5 1.5-12.5-3.8-16-9.2-6-18.4-13.1-27.2-20.9 1.5-1.7 2.9-3.3 4.3-5 17.1-20.6 29.6-41.7 36.8-62H540c6.6 0 12-5.4 12-12v-16c0-6.6-5.4-12-12-12h-64v-16c0-6.6-5.4-12-12-12h-16c-6.6 0-12 5.4-12 12v16h-64c-6.6 0-12 5.4-12 12v16c0 6.7 5.4 12.1 12 12.1z\"]\n};\nvar faLaptop = {\n prefix: 'far',\n iconName: 'laptop',\n icon: [640, 512, [], \"f109\", \"M624 352h-48V64c0-35.2-28.8-64-64-64H128C92.8 0 64 28.8 64 64v288H16c-8.8 0-16 7.2-16 16v48c0 52.8 43.2 96 96 96h448c52.8 0 96-43.2 96-96v-48c0-8.8-7.2-16-16-16zM112 64c0-8.67 7.33-16 16-16h384c8.67 0 16 7.33 16 16v288H112V64zm480 352c0 26.47-21.53 48-48 48H96c-26.47 0-48-21.53-48-48v-16h180.9c5.57 9.39 15.38 16 27.1 16h128c11.72 0 21.52-6.61 27.1-16H592v16z\"]\n};\nvar faLaptopCode = {\n prefix: 'far',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M624 352h-48V64c0-35.2-28.8-64-64-64H128C92.8 0 64 28.8 64 64v288H16c-8.8 0-16 7.2-16 16v48c0 52.8 43.2 96 96 96h448c52.8 0 96-43.2 96-96v-48c0-8.8-7.2-16-16-16zM112 64c0-8.67 7.33-16 16-16h384c8.67 0 16 7.33 16 16v288H112V64zm480 352c0 26.47-21.53 48-48 48H96c-26.47 0-48-21.53-48-48v-16h180.9c5.57 9.39 15.38 16 27.1 16h128c11.72 0 21.52-6.61 27.1-16H592v16zM277.66 261.65l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.34 58.34c6.25 6.25 16.39 6.25 22.64 0zm73.38-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63z\"]\n};\nvar faLaptopHouse = {\n prefix: 'far',\n iconName: 'laptop-house',\n icon: [640, 512, [], \"e066\", \"M629.33,448H592V288c0-17.67-12.9-32-28.8-32H332.79c-15.9,0-28.8,14.33-28.8,32V448H266.66A10.67,10.67,0,0,0,256,458.67v10.66A42.83,42.83,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544ZM272,368H112V168.06L240,52,368,168.06V224H474.7l1.28-1.45a18.58,18.58,0,0,0,4-10.61A18.21,18.21,0,0,0,474.65,200L416,146.84V48a16,16,0,0,0-16-16H384a16,16,0,0,0-16,16v55.34L264.08,9.12C258.4,4.09,247.6,0,240,0s-18.38,4.09-24.08,9.12L5.39,200A18.21,18.21,0,0,0,0,212a18.47,18.47,0,0,0,4,10.61l10.62,12a18.19,18.19,0,0,0,12,5.37,18.48,18.48,0,0,0,10.63-4L64,211.61V376a40,40,0,0,0,40,40H272ZM208,192a16.07,16.07,0,0,0-16,16v64a16,16,0,0,0,16,16h64a65.38,65.38,0,0,1,16-42.94V208a16.07,16.07,0,0,0-16-16Z\"]\n};\nvar faLaptopMedical = {\n prefix: 'far',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M624 352h-48V64a64.19 64.19 0 0 0-64-64H128a64.19 64.19 0 0 0-64 64v288H16a16 16 0 0 0-16 16v48c0 52.8 43.2 96 96 96h448c52.8 0 96-43.2 96-96v-48a16 16 0 0 0-16-16zM112 64a16.22 16.22 0 0 1 16-16h384a16.22 16.22 0 0 1 16 16v288H112zm480 352a48.05 48.05 0 0 1-48 48H96a48.05 48.05 0 0 1-48-48v-16h180.9c5.57 9.39 15.38 16 27.1 16h128c11.72 0 21.52-6.61 27.1-16H592zM408 160h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8z\"]\n};\nvar faLasso = {\n prefix: 'far',\n iconName: 'lasso',\n icon: [576, 512, [], \"f8c8\", \"M288 0C126.5 0 0 78.48 0 178.67c0 48.33 29.62 93.24 83.44 126.6 4.17 2.59 8.69 5.12 13.44 7.65-5.61 40.89 35.55 73.75 85.65 70.45a82.41 82.41 0 0 1 3.79 27.11c-.63 29.94-26.22 53.52-56.16 53.52H48a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h82.06c57 0 104-46 104.28-103.07a125.05 125.05 0 0 0-6.71-40.52 71.77 71.77 0 0 0 15.22-13.48c14.88 1.42 29.9 2.4 45.15 2.4 161.5 0 288-78.47 288-178.66S449.5 0 288 0zm0 309.33c-11.35 0-22.46-.88-33.55-1.76-7.19-29.44-39.54-51.67-78.45-51.67-20.38 0-38.77 6.28-52.9 16.32-4.9-2.56-10.12-5.11-14.35-7.74C69.56 240.19 48 209.72 48 178.67 48 107.84 157.91 48 288 48s240 59.84 240 130.67-109.91 130.66-240 130.66z\"]\n};\nvar faLaugh = {\n prefix: 'far',\n iconName: 'laugh',\n icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 224c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm-160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLaughBeam = {\n prefix: 'far',\n iconName: 'laugh-beam',\n icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 152c-23.8 0-52.7 29.3-56 71.4-.7 8.6 10.8 11.9 14.9 4.5l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.1-42.1-32-71.4-55.8-71.4zm-201 75.9l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.6 8.5 10.9 11.9 15.1 4.5zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLaughSquint = {\n prefix: 'far',\n iconName: 'laugh-squint',\n icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM343.6 196l33.6-40.3c8.6-10.3-3.8-24.8-15.4-18l-80 48c-7.8 4.7-7.8 15.9 0 20.6l80 48c11.5 6.8 24-7.6 15.4-18L343.6 196zm-209.4 58.3l80-48c7.8-4.7 7.8-15.9 0-20.6l-80-48c-11.6-6.9-24 7.7-15.4 18l33.6 40.3-33.6 40.3c-8.7 10.4 3.8 24.8 15.4 18zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLaughWink = {\n prefix: 'far',\n iconName: 'laugh-wink',\n icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6C68.8 359.6 48 309.4 48 256s20.8-103.6 58.6-141.4C144.4 76.8 194.6 56 248 56s103.6 20.8 141.4 58.6c37.8 37.8 58.6 88 58.6 141.4s-20.8 103.6-58.6 141.4zM328 164c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1zm-160 60c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\"]\n};\nvar faLayerGroup = {\n prefix: 'far',\n iconName: 'layer-group',\n icon: [512, 512, [], \"f5fd\", \"M512 256.01c0-12.86-7.53-24.42-19.12-29.44l-79.69-34.58 79.66-34.57c11.62-5.03 19.16-16.59 19.16-29.44s-7.53-24.41-19.12-29.42L274.66 3.89c-11.84-5.17-25.44-5.19-37.28-.02L19.16 98.55C7.53 103.58 0 115.14 0 127.99s7.53 24.41 19.12 29.42l79.7 34.58-79.67 34.57C7.53 231.58 0 243.15 0 256.01c0 12.84 7.53 24.41 19.12 29.42L98.81 320l-79.65 34.56C7.53 359.59 0 371.15 0 384.01c0 12.84 7.53 24.41 19.12 29.42l218.28 94.69a46.488 46.488 0 0 0 18.59 3.88c6.34-.02 12.69-1.3 18.59-3.86l218.25-94.69c11.62-5.03 19.16-16.59 19.16-29.44 0-12.86-7.53-24.42-19.12-29.44L413.19 320l79.65-34.56c11.63-5.03 19.16-16.59 19.16-29.43zM255.47 47.89l.03.02h-.06l.03-.02zm.53.23l184.16 79.89-183.63 80.09-184.62-80.11L256 48.12zm184.19 335.92l-183.66 80.07L71.91 384l87.21-37.84 78.29 33.96A46.488 46.488 0 0 0 256 384c6.34-.02 12.69-1.3 18.59-3.86l78.29-33.97 87.31 37.87zM256.53 336.1L71.91 255.99l87.22-37.84 78.28 33.96a46.488 46.488 0 0 0 18.59 3.88c6.34-.02 12.69-1.3 18.59-3.86l78.29-33.97 87.31 37.88-183.66 80.06z\"]\n};\nvar faLayerMinus = {\n prefix: 'far',\n iconName: 'layer-minus',\n icon: [512, 512, [], \"f5fe\", \"M496 32H304c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h192c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16zm16 224c0-12.84-7.53-24.41-19.12-29.42l-218.28-94.7c-11.81-5.16-25.38-5.16-37.19 0L19.16 226.56C7.53 231.59 0 243.16 0 256s7.53 24.41 19.12 29.42L98.82 320l-79.67 34.56C7.53 359.59 0 371.16 0 384.02c0 12.84 7.53 24.41 19.12 29.42l218.28 94.69a46.488 46.488 0 0 0 18.59 3.88c6.34-.02 12.69-1.3 18.59-3.86l218.25-94.69c11.62-5.03 19.16-16.59 19.16-29.44 0-12.86-7.53-24.42-19.12-29.44L413.19 320l79.65-34.56C504.47 280.41 512 268.84 512 256zm-71.81 128.05l-183.66 80.06L71.91 384l87.22-37.84 78.28 33.96A46.488 46.488 0 0 0 256 384c6.34-.02 12.69-1.3 18.59-3.86l78.3-33.98 87.3 37.89zm-183.66-47.94L71.91 256 256 176.12l184.16 79.91-183.63 80.08z\"]\n};\nvar faLayerPlus = {\n prefix: 'far',\n iconName: 'layer-plus',\n icon: [512, 512, [], \"f5ff\", \"M492.88 354.58L413.19 320l79.68-34.58c12.16-5.28 17.72-19.41 12.47-31.56-5.28-12.17-19.38-17.67-31.59-12.47l-217.22 94.72L71.91 256l170.5-73.98c12.16-5.28 17.72-19.41 12.47-31.56-5.28-12.19-19.38-17.67-31.59-12.47L19.16 226.56C7.53 231.59 0 243.16 0 256s7.53 24.41 19.12 29.42L98.82 320l-79.67 34.56C7.53 359.59 0 371.16 0 384.02c0 12.84 7.53 24.41 19.12 29.42l218.28 94.69a46.488 46.488 0 0 0 18.59 3.88c6.34-.02 12.69-1.3 18.59-3.86l218.25-94.69c11.62-5.03 19.16-16.59 19.16-29.44.01-12.86-7.52-24.43-19.11-29.44zM256.53 464.11L71.91 384l87.22-37.84 78.28 33.96c5.91 2.58 12.25 3.86 18.59 3.86s12.69-1.28 18.59-3.84l78.3-33.98 87.29 37.88-183.65 80.07zM496 88h-72V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v72h-72c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h72v72c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-72h72c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faLeaf = {\n prefix: 'far',\n iconName: 'leaf',\n icon: [576, 512, [], \"f06c\", \"M546.2 9.7c-2.9-6.5-8.6-9.7-14.3-9.7-5.3 0-10.7 2.8-14 8.5C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 17.8 2.6 34.9 7.1 51.2C29 403.7 1.8 478.8 1.3 480.2c-4.3 12.5 2.3 26.2 14.8 30.5 14 4.8 26.7-3.8 30.5-14.8.4-1.1 21-57.5 76.3-110.1C160.5 449 231.5 487 308.4 478.9 465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6zM303.4 431.2c-86.1 9.1-130.6-54.5-142.2-76.5 47.4-32.9 112-58.7 198.9-58.7 13.2 0 24-10.8 24-24s-10.8-24-24-24c-91.3 0-161.1 25.5-214 59.4-.9-6.4-2-12.8-2-19.4 0-79.4 64.6-144 144-144h80c57.9 0 111.6-22 152-60.9 5.2 23.2 8 47.5 8 71.2-.1 151-93.9 267.4-224.7 276.9z\"]\n};\nvar faLeafHeart = {\n prefix: 'far',\n iconName: 'leaf-heart',\n icon: [576, 512, [], \"f4cb\", \"M397.4 219c-23.5-19.1-54.3-10.6-70 4.8l-7.4 7.3-7.4-7.3c-15.3-15.1-46.2-24.1-70-4.8-23.6 19.1-24.8 53.5-3.7 74.2l72.6 71.3c4.7 4.6 12.3 4.6 17 0l72.6-71.3c21-20.7 19.8-55.1-3.7-74.2zM546.2 9.7c-2.9-6.5-8.6-9.7-14.3-9.7-5.3 0-10.7 2.8-14 8.5C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 17.5 2.5 34.4 6.9 50.5C29 402.5 2.5 476.9 1.3 480.2c-4.3 12.5 2.3 26.1 14.8 30.5 2.6.9 5.2 1.3 7.9 1.3 9.9 0 19.2-6.2 22.7-16.1.2-.6 21.1-57.8 76.1-110.4C160.3 449 231.5 487 308.4 478.9 465.5 467.6 576 326.8 576 154.3c0-50.2-10.8-102.2-29.8-144.6zM303.4 431.2C215.4 440.5 144 370.8 144 288c0-79.4 64.6-144 144-144h80c57.9 0 111.6-22 152-60.9 5.2 23.2 8 47.5 8 71.2 0 151-93.8 267.4-224.6 276.9z\"]\n};\nvar faLeafMaple = {\n prefix: 'far',\n iconName: 'leaf-maple',\n icon: [512, 512, [], \"f6f6\", \"M457.73 301.13c2.24-10.52 1.74-21.21-1.31-31.2L483.01 253c18.43-11.73 29.27-31.77 28.98-53.62-.29-21.85-11.64-41.6-30.38-52.85l-4.92-2.95 4.9-44.08a62.684 62.684 0 0 0-15.56-48.64C454.17 37.6 437.18 30 419.42 30c-2.29 0-38.23 4.4-51.03 5.28l-2.95-4.92C354.05 11.36 333.99 0 311.79 0c-21.51 0-41.25 10.83-52.8 28.98l-16.93 26.6a62.405 62.405 0 0 0-18.18-2.69c-4.36 0-8.72.46-13.02 1.37l-13.83-15.67c-11.92-14.18-29.29-22.28-47.88-22.28-18.6 0-35.96 8.1-47.88 22.29L87.44 54.26c-4.29-.91-8.66-1.37-13.02-1.37-19.04 0-36.82 8.55-48.78 23.46-11.93 14.87-16.39 34.08-12.26 52.71l19.78 95.89A62.54 62.54 0 0 0 0 280.2c0 25.07 14.89 47.65 37.93 57.52l71.69 30.73L7.03 471.03c-9.37 9.38-9.37 24.56 0 33.94C11.72 509.66 17.84 512 24 512s12.28-2.34 16.97-7.03l102.59-102.59 30.72 71.69A62.529 62.529 0 0 0 231.81 512c23.29 0 44.44-12.85 55.24-33.16l96.6 19.93c42.17 9.43 83.8-28.54 74.09-74.21 18.82-16.61 37.95-30.18 37.95-61.71 0-32.23-20.53-46.34-37.96-61.72zm-15.51 73.1l-43.18 38.11 11.62 21.64c2.36 9.43-4.92 18.13-14.09 18.13-2.21 0 8.38 2.03-137.99-28.16l-13.37 31.2c-2.53 5.89-7.96 8.84-13.4 8.84s-10.88-2.95-13.41-8.84l-38.29-89.33 124.86-124.86c9.37-9.38 9.37-24.56 0-33.94s-24.56-9.38-33.94 0L146.18 331.89 56.84 293.6c-11.78-5.05-11.78-21.76 0-26.81l31.2-13.37-27.8-134.76c-2.49-11.22 7.85-19.8 17.77-17.31l21.64 11.62 38.11-43.18c2.92-3.65 7.15-5.47 11.39-5.47s8.47 1.82 11.39 5.47l38.11 43.18 21.64-11.62c10.16-2.54 20.2 6.38 17.77 17.31l-13.95 54.54 75.37-118.45c2.87-4.51 7.59-6.75 12.3-6.75 4.84 0 9.68 2.37 12.51 7.08l18.8 31.33 74.69-8.3c14.07-1.59 16.52 12.34 16.1 16.11l-8.3 74.69 31.33 18.8c9.3 5.58 9.47 18.99.33 24.81L338.8 287.88c59.17-15.13 55.26-14.31 57.77-14.31 9.16 0 16.44 8.7 14.08 18.13l-11.62 21.64 43.18 38.11c7.3 5.85 7.3 16.94.01 22.78z\"]\n};\nvar faLeafOak = {\n prefix: 'far',\n iconName: 'leaf-oak',\n icon: [512, 512, [], \"f6f7\", \"M511.56 208.08c-2.31-21.37-14.25-40.99-32.74-53.79-2.9-2.01-5.86-3.97-8.92-5.75 11.79-47.63-7.42-74.79-19.43-86.06-12.19-12.91-39.35-32.1-87.03-20.39-1.75-3.04-3.71-6-5.71-8.9C344.88 14.7 325.27 2.76 303.91.44c-20.99-2.32-41.35 4.58-57.25 19.33-8.36 7.76-13.94 16.88-20.02 26.77-3.03 4.87-5.92 9.81-8.82 14.86-17.59-11.82-36.95-16.28-55.26-12.69-20.14 3.99-37.76 17.6-49.55 38.29-16.53 28.84-14.31 58.55-10.95 84.12-10.32-.94-20.64.48-30.19 4.44-17.9 7.47-31.24 23.2-36.58 43.14-4.08 15.21-4.4 32.64-.94 47.81 2.53 10.88 6.42 20.64 10.23 30.09 2.62 6.56 5.3 13.11 7.17 19.86 2.12 7.64 1.81 12.85 1.34 14.2-12.31 34.06-11.61 66.68 1.03 91.89L7.31 469.39c-9.75 9.75-9.75 25.56 0 35.31 4.87 4.86 11.28 7.3 17.66 7.3s12.78-2.44 17.66-7.3l46.63-46.63c24.9 12.83 57.12 13.43 92.02.79 1.34-.5 6.58-.83 14.22 1.34 6.77 1.88 13.31 4.57 19.89 7.2 9.45 3.77 19.21 7.69 30.09 10.2 6.95 1.61 14.41 2.4 21.86 2.4 8.82 0 17.71-1.12 25.94-3.32 19.99-5.36 35.73-18.72 43.19-36.65 3.93-9.51 5.39-19.78 4.4-30.12 25.72 3.43 55.35 5.58 84.13-10.93 20.74-11.83 34.33-29.45 38.29-49.59 3.62-18.27-.87-37.67-12.66-55.21 5.27-3.05 10.73-6.27 16.68-9.95 8.08-4.97 17.21-10.59 24.95-18.96 14.75-15.89 21.61-36.2 19.3-57.19zm-54.44 24.66c-3.27 3.55-8.92 7.02-16.84 11.9-8.14 5.04-16.53 9.76-25.32 14.72l-36.95 21.14 23.14 28.17c2.84 3.41 5.3 6.38 7.7 9.43 4.3 5.53 9.07 13.83 7.48 22-1.62 8.09-9.11 13.89-15.09 17.32-14.44 8.25-30.75 8.09-54.16 5.01-8.51-1.12-17.03-1.96-26.66-2.92l-66.7-6.98 33.77 48.66c1.09 1.51 1.84 2.46 2.4 3.45 3.46 6.05 4.33 12.25 2.34 17.04-2.21 5.32-7.39 7.69-11.35 8.76-7.64 2.06-17.12 2.28-24.67.5-7.23-1.67-14.9-4.74-22.98-7.98-8.2-3.29-16.43-6.53-24.85-8.87-5.55-1.56-14.19-3.43-23.73-3.43-6.36 0-13.13.84-19.61 3.16-14.01 5.08-26.74 6.99-37.57 6.06L336.5 210.84c9.75-9.75 9.75-25.56 0-35.31-9.75-9.72-25.56-9.72-35.31 0L92.4 384.31c-1-10.96.83-23.71 5.75-37.35 5.52-15.25 2.93-31.97-.22-43.31-2.34-8.45-5.58-16.66-8.89-24.87-3.24-8.11-6.3-15.75-7.98-22.99-1.71-7.56-1.53-17.03.53-24.7 1.06-3.94 3.43-9.1 8.73-11.3 4.83-2.03 11.01-1.15 16.99 2.28 1.03.61 2 1.37 3.55 2.48l48.61 33.97-7.02-67.18c-.94-9.51-1.78-17.96-2.9-26.41-3.09-23.37-3.24-39.72 5.02-54.16 3.43-6 9.2-13.48 17.28-15.07 8.26-1.67 16.5 3.16 22.05 7.48 3.21 2.49 6.36 5.11 9.98 8.15l27.6 22.76 21.02-36.78c5.02-8.9 9.79-17.35 16.06-27.53 3.68-5.97 7.14-11.62 10.7-14.92 7.17-6.63 14.69-7.44 19.46-6.81 7.7.83 14.69 5.25 19.64 12.41 1.81 2.6 3.68 5.24 4.89 8.01 7.77 17.77 28.19 26.89 47.52 21.23 14.13-4.13 33.4-6.5 45.87 6.64 12.16 11.47 9.76 30.73 5.64 44.87-5.64 19.35 3.49 39.79 21.23 47.53 2.84 1.25 5.43 3.09 7.98 4.88 7.2 4.99 11.63 11.96 12.44 19.64.58 4.96-.17 12.33-6.81 19.48z\"]\n};\nvar faLemon = {\n prefix: 'far',\n iconName: 'lemon',\n icon: [512, 512, [], \"f094\", \"M484.112 27.889C455.989-.233 416.108-8.057 387.059 8.865 347.604 31.848 223.504-41.111 91.196 91.197-41.277 223.672 31.923 347.472 8.866 387.058c-16.922 29.051-9.1 68.932 19.022 97.054 28.135 28.135 68.011 35.938 97.057 19.021 39.423-22.97 163.557 49.969 295.858-82.329 132.474-132.477 59.273-256.277 82.331-295.861 16.922-29.05 9.1-68.931-19.022-97.054zm-22.405 72.894c-38.8 66.609 45.6 165.635-74.845 286.08-120.44 120.443-219.475 36.048-286.076 74.843-22.679 13.207-64.035-27.241-50.493-50.488 38.8-66.609-45.6-165.635 74.845-286.08C245.573 4.702 344.616 89.086 411.219 50.292c22.73-13.24 64.005 27.288 50.488 50.491zm-169.861 8.736c1.37 10.96-6.404 20.957-17.365 22.327-54.846 6.855-135.779 87.787-142.635 142.635-1.373 10.989-11.399 18.734-22.326 17.365-10.961-1.37-18.735-11.366-17.365-22.326 9.162-73.286 104.167-168.215 177.365-177.365 10.953-1.368 20.956 6.403 22.326 17.364z\"]\n};\nvar faLessThan = {\n prefix: 'far',\n iconName: 'less-than',\n icon: [320, 512, [], \"f536\", \"M311.15 373.06L77.04 256l234.11-117.06c7.9-3.95 11.11-13.56 7.16-21.46L304 88.85c-3.95-7.9-13.56-11.11-21.47-7.16L8.84 218.53A16 16 0 0 0 0 232.85v46.31c0 6.06 3.42 11.6 8.84 14.31l273.68 136.84c7.9 3.95 17.52.75 21.47-7.16l14.31-28.63c3.96-7.9.75-17.51-7.15-21.46z\"]\n};\nvar faLessThanEqual = {\n prefix: 'far',\n iconName: 'less-than-equal',\n icon: [384, 512, [], \"f537\", \"M368 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM42.06 235.24L318.18 350.8c8.21 3.44 17.52-.74 20.8-9.33l11.88-31.1c3.28-8.58-.71-18.32-8.92-21.76L111.09 192l230.85-96.62c8.2-3.43 12.19-13.17 8.92-21.76l-11.88-31.1c-3.28-8.59-12.59-12.76-20.8-9.33L42.06 148.76C35.98 151.3 32 157.46 32 164.3v55.39c0 6.85 3.98 13.01 10.06 15.55z\"]\n};\nvar faLevelDown = {\n prefix: 'far',\n iconName: 'level-down',\n icon: [320, 512, [], \"f149\", \"M316.485 392l-116 116.485c-4.686 4.686-12.284 4.686-16.971 0L67.515 392c-4.686-4.686-4.686-12.284 0-16.971l22.312-22.312c4.808-4.808 12.646-4.665 17.275.315L164 414.996V56H44.024a11.996 11.996 0 0 1-8.485-3.515l-32-32C-4.021 12.926 1.333 0 12.024 0H196c13.255 0 24 10.745 24 24v390.996l56.899-61.963c4.629-4.98 12.467-5.123 17.275-.315l22.312 22.312c4.686 4.686 4.686 12.284-.001 16.97z\"]\n};\nvar faLevelDownAlt = {\n prefix: 'far',\n iconName: 'level-down-alt',\n icon: [320, 512, [], \"f3be\", \"M296.64 412.326l-96.16 96.16c-4.686 4.687-12.285 4.686-16.97 0L87.354 412.33c-7.536-7.536-2.198-20.484 8.485-20.485l68.161-.002V56H64a11.996 11.996 0 0 1-8.485-3.515l-32-32C15.955 12.926 21.309 0 32 0h164c13.255 0 24 10.745 24 24v367.842l68.154-.001c10.626-.001 16.066 12.905 8.486 20.485z\"]\n};\nvar faLevelUp = {\n prefix: 'far',\n iconName: 'level-up',\n icon: [320, 512, [], \"f148\", \"M316.485 120l-116-116.485c-4.686-4.686-12.284-4.686-16.971 0L67.515 120c-4.686 4.686-4.686 12.284 0 16.971l22.312 22.312c4.808 4.808 12.646 4.665 17.275-.315L164 97.004V456H44.024a11.996 11.996 0 0 0-8.485 3.515l-32 32C-4.021 499.074 1.333 512 12.024 512H196c13.255 0 24-10.745 24-24V97.004l56.899 61.963c4.629 4.98 12.467 5.123 17.275.315l22.312-22.312c4.686-4.686 4.686-12.284-.001-16.97z\"]\n};\nvar faLevelUpAlt = {\n prefix: 'far',\n iconName: 'level-up-alt',\n icon: [320, 512, [], \"f3bf\", \"M296.64 99.674l-96.16-96.16c-4.686-4.687-12.285-4.686-16.97 0L87.353 99.671c-7.536 7.536-2.198 20.484 8.485 20.485l68.162.002V456H64a11.996 11.996 0 0 0-8.485 3.515l-32 32C15.955 499.074 21.309 512 32 512h164c13.255 0 24-10.745 24-24V120.159l68.154.001c10.626 0 16.066-12.906 8.486-20.486z\"]\n};\nvar faLifeRing = {\n prefix: 'far',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M256 504c136.967 0 248-111.033 248-248S392.967 8 256 8 8 119.033 8 256s111.033 248 248 248zm-103.398-76.72l53.411-53.411c31.806 13.506 68.128 13.522 99.974 0l53.411 53.411c-63.217 38.319-143.579 38.319-206.796 0zM336 256c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zm91.28 103.398l-53.411-53.411c13.505-31.806 13.522-68.128 0-99.974l53.411-53.411c38.319 63.217 38.319 143.579 0 206.796zM359.397 84.72l-53.411 53.411c-31.806-13.505-68.128-13.522-99.973 0L152.602 84.72c63.217-38.319 143.579-38.319 206.795 0zM84.72 152.602l53.411 53.411c-13.506 31.806-13.522 68.128 0 99.974L84.72 359.398c-38.319-63.217-38.319-143.579 0-206.796z\"]\n};\nvar faLightCeiling = {\n prefix: 'far',\n iconName: 'light-ceiling',\n icon: [512, 512, [], \"e016\", \"M256,512a64,64,0,0,0,64-64H192A64,64,0,0,0,256,512Zm24-350.9V0H232V161.1C112.78,172,17,263.19.32,379.62-2.43,398.81,13,416,32.56,416H479.44c19.56,0,35-17.19,32.24-36.38C495,263.19,399.22,172,280,161.1ZM51.35,368c22.13-92.42,107-160,204.65-160s182.52,67.58,204.65,160Z\"]\n};\nvar faLightSwitch = {\n prefix: 'far',\n iconName: 'light-switch',\n icon: [384, 512, [], \"e017\", \"M320,0H64A64,64,0,0,0,0,64V448a64,64,0,0,0,64,64H320a64,64,0,0,0,64-64V64A64,64,0,0,0,320,0Zm16,448a16,16,0,0,1-16,16H214.37a23.66,23.66,0,0,0-44.77,0H64a16,16,0,0,1-16-16V64A16,16,0,0,1,64,48H169.6a23.66,23.66,0,0,0,44.77,0H320a16,16,0,0,1,16,16ZM256,96H128a32,32,0,0,0-32,32V384a32,32,0,0,0,32,32H256a32,32,0,0,0,32-32V128A32,32,0,0,0,256,96ZM240,368H144V280h96Zm0-136H144V144h96Z\"]\n};\nvar faLightSwitchOff = {\n prefix: 'far',\n iconName: 'light-switch-off',\n icon: [384, 512, [], \"e018\", \"M320,0H64A64,64,0,0,0,0,64V448a64,64,0,0,0,64,64H320a64,64,0,0,0,64-64V64A64,64,0,0,0,320,0Zm16,448a16,16,0,0,1-16,16H214.38a23.65,23.65,0,0,0-44.76,0H64a16,16,0,0,1-16-16V64A16,16,0,0,1,64,48H169.62a23.65,23.65,0,0,0,44.76,0H320a16,16,0,0,1,16,16ZM256,96H128a32,32,0,0,0-32,32V384a32,32,0,0,0,32,32H256a32,32,0,0,0,32-32V128A32,32,0,0,0,256,96ZM240,256H144V144h96Z\"]\n};\nvar faLightSwitchOn = {\n prefix: 'far',\n iconName: 'light-switch-on',\n icon: [384, 512, [], \"e019\", \"M320,0H64A64,64,0,0,0,0,64V448a64,64,0,0,0,64,64H320a64,64,0,0,0,64-64V64A64,64,0,0,0,320,0Zm16,448a16,16,0,0,1-16,16H214.4a23.66,23.66,0,0,0-44.77,0H64a16,16,0,0,1-16-16V64A16,16,0,0,1,64,48H169.63a23.66,23.66,0,0,0,44.77,0H320a16,16,0,0,1,16,16ZM256,96H128a32,32,0,0,0-32,32V384a32,32,0,0,0,32,32H256a32,32,0,0,0,32-32V128A32,32,0,0,0,256,96ZM240,368H144V272h96Z\"]\n};\nvar faLightbulb = {\n prefix: 'far',\n iconName: 'lightbulb',\n icon: [352, 512, [], \"f0eb\", \"M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z\"]\n};\nvar faLightbulbDollar = {\n prefix: 'far',\n iconName: 'lightbulb-dollar',\n icon: [352, 512, [], \"f670\", \"M168 296h16c4.42 0 8-3.58 8-8v-16.12c23.62-.63 42.67-20.54 42.67-45.07 0-19.97-12.98-37.81-31.58-43.39l-45-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V96c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.62.63-42.67 20.55-42.67 45.07 0 19.97 12.98 37.81 31.58 43.39l45 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.11c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V288c0 4.42 3.58 8 8 8zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z\"]\n};\nvar faLightbulbExclamation = {\n prefix: 'far',\n iconName: 'lightbulb-exclamation',\n icon: [352, 512, [], \"f671\", \"M96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 320c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm0-320C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0zm-9.52 224h19.04c8.22 0 15.1-6.23 15.92-14.41l12.8-96c.94-9.42-6.45-17.59-15.92-17.59h-44.64c-9.47 0-16.86 8.17-15.92 17.59l12.8 96c.82 8.18 7.7 14.41 15.92 14.41z\"]\n};\nvar faLightbulbOn = {\n prefix: 'far',\n iconName: 'lightbulb-on',\n icon: [640, 512, [], \"f672\", \"M112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm-4.92,95.22-55.42,32a24,24,0,1,0,24,41.56l55.42-32a24,24,0,0,0-24-41.56Zm24-232-55.42-32a24,24,0,1,0-24,41.56l55.42,32a24,24,0,1,0,24-41.56ZM520.94,100a23.8,23.8,0,0,0,12-3.22l55.42-32a24,24,0,0,0-24-41.56l-55.42,32a24,24,0,0,0,12,44.78ZM616,168H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM588.34,319.23l-55.42-32a24,24,0,1,0-24,41.56l55.42,32a24,24,0,0,0,24-41.56ZM320,0C217.72,0,144,83,144,176a175,175,0,0,0,43.56,115.78c16.63,19,42.75,58.8,52.41,92.16V384h48v-.12a47.67,47.67,0,0,0-2.13-14.07C280.25,352,263,305.06,223.66,260.15A127.48,127.48,0,0,1,192.06,176C191.84,102.36,251.72,48,320,48a127.91,127.91,0,0,1,96.34,212.15c-39.09,44.61-56.4,91.47-62.09,109.46A56.78,56.78,0,0,0,352,383.92V384h48V384c9.69-33.37,35.78-73.18,52.41-92.15A175.93,175.93,0,0,0,320,0Zm0,80a96.11,96.11,0,0,0-96,96,16,16,0,0,0,32,0,64.08,64.08,0,0,1,64-64,16,16,0,0,0,0-32ZM240.06,459.19a16,16,0,0,0,2.69,8.84l24.5,36.83A16,16,0,0,0,280.56,512h78.85a16,16,0,0,0,13.34-7.14L397.25,468a16.2,16.2,0,0,0,2.69-8.84L400,416H240Z\"]\n};\nvar faLightbulbSlash = {\n prefix: 'far',\n iconName: 'lightbulb-slash',\n icon: [640, 512, [], \"f673\", \"M250.43 110.23l25.28 19.76C287.22 118.9 302.8 112 320 112c8.84 0 16-7.16 16-16s-7.16-16-16-16c-27.44 0-52.06 11.71-69.57 30.23zM320 48c70.58 0 128 57.42 128 128 0 25.62-8.07 50.25-22.28 71.27l37.73 29.49C483.62 248.16 496 213.67 496 176 496 78.8 417.2 0 320 0c-17.59 0-81.33 1.58-132.77 60.82l37.84 29.58C262.63 48.81 307.46 48 320 48zm-79.94 411.17c0 3.15.94 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H240.02l.04 43.18zM287.98 384v-.11c-.01-4.8-.74-9.56-2.21-14.13-4.46-13.93-16.1-45.55-39.55-80.05l-98.02-76.63c6.4 29.68 20.04 56.66 39.35 78.7 16.64 18.99 42.74 58.8 52.42 92.16v.06h48.01zm346.01 87.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49z\"]\n};\nvar faLightsHoliday = {\n prefix: 'far',\n iconName: 'lights-holiday',\n icon: [640, 512, [], \"f7b2\", \"M637.8 85.7l-8.1-13.9c-4.4-7.6-14.1-10-21.8-5.9-80.8 43.7-182.3 67.7-287.9 67.7S112.9 109.8 32.1 66c-7.7-4.2-17.3-1.7-21.8 5.9L2.2 85.7c-4.7 7.9-1.7 18 6.4 22.4 45.8 24.9 97.7 43.7 153 56.2l-17.9 39.3c-5.4.6-10.5 3.7-12.9 9l-9.2 20.2c-25.6-.7-49.6 12.6-65.2 46.8-21.9 48.3 4.3 129.8 17.4 135.7 13.1 6 91.8-27.9 113.7-76.1 15.6-34.2 9.8-61.1-7.7-79.8l9.2-20.2c2.4-5.3 1.4-11.2-1.7-15.6l22.8-50.1c28.1 4.3 56.8 6.9 85.8 7.8v45.2c-4.7 2.8-8 7.7-8 13.5v22.2c-23.6 9.8-40 31.8-40 69.5 0 53 57.6 116.4 72 116.4s72-63.3 72-116.4c0-37.6-16.4-59.7-40-69.5V240c0-5.9-3.3-10.8-8-13.5v-45.2c29.1-.9 57.8-3.6 85.8-7.8l22.8 50.1c-3.1 4.5-4.1 10.3-1.7 15.6l9.2 20.2c-17.5 18.7-23.2 45.5-7.7 79.8 21.9 48.3 100.6 82.1 113.7 76.1 13.1-6 39.3-87.5 17.4-135.7-15.6-34.2-39.6-47.5-65.2-46.7l-9.2-20.2c-2.4-5.3-7.5-8.4-12.9-9l-17.9-39.3c55.2-12.5 107.1-31.3 153-56.2 8.3-4.4 11.2-14.5 6.6-22.5zm-494 233.6c-6.5 14.2-26.5 29-43.9 38.6-4.3-19.4-6.3-44.2.2-58.4 9.7-21.4 18.5-22 33.3-15.2 14.8 6.7 20.2 13.6 10.4 35zm362.8-35.1c14.8-6.7 23.6-6.2 33.3 15.2 6.5 14.2 4.4 39 .2 58.4-17.4-9.6-37.4-24.4-43.9-38.6-9.8-21.3-4.4-28.2 10.4-35zM320 384.9c-11.9-15.9-24-37.7-24-53.3 0-23.5 7.7-27.6 24-27.6s24 4.1 24 27.6c0 15.6-12.1 37.4-24 53.3z\"]\n};\nvar faLineColumns = {\n prefix: 'far',\n iconName: 'line-columns',\n icon: [512, 512, [], \"f870\", \"M496 424H304a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0-128H304a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0-128H304a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0-128H304a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16zM208 296H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0 128H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0-384H16A16 16 0 0 0 0 56v16a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16zm0 128H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faLineHeight = {\n prefix: 'far',\n iconName: 'line-height',\n icon: [640, 512, [], \"f871\", \"M626.29 392H269.71c-7.57 0-13.71 7.16-13.71 16v16c0 8.84 6.14 16 13.71 16h356.58c7.57 0 13.71-7.16 13.71-16v-16c0-8.84-6.14-16-13.71-16zM176 144c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C-4.64 126 .36 144 16 144h56v224H16c-14.29 0-21.31 17.31-11.29 27.31l80 80a16 16 0 0 0 22.62 0l80-80C196.64 386 191.64 368 176 368h-56V144zm450.31 88h-356.6c-7.57 0-13.71 7.16-13.71 16v16c0 8.84 6.14 16 13.71 16h356.58c7.57 0 13.71-7.16 13.71-16v-16c0-8.84-6.14-16-13.71-16zm0-160h-356.6C262.14 72 256 79.16 256 88v16c0 8.84 6.14 16 13.71 16h356.58c7.57 0 13.71-7.16 13.71-16V88c0-8.84-6.14-16-13.71-16z\"]\n};\nvar faLink = {\n prefix: 'far',\n iconName: 'link',\n icon: [512, 512, [], \"f0c1\", \"M314.222 197.78c51.091 51.091 54.377 132.287 9.75 187.16-6.242 7.73-2.784 3.865-84.94 86.02-54.696 54.696-143.266 54.745-197.99 0-54.711-54.69-54.734-143.255 0-197.99 32.773-32.773 51.835-51.899 63.409-63.457 7.463-7.452 20.331-2.354 20.486 8.192a173.31 173.31 0 0 0 4.746 37.828c.966 4.029-.272 8.269-3.202 11.198L80.632 312.57c-32.755 32.775-32.887 85.892 0 118.8 32.775 32.755 85.892 32.887 118.8 0l75.19-75.2c32.718-32.725 32.777-86.013 0-118.79a83.722 83.722 0 0 0-22.814-16.229c-4.623-2.233-7.182-7.25-6.561-12.346 1.356-11.122 6.296-21.885 14.815-30.405l4.375-4.375c3.625-3.626 9.177-4.594 13.76-2.294 12.999 6.524 25.187 15.211 36.025 26.049zM470.958 41.04c-54.724-54.745-143.294-54.696-197.99 0-82.156 82.156-78.698 78.29-84.94 86.02-44.627 54.873-41.341 136.069 9.75 187.16 10.838 10.838 23.026 19.525 36.025 26.049 4.582 2.3 10.134 1.331 13.76-2.294l4.375-4.375c8.52-8.519 13.459-19.283 14.815-30.405.621-5.096-1.938-10.113-6.561-12.346a83.706 83.706 0 0 1-22.814-16.229c-32.777-32.777-32.718-86.065 0-118.79l75.19-75.2c32.908-32.887 86.025-32.755 118.8 0 32.887 32.908 32.755 86.025 0 118.8l-45.848 45.84c-2.93 2.929-4.168 7.169-3.202 11.198a173.31 173.31 0 0 1 4.746 37.828c.155 10.546 13.023 15.644 20.486 8.192 11.574-11.558 30.636-30.684 63.409-63.457 54.733-54.735 54.71-143.3-.001-197.991z\"]\n};\nvar faLips = {\n prefix: 'far',\n iconName: 'lips',\n icon: [640, 512, [], \"f600\", \"M631.14 195.68C579.47 109.99 466.31 32 417.72 32c0 0-32.57 0-97.72 50-65.15-50-97.72-50-97.72-50-48.59 0-161.75 77.99-213.42 163.68-10.32 17.11-11.63 37.99-3.89 56.38C32.95 318.51 117.59 480 279.28 480h81.43c161.69 0 246.33-161.49 274.32-227.95 7.74-18.38 6.43-39.26-3.89-56.37zm-40.34 37.74C565.65 293.13 492.91 432 360.72 432h-81.43C147.09 432 74.35 293.13 49.2 233.42c-1.84-4.38-1.57-9.1.76-12.96C96.28 143.65 191.9 83.43 220.33 80.14 250 87.12 290.29 119.71 320 142.5c33.12-25.41 70.35-55.46 99.67-62.36 28.47 3.31 124.06 63.53 170.37 140.32 2.32 3.86 2.6 8.59.76 12.96zm-57.83-2.18C512.72 223.25 465.99 208 404 208c-33.36 8.34-51.13 14-84 14-32.53 0-49.47-5.37-84-14-61.99 0-108.72 15.25-128.96 23.24-5.51 2.17-6.8 9.23-2.41 13.2C128.18 265.73 199.97 320 320 320s191.82-54.27 215.37-75.56c4.39-3.97 3.1-11.03-2.4-13.2z\"]\n};\nvar faLiraSign = {\n prefix: 'far',\n iconName: 'lira-sign',\n icon: [384, 512, [], \"f195\", \"M371.994 256H336c-6.415 0-11.7 5.049-11.982 11.457C319.492 370.307 253.298 424 156.041 424H128V252.141l150.603-33.467A12 12 0 0 0 288 206.96v-24.585c0-7.677-7.109-13.38-14.603-11.714L128 202.97v-46.829l150.603-33.467A12 12 0 0 0 288 110.96V86.374c0-7.677-7.109-13.38-14.603-11.714L128 106.97V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v77.192L9.397 133.326A12 12 0 0 0 0 145.041v24.585c0 7.677 7.109 13.38 14.603 11.714L64 170.363v46.829L9.397 229.326A12 12 0 0 0 0 241.041v24.585c0 7.677 7.109 13.38 14.603 11.714L64 266.363V468c0 6.627 5.373 12 12 12h81.026c132.906 0 221.849-77.22 226.965-211.595.259-6.78-5.212-12.405-11.997-12.405z\"]\n};\nvar faList = {\n prefix: 'far',\n iconName: 'list',\n icon: [512, 512, [], \"f03a\", \"M80 48H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416-136H176a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V88a16 16 0 0 0-16-16z\"]\n};\nvar faListAlt = {\n prefix: 'far',\n iconName: 'list-alt',\n icon: [512, 512, [], \"f022\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z\"]\n};\nvar faListMusic = {\n prefix: 'far',\n iconName: 'list-music',\n icon: [512, 512, [], \"f8c9\", \"M470.36 1.51l-112 35.38A32 32 0 0 0 336 67.36v299.12c-18.16-9.07-40.16-14.48-64-14.48-61.86 0-112 35.82-112 80s50.14 80 112 80 112-35.82 112-80V195.36L489.64 162A32 32 0 0 0 512 131.48V32a32 32 0 0 0-41.64-30.49zM272 464c-39.7 0-64-20.72-64-32s24.3-32 64-32 64 20.72 64 32-24.3 32-64 32zm192-344.25L384 145V79.12l80-25.26zM16 104h256a16 16 0 0 0 16-16V72a16 16 0 0 0-16-16H16A16 16 0 0 0 0 72v16a16 16 0 0 0 16 16zm0 128h256a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16zm144 96a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16z\"]\n};\nvar faListOl = {\n prefix: 'far',\n iconName: 'list-ol',\n icon: [512, 512, [], \"f0cb\", \"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.84a154.82 154.82 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.3 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.73 6.13-3.2 11.72 2.62 15.94 7.71 4.69 20.39 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 392H176a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V88a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.9 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.33c3.28-10.29 48.33-18.68 48.33-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.45 18.75-4.38 5.59-3 10.84 2.79 15.37l8.58 6.88c5.61 4.56 11 2.47 16.13-2.44a13.4 13.4 0 0 1 9.45-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.1 320z\"]\n};\nvar faListUl = {\n prefix: 'far',\n iconName: 'list-ul',\n icon: [512, 512, [], \"f0ca\", \"M48 368a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0-160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0-160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 24H176a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V88a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faLocation = {\n prefix: 'far',\n iconName: 'location',\n icon: [512, 512, [], \"f601\", \"M256 168c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 128c-22.06 0-40-17.94-40-40s17.94-40 40-40 40 17.94 40 40-17.94 40-40 40zm240-64h-49.66C435.49 145.19 366.81 76.51 280 65.66V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v49.66C145.19 76.51 76.51 145.19 65.66 232H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h49.66C76.51 366.81 145.19 435.49 232 446.34V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-49.66C366.81 435.49 435.49 366.8 446.34 280H496c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM256 400c-79.4 0-144-64.6-144-144s64.6-144 144-144 144 64.6 144 144-64.6 144-144 144z\"]\n};\nvar faLocationArrow = {\n prefix: 'far',\n iconName: 'location-arrow',\n icon: [512, 512, [], \"f124\", \"M461.9 0c-5.73 0-11.59 1.1-17.39 3.52L28.74 195.41c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 30.01 24.21 47.93 48.74 47.93 17.3 0 34.75-8.9 44.01-28.74l191.9-415.78C522.06 34.89 494.14 0 461.9 0zM271.81 464.07V240.19h-47.97l-175.48.71c-.27-.37-.47-1.35.48-1.93L462.05 48.26c.61.41 1.28 1.07 1.69 1.68L271.81 464.07z\"]\n};\nvar faLocationCircle = {\n prefix: 'far',\n iconName: 'location-circle',\n icon: [496, 512, [], \"f602\", \"M304.51 140.2l-182.06 83.66c-19.85 9.23-30.01 29.64-25.32 50.81 4.63 20.69 22.67 35.15 43.89 35.15h52.99v52.73c0 21.14 14.54 39.1 35.32 43.69 3.44.76 6.88 1.14 10.25 1.14 17.38 0 33.01-9.82 40.8-26.45l84-181.13.38-.83c6.94-16.57 2.94-35.75-10.22-48.87-13.23-13.15-32.49-17.15-50.03-9.9zm-62.49 209.41v-87.58h-88.06l163.53-75.15-75.47 162.73zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\"]\n};\nvar faLocationSlash = {\n prefix: 'far',\n iconName: 'location-slash',\n icon: [640, 512, [], \"f603\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM320 112c79.4 0 144 64.6 144 144 0 6.72-1.09 13.15-1.99 19.64l42.25 33.03c2.66-9.31 4.84-18.83 6.07-28.67H560c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-49.66C499.49 145.19 430.81 76.51 344 65.66V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v49.66c-25.81 3.23-49.69 12.07-71.26 24.48l41.55 32.48C282.92 115.9 300.99 112 320 112zm0 288c-79.4 0-144-64.6-144-144 0-6.72 1.09-13.16 1.99-19.64l-42.25-33.03c-2.66 9.31-4.85 18.83-6.08 28.67H80c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h49.66C140.51 366.81 209.2 435.49 296 446.34V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-49.66c25.81-3.23 49.69-12.07 71.26-24.48l-41.55-32.48C357.08 396.1 339.01 400 320 400z\"]\n};\nvar faLock = {\n prefix: 'far',\n iconName: 'lock',\n icon: [448, 512, [], \"f023\", \"M400 192h-32v-46.6C368 65.8 304 .2 224.4 0 144.8-.2 80 64.5 80 144v48H48c-26.5 0-48 21.5-48 48v224c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48zm-272-48c0-52.9 43.1-96 96-96s96 43.1 96 96v48H128v-48zm272 320H48V240h352v224z\"]\n};\nvar faLockAlt = {\n prefix: 'far',\n iconName: 'lock-alt',\n icon: [448, 512, [], \"f30d\", \"M224 412c-15.5 0-28-12.5-28-28v-64c0-15.5 12.5-28 28-28s28 12.5 28 28v64c0 15.5-12.5 28-28 28zm224-172v224c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V240c0-26.5 21.5-48 48-48h32v-48C80 64.5 144.8-.2 224.4 0 304 .2 368 65.8 368 145.4V192h32c26.5 0 48 21.5 48 48zm-320-48h192v-48c0-52.9-43.1-96-96-96s-96 43.1-96 96v48zm272 48H48v224h352V240z\"]\n};\nvar faLockOpen = {\n prefix: 'far',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M432.3 0C352.8-.2 288 64.5 288 144v48H48c-26.5 0-48 21.5-48 48v224c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48h-64v-46.8c0-52.8 42.1-96.7 95-97.2 53.4-.6 97 42.7 97 96v56c0 13.3 10.7 24 24 24s24-10.7 24-24v-54.6C576 65.8 512 .2 432.3 0zM400 240v224H48V240h352z\"]\n};\nvar faLockOpenAlt = {\n prefix: 'far',\n iconName: 'lock-open-alt',\n icon: [576, 512, [], \"f3c2\", \"M432.3 0C352.8-.2 288 64.5 288 144v48H48c-26.5 0-48 21.5-48 48v224c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48h-64v-46.8c0-52.8 42.1-96.7 95-97.2 53.4-.6 97 42.7 97 96v56c0 13.3 10.7 24 24 24s24-10.7 24-24v-54.6C576 65.8 512 .2 432.3 0zM400 240v224H48V240h352zM225 412c-15.5 0-28-12.5-28-28v-64c0-15.5 12.5-28 28-28s28 12.5 28 28v64c0 15.5-12.5 28-28 28z\"]\n};\nvar faLongArrowAltDown = {\n prefix: 'far',\n iconName: 'long-arrow-alt-down',\n icon: [256, 512, [], \"f309\", \"M20.485 372.485l99.029 99.03c4.686 4.686 12.284 4.686 16.971 0l99.029-99.03c7.56-7.56 2.206-20.485-8.485-20.485H156V44c0-6.627-5.373-12-12-12h-32c-6.627 0-12 5.373-12 12v308H28.97c-10.69 0-16.044 12.926-8.485 20.485z\"]\n};\nvar faLongArrowAltLeft = {\n prefix: 'far',\n iconName: 'long-arrow-alt-left',\n icon: [448, 512, [], \"f30a\", \"M107.515 150.971L8.485 250c-4.686 4.686-4.686 12.284 0 16.971L107.515 366c7.56 7.56 20.485 2.206 20.485-8.485v-71.03h308c6.627 0 12-5.373 12-12v-32c0-6.627-5.373-12-12-12H128v-71.03c0-10.69-12.926-16.044-20.485-8.484z\"]\n};\nvar faLongArrowAltRight = {\n prefix: 'far',\n iconName: 'long-arrow-alt-right',\n icon: [448, 512, [], \"f30b\", \"M340.485 366l99.03-99.029c4.686-4.686 4.686-12.284 0-16.971l-99.03-99.029c-7.56-7.56-20.485-2.206-20.485 8.485v71.03H12c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h308v71.03c0 10.689 12.926 16.043 20.485 8.484z\"]\n};\nvar faLongArrowAltUp = {\n prefix: 'far',\n iconName: 'long-arrow-alt-up',\n icon: [256, 512, [], \"f30c\", \"M235.515 139.515l-99.029-99.03c-4.686-4.686-12.284-4.686-16.971 0l-99.029 99.03C12.926 147.074 18.28 160 28.97 160H100v308c0 6.627 5.373 12 12 12h32c6.627 0 12-5.373 12-12V160h71.03c10.69 0 16.044-12.926 8.485-20.485z\"]\n};\nvar faLongArrowDown = {\n prefix: 'far',\n iconName: 'long-arrow-down',\n icon: [320, 512, [], \"f175\", \"M300.3 327.5l-19.6-19.6c-4.8-4.8-12.5-4.7-17.1.2L186 388.8V44c0-6.6-5.4-12-12-12h-28c-6.6 0-12 5.4-12 12v344.8l-77.5-80.7c-4.7-4.8-12.4-4.9-17.1-.2l-19.6 19.6c-4.7 4.7-4.7 12.3 0 17l131.8 131.8c4.7 4.7 12.3 4.7 17 0l131.8-131.8c4.6-4.7 4.6-12.3-.1-17z\"]\n};\nvar faLongArrowLeft = {\n prefix: 'far',\n iconName: 'long-arrow-left',\n icon: [448, 512, [], \"f177\", \"M152.485 396.284l19.626-19.626c4.753-4.753 4.675-12.484-.173-17.14L91.22 282H436c6.627 0 12-5.373 12-12v-28c0-6.627-5.373-12-12-12H91.22l80.717-77.518c4.849-4.656 4.927-12.387.173-17.14l-19.626-19.626c-4.686-4.686-12.284-4.686-16.971 0L3.716 247.515c-4.686 4.686-4.686 12.284 0 16.971l131.799 131.799c4.686 4.685 12.284 4.685 16.97-.001z\"]\n};\nvar faLongArrowRight = {\n prefix: 'far',\n iconName: 'long-arrow-right',\n icon: [448, 512, [], \"f178\", \"M295.515 115.716l-19.626 19.626c-4.753 4.753-4.675 12.484.173 17.14L356.78 230H12c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h344.78l-80.717 77.518c-4.849 4.656-4.927 12.387-.173 17.14l19.626 19.626c4.686 4.686 12.284 4.686 16.971 0l131.799-131.799c4.686-4.686 4.686-12.284 0-16.971L312.485 115.716c-4.686-4.686-12.284-4.686-16.97 0z\"]\n};\nvar faLongArrowUp = {\n prefix: 'far',\n iconName: 'long-arrow-up',\n icon: [320, 512, [], \"f176\", \"M19.716 184.485l19.626 19.626c4.753 4.753 12.484 4.675 17.14-.173L134 123.22V468c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12V123.22l77.518 80.717c4.656 4.849 12.387 4.927 17.14.173l19.626-19.626c4.686-4.686 4.686-12.284 0-16.971L168.485 35.716c-4.686-4.686-12.284-4.686-16.971 0L19.716 167.515c-4.686 4.686-4.686 12.284 0 16.97z\"]\n};\nvar faLoveseat = {\n prefix: 'far',\n iconName: 'loveseat',\n icon: [512, 512, [], \"f4cc\", \"M448 196.6V128c0-53-43-96-96-96H160c-53 0-96 43-96 96v68.6C29.4 207.3 3.1 236.9.3 273-2 302 9.9 329.5 32 347.6V440c0 22.1 17.9 40 40 40h88c4 0 30.2-.9 31.9-32h128.3c1.4 30.8 28 32 31.9 32h88c22.1 0 40-17.9 40-40v-92.4c22-18.1 34-45.5 31.7-74.6-2.9-36.1-29.2-65.7-63.8-76.4zM144 432H80V321.3l-11.9-7C54.6 306.5 47 292 48.2 276.7 49.7 256.5 69.4 240 92 240h12c22.1 0 40 17.9 40 40v152zm176-128v96H192v-96h128zm3.7-48H188.2c-9.8-34.3-39.7-59.8-76.2-63.2V128c0-26.5 21.5-48 48-48h192c26.5 0 48 21.5 48 48v64.8c-36.6 3.4-66.5 28.9-76.3 63.2zm120.2 58.4l-11.9 7V432h-64V280c0-22.1 17.9-40 40-40h12c22.6 0 42.3 16.5 43.9 36.8 1.1 15.3-6.5 29.7-20 37.6z\"]\n};\nvar faLowVision = {\n prefix: 'far',\n iconName: 'low-vision',\n icon: [576, 512, [], \"f2a8\", \"M569.348 231.63C512.968 135.95 407.81 72 288 72c-31.44 0-61.87 4.4-90.67 12.63L144 5.12c-3.8-5.429-11.282-6.75-16.712-2.95l-19.657 13.758c-5.43 3.8-6.751 11.284-2.95 16.713L150.8 101.84c-58.851 27-110.003 71.82-144.147 129.79a47.963 47.963 0 0 0 0 48.74c36.15 61.35 92.357 109.66 159.637 136.42L50.65 251.6a273.208 273.208 0 0 1 38.609-49.099L254.32 438.3c19.795 2.055 40.851 2.183 59.09.73L126.009 171.311a277.521 277.521 0 0 1 52.851-29.381l.34.49L432 506.881c3.8 5.429 11.282 6.75 16.712 2.95l19.657-13.758c5.43-3.8 6.751-11.283 2.95-16.713l-46.119-69.2c60.42-27.72 110.818-73.22 144.148-129.79a47.963 47.963 0 0 0 0-48.74zM397.15 370.08l-26.59-37.99c54.022-41.348 68.205-114.637 37.44-172.13v.04c0 30.93-25.07 56-56 56s-56-25.07-56-56c0-15.17 6.04-28.92 15.84-39.01 92.48 7.74 172 60.08 216.16 135.01-29.8 50.57-75.71 90.86-130.85 114.08z\"]\n};\nvar faLuchador = {\n prefix: 'far',\n iconName: 'luchador',\n icon: [448, 512, [], \"f455\", \"M224 0C100.3 0 0 100.3 0 224v128c0 88.4 71.6 160 160 160h128c88.4 0 160-71.6 160-160V224C448 100.3 347.7 0 224 0zm176 352c0 61.8-50.2 112-112 112H160c-61.8 0-112-50.2-112-112V224c0-97 79-176 176-176s176 79 176 176v128zM226.5 226.2c-.9-.7-4.2-.7-5.1 0C213.3 188.3 182 160 144 160H76c-6.6 0-12 5.4-12 12v30.7c0 47.1 35.8 85.3 80 85.3h22.4c-7.4 12.2-12.5 23.5-15.8 32.9-30.9 4.6-54.6 31-54.6 63.1 0 35.5 29.4 64 64.9 64H287c35.5 0 64.9-28.5 64.9-64 0-32.1-23.7-58.5-54.6-63.1-3.3-9.5-8.4-20.7-15.8-32.9H304c44.2 0 80-38.2 80-85.3V172c0-6.6-5.4-12-12-12h-68c-37.9 0-69.3 28.3-77.5 66.2zm-2.5 40.5c20.2 19.9 31.9 38.6 38.7 53.3h-77.4c6.8-14.8 18.5-33.4 38.7-53.3zM144 256c-26.5 0-48-23.9-48-53.3V192h48c26.5 0 48 23.9 48 53.3v8.7c-.6.7-1.2 1.3-1.8 2H144zm144 96c17.6 0 32 14.4 32 32s-14.4 32-32 32H160c-17.6 0-32-14.4-32-32s14.4-32 32-32h128zm64-149.3c0 29.4-21.5 53.3-48 53.3h-46.2c-.6-.7-1.2-1.3-1.8-2v-8.7c0-29.4 21.5-53.3 48-53.3h48v10.7z\"]\n};\nvar faLuggageCart = {\n prefix: 'far',\n iconName: 'luggage-cart',\n icon: [640, 512, [], \"f59d\", \"M624 400H144V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v16c0 8.84 7.16 16 16 16h80v384c0 8.84 7.16 16 16 16h50.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-400-48h320c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32h-64V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v48h-64c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32zm256-208h48v160h-48V144zM336 48h96v48h-96V48zm0 96h96v160h-96V144zm-96 0h48v160h-48V144z\"]\n};\nvar faLungs = {\n prefix: 'far',\n iconName: 'lungs',\n icon: [640, 512, [], \"f604\", \"M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78 0 472.11 45.63 512 98.07 512c18.09 0 24.45-2.87 86.68-19.55 42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-48 32v55.49c0 19.25-14.67 36.62-35.68 42.25C107.71 463.4 107.88 464 98.07 464c-30.31 0-57.91-23.57-47.79-61.49C70.68 325.93 103 252.74 146.33 185c23.04-36.41 25.34-41 39.62-41 11.95 0 22.05 8.11 22.05 17.71v92.11l-80 53.33c-7.35 4.9-9.34 14.83-4.44 22.19l8.88 13.31c4.9 7.35 14.84 9.34 22.19 4.44L320 236.84l165.38 110.25c7.35 4.9 17.29 2.91 22.19-4.44l8.88-13.31c4.9-7.35 2.91-17.29-4.44-22.19l-80-53.33v-92.11c0-9.6 10.1-17.71 22.05-17.71 14.28 0 16.57 4.59 39.62 41 43.33 67.74 75.65 140.93 96.06 217.51 10.12 37.92-17.48 61.49-47.79 61.49-9.81 0-9.64-.6-74.25-17.91-21.01-5.63-35.68-23.01-35.68-42.25v-55.49l-48-32v87.49c0 41.15 29.08 77.31 71.26 88.62 62.22 16.68 68.59 19.55 86.68 19.55 52.44 0 98.07-39.89 98.07-92.22-.03-10-1.33-19.95-3.92-29.64z\"]\n};\nvar faLungsVirus = {\n prefix: 'far',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M636.08,390.14a821.47,821.47,0,0,0-102-231C512,124.56,498,96,454,96c-38.69,0-70,29.42-70,65.7v27.77a47.2,47.2,0,0,1,48-2.69V161.7c0-9.6,10.1-17.7,22.05-17.7,14.28,0,16.56,4.59,39.62,41A772.73,772.73,0,0,1,589.71,402.5C599.83,440.42,572.24,464,541.93,464c-9.81,0-9.64-.6-74.25-17.91a51.21,51.21,0,0,1-18.08-9.42c-1.73,2.6-2.87,5.49-5.17,7.78A47.65,47.65,0,0,1,410.5,458.5a48.69,48.69,0,0,1-7.76-.75,98,98,0,0,0,52.52,34.69C517.47,509.13,523.85,512,541.93,512c52.45,0,98.07-39.89,98.07-92.22A116,116,0,0,0,636.08,390.14Zm-440.54,54.3c-2.3-2.29-3.43-5.17-5.16-7.77a51,51,0,0,1-18.06,9.39C107.7,463.39,107.87,464,98.06,464c-30.3,0-57.91-23.57-47.78-61.49a772.42,772.42,0,0,1,96-217.51c23.05-36.4,25.34-41,39.62-41,12,0,22.05,8.1,22.05,17.7v25.07a47.22,47.22,0,0,1,48,2.7V161.7c0-36.28-31.36-65.7-70.05-65.7-44,0-57.93,28.56-80,63.12a821.47,821.47,0,0,0-102,231A114.68,114.68,0,0,0,0,419.77C0,472.09,45.62,512,98.06,512c18.09,0,24.45-2.87,86.68-19.54a98.06,98.06,0,0,0,52.52-34.7,46.51,46.51,0,0,1-41.72-13.3ZM344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.44,46.44,0,0,1,48,0Zm77.85,271.14a16,16,0,0,0,0-22.63l-8.58-8.57C393.09,370.46,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.62l-8.57,8.57C370.47,246.9,336,232.62,336,204.11V192a16,16,0,0,0-32,0v12.11c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.57a16,16,0,0,0-22.63,22.62l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,0,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V448a16,16,0,0,0,32,0V435.87c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Z\"]\n};\nvar faMace = {\n prefix: 'far',\n iconName: 'mace',\n icon: [512, 512, [], \"f6f8\", \"M304 176c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm196.98 18.97l-56.5-17.91c-12.21-55.61-56.4-99.15-112.42-110.23L313.05 10.8c-4.92-14.5-17.46-14.37-22.08.22l-17.91 56.5c-55.61 12.21-99.15 56.4-110.23 112.42l-56.03 19.01c-14.5 4.92-14.37 17.46.22 22.08l56.5 17.91c4.21 19.18 12.29 36.81 23.31 52.29L3.51 474.54c-4.69 4.69-4.69 12.29 0 16.97l16.97 16.97c4.69 4.69 12.29 4.69 16.97 0l183.32-183.32c16.26 11.57 34.87 19.99 55.16 24l19.01 56.03c4.92 14.5 17.46 14.37 22.08-.22l17.91-56.5c55.61-12.21 99.15-56.4 110.23-112.42l56.03-19.01c14.51-4.91 14.38-17.45-.21-22.07zM304 304c-52.94 0-96-43.07-96-96 0-52.94 43.06-96 96-96s96 43.06 96 96c0 52.93-43.06 96-96 96z\"]\n};\nvar faMagic = {\n prefix: 'far',\n iconName: 'magic',\n icon: [512, 512, [], \"f0d0\", \"M497.94 76.28l-62.22-62.22C426.34 4.69 414.06 0 401.78 0c-12.29 0-24.57 4.69-33.94 14.06L14.06 367.84c-18.75 18.75-18.75 49.14 0 67.88l62.22 62.22c9.37 9.37 21.66 14.06 33.94 14.06 12.28 0 24.57-4.69 33.94-14.06l353.77-353.78c18.76-18.74 18.76-49.13.01-67.88zM110.23 464L48 401.78l223.9-223.93 62.24 62.24L110.23 464zm257.85-257.86l-62.24-62.24L401.73 48h.05L464 110.22l-95.92 95.92zM432 288l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zM224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160z\"]\n};\nvar faMagnet = {\n prefix: 'far',\n iconName: 'magnet',\n icon: [512, 512, [], \"f076\", \"M509.8 55.6c-1.2-3.3-2.9-6.4-5-9.2-6.6-8.8-17-14.5-28.8-14.5H372c-12.4 0-23.4 6.3-29.9 15.9-1 1.4-1.8 2.9-2.6 4.5-2.3 4.7-3.5 10-3.5 15.6v172c0 64-40 96-79.9 96-40 0-80.1-32-80.1-96V68c0-4.3-.8-8.5-2.2-12.4-1.2-3.3-2.9-6.4-5-9.2-6.6-8.8-17-14.5-28.8-14.5H36c-11.8 0-22.3 5.7-28.8 14.5-2.1 2.8-3.8 5.9-5 9.2C.8 59.5 0 63.7 0 68v189.3C0 408 136.2 504 256.8 504 377.5 504 512 408 512 257.3V68c0-4.3-.8-8.5-2.2-12.4zM464 257.3c0 28.9-6.1 56.2-18.2 81.3-11.2 23.4-27.3 44.4-47.9 62.5-19.5 17.2-42.9 31.2-67.6 40.7-24.1 9.3-49.6 14.2-73.6 14.2-49.5 0-102.6-20.6-142.1-55-20.7-18.1-37-39.1-48.4-62.5-12-25.1-18.2-52.4-18.2-81.2V176h80v64c0 53.1 20.7 86.3 38 104.8 11.9 12.7 26 22.6 41.8 29.3 15.3 6.5 31.6 9.9 48.2 9.9 16.7 0 32.9-3.3 48.2-9.8 15.8-6.8 29.9-16.6 41.8-29.3 17.3-18.5 38-51.7 38-104.8v-64h80v81.2z\"]\n};\nvar faMailBulk = {\n prefix: 'far',\n iconName: 'mail-bulk',\n icon: [576, 512, [], \"f674\", \"M112 48h288v48h48V48c0-26.51-21.49-48-48-48H112C85.49 0 64 21.49 64 48v144h48V48zm224 176H48c-26.51 0-48 21.49-48 48v192c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V272c0-26.51-21.49-48-48-48zm0 240H48V343.96c14.49 11.01 80 58.12 80 58.12 14.44 11.2 38.62 29.92 64 29.92s49.56-18.72 64-29.92c0 0 65.5-47.1 80-58.12V464zm0-178.61c-2.37 1.85-111.81 81.94-117.09 85.55-8.5 5.83-19.1 13.06-26.91 13.06-9.41 0-22.69-10.55-31.5-17.53-3.41-2.72-110.13-82.43-112.5-84.28V272h288v13.39zM528 128H240c-26.51 0-48 21.49-48 48v16h48v-16h288v192H416v48h112c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 80v64h64v-64h-64z\"]\n};\nvar faMailbox = {\n prefix: 'far',\n iconName: 'mailbox',\n icon: [576, 512, [], \"f813\", \"M432 64H144A144 144 0 0 0 0 208v208a32 32 0 0 0 32 32h512a32 32 0 0 0 32-32V208A144 144 0 0 0 432 64zM240 400H48V208a96 96 0 0 1 192 0zm288 0H288V208c0-37.05-14.38-70.48-37.37-96H432a96.1 96.1 0 0 1 96 96zm-64-208H344a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8h72v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm-280 0h-80a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h80a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8z\"]\n};\nvar faMale = {\n prefix: 'far',\n iconName: 'male',\n icon: [256, 512, [], \"f183\", \"M211.421 155.079C221.892 139.273 228 120.338 228 100 228 44.86 183.14 0 128 0S28 44.86 28 100c0 20.338 6.108 39.273 16.579 55.079C18.005 169.985 0 198.424 0 231v89c0 26.039 15.629 48.494 38 58.479V448c0 35.29 28.71 64 64 64h52c35.29 0 64-28.71 64-64v-69.521c22.371-9.984 38-32.44 38-58.479v-89c0-32.576-18.005-61.015-44.579-75.921zM128 48c28.719 0 52 23.281 52 52s-23.281 52-52 52-52-23.281-52-52 23.281-52 52-52zm80 272c0 8.8-7.2 16-16 16h-22v112c0 8.837-7.163 16-16 16h-52c-8.837 0-16-7.163-16-16V336H64c-8.837 0-16-7.163-16-16v-89c0-19.793 15.074-39 40.818-39 24.961 10.671 53.4 10.672 78.364 0 25.37 0 40.818 18.885 40.818 39v89z\"]\n};\nvar faMandolin = {\n prefix: 'far',\n iconName: 'mandolin',\n icon: [512, 512, [], \"f6f9\", \"M507.31 50.67l-46-46a16 16 0 0 0-19.81-2.25l-64 40.07a32 32 0 0 0-14 19.11L345.07 133l-59.23 59.23c-189.15-3.61-236.21 45.17-255.1 64.06-46.81 46.78-39.52 150.35 17.53 207.44C80.22 495.65 126.73 512 169.69 512c33.81 0 65.42-10.12 86-30.74 15.59-15.59 67.83-61.13 64-255.09L379 166.93l71.37-18.46a32 32 0 0 0 19.11-14l40.07-64a16 16 0 0 0-2.24-19.8zM221.77 447.33C211.34 457.77 191.86 464 169.69 464c-32.84 0-66.36-13.11-87.46-34.21-39.72-39.73-43.63-113.5-17.55-139.57 47.87-48.31 156.5-49 172.76-49.6l-49.16 49.16a48.81 48.81 0 1 0 33.94 33.94l49.18-49.19c-.5 14.98-1.14 124.64-49.63 172.8z\"]\n};\nvar faMap = {\n prefix: 'far',\n iconName: 'map',\n icon: [576, 512, [], \"f279\", \"M560.02 32c-1.96 0-3.98.37-5.96 1.16L384.01 96H384L212 35.28A64.252 64.252 0 0 0 191.76 32c-6.69 0-13.37 1.05-19.81 3.14L20.12 87.95A32.006 32.006 0 0 0 0 117.66v346.32C0 473.17 7.53 480 15.99 480c1.96 0 3.97-.37 5.96-1.16L192 416l172 60.71a63.98 63.98 0 0 0 40.05.15l151.83-52.81A31.996 31.996 0 0 0 576 394.34V48.02c0-9.19-7.53-16.02-15.98-16.02zM224 90.42l128 45.19v285.97l-128-45.19V90.42zM48 418.05V129.07l128-44.53v286.2l-.64.23L48 418.05zm480-35.13l-128 44.53V141.26l.64-.24L528 93.95v288.97z\"]\n};\nvar faMapMarked = {\n prefix: 'far',\n iconName: 'map-marked',\n icon: [576, 512, [], \"f59f\", \"M560 160c-2 0-4 .4-6 1.2l-73.5 27.2c-8.2 20.4-20.2 42-34.2 63.8L528 222v193l-128 44.5V316.3c-13.7 17.3-27.9 34.3-42.5 50.8-1.7 1.9-3.6 3.5-5.5 5.1v81.4l-128-45.2v-113c-18.1-24.1-34.8-48.8-48-72.8v180.2l-.6.2L48 450V257l123.6-43c-8-15.4-14.1-30.3-18.3-44.5L20.1 216C8 220.8 0 232.6 0 245.7V496c0 9.2 7.5 16 16 16 2 0 4-.4 6-1.2L192 448l172 60.7c13 4.3 27 4.4 40 .2L555.9 456c12.2-4.9 20.1-16.6 20.1-29.7V176c0-9.2-7.5-16-16-16zM320 352c5 0 10-2 13.5-6.1 35.3-40 127.3-150.1 127.3-210.6C460.8 60.6 397.8 0 320 0S179.2 60.6 179.2 135.3c0 60.4 92 170.6 127.3 210.6C310 350 315 352 320 352zm0-304c51.2 0 92.8 39.2 92.8 87.3 0 21.4-31.8 79.1-92.8 152.6-61-73.5-92.8-131.2-92.8-152.6 0-48.1 41.6-87.3 92.8-87.3z\"]\n};\nvar faMapMarkedAlt = {\n prefix: 'far',\n iconName: 'map-marked-alt',\n icon: [576, 512, [], \"f5a0\", \"M344 126c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 13.2 10.7 24 24 24s24-10.8 24-24zm-24 226c5 0 10-2 13.5-6.1 35.3-40 127.3-150.1 127.3-210.6C460.8 60.6 397.8 0 320 0S179.2 60.6 179.2 135.3c0 60.4 92 170.6 127.3 210.6C310 350 315 352 320 352zm0-304c51.2 0 92.8 39.2 92.8 87.3 0 21.4-31.8 79.1-92.8 152.6-61-73.5-92.8-131.2-92.8-152.6 0-48.1 41.6-87.3 92.8-87.3zm240 112c-2 0-4 .4-6 1.2l-73.5 27.2c-8.2 20.4-20.2 42-34.2 63.8L528 222v193l-128 44.5V316.3c-13.7 17.3-27.9 34.3-42.5 50.8-1.7 1.9-3.6 3.5-5.5 5.1v81.4l-128-45.2v-113c-18.1-24.1-34.8-48.8-48-72.8v180.2l-.6.2L48 450V257l123.6-43c-8-15.4-14.1-30.3-18.3-44.5L20.1 216C8 220.8 0 232.6 0 245.7V496c0 9.2 7.5 16 16 16 2 0 4-.4 6-1.2L192 448l172 60.7c13 4.3 27 4.4 40 .2L555.9 456c12.2-4.9 20.1-16.6 20.1-29.7V176c0-9.2-7.5-16-16-16z\"]\n};\nvar faMapMarker = {\n prefix: 'far',\n iconName: 'map-marker',\n icon: [384, 512, [], \"f041\", \"M192 0C85.903 0 0 86.014 0 192c0 71.117 23.991 93.341 151.271 297.424 18.785 30.119 62.694 30.083 81.457 0C360.075 285.234 384 263.103 384 192 384 85.903 297.986 0 192 0zm0 464C64.576 259.686 48 246.788 48 192c0-79.529 64.471-144 144-144s144 64.471 144 144c0 54.553-15.166 65.425-144 272z\"]\n};\nvar faMapMarkerAlt = {\n prefix: 'far',\n iconName: 'map-marker-alt',\n icon: [384, 512, [], \"f3c5\", \"M192 0C85.903 0 0 86.014 0 192c0 71.117 23.991 93.341 151.271 297.424 18.785 30.119 62.694 30.083 81.457 0C360.075 285.234 384 263.103 384 192 384 85.903 297.986 0 192 0zm0 464C64.576 259.686 48 246.788 48 192c0-79.529 64.471-144 144-144s144 64.471 144 144c0 54.553-15.166 65.425-144 272zm-80-272c0-44.183 35.817-80 80-80s80 35.817 80 80-35.817 80-80 80-80-35.817-80-80z\"]\n};\nvar faMapMarkerAltSlash = {\n prefix: 'far',\n iconName: 'map-marker-alt-slash',\n icon: [640, 512, [], \"f605\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM320 48c79.4 0 144 64.6 144 144 0 25.07-2.93 41.62-18.88 70.43l38.23 29.89C505.9 253.46 512 228.95 512 192 512 86.4 425.6 0 320 0c-53.42 0-101.88 22.16-136.77 57.69l38.22 29.88C247.25 63.21 281.8 48 320 48zm-34.23 89.85l94.83 74.14c2.03-6.31 3.4-12.93 3.4-19.99 0-35.84-28.16-64-64-64-12.71 0-24.37 3.68-34.23 9.85zm73.64 252.24c-11.9 16.87-25 35.44-39.41 55.99-14.41-20.56-27.51-39.12-39.41-55.99-58.27-82.6-84.42-120.33-95.93-148.51l-56.53-44.2c1.27 72.49 29.05 98.96 172.67 305.02 4.8 6.4 12 9.6 19.2 9.6 7.2 0 14.4-3.2 19.2-9.6 24.46-35.1 45.29-64.59 63.47-90.38l-37.86-29.6c-1.84 2.61-3.5 4.97-5.4 7.67z\"]\n};\nvar faMapMarkerCheck = {\n prefix: 'far',\n iconName: 'map-marker-check',\n icon: [384, 512, [], \"f606\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 4.8 6.4 12 9.6 19.2 9.6s14.4-3.2 19.2-9.6C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm0 446.09c-14.41-20.56-27.51-39.12-39.41-55.99C58.35 256.48 48 240.2 48 192c0-79.4 64.6-144 144-144s144 64.6 144 144c0 48.2-10.35 64.48-104.59 198.09-11.9 16.87-25 35.44-39.41 56zm99.93-292.32l-23.21-23.4c-3.85-3.88-10.11-3.9-13.98-.06l-87.36 86.66-37.88-38.19c-3.84-3.88-10.11-3.9-13.98-.06l-23.4 23.21c-3.88 3.85-3.9 10.11-.06 13.98l68.05 68.6c3.85 3.88 10.11 3.9 13.98.06l117.78-116.83c3.88-3.84 3.91-10.1.06-13.97z\"]\n};\nvar faMapMarkerEdit = {\n prefix: 'far',\n iconName: 'map-marker-edit',\n icon: [384, 512, [], \"f607\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 4.8 6.4 12 9.6 19.2 9.6s14.4-3.2 19.2-9.6C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm0 446.09c-14.41-20.56-27.51-39.12-39.41-55.99C58.35 256.48 48 240.2 48 192c0-79.4 64.6-144 144-144s144 64.6 144 144c0 48.2-10.35 64.48-104.59 198.09-11.9 16.87-25 35.44-39.41 56zm-78.41-231.66l-4.8 42.83c-.62 5.68 4.18 10.57 9.95 9.95l42.83-4.8 67.11-67.11-47.98-47.98-67.11 67.11zM247.43 106c-7.02-7.02-18.39-7.02-25.41 0l-18.7 18.7 47.98 47.98 18.7-18.7c7.02-7.02 7.02-18.39 0-25.41L247.43 106z\"]\n};\nvar faMapMarkerExclamation = {\n prefix: 'far',\n iconName: 'map-marker-exclamation',\n icon: [384, 512, [], \"f608\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 4.8 6.4 12 9.6 19.2 9.6s14.4-3.2 19.2-9.6C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm0 446.09c-14.41-20.56-27.51-39.12-39.41-55.99C58.35 256.48 48 240.2 48 192c0-79.4 64.6-144 144-144s144 64.6 144 144c0 48.2-10.35 64.48-104.59 198.09-11.9 16.87-25 35.44-39.41 56zM192 256c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm28.72-160h-57.44c-10.02 0-17.57 9.1-15.73 18.95l18 96A16.001 16.001 0 0 0 181.28 224h21.44c7.7 0 14.31-5.48 15.73-13.05l18-96c1.84-9.85-5.71-18.95-15.73-18.95z\"]\n};\nvar faMapMarkerMinus = {\n prefix: 'far',\n iconName: 'map-marker-minus',\n icon: [384, 512, [], \"f609\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 4.8 6.4 12 9.6 19.2 9.6 7.2 0 14.4-3.2 19.2-9.6C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm0 446.09c-14.41-20.56-27.51-39.13-39.41-56C58.35 256.48 48 240.2 48 192c0-79.4 64.6-144 144-144s144 64.6 144 144c0 48.2-10.35 64.48-104.59 198.09-11.9 16.87-25 35.44-39.41 56zM272 168H112c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMapMarkerPlus = {\n prefix: 'far',\n iconName: 'map-marker-plus',\n icon: [384, 512, [], \"f60a\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 4.8 6.4 12 9.6 19.2 9.6 7.2 0 14.4-3.2 19.2-9.6C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm0 446.09c-14.41-20.56-27.51-39.13-39.41-56C58.35 256.48 48 240.2 48 192c0-79.4 64.6-144 144-144s144 64.6 144 144c0 48.2-10.35 64.48-104.59 198.09-11.9 16.87-25 35.44-39.41 56zM272 168h-56v-56c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v56h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMapMarkerQuestion = {\n prefix: 'far',\n iconName: 'map-marker-question',\n icon: [384, 512, [], \"f60b\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 4.8 6.4 12 9.6 19.2 9.6s14.4-3.2 19.2-9.6C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm0 446.09c-14.41-20.56-27.51-39.12-39.41-55.99C58.35 256.48 48 240.2 48 192c0-79.4 64.6-144 144-144s144 64.6 144 144c0 48.2-10.35 64.48-104.59 198.09-11.9 16.87-25 35.44-39.41 56zM194.67 88c-41.81 0-76.9 29.3-85.81 68.45-2.28 9.99 5.2 19.55 15.44 19.55h16.84c7.22 0 13.19-4.99 15.33-11.88 5.07-16.27 20.27-28.12 38.2-28.12 25.98 0 40 20.61 40 40 0 15.96-20.07 27.19-50.67 42.5-8.14 4.07-13.33 12.4-13.33 21.5v16.16c0 8.75 7.09 15.84 15.84 15.84h16.32c8.75 0 15.84-7.09 15.84-15.84v-1.43c31.25-16.27 64-37.78 64-78.73 0-43.25-32.92-88-88-88zM192 288c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faMapMarkerSlash = {\n prefix: 'far',\n iconName: 'map-marker-slash',\n icon: [640, 512, [], \"f60c\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM320 48c79.4 0 144 64.6 144 144 0 25.07-2.93 41.62-18.88 70.43l38.23 29.89C505.9 253.46 512 228.95 512 192 512 86.4 425.6 0 320 0c-53.42 0-101.88 22.16-136.77 57.69l38.22 29.88C247.25 63.21 281.8 48 320 48zm39.41 342.09c-11.9 16.87-25 35.44-39.41 55.99-14.41-20.56-27.51-39.12-39.41-55.99-58.27-82.6-84.42-120.33-95.93-148.51l-56.53-44.2c1.27 72.49 29.05 98.96 172.67 305.02 4.8 6.4 12 9.6 19.2 9.6s14.4-3.2 19.2-9.6c24.46-35.1 45.29-64.59 63.48-90.38l-37.87-29.6c-1.84 2.61-3.5 4.97-5.4 7.67z\"]\n};\nvar faMapMarkerSmile = {\n prefix: 'far',\n iconName: 'map-marker-smile',\n icon: [384, 512, [], \"f60d\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 4.8 6.4 12 9.6 19.2 9.6s14.4-3.2 19.2-9.6C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm0 446.09c-14.41-20.56-27.51-39.12-39.41-55.99C58.35 256.48 48 240.2 48 192c0-79.4 64.6-144 144-144s144 64.6 144 144c0 48.2-10.35 64.48-104.59 198.09-11.9 16.87-25 35.44-39.41 56zM136 176c13.25 0 24-10.75 24-24 0-13.26-10.75-24-24-24s-24 10.74-24 24c0 13.25 10.75 24 24 24zm112 0c13.25 0 24-10.75 24-24 0-13.26-10.75-24-24-24s-24 10.74-24 24c0 13.25 10.75 24 24 24zm-10 51.23c-23.25 26.38-68.69 26.39-92-.02-8.81-9.98-23.94-10.84-33.91-2.09-9.91 8.78-10.84 23.94-2.09 33.88 20.78 23.52 50.69 37 82 37 31.38 0 61.25-13.5 82-37.02 8.78-9.94 7.81-25.11-2.12-33.88-9.91-8.74-25.07-7.83-33.88 2.13z\"]\n};\nvar faMapMarkerTimes = {\n prefix: 'far',\n iconName: 'map-marker-times',\n icon: [384, 512, [], \"f60e\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 4.8 6.4 12 9.6 19.2 9.6 7.2 0 14.4-3.2 19.2-9.6C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm0 446.09c-14.41-20.56-27.51-39.13-39.41-56C58.35 256.48 48 240.2 48 192c0-79.4 64.6-144 144-144s144 64.6 144 144c0 48.2-10.35 64.48-104.59 198.09-11.9 16.87-25 35.44-39.41 56zm73.54-316.32l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-39.6 39.6-39.6-39.6c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l39.6 39.6-39.6 39.6c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l39.6-39.6 39.6 39.6c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63l-39.6-39.6 39.6-39.6c6.25-6.25 6.25-16.38 0-22.63z\"]\n};\nvar faMapPin = {\n prefix: 'far',\n iconName: 'map-pin',\n icon: [288, 512, [], \"f276\", \"M144 0C64.47 0 0 64.47 0 144c0 71.31 51.96 130.1 120 141.58v197.64l16.51 24.77c3.56 5.34 11.41 5.34 14.98 0L168 483.22V285.58C236.04 274.1 288 215.31 288 144 288 64.47 223.53 0 144 0zm0 240c-52.94 0-96-43.07-96-96 0-52.94 43.06-96 96-96s96 43.06 96 96c0 52.93-43.06 96-96 96zm0-160c-35.28 0-64 28.7-64 64 0 8.84 7.16 16 16 16s16-7.16 16-16c0-17.64 14.34-32 32-32 8.84 0 16-7.16 16-16s-7.16-16-16-16z\"]\n};\nvar faMapSigns = {\n prefix: 'far',\n iconName: 'map-signs',\n icon: [512, 512, [], \"f277\", \"M441.37 192c8.49 0 16.62-4.21 22.63-11.72l43.31-54.14c6.25-7.81 6.25-20.47 0-28.29L464 43.71C458 36.21 449.86 32 441.37 32H280V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 13.43-24 30v100c0 16.57 10.75 30 24 30h176v32H70.63C62.14 224 54 228.21 48 235.71L4.69 289.86c-6.25 7.81-6.25 20.47 0 28.29L48 372.28c6 7.5 14.14 11.72 22.63 11.72H232v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V384h176c13.25 0 24-13.43 24-30V254c0-16.57-10.75-30-24-30H280v-32h161.37zM432 336H80.44l-25.6-32 25.6-32H432v64zM80 80h351.56l25.6 32-25.6 32H80V80z\"]\n};\nvar faMarker = {\n prefix: 'far',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M485.48 26.51C467.81 8.84 444.64 0 421.47 0s-46.33 8.84-64.01 26.51L335.7 48.27l-36.55-36.55c-15.62-15.62-40.95-15.62-56.56 0L123.8 130.5c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0L270.87 51.31l30.9 30.9L93.95 290.02A327.038 327.038 0 0 0 .17 485.11l-.03.23C-1.45 499.72 9.88 512 23.95 512c5.73 0 111.06-6.99 198.03-93.95l263.51-263.51c35.35-35.36 35.35-92.67-.01-128.03zm-297.45 357.6c-37.02 37.02-83.99 62.88-134.74 74.6 11.72-50.74 37.59-97.73 74.6-134.74l73.07-73.07 60.14 60.14-73.07 73.07zm263.52-263.52L295.04 277.1l-60.14-60.14 156.51-156.5C399.44 52.42 410.12 48 421.47 48c11.36 0 22.04 4.42 30.07 12.46C459.58 68.49 464 79.17 464 90.52c0 11.36-4.42 22.04-12.45 30.07z\"]\n};\nvar faMars = {\n prefix: 'far',\n iconName: 'mars',\n icon: [384, 512, [], \"f222\", \"M372 64h-63c-10.7 0-16 12.9-8.5 20.5L315 99l-87.6 87.6C203.9 169.9 175.1 160 144 160 64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-31.1-9.9-59.9-26.6-83.4L349 133l14.5 14.5c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 400c-52.9 0-96-43.1-96-96s43.1-96 96-96 96 43.1 96 96-43.1 96-96 96z\"]\n};\nvar faMarsDouble = {\n prefix: 'far',\n iconName: 'mars-double',\n icon: [512, 512, [], \"f227\", \"M288 208c0-31.1-9.9-59.9-26.6-83.4L317 69l14.5 14.5c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12h-63c-10.7 0-16 12.9-8.5 20.5L283 35l-55.6 55.6C203.9 73.9 175.1 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144zm-144 96c-52.9 0-96-43.1-96-96s43.1-96 96-96 96 43.1 96 96-43.1 96-96 96zm368-132v63c0 10.7-12.9 16-20.5 8.5L477 229l-55.6 55.6c16.8 23.5 26.6 52.3 26.6 83.4 0 79.5-64.5 144-144 144-74.4 0-135.6-56.4-143.2-128.8 16.1-1.5 32-5.3 47.3-11.2 2.1 51.1 44.3 92 95.9 92 52.9 0 96-43.1 96-96 0-51.6-40.9-93.8-92-95.9 6-15.3 9.7-31.2 11.2-47.3 25.3 2.7 48.6 11.8 68.2 25.8L443 195l-14.5-14.5c-7.6-7.6-2.2-20.5 8.5-20.5h63c6.6 0 12 5.4 12 12z\"]\n};\nvar faMarsStroke = {\n prefix: 'far',\n iconName: 'mars-stroke',\n icon: [384, 512, [], \"f229\", \"M372 64h-63c-10.7 0-16 12.9-8.5 20.5L315 99l-23.4 23.4-14.1-14.1c-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-30.2 30.2C203.9 169.9 175.1 160 144 160 64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-31.1-9.9-59.9-26.6-83.4l30.2-30.2 14.1 14.1c4.7 4.7 12.3 4.7 17 0l17-17c4.7-4.7 4.7-12.3 0-17l-14.1-14.1L349 133l14.5 14.5c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 400c-52.9 0-96-43.1-96-96s43.1-96 96-96 96 43.1 96 96-43.1 96-96 96z\"]\n};\nvar faMarsStrokeH = {\n prefix: 'far',\n iconName: 'mars-stroke-h',\n icon: [480, 512, [], \"f22b\", \"M476.5 247.5l-44.6-44.6c-7.6-7.6-20.5-2.2-20.5 8.5V232H376v-20c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v20h-42c-4.8-28.5-18.2-55.8-40.2-77.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 22-22 35.4-49.3 40.2-77.8h42v20c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12v-20h35.4v20.6c0 10.7 12.9 16 20.5 8.5l44.6-44.6c4.7-4.7 4.7-12.3 0-17zm-264.6 76.4c-37.4 37.4-98.3 37.4-135.8 0-37.4-37.4-37.4-98.3 0-135.8 37.4-37.4 98.3-37.4 135.8 0 37.4 37.4 37.4 98.4 0 135.8z\"]\n};\nvar faMarsStrokeV = {\n prefix: 'far',\n iconName: 'mars-stroke-v',\n icon: [288, 512, [], \"f22a\", \"M245.8 234.2c-22-22-49.3-35.4-77.8-40.2v-42.7h20c6.6 0 12-5.4 12-12v-24c0-6.6-5.4-12-12-12h-20V70.1h20.6c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L90.9 49.6c-7.6 7.6-2.2 20.5 8.5 20.5H120v33.1h-20c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h20V194c-28.5 4.8-55.8 18.2-77.8 40.2-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-33.9 169.7c-37.4 37.4-98.3 37.4-135.8 0-37.4-37.4-37.4-98.3 0-135.8 37.4-37.4 98.3-37.4 135.8 0 37.4 37.4 37.4 98.4 0 135.8z\"]\n};\nvar faMask = {\n prefix: 'far',\n iconName: 'mask',\n icon: [640, 512, [], \"f6fa\", \"M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c7.83-11.5 19.57-17.25 31.31-17.25 11.74 0 23.49 5.75 31.31 17.25l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zm158.46 331.64c-24.57 0-48.08-12.98-62.88-34.72l-25.73-37.79c-16.61-24.39-42.07-38.38-69.85-38.38-27.78 0-53.24 13.99-69.85 38.38l-25.73 37.79c-14.8 21.74-38.31 34.72-62.88 34.72C93.89 395.64 48 332.11 48 272.77c0-38.62 18.1-73.1 52.35-99.7 33.3-25.87 98.55-56.71 220.32-56.71 122.22 0 187.15 30.17 220.1 55.48 33.52 25.75 51.23 59.42 51.23 97.37 0 59.8-46.35 126.43-112.87 126.43zM192 186.18c-39.11 0-64.53 25.66-76.27 41.05-4.98 6.53-4.98 16.1 0 22.63 11.73 15.4 37.16 41.05 76.27 41.05s64.53-25.66 76.27-41.05c4.98-6.53 4.98-16.09 0-22.63-11.74-15.39-37.16-41.05-76.27-41.05zm256 0c-39.11 0-64.53 25.66-76.27 41.05-4.98 6.53-4.98 16.1 0 22.63 11.73 15.4 37.16 41.05 76.27 41.05s64.53-25.66 76.27-41.05c4.98-6.53 4.98-16.09 0-22.63-11.74-15.39-37.16-41.05-76.27-41.05z\"]\n};\nvar faMeat = {\n prefix: 'far',\n iconName: 'meat',\n icon: [512, 512, [], \"f814\", \"M444 68.52C399.45 24.05 345.11 0 299.18 0c-38.65 0-62 19.06-68.77 25.85-38.72 38.68-102.26 113.78-102.26 183.6v72.67L116.3 294c-1.93 1.88-5.76 1-7.75.17A79.19 79.19 0 0 0 23.22 423.7a76.41 76.41 0 0 0 43.57 21.59 76.39 76.39 0 0 0 21.57 43.55 79.19 79.19 0 0 0 129.58-85.33c-1-2.5-1.56-6 .16-7.75L229.87 384h73c81.9 0 181.09-94.54 190.46-111.16 37.43-49.42 17.38-137.65-49.33-204.32zM302.88 336H210l-25.85 25.82c-15.24 15.24-19.37 38.05-10.78 59.52A31.07 31.07 0 0 1 144.43 464c-12 0-27.64-7.82-30.11-25.38l-5-35.81-35.8-5.05C56 395.28 48 379.7 48 367.65a31.13 31.13 0 0 1 42.5-29 60.4 60.4 0 0 0 22.5 4.42 52.76 52.76 0 0 0 37.27-15.17l25.9-25.9v-92.55c0-22.79 11.76-51.7 32.33-82.69 8.62 39.31 31.34 79.12 64.7 112.45s73.54 56.08 112.19 64.6C354.34 324.38 325.57 336 302.88 336zm149.82-88.09c-23.44 23.42-89.77 13.12-145.61-42.67-53.75-53.69-67.28-120.9-42.71-145.45 23.44-23.42 89.76-13.11 145.62 42.67 53.88 53.83 67 121.19 42.7 145.45zM331.89 127.23c-9.81 9.8-5.84 29.67 8.88 44.37s34.61 18.68 44.42 8.87 5.84-29.66-8.88-44.37-34.61-18.67-44.42-8.87z\"]\n};\nvar faMedal = {\n prefix: 'far',\n iconName: 'medal',\n icon: [512, 512, [], \"f5a2\", \"M342.17 281.67l-52.43-7.64-23.43-47.52c-2.11-4.25-6.22-6.39-10.33-6.39-4.08 0-8.16 2.12-10.28 6.39l-23.43 47.52-52.43 7.64c-9.4 1.36-13.17 12.96-6.35 19.59l37.93 36.96-8.97 52.22c-1.28 7.46 4.67 13.44 11.32 13.44 1.77 0 3.58-.42 5.33-1.35l46.9-24.65 46.9 24.65c1.74.92 3.55 1.33 5.31 1.33 6.66 0 12.62-5.96 11.34-13.43l-8.97-52.22 37.93-36.96c6.83-6.63 3.06-18.22-6.34-19.58zM495.97 0H338.12c-11.24 0-21.66 5.9-27.44 15.54L256 106.67l-54.68-91.13A31.997 31.997 0 0 0 173.88 0H16.03C3.08 0-4.5 14.57 2.92 25.18l113.99 162.85C84.21 222.47 64 268.87 64 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-51.13-20.21-97.53-52.91-131.98L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM77.49 48h87.33l50.64 84.4c-22.11 4.78-42.73 13.45-61.3 25.13L77.49 48zM400 320c0 79.53-64.47 144-144 144s-144-64.47-144-144 64.47-144 144-144 144 64.47 144 144zm-42.16-162.47c-18.57-11.68-39.19-20.36-61.3-25.13L347.18 48h87.33l-76.67 109.53z\"]\n};\nvar faMedkit = {\n prefix: 'far',\n iconName: 'medkit',\n icon: [512, 512, [], \"f0fa\", \"M464 96H352V80c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v16H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V144c0-26.51-21.49-48-48-48zM208 80h96v16h-96V80zM54 432a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6H54zm298-160v32c0 6.627-5.373 12-12 12h-56v56c0 6.627-5.373 12-12 12h-32c-6.627 0-12-5.373-12-12v-56h-56c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h56v-56c0-6.627 5.373-12 12-12h32c6.627 0 12 5.373 12 12v56h56c6.627 0 12 5.373 12 12z\"]\n};\nvar faMegaphone = {\n prefix: 'far',\n iconName: 'megaphone',\n icon: [576, 512, [], \"f675\", \"M560 32h-16c-8.84 0-16 7.16-16 16v12.94L47.28 172.41C45.61 165.36 39.56 160 32 160H16c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16h16c7.56 0 13.61-5.36 15.28-12.41l115.01 26.67c-1.17 5.78-2.28 11.6-2.28 17.74 0 53.02 42.98 96 96 96 44.19 0 80.99-29.99 92.08-70.66L528 451.06V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16zM256 432c-26.47 0-48-21.53-48-48 0-2.42.9-4.54 1.25-6.85l92.25 21.39C295.3 417.87 277.37 432 256 432zM48 290.5v-69l480-111.31V401.8L48 290.5z\"]\n};\nvar faMeh = {\n prefix: 'far',\n iconName: 'meh',\n icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z\"]\n};\nvar faMehBlank = {\n prefix: 'far',\n iconName: 'meh-blank',\n icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faMehRollingEyes = {\n prefix: 'far',\n iconName: 'meh-rolling-eyes',\n icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm88-304c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 112c-22.1 0-40-17.9-40-40 0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40zm-104-40c0-39.8-32.2-72-72-72s-72 32.2-72 72 32.2 72 72 72 72-32.2 72-72zm-112 0c0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40s-40-17.9-40-40zm192 128H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z\"]\n};\nvar faMemory = {\n prefix: 'far',\n iconName: 'memory',\n icon: [640, 512, [], \"f538\", \"M480 160h-64v128h64V160zm-128 0h-64v128h64V160zm-128 0h-64v128h64V160zm408 0h8V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v64h8c13.26 0 24 10.74 24 24 0 13.25-10.74 24-24 24H0v240h640V208h-8c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24zm-40 240h-64c0-8.84-7.16-16-16-16s-16 7.16-16 16h-96c0-8.84-7.16-16-16-16s-16 7.16-16 16h-96c0-8.84-7.16-16-16-16s-16 7.16-16 16h-96c0-8.84-7.16-16-16-16s-16 7.16-16 16H48v-48h544v48zm0-275.84c-19.29 12.93-32 34.93-32 59.84s12.71 46.91 32 59.84V320H48v-76.16c19.29-12.93 32-34.93 32-59.84s-12.71-46.91-32-59.84V112h544v12.16z\"]\n};\nvar faMenorah = {\n prefix: 'far',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M416 96c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm200 32h-16c-8.84 0-16 7.16-16 16v144h48V144c0-8.84-7.16-16-16-16zm-8-32c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm96 0c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-184 32h-16c-8.84 0-16 7.16-16 16v144h48V144c0-8.84-7.16-16-16-16zM32 96c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm104 32h-16c-8.84 0-16 7.16-16 16v144h48V144c0-8.84-7.16-16-16-16zm88-32c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm400 32h-16c-8.84 0-16 7.16-16 16v136c0 22.09-17.91 40-40 40H344V144c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v176H88c-22.09 0-40-17.91-40-40V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v136c0 48.6 39.4 88 88 88h208v96H112c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H344v-96h208c48.6 0 88-39.4 88-88V144c0-8.84-7.16-16-16-16zM128 96c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm104 32h-16c-8.84 0-16 7.16-16 16v144h48V144c0-8.84-7.16-16-16-16z\"]\n};\nvar faMercury = {\n prefix: 'far',\n iconName: 'mercury',\n icon: [288, 512, [], \"f223\", \"M288 208c0-50.3-25.8-94.6-65-120.4 3.2-2.2 6.2-4.6 9.2-7.2 21.1-18.1 34.1-41.4 37.5-66.8 1-7.2-4.6-13.6-11.9-13.6h-24.3c-5.7 0-10.7 4-11.8 9.7C216 40.4 183.3 64 144 64S72 40.4 66.2 9.7C65.2 4 60.2 0 54.5 0H30.1c-7.3 0-12.9 6.4-11.9 13.6C21.7 39 34.7 62.4 55.8 80.4c3 2.5 6 4.9 9.2 7.2C25.8 113.4 0 157.7 0 208c0 71.6 52.2 130.9 120.6 142.1-.4 1.2-.6 2.4-.6 3.7V408H76c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h44v44c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12v-44h44c6.6 0 12-5.4 12-12v-24c0-6.6-5.4-12-12-12h-44v-54.2c0-1.3-.2-2.6-.6-3.7C235.8 338.9 288 279.6 288 208zm-144 96c-52.9 0-96-43.1-96-96s43.1-96 96-96 96 43.1 96 96-43.1 96-96 96z\"]\n};\nvar faMeteor = {\n prefix: 'far',\n iconName: 'meteor',\n icon: [512, 512, [], \"f753\", \"M510.47232,42.84577C501.974,71.1397,481.35291,137.539,458.16986,196.03293a38.52839,38.52839,0,0,1,20.40233,53.90063C456.57641,292.02293,399.27491,396.30893,342.19212,453.303a200.55515,200.55515,0,0,1-283.53932,0c-78.20373-78.195-78.20373-205.36922,0-283.56419,57.17653-57.10343,161.2503-114.285,203.46094-136.28267a38.607,38.607,0,0,1,53.89591,20.29476c58.27006-23.107,124.851-43.79231,153.25183-52.29143a33.03375,33.03375,0,0,1,41.21084,41.38631ZM393.3698,226.73286l10.71669-24.90366c20.49607-47.88563,40.17979-107.48879,52.39619-146.28163-38.89878,12.20186-98.6998,31.99667-146.28442,52.40079l-24.90147,10.68639L277.7045,92.63746c-1.18727-3.99958-2.312-7.79606-3.40559-11.38944-39.8986,21.29466-132.56831,73.28924-181.65263,122.37787-59.39485,59.4938-59.39485,156.18685,0,215.68065a152.3963,152.3963,0,0,0,215.6461,0c48.49069-48.38559,98.57483-136.78262,122.47649-181.57483-3.59306-.99989-7.40483-2.10915-11.40406-3.29653Zm-81.35938,85.288A111.97851,111.97851,0,1,1,200.03191,200.03252,111.999,111.999,0,0,1,312.01042,312.02084Zm-111.97851-23.9975a23.99539,23.99539,0,1,0-23.99539,23.9975A23.95276,23.95276,0,0,0,200.03191,288.02334Zm31.99386,71.9925a15.99693,15.99693,0,1,0-15.99693,15.99833A16.05882,16.05882,0,0,0,232.02577,360.01584Z\"]\n};\nvar faMicrochip = {\n prefix: 'far',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M368.5 0H144c-26.5 0-48 21.5-48 48v416c0 26.5 21.5 48 48 48h224.5c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm0 457c0 3.3-2.7 7-6 7H150c-3.3 0-6-3.7-6-7V54c0-3.3 2.7-6 6-6h212.5c3.3 0 6 2.7 6 6v403zM512 106v12c0 3.3-2.7 6-6 6h-18v6c0 3.3-2.7 6-6 6h-42V88h42c3.3 0 6 2.7 6 6v6h18c3.3 0 6 2.7 6 6zm0 96v12c0 3.3-2.7 6-6 6h-18v6c0 3.3-2.7 6-6 6h-42v-48h42c3.3 0 6 2.7 6 6v6h18c3.3 0 6 2.7 6 6zm0 96v12c0 3.3-2.7 6-6 6h-18v6c0 3.3-2.7 6-6 6h-42v-48h42c3.3 0 6 2.7 6 6v6h18c3.3 0 6 2.7 6 6zm0 96v12c0 3.3-2.7 6-6 6h-18v6c0 3.3-2.7 6-6 6h-42v-48h42c3.3 0 6 2.7 6 6v6h18c3.3 0 6 2.7 6 6zM30 376h42v48H30c-3.3 0-6-2.7-6-6v-6H6c-3.3 0-6-2.7-6-6v-12c0-3.3 2.7-6 6-6h18v-6c0-3.3 2.7-6 6-6zm0-96h42v48H30c-3.3 0-6-2.7-6-6v-6H6c-3.3 0-6-2.7-6-6v-12c0-3.3 2.7-6 6-6h18v-6c0-3.3 2.7-6 6-6zm0-96h42v48H30c-3.3 0-6-2.7-6-6v-6H6c-3.3 0-6-2.7-6-6v-12c0-3.3 2.7-6 6-6h18v-6c0-3.3 2.7-6 6-6zm0-96h42v48H30c-3.3 0-6-2.7-6-6v-6H6c-3.3 0-6-2.7-6-6v-12c0-3.3 2.7-6 6-6h18v-6c0-3.3 2.7-6 6-6z\"]\n};\nvar faMicrophone = {\n prefix: 'far',\n iconName: 'microphone',\n icon: [352, 512, [], \"f130\", \"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zM128 96c0-26.47 21.53-48 48-48s48 21.53 48 48v160c0 26.47-21.53 48-48 48s-48-21.53-48-48V96z\"]\n};\nvar faMicrophoneAlt = {\n prefix: 'far',\n iconName: 'microphone-alt',\n icon: [352, 512, [], \"f3c9\", \"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zM128 96c0-26.47 21.53-48 48-48s48 21.53 48 48h-40c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h40v32h-40c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h40v32h-40c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h40c0 26.47-21.53 48-48 48s-48-21.53-48-48V96z\"]\n};\nvar faMicrophoneAltSlash = {\n prefix: 'far',\n iconName: 'microphone-alt-slash',\n icon: [640, 512, [], \"f539\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 2.75-.69 5.3-.86 8.01l43.21 33.78c3.32-13.47 5.65-27.31 5.65-41.79zm-96 208h-56v-33.77c20.68-2.84 40.14-9.43 57.9-18.81l-43.1-33.69c-16.09 5.14-33.46 7.42-51.59 5.65C240.72 376.89 192 317.11 192 250.3v-2.98l-48-37.53v38.37c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM272 96c0-26.47 21.53-48 48-48s48 21.53 48 48h-40c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h40v32h-40c-3.42 0-5.79 2.42-6.94 5.44L355.03 192H368v10.14l48 37.53V96c0-53.02-42.98-96-96-96-50.97 0-92.26 39.85-95.4 90.03l47.4 37.06V96z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'far',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 2.75-.69 5.31-.86 8.01l43.21 33.78c3.32-13.47 5.65-27.31 5.65-41.79zm-96 208h-56v-33.77c20.68-2.84 40.14-9.43 57.9-18.81l-43.1-33.69c-16.09 5.14-33.46 7.42-51.59 5.65C240.72 376.89 192 317.11 192 250.3v-2.98l-48-37.53v38.37c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM272 96c0-26.47 21.53-48 48-48s48 21.53 48 48v106.14l48 37.53V96c0-53.02-42.98-96-96-96-50.97 0-92.26 39.85-95.4 90.03l47.4 37.05V96z\"]\n};\nvar faMicrophoneStand = {\n prefix: 'far',\n iconName: 'microphone-stand',\n icon: [512, 512, [], \"f8cb\", \"M476.37 35.63a121.69 121.69 0 0 0-172.07 0l-28.67 28.68a121.18 121.18 0 0 0-35.55 85.08L12 406.85a48 48 0 0 0 2 65.71l25.37 25.38a48 48 0 0 0 65.72 2L232 387.21V496a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V344.83l82.6-72.92a121.23 121.23 0 0 0 85.09-35.54l28.68-28.68a121.67 121.67 0 0 0 0-172.06zM73.38 464L48 438.62l213.15-240.56 52.79 52.78zm288.28-240a72.88 72.88 0 0 1-7.41-.72l-65.51-65.51a73.2 73.2 0 0 1 18.46-56.62L410.86 204.8a73 73 0 0 1-49.2 19.2zm83.13-53.15L341.14 67.2a73.16 73.16 0 0 1 101.28 2.37c27.83 27.82 28.44 72.43 2.37 101.28z\"]\n};\nvar faMicroscope = {\n prefix: 'far',\n iconName: 'microscope',\n icon: [512, 512, [], \"f610\", \"M476 464h-40.5c37.06-33.68 60.5-82.1 60.5-136 0-98.75-78.26-179.36-176-183.6V97.14c0-18.39-10.16-34.45-25.16-42.88V36.58c0-20.17-16.4-36.58-36.56-36.58H157.72c-20.16 0-36.56 16.41-36.56 36.58v17.69C106.16 62.69 96 78.75 96 97.14v197.72c0 22.02 14.56 40.7 34.56 46.94v37.62c0 20.17 16.41 36.58 36.59 36.58h81.69c20.19 0 36.59-16.41 36.59-36.58V341.8c20-6.23 34.56-24.92 34.56-46.94V192.81c71.21 4.23 128 62.95 128 135.19 0 74.98-61 136-136 136H36c-19.88 0-36 16.12-36 36 0 6.63 5.37 12 12 12h488c6.63 0 12-5.37 12-12 0-19.88-16.12-36-36-36zm-297.44-96v-40h58.88v40h-58.88zm92.28-72H145.16l-1.16-1.14L145.16 96h24V48h77.69L248 96h24l-1.16 200z\"]\n};\nvar faMicrowave = {\n prefix: 'far',\n iconName: 'microwave',\n icon: [512, 512, [], \"e01b\", \"M464,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48h0l24,32h48l24-32H368l24,32h48l24-32h0a48,48,0,0,0,48-48V112A48,48,0,0,0,464,64Zm0,336H48V112H464ZM416,272a24,24,0,1,0-24-24A24,24,0,0,0,416,272Zm0-80a24,24,0,1,0-24-24A24,24,0,0,0,416,192ZM96,368H352a16,16,0,0,0,16-16V160a16,16,0,0,0-16-16H96a16,16,0,0,0-16,16V352A16,16,0,0,0,96,368Z\"]\n};\nvar faMindShare = {\n prefix: 'far',\n iconName: 'mind-share',\n icon: [640, 512, [], \"f677\", \"M635 339.8l-96-95.2c-10.1-10-27-2.6-27 12.2V304h-79.9c-5.6 0-11.2-.1-17 .8-47.1 6.9-85.6 44.5-93.4 91.5-7.8 46.7 13.3 89.5 48.3 112.9 9.8 6.5 21.6-3.2 17.8-14.4-9-26.6-5.6-94.7 60.3-94.7h64v47.2c0 14.8 16.9 22.2 27 12.2l96-95.2c6.6-6.7 6.6-17.9-.1-24.5zM290 391c1.3-8 3.4-15.7 6.1-23.2V82c0-18.8 15.3-34 34.2-34 15.5 0 29.1 10.5 32.9 25.6l4.8 18.9 22.9-1.2c16.5.1 31.9 15.4 31.9 34.1 0 4.4-.4 5.3-5.5 27.2l18.9 7.7c13.7 5.6 42.7 30.2 25.1 65.9l-9.9 20.1 19.5 11.2c3.5 2 6.2 4.5 8.9 6.9v-7.8c0-22 14.5-40.4 34.2-46.5.1-1.7.7-3.4.7-5.1 0-33-16.7-63-43.7-80.6-.4-39.7-29.4-72.8-67.5-79.8C389.9 17.8 361.8 0 330.3 0c-22.8 0-43.4 9.2-58.3 24.1A82.316 82.316 0 0 0 213.7 0c-31.4 0-59.6 17.8-73.3 44.9-38.1 7-67.1 40.1-67.5 79.8-27.1 17.6-43.7 47.6-43.7 80.6 0 7.7 1 15.4 2.9 23C11.9 246.3 0 272.2 0 299.5c0 33 16.7 63 43.7 80.6.5 47.5 38.5 86.2 85.8 88.3 15.9 26.7 44.9 43.6 76.8 43.6 26 0 49.2-11.2 65.6-28.8 13.4 14.4 31.5 24.1 51.9 27.3-28-32.2-41-75.9-33.8-119.5zm-42.1 31.8c0 22.8-18.6 41.2-41.5 41.2-32.9 0-39.5-29.5-45.6-47.6l-20.3 3.4c-24 4-48.5-15.3-48.5-40.5 0-2.8 4.7-27.4 4.7-27.4l-18.2-7.5c-36.9-15.2-41.3-66.1-5.5-86.6l19.5-11.2-9.9-20.1C65 190.7 94 166 107.7 160.4l18.9-7.7c-5-21.9-5.5-22.8-5.5-27.2 0-18.8 15.3-34 31.9-34.1l22.9 1.2 4.8-18.9c3.9-15.1 17.4-25.6 32.9-25.6 18.9 0 34.2 15.2 34.2 34v340.7z\"]\n};\nvar faMinus = {\n prefix: 'far',\n iconName: 'minus',\n icon: [384, 512, [], \"f068\", \"M368 224H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faMinusCircle = {\n prefix: 'far',\n iconName: 'minus-circle',\n icon: [512, 512, [], \"f056\", \"M140 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H140zm364-28c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-48 0c0-110.5-89.5-200-200-200S56 145.5 56 256s89.5 200 200 200 200-89.5 200-200z\"]\n};\nvar faMinusHexagon = {\n prefix: 'far',\n iconName: 'minus-hexagon',\n icon: [576, 512, [], \"f307\", \"M441.5 39.8C432.9 25.1 417.1 16 400 16H176c-17.1 0-32.9 9.1-41.5 23.8l-112 192c-8.7 14.9-8.7 33.4 0 48.4l112 192c8.6 14.7 24.4 23.8 41.5 23.8h224c17.1 0 32.9-9.1 41.5-23.8l112-192c8.7-14.9 8.7-33.4 0-48.4l-112-192zM400 448H176L64 256 176 64h224l112 192-112 192zM172 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H172z\"]\n};\nvar faMinusOctagon = {\n prefix: 'far',\n iconName: 'minus-octagon',\n icon: [512, 512, [], \"f308\", \"M497.9 150.5L361.5 14.1c-9-9-21.2-14.1-33.9-14.1H184.5c-12.7 0-24.9 5.1-33.9 14.1L14.1 150.5c-9 9-14.1 21.2-14.1 33.9v143.1c0 12.7 5.1 24.9 14.1 33.9l136.5 136.5c9 9 21.2 14.1 33.9 14.1h143.1c12.7 0 24.9-5.1 33.9-14.1L498 361.4c9-9 14.1-21.2 14.1-33.9v-143c-.1-12.8-5.2-25-14.2-34zm-33.9 177L327.5 464h-143L48 327.5v-143L184.5 48h143.1L464 184.5v143zM140 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H140z\"]\n};\nvar faMinusSquare = {\n prefix: 'far',\n iconName: 'minus-square',\n icon: [448, 512, [], \"f146\", \"M108 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H108zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faMistletoe = {\n prefix: 'far',\n iconName: 'mistletoe',\n icon: [576, 512, [], \"f7b4\", \"M542.1 213.4c-26-26-89.6-38.6-130.9-44.2L312 70.1V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v54.1l-99.1 99.1C123.6 174.8 60 187.4 34 213.4c-40 40-45.4 99.4-12.1 132.7C36.5 360.8 56.3 368 77.2 368c26.6 0 55-11.5 77.4-33.9 14.9-14.9 25.3-42 32.6-70.2 5.6 4.9 12.7 8.1 20.8 8.1 17.7 0 32-14.3 32-32s-14.3-32-32-32c-3.6 0-6.9 1-10.2 2.1.4-2.4.7-4.6 1-6.9L264 138v144.3c-28.4 32.8-72 89.2-72 127.3 0 56.6 43 102.4 96 102.4s96-45.8 96-102.4c0-38.1-43.6-94.6-72-127.3V137.9l65.2 65.2c5.6 41.3 18.2 104.9 44.2 130.9 22.4 22.4 50.8 33.9 77.4 33.9 20.9 0 40.7-7.2 55.4-21.8 33.3-33.3 27.9-92.7-12.1-132.7zm-421.4 86.7C108.2 312.6 92 320 77.2 320c-6.2 0-15-1.4-21.4-7.8-14.1-14.1-8.4-44.4 12.1-64.9 10.4-10.4 43.4-20.3 79.8-26.9-6.7 36.3-16.6 69.3-27 79.7zM336 409.6c0 30-21.5 54.4-48 54.4s-48-24.4-48-54.4c0-13.8 20.4-47.5 48-81.5 27.3 33.9 48 67.9 48 81.5zm184.2-97.4c-6.4 6.4-15.2 7.8-21.4 7.8-14.8 0-31-7.4-43.4-19.9-10.4-10.4-20.3-43.4-26.9-79.7 36.3 6.6 69.4 16.6 79.7 26.9 20.4 20.5 26.1 50.8 12 64.9zM384 64c17.7 0 32-14.3 32-32S401.7 0 384 0s-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faMitten = {\n prefix: 'far',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M416.8 184.7c-15.6-13-35.3-20.1-55.6-20.1-14.8 0-29.1 3.7-41.7 10.6l-12.6-54.7C290.5 49.6 228.3 0 155.5 0c-11.7 0-23.5 1.4-35.1 4C37 23.3-15.3 106.9 4 190.4L54.6 384h49.6L50.8 179.6C37.5 121.9 73.6 64.1 131.3 50.8c8-1.8 16.1-2.8 24.2-2.8 50.3 0 93.3 34.3 104.6 83.3l32.7 141.5 38.5-46.2c7.4-8.9 18.3-14 29.9-14 9 0 17.9 3.2 24.8 9 16.5 13.7 18.7 38.3 5 54.7L301.3 384h62.5l64.1-76.9c30.7-36.8 25.7-91.7-11.1-122.4zM368.1 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c.1-8.8-7.1-16-15.9-16z\"]\n};\nvar faMobile = {\n prefix: 'far',\n iconName: 'mobile',\n icon: [320, 512, [], \"f10b\", \"M192 416c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zM320 48v416c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h224c26.5 0 48 21.5 48 48zm-48 410V54c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v404c0 3.3 2.7 6 6 6h212c3.3 0 6-2.7 6-6z\"]\n};\nvar faMobileAlt = {\n prefix: 'far',\n iconName: 'mobile-alt',\n icon: [320, 512, [], \"f3cd\", \"M192 416c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm48-60V92c0-6.6-5.4-12-12-12H92c-6.6 0-12 5.4-12 12v264c0 6.6 5.4 12 12 12h136c6.6 0 12-5.4 12-12zm80-308v416c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h224c26.5 0 48 21.5 48 48zm-48 410V54c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v404c0 3.3 2.7 6 6 6h212c3.3 0 6-2.7 6-6z\"]\n};\nvar faMobileAndroid = {\n prefix: 'far',\n iconName: 'mobile-android',\n icon: [320, 512, [], \"f3ce\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 464H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v404c0 3.3-2.7 6-6 6zm-70-32h-72c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12z\"]\n};\nvar faMobileAndroidAlt = {\n prefix: 'far',\n iconName: 'mobile-android-alt',\n icon: [320, 512, [], \"f3cf\", \"M228 368H92c-6.6 0-12-5.4-12-12V92c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v264c0 6.6-5.4 12-12 12zm92-320v416c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h224c26.5 0 48 21.5 48 48zm-48 410V54c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v404c0 3.3 2.7 6 6 6h212c3.3 0 6-2.7 6-6zm-64-38v-8c0-6.6-5.4-12-12-12h-72c-6.6 0-12 5.4-12 12v8c0 6.6 5.4 12 12 12h72c6.6 0 12-5.4 12-12z\"]\n};\nvar faMoneyBill = {\n prefix: 'far',\n iconName: 'money-bill',\n icon: [640, 512, [], \"f0d6\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zm-16 272c-35.35 0-64 28.65-64 64H112c0-35.35-28.65-64-64-64V176c35.35 0 64-28.65 64-64h416c0 35.35 28.65 64 64 64v160zM320 160c-44.18 0-80 42.98-80 96 0 53.01 35.81 96 80 96 44.17 0 80-42.97 80-96 0-53.02-35.82-96-80-96z\"]\n};\nvar faMoneyBillAlt = {\n prefix: 'far',\n iconName: 'money-bill-alt',\n icon: [640, 512, [], \"f3d1\", \"M320 144c-53.02 0-96 50.14-96 112 0 61.85 42.98 112 96 112 53 0 96-50.13 96-112 0-61.86-42.98-112-96-112zm40 168c0 4.42-3.58 8-8 8h-64c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h16v-55.44l-.47.31a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09l15.33-10.22a23.99 23.99 0 0 1 13.31-4.03H328c4.42 0 8 3.58 8 8v88h16c4.42 0 8 3.58 8 8v16zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zm-16 272c-35.35 0-64 28.65-64 64H112c0-35.35-28.65-64-64-64V176c35.35 0 64-28.65 64-64h416c0 35.35 28.65 64 64 64v160z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'far',\n iconName: 'money-bill-wave',\n icon: [640, 512, [], \"f53a\", \"M320 160.55c-44.18 0-80 43.16-80 96.41 0 53.24 35.81 96.41 80 96.41 44.17 0 80-43.15 80-96.41 0-53.25-35.82-96.41-80-96.41zM621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM592 322.05c-26.89 3.4-48.58 23.31-54.38 49.48-10.8-.92-21.56-1.88-32.87-1.88-67.56 0-133.13 16.59-196.53 32.64C247.86 417.57 190.85 432 135.25 432c-8.02 0-15.85-.32-23.51-.94-1.42-34.23-29.29-61.61-63.73-61.61V192.69c31.07 0 56.93-22.25 62.74-51.75 8.14.51 16.08 1.4 24.51 1.4 67.56 0 133.12-16.59 196.52-32.64C392.13 94.43 449.14 80 504.75 80c10.84 0 21.22.78 31.42 1.91.85 31.96 24.87 57.84 55.83 61.76v178.38z\"]\n};\nvar faMoneyBillWaveAlt = {\n prefix: 'far',\n iconName: 'money-bill-wave-alt',\n icon: [640, 512, [], \"f53b\", \"M320 160.55c-44.18 0-80 43.16-80 96.41 0 53.24 35.81 96.41 80 96.41 44.17 0 80-43.15 80-96.41 0-53.25-35.82-96.41-80-96.41zM621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM592 379.98c-27.7-6.93-56.44-10.32-87.25-10.32-67.56 0-133.13 16.59-196.53 32.64-60.36 15.27-117.37 29.7-172.97 29.7-31.62 0-60.28-4.78-87.25-14.58v-285.4c27.7 6.93 56.44 10.32 87.25 10.32 67.56 0 133.12-16.59 196.52-32.64C392.13 94.43 449.14 80 504.75 80c31.63 0 60.29 4.78 87.25 14.58v285.4z\"]\n};\nvar faMoneyCheck = {\n prefix: 'far',\n iconName: 'money-check',\n icon: [640, 512, [], \"f53c\", \"M624 32H16C7.16 32 0 39.16 0 48v400c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V48c0-8.84-7.16-16-16-16zm-32 400H48V176h544v256zm0-304H48V80h544v48zM104 384h144c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8zm352 0h80c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8h-80c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8zm-352-96h272c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8zm360 0h64c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16z\"]\n};\nvar faMoneyCheckAlt = {\n prefix: 'far',\n iconName: 'money-check-alt',\n icon: [640, 512, [], \"f53d\", \"M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm-16 400H48V80h544v352zM296 320h80c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8h-80c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8zm240-48h-80c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8h80c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8zm-240-32h240c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8H296c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8zm-161.28 17.72l42.19 11.44c4.19 1.14 7.09 4.55 7.09 8.3 0 4.8-4.5 8.7-10.06 8.7H147.6c-4.15 0-8.23-1.04-11.77-2.95-3.08-1.67-6.84-1.37-9.24 1.18l-12.07 12.73c-3.11 3.28-2.6 8.64 1.13 11.19 8.3 5.65 18.06 8.88 28.35 9.52V328c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-10.25c22.18-1.1 40-18.57 40-40.3 0-18.17-12.62-34.28-30.72-39.17l-42.19-11.44c-4.19-1.14-7.09-4.55-7.09-8.3 0-4.8 4.5-8.7 10.06-8.7h26.34c4.15 0 8.23 1.04 11.77 2.95 3.08 1.66 6.84 1.37 9.24-1.18l12.07-12.73c3.11-3.28 2.6-8.64-1.13-11.19-8.3-5.65-18.06-8.88-28.35-9.52V168c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v10.25c-22.18 1.1-40 18.57-40 40.3 0 18.17 12.62 34.28 30.72 39.17z\"]\n};\nvar faMoneyCheckEdit = {\n prefix: 'far',\n iconName: 'money-check-edit',\n icon: [640, 512, [], \"f872\", \"M485.52 384H528a16 16 0 0 0 16-16v-42.46a32 32 0 0 0-9.37-22.63L303.2 71.47l-71.7 71.7 231.39 231.45a32 32 0 0 0 22.63 9.38zM208.9 120.57l71.7-71.8L238.8 7a24.1 24.1 0 0 0-33.9 0L167 44.87a24 24 0 0 0 0 33.8zM128 368a16 16 0 0 0 16 16h283l-48-48H144a16 16 0 0 0-16 16zm480-240H405l48 48h139v288H48V176h171.07l-10.2-10.2-22.6-22.6-15.2-15.2H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32zM144 304h203l-48-48H144a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z\"]\n};\nvar faMoneyCheckEditAlt = {\n prefix: 'far',\n iconName: 'money-check-edit-alt',\n icon: [640, 512, [], \"f873\", \"M485.51 384H528a16 16 0 0 0 16-16v-42.46a32 32 0 0 0-9.37-22.63L303.18 71.47l-71.7 71.7 231.39 231.45a32 32 0 0 0 22.64 9.38zM208.88 120.57l71.7-71.8L238.78 7a24.1 24.1 0 0 0-33.9 0L167 44.87a24 24 0 0 0 0 33.8zM136 424h16a8 8 0 0 0 8-8v-16.12c23.62-.63 42.67-20.54 42.67-45.07 0-20-13-37.81-31.58-43.39l-45-13.5c-5.16-1.54-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11a24 24 0 0 1 12.82 3.72 9 9 0 0 0 4.75 1.4 7.72 7.72 0 0 0 5.38-2.13l11.75-11.21a8 8 0 0 0-.57-12.14A57.18 57.18 0 0 0 160 240.29V224a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v16.12c-23.62.63-42.67 20.55-42.67 45.07 0 20 13 37.81 31.58 43.39l45 13.5c5.16 1.54 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.11a24.08 24.08 0 0 1-12.77-3.72 9 9 0 0 0-4.75-1.4 7.7 7.7 0 0 0-5.38 2.13l-11.8 11.21a8 8 0 0 0 .57 12.14A57.26 57.26 0 0 0 128 399.71V416a8 8 0 0 0 8 8zm120-120h91l-48-48h-43a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16zm-16 64a16 16 0 0 0 16 16h171l-48-48H256a16 16 0 0 0-16 16zm368-240H405l48 48h139v288H48V176h171.05l-10.2-10.2-22.6-22.6-15.2-15.2H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z\"]\n};\nvar faMonitorHeartRate = {\n prefix: 'far',\n iconName: 'monitor-heart-rate',\n icon: [576, 512, [], \"f611\", \"M544 0H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-16 464H48V288h158.69l26.53 79.59A24.044 24.044 0 0 0 255.69 384h.31c10.09 0 19.09-6.3 22.56-15.8l42.5-116.91 8.67 21.63A23.993 23.993 0 0 0 352 287.99h112c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-95.75l-25.97-64.91c-3.69-9.23-13.41-15.42-22.66-15.09-9.97.16-18.78 6.44-22.19 15.8L257 287.06l-10.22-30.66c-3.27-9.8-12.44-16.41-22.76-16.41H48V48h480v416z\"]\n};\nvar faMonkey = {\n prefix: 'far',\n iconName: 'monkey',\n icon: [640, 512, [], \"f6fb\", \"M640 120c0-39.77-32.24-72-72-72h-12.27C535.49 19.04 502.02 0 464 0s-71.49 19.04-91.73 48H360c-39.76 0-72 32.23-72 72 0 38.77 30.72 70.16 69.11 71.71.78 2.63 1.47 5.29 2.43 7.84C263.21 224.58 192 311.83 192 416v48h-8c-22.06 0-40-17.94-40-40V168c0-39.7-32.31-72-72-72S0 128.3 0 168v64c0 13.25 10.75 24 24 24s24-10.75 24-24v-64c0-13.23 10.78-24 24-24s24 10.77 24 24v256c0 48.53 39.47 88 88 88h248c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-32l83.4-62.55 12.6 49.91V480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-16.24c0-10.47-1.28-20.89-3.82-31.05l-51.31-205.24c8.08-10.62 14.13-22.66 18.02-35.76C609.28 190.16 640 158.77 640 120zm-48 0c0 10.4-6.73 19.05-16 22.38V112c0-5.03-.84-9.83-1.48-14.68 10 2.89 17.48 11.76 17.48 22.68zm-240-8v30.38c-9.27-3.33-16-11.98-16-22.38 0-10.92 7.48-19.79 17.48-22.68-.64 4.85-1.48 9.65-1.48 14.68zm48 0c0-35.29 28.71-64 64-64s64 28.71 64 64v48c0 35.29-28.71 64-64 64s-64-28.71-64-64v-48zm157.61 332.36a79.834 79.834 0 0 1 2.39 19.4v.24h-32v-18.6l-1.46-5.78-30.24-119.85L304 464h-64v-48c0-87.74 64.62-160.41 148.71-173.58C408.63 260.62 434.89 272 464 272c17.15 0 33.22-4.17 47.76-11.06l45.85 183.42zM496 136c8.84 0 16-7.16 16-16s-7.16-16-16-16-16 7.16-16 16 7.16 16 16 16zm-64 0c8.84 0 16-7.16 16-16s-7.16-16-16-16-16 7.16-16 16 7.16 16 16 16z\"]\n};\nvar faMonument = {\n prefix: 'far',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M368 464h-33.98l-44.89-363.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69A15.905 15.905 0 0 0 192 0c-4.09 0-8.19 1.56-11.31 4.69L104.08 81.3a31.97 31.97 0 0 0-9.21 19.44L49.98 464H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-269.66 0l43.56-352.65 50.1-50.1 50.08 50.08L285.66 464H98.34zM227.2 272h-70.4c-6.4 0-12.8 6.4-12.8 12.8v22.4c0 6.4 6.4 12.8 12.8 12.8h70.4c6.4 0 12.8-6.4 12.8-12.8v-22.4c0-6.4-6.4-12.8-12.8-12.8z\"]\n};\nvar faMoon = {\n prefix: 'far',\n iconName: 'moon',\n icon: [512, 512, [], \"f186\", \"M279.135 512c78.756 0 150.982-35.804 198.844-94.775 28.27-34.831-2.558-85.722-46.249-77.401-82.348 15.683-158.272-47.268-158.272-130.792 0-48.424 26.06-92.292 67.434-115.836 38.745-22.05 28.999-80.788-15.022-88.919A257.936 257.936 0 0 0 279.135 0c-141.36 0-256 114.575-256 256 0 141.36 114.576 256 256 256zm0-464c12.985 0 25.689 1.201 38.016 3.478-54.76 31.163-91.693 90.042-91.693 157.554 0 113.848 103.641 199.2 215.252 177.944C402.574 433.964 344.366 464 279.135 464c-114.875 0-208-93.125-208-208s93.125-208 208-208z\"]\n};\nvar faMoonCloud = {\n prefix: 'far',\n iconName: 'moon-cloud',\n icon: [640, 512, [], \"f754\", \"M283.6 176.1C259.7 146.3 223.2 128 184 128c-40.4 0-77.7 19-101.6 50.3C35.4 188.2 0 230.1 0 280c0 57.3 46.7 104 104 104h176c57.3 0 104-46.7 104-104 0-56.1-44.7-102-100.4-103.9zM280 336H104c-30.9 0-56-25.1-56-56s25.1-56 56-56h6.8c12.4-28.2 40.5-48 73.2-48 34.4 0 63.4 21.8 74.8 52.2 6.6-2.7 13.7-4.2 21.2-4.2 30.9 0 56 25.1 56 56s-25.1 56-56 56zm357.6 15.2c-4.1-8.6-12.4-13.9-21.8-13.9-5.5 0-11.9 2.6-27.8 2.6-67 0-121.5-54.7-121.5-121.9 0-43.7 23.6-84.3 61.6-106 8.9-5.1 13.6-15 11.9-25.1-1.7-10.2-9.4-17.9-19.5-19.8-11.5-2.1-23.3-3.2-35-3.2-67.3 0-126 35.2-160.1 87.9 15.4 5.4 29.5 13.5 41.7 23.7 19.8-29.6 50-51.5 85.7-59.9-21.9 29.1-34.4 64.9-34.4 102.4 0 81.1 57 149.1 132.9 165.9-20.1 10.4-42.6 16-65.9 16-37.7 0-71.7-14.8-97.2-38.7-9.7 12.8-21.3 24-34.8 32.8 34.3 33.2 80.6 53.9 132 53.9 58.1 0 112.4-25.9 149-71.1 6.1-7.2 7.3-17.1 3.2-25.6z\"]\n};\nvar faMoonStars = {\n prefix: 'far',\n iconName: 'moon-stars',\n icon: [512, 512, [], \"f755\", \"M405.8 373.8c-1.4 0-2.8.3-4.3.9-23.2 10.5-47.3 15.4-70.8 15.4-75.9 0-146.6-50.8-166-129.3-14.6-59.2 4-121.4 48.7-163.3 6.7-6.3 2.1-17.5-7-17.5h-.6c-13.3.8-26.6 2.7-39.5 5.8C49.4 114.1-22.3 231 6.3 347c24.3 98.7 113.4 165 211.6 165 17.1 0 34.5-2 51.8-6.2C335 490 387.4 446.1 415 388.3c3.4-7.1-2.3-14.5-9.2-14.5zm-147.4 85.3c-13.3 3.2-27 4.9-40.5 4.9-78.5 0-146.4-52.8-165-128.5-10.7-43.3-3.8-88.2 19.4-126.4 12.7-20.9 29.4-38.4 49.1-51.8-11.3 36.8-12.8 76.5-3.3 115 22.4 91 99.8 156.3 192.1 164.8-15.7 10.1-33.1 17.5-51.8 22zm200.3-277.8L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208l-53.3-26.7zM304 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32z\"]\n};\nvar faMortarPestle = {\n prefix: 'far',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M496 192H395.7L496.3 91.4c25.8-25.8 18.8-69.4-13.9-85.7-18.1-9.1-39.8-7.1-56 5.1L184.6 192H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h16v16c0 81.4 50.8 150.8 122.3 178.8-12.8 16.8-21.7 36.6-24.9 58.4-1.4 9.8 6 18.8 15.9 18.8h221.4c9.9 0 17.4-9 15.9-18.8-3.2-21.8-12.2-41.7-24.9-58.4C429.2 406.8 480 337.4 480 256v-16h16c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM455.2 49.1c1-.7 2.1-1.1 3.3-1.1.9 0 1.7.2 2.5.6.6.3 2.5 1.3 3 4s-1 4.3-1.5 4.8L327.8 192h-63.2zM432 256c0 59.7-36 112.3-91.7 134L281 413.2l38.5 50.6c0 .1.1.1.1.2H192.4c0-.1.1-.1.1-.2l38.5-50.6-59.3-23.2C116 368.3 80 315.7 80 256v-16h352z\"]\n};\nvar faMosque = {\n prefix: 'far',\n iconName: 'mosque',\n icon: [640, 512, [], \"f678\", \"M288 384c-17.67 0-32 14.33-32 32v80c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80c0-17.67-14.33-32-32-32zm112-32s-48 24-48 72v72c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-72c0-48-48-72-48-72zm112 32c-17.67 0-32 14.33-32 32v80c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80c0-17.67-14.33-32-32-32zm110.29-108.25C633.38 260.79 640 243.1 640 224c0-52.86-48.22-88.7-101.45-117.81C453.15 59.48 416.69 17.75 400 0c-16.68 17.74-53.14 59.48-138.55 106.19-19.17 10.48-37.59 21.89-53.45 34.6V120C208 40 104 0 104 0S0 40 0 120v376c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V192h112v304c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V320h384v176c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V304c0-12.46-7.32-22.97-17.71-28.25zM160 144H48v-24c0-29.2 32.46-53.73 56.01-66.84C126.81 65.88 160 90.4 160 120v24zm369.23 128H270.77c-34.02 0-62.77-21.98-62.77-48 0-23.11 24.3-47.16 76.48-75.7 45.39-24.82 83.47-51.29 115.52-80.35 32.05 29.06 70.13 55.52 115.52 80.35C567.7 176.84 592 200.89 592 224c0 26.02-28.74 48-62.77 48z\"]\n};\nvar faMotorcycle = {\n prefix: 'far',\n iconName: 'motorcycle',\n icon: [640, 512, [], \"f21c\", \"M512 192c-15.601 0-30.548 2.795-44.374 7.905L434.633 144H520c13.255 0 24-10.745 24-24V88c0-13.255-10.745-24-24-24h-45.312a24 24 0 0 0-17.839 7.945l-39.101 43.445-24.524-41.555A20 20 0 0 0 376 64h-76c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h64.58l30.688 52h-175.86c-4.01-4.393-8.542-8.531-13.783-12.275C186.784 130.268 162.118 124 128 124H72c-11.046 0-20 8.954-20 20s8.954 20 20 20h56c22.885 0 37.946 8.448 48.662 20.205l-7.936 14.43A127.765 127.765 0 0 0 128 192C57.308 192 0 249.308 0 320s57.308 128 128 128c58.192 0 107.311-38.834 122.863-92h81.327c11.396 0 20.491-9.517 19.979-20.897-2.456-54.98 23.782-106.017 68.372-136.28l12.198 20.668C403.054 242.932 384 279.24 384 320c0 70.692 57.308 128 128 128s128-57.308 128-128-57.308-128-128-128zM128 408c-48.523 0-88-39.477-88-88s39.477-88 88-88c7.229 0 14.256.878 20.983 2.53l-50.507 91.831C91.156 339.672 100.802 356 116 356h92.27c-13.787 30.62-44.569 52-80.27 52zm184.367-92H149.825l66-120h147.308c-30.834 33.811-48.088 76.226-50.766 120zM512 408c-48.523 0-88-39.477-88-88 0-26.019 11.354-49.434 29.365-65.559l53.477 90.614c3.369 5.708 10.726 7.604 16.434 4.236l13.78-8.132c5.708-3.368 7.604-10.726 4.236-16.434l-52.833-89.522A87.769 87.769 0 0 1 512 232c48.523 0 88 39.477 88 88s-39.477 88-88 88z\"]\n};\nvar faMountain = {\n prefix: 'far',\n iconName: 'mountain',\n icon: [640, 512, [], \"f6fc\", \"M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM61.31 464l131.77-204.98L256 321.94 329.94 248h109.9L578.7 464H61.31zM320 61.59L408.98 200h-98.92L256 254.06l-36.36-36.36L320 61.59z\"]\n};\nvar faMountains = {\n prefix: 'far',\n iconName: 'mountains',\n icon: [640, 512, [], \"f6fd\", \"M635.73 406.91l-194.04-297.6C435.9 100.44 425.95 96 416 96c-9.95 0-19.9 4.44-25.69 13.31l-52 79.76-70.79-110.55C261.32 68.84 250.66 64 240 64s-21.32 4.84-27.52 14.52L4.58 403.18C-7.99 422.81 6.81 448 30.92 448h580.22c22.5 0 36.32-23.09 24.59-41.09zM63.61 400L240 124.55 416.39 400H63.61zm409.78 0L366.71 233.4 416 157.8 573.92 400H473.39z\"]\n};\nvar faMouse = {\n prefix: 'far',\n iconName: 'mouse',\n icon: [384, 512, [], \"f8cc\", \"M224 0h-64A160 160 0 0 0 0 160v192a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V160A160 160 0 0 0 224 0zm112 160v16H216V48h8a112.12 112.12 0 0 1 112 112zM160 48h8v128H48v-16A112.12 112.12 0 0 1 160 48zm64 416h-64A112.12 112.12 0 0 1 48 352V224h288v128a112.12 112.12 0 0 1-112 112z\"]\n};\nvar faMouseAlt = {\n prefix: 'far',\n iconName: 'mouse-alt',\n icon: [384, 512, [], \"f8cd\", \"M224 0h-64A160 160 0 0 0 0 160v192a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V160A160 160 0 0 0 224 0zm112 352a112.12 112.12 0 0 1-112 112h-64A112.12 112.12 0 0 1 48 352V160A112.12 112.12 0 0 1 160 48h64a112.12 112.12 0 0 1 112 112zM192 96a32 32 0 0 0-32 32v32a32 32 0 0 0 64 0v-32a32 32 0 0 0-32-32z\"]\n};\nvar faMousePointer = {\n prefix: 'far',\n iconName: 'mouse-pointer',\n icon: [384, 512, [], \"f245\", \"M356.683 255.576L115.915 18.636C77.055-21.086 8 6.909 8 62.87v349.112c0 55.241 67.457 83.887 107.414 44.727l23.927-23.449 17.535 40.669.121.281.125.274c13.903 31.145 50.295 45.894 82.155 32.648l41.903-17.395.254-.106.253-.109c15.618-6.697 27.662-19.038 33.912-34.749 6.184-15.545 5.927-32.568-.724-47.933l-18.71-43.423h16.527c55.848.002 85.165-68.485 43.991-107.841zm-43.872 59.843h-89.594l47.607 110.491c3.316 7.661-.474 16.249-8.053 19.499l-41.922 17.409c-7.816 3.25-16.58-.465-19.895-7.892l-45.238-104.92-73.898 72.423C72.038 432.012 56 424.734 56 411.982V62.868c0-13.309 16.978-19.829 25.817-10.445L323.47 290.117c9.79 9.091 2.553 25.302-10.659 25.302z\"]\n};\nvar faMp3Player = {\n prefix: 'far',\n iconName: 'mp3-player',\n icon: [384, 512, [], \"f8ce\", \"M305 80H81v112h224zm32-80H49A48 48 0 0 0 1 48v416a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm0 464H49V48h288zM193 240a96 96 0 1 0 96 96 96 96 0 0 0-96-96zm0 128a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faMug = {\n prefix: 'far',\n iconName: 'mug',\n icon: [576, 512, [], \"f874\", \"M464 64H64a32 32 0 0 0-32 32v256a96 96 0 0 0 96 96h192a96 96 0 0 0 96-96v-64h48a112 112 0 0 0 0-224zm-96 288a48 48 0 0 1-48 48H128a48 48 0 0 1-48-48V112h288zm96-112h-48V112h48a64 64 0 0 1 0 128z\"]\n};\nvar faMugHot = {\n prefix: 'far',\n iconName: 'mug-hot',\n icon: [512, 512, [], \"f7b6\", \"M400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm-64 224c0 26.5-21.5 48-48 48H96c-26.5 0-48-21.5-48-48V240h288v176zm64-48h-16V240h16c35.3 0 64 28.7 64 64s-28.7 64-64 64zM239.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm-112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1z\"]\n};\nvar faMugMarshmallows = {\n prefix: 'far',\n iconName: 'mug-marshmallows',\n icon: [512, 512, [], \"f7b7\", \"M400 160h-20.9c7.2-12.4 6-28.3-4.6-39L295 41.5c-6.3-6.3-14.7-9.5-23-9.5s-16.6 3.2-23 9.5l-27.4 27.4C217 57 205.6 48.5 192 48.5H64c-17.7 0-32 14.3-32 32V160c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zM272 86.4l57.6 57.6-16 16h-83.1l-16-16L272 86.4zM80 96.5h96v18.1l-6.5 6.5c-10.6 10.6-11.8 26.5-4.6 39H80V96.5zM336 384c0 26.5-21.5 48-48 48H96c-26.5 0-48-21.5-48-48V208h48v56c0 13.3 10.7 24 24 24s24-10.7 24-24v-56h192v176zm64-48h-16V208h16c35.3 0 64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faMugTea = {\n prefix: 'far',\n iconName: 'mug-tea',\n icon: [640, 512, [], \"f875\", \"M599.87 432H8.16c-18.19 0-5.29 48 32 48h527.62c37.28 0 50.22-48 32.09-48zM176 384h224a80 80 0 0 0 80-80v-16h32c70.59 0 128-57.41 128-128S582.56 32 512 32H112a16 16 0 0 0-16 16v256a80 80 0 0 0 80 80zM480 80h32a80 80 0 0 1 0 160h-32zm-256 99.88l16-16 16 16V224h-32zM144 80h72v40l-30.63 30.63a32 32 0 0 0-9.37 22.62V240a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-66.75a32 32 0 0 0-9.38-22.62L264 120V80h168v224a32.11 32.11 0 0 1-32 32H176a32.1 32.1 0 0 1-32-32z\"]\n};\nvar faMusic = {\n prefix: 'far',\n iconName: 'music',\n icon: [512, 512, [], \"f001\", \"M480.06 0a31.94 31.94 0 0 0-9.68 1.5l-304 96A32 32 0 0 0 144 128v235.09A109.68 109.68 0 0 0 96 352c-53 0-96 35.81-96 80s43 80 96 80c49.38 0 89.56-31.16 94.91-71.09a38.74 38.74 0 0 0 1.06-8.66V256l272-85.91v129A109.78 109.78 0 0 0 416 288c-53 0-96 35.81-96 80s43 80 96 80c49.38 0 89.56-31.19 94.94-71.12a38.94 38.94 0 0 0 1-8.22c0-.22.06-.44.06-.66V32a32 32 0 0 0-31.94-32zM96 464c-28.28 0-48-16.88-48-32s19.72-32 48-32 48 16.84 48 32-19.72 32-48 32zm368-96c0 15.12-19.72 32-48 32s-48-16.88-48-32 19.72-32 48-32 48 16.84 48 32zm0-248.25l-272 85.91v-65.91l272-85.87z\"]\n};\nvar faMusicAlt = {\n prefix: 'far',\n iconName: 'music-alt',\n icon: [384, 512, [], \"f8cf\", \"M342.36 1.51l-144 35.38A32 32 0 0 0 176 67.36v299.12c-18.16-9.07-40.16-14.48-64-14.48-61.86 0-112 35.82-112 80s50.14 80 112 80 112-35.82 112-80V195.36L361.64 162A32 32 0 0 0 384 131.48V32a32 32 0 0 0-41.64-30.49zM112 464c-39.7 0-64-20.72-64-32s24.3-32 64-32 64 20.72 64 32-24.3 32-64 32zm224-344.25L224 145V79.12l112-25.26z\"]\n};\nvar faMusicAltSlash = {\n prefix: 'far',\n iconName: 'music-alt-slash',\n icon: [640, 512, [], \"f8d0\", \"M240 352c-61.86 0-112 35.82-112 80s50.14 80 112 80 112-35.82 112-80-50.15-80-112-80zm0 112c-39.7 0-64-20.72-64-32s24.3-32 64-32 64 20.72 64 32-24.3 32-64 32zm394 7L36 3.52A16 16 0 0 0 13.48 6l-10 12.49A16 16 0 0 0 6 41l598 467.5a16 16 0 0 0 22.5-2.5l10-12.5A16 16 0 0 0 634 471zM489.64 162A32 32 0 0 0 512 131.48V32a32 32 0 0 0-41.64-30.49l-144 35.38A32 32 0 0 0 304 67.36v84.76L357.58 194zM352 79.13l112-25.27v65.89L352 145z\"]\n};\nvar faMusicSlash = {\n prefix: 'far',\n iconName: 'music-slash',\n icon: [640, 512, [], \"f8d1\", \"M528 53.88v65.9l-189 59.68 45.86 35.85L528 170.1v157.15l48 37.52V32a31.95 31.95 0 0 0-41.62-30.5L233.05 96.66l45.87 35.86zM634 471L36 3.52A16 16 0 0 0 13.48 6l-10 12.49A16 16 0 0 0 6 41l598 467.5a16 16 0 0 0 22.5-2.5l10-12.5A16 16 0 0 0 634 471zM208 363.09A109.68 109.68 0 0 0 160 352c-53 0-96 35.81-96 80s43 80 96 80c49.37 0 89.56-31.16 94.91-71.09a38.69 38.69 0 0 0 1.06-8.63V297.37l-48-37.53zM160 464c-28.28 0-48-16.87-48-32s19.72-32 48-32 48 16.88 48 32-19.72 32-48 32z\"]\n};\nvar faNarwhal = {\n prefix: 'far',\n iconName: 'narwhal',\n icon: [640, 512, [], \"f6fe\", \"M591.21 220.16l48.52-207.28c1.04-4.46-.94-9.25-5.14-11.57-5.07-2.8-11.45-.96-14.25 4.11L517.06 192.51c-1.71-.07-3.32-.51-5.06-.51-141.14 0-207.15 83.47-308.69 182.31-3.26 3.26-7.27 4.72-11.2 4.72-8.23 0-16.12-6.39-16.12-16.03v-62.87l31.38-16.49C217.76 277.7 224 267.7 224 257V144.03c0-9.41-9.01-16.03-18.72-16.03h-.01c-3.47 0-7.02.85-10.29 2.71L112 178.13l-82.98-47.42c-3.27-1.87-6.83-2.71-10.3-2.71C9.01 128 0 134.61 0 144.03V257c0 10.7 6.24 20.69 16.62 26.62L48 300.12v80C48 452.96 107.04 512 179.88 512H544c53.02 0 96-42.98 96-96v-96c0-40.62-19.29-76.39-48.79-99.84zM592 416c0 26.47-21.53 48-48 48H179.88C133.63 464 96 426.37 96 380.13v-109l-25.67-13.49L48 245.89v-49.05l40.19 22.96L112 233.42l23.82-13.61L176 196.84v49.05l-22.33 11.74-25.67 13.5V363c0 35.31 28.76 64.03 64.12 64.03 17 0 33.03-6.67 44.68-18.32 11.53-11.22 22.6-22.24 33.38-32.97C352.28 294 406.52 240 512 240c44.11 0 80 35.89 80 80v96zm-160-72c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24z\"]\n};\nvar faNetworkWired = {\n prefix: 'far',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M640 264v-16c0-8.84-7.16-16-16-16H344v-72h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h72v72H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v72H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32h-56v-72h304v72h-56c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32h-56v-72h104c8.84 0 16-7.16 16-16zM240 48h160v64H240V48zm-32 352v64H80v-64h128zm352 0v64H432v-64h128z\"]\n};\nvar faNeuter = {\n prefix: 'far',\n iconName: 'neuter',\n icon: [288, 512, [], \"f22c\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 71.4 51.9 130.6 120 142v150c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12V318c68.1-11.4 120-70.6 120-142zm-144 96c-52.9 0-96-43.1-96-96s43.1-96 96-96 96 43.1 96 96-43.1 96-96 96z\"]\n};\nvar faNewspaper = {\n prefix: 'far',\n iconName: 'newspaper',\n icon: [576, 512, [], \"f1ea\", \"M552 64H112c-20.858 0-38.643 13.377-45.248 32H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h496c13.255 0 24-10.745 24-24V88c0-13.255-10.745-24-24-24zM48 392V144h16v248c0 4.411-3.589 8-8 8s-8-3.589-8-8zm480 8H111.422c.374-2.614.578-5.283.578-8V112h416v288zM172 280h136c6.627 0 12-5.373 12-12v-96c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v96c0 6.627 5.373 12 12 12zm28-80h80v40h-80v-40zm-40 140v-24c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H172c-6.627 0-12-5.373-12-12zm192 0v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0-144v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0 72v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12z\"]\n};\nvar faNotEqual = {\n prefix: 'far',\n iconName: 'not-equal',\n icon: [384, 512, [], \"f53e\", \"M368 208c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-42.32l55.03-66.81c5.37-7.02 4.04-17.06-2.97-22.43L352.32 35.3c-7.02-5.37-17.06-4.04-22.43 2.97L242.81 144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h174.1l-79.07 96H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h42.32L3.3 434.81c-5.37 7.01-4.04 17.05 2.97 22.43l25.41 19.46c7.02 5.38 17.06 4.04 22.43-2.97L141.19 368H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H193.9l79.07-96H368z\"]\n};\nvar faNotesMedical = {\n prefix: 'far',\n iconName: 'notes-medical',\n icon: [384, 512, [], \"f481\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm144 418c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h42v36c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-36h42c3.3 0 6 2.7 6 6v340zm-56-170h-56v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56h-56c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h56v56c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-56h56c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"]\n};\nvar faObjectGroup = {\n prefix: 'far',\n iconName: 'object-group',\n icon: [512, 512, [], \"f247\", \"M500 128c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v256H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V128h12zm-52-64h32v32h-32V64zM32 64h32v32H32V64zm32 384H32v-32h32v32zm416 0h-32v-32h32v32zm-40-64h-12c-6.627 0-12 5.373-12 12v12H96v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h12v256zm-36-192h-84v-52c0-6.628-5.373-12-12-12H108c-6.627 0-12 5.372-12 12v168c0 6.628 5.373 12 12 12h84v52c0 6.628 5.373 12 12 12h200c6.627 0 12-5.372 12-12V204c0-6.628-5.373-12-12-12zm-268-24h144v112H136V168zm240 176H232v-24h76c6.627 0 12-5.372 12-12v-76h56v112z\"]\n};\nvar faObjectUngroup = {\n prefix: 'far',\n iconName: 'object-ungroup',\n icon: [576, 512, [], \"f248\", \"M564 224c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12h-88v-24h12c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v160H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h88v24h-12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V224h12zM352 64h32v32h-32V64zm0 256h32v32h-32v-32zM64 352H32v-32h32v32zm0-256H32V64h32v32zm32 216v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h12v160h-12c-6.627 0-12 5.373-12 12v12H96zm128 136h-32v-32h32v32zm280-64h-12c-6.627 0-12 5.373-12 12v12H256v-12c0-6.627-5.373-12-12-12h-12v-24h88v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12v-88h88v12c0 6.627 5.373 12 12 12h12v160zm40 64h-32v-32h32v32zm0-256h-32v-32h32v32z\"]\n};\nvar faOctagon = {\n prefix: 'far',\n iconName: 'octagon',\n icon: [512, 512, [], \"f306\", \"M497.9 150.5L361.5 14.1c-9-9-21.2-14.1-33.9-14.1H184.5c-12.7 0-24.9 5.1-33.9 14.1L14.1 150.5c-9 9-14.1 21.2-14.1 33.9v143.1c0 12.7 5.1 24.9 14.1 33.9l136.5 136.5c9 9 21.2 14.1 33.9 14.1h143.1c12.7 0 24.9-5.1 33.9-14.1L498 361.4c9-9 14.1-21.2 14.1-33.9v-143c-.1-12.8-5.2-25-14.2-34zm-33.9 177L327.5 464h-143L48 327.5v-143L184.5 48h143.1L464 184.5v143z\"]\n};\nvar faOilCan = {\n prefix: 'far',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56C26.86 164.88 36.11 166.33 31.93 166.33 14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.64c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c0-5.75-5.51-9.03-10.2-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zM395.95 368H144V240h192.89c2.47 0 4.95.58 7.15 1.69 61.22 30.61 46.03 23.01 67.46 33.73 25.47-7.59 13.03-3.88 107.64-32.07L395.95 368zm153.38 5.33c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z\"]\n};\nvar faOilTemp = {\n prefix: 'far',\n iconName: 'oil-temp',\n icon: [640, 512, [], \"f614\", \"M16 400h16c38.62 0 72.72-12.19 96-31.84 23.21 19.6 57.18 31.74 95.66 31.82-14.61-14.67-25.34-32.9-32.07-52.98-10.15-3.33-18.29-7.92-23.68-12.89-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v16c0 8.83 7.16 16 16 16zm608-48h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1-5.39 4.97-13.53 9.57-23.68 12.89-6.73 20.08-17.46 38.31-32.07 52.98 38.48-.07 72.45-12.22 95.66-31.82 23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-16C640 359.16 632.84 352 624 352zm0 112h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 455.58 442.04 464 416 464s-45.8-8.42-56.09-17.9a60.051 60.051 0 0 0-12.49-8.85c-8.86 1.81-18.03 2.77-27.42 2.77s-18.57-.95-27.42-2.77c-4.46 2.39-8.68 5.34-12.49 8.85C269.8 455.58 250.04 464 224 464s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 455.58 58.04 464 32 464H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-304-63.99c52.94 0 96-43.06 96-96 0-44.6-30.71-81.86-72-92.59V144h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56V48h56c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16h-88c-8.84 0-16 7.16-16 16v195.41c-41.29 10.73-72 47.99-72 92.59 0 52.95 43.06 96.01 96 96.01zm0-144c26.47 0 48 21.53 48 48s-21.53 48-48 48-48-21.53-48-48 21.53-48 48-48z\"]\n};\nvar faOm = {\n prefix: 'far',\n iconName: 'om',\n icon: [512, 512, [], \"f679\", \"M420.11 200c-24.19 0-47.88 9.81-64.98 26.91l-24.25 24.25c-8.16 8.16-19.47 12.84-31.04 12.84h-65.29c14.12-21.81 20.79-48.87 14.9-77.74-8.48-41.62-43.08-74.54-85.07-80.97-33.07-5.06-64.78 5.06-87.8 26.73-7.05 6.64-5.93 18.23 1.81 24.05l13.15 9.87c6.08 4.56 14.34 3.98 20.16-.91 12.34-10.38 28.72-15.03 45.68-12.21 21.57 3.58 39.67 20.39 44.69 41.67 8.66 36.71-19.12 69.53-54.42 69.53l-39.64.17c-8.97 0-14.81 9.44-10.79 17.46l12.07 24.13c1.9 3.79 5.7 6.07 9.88 6.41l36.77-.17c41.91 0 76.01 34.09 76.01 76s-34.1 76-76.01 76c-82.77 0-104.76-20.73-142.62-76.81C9.24 381.17.01 384.34 0 391.39-.05 421.11 20.44 512 155.94 512c68.39 0 124.02-55.62 124.02-124 0-28.77-10.25-54.94-26.75-76h46.63c24.19 0 47.88-9.81 64.98-26.91l24.25-24.25c8.16-8.16 19.47-12.84 31.04-12.84 24.19 0 43.88 19.69 43.88 43.88V400c0 17.64-14.35 32-32.01 32-26.49 0-48.68-5.11-69.37-29.82-3.58-4.27-10.65-1.85-10.65 3.66v27.57c0 13.8 9.78 46.6 80.01 46.6 44.13 0 80.01-32 80.01-80V291.88C512 241.22 470.77 200 420.11 200zM360.59 60.94c4.08 4.07 10.68 4.07 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06a10.43 10.43 0 0 0-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.57 21.56zm16.16 89.79c76.24 0 96.12-19.92 100.4-26.03 1.89-2.69 2.9-5.89 2.9-9.18V80c0-12.7-14.83-21.01-25.7-12.73-25.67 19.56-53.62 29.47-83.07 29.47-50.84 0-89.09-29.11-89.47-29.4-13.99-10.82-32.97 6.07-23.28 21.26 1.6 2.54 40.51 62.13 118.22 62.13z\"]\n};\nvar faOmega = {\n prefix: 'far',\n iconName: 'omega',\n icon: [447, 512, [], \"f67a\", \"M360.62 432c63.3-49.55 99.85-131.8 81.75-222.07-17.42-86.85-87.35-156.72-174.13-173.58C125.19 8.56 0 117.63 0 256c0 71.72 34.05 135.04 86.38 176H15.96C7.15 432 0 439.16 0 448v16c0 8.84 7.15 16 15.96 16h127.71c8.82 0 15.96-7.16 15.96-16v-22.99c0-11.82-5.98-23.28-16.45-28.7-66.69-34.53-108.68-110.48-91.4-193.8 13.81-66.57 67.39-120.48 133.77-134.49C298.88 60.09 399.11 146.53 399.11 256c0 68.22-38.99 127.37-95.76 156.54-10.16 5.22-15.99 16.28-15.99 27.72V464c0 8.84 7.15 16 15.96 16h127.71c8.82 0 15.96-7.16 15.96-16v-16c0-8.84-7.15-16-15.96-16h-70.41z\"]\n};\nvar faOrnament = {\n prefix: 'far',\n iconName: 'ornament',\n icon: [384, 512, [], \"f7b8\", \"M288 153.9V112c0-8.8-7.2-16-16-16h-24.9c5.5-9.4 8.9-20.3 8.9-32 0-35.3-28.7-64-64-64s-64 28.7-64 64c0 11.7 3.4 22.6 8.9 32H112c-8.8 0-16 7.2-16 16v41.9C38.7 187.1 0 249 0 320c0 106 86 192 192 192s192-86 192-192c0-71-38.7-132.9-96-166.1zM192 48c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 128c42.4 0 80.2 18.8 106.5 48h-213c26.3-29.2 64.1-48 106.5-48zm144 144c0 16.9-3.5 32.9-8.8 48H56.8c-5.4-15.1-8.8-31.1-8.8-48s3.5-32.9 8.8-48h270.3c5.4 15.1 8.9 31.1 8.9 48zM192 464c-42.4 0-80.2-18.8-106.5-48h213.1c-26.4 29.2-64.2 48-106.6 48z\"]\n};\nvar faOtter = {\n prefix: 'far',\n iconName: 'otter',\n icon: [640, 512, [], \"f700\", \"M496 72c-8.84 0-16 7.16-16 16s7.17 16 16 16c8.84 0 16-7.16 16-16s-7.16-16-16-16zm79.96-40h-9.47l-8.63-8.61C542.74 8.31 522.65 0 501.27 0h-20.54c-13.89 0-27.62 3.63-39.68 10.51L291.09 96h-18.71C157.48 96 64 189.31 64 304l.08 64.8C28.15 372.81 0 403.01 0 440c0 39.7 32.31 72 72 72h160c13.25 0 24-10.75 24-24s-10.75-24-24-24H72c-13.22 0-24-10.77-24-24s10.78-24 24-24h232.46c26.51 0 48-21.49 48-48 0-19.45-6.98-37.29-18.57-51.17l13.94-7.39 40.13 80.07A48 48 0 0 0 430.87 416H529c26.51 0 48-21.49 48-48 0-44.11-35.92-80-80.08-80h-16.59l-19.35-38.6 31.12-16.51c10.96-5.82 23.32-8.89 35.75-8.89C589.69 224 640 173.76 640 112V96c0-35.29-28.73-64-64.04-64zm-48.11 144c-20.31 0-40.31 4.97-58.24 14.49l-3.68 1.95 16.7-21.71c9-11.73 23.22-18.73 38.03-18.73h56.9c-11.76 14.52-29.54 24-49.71 24zM592 112c0 2.74-.47 5.35-.81 8h-70.53c-24.69 0-48.38 11.67-63.41 31.23l-59.32 75.78 1.01.96-1.89 1L450.7 336h46.22c17.7 0 32.08 14.36 32.08 32h-98.13l-62.14-123.99L195.33 336h77.05c17.7 0 32.08 14.36 32.08 32H112v-64c0-88.37 71.81-160 160.38-160h31.43l161.01-91.79A32.16 32.16 0 0 1 480.73 48h20.54c8.57 0 16.63 3.33 22.68 9.37l13.29 13.26 9.4 9.38h29.32c8.86 0 16.04 7.16 16.04 16V112z\"]\n};\nvar faOutdent = {\n prefix: 'far',\n iconName: 'outdent',\n icon: [448, 512, [], \"f03b\", \"M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 424H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 308.83v22.34A12.82 12.82 0 0 0 204.83 344h230.34A12.82 12.82 0 0 0 448 331.17v-22.34A12.82 12.82 0 0 0 435.17 296zM432 40H16A16 16 0 0 0 0 56v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16zm3.17 128H204.83A12.82 12.82 0 0 0 192 180.83v22.34A12.82 12.82 0 0 0 204.83 216h230.34A12.82 12.82 0 0 0 448 203.17v-22.34A12.82 12.82 0 0 0 435.17 168z\"]\n};\nvar faOutlet = {\n prefix: 'far',\n iconName: 'outlet',\n icon: [512, 512, [], \"e01c\", \"M448,0H64A64,64,0,0,0,0,64V448a64,64,0,0,0,64,64H448a64,64,0,0,0,64-64V64A64,64,0,0,0,448,0Zm16,448a16,16,0,0,1-16,16H64a16,16,0,0,1-16-16V64A16,16,0,0,1,64,48H448a16,16,0,0,1,16,16ZM353.85,96H158.15a22.86,22.86,0,0,0-16.41,6.7C103.71,141.71,80,195.9,80,256s23.71,114.28,61.74,153.29A22.87,22.87,0,0,0,158.15,416h195.7a22.87,22.87,0,0,0,16.41-6.71c38-39,61.74-93.19,61.74-153.29s-23.71-114.29-61.74-153.3A22.86,22.86,0,0,0,353.85,96ZM208,272a16,16,0,0,1-16,16H176a16,16,0,0,1-16-16V192a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16Zm80,80H224V336a32,32,0,0,1,64,0Zm64-80a16,16,0,0,1-16,16H320a16,16,0,0,1-16-16V192a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16Z\"]\n};\nvar faOven = {\n prefix: 'far',\n iconName: 'oven',\n icon: [448, 512, [], \"e01d\", \"M96,432H352a16,16,0,0,0,16-16V256a16,16,0,0,0-16-16H96a16,16,0,0,0-16,16V416A16,16,0,0,0,96,432Zm32-144H320v32H128ZM104,80a24,24,0,1,0,24,24A24,24,0,0,0,104,80Zm240,0a24,24,0,1,0,24,24A24,24,0,0,0,344,80ZM184,80a24,24,0,1,0,24,24A24,24,0,0,0,184,80ZM384,0H64A64,64,0,0,0,0,64V480a32,32,0,0,0,32,32H416a32,32,0,0,0,32-32V64A64,64,0,0,0,384,0Zm16,464H48V208H400Zm0-304H48V64A16,16,0,0,1,64,48H384a16,16,0,0,1,16,16ZM264,80a24,24,0,1,0,24,24A24,24,0,0,0,264,80Z\"]\n};\nvar faOverline = {\n prefix: 'far',\n iconName: 'overline',\n icon: [448, 512, [], \"f876\", \"M432 0H16A16 16 0 0 0 0 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16zM224 96A176 176 0 0 0 48 272v64a176 176 0 0 0 352 0v-64A176 176 0 0 0 224 96zm112 240a112 112 0 0 1-224 0v-64a112 112 0 0 1 224 0z\"]\n};\nvar faPageBreak = {\n prefix: 'far',\n iconName: 'page-break',\n icon: [576, 512, [], \"f877\", \"M144 48.06L304 48v112a16 16 0 0 0 16 16h112v40h48v-84a48.09 48.09 0 0 0-14.09-34L382 14.07A48.09 48.09 0 0 0 348 0L128 .08a32 32 0 0 0-32 32V216h48zM352 52l76.07 76H352zM240 264a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm192 200H144V360H96v120a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V360h-48zm128-200H432a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm-400 32v-16a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16z\"]\n};\nvar faPager = {\n prefix: 'far',\n iconName: 'pager',\n icon: [512, 512, [], \"f815\", \"M304 304h-80v48h80a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM96 320v16a16 16 0 0 0 16 16h80v-48h-80a16 16 0 0 0-16 16zm296-160H120a24 24 0 0 0-24 24v48a24 24 0 0 0 24 24h272a24 24 0 0 0 24-24v-48a24 24 0 0 0-24-24zm56-96H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zm16 320a16 16 0 0 1-16 16H64a16 16 0 0 1-16-16V128a16 16 0 0 1 16-16h384a16 16 0 0 1 16 16z\"]\n};\nvar faPaintBrush = {\n prefix: 'far',\n iconName: 'paint-brush',\n icon: [512, 512, [], \"f1fc\", \"M455.59 0c-15.81 0-30.62 6.99-41.93 17.15C195.73 211.82 169.77 216.5 179.98 281.99c-41.52 4.96-78.59 24.05-100.32 81.32-2.68 7.08-9.12 11.38-16.64 11.38-12.67 0-51.85-31.56-63.02-39.19C0 429.45 43.26 512 146 512c117.18 0 152.72-87.75 145.06-145.89 56.9-7.01 97.15-62.51 206.45-266.49C505.2 84.65 512 68.48 512 51.66 512 21.52 484.89 0 455.59 0zM222.08 432.89c-16.24 18.52-41.84 27.91-76.08 27.91-35.97 0-58.6-14.93-72.68-35.65 24.56-3.6 45.23-19.96 54.21-43.67 13.79-36.33 32.61-45.55 58.52-48.65l16.43-1.96 36.06 28.51 1.77 13.41c2.07 15.77-1.46 40.97-18.23 60.1zm62.72-117.6l-16.87 2.08L233 289.75l-2.44-15.64C224.3 233.92 444.24 44.8 456.12 54.57c12.12 9.98-121.27 254.56-171.32 260.72z\"]\n};\nvar faPaintBrushAlt = {\n prefix: 'far',\n iconName: 'paint-brush-alt',\n icon: [512, 512, [], \"f5a9\", \"M489.17 144.05C547.44 80.02 483.28 0 418.52 0c-23.39 0-46.87 10.44-64.68 35.85L187.9 284.01c-45.13 2.9-86.1 20.09-109.34 81.34-2.65 6.99-9 11.22-16.41 11.22-12.49 0-51.14-31.13-62.15-38.65C0 430.58 42.67 512 144 512c141.21 0 145.89-117.04 142.91-145.49l.02-.02 202.24-222.44zM393.15 63.4c9.68-13.8 19.11-15.4 25.37-15.4 16.4 0 35.57 13.17 42.72 29.35 5.36 12.13 3.03 22.74-7.6 34.41L266.16 317.98l-27.76-23.13L393.15 63.4zM144 464c-38.6 0-62.03-16.87-76.06-39.67 25.07-2.14 46.49-18.14 55.51-41.95 10.03-26.44 18.24-47.29 83.23-51.48l30.94 25.79C239.85 376.62 251.75 464 144 464z\"]\n};\nvar faPaintRoller = {\n prefix: 'far',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M456 72h-40V48c0-26.51-21.49-48-48-48H48C21.49 0 0 21.49 0 48v96c0 26.51 21.49 48 48 48h320c26.51 0 48-21.49 48-48v-24h40c4.41 0 8 3.59 8 8v96c0 4.41-3.59 8-8 8H256c-30.88 0-56 25.12-56 56v32h-8c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-8v-32c0-4.41 3.59-8 8-8h200c30.88 0 56-25.12 56-56v-96c0-30.88-25.12-56-56-56zm-88 72H48V48h320v96zM240 464h-32v-96h32v96z\"]\n};\nvar faPalette = {\n prefix: 'far',\n iconName: 'palette',\n icon: [512, 512, [], \"f53f\", \"M128 224c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.4-32-32-32zM418.6 58.1C359.2 9.3 281.3-10 204.6 5 104.9 24.4 24.7 104.2 5.1 203.7c-16.7 84.2 8.1 168.3 67.8 230.6 47.3 49.4 109.7 77.8 167.9 77.8 8.8 0 17.5-.6 26.1-2 24.2-3.7 44.6-18.7 56.1-41.1 12.3-24 12.3-52.7.2-76.6-6.1-12-5.5-26.2 1.8-38 7-11.8 18.7-18.4 32-18.4h72.2c46.4 0 82.8-35.7 82.8-81.3-.2-76.4-34.3-148.1-93.4-196.6zM429.2 288H357c-29.9 0-57.2 15.4-73 41.3-16 26.1-17.3 57.8-3.6 84.9 5.1 10.1 5.1 22.7-.2 32.9-2.6 5-8.7 13.7-20.6 15.6-49.3 7.7-108.9-16.6-152-61.6-48.8-50.9-69-119.4-55.4-188 15.9-80.6 80.8-145.3 161.6-161 62.6-12.3 126.1 3.5 174.3 43.1 48.1 39.5 75.7 97.6 75.9 159.6 0 18.6-15.3 33.2-34.8 33.2zM160 128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.4-32-32-32zm96-32.1c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32c0-17.6-14.3-32-32-32zm96 32.1c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faPallet = {\n prefix: 'far',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M144 288h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm32-240h80v80l64-32 64 32V48h80v192H176V48zm448 320c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h48v96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16h-48v-96h48zm-448 96h-64v-96h64v96zm240 0H224v-96h192v96zm112 0h-64v-96h64v96z\"]\n};\nvar faPalletAlt = {\n prefix: 'far',\n iconName: 'pallet-alt',\n icon: [640, 512, [], \"f483\", \"M112 288h416c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H384V16c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm272-176h112v128H384V112zM144 48h192v192H144V48zm480 320c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h48v96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16h-48v-96h48zm-448 96h-64v-96h64v96zm240 0H224v-96h192v96zm112 0h-64v-96h64v96z\"]\n};\nvar faPaperPlane = {\n prefix: 'far',\n iconName: 'paper-plane',\n icon: [512, 512, [], \"f1d8\", \"M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z\"]\n};\nvar faPaperclip = {\n prefix: 'far',\n iconName: 'paperclip',\n icon: [512, 512, [], \"f0c6\", \"M67.508 468.467c-58.005-58.013-58.016-151.92 0-209.943l225.011-225.04c44.643-44.645 117.279-44.645 161.92 0 44.743 44.749 44.753 117.186 0 161.944l-189.465 189.49c-31.41 31.413-82.518 31.412-113.926.001-31.479-31.482-31.49-82.453 0-113.944L311.51 110.491c4.687-4.687 12.286-4.687 16.972 0l16.967 16.971c4.685 4.686 4.685 12.283 0 16.969L184.983 304.917c-12.724 12.724-12.73 33.328 0 46.058 12.696 12.697 33.356 12.699 46.054-.001l189.465-189.489c25.987-25.989 25.994-68.06.001-94.056-25.931-25.934-68.119-25.932-94.049 0l-225.01 225.039c-39.249 39.252-39.258 102.795-.001 142.057 39.285 39.29 102.885 39.287 142.162-.028A739446.174 739446.174 0 0 1 439.497 238.49c4.686-4.687 12.282-4.684 16.969.004l16.967 16.971c4.685 4.686 4.689 12.279.004 16.965a755654.128 755654.128 0 0 0-195.881 195.996c-58.034 58.092-152.004 58.093-210.048.041z\"]\n};\nvar faParachuteBox = {\n prefix: 'far',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7 36.3 39.2 62.2 100.1 62.4 174.8L314.6 320H280V192h104C384 76.8 315.1 0 256 0S128 76.8 128 192h104v128h-34.6L96 191.1c.2-74.7 26.1-135.6 62.4-174.8C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h19.5l124.7 158.5c0 .5-.3 1-.3 1.5v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-.5-.3-1-.3-1.5L476.4 192h19.5c9.2 0 17.1-7.8 16-17zM304 456c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-80c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v80z\"]\n};\nvar faParagraph = {\n prefix: 'far',\n iconName: 'paragraph',\n icon: [448, 512, [], \"f1dd\", \"M415 32H191a160 160 0 0 0 0 320h48v112a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V80h48v384a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V80h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM239 304h-48a112 112 0 0 1 0-224h48z\"]\n};\nvar faParagraphRtl = {\n prefix: 'far',\n iconName: 'paragraph-rtl',\n icon: [384, 512, [], \"f878\", \"M368 392H112v-56a16 16 0 0 0-16.12-16 15.65 15.65 0 0 0-11.19 4.72l-80 80a16 16 0 0 0 0 22.62l80 80A16.12 16.12 0 0 0 96.17 512c8 0 15.83-5.69 15.83-16v-56h256a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM144 224h32v80a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V48h32v256a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V48h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H144C80 0 32 48 32 112s48 112 112 112zm0-176h32v128h-32c-37.68 0-64-26.32-64-64s26.32-64 64-64z\"]\n};\nvar faParking = {\n prefix: 'far',\n iconName: 'parking',\n icon: [448, 512, [], \"f540\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340zM232 135.9h-80c-8.8 0-16 7.2-16 16v216c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-56h48c48.5 0 88-39.5 88-88 .1-48.5-39.4-88-88-88zm0 128.1h-48v-80h48c22.1 0 40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faParkingCircle = {\n prefix: 'far',\n iconName: 'parking-circle',\n icon: [496, 512, [], \"f615\", \"M256.09 135.91h-80c-8.84 0-16 7.16-16 16v216c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56h48c48.53 0 88-39.47 88-88s-39.47-88-88-88zm0 128h-48v-80h48c22.06 0 40 17.94 40 40s-17.94 40-40 40zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\"]\n};\nvar faParkingCircleSlash = {\n prefix: 'far',\n iconName: 'parking-circle-slash',\n icon: [496, 512, [], \"f616\", \"M160.09 367.91c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-51.73l-48-37.53v89.26zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200 0-37.79 10.73-73.04 29.02-103.21l312.54 244.35C353.33 433.47 303.25 456 248 456zm-39.91-261.67v-10.42h48c22.06 0 40 17.94 40 40 0 11.56-5.08 21.79-12.95 29.1l-75.05-58.68zm210.9 164.88l-97.96-76.59c14.19-15.56 23.06-36.01 23.06-58.71 0-48.53-39.47-88-88-88h-80c-8.84 0-16 7.16-16 16v4.9l-53.65-41.94C142.67 78.53 192.75 56 248 56c110.28 0 200 89.72 200 200 0 37.79-10.73 73.04-29.01 103.21z\"]\n};\nvar faParkingSlash = {\n prefix: 'far',\n iconName: 'parking-slash',\n icon: [640, 512, [], \"f617\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM283.31 135.93l131.27 102.63c.8-4.78 1.48-9.61 1.48-14.61 0-48.54-39.48-88.02-88.02-88.02h-44.73zM490 80c3.3 0 6 2.7 6 6v216.21l48 37.53V80c0-26.5-21.5-48-48-48H150.37l61.4 48H490zM150 432c-3.3 0-6-2.7-6-6V209.79l-48-37.53V432c0 26.5 21.5 48 48 48h345.63l-61.4-48H150zm114.03-48.02c8.84 0 16-7.17 16-16v-51.83l-48.01-37.53v89.37c0 8.84 7.16 16 16 16h16.01z\"]\n};\nvar faPassport = {\n prefix: 'far',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-16 464H64c-8.82 0-16-7.18-16-16V64c0-8.82 7.18-16 16-16h336v416zm-288-48h224c8.8 0 16-7.2 16-16s-7.2-16-16-16H112c-8.8 0-16 7.2-16 16s7.2 16 16 16zm112-88c66.28 0 120-53.73 120-120 0-66.28-53.72-120-120-120-66.27 0-120 53.72-120 120 0 66.27 53.73 120 120 120zm86.38-136h-34.59c-1.39-23.68-5.75-44.99-12.27-62.19 24.05 12.21 41.81 34.87 46.86 62.19zm-34.59 32h34.59c-5.05 27.32-22.82 49.98-46.86 62.19 6.53-17.21 10.88-38.51 12.27-62.19zM224 122.24c6.91 8.37 17.51 32.39 19.96 69.76h-39.93c2.46-37.37 13.06-61.39 19.97-69.76zM243.96 224c-2.45 37.37-13.05 61.39-19.96 69.76-6.91-8.37-17.51-32.39-19.96-69.76h39.92zm-59.49-94.19c-6.52 17.2-10.87 38.51-12.27 62.19h-34.59c5.06-27.32 22.82-49.98 46.86-62.19zM172.21 224c1.4 23.68 5.75 44.98 12.27 62.19-24.04-12.21-41.8-34.87-46.86-62.19h34.59z\"]\n};\nvar faPastafarianism = {\n prefix: 'far',\n iconName: 'pastafarianism',\n icon: [640, 512, [], \"f67b\", \"M624.52 347.67c-32.62-12.47-57.34 4.27-75.37 16.45-17.09 11.53-23.19 14.42-31.4 11.36-8.09-3.09-10.81-9.38-15.87-29.38-3.33-13.15-7.44-29.31-17.96-42.64 2.25-2.92 4.43-5.79 6.38-8.58 10.17 9.56 23.41 17.11 41.7 17.11 33.97 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.97 0-50.87 25.78-62.06 42.83-10.59 16.14-15 21.17-21.94 21.17-17.83 0-39.62-66.72-103.93-106.46l15.02-30.03c1.65.13 3.23.5 4.92.5 35.35 0 64-28.65 64-64s-28.65-64-64-64c-35.34 0-64 28.65-64 64 0 16.19 6.21 30.81 16.12 42.08l-15.85 31.71C365.31 131.81 344.11 128 320 128s-45.31 3.81-64.27 9.79l-15.85-31.71C249.79 94.8 256 80.19 256 64c0-35.35-28.65-64-64-64-35.34 0-64 28.65-64 64s28.65 64 64 64c1.68 0 3.26-.37 4.92-.5l15.02 30.03C148.35 196.84 125.44 264 108.01 264c-6.94 0-11.34-5.03-21.94-21.17C74.89 225.78 57.98 200 24.01 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.14 286.22 74.04 312 108.01 312c18.29 0 31.53-7.54 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.58-10.52 13.33-14.63 29.49-17.96 42.64-5.06 20-7.78 26.28-15.87 29.38-8.19 3.06-14.34.17-31.4-11.36-18-12.19-42.72-28.91-75.37-16.45-12.41 4.72-18.62 18.58-13.91 30.97 4.75 12.39 18.66 18.64 30.97 13.88 8.22-3.09 14.34-.19 31.4 11.36 13.53 9.16 30.84 20.86 52.43 20.84 7.16 0 14.81-1.28 22.94-4.39 32.65-12.44 40-41.33 45.34-62.44 2.21-8.72 3.99-14.49 5.95-18.86 16.62 13.61 36.94 25.88 61.63 34.16-9.95 37-32.17 90.81-60.23 90.81-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.04-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.25 512 447.99 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.93 0-50.19-53.81-60.2-90.82 24.67-8.29 44.98-20.55 61.6-34.15 1.95 4.38 3.74 10.14 5.95 18.86 5.34 21.11 12.69 50 45.34 62.44 8.12 3.11 15.78 4.39 22.94 4.39 21.59 0 38.9-11.69 52.43-20.84 17.06-11.55 23.19-14.45 31.4-11.36 12.37 4.73 26.22-1.48 30.97-13.88 4.72-12.39-1.5-26.25-13.9-30.97zM447.99 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM192.01 80c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16zM320 336c-80.59 0-122.1-52.17-138.49-79.97C197.99 228.05 239.49 176 320 176c80.59 0 122.1 52.17 138.49 79.97C442.01 283.95 400.51 336 320 336z\"]\n};\nvar faPaste = {\n prefix: 'far',\n iconName: 'paste',\n icon: [448, 512, [], \"f0ea\", \"M433.941 193.941l-51.882-51.882A48 48 0 0 0 348.118 128H320V80c0-26.51-21.49-48-48-48h-61.414C201.582 13.098 182.294 0 160 0s-41.582 13.098-50.586 32H48C21.49 32 0 53.49 0 80v288c0 26.51 21.49 48 48 48h80v48c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V227.882a48 48 0 0 0-14.059-33.941zm-84.066-16.184l48.368 48.368a6 6 0 0 1 1.757 4.243V240h-64v-64h9.632a6 6 0 0 1 4.243 1.757zM160 38c9.941 0 18 8.059 18 18s-8.059 18-18 18-18-8.059-18-18 8.059-18 18-18zm-32 138v192H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h55.414c9.004 18.902 28.292 32 50.586 32s41.582-13.098 50.586-32H266a6 6 0 0 1 6 6v42h-96c-26.51 0-48 21.49-48 48zm266 288H182a6 6 0 0 1-6-6V182a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v170a6 6 0 0 1-6 6z\"]\n};\nvar faPause = {\n prefix: 'far',\n iconName: 'pause',\n icon: [448, 512, [], \"f04c\", \"M192 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48zm-48 346V85c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h84c3.3 0 6-2.7 6-6zM448 79v352c0 26.5-21.5 48-48 48h-96c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48zm-48 346V85c0-3.3-2.7-6-6-6h-84c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h84c3.3 0 6-2.7 6-6z\"]\n};\nvar faPauseCircle = {\n prefix: 'far',\n iconName: 'pause-circle',\n icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm96-280v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16zm-112 0v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16z\"]\n};\nvar faPaw = {\n prefix: 'far',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M74.84 286.73c29.12-6.96 44.29-40.69 33.88-75.34C99.6 181 73.83 160 47.98 160c-3.62 0-7.24.41-10.81 1.27-29.12 6.96-44.29 40.69-33.89 75.34C12.41 267 38.18 288 64.02 288c3.62 0 7.24-.41 10.82-1.27zM41.59 225.1c-2.88-9.59-1.38-17.37.97-21.47 1.69-2.93 3.3-3.32 3.91-3.46.48-.11.97-.17 1.51-.17 6.52 0 17.95 7.96 22.43 22.89 2.88 9.59 1.38 17.38-.97 21.47-1.69 2.93-3.3 3.32-5.42 3.63-6.52.01-17.94-7.95-22.43-22.89zm276.97-34.49c3.55.93 7.15 1.38 10.76 1.38 27.84 0 56.22-26.82 66.7-65.25 11.84-43.42-3.64-85.21-34.58-93.36a41.92 41.92 0 0 0-10.76-1.39c-27.84 0-56.22 26.82-66.7 65.26-11.84 43.42 3.64 85.22 34.58 93.36zm4.01-82.83C328.98 84.29 344.28 72 350.68 72l.58.07c.88.23 2.46 1.67 4.01 4.35 4.08 7.06 7.09 21.73 2.16 39.8-6.39 23.43-21.62 35.71-28.63 35.71h-.06c-.88-.23-2.46-1.66-4.01-4.35-4.08-7.06-7.09-21.72-2.16-39.8zm152.26 53.49c-3.57-.86-7.2-1.27-10.81-1.27-25.85 0-51.62 21-60.74 51.39-10.4 34.65 4.77 68.38 33.89 75.34 3.58.86 7.2 1.27 10.81 1.27 25.85 0 51.62-21 60.74-51.39 10.4-34.65-4.77-68.38-33.89-75.34zm-4.42 63.83c-4.44 14.78-15.67 22.73-23.69 22.73h-.25c-.61-.14-2.22-.53-3.91-3.46-2.36-4.1-3.85-11.89-.97-21.47 4.49-14.94 15.91-22.9 22.43-22.9l1.51.17c.61.14 2.22.53 3.91 3.46 2.36 4.1 3.85 11.89.97 21.47zM182.68 192c3.61 0 7.21-.45 10.76-1.38 30.94-8.14 46.42-49.94 34.58-93.36C217.54 58.82 189.16 32 161.32 32c-3.61 0-7.21.45-10.76 1.39-30.94 8.14-46.42 49.94-34.58 93.36 10.48 38.43 38.87 65.25 66.7 65.25zM156.73 76.42c1.55-2.68 3.13-4.12 4.01-4.35.12-.03.29-.07.58-.07 6.4 0 21.7 12.29 28.11 35.78 4.93 18.08 1.92 32.74-2.16 39.8-1.55 2.68-3.13 4.12-4.59 4.41-6.4 0-21.71-12.29-28.11-35.78-4.93-18.07-1.92-32.73 2.16-39.79zM256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm143.81 203.07c-.95 1.05-7.7 4.93-23.54 4.93-17.73 0-33.3-5.13-51.34-11.08-19.9-6.56-42.46-14-68.92-14-26.22 0-48.63 7.4-68.4 13.92-18.14 5.99-33.8 11.16-51.86 11.16-15.85 0-22.6-3.89-23.38-4.67-.1-.23-.36-1.23-.36-3.08C112 370.18 204.86 272 256 272s144 98.18 144 152.25c0 1.82-.25 2.82-.19 2.82z\"]\n};\nvar faPawAlt = {\n prefix: 'far',\n iconName: 'paw-alt',\n icon: [448, 512, [], \"f701\", \"M400 144c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256-16c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm160 0c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm63.31 172.78c-26.29-14.84-47.14-61.41-67.17-97.83C284.41 174.31 254.21 160 224 160s-60.41 14.31-76.15 42.95c-20.29 36.96-40.12 82.56-67.17 97.83C51.63 317.18 32 348.18 32 383.95c0 53.01 42.98 95.98 96 95.98 1.31.04 2.6.07 3.87.07 48.88 0 68.92-32.06 92.13-32.06S267.25 480 316.13 480c1.27 0 2.56-.02 3.87-.07 53.02 0 96-42.97 96-95.98 0-35.77-19.63-66.77-48.69-83.17zM320 431.93h-.81l-.81.03-2.25.04c-15.7 0-25.28-5.71-38.54-13.63-13.76-8.21-30.89-18.43-53.59-18.43-22.7 0-39.83 10.22-53.59 18.44-13.25 7.91-22.83 13.62-38.54 13.62l-2.24-.04-.81-.03H128c-26.47 0-48-21.52-48-47.98 0-17.32 9.08-32.79 24.29-41.38 34.56-19.52 55.25-58.92 75.25-97.02 3.48-6.62 6.92-13.2 10.38-19.48C199.13 209.3 218.33 208 224 208s24.87 1.3 34.08 18.07c3.27 5.95 6.56 12.17 9.89 18.48 20.47 38.73 41.65 78.78 75.74 98.03 15.21 8.59 24.29 24.06 24.29 41.38 0 26.45-21.53 47.97-48 47.97zM96 192c0-26.51-21.49-48-48-48S0 165.49 0 192s21.49 48 48 48 48-21.49 48-48z\"]\n};\nvar faPawClaws = {\n prefix: 'far',\n iconName: 'paw-claws',\n icon: [512, 512, [], \"f702\", \"M256 256c-80.75 0-192 108.19-192 186.7 0 42.09 34.06 69.3 86.78 69.3 46.78 0 76.4-20.38 105.22-20.38 28.99 0 58.94 20.38 105.22 20.38 52.72 0 86.78-27.2 86.78-69.3C448 364.19 336.75 256 256 256zm105.22 208c-37.73 0-65.78-20.38-105.22-20.38-39.23 0-67.06 20.38-105.22 20.38-14.47 0-38.78-2.77-38.78-21.3 0-47.77 86.09-138.7 144-138.7s144 90.94 144 138.7c0 18.53-24.31 21.3-38.78 21.3zM493.5 190.37L448 128v66.94c-19.83 6.55-37.51 24.43-44.72 48.46-10.4 34.65 4.77 68.38 33.89 75.34 30.19 7.22 61.56-16.82 71.56-50.13 8.84-29.5-1.54-59.48-15.23-78.24zm-47.1 89.25c-16.45-4.94-.2-53.07 19.22-47.25 16.49 4.98-.13 53.38-19.22 47.25zm-127.85-57.01c40.37 10.63 69.81-35.82 77.46-63.87 8.44-30.94 3.01-61.05-12.01-78.75L320 0v74.96c-15.95 11.26-29.49 30.37-36.02 54.29-11.85 43.42 3.64 85.22 34.57 93.36zm4.01-82.83c15.7-57.62 47.93-39.38 34.84 8.44-15.62 57.31-47.91 39.57-34.84-8.44zM108.73 243.39c-7.21-24.03-24.89-41.91-44.72-48.46V128L18.5 190.37C4.81 209.13-5.57 239.11 3.29 268.61c10 33.3 41.36 57.35 71.56 50.13 29.11-6.97 44.28-40.7 33.88-75.35zM65.6 279.62c-19.09 6.12-35.72-42.28-19.22-47.25 19.42-5.81 35.67 42.32 19.22 47.25zm127.85-57.01c30.94-8.14 46.42-49.94 34.58-93.36-6.53-23.92-20.07-43.04-36.02-54.29V0L128 79.99c-15.02 17.7-20.45 47.82-12.01 78.75 7.65 28.05 37.09 74.5 77.46 63.87zm-4.01-82.83c13.07 48.01-19.22 65.75-34.84 8.44-13.09-47.82 19.15-66.06 34.84-8.44z\"]\n};\nvar faPeace = {\n prefix: 'far',\n iconName: 'peace',\n icon: [496, 512, [], \"f67c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-24 446.42c-44.87-5.4-85.21-25.63-115.91-55.75L224 305.93v148.49zm48-148.49l115.91 92.73c-30.71 30.12-71.04 50.35-115.91 55.75V305.93zM48 256c0-102.14 77.02-186.51 176-198.42v186.88L78.18 361.12C59.17 330.54 48 294.59 48 256zm369.82 105.12L272 244.46V57.58C370.98 69.49 448 153.86 448 256c0 38.59-11.17 74.54-30.18 105.12z\"]\n};\nvar faPegasus = {\n prefix: 'far',\n iconName: 'pegasus',\n icon: [576, 512, [], \"f703\", \"M464 112c8.84 0 16-7.16 16-16s-7.16-16-16-16-16 7.16-16 16 7.16 16 16 16zm111.95-9.75a47.943 47.943 0 0 0-10.94-30.46L543.28 45.3c16.02-5.4 29.13-18.84 32.56-35.66C576.85 4.68 572.96 0 567.9 0H432c-68.4 0-125.82 47.95-140.42 112h-25.81c-38.88 0-78.63-12.31-104.4-41.44-4.02-4.54-9.17-6.56-14.21-6.56-9.78 0-19.16 7.6-19.16 19.06 0 86.09 59.76 162.72 140.01 183.21 10.11 2.58 19.99-5.19 19.99-15.63v-16.36c0-6.96-4.44-13.34-11.15-15.21-37.34-10.46-68.92-37.67-86.32-73.34 23.38 9.37 48.83 14.27 75.24 14.27H336v-16c0-53.02 42.98-96 96-96h51.33L528 102.28l.05 65.35c0 4.77-3.03 9.01-7.54 10.55l-31.02 10.59c-1.51.52-9.71 2.95-16.48-3.83L448.05 160h-32v80H416c0 26.09-12.68 49.03-32 63.64V464h-48V320l-139.82-31.07-28.73 80.02L191.53 464H150l-21.13-87.86a31.698 31.698 0 0 1 .37-16.18l22.7-76.72C128.54 273.72 112 250.83 112 224c0-14.97 5.17-28.67 13.8-39.51-8.95-14.24-15.65-29.79-20.68-46.07-7.93 6.43-15.28 13.54-21.13 21.98C37.36 162.55 0 200.84 0 248v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.18 2.59-.78 5.05-.78 7.68 0 30.13 11.91 58.09 32.16 78.58l-12.94 43.76a78.948 78.948 0 0 0-1.05 40.85l24.11 100.29c3.46 14.38 16.32 24.52 31.11 24.52h74.7c20.86 0 36.14-19.64 31.02-39.86l-25.53-100.76 9.48-26.41L288 358.5V480c0 17.67 14.33 32 32 32h80c17.67 0 32-14.33 32-32V324.35c19.96-22.47 31.31-51.04 31.97-81.55.05-.93.08-8.43.08-8.43 20.95 6.96 38.31.72 40.94-.17l31.02-10.59c23.96-8.18 40.01-30.7 39.99-56.02l-.05-65.34z\"]\n};\nvar faPen = {\n prefix: 'far',\n iconName: 'pen',\n icon: [512, 512, [], \"f304\", \"M493.26 56.26l-37.51-37.51C443.25 6.25 426.87 0 410.49 0s-32.76 6.25-45.25 18.74l-74.49 74.49L256 127.98 12.85 371.12.15 485.34C-1.45 499.72 9.88 512 23.95 512c.89 0 1.79-.05 2.69-.15l114.14-12.61L384.02 256l34.74-34.74 74.49-74.49c25-25 25-65.52.01-90.51zM118.75 453.39l-67.58 7.46 7.53-67.69 231.24-231.24 31.02-31.02 60.14 60.14-31.02 31.02-231.33 231.33zm340.56-340.57l-44.28 44.28-60.13-60.14 44.28-44.28c4.08-4.08 8.84-4.69 11.31-4.69s7.24.61 11.31 4.69l37.51 37.51c6.24 6.25 6.24 16.4 0 22.63z\"]\n};\nvar faPenAlt = {\n prefix: 'far',\n iconName: 'pen-alt',\n icon: [512, 512, [], \"f305\", \"M493.25 56.26l-37.51-37.51C443.25 6.25 426.87 0 410.49 0s-32.76 6.25-45.26 18.74l-67.87 67.88-39.59-39.59c-15.62-15.62-40.95-15.62-56.56 0L82.42 165.81c-6.25 6.25-6.25 16.38 0 22.62l11.31 11.31c6.25 6.25 16.38 6.25 22.62 0L229.49 86.62l33.94 33.94-7.42 7.42L93.95 290.03A327.038 327.038 0 0 0 .17 485.12l-.03.23C-1.45 499.72 9.88 512 23.95 512c.89 0 1.78-.05 2.69-.15a327.077 327.077 0 0 0 195.34-93.8L384.02 256l34.74-34.74 74.49-74.49c25-25 25-65.52 0-90.51zM188.03 384.11c-37.02 37.02-83.99 62.88-134.74 74.6 11.72-50.74 37.59-97.73 74.6-134.74l162.05-162.05 7.42-7.42 60.14 60.14-7.42 7.42-162.05 162.05zm271.28-271.29l-67.88 67.88-48.82-48.83-11.31-11.31 67.87-67.87c4.08-4.08 8.84-4.69 11.31-4.69 2.47 0 7.24.61 11.31 4.69L459.3 90.2c4.08 4.08 4.69 8.84 4.69 11.31s-.6 7.24-4.68 11.31z\"]\n};\nvar faPenFancy = {\n prefix: 'far',\n iconName: 'pen-fancy',\n icon: [512, 512, [], \"f5ac\", \"M424.86 0c-23.45 0-46.85 9.64-63.71 28.72L169.93 240 84.1 268.62a34.005 34.005 0 0 0-21.5 21.5L0 478l33.99 34 187.79-62.62a33.967 33.967 0 0 0 21.49-21.5L271.88 342l211.19-191.3C544.5 96.38 500.08 0 424.86 0zM199.97 406.05L92.79 441.79l50-50.02c.4.02.74.23 1.14.23 13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-13.25 0-23.99 10.74-23.99 24 0 .41.21.74.23 1.14l-50 50.02 35.72-107.22 79.2-26.41 1.81-.61 40.06 40.07-.61 1.81-26.38 79.25zm250.9-290.93l-192 173.92-36-36.02L397.1 60.51C404.23 52.44 414.09 48 424.86 48c20.23 0 39.6 18.13 38.92 40.12-.31 10.32-4.75 19.77-12.91 27z\"]\n};\nvar faPenNib = {\n prefix: 'far',\n iconName: 'pen-nib',\n icon: [512, 512, [], \"f5ad\", \"M493.87 95.6L416.4 18.13C404.32 6.04 388.48 0 372.64 0c-15.84 0-31.68 6.04-43.76 18.13l-92.45 92.45-99.83 28.21a64.003 64.003 0 0 0-43.31 41.35L0 460l52 52 279.86-93.29a64.003 64.003 0 0 0 41.35-43.31l28.21-99.83 92.45-92.45c24.17-24.17 24.17-63.35 0-87.52zM327.02 362.35c-1.44 5.1-5.31 9.15-10.34 10.83L83.83 450.79 187.42 347.2c6.26 2.99 13.18 4.8 20.58 4.8 26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48c0 7.4 1.81 14.32 4.8 20.58L61.21 428.17l77.62-232.85c1.68-5.03 5.72-8.89 10.83-10.34l99.83-28.21 1.05-.3 105 105-.29 1.04-28.23 99.84zm132.91-213.17l-74.41 74.41-97.11-97.11 74.41-74.41c2.29-2.29 11.67-7.97 19.64 0l77.47 77.47c5.42 5.41 5.42 14.22 0 19.64z\"]\n};\nvar faPenSquare = {\n prefix: 'far',\n iconName: 'pen-square',\n icon: [448, 512, [], \"f14b\", \"M246.6 177.9l55.5 55.5c2.3 2.3 2.3 6.1 0 8.5L166.4 377.6l-57.1 6.3c-7.6.8-14.1-5.6-13.3-13.3l6.3-57.1L238 177.8c2.4-2.2 6.2-2.2 8.6.1zm98.4-12.8L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faPencil = {\n prefix: 'far',\n iconName: 'pencil',\n icon: [512, 512, [], \"f040\", \"M491.609 73.625l-53.861-53.839c-26.378-26.379-69.076-26.383-95.46-.001L24.91 335.089.329 484.085c-2.675 16.215 11.368 30.261 27.587 27.587l148.995-24.582 315.326-317.378c26.33-26.331 26.581-68.879-.628-96.087zM120.644 302l170.259-169.155 88.251 88.251L210 391.355V350h-48v-48h-41.356zM82.132 458.132l-28.263-28.263 12.14-73.587L84.409 338H126v48h48v41.59l-18.282 18.401-73.586 12.141zm378.985-319.533l-.051.051-.051.051-48.03 48.344-88.03-88.03 48.344-48.03.05-.05.05-.05c9.147-9.146 23.978-9.259 33.236-.001l53.854 53.854c9.878 9.877 9.939 24.549.628 33.861z\"]\n};\nvar faPencilAlt = {\n prefix: 'far',\n iconName: 'pencil-alt',\n icon: [512, 512, [], \"f303\", \"M491.609 73.625l-53.861-53.839c-26.378-26.379-69.075-26.383-95.46-.001L24.91 335.089.329 484.085c-2.675 16.215 11.368 30.261 27.587 27.587l148.995-24.582 315.326-317.378c26.33-26.331 26.581-68.879-.628-96.087zM200.443 311.557C204.739 315.853 210.37 318 216 318s11.261-2.147 15.557-6.443l119.029-119.03 28.569 28.569L210 391.355V350h-48v-48h-41.356l170.259-169.155 28.569 28.569-119.03 119.029c-8.589 8.592-8.589 22.522.001 31.114zM82.132 458.132l-28.263-28.263 12.14-73.587L84.409 338H126v48h48v41.59l-18.282 18.401-73.586 12.141zm378.985-319.533l-.051.051-.051.051-48.03 48.344-88.03-88.03 48.344-48.03.05-.05.05-.05c9.147-9.146 23.978-9.259 33.236-.001l53.854 53.854c9.878 9.877 9.939 24.549.628 33.861z\"]\n};\nvar faPencilPaintbrush = {\n prefix: 'far',\n iconName: 'pencil-paintbrush',\n icon: [512, 512, [], \"f618\", \"M433.43 365.35c-20.56-54.19-55.01-73.83-93.93-79.66l153.76-153.76c24.99-24.99 24.99-65.52-.01-90.51l-22.68-22.68C458.07 6.25 441.69 0 425.32 0c-16.38 0-32.76 6.25-45.25 18.74L240.21 158.57 158.15 35.86C140.34 10.45 116.87.01 93.48.01 28.72.01-35.44 80.03 22.84 144.06l110.42 121.45L19.08 379.66.33 487.1C-1.98 500.33 8.34 512 21.18 512c1.23 0 2.47-.11 3.74-.33l107.45-18.84 93.72-93.72C232.09 444.02 260.26 512 368 512c101.33 0 144-81.42 144-174.07-11.01 7.52-49.66 38.65-62.15 38.65-7.42 0-13.77-4.24-16.42-11.23zM414 52.68c5.82-5.82 15.98-6.64 22.63 0l22.68 22.68c5.81 5.8 6.66 15.97 0 22.63l-51.69 51.69-45.31-45.31L414 52.68zM58.33 111.75c-10.61-11.65-12.94-22.26-7.58-34.39 7.15-16.18 26.32-29.35 42.72-29.35 6.26 0 15.7 1.6 24.78 14.53l87.35 130.63-38.37 38.36-108.9-119.78zm50.81 336.42l-54.97 9.64 9.59-54.94 264.62-264.56 45.31 45.31-264.55 264.55zM368 464c-34.54 0-59.8-8.58-75.06-25.51-19.93-22.11-21.29-55.88-20.13-67.03l2.21-21.3 19.93-19.93 26.06 1.68c31.41 2.02 52.54 10.93 67.53 50.44 9.03 23.84 30.45 39.83 55.52 41.98C430.03 447.13 406.6 464 368 464z\"]\n};\nvar faPencilRuler = {\n prefix: 'far',\n iconName: 'pencil-ruler',\n icon: [512, 512, [], \"f5ae\", \"M502.71 368.14L379.88 245.31l56.01-56.01 57.36-57.37c24.99-24.99 24.99-65.52-.01-90.51l-22.68-22.68C458.07 6.25 441.69 0 425.31 0s-32.76 6.25-45.25 18.74L322.69 76.1l-.01-.01-56.02 56.01L230.57 96 143.86 9.29C137.66 3.1 129.55 0 121.43 0S105.2 3.1 99 9.29L9.29 99.01c-12.38 12.39-12.39 32.47 0 44.86l100.18 100.17 22.62 22.62-113.02 113L.32 487.1c-2.3 13.24 8.01 24.9 20.86 24.9 1.23 0 2.47-.11 3.74-.33l107.44-18.84 112.95-112.96L368.14 502.7c6.19 6.19 14.31 9.29 22.43 9.29s16.24-3.1 22.43-9.29l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86zM414 52.68c4.08-4.08 8.84-4.69 11.31-4.69 2.47 0 7.23.61 11.31 4.69l22.68 22.68c4.08 4.08 4.69 8.84 4.69 11.31s-.61 7.24-4.69 11.31l-51.69 51.69-45.31-45.31L414 52.68zM143.41 210.1l-88.66-88.66 66.69-66.69 38.95 38.94-22.03 22.03c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l22.03-22.03 2.32 2.32 36.1 36.1-66.69 66.68-22.65-22.63zm-34.27 238.07l-54.97 9.64 9.59-54.94 264.62-264.56 45.31 45.31-264.55 264.55zm281.43 9.08L279.25 345.94l66.69-66.69 38.44 38.44-22.03 22.03c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l22.03-22.03 38.94 38.94-66.69 66.68z\"]\n};\nvar faPennant = {\n prefix: 'far',\n iconName: 'pennant',\n icon: [576, 512, [], \"f456\", \"M542.3 183.5c-21.9 4.8-104.7 14.1-246.4-62.8-74.6-40.4-137.5-50.4-186.7-48C121.5 33.7 90.9 0 56 0 25.1 0 0 25.1 0 56c0 22.3 13.2 41.4 32 50.4V504c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8v-75.6c80.8-54.3 156.4-55.7 165.8-56.2 28.2-1.4 74.5-5.9 135.1-19 4.4-1 109-24.5 188.9-124.7 16.1-20.2-1.5-50.3-27.5-45zM370.8 306.3c-57.5 12.4-101 16.6-127.4 18-69.6 3.5-125.6 26.3-163.4 47.9V124c44.1-8.6 109.6-6.3 193 38.9 101.4 54.9 177 69.8 225.9 71.5-61.8 56.6-127.4 71.7-128.1 71.9z\"]\n};\nvar faPeopleArrows = {\n prefix: 'far',\n iconName: 'people-arrows',\n icon: [576, 512, [], \"e068\", \"M512,165H416a66,66,0,0,0-43.35,15.93,44.91,44.91,0,0,1,21.59,10.33l21.29,18.83c.16,0,.3-.09.47-.09h96c8.82,0,16,6.73,16,15v90H496V435H432V345.48l-1.7,1.5-36.08,31.93a43.68,43.68,0,0,1-10.22,6.7V450c0,16.57,14.33,30,32,30h96c17.67,0,32-13.43,32-30V360c17.67,0,32-13.43,32-30V225C576,191.86,547.35,165,512,165Zm-48-15c44.22,0,80-33.54,80-75S508.22,0,464,0s-80,33.54-80,75S419.78,150,464,150Zm0-105c17.64,0,32,13.46,32,30s-14.36,30-32,30-32-13.46-32-30S446.36,45,464,45ZM145.7,347l-1.7-1.5V435H80V315H48V225c0-8.27,7.18-15,16-15h96c.17,0,.31.08.47.09l21.3-18.84a44.9,44.9,0,0,1,21.58-10.32A66,66,0,0,0,160,165H64c-35.35,0-64,26.86-64,60V330c0,16.57,14.33,30,32,30v90c0,16.57,14.33,30,32,30h96c17.67,0,32-13.43,32-30V385.62a44.33,44.33,0,0,1-10.24-6.73ZM112,150c44.22,0,80-33.54,80-75S156.22,0,112,0,32,33.54,32,75,67.78,150,112,150Zm0-105c17.64,0,32,13.46,32,30s-14.36,30-32,30S80,91.54,80,75,94.36,45,112,45ZM444.4,276.88l-72.12-63.81a12.67,12.67,0,0,0-13-2.15A11.28,11.28,0,0,0,352,221.26V255H224V221.26a11.28,11.28,0,0,0-7.26-10.34,12.67,12.67,0,0,0-13,2.15L131.6,276.88a11.12,11.12,0,0,0,0,16.38l72.12,63.81a12.67,12.67,0,0,0,13,2.16A11.28,11.28,0,0,0,224,348.88V315H352v33.88a11.28,11.28,0,0,0,7.26,10.35,12.67,12.67,0,0,0,13-2.16l72.12-63.81A11.12,11.12,0,0,0,444.4,276.88Z\"]\n};\nvar faPeopleCarry = {\n prefix: 'far',\n iconName: 'people-carry',\n icon: [640, 512, [], \"f4ce\", \"M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm88 154.6l-19-78.4c-4.2-17.3-16.7-32-33.5-39.3-16.9-7.4-35.7-6.5-51.4 2.3-25.6 14.4-40.3 47.6-46.8 66.2l-12.2 34.7c-.6 1.7-1.7 3.2-3.4 4.3L416 250.5V128c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v122.5l-17.8-10.1c-1.6-1.1-2.8-2.6-3.4-4.3l-12.2-34.7c-6.5-18.6-21.2-51.8-46.8-66.2-15.7-8.8-34.5-9.7-51.4-2.3-16.7 7.3-29.2 22-33.5 39.3L40 250.7c-5.1 21.1 2 43.2 18.3 57.5l68.7 60c6.3 5.5 10.2 13.2 10.9 21.5l8 100.2c.8 9.1 8.9 23.3 25.8 22 13.2-1.1 23.1-12.6 22-25.8L185 376.9c-1.2-15.1-8.3-29.1-19.7-39.1l-52.2-45.6 24.8-92.1c2.7 5.3 19.6 51.8 19.6 51.8 3.9 11.2 11.2 20.7 23 28.9l36.9 19.4c4.6 2.4 9.7 3.7 14.9 3.7h175.5c5.2 0 10.3-1.3 14.9-3.7l36.9-19.4c11.8-8.2 19.1-17.7 23-28.9 0 0 16.9-46.6 19.6-51.8l24.8 92.1-52.2 45.6c-11.4 10-18.5 24-19.7 39.1L446.3 486c-1 13.2 8.8 24.8 22 25.8 16.9 1.3 25.1-12.7 25.8-22l8-100.2c.7-8.3 4.6-16.1 10.9-21.5l68.7-59.9c16.3-14.3 23.3-36.5 18.3-57.6zM368 256h-96v-96h96v96zm270.2 222.9l-53.7-130.8-38.2 33.4 47.4 115.6c5 12.2 18.9 18.1 31.3 13.1 12.4-5 18.2-19 13.2-31.3zm-636.4 0c-5 12.3.8 26.3 13.1 31.3 12.4 5 26.3-.9 31.3-13.1l47.4-115.6-38.2-33.4L1.8 478.9z\"]\n};\nvar faPepperHot = {\n prefix: 'far',\n iconName: 'pepper-hot',\n icon: [512, 512, [], \"f816\", \"M456.54 143c38.38-63.64 21.46-115.6 2-140.1a7.94 7.94 0 0 0-11.81-.51l-23 23a7.91 7.91 0 0 0-1 10c7.3 10.9 18.86 38.19-5.06 79.78A166.42 166.42 0 0 0 340.34 96c-54.74 0-92.37 28.33-98.4 32.12a17.16 17.16 0 0 0 .12 29.13C222.23 182 211.15 213 200.84 242.22c-40.4 114.55-104.37 122.66-132.3 125.86A72 72 0 0 0 72 512c197.58-3 336.64-99 396.24-180.62l10.62 8a14.94 14.94 0 0 0 23.44-8.2c2.73-10.59 9.7-33.74 9.7-58.45A178.43 178.43 0 0 0 456.54 143zm-116.2 1c66.69 0 121.22 55.22 123.57 124l-39-29.31a32 32 0 0 0-22.77-6.23l-39 4.33 4.13-37.13a32 32 0 0 0-15-30.77l-36.15-22.29a114.26 114.26 0 0 1 24.22-2.6zM72 464a24 24 0 0 1 0-48c30.46-3.51 122.66-11.95 174.12-157.81 11.21-31.8 20.68-57.68 37.54-75.23l34.81 21.49-5.21 47a32 32 0 0 0 35.34 35.34l52.59-5.85 28.72 21.61C382.09 368.39 259.26 461.12 72 464z\"]\n};\nvar faPercent = {\n prefix: 'far',\n iconName: 'percent',\n icon: [384, 512, [], \"f295\", \"M96 224c53 0 96-43 96-96s-43-96-96-96S0 75 0 128s43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm192 208c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm93.9-381.2L57.2 475c-2.3 3.1-5.9 5-9.7 5H12c-9.6 0-15.3-10.7-10-18.7L327.2 37c2.3-3.1 5.9-5 9.7-5H372c9.6 0 15.3 10.8 9.9 18.8z\"]\n};\nvar faPercentage = {\n prefix: 'far',\n iconName: 'percentage',\n icon: [320, 512, [], \"f541\", \"M81.94 177.94c18.74-18.75 18.74-49.14 0-67.88-18.75-18.75-49.14-18.75-67.88 0-18.74 18.74-18.74 49.14 0 67.88 18.75 18.75 49.14 18.75 67.88 0zm156.12 156.12c-18.74 18.74-18.74 49.14 0 67.88 18.75 18.74 49.14 18.74 67.88 0 18.74-18.75 18.74-49.14 0-67.88-18.75-18.75-49.14-18.75-67.88 0zm77.25-210.75l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L4.69 366.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l265.37-265.37c6.24-6.26 6.24-16.39-.01-22.64z\"]\n};\nvar faPersonBooth = {\n prefix: 'far',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M192 496c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V320h-48v176zM63.6 128c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm160.6 104h-54.3l-47.6-47.6C111.8 173.8 97.7 168 82.8 168H56.1c-31 0-56.1 25.1-56 56.1L.2 320 0 488c0 13.2 10.7 24 24 24 13.2 0 24-10.7 24-24l.2-117.9c.2.2.5.3.8.5.2.2.3.4.5.5l51.4 38.4c2 1.5 3.2 3.9 3.2 6.4v72c0 13.2 10.8 24 24 24s24-10.8 24-24v-72c0-17.6-8.4-34.4-22.5-44.8l-17.9-13.4V241.5l26.7 26.8c7.4 7.5 17.8 11.7 28.3 11.7h57.6c13.2 0 24-10.8 24-24s-10.8-24-24.1-24zM544 0H224c-17.7 0-32 14.3-32 32v160h48V48.1l84.7 204.7C301.8 285.1 264 342.7 264 372c0 41.9 34.1 76 76 76 14.3 0 28.1-4.1 40-11.5 23.8 15 56.2 15 80 0 11.9 7.5 25.7 11.5 40 11.5 9.9 0 19.3-2 28-5.5V496c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32zm-16 372c0 15.4-12.6 28-28 28-8.2 0-16-3.8-21.5-10.4-4.6-5.5-11.3-8.8-18.5-8.8s-14 3.2-18.5 8.8c-10.9 13.2-32.1 13.2-42.9 0-9.1-11.1-27.9-11.1-37.1 0-5.5 6.6-13.3 10.4-21.5 10.4-15.4 0-28-12.6-28-27.8.8-12.2 28.5-59.9 59.3-102 5-6.8 6-15.6 2.8-23.4L291.9 48H528v324z\"]\n};\nvar faPersonCarry = {\n prefix: 'far',\n iconName: 'person-carry',\n icon: [384, 512, [], \"f4cf\", \"M80 96c26.5 0 48-21.5 48-48S106.5 0 80 0 32 21.5 32 48s21.5 48 48 48zm288 0H208c-8.8 0-16 7.2-16 16v128h-33.6l-32.1-77.5c-8.7-20.9-29-34.5-51.7-34.5H56c-30.9 0-56 25.1-56 56v102.3c0 7.7 3 29.5 21.3 44l76.4 60.4c5.7 4.5 9.7 10.8 11.3 17.9l19.6 84.8c2.6 11.5 14.4 21.2 28.8 18 12.9-3 21-15.9 18-28.8l-21.4-93c-2.9-12.4-9.9-23.5-19.9-31.4L96 328.1V214.7l22.2 53.5c5 12 16.6 19.8 29.6 19.8H368c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16zm-32 144h-96v-96h96v96zM0 488c0 13.2 10.8 24 24 24s24-10.7 24-24v-95.9C36 382.6.5 354.3 0 353.9V488z\"]\n};\nvar faPersonDolly = {\n prefix: 'far',\n iconName: 'person-dolly',\n icon: [512, 512, [], \"f4d0\", \"M80 96c26.5 0 48-21.5 48-48S106.5 0 80 0 32 21.5 32 48s21.5 48 48 48zm423.4 280.4c-1.1-4.3-5.5-6.8-9.8-5.7l-20.3 5.4L432 222c-2.1-7.8-10.3-13.8-19.6-11.3L262.1 251l-22.8-85.1c-1.1-4.3-5.5-6.8-9.8-5.7l-30.9 8.3c-4.3 1.1-6.8 5.5-5.7 9.8l16.5 61.6h-51.1l-32.1-77.5c-8.7-20.9-29-34.5-51.7-34.5H56c-30.9 0-56 25.1-56 56v102.3c0 7.7 3 29.5 21.3 44l76.4 60.4c5.7 4.5 9.7 10.8 11.3 17.9l19.6 84.8c2.6 11.5 14.4 21.2 28.8 18 12.9-3 21-15.9 18-28.8l-21.4-93c-2.9-12.4-9.9-23.5-19.9-31.4l-38.1-30V214.7l22.2 53.5c5 12 16.6 19.8 29.6 19.8h74.6l28.9 107.7C234.8 407.3 224 426.4 224 448c0 35.3 28.7 64 64 64 31.7 0 57.8-23.1 62.9-53.3l155.2-41.6c4.3-1.1 6.8-5.5 5.7-9.8l-8.4-30.9zM288 464c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm52.9-52c-9.7-14.2-25.1-24.1-42.8-27l-23.5-87.8L394 265.5l33 123.2-86.1 23.3zM0 488c0 13.2 10.8 24 24 24s24-10.7 24-24v-95.9C36 382.6.5 354.3 0 353.9V488z\"]\n};\nvar faPersonDollyEmpty = {\n prefix: 'far',\n iconName: 'person-dolly-empty',\n icon: [512, 512, [], \"f4d1\", \"M32 48C32 21.5 53.5 0 80 0s48 21.5 48 48-21.5 48-48 48-48-21.5-48-48zM0 488c0 13.2 10.8 24 24 24s24-10.7 24-24v-95.9C36 382.6.5 354.3 0 353.9V488zm503.4-111.6l8.3 30.9c1.1 4.3-1.4 8.7-5.7 9.8l-155.2 41.6c-5.1 30.2-31.2 53.3-62.9 53.3-35.3 0-64-28.7-64-64 0-21.6 10.8-40.7 27.2-52.3L222.4 288h-74.6c-12.9 0-24.6-7.8-29.6-19.8L96 214.7v113.4l38.1 30.1c10 7.9 17 19 19.9 31.4l21.4 93c3 12.9-5.1 25.8-18 28.8-14.4 3.2-26.1-6.5-28.8-18L109 408.6c-1.6-7.1-5.6-13.4-11.3-17.9l-76.4-60.4C3 315.8 0 294 0 286.3V184c0-30.9 25.1-56 56-56h18.7c22.6 0 43 13.6 51.7 34.5l32.1 77.5h51.1L193 178.4c-1.1-4.3 1.4-8.7 5.7-9.8l30.9-8.3c4.3-1.1 8.7 1.4 9.8 5.7l58.7 219c17.7 2.8 33.1 12.7 42.8 27l152.8-41.2c4.2-1.2 8.6 1.4 9.7 5.6zM304 448c0-8.8-7.2-16-16-16s-16 7.2-16 16 7.2 16 16 16 16-7.2 16-16z\"]\n};\nvar faPersonSign = {\n prefix: 'far',\n iconName: 'person-sign',\n icon: [512, 512, [], \"f757\", \"M501.5 66.7l-67.6-24.6 5.5-15c3-8.3-1.3-17.5-9.6-20.5l-15-5.5c-8.3-3-17.5 1.3-20.5 9.6l-5.5 15-67.7-24.6C310-3 302.5 5.6 300.6 10.6l-43.8 120.3c-3 8.3 1.3 17.5 9.6 20.5L334 176l-15.8 43.5s-49.9-17.1-49.5-16.5l-50.5-58.6C207.8 134 193.4 128 178.6 128h-62.9c-21.4 0-40.5 11.9-50.1 30.9L2.5 285.3c-5.9 11.9-1.1 26.3 10.7 32.2 14.1 7 27.4-1.3 32.2-10.7L96 205.7v96.7L72.2 484.9c-1.7 13.2 7.6 25.2 20.7 26.9 1 .1 2.1.2 3.1.2 11.9 0 22.2-8.8 23.8-20.9L141 328h14l51.2 78.2c1.1 1.4 1.7 3.2 1.7 5V488c0 13.2 10.7 24 24 24 13.2 0 24-10.7 24-24v-76.8c0-12.7-4.3-25.1-10.9-33.1l-53.1-81.2V187.3l41.6 48.3c6.1 6.1 13.6 10.8 21.9 13.6l46.3 15.4-13.9 38.3c-3 8.3 1.3 17.5 9.6 20.5l15 5.5c8.3 3 17.5-1.3 20.5-9.6l46.2-126.9 67.6 24.6c11.3 4.1 18.7-4.7 20.5-9.6L511 87.2c3.1-8.3-1.2-17.5-9.5-20.5zM433.1 161l-120.2-43.8 21.9-60.1L455 100.9 433.1 161zM144 96.1c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48z\"]\n};\nvar faPhone = {\n prefix: 'far',\n iconName: 'phone',\n icon: [512, 512, [], \"f095\", \"M476.5 22.9L382.3 1.2c-21.6-5-43.6 6.2-52.3 26.6l-43.5 101.5c-8 18.6-2.6 40.6 13.1 53.4l40 32.7C311 267.8 267.8 311 215.4 339.5l-32.7-40c-12.8-15.7-34.8-21.1-53.4-13.1L27.7 329.9c-20.4 8.7-31.5 30.7-26.6 52.3l21.7 94.2c4.8 20.9 23.2 35.5 44.6 35.5C312.3 512 512 313.7 512 67.5c0-21.4-14.6-39.8-35.5-44.6zM69.3 464l-20.9-90.7 98.2-42.1 55.7 68.1c98.8-46.4 150.6-98 197-197l-68.1-55.7 42.1-98.2L464 69.3C463 286.9 286.9 463 69.3 464z\"]\n};\nvar faPhoneAlt = {\n prefix: 'far',\n iconName: 'phone-alt',\n icon: [512, 512, [], \"f879\", \"M484.25 330l-101.59-43.55a45.86 45.86 0 0 0-53.39 13.1l-32.7 40a311.08 311.08 0 0 1-124.19-124.12l40-32.7a45.91 45.91 0 0 0 13.1-53.42L182 27.79a45.63 45.63 0 0 0-52.31-26.61L35.5 22.89A45.59 45.59 0 0 0 0 67.5C0 313.76 199.68 512.1 444.56 512a45.58 45.58 0 0 0 44.59-35.51l21.7-94.22a45.75 45.75 0 0 0-26.6-52.27zm-41.59 134.09C225.08 463.09 49 287 48 69.3l90.69-20.9 42.09 98.22-68.09 55.71c46.39 99 98.19 150.63 197 197l55.69-68.11 98.19 42.11z\"]\n};\nvar faPhoneLaptop = {\n prefix: 'far',\n iconName: 'phone-laptop',\n icon: [640, 512, [], \"f87a\", \"M112 48h352v48h48V32a32.09 32.09 0 0 0-32-32H96a32.09 32.09 0 0 0-32 32v256H16a16 16 0 0 0-16 16v16a64.14 64.14 0 0 0 63.91 64H352v-96H112zm492 80H420a36 36 0 0 0-36 36v312a36 36 0 0 0 36 36h184a36 36 0 0 0 36-36V164a36 36 0 0 0-36-36zm-12 336H432V176h160z\"]\n};\nvar faPhoneOffice = {\n prefix: 'far',\n iconName: 'phone-office',\n icon: [576, 512, [], \"f67d\", \"M368 336h-32c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-48-80v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16zm112 144h32c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16zm0-96h32c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16zm80-272H269.06C262.45 13.4 244.87 0 224 0h-80c-20.87 0-38.45 13.4-45.06 32H64C28.65 32 0 60.65 0 96v352c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM144 48h80v320h-80V48zm384 400c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16V96c0-8.82 7.18-16 16-16h32v288c0 26.51 21.49 48 48 48h80c26.51 0 48-21.49 48-48V80h48v72c0 22.06 17.94 40 40 40h168v256zm0-304H368V80h144c8.82 0 16 7.18 16 16v48z\"]\n};\nvar faPhonePlus = {\n prefix: 'far',\n iconName: 'phone-plus',\n icon: [512, 512, [], \"f4d2\", \"M476.5 22.9L382.3 1.2C378.8.4 375.4 0 372 0c-18 0-34.7 10.6-42 27.7l-43.5 101.5c-8 18.6-2.6 40.6 13.1 53.4l40 32.7C311 267.8 267.8 311 215.4 339.5l-32.7-40c-8.9-10.8-22.1-16.7-35.5-16.7-6 0-12.1 1.2-17.9 3.7L27.7 329.9c-20.4 8.7-31.5 30.7-26.6 52.3l21.7 94.2c4.8 20.9 23.2 35.5 44.6 35.5C312.3 512 512 313.7 512 67.5c0-21.4-14.6-39.8-35.5-44.6zM69.3 464l-20.9-90.7 98.2-42.1 55.7 68.1c98.8-46.4 150.6-98 197-197l-68.1-55.7 42.1-98.2L464 69.3C463 286.9 286.9 463 69.3 464zM88 208c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-72h72c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16h-72V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v72H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h72v72z\"]\n};\nvar faPhoneRotary = {\n prefix: 'far',\n iconName: 'phone-rotary',\n icon: [512, 512, [], \"f8d3\", \"M370.43 192.25A64 64 0 0 0 314.86 160H197.14a64 64 0 0 0-55.57 32.25L36.22 376.62A32 32 0 0 0 32 392.5V448a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32v-55.5a32 32 0 0 0-4.22-15.88zM432 432H80v-35.25l103.25-180.69a16 16 0 0 1 13.89-8.06h117.72a16 16 0 0 1 13.89 8.06L432 396.75zM256 256a64 64 0 1 0 64 64 64 64 0 0 0-64-64zm250.18-133C436.76 65 347.38 32 256 32S75.24 65 5.82 123A16.45 16.45 0 0 0 0 135.64V192a16 16 0 0 0 16 16h70.11a16 16 0 0 0 14.31-8.85L128 128c39.9-17.28 83.2-24 128-24 44.77 0 88.07 6.72 128 24l27.58 71.15a16 16 0 0 0 14.31 8.85H496a16 16 0 0 0 16-16v-56.36a16.45 16.45 0 0 0-5.82-12.64z\"]\n};\nvar faPhoneSlash = {\n prefix: 'far',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M634 471L36 3.5C29.1-2 19-.9 13.5 6l-10 12.5C-2 25.4-.9 35.5 6 41l598 467.5c6.9 5.5 17 4.4 22.5-2.5l10-12.5c5.5-6.9 4.4-17-2.5-22.5zM403.5 215.4c-1.8 3.4-4.2 6.4-6.2 9.7l37.8 29.5c9.8-16 19.2-33 28.2-52.3l-68.1-55.7 42.1-98.2L528 69.3c-.3 77.2-23.1 149-61.6 209.8l38 29.7c45-69.5 71.5-152.2 71.5-241.3 0-21.4-14.6-39.8-35.5-44.6L446.3 1.2c-21.6-5-43.6 6.2-52.3 26.6l-43.5 101.5c-8 18.6-2.6 40.6 13.1 53.4l39.9 32.7zM133.3 464l-20.9-90.7 98.2-42.1 55.7 68.1c26.5-12.4 49.4-25.3 69.9-39.3l-40-31.3c-5.6 3.6-10.9 7.6-16.8 10.8l-32.7-40c-12.8-15.7-34.8-21.1-53.4-13.1L91.7 329.9c-20.4 8.7-31.5 30.7-26.6 52.3l21.7 94.2c4.8 20.9 23.2 35.5 44.6 35.5 104.2 0 199.9-36.1 275.9-96.3L368.2 385c-65.6 49.1-146.7 78.6-234.9 79z\"]\n};\nvar faPhoneSquare = {\n prefix: 'far',\n iconName: 'phone-square',\n icon: [448, 512, [], \"f098\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h340a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-280c0 128.234-103.956 232-232 232a12.004 12.004 0 0 1-11.693-9.302l-11.999-52a12 12 0 0 1 6.966-13.728l55.999-23.999a12 12 0 0 1 14.015 3.431l24.798 30.308c39.155-18.37 70.638-50.287 88.624-88.624l-30.309-24.798a12 12 0 0 1-3.431-14.015l24-55.999a12 12 0 0 1 13.728-6.966l52 11.999A12 12 0 0 1 352 152z\"]\n};\nvar faPhoneSquareAlt = {\n prefix: 'far',\n iconName: 'phone-square-alt',\n icon: [448, 512, [], \"f87b\", \"M344.73 309l-56-24a14.46 14.46 0 0 0-4.73-1 13.61 13.61 0 0 0-9.29 4.4l-24.8 30.31a185.51 185.51 0 0 1-88.62-88.62l30.31-24.8A13.61 13.61 0 0 0 196 196a14.2 14.2 0 0 0-1-4.73l-24-56a13 13 0 0 0-11-7.27 14.51 14.51 0 0 0-2.7.31l-52 12A12.57 12.57 0 0 0 96 152c0 128.23 104 232 232 232a12.57 12.57 0 0 0 11.69-9.3l12-52a14.51 14.51 0 0 0 .31-2.7 13 13 0 0 0-7.27-11zM400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm0 394a6 6 0 0 1-6 6H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h340a6 6 0 0 1 6 6z\"]\n};\nvar faPhoneVolume = {\n prefix: 'far',\n iconName: 'phone-volume',\n icon: [448, 512, [], \"f2a0\", \"M226.615 412.576l-28.086-70.218c-7.914-19.785-27.631-31.304-48.207-29.247l-21.97 2.197c-6.25-27.912-6.442-57.872-.002-86.618l21.97 2.197c20.541 2.055 40.282-9.433 48.208-29.246l28.087-70.218c8.438-21.094.579-45.143-18.686-57.184l-56.175-35.107c-18.097-11.311-42.199-9.21-58.016 6.606-124.622 124.622-125.347 327.175 0 452.523 15.816 15.814 39.913 17.922 58.017 6.606l56.174-35.107c19.265-12.041 27.124-36.091 18.686-57.184zm-99.556 51.125C21.661 357.639 21.517 186.505 127.06 80.297l54.646 34.156-27.437 68.589-59.946-5.993c-25.22 69.795-25.241 120.05 0 189.901l59.947-5.995 27.436 68.591-54.647 34.155zm155.728-362.488l-11.476 11.476c-4.117 4.117-4.671 10.584-1.341 15.36A55.7 55.7 0 0 1 280 160a55.688 55.688 0 0 1-10.031 31.95c-3.329 4.776-2.775 11.244 1.341 15.36l11.476 11.476c5.191 5.191 13.751 4.52 18.149-1.359C312.913 201.414 320 181.535 320 160s-7.087-41.414-19.064-57.428c-4.398-5.88-12.958-6.55-18.149-1.359zm90.875-90.875l-11.323 11.323c-4.461 4.461-4.746 11.651-.559 16.37C391.666 71.708 408 114.595 408 160s-16.334 88.292-46.22 121.969c-4.188 4.719-3.902 11.909.559 16.37l11.323 11.323c4.871 4.871 12.843 4.658 17.434-.479C426.488 269.575 448 217.302 448 160S426.488 50.425 391.096 10.817c-4.591-5.137-12.563-5.35-17.434-.479zm-45.355 45.355l-11.355 11.355c-4.406 4.406-4.679 11.429-.685 16.213C334.227 104.771 344 131.638 344 160s-9.773 55.229-27.733 76.74c-3.994 4.783-3.721 11.807.685 16.213l11.355 11.355c4.935 4.935 13.059 4.665 17.582-.65C369.655 235.731 384 199.54 384 160s-14.345-75.731-38.111-103.657c-4.523-5.315-12.647-5.584-17.582-.65z\"]\n};\nvar faPhotoVideo = {\n prefix: 'far',\n iconName: 'photo-video',\n icon: [640, 512, [], \"f87c\", \"M608 0H160c-17.67 0-32 13.13-32 29.33V112h48V48h48v64h48V48h224v304h112c17.67 0 32-13.13 32-29.33V29.33C640 13.13 625.67 0 608 0zm-16 304h-48v-56h48zm0-104h-48v-48h48zm0-96h-48V48h48zM128 320a32 32 0 1 0-32-32 32 32 0 0 0 32 32zm288-160H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zm-16 240L299.31 299.31a16 16 0 0 0-22.62 0L176 400l-36.69-36.69a16 16 0 0 0-22.62 0L48 432V208h352z\"]\n};\nvar faPi = {\n prefix: 'far',\n iconName: 'pi',\n icon: [448, 512, [], \"f67e\", \"M436 96H49.96c-8.49 0-16.63 3.37-22.63 9.37L2.36 130.34C-2.68 135.38.89 144 8.02 144H144v137.79c0 48.12-17.34 93.57-49.1 129.21-4.26 4.78-4.31 11.89.21 16.42l16.99 16.99c4.83 4.83 12.94 4.82 17.52-.25C169.95 399.53 192 342.35 192 281.79V144h96v235.9c0 28.48 16.96 55.51 43.97 64.53 29.62 9.89 60.23-1.42 76.37-25.68l23.63-35.45c3.68-5.52 2.19-12.96-3.33-16.64l-19.97-13.31c-5.52-3.68-12.97-2.19-16.64 3.33l-23.62 35.46a17.644 17.644 0 0 1-14.72 7.86c-9.75 0-17.69-7.94-17.69-17.69V144h100c6.63 0 12-5.37 12-12v-24c0-6.63-5.37-12-12-12z\"]\n};\nvar faPiano = {\n prefix: 'far',\n iconName: 'piano',\n icon: [512, 512, [], \"f8d4\", \"M476.62,270.31l-57.24-28.62A64,64,0,0,1,384,184.44C384,82.58,301.42,0,199.55,0h-15.1C82.58,0,0,82.58,0,184.44V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V327.55A64,64,0,0,0,476.62,270.31ZM464,464H48V384H80v40a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8V384h32v40a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8V384h32v40a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8V384h96v40a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8V384h32v40a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8V384h32Zm0-128H48V184.44C48,109.21,109.21,48,184.45,48h15.1C274.79,48,336,109.21,336,184.44a111.38,111.38,0,0,0,61.91,100.18l57.24,28.62A15.9,15.9,0,0,1,464,327.55Z\"]\n};\nvar faPianoKeyboard = {\n prefix: 'far',\n iconName: 'piano-keyboard',\n icon: [576, 512, [], \"f8d5\", \"M544 64H32A32 32 0 0 0 0 96v320a32 32 0 0 0 32 32h512a32 32 0 0 0 32-32V96a32 32 0 0 0-32-32zM144 400H48V224h80v80a16 16 0 0 0 16 16zm128 0h-96v-80a16 16 0 0 0 16-16v-80h64v80a16 16 0 0 0 16 16zm128 0h-96v-80a16 16 0 0 0 16-16v-80h64v80a16 16 0 0 0 16 16zm128 0h-96v-80a16 16 0 0 0 16-16v-80h80zm0-224H48v-64h480z\"]\n};\nvar faPie = {\n prefix: 'far',\n iconName: 'pie',\n icon: [576, 512, [], \"f705\", \"M544 240c-6.44 0-10.37-1.2-14.47-3.52C494.93 136.17 400.07 64 288 64S81 136.21 46.45 236.55c-4.07 2.28-8 3.45-14.45 3.45a32 32 0 0 0 0 64c32 0 50-13.47 61.92-22.39 9.08-6.8 12.83-9.61 23.53-9.61s14.47 2.81 23.55 9.61c11.91 8.92 29.89 22.39 61.91 22.39s50-13.48 61.88-22.41c9-6.78 12.8-9.59 23.45-9.59s14.39 2.81 23.44 9.59c11.89 8.92 29.86 22.41 61.86 22.41s49.95-13.48 61.84-22.41c9.05-6.78 12.8-9.59 23.44-9.59s14.34 2.81 23.38 9.58C494.06 290.52 512 304 544 304a32 32 0 0 0 0-64zm-337.69-88.84l-16 32A16 16 0 0 1 176 192a16 16 0 0 1-14.32-23.16l16-32a16 16 0 1 1 28.63 14.32zM304 176a16 16 0 0 1-32 0v-32a16 16 0 0 1 32 0zm103.16 14.31a16 16 0 0 1-21.47-7.15l-16-32a16 16 0 1 1 28.63-14.31l16 32a16 16 0 0 1-7.16 21.46zM445.4 400H130.6l-28.36-85.08a122.1 122.1 0 0 1-44.49 18.32l31 92.88A32 32 0 0 0 119.07 448h337.87a32 32 0 0 0 30.36-21.88l31-92.88a121.62 121.62 0 0 1-44.47-18.38z\"]\n};\nvar faPig = {\n prefix: 'far',\n iconName: 'pig',\n icon: [576, 512, [], \"f706\", \"M447.99 240c0 8.8-7.2 16-16 16s-16-7.2-16-16 7.2-16 16-16 16 7.2 16 16zM576 208v128c0 8.8-7.2 16-16 16h-48.7c-8.9 11.8-19.6 22.1-31.3 31.1V448c0 17.6-14.4 32-32 32h-80c-17.6 0-32-14.4-32-32v-32h-64v32c0 17.6-14.4 32-32 32h-80c-17.6 0-32-14.4-32-32v-64.7C89.4 354.1 64 308.2 64 256h-8C22.7 256-3.9 226.8.5 192.6 4.1 164.4 29.5 144 58 144c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6h-1c-11.6 0-22.3 7.8-24.5 19.2-3 15.3 8.7 28.8 23.5 28.8h11.2c9.46-46.34 38.95-85.3 78.99-107.63l.03.07c23-12.98 49.5-20.44 77.79-20.44H374.5c1.3-1 40.55-32 89.52-32h16v64.6c21.8 16.5 39.4 38.1 50.5 63.4H560c8.8 0 16 7.2 16 16zm-48 32h-28.9c-22.9-52.3-21.7-53.1-67.1-87.5v-34.7c-18.4 6.9-31.1 18.6-40.6 26.2H223.99c-61.8 0-112 50.2-112 112 0 63.6 49.4 92.4 64 103.4V432h48v-64H384v64h48v-72.6c36-27.5 31.9-24.3 55.4-55.4H528v-64z\"]\n};\nvar faPiggyBank = {\n prefix: 'far',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M560 224h-29.5c-11.1-25.3-28.7-46.9-50.5-63.4V96h-16c-30.3 0-57.8 10.1-81 26.2.4-3.4 1-6.7 1-10.2C384 50.1 333.9 0 272 0S160 50.1 160 112c0 9.7 1.5 19 3.8 27.9C114.9 159.8 78 203.1 67.2 256H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h8c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h112c8.8 0 16-7.2 16-16v-48h64v48c0 8.8 7.2 16 16 16h112c8.8 0 16-7.2 16-16v-80.9c11.7-9 22.4-19.3 31.3-31.1H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zM272 48c35.3 0 64 28.7 64 64 0 5.6-.9 10.9-2.3 16H224c-4.5 0-8.8 1-13.3 1.3-1.6-5.5-2.7-11.3-2.7-17.3 0-35.3 28.7-64 64-64zm256 288h-40.6c-23.5 31.1-19.4 27.9-55.4 55.4V464h-48v-64H224v64h-48v-72.6c-14.6-11-64-39.8-64-103.4 0-61.8 50.2-112 112-112h167.4c9.5-7.6 22.2-19.3 40.6-26.2v34.7c45.4 34.4 44.2 35.2 67.1 87.5H528v64zm-96-80c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16z\"]\n};\nvar faPills = {\n prefix: 'far',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm64 224H48V144c0-84.7 128-84.7 128 0v112zm353.1-49.1c-62.4-62.4-163.8-62.5-226.3 0s-62.5 163.8 0 226.3c62.4 62.4 163.8 62.5 226.3 0s62.5-163.9 0-226.3zm-207.3 52.8l154.5 154.5C375.7 478.8 257 360.5 321.8 259.7zm188.4 120.6L355.7 225.8c100.6-64.7 219.3 53.7 154.5 154.5z\"]\n};\nvar faPizza = {\n prefix: 'far',\n iconName: 'pizza',\n icon: [576, 512, [], \"f817\", \"M523.2 100.13a15.43 15.43 0 0 0-12.36-6 16.42 16.42 0 0 0-11.61 4.78L342.17 256l157.06 157.06a16.42 16.42 0 0 0 11.61 4.78 15.4 15.4 0 0 0 12.36-6 256.47 256.47 0 0 0 0-311.71zm-67.32 201.7L410.05 256l45.66-45.66c4.91 14.44 8.29 29.58 8.29 45.66a137.62 137.62 0 0 1-8.12 45.83zm49.23 49.23l-24.27-24.27a172.11 172.11 0 0 0-.1-141.48l24.37-24.37a208.65 208.65 0 0 1 0 190.12zM256.45 256L425.6 86.85c6.46-6.46 6.45-17.36-.42-23.39A255.13 255.13 0 0 0 256.46 0C175.37 0 94.29 38.28 42.65 114.84c-56.87 84.3-56.87 198 0 282.34C94.3 473.72 175.38 512 256.45 512a255.14 255.14 0 0 0 168.73-63.46c6.87-6 6.88-16.93.42-23.39zm-67.88 0L318 385.38A140.58 140.58 0 0 1 256 400c-79.4 0-144-64.6-144-144s64.6-144 144-144a140.71 140.71 0 0 1 62 14.62zm67.88 208c-70.42 0-133.84-34.14-174-93.67-46.14-68.38-46.14-160.26 0-228.64C122.6 82.15 186 48 256.46 48a207.9 207.9 0 0 1 109.19 30.92l-23.8 23.8A174.09 174.09 0 0 0 256 80a176 176 0 0 0 0 352 174.09 174.09 0 0 0 85.85-22.72l23.8 23.8A207.91 207.91 0 0 1 256.45 464zM216 144a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm-40 184a24 24 0 1 0 24-24 24 24 0 0 0-24 24z\"]\n};\nvar faPizzaSlice = {\n prefix: 'far',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M158.87.15c-1.09-.1-2.18-.15-3.26-.15a32.85 32.85 0 0 0-32.07 24.27L.55 491.63A16.24 16.24 0 0 0 16.15 512a16.54 16.54 0 0 0 4.4-.61l467.6-129.66c15.72-4.35 25.49-19.67 23.62-35.89C490.89 165.08 340.78 17.32 158.87.15zm-97.82 450.2l81.7-310.48c122.13 20.54 206.16 103.39 228.39 224.5zm356.39-98.82C390.5 215 292.6 118.47 155 93.45l11.61-44.12C315.39 69.09 439.5 190.64 462.43 339.06zM192 192a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm-32 128a32 32 0 1 0 32 32 32 32 0 0 0-32-32zm96 0a32 32 0 1 0 32-32 32 32 0 0 0-32 32z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'far',\n iconName: 'place-of-worship',\n icon: [576, 512, [], \"f67f\", \"M558.57 339.99L448 292.58v-18.46c0-11.24-5.9-21.65-15.53-27.44L384 217.6V102.63c0-8.49-3.37-16.63-9.38-22.63L299.31 4.69C296.19 1.56 292.09 0 288 0s-8.19 1.56-11.31 4.69L201.37 80c-6 6-9.37 14.14-9.37 22.62V217.6l-48.46 29.08A32.002 32.002 0 0 0 128 274.13v18.46l-110.57 47.4C6.96 344.99 0 357.89 0 372.32v122.45C0 504.28 5.97 512 13.33 512H32c8.84 0 16-7.16 16-16V379.11l80-34.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V283.18l64-38.4V109.26l48-48 48 48v135.52l64 38.4V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V344.81l80 34.3V496c0 8.84 7.16 16 16 16h18.67c7.37 0 13.33-7.71 13.33-17.23V372.32c0-14.43-6.96-27.33-17.43-32.33zM281.71 320.3c-33.27 3.17-57.71 33.02-57.71 66.45V496c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16V384c0-37.42-32.12-67.34-70.29-63.7z\"]\n};\nvar faPlane = {\n prefix: 'far',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M239.57 48l100.57 176H456c26.03 0 62.87 19.73 71.1 32-8.23 12.27-45.07 32-71.1 32H340.14L239.57 464h-37.14l50.29-176H136l-36 48H58.68L82 256l-23.32-80H100l36 48h116.72L202.43 48h37.14m18.57-48h-98.13c-10.63 0-18.3 10.17-15.38 20.39L189.08 176H160l-31.2-41.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H116c5.04 0 9.78-2.37 12.8-6.4L160 336h29.08l-44.46 155.6C141.7 501.82 149.37 512 160 512h98.13c5.74 0 11.04-3.08 13.89-8.06L368 336h88c44.18 0 120-35.82 120-80 0-44.19-75.82-80-120-80h-88L272.03 8.06A15.998 15.998 0 0 0 258.14 0z\"]\n};\nvar faPlaneAlt = {\n prefix: 'far',\n iconName: 'plane-alt',\n icon: [576, 512, [], \"f3de\", \"M457.75 176.563H356.417L329.66 128H340c6.627 0 12-5.373 12-12V76c0-6.627-5.373-12-12-12h-45.602l-25.569-46.406-.581-.998C261.947 6.359 250.566 0 238.547 0h-52.369c-22.472 0-38.951 20.866-34.015 42.578l25.086 135.738a624.765 624.765 0 0 0-37.477 3.772l-27.581-42.387c-6.326-10.162-17.62-16.451-29.61-16.451H44.004c-22.029 0-38.509 20.155-34.198 41.714l11.961 59.805C7.821 234.229 0 244.818 0 256.001s7.821 21.772 21.766 31.231l-11.96 59.803c-4.319 21.601 12.212 41.718 34.199 41.714l38.582-.001c11.988-.003 23.278-6.292 29.604-16.45l27.58-42.386a624.11 624.11 0 0 0 37.477 3.772L152.163 469.42c-4.941 21.739 11.568 42.58 34.015 42.58h52.369c12.021 0 23.401-6.36 29.702-16.598l.302-.491L294.397 448H340c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-10.341l26.758-48.565 101.333.001C510.814 335.436 576 306.854 576 256c0-50.872-65.216-79.437-118.25-79.437zm0 110.873l-129.69-.001L230.778 464h-28.801l32.542-176.087c-53.455-1.594-62.567-1.471-118.194-9.978l-40.872 62.812-15.439.001L76.964 256l-16.95-84.751h15.44l40.872 62.814c55.671-8.515 64.832-8.386 118.194-9.979L201.979 48h28.8l97.281 176.563h129.69C496.424 224.563 528 240 528 256s-31.58 31.436-70.25 31.436z\"]\n};\nvar faPlaneArrival = {\n prefix: 'far',\n iconName: 'plane-arrival',\n icon: [640, 512, [], \"f5af\", \"M624 464H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM113.43 312.32c9.06 7.82 20.41 13.78 32.47 16.93l306.36 80c22.63 5.9 56.94 11.05 93.25 1.37 34.2-9.13 54.62-24.95 60.71-47 6.19-22.57-3.55-46.66-28.92-71.66-20.91-20.59-49.21-35.98-81.86-44.51l-97.89-25.56L294.89 33.8a48.016 48.016 0 0 0-30.01-23.45C228.67.89 227.1 0 219.1 0c-12.89 0-25.45 5.2-34.62 14.75a47.985 47.985 0 0 0-11.3 47.23l33.51 110.06L129.95 152 106.4 94.84c-5.74-13.93-17.68-21.36-32.26-25.16C60 65.98 55.78 64.46 48 64.46c-35.4 0-48 28.62-48 45V194c0 14.11 6.21 27.51 16.98 36.63l96.45 81.69zM48 109.46l14.02 3.66 32.65 79.28 182.93 47.77L219.1 48l33.66 8.79 112.59 206.29 117.96 30.8c24.52 6.4 45.37 17.56 60.29 32.26 15.12 14.89 16.74 23.24 16.34 24.7-.39 1.42-6.09 7.86-26.81 13.39-6.76 1.8-31.65 8.25-68.75-1.43l-306.37-80c-5-1.3-9.69-3.77-13.57-7.11L48 194v-84.54z\"]\n};\nvar faPlaneDeparture = {\n prefix: 'far',\n iconName: 'plane-departure',\n icon: [640, 512, [], \"f5b0\", \"M624 464H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM74.64 367.77A48.002 48.002 0 0 0 110.62 384h.21l124.25-.54c12.03-.02 24.23-3.07 35.13-8.82L550.46 226.7c30.06-15.87 54.47-38.04 70.58-64.11 19.42-31.42 23.95-58.48 13.46-80.44-10.38-21.78-33.53-34.06-68.79-36.44-3.23-.22-6.46-.32-9.68-.32-26.8 0-54.1 7.23-81.12 21.5l-88.68 46.82-.36.19-.39-.15-201-78.46a47.99 47.99 0 0 0-39.86 2.26L108.7 56.52a48.002 48.002 0 0 0-3.84 82.64l103.92 67.88.29.19-.35.18-66.79 35.26-.42.22-.42-.22-54.64-28.65a47.96 47.96 0 0 0-22.29-5.49c-7.7 0-15.4 1.85-22.41 5.55l-16.16 8.53A47.987 47.987 0 0 0 .78 256.42a47.981 47.981 0 0 0 11.23 40.4l62.63 70.95zM64.16 256.52l77.43 40.6 161.98-85.51L131.11 98.97 167.03 80l221.83 86.59 108.46-57.25c20.05-10.59 39.81-15.95 58.72-15.95 2.14 0 4.29.07 6.44.21 15.03 1.02 26.56 4.71 28.71 9.24 2.08 4.36.46 16.01-10.98 34.51-11.62 18.8-29.66 35.02-52.16 46.9L247.81 332.19c-4.04 2.13-8.52 3.26-12.94 3.27l-124.25.54L48 265.05l16.16-8.53z\"]\n};\nvar faPlaneSlash = {\n prefix: 'far',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M271.57,464H234.44L277.3,314l-33.25-26H168l-36,48H90.69L114,256,90.69,176,41.38,129.56a15.89,15.89,0,0,0-8.89,18.32L64,256,32.49,364.13A16,16,0,0,0,48,384H148a16,16,0,0,0,12.8-6.4L192,336h29.08L176.63,491.59A16,16,0,0,0,192,512h98.13A16,16,0,0,0,304,503.94L370.8,387.1l-38.21-29.88ZM188.45,61.77,252.73,112,234.44,48h37.13l81.34,142.33L396,224h92c26,0,62.88,19.74,71.1,32-8.22,12.27-45.06,32-71.1,32H477.83l51.5,40.26C568.11,315.5,608,288.06,608,256c0-44.18-75.81-80-120-80H400L304,8.07C301.49,3.62,295.27,0,290.14,0H192A16,16,0,0,0,176.63,20.4ZM634,471,36,3.52A16,16,0,0,0,13.51,6l-10,12.49A16,16,0,0,0,6,41L604,508.48A16,16,0,0,0,626.48,506l10-12.49A16,16,0,0,0,634,471Z\"]\n};\nvar faPlanetMoon = {\n prefix: 'far',\n iconName: 'planet-moon',\n icon: [576, 512, [], \"e01f\", \"M512,0a64,64,0,1,0,64,64A63.99942,63.99942,0,0,0,512,0ZM224,64C100.28711,64,0,164.28516,0,288,0,411.71289,100.28711,512,224,512S448,411.71289,448,288C448,164.28516,347.71289,64,224,64Zm0,400c-97.04688,0-176-78.95312-176-176a174.63792,174.63792,0,0,1,17.93555-76.90625,28.23035,28.23035,0,0,0,23.78515,12.9043L114.74609,224a32.00483,32.00483,0,0,1,22.627,9.37109L192,288v32a32.00033,32.00033,0,0,0,32,32c-.00586,0-.00391,39.58984-.00195,63.06836a16.03421,16.03421,0,0,0,17.60742,15.98437q5.25587-.5625,10.41992-1.43359A28.68332,28.68332,0,0,0,272.918,414.166l40.32422-80.64844A64.02377,64.02377,0,0,0,320,304.89062V288a31.99908,31.99908,0,0,0-32-32H223.45312a37.31367,37.31367,0,0,1-26.38085-10.92773,32.00106,32.00106,0,0,1-1.55079-43.58985L245.25,144.125c5.82031-8.73047,8.77539-18.832,9.81836-29.209C337.32422,129.65039,400,201.57031,400,288,400,385.04688,321.04688,464,224,464Z\"]\n};\nvar faPlanetRinged = {\n prefix: 'far',\n iconName: 'planet-ringed',\n icon: [512, 512, [], \"e020\", \"M502.93136,9.03939c-23.47-23.46814-88.251.13477-167.07181,54.86839A207.27823,207.27823,0,0,0,255.986,47.96155c-114.88922,0-208.02332,93.1362-208.02332,208.02366a207.28775,207.28775,0,0,0,15.94425,79.87567C9.17336,414.68181-14.42952,479.46288,9.04054,502.931c23.49155,23.49158,88.31157-.01172,167.2144-54.81369a207.3182,207.3182,0,0,0,79.731,15.89153c114.88727,0,208.02137-93.13425,208.02137-208.02365A207.30937,207.30937,0,0,0,448.11581,176.256C502.91769,97.3511,526.42291,32.531,502.93136,9.03939ZM63.96353,448.00794c-7.96334-7.96334,2.46107-32.88469,25.7612-67.375A208.80918,208.80918,0,0,0,131.397,422.28967C96.83645,445.64257,71.94053,455.983,63.96353,448.00794ZM172.57505,391.8973c-45.76036-28.19107-76.60779-78.33262-76.60779-135.91209,0-88.23358,71.7833-160.017,160.01869-160.017,57.57939,0,107.7189,30.84552,135.90993,76.60791-27.48787,34.72074-63.109,74.61366-103.90814,115.41288C247.18663,328.79017,207.29574,364.4094,172.57505,391.8973Zm83.4109,24.10686a160.07735,160.07735,0,0,1-32.30258-3.28535,1197.437,1197.437,0,0,0,99.65009-89.386,1196.72461,1196.72461,0,0,0,89.38389-99.6483,160.0442,160.0442,0,0,1,3.28534,32.30069C416.00269,344.22074,344.21939,416.00416,255.986,416.00416ZM380.63353,89.72566c34.4902-23.29821,59.40956-33.72459,67.3729-25.76124,7.975,7.97507-2.36342,32.86907-25.71823,67.4316A208.84145,208.84145,0,0,0,380.63353,89.72566Z\"]\n};\nvar faPlay = {\n prefix: 'far',\n iconName: 'play',\n icon: [448, 512, [], \"f04b\", \"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6zM48 453.5v-395c0-4.6 5.1-7.5 9.1-5.2l334.2 197.5c3.9 2.3 3.9 8 0 10.3L57.1 458.7c-4 2.3-9.1-.6-9.1-5.2z\"]\n};\nvar faPlayCircle = {\n prefix: 'far',\n iconName: 'play-circle',\n icon: [512, 512, [], \"f144\", \"M371.7 238l-176-107c-15.8-8.8-35.7 2.5-35.7 21v208c0 18.4 19.8 29.8 35.7 21l176-101c16.4-9.1 16.4-32.8 0-42zM504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256z\"]\n};\nvar faPlug = {\n prefix: 'far',\n iconName: 'plug',\n icon: [384, 512, [], \"f1e6\", \"M312,24a24,24,0,0,0-48,0v88h48ZM120,24a24,24,0,0,0-48,0v88h48ZM368,144H16A16,16,0,0,0,0,160v16a16,16,0,0,0,16,16H32v64c0,80.14,59.11,145.92,136,157.58V512h48V413.58C292.89,401.92,352,336.14,352,256V192h16a16,16,0,0,0,16-16V160A16,16,0,0,0,368,144ZM304,256a112,112,0,0,1-224,0V192H304Z\"]\n};\nvar faPlus = {\n prefix: 'far',\n iconName: 'plus',\n icon: [384, 512, [], \"f067\", \"M368 224H224V80c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V288h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faPlusCircle = {\n prefix: 'far',\n iconName: 'plus-circle',\n icon: [512, 512, [], \"f055\", \"M384 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm120 16c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-48 0c0-110.5-89.5-200-200-200S56 145.5 56 256s89.5 200 200 200 200-89.5 200-200z\"]\n};\nvar faPlusHexagon = {\n prefix: 'far',\n iconName: 'plus-hexagon',\n icon: [576, 512, [], \"f300\", \"M441.5 39.8C432.9 25.1 417.1 16 400 16H176c-17.1 0-32.9 9.1-41.5 23.8l-112 192c-8.7 14.9-8.7 33.4 0 48.4l112 192c8.6 14.7 24.4 23.8 41.5 23.8h224c17.1 0 32.9-9.1 41.5-23.8l112-192c8.7-14.9 8.7-33.4 0-48.4l-112-192zM400 448H176L64 256 176 64h224l112 192-112 192zm16-208v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12z\"]\n};\nvar faPlusOctagon = {\n prefix: 'far',\n iconName: 'plus-octagon',\n icon: [512, 512, [], \"f301\", \"M497.9 150.5L361.5 14.1c-9-9-21.2-14.1-33.9-14.1H184.5c-12.7 0-24.9 5.1-33.9 14.1L14.1 150.5c-9 9-14.1 21.2-14.1 33.9v143.1c0 12.7 5.1 24.9 14.1 33.9l136.5 136.5c9 9 21.2 14.1 33.9 14.1h143.1c12.7 0 24.9-5.1 33.9-14.1L498 361.4c9-9 14.1-21.2 14.1-33.9v-143c-.1-12.8-5.2-25-14.2-34zm-33.9 177L327.5 464h-143L48 327.5v-143L184.5 48h143.1L464 184.5v143zM384 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12z\"]\n};\nvar faPlusSquare = {\n prefix: 'far',\n iconName: 'plus-square',\n icon: [448, 512, [], \"f0fe\", \"M352 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm96-160v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faPodcast = {\n prefix: 'far',\n iconName: 'podcast',\n icon: [512, 512, [], \"f2ce\", \"M299.429 488.563C294.286 507.573 274.858 512 256 512c-18.857 0-38.286-4.427-43.428-23.437C204.927 460.134 192 388.898 192 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM144 232c0-61.19 48.953-110.852 109.88-111.98 61.961-1.147 114.04 49.862 114.12 111.833.035 27.659-9.892 53.792-28.077 74.313-1.843 2.08-2.077 5.144-.48 7.418 5.296 7.541 8.981 16.176 10.931 25.69.947 4.623 6.573 6.453 10.003 3.211 29.469-27.847 47.806-67.348 47.623-111.136-.352-84.131-69.885-152.428-154.01-151.337C170.968 81.09 104 148.724 104 232c0 43.523 18.297 82.768 47.614 110.476 3.434 3.246 9.064 1.427 10.013-3.203 1.949-9.514 5.635-18.149 10.931-25.69 1.596-2.272 1.365-5.335-.477-7.413C153.926 285.685 144 259.607 144 232zM256.503.001C126.406-.271 21.207 103.688 20.01 233.78c-.902 98.093 58.054 182.512 142.555 218.984 4.388 1.894 9.108-1.9 8.253-6.602a985.559 985.559 0 0 1-5.517-33.559 6.014 6.014 0 0 0-3.088-4.407C102.605 375.626 60 311.84 60 236c0-108.321 87.662-196 196-196 108.321 0 196 87.661 196 196 0 74.634-41.538 139.051-102.213 172.196a6.01 6.01 0 0 0-3.088 4.406 986.377 986.377 0 0 1-5.517 33.559c-.855 4.703 3.866 8.496 8.255 6.602C433.298 416.566 492 333.145 492 236 492 105.828 386.611.272 256.503.001zM256 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z\"]\n};\nvar faPodium = {\n prefix: 'far',\n iconName: 'podium',\n icon: [448, 512, [], \"f680\", \"M432 160H112c0-33.85 21.22-62.69 52.02-74.35C172.92 110.29 196.29 128 224 128h32c35.35 0 64-28.65 64-64S291.35 0 256 0h-32c-24.63 0-45.77 14.07-56.47 34.47C108.63 45.94 64 97.8 64 160H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h51.02l23.71 256H48c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-42.73l23.71-256H432c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM224 48h32c8.82 0 16 7.18 16 16s-7.18 16-16 16h-32c-8.82 0-16-7.18-16-16s7.18-16 16-16zm85.04 416H138.96l-23.71-256h217.5l-23.71 256z\"]\n};\nvar faPodiumStar = {\n prefix: 'far',\n iconName: 'podium-star',\n icon: [448, 512, [], \"f758\", \"M186 338.3l-6.2 36.4c-1.1 6.6 5.8 11.5 11.6 8.4l32.6-17.2 32.6 17.2c5.8 3 12.7-1.8 11.6-8.4l-6.2-36.4 26.4-25.7c4.7-4.6 2.1-12.7-4.4-13.6l-36.5-5.3-16.3-33.1c-2.9-5.9-11.4-6-14.3 0l-16.3 33.1-36.5 5.3c-6.5.9-9.2 9-4.4 13.6l26.3 25.7zM432 160H112c0-33.8 21.2-62.7 52-74.3 8.9 24.6 32.3 42.3 60 42.3h32c35.3 0 64-28.7 64-64S291.3 0 256 0h-32c-24.6 0-45.8 14.1-56.5 34.5C108.6 45.9 64 97.8 64 160H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h51l23.7 256H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h352c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16h-42.7L381 208h51c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM224 48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16s7.2-16 16-16zm85 416H139l-23.7-256h217.5L309 464z\"]\n};\nvar faPoliceBox = {\n prefix: 'far',\n iconName: 'police-box',\n icon: [384, 512, [], \"e021\", \"M184,208V180H148v36h28A8.00039,8.00039,0,0,0,184,208Zm-44-72H112a8.00039,8.00039,0,0,0-8,8v28h36Zm-28,80h28V180H104v28A8.00039,8.00039,0,0,0,112,216Zm72-72a8.00039,8.00039,0,0,0-8-8H148v36h36ZM112,320h64a8.00039,8.00039,0,0,0,8-8V248a8.00039,8.00039,0,0,0-8-8H112a8.00039,8.00039,0,0,0-8,8v64A8.00039,8.00039,0,0,0,112,320ZM280,208V180H244v36h28A8.00039,8.00039,0,0,0,280,208Zm0-64a8.00039,8.00039,0,0,0-8-8H244v36h36Zm-72,72h28V180H200v28A8.00039,8.00039,0,0,0,208,216Zm28-80H208a8.00039,8.00039,0,0,0-8,8v28h36ZM368,464H352V88a23.99869,23.99869,0,0,0-24-24h-8.02148V48a15.99829,15.99829,0,0,0-16-16H216V16A15.99954,15.99954,0,0,0,200,0H184a15.99954,15.99954,0,0,0-16,16V32H80A15.99954,15.99954,0,0,0,64,48V64H56A23.99993,23.99993,0,0,0,32,88V464H16A15.99954,15.99954,0,0,0,0,480v16a16.00079,16.00079,0,0,0,16,16H368a16.00079,16.00079,0,0,0,16-16V480A15.99954,15.99954,0,0,0,368,464Zm-64,0H80V112H304Z\"]\n};\nvar faPoll = {\n prefix: 'far',\n iconName: 'poll',\n icon: [448, 512, [], \"f681\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H48V80h352v352zm-280-48h16c8.84 0 16-7.16 16-16V240c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v128c0 8.84 7.16 16 16 16zm96 0h16c8.84 0 16-7.16 16-16V144c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v224c0 8.84 7.16 16 16 16zm96 0h16c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16z\"]\n};\nvar faPollH = {\n prefix: 'far',\n iconName: 'poll-h',\n icon: [448, 512, [], \"f682\", \"M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zm-400 0V80h352v352H48zm48-280v16c0 8.84 7.16 16 16 16h128c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H112c-8.84 0-16 7.16-16 16zm0 96v16c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H112c-8.84 0-16 7.16-16 16zm0 96v16c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16z\"]\n};\nvar faPollPeople = {\n prefix: 'far',\n iconName: 'poll-people',\n icon: [640, 512, [], \"f759\", \"M154.2 390.6c6.1-10.2 9.8-21.9 9.8-34.6 0-37.5-30.5-68-68-68s-68 30.5-68 68c0 12.7 3.7 24.4 9.8 34.6C15.1 405.1 0 430.4 0 459.2v14.4C0 494.8 17.2 512 38.4 512h115.2c21.2 0 38.4-17.2 38.4-38.4v-14.4c0-28.8-15.1-54.1-37.8-68.6zM96 336c11 0 20 9 20 20s-9 20-20 20-20-9-20-20 9-20 20-20zm48 128H48v-4.8c0-18.5 15.1-33.6 33.6-33.6h28.8c18.5 0 33.6 15.1 33.6 33.6v4.8zm10.2-361.4c6.1-10.2 9.8-21.9 9.8-34.6 0-37.5-30.5-68-68-68S28 30.5 28 68c0 12.7 3.7 24.4 9.8 34.6C15.1 117.1 0 142.4 0 171.2v14.4C0 206.8 17.2 224 38.4 224h115.2c21.2 0 38.4-17.2 38.4-38.4v-14.4c0-28.8-15.1-54.1-37.8-68.6zM96 48c11 0 20 9 20 20s-9 20-20 20-20-9-20-20 9-20 20-20zm48 128H48v-4.8c0-18.5 15.1-33.6 33.6-33.6h28.8c18.5 0 33.6 15.1 33.6 33.6v4.8zM616 32H248c-13.3 0-24 10.7-24 24v112c0 13.3 10.7 24 24 24h368c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24zm-24 112h-80V80h80v64zm24 176H248c-13.3 0-24 10.7-24 24v112c0 13.3 10.7 24 24 24h368c13.3 0 24-10.7 24-24V344c0-13.3-10.7-24-24-24zm-24 112H352v-64h240v64z\"]\n};\nvar faPoo = {\n prefix: 'far',\n iconName: 'poo',\n icon: [512, 512, [], \"f2fe\", \"M343.7 352H168.3c-5.8 0-9.8 5.7-7.8 11 10.5 27.9 58.4 53 95.5 53s85-25.1 95.5-53c2-5.3-2-11-7.8-11zM192 320c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm128-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm161.8 75.1c2.8-9.5 4.2-19.5 4.2-29.6 0-38.9-21-73-52.2-91.6.1-2 .2-3.9.2-5.9 0-37.9-21.2-71-52.4-87.9C376.5 51.2 322.1 0 256 0c-7.6 0-14.2.9-19.8 1.8-16.4 2.6-30.4 13.6-36.8 28.9-6.4 15.4-4.4 33 5.3 46.5 2.2 3 3.3 6.3 3.3 9.8 0 9.4-7.6 17-17 17h-13c-55.1 0-100 44.9-100 100 0 2 .1 4 .2 5.9C47 228.5 26 262.6 26 301.5c0 10.2 1.4 20.2 4.2 29.6C11.4 350.4 0 376.7 0 405.5 0 464.2 47.8 512 106.5 512h299c58.7 0 106.5-47.8 106.5-106.5 0-28.8-11.4-55.1-30.2-74.4zM405.5 464h-299C74.2 464 48 437.8 48 405.5c0-29.1 21.4-53.1 49.3-57.6C83.2 337.2 74 320.5 74 301.5c0-32.3 26.2-58.5 58.5-58.5h11.4c-10.9-9.5-17.9-23.4-17.9-39 0-28.7 23.3-52 52-52h13c35.9 0 65-29.1 65-65 0-14.1-4.6-27.1-12.3-37.8 4-.6 8.1-1.2 12.3-1.2 43.1 0 78 34.9 78 78 0 9.2-1.9 17.8-4.8 26h4.8c28.7 0 52 23.3 52 52 0 15.6-7 29.5-17.9 39h11.4c32.3 0 58.5 26.2 58.5 58.5 0 19-9.2 35.7-23.3 46.4 27.9 4.5 49.3 28.4 49.3 57.6 0 32.3-26.2 58.5-58.5 58.5z\"]\n};\nvar faPooStorm = {\n prefix: 'far',\n iconName: 'poo-storm',\n icon: [448, 512, [], \"f75a\", \"M400 192.4v-.4c0-38.2-22.5-71.3-54.9-86.8C337.8 46 287.2 0 226 0c-7.8 0-14.7 1.1-18.8 1.7-16.5 2.6-30.4 13.5-36.8 28.9-6.4 15.4-4.4 33 5.3 46.5 1.5 2.1 2.3 4.5 2.3 6.9 0 6.6-5.4 12-12 12h-22c-52.9 0-96 43.1-96 96v.4C19.2 210.9 0 243.3 0 280c0 57.3 46.7 104 104 104h24.3c.1-.6 0-1.2 0-1.8l6.2-46.2H104c-30.9 0-56-25.1-56-56s25.1-56 56-56h4.5c-7.7-8.5-12.5-19.7-12.5-32 0-26.5 21.5-48 48-48h22c33.1 0 60-26.9 60-60 0-13-4.3-25-11.3-34.9 3.7-.6 7.5-1.1 11.3-1.1 39.8 0 72 32.2 72 72 0 8.5-1.7 16.5-4.4 24H304c26.5 0 48 21.5 48 48 0 12.3-4.8 23.5-12.5 32h4.5c30.9 0 56 25.1 56 56 0 28.9-22 52.4-50 55.4 3.4 11.5 2.2 24.1-3.9 34.6l-8.1 14h6c57.3 0 104-46.7 104-104 0-36.7-19.2-69.1-48-87.6zM308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18z\"]\n};\nvar faPoop = {\n prefix: 'far',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M481.81 331.15c2.76-9.5 4.19-19.46 4.19-29.65 0-38.9-20.96-72.99-52.18-91.58.12-1.97.18-3.94.18-5.92 0-37.92-21.21-70.97-52.39-87.92C376.54 51.22 322.14 0 256 0c-7.63 0-14.23.95-19.81 1.83a47.993 47.993 0 0 0-36.76 28.92 48.01 48.01 0 0 0 5.3 46.47C206.9 80.25 208 83.54 208 87c0 9.37-7.63 17-17 17h-13c-55.14 0-100 44.86-100 100 0 1.98.06 3.96.18 5.92C46.96 228.51 26 262.6 26 301.5c0 10.19 1.44 20.15 4.19 29.65C11.36 350.38 0 376.68 0 405.5 0 464.22 47.78 512 106.5 512h299c58.72 0 106.5-47.78 106.5-106.5 0-28.82-11.36-55.12-30.19-74.35zM405.5 464h-299C74.19 464 48 437.81 48 405.5c0-29.15 21.38-53.12 49.27-57.57C83.22 337.24 74 320.52 74 301.5c0-32.31 26.19-58.5 58.5-58.5h11.44c-10.9-9.53-17.94-23.38-17.94-39 0-28.72 23.28-52 52-52h13c35.9 0 65-29.1 65-65 0-14.12-4.62-27.1-12.27-37.76C247.75 48.6 251.8 48 256 48c43.08 0 78 34.92 78 78 0 9.17-1.87 17.83-4.78 26H334c28.72 0 52 23.28 52 52 0 15.62-7.03 29.47-17.94 39h11.44c32.31 0 58.5 26.19 58.5 58.5 0 19.02-9.22 35.74-23.27 46.43 27.89 4.45 49.27 28.42 49.27 57.57 0 32.31-26.19 58.5-58.5 58.5z\"]\n};\nvar faPopcorn = {\n prefix: 'far',\n iconName: 'popcorn',\n icon: [512, 512, [], \"f819\", \"M422.06 113.61c-5.57-34.13-30.33-53.78-50-61.32-11.16-16.85-34.37-36.17-67.58-35.77A80.37 80.37 0 0 0 255.57 0a78.42 78.42 0 0 0-48.39 16.52c-20.08-.33-49.35 7.9-67.7 35.78a80.15 80.15 0 0 0-50.21 61.36C60.35 140 60.84 173.53 68.34 195.94v.38l39.36 288A32.05 32.05 0 0 0 139.45 512h232.69a32 32 0 0 0 31.78-27.68L443 198.46c13.56-37.63-2.83-68.46-20.94-84.85zM153.45 464l-35-256h50.39l21.38 256zm119.65 0h-34.6l-21.39-256h77.37zm85 0h-36.74l21.38-256h50.39zM114.42 160c7.38-16.75 21.92-18.55 25.59-18.91a30.59 30.59 0 0 1 .25-29.51c10.3-19 29.91-16.79 34.14-15.9a31.58 31.58 0 0 1 21.73-29.5 30.59 30.59 0 0 1 29.08 5c1-3.55 8.08-23.23 30.36-23.23 21.49 0 30.57 18.91 30.57 23.23a31.15 31.15 0 0 1 29.3-5 31.56 31.56 0 0 1 21.75 29.5c4.23-.89 23.86-3.09 34.12 15.9a32 32 0 0 1 .27 29.51c7.69.77 19.37 4.79 25.58 18.91z\"]\n};\nvar faPortalEnter = {\n prefix: 'far',\n iconName: 'portal-enter',\n icon: [512, 512, [], \"e022\", \"M416,0c-38.68751,0-83.877,34.86808-93.9043,188.8126l-.002-.00586a88.19428,88.19428,0,0,0-64.8125-60.23254l-78.25-17.70258a87.4657,87.4657,0,0,0-73.25,16.21825l-48.375,37.35824a24.00841,24.00841,0,1,0,29.375,37.98321l48.375-37.37386a40.34188,40.34188,0,0,1,33.3125-7.37477l14.875,3.37489-35.3125,87.34109a55.77113,55.77113,0,0,0,23,68.90415l83.78124,50.5922a8.84284,8.84284,0,0,1,3.84376,6.84354,8.72041,8.72041,0,0,1-.3125,2.20306L225.06249,481.40718a23.97436,23.97436,0,0,0,16.46876,29.671,24.99565,24.99565,0,0,0,6.625.92185,23.98662,23.98662,0,0,0,23.0625-17.42134l33.3125-104.46557A56.10341,56.10341,0,0,0,279.625,326.7869L227.78125,295.491l41.9375-104.79367a39.09378,39.09378,0,0,1,6.40625,12.06213l13.96875,45.9361c7.21874,23.67115,28.6875,39.04568,53.40625,39.13943l48.40625.15624H392a23.986,23.986,0,0,0,24-23.90552c.06249-13.26522-10.65625-23.48366-23.93751-23.53053l-23.88085-.084C370.01953,132.87485,390.69922,47.99854,416,47.99854c26.50977,0,48,93.12215,48,207.99365s-21.49023,207.99365-48,207.99365c-21.35352,0-39.42773-60.45909-45.66016-143.99561h-48.4375C328.01367,418.1845,350.87305,511.98438,416,511.98438c43.79492,0,96-44.41271,96-255.99219C512,139.20864,495.3457,0,416,0ZM272.15625,95.99707A47.99855,47.99855,0,1,0,224.125,47.99854,48.02832,48.02832,0,0,0,272.15625,95.99707Zm-146,220.85264L106.3125,363.12954a8.0132,8.0132,0,0,1-7.34375,4.85923H24a23.99927,23.99927,0,1,0,0,47.99854H98.96875a55.99645,55.99645,0,0,0,51.5-33.93647L164,350.44243l-9.5625-5.76545A87.55881,87.55881,0,0,1,126.15625,316.84971Z\"]\n};\nvar faPortalExit = {\n prefix: 'far',\n iconName: 'portal-exit',\n icon: [512, 512, [], \"e023\", \"M368.156,95.99707a47.99855,47.99855,0,1,0-48.03125-47.999A48.02823,48.02823,0,0,0,368.156,95.99707ZM488.06226,239.99219l-48.40625-.17188a7.91188,7.91188,0,0,1-7.59375-5.65527l-13.96875-45.3584a88.19461,88.19461,0,0,0-64.8125-60.23242l-78.24988-17.70313a87.467,87.467,0,0,0-73.25,16.21875L184.996,140.05273C174.35925,63.17188,149.42383,0,96,0,52.20508,0,0,44.41113,0,255.99219,0,372.77344,16.65625,511.98438,96,511.98438c24.63281,0,51.92773-14.05274,71.0957-63.998H114.46484c-5.68554,10.27929-11.91992,16-18.46484,16-26.50977,0-48-93.12305-48-207.99414S69.49023,47.99805,96,47.99805s48,93.123,48,207.99414c0,41.44629-2.94531,79.58984-7.77539,111.99609H120a23.99951,23.99951,0,1,0,0,47.999h74.96863a55.997,55.997,0,0,0,51.5-33.93652l13.53125-31.6084-9.5625-5.76562a87.55746,87.55746,0,0,1-28.28125-27.82715l-19.84375,46.28027a8.01229,8.01229,0,0,1-7.34375,4.8584h-9.459c4.0586-30.835,6.49024-67.499,6.49024-111.99609,0-19.43067-.52344-39.47559-1.65821-59.40235l40.81446-31.53222a40.3409,40.3409,0,0,1,33.3125-7.375l14.875,3.375-35.3125,87.34082a55.77154,55.77154,0,0,0,23,68.90429l83.78113,50.5918a8.84316,8.84316,0,0,1,3.84375,6.84375,8.721,8.721,0,0,1-.3125,2.20313L321.06226,481.40723A23.97414,23.97414,0,0,0,337.531,511.07812,24.99489,24.99489,0,0,0,344.156,512a23.98672,23.98672,0,0,0,23.0625-17.42188L400.531,390.11328a56.1032,56.1032,0,0,0-24.90625-63.32617L323.781,295.49121l41.9375-104.79394a39.09522,39.09522,0,0,1,6.40625,12.0625l13.96875,45.373A55.77866,55.77866,0,0,0,439.49976,287.835l48.40625.15625h.09375a23.99955,23.99955,0,0,0,.0625-47.999Z\"]\n};\nvar faPortrait = {\n prefix: 'far',\n iconName: 'portrait',\n icon: [384, 512, [], \"f3e0\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm0 464H48V48h288v416zM192 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6h-5c-12.3 5.1-25.7 8-39.8 8s-27.6-2.9-39.8-8h-5c-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z\"]\n};\nvar faPoundSign = {\n prefix: 'far',\n iconName: 'pound-sign',\n icon: [320, 512, [], \"f154\", \"M308 360h-30.284c-6.627 0-12 5.373-12 12v56.835H112V280h100c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12H112v-77.081c0-37.438 26.786-67.388 72.958-67.388 25.94 0 48.692 11.882 60.552 19.451 5.141 3.28 11.923 2.156 15.758-2.586l19.658-24.305c4.35-5.378 3.262-13.296-2.365-17.32C262.736 51.456 229.027 32 184.334 32 105.716 32 48 83.164 48 152.423V232H20c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h28v148.835H12c-6.627 0-12 5.373-12 12V468c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12v-96c0-6.627-5.373-12-12-12z\"]\n};\nvar faPowerOff = {\n prefix: 'far',\n iconName: 'power-off',\n icon: [512, 512, [], \"f011\", \"M388.5 46.3C457.9 90.3 504 167.8 504 256c0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 168 54 90.3 123.5 46.3c5.8-3.7 13.5-1.8 16.9 4.2l11.8 20.9c3.1 5.5 1.4 12.5-3.9 15.9C92.8 122.9 56 185.1 56 256c0 110.5 89.5 200 200 200s200-89.5 200-200c0-70.9-36.8-133.1-92.3-168.6-5.3-3.4-7-10.4-3.9-15.9l11.8-20.9c3.3-6.1 11.1-7.9 16.9-4.3zM280 276V12c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v264c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12z\"]\n};\nvar faPray = {\n prefix: 'far',\n iconName: 'pray',\n icon: [384, 512, [], \"f683\", \"M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-22.28 159.48a28.1 28.1 0 0 0 19.31 10.89c7.59.83 15.31-1.55 21.16-6.56l100-82.54c11.75-10.05 13.16-27.73 3.09-39.48-10.06-11.75-27.81-13.11-39.47-3.08l-77.47 63.27-46.69-61.38c-12.5-17.14-32.44-26.14-53.47-24.38-21.03 1.89-39.19 14.47-49.06 34.86l-47 109.41c-20.47 41.95-7.09 93.28 31.06 119.41L165.5 456H28c-15.47 0-28 12.53-28 28s12.53 28 28 28h228c5.57 0 32-4.93 32-32 0-8.51-3.37-17-10.06-23.3L158.53 344.33l44.03-97.82 31.16 40.97z\"]\n};\nvar faPrayingHands = {\n prefix: 'far',\n iconName: 'praying-hands',\n icon: [640, 512, [], \"f684\", \"M620.1 364.4c10.1 2.5 19.9-5.1 19.9-15.5v-16.5c0-7.4-5-13.8-12.1-15.5l-67.9-17v-66.3c0-21.2-6-42-17.3-59.9L452.9 33.6C439.7 12.7 416.7 0 392 0c-13.6 0-26.8 3.8-38.4 11.1-18.9 11.9-31.1 31.6-33.3 54.3-.2 1.8-.3 3.5-.3 5.2 0-1.7-.1-3.4-.3-5.2-2.2-22.8-14.4-42.4-33.3-54.3C274.9 3.9 261.6 0 248 0c-24.7 0-47.7 12.7-60.9 33.6L97.3 173.7C86 191.6 80 212.4 80 233.6v66.3l-67.9 17C5 318.6 0 325 0 332.4v16.5c0 10.4 9.8 18.1 19.9 15.5l108.1-27V233.6c0-12.1 3.4-24 9.9-34.2l89.8-140.1c7.6-12.1 24.2-15 35.5-5.8 9.6 7.8 10.9 22.2 4.2 32.8l-57.6 89c-6.5 10.2-9.9 22.1-9.9 34.2V286c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-56c0-13.3 10.8-24 24-24s24 10.8 24 24v69.1c0 55.1-37.5 103.2-90.9 116.6L12 464c-7 1.7-12 8.1-12 15.5V496c0 10.4 9.8 18.1 19.9 15.5l196.9-49.3c44.6-11.2 80.9-39.8 103.3-77.3 22.3 37.5 58.7 66.1 103.3 77.3l196.9 49.3c10.1 2.5 19.9-5.1 19.9-15.5v-16.5c0-7.4-5-13.8-12.1-15.5l-193-48.3c-53.4-13.4-90.9-61.4-90.9-116.5V230c0-13.3 10.8-24 24-24s24 10.8 24 24v56c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-76.6c0-12.1-3.4-24-9.9-34.2l-57.6-89c-6.6-10.5-5.4-24.9 4.2-32.8 11.3-9.2 27.9-6.3 35.5 5.8l89.8 140.1c6.5 10.2 9.9 22.1 9.9 34.2v103.8zM320 176.7c-11.5-10.4-26.2-17.4-42.6-18.6l29.9-47.4c7.6-12.1 12.4-24.4 12.6-38.1.2 13.7 5 26 12.6 38.1l29.9 47.4c-16.2 1.2-30.9 8.2-42.4 18.6z\"]\n};\nvar faPrescription = {\n prefix: 'far',\n iconName: 'prescription',\n icon: [384, 512, [], \"f5b1\", \"M289.94 352l89.37-89.37c6.25-6.25 6.25-16.38 0-22.63L368 228.69c-6.25-6.25-16.38-6.25-22.63 0L256 318.06l-94.24-94.24c52.19-.96 94.24-43.4 94.24-95.82 0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-80h46.06l128 128-89.37 89.37c-6.25 6.25-6.25 16.38 0 22.63L144 475.31c6.25 6.25 16.38 6.25 22.63 0L256 385.94l89.37 89.37c6.25 6.25 16.38 6.25 22.63 0L379.31 464c6.25-6.25 6.25-16.38 0-22.63L289.94 352zM48 176V80h112c26.47 0 48 21.53 48 48s-21.53 48-48 48H48z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'far',\n iconName: 'prescription-bottle',\n icon: [448, 512, [], \"f485\", \"M416 0H32C14.3 0 0 14.3 0 32v96c0 8.8 7.2 16 16 16h16v336c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V144h16c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32zM48 48h352v48H48V48zm320 416H80v-40h88c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H80v-48h88c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H80v-48h88c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H80v-40h288v320z\"]\n};\nvar faPrescriptionBottleAlt = {\n prefix: 'far',\n iconName: 'prescription-bottle-alt',\n icon: [448, 512, [], \"f486\", \"M136 320h56v56c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-56h56c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-56v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56h-56c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM416 0H32C14.3 0 0 14.3 0 32v96c0 8.8 7.2 16 16 16h16v336c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V144h16c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32zm-48 464H80V144h288v320zm32-368H48V48h352v48z\"]\n};\nvar faPresentation = {\n prefix: 'far',\n iconName: 'presentation',\n icon: [576, 512, [], \"f685\", \"M560 0H16C7.16 0 0 7.16 0 16v16c0 8.84 7.16 16 16 16h16v272c0 17.67 14.33 32 32 32h200v43.72l-77.65 77.65c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0L288 439.6l67.72 67.72c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63L312 395.72V352h200c17.67 0 32-14.33 32-32V48h16c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16zm-64 304H80V48h416v256z\"]\n};\nvar faPrint = {\n prefix: 'far',\n iconName: 'print',\n icon: [512, 512, [], \"f02f\", \"M400 264c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24zm32-88V99.88c0-12.73-5.06-24.94-14.06-33.94l-51.88-51.88c-9-9-21.21-14.06-33.94-14.06H110.48C93.64 0 80 14.33 80 32v144c-44.18 0-80 35.82-80 80v128c0 8.84 7.16 16 16 16h64v96c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-96h64c8.84 0 16-7.16 16-16V256c0-44.18-35.82-80-80-80zM128 48h192v48c0 8.84 7.16 16 16 16h48v64H128V48zm256 416H128v-64h256v64zm80-112H48v-96c0-17.64 14.36-32 32-32h352c17.64 0 32 14.36 32 32v96z\"]\n};\nvar faPrintSearch = {\n prefix: 'far',\n iconName: 'print-search',\n icon: [640, 512, [], \"f81a\", \"M128 464v-64h163.43a174.58 174.58 0 0 1-16.37-48H48v-96a32 32 0 0 1 32-32h220.68a177.28 177.28 0 0 1 46.45-48H128V48h192v48a16 16 0 0 0 16 16h48v44.22a174.63 174.63 0 0 1 48-11.41V99.88a48 48 0 0 0-14.06-33.94l-51.88-51.88A48 48 0 0 0 332.12 0H110.48C93.64 0 80 14.33 80 32v144a80 80 0 0 0-80 80v128a16 16 0 0 0 16 16h64v96a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-.81A174.82 174.82 0 0 1 347.13 464zm507.31 9.38l-81.46-81.46a128.12 128.12 0 1 0-33.94 33.93l81.47 81.46a16 16 0 0 0 22.62 0L635.31 496a16 16 0 0 0 0-22.62zM448 400a80 80 0 1 1 80-80 80 80 0 0 1-80 80z\"]\n};\nvar faPrintSlash = {\n prefix: 'far',\n iconName: 'print-slash',\n icon: [640, 512, [], \"f686\", \"M451.91 267.74l34.7 27.13c.68-2.21 1.39-4.43 1.39-6.87 0-13.26-10.75-24-24-24-4.51 0-8.49 1.58-12.09 3.74zM192 48h192v48c0 8.84 7.16 16 16 16h48v64H334.57l61.4 48H496c17.64 0 32 14.36 32 32v71.23l48 37.53V256c0-44.18-35.82-80-80-80V99.88c0-12.73-5.06-24.94-14.06-33.94l-51.88-51.88c-9-9-21.21-14.06-33.94-14.06H174.48c-15.37 0-27.55 12.14-29.64 27.67L192 64.54V48zm441.99 423.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM448 464H192v-64h195.3l-61.4-48H112v-96c0-17.64 14.36-32 32-32h18.18l-51.7-40.42C83.1 196.29 64 223.83 64 256v128c0 8.84 7.16 16 16 16h64v96c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-11.02l-48-37.53V464z\"]\n};\nvar faProcedures = {\n prefix: 'far',\n iconName: 'procedures',\n icon: [640, 512, [], \"f487\", \"M520 240H312c-22.1 0-40 17.9-40 40v136H48V136c0-4.4-3.6-8-8-8H8c-4.4 0-8 3.6-8 8v368c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8v-40h544v40c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V360c0-66.2-53.8-120-120-120zm72 176H320V288h200c39.7 0 72 32.3 72 72v56zm-432-32c44.1 0 80-35.9 80-80s-35.9-80-80-80-80 35.9-80 80 35.9 80 80 80zm0-112c17.7 0 32 14.4 32 32s-14.3 32-32 32-32-14.4-32-32 14.3-32 32-32zm-16-144h114.3l36.9 73.9c4.1 8.2 15.7 8.2 19.8 0l54.1-108.2 17.2 34.3H504c13.2 0 24-10.7 24-24s-10.8-24-24-24h-88L379.1 6.1C375-2 363.3-2 359.3 6.1l-54.1 108.2L288 80H144c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16z\"]\n};\nvar faProjectDiagram = {\n prefix: 'far',\n iconName: 'project-diagram',\n icon: [640, 512, [], \"f542\", \"M608 0H480c-17.67 0-32 14.33-32 32v32H192V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72L224 360.12V480c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32H274.76L192 175.5V128h256v32c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zM144 144H48V48h96v96zm128 224h96v96h-96v-96zm320-224h-96V48h96v96z\"]\n};\nvar faProjector = {\n prefix: 'far',\n iconName: 'projector',\n icon: [640, 512, [], \"f8d6\", \"M307.72 133.65a16 16 0 0 0 22.63 0l11.31-11.31a16 16 0 0 0 0-22.62l-67.88-67.89a16 16 0 0 0-22.63 0l-11.31 11.31a16 16 0 0 0 0 22.63zM408 128h16a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16zm93.65 5.65a16 16 0 0 0 22.63 0l67.88-67.88a16 16 0 0 0 0-22.63l-11.31-11.31a16 16 0 0 0-22.63 0l-67.88 67.89a16 16 0 0 0 0 22.62zM112 296a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm480-104H480.58c-19.51-9.89-41.25-16-64.58-16s-45.07 6.11-64.58 16H48a48 48 0 0 0-48 48v160a48 48 0 0 0 48 48h16l13 51.88A16 16 0 0 0 92.49 512h23A16 16 0 0 0 131 499.88L144 448h207.42c19.51 9.89 41.25 16 64.58 16s45.07-6.11 64.58-16H496l13 51.88A16 16 0 0 0 524.49 512h23A16 16 0 0 0 563 499.88L576 448h16a48 48 0 0 0 48-48V240a48 48 0 0 0-48-48zM296.38 400H48V240h248.38a143.45 143.45 0 0 0 0 160zM416 416a96 96 0 1 1 96-96 96.14 96.14 0 0 1-96 96zm176-16h-56.38a143.45 143.45 0 0 0 0-160H592zM176 296a24 24 0 1 0 24 24 24 24 0 0 0-24-24z\"]\n};\nvar faPumpMedical = {\n prefix: 'far',\n iconName: 'pump-medical',\n icon: [384, 512, [], \"e06a\", \"M186.67,293.33v-40A13.33,13.33,0,0,0,173.33,240H146.67a13.33,13.33,0,0,0-13.34,13.33v40h-40A13.33,13.33,0,0,0,80,306.67v26.66a13.33,13.33,0,0,0,13.33,13.34h40v40A13.33,13.33,0,0,0,146.67,400h26.66a13.33,13.33,0,0,0,13.34-13.33v-40h40A13.33,13.33,0,0,0,240,333.33V306.67a13.33,13.33,0,0,0-13.33-13.34ZM379.31,107.72,336,64.4A56,56,0,0,0,296.41,48H240V32A32,32,0,0,0,208,0H112A32,32,0,0,0,80,32v96.41a63.83,63.83,0,0,0-59.37,57.8L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-256A63.83,63.83,0,0,0,240,128.41V96h56.41a8,8,0,0,1,5.65,2.34l43.32,43.31a16,16,0,0,0,22.62,0l11.31-11.31A16,16,0,0,0,379.31,107.72ZM128,48h64v80H128ZM251.52,190l20.41,256.54A16,16,0,0,1,256,464H64a15.87,15.87,0,0,1-11.82-5.21A16.26,16.26,0,0,1,48.12,446L68.44,190.55A15.92,15.92,0,0,1,84.37,176H235.63A15.81,15.81,0,0,1,251.52,190Z\"]\n};\nvar faPumpSoap = {\n prefix: 'far',\n iconName: 'pump-soap',\n icon: [384, 512, [], \"e06b\", \"M152,244c-16.33,21.8-52,72.27-52,97.27,0,32.42,26.88,58.75,60,58.75s60-26.33,60-58.75c0-25-35.7-75.47-52-97.27A10,10,0,0,0,152,244ZM379.31,107.72,336,64.4A56,56,0,0,0,296.41,48H240V32A32,32,0,0,0,208,0H112A32,32,0,0,0,80,32v96.41a63.83,63.83,0,0,0-59.37,57.8L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-256A63.83,63.83,0,0,0,240,128.41V96h56.41a8,8,0,0,1,5.65,2.34l43.32,43.31a16,16,0,0,0,22.62,0l11.31-11.31A16,16,0,0,0,379.31,107.72ZM128,48h64v80H128ZM251.52,190l20.41,256.54A16,16,0,0,1,256,464H64a15.87,15.87,0,0,1-11.82-5.21A16.26,16.26,0,0,1,48.12,446L68.44,190.55A15.92,15.92,0,0,1,84.37,176H235.63A15.81,15.81,0,0,1,251.52,190Z\"]\n};\nvar faPumpkin = {\n prefix: 'far',\n iconName: 'pumpkin',\n icon: [576, 512, [], \"f707\", \"M494.59 104.28C455.6 67.15 396.8 62.07 352 89V35.81c0-6.06-3.42-11.6-8.84-14.31l-39.6-19.8c-8.37-4.19-18.54-.32-22.01 8.37l-26.7 66.74c-10.24 2.99-20.02 7.37-28.85 13.23-45.03-28.27-105.03-23.42-144.59 14.25C28.91 154.28 0 220.94 0 292s28.91 137.72 81.41 187.73c37.66 35.8 95.62 42.53 141.09 16.3 2.16-1.23 4.91-1.08 7.41.39C247.06 506.75 266.62 512 288 512s40.94-5.25 58.09-15.58c2.53-1.47 5.28-1.62 7.41-.39 45.44 26.23 103.41 19.52 141.09-16.31C547.09 429.72 576 363.06 576 292s-28.91-137.72-81.41-187.72zM288 468c-121.24 0-124.2-352 0-352 121.24 0 124.2 352 0 352zM48 292c0-78.07 65.15-207.18 148.15-163.44-53.33 80.86-53.27 246.17.07 326.98C113.56 499.3 48 371.25 48 292zm331.78 163.55c45.71-69.19 53.2-201.73 17.75-293.3-.95-1.66-5.01-14.45-17.67-33.68C463.09 84.82 528 213.66 528 292c0 78.38-65.67 207.34-148.22 163.55z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'far',\n iconName: 'puzzle-piece',\n icon: [576, 512, [], \"f12e\", \"M437.983 261.352c-4.321 2.778-10.839 6.969-13.122 7.279-24.067-.092.757-103.841 5.813-124.714-29.614 5.697-134.448 26.337-159.932 7.046C271.197 132.585 304 116.55 304 73.588 304 28.222 261.986 0 216.994 0 171.147 0 112 25.756 112 75.063c0 40.881 28.702 64.642 31.994 74.559-.739 28.838-115.981 1.752-143.994-5.469v351.556C10.464 498.412 56.682 512 104 512c45.3-.001 88-15.737 88-60.854 0-31.773-32-45.657-32-73.834 0-16.521 29.235-27.063 49.361-27.063 21.125 0 46.639 11.414 46.639 25.588 0 24.02-32 36.882-32 77.924 0 66.838 81.555 58.073 134.44 51.225 37.039-4.797 33.159-3.906 73.069-3.906-2.799-8.954-28.061-81.125-13.892-100.4 10.021-13.639 39.371 31.32 84.037 31.32C548.715 432 576 380.487 576 336c0-57.793-45.975-133.814-138.017-74.648zM501.654 384c-24.507 0-37.496-32.763-79.116-32.763-35.286 0-67.12 27.143-53.431 104.031-19.03 2.234-84.249 12.922-96.329 2.29C261.633 447.771 304 419.385 304 375.837c0-46.326-49.475-73.588-94.639-73.588-46.686 0-97.361 27.417-97.361 75.063 0 50.809 41.414 70.396 29.601 79.554-16.851 13.064-71.854 5.122-93.601.935V204.584c63.934 10.948 144 9.33 144-55.435 0-31.802-32-45.775-32-74.086C160 58.488 199.338 48 216.994 48 233.19 48 256 55.938 256 73.588c0 23.524-33.264 36.842-33.264 77.924 0 60.396 86.897 58.813 146.508 51.68-6.592 53.714 1.669 113.439 55.691 113.439 31.223 0 45.141-28.631 75.22-28.631C517.407 288 528 315.957 528 336c0 21.606-12.157 48-26.346 48z\"]\n};\nvar faQrcode = {\n prefix: 'far',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 224h192V32H0v192zM40 72h112v112H40V72zm216-40v192h192V32H256zm152 152H296V72h112v112zM0 480h192V288H0v192zm40-152h112v112H40V328zm32 32h48v48H72v-48zm0-256h48v48H72v-48zm304 48h-48v-48h48v48zm40 136h32v128H320v-32h-32v96h-32V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z\"]\n};\nvar faQuestion = {\n prefix: 'far',\n iconName: 'question',\n icon: [384, 512, [], \"f128\", \"M199.65 0C125.625 0 69.665 30.187 27.21 92.51c-19.17 28.15-12.94 66.3 14.17 86.86l36.73 27.85c10.81 8.2 24.19 12.79 37.74 12.96-11.84 19-17.82 40.61-17.82 64.55v11.43c0 16.38 6.2 31.34 16.38 42.65C97.99 357.2 88 381.45 88 408c0 57.35 46.65 104 104 104s104-46.65 104-104c0-26.55-9.99-50.8-26.41-69.19 8.66-9.62 14.43-21.87 15.97-35.38 28.287-16.853 96-48.895 96-138.21C381.56 71.151 290.539 0 199.65 0zM192 464c-30.88 0-56-25.12-56-56 0-30.873 25.118-56 56-56 30.887 0 56 25.132 56 56 0 30.88-25.12 56-56 56zm45.97-176.21v8.37c0 8.788-7.131 15.84-15.84 15.84h-60.26c-8.708 0-15.84-7.051-15.84-15.84v-11.43c0-47.18 35.77-66.04 62.81-81.2 23.18-13 37.39-21.83 37.39-39.04 0-22.77-29.04-37.88-52.52-37.88-30.61 0-44.74 14.49-64.6 39.56-5.365 6.771-15.157 8.01-22 2.8l-36.73-27.85c-6.74-5.11-8.25-14.6-3.49-21.59C98.08 73.73 137.8 48 199.65 48c64.77 0 133.91 50.56 133.91 117.22 0 88.51-95.59 89.87-95.59 122.57z\"]\n};\nvar faQuestionCircle = {\n prefix: 'far',\n iconName: 'question-circle',\n icon: [512, 512, [], \"f059\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\"]\n};\nvar faQuestionSquare = {\n prefix: 'far',\n iconName: 'question-square',\n icon: [448, 512, [], \"f2fd\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-48 346V86a6 6 0 0 0-6-6H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6zm-68.756-225.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C152.846 131.491 182.94 112 229.794 112c49.071 0 101.45 38.304 101.45 88.8zM266 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\"]\n};\nvar faQuidditch = {\n prefix: 'far',\n iconName: 'quidditch',\n icon: [640, 512, [], \"f458\", \"M636.5 31L616.6 6c-5.5-6.9-15.6-8-22.5-2.6l-230.7 178-34.7-43.6c-4.8-6.1-14-6-18.8.1L252.2 211c-31.1.7-104 6.6-151.9 44.7C38.3 305 0 511.3 0 511.3c15.1.7 212.4 7.4 272.2-40.1 47.7-37.9 70-107.4 77.8-137.6l84.3-39.5c7-3.3 9.1-12.3 4.3-18.3l-35.3-44.3L634 53.5c6.9-5.5 8-15.6 2.5-22.5zM242.3 433.7c-16.6 13.2-74.3 28.5-182.8 30.2 4.8-19.1 10.1-38.2 15.8-56.4l45.3-36c5-3.9 1.2-11.9-5-10.6l-26.1 5.5c13.4-35.3 27.7-63 40.7-73.4 27-21.5 71.3-31 109.7-33.5l59.8 75c-9.3 31.2-28 75.9-57.4 99.2zm88-143.9l-39.8-49.9 24.2-30.8c2.4-3 7-3.1 9.4 0l43.8 54.9c2.4 3 1.4 7.5-2.1 9.2l-35.5 16.6zm181.8 29.9c-52.9 0-96 43-96 95.8s43.1 95.8 96 95.8 96-43 96-95.8-43.1-95.8-96-95.8zm0 143.8c-26.5 0-48-21.5-48-47.9s21.5-47.9 48-47.9 48 21.5 48 47.9-21.6 47.9-48 47.9z\"]\n};\nvar faQuoteLeft = {\n prefix: 'far',\n iconName: 'quote-left',\n icon: [576, 512, [], \"f10d\", \"M504 224h-56v-8c0-22.1 17.9-40 40-40h8c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48h-8c-101.5 0-184 82.5-184 184v192c0 39.7 32.3 72 72 72h128c39.7 0 72-32.3 72-72V296c0-39.7-32.3-72-72-72zm24 184c0 13.2-10.8 24-24 24H376c-13.2 0-24-10.8-24-24V216c0-75 61-136 136-136h8v48h-8c-48.5 0-88 39.5-88 88v56h104c13.2 0 24 10.8 24 24v112zM200 224h-56v-8c0-22.1 17.9-40 40-40h8c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48h-8C82.5 32 0 114.5 0 216v192c0 39.7 32.3 72 72 72h128c39.7 0 72-32.3 72-72V296c0-39.7-32.3-72-72-72zm24 184c0 13.2-10.8 24-24 24H72c-13.2 0-24-10.8-24-24V216c0-75 61-136 136-136h8v48h-8c-48.5 0-88 39.5-88 88v56h104c13.2 0 24 10.8 24 24v112z\"]\n};\nvar faQuoteRight = {\n prefix: 'far',\n iconName: 'quote-right',\n icon: [576, 512, [], \"f10e\", \"M200 32H72C32.3 32 0 64.3 0 104v112c0 39.7 32.3 72 72 72h56v8c0 22.1-17.9 40-40 40h-8c-26.5 0-48 21.5-48 48v48c0 26.5 21.5 48 48 48h8c101.5 0 184-82.5 184-184V104c0-39.7-32.3-72-72-72zm24 264c0 75-61 136-136 136h-8v-48h8c48.5 0 88-39.5 88-88v-56H72c-13.2 0-24-10.8-24-24V104c0-13.2 10.8-24 24-24h128c13.2 0 24 10.8 24 24v192zM504 32H376c-39.7 0-72 32.3-72 72v112c0 39.7 32.3 72 72 72h56v8c0 22.1-17.9 40-40 40h-8c-26.5 0-48 21.5-48 48v48c0 26.5 21.5 48 48 48h8c101.5 0 184-82.5 184-184V104c0-39.7-32.3-72-72-72zm24 264c0 75-61 136-136 136h-8v-48h8c48.5 0 88-39.5 88-88v-56H376c-13.2 0-24-10.8-24-24V104c0-13.2 10.8-24 24-24h128c13.2 0 24 10.8 24 24v192z\"]\n};\nvar faQuran = {\n prefix: 'far',\n iconName: 'quran',\n icon: [448, 512, [], \"f687\", \"M257.13 182.57l20.72 20.2-4.89 28.52c-.52 3.02 2.65 5.39 5.42 3.94L304 221.76l25.62 13.47c2.75 1.45 5.94-.9 5.42-3.94l-4.89-28.52 20.72-20.2c2.21-2.16.99-5.93-2.07-6.37l-28.64-4.16-12.81-25.95c-1.37-2.77-5.33-2.77-6.7 0l-12.81 25.95-28.64 4.16c-3.06.44-4.28 4.2-2.07 6.37zM232.66 304c12.31 0 24.53-2.23 36.03-6.53 5.59-1.88 9.34-7.06 9.34-12.94 0-7.52-6.12-13.64-13.69-13.64l-3.44.17c-39.19 0-71.06-31.88-71.06-71.06s31.88-71.06 71.06-71.06l3.44.17c6.47 0 12.09-4.59 13.38-10.89 1.34-6.59-2.25-13.12-8.59-15.55C257.28 98.25 245 96 232.66 96c-57.34 0-104 46.66-104 104s46.65 104 104 104zM448 384V16c0-8.8-7.2-16-16-16H80C35.8 0 0 35.8 0 80v352c0 44.2 35.8 80 80 80h352c8.8 0 16-7.2 16-16v-16c0-7.8-5.6-14.3-12.9-15.7-4.2-13-4.2-51.6 0-64.6 7.4-1.5 12.9-7.9 12.9-15.7zm-54 80H80c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h314c-2.7 17.3-2.7 46.7 0 64zm6-112H80c-11.4 0-22.2 2.4-32 6.7V80c0-17.7 14.3-32 32-32h320v304z\"]\n};\nvar faRabbit = {\n prefix: 'far',\n iconName: 'rabbit',\n icon: [512, 512, [], \"f708\", \"M500.36 421.88l-95.95-120.66c43.34-10.47 75.61-49.35 75.61-95.58 0-47.99-32.82-74.41-42.89-81.02C458.33 17.1 401.03 0 378.86 0c-16.92 0-31.09 6.91-42.84 17.36C324.27 6.91 310.11.01 293.2 0h-.02c-25.92 0-86.21 22.9-53.74 144.05.99 3.7 2.08 7.42 3.28 11.18-2.19 9.16-2.7 17.54-2.7 23.43v34.93c-63.14 14.97-114.6 59.14-140.89 117.07C92.93 329.08 86.58 328 80 328c-44.19 0-80 35.76-80 80 0 44.19 35.76 80 80 80 7.07 0 13.9-1.2 20.52-3.02C115.18 501.42 136.29 512 160 512h160.01c21.04 0 38.92-13.54 45.4-32.37l7.76 9.55c10.53 14.36 27.1 22.82 45.12 22.82h37.72c20.35 0 39.12-11.06 48.98-28.86 11.26-20.32 8.4-44.87-4.63-61.26zM80.8 439.85c-.28.01-.53.15-.8.15-8.19 0-16.38-3.12-22.63-9.37-12.5-12.5-12.5-32.76 0-45.25 12.4-12.4 25.91-8.71 26.6-8.61-.6 3.16-6.35 31.02-3.17 63.08zM456.01 464h-37.72c-2.76 0-5.32-1.42-6.79-3.76l-70.46-86.76L224.01 432h64c17.66 0 32 14.36 32 32h-160c-17.67 0-32-14.33-32-32v-16c0-88.37 71.64-160 160.01-160v-77.34c0-9.78 2.36-17.04 5.53-23.66-2.84-7.29-5.5-15.03-7.74-23.37-11.32-42.25-9.08-79.55 5-83.32 13.81-3.7 33.78 26.27 45.21 67.09 11.46-40.89 31.43-70.79 45.21-67.09 14.08 3.77 16.32 41.08 5 83.32-1.43 5.32-3 10.46-4.69 15.39l29.13 17.65c13.4 9.45 21.35 24.71 21.35 40.97 0 27.81-22.83 50.36-50.99 50.36h-29.02v56.46l110.78 139.3c3.33 5.33-.5 12.24-6.78 12.24zm-87.99-272c0-8.84-7.16-16-16-16s-16 7.16-16 16 7.16 16 16 16 16-7.16 16-16z\"]\n};\nvar faRabbitFast = {\n prefix: 'far',\n iconName: 'rabbit-fast',\n icon: [640, 512, [], \"f709\", \"M598.33 189.44c-1.98-1.4.26.02-41.42-25.23-1.44-8.79-3.37-17.75-5.76-26.67C542.64 105.8 516.85 32 461.17 32c-5.01 0-9.99.65-14.8 1.95-18.5 4.96-31.84 17.01-39.68 34.91-8.84-3.03-17.89-4.86-26.88-4.86-16.51 0-31.68 6.07-42.71 17.1-5.7 5.7-14.96 17.64-16.74 36.22C292.78 103.85 266.77 96 239.89 96c-40.75 0-77.54 18.47-112.37 55.99-13.71-10.22-30.11-16-47.53-16-44.19 0-80 35.75-80 79.99 0 44.19 35.76 79.99 80 79.99 10.98 0 21.54-2.34 31.33-6.55 7.3 11.89 8.74 12.68 51.15 59.01l-9.54 5.16c-15.62 10.4-24.94 27.82-24.94 46.59v23.73c0 20.19 10.44 38.29 27.88 48.42 8.78 5.11 18.44 7.66 28.12 7.66 9.53 0 19.06-2.48 27.78-7.45l42.21-24.12 14.6 15.95a48.01 48.01 0 0 0 35.41 15.59h160c26.51 0 48-21.49 48-48 0-26.14-12.6-49.39-32.05-64h61.07c54.58 0 98.98-44.12 98.98-98.35.01-31.78-15.57-61.76-41.66-80.17zM95.87 243.1c-19.31 11.27-34.01.01-38.5-4.48-12.5-12.5-12.5-32.76 0-45.25 6.69-6.7 26.57-16.99 44.22-.69-5.94 16.23-7.56 33.47-5.72 50.42zm92.1 187.76c-3.5 2.02-6.5.81-8-.02-1.47-.88-3.97-2.92-3.97-6.92v-23.73c0-2.69 1.34-5.17 1.62-5.5l18.2-9.81 24.94 27.24-32.79 18.74zm353.05-110.88H448l-48.06 20.03c-.35-48.13-31.81-90.94-76.81-104.27l-36.31-10.77c-12.81-3.75-26.06 3.5-29.81 16.19-3.78 12.72 3.47 26.08 16.19 29.84l36.31 10.76c25.03 7.41 42.5 31.69 42.5 59.03v59.18h80c17.66 0 32 14.36 32 32H304L159.86 274.5c-22.36-24.22-22.66-61.37-.81-86.05C186.71 157.21 212.34 144 239.9 144c52.91 0 112.95 48.69 208.11 111.99 0-18.85-.38-22.24 3.75-33.12-13.16-6.88-28.53-18.32-43.38-33.17-30.93-30.92-47.64-64.35-37.33-74.65 10.74-10.74 45.13 7.8 74.66 37.32 2.58 2.58 4.9 5.18 7.28 7.78-10.27-40.77-7.88-76.17 5.81-79.84 14.11-3.8 34.71 27.54 45.99 69.65 4.37 16.3 6.67 31.8 7.1 44.98 2.6.84 5.2 1.56 7.79 2.82l50.98 30.89c13.4 9.45 21.35 24.71 21.35 40.97-.01 27.82-22.84 50.36-50.99 50.36zM512 239.99c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16z\"]\n};\nvar faRacquet = {\n prefix: 'far',\n iconName: 'racquet',\n icon: [640, 512, [], \"f45a\", \"M616.3 61.3C562-17.2 434.4-19.7 333 50.4c-57.7 40-95.6 95.3-108.4 149.9-10 42.6-30.1 81.5-56.6 115.8-.4-.2-15.1-8.1-30.7 2.8L13.6 405.6c-14.5 10.1-18 30.1-7.9 44.6l33.8 48.2c10.5 15 30.5 17.7 44.6 7.9l123.7-86.6c9.8-6.8 14-18.1 13-29.2 30.3-9.2 61.7-14.3 93.4-14 28.7.3 34.9 3.8 58.3 4.1 49.7.5 104.6-16.1 154.1-50.3 103-71.4 143.2-191.8 89.7-269zM69.7 457.7l-15.4-22 97.5-68.3 15.4 22-97.5 68.3zM207.9 344c9.9-12.9 18.4-26.5 26.4-40.4 8.4 16.8 12.6 20.5 20.9 29.6-15.8 2.6-31.6 6.1-47.3 10.8zm291.4-53.3c-39.7 27.5-84.7 42.4-126.6 41.9-139.4-1.5-135.7-157.3-12.4-242.7C416.9 50.8 466.3 48 486.9 48c10 0 10 0 0 0 138.2 1.5 137.2 156.4 12.4 242.7z\"]\n};\nvar faRadar = {\n prefix: 'far',\n iconName: 'radar',\n icon: [512, 512, [], \"e024\", \"M504,256c0,136.9668-111.0332,248-248,248S8,392.9668,8,256,119.0332,8,256,8A246.36335,246.36335,0,0,1,395.14648,50.916L425.377,20.68555a16.00006,16.00006,0,0,1,22.627,0l11.31054,11.31054a16.00006,16.00006,0,0,1,0,22.627l-201.373,201.373L257.93555,256H320a64.00026,64.00026,0,1,1-66.1543-63.7832l34.543-34.543A100.011,100.011,0,0,0,256,152,104,104,0,1,0,360,256h48c0,73.94727-52.85156,135.42773-122.81055,149.05664a39.15632,39.15632,0,0,0-58.3789,0A151.96039,151.96039,0,0,1,106.94336,285.18945a39.15632,39.15632,0,0,0,0-58.3789C120.57227,156.85156,182.05273,104,256,104c24.918,0,47.99219,6.67773,68.66016,17.40234l35.64062-35.64062A197.97306,197.97306,0,0,0,256,56C157.05078,56,74.87305,128.30664,58.98828,222.81055,47.82812,229.9082,40,241.79492,40,256s7.82812,26.0918,18.98828,33.18945A200.18858,200.18858,0,0,0,222.81055,453.01172C229.9082,464.17188,241.79492,472,256,472s26.0918-7.82812,33.18945-18.98828C383.69336,437.127,456,354.94922,456,256Z\"]\n};\nvar faRadiation = {\n prefix: 'far',\n iconName: 'radiation',\n icon: [496, 512, [], \"f7b9\", \"M290.7 323.6c-12.4 7.7-27 12.4-42.7 12.4s-30.3-4.6-42.7-12.4l-71.5 113.3c-10.2 16.2-4.2 38.2 13.5 45.9C178.1 496.4 212.1 504 248 504s69.9-7.6 100.7-21.1c17.6-7.7 23.7-29.7 13.5-45.9l-71.5-113.4zM248 456c-21.5 0-42.5-3.4-62.7-10l40.4-64c7.4 1.3 14.8 2 22.4 2 7.5 0 15-.7 22.4-2l40.4 64c-20.4 6.6-41.4 10-62.9 10zM32.6 256h134.6c0-28.6 15.3-53.5 38.1-67.6L133.9 75.2c-6.2-9.8-17-15.3-27.8-15.3-7.1 0-14.2 2.3-20.1 7.3-45.2 38-76.7 91.7-85.7 152.5C-2.5 238.9 13 256 32.6 256zm70.6-139l40.3 63.9c-6.2 8.4-11.3 17.5-15.3 27.1H52c8.5-34.2 26.2-65.6 51.2-91zM248 304c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm80.8-48h134.6c19.6 0 35.1-17.1 32.3-36.3-9-60.9-40.5-114.5-85.7-152.5-5.9-4.9-13-7.3-20.1-7.3-10.8 0-21.6 5.4-27.8 15.3l-71.4 113.2c22.8 14.1 38.1 39 38.1 67.6zm64-139c25 25.4 42.6 56.8 51.2 91h-76.2c-3.9-9.6-9.1-18.7-15.3-27.1l40.3-63.9z\"]\n};\nvar faRadiationAlt = {\n prefix: 'far',\n iconName: 'radiation-alt',\n icon: [496, 512, [], \"f7ba\", \"M314.1 256h81.7c9.5 0 17.5-8 16.5-17.4-4.8-45-27.8-84.4-61.5-111.3-7.9-6.3-19.5-4.7-24.8 3.9l-43.1 68.9c18.6 11.7 31.2 32.3 31.2 55.9zm-101 55.9L169.9 381c-5 8-2.5 19 5.9 23.2 21.8 10.8 46.2 17 72.1 17s50.3-6.3 72.1-17c8.5-4.2 11-15.2 5.9-23.2l-43.2-69.1c-10.2 6.4-22.1 10.2-34.9 10.2s-24.6-3.9-34.7-10.2zM100.3 256H182c0-23.6 12.5-44.2 31.2-55.9l-43.1-68.9c-5.3-8.6-16.9-10.2-24.8-3.9-33.6 26.8-56.7 66.3-61.5 111.3-1 9.4 7 17.4 16.5 17.4zM248 289c18.2 0 33-14.8 33-33s-14.8-33-33-33-33 14.8-33 33 14.8 33 33 33zm0 215c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-448c110.3 0 200 89.7 200 200s-89.7 200-200 200S48 366.3 48 256 137.7 56 248 56z\"]\n};\nvar faRadio = {\n prefix: 'far',\n iconName: 'radio',\n icon: [512, 512, [], \"f8d7\", \"M208 336h-96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm16-80H96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm128-16a80 80 0 1 0 80 80 80 80 0 0 0-80-80zm96-112H211.5l288.83-81.21a16 16 0 0 0 11.07-19.74l-4.33-15.38A16 16 0 0 0 487.33.6L46.68 124.5A64 64 0 0 0 0 186.11V448a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm16 320a16 16 0 0 1-16 16H64a16 16 0 0 1-16-16V192a16 16 0 0 1 16-16h384a16 16 0 0 1 16 16z\"]\n};\nvar faRadioAlt = {\n prefix: 'far',\n iconName: 'radio-alt',\n icon: [512, 512, [], \"f8d8\", \"M209 368h-64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm144 56a72 72 0 1 0-72-72 72.09 72.09 0 0 0 72 72zm96-296H212.5l288.83-81.21a16 16 0 0 0 11.07-19.74l-4.33-15.38A16 16 0 0 0 488.33.6L47.68 124.5A64 64 0 0 0 1 186.11V448a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm16 320a16 16 0 0 1-16 16H65a16 16 0 0 1-16-16V256h416zM113 336h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H113a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z\"]\n};\nvar faRainbow = {\n prefix: 'far',\n iconName: 'rainbow',\n icon: [576, 512, [], \"f75b\", \"M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V320C48 177.3 173.2 63.3 319.6 82 440.6 97.5 528 206.4 528 328.3V464c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 97.4C166 142.5 96 229.6 96 327.2V464c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V320.5c0-84.2 72.5-151.7 158.4-143.3 74.8 7.3 129.6 74.5 129.6 149.7V464c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V320.5c0-114.2-100.2-205.4-217.3-190.4zm6.2 95.8c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V320c0-26.5 21.5-48 48-48s48 21.5 48 48v144c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z\"]\n};\nvar faRaindrops = {\n prefix: 'far',\n iconName: 'raindrops',\n icon: [448, 512, [], \"f75c\", \"M320 216.7c14.8 28.3 31.2 50.4 45.4 69.6 23.3 31.5 34.6 47.7 34.6 71.2 0 41-35.9 74.4-80 74.4s-80-33.4-80-74.4c0-23.3 11.3-39.6 34.7-71.3 14.2-19.2 30.5-41.3 45.3-69.5M160 32c-3.9 0-7.9 2.3-9.3 6.9-14.9 49.3-46.7 62.7-46.7 97.4 0 30.8 25 55.7 56 55.7s56-24.9 56-55.7c0-34.9-31.8-47.9-46.7-97.4C168 34.4 164 32 160 32zm160 96c-9 0-18 5-21.2 15.2C264.7 251.6 192 281.1 192 357.6c0 67.7 57.2 122.4 128 122.4s128-54.8 128-122.4c0-76.8-72.6-105.4-106.8-214.4-2.9-10-12-15.2-21.2-15.2zM56 224c-3.9 0-7.9 2.3-9.3 6.9C31.8 280.2 0 293.6 0 328.3 0 359.1 25 384 56 384s56-24.9 56-55.7c0-34.9-31.8-47.9-46.7-97.4C64 226.4 60 224 56 224z\"]\n};\nvar faRam = {\n prefix: 'far',\n iconName: 'ram',\n icon: [640, 512, [], \"f70a\", \"M609.81 100.92l-27.22-16.2C575.84 50.16 545.31 24 508.81 24H445.9C424.49 8.91 398.84 0 371.69 0c-55.97 0-101.7 42.61-107.73 97.02-12.82-1.47-26.04.24-37.55 5.97-18.84-9.47-42.91-9.08-61.47 1-12.94-5.89-27.53-7.52-42.31-4.37-17.88 4.02-33.12 15.11-42.69 30.34-17.59 2.08-34.06 11.16-45.66 25.83-11.25 14.57-16.22 32.94-14.28 50.88-12.62 12.78-20 30.34-20 49.02s7.25 36.19 19.69 48.92c-2.06 18.17 2.94 36.62 14.28 50.94 11.28 14.67 27.66 23.81 45.25 25.91 4.77 7.71 10.96 14.36 18.17 19.57l20.79 86.46c3.46 14.38 16.32 24.52 31.11 24.52h74.7c20.86 0 36.14-19.64 31.02-39.86l-14.67-57.91a66.566 66.566 0 0 0 15.23 1.77c10.5 0 20.72-2.45 29.94-7.09 5.69 2.77 11.96 4.46 18.52 5.59V480c0 17.67 14.33 32 32 32h80c17.67 0 32-14.33 32-32V377.86c11.36-4.34 21.72-11.56 29.7-21.64 11.25-14.58 16.22-32.95 14.28-50.89 12.62-12.78 20-30.34 20-49.02 0-8.48-1.68-16.65-4.47-24.31h68.13c17.75 0 34.31-9.56 43.22-25.05 18.94-33.2 21.12-48.14 21.12-56.48-.01-21.06-11.54-39.94-30.2-49.55zM161.89 464l-12.41-51.61c5.02-.98 9.97-2.33 14.7-4.46 8.18 4.46 17.47 6.72 26.91 7.4L203.42 464h-41.53zm238.13 0h-48v-54.2c11.7 4.23 24.42 5.38 37.35 2.59 3.7-.83 7.2-2.14 10.65-3.55V464zm175.64-280H452.64l-17.23 43.39 18.34 10.27c13.42 7.56 13.97 29.28-.31 37.31l-18.34 10.27 7.75 19.53c6.19 15.52-6.22 32.05-21.78 29.47l-21.19-3.77-6.03 20.67c-3.81 13.07-20.02 20.48-31.88 9.92l-17.16-15.22-16 16.44c-6.56 6.78-18.41 8.29-26.88.23l-16.59-15.78-16.53 15.84c-7.41 7.02-19.03 7.06-26 .23l-16.59-16.37-16.84 16.14c-8.56 8.23-22.38 4.28-26.69-.25L167 346.09l-17.16 14.64c-12.02 10.18-28.26 3.88-32.19-10.05l-5.94-20.91-21.41 3.83c-14.59 2.64-27.87-13.37-21.47-29.48l7.75-19.52-18.34-10.27c-13.42-7.56-13.97-29.28.31-37.31l18.34-10.27-7.75-19.53c-6.23-15.61 6.46-32.22 21.78-29.47l21.19 3.77 6.03-20.67c3.86-13.24 20.2-20.35 31.88-9.92l17.16 15.2 15.97-16.42c4.44-4.5 18.28-8.44 26.22-.58l16.59 16.45 16.91-16.16c7.28-6.98 19.19-7.08 26.59.03 11.63 11.08 31.4 50.64 84.44 50.64 42.41 0 76.91-34.5 76.91-76.92 0-30.37-21.5-57.25-51-63.91C369.28 55.33 361 62.05 361 70.22V86.5c0 4.47 2.47 8.48 6.22 10.48 11.7 4.12 23.59 9.07 23.59 26.2 0 20.36-16.56 36.92-36.91 36.92-28.22 0-51.16-22.95-51.16-51.16 0-38.02 30.94-68.95 68.94-68.95 26.76 0 51.68 12.38 68.72 32h68.41c15 0 27.19 12.2 27.19 27.22v13.66c70.12 41.71 60.88 27.24 39.66 71.13zM496 112c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16z\"]\n};\nvar faRampLoading = {\n prefix: 'far',\n iconName: 'ramp-loading',\n icon: [384, 512, [], \"f4d4\", \"M384 352V32c0-17.7-14.3-32-32-32H32C14.3 0 0 14.3 0 32v320c0 17.7 14.3 32 32 32h6.9L3.2 467.4C-5.9 488.5 9.6 512 32.6 512h318.9c23 0 38.5-23.5 29.4-44.6L345.1 384h6.9c17.7 0 32-14.3 32-32zM56.8 464l54.9-128h160.6l54.9 128H56.8zm255.5-156.6c-5-11.8-16.6-19.4-29.4-19.4H101.1c-12.8 0-24.4 7.6-29.4 19.4L59.5 336H48V48h288v288h-11.5l-12.2-28.6z\"]\n};\nvar faRandom = {\n prefix: 'far',\n iconName: 'random',\n icon: [512, 512, [], \"f074\", \"M505 400l-79.2 72.9c-15.1 15.1-41.8 4.4-41.8-17v-40h-31c-3.3 0-6.5-1.4-8.8-3.9l-89.8-97.2 38.1-41.3 79.8 86.3H384v-48c0-21.4 26.7-32.1 41.8-17l79.2 71c9.3 9.6 9.3 24.8 0 34.2zM12 152h91.8l79.8 86.3 38.1-41.3-89.8-97.2c-2.3-2.5-5.5-3.9-8.8-3.9H12c-6.6 0-12 5.4-12 12v32c0 6.7 5.4 12.1 12 12.1zm493-41.9l-79.2-71C410.7 24 384 34.7 384 56v40h-31c-3.3 0-6.5 1.4-8.8 3.9L103.8 360H12c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h111c3.3 0 6.5-1.4 8.8-3.9L372.2 152H384v48c0 21.4 26.7 32.1 41.8 17l79.2-73c9.3-9.4 9.3-24.6 0-33.9z\"]\n};\nvar faRaygun = {\n prefix: 'far',\n iconName: 'raygun',\n icon: [576, 512, [], \"e025\", \"M111.95117,151.98283a23.997,23.997,0,1,0,24.002,23.99607A23.99826,23.99826,0,0,0,111.95117,151.98283Zm96.00977,0a23.997,23.997,0,1,0,24.00195,23.99607A23.99827,23.99827,0,0,0,207.96094,151.98283ZM320.0332,31.99664h-16.002a15.99912,15.99912,0,0,0-16,15.998V75.25441A110.46265,110.46265,0,0,0,239.96484,63.9927H191.959L87.16016,1.70957a15.99888,15.99888,0,0,0-23.1543,14.30858l-.04492,59.18938C26.24805,93.231,0,131.40083,0,175.9789c0,55.27923,40.14844,100.92176,92.82812,110.05456L22.4082,407.95129a47.93739,47.93739,0,0,0,17.59571,65.58586L95.416,505.53321a47.92475,47.92475,0,0,0,65.60156-17.59178L281.10547,279.93c2.45117-.9707,4.56445-2.51562,6.92578-3.65429v27.68747a15.99911,15.99911,0,0,0,16,15.998h16.002a15.99828,15.99828,0,0,0,16.002-15.998V47.99467A15.99829,15.99829,0,0,0,320.0332,31.99664ZM119.42578,463.97271,63.98047,431.95322l70.41992-121.91979,12.74609-22.06833h73.89258ZM288.03125,217.78354A63.61105,63.61105,0,0,1,239.96484,239.971H111.95117a63.99211,63.99211,0,1,1,0-127.98422H239.96484a63.61105,63.61105,0,0,1,48.06641,22.18747ZM554.9375,119.01217,480.002,143.98284H416.043V79.99073a15.99787,15.99787,0,0,0-16-15.998H384.041a15.99953,15.99953,0,0,0-16.002,15.998V271.96707a15.99953,15.99953,0,0,0,16.002,15.998h16.002a15.99787,15.99787,0,0,0,16-15.998V207.975h64.07617l74.8125,24.97067A16.00209,16.00209,0,0,0,576,217.76987V134.18793A16.0008,16.0008,0,0,0,554.9375,119.01217Z\"]\n};\nvar faReceipt = {\n prefix: 'far',\n iconName: 'receipt',\n icon: [448, 512, [], \"f543\", \"M344 288H104c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8zM400.8 5.7L357.3 37 318.7 9.2c-16.8-12.1-39.2-12.1-56.1 0L224 37 185.4 9.2a47.888 47.888 0 0 0-56.1 0L90.7 37 47.2 5.7C27.4-8.5 0 5.6 0 29.9v452.3c0 23.8 27.1 38.6 47.2 24.2L90.7 475l38.6 27.8c16.8 12.1 39.2 12.1 56.1 0L224 475l38.6 27.8c16.8 12.1 39.3 12.1 56.1 0l38.6-27.8 43.5 31.3c19.8 14.2 47.2.1 47.2-24.1V29.9C448 6 420.9-8.7 400.8 5.7zm-.8 440.8l-42.7-30.7-66.7 48-66.7-48-66.7 48-66.7-48L48 446.5v-381l42.7 30.7 66.7-48 66.7 48 66.7-48 66.7 48L400 65.5v381zM344 176H104c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8z\"]\n};\nvar faRecordVinyl = {\n prefix: 'far',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.28 0-200-89.72-200-200S145.72 56 256 56s200 89.72 200 200-89.72 200-200 200zm0-304a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24z\"]\n};\nvar faRectangleLandscape = {\n prefix: 'far',\n iconName: 'rectangle-landscape',\n icon: [510, 512, [], \"f2fa\", \"M462 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h414c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h402c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6z\"]\n};\nvar faRectanglePortrait = {\n prefix: 'far',\n iconName: 'rectangle-portrait',\n icon: [385, 512, [], \"f2fb\", \"M385 464V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h289c26.5 0 48-21.5 48-48zm-337-6V54c0-3.3 2.7-6 6-6h277c3.3 0 6 2.7 6 6v404c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6z\"]\n};\nvar faRectangleWide = {\n prefix: 'far',\n iconName: 'rectangle-wide',\n icon: [640, 512, [], \"f2fc\", \"M592 96.5H48c-26.5 0-48 21.5-48 48v223c0 26.5 21.5 48 48 48h544c26.5 0 48-21.5 48-48v-223c0-26.5-21.5-48-48-48zm-6 271H54c-3.3 0-6-2.7-6-6v-211c0-3.3 2.7-6 6-6h532c3.3 0 6 2.7 6 6v211c0 3.3-2.7 6-6 6z\"]\n};\nvar faRecycle = {\n prefix: 'far',\n iconName: 'recycle',\n icon: [512, 512, [], \"f1b8\", \"M214.951 71.068l-29.543 48.77c-3.425 5.654-10.778 7.473-16.444 4.069l-20.562-12.355c-5.694-3.422-7.525-10.819-4.085-16.501l29.585-48.861c37.33-61.594 126.877-61.579 164.198 0l44.115 72.856 34.93-20.988c12.268-7.371 27.19 3.858 23.765 17.585l-21.886 87.815c-2.137 8.574-10.821 13.792-19.395 11.654l-87.804-21.906c-13.822-3.446-16.55-21.921-4.37-29.239l33.631-20.208-44.045-72.707c-18.636-30.747-63.456-30.73-82.09.016zM55.006 335.104l49.596-81.873 34.03 20.447c12.18 7.318 27.211-3.763 23.765-17.585l-21.88-87.811c-2.137-8.574-10.821-13.792-19.395-11.654l-87.81 21.902c-13.729 3.421-16.638 21.868-4.37 29.239l34.554 20.762-49.475 81.711C-24.729 374.181 21.448 456 96.12 456H164c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12H96.045c-37.259 0-60.426-40.907-41.039-72.896zm442.98-24.861l-34.991-57.788c-3.424-5.655-10.778-7.476-16.445-4.071l-20.53 12.336c-5.695 3.422-7.526 10.821-4.083 16.504l35.074 57.897C476.323 366.988 453.337 408 415.96 408H320v-39.98c0-14.21-17.24-21.386-27.313-11.313l-64 63.98c-6.249 6.248-6.249 16.379 0 22.627l64 63.989C302.689 517.308 320 510.3 320 495.989V456h95.887c74.764 0 120.802-81.898 82.099-145.757z\"]\n};\nvar faRedo = {\n prefix: 'far',\n iconName: 'redo',\n icon: [512, 512, [], \"f01e\", \"M500 8h-27.711c-6.739 0-12.157 5.548-11.997 12.286l2.347 98.568C418.075 51.834 341.788 7.73 255.207 8.001 118.82 8.428 7.787 120.009 8 256.396 8.214 393.181 119.165 504 256 504c63.926 0 122.202-24.187 166.178-63.908 5.113-4.618 5.354-12.561.482-17.433l-19.738-19.738c-4.498-4.498-11.753-4.785-16.501-.552C351.787 433.246 306.105 452 256 452c-108.322 0-196-87.662-196-196 0-108.322 87.662-196 196-196 79.545 0 147.941 47.282 178.675 115.302l-126.389-3.009c-6.737-.16-12.286 5.257-12.286 11.997V212c0 6.627 5.373 12 12 12h192c6.627 0 12-5.373 12-12V20c0-6.627-5.373-12-12-12z\"]\n};\nvar faRedoAlt = {\n prefix: 'far',\n iconName: 'redo-alt',\n icon: [512, 512, [], \"f2f9\", \"M483.515 28.485L431.35 80.65C386.475 35.767 324.485 8 256.001 8 119.34 8 7.9 119.525 8 256.185 8.1 393.067 119.095 504 256 504c63.926 0 122.202-24.187 166.178-63.908 5.113-4.618 5.353-12.561.482-17.433l-19.738-19.738c-4.498-4.498-11.753-4.785-16.501-.552C351.787 433.246 306.105 452 256 452c-108.321 0-196-87.662-196-196 0-108.321 87.662-196 196-196 54.163 0 103.157 21.923 138.614 57.386l-54.128 54.129c-7.56 7.56-2.206 20.485 8.485 20.485H492c6.627 0 12-5.373 12-12V36.971c0-10.691-12.926-16.045-20.485-8.486z\"]\n};\nvar faRefrigerator = {\n prefix: 'far',\n iconName: 'refrigerator',\n icon: [384, 512, [], \"e026\", \"M336,0H48A48,48,0,0,0,0,48V464a48,48,0,0,0,48,48H336a48,48,0,0,0,48-48V48A48,48,0,0,0,336,0Zm0,48V176H288V112a16,16,0,0,0-16-16H256a16,16,0,0,0-16,16v64H48V48ZM48,464V224H240V368a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V224h48V464Z\"]\n};\nvar faRegistered = {\n prefix: 'far',\n iconName: 'registered',\n icon: [512, 512, [], \"f25d\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm110.442-81.791c-53.046-96.284-50.25-91.468-53.271-96.085 24.267-13.879 39.482-41.563 39.482-73.176 0-52.503-30.247-85.252-101.498-85.252h-78.667c-6.617 0-12 5.383-12 12V380c0 6.617 5.383 12 12 12h38.568c6.617 0 12-5.383 12-12v-83.663h31.958l47.515 89.303a11.98 11.98 0 0 0 10.593 6.36h42.81c9.14 0 14.914-9.799 10.51-17.791zM256.933 239.906h-33.875v-64.14h27.377c32.417 0 38.929 12.133 38.929 31.709-.001 20.913-11.518 32.431-32.431 32.431z\"]\n};\nvar faRemoveFormat = {\n prefix: 'far',\n iconName: 'remove-format',\n icon: [640, 512, [], \"f87d\", \"M634 471L36 3.5A16 16 0 0 0 13.49 6l-10 12.5A16 16 0 0 0 6 41l598 467.5a16 16 0 0 0 22.5-2.5l10-12.5A16 16 0 0 0 634 471zM352 96l-24.76 74.27L378 210l38-114h144v32a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a15.86 15.86 0 0 0-14.18 8.94L232.24 96zm-16 336h-32l25.68-77-50.77-39.7L240 432h-32a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faRepeat = {\n prefix: 'far',\n iconName: 'repeat',\n icon: [512, 512, [], \"f363\", \"M512 256c0 83.813-68.187 152-152 152H136.535l55.762 54.545c4.775 4.67 4.817 12.341.094 17.064l-16.877 16.877c-4.686 4.686-12.284 4.686-16.971 0l-104-104c-4.686-4.686-4.686-12.284 0-16.971l104-104c4.686-4.686 12.284-4.686 16.971 0l16.877 16.877c4.723 4.723 4.681 12.393-.094 17.064L136.535 360H360c57.346 0 104-46.654 104-104 0-19.452-5.372-37.671-14.706-53.258a11.991 11.991 0 0 1 1.804-14.644l17.392-17.392c5.362-5.362 14.316-4.484 18.491 1.847C502.788 196.521 512 225.203 512 256zM62.706 309.258C53.372 293.671 48 275.452 48 256c0-57.346 46.654-104 104-104h223.465l-55.762 54.545c-4.775 4.67-4.817 12.341-.094 17.064l16.877 16.877c4.686 4.686 12.284 4.686 16.971 0l104-104c4.686-4.686 4.686-12.284 0-16.971l-104-104c-4.686-4.686-12.284-4.686-16.971 0l-16.877 16.877c-4.723 4.723-4.681 12.393.094 17.064L375.465 104H152C68.187 104 0 172.187 0 256c0 30.797 9.212 59.479 25.019 83.447 4.175 6.331 13.129 7.209 18.491 1.847l17.392-17.392a11.991 11.991 0 0 0 1.804-14.644z\"]\n};\nvar faRepeat1 = {\n prefix: 'far',\n iconName: 'repeat-1',\n icon: [512, 512, [], \"f365\", \"M512 256c0 83.813-68.187 152-152 152H136.535l55.762 54.545c4.775 4.67 4.817 12.341.094 17.064l-16.877 16.877c-4.686 4.686-12.284 4.686-16.971 0l-104-104c-4.686-4.686-4.686-12.284 0-16.971L154.59 275.468c4.686-4.686 12.284-4.686 16.971 0l16.877 16.877c4.723 4.723 4.681 12.393-.094 17.064L136.535 360H360c57.346 0 104-46.654 104-104 0-19.452-5.372-37.671-14.706-53.258a11.991 11.991 0 0 1 1.804-14.644l17.392-17.392c5.362-5.362 14.316-4.484 18.491 1.847C502.788 196.521 512 225.203 512 256zM62.706 309.258C53.372 293.671 48 275.452 48 256c0-57.346 46.654-104 104-104h223.465l-51.809 50.592c-4.775 4.67-4.817 12.341-.094 17.064l16.877 16.877c4.686 4.686 12.284 4.686 16.971 0l100.047-100.047c4.686-4.686 4.686-12.284 0-16.971l-104-104c-4.686-4.686-12.284-4.686-16.971 0l-16.877 16.877c-4.723 4.723-4.681 12.393.094 17.064L375.465 104H152C68.187 104 0 172.187 0 256c0 30.797 9.212 59.479 25.019 83.447 4.175 6.331 13.129 7.209 18.491 1.847l17.392-17.392a11.991 11.991 0 0 0 1.804-14.644zm164.557-9.731c0-7.477 3.917-11.572 11.573-11.572h15.131v-39.878c0-5.163.534-10.503.534-10.503h-.356s-1.779 2.67-2.848 3.738c-4.451 4.273-10.504 4.451-15.666-1.068l-5.518-6.231c-5.342-5.341-4.984-11.216.534-16.379l21.72-19.939c4.449-4.095 8.366-5.697 14.42-5.697h12.105c7.656 0 11.749 3.916 11.749 11.572v84.384h15.488c7.655 0 11.572 4.094 11.572 11.572v8.901c0 7.477-3.917 11.572-11.572 11.572h-67.293c-7.656 0-11.573-4.095-11.573-11.572v-8.9z\"]\n};\nvar faRepeat1Alt = {\n prefix: 'far',\n iconName: 'repeat-1-alt',\n icon: [512, 512, [], \"f366\", \"M481.162 164.326c19.478 25.678 30.997 57.709 30.836 92.388C511.61 340.638 442.361 408 358.436 408H176v64c-.001 10.683-12.949 16.021-20.485 8.485l-88-87.995c-4.686-4.686-4.687-12.284 0-16.971l88-88.005c7.58-7.58 20.485-2.14 20.485 8.485v64h182.668C415.933 360 464.06 313.154 464 255.889c-.023-22.372-7.149-43.111-19.237-60.082-3.431-4.817-2.962-11.387 1.223-15.564 8.269-8.255 13.592-13.545 17.137-17.104 5.131-5.152 13.645-4.605 18.039 1.187zM48 256.111C47.94 198.846 96.067 152 153.332 152H336v64c0 10.625 12.905 16.066 20.485 8.485l88-88.005c4.687-4.686 4.686-12.285 0-16.971l-88-87.995C348.949 23.979 336.001 29.317 336 40v64H153.564C69.639 104 .389 171.362.002 255.286c-.16 34.679 11.358 66.71 30.836 92.388 4.394 5.792 12.908 6.339 18.039 1.188 3.545-3.559 8.867-8.849 17.137-17.105 4.185-4.178 4.653-10.748 1.223-15.564-12.088-16.971-19.213-37.71-19.237-60.082zm179.263 43.416c0-7.477 3.917-11.572 11.573-11.572h15.131v-39.878c0-5.163.534-10.503.534-10.503h-.356s-1.779 2.67-2.848 3.738c-4.451 4.273-10.504 4.451-15.666-1.068l-5.518-6.231c-5.342-5.341-4.984-11.216.534-16.379l21.72-19.939c4.449-4.095 8.366-5.697 14.42-5.697h12.105c7.656 0 11.749 3.916 11.749 11.572v84.384h15.488c7.655 0 11.572 4.094 11.572 11.572v8.901c0 7.477-3.917 11.572-11.572 11.572h-67.293c-7.656 0-11.573-4.095-11.573-11.572v-8.9z\"]\n};\nvar faRepeatAlt = {\n prefix: 'far',\n iconName: 'repeat-alt',\n icon: [512, 512, [], \"f364\", \"M481.162 164.326c19.478 25.678 30.997 57.709 30.836 92.388C511.61 340.638 442.361 408 358.436 408H176v64c-.001 10.683-12.949 16.021-20.485 8.485l-88-87.995c-4.686-4.686-4.687-12.284 0-16.971l88-88.005c7.58-7.58 20.485-2.14 20.485 8.485v64h182.668C415.933 360 464.06 313.154 464 255.889c-.023-22.372-7.149-43.111-19.237-60.082-3.431-4.817-2.962-11.387 1.223-15.564 8.269-8.255 13.592-13.545 17.137-17.104 5.131-5.152 13.645-4.605 18.039 1.187zM48 256.111C47.94 198.846 96.067 152 153.332 152H336v64c0 10.625 12.905 16.066 20.485 8.485l88-88.005c4.687-4.686 4.686-12.285 0-16.971l-88-87.995C348.949 23.979 336.001 29.317 336 40v64H153.564C69.639 104 .389 171.362.002 255.286c-.16 34.679 11.358 66.71 30.836 92.388 4.394 5.792 12.908 6.339 18.039 1.188 3.545-3.559 8.867-8.849 17.137-17.105 4.185-4.178 4.653-10.748 1.223-15.564-12.088-16.971-19.213-37.71-19.237-60.082z\"]\n};\nvar faReply = {\n prefix: 'far',\n iconName: 'reply',\n icon: [576, 512, [], \"f3e5\", \"M14.062 257.94L190.06 433.88c30.21 30.21 81.94 8.7 81.94-33.94v-78.28c146.59 8.54 158.53 50.199 134.18 127.879-13.65 43.56 35.07 78.89 72.19 54.46C537.98 464.768 576 403.8 576 330.05c0-170.37-166.04-197.15-304-201.3V48.047c0-42.72-51.79-64.09-81.94-33.94L14.062 190.06c-18.75 18.74-18.75 49.14 0 67.88zM48 224L224 48v128.03c143.181.63 304 11.778 304 154.02 0 66.96-40 109.95-76.02 133.65C501.44 305.911 388.521 273.88 224 272.09V400L48 224z\"]\n};\nvar faReplyAll = {\n prefix: 'far',\n iconName: 'reply-all',\n icon: [640, 512, [], \"f122\", \"M142.06 273.94l160 159.97c30.02 30.02 81.94 8.98 81.94-33.94v-71.08c118.18 4.94 121.95 30.99 104.44 89.17-13.17 43.75 36.21 78.71 73.1 53.43 50.61-34.7 78.46-79.33 78.46-143.11 0-142.4-127.16-171.02-256-175.61V80.04c0-42.88-51.89-64-81.94-33.94l-160 159.96c-18.75 18.74-18.75 49.14 0 67.88zM176 240L336 80v120c120.616 0 256 6.513 256 128.38 0 55.8-28.79 83.87-57.6 103.62 41.002-136.247-60.829-152-198.4-152v120L176 240zM14.059 206.059l160-159.962c20.389-20.389 50.822-17.22 68.29.31L48 240l194.35 193.603c-17.474 17.531-47.921 20.675-68.291.306l-160-159.967c-18.745-18.746-18.745-49.138 0-67.883z\"]\n};\nvar faRepublican = {\n prefix: 'far',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M189 144.2l-27.4-4-12.2-24.8c-2.2-4.4-8.5-4.5-10.7 0l-12.2 24.8-27.4 4c-4.9.7-6.9 6.8-3.3 10.2l19.8 19.3-4.7 27.3c-.8 4.9 4.3 8.6 8.7 6.3l24.5-12.9 24.5 12.9c4.3 2.3 9.5-1.4 8.7-6.3l-4.7-27.3 19.8-19.3c3.4-3.5 1.5-9.5-3.4-10.2zm128 0l-27.4-4-12.2-24.8c-2.2-4.4-8.5-4.5-10.7 0l-12.2 24.8-27.4 4c-4.9.7-6.9 6.8-3.3 10.2l19.8 19.3-4.7 27.3c-.8 4.9 4.3 8.6 8.7 6.3l24.5-12.9 24.5 12.9c4.3 2.3 9.5-1.4 8.7-6.3l-4.7-27.3 19.8-19.3c3.4-3.5 1.5-9.5-3.4-10.2zm128 0l-27.4-4-12.2-24.8c-2.2-4.4-8.5-4.5-10.7 0l-12.2 24.8-27.4 4c-4.9.7-6.9 6.8-3.3 10.2l19.8 19.3-4.7 27.3c-.8 4.9 4.3 8.6 8.7 6.3l24.5-12.9 24.5 12.9c4.3 2.3 9.5-1.4 8.7-6.3l-4.7-27.3 19.8-19.3c3.4-3.5 1.5-9.5-3.4-10.2zM624 320h-16c-8.8 0-16 7.2-16 16v72c0 13.2-10.8 24-24 24s-24-10.8-24-24V192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v256c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32v-64h128v64c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32v-64h48v19.7c0 37.6 27 72 64.4 75.9 2.5.3 5.1.4 7.6.4 39.7 0 72-32.3 72-72v-72c0-8.8-7.2-16-16-16zm-128 16h-64c-17.7 0-32 14.3-32 32v64h-64v-64c0-17.7-14.3-32-32-32H144c-17.7 0-32 14.3-32 32v64H48V288h448v48zm0-96H48v-48c0-61.9 50.1-112 112-112h224c61.8 0 112 50.2 112 112v48z\"]\n};\nvar faRestroom = {\n prefix: 'far',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M328 0h-16c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM200.8 137.4c9.6-14.1 15.2-31.1 15.2-49.4 0-48.6-39.4-88-88-88S40 39.4 40 88c0 18.3 5.6 35.3 15.2 49.4C22.7 152.8 0 185.6 0 224v112c0 17.7 14.3 32 32 32h16v112c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32V368h16c17.7 0 32-14.3 32-32V224c0-38.4-22.7-71.2-55.2-86.6zM128 48c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm80 272h-48v144H96V320H48v-96c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v96zm430.8 10.3l-37.7-134.7c-4.9-17.7-15.1-32.7-28.2-44.3 16.7-16 27.1-38.4 27.1-63.3 0-48.6-39.4-88-88-88s-88 39.4-88 88c0 24.9 10.5 47.3 27.1 63.3-13.2 11.6-23.3 26.6-28.2 44.3l-37.7 134.7c-3.1 12.8-.2 26.2 8 36.6 8.5 10.8 21.4 17 35.3 17h3.5v88c0 22.1 17.9 40 40 40h80c22.1 0 40-17.9 40-40v-88h3.5c13.9 0 26.8-6.2 35.3-17 8.2-10.4 11.1-23.7 8-36.6zM512 48c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm32 288v128h-64V336l-46.9 1.2 36-128.7c5.3-19.2 23-32.5 42.9-32.5s37.5 13.4 42.9 32.5L590.5 336H544z\"]\n};\nvar faRetweet = {\n prefix: 'far',\n iconName: 'retweet',\n icon: [640, 512, [], \"f079\", \"M624.485 353.456l-104 104c-4.686 4.686-12.284 4.686-16.971 0l-104-104c-4.686-4.686-4.686-12.284 0-16.971l16.877-16.877c4.723-4.723 12.393-4.681 17.064.094L488 375.465V152H284.024a11.996 11.996 0 0 1-8.485-3.515l-24-24c-7.56-7.56-2.206-20.485 8.485-20.485H512c13.255 0 24 10.745 24 24v247.465l54.545-55.762c4.671-4.775 12.341-4.817 17.064-.094l16.877 16.877c4.686 4.686 4.686 12.284-.001 16.97zm-260.024 10.059a12.002 12.002 0 0 0-8.485-3.515H152V136.535l54.545 55.762c4.671 4.775 12.341 4.817 17.064.094l16.877-16.877c4.686-4.686 4.686-12.284 0-16.971l-104-104c-4.686-4.686-12.284-4.686-16.971 0l-104 104c-4.686 4.686-4.686 12.284 0 16.971l16.877 16.877c4.723 4.723 12.393 4.681 17.064-.094L104 136.535V384c0 13.255 10.745 24 24 24h251.976c10.691 0 16.045-12.926 8.485-20.485l-24-24z\"]\n};\nvar faRetweetAlt = {\n prefix: 'far',\n iconName: 'retweet-alt',\n icon: [640, 512, [], \"f361\", \"M388.461 387.515c7.56 7.56 2.206 20.485-8.485 20.485H128c-13.255 0-24-10.745-24-24V171.187l-72.162-.001c-10.683-.001-16.022-12.949-8.485-20.485l96.156-96.156c4.686-4.686 12.284-4.687 16.971 0l96.16 96.16c7.58 7.58 2.14 20.485-8.485 20.485L152 171.188V360h203.976c3.183 0 6.235 1.264 8.485 3.515l24 24zm219.701-46.7L536 340.813V128c0-13.255-10.745-24-24-24H260.024c-10.691 0-16.045 12.926-8.485 20.485l24 24a12.002 12.002 0 0 0 8.485 3.515H488v188.812l-72.154-.001c-10.625 0-16.066 12.905-8.485 20.485l96.16 96.16c4.686 4.687 12.285 4.686 16.971 0l96.156-96.156c7.535-7.536 2.197-20.485-8.486-20.485z\"]\n};\nvar faRibbon = {\n prefix: 'far',\n iconName: 'ribbon',\n icon: [448, 512, [], \"f4d6\", \"M437.7 404.6L329.5 287l37.5-40.3c34.8-37.4 39-91.3 10.8-137.3L347 59.1c-15-24.5-37.2-42.4-62.4-50.5-36-11.5-85.1-11.5-121 0-25.3 8.1-47.5 26-62.4 50.5l-33.3 54.3c-25.9 42.2-20.4 97 13.3 133.2l37.5 40.4L10.4 404.7c-16.5 17.9-12.8 45.9 7.5 59.2l63.3 41.3c24 15.7 45.5.1 51.4-6.2l91.5-98.5 91.4 98.4c5.8 6.3 27.6 21.9 51.4 6.3l63.3-41.3c20.1-13.1 24-41.3 7.5-59.3zM328.2 120.2l8.7 14.2c16.9 27.5 14.9 58-5.1 79.5l-34.9 37.6-40.3-43.8 45.5-49.5c11.7-11.4 19.9-24.9 26.1-38zm-150-65.9c26.5-8.5 65.2-8.5 91.7 0 9.1 2.9 17.5 8.5 24.8 15.8-2.7 12.9-9.8 37.9-27 54.8L224 172.3 179.6 124C163 107.7 156 82.7 153.4 69.9c7.2-7.3 15.7-12.7 24.8-15.6zm-76.3 407.2l-49.1-32.1 98.5-107.2 40 43-89.4 96.3zm244.3 0L116.3 214c-19.1-20.6-22.2-51.6-7.5-75.5l10.9-17.9c6 12.8 14.2 25.8 25.4 36.8l250.2 272.1-49.1 32z\"]\n};\nvar faRing = {\n prefix: 'far',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 48c110.46 0 200 35.82 200 80 0 9.09-3.97 17.79-10.95 25.93C398.24 192.23 331 176 256 176s-142.24 16.23-189.05 41.93C59.97 209.79 56 201.09 56 192c0-44.18 89.54-80 200-80zm141.7 136.45C361.48 262.99 311.38 272 256 272s-105.48-9.01-141.7-23.55C150 234.3 198.38 224 256 224s106 10.3 141.7 24.45zm66.3 57.68C464 344.4 382.97 400 256 400S48 344.41 48 306.13v-39.78C94.43 298.78 170.15 320 256 320s161.57-21.22 208-53.64v39.77z\"]\n};\nvar faRingsWedding = {\n prefix: 'far',\n iconName: 'rings-wedding',\n icon: [512, 512, [], \"f81b\", \"M371.94 163.7a222.3 222.3 0 0 1 22.43 59C435.52 244.05 464 286.55 464 336a128 128 0 0 1-256 0c0-54.66 34.52-101.17 82.85-119.44A126.49 126.49 0 0 1 304 272c0 37.37-16.38 70.73-42 94.15a80.3 80.3 0 0 0 31 37 175.71 175.71 0 0 0-46.33-292.3L288 44.66 232.53 0H119.47L64 44.66l41.29 66.23A176 176 0 0 0 176 448a164 164 0 0 0 22.86-1.82A176 176 0 1 0 371.94 163.7zM128 55.34l8.53-7.34h78.94l8.53 7.34-25.47 42.26a160 160 0 0 0-45.06 0zM48 272a128.14 128.14 0 0 1 128-128c33 0 62.87 12.91 85.6 33.51-59.88 28-101.6 88-101.6 158.49a175.18 175.18 0 0 0 12 63.6C103.33 397.45 48 341.22 48 272z\"]\n};\nvar faRoad = {\n prefix: 'far',\n iconName: 'road',\n icon: [576, 512, [], \"f018\", \"M267.73 192h40.54c7.13 0 12.68-6.17 11.93-13.26l-4.6-43.58a8 8 0 0 0-7.96-7.16h-39.29c-4.09 0-7.53 3.09-7.96 7.16l-4.6 43.58c-.74 7.09 4.82 13.26 11.94 13.26zm-7.37 112h55.29c9.5 0 16.91-8.23 15.91-17.68l-5.07-48c-.86-8.14-7.72-14.32-15.91-14.32h-45.15c-8.19 0-15.05 6.18-15.91 14.32l-5.07 48c-1 9.45 6.41 17.68 15.91 17.68zm13.06-208h29.16c4.75 0 8.45-4.12 7.96-8.84l-1.69-16a8 8 0 0 0-7.96-7.16h-25.78c-4.09 0-7.53 3.09-7.96 7.16l-1.69 16c-.49 4.72 3.21 8.84 7.96 8.84zm48.98 240h-68.8c-8.19 0-15.05 6.18-15.91 14.32l-8.45 80c-1 9.45 6.41 17.68 15.91 17.68h85.69c9.5 0 16.91-8.23 15.91-17.68l-8.45-80c-.85-8.14-7.71-14.32-15.9-14.32zM173.35 64h-16a7.99 7.99 0 0 0-7.38 4.92L1.25 425.85C-3.14 436.38 4.6 448 16.02 448h44c7.11 0 13.37-4.69 15.36-11.52L181.03 74.24c1.49-5.12-2.35-10.24-7.68-10.24zm401.4 361.85L426.04 68.92a8 8 0 0 0-7.38-4.92h-16c-5.33 0-9.17 5.12-7.68 10.24l105.65 362.24A15.996 15.996 0 0 0 515.99 448h44c11.41 0 19.15-11.62 14.76-22.15z\"]\n};\nvar faRobot = {\n prefix: 'far',\n iconName: 'robot',\n icon: [640, 512, [], \"f544\", \"M192,408h64V360H192ZM576,192H544a95.99975,95.99975,0,0,0-96-96H344V24a24,24,0,0,0-48,0V96H192a95.99975,95.99975,0,0,0-96,96H64a47.99987,47.99987,0,0,0-48,48V368a47.99987,47.99987,0,0,0,48,48H96a95.99975,95.99975,0,0,0,96,96H448a95.99975,95.99975,0,0,0,96-96h32a47.99987,47.99987,0,0,0,48-48V240A47.99987,47.99987,0,0,0,576,192ZM96,368H64V240H96Zm400,48a48.14061,48.14061,0,0,1-48,48H192a48.14061,48.14061,0,0,1-48-48V192a47.99987,47.99987,0,0,1,48-48H448a47.99987,47.99987,0,0,1,48,48Zm80-48H544V240h32ZM240,208a48,48,0,1,0,48,48A47.99612,47.99612,0,0,0,240,208Zm160,0a48,48,0,1,0,48,48A47.99612,47.99612,0,0,0,400,208ZM384,408h64V360H384Zm-96,0h64V360H288Z\"]\n};\nvar faRocket = {\n prefix: 'far',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M367.96813,103.99609a39.999,39.999,0,1,0,40.00384,40A40.02908,40.02908,0,0,0,367.96813,103.99609ZM505.07337,19.3418c-1.21875-5.60742-6.75-11.13868-12.34373-12.3418-32.62885-7-58.162-7-83.57017-7C305.39988,0,242.95858,55.0918,196.236,127.99609H94.82015c-16.34567.01563-35.53314,11.875-42.87883,26.48243L2.53125,253.28906A28.12512,28.12512,0,0,0,0,263.99219a24.00617,24.00617,0,0,0,24.00191,23.998h92.63266l-10.59373,21.42188c-9.33592,18.91016,4.27733,34.77344,6.15624,36.62305l53.75381,53.71875c15.56443,15.54492,33.81635,7.52929,36.6601,6.13867l21.34567-10.57617V488a24.00659,24.00659,0,0,0,24.00191,24,28.618,28.618,0,0,0,10.71873-2.51562l98.6971-49.4043c14.625-7.29688,26.50191-26.5,26.50191-42.85938V315.69336c72.72449-46.76367,128.10525-109.44922,128.10525-212.69727C512.07531,77.4668,512.07531,51.99805,505.07337,19.3418ZM358.53065,274.99023c-36.94135,18.48438-121.10527,60.14063-166.7966,82.73243l-37.50189-37.49805c22.59567-45.6875,64.25575-129.99609,82.72447-166.88672C284.33741,79.5293,335.96623,47.99805,409.15947,47.99805c18.00192,0,34.2851,0,52.56632,2.34375,2.375,18.71875,2.31249,35.27929,2.25,52.63867C463.97578,175.75977,432.41138,227.30469,358.53065,274.99023Z\"]\n};\nvar faRocketLaunch = {\n prefix: 'far',\n iconName: 'rocket-launch',\n icon: [512, 512, [], \"e027\", \"M35.68523,352.06641C9.82784,377.91992-2.94948,442.59375.5759,511.41016c69.11514,3.55859,133.61115-9.35157,159.365-35.10547,40.289-40.2793,42.8769-93.98633,6.31054-130.54883C129.68706,309.19727,75.97033,311.78516,35.68523,352.06641Zm81.6327,84.03125c-8.58592,8.584-30.08394,12.88672-53.11907,11.69922-1.17382-22.93555,3.084-44.49219,11.70311-53.10938,13.42772-13.42578,31.33-14.28906,43.51752-2.10352C131.607,404.77148,130.74565,422.67188,117.31793,436.09766ZM505.16311,19.29688c-1.17578-5.4629-6.98827-11.26563-12.45115-12.4336C460.6163,0,435.464,0,410.4191,0,307.20049,0,245.30018,55.20312,199.09126,128H94.88827c-16.29685,0-35.59956,11.92383-42.88861,26.49805L2.57785,253.29688A28.4,28.4,0,0,0,.06223,264,24.00826,24.00826,0,0,0,24.0661,288h103.953a96.00635,96.00635,0,0,1,96.01354,96V488a24.00826,24.00826,0,0,0,24.00388,24,28.53983,28.53983,0,0,0,10.70311-2.51562l98.74791-49.40626c14.56053-7.28515,26.47457-26.56445,26.47457-42.84374V312.79688c72.5878-46.3125,128.01936-108.40626,128.01936-211.09376C512.07521,76.55273,512.07521,51.40234,505.16311,19.29688ZM358.13792,272.332c-25.332,16.16211-7.50585,6.74024-99.31627,52.209a144.4818,144.4818,0,0,0-71.41006-71.36719c45.373-91.6836,35.89643-73.75,52.21282-99.45313C286.66341,79.61719,337.74146,48,410.4191,48c17.64841,0,33.541,0,51.373,2.248,2.30468,18.26367,2.24413,34.46875,2.18163,51.45507C463.97371,173.97266,432.32141,225.002,358.13792,272.332ZM368.05587,104a40,40,0,1,0,40.00581,40A40.01947,40.01947,0,0,0,368.05587,104Z\"]\n};\nvar faRoute = {\n prefix: 'far',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M424 336h-96c-22.1 0-40-17.9-40-40s17.9-40 40-40h88s96-107 96-160-43-96-96-96-96 43-96 96c0 29.8 30.3 76.7 56.9 112H328c-48.5 0-88 39.5-88 88s39.5 88 88 88h96c22.1 0 40 17.9 40 40s-17.9 40-40 40H135.1c26.6-35.3 56.9-82.2 56.9-112 0-53-43-96-96-96S0 299 0 352s96 160 96 160h328c48.5 0 88-39.5 88-88s-39.5-88-88-88zM368 96c0-26.5 21.5-48 48-48s48 21.5 48 47.9c-.5 13.4-20.8 48.2-48 84.4-27.2-36.2-47.5-70.9-48-84.3zM96 436.3c-27.2-36.2-47.5-70.9-48-84.3 0-26.5 21.5-48 48-48s48 21.5 48 47.9c-.5 13.4-20.8 48.2-48 84.4zM96 336c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zM432 96c0-8.8-7.2-16-16-16s-16 7.2-16 16 7.2 16 16 16 16-7.2 16-16z\"]\n};\nvar faRouteHighway = {\n prefix: 'far',\n iconName: 'route-highway',\n icon: [448, 512, [], \"f61a\", \"M428.4 269.21c-30.48-45.42-11.8-104.47 13-155.4 3.96-8.13 3.34-17.75-1.87-25.13l-41.17-58.36c-4.56-6.47-11.8-10.14-19.28-10.14-2.74 0-5.52.49-8.21 1.52-15.37 5.88-32.67 8.89-50.26 8.89-29.51 0-59.81-8.47-83.16-26.11C233.48 1.5 228.74 0 224 0s-9.48 1.5-13.44 4.49C187.21 22.13 156.9 30.6 127.39 30.6c-17.59 0-34.89-3.01-50.25-8.89a22.929 22.929 0 0 0-8.21-1.52c-7.48 0-14.72 3.67-19.28 10.13L8.47 88.69c-5.21 7.38-5.83 16.99-1.87 25.13 24.8 50.92 43.47 109.97 13 155.4-37.94 56.52-18.55 139.43 38.81 166.03L223.97 512l165.62-76.76c57.37-26.6 76.75-109.51 38.81-166.03zM78.65 72.48c15.57 4.03 32.12 6.12 48.75 6.12 34.98 0 68.63-8.94 96.61-25.45 27.98 16.5 61.62 25.45 96.61 25.45 16.63 0 33.18-2.09 48.75-6.12l23.01 32.62c-7.13 15.4-16.3 37.56-22.08 62.9H77.72c-5.79-25.33-14.95-47.49-22.08-62.9l23.01-32.62zM397.2 355.63c-4.73 16.92-14.87 30.07-27.79 36.06l-145.43 67.4-145.38-67.4c-12.93-6-23.06-19.14-27.8-36.06-5.78-20.67-2.55-42.98 8.66-59.67 17.23-25.68 23.58-53.33 23.83-79.96h281.42c.26 26.62 6.6 54.29 23.83 79.97 11.21 16.68 14.44 38.98 8.66 59.66z\"]\n};\nvar faRouteInterstate = {\n prefix: 'far',\n iconName: 'route-interstate',\n icon: [480, 512, [], \"f61b\", \"M464.83 55.14c-3.07-9.95-11.66-16.67-20.94-16.67-1.73 0-3.49.23-5.24.72-18.23 5.12-37.74 7.96-58.1 7.96-49.12 0-93.61-16.07-126.17-42.11C250.18 1.68 245.09 0 240 0s-10.18 1.68-14.38 5.03c-32.56 26.04-77.05 42.11-126.17 42.11-20.36 0-39.87-2.84-58.1-7.96-1.75-.49-3.51-.72-5.24-.72-9.28 0-17.87 6.73-20.94 16.67C-21.83 175.11-6.68 410.34 240 512 486.68 410.34 501.83 175.11 464.83 55.14zM55.32 91.44c14.52 2.46 29.28 3.7 44.14 3.7C150.82 95.14 200 80.62 240 53.93c40 26.69 89.18 41.22 140.55 41.22 14.85 0 29.62-1.24 44.14-3.7 4.72 22.11 7.43 48.36 6.99 76.56H48.32c-.44-28.21 2.28-54.46 7-76.57zM240 459.61C153.46 419.33 95.16 357.2 66.55 274.71c-6.81-19.64-11.27-39.36-14.21-58.71h375.31c-2.94 19.35-7.4 39.07-14.21 58.71-28.6 82.49-86.9 144.62-173.44 184.9z\"]\n};\nvar faRouter = {\n prefix: 'far',\n iconName: 'router',\n icon: [576, 512, [], \"f8da\", \"M528 288H376v-80a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v80H48a48 48 0 0 0-48 48v128a48 48 0 0 0 48 48h480a48 48 0 0 0 48-48V336a48 48 0 0 0-48-48zm0 176H48V336h480zm-416-32a32 32 0 1 0-32-32 32 32 0 0 0 32 32zm96 0a32 32 0 1 0-32-32 32 32 0 0 0 32 32zm35.44-296.47a16.44 16.44 0 0 0-1.3 24l11.11 11.37a15.15 15.15 0 0 0 20.53 1.29 122.72 122.72 0 0 1 156.44 0 15.15 15.15 0 0 0 20.53-1.29l11.11-11.37a16.44 16.44 0 0 0-1.3-24 168.83 168.83 0 0 0-217.12 0zm-67.84-28.2c6 6.11 15.39 6.06 21.71.36a230.29 230.29 0 0 1 309.38 0c6.32 5.7 15.75 5.75 21.71-.36L539.47 96a16.41 16.41 0 0 0-1-23.56C487 25.59 421.42 0 352 0S217 25.59 165.48 72.44a16.41 16.41 0 0 0-.95 23.56z\"]\n};\nvar faRss = {\n prefix: 'far',\n iconName: 'rss',\n icon: [448, 512, [], \"f09e\", \"M80 368c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32m0-48c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80zm367.996 147.615c-6.449-237.834-198.057-429.163-435.61-435.61C5.609 31.821 0 37.229 0 44.007v24.02c0 6.482 5.147 11.808 11.626 11.992 211.976 6.04 382.316 176.735 388.354 388.354.185 6.479 5.51 11.626 11.992 11.626h24.02c6.78.001 12.187-5.608 12.004-12.384zm-136.239-.05C305.401 305.01 174.966 174.599 12.435 168.243 5.643 167.977 0 173.444 0 180.242v24.024c0 6.431 5.072 11.705 11.497 11.98 136.768 5.847 246.411 115.511 252.258 252.258.275 6.425 5.549 11.497 11.98 11.497h24.024c6.797-.001 12.264-5.644 11.998-12.436z\"]\n};\nvar faRssSquare = {\n prefix: 'far',\n iconName: 'rss-square',\n icon: [448, 512, [], \"f143\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h340a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-218-88c0 22.091-17.909 40-40 40s-40-17.909-40-40 17.909-40 40-40 40 17.909 40 40zm93.566 30.405c-4.774-88.343-75.534-159.193-163.971-163.971-5.22-.282-9.595 3.912-9.595 9.14v27.468c0 4.808 3.709 8.841 8.507 9.153 63.904 4.162 115.127 55.258 119.298 119.298.313 4.798 4.345 8.507 9.153 8.507h27.468c5.228 0 9.422-4.375 9.14-9.595zm82.428.165c-4.796-133.612-112.3-241.744-246.564-246.564-5.159-.185-9.43 3.983-9.43 9.146v27.467c0 4.929 3.906 8.94 8.83 9.142 109.245 4.479 196.93 92.181 201.408 201.408.202 4.925 4.213 8.83 9.142 8.83h27.467c5.164.001 9.332-4.27 9.147-9.429z\"]\n};\nvar faRubleSign = {\n prefix: 'far',\n iconName: 'ruble-sign',\n icon: [384, 512, [], \"f158\", \"M243.128 314.38C324.987 314.38 384 257.269 384 172.238S324.987 32 243.128 32H76c-6.627 0-12 5.373-12 12v215.807H12c-6.627 0-12 5.373-12 12v30.572c0 6.627 5.373 12 12 12h52V352H12c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h52v68c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-68h180c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12H128v-37.62h115.128zM128 86.572h105.61c53.303 0 86.301 31.728 86.301 85.666 0 53.938-32.998 87.569-86.935 87.569H128V86.572z\"]\n};\nvar faRuler = {\n prefix: 'far',\n iconName: 'ruler',\n icon: [640, 512, [], \"f545\", \"M635.7 179.2L543.2 16.3c-7.6-13.5-26.5-22-43.7-11.9L16 288.3c-15.3 9-20.6 28.9-11.7 44.5l92.5 162.9c7.6 13.4 26.5 22 43.7 11.9L624 223.7c15.3-9 20.5-28.9 11.7-44.5zm-505.4 278L53.9 322.5l46-27 34.2 60.3c2.2 3.9 7.1 5.2 10.9 3l26.6-15.6c3.8-2.2 5.1-7.2 2.9-11.1l-34.2-60.3 40.4-23.7 18.7 32.9c2.2 3.9 7.1 5.2 10.9 3l26.6-15.6c3.8-2.2 5.1-7.2 2.9-11.1l-18.7-32.9 40.4-23.7 34.2 60.3c2.2 3.9 7.1 5.2 10.9 3l26.6-15.6c3.8-2.2 5.1-7.2 2.9-11.1L302 176.8l40.4-23.7 18.7 32.9c2.2 3.9 7.1 5.2 10.9 3l26.6-15.6c3.8-2.2 5.1-7.2 2.9-11.1l-18.7-32.9 40.4-23.7 34.2 60.3c2.2 3.9 7.1 5.2 10.9 3l26.6-15.6c3.8-2.2 5.1-7.2 2.9-11.1L463.6 82l46-27 76.5 134.7-455.8 267.5z\"]\n};\nvar faRulerCombined = {\n prefix: 'far',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M480 288H224V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V320c0-17.67-14.33-32-32-32zM48 48h128v48h-72c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h72v48h-72c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h72v48h-72c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h72v25.38l-128 128V48zm416 416H70.62l128-128H224v72c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-72h48v72c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-72h48v72c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-72h48v128z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'far',\n iconName: 'ruler-horizontal',\n icon: [640, 512, [], \"f547\", \"M608 128H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zm-16 208H48V176h64v56c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-56h64v56c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-56h64v56c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-56h64v56c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-56h64v56c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-56h64v160z\"]\n};\nvar faRulerTriangle = {\n prefix: 'far',\n iconName: 'ruler-triangle',\n icon: [512, 512, [], \"f61c\", \"M501.65 452.08L59.91 10.35C52.76 3.2 43.97 0 35.35 0 17.31 0 0 14.01 0 35.17V476.9C0 496.29 15.71 512 35.1 512h441.73c31.27 0 46.93-37.8 24.82-59.92zM48 464V66.32l63.08 63.08-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31 45.26 45.25-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31 45.25 45.25-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31 45.25 45.26-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31L445.68 464H48zm80-80h124.54L128 259.46V384z\"]\n};\nvar faRulerVertical = {\n prefix: 'far',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M224 0H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zM48 464V48h160v48h-56c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h56v64h-56c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h56v64h-56c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h56v64h-56c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h56v48H48z\"]\n};\nvar faRunning = {\n prefix: 'far',\n iconName: 'running',\n icon: [416, 512, [], \"f70c\", \"M126.16 316.86l-19.85 46.28c-1.27 2.95-4.14 4.86-7.35 4.86H24.01C10.76 368 0 378.75 0 392s10.76 24 24.01 24h74.95c22.43 0 42.65-13.31 51.5-33.94l13.55-31.6-9.56-5.77c-11.88-7.18-21.22-16.87-28.29-27.83zM272.15 96c26.52 0 48.03-21.49 48.03-48s-21.5-48-48.03-48-48.03 21.49-48.03 48 21.51 48 48.03 48zm119.91 144.56l-48.4-.17c-3.53-.02-6.6-2.3-7.61-5.66l-13.95-45.92c-9.19-30.19-34.02-53.27-64.82-60.23l-78.25-17.7c-25.73-5.86-52.45.08-73.26 16.22L57.4 164.46c-10.49 8.09-12.43 23.17-4.31 33.66 8.08 10.5 23.23 12.41 33.68 4.31l48.39-37.36c9.46-7.33 21.68-9.92 33.3-7.38l14.88 3.37-35.3 87.35c-10.35 25.62-.69 54.59 22.98 68.91l83.78 50.58a8.004 8.004 0 0 1 3.55 9.05l-33.3 104.47c-3.64 12.75 3.74 26.03 16.49 29.67 2.2.62 4.42.92 6.61.92 10.44 0 20.06-6.86 23.08-17.41l33.3-104.47c6.93-24.25-3.31-50.28-24.9-63.33l-51.85-31.3 41.94-104.8c2.72 3.64 5.06 7.59 6.42 12.07l13.96 45.94c7.21 23.66 28.67 39.61 53.41 39.69l48.4.17h.08c13.23 0 23.97-10.69 24.01-23.92.05-13.26-10.66-24.04-23.94-24.09z\"]\n};\nvar faRupeeSign = {\n prefix: 'far',\n iconName: 'rupee-sign',\n icon: [320, 512, [], \"f156\", \"M308 80c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v31.659c0 6.627 5.373 12 12 12h93.61c39.065 0 67.203 17.4 79.458 48.341H12c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h179.59c-3.43 49.738-35.677 80.341-86.615 80.341H12c-6.627 0-12 5.373-12 12v34.974c0 3.495 1.524 6.816 4.173 9.096l182.094 156.685a11.996 11.996 0 0 0 7.827 2.904h61.326c11.13 0 16.263-13.837 7.827-21.096L101.818 320h13.31c79.002 0 136.718-54.257 140.65-136H308c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-56.354c-5.067-21.636-14.409-40.497-27.202-56H308z\"]\n};\nvar faRv = {\n prefix: 'far',\n iconName: 'rv',\n icon: [640, 512, [], \"f7be\", \"M592.1 208h3.9c24.3 0 44-19.7 44-44 0-72.9-59.1-132-132-132H384V16c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v16H64C28.7 32 0 60.7 0 96v197.5c0 17 6.7 33.3 18.7 45.3L96 416v16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H608c17.6 0 32-14.4 32-32V282.4c0-17-6.7-33.2-18.7-45.2L592.1 208zM176 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm192-96H223.6c-13.3-9.9-29.7-16-47.6-16s-34.2 6.1-47.6 16h-12.6l-63.2-63.2c-3-3-4.7-7-4.7-11.3V96c0-8.8 7.2-16 16-16h444c45 0 81.8 35.5 83.9 80H368v208zm204.2-112H416v-48h101.5c4.3 0 8.4 1.7 11.5 4.8l43.2 43.2zM496 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm96-96h-48.4c-13.3-9.9-29.7-16-47.6-16s-34.2 6.1-47.6 16H416v-64h176v64zM304 128H112c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16zm-32 80H144v-32h128v32z\"]\n};\nvar faSack = {\n prefix: 'far',\n iconName: 'sack',\n icon: [512, 512, [], \"f81c\", \"M326 115.91l55.4-81.18A24 24 0 0 0 360 0H152a24 24 0 0 0-21.47 34.73L186 115.92C-9.82 235.66.08 392.05.08 412c0 55.23 49.11 100 109.69 100h292.49c60.57 0 109.68-44.77 109.68-100 0-19.59 8.8-177-185.94-296.09zM314.28 48l-38.22 56h-40.12l-38.22-56zm149.66 364c0 28.67-27.67 52-61.68 52H109.77c-34 0-61.68-23.33-61.68-52-.82-81 32.63-175.45 170.91-260h74.08c137.58 84.18 171.53 178.93 170.86 260z\"]\n};\nvar faSackDollar = {\n prefix: 'far',\n iconName: 'sack-dollar',\n icon: [512, 512, [], \"f81d\", \"M326 115.91l55.4-81.18A24 24 0 0 0 360 0H152a24 24 0 0 0-21.47 34.73L186 115.92C-9.82 235.66.08 392.05.08 412c0 55.23 49.11 100 109.69 100h292.49c60.57 0 109.68-44.77 109.68-100 0-19.59 8.8-177-185.94-296.09zM314.28 48l-38.22 56h-40.12l-38.22-56zm149.66 364c0 28.67-27.67 52-61.68 52H109.77c-34 0-61.68-23.33-61.68-52-.82-81 32.63-175.45 170.91-260h74.08c137.58 84.18 171.53 178.93 170.86 260zM285.61 310.74l-49-14.54c-5.65-1.62-9.57-7.22-9.57-13.68 0-7.86 5.77-14.21 12.84-14.21h30.59a26.81 26.81 0 0 1 13.93 4 8.92 8.92 0 0 0 11-.75l12.74-12.17a8.54 8.54 0 0 0-.66-13 63.12 63.12 0 0 0-34.17-12.17v-17.6a8.69 8.69 0 0 0-8.71-8.62h-17.42a8.68 8.68 0 0 0-8.7 8.62v17.44c-25.8.75-46.48 22.19-46.48 48.57 0 21.54 14.15 40.71 34.39 46.74l49 14.54c5.65 1.61 9.57 7.21 9.57 13.67 0 7.87-5.77 14.22-12.84 14.22h-30.6a26.72 26.72 0 0 1-13.93-4 8.92 8.92 0 0 0-11 .76l-12.85 12.06a8.54 8.54 0 0 0 .66 13 63.2 63.2 0 0 0 34.18 12.17v17.55a8.68 8.68 0 0 0 8.7 8.62h17.42a8.68 8.68 0 0 0 8.7-8.62V406c25.69-.64 46.48-22.18 46.59-48.56.01-21.5-14.14-40.67-34.38-46.7z\"]\n};\nvar faSadCry = {\n prefix: 'far',\n iconName: 'sad-cry',\n icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm144 386.4V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v151.4C315.5 447 282.8 456 248 456s-67.5-9-96-24.6V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v114.4c-34.6-36-56-84.7-56-138.4 0-110.3 89.7-200 200-200s200 89.7 200 200c0 53.7-21.4 102.5-56 138.4zM205.8 234.5c4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.3 7.9 4.8 13.7 1.6zM344 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.5 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm-96 92c-30.9 0-56 28.7-56 64s25.1 64 56 64 56-28.7 56-64-25.1-64-56-64z\"]\n};\nvar faSadTear = {\n prefix: 'far',\n iconName: 'sad-tear',\n icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm8-152c-13.2 0-24 10.8-24 24s10.8 24 24 24c23.8 0 46.3 10.5 61.6 28.8 8.1 9.8 23.2 11.9 33.8 3.1 10.2-8.5 11.6-23.6 3.1-33.8C330 320.8 294.1 304 256 304zm-88-64c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-165.6 98.8C151 290.1 126 325.4 126 342.9c0 22.7 18.8 41.1 42 41.1s42-18.4 42-41.1c0-17.5-25-52.8-36.4-68.1-2.8-3.7-8.4-3.7-11.2 0z\"]\n};\nvar faSalad = {\n prefix: 'far',\n iconName: 'salad',\n icon: [512, 512, [], \"f81e\", \"M512 240c0-49.93-29-92.82-70.87-113.9a95.42 95.42 0 0 0-77.72-60.94c-12.78-2.07-24.33-.78-36.69 2.59a112 112 0 0 0-205.84 0C103 62.88 91.19 64 84.21 65.16a95.49 95.49 0 0 0-84.08 90c-1 16 4.11 37 10.56 49.14 9 17 15.94 34.9 19.09 53.57-7.39 1.81-14.4 5-19.64 10.71a38.29 38.29 0 0 0-10 29.08c6.18 72.9 51.31 136.51 116.6 166.34 2.84 26.92 25.44 48 52.78 48H343.1c27.44 0 50.1-21.17 52.82-48.22 64.94-30 109.79-93.51 115.94-166.11.67-7.76-1.84-15.15-5.69-21.86 3.41-11.43 5.83-23.28 5.83-35.81zm-128.09-80C430 160 464 198.84 464 240c0 5.57-1.14 10.79-2.28 16H306.13c-1.14-5.21-2.27-10.43-2.27-16a80 80 0 0 1 80.05-80zM215.8 96h16a8 8 0 0 1 8 8v152h-32V104a8 8 0 0 1 8-8zM74 165.66l11.32-11.32a8 8 0 0 1 11.32 0L198.41 256h-45.28L74 177a8 8 0 0 1 0-11.34zm290 259.39l-15.81 5.73v27.5c0 3.16-2.29 5.72-5.1 5.72H169.52c-2.81 0-5.09-2.56-5.09-5.72v-27.4l-15.91-5.69C95.8 406.31 57.7 359.42 49.2 304h413.6c-8.47 55.2-46.35 102.05-98.8 121.05z\"]\n};\nvar faSandwich = {\n prefix: 'far',\n iconName: 'sandwich',\n icon: [512, 512, [], \"f81f\", \"M497.61 247.3c-16.86-1.78-26.82-6.77-38.8-12.77-12.94-6.47-71.67-38.85-149.37 0-52.66 26.38-90.19 8.19-106.56 0-12.8-6.39-71.25-39.14-149.54 0-12 6-22 11-38.95 12.77A16 16 0 0 0 0 263.13v16.08c0 9.59 8.51 16.88 18.06 16 26.4-2.55 42.36-10.52 56.72-17.7 52.79-26.4 90.35-8.15 106.66 0 77.7 38.85 136.54 6.47 149.5 0 55.93-28 95.44-5.46 106.37 0 14.36 7.18 30.3 15.15 56.62 17.7 9.55.92 18.07-6.37 18.07-16v-16.08a16 16 0 0 0-14.39-15.83zM480 32H32A32 32 0 0 0 0 64v96a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-16 112H48V80h416zm16 176H32a32 32 0 0 0-32 32v96a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-96a32 32 0 0 0-32-32zm-16 112H48v-64h232l72 48 72-48h40z\"]\n};\nvar faSatellite = {\n prefix: 'far',\n iconName: 'satellite',\n icon: [512, 512, [], \"f7bf\", \"M502.62516,264.79688a31.98911,31.98911,0,0,1,0,45.10937l-96.6858,96.6875a31.8365,31.8365,0,0,1-44.99921,0l-45.99919-46c9.99982,48.20313,3.68743,99-20.12465,143.3125A15.39834,15.39834,0,0,1,280.94156,512a16.79636,16.79636,0,0,1-11.906-4.90625L148.22514,386.40625l-21.90587,21.89063c.71874,2.60937,1.625,5,1.625,7.79687a31.99944,31.99944,0,1,1-31.99944-32c2.78121,0,5.18741.90625,7.78112,1.60937l21.90586-21.90624L4.9464,243.09375C-2.67846,235.5-1.366,222.40625,8.0401,217.29688a211.415,211.415,0,0,1,142.59124-20.89063l-45.3117-45.3125a32.02746,32.02746,0,0,1,0-45.09375l96.717-96.70312A31.56644,31.56644,0,0,1,224.5363,0a32.04621,32.04621,0,0,1,22.59335,9.29688l70.81126,70.90624,70.78-70.79687a31.87473,31.87473,0,0,1,45.218,0L502.62516,78a32.04531,32.04531,0,0,1,0,45.29688l-70.81125,70.79687ZM224.13005,287.90625A164.01085,164.01085,0,0,0,73.6327,243.70312L268.223,438.40625C279.62908,385,263.81686,327.70312,224.13005,287.90625ZM150.72509,128.5l59.40521,59.40625,73.8112-73.8125L224.5363,54.70312Zm82.31106,104.40625A214.85983,214.85983,0,0,1,258.03571,254a217.48794,217.48794,0,0,1,21.09338,24.90625L457.43846,100.70312,411.31427,54.59375ZM457.31346,287.5l-59.374-59.40625-73.8112,73.8125,59.40521,59.39063Z\"]\n};\nvar faSatelliteDish = {\n prefix: 'far',\n iconName: 'satellite-dish',\n icon: [512, 512, [], \"f7c0\", \"M315.02363,461.00155c7.59223,7.59352,6.31124,20.7025-3.09314,25.79609A211.82864,211.82864,0,0,1,61.98024,450.00188C-5.725,382.30081-17.91011,280.30391,25.17507,200.10322a15.47642,15.47642,0,0,1,13.90348-8.0935,16.89827,16.89827,0,0,1,11.90388,4.9061L171.64591,317.709l21.90189-21.90559c-.68736-2.59367-1.59343-4.99985-1.59343-7.79664a31.99364,31.99364,0,1,1,31.99363,31.999c-2.81194,0-5.21771-.90622-7.81094-1.5937l-21.90189,21.89Zm-68.5801-.7031-194.68-194.69722C40.39079,319.00586,56.1689,376.301,95.97348,416.09666A162.48809,162.48809,0,0,0,211.638,464.00146,169.49813,169.49813,0,0,0,246.44353,460.29845ZM511.98442,303.30321a16.25209,16.25209,0,0,1-16.30925,16.70262H479.67835a15.96553,15.96553,0,0,1-15.77811-15.49953C457.0891,166.41675,345.51756,55.81073,207.35756,48.10784c-8.62329-.5-15.40319-7.18728-15.40319-15.7964V16.31193A16.25444,16.25444,0,0,1,208.63855.01555C372.01228,8.51529,503.39238,139.91755,511.98442,303.30321Zm-96.07462-.20312c.59363,9.1091-7.09234,16.812-16.21553,16.812H383.51c-8.4983,0-15.09074-6.70292-15.80935-15.20266-7.18607-85.40366-75.07881-154.79217-160.34308-160.69824-8.62329-.5-15.40319-7.20291-15.40319-15.7964V112.21527c0-9.20285,7.686-16.90574,16.77791-16.20264C319.21029,104.21551,407.599,192.71282,415.9098,303.10009Z\"]\n};\nvar faSausage = {\n prefix: 'far',\n iconName: 'sausage',\n icon: [512, 512, [], \"f820\", \"M447.83 69.83L463 24.18A18.36 18.36 0 0 0 445.62 0h-59.24A18.36 18.36 0 0 0 369 24.18l15.21 45.65C346.88 83 320 118.2 320 160c0 88.22-71.78 160-160 160-41.8 0-77 26.88-90.17 64.17L24.18 369A18.36 18.36 0 0 0 0 386.38v59.24A18.37 18.37 0 0 0 24.18 463l45.65-15.21C83 485.12 118.2 512 160 512c194.09 0 352-157.91 352-352 0-41.8-26.88-77-64.17-90.17zM160 464a48 48 0 0 1 0-96c114.69 0 208-93.31 208-208a48 48 0 0 1 96 0c0 167.63-136.37 304-304 304z\"]\n};\nvar faSave = {\n prefix: 'far',\n iconName: 'save',\n icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z\"]\n};\nvar faSaxHot = {\n prefix: 'far',\n iconName: 'sax-hot',\n icon: [640, 512, [], \"f8db\", \"M120 288a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm505.82-183.73l-24.58-23.41A61.24 61.24 0 0 0 558.81 64h-42.15a90.59 90.59 0 0 0-62.8 24.89l-5.5 5.53-9.73-9.73a16 16 0 0 0-22.63 0L404.69 96a16 16 0 0 0 0 22.63l9.82 9.82-14 14.1-9.86-9.86a16 16 0 0 0-22.63 0L356.69 144a16 16 0 0 0 0 22.63l9.95 10-14 14.1-10-10a16 16 0 0 0-22.63 0L308.69 192a16 16 0 0 0 0 22.63l10.08 10.08L224 320l22.86-64H256a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v16a15.82 15.82 0 0 0 14 15.59c-7.3 30.08-14 63.75-14 87.27 0 62.7 36.31 119.94 94.77 149.36C119 505.22 146.59 512 176 512c78.65 0 122-47 136.24-62.49 4.63-5-17.73 21.45 224.27-266.65h57.06a46.14 46.14 0 0 0 43.17-29 45.08 45.08 0 0 0-10.92-49.59zm-89.31 30.59A48 48 0 0 0 499.76 152C258.42 439.31 280.7 413 276.94 417c-11.85 12.86-43.33 47-100.94 47a123.87 123.87 0 0 1-59.65-14.65C74.19 428.13 48 387.32 48 342.86c0-24.46 8.16-58.66 15.43-86.86h132.46l-17.09 47.86a48 48 0 0 0 79.23 50L487 123.66A42.77 42.77 0 0 1 516.66 112h42.15a13.24 13.24 0 0 1 9.33 3.62l20.2 19.24zM74.07 176l-7-16.45A66.15 66.15 0 0 1 64 140.8c0-10.43 11.25-38.67 36.33-70.61 3.7 4.52 7.21 9.07 10.49 13.59l36.57 50.39 28.1-34.34C186 118 191.72 134.51 192 140.8a66.15 66.15 0 0 1-3.06 18.75l-7 16.45h52.18a117 117 0 0 0 5.88-35.2c0-26.63-26-81.57-62.23-115.2a301.94 301.94 0 0 0-28.1 30A387.31 387.31 0 0 0 100 0C50.88 45.58 16 105 16 140.8a117 117 0 0 0 5.89 35.2z\"]\n};\nvar faSaxophone = {\n prefix: 'far',\n iconName: 'saxophone',\n icon: [640, 512, [], \"f8dc\", \"M112 280a24 24 0 1 0 24 24 24 24 0 0 0-24-24zM625.83 72.27l-24.58-23.41A61.24 61.24 0 0 0 558.81 32h-42.15a90.59 90.59 0 0 0-62.8 24.89l-5.5 5.53-9.73-9.73a16 16 0 0 0-22.63 0L404.69 64a16 16 0 0 0 0 22.63l9.82 9.82-14 14.1-9.86-9.86a16 16 0 0 0-22.63 0L356.69 112a16 16 0 0 0 0 22.63l9.95 10-14 14.1-10-10a16 16 0 0 0-22.63 0L308.69 160a16 16 0 0 0 0 22.63l10.08 10.08L224 288l40-112h8a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h10.59C17.09 209 0 273.14 0 310.86c0 62.7 36.31 119.94 94.77 149.36C119 473.22 146.59 480 176 480c78.65 0 122-47 136.24-62.49 4.63-5-17.73 21.45 224.27-266.65h57.07a46.16 46.16 0 0 0 43.17-29 45.12 45.12 0 0 0-10.92-49.59zm-89.32 30.59A48 48 0 0 0 499.76 120C258.42 407.31 280.7 381 276.94 385c-11.85 12.86-43.33 47-100.94 47a123.87 123.87 0 0 1-59.65-14.65C74.19 396.13 48 355.32 48 310.86 48 267 74.59 190.62 74.59 176H213l-34.2 95.86a48 48 0 0 0 79.23 50L487 91.66A42.78 42.78 0 0 1 516.66 80h42.15a13.22 13.22 0 0 1 9.33 3.62l20.2 19.24zM128 200a24 24 0 1 0 24 24 24 24 0 0 0-24-24z\"]\n};\nvar faScalpel = {\n prefix: 'far',\n iconName: 'scalpel',\n icon: [544, 512, [], \"f61d\", \"M509.82 13.82C496.61 4.4 481.33 0 465.99 0c-24.22 0-48.59 10.96-65.24 30.42l-235.08 274.7c-6.79 7.94-4.94 18.28 1.27 24.77L0 512h.38c101.37 0 198.38-34.12 272.97-94.68.23-.19.46-.38.69-.56 25.93-21.25 42.01-49.96 49.46-80.75h10.32c10.93 0 21.32-4.78 28.43-13.09L524.43 133.4c30.77-35.94 24.78-91.48-14.61-119.58zM243.09 380.05c-33.88 27.51-72.81 48.74-114.74 62.97L226.45 336h47.49c-6.22 17.28-16.71 32.46-30.85 44.05zm244.87-277.86L328.94 288H243.5L437.22 61.63C444.41 53.22 455.43 48 465.99 48c6.03 0 11.4 1.65 15.96 4.9 10.45 7.45 13.13 17.75 13.8 23.22 1.17 9.58-1.6 18.84-7.79 26.07z\"]\n};\nvar faScalpelPath = {\n prefix: 'far',\n iconName: 'scalpel-path',\n icon: [640, 512, [], \"f61e\", \"M509.82 13.82C496.61 4.4 481.33 0 465.99 0c-24.22 0-48.59 10.96-65.24 30.42l-235.08 274.7c-6.79 7.94-4.94 18.28 1.27 24.77L0 512h.38c101.37 0 198.38-34.12 272.97-94.68.23-.19.46-.38.69-.56 25.93-21.25 42.01-49.96 49.46-80.75h10.32c10.93 0 21.32-4.78 28.43-13.09L524.43 133.4c30.77-35.94 24.78-91.48-14.61-119.58zM243.09 380.05c-33.88 27.51-72.81 48.74-114.74 62.97L226.45 336h47.49c-6.22 17.28-16.71 32.46-30.85 44.05zm244.87-277.86L328.94 288H243.5L437.22 61.63C444.41 53.22 455.43 48 465.99 48c6.03 0 11.4 1.65 15.96 4.9 10.45 7.45 13.13 17.75 13.8 23.22 1.17 9.58-1.6 18.84-7.79 26.07zM488 464h-80c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8h80c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8zm-144 0h-80c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8h80c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8zm288 0h-80c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8h80c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8z\"]\n};\nvar faScanner = {\n prefix: 'far',\n iconName: 'scanner',\n icon: [640, 512, [], \"f488\", \"M632 64H456c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V72c0-4.4-3.6-8-8-8zm0-64H456c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8zm0 160H456c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 192H456c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8zm0-64H456c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8zM368 64H112C50.1 64 0 114.1 0 176c0 50.3 33.3 92.3 78.9 106.5L6.4 408C-6.9 431 1 460.3 24 473.6l55.4 32c7.6 4.4 15.8 6.4 24 6.4 16.6 0 32.7-8.6 41.6-24l60-104h67c26.5 0 48-21.5 48-48v-48h48c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM103.4 464L48 432l83.1-144H205L103.4 464zM288 336c0 8.8-7.2 16-16 16h-48.5l36.9-64H288v48zm48-96H112c-35.3 0-64-28.7-64-64s28.7-64 64-64h224v128zm296 208H456c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"]\n};\nvar faScannerImage = {\n prefix: 'far',\n iconName: 'scanner-image',\n icon: [640, 512, [], \"f8f3\", \"M168 408h32a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-32a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8zm-80 0h32a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8H88a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8zm550.89-120c-2.69-21-16.51-39.19-37-46.11L26.25 32.85a15.75 15.75 0 0 0-5.12-.85A16 16 0 0 0 6 42.88L.85 58.07a16 16 0 0 0 10 20.28l575.7 209.06c.34.11.5.44.81.59H48a48 48 0 0 0-48 48v96a48 48 0 0 0 48 48h544a48 48 0 0 0 48-48V288zM592 432H48v-96h544z\"]\n};\nvar faScannerKeyboard = {\n prefix: 'far',\n iconName: 'scanner-keyboard',\n icon: [576, 512, [], \"f489\", \"M400 64H16C7.2 64 0 71.2 0 80v182.6c0 8.5 3.4 16.6 9.4 22.6L32 307.9V464c0 26.5 21.5 48 48 48h256c26.5 0 48-21.5 48-48V307.9l22.6-22.6c6-6 9.4-14.1 9.4-22.6V80c0-8.8-7.2-16-16-16zm-32 192l-32 32v176H80V288l-32-32V112h320v144zM184 368h-64c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm112 0h-64c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-112-96h-64c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm112 0h-64c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-184-48h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zM256 8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v24h64V8zm64 0c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v24h32V8zm248-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8zM408 0h-48c-4.4 0-8 3.6-8 8v24h64V8c0-4.4-3.6-8-8-8zm64 0h-16c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8z\"]\n};\nvar faScannerTouchscreen = {\n prefix: 'far',\n iconName: 'scanner-touchscreen',\n icon: [576, 512, [], \"f48a\", \"M400 64H16C7.2 64 0 71.2 0 80v182.6c0 8.5 3.4 16.6 9.4 22.6L32 307.9V464c0 26.5 21.5 48 48 48h256c26.5 0 48-21.5 48-48V307.9l22.6-22.6c6-6 9.4-14.1 9.4-22.6V80c0-8.8-7.2-16-16-16zm-32 192l-32 32v176H80V288l-32-32V112h320v144zM144 416h128c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zM256 8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v24h64V8zm64 0c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v24h32V8zm248-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8zm-96 0h-16c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8zm-64 0h-48c-4.4 0-8 3.6-8 8v24h64V8c0-4.4-3.6-8-8-8z\"]\n};\nvar faScarecrow = {\n prefix: 'far',\n iconName: 'scarecrow',\n icon: [448, 512, [], \"f70d\", \"M445.7 186.3L419.3 160l18.3-18.3c5-5 1.5-13.7-5.7-13.7H320V96c0-53-43-96-96-96-1.7 0-3.4 0-5.2.1C166.9 2.8 128 49.5 128 101.4V128H16c-7.1 0-10.7 8.6-5.7 13.7L28.7 160 2.3 186.3c-3.1 3.1-3.1 8.2 0 11.3L28.7 224l-18.3 18.3c-5 5-1.5 13.7 5.7 13.7h106.1l-26 141.3c-1.7 10.3 6.5 18.7 15.8 18.7 2.4 0 4.8-.5 7.2-1.7l32.7-24.2c2.8-2 6.1-3.2 9.5-3.1 2.6 0 5.2.6 7.5 1.9l31.1 16.6V496c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-90.7l31.1-16.6c2.4-1.3 5-1.9 7.5-1.9 3.4 0 6.7 1.1 9.5 3.1l32.7 24.2c2.4 1.2 4.8 1.7 7.2 1.7 9.3 0 17.5-8.4 15.8-18.7L325.9 256H432c7.1 0 10.7-8.6 5.7-13.7L419.3 224l26.3-26.3c3.2-3.2 3.2-8.2.1-11.4zM176 101.4c0-.6.1-1.2.2-1.7 3.3 2.5 7.3 4.3 11.8 4.3 11 0 20-9 20-20 0-10.5-8.1-18.8-18.3-19.7 8.2-9.4 19.4-15.6 31.7-16.3h2.6c22 0 40.3 14.9 46 35.1-3-1.8-6.3-3.1-10-3.1-11 0-20 9-20 20s9 20 20 20c4.6 0 8.6-1.8 12-4.4V128c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16zM367.4 208h-99.2l10.4 56.6 13.7 74.5c-12.4-1.1-24.8 1.4-35.8 7.3L224 363.7l-32.5-17.3c-9.3-4.9-19.6-7.5-30.1-7.5-1.9 0-3.8.1-5.7.2l13.6-74.5 10.4-56.7H80.6l-16-16 16-16h69.5c11.2 9.8 25.8 16 41.9 16h64c16.1 0 30.7-6.2 41.9-16h69.5l16 16z\"]\n};\nvar faScarf = {\n prefix: 'far',\n iconName: 'scarf',\n icon: [512, 512, [], \"f7c1\", \"M509.7 395.7l-68.8-68.6-74.3-74.2 24.1-24.7c48.6-53.7 13-113.3 11.5-115.8l-43.6-73.1c-4.3-7.2-9.9-13.3-16.8-18-45.8-30.6-132.4-26.2-171.5.2-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.1c-1.5 2.5-37.1 62.1 11.5 115.8l24.1 24.7-74.3 74.2-68.9 68.4c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l68.8-68.6 22.6 22.6-68.8 68.6c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l68.8-68.6 22.5 22.5-68.7 69.7c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0L256 365.9l140.5 143.7c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.1 3.1-8.2 0-11.3l-68.7-69.7 22.5-22.5 68.8 68.6c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.1 3.1-8.2 0-11.3l-68.8-68.6 22.6-22.6 68.8 68.6c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.3-3 3.3-8 .2-11.2zM361 137.1c4.3 7.4 16.6 33.4-5.4 58.3L332.5 219l-42.7-42.8L349 117l12 20.1zm-166.3-73c12.6-21 110.2-21 122.7-.1l6.3 10.5-67.7 67.8-67.6-67.8 6.3-10.4zm27 268.3l-38.2 39.1-44.4-44.3 40-39.9 43.4 44.3-.8.8zm106.8 39l-172.1-176c-22-24.9-9.7-50.9-5.3-58.4l12-20.1L372.9 327l-44.4 44.4z\"]\n};\nvar faSchool = {\n prefix: 'far',\n iconName: 'school',\n icon: [640, 512, [], \"f549\", \"M368 352h-96c-8.84 0-16 7.16-16 16v128c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16V368c0-8.84-7.16-16-16-16zm-48-232c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm48 112c0 4.42-3.58 8-8 8h-48c-4.42 0-8-3.58-8-8v-64c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h24c4.42 0 8 3.58 8 8v16zm240-40h-96v-53.33c0-10.7-5.35-20.69-14.25-26.62l-160-106.67A31.9 31.9 0 0 0 320 0a31.97 31.97 0 0 0-17.75 5.37l-160 106.67A32.015 32.015 0 0 0 128 138.66V192H32c-17.67 0-32 14.33-32 32v272c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V240h80v272h48V147.23l144-96 144 96V512h48V240h80v256c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z\"]\n};\nvar faScrewdriver = {\n prefix: 'far',\n iconName: 'screwdriver',\n icon: [512, 512, [], \"f54a\", \"M400 224L512 74.67 437.33 0 288 112v78.06l-75.85 75.85c-44.88-23.79-82.68.42-96.41 14.16L12.03 383.77c-16.04 16.05-16.04 42.06 0 58.11l58.09 58.09C78.15 507.99 88.66 512 99.18 512c10.51 0 21.03-4.01 29.05-12.03l103.71-103.71c26.14-26.14 30.61-65.37 14.16-96.41L321.94 224H400zm-64-88l96.83-72.62 15.79 15.79L376 176h-40v-40zM197.99 362.32l-98.82 98.82-48.31-48.31 98.82-98.82c13.34-13.34 34.95-13.36 48.31 0 13.32 13.32 13.32 34.99 0 48.31z\"]\n};\nvar faScroll = {\n prefix: 'far',\n iconName: 'scroll',\n icon: [640, 512, [], \"f70e\", \"M608 336h-64V88c0-48.52-39.47-88-88-88H80C35.88 0 0 35.89 0 80v64c0 17.64 14.34 32 32 32h80v227.44c0 55.44 41.69 105.46 98.66 108.3v.26h312C587.38 512 640 459.36 640 394.67V368c0-17.64-14.34-32-32-32zM48 128V80c0-17.64 14.34-32 32-32s32 14.36 32 32v48H48zm112 275.44V80c0-11.38-2.38-22.2-6.69-32H456c22.06 0 40 17.94 40 40v248H304c-17.66 0-32 14.36-32 32v40c0 71.98-112 78.07-112-4.56zm432-8.77c0 38.23-31.09 69.33-69.34 69.33H303.11c10.67-16.62 16.89-35.92 16.89-56v-24h272v10.67z\"]\n};\nvar faScrollOld = {\n prefix: 'far',\n iconName: 'scroll-old',\n icon: [640, 512, [], \"f70f\", \"M608 336h-64v-65.94L529.94 256 544 241.94v-99.88L529.94 128 544 113.94V88c0-48.52-39.47-88-88-88H80C35.88 0 0 35.89 0 80v64c0 17.64 14.34 32 32 32h80v65.94L126.06 256 112 270.06v133.38c0 55.44 41.69 105.46 98.66 108.3l312 .26C587.38 512 640 459.36 640 394.67V368c0-17.64-14.34-32-32-32zM48 128V80c0-17.64 14.34-32 32-32s32 14.36 32 32v48H48zm112 275.44v-113.5L193.94 256 160 222.06V80c0-11.38-2.38-22.2-6.69-32H456c22.06 0 40 17.94 40 40v6.06L462.06 128 496 161.94v60.12L462.06 256 496 289.94V336h-65.94L416 350.06 401.94 336H304c-17.66 0-32 14.36-32 32v40c0 15.78-6.72 30.92-18.44 41.53-11.88 10.73-27.25 15.67-43.41 14.19-28.12-2.83-50.15-29.3-50.15-60.28zm432-8.77c0 38.23-31.09 69.33-69.34 69.33H303.11c10.67-16.62 16.89-35.92 16.89-56v-24h62.06L416 417.94 449.94 384H592v10.67z\"]\n};\nvar faScrubber = {\n prefix: 'far',\n iconName: 'scrubber',\n icon: [496, 512, [], \"f2f8\", \"M248 56c110.5 0 200 89.5 200 200s-89.5 200-200 200S48 366.5 48 256 137.5 56 248 56m0-48C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 184c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z\"]\n};\nvar faScythe = {\n prefix: 'far',\n iconName: 'scythe',\n icon: [640, 512, [], \"f710\", \"M608 0H338.84C192 0 64 64 0 224h552.09l-13.28 64H400a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h128.86l-32.58 157.05A16 16 0 0 0 512 512h15.45a16 16 0 0 0 15.72-13l96.27-461A32 32 0 0 0 608 0zM78.62 176C134.84 91 222.06 48 338.84 48h249.75L562 176z\"]\n};\nvar faSdCard = {\n prefix: 'far',\n iconName: 'sd-card',\n icon: [448, 512, [], \"f7c2\", \"M384 0H128L0 128v320c0 35.3 28.7 64 64 64h320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V147.9L147.9 48H384c8.8 0 16 7.2 16 16v384zm-80-272h48V80h-48v96zm-80 0h48V80h-48v96zm-80 0h48V80h-48v96z\"]\n};\nvar faSearch = {\n prefix: 'far',\n iconName: 'search',\n icon: [512, 512, [], \"f002\", \"M508.5 468.9L387.1 347.5c-2.3-2.3-5.3-3.5-8.5-3.5h-13.2c31.5-36.5 50.6-84 50.6-136C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c52 0 99.5-19.1 136-50.6v13.2c0 3.2 1.3 6.2 3.5 8.5l121.4 121.4c4.7 4.7 12.3 4.7 17 0l22.6-22.6c4.7-4.7 4.7-12.3 0-17zM208 368c-88.4 0-160-71.6-160-160S119.6 48 208 48s160 71.6 160 160-71.6 160-160 160z\"]\n};\nvar faSearchDollar = {\n prefix: 'far',\n iconName: 'search-dollar',\n icon: [512, 512, [], \"f688\", \"M235.09 199.42l-45-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.62.63-42.67 20.55-42.67 45.07 0 19.97 12.98 37.81 31.58 43.39l45 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.11c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.62-.63 42.67-20.54 42.67-45.07 0-19.97-12.98-37.81-31.58-43.39zm273.38 269.46l-121.39-121.4c-2.3-2.3-5.3-3.5-8.5-3.5h-13.2c31.5-36.5 50.6-84 50.6-135.99C415.98 93.1 322.88 0 207.99 0S0 93.1 0 207.99c0 114.89 93.1 207.99 207.99 207.99 52 0 99.49-19.1 135.99-50.6v13.2c0 3.2 1.3 6.2 3.5 8.5l121.39 121.39c4.7 4.7 12.3 4.7 17 0l22.6-22.6c4.71-4.69 4.71-12.29 0-16.99zm-300.48-100.9c-88.4 0-159.99-71.6-159.99-159.99C48 119.59 119.59 48 207.99 48c88.39 0 159.99 71.6 159.99 159.99 0 88.4-71.6 159.99-159.99 159.99z\"]\n};\nvar faSearchLocation = {\n prefix: 'far',\n iconName: 'search-location',\n icon: [512, 512, [], \"f689\", \"M208 112c-40.78 0-73.83 33.05-73.83 73.83 0 32.96 48.25 93.05 66.74 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.74-81.89 66.74-114.86 0-40.78-33.05-73.83-73.83-73.83zm0 96c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm300.47 260.88l-121.39-121.4c-2.3-2.3-5.3-3.5-8.5-3.5h-13.2c31.5-36.5 50.6-84 50.6-135.99C415.98 93.1 322.88 0 207.99 0S0 93.1 0 207.99c0 114.89 93.1 207.99 207.99 207.99 52 0 99.49-19.1 135.99-50.6v13.2c0 3.2 1.3 6.2 3.5 8.5l121.39 121.39c4.7 4.7 12.3 4.7 17 0l22.6-22.6c4.71-4.69 4.71-12.29 0-16.99zm-300.48-100.9c-88.4 0-159.99-71.6-159.99-159.99C48 119.59 119.59 48 207.99 48c88.39 0 159.99 71.6 159.99 159.99 0 88.4-71.6 159.99-159.99 159.99z\"]\n};\nvar faSearchMinus = {\n prefix: 'far',\n iconName: 'search-minus',\n icon: [512, 512, [], \"f010\", \"M312 196v24c0 6.6-5.4 12-12 12H116c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h184c6.6 0 12 5.4 12 12zm196.5 289.9l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L347.5 387.1c-2.3-2.3-3.5-5.3-3.5-8.5v-13.2c-36.5 31.5-84 50.6-136 50.6C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 52-19.1 99.5-50.6 136h13.2c3.2 0 6.2 1.3 8.5 3.5l121.4 121.4c4.7 4.7 4.7 12.3 0 17zM368 208c0-88.4-71.6-160-160-160S48 119.6 48 208s71.6 160 160 160 160-71.6 160-160z\"]\n};\nvar faSearchPlus = {\n prefix: 'far',\n iconName: 'search-plus',\n icon: [512, 512, [], \"f00e\", \"M312 196v24c0 6.6-5.4 12-12 12h-68v68c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12v-68h-68c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h68v-68c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v68h68c6.6 0 12 5.4 12 12zm196.5 289.9l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L347.5 387.1c-2.3-2.3-3.5-5.3-3.5-8.5v-13.2c-36.5 31.5-84 50.6-136 50.6C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 52-19.1 99.5-50.6 136h13.2c3.2 0 6.2 1.3 8.5 3.5l121.4 121.4c4.7 4.7 4.7 12.3 0 17zM368 208c0-88.4-71.6-160-160-160S48 119.6 48 208s71.6 160 160 160 160-71.6 160-160z\"]\n};\nvar faSeedling = {\n prefix: 'far',\n iconName: 'seedling',\n icon: [512, 512, [], \"f4d8\", \"M436.4 32c-91 0-168.3 67.9-194.7 161.4C204.6 134.6 144 96 75.6 96H0v24c0 127.9 91.7 232 204.4 232H232v112c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V288h27.6C420.3 288 512 183.9 512 56V32h-75.6zm-232 272c-79.3 0-145.1-69.8-155.1-160h26.2c79.3 0 145.1 69.8 155.1 160h-26.2zm103.2-64h-26.2c10-90.2 75.8-160 155.1-160h26.2c-10 90.2-75.8 160-155.1 160z\"]\n};\nvar faSendBack = {\n prefix: 'far',\n iconName: 'send-back',\n icon: [640, 512, [], \"f87e\", \"M256 208V48a48 48 0 0 0-48-48H48A48 48 0 0 0 0 48v160a48 48 0 0 0 48 48h160a48 48 0 0 0 48-48zM48 48h160v160H48zm384 176h48v-80a48 48 0 0 0-48-48H288v48h144zM96 160h64V96H96zm496 96H432a48 48 0 0 0-48 48v160a48 48 0 0 0 48 48h160a48 48 0 0 0 48-48V304a48 48 0 0 0-48-48zm0 208H432V304h160zM208 288h-48v80a48 48 0 0 0 48 48h144v-48H208zm336 64h-64v64h64z\"]\n};\nvar faSendBackward = {\n prefix: 'far',\n iconName: 'send-backward',\n icon: [512, 512, [], \"f87f\", \"M48,48H304v80h48V48A48,48,0,0,0,304,0H48A48,48,0,0,0,0,48V304a48,48,0,0,0,48,48h80V304H48ZM256,432H416a16,16,0,0,0,16-16V256a16,16,0,0,0-16-16H256a16,16,0,0,0-16,16V416A16,16,0,0,0,256,432Zm32-144h96v96H288ZM464,160H208a48,48,0,0,0-48,48V464a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V208A48,48,0,0,0,464,160Zm0,304H208V208H464Z\"]\n};\nvar faSensor = {\n prefix: 'far',\n iconName: 'sensor',\n icon: [448, 512, [], \"e028\", \"M200,128a24,24,0,0,0-24,24V264a24,24,0,0,0,48,0V152A24,24,0,0,0,200,128Zm-80,0a24,24,0,0,0-24,24V264a24,24,0,0,0,48,0V152A24,24,0,0,0,120,128ZM384,32H64A64,64,0,0,0,0,96V416a64,64,0,0,0,64,64H384a64,64,0,0,0,64-64V96A64,64,0,0,0,384,32Zm16,384a16,16,0,0,1-16,16H64a16,16,0,0,1-16-16V96A16,16,0,0,1,64,80H384a16,16,0,0,1,16,16Z\"]\n};\nvar faSensorAlert = {\n prefix: 'far',\n iconName: 'sensor-alert',\n icon: [640, 512, [], \"e029\", \"M633.09,403.37,492.27,159.22c-19.66-34.1-68.87-34.1-88.53,0L262.91,403.36C243.26,437.43,267.85,480,307.18,480H588.82C628.15,480,652.74,437.43,633.09,403.37ZM448,432a24,24,0,1,1,24-24A24,24,0,0,1,448,432Zm19.08-82.8A12,12,0,0,1,455.14,360H440.87a12,12,0,0,1-11.95-10.8l-9.59-96A12,12,0,0,1,431.27,240h33.47a12,12,0,0,1,11.94,13.2ZM176,152V264a24,24,0,0,0,48,0V152a24,24,0,0,0-48,0Zm48.35,280H64a16,16,0,0,1-16-16V96A16,16,0,0,1,64,80H384a16,16,0,0,1,16,16v21.57c13.8-9.9,30.16-15.92,48-15.92V96a64,64,0,0,0-64-64H64A64,64,0,0,0,0,96V416a64,64,0,0,0,64,64H242.51c-2.47-3.15-5.24-6-7.29-9.54A82.69,82.69,0,0,1,224.35,432ZM96,152V264a24,24,0,0,0,48,0V152a24,24,0,0,0-48,0Z\"]\n};\nvar faSensorFire = {\n prefix: 'far',\n iconName: 'sensor-fire',\n icon: [640, 512, [], \"e02a\", \"M325.8,432H64a16,16,0,0,1-16-16V96A16,16,0,0,1,64,80H384a16,16,0,0,1,16,16v13.11c6-6.16,12-12.39,18.32-18.29l23-22.7A63.82,63.82,0,0,0,384,32H64A64,64,0,0,0,0,96V416a64,64,0,0,0,64,64H375.35A195.52,195.52,0,0,1,325.8,432ZM176,152V264a24,24,0,1,0,48,0V152a24,24,0,1,0-48,0Zm-80,0V264a24,24,0,1,0,48,0V152a24,24,0,1,0-48,0Zm455.14-1.14A427.29,427.29,0,0,0,511,193.7,552.55,552.55,0,0,0,440,114.29c-70.18,65.11-120,150-120,201.14C320,406.33,391.66,480,480,480s160-73.67,160-164.57C640,277.38,602.88,198.89,551.13,150.86ZM530.07,400.92A84.1,84.1,0,0,1,481.8,416C436.71,416,400,386.16,400,337.73c0-24.14,15.19-45.41,45.49-81.73,4.33,5,61.75,78.32,61.75,78.32l36.65-41.78c2.59,4.27,4.94,8.46,7,12.49C568.05,337.65,560.85,379.38,530.07,400.92Z\"]\n};\nvar faSensorOn = {\n prefix: 'far',\n iconName: 'sensor-on',\n icon: [640, 512, [], \"e02b\", \"M616,232H536a24,24,0,0,0,0,48h80a24,24,0,0,0,0-48Zm-80-88a23.87,23.87,0,0,0,13.29-4l48-32a24,24,0,1,0-26.62-39.92l-48,32A24,24,0,0,0,536,144Zm13.29,228A24,24,0,1,0,522.69,412l48,32A24,24,0,1,0,597.31,404ZM120,128a24,24,0,0,0-24,24V264a24,24,0,0,0,48,0V152A24,24,0,0,0,120,128Zm80,0a24,24,0,0,0-24,24V264a24,24,0,0,0,48,0V152A24,24,0,0,0,200,128ZM384,32H64A64,64,0,0,0,0,96V416a64,64,0,0,0,64,64H384a64,64,0,0,0,64-64V96A64,64,0,0,0,384,32Zm16,384a16,16,0,0,1-16,16H64a16,16,0,0,1-16-16V96A16,16,0,0,1,64,80H384a16,16,0,0,1,16,16Z\"]\n};\nvar faSensorSmoke = {\n prefix: 'far',\n iconName: 'sensor-smoke',\n icon: [640, 512, [], \"e02c\", \"M572.67,321.28a47.81,47.81,0,0,0-82.4-46.63,79.94,79.94,0,0,0-152.63,45.52c-.56,0-1.08-.17-1.64-.17a80,80,0,0,0,0,160H560a79.85,79.85,0,0,0,12.67-158.72ZM176,152V264a24,24,0,0,0,48,0V152a24,24,0,0,0-48,0ZM64,432a16,16,0,0,1-16-16V96A16,16,0,0,1,64,80H384a16,16,0,0,1,16,16v97.52A111,111,0,0,1,416,192c11.14,0,21.74,2.15,32,5.22V96a64,64,0,0,0-64-64H64A64,64,0,0,0,0,96V416a64,64,0,0,0,64,64H257.86a111.79,111.79,0,0,1-28.64-48ZM96,152V264a24,24,0,0,0,48,0V152a24,24,0,0,0-48,0Z\"]\n};\nvar faServer = {\n prefix: 'far',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M424 400c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24zm-88-24c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm64-144c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm176-72a47.758 47.758 0 0 1-6.438 24A47.758 47.758 0 0 1 512 208v96a47.758 47.758 0 0 1-6.438 24A47.758 47.758 0 0 1 512 352v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96a47.758 47.758 0 0 1 6.438-24A47.758 47.758 0 0 1 0 304v-96a47.758 47.758 0 0 1 6.438-24A47.758 47.758 0 0 1 0 160V64c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v96zm-464 0h416V64H48v96zm416 48H48v96h416v-96zm0 144H48v96h416v-96zm-64-216c13.255 0 24-10.745 24-24s-10.745-24-24-24-24 10.745-24 24 10.745 24 24 24zm-64 0c13.255 0 24-10.745 24-24s-10.745-24-24-24-24 10.745-24 24 10.745 24 24 24z\"]\n};\nvar faShapes = {\n prefix: 'far',\n iconName: 'shapes',\n icon: [512, 512, [], \"f61f\", \"M480 288H320c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V320c0-17.67-14.33-32-32-32zm-16 176H336V336h128v128zM128 256C57.31 256 0 313.31 0 384s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 208c-44.11 0-80-35.89-80-80s35.89-80 80-80 80 35.89 80 80-35.89 80-80 80zm378.98-262.86L400.07 18.29C392.95 6.1 380.47 0 368 0s-24.95 6.1-32.07 18.29L229.02 201.14c-14.26 24.38 3.56 54.86 32.07 54.86h213.82c28.51 0 46.33-30.48 32.07-54.86zM280.61 208L368 58.53 455.39 208H280.61z\"]\n};\nvar faShare = {\n prefix: 'far',\n iconName: 'share',\n icon: [576, 512, [], \"f064\", \"M561.938 190.06L385.94 14.107C355.79-16.043 304 5.327 304 48.047v80.703C166.04 132.9 0 159.68 0 330.05c0 73.75 38.02 134.719 97.63 173.949 37.12 24.43 85.84-10.9 72.19-54.46C145.47 371.859 157.41 330.2 304 321.66v78.28c0 42.64 51.73 64.15 81.94 33.94l175.997-175.94c18.751-18.74 18.751-49.14.001-67.88zM352 400V272.09c-164.521 1.79-277.44 33.821-227.98 191.61C88 440 48 397.01 48 330.05c0-142.242 160.819-153.39 304-154.02V48l176 176-176 176z\"]\n};\nvar faShareAll = {\n prefix: 'far',\n iconName: 'share-all',\n icon: [640, 512, [], \"f367\", \"M497.94 206.06l-160-159.96C307.89 16.04 256 37.16 256 80.04v72.73C127.16 157.36 0 185.98 0 328.38c0 63.78 27.85 108.41 78.46 143.11 36.89 25.28 86.27-9.68 73.1-53.43-17.51-58.18-13.74-84.23 104.44-89.17v71.08c0 42.92 51.92 63.96 81.94 33.94l160-159.97c18.75-18.74 18.75-49.14 0-67.88zM304 400V280c-137.571 0-239.402 15.753-198.4 152C76.79 412.25 48 384.18 48 328.38 48 206.513 183.384 200 304 200V80l160 160-160 160zm321.941-126.059l-160 159.967c-20.37 20.37-50.817 17.225-68.291-.306L592 240 397.652 46.407c17.468-17.53 47.9-20.699 68.29-.31l160 159.962c18.744 18.745 18.744 49.137-.001 67.882z\"]\n};\nvar faShareAlt = {\n prefix: 'far',\n iconName: 'share-alt',\n icon: [448, 512, [], \"f1e0\", \"M352 320c-25.6 0-48.9 10-66.1 26.4l-98.3-61.5c5.9-18.8 5.9-39.1 0-57.8l98.3-61.5C303.1 182 326.4 192 352 192c53 0 96-43 96-96S405 0 352 0s-96 43-96 96c0 9.8 1.5 19.6 4.4 28.9l-98.3 61.5C144.9 170 121.6 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.6 0 48.9-10 66.1-26.4l98.3 61.5c-2.9 9.4-4.4 19.1-4.4 28.9 0 53 43 96 96 96s96-43 96-96-43-96-96-96zm0-272c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM96 304c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm256 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faShareAltSquare = {\n prefix: 'far',\n iconName: 'share-alt-square',\n icon: [448, 512, [], \"f1e1\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h340a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-58-96c0 26.51-21.49 48-48 48s-48-21.49-48-48c0-2.007.138-3.981.377-5.923l-69.131-34.565A47.768 47.768 0 0 1 144 304c-26.51 0-48-21.49-48-48s21.49-48 48-48a47.762 47.762 0 0 1 27.246 8.489l69.131-34.565A48.461 48.461 0 0 1 240 176c0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-12.941 0-24.677-5.131-33.31-13.457l-64.54 32.27a47.935 47.935 0 0 1 0 26.374l64.54 32.27C263.323 293.13 275.059 288 288 288c26.51 0 48 21.49 48 48z\"]\n};\nvar faShareSquare = {\n prefix: 'far',\n iconName: 'share-square',\n icon: [576, 512, [], \"f14d\", \"M561.938 158.06L417.94 14.092C387.926-15.922 336 5.097 336 48.032v57.198c-42.45 1.88-84.03 6.55-120.76 17.99-35.17 10.95-63.07 27.58-82.91 49.42C108.22 199.2 96 232.6 96 271.94c0 61.697 33.178 112.455 84.87 144.76 37.546 23.508 85.248-12.651 71.02-55.74-15.515-47.119-17.156-70.923 84.11-78.76V336c0 42.993 51.968 63.913 81.94 33.94l143.998-144c18.75-18.74 18.75-49.14 0-67.88zM384 336V232.16C255.309 234.082 166.492 255.35 206.31 376 176.79 357.55 144 324.08 144 271.94c0-109.334 129.14-118.947 240-119.85V48l144 144-144 144zm24.74 84.493a82.658 82.658 0 0 0 20.974-9.303c7.976-4.952 18.286.826 18.286 10.214V464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h132c6.627 0 12 5.373 12 12v4.486c0 4.917-2.987 9.369-7.569 11.152-13.702 5.331-26.396 11.537-38.05 18.585a12.138 12.138 0 0 1-6.28 1.777H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6v-25.966c0-5.37 3.579-10.059 8.74-11.541z\"]\n};\nvar faSheep = {\n prefix: 'far',\n iconName: 'sheep',\n icon: [640, 512, [], \"f711\", \"M496 96c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16zm113.81 4.92L584 85.56V80c0-30.87-25.12-56-56-56h-81.62C442.76 10.3 430.84 0 416 0c-17.67 0-32 14.33-32 32v67.04c-12.39-1.71-24.83-.09-36.19 5.01-17.11-9.45-40.77-11.56-61.81-1-18.41-9.2-41.19-9.2-59.59-.06-18.84-9.47-42.91-9.08-61.47 1-12.94-5.89-27.56-7.52-42.31-4.37-17.88 4.02-33.12 15.11-42.69 30.34-17.59 2.08-34.06 11.16-45.66 25.83-11.25 14.57-16.22 32.94-14.28 50.88-12.62 12.78-20 30.34-20 49.02s7.25 36.19 19.69 48.92c-2.06 18.17 2.94 36.62 14.28 50.94 11.28 14.67 27.66 23.81 45.25 25.91 4.77 7.71 10.96 14.36 18.17 19.57l20.79 86.46c3.46 14.38 16.32 24.52 31.11 24.52h74.7c20.86 0 36.14-19.64 31.02-39.86l-14.67-57.91a66.566 66.566 0 0 0 15.23 1.77c10.5 0 20.72-2.45 29.94-7.09 5.64 2.75 11.96 4.45 18.52 5.57V480c0 17.67 14.33 32 32 32h80c17.67 0 32-14.33 32-32V377.86c11.36-4.34 21.72-11.56 29.7-21.64 11.25-14.58 16.22-32.95 14.28-50.89 12.62-12.78 20-30.34 20-49.02 0-8.48-1.68-16.65-4.47-24.31h68.13c17.75 0 34.31-9.56 43.22-25.05 18.94-33.2 21.12-48.14 21.12-56.48-.01-21.06-11.54-39.94-30.2-49.55zM161.89 464l-12.41-51.61c5.02-.98 9.97-2.33 14.7-4.46 8.19 4.46 17.48 6.72 26.91 7.4L203.42 464h-41.53zm238.13 0h-48v-54.2c11.7 4.23 24.4 5.38 37.35 2.59 3.7-.83 7.2-2.14 10.65-3.55V464zm53.42-189.03l-18.34 10.27 7.75 19.53c6.2 15.52-6.22 32.05-21.78 29.47l-21.19-3.77-6.03 20.67c-3.83 13.14-20.14 20.45-31.88 9.92l-17.16-15.22-16 16.44c-6.56 6.78-18.41 8.29-26.88.23l-16.59-15.78-16.53 15.84c-7.41 7.02-19.06 7.06-26 .23l-16.59-16.37-16.84 16.14c-8.56 8.23-22.38 4.28-26.69-.25L167 346.09l-17.16 14.64c-11.21 9.5-27.98 4.87-32.19-10.05l-5.94-20.91-21.41 3.83c-14.59 2.64-27.87-13.37-21.47-29.48l7.75-19.52-18.34-10.27c-13.42-7.56-13.97-29.28.31-37.31l18.34-10.27-7.75-19.53c-6.23-15.61 6.46-32.22 21.78-29.47l21.19 3.77 6.03-20.67c3.87-13.27 20.22-20.33 31.88-9.92l17.16 15.2 15.97-16.42c4.44-4.5 18.28-8.44 26.22-.58l16.59 16.45 16.91-16.16c7.28-6.98 19.19-7.08 26.59.03l16.62 15.84 16.56-15.91c10.04-9.7 21.87-4.71 26.69.28l15.66 16.2 17.16-14.62c12.15-10.3 28.3-3.72 32.19 10.05l5.94 20.91 21.41-3.83c14.63-2.69 27.84 13.44 21.47 29.48l-7.75 19.52 18.34 10.27c13.42 7.57 13.97 29.29-.31 37.33zM575.66 184h-84.83c-2.22-9.96-6.37-19.44-12.79-27.55-11.28-14.67-27.66-23.81-45.25-25.91-.23-.37-.55-.66-.78-1.03V72h96c4.41 0 8 3.59 8 8v32.87l49.97 29.72c9.66 5.28 8.6 10.49-10.32 41.41z\"]\n};\nvar faShekelSign = {\n prefix: 'far',\n iconName: 'shekel-sign',\n icon: [384, 512, [], \"f20b\", \"M216 160v192c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V160c0-70.69-57.31-128-128-128H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V96h88c35.35 0 64 28.65 64 64zM368 32h-32c-8.84 0-16 7.16-16 16v304c0 35.35-28.65 64-64 64h-88V160c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v296c0 13.25 10.75 24 24 24h128c70.69 0 128-57.31 128-128V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faShield = {\n prefix: 'far',\n iconName: 'shield',\n icon: [512, 512, [], \"f132\", \"M237.5 508.3c11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3zM256 48l192 80c0 173.8-98.4 297-192 336-97.5-40.6-192-166.7-192-336l192-80z\"]\n};\nvar faShieldAlt = {\n prefix: 'far',\n iconName: 'shield-alt',\n icon: [512, 512, [], \"f3ed\", \"M256 409.6V100l-142.9 59.5c8.4 116.2 65.2 202.6 142.9 250.1zM466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256 464C158.5 423.4 64 297.3 64 128l192-80 192 80c0 173.8-98.4 297-192 336z\"]\n};\nvar faShieldCheck = {\n prefix: 'far',\n iconName: 'shield-check',\n icon: [512, 512, [], \"f2f7\", \"M163.2 230.5c-4.7-4.7-12.3-4.7-17-.1l-22.7 22.5c-4.7 4.7-4.7 12.3-.1 17l90.8 91.5c4.7 4.7 12.3 4.7 17 .1l172.6-171.2c4.7-4.7 4.7-12.3.1-17l-22.5-22.7c-4.7-4.7-12.3-4.7-17-.1L223 290.7zM466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256 464C158.5 423.4 64 297.3 64 128l192-80 192 80c0 173.8-98.4 297-192 336z\"]\n};\nvar faShieldCross = {\n prefix: 'far',\n iconName: 'shield-cross',\n icon: [448, 512, [], \"f712\", \"M420.43 83.69l-179.2-80C235.72 1.23 229.86 0 224 0s-11.72 1.23-17.23 3.69l-179.2 80C10.88 91.14 0 108.62 0 128c0 198.49 106.86 335.71 206.77 380.31 5.51 2.46 11.37 3.69 17.23 3.69s11.72-1.23 17.23-3.69C321.13 472.64 448 349.28 448 128c0-19.38-10.88-36.86-27.57-44.31zM398.33 168H248V59.41L400 128c0 13.81-.64 27.08-1.67 40zM200 59.28V168H49.17c-1.15-13.19-1.96-26.6-2.03-40.48L200 59.28zM55.76 216H200v233.96C137.82 410.28 77.53 328.89 55.76 216zM248 449.75V216h143.84C368.77 339.71 300.17 415.42 248 449.75z\"]\n};\nvar faShieldVirus = {\n prefix: 'far',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M240,112v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H128a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V368a16,16,0,0,0,32,0V355.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,0,0,22.63-22.63l-8.58-8.57C329.09,290.47,343.37,256,371.88,256H384a16,16,0,0,0,0-32H371.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,0,0-22.63-22.63l-8.57,8.58C306.47,166.91,272,152.63,272,124.12V112a16,16,0,0,0-32,0ZM224,224a16,16,0,1,1,16-16A16,16,0,0,1,224,224Zm64,32a16,16,0,1,1-16,16A16,16,0,0,1,288,256ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.12,48.12,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM256.08,48h0l0,0ZM256,464C163.51,425.48,64,303.88,64.06,128L254.88,48.42c.33-.1.91-.22,1.44-.32L448,128C448,330.48,322.37,436.33,256,464Z\"]\n};\nvar faShip = {\n prefix: 'far',\n iconName: 'ship',\n icon: [640, 512, [], \"f21a\", \"M484.843 379.396l74.163-62.753c28.358-23.994 19.811-69.847-15.304-82.002L488 215.359V88c0-13.255-10.745-24-24-24h-48V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-48c-13.255 0-24 10.745-24 24v127.359L96.299 234.64c-35.103 12.151-43.671 58-15.304 82.002l74.163 62.753C131.794 430.787 84.576 464 12 464c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12 61.682 0 114.334-17.015 157.164-66.492C175.604 483.207 208.493 512 248 512h144c39.507 0 72.396-28.793 78.836-66.492C513.949 495.312 566.824 512 628 512c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12-71.98 0-119.548-32.672-143.157-84.604zM264 40h112v24H264V40zm-64 72h240v86.744l-104.299-36.103a48 48 0 0 0-31.403 0L200 198.744V112zm224 320c0 17.673-14.327 32-32 32H248c-17.673 0-32-14.327-32-32v-64l-104-88 208-72 208 72-104 88v64z\"]\n};\nvar faShippingFast = {\n prefix: 'far',\n iconName: 'shipping-fast',\n icon: [640, 512, [], \"f48b\", \"M624 368h-16V251.9c0-19-7.7-37.5-21.1-50.9L503 117.1C489.6 103.7 471 96 452.1 96H416V56c0-30.9-25.1-56-56-56H120C89.1 0 64 25.1 64 56v40H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H112V56c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v312H242.7c-16.6-28.6-47.2-48-82.7-48-17.6 0-33.8 5.1-48 13.3V288H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-464 96c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm256-320h36.1c6.3 0 12.5 2.6 17 7l73 73H416v-80zm64 320c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-100.9c-17.2-25.9-46.6-43.1-80-43.1-24.7 0-47 9.6-64 24.9V272h144v91.1zM256 248v-16c0-4.4-3.6-8-8-8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8zm24-56c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h240z\"]\n};\nvar faShippingTimed = {\n prefix: 'far',\n iconName: 'shipping-timed',\n icon: [640, 512, [], \"f48c\", \"M208 88c-57.4 0-104 46.6-104 104s46.6 104 104 104 104-46.6 104-104S265.4 88 208 88zm48 128c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-80c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h24c4.4 0 8 3.6 8 8v16zm368 152h-16V251.9c0-19-7.7-37.5-21.1-50.9L503 117.1C489.6 103.7 471 96 452.1 96H416V56c0-30.9-25.1-56-56-56H56C25.1 0 0 25.1 0 56v304c0 30.9 25.1 56 56 56h8c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-464 96c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm208-96H242.7c-16.6-28.6-47.2-48-82.7-48s-66.1 19.4-82.7 48H56c-4.4 0-8-3.6-8-8V56c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v312zm48-224h36.1c6.3 0 12.5 2.6 17 7l73 73H416v-80zm64 320c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-100.9c-17.2-25.9-46.6-43.1-80-43.1-24.7 0-47 9.6-64 24.9V256h144v107.1z\"]\n};\nvar faShishKebab = {\n prefix: 'far',\n iconName: 'shish-kebab',\n icon: [512, 512, [], \"f821\", \"M511.21 84.07c-3.78-29.71-21.06-55.68-47.42-71.21a95.17 95.17 0 0 0-97.93 1.43C323.2 41 307.71 94 330 138.88c1.44 2.93 2.28 7.16 0 9.49l-24.3 24.21-31.8-31.8a70.94 70.94 0 0 0-100.32 0l-31.7 31.71a70.15 70.15 0 0 0-20.28 45.11 70.28 70.28 0 0 0-45.12 20.28l-31.7 31.71a70.93 70.93 0 0 0 0 100.32l31.71 31.72-71.94 71.89a15.49 15.49 0 0 0 0 21.94l12 12a15.49 15.49 0 0 0 21.94 0l72-71.89 31.67 31.66a70.93 70.93 0 0 0 100.32 0l31.7-31.7a70.22 70.22 0 0 0 20.29-45.11 70.24 70.24 0 0 0 45.11-20.29l31.7-31.7a70.93 70.93 0 0 0 0-100.32l-31.58-31.59 24.23-24.22c16.72-16.73 20.28-42.14 9.09-64.72-9.62-19.43-6-48.25 19.61-63.36a45.55 45.55 0 0 1 45.92-.53c14.22 8 23.15 21 25.13 36.45a47.88 47.88 0 0 1-6 30.09c-3.71 6.39-3.31 14.32 1.91 19.55l12.29 12.29c6.72 6.72 18.17 6.09 23.54-1.75a95.31 95.31 0 0 0 15.79-66.25zm-271 317.51l-31.7 31.7a22.94 22.94 0 0 1-32.44 0L78.72 336a22.94 22.94 0 0 1 0-32.44l31.7-31.7a22.94 22.94 0 0 1 32.44 0l97.32 97.32a22.94 22.94 0 0 1 0 32.4zm97.1-97.1l-31.7 31.7a22.94 22.94 0 0 1-32.44 0l-97.32-97.32a22.94 22.94 0 0 1 0-32.44l31.7-31.7a22.94 22.94 0 0 1 32.44 0L337.28 272a22.94 22.94 0 0 1 0 32.48z\"]\n};\nvar faShoePrints = {\n prefix: 'far',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M491.42 7.7C468.38 2.4 444.87 0 421.3 0c-9.15 0-18.31.36-27.46 1.05-27.3 2.07-54.1 8.33-80.31 16.12L256 32h-64c-35.35 0-64 32.98-64 70.86 0 37.87 28.65 68.57 64 68.57h64c60.2 0 79.94 16.73 104.73 34.29C389.3 225.94 430.54 240 465.46 240 555.82 240 640 205.71 640 137.14 640 88.69 600.9 32.89 491.42 7.7zM240 123.43h-48c-8.67 0-16-9.42-16-20.57C176 90.2 184.75 80 192 80h48v43.43zM465.46 192c-24.16 0-55.82-10.47-76.99-25.46l-4.08-2.91c-20.96-14.97-46.54-32.83-96.38-38.35V73.32l37.51-9.66.86-.22.85-.25c27.53-8.19 49.85-12.72 70.26-14.27 7.94-.6 15.88-.92 23.83-.92 20.71 0 40.69 2.18 59.36 6.48C562.75 73.37 592 109.57 592 137.14c0 34.34-64.34 54.86-126.54 54.86zm-128 80c-34.91 0-76.16 14.06-104.73 34.29-24.79 17.55-44.52 34.29-104.73 34.29H64c-35.35 0-64 30.7-64 68.57S28.65 480 64 480h64l57.53 14.82c26.21 7.79 53.01 14.05 80.31 16.12 9.14.69 18.31 1.05 27.46 1.05 23.57 0 47.09-2.4 70.12-7.7C472.9 479.11 512 423.3 512 374.86 512 306.29 427.82 272 337.46 272zM112 432H64c-7.25 0-16-10.2-16-22.86 0-11.15 7.33-20.57 16-20.57h48V432zm240.66 25.52c-18.68 4.3-38.65 6.48-59.36 6.48-7.94 0-15.89-.32-23.83-.92-20.4-1.55-42.73-6.08-70.26-14.27l-.85-.25-.86-.22-37.5-9.66v-51.97c49.84-5.52 75.43-23.37 96.38-38.34l4.08-2.91c21.18-14.99 52.84-25.46 77-25.46 62.2 0 126.54 20.52 126.54 54.86 0 27.57-29.25 63.77-111.34 82.66z\"]\n};\nvar faShoppingBag = {\n prefix: 'far',\n iconName: 'shopping-bag',\n icon: [448, 512, [], \"f290\", \"M352 128C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128H0v304c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V128h-96zM224 48c44.112 0 80 35.888 80 80H144c0-44.112 35.888-80 80-80zm176 384c0 17.645-14.355 32-32 32H80c-17.645 0-32-14.355-32-32V176h48v40c0 13.255 10.745 24 24 24s24-10.745 24-24v-40h160v40c0 13.255 10.745 24 24 24s24-10.745 24-24v-40h48v256z\"]\n};\nvar faShoppingBasket = {\n prefix: 'far',\n iconName: 'shopping-basket',\n icon: [576, 512, [], \"f291\", \"M564 192h-72.902L362.286 40.457c-8.583-10.099-23.729-11.327-33.83-2.743-10.099 8.584-11.327 23.731-2.742 33.83L428.102 192H147.899L250.287 71.543c8.584-10.099 7.356-25.246-2.743-33.83s-25.246-7.355-33.83 2.743L84.901 192H12c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h18.667l27.584 198.603C61.546 462.334 81.836 480 105.794 480h364.412c23.958 0 44.248-17.666 47.544-41.397L545.333 240H564c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12zm-93.794 240H105.794L79.127 240h417.745l-26.666 192zM312 296v80c0 13.255-10.745 24-24 24s-24-10.745-24-24v-80c0-13.255 10.745-24 24-24s24 10.745 24 24zm112 0v80c0 13.255-10.745 24-24 24s-24-10.745-24-24v-80c0-13.255 10.745-24 24-24s24 10.745 24 24zm-224 0v80c0 13.255-10.745 24-24 24s-24-10.745-24-24v-80c0-13.255 10.745-24 24-24s24 10.745 24 24z\"]\n};\nvar faShoppingCart = {\n prefix: 'far',\n iconName: 'shopping-cart',\n icon: [576, 512, [], \"f07a\", \"M551.991 64H144.28l-8.726-44.608C133.35 8.128 123.478 0 112 0H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h80.24l69.594 355.701C150.796 415.201 144 430.802 144 448c0 35.346 28.654 64 64 64s64-28.654 64-64a63.681 63.681 0 0 0-8.583-32h145.167a63.681 63.681 0 0 0-8.583 32c0 35.346 28.654 64 64 64 35.346 0 64-28.654 64-64 0-18.136-7.556-34.496-19.676-46.142l1.035-4.757c3.254-14.96-8.142-29.101-23.452-29.101H203.76l-9.39-48h312.405c11.29 0 21.054-7.869 23.452-18.902l45.216-208C578.695 78.139 567.299 64 551.991 64zM208 472c-13.234 0-24-10.766-24-24s10.766-24 24-24 24 10.766 24 24-10.766 24-24 24zm256 0c-13.234 0-24-10.766-24-24s10.766-24 24-24 24 10.766 24 24-10.766 24-24 24zm23.438-200H184.98l-31.31-160h368.548l-34.78 160z\"]\n};\nvar faShovel = {\n prefix: 'far',\n iconName: 'shovel',\n icon: [512, 512, [], \"f713\", \"M502.71 89.55L422.45 9.29C416.26 3.1 408.14 0 400.02 0s-16.24 3.1-22.43 9.29l-31.56 31.56c-16.77 16.77-25.91 39.25-25.91 62.49 0 20.49 6.93 35.24 11.39 43.23L207.22 270.86l-52.66-52.66c-6.24-6.25-14.43-9.37-22.61-9.37s-16.37 3.12-22.61 9.37l-69.62 69.62C-11.22 338.76-6.4 472.29 16.66 495.35 26.71 505.41 57.81 512 93.89 512c46.62 0 101.57-11 130.29-39.71l69.62-69.62c12.49-12.49 12.49-32.74 0-45.23l-52.66-52.66 124.32-124.32c17.83 9.95 34.2 11.45 43.26 11.45 24.7 0 48.16-11.67 65.7-29.2l28.29-28.3c12.39-12.39 12.39-32.47 0-44.86zM190.26 438.37c-15.35 15.35-54.08 25.66-96.37 25.66-19.48 0-33.9-2.27-41.9-4.31-7.87-29.31-5.31-111.05 21.63-137.99l58.31-58.32 116.63 116.63-58.3 58.33zm250.23-309.59c-9.61 9.61-21.17 15.13-32.76 15.13-35 0-53.14-43.78-27.78-69.15l20.07-20.07 57.28 57.28-16.81 16.81z\"]\n};\nvar faShovelSnow = {\n prefix: 'far',\n iconName: 'shovel-snow',\n icon: [512, 512, [], \"f7c3\", \"M503.2 72.3L439.7 8.8C428-2.9 409-2.9 397.3 8.8l-24.5 24.5c-14.2 14.2-21.9 33.2-21.9 52.9 0 4.9.5 9.8 1.5 14.8 1.3 6.5 3.6 12.6 6.4 18.4L262 216.2l-41.5-41.5c-9.7-9.7-22.5-14.6-35.3-14.6-10.7 0-21.5 3.4-30.5 10.4L19.4 274.9c-23.8 18.4-26.1 53.5-4.8 74.8l147.7 147.7c9.8 9.8 22.6 14.6 35.3 14.6 14.8 0 29.6-6.6 39.5-19.4l104.5-135.2c15.4-19.9 13.6-48.1-4.2-65.8l-41.5-41.5 96.8-96.8c5.8 2.8 11.9 5.1 18.4 6.4 24.6 4.9 49.9-2.7 67.6-20.5l24.5-24.5c11.7-11.7 11.7-30.7 0-42.4zM303.4 325.5c.7.7.8 1.8.2 2.5L199.1 463.2c-.1.2-.3.4-1.2.4-.4 0-1-.1-1.7-.3L48.6 315.8l.2-2.9L184 208.4c.2-.2.6-.4 1.2-.4l1.4.6 116.8 116.9zm141.4-220.2c-6.4 6.4-15.5 9.1-24.3 7.3-10.7-2.1-19-10.4-21.1-21.1-1.7-8.9 1-17.9 7.3-24.3l11.8-11.8 38.1 38.1-11.8 11.8zM153.7 265.7l-32 32c-9.4 9.4-9.4 24.6 0 33.9 4.7 4.7 10.8 7 17 7s12.3-2.3 17-7l32-32c9.4-9.4 9.4-24.6 0-33.9-9.5-9.4-24.6-9.4-34 0zm26.7 124.6c4.7 4.7 10.8 7 17 7s12.3-2.3 17-7l32-32c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-32 32c-9.5 9.3-9.5 24.5-.1 33.9z\"]\n};\nvar faShower = {\n prefix: 'far',\n iconName: 'shower',\n icon: [512, 512, [], \"f2cc\", \"M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A110.94,110.94,0,0,0,211.76,81.84L195.47,65.55a114.07,114.07,0,0,0-95-32.72C42,39.73,0,93.07,0,151.94V464a16,16,0,0,0,16,16H32a16,16,0,0,0,16-16V146.52a66.5,66.5,0,0,1,113.53-47l16.3,16.3A110.93,110.93,0,0,0,192,254.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65ZM226.28,219.78C215.24,208.31,208,193.15,208,176a64.07,64.07,0,0,1,64-64c17.15,0,32.31,7.24,43.78,18.28Z\"]\n};\nvar faShredder = {\n prefix: 'far',\n iconName: 'shredder',\n icon: [512, 512, [], \"f68a\", \"M432 176V99.88c0-12.73-5.06-24.94-14.06-33.94l-51.88-51.88c-9-9-21.21-14.06-33.94-14.06H110.48C93.64 0 80 14.33 80 32v144c-44.18 0-80 35.82-80 80v128c0 8.84 7.16 16 16 16h24v96c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-96h48v96c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-96h48v96c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-96h48v96c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-96h48v96c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-96h24c8.84 0 16-7.16 16-16V256c0-44.18-35.82-80-80-80zM128 48h192v48c0 8.84 7.16 16 16 16h48v64H128V48zm336 304H48v-96c0-17.64 14.36-32 32-32h352c17.64 0 32 14.36 32 32v96zm-64-88c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24z\"]\n};\nvar faShuttleVan = {\n prefix: 'far',\n iconName: 'shuttle-van',\n icon: [640, 512, [], \"f5b6\", \"M628.88 210.65L499.19 55.03A64.006 64.006 0 0 0 450.02 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 52.93 43.06 96 96 96s96-43.07 96-96h128c0 52.93 43.06 96 96 96s96-43.07 96-96h32c17.67 0 32-14.33 32-32V241.38a48.03 48.03 0 0 0-11.12-30.73zM376 80h74.02c4.76 0 9.24 2.1 12.29 5.76L550.85 192H376V80zm-160 0h112v112H216V80zM48 80h120v112H48V80zm112 352c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm320 0c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm112-96h-29.36c-16.65-28.55-47.27-48-82.64-48s-65.99 19.45-82.64 48H242.64c-16.65-28.55-47.27-48-82.64-48s-65.99 19.45-82.64 48H48v-96h542.85l1.15 1.38V336z\"]\n};\nvar faShuttlecock = {\n prefix: 'far',\n iconName: 'shuttlecock',\n icon: [512, 512, [], \"f45b\", \"M472 192h-40v-72c0-22.1-17.9-40-40-40h-72V40c0-22.1-17.9-40-40-40h-34.9c-15.5 0-29.8 9.1-36.3 23.1L95.5 266.5 31.1 331c-41.4 41.4-41.4 108.6 0 150 41.3 41.3 108.4 41.5 150 0l64.5-64.5 243.3-113.3c14.1-6.5 23.2-20.8 23.2-36.3V232c-.1-22.1-18-40-40.1-40zm-88-64v62.4l-91.2 28.8 28.8-91.2H384zM85.1 344.8l20.9-20.9 82.1 82.1-20.9 20.9-82.1-82.1zM250.2 48H272v50.2l-62 36L250.2 48zm10.9 112l-26.3 83.1L164 314l-25.7-25.7 36.3-77.9 86.5-50.4zM65 447c-21.8-21.8-22.4-56.6-2.2-79.4l81.6 81.6c-23.8 21.1-58.2 19-79.4-2.2zm158.7-73.3L198 347.9l70.8-70.8 83.1-26.3-50.3 86.5-77.9 36.4zM464 261.8l-86.2 40.1 36-61.9H464v21.8z\"]\n};\nvar faSickle = {\n prefix: 'far',\n iconName: 'sickle',\n icon: [512, 512, [], \"f822\", \"M511.54 159.85C500.76 104.56 445.67 0 314.48 0c-91.79 0-169.8 64.06-189.75 155.79-5 22.84-6.45 50.38-4 77.41l-67.38 67.36a16 16 0 0 0 0 22.63l22.59 22.6-66.6 66.6a31.93 31.93 0 0 0 0 45.13l45.13 45.13a31.92 31.92 0 0 0 45.14 0l66.6-66.6 22.6 22.6a16 16 0 0 0 22.57 0l67.7-67.7a16 16 0 0 0 0-22.57l-14.46-14.46 13.73-13.71c6-6 5.75-15.69.32-22.28-20.12-24.4-28.54-55.28-23.66-87.09 7.51-49.26 45.45-90.64 98.56-100.74a103.34 103.34 0 0 1 19.31-1.8 113.08 113.08 0 0 1 45.73 9.82c21 9.37 38.28 23 51 40.36a23.24 23.24 0 0 0 18.76 9.6 23.64 23.64 0 0 0 23.13-28.23zM200.05 402.29l-33.88-33.88-89.11 89.1-22.57-22.57 89.2-89-34.16-34.16 22.63-22.63 90.51 90.51-22.62 22.64zM372.89 80.43a151.56 151.56 0 0 0-28.24 2.64c-71.16 13.52-126.2 70-136.95 140.52a157.39 157.39 0 0 0 9.56 83l-44-44.49-2.9-16.75c-4.46-25.8-4-55.46 1.17-79.33 15.12-69.53 73.91-118.08 143-118.09 47.72 0 80.84 17.48 103.57 39.16a160.12 160.12 0 0 0-45.17-6.61z\"]\n};\nvar faSigma = {\n prefix: 'far',\n iconName: 'sigma',\n icon: [320, 512, [], \"f68b\", \"M287.96 448H42.36a42.314 42.314 0 0 1-38.92-25.62C-3.26 406.8 0 388.8 11.7 376.52L126.63 256 11.7 135.48C0 123.2-3.26 105.2 3.44 89.62A42.325 42.325 0 0 1 42.36 64h245.6C305.65 64 320 78.33 320 96v48c0 8.84-7.17 16-16.02 16h-16.02c-8.85 0-16.02-7.16-16.02-16v-32H55.66l116.27 121.94c11.79 12.36 11.79 31.78 0 44.14L55.66 400h216.28v-32c0-8.84 7.17-16 16.02-16h16.02c8.85 0 16.02 7.16 16.02 16v48c0 17.67-14.35 32-32.04 32z\"]\n};\nvar faSign = {\n prefix: 'far',\n iconName: 'sign',\n icon: [512, 512, [], \"f4d9\", \"M496 64H112V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v16c0 8.8 7.2 16 16 16h48v384c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V112h80v48c-17.7 0-32 14.3-32 32v160c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32v-48h48c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zm-64 272H208V208h224v128zm-16-176H224v-48h192v48z\"]\n};\nvar faSignIn = {\n prefix: 'far',\n iconName: 'sign-in',\n icon: [512, 512, [], \"f090\", \"M416 448h-84c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h84c26.5 0 48-21.5 48-48V160c0-26.5-21.5-48-48-48h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zM167.1 83.5l-19.6 19.6c-4.8 4.8-4.7 12.5.2 17.1L260.8 230H12c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h248.8L147.7 391.7c-4.8 4.7-4.9 12.4-.2 17.1l19.6 19.6c4.7 4.7 12.3 4.7 17 0l164.4-164c4.7-4.7 4.7-12.3 0-17l-164.4-164c-4.7-4.6-12.3-4.6-17 .1z\"]\n};\nvar faSignInAlt = {\n prefix: 'far',\n iconName: 'sign-in-alt',\n icon: [512, 512, [], \"f2f6\", \"M144 112v51.6H48c-26.5 0-48 21.5-48 48v88.6c0 26.5 21.5 48 48 48h96v51.6c0 42.6 51.7 64.2 81.9 33.9l144-143.9c18.7-18.7 18.7-49.1 0-67.9l-144-144C195.8 48 144 69.3 144 112zm192 144L192 400v-99.7H48v-88.6h144V112l144 144zm80 192h-84c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h84c26.5 0 48-21.5 48-48V160c0-26.5-21.5-48-48-48h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96z\"]\n};\nvar faSignLanguage = {\n prefix: 'far',\n iconName: 'sign-language',\n icon: [448, 512, [], \"f2a7\", \"M448 255.1l-4.3-133.4c-1.6-49.9-61.8-73.6-96.5-38.3l-46.7-61.2C289.7 8.1 273.4 0 255.7 0c-15.7 0-29.9 6.5-40.1 16.8-16.2-5.3-35.7-3.3-51.6 8.8-15.4 11.9-23.2 30.4-22 49.2-29.5 17.4-36.5 56.4-17 83.3-22.2 18.8-26.4 51.1-11 74.9H81c-34.5 0-60.5 30.7-56 64.7C10.1 307.8.4 324.7 0 344c-.4 19.9 9.5 37.4 24.5 47.8-4.9 34.3 21.2 63.8 53.9 65.2 1 30.5 25.8 55.1 56.5 55.1H227c11.6 0 23.1-1.4 34.4-4.1l69-16.6c27.8-6.7 47.2-31.8 47.2-60.3v-87.7l47.1-37.4c15.2-12.3 23.9-31.2 23.3-50.9zM182.5 114.2L248 200l-11-8.1c-11.1-8.3-25.8-10.1-38.5-5l-40-52.5c-13.4-17.6 11.6-36.5 24-20.2zm-8.7 78.1l6.7 8.8c-10.2 14.4-10 33.8 0 47.9h-2.9l-28.5-37.3c-12.9-17 11.9-36.2 24.7-19.4zM336.5 431c0 9.8-6.5 18.2-15.8 20.5l-69 16.6c-8.1 2-16.5 2.9-24.8 2.9h-92.1c-20.9 0-20.2-32 .5-32h53.4c5 0 9-4 9-9v-5c0-5-4-9-9-9H80.9c-20.7 0-21.4-32-.5-32h108.4c5 0 9-4 9-9v-5c0-5-4-9-9-9H57c-20.7 0-21.4-32-.5-32h132.2c5 0 9-4 9-9v-5c0-5-4-9-9-9H81.5c-20.7 0-21.4-32-.5-32h144.5c5 0 9-4 9-9 0-2.8-1.3-5.5-3.6-7.2L204.2 238c-16.9-12.6 1.7-38.1 18.1-26L328 290.5c5.3 3.9 8.5 10.3 8.5 17zm62.6-157.2l-37.9 30.1c-1.1-13.3-7.8-25.6-18.4-33.5l-88.3-65.6c2.6.5 5.3-.1 7.4-1.8l3.9-3.1c3.8-3 4.5-8.6 1.6-12.5l-81-106.1c-13.4-17.6 11.6-36.4 24-20.2l81.2 106.5c1.5 1.9 3.6 3.2 6 3.5s4.8-.4 6.7-1.9l3.9-3.1c3.8-3 4.5-8.6 1.6-12.5l-65.9-86.4c-13.4-17.6 11.6-36.4 24-20.2l88.8 116.4c5.3 7 16.4 3 16.2-5.7l-1.1-33.6c-.7-21.7 30.3-21.8 31-1.1l4.3 133.4c.1 6.8-2.9 13.3-8 17.4z\"]\n};\nvar faSignOut = {\n prefix: 'far',\n iconName: 'sign-out',\n icon: [512, 512, [], \"f08b\", \"M96 64h84c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H96c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h84c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H96c-53 0-96-43-96-96V160c0-53 43-96 96-96zm231.1 19.5l-19.6 19.6c-4.8 4.8-4.7 12.5.2 17.1L420.8 230H172c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h248.8L307.7 391.7c-4.8 4.7-4.9 12.4-.2 17.1l19.6 19.6c4.7 4.7 12.3 4.7 17 0l164.4-164c4.7-4.7 4.7-12.3 0-17l-164.4-164c-4.7-4.6-12.3-4.6-17 .1z\"]\n};\nvar faSignOutAlt = {\n prefix: 'far',\n iconName: 'sign-out-alt',\n icon: [512, 512, [], \"f2f5\", \"M272 112v51.6h-96c-26.5 0-48 21.5-48 48v88.6c0 26.5 21.5 48 48 48h96v51.6c0 42.6 51.7 64.2 81.9 33.9l144-143.9c18.7-18.7 18.7-49.1 0-67.9l-144-144C323.8 48 272 69.3 272 112zm192 144L320 400v-99.7H176v-88.6h144V112l144 144zM96 64h84c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H96c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h84c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H96c-53 0-96-43-96-96V160c0-53 43-96 96-96z\"]\n};\nvar faSignal = {\n prefix: 'far',\n iconName: 'signal',\n icon: [640, 512, [], \"f012\", \"M208 288h-32c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM80 384H48c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-32c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-32c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM592 0h-32c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignal1 = {\n prefix: 'far',\n iconName: 'signal-1',\n icon: [640, 512, [], \"f68c\", \"M80 384H48c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignal2 = {\n prefix: 'far',\n iconName: 'signal-2',\n icon: [640, 512, [], \"f68d\", \"M208 288h-32c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM80 384H48c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignal3 = {\n prefix: 'far',\n iconName: 'signal-3',\n icon: [640, 512, [], \"f68e\", \"M208 288h-32c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM80 384H48c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-32c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignal4 = {\n prefix: 'far',\n iconName: 'signal-4',\n icon: [640, 512, [], \"f68f\", \"M208 288h-32c-4.42 0-8 3.58-8 8v208c0 4.42 3.58 8 8 8h32c4.42 0 8-3.58 8-8V296c0-4.42-3.58-8-8-8zM80 384H48c-4.42 0-8 3.58-8 8v112c0 4.42 3.58 8 8 8h32c4.42 0 8-3.58 8-8V392c0-4.42-3.58-8-8-8zm256-192h-32c-4.42 0-8 3.58-8 8v304c0 4.42 3.58 8 8 8h32c4.42 0 8-3.58 8-8V200c0-4.42-3.58-8-8-8zm128-96h-32c-4.42 0-8 3.58-8 8v400c0 4.42 3.58 8 8 8h32c4.42 0 8-3.58 8-8V104c0-4.42-3.58-8-8-8z\"]\n};\nvar faSignalAlt = {\n prefix: 'far',\n iconName: 'signal-alt',\n icon: [640, 512, [], \"f690\", \"M576 48v416h-32V48h32M416 176v288h-32V176h32M256 304v160h-32V304h32M96 400v64H64v-64h32M592 0h-64c-17.67 0-32 14.33-32 32v448c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zM432 128h-64c-17.67 0-32 14.33-32 32v320c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM272 256h-64c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V288c0-17.67-14.33-32-32-32zm-160 96H48c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSignalAlt1 = {\n prefix: 'far',\n iconName: 'signal-alt-1',\n icon: [640, 512, [], \"f691\", \"M96 400v64H64v-64h32m16-48H48c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSignalAlt2 = {\n prefix: 'far',\n iconName: 'signal-alt-2',\n icon: [640, 512, [], \"f692\", \"M256 304v160h-32V304h32M96 400v64H64v-64h32m176-144h-64c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V288c0-17.67-14.33-32-32-32zm-160 96H48c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSignalAlt3 = {\n prefix: 'far',\n iconName: 'signal-alt-3',\n icon: [640, 512, [], \"f693\", \"M416 176v288h-32V176h32M256 304v160h-32V304h32M96 400v64H64v-64h32m336-272h-64c-17.67 0-32 14.33-32 32v320c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM272 256h-64c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V288c0-17.67-14.33-32-32-32zm-160 96H48c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSignalAltSlash = {\n prefix: 'far',\n iconName: 'signal-alt-slash',\n icon: [640, 512, [], \"f694\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM544 48h32v316.75l48 37.53V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v270.21l48 37.53V48zM384 176h32v63.66l48 37.53V160c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v17.12l48 37.53V176zM112 352H48c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM96 464H64v-64h32v64zm320 0h-32v-66.58l-48-37.53V480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-20.03l-48-37.53V464zM176 288v192c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V334.88l-99.89-78.09c-15.75 2-28.11 14.92-28.11 31.21zm48 16h32v160h-32V304z\"]\n};\nvar faSignalSlash = {\n prefix: 'far',\n iconName: 'signal-slash',\n icon: [640, 512, [], \"f695\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM80 384H48c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm400-272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v127.66l64 50.04V112zm128-96c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v323.73l64 50.04V16zM416 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-23.52l-64-50.04V496zm-128 0c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V372.41l-64-50.04V496zm-80-208h-32c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignalStream = {\n prefix: 'far',\n iconName: 'signal-stream',\n icon: [576, 512, [], \"f8dd\", \"M186.87 157.25l-11.37-11.11a16.44 16.44 0 0 0-24 1.3 168.83 168.83 0 0 0 0 217.12 16.44 16.44 0 0 0 24 1.3l11.37-11.11a15.14 15.14 0 0 0 1.29-20.53 122.72 122.72 0 0 1 0-156.44 15.15 15.15 0 0 0-1.29-20.53zM107.33 79.6L96 68.53a16.41 16.41 0 0 0-23.56 1C25.59 121 0 186.58 0 256s25.59 135 72.44 186.52a16.41 16.41 0 0 0 23.56 1l11.33-11.07c6.11-6 6.06-15.39.36-21.71a230.28 230.28 0 0 1 0-309.37c5.7-6.37 5.75-15.81-.36-21.77zm396.23-10.12a16.41 16.41 0 0 0-23.56-1L468.67 79.6c-6.11 6-6.06 15.39-.36 21.72a230.28 230.28 0 0 1 0 309.37c-5.7 6.32-5.75 15.75.36 21.71L480 443.47a16.41 16.41 0 0 0 23.56-1C550.41 391 576 325.42 576 256s-25.59-135-72.44-186.52zM288 200a56 56 0 1 0 56 56 56 56 0 0 0-56-56zm112.5-53.86l-11.37 11.11a15.15 15.15 0 0 0-1.29 20.53 122.72 122.72 0 0 1 0 156.44 15.15 15.15 0 0 0 1.29 20.53l11.37 11.11a16.44 16.44 0 0 0 24-1.3 168.83 168.83 0 0 0 0-217.12 16.44 16.44 0 0 0-24-1.3z\"]\n};\nvar faSignature = {\n prefix: 'far',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M637.2 199.8c-.9-.9-3-2.5-5.7-2.2-36.2 2.4-84.6 29.9-123.4 51.9-16 9.1-29.8 16.9-41.1 22-30.7 14-57.1 26.2-81.4 26.2-10.6 0-18.5-3-23.8-9.3-9.5-11-9.3-29.7-6.1-54.3 3.7-28.4.1-50.5-9.7-61.3-6-6.5-14.5-9.3-25.5-8.6-27.8 1.6-76.6 39-168.7 129.1l-27.4 26.9L181 175.9c13.2-33.5 4-70.1-23.3-93.1-21.8-18.4-58.8-29.2-97.7-4L4 117.1c-4 2.6-5.1 7.8-2.7 11.6L18.9 157c1.2 1.9 3 3.2 5.2 3.7 2.1.4 4.3.1 6.2-1.1L89.6 119c5.4-3.4 11.2-5.1 17-5.1 7 0 13.9 2.5 19.7 7.4 10.6 9 14.2 23.1 9.1 36.1L34.6 413.6c-2.9 7.3-1.7 17.3 3 24.3 3.1 4.6 9 10.1 19.9 10.1 6.6 0 12.8-2.6 17.4-7.3 43.5-44.2 158.5-157.2 217.3-205l14.8-12-1.5 19.2c-2.1 27.9-2.5 57.2 19 81.2 14.1 15.7 34.7 23.7 61.2 23.7 34.8 0 67.2-14.9 101.6-30.6 10.5-4.8 25-13.4 40.3-22.5 35.2-20.9 75.1-44.5 104.4-47 4.7-.4 8.1-3.8 8.1-8.2V206c-.1-2.3-1.1-4.6-2.9-6.2z\"]\n};\nvar faSimCard = {\n prefix: 'far',\n iconName: 'sim-card',\n icon: [448, 512, [], \"f7c4\", \"M0 64v384c0 35.3 28.7 64 64 64h320c35.3 0 64-28.7 64-64V128L320 0H64C28.7 0 0 28.7 0 64zm48 0c0-8.8 7.2-16 16-16h236.1l99.9 99.9V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V64zm304 288h-64v64h32c17.7 0 32-14.3 32-32v-32zM192 224h64v-64h-64v64zm64 128h-64v64h64v-64zm32-128h64v-32c0-17.7-14.3-32-32-32h-32v64zM160 352H96v32c0 17.7 14.3 32 32 32h32v-64zM96 192v32h64v-64h-32c-17.7 0-32 14.3-32 32zm256 64H96v64h256v-64z\"]\n};\nvar faSink = {\n prefix: 'far',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H280V88a40,40,0,0,1,44.17-39.79C345,50.33,360,69.43,360,90.35V112a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V88A88.09,88.09,0,0,0,311.22.43C265.5,4.88,232,46,232,91.9V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v16a16,16,0,0,0,16,16H32v80a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V336h16a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288ZM432,416a48.05,48.05,0,0,1-48,48H128a48.05,48.05,0,0,1-48-48V336H432Z\"]\n};\nvar faSiren = {\n prefix: 'far',\n iconName: 'siren',\n icon: [448, 512, [], \"e02d\", \"M416,336,393.88,127.07A72,72,0,0,0,322.44,64H125.56a72,72,0,0,0-71.44,63.07L32,336h0A32,32,0,0,0,0,368v80a32,32,0,0,0,32,32H416a32,32,0,0,0,32-32V368A32,32,0,0,0,416,336ZM101.75,133a24,24,0,0,1,23.81-21H322.44a24,24,0,0,1,23.82,21l21.37,203H156.09l19.84-180.82a8,8,0,0,0-6.87-9l-15.86-2.13a7.79,7.79,0,0,0-1.07-.07,8,8,0,0,0-7.92,6.94L123.8,336H80.37ZM400,432H48V384H400Z\"]\n};\nvar faSirenOn = {\n prefix: 'far',\n iconName: 'siren-on',\n icon: [640, 512, [], \"e02e\", \"M90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM512,336,489.88,127.07A72,72,0,0,0,418.44,64H221.56a72,72,0,0,0-71.44,63.07L128,336a32,32,0,0,0-32,32v80a32,32,0,0,0,32,32H512a32,32,0,0,0,32-32V368A32,32,0,0,0,512,336ZM197.75,133a24,24,0,0,1,23.81-21H418.44a24,24,0,0,1,23.82,21l21.37,203H252.09l19.84-180.82a8,8,0,0,0-6.87-9l-15.86-2.13a7.79,7.79,0,0,0-1.07-.07,8,8,0,0,0-7.92,6.94L219.8,336H176.37ZM496,432H144V384H496Z\"]\n};\nvar faSitemap = {\n prefix: 'far',\n iconName: 'sitemap',\n icon: [640, 512, [], \"f0e8\", \"M104 272h192v48h48v-48h192v48h48v-57.59c0-21.17-17.22-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 8.84 3.58 16.84 9.37 22.63S247.16 160 256 160h40v64H94.41C73.22 224 56 241.23 56 262.41V320h48v-48zm168-160V48h96v64h-96zm336 240h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-16 112h-64v-64h64v64zM368 352h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-16 112h-64v-64h64v64zM128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-16 112H48v-64h64v64z\"]\n};\nvar faSkating = {\n prefix: 'far',\n iconName: 'skating',\n icon: [448, 512, [], \"f7c5\", \"M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zM152 144h103.1l-36.5 31.3c-11.8 10.1-18.9 24.8-19.5 40.4-.6 15.5 5.4 30.8 17.2 42.5l87.7 80V424c0 13.2 10.7 24 24 24s24-10.8 24-24v-89.4c0-10.5-4.3-20.8-12.5-29l-72.8-66.3 88.6-88.6c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.7-29.6-19.7H152c-13.2 0-24 10.8-24 24s10.7 23.9 24 23.9zm35.5 129.4L85.9 375c-9.4 9.4-9.4 24.6 0 33.9 4.7 4.7 10.8 7 17 7s12.3-2.3 17-7L222 306.7l-28.4-25.9c-2.3-2.3-4-4.9-6.1-7.4zM400 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.2-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.3 9.4 21.7 14 33.9 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.3-6.3-22.6 0z\"]\n};\nvar faSkeleton = {\n prefix: 'far',\n iconName: 'skeleton',\n icon: [512, 512, [], \"f620\", \"M496 160H280v-48h152c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H280V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48H80c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h152v48H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h216v48H80c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h152v48H112c-44.18 0-80 35.82-80 80s35.82 80 80 80 80-35.82 80-80c0-11.39-2.46-22.19-6.75-32h141.51c-4.29 9.81-6.75 20.61-6.75 32 0 44.18 35.82 80 80 80s80-35.82 80-80-35.82-80-80-80H280v-48h152c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H280v-48h216c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM144 432c0 17.64-14.36 32-32 32s-32-14.36-32-32 14.36-32 32-32 32 14.36 32 32zm288 0c0 17.64-14.36 32-32 32s-32-14.36-32-32 14.36-32 32-32 32 14.36 32 32z\"]\n};\nvar faSkiJump = {\n prefix: 'far',\n iconName: 'ski-jump',\n icon: [512, 512, [], \"f7c7\", \"M400 96c26.5 0 48-21.5 48-48S426.5 0 400 0s-48 21.5-48 48 21.5 48 48 48zm110.7 94.1c-2.2-13.1-14.8-22-27.7-19.7-13.1 2.2-21.9 14.6-19.7 27.7 3.3 19.3-6 38.9-22.1 48.1L169 386.4l50.5-122.6c.4-1.1 1.2-2.1 2-2.9l121.2-110.3c9.2-9.2 11.9-22.9 6.9-34.9S333 96 320 96H136c-13.3 0-24 10.8-24 24s10.8 24 24 24h113.7L181 233.4c-1.3 1.6-1.7 2-5.9 12.1l-53.3 129.4c-4.8 11.5.4 24.3 11.2 30.1L13 466.7c-11.8 6-16.4 20.5-10.3 32.3 4.3 8.3 12.7 13 21.4 13 3.7 0 7.4-.9 10.9-2.7l429.2-220.9c34.4-19.7 53.1-59.2 46.5-98.3z\"]\n};\nvar faSkiLift = {\n prefix: 'far',\n iconName: 'ski-lift',\n icon: [512, 512, [], \"f7c8\", \"M112 128c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zM256 0h-32v216l32-8V0zm-64.4 381.4c12.6-4.2 19.4-17.8 15.2-30.4-4.2-12.6-17.7-19.5-30.4-15.2L158 342c-19 6.4-40-2.5-48.7-20.7l-63.6-133c-5.7-11.9-20-17-32-11.3-12 5.7-17 20-11.3 32L66 342c15 31.2 46.4 50 79.5 50 12.6 0 17-.9 46.1-10.6zM488 288c-13.2 0-24 10.8-24 24 0 13.9-8.8 26.5-21.8 31.3L312 391.5V256c0-15.8-15-27-29.8-23.3l-93.5 23.4-39.7-85.5c-7.4-16-26.3-23.1-42.5-15.6-12.6 5.8-24.1 24.2-15.7 42.5l47.3 100.6c4.8 10.5 16.5 16.1 27.6 13.2l98.2-24.5v122.5l-152.3 56.3c-12.4 4.6-18.8 18.4-14.2 30.8 3.6 9.7 12.8 15.7 22.5 15.7 2.8 0 5.6-.5 8.3-1.5l330.5-122.1c31.8-11.8 53.2-42.5 53.2-76.4.1-13.3-10.7-24.1-23.9-24.1z\"]\n};\nvar faSkiing = {\n prefix: 'far',\n iconName: 'skiing',\n icon: [512, 512, [], \"f7c9\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm-312-4.4l-11.5 22.5c14.4 7.3 31.1 4.9 42.8-4.8L284 175.5l61.1-24.4 14.1 42.3c3.4 10.1 10.5 18.3 20.1 23.1l58.1 29c11.9 6 26.3 1.1 32.2-10.7 5.9-11.9 1.1-26.3-10.8-32.2L403.6 175l-18.1-54.4c-4.9-14.6-15.6-26.6-29.6-33.1-14-6.5-30.1-6.9-44.3-1.2l-74.5 29.8-72.2-35.8c.3-14.5-7.2-28.5-20.9-35.6l-11.1 21.7h-.3l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4L120 91.6zM505 452c-9.4-9.4-24.6-9.3-33.9 0-12.1 12.1-30.7 15.3-45.1 8.7l-143-73.9 49.7-74.6c10.6-15.8 8.5-37.1-5-50.5l-57.2-57.2-76.9-38.1c-1.6 16.6 3.8 33 15.7 44.9l79.8 79.8-49.1 73.6-205-106c-11.9-6.1-26.3-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46.1-9 63-26 9.3-9.3 9.3-24.5 0-33.9z\"]\n};\nvar faSkiingNordic = {\n prefix: 'far',\n iconName: 'skiing-nordic',\n icon: [576, 512, [], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5l28.2-197.4c5.5-4.4 9.3-10.9 9.3-18.5 0-13.2-10.8-24-24-24h-49l-28.2-57.7c-11.3-23.1-32.4-40.6-56.6-46.7l-71.4-21.2c-25.6-6.2-52.6-.4-73.7 15.8l-39.7 30.4c-5.1 3.9-8.4 9.5-9.2 15.9-.8 5.8.8 11.5 4.1 16.4L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-254.6 48H185.7l51.4-108.5-17.4-10.3c-8.6-5.1-15.8-11.5-22-18.8L132.6 464H99.5l56-279.8c1-.6 2.2-.8 3.1-1.5l39.7-30.4c7.1-5.5 15.9-8.5 24.4-8.5 2.6 0 5.2.3 7.6.9l23.8 7-41 95.7c-11 25.8-1.2 56 23 70.3l90.5 53.4-29.2 92.9zm104.7 0h-54.4l26.9-85.8c4.8-17.1-2.6-35.8-18.2-45.2l-67.1-39.6L329.8 192l28.2 57.6c6.7 13.6 20.8 22.4 35.9 22.4h35.5l-27.3 192z\"]\n};\nvar faSkull = {\n prefix: 'far',\n iconName: 'skull',\n icon: [512, 512, [], \"f54c\", \"M344 200c-30.9 0-56 25.1-56 56s25.1 56 56 56 56-25.1 56-56-25.1-56-56-56zm-176 0c-30.9 0-56 25.1-56 56s25.1 56 56 56 56-25.1 56-56-25.1-56-56-56zM256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.7 6.9 15.2 18.1 13.5 29.9l-6.8 47.9c-2.7 19.3 12.2 36.5 31.7 36.5h246.3c19.5 0 34.4-17.2 31.7-36.5l-6.8-47.9c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm133.7 358.6c-24.6 17.5-37.3 46.5-33.2 75.7l4.2 29.7H320v-40c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v40h-64v-40c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v40h-40.7l4.2-29.7c4.1-29.2-8.6-58.2-33.2-75.7C75.1 324.9 48 275.9 48 224c0-97 93.3-176 208-176s208 79 208 176c0 51.9-27.1 100.9-74.3 134.6z\"]\n};\nvar faSkullCow = {\n prefix: 'far',\n iconName: 'skull-cow',\n icon: [640, 512, [], \"f8de\", \"M256,224.09a32,32,0,1,0,32,32A32,32,0,0,0,256,224.09Zm128,0a32,32,0,1,0,32,32A32,32,0,0,0,384,224.09ZM603.26,4.57a16,16,0,0,0-26.21,17c6.07,16.11,19.6,67.57,2.88,91.67C573.13,123,561.4,128,544,128l-73.1-.12a63.75,63.75,0,0,0-55-31.71H224a63.74,63.74,0,0,0-55,31.83H96C78.63,128,66.9,123,60.1,113.26,43.35,89.2,56.49,38.91,63,21.56a16,16,0,0,0-26.19-17C13.05,27.8,0,60.15,0,95.67c0,70.46,57.43,128.26,128,128.26H160v80.13a63.82,63.82,0,0,0,54.6,63l34.73,121.69A32,32,0,0,0,280.07,512h79.72a32,32,0,0,0,30.77-23.19l34.83-121.72a63.81,63.81,0,0,0,54.57-63V224l32-.08c70.59,0,128-57.81,128-128.26C640,60.16,627,27.81,603.26,4.57ZM432,304.06a15.78,15.78,0,0,1-13.64,15.57l-30.58,4.55-8.5,29.71L347.73,464H292.14L260.72,353.93l-8.5-29.76-30.61-4.54A15.79,15.79,0,0,1,208,304.06V160.11a16,16,0,0,1,16-16H416a16,16,0,0,1,16,16Z\"]\n};\nvar faSkullCrossbones = {\n prefix: 'far',\n iconName: 'skull-crossbones',\n icon: [448, 512, [], \"f714\", \"M184 160c13.24 0 24-10.76 24-24s-10.76-24-24-24-24 10.76-24 24 10.76 24 24 24zm80 0c13.24 0 24-10.76 24-24s-10.76-24-24-24-24 10.76-24 24 10.76 24 24 24zm-128.15 68.54l-7.33 34.61c-2.67 12.62 5.42 24.85 16.45 24.85h158.08c11.03 0 19.12-12.23 16.45-24.85l-7.33-34.61C345.91 205.11 368 169.01 368 128 368 57.31 303.53 0 224 0S80 57.31 80 128c0 41.01 22.09 77.11 55.85 100.54zM224 48c52.94 0 96 35.89 96 80 0 23.3-12.84 45.57-35.21 61.1l-26.2 18.18 6.61 31.2.32 1.52h-83.03l.32-1.52 6.61-31.2-26.2-18.18C140.84 173.57 128 151.3 128 128c0-44.11 43.07-80 96-80zm214.7 418.95L284.31 400l154.39-66.95c8.03-3.71 11.53-13.21 7.82-21.24l-6.71-14.52c-3.71-8.02-13.21-11.52-21.23-7.82L224 373.85 29.42 289.48c-8.02-3.7-17.53-.2-21.23 7.82l-6.71 14.52c-3.71 8.02-.21 17.53 7.82 21.24L163.69 400 9.3 466.95c-8.03 3.7-11.53 13.21-7.82 21.24l6.71 14.52c3.71 8.02 13.21 11.52 21.23 7.82L224 426.15l194.58 84.37c8.02 3.7 17.53.2 21.23-7.82l6.71-14.52c3.71-8.02.21-17.53-7.82-21.23z\"]\n};\nvar faSlash = {\n prefix: 'far',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M604 508.49L6.01 40.98c-6.9-5.52-8.02-15.59-2.49-22.49L13.51 6C19.03-.9 29.1-2.01 36 3.51l598 467.51c6.9 5.52 8.02 15.59 2.49 22.49l-10 12.49c-5.52 6.9-15.59 8.01-22.49 2.49z\"]\n};\nvar faSledding = {\n prefix: 'far',\n iconName: 'sledding',\n icon: [512, 512, [], \"f7cb\", \"M505 420c-9.4-9.4-24.6-9.3-33.9 0-12.1 12.1-30.7 15.3-45.1 8.7l-51-26.4c5.4-4.4 9.1-10.8 9.1-18.3v-80c0-22.1-17.9-40-40-40h-71.5l67.7-67.7c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H152c-13.3 0-24 10.8-24 24s10.8 24 24 24h107l-100 85.8c-6.2 5.3-9.3 13.4-8.2 21.5.2 1.5 1.2 2.6 1.7 4L35 226.7c-11.9-6.1-26.3-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46.1-9 63-26 9.3-9.3 9.3-24.5 0-33.9zm-169-37.7L200.1 312H336v70.3zM400 128c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48z\"]\n};\nvar faSleigh = {\n prefix: 'far',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H440v-48c66.2 0 120-53.8 120-120V144h32c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16H432c-8.8 0-16 7.2-16 16v72c0 65.3-134.4 52.3-181.2-42.6C201.5 73.9 134.6 32 60.2 32H16C7.2 32 0 39.2 0 48v16c0 8.8 7.2 16 16 16h16v152c0 66.9 43.8 123.3 104 143.5V432H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM80 232V81.4c47.9 6.5 89.6 36.4 111.7 81.2C260.3 301.6 464 308.4 464 184v-40h48v120c0 39.7-32.3 72-72 72H184c-57.3 0-104-46.7-104-104zm312 200H184v-48h208v48z\"]\n};\nvar faSlidersH = {\n prefix: 'far',\n iconName: 'sliders-h',\n icon: [512, 512, [], \"f1de\", \"M496 72H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v24H16C7.2 72 0 79.2 0 88v16c0 8.8 7.2 16 16 16h208v24c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-24h208c8.8 0 16-7.2 16-16V88c0-8.8-7.2-16-16-16zm0 320H160v-24c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v24H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h80v24c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-24h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm0-160h-80v-24c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v24H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336v24c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-24h80c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16z\"]\n};\nvar faSlidersHSquare = {\n prefix: 'far',\n iconName: 'sliders-h-square',\n icon: [448, 512, [], \"f3f0\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6zm-42-244v8c0 6.6-5.4 12-12 12H192v24c0 13.3-10.7 24-24 24h-16c-13.3 0-24-10.7-24-24v-24h-20c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h20v-24c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v24h148c6.6 0 12 5.4 12 12zm0 128v8c0 6.6-5.4 12-12 12h-20v24c0 13.3-10.7 24-24 24h-16c-13.3 0-24-10.7-24-24v-24H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h148v-24c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v24h20c6.6 0 12 5.4 12 12z\"]\n};\nvar faSlidersV = {\n prefix: 'far',\n iconName: 'sliders-v',\n icon: [448, 512, [], \"f3f1\", \"M272 352h-24V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v336h-24c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h24v80c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-80h24c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM112 96H88V16c0-8.8-7.2-16-16-16H56c-8.8 0-16 7.2-16 16v80H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h24v336c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V160h24c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm320 128h-24V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v208h-24c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h24v208c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V288h24c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faSlidersVSquare = {\n prefix: 'far',\n iconName: 'sliders-v-square',\n icon: [448, 512, [], \"f3f2\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6zM224 184v16c0 13.3-10.7 24-24 24h-24v148c0 6.6-5.4 12-12 12h-8c-6.6 0-12-5.4-12-12V224h-24c-13.3 0-24-10.7-24-24v-16c0-13.3 10.7-24 24-24h24v-20c0-6.6 5.4-12 12-12h8c6.6 0 12 5.4 12 12v20h24c13.3 0 24 10.7 24 24zm128 128v16c0 13.3-10.7 24-24 24h-24v20c0 6.6-5.4 12-12 12h-8c-6.6 0-12-5.4-12-12v-20h-24c-13.3 0-24-10.7-24-24v-16c0-13.3 10.7-24 24-24h24V140c0-6.6 5.4-12 12-12h8c6.6 0 12 5.4 12 12v148h24c13.3 0 24 10.7 24 24z\"]\n};\nvar faSmile = {\n prefix: 'far',\n iconName: 'smile',\n icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z\"]\n};\nvar faSmileBeam = {\n prefix: 'far',\n iconName: 'smile-beam',\n icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm84-143.4c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.6-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.2-8.4-25.3-7.1-33.8 3.1zM136.5 211c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.4 1.1 7.4-.5 9.3-3.7l9.5-17zM328 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4z\"]\n};\nvar faSmilePlus = {\n prefix: 'far',\n iconName: 'smile-plus',\n icon: [640, 512, [], \"f5b9\", \"M208 96C93.1 96 0 189.1 0 304s93.1 208 208 208 208-93.1 208-208S322.9 96 208 96zm0 368c-88.2 0-160-71.8-160-160s71.8-160 160-160 160 71.8 160 160-71.8 160-160 160zm61.8-124.2c-30.6 35.8-92.9 35.8-123.5 0-8.7-10.1-23.8-11.2-33.8-2.7-10.1 8.6-11.2 23.8-2.7 33.8 24.4 28.6 60.2 45 98.2 45s73.8-16.4 98.2-45c8.6-10.1 7.4-25.2-2.7-33.8-10-8.5-25.1-7.4-33.7 2.7zM144 288c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zM624 88h-72V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v72h-72c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h72v72c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-72h72c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16z\"]\n};\nvar faSmileWink = {\n prefix: 'far',\n iconName: 'smile-wink',\n icon: [496, 512, [], \"f4da\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm117.8-146.4c-10.2-8.5-25.3-7.1-33.8 3.1-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-60c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1z\"]\n};\nvar faSmog = {\n prefix: 'far',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h113c28 21 60.7 32 95 32s67.1-11 95-32h65c70.6 0 128-57.4 128-128S582.6 32 512 32c-17.8 0-35.4 3.8-51.7 11C430.8 15.5 392.2 0 352 0c-40.1 0-77.7 14.9-106.9 41.5C218.4 15.2 182.3 0 144 0 64.6 0 0 64.6 0 144s64.6 144 144 144zm0-240c25.4 0 49.3 9.8 67.3 27.7l32.4 32L277.4 77c20.5-18.7 47-29 74.6-29 27.9 0 54.7 10.7 75.6 30.1l23.2 21.7 29-12.9c10.3-4.6 21.1-6.9 32.2-6.9 44.1 0 80 35.9 80 80s-35.9 80-80 80h-81l-12.8 9.6C398.4 264.5 376.1 272 352 272s-46.4-7.5-66.2-22.4L273 240H144c-52.9 0-96-43.1-96-96s43.1-96 96-96z\"]\n};\nvar faSmoke = {\n prefix: 'far',\n iconName: 'smoke',\n icon: [640, 512, [], \"f760\", \"M640 248c0-83.8-68.2-152-152-152-14.4 0-28.4 2.7-42 6.7C418.2 60.3 370.5 32 316 32c-19.8 0-39.3 3.9-58.1 11.7C229.6 15.7 191.9 0 152 0 68.2 0 0 68.2 0 152c0 37.8 14.3 72 37.4 98.5C14.4 278.2 0 313.3 0 352c0 88.2 71.8 160 160 160h352c70.6 0 128-57.4 128-128 0-23.8-7-45.9-18.4-65.1 11.5-21.1 18.4-45.1 18.4-70.9zm-48 0c0 11.3-2.1 22.1-5.5 32.3-21-15.2-46.6-24.3-74.5-24.3-21.6 0-42.4 5.4-61.1 15.9C423.8 241.5 385.3 224 344 224c-24.1 0-47.3 6.1-68.4 17.7-6.9-7.3-14.6-13.6-22.7-19.4C268.7 194.8 298 176 332 176c15.6 0 30.8 4.2 45.2 12.5l17.7 10.1 12.9-15.8c20.1-24.6 49.3-38.8 80.2-38.8 57.3 0 104 46.7 104 104zM152 48c31.6 0 61.2 14.6 81.3 40l12.7 16.1 17.9-10C280.6 84.8 298.2 80 316 80c35.3 0 66.4 17.3 86.1 43.6-6.4 4.5-12.8 9.2-18.5 14.7C367 131.4 349.7 128 332 128c-52.8 0-98.3 29.6-122.1 72.9-16-5.4-32.7-8.9-49.9-8.9-32.3 0-62.3 9.8-87.5 26.3-15.2-18-24.5-41-24.5-66.3C48 94.7 94.7 48 152 48zm360 416H160c-61.8 0-112-50.2-112-112s50.2-112 112-112c36 0 70.1 17.7 91.2 47.4l14.5 20.4 19.8-15.4C302.8 279.1 323 272 344 272c33.1 0 63.4 17 81.2 45.4l14.6 23.4 21.1-17.7c10.4-8.7 27.6-19 51.1-19 44.1 0 80 35.9 80 80S556.1 464 512 464z\"]\n};\nvar faSmoking = {\n prefix: 'far',\n iconName: 'smoking',\n icon: [640, 512, [], \"f48d\", \"M503.7 141.6C479.8 125 464 99.3 464 70.3V8c0-4.4-3.6-8-8-8h-32c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zm49.6-54.5c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-32c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM632 352h-32c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zm-80 0h-32c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zm-96 0H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h408c13.2 0 24-10.8 24-24V376c0-13.2-10.8-24-24-24zm-24 112H224v-64h208v64z\"]\n};\nvar faSmokingBan = {\n prefix: 'far',\n iconName: 'smoking-ban',\n icon: [512, 512, [], \"f54d\", \"M112 320h106.2l-96-96H112c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16zm208.6-192c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 464c-114.7 0-208-93.3-208-208 0-48.7 17-93.5 45.1-129L385 418.9C349.5 447 304.7 464 256 464zm33.9-208H384v32h-62.1l-32-32zm129 129l-65-65H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H257.9L127 93.1C162.5 65 207.3 48 256 48c114.7 0 208 93.3 208 208 0 48.7-17 93.5-45.1 129z\"]\n};\nvar faSms = {\n prefix: 'far',\n iconName: 'sms',\n icon: [512, 512, [], \"f7cd\", \"M135.4 218.5c-1.4-1.2-2.1-2.5-2.1-3.8 0-3.1 4.5-6.6 10.4-6.6H156c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8h-12.2c-23.4 0-42.4 17.3-42.4 38.6 0 10.7 4.9 20.9 13.3 28.1l21.9 18.8c1.4 1.2 2.1 2.5 2.1 3.8 0 3.1-4.5 6.6-10.4 6.6H116c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h12.3c23.4 0 42.4-17.3 42.4-38.6 0-10.7-4.9-20.9-13.3-28.1l-22-18.8zM304 176h-16c-6.1 0-11.6 3.4-14.3 8.8L256 220.2l-17.7-35.4c-2.7-5.4-8.2-8.8-14.3-8.8h-16c-8.8 0-16 7.2-16 16v104c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-68.2l24.8 55.8c2.9 5.9 11.4 5.9 14.3 0l24.8-55.8V296c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V192c.1-8.8-7.1-16-15.9-16zm71.4 42.5c-1.4-1.2-2.1-2.5-2.1-3.8 0-3.1 4.5-6.6 10.4-6.6H396c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8h-12.3c-23.4 0-42.4 17.3-42.4 38.6 0 10.7 4.9 20.9 13.3 28.1l21.9 18.8c1.4 1.2 2.1 2.5 2.1 3.8 0 3.1-4.5 6.6-10.4 6.6H356c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h12.3c23.4 0 42.4-17.3 42.4-38.6 0-10.7-4.9-20.9-13.3-28.1l-22-18.8zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26C5.7 474.3 14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\"]\n};\nvar faSnake = {\n prefix: 'far',\n iconName: 'snake',\n icon: [640, 512, [], \"f716\", \"M512 248c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16zm99.76-83.09c-96.8-34.97-97.74-36.89-115.74-36.89-34.38 0-65.09 22.74-75.71 55.49C362.35 202.13 320 255.93 320 320v48c0 8.82-7.18 16-16 16s-16-7.18-16-16V149.7C288 94.31 246.48 0 144 0 64.56 0 0 64.47 0 144v159.53C0 367.85 11.45 431 34.04 491.23 38.77 503.85 50.53 512 64 512c13.47 0 25.23-8.15 29.96-20.76C116.55 431.01 128 367.85 128 303.53V144c0-8.82 7.18-16 16-16s16 7.18 16 16v218.3c0 55.4 41.52 149.7 144 149.7 79.4 0 144-64.6 144-144v-31.14c13.53 10.16 30.24 16.09 47.87 16.09 18.2 0 21.44-2.86 115.47-35.52 16.99-5.03 28.65-20.66 28.65-38.4v-75.85c.01-17.58-11.45-33.1-28.23-38.27zM592 270.98c-93.37 34.05-88.56 33.04-95.98 33.04-13.44 0-25.79-9.17-30.05-22.29l-5.66-17.47c-33.51 1.38-60.3 28.77-60.3 62.61V368c0 125.3-192 131.89-192-5.7V147.6c0-31.89-21.71-61.53-53.18-66.71C114.77 74.29 80 105.16 80 144v159.53c0 42.02-5.37 83.49-16 123.82-10.63-40.33-16-81.8-16-123.82V147.46C48 73.11 109.92 48 144 48c55.06 0 96 47.89 96 101.7v214.7c0 90.85 128 87.15 128 3.6v-48c0-60.1 47.88-84.66 67-90.8l23.39-7.52 7.58-23.38c4.26-13.12 16.61-22.29 30.05-22.29 7.44 0 2.62-1.01 95.98 33.04v61.93zM496 216c0 8.84 7.16 16 16 16s16-7.16 16-16-7.16-16-16-16-16 7.16-16 16z\"]\n};\nvar faSnooze = {\n prefix: 'far',\n iconName: 'snooze',\n icon: [448, 512, [], \"f880\", \"M288 29V16a16 16 0 0 0-16-16H160a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h58.12l-82.2 93.94A32 32 0 0 0 128 163v13a16 16 0 0 0 16 16h112a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-58.13l82.21-93.94A32 32 0 0 0 288 29zm-88 227H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h99.34L9.53 440.06A32.09 32.09 0 0 0 0 462.86V488a24 24 0 0 0 24 24h184a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H92.66l121.81-120.06a32.09 32.09 0 0 0 9.53-22.8V280a24 24 0 0 0-24-24zm232-32H320a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h58.12l-82.2 93.94A32 32 0 0 0 288 387v13a16 16 0 0 0 16 16h112a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-58.13l82.21-93.94A32 32 0 0 0 448 253v-13a16 16 0 0 0-16-16z\"]\n};\nvar faSnowBlowing = {\n prefix: 'far',\n iconName: 'snow-blowing',\n icon: [640, 512, [], \"f761\", \"M350.4 105.4l-12.1-21c-3.4-5.8-10.8-7.8-16.6-4.4l-26.6 15.3 5.5-20.4c1.7-6.5-2.1-13.1-8.6-14.9l-11.7-3.1c-6.5-1.7-13.1 2.1-14.9 8.6l-15 55.5-50.4 29.1V93.2L240.2 53c4.7-4.7 4.7-12.3 0-17l-8.5-8.5c-4.7-4.7-12.3-4.7-17 0L200 42.3V12c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v30.3l-14.8-14.8c-4.7-4.7-12.3-4.7-17 0l-8.5 8.5c-4.7 4.7-4.7 12.3 0 17L152 93.2v56.9L101.6 121l-15-55.7c-1.7-6.5-8.4-10.3-14.9-8.6L60 59.9c-6.5 1.7-10.3 8.4-8.6 14.9l5.5 20.4-26.5-15.3c-5.8-3.4-13.2-1.4-16.6 4.4l-12.1 21c-3.4 5.8-1.4 13.2 4.4 16.6l26.6 15.3-20.4 5.5c-6.5 1.7-10.3 8.4-8.6 14.9l3.1 11.7c1.7 6.5 8.4 10.3 14.9 8.6L77.3 163l50.2 29-50.2 29-55.7-15c-6.5-1.7-13.1 2.1-14.9 8.6l-3.1 11.7c-1.7 6.5 2.1 13.1 8.6 14.9l20.4 5.5-26.5 15.4c-5.8 3.4-7.8 10.8-4.4 16.6l12.1 21c3.4 5.8 10.8 7.8 16.6 4.4L57 288.8l-5.5 20.4c-1.7 6.5 2.1 13.1 8.6 14.9l11.7 3.1c6.5 1.7 13.1-2.1 14.9-8.6l14.9-55.6 50.4-29.1v56.9L111.8 331c-4.7 4.7-4.7 12.3 0 17l8.5 8.5c4.7 4.7 12.3 4.7 17 0l14.8-14.8V372c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12v-30.3l14.8 14.8c4.7 4.7 12.3 4.7 17 0l8.5-8.5c4.7-4.7 4.7-12.3 0-17L200 290.8v-56.9l50.4 29.1 14.9 55.6c1.7 6.5 8.4 10.3 14.9 8.6l11.7-3.1c6.5-1.7 10.3-8.4 8.6-14.9l-5.5-20.4 26.6 15.3c5.8 3.4 13.2 1.4 16.6-4.4l12.1-21c3.4-5.8 1.4-13.2-4.4-16.6l-26.6-15.3 20.4-5.5c6.5-1.7 10.3-8.4 8.6-14.9l-3.1-11.7c-1.7-6.5-8.4-10.3-14.9-8.6L274.7 221l-50.2-29 50.2-29 55.6 14.9c6.5 1.7 13.1-2.1 14.9-8.6l3.1-11.7c1.7-6.5-2.1-13.1-8.6-14.9l-20.4-5.5 26.6-15.3c5.8-3.3 7.8-10.7 4.5-16.5zM544 320H368c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h176c31.4 0 55.9 30.3 45.6 63.3-4.4 14.3-16.1 25.9-30.4 30.4-28.5 8.9-55.1-8.3-61.7-33.5-1.8-6.9-7.5-12.1-14.7-12.1h-18.4c-9.2 0-16.6 8.2-14.9 17.2 9.3 51.2 59.2 88.3 115.1 76.6 36.3-7.6 65.6-36.9 73.2-73.2 13-62.1-34-116.7-93.8-116.7zm-144-32h144c59.8 0 106.8-54.6 93.8-116.6-7.6-36.3-36.9-65.6-73.2-73.2-55.9-11.7-105.8 25.4-115.1 76.6-1.6 9 5.8 17.2 14.9 17.2h18.4c7.2 0 12.9-5.2 14.7-12.1 6.6-25.2 33.2-42.4 61.7-33.5 14.3 4.5 25.9 16.1 30.4 30.4 10.2 32.9-14.2 63.3-45.6 63.3H400c-8.8 0-16 7.2-16 16v16c0 8.7 7.2 15.9 16 15.9z\"]\n};\nvar faSnowboarding = {\n prefix: 'far',\n iconName: 'snowboarding',\n icon: [512, 512, [], \"f7ce\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm41.4 155c4.3 3.3 9.5 5 14.6 5 7.2 0 14.3-3.2 19.1-9.4 8.1-10.5 6.1-25.6-4.4-33.7L383 121.3c-13.1-9.8-27.6-17.4-43.2-22.6l-67-22.4-35.9-64C230.4.8 215.7-3.4 204.2 3.1c-11.6 6.5-15.7 21.1-9.2 32.7l36.5 65.1c4.8 9.5 13 16.6 23.1 20l34.8 11.6-58.4 29.2c-19.1 9.5-31 28.7-31 50.1v54.9c0 3.2-1.9 6.1-4.9 7.4l-76.3 31.8c-12.2 5.1-18 19.2-12.9 31.4 1.2 3 3.1 5.4 5.3 7.5l-43.6-15.9c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.3-31.9-11.6-12 5.6-17.2 19.9-11.6 31.9 9.8 21 27.1 36.8 48.8 44.8l364.8 132.8c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9s-19.9-17.2-31.9-11.6c-9.3 4.3-19.8 4.8-29.5 1.3l-103.8-37.8c10.8-.3 20.5-7.8 22.9-18.9l21.8-102c3.2-15.2-2.7-31.1-15.1-40.4l-62.7-47 82.2-37.9 95.8 73.3zm-148.1 47l-20.8 97c-1.9 9 1.7 17.7 8.2 23.2l-182.8-66.5c2.5-.2 4.9-.5 7.3-1.5l76.3-31.8c20.9-8.7 34.4-29 34.4-51.7V240l77.4 58z\"]\n};\nvar faSnowflake = {\n prefix: 'far',\n iconName: 'snowflake',\n icon: [448, 512, [], \"f2dc\", \"M440.1 355.2l-39.2-23 34.1-9.3c8.4-2.3 13.4-11.1 11.1-19.6l-4.1-15.5c-2.2-8.5-10.9-13.6-19.3-11.3L343 298.2 271.2 256l71.9-42.2 79.7 21.7c8.4 2.3 17-2.8 19.3-11.3l4.1-15.5c2.2-8.5-2.7-17.3-11.1-19.6l-34.1-9.3 39.2-23c7.5-4.4 10.1-14.2 5.8-21.9l-7.9-13.9c-4.3-7.7-14-10.3-21.5-5.9l-39.2 23 9.1-34.7c2.2-8.5-2.7-17.3-11.1-19.6l-15.2-4.1c-8.4-2.3-17 2.8-19.3 11.3l-21.3 81-71.9 42.2v-84.5L306 70.4c6.1-6.2 6.1-16.4 0-22.6l-11.1-11.3c-6.1-6.2-16.1-6.2-22.2 0l-24.9 25.4V16c0-8.8-7-16-15.7-16h-15.7c-8.7 0-15.7 7.2-15.7 16v46.1l-24.9-25.4c-6.1-6.2-16.1-6.2-22.2 0L142.1 48c-6.1 6.2-6.1 16.4 0 22.6l58.3 59.3v84.5l-71.9-42.2-21.3-81c-2.2-8.5-10.9-13.6-19.3-11.3L72.7 84c-8.4 2.3-13.4 11.1-11.1 19.6l9.1 34.7-39.2-23c-7.5-4.4-17.1-1.8-21.5 5.9l-7.9 13.9c-4.3 7.7-1.8 17.4 5.8 21.9l39.2 23-34.1 9.1c-8.4 2.3-13.4 11.1-11.1 19.6L6 224.2c2.2 8.5 10.9 13.6 19.3 11.3l79.7-21.7 71.9 42.2-71.9 42.2-79.7-21.7c-8.4-2.3-17 2.8-19.3 11.3l-4.1 15.5c-2.2 8.5 2.7 17.3 11.1 19.6l34.1 9.3-39.2 23c-7.5 4.4-10.1 14.2-5.8 21.9L10 391c4.3 7.7 14 10.3 21.5 5.9l39.2-23-9.1 34.7c-2.2 8.5 2.7 17.3 11.1 19.6l15.2 4.1c8.4 2.3 17-2.8 19.3-11.3l21.3-81 71.9-42.2v84.5l-58.3 59.3c-6.1 6.2-6.1 16.4 0 22.6l11.1 11.3c6.1 6.2 16.1 6.2 22.2 0l24.9-25.4V496c0 8.8 7 16 15.7 16h15.7c8.7 0 15.7-7.2 15.7-16v-46.1l24.9 25.4c6.1 6.2 16.1 6.2 22.2 0l11.1-11.3c6.1-6.2 6.1-16.4 0-22.6l-58.3-59.3v-84.5l71.9 42.2 21.3 81c2.2 8.5 10.9 13.6 19.3 11.3L375 428c8.4-2.3 13.4-11.1 11.1-19.6l-9.1-34.7 39.2 23c7.5 4.4 17.1 1.8 21.5-5.9l7.9-13.9c4.6-7.5 2.1-17.3-5.5-21.7z\"]\n};\nvar faSnowflakes = {\n prefix: 'far',\n iconName: 'snowflakes',\n icon: [640, 512, [], \"f7cf\", \"M527.9 120c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V91.6l28 16.1c3.8 2.2 8.7.9 10.9-2.9l8-13.9c2.2-3.8.9-8.7-2.9-10.9L576 64l27.9-16c3.8-2.2 5.1-7.1 2.9-10.9l-8-13.9c-2.2-3.8-7.1-5.1-10.9-2.9l-28 16.1V8c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v28.4l-28-16.1c-3.8-2.2-8.7-.9-10.9 2.9l-8 13.9c-2.2 3.8-.9 8.7 2.9 10.9l27.9 16-27.9 16c-3.8 2.2-5.1 7.1-2.9 10.9l8 13.9c2.2 3.8 7.1 5.1 10.9 2.9l28-16.1V120zm80.2 136l27.9-16c3.8-2.2 5.1-7.1 2.9-10.9l-8-13.9c-2.2-3.8-7.1-5.1-10.9-2.9l-28 16.1V200c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v28.4l-28-16.1c-3.8-2.2-8.7-.9-10.9 2.9l-8 13.9c-2.2 3.8-.9 8.7 2.9 10.9l27.9 16-27.9 16c-3.8 2.2-5.1 7.1-2.9 10.9l8 13.9c2.2 3.8 7.1 5.1 10.9 2.9l28-16.1V312c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-28.4l28 16.1c3.8 2.2 8.7.9 10.9-2.9l8-13.9c2.2-3.8.9-8.7-2.9-10.9l-27.9-16zM445.9 134.9L438 121c-4.3-7.7-14-10.3-21.5-5.9l-39.2 23 9.1-34.7c2.2-8.5-2.7-17.3-11.1-19.6l-15.2-4.1c-8.4-2.3-17 2.8-19.3 11.3l-21.3 81-71.9 42.2v-84.5l58.3-59.3c6.1-6.2 6.1-16.4 0-22.6l-11.1-11.3c-6.1-6.2-16.1-6.2-22.2 0l-24.9 25.4V16c0-8.8-7-16-15.7-16h-15.7c-8.7 0-15.7 7.2-15.7 16v46.1l-24.9-25.4c-6.1-6.2-16.1-6.2-22.2 0L142.1 48c-6.1 6.2-6.1 16.4 0 22.6l58.3 59.3v84.5l-71.9-42.2-21.3-81c-2.2-8.5-10.9-13.6-19.3-11.3L72.7 84c-8.4 2.3-13.4 11.1-11.1 19.6l9.1 34.7-39.2-23c-7.5-4.4-17.1-1.8-21.5 5.9l-7.9 13.9c-4.3 7.7-1.8 17.4 5.8 21.9l39.2 23-34.1 9.1c-8.4 2.3-13.4 11.1-11.1 19.6L6 224.2c2.2 8.5 10.9 13.6 19.3 11.3l79.7-21.7 71.9 42.2-71.9 42.2-79.7-21.7c-8.4-2.3-17 2.8-19.3 11.3l-4.1 15.5c-2.2 8.5 2.7 17.3 11.1 19.6l34.1 9.3-39.2 23c-7.5 4.4-10.1 14.2-5.8 21.9L10 391c4.3 7.7 14 10.3 21.5 5.9l39.2-23-9.1 34.7c-2.2 8.5 2.7 17.3 11.1 19.6l15.2 4.1c8.4 2.3 17-2.8 19.3-11.3l21.3-81 71.9-42.2v84.5l-58.3 59.3c-6.1 6.2-6.1 16.4 0 22.6l11.1 11.3c6.1 6.2 16.1 6.2 22.2 0l24.9-25.4V496c0 8.8 7 16 15.7 16h15.7c8.7 0 15.7-7.2 15.7-16v-46.1l24.9 25.4c6.1 6.2 16.1 6.2 22.2 0l11.1-11.3c6.1-6.2 6.1-16.4 0-22.6l-58.3-59.3v-84.5l71.9 42.2 21.3 81c2.2 8.5 10.9 13.6 19.3 11.3L375 428c8.4-2.3 13.4-11.1 11.1-19.6l-9.1-34.7 39.2 23c7.5 4.4 17.1 1.8 21.5-5.9l7.9-13.9c4.6-7.5 2.1-17.3-5.5-21.7l-39.2-23 34.1-9.3c8.4-2.3 13.4-11.1 11.1-19.6l-4.1-15.5c-2.2-8.5-10.9-13.6-19.3-11.3L343 298.2 271.2 256l71.9-42.2 79.7 21.7c8.4 2.3 17-2.8 19.3-11.3l4.1-15.5c2.2-8.5-2.7-17.3-11.1-19.6l-34.1-9.3 39.2-23c7.4-4.4 10-14.2 5.7-21.9z\"]\n};\nvar faSnowman = {\n prefix: 'far',\n iconName: 'snowman',\n icon: [512, 512, [], \"f7d0\", \"M256 288c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm0-64c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zM224 88c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm32 264c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm254.9-167.7l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 172.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-26.2 10.7c-3.7-9.2-8.1-18.3-13.7-26.6C376 159.8 380 142 380 124 380 55.6 324.4 0 256 0S132 55.6 132 124c0 18 4 35.8 11.6 52.1-5.7 8.4-10.1 17.4-13.7 26.6L103.7 192c.1-.5.3-1 .3-1.5v-46.9c0-8.6-7.2-15.6-16-15.6H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l110.1 44.9c0 .8-.2 1.6-.2 2.4 0 7.1.7 14.3 2.1 22-18.2 26.8-27.8 57.9-27.8 90.7 0 55.4 28.2 106.2 75.3 136.1 11.5 7.3 25.7 11.1 41.2 11.1h89.9c17 0 33.4-5.1 47.4-14.9 52.8-36.6 78.5-98.8 67-162.3-3.9-21.3-12.5-42-25.1-60.6 1.4-7.7 2.1-15.1 2.1-22.2 0-.8-.2-1.6-.2-2.4L502 204.5c8.1-3 12.1-12.1 8.9-20.2zM320.7 457.7c-5.9 4.1-12.9 6.3-20.1 6.3h-89.9c-4.4 0-10.7-.6-15.5-3.7-33.2-21-53-56.8-53-95.6 0-25.8 8.4-50.2 24.4-70.4l7.3-9.3-2.9-11.5c-2.1-8.2-3.1-15.1-3.1-21.6 0-26.9 12.1-46.3 22.2-57.8l12-13.7-9.9-15.2c-8.1-12.5-12.3-26.7-12.3-41.3 0-41.9 34.1-76 76-76s76 34.1 76 76c0 14.5-4.3 28.8-12.3 41.3l-9.9 15.2 12 13.7c10.2 11.5 22.2 31 22.2 57.8 0 6.6-1 13.5-3.1 21.7l-2.9 11.5 7.3 9.3c11.6 14.7 19.4 31.6 22.5 48.9 8.2 44.8-9.8 88.6-47 114.4zM288 88c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-32 40c-8.8 0-16 7.2-16 16s16 32 16 32 16-23.2 16-32-7.2-16-16-16z\"]\n};\nvar faSnowmobile = {\n prefix: 'far',\n iconName: 'snowmobile',\n icon: [640, 512, [], \"f7d1\", \"M636.8 446.4l-9.6-12.8c-5.3-7.1-15.3-8.5-22.4-3.2L570.7 456c-6.9 5.2-15.3 8-24 8h-.7l-54-72 76.9-51.3c4.5-3 7.1-8 7.1-13.3v-77.5c0-6.1-3.4-11.6-8.8-14.3l-152.7-76.4-41-82c-5.9-11.8-20.3-16.7-32.2-10.7-11.9 5.9-16.7 20.3-10.8 32.2l35 69.9L342 200h-41c-2.1 0-4.1-.8-5.6-2.2l-55-53.4c-12.8-12.7-31.1-18.5-48.6-15.7-17.7 2.9-33.1 14.2-41.1 30.2l-29.8 59.7c-6.7 13.4-7.8 28.6-3 42.8 1.3 3.9 3.5 7.2 5.5 10.6H112c-12.1 0-23.2 6.8-28.6 17.7l-32 64c-.7 1.4-1 2.9-1.5 4.3C20.7 369.9 0 398.5 0 432c0 44.1 35.9 80 80 80h160c44.1 0 80-35.9 80-80 0-11.4-2.5-22.2-6.8-32H438l48 64h-54c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h114.7c19 0 37.6-6.2 52.8-17.6l34.1-25.6c7.1-5.3 8.5-15.3 3.2-22.4zM220 191.6l42 40.7c10.5 10.2 24.3 15.8 39 15.8h5l-18 24h-78.3l-23.9-11.9 34.2-68.6zM240 464H80c-17.7 0-32-14.3-32-32s14.3-32 32-32h160c17.7 0 32 14.3 32 32s-14.3 32-32 32zm225.5-112H105.9l16-32H312l86.4-115.2L528 269.7v40.6L465.5 352zM240 96c26.5 0 48-21.5 48-48S266.5 0 240 0s-48 21.5-48 48 21.5 48 48 48z\"]\n};\nvar faSnowplow = {\n prefix: 'far',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm459.7 41.8c-7.5-7.5-11.7-17.7-11.7-28.3v-139c0-10.6 4.2-20.8 11.7-28.3l55.6-55.6c6.2-6.2 6.2-16.4 0-22.6L624 132.7c-6.2-6.2-16.4-6.2-22.6 0l-55.6 55.6c-16.5 16.5-25.8 38.9-25.8 62.2V296h-88v-58.9c0-8.7-1.8-17.2-5.2-25.2L348.5 29.1C340.9 11.4 323.6 0 304.3 0H160c-26.5 0-48 21.5-48 48v80H96c-26.5 0-48 21.5-48 48v132.3C19 328.5 0 362 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-20.5-5.9-39.5-15.5-56H520v45.5c0 23.3 9.3 45.7 25.8 62.2l55.6 55.6c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-55.6-55.6zM160 48h144.4l65.1 152H220.6L160 112.5V48zM96 176h49.6l42.7 61.7c4.5 6.5 11.8 10.3 19.7 10.3h176v41.6c-5.3-.8-10.5-1.6-16-1.6H112c-5.5 0-10.7.9-16 1.6V176zm272 288H112c-35.3 0-64-28.7-64-64s28.7-64 64-64h256c35.3 0 64 28.7 64 64s-28.7 64-64 64zm-168-88c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm160 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24z\"]\n};\nvar faSoap = {\n prefix: 'far',\n iconName: 'soap',\n icon: [512, 512, [], \"e06e\", \"M384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96Zm208,96H398.39a80,80,0,1,0-156.78,0H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96-48a32,32,0,1,1-32,32A32,32,0,0,1,320,144ZM464,416a48.05,48.05,0,0,1-48,48H96a48.05,48.05,0,0,1-48-48V288a48.05,48.05,0,0,1,48-48H272.94c13.27,9.77,29.32,16,47.06,16s33.79-6.23,47.06-16H416a48.05,48.05,0,0,1,48,48ZM352,288H160a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Zm0,96H160a32,32,0,0,1,0-64H352a32,32,0,0,1,0,64Z\"]\n};\nvar faSocks = {\n prefix: 'far',\n iconName: 'socks',\n icon: [512, 512, [], \"f696\", \"M448 0h-95.83c-11.89 0-22.88 3.44-32.42 9.06C310.34 3.6 299.68 0 288 0h-95.83c-35.32 0-63.96 28.46-64 63.78C128.1 137.27 128 248 128 248l-79.77 59.39c-45.97 34.49-62.82 98.49-34.06 148.25C35.46 492.47 73.2 512 111.49 512c23.38 0 47.57-7.3 67.7-22.41l13.76-10.32c21.47 21.46 50.13 32.72 79.15 32.72 23.38 0 46.97-7.3 67.09-22.41l121.61-91.2a128.006 128.006 0 0 0 51.21-102.4V64C512 28.65 483.35 0 448 0zm-95.83 48H448c8.82 0 16 7.18 16 16v32H336.14l.03-32.17c.01-8.73 7.19-15.83 16-15.83zm-160 0H288c.8 0 1.5.29 2.26.43-1.23 4.94-2.08 10.03-2.08 15.36l-.03 32.22h-112l.03-32.17c0-8.74 7.18-15.84 15.99-15.84zm-80.68 416c-23.2 0-44.04-12.11-55.76-32.38-15.79-27.32-6.43-65.02 21.31-85.83l98.94-73.77.12-128.02h112c-.05 54.65-.1 104-.1 104l-79.16 59.39c-40.9 30.68-58.54 84.68-41.72 131.26l-16.74 12.55c-11.16 8.38-25 12.8-38.89 12.8zM432 360l-121.63 91.21c-11.15 8.37-24.38 12.79-38.28 12.79-23.2 0-44.04-12.11-55.76-32.38-15.79-27.32-6.43-65.02 21.31-85.83l98.34-73.77.12-128.02H464v151.99c0 25.05-11.96 48.98-32 64.01z\"]\n};\nvar faSolarPanel = {\n prefix: 'far',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M585.24 26.74C582.62 11.31 569.02 0 553.09 0H86.91C70.98 0 57.38 11.31 54.76 26.74l-54.31 320C-2.86 366.24 12.46 384 32.6 384H224v80.24l-31.98.03c-8.82.01-15.97 7.16-15.98 15.98l-.04 15.73c-.01 8.85 7.17 16.03 16.02 16.02l255.94-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-15.72c.01-8.85-7.17-16.03-16.02-16.02l-31.96.03V384h191.4c20.14 0 35.46-17.76 32.14-37.26l-54.3-320zM558.3 160H436.91l-11.2-112h113.58l19.01 112zm-306.99 0l11.2-112h114.97l11.2 112H251.31zm142.18 48l12.8 128H233.71l12.8-128h146.98zM100.71 48h113.58l-11.2 112H81.7l19.01-112zM73.55 208h124.73l-12.8 128H51.83l21.72-128zM368 464.1l-96 .1V384h96v80.1zM454.51 336l-12.8-128h124.73l21.72 128H454.51z\"]\n};\nvar faSolarSystem = {\n prefix: 'far',\n iconName: 'solar-system',\n icon: [512, 512, [], \"e02f\", \"M391.77844,120.23438c-16.64243-16.64063-42.05926-17.63672-60.76247-4.73047C307.55639,102.98633,281.92079,96,256,96A160,160,0,1,0,369.149,369.13672c51.02312-51.01758,59.65883-127.62891,27.36235-188.14453C409.421,162.291,408.42283,136.877,391.77844,120.23438ZM346.51961,346.50977a128.50726,128.50726,0,1,1-34.23614-204.94141c-4.41455,16.09375-1.03918,33.90625,11.60673,46.54883,12.644,12.64453,30.45839,16.01953,46.55389,11.60547a126.334,126.334,0,0,1-23.92448,146.78711ZM256,176a80,80,0,1,0,80.0087,80A80.08848,80.08848,0,0,0,256,176Zm0,112a32,32,0,1,1,32.00348-32A32.03339,32.03339,0,0,1,256,288Zm80.90528,159.67773a208.24661,208.24661,0,0,1-227.9994-44.59961C39.328,333.50781,29.62381,226.59766,79.41829,146.38672a56.05613,56.05613,0,1,0-37.799-30.34375c-64.97,99.2832-53.88672,233.75781,33.34152,320.97656A255.17414,255.17414,0,0,0,364.422,487.65039c-2.19165-1.80273-4.5376-3.32812-6.58665-5.377A86.91321,86.91321,0,0,1,336.90528,447.67773ZM437.03922,74.98047A255.17108,255.17108,0,0,0,147.58,24.34961c2.19165,1.80273,4.53761,3.32812,6.5847,5.375a86.87534,86.87534,0,0,1,20.93,34.59766,208.24661,208.24661,0,0,1,227.9994,44.59961c69.57593,69.56835,79.28011,176.47851,29.48759,256.68945a56.05819,56.05819,0,1,0,37.799,30.3457C535.3507,296.67383,524.26746,162.19922,437.03922,74.98047Z\"]\n};\nvar faSort = {\n prefix: 'far',\n iconName: 'sort',\n icon: [320, 512, [], \"f0dc\", \"M272 288H48.1c-42.6 0-64.2 51.7-33.9 81.9l111.9 112c18.7 18.7 49.1 18.7 67.9 0l112-112c30-30.1 8.7-81.9-34-81.9zM160 448L48 336h224L160 448zM48 224h223.9c42.6 0 64.2-51.7 33.9-81.9l-111.9-112c-18.7-18.7-49.1-18.7-67.9 0l-112 112C-16 172.2 5.3 224 48 224zM160 64l112 112H48L160 64z\"]\n};\nvar faSortAlphaDown = {\n prefix: 'far',\n iconName: 'sort-alpha-down',\n icon: [448, 512, [], \"f15d\", \"M447.17 202.94l-61.05-160A16 16 0 0 0 371 32h-38a15.92 15.92 0 0 0-15.1 10.94l-61.06 160a16 16 0 0 0 15.1 21.06h16.78a15.93 15.93 0 0 0 15.11-10.94L314.35 184h75.3l10.52 29.06A15.93 15.93 0 0 0 415.28 224h16.78a16 16 0 0 0 15.11-21.06zM331.73 136L352 80l20.27 56zM416 288H288a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h77.11L281 422.69a32 32 0 0 0-9 22.31v19a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-77.11L423 345.29a32 32 0 0 0 9-22.29v-19a16 16 0 0 0-16-16zm-252 96h-44V48a16 16 0 0 0-16-16H88a16 16 0 0 0-16 16v336H28a12 12 0 0 0-8.73 20.24l68 72a12 12 0 0 0 17.44 0l68-72A12 12 0 0 0 164 384z\"]\n};\nvar faSortAlphaDownAlt = {\n prefix: 'far',\n iconName: 'sort-alpha-down-alt',\n icon: [448, 512, [], \"f881\", \"M447.17 458.94l-61.09-160A16 16 0 0 0 371 288h-38a16 16 0 0 0-15.12 10.94l-61.09 160A16 16 0 0 0 271.83 480h16.79a16 16 0 0 0 15.12-10.94L314.27 440h75.34l10.53 29.06A16 16 0 0 0 415.25 480h16.8a16 16 0 0 0 15.12-21.06zM331.65 392l20.29-56 20.28 56zM287.9 224H416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-77.18L423 89.29A32 32 0 0 0 432 67V48a16 16 0 0 0-16-16H287.9a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h77.16l-84.14 86.69a32 32 0 0 0-9 22.28v19A16 16 0 0 0 287.9 224zM164.09 384h-44V48a16 16 0 0 0-16-16h-16A16 16 0 0 0 72 48v336H28a12 12 0 0 0-8.73 20.24l68 72a12 12 0 0 0 17.46 0l68-72a12 12 0 0 0-8.64-20.24z\"]\n};\nvar faSortAlphaUp = {\n prefix: 'far',\n iconName: 'sort-alpha-up',\n icon: [448, 512, [], \"f15e\", \"M447.17 202.94l-61.05-160A16 16 0 0 0 371 32h-38a15.92 15.92 0 0 0-15.1 10.94l-61.06 160a16 16 0 0 0 15.1 21.06h16.78a15.93 15.93 0 0 0 15.11-10.94L314.35 184h75.3l10.52 29.06A15.93 15.93 0 0 0 415.28 224h16.78a16 16 0 0 0 15.11-21.06zM331.73 136L352 80l20.27 56zM416 288H288a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h77.11L281 422.69a32 32 0 0 0-9 22.31v19a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-77.11L423 345.29a32 32 0 0 0 9-22.29v-19a16 16 0 0 0-16-16zM28 128h44v336a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V128h44a12 12 0 0 0 8.73-20.24l-68-72a12 12 0 0 0-17.44 0l-68 72A12 12 0 0 0 28 128z\"]\n};\nvar faSortAlphaUpAlt = {\n prefix: 'far',\n iconName: 'sort-alpha-up-alt',\n icon: [448, 512, [], \"f882\", \"M288 224h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-77.11L423 89.29A32 32 0 0 0 432 67V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h77.11L281 166.69a32 32 0 0 0-9 22.31v19a16 16 0 0 0 16 16zm159.17 234.94l-61.05-160A16 16 0 0 0 371 288h-38a15.92 15.92 0 0 0-15.1 10.94l-61.06 160a16 16 0 0 0 15.1 21.06h16.78a15.93 15.93 0 0 0 15.11-10.94L314.35 440h75.3l10.52 29.06A15.93 15.93 0 0 0 415.28 480h16.78a16 16 0 0 0 15.11-21.06zM331.73 392L352 336l20.27 56zm-227-356.24a12 12 0 0 0-17.44 0l-68 72A12 12 0 0 0 28 128h44v336a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V128h44a12 12 0 0 0 8.73-20.24z\"]\n};\nvar faSortAlt = {\n prefix: 'far',\n iconName: 'sort-alt',\n icon: [384, 512, [], \"f883\", \"M164 384h-44V48a16 16 0 0 0-16-16H88a16 16 0 0 0-16 16v336H28a12 12 0 0 0-8.73 20.24l68 72a12 12 0 0 0 17.44 0l68-72A12 12 0 0 0 164 384zm200.72-276.24l-68-72a12 12 0 0 0-17.44 0l-68 72A12 12 0 0 0 220 128h44v336a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V128h44a12 12 0 0 0 8.72-20.24z\"]\n};\nvar faSortAmountDown = {\n prefix: 'far',\n iconName: 'sort-amount-down',\n icon: [512, 512, [], \"f160\", \"M304 376h-64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm-140 8h-44V48a16 16 0 0 0-16-16H88a16 16 0 0 0-16 16v336H28a12 12 0 0 0-8.73 20.24l68 72a12 12 0 0 0 17.44 0l68-72A12 12 0 0 0 164 384zm268-200H240a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm64-96H240a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM368 280H240a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountDownAlt = {\n prefix: 'far',\n iconName: 'sort-amount-down-alt',\n icon: [512, 512, [], \"f884\", \"M320 120v-16a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16zM164 384h-44V48a16 16 0 0 0-16-16H88a16 16 0 0 0-16 16v336H28a12 12 0 0 0-8.73 20.24l68 72a12 12 0 0 0 17 .48l.48-.48 68-72A12 12 0 0 0 164 384zm284-72v-16a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16zm64 96v-16a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16zM384 216v-16a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16z\"]\n};\nvar faSortAmountUp = {\n prefix: 'far',\n iconName: 'sort-amount-up',\n icon: [512, 512, [], \"f161\", \"M304 376h-64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM28 128h44v336a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V128h44a12 12 0 0 0 8.73-20.24l-68-72a12 12 0 0 0-17.44 0l-68 72A12 12 0 0 0 28 128zm404 56H240a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm64-96H240a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM368 280H240a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountUpAlt = {\n prefix: 'far',\n iconName: 'sort-amount-up-alt',\n icon: [512, 512, [], \"f885\", \"M240 328h192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16zm0-192h64a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16zm0 96h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16zm256 144H240a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM28 128h44v336a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V128h44a12 12 0 0 0 8.73-20.24l-68-72a12 12 0 0 0-17.44 0l-68 72A12 12 0 0 0 28 128z\"]\n};\nvar faSortCircle = {\n prefix: 'far',\n iconName: 'sort-circle',\n icon: [512, 512, [], \"e030\", \"M350.88,26.94A247.21,247.21,0,0,0,256.1,8C158.8,8,66.49,65.64,26.94,161.12c-52.4,126.51,7.67,271.54,134.18,323.94A247.21,247.21,0,0,0,255.9,504c97.3,0,189.61-57.64,229.16-153.12C537.46,224.37,477.39,79.34,350.88,26.94Zm89.84,305.57A199.74,199.74,0,0,1,179.49,440.72C77.64,398.53,29.09,281.34,71.28,179.49A199.74,199.74,0,0,1,332.51,71.28C434.37,113.47,482.9,230.66,440.72,332.51ZM164.75,224H347.11c16.4,0,24.59-19.85,13-31.41L269,101.41a18.31,18.31,0,0,0-26,0l-91.25,91.18C140.16,204.15,148.35,224,164.75,224Zm182.36,64H164.75c-16.4,0-24.59,19.85-13,31.41L243,410.59a18.31,18.31,0,0,0,26,0l91.18-91.18C371.7,307.85,363.52,288,347.11,288Z\"]\n};\nvar faSortCircleDown = {\n prefix: 'far',\n iconName: 'sort-circle-down',\n icon: [512, 512, [], \"e031\", \"M350.88,26.94A247.21,247.21,0,0,0,256.1,8C158.8,8,66.49,65.64,26.94,161.12c-52.4,126.51,7.67,271.54,134.18,323.94A247.21,247.21,0,0,0,255.9,504c97.3,0,189.61-57.64,229.16-153.12C537.46,224.37,477.39,79.34,350.88,26.94Zm89.84,305.57A199.74,199.74,0,0,1,179.49,440.72C77.63,398.53,29.1,281.34,71.28,179.49A199.74,199.74,0,0,1,332.51,71.28C434.36,113.47,482.91,230.66,440.72,332.51ZM347.25,288H164.89c-16.4,0-24.59,19.85-13,31.41L243,410.59a18.31,18.31,0,0,0,26,0l91.25-91.18C371.84,307.85,363.65,288,347.25,288ZM269,101.41a18.31,18.31,0,0,0-26,0l-91.18,91.18c-11.56,11.56-3.38,31.41,13,31.41H347.25c16.4,0,24.59-19.85,13-31.41ZM197.7,192,256,133.67,314.41,192Z\"]\n};\nvar faSortCircleUp = {\n prefix: 'far',\n iconName: 'sort-circle-up',\n icon: [512, 512, [], \"e032\", \"M350.88,26.94A247.21,247.21,0,0,0,256.1,8C158.8,8,66.49,65.64,26.94,161.12c-52.4,126.51,7.67,271.54,134.18,323.94A247.21,247.21,0,0,0,255.9,504c97.3,0,189.61-57.64,229.16-153.12C537.46,224.37,477.39,79.34,350.88,26.94Zm89.84,305.57A199.74,199.74,0,0,1,179.49,440.72C77.64,398.53,29.09,281.34,71.28,179.49A199.74,199.74,0,0,1,332.51,71.28C434.37,113.47,482.9,230.66,440.72,332.51ZM164.75,224H347.11c16.4,0,24.59-19.85,13-31.41L269,101.41a18.31,18.31,0,0,0-26,0l-91.25,91.18C140.16,204.15,148.35,224,164.75,224Zm182.36,64H164.75c-16.4,0-24.59,19.85-13,31.41L243,410.59a18.31,18.31,0,0,0,26,0l91.18-91.18C371.7,307.85,363.52,288,347.11,288ZM256,378.33,197.59,320H314.3Z\"]\n};\nvar faSortDown = {\n prefix: 'far',\n iconName: 'sort-down',\n icon: [320, 512, [], \"f0dd\", \"M272 288H48.1c-42.6 0-64.2 51.7-33.9 81.9l111.9 112c18.7 18.7 49.1 18.7 67.9 0l112-112c30-30.1 8.7-81.9-34-81.9zM160 448L48 336h224L160 448z\"]\n};\nvar faSortNumericDown = {\n prefix: 'far',\n iconName: 'sort-numeric-down',\n icon: [448, 512, [], \"f162\", \"M400 176h-24V48a16 16 0 0 0-16-16h-36a16 16 0 0 0-13.57 7.52l-20 32A16 16 0 0 0 304 96h24v80h-24a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm-56 80a72 72 0 0 0 0 144 71.1 71.1 0 0 0 18.84-2.82 59.56 59.56 0 0 1-42.32 34.42A15.84 15.84 0 0 0 308 447.16v16.77a16 16 0 0 0 18.71 15.83A108.19 108.19 0 0 0 416 373.38V328a72.08 72.08 0 0 0-72-72zm0 96a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm-180 32h-44V48a16 16 0 0 0-16-16H88a16 16 0 0 0-16 16v336H28a12 12 0 0 0-8.73 20.24l68 72a12 12 0 0 0 17.44 0l68-72A12 12 0 0 0 164 384z\"]\n};\nvar faSortNumericDownAlt = {\n prefix: 'far',\n iconName: 'sort-numeric-down-alt',\n icon: [448, 512, [], \"f886\", \"M400 432h-24V304a16 16 0 0 0-16-16h-36a16 16 0 0 0-13.57 7.52l-20 32A16 16 0 0 0 304 352h24v80h-24a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM344 32a72 72 0 0 0 0 144 71.1 71.1 0 0 0 18.84-2.82 59.56 59.56 0 0 1-42.32 34.42A15.84 15.84 0 0 0 308 223.16v16.77a16 16 0 0 0 18.71 15.83A108.19 108.19 0 0 0 416 149.38V104a72.08 72.08 0 0 0-72-72zm0 96a24 24 0 1 1 24-24 24 24 0 0 1-24 24zM164 384h-44V48a16 16 0 0 0-16-16H88a16 16 0 0 0-16 16v336H28a12 12 0 0 0-8.73 20.24l68 72a12 12 0 0 0 17.44 0l68-72A12 12 0 0 0 164 384z\"]\n};\nvar faSortNumericUp = {\n prefix: 'far',\n iconName: 'sort-numeric-up',\n icon: [448, 512, [], \"f163\", \"M400 176h-24V48a16 16 0 0 0-16-16h-36a16 16 0 0 0-13.57 7.52l-20 32A16 16 0 0 0 304 96h24v80h-24a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm-56 80a72 72 0 0 0 0 144 71.1 71.1 0 0 0 18.84-2.82 59.56 59.56 0 0 1-42.32 34.42A15.84 15.84 0 0 0 308 447.16v16.77a16 16 0 0 0 18.71 15.83A108.19 108.19 0 0 0 416 373.38V328a72.08 72.08 0 0 0-72-72zm0 96a24 24 0 1 1 24-24 24 24 0 0 1-24 24zM28 128h44v336a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V128h44a12 12 0 0 0 8.73-20.24l-68-72a12 12 0 0 0-17.44 0l-68 72A12 12 0 0 0 28 128z\"]\n};\nvar faSortNumericUpAlt = {\n prefix: 'far',\n iconName: 'sort-numeric-up-alt',\n icon: [448, 512, [], \"f887\", \"M400 432h-24V304a16 16 0 0 0-16-16h-36a16 16 0 0 0-13.57 7.52l-20 32A16 16 0 0 0 304 352h24v80h-24a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM344 32a72 72 0 0 0 0 144 71.1 71.1 0 0 0 18.84-2.82 59.56 59.56 0 0 1-42.32 34.42A15.84 15.84 0 0 0 308 223.16v16.77a16 16 0 0 0 18.71 15.83A108.19 108.19 0 0 0 416 149.38V104a72.08 72.08 0 0 0-72-72zm0 96a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm-316 0h44v336a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V128h44a12 12 0 0 0 8.73-20.24l-68-72a12 12 0 0 0-17.44 0l-68 72A12 12 0 0 0 28 128z\"]\n};\nvar faSortShapesDown = {\n prefix: 'far',\n iconName: 'sort-shapes-down',\n icon: [448, 512, [], \"f888\", \"M164 384h-44V48a16 16 0 0 0-16-16H88a16 16 0 0 0-16 16v336H28a12 12 0 0 0-8.73 20.24l68 72a12 12 0 0 0 17.44 0l68-72A12 12 0 0 0 164 384zm280.1-201.14L361 45.71a29.56 29.56 0 0 0-49.9 0l-83.2 137.15c-11.08 18.28 2.77 41.14 24.95 41.14h166.3c22.18 0 36.03-22.86 24.95-41.14zM288.19 176L336 97.14 383.81 176zM408 288H264a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h144a24 24 0 0 0 24-24V312a24 24 0 0 0-24-24zm-24 144h-96v-96h96z\"]\n};\nvar faSortShapesDownAlt = {\n prefix: 'far',\n iconName: 'sort-shapes-down-alt',\n icon: [448, 512, [], \"f889\", \"M164 384h-44V48a16 16 0 0 0-16-16H88a16 16 0 0 0-16 16v336H28a12 12 0 0 0-8.73 20.24l68 72a12 12 0 0 0 17.45 0l68-72A12 12 0 0 0 164 384zm100-160h144a24 24 0 0 0 24-24V56a24 24 0 0 0-24-24H264a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24zm24-144h96v96h-96zm156.1 358.86L361 301.71a29.56 29.56 0 0 0-49.9 0l-83.2 137.15c-11.08 18.28 2.77 41.14 24.95 41.14h166.3c22.18 0 36.03-22.86 24.95-41.14zM288.19 432L336 353.14 383.81 432z\"]\n};\nvar faSortShapesUp = {\n prefix: 'far',\n iconName: 'sort-shapes-up',\n icon: [448, 512, [], \"f88a\", \"M104.72 35.76a12 12 0 0 0-17.45 0l-68 72A12 12 0 0 0 28 128h44v336a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V128h44a12 12 0 0 0 8.73-20.24zm339.38 147.1L361 45.71a29.56 29.56 0 0 0-49.9 0l-83.2 137.15c-11.08 18.28 2.77 41.14 24.95 41.14h166.3c22.18 0 36.03-22.86 24.95-41.14zM288.19 176L336 97.14 383.81 176zM408 288H264a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h144a24 24 0 0 0 24-24V312a24 24 0 0 0-24-24zm-24 144h-96v-96h96z\"]\n};\nvar faSortShapesUpAlt = {\n prefix: 'far',\n iconName: 'sort-shapes-up-alt',\n icon: [448, 512, [], \"f88b\", \"M104.72 35.76a12 12 0 0 0-17.45 0l-68 72A12 12 0 0 0 28 128h44v336a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V128h44a12 12 0 0 0 8.73-20.24zM264 224h144a24 24 0 0 0 24-24V56a24 24 0 0 0-24-24H264a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24zm24-144h96v96h-96zm156.1 358.86L361 301.71a29.56 29.56 0 0 0-49.9 0l-83.2 137.15c-11.08 18.28 2.77 41.14 24.95 41.14h166.3c22.18 0 36.03-22.86 24.95-41.14zM288.19 432L336 353.14 383.81 432z\"]\n};\nvar faSortSizeDown = {\n prefix: 'far',\n iconName: 'sort-size-down',\n icon: [512, 512, [], \"f88c\", \"M484 32H251a28 28 0 0 0-28 28v168a28 28 0 0 0 28 28h233a28 28 0 0 0 28-28V60a28 28 0 0 0-28-28zm-20 176H271V80h193zm-35 112H244a20 20 0 0 0-20 20v120a20 20 0 0 0 20 20h185a20 20 0 0 0 20-20V340a20 20 0 0 0-20-20zm-28 112H272v-64h129zm-237-48h-44V48a16 16 0 0 0-16-16H88a16 16 0 0 0-16 16v336H28a12 12 0 0 0-8.73 20.24l68 72a12 12 0 0 0 17.44 0l68-72A12 12 0 0 0 164 384z\"]\n};\nvar faSortSizeDownAlt = {\n prefix: 'far',\n iconName: 'sort-size-down-alt',\n icon: [512, 512, [], \"f88d\", \"M244 192h184a20 20 0 0 0 20-20V52a20 20 0 0 0-20-20H244a20 20 0 0 0-20 20v120a20 20 0 0 0 20 20zm28-112h128v64H272zm212 176H252a28 28 0 0 0-28 28v168a28 28 0 0 0 28 28h232a28 28 0 0 0 28-28V284a28 28 0 0 0-28-28zm-20 176H272V304h192zm-300-48h-44V48a16 16 0 0 0-16-16H88a16 16 0 0 0-16 16v336H28a12 12 0 0 0-8.73 20.24l68 72a12 12 0 0 0 17.44 0l68-72A12 12 0 0 0 164 384z\"]\n};\nvar faSortSizeUp = {\n prefix: 'far',\n iconName: 'sort-size-up',\n icon: [512, 512, [], \"f88e\", \"M428 320H244a20 20 0 0 0-20 20v120a20 20 0 0 0 20 20h184a20 20 0 0 0 20-20V340a20 20 0 0 0-20-20zm-28 112H272v-64h128zm84-400H252a28 28 0 0 0-28 28v168a28 28 0 0 0 28 28h232a28 28 0 0 0 28-28V60a28 28 0 0 0-28-28zm-20 176H272V80h192zM104.72 35.76a12 12 0 0 0-17.44 0l-68 72A12 12 0 0 0 28 128h44v336a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V128h44a12 12 0 0 0 8.73-20.24z\"]\n};\nvar faSortSizeUpAlt = {\n prefix: 'far',\n iconName: 'sort-size-up-alt',\n icon: [512, 512, [], \"f88f\", \"M484 256H252a28 28 0 0 0-28 28v168a28 28 0 0 0 28 28h232a28 28 0 0 0 28-28V284a28 28 0 0 0-28-28zm-20 176H272V304h192zM244 192h184a20 20 0 0 0 20-20V52a20 20 0 0 0-20-20H244a20 20 0 0 0-20 20v120a20 20 0 0 0 20 20zm28-112h128v64H272zM104.72 35.76a12 12 0 0 0-17.44 0l-68 72A12 12 0 0 0 28 128h44v336a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V128h44a12 12 0 0 0 8.73-20.24z\"]\n};\nvar faSortUp = {\n prefix: 'far',\n iconName: 'sort-up',\n icon: [320, 512, [], \"f0de\", \"M48 224h223.9c42.6 0 64.2-51.7 33.9-81.9l-111.9-112c-18.7-18.7-49.1-18.7-67.9 0l-112 112C-16 172.2 5.3 224 48 224zM160 64l112 112H48L160 64z\"]\n};\nvar faSoup = {\n prefix: 'far',\n iconName: 'soup',\n icon: [512, 512, [], \"f823\", \"M303.06 146.5a16.23 16.23 0 0 0 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18a130.72 130.72 0 0 0-36.6-74.7 94.83 94.83 0 0 1-26.4-53.5A16.11 16.11 0 0 0 272.76 0h-16.4c-9.8 0-17.5 8.5-16.3 18a145.36 145.36 0 0 0 40.6 84.4 81.22 81.22 0 0 1 22.4 44.1zM480 192H32a32 32 0 0 0-32 32c0 94.7 51.56 177.16 128 221.45V480a32 32 0 0 0 32 32h192a32 32 0 0 0 32-32v-34.55C460.44 401.16 512 318.7 512 224a32 32 0 0 0-32-32zM336 417.78V464H176v-46.22C108.46 378.65 55.73 330.7 48.62 240h414.76c-6.97 88.93-57.97 137.57-127.38 177.78zM191.11 146.5a16.23 16.23 0 0 0 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18a130.72 130.72 0 0 0-36.6-74.7 94.83 94.83 0 0 1-26.4-53.5A16.11 16.11 0 0 0 160.81 0h-16.4a16.31 16.31 0 0 0-16.3 18 145.36 145.36 0 0 0 40.6 84.4 81.22 81.22 0 0 1 22.4 44.1z\"]\n};\nvar faSpa = {\n prefix: 'far',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M568.28 192h-.04c-21.38.1-84.49 3.63-147.75 36.03-26.59-78.31-69.27-146.58-121.73-192.22-2.92-2.54-6.83-3.81-10.74-3.81s-7.82 1.27-10.74 3.81c-52.47 45.64-95.16 113.91-121.78 192.23C92.25 195.63 29.14 192.1 7.75 192h-.04c-4.39 0-7.76 3.41-7.72 7.82.23 27.92 7.14 126.14 88.77 199.3C170.99 479.18 252.43 480 285.87 480h4.48c33.57 0 114.83-.98 196.88-80.88 81.64-73.17 88.54-171.38 88.77-199.3.04-4.41-3.32-7.82-7.72-7.82zM122.26 364.73l-.71-.69-.74-.66c-42.39-37.99-60.22-84.4-67.64-119.21 38.78 6.58 91.94 23.31 134.92 65.21l.73.72.76.68c23.54 21.06 41.22 46.39 54.05 77.43l17.79 43.04c-33.77-2.65-85.61-14.37-139.16-66.52zM288 369.86c-13.05-31.56-33.29-65.23-66.41-94.86-7.93-7.73-16.27-14.26-24.65-20.62 20.08-63.83 51.85-120.74 91.08-162.36 39.22 41.62 70.96 98.54 91.03 162.36-8.37 6.36-16.71 12.89-24.64 20.61-33.12 29.64-53.36 63.31-66.41 94.87zm167.19-6.48l-.74.66-.71.69c-53.64 52.23-105.47 63.91-139.18 66.52l17.8-43.05c12.83-31.04 30.51-56.36 54.05-77.43l.76-.68.73-.72c43.01-41.92 96.2-58.65 134.93-65.22-7.41 34.81-25.25 81.23-67.64 119.23z\"]\n};\nvar faSpaceShuttle = {\n prefix: 'far',\n iconName: 'space-shuttle',\n icon: [640, 512, [], \"f197\", \"M456 168C248 168 266.989 32 96 32c-44.665 0-66.4 24.39-66.4 64v56C9.056 152 0 162.568 0 176v48c0 12.834 8.412 24 29.6 24v16C9.056 264 0 274.568 0 288v48c0 12.834 8.412 24 29.6 24v56c0 39.602 21.727 64 66.4 64 171.029 0 152-136 360-136 96 0 184-33.5 184-88 0-51-88-88-184-88zM115.417 80C181.277 80 240 144 288 168H144c-13.999-9.503-31.155-16-48-16V80h19.417zm0 352H96v-72c16.845 0 34.001-6.497 48-16h144c-48 24-97.487 88-172.583 88zM456 304H168.786c9.396-29.293 9.843-65.315 0-96H456c39.888 0 76.728 3.778 103.734 16 .09.041.09 63.959 0 64-27.006 12.222-63.846 16-103.734 16zm24.242-11.429a8 8 0 0 1-8-8v-57.143a8 8 0 0 1 8-8c42.384.001 42.303 73.143 0 73.143z\"]\n};\nvar faSpaceStationMoon = {\n prefix: 'far',\n iconName: 'space-station-moon',\n icon: [512, 512, [], \"e033\", \"M256,8C119.0332,8,8,119.0332,8,256S119.0332,504,256,504,504,392.9668,504,256,392.9668,8,256,8ZM176,112a32,32,0,1,1-32,32A32.03667,32.03667,0,0,1,176,112ZM96.87305,135.3418A78.62147,78.62147,0,0,0,96,144a80.0001,80.0001,0,1,0,97.62891-77.9082A198.97376,198.97376,0,0,1,256,56c110.28125,0,200,89.71875,200,200a199.64027,199.64027,0,0,1-2.77734,31.80078A504.546,504.546,0,0,1,256,328,502.908,502.908,0,0,1,58.7207,287.4375,195.37013,195.37013,0,0,1,96.87305,135.3418ZM256,456c-77.77148,0-145.14844-44.71484-178.21484-109.69727A551.90154,551.90154,0,0,0,256,376a556.10146,556.10146,0,0,0,178.08594-29.43359C400.97266,411.4082,333.666,456,256,456Z\"]\n};\nvar faSpaceStationMoonAlt = {\n prefix: 'far',\n iconName: 'space-station-moon-alt',\n icon: [512, 512, [], \"e034\", \"M456,208h-3.85156V196.74023a47.99988,47.99988,0,0,0-48-48h-4.47461a47.96923,47.96923,0,0,0,22.8457-40.88867V95.02734A48.00137,48.00137,0,0,0,403,56.38867,249.5078,249.5078,0,0,0,256,8C119.0332,8,8,119.0332,8,256S119.0332,504,256,504a247.17156,247.17156,0,0,0,166.60938-64.332,47.61685,47.61685,0,0,0-25.51954-82.60938c19.71289-5.19921,64.707-19.97265,68.21485-20.91015a47.99912,47.99912,0,0,0,34.877-37.9961A242.4554,242.4554,0,0,0,504,256,47.99987,47.99987,0,0,0,456,208ZM176,112a32,32,0,1,1-32,32A32.03667,32.03667,0,0,1,176,112ZM96.87305,135.3418A78.62147,78.62147,0,0,0,96,144a80.0001,80.0001,0,1,0,97.62891-77.9082A198.91848,198.91848,0,0,1,374.51953,95.02734v12.82422H322.668a7.40649,7.40649,0,0,0-7.4082,7.40821v14.81445a7.40732,7.40732,0,0,0,7.4082,7.40625h22.22265V189.332a7.40733,7.40733,0,0,0,7.40626,7.4082h51.85156v29.62891H381.92578a7.40733,7.40733,0,0,0-7.40625,7.4082V248.5918A7.40733,7.40733,0,0,0,381.92578,256H456a193.097,193.097,0,0,1-2.875,31.50391A502.89283,502.89283,0,0,1,256,328,502.908,502.908,0,0,1,58.7207,287.4375,195.37013,195.37013,0,0,1,96.87305,135.3418Zm262.832,268.80664h30.61914A199.14878,199.14878,0,0,1,256,456c-77.77148,0-145.14844-44.71484-178.21484-109.69727A551.90154,551.90154,0,0,0,256,376c30.45117,0,59.96094-3.20312,88.89062-7.90039V389.332A14.81508,14.81508,0,0,0,359.70508,404.14844Z\"]\n};\nvar faSpade = {\n prefix: 'far',\n iconName: 'spade',\n icon: [512, 512, [], \"f2f4\", \"M256 48s174.6 167.3 192.2 192c10 14.1 15.9 31.4 15.8 50.1-.3 47.1-39.5 84.8-86.6 84.8h-.8c-38.1-.3-48.9-6-78.4-36.2-1.2-1.3-2.7-1.8-4.2-1.8-3.1 0-6 2.4-6 6V360c0 37.7-2.3 48.8 24.7 82.9 6.8 8.5.7 21.1-10.2 21.1h-93.2c-10.9 0-16.9-12.6-10.2-21.1 27-34 24.7-45.2 24.7-82.9v-17.1c0-3.6-3-6-6-6-1.5 0-3 .6-4.2 1.8-29.2 29.9-40.1 35.8-78.3 36.2h-.8c-47.2 0-86.4-37.8-86.6-85.1-.1-18.7 5.9-36 16-50.1C81.6 215.2 256 48 256 48m0-48c-12 0-23.9 4.5-33.2 13.4-.4.4-44.3 42.5-89.8 87C38.5 193 29.4 205.6 25 211.7c-16.5 22.9-25.1 50-25 78.2.3 73.3 60.6 132.9 134.6 132.9h1.2c7-.1 13.6-.3 20-.8-3.9 7.2-6.3 15.2-7.1 23.5-1 11 1 22.1 5.9 32 4.8 10 12.2 18.4 21.4 24.5 9.9 6.5 21.5 10 33.5 10h93.2c12 0 23.6-3.5 33.5-10 9.2-6.1 16.6-14.5 21.4-24.5 4.8-10 6.8-21 5.9-32-.7-8.3-3.2-16.2-7.1-23.5 6.4.5 13 .8 20 .8h1.2c35.4 0 68.9-13.6 94.3-38.3 25.7-25 40-58.5 40.3-94.1.2-28.2-8.3-55.3-24.7-78.3-4.4-6.1-13.5-18.9-108.2-111.7-45.5-44.6-89.4-86.7-89.9-87.1C279.9 4.4 268 0 256 0z\"]\n};\nvar faSparkles = {\n prefix: 'far',\n iconName: 'sparkles',\n icon: [512, 512, [], \"f890\", \"M324.42 103.16L384 128l24.84 59.58a8 8 0 0 0 14.32 0L448 128l59.58-24.84a8 8 0 0 0 0-14.32L448 64 423.16 4.42a8 8 0 0 0-14.32 0L384 64l-59.58 24.84a8 8 0 0 0 0 14.32zm183.16 305.68L448 384l-24.84-59.58a8 8 0 0 0-14.32 0L384 384l-59.58 24.84a8 8 0 0 0 0 14.32L384 448l24.84 59.58a8 8 0 0 0 14.32 0L448 448l59.58-24.84a8 8 0 0 0 0-14.32zM384 256a24 24 0 0 0-13.28-21.47l-104.85-52.42-52.4-104.84c-8.13-16.25-34.81-16.25-42.94 0l-52.41 104.84-104.84 52.42a24 24 0 0 0 0 42.94l104.84 52.42 52.41 104.85a24 24 0 0 0 42.94 0l52.4-104.85 104.85-52.42A24 24 0 0 0 384 256zm-146.72 34.53a24 24 0 0 0-10.75 10.74L192 370.33l-34.53-69.06a24 24 0 0 0-10.75-10.74L77.66 256l69.06-34.53a24 24 0 0 0 10.75-10.73L192 141.67l34.53 69.07a24 24 0 0 0 10.75 10.73L306.34 256z\"]\n};\nvar faSpeaker = {\n prefix: 'far',\n iconName: 'speaker',\n icon: [384, 512, [], \"f8df\", \"M193 176a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm0 256A112 112 0 1 0 81 320a112 112 0 0 0 112 112zm0-176a64 64 0 1 1-64 64 64 64 0 0 1 64-64zM337 0H49A48 48 0 0 0 1 48v416a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm0 464H49V48h288z\"]\n};\nvar faSpeakers = {\n prefix: 'far',\n iconName: 'speakers',\n icon: [640, 512, [], \"f8e0\", \"M448 176a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm0 256a112 112 0 1 0-112-112 112 112 0 0 0 112 112zm0-176a64 64 0 1 1-64 64 64 64 0 0 1 64-64zM592 0H304a48 48 0 0 0-48 48v416a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm0 464H304V48h288zM224 92.46a48 48 0 1 0 0 71.08zM192 256a63.33 63.33 0 0 1 32 8.88V213.2c-10.2-3.06-20.8-5.2-32-5.2a112 112 0 0 0 0 224c11.2 0 21.8-2.14 32-5.2v-51.68a63.33 63.33 0 0 1-32 8.88 64 64 0 0 1 0-128zM240.41 0H48A48 48 0 0 0 0 48v416a48 48 0 0 0 48 48h192.41A79.24 79.24 0 0 1 224 464H48V48h176a79.24 79.24 0 0 1 16.41-48z\"]\n};\nvar faSpellCheck = {\n prefix: 'far',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M572.48 279.8l-28.28-28.28a12 12 0 0 0-17 0l-175.18 175-79.28-80.66a12 12 0 0 0-17 0l-28.28 28.28a12 12 0 0 0 0 17l116 117.42a12 12 0 0 0 17 0l212-211.71a12 12 0 0 0 .02-17.05zM145.3 11a16 16 0 0 0-15.18-11H90.4a16 16 0 0 0-15.19 11L.83 235A16 16 0 0 0 16 256h16.87a16 16 0 0 0 15.19-11l12.3-37h103.28l12.3 37a16 16 0 0 0 15.18 11H208a16 16 0 0 0 15.18-21zm-69 149L112 58.84 145.59 160zM280 256h92a76 76 0 0 0 46.16-136.33A76 76 0 0 0 356 0h-76a24 24 0 0 0-24 24v208a24 24 0 0 0 24 24zm24-208h52a28 28 0 0 1 0 56h-52zm0 104h68a28 28 0 0 1 0 56h-68z\"]\n};\nvar faSpider = {\n prefix: 'far',\n iconName: 'spider',\n icon: [576, 512, [], \"f717\", \"M151.17 167.35l30.6 8.65 5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm254.92-69.84l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12 30.6-8.65 27.15-54.3a31.992 31.992 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39zm167.22 251.87l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06c-10.7 0-20.69 5.35-26.62 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.87-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM288 400c-28.71 0-48-27.63-48-53.43 0-35.71 3.55-71.57 10.55-106.59l14.86-74.29C266.55 160.6 271.53 144 288 144c16.46 0 21.45 16.61 22.56 21.56l14.88 74.42c7 35.02 10.55 70.87 10.55 106.58C336 372.37 316.71 400 288 400z\"]\n};\nvar faSpiderBlackWidow = {\n prefix: 'far',\n iconName: 'spider-black-widow',\n icon: [576, 512, [], \"f718\", \"M313.59 288h-51.18c-5.27 0-8.28 5.02-5.12 8.53L278.4 320l-21.11 23.46c-3.16 3.52-.15 8.54 5.12 8.54h51.18c5.27 0 8.28-5.02 5.12-8.54L297.6 320l21.11-23.47c3.16-3.51.15-8.53-5.12-8.53zM151.17 167.35l30.6 8.65 5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm254.92-69.84l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12 30.6-8.65 27.15-54.3a31.992 31.992 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39zm167.22 251.87l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06c-10.7 0-20.69 5.35-26.62 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.87-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM288 400c-28.71 0-48-27.63-48-53.43 0-35.71 3.55-71.57 10.55-106.59l14.86-74.29C266.55 160.6 271.53 144 288 144c16.46 0 21.45 16.61 22.56 21.56l14.88 74.42c7 35.02 10.55 70.87 10.55 106.58C336 372.37 316.71 400 288 400z\"]\n};\nvar faSpiderWeb = {\n prefix: 'far',\n iconName: 'spider-web',\n icon: [576, 512, [], \"f719\", \"M569.41 239.5c-59-62.2-102.69-138.98-126.32-222.03C439.56 5.02 426.9-2.47 414.15.75c-82.56 20.72-169.75 20.72-252.32 0-12.81-3.17-25.38 4.27-28.94 16.72-23.61 83.05-67.3 159.83-126.3 222.03-8.78 9.27-8.78 23.76 0 33.03 59 62.2 102.69 138.98 126.32 222.03 3.53 12.44 16.06 19.83 28.94 16.72 82.56-20.72 169.75-20.72 252.32 0 1.97.48 3.94.72 5.84.72 10.5 0 20.09-6.91 23.09-17.44 23.63-83.06 67.31-159.83 126.32-222.03 8.78-9.27 8.78-23.77-.01-33.03zm-68.84-7.48h-45.99c-27.73-31.88-48.83-69.55-61.87-110.25l22.49-39.2c20.99 53.84 49.78 104.23 85.37 149.45zm-254 0h-64.04a362.548 362.548 0 0 0 31.78-56.22l32.26 56.22zm7.54-83.27c22.54 2.27 45.25 2.27 67.79 0L288 207.81l-33.89-59.06zm-7.54 131.26l-32.25 56.2a362.814 362.814 0 0 0-31.8-56.2h64.05zM288 304.22l33.9 59.07c-11.27-1.13-22.58-1.83-33.9-1.83s-22.63.69-33.9 1.83l33.9-59.07zm41.43-24.21h64.05a365.399 365.399 0 0 0-31.8 56.2l-32.25-56.2zm0-47.99l32.26-56.22a363.01 363.01 0 0 0 31.78 56.22h-64.04zM374.6 56.9l-21.79 37.97a289.7 289.7 0 0 1-129.62 0L201.4 56.9a568.257 568.257 0 0 0 173.2 0zM160.81 82.57l22.49 39.2c-13.04 40.7-34.15 78.37-61.87 110.25h-46c35.59-45.22 64.38-95.61 85.38-149.45zM75.43 280.01h45.98c27.73 31.85 48.84 69.53 61.89 110.24l-22.49 39.2c-21-53.83-49.79-104.22-85.38-149.44zM201.4 455.12l21.79-37.97a289.7 289.7 0 0 1 129.62 0l21.79 37.97c-28.69-4.43-57.59-7.39-86.6-7.39s-57.91 2.97-86.6 7.39zm213.79-25.67l-22.49-39.2c13.05-40.72 34.15-78.39 61.89-110.24h45.98c-35.59 45.22-64.38 95.61-85.38 149.44z\"]\n};\nvar faSpinner = {\n prefix: 'far',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M296 48c0 22.091-17.909 40-40 40s-40-17.909-40-40 17.909-40 40-40 40 17.909 40 40zm-40 376c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm248-168c0-22.091-17.909-40-40-40s-40 17.909-40 40 17.909 40 40 40 40-17.909 40-40zm-416 0c0-22.091-17.909-40-40-40S8 233.909 8 256s17.909 40 40 40 40-17.909 40-40zm20.922-187.078c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40c0-22.092-17.909-40-40-40zm294.156 294.156c-22.091 0-40 17.909-40 40s17.909 40 40 40c22.092 0 40-17.909 40-40s-17.908-40-40-40zm-294.156 0c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40z\"]\n};\nvar faSpinnerThird = {\n prefix: 'far',\n iconName: 'spinner-third',\n icon: [512, 512, [], \"f3f4\", \"M460.116 373.846l-20.823-12.022c-5.541-3.199-7.54-10.159-4.663-15.874 30.137-59.886 28.343-131.652-5.386-189.946-33.641-58.394-94.896-95.833-161.827-99.676C261.028 55.961 256 50.751 256 44.352V20.309c0-6.904 5.808-12.337 12.703-11.982 83.556 4.306 160.163 50.864 202.11 123.677 42.063 72.696 44.079 162.316 6.031 236.832-3.14 6.148-10.75 8.461-16.728 5.01z\"]\n};\nvar faSplotch = {\n prefix: 'far',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M459.67 179.63l-60.75-20.49c-9.69-3.28-17-10.05-19.03-17.7l-14.5-53.97c-6.84-25.44-27.69-45.05-55.75-52.42-30.87-8.06-63.09.17-84.22 21.66l-41.81 42.55c-7 7.16-18.62 11.02-30.16 10.14l-65.15-5.02c-33.56-2.42-65.03 13.2-79.9 40.21-12.87 23.38-10.87 50.32 5.34 72.05l34.9 46.78c4.62 6.19 5.34 13.16 2.03 19.67l-25.75 50.88c-11.84 23.36-9.25 49.85 6.97 70.85 19.25 24.99 53 36.47 86.09 29.38l63.4-13.64c11.34-2.5 23.78-.05 32.37 6.28L263 463.28c14.87 11.03 33.28 16.72 51.87 16.72 12.69 0 25.44-2.64 37.25-8.03 25.41-11.59 41.75-33.77 43.75-59.35l4.25-55.24c.56-7.44 6.03-14.47 14.66-18.8l56.19-28.35c27.22-13.74 42.87-39.63 40.87-67.55-2.04-28.72-22.04-52.9-52.17-63.05zm-10.34 87.75l-56.19 28.35c-23.75 11.98-39.03 33.66-40.9 57.97l-4.25 55.24c-.87 11.38-11.34 17.33-15.81 19.36-10.19 4.63-27 6.5-40.62-3.58l-49.22-36.45c-14.66-10.86-33.19-16.67-52.03-16.67-6.34 0-12.75.67-19.03 2.02l-63.4 13.64c-17 3.75-31.4-3.23-37.97-11.75-4.87-6.33-5.62-13.02-2.16-19.84L93.5 304.8c11.47-22.58 9.03-49.44-6.37-70.1l-34.9-46.78c-4.94-6.59-5.53-13.39-1.78-20.19 4.44-8.02 16.03-16.75 34.19-15.52l65.15 5.02c25.25 2.08 51.12-7.09 68.09-24.35l41.81-42.56c8.87-9.05 23.69-12.53 37.75-8.86 11.22 2.95 19.28 9.84 21.59 18.47l14.5 53.94c6.25 23.31 24.97 42.27 50.09 50.74l60.75 20.49c11.62 3.92 18.94 11.78 19.59 21 .62 8.53-4.72 16.29-14.63 21.28z\"]\n};\nvar faSprayCan = {\n prefix: 'far',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M480 128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm0 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm0-128c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-64 96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96c-53.02 0-96 42.98-96 96v256c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V224c0-53.02-42.98-96-96-96zm-80-80h32v80h-32V48zm128 416H48V224c0-26.47 21.53-48 48-48h128c26.47 0 48 21.53 48 48v240zM160 256c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64z\"]\n};\nvar faSprinkler = {\n prefix: 'far',\n iconName: 'sprinkler',\n icon: [512, 512, [], \"e035\", \"M24,104a24,24,0,1,0,24,24A24,24,0,0,0,24,104Zm0,104a24,24,0,1,0,24,24A24,24,0,0,0,24,208ZM88,96A24,24,0,1,0,64,72,24,24,0,0,0,88,96ZM488,48a24,24,0,1,0-24-24A24,24,0,0,0,488,48ZM360,152a24,24,0,1,0-24-24A24,24,0,0,0,360,152Zm-208,0a24,24,0,1,0-24-24A24,24,0,0,0,152,152Zm336,56a24,24,0,1,0,24,24A24,24,0,0,0,488,208ZM424,64a24,24,0,1,0,24,24A24,24,0,0,0,424,64Zm64,40a24,24,0,1,0,24,24A24,24,0,0,0,488,104ZM24,0A24,24,0,1,0,48,24,24,24,0,0,0,24,0ZM424,160a24,24,0,1,0,24,24A24,24,0,0,0,424,160Zm-25.81,96H288V80a16,16,0,0,0-16-16H240a16,16,0,0,0-16,16V256H113.81a17.77,17.77,0,0,0-14.22,28.44l67.52,78.23L192,387.56V496a16,16,0,0,0,16,16h96a16,16,0,0,0,16-16V387.56l24.89-24.89,67.52-78.23A17.77,17.77,0,0,0,398.19,256ZM272,367.68V464H240V367.68L179.88,304H332.12ZM112,168a24,24,0,1,0-24,24A24,24,0,0,0,112,168Z\"]\n};\nvar faSquare = {\n prefix: 'far',\n iconName: 'square',\n icon: [448, 512, [], \"f0c8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z\"]\n};\nvar faSquareFull = {\n prefix: 'far',\n iconName: 'square-full',\n icon: [512, 512, [], \"f45c\", \"M0 0v512h512V0H0zm464 464H48V48h416v416z\"]\n};\nvar faSquareRoot = {\n prefix: 'far',\n iconName: 'square-root',\n icon: [512, 512, [], \"f697\", \"M174.06 480c-17.84 0-33.88-9.92-41.81-25.89L49.19 288H16c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h38.12c15.16 0 29.03 8.57 35.81 22.13l75.65 151.33c3.31 6.63 13.08 5.58 14.91-1.6l97.19-349.24C282.09 44.58 298.09 32 316.59 32H496c8.84 0 16 7.16 16 16v16c0 8.84-7.16 16-16 16H322.88L219.56 444.2c-5.09 21.08-23.81 35.8-45.5 35.8z\"]\n};\nvar faSquareRootAlt = {\n prefix: 'far',\n iconName: 'square-root-alt',\n icon: [512, 512, [], \"f698\", \"M507.45 239.54l-10.99-10.99c-6.07-6.07-15.91-6.07-21.98 0L432 271.03l-42.47-42.47c-6.07-6.07-15.91-6.07-21.98 0l-10.99 10.99c-6.07 6.07-6.07 15.91 0 21.98L399.03 304l-42.47 42.47c-6.07 6.07-6.07 15.91 0 21.98l10.99 10.99c6.07 6.07 15.91 6.07 21.98 0L432 336.97l42.47 42.47c6.07 6.07 15.91 6.07 21.98 0l10.99-10.99c6.07-6.07 6.07-15.91 0-21.98L464.97 304l42.47-42.47c6.08-6.07 6.08-15.92.01-21.99zM496 32H316.59c-18.5 0-34.5 12.58-38.91 30.62l-97.2 349.24c-1.83 7.18-11.59 8.23-14.91 1.6L89.93 262.13A40.034 40.034 0 0 0 54.12 240H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h33.19l83.06 166.11c7.94 15.97 23.97 25.89 41.81 25.89 21.69 0 40.41-14.72 45.5-35.8L322.88 80H496c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faSquirrel = {\n prefix: 'far',\n iconName: 'squirrel',\n icon: [512, 512, [], \"f71a\", \"M480 256c17.67 0 32-14.33 32-32v-32c0-58.44-37.09-105.88-88-117.34V48c0-13.25-10.75-24-24-24-55.42 0-88.73 42.76-106.56 73.23C265.04 42.96 206.07 0 147.72 0 66.28 0 0 66.27 0 147.73c0 69.03 47.59 127.16 111.69 143.3l-8.81 18.3c-18.64 48.91-11.55 100.12 22.63 142.81 31.38 39.2 80.54 59.86 130.75 59.86H496c8.22 0 15.57-6.22 15.96-14.43.88-18.39-13.77-33.57-31.96-33.57h-29.85c12.72-18.38 21.85-40.48 21.85-64 0-51.33-30.06-89.67-75.84-100.75l7.88-43.25H480zm-126.7 88c20.5 0 40.83 7.13 55.31 21.63 41.83 41.89-13.4 93.04-26.97 98.37h-139.2c-56.03 0-101.62-45.59-101.62-101.64 0-11.78 2.34-23.88 6.12-34.05l39.03-80.84h-34.78c-50.68 0-95.9-36.34-102.34-86.62C41.05 100.03 88.4 48 147.72 48c54.91 0 115.22 60.3 115.22 115.2h.44l-54.33 130.68c-3.39 8.16.47 17.52 8.63 20.92l14.76 6.14c8.16 3.4 17.53-.47 20.92-8.63l72.11-173.58c16-31.98 32.44-51.95 50.53-61.02V120h24c35.88 0 64 31.62 64 72v16H363.97l-24.72 136h14.05zM400 176c8.84 0 16-7.16 16-16s-7.16-16-16-16-16 7.16-16 16 7.16 16 16 16z\"]\n};\nvar faStaff = {\n prefix: 'far',\n iconName: 'staff',\n icon: [512, 512, [], \"f71b\", \"M448 0h-76.23a64 64 0 0 0-57.24 35.38l-16 32c-3.95 7.9-.75 17.51 7.15 21.46l28.63 14.31c7.9 3.95 17.51.75 21.47-7.15l16-32H448v103.86l-168.92 48.28a159.974 159.974 0 0 0-69.15 40.69L146.75 320H112c-8.84 0-16 7.16-16 16v34.75L4.69 462.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L255.15 302.1a96.027 96.027 0 0 1 41.54-24.44l70.31-20.1 35.14 20.29c7.65 4.42 17.44 1.8 21.86-5.86l21.24-36.79 20.35-5.82c27.47-7.85 46.41-32.96 46.41-61.53V64c0-35.35-28.65-64-64-64z\"]\n};\nvar faStamp = {\n prefix: 'far',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M416 256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.42 21.46-77.73 9.11-17.61 12.9-38.38 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C267.41.49 261.65 0 256 0c-53.02 0-96 42.98-96 96 0 14.16 3.12 27.54 8.68 39.57C182.02 164.43 192 194.71 192 226.5v.06c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v48c0 8.84 7.16 16 16 16h16v64c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-64h16c8.84 0 16-7.16 16-16v-48c0-53.02-42.98-96-96-96zM48 352c0-26.47 21.53-48 48-48h66.56c42.7 0 77.44-34.74 77.44-77.5 0-34.82-8.82-70.11-27.74-111.06-2.83-6.12-4.26-12.66-4.26-19.44 0-26.47 21.53-48 48-48 2.96 0 6 .27 9.02.79 18.82 3.28 34.89 19.43 38.2 38.42 1.87 10.71.39 20.85-4.4 30.11C280.78 152.21 272 184.85 272 217.1v9.46c0 42.7 34.74 77.44 77.44 77.44H416c26.47 0 48 21.53 48 48v16H48v-16zm384 112H80v-48h352v48z\"]\n};\nvar faStar = {\n prefix: 'far',\n iconName: 'star',\n icon: [576, 512, [], \"f005\", \"M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z\"]\n};\nvar faStarAndCrescent = {\n prefix: 'far',\n iconName: 'star-and-crescent',\n icon: [512, 512, [], \"f699\", \"M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zM48 256c0-70.16 34.92-132.33 88.3-170.02-39.73 45.51-63.83 105-63.83 170.02 0 65.02 24.1 124.51 63.83 170.02C82.93 388.33 48 326.16 48 256zm455.46-42.14l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99zm-83.25 36.48l-18.07 17.61 4.27 24.87.02.1-.09-.05L384 281.14l-22.34 11.74-.09.04.02-.1 4.27-24.87-18.07-17.61-.07-.07.1-.01 24.97-3.63L383.96 224l.04-.09.04.09 11.17 22.63 24.97 3.63.1.01-.07.07z\"]\n};\nvar faStarChristmas = {\n prefix: 'far',\n iconName: 'star-christmas',\n icon: [512, 512, [], \"f7d4\", \"M487.7 224.9l-121.8-30.5 60.7-75.4c7.8-9.8 7.1-23.2-1.7-32-8.8-8.8-22.2-9.4-32-1.7l-75.5 60.4-30.3-121.4C283.5 10 270.7 0 256 0h-.1c-14.8 0-27.5 10-31 24.3l-30.5 121.9L119 85.5c-9.8-7.8-23.2-7.1-32 1.7-8.8 8.8-9.5 22.2-1.7 32l60.4 75.5-121.4 30.2C10 228.5 0 241.3 0 256c0 14.7 10 27.5 24.3 31.1l121.8 30.5L85.4 393c-7.8 9.8-7.1 23.2 1.7 32 4.7 4.7 10.8 7.1 16.8 7.1 5.3 0 10.6-1.8 15.1-5.4l75.5-60.4 30.4 121.5c3.5 14.3 16.3 24.3 31 24.3h.1c14.7 0 27.5-10 31.1-24.3L317.6 366l75.4 60.7c4.5 3.6 9.8 5.4 15.1 5.4 6.1 0 12.1-2.4 16.8-7.1 8.8-8.8 9.5-22.2 1.7-32l-60.4-75.5 121.5-30.4C502 283.5 512 270.7 512 256c0-14.7-10-27.5-24.3-31.1zm-200.1 62.7L256 414.1l-31.6-126.5L97.9 256l126.5-31.6L256 97.9l31.6 126.5L414.1 256l-126.5 31.6z\"]\n};\nvar faStarExclamation = {\n prefix: 'far',\n iconName: 'star-exclamation',\n icon: [576, 512, [], \"f2f3\", \"M252.5 184.6c-.4-4.6 3.3-8.6 8-8.6h55.1c4.7 0 8.3 4 8 8.6l-6.8 88c-.3 4.2-3.8 7.4-8 7.4h-41.5c-4.2 0-7.7-3.2-8-7.4l-6.8-88zM288 296c-22.1 0-40 17.9-40 40s17.9 40 40 40 40-17.9 40-40-17.9-40-40-40zm257.9-70L440.1 329l25 145.5c4.5 26.2-23.1 46-46.4 33.7L288 439.6l-130.7 68.7c-23.4 12.3-50.9-7.6-46.4-33.7l25-145.5L30.1 226c-19-18.5-8.5-50.8 17.7-54.6L194 150.2l65.3-132.4c11.8-23.8 45.7-23.7 57.4 0L382 150.2l146.1 21.2c26.2 3.8 36.7 36.1 17.8 54.6zm-56.8-11.7l-139-20.2-62.1-126L225.8 194l-139 20.2 100.6 98-23.7 138.4L288 385.3l124.3 65.4-23.7-138.4 100.5-98z\"]\n};\nvar faStarHalf = {\n prefix: 'far',\n iconName: 'star-half',\n icon: [576, 512, [], \"f089\", \"M288 385.3l-124.3 65.4 23.7-138.4-100.6-98 139-20.2 62.2-126V0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6v-54.3z\"]\n};\nvar faStarHalfAlt = {\n prefix: 'far',\n iconName: 'star-half-alt',\n icon: [536, 512, [], \"f5c0\", \"M390.6 439.61l-7.94 5.88-22.39 42.5 38.67 20.28c4.7 2.45 9.68 3.7 14.83 3.7 9.41 0 18.68-4.38 24.74-11.59 4.84-5.75 7.41-12.73 7.41-20.2l-7.91-48.69-47.41 8.12zM278.98 391.6c-6.77-3.54-14.92-4.21-22.18-.4l-113.32 59.44 23.83-138.31-100.8-98.02 139.28-20.28 62.2-125.88 10.02 20.29 43.15-21.22-24.41-49.41C291.29 6.83 280.24 0 267.92 0c-12.46 0-23.19 6.67-28.68 17.81l-65.41 132.38-146.4 21.3c-12.21 1.8-22.11 10.19-25.8 21.73-3.84 11.69-.74 24.28 8.09 32.86l105.9 103-25.05 145.5c-1.61 9.45.86 18.64 6.94 25.83 6.12 7.27 15.34 11.59 24.69 11.59 5.2 0 10.25-1.3 14.86-3.75l130.95-68.68 45.58 23.91 22.39-42.5-56.77-29.78-.23.4zm51.23-197.57l75.95 11.06 6.95-47.5-50.96-7.41-22.77-46.09-43.15 21.22 33.98 68.72zm204.22-.62c-3.76-11.73-13.67-20.12-25.89-21.92l-43.32-6.31-6.95 47.5 3.21 9.42 33.57 34.38L526.38 226c6.22-6.09 9.63-14.14 9.63-22.66l-1.58-9.93zM368.68 312.33l13.01 75.52 47.41-8.12-8.72-50.64 36.86-35.86-33.57-34.38-54.99 53.48z\"]\n};\nvar faStarOfDavid = {\n prefix: 'far',\n iconName: 'star-of-david',\n icon: [464, 512, [], \"f69a\", \"M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.11 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm1.29-96l-29.22 49.08L348.53 160h58.44zm-57.15 96l-57.15 96H171.33l-57.15-96 57.15-96h121.34l57.15 96zM232 58.08L264.1 112h-64.2L232 58.08zM57.03 160h58.44l-29.22 49.08L57.03 160zm0 192l29.22-49.08L115.47 352H57.03zM232 453.92L199.9 400h64.2L232 453.92zM348.53 352l29.22-49.08L406.97 352h-58.44z\"]\n};\nvar faStarOfLife = {\n prefix: 'far',\n iconName: 'star-of-life',\n icon: [512, 512, [], \"f621\", \"M288 512h-64c-22.06 0-40-17.94-40-40v-92.36l-90.93 46.83c-19.06 10.8-43.65 4.27-54.81-14.5L5.55 356.48c-5.5-9.31-6.97-20.14-4.16-30.53 2.81-10.44 9.59-19.11 19.06-24.44L101.04 256l-80.65-45.55c-9.41-5.3-16.19-13.97-19-24.41-2.81-10.39-1.34-21.22 4.12-30.5l32.75-55.47c11.16-18.81 35.72-25.31 54.81-14.53L184 132.35V40c0-22.06 17.94-40 40-40h64c22.06 0 40 17.94 40 40v92.36l90.93-46.83c19.09-10.78 43.65-4.28 54.81 14.5l32.72 55.48c5.5 9.31 6.97 20.14 4.16 30.53-2.81 10.44-9.59 19.11-19.06 24.44L410.96 256l80.59 45.52c9.47 5.33 16.25 14 19.06 24.44 2.81 10.39 1.34 21.22-4.12 30.5l-32.75 55.47c-11.12 18.81-35.68 25.34-54.81 14.53L328 379.65V472c-.01 22.06-17.94 40-40 40zm-56-48h48V297.42l156.21 83.67 24.65-41.78L305.34 256l155.52-83.31-24.65-41.78L280 214.58V48h-48v166.58L75.8 130.91l-24.65 41.78L206.66 256 51.14 339.31l24.65 41.78L232 297.42V464z\"]\n};\nvar faStarShooting = {\n prefix: 'far',\n iconName: 'star-shooting',\n icon: [512, 512, [], \"e036\", \"M308.68131,192.00421l11.31076,11.30858a15.997,15.997,0,0,0,22.62737,0L507.31388,38.6235a15.99983,15.99983,0,0,0,0-22.62693L496.00312,4.686a16.00057,16.00057,0,0,0-22.62737,0L308.68131,169.37533A16.00218,16.00218,0,0,0,308.68131,192.00421ZM239.99059,91.3129a15.997,15.997,0,0,0,22.62737,0l52.69238-52.6894a15.99983,15.99983,0,0,0,0-22.62693L303.99958,4.686a16.00057,16.00057,0,0,0-22.62737,0l-52.69237,52.6894a16.00217,16.00217,0,0,0,0,22.62889Zm256.01253,105.373a16.00057,16.00057,0,0,0-22.62737,0l-52.69237,52.6894a16.00217,16.00217,0,0,0,0,22.62889l11.31075,11.30858a15.997,15.997,0,0,0,22.62737,0l52.69238-52.6894a15.99984,15.99984,0,0,0,0-22.62694ZM364.29366,267.27562l-104.7988-15.29686-46.90712-95.203a22.94639,22.94639,0,0,0-41.18826,0l-46.90711,95.203L19.69356,267.27562C.89634,269.97875-6.71318,293.18185,6.9902,306.47871l75.90765,73.99993L64.89752,485.07229A23.05366,23.05366,0,0,0,87.52489,512,22.45856,22.45856,0,0,0,98.195,509.27539l93.7986-49.39057,93.79861,49.39057a22.76456,22.76456,0,0,0,10.66426,2.68164,22.9945,22.9945,0,0,0,22.63323-26.88474l-17.891-104.59365,75.892-73.99993C390.7004,293.18185,383.09089,269.97875,364.29366,267.27562ZM249.63335,363.71694l13.58618,79.42375-71.22592-37.50387-71.16733,37.47457,13.66041-79.37687L76.75516,307.45527l79.64209-11.625,35.59636-72.246,35.59636,72.246L307.32,307.469Z\"]\n};\nvar faStarfighter = {\n prefix: 'far',\n iconName: 'starfighter',\n icon: [640, 512, [], \"e037\", \"M288,256v48a16.00079,16.00079,0,0,0,16,16h32a16.00079,16.00079,0,0,0,16-16V256a32,32,0,0,0-64,0ZM624,128v-8a24,24,0,0,0-48,0v8H560v32h16V352H528V304a64.07207,64.07207,0,0,0-64-64H432a63.18953,63.18953,0,0,0-20.36133,3.62891L385.5625,35.03125A40.06534,40.06534,0,0,0,345.875,0h-51.75a40.06457,40.06457,0,0,0-39.6875,35.03125L228.51367,243.67578A63.19136,63.19136,0,0,0,208,240H176a64.07207,64.07207,0,0,0-64,64v48H64V160H80V128H64v-8a24,24,0,0,0-48,0v8H0v32H16V424a23.88263,23.88263,0,0,0,45.52734,10.21094L168,476.80078V496a16.00079,16.00079,0,0,0,16,16h16a16.00079,16.00079,0,0,0,16-16V479.19141a63.1753,63.1753,0,0,0,23.95117-8.06836C246.71484,476.35938,254.80078,480,264,480H376c9.19922,0,17.28516-3.64258,24.04883-8.877A63.1753,63.1753,0,0,0,424,479.19141V496a16.00079,16.00079,0,0,0,16,16h16a16.00079,16.00079,0,0,0,16-16V476.80078l106.47266-42.58984A23.88263,23.88263,0,0,0,624,424V160h16V128ZM224,416a16.00079,16.00079,0,0,1-16,16H176a16.00079,16.00079,0,0,1-16-16V304a15.99954,15.99954,0,0,1,16-16h32a15.99954,15.99954,0,0,1,16,16Zm144,0a16.00079,16.00079,0,0,1-16,16H287.98047a15.99913,15.99913,0,0,1-16-15.98047l-.168-133.03515L301.1875,48h37.625L368,280Zm112,0a16.00079,16.00079,0,0,1-16,16H432a16.00079,16.00079,0,0,1-16-16V304a15.99954,15.99954,0,0,1,16-16h32a15.99954,15.99954,0,0,1,16,16Z\"]\n};\nvar faStarfighterAlt = {\n prefix: 'far',\n iconName: 'starfighter-alt',\n icon: [576, 512, [], \"e038\", \"M560,32H544a15.99954,15.99954,0,0,0-16,16V195.26562L421.86133,168.73047C393.30078,125.01172,344.11719,96,288,96s-105.30078,29.01172-133.86133,72.73047L48,195.26562V48A15.99954,15.99954,0,0,0,32,32H16A15.99954,15.99954,0,0,0,0,48V464a16.00079,16.00079,0,0,0,16,16H32a16.00079,16.00079,0,0,0,16-16V316.73438l106.13867,26.53515C182.69922,386.98828,231.88281,416,288,416s105.30078-29.01172,133.86133-72.73047L528,316.73438V464a16.00079,16.00079,0,0,0,16,16h16a16.00079,16.00079,0,0,0,16-16V48A15.99954,15.99954,0,0,0,560,32ZM131.23242,288.07422,56,269.26562V242.73438l75.23242-18.8086a160.74708,160.74708,0,0,0,0,64.14844ZM304,145.61719a110.85425,110.85425,0,0,1,50.76562,20.99219l-28.57031,28.57031A71.32957,71.32957,0,0,0,304,185.92578Zm-32,0v40.30859a71.32957,71.32957,0,0,0-22.19531,9.25391l-28.57031-28.57031A110.85425,110.85425,0,0,1,272,145.61719Zm-73.39062,43.61719,28.57031,28.57031A71.30232,71.30232,0,0,0,217.92578,240H177.61719A110.85425,110.85425,0,0,1,198.60938,189.23438ZM177.61719,272h40.30859a71.32957,71.32957,0,0,0,9.25391,22.19531l-28.56836,28.56836A110.82866,110.82866,0,0,1,177.61719,272ZM272,366.38281a110.82866,110.82866,0,0,1-50.76367-20.99414l28.56836-28.56836A71.32957,71.32957,0,0,0,272,326.07422ZM264,256a24,24,0,1,1,24,24A24.02624,24.02624,0,0,1,264,256Zm40,110.38281V326.07422a71.32957,71.32957,0,0,0,22.19531-9.25391l28.57031,28.57031A110.83317,110.83317,0,0,1,304,366.38281Zm73.38867-43.61914-28.56836-28.56836A71.32957,71.32957,0,0,0,358.07422,272h40.30859A110.82866,110.82866,0,0,1,377.38867,322.76367ZM358.07422,240a71.30232,71.30232,0,0,0-9.25391-22.19531l28.57031-28.57031A110.85425,110.85425,0,0,1,398.38281,240ZM520,269.26562l-75.23242,18.8086a160.74708,160.74708,0,0,0,0-64.14844L520,242.73438Z\"]\n};\nvar faStars = {\n prefix: 'far',\n iconName: 'stars',\n icon: [512, 512, [], \"f762\", \"M259.68734,85.96808l49.6461,20.70054,20.70378,49.645a6.65746,6.65746,0,0,0,11.92616,0l20.70182-49.645,49.6461-20.70054a6.6661,6.6661,0,0,0,0-11.92542L362.6652,53.34017l-20.70182-49.643a6.65746,6.65746,0,0,0-11.92616,0l-20.70378,49.643-49.6461,20.70249a6.6661,6.6661,0,0,0,0,11.92542Zm249.3653,133.26937L469.3385,202.67936l-16.55912-39.71168a5.32691,5.32691,0,0,0-9.54132,0L426.677,202.67936,386.9648,219.23745a5.33414,5.33414,0,0,0,0,9.54072L426.677,245.33822l16.56107,39.70972a5.32534,5.32534,0,0,0,9.54132,0l16.55912-39.70972,39.71414-16.56005a5.33414,5.33414,0,0,0,0-9.54072ZM364.30783,267.30434,259.492,252.00793l-46.90773-95.20022a22.76642,22.76642,0,0,0-20.68816-12.79648,22.40194,22.40194,0,0,0-20.50065,12.79648l-46.90773,95.20022L19.67194,267.30434C.89009,270.00739-6.7039,293.2098,6.984,306.50627L82.89269,380.504,64.89212,485.09457C62.29829,500.00037,74.17366,512,87.48658,512a22.24712,22.24712,0,0,0,10.68784-2.703l93.81546-49.38912L285.80535,509.297a22.859,22.859,0,0,0,33.2823-24.20239L301.18084,380.504l75.90865-73.99774C390.68367,293.2098,383.08968,270.00739,364.30783,267.30434ZM249.4917,363.8014l13.68794,79.40382-71.18976-37.49885-71.31475,37.49885,13.71918-79.40382L76.58,307.50624l79.815-11.5934,35.59487-72.20092,35.59488,72.20092,79.815,11.5934Z\"]\n};\nvar faStarship = {\n prefix: 'far',\n iconName: 'starship',\n icon: [640, 512, [], \"e039\", \"M448,64c-78.54688,0-145.97461,47.22266-175.71289,114.77734l-71.15039,6.46875L163.26562,160H192a64,64,0,0,0,0-128H32A31.99908,31.99908,0,0,0,0,64v64a31.99908,31.99908,0,0,0,32,32H76.73438l48.25585,32.17188C86.27336,195.68455,64,224.521,64,256c0,30.88879,21.50605,60.23325,60.98828,63.832L76.73438,352H32A31.99908,31.99908,0,0,0,0,384v64a31.99908,31.99908,0,0,0,32,32H192a64,64,0,0,0,0-128H163.26562l37.86915-25.24609,71.15234,6.46875C302.02344,400.77734,369.45312,448,448,448c106.03906,0,192-85.96094,192-192S554.03906,64,448,64ZM48,112V80H192a16,16,0,0,1,0,32ZM192,400a16,16,0,0,1,0,32H48V400Zm66.22852-116.26367L126.375,271.75a15.81421,15.81421,0,0,1,.03125-31.5l131.82227-11.98438A192.33608,192.33608,0,0,0,256,256,192.36313,192.36313,0,0,0,258.22852,283.73633ZM448,400c-79.40234,0-144-64.59766-144-144s64.59766-144,144-144,144,64.59766,144,144S527.40234,400,448,400Zm0-224a80,80,0,1,0,80,80A79.999,79.999,0,0,0,448,176Zm0,112a32,32,0,1,1,32-32A32.00033,32.00033,0,0,1,448,288Z\"]\n};\nvar faStarshipFreighter = {\n prefix: 'far',\n iconName: 'starship-freighter',\n icon: [576, 512, [], \"e03a\", \"M127.99741,336A16,16,0,1,0,143.997,352,16.00059,16.00059,0,0,0,127.99741,336Zm-31.9992-96a16,16,0,1,0,15.9996,16A16.0006,16.0006,0,0,0,95.99821,240Zm31.9992-96A16,16,0,1,0,143.997,160,16.00059,16.00059,0,0,0,127.99741,144Zm426.95819-7.668L311.32686,47.5625A257.73035,257.73035,0,0,0,224.43448,32c-29.15162,0-58.1177,5.41211-85.21469,17.15039C-4.095,111.22266.01425,256,.01425,256S-4.34111,400.666,139.21979,462.84961c27.09308,11.73437,56.067,17.14844,85.21469,17.14844,25.39195,0,50.8503-4.32813,75.38095-11.94532l9.08376,13.05665A71.93338,71.93338,0,0,0,367.99148,512h71.99821a71.67038,71.67038,0,0,0,57.19976-115.28516L554.9556,375.668A31.998,31.998,0,0,0,576,345.60156V166.39844A31.998,31.998,0,0,0,554.9556,136.332Zm-330.52112,295.666c-103.46619,0-177.84521-89.92188-176.41946-175.96875C46.79239,163.28711,126.48378,80.09375,224.28409,80.01367,256.48252,79.98633,399.99068,106.793,399.99068,256A173.67687,173.67687,0,0,1,381.497,333.33594l-53.5436-76.95508c0-.13086.03907-.25.03907-.38086a87.99783,87.99783,0,1,0-175.99565,0c0,37.76562,24.03456,69.77539,57.5142,82.23633l60.98091,87.66211C255.09974,429.50977,239.69582,431.99805,224.43448,431.99805ZM279.99365,256a39.999,39.999,0,1,1-39.999-40A39.999,39.999,0,0,1,279.99365,256Zm159.996,208H367.99148a23.959,23.959,0,0,1-19.687-10.29688L268.42558,338.875a87.70726,87.70726,0,0,0,39.35059-27.44531L380.52242,416h59.46727a24,24,0,0,1,0,48Zm88.0115-129.59766L435.79058,368H417.27932a221.81734,221.81734,0,0,0,28.32156-80h82.38664l.01367-.002Zm0-110.40039L527.98752,224h-82.3964a221.319,221.319,0,0,0-33.4816-88.62891l115.89167,42.22657Z\"]\n};\nvar faSteak = {\n prefix: 'far',\n iconName: 'steak',\n icon: [576, 512, [], \"f824\", \"M368.85 96c-27.31 0-51.89 23.7-62.62 60.36-6.24 21.36-26.75 106.21-173.16 170-82.13 35.76-9.65 88.57 95.81 88.57 72.76 0 161.21-25.12 225.45-98.31 38.21-43.53 32.8-126-11.57-176.59C417.86 111.58 391.61 96 368.85 96zM384 255.9a32 32 0 1 1 32-32 32 32 0 0 1-32 32zM514.92 76.65C467.92 23.11 416.28 0 368.85 0 298.27 0 237 51.17 214.1 129.39 165 269.32 1.37 212.32 0 351.63-1.13 467.49 126.32 512 239.31 512q8.41 0 16.69-.32c87.78-3.41 187.32-37.1 270.49-131.85C596.78 299.75 591.6 164 514.92 76.65zm-24.5 271.51c-79.89 91-172.59 113.08-236.28 115.55q-7.37.29-14.83.29c-71.69 0-135.83-19.8-167.39-51.66C55.59 395.85 47.77 376.15 48 352.1c.38-39.52 15.05-47.66 65.88-69.79 48.52-21.13 115-50.06 145.5-137l.42-1.2.35-1.22C277 85.24 319.69 48 368.85 48c37.32 0 75.36 20.86 110 60.32 60.15 68.58 65.49 178.41 11.57 239.84z\"]\n};\nvar faSteeringWheel = {\n prefix: 'far',\n iconName: 'steering-wheel',\n icon: [496, 512, [], \"f622\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 48c102.14 0 186.51 77.02 198.42 176h-84.65c-12.85-32.71-44.55-56-81.77-56h-64c-37.22 0-68.92 23.29-81.77 56H49.58C61.5 133.02 145.86 56 248 56zm0 270.05l-71-70.98c4.06-17.77 20-31.06 39-31.06h64c19 0 34.94 13.3 39 31.06l-71 70.98zM49.58 280h84.48L224 369.93v84.49C132.9 443.45 60.55 371.1 49.58 280zM272 454.42v-84.49L361.94 280h84.48C435.46 371.1 363.1 443.45 272 454.42z\"]\n};\nvar faStepBackward = {\n prefix: 'far',\n iconName: 'step-backward',\n icon: [448, 512, [], \"f048\", \"M76 480h24c6.6 0 12-5.4 12-12V285l219.5 187.6c20.6 17.2 52.5 2.8 52.5-24.6V64c0-27.4-31.9-41.8-52.5-24.6L112 228.1V44c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v424c0 6.6 5.4 12 12 12zM336 98.5v315.1L149.3 256.5 336 98.5z\"]\n};\nvar faStepForward = {\n prefix: 'far',\n iconName: 'step-forward',\n icon: [448, 512, [], \"f051\", \"M372 32h-24c-6.6 0-12 5.4-12 12v183L116.5 39.4C95.9 22.3 64 36.6 64 64v384c0 27.4 31.9 41.8 52.5 24.6L336 283.9V468c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12zM112 413.5V98.4l186.7 157.1-186.7 158z\"]\n};\nvar faStethoscope = {\n prefix: 'far',\n iconName: 'stethoscope',\n icon: [512, 512, [], \"f0f1\", \"M120 334v18c0 88.2 75.4 160 168 160s168-71.8 168-160v-99.7c32.3-10.1 55.7-40.2 56-75.7.3-43.4-34.6-79.6-78.1-80.6-45-1-81.9 35.2-81.9 80 0 35.8 23.5 66.1 56 76.3V352c0 61.8-53.8 112-120 112s-120-50.2-120-112v-18c68-11.5 120-70.8 120-142V27.5c0-5.6-3.9-10.5-9.4-11.7L208.9.3c-6.5-1.4-12.9 2.6-14.3 9.1l-5.2 23.4c-1.4 6.5 2.6 12.9 9.1 14.3l41.5 9.2v134.4c0 52.9-42.2 96.7-95.1 97.2-53.3.6-96.9-42.6-96.9-95.9V56.4l41.5-9.2c6.5-1.4 10.5-7.8 9.1-14.3L93.4 9.4C92 2.9 85.5-1.1 79.1.3L9.4 15.8C3.9 17 0 21.9 0 27.5V192c0 71.2 52 130.5 120 142zm312-190c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32z\"]\n};\nvar faStickyNote = {\n prefix: 'far',\n iconName: 'sticky-note',\n icon: [448, 512, [], \"f249\", \"M448 348.106V80c0-26.51-21.49-48-48-48H48C21.49 32 0 53.49 0 80v351.988c0 26.51 21.49 48 48 48h268.118a48 48 0 0 0 33.941-14.059l83.882-83.882A48 48 0 0 0 448 348.106zm-128 80v-76.118h76.118L320 428.106zM400 80v223.988H296c-13.255 0-24 10.745-24 24v104H48V80h352z\"]\n};\nvar faStocking = {\n prefix: 'far',\n iconName: 'stocking',\n icon: [384, 512, [], \"f7d5\", \"M368 0H80c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h16v155.5l-39 26C-1.8 316.7-17.7 396.2 21.5 455c24.7 37 65.2 57 106.6 57 24.4 0 49.1-7 70.9-21.5l81.7-54.5c44.6-29.7 71.2-79.5 71.2-133.1V96h16c8.8 0 16-7.2 16-16V16c.1-8.8-7.1-16-15.9-16zm-64 302.9c0 37.5-18.6 72.4-49.9 93.2l-81.8 54.5c-53.7 35.8-99.8-5.6-110.9-22.2-24.5-36.8-14.6-86.4 22.2-111l60.4-40.2V96h160v206.9z\"]\n};\nvar faStomach = {\n prefix: 'far',\n iconName: 'stomach',\n icon: [512, 512, [], \"f623\", \"M397.91 96.75C341.63 90.74 292.2 121.69 269.45 168H256c-39.76 0-72-32.24-72-72V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80c0 66.27 53.73 120 120 120h.81c-.17 2.7-.81 5.26-.81 8v64c0 39.76-32.24 72-72 72h-64C53.73 360 0 413.73 0 480v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-.4 0-.79.01-1.18.83-51.38 64.09-76.8 103.98-44.4l37.24 30.25c28.26 22.96 61.66 39.72 97.68 45.09C407.75 527.79 512 434.23 512 316.78V229.6c0-66.37-48.09-125.81-114.09-132.85zM316.78 464c-33.69 0-66.66-11.7-92.84-32.95l-28.97-23.55c46.6-4.24 85.39-35.3 101.24-77.5l.26.69c24.31-9.12 54.38-5.64 73.06 8.47 20.09 15.17 46.69 23.14 73.53 23.14 4.47 0 8.91-.71 13.36-1.16C437.47 420.55 382.41 464 316.78 464zM464 311.11c-22.74 6.03-48.69 2.49-65.53-10.27-25.36-19.15-61-26.61-94.47-21.28V224c0-44.11 35.88-80 80-80s80 35.89 80 80v87.11z\"]\n};\nvar faStop = {\n prefix: 'far',\n iconName: 'stop',\n icon: [448, 512, [], \"f04d\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z\"]\n};\nvar faStopCircle = {\n prefix: 'far',\n iconName: 'stop-circle',\n icon: [512, 512, [], \"f28d\", \"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm296-80v160c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16z\"]\n};\nvar faStopwatch = {\n prefix: 'far',\n iconName: 'stopwatch',\n icon: [448, 512, [], \"f2f2\", \"M393.9 184l22.6-22.6c4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0l-20.7 20.7c-31.1-27.5-70.4-45.9-113.8-50.8V48h28c6.6 0 12-5.4 12-12V12c0-6.6-5.4-12-12-12H172c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h28v49.4C96.4 109.3 16 197.2 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-44.7-14.1-86.1-38.1-120zM224 464c-88.4 0-160-71.6-160-160s71.6-160 160-160 160 71.6 160 160-71.6 160-160 160zm12-112h-24c-6.6 0-12-5.4-12-12V204c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v136c0 6.6-5.4 12-12 12z\"]\n};\nvar faStopwatch20 = {\n prefix: 'far',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M275.35,207.2c-29.29,0-45,18-45,50.58V342c0,27.15,8.95,50.76,43.81,50.76C310.15,392.8,320,370,320,341.85V256.24C320,225.31,304.79,207.2,275.35,207.2Zm10.16,138.4c0,10.59-2.71,17-10.41,17s-10.59-6-10.59-16.48V253.39c0-10,3.05-16,10.59-16,8,0,10.41,6.46,10.41,15.47ZM217.6,256c0-28.15-10.07-48.83-44.46-48.83-38.36,0-45.14,26.35-45.14,48.19v3.26a6.56,6.56,0,0,0,6.66,6.46h19.92a6.57,6.57,0,0,0,6.67-6.46v-4.19c0-12.22,2.64-18.14,10.14-18.14,8.35,0,9.78,5.88,9.78,19.42,0,20-5.35,26.52-21.68,49.87-19,27.17-28.54,44.92-30.76,73.1A13.16,13.16,0,0,0,142,392.8h66.28a6.56,6.56,0,0,0,6.66-6.45V368.49a6.56,6.56,0,0,0-6.66-6.45H169c1.44-12.5,11.88-28.92,21.13-41C207.64,297,217.6,284.49,217.6,256Zm176.31-72,22.59-22.59a12,12,0,0,0,0-17l-17-17a12,12,0,0,0-17,0l-20.7,20.68A206.56,206.56,0,0,0,248,97.3V48h28a12,12,0,0,0,12-12V12A12,12,0,0,0,276,0H172a12,12,0,0,0-12,12V36a12,12,0,0,0,12,12h28V97.41C96.41,109.3,16,197.2,16,304c0,114.91,93.09,208,208,208s208-93.09,208-208A207,207,0,0,0,393.91,184ZM224,464A160,160,0,1,1,384,304,159.94,159.94,0,0,1,224,464Z\"]\n};\nvar faStore = {\n prefix: 'far',\n iconName: 'store',\n icon: [616, 512, [], \"f54e\", \"M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-29.6 47.2-10 110.6 38 130.8v227.4c0 19.4 14.3 35.2 32 35.2h448c17.7 0 32-15.8 32-35.2V249.4c48-20.2 67.6-83.6 38-130.8zM516 464H100v-96h416zm-.2-144.2H100v-64.7c24-3.3 45.1-15.2 60.3-32.2 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 15.3 17 36.3 28.9 60.3 32.2zm47.9-133c-3.2 6.8-10.9 18.6-27 20.8-2.4.3-4.8.5-7.2.5-14.7 0-28.2-6.1-38.1-17.2L455.7 151 420 190.8c-9.9 11.1-23.5 17.2-38.1 17.2s-28.2-6.1-38.1-17.2L308 151l-35.7 39.8c-9.9 11.1-23.5 17.2-38.1 17.2-14.7 0-28.2-6.1-38.1-17.2L160.3 151l-35.7 39.8c-9.9 11.1-23.5 17.2-38.1 17.2-2.5 0-4.9-.2-7.2-.5-16-2.2-23.8-13.9-27-20.8-5-10.8-7.1-27.6 2.3-42.6L114.8 48h386.3l60.2 96.1c9.5 15.1 7.5 31.9 2.4 42.7z\"]\n};\nvar faStoreAlt = {\n prefix: 'far',\n iconName: 'store-alt',\n icon: [640, 512, [], \"f54f\", \"M635.7 176.1l-91.4-160C538.6 6.2 528 0 516.5 0h-393C112 0 101.4 6.2 95.7 16.1l-91.4 160C-7.9 197.5 7.4 224 32 224h32v252.8c0 19.4 14.3 35.2 32 35.2h256c17.7 0 32-15.8 32-35.2V224h144v272c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V224h32c24.6 0 39.9-26.5 27.7-47.9zM336 464H112v-95.8h224V464zm0-143.8H112V224h224v96.2zM59.6 176l73.1-128h374.5l73.1 128H59.6z\"]\n};\nvar faStoreAltSlash = {\n prefix: 'far',\n iconName: 'store-alt-slash',\n icon: [640, 512, [], \"e070\", \"M507.21,48l73.1,128H334.57L396,224H528V327.23l48,37.53V224h32c24.6,0,39.91-26.5,27.71-47.9l-91.41-160A32.16,32.16,0,0,0,516.51,0h-393a31.59,31.59,0,0,0-11.14,2.27L170.84,48ZM112,320.21V224h50.2l-61.4-48H59.58l12.73-22.26L34.12,123.88,4.28,176.1C-7.92,197.5,7.39,224,32,224H64V476.8c0,19.4,14.3,35.2,32,35.2H352c17.71,0,32-15.8,32-35.2V397.42l-98.76-77.21ZM336,464H112V368.21H336ZM36,3.52A16,16,0,0,0,13.51,6l-10,12.49A16,16,0,0,0,6,41L604,508.48A16,16,0,0,0,626.48,506l10-12.49A16,16,0,0,0,634,471Z\"]\n};\nvar faStoreSlash = {\n prefix: 'far',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M634,471,36,3.52A16,16,0,0,0,13.51,6l-10,12.49A16,16,0,0,0,6,41L604,508.48A16,16,0,0,0,626.48,506l10-12.49A16,16,0,0,0,634,471ZM513.09,48,573.3,144.1c9.5,15.11,7.5,31.9,2.4,42.7-3.2,6.8-10.9,18.61-27,20.8a56.2,56.2,0,0,1-7.2.5,50.43,50.43,0,0,1-38.09-17.19L467.7,151,432,190.8A50.57,50.57,0,0,1,393.91,208c-22.43,0-25.91-11.16-25.91-5.86l60.26,47.11a99.41,99.41,0,0,0,39.24-26.34,99.26,99.26,0,0,0,60.3,32.19v.9h.2v71.23l48,37.52V249.41c48-20.2,67.59-83.61,38-130.81L549.09,15A32,32,0,0,0,522,0H118a31.63,31.63,0,0,0-7.35.94L170.84,48ZM112,464V368H346.38l-61.66-48.2H112V255.1a98.44,98.44,0,0,0,55.08-27.27l-38.27-29.92A50.24,50.24,0,0,1,98.5,208a55.37,55.37,0,0,1-7.2-.5c-16-2.2-23.8-13.9-27-20.79A45.75,45.75,0,0,1,64.91,148L26.45,117.88l-.45.72C-3.59,165.8,16,229.21,64,249.41V476.8C64,496.2,78.3,512,96,512H530.57l-61.4-48Z\"]\n};\nvar faStream = {\n prefix: 'far',\n iconName: 'stream',\n icon: [512, 512, [], \"f550\", \"M16 128h416c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v32c0 8.84 7.16 16 16 16zm480 96H80c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-64 160H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faStreetView = {\n prefix: 'far',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M168 338.59V384c0 30.88 25.12 56 56 56h64c30.88 0 56-25.12 56-56v-45.41c18.91-9 32-28.3 32-50.59v-72c0-28.78-17.09-53.48-41.54-65C345.43 135.4 352 116.49 352 96c0-52.94-43.06-96-96-96s-96 43.06-96 96c0 20.49 6.57 39.4 17.55 55-24.46 11.52-41.55 36.22-41.55 65v72c0 22.3 13.09 41.59 32 50.59zM256 48c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.49-48 48-48zm-72 168c0-13.23 10.78-24 24-24h96c13.22 0 24 10.77 24 24v72c0 4.41-3.59 8-8 8h-24v88c0 4.41-3.59 8-8 8h-64c-4.41 0-8-3.59-8-8v-88h-24c-4.41 0-8-3.59-8-8v-72zm209.61 119.14c-4.9 7.65-10.55 14.83-17.61 20.69v14.49c53.18 10.14 88 26.81 88 45.69 0 30.93-93.12 56-208 56S48 446.93 48 416c0-18.88 34.82-35.54 88-45.69v-14.49c-7.06-5.86-12.71-13.03-17.61-20.69C47.28 352.19 0 382 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-34-47.28-63.81-118.39-80.86z\"]\n};\nvar faStretcher = {\n prefix: 'far',\n iconName: 'stretcher',\n icon: [640, 512, [], \"f825\", \"M600 112H203l-86.25-99.6a39.86 39.86 0 0 0-55.47-2.25L13.44 52.66C-3.75 68-4.06 94.39 10.28 109.31l101.56 117.16A88.09 88.09 0 0 0 177.63 256h46.48l107.43 94-46.91 41.05A63.31 63.31 0 0 0 256 384a64 64 0 1 0 64 64 63.26 63.26 0 0 0-3.76-20.81L368 381.9l51.76 45.29A63.26 63.26 0 0 0 416 448a64 64 0 1 0 64-64 63.31 63.31 0 0 0-28.63 7.05L404.45 350l107.43-94H600a40 40 0 0 0 40-40v-64a40 40 0 0 0-40-40zM256 464a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm224-32a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM368 318.1L297 256h142zM592 208H177.63a40 40 0 0 1-29.72-13.2L51.22 83.31l35.87-31.88L181 160h411z\"]\n};\nvar faStrikethrough = {\n prefix: 'far',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M150.39 208h113.17l-46.31-23.16a45.65 45.65 0 0 1 0-81.68A67.93 67.93 0 0 1 247.56 96H310a45.59 45.59 0 0 1 36.49 18.25l15.09 20.13a16 16 0 0 0 22.4 3.21l25.62-19.19a16 16 0 0 0 3.21-22.4L397.7 75.84A109.44 109.44 0 0 0 310.1 32h-62.54a132.49 132.49 0 0 0-58.94 13.91c-40.35 20.17-64.19 62.31-60.18 108 1.76 20.09 10.02 38.37 21.95 54.09zM496 240H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm-92.5 80h-91.07l14.32 7.16a45.65 45.65 0 0 1 0 81.68 67.93 67.93 0 0 1-30.31 7.16H234a45.59 45.59 0 0 1-36.49-18.25l-15.09-20.13a16 16 0 0 0-22.4-3.21L134.4 393.6a16 16 0 0 0-3.21 22.4l15.11 20.17A109.44 109.44 0 0 0 233.9 480h62.54a132.42 132.42 0 0 0 58.93-13.91c40.36-20.17 64.2-62.31 60.19-108-1.19-13.69-5.89-26.27-12.06-38.09z\"]\n};\nvar faStroopwafel = {\n prefix: 'far',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm0 464c-114.69 0-208-93.31-208-208S141.31 48 256 48s208 93.31 208 208-93.31 208-208 208zm158.39-208l28.28-28.28c3.12-3.12 3.12-8.19 0-11.31l-11.31-11.31c-3.12-3.12-8.19-3.12-11.31 0l-28.28 28.28-45.26-45.25 22.63-22.63 16.97 16.97c3.12 3.12 8.19 3.12 11.31 0l11.31-11.31c3.12-3.12 3.12-8.19 0-11.31l-16.97-16.97 5.66-5.66c3.12-3.12 3.12-8.19 0-11.31l-11.31-11.31c-3.12-3.12-8.19-3.12-11.31 0l-5.66 5.66-16.97-16.97c-3.12-3.12-8.19-3.12-11.31 0l-11.31 11.31c-3.12 3.12-3.12 8.19 0 11.31l16.97 16.97-22.63 22.63-45.26-45.25 28.29-28.28c3.12-3.12 3.12-8.19 0-11.31L295.6 69.32c-3.12-3.12-8.19-3.12-11.31 0L256 97.61l-28.29-28.29c-3.12-3.12-8.19-3.12-11.31 0l-11.31 11.31c-3.12 3.12-3.12 8.19 0 11.31l28.29 28.28-45.25 45.25-22.63-22.63 16.97-16.97c3.12-3.12 3.12-8.19 0-11.31l-11.31-11.31c-3.12-3.12-8.19-3.12-11.31 0l-16.97 16.97-5.66-5.66c-3.12-3.12-8.19-3.12-11.31 0l-11.31 11.31c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66-16.97 16.97c-3.12 3.12-3.12 8.19 0 11.31l11.31 11.31c3.12 3.12 8.19 3.12 11.31 0l16.97-16.97 22.63 22.63-45.25 45.25-28.29-28.28c-3.12-3.12-8.19-3.12-11.31 0L69.32 216.4c-3.12 3.12-3.12 8.19 0 11.31L97.61 256l-28.29 28.29c-3.12 3.12-3.12 8.19 0 11.31l11.31 11.31c3.12 3.12 8.19 3.12 11.31 0l28.29-28.28 45.25 45.25-22.63 22.63-16.97-16.97c-3.12-3.12-8.19-3.12-11.31 0l-11.31 11.31c-3.12 3.12-3.12 8.19 0 11.31l16.97 16.97-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l11.31 11.31c3.12 3.12 8.19 3.12 11.31 0l5.66-5.66 16.97 16.97c3.12 3.12 8.19 3.12 11.31 0l11.31-11.31c3.12-3.12 3.12-8.19 0-11.31l-16.97-16.97 22.63-22.63 45.26 45.26-28.29 28.29c-3.12 3.12-3.12 8.19 0 11.31l11.31 11.31c3.12 3.12 8.19 3.12 11.31 0L256 414.39l28.29 28.29c3.12 3.12 8.19 3.12 11.31 0l11.31-11.31c3.12-3.12 3.12-8.19 0-11.31l-28.29-28.29 45.26-45.26 22.63 22.63-16.97 16.97c-3.12 3.12-3.12 8.19 0 11.31l11.31 11.31c3.12 3.12 8.19 3.12 11.31 0l16.97-16.97 5.66 5.66c3.12 3.12 8.19 3.12 11.31 0l11.31-11.31c3.12-3.12 3.12-8.19 0-11.31l-5.66-5.66 16.97-16.97c3.12-3.12 3.12-8.19 0-11.31l-11.31-11.31c-3.12-3.12-8.19-3.12-11.31 0l-16.97 16.97-22.63-22.63 45.25-45.25 28.29 28.28c3.12 3.12 8.19 3.12 11.31 0l11.31-11.31c3.12-3.12 3.12-8.19 0-11.31L414.39 256zM256 142.86l45.25 45.25L256 233.37l-45.25-45.25L256 142.86zM142.86 256l45.25-45.26L233.37 256l-45.26 45.26L142.86 256zM256 369.14l-45.26-45.26L256 278.62l45.26 45.26L256 369.14zm67.88-67.89L278.63 256l45.26-45.25L369.14 256l-45.26 45.25z\"]\n};\nvar faSubscript = {\n prefix: 'far',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M336 64h-52.28a16 16 0 0 0-13.31 7.12L176 212.73 81.59 71.12A16 16 0 0 0 68.28 64H16A16 16 0 0 0 0 80v16a16 16 0 0 0 16 16h35.16l96 144-96 144H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h52.28a16 16 0 0 0 13.31-7.12L176 299.27l94.41 141.61a16 16 0 0 0 13.31 7.12H336a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-35.16l-96-144 96-144H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm160 400h-24V304a16 16 0 0 0-16-16h-32a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 408 352h16v112h-24a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faSubway = {\n prefix: 'far',\n iconName: 'subway',\n icon: [448, 512, [], \"f239\", \"M280 328c0-22.091 17.909-40 40-40s40 17.909 40 40-17.909 40-40 40-40-17.909-40-40zm-152 40c22.091 0 40-17.909 40-40s-17.909-40-40-40-40 17.909-40 40 17.909 40 40 40zm320-258.286v228.572c0 49.194-43.706 90.629-99.059 104.713l58.758 58.758c3.78 3.78 1.103 10.243-4.243 10.243h-48.427a11.996 11.996 0 0 1-8.485-3.515L286.059 448H161.941l-60.485 60.485A12.002 12.002 0 0 1 92.971 512H44.544c-5.345 0-8.022-6.463-4.243-10.243l58.758-58.758C43.886 428.961 0 387.656 0 338.286V109.714C0 45.928 71.001 0 138.286 0h171.428C377.889 0 448 45.922 448 109.714zM50.774 96h346.534c-10.2-26.136-47.971-48-87.595-48H138.286c-38.862 0-77.011 21.67-87.512 48zM48 224h152v-80H48v80zm352 48H48v66.286C48 374.495 99.975 400 138.286 400h171.428C347.479 400 400 374.816 400 338.286V272zm0-128H248v80h152v-80z\"]\n};\nvar faSuitcase = {\n prefix: 'far',\n iconName: 'suitcase',\n icon: [512, 512, [], \"f0f2\", \"M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v256c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM176 80h160v48H176V80zM48 432V176h80v256H48zm128 0V176h160v256H176zm288 0h-80V176h80v256z\"]\n};\nvar faSuitcaseRolling = {\n prefix: 'far',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M336 128h-48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80H48c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zM144 48h96v80h-96V48zm192 384H48V176h288v256zm-232-48h176c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8zm0-112h176c4.42 0 8-3.58 8-8v-32c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v32c0 4.42 3.58 8 8 8z\"]\n};\nvar faSun = {\n prefix: 'far',\n iconName: 'sun',\n icon: [512, 512, [], \"f185\", \"M494.2 221.9l-59.8-40.5 13.7-71c2.6-13.2-1.6-26.8-11.1-36.4-9.6-9.5-23.2-13.7-36.2-11.1l-70.9 13.7-40.4-59.9c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7C98 60.4 84.5 64.5 75 74.1c-9.5 9.6-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5C6.6 229.5 0 242 0 255.5s6.7 26 17.8 33.5l59.8 40.5-13.7 71c-2.6 13.2 1.6 26.8 11.1 36.3 9.5 9.5 22.9 13.7 36.3 11.1l70.8-13.7 40.4 59.9C230 505.3 242.6 512 256 512s26-6.7 33.5-17.8l40.4-59.9 70.9 13.7c13.4 2.7 26.8-1.6 36.3-11.1 9.5-9.5 13.6-23.1 11.1-36.3l-13.7-71 59.8-40.5c11.1-7.5 17.8-20.1 17.8-33.5-.1-13.6-6.7-26.1-17.9-33.7zm-112.9 85.6l17.6 91.2-91-17.6L256 458l-51.9-77-90.9 17.6 17.6-91.2-76.8-52 76.8-52-17.6-91.2 91 17.6L256 53l51.9 76.9 91-17.6-17.6 91.1 76.8 52-76.8 52.1zM256 152c-57.3 0-104 46.7-104 104s46.7 104 104 104 104-46.7 104-104-46.7-104-104-104zm0 160c-30.9 0-56-25.1-56-56s25.1-56 56-56 56 25.1 56 56-25.1 56-56 56z\"]\n};\nvar faSunCloud = {\n prefix: 'far',\n iconName: 'sun-cloud',\n icon: [640, 512, [], \"f763\", \"M580.5 226c-18.7-39.6-58.6-66-104.5-66-42.4 0-80 23.4-100.2 58.2-49.4 5.7-87.8 47.7-87.8 98.6 0 54.7 44.5 99.2 99.2 99.2h153.6c54.7 0 99.2-44.5 99.2-99.2 0-40.6-24.3-75.5-59.5-90.8zm-39.7 142H387.2c-28.3 0-51.2-22.9-51.2-51.2s22.9-51.2 51.2-51.2c7.7 0 14.8 2.2 21.3 5.3 2.7-35.1 31.7-62.9 67.5-62.9 34.1 0 62 25.1 67 57.8 27.2 1.2 49 23.4 49 51 0 28.3-22.9 51.2-51.2 51.2zM256 458l-51.9-77-90.9 17.6 17.6-91.2-76.8-52 76.8-52-17.6-91.2 91 17.6L256 53l51.9 76.9 91-17.6-8.4 43.5c16-11.5 34.2-19.8 53.5-24.1l4.1-21.3c2.6-13.2-1.6-26.8-11.1-36.4-9.6-9.5-23.2-13.7-36.2-11.1l-70.9 13.7-40.4-59.9c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7C98 60.4 84.5 64.5 75 74.1c-9.5 9.6-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5C6.6 229.5 0 242 0 255.5s6.7 26 17.8 33.5l59.8 40.5-13.7 71c-2.6 13.2 1.6 26.8 11.1 36.3 9.5 9.5 22.9 13.7 36.3 11.1l70.8-13.7 40.4 59.9C230 505.3 242.6 512 256 512s26-6.7 33.5-17.8l40.4-59.9c-14.6-7.2-27.7-16.8-38.7-28.6L256 458zm0-258c17.1 0 32.3 7.9 42.6 20.1 11.8-10.8 25.8-19.3 41.1-25.3-19-25.8-49.3-42.8-83.7-42.8-57.3 0-104 46.7-104 104s46.7 104 104 104c2.6 0 5.1-.6 7.7-.8-4.6-13.4-7.7-27.5-7.7-42.4 0-1.6.4-3.2.4-4.8h-.4c-30.9 0-56-25.1-56-56s25.1-56 56-56z\"]\n};\nvar faSunDust = {\n prefix: 'far',\n iconName: 'sun-dust',\n icon: [512, 512, [], \"f764\", \"M160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm320-256c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm-96 96c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm-144 64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm80 96c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm0-192c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM320 448c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-64-248c15.4 0 29.4 6.3 39.6 16.4l33.9-33.9C310.7 163.7 284.7 152 256 152c-57.3 0-104 46.7-104 104 0 28.7 11.7 54.7 30.5 73.5l33.9-33.9C206.3 285.4 200 271.4 200 256c0-30.9 25.1-56 56-56zM400.8 62.9l-70.9 13.7-40.4-59.9c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7C98 60.4 84.5 64.5 75 74.1c-9.5 9.6-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5C6.6 229.5 0 242 0 255.5s6.7 26 17.8 33.5l59.8 40.5-13.7 71c-2.6 13.2 1.6 26.8 11.1 36.3l.1.1 38.3-38.3-.3.1 17.6-91.2-76.8-52 76.8-52-17.6-91.2 91 17.6L256 53l51.9 76.9 91-17.6-.2 1 38.8-38.8c-.2-.2-.2-.4-.4-.5-9.6-9.5-23.3-13.6-36.3-11.1z\"]\n};\nvar faSunHaze = {\n prefix: 'far',\n iconName: 'sun-haze',\n icon: [640, 512, [], \"f765\", \"M80 336h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16zm544-48H496c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM208 464H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H288c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-48-56v-16c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16zM194.7 203.5l-17.6-91.2 91 17.6L320 53l51.9 76.9 91-17.6-17.6 91.1 54 36.6h73.4c-3-7.2-7.8-13.6-14.4-18.1l-59.8-40.5 13.7-71c2.6-13.2-1.6-26.8-11.1-36.4-9.6-9.5-23.2-13.7-36.2-11.1L394 76.6l-40.4-59.9c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7c-13.3-2.6-26.8 1.6-36.3 11.1-9.5 9.6-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5c-6.6 4.5-11.4 10.9-14.4 18.1h73.4l53.8-36.4zm22.9 36.5h49c6.9-23 28.1-40 53.4-40s46.5 17 53.4 40h49c-7.8-49.7-50.5-88-102.4-88s-94.6 38.3-102.4 88z\"]\n};\nvar faSunglasses = {\n prefix: 'far',\n iconName: 'sunglasses',\n icon: [576, 512, [], \"f892\", \"M574.09 280.38L528.75 98.66a87.94 87.94 0 0 0-113.19-62.14l-15.25 5.08a16 16 0 0 0-10.12 20.25L395.25 77a16 16 0 0 0 20.22 10.13l13.19-4.39c10.87-3.63 23-3.57 33.15 1.73a39.59 39.59 0 0 1 20.38 25.81l38.47 153.83a276.7 276.7 0 0 0-81.22-12.47c-39.88 0-85.63 9.2-133 36.34h-36.85c-47.4-27.15-93.12-36.34-133-36.34a276.75 276.75 0 0 0-81.22 12.45l38.44-153.8a39.61 39.61 0 0 1 20.38-25.82c10.15-5.29 22.28-5.34 33.15-1.73l13.16 4.39A16 16 0 0 0 180.75 77l5.06-15.19a16 16 0 0 0-10.12-20.21l-15.25-5.08A87.95 87.95 0 0 0 47.25 98.65L1.91 280.38A75.35 75.35 0 0 0 0 295.86v70.25C0 429 51.59 480 115.19 480h37.12c60.28 0 110.38-45.94 114.88-105.37l2.93-38.63h35.76l2.93 38.63c4.5 59.43 54.6 105.37 114.88 105.37h37.12C524.41 480 576 429 576 366.13v-70.25a62.67 62.67 0 0 0-1.91-15.5zM48 366.11v-48.47c19.78-8.18 51.22-18 88.59-18zM356.66 371l-4-52.81a213.46 213.46 0 0 1 86.78-18.53z\"]\n};\nvar faSunrise = {\n prefix: 'far',\n iconName: 'sunrise',\n icon: [576, 512, [], \"f766\", \"M560 464h-68.5l29.4-44.7c7.4-11.2 8.7-25.3 3.6-37.8-5.2-12.4-16.1-21.5-29.3-24.2l-70.7-14.5L410 272c-2.7-13.2-11.7-24.2-24.2-29.4-12.5-5.2-26.7-3.7-37.7 3.6L287.8 286l-60.2-39.9c-22.5-14.9-56.5-.8-61.9 25.7l-14.4 70.8L80.6 357c-13.3 2.7-24.1 11.7-29.3 24.2-5.1 12.5-3.8 26.6 3.7 37.8l29.7 45H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-325.4 0c4.7-15.6 16-29 32.2-35.7 28.5-11.8 61.4 1.8 73.2 30.3.7 1.8 1.1 3.6 1.6 5.4h-107zm199.4 0h-43.3c-1.2-8-3.1-16-6.3-23.8-21.9-53-82.9-78.2-135.9-56.3-34.7 14.4-57.4 45.5-62.8 80.1h-43.4l-40.9-62.1 90.8-18.6 18.5-90.9 77.4 51.2 77.3-51.1 18.7 90.9 90.8 18.7L434 464zM190.2 135.6c6.2 6.3 16.4 6.3 22.6.1L264 84.9V192c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V84.9l51.1 50.8c6.3 6.2 16.4 6.2 22.6-.1l11.3-11.4c6.2-6.3 6.2-16.4-.1-22.6l-97.7-97c-6.2-6.2-16.3-6.2-22.5 0l-97.7 97c-6.3 6.2-6.3 16.4-.1 22.6l11.3 11.4z\"]\n};\nvar faSunset = {\n prefix: 'far',\n iconName: 'sunset',\n icon: [576, 512, [], \"f767\", \"M560 464h-68.5l29.4-44.7c7.4-11.2 8.7-25.3 3.6-37.8-5.2-12.4-16.1-21.5-29.3-24.2l-70.7-14.5L410 272c-2.7-13.2-11.7-24.2-24.2-29.4-12.5-5.2-26.7-3.7-37.7 3.6L287.8 286l-60.2-39.9c-22.5-14.9-56.5-.8-61.9 25.7l-14.4 70.8L80.6 357c-13.3 2.7-24.1 11.7-29.3 24.2-5.1 12.5-3.8 26.6 3.7 37.8l29.7 45H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-325.4 0c4.7-15.6 16-29 32.2-35.7 28.5-11.8 61.4 1.8 73.2 30.3.7 1.8 1.1 3.6 1.6 5.4h-107zm199.4 0h-43.3c-1.2-8-3.1-16-6.3-23.8-21.9-53-82.9-78.2-135.9-56.3-34.7 14.4-57.4 45.5-62.8 80.1h-43.4l-40.9-62.1 90.8-18.6 18.5-90.9 77.4 51.2 77.3-51.1 18.7 90.9 90.8 18.7L434 464zM276.7 203.4c6.2 6.2 16.3 6.2 22.5 0l97.7-97c6.3-6.2 6.3-16.4.1-22.6l-11.3-11.4c-6.2-6.3-16.4-6.3-22.6-.1L312 123.1V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v107.1l-51.1-50.8c-6.3-6.2-16.4-6.2-22.6.1L179 83.8c-6.2 6.3-6.2 16.4.1 22.6l97.6 97z\"]\n};\nvar faSuperscript = {\n prefix: 'far',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M336 64h-52.28a16 16 0 0 0-13.31 7.12L176 212.73 81.59 71.12A16 16 0 0 0 68.28 64H16A16 16 0 0 0 0 80v16a16 16 0 0 0 16 16h35.16l96 144-96 144H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h52.28a16 16 0 0 0 13.31-7.12L176 299.27l94.41 141.61a16 16 0 0 0 13.31 7.12H336a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-35.16l-96-144 96-144H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm160 112h-24V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 408 64h16v112h-24a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faSurprise = {\n prefix: 'far',\n iconName: 'surprise',\n icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-176c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm-48-72c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faSwatchbook = {\n prefix: 'far',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M112 424c13.25 0 24-10.75 24-24 0-13.26-10.75-24-24-24s-24 10.74-24 24c0 13.25 10.75 24 24 24zm368-136h-97.61l69.02-69.02c12.5-12.5 12.5-32.76 0-45.25L338.27 60.59c-6.25-6.25-14.44-9.37-22.63-9.37s-16.38 3.12-22.63 9.37L224 129.61V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v368c0 61.86 50.14 112 112 112h368c17.67 0 32-14.33 32-32V320c0-17.67-14.33-32-32-32zM176 400c0 17.88-7.41 34.03-19.27 45.65-3.65 3.57-7.7 6.53-11.99 9.05-.86.51-1.76.96-2.64 1.43-4.47 2.34-9.12 4.31-14.02 5.57-5.16 1.35-10.48 2.29-16.06 2.29H112c-35.29 0-64-28.71-64-64v-96h128V400zm0-144H48v-80h128v80zm0-128H48V48h128v80zm48 69.49l91.65-91.65 90.51 90.51L224 378.51V197.49zM464 464H206.39l128-128H464v128z\"]\n};\nvar faSwimmer = {\n prefix: 'far',\n iconName: 'swimmer',\n icon: [640, 512, [], \"f5c4\", \"M185.53 323.38c1.34 1.12 2.77 1.99 4.08 3.2 3.53 3.26 15.27 9.42 34.39 9.42 4.81 0 9.14-.39 13.01-1.03l25.79-36.11c14.89-20.87 31.42-40.34 48.71-59.11L442.1 331.2c3.89-1.63 6.91-3.34 8.3-4.62 11.97-11.04 25.32-18.17 39.21-21.08L346.12 205.02c20.66-19.12 42.3-37.27 65.59-53.58 9.31-6.52 21.1-8.89 33.09-6.41l102.38 18.08c13.32 2.28 26.04-6.33 28.43-19.37 2.39-13.05-6.44-25.52-19.76-27.87L454.26 97.94c-24.67-5.16-50.55.08-70.98 14.44-92.89 65.05-147.56 140.71-160.58 158.95l-37.17 52.05zM624 368h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 359.58 442.04 368 416 368s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 359.58 250.04 368 224 368s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 359.58 58.04 368 32 368H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-496-80c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zm0-144c26.47 0 48 21.53 48 48s-21.53 48-48 48-48-21.53-48-48 21.53-48 48-48z\"]\n};\nvar faSwimmingPool = {\n prefix: 'far',\n iconName: 'swimming-pool',\n icon: [640, 512, [], \"f5c5\", \"M624 432h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 423.58 442.04 432 416 432s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 423.58 250.04 432 224 432s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 423.58 58.04 432 32 432H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-408-32.63V288h208v111.37c14.22-1.43 23.4-6.04 26.39-8.79 6.79-6.26 14.09-10.98 21.61-14.67V120c0-22.06 17.94-40 40-40s40 17.94 40 40v24c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-24c0-48.53-39.47-88-88-88s-88 39.47-88 88v120H216V120c0-22.06 17.94-40 40-40s40 17.94 40 40v24c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-24c0-48.53-39.47-88-88-88s-88 39.47-88 88v255.9c7.52 3.69 14.82 8.41 21.61 14.67 2.98 2.76 12.17 7.38 26.39 8.8z\"]\n};\nvar faSword = {\n prefix: 'far',\n iconName: 'sword',\n icon: [512, 512, [], \"f71c\", \"M511.84 18.27C513.23 8.49 505.57 0 496.04 0c-.76 0-1.53.05-2.31.16L400 16 148.51 267.49l-38.82-38.82c-6.22-6.22-16.31-6.23-22.54 0L68.43 247.4c-5.37 5.37-6.21 13.79-1.99 20.11l53.19 79.79-53.23 53.22-29.15-14.57c-1.21-.61-9.25-4.14-15.97 2.59L4.05 405.76c-5.4 5.41-5.4 14.17 0 19.57l82.62 82.62c2.7 2.7 6.24 4.05 9.78 4.05s7.08-1.35 9.79-4.05l17.23-17.23a13.84 13.84 0 0 0 2.59-15.97l-14.57-29.15 53.22-53.23 79.79 53.19c6.32 4.21 14.74 3.38 20.11-1.99l18.73-18.72c6.22-6.22 6.22-16.32 0-22.54l-38.82-38.82L496 112l15.84-93.73zm-60.62 70.62L210.57 329.55l-28.12-28.12L423.11 60.77l33.83-5.72-5.72 33.84z\"]\n};\nvar faSwordLaser = {\n prefix: 'far',\n iconName: 'sword-laser',\n icon: [512, 512, [], \"e03b\", \"M176.53532,223.49668a8.003,8.003,0,0,0-11.31445,0l-11.31249,11.31446a7.99945,7.99945,0,0,0,0,11.31446l4.48047,4.47851L15.99828,393.00458a54.62106,54.62106,0,0,0,0,77.24613l25.75,25.752a54.61858,54.61858,0,0,0,77.24411-.002L261.3849,353.60026l5.66015,5.66211a8.003,8.003,0,0,0,11.31445,0L289.672,347.94791a7.99708,7.99708,0,0,0,0-11.3125ZM85.051,462.06125a6.62791,6.62791,0,0,1-9.35937.00391L49.93968,436.31124a6.632,6.632,0,0,1,0-9.36719l63.19723-63.19925,35.11327,35.1133Zm74.51168-74.51566-35.11326-35.11525,11.31445-11.31251,35.11326,35.1133Zm22.6289-22.62892-35.11327-35.1133,11.31055-11.31446,35.11522,35.1133Zm22.625-22.62892-35.11327-35.1133,11.31445-11.3125,35.11327,35.1133ZM503.28323,8.71532a29.769,29.769,0,0,0-41.26561-.79492l-237.58779,218.215,61.43552,61.43558,218.2128-237.588A29.76768,29.76768,0,0,0,503.28323,8.71532Z\"]\n};\nvar faSwordLaserAlt = {\n prefix: 'far',\n iconName: 'sword-laser-alt',\n icon: [512, 512, [], \"e03c\", \"M118.99181,496.002,330.47444,283.28146c10.03322-10.09374,2.88477-27.28122-11.34571-27.28122h-159.508a16.00015,16.00015,0,0,0-11.31251,4.68554L15.99757,393.004a54.625,54.625,0,0,0,0,77.248l25.74807,25.75a54.62171,54.62171,0,0,0,77.24617,0Zm53.88287-192.00178h70.22663l-70.2403,70.246L137.74769,339.131ZM49.9351,436.30867a6.61787,6.61787,0,0,1,.002-9.36328L115.12462,361.756l10.45509,10.457-69.86726,69.871Zm25.752,25.75193-5.7754-5.77734,69.86726-69.871,10.459,10.459L85.05037,462.0606a6.62024,6.62024,0,0,1-9.36329,0ZM503.28321,8.7153a29.76908,29.76908,0,0,0-41.26567-.79492L226.75559,224.00026H344.24985L504.07813,49.98284A29.76757,29.76757,0,0,0,503.28321,8.7153Z\"]\n};\nvar faSwords = {\n prefix: 'far',\n iconName: 'swords',\n icon: [512, 512, [], \"f71d\", \"M507.31 462.06L448 402.75l31.64-59.03c3.33-6.22 2.2-13.88-2.79-18.87l-17.54-17.53c-6.25-6.25-16.38-6.25-22.63 0L420 324 112 16 18.27.16C8.27-1.27-1.42 7.17.17 18.26l15.84 93.73 308 308-16.69 16.69c-6.25 6.25-6.25 16.38 0 22.62l17.53 17.54a16 16 0 0 0 18.87 2.79L402.75 448l59.31 59.31c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63zm-149.36-76.01L60.78 88.89l-5.72-33.83 33.84 5.72 297.17 297.16-28.12 28.11zm65.17-325.27l33.83-5.72-5.72 33.84L340.7 199.43l33.94 33.94L496.01 112l15.84-93.73c1.43-10-7.01-19.69-18.1-18.1l-93.73 15.84-121.38 121.36 33.94 33.94L423.12 60.78zM199.45 340.69l-45.38 45.38-28.12-28.12 45.38-45.38-33.94-33.94-45.38 45.38-16.69-16.69c-6.25-6.25-16.38-6.25-22.62 0l-17.54 17.53a16 16 0 0 0-2.79 18.87L64 402.75 4.69 462.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L109.25 448l59.03 31.64c6.22 3.33 13.88 2.2 18.87-2.79l17.53-17.54c6.25-6.25 6.25-16.38 0-22.63L188 420l45.38-45.38-33.93-33.93z\"]\n};\nvar faSwordsLaser = {\n prefix: 'far',\n iconName: 'swords-laser',\n icon: [640, 512, [], \"e03d\", \"M136.77186,8.71727a29.77142,29.77142,0,0,0-.79483,41.26562l216.0556,235.26173V167.75048L178.03476,7.92234A29.76184,29.76184,0,0,0,136.77186,8.71727Zm487.23191,384.291L411.30716,181.52587a15.99854,15.99854,0,0,0-27.27816,11.3457V352.37939a16.00105,16.00105,0,0,0,4.685,11.3125L521.01739,496.00244a54.61454,54.61454,0,0,0,77.23929,0l25.74709-25.748a54.626,54.626,0,0,0,0-77.24609ZM432.02356,339.12548V268.89892l70.23814,70.24023-35.11126,35.11329ZM564.31717,462.06494a6.6166,6.6166,0,0,1-9.36222-.00195l-65.18207-65.18751,10.45585-10.45507L570.0919,456.2876Zm25.749-25.75195-5.77669,5.77539-69.86317-69.86719,10.4578-10.459,65.18206,65.1875a6.62075,6.62075,0,0,1,0,9.36329ZM414.60757,147.31493l89.4137-97.332a29.76239,29.76239,0,0,0-42.05579-42.0625L343.66834,116.61766l30.00832,27.56446,5.79426,5.32226a47.89343,47.89343,0,0,1,20.67149-4.66406A47.27194,47.27194,0,0,1,414.60757,147.31493Zm-173.951,63.957-39.79822,36.57032-24.343-24.34571a8.00142,8.00142,0,0,0-11.31317,0L153.891,234.811a8.00009,8.00009,0,0,0,0,11.31445l4.48,4.47851L15.99648,393.00439a54.62537,54.62537,0,0,0,0,77.2461l25.74708,25.75195a54.60807,54.60807,0,0,0,77.23539-.00195L261.3554,353.60009l5.65951,5.66211a8.00143,8.00143,0,0,0,11.31318,0l11.31121-11.31445a7.99772,7.99772,0,0,0,0-11.3125l-25.51078-25.51368,34.11723-37.13867ZM85.04139,462.061a6.62663,6.62663,0,0,1-9.35831.00391L49.934,436.311a6.63257,6.63257,0,0,1,0-9.36719l63.19011-63.19922,35.1093,35.11329Zm74.50328-74.51562-35.10931-35.11524,11.31318-11.3125,35.1093,35.11328ZM182.171,364.9165l-35.1093-35.11328L158.371,318.48876l35.11126,35.11329Zm22.62244-22.62891-35.10931-35.11328,11.31318-11.3125,35.1093,35.11328Z\"]\n};\nvar faSynagogue = {\n prefix: 'far',\n iconName: 'synagogue',\n icon: [640, 512, [], \"f69b\", \"M320 320c-45.52 0-64 41.61-64 66.75V496c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16V384c0-35.35-28.65-64-64-64zm311.99-51.71l-76-71.78c-3.19-3.01-7.59-4.51-12-4.51s-8.81 1.5-12 4.51l-36 34v-82.68a35.21 35.21 0 0 0-13.21-27.49L341.99 7.71A35.157 35.157 0 0 0 320 0c-7.78 0-15.56 2.57-21.99 7.71l-140.8 112.64A35.196 35.196 0 0 0 144 147.84v82.67l-36-34c-3.19-3.01-7.59-4.51-12-4.51s-8.81 1.5-12 4.51L8 268.29c-5.15 4.87-8 11.14-8 17.64V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V296.54l48-45.33 48 45.33V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V153.99l128-102.4 128 102.4V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V296.54l48-45.33 48 45.33V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V285.93c0-6.5-2.85-12.77-8.01-17.64zM388.06 154.2h-38.95L324 114.21c-1.85-2.95-6.15-2.95-8 0l-25.12 39.98h-38.94c-3.72 0-5.98 4.09-4 7.24l19.2 30.56-19.2 30.56c-1.98 3.15.29 7.24 4 7.24h38.94l25.12 40c1.85 2.95 6.15 2.95 8 0l25.12-39.98h38.94c3.72 0 5.98-4.09 4-7.24L372.87 192l19.2-30.56c1.97-3.15-.29-7.24-4.01-7.24z\"]\n};\nvar faSync = {\n prefix: 'far',\n iconName: 'sync',\n icon: [512, 512, [], \"f021\", \"M500 8h-27.711c-6.739 0-12.157 5.548-11.997 12.286l2.347 98.575C418.212 52.043 342.256 8 256 8 134.813 8 33.933 94.924 12.296 209.824 10.908 217.193 16.604 224 24.103 224h28.576c5.674 0 10.542-3.982 11.737-9.529C83.441 126.128 161.917 60 256 60c79.545 0 147.942 47.282 178.676 115.302l-126.39-3.009c-6.737-.16-12.286 5.257-12.286 11.997V212c0 6.627 5.373 12 12 12h192c6.627 0 12-5.373 12-12V20c0-6.627-5.373-12-12-12zm-12.103 280h-28.576c-5.674 0-10.542 3.982-11.737 9.529C428.559 385.872 350.083 452 256 452c-79.546 0-147.942-47.282-178.676-115.302l126.39 3.009c6.737.16 12.286-5.257 12.286-11.997V300c0-6.627-5.373-12-12-12H12c-6.627 0-12 5.373-12 12v192c0 6.627 5.373 12 12 12h27.711c6.739 0 12.157-5.548 11.997-12.286l-2.347-98.575C93.788 459.957 169.744 504 256 504c121.187 0 222.067-86.924 243.704-201.824 1.388-7.369-4.308-14.176-11.807-14.176z\"]\n};\nvar faSyncAlt = {\n prefix: 'far',\n iconName: 'sync-alt',\n icon: [512, 512, [], \"f2f1\", \"M483.515 28.485L431.35 80.65C386.475 35.767 324.485 8 256 8 123.228 8 14.824 112.338 8.31 243.493 7.971 250.311 13.475 256 20.301 256h28.045c6.353 0 11.613-4.952 11.973-11.294C66.161 141.649 151.453 60 256 60c54.163 0 103.157 21.923 138.614 57.386l-54.128 54.129c-7.56 7.56-2.206 20.485 8.485 20.485H492c6.627 0 12-5.373 12-12V36.971c0-10.691-12.926-16.045-20.485-8.486zM491.699 256h-28.045c-6.353 0-11.613 4.952-11.973 11.294C445.839 370.351 360.547 452 256 452c-54.163 0-103.157-21.923-138.614-57.386l54.128-54.129c7.56-7.56 2.206-20.485-8.485-20.485H20c-6.627 0-12 5.373-12 12v143.029c0 10.691 12.926 16.045 20.485 8.485L80.65 431.35C125.525 476.233 187.516 504 256 504c132.773 0 241.176-104.338 247.69-235.493.339-6.818-5.165-12.507-11.991-12.507z\"]\n};\nvar faSyringe = {\n prefix: 'far',\n iconName: 'syringe',\n icon: [512, 512, [], \"f48e\", \"M475.7 115.5c3.1 3.1 8.2 3.1 11.3 0l22.6-22.6c3.1-3.1 3.1-8.2 0-11.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0L396.5 25c-3.1 3.1-3.1 8.2 0 11.3l22.6 22.6-33.9 33.9L317.3 25c-3.1-3.1-8.2-3.1-11.3 0l-22.6 22.6c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3L78.9 286.1c-19 19-28.2 45.2-25.2 72l7.8 69.9-59.2 59c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l59.1-59c74.8 8.3 73 8.3 79.8 8.3 23.2 0 45.4-9.1 62.1-25.8l215.8-215.8 11.3 11.3c3.1 3.1 8.2 3.1 11.3 0L487 206c3.1-3.1 3.1-8.2 0-11.3l-67.9-67.9L453 92.9l22.7 22.6zM192 399.2c-8.6 8.7-20.6 12.9-32.7 11.5l-52.2-5.8-5.8-52.1c-1.3-12.2 2.9-24.1 11.5-32.7l12.2-12.2 28.3 28.3c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L158.9 274l33.9-33.9 28.3 28.3c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L226.8 206l33.9-33.9 28.3 28.3c6.2 6.2 16.4 6.2 22.6 0L323 189c6.2-6.2 6.2-16.4 0-22.6l-28.3-28.3 33.9-33.9 79.2 79.2L192 399.2z\"]\n};\nvar faTable = {\n prefix: 'far',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM232 432H54a6 6 0 0 1-6-6V296h184v136zm0-184H48V112h184v136zm226 184H280V296h184v130a6 6 0 0 1-6 6zm6-184H280V112h184v136z\"]\n};\nvar faTableTennis = {\n prefix: 'far',\n iconName: 'table-tennis',\n icon: [512, 512, [], \"f45d\", \"M483.2 325.8c46.5-83.4 35.4-190.7-35.2-261.5C406.6 22.8 351.7 0 293.2 0c-105.4 0-152.7 62.3-218 127.7-50.9 51-50.9 134 0 185.1l13.1 13.1-73.9 64.2c-18.3 15.9-19.3 44-2.2 61.1l48.4 48.5c17.7 17.8 45.8 15.6 61.2-2.2l63.9-73.9c10.1 10.1 53.4 64.5 130.6 50.1C336.8 497 366.6 512 400 512c61.8 0 112-50.2 112-112 0-28.6-11.1-54.4-28.8-74.2zM293.2 48c45.6 0 88.5 17.8 120.7 50.1 53.8 53.9 63.4 134.7 30.3 199.1-58.1-25.1-105 5.9-122.3 22.8L136.3 134.4C167.6 103.1 209.2 48 293.2 48zm-110 305.1l-93.3 108-39-39.1 107.7-93.6-49.5-49.5c-29.9-30-31.7-77.3-6-109.8l192.2 192.2c-10.5 28.3-7.7 49.4-3.7 65.4-43-.1-56.5-21.6-108.4-73.6zM400 464c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\"]\n};\nvar faTablet = {\n prefix: 'far',\n iconName: 'tablet',\n icon: [448, 512, [], \"f10a\", \"M256 416c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-21.3 14.3-32 32-32s32 14.3 32 32zM448 48v416c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h352c26.5 0 48 21.5 48 48zm-48 410V54c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v404c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faTabletAlt = {\n prefix: 'far',\n iconName: 'tablet-alt',\n icon: [448, 512, [], \"f3fa\", \"M356 368H92c-6.6 0-12-5.4-12-12V92c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v264c0 6.6-5.4 12-12 12zm92-320v416c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h352c26.5 0 48 21.5 48 48zm-48 410V54c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v404c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6zm-176-74c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faTabletAndroid = {\n prefix: 'far',\n iconName: 'tablet-android',\n icon: [448, 512, [], \"f3fb\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-6 464H54c-3.3 0-6-2.7-6-6V54c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v404c0 3.3-2.7 6-6 6zm-118-32H172c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12z\"]\n};\nvar faTabletAndroidAlt = {\n prefix: 'far',\n iconName: 'tablet-android-alt',\n icon: [448, 512, [], \"f3fc\", \"M356 368H92c-6.6 0-12-5.4-12-12V92c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v264c0 6.6-5.4 12-12 12zm92-320v416c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h352c26.5 0 48 21.5 48 48zm-48 410V54c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v404c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6zm-112-38v-8c0-6.6-5.4-12-12-12H172c-6.6 0-12 5.4-12 12v8c0 6.6 5.4 12 12 12h104c6.6 0 12-5.4 12-12z\"]\n};\nvar faTabletRugged = {\n prefix: 'far',\n iconName: 'tablet-rugged',\n icon: [448, 512, [], \"f48f\", \"M439.2 164.4c5.4-2.7 8.8-8.2 8.8-14.3V73.9c0-6.1-3.4-11.6-8.8-14.3L416 48c0-26.5-21.5-48-48-48H80C53.5 0 32 21.5 32 48L8.8 59.6C3.4 62.3 0 67.8 0 73.9v76.2c0 6.1 3.4 11.6 8.8 14.3L32 176v16L8.8 203.6c-5.4 2.7-8.8 8.2-8.8 14.3v76.2c0 6.1 3.4 11.6 8.8 14.3L32 320v16L8.8 347.6c-5.4 2.7-8.8 8.2-8.8 14.3v76.2c0 6.1 3.4 11.6 8.8 14.3L32 464c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48l23.2-11.6c5.4-2.7 8.8-8.2 8.8-14.3v-76.2c0-6.1-3.4-11.6-8.8-14.3L416 336v-16l23.2-11.6c5.4-2.7 8.8-8.2 8.8-14.3v-76.2c0-6.1-3.4-11.6-8.8-14.3L416 192v-16l23.2-11.6zM368 448c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h256c8.8 0 16 7.2 16 16v384z\"]\n};\nvar faTablets = {\n prefix: 'far',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M160 192C71.6 192 0 263.6 0 352s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zM50.7 376h218.5c-25.6 117-192.8 116.7-218.5 0zm0-48c25.7-116.9 192.9-116.9 218.5 0H50.7zM593.1 46.9c-62.4-62.4-163.8-62.5-226.3 0s-62.5 163.8 0 226.3c62.4 62.4 163.8 62.5 226.3 0s62.5-163.9 0-226.3zM385.8 99.7l154.5 154.5C439.7 318.8 321 200.5 385.8 99.7zm188.4 120.6L419.7 65.8C520.3 1.1 639 119.5 574.2 220.3z\"]\n};\nvar faTachometer = {\n prefix: 'far',\n iconName: 'tachometer',\n icon: [576, 512, [], \"f0e4\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm212.27 400H75.73C57.56 397.63 48 359.12 48 320 48 187.66 155.66 80 288 80s240 107.66 240 240c0 39.12-9.56 77.63-27.73 112zM359.59 137.23c-12.72-4.23-26.16 2.62-30.38 15.17l-45.34 136.01C250.49 290.58 224 318.06 224 352c0 11.72 3.38 22.55 8.88 32h110.25c5.5-9.45 8.88-20.28 8.88-32 0-19.45-8.86-36.66-22.55-48.4l45.34-136.01c4.17-12.57-2.64-26.17-15.21-30.36z\"]\n};\nvar faTachometerAlt = {\n prefix: 'far',\n iconName: 'tachometer-alt',\n icon: [576, 512, [], \"f3fd\", \"M128 288c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm154.65-97.08l16.24-48.71c1.16-3.45 3.18-6.35 4.92-9.43-4.73-2.76-9.94-4.78-15.81-4.78-17.67 0-32 14.33-32 32 0 15.78 11.63 28.29 26.65 30.92zM176 176c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zM288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm212.27 400H75.73C57.56 397.63 48 359.12 48 320 48 187.66 155.66 80 288 80s240 107.66 240 240c0 39.12-9.56 77.63-27.73 112zM416 320c0 17.67 14.33 32 32 32s32-14.33 32-32-14.33-32-32-32-32 14.33-32 32zm-56.41-182.77c-12.72-4.23-26.16 2.62-30.38 15.17l-45.34 136.01C250.49 290.58 224 318.06 224 352c0 11.72 3.38 22.55 8.88 32h110.25c5.5-9.45 8.88-20.28 8.88-32 0-19.45-8.86-36.66-22.55-48.4l45.34-136.01c4.17-12.57-2.64-26.17-15.21-30.36zM432 208c0-15.8-11.66-28.33-26.72-30.93-.07.21-.07.43-.14.65l-19.5 58.49c4.37 2.24 9.11 3.8 14.36 3.8 17.67-.01 32-14.34 32-32.01z\"]\n};\nvar faTachometerAltAverage = {\n prefix: 'far',\n iconName: 'tachometer-alt-average',\n icon: [576, 512, [], \"f624\", \"M176 176c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-48 112c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm304-80c0-17.67-14.33-32-32-32s-32 14.33-32 32 14.33 32 32 32 32-14.33 32-32zm-16 112c0 17.67 14.33 32 32 32s32-14.33 32-32-14.33-32-32-32-32 14.33-32 32zM288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm212.27 400H75.73C57.56 397.63 48 359.12 48 320 48 187.66 155.66 80 288 80s240 107.66 240 240c0 39.12-9.56 77.63-27.73 112zM312 292.75V160c0-13.25-10.75-24-24-24s-24 10.75-24 24v132.75c-23.44 9.5-40 32.41-40 59.25 0 11.72 3.38 22.55 8.88 32h110.25c5.5-9.45 8.88-20.28 8.88-32-.01-26.85-16.57-49.75-40.01-59.25z\"]\n};\nvar faTachometerAltFast = {\n prefix: 'far',\n iconName: 'tachometer-alt-fast',\n icon: [576, 512, [], \"f625\", \"M416 320c0 17.67 14.33 32 32 32s32-14.33 32-32-14.33-32-32-32-32 14.33-32 32zm-192 32c0 11.72 3.38 22.55 8.88 32h110.25c5.5-9.45 8.88-20.28 8.88-32 0-11.67-3.36-22.46-8.81-31.88l75.75-97.39c8.16-10.47 6.25-25.55-4.19-33.67-10.56-8.17-25.56-6.25-33.69 4.2l-75.76 97.4c-5.54-1.56-11.27-2.67-17.3-2.67C252.65 288 224 316.65 224 352zm96-192c0-17.67-14.33-32-32-32s-32 14.33-32 32 14.33 32 32 32 32-14.33 32-32zM128 288c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm48-48c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zM0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288S0 160.94 0 320zm48 0C48 187.66 155.66 80 288 80s240 107.66 240 240c0 39.12-9.56 77.63-27.73 112H75.73C57.56 397.63 48 359.12 48 320z\"]\n};\nvar faTachometerAltFastest = {\n prefix: 'far',\n iconName: 'tachometer-alt-fastest',\n icon: [576, 512, [], \"f626\", \"M400 240c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-272 48c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm160-96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm155.28 104.47l-101.87 20.38C329.96 299.49 310.35 288 288 288c-35.35 0-64 28.65-64 64 0 11.72 3.38 22.55 8.88 32h110.25c3.54-6.08 5.73-12.89 7.18-19.99l102.41-20.48c13-2.59 21.41-15.23 18.81-28.23s-15.31-21.61-28.25-18.83zM176 176c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zM288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm212.27 400H75.73C57.56 397.63 48 359.12 48 320 48 187.66 155.66 80 288 80s240 107.66 240 240c0 39.12-9.56 77.63-27.73 112z\"]\n};\nvar faTachometerAltSlow = {\n prefix: 'far',\n iconName: 'tachometer-alt-slow',\n icon: [576, 512, [], \"f627\", \"M128 288c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm160 0c-6.04 0-11.77 1.11-17.3 2.67l-75.76-97.4c-8.12-10.45-23.12-12.38-33.69-4.2-10.44 8.12-12.34 23.2-4.19 33.67l75.75 97.39c-5.45 9.42-8.81 20.21-8.81 31.88 0 11.72 3.38 22.55 8.88 32h110.25c5.5-9.45 8.88-20.28 8.88-32C352 316.65 323.35 288 288 288zm0-96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm128 128c0 17.67 14.33 32 32 32s32-14.33 32-32-14.33-32-32-32-32 14.33-32 32zm16-112c0-17.67-14.33-32-32-32s-32 14.33-32 32 14.33 32 32 32 32-14.33 32-32zM288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm212.27 400H75.73C57.56 397.63 48 359.12 48 320 48 187.66 155.66 80 288 80s240 107.66 240 240c0 39.12-9.56 77.63-27.73 112z\"]\n};\nvar faTachometerAltSlowest = {\n prefix: 'far',\n iconName: 'tachometer-alt-slowest',\n icon: [576, 512, [], \"f628\", \"M288 288c-22.35 0-41.96 11.49-53.41 28.84l-101.87-20.38c-13.06-2.77-25.66 5.83-28.25 18.83s5.81 25.64 18.81 28.23L225.69 364c1.45 7.1 3.64 13.91 7.18 19.99h110.25c5.5-9.45 8.88-20.28 8.88-32 0-35.34-28.65-63.99-64-63.99zm-112-48c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm240 80c0 17.67 14.33 32 32 32s32-14.33 32-32-14.33-32-32-32-32 14.33-32 32zM288 192c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm144 16c0-17.67-14.33-32-32-32s-32 14.33-32 32 14.33 32 32 32 32-14.33 32-32zM288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm212.27 400H75.73C57.56 397.63 48 359.12 48 320 48 187.66 155.66 80 288 80s240 107.66 240 240c0 39.12-9.56 77.63-27.73 112z\"]\n};\nvar faTachometerAverage = {\n prefix: 'far',\n iconName: 'tachometer-average',\n icon: [576, 512, [], \"f629\", \"M312 292.75V160c0-13.25-10.75-24-24-24s-24 10.75-24 24v132.75c-23.44 9.5-40 32.41-40 59.25 0 11.72 3.38 22.55 8.88 32h110.25c5.5-9.45 8.88-20.28 8.88-32-.01-26.85-16.57-49.75-40.01-59.25zM288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm212.27 400H75.73C57.56 397.63 48 359.12 48 320 48 187.66 155.66 80 288 80s240 107.66 240 240c0 39.12-9.56 77.63-27.73 112z\"]\n};\nvar faTachometerFast = {\n prefix: 'far',\n iconName: 'tachometer-fast',\n icon: [576, 512, [], \"f62a\", \"M381.06 193.27l-75.76 97.4c-5.54-1.56-11.27-2.67-17.3-2.67-35.35 0-64 28.65-64 64 0 11.72 3.38 22.55 8.88 32h110.25c5.5-9.45 8.88-20.28 8.88-32 0-11.67-3.36-22.46-8.81-31.88l75.75-97.39c8.16-10.47 6.25-25.55-4.19-33.67-10.57-8.15-25.6-6.23-33.7 4.21zM288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm212.27 400H75.73C57.56 397.63 48 359.12 48 320 48 187.66 155.66 80 288 80s240 107.66 240 240c0 39.12-9.56 77.63-27.73 112z\"]\n};\nvar faTachometerFastest = {\n prefix: 'far',\n iconName: 'tachometer-fastest',\n icon: [576, 512, [], \"f62b\", \"M443.28 296.47l-101.87 20.38C329.96 299.49 310.35 288 288 288c-35.35 0-64 28.65-64 64 0 11.72 3.38 22.55 8.88 32h110.25c3.54-6.08 5.73-12.89 7.18-19.99l102.41-20.48c13-2.59 21.41-15.23 18.81-28.23s-15.31-21.61-28.25-18.83zM288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm212.27 400H75.73C57.56 397.63 48 359.12 48 320 48 187.66 155.66 80 288 80s240 107.66 240 240c0 39.12-9.56 77.63-27.73 112z\"]\n};\nvar faTachometerSlow = {\n prefix: 'far',\n iconName: 'tachometer-slow',\n icon: [576, 512, [], \"f62c\", \"M288 288c-6.04 0-11.77 1.11-17.3 2.67l-75.76-97.4c-8.12-10.45-23.12-12.38-33.69-4.2-10.44 8.12-12.34 23.2-4.19 33.67l75.75 97.39c-5.45 9.42-8.81 20.21-8.81 31.88 0 11.72 3.38 22.55 8.88 32h110.25c5.5-9.45 8.88-20.28 8.88-32C352 316.65 323.35 288 288 288zm0-256C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm212.27 400H75.73C57.56 397.63 48 359.12 48 320 48 187.66 155.66 80 288 80s240 107.66 240 240c0 39.12-9.56 77.63-27.73 112z\"]\n};\nvar faTachometerSlowest = {\n prefix: 'far',\n iconName: 'tachometer-slowest',\n icon: [576, 512, [], \"f62d\", \"M288 288c-22.35 0-41.96 11.49-53.41 28.84l-101.87-20.38c-13.06-2.77-25.66 5.83-28.25 18.83s5.81 25.64 18.81 28.23L225.69 364c1.45 7.1 3.64 13.91 7.18 19.99h110.25c5.5-9.45 8.88-20.28 8.88-32 0-35.34-28.65-63.99-64-63.99zm0-256C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm212.27 400H75.73C57.56 397.63 48 359.12 48 320 48 187.66 155.66 80 288 80s240 107.66 240 240c0 39.12-9.56 77.63-27.73 112z\"]\n};\nvar faTaco = {\n prefix: 'far',\n iconName: 'taco',\n icon: [512, 512, [], \"f826\", \"M208 288a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm-64 64a16 16 0 1 0 16 16 16 16 0 0 0-16-16zm367.45 55.64a309.9 309.9 0 0 0-14.63-62.14 62.39 62.39 0 0 0 4.18-22.3c0-9.39.62-18.25 3.3-27.59 5.32-18.45 12.55-43.48 3-69.58-13-35.67-47.92-48.78-59.91-58.14-5.26-16.34-6.42-55.1-35.2-78.59-27.05-22.08-56.11-15.17-81.75-15.4C316.57 62.73 293.75 32 257.42 32c-37.66 0-64.67 32.84-75.88 41.86-16.77.15-52.72-8.3-81.75 15.4S70 151.77 64.37 168c-12.55 9.54-46.82 22.64-59.71 58-9.54 26.06-2.32 51.08 3 69.35 2.7 9.4 3.35 18.22 3.35 27.77a62.13 62.13 0 0 0 4.22 22.33A309.26 309.26 0 0 0 .55 407.64C-3.84 442.59 21 480 60.5 480h391c39.5 0 64.36-37.34 59.96-72.36zM451.51 432H60.5c-8.57 0-13.32-10.45-12.33-18.38C62.89 296.4 152.24 208 256 208s193.12 88.4 207.84 205.62c1 8-3.91 18.38-12.33 18.38z\"]\n};\nvar faTag = {\n prefix: 'far',\n iconName: 'tag',\n icon: [512, 512, [], \"f02b\", \"M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a47.998 47.998 0 0 0 14.059 33.941l211.882 211.882c18.745 18.745 49.137 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM259.886 463.996L48 252.118V48h204.118L464 259.882 259.886 463.996zM192 144c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48z\"]\n};\nvar faTags = {\n prefix: 'far',\n iconName: 'tags',\n icon: [640, 512, [], \"f02c\", \"M625.941 293.823L421.823 497.941c-18.746 18.746-49.138 18.745-67.882 0l-.36-.36L592 259.882 331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882zm-128 0L293.823 497.941C284.451 507.314 272.166 512 259.882 512c-12.284 0-24.569-4.686-33.941-14.059L14.059 286.059A48 48 0 0 1 0 252.118V48C0 21.49 21.49 0 48 0h204.118a47.998 47.998 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882zM464 259.882L252.118 48H48v204.118l211.886 211.878L464 259.882zM144 96c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faTally = {\n prefix: 'far',\n iconName: 'tally',\n icon: [640, 512, [], \"f69c\", \"M639.25 171.91l-4.84-15.25c-2.67-8.42-11.66-13.09-20.09-10.42L536 171.08V48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v138.3l-80 25.37V48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v178.89l-80 25.37V48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v219.47l-80 25.37V48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v260.06L11.17 337.5C2.75 340.17-1.92 349.16.75 357.59l4.84 15.25c2.67 8.42 11.67 13.09 20.09 10.41L104 358.41V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V343.19l80-25.37V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V302.61l80-25.37V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V262.02l80-25.37V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V221.44L628.83 192c8.43-2.67 13.09-11.66 10.42-20.09z\"]\n};\nvar faTanakh = {\n prefix: 'far',\n iconName: 'tanakh',\n icon: [448, 512, [], \"f827\", \"M368 0H16A16 16 0 0 0 0 16v368a16 16 0 0 0 12.9 15.7c4.2 13 4.2 51.6 0 64.6A16 16 0 0 0 0 480v16a16 16 0 0 0 16 16h352a80 80 0 0 0 80-80V80a80 80 0 0 0-80-80zm0 464H54c2.7-17.3 2.7-46.7 0-64h314a32 32 0 0 1 0 64zm32-105.3a79.37 79.37 0 0 0-32-6.7H48V48h320a32 32 0 0 1 32 32zM314.58 200l27.7-46.32a20 20 0 0 0-17.19-30.26h-56.35L241 77.16a19.64 19.64 0 0 0-16.94-9.68 20 20 0 0 0-17.28 9.8l-27.6 46.16h-56.3a20.14 20.14 0 0 0-17.5 10.15 19.68 19.68 0 0 0 .21 20L133.42 200l-27.7 46.32a20 20 0 0 0 17.19 30.26h56.35L207 322.84a19.64 19.64 0 0 0 16.94 9.68h.06a20 20 0 0 0 17.22-9.8l27.6-46.16h56.3a20.14 20.14 0 0 0 17.5-10.15 19.68 19.68 0 0 0-.21-20zm3.48-52.58l-17.47 29.21-17.49-29.19zM224 95.38l16.8 28.06h-33.62zm-94 52.06h34.91l-17.51 29.17zm0 105.12l17.47-29.21 17.49 29.21zm94 52.06l-16.8-28.06h33.59zm31.15-52.06h-62.28L161.39 200l31.43-52.54h62.31L286.61 200zm28 0l17.45-29.17 17.46 29.17z\"]\n};\nvar faTape = {\n prefix: 'far',\n iconName: 'tape',\n icon: [640, 512, [], \"f4db\", \"M624 432H362.3c52.1-41 85.7-104.5 85.7-176 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-400 0c-97 0-176-79-176-176S127 80 224 80s176 79 176 176-79 176-176 176zm0-272c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTasks = {\n prefix: 'far',\n iconName: 'tasks',\n icon: [512, 512, [], \"f0ae\", \"M496 232H208a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V88a16 16 0 0 0-16-16zM64.3 368C38 368 16 389.5 16 416s22 48 48.3 48a48 48 0 0 0 0-96zm75.26-172.51a12.09 12.09 0 0 0-17 0l-63.66 63.3-22.68-21.94a12 12 0 0 0-17 0L3.53 252.43a11.86 11.86 0 0 0 0 16.89L51 316.51a12.82 12.82 0 0 0 17.58 0l15.7-15.59 72.17-71.74a11.86 11.86 0 0 0 .1-16.8zm0-160a12 12 0 0 0-17 0L58.91 98.65 36.22 76.58a12.07 12.07 0 0 0-17 0L3.53 92.26a11.93 11.93 0 0 0 0 16.95l47.57 47.28a12.79 12.79 0 0 0 17.6 0l15.59-15.58 72.17-72a12.05 12.05 0 0 0 .1-17z\"]\n};\nvar faTasksAlt = {\n prefix: 'far',\n iconName: 'tasks-alt',\n icon: [512, 512, [], \"f828\", \"M488 31H24C10.7 31 0 43 0 58v74c0 15 10.7 27 24 27h464c13.3 0 24-12 24-27V58c0-15-10.7-27-24-27zm-184 80H48V79h256v32zm160 0H352V79h112v32zm24 240H24c-13.3 0-24 12-24 27v74c0 15 10.7 27 24 27h464c13.3 0 24-12 24-27v-74c0-15-10.7-27-24-27zm-248 80H48v-32h192v32zm224 0H288v-32h176v32zm24-240H24c-13.3 0-24 12-24 27v74c0 15 10.7 27 24 27h464c13.3 0 24-12 24-27v-74c0-15-10.7-27-24-27zm-376 80H48v-32h64v32zm352 0H160v-32h304v32z\"]\n};\nvar faTaxi = {\n prefix: 'far',\n iconName: 'taxi',\n icon: [512, 512, [], \"f1ba\", \"M112 280c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm288 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-72 24H184c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h144c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm126.15-88.03l-15.03-77.66C432.56 104.52 402.84 80 368.44 80H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v16h-16.44c-34.41 0-64.12 24.52-70.69 58.31l-15.03 77.66C23.83 230.74 0 264.55 0 304v48c0 23.63 12.95 44.04 32 55.12V456c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24v-40h288v40c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24v-48.88c19.05-11.09 32-31.49 32-55.12v-48c0-39.45-23.83-73.26-57.85-88.03zM120 147.44c2.19-11.27 12.09-19.44 23.56-19.44h224.88c11.47 0 21.38 8.17 23.56 19.44L403.72 208H108.28L120 147.44zM464 352c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16v-48c0-26.47 21.53-48 48-48h320c26.47 0 48 21.53 48 48v48z\"]\n};\nvar faTeeth = {\n prefix: 'far',\n iconName: 'teeth',\n icon: [640, 512, [], \"f62e\", \"M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zm48 416c0 26.47-21.53 48-48 48H96c-26.47 0-48-21.53-48-48v-29.68C63.93 409.04 90.21 424 120 424c26.38 0 50.09-11.67 66.23-30.12C203.75 412.42 228.55 424 256 424c24.56 0 47-9.27 64-24.5 17 15.23 39.44 24.5 64 24.5 27.45 0 52.25-11.58 69.77-30.12C469.91 412.33 493.62 424 520 424c29.79 0 56.07-14.96 72-37.68V416zM93.33 288h53.33c7.36 0 13.33 5.97 13.33 13.33V336c0 22.09-17.91 40-40 40s-40-17.91-40-40v-34.67C80 293.97 85.97 288 93.33 288zM80 242.67V208c0-22.09 17.91-40 40-40s40 17.91 40 40v34.67c0 7.36-5.97 13.33-13.33 13.33H93.33C85.97 256 80 250.03 80 242.67zM221.71 288h68.57c7.57 0 13.71 6.14 13.71 13.71V328c0 26.51-21.49 48-48 48s-48-21.49-48-48v-26.29c.01-7.57 6.15-13.71 13.72-13.71zM208 242.29V184c0-26.51 21.49-48 48-48s48 21.49 48 48v58.29c0 7.57-6.14 13.71-13.71 13.71h-68.57c-7.58 0-13.72-6.14-13.72-13.71zM349.71 288h68.57c7.57 0 13.71 6.14 13.71 13.71V328c0 26.51-21.49 48-48 48s-48-21.49-48-48v-26.29c.01-7.57 6.15-13.71 13.72-13.71zM336 242.29V184c0-26.51 21.49-48 48-48s48 21.49 48 48v58.29c0 7.57-6.14 13.71-13.71 13.71h-68.57c-7.58 0-13.72-6.14-13.72-13.71zM493.33 288h53.33c7.36 0 13.33 5.97 13.33 13.33V336c0 22.09-17.91 40-40 40s-40-17.91-40-40v-34.67c.01-7.36 5.98-13.33 13.34-13.33zM480 242.67V208c0-22.09 17.91-40 40-40s40 17.91 40 40v34.67c0 7.36-5.97 13.33-13.33 13.33h-53.33c-7.37 0-13.34-5.97-13.34-13.33zm112-84.99C576.07 134.96 549.79 120 520 120c-19.53 0-37.59 6.39-52.2 17.2C451.35 107.86 419.95 88 384 88c-24.56 0-47 9.27-64 24.5C303 97.27 280.56 88 256 88c-35.95 0-67.35 19.86-83.8 49.2-14.61-10.8-32.68-17.2-52.2-17.2-29.79 0-56.07 14.96-72 37.68V96c0-26.47 21.53-48 48-48h448c26.47 0 48 21.53 48 48v61.68z\"]\n};\nvar faTeethOpen = {\n prefix: 'far',\n iconName: 'teeth-open',\n icon: [640, 512, [], \"f62f\", \"M544 0H96C42.98 0 0 42.98 0 96v96c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 212.57c0 6.31-5.12 11.43-11.43 11.43H91.43C85.12 224 80 218.88 80 212.57V200c0-22.09 17.91-40 40-40s40 17.91 40 40v12.57zm144-2.28c0 7.57-6.14 13.71-13.71 13.71h-68.57c-7.57 0-13.71-6.14-13.71-13.71V176c0-26.51 21.49-48 48-48s48 21.49 48 48v34.29zm128 0c0 7.57-6.14 13.71-13.71 13.71h-68.57c-7.57 0-13.71-6.14-13.71-13.71V176c0-26.51 21.49-48 48-48s48 21.49 48 48v34.29zm128 2.28c0 6.31-5.12 11.43-11.43 11.43h-57.14c-6.31 0-11.43-5.12-11.43-11.43V200c0-22.09 17.91-40 40-40s40 17.91 40 40v12.57zm32-62.51C575.96 127.13 549.53 112 520 112c-19.35 0-37.44 6.43-52.13 17.31C451.44 99.92 420 80 384 80c-24.56 0-47 9.27-64 24.5C303 89.27 280.56 80 256 80c-36 0-67.44 19.92-83.87 49.31C157.44 118.43 139.35 112 120 112c-29.53 0-55.96 15.13-72 38.06V96c0-26.47 21.53-48 48-48h448c26.47 0 48 21.53 48 48v54.06zM576 288H64c-35.34 0-64 28.65-64 64v64c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-64c0-35.35-28.66-64-64-64zm-96 43.43c0-6.31 5.12-11.43 11.43-11.43h57.14c6.31 0 11.43 5.12 11.43 11.43V344c0 22.09-17.91 40-40 40s-40-17.91-40-40v-12.57zm-144 2.28c0-7.57 6.14-13.71 13.71-13.71h68.57c7.57 0 13.71 6.14 13.71 13.71V336c0 26.51-21.49 48-48 48s-48-21.49-48-48v-2.29zm-128 0c0-7.57 6.14-13.71 13.71-13.71h68.57c7.57 0 13.71 6.14 13.71 13.71V336c0 26.51-21.49 48-48 48s-48-21.49-48-48v-2.29zm-128-2.28c0-6.31 5.12-11.43 11.43-11.43h57.14c6.31 0 11.43 5.12 11.43 11.43V344c0 22.09-17.91 40-40 40s-40-17.91-40-40v-12.57zM592 416c0 26.47-21.53 48-48 48H96c-26.47 0-48-21.53-48-48v-21.68C63.93 417.04 90.21 432 120 432c26.38 0 50.09-11.67 66.23-30.12C203.75 420.42 228.55 432 256 432c24.56 0 47-9.27 64-24.5 17 15.23 39.44 24.5 64 24.5 27.45 0 52.25-11.58 69.77-30.12C469.91 420.33 493.62 432 520 432c29.79 0 56.07-14.96 72-37.68V416z\"]\n};\nvar faTelescope = {\n prefix: 'far',\n iconName: 'telescope',\n icon: [640, 512, [], \"e03e\", \"M638.7773,216.83088,553.06276,9.88222A15.99571,15.99571,0,0,0,532.16,1.22208L414.84419,49.81961a15.9993,15.9993,0,0,0-8.65758,20.90424l3.22047,7.77537L74.29836,241.74292c-8.31776,4.06444-12.27646,13.25582-9.056,21.02924l8.74351,21.10932L9.88112,310.43609a16.00022,16.00022,0,0,0-8.65954,20.90424l20.0552,48.42175a16.00118,16.00118,0,0,0,20.90475,8.66013l64.10476-26.55462,8.74352,21.10737c3.18531,7.69138,12.42684,11.50387,21.2719,8.46677l126.87565-43.77918c.2285.29492.47848.57031.71088.86133L216.419,490.93951A16.00126,16.00126,0,0,0,231.5976,512h16.86207a15.99882,15.99882,0,0,0,15.17664-10.94138l42.163-126.49575a71.11486,71.11486,0,0,0,28.44718,0l42.163,126.49575A16.00127,16.00127,0,0,0,391.58805,512h16.86011a16.00043,16.00043,0,0,0,15.1786-21.06049L376.15752,348.52388a71.27587,71.27587,0,0,0,15.86018-44.52332c0-.26367-.07616-.50586-.07812-.76757l96.72547-33.37491,3.2361,7.81443a16.00164,16.00164,0,0,0,20.90279,8.66013l117.31578-48.59752A15.99767,15.99767,0,0,0,638.7773,216.83088ZM320.02288,328.0005a23.99994,23.99994,0,1,1,23.99827-23.99994A24.0354,24.0354,0,0,1,320.02288,328.0005Zm55.123-69.74786a71.55078,71.55078,0,0,0-126.92056,43.79285L147.81065,336.69383l-26.6641-64.38068L427.8081,122.92683,470.264,225.43046ZM524.00235,229.739l-61.228-147.81991,58.18918-24.1054,61.22607,147.82186Z\"]\n};\nvar faTemperatureDown = {\n prefix: 'far',\n iconName: 'temperature-down',\n icon: [512, 512, [], \"e03f\", \"M160,322.91V304a16,16,0,0,0-32,0v18.91a48,48,0,1,0,32,0ZM256,112a112,112,0,0,0-224,0V278.5C12.31,303.09,0,334,0,368a144,144,0,0,0,288,0c0-34-12.31-64.91-32-89.5ZM144,464a96.14,96.14,0,0,1-96-96c0-27,11.69-47.3,21.5-59.5L80,295.41V112a64,64,0,0,1,128,0V295.3l10.5,13.11C228.31,320.7,240,341,240,368A96.14,96.14,0,0,1,144,464Zm340-80H440V48a16,16,0,0,0-16-16H408a16,16,0,0,0-16,16V384H348a12,12,0,0,0-12,12,13.75,13.75,0,0,0,3.28,8.23l68,72A13.61,13.61,0,0,0,416,480a13.77,13.77,0,0,0,8.72-3.77l68-72A13.75,13.75,0,0,0,496,396,12,12,0,0,0,484,384Z\"]\n};\nvar faTemperatureFrigid = {\n prefix: 'far',\n iconName: 'temperature-frigid',\n icon: [576, 512, [], \"f768\", \"M200 125.2L240.2 85c4.7-4.7 4.7-12.3 0-17l-8.5-8.5c-4.7-4.7-12.3-4.7-17 0L200 74.3V44c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v30.3l-14.8-14.8c-4.7-4.7-12.3-4.7-17 0l-8.5 8.5c-4.7 4.7-4.7 12.3 0 17l40.2 40.2v56.9L101.6 153l-15-55.7c-1.7-6.5-8.4-10.3-14.9-8.6L60 91.9c-6.5 1.7-10.3 8.4-8.6 14.9l5.5 20.4-26.6-15.3c-5.8-3.4-13.2-1.4-16.6 4.4l-12.1 21c-3.4 5.8-1.4 13.2 4.4 16.6l26.6 15.3-20.4 5.5c-6.5 1.7-10.3 8.4-8.6 14.9l3.1 11.7c1.7 6.5 8.4 10.3 14.9 8.6L77.3 195l50.2 29-50.2 29-55.7-15c-6.5-1.7-13.1 2.1-14.9 8.6l-3.1 11.7c-1.7 6.5 2.1 13.1 8.6 14.9l20.4 5.5-26.5 15.4c-5.8 3.4-7.8 10.8-4.4 16.6l12.1 21c3.4 5.8 10.8 7.8 16.6 4.4L57 320.8l-5.5 20.4c-1.7 6.5 2.1 13.1 8.6 14.9l11.7 3.1c6.5 1.7 13.1-2.1 14.9-8.6l14.9-55.6 50.4-29.1v56.9L111.8 363c-4.7 4.7-4.7 12.3 0 17l8.5 8.5c4.7 4.7 12.3 4.7 17 0l14.8-14.8V404c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12v-30.3l14.8 14.8c4.7 4.7 12.3 4.7 17 0l8.5-8.5c4.7-4.7 4.7-12.3 0-17L200 322.8v-56.9l68.3 39.4c5.1-13 11.4-25.7 19.7-37.5v-7.2L224.6 224l63.4-36.6v-56.1l-88 50.8v-56.9zm344 153.3V112C544 50.1 493.9 0 432 0S320 50.1 320 112v166.5c-19.7 24.6-32 55.5-32 89.5 0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5zM432 464c-52.9 0-96-43.1-96-96 0-27 11.7-47.3 21.5-59.5l10.5-13.1V112c0-35.3 28.7-64 64-64s64 28.7 64 64v183.3l10.5 13.1C516.3 320.7 528 341 528 368c0 52.9-43.1 96-96 96zm16-141.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureHigh = {\n prefix: 'far',\n iconName: 'temperature-high',\n icon: [448, 512, [], \"f769\", \"M368 0c-44.1 0-80 35.9-80 80s35.9 80 80 80 80-35.9 80-80-35.9-80-80-80zm0 112c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-112 0C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.1 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 464c-52.9 0-96-43.1-96-96 0-27 11.7-47.3 21.5-59.5L80 295.4V112c0-35.3 28.7-64 64-64s64 28.7 64 64v183.3l10.5 13.1C228.3 320.7 240 341 240 368c0 52.9-43.1 96-96 96zm16-141.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureHot = {\n prefix: 'far',\n iconName: 'temperature-hot',\n icon: [576, 512, [], \"f76a\", \"M448 322.9V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1zm-189.3 15.6l-9.8 14.6L224 390l-24.9-36.9-17.8-26.3-31.2 6-43.6 8.5 8.5-43.9 6-31.1-26.2-17.8-37-25.1 37-25.1 26.2-17.8-6-31.1-8.5-43.9 43.7 8.5 31.2 6 17.8-26.3L224 57l24.9 36.9 17.7 26.3 21.4-4.1V112c0-16.3 3.3-31.8 8.4-46.4l-7.7 1.5-35.4-52.4C246.7 4.9 235.4 0 224 0s-22.7 4.9-29.3 14.7l-35.4 52.4-62-12c-2.3-.4-4.5-.7-6.8-.7-9.3 0-18.3 3.7-25 10.4-8.3 8.4-11.9 20.2-9.7 31.8l12 62.1-52.3 35.5C5.8 200.8 0 211.8 0 223.5c0 11.8 5.8 22.7 15.6 29.3l52.3 35.4-12 62.1c-2.2 11.6 1.4 23.5 9.7 31.8 6.7 6.7 15.6 10.4 25 10.4 2.2 0 4.5-.2 6.8-.6l62-12 35.4 52.4a35.318 35.318 0 0 0 58.6 0l9.9-14.7c-4.7-15.8-7.3-32.4-7.3-49.7 0-9.9 1-19.7 2.7-29.4zm285.3-60V112C544 50.1 493.9 0 432 0S320 50.1 320 112v166.5c-19.7 24.6-32 55.5-32 89.5 0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5zM432 464c-52.9 0-96-43.1-96-96 0-27 11.7-47.3 21.5-59.5l10.5-13.1V112c0-35.3 28.7-64 64-64s64 28.7 64 64v183.3l10.5 13.1C516.3 320.7 528 341 528 368c0 52.9-43.1 96-96 96zM288 164c-16.1-17.1-38.7-28-64-28-48.5 0-88 39.5-88 88s39.5 88 88 88c17.5 0 33.6-5.3 47.3-14.1 4.6-10.4 9.9-20.5 16.7-30.1V164zm-64 100c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z\"]\n};\nvar faTemperatureLow = {\n prefix: 'far',\n iconName: 'temperature-low',\n icon: [448, 512, [], \"f76b\", \"M160 322.9V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1zM256 112C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.1 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 464c-52.9 0-96-43.1-96-96 0-27 11.7-47.3 21.5-59.5L80 295.4V112c0-35.3 28.7-64 64-64s64 28.7 64 64v183.3l10.5 13.1C228.3 320.7 240 341 240 368c0 52.9-43.1 96-96 96zM368 0c-44.1 0-80 35.9-80 80s35.9 80 80 80 80-35.9 80-80-35.9-80-80-80zm0 112c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faTemperatureUp = {\n prefix: 'far',\n iconName: 'temperature-up',\n icon: [512, 512, [], \"e040\", \"M160,322.91V112a16,16,0,0,0-32,0V322.91a48,48,0,1,0,32,0ZM256,112a112,112,0,0,0-224,0V278.5C12.31,303.09,0,334,0,368a144,144,0,0,0,288,0c0-34-12.31-64.91-32-89.5ZM144,464a96.14,96.14,0,0,1-96-96c0-27,11.69-47.3,21.5-59.5L80,295.41V112a64,64,0,0,1,128,0V295.3l10.5,13.11C228.31,320.7,240,341,240,368A96.14,96.14,0,0,1,144,464ZM492.72,107.77l-68-72A13.61,13.61,0,0,0,416,32a13.77,13.77,0,0,0-8.72,3.77l-68,72A13.75,13.75,0,0,0,336,116a12,12,0,0,0,12,12h44V464a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V128h44a12,12,0,0,0,12-12A13.75,13.75,0,0,0,492.72,107.77Z\"]\n};\nvar faTenge = {\n prefix: 'far',\n iconName: 'tenge',\n icon: [384, 512, [], \"f7d7\", \"M372 144H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h148v260c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V208h148c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12zm0-112H12C5.4 32 0 37.4 0 44v40c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z\"]\n};\nvar faTennisBall = {\n prefix: 'far',\n iconName: 'tennis-ball',\n icon: [496, 512, [], \"f45e\", \"M495 236.2c0-.1.1-.2.1-.3h-.1C485.2 115.2 388.8 18.8 268.1 9v-.1c-.1 0-.2.1-.3.1-6.5-.5-13.1-1-19.8-1C111.2 8 0 119.2 0 256c0 6.7.5 13.3 1 19.9v.1c9.7 120.8 106.2 217.3 227 227h.1c6.6.5 13.2 1 19.9 1 136.8 0 248-111.2 248-248 0-6.7-.5-13.2-1-19.8zM219.3 58.3c-1.7 6.2-2.8 12.6-2.8 19.3 0 37.7-16.9 79.9-41.9 104.9-25.1 25-67.2 41.9-104.9 41.9-6.7 0-13.1 1.1-19.3 2.8C63 140 132 71 219.3 58.3zM50 282.9c4.2-6.4 11.4-10.5 19.6-10.5 50.3 0 104.8-22 138.8-56 34-34 55.9-88.5 56-138.8 0-8.2 4-15.4 10.4-19.6C363.6 70 434 140.4 446 229.2c-4.2 6.4-11.4 10.4-19.6 10.4-50.4 0-104.8 22-138.8 56-34 34-55.9 88.4-56 138.8 0 8.3-4.1 15.5-10.5 19.7C132.4 442 62 371.6 50 282.9zm226.8 170.8c1.7-6.2 2.8-12.6 2.8-19.3 0-37.7 16.9-79.9 41.9-104.9 25.1-25.1 67.2-41.9 104.9-41.9 6.7 0 13.1-1.1 19.3-2.8C433 372 364 441 276.8 453.7z\"]\n};\nvar faTerminal = {\n prefix: 'far',\n iconName: 'terminal',\n icon: [640, 512, [], \"f120\", \"M41.678 38.101l209.414 209.414c4.686 4.686 4.686 12.284 0 16.971L41.678 473.899c-4.686 4.686-12.284 4.686-16.971 0L4.908 454.101c-4.686-4.686-4.686-12.284 0-16.971L185.607 256 4.908 74.87c-4.686-4.686-4.686-12.284 0-16.971L24.707 38.1c4.686-4.686 12.284-4.686 16.971.001zM640 468v-28c0-6.627-5.373-12-12-12H300c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h328c6.627 0 12-5.373 12-12z\"]\n};\nvar faText = {\n prefix: 'far',\n iconName: 'text',\n icon: [448, 512, [], \"f893\", \"M432 32a16 16 0 0 1 16 16v80a16 16 0 0 1-16 16h-16a16 16 0 0 1-16-16V96H256v336h48a16 16 0 0 1 16 16v16a16 16 0 0 1-16 16H144a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h48V96H48v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16z\"]\n};\nvar faTextHeight = {\n prefix: 'far',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M560 368h-56V144h56c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h56v224h-56c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368zM304 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V96h80v336H80a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-48V96h80v32a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTextSize = {\n prefix: 'far',\n iconName: 'text-size',\n icon: [640, 512, [], \"f894\", \"M624 32H272a16 16 0 0 0-16 16v80a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V96h112v336h-48a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-48V96h112v32a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM304 224H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-32h80v160H96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-32V272h80v32a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16z\"]\n};\nvar faTextWidth = {\n prefix: 'far',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M363.31 292.68C354 283.36 336 288.36 336 304v56H112v-56c0-14.31-17.31-21.33-27.31-11.31l-80 80a16 16 0 0 0 0 22.63l80 80C94 484.64 112 479.64 112 464v-56h224v56c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.63zM432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V96h144v144h-32a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-32V96h144v32a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTh = {\n prefix: 'far',\n iconName: 'th',\n icon: [512, 512, [], \"f00a\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM197.3 72h117.3v96H197.3zm0 136h117.3v96H197.3zm-40 232H52c-6.6 0-12-5.4-12-12v-84h117.3zm0-136H40v-96h117.3zm0-136H40V84c0-6.6 5.4-12 12-12h105.3zm157.4 272H197.3v-96h117.3v96zm157.3 0H354.7v-96H472zm0-136H354.7v-96H472zm0-136H354.7V72H472z\"]\n};\nvar faThLarge = {\n prefix: 'far',\n iconName: 'th-large',\n icon: [512, 512, [], \"f009\", \"M0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48H48C21.49 32 0 53.49 0 80zm232 0v152H48V86a6 6 0 0 1 6-6h178zM48 280h184v152H54a6 6 0 0 1-6-6V280zm232 152V280h184v146a6 6 0 0 1-6 6H280zm184-200H280V80h178a6 6 0 0 1 6 6v146z\"]\n};\nvar faThList = {\n prefix: 'far',\n iconName: 'th-list',\n icon: [512, 512, [], \"f00b\", \"M0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48H48C21.49 32 0 53.49 0 80zm472 224H197.333v-96H472v96zm0 40v84c0 6.627-5.373 12-12 12H197.333v-96H472zM40 208h117.333v96H40v-96zm157.333-40V72H460c6.627 0 12 5.373 12 12v84H197.333zm-40-96v96H40V84c0-6.627 5.373-12 12-12h105.333zM40 344h117.333v96H52c-6.627 0-12-5.373-12-12v-84z\"]\n};\nvar faTheaterMasks = {\n prefix: 'far',\n iconName: 'theater-masks',\n icon: [640, 512, [], \"f630\", \"M206.86 244.47c-35.88 10.48-59.95 41.3-57.53 74.29 11.4-12.76 28.81-23.76 49.9-31l7.63-43.29zM606.8 119.91c-44.49-24.76-92.35-41.65-141.65-50.34-49.3-8.69-100.05-9.19-150.32-1.14-27.31 4.37-49.08 26.32-54.04 54.49l-31.73 179.96c-15.39 87.27 95.28 196.76 158.31 207.88 63.03 11.11 204.47-53.93 219.86-141.2l31.73-179.96c4.96-28.17-7.99-56.24-32.16-69.69zm-46.86 241.32c-10.22 57.95-124.2 109.32-164.25 102.26-40.06-7.06-129.59-94.32-119.38-152.27l31.73-179.96c1.4-7.96 7.31-14.3 14.36-15.43 44.75-7.16 89.96-6.82 134.4 1.02 44.44 7.83 87.05 22.98 126.64 45.01 6.24 3.47 9.62 11.46 8.22 19.42l-31.72 179.95zM80.05 297.66L48.32 118.22c-1.4-7.93 1.97-15.89 8.22-19.36 60.13-33.37 128.18-51 196.79-51 8.45 0 16.94.48 25.42 1.01 9.52-5.26 19.91-9.08 31.03-10.86 18.89-3.01 38.04-4.54 57.18-5.32-9.99-13.95-24.47-24.22-41.77-26.99C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.41 33.2 57.04 9.03 70.45-3.92 98.44 1.05 126.53l31.73 179.45C47.02 386.46 169.11 448 237.23 448c3.69 0 6.95-.46 10.29-.82-12.21-15.56-23.11-32.14-31.6-49.38-52.88-10.5-127.86-54.85-135.87-100.14zm113.31-141.01c-.73-4.13-2.23-7.89-4.07-11.42-8.25 8.94-20.67 15.79-35.32 18.37-14.65 2.58-28.67.4-39.48-5.18-.52 3.95-.64 8 .09 12.13 3.84 21.76 24.58 36.28 46.34 32.45s36.28-24.6 32.44-46.35zm312.59 50.09c-21.75-3.84-42.5 10.69-46.34 32.45-.73 4.13-.61 8.18-.09 12.13 10.81-5.58 24.83-7.77 39.48-5.18 14.65 2.58 27.08 9.43 35.33 18.37 1.84-3.53 3.34-7.29 4.07-11.43 3.83-21.76-10.69-42.51-32.45-46.34zm-133 17.16c14.65 2.58 27.08 9.43 35.32 18.37 1.84-3.53 3.34-7.29 4.07-11.43 3.84-21.76-10.69-42.5-32.45-46.34-21.75-3.84-42.5 10.69-46.34 32.45-.73 4.13-.61 8.18-.09 12.13 10.82-5.57 24.84-7.76 39.49-5.18zm44.31 117.3c-43.28-7.63-78.89-28.32-99.49-53.92-4.48 53.77 33.37 103.36 89.04 113.18 55.68 9.82 108.21-23.84 122.38-75.9-28.11 17.01-68.65 24.27-111.93 16.64z\"]\n};\nvar faThermometer = {\n prefix: 'far',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2zm-26.7 108.2L210 368h-66v-67.1l33.1-33.3 27.6 27.6c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L211 233.5l33.8-34.1 27.8 27.8c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.3-6.2 6.3-16.4 0-22.6l-28-28 33.8-34.1 28.1 28.1c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.3 6.2-16.4 0-22.6l-28.2-28.2 32.6-32.8c19.2-19.1 48.8-22.2 67.4-7 25.5 21 21.1 54.1 4 71.2z\"]\n};\nvar faThermometerEmpty = {\n prefix: 'far',\n iconName: 'thermometer-empty',\n icon: [256, 512, [], \"f2cb\", \"M184 384c0 30.928-25.072 56-56 56s-56-25.072-56-56 25.072-56 56-56 56 25.072 56 56zm40-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.302 128-128 128-.299 0-.61-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.756 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM216 384c0-37.167-21.152-57.235-32-69.527V96c0-30.878-25.122-56-56-56-30.879 0-56 25.122-56 56v218.473c-10.977 12.439-31.811 32.281-31.999 69.064-.247 48.291 39.091 88.125 87.367 88.461L128 472c48.524 0 88-39.477 88-88z\"]\n};\nvar faThermometerFull = {\n prefix: 'far',\n iconName: 'thermometer-full',\n icon: [256, 512, [], \"f2c7\", \"M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 376l-.631-.002c-48.276-.335-87.614-40.17-87.367-88.461.188-36.783 21.022-56.625 31.999-69.064V96c0-30.878 25.121-56 56-56 30.878 0 56 25.122 56 56v218.473c10.848 12.292 32 32.361 32 69.527-.001 48.523-39.477 88-88.001 88zm56-88c0 30.928-25.072 56-56 56s-56-25.072-56-56c0-22.338 13.082-41.615 32-50.604V96c0-13.255 10.745-24 24-24s24 10.745 24 24v237.396c18.918 8.989 32 28.266 32 50.604z\"]\n};\nvar faThermometerHalf = {\n prefix: 'far',\n iconName: 'thermometer-half',\n icon: [256, 512, [], \"f2c9\", \"M184 384c0 30.928-25.072 56-56 56s-56-25.072-56-56c0-22.338 13.082-41.615 32-50.604V216c0-13.255 10.745-24 24-24s24 10.745 24 24v117.396c18.918 8.989 32 28.266 32 50.604zm40-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.302 128-128 128-.299 0-.61-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.756 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM216 384c0-37.167-21.152-57.235-32-69.527V96c0-30.878-25.122-56-56-56-30.879 0-56 25.122-56 56v218.473c-10.977 12.439-31.811 32.281-31.999 69.064-.247 48.291 39.091 88.125 87.367 88.461L128 472c48.524 0 88-39.477 88-88z\"]\n};\nvar faThermometerQuarter = {\n prefix: 'far',\n iconName: 'thermometer-quarter',\n icon: [256, 512, [], \"f2ca\", \"M184 384c0 30.928-25.072 56-56 56s-56-25.072-56-56c0-22.338 13.082-41.615 32-50.604V280c0-13.255 10.745-24 24-24s24 10.745 24 24v53.396c18.918 8.989 32 28.266 32 50.604zm40-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.302 128-128 128-.299 0-.61-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.756 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM216 384c0-37.167-21.152-57.235-32-69.527V96c0-30.878-25.122-56-56-56-30.879 0-56 25.122-56 56v218.473c-10.977 12.439-31.811 32.281-31.999 69.064-.247 48.291 39.091 88.125 87.367 88.461L128 472c48.524 0 88-39.477 88-88z\"]\n};\nvar faThermometerThreeQuarters = {\n prefix: 'far',\n iconName: 'thermometer-three-quarters',\n icon: [256, 512, [], \"f2c8\", \"M184 384c0 30.928-25.072 56-56 56s-56-25.072-56-56c0-22.338 13.082-41.615 32-50.604V152c0-13.255 10.745-24 24-24s24 10.745 24 24v181.396c18.918 8.989 32 28.266 32 50.604zm40-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.302 128-128 128-.299 0-.61-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.756 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM216 384c0-37.167-21.152-57.235-32-69.527V96c0-30.878-25.122-56-56-56-30.879 0-56 25.122-56 56v218.473c-10.977 12.439-31.811 32.281-31.999 69.064-.247 48.291 39.091 88.125 87.367 88.461L128 472c48.524 0 88-39.477 88-88z\"]\n};\nvar faTheta = {\n prefix: 'far',\n iconName: 'theta',\n icon: [352, 512, [], \"f69e\", \"M176 32C78.8 32 0 132.29 0 256s78.8 224 176 224 176-100.29 176-224S273.2 32 176 32zm0 48c63.46 0 117.77 67.49 126.6 152H49.4C58.23 147.49 112.54 80 176 80zm0 352c-63.46 0-117.77-67.49-126.6-152h253.2c-8.83 84.51-63.14 152-126.6 152z\"]\n};\nvar faThumbsDown = {\n prefix: 'far',\n iconName: 'thumbs-down',\n icon: [512, 512, [], \"f165\", \"M466.27 225.31c4.674-22.647.864-44.538-8.99-62.99 2.958-23.868-4.021-48.565-17.34-66.99C438.986 39.423 404.117 0 327 0c-7 0-15 .01-22.22.01C201.195.01 168.997 40 128 40h-10.845c-5.64-4.975-13.042-8-21.155-8H32C14.327 32 0 46.327 0 64v240c0 17.673 14.327 32 32 32h64c11.842 0 22.175-6.438 27.708-16h7.052c19.146 16.953 46.013 60.653 68.76 83.4 13.667 13.667 10.153 108.6 71.76 108.6 57.58 0 95.27-31.936 95.27-104.73 0-18.41-3.93-33.73-8.85-46.54h36.48c48.602 0 85.82-41.565 85.82-85.58 0-19.15-4.96-34.99-13.73-49.84zM64 296c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm330.18 16.73H290.19c0 37.82 28.36 55.37 28.36 94.54 0 23.75 0 56.73-47.27 56.73-18.91-18.91-9.46-66.18-37.82-94.54C206.9 342.89 167.28 272 138.92 272H128V85.83c53.611 0 100.001-37.82 171.64-37.82h37.82c35.512 0 60.82 17.12 53.12 65.9 15.2 8.16 26.5 36.44 13.94 57.57 21.581 20.384 18.699 51.065 5.21 65.62 9.45 0 22.36 18.91 22.27 37.81-.09 18.91-16.71 37.82-37.82 37.82z\"]\n};\nvar faThumbsUp = {\n prefix: 'far',\n iconName: 'thumbs-up',\n icon: [512, 512, [], \"f164\", \"M466.27 286.69C475.04 271.84 480 256 480 236.85c0-44.015-37.218-85.58-85.82-85.58H357.7c4.92-12.81 8.85-28.13 8.85-46.54C366.55 31.936 328.86 0 271.28 0c-61.607 0-58.093 94.933-71.76 108.6-22.747 22.747-49.615 66.447-68.76 83.4H32c-17.673 0-32 14.327-32 32v240c0 17.673 14.327 32 32 32h64c14.893 0 27.408-10.174 30.978-23.95 44.509 1.001 75.06 39.94 177.802 39.94 7.22 0 15.22.01 22.22.01 77.117 0 111.986-39.423 112.94-95.33 13.319-18.425 20.299-43.122 17.34-66.99 9.854-18.452 13.664-40.343 8.99-62.99zm-61.75 53.83c12.56 21.13 1.26 49.41-13.94 57.57 7.7 48.78-17.608 65.9-53.12 65.9h-37.82c-71.639 0-118.029-37.82-171.64-37.82V240h10.92c28.36 0 67.98-70.89 94.54-97.46 28.36-28.36 18.91-75.63 37.82-94.54 47.27 0 47.27 32.98 47.27 56.73 0 39.17-28.36 56.72-28.36 94.54h103.99c21.11 0 37.73 18.91 37.82 37.82.09 18.9-12.82 37.81-22.27 37.81 13.489 14.555 16.371 45.236-5.21 65.62zM88 432c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z\"]\n};\nvar faThumbtack = {\n prefix: 'far',\n iconName: 'thumbtack',\n icon: [384, 512, [], \"f08d\", \"M306.5 186.6l-5.7-42.6H328c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24H56C42.8 0 32 10.8 32 24v96c0 13.2 10.8 24 24 24h27.2l-5.7 42.6C29.6 219.4 0 270.7 0 328c0 13.2 10.8 24 24 24h144v104c0 .9.1 1.7.4 2.5l16 48c2.4 7.3 12.8 7.3 15.2 0l16-48c.3-.8.4-1.7.4-2.5V352h144c13.2 0 24-10.8 24-24 0-57.3-29.6-108.6-77.5-141.4zM50.5 304c8.3-38.5 35.6-70 71.5-87.8L138 96H80V48h224v48h-58l16 120.2c35.8 17.8 63.2 49.4 71.5 87.8z\"]\n};\nvar faThunderstorm = {\n prefix: 'far',\n iconName: 'thunderstorm',\n icon: [512, 512, [], \"f76c\", \"M337 288h-72.1l22.6-77.1c2.5-9.5-4.6-18.9-14.5-18.9h-82c-7.5 0-13.9 5.6-14.9 13l-16 130c-1.2 9 5.8 17 14.9 17h81l-31.6 141.5c-2.2 9.5 5 18.5 14.6 18.5 5.2 0 10.2-2.7 13-7.5l98-194c5.7-10-1.5-22.5-13-22.5zm73.7-183.8C397.2 61.8 358 32 312 32c-13.5 0-26.8 2.6-39.2 7.7C250.3 14.5 218.4 0 184 0 120 0 67.6 50.3 64.2 113.4 25.6 130.4 0 168.5 0 212c0 59.5 48.4 108 108 108h21.7l5.9-48H108c-33.1 0-60-26.9-60-60 0-28 19.1-52 46.4-58.3l20.8-4.8-2.8-24.9c-.2-1.3-.4-2.6-.4-4 0-39.7 32.3-72 72-72 25.2 0 48.2 13.1 61.4 35.1l13.3 22.1 21.1-14.9C289.4 83.6 300.5 80 312 80c28.6 0 52.4 21.7 55.3 50.4l2.2 21.6H404c33.1 0 60 26.9 60 60s-26.9 60-60 60h-32.1c2.1 2.4 4.2 4.7 5.8 7.5 7.2 12.4 7.8 27.3 2.7 40.5H404c59.6 0 108-48.5 108-108 0-57.3-44.9-104.3-101.3-107.8z\"]\n};\nvar faThunderstormMoon = {\n prefix: 'far',\n iconName: 'thunderstorm-moon',\n icon: [640, 512, [], \"f76d\", \"M277.6 335.3h-57.7l17.3-65.2c2-7.6-3.7-15.2-11.6-15.2h-68c-6 0-11.1 4.5-11.9 10.5l-16 120.5c-1 7.2 4.6 13.6 11.9 13.6H201l-23 97.6c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152.6c4.5-7.9-1.2-18-10.5-18zm85.8-151.2c-12.1-36.9-46.7-63.6-87.4-63.6-3.1 0-6.1.2-9.1.5-21.6-15.9-47.6-24.6-74.9-24.6-52.4 0-97.6 31.4-117.2 77.5C31.4 188 0 228.9 0 277.1c0 56.3 43.2 102.2 97.9 107.4.1-.9-.1-1.9.1-2.8l5.9-44.8c-31.2-2.1-56-27.9-56-59.8 0-33.3 26.9-60.2 60-60.2 1.6 0 3.2.4 4.8.5 3.8-40.8 37.6-72.8 79.2-72.8 25.2 0 47.4 11.9 62.1 30.2 6.5-3.8 13.9-6.1 21.9-6.1 24.3 0 44 19.8 44 44.2 0 1.8-.3 3.5-.5 5.2 27.6 5.4 48.5 29.8 48.5 59.1 0 29.1-20.5 53.4-47.9 59 2.9 11.1 1.4 23.2-4.4 33.4l-9.2 16h1.5c59.6 0 108-48.6 108-108.4.1-39-20.7-74-52.5-93.1zm274.4 53.5c-3.8-7.9-11.8-13.1-20.5-13.1h-1.5l-2.8.5c-6.1 1.2-12.3 1.8-18.4 1.8-53.2 0-96.5-43.6-96.5-97.2 0-34.9 18.8-67.3 49-84.5 8.4-4.8 12.8-14.1 11.2-23.7-1.6-9.6-8.8-16.9-18.3-18.6C530.3.9 520.5 0 510.7 0c-73.6 0-135.1 50.5-153.6 118.7 13.8 11.9 25 26.9 32.6 44.3.6.4 1 .9 1.6 1.3 0-1.2-.4-2.4-.4-3.6 0-59.1 42.6-108.4 98.6-118.6-19.9 24.3-31.3 55.1-31.3 87.5 0 67.6 48.8 124 112.9 135.3-18 10.6-38.7 16.3-60.2 16.3-23.4 0-45.1-7-63.6-18.8.5 4.9.9 9.8.9 14.7 0 10.1-1.3 19.9-3.3 29.4 20.2 9.3 42.4 14.8 66.1 14.8 48.4 0 93.6-21.7 124.2-59.5 5.3-6.9 6.4-16.2 2.6-24.2z\"]\n};\nvar faThunderstormSun = {\n prefix: 'far',\n iconName: 'thunderstorm-sun',\n icon: [640, 512, [], \"f76e\", \"M500 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm-307.1-72.3l-5.9 8.7-10.8 16-11.2-16.7-17.8-26.3-31.2 6-19.4 3.8 3.8-19.6 6-31.1-26.2-17.8-16.5-11.2 16.5-11.2 26.2-17.8-6-31.1-3.8-19.5 19.4 3.8 31.2 6L165 79.5l10.8-16L187 80.3l17.8 26.3 31.2-6 19.4-3.7-3.8 19.6-6 31.1 13.5 9.2c5.3-3.2 10.7-6.2 16.4-8.7 7-13 15.7-24.8 25.7-35.2l7-36.1c1.8-9.1-1.1-18.4-7.6-25-5.2-5.3-12.3-8.2-19.6-8.2-1.8 0-3.6.2-5.3.5L227 53.5l-28-41.3C193.9 4.6 185.2 0 176 0c-8.9 0-17.9 3.8-23 11.5l-27.8 41.2-48.7-9.4c-1.8-.3-3.6-.5-5.3-.5-7.3 0-14.3 2.9-19.6 8.2-6.5 6.6-9.4 15.9-7.6 25l9.4 48.8-41.1 27.9C4.6 157.8 0 166.4 0 175.6s4.6 17.9 12.2 23.1l41.1 27.8-9.4 48.8c-1.8 9.1 1.1 18.4 7.6 25 5.2 5.3 12.3 8.2 19.6 8.2 1.8 0 3.6-.2 5.3-.5l48.7-9.4 27.8 41.2c5.2 7.7 13.8 12.3 23 12.3 8.9 0 17.9-3.8 23-11.5l5.2-7.8c-7.8-17.4-12.3-36.5-12.3-56.7.2-4.3.7-8.3 1.1-12.4zm394.5-80.3c-12-36.8-46.7-63.4-87.4-63.4-3.1 0-6.1.2-9.1.5C469.3 104.7 443.2 96 416 96c-52.4 0-97.6 31.3-117.2 77.2C255.4 187.3 224 228 224 276c0 55.6 42.3 100.9 96.4 106.8v-.6l6.2-46.7C296 332.7 272 307.3 272 276c0-33.1 26.9-60 60-60 1.6 0 3.2.4 4.8.5 3.8-40.6 37.6-72.5 79.2-72.5 25.2 0 47.4 11.9 62.1 30.1 6.5-3.8 13.9-6.1 21.9-6.1 24.3 0 44 19.7 44 44 0 1.8-.3 3.4-.5 5.2 27.6 5.4 48.5 29.6 48.5 58.8 0 29.8-21.8 54.3-50.2 59 3.6 11.6 2.5 24.3-3.7 35l-8.1 14h2c59.6 0 108-48.4 108-108 0-38.8-20.8-73.6-52.6-92.6zM176 136c-22.1 0-40 17.9-40 40s17.9 40 40 40 40-17.9 40-40-17.9-40-40-40z\"]\n};\nvar faTicket = {\n prefix: 'far',\n iconName: 'ticket',\n icon: [576, 512, [], \"f145\", \"M568 216h8V112c0-26.51-21.49-48-48-48H48C21.49 64 0 85.49 0 112v104h8c22.091 0 40 17.909 40 40s-17.909 40-40 40H0v104c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V296h-8c-22.091 0-40-17.909-40-40s17.909-40 40-40zm-40-38.372c-28.47 14.59-48 44.243-48 78.372s19.53 63.782 48 78.372V400H48v-65.628c28.471-14.59 48-44.243 48-78.372s-19.529-63.782-48-78.372V112h480v65.628z\"]\n};\nvar faTicketAlt = {\n prefix: 'far',\n iconName: 'ticket-alt',\n icon: [576, 512, [], \"f3ff\", \"M400 208v96H176v-96h224m24-48H152c-13.255 0-24 10.745-24 24v144c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24zm144 56h8V112c0-26.51-21.49-48-48-48H48C21.49 64 0 85.49 0 112v104h8c22.091 0 40 17.909 40 40s-17.909 40-40 40H0v104c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V296h-8c-22.091 0-40-17.909-40-40s17.909-40 40-40zm-40-38.372c-28.47 14.59-48 44.243-48 78.372s19.53 63.782 48 78.372V400H48v-65.628c28.471-14.59 48-44.243 48-78.372s-19.529-63.782-48-78.372V112h480v65.628z\"]\n};\nvar faTilde = {\n prefix: 'far',\n iconName: 'tilde',\n icon: [448, 512, [], \"f69f\", \"M316.25 350.67c-31.48-4.74-58.98-24.08-77.7-49.83l-70.96-97.62c-19.2-26.36-56.6-36.33-87.97-17.5C59.2 197.99 48 221.37 48 245.19V304c0 8.84-7.16 16-16 16H16c-8.84 0-16-7.16-16-16v-56.21c0-46.29 25.01-90.77 67.26-109.69 51.3-22.97 108.58-5.14 139.15 36.88l74 101.8c19.2 26.36 56.6 36.33 87.97 17.5C388.8 282.02 400 258.63 400 234.81V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v61.89c0 68.71-61.03 123.42-131.75 112.78z\"]\n};\nvar faTimes = {\n prefix: 'far',\n iconName: 'times',\n icon: [320, 512, [], \"f00d\", \"M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z\"]\n};\nvar faTimesCircle = {\n prefix: 'far',\n iconName: 'times-circle',\n icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z\"]\n};\nvar faTimesHexagon = {\n prefix: 'far',\n iconName: 'times-hexagon',\n icon: [576, 512, [], \"f2ee\", \"M441.5 39.8C432.9 25.1 417.1 16 400 16H176c-17.1 0-32.9 9.1-41.5 23.8l-112 192c-8.7 14.9-8.7 33.4 0 48.4l112 192c8.6 14.7 24.4 23.8 41.5 23.8h224c17.1 0 32.9-9.1 41.5-23.8l112-192c8.7-14.9 8.7-33.4 0-48.4l-112-192zM400 448H176L64 256 176 64h224l112 192-112 192zm-10.2-112.8l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L288 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17L327.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17z\"]\n};\nvar faTimesOctagon = {\n prefix: 'far',\n iconName: 'times-octagon',\n icon: [512, 512, [], \"f2f0\", \"M497.9 150.5L361.5 14.1c-9-9-21.2-14.1-33.9-14.1H184.5c-12.7 0-24.9 5.1-33.9 14.1L14.1 150.5c-9 9-14.1 21.2-14.1 33.9v143.1c0 12.7 5.1 24.9 14.1 33.9l136.5 136.5c9 9 21.2 14.1 33.9 14.1h143.1c12.7 0 24.9-5.1 33.9-14.1L498 361.4c9-9 14.1-21.2 14.1-33.9v-143c-.1-12.8-5.2-25-14.2-34zm-33.9 177L327.5 464h-143L48 327.5v-143L184.5 48h143.1L464 184.5v143zm-106.2 7.7l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17z\"]\n};\nvar faTimesSquare = {\n prefix: 'far',\n iconName: 'times-square',\n icon: [448, 512, [], \"f2d3\", \"M325.8 193.8L263.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L224 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"]\n};\nvar faTint = {\n prefix: 'far',\n iconName: 'tint',\n icon: [352, 512, [], \"f043\", \"M205.22 22.09C201.21 7.53 188.61 0 175.97 0c-12.35 0-24.74 7.2-29.19 22.09C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 464c-70.58 0-128-58.36-128-130.09 0-43.33 20.67-72.95 51.96-117.79 24.15-34.61 52.98-75.92 76.04-132.46 23.15 56.83 52.02 98.1 76.2 132.66 31.19 44.58 51.8 74.03 51.8 117.6C304 405.64 246.58 464 176 464zm16-64c-44.12 0-80-35.89-80-80 0-8.84-7.16-16-16-16s-16 7.16-16 16c0 61.75 50.25 112 112 112 8.84 0 16-7.16 16-16s-7.16-16-16-16z\"]\n};\nvar faTintSlash = {\n prefix: 'far',\n iconName: 'tint-slash',\n icon: [640, 512, [], \"f5c7\", \"M633.99 471.01L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.5zM320 83.66c23.15 56.83 52.02 98.1 76.2 132.66 4.2 6 8.16 11.69 11.95 17.21l84.24 65.86c-17.92-87.7-101.36-136.27-143.17-277.3C345.21 7.54 332.61 0 319.97 0c-12.35 0-24.74 7.2-29.19 22.09-10.44 35.2-23.58 64.47-37.62 90.27l38.12 29.8c10.01-17.75 19.83-36.71 28.72-58.5zM320 464c-70.58 0-128-58.36-128-130.09 0-26.35 7.73-47.65 20.76-70.37l-38.06-29.76c-18.15 30.24-30.7 60.94-30.7 100.13C144 432.35 222.72 512 320 512c52.93 0 100.23-23.69 132.48-61.04l-38.17-29.84C390.88 447.27 357.46 464 320 464z\"]\n};\nvar faTire = {\n prefix: 'far',\n iconName: 'tire',\n icon: [512, 512, [], \"f631\", \"M256 84c-94.99 0-172 77.01-172 172s77.01 172 172 172 172-77.01 172-172S350.99 84 256 84zm0 48c18.58 0 36.05 4.4 51.89 11.75l-26.66 36.7c-7.97-2.66-16.35-4.45-25.22-4.45s-17.25 1.79-25.22 4.45l-26.66-36.7C219.95 136.4 237.42 132 256 132zM133.47 270.56c-.58-4.84-1.47-9.58-1.47-14.56 0-32.48 12.83-61.85 33.34-83.98l26.55 36.55C182.03 221.87 176 238.17 176 256c0 .25.07.47.07.72l-42.6 13.84zM232 377.57c-36.13-7.12-66.23-30.21-83.72-61.35l42.71-13.88c9.96 13.94 24.31 24.31 41.01 29.59v45.64zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm24 89.57v-45.64c16.7-5.28 31.04-15.64 41.01-29.59l42.71 13.88c-17.49 31.15-47.59 54.23-83.72 61.35zm55.93-120.85c0-.25.07-.47.07-.72 0-17.83-6.03-34.13-15.89-47.43l26.55-36.55C367.17 194.15 380 223.52 380 256c0 4.99-.9 9.73-1.47 14.56l-42.6-13.84zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm0 464c-114.69 0-208-93.31-208-208S141.31 48 256 48s208 93.31 208 208-93.31 208-208 208z\"]\n};\nvar faTireFlat = {\n prefix: 'far',\n iconName: 'tire-flat',\n icon: [512, 512, [], \"f632\", \"M0 488.02c0 13.23 10.71 23.94 23.92 23.98h464.16c13.22-.04 23.92-10.76 23.92-23.98 0-13.26-10.74-24-24-24h-20.38C495.6 422.98 512 373.42 512 320c0-141.38-114.62-256-256-256S0 178.62 0 320c0 53.42 16.4 102.98 44.38 144.02H24c-13.26 0-24 10.74-24 24zm232-46.45c-36.13-7.12-66.23-30.21-83.72-61.35l42.71-13.88c9.96 13.94 24.31 24.31 41.01 29.59v45.64zm-55.93-120.85l-42.6 13.84c-.58-4.84-1.47-9.58-1.47-14.56 0-32.48 12.83-61.85 33.34-83.98l26.55 36.55C182.03 285.87 176 302.17 176 320c0 .25.07.47.07.72zM256 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm-51.89-144.25c24.13-11.21 61.58-19.6 103.77 0l-26.66 36.7c-22.06-7.37-37.63-4.28-50.45 0l-26.66-36.7zM280 441.57v-45.64c16.7-5.28 31.04-15.64 41.01-29.59l42.71 13.88c-17.49 31.15-47.59 54.23-83.72 61.35zm40.11-169l26.55-36.55C367.17 258.15 380 287.52 380 320c0 4.99-.9 9.73-1.47 14.56l-42.6-13.84c0-.25.07-.47.07-.72 0-17.83-6.03-34.13-15.89-47.43zM256 112c114.69 0 208 93.31 208 208 0 55.89-22.27 106.6-58.27 144.02h-56.12C396.71 433.33 428 380.41 428 320c0-94.99-77.01-172-172-172S84 225.01 84 320c0 60.41 31.29 113.33 78.4 144.02h-56.13C70.27 426.6 48 375.89 48 320c0-114.69 93.31-208 208-208z\"]\n};\nvar faTirePressureWarning = {\n prefix: 'far',\n iconName: 'tire-pressure-warning',\n icon: [512, 512, [], \"f633\", \"M246.48 256.02h19.04c8.22 0 15.1-6.23 15.92-14.41l12.8-128c.94-9.42-6.45-17.59-15.92-17.59h-44.64c-9.47 0-16.86 8.17-15.92 17.59l12.8 128c.82 8.18 7.7 14.41 15.92 14.41zm257.67-40.31c-6.02-28.55-19.49-54.79-34.23-79.98C455.57 111.21 448 84.89 448 59.47V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v43.47c0 89.04 55.66 112.48 63.19 206.2 4.73 58.94-11.05 105.22-53.22 153.27-7.44 8.47-18.48 13.06-29.75 13.06H131.78c-11.29 0-22.34-4.59-29.78-13.08-42.16-48.06-57.93-94.35-53.19-153.29C56.21 173.78 112 147.1 112 59.47V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v43.47c0 25.42-7.56 51.73-21.91 76.23-14.74 25.16-28.2 51.38-34.22 79.92-19.71 93.35-3.04 165.08 57.71 234.54 4.32 4.93 9.19 9.25 14.43 13.04V496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32.8c5.22-3.78 10.08-8.09 14.39-13.01 60.75-69.44 77.44-141.16 57.75-234.48zM256 288.02c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32c0-17.68-14.33-32-32-32z\"]\n};\nvar faTireRugged = {\n prefix: 'far',\n iconName: 'tire-rugged',\n icon: [512, 512, [], \"f634\", \"M474.35 165.55c6.89-24.88.57-52.67-18.94-72.19L418.63 56.6c-13.98-13.98-32.56-21.68-52.33-21.68-6.82 0-13.49.92-19.89 2.69C333.69 15.17 309.58 0 282 0h-52c-27.58 0-51.69 15.17-64.42 37.61a74.512 74.512 0 0 0-19.89-2.69c-19.77 0-38.35 7.7-52.33 21.68L56.6 93.36c-19.52 19.52-25.83 47.32-18.94 72.19C15.19 178.27 0 202.39 0 230v52c0 27.6 15.19 51.72 37.65 64.44-6.89 24.88-.57 52.67 18.94 72.19l36.77 36.77c13.98 13.98 32.56 21.67 52.33 21.67 6.82 0 13.49-.92 19.89-2.69C178.3 496.83 202.41 512 230 512h52c27.59 0 51.7-15.17 64.42-37.61a74.457 74.457 0 0 0 19.89 2.69c19.77 0 38.35-7.7 52.32-21.67l36.77-36.77c19.52-19.52 25.83-47.32 18.94-72.19C496.81 333.72 512 309.6 512 282v-52c0-27.61-15.19-51.73-37.65-64.45zM464 282c0 14.36-11.64 26-26 26h-7.64c-3.6 12.09-8.34 23.69-14.25 34.58l5.35 5.35c10.15 10.15 10.15 26.62 0 36.77l-36.77 36.77c-5.08 5.08-11.73 7.62-18.38 7.62s-13.31-2.54-18.38-7.62l-5.35-5.35c-10.89 5.9-22.49 10.64-34.58 14.25V438c0 14.36-11.64 26-26 26h-52c-14.36 0-26-11.64-26-26v-7.64c-12.09-3.6-23.69-8.34-34.58-14.25l-5.35 5.35c-5.08 5.08-11.73 7.62-18.38 7.62s-13.31-2.54-18.38-7.62l-36.77-36.77c-10.15-10.15-10.15-26.62 0-36.77l5.35-5.35c-5.9-10.89-10.64-22.49-14.25-34.58H74c-14.36 0-26-11.64-26-26v-52c0-14.36 11.64-26 26-26h7.64c3.6-12.09 8.34-23.69 14.25-34.58l-5.35-5.34c-10.15-10.15-10.15-26.62 0-36.77l36.77-36.77c5.08-5.08 11.73-7.62 18.38-7.62s13.31 2.54 18.38 7.62l5.35 5.34c10.89-5.9 22.49-10.64 34.58-14.24V74c0-14.36 11.64-26 26-26h52c14.36 0 26 11.64 26 26v7.64c12.09 3.6 23.69 8.34 34.58 14.24l5.35-5.34c5.08-5.08 11.73-7.62 18.38-7.62s13.31 2.54 18.38 7.62l36.77 36.77c10.15 10.15 10.15 26.62 0 36.77l-5.35 5.34c5.9 10.89 10.64 22.49 14.25 34.58H438c14.36 0 26 11.64 26 26v52zM256 111.98c-79.53 0-144 64.47-144 144s64.47 144 144 144 144-64.47 144-144-64.47-144-144-144zm0 256c-61.76 0-112-50.24-112-112s50.24-112 112-112 112 50.24 112 112-50.24 112-112 112zM256 176c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24zm0 111.98c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24-10.75-24-24-24zM312 232c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24zm-112 0c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24z\"]\n};\nvar faTired = {\n prefix: 'far',\n iconName: 'tired',\n icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm129.1-303.8c-3.8-4.4-10.3-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.8 1.6 15.3-2.5 3.8-4.5 3.9-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zM220 208c0-4.2-2.2-8.1-5.8-10.3l-80-48c-5-3-11.5-1.9-15.3 2.5-3.8 4.5-3.9 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.5 4.1 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3zm28 64c-45.4 0-100.9 38.3-107.8 93.3-1.5 11.8 6.9 21.6 15.5 17.9C178.4 373.5 212 368 248 368s69.6 5.5 92.3 15.2c8.5 3.7 17-6 15.5-17.9-6.9-55-62.4-93.3-107.8-93.3z\"]\n};\nvar faToggleOff = {\n prefix: 'far',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM48 256c0-79.583 64.404-144 144-144 79.582 0 144 64.404 144 144 0 79.582-64.404 144-144 144-79.582 0-144-64.404-144-144zm336 144h-65.02c86.704-76.515 86.683-211.504 0-288H384c79.582 0 144 64.404 144 144 0 79.582-64.404 144-144 144z\"]\n};\nvar faToggleOn = {\n prefix: 'far',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 336c-79.6 0-144-64.4-144-144s64.4-144 144-144 144 64.4 144 144-64.4 144-144 144z\"]\n};\nvar faToilet = {\n prefix: 'far',\n iconName: 'toilet',\n icon: [384, 512, [], \"f7d8\", \"M152 64h-48c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V72c0-4.4-3.6-8-8-8zm216-16c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 61.4 28.9 115.9 73.7 151l-24.3 79.7C43.1 491.2 58.5 512 80 512h224c21.5 0 36.9-20.8 30.6-41.3L310.3 391c44.8-35.1 73.7-89.7 73.7-151 0-13.1-11.8-25.2-32-35.3V48h16zM80 48h224v140.1c-31.5-7.6-70.2-12.1-112-12.1s-80.5 4.5-112 12.1V48zm21.6 416l14.5-47.6c23.3 10 48.9 15.6 75.9 15.6s52.6-5.6 75.9-15.6l14.5 47.6H101.6zm90.4-80c-63.6 0-117.3-41.6-136.3-98.9 34.8 11.7 83 18.9 136.3 18.9s101.5-7.2 136.3-18.9c-19 57.3-72.7 98.9-136.3 98.9zm0-116c-77.1 0-139.6-12.5-139.6-28s62.5-28 139.6-28 139.6 12.5 139.6 28-62.5 28-139.6 28z\"]\n};\nvar faToiletPaper = {\n prefix: 'far',\n iconName: 'toilet-paper',\n icon: [576, 512, [], \"f71e\", \"M216 232c13.25 0 24-10.75 24-24 0-13.26-10.75-24-24-24s-24 10.74-24 24c0 13.25 10.75 24 24 24zm80 0c13.25 0 24-10.75 24-24 0-13.26-10.75-24-24-24s-24 10.74-24 24c0 13.25 10.75 24 24 24zm-184-24c0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24s-24 10.74-24 24zm352-64c-13.25 0-24 21.49-24 48s10.75 48 24 48c13.26 0 24-21.49 24-48s-10.74-48-24-48zm0-144H144C82.14 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h328.92c13.77 0 26-8.81 30.36-21.88 11.16-33.48 21.59-63.54 24.11-106.12H464c61.86 0 112-85.96 112-192S525.86 0 464 0zM352 192v172.07c0 41.07-8.02 68.04-18.6 99.93H60.6C73.16 426.48 80 401.78 80 364.07V192c0-86.57 38.52-144 64-144h246.09C366.78 83.19 352 134.58 352 192zm112 144c-25.48 0-64-57.43-64-144s38.52-144 64-144c25.48 0 64 57.43 64 144s-38.52 144-64 144z\"]\n};\nvar faToiletPaperAlt = {\n prefix: 'far',\n iconName: 'toilet-paper-alt',\n icon: [576, 512, [], \"f71f\", \"M464 144c-13.25 0-24 21.49-24 48s10.75 48 24 48c13.26 0 24-21.49 24-48s-10.74-48-24-48zm0-144H144C82.14 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h328.92c13.77 0 26-8.81 30.36-21.88 11.16-33.48 21.59-63.54 24.11-106.12H464c61.86 0 112-85.96 112-192S525.86 0 464 0zM352 192v172.07c0 41.07-8.02 68.04-18.6 99.93H60.6C73.16 426.48 80 401.78 80 364.07V192c0-86.57 38.52-144 64-144h246.09C366.78 83.19 352 134.58 352 192zm112 144c-25.48 0-64-57.43-64-144s38.52-144 64-144c25.48 0 64 57.43 64 144s-38.52 144-64 144z\"]\n};\nvar faToiletPaperSlash = {\n prefix: 'far',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M496,144c-13.25,0-24,21.48-24,48s10.75,48,24,48,24-21.49,24-48S509.26,144,496,144ZM176,48H422.09C398.78,83.19,384,134.58,384,192v22.65L440.73,259A257.37,257.37,0,0,1,432,192c0-86.56,38.51-144,64-144s64,57.44,64,144c0,61.15-19.25,107.25-39.52,129.35l38.16,29.83C588.42,316.68,608,258.26,608,192,608,86,557.86,0,496,0H176c-16.17,0-31.5,6-45.38,16.56L172.13,49C173.41,48.75,174.77,48,176,48ZM365.41,464H92.59C105.16,426.48,112,401.78,112,364.06V192c0-2.42.32-4.56.38-6.93l-45.53-35.6A324.36,324.36,0,0,0,64,192V364.06c0,41.12-9.8,62.78-31.17,126.87A16,16,0,0,0,48,512H376.94a32,32,0,0,0,30.36-21.87c6.73-20.22,13-39.49,17.6-60.73l-42.85-33.5C379.11,420.68,373,441.16,365.41,464ZM634,471,36,3.52A16,16,0,0,0,13.51,6l-10,12.49A16,16,0,0,0,6,41L604,508.48A16,16,0,0,0,626.48,506l10-12.49A16,16,0,0,0,634,471Z\"]\n};\nvar faTombstone = {\n prefix: 'far',\n iconName: 'tombstone',\n icon: [512, 512, [], \"f720\", \"M336 160h-56v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v128c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V208h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm160 304h-48V192C448 85.96 362.04 0 256 0S64 85.96 64 192v272H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-96 0H112V192c0-79.4 64.6-144 144-144s144 64.6 144 144v272z\"]\n};\nvar faTombstoneAlt = {\n prefix: 'far',\n iconName: 'tombstone-alt',\n icon: [512, 512, [], \"f721\", \"M496 464h-48V192C448 85.96 362.04 0 256 0S64 85.96 64 192v272H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-96 0H112V192c0-79.4 64.6-144 144-144s144 64.6 144 144v272z\"]\n};\nvar faToolbox = {\n prefix: 'far',\n iconName: 'toolbox',\n icon: [512, 512, [], \"f552\", \"M512 237.25c0-8.49-3.37-16.62-9.37-22.63l-45.26-45.26c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.26c-8.49 0-16.63 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63L.01 304 0 448c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V237.25zM176 80h160v80H176V80zM48 243.88L83.88 208h344.23L464 243.88l.01 60.12H376v-16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v16H184v-16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v16H48.01L48 243.88zM464 432H48v-80h88v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16h144v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16h88v80z\"]\n};\nvar faTools = {\n prefix: 'far',\n iconName: 'tools',\n icon: [512, 512, [], \"f7d9\", \"M224 96.1v48.8l29.7 29.7c-6.8-34.8 3.5-70.3 28.5-95.3 20.3-20.3 47.2-31.2 75-31.2h1.2L301 105.3l15.1 90.6 90.6 15.1 57.3-57.3c.3 28.3-10.6 55.5-31.2 76.1-9.3 9.3-20.2 16.4-31.8 21.6 1.8 1.6 3.9 2.9 5.6 4.6l30.7 30.7c10.5-6.3 20.5-13.9 29.4-22.9 38.1-38.1 53.7-94.3 40.7-146.6C504.4 105 495 95.4 483 92c-12.2-3.4-25.2.1-34 9l-58.7 58.6-32.4-5.4-5.4-32.4 58.6-58.6c8.9-8.9 12.3-21.9 8.9-34-3.3-12.1-13-21.5-25.2-24.5-53.2-13.2-107.9 2-146.6 40.6C238 55.5 229.7 67 222.9 79.2l1.1.8v16.1zM106 454c-12.8 12.8-35.3 12.8-48.1 0-6.4-6.4-10-15-10-24 0-9.1 3.5-17.6 10-24l134.4-134.4-33.9-33.9L24 372C8.5 387.5 0 408.1 0 430s8.5 42.5 24 58 36.1 24 58 24 42.5-8.5 58-24l100.9-100.9c-9.7-15.8-15.2-33.8-15.7-52.1L106 454zm395.1-58.3L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7z\"]\n};\nvar faTooth = {\n prefix: 'far',\n iconName: 'tooth',\n icon: [448, 512, [], \"f5c9\", \"M443.96 96.2c-11.03-45.29-47.13-82.07-91.97-93.7-27.48-7.16-57.49 1.03-89.16 24.31-11.45 8.42-25.2 13.02-38.81 13.3-6.28-.12-17.12.13-40.43-14.36-.1-.06-.21-.05-.3-.11C152.33 3.4 122.92-4.46 96.04 2.49c-44.85 11.64-80.96 48.43-92 93.73-9.59 39.52-1.95 78.74 21.51 110.45 20.51 27.71 32.04 61.82 36.29 107.35 3.61 38.69 9.26 89.62 20.93 140.32l7.8 33.99c3.22 13.94 15.42 23.67 29.67 23.67 13.97 0 26.12-9.5 29.54-23.16l34.48-138.43c4.56-18.35 20.9-31.16 39.74-31.16 18.84 0 35.2 12.81 39.76 31.16l34.46 138.48C301.65 502.5 313.8 512 327.77 512c14.25 0 26.45-9.74 29.67-23.69l7.8-33.97c11.67-50.71 17.33-101.63 20.93-140.32 4.25-45.54 15.78-79.65 36.28-107.35 23.47-31.71 31.11-70.93 21.51-110.47zm-60.09 81.9c-25.93 35.05-40.38 76.82-45.48 131.45-2.52 26.85-6.03 59.74-11.94 94.01l-16.12-64.75c-9.92-39.77-45.42-67.55-86.33-67.55-40.93 0-76.43 27.78-86.32 67.57l-16.14 64.75c-5.9-34.25-9.42-67.18-11.94-94.02-5.09-54.63-19.54-96.4-45.49-131.45-14.84-20.06-19.62-45.11-13.45-70.52 6.9-28.35 29.45-51.36 57.44-58.63 2.53-.66 5.14-.98 7.75-.98 15.92 0 17.9 3.35 135.48 76.4 3.94 2.45 8.31 3.61 12.64 3.61 8.01 0 15.86-4.02 20.4-11.34 6.98-11.25 3.53-26.05-7.73-33.05l-8.46-5.26c8.08-3.47 15.9-7.55 23.08-12.82 19.22-14.16 35.12-20.13 48.63-16.53 27.98 7.25 50.52 30.27 57.41 58.6 6.21 25.39 1.43 50.44-13.43 70.51z\"]\n};\nvar faToothbrush = {\n prefix: 'far',\n iconName: 'toothbrush',\n icon: [640, 512, [], \"f635\", \"M624 464H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM48 224c-8.84 0-16 7.16-16 16v192h48V240c0-8.84-7.16-16-16-16H48zm368 0c-8.84 0-16 7.16-16 16v192h48V240c0-8.84-7.16-16-16-16h-16zm-272 0c-8.84 0-16 7.16-16 16v192h48V240c0-8.84-7.16-16-16-16h-16zm176 0c-8.84 0-16 7.16-16 16v192h48V240c0-8.84-7.16-16-16-16h-16zm-88 0c-8.84 0-16 7.16-16 16v192h48V240c0-8.84-7.16-16-16-16h-16zM64 192h352c35.35 0 64-28.65 64-64C480 57.31 422.69 0 352 0c23.62 23.62 6.89 64-26.51 64H64C28.65 64 0 92.65 0 128s28.65 64 64 64zm0-80h261.49c32.45 0 61.66-18.11 76.18-46.68C420.13 79.99 432 102.64 432 128c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16s7.18-16 16-16z\"]\n};\nvar faTorah = {\n prefix: 'far',\n iconName: 'torah',\n icon: [640, 512, [], \"f6a0\", \"M224.36 256l-29.21 48.86a21.11 21.11 0 0 0 18.1 32h59.54L302 385.71a20.78 20.78 0 0 0 18 10.23 21.13 21.13 0 0 0 18.16-10.37l29.13-48.7h59.45a21.25 21.25 0 0 0 18.48-10.72A20.69 20.69 0 0 0 445 305l-29.35-49 29.24-48.86a21.12 21.12 0 0 0-18.1-32h-59.54L338 126.29a20.76 20.76 0 0 0-17.95-10.23 21.13 21.13 0 0 0-18.22 10.37l-29.13 48.7h-59.45a21.23 21.23 0 0 0-18.48 10.72A20.7 20.7 0 0 0 195 207zm-3.62 55.5l18.39-30.82 18.46 30.82zm99.31 55l-17.74-29.64h35.46zm99.26-55h-36.86l18.41-30.8zm-.05-111l-18.4 30.82-18.46-30.82zm-99.26-55l17.68 29.62h-35.46zm-32.93 54.95h65.79L386.09 256l-33.17 55.5h-65.79L253.9 256zm-29.52 0l-18.37 30.8-18.44-30.8zM560 0c-36.17 0-65.67 20-75.88 48H155.88C145.67 20 116.17 0 80 0 35.14 0 0 30.46 0 69.33v373.34C0 481.54 35.14 512 80 512c36.17 0 65.67-19.95 75.88-48h328.24c10.21 28.05 39.71 48 75.88 48 44.86 0 80-30.46 80-69.33V69.33C640 30.46 604.86 0 560 0zM112 442.67C112 454.45 97.67 464 80 464s-32-9.55-32-21.33V69.33C48 57.55 62.33 48 80 48s32 9.55 32 21.33zM480 416H160V96h320zm112 26.67c0 11.78-14.33 21.33-32 21.33s-32-9.55-32-21.33V69.33C528 57.55 542.33 48 560 48s32 9.55 32 21.33z\"]\n};\nvar faToriiGate = {\n prefix: 'far',\n iconName: 'torii-gate',\n icon: [512, 512, [], \"f6a1\", \"M480 176c17.7 0 32-14.3 32-32V0c-42.1 21-88.5 32-135.5 32H135.6C88.5 32 42.1 21 0 0v144c0 17.7 14.3 32 32 32h32v64H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h48v208c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V288h288v208c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V288h48c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16h-48v-64zm-248 64H112v-64h120zm168 0H280v-64h120zM48 128V68.9C76.6 76.2 106.1 80 135.5 80h240.9c29.5 0 59-3.8 87.5-11.1V128z\"]\n};\nvar faTornado = {\n prefix: 'far',\n iconName: 'tornado',\n icon: [512, 512, [], \"f76f\", \"M429.1 25.2c7.4-10.6 0-25.2-12.9-25.2h-400C7.1 0-.3 7.6 0 16.5c13.3 352.7 452 219.8 331.7 472.6-5 10.6 2.6 22.9 14.3 22.9h27.4c7.9 0 15.8-3 21.7-8.3 320.6-286.7-138.9-229.8 34-478.5zM360.4 48c-13.8 29.8-19.3 56.3-19.3 80H76.4c-12.3-22-21.2-48.1-25.6-80h309.6zM114.6 176h234.7c11.8 33.3 34.3 59.3 55.1 80H257.1c-4.3-1.9-8.5-3.8-12.8-5.7-47.6-20.9-93.9-41.4-129.7-74.3zm284.6 257.6c3.2-24.3.9-46.6-6.8-67.2-9.8-26.3-26.9-46-48.1-62.5h107.3c8 10.2 12.5 19.4 12.3 29.1-.2 14.3-9.7 44.9-64.7 100.6z\"]\n};\nvar faTractor = {\n prefix: 'far',\n iconName: 'tractor',\n icon: [640, 512, [], \"f722\", \"M608 160h-80v-48c0-10.59 3.52-20.82 9.86-29.13 3.32-4.35 2.66-10.54-.99-14.62l-16.22-18.12c-5-5.58-13.74-5.19-18.53.58C487.93 67.83 480 89.51 480 112v48H364.4L306.22 24.23C299.88 9.52 285.44 0 269.44 0H136c-22.06 0-40 17.94-40 40v144.53c-11.97.87-23.15 5.72-31.72 14.29l-25.45 25.45c-9.44 9.45-14.64 22-14.64 35.36 0 4.94.71 9.77 2.08 14.37C10.63 282.47 0 299.02 0 318v36c0 18.98 10.63 35.53 26.26 44-1.37 4.6-2.08 9.43-2.08 14.37 0 13.36 5.2 25.91 14.65 35.35l25.46 25.46c9.44 9.44 22 14.64 35.35 14.65 4.94 0 9.77-.71 14.37-2.09 8.46 15.63 25.01 26.26 44 26.26h36.01c18.98 0 35.52-10.64 43.99-26.26a50.3 50.3 0 0 0 14.37 2.09c13.36 0 25.92-5.2 35.36-14.65l25.45-25.45c9.44-9.45 14.64-22 14.64-35.36 0-4.94-.71-9.77-2.08-14.37 6.27-3.4 11.42-8.36 15.72-14h80.42c-3.57 10.05-5.88 20.72-5.88 32 0 53.02 42.98 96 96 96s96-42.98 96-96c0-26.51-10.74-50.51-28.12-67.88l50.74-50.74c6-6 9.37-14.14 9.37-22.63V192c0-17.67-14.33-32-32-32zM144 48h120.19l47.98 112H157.99c-4.86 0-9.55.74-13.99 2.04V48zm160 306c0 1.1-.9 2-2 2h-17.77c-6.73 22.57-6.25 21.41-17.55 42.39l12.56 12.56c.67.67.66 2.16 0 2.82l-25.46 25.46h-2.83l-12.55-12.56c-21.02 11.32-19.88 10.84-42.4 17.55V462a2 2 0 0 1-2 2h-36c-1.1 0-2-.9-2-2v-17.77c-22.49-6.71-21.38-6.23-42.4-17.55l-12.56 12.56h-2.83l-25.46-25.46c-.67-.67-.67-2.16 0-2.83l12.55-12.56C74 377.41 74.47 378.53 67.76 356H50c-1.1 0-2-.9-2-2v-36c0-1.1.9-2 2-2h17.77c6.73-22.57 6.25-21.41 17.55-42.39l-12.56-12.56c-.67-.67-.66-2.16 0-2.82l25.46-25.46h2.83l12.55 12.56c21.02-11.32 19.88-10.84 42.4-17.55V210a2 2 0 0 1 2-2h36c1.1 0 2 .9 2 2v17.77c22.49 6.7 21.38 6.22 42.4 17.55l12.56-12.56h2.83l25.46 25.46c.67.67.67 2.16 0 2.83l-12.55 12.56c11.3 20.98 10.83 19.86 17.54 42.39H302c1.1 0 2 .9 2 2v36zm208 110c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm80-195.88l-55.45 55.45c-7.88-2.09-16.01-3.57-24.55-3.57-19.59 0-37.76 5.93-52.95 16H352v-18c0-18.98-10.63-35.53-26.26-44 1.37-4.6 2.08-9.43 2.08-14.37 0-13.36-5.2-25.91-14.65-35.35L296.9 208H592v60.12zm-380.22 14.81C201.57 276.03 189.25 272 176 272s-25.57 4.03-35.78 10.93a64.352 64.352 0 0 0-17.29 17.29C116.03 310.43 112 322.74 112 336c0 35.35 28.65 64 64 64s64-28.65 64-64c0-13.26-4.03-25.57-10.93-35.78a64.352 64.352 0 0 0-17.29-17.29zM176 352c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faTrademark = {\n prefix: 'far',\n iconName: 'trademark',\n icon: [640, 512, [], \"f25c\", \"M640 403l-23.8-296c-.5-6.2-5.7-11-12-11h-43c-4.9 0-9.3 3-11.2 7.6l-59.6 150.6c-7.2 18.9-15.8 46.9-15.8 46.9h-.9s-9-27.9-16.2-46.9l-59.6-150.6c-1.8-4.6-6.2-7.6-11.2-7.6h-43c-6.2 0-11.5 4.8-12 11l-24.2 296c-.6 7 4.9 13 12 13h34c6.3 0 11.5-4.8 12-11.1l12.7-167.8c1.4-21.2.5-50 .5-50h.9s9.9 31.5 17.6 50l48.3 116.5c1.9 4.5 6.2 7.4 11.1 7.4h34.9c4.8 0 9.2-2.9 11.1-7.4L551.3 237c7.7-18.5 17.1-49.6 17.1-49.6h.9s-.9 28.4.5 49.6l12.7 167.8c.5 6.3 5.7 11.1 12 11.1H628c7 .1 12.5-5.9 12-12.9zM256.2 96H12c-6.6 0-12 5.4-12 12v26c0 6.6 5.4 12 12 12h93v258c0 6.6 5.4 12 12 12h34.1c6.6 0 12-5.4 12-12V146h93c6.6 0 12-5.4 12-12v-26c.1-6.6-5.3-12-11.9-12z\"]\n};\nvar faTrafficCone = {\n prefix: 'far',\n iconName: 'traffic-cone',\n icon: [512, 512, [], \"f636\", \"M496 464h-21.39L294.54 11.52A18.284 18.284 0 0 0 277.55 0h-43.11c-7.49 0-14.22 4.57-16.99 11.52L37.39 464H16c-8.84 0-16 7.16-16 16v24c0 4.42 3.58 8 8 8h496c4.42 0 8-3.58 8-8v-24c0-8.84-7.16-16-16-16zM365.64 320H146.36l44.57-112h130.15l44.56 112zM254.6 48h2.8l44.57 112h-91.94L254.6 48zM127.25 368h257.49l38.2 96H89.05l38.2-96z\"]\n};\nvar faTrafficLight = {\n prefix: 'far',\n iconName: 'traffic-light',\n icon: [384, 512, [], \"f637\", \"M384 192h-48v-45.31c28.57-16.63 48-47.24 48-82.69h-48V32c0-17.67-14.33-32-32-32H80C62.33 0 48 14.33 48 32v32H0c0 35.44 19.43 66.05 48 82.69V192H0c0 35.44 19.43 66.05 48 82.69V320H0c0 37.73 21.97 70.05 53.63 85.74C70.3 466.84 125.62 512 192 512s121.7-45.16 138.37-106.26C362.03 390.05 384 357.73 384 320h-48v-45.31c28.57-16.64 48-47.25 48-82.69zm-96 176c0 52.93-43.06 96-96 96-52.93 0-96-43.07-96-96V48h192v320zm-96-192c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm0 128c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm0 128c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faTrafficLightGo = {\n prefix: 'far',\n iconName: 'traffic-light-go',\n icon: [384, 512, [], \"f638\", \"M384 192h-48v-45.31c28.57-16.63 48-47.24 48-82.69h-48V32c0-17.67-14.33-32-32-32H80C62.33 0 48 14.33 48 32v32H0c0 35.44 19.43 66.05 48 82.69V192H0c0 35.44 19.43 66.05 48 82.69V320H0c0 37.73 21.97 70.05 53.63 85.74C70.3 466.84 125.62 512 192 512s121.7-45.16 138.37-106.26C362.03 390.05 384 357.73 384 320h-48v-45.31c28.57-16.64 48-47.25 48-82.69zm-96 176c0 52.93-43.06 96-96 96s-96-43.07-96-96V48h192v320zm-96-192c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm0-72c13.23 0 24 10.77 24 24s-10.77 24-24 24-24-10.77-24-24 10.77-24 24-24zm0 200c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm0-72c13.23 0 24 10.77 24 24s-10.77 24-24 24-24-10.77-24-24 10.77-24 24-24zm0 200c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faTrafficLightSlow = {\n prefix: 'far',\n iconName: 'traffic-light-slow',\n icon: [384, 512, [], \"f639\", \"M384 192h-48v-45.31c28.57-16.63 48-47.24 48-82.69h-48V32c0-17.67-14.33-32-32-32H80C62.33 0 48 14.33 48 32v32H0c0 35.44 19.43 66.05 48 82.69V192H0c0 35.44 19.43 66.05 48 82.69V320H0c0 37.73 21.97 70.05 53.63 85.74C70.3 466.84 125.62 512 192 512s121.7-45.16 138.37-106.26C362.03 390.05 384 357.73 384 320h-48v-45.31c28.57-16.64 48-47.25 48-82.69zm-96 176c0 52.93-43.06 96-96 96-52.93 0-96-43.07-96-96V48h192v320zm-96-192c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm0-72c13.23 0 24 10.77 24 24s-10.77 24-24 24-24-10.77-24-24 10.77-24 24-24zm0 328c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm0-72c13.23 0 24 10.77 24 24s-10.77 24-24 24-24-10.77-24-24 10.77-24 24-24zm0-56c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faTrafficLightStop = {\n prefix: 'far',\n iconName: 'traffic-light-stop',\n icon: [384, 512, [], \"f63a\", \"M384 192h-48v-45.31c28.57-16.63 48-47.24 48-82.69h-48V32c0-17.67-14.33-32-32-32H80C62.33 0 48 14.33 48 32v32H0c0 35.44 19.43 66.05 48 82.69V192H0c0 35.44 19.43 66.05 48 82.69V320H0c0 37.73 21.97 70.05 53.63 85.74C70.3 466.84 125.62 512 192 512s121.7-45.16 138.37-106.26C362.03 390.05 384 357.73 384 320h-48v-45.31c28.57-16.64 48-47.25 48-82.69zm-96 176c0 52.93-43.06 96-96 96-52.93 0-96-43.07-96-96V48h192v320zm-96-192c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm0 128c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm0-72c13.23 0 24 10.77 24 24s-10.77 24-24 24-24-10.77-24-24 10.77-24 24-24zm0 200c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm0-72c13.23 0 24 10.77 24 24s-10.77 24-24 24-24-10.77-24-24 10.77-24 24-24z\"]\n};\nvar faTrailer = {\n prefix: 'far',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M176,320a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Zm448-96H544V96a32,32,0,0,0-32-32H32A32,32,0,0,0,0,96V368a16,16,0,0,0,16,16H52.58c7.59,0,13.69-5.44,15.64-12.78C80.91,323.36,124.14,288,176,288s95.09,35.36,107.78,83.22c2,7.34,8.05,12.78,15.64,12.78H624a16,16,0,0,0,16-16V352A16,16,0,0,0,624,336Zm-128,0H440V160a16,16,0,0,0-16-16H408a16,16,0,0,0-16,16V336H344V160a16,16,0,0,0-16-16H312a16,16,0,0,0-16,16V295.79a158.8,158.8,0,0,0-48-38.09V160a16,16,0,0,0-16-16H216a16,16,0,0,0-16,16v81.81a151.35,151.35,0,0,0-48,.21V160a16,16,0,0,0-16-16H120a16,16,0,0,0-16,16v97.4a160.31,160.31,0,0,0-56,47.87V112H496Z\"]\n};\nvar faTrain = {\n prefix: 'far',\n iconName: 'train',\n icon: [448, 512, [], \"f238\", \"M264 336c0 22.091-17.909 40-40 40s-40-17.909-40-40 17.909-40 40-40 40 17.909 40 40zm184-226.286v228.572c0 49.194-43.705 90.629-99.059 104.713l58.758 58.758c3.78 3.78 1.103 10.243-4.243 10.243h-48.427a11.996 11.996 0 0 1-8.485-3.515L286.059 448H161.941l-60.485 60.485A12.002 12.002 0 0 1 92.971 512H44.544c-5.345 0-8.022-6.463-4.243-10.243l58.758-58.758C43.886 428.961 0 387.656 0 338.286V109.714C0 45.928 71.001 0 138.286 0h171.428C377.889 0 448 45.922 448 109.714zM48 224h352v-80H48v80zm2.774-128h346.534c-10.2-26.136-47.971-48-87.595-48H138.286c-38.862 0-77.011 21.67-87.512 48zM400 338.286V272H48v66.286C48 374.495 99.974 400 138.286 400h171.428C347.479 400 400 374.816 400 338.286z\"]\n};\nvar faTram = {\n prefix: 'far',\n iconName: 'tram',\n icon: [512, 512, [], \"f7da\", \"M511.1 49.6c-3.5-12.8-16.7-20.2-29.5-16.8l-464 128C4.8 164.3-2.7 177.6.8 190.3 3.8 201 13.5 208 24 208c2.1 0 4.3-.3 6.4-.9L232 151.5V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H280v-85.7l214.4-59.1c12.8-3.6 20.3-16.8 16.7-29.6zM432 272v192H80V272h352zM144 384h32c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm96 0h32c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm96 0h32c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm96-32c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faTransgender = {\n prefix: 'far',\n iconName: 'transgender',\n icon: [384, 512, [], \"f224\", \"M372 0h-63c-10.7 0-16 12.9-8.5 20.5L315 35l-87.6 87.6C203.9 105.9 175.1 96 144 96 64.5 96 0 160.5 0 240c0 71.4 51.9 130.6 120 142v34H76c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h44v36c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12v-36h44c6.6 0 12-5.4 12-12v-24c0-6.6-5.4-12-12-12h-44v-34c68.1-11.4 120-70.6 120-142 0-31.1-9.9-59.9-26.6-83.4L349 69l14.5 14.5c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 336c-52.9 0-96-43.1-96-96s43.1-96 96-96 96 43.1 96 96-43.1 96-96 96z\"]\n};\nvar faTransgenderAlt = {\n prefix: 'far',\n iconName: 'transgender-alt',\n icon: [480, 512, [], \"f225\", \"M468 0h-63c-10.7 0-16 12.9-8.5 20.5L411 35l-87.6 87.6C299.9 105.9 271.1 96 240 96s-59.9 9.9-83.4 26.6l-26-26L150 77.1c4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0L96.6 62.6 69 35l14.5-14.5C91.1 12.9 85.7 0 75 0H12C5.4 0 0 5.4 0 12v63c0 10.7 12.9 16 20.5 8.5L35 69l27.6 27.6L43.2 116c-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0l19.5-19.5 26 26C105.9 180.1 96 208.9 96 240c0 71.4 51.9 130.6 120 142v34h-44c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h44v36c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12v-36h44c6.6 0 12-5.4 12-12v-24c0-6.6-5.4-12-12-12h-44v-34c68.1-11.4 120-70.6 120-142 0-31.1-9.9-59.9-26.6-83.4L445 69l14.5 14.5c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 336c-52.9 0-96-43.1-96-96s43.1-96 96-96 96 43.1 96 96-43.1 96-96 96z\"]\n};\nvar faTransporter = {\n prefix: 'far',\n iconName: 'transporter',\n icon: [512, 512, [], \"e042\", \"M255.958,96l.01953-.00195L255.99707,96a48,48,0,1,0,0-96l-.01953.002L255.958,0a48,48,0,1,0,0,96ZM63.99194,96,51.57169,66.21484a3.99313,3.99313,0,0,0-7.15449,0L31.997,96,2.211,108.41992a3.99921,3.99921,0,0,0,0,7.1543l29.786,12.41992L44.4172,157.7793a3.9947,3.9947,0,0,0,7.15449,0l12.42025-29.78516,29.786-12.41992a4.00079,4.00079,0,0,0,0-7.1543ZM384.00049,464H319.99487V211.20312l53.12642,67.625a24.00329,24.00329,0,0,0,37.751-29.65624L332.464,149.35938A55.81142,55.81142,0,0,0,288.43153,128H223.5548a55.672,55.672,0,0,0-44.03243,21.40625L101.114,249.17188a24.00329,24.00329,0,0,0,37.751,29.65624l53.12641-67.59765V464h-63.9978A31.99951,31.99951,0,0,0,95.9928,496v16H416.00134V496A31.99951,31.99951,0,0,0,384.00049,464Zm-120.00321,0H247.99686V320h16.00042ZM509.789,44.43164,480.005,32.01172,467.58475,2.22656a3.99471,3.99471,0,0,0-7.15644,0L448.00806,32.01172l-29.784,12.41992a3.99921,3.99921,0,0,0,0,7.1543l29.784,12.41992L460.42831,93.791a3.99628,3.99628,0,0,0,7.15644,0L480.005,64.00586l29.784-12.41992a3.99921,3.99921,0,0,0,0-7.1543Z\"]\n};\nvar faTransporter1 = {\n prefix: 'far',\n iconName: 'transporter-1',\n icon: [512, 512, [], \"e043\", \"M191.99145,416h56.00541V384H191.99145Zm72.00583,0h55.99759V384H263.99728Zm-144.039-128a23.98036,23.98036,0,0,0,18.90676-9.17188l53.12641-67.59765V352h56.00541V320h16.00042v32h55.99759V211.20312l53.12642,67.625a24.00329,24.00329,0,0,0,37.751-29.65624L332.464,149.35938A55.81142,55.81142,0,0,0,288.43153,128H223.5548a55.672,55.672,0,0,0-44.03243,21.40625L101.114,249.17188A23.99035,23.99035,0,0,0,119.95828,288ZM255.958,96l.01953-.00195L255.99707,96a48,48,0,1,0,0-96l-.01953.002L255.958,0a48,48,0,1,0,0,96ZM384.00049,464H319.99487V448H263.99728v16H247.99686V448H191.99145v16h-63.9978A31.99951,31.99951,0,0,0,95.9928,496v16H416.00134V496A31.99951,31.99951,0,0,0,384.00049,464ZM509.789,364.41992,480.005,352l-12.42026-29.78516a3.99471,3.99471,0,0,0-7.15644,0L448.00806,352l-29.784,12.41992a3.99921,3.99921,0,0,0,0,7.1543l29.784,12.41992,12.42025,29.78516a3.99628,3.99628,0,0,0,7.15644,0L480.005,383.99414l29.784-12.41992a3.99921,3.99921,0,0,0,0-7.1543ZM63.99194,128.002,51.57169,98.21875a3.99313,3.99313,0,0,0-7.15449,0L31.997,128.002,2.211,140.42188a4.00078,4.00078,0,0,0,0,7.15624l29.786,12.41993,12.42025,29.7832a3.99313,3.99313,0,0,0,7.15449,0l12.42025-29.7832,29.786-12.41993a4.00236,4.00236,0,0,0,0-7.15624Z\"]\n};\nvar faTransporter2 = {\n prefix: 'far',\n iconName: 'transporter-2',\n icon: [512, 512, [], \"e044\", \"M264.0061,416h55.99781V384H264.0061Zm55.99781-96H264.0061v32h55.99781Zm0-64H192v32H320.00391Zm53.12662,22.82812a23.99776,23.99776,0,0,0,33.68853,4.04688A23.74886,23.74886,0,0,0,414.32124,256H355.19639ZM255.9668,96l.01953-.00195L256.00586,96a48,48,0,1,0,0-96l-.01953.002L255.9668,0a48,48,0,1,0,0,96ZM192,211.23047V224H320.00391V211.20312L330.05695,224h61.05069L332.473,149.35938A55.81171,55.81171,0,0,0,288.44044,128h-64.877a55.67227,55.67227,0,0,0-44.03259,21.40625L120.906,224h61.05851ZM248.00562,320H192v32h56.00562ZM119.96655,288a23.98048,23.98048,0,0,0,18.90683-9.17188L156.81533,256H97.68267a23.69223,23.69223,0,0,0,22.28388,32ZM192,416h56.00562V384H192Zm192.00977,48H320.00391V448H264.0061v16H248.00562V448H192v16H128.002a31.99957,31.99957,0,0,0-32.001,32v16H416.01074V496A31.99957,31.99957,0,0,0,384.00977,464ZM509.791,140.416l-29.78607-12.41993-12.4203-29.7832a3.99315,3.99315,0,0,0-7.15451,0l-12.4203,29.7832L418.2237,140.416a4.00079,4.00079,0,0,0,0,7.15625l29.78607,12.41992,12.4203,29.7832a3.99315,3.99315,0,0,0,7.15451,0l12.4203-29.7832L509.791,147.57227a4.00237,4.00237,0,0,0,0-7.15625ZM63.99023,32.002,51.56993,2.21875a3.99315,3.99315,0,0,0-7.15451,0L31.99512,32.002,2.20905,44.42188a4.00078,4.00078,0,0,0,0,7.15429L31.99512,63.99609l12.4203,29.78516a3.99315,3.99315,0,0,0,7.15451,0l12.4203-29.78516L93.7763,51.57617a3.99921,3.99921,0,0,0,0-7.15429Z\"]\n};\nvar faTransporter3 = {\n prefix: 'far',\n iconName: 'transporter-3',\n icon: [512, 512, [], \"e045\", \"M509.791,44.43164,480.00488,32.01172,467.58458,2.22656a3.99315,3.99315,0,0,0-7.15451,0l-12.4203,29.78516L418.2237,44.43164a3.99921,3.99921,0,0,0,0,7.1543l29.78607,12.41992L460.43007,93.791a3.99472,3.99472,0,0,0,7.15451,0l12.4203-29.78516L509.791,51.58594a4.00079,4.00079,0,0,0,0-7.1543ZM63.99023,352.00391,51.56993,322.2207a3.99315,3.99315,0,0,0-7.15451,0l-12.4203,29.78321L2.20905,364.42383a4.00237,4.00237,0,0,0,0,7.15625L31.99512,384l12.4203,29.7832a3.99315,3.99315,0,0,0,7.15451,0L63.99023,384,93.7763,371.58008a4.00079,4.00079,0,0,0,0-7.15625Zm309.13248-73.17579a23.99776,23.99776,0,0,0,33.68853,4.04688A23.74885,23.74885,0,0,0,414.31343,256H355.18857ZM319.99609,320h-55.9978v32h55.9978ZM191.99219,211.23047V224h128.0039V211.20312L330.04913,224h61.0507l-25.13749-32H146.04743l-25.14921,32h61.0585ZM255.99805,0l-.01954.002L255.959,0a47.95186,47.95186,0,0,0-45.0502,32h90.13947A47.95186,47.95186,0,0,0,255.99805,0ZM255.959,96l.01953-.00195L255.99805,96a47.87741,47.87741,0,0,0,45.06-32H210.899A47.87741,47.87741,0,0,0,255.959,96Zm76.50624,53.35938A55.81167,55.81167,0,0,0,288.43263,128h-64.877a55.67224,55.67224,0,0,0-44.03259,21.40625L171.19663,160H340.82485ZM263.99829,416h55.9978V384h-55.9978ZM384.002,464H319.99609V448h-55.9978v16H247.9978V448H191.99219v16h-63.998a31.99957,31.99957,0,0,0-32.001,32v16H416.00293V496A31.99957,31.99957,0,0,0,384.002,464ZM191.99219,416H247.9978V384H191.99219ZM119.95874,288a23.98048,23.98048,0,0,0,18.90683-9.17188L156.80752,256H97.67486a23.69223,23.69223,0,0,0,22.28388,32ZM247.9978,320H191.99219v32H247.9978Zm71.99829-64H191.99219v32h128.0039Z\"]\n};\nvar faTransporterEmpty = {\n prefix: 'far',\n iconName: 'transporter-empty',\n icon: [512, 512, [], \"e046\", \"M509.791,268.419l-29.78607-12.42-12.4203-29.78527a3.99315,3.99315,0,0,0-7.15451,0L448.00977,255.999l-29.78607,12.42a3.99924,3.99924,0,0,0,0,7.15433l29.78607,12.42,12.4203,29.78527a3.99471,3.99471,0,0,0,7.15451,0l12.4203-29.78527,29.78607-12.42a4.00082,4.00082,0,0,0,0-7.15433ZM63.99023,32.00208,51.56993,2.21876a3.99314,3.99314,0,0,0-7.15451,0L31.99512,32.00208,2.20905,44.422a4.0024,4.0024,0,0,0,0,7.15628l29.78607,12.42,12.4203,29.78332a3.99314,3.99314,0,0,0,7.15451,0l12.4203-29.78332,29.78607-12.42a4.00082,4.00082,0,0,0,0-7.15628ZM384.00977,463.99982H128.002a31.99963,31.99963,0,0,0-32.001,32.00012V512H416.01074V495.99994A31.99963,31.99963,0,0,0,384.00977,463.99982Z\"]\n};\nvar faTrash = {\n prefix: 'far',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M432 80h-82.4l-34-56.7A48 48 0 0 0 274.4 0H173.6a48 48 0 0 0-41.2 23.3L98.4 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16l21.2 339a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM173.6 48h100.8l19.2 32H154.4zm173.3 416H101.11l-21-336h287.8z\"]\n};\nvar faTrashAlt = {\n prefix: 'far',\n iconName: 'trash-alt',\n icon: [448, 512, [], \"f2ed\", \"M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z\"]\n};\nvar faTrashRestore = {\n prefix: 'far',\n iconName: 'trash-restore',\n icon: [448, 512, [], \"f829\", \"M432 80h-82.4l-34-56.7A48 48 0 0 0 274.4 0H173.6a48 48 0 0 0-41.2 23.3L98.4 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16l21.2 339a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM173.6 48h100.8l19.2 32H154.4zm173.3 416H101.11l-21-336h287.8zM235.61 181.05a15.88 15.88 0 0 0-23.22 0l-80.26 81.75c-8.82 9.3-2.58 25.2 9.9 25.2h50v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96h50c12.48 0 18.72-15.9 9.9-25.2z\"]\n};\nvar faTrashRestoreAlt = {\n prefix: 'far',\n iconName: 'trash-restore-alt',\n icon: [448, 512, [], \"f82a\", \"M432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zM142 288h50v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-96h50c12.48 0 18.72-15.9 9.9-25.2l-80.26-81.75a15.88 15.88 0 0 0-23.22 0l-80.29 81.75c-8.82 9.3-2.58 25.2 9.87 25.2z\"]\n};\nvar faTrashUndo = {\n prefix: 'far',\n iconName: 'trash-undo',\n icon: [448, 512, [], \"f895\", \"M203.76 348.71A12 12 0 0 0 224 340v-35.16c48.68 5.1 65.21 26 48.45 84.78-2.15 7.53 6.15 13.37 12 8.72C303.11 383.45 320 355 320 326.19c0-62.88-39.64-82-96-86.17V204a12 12 0 0 0-20.24-8.73l-72 68a12 12 0 0 0 0 17.44zM432 80h-82.41l-34-56.7C307.88 10.44 289.44 0 274.44 0H173.56c-15 0-33.44 10.44-41.15 23.3l-34 56.7H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16l21.19 339c1.56 24.84 23 45 47.9 45h245.82c24.87 0 46.34-20.16 47.9-45L416 128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM173.59 48h100.82l19.18 32H154.41zm173.32 416H101.12l-21-336h287.79z\"]\n};\nvar faTrashUndoAlt = {\n prefix: 'far',\n iconName: 'trash-undo-alt',\n icon: [448, 512, [], \"f896\", \"M432 80h-82.41l-34-56.7C307.88 10.44 289.44 0 274.44 0H173.59c-15 0-33.43 10.44-41.15 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6.66 6.66 0 0 1 177 48h94a6.67 6.67 0 0 1 5.16 2.91L293.62 80H154.38zM368 464H80V128h288zM203.76 348.71A12 12 0 0 0 224 340v-35.16c48.68 5.1 65.21 26 48.45 84.78-2.15 7.53 6.15 13.37 12 8.72C303.11 383.45 320 355 320 326.19c0-62.88-39.64-82-96-86.17V204a12 12 0 0 0-20.24-8.73l-72 68a12 12 0 0 0 0 17.44z\"]\n};\nvar faTreasureChest = {\n prefix: 'far',\n iconName: 'treasure-chest',\n icon: [576, 512, [], \"f723\", \"M448 32H128C57.31 32 0 89.31 0 160v288c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-70.69-57.31-128-128-128zM96 432H48V288h48v144zm0-192H48v-80c0-32.72 19.8-60.84 48-73.22V240zm336 192H144V288h80v48c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-48h80v144zM272 288v-32c0-8.84 7.16-16 16-16s16 7.16 16 16v32c0 8.84-7.16 16-16 16s-16-7.16-16-16zm160-48h-80v-32c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v32h-80V80h288v160zm96 192h-48V288h48v144zm0-192h-48V86.78c28.2 12.38 48 40.5 48 73.22v80z\"]\n};\nvar faTree = {\n prefix: 'far',\n iconName: 'tree',\n icon: [448, 512, [], \"f1bb\", \"M442.2 376.2l-55.5-64.4h5.3c9.3 0 17.8-5.4 21.8-13.9 3.9-8.5 2.6-18.5-3.5-25.6l-54.6-64.5H368c9.5 0 18.1-5.6 21.9-14.2 3.8-8.7 2.2-18.8-4.1-25.8L241.9 7.6c-9.1-10.1-26.6-10.1-35.7 0l-144 160.1c-6.3 7.1-7.9 17.2-4.1 25.8 3.9 8.7 12.5 14.2 21.9 14.2h12.2l-54.6 64.5c-6 7.1-7.4 17.1-3.5 25.6s12.4 13.9 21.8 13.9h5.3L5.8 376.2c-6.1 7.1-7.5 17.2-3.6 25.7s12.4 14 21.8 14h168v24.5l-30.3 48.4c-5.3 10.6 2.4 23.2 14.3 23.2h96c11.9 0 19.6-12.5 14.3-23.2L256 440.4v-24.5h168c9.4 0 17.9-5.5 21.8-14s2.5-18.6-3.6-25.7zm-365.8-8.3L166 263.8h-58.3l88-104.1h-61.9L224 59.5l90.1 100.2h-61.9l88 104.1H282l89.7 104.1z\"]\n};\nvar faTreeAlt = {\n prefix: 'far',\n iconName: 'tree-alt',\n icon: [512, 512, [], \"f400\", \"M463.16 198.09a94.96 94.96 0 0 0 2.44-21.36c0-58.56-51.97-105.42-111.06-99.91C343.81 32.81 303.69 0 256 0s-87.81 32.81-98.53 76.83c-59.09-5.52-111.06 41.34-111.06 99.91 0 7.19.81 14.33 2.44 21.36C18.88 215.89 0 247.86 0 283.64 0 338.98 45.47 384 101.34 384H224v56.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L288 440.45V384h122.66C466.53 384 512 338.98 512 283.64c0-35.78-18.88-67.75-48.84-85.55zM410.66 336H101.34C71.94 336 48 312.52 48 283.64c0-22.95 15.22-42.95 37.84-49.75l27.59-8.28-13.12-25.64c-3.94-7.64-5.91-15.45-5.91-23.23 0-28.88 23.91-52.38 53.31-52.38 7.41 0 14.78 1.61 21.94 4.77l37.53 16.66-4.53-45.42C202.66 71.48 226.59 48 256 48s53.34 23.48 53.19 53.38l-4.38 44.41 37.53-16.66c35.59-15.72 75.25 11.45 75.25 47.61 0 7.78-1.97 15.59-5.91 23.23l-13.12 25.64 27.59 8.28c22.62 6.8 37.84 26.8 37.84 49.75.01 28.88-23.93 52.36-53.33 52.36z\"]\n};\nvar faTreeChristmas = {\n prefix: 'far',\n iconName: 'tree-christmas',\n icon: [512, 512, [], \"f7db\", \"M232 256c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 96c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm190.1 82.8l-66.5-87c10.6-4.8 19.4-13.3 24.3-24.4 7.7-17.4 4.4-37.6-8.4-51.7L338 146.8l12.4-6.2c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-43.8-21.9-21.9-43.8C279.2 6.8 268.1 0 256 0s-23.2 6.8-28.6 17.7l-21.9 43.8-43.8 21.9C150.8 88.8 144 99.9 144 112s6.8 23.2 17.7 28.6l12.4 6.2L60.5 271.7c-12.8 14.1-16.1 34.3-8.4 51.7 4.9 11.1 13.7 19.6 24.3 24.4l-66.5 87c-11.1 14.5-13 34.1-4.9 50.4 8.1 16.4 24.8 26.7 43 26.7h416c18.3 0 34.9-10.4 43-26.7 8.1-16.3 6.2-35.9-4.9-50.4zM236.5 99.6c3.1-1.5 5.6-4.1 7.2-7.2L256 67.8l12.4 24.7c1.5 3.1 4.1 5.6 7.2 7.2l24.7 12.4-24.7 12.4c-3.1 1.5-5.6 4.1-7.2 7.2L256 156.2l-12.4-24.7c-1.5-3.1-4.1-5.6-7.2-7.2L211.8 112l24.7-12.4zM48 464l122.4-160H96l116.3-127.9 15.1 30.2c5.4 10.8 16.5 17.7 28.6 17.7s23.2-6.8 28.6-17.7l15.1-30.2L416 304h-74.4L464 464H48z\"]\n};\nvar faTreeDecorated = {\n prefix: 'far',\n iconName: 'tree-decorated',\n icon: [512, 512, [], \"f7dc\", \"M500.3 432.6l-46.6-53.7c9.2-4.7 16.8-12.2 21.5-21.8 8-16.5 5.9-36.2-5.4-50.6L413.6 235c9.9-5 17.9-13.3 22.5-23.9 7.6-17.6 4-38-9.2-52l-136-144C281.8 5.4 269.2 0 256 0s-25.8 5.4-34.9 15l-136 144c-13.2 13.9-16.8 34.4-9.2 52 4.6 10.6 12.6 18.9 22.5 23.9l-56.2 71.5c-11.4 14.4-13.5 34.1-5.4 50.6 4.7 9.6 12.3 17.2 21.5 21.8l-46.6 53.7c-12.3 14.2-15.2 34.3-7.4 51.4C12.1 501 29.2 512 48 512h416c18.8 0 35.9-11 43.7-28.1 7.8-17.1 4.9-37.1-7.4-51.3zM48 464l110.9-128H80l113.1-144H120L256 48l136 144h-73.1L432 336h-78.9L464 464H48zm256-88c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM192 264c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm104-88c0-13.3-10.7-24-24-24s-24 10.7-24 24 10.7 24 24 24 24-10.7 24-24z\"]\n};\nvar faTreeLarge = {\n prefix: 'far',\n iconName: 'tree-large',\n icon: [512, 512, [], \"f7dd\", \"M500.3 432.6l-46.6-53.7c9.2-4.7 16.8-12.2 21.5-21.8 8-16.5 5.9-36.2-5.4-50.6L413.6 235c9.9-5 17.9-13.3 22.5-23.9 7.6-17.6 4-38-9.2-52l-136-144C281.8 5.4 269.2 0 256 0s-25.8 5.4-34.9 15l-136 144c-13.2 13.9-16.8 34.4-9.2 52 4.6 10.6 12.6 18.9 22.5 23.9l-56.2 71.5c-11.4 14.4-13.5 34.1-5.4 50.6 4.7 9.6 12.3 17.2 21.5 21.8l-46.6 53.7c-12.3 14.2-15.2 34.3-7.4 51.4C12.1 501 29.2 512 48 512h416c18.8 0 35.9-11 43.7-28.1 7.8-17.1 4.9-37.1-7.4-51.3zM48 464l110.9-128H80l113.1-144H120L256 48l136 144h-73.1L432 336h-78.9L464 464H48z\"]\n};\nvar faTreePalm = {\n prefix: 'far',\n iconName: 'tree-palm',\n icon: [640, 512, [], \"f82b\", \"M448.76 64c-39.43 0-75.06 11.74-103 30.5C327.14 40.17 265.37 0 191.24 0c-80.61 0-147.37 47.24-159 108.86C30.39 118.79 38.75 128 50 128h46l32-48 33.46 66.92c-3.53 3.07-7.28 5.69-10.66 9.07C93.8 213 80 293.6 115.37 345.38c5.7 8.34 18.12 8.94 26.07 1l124.92-124.92c2.17 99.11-20.8 196.29-32.92 240-6.91 25.18 11.66 50.54 38.19 50.54h90.43a39.63 39.63 0 0 0 39.28-33.48c16.94-104.88-1.7-218-17.46-286.52H448l32-48 32 48h78c11.25 0 19.61-9.21 17.74-19.14C596.13 111.24 529.38 64 448.76 64zM355 464h-72.53c14.42-54.48 37.74-163.81 30.32-272h21.68c14.81 61.61 35.01 171.89 20.53 272z\"]\n};\nvar faTrees = {\n prefix: 'far',\n iconName: 'trees',\n icon: [640, 512, [], \"f724\", \"M634.19 376.23l-55.47-64.37H584c9.34 0 17.84-5.43 21.78-13.92 3.94-8.47 2.56-18.48-3.47-25.61l-54.56-64.55H560c9.47 0 18.06-5.58 21.94-14.24a24.088 24.088 0 0 0-4.09-25.85l-144-160.11c-9.13-10.1-26.56-10.1-35.69 0L320 94.48l-78.16-86.9c-9.13-10.1-26.56-10.1-35.69 0l-144 160.11a24.063 24.063 0 0 0-4.09 25.85c3.88 8.66 12.47 14.24 21.94 14.24h12.25l-54.56 64.55c-6.03 7.13-7.41 17.14-3.47 25.61A24.021 24.021 0 0 0 56 311.86h5.28L5.81 376.23c-6.13 7.11-7.53 17.15-3.63 25.69a23.998 23.998 0 0 0 21.81 14.01h168v24.46l-30.29 48.43c-5.32 10.65 2.42 23.17 14.31 23.17h95.96c11.89 0 19.63-12.53 14.31-23.17L256 440.39v-24.46h128v24.46l-30.29 48.43c-5.32 10.65 2.42 23.17 14.31 23.17h95.96c11.89 0 19.63-12.53 14.31-23.17L448 440.39v-24.46h168c9.38 0 17.91-5.47 21.81-14.01 3.91-8.54 2.51-18.57-3.62-25.69zM304 367.9H76.37l89.66-104.07h-58.28l88-104.07h-61.88L224 59.55l90.13 100.2h-61.88l88 104.07h-58.28l89.66 104.07H304zm131 0l-48.29-56.04H392c9.34 0 17.84-5.43 21.78-13.92 3.94-8.47 2.56-18.48-3.47-25.61l-54.56-64.55H368c9.47 0 18.06-5.58 21.94-14.24a24.088 24.088 0 0 0-4.09-25.85l-33.55-37.31L416 59.55l90.13 100.2h-61.88l88 104.07h-58.28l89.66 104.07H435z\"]\n};\nvar faTriangle = {\n prefix: 'far',\n iconName: 'triangle',\n icon: [576, 512, [], \"f2ec\", \"M329.6 24c-18.4-32-64.7-32-83.2 0L6.5 440c-18.4 31.9 4.6 72 41.6 72H528c36.9 0 60-40 41.6-72l-240-416zM48 464L288 48l240 416H48z\"]\n};\nvar faTriangleMusic = {\n prefix: 'far',\n iconName: 'triangle-music',\n icon: [512, 512, [], \"f8e2\", \"M256.06 263.89a56.77 56.77 0 1 0 52.55 37.34l198.66-198.65a16 16 0 0 0 0-22.62L496 68.66a16 16 0 0 0-22.62 0L274.69 267.31a55.41 55.41 0 0 0-18.63-3.42zM497.79 368.1l-80.46-130.34-34.87 34.87L457 393.32c9 14.55 9.42 31.33 1.07 46.22A48.13 48.13 0 0 1 415.83 464H96.15A48 48 0 0 1 54 439.6c-8.34-14.86-8-31.71 1-46.27l159.86-258.94A47.93 47.93 0 0 1 256 111.74c17.24 0 32.24 8.27 41.13 22.66L322 174.73l34.87-34.87L338 109.2a95.21 95.21 0 0 0-58-42.42V16a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v50.78a95.14 95.14 0 0 0-58 42.38l-159.86 259a92.38 92.38 0 0 0-2 94.94c16.72 30.08 49 48.92 84 48.92h319.69A96.14 96.14 0 0 0 500 462.84c16.73-29.84 16-65.35-2.21-94.74z\"]\n};\nvar faTrophy = {\n prefix: 'far',\n iconName: 'trophy',\n icon: [576, 512, [], \"f091\", \"M448 64V16c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v60.8C0 201.1 68.3 266 159.6 283.4c27.4 57.9 68.1 88.2 104.4 97.4V464h-64c-22.1 0-40 17.9-40 40 0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8 0-22.1-17.9-40-40-40h-64v-83.2c36.3-9.3 77-39.5 104.4-97.4C507.5 266.1 576 201.2 576 140.8V80c0-8.8-7.2-16-16-16H448zM48 140.8V112h80c0 39.2 2.1 76.2 12.3 116.8-55.1-18.9-92.3-58.9-92.3-88zM288 336c-53 0-112-78.4-112-216V48h224v72c0 140.5-60.8 216-112 216zm240-195.2c0 29.1-37.2 69.1-92.3 88C445.9 188.2 448 151.1 448 112h80v28.8z\"]\n};\nvar faTrophyAlt = {\n prefix: 'far',\n iconName: 'trophy-alt',\n icon: [576, 512, [], \"f2eb\", \"M359.3 138.9l-43.4-6.3-19.4-39.3c-3.5-7-13.5-7.1-17 0l-19.4 39.3-43.4 6.3c-7.8 1.1-10.9 10.7-5.3 16.2l31.4 30.6-7.4 43.2c-1.3 7.7 6.8 13.7 13.8 10l38.8-20.4 38.8 20.4c6.9 3.6 15.1-2.2 13.8-10l-7.4-43.2 31.4-30.6c5.6-5.5 2.5-15.1-5.3-16.2zM448 64V16c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v60.8C0 201.1 68.3 266 159.6 283.4c27.4 57.9 68.1 88.2 104.4 97.4V464h-64c-22.1 0-40 17.9-40 40 0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8 0-22.1-17.9-40-40-40h-64v-83.2c36.3-9.3 77-39.5 104.4-97.4C507.5 266.1 576 201.2 576 140.8V80c0-8.8-7.2-16-16-16H448zM48 140.8V112h80c0 39.2 2.1 76.2 12.3 116.8-55.1-18.9-92.3-58.9-92.3-88zM288 336c-53 0-112-78.4-112-216V48h224v72c0 140.5-60.8 216-112 216zm240-195.2c0 29.1-37.2 69.1-92.3 88C445.9 188.2 448 151.1 448 112h80v28.8z\"]\n};\nvar faTruck = {\n prefix: 'far',\n iconName: 'truck',\n icon: [640, 512, [], \"f0d1\", \"M624 368h-16V251.9c0-19-7.7-37.5-21.1-50.9L503 117.1C489.6 103.7 471 96 452.1 96H416V56c0-30.9-25.1-56-56-56H56C25.1 0 0 25.1 0 56v304c0 30.9 25.1 56 56 56h8c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-464 96c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm208-96H242.7c-16.6-28.6-47.2-48-82.7-48s-66.1 19.4-82.7 48H56c-4.4 0-8-3.6-8-8V56c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v312zm48-224h36.1c6.3 0 12.5 2.6 17 7l73 73H416v-80zm64 320c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-100.9c-17.2-25.9-46.6-43.1-80-43.1-24.7 0-47 9.6-64 24.9V272h144v91.1z\"]\n};\nvar faTruckContainer = {\n prefix: 'far',\n iconName: 'truck-container',\n icon: [640, 512, [], \"f4dc\", \"M32 304h336c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v208c0 17.7 14.3 32 32 32zM48 80h304v176H48V80zm573.3 125.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H464c-17.7 0-32 14.3-32 32v176H32c-17.7 0-32 14.3-32 32v27.8c0 40.8 28.7 78.1 69.1 83.5 30.7 4.1 58.3-9.5 74.9-31.7 18.4 24.7 50.4 38.7 85.3 29.7 25.2-6.5 46.1-26.2 54.4-50.8 4.9-14.8 5.4-29.2 2.8-42.4h163.2c-2.7 13.2-2.2 27.6 2.8 42.4 8.4 25.1 29.9 44.9 55.6 51.1 52.8 12.8 100-26.9 100-77.6 0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16V250.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-256h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 256c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm64-96h-16.4c-13.3-9.9-29.7-16-47.6-16s-34.2 6.1-47.6 16h-.4v-80h112v80zM136 112h-32c-4.4 0-8 3.6-8 8v96c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8v-96c0-4.4-3.6-8-8-8zm160 0h-32c-4.4 0-8 3.6-8 8v96c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8v-96c0-4.4-3.6-8-8-8zm-80 0h-32c-4.4 0-8 3.6-8 8v96c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8v-96c0-4.4-3.6-8-8-8z\"]\n};\nvar faTruckCouch = {\n prefix: 'far',\n iconName: 'truck-couch',\n icon: [640, 512, [], \"f4dd\", \"M13.8 237.9c2.5-1 4.9-2.1 7.5-2.8 6.1-1.6 12.4-2.5 18.7-2.5 29.8 0 56.1 18.5 66.8 45.8l125-33.5c-2.5-16.1.3-32.4 8.5-46.7 9.6-16.7 25.1-28.6 43.7-33.5 2.6-.7 5.3-.7 8-1.1l-.3-1c-9.1-34.1-44.2-54.4-78.4-45.3L58.9 158.8c-34.1 9.1-54.4 44.2-45.3 78.4l.2.7zM7.6 338.2L24.1 400l77.3-20.7 185.5-49.7 14.8-4 18.3-4.9v-122c-8.3-4-18-5.6-27.6-3.1-21.3 5.7-34 27.7-28.3 49l6.2 23.2-143.2 38.4-11.4 3-30.9 8.3-6.2-23.2c-5.7-21.3-27.7-34-49-28.3-21.3 5.7-34 27.7-28.3 49l6.3 23.2zM640 48V0H384c-17.7 0-32 14.3-32 32v340.6L5.9 465.4c-4.3 1.1-6.8 5.5-5.7 9.8l8.3 30.9c1.1 4.3 5.5 6.8 9.8 5.7L416.5 405c2.7 59.5 51.4 107 111.5 107 61.9 0 112-50.1 112-112s-50.1-112-112-112c-44.6 0-82.8 26.3-100.8 64H400V48h240zM528 336c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64z\"]\n};\nvar faTruckLoading = {\n prefix: 'far',\n iconName: 'truck-loading',\n icon: [640, 512, [], \"f4de\", \"M640 48V0H384c-17.7 0-32 14.3-32 32v340.6L5.9 465.4c-4.3 1.1-6.8 5.5-5.7 9.8l8.3 30.9c1.1 4.3 5.5 6.8 9.8 5.7L416.5 405c2.7 59.5 51.4 107 111.5 107 61.9 0 112-50.1 112-112s-50.1-112-112-112c-44.6 0-82.8 26.3-100.8 64H400V48h240zM528 336c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5z\"]\n};\nvar faTruckMonster = {\n prefix: 'far',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M272 352h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 96c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm432-96h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 96c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm144-208h-16v-80c0-17.67-14.33-32-32-32h-73.6L419.21 24.02A63.99 63.99 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H64c-17.67 0-32 14.33-32 32v80H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v.88c12.92-17.35 29.22-31.76 48-42.69V176h480v70.19c18.78 10.93 35.08 25.34 48 42.69V288h16c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM272 128V48h97.24c4.89 0 9.44 2.19 12.49 6l59.2 74H272z\"]\n};\nvar faTruckMoving = {\n prefix: 'far',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M621.3 205.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16V250.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm47.6-96c-13.3-9.9-29.7-16-47.6-16s-34.2 6.1-47.6 16h-32.9c-13.3-9.9-29.7-16-47.6-16-11.4 0-22.2 2.5-32 6.8V80h384v256zM480 176h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480zm48 256c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm64-96h-16.4c-13.4-9.9-29.7-16-47.6-16s-34.2 6.1-47.6 16h-.4v-80h112z\"]\n};\nvar faTruckPickup = {\n prefix: 'far',\n iconName: 'truck-pickup',\n icon: [640, 512, [], \"f63c\", \"M624 336h-16V208c0-17.67-14.33-32-32-32h-60.8L419.21 56.02A63.99 63.99 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v112H64c-17.67 0-32 14.33-32 32v128H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h49.61c7.82 54.21 54.01 96 110.39 96s102.56-41.79 110.39-96h67.23c7.82 54.21 54.01 96 110.39 96s102.56-41.79 110.39-96H624c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM272 80h97.24c4.89 0 9.44 2.19 12.49 6l72 90H272V80zm-96 352c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm288 0c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64zm96-120.86C540.48 278.27 505 256 464 256c-50.66 0-92.96 33.85-106.8 80h-74.4c-13.84-46.15-56.14-80-106.8-80-41 0-76.48 22.27-96 55.14V224h480v87.14z\"]\n};\nvar faTruckPlow = {\n prefix: 'far',\n iconName: 'truck-plow',\n icon: [640, 512, [], \"f7de\", \"M579.7 385.8c-7.5-7.5-11.7-17.7-11.7-28.3v-139c0-10.6 4.2-20.8 11.7-28.3l55.6-55.6c6.2-6.2 6.2-16.4 0-22.6L624 100.7c-6.2-6.2-16.4-6.2-22.6 0l-55.6 55.6c-16.5 16.5-25.8 38.9-25.8 62.2V264h-40v-40c0-17.7-14.3-32-32-32h-42.4L321.2 51.5C314 39.5 300.9 32 286.9 32H160c-17.7 0-32 14.4-32 32v128H32c-17.7 0-32 14.3-32 32v128c0 17.7 14.3 32 32 32 0 53 43 96 96 96s96-43 96-96h64c0 53 43 96 96 96s96-43 96-96v-72h40v45.5c0 23.3 9.3 45.7 25.8 62.2l55.6 55.6c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-55.6-55.6zM176 80h106.4l67.2 112H176V80zm-48 352c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm82.7-96c-16.6-28.6-47.2-48-82.7-48-33.4 0-62.8 17.1-80 43.1V240h384v61.3c-14.2-8.2-30.4-13.3-48-13.3-35.4 0-66.1 19.4-82.7 48h-90.6zM384 432c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTruckRamp = {\n prefix: 'far',\n iconName: 'truck-ramp',\n icon: [640, 512, [], \"f4e0\", \"M544 48h96V0H384c-17.7 0-32 14.3-32 32v340.6L5.9 465.4c-4.3 1.1-6.8 5.5-5.7 9.8l8.3 30.9c1.1 4.3 5.5 6.8 9.8 5.7L416.5 405c2.7 59.5 51.4 107 111.5 107 61.9 0 112-50.1 112-112s-50.1-112-112-112c-44.6 0-82.8 26.3-100.8 64H400V48h144zm-16 288c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64z\"]\n};\nvar faTrumpet = {\n prefix: 'far',\n iconName: 'trumpet',\n icon: [640, 512, [], \"f8e3\", \"M608 32a31.91 31.91 0 0 0-26.65 14.22c-.46.68-45.08 66.36-112.58 102-14.58 7.71-32 11.78-50.35 11.78H400v-16a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v16h-40v-16a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v16h-40v-16a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v16H48a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v128a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16h32.6A103.72 103.72 0 0 0 168 448h240a102.13 102.13 0 0 0 102.31-120.71c43.58 34.39 70.7 73.94 71.05 74.45A32 32 0 0 0 608 416c10.31 0 32-7.76 32-32V64c0-10.17-7.71-32-32-32zM176 400h-8a56 56 0 0 1 0-112h8zm88 0h-40V288h40zm88 0h-40V288h40zm56 0h-8V288h8a56 56 0 0 1 0 112zm184-61.44c-22.78-25.38-57.62-58.45-100.78-81.24C469.74 246 444.58 240 418.45 240H48v-32h370.45c26.13 0 51.29-6 72.77-17.33 43.57-23 78.23-55.83 100.78-81z\"]\n};\nvar faTshirt = {\n prefix: 'far',\n iconName: 'tshirt',\n icon: [640, 512, [], \"f553\", \"M638 121c-3.3-9.8-10.2-17.8-19.5-22.4L420.2 0c-9.5 13.2-28.4 50.3-100.2 50.3-72.4 0-91.1-37.7-100.2-50.3L21.6 98.6C12.3 103.2 5.3 111.2 2 121c-3.3 9.9-2.6 20.4 2.1 29.7l53 106.2c9.6 19.2 33 27 51.6 17.7l24-11.3c5.3-2.5 11.4 1.4 11.4 7.2v185.3c0 31 25.1 56.2 56 56.2h240c30.9 0 56-25.2 56-56.2V270.6c0-5.9 6.1-9.7 11.4-7.2l23.5 11.1c19.1 9.7 42.5 1.8 52.1-17.4l53-106.2c4.4-9.5 5.2-20 1.9-29.9zm-94 106.4l-73.2-34.6c-10.6-5-22.8 2.7-22.8 14.5v248.6c0 4.4-3.6 8-8 8H200c-4.4 0-8-3.6-8-8V207.3c0-11.7-12.2-19.5-22.8-14.5L96 227.4l-44.8-89.9 155.5-77.3c26.4 24 67.8 38.3 113.3 38.3s86.9-14.3 113.2-38.2l155.5 77.3-44.7 89.8z\"]\n};\nvar faTty = {\n prefix: 'far',\n iconName: 'tty',\n icon: [512, 512, [], \"f1e4\", \"M256.015.004zm248.687 159.27l-37.058 59.291c-12.314 19.701-36.965 27.752-58.53 19.125l-74.42-29.769c-19.855-7.943-32.062-28.062-29.935-49.341l2.606-26.073c-36.57-9.118-67.361-8.82-102.729 0l2.607 26.072c2.128 21.28-10.079 41.401-29.936 49.344l-74.422 29.768c-21.579 8.631-46.225.56-58.53-19.127L7.297 159.272c-11.876-19.002-9.025-43.693 6.869-59.488 133.558-132.722 349.459-133.369 483.668.001 15.894 15.795 18.745 40.487 6.868 59.489zm-40.701-25.441c-115.216-114.495-300.899-114.381-416-.001l37.059 59.292 74.422-29.768-6.505-65.044c75.782-27.384 130.31-27.367 206.046 0l-6.502 65.043 74.42 29.769 37.06-59.291zM126 430H98c-6.627 0-12-5.373-12-12v-28c0-6.627 5.373-12 12-12h28c6.627 0 12 5.373 12 12v28c0 6.627-5.373 12-12 12zm96 0h-28c-6.627 0-12-5.373-12-12v-28c0-6.627 5.373-12 12-12h28c6.627 0 12 5.373 12 12v28c0 6.627-5.373 12-12 12zm96 0h-28c-6.627 0-12-5.373-12-12v-28c0-6.627 5.373-12 12-12h28c6.627 0 12 5.373 12 12v28c0 6.627-5.373 12-12 12zm96 0h-28c-6.627 0-12-5.373-12-12v-28c0-6.627 5.373-12 12-12h28c6.627 0 12 5.373 12 12v28c0 6.627-5.373 12-12 12zM78 512H50c-6.627 0-12-5.373-12-12v-28c0-6.627 5.373-12 12-12h28c6.627 0 12 5.373 12 12v28c0 6.627-5.373 12-12 12zm384 0h-28c-6.627 0-12-5.373-12-12v-28c0-6.627 5.373-12 12-12h28c6.627 0 12 5.373 12 12v28c0 6.627-5.373 12-12 12zM78 348H50c-6.627 0-12-5.373-12-12v-28c0-6.627 5.373-12 12-12h28c6.627 0 12 5.373 12 12v28c0 6.627-5.373 12-12 12zm96 0h-28c-6.627 0-12-5.373-12-12v-28c0-6.627 5.373-12 12-12h28c6.627 0 12 5.373 12 12v28c0 6.627-5.373 12-12 12zm96 0h-28c-6.627 0-12-5.373-12-12v-28c0-6.627 5.373-12 12-12h28c6.627 0 12 5.373 12 12v28c0 6.627-5.373 12-12 12zm96 0h-28c-6.627 0-12-5.373-12-12v-28c0-6.627 5.373-12 12-12h28c6.627 0 12 5.373 12 12v28c0 6.627-5.373 12-12 12zm96 0h-28c-6.627 0-12-5.373-12-12v-28c0-6.627 5.373-12 12-12h28c6.627 0 12 5.373 12 12v28c0 6.627-5.373 12-12 12zm-98 158H148c-6.627 0-12-5.373-12-12v-16c0-6.627 5.373-12 12-12h216c6.627 0 12 5.373 12 12v16c0 6.627-5.373 12-12 12z\"]\n};\nvar faTurkey = {\n prefix: 'far',\n iconName: 'turkey',\n icon: [640, 512, [], \"f725\", \"M534 207.93a72.05 72.05 0 0 0 26.69 7.73c27.78 2.49 74.43-14.46 79-65.95a72.9 72.9 0 0 0-58.82-77.89C580.55 44 558.34 0 508 0a72.34 72.34 0 0 0-72.45 66.25A71.24 71.24 0 0 0 438 92.4c3.77 13.11-2.89 16.09-12.16 23.83a165.52 165.52 0 0 1-18.4 13C371 108.72 330.67 96 288 96 128.94 96 0 269.13 0 384s128.94 128 288 128 288-13.12 288-128c0-51.4-25.94-114.38-68.71-168.37 1.77-1.59 3.23-3.44 5.07-5 2.82-2.33 8.64-9.43 21.64-2.7zM528 384c0 50.67-39.27 80-240 80S48 434.67 48 384c0-92.58 109.84-240 240-240a182.57 182.57 0 0 1 54.21 8.72c-4.95.71-9.86 1.72-14.87 2-18.11.91-107.67 8.32-130.92 96.89-10.46 39.84-2.18 81.19 22.72 113.47 47.14 61.11 114.93 51.34 130.15 48.45 49.53-9.4 89.36-49.34 101.49-101.75a187.94 187.94 0 0 1 24.94-59.22C508.22 296 528 344.86 528 384zm-46.39-210.21c-38.49 32.11-66 77.26-77.58 127.14-7.84 33.88-32.84 59.56-63.68 65.41-48.9 9.27-75.82-21.06-83.19-30.61a82.57 82.57 0 0 1-14.3-72c3.54-13.49 20.27-57.79 86.89-61.14 73.34-3.68 118.81-42.52 133.76-55.29 23.1-19.62 26.14-38.34 20.95-68.07s19.89-31.2 23.2-31.2c10.35 0 26.95 6.6 25.15 26.87-.14 1.6-2 6.75-4.47 13.25-6.67 17.3 8 35.25 26.35 32.31 17.65-2.84 23.34-2 30.66 6a24.93 24.93 0 0 1 6.55 19c-.47 5.33-7.73 30.79-38 18.83-8.23-3.25-18.47-7.3-30.75-7.3-14.38.01-27.96 5.5-41.54 16.8z\"]\n};\nvar faTurntable = {\n prefix: 'far',\n iconName: 'turntable',\n icon: [576, 512, [], \"f8e4\", \"M224 112a144 144 0 1 0 144 144 144 144 0 0 0-144-144zm0 168a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm248-152h-16a16 16 0 0 0-16 16v99.71a31.88 31.88 0 0 1-2.95 13.41L416 302.8a15.69 15.69 0 0 0-11.75 8.35l-25.69 51.38a16 16 0 0 0 7.13 21.47l28.62 14.32a16 16 0 0 0 21.47-7.16l25.69-51.38a15.89 15.89 0 0 0-1.85-17l25.43-55.1a32 32 0 0 0 2.95-13.44V144a16 16 0 0 0-16-16zm40-96H64A64 64 0 0 0 0 96v320a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V96a64 64 0 0 0-64-64zm16 384a16 16 0 0 1-16 16H64a16 16 0 0 1-16-16V96a16 16 0 0 1 16-16h448a16 16 0 0 1 16 16z\"]\n};\nvar faTurtle = {\n prefix: 'far',\n iconName: 'turtle',\n icon: [640, 512, [], \"f726\", \"M637.12 160.46c-5.2-20.65-18.86-38.27-36.18-50.64C556.31 77.94 545.09 64 507.68 64c-39.63 0-73.59 23.57-86.26 57.9C380.78 71.45 317.81 32 248.39 32 232.27 32 84.6 43.86 35.54 191.49c-5.37 16.14-4.57 33.14 1.91 48.51H32c-17.67 0-32 14.33-32 32v16c0 11.89 6.59 22.8 17.11 28.33l81.53 42.85L70.46 408c-8.55 14.8-8.55 33.2 0 48s24.47 24 41.57 24h36.95c17.15 0 33-9.15 41.57-24l27.64-47.88c40.34 10.42 97.54 10.88 139.63 0L385.46 456c8.57 14.85 24.42 24 41.57 24h36.95c17.09 0 33.02-9.2 41.57-24s8.55-33.2 0-48l-30.68-53.13c30.65-20.78 51.2-50.03 61.5-82.87h14.98c56.34 0 100.56-52.82 85.77-111.54zM81.1 206.63C100.2 149.14 167.51 80 247.61 80h.79c80.1 0 147.41 69.14 166.51 126.63 3.27 9.83-6.69 32.32-30.74 33.12-.94.06-269.57.25-269.57.25-22.47 0-39.11-16.5-33.5-33.37zM551.34 224H504c-11.29 90.33-74.88 101.62-96.5 110.19L463.97 432H427l-46.75-81.05c-66.9 21.93-108.77 24.83-184.5 0L148.97 432H112l53.19-92.08L66.38 288h316.68c32.03 0 80.8-21.8 80.94-79.78V153c0-19.84 11.64-30.56 21.78-35.75 31.46-16.13 47.11 2.97 89.19 33.02 10.66 7.62 17.03 20 17.03 33.08 0 22.42-18.25 40.65-40.66 40.65zM512 144c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16z\"]\n};\nvar faTv = {\n prefix: 'far',\n iconName: 'tv',\n icon: [640, 512, [], \"f26c\", \"M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h248v48H112a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H344v-48h248a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm0 368H48V48h544z\"]\n};\nvar faTvAlt = {\n prefix: 'far',\n iconName: 'tv-alt',\n icon: [640, 512, [], \"f8e5\", \"M528 464H112a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16zM592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h544a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm0 368H48V48h544z\"]\n};\nvar faTvMusic = {\n prefix: 'far',\n iconName: 'tv-music',\n icon: [640, 512, [], \"f8e6\", \"M240 320c26.5 0 48-14.33 48-32v-84.84l96-37.52V226a69.82 69.82 0 0 0-16-2c-26.5 0-48 14.33-48 32s21.5 32 48 32 48-14.33 48-32V112a16 16 0 0 0-20.81-15.25l-128 47.25A16 16 0 0 0 256 159.25V258a69.82 69.82 0 0 0-16-2c-26.5 0-48 14.33-48 32s21.5 32 48 32zM592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h544a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm0 368H48V48h544zm-64 96H112a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faTvRetro = {\n prefix: 'far',\n iconName: 'tv-retro',\n icon: [512, 512, [], \"f401\", \"M400 244v-8c0-6.6 5.4-12 12-12h8c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12h-8c-6.6 0-12-5.4-12-12zm12 76h8c6.6 0 12-5.4 12-12v-8c0-6.6-5.4-12-12-12h-8c-6.6 0-12 5.4-12 12v8c0 6.6 5.4 12 12 12zm-36-136.5s-1.5-7.5-144-7.5-144.5 7.5-144.5 7.5S80 184 80 288s7.5 104.5 7.5 104.5S88 400 232 400s144-7.5 144-7.5 7.5-.5 7.5-104.5-7.5-104.5-7.5-104.5zM512 144v288c0 26.5-21.5 48-48 48h-16v32h-48l-10.7-32H122.7L112 512H64v-32H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h140.9l-54-55.2c-9.3-9.5-9.1-24.7.3-33.9 9.5-9.3 24.7-9.1 33.9.3L256 96l86.9-88.8c9.3-9.5 24.5-9.6 33.9-.3 9.5 9.3 9.6 24.5.3 33.9l-54 55.2H464c26.5 0 48 21.5 48 48zm-48 0H48v288h416V144z\"]\n};\nvar faTypewriter = {\n prefix: 'far',\n iconName: 'typewriter',\n icon: [512, 512, [], \"f8e7\", \"M480 192h-32V77.25a32 32 0 0 0-9.38-22.63L393.38 9.38A32 32 0 0 0 370.75 0H96a32 32 0 0 0-32 32v160H32a32 32 0 0 0-32 32v32a32 32 0 0 0 32 32v160a64 64 0 0 0 64 64h320a64 64 0 0 0 64-64V288a32 32 0 0 0 32-32v-32a32 32 0 0 0-32-32zM112 48h240v32a16 16 0 0 0 16 16h32v96h-34.75a32 32 0 0 0-22.62 9.37l-13.26 13.26a32 32 0 0 1-22.62 9.37h-101.5a32 32 0 0 1-22.62-9.37l-13.26-13.26a32 32 0 0 0-22.62-9.37H112zm320 400a16 16 0 0 1-16 16H96a16 16 0 0 1-16-16V288h352zm-288-16h224a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H144a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16zm-8-76h24a8 8 0 0 0 8-8v-24a8 8 0 0 0-8-8h-24a8 8 0 0 0-8 8v24a8 8 0 0 0 8 8zm216 0h24a8 8 0 0 0 8-8v-24a8 8 0 0 0-8-8h-24a8 8 0 0 0-8 8v24a8 8 0 0 0 8 8zm-144 0h24a8 8 0 0 0 8-8v-24a8 8 0 0 0-8-8h-24a8 8 0 0 0-8 8v24a8 8 0 0 0 8 8zm72 0h24a8 8 0 0 0 8-8v-24a8 8 0 0 0-8-8h-24a8 8 0 0 0-8 8v24a8 8 0 0 0 8 8z\"]\n};\nvar faUfo = {\n prefix: 'far',\n iconName: 'ufo',\n icon: [640, 512, [], \"e047\", \"M128,296a24,24,0,1,0,24,24A23.99993,23.99993,0,0,0,128,296Zm192,40a24,24,0,1,0,24,24A23.99993,23.99993,0,0,0,320,336ZM483.47656,210.10938C474.207,128.15039,404.87891,64,320,64c-84.87695,0-154.20312,64.15039-163.47461,146.10742C62.91016,232.44141,0,273.23047,0,320c0,70.69141,143.26953,128,320,128,176.73242,0,320-57.30859,320-128C640,273.23047,577.09375,232.44336,483.47656,210.10938ZM320,112c64.80273,0,117.334,52.0957,117.334,116.36328,0,5.22461-.877,10.21289-1.55078,15.25586a250.36631,250.36631,0,0,1-231.5664,0c-.67188-5.043-1.54883-10.03125-1.54883-15.25586C202.668,164.0957,255.19727,112,320,112Zm0,288c-178.47656,0-272-59.44141-272-80,0-13.05078,37.81445-41.72656,110.98438-60.96289a47.81277,47.81277,0,0,0,23.043,27.14648,298.37591,298.37591,0,0,0,275.94532,0,47.80892,47.80892,0,0,0,23.04492-27.14648C554.18555,278.27344,592,306.94922,592,320,592,340.55859,498.47852,400,320,400ZM512,296a24,24,0,1,0,24,24A23.99993,23.99993,0,0,0,512,296Z\"]\n};\nvar faUfoBeam = {\n prefix: 'far',\n iconName: 'ufo-beam',\n icon: [640, 512, [], \"e048\", \"M320,232.00045a24,24,0,1,0,24,24A24,24,0,0,0,320,232.00045ZM144,200.00038a24.00005,24.00005,0,1,0,24,24A24,24,0,0,0,144,200.00038Zm322.36719-90.88494C447.2793,45.94345,388.45117,0,320,0S192.7207,45.94345,173.63281,109.11544C75.24219,127.86939,0,166.56282,0,224.00043c0,84.03141,160.96875,128.00025,320,128.00025s320-43.96884,320-128.00025C640,166.56282,564.75781,127.86939,466.36719,109.11544ZM320,48.00009a104.91293,104.91293,0,0,1,104.82422,97.08808C393.53711,154.57842,357.89062,160.00031,320,160.00031s-73.53711-5.42189-104.82422-14.91214A104.91293,104.91293,0,0,1,320,48.00009Zm0,256.00049c-166.03125,0-272-47.37509-272-80.00015,0-21.1602,44.78516-48.45126,121.4082-65.07044a47.86653,47.86653,0,0,0,31.834,32.09186C238.38477,202.2875,278.33984,208.0004,320,208.0004s81.61523-5.7129,118.75781-16.97855A47.86653,47.86653,0,0,0,470.5918,158.93C547.21484,175.54917,592,202.84023,592,224.00043,592,256.62549,486.03125,304.00058,320,304.00058ZM33.68164,481.68452a15.99652,15.99652,0,0,0,7.1543,21.46488l14.3164,7.15822a16.00262,16.00262,0,0,0,21.4668-7.15431l68.75-137.50222c-16.45117-3.77344-32.23633-8.10743-47.12109-13.10158ZM541.74219,352.55341c-14.88477,4.9922-30.66992,9.32619-47.1211,13.10159l68.74805,137.49831a16.00206,16.00206,0,0,0,21.4668,7.15431l14.3164-7.15822a15.99819,15.99819,0,0,0,7.1543-21.46488ZM496,200.00038a24.00005,24.00005,0,1,0,24,24A24,24,0,0,0,496,200.00038Z\"]\n};\nvar faUmbrella = {\n prefix: 'far',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M575.2 253.8C546.3 132.5 434.3 57.7 312 48.9V24c0-13.3-10.7-24-24-24s-24 10.7-24 24v24.9C142.1 57.6 30.5 131.8.8 253.7c-5.9 23.6 22.3 43.8 43.6 25.5l.5-.4c49.2-45.8 89.5-28.1 125.3 27.7 11.3 17.8 34.8 16.9 45.6 0 13.5-20.9 27.6-40.2 48.2-48.8V440c0 13.2-10.8 24-24 24-10.2 0-19.3-6.4-22.7-16-4.4-12.5-18.1-19-30.6-14.6s-19 18.1-14.6 30.6c10.2 28.7 37.4 48 67.9 48 39.7 0 72-32.3 72-72V258c25.9 10.8 38 32.6 48.2 48.5 10.8 16.9 34.2 17.8 45.6 0 36.2-56 76.6-73.1 125.4-27.7l.5.4c21.1 18.2 49.3-1.7 43.5-25.4zm-191.4 1.5c-24-30-56.8-50.3-95.8-50.3-39.4 0-69.7 18.7-94.6 49.9-35.7-44.3-82.8-57.1-122.7-46.8C115 134.8 202 96 288 96c85.6 0 173.8 39 217.8 112.8-47.9-13.8-89.8 8.1-122 46.5z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'far',\n iconName: 'umbrella-beach',\n icon: [640, 512, [], \"f5ca\", \"M443.48 18.08C409.77 5.81 375.31 0 341.41 0c-90.47 0-176.84 41.45-233.44 112.33-6.7 8.39-2.67 21.04 7.42 24.71l229.18 83.41L254.84 464H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H306.01l83.67-227.12 228.66 83.22c1.83.67 3.7.98 5.53.98 8.27 0 15.83-6.35 16.04-15.14 3.03-124.66-72.77-242.85-196.43-287.86zm9.1 190.61L307.4 155.85c14.25-25.26 30.54-47.29 48.16-63.97 25.34-24.03 50.03-34.16 67.41-27.77 17.53 6.38 29.84 29.92 33.84 64.62 2.77 24.11 1.09 51.45-4.23 79.96zm-274.63-99.95c42.89-36.66 97.81-58.24 154.55-60.33-4.47 3.76-36.86 28.45-70.29 91l-84.26-30.67zm319.82 116.4c7.38-35.07 12.06-77.07 4.11-118.28 45.77 38.28 77.14 91.67 86.87 151.39l-90.98-33.11z\"]\n};\nvar faUnderline = {\n prefix: 'far',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M32 48h32v208c0 88.22 71.78 160 160 160s160-71.78 160-160V48h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h32v208a96 96 0 0 1-192 0V48h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16zm400 416H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16z\"]\n};\nvar faUndo = {\n prefix: 'far',\n iconName: 'undo',\n icon: [512, 512, [], \"f0e2\", \"M12 8h27.711c6.739 0 12.157 5.548 11.997 12.286l-2.347 98.568C93.925 51.834 170.212 7.73 256.793 8.001 393.18 8.428 504.213 120.009 504 256.396 503.786 393.181 392.835 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.354-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.322 0 196-87.662 196-196 0-108.322-87.662-196-196-196-79.545 0-147.941 47.282-178.675 115.302l126.389-3.009c6.737-.16 12.286 5.257 12.286 11.997V212c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12V20C0 13.373 5.373 8 12 8z\"]\n};\nvar faUndoAlt = {\n prefix: 'far',\n iconName: 'undo-alt',\n icon: [512, 512, [], \"f2ea\", \"M28.485 28.485L80.65 80.65C125.525 35.767 187.515 8 255.999 8 392.66 8 504.1 119.525 504 256.185 503.9 393.067 392.905 504 256 504c-63.926 0-122.202-24.187-166.178-63.908-5.113-4.618-5.353-12.561-.482-17.433l19.738-19.738c4.498-4.498 11.753-4.785 16.501-.552C160.213 433.246 205.895 452 256 452c108.321 0 196-87.662 196-196 0-108.321-87.662-196-196-196-54.163 0-103.157 21.923-138.614 57.386l54.128 54.129c7.56 7.56 2.206 20.485-8.485 20.485H20c-6.627 0-12-5.373-12-12V36.971c0-10.691 12.926-16.045 20.485-8.486z\"]\n};\nvar faUnicorn = {\n prefix: 'far',\n iconName: 'unicorn',\n icon: [640, 512, [], \"f727\", \"M631.98 64H526.61l-15.28-18.57c16.37-5.23 29.03-18.72 32.51-35.79C544.85 4.68 540.96 0 535.9 0H399.95c-68.41 0-125.83 47.95-140.42 112H176c-38.13 0-71.77 19.22-92.01 48.4C37.36 162.55 0 200.84 0 248v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.18 2.59-.78 5.05-.78 7.68 0 30.13 11.9 58.09 32.16 78.58l-12.95 43.76a78.913 78.913 0 0 0-1.05 40.84l24.12 100.29c3.46 14.38 16.32 24.52 31.11 24.52h74.7c20.86 0 36.14-19.64 31.02-39.86l-25.53-100.76 8.51-23.71L256 356.2V480c0 17.67 14.33 32 32 32h80c17.67 0 32-14.33 32-32V324.35c20.57-23.15 32-52.8 32-84.35v-5.62c20.95 6.97 38.32.72 40.93-.17l31.03-10.59c23.96-8.18 40.06-30.7 40.04-56.01l-.04-52.27 92.46-36.67c6.59-4.4 3.48-14.67-4.44-14.67zM488.46 178.19l-31.02 10.59c-1.51.52-9.71 2.95-16.48-3.83L416 160h-32v80c0 26.09-12.68 49.03-32 63.64V464h-48V320l-107.91-30.83-28.65 79.78L191.53 464H150l-21.13-87.86a31.698 31.698 0 0 1 .37-16.18l22.7-76.72C128.54 273.72 112 250.83 112 224c0-35.35 28.65-64 64-64h127.95v-16c0-53.02 42.98-96 96-96h51.33l44.67 54.28.05 65.35c0 4.77-3.03 9.02-7.54 10.56zM432 80c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16z\"]\n};\nvar faUnion = {\n prefix: 'far',\n iconName: 'union',\n icon: [320, 512, [], \"f6a2\", \"M272 80v204.78c0 53.45-36.12 102.08-88.48 112.81C111.54 412.33 48 357.44 48 288V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v200.86c0 83.51 60.89 158.24 144.01 166.35C239.38 456.53 320 381.5 320 288V80c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16z\"]\n};\nvar faUniversalAccess = {\n prefix: 'far',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 456c-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208 114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208zm143.594-286.66c2.538 10.75-4.119 21.522-14.869 24.061-29.865 7.051-57.839 13.286-85.597 16.751.679 111.33 12.654 128.456 26.969 165.116 4.823 12.346-1.275 26.265-13.622 31.087-12.34 4.823-26.263-1.27-31.087-13.622-9.559-24.467-18.089-42.949-23.805-85.12h-3.164c-5.721 42.206-14.269 60.706-23.805 85.12-4.816 12.329-18.721 18.451-31.087 13.623-12.346-4.823-18.445-18.741-13.623-31.088 14.33-36.686 26.29-53.837 26.969-165.116-27.758-3.465-55.732-9.699-85.597-16.751-10.75-2.538-17.407-13.311-14.869-24.061 2.539-10.75 13.312-17.405 24.061-14.869 104.768 24.736 134.447 24.701 239.066 0 10.749-2.538 21.522 4.118 24.06 14.869zm-181.788-43.146C217.806 113.1 234.906 96 256 96s38.194 17.1 38.194 38.194-17.1 38.194-38.194 38.194-38.194-17.101-38.194-38.194z\"]\n};\nvar faUniversity = {\n prefix: 'far',\n iconName: 'university',\n icon: [512, 512, [], \"f19c\", \"M472 440h-8v-56c0-13.255-10.745-24-24-24h-16V208h-48v152h-48V208h-48v152h-48V208h-48v152h-48V208H88v152H72c-13.255 0-24 10.745-24 24v56h-8c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zm-56 0H96v-32h320v32zm72.267-322.942L271.179 26.463a48.004 48.004 0 0 0-30.358 0L23.733 117.058A11.999 11.999 0 0 0 16 128.274V156c0 6.627 5.373 12 12 12h20v12c0 6.627 5.373 12 12 12h392c6.627 0 12-5.373 12-12v-12h20c6.627 0 12-5.373 12-12v-27.726c0-4.982-3.077-9.445-7.733-11.216zM64 144l192-72 192 72H64z\"]\n};\nvar faUnlink = {\n prefix: 'far',\n iconName: 'unlink',\n icon: [512, 512, [], \"f127\", \"M304.083 388.936c4.686 4.686 4.686 12.284 0 16.971l-65.057 65.056c-54.709 54.711-143.27 54.721-197.989 0-54.713-54.713-54.719-143.27 0-197.989l65.056-65.057c4.686-4.686 12.284-4.686 16.971 0l22.627 22.627c4.686 4.686 4.686 12.284 0 16.971L81.386 311.82c-34.341 34.341-33.451 88.269.597 120.866 32.577 31.187 84.788 31.337 117.445-1.32l65.057-65.056c4.686-4.686 12.284-4.686 16.971 0l22.627 22.626zm-56.568-243.245l64.304-64.304c34.346-34.346 88.286-33.453 120.882.612 31.18 32.586 31.309 84.785-1.335 117.43l-65.056 65.057c-4.686 4.686-4.686 12.284 0 16.971l22.627 22.627c4.686 4.686 12.284 4.686 16.971 0l65.056-65.057c54.711-54.709 54.721-143.271 0-197.99-54.71-54.711-143.27-54.72-197.989 0l-65.057 65.057c-4.686 4.686-4.686 12.284 0 16.971l22.627 22.627c4.685 4.685 12.283 4.685 16.97-.001zm238.343 362.794l22.627-22.627c4.686-4.686 4.686-12.284 0-16.971L43.112 3.515c-4.686-4.686-12.284-4.686-16.971 0L3.515 26.142c-4.686 4.686-4.686 12.284 0 16.971l465.373 465.373c4.686 4.686 12.284 4.686 16.97-.001z\"]\n};\nvar faUnlock = {\n prefix: 'far',\n iconName: 'unlock',\n icon: [448, 512, [], \"f09c\", \"M400 240H128v-94.8c0-52.8 42.1-96.7 95-97.2 53.4-.6 97 42.7 97 96v24c0 13.3 10.7 24 24 24s24-10.7 24-24v-22.6C368 65.8 304 .2 224.3 0 144.8-.2 80 64.5 80 144v96H48c-26.5 0-48 21.5-48 48v176c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V288c0-26.5-21.5-48-48-48zm0 224H48V288h352v176z\"]\n};\nvar faUnlockAlt = {\n prefix: 'far',\n iconName: 'unlock-alt',\n icon: [448, 512, [], \"f13e\", \"M400 240H128v-94.8c0-52.8 42.1-96.7 95-97.2 53.4-.6 97 42.7 97 96v24c0 13.3 10.7 24 24 24s24-10.7 24-24v-22.6C368 65.8 304 .2 224.3 0 144.8-.2 80 64.5 80 144v96H48c-26.5 0-48 21.5-48 48v176c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V288c0-26.5-21.5-48-48-48zm0 224H48V288h352v176zm-176-32c-15.5 0-28-12.5-28-28v-56c0-15.5 12.5-28 28-28s28 12.5 28 28v56c0 15.5-12.5 28-28 28z\"]\n};\nvar faUpload = {\n prefix: 'far',\n iconName: 'upload',\n icon: [576, 512, [], \"f093\", \"M528 288H384v-32h64c42.6 0 64.2-51.7 33.9-81.9l-160-160c-18.8-18.8-49.1-18.7-67.9 0l-160 160c-30.1 30.1-8.7 81.9 34 81.9h64v32H48c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48zm-400-80L288 48l160 160H336v160h-96V208H128zm400 256H48V336h144v32c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48v-32h144v128zm-40-64c0 13.3-10.7 24-24 24s-24-10.7-24-24 10.7-24 24-24 24 10.7 24 24z\"]\n};\nvar faUsbDrive = {\n prefix: 'far',\n iconName: 'usb-drive',\n icon: [640, 512, [], \"f8e9\", \"M624 128H480v-16a16 16 0 0 0-16-16H64a64 64 0 0 0-64 64v192a64 64 0 0 0 64 64h400a16 16 0 0 0 16-16v-16h144a16 16 0 0 0 16-16V144a16 16 0 0 0-16-16zM432 368H64a16 16 0 0 1-16-16V160a16 16 0 0 1 16-16h368zm152-56a16 16 0 0 1-16 16h-16a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h16a16 16 0 0 1 16 16zm0-96a16 16 0 0 1-16 16h-16a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h16a16 16 0 0 1 16 16z\"]\n};\nvar faUsdCircle = {\n prefix: 'far',\n iconName: 'usd-circle',\n icon: [496, 512, [], \"f2e8\", \"M291 244l-72-21.9c-9-2.8-15.2-12.1-15.2-22.7 0-12.9 9.2-23.4 20.5-23.4h45c7 0 13.8 1.9 19.9 5.4 6.4 3.7 14.3 3.4 19.7-1.6l12-11.3c7.6-7.2 6.3-19.4-2.3-25.2-13.8-9.3-29.9-14.5-46.4-15.1V112c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v16c-37.6.1-68.2 32.1-68.2 71.4 0 31.5 20.2 59.7 49.2 68.6l72 21.9c9 2.8 15.2 12.1 15.2 22.7 0 12.9-9.2 23.4-20.5 23.4h-45c-7 0-13.8-1.9-19.9-5.4-6.4-3.7-14.3-3.4-19.7 1.6l-12 11.3c-7.6 7.2-6.3 19.4 2.3 25.2 13.8 9.3 29.9 14.5 46.4 15.1V400c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-16c37.6-.1 68.2-32.1 68.2-71.4 0-31.5-20.2-59.7-49.2-68.6zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200z\"]\n};\nvar faUsdSquare = {\n prefix: 'far',\n iconName: 'usd-square',\n icon: [448, 512, [], \"f2e9\", \"M261.8 242.3L200 223.7c-6.2-1.9-10.6-8.3-10.6-15.6 0-8.9 6.4-16.1 14.2-16.1h38.6c6.6 0 13 2.1 18.4 6.1 3 2.2 7.2 1.7 9.8-.9l23.4-22.3c3.3-3.2 3.5-8.7 0-11.6-12.9-10.9-29.1-17.4-45.9-18.6V120c0-4.4-3.6-8-8-8h-32c-4.4 0-8 3.6-8 8v24.4c-32.6 1.9-58.7 29.7-58.7 63.8 0 28.3 18.4 53.7 44.8 61.6l61.9 18.6c6.2 1.9 10.6 8.3 10.6 15.6 0 8.9-6.4 16.1-14.2 16.1h-38.6c-6.6 0-13-2.1-18.4-6.1-3-2.2-7.2-1.7-9.8.9l-23.4 22.3c-3.3 3.2-3.5 8.7 0 11.6 12.9 10.9 29.1 17.4 45.9 18.6V392c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8v-24.4c32.6-1.9 58.7-29.7 58.7-63.8 0-28.3-18.5-53.6-44.9-61.5zM392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm8 392c0 4.4-3.6 8-8 8H56c-4.4 0-8-3.6-8-8V88c0-4.4 3.6-8 8-8h336c4.4 0 8 3.6 8 8v336z\"]\n};\nvar faUser = {\n prefix: 'far',\n iconName: 'user',\n icon: [448, 512, [], \"f007\", \"M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z\"]\n};\nvar faUserAlien = {\n prefix: 'far',\n iconName: 'user-alien',\n icon: [448, 512, [], \"e04a\", \"M252,272h24a60.00047,60.00047,0,0,0,60-60v-8a12.0006,12.0006,0,0,0-12-12H300a60.00047,60.00047,0,0,0-60,60v8A12.0006,12.0006,0,0,0,252,272Zm-56,0a12.0006,12.0006,0,0,0,12-12v-8a60.00047,60.00047,0,0,0-60-60H124a12.0006,12.0006,0,0,0-12,12v8a60.00047,60.00047,0,0,0,60,60Zm156,80h-8.81251c39.14845-43.77734,72.87892-96.6582,72.87892-149.36719C416.06641,76.73633,330.05273,0,224,0,117.91992,0,31.93555,76.73633,31.93555,202.63281c0,52.709,33.73047,105.58985,72.8789,149.36719H96A95.99975,95.99975,0,0,0,0,448v32a32.00158,32.00158,0,0,0,32,32H416a32.00033,32.00033,0,0,0,32-32V448A95.99975,95.99975,0,0,0,352,352ZM79.93555,202.63281C79.93555,110.14258,137.83008,48,224,48s144.06641,62.14258,144.06641,154.63281c0,61.3711-72.96289,139.19336-144.06641,193.9375C152.89648,341.82617,79.93555,264.00391,79.93555,202.63281ZM400,464H48V448a48.055,48.055,0,0,1,48-48h57.05664c19.35156,17.27734,37.27344,31.41992,50.24219,41.11133a34.55191,34.55191,0,0,0,41.40429,0c12.96876-9.69141,30.88868-23.834,50.24024-41.11133H352a48.055,48.055,0,0,1,48,48Z\"]\n};\nvar faUserAlt = {\n prefix: 'far',\n iconName: 'user-alt',\n icon: [512, 512, [], \"f406\", \"M384 336c-40.6 0-47.6-1.5-72.2 6.8-17.5 5.9-36.3 9.2-55.8 9.2s-38.3-3.3-55.8-9.2c-24.6-8.3-31.5-6.8-72.2-6.8C57.3 336 0 393.3 0 464v16c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-16c0-70.7-57.3-128-128-128zm80 128H48c0-21.4 8.3-41.5 23.4-56.6C86.5 392.3 106.6 384 128 384c41.1 0 41-1.1 56.8 4.2 23 7.8 47 11.8 71.2 11.8 24.2 0 48.2-4 71.2-11.8 15.8-5.4 15.7-4.2 56.8-4.2 44.1 0 80 35.9 80 80zM256 320c88.4 0 160-71.6 160-160S344.4 0 256 0 96 71.6 96 160s71.6 160 160 160zm0-272c61.8 0 112 50.2 112 112s-50.2 112-112 112-112-50.2-112-112S194.2 48 256 48z\"]\n};\nvar faUserAltSlash = {\n prefix: 'far',\n iconName: 'user-alt-slash',\n icon: [640, 512, [], \"f4fa\", \"M320 48c61.8 0 112 50.2 112 112 0 27.3-10.2 52-26.5 71.5l24.1 18.8 13.6 10.7c22.7-27.7 36.8-62.5 36.8-101C480 71.6 408.4 0 320 0c-52.5 0-98.7 25.6-127.8 64.7l37.7 29.5C250.3 66.3 282.9 48 320 48zm314 423L479.5 350.2 400 288.1 115.6 65.7l-2.2-1.7L36 3.5C29.1-2 19-.9 13.5 6l-10 12.5C-2 25.4-.9 35.5 6 41l44.3 34.6 39 30.5L604 508.5c6.9 5.5 17 4.4 22.5-2.5l10-12.5c5.5-6.9 4.4-17-2.5-22.5zm-522-7.1c0-21.4 8.3-41.4 23.4-56.5S170.6 384 192 384h36.8c5.1 0 11.5 1.3 20 4.2 23 7.8 47 11.8 71.2 11.8 19.3 0 38.2-3.2 56.9-8.2l-51.5-40.3c-1.8.1-3.5.4-5.3.4-19.5 0-38.3-3.3-55.8-9.2-11.5-3.9-23.3-6.8-35.4-6.8H192c-70.7 0-128 57.3-128 128v16c0 17.7 14.3 32 32 32h434.6l-61.4-48z\"]\n};\nvar faUserAstronaut = {\n prefix: 'far',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M358.6 328.8c20.5-20.2 36.4-45.1 46.2-72.8H416c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-11.2C378.5 53.5 307.6 0 224 0S69.5 53.5 43.2 128H32c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h11.2c9.8 27.7 25.7 52.6 46.2 72.8C37.4 347.3 0 396.1 0 454.4V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-33.6c0-47.6 38.8-86.4 86.4-86.4h13c23.5 10.2 49.4 16 76.6 16s53.1-5.8 76.6-16h13c47.6 0 86.4 38.8 86.4 86.4V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-33.6c0-58.3-37.4-107.1-89.4-125.6zM224 336c-79.4 0-144-64.6-144-144S144.6 48 224 48s144 64.6 144 144-64.6 144-144 144zm80 80H144c-17.7 0-32 14.3-32 32v64h48v-48c0-8.8 7.2-16 16-16s16 7.2 16 16v48h144v-64c0-17.7-14.3-32-32-32zm-32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm16-352H160c-26.5 0-48 21.5-48 48v16c0 53 43 96 96 96h32c53 0 96-43 96-96v-16c0-26.5-21.5-48-48-48zm-84 92l-12 36-12-36-36-12 36-12 12-36 12 36 36 12-36 12z\"]\n};\nvar faUserChart = {\n prefix: 'far',\n iconName: 'user-chart',\n icon: [640, 512, [], \"f6a3\", \"M160 320c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm257 81l72-72 24.3 24.3c11.3 11.3 30.7 3.3 30.7-12.7V108c0-6.6-5.4-12-12-12h-88.5c-16 0-24.1 19.4-12.7 30.7L455 151l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0l-30.7 30.7C285 195 288 209.1 288 224c0 6.8-1 13.4-2 20l42-42 55 55c9.4 9.3 24.6 9.3 34 0zM592 0H208c-26.5 0-48 22.2-48 49.6V96c6.4 0 11.4.6 15.8 1.6 5.4.7 10.7 1.5 15.9 2.9 4.2 1 8.2 2.3 12.2 3.8 1.3.5 2.8.7 4.1 1.3V48h384v320H352v48h240c26.5 0 48-22.2 48-49.6V49.6C640 22.2 618.5 0 592 0zM226.8 342c-9.9 0-19.9 1.5-29.6 4.4C185.4 350 173 352 160 352s-25.4-2-37.2-5.6c-9.7-2.9-19.7-4.4-29.6-4.4-30.2 0-59.7 13.5-76.9 39.1C6 396.4 0 414.8 0 434.7V472c0 22.1 17.9 40 40 40h240c22.1 0 40-17.9 40-40v-37.3c0-19.8-6-38.2-16.3-53.5-17.3-25.7-46.7-39.2-76.9-39.2zM272 464H48v-29.3c0-9.6 2.8-18.8 8.1-26.7 7.5-11.2 21.4-17.9 37.1-17.9 5.3 0 10.6.8 15.6 2.3 16.8 5.1 34 7.7 51.2 7.7s34.4-2.6 51.2-7.7c5.1-1.5 10.3-2.3 15.6-2.3 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7z\"]\n};\nvar faUserCheck = {\n prefix: 'far',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M637 161.1l-19.1-19.2c-4-4.1-10.6-4.1-14.6 0L500.2 245.6l-47.4-47.7c-4-4.1-10.6-4.1-14.6 0L419 217.1c-4 4.1-4 10.6 0 14.7l73.8 74.3c4 4.1 10.6 4.1 14.6 0L637 175.8c4-4 4-10.6 0-14.7zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96zm89.6 256c-28.8 0-42.4 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464z\"]\n};\nvar faUserCircle = {\n prefix: 'far',\n iconName: 'user-circle',\n icon: [496, 512, [], \"f2bd\", \"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\"]\n};\nvar faUserClock = {\n prefix: 'far',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96zM48 464v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 43 0 70.4-12.1 80.7-14.6 1.3-17.1 4.9-33.6 10.4-49.2-31.4-.4-43.1 15.8-91.1 15.8-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h321.4c-15.6-13.7-29-29.9-39.5-48H48zm448-240c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6z\"]\n};\nvar faUserCog = {\n prefix: 'far',\n iconName: 'user-cog',\n icon: [640, 512, [], \"f4fe\", \"M340.3 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 42.6 0 70-11.9 80.1-14.4-.1-7.5-.1-24.8 6.1-49.2-28.6 1.4-40.9 15.6-86.2 15.6-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h342c-19.4-12.9-36.2-29.2-49.7-48zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96zm386.5 325.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5z\"]\n};\nvar faUserCowboy = {\n prefix: 'far',\n iconName: 'user-cowboy',\n icon: [448, 512, [], \"f8ea\", \"M313.59 352c-28.72 0-42.43 16-89.59 16s-60.88-16-89.56-16A134.46 134.46 0 0 0 0 486.41 25.61 25.61 0 0 0 25.59 512H422.4a25.61 25.61 0 0 0 25.6-25.59A134.46 134.46 0 0 0 313.59 352zM50.94 464c9.53-35.3 46.93-64 83.5-64 14.43 0 38.28 16 89.56 16 51.47 0 75.09-16 89.59-16 36.56.05 73.94 28.72 83.47 64zm45.9-280.53c-.22 2.86-.84 5.61-.84 8.53a128 128 0 0 0 256 0c0-2.77-.6-5.36-.79-8.08 69.17-30.06 93.7-77.93 95.13-80.86a16 16 0 0 0-26.44-17.53c-1.92 1.87-22.55 20.59-76.16 33.61C333 69 312.09 0 278.1 0c-10.33 0-19.55 4.45-27.3 10.47a42.41 42.41 0 0 1-52.07 0C191 4.45 181.76 0 171.43 0c-34.08 0-55 69.38-65.73 119.54-55.17-13-75.62-31.87-76-31.87a16 16 0 0 0-27.89 15.71c1.49 2.89 26.85 50.09 95.03 80.09zM224 208a352.41 352.41 0 0 0 79.25-8.57C299.43 240 265.57 272 224 272s-75.52-32.06-79.26-72.72A347.29 347.29 0 0 0 224 208z\"]\n};\nvar faUserCrown = {\n prefix: 'far',\n iconName: 'user-crown',\n icon: [448, 512, [], \"f6a4\", \"M224 288c70.7 0 128-57.31 128-128V0l-64 32-64-32-64 32L96 0v160c0 70.69 57.31 128 128 128zm-80-160h160v32c0 44.11-35.89 80-80 80s-80-35.89-80-80v-32zm169.6 176c-11.04 0-21.78 2.6-32.2 6.24-18 6.28-37.28 9.76-57.4 9.76-20.11 0-39.4-3.48-57.39-9.76-10.42-3.64-21.17-6.24-32.21-6.24C60.17 304 0 364.17 0 438.4V464c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-25.6c0-74.23-60.17-134.4-134.4-134.4zM400 464H48v-25.6c0-47.64 38.76-86.4 86.4-86.4 4.18 0 9.53 1.16 16.38 3.55C174.44 363.81 199.07 368 224 368s49.56-4.19 73.22-12.45c6.85-2.39 12.21-3.55 16.38-3.55 47.64 0 86.4 38.76 86.4 86.4V464z\"]\n};\nvar faUserEdit = {\n prefix: 'far',\n iconName: 'user-edit',\n icon: [640, 512, [], \"f4ff\", \"M358.9 433.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-41.8 41.8 71.8 71.7 41.8-41.8c9.2-9.3 9.2-24.4-.1-33.8zM223.9 288c79.6.1 144.2-64.5 144.1-144.1C367.9 65.6 302.4.1 224.1 0 144.5-.1 79.9 64.5 80 144.1c.1 78.3 65.6 143.8 143.9 143.9zm-4.4-239.9c56.5-2.6 103 43.9 100.4 100.4-2.3 49.2-42.1 89.1-91.4 91.4-56.5 2.6-103-43.9-100.4-100.4 2.3-49.3 42.2-89.1 91.4-91.4zM134.4 352c14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 16.7 0 32.2 5 45.5 13.3l34.4-34.4c-22.4-16.7-49.8-26.9-79.9-26.9-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h258.3c-3.8-14.6-2.2-20.3.9-48H48v-25.6c0-47.6 38.8-86.4 86.4-86.4z\"]\n};\nvar faUserFriends = {\n prefix: 'far',\n iconName: 'user-friends',\n icon: [640, 512, [], \"f500\", \"M480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm0-144c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zM272.1 276c-11.9 0-23.9 1.7-35.5 5.3-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-11.6-3.5-23.6-5.3-35.5-5.3-36.3 0-71.6 16.2-92.3 46.9C7.2 341.3 0 363.4 0 387.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c0-23.8-7.2-45.9-19.6-64.3-20.7-30.7-56-46.9-92.3-46.9zM336 432H48v-44.8c0-28.9 18.4-53.6 44.1-63.1 10.3-3.8 21.6-3.7 31.9 0 22.1 7.9 45 11.9 68 11.9s45.8-4 68.1-11.9c10.3-3.7 21.6-3.8 31.9 0 25.7 9.4 44.1 34.2 44.1 63.1V432zM192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm431.7 237.1C606.4 291.5 577 278 546.8 278c-27.8 0-34.8 10-66.8 10s-39-10-66.8-10c-13.3 0-26.2 3-38.2 8.1 5.8 5.9 11.3 12 16 18.9 4.7 7 8.6 14.4 12 22 3.3-.7 6.7-1.1 10.2-1.1 17.2 0 29.6 10 66.8 10 37.4 0 49.5-10 66.8-10 15.7 0 29.5 6.7 37.1 17.9 5.3 7.9 8.1 17.1 8.1 26.7V400H416v32c0 5.5-.6 10.8-1.6 16H600c22.1 0 40-17.9 40-40v-37.3c0-19.9-6-38.3-16.3-53.6z\"]\n};\nvar faUserGraduate = {\n prefix: 'far',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M13.2 100l6.8 2v37.6c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3v-30.5L90.6 123C84 139.4 80 157.2 80 176c0 79.5 64.5 144 144 144s144-64.5 144-144c0-18.8-4-36.6-10.6-53l77.4-23c17.6-5.2 17.6-34.8 0-40L240.9 2.5C235.3.8 229.7 0 224 0s-11.3.8-16.9 2.5L13.2 60c-17.6 5.2-17.6 34.8 0 40zM224 272c-52.9 0-96-43.1-96-96 0-14.1 3.3-27.3 8.8-39.3l70.4 20.9c14.8 4.4 27.2 2 33.8 0l70.4-20.9c5.5 12 8.8 25.3 8.8 39.3-.2 52.9-43.3 96-96.2 96zm-3.2-223.5c1-.3 3.3-.9 6.5 0L333.5 80l-106.3 31.5c-2.1.6-4.2.7-6.5 0L114.5 80l106.3-31.5zm98.6 272.1L224 400l-95.4-79.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM200 464H48v-9.6c0-40.4 27.9-74.4 66-83.5l86 71.6V464zm200 0H248v-21.5l86-71.6c38.1 9.1 66 43.1 66 83.5v9.6z\"]\n};\nvar faUserHardHat = {\n prefix: 'far',\n iconName: 'user-hard-hat',\n icon: [448, 512, [], \"f82c\", \"M224 272a80.13 80.13 0 0 1-78.38-64h-48c8 63.06 61.17 112 126.39 112s118.44-48.94 126.39-112h-48a80.13 80.13 0 0 1-78.4 64zm89.6 80c-28.72 0-42.45 16-89.6 16s-60.88-16-89.56-16A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM50.94 464a86.58 86.58 0 0 1 83.5-64c14.44 0 38.28 16 89.56 16 51.47 0 75.1-16 89.6-16a86.55 86.55 0 0 1 83.46 64zM88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8c0-46.41-28.53-85.54-68.79-102.42L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.21-54.42C124.53 42.46 96 81.59 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8z\"]\n};\nvar faUserHeadset = {\n prefix: 'far',\n iconName: 'user-headset',\n icon: [448, 512, [], \"f82d\", \"M320 352h-4.7c-12.15 0-24 2.9-35.5 6.8a173.73 173.73 0 0 1-111.63 0c-11.49-3.9-23.3-6.78-35.43-6.78H128A128 128 0 0 0 0 480a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32 128 128 0 0 0-128-128zM49.61 464A80.14 80.14 0 0 1 128 400h4.74c5.12 0 11.49 1.35 20 4.24a221.75 221.75 0 0 0 142.42 0c8.6-2.91 15-4.27 20.11-4.27H320a80.14 80.14 0 0 1 78.39 64zm5.72-240a23.36 23.36 0 0 0 23.34-23.33V192c0-80.14 65.19-145.33 145.33-145.33S369.33 111.86 369.33 192v12.67a68.74 68.74 0 0 1-68.66 68.66h-23.5a38.74 38.74 0 0 0-37.84-30.66h-30.66a38.67 38.67 0 1 0 0 77.33h92A115.46 115.46 0 0 0 416 204.67V192C416 86.13 329.87 0 224 0S32 86.13 32 192v8.67A23.36 23.36 0 0 0 55.33 224zM224 128a64.07 64.07 0 0 1 64 64 63.21 63.21 0 0 1-8.76 31.73c7 4.86 13.41 10.55 18.29 17.6h3.14c12.69 0 23.35-6.88 29.94-16.71 3.18-10.39 5.39-21.19 5.39-32.62a112 112 0 0 0-224 0c0 28.2 10.78 53.66 28 73.35a70.73 70.73 0 0 1 28.54-42.05A63.22 63.22 0 0 1 160 192a64.07 64.07 0 0 1 64-64z\"]\n};\nvar faUserInjured = {\n prefix: 'far',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M224 288c79.53 0 144-64.47 144-144S303.53 0 224 0 80 64.47 80 144s64.47 144 144 144zm82.64-192h-66.65l39.77-29.83c10.99 7.9 20.04 18.1 26.88 29.83zM224 48c7.85 0 15.37 1.21 22.68 3l-60 45h-45.32c16.65-28.55 47.27-48 82.64-48zm-94.38 80h188.77c.89 5.23 1.62 10.52 1.62 16 0 52.93-43.06 96-96 96-52.93 0-96-43.07-96-96-.01-5.48.72-10.77 1.61-16zM313.6 304c-11.04 0-21.78 2.6-32.2 6.24-18 6.28-37.28 9.76-57.4 9.76-20.11 0-39.4-3.48-57.39-9.76-10.42-3.64-21.17-6.24-32.21-6.24C60.17 304 0 364.17 0 438.4V464c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-25.6c0-74.23-60.17-134.4-134.4-134.4zM80 464H48v-25.6c0-26.92 12.63-50.71 32-66.57V464zm32 0V355.32c7.19-1.95 14.61-3.32 22.4-3.32 4.18 0 9.53 1.16 16.38 3.55 1.46.51 2.99.67 4.46 1.15L202.93 464H112zm171.08 0h-45.12l-21.33-48H256c17.66 0 32 14.36 32 32 0 5.95-2.07 11.22-4.92 16zM400 464h-82.27c1.34-5.14 2.27-10.44 2.27-16 0-35.3-28.72-64-64-64h-53.6l-8.23-18.52c9.88 1.35 19.8 2.52 29.83 2.52 24.93 0 49.56-4.19 73.22-12.45 6.85-2.39 12.21-3.55 16.38-3.55 47.64 0 86.4 38.76 86.4 86.4V464z\"]\n};\nvar faUserLock = {\n prefix: 'far',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M496 432a32 32 0 1 0-32-32 32 32 0 0 0 32 32zm-192 32H48v-25.6a86.55 86.55 0 0 1 86.4-86.4c14.6 0 38.3 16 89.6 16 42.3 0 69.5-11.7 80-14.4V320a83.12 83.12 0 0 1 1.5-15.1c-26.2 2.9-40 15.1-81.5 15.1-47.1 0-60.8-16-89.6-16A134.43 134.43 0 0 0 0 438.4V464a48 48 0 0 0 48 48h262.8c-7.9-18-6.8-30.7-6.8-48zm304-176h-32v-48a80 80 0 0 0-160 0v48h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zm-144-48a32 32 0 0 1 64 0v48h-64zm128 224H400V336h192zM224 0a144 144 0 1 0 144 144A144 144 0 0 0 224 0zm0 240a96 96 0 1 1 96-96 96.15 96.15 0 0 1-96 96z\"]\n};\nvar faUserMd = {\n prefix: 'far',\n iconName: 'user-md',\n icon: [448, 512, [], \"f0f0\", \"M224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96zm89.6 256c-11 0-21.8 2.6-32.2 6.2-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-10.4-3.6-21.2-6.2-32.2-6.2C60.2 304 0 364.2 0 438.4V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-49.6c0-45.5 35.4-82.4 80-85.8v50c-23.1 6.9-40 28.1-40 53.4 0 30.9 25.1 56 56 56s56-25.1 56-56c0-25.3-16.9-46.5-40-53.4v-44.7c20.8 6.3 42.3 10.1 64 10.1 21.8 0 43.2-3.8 64-10.1v36.3c-28.2 7.5-48 34.5-48 64.6V488c0 4.2 1.7 8.3 4.7 11.3l10.3 10.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.1 3.1-8.2 0-11.3l-5.7-5.7V456c0-19.4 17.4-34.8 37.4-31.6 15.7 2.6 26.6 17.4 26.6 33.3v23.6l-5.7 5.7c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l10.3-10.3c3-3 4.7-7.1 4.7-11.3v-32c0-29.7-20.5-54.5-48-61.6v-41.7c44.6 3.3 80 40.3 80 85.8V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-49.6c.2-74.2-60-134.4-134.2-134.4zM168 456c0 13.3-10.7 24-24 24s-24-10.7-24-24 10.7-24 24-24 24 10.7 24 24z\"]\n};\nvar faUserMdChat = {\n prefix: 'far',\n iconName: 'user-md-chat',\n icon: [640, 512, [], \"f82e\", \"M512 0c-70.69 0-128 50.14-128 112 0 28.76 12.75 54.72 33.11 74.55a312.08 312.08 0 0 1-31.29 55.37 9.86 9.86 0 0 0-1.25 9.07c1.09 3.13 3.43 5 6.11 5 39.84 0 72.35-17.14 95.22-34.36A146 146 0 0 0 512 224c70.69 0 128-50.14 128-112S582.69 0 512 0zM224 288A144 144 0 1 0 80 144a144 144 0 0 0 144 144zm0-240a96 96 0 1 1-96 96 96.15 96.15 0 0 1 96-96zm89.6 256c-11 0-21.8 2.6-32.2 6.2a173 173 0 0 1-114.8 0c-10.4-3.6-21.2-6.2-32.2-6.2A134.43 134.43 0 0 0 0 438.4V488a24 24 0 0 0 48 0v-49.6c0-45.5 35.4-82.4 80-85.8v50a56 56 0 1 0 32 0v-44.7c20.8 6.3 42.3 10.1 64 10.1s43.2-3.8 64-10.1v36.3c-28.2 7.5-48 34.5-48 64.6V488a16.06 16.06 0 0 0 4.7 11.3l10.3 10.3a8 8 0 0 0 11.3 0l11.3-11.3a8 8 0 0 0 0-11.3l-5.7-5.7V456a32.14 32.14 0 0 1 37.4-31.6c15.7 2.6 26.6 17.4 26.6 33.3v23.6l-5.7 5.7a8 8 0 0 0 0 11.3l11.3 11.3a8 8 0 0 0 11.3 0l10.3-10.3a16.06 16.06 0 0 0 4.7-11.3v-32a63.8 63.8 0 0 0-48-61.6v-41.7c44.6 3.3 80 40.3 80 85.8V488a24 24 0 0 0 48 0v-49.6c.2-74.2-60-134.4-134.2-134.4zM168 456a24 24 0 1 1-24-24 23.94 23.94 0 0 1 24 24z\"]\n};\nvar faUserMinus = {\n prefix: 'far',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M624 216H432c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-310.4 88c-28.8 0-42.4 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z\"]\n};\nvar faUserMusic = {\n prefix: 'far',\n iconName: 'user-music',\n icon: [640, 512, [], \"f8eb\", \"M598.36 97.51l-112 35.38A32 32 0 0 0 464 163.36v203.12c-18.16-9.07-40.16-14.48-64-14.48-61.86 0-112 35.82-112 80s50.14 80 112 80 112-35.82 112-80V291.36L617.64 258A32 32 0 0 0 640 227.48V128a32 32 0 0 0-41.64-30.49zM400 464c-39.7 0-64-20.72-64-32s24.3-32 64-32 64 20.72 64 32-24.3 32-64 32zm192-248.25L512 241v-65.88l80-25.26zM262.46 464H48v-25.59A86.56 86.56 0 0 1 134.41 352c14.59 0 38.28 16 89.59 16 32.8 0 54.08-6.42 69.05-11.13 21.76-18.79 51.57-31.47 85.83-35.26-19.41-10.88-41.46-17.61-65.29-17.61-28.68 0-42.5 16-89.59 16s-60.81-16-89.59-16A134.43 134.43 0 0 0 0 438.41V464a48 48 0 0 0 48 48h250.42a107.94 107.94 0 0 1-35.96-48zM224 288A144 144 0 1 0 80 144a144 144 0 0 0 144 144zm0-240a96 96 0 1 1-96 96 96.14 96.14 0 0 1 96-96z\"]\n};\nvar faUserNinja = {\n prefix: 'far',\n iconName: 'user-ninja',\n icon: [448, 512, [], \"f504\", \"M32 208c21 0 40.3-6.9 56.1-18.4 19.1 57 72.4 98.4 135.9 98.4 79.5 0 144-64.5 144-144S303.5 0 224 0C169.5 0 122.6 30.7 98.1 75.4 80.9 58.7 57.9 48 32 48c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zM224 48c35.4 0 66 19.4 82.6 48H141.4C158 67.4 188.6 48 224 48zm96 96c0 52.9-43.1 96-96 96s-96-43.1-96-96h192zm5.4 145.2L224 368l-101.4-78.8C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM200 464H48v-41.6c0-38.9 25.7-71.8 61.9-82.2l90.1 70V464zm200 0H248v-53.9l90.1-70c36.3 10.5 61.9 43.3 61.9 82.2V464z\"]\n};\nvar faUserNurse = {\n prefix: 'far',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M224,303A128,128,0,0,0,352,175V64.82a32,32,0,0,0-20.76-30L246.47,3.07a64,64,0,0,0-44.94,0L116.76,34.86A32,32,0,0,0,96,64.82V175A128,128,0,0,0,224,303ZM184,70.67a5,5,0,0,1,5-5h21.67V44a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V65.67H259a5,5,0,0,1,5,5V87.33a5,5,0,0,1-5,5H237.33V114a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V92.33H189a5,5,0,0,1-5-5ZM144,159H304v16a80,80,0,0,1-160,0ZM319.41,319,224,414.39,128.59,319C57.09,322.09,0,380.59,0,452.8A58.23,58.23,0,0,0,58.2,511H389.8A58.23,58.23,0,0,0,448,452.8C448,380.59,390.91,322.09,319.41,319ZM58.2,463A10.22,10.22,0,0,1,48,452.8c0-36.36,28.5-73.5,63.61-82.91L204.72,463Zm331.6,0H243.28l93.11-93.11C371.5,379.3,400,416.44,400,452.8A10.22,10.22,0,0,1,389.8,463Z\"]\n};\nvar faUserPlus = {\n prefix: 'far',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96zm89.6 256c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zm224-248h-72v-72c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v72h-72c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h72v72c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-72h72c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16z\"]\n};\nvar faUserRobot = {\n prefix: 'far',\n iconName: 'user-robot',\n icon: [448, 512, [], \"e04b\", \"M272,208a32,32,0,1,0-32-32A31.99783,31.99783,0,0,0,272,208Zm-64,64h32V240H208Zm64,0h32V240H272Zm103.48828,35.23633A79.15715,79.15715,0,0,0,384,272V256h29.99955A17.97977,17.97977,0,0,0,432,238V178a17.97853,17.97853,0,0,0-18.00045-18H384V144a79.999,79.999,0,0,0-80-80H248V24a24,24,0,0,0-48,0V64H144a79.999,79.999,0,0,0-80,80v16H33.99956A17.97834,17.97834,0,0,0,16,178v60a17.97958,17.97958,0,0,0,17.99956,18H64v16a79.15715,79.15715,0,0,0,8.51172,35.23633C30.91406,317.75977,0,355.13086,0,400v48a64.00067,64.00067,0,0,0,64,64H384a64.00067,64.00067,0,0,0,64-64V400C448,355.13086,417.08594,317.75977,375.48828,307.23633ZM112,144a32.03667,32.03667,0,0,1,32-32H304a32.03667,32.03667,0,0,1,32,32V272a32.03667,32.03667,0,0,1-32,32H144a32.03667,32.03667,0,0,1-32-32Zm96,320H176V432a16,16,0,0,1,32,0Zm64-16a16,16,0,1,1,16-16A16.00079,16.00079,0,0,1,272,448Zm128,0a16.01833,16.01833,0,0,1-16,16H320V416a31.99908,31.99908,0,0,0-32-32H160a31.99908,31.99908,0,0,0-32,32v48H64a16.01833,16.01833,0,0,1-16-16V400a48.055,48.055,0,0,1,48-48H352a48.055,48.055,0,0,1,48,48ZM176,208a32,32,0,1,0-32-32A31.99783,31.99783,0,0,0,176,208Zm0,32H144v32h32Z\"]\n};\nvar faUserSecret = {\n prefix: 'far',\n iconName: 'user-secret',\n icon: [448, 512, [], \"f21b\", \"M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-33.6c5.4-15.1 8.8-31.1 8.8-48 0-6.6-.7-13.1-1.6-19.4C397.1 149 416 139 416 128c0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8C299.1 4.3 289.7 0 280.1 0c-4.8 0-9.7 1.1-14.3 3.4C236 18.3 233.5 20.5 224 20.5s-12.3-2.4-41.9-17.2c-4.6-2.3-9.4-3.4-14.3-3.4-9.6 0-18.9 4.3-25.2 12.2-13.5 17-31.4 50-40.6 82.8-42.7 8-70 19.8-70 33.1 0 11 18.9 21 49.6 28.6-1 6.4-1.6 12.8-1.6 19.4 0 16.9 3.5 32.9 8.8 48H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM173 52.5c16.2 8.1 29 16 51 16 21.8 0 34.8-7.9 51-16 19 30.4 25.7 59.2 27.7 66.2-21.8 2.4-48.1 3.9-78.7 3.9s-56.8-1.6-78.7-3.9c2-7.1 8.7-35.8 27.7-66.2zM183.5 464H48v-41.6c0-30.8 16.2-58.6 43.5-74.3l36.8-21.3-23.5-54.8h12.6c17 18.9 38.8 32.9 63.6 40.7l27 47.3zm-55.6-287.9c.1-.2.1-.3.1-.4.1.1 5.5 3.2 6.3 5.8 3.9 11.9 7 24.6 16.5 33.4 8 7.4 47 25.1 64-25 2.8-8.4 15.4-8.4 18.3 0 16 47.4 53.9 34.4 64 25 9.5-8.8 12.7-21.5 16.5-33.4.8-2.5 6.2-5.6 6.3-5.7v.3c0 52.9-43.1 96-96 96s-96-43.1-96-96zM264.5 464L240 360l27-47.3c24.8-7.8 46.6-21.9 63.6-40.7h15.7l-21.5 56.3 33.8 20.8c25.9 16 41.3 43.4 41.3 73.2V464z\"]\n};\nvar faUserShield = {\n prefix: 'far',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM356.2 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 47.1 0 70.9-13.5 85.4-15.5-2.9-15.2-4.6-31-5.1-47.5-25.6 3.2-39.5 15-80.4 15-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h351.3c-15.5-13.7-30.2-29.7-43.1-48zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z\"]\n};\nvar faUserSlash = {\n prefix: 'far',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M634 471L36 3.5C29.1-2 19-.9 13.5 6l-10 12.5C-2 25.4-.9 35.5 6 41l598 467.5c6.9 5.5 17 4.4 22.5-2.5l10-12.5c5.5-6.9 4.4-17-2.5-22.5zM320 48c52.9 0 96 43.1 96 96 0 28.1-12.4 53.3-31.8 70.8l38.4 30c25.5-26 41.4-61.5 41.4-100.8C464 64.5 399.5 0 320 0c-51.9 0-97 27.7-122.4 68.9l38.2 29.9C252.1 68.7 283.5 48 320 48zM144 464v-25.6c0-47.6 38.8-86.4 86.4-86.4 4.2 0 9.5 1.2 16.4 3.6 23.7 8.3 48.3 12.4 73.2 12.4 8 0 15.9-1.1 23.8-2l-66.4-51.9c-4.9-1.3-10-2.2-14.8-3.8-10.4-3.6-21.2-6.2-32.2-6.2C156.2 304 96 364.2 96 438.4V464c0 26.5 21.5 48 48 48h352c9.3 0 17.9-2.8 25.2-7.3l-52-40.7H144z\"]\n};\nvar faUserTag = {\n prefix: 'far',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zM48 463.8v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 7.7 0 15.1 1.3 22.2 3.3v-49c-7.3-1.2-14.6-2.2-22.2-2.2-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 303.9 0 364 0 438.3v25.6c0 26.5 21.5 48 48 48h352c9.7 0 18.7-2.9 26.3-7.9l-40.1-40.1H48zm176-175.9c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.4 80 144c0 79.5 64.5 143.9 144 143.9zM224 48c52.9 0 96 43 96 96 0 52.9-43.1 96-96 96s-96-43.1-96-96c0-53 43.1-96 96-96z\"]\n};\nvar faUserTie = {\n prefix: 'far',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96zm91.9 256.2l-56.5 154.5L240 376l32-56h-96l32 56-19.5 82.7L132 304.2C58.9 305.5 0 365 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-73.4-58.9-132.9-132.1-134.2zM96 464H48v-25.6c0-35.4 21.9-66.2 53-79.4l38.4 105H96zm304 0h-91.3L347 359c31 13.2 53 44 53 79.4V464z\"]\n};\nvar faUserTimes = {\n prefix: 'far',\n iconName: 'user-times',\n icon: [640, 512, [], \"f235\", \"M593.9 240l41.4-41.4c6.2-6.2 6.2-16.4 0-22.6L624 164.7c-6.2-6.2-16.4-6.2-22.6 0L560 206.1l-41.4-41.4c-6.2-6.2-16.4-6.2-22.6 0L484.7 176c-6.2 6.2-6.2 16.4 0 22.6l41.4 41.4-41.4 41.4c-6.2 6.2-6.2 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l41.4-41.4 41.4 41.4c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L593.9 240zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96zm89.6 256c-28.8 0-42.4 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464z\"]\n};\nvar faUserUnlock = {\n prefix: 'far',\n iconName: 'user-unlock',\n icon: [640, 512, [], \"e058\", \"M224,0A144,144,0,1,0,368,144,144,144,0,0,0,224,0Zm0,240a96,96,0,1,1,96-96A96,96,0,0,1,224,240Zm80,224H48V438.4A86.55,86.55,0,0,1,134.4,352c14.6,0,38.3,16,89.6,16,42.3,0,69.5-11.7,80-14.4V320a83.2,83.2,0,0,1,1.5-15.1c-26.2,2.9-40,15.1-81.5,15.1-47.1,0-60.8-16-89.6-16A134.43,134.43,0,0,0,0,438.4V464a48,48,0,0,0,48,48H310.8C302.9,494,304,481.3,304,464ZM608,288H464V208.67c0-17.44,13.67-32.18,31.1-32.66A32,32,0,0,1,528,208a16,16,0,0,0,16,16h17a15,15,0,0,0,15-15h0c0-43.28-34-79.51-77.26-80.95A80,80,0,0,0,416,208v80H384a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H608a32,32,0,0,0,32-32V320A32,32,0,0,0,608,288ZM592,464H400V336H592Zm-96-32a32,32,0,1,0-32-32A32,32,0,0,0,496,432Z\"]\n};\nvar faUserVisor = {\n prefix: 'far',\n iconName: 'user-visor',\n icon: [448, 512, [], \"e04c\", \"M313.59375,304c-28.6875,0-42.5,16-89.59375,16s-60.8125-16-89.59375-16A134.43133,134.43133,0,0,0,0,438.40625V464a48.01238,48.01238,0,0,0,48,48H400a48.01238,48.01238,0,0,0,48-48V438.40625A134.43133,134.43133,0,0,0,313.59375,304ZM400,464H48V438.40625A86.55945,86.55945,0,0,1,134.40625,352C149,352,172.6875,368,224,368c51.6875,0,74.90625-16,89.59375-16A86.55945,86.55945,0,0,1,400,438.40625ZM322.44141,362.66406a3.53,3.53,0,0,0-2.69532,1.23633c-17.61132,20.42969-28.27734,47.19531-31.72265,79.55664a3.55509,3.55509,0,0,0,5.72265,3.18164c22.084-17.18164,30-21.168,32.918-22.05664a5.98,5.98,0,0,1,1.22266-.334c2.332,2.07031,7.27734,7.627,17.666,22.252a3.51185,3.51185,0,0,0,2.88868,1.5,3.63354,3.63354,0,0,0,1.14062-.18164,3.56782,3.56782,0,0,0,2.416-3.48633c-1.02735-31.40234-10.02735-58.4043-26.72266-80.26562A4.00227,4.00227,0,0,0,322.44141,362.66406ZM88.33789,190.45312C107.73828,247.05078,160.82422,288,224,288s116.26172-40.94922,135.66211-97.54688C373.52734,186.94336,384,174.95508,384,160V96a31.99908,31.99908,0,0,0-32-32h-8.31641a143.90751,143.90751,0,0,0-239.36718,0H96A31.99908,31.99908,0,0,0,64,96v64C64,174.95508,74.47266,186.94336,88.33789,190.45312ZM224,240c-35.37305,0-65.99023-19.44531-82.64453-48H306.64453C289.99023,220.55469,259.37305,240,224,240Zm0-192a95.35439,95.35439,0,0,1,52.86719,16H171.13281A95.35439,95.35439,0,0,1,224,48ZM112,112H336v32H112Z\"]\n};\nvar faUsers = {\n prefix: 'far',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M544 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm396.4 210.9c-27.5-40.8-80.7-56-127.8-41.7-14.2 4.3-29.1 6.7-44.7 6.7s-30.5-2.4-44.7-6.7c-47.1-14.3-100.3.8-127.8 41.7-12.4 18.4-19.6 40.5-19.6 64.3V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-44.8c.2-23.8-7-45.9-19.4-64.3zM464 432H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 25.5 10.6 51.9 16 78.6 16 26.7 0 53.1-5.4 78.6-16 36.2 1 65.4 30.7 65.4 67.2V432zm92-176h-24c-17.3 0-33.4 5.3-46.8 14.3 13.4 10.1 25.2 22.2 34.4 36.2 3.9-1.4 8-2.5 12.3-2.5h24c19.8 0 36 16.2 36 36 0 13.2 10.8 24 24 24s24-10.8 24-24c.1-46.3-37.6-84-83.9-84zm-236 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm0-176c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2z\"]\n};\nvar faUsersClass = {\n prefix: 'far',\n iconName: 'users-class',\n icon: [640, 512, [], \"f63d\", \"M80 48h480v133.62c17.64 2.56 34.01 8.91 48 18.71V49.59C608 22.25 586.47 0 560 0H80C53.53 0 32 22.25 32 49.59v150.73c13.99-9.8 30.36-16.15 48-18.71V48zm28 356H84c-46.31 0-84 37.69-84 84 0 13.25 10.75 24 24 24s24-10.75 24-24c0-19.84 16.16-36 36-36h24c19.84 0 36 16.16 36 36 0 13.25 10.75 24 24 24s24-10.75 24-24c0-46.31-37.69-84-84-84zm436-192c-44.18 0-80 35.82-80 80s35.82 80 80 80 80-35.82 80-80-35.82-80-80-80zm0 112c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm12 80h-24c-46.31 0-84 37.69-84 84 0 13.25 10.75 24 24 24s24-10.75 24-24c0-19.84 16.16-36 36-36h24c19.84 0 36 16.16 36 36 0 13.25 10.75 24 24 24s24-10.75 24-24c0-46.31-37.69-84-84-84zM96 372c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80zm0-112c17.64 0 32 14.36 32 32s-14.36 32-32 32-32-14.36-32-32 14.36-32 32-32zm144 32c0 44.18 35.82 80 80 80s80-35.82 80-80-35.82-80-80-80-80 35.82-80 80zm112 0c0 17.64-14.36 32-32 32s-32-14.36-32-32 14.36-32 32-32 32 14.36 32 32zm-20 112h-24c-46.31 0-84 37.69-84 84 0 13.25 10.75 24 24 24s24-10.75 24-24c0-19.84 16.16-36 36-36h24c19.84 0 36 16.16 36 36 0 13.25 10.75 24 24 24s24-10.75 24-24c0-46.31-37.69-84-84-84z\"]\n};\nvar faUsersCog = {\n prefix: 'far',\n iconName: 'users-cog',\n icon: [640, 512, [], \"f509\", \"M315.3 255.5c6.8-19 16.4-36.5 28.4-52.2-7.4 3-15.4 4.7-23.8 4.7-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64c0 8.4-1.7 16.4-4.7 23.8 15.7-12 33.2-21.7 52.2-28.4C429 79.7 380.3 32 320 32c-61.9 0-112 50.1-112 112 0 60.3 47.7 109 107.3 111.5zM96 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zm0-112c17.6 0 32 14.4 32 32s-14.4 32-32 32-32-14.4-32-32 14.4-32 32-32zm244.3 320H176v-44.8c0-36.4 29.2-66.2 65.4-67.2 20.6 8.6 41.9 13.6 63.4 15.2-.7-9.3-2-24 2.3-48.6-16.8-1.5-33.1-4.9-48-11.2-5.1-2.1-10.4-3.4-15.9-3.4-63.6 0-115.2 51.6-115.2 115.2V432c0 26.5 21.5 48 48 48h214c-19.4-12.9-36.2-29.2-49.7-48zM154.8 270.3c-13.4-9-29.5-14.3-46.8-14.3H84c-46.3 0-84 37.7-84 84 0 13.2 10.8 24 24 24s24-10.8 24-24c0-19.8 16.2-36 36-36h24c4.4 0 8.5 1.1 12.3 2.5 9.3-14 21.1-26.1 34.5-36.2zm455.7 71c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5z\"]\n};\nvar faUsersCrown = {\n prefix: 'far',\n iconName: 'users-crown',\n icon: [640, 512, [], \"f6a5\", \"M556 256h-24c-17.3 0-33.39 5.27-46.77 14.28 13.37 10.14 25.18 22.18 34.43 36.22 3.88-1.44 7.96-2.5 12.34-2.5h24c19.84 0 36 16.16 36 36 0 13.25 10.75 24 24 24s24-10.75 24-24c0-46.31-37.69-84-84-84zm-12-32c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80zm0-112c17.64 0 32 14.36 32 32s-14.36 32-32 32-32-14.36-32-32 14.36-32 32-32zM154.77 270.28C141.39 261.27 125.3 256 108 256H84c-46.31 0-84 37.69-84 84 0 13.25 10.75 24 24 24s24-10.75 24-24c0-19.84 16.16-36 36-36h24c4.37 0 8.46 1.06 12.34 2.5 9.25-14.04 21.06-26.08 34.43-36.22zM96 224c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80zm0-112c17.64 0 32 14.36 32 32s-14.36 32-32 32-32-14.36-32-32 14.36-32 32-32zm268.66 169.28c-14.16 4.3-29.1 6.72-44.66 6.72s-30.5-2.42-44.66-6.72c-47.08-14.3-100.29.84-127.77 41.66C135.21 341.3 128 363.41 128 387.2V432c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-44.8c0-23.79-7.21-45.9-19.57-64.25-27.48-40.82-80.69-55.97-127.77-41.67zM464 432H176v-44.8c0-36.44 29.16-66.2 65.38-67.18C266.88 330.63 293.32 336 320 336c26.67 0 53.11-5.37 78.62-15.98C434.84 321 464 350.76 464 387.2V432zM320 256c61.86 0 112-50.14 112-112V32l-56 28-56-28-56 28-56-28v112c0 61.86 50.14 112 112 112zm-64-128h128v16c0 35.29-28.71 64-64 64s-64-28.71-64-64v-16z\"]\n};\nvar faUsersMedical = {\n prefix: 'far',\n iconName: 'users-medical',\n icon: [640, 512, [], \"f830\", \"M512 224a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm64 144a5.33 5.33 0 0 1-5.33 5.33h-37.34v37.34A5.33 5.33 0 0 1 528 416h-32a5.33 5.33 0 0 1-5.33-5.33v-37.34h-37.34A5.33 5.33 0 0 1 448 368v-32a5.33 5.33 0 0 1 5.33-5.33h37.34v-37.34A5.33 5.33 0 0 1 496 288h32a5.33 5.33 0 0 1 5.33 5.33v37.34h37.34A5.33 5.33 0 0 1 576 336zM320 256a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112zm0-176a64 64 0 1 1-64 64 64.06 64.06 0 0 1 64-64zM96 224a80 80 0 1 0-80-80 80 80 0 0 0 80 80zm0-112a32 32 0 1 1-32 32 32.09 32.09 0 0 1 32-32zm278.26 320H176v-44.8a67.38 67.38 0 0 1 65.4-67.2 203.8 203.8 0 0 0 78.6 16 198.4 198.4 0 0 0 33.94-3.14 157.56 157.56 0 0 1 16-52.84c-1.76.45-3.56.65-5.3 1.18a152.46 152.46 0 0 1-89.4 0c-47.1-14.3-100.3.8-127.8 41.7a114.59 114.59 0 0 0-19.6 64.3V432a48 48 0 0 0 48 48H417a160.27 160.27 0 0 1-42.74-48zM154.8 270.3A83.7 83.7 0 0 0 108 256H84a84.12 84.12 0 0 0-84 84 24 24 0 0 0 48 0 36.11 36.11 0 0 1 36-36h24a35.48 35.48 0 0 1 12.3 2.5 148.37 148.37 0 0 1 34.5-36.2z\"]\n};\nvar faUsersSlash = {\n prefix: 'far',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M556.09,256h-24a83.66,83.66,0,0,0-46.79,14.29,146.29,146.29,0,0,1,34.39,36.21A36.21,36.21,0,0,1,532,304h24a36.11,36.11,0,0,1,36,36,24,24,0,0,0,48,0A84,84,0,0,0,556.09,256Zm-236-176A63.78,63.78,0,0,1,358.6,194.79L397.19,225a111.81,111.81,0,0,0-77.1-193c-41.75,0-77.7,23.06-97,56.88l38.21,29.87A64,64,0,0,1,320.09,80Zm224,144a80,80,0,1,0-80-80A80,80,0,0,0,544.09,224Zm0-112a32,32,0,1,1-32,32A32.1,32.1,0,0,1,544.09,112Zm-368,320V387.2A67.38,67.38,0,0,1,241.5,320a206.08,206.08,0,0,0,62.92,15.2l-74.84-58.51C197,279.44,166.26,295,147.5,322.9a114.5,114.5,0,0,0-19.61,64.3V432a48,48,0,0,0,48,48h288a47.59,47.59,0,0,0,20-4.49L428.23,432Zm-21.2-161.71A83.67,83.67,0,0,0,108.09,256h-24a84.12,84.12,0,0,0-84,84,24,24,0,0,0,48,0,36.11,36.11,0,0,1,36-36h24a35.2,35.2,0,0,1,12.3,2.5A148.78,148.78,0,0,1,154.89,270.29ZM96.09,224a79.47,79.47,0,0,0,46.63-15.21L99.81,175.24c-1.28.16-2.4.76-3.72.76-16.19,0-29.15-12.39-31.19-28.06l-43-33.6A79.75,79.75,0,0,0,96.09,224ZM36,3.52A16,16,0,0,0,13.51,6l-10,12.49A16,16,0,0,0,6,41L604,508.48A16,16,0,0,0,626.48,506l10-12.49A16,16,0,0,0,634,471Z\"]\n};\nvar faUtensilFork = {\n prefix: 'far',\n iconName: 'utensil-fork',\n icon: [512, 512, [], \"f2e3\", \"M457.4 107.3c-6.3-24.8-28.9-46.7-52.7-52.8-10.2-39.8-60-70.8-97.6-45.2C294 18.1 230.8 60.9 207 84.8c-41.3 41.3-51.2 96.4-34.6 145.5L18.2 368.2c-23.5 21-24.3 57.5-1.9 79.9l47.6 47.6c22.6 22.6 59.1 21.4 79.9-1.9l137.9-154.3c51.5 17.4 105.9 5 145.5-34.6 23.8-23.8 66.5-86.9 75.3-100.1 26.4-38.4-6.6-87.7-45.1-97.5zm5.5 70.6s-47.8 71.3-69.7 93.1c-34.3 34.3-82.6 37-123.2 9.5L108 461.9c-2.5 2.9-7.2 2.9-10.2-.1l-47.6-47.6c-2.9-2.9-3-7.6-.1-10.2l181.4-162c-27.2-40.1-25.2-88.5 9.5-123.2 21.9-21.9 93.1-69.7 93.1-69.7 8.5-6 29.6 15.3 23.2 23.6l-90.1 90.1c-7.7 9.2 13.8 31 23.2 23.6l96.4-84.7c8.4-5.9 29.3 15 23.4 23.4l-84.7 96.4c-7.4 9.4 14.4 31 23.6 23.2l90.1-90.1c8.4-6.3 29.8 14.7 23.7 23.3z\"]\n};\nvar faUtensilKnife = {\n prefix: 'far',\n iconName: 'utensil-knife',\n icon: [512, 512, [], \"f2e4\", \"M463.3 16.6c-22.1-21.1-57-22.7-79-1.7L16.7 365.1c-23.2 22.1-21.9 59.1 1.8 81.7l51 48.6c23.9 22.8 61.4 22.2 82.4-1.9l122.6-140.7c66.4 8.2 128.1-.7 176.4-46.6C492 266.9 512 210.7 512 152.6c0-47.5-14.2-103.1-48.7-136zm-45.6 254.7c-43.7 41.6-103 40.6-162.1 30L115.7 461.9c-2.9 3.4-9.1 2.5-13.1-1.3l-51-48.5c-3.9-3.8-4.8-9.3-1.8-12.2L417.4 49.7c3-2.8 8.8-2.1 12.8 1.7 40.6 38.7 53.7 157-12.5 219.9z\"]\n};\nvar faUtensilSpoon = {\n prefix: 'far',\n iconName: 'utensil-spoon',\n icon: [512, 512, [], \"f2e5\", \"M474.4 37.5c-64-64-180.7-39.7-245.2 24.8-45 45.1-57.9 98.1-40.5 153.4L18.8 368.2c-24.2 21.7-25.3 59.4-2.2 82.5l44.7 44.7c23.3 23.3 61 21.7 82.5-2.2l152.4-169.9c53.8 16.9 107.1 5.8 153.4-40.5 63.4-63.5 89.7-180.4 24.8-245.3zm-58.7 211.2c-40.3 40.3-82.9 43-132.5 17.1L108 461.1c-3.3 3.7-9.2 4-12.8.3l-44.7-44.7c-3.6-3.6-3.4-9.4.3-12.8L246 228.7c-24.2-46.5-25.3-90.1 17.1-132.5 48.3-48.3 135.1-67 177.3-24.8 44 43.9 21.1 131.5-24.7 177.3z\"]\n};\nvar faUtensils = {\n prefix: 'far',\n iconName: 'utensils',\n icon: [544, 512, [], \"f2e7\", \"M288 157.5c0-30.5-12.9-97.8-15.6-111.7C267.5 20.1 244.1 0 210.6 0c-11.4 0-23.1 2.4-33.3 7.8C167.3 2.5 155.5 0 144 0c-11.5 0-23.3 2.5-33.3 7.8C100.6 2.4 88.8 0 77.4 0 44.1 0 20.5 19.9 15.6 45.8 12.9 59.6 0 126.9 0 157.5c0 52.7 28.2 94.8 69.8 116.7L59.6 454.9c-1.8 31 23.1 57.1 54.4 57.1h60c31.3 0 56.2-26.1 54.4-57.1l-10.2-180.8c41.4-21.7 69.8-63.8 69.8-116.6zm-119.7 83.6l12.2 216.5c.2 3.4-2.7 6.4-6.5 6.4h-60c-3.7 0-6.7-2.9-6.5-6.4l12.2-216.5C77.3 233 48 201.3 48 157.5c0-27.6 14.8-102.7 14.8-102.7 1.6-9.2 28.3-9 29.5.2v113.7c.9 10.6 28.2 10.8 29.5.2l7.4-114.1c1.6-9 27.9-9 29.5 0l7.4 114.1c1.3 10.6 28.6 10.4 29.5-.2V55c1.2-9.2 27.9-9.4 29.5-.2 0 0 14.8 75.1 14.8 102.7.1 43.6-29 75.4-71.6 83.6zm221.2 69.5l-13.3 142.5c-2.9 31.6 22.7 58.9 55.8 58.9h56c30.9 0 56-24.2 56-54V54c0-29.8-25.1-54-56-54-71.8 0-168 83-168 181.7 0 60.4 35 101.2 69.5 128.9zM368 181.7C368 109.1 443.4 48 488 48c4.3 0 8 2.8 8 6v404c0 3.3-3.7 6-8 6h-56c-4.6 0-8.3-3-8-6.4l15.8-169.5c-39.6-27-71.8-59-71.8-106.4z\"]\n};\nvar faUtensilsAlt = {\n prefix: 'far',\n iconName: 'utensils-alt',\n icon: [576, 512, [], \"f2e6\", \"M0 74.1c0 114.2 47.3 199 156.1 223L88 356.6c-31.9 28.2-33.4 77.6-3.3 107.7l26.9 26c30.3 30.3 79.6 28.5 107.7-3.3l70.1-79.1c74 87.3 67.1 79.2 68.5 80.7 28.2 30.1 76.4 31.6 106.3 1.7l26-26c29.7-29.7 28.7-78.1-2-106.6l-59.4-55.2c25.5-3.9 50.3-16.2 71.3-37.2 20.7-20.7 58.4-74.8 66.1-85.9 23.5-33.6 1.2-78.9-35.8-91.9-6.4-18.5-22.8-35.3-42-42.1-12.8-36.3-58-59.6-91.9-35.8-11.2 7.8-65.2 45.4-85.9 66.1-23 23-36.3 51.4-38.3 81.4L124.4 19.9C76.9-24.2 0 9.9 0 74.1zm348.3 153.6c-33.6-33.6-40.1-81.6-3.7-118C363.4 90.9 424 49 424 49c7.3-5.3 24.1 11.8 18.6 18.9L365 145.5c-6.7 7.8 10.5 25.3 18.6 18.9l82.6-73.3c7.2-5.1 23.9 11.5 18.7 18.7l-73.3 82.6c-6.4 8.1 11 25.3 18.9 18.6l77.6-77.6c7.1-5.5 24.1 11.3 18.9 18.6 0 0-41.9 60.6-60.7 79.5-35.8 35.8-83.8 30.5-118-3.8zm-138.7 86.1l48.5 57.1-74.6 84.3c-9.9 11.2-27.3 11.7-37.8 1.1l-26-26c-10.6-10.6-10.1-27.9 1.1-37.8l88.8-78.7zM48 74c0-22.6 27-34.5 43.7-19l364 338c10.8 10 11.1 27 .7 37.4l-26 26c-10.4 10.4-27.3 10.1-37.4-.6L223.5 256C93.5 256 48 182.8 48 74z\"]\n};\nvar faVacuum = {\n prefix: 'far',\n iconName: 'vacuum',\n icon: [640, 512, [], \"e04d\", \"M640,120A120.14,120.14,0,0,0,520,0H309.59C253.38,0,204,39.91,192.28,94.86L130.31,384H96A96,96,0,0,0,0,480v16a16,16,0,0,0,16,16H224a32,32,0,0,0,32-32V416a32,32,0,0,0-32-32H179.41l59.81-279.09A72.35,72.35,0,0,1,309.59,48H520a71.8,71.8,0,0,1,31.79,136.27A191.34,191.34,0,0,0,416,128H384a32,32,0,0,0-32,32V331.19A110.94,110.94,0,0,1,400,320V176h16c79.4,0,144,64.6,144,144V448a16,16,0,0,1-16,16H506.8a111.62,111.62,0,0,1-28.58,48H544a64,64,0,0,0,64-64V320a190.79,190.79,0,0,0-27-97.9C616.1,201.35,640,163.75,640,120ZM208,432v32H50.74A48.1,48.1,0,0,1,96,432Zm192-80a80,80,0,1,0,80,80A80,80,0,0,0,400,352Zm0,96a16,16,0,1,1,16-16A16,16,0,0,1,400,448Z\"]\n};\nvar faVacuumRobot = {\n prefix: 'far',\n iconName: 'vacuum-robot',\n icon: [512, 512, [], \"e04e\", \"M431.36,80.64a248,248,0,0,0-350.72,0c-96.85,96.85-96.85,253.87,0,350.72a248,248,0,0,0,350.72,0C528.21,334.51,528.21,177.49,431.36,80.64ZM397.42,397.42A200,200,0,1,1,114.58,114.58,200,200,0,1,1,397.42,397.42ZM369,143C306.66,80.75,205.34,80.75,143,143A24,24,0,0,0,177,177,111.77,111.77,0,1,1,335,335,24,24,0,1,0,369,369,159.72,159.72,0,0,0,369,143ZM139.55,304.57a16,16,0,0,0-22.63,22.63l67.88,67.88a16,16,0,0,0,22.63-22.63Zm90.51-90.51a16,16,0,0,0-22.63,22.63l67.88,67.88a16,16,0,0,0,22.63-22.63Zm-67.88,22.63a16,16,0,0,0-22.63,22.62L252.69,372.45a16,16,0,0,0,22.62-22.63Z\"]\n};\nvar faValueAbsolute = {\n prefix: 'far',\n iconName: 'value-absolute',\n icon: [448, 512, [], \"f6a6\", \"M32 32H16C7.16 32 0 39.16 0 48v416c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16zm315.31 112L336 132.69c-6.25-6.25-16.38-6.25-22.63 0L224 222.06l-89.38-89.38c-6.25-6.25-16.38-6.25-22.63 0L100.69 144c-6.25 6.25-6.25 16.38 0 22.63L190.06 256l-89.38 89.38c-6.25 6.25-6.25 16.38 0 22.63l11.32 11.3c6.25 6.25 16.38 6.25 22.63 0L224 289.94l89.38 89.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63L257.94 256l89.38-89.38c6.24-6.24 6.24-16.38-.01-22.62zM432 32h-16c-8.84 0-16 7.16-16 16v416c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faVectorSquare = {\n prefix: 'far',\n iconName: 'vector-square',\n icon: [512, 512, [], \"f5cb\", \"M480 160c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32v16H160V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h16v192H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-16h192v16c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32h-16V160h16zM400 48h64v64h-64V48zM48 48h64v64H48V48zm64 416H48v-64h64v64zm352 0h-64v-64h64v64zm-48-112h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z\"]\n};\nvar faVenus = {\n prefix: 'far',\n iconName: 'venus',\n icon: [288, 512, [], \"f221\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 71.4 51.9 130.6 120 142v58H76c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h44v44c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12v-44h44c6.6 0 12-5.4 12-12v-24c0-6.6-5.4-12-12-12h-44v-58c68.1-11.4 120-70.6 120-142zm-240 0c0-52.9 43.1-96 96-96s96 43.1 96 96-43.1 96-96 96-96-43.1-96-96z\"]\n};\nvar faVenusDouble = {\n prefix: 'far',\n iconName: 'venus-double',\n icon: [512, 512, [], \"f226\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 71.4 51.9 130.6 120 142v58H76c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h44v44c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12v-44h44c6.6 0 12-5.4 12-12v-24c0-6.6-5.4-12-12-12h-44v-58c68.1-11.4 120-70.6 120-142zm-240 0c0-52.9 43.1-96 96-96s96 43.1 96 96-43.1 96-96 96-96-43.1-96-96zm344 142v58h44c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12h-44v44c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12v-44h-44c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h44v-58c-24.3-4.1-46.6-14.3-65.2-28.9 10.4-12.4 19.1-26.1 25.8-41 16.9 14.9 39.1 24 63.4 24 52.9 0 96-43.1 96-96s-43.1-96-96-96c-24.3 0-46.5 9.1-63.4 24-6.7-14.9-15.4-28.7-25.8-41C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 71.4-51.9 130.6-120 142z\"]\n};\nvar faVenusMars = {\n prefix: 'far',\n iconName: 'venus-mars',\n icon: [576, 512, [], \"f228\", \"M288 208c0-79.5-64.5-144-144-144S0 128.5 0 208c0 71.4 51.9 130.6 120 142v58H76c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h44v44c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12v-44h44c6.6 0 12-5.4 12-12v-24c0-6.6-5.4-12-12-12h-44v-58c68.1-11.4 120-70.6 120-142zm-240 0c0-52.9 43.1-96 96-96s96 43.1 96 96-43.1 96-96 96-96-43.1-96-96zM576 12v63c0 10.7-12.9 16-20.5 8.5L541 69l-55.6 55.6c16.8 23.5 26.6 52.3 26.6 83.4 0 79.5-64.5 144-144 144-33.7 0-64.6-11.6-89.2-30.9 10.4-12.4 19.1-26.1 25.8-41 16.9 14.9 39.1 24 63.4 24 52.9 0 96-43.1 96-96s-43.1-96-96-96c-24.3 0-46.5 9.1-63.4 24-6.7-14.9-15.4-28.7-25.8-41C303.4 75.6 334.3 64 368 64c31.1 0 59.9 9.9 83.4 26.6L507 35l-14.5-14.5C484.9 12.9 490.3 0 501 0h63c6.6 0 12 5.4 12 12z\"]\n};\nvar faVest = {\n prefix: 'far',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M433.219,226.562,384,152.734V56A56.068,56.068,0,0,0,328,0h-8a23.924,23.924,0,0,0-13.289,4.066l-.023-.035-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672-.023.035A23.924,23.924,0,0,0,128,0h-8A56.068,56.068,0,0,0,64,56v96.734L14.781,226.562A87.638,87.638,0,0,0,0,275.375V456a56.068,56.068,0,0,0,56,56H392a56.068,56.068,0,0,0,56-56V275.375A87.638,87.638,0,0,0,433.219,226.562ZM194.094,246.188A24.06,24.06,0,0,0,192,256V464H56a8.016,8.016,0,0,1-8-8V275.375a39.907,39.907,0,0,1,6.719-22.187l53.25-79.876A24.021,24.021,0,0,0,112,160V56a7.992,7.992,0,0,1,1.781-5.031L197.7,238.154ZM400,456a8.016,8.016,0,0,1-8,8H240V261.141L334.219,50.969A7.992,7.992,0,0,1,336,56V160a24.021,24.021,0,0,0,4.031,13.312l53.25,79.876A39.907,39.907,0,0,1,400,275.375ZM76.688,419.312a15.992,15.992,0,0,0,22.624,0l48-48a16,16,0,0,0-22.624-22.624l-48,48A15.993,15.993,0,0,0,76.688,419.312Zm246.624-70.624a16,16,0,0,0-22.624,22.624l48,48a16,16,0,0,0,22.624-22.624Z\"]\n};\nvar faVestPatches = {\n prefix: 'far',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M433.219,226.562,384,152.734V56A56.068,56.068,0,0,0,328,0h-8a23.924,23.924,0,0,0-13.289,4.066l-.023-.035-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672-.023.035A23.924,23.924,0,0,0,128,0h-8A56.068,56.068,0,0,0,64,56v96.734L14.781,226.562A87.638,87.638,0,0,0,0,275.375V456a56.068,56.068,0,0,0,56,56H392a56.068,56.068,0,0,0,56-56V275.375A87.638,87.638,0,0,0,433.219,226.562ZM194.094,246.188A24.06,24.06,0,0,0,192,256V464H56a8.016,8.016,0,0,1-8-8V275.375a39.907,39.907,0,0,1,6.719-22.187l53.25-79.876A24.021,24.021,0,0,0,112,160V56a7.992,7.992,0,0,1,1.781-5.031L197.7,238.154ZM400,456a8.016,8.016,0,0,1-8,8H240V261.141L334.219,50.969A7.992,7.992,0,0,1,336,56V160a24.021,24.021,0,0,0,4.031,13.312l53.25,79.876A39.907,39.907,0,0,1,400,275.375ZM342.5,302.541l-5.051.037.037-5.057c.073-12.8-9.267-24.257-22.056-25.419a24.987,24.987,0,0,0-27.215,24.621L288,345.3a6.671,6.671,0,0,0,6.7,6.7l48.53-.215A24.948,24.948,0,0,0,367.9,324.617C366.736,311.816,355.326,302.506,342.5,302.541ZM112,360a40,40,0,1,0,40,40A40,40,0,0,0,112,360ZM95.5,255.516a12.052,12.052,0,0,0,0,16.968L111.016,288,95.5,303.516a12.01,12.01,0,0,0,17,16.968l15.5-15.5,15.5,15.5a12.01,12.01,0,0,0,17-16.968L144.984,288,160.5,272.484a12.01,12.01,0,0,0-17-16.968l-15.5,15.5-15.5-15.5A12.032,12.032,0,0,0,95.5,255.516Z\"]\n};\nvar faVhs = {\n prefix: 'far',\n iconName: 'vhs',\n icon: [512, 512, [], \"f8ec\", \"M464 400H48V192H0v208a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V192h-48zm32-336H16A16 16 0 0 0 0 80v80h512V80a16 16 0 0 0-16-16zM344 368a88 88 0 0 0 0-176H168a88 88 0 0 0 0 176zm8-120a32 32 0 0 1 0 64zm-144-8h96v80h-96zm-48 72a32 32 0 0 1 0-64z\"]\n};\nvar faVial = {\n prefix: 'far',\n iconName: 'vial',\n icon: [480, 512, [], \"f492\", \"M477.7 186.1L309.9 18.3c-1.6-1.6-3.6-2.3-5.7-2.3-2 0-4.1.8-5.7 2.3l-22.3 22.3c-3.1 3.1-3.1 8.2 0 11.3L287.5 63 30.1 320.4c-40.1 40.1-40.1 105.4 0 145.5 40.1 40 105.3 40.1 145.5 0L433 208.5l11.1 11.1c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l22.3-22.3c3-3 3-8.1-.1-11.2zM141.6 432c-21.3 21.3-56.1 21.5-77.6 0-21.4-21.4-21.4-56.2 0-77.6l50.4-50.4h155.2l-128 128zm176-176H162.4L321 97.4l77.6 77.6-81 81z\"]\n};\nvar faVials = {\n prefix: 'far',\n iconName: 'vials',\n icon: [640, 512, [], \"f493\", \"M72 48h24v288c0 44.1 35.9 80 80 80s80-35.9 80-80V48h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8zm72 0h64v112h-64V48zm0 160h64v128c0 42.3-64 42.3-64 0V208zm488 256H8c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8h624c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8zM360 48h24v288c0 44.1 35.9 80 80 80s80-35.9 80-80V48h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8zm72 0h64v112h-64V48zm0 160h64v128c0 42.3-64 42.3-64 0V208z\"]\n};\nvar faVideo = {\n prefix: 'far',\n iconName: 'video',\n icon: [576, 512, [], \"f03d\", \"M543.9 96c-6.2 0-12.5 1.8-18.2 5.7L416 170.1v-58.3c0-26.4-23.2-47.8-51.8-47.8H51.8C23.2 64 0 85.4 0 111.8v288.4C0 426.6 23.2 448 51.8 448h312.4c28.6 0 51.8-21.4 51.8-47.8v-58.3l109.7 68.3c5.7 4 12.1 5.7 18.2 5.7 16.6 0 32.1-13 32.1-31.5V127.5C576 109 560.5 96 543.9 96zM368 200v198.9c-.6.4-1.8 1.1-3.8 1.1H51.8c-2 0-3.2-.6-3.8-1.1V113.1c.6-.4 1.8-1.1 3.8-1.1h312.4c2 0 3.2.6 3.8 1.1V200zm160 155.2l-112-69.8v-58.7l112-69.8v198.3z\"]\n};\nvar faVideoPlus = {\n prefix: 'far',\n iconName: 'video-plus',\n icon: [576, 512, [], \"f4e1\", \"M543.9 96c-6.2 0-12.5 1.8-18.2 5.7L416 170.1v-58.3c0-26.4-23.2-47.8-51.8-47.8H51.8C23.2 64 0 85.4 0 111.8v288.4C0 426.6 23.2 448 51.8 448h312.4c28.6 0 51.8-21.4 51.8-47.8v-58.3l109.7 68.3c5.7 4 12.1 5.7 18.2 5.7 16.6 0 32.1-13 32.1-31.5V127.5C576 109 560.5 96 543.9 96zM368 398.9c-.6.4-1.8 1.1-3.8 1.1H51.8c-2 0-3.2-.6-3.8-1.1V113.1c.6-.4 1.8-1.1 3.8-1.1h312.4c2 0 3.2.6 3.8 1.1v285.8zm160-43.7l-112-69.8v-58.7l112-69.8v198.3zM288 232h-56v-56c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v56h-56c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h56v56c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-56h56c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16z\"]\n};\nvar faVideoSlash = {\n prefix: 'far',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M396.2 112c2 0 3.2.6 3.8 1.1v114.1l48 37.5v-38l112-69.8v195.4l47 36.8c.2-1.6 1-2.9 1-4.6v-257C608 109 592.5 96 575.9 96c-6.2 0-12.5 1.8-18.2 5.7L448 170.1v-58.3c0-26.4-23.2-47.8-51.8-47.8H191.3l61.4 48h143.5zM634 471L479.5 350.2 400 288.1 115.6 65.7l-2.2-1.7L36 3.5C29.1-2 19-.9 13.5 6l-10 12.5C-2 25.4-.9 35.5 6 41l44.3 34.6 39 30.5L604 508.5c6.9 5.5 17 4.4 22.5-2.5l10-12.5c5.5-6.9 4.4-17-2.5-22.5zM83.8 400c-2 0-3.2-.6-3.8-1.1V159.8l-48-37.5v277.9c0 26.4 23.2 47.8 51.8 47.8h312.4c13.8 0 26.3-5.1 35.6-13.2L387.3 400H83.8z\"]\n};\nvar faVihara = {\n prefix: 'far',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M632.88 384.94L544 320v-32l55.16-23.59c11.79-7.86 11.79-30.3 0-38.16L480 160v-32l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v32L40.84 226.25c-11.79 7.86-11.79 30.3 0 38.16L96 288v32L7.12 384.94c-10.22 9.09-9.27 29.51 1.72 36.83L64 448v48c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-48h184v48c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-48h184v48c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-48l55.15-26.23c10.99-7.32 11.95-27.74 1.73-36.83zM320 53.04L377.39 80H262.62L320 53.04zM208 128h224v32H208v-32zm-35.55 80h295.11l57.55 32H114.89l57.56-32zM144 288h352v32H144v-32zm-32.33 80h416.66L576 400H64l47.67-32z\"]\n};\nvar faViolin = {\n prefix: 'far',\n iconName: 'violin',\n icon: [640, 512, [], \"f8ed\", \"M481.14 192.8L635.31 38.62a16 16 0 0 0 0-22.62L624 4.69a16 16 0 0 0-22.62 0l-154.2 154.19c-15.44-12.84-33.06-23-52.59-27.53-18.76-4.37-64-10-98 24-3.68 3.69-6.5 7.9-9.4 12.05 6.65 48.81-40.82 85.5-85.95 68.2-15.23 5.15-29.31 13.11-41 24.86-42.52 42.4-41.86 113.62-3.24 171.24l-21.87 14.59a16 16 0 0 0-2.44 24.62l36.4 36.4a16 16 0 0 0 24.62-2.44l14.46-21.69c28.23 18.92 59.72 28.74 89.51 28.74 31 0 60.18-10.53 81.8-32.16 11.75-11.68 19.71-25.77 24.87-41-17.17-45 19.28-92.33 68-85.87 4.21-2.94 8.48-5.8 12.23-9.54 24.94-25 32.43-61.48 24-97.91-4.49-19.56-14.58-37.19-27.44-52.64zm-26.21 111.58c-61.44 4.94-113.41 62.7-101.22 130.69-5 8.85-20.61 28.85-56 28.85-21.29 0-43.21-7.47-62.86-20.71l4.79-7.18a16 16 0 0 0-2-20.19l-13.45-13.45a16 16 0 0 0-20.19-2l-7.2 4.8c-13.3-19.7-20.79-41.67-20.77-63 0-26.13 11.64-46.1 28.84-55.91 68.45 12.32 126-39.66 130.83-101.37 10.07-7.25 21.8-8.92 30.45-8.92a78 78 0 0 1 17.59 2.1c11.06 2.57 21 8.55 29.29 15l-88.31 88.32a16 16 0 0 0 0 22.62L336 315.31a16 16 0 0 0 22.62 0L447 227c6.4 8.33 12.34 18.21 14.89 29.23 4.33 18.92 1.76 36.1-6.96 48.15zM347.31 16L336 4.69a16 16 0 0 0-22.62 0L4.69 313.38a16 16 0 0 0 0 22.62L16 347.31a16 16 0 0 0 22.62 0L347.31 38.62a16 16 0 0 0 0-22.62zM520 48a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm-48 48a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm144 0a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm-48 48a24 24 0 1 0 24 24 24 24 0 0 0-24-24z\"]\n};\nvar faVirus = {\n prefix: 'far',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M224,176a48,48,0,1,0,48,48A48,48,0,0,0,224,176Zm80,104a24,24,0,1,0,24,24A24,24,0,0,0,304,280Zm179.55-52.45H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22A55.74,55.74,0,0,1,341.74,107c-29.24,0-57.29-22.7-57.29-57V28.44a28.45,28.45,0,0,0-56.9,0V50c0,34.29-28.05,57-57.29,57a55.7,55.7,0,0,1-39.82-16.77L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25A55.7,55.7,0,0,1,170.25,405c29.25,0,57.3,22.7,57.3,57v21.54a28.45,28.45,0,0,0,56.9,0V462c0-34.29,28.05-57,57.3-57a55.7,55.7,0,0,1,39.81,16.77L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM365.1,301.19a104.81,104.81,0,0,0-6.65,57.16,104.13,104.13,0,0,0-16.7-1.34A105.35,105.35,0,0,0,256,401.12,105.35,105.35,0,0,0,170.25,357a104.13,104.13,0,0,0-16.7,1.34A105.26,105.26,0,0,0,111.09,256a105.29,105.29,0,0,0,42.46-102.36A103,103,0,0,0,170.26,155,105.34,105.34,0,0,0,256,110.88,105.34,105.34,0,0,0,341.74,155a103,103,0,0,0,16.71-1.35A105.29,105.29,0,0,0,400.91,256,104.69,104.69,0,0,0,365.1,301.19Z\"]\n};\nvar faVirusSlash = {\n prefix: 'far',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M320,110.88A105.34,105.34,0,0,0,405.74,155a103,103,0,0,0,16.71-1.35A105.29,105.29,0,0,0,464.91,256a105.15,105.15,0,0,0-13.27,11.53l38.47,30.07A55.22,55.22,0,0,1,526,284.44h21.55a28.45,28.45,0,0,0,0-56.89H526c-50.68,0-76.07-61.27-40.23-97.11L501,115.19A28.44,28.44,0,1,0,460.81,75L445.56,90.22A55.74,55.74,0,0,1,405.74,107c-29.24,0-57.29-22.7-57.29-57V28.44a28.45,28.45,0,0,0-56.89,0V50c0,30.06-21.56,51.21-46.58,56L288,139.63C300.49,132.17,311.58,122.63,320,110.88Zm0,290.24A105.33,105.33,0,0,0,234.25,357a103.92,103.92,0,0,0-16.69,1.35A105.3,105.3,0,0,0,175.09,256a105.23,105.23,0,0,0,13.27-11.54l-38.47-30.07A55.17,55.17,0,0,1,114,227.55H92.45a28.45,28.45,0,1,0,0,56.89H114c50.68,0,76.07,61.28,40.23,97.12L139,396.8A28.44,28.44,0,1,0,179.2,437l15.24-15.24A55.71,55.71,0,0,1,234.25,405c29.25,0,57.31,22.71,57.31,57v21.55a28.45,28.45,0,0,0,56.89,0V462c0-30.05,21.55-51.2,46.57-56L352,372.37C339.51,379.83,328.42,389.37,320,401.12ZM634,471,36,3.52A16,16,0,0,0,13.51,6l-10,12.49A16,16,0,0,0,6,41L604,508.48A16,16,0,0,0,626.48,506l10-12.49A16,16,0,0,0,634,471Z\"]\n};\nvar faViruses = {\n prefix: 'far',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192Zm-48-40a24,24,0,1,0,24,24A24,24,0,0,0,176,152ZM624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58a31.34,31.34,0,0,1-22.4,9.43c-16.45,0-32.23-12.77-32.23-32.06V240a16,16,0,0,0-32,0v12.12c0,19.29-15.78,32.06-32.23,32.06a31.34,31.34,0,0,1-22.4-9.43l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58a31.34,31.34,0,0,1,22.4-9.43c16.45,0,32.23,12.77,32.23,32.06V496a16,16,0,0,0,32,0V483.88c0-19.29,15.78-32.06,32.23-32.06a31.32,31.32,0,0,1,22.4,9.43l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM464,392a24,24,0,1,1,24-24A24,24,0,0,1,464,392ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84L327.77,86.4A21.33,21.33,0,1,0,297.6,56.23L286.17,67.66a41.75,41.75,0,0,1-29.86,12.59c-21.94,0-43-17-43-42.76V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,25.72-21,42.76-43,42.76A41.75,41.75,0,0,1,97.83,67.66L86.4,56.23A21.33,21.33,0,0,0,56.23,86.4L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43a41.75,41.75,0,0,1,29.86-12.59c21.94,0,43,17,43,42.76v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-25.72,21-42.76,43-42.76a41.75,41.75,0,0,1,29.86,12.59l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33Zm-83.77,8a91,91,0,0,0-7,34.46A90.75,90.75,0,0,0,192,282.38a90.75,90.75,0,0,0-63.79-26.62A91.28,91.28,0,0,0,101.78,192a91.28,91.28,0,0,0,26.43-63.76A90.75,90.75,0,0,0,192,101.62a90.75,90.75,0,0,0,63.79,26.62A91.28,91.28,0,0,0,282.22,192,90.82,90.82,0,0,0,262.74,221.3Z\"]\n};\nvar faVoicemail = {\n prefix: 'far',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M496 128a144 144 0 0 0-144 144c0 37.05 14.38 70.48 37.37 96H250.63c23-25.52 37.37-58.95 37.37-96a144 144 0 1 0-144 144h352a144 144 0 0 0 0-288zM48 272a96 96 0 1 1 96 96 96.11 96.11 0 0 1-96-96zm448 96a96 96 0 1 1 96-96 96.11 96.11 0 0 1-96 96z\"]\n};\nvar faVolcano = {\n prefix: 'far',\n iconName: 'volcano',\n icon: [512, 512, [], \"f770\", \"M500.9 426.5L341.6 228.3c-10.1-12.9-25.3-20.3-41.8-20.3H212c-16.4 0-31.6 7.4-41.6 20.1L10.7 427.2c-12.2 16.2-14.1 37.4-5.1 55.5S32.8 512 53 512h406c20.2 0 38.4-11.2 47.4-29.3s7.1-39.4-5.5-56.2zM208.2 257.9c.9-1.2 2.4-1.9 3.9-1.9h87.8c1.5 0 3 .7 4.1 2.2l49.4 61.5-28.9 35.6c-3.6 4.2-8.1 4.8-10.5 4.8-2.4 0-6.9-.6-10.5-4.8l-28.6-33.4c-12-14-29.7-20.9-47.9-21.6-18.4.3-35.7 8.8-47.2 23.2-3.6 4.5-8.3 5.2-10.8 5.2s-7.2-.7-9.2-2.9l-2.7-4.3 51.1-63.6zM459 464H53.1c-2.1 0-3.6-.9-4.5-2.8-.9-1.8-.8-3.6 0-4.7l78.2-97.3c25.2 23.1 68.6 21.4 90.5-5.8 3.5-4.4 8.1-5.1 10.5-5.2 3-.4 7 .6 10.7 4.8l28.6 33.4C278.9 400.2 296 408 314 408c18.1 0 35.2-7.8 47.3-22.1l22.8-28.1L463 456c1.3 1.7 1.4 3.4.5 5.3-1 1.8-2.5 2.7-4.5 2.7zM160 144c12.9 0 24.8-3.9 34.8-10.4L224 176h64l29.2-42.4c10 6.5 21.9 10.4 34.8 10.4 35.3 0 64-28.7 64-64s-28.7-64-64-64c-15.8 0-30 5.9-41.2 15.4C299.6 12.7 279.4 0 256 0s-43.6 12.7-54.8 31.4C190.1 21.9 175.8 16 160 16c-35.3 0-64 28.7-64 64s28.7 64 64 64z\"]\n};\nvar faVolleyballBall = {\n prefix: 'far',\n iconName: 'volleyball-ball',\n icon: [496, 512, [], \"f45f\", \"M248 8C111.2 8 0 119.2 0 256s111.2 248 248 248 248-111.2 248-248S384.8 8 248 8zm146.6 383.6c-75.3 12.7-152.6-4.5-215.7-47.8 19.8-23.6 43.5-43.9 70.3-60.3 95 51.4 177.4 40.1 187.1 39.3-9.2 25.8-23.5 49.1-41.7 68.8zm52.5-118.1c-18.9 2.6-37.9 3.5-56.8 2.3 5.6-68.4-10.3-136.3-45-194.4 28.8 16.2 111.9 76.6 101.8 192.1zM291.9 61c48.8 58.9 72.6 134.6 66.7 211-30.2-5.3-59.6-15.6-87.1-30.5-1.8-65.7-22.6-128.5-59.9-182 12-2.2 41.1-7.3 80.3 1.5zM163.7 74.9C175.4 90 185.6 106 194 122.8c-62 29.3-112.9 77-145.9 136.2-1.3-87.3 52-154.4 115.6-184.1zM57.1 315.7c26.6-71.8 80.2-130.4 149.4-163.5 10.5 28.8 16.3 59.4 17.1 90.7-56 34.4-100 83.8-127.6 142.8-17.3-20.3-30.7-44-38.9-70zm76.2 103.9c7.1-17.6 15.9-34.2 26.1-49.9 33.7 23.3 98.9 59.2 190.8 57.9-30 17.9-64.8 28.4-102.2 28.4-42.7 0-82.2-13.6-114.7-36.4z\"]\n};\nvar faVolume = {\n prefix: 'far',\n iconName: 'volume',\n icon: [480, 512, [], \"f6a8\", \"M394.23 100.85c-11.19-7.09-26.03-3.8-33.12 7.41s-3.78 26.03 7.41 33.12C408.27 166.6 432 209.44 432 256s-23.73 89.41-63.48 114.62c-11.19 7.09-14.5 21.92-7.41 33.12 6.51 10.28 21.12 15.03 33.12 7.41C447.94 377.09 480 319.09 480 256s-32.06-121.09-85.77-155.15zm-56 78.28c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.37-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.87s-17.54-61.33-45.78-76.87zM231.81 64c-5.91 0-11.92 2.18-16.78 7.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c4.87 4.87 10.88 7.05 16.78 7.05 12.33 0 24.19-9.52 24.19-24.02V88.02C256 73.51 244.13 64 231.81 64zM208 366.05L145.94 304H48v-96h97.94L208 145.95v220.1z\"]\n};\nvar faVolumeDown = {\n prefix: 'far',\n iconName: 'volume-down',\n icon: [384, 512, [], \"f027\", \"M338.23 179.13c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256s-8.02 27.72-20.92 34.81c-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.87s-17.54-61.33-45.78-76.87zM231.81 64c-5.91 0-11.92 2.18-16.78 7.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c4.87 4.87 10.88 7.05 16.78 7.05 12.33 0 24.19-9.52 24.19-24.02V88.02C256 73.51 244.13 64 231.81 64zM208 366.05L145.94 304H48v-96h97.94L208 145.95v220.1z\"]\n};\nvar faVolumeMute = {\n prefix: 'far',\n iconName: 'volume-mute',\n icon: [512, 512, [], \"f6a9\", \"M231.81 64c-5.91 0-11.92 2.18-16.78 7.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c4.87 4.87 10.88 7.05 16.78 7.05 12.33 0 24.19-9.52 24.19-24.02V88.02C256 73.51 244.13 64 231.81 64zM208 366.05l-48-47.99L145.94 304H48v-96h97.94L160 193.94l48-47.99v220.1zM465.94 256l41.37-41.37c6.25-6.25 6.25-16.38 0-22.63L496 180.69c-6.25-6.25-16.38-6.25-22.63 0L432 222.06l-41.37-41.37c-6.25-6.25-16.38-6.25-22.63 0L356.69 192c-6.25 6.25-6.25 16.38 0 22.63L398.06 256l-41.37 41.37c-6.25 6.25-6.25 16.38 0 22.63L368 331.32c6.25 6.25 16.38 6.25 22.63 0L432 289.94l41.37 41.37c6.25 6.25 16.38 6.25 22.63 0L507.31 320c6.25-6.25 6.25-16.38 0-22.63L465.94 256z\"]\n};\nvar faVolumeOff = {\n prefix: 'far',\n iconName: 'volume-off',\n icon: [256, 512, [], \"f026\", \"M231.81 64c-5.91 0-11.92 2.18-16.78 7.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c4.87 4.87 10.88 7.05 16.78 7.05 12.33 0 24.19-9.52 24.19-24.02V88.02C256 73.51 244.13 64 231.81 64zM208 366.05L145.94 304H48v-96h97.94L208 145.95v220.1z\"]\n};\nvar faVolumeSlash = {\n prefix: 'far',\n iconName: 'volume-slash',\n icon: [640, 512, [], \"f2e2\", \"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM370.23 179.13c-9.14-5-20.01-3.25-27.41 3.33l70.67 55.25c-5.31-24.49-20.57-46.09-43.26-58.58zm30.29-37.75C440.27 166.6 464 209.44 464 256c0 6.75-.64 13.38-1.61 19.93l41.66 32.57c5.03-16.82 7.95-34.39 7.95-52.5 0-63.09-32.06-121.09-85.77-155.16-11.19-7.09-26.03-3.8-33.12 7.41-7.09 11.21-3.78 26.03 7.41 33.13zm53.27-80.96c66.27 43.49 105.82 116.6 105.82 195.58 0 29.13-5.46 57.42-15.57 83.76l39.23 30.67C599.07 334.91 608 296.19 608 256c0-95.33-47.73-183.58-127.65-236.03-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.5zM288 88.02C288 73.51 276.13 64 263.81 64c-5.91 0-11.92 2.18-16.78 7.05l-20.5 20.49L288 139.59V88.02zm-48 278.03L177.94 304H80v-96h61.71l-61.4-48H56c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c4.87 4.87 10.88 7.05 16.78 7.05 12.33 0 24.19-9.52 24.19-24.02V322.37l-48-37.53v81.21z\"]\n};\nvar faVolumeUp = {\n prefix: 'far',\n iconName: 'volume-up',\n icon: [576, 512, [], \"f028\", \"M338.23 179.12c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.62 336 256c0 14.37-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.87s-17.54-61.33-45.78-76.88zM480 256c0-63.09-32.06-121.09-85.77-155.15-11.19-7.09-26.03-3.8-33.12 7.41s-3.78 26.03 7.41 33.12C408.27 166.59 432 209.44 432 256s-23.73 89.4-63.48 114.62c-11.19 7.09-14.5 21.92-7.41 33.12 6.51 10.28 21.12 15.03 33.12 7.41C447.94 377.09 480 319.09 480 256zM448.35 19.97c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51C488.06 103.91 527.61 177.02 527.61 256c0 78.98-39.55 152.08-105.82 195.57-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.57 576 351.33 576 256S528.27 72.42 448.35 19.97zM231.81 64c-5.91 0-11.92 2.18-16.78 7.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c4.87 4.86 10.88 7.05 16.78 7.05 12.33 0 24.19-9.52 24.19-24.02V88.02C256 73.51 244.13 64 231.81 64zM208 366.04L145.94 304H48v-96h97.94L208 145.95v220.09z\"]\n};\nvar faVoteNay = {\n prefix: 'far',\n iconName: 'vote-nay',\n icon: [640, 512, [], \"f771\", \"M246.5 268.4l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l39.6-39.6 39.6 39.6c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-39.6-39.6 39.6-39.6c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L320 172.3l-39.6-39.6c-6.2-6.2-16.4-6.2-22.6 0L246.5 144c-6.2 6.2-6.2 16.4 0 22.6l39.6 39.6-39.6 39.6c-6.3 6.3-6.3 16.4 0 22.6zM592 272h-80V38.2C512 17.1 497.5 0 479.7 0H160.3C142.5 0 128 17.1 128 38.2V272H48c-26.5 0-48 21.5-48 48v144c0 26.5 21.5 48 48 48h544c26.5 0 48-21.5 48-48V320c0-26.5-21.5-48-48-48zM464 48v320H176V48h288zm128 416H48V320h80v48h-22.4c-5.3 0-9.6 3.6-9.6 8v32c0 4.4 4.3 8 9.6 8h428.8c5.3 0 9.6-3.6 9.6-8v-32c0-4.4-4.3-8-9.6-8H512v-48h80v144z\"]\n};\nvar faVoteYea = {\n prefix: 'far',\n iconName: 'vote-yea',\n icon: [640, 512, [], \"f772\", \"M288.1 285.1c3.8 3.9 10.1 3.9 14 .1l117.8-116.8c3.9-3.8 3.9-10.1.1-14L396.8 131c-3.8-3.9-10.1-3.9-14-.1l-87.4 86.7-37.9-38.2c-3.8-3.9-10.1-3.9-14-.1l-23.4 23.2c-3.9 3.8-3.9 10.1-.1 14l68.1 68.6zM592 272h-80V38.2C512 17.1 497.5 0 479.7 0H160.3C142.5 0 128 17.1 128 38.2V272H48c-26.5 0-48 21.5-48 48v144c0 26.5 21.5 48 48 48h544c26.5 0 48-21.5 48-48V320c0-26.5-21.5-48-48-48zM464 48v320H176V48h288zm128 416H48V320h80v48h-22.4c-5.3 0-9.6 3.6-9.6 8v32c0 4.4 4.3 8 9.6 8h428.8c5.3 0 9.6-3.6 9.6-8v-32c0-4.4-4.3-8-9.6-8H512v-48h80v144z\"]\n};\nvar faVrCardboard = {\n prefix: 'far',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M576 64H64C28.65 64 0 92.65 0 128v256c0 35.35 28.65 64 64 64h129.13c37.78 0 72.04-22.16 87.54-56.61l8.07-17.93C294.66 360.31 306.76 352 320 352s25.34 8.31 31.26 21.46l8.07 17.93c15.5 34.45 49.77 56.61 87.54 56.61H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm16 320c0 8.82-7.18 16-16 16H446.87c-18.85 0-36.04-11.11-43.77-28.3l-8.07-17.93C381.43 323.54 351.98 304 320 304s-61.43 19.54-75.03 49.77l-8.07 17.93c-7.74 17.19-24.92 28.3-43.77 28.3H64c-8.82 0-16-7.18-16-16V128c0-8.82 7.18-16 16-16h512c8.82 0 16 7.18 16 16v256zM176 176c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm288 0c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64z\"]\n};\nvar faWagonCovered = {\n prefix: 'far',\n iconName: 'wagon-covered',\n icon: [640, 512, [], \"f8ee\", \"M624.23,26.47A71.08,71.08,0,0,0,555.75,1.21l-149,27.94h-8.22A63.44,63.44,0,0,0,360,16H280A63.42,63.42,0,0,0,241.5,29.15h-8.22L84.31,1.21a71.12,71.12,0,0,0-78.89,97L69,260.42A15.86,15.86,0,0,0,64,272v32a16,16,0,0,0,16,16H97.79c-.31.31-.68.5-1,.81A112,112,0,1,0,286.49,416h67.08a111.85,111.85,0,1,0,189.69-95.2c-.31-.31-.68-.5-1-.81h17.79a16,16,0,0,0,16-16V272a15.85,15.85,0,0,0-5-11.56L634.4,98.71A71,71,0,0,0,624.23,26.47ZM160,461.73A62.4,62.4,0,0,1,114.27,416H160ZM160,384H114.27A62.4,62.4,0,0,1,160,338.25ZM118.87,256l-69-175.89A23.12,23.12,0,0,1,75.46,48.4L216.53,74.85c-.14,1.72-.51,3.36-.51,5.11V256Zm102.4,189.27A63.4,63.4,0,0,1,192,461.73V416h45.74A63.36,63.36,0,0,1,221.27,445.25ZM192,384V338.25A62.4,62.4,0,0,1,237.75,384ZM376,256H264V80a16,16,0,0,1,16-16h80a16,16,0,0,1,16,16Zm72,205.75A62.43,62.43,0,0,1,402.3,416h45.75Zm0-77.74H402.3a62.43,62.43,0,0,1,45.75-45.74Zm61.26,61.26a63.4,63.4,0,0,1-29.26,16.48V416h45.74A63.36,63.36,0,0,1,509.31,445.25ZM480.05,384V338.25A62.4,62.4,0,0,1,525.79,384ZM589.94,80.63,521.18,256H424V80c0-1.88-.39-3.65-.55-5.49L564.59,48.4a22.59,22.59,0,0,1,22.27,8.2C589.47,59.84,595,68.6,589.94,80.63Z\"]\n};\nvar faWalker = {\n prefix: 'far',\n iconName: 'walker',\n icon: [448, 512, [], \"f831\", \"M408 388.75V88a88 88 0 0 0-88-88H186a88 88 0 0 0-85.37 66.66L.48 488.23a16 16 0 0 0 11.64 19.4l15.52 3.89a16 16 0 0 0 19.41-11.64L101.16 272H360v116.75a64 64 0 1 0 48 0zM112.56 224l34.6-145.7A40 40 0 0 1 186 48h134a40 40 0 0 1 40 40v136zM384 464a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faWalkieTalkie = {\n prefix: 'far',\n iconName: 'walkie-talkie',\n icon: [384, 512, [], \"f8ef\", \"M352 96h-32V80a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v16h-32V80a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v16h-48V16A16 16 0 0 0 96 0H80a16 16 0 0 0-16 16v80H32a32.09 32.09 0 0 0-32 32v178.74a32 32 0 0 0 9.37 22.63L32 352v112a48 48 0 0 0 48 48h224a48 48 0 0 0 48-48V352l22.63-22.63a32 32 0 0 0 9.37-22.63V128a32.09 32.09 0 0 0-32-32zm-16 204.12l-17.94 17.94L304 332.12V464H80V332.12l-14.06-14.06L48 300.12V144h288zM128 240h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H128a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16zm0 80h128a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H128a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16z\"]\n};\nvar faWalking = {\n prefix: 'far',\n iconName: 'walking',\n icon: [320, 512, [], \"f554\", \"M94.8 347.8s-.1-.1-.1-.2l-20.4 51c-2 5-5 9.6-8.9 13.4L7 470.5c-9.4 9.4-9.4 24.6 0 33.9 4.7 4.7 10.8 7 16.9 7s12.3-2.3 16.9-7l58.4-58.5c8.5-8.5 15-18.5 19.4-29.5l13.5-33.7-36.2-33.5-1.1-1.4zM207.8 96c26.5 0 47.9-21.5 47.9-48S234.2 0 207.8 0c-26.5 0-47.9 21.5-47.9 48s21.4 48 47.9 48zm104.7 174.9L283.2 242c-.9-.9-1.6-2-2-3.2L268.3 200c-14.4-43.1-54.4-72-99.8-72-34.8 0-53 8.8-95.7 26-20.9 8.4-37.9 24.1-48.2 44.8l-14.4 31.1c-13.3 28.7 30.1 49.1 43.5 20.2l14-30.4c4.8-9.6 12.9-17 22.8-21 21.7-8.7 33.1-13.5 44.3-17.1L115 260.8c-4.7 18.9.3 38.8 14.9 54.6l79 73c5.9 5.5 10 12.5 11.8 20.4l19.5 84.8c2.6 11.5 14.4 21.2 28.7 18 12.9-3 20.9-15.9 17.9-28.8l-19.5-84.7c-4-17.3-13-32.8-26-44.9l-53.8-49.6 26.2-104.8c7.4 9.7 7.5 12.6 21.8 55.4 2.8 8.3 7.5 15.9 13.8 22.2l29.3 29c22.3 21.5 56.7-11.9 33.9-34.5z\"]\n};\nvar faWallet = {\n prefix: 'far',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M448 112V96c0-35.35-28.65-64-64-64H96C42.98 32 0 74.98 0 128v256c0 53.02 42.98 96 96 96h352c35.35 0 64-28.65 64-64V176c0-35.35-28.65-64-64-64zm16 304c0 8.82-7.18 16-16 16H96c-26.47 0-48-21.53-48-48V128c0-26.47 21.53-48 48-48h288c8.82 0 16 7.18 16 16v32H112c-8.84 0-16 7.16-16 16s7.16 16 16 16h336c8.82 0 16 7.18 16 16v240zm-80-160c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faWand = {\n prefix: 'far',\n iconName: 'wand',\n icon: [512, 512, [], \"f72a\", \"M432 192a16 16 0 0 0 16-16v-34.11L502 82a38.48 38.48 0 0 0-1.31-53.09L483 11.28a38.47 38.47 0 0 0-53-1.36L157.26 256H112a16 16 0 0 0-16 16v39.28l-78.55 70.84-.06.05a53 53 0 0 0-1.87 76.76l37.53 37.52a52.94 52.94 0 0 0 76.78-1.92L402.77 192zM94.2 462.36c-.82.91-4.23 3.24-7.22.17L49.45 425c-3-3-.73-6.44.16-7.27L455.48 51.61l4.91 4.88z\"]\n};\nvar faWandMagic = {\n prefix: 'far',\n iconName: 'wand-magic',\n icon: [512, 512, [], \"f72b\", \"M80 160l26.66-53.33L160 80l-53.33-26.67L80 0 53.33 53.33 0 80l53.33 26.67L80 160zm351.99 128l-26.66 53.33L351.99 368l53.33 26.67L431.99 448l26.66-53.33L511.98 368l-53.33-26.67L431.99 288zm-208-192l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zm208 96c8.84 0 16-7.16 16-16v-34.11L502.02 82c13.81-15.22 13.22-38.53-1.31-53.09l-17.66-17.63c-14.5-14.52-37.84-15.08-53-1.36L157.28 256H112c-8.84 0-16 7.16-16 16v39.28l-78.53 70.84-.06.05C6.72 391.86.38 405.69.04 420.12c-.37 14.44 5.28 28.58 15.5 38.81l37.53 37.52c9.87 9.92 23.5 15.55 37.5 15.55 22.17 0 35.57-13.37 39.28-17.47L402.78 192h29.21zM94.22 462.36c-.82.91-4.23 3.24-7.22.17l-37.53-37.52c-2.97-3.01-.73-6.44.16-7.27L455.49 51.61l4.91 4.88L94.22 462.36z\"]\n};\nvar faWarehouse = {\n prefix: 'far',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M504 208H136c-22.1 0-40 17.9-40 40v248c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-48h352v48c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V248c0-22.1-17.9-40-40-40zm-8 208H144v-64h352v64zm0-96H144v-64h352v64zm101.9-209.9L346.3 5.3c-17-7-35.7-7.1-52.6 0L42.1 110.1C16.5 120.7 0 145.5 0 173.2V496c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V173.2c0-8.3 4.9-15.7 12.5-18.8L312.2 49.6c5.1-2.1 10.6-2.1 15.7 0l251.6 104.8c7.6 3.2 12.5 10.6 12.5 18.8V496c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V173.2c0-27.7-16.5-52.5-42.1-63.1z\"]\n};\nvar faWarehouseAlt = {\n prefix: 'far',\n iconName: 'warehouse-alt',\n icon: [640, 512, [], \"f495\", \"M528 352H352V240c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM304 464H144v-64h160v64zm0-128H144v-64h160v64zm192 128H352v-64h144v64zm101.9-353.9L346.3 5.3c-17-7-35.7-7.1-52.6 0L42.1 110.1C16.5 120.7 0 145.5 0 173.2V496c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V173.2c0-8.3 4.9-15.7 12.5-18.8L312.2 49.6c5.1-2.1 10.6-2.1 15.7 0l251.6 104.8c7.6 3.2 12.5 10.6 12.5 18.8V496c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V173.2c0-27.7-16.5-52.5-42.1-63.1z\"]\n};\nvar faWasher = {\n prefix: 'far',\n iconName: 'washer',\n icon: [446, 512, [], \"f898\", \"M383 0H63A64 64 0 0 0-1 64v416a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a64 64 0 0 0-64-64zm16 464H47V64a16 16 0 0 1 16-16h320a16 16 0 0 1 16 16zM127 104a24 24 0 1 0-24 24 24 24 0 0 0 24-24zm56 24a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm40 32a136 136 0 1 0 136 136 136 136 0 0 0-136-136zm0 226.67A90.78 90.78 0 0 1 132.33 296c0-2.89.59-5.62.86-8.44a45.71 45.71 0 0 0 19.92 4.66 48.93 48.93 0 0 0 35.07-14.79 48.38 48.38 0 0 0 69.64 0 48.93 48.93 0 0 0 35.07 14.79 45.71 45.71 0 0 0 19.92-4.66c.27 2.82.86 5.55.86 8.44A90.78 90.78 0 0 1 223 386.67z\"]\n};\nvar faWatch = {\n prefix: 'far',\n iconName: 'watch',\n icon: [384, 512, [], \"f2e1\", \"M320 112.9V24c0-13.2-10.8-24-24-24H88C74.8 0 64 10.8 64 24v88.9C24.7 148 0 199.1 0 256s24.7 108 64 143.1V488c0 13.2 10.8 24 24 24h208c13.2 0 24-10.8 24-24v-88.9c39.3-35.1 64-86.2 64-143.1s-24.7-108-64-143.1zM104 40h176v45.3C253.6 71.7 223.7 64 192 64s-61.6 7.7-88 21.3V40zm176 432H104v-45.3c26.4 13.6 56.3 21.3 88 21.3s61.6-7.7 88-21.3V472zm-88-72c-78.9 0-144-63.8-144-144 0-78.6 63.5-144 144-144 78.9 0 144 63.8 144 144 0 78.6-63.5 144-144 144zm38.3-71.6l-61.1-41.6c-3.3-2.2-5.2-5.9-5.2-9.9V164c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v89.6l41.9 28.5c5.5 3.7 6.9 11.2 3.2 16.7l-18 26.4c-3.8 5.5-11.3 6.9-16.8 3.2z\"]\n};\nvar faWatchCalculator = {\n prefix: 'far',\n iconName: 'watch-calculator',\n icon: [384, 512, [], \"f8f0\", \"M128 232H96a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8h32a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8zm80 72h-32a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8h32a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8zm-80 0H96a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8h32a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8zm160 0h-32a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8h32a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8zm-80-72h-32a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8h32a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8zm80-72H96a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8h192a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8zm32-78.39V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v49.61A80 80 0 0 0 0 160v192a80 80 0 0 0 64 78.39V480a32 32 0 0 0 32 32h192a32 32 0 0 0 32-32v-49.61A80 80 0 0 0 384 352V160a80 80 0 0 0-64-78.39zM112 48h160v32H112zm160 416H112v-32h160zm64-112a32.06 32.06 0 0 1-32 32H80a32.06 32.06 0 0 1-32-32V160a32.06 32.06 0 0 1 32-32h224a32.06 32.06 0 0 1 32 32zm-48-120h-32a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8h32a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8z\"]\n};\nvar faWatchFitness = {\n prefix: 'far',\n iconName: 'watch-fitness',\n icon: [384, 512, [], \"f63e\", \"M320 81.61V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v49.61C27.49 89.03 0 121.3 0 160v192c0 38.7 27.49 70.97 64 78.39V480c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-49.61c36.52-7.41 64-39.69 64-78.39V160c0-38.7-27.48-70.97-64-78.39zM112 48h160v32H112V48zm160 416H112v-32h160v32zm64-112c0 17.64-14.36 32-32 32H80c-17.64 0-32-14.36-32-32V160c0-17.64 14.36-32 32-32h224c17.64 0 32 14.36 32 32v192zm-71.49-150.1c-22.05-17.19-50.86-9.54-65.59 4.36l-6.93 6.54-6.93-6.54c-14.36-13.55-43.29-21.73-65.59-4.36-22.09 17.21-23.25 48.13-3.48 66.79l68.04 64.2c4.39 4.14 11.52 4.15 15.91 0l68.04-64.2c19.78-18.66 18.62-49.58-3.47-66.79z\"]\n};\nvar faWater = {\n prefix: 'far',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M561.5 399.9c-25.1-2.6-49.2-11.9-66.4-25.9-8.7-7.1-21.6-7-30.3.1-20.5 16.9-50 26.6-80.8 26.6-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-20.5 16.9-50 26.6-80.8 26.6-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-17.2 14.2-40.7 23.3-66.1 25.8-8.2.9-14.7 7.3-14.7 15.5v16.5c0 9.1 7.6 16.8 16.7 16 28.9-2.5 56.5-11.5 79.3-25.8 54.9 34.2 137.9 33.9 192 0 54.9 34.2 137.9 33.9 192 0 22.9 14.3 50.5 23.3 79.2 25.8 9.1.8 16.7-6.9 16.7-16v-16.7c.1-8.1-6.3-14.4-14.4-15.3zm0-304.7c-25.1-2.6-49.2-11.9-66.4-25.9-8.7-7.1-21.6-7-30.3.1C444.3 86.3 414.8 96 384 96c-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1C252.3 86.3 222.8 96 192 96c-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-17.2 14.1-40.7 23.2-66.1 25.8C6.5 96 0 102.4 0 110.7v16.5c0 9.1 7.6 16.8 16.7 16 28.9-2.5 56.5-11.5 79.3-25.8 54.9 34.2 137.9 33.9 192 0 54.9 34.2 137.9 33.9 192 0 22.9 14.3 50.5 23.3 79.2 25.8 9.1.8 16.7-6.9 16.7-16v-16.7c.1-8.2-6.3-14.5-14.4-15.3zm0 152c-25.1-2.6-49.2-11.9-66.4-25.9-8.7-7.1-21.6-7-30.3.1-20.5 16.9-50 26.6-80.8 26.6-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-20.5 16.9-50 26.6-80.8 26.6-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-17.2 14.2-40.7 23.3-66.1 25.8C6.5 248 0 254.4 0 262.7v16.5c0 9.1 7.6 16.8 16.7 16 28.9-2.5 56.5-11.5 79.3-25.8 54.9 34.2 137.9 33.9 192 0 54.9 34.2 137.9 33.9 192 0 22.9 14.3 50.5 23.3 79.2 25.8 9.1.8 16.7-6.9 16.7-16v-16.7c.1-8.2-6.3-14.5-14.4-15.3z\"]\n};\nvar faWaterLower = {\n prefix: 'far',\n iconName: 'water-lower',\n icon: [576, 512, [], \"f774\", \"M276.7 219.4c6.2 6.2 16.3 6.2 22.5 0l97.7-97c6.3-6.2 6.3-16.4.1-22.6l-11.3-11.4c-6.2-6.3-16.4-6.3-22.6-.1L312 139.1V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v123.1l-51.1-50.8c-6.3-6.2-16.4-6.2-22.6.1L179 99.8c-6.2 6.3-6.2 16.4.1 22.6l97.6 97zm284.8 244.5c-25.1-2.6-49.2-11.9-66.4-25.9-8.7-7.1-21.6-7-30.3.1-20.5 16.9-50 26.6-80.8 26.6-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-20.5 16.9-50 26.6-80.8 26.6-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-17.2 14.2-40.7 23.3-66.1 25.8-8.2.9-14.7 7.3-14.7 15.5v16.5c0 9.1 7.6 16.8 16.7 16 28.9-2.5 56.5-11.5 79.3-25.8 54.9 34.2 137.9 33.9 192 0 54.9 34.2 137.9 33.9 192 0 22.9 14.3 50.5 23.3 79.2 25.8 9.1.8 16.7-6.9 16.7-16v-16.7c.1-8.1-6.3-14.4-14.4-15.3zm0-144.7c-25.1-2.6-49.2-11.9-66.4-25.9-8.7-7.1-21.6-7-30.3.1-20.5 16.9-50 26.6-80.8 26.6-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-20.5 16.9-50 26.6-80.8 26.6-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-17.2 14.2-40.7 23.3-66.1 25.8C6.5 320 0 326.4 0 334.7v16.5c0 9.1 7.6 16.8 16.7 16 28.9-2.5 56.5-11.5 79.3-25.8 54.9 34.2 137.9 33.9 192 0 54.9 34.2 137.9 33.9 192 0 22.9 14.3 50.5 23.3 79.2 25.8 9.1.8 16.7-6.9 16.7-16v-16.7c.1-8.2-6.3-14.5-14.4-15.3z\"]\n};\nvar faWaterRise = {\n prefix: 'far',\n iconName: 'water-rise',\n icon: [576, 512, [], \"f775\", \"M190.2 135.6c6.2 6.3 16.4 6.3 22.6.1L264 84.9V208c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V84.9l51.1 50.8c6.3 6.2 16.4 6.2 22.6-.1l11.3-11.4c6.2-6.3 6.2-16.4-.1-22.6l-97.7-97c-6.2-6.2-16.3-6.2-22.5 0l-97.7 97c-6.3 6.2-6.3 16.4-.1 22.6l11.3 11.4zm371.3 328.3c-25.1-2.6-49.2-11.9-66.4-25.9-8.7-7.1-21.6-7-30.3.1-20.5 16.9-50 26.6-80.8 26.6-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-20.5 16.9-50 26.6-80.8 26.6-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-17.2 14.2-40.7 23.3-66.1 25.8-8.2.9-14.7 7.3-14.7 15.5v16.5c0 9.1 7.6 16.8 16.7 16 28.9-2.5 56.5-11.5 79.3-25.8 54.9 34.2 137.9 33.9 192 0 54.9 34.2 137.9 33.9 192 0 22.9 14.3 50.5 23.3 79.2 25.8 9.1.8 16.7-6.9 16.7-16v-16.7c.1-8.1-6.3-14.4-14.4-15.3zm0-144.7c-25.1-2.6-49.2-11.9-66.4-25.9-8.7-7.1-21.6-7-30.3.1-20.5 16.9-50 26.6-80.8 26.6-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-20.5 16.9-50 26.6-80.8 26.6-30.1 0-60.3-10-80.9-26.7-8.7-7.1-21.6-7-30.3.1-17.2 14.2-40.7 23.3-66.1 25.8C6.5 320 0 326.4 0 334.7v16.5c0 9.1 7.6 16.8 16.7 16 28.9-2.5 56.5-11.5 79.3-25.8 54.9 34.2 137.9 33.9 192 0 54.9 34.2 137.9 33.9 192 0 22.9 14.3 50.5 23.3 79.2 25.8 9.1.8 16.7-6.9 16.7-16v-16.7c.1-8.2-6.3-14.5-14.4-15.3z\"]\n};\nvar faWaveSine = {\n prefix: 'far',\n iconName: 'wave-sine',\n icon: [640, 512, [], \"f899\", \"M628.41 261.07L613 256.63a15.88 15.88 0 0 0-19.55 10.16C572.85 329.76 511.64 432 464 432c-52.09 0-87.41-93.77-121.53-184.45C302.56 141.58 261.31 32 176 32 87.15 32 17.77 178.46.78 230.69a16 16 0 0 0 10.81 20.23L27 255.36a15.87 15.87 0 0 0 19.55-10.15C67.15 182.24 128.36 80 176 80c52.09 0 87.41 93.77 121.53 184.45C337.44 370.42 378.69 480 464 480c88.85 0 158.23-146.46 175.22-198.7a16 16 0 0 0-10.81-20.23z\"]\n};\nvar faWaveSquare = {\n prefix: 'far',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M472 480H328a32 32 0 0 1-32-32V80H184v168a32 32 0 0 1-32 32H8a8 8 0 0 1-8-8v-32a8 8 0 0 1 8-8h128V64a32 32 0 0 1 32-32h144a32 32 0 0 1 32 32v368h112V264a32 32 0 0 1 32-32h144a8 8 0 0 1 8 8v32a8 8 0 0 1-8 8H504v168a32 32 0 0 1-32 32z\"]\n};\nvar faWaveTriangle = {\n prefix: 'far',\n iconName: 'wave-triangle',\n icon: [640, 512, [], \"f89a\", \"M464 480h-.31a24 24 0 0 1-19.16-10L175.5 96.38l-134 185.29a16 16 0 0 1-22.42 3.08l-12.75-9.67a16 16 0 0 1-3.08-22.42L156.88 41.5A24 24 0 0 1 176 32h.31a24 24 0 0 1 19.16 10l269 373.64 134-185.29a16 16 0 0 1 22.42-3.08l12.75 9.67a16 16 0 0 1 3.08 22.42L483.13 470.5A24 24 0 0 1 464 480z\"]\n};\nvar faWaveform = {\n prefix: 'far',\n iconName: 'waveform',\n icon: [640, 512, [], \"f8f1\", \"M328 0h-16a16 16 0 0 0-16 16v480a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16zm-96 96h-16a16 16 0 0 0-16 16v288a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V112a16 16 0 0 0-16-16zm192 32h-16a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V144a16 16 0 0 0-16-16zm96-64h-16a16 16 0 0 0-16 16v352a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zM136 192h-16a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 32H24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm576 0h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faWaveformPath = {\n prefix: 'far',\n iconName: 'waveform-path',\n icon: [640, 512, [], \"f8f2\", \"M628 268h-52.09l-20.44-92.48a20 20 0 0 0-38.94-.07L484.75 315.7l-33-234.53a20 20 0 0 0-39.65.45l-29.5 250-42.79-314.35a20 20 0 0 0-39.62 0l-42.81 314.37-29.5-250a20 20 0 0 0-39.66-.44l-33 234.53-31.75-140.28a20 20 0 0 0-38.94.05L64.09 268H12a12 12 0 0 0-12 12v16a12 12 0 0 0 12 12h68a19.87 19.87 0 0 0 19.47-15.5l4.66-19.94 36.4 160c2.22 9.69 9.78 15.44 20.25 15.44h.22a19.94 19.94 0 0 0 18.75-17.16l26.5-189.36 29.85 252.91a20 20 0 0 0 39.68.34L320 170.36l44.19 324.37a20 20 0 0 0 39.69-.34l29.84-252.91 26.5 189.33A20 20 0 0 0 479.13 448c9.93.53 18.06-5.63 20.34-15.44l36.41-160 4.65 19.92A19.88 19.88 0 0 0 560 308h68a12 12 0 0 0 12-12v-16a12 12 0 0 0-12-12z\"]\n};\nvar faWebcam = {\n prefix: 'far',\n iconName: 'webcam',\n icon: [448, 512, [], \"f832\", \"M401 438.6l-49.19-30.75C409.88 367.39 448 300.19 448 224 448 100.29 347.71 0 224 0S0 100.29 0 224c0 76.19 38.12 143.39 96.23 183.85L47 438.6a32 32 0 0 0-15 27.14V480a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32v-14.26a32 32 0 0 0-15-27.14zM224 400a176 176 0 1 1 176-176 176 176 0 0 1-176 176zm0-320c-79.41 0-144 64.59-144 144s64.59 144 144 144 144-64.59 144-144S303.41 80 224 80zm0 240a96 96 0 1 1 96-96 96.1 96.1 0 0 1-96 96zm0-160a64.07 64.07 0 0 0-64 64 16 16 0 0 0 32 0 32 32 0 0 1 32-32 16 16 0 0 0 0-32z\"]\n};\nvar faWebcamSlash = {\n prefix: 'far',\n iconName: 'webcam-slash',\n icon: [640, 512, [], \"f833\", \"M634 471L36 3.51A16 16 0 0 0 13.51 6l-10 12.49A16 16 0 0 0 6 41l598 467.49a16 16 0 0 0 22.49-2.49l10-12.49A16 16 0 0 0 634 471zM455.58 270.61c5.08-14.7 8.42-30.21 8.42-46.61 0-79.41-64.59-144-144-144a142.89 142.89 0 0 0-78.26 23.43l41 32.09a94.54 94.54 0 0 1 131.75 103zM320 48a176 176 0 0 1 162.48 243.64l38.63 30.2A222.06 222.06 0 0 0 544 224C544 100.29 443.71 0 320 0a223 223 0 0 0-143.71 52.26l39 30.5A175 175 0 0 1 320 48zm0 320a142.8 142.8 0 0 0 23.35-2.36L177.18 235.73C183.27 309.58 244.61 368 320 368zm0 32a176 176 0 0 1-176-176c0-4.62.34-9.15.69-13.67l-43.49-34A224.17 224.17 0 0 0 96 224c0 76.19 38.11 143.39 96.23 183.85L143 438.6a32 32 0 0 0-15 27.14V480a32 32 0 0 0 32 32h320c12.39 0 22.81-7.25 28.14-17.54L375.63 390.88A175.61 175.61 0 0 1 320 400z\"]\n};\nvar faWeight = {\n prefix: 'far',\n iconName: 'weight',\n icon: [512, 512, [], \"f496\", \"M448 64h-64.81C353.95 25.38 308.07 0 256 0s-97.95 25.38-127.19 64H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 48c61.86 0 112 50.14 112 112s-50.14 112-112 112-112-50.14-112-112S194.14 48 256 48zm208 400c0 8.84-7.16 16-16 16H64c-8.84 0-16-7.16-16-16V128c0-8.84 7.16-16 16-16h40.17C99.33 127.25 96 143.17 96 160c0 88.22 71.78 160 160 160s160-71.78 160-160c0-16.83-3.33-32.75-8.17-48H448c8.84 0 16 7.16 16 16v320zM256 240c17.67 0 32-14.33 32-32 0-8.06-3.25-15.22-8.18-20.85l23.36-70.09c6.66-20.08-23.63-30.2-30.38-10.12l-23.47 70.41C234.97 180.49 224 192.69 224 208c0 17.67 14.33 32 32 32z\"]\n};\nvar faWeightHanging = {\n prefix: 'far',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-72.41c6.2-12.05 10.04-25.51 10.04-40 0-48.6-39.4-88-88-88s-88 39.4-88 88c0 14.49 3.83 27.95 10.04 40h-72.41c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM216 88c0-22.06 17.94-40 40-40s40 17.94 40 40c0 22.05-17.94 40-40 40s-40-17.95-40-40zm246.72 376H49.28c-.7-.96-1.81-3.23-1-6.5L118.66 176h274.68l70.38 281.5c.81 3.27-.3 5.54-1 6.5z\"]\n};\nvar faWhale = {\n prefix: 'far',\n iconName: 'whale',\n icon: [640, 512, [], \"f72c\", \"M512 128c-141.14 0-207.15 83.47-308.69 182.31-3.26 3.26-7.27 4.72-11.2 4.72-8.23 0-16.12-6.39-16.12-16.03v-62.87l31.38-16.49C217.76 213.7 224 203.7 224 193V80.03c0-9.41-9.01-16.03-18.72-16.03h-.01c-3.47 0-7.02.85-10.29 2.71L112 114.13 29.02 66.71A20.781 20.781 0 0 0 18.72 64C9.01 64 0 70.61 0 80.03V193c0 10.7 6.24 20.69 16.62 26.62L48 236.12v80C48 388.96 107.04 448 179.88 448H544c53.02 0 96-42.98 96-96v-96c0-70.69-57.31-128-128-128zm80 224c0 26.47-21.53 48-48 48H179.88C133.63 400 96 362.37 96 316.12v-109l-25.67-13.49L48 181.89v-49.05l40.19 22.96L112 169.42l23.82-13.61L176 132.84v49.05l-22.33 11.74L128 207.12v91.87c0 35.31 28.76 64.03 64.12 64.03 17 0 33.03-6.67 44.68-18.32 11.53-11.22 22.6-22.24 33.38-32.97C352.28 230 406.52 176 512 176c44.11 0 80 35.89 80 80v96zm-160-72c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24z\"]\n};\nvar faWheat = {\n prefix: 'far',\n iconName: 'wheat',\n icon: [512, 512, [], \"f72d\", \"M460.88 152.46c-3.16-3.16 2.2-.13 18.18-14.98 26.56-28.87 34.75-75.08 32.62-120.15C510.75-2.33 487.66.1 481.05.1c-34.29 0-76.94 6.42-105.69 33.16-18.54 18.64-11.73 21.82-16.26 17.29l-39.56-39.59c-6.26-6.26-16.37-6.24-22.6 0l-34.08 34.1c-12.59 12.6-20.57 27.91-24.71 44.01-11.18-8.16-20.36 1.13-20.57 1.35l-33.69 33.71c-12.58 12.59-20.57 27.9-24.7 43.99-11.19-8.16-20.35 1.14-20.57 1.36l-33.87 33.89c-37.49 37.51-37.49 98.35 0 135.87l16.95 16.96L7.03 471.01c-9.37 9.38-9.37 24.58 0 33.95 4.69 4.69 10.8 7.04 16.96 7.04s12.27-2.35 16.96-7.04l114.68-114.8 16.93 16.96c37.46 37.52 98.22 37.54 135.7 0L342.31 373c5.64-5.65 5.9-14.34 1.35-20.6 16.08-4.14 31.37-12.13 43.96-24.74l33.67-33.73c5.64-5.65 5.9-14.34 1.35-20.59 16.07-4.14 31.35-12.13 43.93-24.73l33.85-33.91c6.24-6.25 6.24-16.38 0-22.63l-39.54-39.61zM166.9 310.93l-11.29 11.31-16.95-16.97c-18.74-18.76-18.77-49.15 0-67.93l11.27-11.28 16.95 16.97c9.07 9.07 14.06 21.13 14.06 33.97 0 12.82-4.99 24.87-14.04 33.93zm129.87-231.9l11.47-11.48 16.95 16.96c18.74 18.75 18.77 49.15 0 67.93l-11.47 11.48-16.95-16.96c-18.74-18.74-18.78-49.14 0-67.93zM217.8 158.1l11.08-11.09 16.95 16.96c18.74 18.75 18.78 49.13.01 67.93L234.75 243l-16.95-16.96c-18.74-18.76-18.77-49.15 0-67.94zm56.53 215.07c-18.74 18.78-49.1 18.79-67.85 0l-16.94-16.97 11.54-11.55c18.8-18.76 49.09-18.65 67.77.06l16.94 16.97-11.46 11.49zm79.36-79.45c-18.74 18.78-49.1 18.79-67.85 0l-16.94-16.97 11.08-11.1c18.75-18.78 49.1-18.79 67.85 0l16.94 16.97-11.08 11.1zm78.95-79.06c-18.75 18.78-49.1 18.79-67.85 0l-16.94-16.97 11.26-11.28c18.75-18.78 49.1-18.79 67.85 0l16.94 16.97-11.26 11.28zm-42.65-92.63c1.6-20.03 6.74-41.62 18.71-54.22 11.53-10.28 30.54-16.82 54.59-18.93-2.06 23.83-8.38 42.97-18.28 54.68-11.83 10.14-30.97 16.52-55.02 18.47z\"]\n};\nvar faWheelchair = {\n prefix: 'far',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M500.1 399.78l10.65 21.494c2.937 5.928.522 13.116-5.399 16.067l-63.278 32.164c-12.134 6.014-26.981.801-32.571-11.723L344.431 312H184.003c-12.03 0-22.203-8.908-23.792-20.833C125.74 32.641 128.263 52.443 128 48c0-27.152 22.544-49.038 49.935-47.962 24.787.974 44.979 21.107 46.021 45.892 1.06 25.208-17.335 46.326-41.405 49.614L192.212 168H340c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H198.613l6.4 48H360a23.999 23.999 0 0 1 21.916 14.218l61.233 137.185 40.834-21.029c5.943-2.971 13.168-.547 16.117 5.406zM313.291 360h-11.558C290.467 419.146 238.377 464 176 464c-70.579 0-128-57.421-128-128 0-43.765 22.083-82.463 55.686-105.556l-6.884-51.587C39.428 207.89 0 267.423 0 336c0 97.047 78.953 176 176 176 70.605 0 131.621-41.797 159.636-101.941L313.291 360z\"]\n};\nvar faWhistle = {\n prefix: 'far',\n iconName: 'whistle',\n icon: [640, 512, [], \"f460\", \"M250.6 254c0 22.3-18.1 40.4-40.4 40.4s-40.4-18.1-40.4-40.4c0-22.3 18.1-40.4 40.4-40.4s40.4 18.1 40.4 40.4zm231.9-50.2L633.9 325c6.8 5.5 8.1 15.3 2.8 22.3l-79 105.3c-4.9 6.5-13.9 8.4-20.9 4.3l-151.7-86.8c-7.6 11.4-16.4 22.3-26.5 32.4-41 41-94.7 61.5-148.5 61.5-157 0-258.4-166.6-186.8-306A64.714 64.714 0 0 1 .2 108.4c0-35.6 29-64.6 64.6-64.6 19.2 0 36.9 8.8 49.1 23.4C144 51.7 177 44.1 210 44.1c86.7 0 126.5 42.9 194.5 97.3 5.3 4.3 7.4 11.4 5.2 17.9L399.5 189c-1.1 3.2-.1 6.8 2.6 8.9l25.5 20.4c2.6 2.1 6.3 2.4 9.2.6l27.5-16.4c5.7-3.4 13-2.9 18.2 1.3zM41 129.8c6.3-8.5 13-16.8 20.7-24.5 7.8-7.8 16.1-14.6 24.7-20.9-5.9-5.3-13.5-8.3-21.6-8.3-17.8 0-32.3 14.5-32.3 32.3 0 8.1 3.3 15.6 8.5 21.4zm533.5 219.7c2.6-3.5 2-8.4-1.4-11.2l-103.4-82.7-32.3 19.2c-5.8 3.4-13.1 2.9-18.3-1.3L349.6 218c-5.3-4.3-7.4-11.4-5.2-17.9l12.1-35.2s-52-41.5-60.6-47.8C262.1 95.9 170.5 65 96 139.5 33 202.5 33 305 96 368c30.5 30.5 71.1 47.5 114.2 47.5 102.1 0 142.2-83.7 159.7-109.9L530 397.2c3.5 2 8 1.1 10.5-2.2l34-45.5z\"]\n};\nvar faWifi = {\n prefix: 'far',\n iconName: 'wifi',\n icon: [640, 512, [], \"f1eb\", \"M320 368c17.64 0 32 14.36 32 32s-14.36 32-32 32-32-14.36-32-32 14.35-32 32-32m0-48c-44.18 0-80 35.82-80 80s35.82 80 80 80 80-35.82 80-80-35.82-80-80-80zm204.69-31.83c4.62-4.87 4.38-12.64-.59-17.15-115.74-105.32-292.41-105.38-408.22 0-4.96 4.51-5.2 12.28-.59 17.15l16.47 17.37c4.46 4.71 11.81 4.95 16.62.6 97.44-88.13 245.68-88.21 343.22 0 4.81 4.35 12.16 4.1 16.62-.6l16.47-17.37zm111.42-133.98C457.86-8.86 181.84-8.59 3.89 154.19c-4.94 4.52-5.22 12.14-.57 16.95l16.6 17.18c4.52 4.68 12.01 4.93 16.81.54 159.59-145.79 406.82-145.91 566.54 0 4.81 4.39 12.29 4.13 16.81-.54l16.6-17.18c4.65-4.81 4.37-12.44-.57-16.95z\"]\n};\nvar faWifi1 = {\n prefix: 'far',\n iconName: 'wifi-1',\n icon: [640, 512, [], \"f6aa\", \"M320 368c17.64 0 32 14.36 32 32s-14.36 32-32 32-32-14.36-32-32 14.35-32 32-32m0-48c-44.18 0-80 35.82-80 80s35.82 80 80 80 80-35.82 80-80-35.82-80-80-80z\"]\n};\nvar faWifi2 = {\n prefix: 'far',\n iconName: 'wifi-2',\n icon: [640, 512, [], \"f6ab\", \"M320 368c17.64 0 32 14.36 32 32s-14.36 32-32 32-32-14.36-32-32 14.35-32 32-32m0-48c-44.18 0-80 35.82-80 80s35.82 80 80 80 80-35.82 80-80-35.82-80-80-80zm204.69-31.83c4.62-4.87 4.38-12.64-.59-17.15-115.74-105.32-292.41-105.38-408.22 0-4.96 4.51-5.2 12.28-.59 17.15l16.47 17.37c4.46 4.71 11.81 4.95 16.62.6 97.44-88.13 245.68-88.21 343.22 0 4.81 4.35 12.16 4.1 16.62-.6l16.47-17.37z\"]\n};\nvar faWifiSlash = {\n prefix: 'far',\n iconName: 'wifi-slash',\n icon: [640, 512, [], \"f6ac\", \"M36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.53-6.9 4.41-16.97-2.49-22.49L36 3.51zm467.18 304.31c1.77-.6 3.67-.83 5.05-2.29l16.46-17.37c4.62-4.87 4.38-12.64-.58-17.15-47.67-43.38-105.71-68.61-165.55-76.26l144.62 113.07zm100.09-118.96c4.8 4.39 12.29 4.13 16.81-.54l16.6-17.19c4.65-4.81 4.37-12.43-.57-16.95C509.51 38.38 333.7 5.4 178.62 54.08l46.71 36.52c130.7-29.93 273.12 2.51 377.94 98.26zM3.89 154.18c-4.94 4.52-5.22 12.14-.57 16.95l16.6 17.19c4.52 4.68 12.01 4.93 16.81.54 12.72-11.62 26.16-21.97 39.9-31.74L37.34 126.4c-11.47 8.69-22.66 17.91-33.45 27.78zm112 116.83c-4.96 4.52-5.2 12.28-.58 17.15l16.46 17.37c4.46 4.71 11.81 4.95 16.62.6 19.7-17.81 41.53-31.84 64.54-42.46l-41.51-32.45c-19.55 11.03-38.28 24.09-55.53 39.79zM240 400c0 44.18 35.82 80 80 80 41.03 0 74.45-31 79.07-70.79l-107.24-83.84C261.6 336.79 240 365.77 240 400zm80-32c17.64 0 32 14.36 32 32s-14.36 32-32 32-32-14.36-32-32 14.36-32 32-32z\"]\n};\nvar faWind = {\n prefix: 'far',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M16 224h336c59.8 0 106.8-54.6 93.8-116.7-7.6-36.3-36.9-65.6-73.2-73.2-55.9-11.7-105.8 25.4-115.1 76.6-1.6 9 5.8 17.2 14.9 17.2h18.4c7.2 0 12.9-5.2 14.7-12.1 6.6-25.2 33.2-42.4 61.7-33.5 14.3 4.4 25.9 16.1 30.4 30.4 10.3 32.9-14.2 63.3-45.6 63.3H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16zm144 32H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h144c31.4 0 55.9 30.3 45.6 63.3-4.4 14.3-16.1 25.9-30.4 30.4-28.5 8.9-55.1-8.3-61.7-33.5-1.8-6.9-7.5-12.1-14.7-12.1H80.5c-9.2 0-16.6 8.2-14.9 17.2 9.3 51.2 59.2 88.3 115.1 76.6 36.3-7.6 65.6-36.9 73.2-73.2C266.8 310.6 219.8 256 160 256zm235.3 0H243.8c5.4 4.8 10.9 9.6 15.5 15.3 8.1 9.9 13.9 21.1 18.6 32.7h119.2c33.4 0 63.3 24.4 66.5 57.6 3.7 38.1-26.3 70.4-63.7 70.4-27.7 0-51.1-17.7-60-42.4-1.2-3.3-4.1-5.6-7.6-5.6h-33.1c-5 0-9 4.6-7.9 9.5C302.9 443 347 480 400 480c63 0 113.8-52 111.9-115.4-1.8-61.3-55.3-108.6-116.6-108.6z\"]\n};\nvar faWindTurbine = {\n prefix: 'far',\n iconName: 'wind-turbine',\n icon: [514, 512, [], \"f89b\", \"M350.1 480h-24.27l-3-46-52.03-61.3 7 107.3h-43.56l9.06-139.69-26.9-31.68a24 24 0 0 0-16-8.78l-2.52-.27L186.17 480H161.9a36.94 36.94 0 0 0-33 20.42A8 8 0 0 0 136 512h240a8 8 0 0 0 7.15-11.58A36.93 36.93 0 0 0 350.1 480zm48.59-54.21l-88.35-182.32a55.73 55.73 0 0 1-.73-42.79l73.28-179.07a15.8 15.8 0 0 0-27.5-15.07L241.27 163.21a55.74 55.74 0 0 1-36.47 22.4L13.32 215.94A15.81 15.81 0 0 0 0 231.89v.23a15.8 15.8 0 0 0 14.1 15.35L203.83 268a55.78 55.78 0 0 1 37.54 20.58l130.31 153.5a15.81 15.81 0 0 0 20.53 3.63l.19-.12a15.79 15.79 0 0 0 6.29-19.8zM256 248a24 24 0 1 1 24-24 24 24 0 0 1-24 24z\"]\n};\nvar faWindWarning = {\n prefix: 'far',\n iconName: 'wind-warning',\n icon: [640, 512, [], \"f776\", \"M544 320H420.1c-9.2 17.4-20.7 33.4-33.7 48H544c31.4 0 55.9 30.3 45.6 63.3-4.4 14.3-16.1 25.9-30.4 30.4-28.5 8.9-55.1-8.3-61.7-33.5-1.8-6.9-7.5-12.1-14.7-12.1h-18.4c-9.2 0-16.6 8.2-14.9 17.2 9.3 51.2 59.2 88.3 115.1 76.6 36.3-7.6 65.6-36.9 73.2-73.2 13-62.1-34-116.7-93.8-116.7zm93.8-148.7c-7.6-36.3-36.9-65.6-73.2-73.2-55.9-11.7-105.8 25.4-115.1 76.6-1.6 9 5.8 17.2 14.9 17.2h18.4c7.2 0 12.9-5.2 14.7-12.1 6.6-25.2 33.2-42.4 61.7-33.5 14.3 4.5 25.9 16.1 30.4 30.4 10.2 32.9-14.2 63.3-45.6 63.3h-98.4c-2.2 16.6-6.2 32.6-11.6 48h110c59.8 0 106.8-54.6 93.8-116.7zM208 256c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm28.7-160h-57.4c-10 0-17.6 9.1-15.7 18.9l18 96c1.4 7.6 8 13.1 15.7 13.1h21.4c7.7 0 14.3-5.5 15.7-13.1l18-96c1.9-9.8-5.7-18.9-15.7-18.9zM208 0C93.1 0 0 93.1 0 208s93.1 208 208 208 208-93.1 208-208S322.9 0 208 0zm0 368c-88.2 0-160-71.8-160-160S119.8 48 208 48s160 71.8 160 160-71.8 160-160 160z\"]\n};\nvar faWindow = {\n prefix: 'far',\n iconName: 'window',\n icon: [512, 512, [], \"f40e\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-208 80c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm-96 0c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm-96 0c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm400 314c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V192h416v234z\"]\n};\nvar faWindowAlt = {\n prefix: 'far',\n iconName: 'window-alt',\n icon: [512, 512, [], \"f40f\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-80 80c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm-96 0c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm-96 0c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm272 314c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V192h416v234z\"]\n};\nvar faWindowClose = {\n prefix: 'far',\n iconName: 'window-close',\n icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v340zM356.5 194.6L295.1 256l61.4 61.4c4.6 4.6 4.6 12.1 0 16.8l-22.3 22.3c-4.6 4.6-12.1 4.6-16.8 0L256 295.1l-61.4 61.4c-4.6 4.6-12.1 4.6-16.8 0l-22.3-22.3c-4.6-4.6-4.6-12.1 0-16.8l61.4-61.4-61.4-61.4c-4.6-4.6-4.6-12.1 0-16.8l22.3-22.3c4.6-4.6 12.1-4.6 16.8 0l61.4 61.4 61.4-61.4c4.6-4.6 12.1-4.6 16.8 0l22.3 22.3c4.7 4.6 4.7 12.1 0 16.8z\"]\n};\nvar faWindowFrame = {\n prefix: 'far',\n iconName: 'window-frame',\n icon: [512, 512, [], \"e04f\", \"M496,464H480V32A32,32,0,0,0,448,0H64A32,32,0,0,0,32,32V464H16A16,16,0,0,0,0,480v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V480A16,16,0,0,0,496,464Zm-264,0H80V272H232Zm0-240H80V48H232ZM432,464H280V272H432Zm0-240H280V48H432Z\"]\n};\nvar faWindowFrameOpen = {\n prefix: 'far',\n iconName: 'window-frame-open',\n icon: [512, 512, [], \"e050\", \"M496,464H480V304H432V464H80V304H32V464H16A16,16,0,0,0,0,480v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V480A16,16,0,0,0,496,464ZM480,32A32,32,0,0,0,448,0H64A32,32,0,0,0,32,32V272H480ZM232,224H80V48H232Zm200,0H280V48H432Z\"]\n};\nvar faWindowMaximize = {\n prefix: 'far',\n iconName: 'window-maximize',\n icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V192h416v234z\"]\n};\nvar faWindowMinimize = {\n prefix: 'far',\n iconName: 'window-minimize',\n icon: [512, 512, [], \"f2d1\", \"M480 480H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faWindowRestore = {\n prefix: 'far',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M464 0H144c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-96 464H48V256h320v208zm96-96h-48V144c0-26.5-21.5-48-48-48H144V48h320v320z\"]\n};\nvar faWindsock = {\n prefix: 'far',\n iconName: 'windsock',\n icon: [512, 512, [], \"f777\", \"M484.2 148.3l-389.9-52C105.1 86.2 112 72 112 56c0-30.9-25.1-56-56-56S0 25.1 0 56c0 22.3 13.1 41.4 32 50.4V496c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V369.6l404.2-53.9C500.1 313.6 512 300 512 284V180c0-16-11.9-29.6-27.8-31.7zM320 174.8v114.3L224 302V162l96 12.8zm-240-32l80 10.7v157l-80 10.7V142.8zM464 270l-80 10.7v-97.3l80 10.7V270z\"]\n};\nvar faWineBottle = {\n prefix: 'far',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M500.75 72.77l-61.54-61.56c-15.03-14.97-39.47-14.94-54.44.03l-43.16 43.15c-8.56 8.6-12.22 20.28-10.97 31.51l-25.16 25.16c-48.85-14.3-101.44-1.13-137.91 35.38L24.03 290.01C8.53 305.48 0 326.08 0 347.99c0 21.93 8.53 42.52 24.03 57.99l82.01 82.06c16 15.97 36.97 23.96 57.97 23.96s42-7.99 58-23.97l143.57-143.57c36.5-36.54 49.6-89.2 35.38-137.93l25.13-25.14c11.34 1.2 22.94-2.41 31.53-11.02l43.13-43.15c15-15.01 15-39.43 0-54.45zM309.76 332.4l-73.38 73.38-130.11-130.13 73.37-73.39L309.76 332.4zM139.98 454.08l-82.01-82.05c-6.44-6.42-9.97-14.96-9.97-24.05 0-9.08 3.53-17.61 9.97-24.04l25.67-25.68L213.76 428.4l-25.68 25.68c-13.19 13.26-34.79 13.29-48.1 0zM430.4 129.7l-10.25-10.25-75.29 75.28 6.31 14.89c14.55 34.38 7.11 73.52-18.84 100.09L202.34 179.7c44.99-43.96 98.43-19.55 100.08-18.85l14.88 6.3 75.22-75.26-10.22-10.27 29.69-29.72 48.1 48.1-29.69 29.7z\"]\n};\nvar faWineGlass = {\n prefix: 'far',\n iconName: 'wine-glass',\n icon: [288, 512, [], \"f4e3\", \"M216 464h-48V348.54c72.6-12.52 126.31-78.75 119.4-155.88L271.45 14.55C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.31 269.79 47.4 336.03 120 348.54V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zm-85.01-161.73c-51.16-7.1-87.28-52.88-82.58-105.33L61.75 48h164.5l13.34 148.94c4.7 52.45-31.42 98.23-82.58 105.33h-26.02z\"]\n};\nvar faWineGlassAlt = {\n prefix: 'far',\n iconName: 'wine-glass-alt',\n icon: [288, 512, [], \"f5ce\", \"M216 464h-48V348.54c72.6-12.52 126.31-78.75 119.4-155.88L271.45 14.55C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.31 269.79 47.4 336.03 120 348.54V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zm10.25-416l7.17 80H54.58l7.17-80h164.5zM48.41 196.94L50.28 176h187.43l1.88 20.94c4.7 52.45-31.42 98.23-82.58 105.33h-26.03c-51.15-7.1-87.27-52.89-82.57-105.33z\"]\n};\nvar faWonSign = {\n prefix: 'far',\n iconName: 'won-sign',\n icon: [576, 512, [], \"f159\", \"M564 168c6.6 0 12-5.4 12-12v-24c0-6.6-5.4-12-12-12h-46.1l17.3-72.8c1.8-7.5-3.9-14.8-11.7-14.8h-30.8c-5.6 0-10.5 3.9-11.7 9.3L463.2 120h-130l-18.9-78.4c-1.3-5.4-6.1-9.2-11.7-9.2H271c-5.5 0-10.4 3.8-11.7 9.2L240.5 120H112.6L95.5 41.8c-1.2-5.5-6.1-9.4-11.7-9.4H55c-7.7 0-13.4 7.2-11.7 14.7L60.1 120H12c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h59.2l11.1 48H12c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12h81.4l47.7 206.7c1.3 5.4 6.1 9.3 11.7 9.3h42c5.5 0 10.4-3.8 11.7-9.2L256.3 264h61.1l49.9 206.8c1.3 5.4 6.1 9.2 11.7 9.2h44c5.6 0 10.4-3.8 11.7-9.2l49-206.8H564c6.6 0 12-5.4 12-12v-24c0-6.6-5.4-12-12-12h-68.9l11.4-48zM182.4 360.8c-5.7 24.7-8.6 47.5-8.6 47.5h-1.1s-2.3-23.5-7.5-47.5L144.1 264h61.7zM217.3 216h-83.8L123 168h105.8zm50.6 0l6.4-26.4c1.7-7 3.3-14.4 4.7-21.6h15.8c1.4 7.2 3 14.6 4.7 21.6l6.4 26.4zm140.6 144.8c-5.7 24.1-7.5 47.5-7.5 47.5h-1.1s-2.9-22.8-8.6-47.5L367.9 264h62.5zM441.4 216h-85l-11.6-48h107.5z\"]\n};\nvar faWreath = {\n prefix: 'far',\n iconName: 'wreath',\n icon: [448, 512, [], \"f7e2\", \"M298.9 384.8L224 416l-74.9-31.2c-10.4-3.5-21.1 4.3-21.1 15.2v96c0 10.9 10.7 18.6 21.1 15.2L224 480l74.9 31.2c10.4 3.5 21.1-4.3 21.1-15.2v-96c0-10.9-10.7-18.6-21.1-15.2zm10.9-193.9c-.7-6.4-1.7-16-7.8-24.7-6.3-9-15-13.1-20.7-15.8-4.1-1.9-2.9-.9-6.1-4.7-4.2-4.9-10.7-12.3-21.1-15.8-10.4-3.5-19.8-1.5-26-.1-4.5 1-3.1 1-7.9 0-6.2-1.3-15.6-3.4-25.9.1-10.5 3.5-16.9 10.9-21.2 15.8-3 3.5-1.8 2.6-6.2 4.7-5.8 2.7-14.4 6.7-20.7 15.7-6.2 8.8-7.2 18.4-7.8 24.8-.5 5.1 0 3.5-2.4 8-3.1 5.6-7.8 14.1-7.8 25.1 0 11 4.7 19.5 7.8 25.1 2.3 4.2 1.9 2.5 2.4 8 .7 6.4 1.7 16 7.8 24.7 6.3 9 15 13.1 20.7 15.8 4.1 1.9 2.9.9 6.1 4.7 4.2 4.9 10.7 12.3 21.1 15.8 10.4 3.5 19.8 1.5 26 .1 4.5-1 3.1-1 7.9 0 4.1.9 14.8 3.6 25.9-.1 10.5-3.5 16.9-10.9 21.2-15.8 3-3.5 1.8-2.6 6.2-4.7 5.8-2.7 14.4-6.7 20.7-15.7 6.2-8.8 7.2-18.4 7.8-24.8.5-5.1 0-3.5 2.4-8 3.1-5.6 7.8-14.1 7.8-25.1 0-11-4.7-19.5-7.8-25.1-2.4-4.3-1.9-2.8-2.4-8zm-48 62.7c-9 4.1-17.3 9.1-23.5 17.7-15.5-2.6-13.2-2.6-28.7 0-8.7-11.9-22.2-17-23.5-17.7-1.5-12.6-1.7-15.9-9.4-29.6 8.2-14.5 8-18 9.4-29.6 4.1-1.8 15.6-6.8 23.5-17.7 10.5 1.7 18.2 1.7 28.7 0 3 4.2 7.3 9.6 23.5 17.7 1.3 11 1.1 14.9 9.4 29.6-8.1 14.4-8 18-9.4 29.6zm175-71.9c1.8-14.5-.1-29.4-5.9-43.4-5.9-14.2-15.2-26.2-27-35.2-3.8-14-11.1-27-21.6-37.5A81.794 81.794 0 0 0 344.9 44c-9-11.7-21-21.1-35.2-26.9-10.5-4.3-21.5-6.5-32.7-6.5-3.6 0-7.1.2-10.6.7C253.7 4 239.1 0 224 0s-29.7 4-42.4 11.2c-3.5-.4-7.1-.7-10.7-.7-11.3 0-22.3 2.2-32.7 6.5-14.2 5.9-26.2 15.2-35.1 26.9C89 47.7 76.1 55 65.6 65.5 55.1 76.1 47.8 89 44 103.1c-11.7 9-21.1 21-27 35.2-5.8 14-7.7 28.9-5.9 43.4C3.9 194.4 0 208.9 0 224c0 15.1 3.9 29.6 11.2 42.3-1.8 14.5.1 29.4 5.9 43.4 5.8 14.1 15.2 26 26.9 34.9 3.7 14.1 11.1 27.2 21.7 37.7 8.7 8.7 19.2 14.7 30.4 18.9V400c0-13 5.1-25.2 14.4-34.3 3-2.9 6.5-5.3 10-7.3-24.7-3.8-34.7-25-30.4-44.6-12.4-2.1-23.5-9.9-28.7-22.4-5.1-12.2-3.2-25.6 3.8-35.8C54.9 248.9 48 237.3 48 224s6.9-24.9 17.2-31.6c-7-10.2-8.9-23.5-3.8-35.8 5.2-12.5 16.2-20.6 28.6-22.7-2.6-12.1.2-25.1 9.5-34.4C113.1 86 130.2 89.2 134 90c2.1-12.4 10.2-23.5 22.7-28.6 12.9-5.3 26.2-2.7 35.8 3.8C199.1 54.9 210.7 48 224 48s24.9 6.9 31.6 17.2c9.6-6.6 22.9-9.1 35.8-3.8 12.5 5.2 20.6 16.2 22.7 28.6 3.7-.8 20.9-4 34.4 9.5 9.4 9.4 12.1 22.3 9.5 34.4 12.4 2.1 23.5 10.2 28.6 22.7 5.1 12.3 3.2 25.6-3.8 35.8 10.3 6.7 17.2 18.3 17.2 31.6s-6.9 24.9-17.2 31.6c7 10.2 8.9 23.5 3.8 35.8-5.2 12.5-16.3 20.3-28.7 22.4 4.4 19.7-5.9 40.9-30.5 44.6C342 366.6 352 382.1 352 400v1.3c11.2-4.2 21.7-10.2 30.4-18.9 10.6-10.6 17.9-23.6 21.7-37.7 11.7-8.9 21.1-20.9 26.9-34.9 5.8-14 7.7-28.9 5.9-43.4 7.2-12.7 11.2-27.2 11.2-42.3-.1-15.2-4-29.7-11.3-42.4z\"]\n};\nvar faWrench = {\n prefix: 'far',\n iconName: 'wrench',\n icon: [512, 512, [], \"f0ad\", \"M507.48 117.18c-3-12.17-12.41-21.79-24.5-25.15-12.1-3.34-25.16.11-33.97 8.97l-58.66 58.63-32.44-5.4-5.38-32.41 58.67-58.64c8.84-8.89 12.28-21.92 8.91-33.99-3.38-12.11-13.06-21.5-25.29-24.53-53.09-13.19-107.91 2.07-146.54 40.69-37.63 37.62-52.6 91.37-40.72 143.27L24.04 372.06C8.53 387.53 0 408.12 0 430.02s8.53 42.49 24.04 57.97C39.51 503.47 60.1 512 82.01 512c21.88 0 42.47-8.53 57.98-24.01l183.34-183.26c51.79 11.87 105.64-3.14 143.49-40.93 38.09-38.1 53.69-94.27 40.66-146.62zm-74.61 112.69c-28.47 28.46-70.2 38.1-109.01 25.21l-14.06-4.69-203.75 203.67c-12.85 12.84-35.29 12.81-48.07 0-6.44-6.42-9.97-14.96-9.97-24.04 0-9.08 3.53-17.61 9.97-24.03l203.84-203.78-4.63-14.03c-12.81-38.9-3.22-80.62 25.04-108.9 20.35-20.32 47.19-31.24 75.04-31.24h1.12l-57.32 57.3 15.13 90.59 90.57 15.09 57.35-57.29c.32 28.26-10.62 55.52-31.25 76.14zM88.01 408.02c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16z\"]\n};\nvar faXRay = {\n prefix: 'far',\n iconName: 'x-ray',\n icon: [640, 512, [], \"f497\", \"M168 224h128v32h-96c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h96v32h-56c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48h64c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48h-56v-32h96c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8h-96v-32h128c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H344v-32h96c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8h-96V88c0-4.4-3.6-8-8-8h-32c-4.4 0-8 3.6-8 8v40h-96c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h96v32H168c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm56 144c0-21.2 32-21.2 32 0s-32 21.1-32 0zm192 0c0 21.2-32 21.1-32 0 0-21.2 32-21.2 32 0zM632 48c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H8C3.6 0 0 3.6 0 8v32c0 4.4 3.6 8 8 8h56v416H8c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8h624c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8h-56V48h56zM528 464H112V48h416v416z\"]\n};\nvar faYenSign = {\n prefix: 'far',\n iconName: 'yen-sign',\n icon: [384, 512, [], \"f157\", \"M347.983 32h-44.065a12.001 12.001 0 0 0-10.555 6.291l-73.76 133.313c-13.96 29.825-27.286 64.725-27.286 64.725h-1.269s-13.326-34.901-27.287-64.725L90.689 38.328A12 12 0 0 0 80.115 32H36.017c-9.157 0-14.94 9.844-10.481 17.843L119.746 216H68c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h77.18l14.775 26.267V312H68c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h91.955v108c0 6.627 5.373 12 12 12h39.456c6.627 0 12-5.373 12-12V360H316c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-92.589v-21.733L238.185 264H316c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-52.367L358.45 49.87c4.485-7.999-1.296-17.87-10.467-17.87z\"]\n};\nvar faYinYang = {\n prefix: 'far',\n iconName: 'yin-yang',\n icon: [496, 512, [], \"f6ad\", \"M263.9 332c-19.88 0-35.99 16.12-35.99 36s16.11 36 35.99 36 35.99-16.12 35.99-36-16.11-36-35.99-36zm-31.99-152c19.88 0 35.99-16.12 35.99-36s-16.11-36-35.99-36-35.99 16.12-35.99 36c.01 19.88 16.12 36 35.99 36zm16-172C110.99 8 0 119.03 0 256s110.99 248 247.91 248v-.02c.06 0 .12.02.19.02C384.79 504 496 392.75 496 256S384.6 8 247.91 8zM119.05 408.67C75.65 371.95 47.98 317.18 47.98 256c0-110.28 89.68-200 199.92-200 48.51 0 88.15 39.47 88.15 88s-39.45 88-87.97 88c-74.97 0-135.95 61.02-135.95 136 .02 14.26 2.83 27.75 6.92 40.67zM248.09 456c-48.51 0-87.97-39.47-87.97-88s39.45-88 87.97-88c74.97 0 135.95-61.02 135.95-136 0-13.84-2.09-27.22-5.94-39.83 42.77 36.72 69.91 91.16 69.91 151.83.01 110.28-89.68 200-199.92 200z\"]\n};\nvar _iconsCache = {\n faAbacus: faAbacus,\n faAcorn: faAcorn,\n faAd: faAd,\n faAddressBook: faAddressBook,\n faAddressCard: faAddressCard,\n faAdjust: faAdjust,\n faAirConditioner: faAirConditioner,\n faAirFreshener: faAirFreshener,\n faAlarmClock: faAlarmClock,\n faAlarmExclamation: faAlarmExclamation,\n faAlarmPlus: faAlarmPlus,\n faAlarmSnooze: faAlarmSnooze,\n faAlbum: faAlbum,\n faAlbumCollection: faAlbumCollection,\n faAlicorn: faAlicorn,\n faAlien: faAlien,\n faAlienMonster: faAlienMonster,\n faAlignCenter: faAlignCenter,\n faAlignJustify: faAlignJustify,\n faAlignLeft: faAlignLeft,\n faAlignRight: faAlignRight,\n faAlignSlash: faAlignSlash,\n faAllergies: faAllergies,\n faAmbulance: faAmbulance,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAmpGuitar: faAmpGuitar,\n faAnalytics: faAnalytics,\n faAnchor: faAnchor,\n faAngel: faAngel,\n faAngleDoubleDown: faAngleDoubleDown,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faAngleDoubleRight: faAngleDoubleRight,\n faAngleDoubleUp: faAngleDoubleUp,\n faAngleDown: faAngleDown,\n faAngleLeft: faAngleLeft,\n faAngleRight: faAngleRight,\n faAngleUp: faAngleUp,\n faAngry: faAngry,\n faAnkh: faAnkh,\n faAppleAlt: faAppleAlt,\n faAppleCrate: faAppleCrate,\n faArchive: faArchive,\n faArchway: faArchway,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faArrowAltDown: faArrowAltDown,\n faArrowAltFromBottom: faArrowAltFromBottom,\n faArrowAltFromLeft: faArrowAltFromLeft,\n faArrowAltFromRight: faArrowAltFromRight,\n faArrowAltFromTop: faArrowAltFromTop,\n faArrowAltLeft: faArrowAltLeft,\n faArrowAltRight: faArrowAltRight,\n faArrowAltSquareDown: faArrowAltSquareDown,\n faArrowAltSquareLeft: faArrowAltSquareLeft,\n faArrowAltSquareRight: faArrowAltSquareRight,\n faArrowAltSquareUp: faArrowAltSquareUp,\n faArrowAltToBottom: faArrowAltToBottom,\n faArrowAltToLeft: faArrowAltToLeft,\n faArrowAltToRight: faArrowAltToRight,\n faArrowAltToTop: faArrowAltToTop,\n faArrowAltUp: faArrowAltUp,\n faArrowCircleDown: faArrowCircleDown,\n faArrowCircleLeft: faArrowCircleLeft,\n faArrowCircleRight: faArrowCircleRight,\n faArrowCircleUp: faArrowCircleUp,\n faArrowDown: faArrowDown,\n faArrowFromBottom: faArrowFromBottom,\n faArrowFromLeft: faArrowFromLeft,\n faArrowFromRight: faArrowFromRight,\n faArrowFromTop: faArrowFromTop,\n faArrowLeft: faArrowLeft,\n faArrowRight: faArrowRight,\n faArrowSquareDown: faArrowSquareDown,\n faArrowSquareLeft: faArrowSquareLeft,\n faArrowSquareRight: faArrowSquareRight,\n faArrowSquareUp: faArrowSquareUp,\n faArrowToBottom: faArrowToBottom,\n faArrowToLeft: faArrowToLeft,\n faArrowToRight: faArrowToRight,\n faArrowToTop: faArrowToTop,\n faArrowUp: faArrowUp,\n faArrows: faArrows,\n faArrowsAlt: faArrowsAlt,\n faArrowsAltH: faArrowsAltH,\n faArrowsAltV: faArrowsAltV,\n faArrowsH: faArrowsH,\n faArrowsV: faArrowsV,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faAsterisk: faAsterisk,\n faAt: faAt,\n faAtlas: faAtlas,\n faAtom: faAtom,\n faAtomAlt: faAtomAlt,\n faAudioDescription: faAudioDescription,\n faAward: faAward,\n faAxe: faAxe,\n faAxeBattle: faAxeBattle,\n faBaby: faBaby,\n faBabyCarriage: faBabyCarriage,\n faBackpack: faBackpack,\n faBackspace: faBackspace,\n faBackward: faBackward,\n faBacon: faBacon,\n faBacteria: faBacteria,\n faBacterium: faBacterium,\n faBadge: faBadge,\n faBadgeCheck: faBadgeCheck,\n faBadgeDollar: faBadgeDollar,\n faBadgePercent: faBadgePercent,\n faBadgeSheriff: faBadgeSheriff,\n faBadgerHoney: faBadgerHoney,\n faBagsShopping: faBagsShopping,\n faBahai: faBahai,\n faBalanceScale: faBalanceScale,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faBalanceScaleRight: faBalanceScaleRight,\n faBallPile: faBallPile,\n faBallot: faBallot,\n faBallotCheck: faBallotCheck,\n faBan: faBan,\n faBandAid: faBandAid,\n faBanjo: faBanjo,\n faBarcode: faBarcode,\n faBarcodeAlt: faBarcodeAlt,\n faBarcodeRead: faBarcodeRead,\n faBarcodeScan: faBarcodeScan,\n faBars: faBars,\n faBaseball: faBaseball,\n faBaseballBall: faBaseballBall,\n faBasketballBall: faBasketballBall,\n faBasketballHoop: faBasketballHoop,\n faBat: faBat,\n faBath: faBath,\n faBatteryBolt: faBatteryBolt,\n faBatteryEmpty: faBatteryEmpty,\n faBatteryFull: faBatteryFull,\n faBatteryHalf: faBatteryHalf,\n faBatteryQuarter: faBatteryQuarter,\n faBatterySlash: faBatterySlash,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBed: faBed,\n faBedAlt: faBedAlt,\n faBedBunk: faBedBunk,\n faBedEmpty: faBedEmpty,\n faBeer: faBeer,\n faBell: faBell,\n faBellExclamation: faBellExclamation,\n faBellOn: faBellOn,\n faBellPlus: faBellPlus,\n faBellSchool: faBellSchool,\n faBellSchoolSlash: faBellSchoolSlash,\n faBellSlash: faBellSlash,\n faBells: faBells,\n faBetamax: faBetamax,\n faBezierCurve: faBezierCurve,\n faBible: faBible,\n faBicycle: faBicycle,\n faBiking: faBiking,\n faBikingMountain: faBikingMountain,\n faBinoculars: faBinoculars,\n faBiohazard: faBiohazard,\n faBirthdayCake: faBirthdayCake,\n faBlanket: faBlanket,\n faBlender: faBlender,\n faBlenderPhone: faBlenderPhone,\n faBlind: faBlind,\n faBlinds: faBlinds,\n faBlindsOpen: faBlindsOpen,\n faBlindsRaised: faBlindsRaised,\n faBlog: faBlog,\n faBold: faBold,\n faBolt: faBolt,\n faBomb: faBomb,\n faBone: faBone,\n faBoneBreak: faBoneBreak,\n faBong: faBong,\n faBook: faBook,\n faBookAlt: faBookAlt,\n faBookDead: faBookDead,\n faBookHeart: faBookHeart,\n faBookMedical: faBookMedical,\n faBookOpen: faBookOpen,\n faBookReader: faBookReader,\n faBookSpells: faBookSpells,\n faBookUser: faBookUser,\n faBookmark: faBookmark,\n faBooks: faBooks,\n faBooksMedical: faBooksMedical,\n faBoombox: faBoombox,\n faBoot: faBoot,\n faBoothCurtain: faBoothCurtain,\n faBorderAll: faBorderAll,\n faBorderBottom: faBorderBottom,\n faBorderCenterH: faBorderCenterH,\n faBorderCenterV: faBorderCenterV,\n faBorderInner: faBorderInner,\n faBorderLeft: faBorderLeft,\n faBorderNone: faBorderNone,\n faBorderOuter: faBorderOuter,\n faBorderRight: faBorderRight,\n faBorderStyle: faBorderStyle,\n faBorderStyleAlt: faBorderStyleAlt,\n faBorderTop: faBorderTop,\n faBowArrow: faBowArrow,\n faBowlingBall: faBowlingBall,\n faBowlingPins: faBowlingPins,\n faBox: faBox,\n faBoxAlt: faBoxAlt,\n faBoxBallot: faBoxBallot,\n faBoxCheck: faBoxCheck,\n faBoxFragile: faBoxFragile,\n faBoxFull: faBoxFull,\n faBoxHeart: faBoxHeart,\n faBoxOpen: faBoxOpen,\n faBoxTissue: faBoxTissue,\n faBoxUp: faBoxUp,\n faBoxUsd: faBoxUsd,\n faBoxes: faBoxes,\n faBoxesAlt: faBoxesAlt,\n faBoxingGlove: faBoxingGlove,\n faBrackets: faBrackets,\n faBracketsCurly: faBracketsCurly,\n faBraille: faBraille,\n faBrain: faBrain,\n faBreadLoaf: faBreadLoaf,\n faBreadSlice: faBreadSlice,\n faBriefcase: faBriefcase,\n faBriefcaseMedical: faBriefcaseMedical,\n faBringForward: faBringForward,\n faBringFront: faBringFront,\n faBroadcastTower: faBroadcastTower,\n faBroom: faBroom,\n faBrowser: faBrowser,\n faBrush: faBrush,\n faBug: faBug,\n faBuilding: faBuilding,\n faBullhorn: faBullhorn,\n faBullseye: faBullseye,\n faBullseyeArrow: faBullseyeArrow,\n faBullseyePointer: faBullseyePointer,\n faBurgerSoda: faBurgerSoda,\n faBurn: faBurn,\n faBurrito: faBurrito,\n faBus: faBus,\n faBusAlt: faBusAlt,\n faBusSchool: faBusSchool,\n faBusinessTime: faBusinessTime,\n faCabinetFiling: faCabinetFiling,\n faCactus: faCactus,\n faCalculator: faCalculator,\n faCalculatorAlt: faCalculatorAlt,\n faCalendar: faCalendar,\n faCalendarAlt: faCalendarAlt,\n faCalendarCheck: faCalendarCheck,\n faCalendarDay: faCalendarDay,\n faCalendarEdit: faCalendarEdit,\n faCalendarExclamation: faCalendarExclamation,\n faCalendarMinus: faCalendarMinus,\n faCalendarPlus: faCalendarPlus,\n faCalendarStar: faCalendarStar,\n faCalendarTimes: faCalendarTimes,\n faCalendarWeek: faCalendarWeek,\n faCamcorder: faCamcorder,\n faCamera: faCamera,\n faCameraAlt: faCameraAlt,\n faCameraHome: faCameraHome,\n faCameraMovie: faCameraMovie,\n faCameraPolaroid: faCameraPolaroid,\n faCameraRetro: faCameraRetro,\n faCampfire: faCampfire,\n faCampground: faCampground,\n faCandleHolder: faCandleHolder,\n faCandyCane: faCandyCane,\n faCandyCorn: faCandyCorn,\n faCannabis: faCannabis,\n faCapsules: faCapsules,\n faCar: faCar,\n faCarAlt: faCarAlt,\n faCarBattery: faCarBattery,\n faCarBuilding: faCarBuilding,\n faCarBump: faCarBump,\n faCarBus: faCarBus,\n faCarCrash: faCarCrash,\n faCarGarage: faCarGarage,\n faCarMechanic: faCarMechanic,\n faCarSide: faCarSide,\n faCarTilt: faCarTilt,\n faCarWash: faCarWash,\n faCaravan: faCaravan,\n faCaravanAlt: faCaravanAlt,\n faCaretCircleDown: faCaretCircleDown,\n faCaretCircleLeft: faCaretCircleLeft,\n faCaretCircleRight: faCaretCircleRight,\n faCaretCircleUp: faCaretCircleUp,\n faCaretDown: faCaretDown,\n faCaretLeft: faCaretLeft,\n faCaretRight: faCaretRight,\n faCaretSquareDown: faCaretSquareDown,\n faCaretSquareLeft: faCaretSquareLeft,\n faCaretSquareRight: faCaretSquareRight,\n faCaretSquareUp: faCaretSquareUp,\n faCaretUp: faCaretUp,\n faCarrot: faCarrot,\n faCars: faCars,\n faCartArrowDown: faCartArrowDown,\n faCartPlus: faCartPlus,\n faCashRegister: faCashRegister,\n faCassetteTape: faCassetteTape,\n faCat: faCat,\n faCatSpace: faCatSpace,\n faCauldron: faCauldron,\n faCctv: faCctv,\n faCertificate: faCertificate,\n faChair: faChair,\n faChairOffice: faChairOffice,\n faChalkboard: faChalkboard,\n faChalkboardTeacher: faChalkboardTeacher,\n faChargingStation: faChargingStation,\n faChartArea: faChartArea,\n faChartBar: faChartBar,\n faChartLine: faChartLine,\n faChartLineDown: faChartLineDown,\n faChartNetwork: faChartNetwork,\n faChartPie: faChartPie,\n faChartPieAlt: faChartPieAlt,\n faChartScatter: faChartScatter,\n faCheck: faCheck,\n faCheckCircle: faCheckCircle,\n faCheckDouble: faCheckDouble,\n faCheckSquare: faCheckSquare,\n faCheese: faCheese,\n faCheeseSwiss: faCheeseSwiss,\n faCheeseburger: faCheeseburger,\n faChess: faChess,\n faChessBishop: faChessBishop,\n faChessBishopAlt: faChessBishopAlt,\n faChessBoard: faChessBoard,\n faChessClock: faChessClock,\n faChessClockAlt: faChessClockAlt,\n faChessKing: faChessKing,\n faChessKingAlt: faChessKingAlt,\n faChessKnight: faChessKnight,\n faChessKnightAlt: faChessKnightAlt,\n faChessPawn: faChessPawn,\n faChessPawnAlt: faChessPawnAlt,\n faChessQueen: faChessQueen,\n faChessQueenAlt: faChessQueenAlt,\n faChessRook: faChessRook,\n faChessRookAlt: faChessRookAlt,\n faChevronCircleDown: faChevronCircleDown,\n faChevronCircleLeft: faChevronCircleLeft,\n faChevronCircleRight: faChevronCircleRight,\n faChevronCircleUp: faChevronCircleUp,\n faChevronDoubleDown: faChevronDoubleDown,\n faChevronDoubleLeft: faChevronDoubleLeft,\n faChevronDoubleRight: faChevronDoubleRight,\n faChevronDoubleUp: faChevronDoubleUp,\n faChevronDown: faChevronDown,\n faChevronLeft: faChevronLeft,\n faChevronRight: faChevronRight,\n faChevronSquareDown: faChevronSquareDown,\n faChevronSquareLeft: faChevronSquareLeft,\n faChevronSquareRight: faChevronSquareRight,\n faChevronSquareUp: faChevronSquareUp,\n faChevronUp: faChevronUp,\n faChild: faChild,\n faChimney: faChimney,\n faChurch: faChurch,\n faCircle: faCircle,\n faCircleNotch: faCircleNotch,\n faCity: faCity,\n faClarinet: faClarinet,\n faClawMarks: faClawMarks,\n faClinicMedical: faClinicMedical,\n faClipboard: faClipboard,\n faClipboardCheck: faClipboardCheck,\n faClipboardList: faClipboardList,\n faClipboardListCheck: faClipboardListCheck,\n faClipboardPrescription: faClipboardPrescription,\n faClipboardUser: faClipboardUser,\n faClock: faClock,\n faClone: faClone,\n faClosedCaptioning: faClosedCaptioning,\n faCloud: faCloud,\n faCloudDownload: faCloudDownload,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faCloudDrizzle: faCloudDrizzle,\n faCloudHail: faCloudHail,\n faCloudHailMixed: faCloudHailMixed,\n faCloudMeatball: faCloudMeatball,\n faCloudMoon: faCloudMoon,\n faCloudMoonRain: faCloudMoonRain,\n faCloudMusic: faCloudMusic,\n faCloudRain: faCloudRain,\n faCloudRainbow: faCloudRainbow,\n faCloudShowers: faCloudShowers,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faCloudSleet: faCloudSleet,\n faCloudSnow: faCloudSnow,\n faCloudSun: faCloudSun,\n faCloudSunRain: faCloudSunRain,\n faCloudUpload: faCloudUpload,\n faCloudUploadAlt: faCloudUploadAlt,\n faClouds: faClouds,\n faCloudsMoon: faCloudsMoon,\n faCloudsSun: faCloudsSun,\n faClub: faClub,\n faCocktail: faCocktail,\n faCode: faCode,\n faCodeBranch: faCodeBranch,\n faCodeCommit: faCodeCommit,\n faCodeMerge: faCodeMerge,\n faCoffee: faCoffee,\n faCoffeePot: faCoffeePot,\n faCoffeeTogo: faCoffeeTogo,\n faCoffin: faCoffin,\n faCoffinCross: faCoffinCross,\n faCog: faCog,\n faCogs: faCogs,\n faCoin: faCoin,\n faCoins: faCoins,\n faColumns: faColumns,\n faComet: faComet,\n faComment: faComment,\n faCommentAlt: faCommentAlt,\n faCommentAltCheck: faCommentAltCheck,\n faCommentAltDollar: faCommentAltDollar,\n faCommentAltDots: faCommentAltDots,\n faCommentAltEdit: faCommentAltEdit,\n faCommentAltExclamation: faCommentAltExclamation,\n faCommentAltLines: faCommentAltLines,\n faCommentAltMedical: faCommentAltMedical,\n faCommentAltMinus: faCommentAltMinus,\n faCommentAltMusic: faCommentAltMusic,\n faCommentAltPlus: faCommentAltPlus,\n faCommentAltSlash: faCommentAltSlash,\n faCommentAltSmile: faCommentAltSmile,\n faCommentAltTimes: faCommentAltTimes,\n faCommentCheck: faCommentCheck,\n faCommentDollar: faCommentDollar,\n faCommentDots: faCommentDots,\n faCommentEdit: faCommentEdit,\n faCommentExclamation: faCommentExclamation,\n faCommentLines: faCommentLines,\n faCommentMedical: faCommentMedical,\n faCommentMinus: faCommentMinus,\n faCommentMusic: faCommentMusic,\n faCommentPlus: faCommentPlus,\n faCommentSlash: faCommentSlash,\n faCommentSmile: faCommentSmile,\n faCommentTimes: faCommentTimes,\n faComments: faComments,\n faCommentsAlt: faCommentsAlt,\n faCommentsAltDollar: faCommentsAltDollar,\n faCommentsDollar: faCommentsDollar,\n faCompactDisc: faCompactDisc,\n faCompass: faCompass,\n faCompassSlash: faCompassSlash,\n faCompress: faCompress,\n faCompressAlt: faCompressAlt,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faCompressWide: faCompressWide,\n faComputerClassic: faComputerClassic,\n faComputerSpeaker: faComputerSpeaker,\n faConciergeBell: faConciergeBell,\n faConstruction: faConstruction,\n faContainerStorage: faContainerStorage,\n faConveyorBelt: faConveyorBelt,\n faConveyorBeltAlt: faConveyorBeltAlt,\n faCookie: faCookie,\n faCookieBite: faCookieBite,\n faCopy: faCopy,\n faCopyright: faCopyright,\n faCorn: faCorn,\n faCouch: faCouch,\n faCow: faCow,\n faCowbell: faCowbell,\n faCowbellMore: faCowbellMore,\n faCreditCard: faCreditCard,\n faCreditCardBlank: faCreditCardBlank,\n faCreditCardFront: faCreditCardFront,\n faCricket: faCricket,\n faCroissant: faCroissant,\n faCrop: faCrop,\n faCropAlt: faCropAlt,\n faCross: faCross,\n faCrosshairs: faCrosshairs,\n faCrow: faCrow,\n faCrown: faCrown,\n faCrutch: faCrutch,\n faCrutches: faCrutches,\n faCube: faCube,\n faCubes: faCubes,\n faCurling: faCurling,\n faCut: faCut,\n faDagger: faDagger,\n faDatabase: faDatabase,\n faDeaf: faDeaf,\n faDebug: faDebug,\n faDeer: faDeer,\n faDeerRudolph: faDeerRudolph,\n faDemocrat: faDemocrat,\n faDesktop: faDesktop,\n faDesktopAlt: faDesktopAlt,\n faDewpoint: faDewpoint,\n faDharmachakra: faDharmachakra,\n faDiagnoses: faDiagnoses,\n faDiamond: faDiamond,\n faDice: faDice,\n faDiceD10: faDiceD10,\n faDiceD12: faDiceD12,\n faDiceD20: faDiceD20,\n faDiceD4: faDiceD4,\n faDiceD6: faDiceD6,\n faDiceD8: faDiceD8,\n faDiceFive: faDiceFive,\n faDiceFour: faDiceFour,\n faDiceOne: faDiceOne,\n faDiceSix: faDiceSix,\n faDiceThree: faDiceThree,\n faDiceTwo: faDiceTwo,\n faDigging: faDigging,\n faDigitalTachograph: faDigitalTachograph,\n faDiploma: faDiploma,\n faDirections: faDirections,\n faDiscDrive: faDiscDrive,\n faDisease: faDisease,\n faDivide: faDivide,\n faDizzy: faDizzy,\n faDna: faDna,\n faDoNotEnter: faDoNotEnter,\n faDog: faDog,\n faDogLeashed: faDogLeashed,\n faDollarSign: faDollarSign,\n faDolly: faDolly,\n faDollyEmpty: faDollyEmpty,\n faDollyFlatbed: faDollyFlatbed,\n faDollyFlatbedAlt: faDollyFlatbedAlt,\n faDollyFlatbedEmpty: faDollyFlatbedEmpty,\n faDonate: faDonate,\n faDoorClosed: faDoorClosed,\n faDoorOpen: faDoorOpen,\n faDotCircle: faDotCircle,\n faDove: faDove,\n faDownload: faDownload,\n faDraftingCompass: faDraftingCompass,\n faDragon: faDragon,\n faDrawCircle: faDrawCircle,\n faDrawPolygon: faDrawPolygon,\n faDrawSquare: faDrawSquare,\n faDreidel: faDreidel,\n faDrone: faDrone,\n faDroneAlt: faDroneAlt,\n faDrum: faDrum,\n faDrumSteelpan: faDrumSteelpan,\n faDrumstick: faDrumstick,\n faDrumstickBite: faDrumstickBite,\n faDryer: faDryer,\n faDryerAlt: faDryerAlt,\n faDuck: faDuck,\n faDumbbell: faDumbbell,\n faDumpster: faDumpster,\n faDumpsterFire: faDumpsterFire,\n faDungeon: faDungeon,\n faEar: faEar,\n faEarMuffs: faEarMuffs,\n faEclipse: faEclipse,\n faEclipseAlt: faEclipseAlt,\n faEdit: faEdit,\n faEgg: faEgg,\n faEggFried: faEggFried,\n faEject: faEject,\n faElephant: faElephant,\n faEllipsisH: faEllipsisH,\n faEllipsisHAlt: faEllipsisHAlt,\n faEllipsisV: faEllipsisV,\n faEllipsisVAlt: faEllipsisVAlt,\n faEmptySet: faEmptySet,\n faEngineWarning: faEngineWarning,\n faEnvelope: faEnvelope,\n faEnvelopeOpen: faEnvelopeOpen,\n faEnvelopeOpenDollar: faEnvelopeOpenDollar,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faEnvelopeSquare: faEnvelopeSquare,\n faEquals: faEquals,\n faEraser: faEraser,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faExchange: faExchange,\n faExchangeAlt: faExchangeAlt,\n faExclamation: faExclamation,\n faExclamationCircle: faExclamationCircle,\n faExclamationSquare: faExclamationSquare,\n faExclamationTriangle: faExclamationTriangle,\n faExpand: faExpand,\n faExpandAlt: faExpandAlt,\n faExpandArrows: faExpandArrows,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faExpandWide: faExpandWide,\n faExternalLink: faExternalLink,\n faExternalLinkAlt: faExternalLinkAlt,\n faExternalLinkSquare: faExternalLinkSquare,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faEye: faEye,\n faEyeDropper: faEyeDropper,\n faEyeEvil: faEyeEvil,\n faEyeSlash: faEyeSlash,\n faFan: faFan,\n faFanTable: faFanTable,\n faFarm: faFarm,\n faFastBackward: faFastBackward,\n faFastForward: faFastForward,\n faFaucet: faFaucet,\n faFaucetDrip: faFaucetDrip,\n faFax: faFax,\n faFeather: faFeather,\n faFeatherAlt: faFeatherAlt,\n faFemale: faFemale,\n faFieldHockey: faFieldHockey,\n faFighterJet: faFighterJet,\n faFile: faFile,\n faFileAlt: faFileAlt,\n faFileArchive: faFileArchive,\n faFileAudio: faFileAudio,\n faFileCertificate: faFileCertificate,\n faFileChartLine: faFileChartLine,\n faFileChartPie: faFileChartPie,\n faFileCheck: faFileCheck,\n faFileCode: faFileCode,\n faFileContract: faFileContract,\n faFileCsv: faFileCsv,\n faFileDownload: faFileDownload,\n faFileEdit: faFileEdit,\n faFileExcel: faFileExcel,\n faFileExclamation: faFileExclamation,\n faFileExport: faFileExport,\n faFileImage: faFileImage,\n faFileImport: faFileImport,\n faFileInvoice: faFileInvoice,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faFileMedical: faFileMedical,\n faFileMedicalAlt: faFileMedicalAlt,\n faFileMinus: faFileMinus,\n faFileMusic: faFileMusic,\n faFilePdf: faFilePdf,\n faFilePlus: faFilePlus,\n faFilePowerpoint: faFilePowerpoint,\n faFilePrescription: faFilePrescription,\n faFileSearch: faFileSearch,\n faFileSignature: faFileSignature,\n faFileSpreadsheet: faFileSpreadsheet,\n faFileTimes: faFileTimes,\n faFileUpload: faFileUpload,\n faFileUser: faFileUser,\n faFileVideo: faFileVideo,\n faFileWord: faFileWord,\n faFilesMedical: faFilesMedical,\n faFill: faFill,\n faFillDrip: faFillDrip,\n faFilm: faFilm,\n faFilmAlt: faFilmAlt,\n faFilmCanister: faFilmCanister,\n faFilter: faFilter,\n faFingerprint: faFingerprint,\n faFire: faFire,\n faFireAlt: faFireAlt,\n faFireExtinguisher: faFireExtinguisher,\n faFireSmoke: faFireSmoke,\n faFireplace: faFireplace,\n faFirstAid: faFirstAid,\n faFish: faFish,\n faFishCooked: faFishCooked,\n faFistRaised: faFistRaised,\n faFlag: faFlag,\n faFlagAlt: faFlagAlt,\n faFlagCheckered: faFlagCheckered,\n faFlagUsa: faFlagUsa,\n faFlame: faFlame,\n faFlashlight: faFlashlight,\n faFlask: faFlask,\n faFlaskPoison: faFlaskPoison,\n faFlaskPotion: faFlaskPotion,\n faFlower: faFlower,\n faFlowerDaffodil: faFlowerDaffodil,\n faFlowerTulip: faFlowerTulip,\n faFlushed: faFlushed,\n faFlute: faFlute,\n faFluxCapacitor: faFluxCapacitor,\n faFog: faFog,\n faFolder: faFolder,\n faFolderDownload: faFolderDownload,\n faFolderMinus: faFolderMinus,\n faFolderOpen: faFolderOpen,\n faFolderPlus: faFolderPlus,\n faFolderTimes: faFolderTimes,\n faFolderTree: faFolderTree,\n faFolderUpload: faFolderUpload,\n faFolders: faFolders,\n faFont: faFont,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFontCase: faFontCase,\n faFootballBall: faFootballBall,\n faFootballHelmet: faFootballHelmet,\n faForklift: faForklift,\n faForward: faForward,\n faFragile: faFragile,\n faFrenchFries: faFrenchFries,\n faFrog: faFrog,\n faFrostyHead: faFrostyHead,\n faFrown: faFrown,\n faFrownOpen: faFrownOpen,\n faFunction: faFunction,\n faFunnelDollar: faFunnelDollar,\n faFutbol: faFutbol,\n faGalaxy: faGalaxy,\n faGameBoard: faGameBoard,\n faGameBoardAlt: faGameBoardAlt,\n faGameConsoleHandheld: faGameConsoleHandheld,\n faGamepad: faGamepad,\n faGamepadAlt: faGamepadAlt,\n faGarage: faGarage,\n faGarageCar: faGarageCar,\n faGarageOpen: faGarageOpen,\n faGasPump: faGasPump,\n faGasPumpSlash: faGasPumpSlash,\n faGavel: faGavel,\n faGem: faGem,\n faGenderless: faGenderless,\n faGhost: faGhost,\n faGift: faGift,\n faGiftCard: faGiftCard,\n faGifts: faGifts,\n faGingerbreadMan: faGingerbreadMan,\n faGlass: faGlass,\n faGlassChampagne: faGlassChampagne,\n faGlassCheers: faGlassCheers,\n faGlassCitrus: faGlassCitrus,\n faGlassMartini: faGlassMartini,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faGlassWhiskey: faGlassWhiskey,\n faGlassWhiskeyRocks: faGlassWhiskeyRocks,\n faGlasses: faGlasses,\n faGlassesAlt: faGlassesAlt,\n faGlobe: faGlobe,\n faGlobeAfrica: faGlobeAfrica,\n faGlobeAmericas: faGlobeAmericas,\n faGlobeAsia: faGlobeAsia,\n faGlobeEurope: faGlobeEurope,\n faGlobeSnow: faGlobeSnow,\n faGlobeStand: faGlobeStand,\n faGolfBall: faGolfBall,\n faGolfClub: faGolfClub,\n faGopuram: faGopuram,\n faGraduationCap: faGraduationCap,\n faGramophone: faGramophone,\n faGreaterThan: faGreaterThan,\n faGreaterThanEqual: faGreaterThanEqual,\n faGrimace: faGrimace,\n faGrin: faGrin,\n faGrinAlt: faGrinAlt,\n faGrinBeam: faGrinBeam,\n faGrinBeamSweat: faGrinBeamSweat,\n faGrinHearts: faGrinHearts,\n faGrinSquint: faGrinSquint,\n faGrinSquintTears: faGrinSquintTears,\n faGrinStars: faGrinStars,\n faGrinTears: faGrinTears,\n faGrinTongue: faGrinTongue,\n faGrinTongueSquint: faGrinTongueSquint,\n faGrinTongueWink: faGrinTongueWink,\n faGrinWink: faGrinWink,\n faGripHorizontal: faGripHorizontal,\n faGripLines: faGripLines,\n faGripLinesVertical: faGripLinesVertical,\n faGripVertical: faGripVertical,\n faGuitar: faGuitar,\n faGuitarElectric: faGuitarElectric,\n faGuitars: faGuitars,\n faHSquare: faHSquare,\n faH1: faH1,\n faH2: faH2,\n faH3: faH3,\n faH4: faH4,\n faHamburger: faHamburger,\n faHammer: faHammer,\n faHammerWar: faHammerWar,\n faHamsa: faHamsa,\n faHandHeart: faHandHeart,\n faHandHolding: faHandHolding,\n faHandHoldingBox: faHandHoldingBox,\n faHandHoldingHeart: faHandHoldingHeart,\n faHandHoldingMagic: faHandHoldingMagic,\n faHandHoldingMedical: faHandHoldingMedical,\n faHandHoldingSeedling: faHandHoldingSeedling,\n faHandHoldingUsd: faHandHoldingUsd,\n faHandHoldingWater: faHandHoldingWater,\n faHandLizard: faHandLizard,\n faHandMiddleFinger: faHandMiddleFinger,\n faHandPaper: faHandPaper,\n faHandPeace: faHandPeace,\n faHandPointDown: faHandPointDown,\n faHandPointLeft: faHandPointLeft,\n faHandPointRight: faHandPointRight,\n faHandPointUp: faHandPointUp,\n faHandPointer: faHandPointer,\n faHandReceiving: faHandReceiving,\n faHandRock: faHandRock,\n faHandScissors: faHandScissors,\n faHandSparkles: faHandSparkles,\n faHandSpock: faHandSpock,\n faHands: faHands,\n faHandsHeart: faHandsHeart,\n faHandsHelping: faHandsHelping,\n faHandsUsd: faHandsUsd,\n faHandsWash: faHandsWash,\n faHandshake: faHandshake,\n faHandshakeAlt: faHandshakeAlt,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faHandshakeSlash: faHandshakeSlash,\n faHanukiah: faHanukiah,\n faHardHat: faHardHat,\n faHashtag: faHashtag,\n faHatChef: faHatChef,\n faHatCowboy: faHatCowboy,\n faHatCowboySide: faHatCowboySide,\n faHatSanta: faHatSanta,\n faHatWinter: faHatWinter,\n faHatWitch: faHatWitch,\n faHatWizard: faHatWizard,\n faHdd: faHdd,\n faHeadSide: faHeadSide,\n faHeadSideBrain: faHeadSideBrain,\n faHeadSideCough: faHeadSideCough,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faHeadSideHeadphones: faHeadSideHeadphones,\n faHeadSideMask: faHeadSideMask,\n faHeadSideMedical: faHeadSideMedical,\n faHeadSideVirus: faHeadSideVirus,\n faHeadVr: faHeadVr,\n faHeading: faHeading,\n faHeadphones: faHeadphones,\n faHeadphonesAlt: faHeadphonesAlt,\n faHeadset: faHeadset,\n faHeart: faHeart,\n faHeartBroken: faHeartBroken,\n faHeartCircle: faHeartCircle,\n faHeartRate: faHeartRate,\n faHeartSquare: faHeartSquare,\n faHeartbeat: faHeartbeat,\n faHeat: faHeat,\n faHelicopter: faHelicopter,\n faHelmetBattle: faHelmetBattle,\n faHexagon: faHexagon,\n faHighlighter: faHighlighter,\n faHiking: faHiking,\n faHippo: faHippo,\n faHistory: faHistory,\n faHockeyMask: faHockeyMask,\n faHockeyPuck: faHockeyPuck,\n faHockeySticks: faHockeySticks,\n faHollyBerry: faHollyBerry,\n faHome: faHome,\n faHomeAlt: faHomeAlt,\n faHomeHeart: faHomeHeart,\n faHomeLg: faHomeLg,\n faHomeLgAlt: faHomeLgAlt,\n faHoodCloak: faHoodCloak,\n faHorizontalRule: faHorizontalRule,\n faHorse: faHorse,\n faHorseHead: faHorseHead,\n faHorseSaddle: faHorseSaddle,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalSymbol: faHospitalSymbol,\n faHospitalUser: faHospitalUser,\n faHospitals: faHospitals,\n faHotTub: faHotTub,\n faHotdog: faHotdog,\n faHotel: faHotel,\n faHourglass: faHourglass,\n faHourglassEnd: faHourglassEnd,\n faHourglassHalf: faHourglassHalf,\n faHourglassStart: faHourglassStart,\n faHouse: faHouse,\n faHouseDamage: faHouseDamage,\n faHouseDay: faHouseDay,\n faHouseFlood: faHouseFlood,\n faHouseLeave: faHouseLeave,\n faHouseNight: faHouseNight,\n faHouseReturn: faHouseReturn,\n faHouseSignal: faHouseSignal,\n faHouseUser: faHouseUser,\n faHryvnia: faHryvnia,\n faHumidity: faHumidity,\n faHurricane: faHurricane,\n faICursor: faICursor,\n faIceCream: faIceCream,\n faIceSkate: faIceSkate,\n faIcicles: faIcicles,\n faIcons: faIcons,\n faIconsAlt: faIconsAlt,\n faIdBadge: faIdBadge,\n faIdCard: faIdCard,\n faIdCardAlt: faIdCardAlt,\n faIgloo: faIgloo,\n faImage: faImage,\n faImagePolaroid: faImagePolaroid,\n faImages: faImages,\n faInbox: faInbox,\n faInboxIn: faInboxIn,\n faInboxOut: faInboxOut,\n faIndent: faIndent,\n faIndustry: faIndustry,\n faIndustryAlt: faIndustryAlt,\n faInfinity: faInfinity,\n faInfo: faInfo,\n faInfoCircle: faInfoCircle,\n faInfoSquare: faInfoSquare,\n faInhaler: faInhaler,\n faIntegral: faIntegral,\n faIntersection: faIntersection,\n faInventory: faInventory,\n faIslandTropical: faIslandTropical,\n faItalic: faItalic,\n faJackOLantern: faJackOLantern,\n faJedi: faJedi,\n faJoint: faJoint,\n faJournalWhills: faJournalWhills,\n faJoystick: faJoystick,\n faJug: faJug,\n faKaaba: faKaaba,\n faKazoo: faKazoo,\n faKerning: faKerning,\n faKey: faKey,\n faKeySkeleton: faKeySkeleton,\n faKeyboard: faKeyboard,\n faKeynote: faKeynote,\n faKhanda: faKhanda,\n faKidneys: faKidneys,\n faKiss: faKiss,\n faKissBeam: faKissBeam,\n faKissWinkHeart: faKissWinkHeart,\n faKite: faKite,\n faKiwiBird: faKiwiBird,\n faKnifeKitchen: faKnifeKitchen,\n faLambda: faLambda,\n faLamp: faLamp,\n faLampDesk: faLampDesk,\n faLampFloor: faLampFloor,\n faLandmark: faLandmark,\n faLandmarkAlt: faLandmarkAlt,\n faLanguage: faLanguage,\n faLaptop: faLaptop,\n faLaptopCode: faLaptopCode,\n faLaptopHouse: faLaptopHouse,\n faLaptopMedical: faLaptopMedical,\n faLasso: faLasso,\n faLaugh: faLaugh,\n faLaughBeam: faLaughBeam,\n faLaughSquint: faLaughSquint,\n faLaughWink: faLaughWink,\n faLayerGroup: faLayerGroup,\n faLayerMinus: faLayerMinus,\n faLayerPlus: faLayerPlus,\n faLeaf: faLeaf,\n faLeafHeart: faLeafHeart,\n faLeafMaple: faLeafMaple,\n faLeafOak: faLeafOak,\n faLemon: faLemon,\n faLessThan: faLessThan,\n faLessThanEqual: faLessThanEqual,\n faLevelDown: faLevelDown,\n faLevelDownAlt: faLevelDownAlt,\n faLevelUp: faLevelUp,\n faLevelUpAlt: faLevelUpAlt,\n faLifeRing: faLifeRing,\n faLightCeiling: faLightCeiling,\n faLightSwitch: faLightSwitch,\n faLightSwitchOff: faLightSwitchOff,\n faLightSwitchOn: faLightSwitchOn,\n faLightbulb: faLightbulb,\n faLightbulbDollar: faLightbulbDollar,\n faLightbulbExclamation: faLightbulbExclamation,\n faLightbulbOn: faLightbulbOn,\n faLightbulbSlash: faLightbulbSlash,\n faLightsHoliday: faLightsHoliday,\n faLineColumns: faLineColumns,\n faLineHeight: faLineHeight,\n faLink: faLink,\n faLips: faLips,\n faLiraSign: faLiraSign,\n faList: faList,\n faListAlt: faListAlt,\n faListMusic: faListMusic,\n faListOl: faListOl,\n faListUl: faListUl,\n faLocation: faLocation,\n faLocationArrow: faLocationArrow,\n faLocationCircle: faLocationCircle,\n faLocationSlash: faLocationSlash,\n faLock: faLock,\n faLockAlt: faLockAlt,\n faLockOpen: faLockOpen,\n faLockOpenAlt: faLockOpenAlt,\n faLongArrowAltDown: faLongArrowAltDown,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faLongArrowAltRight: faLongArrowAltRight,\n faLongArrowAltUp: faLongArrowAltUp,\n faLongArrowDown: faLongArrowDown,\n faLongArrowLeft: faLongArrowLeft,\n faLongArrowRight: faLongArrowRight,\n faLongArrowUp: faLongArrowUp,\n faLoveseat: faLoveseat,\n faLowVision: faLowVision,\n faLuchador: faLuchador,\n faLuggageCart: faLuggageCart,\n faLungs: faLungs,\n faLungsVirus: faLungsVirus,\n faMace: faMace,\n faMagic: faMagic,\n faMagnet: faMagnet,\n faMailBulk: faMailBulk,\n faMailbox: faMailbox,\n faMale: faMale,\n faMandolin: faMandolin,\n faMap: faMap,\n faMapMarked: faMapMarked,\n faMapMarkedAlt: faMapMarkedAlt,\n faMapMarker: faMapMarker,\n faMapMarkerAlt: faMapMarkerAlt,\n faMapMarkerAltSlash: faMapMarkerAltSlash,\n faMapMarkerCheck: faMapMarkerCheck,\n faMapMarkerEdit: faMapMarkerEdit,\n faMapMarkerExclamation: faMapMarkerExclamation,\n faMapMarkerMinus: faMapMarkerMinus,\n faMapMarkerPlus: faMapMarkerPlus,\n faMapMarkerQuestion: faMapMarkerQuestion,\n faMapMarkerSlash: faMapMarkerSlash,\n faMapMarkerSmile: faMapMarkerSmile,\n faMapMarkerTimes: faMapMarkerTimes,\n faMapPin: faMapPin,\n faMapSigns: faMapSigns,\n faMarker: faMarker,\n faMars: faMars,\n faMarsDouble: faMarsDouble,\n faMarsStroke: faMarsStroke,\n faMarsStrokeH: faMarsStrokeH,\n faMarsStrokeV: faMarsStrokeV,\n faMask: faMask,\n faMeat: faMeat,\n faMedal: faMedal,\n faMedkit: faMedkit,\n faMegaphone: faMegaphone,\n faMeh: faMeh,\n faMehBlank: faMehBlank,\n faMehRollingEyes: faMehRollingEyes,\n faMemory: faMemory,\n faMenorah: faMenorah,\n faMercury: faMercury,\n faMeteor: faMeteor,\n faMicrochip: faMicrochip,\n faMicrophone: faMicrophone,\n faMicrophoneAlt: faMicrophoneAlt,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faMicrophoneSlash: faMicrophoneSlash,\n faMicrophoneStand: faMicrophoneStand,\n faMicroscope: faMicroscope,\n faMicrowave: faMicrowave,\n faMindShare: faMindShare,\n faMinus: faMinus,\n faMinusCircle: faMinusCircle,\n faMinusHexagon: faMinusHexagon,\n faMinusOctagon: faMinusOctagon,\n faMinusSquare: faMinusSquare,\n faMistletoe: faMistletoe,\n faMitten: faMitten,\n faMobile: faMobile,\n faMobileAlt: faMobileAlt,\n faMobileAndroid: faMobileAndroid,\n faMobileAndroidAlt: faMobileAndroidAlt,\n faMoneyBill: faMoneyBill,\n faMoneyBillAlt: faMoneyBillAlt,\n faMoneyBillWave: faMoneyBillWave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faMoneyCheck: faMoneyCheck,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faMoneyCheckEdit: faMoneyCheckEdit,\n faMoneyCheckEditAlt: faMoneyCheckEditAlt,\n faMonitorHeartRate: faMonitorHeartRate,\n faMonkey: faMonkey,\n faMonument: faMonument,\n faMoon: faMoon,\n faMoonCloud: faMoonCloud,\n faMoonStars: faMoonStars,\n faMortarPestle: faMortarPestle,\n faMosque: faMosque,\n faMotorcycle: faMotorcycle,\n faMountain: faMountain,\n faMountains: faMountains,\n faMouse: faMouse,\n faMouseAlt: faMouseAlt,\n faMousePointer: faMousePointer,\n faMp3Player: faMp3Player,\n faMug: faMug,\n faMugHot: faMugHot,\n faMugMarshmallows: faMugMarshmallows,\n faMugTea: faMugTea,\n faMusic: faMusic,\n faMusicAlt: faMusicAlt,\n faMusicAltSlash: faMusicAltSlash,\n faMusicSlash: faMusicSlash,\n faNarwhal: faNarwhal,\n faNetworkWired: faNetworkWired,\n faNeuter: faNeuter,\n faNewspaper: faNewspaper,\n faNotEqual: faNotEqual,\n faNotesMedical: faNotesMedical,\n faObjectGroup: faObjectGroup,\n faObjectUngroup: faObjectUngroup,\n faOctagon: faOctagon,\n faOilCan: faOilCan,\n faOilTemp: faOilTemp,\n faOm: faOm,\n faOmega: faOmega,\n faOrnament: faOrnament,\n faOtter: faOtter,\n faOutdent: faOutdent,\n faOutlet: faOutlet,\n faOven: faOven,\n faOverline: faOverline,\n faPageBreak: faPageBreak,\n faPager: faPager,\n faPaintBrush: faPaintBrush,\n faPaintBrushAlt: faPaintBrushAlt,\n faPaintRoller: faPaintRoller,\n faPalette: faPalette,\n faPallet: faPallet,\n faPalletAlt: faPalletAlt,\n faPaperPlane: faPaperPlane,\n faPaperclip: faPaperclip,\n faParachuteBox: faParachuteBox,\n faParagraph: faParagraph,\n faParagraphRtl: faParagraphRtl,\n faParking: faParking,\n faParkingCircle: faParkingCircle,\n faParkingCircleSlash: faParkingCircleSlash,\n faParkingSlash: faParkingSlash,\n faPassport: faPassport,\n faPastafarianism: faPastafarianism,\n faPaste: faPaste,\n faPause: faPause,\n faPauseCircle: faPauseCircle,\n faPaw: faPaw,\n faPawAlt: faPawAlt,\n faPawClaws: faPawClaws,\n faPeace: faPeace,\n faPegasus: faPegasus,\n faPen: faPen,\n faPenAlt: faPenAlt,\n faPenFancy: faPenFancy,\n faPenNib: faPenNib,\n faPenSquare: faPenSquare,\n faPencil: faPencil,\n faPencilAlt: faPencilAlt,\n faPencilPaintbrush: faPencilPaintbrush,\n faPencilRuler: faPencilRuler,\n faPennant: faPennant,\n faPeopleArrows: faPeopleArrows,\n faPeopleCarry: faPeopleCarry,\n faPepperHot: faPepperHot,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faPersonBooth: faPersonBooth,\n faPersonCarry: faPersonCarry,\n faPersonDolly: faPersonDolly,\n faPersonDollyEmpty: faPersonDollyEmpty,\n faPersonSign: faPersonSign,\n faPhone: faPhone,\n faPhoneAlt: faPhoneAlt,\n faPhoneLaptop: faPhoneLaptop,\n faPhoneOffice: faPhoneOffice,\n faPhonePlus: faPhonePlus,\n faPhoneRotary: faPhoneRotary,\n faPhoneSlash: faPhoneSlash,\n faPhoneSquare: faPhoneSquare,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faPhoneVolume: faPhoneVolume,\n faPhotoVideo: faPhotoVideo,\n faPi: faPi,\n faPiano: faPiano,\n faPianoKeyboard: faPianoKeyboard,\n faPie: faPie,\n faPig: faPig,\n faPiggyBank: faPiggyBank,\n faPills: faPills,\n faPizza: faPizza,\n faPizzaSlice: faPizzaSlice,\n faPlaceOfWorship: faPlaceOfWorship,\n faPlane: faPlane,\n faPlaneAlt: faPlaneAlt,\n faPlaneArrival: faPlaneArrival,\n faPlaneDeparture: faPlaneDeparture,\n faPlaneSlash: faPlaneSlash,\n faPlanetMoon: faPlanetMoon,\n faPlanetRinged: faPlanetRinged,\n faPlay: faPlay,\n faPlayCircle: faPlayCircle,\n faPlug: faPlug,\n faPlus: faPlus,\n faPlusCircle: faPlusCircle,\n faPlusHexagon: faPlusHexagon,\n faPlusOctagon: faPlusOctagon,\n faPlusSquare: faPlusSquare,\n faPodcast: faPodcast,\n faPodium: faPodium,\n faPodiumStar: faPodiumStar,\n faPoliceBox: faPoliceBox,\n faPoll: faPoll,\n faPollH: faPollH,\n faPollPeople: faPollPeople,\n faPoo: faPoo,\n faPooStorm: faPooStorm,\n faPoop: faPoop,\n faPopcorn: faPopcorn,\n faPortalEnter: faPortalEnter,\n faPortalExit: faPortalExit,\n faPortrait: faPortrait,\n faPoundSign: faPoundSign,\n faPowerOff: faPowerOff,\n faPray: faPray,\n faPrayingHands: faPrayingHands,\n faPrescription: faPrescription,\n faPrescriptionBottle: faPrescriptionBottle,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faPresentation: faPresentation,\n faPrint: faPrint,\n faPrintSearch: faPrintSearch,\n faPrintSlash: faPrintSlash,\n faProcedures: faProcedures,\n faProjectDiagram: faProjectDiagram,\n faProjector: faProjector,\n faPumpMedical: faPumpMedical,\n faPumpSoap: faPumpSoap,\n faPumpkin: faPumpkin,\n faPuzzlePiece: faPuzzlePiece,\n faQrcode: faQrcode,\n faQuestion: faQuestion,\n faQuestionCircle: faQuestionCircle,\n faQuestionSquare: faQuestionSquare,\n faQuidditch: faQuidditch,\n faQuoteLeft: faQuoteLeft,\n faQuoteRight: faQuoteRight,\n faQuran: faQuran,\n faRabbit: faRabbit,\n faRabbitFast: faRabbitFast,\n faRacquet: faRacquet,\n faRadar: faRadar,\n faRadiation: faRadiation,\n faRadiationAlt: faRadiationAlt,\n faRadio: faRadio,\n faRadioAlt: faRadioAlt,\n faRainbow: faRainbow,\n faRaindrops: faRaindrops,\n faRam: faRam,\n faRampLoading: faRampLoading,\n faRandom: faRandom,\n faRaygun: faRaygun,\n faReceipt: faReceipt,\n faRecordVinyl: faRecordVinyl,\n faRectangleLandscape: faRectangleLandscape,\n faRectanglePortrait: faRectanglePortrait,\n faRectangleWide: faRectangleWide,\n faRecycle: faRecycle,\n faRedo: faRedo,\n faRedoAlt: faRedoAlt,\n faRefrigerator: faRefrigerator,\n faRegistered: faRegistered,\n faRemoveFormat: faRemoveFormat,\n faRepeat: faRepeat,\n faRepeat1: faRepeat1,\n faRepeat1Alt: faRepeat1Alt,\n faRepeatAlt: faRepeatAlt,\n faReply: faReply,\n faReplyAll: faReplyAll,\n faRepublican: faRepublican,\n faRestroom: faRestroom,\n faRetweet: faRetweet,\n faRetweetAlt: faRetweetAlt,\n faRibbon: faRibbon,\n faRing: faRing,\n faRingsWedding: faRingsWedding,\n faRoad: faRoad,\n faRobot: faRobot,\n faRocket: faRocket,\n faRocketLaunch: faRocketLaunch,\n faRoute: faRoute,\n faRouteHighway: faRouteHighway,\n faRouteInterstate: faRouteInterstate,\n faRouter: faRouter,\n faRss: faRss,\n faRssSquare: faRssSquare,\n faRubleSign: faRubleSign,\n faRuler: faRuler,\n faRulerCombined: faRulerCombined,\n faRulerHorizontal: faRulerHorizontal,\n faRulerTriangle: faRulerTriangle,\n faRulerVertical: faRulerVertical,\n faRunning: faRunning,\n faRupeeSign: faRupeeSign,\n faRv: faRv,\n faSack: faSack,\n faSackDollar: faSackDollar,\n faSadCry: faSadCry,\n faSadTear: faSadTear,\n faSalad: faSalad,\n faSandwich: faSandwich,\n faSatellite: faSatellite,\n faSatelliteDish: faSatelliteDish,\n faSausage: faSausage,\n faSave: faSave,\n faSaxHot: faSaxHot,\n faSaxophone: faSaxophone,\n faScalpel: faScalpel,\n faScalpelPath: faScalpelPath,\n faScanner: faScanner,\n faScannerImage: faScannerImage,\n faScannerKeyboard: faScannerKeyboard,\n faScannerTouchscreen: faScannerTouchscreen,\n faScarecrow: faScarecrow,\n faScarf: faScarf,\n faSchool: faSchool,\n faScrewdriver: faScrewdriver,\n faScroll: faScroll,\n faScrollOld: faScrollOld,\n faScrubber: faScrubber,\n faScythe: faScythe,\n faSdCard: faSdCard,\n faSearch: faSearch,\n faSearchDollar: faSearchDollar,\n faSearchLocation: faSearchLocation,\n faSearchMinus: faSearchMinus,\n faSearchPlus: faSearchPlus,\n faSeedling: faSeedling,\n faSendBack: faSendBack,\n faSendBackward: faSendBackward,\n faSensor: faSensor,\n faSensorAlert: faSensorAlert,\n faSensorFire: faSensorFire,\n faSensorOn: faSensorOn,\n faSensorSmoke: faSensorSmoke,\n faServer: faServer,\n faShapes: faShapes,\n faShare: faShare,\n faShareAll: faShareAll,\n faShareAlt: faShareAlt,\n faShareAltSquare: faShareAltSquare,\n faShareSquare: faShareSquare,\n faSheep: faSheep,\n faShekelSign: faShekelSign,\n faShield: faShield,\n faShieldAlt: faShieldAlt,\n faShieldCheck: faShieldCheck,\n faShieldCross: faShieldCross,\n faShieldVirus: faShieldVirus,\n faShip: faShip,\n faShippingFast: faShippingFast,\n faShippingTimed: faShippingTimed,\n faShishKebab: faShishKebab,\n faShoePrints: faShoePrints,\n faShoppingBag: faShoppingBag,\n faShoppingBasket: faShoppingBasket,\n faShoppingCart: faShoppingCart,\n faShovel: faShovel,\n faShovelSnow: faShovelSnow,\n faShower: faShower,\n faShredder: faShredder,\n faShuttleVan: faShuttleVan,\n faShuttlecock: faShuttlecock,\n faSickle: faSickle,\n faSigma: faSigma,\n faSign: faSign,\n faSignIn: faSignIn,\n faSignInAlt: faSignInAlt,\n faSignLanguage: faSignLanguage,\n faSignOut: faSignOut,\n faSignOutAlt: faSignOutAlt,\n faSignal: faSignal,\n faSignal1: faSignal1,\n faSignal2: faSignal2,\n faSignal3: faSignal3,\n faSignal4: faSignal4,\n faSignalAlt: faSignalAlt,\n faSignalAlt1: faSignalAlt1,\n faSignalAlt2: faSignalAlt2,\n faSignalAlt3: faSignalAlt3,\n faSignalAltSlash: faSignalAltSlash,\n faSignalSlash: faSignalSlash,\n faSignalStream: faSignalStream,\n faSignature: faSignature,\n faSimCard: faSimCard,\n faSink: faSink,\n faSiren: faSiren,\n faSirenOn: faSirenOn,\n faSitemap: faSitemap,\n faSkating: faSkating,\n faSkeleton: faSkeleton,\n faSkiJump: faSkiJump,\n faSkiLift: faSkiLift,\n faSkiing: faSkiing,\n faSkiingNordic: faSkiingNordic,\n faSkull: faSkull,\n faSkullCow: faSkullCow,\n faSkullCrossbones: faSkullCrossbones,\n faSlash: faSlash,\n faSledding: faSledding,\n faSleigh: faSleigh,\n faSlidersH: faSlidersH,\n faSlidersHSquare: faSlidersHSquare,\n faSlidersV: faSlidersV,\n faSlidersVSquare: faSlidersVSquare,\n faSmile: faSmile,\n faSmileBeam: faSmileBeam,\n faSmilePlus: faSmilePlus,\n faSmileWink: faSmileWink,\n faSmog: faSmog,\n faSmoke: faSmoke,\n faSmoking: faSmoking,\n faSmokingBan: faSmokingBan,\n faSms: faSms,\n faSnake: faSnake,\n faSnooze: faSnooze,\n faSnowBlowing: faSnowBlowing,\n faSnowboarding: faSnowboarding,\n faSnowflake: faSnowflake,\n faSnowflakes: faSnowflakes,\n faSnowman: faSnowman,\n faSnowmobile: faSnowmobile,\n faSnowplow: faSnowplow,\n faSoap: faSoap,\n faSocks: faSocks,\n faSolarPanel: faSolarPanel,\n faSolarSystem: faSolarSystem,\n faSort: faSort,\n faSortAlphaDown: faSortAlphaDown,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faSortAlphaUp: faSortAlphaUp,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faSortAlt: faSortAlt,\n faSortAmountDown: faSortAmountDown,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faSortAmountUp: faSortAmountUp,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faSortCircle: faSortCircle,\n faSortCircleDown: faSortCircleDown,\n faSortCircleUp: faSortCircleUp,\n faSortDown: faSortDown,\n faSortNumericDown: faSortNumericDown,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faSortNumericUp: faSortNumericUp,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faSortShapesDown: faSortShapesDown,\n faSortShapesDownAlt: faSortShapesDownAlt,\n faSortShapesUp: faSortShapesUp,\n faSortShapesUpAlt: faSortShapesUpAlt,\n faSortSizeDown: faSortSizeDown,\n faSortSizeDownAlt: faSortSizeDownAlt,\n faSortSizeUp: faSortSizeUp,\n faSortSizeUpAlt: faSortSizeUpAlt,\n faSortUp: faSortUp,\n faSoup: faSoup,\n faSpa: faSpa,\n faSpaceShuttle: faSpaceShuttle,\n faSpaceStationMoon: faSpaceStationMoon,\n faSpaceStationMoonAlt: faSpaceStationMoonAlt,\n faSpade: faSpade,\n faSparkles: faSparkles,\n faSpeaker: faSpeaker,\n faSpeakers: faSpeakers,\n faSpellCheck: faSpellCheck,\n faSpider: faSpider,\n faSpiderBlackWidow: faSpiderBlackWidow,\n faSpiderWeb: faSpiderWeb,\n faSpinner: faSpinner,\n faSpinnerThird: faSpinnerThird,\n faSplotch: faSplotch,\n faSprayCan: faSprayCan,\n faSprinkler: faSprinkler,\n faSquare: faSquare,\n faSquareFull: faSquareFull,\n faSquareRoot: faSquareRoot,\n faSquareRootAlt: faSquareRootAlt,\n faSquirrel: faSquirrel,\n faStaff: faStaff,\n faStamp: faStamp,\n faStar: faStar,\n faStarAndCrescent: faStarAndCrescent,\n faStarChristmas: faStarChristmas,\n faStarExclamation: faStarExclamation,\n faStarHalf: faStarHalf,\n faStarHalfAlt: faStarHalfAlt,\n faStarOfDavid: faStarOfDavid,\n faStarOfLife: faStarOfLife,\n faStarShooting: faStarShooting,\n faStarfighter: faStarfighter,\n faStarfighterAlt: faStarfighterAlt,\n faStars: faStars,\n faStarship: faStarship,\n faStarshipFreighter: faStarshipFreighter,\n faSteak: faSteak,\n faSteeringWheel: faSteeringWheel,\n faStepBackward: faStepBackward,\n faStepForward: faStepForward,\n faStethoscope: faStethoscope,\n faStickyNote: faStickyNote,\n faStocking: faStocking,\n faStomach: faStomach,\n faStop: faStop,\n faStopCircle: faStopCircle,\n faStopwatch: faStopwatch,\n faStopwatch20: faStopwatch20,\n faStore: faStore,\n faStoreAlt: faStoreAlt,\n faStoreAltSlash: faStoreAltSlash,\n faStoreSlash: faStoreSlash,\n faStream: faStream,\n faStreetView: faStreetView,\n faStretcher: faStretcher,\n faStrikethrough: faStrikethrough,\n faStroopwafel: faStroopwafel,\n faSubscript: faSubscript,\n faSubway: faSubway,\n faSuitcase: faSuitcase,\n faSuitcaseRolling: faSuitcaseRolling,\n faSun: faSun,\n faSunCloud: faSunCloud,\n faSunDust: faSunDust,\n faSunHaze: faSunHaze,\n faSunglasses: faSunglasses,\n faSunrise: faSunrise,\n faSunset: faSunset,\n faSuperscript: faSuperscript,\n faSurprise: faSurprise,\n faSwatchbook: faSwatchbook,\n faSwimmer: faSwimmer,\n faSwimmingPool: faSwimmingPool,\n faSword: faSword,\n faSwordLaser: faSwordLaser,\n faSwordLaserAlt: faSwordLaserAlt,\n faSwords: faSwords,\n faSwordsLaser: faSwordsLaser,\n faSynagogue: faSynagogue,\n faSync: faSync,\n faSyncAlt: faSyncAlt,\n faSyringe: faSyringe,\n faTable: faTable,\n faTableTennis: faTableTennis,\n faTablet: faTablet,\n faTabletAlt: faTabletAlt,\n faTabletAndroid: faTabletAndroid,\n faTabletAndroidAlt: faTabletAndroidAlt,\n faTabletRugged: faTabletRugged,\n faTablets: faTablets,\n faTachometer: faTachometer,\n faTachometerAlt: faTachometerAlt,\n faTachometerAltAverage: faTachometerAltAverage,\n faTachometerAltFast: faTachometerAltFast,\n faTachometerAltFastest: faTachometerAltFastest,\n faTachometerAltSlow: faTachometerAltSlow,\n faTachometerAltSlowest: faTachometerAltSlowest,\n faTachometerAverage: faTachometerAverage,\n faTachometerFast: faTachometerFast,\n faTachometerFastest: faTachometerFastest,\n faTachometerSlow: faTachometerSlow,\n faTachometerSlowest: faTachometerSlowest,\n faTaco: faTaco,\n faTag: faTag,\n faTags: faTags,\n faTally: faTally,\n faTanakh: faTanakh,\n faTape: faTape,\n faTasks: faTasks,\n faTasksAlt: faTasksAlt,\n faTaxi: faTaxi,\n faTeeth: faTeeth,\n faTeethOpen: faTeethOpen,\n faTelescope: faTelescope,\n faTemperatureDown: faTemperatureDown,\n faTemperatureFrigid: faTemperatureFrigid,\n faTemperatureHigh: faTemperatureHigh,\n faTemperatureHot: faTemperatureHot,\n faTemperatureLow: faTemperatureLow,\n faTemperatureUp: faTemperatureUp,\n faTenge: faTenge,\n faTennisBall: faTennisBall,\n faTerminal: faTerminal,\n faText: faText,\n faTextHeight: faTextHeight,\n faTextSize: faTextSize,\n faTextWidth: faTextWidth,\n faTh: faTh,\n faThLarge: faThLarge,\n faThList: faThList,\n faTheaterMasks: faTheaterMasks,\n faThermometer: faThermometer,\n faThermometerEmpty: faThermometerEmpty,\n faThermometerFull: faThermometerFull,\n faThermometerHalf: faThermometerHalf,\n faThermometerQuarter: faThermometerQuarter,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faTheta: faTheta,\n faThumbsDown: faThumbsDown,\n faThumbsUp: faThumbsUp,\n faThumbtack: faThumbtack,\n faThunderstorm: faThunderstorm,\n faThunderstormMoon: faThunderstormMoon,\n faThunderstormSun: faThunderstormSun,\n faTicket: faTicket,\n faTicketAlt: faTicketAlt,\n faTilde: faTilde,\n faTimes: faTimes,\n faTimesCircle: faTimesCircle,\n faTimesHexagon: faTimesHexagon,\n faTimesOctagon: faTimesOctagon,\n faTimesSquare: faTimesSquare,\n faTint: faTint,\n faTintSlash: faTintSlash,\n faTire: faTire,\n faTireFlat: faTireFlat,\n faTirePressureWarning: faTirePressureWarning,\n faTireRugged: faTireRugged,\n faTired: faTired,\n faToggleOff: faToggleOff,\n faToggleOn: faToggleOn,\n faToilet: faToilet,\n faToiletPaper: faToiletPaper,\n faToiletPaperAlt: faToiletPaperAlt,\n faToiletPaperSlash: faToiletPaperSlash,\n faTombstone: faTombstone,\n faTombstoneAlt: faTombstoneAlt,\n faToolbox: faToolbox,\n faTools: faTools,\n faTooth: faTooth,\n faToothbrush: faToothbrush,\n faTorah: faTorah,\n faToriiGate: faToriiGate,\n faTornado: faTornado,\n faTractor: faTractor,\n faTrademark: faTrademark,\n faTrafficCone: faTrafficCone,\n faTrafficLight: faTrafficLight,\n faTrafficLightGo: faTrafficLightGo,\n faTrafficLightSlow: faTrafficLightSlow,\n faTrafficLightStop: faTrafficLightStop,\n faTrailer: faTrailer,\n faTrain: faTrain,\n faTram: faTram,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faTransporter: faTransporter,\n faTransporter1: faTransporter1,\n faTransporter2: faTransporter2,\n faTransporter3: faTransporter3,\n faTransporterEmpty: faTransporterEmpty,\n faTrash: faTrash,\n faTrashAlt: faTrashAlt,\n faTrashRestore: faTrashRestore,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faTrashUndo: faTrashUndo,\n faTrashUndoAlt: faTrashUndoAlt,\n faTreasureChest: faTreasureChest,\n faTree: faTree,\n faTreeAlt: faTreeAlt,\n faTreeChristmas: faTreeChristmas,\n faTreeDecorated: faTreeDecorated,\n faTreeLarge: faTreeLarge,\n faTreePalm: faTreePalm,\n faTrees: faTrees,\n faTriangle: faTriangle,\n faTriangleMusic: faTriangleMusic,\n faTrophy: faTrophy,\n faTrophyAlt: faTrophyAlt,\n faTruck: faTruck,\n faTruckContainer: faTruckContainer,\n faTruckCouch: faTruckCouch,\n faTruckLoading: faTruckLoading,\n faTruckMonster: faTruckMonster,\n faTruckMoving: faTruckMoving,\n faTruckPickup: faTruckPickup,\n faTruckPlow: faTruckPlow,\n faTruckRamp: faTruckRamp,\n faTrumpet: faTrumpet,\n faTshirt: faTshirt,\n faTty: faTty,\n faTurkey: faTurkey,\n faTurntable: faTurntable,\n faTurtle: faTurtle,\n faTv: faTv,\n faTvAlt: faTvAlt,\n faTvMusic: faTvMusic,\n faTvRetro: faTvRetro,\n faTypewriter: faTypewriter,\n faUfo: faUfo,\n faUfoBeam: faUfoBeam,\n faUmbrella: faUmbrella,\n faUmbrellaBeach: faUmbrellaBeach,\n faUnderline: faUnderline,\n faUndo: faUndo,\n faUndoAlt: faUndoAlt,\n faUnicorn: faUnicorn,\n faUnion: faUnion,\n faUniversalAccess: faUniversalAccess,\n faUniversity: faUniversity,\n faUnlink: faUnlink,\n faUnlock: faUnlock,\n faUnlockAlt: faUnlockAlt,\n faUpload: faUpload,\n faUsbDrive: faUsbDrive,\n faUsdCircle: faUsdCircle,\n faUsdSquare: faUsdSquare,\n faUser: faUser,\n faUserAlien: faUserAlien,\n faUserAlt: faUserAlt,\n faUserAltSlash: faUserAltSlash,\n faUserAstronaut: faUserAstronaut,\n faUserChart: faUserChart,\n faUserCheck: faUserCheck,\n faUserCircle: faUserCircle,\n faUserClock: faUserClock,\n faUserCog: faUserCog,\n faUserCowboy: faUserCowboy,\n faUserCrown: faUserCrown,\n faUserEdit: faUserEdit,\n faUserFriends: faUserFriends,\n faUserGraduate: faUserGraduate,\n faUserHardHat: faUserHardHat,\n faUserHeadset: faUserHeadset,\n faUserInjured: faUserInjured,\n faUserLock: faUserLock,\n faUserMd: faUserMd,\n faUserMdChat: faUserMdChat,\n faUserMinus: faUserMinus,\n faUserMusic: faUserMusic,\n faUserNinja: faUserNinja,\n faUserNurse: faUserNurse,\n faUserPlus: faUserPlus,\n faUserRobot: faUserRobot,\n faUserSecret: faUserSecret,\n faUserShield: faUserShield,\n faUserSlash: faUserSlash,\n faUserTag: faUserTag,\n faUserTie: faUserTie,\n faUserTimes: faUserTimes,\n faUserUnlock: faUserUnlock,\n faUserVisor: faUserVisor,\n faUsers: faUsers,\n faUsersClass: faUsersClass,\n faUsersCog: faUsersCog,\n faUsersCrown: faUsersCrown,\n faUsersMedical: faUsersMedical,\n faUsersSlash: faUsersSlash,\n faUtensilFork: faUtensilFork,\n faUtensilKnife: faUtensilKnife,\n faUtensilSpoon: faUtensilSpoon,\n faUtensils: faUtensils,\n faUtensilsAlt: faUtensilsAlt,\n faVacuum: faVacuum,\n faVacuumRobot: faVacuumRobot,\n faValueAbsolute: faValueAbsolute,\n faVectorSquare: faVectorSquare,\n faVenus: faVenus,\n faVenusDouble: faVenusDouble,\n faVenusMars: faVenusMars,\n faVest: faVest,\n faVestPatches: faVestPatches,\n faVhs: faVhs,\n faVial: faVial,\n faVials: faVials,\n faVideo: faVideo,\n faVideoPlus: faVideoPlus,\n faVideoSlash: faVideoSlash,\n faVihara: faVihara,\n faViolin: faViolin,\n faVirus: faVirus,\n faVirusSlash: faVirusSlash,\n faViruses: faViruses,\n faVoicemail: faVoicemail,\n faVolcano: faVolcano,\n faVolleyballBall: faVolleyballBall,\n faVolume: faVolume,\n faVolumeDown: faVolumeDown,\n faVolumeMute: faVolumeMute,\n faVolumeOff: faVolumeOff,\n faVolumeSlash: faVolumeSlash,\n faVolumeUp: faVolumeUp,\n faVoteNay: faVoteNay,\n faVoteYea: faVoteYea,\n faVrCardboard: faVrCardboard,\n faWagonCovered: faWagonCovered,\n faWalker: faWalker,\n faWalkieTalkie: faWalkieTalkie,\n faWalking: faWalking,\n faWallet: faWallet,\n faWand: faWand,\n faWandMagic: faWandMagic,\n faWarehouse: faWarehouse,\n faWarehouseAlt: faWarehouseAlt,\n faWasher: faWasher,\n faWatch: faWatch,\n faWatchCalculator: faWatchCalculator,\n faWatchFitness: faWatchFitness,\n faWater: faWater,\n faWaterLower: faWaterLower,\n faWaterRise: faWaterRise,\n faWaveSine: faWaveSine,\n faWaveSquare: faWaveSquare,\n faWaveTriangle: faWaveTriangle,\n faWaveform: faWaveform,\n faWaveformPath: faWaveformPath,\n faWebcam: faWebcam,\n faWebcamSlash: faWebcamSlash,\n faWeight: faWeight,\n faWeightHanging: faWeightHanging,\n faWhale: faWhale,\n faWheat: faWheat,\n faWheelchair: faWheelchair,\n faWhistle: faWhistle,\n faWifi: faWifi,\n faWifi1: faWifi1,\n faWifi2: faWifi2,\n faWifiSlash: faWifiSlash,\n faWind: faWind,\n faWindTurbine: faWindTurbine,\n faWindWarning: faWindWarning,\n faWindow: faWindow,\n faWindowAlt: faWindowAlt,\n faWindowClose: faWindowClose,\n faWindowFrame: faWindowFrame,\n faWindowFrameOpen: faWindowFrameOpen,\n faWindowMaximize: faWindowMaximize,\n faWindowMinimize: faWindowMinimize,\n faWindowRestore: faWindowRestore,\n faWindsock: faWindsock,\n faWineBottle: faWineBottle,\n faWineGlass: faWineGlass,\n faWineGlassAlt: faWineGlassAlt,\n faWonSign: faWonSign,\n faWreath: faWreath,\n faWrench: faWrench,\n faXRay: faXRay,\n faYenSign: faYenSign,\n faYinYang: faYinYang\n};\n\nexport { _iconsCache as far, prefix, faAbacus, faAcorn, faAd, faAddressBook, faAddressCard, faAdjust, faAirConditioner, faAirFreshener, faAlarmClock, faAlarmExclamation, faAlarmPlus, faAlarmSnooze, faAlbum, faAlbumCollection, faAlicorn, faAlien, faAlienMonster, faAlignCenter, faAlignJustify, faAlignLeft, faAlignRight, faAlignSlash, faAllergies, faAmbulance, faAmericanSignLanguageInterpreting, faAmpGuitar, faAnalytics, faAnchor, faAngel, faAngleDoubleDown, faAngleDoubleLeft, faAngleDoubleRight, faAngleDoubleUp, faAngleDown, faAngleLeft, faAngleRight, faAngleUp, faAngry, faAnkh, faAppleAlt, faAppleCrate, faArchive, faArchway, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faArrowAltDown, faArrowAltFromBottom, faArrowAltFromLeft, faArrowAltFromRight, faArrowAltFromTop, faArrowAltLeft, faArrowAltRight, faArrowAltSquareDown, faArrowAltSquareLeft, faArrowAltSquareRight, faArrowAltSquareUp, faArrowAltToBottom, faArrowAltToLeft, faArrowAltToRight, faArrowAltToTop, faArrowAltUp, faArrowCircleDown, faArrowCircleLeft, faArrowCircleRight, faArrowCircleUp, faArrowDown, faArrowFromBottom, faArrowFromLeft, faArrowFromRight, faArrowFromTop, faArrowLeft, faArrowRight, faArrowSquareDown, faArrowSquareLeft, faArrowSquareRight, faArrowSquareUp, faArrowToBottom, faArrowToLeft, faArrowToRight, faArrowToTop, faArrowUp, faArrows, faArrowsAlt, faArrowsAltH, faArrowsAltV, faArrowsH, faArrowsV, faAssistiveListeningSystems, faAsterisk, faAt, faAtlas, faAtom, faAtomAlt, faAudioDescription, faAward, faAxe, faAxeBattle, faBaby, faBabyCarriage, faBackpack, faBackspace, faBackward, faBacon, faBacteria, faBacterium, faBadge, faBadgeCheck, faBadgeDollar, faBadgePercent, faBadgeSheriff, faBadgerHoney, faBagsShopping, faBahai, faBalanceScale, faBalanceScaleLeft, faBalanceScaleRight, faBallPile, faBallot, faBallotCheck, faBan, faBandAid, faBanjo, faBarcode, faBarcodeAlt, faBarcodeRead, faBarcodeScan, faBars, faBaseball, faBaseballBall, faBasketballBall, faBasketballHoop, faBat, faBath, faBatteryBolt, faBatteryEmpty, faBatteryFull, faBatteryHalf, faBatteryQuarter, faBatterySlash, faBatteryThreeQuarters, faBed, faBedAlt, faBedBunk, faBedEmpty, faBeer, faBell, faBellExclamation, faBellOn, faBellPlus, faBellSchool, faBellSchoolSlash, faBellSlash, faBells, faBetamax, faBezierCurve, faBible, faBicycle, faBiking, faBikingMountain, faBinoculars, faBiohazard, faBirthdayCake, faBlanket, faBlender, faBlenderPhone, faBlind, faBlinds, faBlindsOpen, faBlindsRaised, faBlog, faBold, faBolt, faBomb, faBone, faBoneBreak, faBong, faBook, faBookAlt, faBookDead, faBookHeart, faBookMedical, faBookOpen, faBookReader, faBookSpells, faBookUser, faBookmark, faBooks, faBooksMedical, faBoombox, faBoot, faBoothCurtain, faBorderAll, faBorderBottom, faBorderCenterH, faBorderCenterV, faBorderInner, faBorderLeft, faBorderNone, faBorderOuter, faBorderRight, faBorderStyle, faBorderStyleAlt, faBorderTop, faBowArrow, faBowlingBall, faBowlingPins, faBox, faBoxAlt, faBoxBallot, faBoxCheck, faBoxFragile, faBoxFull, faBoxHeart, faBoxOpen, faBoxTissue, faBoxUp, faBoxUsd, faBoxes, faBoxesAlt, faBoxingGlove, faBrackets, faBracketsCurly, faBraille, faBrain, faBreadLoaf, faBreadSlice, faBriefcase, faBriefcaseMedical, faBringForward, faBringFront, faBroadcastTower, faBroom, faBrowser, faBrush, faBug, faBuilding, faBullhorn, faBullseye, faBullseyeArrow, faBullseyePointer, faBurgerSoda, faBurn, faBurrito, faBus, faBusAlt, faBusSchool, faBusinessTime, faCabinetFiling, faCactus, faCalculator, faCalculatorAlt, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarDay, faCalendarEdit, faCalendarExclamation, faCalendarMinus, faCalendarPlus, faCalendarStar, faCalendarTimes, faCalendarWeek, faCamcorder, faCamera, faCameraAlt, faCameraHome, faCameraMovie, faCameraPolaroid, faCameraRetro, faCampfire, faCampground, faCandleHolder, faCandyCane, faCandyCorn, faCannabis, faCapsules, faCar, faCarAlt, faCarBattery, faCarBuilding, faCarBump, faCarBus, faCarCrash, faCarGarage, faCarMechanic, faCarSide, faCarTilt, faCarWash, faCaravan, faCaravanAlt, faCaretCircleDown, faCaretCircleLeft, faCaretCircleRight, faCaretCircleUp, faCaretDown, faCaretLeft, faCaretRight, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faCaretUp, faCarrot, faCars, faCartArrowDown, faCartPlus, faCashRegister, faCassetteTape, faCat, faCatSpace, faCauldron, faCctv, faCertificate, faChair, faChairOffice, faChalkboard, faChalkboardTeacher, faChargingStation, faChartArea, faChartBar, faChartLine, faChartLineDown, faChartNetwork, faChartPie, faChartPieAlt, faChartScatter, faCheck, faCheckCircle, faCheckDouble, faCheckSquare, faCheese, faCheeseSwiss, faCheeseburger, faChess, faChessBishop, faChessBishopAlt, faChessBoard, faChessClock, faChessClockAlt, faChessKing, faChessKingAlt, faChessKnight, faChessKnightAlt, faChessPawn, faChessPawnAlt, faChessQueen, faChessQueenAlt, faChessRook, faChessRookAlt, faChevronCircleDown, faChevronCircleLeft, faChevronCircleRight, faChevronCircleUp, faChevronDoubleDown, faChevronDoubleLeft, faChevronDoubleRight, faChevronDoubleUp, faChevronDown, faChevronLeft, faChevronRight, faChevronSquareDown, faChevronSquareLeft, faChevronSquareRight, faChevronSquareUp, faChevronUp, faChild, faChimney, faChurch, faCircle, faCircleNotch, faCity, faClarinet, faClawMarks, faClinicMedical, faClipboard, faClipboardCheck, faClipboardList, faClipboardListCheck, faClipboardPrescription, faClipboardUser, faClock, faClone, faClosedCaptioning, faCloud, faCloudDownload, faCloudDownloadAlt, faCloudDrizzle, faCloudHail, faCloudHailMixed, faCloudMeatball, faCloudMoon, faCloudMoonRain, faCloudMusic, faCloudRain, faCloudRainbow, faCloudShowers, faCloudShowersHeavy, faCloudSleet, faCloudSnow, faCloudSun, faCloudSunRain, faCloudUpload, faCloudUploadAlt, faClouds, faCloudsMoon, faCloudsSun, faClub, faCocktail, faCode, faCodeBranch, faCodeCommit, faCodeMerge, faCoffee, faCoffeePot, faCoffeeTogo, faCoffin, faCoffinCross, faCog, faCogs, faCoin, faCoins, faColumns, faComet, faComment, faCommentAlt, faCommentAltCheck, faCommentAltDollar, faCommentAltDots, faCommentAltEdit, faCommentAltExclamation, faCommentAltLines, faCommentAltMedical, faCommentAltMinus, faCommentAltMusic, faCommentAltPlus, faCommentAltSlash, faCommentAltSmile, faCommentAltTimes, faCommentCheck, faCommentDollar, faCommentDots, faCommentEdit, faCommentExclamation, faCommentLines, faCommentMedical, faCommentMinus, faCommentMusic, faCommentPlus, faCommentSlash, faCommentSmile, faCommentTimes, faComments, faCommentsAlt, faCommentsAltDollar, faCommentsDollar, faCompactDisc, faCompass, faCompassSlash, faCompress, faCompressAlt, faCompressArrowsAlt, faCompressWide, faComputerClassic, faComputerSpeaker, faConciergeBell, faConstruction, faContainerStorage, faConveyorBelt, faConveyorBeltAlt, faCookie, faCookieBite, faCopy, faCopyright, faCorn, faCouch, faCow, faCowbell, faCowbellMore, faCreditCard, faCreditCardBlank, faCreditCardFront, faCricket, faCroissant, faCrop, faCropAlt, faCross, faCrosshairs, faCrow, faCrown, faCrutch, faCrutches, faCube, faCubes, faCurling, faCut, faDagger, faDatabase, faDeaf, faDebug, faDeer, faDeerRudolph, faDemocrat, faDesktop, faDesktopAlt, faDewpoint, faDharmachakra, faDiagnoses, faDiamond, faDice, faDiceD10, faDiceD12, faDiceD20, faDiceD4, faDiceD6, faDiceD8, faDiceFive, faDiceFour, faDiceOne, faDiceSix, faDiceThree, faDiceTwo, faDigging, faDigitalTachograph, faDiploma, faDirections, faDiscDrive, faDisease, faDivide, faDizzy, faDna, faDoNotEnter, faDog, faDogLeashed, faDollarSign, faDolly, faDollyEmpty, faDollyFlatbed, faDollyFlatbedAlt, faDollyFlatbedEmpty, faDonate, faDoorClosed, faDoorOpen, faDotCircle, faDove, faDownload, faDraftingCompass, faDragon, faDrawCircle, faDrawPolygon, faDrawSquare, faDreidel, faDrone, faDroneAlt, faDrum, faDrumSteelpan, faDrumstick, faDrumstickBite, faDryer, faDryerAlt, faDuck, faDumbbell, faDumpster, faDumpsterFire, faDungeon, faEar, faEarMuffs, faEclipse, faEclipseAlt, faEdit, faEgg, faEggFried, faEject, faElephant, faEllipsisH, faEllipsisHAlt, faEllipsisV, faEllipsisVAlt, faEmptySet, faEngineWarning, faEnvelope, faEnvelopeOpen, faEnvelopeOpenDollar, faEnvelopeOpenText, faEnvelopeSquare, faEquals, faEraser, faEthernet, faEuroSign, faExchange, faExchangeAlt, faExclamation, faExclamationCircle, faExclamationSquare, faExclamationTriangle, faExpand, faExpandAlt, faExpandArrows, faExpandArrowsAlt, faExpandWide, faExternalLink, faExternalLinkAlt, faExternalLinkSquare, faExternalLinkSquareAlt, faEye, faEyeDropper, faEyeEvil, faEyeSlash, faFan, faFanTable, faFarm, faFastBackward, faFastForward, faFaucet, faFaucetDrip, faFax, faFeather, faFeatherAlt, faFemale, faFieldHockey, faFighterJet, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCertificate, faFileChartLine, faFileChartPie, faFileCheck, faFileCode, faFileContract, faFileCsv, faFileDownload, faFileEdit, faFileExcel, faFileExclamation, faFileExport, faFileImage, faFileImport, faFileInvoice, faFileInvoiceDollar, faFileMedical, faFileMedicalAlt, faFileMinus, faFileMusic, faFilePdf, faFilePlus, faFilePowerpoint, faFilePrescription, faFileSearch, faFileSignature, faFileSpreadsheet, faFileTimes, faFileUpload, faFileUser, faFileVideo, faFileWord, faFilesMedical, faFill, faFillDrip, faFilm, faFilmAlt, faFilmCanister, faFilter, faFingerprint, faFire, faFireAlt, faFireExtinguisher, faFireSmoke, faFireplace, faFirstAid, faFish, faFishCooked, faFistRaised, faFlag, faFlagAlt, faFlagCheckered, faFlagUsa, faFlame, faFlashlight, faFlask, faFlaskPoison, faFlaskPotion, faFlower, faFlowerDaffodil, faFlowerTulip, faFlushed, faFlute, faFluxCapacitor, faFog, faFolder, faFolderDownload, faFolderMinus, faFolderOpen, faFolderPlus, faFolderTimes, faFolderTree, faFolderUpload, faFolders, faFont, faFontAwesomeLogoFull, faFontCase, faFootballBall, faFootballHelmet, faForklift, faForward, faFragile, faFrenchFries, faFrog, faFrostyHead, faFrown, faFrownOpen, faFunction, faFunnelDollar, faFutbol, faGalaxy, faGameBoard, faGameBoardAlt, faGameConsoleHandheld, faGamepad, faGamepadAlt, faGarage, faGarageCar, faGarageOpen, faGasPump, faGasPumpSlash, faGavel, faGem, faGenderless, faGhost, faGift, faGiftCard, faGifts, faGingerbreadMan, faGlass, faGlassChampagne, faGlassCheers, faGlassCitrus, faGlassMartini, faGlassMartiniAlt, faGlassWhiskey, faGlassWhiskeyRocks, faGlasses, faGlassesAlt, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGlobeSnow, faGlobeStand, faGolfBall, faGolfClub, faGopuram, faGraduationCap, faGramophone, faGreaterThan, faGreaterThanEqual, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faGripHorizontal, faGripLines, faGripLinesVertical, faGripVertical, faGuitar, faGuitarElectric, faGuitars, faHSquare, faH1, faH2, faH3, faH4, faHamburger, faHammer, faHammerWar, faHamsa, faHandHeart, faHandHolding, faHandHoldingBox, faHandHoldingHeart, faHandHoldingMagic, faHandHoldingMedical, faHandHoldingSeedling, faHandHoldingUsd, faHandHoldingWater, faHandLizard, faHandMiddleFinger, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandReceiving, faHandRock, faHandScissors, faHandSparkles, faHandSpock, faHands, faHandsHeart, faHandsHelping, faHandsUsd, faHandsWash, faHandshake, faHandshakeAlt, faHandshakeAltSlash, faHandshakeSlash, faHanukiah, faHardHat, faHashtag, faHatChef, faHatCowboy, faHatCowboySide, faHatSanta, faHatWinter, faHatWitch, faHatWizard, faHdd, faHeadSide, faHeadSideBrain, faHeadSideCough, faHeadSideCoughSlash, faHeadSideHeadphones, faHeadSideMask, faHeadSideMedical, faHeadSideVirus, faHeadVr, faHeading, faHeadphones, faHeadphonesAlt, faHeadset, faHeart, faHeartBroken, faHeartCircle, faHeartRate, faHeartSquare, faHeartbeat, faHeat, faHelicopter, faHelmetBattle, faHexagon, faHighlighter, faHiking, faHippo, faHistory, faHockeyMask, faHockeyPuck, faHockeySticks, faHollyBerry, faHome, faHomeAlt, faHomeHeart, faHomeLg, faHomeLgAlt, faHoodCloak, faHorizontalRule, faHorse, faHorseHead, faHorseSaddle, faHospital, faHospitalAlt, faHospitalSymbol, faHospitalUser, faHospitals, faHotTub, faHotdog, faHotel, faHourglass, faHourglassEnd, faHourglassHalf, faHourglassStart, faHouse, faHouseDamage, faHouseDay, faHouseFlood, faHouseLeave, faHouseNight, faHouseReturn, faHouseSignal, faHouseUser, faHryvnia, faHumidity, faHurricane, faICursor, faIceCream, faIceSkate, faIcicles, faIcons, faIconsAlt, faIdBadge, faIdCard, faIdCardAlt, faIgloo, faImage, faImagePolaroid, faImages, faInbox, faInboxIn, faInboxOut, faIndent, faIndustry, faIndustryAlt, faInfinity, faInfo, faInfoCircle, faInfoSquare, faInhaler, faIntegral, faIntersection, faInventory, faIslandTropical, faItalic, faJackOLantern, faJedi, faJoint, faJournalWhills, faJoystick, faJug, faKaaba, faKazoo, faKerning, faKey, faKeySkeleton, faKeyboard, faKeynote, faKhanda, faKidneys, faKiss, faKissBeam, faKissWinkHeart, faKite, faKiwiBird, faKnifeKitchen, faLambda, faLamp, faLampDesk, faLampFloor, faLandmark, faLandmarkAlt, faLanguage, faLaptop, faLaptopCode, faLaptopHouse, faLaptopMedical, faLasso, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLayerGroup, faLayerMinus, faLayerPlus, faLeaf, faLeafHeart, faLeafMaple, faLeafOak, faLemon, faLessThan, faLessThanEqual, faLevelDown, faLevelDownAlt, faLevelUp, faLevelUpAlt, faLifeRing, faLightCeiling, faLightSwitch, faLightSwitchOff, faLightSwitchOn, faLightbulb, faLightbulbDollar, faLightbulbExclamation, faLightbulbOn, faLightbulbSlash, faLightsHoliday, faLineColumns, faLineHeight, faLink, faLips, faLiraSign, faList, faListAlt, faListMusic, faListOl, faListUl, faLocation, faLocationArrow, faLocationCircle, faLocationSlash, faLock, faLockAlt, faLockOpen, faLockOpenAlt, faLongArrowAltDown, faLongArrowAltLeft, faLongArrowAltRight, faLongArrowAltUp, faLongArrowDown, faLongArrowLeft, faLongArrowRight, faLongArrowUp, faLoveseat, faLowVision, faLuchador, faLuggageCart, faLungs, faLungsVirus, faMace, faMagic, faMagnet, faMailBulk, faMailbox, faMale, faMandolin, faMap, faMapMarked, faMapMarkedAlt, faMapMarker, faMapMarkerAlt, faMapMarkerAltSlash, faMapMarkerCheck, faMapMarkerEdit, faMapMarkerExclamation, faMapMarkerMinus, faMapMarkerPlus, faMapMarkerQuestion, faMapMarkerSlash, faMapMarkerSmile, faMapMarkerTimes, faMapPin, faMapSigns, faMarker, faMars, faMarsDouble, faMarsStroke, faMarsStrokeH, faMarsStrokeV, faMask, faMeat, faMedal, faMedkit, faMegaphone, faMeh, faMehBlank, faMehRollingEyes, faMemory, faMenorah, faMercury, faMeteor, faMicrochip, faMicrophone, faMicrophoneAlt, faMicrophoneAltSlash, faMicrophoneSlash, faMicrophoneStand, faMicroscope, faMicrowave, faMindShare, faMinus, faMinusCircle, faMinusHexagon, faMinusOctagon, faMinusSquare, faMistletoe, faMitten, faMobile, faMobileAlt, faMobileAndroid, faMobileAndroidAlt, faMoneyBill, faMoneyBillAlt, faMoneyBillWave, faMoneyBillWaveAlt, faMoneyCheck, faMoneyCheckAlt, faMoneyCheckEdit, faMoneyCheckEditAlt, faMonitorHeartRate, faMonkey, faMonument, faMoon, faMoonCloud, faMoonStars, faMortarPestle, faMosque, faMotorcycle, faMountain, faMountains, faMouse, faMouseAlt, faMousePointer, faMp3Player, faMug, faMugHot, faMugMarshmallows, faMugTea, faMusic, faMusicAlt, faMusicAltSlash, faMusicSlash, faNarwhal, faNetworkWired, faNeuter, faNewspaper, faNotEqual, faNotesMedical, faObjectGroup, faObjectUngroup, faOctagon, faOilCan, faOilTemp, faOm, faOmega, faOrnament, faOtter, faOutdent, faOutlet, faOven, faOverline, faPageBreak, faPager, faPaintBrush, faPaintBrushAlt, faPaintRoller, faPalette, faPallet, faPalletAlt, faPaperPlane, faPaperclip, faParachuteBox, faParagraph, faParagraphRtl, faParking, faParkingCircle, faParkingCircleSlash, faParkingSlash, faPassport, faPastafarianism, faPaste, faPause, faPauseCircle, faPaw, faPawAlt, faPawClaws, faPeace, faPegasus, faPen, faPenAlt, faPenFancy, faPenNib, faPenSquare, faPencil, faPencilAlt, faPencilPaintbrush, faPencilRuler, faPennant, faPeopleArrows, faPeopleCarry, faPepperHot, faPercent, faPercentage, faPersonBooth, faPersonCarry, faPersonDolly, faPersonDollyEmpty, faPersonSign, faPhone, faPhoneAlt, faPhoneLaptop, faPhoneOffice, faPhonePlus, faPhoneRotary, faPhoneSlash, faPhoneSquare, faPhoneSquareAlt, faPhoneVolume, faPhotoVideo, faPi, faPiano, faPianoKeyboard, faPie, faPig, faPiggyBank, faPills, faPizza, faPizzaSlice, faPlaceOfWorship, faPlane, faPlaneAlt, faPlaneArrival, faPlaneDeparture, faPlaneSlash, faPlanetMoon, faPlanetRinged, faPlay, faPlayCircle, faPlug, faPlus, faPlusCircle, faPlusHexagon, faPlusOctagon, faPlusSquare, faPodcast, faPodium, faPodiumStar, faPoliceBox, faPoll, faPollH, faPollPeople, faPoo, faPooStorm, faPoop, faPopcorn, faPortalEnter, faPortalExit, faPortrait, faPoundSign, faPowerOff, faPray, faPrayingHands, faPrescription, faPrescriptionBottle, faPrescriptionBottleAlt, faPresentation, faPrint, faPrintSearch, faPrintSlash, faProcedures, faProjectDiagram, faProjector, faPumpMedical, faPumpSoap, faPumpkin, faPuzzlePiece, faQrcode, faQuestion, faQuestionCircle, faQuestionSquare, faQuidditch, faQuoteLeft, faQuoteRight, faQuran, faRabbit, faRabbitFast, faRacquet, faRadar, faRadiation, faRadiationAlt, faRadio, faRadioAlt, faRainbow, faRaindrops, faRam, faRampLoading, faRandom, faRaygun, faReceipt, faRecordVinyl, faRectangleLandscape, faRectanglePortrait, faRectangleWide, faRecycle, faRedo, faRedoAlt, faRefrigerator, faRegistered, faRemoveFormat, faRepeat, faRepeat1, faRepeat1Alt, faRepeatAlt, faReply, faReplyAll, faRepublican, faRestroom, faRetweet, faRetweetAlt, faRibbon, faRing, faRingsWedding, faRoad, faRobot, faRocket, faRocketLaunch, faRoute, faRouteHighway, faRouteInterstate, faRouter, faRss, faRssSquare, faRubleSign, faRuler, faRulerCombined, faRulerHorizontal, faRulerTriangle, faRulerVertical, faRunning, faRupeeSign, faRv, faSack, faSackDollar, faSadCry, faSadTear, faSalad, faSandwich, faSatellite, faSatelliteDish, faSausage, faSave, faSaxHot, faSaxophone, faScalpel, faScalpelPath, faScanner, faScannerImage, faScannerKeyboard, faScannerTouchscreen, faScarecrow, faScarf, faSchool, faScrewdriver, faScroll, faScrollOld, faScrubber, faScythe, faSdCard, faSearch, faSearchDollar, faSearchLocation, faSearchMinus, faSearchPlus, faSeedling, faSendBack, faSendBackward, faSensor, faSensorAlert, faSensorFire, faSensorOn, faSensorSmoke, faServer, faShapes, faShare, faShareAll, faShareAlt, faShareAltSquare, faShareSquare, faSheep, faShekelSign, faShield, faShieldAlt, faShieldCheck, faShieldCross, faShieldVirus, faShip, faShippingFast, faShippingTimed, faShishKebab, faShoePrints, faShoppingBag, faShoppingBasket, faShoppingCart, faShovel, faShovelSnow, faShower, faShredder, faShuttleVan, faShuttlecock, faSickle, faSigma, faSign, faSignIn, faSignInAlt, faSignLanguage, faSignOut, faSignOutAlt, faSignal, faSignal1, faSignal2, faSignal3, faSignal4, faSignalAlt, faSignalAlt1, faSignalAlt2, faSignalAlt3, faSignalAltSlash, faSignalSlash, faSignalStream, faSignature, faSimCard, faSink, faSiren, faSirenOn, faSitemap, faSkating, faSkeleton, faSkiJump, faSkiLift, faSkiing, faSkiingNordic, faSkull, faSkullCow, faSkullCrossbones, faSlash, faSledding, faSleigh, faSlidersH, faSlidersHSquare, faSlidersV, faSlidersVSquare, faSmile, faSmileBeam, faSmilePlus, faSmileWink, faSmog, faSmoke, faSmoking, faSmokingBan, faSms, faSnake, faSnooze, faSnowBlowing, faSnowboarding, faSnowflake, faSnowflakes, faSnowman, faSnowmobile, faSnowplow, faSoap, faSocks, faSolarPanel, faSolarSystem, faSort, faSortAlphaDown, faSortAlphaDownAlt, faSortAlphaUp, faSortAlphaUpAlt, faSortAlt, faSortAmountDown, faSortAmountDownAlt, faSortAmountUp, faSortAmountUpAlt, faSortCircle, faSortCircleDown, faSortCircleUp, faSortDown, faSortNumericDown, faSortNumericDownAlt, faSortNumericUp, faSortNumericUpAlt, faSortShapesDown, faSortShapesDownAlt, faSortShapesUp, faSortShapesUpAlt, faSortSizeDown, faSortSizeDownAlt, faSortSizeUp, faSortSizeUpAlt, faSortUp, faSoup, faSpa, faSpaceShuttle, faSpaceStationMoon, faSpaceStationMoonAlt, faSpade, faSparkles, faSpeaker, faSpeakers, faSpellCheck, faSpider, faSpiderBlackWidow, faSpiderWeb, faSpinner, faSpinnerThird, faSplotch, faSprayCan, faSprinkler, faSquare, faSquareFull, faSquareRoot, faSquareRootAlt, faSquirrel, faStaff, faStamp, faStar, faStarAndCrescent, faStarChristmas, faStarExclamation, faStarHalf, faStarHalfAlt, faStarOfDavid, faStarOfLife, faStarShooting, faStarfighter, faStarfighterAlt, faStars, faStarship, faStarshipFreighter, faSteak, faSteeringWheel, faStepBackward, faStepForward, faStethoscope, faStickyNote, faStocking, faStomach, faStop, faStopCircle, faStopwatch, faStopwatch20, faStore, faStoreAlt, faStoreAltSlash, faStoreSlash, faStream, faStreetView, faStretcher, faStrikethrough, faStroopwafel, faSubscript, faSubway, faSuitcase, faSuitcaseRolling, faSun, faSunCloud, faSunDust, faSunHaze, faSunglasses, faSunrise, faSunset, faSuperscript, faSurprise, faSwatchbook, faSwimmer, faSwimmingPool, faSword, faSwordLaser, faSwordLaserAlt, faSwords, faSwordsLaser, faSynagogue, faSync, faSyncAlt, faSyringe, faTable, faTableTennis, faTablet, faTabletAlt, faTabletAndroid, faTabletAndroidAlt, faTabletRugged, faTablets, faTachometer, faTachometerAlt, faTachometerAltAverage, faTachometerAltFast, faTachometerAltFastest, faTachometerAltSlow, faTachometerAltSlowest, faTachometerAverage, faTachometerFast, faTachometerFastest, faTachometerSlow, faTachometerSlowest, faTaco, faTag, faTags, faTally, faTanakh, faTape, faTasks, faTasksAlt, faTaxi, faTeeth, faTeethOpen, faTelescope, faTemperatureDown, faTemperatureFrigid, faTemperatureHigh, faTemperatureHot, faTemperatureLow, faTemperatureUp, faTenge, faTennisBall, faTerminal, faText, faTextHeight, faTextSize, faTextWidth, faTh, faThLarge, faThList, faTheaterMasks, faThermometer, faThermometerEmpty, faThermometerFull, faThermometerHalf, faThermometerQuarter, faThermometerThreeQuarters, faTheta, faThumbsDown, faThumbsUp, faThumbtack, faThunderstorm, faThunderstormMoon, faThunderstormSun, faTicket, faTicketAlt, faTilde, faTimes, faTimesCircle, faTimesHexagon, faTimesOctagon, faTimesSquare, faTint, faTintSlash, faTire, faTireFlat, faTirePressureWarning, faTireRugged, faTired, faToggleOff, faToggleOn, faToilet, faToiletPaper, faToiletPaperAlt, faToiletPaperSlash, faTombstone, faTombstoneAlt, faToolbox, faTools, faTooth, faToothbrush, faTorah, faToriiGate, faTornado, faTractor, faTrademark, faTrafficCone, faTrafficLight, faTrafficLightGo, faTrafficLightSlow, faTrafficLightStop, faTrailer, faTrain, faTram, faTransgender, faTransgenderAlt, faTransporter, faTransporter1, faTransporter2, faTransporter3, faTransporterEmpty, faTrash, faTrashAlt, faTrashRestore, faTrashRestoreAlt, faTrashUndo, faTrashUndoAlt, faTreasureChest, faTree, faTreeAlt, faTreeChristmas, faTreeDecorated, faTreeLarge, faTreePalm, faTrees, faTriangle, faTriangleMusic, faTrophy, faTrophyAlt, faTruck, faTruckContainer, faTruckCouch, faTruckLoading, faTruckMonster, faTruckMoving, faTruckPickup, faTruckPlow, faTruckRamp, faTrumpet, faTshirt, faTty, faTurkey, faTurntable, faTurtle, faTv, faTvAlt, faTvMusic, faTvRetro, faTypewriter, faUfo, faUfoBeam, faUmbrella, faUmbrellaBeach, faUnderline, faUndo, faUndoAlt, faUnicorn, faUnion, faUniversalAccess, faUniversity, faUnlink, faUnlock, faUnlockAlt, faUpload, faUsbDrive, faUsdCircle, faUsdSquare, faUser, faUserAlien, faUserAlt, faUserAltSlash, faUserAstronaut, faUserChart, faUserCheck, faUserCircle, faUserClock, faUserCog, faUserCowboy, faUserCrown, faUserEdit, faUserFriends, faUserGraduate, faUserHardHat, faUserHeadset, faUserInjured, faUserLock, faUserMd, faUserMdChat, faUserMinus, faUserMusic, faUserNinja, faUserNurse, faUserPlus, faUserRobot, faUserSecret, faUserShield, faUserSlash, faUserTag, faUserTie, faUserTimes, faUserUnlock, faUserVisor, faUsers, faUsersClass, faUsersCog, faUsersCrown, faUsersMedical, faUsersSlash, faUtensilFork, faUtensilKnife, faUtensilSpoon, faUtensils, faUtensilsAlt, faVacuum, faVacuumRobot, faValueAbsolute, faVectorSquare, faVenus, faVenusDouble, faVenusMars, faVest, faVestPatches, faVhs, faVial, faVials, faVideo, faVideoPlus, faVideoSlash, faVihara, faViolin, faVirus, faVirusSlash, faViruses, faVoicemail, faVolcano, faVolleyballBall, faVolume, faVolumeDown, faVolumeMute, faVolumeOff, faVolumeSlash, faVolumeUp, faVoteNay, faVoteYea, faVrCardboard, faWagonCovered, faWalker, faWalkieTalkie, faWalking, faWallet, faWand, faWandMagic, faWarehouse, faWarehouseAlt, faWasher, faWatch, faWatchCalculator, faWatchFitness, faWater, faWaterLower, faWaterRise, faWaveSine, faWaveSquare, faWaveTriangle, faWaveform, faWaveformPath, faWebcam, faWebcamSlash, faWeight, faWeightHanging, faWhale, faWheat, faWheelchair, faWhistle, faWifi, faWifi1, faWifi2, faWifiSlash, faWind, faWindTurbine, faWindWarning, faWindow, faWindowAlt, faWindowClose, faWindowFrame, faWindowFrameOpen, faWindowMaximize, faWindowMinimize, faWindowRestore, faWindsock, faWineBottle, faWineGlass, faWineGlassAlt, faWonSign, faWreath, faWrench, faXRay, faYenSign, faYinYang };\n","import { action, makeObservable, observable } from 'mobx';\n\nexport default class AuthenticationStore {\n // Authentication\n selectedDatabase = null;\n bearerToken = null;\n refreshBearerToken = null;\n\n constructor() {\n makeObservable(this, {\n selectedDatabase: observable,\n bearerToken: observable,\n refreshBearerToken: observable,\n setSelectedDatabase: action,\n setBearerToken: action,\n setRefreshBearerToken: action\n })\n }\n\n setSelectedDatabase(selectedDatabase) {\n this.selectedDatabase = selectedDatabase;\n }\n\n setBearerToken(bearerToken) {\n this.bearerToken = bearerToken;\n }\n\n setRefreshBearerToken(refreshBearerToken) {\n this.refreshBearerToken = refreshBearerToken;\n }\n}","import {\n action,\n computed,\n makeObservable,\n observable,\n runInAction\n} from 'mobx';\nimport URI from 'urijs';\n\nexport default class TraplogStore {\n // Authentication\n selectedDatabase = null;\n bearerToken = null;\n refreshBearerToken = null;\n\n setSelectedDatabase(selectedDatabase) {\n this.selectedDatabase = selectedDatabase;\n }\n\n setBearerToken(bearerToken) {\n this.bearerToken = bearerToken;\n }\n\n setRefreshBearerToken(refreshBearerToken) {\n this.refreshBearerToken = refreshBearerToken;\n }\n\n // Should only be loaded in the constructor\n loadingInsectGroups = false;\n insectGroups = [];\n\n loadingTrapLures = false;\n trapLures = [];\n\n loadingMatingDisruptionTies = false;\n matingDisruptionTies = [];\n\n loadingSprayProducts = false;\n sprayProducts = [];\n\n // Reloaded everytime the property is changed\n loadingTrappingZones = false;\n trappingZones = [];\n loadingTrappingResults = false;\n trappingResults = {};\n\n // User selections\n selectedInsectGroupId = null;\n selectedTrappingZoneId = null;\n\n constructor() {\n makeObservable(this, {\n loadingInsectGroups: observable,\n insectGroups: observable,\n loadingTrapLures: observable,\n trapLures: observable,\n loadingMatingDisruptionTies: observable,\n matingDisruptionTies: observable,\n loadingSprayProducts: observable,\n sprayProducts: observable,\n loadingTrappingZones: observable,\n trappingZones: observable,\n loadingTrappingResults: observable,\n trappingResults: observable,\n selectedInsectGroupId: observable,\n selectedTrappingZoneId: observable,\n\n loadInsectGroups: action,\n loadTrapLures: action,\n loadMatingDisruptionTies: action,\n loadSprayProducts: action,\n loadTrappingZones: action,\n loadTrappingResults: action,\n addTrap: action,\n setSelectedInsectGroupId: action,\n setSelectedTrappingZoneId: action,\n\n selectedInsectGroup: computed,\n selectedTrappingZone: computed,\n selectedTrappingZoneResults: computed,\n traps: computed\n });\n }\n\n /**\n * Fetches all insect groups from the traplog API.\n *\n * @param {string} bearerToken\n * @param {function} refreshBearerToken\n */\n loadInsectGroups(bearerToken, refreshBearerToken) {\n this.loadingInsectGroups = true;\n fetch(`${process.env.REACT_APP_TRAPLOG_API_URL}api/insect-groups`, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + bearerToken\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n this.insectGroups = data;\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n this.insectGroups = [];\n })\n .finally(() => {\n this.loadingInsectGroups = false;\n });\n }\n\n /**\n * Fetches all trap lures from the traplog API.\n *\n * @param {string} bearerToken\n * @param {function} refreshBearerToken\n */\n loadTrapLures(bearerToken, refreshBearerToken) {\n this.loadingTrapLures = true;\n fetch(`${process.env.REACT_APP_TRAPLOG_API_URL}api/trap-lures`, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + bearerToken\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n this.trapLures.replace(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n this.trapLures.clear();\n })\n .finally(() => {\n this.loadingTrapLures = false;\n });\n }\n\n /**\n * Fetches all mating disruption ties from the traplog API.\n *\n * @param {string} bearerToken\n * @param {function} refreshBearerToken\n */\n loadMatingDisruptionTies(bearerToken, refreshBearerToken) {\n this.loadingMatingDisruptionTies = true;\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/mating-disruption-ties`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + bearerToken\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n this.matingDisruptionTies.replace(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n this.matingDisruptionTies.clear();\n })\n .finally(() => {\n this.loadingMatingDisruptionTies = false;\n });\n }\n\n /**\n * Fetches all spray products from the traplog API.\n */\n loadSprayProducts() {\n this.loadingSprayProducts = true;\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/spray-products?with[]=product`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${this.bearerToken}`\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) this.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n this.sprayProducts.replace(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n this.sprayProducts.clear();\n })\n .finally(() => {\n this.loadingSprayProducts = false;\n });\n }\n\n /**\n * Fetches all trapping zones for the supplied property from the traplog API.\n *\n * If the current selected trapping zone is invalid it will clear this.\n *\n * @param {string} bearerToken\n * @param {function} refreshBearerToken\n * @param {string} selectedDatabase\n * @param {int} propertyId\n */\n loadTrappingZones(\n bearerToken,\n refreshBearerToken,\n selectedDatabase,\n propertyId\n ) {\n this.loadingTrappingZones = true;\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/properties/${propertyId}/trapping-zones?with[]=traps.trapLure.insects&with[]=matingDisruptionTie.insects`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + bearerToken,\n SeasonalDatabase: selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n // Replace the trapping zones data\n this.trappingZones.replace(data);\n\n // If there are any trapping zones and an invalid option is\n // already selected then select the first in the list.\n if (data.length > 0) {\n if (\n this.selectedTrappingZoneId !== null &&\n !data.some(\n (trappingZone) =>\n trappingZone.id === this.selectedTrappingZoneId\n )\n )\n this.selectedTrappingZoneId = data[0].id;\n }\n\n // If there are no trapping zones then clear the\n // selected trapping zone.\n else this.selectedTrappingZoneId = null;\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n this.trappingZones.clear();\n this.selectedTrappingZoneId = null;\n })\n .finally(() => {\n this.trappingZones = this.trappingZones.map((tz) => ({\n ...tz,\n high_pressure: false\n }));\n this.loadTrappingResults(\n bearerToken,\n refreshBearerToken,\n selectedDatabase\n );\n this.loadingTrappingZones = false;\n });\n }\n\n /**\n * Fetches trapping results for all loaded trapping zones from the traplog API.\n *\n * @param {string} bearerToken\n * @param {function} refreshBearerToken\n * @param {string} selectedDatabase\n */\n loadTrappingResults(bearerToken, refreshBearerToken, selectedDatabase) {\n if (\n !this.trappingZones ||\n this.trappingZones.length < 1 ||\n this.selectedInsectGroupId === null\n ) {\n this.trappingResults = observable({});\n return;\n }\n\n this.loadingTrappingResults = true;\n\n const uri = new URI(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-results`\n );\n uri.addQuery('insect_group_id', this.selectedInsectGroupId);\n uri.addQuery(\n 'trapping_zones[]',\n this.trappingZones.map((trappingZone) => trappingZone.id)\n );\n\n fetch(uri.toString(), {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${bearerToken}`,\n SeasonalDatabase: selectedDatabase\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n this.trappingResults = observable(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n this.trappingResults = observable({});\n })\n .finally(() => {\n this.loadingTrappingResults = false;\n });\n }\n\n selectedDatabaseYear() {\n const split = this.selectedDatabase.split('_');\n return Number(split[split.length - 1]);\n }\n\n /**\n * Adds a new trap into the trapping zones list.\n *\n * @param {object} trap\n * @returns {boolean} Returns true if the trap was added. False otherwise.\n */\n addTrap(trap) {\n const trappingZoneIndex = this.trappingZones.findIndex(\n (trappingZone) => trappingZone.id === trap.trapping_zone_id\n );\n // Return if couldn't find the given trap's associated trapping zone.\n if (trappingZoneIndex === -1) return false;\n const newTrappingZones = this.trappingZones.map((tz, i) => {\n if (i !== trappingZoneIndex) return tz;\n // Append the given trap to the trap's associated trapping zone.\n return { ...tz, traps: [...tz.traps, trap] };\n });\n this.trappingZones = newTrappingZones;\n return true;\n }\n\n updateTrappingZones(selectedPropertyId) {\n fetch(`${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-zones/all`, {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: 'Bearer ' + this.bearerToken,\n SeasonalDatabase: this.selectedDatabase\n },\n body: JSON.stringify({ zones: this.trappingZones })\n })\n .then((res) => {\n if (res.ok) {\n this.loadTrappingZones(\n this.bearerToken,\n this.refreshBearerToken,\n this.selectedDatabase,\n selectedPropertyId\n );\n } else if (res.status === 401) refreshBearerToken();\n else throw Error(res.statusText);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n });\n }\n\n updateTrappingZone(\n trappingZone,\n selectedDatabase,\n bearerToken,\n refreshBearerToken\n ) {\n const id = trappingZone.id;\n return fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-zones/${id}`,\n {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: 'Bearer ' + bearerToken,\n SeasonalDatabase: selectedDatabase\n },\n body: JSON.stringify(trappingZone)\n }\n );\n }\n\n /**\n * Sets the selected insect group and then triggers the loadTrappingResults function to load the trapping results for this new insect group.\n *\n * @param {int} insectGroupId\n */\n setSelectedInsectGroupId(\n bearerToken,\n refreshBearerToken,\n selectedDatabase,\n insectGroupId\n ) {\n this.selectedInsectGroupId = insectGroupId;\n this.loadTrappingResults(bearerToken, refreshBearerToken, selectedDatabase);\n }\n\n /**\n *\n * @param {number} trappingZoneId\n * @param {boolean} highPressure\n * @returns void\n */\n updateTrappingZoneHighPressure(trappingZoneId, highPressure) {\n const trappingZoneIndex = this.trappingZones.findIndex(\n (tz) => tz.id === trappingZoneId\n );\n if (trappingZoneIndex === -1) return;\n const newTrappingZones = this.trappingZones;\n const trappingZone = this.trappingZones[trappingZoneIndex];\n trappingZone.high_pressure = highPressure;\n newTrappingZones[trappingZoneIndex] = trappingZone;\n runInAction(() => {\n this.trappingZones = JSON.parse(JSON.stringify(newTrappingZones));\n });\n }\n\n /**\n * Resets all trapping zones high pressure to false.\n * Set the 'high_pressure' property to false for all trapping zones.\n */\n resetAllTrappingZoneHighPressure() {\n const resetTrappingZones = this.trappingZones.map((tz) => ({\n ...tz,\n high_pressure: false\n }));\n runInAction(() => {\n this.trappingZones = JSON.parse(JSON.stringify(resetTrappingZones));\n });\n }\n\n /**\n * Sets the selected trapping zone.\n *\n * @param {int} trappingZoneId\n */\n setSelectedTrappingZoneId(trappingZoneId) {\n this.selectedTrappingZoneId = trappingZoneId;\n }\n\n resetTrapping() {\n this.loadingTrappingZones = false;\n this.trappingZones = [];\n this.loadingTrappingResults = false;\n this.trappingResults = {};\n this.selectedInsectGroupId = null;\n this.selectedTrappingZoneId = null;\n }\n\n isTrappingZoneHighRisk(trappingZone) {\n return trappingZone.cmsm && trappingZone.high_risk;\n }\n\n isTrappingZoneHighPressure(trappingZone) {\n return trappingZone.cmsm && trappingZone.high_pressure;\n }\n\n /**\n * Find the selected insect group model.\n *\n * @returns {object}\n */\n get selectedInsectGroup() {\n return this.insectGroups.find(\n (insectGroup) => insectGroup.id === this.selectedInsectGroupId\n );\n }\n\n /**\n * Find the selected trapping zone model.\n *\n * @returns {object}\n */\n get selectedTrappingZone() {\n return this.trappingZones.find(\n (trappingZone) => trappingZone.id === this.selectedTrappingZoneId\n );\n }\n\n /**\n * Find the trapping results for the selected trapping zone.\n *\n * @returns {object}\n */\n get selectedTrappingZoneResults() {\n return this.trappingResults[this.selectedTrappingZoneId];\n }\n\n /**\n * If a trapping zone is selected then find all traps that belong to the selected\n * trapping zone, otherwise find all traps.\n *\n * Also all traps must have a lure which attracts the selected insect group.\n *\n * @returns {array}\n */\n get traps() {\n if (this.trappingZones && this.selectedInsectGroupId !== null) {\n if (this.selectedTrappingZoneId === null) {\n return this.trappingZones\n .map((trappingZone) =>\n trappingZone.traps.filter((trap) =>\n trap.trap_lure.insects.some(\n (insect) =>\n insect.insect_group.id === this.selectedInsectGroupId\n )\n )\n )\n .flat();\n } else {\n const trappingZone = this.trappingZones.find(\n (trappingZone) => trappingZone.id === this.selectedTrappingZoneId\n );\n\n return trappingZone\n ? trappingZone.traps.filter((trap) =>\n trap.trap_lure.insects.some(\n (insect) =>\n insect.insect_group.id === this.selectedInsectGroupId\n )\n )\n : null;\n }\n } else {\n return null;\n }\n }\n\n /**\n * Returns the trappingZones sorted by name.\n *\n * @returns {array}\n */\n get sortedTrappingZones() {\n return this.trappingZones.slice().sort((a, b) => {\n if (a.name < b.name) return -1;\n if (a.name > b.name) return 1;\n return 0;\n });\n }\n}\n","import React from 'react';\nimport AuthenticationStore from './AuthenticationStore';\nimport TraplogStore from './TraplogStore';\n\nexport const storesContext = React.createContext({\n authenticationStore: new AuthenticationStore(),\n traplogStore: new TraplogStore()\n});\n","import React from 'react';\nimport { storesContext } from './storesContext';\n\nexport const useStores = () => React.useContext(storesContext);\n","import { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Select from 'react-select';\nimport { useStores } from './stores/useStores';\n\nfunction InsectGroupSelect(props) {\n const { traplogStore } = useStores();\n\n // Filter out all insects except those specified in\n // \"props.customInsects\", if it exists.\n const customInsects = props.customInsects;\n const insectGroups = customInsects\n ? traplogStore.insectGroups.filter((value) =>\n customInsects.includes(value.short_name)\n )\n : traplogStore.insectGroups;\n const options = insectGroups.map((insectGroup) => {\n return {\n value: insectGroup.id,\n label: insectGroup.name\n };\n });\n // Select \"Codling Moth\" if custom insect groups are given\n // and it specifies the Codling Moth group.\n if (\n insectGroups.length > 0 &&\n customInsects &&\n customInsects.includes('CM') &&\n traplogStore.selectedInsectGroupId === null\n ) {\n traplogStore.setSelectedInsectGroupId(\n props.bearerToken,\n props.refreshBearerToken,\n props.selectedDatabase,\n insectGroups.find((ig) => ig.short_name === 'CM').id\n );\n }\n\n return (\n <Select\n placeholder='Select an insect'\n isLoading={traplogStore.loadingInsectGroups}\n options={options}\n value={\n traplogStore.selectedInsectGroup\n ? {\n value: traplogStore.selectedInsectGroup.id,\n label: traplogStore.selectedInsectGroup.name\n }\n : null\n }\n onChange={(option) => {\n if (traplogStore.selectedInsectGroupId === option.value) return;\n traplogStore.resetAllTrappingZoneHighPressure();\n traplogStore.setSelectedInsectGroupId(\n props.bearerToken,\n props.refreshBearerToken,\n props.selectedDatabase,\n option.value\n );\n }}\n />\n );\n}\n\nInsectGroupSelect.propTypes = {\n selectedDatabase: PropTypes.string,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n customInsects: PropTypes.array\n};\n\nexport default observer(InsectGroupSelect);\n","import React, { useEffect, useState } from 'react';\nimport { Fragment } from 'react';\nimport { Badge } from 'react-bootstrap';\n\nconst TraplogLegend = ({ propertyStatuses, ...otherProps }) => {\n const [success, setSuccess] = useState();\n const [warning, setWarning] = useState();\n const [danger, setDanger] = useState();\n const [secondary, setSecondary] = useState();\n\n useEffect(() => {\n if (propertyStatuses) {\n var successCount = 0;\n var warningCount = 0;\n var dangerCount = 0;\n var secondaryCount = 0;\n\n propertyStatuses.forEach((propertyStatus) => {\n switch (propertyStatus.bgColor) {\n case 'success':\n successCount += 1;\n break;\n case 'warning':\n warningCount += 1;\n break;\n case 'danger':\n dangerCount += 1;\n break;\n case 'secondary':\n secondaryCount += 1;\n break;\n }\n });\n\n setSuccess(successCount);\n setWarning(warningCount);\n setDanger(dangerCount);\n setSecondary(secondaryCount);\n }\n }, [propertyStatuses]);\n\n return (\n <div {...otherProps}>\n <Badge pill variant='success' className='mx-1'>\n No Action Required / Sprayed {success ? <>({success})</> : ''}\n </Badge>\n <Badge pill variant='warning' className='mx-1'>\n Near Threshold {warning ? <>({warning})</> : ''}\n </Badge>\n <Badge pill variant='danger' className='mx-1'>\n Threshold Met {danger ? <>({danger})</> : ''}\n </Badge>\n <Badge pill variant='secondary' className='mx-1'>\n No Data {secondary ? <>({secondary})</> : ''}\n </Badge>\n </div>\n );\n};\n\nexport default TraplogLegend;\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import { observer } from 'mobx-react';\nimport React, { Fragment, useState } from 'react';\nimport { Button, Modal, Spinner } from 'react-bootstrap';\n\nconst ConfirmationModal = ({\n title,\n titleProps,\n headerProps,\n bodyText,\n showButton,\n showAction,\n showModal = true,\n confirmButton,\n confirmAction\n}) => {\n const [loading, setLoading] = useState(false);\n const [show, setShow] = useState(false);\n\n const hide = () => {\n setShow(false);\n };\n\n return (\n <Fragment>\n <Button\n {...showButton.props}\n onClick={() => {\n if (showAction) showAction();\n if (showModal) setShow(true);\n }}\n >\n {showButton.children}\n </Button>\n <Modal backdrop='static' show={show} onHide={() => hide()}>\n <Modal.Header {...headerProps} closeButton>\n <Modal.Title {...titleProps}>{title}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <p>{bodyText}</p>\n <Button\n {...confirmButton.props}\n onClick={async () => {\n setLoading(true);\n try {\n await confirmAction();\n } catch (err) {\n if (process.env.NODE_ENV === 'development') console.error(err);\n } finally {\n setLoading(false);\n hide();\n }\n }}\n >\n {loading ? (\n <Spinner className='mx-3' animation='border' size='sm' />\n ) : (\n 'Confirm'\n )}\n </Button>\n <Button\n className='ml-1'\n variant='outline-secondary'\n disabled={loading}\n onClick={() => {\n hide();\n }}\n >\n Cancel\n </Button>\n </Modal.Body>\n </Modal>\n </Fragment>\n );\n};\n\nexport default observer(ConfirmationModal);\n","import React from 'react';\nimport { Slide, toast, ToastContainer as Toastify } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\n\nexport const infoToast = (text, id) => {\n toast(text, {\n type: toast.TYPE.INFO,\n theme: 'colored',\n className: 'text-center p-3 m-2 shadow-sm text-white',\n toastId: id\n });\n};\n\nexport const successToast = (text, id) => {\n toast(text, {\n type: toast.TYPE.SUCCESS,\n theme: 'colored',\n className: 'text-center p-3 m-2 shadow-sm text-white',\n toastId: id\n });\n};\n\nexport const warningToast = (text, id) => {\n toast(text, {\n type: toast.TYPE.WARNING,\n theme: 'colored',\n className: 'text-center p-3 m-2 shadow-sm text-white',\n toastId: id\n });\n};\n\nexport const errorToast = (text, id) => {\n toast(text, {\n type: toast.TYPE.ERROR,\n theme: 'colored',\n className: 'text-center p-3 m-2 shadow-sm text-white',\n toastId: id\n });\n};\n\n/**\n * Sets out the functionality, styling and limitations of the toasts.\n * By implementing this component in App.tsx it allows for a global toast system.\n *\n */\nexport const ToastContainer = () => (\n <Toastify\n position='top-right'\n limit={3}\n autoClose={5000}\n hideProgressBar={true}\n closeOnClick\n pauseOnFocusLoss={false}\n draggable={false}\n pauseOnHover={false}\n transition={Slide}\n closeButton={false}\n toastClassName={() => 'text-center bg-white text-dark p-3 m-2 shadow-sm '}\n />\n);\n\n// This could be used in another way to have a 'loading' toast,\n// once loaded the toast can get updated using the Ref so that it turns green\n// eg: loading -> Success!\n// const toastId = useRef<ReactText>('updatePageSettings');\n\n// const notify = () =>\n// (toastId.current = toast('Updating...', {\n// type: toast.TYPE.INFO,\n// autoClose: false\n// }));\n","import moment from 'moment';\n\nexport const calcAccumulationThreshold = (insectGroup, date) => {\n const dt = moment(date);\n return insectGroup.short_name === 'CM' && dt.month() < 6\n ? insectGroup.accumulation_threshold / 2\n : insectGroup.accumulation_threshold;\n};\n\nexport const trappingZoneResultsCounts = (\n selectedInsectGroup,\n trappingZoneResults,\n trappingZone\n) => {\n // Count the number of sprays\n const sprays = trappingZoneResults.results.reduce(\n (accumulator, currentValue) =>\n accumulator + currentValue.trapping_zone_sprays.length,\n 0\n );\n\n // Initialize counts\n let amountThresholdsMet = 0;\n let accumulationThresholdsMet = 0;\n let averageThresholdsMet = 0;\n let coveredThresholds = 0;\n let thresholdMetRecords = 0;\n let coveredThresholdRecords = 0;\n\n // Loop over each record\n trappingZoneResults.results.map((result) => {\n const dt = moment(result.date);\n const amounts = [];\n\n let thresholdMet = false;\n let coveredThreshold = false;\n\n // Loop over traps that trap this insect group\n trappingZone.traps\n .filter((trap) =>\n trap.trap_lure.insects.some(\n (insect) => insect.insect_group.id === selectedInsectGroup.id\n )\n )\n .forEach((trap) => {\n const trapResult = result.traps[trap.id];\n\n if (trapResult && result.trap_monitoring_records.length > 0) {\n if (\n trapResult.amount >= selectedInsectGroup.per_trap_catch_threshold\n ) {\n if (result.sprayed) {\n coveredThresholds++;\n coveredThreshold = true;\n } else {\n amountThresholdsMet++;\n thresholdMet = true;\n }\n }\n\n if (\n trapResult.accumulation >=\n calcAccumulationThreshold(selectedInsectGroup, dt)\n ) {\n if (result.sprayed) {\n coveredThresholds++;\n coveredThreshold = true;\n } else {\n accumulationThresholdsMet++;\n thresholdMet = true;\n }\n }\n }\n\n amounts.push(trapResult ? trapResult.amount : null);\n });\n\n // Check for an average threshold\n if (amounts.length > 0 && selectedInsectGroup.average_threshold !== null) {\n if (\n amounts.reduce(\n (accumulator, currentValue) => accumulator + currentValue\n ) /\n amounts.length >=\n selectedInsectGroup.average_threshold\n ) {\n if (result.sprayed) {\n coveredThresholds++;\n coveredThreshold = true;\n } else {\n averageThresholdsMet++;\n thresholdMet = true;\n }\n }\n }\n\n // Aggregated record counts\n if (coveredThreshold) coveredThresholdRecords++;\n else if (thresholdMet) thresholdMetRecords++;\n });\n\n return {\n sprays: sprays,\n amountThresholdsMet: amountThresholdsMet,\n accumulationThresholdsMet: accumulationThresholdsMet,\n averageThresholdsMet: averageThresholdsMet,\n coveredThresholds: coveredThresholds,\n coveredThresholdRecords: coveredThresholdRecords,\n thresholdMetRecords: thresholdMetRecords\n };\n};\n\nconst downloadFile = (data) => {\n const url = window.URL.createObjectURL(new Blob([data]));\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', 'Trap-Export.csv');\n document.body.appendChild(link);\n link.click();\n};\n\nexport const fetchTrapCSV = async (\n bearerToken,\n selectedDatabase,\n insectType,\n property,\n productionArea\n) => {\n const url = new URL(process.env.REACT_APP_TRAPLOG_API_URL + 'api/export');\n url.searchParams.append('insect_type', insectType);\n url.searchParams.append('property_ids[]', property);\n if (productionArea) {\n url.searchParams.append('production_area', productionArea);\n }\n\n const response = await fetch(url.href, {\n method: 'GET',\n headers: {\n 'Content-Type': 'text/csv',\n Accept: 'application/json',\n Authorization: 'Bearer ' + bearerToken,\n SeasonalDatabase: selectedDatabase\n }\n });\n // Request successful so download file.\n if (response.ok) {\n const data = await response.text();\n downloadFile(data);\n return true;\n } else {\n return false;\n }\n};\n","import { useEffect, useState } from 'react';\n\nexport const useCollapse = (key) => {\n const [open, setOpen] = useState(true);\n\n const handleCollapse = () => {\n if (!key) {\n setOpen(!open);\n return;\n }\n localStorage.setItem(key, !open);\n setOpen(localStorage.getItem(key) === 'true');\n };\n\n useEffect(() => {\n if (!key) return;\n if (localStorage.getItem(key))\n setOpen(localStorage.getItem(key) === 'true');\n }, []);\n\n return [open, handleCollapse];\n};\n","/* Mapbox GL JS is Copyright © 2020 Mapbox and subject to the Mapbox Terms of Service ((https://www.mapbox.com/legal/tos/). */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\ntypeof define === 'function' && define.amd ? define(factory) :\n(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.mapboxgl = factory());\n})(this, (function () { 'use strict';\n\n/* eslint-disable */\n\nvar shared, worker, mapboxgl;\n// define gets called three times: one for each chunk. we rely on the order\n// they're imported to know which is which\nfunction define(_, chunk) {\nif (!shared) {\n shared = chunk;\n} else if (!worker) {\n worker = chunk;\n} else {\n var workerBundleString = \"self.onerror = function() { console.error('An error occurred while parsing the WebWorker bundle. This is most likely due to improper transpilation by Babel; please see https://docs.mapbox.com/mapbox-gl-js/guides/install/#transpiling'); }; var sharedChunk = {}; (\" + shared + \")(sharedChunk); (\" + worker + \")(sharedChunk); self.onerror = null;\"\n\n var sharedChunk = {};\n shared(sharedChunk);\n mapboxgl = chunk(sharedChunk);\n if (typeof window !== 'undefined' && window && window.URL && window.URL.createObjectURL) {\n mapboxgl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' }));\n }\n}\n}\n\n\ndefine([\"exports\"],(function(t){\"use strict\";var e=\"undefined\"!=typeof self?self:{},r=n;function n(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n;}n.prototype.sampleCurveX=function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},n.prototype.sampleCurveY=function(t){return ((this.ay*t+this.by)*t+this.cy)*t},n.prototype.sampleCurveDerivativeX=function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},n.prototype.solveCurveX=function(t,e){var r,n,i,s,a;for(void 0===e&&(e=1e-6),i=t,a=0;a<8;a++){if(s=this.sampleCurveX(i)-t,Math.abs(s)<e)return i;var o=this.sampleCurveDerivativeX(i);if(Math.abs(o)<1e-6)break;i-=s/o;}if((i=t)<(r=0))return r;if(i>(n=1))return n;for(;r<n;){if(s=this.sampleCurveX(i),Math.abs(s-t)<e)return i;t>s?r=i:n=i,i=.5*(n-r)+r;}return i},n.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var i=s;function s(t,e){this.x=t,this.y=e;}s.prototype={clone:function(){return new s(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[2]*this.x+t[3]*this.y;return this.x=t[0]*this.x+t[1]*this.y,this.y=e,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=n,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-n*(this.y-e.y),this.y=i,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},s.convert=function(t){return t instanceof s?t:Array.isArray(t)?new s(t[0],t[1]):t};const a=Math.PI/180,o=180/Math.PI;function l(t){return t*a}function u(t){return t*o}const c=[[0,0],[1,0],[1,1],[0,1]];function h(t){if(t<=0)return 0;if(t>=1)return 1;const e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}function p(t,e,n,i){const s=new r(t,e,n,i);return function(t){return s.solve(t)}}const f=p(.25,.1,.25,1);function d(t,e,r){return Math.min(r,Math.max(e,t))}function y(t,e,r){return (r=d((r-t)/(e-t),0,1))*r*(3-2*r)}function m(t,e,r){const n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function g(t,e,r){if(!t.length)return r(null,[]);let n=t.length;const i=new Array(t.length);let s=null;t.forEach(((t,a)=>{e(t,((t,e)=>{t&&(s=t),i[a]=e,0==--n&&r(s,i);}));}));}function x(t){const e=[];for(const r in t)e.push(t[r]);return e}function v(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}let b=1;function _(){return b++}function w(){return function t(e){return e?(e^Math.random()*(16>>e/4)).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function A(t){return t<=1?1:Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))}function S(t){return !!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function k(t,e){t.forEach((t=>{e[t]&&(e[t]=e[t].bind(e));}));}function I(t,e){return -1!==t.indexOf(e,t.length-e.length)}function M(t,e,r){const n={};for(const i in t)n[i]=e.call(r||this,t[i],i,t);return n}function z(t,e,r){const n={};for(const i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function T(t){return Array.isArray(t)?t.map(T):\"object\"==typeof t&&t?M(t,T):t}const B={};function E(t){B[t]||(\"undefined\"!=typeof console&&console.warn(t),B[t]=!0);}function C(t,e,r){return (r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function P(t){let e=0;for(let r,n,i=0,s=t.length,a=s-1;i<s;a=i++)r=t[i],n=t[a],e+=(n.x-r.x)*(r.y+n.y);return e}function D(){return \"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof self&&self instanceof WorkerGlobalScope}function V(t){const e={};if(t.replace(/(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,((t,r,n,i)=>{const s=n||i;return e[r]=!s||s.toLowerCase(),\"\"})),e[\"max-age\"]){const t=parseInt(e[\"max-age\"],10);isNaN(t)?delete e[\"max-age\"]:e[\"max-age\"]=t;}return e}let F=null;function L(t){if(null==F){const e=t.navigator?t.navigator.userAgent:null;F=!!t.safari||!(!e||!(/\\b(iPad|iPhone|iPod)\\b/.test(e)||e.match(\"Safari\")&&!e.match(\"Chrome\")));}return F}function R(t){try{const r=e[t];return r.setItem(\"_mapbox_test_\",1),r.removeItem(\"_mapbox_test_\"),!0}catch(t){return !1}}function U(t,e){return [t[4*e],t[4*e+1],t[4*e+2],t[4*e+3]]}const j=e.performance;function $(t){const e=t?t.url.toString():void 0;return j.getEntriesByName(e)}var O=\"2.10.0\";let q,N,G,Z;const X={now:()=>void 0!==G?G:e.performance.now(),setNow(t){G=t;},restoreNow(){G=void 0;},frame(t){const r=e.requestAnimationFrame(t);return {cancel:()=>e.cancelAnimationFrame(r)}},getImageData(t,r=0){const{width:n,height:i}=t;Z||(Z=e.document.createElement(\"canvas\"));const s=Z.getContext(\"2d\");if(!s)throw new Error(\"failed to create canvas 2d context\");return (n>Z.width||i>Z.height)&&(Z.width=n,Z.height=i),s.clearRect(-r,-r,n+2*r,i+2*r),s.drawImage(t,0,0,n,i),s.getImageData(-r,-r,n+2*r,i+2*r)},resolveURL:t=>(q||(q=e.document.createElement(\"a\")),q.href=t,q.href),get devicePixelRatio(){return e.devicePixelRatio},get prefersReducedMotion(){return !!e.matchMedia&&(null==N&&(N=e.matchMedia(\"(prefers-reduced-motion: reduce)\")),N.matches)}};let K;const H={API_URL:\"https://api.mapbox.com\",get API_URL_REGEX(){if(null==K){const t=/^((https?:)?\\/\\/)?([^\\/]+\\.)?mapbox\\.c(n|om)(\\/|\\?|$)/i;try{K=null!=process.env.API_URL_REGEX?new RegExp(process.env.API_URL_REGEX):t;}catch(e){K=t;}}return K},get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf(\"https://api.mapbox.cn\")?\"https://events.mapbox.cn/events/v2\":0===this.API_URL.indexOf(\"https://api.mapbox.com\")?\"https://events.mapbox.com/events/v2\":null:null},SESSION_PATH:\"/map-sessions/v1\",FEEDBACK_URL:\"https://apps.mapbox.com/feedback\",TILE_URL_VERSION:\"v4\",RASTER_URL_PREFIX:\"raster/v1\",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},Y={supported:!1,testSupport:function(t){!Q&&J&&(tt?et(t):W=t);}};let W,J,Q=!1,tt=!1;function et(t){const e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,J),t.isContextLost())return;Y.supported=!0;}catch(t){}t.deleteTexture(e),Q=!0;}e.document&&(J=e.document.createElement(\"img\"),J.onload=function(){W&&et(W),W=null,tt=!0;},J.onerror=function(){Q=!0,W=null;},J.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\");const rt=\"01\",nt=\"NO_ACCESS_TOKEN\";function it(t){return 0===t.indexOf(\"mapbox:\")}function st(t){return H.API_URL_REGEX.test(t)}const at=/^(\\w+):\\/\\/([^/?]*)(\\/[^?]+)?\\??(.+)?/;function ot(t){const e=t.match(at);if(!e)throw new Error(\"Unable to parse URL object\");return {protocol:e[1],authority:e[2],path:e[3]||\"/\",params:e[4]?e[4].split(\"&\"):[]}}function lt(t){const e=t.params.length?`?${t.params.join(\"&\")}`:\"\";return `${t.protocol}://${t.authority}${t.path}${e}`}function ut(t){if(!t)return null;const r=t.split(\".\");if(!r||3!==r.length)return null;try{return JSON.parse(decodeURIComponent(e.atob(r[1]).split(\"\").map((t=>\"%\"+(\"00\"+t.charCodeAt(0).toString(16)).slice(-2))).join(\"\")))}catch(t){return null}}class ct{constructor(t){this.type=t,this.anonId=null,this.eventData={},this.queue=[],this.pendingRequest=null;}getStorageKey(t){const r=ut(H.ACCESS_TOKEN);let n=\"\";return n=r&&r.u?e.btoa(encodeURIComponent(r.u).replace(/%([0-9A-F]{2})/g,((t,e)=>String.fromCharCode(Number(\"0x\"+e))))):H.ACCESS_TOKEN||\"\",t?`mapbox.eventData.${t}:${n}`:`mapbox.eventData:${n}`}fetchEventData(){const t=R(\"localStorage\"),r=this.getStorageKey(),n=this.getStorageKey(\"uuid\");if(t)try{const t=e.localStorage.getItem(r);t&&(this.eventData=JSON.parse(t));const i=e.localStorage.getItem(n);i&&(this.anonId=i);}catch(t){E(\"Unable to read from LocalStorage\");}}saveEventData(){const t=R(\"localStorage\"),r=this.getStorageKey(),n=this.getStorageKey(\"uuid\");if(t)try{e.localStorage.setItem(n,this.anonId),Object.keys(this.eventData).length>=1&&e.localStorage.setItem(r,JSON.stringify(this.eventData));}catch(t){E(\"Unable to write to LocalStorage\");}}processRequests(t){}postEvent(t,e,r,n){if(!H.EVENTS_URL)return;const i=ot(H.EVENTS_URL);i.params.push(`access_token=${n||H.ACCESS_TOKEN||\"\"}`);const s={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:\"mapbox-gl-js\",sdkVersion:O,skuId:rt,userId:this.anonId},a=e?v(s,e):s,o={url:lt(i),headers:{\"Content-Type\":\"text/plain\"},body:JSON.stringify([a])};this.pendingRequest=Pt(o,(t=>{this.pendingRequest=null,r(t),this.saveEventData(),this.processRequests(n);}));}queueRequest(t,e){this.queue.push(t),this.processRequests(e);}}const ht=new class extends ct{constructor(t){super(\"appUserTurnstile\"),this._customAccessToken=t;}postTurnstileEvent(t,e){H.EVENTS_URL&&H.ACCESS_TOKEN&&Array.isArray(t)&&t.some((t=>it(t)||st(t)))&&this.queueRequest(Date.now(),e);}processRequests(t){if(this.pendingRequest||0===this.queue.length)return;this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();const e=ut(H.ACCESS_TOKEN),r=e?e.u:H.ACCESS_TOKEN;let n=r!==this.eventData.tokenU;S(this.anonId)||(this.anonId=w(),n=!0);const i=this.queue.shift();if(this.eventData.lastSuccess){const t=new Date(this.eventData.lastSuccess),e=new Date(i),r=(i-this.eventData.lastSuccess)/864e5;n=n||r>=1||r<-1||t.getDate()!==e.getDate();}else n=!0;n?this.postEvent(i,{\"enabled.telemetry\":!1},(t=>{t||(this.eventData.lastSuccess=i,this.eventData.tokenU=r);}),t):this.processRequests();}},pt=ht.postTurnstileEvent.bind(ht),ft=new class extends ct{constructor(){super(\"map.load\"),this.success={},this.skuToken=\"\";}postMapLoadEvent(t,e,r,n){this.skuToken=e,this.errorCb=n,H.EVENTS_URL&&(r||H.ACCESS_TOKEN?this.queueRequest({id:t,timestamp:Date.now()},r):this.errorCb(new Error(nt)));}processRequests(t){if(this.pendingRequest||0===this.queue.length)return;const{id:e,timestamp:r}=this.queue.shift();e&&this.success[e]||(this.anonId||this.fetchEventData(),S(this.anonId)||(this.anonId=w()),this.postEvent(r,{skuToken:this.skuToken},(t=>{t?this.errorCb(t):e&&(this.success[e]=!0);}),t));}},dt=ft.postMapLoadEvent.bind(ft),yt=new class extends ct{constructor(){super(\"map.auth\"),this.success={},this.skuToken=\"\";}getSession(t,e,r,n){if(!H.API_URL||!H.SESSION_PATH)return;const i=ot(H.API_URL+H.SESSION_PATH);i.params.push(`sku=${e||\"\"}`),i.params.push(`access_token=${n||H.ACCESS_TOKEN||\"\"}`);const s={url:lt(i),headers:{\"Content-Type\":\"text/plain\"}};this.pendingRequest=Dt(s,(t=>{this.pendingRequest=null,r(t),this.saveEventData(),this.processRequests(n);}));}getSessionAPI(t,e,r,n){this.skuToken=e,this.errorCb=n,H.SESSION_PATH&&H.API_URL&&(r||H.ACCESS_TOKEN?this.queueRequest({id:t,timestamp:Date.now()},r):this.errorCb(new Error(nt)));}processRequests(t){if(this.pendingRequest||0===this.queue.length)return;const{id:e,timestamp:r}=this.queue.shift();e&&this.success[e]||this.getSession(r,this.skuToken,(t=>{t?this.errorCb(t):e&&(this.success[e]=!0);}),t);}},mt=yt.getSessionAPI.bind(yt),gt=new Set;let xt,vt=500,bt=50,_t={};function wt(t){const e=kt(t);let r,n;e&&e.forEach((t=>{const e=t.split(\"=\");\"language\"===e[0]?r=e[1]:\"worldview\"===e[0]&&(n=e[1]);}));let i=\"mapbox-tiles\";return r&&(i+=`-${r}`),n&&(i+=`-${n}`),i}function At(){try{return e.caches}catch(t){}}function St(t){const e=At();e&&!_t[t]&&(_t[t]=e.open(t));}function kt(t){const e=t.indexOf(\"?\");return e>0?t.slice(e+1).split(\"&\"):[]}function It(t){const e=t.indexOf(\"?\");if(e<0)return t;const r=kt(t).filter((t=>{const e=t.split(\"=\");return \"language\"===e[0]||\"worldview\"===e[0]}));return r.length?`${t.slice(0,e)}?${r.join(\"&\")}`:t.slice(0,e)}let Mt=1/0;const zt={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(zt);class Tt extends Error{constructor(t,e,r){401===e&&st(r)&&(t+=\": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\"),super(t),this.status=e,this.url=r;}toString(){return `${this.name}: ${this.message} (${this.status}): ${this.url}`}}const Bt=D()?()=>self.worker&&self.worker.referrer:()=>(\"blob:\"===e.location.protocol?e.parent:e).location.href;const Et=function(t,r){if(!(/^file:/.test(n=t.url)||/^file:/.test(Bt())&&!/^\\w+:/.test(n))){if(e.fetch&&e.Request&&e.AbortController&&e.Request.prototype.hasOwnProperty(\"signal\"))return function(t,r){const n=new e.AbortController,i=new e.Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,referrer:Bt(),signal:n.signal});let s=!1,a=!1;const o=(l=i.url).indexOf(\"sku=\")>0&&st(l);var l;\"json\"===t.type&&i.headers.set(\"Accept\",\"application/json\");const u=(n,s,l)=>{if(a)return;if(n&&\"SecurityError\"!==n.message&&E(n),s&&l)return c(s);const u=Date.now();e.fetch(i).then((e=>{if(e.ok){const t=o?e.clone():null;return c(e,t,u)}return r(new Tt(e.statusText,e.status,t.url))})).catch((t=>{20!==t.code&&r(new Error(t.message));}));},c=(n,o,l)=>{(\"arrayBuffer\"===t.type?n.arrayBuffer():\"json\"===t.type?n.json():n.text()).then((t=>{a||(o&&l&&function(t,r,n){const i=wt(t.url);if(St(i),!_t[i])return;const s={status:r.status,statusText:r.statusText,headers:new e.Headers};r.headers.forEach(((t,e)=>s.headers.set(e,t)));const a=V(r.headers.get(\"Cache-Control\")||\"\");if(a[\"no-store\"])return;a[\"max-age\"]&&s.headers.set(\"Expires\",new Date(n+1e3*a[\"max-age\"]).toUTCString());const o=s.headers.get(\"Expires\");o&&(new Date(o).getTime()-n<42e4||function(t,e){if(void 0===xt)try{new Response(new ReadableStream),xt=!0;}catch(t){xt=!1;}xt?e(t.body):t.blob().then(e);}(r,(r=>{const n=new e.Response(r,s);St(i),_t[i]&&_t[i].then((e=>e.put(It(t.url),n))).catch((t=>E(t.message)));})));}(i,o,l),s=!0,r(null,t,n.headers.get(\"Cache-Control\"),n.headers.get(\"Expires\")));})).catch((t=>{a||r(new Error(t.message));}));};return o?function(t,e){const r=wt(t.url);if(St(r),!_t[r])return e(null);const n=It(t.url);_t[r].then((t=>{t.match(n).then((r=>{const i=function(t){if(!t)return !1;const e=new Date(t.headers.get(\"Expires\")||0),r=V(t.headers.get(\"Cache-Control\")||\"\");return e>Date.now()&&!r[\"no-cache\"]}(r);t.delete(n),i&&t.put(n,r.clone()),e(null,r,i);})).catch(e);})).catch(e);}(i,u):u(null,null),{cancel:()=>{a=!0,s||n.abort();}}}(t,r);if(D()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",t,r,void 0,!0)}var n;return function(t,r){const n=new e.XMLHttpRequest;n.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"===t.type&&(n.responseType=\"arraybuffer\");for(const e in t.headers)n.setRequestHeader(e,t.headers[e]);return \"json\"===t.type&&(n.responseType=\"text\",n.setRequestHeader(\"Accept\",\"application/json\")),n.withCredentials=\"include\"===t.credentials,n.onerror=()=>{r(new Error(n.statusText));},n.onload=()=>{if((n.status>=200&&n.status<300||0===n.status)&&null!==n.response){let e=n.response;if(\"json\"===t.type)try{e=JSON.parse(n.response);}catch(t){return r(t)}r(null,e,n.getResponseHeader(\"Cache-Control\"),n.getResponseHeader(\"Expires\"));}else r(new Tt(n.statusText,n.status,t.url));},n.send(t.body),{cancel:()=>n.abort()}}(t,r)},Ct=function(t,e){return Et(v(t,{type:\"arrayBuffer\"}),e)},Pt=function(t,e){return Et(v(t,{method:\"POST\"}),e)},Dt=function(t,e){return Et(v(t,{method:\"GET\"}),e)};function Vt(t){const r=e.document.createElement(\"a\");return r.href=t,r.protocol===e.document.location.protocol&&r.host===e.document.location.host}const Ft=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=\";let Lt,Rt;Lt=[],Rt=0;const Ut=function(t,r){if(Y.supported&&(t.headers||(t.headers={}),t.headers.accept=\"image/webp,*/*\"),Rt>=H.MAX_PARALLEL_IMAGE_REQUESTS){const e={requestParameters:t,callback:r,cancelled:!1,cancel(){this.cancelled=!0;}};return Lt.push(e),e}Rt++;let n=!1;const i=()=>{if(!n)for(n=!0,Rt--;Lt.length&&Rt<H.MAX_PARALLEL_IMAGE_REQUESTS;){const t=Lt.shift(),{requestParameters:e,callback:r,cancelled:n}=t;n||(t.cancel=Ut(e,r).cancel);}},s=Ct(t,((t,n,s,a)=>{i(),t?r(t):n&&(e.createImageBitmap?function(t,r){const n=new e.Blob([new Uint8Array(t)],{type:\"image/png\"});e.createImageBitmap(n).then((t=>{r(null,t);})).catch((t=>{r(new Error(`Could not load image because of ${t.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`));}));}(n,((t,e)=>r(t,e,s,a))):function(t,r){const n=new e.Image,i=e.URL;n.onload=()=>{r(null,n),i.revokeObjectURL(n.src),n.onload=null,e.requestAnimationFrame((()=>{n.src=Ft;}));},n.onerror=()=>r(new Error(\"Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\"));const s=new e.Blob([new Uint8Array(t)],{type:\"image/png\"});n.src=t.byteLength?i.createObjectURL(s):Ft;}(n,((t,e)=>r(t,e,s,a))));}));return {cancel:()=>{s.cancel(),i();}}};function jt(t,e,r){r[t]&&-1!==r[t].indexOf(e)||(r[t]=r[t]||[],r[t].push(e));}function $t(t,e,r){if(r&&r[t]){const n=r[t].indexOf(e);-1!==n&&r[t].splice(n,1);}}class Ot{constructor(t,e={}){v(this,e),this.type=t;}}class qt extends Ot{constructor(t,e={}){super(\"error\",v({error:t},e));}}class Nt{on(t,e){return this._listeners=this._listeners||{},jt(t,e,this._listeners),this}off(t,e){return $t(t,e,this._listeners),$t(t,e,this._oneTimeListeners),this}once(t,e){return e?(this._oneTimeListeners=this._oneTimeListeners||{},jt(t,e,this._oneTimeListeners),this):new Promise((e=>this.once(t,e)))}fire(t,e){\"string\"==typeof t&&(t=new Ot(t,e||{}));const r=t.type;if(this.listens(r)){t.target=this;const e=this._listeners&&this._listeners[r]?this._listeners[r].slice():[];for(const r of e)r.call(this,t);const n=this._oneTimeListeners&&this._oneTimeListeners[r]?this._oneTimeListeners[r].slice():[];for(const e of n)$t(r,e,this._oneTimeListeners),e.call(this,t);const i=this._eventedParent;i&&(v(t,\"function\"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),i.fire(t));}else t instanceof qt&&console.error(t.error);return this}listens(t){return !!(this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t))}setEventedParent(t,e){return this._eventedParent=t,this._eventedParentData=e,this}}var Gt=JSON.parse('{\"$version\":8,\"$root\":{\"version\":{\"required\":true,\"type\":\"enum\",\"values\":[8]},\"name\":{\"type\":\"string\"},\"metadata\":{\"type\":\"*\"},\"center\":{\"type\":\"array\",\"value\":\"number\"},\"zoom\":{\"type\":\"number\"},\"bearing\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\"},\"pitch\":{\"type\":\"number\",\"default\":0,\"units\":\"degrees\"},\"light\":{\"type\":\"light\"},\"terrain\":{\"type\":\"terrain\"},\"fog\":{\"type\":\"fog\"},\"sources\":{\"required\":true,\"type\":\"sources\"},\"sprite\":{\"type\":\"string\"},\"glyphs\":{\"type\":\"string\"},\"transition\":{\"type\":\"transition\"},\"projection\":{\"type\":\"projection\"},\"layers\":{\"required\":true,\"type\":\"array\",\"value\":\"layer\"}},\"sources\":{\"*\":{\"type\":\"source\"}},\"source\":[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],\"source_vector\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"vector\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"scheme\":{\"type\":\"enum\",\"values\":{\"xyz\":{},\"tms\":{}},\"default\":\"xyz\"},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"attribution\":{\"type\":\"string\"},\"promoteId\":{\"type\":\"promoteId\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_raster\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"raster\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"tileSize\":{\"type\":\"number\",\"default\":512,\"units\":\"pixels\"},\"scheme\":{\"type\":\"enum\",\"values\":{\"xyz\":{},\"tms\":{}},\"default\":\"xyz\"},\"attribution\":{\"type\":\"string\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_raster_dem\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"raster-dem\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"tileSize\":{\"type\":\"number\",\"default\":512,\"units\":\"pixels\"},\"attribution\":{\"type\":\"string\"},\"encoding\":{\"type\":\"enum\",\"values\":{\"terrarium\":{},\"mapbox\":{}},\"default\":\"mapbox\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_geojson\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"geojson\":{}}},\"data\":{\"type\":\"*\"},\"maxzoom\":{\"type\":\"number\",\"default\":18},\"attribution\":{\"type\":\"string\"},\"buffer\":{\"type\":\"number\",\"default\":128,\"maximum\":512,\"minimum\":0},\"filter\":{\"type\":\"*\"},\"tolerance\":{\"type\":\"number\",\"default\":0.375},\"cluster\":{\"type\":\"boolean\",\"default\":false},\"clusterRadius\":{\"type\":\"number\",\"default\":50,\"minimum\":0},\"clusterMaxZoom\":{\"type\":\"number\"},\"clusterMinPoints\":{\"type\":\"number\"},\"clusterProperties\":{\"type\":\"*\"},\"lineMetrics\":{\"type\":\"boolean\",\"default\":false},\"generateId\":{\"type\":\"boolean\",\"default\":false},\"promoteId\":{\"type\":\"promoteId\"}},\"source_video\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"video\":{}}},\"urls\":{\"required\":true,\"type\":\"array\",\"value\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"source_image\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"image\":{}}},\"url\":{\"required\":true,\"type\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"layer\":{\"id\":{\"type\":\"string\",\"required\":true},\"type\":{\"type\":\"enum\",\"values\":{\"fill\":{},\"line\":{},\"symbol\":{},\"circle\":{},\"heatmap\":{},\"fill-extrusion\":{},\"raster\":{},\"hillshade\":{},\"background\":{},\"sky\":{}},\"required\":true},\"metadata\":{\"type\":\"*\"},\"source\":{\"type\":\"string\"},\"source-layer\":{\"type\":\"string\"},\"minzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"maxzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"filter\":{\"type\":\"filter\"},\"layout\":{\"type\":\"layout\"},\"paint\":{\"type\":\"paint\"}},\"layout\":[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\",\"layout_sky\"],\"layout_background\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_sky\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_fill\":{\"fill-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_circle\":{\"circle-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_heatmap\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"},\"fill-extrusion-edge-radius\":{\"type\":\"number\",\"private\":true,\"default\":0,\"minimum\":0,\"maximum\":1,\"property-type\":\"constant\"}},\"layout_line\":{\"line-cap\":{\"type\":\"enum\",\"values\":{\"butt\":{},\"round\":{},\"square\":{}},\"default\":\"butt\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-join\":{\"type\":\"enum\",\"values\":{\"bevel\":{},\"round\":{},\"miter\":{}},\"default\":\"miter\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{\"type\":\"number\",\"default\":2,\"requires\":[{\"line-join\":\"miter\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{\"type\":\"number\",\"default\":1.05,\"requires\":[{\"line-join\":\"round\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_symbol\":{\"symbol-placement\":{\"type\":\"enum\",\"values\":{\"point\":{},\"line\":{},\"line-center\":{}},\"default\":\"point\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{\"type\":\"number\",\"default\":250,\"minimum\":1,\"units\":\"pixels\",\"requires\":[{\"symbol-placement\":\"line\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{\"type\":\"boolean\",\"default\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{\"type\":\"enum\",\"values\":{\"auto\":{},\"viewport-y\":{},\"source\":{}},\"default\":\"auto\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\",\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"units\":\"factor of the original icon size\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{\"type\":\"enum\",\"values\":{\"none\":{},\"width\":{},\"height\":{},\"both\":{}},\"default\":\"none\",\"requires\":[\"icon-image\",\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[0,0,0,0],\"units\":\"pixels\",\"requires\":[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{\"type\":\"resolvedImage\",\"tokens\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{\"type\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{\"type\":\"formatted\",\"default\":\"\",\"tokens\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{\"type\":\"array\",\"value\":\"string\",\"default\":[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{\"type\":\"number\",\"default\":16,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{\"type\":\"number\",\"default\":10,\"minimum\":0,\"units\":\"ems\",\"requires\":[\"text-field\",{\"symbol-placement\":[\"point\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{\"type\":\"number\",\"default\":1.2,\"units\":\"ems\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-letter-spacing\":{\"type\":\"number\",\"default\":0,\"units\":\"ems\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{\"type\":\"enum\",\"values\":{\"auto\":{},\"left\":{},\"center\":{},\"right\":{}},\"default\":\"center\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{\"type\":\"number\",\"units\":\"ems\",\"default\":0,\"requires\":[\"text-field\"],\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{\"type\":\"array\",\"value\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"requires\":[\"text-field\",{\"symbol-placement\":[\"point\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-anchor\":{\"type\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"text-field\",{\"!\":\"text-variable-anchor\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{\"type\":\"number\",\"default\":45,\"units\":\"degrees\",\"requires\":[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{\"type\":\"array\",\"value\":\"enum\",\"values\":{\"horizontal\":{},\"vertical\":{}},\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{\"type\":\"boolean\",\"default\":true,\"requires\":[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{\"type\":\"enum\",\"values\":{\"none\":{},\"uppercase\":{},\"lowercase\":{}},\"default\":\"none\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{\"type\":\"array\",\"value\":\"number\",\"units\":\"ems\",\"length\":2,\"default\":[0,0],\"requires\":[\"text-field\",{\"!\":\"text-radial-offset\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\",\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_raster\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_hillshade\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"filter\":{\"type\":\"array\",\"value\":\"*\"},\"filter_symbol\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\",\"pitch\",\"distance-from-center\"]}},\"filter_fill\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_line\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_circle\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_fill-extrusion\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_heatmap\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_operator\":{\"type\":\"enum\",\"values\":{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},\"in\":{},\"!in\":{},\"all\":{},\"any\":{},\"none\":{},\"has\":{},\"!has\":{},\"within\":{}}},\"geometry_type\":{\"type\":\"enum\",\"values\":{\"Point\":{},\"LineString\":{},\"Polygon\":{}}},\"function\":{\"expression\":{\"type\":\"expression\"},\"stops\":{\"type\":\"array\",\"value\":\"function_stop\"},\"base\":{\"type\":\"number\",\"default\":1,\"minimum\":0},\"property\":{\"type\":\"string\",\"default\":\"$zoom\"},\"type\":{\"type\":\"enum\",\"values\":{\"identity\":{},\"exponential\":{},\"interval\":{},\"categorical\":{}},\"default\":\"exponential\"},\"colorSpace\":{\"type\":\"enum\",\"values\":{\"rgb\":{},\"lab\":{},\"hcl\":{}},\"default\":\"rgb\"},\"default\":{\"type\":\"*\",\"required\":false}},\"function_stop\":{\"type\":\"array\",\"minimum\":0,\"maximum\":24,\"value\":[\"number\",\"color\"],\"length\":2},\"expression\":{\"type\":\"array\",\"value\":\"*\",\"minimum\":1},\"fog\":{\"range\":{\"type\":\"array\",\"default\":[0.5,10],\"minimum\":-20,\"maximum\":20,\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]}},\"color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":\"#ffffff\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"high-color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":\"#245cdf\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"space-color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":[\"interpolate\",[\"linear\"],[\"zoom\"],4,\"#010b19\",7,\"#367ab9\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"horizon-blend\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":[\"interpolate\",[\"linear\"],[\"zoom\"],4,0.2,7,0.1],\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"star-intensity\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":[\"interpolate\",[\"linear\"],[\"zoom\"],5,0.35,6,0],\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true}},\"light\":{\"anchor\":{\"type\":\"enum\",\"default\":\"viewport\",\"values\":{\"map\":{},\"viewport\":{}},\"property-type\":\"data-constant\",\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]}},\"position\":{\"type\":\"array\",\"default\":[1.15,210,30],\"length\":3,\"value\":\"number\",\"property-type\":\"data-constant\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]}},\"color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":\"#ffffff\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"intensity\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":0.5,\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true}},\"projection\":{\"name\":{\"type\":\"enum\",\"values\":{\"albers\":{},\"equalEarth\":{},\"equirectangular\":{},\"lambertConformalConic\":{},\"mercator\":{},\"naturalEarth\":{},\"winkelTripel\":{},\"globe\":{}},\"default\":\"mercator\",\"required\":true},\"center\":{\"type\":\"array\",\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"minimum\":[-180,-90],\"maximum\":[180,90],\"transition\":false,\"requires\":[{\"name\":[\"albers\",\"lambertConformalConic\"]}]},\"parallels\":{\"type\":\"array\",\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"minimum\":[-90,-90],\"maximum\":[90,90],\"transition\":false,\"requires\":[{\"name\":[\"albers\",\"lambertConformalConic\"]}]}},\"terrain\":{\"source\":{\"type\":\"string\",\"required\":true},\"exaggeration\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":1,\"minimum\":0,\"maximum\":1000,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true,\"requires\":[\"source\"]}},\"paint\":[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\",\"paint_sky\"],\"paint_fill\":{\"fill-antialias\":{\"type\":\"boolean\",\"default\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{\"type\":\"color\",\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"},{\"fill-antialias\":true}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{\"type\":\"resolvedImage\",\"transition\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"fill-extrusion-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-extrusion-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{\"type\":\"resolvedImage\",\"transition\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"meters\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"meters\",\"transition\":true,\"requires\":[\"fill-extrusion-height\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{\"type\":\"boolean\",\"default\":true,\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-ambient-occlusion-intensity\":{\"property-type\":\"data-constant\",\"type\":\"number\",\"private\":true,\"default\":0,\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"fill-extrusion-ambient-occlusion-radius\":{\"property-type\":\"data-constant\",\"type\":\"number\",\"private\":true,\"default\":3,\"minimum\":0,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true}},\"paint_line\":{\"line-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"line-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"line-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{\"type\":\"number\",\"default\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{\"type\":\"array\",\"value\":\"number\",\"minimum\":0,\"transition\":true,\"units\":\"line widths\",\"requires\":[{\"!\":\"line-pattern\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-pattern\":{\"type\":\"resolvedImage\",\"transition\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{\"type\":\"color\",\"transition\":false,\"requires\":[{\"!\":\"line-pattern\"},{\"source\":\"geojson\",\"has\":{\"lineMetrics\":true}}],\"expression\":{\"interpolated\":true,\"parameters\":[\"line-progress\"]},\"property-type\":\"color-ramp\"},\"line-trim-offset\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"minimum\":[0,0],\"maximum\":[1,1],\"transition\":false,\"requires\":[{\"source\":\"geojson\",\"has\":{\"lineMetrics\":true}}],\"property-type\":\"constant\"}},\"paint_circle\":{\"circle-radius\":{\"type\":\"number\",\"default\":5,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{\"type\":\"number\",\"default\":0,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"circle-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"viewport\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},\"paint_heatmap\":{\"heatmap-radius\":{\"type\":\"number\",\"default\":30,\"minimum\":1,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{\"type\":\"color\",\"default\":[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",0.1,\"royalblue\",0.3,\"cyan\",0.5,\"lime\",0.7,\"yellow\",1,\"red\"],\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_symbol\":{\"icon-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"icon-image\",\"icon-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"overridable\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"transition\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"text-field\",\"text-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_raster\":{\"raster-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"transition\":true,\"units\":\"degrees\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{\"type\":\"enum\",\"values\":{\"linear\":{},\"nearest\":{}},\"default\":\"linear\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"transition\":false,\"units\":\"milliseconds\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_hillshade\":{\"hillshade-illumination-direction\":{\"type\":\"number\",\"default\":335,\"minimum\":0,\"maximum\":359,\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"viewport\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{\"type\":\"number\",\"default\":0.5,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{\"type\":\"color\",\"default\":\"#FFFFFF\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_background\":{\"background-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"background-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{\"type\":\"resolvedImage\",\"transition\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_sky\":{\"sky-type\":{\"type\":\"enum\",\"values\":{\"gradient\":{},\"atmosphere\":{}},\"default\":\"atmosphere\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-atmosphere-sun\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"units\":\"degrees\",\"minimum\":[0,0],\"maximum\":[360,180],\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-atmosphere-sun-intensity\":{\"type\":\"number\",\"requires\":[{\"sky-type\":\"atmosphere\"}],\"default\":10,\"minimum\":0,\"maximum\":100,\"transition\":false,\"property-type\":\"data-constant\"},\"sky-gradient-center\":{\"type\":\"array\",\"requires\":[{\"sky-type\":\"gradient\"}],\"value\":\"number\",\"default\":[0,0],\"length\":2,\"units\":\"degrees\",\"minimum\":[0,0],\"maximum\":[360,180],\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-gradient-radius\":{\"type\":\"number\",\"requires\":[{\"sky-type\":\"gradient\"}],\"default\":90,\"minimum\":0,\"maximum\":180,\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-gradient\":{\"type\":\"color\",\"default\":[\"interpolate\",[\"linear\"],[\"sky-radial-progress\"],0.8,\"#87ceeb\",1,\"white\"],\"transition\":false,\"requires\":[{\"sky-type\":\"gradient\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"sky-radial-progress\"]},\"property-type\":\"color-ramp\"},\"sky-atmosphere-halo-color\":{\"type\":\"color\",\"default\":\"white\",\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"property-type\":\"data-constant\"},\"sky-atmosphere-color\":{\"type\":\"color\",\"default\":\"white\",\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"property-type\":\"data-constant\"},\"sky-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"transition\":{\"duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"units\":\"milliseconds\"},\"delay\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"milliseconds\"}},\"property-type\":{\"data-driven\":{\"type\":\"property-type\"},\"cross-faded\":{\"type\":\"property-type\"},\"cross-faded-data-driven\":{\"type\":\"property-type\"},\"color-ramp\":{\"type\":\"property-type\"},\"data-constant\":{\"type\":\"property-type\"},\"constant\":{\"type\":\"property-type\"}},\"promoteId\":{\"*\":{\"type\":\"string\"}}}');function Zt(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}function Xt(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}function Kt(t){if(Array.isArray(t))return t.map(Kt);if(t instanceof Object&&!(t instanceof Number||t instanceof String||t instanceof Boolean)){const e={};for(const r in t)e[r]=Kt(t[r]);return e}return Xt(t)}class Ht extends Error{constructor(t,e){super(e),this.message=e,this.key=t;}}var Yt=Ht;class Wt{constructor(t,e=[]){this.parent=t,this.bindings={};for(const[t,r]of e)this.bindings[t]=r;}concat(t){return new Wt(this,t)}get(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(`${t} not found in scope.`)}has(t){return !!this.bindings[t]||!!this.parent&&this.parent.has(t)}}var Jt=Wt;const Qt={kind:\"null\"},te={kind:\"number\"},ee={kind:\"string\"},re={kind:\"boolean\"},ne={kind:\"color\"},ie={kind:\"object\"},se={kind:\"value\"},ae={kind:\"collator\"},oe={kind:\"formatted\"},le={kind:\"resolvedImage\"};function ue(t,e){return {kind:\"array\",itemType:t,N:e}}function ce(t){if(\"array\"===t.kind){const e=ce(t.itemType);return \"number\"==typeof t.N?`array<${e}, ${t.N}>`:\"value\"===t.itemType.kind?\"array\":`array<${e}>`}return t.kind}const he=[Qt,te,ee,re,ne,oe,ie,ue(se),le];function pe(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!pe(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else {if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(const t of he)if(!pe(t,e))return null}return `Expected ${ce(t)} but found ${ce(e)} instead.`}function fe(t,e){return e.some((e=>e.kind===t.kind))}function de(t,e){return e.some((e=>\"null\"===e?null===t:\"array\"===e?Array.isArray(t):\"object\"===e?t&&!Array.isArray(t)&&\"object\"==typeof t:e===typeof t))}function ye(t){var e={exports:{}};return t(e,e.exports),e.exports}var me=ye((function(t,e){var r={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function n(t){return (t=Math.round(t))<0?0:t>255?255:t}function i(t){return n(\"%\"===t[t.length-1]?parseFloat(t)/100*255:parseInt(t))}function s(t){return (e=\"%\"===t[t.length-1]?parseFloat(t)/100:parseFloat(t))<0?0:e>1?1:e;var e;}function a(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,o=t.replace(/ /g,\"\").toLowerCase();if(o in r)return r[o].slice();if(\"#\"===o[0])return 4===o.length?(e=parseInt(o.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===o.length&&(e=parseInt(o.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=o.indexOf(\"(\"),u=o.indexOf(\")\");if(-1!==l&&u+1===o.length){var c=o.substr(0,l),h=o.substr(l+1,u-(l+1)).split(\",\"),p=1;switch(c){case\"rgba\":if(4!==h.length)return null;p=s(h.pop());case\"rgb\":return 3!==h.length?null:[i(h[0]),i(h[1]),i(h[2]),p];case\"hsla\":if(4!==h.length)return null;p=s(h.pop());case\"hsl\":if(3!==h.length)return null;var f=(parseFloat(h[0])%360+360)%360/360,d=s(h[1]),y=s(h[2]),m=y<=.5?y*(d+1):y+d-y*d,g=2*y-m;return [n(255*a(g,m,f+1/3)),n(255*a(g,m,f)),n(255*a(g,m,f-1/3)),p];default:return null}}return null};}catch(t){}}));class ge{constructor(t,e,r,n=1){this.r=t,this.g=e,this.b=r,this.a=n;}static parse(t){if(!t)return;if(t instanceof ge)return t;if(\"string\"!=typeof t)return;const e=me.parseCSSColor(t);return e?new ge(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3]):void 0}toString(){const[t,e,r,n]=this.toArray();return `rgba(${Math.round(t)},${Math.round(e)},${Math.round(r)},${n})`}toArray(){const{r:t,g:e,b:r,a:n}=this;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]}toArray01(){const{r:t,g:e,b:r,a:n}=this;return 0===n?[0,0,0,0]:[t/n,e/n,r/n,n]}toArray01PremultipliedAlpha(){const{r:t,g:e,b:r,a:n}=this;return [t,e,r,n]}}ge.black=new ge(0,0,0,1),ge.white=new ge(1,1,1,1),ge.transparent=new ge(0,0,0,0),ge.red=new ge(1,0,0,1),ge.blue=new ge(0,0,1,1);var xe=ge;class ve{constructor(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"});}compare(t,e){return this.collator.compare(t,e)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class be{constructor(t,e,r,n,i){this.text=t.normalize?t.normalize():t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i;}}class _e{constructor(t){this.sections=t;}static fromString(t){return new _e([new be(t,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some((t=>0!==t.text.length||t.image&&0!==t.image.name.length))}static factory(t){return t instanceof _e?t:_e.fromString(t)}toString(){return 0===this.sections.length?\"\":this.sections.map((t=>t.text)).join(\"\")}serialize(){const t=[\"format\"];for(const e of this.sections){if(e.image){t.push([\"image\",e.image.name]);continue}t.push(e.text);const r={};e.fontStack&&(r[\"text-font\"]=[\"literal\",e.fontStack.split(\",\")]),e.scale&&(r[\"font-scale\"]=e.scale),e.textColor&&(r[\"text-color\"]=[\"rgba\"].concat(e.textColor.toArray())),t.push(r);}return t}}class we{constructor(t){this.name=t.name,this.available=t.available;}toString(){return this.name}static fromString(t){return t?new we({name:t,available:!1}):null}serialize(){return [\"image\",this.name]}}function Ae(t,e,r,n){return \"number\"==typeof t&&t>=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:`Invalid rgba value [${[t,e,r,n].join(\", \")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Se(t){if(null===t)return !0;if(\"string\"==typeof t)return !0;if(\"boolean\"==typeof t)return !0;if(\"number\"==typeof t)return !0;if(t instanceof xe)return !0;if(t instanceof ve)return !0;if(t instanceof _e)return !0;if(t instanceof we)return !0;if(Array.isArray(t)){for(const e of t)if(!Se(e))return !1;return !0}if(\"object\"==typeof t){for(const e in t)if(!Se(t[e]))return !1;return !0}return !1}function ke(t){if(null===t)return Qt;if(\"string\"==typeof t)return ee;if(\"boolean\"==typeof t)return re;if(\"number\"==typeof t)return te;if(t instanceof xe)return ne;if(t instanceof ve)return ae;if(t instanceof _e)return oe;if(t instanceof we)return le;if(Array.isArray(t)){const e=t.length;let r;for(const e of t){const t=ke(e);if(r){if(r===t)continue;r=se;break}r=t;}return ue(r||se,e)}return ie}function Ie(t){const e=typeof t;return null===t?\"\":\"string\"===e||\"number\"===e||\"boolean\"===e?String(t):t instanceof xe||t instanceof _e||t instanceof we?t.toString():JSON.stringify(t)}class Me{constructor(t,e){this.type=t,this.value=e;}static parse(t,e){if(2!==t.length)return e.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!Se(t[1]))return e.error(\"invalid value\");const r=t[1];let n=ke(r);const i=e.expectedType;return \"array\"!==n.kind||0!==n.N||!i||\"array\"!==i.kind||\"number\"==typeof i.N&&0!==i.N||(n=i),new Me(n,r)}evaluate(){return this.value}eachChild(){}outputDefined(){return !0}serialize(){return \"array\"===this.type.kind||\"object\"===this.type.kind?[\"literal\",this.value]:this.value instanceof xe?[\"rgba\"].concat(this.value.toArray()):this.value instanceof _e?this.value.serialize():this.value}}var ze=Me,Te=class{constructor(t){this.name=\"ExpressionEvaluationError\",this.message=t;}toJSON(){return this.message}};const Be={string:ee,number:te,boolean:re,object:ie};class Ee{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");let r,n=1;const i=t[0];if(\"array\"===i){let i,s;if(t.length>2){const r=t[1];if(\"string\"!=typeof r||!(r in Be)||\"object\"===r)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);i=Be[r],n++;}else i=se;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);s=t[2],n++;}r=ue(i,s);}else r=Be[i];const s=[];for(;n<t.length;n++){const r=e.parse(t[n],n,se);if(!r)return null;s.push(r);}return new Ee(r,s)}evaluate(t){for(let e=0;e<this.args.length;e++){const r=this.args[e].evaluate(t);if(!pe(this.type,ke(r)))return r;if(e===this.args.length-1)throw new Te(`Expected value to be of type ${ce(this.type)}, but found ${ce(ke(r))} instead.`)}return null}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}serialize(){const t=this.type,e=[t.kind];if(\"array\"===t.kind){const r=t.itemType;if(\"string\"===r.kind||\"number\"===r.kind||\"boolean\"===r.kind){e.push(r.kind);const n=t.N;(\"number\"==typeof n||this.args.length>1)&&e.push(n);}}return e.concat(this.args.map((t=>t.serialize())))}}var Ce=Ee;class Pe{constructor(t){this.type=oe,this.sections=t;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");const r=t[1];if(!Array.isArray(r)&&\"object\"==typeof r)return e.error(\"First argument must be an image or text section.\");const n=[];let i=!1;for(let r=1;r<=t.length-1;++r){const s=t[r];if(i&&\"object\"==typeof s&&!Array.isArray(s)){i=!1;let t=null;if(s[\"font-scale\"]&&(t=e.parse(s[\"font-scale\"],1,te),!t))return null;let r=null;if(s[\"text-font\"]&&(r=e.parse(s[\"text-font\"],1,ue(ee)),!r))return null;let a=null;if(s[\"text-color\"]&&(a=e.parse(s[\"text-color\"],1,ne),!a))return null;const o=n[n.length-1];o.scale=t,o.font=r,o.textColor=a;}else {const s=e.parse(t[r],1,se);if(!s)return null;const a=s.type.kind;if(\"string\"!==a&&\"value\"!==a&&\"null\"!==a&&\"resolvedImage\"!==a)return e.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");i=!0,n.push({content:s,scale:null,font:null,textColor:null});}}return new Pe(n)}evaluate(t){return new _e(this.sections.map((e=>{const r=e.content.evaluate(t);return ke(r)===le?new be(\"\",r,null,null,null):new be(Ie(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(\",\"):null,e.textColor?e.textColor.evaluate(t):null)})))}eachChild(t){for(const e of this.sections)t(e.content),e.scale&&t(e.scale),e.font&&t(e.font),e.textColor&&t(e.textColor);}outputDefined(){return !1}serialize(){const t=[\"format\"];for(const e of this.sections){t.push(e.content.serialize());const r={};e.scale&&(r[\"font-scale\"]=e.scale.serialize()),e.font&&(r[\"text-font\"]=e.font.serialize()),e.textColor&&(r[\"text-color\"]=e.textColor.serialize()),t.push(r);}return t}}class De{constructor(t){this.type=le,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(\"Expected two arguments.\");const r=e.parse(t[1],1,ee);return r?new De(r):e.error(\"No image name provided.\")}evaluate(t){const e=this.input.evaluate(t),r=we.fromString(e);return r&&t.availableImages&&(r.available=t.availableImages.indexOf(e)>-1),r}eachChild(t){t(this.input);}outputDefined(){return !1}serialize(){return [\"image\",this.input.serialize()]}}const Ve={\"to-boolean\":re,\"to-color\":ne,\"to-number\":te,\"to-string\":ee};class Fe{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");const r=t[0];if((\"to-boolean\"===r||\"to-string\"===r)&&2!==t.length)return e.error(\"Expected one argument.\");const n=Ve[r],i=[];for(let r=1;r<t.length;r++){const n=e.parse(t[r],r,se);if(!n)return null;i.push(n);}return new Fe(n,i)}evaluate(t){if(\"boolean\"===this.type.kind)return Boolean(this.args[0].evaluate(t));if(\"color\"===this.type.kind){let e,r;for(const n of this.args){if(e=n.evaluate(t),r=null,e instanceof xe)return e;if(\"string\"==typeof e){const r=t.parseColor(e);if(r)return r}else if(Array.isArray(e)&&(r=e.length<3||e.length>4?`Invalid rbga value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.`:Ae(e[0],e[1],e[2],e[3]),!r))return new xe(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new Te(r||`Could not parse color from value '${\"string\"==typeof e?e:String(JSON.stringify(e))}'`)}if(\"number\"===this.type.kind){let e=null;for(const r of this.args){if(e=r.evaluate(t),null===e)return 0;const n=Number(e);if(!isNaN(n))return n}throw new Te(`Could not convert ${JSON.stringify(e)} to number.`)}return \"formatted\"===this.type.kind?_e.fromString(Ie(this.args[0].evaluate(t))):\"resolvedImage\"===this.type.kind?we.fromString(Ie(this.args[0].evaluate(t))):Ie(this.args[0].evaluate(t))}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}serialize(){if(\"formatted\"===this.type.kind)return new Pe([{content:this.args[0],scale:null,font:null,textColor:null}]).serialize();if(\"resolvedImage\"===this.type.kind)return new De(this.args[0]).serialize();const t=[`to-${this.type.kind}`];return this.eachChild((e=>{t.push(e.serialize());})),t}}var Le=Fe;const Re=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"];var Ue=class{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null,this.featureTileCoord=null,this.featureDistanceData=null;}id(){return this.feature&&void 0!==this.feature.id?this.feature.id:null}geometryType(){return this.feature?\"number\"==typeof this.feature.type?Re[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&\"geometry\"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}distanceFromCenter(){if(this.featureTileCoord&&this.featureDistanceData){const t=this.featureDistanceData.center,e=this.featureDistanceData.scale,{x:r,y:n}=this.featureTileCoord;return this.featureDistanceData.bearing[0]*(r*e-t[0])+this.featureDistanceData.bearing[1]*(n*e-t[1])}return 0}parseColor(t){let e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=xe.parse(t)),e}};class je{constructor(t,e,r,n){this.name=t,this.type=e,this._evaluate=r,this.args=n;}evaluate(t){return this._evaluate(t,this.args)}eachChild(t){this.args.forEach(t);}outputDefined(){return !1}serialize(){return [this.name].concat(this.args.map((t=>t.serialize())))}static parse(t,e){const r=t[0],n=je.definitions[r];if(!n)return e.error(`Unknown expression \"${r}\". If you wanted a literal array, use [\"literal\", [...]].`,0);const i=Array.isArray(n)?n[0]:n.type,s=Array.isArray(n)?[[n[1],n[2]]]:n.overloads,a=s.filter((([e])=>!Array.isArray(e)||e.length===t.length-1));let o=null;for(const[n,s]of a){o=new fr(e.registry,e.path,null,e.scope);const a=[];let l=!1;for(let e=1;e<t.length;e++){const r=t[e],i=Array.isArray(n)?n[e-1]:n.type,s=o.parse(r,1+a.length,i);if(!s){l=!0;break}a.push(s);}if(!l)if(Array.isArray(n)&&n.length!==a.length)o.error(`Expected ${n.length} arguments, but found ${a.length} instead.`);else {for(let t=0;t<a.length;t++){const e=Array.isArray(n)?n[t]:n.type,r=a[t];o.concat(t+1).checkSubtype(e,r.type);}if(0===o.errors.length)return new je(r,i,s,a)}}if(1===a.length)e.errors.push(...o.errors);else {const r=(a.length?a:s).map((([t])=>{return e=t,Array.isArray(e)?`(${e.map(ce).join(\", \")})`:`(${ce(e.type)}...)`;var e;})).join(\" | \"),n=[];for(let r=1;r<t.length;r++){const i=e.parse(t[r],1+n.length);if(!i)return null;n.push(ce(i.type));}e.error(`Expected arguments of type ${r}, but found (${n.join(\", \")}) instead.`);}return null}static register(t,e){je.definitions=e;for(const r in e)t[r]=je;}}var $e=je;class Oe{constructor(t,e,r){this.type=ae,this.locale=r,this.caseSensitive=t,this.diacriticSensitive=e;}static parse(t,e){if(2!==t.length)return e.error(\"Expected one argument.\");const r=t[1];if(\"object\"!=typeof r||Array.isArray(r))return e.error(\"Collator options argument must be an object.\");const n=e.parse(void 0!==r[\"case-sensitive\"]&&r[\"case-sensitive\"],1,re);if(!n)return null;const i=e.parse(void 0!==r[\"diacritic-sensitive\"]&&r[\"diacritic-sensitive\"],1,re);if(!i)return null;let s=null;return r.locale&&(s=e.parse(r.locale,1,ee),!s)?null:new Oe(n,i,s)}evaluate(t){return new ve(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)}eachChild(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale);}outputDefined(){return !1}serialize(){const t={};return t[\"case-sensitive\"]=this.caseSensitive.serialize(),t[\"diacritic-sensitive\"]=this.diacriticSensitive.serialize(),this.locale&&(t.locale=this.locale.serialize()),[\"collator\",t]}}const qe=8192;function Ne(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.min(t[1],e[1]),t[2]=Math.max(t[2],e[0]),t[3]=Math.max(t[3],e[1]);}function Ge(t,e){return !(t[0]<=e[0]||t[2]>=e[2]||t[1]<=e[1]||t[3]>=e[3])}function Ze(t,e){const r=(180+t[0])/360,n=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,i=Math.pow(2,e.z);return [Math.round(r*i*qe),Math.round(n*i*qe)]}function Xe(t,e,r){const n=t[0]-e[0],i=t[1]-e[1],s=t[0]-r[0],a=t[1]-r[1];return n*a-s*i==0&&n*s<=0&&i*a<=0}function Ke(t,e){let r=!1;for(let a=0,o=e.length;a<o;a++){const o=e[a];for(let e=0,a=o.length;e<a-1;e++){if(Xe(t,o[e],o[e+1]))return !1;(i=o[e])[1]>(n=t)[1]!=(s=o[e+1])[1]>n[1]&&n[0]<(s[0]-i[0])*(n[1]-i[1])/(s[1]-i[1])+i[0]&&(r=!r);}}var n,i,s;return r}function He(t,e){for(let r=0;r<e.length;r++)if(Ke(t,e[r]))return !0;return !1}function Ye(t,e,r,n){const i=n[0]-r[0],s=n[1]-r[1],a=(t[0]-r[0])*s-i*(t[1]-r[1]),o=(e[0]-r[0])*s-i*(e[1]-r[1]);return a>0&&o<0||a<0&&o>0}function We(t,e,r){for(const u of r)for(let r=0;r<u.length-1;++r)if(0!=(o=[(a=u[r+1])[0]-(s=u[r])[0],a[1]-s[1]])[0]*(l=[(i=e)[0]-(n=t)[0],i[1]-n[1]])[1]-o[1]*l[0]&&Ye(n,i,s,a)&&Ye(s,a,n,i))return !0;var n,i,s,a,o,l;return !1}function Je(t,e){for(let r=0;r<t.length;++r)if(!Ke(t[r],e))return !1;for(let r=0;r<t.length-1;++r)if(We(t[r],t[r+1],e))return !1;return !0}function Qe(t,e){for(let r=0;r<e.length;r++)if(Je(t,e[r]))return !0;return !1}function tr(t,e,r){const n=[];for(let i=0;i<t.length;i++){const s=[];for(let n=0;n<t[i].length;n++){const a=Ze(t[i][n],r);Ne(e,a),s.push(a);}n.push(s);}return n}function er(t,e,r){const n=[];for(let i=0;i<t.length;i++){const s=tr(t[i],e,r);n.push(s);}return n}function rr(t,e,r,n){if(t[0]<r[0]||t[0]>r[2]){const e=.5*n;let i=t[0]-r[0]>e?-n:r[0]-t[0]>e?n:0;0===i&&(i=t[0]-r[2]>e?-n:r[2]-t[0]>e?n:0),t[0]+=i;}Ne(e,t);}function nr(t,e,r,n){const i=Math.pow(2,n.z)*qe,s=[n.x*qe,n.y*qe],a=[];if(!t)return a;for(const n of t)for(const t of n){const n=[t.x+s[0],t.y+s[1]];rr(n,e,r,i),a.push(n);}return a}function ir(t,e,r,n){const i=Math.pow(2,n.z)*qe,s=[n.x*qe,n.y*qe],a=[];if(!t)return a;for(const r of t){const t=[];for(const n of r){const r=[n.x+s[0],n.y+s[1]];Ne(e,r),t.push(r);}a.push(t);}if(e[2]-e[0]<=i/2){(o=e)[0]=o[1]=1/0,o[2]=o[3]=-1/0;for(const t of a)for(const n of t)rr(n,e,r,i);}var o;return a}class sr{constructor(t,e){this.type=re,this.geojson=t,this.geometries=e;}static parse(t,e){if(2!==t.length)return e.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(Se(t[1])){const e=t[1];if(\"FeatureCollection\"===e.type)for(let t=0;t<e.features.length;++t){const r=e.features[t].geometry.type;if(\"Polygon\"===r||\"MultiPolygon\"===r)return new sr(e,e.features[t].geometry)}else if(\"Feature\"===e.type){const t=e.geometry.type;if(\"Polygon\"===t||\"MultiPolygon\"===t)return new sr(e,e.geometry)}else if(\"Polygon\"===e.type||\"MultiPolygon\"===e.type)return new sr(e,e)}return e.error(\"'within' expression requires valid geojson object that contains polygon geometry type.\")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if(\"Point\"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if(!i)return !1;if(\"Polygon\"===e.type){const s=tr(e.coordinates,n,i),a=nr(t.geometry(),r,n,i);if(!Ge(r,n))return !1;for(const t of a)if(!Ke(t,s))return !1}if(\"MultiPolygon\"===e.type){const s=er(e.coordinates,n,i),a=nr(t.geometry(),r,n,i);if(!Ge(r,n))return !1;for(const t of a)if(!He(t,s))return !1}return !0}(t,this.geometries);if(\"LineString\"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if(!i)return !1;if(\"Polygon\"===e.type){const s=tr(e.coordinates,n,i),a=ir(t.geometry(),r,n,i);if(!Ge(r,n))return !1;for(const t of a)if(!Je(t,s))return !1}if(\"MultiPolygon\"===e.type){const s=er(e.coordinates,n,i),a=ir(t.geometry(),r,n,i);if(!Ge(r,n))return !1;for(const t of a)if(!Qe(t,s))return !1}return !0}(t,this.geometries)}return !1}eachChild(){}outputDefined(){return !0}serialize(){return [\"within\",this.geojson]}}var ar=sr;function or(t){if(t instanceof $e){if(\"get\"===t.name&&1===t.args.length)return !1;if(\"feature-state\"===t.name)return !1;if(\"has\"===t.name&&1===t.args.length)return !1;if(\"properties\"===t.name||\"geometry-type\"===t.name||\"id\"===t.name)return !1;if(/^filter-/.test(t.name))return !1}if(t instanceof ar)return !1;let e=!0;return t.eachChild((t=>{e&&!or(t)&&(e=!1);})),e}function lr(t){if(t instanceof $e&&\"feature-state\"===t.name)return !1;let e=!0;return t.eachChild((t=>{e&&!lr(t)&&(e=!1);})),e}function ur(t,e){if(t instanceof $e&&e.indexOf(t.name)>=0)return !1;let r=!0;return t.eachChild((t=>{r&&!ur(t,e)&&(r=!1);})),r}class cr{constructor(t,e){this.type=e.type,this.name=t,this.boundExpression=e;}static parse(t,e){if(2!==t.length||\"string\"!=typeof t[1])return e.error(\"'var' expression requires exactly one string literal argument.\");const r=t[1];return e.scope.has(r)?new cr(r,e.scope.get(r)):e.error(`Unknown variable \"${r}\". Make sure \"${r}\" has been bound in an enclosing \"let\" expression before using it.`,1)}evaluate(t){return this.boundExpression.evaluate(t)}eachChild(){}outputDefined(){return !1}serialize(){return [\"var\",this.name]}}var hr=cr;class pr{constructor(t,e=[],r,n=new Jt,i=[]){this.registry=t,this.path=e,this.key=e.map((t=>`[${t}]`)).join(\"\"),this.scope=n,this.errors=i,this.expectedType=r;}parse(t,e,r,n,i={}){return e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)}_parse(t,e){function r(t,e,r){return \"assert\"===r?new Ce(e,[t]):\"coerce\"===r?new Le(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');const n=t[0];if(\"string\"!=typeof n)return this.error(`Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use [\"literal\", [...]].`,0),null;const i=this.registry[n];if(i){let n=i.parse(t,this);if(!n)return null;if(this.expectedType){const t=this.expectedType,i=n.type;if(\"string\"!==t.kind&&\"number\"!==t.kind&&\"boolean\"!==t.kind&&\"object\"!==t.kind&&\"array\"!==t.kind||\"value\"!==i.kind)if(\"color\"!==t.kind&&\"formatted\"!==t.kind&&\"resolvedImage\"!==t.kind||\"value\"!==i.kind&&\"string\"!==i.kind){if(this.checkSubtype(t,i))return null}else n=r(n,t,e.typeAnnotation||\"coerce\");else n=r(n,t,e.typeAnnotation||\"assert\");}if(!(n instanceof ze)&&\"resolvedImage\"!==n.type.kind&&dr(n)){const t=new Ue;try{n=new ze(n.type,n.evaluate(t));}catch(t){return this.error(t.message),null}}return n}return this.error(`Unknown expression \"${n}\". If you wanted a literal array, use [\"literal\", [...]].`,0)}return this.error(void 0===t?\"'undefined' value invalid. Use null instead.\":\"object\"==typeof t?'Bare objects invalid. Use [\"literal\", {...}] instead.':`Expected an array, but found ${typeof t} instead.`)}concat(t,e,r){const n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new pr(this.registry,n,e||null,i,this.errors)}error(t,...e){const r=`${this.key}${e.map((t=>`[${t}]`)).join(\"\")}`;this.errors.push(new Yt(r,t));}checkSubtype(t,e){const r=pe(t,e);return r&&this.error(r),r}}var fr=pr;function dr(t){if(t instanceof hr)return dr(t.boundExpression);if(t instanceof $e&&\"error\"===t.name)return !1;if(t instanceof Oe)return !1;if(t instanceof ar)return !1;const e=t instanceof Le||t instanceof Ce;let r=!0;return t.eachChild((t=>{r=e?r&&dr(t):r&&t instanceof ze;})),!!r&&or(t)&&ur(t,[\"zoom\",\"heatmap-density\",\"line-progress\",\"sky-radial-progress\",\"accumulated\",\"is-supported-script\",\"pitch\",\"distance-from-center\"])}function yr(t,e){const r=t.length-1;let n,i,s=0,a=r,o=0;for(;s<=a;)if(o=Math.floor((s+a)/2),n=t[o],i=t[o+1],n<=e){if(o===r||e<i)return o;s=o+1;}else {if(!(n>e))throw new Te(\"Input is not a number.\");a=o-1;}return 0}class mr{constructor(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(const[t,e]of r)this.labels.push(t),this.outputs.push(e);}static parse(t,e){if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");const r=e.parse(t[1],1,te);if(!r)return null;const n=[];let i=null;e.expectedType&&\"value\"!==e.expectedType.kind&&(i=e.expectedType);for(let r=1;r<t.length;r+=2){const s=1===r?-1/0:t[r],a=t[r+1],o=r,l=r+1;if(\"number\"!=typeof s)return e.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',o);if(n.length&&n[n.length-1][0]>=s)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',o);const u=e.parse(a,l,i);if(!u)return null;i=i||u.type,n.push([s,u]);}return new mr(i,r,n)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[yr(e,n)].evaluate(t)}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}serialize(){const t=[\"step\",this.input.serialize()];for(let e=0;e<this.labels.length;e++)e>0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t}}var gr=mr;function xr(t,e,r){return t*(1-r)+e*r}function vr(t,e,r){return t.map(((t,n)=>xr(t,e[n],r)))}var br=Object.freeze({__proto__:null,number:xr,color:function(t,e,r){return new xe(xr(t.r,e.r,r),xr(t.g,e.g,r),xr(t.b,e.b,r),xr(t.a,e.a,r))},array:vr});const _r=.95047,wr=1.08883,Ar=4/29,Sr=6/29,kr=3*Sr*Sr,Ir=Math.PI/180,Mr=180/Math.PI;function zr(t){return t>.008856451679035631?Math.pow(t,1/3):t/kr+Ar}function Tr(t){return t>Sr?t*t*t:kr*(t-Ar)}function Br(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Er(t){return (t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Cr(t){const e=Er(t.r),r=Er(t.g),n=Er(t.b),i=zr((.4124564*e+.3575761*r+.1804375*n)/_r),s=zr((.2126729*e+.7151522*r+.072175*n)/1);return {l:116*s-16,a:500*(i-s),b:200*(s-zr((.0193339*e+.119192*r+.9503041*n)/wr)),alpha:t.a}}function Pr(t){let e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*Tr(e),r=_r*Tr(r),n=wr*Tr(n),new xe(Br(3.2404542*r-1.5371385*e-.4985314*n),Br(-.969266*r+1.8760108*e+.041556*n),Br(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function Dr(t,e,r){const n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}const Vr={forward:Cr,reverse:Pr,interpolate:function(t,e,r){return {l:xr(t.l,e.l,r),a:xr(t.a,e.a,r),b:xr(t.b,e.b,r),alpha:xr(t.alpha,e.alpha,r)}}},Fr={forward:function(t){const{l:e,a:r,b:n}=Cr(t),i=Math.atan2(n,r)*Mr;return {h:i<0?i+360:i,c:Math.sqrt(r*r+n*n),l:e,alpha:t.a}},reverse:function(t){const e=t.h*Ir,r=t.c;return Pr({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return {h:Dr(t.h,e.h,r),c:xr(t.c,e.c,r),l:xr(t.l,e.l,r),alpha:xr(t.alpha,e.alpha,r)}}};var Lr=Object.freeze({__proto__:null,lab:Vr,hcl:Fr});class Rr{constructor(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(const[t,e]of i)this.labels.push(t),this.outputs.push(e);}static interpolationFactor(t,e,n,i){let s=0;if(\"exponential\"===t.name)s=Ur(e,t.base,n,i);else if(\"linear\"===t.name)s=Ur(e,1,n,i);else if(\"cubic-bezier\"===t.name){const a=t.controlPoints;s=new r(a[0],a[1],a[2],a[3]).solve(Ur(e,1,n,i));}return s}static parse(t,e){let[r,n,i,...s]=t;if(!Array.isArray(n)||0===n.length)return e.error(\"Expected an interpolation type expression.\",1);if(\"linear\"===n[0])n={name:\"linear\"};else if(\"exponential\"===n[0]){const t=n[1];if(\"number\"!=typeof t)return e.error(\"Exponential interpolation requires a numeric base.\",1,1);n={name:\"exponential\",base:t};}else {if(\"cubic-bezier\"!==n[0])return e.error(`Unknown interpolation type ${String(n[0])}`,1,0);{const t=n.slice(1);if(4!==t.length||t.some((t=>\"number\"!=typeof t||t<0||t>1)))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:t};}}if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(i=e.parse(i,2,te),!i)return null;const a=[];let o=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?o=ne:e.expectedType&&\"value\"!==e.expectedType.kind&&(o=e.expectedType);for(let t=0;t<s.length;t+=2){const r=s[t],n=s[t+1],i=t+3,l=t+4;if(\"number\"!=typeof r)return e.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.',i);if(a.length&&a[a.length-1][0]>=r)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',i);const u=e.parse(n,l,o);if(!u)return null;o=o||u.type,a.push([r,u]);}return \"number\"===o.kind||\"color\"===o.kind||\"array\"===o.kind&&\"number\"===o.itemType.kind&&\"number\"==typeof o.N?new Rr(o,r,n,i,a):e.error(`Type ${ce(o)} is not interpolatable.`)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);const s=yr(e,n),a=Rr.interpolationFactor(this.interpolation,n,e[s],e[s+1]),o=r[s].evaluate(t),l=r[s+1].evaluate(t);return \"interpolate\"===this.operator?br[this.type.kind.toLowerCase()](o,l,a):\"interpolate-hcl\"===this.operator?Fr.reverse(Fr.interpolate(Fr.forward(o),Fr.forward(l),a)):Vr.reverse(Vr.interpolate(Vr.forward(o),Vr.forward(l),a))}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}serialize(){let t;t=\"linear\"===this.interpolation.name?[\"linear\"]:\"exponential\"===this.interpolation.name?1===this.interpolation.base?[\"linear\"]:[\"exponential\",this.interpolation.base]:[\"cubic-bezier\"].concat(this.interpolation.controlPoints);const e=[this.operator,t,this.input.serialize()];for(let t=0;t<this.labels.length;t++)e.push(this.labels[t],this.outputs[t].serialize());return e}}function Ur(t,e,r,n){const i=n-r,s=t-r;return 0===i?0:1===e?s/i:(Math.pow(e,s)-1)/(Math.pow(e,i)-1)}var jr=Rr;class $r{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error(\"Expectected at least one argument.\");let r=null;const n=e.expectedType;n&&\"value\"!==n.kind&&(r=n);const i=[];for(const n of t.slice(1)){const t=e.parse(n,1+i.length,r,void 0,{typeAnnotation:\"omit\"});if(!t)return null;r=r||t.type,i.push(t);}const s=n&&i.some((t=>pe(n,t.type)));return new $r(s?se:r,i)}evaluate(t){let e,r=null,n=0;for(const i of this.args){if(n++,r=i.evaluate(t),r&&r instanceof we&&!r.available&&(e||(e=r),r=null,n===this.args.length))return e;if(null!==r)break}return r}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}serialize(){const t=[\"coalesce\"];return this.eachChild((e=>{t.push(e.serialize());})),t}}var Or=$r;class qr{constructor(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e;}evaluate(t){return this.result.evaluate(t)}eachChild(t){for(const e of this.bindings)t(e[1]);t(this.result);}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);const r=[];for(let n=1;n<t.length-1;n+=2){const i=t[n];if(\"string\"!=typeof i)return e.error(`Expected string, but found ${typeof i} instead.`,n);if(/[^a-zA-Z0-9_]/.test(i))return e.error(\"Variable names must contain only alphanumeric characters or '_'.\",n);const s=e.parse(t[n+1],n+1);if(!s)return null;r.push([i,s]);}const n=e.parse(t[t.length-1],t.length-1,e.expectedType,r);return n?new qr(r,n):null}outputDefined(){return this.result.outputDefined()}serialize(){const t=[\"let\"];for(const[e,r]of this.bindings)t.push(e,r.serialize());return t.push(this.result.serialize()),t}}var Nr=qr;class Gr{constructor(t,e,r){this.type=t,this.index=e,this.input=r;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,te),n=e.parse(t[2],2,ue(e.expectedType||se));return r&&n?new Gr(n.type.itemType,r,n):null}evaluate(t){const e=this.index.evaluate(t),r=this.input.evaluate(t);if(e<0)throw new Te(`Array index out of bounds: ${e} < 0.`);if(e>=r.length)throw new Te(`Array index out of bounds: ${e} > ${r.length-1}.`);if(e!==Math.floor(e))throw new Te(`Array index must be an integer, but found ${e} instead.`);return r[e]}eachChild(t){t(this.index),t(this.input);}outputDefined(){return !1}serialize(){return [\"at\",this.index.serialize(),this.input.serialize()]}}var Zr=Gr;class Xr{constructor(t,e){this.type=re,this.needle=t,this.haystack=e;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,se),n=e.parse(t[2],2,se);return r&&n?fe(r.type,[re,ee,te,Qt,se])?new Xr(r,n):e.error(`Expected first argument to be of type boolean, string, number or null, but found ${ce(r.type)} instead`):null}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(null==r)return !1;if(!de(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new Te(`Expected first argument to be of type boolean, string, number or null, but found ${ce(ke(e))} instead.`);if(!de(r,[\"string\",\"array\"]))throw new Te(`Expected second argument to be of type array or string, but found ${ce(ke(r))} instead.`);return r.indexOf(e)>=0}eachChild(t){t(this.needle),t(this.haystack);}outputDefined(){return !0}serialize(){return [\"in\",this.needle.serialize(),this.haystack.serialize()]}}var Kr=Xr;class Hr{constructor(t,e,r){this.type=te,this.needle=t,this.haystack=e,this.fromIndex=r;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,se),n=e.parse(t[2],2,se);if(!r||!n)return null;if(!fe(r.type,[re,ee,te,Qt,se]))return e.error(`Expected first argument to be of type boolean, string, number or null, but found ${ce(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,te);return i?new Hr(r,n,i):null}return new Hr(r,n)}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!de(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new Te(`Expected first argument to be of type boolean, string, number or null, but found ${ce(ke(e))} instead.`);if(!de(r,[\"string\",\"array\"]))throw new Te(`Expected second argument to be of type array or string, but found ${ce(ke(r))} instead.`);if(this.fromIndex){const n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)}eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex);}outputDefined(){return !1}serialize(){if(null!=this.fromIndex&&void 0!==this.fromIndex){const t=this.fromIndex.serialize();return [\"index-of\",this.needle.serialize(),this.haystack.serialize(),t]}return [\"index-of\",this.needle.serialize(),this.haystack.serialize()]}}var Yr=Hr;class Wr{constructor(t,e,r,n,i,s){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=s;}static parse(t,e){if(t.length<5)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");let r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);const i={},s=[];for(let a=2;a<t.length-1;a+=2){let o=t[a];const l=t[a+1];Array.isArray(o)||(o=[o]);const u=e.concat(a);if(0===o.length)return u.error(\"Expected at least one branch label.\");for(const t of o){if(\"number\"!=typeof t&&\"string\"!=typeof t)return u.error(\"Branch labels must be numbers or strings.\");if(\"number\"==typeof t&&Math.abs(t)>Number.MAX_SAFE_INTEGER)return u.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(\"number\"==typeof t&&Math.floor(t)!==t)return u.error(\"Numeric branch labels must be integer values.\");if(r){if(u.checkSubtype(r,ke(t)))return null}else r=ke(t);if(void 0!==i[String(t)])return u.error(\"Branch labels must be unique.\");i[String(t)]=s.length;}const c=e.parse(l,a,n);if(!c)return null;n=n||c.type,s.push(c);}const a=e.parse(t[1],1,se);if(!a)return null;const o=e.parse(t[t.length-1],t.length-1,n);return o?\"value\"!==a.type.kind&&e.concat(1).checkSubtype(r,a.type)?null:new Wr(r,n,a,i,s,o):null}evaluate(t){const e=this.input.evaluate(t);return (ke(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)}eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))&&this.otherwise.outputDefined()}serialize(){const t=[\"match\",this.input.serialize()],e=Object.keys(this.cases).sort(),r=[],n={};for(const t of e){const e=n[this.cases[t]];void 0===e?(n[this.cases[t]]=r.length,r.push([this.cases[t],[t]])):r[e][1].push(t);}const i=t=>\"number\"===this.inputType.kind?Number(t):t;for(const[e,n]of r)t.push(1===n.length?i(n[0]):n.map(i)),t.push(this.outputs[e].serialize());return t.push(this.otherwise.serialize()),t}}var Jr=Wr;class Qr{constructor(t,e,r){this.type=t,this.branches=e,this.otherwise=r;}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return e.error(\"Expected an odd number of arguments.\");let r;e.expectedType&&\"value\"!==e.expectedType.kind&&(r=e.expectedType);const n=[];for(let i=1;i<t.length-1;i+=2){const s=e.parse(t[i],i,re);if(!s)return null;const a=e.parse(t[i+1],i+1,r);if(!a)return null;n.push([s,a]),r=r||a.type;}const i=e.parse(t[t.length-1],t.length-1,r);return i?new Qr(r,n,i):null}evaluate(t){for(const[e,r]of this.branches)if(e.evaluate(t))return r.evaluate(t);return this.otherwise.evaluate(t)}eachChild(t){for(const[e,r]of this.branches)t(e),t(r);t(this.otherwise);}outputDefined(){return this.branches.every((([t,e])=>e.outputDefined()))&&this.otherwise.outputDefined()}serialize(){const t=[\"case\"];return this.eachChild((e=>{t.push(e.serialize());})),t}}var tn=Qr;class en{constructor(t,e,r,n){this.type=t,this.input=e,this.beginIndex=r,this.endIndex=n;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,se),n=e.parse(t[2],2,te);if(!r||!n)return null;if(!fe(r.type,[ue(se),ee,se]))return e.error(`Expected first argument to be of type array or string, but found ${ce(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,te);return i?new en(r.type,r,n,i):null}return new en(r.type,r,n)}evaluate(t){const e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!de(e,[\"string\",\"array\"]))throw new Te(`Expected first argument to be of type array or string, but found ${ce(ke(e))} instead.`);if(this.endIndex){const n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)}eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex);}outputDefined(){return !1}serialize(){if(null!=this.endIndex&&void 0!==this.endIndex){const t=this.endIndex.serialize();return [\"slice\",this.input.serialize(),this.beginIndex.serialize(),t]}return [\"slice\",this.input.serialize(),this.beginIndex.serialize()]}}var rn=en;function nn(t,e){return \"==\"===t||\"!=\"===t?\"boolean\"===e.kind||\"string\"===e.kind||\"number\"===e.kind||\"null\"===e.kind||\"value\"===e.kind:\"string\"===e.kind||\"number\"===e.kind||\"value\"===e.kind}function sn(t,e,r,n){return 0===n.compare(e,r)}function an(t,e,r){const n=\"==\"!==t&&\"!=\"!==t;return class i{constructor(t,e,r){this.type=re,this.lhs=t,this.rhs=e,this.collator=r,this.hasUntypedArgument=\"value\"===t.type.kind||\"value\"===e.type.kind;}static parse(t,e){if(3!==t.length&&4!==t.length)return e.error(\"Expected two or three arguments.\");const r=t[0];let s=e.parse(t[1],1,se);if(!s)return null;if(!nn(r,s.type))return e.concat(1).error(`\"${r}\" comparisons are not supported for type '${ce(s.type)}'.`);let a=e.parse(t[2],2,se);if(!a)return null;if(!nn(r,a.type))return e.concat(2).error(`\"${r}\" comparisons are not supported for type '${ce(a.type)}'.`);if(s.type.kind!==a.type.kind&&\"value\"!==s.type.kind&&\"value\"!==a.type.kind)return e.error(`Cannot compare types '${ce(s.type)}' and '${ce(a.type)}'.`);n&&(\"value\"===s.type.kind&&\"value\"!==a.type.kind?s=new Ce(a.type,[s]):\"value\"!==s.type.kind&&\"value\"===a.type.kind&&(a=new Ce(s.type,[a])));let o=null;if(4===t.length){if(\"string\"!==s.type.kind&&\"string\"!==a.type.kind&&\"value\"!==s.type.kind&&\"value\"!==a.type.kind)return e.error(\"Cannot use collator to compare non-string types.\");if(o=e.parse(t[3],3,ae),!o)return null}return new i(s,a,o)}evaluate(i){const s=this.lhs.evaluate(i),a=this.rhs.evaluate(i);if(n&&this.hasUntypedArgument){const e=ke(s),r=ke(a);if(e.kind!==r.kind||\"string\"!==e.kind&&\"number\"!==e.kind)throw new Te(`Expected arguments for \"${t}\" to be (string, string) or (number, number), but found (${e.kind}, ${r.kind}) instead.`)}if(this.collator&&!n&&this.hasUntypedArgument){const t=ke(s),r=ke(a);if(\"string\"!==t.kind||\"string\"!==r.kind)return e(i,s,a)}return this.collator?r(i,s,a,this.collator.evaluate(i)):e(i,s,a)}eachChild(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator);}outputDefined(){return !0}serialize(){const e=[t];return this.eachChild((t=>{e.push(t.serialize());})),e}}}const on=an(\"==\",(function(t,e,r){return e===r}),sn),ln=an(\"!=\",(function(t,e,r){return e!==r}),(function(t,e,r,n){return !sn(0,e,r,n)})),un=an(\"<\",(function(t,e,r){return e<r}),(function(t,e,r,n){return n.compare(e,r)<0})),cn=an(\">\",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),hn=an(\"<=\",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),pn=an(\">=\",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0}));class fn{constructor(t,e,r,n,i,s){this.type=ee,this.number=t,this.locale=e,this.currency=r,this.unit=n,this.minFractionDigits=i,this.maxFractionDigits=s;}static parse(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");const r=e.parse(t[1],1,te);if(!r)return null;const n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");let i=null;if(n.locale&&(i=e.parse(n.locale,1,ee),!i))return null;let s=null;if(n.currency&&(s=e.parse(n.currency,1,ee),!s))return null;let a=null;if(n.unit&&(a=e.parse(n.unit,1,ee),!a))return null;let o=null;if(n[\"min-fraction-digits\"]&&(o=e.parse(n[\"min-fraction-digits\"],1,te),!o))return null;let l=null;return n[\"max-fraction-digits\"]&&(l=e.parse(n[\"max-fraction-digits\"],1,te),!l)?null:new fn(r,i,s,a,o,l)}evaluate(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:(this.currency?\"currency\":this.unit&&\"unit\")||\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,unit:this.unit?this.unit.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))}eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.unit&&t(this.unit),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits);}outputDefined(){return !1}serialize(){const t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.unit&&(t.unit=this.unit.serialize()),this.minFractionDigits&&(t[\"min-fraction-digits\"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t[\"max-fraction-digits\"]=this.maxFractionDigits.serialize()),[\"number-format\",this.number.serialize(),t]}}class dn{constructor(t){this.type=te,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(`Expected argument of type string or array, but found ${ce(r.type)} instead.`):new dn(r):null}evaluate(t){const e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new Te(`Expected value to be of type string or array, but found ${ce(ke(e))} instead.`)}eachChild(t){t(this.input);}outputDefined(){return !1}serialize(){const t=[\"length\"];return this.eachChild((e=>{t.push(e.serialize());})),t}}const yn={\"==\":on,\"!=\":ln,\">\":cn,\"<\":un,\">=\":pn,\"<=\":hn,array:Ce,at:Zr,boolean:Ce,case:tn,coalesce:Or,collator:Oe,format:Pe,image:De,in:Kr,\"index-of\":Yr,interpolate:jr,\"interpolate-hcl\":jr,\"interpolate-lab\":jr,length:dn,let:Nr,literal:ze,match:Jr,number:Ce,\"number-format\":fn,object:Ce,slice:rn,step:gr,string:Ce,\"to-boolean\":Le,\"to-color\":Le,\"to-number\":Le,\"to-string\":Le,var:hr,within:ar};function mn(t,[e,r,n,i]){e=e.evaluate(t),r=r.evaluate(t),n=n.evaluate(t);const s=i?i.evaluate(t):1,a=Ae(e,r,n,s);if(a)throw new Te(a);return new xe(e/255*s,r/255*s,n/255*s,s)}function gn(t,e){return t in e}function xn(t,e){const r=e[t];return void 0===r?null:r}function vn(t){return {type:t}}$e.register(yn,{error:[{kind:\"error\"},[ee],(t,[e])=>{throw new Te(e.evaluate(t))}],typeof:[ee,[se],(t,[e])=>ce(ke(e.evaluate(t)))],\"to-rgba\":[ue(te,4),[ne],(t,[e])=>e.evaluate(t).toArray()],rgb:[ne,[te,te,te],mn],rgba:[ne,[te,te,te,te],mn],has:{type:re,overloads:[[[ee],(t,[e])=>gn(e.evaluate(t),t.properties())],[[ee,ie],(t,[e,r])=>gn(e.evaluate(t),r.evaluate(t))]]},get:{type:se,overloads:[[[ee],(t,[e])=>xn(e.evaluate(t),t.properties())],[[ee,ie],(t,[e,r])=>xn(e.evaluate(t),r.evaluate(t))]]},\"feature-state\":[se,[ee],(t,[e])=>xn(e.evaluate(t),t.featureState||{})],properties:[ie,[],t=>t.properties()],\"geometry-type\":[ee,[],t=>t.geometryType()],id:[se,[],t=>t.id()],zoom:[te,[],t=>t.globals.zoom],pitch:[te,[],t=>t.globals.pitch||0],\"distance-from-center\":[te,[],t=>t.distanceFromCenter()],\"heatmap-density\":[te,[],t=>t.globals.heatmapDensity||0],\"line-progress\":[te,[],t=>t.globals.lineProgress||0],\"sky-radial-progress\":[te,[],t=>t.globals.skyRadialProgress||0],accumulated:[se,[],t=>void 0===t.globals.accumulated?null:t.globals.accumulated],\"+\":[te,vn(te),(t,e)=>{let r=0;for(const n of e)r+=n.evaluate(t);return r}],\"*\":[te,vn(te),(t,e)=>{let r=1;for(const n of e)r*=n.evaluate(t);return r}],\"-\":{type:te,overloads:[[[te,te],(t,[e,r])=>e.evaluate(t)-r.evaluate(t)],[[te],(t,[e])=>-e.evaluate(t)]]},\"/\":[te,[te,te],(t,[e,r])=>e.evaluate(t)/r.evaluate(t)],\"%\":[te,[te,te],(t,[e,r])=>e.evaluate(t)%r.evaluate(t)],ln2:[te,[],()=>Math.LN2],pi:[te,[],()=>Math.PI],e:[te,[],()=>Math.E],\"^\":[te,[te,te],(t,[e,r])=>Math.pow(e.evaluate(t),r.evaluate(t))],sqrt:[te,[te],(t,[e])=>Math.sqrt(e.evaluate(t))],log10:[te,[te],(t,[e])=>Math.log(e.evaluate(t))/Math.LN10],ln:[te,[te],(t,[e])=>Math.log(e.evaluate(t))],log2:[te,[te],(t,[e])=>Math.log(e.evaluate(t))/Math.LN2],sin:[te,[te],(t,[e])=>Math.sin(e.evaluate(t))],cos:[te,[te],(t,[e])=>Math.cos(e.evaluate(t))],tan:[te,[te],(t,[e])=>Math.tan(e.evaluate(t))],asin:[te,[te],(t,[e])=>Math.asin(e.evaluate(t))],acos:[te,[te],(t,[e])=>Math.acos(e.evaluate(t))],atan:[te,[te],(t,[e])=>Math.atan(e.evaluate(t))],min:[te,vn(te),(t,e)=>Math.min(...e.map((e=>e.evaluate(t))))],max:[te,vn(te),(t,e)=>Math.max(...e.map((e=>e.evaluate(t))))],abs:[te,[te],(t,[e])=>Math.abs(e.evaluate(t))],round:[te,[te],(t,[e])=>{const r=e.evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[te,[te],(t,[e])=>Math.floor(e.evaluate(t))],ceil:[te,[te],(t,[e])=>Math.ceil(e.evaluate(t))],\"filter-==\":[re,[ee,se],(t,[e,r])=>t.properties()[e.value]===r.value],\"filter-id-==\":[re,[se],(t,[e])=>t.id()===e.value],\"filter-type-==\":[re,[ee],(t,[e])=>t.geometryType()===e.value],\"filter-<\":[re,[ee,se],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<i}],\"filter-id-<\":[re,[se],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<n}],\"filter->\":[re,[ee,se],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>i}],\"filter-id->\":[re,[se],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>n}],\"filter-<=\":[re,[ee,se],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<=i}],\"filter-id-<=\":[re,[se],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<=n}],\"filter->=\":[re,[ee,se],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>=i}],\"filter-id->=\":[re,[se],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>=n}],\"filter-has\":[re,[se],(t,[e])=>e.value in t.properties()],\"filter-has-id\":[re,[],t=>null!==t.id()&&void 0!==t.id()],\"filter-type-in\":[re,[ue(ee)],(t,[e])=>e.value.indexOf(t.geometryType())>=0],\"filter-id-in\":[re,[ue(se)],(t,[e])=>e.value.indexOf(t.id())>=0],\"filter-in-small\":[re,[ee,ue(se)],(t,[e,r])=>r.value.indexOf(t.properties()[e.value])>=0],\"filter-in-large\":[re,[ee,ue(se)],(t,[e,r])=>function(t,e,r,n){for(;r<=n;){const i=r+n>>1;if(e[i]===t)return !0;e[i]>t?n=i-1:r=i+1;}return !1}(t.properties()[e.value],r.value,0,r.value.length-1)],all:{type:re,overloads:[[[re,re],(t,[e,r])=>e.evaluate(t)&&r.evaluate(t)],[vn(re),(t,e)=>{for(const r of e)if(!r.evaluate(t))return !1;return !0}]]},any:{type:re,overloads:[[[re,re],(t,[e,r])=>e.evaluate(t)||r.evaluate(t)],[vn(re),(t,e)=>{for(const r of e)if(r.evaluate(t))return !0;return !1}]]},\"!\":[re,[re],(t,[e])=>!e.evaluate(t)],\"is-supported-script\":[re,[ee],(t,[e])=>{const r=t.globals&&t.globals.isSupportedScript;return !r||r(e.evaluate(t))}],upcase:[ee,[ee],(t,[e])=>e.evaluate(t).toUpperCase()],downcase:[ee,[ee],(t,[e])=>e.evaluate(t).toLowerCase()],concat:[ee,vn(se),(t,e)=>e.map((e=>Ie(e.evaluate(t)))).join(\"\")],\"resolved-locale\":[ee,[ae],(t,[e])=>e.evaluate(t).resolvedLocale()]});var bn=yn;function _n(t){return {result:\"success\",value:t}}function wn(t){return {result:\"error\",value:t}}function An(t){return \"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function Sn(t){return !!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function kn(t){return !!t.expression&&t.expression.interpolated}function In(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function Mn(t){return \"object\"==typeof t&&null!==t&&!Array.isArray(t)}function zn(t){return t}function Tn(t,e){const r=\"color\"===e.type,n=t.stops&&\"object\"==typeof t.stops[0][0],i=n||!(n||void 0!==t.property),s=t.type||(kn(e)?\"exponential\":\"interval\");if(r&&((t=Zt({},t)).stops&&(t.stops=t.stops.map((t=>[t[0],xe.parse(t[1])]))),t.default=xe.parse(t.default?t.default:e.default)),t.colorSpace&&\"rgb\"!==t.colorSpace&&!Lr[t.colorSpace])throw new Error(`Unknown color space: ${t.colorSpace}`);let a,o,l;if(\"exponential\"===s)a=Pn;else if(\"interval\"===s)a=Cn;else if(\"categorical\"===s){a=En,o=Object.create(null);for(const e of t.stops)o[e[0]]=e[1];l=typeof t.stops[0][0];}else {if(\"identity\"!==s)throw new Error(`Unknown function type \"${s}\"`);a=Dn;}if(n){const r={},n=[];for(let e=0;e<t.stops.length;e++){const i=t.stops[e],s=i[0].zoom;void 0===r[s]&&(r[s]={zoom:s,type:t.type,property:t.property,default:t.default,stops:[]},n.push(s)),r[s].stops.push([i[0].value,i[1]]);}const i=[];for(const t of n)i.push([r[t].zoom,Tn(r[t],e)]);const s={name:\"linear\"};return {kind:\"composite\",interpolationType:s,interpolationFactor:jr.interpolationFactor.bind(void 0,s),zoomStops:i.map((t=>t[0])),evaluate:({zoom:r},n)=>Pn({stops:i,base:t.base},e,r).evaluate(r,n)}}if(i){const r=\"exponential\"===s?{name:\"exponential\",base:void 0!==t.base?t.base:1}:null;return {kind:\"camera\",interpolationType:r,interpolationFactor:jr.interpolationFactor.bind(void 0,r),zoomStops:t.stops.map((t=>t[0])),evaluate:({zoom:r})=>a(t,e,r,o,l)}}return {kind:\"source\",evaluate(r,n){const i=n&&n.properties?n.properties[t.property]:void 0;return void 0===i?Bn(t.default,e.default):a(t,e,i,o,l)}}}function Bn(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function En(t,e,r,n,i){return Bn(typeof r===i?n[r]:void 0,t.default,e.default)}function Cn(t,e,r){if(\"number\"!==In(r))return Bn(t.default,e.default);const n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];const i=yr(t.stops.map((t=>t[0])),r);return t.stops[i][1]}function Pn(t,e,r){const n=void 0!==t.base?t.base:1;if(\"number\"!==In(r))return Bn(t.default,e.default);const i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];const s=yr(t.stops.map((t=>t[0])),r),a=function(t,e,r,n){const i=n-r,s=t-r;return 0===i?0:1===e?s/i:(Math.pow(e,s)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[s][0],t.stops[s+1][0]),o=t.stops[s][1],l=t.stops[s+1][1];let u=br[e.type]||zn;if(t.colorSpace&&\"rgb\"!==t.colorSpace){const e=Lr[t.colorSpace];u=(t,r)=>e.reverse(e.interpolate(e.forward(t),e.forward(r),a));}return \"function\"==typeof o.evaluate?{evaluate(...t){const e=o.evaluate.apply(void 0,t),r=l.evaluate.apply(void 0,t);if(void 0!==e&&void 0!==r)return u(e,r,a)}}:u(o,l,a)}function Dn(t,e,r){return \"color\"===e.type?r=xe.parse(r):\"formatted\"===e.type?r=_e.fromString(r.toString()):\"resolvedImage\"===e.type?r=we.fromString(r.toString()):In(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),Bn(r,t.default,e.default)}class Vn{constructor(t,e){this.expression=t,this._warningHistory={},this._evaluator=new Ue,this._defaultValue=e?function(t){return \"color\"===t.type&&(Mn(t.default)||Array.isArray(t.default))?new xe(0,0,0,0):\"color\"===t.type?xe.parse(t.default)||null:void 0===t.default?null:t.default}(e):null,this._enumValues=e&&\"enum\"===e.type?e.values:null;}evaluateWithoutErrorHandling(t,e,r,n,i,s,a,o){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n||null,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=s,this._evaluator.featureTileCoord=a||null,this._evaluator.featureDistanceData=o||null,this.expression.evaluate(this._evaluator)}evaluate(t,e,r,n,i,s,a,o){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n||null,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=s||null,this._evaluator.featureTileCoord=a||null,this._evaluator.featureDistanceData=o||null;try{const t=this.expression.evaluate(this._evaluator);if(null==t||\"number\"==typeof t&&t!=t)return this._defaultValue;if(this._enumValues&&!(t in this._enumValues))throw new Te(`Expected value to be one of ${Object.keys(this._enumValues).map((t=>JSON.stringify(t))).join(\", \")}, but found ${JSON.stringify(t)} instead.`);return t}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}}}function Fn(t){return Array.isArray(t)&&t.length>0&&\"string\"==typeof t[0]&&t[0]in bn}function Ln(t,e){const r=new fr(bn,[],e?function(t){const e={color:ne,string:ee,number:te,enum:ee,boolean:re,formatted:oe,resolvedImage:le};return \"array\"===t.type?ue(e[t.value]||se,t.length):e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?_n(new Vn(n,e)):wn(r.errors)}class Rn{constructor(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!lr(e.expression);}evaluateWithoutErrorHandling(t,e,r,n,i,s){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,s)}evaluate(t,e,r,n,i,s){return this._styleExpression.evaluate(t,e,r,n,i,s)}}class Un{constructor(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!lr(e.expression),this.interpolationType=n;}evaluateWithoutErrorHandling(t,e,r,n,i,s){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,s)}evaluate(t,e,r,n,i,s){return this._styleExpression.evaluate(t,e,r,n,i,s)}interpolationFactor(t,e,r){return this.interpolationType?jr.interpolationFactor(this.interpolationType,t,e,r):0}}function jn(t,e){if(\"error\"===(t=Ln(t,e)).result)return t;const r=t.value.expression,n=or(r);if(!n&&!An(e))return wn([new Yt(\"\",\"data expressions not supported\")]);const i=ur(r,[\"zoom\",\"pitch\",\"distance-from-center\"]);if(!i&&!Sn(e))return wn([new Yt(\"\",\"zoom expressions not supported\")]);const s=On(r);return s||i?s instanceof Yt?wn([s]):s instanceof jr&&!kn(e)?wn([new Yt(\"\",'\"interpolate\" expressions cannot be used with this property')]):_n(s?new Un(n?\"camera\":\"composite\",t.value,s.labels,s instanceof jr?s.interpolation:void 0):new Rn(n?\"constant\":\"source\",t.value)):wn([new Yt(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')])}class $n{constructor(t,e){this._parameters=t,this._specification=e,Zt(this,Tn(this._parameters,this._specification));}static deserialize(t){return new $n(t._parameters,t._specification)}static serialize(t){return {_parameters:t._parameters,_specification:t._specification}}}function On(t){let e=null;if(t instanceof Nr)e=On(t.result);else if(t instanceof Or){for(const r of t.args)if(e=On(r),e)break}else (t instanceof gr||t instanceof jr)&&t.input instanceof $e&&\"zoom\"===t.input.name&&(e=t);return e instanceof Yt||t.eachChild((t=>{const r=On(t);r instanceof Yt?e=r:!e&&r?e=new Yt(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.'):e&&r&&e!==r&&(e=new Yt(\"\",'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.'));})),e}class qn{constructor(t,e,r,n){this.message=(t?`${t}: `:\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__);}}function Nn(t){const e=t.key,r=t.value,n=t.valueSpec||{},i=t.objectElementValidators||{},s=t.style,a=t.styleSpec;let o=[];const l=In(r);if(\"object\"!==l)return [new qn(e,r,`object expected, ${l} found`)];for(const t in r){const l=t.split(\".\")[0],u=n[l]||n[\"*\"];let c;i[l]?c=i[l]:n[l]?c=Ai:i[\"*\"]?c=i[\"*\"]:n[\"*\"]&&(c=Ai),c?o=o.concat(c({key:(e?`${e}.`:e)+t,value:r[t],valueSpec:u,style:s,styleSpec:a,object:r,objectKey:t},r)):o.push(new qn(e,r[t],`unknown property \"${t}\"`));}for(const t in n)i[t]||n[t].required&&void 0===n[t].default&&void 0===r[t]&&o.push(new qn(e,r,`missing required property \"${t}\"`));return o}function Gn(t){const e=t.value,r=t.valueSpec,n=t.style,i=t.styleSpec,s=t.key,a=t.arrayElementValidator||Ai;if(\"array\"!==In(e))return [new qn(s,e,`array expected, ${In(e)} found`)];if(r.length&&e.length!==r.length)return [new qn(s,e,`array length ${r.length} expected, length ${e.length} found`)];if(r[\"min-length\"]&&e.length<r[\"min-length\"])return [new qn(s,e,`array length at least ${r[\"min-length\"]} expected, length ${e.length} found`)];let o={type:r.value,values:r.values,minimum:r.minimum,maximum:r.maximum,function:void 0};i.$version<7&&(o.function=r.function),\"object\"===In(r.value)&&(o=r.value);let l=[];for(let t=0;t<e.length;t++)l=l.concat(a({array:e,arrayIndex:t,value:e[t],valueSpec:o,style:n,styleSpec:i,key:`${s}[${t}]`}));return l}function Zn(t){const e=t.key,r=t.value,n=t.valueSpec;let i=In(r);if(\"number\"===i&&r!=r&&(i=\"NaN\"),\"number\"!==i)return [new qn(e,r,`number expected, ${i} found`)];if(\"minimum\"in n){let i=n.minimum;if(\"array\"===In(n.minimum)&&(i=n.minimum[t.arrayIndex]),r<i)return [new qn(e,r,`${r} is less than the minimum value ${i}`)]}if(\"maximum\"in n){let i=n.maximum;if(\"array\"===In(n.maximum)&&(i=n.maximum[t.arrayIndex]),r>i)return [new qn(e,r,`${r} is greater than the maximum value ${i}`)]}return []}function Xn(t){const e=t.valueSpec,r=Xt(t.value.type);let n,i,s,a={};const o=\"categorical\"!==r&&void 0===t.value.property,l=!o,u=\"array\"===In(t.value.stops)&&\"array\"===In(t.value.stops[0])&&\"object\"===In(t.value.stops[0][0]),c=Nn({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===r)return [new qn(t.key,t.value,'identity function may not have a \"stops\" property')];let e=[];const n=t.value;return e=e.concat(Gn({key:t.key,value:n,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:h})),\"array\"===In(n)&&0===n.length&&e.push(new qn(t.key,n,\"array must have at least one stop\")),e},default:function(t){return Ai({key:t.key,value:t.value,valueSpec:e,style:t.style,styleSpec:t.styleSpec})}}});return \"identity\"===r&&o&&c.push(new qn(t.key,t.value,'missing required property \"property\"')),\"identity\"===r||t.value.stops||c.push(new qn(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===r&&t.valueSpec.expression&&!kn(t.valueSpec)&&c.push(new qn(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(l&&!An(t.valueSpec)?c.push(new qn(t.key,t.value,\"property functions not supported\")):o&&!Sn(t.valueSpec)&&c.push(new qn(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==r&&!u||void 0!==t.value.property||c.push(new qn(t.key,t.value,'\"property\" property is required')),c;function h(t){let r=[];const n=t.value,o=t.key;if(\"array\"!==In(n))return [new qn(o,n,`array expected, ${In(n)} found`)];if(2!==n.length)return [new qn(o,n,`array length 2 expected, length ${n.length} found`)];if(u){if(\"object\"!==In(n[0]))return [new qn(o,n,`object expected, ${In(n[0])} found`)];if(void 0===n[0].zoom)return [new qn(o,n,\"object stop key must have zoom\")];if(void 0===n[0].value)return [new qn(o,n,\"object stop key must have value\")];const e=Xt(n[0].zoom);if(\"number\"!=typeof e)return [new qn(o,n[0].zoom,\"stop zoom values must be numbers\")];if(s&&s>e)return [new qn(o,n[0].zoom,\"stop zoom values must appear in ascending order\")];e!==s&&(s=e,i=void 0,a={}),r=r.concat(Nn({key:`${o}[0]`,value:n[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:Zn,value:p}}));}else r=r.concat(p({key:`${o}[0]`,value:n[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},n));return Fn(Kt(n[1]))?r.concat([new qn(`${o}[1]`,n[1],\"expressions are not allowed in function stops.\")]):r.concat(Ai({key:`${o}[1]`,value:n[1],valueSpec:e,style:t.style,styleSpec:t.styleSpec}))}function p(t,s){const o=In(t.value),l=Xt(t.value),u=null!==t.value?t.value:s;if(n){if(o!==n)return [new qn(t.key,u,`${o} stop domain type must match previous stop domain type ${n}`)]}else n=o;if(\"number\"!==o&&\"string\"!==o&&\"boolean\"!==o&&\"number\"!=typeof l&&\"string\"!=typeof l&&\"boolean\"!=typeof l)return [new qn(t.key,u,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==o&&\"categorical\"!==r){let n=`number expected, ${o} found`;return An(e)&&void 0===r&&(n+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new qn(t.key,u,n)]}return \"categorical\"!==r||\"number\"!==o||\"number\"==typeof l&&isFinite(l)&&Math.floor(l)===l?\"categorical\"!==r&&\"number\"===o&&\"number\"==typeof l&&\"number\"==typeof i&&void 0!==i&&l<i?[new qn(t.key,u,\"stop domain values must appear in ascending order\")]:(i=l,\"categorical\"===r&&l in a?[new qn(t.key,u,\"stop domain values must be unique\")]:(a[l]=!0,[])):[new qn(t.key,u,`integer expected, found ${String(l)}`)]}}function Kn(t){const e=(\"property\"===t.expressionContext?jn:Ln)(Kt(t.value),t.valueSpec);if(\"error\"===e.result)return e.value.map((e=>new qn(`${t.key}${e.key}`,t.value,e.message)));const r=e.value.expression||e.value._styleExpression.expression;if(\"property\"===t.expressionContext&&\"text-font\"===t.propertyKey&&!r.outputDefined())return [new qn(t.key,t.value,`Invalid data expression for \"${t.propertyKey}\". Output values must be contained as literals within the expression.`)];if(\"property\"===t.expressionContext&&\"layout\"===t.propertyType&&!lr(r))return [new qn(t.key,t.value,'\"feature-state\" data expressions are not supported with layout properties.')];if(\"filter\"===t.expressionContext)return Hn(r,t);if(t.expressionContext&&0===t.expressionContext.indexOf(\"cluster\")){if(!ur(r,[\"zoom\",\"feature-state\"]))return [new qn(t.key,t.value,'\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];if(\"cluster-initial\"===t.expressionContext&&!or(r))return [new qn(t.key,t.value,\"Feature data expressions are not supported with initial expression part of cluster properties.\")]}return []}function Hn(t,e){const r=new Set([\"zoom\",\"feature-state\",\"pitch\",\"distance-from-center\"]);if(e.valueSpec&&e.valueSpec.expression)for(const t of e.valueSpec.expression.parameters)r.delete(t);if(0===r.size)return [];const n=[];return t instanceof $e&&r.has(t.name)?[new qn(e.key,e.value,`[\"${t.name}\"] expression is not supported in a filter for a ${e.object.type} layer with id: ${e.object.id}`)]:(t.eachChild((t=>{n.push(...Hn(t,e));})),n)}function Yn(t){const e=t.key,r=t.value,n=t.valueSpec,i=[];return Array.isArray(n.values)?-1===n.values.indexOf(Xt(r))&&i.push(new qn(e,r,`expected one of [${n.values.join(\", \")}], ${JSON.stringify(r)} found`)):-1===Object.keys(n.values).indexOf(Xt(r))&&i.push(new qn(e,r,`expected one of [${Object.keys(n.values).join(\", \")}], ${JSON.stringify(r)} found`)),i}function Wn(t){if(!0===t||!1===t)return !0;if(!Array.isArray(t)||0===t.length)return !1;switch(t[0]){case\"has\":return t.length>=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":return t.length>=3&&(\"string\"!=typeof t[1]||Array.isArray(t[2]));case\"!in\":case\"!has\":case\"none\":return !1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(const e of t.slice(1))if(!Wn(e)&&\"boolean\"!=typeof e)return !1;return !0;default:return !0}}function Jn(t,e=\"fill\"){if(null==t)return {filter:()=>!0,needGeometry:!1,needFeature:!1};Wn(t)||(t=si(t));const r=t;let n=!0;try{n=function(t){if(!ei(t))return t;let e=Kt(t);return ti(e),e=Qn(e),e}(r);}catch(t){console.warn(`Failed to extract static filter. Filter will continue working, but at higher memory usage and slower framerate.\\nThis is most likely a bug, please report this via https://github.com/mapbox/mapbox-gl-js/issues/new?assignees=&labels=&template=Bug_report.md\\nand paste the contents of this message in the report.\\nThank you!\\nFilter Expression:\\n${JSON.stringify(r,null,2)}\\n `);}const i=Gt[`filter_${e}`],s=Ln(n,i);let a=null;if(\"error\"===s.result)throw new Error(s.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));a=(t,e,r)=>s.value.evaluate(t,e,{},r);let o=null,l=null;if(n!==r){const t=Ln(r,i);if(\"error\"===t.result)throw new Error(t.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));o=(e,r,n,i,s)=>t.value.evaluate(e,r,{},n,void 0,void 0,i,s),l=!or(t.value.expression);}return a=a,{filter:a,dynamicFilter:o||void 0,needGeometry:ii(n),needFeature:!!l}}function Qn(t){if(!Array.isArray(t))return t;const e=function(t){if(ri.has(t[0]))for(let e=1;e<t.length;e++)if(ei(t[e]))return !0;return t}(t);return !0===e?e:e.map((t=>Qn(t)))}function ti(t){let e=!1;const r=[];if(\"case\"===t[0]){for(let n=1;n<t.length-1;n+=2)e=e||ei(t[n]),r.push(t[n+1]);r.push(t[t.length-1]);}else if(\"match\"===t[0]){e=e||ei(t[1]);for(let e=2;e<t.length-1;e+=2)r.push(t[e+1]);r.push(t[t.length-1]);}else if(\"step\"===t[0]){e=e||ei(t[1]);for(let e=1;e<t.length-1;e+=2)r.push(t[e+1]);}e&&(t.length=0,t.push(\"any\",...r));for(let e=1;e<t.length;e++)ti(t[e]);}function ei(t){if(!Array.isArray(t))return !1;if(\"pitch\"===(e=t[0])||\"distance-from-center\"===e)return !0;var e;for(let e=1;e<t.length;e++)if(ei(t[e]))return !0;return !1}const ri=new Set([\"in\",\"==\",\"!=\",\">\",\">=\",\"<\",\"<=\",\"to-boolean\"]);function ni(t,e){return t<e?-1:t>e?1:0}function ii(t){if(!Array.isArray(t))return !1;if(\"within\"===t[0])return !0;for(let e=1;e<t.length;e++)if(ii(t[e]))return !0;return !1}function si(t){if(!t)return !0;const e=t[0];return t.length<=1?\"any\"!==e:\"==\"===e?ai(t[1],t[2],\"==\"):\"!=\"===e?ui(ai(t[1],t[2],\"==\")):\"<\"===e||\">\"===e||\"<=\"===e||\">=\"===e?ai(t[1],t[2],e):\"any\"===e?(r=t.slice(1),[\"any\"].concat(r.map(si))):\"all\"===e?[\"all\"].concat(t.slice(1).map(si)):\"none\"===e?[\"all\"].concat(t.slice(1).map(si).map(ui)):\"in\"===e?oi(t[1],t.slice(2)):\"!in\"===e?ui(oi(t[1],t.slice(2))):\"has\"===e?li(t[1]):\"!has\"===e?ui(li(t[1])):\"within\"!==e||t;var r;}function ai(t,e,r){switch(t){case\"$type\":return [`filter-type-${r}`,e];case\"$id\":return [`filter-id-${r}`,e];default:return [`filter-${r}`,t,e]}}function oi(t,e){if(0===e.length)return !1;switch(t){case\"$type\":return [\"filter-type-in\",[\"literal\",e]];case\"$id\":return [\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some((t=>typeof t!=typeof e[0]))?[\"filter-in-large\",t,[\"literal\",e.sort(ni)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function li(t){switch(t){case\"$type\":return !0;case\"$id\":return [\"filter-has-id\"];default:return [\"filter-has\",t]}}function ui(t){return [\"!\",t]}function ci(t){return Wn(Kt(t.value))?Kn(Zt({},t,{expressionContext:\"filter\",valueSpec:t.styleSpec[`filter_${t.layerType||\"fill\"}`]})):hi(t)}function hi(t){const e=t.value,r=t.key;if(\"array\"!==In(e))return [new qn(r,e,`array expected, ${In(e)} found`)];const n=t.styleSpec;let i,s=[];if(e.length<1)return [new qn(r,e,\"filter array must have at least 1 element\")];switch(s=s.concat(Yn({key:`${r}[0]`,value:e[0],valueSpec:n.filter_operator,style:t.style,styleSpec:t.styleSpec})),Xt(e[0])){case\"<\":case\"<=\":case\">\":case\">=\":e.length>=2&&\"$type\"===Xt(e[1])&&s.push(new qn(r,e,`\"$type\" cannot be use with operator \"${e[0]}\"`));case\"==\":case\"!=\":3!==e.length&&s.push(new qn(r,e,`filter array for operator \"${e[0]}\" must have 3 elements`));case\"in\":case\"!in\":e.length>=2&&(i=In(e[1]),\"string\"!==i&&s.push(new qn(`${r}[1]`,e[1],`string expected, ${i} found`)));for(let a=2;a<e.length;a++)i=In(e[a]),\"$type\"===Xt(e[1])?s=s.concat(Yn({key:`${r}[${a}]`,value:e[a],valueSpec:n.geometry_type,style:t.style,styleSpec:t.styleSpec})):\"string\"!==i&&\"number\"!==i&&\"boolean\"!==i&&s.push(new qn(`${r}[${a}]`,e[a],`string, number, or boolean expected, ${i} found`));break;case\"any\":case\"all\":case\"none\":for(let n=1;n<e.length;n++)s=s.concat(hi({key:`${r}[${n}]`,value:e[n],style:t.style,styleSpec:t.styleSpec}));break;case\"has\":case\"!has\":i=In(e[1]),2!==e.length?s.push(new qn(r,e,`filter array for \"${e[0]}\" operator must have 2 elements`)):\"string\"!==i&&s.push(new qn(`${r}[1]`,e[1],`string expected, ${i} found`));break;case\"within\":i=In(e[1]),2!==e.length?s.push(new qn(r,e,`filter array for \"${e[0]}\" operator must have 2 elements`)):\"object\"!==i&&s.push(new qn(`${r}[1]`,e[1],`object expected, ${i} found`));}return s}function pi(t,e){const r=t.key,n=t.style,i=t.styleSpec,s=t.value,a=t.objectKey,o=i[`${e}_${t.layerType}`];if(!o)return [];const l=a.match(/^(.*)-transition$/);if(\"paint\"===e&&l&&o[l[1]]&&o[l[1]].transition)return Ai({key:r,value:s,valueSpec:i.transition,style:n,styleSpec:i});const u=t.valueSpec||o[a];if(!u)return [new qn(r,s,`unknown property \"${a}\"`)];let c;if(\"string\"===In(s)&&An(u)&&!u.tokens&&(c=/^{([^}]+)}$/.exec(s)))return [new qn(r,s,`\"${a}\" does not support interpolation syntax\\nUse an identity property function instead: \\`{ \"type\": \"identity\", \"property\": ${JSON.stringify(c[1])} }\\`.`)];const h=[];return \"symbol\"===t.layerType&&(\"text-field\"===a&&n&&!n.glyphs&&h.push(new qn(r,s,'use of \"text-field\" requires a style \"glyphs\" property')),\"text-font\"===a&&Mn(Kt(s))&&\"identity\"===Xt(s.type)&&h.push(new qn(r,s,'\"text-font\" does not support identity functions'))),h.concat(Ai({key:t.key,value:s,valueSpec:u,style:n,styleSpec:i,expressionContext:\"property\",propertyType:e,propertyKey:a}))}function fi(t){return pi(t,\"paint\")}function di(t){return pi(t,\"layout\")}function yi(t){let e=[];const r=t.value,n=t.key,i=t.style,s=t.styleSpec;r.type||r.ref||e.push(new qn(n,r,'either \"type\" or \"ref\" is required'));let a=Xt(r.type);const o=Xt(r.ref);if(r.id){const s=Xt(r.id);for(let a=0;a<t.arrayIndex;a++){const t=i.layers[a];Xt(t.id)===s&&e.push(new qn(n,r.id,`duplicate layer id \"${r.id}\", previously used at line ${t.id.__line__}`));}}if(\"ref\"in r){let t;[\"type\",\"source\",\"source-layer\",\"filter\",\"layout\"].forEach((t=>{t in r&&e.push(new qn(n,r[t],`\"${t}\" is prohibited for ref layers`));})),i.layers.forEach((e=>{Xt(e.id)===o&&(t=e);})),t?t.ref?e.push(new qn(n,r.ref,\"ref cannot reference another ref layer\")):a=Xt(t.type):\"string\"==typeof o&&e.push(new qn(n,r.ref,`ref layer \"${o}\" not found`));}else if(\"background\"!==a&&\"sky\"!==a)if(r.source){const t=i.sources&&i.sources[r.source],s=t&&Xt(t.type);t?\"vector\"===s&&\"raster\"===a?e.push(new qn(n,r.source,`layer \"${r.id}\" requires a raster source`)):\"raster\"===s&&\"raster\"!==a?e.push(new qn(n,r.source,`layer \"${r.id}\" requires a vector source`)):\"vector\"!==s||r[\"source-layer\"]?\"raster-dem\"===s&&\"hillshade\"!==a?e.push(new qn(n,r.source,\"raster-dem source can only be used with layer type 'hillshade'.\")):\"line\"!==a||!r.paint||!r.paint[\"line-gradient\"]&&!r.paint[\"line-trim-offset\"]||\"geojson\"===s&&t.lineMetrics||e.push(new qn(n,r,`layer \"${r.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`)):e.push(new qn(n,r,`layer \"${r.id}\" must specify a \"source-layer\"`)):e.push(new qn(n,r.source,`source \"${r.source}\" not found`));}else e.push(new qn(n,r,'missing required property \"source\"'));return e=e.concat(Nn({key:n,value:r,valueSpec:s.layer,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":()=>[],type:()=>Ai({key:`${n}.type`,value:r.type,valueSpec:s.layer.type,style:t.style,styleSpec:t.styleSpec,object:r,objectKey:\"type\"}),filter:t=>ci(Zt({layerType:a},t)),layout:t=>Nn({layer:r,key:t.key,value:t.value,valueSpec:{},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":t=>di(Zt({layerType:a},t))}}),paint:t=>Nn({layer:r,key:t.key,value:t.value,valueSpec:{},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":t=>fi(Zt({layerType:a},t))}})}})),e}function mi(t){const e=t.value,r=t.key,n=In(e);return \"string\"!==n?[new qn(r,e,`string expected, ${n} found`)]:[]}const gi={promoteId:function({key:t,value:e}){if(\"string\"===In(e))return mi({key:t,value:e});{const r=[];for(const n in e)r.push(...mi({key:`${t}.${n}`,value:e[n]}));return r}}};function xi(t){const e=t.value,r=t.key,n=t.styleSpec,i=t.style;if(!e.type)return [new qn(r,e,'\"type\" is required')];const s=Xt(e.type);let a;switch(s){case\"vector\":case\"raster\":case\"raster-dem\":return a=Nn({key:r,value:e,valueSpec:n[`source_${s.replace(\"-\",\"_\")}`],style:t.style,styleSpec:n,objectElementValidators:gi}),a;case\"geojson\":if(a=Nn({key:r,value:e,valueSpec:n.source_geojson,style:i,styleSpec:n,objectElementValidators:gi}),e.cluster)for(const t in e.clusterProperties){const[n,i]=e.clusterProperties[t],s=\"string\"==typeof n?[n,[\"accumulated\"],[\"get\",t]]:n;a.push(...Kn({key:`${r}.${t}.map`,value:i,expressionContext:\"cluster-map\"})),a.push(...Kn({key:`${r}.${t}.reduce`,value:s,expressionContext:\"cluster-reduce\"}));}return a;case\"video\":return Nn({key:r,value:e,valueSpec:n.source_video,style:i,styleSpec:n});case\"image\":return Nn({key:r,value:e,valueSpec:n.source_image,style:i,styleSpec:n});case\"canvas\":return [new qn(r,null,\"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.\",\"source.canvas\")];default:return Yn({key:`${r}.type`,value:e.type,valueSpec:{values:[\"vector\",\"raster\",\"raster-dem\",\"geojson\",\"video\",\"image\"]},style:i,styleSpec:n})}}function vi(t){const e=t.value,r=t.styleSpec,n=r.light,i=t.style;let s=[];const a=In(e);if(void 0===e)return s;if(\"object\"!==a)return s=s.concat([new qn(\"light\",e,`object expected, ${a} found`)]),s;for(const t in e){const a=t.match(/^(.*)-transition$/);s=s.concat(a&&n[a[1]]&&n[a[1]].transition?Ai({key:t,value:e[t],valueSpec:r.transition,style:i,styleSpec:r}):n[t]?Ai({key:t,value:e[t],valueSpec:n[t],style:i,styleSpec:r}):[new qn(t,e[t],`unknown property \"${t}\"`)]);}return s}function bi(t){const e=t.value,r=t.key,n=t.style,i=t.styleSpec,s=i.terrain;let a=[];const o=In(e);if(void 0===e)return a;if(\"object\"!==o)return a=a.concat([new qn(\"terrain\",e,`object expected, ${o} found`)]),a;for(const t in e){const r=t.match(/^(.*)-transition$/);a=a.concat(r&&s[r[1]]&&s[r[1]].transition?Ai({key:t,value:e[t],valueSpec:i.transition,style:n,styleSpec:i}):s[t]?Ai({key:t,value:e[t],valueSpec:s[t],style:n,styleSpec:i}):[new qn(t,e[t],`unknown property \"${t}\"`)]);}if(e.source){const t=n.sources&&n.sources[e.source],i=t&&Xt(t.type);t?\"raster-dem\"!==i&&a.push(new qn(r,e.source,`terrain cannot be used with a source of type ${String(i)}, it only be used with a \"raster-dem\" source type`)):a.push(new qn(r,e.source,`source \"${e.source}\" not found`));}else a.push(new qn(r,e,'terrain is missing required property \"source\"'));return a}function _i(t){const e=t.value,r=t.style,n=t.styleSpec,i=n.fog;let s=[];const a=In(e);if(void 0===e)return s;if(\"object\"!==a)return s=s.concat([new qn(\"fog\",e,`object expected, ${a} found`)]),s;for(const t in e){const a=t.match(/^(.*)-transition$/);s=s.concat(a&&i[a[1]]&&i[a[1]].transition?Ai({key:t,value:e[t],valueSpec:n.transition,style:r,styleSpec:n}):i[t]?Ai({key:t,value:e[t],valueSpec:i[t],style:r,styleSpec:n}):[new qn(t,e[t],`unknown property \"${t}\"`)]);}return s}const wi={\"*\":()=>[],array:Gn,boolean:function(t){const e=t.value,r=t.key,n=In(e);return \"boolean\"!==n?[new qn(r,e,`boolean expected, ${n} found`)]:[]},number:Zn,color:function(t){const e=t.key,r=t.value,n=In(r);return \"string\"!==n?[new qn(e,r,`color expected, ${n} found`)]:null===me.parseCSSColor(r)?[new qn(e,r,`color expected, \"${r}\" found`)]:[]},enum:Yn,filter:ci,function:Xn,layer:yi,object:Nn,source:xi,light:vi,terrain:bi,fog:_i,string:mi,formatted:function(t){return 0===mi(t).length?[]:Kn(t)},resolvedImage:function(t){return 0===mi(t).length?[]:Kn(t)},projection:function(t){const e=t.value,r=t.styleSpec,n=r.projection,i=t.style;let s=[];const a=In(e);if(\"object\"===a)for(const t in e)s=s.concat(Ai({key:t,value:e[t],valueSpec:n[t],style:i,styleSpec:r}));else \"string\"!==a&&(s=s.concat([new qn(\"projection\",e,`object or string expected, ${a} found`)]));return s}};function Ai(t){const e=t.value,r=t.valueSpec,n=t.styleSpec;return r.expression&&Mn(Xt(e))?Xn(t):r.expression&&Fn(Kt(e))?Kn(t):r.type&&wi[r.type]?wi[r.type](t):Nn(Zt({},t,{valueSpec:r.type?n[r.type]:r}))}function Si(t){const e=t.value,r=t.key,n=mi(t);return n.length||(-1===e.indexOf(\"{fontstack}\")&&n.push(new qn(r,e,'\"glyphs\" url must include a \"{fontstack}\" token')),-1===e.indexOf(\"{range}\")&&n.push(new qn(r,e,'\"glyphs\" url must include a \"{range}\" token'))),n}function ki(t,e=Gt){return zi(Ai({key:\"\",value:t,valueSpec:e.$root,styleSpec:e,style:t,objectElementValidators:{glyphs:Si,\"*\":()=>[]}}))}const Ii=t=>zi(fi(t)),Mi=t=>zi(di(t));function zi(t){return t.slice().sort(((t,e)=>t.line&&e.line?t.line-e.line:0))}function Ti(t,e){let r=!1;if(e&&e.length)for(const n of e)t.fire(new qt(new Error(n.message))),r=!0;return r}var Bi=Ei;function Ei(t,e,r){var n=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;var i=new Int32Array(this.arrayBuffer);t=i[0],this.d=(e=i[1])+2*(r=i[2]);for(var s=0;s<this.d*this.d;s++){var a=i[3+s],o=i[3+s+1];n.push(a===o?null:i.subarray(a,o));}var l=i[3+n.length+1];this.keys=i.subarray(i[3+n.length],l),this.bboxes=i.subarray(l),this.insert=this._insertReadonly;}else {this.d=e+2*r;for(var u=0;u<this.d*this.d;u++)n.push([]);this.keys=[],this.bboxes=[];}this.n=e,this.extent=t,this.padding=r,this.scale=e/t,this.uid=0;var c=r/e*t;this.min=-c,this.max=t+c;}Ei.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertCell,this.uid++),this.keys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i);},Ei.prototype._insertReadonly=function(){throw \"Cannot insert into a GridIndex created from an ArrayBuffer.\"},Ei.prototype._insertCell=function(t,e,r,n,i,s){this.cells[i].push(s);},Ei.prototype.query=function(t,e,r,n,i){var s=this.min,a=this.max;if(t<=s&&e<=s&&a<=r&&a<=n&&!i)return Array.prototype.slice.call(this.keys);var o=[];return this._forEachCell(t,e,r,n,this._queryCell,o,{},i),o},Ei.prototype._queryCell=function(t,e,r,n,i,s,a,o){var l=this.cells[i];if(null!==l)for(var u=this.keys,c=this.bboxes,h=0;h<l.length;h++){var p=l[h];if(void 0===a[p]){var f=4*p;(o?o(c[f+0],c[f+1],c[f+2],c[f+3]):t<=c[f+2]&&e<=c[f+3]&&r>=c[f+0]&&n>=c[f+1])?(a[p]=!0,s.push(u[p])):a[p]=!1;}}},Ei.prototype._forEachCell=function(t,e,r,n,i,s,a,o){for(var l=this._convertToCellCoord(t),u=this._convertToCellCoord(e),c=this._convertToCellCoord(r),h=this._convertToCellCoord(n),p=l;p<=c;p++)for(var f=u;f<=h;f++){var d=this.d*f+p;if((!o||o(this._convertFromCellCoord(p),this._convertFromCellCoord(f),this._convertFromCellCoord(p+1),this._convertFromCellCoord(f+1)))&&i.call(this,t,e,r,n,d,s,a,o))return}},Ei.prototype._convertFromCellCoord=function(t){return (t-this.padding)/this.scale},Ei.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},Ei.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=3+this.cells.length+1+1,r=0,n=0;n<this.cells.length;n++)r+=this.cells[n].length;var i=new Int32Array(e+r+this.keys.length+this.bboxes.length);i[0]=this.extent,i[1]=this.n,i[2]=this.padding;for(var s=e,a=0;a<t.length;a++){var o=t[a];i[3+a]=s,i.set(o,s),s+=o.length;}return i[3+t.length]=s,i.set(this.keys,s),i[3+t.length+1]=s+=this.keys.length,i.set(this.bboxes,s),s+=this.bboxes.length,i.buffer};const Ci={};function Pi(t,e,r={}){Object.defineProperty(t,\"_classRegistryKey\",{value:e,writeable:!1}),Ci[e]={klass:t,omit:r.omit||[]};}Pi(Object,\"Object\"),Bi.serialize=function(t,e){const r=t.toArrayBuffer();return e&&e.push(r),{buffer:r}},Bi.deserialize=function(t){return new Bi(t.buffer)},Object.defineProperty(Bi,\"name\",{value:\"Grid\"}),Pi(Bi,\"Grid\"),Pi(xe,\"Color\"),Pi(Error,\"Error\"),Pi(Tt,\"AJAXError\"),Pi(we,\"ResolvedImage\"),Pi($n,\"StylePropertyFunction\"),Pi(Vn,\"StyleExpression\",{omit:[\"_evaluator\"]}),Pi(Un,\"ZoomDependentExpression\"),Pi(Rn,\"ZoomConstantExpression\"),Pi($e,\"CompoundExpression\",{omit:[\"_evaluate\"]});for(const t in bn)Ci[bn[t]._classRegistryKey]||Pi(bn[t],`Expression${t}`);function Di(t){return t&&\"undefined\"!=typeof ArrayBuffer&&(t instanceof ArrayBuffer||t.constructor&&\"ArrayBuffer\"===t.constructor.name)}function Vi(t){return e.ImageBitmap&&t instanceof e.ImageBitmap}function Fi(t,r){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp)return t;if(Di(t)||Vi(t))return r&&r.push(t),t;if(ArrayBuffer.isView(t)){const e=t;return r&&r.push(e.buffer),e}if(t instanceof e.ImageData)return r&&r.push(t.data.buffer),t;if(Array.isArray(t)){const e=[];for(const n of t)e.push(Fi(n,r));return e}if(\"object\"==typeof t){const e=t.constructor,n=e._classRegistryKey;if(!n)throw new Error(`can't serialize object of unregistered class ${n}`);const i=e.serialize?e.serialize(t,r):{};if(!e.serialize){for(const e in t)t.hasOwnProperty(e)&&(Ci[n].omit.indexOf(e)>=0||(i[e]=Fi(t[e],r)));t instanceof Error&&(i.message=t.message);}if(i.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return \"Object\"!==n&&(i.$name=n),i}throw new Error(\"can't serialize object of type \"+typeof t)}function Li(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||Di(t)||Vi(t)||ArrayBuffer.isView(t)||t instanceof e.ImageData)return t;if(Array.isArray(t))return t.map(Li);if(\"object\"==typeof t){const e=t.$name||\"Object\",{klass:r}=Ci[e];if(!r)throw new Error(`can't deserialize unregistered class ${e}`);if(r.deserialize)return r.deserialize(t);const n=Object.create(r.prototype);for(const e of Object.keys(t))\"$name\"!==e&&(n[e]=Li(t[e]));return n}throw new Error(\"can't deserialize object of type \"+typeof t)}class Ri{constructor(){this.first=!0;}update(t,e){const r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom<r&&(this.lastIntegerZoom=r,this.lastIntegerZoomTime=e),t!==this.lastZoom&&(this.lastZoom=t,this.lastFloorZoom=r,!0))}}const Ui=t=>t>=1536&&t<=1791,ji=t=>t>=1872&&t<=1919,$i=t=>t>=2208&&t<=2303,Oi=t=>t>=11904&&t<=12031,qi=t=>t>=12032&&t<=12255,Ni=t=>t>=12272&&t<=12287,Gi=t=>t>=12288&&t<=12351,Zi=t=>t>=12352&&t<=12447,Xi=t=>t>=12448&&t<=12543,Ki=t=>t>=12544&&t<=12591,Hi=t=>t>=12704&&t<=12735,Yi=t=>t>=12736&&t<=12783,Wi=t=>t>=12784&&t<=12799,Ji=t=>t>=12800&&t<=13055,Qi=t=>t>=13056&&t<=13311,ts=t=>t>=13312&&t<=19903,es=t=>t>=19968&&t<=40959,rs=t=>t>=40960&&t<=42127,ns=t=>t>=42128&&t<=42191,is=t=>t>=44032&&t<=55215,ss=t=>t>=63744&&t<=64255,as=t=>t>=64336&&t<=65023,os=t=>t>=65040&&t<=65055,ls=t=>t>=65072&&t<=65103,us=t=>t>=65104&&t<=65135,cs=t=>t>=65136&&t<=65279,hs=t=>t>=65280&&t<=65519;function ps(t){for(const e of t)if(ys(e.charCodeAt(0)))return !0;return !1}function fs(t){for(const e of t)if(!ds(e.charCodeAt(0)))return !1;return !0}function ds(t){return !(Ui(t)||ji(t)||$i(t)||as(t)||cs(t))}function ys(t){return !(746!==t&&747!==t&&(t<4352||!(Hi(t)||Ki(t)||ls(t)&&!(t>=65097&&t<=65103)||ss(t)||Qi(t)||Oi(t)||Yi(t)||!(!Gi(t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||ts(t)||es(t)||Ji(t)||(t=>t>=12592&&t<=12687)(t)||(t=>t>=43360&&t<=43391)(t)||(t=>t>=55216&&t<=55295)(t)||(t=>t>=4352&&t<=4607)(t)||is(t)||Zi(t)||Ni(t)||(t=>t>=12688&&t<=12703)(t)||qi(t)||Wi(t)||Xi(t)&&12540!==t||!(!hs(t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!us(t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||(t=>t>=5120&&t<=5759)(t)||(t=>t>=6320&&t<=6399)(t)||os(t)||(t=>t>=19904&&t<=19967)(t)||rs(t)||ns(t))))}function ms(t){return !(ys(t)||function(t){return !!((t=>t>=128&&t<=255)(t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||(t=>t>=8192&&t<=8303)(t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||(t=>t>=8448&&t<=8527)(t)||(t=>t>=8528&&t<=8591)(t)||(t=>t>=8960&&t<=9215)(t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||(t=>t>=9216&&t<=9279)(t)&&9251!==t||(t=>t>=9280&&t<=9311)(t)||(t=>t>=9312&&t<=9471)(t)||(t=>t>=9632&&t<=9727)(t)||(t=>t>=9728&&t<=9983)(t)&&!(t>=9754&&t<=9759)||(t=>t>=11008&&t<=11263)(t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||Gi(t)||Xi(t)||(t=>t>=57344&&t<=63743)(t)||ls(t)||us(t)||hs(t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}function gs(t){return t>=1424&&t<=2303||as(t)||cs(t)}function xs(t,e){return !(!e&&gs(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||(t=>t>=6016&&t<=6143)(t))}function vs(t){for(const e of t)if(gs(e.charCodeAt(0)))return !0;return !1}const bs=\"deferred\",_s=\"loading\",ws=\"loaded\";let As=null,Ss=\"unavailable\",ks=null;const Is=function(t){t&&\"string\"==typeof t&&t.indexOf(\"NetworkError\")>-1&&(Ss=\"error\"),As&&As(t);};function Ms(){zs.fire(new Ot(\"pluginStateChange\",{pluginStatus:Ss,pluginURL:ks}));}const zs=new Nt,Ts=function(){return Ss},Bs=function(){if(Ss!==bs||!ks)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");Ss=_s,Ms(),ks&&Ct({url:ks},(t=>{t?Is(t):(Ss=ws,Ms());}));},Es={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>Ss===ws||null!=Es.applyArabicShaping,isLoading:()=>Ss===_s,setState(t){Ss=t.pluginStatus,ks=t.pluginURL;},isParsed:()=>null!=Es.applyArabicShaping&&null!=Es.processBidirectionalText&&null!=Es.processStyledBidirectionalText,getPluginURL:()=>ks};class Cs{constructor(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition,this.pitch=e.pitch):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Ri,this.transition={},this.pitch=0);}isSupportedScript(t){return function(t,e){for(const r of t)if(!xs(r.charCodeAt(0),e))return !1;return !0}(t,Es.isLoaded())}crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const t=this.zoom,e=t-Math.floor(t),r=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}}}class Ps{constructor(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Mn(t))return new $n(t,e);if(Fn(t)){const r=jn(t,e);if(\"error\"===r.result)throw new Error(r.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));return r.value}{let r=t;return \"string\"==typeof t&&\"color\"===e.type&&(r=xe.parse(t)),{kind:\"constant\",evaluate:()=>r}}}(void 0===e?t.specification.default:e,t.specification);}isDataDriven(){return \"source\"===this.expression.kind||\"composite\"===this.expression.kind}possiblyEvaluate(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)}}class Ds{constructor(t){this.property=t,this.value=new Ps(t,void 0);}transitioned(t,e){return new Fs(this.property,this.value,e,v({},t.transition,this.transition),t.now)}untransitioned(){return new Fs(this.property,this.value,null,{},0)}}class Vs{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues);}getValue(t){return T(this._values[t].value.value)}setValue(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new Ds(this._values[t].property)),this._values[t].value=new Ps(this._values[t].property,null===e?void 0:T(e));}getTransition(t){return T(this._values[t].transition)}setTransition(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new Ds(this._values[t].property)),this._values[t].transition=T(e)||void 0;}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);const n=this.getTransition(e);void 0!==n&&(t[`${e}-transition`]=n);}return t}transitioned(t,e){const r=new Ls(this._properties);for(const n of Object.keys(this._values))r._values[n]=this._values[n].transitioned(t,e._values[n]);return r}untransitioned(){const t=new Ls(this._properties);for(const e of Object.keys(this._values))t._values[e]=this._values[e].untransitioned();return t}}class Fs{constructor(t,e,r,n,i){const s=n.delay||0,a=n.duration||0;i=i||0,this.property=t,this.value=e,this.begin=i+s,this.end=this.begin+a,t.specification.transition&&(n.delay||n.duration)&&(this.prior=r);}possiblyEvaluate(t,e,r){const n=t.now||0,i=this.value.possiblyEvaluate(t,e,r),s=this.prior;if(s){if(n>this.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n<this.begin)return s.possiblyEvaluate(t,e,r);{const a=(n-this.begin)/(this.end-this.begin);return this.property.interpolate(s.possiblyEvaluate(t,e,r),i,h(a))}}return i}}class Ls{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues);}possiblyEvaluate(t,e,r){const n=new js(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}hasTransition(){for(const t of Object.keys(this._values))if(this._values[t].prior)return !0;return !1}}class Rs{constructor(t){this._properties=t,this._values=Object.create(t.defaultPropertyValues);}getValue(t){return T(this._values[t].value)}setValue(t,e){this._values[t]=new Ps(this._values[t].property,null===e?void 0:T(e));}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);}return t}possiblyEvaluate(t,e,r){const n=new js(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}}class Us{constructor(t,e,r){this.property=t,this.value=e,this.parameters=r;}isConstant(){return \"constant\"===this.value.kind}constantOr(t){return \"constant\"===this.value.kind?this.value.value:t}evaluate(t,e,r,n){return this.property.evaluate(this.value,this.parameters,t,e,r,n)}}class js{constructor(t){this._properties=t,this._values=Object.create(t.defaultPossiblyEvaluatedValues);}get(t){return this._values[t]}}class $s{constructor(t){this.specification=t;}possiblyEvaluate(t,e){return t.expression.evaluate(e)}interpolate(t,e,r){const n=br[this.specification.type];return n?n(t,e,r):t}}class Os{constructor(t,e){this.specification=t,this.overrides=e;}possiblyEvaluate(t,e,r,n){return new Us(this,\"constant\"===t.expression.kind||\"camera\"===t.expression.kind?{kind:\"constant\",value:t.expression.evaluate(e,null,{},r,n)}:t.expression,e)}interpolate(t,e,r){if(\"constant\"!==t.value.kind||\"constant\"!==e.value.kind)return t;if(void 0===t.value.value||void 0===e.value.value)return new Us(this,{kind:\"constant\",value:void 0},t.parameters);const n=br[this.specification.type];return n?new Us(this,{kind:\"constant\",value:n(t.value.value,e.value.value,r)},t.parameters):t}evaluate(t,e,r,n,i,s){return \"constant\"===t.kind?t.value:t.evaluate(e,r,n,i,s)}}class qs extends Os{possiblyEvaluate(t,e,r,n){if(void 0===t.value)return new Us(this,{kind:\"constant\",value:void 0},e);if(\"constant\"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n),s=\"resolvedImage\"===t.property.specification.type&&\"string\"!=typeof i?i.name:i,a=this._calculate(s,s,s,e);return new Us(this,{kind:\"constant\",value:a},e)}if(\"camera\"===t.expression.kind){const r=this._calculate(t.expression.evaluate({zoom:e.zoom-1}),t.expression.evaluate({zoom:e.zoom}),t.expression.evaluate({zoom:e.zoom+1}),e);return new Us(this,{kind:\"constant\",value:r},e)}return new Us(this,t.expression,e)}evaluate(t,e,r,n,i,s){if(\"source\"===t.kind){const a=t.evaluate(e,r,n,i,s);return this._calculate(a,a,a,e)}return \"composite\"===t.kind?this._calculate(t.evaluate({zoom:Math.floor(e.zoom)-1},r,n),t.evaluate({zoom:Math.floor(e.zoom)},r,n),t.evaluate({zoom:Math.floor(e.zoom)+1},r,n),e):t.value}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e,other:r}:{from:r,to:e,other:t}}interpolate(t){return t}}class Ns{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){if(void 0!==t.value){if(\"constant\"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new Cs(Math.floor(e.zoom-1),e)),t.expression.evaluate(new Cs(Math.floor(e.zoom),e)),t.expression.evaluate(new Cs(Math.floor(e.zoom+1),e)),e)}}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class Gs{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){return !!t.expression.evaluate(e,null,{},r,n)}interpolate(){return !1}}class Zs{constructor(t){this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];const e=new Cs(0,{});for(const r in t){const n=t[r];n.specification.overridable&&this.overridableProperties.push(r);const i=this.defaultPropertyValues[r]=new Ps(n,void 0),s=this.defaultTransitionablePropertyValues[r]=new Ds(n);this.defaultTransitioningPropertyValues[r]=s.untransitioned(),this.defaultPossiblyEvaluatedValues[r]=i.possiblyEvaluate(e);}}}function Xs(t,e){return 256*(t=d(Math.floor(t),0,255))+d(Math.floor(e),0,255)}Pi(Os,\"DataDrivenProperty\"),Pi($s,\"DataConstantProperty\"),Pi(qs,\"CrossFadedDataDrivenProperty\"),Pi(Ns,\"CrossFadedProperty\"),Pi(Gs,\"ColorRampProperty\");const Ks={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class Hs{constructor(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8;}}class Ys{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0);}static serialize(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}}static deserialize(t){const e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews());}clear(){this.length=0;}resize(t){this.reserve(t),this.length=t;}reserve(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const e=this.uint8;this._refreshViews(),e&&this.uint8.set(e);}}_refreshViews(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")}destroy(){this.int8=this.uint8=this.int16=this.uint16=this.int32=this.uint32=this.float32=null,this.arrayBuffer=null;}}function Ws(t,e=1){let r=0,n=0;return {members:t.map((t=>{const i=Ks[t.type].BYTES_PER_ELEMENT,s=r=Js(r,Math.max(e,i)),a=t.components||1;return n=Math.max(n,i),r+=i*a,{name:t.name,type:t.type,components:a,offset:s}})),size:Js(r,Math.max(n,e)),alignment:e}}function Js(t,e){return Math.ceil(t/e)*e}class Qs extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t}}Qs.prototype.bytesPerElement=4,Pi(Qs,\"StructArrayLayout2i4\");class ta extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t}}ta.prototype.bytesPerElement=6,Pi(ta,\"StructArrayLayout3i6\");class ea extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=4*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,t}}ea.prototype.bytesPerElement=8,Pi(ea,\"StructArrayLayout4i8\");class ra extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,s,a)}emplace(t,e,r,n,i,s,a,o){const l=6*t,u=12*t,c=3*t;return this.int16[l+0]=e,this.int16[l+1]=r,this.uint8[u+4]=n,this.uint8[u+5]=i,this.uint8[u+6]=s,this.uint8[u+7]=a,this.float32[c+2]=o,t}}ra.prototype.bytesPerElement=12,Pi(ra,\"StructArrayLayout2i4ub1f12\");class na extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=4*t;return this.float32[s+0]=e,this.float32[s+1]=r,this.float32[s+2]=n,this.float32[s+3]=i,t}}na.prototype.bytesPerElement=16,Pi(na,\"StructArrayLayout4f16\");class ia extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u){const c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,s,a,o,l,u)}emplace(t,e,r,n,i,s,a,o,l,u,c){const h=10*t;return this.uint16[h+0]=e,this.uint16[h+1]=r,this.uint16[h+2]=n,this.uint16[h+3]=i,this.uint16[h+4]=s,this.uint16[h+5]=a,this.uint16[h+6]=o,this.uint16[h+7]=l,this.uint16[h+8]=u,this.uint16[h+9]=c,t}}ia.prototype.bytesPerElement=20,Pi(ia,\"StructArrayLayout10ui20\");class sa extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o){const l=this.length;return this.resize(l+1),this.emplace(l,t,e,r,n,i,s,a,o)}emplace(t,e,r,n,i,s,a,o,l){const u=8*t;return this.uint16[u+0]=e,this.uint16[u+1]=r,this.uint16[u+2]=n,this.uint16[u+3]=i,this.uint16[u+4]=s,this.uint16[u+5]=a,this.uint16[u+6]=o,this.uint16[u+7]=l,t}}sa.prototype.bytesPerElement=16,Pi(sa,\"StructArrayLayout8ui16\");class aa extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s){const a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i,s)}emplace(t,e,r,n,i,s,a){const o=6*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=n,this.int16[o+3]=i,this.int16[o+4]=s,this.int16[o+5]=a,t}}aa.prototype.bytesPerElement=12,Pi(aa,\"StructArrayLayout6i12\");class oa extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h){const p=this.length;return this.resize(p+1),this.emplace(p,t,e,r,n,i,s,a,o,l,u,c,h)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p){const f=12*t;return this.int16[f+0]=e,this.int16[f+1]=r,this.int16[f+2]=n,this.int16[f+3]=i,this.uint16[f+4]=s,this.uint16[f+5]=a,this.uint16[f+6]=o,this.uint16[f+7]=l,this.int16[f+8]=u,this.int16[f+9]=c,this.int16[f+10]=h,this.int16[f+11]=p,t}}oa.prototype.bytesPerElement=24,Pi(oa,\"StructArrayLayout4i4ui4i24\");class la extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s){const a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i,s)}emplace(t,e,r,n,i,s,a){const o=10*t,l=5*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=n,this.float32[l+2]=i,this.float32[l+3]=s,this.float32[l+4]=a,t}}la.prototype.bytesPerElement=20,Pi(la,\"StructArrayLayout3i3f20\");class ua extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint32[1*t+0]=e,t}}ua.prototype.bytesPerElement=4,Pi(ua,\"StructArrayLayout1ul4\");class ca extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p){const f=this.length;return this.resize(f+1),this.emplace(f,t,e,r,n,i,s,a,o,l,u,c,h,p)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f){const d=20*t,y=10*t;return this.int16[d+0]=e,this.int16[d+1]=r,this.int16[d+2]=n,this.int16[d+3]=i,this.int16[d+4]=s,this.float32[y+3]=a,this.float32[y+4]=o,this.float32[y+5]=l,this.float32[y+6]=u,this.int16[d+14]=c,this.uint32[y+8]=h,this.uint16[d+18]=p,this.uint16[d+19]=f,t}}ca.prototype.bytesPerElement=40,Pi(ca,\"StructArrayLayout5i4f1i1ul2ui40\");class ha extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a){const o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,s,a)}emplace(t,e,r,n,i,s,a,o){const l=8*t;return this.int16[l+0]=e,this.int16[l+1]=r,this.int16[l+2]=n,this.int16[l+4]=i,this.int16[l+5]=s,this.int16[l+6]=a,this.int16[l+7]=o,t}}ha.prototype.bytesPerElement=16,Pi(ha,\"StructArrayLayout3i2i2i16\");class pa extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i)}emplace(t,e,r,n,i,s){const a=4*t,o=8*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.int16[o+6]=i,this.int16[o+7]=s,t}}pa.prototype.bytesPerElement=16,Pi(pa,\"StructArrayLayout2f1f2i16\");class fa extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=12*t,a=3*t;return this.uint8[s+0]=e,this.uint8[s+1]=r,this.float32[a+1]=n,this.float32[a+2]=i,t}}fa.prototype.bytesPerElement=12,Pi(fa,\"StructArrayLayout2ub2f12\");class da extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t}}da.prototype.bytesPerElement=12,Pi(da,\"StructArrayLayout3f12\");class ya extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t}}ya.prototype.bytesPerElement=6,Pi(ya,\"StructArrayLayout3ui6\");class ma extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b){const _=this.length;return this.resize(_+1),this.emplace(_,t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,_){const w=30*t,A=15*t,S=60*t;return this.int16[w+0]=e,this.int16[w+1]=r,this.int16[w+2]=n,this.float32[A+2]=i,this.float32[A+3]=s,this.uint16[w+8]=a,this.uint16[w+9]=o,this.uint32[A+5]=l,this.uint32[A+6]=u,this.uint32[A+7]=c,this.uint16[w+16]=h,this.uint16[w+17]=p,this.uint16[w+18]=f,this.float32[A+10]=d,this.float32[A+11]=y,this.uint8[S+48]=m,this.uint8[S+49]=g,this.uint8[S+50]=x,this.uint32[A+13]=v,this.int16[w+28]=b,this.uint8[S+58]=_,t}}ma.prototype.bytesPerElement=60,Pi(ma,\"StructArrayLayout3i2f2ui3ul3ui2f3ub1ul1i1ub60\");class ga extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,_,w,A,S,k,I,M,z,T){const B=this.length;return this.resize(B+1),this.emplace(B,t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,_,w,A,S,k,I,M,z,T)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,_,w,A,S,k,I,M,z,T,B){const E=38*t,C=19*t;return this.int16[E+0]=e,this.int16[E+1]=r,this.int16[E+2]=n,this.float32[C+2]=i,this.float32[C+3]=s,this.int16[E+8]=a,this.int16[E+9]=o,this.int16[E+10]=l,this.int16[E+11]=u,this.int16[E+12]=c,this.int16[E+13]=h,this.uint16[E+14]=p,this.uint16[E+15]=f,this.uint16[E+16]=d,this.uint16[E+17]=y,this.uint16[E+18]=m,this.uint16[E+19]=g,this.uint16[E+20]=x,this.uint16[E+21]=v,this.uint16[E+22]=b,this.uint16[E+23]=_,this.uint16[E+24]=w,this.uint16[E+25]=A,this.uint16[E+26]=S,this.uint16[E+27]=k,this.uint16[E+28]=I,this.uint32[C+15]=M,this.float32[C+16]=z,this.float32[C+17]=T,this.float32[C+18]=B,t}}ga.prototype.bytesPerElement=76,Pi(ga,\"StructArrayLayout3i2f6i15ui1ul3f76\");class xa extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.float32[1*t+0]=e,t}}xa.prototype.bytesPerElement=4,Pi(xa,\"StructArrayLayout1f4\");class va extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i)}emplace(t,e,r,n,i,s){const a=5*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,this.float32[a+4]=s,t}}va.prototype.bytesPerElement=20,Pi(va,\"StructArrayLayout5f20\");class ba extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=6*t;return this.uint32[3*t+0]=e,this.uint16[s+2]=r,this.uint16[s+3]=n,this.uint16[s+4]=i,t}}ba.prototype.bytesPerElement=12,Pi(ba,\"StructArrayLayout1ul3ui12\");class _a extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t}}_a.prototype.bytesPerElement=4,Pi(_a,\"StructArrayLayout2ui4\");class wa extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint16[1*t+0]=e,t}}wa.prototype.bytesPerElement=2,Pi(wa,\"StructArrayLayout1ui2\");class Aa extends Ys{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t}}Aa.prototype.bytesPerElement=8,Pi(Aa,\"StructArrayLayout2f8\");class Sa extends Hs{get a_pos_30(){return this._structArray.int16[this._pos2+0]}get a_pos_31(){return this._structArray.int16[this._pos2+1]}get a_pos_32(){return this._structArray.int16[this._pos2+2]}get a_pos_normal_30(){return this._structArray.int16[this._pos2+3]}get a_pos_normal_31(){return this._structArray.int16[this._pos2+4]}get a_pos_normal_32(){return this._structArray.int16[this._pos2+5]}}Sa.prototype.size=12;class ka extends aa{get(t){return new Sa(this,t)}}Pi(ka,\"FillExtrusionExtArray\");class Ia extends Hs{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.int16[this._pos2+3]}get tileAnchorY(){return this._structArray.int16[this._pos2+4]}get x1(){return this._structArray.float32[this._pos4+3]}get y1(){return this._structArray.float32[this._pos4+4]}get x2(){return this._structArray.float32[this._pos4+5]}get y2(){return this._structArray.float32[this._pos4+6]}get padding(){return this._structArray.int16[this._pos2+14]}get featureIndex(){return this._structArray.uint32[this._pos4+8]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+18]}get bucketIndex(){return this._structArray.uint16[this._pos2+19]}}Ia.prototype.size=40;class Ma extends ca{get(t){return new Ia(this,t)}}Pi(Ma,\"CollisionBoxArray\");class za extends Hs{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.float32[this._pos4+2]}get tileAnchorY(){return this._structArray.float32[this._pos4+3]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+8]}get numGlyphs(){return this._structArray.uint16[this._pos2+9]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+5]}get lineStartIndex(){return this._structArray.uint32[this._pos4+6]}get lineLength(){return this._structArray.uint32[this._pos4+7]}get segment(){return this._structArray.uint16[this._pos2+16]}get lowerSize(){return this._structArray.uint16[this._pos2+17]}get upperSize(){return this._structArray.uint16[this._pos2+18]}get lineOffsetX(){return this._structArray.float32[this._pos4+10]}get lineOffsetY(){return this._structArray.float32[this._pos4+11]}get writingMode(){return this._structArray.uint8[this._pos1+48]}get placedOrientation(){return this._structArray.uint8[this._pos1+49]}set placedOrientation(t){this._structArray.uint8[this._pos1+49]=t;}get hidden(){return this._structArray.uint8[this._pos1+50]}set hidden(t){this._structArray.uint8[this._pos1+50]=t;}get crossTileID(){return this._structArray.uint32[this._pos4+13]}set crossTileID(t){this._structArray.uint32[this._pos4+13]=t;}get associatedIconIndex(){return this._structArray.int16[this._pos2+28]}get flipState(){return this._structArray.uint8[this._pos1+58]}set flipState(t){this._structArray.uint8[this._pos1+58]=t;}}za.prototype.size=60;class Ta extends ma{get(t){return new za(this,t)}}Pi(Ta,\"PlacedSymbolArray\");class Ba extends Hs{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.float32[this._pos4+2]}get tileAnchorY(){return this._structArray.float32[this._pos4+3]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+8]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+9]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+10]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+11]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+12]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+13]}get key(){return this._structArray.uint16[this._pos2+14]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+17]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+18]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+19]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+20]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+21]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+22]}get featureIndex(){return this._structArray.uint16[this._pos2+23]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+24]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+25]}get numIconVertices(){return this._structArray.uint16[this._pos2+26]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+27]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+28]}get crossTileID(){return this._structArray.uint32[this._pos4+15]}set crossTileID(t){this._structArray.uint32[this._pos4+15]=t;}get textOffset0(){return this._structArray.float32[this._pos4+16]}get textOffset1(){return this._structArray.float32[this._pos4+17]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+18]}}Ba.prototype.size=76;class Ea extends ga{get(t){return new Ba(this,t)}}Pi(Ea,\"SymbolInstanceArray\");class Ca extends xa{getoffsetX(t){return this.float32[1*t+0]}}Pi(Ca,\"GlyphOffsetArray\");class Pa extends ta{getx(t){return this.int16[3*t+0]}gety(t){return this.int16[3*t+1]}gettileUnitDistanceFromAnchor(t){return this.int16[3*t+2]}}Pi(Pa,\"SymbolLineVertexArray\");class Da extends Hs{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}get layoutVertexArrayOffset(){return this._structArray.uint16[this._pos2+4]}}Da.prototype.size=12;class Va extends ba{get(t){return new Da(this,t)}}Pi(Va,\"FeatureIndexArray\");class Fa extends Hs{get a_centroid_pos0(){return this._structArray.uint16[this._pos2+0]}get a_centroid_pos1(){return this._structArray.uint16[this._pos2+1]}}Fa.prototype.size=4;class La extends _a{get(t){return new Fa(this,t)}}Pi(La,\"FillExtrusionCentroidArray\");class Ra extends Hs{get a_pos_30(){return this._structArray.int16[this._pos2+0]}get a_pos_31(){return this._structArray.int16[this._pos2+1]}get a_pos_32(){return this._structArray.int16[this._pos2+2]}get a_pos_normal_30(){return this._structArray.int16[this._pos2+3]}get a_pos_normal_31(){return this._structArray.int16[this._pos2+4]}get a_pos_normal_32(){return this._structArray.int16[this._pos2+5]}}Ra.prototype.size=12;class Ua extends aa{get(t){return new Ra(this,t)}}Pi(Ua,\"CircleGlobeExtArray\");const ja=Ws([{name:\"a_pattern_to\",components:4,type:\"Uint16\"},{name:\"a_pattern_from\",components:4,type:\"Uint16\"},{name:\"a_pixel_ratio_to\",components:1,type:\"Uint16\"},{name:\"a_pixel_ratio_from\",components:1,type:\"Uint16\"}]),$a=Ws([{name:\"a_dash_to\",components:4,type:\"Uint16\"},{name:\"a_dash_from\",components:4,type:\"Uint16\"}]);var Oa=ye((function(t){t.exports=function(t,e){var r,n,i,s,a,o,l,u;for(n=t.length-(r=3&t.length),i=e,a=3432918353,o=461845907,u=0;u<n;)l=255&t.charCodeAt(u)|(255&t.charCodeAt(++u))<<8|(255&t.charCodeAt(++u))<<16|(255&t.charCodeAt(++u))<<24,++u,i=27492+(65535&(s=5*(65535&(i=(i^=l=(65535&(l=(l=(65535&l)*a+(((l>>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(s>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(u+2))<<16;case 2:l^=(255&t.charCodeAt(u+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(u)))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295;}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0};})),qa=ye((function(t){t.exports=function(t,e){for(var r,n=t.length,i=e^n,s=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(s)|(255&t.charCodeAt(++s))<<8|(255&t.charCodeAt(++s))<<16|(255&t.charCodeAt(++s))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++s;switch(n){case 3:i^=(255&t.charCodeAt(s+2))<<16;case 2:i^=(255&t.charCodeAt(s+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(s)))+((1540483477*(i>>>16)&65535)<<16);}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0};})),Na=Oa,Ga=qa;Na.murmur3=Oa,Na.murmur2=Ga;class Za{constructor(){this.ids=[],this.positions=[],this.indexed=!1;}add(t,e,r,n){this.ids.push(Xa(t)),this.positions.push(e,r,n);}getPositions(t){const e=Xa(t);let r=0,n=this.ids.length-1;for(;r<n;){const t=r+n>>1;this.ids[t]>=e?n=t:r=t+1;}const i=[];for(;this.ids[r]===e;)i.push({index:this.positions[3*r],start:this.positions[3*r+1],end:this.positions[3*r+2]}),r++;return i}static serialize(t,e){const r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return Ka(r,n,0,r.length-1),e&&e.push(r.buffer,n.buffer),{ids:r,positions:n}}static deserialize(t){const e=new Za;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e}}function Xa(t){const e=+t;return !isNaN(e)&&Number.MIN_SAFE_INTEGER<=e&&e<=Number.MAX_SAFE_INTEGER?e:Na(String(t))}function Ka(t,e,r,n){for(;r<n;){const i=t[r+n>>1];let s=r-1,a=n+1;for(;;){do{s++;}while(t[s]<i);do{a--;}while(t[a]>i);if(s>=a)break;Ha(t,s,a),Ha(e,3*s,3*a),Ha(e,3*s+1,3*a+1),Ha(e,3*s+2,3*a+2);}a-r<n-a?(Ka(t,e,r,a),r=a+1):(Ka(t,e,a+1,n),n=a);}}function Ha(t,e,r){const n=t[e];t[e]=t[r],t[r]=n;}Pi(Za,\"FeaturePositionMap\");class Ya{constructor(t){this.gl=t.gl,this.initialized=!1;}fetchUniformLocation(t,e){return this.location||this.initialized||(this.location=this.gl.getUniformLocation(t,e),this.initialized=!0),!!this.location}}class Wa extends Ya{constructor(t){super(t),this.current=0;}set(t,e,r){this.fetchUniformLocation(t,e)&&this.current!==r&&(this.current=r,this.gl.uniform1f(this.location,r));}}class Ja extends Ya{constructor(t){super(t),this.current=[0,0,0,0];}set(t,e,r){this.fetchUniformLocation(t,e)&&(r[0]===this.current[0]&&r[1]===this.current[1]&&r[2]===this.current[2]&&r[3]===this.current[3]||(this.current=r,this.gl.uniform4f(this.location,r[0],r[1],r[2],r[3])));}}class Qa extends Ya{constructor(t){super(t),this.current=xe.transparent;}set(t,e,r){this.fetchUniformLocation(t,e)&&(r.r===this.current.r&&r.g===this.current.g&&r.b===this.current.b&&r.a===this.current.a||(this.current=r,this.gl.uniform4f(this.location,r.r,r.g,r.b,r.a)));}}const to=new Float32Array(16),eo=new Float32Array(9),ro=new Float32Array(4);function no(t){return [Xs(255*t.r,255*t.g),Xs(255*t.b,255*t.a)]}class io{constructor(t,e,r){this.value=t,this.uniformNames=e.map((t=>`u_${t}`)),this.type=r;}setUniform(t,e,r,n,i){e.set(t,i,n.constantOr(this.value));}getBinding(t,e){return \"color\"===this.type?new Qa(t):new Wa(t)}}class so{constructor(t,e){this.uniformNames=e.map((t=>`u_${t}`)),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1;}setConstantPatternPositions(t,e){this.pixelRatioFrom=e.pixelRatio||1,this.pixelRatioTo=t.pixelRatio||1,this.patternFrom=e.tl.concat(e.br),this.patternTo=t.tl.concat(t.br);}setUniform(t,e,r,n,i){const s=\"u_pattern_to\"===i||\"u_dash_to\"===i?this.patternTo:\"u_pattern_from\"===i||\"u_dash_from\"===i?this.patternFrom:\"u_pixel_ratio_to\"===i?this.pixelRatioTo:\"u_pixel_ratio_from\"===i?this.pixelRatioFrom:null;s&&e.set(t,i,s);}getBinding(t,e){return \"u_pattern_from\"===e||\"u_pattern_to\"===e||\"u_dash_from\"===e||\"u_dash_to\"===e?new Ja(t):new Wa(t)}}class ao{constructor(t,e,r,n){this.expression=t,this.type=r,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:\"Float32\",components:\"color\"===r?2:1,offset:0}))),this.paintVertexArray=new n;}populatePaintArray(t,e,r,n,i,s){const a=this.paintVertexArray.length,o=this.expression.evaluate(new Cs(0),e,{},i,n,s);this.paintVertexArray.resize(t),this._setPaintValue(a,t,o);}updatePaintArray(t,e,r,n,i){const s=this.expression.evaluate({zoom:0},r,n,void 0,i);this._setPaintValue(t,e,s);}_setPaintValue(t,e,r){if(\"color\"===this.type){const n=no(r);for(let r=t;r<e;r++)this.paintVertexArray.emplace(r,n[0],n[1]);}else {for(let n=t;n<e;n++)this.paintVertexArray.emplace(n,r);this.maxValue=Math.max(this.maxValue,Math.abs(r));}}upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}}class oo{constructor(t,e,r,n,i,s){this.expression=t,this.uniformNames=e.map((t=>`u_${t}_t`)),this.type=r,this.useIntegerZoom=n,this.zoom=i,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:\"Float32\",components:\"color\"===r?4:2,offset:0}))),this.paintVertexArray=new s;}populatePaintArray(t,e,r,n,i,s){const a=this.expression.evaluate(new Cs(this.zoom),e,{},i,n,s),o=this.expression.evaluate(new Cs(this.zoom+1),e,{},i,n,s),l=this.paintVertexArray.length;this.paintVertexArray.resize(t),this._setPaintValue(l,t,a,o);}updatePaintArray(t,e,r,n,i){const s=this.expression.evaluate({zoom:this.zoom},r,n,void 0,i),a=this.expression.evaluate({zoom:this.zoom+1},r,n,void 0,i);this._setPaintValue(t,e,s,a);}_setPaintValue(t,e,r,n){if(\"color\"===this.type){const i=no(r),s=no(n);for(let r=t;r<e;r++)this.paintVertexArray.emplace(r,i[0],i[1],s[0],s[1]);}else {for(let i=t;i<e;i++)this.paintVertexArray.emplace(i,r,n);this.maxValue=Math.max(this.maxValue,Math.abs(r),Math.abs(n));}}upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}setUniform(t,e,r,n,i){const s=this.useIntegerZoom?Math.floor(r.zoom):r.zoom,a=d(this.expression.interpolationFactor(s,this.zoom,this.zoom+1),0,1);e.set(t,i,a);}getBinding(t,e){return new Wa(t)}}class lo{constructor(t,e,r,n,i,s,a){this.expression=t,this.type=r,this.useIntegerZoom=n,this.zoom=i,this.layerId=a,this.paintVertexAttributes=(\"array\"===r?$a:ja).members;for(let t=0;t<e.length;++t);this.zoomInPaintVertexArray=new s,this.zoomOutPaintVertexArray=new s;}populatePaintArray(t,e,r){const n=this.zoomInPaintVertexArray.length;this.zoomInPaintVertexArray.resize(t),this.zoomOutPaintVertexArray.resize(t),this._setPaintValues(n,t,e.patterns&&e.patterns[this.layerId],r);}updatePaintArray(t,e,r,n,i,s){this._setPaintValues(t,e,r.patterns&&r.patterns[this.layerId],s);}_setPaintValues(t,e,r,n){if(!n||!r)return;const{min:i,mid:s,max:a}=r,o=n[i],l=n[s],u=n[a];if(o&&l&&u)for(let r=t;r<e;r++)this._setPaintValue(this.zoomInPaintVertexArray,r,l,o),this._setPaintValue(this.zoomOutPaintVertexArray,r,l,u);}_setPaintValue(t,e,r,n){t.emplace(e,r.tl[0],r.tl[1],r.br[0],r.br[1],n.tl[0],n.tl[1],n.br[0],n.br[1],r.pixelRatio,n.pixelRatio);}upload(t){this.zoomInPaintVertexArray&&this.zoomInPaintVertexArray.arrayBuffer&&this.zoomOutPaintVertexArray&&this.zoomOutPaintVertexArray.arrayBuffer&&(this.zoomInPaintVertexBuffer=t.createVertexBuffer(this.zoomInPaintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=t.createVertexBuffer(this.zoomOutPaintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy();}}class uo{constructor(t,e,r=(()=>!0)){this.binders={},this._buffers=[];const n=[];for(const i in t.paint._values){if(!r(i))continue;const s=t.paint.get(i);if(!(s instanceof Us&&An(s.property.specification)))continue;const a=po(i,t.type),o=s.value,l=s.property.specification.type,u=s.property.useIntegerZoom,c=s.property.specification[\"property-type\"],h=\"cross-faded\"===c||\"cross-faded-data-driven\"===c,p=\"line-dasharray\"===String(i)&&\"constant\"!==t.layout.get(\"line-cap\").value.kind;if(\"constant\"!==o.kind||p)if(\"source\"===o.kind||p||h){const r=mo(i,l,\"source\");this.binders[i]=h?new lo(o,a,l,u,e,r,t.id):new ao(o,a,l,r),n.push(`/a_${i}`);}else {const t=mo(i,l,\"composite\");this.binders[i]=new oo(o,a,l,u,e,t),n.push(`/z_${i}`);}else this.binders[i]=h?new so(o.value,a):new io(o.value,a,l),n.push(`/u_${i}`);}this.cacheKey=n.sort().join(\"\");}getMaxValue(t){const e=this.binders[t];return e instanceof ao||e instanceof oo?e.maxValue:0}populatePaintArrays(t,e,r,n,i,s){for(const a in this.binders){const o=this.binders[a];(o instanceof ao||o instanceof oo||o instanceof lo)&&o.populatePaintArray(t,e,r,n,i,s);}}setConstantPatternPositions(t,e){for(const r in this.binders){const n=this.binders[r];n instanceof so&&n.setConstantPatternPositions(t,e);}}updatePaintArrays(t,e,r,n,i,s){let a=!1;for(const o in t){const l=e.getPositions(o);for(const e of l){const l=r.feature(e.index);for(const r in this.binders){const u=this.binders[r];if((u instanceof ao||u instanceof oo||u instanceof lo)&&!0===u.expression.isStateDependent){const c=n.paint.get(r);u.expression=c.value,u.updatePaintArray(e.start,e.end,l,t[o],i,s),a=!0;}}}}return a}defines(){const t=[];for(const e in this.binders){const r=this.binders[e];(r instanceof io||r instanceof so)&&t.push(...r.uniformNames.map((t=>`#define HAS_UNIFORM_${t}`)));}return t}getBinderAttributes(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof ao||r instanceof oo||r instanceof lo)for(let e=0;e<r.paintVertexAttributes.length;e++)t.push(r.paintVertexAttributes[e].name);}return t}getBinderUniforms(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof io||r instanceof so||r instanceof oo)for(const e of r.uniformNames)t.push(e);}return t}getPaintVertexBuffers(){return this._buffers}getUniforms(t){const e=[];for(const r in this.binders){const n=this.binders[r];if(n instanceof io||n instanceof so||n instanceof oo)for(const i of n.uniformNames)e.push({name:i,property:r,binding:n.getBinding(t,i)});}return e}setUniforms(t,e,r,n,i){for(const{name:e,property:s,binding:a}of r)this.binders[s].setUniform(t,a,i,n.get(s),e);}updatePaintBuffers(t){this._buffers=[];for(const e in this.binders){const r=this.binders[e];if(t&&r instanceof lo){const e=2===t.fromScale?r.zoomInPaintVertexBuffer:r.zoomOutPaintVertexBuffer;e&&this._buffers.push(e);}else (r instanceof ao||r instanceof oo)&&r.paintVertexBuffer&&this._buffers.push(r.paintVertexBuffer);}}upload(t){for(const e in this.binders){const r=this.binders[e];(r instanceof ao||r instanceof oo||r instanceof lo)&&r.upload(t);}this.updatePaintBuffers();}destroy(){for(const t in this.binders){const e=this.binders[t];(e instanceof ao||e instanceof oo||e instanceof lo)&&e.destroy();}}}class co{constructor(t,e,r=(()=>!0)){this.programConfigurations={};for(const n of t)this.programConfigurations[n.id]=new uo(n,e,r);this.needsUpload=!1,this._featureMap=new Za,this._bufferOffset=0;}populatePaintArrays(t,e,r,n,i,s,a){for(const r in this.programConfigurations)this.programConfigurations[r].populatePaintArrays(t,e,n,i,s,a);void 0!==e.id&&this._featureMap.add(e.id,r,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0;}updatePaintArrays(t,e,r,n,i){for(const s of r)this.needsUpload=this.programConfigurations[s.id].updatePaintArrays(t,this._featureMap,e,s,n,i)||this.needsUpload;}get(t){return this.programConfigurations[t]}upload(t){if(this.needsUpload){for(const e in this.programConfigurations)this.programConfigurations[e].upload(t);this.needsUpload=!1;}}destroy(){for(const t in this.programConfigurations)this.programConfigurations[t].destroy();}}const ho={\"text-opacity\":[\"opacity\"],\"icon-opacity\":[\"opacity\"],\"text-color\":[\"fill_color\"],\"icon-color\":[\"fill_color\"],\"text-halo-color\":[\"halo_color\"],\"icon-halo-color\":[\"halo_color\"],\"text-halo-blur\":[\"halo_blur\"],\"icon-halo-blur\":[\"halo_blur\"],\"text-halo-width\":[\"halo_width\"],\"icon-halo-width\":[\"halo_width\"],\"line-gap-width\":[\"gapwidth\"],\"line-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-extrusion-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"line-dasharray\":[\"dash_to\",\"dash_from\"]};function po(t,e){return ho[t]||[t.replace(`${e}-`,\"\").replace(/-/g,\"_\")]}const fo={\"line-pattern\":{source:ia,composite:ia},\"fill-pattern\":{source:ia,composite:ia},\"fill-extrusion-pattern\":{source:ia,composite:ia},\"line-dasharray\":{source:sa,composite:sa}},yo={color:{source:Aa,composite:na},number:{source:xa,composite:Aa}};function mo(t,e,r){const n=fo[t];return n&&n[r]||yo[e][r]}Pi(io,\"ConstantBinder\"),Pi(so,\"CrossFadedConstantBinder\"),Pi(ao,\"SourceExpressionBinder\"),Pi(lo,\"CrossFadedCompositeBinder\"),Pi(oo,\"CompositeExpressionBinder\"),Pi(uo,\"ProgramConfiguration\",{omit:[\"_buffers\"]}),Pi(co,\"ProgramConfigurationSet\");const go=\"-transition\";class xo extends Nt{constructor(t,e){if(super(),this.id=t.id,this.type=t.type,this._featureFilter={filter:()=>!0,needGeometry:!1,needFeature:!1},this._filterCompiled=!1,\"custom\"!==t.type&&(this.metadata=(t=t).metadata,this.minzoom=t.minzoom,this.maxzoom=t.maxzoom,\"background\"!==t.type&&\"sky\"!==t.type&&(this.source=t.source,this.sourceLayer=t[\"source-layer\"],this.filter=t.filter),e.layout&&(this._unevaluatedLayout=new Rs(e.layout)),e.paint)){this._transitionablePaint=new Vs(e.paint);for(const e in t.paint)this.setPaintProperty(e,t.paint[e],{validate:!1});for(const e in t.layout)this.setLayoutProperty(e,t.layout[e],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new js(e.paint);}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(t){return \"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)}setLayoutProperty(t,e,r={}){null!=e&&this._validate(Mi,`layers.${this.id}.layout.${t}`,t,e,r)||(\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e);}getPaintProperty(t){return I(t,go)?this._transitionablePaint.getTransition(t.slice(0,-go.length)):this._transitionablePaint.getValue(t)}setPaintProperty(t,e,r={}){if(null!=e&&this._validate(Ii,`layers.${this.id}.paint.${t}`,t,e,r))return !1;if(I(t,go))return this._transitionablePaint.setTransition(t.slice(0,-go.length),e||void 0),!1;{const r=this._transitionablePaint._values[t],n=\"cross-faded-data-driven\"===r.property.specification[\"property-type\"],i=r.value.isDataDriven(),s=r.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);const a=this._transitionablePaint._values[t].value;return a.isDataDriven()||i||n||this._handleOverridablePaintPropertyUpdate(t,s,a)}}_handleSpecialPaintPropertyUpdate(t){}getProgramIds(){return null}getProgramConfiguration(t){return null}_handleOverridablePaintPropertyUpdate(t,e,r){return !1}isHidden(t){return !!(this.minzoom&&t<this.minzoom)||!!(this.maxzoom&&t>=this.maxzoom)||\"none\"===this.visibility}updateTransitions(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint);}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e);}serialize(){const t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),z(t,((t,e)=>!(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)))}_validate(t,e,r,n,i={}){return (!i||!1!==i.validate)&&Ti(this,t.call(ki,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:Gt,style:{glyphs:!0,sprite:!0}}))}is3D(){return !1}isSky(){return !1}isTileClipped(){return !1}hasOffscreenPass(){return !1}resize(){}isStateDependent(){for(const t in this.paint._values){const e=this.paint.get(t);if(e instanceof Us&&An(e.property.specification)&&(\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent)return !0}return !1}compileFilter(){this._filterCompiled||(this._featureFilter=Jn(this.filter),this._filterCompiled=!0);}invalidateCompiledFilter(){this._filterCompiled=!1;}dynamicFilter(){return this._featureFilter.dynamicFilter}dynamicFilterNeedsFeature(){return this._featureFilter.needFeature}}const vo=Ws([{name:\"a_pos\",components:2,type:\"Int16\"}],4),bo=Ws([{name:\"a_pos_3\",components:3,type:\"Int16\"},{name:\"a_pos_normal_3\",components:3,type:\"Int16\"}]);class _o{constructor(t=[]){this.segments=t;}prepareSegment(t,e,r,n){let i=this.segments[this.segments.length-1];return t>_o.MAX_VERTEX_ARRAY_LENGTH&&E(`Max vertices per segment is ${_o.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${t}`),(!i||i.vertexLength+t>_o.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i}get(){return this.segments}destroy(){for(const t of this.segments)for(const e in t.vaos)t.vaos[e].destroy();}static simpleSegment(t,e,r,n){return new _o([{vertexOffset:t,primitiveOffset:e,vertexLength:r,primitiveLength:n,vaos:{},sortKey:0}])}}_o.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Pi(_o,\"SegmentVector\");var wo=8192;class Ao{constructor(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]));}setNorthEast(t){return this._ne=t instanceof ko?new ko(t.lng,t.lat):ko.convert(t),this}setSouthWest(t){return this._sw=t instanceof ko?new ko(t.lng,t.lat):ko.convert(t),this}extend(t){const e=this._sw,r=this._ne;let n,i;if(t instanceof ko)n=t,i=t;else {if(!(t instanceof Ao))return Array.isArray(t)?4===t.length||t.every(Array.isArray)?this.extend(Ao.convert(t)):this.extend(ko.convert(t)):this;if(n=t._sw,i=t._ne,!n||!i)return this}return e||r?(e.lng=Math.min(n.lng,e.lng),e.lat=Math.min(n.lat,e.lat),r.lng=Math.max(i.lng,r.lng),r.lat=Math.max(i.lat,r.lat)):(this._sw=new ko(n.lng,n.lat),this._ne=new ko(i.lng,i.lat)),this}getCenter(){return new ko((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new ko(this.getWest(),this.getNorth())}getSouthEast(){return new ko(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return [this._sw.toArray(),this._ne.toArray()]}toString(){return `LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return !(this._sw&&this._ne)}contains(t){const{lng:e,lat:r}=ko.convert(t);let n=this._sw.lng<=e&&e<=this._ne.lng;return this._sw.lng>this._ne.lng&&(n=this._sw.lng>=e&&e>=this._ne.lng),this._sw.lat<=r&&r<=this._ne.lat&&n}static convert(t){return !t||t instanceof Ao?t:new Ao(t)}}const So=6371008.8;class ko{constructor(t,e){if(isNaN(t)||isNaN(e))throw new Error(`Invalid LngLat object: (${t}, ${e})`);if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")}wrap(){return new ko(m(this.lng,-180,180),this.lat)}toArray(){return [this.lng,this.lat]}toString(){return `LngLat(${this.lng}, ${this.lat})`}distanceTo(t){const e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return So*Math.acos(Math.min(i,1))}toBounds(t=0){const e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new Ao(new ko(this.lng-r,this.lat-e),new ko(this.lng+r,this.lat+e))}static convert(t){if(t instanceof ko)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new ko(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new ko(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]\")}}const Io=2*Math.PI*So;function Mo(t){return Io*Math.cos(t*Math.PI/180)}function zo(t){return (180+t)/360}function To(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Bo(t,e){return t/Mo(e)}function Eo(t){return 360*t-180}function Co(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180))-90}function Po(t,e){return t*Mo(Co(e))}const Do=85.051129;function Vo(t){return 1/Math.cos(t*Math.PI/180)}class Fo{constructor(t,e,r=0){this.x=+t,this.y=+e,this.z=+r;}static fromLngLat(t,e=0){const r=ko.convert(t);return new Fo(zo(r.lng),To(r.lat),Bo(e,r.lat))}toLngLat(){return new ko(Eo(this.x),Co(this.y))}toAltitude(){return Po(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/Io*Vo(Co(this.y))}}function Lo(t,e,r,n,s,a,o,l,u){const c=(e+n)/2,h=(r+s)/2,p=new i(c,h);l(p),function(t,e,r,n,i,s){const a=r-i,o=n-s;return Math.abs((n-e)*a-(r-t)*o)/Math.hypot(a,o)}(p.x,p.y,a.x,a.y,o.x,o.y)>=u?(Lo(t,e,r,c,h,a,p,l,u),Lo(t,c,h,n,s,p,o,l,u)):t.push(o);}function Ro(t,e,r){let n=t[0],i=n.x,s=n.y;e(n);const a=[n];for(let o=1;o<t.length;o++){const l=t[o],{x:u,y:c}=l;e(l),Lo(a,i,s,u,c,n,l,e,r),i=u,s=c,n=l;}return a}function Uo(t,e,r,n,i){if(i(e,r)){const s=e.add(r).mult(.5);n(s),Uo(t,e,s,n,i),Uo(t,s,r,n,i);}else t.push(r);}function jo(t,e,r){let n=t[0];e(n);const i=[n];for(let s=1;s<t.length;s++){const a=t[s];e(a),Uo(i,n,a,e,r),n=a;}return i}const $o=Math.pow(2,14)-1,Oo=-$o-1;function qo(t,e){const r=Math.round(t.x*e),n=Math.round(t.y*e);return t.x=d(r,Oo,$o),t.y=d(n,Oo,$o),(r<t.x||r>t.x+1||n<t.y||n>t.y+1)&&E(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\"),t}function No(t,e,r){const n=t.loadGeometry(),i=t.extent,s=wo/i;if(e&&r&&r.projection.isReprojectedInTileSpace){const s=1<<e.z,{scale:a,x:o,y:l,projection:u}=r,c=t=>{const r=Eo((e.x+t.x/i)/s),n=Co((e.y+t.y/i)/s),c=u.project(r,n);t.x=(c.x*a-o)*i,t.y=(c.y*a-l)*i;};for(let e=0;e<n.length;e++)if(1!==t.type)n[e]=Ro(n[e],c,1);else {const t=[];for(const r of n[e])r.x<0||r.x>=i||r.y<0||r.y>=i||(c(r),t.push(r));n[e]=t;}}for(const t of n)for(const e of t)qo(e,s);return n}function Go(t,e){return {type:t.type,id:t.id,properties:t.properties,geometry:e?No(t):[]}}function Zo(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2);}function Xo(t,e,r){const n=16384;t.emplaceBack(e.x,e.y,e.z,r[0]*n,r[1]*n,r[2]*n);}class Ko{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.projection=t.projection,this.layoutVertexArray=new Qs,this.indexArray=new ya,this.segments=new _o,this.programConfigurations=new co(t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r,n){const i=this.layers[0],s=[];let a=null;\"circle\"===i.type&&(a=i.layout.get(\"circle-sort-key\"));for(const{feature:e,id:i,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=Go(e,t);if(!this.layers[0]._featureFilter.filter(new Cs(this.zoom),u,r))continue;const c=a?a.evaluate(u,{},r):void 0,h={id:i,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:No(e,r,n),patterns:{},sortKey:c};s.push(h);}a&&s.sort(((t,e)=>t.sortKey-e.sortKey));let o=null;\"globe\"===n.projection.name&&(this.globeExtVertexArray=new Ua,o=n.projection);for(const n of s){const{geometry:i,index:s,sourceLayerIndex:a}=n,l=t[s].feature;this.addFeature(n,i,s,e.availableImages,r,o),e.featureIndex.insert(l,i,s,a,this.index);}}update(t,e,r,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r,n);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,vo.members),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.globeExtVertexArray&&(this.globeExtVertexBuffer=t.createVertexBuffer(this.globeExtVertexArray,bo.members))),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.globeExtVertexBuffer&&this.globeExtVertexBuffer.destroy());}addFeature(t,e,r,n,i,s){for(const r of e)for(const e of r){const r=e.x,n=e.y;if(r<0||r>=wo||n<0||n>=wo)continue;if(s){const t=s.projectTilePoint(r,n,i),e=s.upVector(i,r,n),a=this.globeExtVertexArray;Xo(a,t,e),Xo(a,t,e),Xo(a,t,e),Xo(a,t,e);}const a=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),o=a.vertexLength;Zo(this.layoutVertexArray,r,n,-1,-1),Zo(this.layoutVertexArray,r,n,1,-1),Zo(this.layoutVertexArray,r,n,1,1),Zo(this.layoutVertexArray,r,n,-1,1),this.indexArray.emplaceBack(o,o+1,o+2),this.indexArray.emplaceBack(o,o+2,o+3),a.vertexLength+=4,a.primitiveLength+=2;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n,i);}}function Ho(t,e){for(let r=0;r<t.length;r++)if(il(e,t[r]))return !0;for(let r=0;r<e.length;r++)if(il(t,e[r]))return !0;return !!Qo(t,e)}function Yo(t,e,r){return !!il(t,e)||!!el(e,t,r)}function Wo(t,e){if(1===t.length)return nl(e,t[0]);for(let r=0;r<e.length;r++){const n=e[r];for(let e=0;e<n.length;e++)if(il(t,n[e]))return !0}for(let r=0;r<t.length;r++)if(nl(e,t[r]))return !0;for(let r=0;r<e.length;r++)if(Qo(t,e[r]))return !0;return !1}function Jo(t,e,r){if(t.length>1){if(Qo(t,e))return !0;for(let n=0;n<e.length;n++)if(el(e[n],t,r))return !0}for(let n=0;n<t.length;n++)if(el(t[n],e,r))return !0;return !1}function Qo(t,e){if(0===t.length||0===e.length)return !1;for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1];for(let t=0;t<e.length-1;t++)if(tl(n,i,e[t],e[t+1]))return !0}return !1}function tl(t,e,r,n){return C(t,r,n)!==C(e,r,n)&&C(t,e,r)!==C(t,e,n)}function el(t,e,r){const n=r*r;if(1===e.length)return t.distSqr(e[0])<n;for(let r=1;r<e.length;r++)if(rl(t,e[r-1],e[r])<n)return !0;return !1}function rl(t,e,r){const n=e.distSqr(r);if(0===n)return t.distSqr(e);const i=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/n;return t.distSqr(i<0?e:i>1?r:r.sub(e)._mult(i)._add(e))}function nl(t,e){let r,n,i,s=!1;for(let a=0;a<t.length;a++){r=t[a];for(let t=0,a=r.length-1;t<r.length;a=t++)n=r[t],i=r[a],n.y>e.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(s=!s);}return s}function il(t,e){let r=!1;for(let n=0,i=t.length-1;n<t.length;i=n++){const s=t[n],a=t[i];s.y>e.y!=a.y>e.y&&e.x<(a.x-s.x)*(e.y-s.y)/(a.y-s.y)+s.x&&(r=!r);}return r}function sl(t,e,r,n,s){for(const i of t)if(e<=i.x&&r<=i.y&&n>=i.x&&s>=i.y)return !0;const a=[new i(e,r),new i(e,s),new i(n,s),new i(n,r)];if(t.length>2)for(const e of a)if(il(t,e))return !0;for(let e=0;e<t.length-1;e++)if(al(t[e],t[e+1],a))return !0;return !1}function al(t,e,r){const n=r[0],i=r[2];if(t.x<n.x&&e.x<n.x||t.x>i.x&&e.x>i.x||t.y<n.y&&e.y<n.y||t.y>i.y&&e.y>i.y)return !1;const s=C(t,e,r[0]);return s!==C(t,e,r[1])||s!==C(t,e,r[2])||s!==C(t,e,r[3])}function ol(t,e,r){const n=e.paint.get(t).value;return \"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function ll(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function ul(t,e,r,n,s){if(!e[0]&&!e[1])return t;const a=i.convert(e)._mult(s);\"viewport\"===r&&a._rotate(-n);const o=[];for(let e=0;e<t.length;e++)o.push(t[e].sub(a));return o}function cl(t,e,r,n){const s=i.convert(t)._mult(n);return \"viewport\"===e&&s._rotate(-r),s}Pi(Ko,\"CircleBucket\",{omit:[\"layers\"]});const hl=new Zs({\"circle-sort-key\":new Os(Gt.layout_circle[\"circle-sort-key\"])});var pl={paint:new Zs({\"circle-radius\":new Os(Gt.paint_circle[\"circle-radius\"]),\"circle-color\":new Os(Gt.paint_circle[\"circle-color\"]),\"circle-blur\":new Os(Gt.paint_circle[\"circle-blur\"]),\"circle-opacity\":new Os(Gt.paint_circle[\"circle-opacity\"]),\"circle-translate\":new $s(Gt.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new $s(Gt.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new $s(Gt.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new $s(Gt.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new Os(Gt.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new Os(Gt.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new Os(Gt.paint_circle[\"circle-stroke-opacity\"])}),layout:hl},fl=1e-6,dl=\"undefined\"!=typeof Float32Array?Float32Array:Array;function yl(){var t=new dl(9);return dl!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function ml(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function gl(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],l=e[6],u=e[7],c=e[8],h=e[9],p=e[10],f=e[11],d=e[12],y=e[13],m=e[14],g=e[15],x=r*o-n*a,v=r*l-i*a,b=r*u-s*a,_=n*l-i*o,w=n*u-s*o,A=i*u-s*l,S=c*y-h*d,k=c*m-p*d,I=c*g-f*d,M=h*m-p*y,z=h*g-f*y,T=p*g-f*m,B=x*T-v*z+b*M+_*I-w*k+A*S;return B?(t[0]=(o*T-l*z+u*M)*(B=1/B),t[1]=(i*z-n*T-s*M)*B,t[2]=(y*A-m*w+g*_)*B,t[3]=(p*w-h*A-f*_)*B,t[4]=(l*I-a*T-u*k)*B,t[5]=(r*T-i*I+s*k)*B,t[6]=(m*b-d*A-g*v)*B,t[7]=(c*A-p*b+f*v)*B,t[8]=(a*z-o*I+u*S)*B,t[9]=(n*I-r*z-s*S)*B,t[10]=(d*w-y*b+g*x)*B,t[11]=(h*b-c*w-f*x)*B,t[12]=(o*k-a*M-l*S)*B,t[13]=(r*M-n*k+i*S)*B,t[14]=(y*v-d*_-m*x)*B,t[15]=(c*_-h*v+p*x)*B,t):null}function xl(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],y=e[12],m=e[13],g=e[14],x=e[15],v=r[0],b=r[1],_=r[2],w=r[3];return t[0]=v*n+b*o+_*h+w*y,t[1]=v*i+b*l+_*p+w*m,t[2]=v*s+b*u+_*f+w*g,t[3]=v*a+b*c+_*d+w*x,t[4]=(v=r[4])*n+(b=r[5])*o+(_=r[6])*h+(w=r[7])*y,t[5]=v*i+b*l+_*p+w*m,t[6]=v*s+b*u+_*f+w*g,t[7]=v*a+b*c+_*d+w*x,t[8]=(v=r[8])*n+(b=r[9])*o+(_=r[10])*h+(w=r[11])*y,t[9]=v*i+b*l+_*p+w*m,t[10]=v*s+b*u+_*f+w*g,t[11]=v*a+b*c+_*d+w*x,t[12]=(v=r[12])*n+(b=r[13])*o+(_=r[14])*h+(w=r[15])*y,t[13]=v*i+b*l+_*p+w*m,t[14]=v*s+b*u+_*f+w*g,t[15]=v*a+b*c+_*d+w*x,t}function vl(t,e,r){var n,i,s,a,o,l,u,c,h,p,f,d,y=r[0],m=r[1],g=r[2];return e===t?(t[12]=e[0]*y+e[4]*m+e[8]*g+e[12],t[13]=e[1]*y+e[5]*m+e[9]*g+e[13],t[14]=e[2]*y+e[6]*m+e[10]*g+e[14],t[15]=e[3]*y+e[7]*m+e[11]*g+e[15]):(i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],t[0]=n=e[0],t[1]=i,t[2]=s,t[3]=a,t[4]=o,t[5]=l,t[6]=u,t[7]=c,t[8]=h,t[9]=p,t[10]=f,t[11]=d,t[12]=n*y+o*m+h*g+e[12],t[13]=i*y+l*m+p*g+e[13],t[14]=s*y+u*m+f*g+e[14],t[15]=a*y+c*m+d*g+e[15]),t}function bl(t,e,r){var n=r[0],i=r[1],s=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*s,t[9]=e[9]*s,t[10]=e[10]*s,t[11]=e[11]*s,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function _l(t,e,r){var n=Math.sin(r),i=Math.cos(r),s=e[4],a=e[5],o=e[6],l=e[7],u=e[8],c=e[9],h=e[10],p=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=s*i+u*n,t[5]=a*i+c*n,t[6]=o*i+h*n,t[7]=l*i+p*n,t[8]=u*i-s*n,t[9]=c*i-a*n,t[10]=h*i-o*n,t[11]=p*i-l*n,t}function wl(t,e,r){var n=Math.sin(r),i=Math.cos(r),s=e[0],a=e[1],o=e[2],l=e[3],u=e[8],c=e[9],h=e[10],p=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=s*i-u*n,t[1]=a*i-c*n,t[2]=o*i-h*n,t[3]=l*i-p*n,t[8]=s*n+u*i,t[9]=a*n+c*i,t[10]=o*n+h*i,t[11]=l*n+p*i,t}function Al(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Sl(t,e,r){var n,i,s,a=r[0],o=r[1],l=r[2],u=Math.hypot(a,o,l);return u<fl?null:(a*=u=1/u,o*=u,l*=u,n=Math.sin(e),i=Math.cos(e),t[0]=a*a*(s=1-i)+i,t[1]=o*a*s+l*n,t[2]=l*a*s-o*n,t[3]=0,t[4]=a*o*s-l*n,t[5]=o*o*s+i,t[6]=l*o*s+a*n,t[7]=0,t[8]=a*l*s+o*n,t[9]=o*l*s-a*n,t[10]=l*l*s+i,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});var kl=xl;function Il(){var t=new dl(3);return dl!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function Ml(t){var e=new dl(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function zl(t){return Math.hypot(t[0],t[1],t[2])}function Tl(t,e,r){var n=new dl(3);return n[0]=t,n[1]=e,n[2]=r,n}function Bl(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function El(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function Cl(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function Pl(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t}function Dl(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t}function Vl(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function Fl(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t}function Ll(t,e){var r=e[0],n=e[1],i=e[2],s=r*r+n*n+i*i;return s>0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t[2]=e[2]*s,t}function Rl(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Ul(t,e,r){var n=e[0],i=e[1],s=e[2],a=r[0],o=r[1],l=r[2];return t[0]=i*l-s*o,t[1]=s*a-n*l,t[2]=n*o-i*a,t}function jl(t,e,r){var n=e[0],i=e[1],s=e[2],a=r[3]*n+r[7]*i+r[11]*s+r[15];return t[0]=(r[0]*n+r[4]*i+r[8]*s+r[12])/(a=a||1),t[1]=(r[1]*n+r[5]*i+r[9]*s+r[13])/a,t[2]=(r[2]*n+r[6]*i+r[10]*s+r[14])/a,t}function $l(t,e,r){var n=r[0],i=r[1],s=r[2],a=e[0],o=e[1],l=e[2],u=i*l-s*o,c=s*a-n*l,h=n*o-i*a,p=i*h-s*c,f=s*u-n*h,d=n*c-i*u,y=2*r[3];return c*=y,h*=y,f*=2,d*=2,t[0]=a+(u*=y)+(p*=2),t[1]=o+c+f,t[2]=l+h+d,t}var Ol,ql=El,Nl=Cl,Gl=zl;function Zl(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t}function Xl(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*s+r[12]*a,t[1]=r[1]*n+r[5]*i+r[9]*s+r[13]*a,t[2]=r[2]*n+r[6]*i+r[10]*s+r[14]*a,t[3]=r[3]*n+r[7]*i+r[11]*s+r[15]*a,t}function Kl(){var t=new dl(4);return dl!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function Hl(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function Yl(t,e,r){r*=.5;var n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),l=Math.cos(r);return t[0]=n*l+a*o,t[1]=i*l+s*o,t[2]=s*l-i*o,t[3]=a*l-n*o,t}function Wl(t,e,r){r*=.5;var n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),l=Math.cos(r);return t[0]=n*l-s*o,t[1]=i*l+a*o,t[2]=s*l+n*o,t[3]=a*l-i*o,t}Il(),Ol=new dl(4),dl!=Float32Array&&(Ol[0]=0,Ol[1]=0,Ol[2]=0,Ol[3]=0),Il(),Tl(1,0,0),Tl(0,1,0),Kl(),Kl(),yl();class Jl{constructor(t,e){this.pos=t,this.dir=e;}intersectsPlane(t,e,r){const n=Rl(e,this.dir);if(Math.abs(n)<1e-6)return !1;const i=((t[0]-this.pos[0])*e[0]+(t[1]-this.pos[1])*e[1]+(t[2]-this.pos[2])*e[2])/n;return r[0]=this.pos[0]+this.dir[0]*i,r[1]=this.pos[1]+this.dir[1]*i,r[2]=this.pos[2]+this.dir[2]*i,!0}closestPointOnSphere(t,e,r){if(function(t,e){var r=t[0],n=t[1],i=t[2],s=e[0],a=e[1],o=e[2];return Math.abs(r-s)<=fl*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(n-a)<=fl*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-o)<=fl*Math.max(1,Math.abs(i),Math.abs(o))}(this.pos,t)||0===e)return r[0]=r[1]=r[2]=0,!1;const[n,i,s]=this.dir,a=this.pos[0]-t[0],o=this.pos[1]-t[1],l=this.pos[2]-t[2],u=n*n+i*i+s*s,c=2*(a*n+o*i+l*s),h=c*c-4*u*(a*a+o*o+l*l-e*e);if(h<0){const t=Math.max(-c/2,0),u=a+n*t,h=o+i*t,p=l+s*t,f=Math.hypot(u,h,p);return r[0]=u*e/f,r[1]=h*e/f,r[2]=p*e/f,!1}{const t=(-c-Math.sqrt(h))/(2*u);if(t<0){const t=Math.hypot(a,o,l);return r[0]=a*e/t,r[1]=o*e/t,r[2]=l*e/t,!1}return r[0]=a+n*t,r[1]=o+i*t,r[2]=l+s*t,!0}}}class Ql{constructor(t,e,r,n,i){this.TL=t,this.TR=e,this.BR=r,this.BL=n,this.horizon=i;}static fromInvProjectionMatrix(t,e,r){const n=[-1,1,1],i=[1,1,1],s=[1,-1,1],a=[-1,-1,1],o=jl(n,n,t),l=jl(i,i,t),u=jl(s,s,t),c=jl(a,a,t);return new Ql(o,l,u,c,e/r)}}class tu{constructor(t,e){this.points=t,this.planes=e;}static fromInvProjectionMatrix(t,e,r,n){const i=Math.pow(2,r),s=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((r=>{const s=Xl([],r,t),a=1/s[3]/e*i;return function(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t[3]=e[3]*r[3],t}(s,s,[a,a,n?1/s[3]:a,a])})),a=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((t=>{const e=Ll([],Ul([],ql([],s[t[0]],s[t[1]]),ql([],s[t[2]],s[t[1]]))),r=-Rl(e,s[t[1]]);return e.concat(r)}));return new tu(s,a)}}class eu{static fromPoints(t){const e=[Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE],r=[Number.MIN_VALUE,Number.MIN_VALUE,Number.MIN_VALUE];for(const n of t)e[0]=Math.min(e[0],n[0]),e[1]=Math.min(e[1],n[1]),e[2]=Math.min(e[2],n[2]),r[0]=Math.max(r[0],n[0]),r[1]=Math.max(r[1],n[1]),r[2]=Math.max(r[2],n[2]);return new eu(e,r)}constructor(t,e){this.min=t,this.max=e,this.center=Vl([],Bl([],this.min,this.max),.5);}quadrant(t){const e=[t%2==0,t<2],r=Ml(this.min),n=Ml(this.max);for(let t=0;t<e.length;t++)r[t]=e[t]?this.min[t]:this.center[t],n[t]=e[t]?this.center[t]:this.max[t];return n[2]=this.max[2],new eu(r,n)}distanceX(t){return Math.max(Math.min(this.max[0],t[0]),this.min[0])-t[0]}distanceY(t){return Math.max(Math.min(this.max[1],t[1]),this.min[1])-t[1]}distanceZ(t){return Math.max(Math.min(this.max[2],t[2]),this.min[2])-t[2]}getCorners(){const t=this.min,e=this.max;return [[t[0],t[1],t[2]],[e[0],t[1],t[2]],[e[0],e[1],t[2]],[t[0],e[1],t[2]],[t[0],t[1],e[2]],[e[0],t[1],e[2]],[e[0],e[1],e[2]],[t[0],e[1],e[2]]]}intersects(t){const e=this.getCorners();let r=!0;for(let n=0;n<t.planes.length;n++){const i=t.planes[n];let s=0;for(let t=0;t<e.length;t++)s+=Rl(i,e[t])+i[3]>=0;if(0===s)return 0;s!==e.length&&(r=!1);}if(r)return 2;for(let e=0;e<3;e++){let r=Number.MAX_VALUE,n=-Number.MAX_VALUE;for(let i=0;i<t.points.length;i++){const s=t.points[i][e]-this.min[e];r=Math.min(r,s),n=Math.max(n,s);}if(n<0||r>this.max[e]-this.min[e])return 0}return 1}}function ru(t,e,r,n,i,s,a,o,l){if(s&&t.queryGeometry.isAboveHorizon)return !1;s&&(l*=t.pixelToTileUnitsFactor);const u=t.tileID.canonical,c=r.projection.upVectorScale(u,r.center.lat,r.worldSize).metersToTile;for(const h of e)for(const e of h){const h=e.add(o),p=i&&r.elevation?r.elevation.exaggeration()*i.getElevationAt(h.x,h.y,!0):0,f=r.projection.projectTilePoint(h.x,h.y,u);if(p>0){const t=r.projection.upVector(u,h.x,h.y);f.x+=t[0]*c*p,f.y+=t[1]*c*p,f.z+=t[2]*c*p;}const d=s?h:nu(f.x,f.y,f.z,n),y=s?t.tilespaceRays.map((t=>au(t,p))):t.queryGeometry.screenGeometry,m=Xl([],[f.x,f.y,f.z,1],n);if(!a&&s?l*=m[3]/r.cameraToCenterDistance:a&&!s&&(l*=r.cameraToCenterDistance/m[3]),s){const t=Co((e.y/wo+u.y)/(1<<u.z));l/=r.projection.pixelsPerMeter(t,1)/Bo(1,t);}if(Yo(y,d,l))return !0}return !1}function nu(t,e,r,n){const s=Xl([],[t,e,r,1],n);return new i(s[0]/s[3],s[1]/s[3])}const iu=Tl(0,0,0),su=Tl(0,0,1);function au(t,e){const r=Il();return iu[2]=e,t.intersectsPlane(iu,su,r),new i(r[0],r[1])}class ou extends Ko{}function lu(t,{width:e,height:r},n,i){if(i){if(i instanceof Uint8ClampedArray)i=new Uint8Array(i.buffer);else if(i.length!==e*r*n)throw new RangeError(\"mismatched image size\")}else i=new Uint8Array(e*r*n);return t.width=e,t.height=r,t.data=i,t}function uu(t,e,r){const{width:n,height:i}=e;n===t.width&&i===t.height||(cu(t,e,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,n),height:Math.min(t.height,i)},r),t.width=n,t.height=i,t.data=e.data);}function cu(t,e,r,n,i,s){if(0===i.width||0===i.height)return e;if(i.width>t.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");const a=t.data,o=e.data;for(let l=0;l<i.height;l++){const u=((r.y+l)*t.width+r.x)*s,c=((n.y+l)*e.width+n.x)*s;for(let t=0;t<i.width*s;t++)o[c+t]=a[u+t];}return e}Pi(ou,\"HeatmapBucket\",{omit:[\"layers\"]});class hu{constructor(t,e){lu(this,t,1,e);}resize(t){uu(this,new hu(t),1);}clone(){return new hu({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(t,e,r,n,i){cu(t,e,r,n,i,1);}}class pu{constructor(t,e){lu(this,t,4,e);}resize(t){uu(this,new pu(t),4);}replace(t,e){e?this.data.set(t):this.data=t instanceof Uint8ClampedArray?new Uint8Array(t.buffer):t;}clone(){return new pu({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(t,e,r,n,i){cu(t,e,r,n,i,4);}}Pi(hu,\"AlphaImage\"),Pi(pu,\"RGBAImage\");var fu={paint:new Zs({\"heatmap-radius\":new Os(Gt.paint_heatmap[\"heatmap-radius\"]),\"heatmap-weight\":new Os(Gt.paint_heatmap[\"heatmap-weight\"]),\"heatmap-intensity\":new $s(Gt.paint_heatmap[\"heatmap-intensity\"]),\"heatmap-color\":new Gs(Gt.paint_heatmap[\"heatmap-color\"]),\"heatmap-opacity\":new $s(Gt.paint_heatmap[\"heatmap-opacity\"])})};function du(t){const e={},r=t.resolution||256,n=t.clips?t.clips.length:1,i=t.image||new pu({width:r,height:n}),s=(r,n,s)=>{e[t.evaluationKey]=s;const a=t.expression.evaluate(e);i.data[r+n+0]=Math.floor(255*a.r/a.a),i.data[r+n+1]=Math.floor(255*a.g/a.a),i.data[r+n+2]=Math.floor(255*a.b/a.a),i.data[r+n+3]=Math.floor(255*a.a);};if(t.clips)for(let e=0,i=0;e<n;++e,i+=4*r)for(let n=0,a=0;n<r;n++,a+=4){const o=n/(r-1),{start:l,end:u}=t.clips[e];s(i,a,l*(1-o)+u*o);}else for(let t=0,e=0;t<r;t++,e+=4)s(0,e,t/(r-1));return i}var yu={paint:new Zs({\"hillshade-illumination-direction\":new $s(Gt.paint_hillshade[\"hillshade-illumination-direction\"]),\"hillshade-illumination-anchor\":new $s(Gt.paint_hillshade[\"hillshade-illumination-anchor\"]),\"hillshade-exaggeration\":new $s(Gt.paint_hillshade[\"hillshade-exaggeration\"]),\"hillshade-shadow-color\":new $s(Gt.paint_hillshade[\"hillshade-shadow-color\"]),\"hillshade-highlight-color\":new $s(Gt.paint_hillshade[\"hillshade-highlight-color\"]),\"hillshade-accent-color\":new $s(Gt.paint_hillshade[\"hillshade-accent-color\"])})};const mu=Ws([{name:\"a_pos\",components:2,type:\"Int16\"}],4),{members:gu}=mu;var xu=bu,vu=bu;function bu(t,e,r){r=r||2;var n,i,s,a,o,l,u,c=e&&e.length,h=c?e[0]*r:t.length,p=_u(t,0,h,r,!0),f=[];if(!p||p.next===p.prev)return f;if(c&&(p=function(t,e,r,n){var i,s,a,o=[];for(i=0,s=e.length;i<s;i++)(a=_u(t,e[i]*n,i<s-1?e[i+1]*n:t.length,n,!1))===a.next&&(a.steiner=!0),o.push(Cu(a));for(o.sort(zu),i=0;i<o.length;i++)r=Tu(o[i],r);return r}(t,e,p,r)),t.length>80*r){n=s=t[0],i=a=t[1];for(var d=r;d<h;d+=r)(o=t[d])<n&&(n=o),(l=t[d+1])<i&&(i=l),o>s&&(s=o),l>a&&(a=l);u=0!==(u=Math.max(s-n,a-i))?32767/u:0;}return Au(p,f,r,n,i,u,0),f}function _u(t,e,r,n,i){var s,a;if(i===Gu(t,e,r,n)>0)for(s=e;s<r;s+=n)a=Ou(s,t[s],t[s+1],a);else for(s=r-n;s>=e;s-=n)a=Ou(s,t[s],t[s+1],a);return a&&Fu(a,a.next)&&(qu(a),a=a.next),a}function wu(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!Fu(n,n.next)&&0!==Vu(n.prev,n,n.next))n=n.next;else {if(qu(n),(n=e=n.prev)===n.next)break;r=!0;}}while(r||n!==e);return e}function Au(t,e,r,n,i,s,a){if(t){!a&&s&&function(t,e,r,n){var i=t;do{0===i.z&&(i.z=Eu(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,s,a,o,l,u=1;do{for(r=t,t=null,s=null,a=0;r;){for(a++,n=r,o=0,e=0;e<u&&(o++,n=n.nextZ);e++);for(l=u;o>0||l>0&&n;)0!==o&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,o--):(i=n,n=n.nextZ,l--),s?s.nextZ=i:t=i,i.prevZ=s,s=i;r=n;}s.nextZ=null,u*=2;}while(a>1)}(i);}(t,n,i,s);for(var o,l,u=t;t.prev!==t.next;)if(o=t.prev,l=t.next,s?ku(t,n,i,s):Su(t))e.push(o.i/r|0),e.push(t.i/r|0),e.push(l.i/r|0),qu(t),t=l.next,u=l.next;else if((t=l)===u){a?1===a?Au(t=Iu(wu(t),e,r),e,r,n,i,s,2):2===a&&Mu(t,e,r,n,i,s):Au(wu(t),e,r,n,i,s,1);break}}}function Su(t){var e=t.prev,r=t,n=t.next;if(Vu(e,r,n)>=0)return !1;for(var i=e.x,s=r.x,a=n.x,o=e.y,l=r.y,u=n.y,c=i<s?i<a?i:a:s<a?s:a,h=o<l?o<u?o:u:l<u?l:u,p=i>s?i>a?i:a:s>a?s:a,f=o>l?o>u?o:u:l>u?l:u,d=n.next;d!==e;){if(d.x>=c&&d.x<=p&&d.y>=h&&d.y<=f&&Pu(i,o,s,l,a,u,d.x,d.y)&&Vu(d.prev,d,d.next)>=0)return !1;d=d.next;}return !0}function ku(t,e,r,n){var i=t.prev,s=t,a=t.next;if(Vu(i,s,a)>=0)return !1;for(var o=i.x,l=s.x,u=a.x,c=i.y,h=s.y,p=a.y,f=o<l?o<u?o:u:l<u?l:u,d=c<h?c<p?c:p:h<p?h:p,y=o>l?o>u?o:u:l>u?l:u,m=c>h?c>p?c:p:h>p?h:p,g=Eu(f,d,e,r,n),x=Eu(y,m,e,r,n),v=t.prevZ,b=t.nextZ;v&&v.z>=g&&b&&b.z<=x;){if(v.x>=f&&v.x<=y&&v.y>=d&&v.y<=m&&v!==i&&v!==a&&Pu(o,c,l,h,u,p,v.x,v.y)&&Vu(v.prev,v,v.next)>=0)return !1;if(v=v.prevZ,b.x>=f&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==a&&Pu(o,c,l,h,u,p,b.x,b.y)&&Vu(b.prev,b,b.next)>=0)return !1;b=b.nextZ;}for(;v&&v.z>=g;){if(v.x>=f&&v.x<=y&&v.y>=d&&v.y<=m&&v!==i&&v!==a&&Pu(o,c,l,h,u,p,v.x,v.y)&&Vu(v.prev,v,v.next)>=0)return !1;v=v.prevZ;}for(;b&&b.z<=x;){if(b.x>=f&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==a&&Pu(o,c,l,h,u,p,b.x,b.y)&&Vu(b.prev,b,b.next)>=0)return !1;b=b.nextZ;}return !0}function Iu(t,e,r){var n=t;do{var i=n.prev,s=n.next.next;!Fu(i,s)&&Lu(i,n,n.next,s)&&ju(i,s)&&ju(s,i)&&(e.push(i.i/r|0),e.push(n.i/r|0),e.push(s.i/r|0),qu(n),qu(n.next),n=t=s),n=n.next;}while(n!==t);return wu(n)}function Mu(t,e,r,n,i,s){var a=t;do{for(var o=a.next.next;o!==a.prev;){if(a.i!==o.i&&Du(a,o)){var l=$u(a,o);return a=wu(a,a.next),l=wu(l,l.next),Au(a,e,r,n,i,s,0),void Au(l,e,r,n,i,s,0)}o=o.next;}a=a.next;}while(a!==t)}function zu(t,e){return t.x-e.x}function Tu(t,e){var r=function(t,e){var r,n=e,i=t.x,s=t.y,a=-1/0;do{if(s<=n.y&&s>=n.next.y&&n.next.y!==n.y){var o=n.x+(s-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(o<=i&&o>a&&(a=o,r=n.x<n.next.x?n:n.next,o===i))return r}n=n.next;}while(n!==e);if(!r)return null;var l,u=r,c=r.x,h=r.y,p=1/0;n=r;do{i>=n.x&&n.x>=c&&i!==n.x&&Pu(s<h?i:a,s,c,h,s<h?a:i,s,n.x,n.y)&&(l=Math.abs(s-n.y)/(i-n.x),ju(n,t)&&(l<p||l===p&&(n.x>r.x||n.x===r.x&&Bu(r,n)))&&(r=n,p=l)),n=n.next;}while(n!==u);return r}(t,e);if(!r)return e;var n=$u(r,t);return wu(n,n.next),wu(r,r.next)}function Bu(t,e){return Vu(t.prev,t,e.prev)<0&&Vu(e.next,t,t.next)<0}function Eu(t,e,r,n,i){return (t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*i|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*i|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Cu(t){var e=t,r=t;do{(e.x<r.x||e.x===r.x&&e.y<r.y)&&(r=e),e=e.next;}while(e!==t);return r}function Pu(t,e,r,n,i,s,a,o){return (i-a)*(e-o)>=(t-a)*(s-o)&&(t-a)*(n-o)>=(r-a)*(e-o)&&(r-a)*(s-o)>=(i-a)*(n-o)}function Du(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&Lu(r,r.next,t,e))return !0;r=r.next;}while(r!==t);return !1}(t,e)&&(ju(t,e)&&ju(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,s=(t.y+e.y)/2;do{r.y>s!=r.next.y>s&&r.next.y!==r.y&&i<(r.next.x-r.x)*(s-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;}while(r!==t);return n}(t,e)&&(Vu(t.prev,t,e.prev)||Vu(t,e.prev,e))||Fu(t,e)&&Vu(t.prev,t,t.next)>0&&Vu(e.prev,e,e.next)>0)}function Vu(t,e,r){return (e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function Fu(t,e){return t.x===e.x&&t.y===e.y}function Lu(t,e,r,n){var i=Uu(Vu(t,e,r)),s=Uu(Vu(t,e,n)),a=Uu(Vu(r,n,t)),o=Uu(Vu(r,n,e));return i!==s&&a!==o||!(0!==i||!Ru(t,r,e))||!(0!==s||!Ru(t,n,e))||!(0!==a||!Ru(r,t,n))||!(0!==o||!Ru(r,e,n))}function Ru(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function Uu(t){return t>0?1:t<0?-1:0}function ju(t,e){return Vu(t.prev,t,t.next)<0?Vu(t,e,t.next)>=0&&Vu(t,t.prev,e)>=0:Vu(t,e,t.prev)<0||Vu(t,t.next,e)<0}function $u(t,e){var r=new Nu(t.i,t.x,t.y),n=new Nu(e.i,e.x,e.y),i=t.next,s=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,s.next=n,n.prev=s,n}function Ou(t,e,r,n){var i=new Nu(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function qu(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ);}function Nu(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1;}function Gu(t,e,r,n){for(var i=0,s=e,a=r-n;s<r;s+=n)i+=(t[a]-t[s])*(t[s+1]+t[a+1]),a=s;return i}function Zu(t,e,r,n,i){Xu(t,e,r||0,n||t.length-1,i||Hu);}function Xu(t,e,r,n,i){for(;n>r;){if(n-r>600){var s=n-r+1,a=e-r+1,o=Math.log(s),l=.5*Math.exp(2*o/3),u=.5*Math.sqrt(o*l*(s-l)/s)*(a-s/2<0?-1:1);Xu(t,e,Math.max(r,Math.floor(e-a*l/s+u)),Math.min(n,Math.floor(e+(s-a)*l/s+u)),i);}var c=t[e],h=r,p=n;for(Ku(t,r,e),i(t[n],c)>0&&Ku(t,r,n);h<p;){for(Ku(t,h,p),h++,p--;i(t[h],c)<0;)h++;for(;i(t[p],c)>0;)p--;}0===i(t[r],c)?Ku(t,r,p):Ku(t,++p,n),p<=e&&(r=p+1),e<=p&&(n=p-1);}}function Ku(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}function Hu(t,e){return t<e?-1:t>e?1:0}function Yu(t,e){const r=t.length;if(r<=1)return [t];const n=[];let i,s;for(let e=0;e<r;e++){const r=P(t[e]);0!==r&&(t[e].area=Math.abs(r),void 0===s&&(s=r<0),s===r<0?(i&&n.push(i),i=[t[e]]):i.push(t[e]));}if(i&&n.push(i),e>1)for(let t=0;t<n.length;t++)n[t].length<=e||(Zu(n[t],e,1,n[t].length-1,Wu),n[t]=n[t].slice(0,e));return n}function Wu(t,e){return e.area-t.area}function Ju(t,e,r){const n=r.patternDependencies;let i=!1;for(const r of e){const e=r.paint.get(`${t}-pattern`);e.isConstant()||(i=!0);const s=e.constantOr(null);s&&(i=!0,n[s.to]=!0,n[s.from]=!0);}return i}function Qu(t,e,r,n,i){const s=i.patternDependencies;for(const a of e){const e=a.paint.get(`${t}-pattern`).value;if(\"constant\"!==e.kind){let t=e.evaluate({zoom:n-1},r,{},i.availableImages),o=e.evaluate({zoom:n},r,{},i.availableImages),l=e.evaluate({zoom:n+1},r,{},i.availableImages);t=t&&t.name?t.name:t,o=o&&o.name?o.name:o,l=l&&l.name?l.name:l,s[t]=!0,s[o]=!0,s[l]=!0,r.patterns[a.id]={min:t,mid:o,max:l};}}return r}bu.deviation=function(t,e,r,n){var i=e&&e.length,s=Math.abs(Gu(t,0,i?e[0]*r:t.length,r));if(i)for(var a=0,o=e.length;a<o;a++)s-=Math.abs(Gu(t,e[a]*r,a<o-1?e[a+1]*r:t.length,r));var l=0;for(a=0;a<n.length;a+=3){var u=n[a]*r,c=n[a+1]*r,h=n[a+2]*r;l+=Math.abs((t[u]-t[h])*(t[c+1]-t[u+1])-(t[u]-t[c])*(t[h+1]-t[u+1]));}return 0===s&&0===l?0:Math.abs((l-s)/s)},bu.flatten=function(t){for(var e=t[0][0].length,r={vertices:[],holes:[],dimensions:e},n=0,i=0;i<t.length;i++){for(var s=0;s<t[i].length;s++)for(var a=0;a<e;a++)r.vertices.push(t[i][s][a]);i>0&&r.holes.push(n+=t[i-1].length);}return r},xu.default=vu;class tc{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new Qs,this.indexArray=new ya,this.indexArray2=new _a,this.programConfigurations=new co(t.layers,t.zoom),this.segments=new _o,this.segments2=new _o,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.projection=t.projection;}populate(t,e,r,n){this.hasPattern=Ju(\"fill\",this.layers,e);const i=this.layers[0].layout.get(\"fill-sort-key\"),s=[];for(const{feature:a,id:o,index:l,sourceLayerIndex:u}of t){const t=this.layers[0]._featureFilter.needGeometry,c=Go(a,t);if(!this.layers[0]._featureFilter.filter(new Cs(this.zoom),c,r))continue;const h=i?i.evaluate(c,{},r,e.availableImages):void 0,p={id:o,properties:a.properties,type:a.type,sourceLayerIndex:u,index:l,geometry:t?c.geometry:No(a,r,n),patterns:{},sortKey:h};s.push(p);}i&&s.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of s){const{geometry:i,index:s,sourceLayerIndex:a}=n;if(this.hasPattern){const t=Qu(\"fill\",this.layers,n,this.zoom,e);this.patternFeatures.push(t);}else this.addFeature(n,i,s,r,{},e.availableImages);e.featureIndex.insert(t[s].feature,i,s,a,this.index);}}update(t,e,r,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r,n);}addFeatures(t,e,r,n,i){for(const t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r,n);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,gu),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy());}addFeature(t,e,r,n,i,s=[]){for(const t of Yu(e,500)){let e=0;for(const r of t)e+=r.length;const r=this.segments.prepareSegment(e,this.layoutVertexArray,this.indexArray),n=r.vertexLength,i=[],s=[];for(const e of t){if(0===e.length)continue;e!==t[0]&&s.push(i.length/2);const r=this.segments2.prepareSegment(e.length,this.layoutVertexArray,this.indexArray2),n=r.vertexLength;this.layoutVertexArray.emplaceBack(e[0].x,e[0].y),this.indexArray2.emplaceBack(n+e.length-1,n),i.push(e[0].x),i.push(e[0].y);for(let t=1;t<e.length;t++)this.layoutVertexArray.emplaceBack(e[t].x,e[t].y),this.indexArray2.emplaceBack(n+t-1,n+t),i.push(e[t].x),i.push(e[t].y);r.vertexLength+=e.length,r.primitiveLength+=e.length;}const a=xu(i,s);for(let t=0;t<a.length;t+=3)this.indexArray.emplaceBack(n+a[t],n+a[t+1],n+a[t+2]);r.vertexLength+=e,r.primitiveLength+=a.length/3;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,s,n);}}Pi(tc,\"FillBucket\",{omit:[\"layers\",\"patternFeatures\"]});const ec=new Zs({\"fill-sort-key\":new Os(Gt.layout_fill[\"fill-sort-key\"])});var rc={paint:new Zs({\"fill-antialias\":new $s(Gt.paint_fill[\"fill-antialias\"]),\"fill-opacity\":new Os(Gt.paint_fill[\"fill-opacity\"]),\"fill-color\":new Os(Gt.paint_fill[\"fill-color\"]),\"fill-outline-color\":new Os(Gt.paint_fill[\"fill-outline-color\"]),\"fill-translate\":new $s(Gt.paint_fill[\"fill-translate\"]),\"fill-translate-anchor\":new $s(Gt.paint_fill[\"fill-translate-anchor\"]),\"fill-pattern\":new qs(Gt.paint_fill[\"fill-pattern\"])}),layout:ec};const nc=Ws([{name:\"a_pos_normal_ed\",components:4,type:\"Int16\"}]),ic=Ws([{name:\"a_centroid_pos\",components:2,type:\"Uint16\"}]),sc=Ws([{name:\"a_pos_3\",components:3,type:\"Int16\"},{name:\"a_pos_normal_3\",components:3,type:\"Int16\"}]),{members:ac}=nc;var oc=lc;function lc(t,e,r,n,i){this.properties={},this.extent=r,this.type=0,this._pbf=t,this._geometry=-1,this._keys=n,this._values=i,t.readFields(uc,this,e);}function uc(t,e,r){1==t?e.id=r.readVarint():2==t?function(t,e){for(var r=t.readVarint()+t.pos;t.pos<r;){var n=e._keys[t.readVarint()],i=e._values[t.readVarint()];e.properties[n]=i;}}(r,e):3==t?e.type=r.readVarint():4==t&&(e._geometry=r.pos);}function cc(t){for(var e,r,n=0,i=0,s=t.length,a=s-1;i<s;a=i++)n+=((r=t[a]).x-(e=t[i]).x)*(e.y+r.y);return n}lc.types=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"],lc.prototype.loadGeometry=function(){var t=this._pbf;t.pos=this._geometry;for(var e,r=t.readVarint()+t.pos,n=1,s=0,a=0,o=0,l=[];t.pos<r;){if(s<=0){var u=t.readVarint();n=7&u,s=u>>3;}if(s--,1===n||2===n)a+=t.readSVarint(),o+=t.readSVarint(),1===n&&(e&&l.push(e),e=[]),e.push(new i(a,o));else {if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone());}}return e&&l.push(e),l},lc.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,s=0,a=1/0,o=-1/0,l=1/0,u=-1/0;t.pos<e;){if(n<=0){var c=t.readVarint();r=7&c,n=c>>3;}if(n--,1===r||2===r)(i+=t.readSVarint())<a&&(a=i),i>o&&(o=i),(s+=t.readSVarint())<l&&(l=s),s>u&&(u=s);else if(7!==r)throw new Error(\"unknown command \"+r)}return [a,l,o,u]},lc.prototype.toGeoJSON=function(t,e,r){var n,i,s=this.extent*Math.pow(2,r),a=this.extent*t,o=this.extent*e,l=this.loadGeometry(),u=lc.types[this.type];function c(t){for(var e=0;e<t.length;e++){var r=t[e];t[e]=[360*(r.x+a)/s-180,360/Math.PI*Math.atan(Math.exp((180-360*(r.y+o)/s)*Math.PI/180))-90];}}switch(this.type){case 1:var h=[];for(n=0;n<l.length;n++)h[n]=l[n][0];c(l=h);break;case 2:for(n=0;n<l.length;n++)c(l[n]);break;case 3:for(l=function(t){var e=t.length;if(e<=1)return [t];for(var r,n,i=[],s=0;s<e;s++){var a=cc(t[s]);0!==a&&(void 0===n&&(n=a<0),n===a<0?(r&&i.push(r),r=[t[s]]):r.push(t[s]));}return r&&i.push(r),i}(l),n=0;n<l.length;n++)for(i=0;i<l[n].length;i++)c(l[n][i]);}1===l.length?l=l[0]:u=\"Multi\"+u;var p={type:\"Feature\",geometry:{type:u,coordinates:l},properties:this.properties};return \"id\"in this&&(p.id=this.id),p};var hc=pc;function pc(t,e){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=t,this._keys=[],this._values=[],this._features=[],t.readFields(fc,this,e),this.length=this._features.length;}function fc(t,e,r){15===t?e.version=r.readVarint():1===t?e.name=r.readString():5===t?e.extent=r.readVarint():2===t?e._features.push(r.pos):3===t?e._keys.push(r.readString()):4===t&&e._values.push(function(t){for(var e=null,r=t.readVarint()+t.pos;t.pos<r;){var n=t.readVarint()>>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null;}return e}(r));}function dc(t,e,r){if(3===t){var n=new hc(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n);}}pc.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new oc(this._pbf,e,this.extent,this._keys,this._values)};var yc={VectorTile:function(t,e){this.layers=t.readFields(dc,{},e);},VectorTileFeature:oc,VectorTileLayer:hc};function mc(t,e,r,n){const s=[],a=0===n?(t,e,r,n,s,a)=>{t.push(new i(a,r+(a-e)/(n-e)*(s-r)));}:(t,e,r,n,s,a)=>{t.push(new i(e+(a-r)/(s-r)*(n-e),a));};for(const i of t){const t=[];for(const s of i){if(s.length<=2)continue;const i=[];for(let t=0;t<s.length-1;t++){const o=s[t].x,l=s[t].y,u=s[t+1].x,c=s[t+1].y,h=0===n?o:l,p=0===n?u:c;h<e?p>e&&a(i,o,l,u,c,e):h>r?p<r&&a(i,o,l,u,c,r):i.push(s[t]),p<e&&h>=e&&a(i,o,l,u,c,e),p>r&&h<=r&&a(i,o,l,u,c,r);}let o=s[s.length-1];const l=0===n?o.x:o.y;l>=e&&l<=r&&i.push(o),i.length&&(o=i[i.length-1],i[0].x===o.x&&i[0].y===o.y||i.push(i[0]),t.push(i));}t.length&&s.push(t);}return s}const gc=yc.VectorTileFeature.types,xc=Math.pow(2,13);function vc(t,e,r,n,i,s,a,o){t.emplaceBack((e<<1)+a,(r<<1)+s,(Math.floor(n*xc)<<1)+i,Math.round(o));}function bc(t,e,r){const n=16384;t.emplaceBack(e.x,e.y,e.z,r[0]*n,r[1]*n,r[2]*n);}class _c{constructor(){this.acc=new i(0,0),this.polyCount=[];}startRing(t){this.currentPolyCount={edges:0,top:0},this.polyCount.push(this.currentPolyCount),this.min||(this.min=new i(t.x,t.y),this.max=new i(t.x,t.y));}append(t,e){this.currentPolyCount.edges++,this.acc._add(t);const r=this.min,n=this.max;t.x<r.x?r.x=t.x:t.x>n.x&&(n.x=t.x),t.y<r.y?r.y=t.y:t.y>n.y&&(n.y=t.y),((0===t.x||t.x===wo)&&t.x===e.x)!=((0===t.y||t.y===wo)&&t.y===e.y)&&this.processBorderOverlap(t,e),e.x<0!=t.x<0&&this.addBorderIntersection(0,xr(e.y,t.y,(0-e.x)/(t.x-e.x))),e.x>wo!=t.x>wo&&this.addBorderIntersection(1,xr(e.y,t.y,(wo-e.x)/(t.x-e.x))),e.y<0!=t.y<0&&this.addBorderIntersection(2,xr(e.x,t.x,(0-e.y)/(t.y-e.y))),e.y>wo!=t.y>wo&&this.addBorderIntersection(3,xr(e.x,t.x,(wo-e.y)/(t.y-e.y)));}addBorderIntersection(t,e){this.borders||(this.borders=[[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE]]);const r=this.borders[t];e<r[0]&&(r[0]=e),e>r[1]&&(r[1]=e);}processBorderOverlap(t,e){if(t.x===e.x){if(t.y===e.y)return;const r=0===t.x?0:1;this.addBorderIntersection(r,e.y),this.addBorderIntersection(r,t.y);}else {const r=0===t.y?2:3;this.addBorderIntersection(r,e.x),this.addBorderIntersection(r,t.x);}}centroid(){const t=this.polyCount.reduce(((t,e)=>t+e.edges),0);return 0!==t?this.acc.div(t)._round():new i(0,0)}span(){return new i(this.max.x-this.min.x,this.max.y-this.min.y)}intersectsCount(){return this.borders.reduce(((t,e)=>t+ +(e[0]!==Number.MAX_VALUE)),0)}}class wc{constructor(t){this.zoom=t.zoom,this.canonical=t.canonical,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.edgeRadius=0,this.projection=t.projection,this.layoutVertexArray=new ea,this.centroidVertexArray=new La,this.indexArray=new ya,this.programConfigurations=new co(t.layers,t.zoom),this.segments=new _o,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.enableTerrain=t.enableTerrain;}populate(t,e,r,n){this.features=[],this.hasPattern=Ju(\"fill-extrusion\",this.layers,e),this.featuresOnBorder=[],this.borders=[[],[],[],[]],this.borderDoneWithNeighborZ=[-1,-1,-1,-1],this.tileToMeter=function(t){const e=Math.exp(Math.PI*(1-t.y/(1<<t.z)*2));return 80150034*e/(e*e+1)/wo/(1<<t.z)}(r),this.edgeRadius=this.layers[0].layout.get(\"fill-extrusion-edge-radius\")/this.tileToMeter;for(const{feature:i,id:s,index:a,sourceLayerIndex:o}of t){const t=this.layers[0]._featureFilter.needGeometry,l=Go(i,t);if(!this.layers[0]._featureFilter.filter(new Cs(this.zoom),l,r))continue;const u={id:s,sourceLayerIndex:o,index:a,geometry:t?l.geometry:No(i,r,n),properties:i.properties,type:i.type,patterns:{}},c=this.layoutVertexArray.length;this.hasPattern?this.features.push(Qu(\"fill-extrusion\",this.layers,u,this.zoom,e)):this.addFeature(u,u.geometry,a,r,{},e.availableImages,n),e.featureIndex.insert(i,u.geometry,a,o,this.index,c);}this.sortBorders();}addFeatures(t,e,r,n,i){for(const t of this.features){const{geometry:s}=t;this.addFeature(t,s,t.index,e,r,n,i);}this.sortBorders();}update(t,e,r,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r,n);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,ac),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.layoutVertexExtArray&&(this.layoutVertexExtBuffer=t.createVertexBuffer(this.layoutVertexExtArray,sc.members,!0))),this.programConfigurations.upload(t),this.uploaded=!0;}uploadCentroid(t){0!==this.centroidVertexArray.length&&(this.centroidVertexBuffer?this.needsCentroidUpdate&&this.centroidVertexBuffer.updateData(this.centroidVertexArray):this.centroidVertexBuffer=t.createVertexBuffer(this.centroidVertexArray,ic.members,!0),this.needsCentroidUpdate=!1);}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.centroidVertexBuffer&&this.centroidVertexBuffer.destroy(),this.layoutVertexExtBuffer&&this.layoutVertexExtBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}addFeature(t,e,r,n,s,a,o){const l=[new i(0,0),new i(wo,wo)],u=o.projection,c=\"globe\"===u.name,h=this.enableTerrain&&!c?new _c:null,p=\"Polygon\"===gc[t.type];c&&!this.layoutVertexExtArray&&(this.layoutVertexExtArray=new ka);const f=Yu(e,500);for(let t=f.length-1;t>=0;t--){const e=f[t];(0===e.length||(d=e[0]).every((t=>t.x<=0))||d.every((t=>t.x>=wo))||d.every((t=>t.y<=0))||d.every((t=>t.y>=wo)))&&f.splice(t,1);}var d;let y;if(c)y=Bc(f,l,n);else {y=[];for(const t of f)y.push({polygon:t,bounds:l});}const m=p?this.edgeRadius:0;for(const{polygon:t,bounds:e}of y){let r=0,i=0;for(const e of t)p&&!e[0].equals(e[e.length-1])&&e.push(e[0]),i+=p?e.length-1:e.length;const s=this.segments.prepareSegment((p?5:4)*i,this.layoutVertexArray,this.indexArray);if(p){const e=[],i=[];r=s.vertexLength;for(const r of t){let a,o;r.length&&r!==t[0]&&i.push(e.length/2),a=r[1].sub(r[0])._perp()._unit();for(let t=1;t<r.length;t++){const i=r[t],l=r[t===r.length-1?1:t+1];let{x:h,y:p}=i;if(m){o=l.sub(i)._perp()._unit();const t=a.add(o)._unit(),e=m*Math.min(4,1/(a.x*t.x+a.y*t.y));h+=e*t.x,p+=e*t.y,a=o;}vc(this.layoutVertexArray,h,p,0,0,1,1,0),s.vertexLength++,e.push(i.x,i.y),c&&bc(this.layoutVertexExtArray,u.projectTilePoint(h,p,n),u.upVector(n,h,p));}}const a=xu(e,i);for(let t=0;t<a.length;t+=3)this.indexArray.emplaceBack(r+a[t],r+a[t+2],r+a[t+1]),s.primitiveLength++;}for(const i of t){h&&i.length&&h.startRing(i[0]);let t,a,o,l=i.length>4&&Mc(i[i.length-2],i[0],i[1]),f=m?Sc(i[i.length-2],i[0],i[1],m):0;a=i[1].sub(i[0])._perp()._unit();for(let d=1,y=0;d<i.length;d++){let g=i[d-1],x=i[d];const v=i[d===i.length-1?1:d+1];if(h&&p&&h.currentPolyCount.top++,Ic(x,g,e)){m&&(a=v.sub(x)._perp()._unit());continue}h&&h.append(x,g);const b=x.sub(g)._perp(),_=b.x/(Math.abs(b.x)+Math.abs(b.y)),w=b.y>0?1:0,A=g.dist(x);if(y+A>32768&&(y=0),m){o=v.sub(x)._perp()._unit();let t=kc(g,x,v,Ac(a,o),m);isNaN(t)&&(t=0);const e=x.sub(g)._unit();g=g.add(e.mult(f))._round(),x=x.add(e.mult(-t))._round(),f=t,a=o;}const S=s.vertexLength,k=i.length>4&&Mc(g,x,v);let I=zc(y,l,!0);if(vc(this.layoutVertexArray,g.x,g.y,_,w,0,0,I),vc(this.layoutVertexArray,g.x,g.y,_,w,0,1,I),y+=A,I=zc(y,k,!1),l=k,vc(this.layoutVertexArray,x.x,x.y,_,w,0,0,I),vc(this.layoutVertexArray,x.x,x.y,_,w,0,1,I),s.vertexLength+=4,this.indexArray.emplaceBack(S+0,S+1,S+2),this.indexArray.emplaceBack(S+1,S+3,S+2),s.primitiveLength+=2,m){const n=r+(1===d?i.length-2:d-2),a=1===d?r:n+1;if(this.indexArray.emplaceBack(S+1,n,S+3),this.indexArray.emplaceBack(n,a,S+3),s.primitiveLength+=2,void 0===t&&(t=S),!Ic(v,i[d],e)){const e=d===i.length-1?t:s.vertexLength;this.indexArray.emplaceBack(S+2,S+3,e),this.indexArray.emplaceBack(S+3,e+1,e),this.indexArray.emplaceBack(S+3,a,e+1),s.primitiveLength+=3;}}if(c){const t=this.layoutVertexExtArray,e=u.projectTilePoint(g.x,g.y,n),r=u.projectTilePoint(x.x,x.y,n),i=u.upVector(n,g.x,g.y),s=u.upVector(n,x.x,x.y);bc(t,e,i),bc(t,e,i),bc(t,r,s),bc(t,r,s);}}p&&(r+=i.length-1);}}if(h&&h.polyCount.length>0){if(h.borders){h.vertexArrayOffset=this.centroidVertexArray.length;const t=h.borders,e=this.featuresOnBorder.push(h)-1;for(let r=0;r<4;r++)t[r][0]!==Number.MAX_VALUE&&this.borders[r].push(e);}this.encodeCentroid(h.borders?void 0:h.centroid(),h);}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,s,a,n);}sortBorders(){for(let t=0;t<4;t++)this.borders[t].sort(((e,r)=>this.featuresOnBorder[e].borders[t][0]-this.featuresOnBorder[r].borders[t][0]));}encodeCentroid(t,e,r=!0){let n,i;if(t)if(0!==t.y){const r=e.span()._mult(this.tileToMeter);n=(Math.max(t.x,1)<<3)+Math.min(7,Math.round(r.x/10)),i=(Math.max(t.y,1)<<3)+Math.min(7,Math.round(r.y/10));}else n=Math.ceil(7*(t.x+450)),i=0;else n=0,i=+r;let s=r?this.centroidVertexArray.length:e.vertexArrayOffset;for(const t of e.polyCount){r&&this.centroidVertexArray.resize(this.centroidVertexArray.length+4*t.edges+t.top);for(let e=0;e<t.top;e++)this.centroidVertexArray.emplace(s++,n,i);for(let e=0;e<2*t.edges;e++)this.centroidVertexArray.emplace(s++,0,i),this.centroidVertexArray.emplace(s++,n,i);}}}function Ac(t,e){const r=t.add(e)._unit();return t.x*r.x+t.y*r.y}function Sc(t,e,r,n){const i=e.sub(t)._perp()._unit(),s=r.sub(e)._perp()._unit();return kc(t,e,r,Ac(i,s),n)}function kc(t,e,r,n,i){const s=Math.sqrt(1-n*n);return Math.min(t.dist(e)/3,e.dist(r)/3,i*s/n)}function Ic(t,e,r){return t.x<r[0].x&&e.x<r[0].x||t.x>r[1].x&&e.x>r[1].x||t.y<r[0].y&&e.y<r[0].y||t.y>r[1].y&&e.y>r[1].y}function Mc(t,e,r){if(t.x<0||t.x>=wo||e.x<0||e.x>=wo||r.x<0||r.x>=wo)return !1;const n=r.sub(e),i=n.perp(),s=t.sub(e);return (n.x*s.x+n.y*s.y)/Math.sqrt((n.x*n.x+n.y*n.y)*(s.x*s.x+s.y*s.y))>-.866&&i.x*s.x+i.y*s.y<0}function zc(t,e,r){const n=e?2|t:-3&t;return r?1|n:-2&n}function Tc(){const t=Math.PI/32,e=Math.tan(t),r=So;return r*Math.sqrt(1+2*e*e)-r}function Bc(t,e,r){const n=1<<r.z,s=Eo(r.x/n),a=Eo((r.x+1)/n),o=Co(r.y/n),l=Co((r.y+1)/n);return function(t,e,r,n,s=0,a){const o=[];if(!t.length||!r||!n)return o;const l=(t,e)=>{for(const r of t)o.push({polygon:r,bounds:e});},u=Math.ceil(Math.log2(r)),c=Math.ceil(Math.log2(n)),h=u-c,p=[];for(let t=0;t<Math.abs(h);t++)p.push(h>0?0:1);for(let t=0;t<Math.min(u,c);t++)p.push(0),p.push(1);let f=t;if(f=mc(f,e[0].y-s,e[1].y+s,1),f=mc(f,e[0].x-s,e[1].x+s,0),!f.length)return o;const d=[];for(p.length?d.push({polygons:f,bounds:e,depth:0}):l(f,e);d.length;){const t=d.pop(),e=t.depth,r=p[e],n=t.bounds[0],o=t.bounds[1],u=0===r?n.x:n.y,c=0===r?o.x:o.y,h=a?a(r,u,c):.5*(u+c),f=mc(t.polygons,u-s,h+s,r),y=mc(t.polygons,h-s,c+s,r);if(f.length){const t=[n,new i(0===r?h:o.x,1===r?h:o.y)];p.length>e+1?d.push({polygons:f,bounds:t,depth:e+1}):l(f,t);}if(y.length){const t=[new i(0===r?h:n.x,1===r?h:n.y),o];p.length>e+1?d.push({polygons:y,bounds:t,depth:e+1}):l(y,t);}}return o}(t,e,Math.ceil((a-s)/11.25),Math.ceil((o-l)/11.25),1,((t,e,i)=>{if(0===t)return .5*(e+i);{const t=Co((r.y+e/wo)/n);return (To(.5*(Co((r.y+i/wo)/n)+t))*n-r.y)*wo}}))}Pi(wc,\"FillExtrusionBucket\",{omit:[\"layers\",\"features\"]}),Pi(_c,\"PartMetadata\");const Ec=new Zs({\"fill-extrusion-edge-radius\":new $s(Gt[\"layout_fill-extrusion\"][\"fill-extrusion-edge-radius\"])});var Cc={paint:new Zs({\"fill-extrusion-opacity\":new $s(Gt[\"paint_fill-extrusion\"][\"fill-extrusion-opacity\"]),\"fill-extrusion-color\":new Os(Gt[\"paint_fill-extrusion\"][\"fill-extrusion-color\"]),\"fill-extrusion-translate\":new $s(Gt[\"paint_fill-extrusion\"][\"fill-extrusion-translate\"]),\"fill-extrusion-translate-anchor\":new $s(Gt[\"paint_fill-extrusion\"][\"fill-extrusion-translate-anchor\"]),\"fill-extrusion-pattern\":new qs(Gt[\"paint_fill-extrusion\"][\"fill-extrusion-pattern\"]),\"fill-extrusion-height\":new Os(Gt[\"paint_fill-extrusion\"][\"fill-extrusion-height\"]),\"fill-extrusion-base\":new Os(Gt[\"paint_fill-extrusion\"][\"fill-extrusion-base\"]),\"fill-extrusion-vertical-gradient\":new $s(Gt[\"paint_fill-extrusion\"][\"fill-extrusion-vertical-gradient\"]),\"fill-extrusion-ambient-occlusion-intensity\":new $s(Gt[\"paint_fill-extrusion\"][\"fill-extrusion-ambient-occlusion-intensity\"]),\"fill-extrusion-ambient-occlusion-radius\":new $s(Gt[\"paint_fill-extrusion\"][\"fill-extrusion-ambient-occlusion-radius\"])}),layout:Ec};function Pc(t,e,r){var n=2*Math.PI*6378137/256/Math.pow(2,r);return [t*n-2*Math.PI*6378137/2,e*n-2*Math.PI*6378137/2]}class Dc{constructor(t,e,r){this.z=t,this.x=e,this.y=r,this.key=Lc(0,t,t,e,r);}equals(t){return this.z===t.z&&this.x===t.x&&this.y===t.y}url(t,e){const r=function(t,e,r){var n=Pc(256*t,256*(e=Math.pow(2,r)-e-1),r),i=Pc(256*(t+1),256*(e+1),r);return n[0]+\",\"+n[1]+\",\"+i[0]+\",\"+i[1]}(this.x,this.y,this.z),n=function(t,e,r){let n,i=\"\";for(let s=t;s>0;s--)n=1<<s-1,i+=(e&n?1:0)+(r&n?2:0);return i}(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace(\"{prefix}\",(this.x%16).toString(16)+(this.y%16).toString(16)).replace(/{z}/g,String(this.z)).replace(/{x}/g,String(this.x)).replace(/{y}/g,String(\"tms\"===e?Math.pow(2,this.z)-this.y-1:this.y)).replace(\"{quadkey}\",n).replace(\"{bbox-epsg-3857}\",r)}toString(){return `${this.z}/${this.x}/${this.y}`}}class Vc{constructor(t,e){this.wrap=t,this.canonical=e,this.key=Lc(t,e.z,e.z,e.x,e.y);}}class Fc{constructor(t,e,r,n,i){this.overscaledZ=t,this.wrap=e,this.canonical=new Dc(r,+n,+i),this.key=0===e&&t===r?this.canonical.key:Lc(e,t,r,n,i);}equals(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)}scaledTo(t){const e=this.canonical.z-t;return t>this.canonical.z?new Fc(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Fc(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)}calculateScaledKey(t,e=!0){if(this.overscaledZ===t&&e)return this.key;if(t>this.canonical.z)return Lc(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y);{const r=this.canonical.z-t;return Lc(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)}}isChildOf(t){if(t.wrap!==this.wrap)return !1;const e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ<this.overscaledZ&&t.canonical.x===this.canonical.x>>e&&t.canonical.y===this.canonical.y>>e}children(t){if(this.overscaledZ>=t)return [new Fc(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return [new Fc(e,this.wrap,e,r,n),new Fc(e,this.wrap,e,r+1,n),new Fc(e,this.wrap,e,r,n+1),new Fc(e,this.wrap,e,r+1,n+1)]}isLessThan(t){return this.wrap<t.wrap||!(this.wrap>t.wrap)&&(this.overscaledZ<t.overscaledZ||!(this.overscaledZ>t.overscaledZ)&&(this.canonical.x<t.canonical.x||!(this.canonical.x>t.canonical.x)&&this.canonical.y<t.canonical.y))}wrapped(){return new Fc(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)}unwrapTo(t){return new Fc(this.overscaledZ,t,this.canonical.z,this.canonical.x,this.canonical.y)}overscaleFactor(){return Math.pow(2,this.overscaledZ-this.canonical.z)}toUnwrapped(){return new Vc(this.wrap,this.canonical)}toString(){return `${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`}}function Lc(t,e,r,n,i){const s=1<<Math.min(r,22);let a=s*(i%s)+n%s;return t&&r<22&&(a+=s*s*((t<0?-2*t-1:2*t)%(1<<2*(22-r)))),16*(32*a+r)+(e-r)}function Rc(t,e){return t.x*e.x+t.y*e.y}function Uc(t,e){if(1===t.length){let r=0;const n=e[r++];let i;for(;!i||n.equals(i);)if(i=e[r++],!i)return 1/0;for(;r<e.length;r++){const s=e[r],a=t[0],o=i.sub(n),l=s.sub(n),u=a.sub(n),c=Rc(o,o),h=Rc(o,l),p=Rc(l,l),f=Rc(u,o),d=Rc(u,l),y=c*p-h*h,m=(p*f-h*d)/y,g=(c*d-h*f)/y,x=n.z*(1-m-g)+i.z*m+s.z*g;if(isFinite(x))return x}return 1/0}{let t=1/0;for(const r of e)t=Math.min(t,r.z);return t}}function jc(t){const e=new i(t[0],t[1]);return e.z=t[2],e}function $c(t,e,r,n,i,s,a,o){const l=a*i.getElevationAt(t,e,!0,!0),u=0!==s[0],c=u?0===s[1]?a*(s[0]/7-450):a*function(t,e,r){const n=Math.floor(e[0]/8),i=Math.floor(e[1]/8),s=10*(e[0]-8*n),a=10*(e[1]-8*i),o=t.getElevationAt(n,i,!0,!0),l=t.getMeterToDEM(r),u=Math.floor(.5*(s*l-1)),c=Math.floor(.5*(a*l-1)),h=t.tileCoordToPixel(n,i),p=2*u+1,f=2*c+1,d=function(t,e,r,n,i){return [t.getElevationAtPixel(e,r,!0),t.getElevationAtPixel(e+i,r,!0),t.getElevationAtPixel(e,r+i,!0),t.getElevationAtPixel(e+n,r+i,!0)]}(t,h.x-u,h.y-c,p,f),y=Math.abs(d[0]-d[1]),m=Math.abs(d[2]-d[3]),g=Math.abs(d[0]-d[2])+Math.abs(d[1]-d[3]),x=Math.min(.25,.5*l*(y+m)/p),v=Math.min(.25,.5*l*g/f);return o+Math.max(x*s,v*a)}(i,s,o):l;return {base:l+(0===r)?-1:r,top:u?Math.max(c+n,l+r+2):l+n}}Pi(Dc,\"CanonicalTileID\"),Pi(Fc,\"OverscaledTileID\",{omit:[\"projMatrix\"]});const Oc=Ws([{name:\"a_pos_normal\",components:2,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint8\"},{name:\"a_linesofar\",components:1,type:\"Float32\"}],4),{members:qc}=Oc,Nc=Ws([{name:\"a_packed\",components:4,type:\"Float32\"}]),{members:Gc}=Nc,Zc=yc.VectorTileFeature.types,Xc=Math.cos(Math.PI/180*37.5);class Kc{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.projection=t.projection,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach((t=>{this.gradients[t.id]={};})),this.layoutVertexArray=new ra,this.layoutVertexArray2=new na,this.indexArray=new ya,this.programConfigurations=new co(t.layers,t.zoom),this.segments=new _o,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r,n){this.hasPattern=Ju(\"line\",this.layers,e);const i=this.layers[0].layout.get(\"line-sort-key\"),s=[];for(const{feature:e,id:a,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=Go(e,t);if(!this.layers[0]._featureFilter.filter(new Cs(this.zoom),u,r))continue;const c=i?i.evaluate(u,{},r):void 0,h={id:a,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:No(e,r,n),patterns:{},sortKey:c};s.push(h);}i&&s.sort(((t,e)=>t.sortKey-e.sortKey));const{lineAtlas:a,featureIndex:o}=e,l=this.addConstantDashes(a);for(const n of s){const{geometry:i,index:s,sourceLayerIndex:u}=n;if(l&&this.addFeatureDashes(n,a),this.hasPattern){const t=Qu(\"line\",this.layers,n,this.zoom,e);this.patternFeatures.push(t);}else this.addFeature(n,i,s,r,a.positions,e.availableImages);o.insert(t[s].feature,i,s,u,this.index);}}addConstantDashes(t){let e=!1;for(const r of this.layers){const n=r.paint.get(\"line-dasharray\").value,i=r.layout.get(\"line-cap\").value;if(\"constant\"!==n.kind||\"constant\"!==i.kind)e=!0;else {const e=i.value,r=n.value;if(!r)continue;t.addDash(r.from,e),t.addDash(r.to,e),r.other&&t.addDash(r.other,e);}}return e}addFeatureDashes(t,e){const r=this.zoom;for(const n of this.layers){const i=n.paint.get(\"line-dasharray\").value,s=n.layout.get(\"line-cap\").value;if(\"constant\"===i.kind&&\"constant\"===s.kind)continue;let a,o,l,u,c,h;if(\"constant\"===i.kind){const t=i.value;if(!t)continue;a=t.other||t.to,o=t.to,l=t.from;}else a=i.evaluate({zoom:r-1},t),o=i.evaluate({zoom:r},t),l=i.evaluate({zoom:r+1},t);\"constant\"===s.kind?u=c=h=s.value:(u=s.evaluate({zoom:r-1},t),c=s.evaluate({zoom:r},t),h=s.evaluate({zoom:r+1},t)),e.addDash(a,u),e.addDash(o,c),e.addDash(l,h);const p=e.getKey(a,u),f=e.getKey(o,c),d=e.getKey(l,h);t.patterns[n.id]={min:p,mid:f,max:d};}}update(t,e,r,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r,n);}addFeatures(t,e,r,n,i){for(const t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r,n);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=t.createVertexBuffer(this.layoutVertexArray2,Gc)),this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,qc),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}lineFeatureClips(t){if(t.properties&&t.properties.hasOwnProperty(\"mapbox_clip_start\")&&t.properties.hasOwnProperty(\"mapbox_clip_end\"))return {start:+t.properties.mapbox_clip_start,end:+t.properties.mapbox_clip_end}}addFeature(t,e,r,n,i,s){const a=this.layers[0].layout,o=a.get(\"line-join\").evaluate(t,{}),l=a.get(\"line-cap\").evaluate(t,{}),u=a.get(\"line-miter-limit\"),c=a.get(\"line-round-limit\");this.lineClips=this.lineFeatureClips(t);for(const r of e)this.addLine(r,t,o,l,u,c);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,s,n);}addLine(t,e,r,n,i,s){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineSoFar=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let e=0;e<t.length-1;e++)this.totalDistance+=t[e].dist(t[e+1]);this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance);}const a=\"Polygon\"===Zc[e.type];let o=t.length;for(;o>=2&&t[o-1].equals(t[o-2]);)o--;let l=0;for(;l<o-1&&t[l].equals(t[l+1]);)l++;if(o<(a?3:2))return;\"bevel\"===r&&(i=1.05);const u=this.overscaling<=16?122880/(512*this.overscaling):0,c=this.segments.prepareSegment(10*o,this.layoutVertexArray,this.indexArray);let h,p,f,d,y;this.e1=this.e2=-1,a&&(h=t[o-2],y=t[l].sub(h)._unit()._perp());for(let e=l;e<o;e++){if(f=e===o-1?a?t[l+1]:void 0:t[e+1],f&&t[e].equals(f))continue;y&&(d=y),h&&(p=h),h=t[e],y=f?f.sub(h)._unit()._perp():d,d=d||y;let m=d.add(y);0===m.x&&0===m.y||m._unit();const g=d.x*y.x+d.y*y.y,x=m.x*y.x+m.y*y.y,v=0!==x?1/x:1/0,b=2*Math.sqrt(2-2*x),_=x<Xc&&p&&f,w=d.x*y.y-d.y*y.x>0;if(_&&e>l){const t=h.dist(p);if(t>2*u){const e=h.sub(h.sub(p)._mult(u/t)._round());this.updateDistance(p,e),this.addCurrentVertex(e,d,0,0,c),p=e;}}const A=p&&f;let S=A?r:a?\"butt\":n;if(A&&\"round\"===S&&(v<s?S=\"miter\":v<=2&&(S=\"fakeround\")),\"miter\"===S&&v>i&&(S=\"bevel\"),\"bevel\"===S&&(v>2&&(S=\"flipbevel\"),v<i&&(S=\"miter\")),p&&this.updateDistance(p,h),\"miter\"===S)m._mult(v),this.addCurrentVertex(h,m,0,0,c);else if(\"flipbevel\"===S){if(v>100)m=y.mult(-1);else {const t=v*d.add(y).mag()/d.sub(y).mag();m._perp()._mult(t*(w?-1:1));}this.addCurrentVertex(h,m,0,0,c),this.addCurrentVertex(h,m.mult(-1),0,0,c);}else if(\"bevel\"===S||\"fakeround\"===S){const t=-Math.sqrt(v*v-1),e=w?t:0,r=w?0:t;if(p&&this.addCurrentVertex(h,d,e,r,c),\"fakeround\"===S){const t=Math.round(180*b/Math.PI/20);for(let e=1;e<t;e++){let r=e/t;if(.5!==r){const t=r-.5;r+=r*t*(r-1)*((1.0904+g*(g*(3.55645-1.43519*g)-3.2452))*t*t+(.848013+g*(.215638*g-1.06021)));}const n=y.sub(d)._mult(r)._add(d)._unit()._mult(w?-1:1);this.addHalfVertex(h,n.x,n.y,!1,w,0,c);}}f&&this.addCurrentVertex(h,y,-e,-r,c);}else if(\"butt\"===S)this.addCurrentVertex(h,m,0,0,c);else if(\"square\"===S){const t=p?1:-1;p||this.addCurrentVertex(h,m,t,t,c),this.addCurrentVertex(h,m,0,0,c),p&&this.addCurrentVertex(h,m,t,t,c);}else \"round\"===S&&(p&&(this.addCurrentVertex(h,d,0,0,c),this.addCurrentVertex(h,d,1,1,c,!0)),f&&(this.addCurrentVertex(h,y,-1,-1,c,!0),this.addCurrentVertex(h,y,0,0,c)));if(_&&e<o-1){const t=h.dist(f);if(t>2*u){const e=h.add(f.sub(h)._mult(u/t)._round());this.updateDistance(h,e),this.addCurrentVertex(e,y,0,0,c),h=e;}}}}addCurrentVertex(t,e,r,n,i,s=!1){const a=e.y*n-e.x,o=-e.y-e.x*n;this.addHalfVertex(t,e.x+e.y*r,e.y-e.x*r,s,!1,r,i),this.addHalfVertex(t,a,o,s,!0,-n,i);}addHalfVertex({x:t,y:e},r,n,i,s,a,o){this.layoutVertexArray.emplaceBack((t<<1)+(i?1:0),(e<<1)+(s?1:0),Math.round(63*r)+128,Math.round(63*n)+128,1+(0===a?0:a<0?-1:1),0,this.lineSoFar),this.lineClips&&this.layoutVertexArray2.emplaceBack(this.scaledDistance,this.lineClipsArray.length,this.lineClips.start,this.lineClips.end);const l=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,l),o.primitiveLength++),s?this.e2=l:this.e1=l;}updateScaledDistance(){if(this.lineClips){const t=this.totalDistance/(this.lineClips.end-this.lineClips.start);this.scaledDistance=this.distance/this.totalDistance,this.lineSoFar=t*this.lineClips.start+this.distance;}else this.lineSoFar=this.distance;}updateDistance(t,e){this.distance+=t.dist(e),this.updateScaledDistance();}}Pi(Kc,\"LineBucket\",{omit:[\"layers\",\"patternFeatures\"]});const Hc=new Zs({\"line-cap\":new Os(Gt.layout_line[\"line-cap\"]),\"line-join\":new Os(Gt.layout_line[\"line-join\"]),\"line-miter-limit\":new $s(Gt.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new $s(Gt.layout_line[\"line-round-limit\"]),\"line-sort-key\":new Os(Gt.layout_line[\"line-sort-key\"])});var Yc={paint:new Zs({\"line-opacity\":new Os(Gt.paint_line[\"line-opacity\"]),\"line-color\":new Os(Gt.paint_line[\"line-color\"]),\"line-translate\":new $s(Gt.paint_line[\"line-translate\"]),\"line-translate-anchor\":new $s(Gt.paint_line[\"line-translate-anchor\"]),\"line-width\":new Os(Gt.paint_line[\"line-width\"]),\"line-gap-width\":new Os(Gt.paint_line[\"line-gap-width\"]),\"line-offset\":new Os(Gt.paint_line[\"line-offset\"]),\"line-blur\":new Os(Gt.paint_line[\"line-blur\"]),\"line-dasharray\":new qs(Gt.paint_line[\"line-dasharray\"]),\"line-pattern\":new qs(Gt.paint_line[\"line-pattern\"]),\"line-gradient\":new Gs(Gt.paint_line[\"line-gradient\"]),\"line-trim-offset\":new $s(Gt.paint_line[\"line-trim-offset\"])}),layout:Hc};const Wc=new class extends Os{possiblyEvaluate(t,e){return e=new Cs(Math.floor(e.zoom),{now:e.now,fadeDuration:e.fadeDuration,zoomHistory:e.zoomHistory,transition:e.transition}),super.possiblyEvaluate(t,e)}evaluate(t,e,r,n){return e=v({},e,{zoom:Math.floor(e.zoom)}),super.evaluate(t,e,r,n)}}(Yc.paint.properties[\"line-width\"].specification);function Jc(t,e){return e>0?e+2*t:t}Wc.useIntegerZoom=!0;const Qc=Ws([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_tex_size\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),th=Ws([{name:\"a_globe_anchor\",components:3,type:\"Int16\"},{name:\"a_globe_normal\",components:3,type:\"Float32\"}],4),eh=Ws([{name:\"a_projected_pos\",components:4,type:\"Float32\"}],4);Ws([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4);const rh=Ws([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}]),nh=Ws([{name:\"a_size_scale\",components:1,type:\"Float32\"},{name:\"a_padding\",components:2,type:\"Float32\"}]);Ws([{type:\"Int16\",name:\"projectedAnchorX\"},{type:\"Int16\",name:\"projectedAnchorY\"},{type:\"Int16\",name:\"projectedAnchorZ\"},{type:\"Int16\",name:\"tileAnchorX\"},{type:\"Int16\",name:\"tileAnchorY\"},{type:\"Float32\",name:\"x1\"},{type:\"Float32\",name:\"y1\"},{type:\"Float32\",name:\"x2\"},{type:\"Float32\",name:\"y2\"},{type:\"Int16\",name:\"padding\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]);const ih=Ws([{name:\"a_pos\",components:3,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4),sh=Ws([{name:\"a_pos_2f\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);Ws([{name:\"triangle\",components:3,type:\"Uint16\"}]),Ws([{type:\"Int16\",name:\"projectedAnchorX\"},{type:\"Int16\",name:\"projectedAnchorY\"},{type:\"Int16\",name:\"projectedAnchorZ\"},{type:\"Float32\",name:\"tileAnchorX\"},{type:\"Float32\",name:\"tileAnchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"},{type:\"Uint8\",name:\"flipState\"}]),Ws([{type:\"Int16\",name:\"projectedAnchorX\"},{type:\"Int16\",name:\"projectedAnchorY\"},{type:\"Int16\",name:\"projectedAnchorZ\"},{type:\"Float32\",name:\"tileAnchorX\"},{type:\"Float32\",name:\"tileAnchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",components:2,name:\"textOffset\"},{type:\"Float32\",name:\"collisionCircleDiameter\"}]),Ws([{type:\"Float32\",name:\"offsetX\"}]),Ws([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);var ah=24;const oh=128;function lh(t,e){const{expression:r}=e;if(\"constant\"===r.kind)return {kind:\"constant\",layoutSize:r.evaluate(new Cs(t+1))};if(\"source\"===r.kind)return {kind:\"source\"};{const{zoomStops:e,interpolationType:n}=r;let i=0;for(;i<e.length&&e[i]<=t;)i++;i=Math.max(0,i-1);let s=i;for(;s<e.length&&e[s]<t+1;)s++;s=Math.min(e.length-1,s);const a=e[i],o=e[s];return \"composite\"===r.kind?{kind:\"composite\",minZoom:a,maxZoom:o,interpolationType:n}:{kind:\"camera\",minZoom:a,maxZoom:o,minSize:r.evaluate(new Cs(a)),maxSize:r.evaluate(new Cs(o)),interpolationType:n}}}function uh(t,{uSize:e,uSizeT:r},{lowerSize:n,upperSize:i}){return \"source\"===t.kind?n/oh:\"composite\"===t.kind?xr(n/oh,i/oh,r):e}function ch(t,e){let r=0,n=0;if(\"constant\"===t.kind)n=t.layoutSize;else if(\"source\"!==t.kind){const{interpolationType:i,minZoom:s,maxZoom:a}=t,o=i?d(jr.interpolationFactor(i,e,s,a),0,1):0;\"camera\"===t.kind?n=xr(t.minSize,t.maxSize,o):r=o;}return {uSizeT:r,uSize:n}}var hh=Object.freeze({__proto__:null,getSizeData:lh,evaluateSizeForFeature:uh,evaluateSizeForZoom:ch,SIZE_PACK_FACTOR:oh});function ph(t,e,r){return t.sections.forEach((t=>{t.text=function(t,e,r){const n=e.layout.get(\"text-transform\").evaluate(r,{});return \"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),Es.applyArabicShaping&&(t=Es.applyArabicShaping(t)),t}(t.text,e,r);})),t}const fh={\"!\":\"︕\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",\"(\":\"︵\",\")\":\"︶\",\"*\":\"*\",\"+\":\"+\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\"/\":\"/\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\"=\":\"=\",\">\":\"﹀\",\"?\":\"︖\",\"@\":\"@\",\"[\":\"﹇\",\"\\\\\":\"\\",\"]\":\"﹈\",\"^\":\"^\",_:\"︳\",\"`\":\"`\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"~\":\"~\",\"¢\":\"¢\",\"£\":\"£\",\"¥\":\"¥\",\"¦\":\"¦\",\"¬\":\"¬\",\"¯\":\" ̄\",\"–\":\"︲\",\"—\":\"︱\",\"‘\":\"﹃\",\"’\":\"﹄\",\"“\":\"﹁\",\"”\":\"﹂\",\"…\":\"︙\",\"‧\":\"・\",\"₩\":\"₩\",\"、\":\"︑\",\"。\":\"︒\",\"〈\":\"︿\",\"〉\":\"﹀\",\"《\":\"︽\",\"》\":\"︾\",\"「\":\"﹁\",\"」\":\"﹂\",\"『\":\"﹃\",\"』\":\"﹄\",\"【\":\"︻\",\"】\":\"︼\",\"〔\":\"︹\",\"〕\":\"︺\",\"〖\":\"︗\",\"〗\":\"︘\",\"!\":\"︕\",\"(\":\"︵\",\")\":\"︶\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\">\":\"﹀\",\"?\":\"︖\",\"[\":\"﹇\",\"]\":\"﹈\",\"_\":\"︳\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"⦅\":\"︵\",\"⦆\":\"︶\",\"。\":\"︒\",\"「\":\"﹁\",\"」\":\"﹂\"};function dh(t){return \"︶\"===t||\"﹈\"===t||\"︸\"===t||\"﹄\"===t||\"﹂\"===t||\"︾\"===t||\"︼\"===t||\"︺\"===t||\"︘\"===t||\"﹀\"===t||\"︐\"===t||\"︓\"===t||\"︔\"===t||\"`\"===t||\" ̄\"===t||\"︑\"===t||\"︒\"===t}function yh(t){return \"︵\"===t||\"﹇\"===t||\"︷\"===t||\"﹃\"===t||\"﹁\"===t||\"︽\"===t||\"︻\"===t||\"︹\"===t||\"︗\"===t||\"︿\"===t}var mh=function(t,e,r,n,i){var s,a,o=8*i-n-1,l=(1<<o)-1,u=l>>1,c=-7,h=r?i-1:0,p=r?-1:1,f=t[e+h];for(h+=p,s=f&(1<<-c)-1,f>>=-c,c+=o;c>0;s=256*s+t[e+h],h+=p,c-=8);for(a=s&(1<<-c)-1,s>>=-c,c+=n;c>0;a=256*a+t[e+h],h+=p,c-=8);if(0===s)s=1-u;else {if(s===l)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,n),s-=u;}return (f?-1:1)*a*Math.pow(2,s-n)},gh=function(t,e,r,n,i,s){var a,o,l,u=8*s-i-1,c=(1<<u)-1,h=c>>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:s-1,d=n?1:-1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,a=c):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=a+h>=1?p/l:p*Math.pow(2,1-h))*l>=2&&(a++,l/=2),a+h>=c?(o=0,a=c):a+h>=1?(o=(e*l-1)*Math.pow(2,i),a+=h):(o=e*Math.pow(2,h-1)*Math.pow(2,i),a=0));i>=8;t[r+f]=255&o,f+=d,o/=256,i-=8);for(a=a<<i|o,u+=i;u>0;t[r+f]=255&a,f+=d,a/=256,u-=8);t[r+f-d]|=128*y;},xh=vh;function vh(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length;}vh.Varint=0,vh.Fixed64=1,vh.Bytes=2,vh.Fixed32=5;var bh=4294967296,_h=1/bh,wh=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf8\");function Ah(t){return t.type===vh.Bytes?t.readVarint()+t.pos:t.pos+1}function Sh(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function kh(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i];}function Ih(t,e){for(var r=0;r<t.length;r++)e.writeVarint(t[r]);}function Mh(t,e){for(var r=0;r<t.length;r++)e.writeSVarint(t[r]);}function zh(t,e){for(var r=0;r<t.length;r++)e.writeFloat(t[r]);}function Th(t,e){for(var r=0;r<t.length;r++)e.writeDouble(t[r]);}function Bh(t,e){for(var r=0;r<t.length;r++)e.writeBoolean(t[r]);}function Eh(t,e){for(var r=0;r<t.length;r++)e.writeFixed32(t[r]);}function Ch(t,e){for(var r=0;r<t.length;r++)e.writeSFixed32(t[r]);}function Ph(t,e){for(var r=0;r<t.length;r++)e.writeFixed64(t[r]);}function Dh(t,e){for(var r=0;r<t.length;r++)e.writeSFixed64(t[r]);}function Vh(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+16777216*t[e+3]}function Fh(t,e,r){t[r]=e,t[r+1]=e>>>8,t[r+2]=e>>>16,t[r+3]=e>>>24;}function Lh(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}function Rh(t,e,r){e.glyphs=[],1===t&&r.readMessage(Uh,e);}function Uh(t,e,r){if(3===t){const{id:t,bitmap:n,width:i,height:s,left:a,top:o,advance:l}=r.readMessage(jh,{});e.glyphs.push({id:t,bitmap:new hu({width:i+6,height:s+6},n),metrics:{width:i,height:s,left:a,top:o,advance:l}});}else 4===t?e.ascender=r.readSVarint():5===t&&(e.descender=r.readSVarint());}function jh(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint());}function $h(t){let e=0,r=0;for(const n of t)e+=n.w*n.h,r=Math.max(r,n.w);t.sort(((t,e)=>e.h-t.h));const n=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}];let i=0,s=0;for(const e of t)for(let t=n.length-1;t>=0;t--){const r=n[t];if(!(e.w>r.w||e.h>r.h)){if(e.x=r.x,e.y=r.y,s=Math.max(s,e.y+e.h),i=Math.max(i,e.x+e.w),e.w===r.w&&e.h===r.h){const e=n.pop();t<n.length&&(n[t]=e);}else e.h===r.h?(r.x+=e.w,r.w-=e.w):e.w===r.w?(r.y+=e.h,r.h-=e.h):(n.push({x:r.x+e.w,y:r.y,w:r.w-e.w,h:e.h}),r.y+=e.h,r.h-=e.h);break}}return {w:i,h:s,fill:e/(i*s)||0}}vh.prototype={destroy:function(){this.buf=null;},readFields:function(t,e,r){for(r=r||this.length;this.pos<r;){var n=this.readVarint(),i=n>>3,s=this.pos;this.type=7&n,t(i,e,this),this.pos===s&&this.skip(n);}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=Vh(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=Lh(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=Vh(this.buf,this.pos)+Vh(this.buf,this.pos+4)*bh;return this.pos+=8,t},readSFixed64:function(){var t=Vh(this.buf,this.pos)+Lh(this.buf,this.pos+4)*bh;return this.pos+=8,t},readFloat:function(){var t=mh(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=mh(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,s=r.buf;if(n=(112&(i=s[r.pos++]))>>4,i<128)return Sh(t,n,e);if(n|=(127&(i=s[r.pos++]))<<3,i<128)return Sh(t,n,e);if(n|=(127&(i=s[r.pos++]))<<10,i<128)return Sh(t,n,e);if(n|=(127&(i=s[r.pos++]))<<17,i<128)return Sh(t,n,e);if(n|=(127&(i=s[r.pos++]))<<24,i<128)return Sh(t,n,e);if(n|=(1&(i=s[r.pos++]))<<31,i<128)return Sh(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&wh?function(t,e,r){return wh.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){for(var n=\"\",i=e;i<r;){var s,a,o,l=t[i],u=null,c=l>239?4:l>223?3:l>191?2:1;if(i+c>r)break;1===c?l<128&&(u=l):2===c?128==(192&(s=t[i+1]))&&(u=(31&l)<<6|63&s)<=127&&(u=null):3===c?(a=t[i+2],128==(192&(s=t[i+1]))&&128==(192&a)&&((u=(15&l)<<12|(63&s)<<6|63&a)<=2047||u>=55296&&u<=57343)&&(u=null)):4===c&&(a=t[i+2],o=t[i+3],128==(192&(s=t[i+1]))&&128==(192&a)&&128==(192&o)&&((u=(15&l)<<18|(63&s)<<12|(63&a)<<6|63&o)<=65535||u>=1114112)&&(u=null)),null===u?(u=65533,c=1):u>65535&&(u-=65536,n+=String.fromCharCode(u>>>10&1023|55296),u=56320|1023&u),n+=String.fromCharCode(u),i+=c;}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==vh.Bytes)return t.push(this.readVarint(e));var r=Ah(this);for(t=t||[];this.pos<r;)t.push(this.readVarint(e));return t},readPackedSVarint:function(t){if(this.type!==vh.Bytes)return t.push(this.readSVarint());var e=Ah(this);for(t=t||[];this.pos<e;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){if(this.type!==vh.Bytes)return t.push(this.readBoolean());var e=Ah(this);for(t=t||[];this.pos<e;)t.push(this.readBoolean());return t},readPackedFloat:function(t){if(this.type!==vh.Bytes)return t.push(this.readFloat());var e=Ah(this);for(t=t||[];this.pos<e;)t.push(this.readFloat());return t},readPackedDouble:function(t){if(this.type!==vh.Bytes)return t.push(this.readDouble());var e=Ah(this);for(t=t||[];this.pos<e;)t.push(this.readDouble());return t},readPackedFixed32:function(t){if(this.type!==vh.Bytes)return t.push(this.readFixed32());var e=Ah(this);for(t=t||[];this.pos<e;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){if(this.type!==vh.Bytes)return t.push(this.readSFixed32());var e=Ah(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){if(this.type!==vh.Bytes)return t.push(this.readFixed64());var e=Ah(this);for(t=t||[];this.pos<e;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){if(this.type!==vh.Bytes)return t.push(this.readSFixed64());var e=Ah(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed64());return t},skip:function(t){var e=7&t;if(e===vh.Varint)for(;this.buf[this.pos++]>127;);else if(e===vh.Bytes)this.pos=this.readVarint()+this.pos;else if(e===vh.Fixed32)this.pos+=4;else {if(e!==vh.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8;}},writeTag:function(t,e){this.writeVarint(t<<3|e);},realloc:function(t){for(var e=this.length||16;e<this.pos+t;)e*=2;if(e!==this.length){var r=new Uint8Array(e);r.set(this.buf),this.buf=r,this.length=e;}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),Fh(this.buf,t,this.pos),this.pos+=4;},writeSFixed32:function(t){this.realloc(4),Fh(this.buf,t,this.pos),this.pos+=4;},writeFixed64:function(t){this.realloc(8),Fh(this.buf,-1&t,this.pos),Fh(this.buf,Math.floor(t*_h),this.pos+4),this.pos+=8;},writeSFixed64:function(t){this.realloc(8),Fh(this.buf,-1&t,this.pos),Fh(this.buf,Math.floor(t*_h),this.pos+4),this.pos+=8;},writeVarint:function(t){(t=+t||0)>268435455||t<0?function(t,e){var r,n;if(t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,r.buf[r.pos]=127&(t>>>=7);}(r,0,e),function(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))));}(n,e);}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))));},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t);},writeBoolean:function(t){this.writeVarint(Boolean(t));},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,s=0;s<e.length;s++){if((n=e.charCodeAt(s))>55295&&n<57344){if(!i){n>56319||s+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null;}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128);}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&kh(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r;},writeFloat:function(t){this.realloc(4),gh(this.buf,t,this.pos,!0,23,4),this.pos+=4;},writeDouble:function(t){this.realloc(8),gh(this.buf,t,this.pos,!0,52,8),this.pos+=8;},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r<e;r++)this.buf[this.pos++]=t[r];},writeRawMessage:function(t,e){this.pos++;var r=this.pos;t(e,this);var n=this.pos-r;n>=128&&kh(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n;},writeMessage:function(t,e,r){this.writeTag(t,vh.Bytes),this.writeRawMessage(e,r);},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,Ih,e);},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Mh,e);},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,Bh,e);},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,zh,e);},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,Th,e);},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,Eh,e);},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,Ch,e);},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,Ph,e);},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,Dh,e);},writeBytesField:function(t,e){this.writeTag(t,vh.Bytes),this.writeBytes(e);},writeFixed32Field:function(t,e){this.writeTag(t,vh.Fixed32),this.writeFixed32(e);},writeSFixed32Field:function(t,e){this.writeTag(t,vh.Fixed32),this.writeSFixed32(e);},writeFixed64Field:function(t,e){this.writeTag(t,vh.Fixed64),this.writeFixed64(e);},writeSFixed64Field:function(t,e){this.writeTag(t,vh.Fixed64),this.writeSFixed64(e);},writeVarintField:function(t,e){this.writeTag(t,vh.Varint),this.writeVarint(e);},writeSVarintField:function(t,e){this.writeTag(t,vh.Varint),this.writeSVarint(e);},writeStringField:function(t,e){this.writeTag(t,vh.Bytes),this.writeString(e);},writeFloatField:function(t,e){this.writeTag(t,vh.Fixed32),this.writeFloat(e);},writeDoubleField:function(t,e){this.writeTag(t,vh.Fixed64),this.writeDouble(e);},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e));}};class Oh{constructor(t,{pixelRatio:e,version:r,stretchX:n,stretchY:i,content:s}){this.paddedRect=t,this.pixelRatio=e,this.stretchX=n,this.stretchY=i,this.content=s,this.version=r;}get tl(){return [this.paddedRect.x+1,this.paddedRect.y+1]}get br(){return [this.paddedRect.x+this.paddedRect.w-1,this.paddedRect.y+this.paddedRect.h-1]}get displaySize(){return [(this.paddedRect.w-2)/this.pixelRatio,(this.paddedRect.h-2)/this.pixelRatio]}}class qh{constructor(t,e){const r={},n={};this.haveRenderCallbacks=[];const i=[];this.addImages(t,r,i),this.addImages(e,n,i);const{w:s,h:a}=$h(i),o=new pu({width:s||1,height:a||1});for(const e in t){const n=t[e],i=r[e].paddedRect;pu.copy(n.data,o,{x:0,y:0},{x:i.x+1,y:i.y+1},n.data);}for(const t in e){const r=e[t],i=n[t].paddedRect,s=i.x+1,a=i.y+1,l=r.data.width,u=r.data.height;pu.copy(r.data,o,{x:0,y:0},{x:s,y:a},r.data),pu.copy(r.data,o,{x:0,y:u-1},{x:s,y:a-1},{width:l,height:1}),pu.copy(r.data,o,{x:0,y:0},{x:s,y:a+u},{width:l,height:1}),pu.copy(r.data,o,{x:l-1,y:0},{x:s-1,y:a},{width:1,height:u}),pu.copy(r.data,o,{x:0,y:0},{x:s+l,y:a},{width:1,height:u});}this.image=o,this.iconPositions=r,this.patternPositions=n;}addImages(t,e,r){for(const n in t){const i=t[n],s={x:0,y:0,w:i.data.width+2,h:i.data.height+2};r.push(s),e[n]=new Oh(s,i),i.hasRenderCallback&&this.haveRenderCallbacks.push(n);}}patchUpdatedImages(t,e){this.haveRenderCallbacks=this.haveRenderCallbacks.filter((e=>t.hasImage(e))),t.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const r in t.updatedImages)this.patchUpdatedImage(this.iconPositions[r],t.getImage(r),e),this.patchUpdatedImage(this.patternPositions[r],t.getImage(r),e);}patchUpdatedImage(t,e,r){if(!t||!e)return;if(t.version===e.version)return;t.version=e.version;const[n,i]=t.tl;r.update(e.data,void 0,{x:n,y:i});}}Pi(Oh,\"ImagePosition\"),Pi(qh,\"ImageAtlas\");const Nh={horizontal:1,vertical:2,horizontalOnly:3};class Gh{constructor(){this.scale=1,this.fontStack=\"\",this.imageName=null;}static forText(t,e){const r=new Gh;return r.scale=t||1,r.fontStack=e,r}static forImage(t){const e=new Gh;return e.imageName=t,e}}class Zh{constructor(){this.text=\"\",this.sectionIndex=[],this.sections=[],this.imageSectionID=null;}static fromFeature(t,e){const r=new Zh;for(let n=0;n<t.sections.length;n++){const i=t.sections[n];i.image?r.addImageSection(i):r.addTextSection(i,e);}return r}length(){return this.text.length}getSection(t){return this.sections[this.sectionIndex[t]]}getSections(){return this.sections}getSectionIndex(t){return this.sectionIndex[t]}getCharCode(t){return this.text.charCodeAt(t)}verticalizePunctuation(t){this.text=function(t,e){let r=\"\";for(let n=0;n<t.length;n++){const i=t.charCodeAt(n+1)||null,s=t.charCodeAt(n-1)||null;r+=!e&&(i&&ms(i)&&!fh[t[n+1]]||s&&ms(s)&&!fh[t[n-1]])||!fh[t[n]]?t[n]:fh[t[n]];}return r}(this.text,t);}trim(){let t=0;for(let e=0;e<this.text.length&&Kh[this.text.charCodeAt(e)];e++)t++;let e=this.text.length;for(let r=this.text.length-1;r>=0&&r>=t&&Kh[this.text.charCodeAt(r)];r--)e--;this.text=this.text.substring(t,e),this.sectionIndex=this.sectionIndex.slice(t,e);}substring(t,e){const r=new Zh;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce(((t,e)=>Math.max(t,this.sections[e].scale)),0)}addTextSection(t,e){this.text+=t.text,this.sections.push(Gh.forText(t.scale,t.fontStack||e));const r=this.sections.length-1;for(let e=0;e<t.text.length;++e)this.sectionIndex.push(r);}addImageSection(t){const e=t.image?t.image.name:\"\";if(0===e.length)return void E(\"Can't add FormattedSection with an empty image.\");const r=this.getNextImageSectionCharCode();r?(this.text+=String.fromCharCode(r),this.sections.push(Gh.forImage(e)),this.sectionIndex.push(this.sections.length-1)):E(\"Reached maximum number of images 6401\");}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function Xh(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y){const m=Zh.fromFeature(t,i);let g;h===Nh.vertical&&m.verticalizePunctuation(p);const{processBidirectionalText:x,processStyledBidirectionalText:v}=Es;if(x&&1===m.sections.length){g=[];const t=x(m.toString(),ep(m,u,s,e,n,f,d));for(const e of t){const t=new Zh;t.text=e,t.sections=m.sections;for(let r=0;r<e.length;r++)t.sectionIndex.push(0);g.push(t);}}else if(v){g=[];const t=v(m.text,m.sectionIndex,ep(m,u,s,e,n,f,d));for(const e of t){const t=new Zh;t.text=e[0],t.sectionIndex=e[1],t.sections=m.sections,g.push(t);}}else g=function(t,e){const r=[],n=t.text;let i=0;for(const n of e)r.push(t.substring(i,n)),i=n;return i<n.length&&r.push(t.substring(i,n.length)),r}(m,ep(m,u,s,e,n,f,d));const b=[],_={positionedLines:b,text:m.toString(),top:c[1],bottom:c[1],left:c[0],right:c[0],writingMode:h,iconsInText:!1,verticalizable:!1,hasBaseline:!1};return function(t,e,r,n,i,s,a,o,l,u,c,h){let p=0,f=0,d=0;const y=\"right\"===o?1:\"left\"===o?0:.5;let m=!1;for(const t of i){const r=t.getSections();for(const t of r){if(t.imageName)continue;const r=e[t.fontStack];if(r&&(m=void 0!==r.ascender&&void 0!==r.descender,!m))break}if(!m)break}let g=0;for(const a of i){a.trim();const i=a.getMaxScale(),o=(i-1)*ah,v={positionedGlyphs:[],lineOffset:0};t.positionedLines[g]=v;const b=v.positionedGlyphs;let _=0;if(!a.length()){f+=s,++g;continue}let w=0,A=0;for(let s=0;s<a.length();s++){const o=a.getSection(s),d=a.getSectionIndex(s),y=a.getCharCode(s);let g=o.scale,v=null,S=null,k=null,I=ah,M=0;const z=!(l===Nh.horizontal||!c&&!ys(y)||c&&(Kh[y]||(x=y,Ui(x)||ji(x)||$i(x)||as(x)||cs(x))));if(o.imageName){const e=n[o.imageName];if(!e)continue;k=o.imageName,t.iconsInText=t.iconsInText||!0,S=e.paddedRect;const r=e.displaySize;g=g*ah/h,v={width:r[0],height:r[1],left:1,top:-3,advance:z?r[1]:r[0],localGlyph:!1},M=m?-v.height*g:i*ah-17-r[1]*g,I=v.advance;const s=(z?r[0]:r[1])*g-ah*i;s>0&&s>_&&(_=s);}else {const t=r[o.fontStack];if(!t)continue;t[y]&&(S=t[y]);const n=e[o.fontStack];if(!n)continue;const s=n.glyphs[y];if(!s)continue;if(v=s.metrics,I=8203!==y?ah:0,m){const t=void 0!==n.ascender?Math.abs(n.ascender):0,e=void 0!==n.descender?Math.abs(n.descender):0,r=(t+e)*g;w<r&&(w=r,A=(t-e)/2*g),M=-t*g;}else M=(i-g)*ah-17;}z?(t.verticalizable=!0,b.push({glyph:y,imageName:k,x:p,y:f+M,vertical:z,scale:g,localGlyph:v.localGlyph,fontStack:o.fontStack,sectionIndex:d,metrics:v,rect:S}),p+=I*g+u):(b.push({glyph:y,imageName:k,x:p,y:f+M,vertical:z,scale:g,localGlyph:v.localGlyph,fontStack:o.fontStack,sectionIndex:d,metrics:v,rect:S}),p+=v.advance*g+u);}0!==b.length&&(d=Math.max(p-u,d),m?np(b,y,_,A,s*i/2):np(b,y,_,0,s/2)),p=0;const S=s*i+_;v.lineOffset=Math.max(_,o),f+=S,++g;}var x;const v=f,{horizontalAlign:b,verticalAlign:_}=rp(a);((function(t,e,r,n,i,s){const a=(e-r)*i,o=-s*n;for(const e of t)for(const t of e.positionedGlyphs)t.x+=a,t.y+=o;}))(t.positionedLines,y,b,_,d,v),t.top+=-_*v,t.bottom=t.top+v,t.left+=-b*d,t.right=t.left+d,t.hasBaseline=m;}(_,e,r,n,g,a,o,l,h,u,p,y),!function(t){for(const e of t)if(0!==e.positionedGlyphs.length)return !1;return !0}(b)&&_}const Kh={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Hh={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function Yh(t,e,r,n,i,s){if(e.imageName){const t=n[e.imageName];return t?t.displaySize[0]*e.scale*ah/s+i:0}{const n=r[e.fontStack],s=n&&n.glyphs[t];return s?s.metrics.advance*e.scale+i:0}}function Wh(t,e,r,n){const i=Math.pow(t-e,2);return n?t<e?i/2:2*i:i+Math.abs(r)*r}function Jh(t,e,r){let n=0;return 10===t&&(n-=1e4),r&&(n+=150),40!==t&&65288!==t||(n+=50),41!==e&&65289!==e||(n+=50),n}function Qh(t,e,r,n,i,s){let a=null,o=Wh(e,r,i,s);for(const t of n){const n=Wh(e-t.x,r,i,s)+t.badness;n<=o&&(a=t,o=n);}return {index:t,x:e,priorBreak:a,badness:o}}function tp(t){return t?tp(t.priorBreak).concat(t.index):[]}function ep(t,e,r,n,i,s,a){if(\"point\"!==s)return [];if(!t)return [];const o=[],l=function(t,e,r,n,i,s){let a=0;for(let r=0;r<t.length();r++){const o=t.getSection(r);a+=Yh(t.getCharCode(r),o,n,i,e,s);}return a/Math.max(1,Math.ceil(a/r))}(t,e,r,n,i,a),u=t.text.indexOf(\"​\")>=0;let c=0;for(let r=0;r<t.length();r++){const s=t.getSection(r),p=t.getCharCode(r);if(Kh[p]||(c+=Yh(p,s,n,i,e,a)),r<t.length()-1){const e=!((h=p)<11904||!(Hi(h)||Ki(h)||ls(h)||ss(h)||Qi(h)||Oi(h)||Yi(h)||Gi(h)||ts(h)||es(h)||Ji(h)||hs(h)||Zi(h)||Ni(h)||qi(h)||Wi(h)||Xi(h)||os(h)||ns(h)||rs(h)));(Hh[p]||e||s.imageName)&&o.push(Qh(r+1,c,l,o,Jh(p,t.getCharCode(r+1),e&&u),!1));}}var h;return tp(Qh(t.length(),c,l,o,0,!0))}function rp(t){let e=.5,r=.5;switch(t){case\"right\":case\"top-right\":case\"bottom-right\":e=1;break;case\"left\":case\"top-left\":case\"bottom-left\":e=0;}switch(t){case\"bottom\":case\"bottom-right\":case\"bottom-left\":r=1;break;case\"top\":case\"top-right\":case\"top-left\":r=0;}return {horizontalAlign:e,verticalAlign:r}}function np(t,e,r,n,i){if(!(e||r||n||i))return;const s=t.length-1,a=t[s],o=(a.x+a.metrics.advance*a.scale)*e;for(let e=0;e<=s;e++)t[e].x-=o,t[e].y+=r+n+i;}function ip(t,e,r){const{horizontalAlign:n,verticalAlign:i}=rp(r),s=e[0]-t.displaySize[0]*n,a=e[1]-t.displaySize[1]*i;return {image:t,top:a,bottom:a+t.displaySize[1],left:s,right:s+t.displaySize[0]}}function sp(t,e,r,n,i,s){const a=t.image;let o;if(a.content){const t=a.content,e=a.pixelRatio||1;o=[t[0]/e,t[1]/e,a.displaySize[0]-t[2]/e,a.displaySize[1]-t[3]/e];}const l=e.left*s,u=e.right*s;let c,h,p,f;\"width\"===r||\"both\"===r?(f=i[0]+l-n[3],h=i[0]+u+n[1]):(f=i[0]+(l+u-a.displaySize[0])/2,h=f+a.displaySize[0]);const d=e.top*s,y=e.bottom*s;return \"height\"===r||\"both\"===r?(c=i[1]+d-n[0],p=i[1]+y+n[2]):(c=i[1]+(d+y-a.displaySize[1])/2,p=c+a.displaySize[1]),{image:a,top:c,right:h,bottom:p,left:f,collisionPadding:o}}class ap extends i{constructor(t,e,r,n,i){super(t,e),this.angle=n,this.z=r,void 0!==i&&(this.segment=i);}clone(){return new ap(this.x,this.y,this.z,this.angle,this.segment)}}function op(t,e,r,n,i){if(void 0===e.segment)return !0;let s=e,a=e.segment+1,o=0;for(;o>-r/2;){if(a--,a<0)return !1;o-=t[a].dist(s),s=t[a];}o+=t[a].dist(t[a+1]),a++;const l=[];let u=0;for(;o<r/2;){const e=t[a],r=t[a+1];if(!r)return !1;let s=t[a-1].angleTo(e)-e.angleTo(r);for(s=Math.abs((s+3*Math.PI)%(2*Math.PI)-Math.PI),l.push({distance:o,angleDelta:s}),u+=s;o-l[0].distance>n;)u-=l.shift().angleDelta;if(u>i)return !1;a++,o+=e.dist(r);}return !0}function lp(t){let e=0;for(let r=0;r<t.length-1;r++)e+=t[r].dist(t[r+1]);return e}function up(t,e,r){return t?.6*e*r:0}function cp(t,e){return Math.max(t?t.right-t.left:0,e?e.right-e.left:0)}function hp(t,e,r,n,i,s){const a=up(r,i,s),o=cp(r,n)*s;let l=0;const u=lp(t)/2;for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1],s=n.dist(i);if(l+s>u){const c=(u-l)/s,h=xr(n.x,i.x,c),p=xr(n.y,i.y,c),f=new ap(h,p,0,i.angleTo(n),r);return !a||op(t,f,o,a,e)?f:void 0}l+=s;}}function pp(t,e,r,n,i,s,a,o,l){const u=up(n,s,a),c=cp(n,i),h=c*a,p=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-h<e/4&&(e=h+e/4),fp(t,p?e/2*o%e:(c/2+2*s)*a*o%e,e,u,r,h,p,!1,l)}function fp(t,e,r,n,i,s,a,o,l){const u=s/2,c=lp(t);let h=0,p=e-r,f=[];for(let e=0;e<t.length-1;e++){const a=t[e],o=t[e+1],d=a.dist(o),y=o.angleTo(a);for(;p+r<h+d;){p+=r;const m=(p-h)/d,g=xr(a.x,o.x,m),x=xr(a.y,o.y,m);if(g>=0&&g<l&&x>=0&&x<l&&p-u>=0&&p+u<=c){const r=new ap(g,x,0,y,e);r._round(),n&&!op(t,r,s,n,i)||f.push(r);}}h+=d;}return o||f.length||a||(f=fp(t,h/2,r,n,i,s,a,!0,l)),f}function dp(t,e,r,n,s){const a=[];for(let o=0;o<t.length;o++){const l=t[o];let u;for(let t=0;t<l.length-1;t++){let o=l[t],c=l[t+1];o.x<e&&c.x<e||(o.x<e?o=new i(e,o.y+(e-o.x)/(c.x-o.x)*(c.y-o.y))._round():c.x<e&&(c=new i(e,o.y+(e-o.x)/(c.x-o.x)*(c.y-o.y))._round()),o.y<r&&c.y<r||(o.y<r?o=new i(o.x+(r-o.y)/(c.y-o.y)*(c.x-o.x),r)._round():c.y<r&&(c=new i(o.x+(r-o.y)/(c.y-o.y)*(c.x-o.x),r)._round()),o.x>=n&&c.x>=n||(o.x>=n?o=new i(n,o.y+(n-o.x)/(c.x-o.x)*(c.y-o.y))._round():c.x>=n&&(c=new i(n,o.y+(n-o.x)/(c.x-o.x)*(c.y-o.y))._round()),o.y>=s&&c.y>=s||(o.y>=s?o=new i(o.x+(s-o.y)/(c.y-o.y)*(c.x-o.x),s)._round():c.y>=s&&(c=new i(o.x+(s-o.y)/(c.y-o.y)*(c.x-o.x),s)._round()),u&&o.equals(u[u.length-1])||(u=[o],a.push(u)),u.push(c)))));}}return a}Pi(ap,\"Anchor\");const yp=1e20;function mp(t,e,r,n,i,s,a,o,l){for(let u=e;u<e+n;u++)gp(t,r*s+u,s,i,a,o,l);for(let u=r;u<r+i;u++)gp(t,u*s+e,1,n,a,o,l);}function gp(t,e,r,n,i,s,a){s[0]=0,a[0]=-yp,a[1]=yp,i[0]=t[e];for(let o=1,l=0,u=0;o<n;o++){i[o]=t[e+o*r];const n=o*o;do{const t=s[l];u=(i[o]-i[t]+n-t*t)/(o-t)/2;}while(u<=a[l]&&--l>-1);l++,s[l]=o,a[l]=u,a[l+1]=yp;}for(let o=0,l=0;o<n;o++){for(;a[l+1]<o;)l++;const n=s[l],u=o-n;t[e+o*r]=i[n]+u*u;}}const xp={none:0,ideographs:1,all:2};class vp{constructor(t,e,r){this.requestManager=t,this.localGlyphMode=e,this.localFontFamily=r,this.entries={},this.localGlyphs={200:{},400:{},500:{},900:{}};}setURL(t){this.url=t;}getGlyphs(t,e){const r=[];for(const e in t)for(const n of t[e])r.push({stack:e,id:n});g(r,(({stack:t,id:e},r)=>{let n=this.entries[t];n||(n=this.entries[t]={glyphs:{},requests:{},ranges:{},ascender:void 0,descender:void 0});let i=n.glyphs[e];if(void 0!==i)return void r(null,{stack:t,id:e,glyph:i});if(i=this._tinySDF(n,t,e),i)return n.glyphs[e]=i,void r(null,{stack:t,id:e,glyph:i});const s=Math.floor(e/256);if(256*s>65535)return void r(new Error(\"glyphs > 65535 not supported\"));if(n.ranges[s])return void r(null,{stack:t,id:e,glyph:i});let a=n.requests[s];a||(a=n.requests[s]=[],vp.loadGlyphRange(t,s,this.url,this.requestManager,((t,e)=>{if(e){n.ascender=e.ascender,n.descender=e.descender;for(const t in e.glyphs)this._doesCharSupportLocalGlyph(+t)||(n.glyphs[+t]=e.glyphs[+t]);n.ranges[s]=!0;}for(const r of a)r(t,e);delete n.requests[s];}))),a.push(((n,i)=>{n?r(n):i&&r(null,{stack:t,id:e,glyph:i.glyphs[e]||null});}));}),((t,r)=>{if(t)e(t);else if(r){const t={};for(const{stack:e,id:n,glyph:i}of r)void 0===t[e]&&(t[e]={}),void 0===t[e].glyphs&&(t[e].glyphs={}),t[e].glyphs[n]=i&&{id:i.id,bitmap:i.bitmap.clone(),metrics:i.metrics},t[e].ascender=this.entries[e].ascender,t[e].descender=this.entries[e].descender;e(null,t);}}));}_doesCharSupportLocalGlyph(t){return this.localGlyphMode!==xp.none&&(this.localGlyphMode===xp.all?!!this.localFontFamily:!!this.localFontFamily&&(es(t)||is(t)||Zi(t)||Xi(t)||Gi(t)))}_tinySDF(t,e,r){const n=this.localFontFamily;if(!n||!this._doesCharSupportLocalGlyph(r))return;let i=t.tinySDF;if(!i){let r=\"400\";/bold/i.test(e)?r=\"900\":/medium/i.test(e)?r=\"500\":/light/i.test(e)&&(r=\"200\"),i=t.tinySDF=new vp.TinySDF({fontFamily:n,fontWeight:r,fontSize:48,buffer:6,radius:16}),i.fontWeight=r;}if(this.localGlyphs[i.fontWeight][r])return this.localGlyphs[i.fontWeight][r];const s=String.fromCharCode(r),{data:a,width:o,height:l,glyphWidth:u,glyphHeight:c,glyphLeft:h,glyphTop:p,glyphAdvance:f}=i.draw(s);return this.localGlyphs[i.fontWeight][r]={id:r,bitmap:new hu({width:o,height:l},a),metrics:{width:u/2,height:c/2,left:h/2,top:p/2-27,advance:f/2,localGlyph:!0}}}}function bp(t,e,r,n){const s=[],a=t.image,o=a.pixelRatio,l=a.paddedRect.w-2,u=a.paddedRect.h-2,c=t.right-t.left,h=t.bottom-t.top,p=a.stretchX||[[0,l]],f=a.stretchY||[[0,u]],d=(t,e)=>t+e[1]-e[0],y=p.reduce(d,0),m=f.reduce(d,0),g=l-y,x=u-m;let v=0,b=y,_=0,w=m,A=0,S=g,k=0,I=x;if(a.content&&n){const t=a.content;v=_p(p,0,t[0]),_=_p(f,0,t[1]),b=_p(p,t[0],t[2]),w=_p(f,t[1],t[3]),A=t[0]-v,k=t[1]-_,S=t[2]-t[0]-b,I=t[3]-t[1]-w;}const M=(n,s,l,u)=>{const p=Ap(n.stretch-v,b,c,t.left),f=Sp(n.fixed-A,S,n.stretch,y),d=Ap(s.stretch-_,w,h,t.top),g=Sp(s.fixed-k,I,s.stretch,m),x=Ap(l.stretch-v,b,c,t.left),M=Sp(l.fixed-A,S,l.stretch,y),z=Ap(u.stretch-_,w,h,t.top),T=Sp(u.fixed-k,I,u.stretch,m),B=new i(p,d),E=new i(x,d),C=new i(x,z),P=new i(p,z),D=new i(f/o,g/o),V=new i(M/o,T/o),F=e*Math.PI/180;if(F){const t=Math.sin(F),e=Math.cos(F),r=[e,-t,t,e];B._matMult(r),E._matMult(r),P._matMult(r),C._matMult(r);}const L=n.stretch+n.fixed,R=s.stretch+s.fixed;return {tl:B,tr:E,bl:P,br:C,tex:{x:a.paddedRect.x+1+L,y:a.paddedRect.y+1+R,w:l.stretch+l.fixed-L,h:u.stretch+u.fixed-R},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:D,pixelOffsetBR:V,minFontScaleX:S/o/c,minFontScaleY:I/o/h,isSDF:r}};if(n&&(a.stretchX||a.stretchY)){const t=wp(p,g,y),e=wp(f,x,m);for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1];for(let t=0;t<e.length-1;t++)s.push(M(n,e[t],i,e[t+1]));}}else s.push(M({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:l+1},{fixed:0,stretch:u+1}));return s}function _p(t,e,r){let n=0;for(const i of t)n+=Math.max(e,Math.min(r,i[1]))-Math.max(e,Math.min(r,i[0]));return n}function wp(t,e,r){const n=[{fixed:-1,stretch:0}];for(const[e,r]of t){const t=n[n.length-1];n.push({fixed:e-t.stretch,stretch:t.stretch}),n.push({fixed:e-t.stretch,stretch:t.stretch+(r-e)});}return n.push({fixed:e+1,stretch:r}),n}function Ap(t,e,r,n){return t/e*r+n}function Sp(t,e,r,n){return t-e*r/n}function kp(t,e,r,n){const i=e+t.positionedLines[n].lineOffset;return 0===n?r+i/2:r+(i+(e+t.positionedLines[n-1].lineOffset))/2}vp.loadGlyphRange=function(t,e,r,n,i){const s=256*e,a=s+255,o=n.transformRequest(n.normalizeGlyphsURL(r).replace(\"{fontstack}\",t).replace(\"{range}\",`${s}-${a}`),zt.Glyphs);Ct(o,((t,e)=>{if(t)i(t);else if(e){const t={},r=function(t){return new xh(t).readFields(Rh,{})}(e);for(const e of r.glyphs)t[e.id]=e;i(null,{glyphs:t,ascender:r.ascender,descender:r.descender});}}));},vp.TinySDF=class{constructor({fontSize:t=24,buffer:e=3,radius:r=8,cutoff:n=.25,fontFamily:i=\"sans-serif\",fontWeight:s=\"normal\",fontStyle:a=\"normal\"}={}){this.buffer=e,this.cutoff=n,this.radius=r;const o=this.size=t+4*e,l=this._createCanvas(o),u=this.ctx=l.getContext(\"2d\",{willReadFrequently:!0});u.font=`${a} ${s} ${t}px ${i}`,u.textBaseline=\"alphabetic\",u.textAlign=\"left\",u.fillStyle=\"black\",this.gridOuter=new Float64Array(o*o),this.gridInner=new Float64Array(o*o),this.f=new Float64Array(o),this.z=new Float64Array(o+1),this.v=new Uint16Array(o);}_createCanvas(t){const e=document.createElement(\"canvas\");return e.width=e.height=t,e}draw(t){const{width:e,actualBoundingBoxAscent:r,actualBoundingBoxDescent:n,actualBoundingBoxLeft:i,actualBoundingBoxRight:s}=this.ctx.measureText(t),a=Math.ceil(r),o=Math.min(this.size-this.buffer,Math.ceil(s-i)),l=Math.min(this.size-this.buffer,a+Math.ceil(n)),u=o+2*this.buffer,c=l+2*this.buffer,h=Math.max(u*c,0),p=new Uint8ClampedArray(h),f={data:p,width:u,height:c,glyphWidth:o,glyphHeight:l,glyphTop:a,glyphLeft:0,glyphAdvance:e};if(0===o||0===l)return f;const{ctx:d,buffer:y,gridInner:m,gridOuter:g}=this;d.clearRect(y,y,o,l),d.fillText(t,y,y+a);const x=d.getImageData(y,y,o,l);g.fill(yp,0,h),m.fill(0,0,h);for(let t=0;t<l;t++)for(let e=0;e<o;e++){const r=x.data[4*(t*o+e)+3]/255;if(0===r)continue;const n=(t+y)*u+e+y;if(1===r)g[n]=0,m[n]=yp;else {const t=.5-r;g[n]=t>0?t*t:0,m[n]=t<0?t*t:0;}}mp(g,0,0,u,c,u,this.f,this.v,this.z),mp(m,y,y,o,l,u,this.f,this.v,this.z);for(let t=0;t<h;t++){const e=Math.sqrt(g[t])-Math.sqrt(m[t]);p[t]=Math.round(255-255*(e/this.radius+this.cutoff));}return f}};class Ip{constructor(t=[],e=Mp){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t);}push(t){this.data.push(t),this.length++,this._up(this.length-1);}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:r}=this,n=e[t];for(;t>0;){const i=t-1>>1,s=e[i];if(r(n,s)>=0)break;e[t]=s,t=i;}e[t]=n;}_down(t){const{data:e,compare:r}=this,n=this.length>>1,i=e[t];for(;t<n;){let n=1+(t<<1),s=e[n];const a=n+1;if(a<this.length&&r(e[a],s)<0&&(n=a,s=e[a]),r(s,i)>=0)break;e[t]=s,t=n;}e[t]=i;}}function Mp(t,e){return t<e?-1:t>e?1:0}function zp(t,e=1,r=!1){let n=1/0,s=1/0,a=-1/0,o=-1/0;const l=t[0];for(let t=0;t<l.length;t++){const e=l[t];(!t||e.x<n)&&(n=e.x),(!t||e.y<s)&&(s=e.y),(!t||e.x>a)&&(a=e.x),(!t||e.y>o)&&(o=e.y);}const u=Math.min(a-n,o-s);let c=u/2;const h=new Ip([],Tp);if(0===u)return new i(n,s);for(let e=n;e<a;e+=u)for(let r=s;r<o;r+=u)h.push(new Bp(e+c,r+c,c,t));let p=function(t){let e=0,r=0,n=0;const i=t[0];for(let t=0,s=i.length,a=s-1;t<s;a=t++){const s=i[t],o=i[a],l=s.x*o.y-o.x*s.y;r+=(s.x+o.x)*l,n+=(s.y+o.y)*l,e+=3*l;}return new Bp(r/e,n/e,0,t)}(t),f=h.length;for(;h.length;){const n=h.pop();(n.d>p.d||!p.d)&&(p=n,r&&console.log(\"found best %d after %d probes\",Math.round(1e4*n.d)/1e4,f)),n.max-p.d<=e||(c=n.h/2,h.push(new Bp(n.p.x-c,n.p.y-c,c,t)),h.push(new Bp(n.p.x+c,n.p.y-c,c,t)),h.push(new Bp(n.p.x-c,n.p.y+c,c,t)),h.push(new Bp(n.p.x+c,n.p.y+c,c,t)),f+=4);}return r&&(console.log(`num probes: ${f}`),console.log(`best distance: ${p.d}`)),p.p}function Tp(t,e){return e.max-t.max}function Bp(t,e,r,n){this.p=new i(t,e),this.h=r,this.d=function(t,e){let r=!1,n=1/0;for(let i=0;i<e.length;i++){const s=e[i];for(let e=0,i=s.length,a=i-1;e<i;a=e++){const i=s[e],o=s[a];i.y>t.y!=o.y>t.y&&t.x<(o.x-i.x)*(t.y-i.y)/(o.y-i.y)+i.x&&(r=!r),n=Math.min(n,rl(t,i,o));}}return (r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2;}const Ep=Number.POSITIVE_INFINITY,Cp=Math.sqrt(2);function Pp(t,e){return e[1]!==Ep?function(t,e,r){let n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case\"top-right\":case\"top-left\":case\"top\":i=r-7;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":i=7-r;}switch(t){case\"top-right\":case\"bottom-right\":case\"right\":n=-e;break;case\"top-left\":case\"bottom-left\":case\"left\":n=e;}return [n,i]}(t,e[0],e[1]):function(t,e){let r=0,n=0;e<0&&(e=0);const i=e/Cp;switch(t){case\"top-right\":case\"top-left\":n=i-7;break;case\"bottom-right\":case\"bottom-left\":n=7-i;break;case\"bottom\":n=7-e;break;case\"top\":n=e-7;}switch(t){case\"top-right\":case\"bottom-right\":r=-i;break;case\"top-left\":case\"bottom-left\":r=i;break;case\"left\":r=e;break;case\"right\":r=-e;}return [r,n]}(t,e[0])}function Dp(t,e,r,n,i,s,a,o,l,u){t.createArrays(),t.tilePixelRatio=wo/(512*t.overscaling),t.compareText={},t.iconsNeedLinear=!1;const c=t.layers[0].layout,h=t.layers[0]._unevaluatedLayout._values,p={};if(\"composite\"===t.textSizeData.kind){const{minZoom:e,maxZoom:r}=t.textSizeData;p.compositeTextSizes=[h[\"text-size\"].possiblyEvaluate(new Cs(e),o),h[\"text-size\"].possiblyEvaluate(new Cs(r),o)];}if(\"composite\"===t.iconSizeData.kind){const{minZoom:e,maxZoom:r}=t.iconSizeData;p.compositeIconSizes=[h[\"icon-size\"].possiblyEvaluate(new Cs(e),o),h[\"icon-size\"].possiblyEvaluate(new Cs(r),o)];}p.layoutTextSize=h[\"text-size\"].possiblyEvaluate(new Cs(l+1),o),p.layoutIconSize=h[\"icon-size\"].possiblyEvaluate(new Cs(l+1),o),p.textMaxSize=h[\"text-size\"].possiblyEvaluate(new Cs(18),o);const f=\"map\"===c.get(\"text-rotation-alignment\")&&\"point\"!==c.get(\"symbol-placement\"),d=c.get(\"text-size\");for(const s of t.features){const l=c.get(\"text-font\").evaluate(s,{},o).join(\",\"),h=d.evaluate(s,{},o),y=p.layoutTextSize.evaluate(s,{},o),m=(p.layoutIconSize.evaluate(s,{},o),{horizontal:{},vertical:void 0}),g=s.text;let x,v=[0,0];if(g){const n=g.toString(),a=c.get(\"text-letter-spacing\").evaluate(s,{},o)*ah,u=c.get(\"text-line-height\").evaluate(s,{},o)*ah,p=fs(n)?a:0,d=c.get(\"text-anchor\").evaluate(s,{},o),x=c.get(\"text-variable-anchor\");if(!x){const t=c.get(\"text-radial-offset\").evaluate(s,{},o);v=t?Pp(d,[t*ah,Ep]):c.get(\"text-offset\").evaluate(s,{},o).map((t=>t*ah));}let b=f?\"center\":c.get(\"text-justify\").evaluate(s,{},o);const _=c.get(\"symbol-placement\"),w=\"point\"===_,A=\"point\"===_?c.get(\"text-max-width\").evaluate(s,{},o)*ah:0,S=s=>{t.allowVerticalPlacement&&ps(n)&&(m.vertical=Xh(g,e,r,i,l,A,u,d,s,p,v,Nh.vertical,!0,_,y,h));};if(!f&&x){const t=\"auto\"===b?x.map((t=>Vp(t))):[b];let n=!1;for(let s=0;s<t.length;s++){const a=t[s];if(!m.horizontal[a])if(n)m.horizontal[a]=m.horizontal[0];else {const t=Xh(g,e,r,i,l,A,u,\"center\",a,p,v,Nh.horizontal,!1,_,y,h);t&&(m.horizontal[a]=t,n=1===t.positionedLines.length);}}S(\"left\");}else {if(\"auto\"===b&&(b=Vp(d)),w||c.get(\"text-writing-mode\").indexOf(\"horizontal\")>=0||!ps(n)){const t=Xh(g,e,r,i,l,A,u,d,b,p,v,Nh.horizontal,!1,_,y,h);t&&(m.horizontal[b]=t);}S(\"point\"===_?\"left\":b);}}let b=!1;if(s.icon&&s.icon.name){const e=n[s.icon.name];e&&(x=ip(i[s.icon.name],c.get(\"icon-offset\").evaluate(s,{},o),c.get(\"icon-anchor\").evaluate(s,{},o)),b=e.sdf,void 0===t.sdfIcons?t.sdfIcons=e.sdf:t.sdfIcons!==e.sdf&&E(\"Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer\"),(e.pixelRatio!==t.pixelRatio||0!==c.get(\"icon-rotate\").constantOr(1))&&(t.iconsNeedLinear=!0));}const _=Up(m.horizontal)||m.vertical;t.iconsInText||(t.iconsInText=!!_&&_.iconsInText),(_||x)&&Fp(t,s,m,x,n,p,y,0,v,b,a,o,u);}s&&t.generateCollisionDebugBuffers(l,t.collisionBoxArray);}function Vp(t){switch(t){case\"right\":case\"top-right\":case\"bottom-right\":return \"right\";case\"left\":case\"top-left\":case\"bottom-left\":return \"left\"}return \"center\"}function Fp(t,e,r,n,i,s,a,o,u,c,h,p,f){let d=s.textMaxSize.evaluate(e,{},p);void 0===d&&(d=a);const y=t.layers[0].layout,m=y.get(\"icon-offset\").evaluate(e,{},p),g=Up(r.horizontal)||r.vertical,x=\"globe\"===f.name,v=a/24,b=t.tilePixelRatio*d/24,_=(T=t.overscaling,t.zoom>18&&T>2&&(T>>=1),Math.max(wo/(512*T),1)*y.get(\"symbol-spacing\")),w=y.get(\"text-padding\")*t.tilePixelRatio,A=y.get(\"icon-padding\")*t.tilePixelRatio,S=l(y.get(\"text-max-angle\")),k=\"map\"===y.get(\"text-rotation-alignment\")&&\"point\"!==y.get(\"symbol-placement\"),I=\"map\"===y.get(\"icon-rotation-alignment\")&&\"point\"!==y.get(\"symbol-placement\"),M=y.get(\"symbol-placement\"),z=_/2;var T;const B=y.get(\"icon-text-fit\");let C;n&&\"none\"!==B&&(t.allowVerticalPlacement&&r.vertical&&(C=sp(n,r.vertical,B,y.get(\"icon-text-fit-padding\"),m,v)),g&&(n=sp(n,g,B,y.get(\"icon-text-fit-padding\"),m,v)));const P=(a,o,l)=>{if(o.x<0||o.x>=wo||o.y<0||o.y>=wo)return;let d=null;if(x){const{x:t,y:e,z:r}=f.projectTilePoint(o.x,o.y,l);d={anchor:new ap(t,e,r,0,void 0),up:f.upVector(l,o.x,o.y)};}!function(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,_,w,A,S){const k=t.addToLineVertexArray(e,n);let I,M,z,T,B,C,P,D=0,V=0,F=0,L=0,R=-1,U=-1;const j={};let $=Na(\"\");const O=r?r.anchor:e;let q=0,N=0;if(void 0===l._unevaluatedLayout.getValue(\"text-radial-offset\")?[q,N]=l.layout.get(\"text-offset\").evaluate(b,{},S).map((t=>t*ah)):(q=l.layout.get(\"text-radial-offset\").evaluate(b,{},S)*ah,N=Ep),t.allowVerticalPlacement&&i.vertical){const t=i.vertical;if(d)C=$p(t),o&&(P=$p(o));else {const r=l.layout.get(\"text-rotate\").evaluate(b,{},S)+90;z=jp(u,O,e,c,h,p,t,f,r,y),o&&(T=jp(u,O,e,c,h,p,o,g,r));}}if(s){const n=l.layout.get(\"icon-rotate\").evaluate(b,{},S),i=\"none\"!==l.layout.get(\"icon-text-fit\"),a=bp(s,n,w,i),f=o?bp(o,n,w,i):void 0;M=jp(u,O,e,c,h,p,s,g,n),D=4*a.length;const d=t.iconSizeData;let y=null;\"source\"===d.kind?(y=[oh*l.layout.get(\"icon-size\").evaluate(b,{},S)],y[0]>Lp&&E(`${t.layerIds[0]}: Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".`)):\"composite\"===d.kind&&(y=[oh*_.compositeIconSizes[0].evaluate(b,{},S),oh*_.compositeIconSizes[1].evaluate(b,{},S)],(y[0]>Lp||y[1]>Lp)&&E(`${t.layerIds[0]}: Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".`)),t.addSymbols(t.icon,a,y,v,x,b,!1,r,e,k.lineStartIndex,k.lineLength,-1,A,S),R=t.icon.placedSymbolArray.length-1,f&&(V=4*f.length,t.addSymbols(t.icon,f,y,v,x,b,Nh.vertical,r,e,k.lineStartIndex,k.lineLength,-1,A,S),U=t.icon.placedSymbolArray.length-1);}for(const n in i.horizontal){const s=i.horizontal[n];I||($=Na(s.text),d?B=$p(s):I=jp(u,O,e,c,h,p,s,f,l.layout.get(\"text-rotate\").evaluate(b,{},S),y));const o=1===s.positionedLines.length;if(F+=Rp(t,r,e,s,a,l,d,b,y,k,i.vertical?Nh.horizontal:Nh.horizontalOnly,o?Object.keys(i.horizontal):[n],j,R,_,A,S),o)break}i.vertical&&(L+=Rp(t,r,e,i.vertical,a,l,d,b,y,k,Nh.vertical,[\"vertical\"],j,U,_,A,S));let G=-1;const Z=(t,e)=>t?Math.max(t,e):e;G=Z(B,G),G=Z(C,G),G=Z(P,G);const X=G>-1?1:0;t.glyphOffsetArray.length>=Qf.MAX_GLYPHS&&E(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"),void 0!==b.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,b.sortKey),t.symbolInstances.emplaceBack(O.x,O.y,O.z,e.x,e.y,j.right>=0?j.right:-1,j.center>=0?j.center:-1,j.left>=0?j.left:-1,j.vertical>=0?j.vertical:-1,R,U,$,void 0!==I?I:t.collisionBoxArray.length,void 0!==I?I+1:t.collisionBoxArray.length,void 0!==z?z:t.collisionBoxArray.length,void 0!==z?z+1:t.collisionBoxArray.length,void 0!==M?M:t.collisionBoxArray.length,void 0!==M?M+1:t.collisionBoxArray.length,T||t.collisionBoxArray.length,T?T+1:t.collisionBoxArray.length,c,F,L,D,V,X,0,q,N,G);}(t,o,d,a,r,n,i,C,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,w,k,u,0,A,I,m,e,s,c,h,p);};if(\"line\"===M)for(const i of dp(e.geometry,0,0,wo,wo)){const e=pp(i,_,S,r.vertical||g,n,24,b,t.overscaling,wo);for(const r of e){const e=g;e&&Op(t,e.text,z,r)||P(i,r,p);}}else if(\"line-center\"===M){for(const t of e.geometry)if(t.length>1){const e=hp(t,S,r.vertical||g,n,24,b);e&&P(t,e,p);}}else if(\"Polygon\"===e.type)for(const t of Yu(e.geometry,0)){const e=zp(t,16);P(t[0],new ap(e.x,e.y,0,0,void 0),p);}else if(\"LineString\"===e.type)for(const t of e.geometry)P(t,new ap(t[0].x,t[0].y,0,0,void 0),p);else if(\"Point\"===e.type)for(const t of e.geometry)for(const e of t)P([e],new ap(e.x,e.y,0,0,void 0),p);}const Lp=32640;function Rp(t,e,r,n,s,a,o,l,u,c,h,p,f,d,y,m,g){const x=function(t,e,r,n,s,a,o,l){const u=[];if(0===e.positionedLines.length)return u;const c=n.layout.get(\"text-rotate\").evaluate(a,{})*Math.PI/180,h=function(t){const e=t[0],r=t[1],n=e*r;return n>0?[e,-r]:n<0?[-e,r]:0===e?[r,e]:[r,-e]}(r);let p=Math.abs(e.top-e.bottom);for(const t of e.positionedLines)p-=t.lineOffset;const f=e.positionedLines.length,d=p/f;let y=e.top-r[1];for(let t=0;t<f;++t){const n=e.positionedLines[t];y=kp(e,d,y,t);for(const t of n.positionedGlyphs){if(!t.rect)continue;const n=t.rect||{};let a=4,p=!0,f=1,d=0;if(t.imageName){const e=o[t.imageName];if(!e)continue;if(e.sdf){E(\"SDF images are not supported in formatted text and will be ignored.\");continue}p=!1,f=e.pixelRatio,a=1/f;}const m=(s||l)&&t.vertical,g=t.metrics.advance*t.scale/2,x=t.metrics,v=t.rect;if(null===v)continue;l&&e.verticalizable&&(d=t.imageName?g-t.metrics.width*t.scale/2:0);const b=s?[t.x+g,t.y]:[0,0];let _=[0,0],w=[0,0],A=!1;s||(m?(w=[t.x+g+h[0],t.y+h[1]-d],A=!0):_=[t.x+g+r[0],t.y+r[1]-d]);const S=v.w*t.scale/(f*(t.localGlyph?2:1)),k=v.h*t.scale/(f*(t.localGlyph?2:1));let I,M,z,T;if(m){const e=t.y-y,r=new i(-g,g-e),n=-Math.PI/2,s=new i(...w);I=new i(-g+_[0],_[1]),I._rotateAround(n,r)._add(s),I.x+=-e+g,I.y-=(x.left-a)*t.scale;const o=t.imageName?x.advance*t.scale:ah*t.scale,l=String.fromCharCode(t.glyph);dh(l)?I.x+=(1-a)*t.scale:yh(l)?I.x+=o-x.height*t.scale+(-a-1)*t.scale:I.x+=t.imageName||x.width+2*a===v.w&&x.height+2*a===v.h?(o-k)/2:(o-(x.height+2*a)*t.scale)/2,M=new i(I.x,I.y-S),z=new i(I.x+k,I.y),T=new i(I.x+k,I.y-S);}else {const e=(x.left-a)*t.scale-g+_[0],r=(-x.top-a)*t.scale+_[1],n=e+S,s=r+k;I=new i(e,r),M=new i(n,r),z=new i(e,s),T=new i(n,s);}if(c){let t;t=s?new i(0,0):A?new i(h[0],h[1]):new i(r[0],r[1]),I._rotateAround(c,t),M._rotateAround(c,t),z._rotateAround(c,t),T._rotateAround(c,t);}const B=new i(0,0),C=new i(0,0);u.push({tl:I,tr:M,bl:z,br:T,tex:n,writingMode:e.writingMode,glyphOffset:b,sectionIndex:t.sectionIndex,isSDF:p,pixelOffsetTL:B,pixelOffsetBR:C,minFontScaleX:0,minFontScaleY:0});}}return u}(0,n,u,a,o,l,s,t.allowVerticalPlacement),v=t.textSizeData;let b=null;\"source\"===v.kind?(b=[oh*a.layout.get(\"text-size\").evaluate(l,{},g)],b[0]>Lp&&E(`${t.layerIds[0]}: Value for \"text-size\" is >= 255. Reduce your \"text-size\".`)):\"composite\"===v.kind&&(b=[oh*y.compositeTextSizes[0].evaluate(l,{},g),oh*y.compositeTextSizes[1].evaluate(l,{},g)],(b[0]>Lp||b[1]>Lp)&&E(`${t.layerIds[0]}: Value for \"text-size\" is >= 255. Reduce your \"text-size\".`)),t.addSymbols(t.text,x,b,u,o,l,h,e,r,c.lineStartIndex,c.lineLength,d,m,g);for(const e of p)f[e]=t.text.placedSymbolArray.length-1;return 4*x.length}function Up(t){for(const e in t)return t[e];return null}function jp(t,e,r,n,s,a,o,u,c,h){let p=o.top,f=o.bottom,d=o.left,y=o.right;const m=o.collisionPadding;if(m&&(d-=m[0],p-=m[1],y+=m[2],f+=m[3]),c){const t=new i(d,p),e=new i(y,p),r=new i(d,f),n=new i(y,f),s=l(c);let a=new i(0,0);h&&(a=new i(h[0],h[1])),t._rotateAround(s,a),e._rotateAround(s,a),r._rotateAround(s,a),n._rotateAround(s,a),d=Math.min(t.x,e.x,r.x,n.x),y=Math.max(t.x,e.x,r.x,n.x),p=Math.min(t.y,e.y,r.y,n.y),f=Math.max(t.y,e.y,r.y,n.y);}return t.emplaceBack(e.x,e.y,e.z,r.x,r.y,d,p,y,f,u,n,s,a),t.length-1}function $p(t){t.collisionPadding&&(t.top-=t.collisionPadding[1],t.bottom+=t.collisionPadding[3]);const e=t.bottom-t.top;return e>0?Math.max(10,e):null}function Op(t,e,r,n){const i=t.compareText;if(e in i){const t=i[e];for(let e=t.length-1;e>=0;e--)if(n.dist(t[e])<r)return !0}else i[e]=[];return i[e].push(n),!1}const qp=Ws([{type:\"Float32\",name:\"a_globe_pos\",components:3},{type:\"Float32\",name:\"a_uv\",components:2}]),{members:Np}=qp,Gp=Ws([{name:\"a_pos_3\",components:3,type:\"Int16\"}]);var Zp=Ws([{name:\"a_pos\",type:\"Int16\",components:2}]);const Xp=wo/Math.PI/2,Kp=2*Bo(1,0)*Xp*Math.PI,Hp=[64,32,16],Yp=-Xp,Wp=Xp,Jp=[new eu([Yp,Yp,Yp],[Wp,Wp,Wp]),new eu([Yp,Yp,Yp],[0,0,Wp]),new eu([0,Yp,Yp],[Wp,0,Wp]),new eu([Yp,0,Yp],[0,Wp,Wp]),new eu([0,0,Yp],[Wp,Wp,Wp])];function Qp(t,e,r,n=!0){const i=Vl([],t._camera.position,t.worldSize),s=[e,r,1,1];Xl(s,s,t.pixelMatrixInverse),Zl(s,s,1/s[3]);const a=Ll([],ql([],s,i)),o=t.globeMatrix,l=[o[12],o[13],o[14]],c=ql([],l,i),h=zl(c),p=Ll([],c),f=t.worldSize/(2*Math.PI),y=Rl(p,a),m=Math.asin(f/h);if(m<Math.acos(y)){if(!n)return null;const t=[],e=[];Vl(t,a,h/y),Ll(e,ql(e,t,c)),Ll(a,Bl(a,c,Vl(a,e,Math.tan(m)*h)));}const g=[];new Jl(i,a).closestPointOnSphere(l,f,g);const x=Ll([],U(o,0)),v=Ll([],U(o,1)),b=Ll([],U(o,2)),_=Rl(x,g),w=Rl(v,g),A=Rl(b,g),S=u(Math.asin(-w/f));let k=u(Math.atan2(_,A));k=t.center.lng+function(t,e){const r=(e-t+180)%360-180;return r<-180?r+360:r}(t.center.lng,k);const I=zo(k),M=d(To(S),0,1);return new Fo(I,M)}class tf{constructor(t,e,r){this.a=ql([],t,r),this.b=ql([],e,r),this.center=r;const n=Ll([],this.a),i=Ll([],this.b);this.angle=Math.acos(Rl(n,i));}}function ef(t,e){if(0===t.angle)return null;let r;return r=0===t.a[e]?1/t.angle*.5*Math.PI:1/t.angle*Math.atan(t.b[e]/t.a[e]/Math.sin(t.angle)-1/Math.tan(t.angle)),r<0||r>1?null:function(t,e,r,n){const i=Math.sin(r);return t*(Math.sin((1-n)*r)/i)+e*(Math.sin(n*r)/i)}(t.a[e],t.b[e],t.angle,d(r,0,1))+t.center[e]}function rf(t){if(t.z<=1)return Jp[t.z+2*t.y+t.x];const e=lf(of(t));return eu.fromPoints(e)}function nf(t,e){const r=gf(e.zoom);if(0===r)return rf(t);const n=of(t),i=lf(n),s=zo(n.getWest())*e.worldSize,a=zo(n.getEast())*e.worldSize,o=To(n.getNorth())*e.worldSize,l=To(n.getSouth())*e.worldSize,u=[s,o,0],c=[a,o,0],h=[s,l,0],p=[a,l,0],f=gl([],e.globeMatrix);return jl(u,u,f),jl(c,c,f),jl(h,h,f),jl(p,p,f),i[0]=vr(i[0],h,r),i[1]=vr(i[1],p,r),i[2]=vr(i[2],c,r),i[3]=vr(i[3],u,r),eu.fromPoints(i)}function sf(t,e,r,n,i){for(const s of r)jl(s,s,n),Vl(s,s,i),Pl(t,t,s),Dl(e,e,s);}function af(t,e,r){const n=e/t.worldSize,i=Number.MAX_VALUE,s=[-i,-i,-i],a=[i,i,i],o=t.globeMatrix;if(r.z<=1)return sf(a,s,rf(r).getCorners(),o,n),new eu(a,s);const u=of(r),c=lf(u);if(sf(a,s,c,o,n),u.contains(t.center)){s[2]=0;const e=t.point,r=[e.x*n,e.y*n,0];return Pl(a,a,r),Dl(s,s,r),new eu(a,s)}const h=[o[12]*n,o[13]*n,o[14]*n],p=u.getCenter(),f=d(t.center.lat,-85.051129,Do),y=d(p.lat,-85.051129,Do),m=zo(t.center.lng),g=To(f);let x=m-zo(p.lng);const v=g-To(y);x>.5?x-=1:x<-.5&&(x+=1);let b=0;Math.abs(x)>Math.abs(v)?b=x>=0?1:3:(b=v>=0?0:2,Fl(h,h,[o[4]*n,o[5]*n,o[6]*n],-Math.sin(l(v>=0?u.getSouth():u.getNorth()))*Xp));const _=c[b],w=c[(b+1)%4],A=new tf(_,w,h),S=[ef(A,0)||_[0],ef(A,1)||_[1],ef(A,2)||_[2]];return a[2]=Math.min(_[2],w[2]),Pl(a,a,S),Dl(s,s,S),new eu(a,s)}function of({x:t,y:e,z:r}){const n=1/(1<<r),i=new ko(Eo(t*n),Co((e+1)*n)),s=new ko(Eo((t+1)*n),Co(e*n));return new Ao(i,s)}function lf(t){const e=l(t.getNorth()),r=l(t.getSouth()),n=Math.cos(e),i=Math.cos(r),s=Math.sin(e),a=Math.sin(r),o=t.getWest(),u=t.getEast();return [uf(i,a,o),uf(i,a,u),uf(n,s,u),uf(n,s,o)]}function uf(t,e,r,n=Xp){return r=l(r),[t*Math.sin(r)*n,-e*n,t*Math.cos(r)*n]}function cf(t,e,r){return uf(Math.cos(l(t)),Math.sin(l(t)),e,r)}function hf(t,e,r,n){const i=1<<r.z,s=(t/wo+r.x)/i;return cf(Co((e/wo+r.y)/i),Eo(s),n)}function pf({min:t,max:e}){return 16383/Math.max(e[0]-t[0],e[1]-t[1],e[2]-t[2])}const ff=new Float64Array(16);function df(t){const e=pf(t),r=Al(ff,[e,e,e]);return vl(r,r,((n=[])[0]=-(i=t.min)[0],n[1]=-i[1],n[2]=-i[2],n));var n,i;}function yf(t){const e=(n=t.min,(r=ff)[0]=1,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=1,r[11]=0,r[12]=n[0],r[13]=n[1],r[14]=n[2],r[15]=1,r);var r,n;const i=1/pf(t);return bl(e,e,[i,i,i])}function mf(t,e,r,n,i){const s=function(t){const e=wo/(2*Math.PI);return t/(2*Math.PI)/e}(r),a=[t,e,-r/(2*Math.PI)],o=ml(new Float64Array(16));return vl(o,o,a),bl(o,o,[s,s,s]),_l(o,o,l(-i)),wl(o,o,l(-n)),o}function gf(t){return y(5,6,t)}function xf(t,e){const r=cf(e.lat,e.lng);return s=(n=El([],function(t){const e=cf(t._center.lat,t._center.lng);let r=Ul([],Tl(0,1,0),e);const n=Sl([],-t.angle,e);r=jl(r,r,n),Sl(n,-t._pitch,r);const i=Ll([],e);return Vl(i,i,t.cameraToCenterDistance/t.pixelsPerMeter*Kp),jl(i,i,n),Bl([],e,i)}(t),r))[0],a=n[1],o=n[2],l=(i=r)[0],u=i[1],c=i[2],p=(h=Math.sqrt(s*s+a*a+o*o)*Math.sqrt(l*l+u*u+c*c))&&Rl(n,i)/h,Math.acos(Math.min(Math.max(p,-1),1));var n,i,s,a,o,l,u,c,h,p;}const vf=l(85),bf=Math.cos(vf),_f=Math.sin(vf);function wf(t,e){const r=t.fovAboveCenter,n=t.elevation?t.elevation.getMinElevationBelowMSL()*e:0,i=(t._camera.position[2]*t.worldSize-n)/Math.cos(t._pitch),s=Math.sin(r)*i/Math.sin(Math.max(Math.PI/2-t._pitch-r,.01)),a=Math.sin(t._pitch)*s+i;return Math.min(1.01*a,i*(1/t._horizonShift))}function Af(t,e){if(!e.isReprojectedInTileSpace)return {scale:1<<t.z,x:t.x,y:t.y,x2:t.x+1,y2:t.y+1,projection:e};const r=Math.pow(2,-t.z),n=t.x*r,i=(t.x+1)*r,s=t.y*r,a=(t.y+1)*r,o=Eo(n),l=Eo(i),u=Co(s),c=Co(a),h=e.project(o,u),p=e.project(l,u),f=e.project(l,c),d=e.project(o,c);let y=Math.min(h.x,p.x,f.x,d.x),m=Math.min(h.y,p.y,f.y,d.y),g=Math.max(h.x,p.x,f.x,d.x),x=Math.max(h.y,p.y,f.y,d.y);const v=r/16;function b(t,r,n,i,s,a){const o=(n+s)/2,l=(i+a)/2,u=e.project(Eo(o),Co(l)),c=Math.max(0,y-u.x,m-u.y,u.x-g,u.y-x);y=Math.min(y,u.x),g=Math.max(g,u.x),m=Math.min(m,u.y),x=Math.max(x,u.y),c>v&&(b(t,u,n,i,o,l),b(u,r,o,l,s,a));}b(h,p,n,s,i,s),b(p,f,i,s,i,a),b(f,d,i,a,n,a),b(d,h,n,a,n,s),y-=v,m-=v,g+=v,x+=v;const _=1/Math.max(g-y,x-m);return {scale:_,x:y*_,y:m*_,x2:g*_,y2:x*_,projection:e}}const Sf=ml(new Float32Array(16));class kf{constructor(t){this.spec=t,this.name=t.name,this.wrap=!1,this.requiresDraping=!1,this.supportsWorldCopies=!1,this.supportsTerrain=!1,this.supportsFog=!1,this.supportsFreeCamera=!1,this.zAxisUnit=\"meters\",this.isReprojectedInTileSpace=!0,this.unsupportedLayers=[\"custom\"],this.center=[0,0],this.range=[3.5,7];}project(t,e){return {x:0,y:0,z:0}}unproject(t,e){return new ko(0,0)}projectTilePoint(t,e,r){return {x:t,y:e,z:0}}locationPoint(t,e,r=!0){return t._coordinatePoint(t.locationCoordinate(e),r)}pixelsPerMeter(t,e){return Bo(1,t)*e}pixelSpaceConversion(t,e,r){return 1}farthestPixelDistance(t){return wf(t,t.pixelsPerMeter)}pointCoordinate(t,e,r,n){const s=t.horizonLineFromTop(!1),a=new i(e,Math.max(s,r));return t.rayIntersectionCoordinate(t.pointRayIntersection(a,n))}pointCoordinate3D(t,e,r){const n=new i(e,r);if(t.elevation)return t.elevation.pointCoordinate(n);{const e=this.pointCoordinate(t,n.x,n.y,0);return [e.x,e.y,e.z]}}isPointAboveHorizon(t,e){if(t.elevation)return !this.pointCoordinate3D(t,e.x,e.y);const r=t.horizonLineFromTop();return e.y<r}createInversionMatrix(t,e){return Sf}createTileMatrix(t,e,r){let n,i,s;const a=r.canonical,o=ml(new Float64Array(16));if(this.isReprojectedInTileSpace){const l=Af(a,this);n=1,i=l.x+r.wrap*l.scale,s=l.y,bl(o,o,[n/l.scale,n/l.scale,t.pixelsPerMeter/e]);}else n=e/t.zoomScale(a.z),i=(a.x+Math.pow(2,a.z)*r.wrap)*n,s=a.y*n;return vl(o,o,[i,s,0]),bl(o,o,[n/wo,n/wo,1]),o}upVector(t,e,r){return [0,0,1]}upVectorScale(t,e,r){return {metersToTile:1}}}class If extends kf{constructor(t){super(t),this.range=[4,7],this.center=t.center||[-96,37.5];const[e,r]=this.parallels=t.parallels||[29.5,45.5],n=Math.sin(l(e));this.n=(n+Math.sin(l(r)))/2,this.c=1+n*(2*this.n-n),this.r0=Math.sqrt(this.c)/this.n;}project(t,e){const{n:r,c:n,r0:i}=this,s=l(t-this.center[0]),a=l(e),o=Math.sqrt(n-2*r*Math.sin(a))/r;return {x:o*Math.sin(s*r),y:o*Math.cos(s*r)-i,z:0}}unproject(t,e){const{n:r,c:n,r0:i}=this,s=i+e;let a=Math.atan2(t,Math.abs(s))*Math.sign(s);s*r<0&&(a-=Math.PI*Math.sign(t)*Math.sign(s));const o=l(this.center[0])*r;a=m(a,-Math.PI-o,Math.PI-o);const c=u(a/r)+this.center[0],h=Math.asin(d((n-(t*t+s*s)*r*r)/(2*r),-1,1)),p=d(u(h),-85.051129,Do);return new ko(c,p)}}const Mf=1.340264,zf=-.081106,Tf=893e-6,Bf=.003796,Ef=Math.sqrt(3)/2;class Cf extends kf{project(t,e){e=e/180*Math.PI,t=t/180*Math.PI;const r=Math.asin(Ef*Math.sin(e)),n=r*r,i=n*n*n;return {x:.5*(t*Math.cos(r)/(Ef*(Mf+3*zf*n+i*(7*Tf+9*Bf*n)))/Math.PI+.5),y:1-.5*(r*(Mf+zf*n+i*(Tf+Bf*n))/Math.PI+1),z:0}}unproject(t,e){t=(2*t-.5)*Math.PI;let r=e=(2*(1-e)-1)*Math.PI,n=r*r,i=n*n*n;for(let t,s,a,o=0;o<12&&(s=r*(Mf+zf*n+i*(Tf+Bf*n))-e,a=Mf+3*zf*n+i*(7*Tf+9*Bf*n),t=s/a,r=d(r-t,-Math.PI/3,Math.PI/3),n=r*r,i=n*n*n,!(Math.abs(t)<1e-12));++o);const s=Ef*t*(Mf+3*zf*n+i*(7*Tf+9*Bf*n))/Math.cos(r),a=Math.asin(Math.sin(r)/Ef),o=d(180*s/Math.PI,-180,180),l=d(180*a/Math.PI,-85.051129,Do);return new ko(o,l)}}class Pf extends kf{constructor(t){super(t),this.wrap=!0,this.supportsWorldCopies=!0;}project(t,e){return {x:.5+t/360,y:.5-e/360,z:0}}unproject(t,e){const r=360*(t-.5),n=d(360*(.5-e),-85.051129,Do);return new ko(r,n)}}const Df=Math.PI/2;function Vf(t){return Math.tan((Df+t)/2)}class Ff extends kf{constructor(t){super(t),this.center=t.center||[0,30];const[e,r]=this.parallels=t.parallels||[30,30],n=l(e),i=l(r),s=Math.cos(n);this.n=n===i?Math.sin(n):Math.log(s/Math.cos(i))/Math.log(Vf(i)/Vf(n)),this.f=s*Math.pow(Vf(n),this.n)/this.n;}project(t,e){e=l(e),t=l(t-this.center[0]);const r=1e-6,{n:n,f:i}=this;i>0?e<-Df+r&&(e=-Df+r):e>Df-r&&(e=Df-r);const s=i/Math.pow(Vf(e),n),a=s*Math.sin(n*t),o=i-s*Math.cos(n*t);return {x:.5*(a/Math.PI+.5),y:1-.5*(o/Math.PI+.5),z:0}}unproject(t,e){t=(2*t-.5)*Math.PI,e=(2*(1-e)-.5)*Math.PI;const{n:r,f:n}=this,i=n-e,s=Math.sign(i),a=Math.sign(r)*Math.sqrt(t*t+i*i);let o=Math.atan2(t,Math.abs(i))*s;i*r<0&&(o-=Math.PI*Math.sign(t)*s);const l=d(u(o/r)+this.center[0],-180,180),c=d(u(2*Math.atan(Math.pow(n/a,1/r))-Df),-85.051129,Do);return new ko(l,c)}}class Lf extends kf{constructor(t){super(t),this.wrap=!0,this.supportsWorldCopies=!0,this.supportsTerrain=!0,this.supportsFog=!0,this.supportsFreeCamera=!0,this.isReprojectedInTileSpace=!1,this.unsupportedLayers=[],this.range=null;}project(t,e){return {x:zo(t),y:To(e),z:0}}unproject(t,e){const r=Eo(t),n=Co(e);return new ko(r,n)}}const Rf=l(Do);class Uf extends kf{project(t,e){const r=(e=l(e))*e,n=r*r;return {x:.5*((t=l(t))*(.8707-.131979*r+n*(n*(.003971*r-.001529*n)-.013791))/Math.PI+.5),y:1-.5*(e*(1.007226+r*(.015085+n*(.028874*r-.044475-.005916*n)))/Math.PI+1),z:0}}unproject(t,e){t=(2*t-.5)*Math.PI;let r=e=(2*(1-e)-1)*Math.PI,n=25,i=0,s=r*r;do{s=r*r;const t=s*s;i=(r*(1.007226+s*(.015085+t*(.028874*s-.044475-.005916*t)))-e)/(1.007226+s*(.045255+t*(.259866*s-.311325-.005916*11*t))),r=d(r-i,-Rf,Rf);}while(Math.abs(i)>1e-6&&--n>0);s=r*r;const a=d(u(t/(.8707+s*(s*(s*s*s*(.003971-.001529*s)-.013791)-.131979))),-180,180),o=u(r);return new ko(a,o)}}const jf=l(Do);class $f extends kf{project(t,e){e=l(e),t=l(t);const r=Math.cos(e),n=2/Math.PI,i=Math.acos(r*Math.cos(t/2)),s=Math.sin(i)/i,a=.5*(t*n+2*r*Math.sin(t/2)/s)||0,o=.5*(e+Math.sin(e)/s)||0;return {x:.5*(a/Math.PI+.5),y:1-.5*(o/Math.PI+1),z:0}}unproject(t,e){let r=t=(2*t-.5)*Math.PI,n=e=(2*(1-e)-1)*Math.PI,i=25;const s=1e-6;let a=0,o=0;do{const i=Math.cos(n),s=Math.sin(n),l=2*s*i,u=s*s,c=i*i,h=Math.cos(r/2),p=Math.sin(r/2),f=2*h*p,y=p*p,m=1-c*h*h,g=m?1/m:0,x=m?Math.acos(i*h)*Math.sqrt(1/m):0,v=.5*(2*x*i*p+2*r/Math.PI)-t,b=.5*(x*s+n)-e,_=.5*g*(c*y+x*i*h*u)+1/Math.PI,w=g*(f*l/4-x*s*p),A=.125*g*(l*p-x*s*c*f),S=.5*g*(u*h+x*y*i)+.5,k=w*A-S*_;a=(b*w-v*S)/k,o=(v*A-b*_)/k,r=d(r-a,-Math.PI,Math.PI),n=d(n-o,-jf,jf);}while((Math.abs(a)>s||Math.abs(o)>s)&&--i>0);return new ko(u(r),u(n))}}class Of extends kf{constructor(t){super(t),this.center=t.center||[0,0],this.parallels=t.parallels||[0,0],this.cosPhi=Math.max(.01,Math.cos(l(this.parallels[0]))),this.scale=1/(2*Math.max(Math.PI*this.cosPhi,1/this.cosPhi)),this.wrap=!0,this.supportsWorldCopies=!0;}project(t,e){const{scale:r,cosPhi:n}=this;return {x:l(t)*n*r+.5,y:-Math.sin(l(e))/n*r+.5,z:0}}unproject(t,e){const{scale:r,cosPhi:n}=this,i=-(e-.5)/r,s=d(u((t-.5)/r)/n,-180,180),a=Math.asin(d(i*n,-1,1)),o=d(u(a),-85.051129,Do);return new ko(s,o)}}class qf extends Lf{constructor(t){super(t),this.requiresDraping=!0,this.supportsWorldCopies=!1,this.supportsFog=!0,this.zAxisUnit=\"pixels\",this.unsupportedLayers=[\"debug\",\"custom\"],this.range=[3,5];}projectTilePoint(t,e,r){const n=hf(t,e,r);return jl(n,n,df(rf(r))),{x:n[0],y:n[1],z:n[2]}}locationPoint(t,e){const r=cf(e.lat,e.lng),n=Ll([],r),s=t.elevation?t.elevation.getAtPointOrZero(t.locationCoordinate(e),t._centerAltitude):t._centerAltitude;Fl(r,r,n,Bo(1,0)*wo*s);const a=ml(new Float64Array(16));return xl(a,t.pixelMatrix,t.globeMatrix),jl(r,r,a),new i(r[0],r[1])}pixelsPerMeter(t,e){return Bo(1,0)*e}pixelSpaceConversion(t,e,r){const n=xr(Bo(1,45)*e,Bo(1,t)*e,r);return this.pixelsPerMeter(t,e)/n}createTileMatrix(t,e,r){const n=yf(rf(r.canonical));return xl(new Float64Array(16),t.globeMatrix,n)}createInversionMatrix(t,e){const{center:r}=t,n=df(rf(e));return wl(n,n,l(r.lng)),_l(n,n,l(r.lat)),bl(n,n,[t._pixelsPerMercatorPixel,t._pixelsPerMercatorPixel,1]),Float32Array.from(n)}pointCoordinate(t,e,r,n){return Qp(t,e,r,!0)||new Fo(0,0)}pointCoordinate3D(t,e,r){const n=this.pointCoordinate(t,e,r,0);return [n.x,n.y,n.z]}isPointAboveHorizon(t,e){return !Qp(t,e.x,e.y,!1)}farthestPixelDistance(t){const e=function(t,e){const r=t.cameraToCenterDistance,n=t._centerAltitude*e,i=t._camera,s=t._camera.forward(),a=Bl([],Vl([],s,-r),[0,0,n]),o=t.worldSize/(2*Math.PI),l=[0,0,-o],u=t.width/t.height,c=Math.tan(t.fovAboveCenter),h=Vl([],i.up(),c),p=Vl([],i.right(),c*u),f=Ll([],Bl([],Bl([],s,h),p)),d=[];let y;if(new Jl(a,f).closestPointOnSphere(l,o,d)){const e=Bl([],d,l),r=ql([],e,a);y=Math.cos(t.fovAboveCenter)*zl(r);}else {const t=ql([],a,l),e=ql([],l,a);Ll(e,e);const r=zl(t)-o;y=Math.sqrt(r*(r+2*o));const n=Math.acos(y/(o+r))-Math.acos(Rl(s,e));y*=Math.cos(n);}return 1.01*y}(t,this.pixelsPerMeter(t.center.lat,t.worldSize)),r=gf(t.zoom);if(r>0){const n=wf(t,Bo(1,t.center.lat)*t.worldSize),i=t.worldSize/(2*Math.PI),s=Math.max(t.width,t.height)/t.worldSize*Math.PI;return xr(e,n+i*(1-Math.cos(s)),Math.pow(r,10))}return e}upVector(t,e,r){return hf(e,r,t,1)}upVectorScale(t){return {metersToTile:Kp*pf(rf(t))}}}function Nf(t){const e=t.parallels,r=!!e&&Math.abs(e[0]+e[1])<.01;switch(t.name){case\"mercator\":return new Lf(t);case\"equirectangular\":return new Pf(t);case\"naturalEarth\":return new Uf(t);case\"equalEarth\":return new Cf(t);case\"winkelTripel\":return new $f(t);case\"albers\":return r?new Of(t):new If(t);case\"lambertConformalConic\":return r?new Of(t):new Ff(t);case\"globe\":return new qf(t)}throw new Error(`Invalid projection name: ${t.name}`)}const Gf=yc.VectorTileFeature.types,Zf=[{name:\"a_fade_opacity\",components:1,type:\"Uint8\",offset:0}];function Xf(t,e,r,n,i,s,a,o,l,u,c,h,p){const f=o?Math.min(Lp,Math.round(o[0])):0,d=o?Math.min(Lp,Math.round(o[1])):0;t.emplaceBack(e,r,Math.round(32*n),Math.round(32*i),s,a,(f<<1)+(l?1:0),d,16*u,16*c,256*h,256*p);}function Kf(t,e,r,n,i,s,a){t.emplaceBack(e,r,n,i,s,a);}function Hf(t,e,r,n,i){t.emplaceBack(e,r,n,i),t.emplaceBack(e,r,n,i),t.emplaceBack(e,r,n,i),t.emplaceBack(e,r,n,i);}function Yf(t){for(const e of t.sections)if(vs(e.text))return !0;return !1}class Wf{constructor(t){this.layoutVertexArray=new oa,this.indexArray=new ya,this.programConfigurations=t,this.segments=new _o,this.dynamicLayoutVertexArray=new na,this.opacityVertexArray=new ua,this.placedSymbolArray=new Ta,this.globeExtVertexArray=new la;}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.indexArray.length&&0===this.dynamicLayoutVertexArray.length&&0===this.opacityVertexArray.length}upload(t,e,r,n){this.isEmpty()||(r&&(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Qc.members),this.indexBuffer=t.createIndexBuffer(this.indexArray,e),this.dynamicLayoutVertexBuffer=t.createVertexBuffer(this.dynamicLayoutVertexArray,eh.members,!0),this.opacityVertexBuffer=t.createVertexBuffer(this.opacityVertexArray,Zf,!0),this.globeExtVertexArray.length>0&&(this.globeExtVertexBuffer=t.createVertexBuffer(this.globeExtVertexArray,th.members,!0)),this.opacityVertexBuffer.itemSize=1),(r||n)&&this.programConfigurations.upload(t));}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy(),this.globeExtVertexBuffer&&this.globeExtVertexBuffer.destroy());}}Pi(Wf,\"SymbolBuffers\");class Jf{constructor(t,e,r){this.layoutVertexArray=new t,this.layoutAttributes=e,this.indexArray=new r,this.segments=new _o,this.collisionVertexArray=new fa,this.collisionVertexArrayExt=new da;}upload(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=t.createVertexBuffer(this.collisionVertexArray,rh.members,!0),this.collisionVertexBufferExt=t.createVertexBuffer(this.collisionVertexArrayExt,nh.members,!0);}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy(),this.collisionVertexBufferExt.destroy());}}Pi(Jf,\"CollisionBuffers\");class Qf{constructor(t){this.collisionBoxArray=t.collisionBoxArray,this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.pixelRatio=t.pixelRatio,this.sourceLayerIndex=t.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.fullyClipped=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=ml([]),this.placementViewportMatrix=ml([]);const e=this.layers[0]._unevaluatedLayout._values;this.textSizeData=lh(this.zoom,e[\"text-size\"]),this.iconSizeData=lh(this.zoom,e[\"icon-size\"]);const r=this.layers[0].layout,n=r.get(\"symbol-sort-key\"),i=r.get(\"symbol-z-order\");this.canOverlap=r.get(\"text-allow-overlap\")||r.get(\"icon-allow-overlap\")||r.get(\"text-ignore-placement\")||r.get(\"icon-ignore-placement\"),this.sortFeaturesByKey=\"viewport-y\"!==i&&void 0!==n.constantOr(1),this.sortFeaturesByY=(\"viewport-y\"===i||\"auto\"===i&&!this.sortFeaturesByKey)&&this.canOverlap,this.writingModes=r.get(\"text-writing-mode\").map((t=>Nh[t])),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.sourceID=t.sourceID,this.projection=t.projection;}createArrays(){this.text=new Wf(new co(this.layers,this.zoom,(t=>/^text/.test(t)))),this.icon=new Wf(new co(this.layers,this.zoom,(t=>/^icon/.test(t)))),this.glyphOffsetArray=new Ca,this.lineVertexArray=new Pa,this.symbolInstances=new Ea;}calculateGlyphDependencies(t,e,r,n,i){for(let r=0;r<t.length;r++)if(e[t.charCodeAt(r)]=!0,n&&i){const n=fh[t.charAt(r)];n&&(e[n.charCodeAt(0)]=!0);}}populate(t,e,r,n){const i=this.layers[0],s=i.layout,a=\"globe\"===this.projection.name,o=s.get(\"text-font\"),l=s.get(\"text-field\"),u=s.get(\"icon-image\"),c=(\"constant\"!==l.value.kind||l.value.value instanceof _e&&!l.value.value.isEmpty()||l.value.value.toString().length>0)&&(\"constant\"!==o.value.kind||o.value.value.length>0),h=\"constant\"!==u.value.kind||!!u.value.value||Object.keys(u.parameters).length>0,p=s.get(\"symbol-sort-key\");if(this.features=[],!c&&!h)return;const f=e.iconDependencies,d=e.glyphDependencies,y=e.availableImages,m=new Cs(this.zoom);for(const{feature:e,id:l,index:u,sourceLayerIndex:g}of t){const t=i._featureFilter.needGeometry,x=Go(e,t);if(!i._featureFilter.filter(m,x,r))continue;if(t||(x.geometry=No(e,r,n)),a&&1!==e.type&&r.z<=5){const t=x.geometry,e=.98078528056;for(let n=0;n<t.length;n++)t[n]=jo(t[n],(t=>t),((t,n)=>Rl(hf(t.x,t.y,r,1),hf(n.x,n.y,r,1))<e));}let v,b;if(c){const t=i.getValueAndResolveTokens(\"text-field\",x,r,y),e=_e.factory(t);Yf(e)&&(this.hasRTLText=!0),(!this.hasRTLText||\"unavailable\"===Ts()||this.hasRTLText&&Es.isParsed())&&(v=ph(e,i,x));}if(h){const t=i.getValueAndResolveTokens(\"icon-image\",x,r,y);b=t instanceof we?t:we.fromString(t);}if(!v&&!b)continue;const _=this.sortFeaturesByKey?p.evaluate(x,{},r):void 0;if(this.features.push({id:l,text:v,icon:b,index:u,sourceLayerIndex:g,geometry:x.geometry,properties:e.properties,type:Gf[e.type],sortKey:_}),b&&(f[b.name]=!0),v){const t=o.evaluate(x,{},r).join(\",\"),e=\"map\"===s.get(\"text-rotation-alignment\")&&\"point\"!==s.get(\"symbol-placement\");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(Nh.vertical)>=0;for(const r of v.sections)if(r.image)f[r.image.name]=!0;else {const n=ps(v.toString()),i=r.fontStack||t,s=d[i]=d[i]||{};this.calculateGlyphDependencies(r.text,s,e,this.allowVerticalPlacement,n);}}}\"line\"===s.get(\"symbol-placement\")&&(this.features=function(t){const e={},r={},n=[];let i=0;function s(e){n.push(t[e]),i++;}function a(t,e,i){const s=r[t];return delete r[t],r[e]=s,n[s].geometry[0].pop(),n[s].geometry[0]=n[s].geometry[0].concat(i[0]),s}function o(t,r,i){const s=e[r];return delete e[r],e[t]=s,n[s].geometry[0].shift(),n[s].geometry[0]=i[0].concat(n[s].geometry[0]),s}function l(t,e,r){const n=r?e[0][e[0].length-1]:e[0][0];return `${t}:${n.x}:${n.y}`}for(let u=0;u<t.length;u++){const c=t[u],h=c.geometry,p=c.text?c.text.toString():null;if(!p){s(u);continue}const f=l(p,h),d=l(p,h,!0);if(f in r&&d in e&&r[f]!==e[d]){const t=o(f,d,h),i=a(f,d,n[t].geometry);delete e[f],delete r[d],r[l(p,n[i].geometry,!0)]=i,n[t].geometry=null;}else f in r?a(f,d,h):d in e?o(f,d,h):(s(u),e[f]=i-1,r[d]=i-1);}return n.filter((t=>t.geometry))}(this.features)),this.sortFeaturesByKey&&this.features.sort(((t,e)=>t.sortKey-e.sortKey));}update(t,e,r,n){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,e,this.layers,r,n),this.icon.programConfigurations.updatePaintArrays(t,e,this.layers,r,n));}isEmpty(){return 0===this.symbolInstances.length&&!this.hasRTLText}uploadPending(){return !this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(t){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0;}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy();}getProjection(){return this.projectionInstance||(this.projectionInstance=Nf(this.projection)),this.projectionInstance}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData();}addToLineVertexArray(t,e){const r=this.lineVertexArray.length,n=t.segment;if(void 0!==n){let r=t.dist(e[n+1]),i=t.dist(e[n]);const s={};for(let t=n+1;t<e.length;t++)s[t]={x:e[t].x,y:e[t].y,tileUnitDistanceFromAnchor:r},t<e.length-1&&(r+=e[t+1].dist(e[t]));for(let t=n||0;t>=0;t--)s[t]={x:e[t].x,y:e[t].y,tileUnitDistanceFromAnchor:i},t>0&&(i+=e[t-1].dist(e[t]));for(let t=0;t<e.length;t++){const e=s[t];this.lineVertexArray.emplaceBack(e.x,e.y,e.tileUnitDistanceFromAnchor);}}return {lineStartIndex:r,lineLength:this.lineVertexArray.length-r}}addSymbols(t,e,r,n,i,s,a,o,l,u,c,h,p,f){const d=t.indexArray,y=t.layoutVertexArray,m=t.globeExtVertexArray,g=t.segments.prepareSegment(4*e.length,y,d,this.canOverlap?s.sortKey:void 0),x=this.glyphOffsetArray.length,v=g.vertexLength,b=this.allowVerticalPlacement&&a===Nh.vertical?Math.PI/2:0,_=s.text&&s.text.sections;for(let n=0;n<e.length;n++){const{tl:i,tr:a,bl:u,br:c,tex:h,pixelOffsetTL:x,pixelOffsetBR:v,minFontScaleX:w,minFontScaleY:A,glyphOffset:S,isSDF:k,sectionIndex:I}=e[n],M=g.vertexLength,z=S[1];if(Xf(y,l.x,l.y,i.x,z+i.y,h.x,h.y,r,k,x.x,x.y,w,A),Xf(y,l.x,l.y,a.x,z+a.y,h.x+h.w,h.y,r,k,v.x,x.y,w,A),Xf(y,l.x,l.y,u.x,z+u.y,h.x,h.y+h.h,r,k,x.x,v.y,w,A),Xf(y,l.x,l.y,c.x,z+c.y,h.x+h.w,h.y+h.h,r,k,v.x,v.y,w,A),o){const e=o.anchor,r=o.up;Kf(m,e.x,e.y,e.z,r[0],r[1],r[2]),Kf(m,e.x,e.y,e.z,r[0],r[1],r[2]),Kf(m,e.x,e.y,e.z,r[0],r[1],r[2]),Kf(m,e.x,e.y,e.z,r[0],r[1],r[2]),Hf(t.dynamicLayoutVertexArray,e.x,e.y,e.z,b);}else Hf(t.dynamicLayoutVertexArray,l.x,l.y,l.z,b);d.emplaceBack(M,M+1,M+2),d.emplaceBack(M+1,M+2,M+3),g.vertexLength+=4,g.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(S[0]),n!==e.length-1&&I===e[n+1].sectionIndex||t.programConfigurations.populatePaintArrays(y.length,s,s.index,{},p,f,_&&_[I]);}const w=o?o.anchor:l;t.placedSymbolArray.emplaceBack(w.x,w.y,w.z,l.x,l.y,x,this.glyphOffsetArray.length-x,v,u,c,l.segment,r?r[0]:0,r?r[1]:0,n[0],n[1],a,0,!1,0,h,0);}_commitLayoutVertex(t,e,r,n,i,s,a){t.emplaceBack(e,r,n,i,s,Math.round(a.x),Math.round(a.y));}_addCollisionDebugVertices(t,e,r,n,s,a,o){const l=r.segments.prepareSegment(4,r.layoutVertexArray,r.indexArray),u=l.vertexLength,c=o.tileAnchorX,h=o.tileAnchorY;for(let t=0;t<4;t++)r.collisionVertexArray.emplaceBack(0,0,0,0);r.collisionVertexArrayExt.emplaceBack(e,-t.padding,-t.padding),r.collisionVertexArrayExt.emplaceBack(e,t.padding,-t.padding),r.collisionVertexArrayExt.emplaceBack(e,t.padding,t.padding),r.collisionVertexArrayExt.emplaceBack(e,-t.padding,t.padding),this._commitLayoutVertex(r.layoutVertexArray,n,s,a,c,h,new i(t.x1,t.y1)),this._commitLayoutVertex(r.layoutVertexArray,n,s,a,c,h,new i(t.x2,t.y1)),this._commitLayoutVertex(r.layoutVertexArray,n,s,a,c,h,new i(t.x2,t.y2)),this._commitLayoutVertex(r.layoutVertexArray,n,s,a,c,h,new i(t.x1,t.y2)),l.vertexLength+=4;const p=r.indexArray;p.emplaceBack(u,u+1),p.emplaceBack(u+1,u+2),p.emplaceBack(u+2,u+3),p.emplaceBack(u+3,u),l.primitiveLength+=4;}_addTextDebugCollisionBoxes(t,e,r,n,i,s){for(let a=n;a<i;a++){const n=r.get(a),i=this.getSymbolInstanceTextSize(t,s,e,a);this._addCollisionDebugVertices(n,i,this.textCollisionBox,n.projectedAnchorX,n.projectedAnchorY,n.projectedAnchorZ,s);}}_addIconDebugCollisionBoxes(t,e,r,n,i,s){for(let a=n;a<i;a++){const n=r.get(a),i=this.getSymbolInstanceIconSize(t,e,a);this._addCollisionDebugVertices(n,i,this.iconCollisionBox,n.projectedAnchorX,n.projectedAnchorY,n.projectedAnchorZ,s);}}generateCollisionDebugBuffers(t,e){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new Jf(ha,ih.members,_a),this.iconCollisionBox=new Jf(ha,ih.members,_a);const r=ch(this.iconSizeData,t),n=ch(this.textSizeData,t);for(let i=0;i<this.symbolInstances.length;i++){const s=this.symbolInstances.get(i);this._addTextDebugCollisionBoxes(n,t,e,s.textBoxStartIndex,s.textBoxEndIndex,s),this._addTextDebugCollisionBoxes(n,t,e,s.verticalTextBoxStartIndex,s.verticalTextBoxEndIndex,s),this._addIconDebugCollisionBoxes(r,t,e,s.iconBoxStartIndex,s.iconBoxEndIndex,s),this._addIconDebugCollisionBoxes(r,t,e,s.verticalIconBoxStartIndex,s.verticalIconBoxEndIndex,s);}}getSymbolInstanceTextSize(t,e,r,n){const i=this.text.placedSymbolArray.get(e.rightJustifiedTextSymbolIndex>=0?e.rightJustifiedTextSymbolIndex:e.centerJustifiedTextSymbolIndex>=0?e.centerJustifiedTextSymbolIndex:e.leftJustifiedTextSymbolIndex>=0?e.leftJustifiedTextSymbolIndex:e.verticalPlacedTextSymbolIndex>=0?e.verticalPlacedTextSymbolIndex:n),s=uh(this.textSizeData,t,i)/ah;return this.tilePixelRatio*s}getSymbolInstanceIconSize(t,e,r){const n=this.icon.placedSymbolArray.get(r),i=uh(this.iconSizeData,t,n);return this.tilePixelRatio*i}_commitDebugCollisionVertexUpdate(t,e,r){t.emplaceBack(e,-r,-r),t.emplaceBack(e,r,-r),t.emplaceBack(e,r,r),t.emplaceBack(e,-r,r);}_updateTextDebugCollisionBoxes(t,e,r,n,i,s){for(let a=n;a<i;a++){const n=r.get(a),i=this.getSymbolInstanceTextSize(t,s,e,a);this._commitDebugCollisionVertexUpdate(this.textCollisionBox.collisionVertexArrayExt,i,n.padding);}}_updateIconDebugCollisionBoxes(t,e,r,n,i){for(let s=n;s<i;s++){const n=r.get(s),i=this.getSymbolInstanceIconSize(t,e,s);this._commitDebugCollisionVertexUpdate(this.iconCollisionBox.collisionVertexArrayExt,i,n.padding);}}updateCollisionDebugBuffers(t,e){if(!this.hasDebugData())return;this.hasTextCollisionBoxData()&&this.textCollisionBox.collisionVertexArrayExt.clear(),this.hasIconCollisionBoxData()&&this.iconCollisionBox.collisionVertexArrayExt.clear();const r=ch(this.iconSizeData,t),n=ch(this.textSizeData,t);for(let i=0;i<this.symbolInstances.length;i++){const s=this.symbolInstances.get(i);this._updateTextDebugCollisionBoxes(n,t,e,s.textBoxStartIndex,s.textBoxEndIndex,s),this._updateTextDebugCollisionBoxes(n,t,e,s.verticalTextBoxStartIndex,s.verticalTextBoxEndIndex,s),this._updateIconDebugCollisionBoxes(r,t,e,s.iconBoxStartIndex,s.iconBoxEndIndex),this._updateIconDebugCollisionBoxes(r,t,e,s.verticalIconBoxStartIndex,s.verticalIconBoxEndIndex);}this.hasTextCollisionBoxData()&&this.textCollisionBox.collisionVertexBufferExt&&this.textCollisionBox.collisionVertexBufferExt.updateData(this.textCollisionBox.collisionVertexArrayExt),this.hasIconCollisionBoxData()&&this.iconCollisionBox.collisionVertexBufferExt&&this.iconCollisionBox.collisionVertexBufferExt.updateData(this.iconCollisionBox.collisionVertexArrayExt);}_deserializeCollisionBoxesForSymbol(t,e,r,n,i,s,a,o,l){const u={};for(let n=e;n<r;n++){const e=t.get(n);u.textBox={x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,padding:e.padding,projectedAnchorX:e.projectedAnchorX,projectedAnchorY:e.projectedAnchorY,projectedAnchorZ:e.projectedAnchorZ,tileAnchorX:e.tileAnchorX,tileAnchorY:e.tileAnchorY},u.textFeatureIndex=e.featureIndex;break}for(let e=n;e<i;e++){const r=t.get(e);u.verticalTextBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,padding:r.padding,projectedAnchorX:r.projectedAnchorX,projectedAnchorY:r.projectedAnchorY,projectedAnchorZ:r.projectedAnchorZ,tileAnchorX:r.tileAnchorX,tileAnchorY:r.tileAnchorY},u.verticalTextFeatureIndex=r.featureIndex;break}for(let e=s;e<a;e++){const r=t.get(e);u.iconBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,padding:r.padding,projectedAnchorX:r.projectedAnchorX,projectedAnchorY:r.projectedAnchorY,projectedAnchorZ:r.projectedAnchorZ,tileAnchorX:r.tileAnchorX,tileAnchorY:r.tileAnchorY},u.iconFeatureIndex=r.featureIndex;break}for(let e=o;e<l;e++){const r=t.get(e);u.verticalIconBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,padding:r.padding,projectedAnchorX:r.projectedAnchorX,projectedAnchorY:r.projectedAnchorY,projectedAnchorZ:r.projectedAnchorZ,tileAnchorX:r.tileAnchorX,tileAnchorY:r.tileAnchorY},u.verticalIconFeatureIndex=r.featureIndex;break}return u}deserializeCollisionBoxes(t){this.collisionArrays=[];for(let e=0;e<this.symbolInstances.length;e++){const r=this.symbolInstances.get(e);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(t,r.textBoxStartIndex,r.textBoxEndIndex,r.verticalTextBoxStartIndex,r.verticalTextBoxEndIndex,r.iconBoxStartIndex,r.iconBoxEndIndex,r.verticalIconBoxStartIndex,r.verticalIconBoxEndIndex));}}hasTextData(){return this.text.segments.get().length>0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(t,e){const r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs;for(let e=r.vertexStartIndex;e<n;e+=4)t.indexArray.emplaceBack(e,e+1,e+2),t.indexArray.emplaceBack(e+1,e+2,e+3);}getSortedSymbolIndexes(t){if(this.sortedAngle===t&&void 0!==this.symbolInstanceIndexes)return this.symbolInstanceIndexes;const e=Math.sin(t),r=Math.cos(t),n=[],i=[],s=[];for(let t=0;t<this.symbolInstances.length;++t){s.push(t);const a=this.symbolInstances.get(t);n.push(0|Math.round(e*a.tileAnchorX+r*a.tileAnchorY)),i.push(a.featureIndex);}return s.sort(((t,e)=>n[t]-n[e]||i[e]-i[t])),s}addToSortKeyRanges(t,e){const r=this.sortKeyRanges[this.sortKeyRanges.length-1];r&&r.sortKey===e?r.symbolInstanceEnd=t+1:this.sortKeyRanges.push({sortKey:e,symbolInstanceStart:t,symbolInstanceEnd:t+1});}sortFeatures(t){if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const t of this.symbolInstanceIndexes){const e=this.symbolInstances.get(t);this.featureSortOrder.push(e.featureIndex),[e.rightJustifiedTextSymbolIndex,e.centerJustifiedTextSymbolIndex,e.leftJustifiedTextSymbolIndex].forEach(((t,e,r)=>{t>=0&&r.indexOf(t)===e&&this.addIndicesForPlacedSymbol(this.text,t);})),e.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,e.verticalPlacedTextSymbolIndex),e.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.placedIconSymbolIndex),e.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.verticalPlacedIconSymbolIndex);}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray);}}}Pi(Qf,\"SymbolBucket\",{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),Qf.MAX_GLYPHS=65535,Qf.addDynamicAttributes=Hf;const td=new Zs({\"symbol-placement\":new $s(Gt.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new $s(Gt.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new $s(Gt.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new Os(Gt.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new $s(Gt.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new $s(Gt.layout_symbol[\"icon-allow-overlap\"]),\"icon-ignore-placement\":new $s(Gt.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new $s(Gt.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new $s(Gt.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new Os(Gt.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new $s(Gt.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new $s(Gt.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new Os(Gt.layout_symbol[\"icon-image\"]),\"icon-rotate\":new Os(Gt.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new $s(Gt.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new $s(Gt.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new Os(Gt.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new Os(Gt.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new $s(Gt.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new $s(Gt.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new $s(Gt.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new Os(Gt.layout_symbol[\"text-field\"]),\"text-font\":new Os(Gt.layout_symbol[\"text-font\"]),\"text-size\":new Os(Gt.layout_symbol[\"text-size\"]),\"text-max-width\":new Os(Gt.layout_symbol[\"text-max-width\"]),\"text-line-height\":new Os(Gt.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new Os(Gt.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new Os(Gt.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new Os(Gt.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new $s(Gt.layout_symbol[\"text-variable-anchor\"]),\"text-anchor\":new Os(Gt.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new $s(Gt.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new $s(Gt.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new Os(Gt.layout_symbol[\"text-rotate\"]),\"text-padding\":new $s(Gt.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new $s(Gt.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new Os(Gt.layout_symbol[\"text-transform\"]),\"text-offset\":new Os(Gt.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new $s(Gt.layout_symbol[\"text-allow-overlap\"]),\"text-ignore-placement\":new $s(Gt.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new $s(Gt.layout_symbol[\"text-optional\"])});var ed={paint:new Zs({\"icon-opacity\":new Os(Gt.paint_symbol[\"icon-opacity\"]),\"icon-color\":new Os(Gt.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new Os(Gt.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new Os(Gt.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new Os(Gt.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new $s(Gt.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new $s(Gt.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new Os(Gt.paint_symbol[\"text-opacity\"]),\"text-color\":new Os(Gt.paint_symbol[\"text-color\"],{runtimeType:ne,getOverride:t=>t.textColor,hasOverride:t=>!!t.textColor}),\"text-halo-color\":new Os(Gt.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new Os(Gt.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new Os(Gt.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new $s(Gt.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new $s(Gt.paint_symbol[\"text-translate-anchor\"])}),layout:td};class rd{constructor(t){this.type=t.property.overrides?t.property.overrides.runtimeType:Qt,this.defaultValue=t;}evaluate(t){if(t.formattedSection){const e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default}eachChild(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression);}outputDefined(){return !1}serialize(){return null}}Pi(rd,\"FormatSectionOverride\",{omit:[\"defaultValue\"]});class nd extends xo{constructor(t){super(t,ed);}recalculate(t,e){super.recalculate(t,e),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(this.layout._values[\"icon-rotation-alignment\"]=\"point\"!==this.layout.get(\"symbol-placement\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(this.layout._values[\"text-rotation-alignment\"]=\"point\"!==this.layout.get(\"symbol-placement\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\"));const r=this.layout.get(\"text-writing-mode\");if(r){const t=[];for(const e of r)t.indexOf(e)<0&&t.push(e);this.layout._values[\"text-writing-mode\"]=t;}else this.layout._values[\"text-writing-mode\"]=\"point\"===this.layout.get(\"symbol-placement\")?[\"horizontal\"]:[\"horizontal\",\"vertical\"];this._setPaintOverrides();}getValueAndResolveTokens(t,e,r,n){const i=this.layout.get(t).evaluate(e,{},r,n),s=this._unevaluatedLayout._values[t];return s.isDataDriven()||Fn(s.value)||!i?i:function(t,e){return e.replace(/{([^{}]+)}/g,((e,r)=>r in t?String(t[r]):\"\"))}(e.properties,i)}createBucket(t){return new Qf(t)}queryRadius(){return 0}queryIntersectsFeature(){return !1}_setPaintOverrides(){for(const t of ed.paint.overridableProperties){if(!nd.hasPaintOverride(this.layout,t))continue;const e=this.paint.get(t),r=new rd(e),n=new Vn(r,e.property.specification);let i=null;i=\"constant\"===e.value.kind||\"source\"===e.value.kind?new Rn(\"source\",n):new Un(\"composite\",n,e.value.zoomStops,e.value._interpolationType),this.paint._values[t]=new Us(e.property,i,e.parameters);}}_handleOverridablePaintPropertyUpdate(t,e,r){return !(!this.layout||e.isDataDriven()||r.isDataDriven())&&nd.hasPaintOverride(this.layout,t)}static hasPaintOverride(t,e){const r=t.get(\"text-field\"),n=ed.paint.properties[e];let i=!1;const s=t=>{for(const e of t)if(n.overrides&&n.overrides.hasOverride(e))return void(i=!0)};if(\"constant\"===r.value.kind&&r.value.value instanceof _e)s(r.value.value.sections);else if(\"source\"===r.value.kind){const t=e=>{i||(e instanceof ze&&ke(e.value)===oe?s(e.value.sections):e instanceof Pe?s(e.sections):e.eachChild(t));},e=r.value;e._styleExpression&&t(e._styleExpression.expression);}return i}getProgramConfiguration(t){return new uo(this,t)}}var id={paint:new Zs({\"background-color\":new $s(Gt.paint_background[\"background-color\"]),\"background-pattern\":new Ns(Gt.paint_background[\"background-pattern\"]),\"background-opacity\":new $s(Gt.paint_background[\"background-opacity\"])})},sd={paint:new Zs({\"raster-opacity\":new $s(Gt.paint_raster[\"raster-opacity\"]),\"raster-hue-rotate\":new $s(Gt.paint_raster[\"raster-hue-rotate\"]),\"raster-brightness-min\":new $s(Gt.paint_raster[\"raster-brightness-min\"]),\"raster-brightness-max\":new $s(Gt.paint_raster[\"raster-brightness-max\"]),\"raster-saturation\":new $s(Gt.paint_raster[\"raster-saturation\"]),\"raster-contrast\":new $s(Gt.paint_raster[\"raster-contrast\"]),\"raster-resampling\":new $s(Gt.paint_raster[\"raster-resampling\"]),\"raster-fade-duration\":new $s(Gt.paint_raster[\"raster-fade-duration\"])})};class ad extends xo{constructor(t){super(t,{}),this.implementation=t;}is3D(){return \"3d\"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){return !1}serialize(){}onAdd(t){this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl);}onRemove(t){this.implementation.onRemove&&this.implementation.onRemove(t,t.painter.context.gl);}}var od={paint:new Zs({\"sky-type\":new $s(Gt.paint_sky[\"sky-type\"]),\"sky-atmosphere-sun\":new $s(Gt.paint_sky[\"sky-atmosphere-sun\"]),\"sky-atmosphere-sun-intensity\":new $s(Gt.paint_sky[\"sky-atmosphere-sun-intensity\"]),\"sky-gradient-center\":new $s(Gt.paint_sky[\"sky-gradient-center\"]),\"sky-gradient-radius\":new $s(Gt.paint_sky[\"sky-gradient-radius\"]),\"sky-gradient\":new Gs(Gt.paint_sky[\"sky-gradient\"]),\"sky-atmosphere-halo-color\":new $s(Gt.paint_sky[\"sky-atmosphere-halo-color\"]),\"sky-atmosphere-color\":new $s(Gt.paint_sky[\"sky-atmosphere-color\"]),\"sky-opacity\":new $s(Gt.paint_sky[\"sky-opacity\"])})};function ld(t,e,r){const n=[0,0,1],i=Hl([]);return Wl(i,i,r?-l(t)+Math.PI:l(t)),Yl(i,i,-l(e)),$l(n,n,i),Ll(n,n)}const ud={circle:class extends xo{constructor(t){super(t,pl);}createBucket(t){return new Ko(t)}queryRadius(t){const e=t;return ol(\"circle-radius\",this,e)+ol(\"circle-stroke-width\",this,e)+ll(this.paint.get(\"circle-translate\"))}queryIntersectsFeature(t,e,r,n,i,s,a,o){const l=cl(this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),s.angle,t.pixelToTileUnitsFactor),u=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r);return ru(t,n,s,a,o,\"map\"===this.paint.get(\"circle-pitch-alignment\"),\"map\"===this.paint.get(\"circle-pitch-scale\"),l,u)}getProgramIds(){return [\"circle\"]}getProgramConfiguration(t){return new uo(this,t)}},heatmap:class extends xo{createBucket(t){return new ou(t)}constructor(t){super(t,fu),this._updateColorRamp();}_handleSpecialPaintPropertyUpdate(t){\"heatmap-color\"===t&&this._updateColorRamp();}_updateColorRamp(){this.colorRamp=du({expression:this._transitionablePaint._values[\"heatmap-color\"].value.expression,evaluationKey:\"heatmapDensity\",image:this.colorRamp}),this.colorRampTexture=null;}resize(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null);}queryRadius(t){return ol(\"heatmap-radius\",this,t)}queryIntersectsFeature(t,e,r,n,s,a,o,l){const u=this.paint.get(\"heatmap-radius\").evaluate(e,r);return ru(t,n,a,o,l,!0,!0,new i(0,0),u)}hasOffscreenPass(){return 0!==this.paint.get(\"heatmap-opacity\")&&\"none\"!==this.visibility}getProgramIds(){return [\"heatmap\",\"heatmapTexture\"]}getProgramConfiguration(t){return new uo(this,t)}},hillshade:class extends xo{constructor(t){super(t,yu);}hasOffscreenPass(){return 0!==this.paint.get(\"hillshade-exaggeration\")&&\"none\"!==this.visibility}getProgramIds(){return [\"hillshade\",\"hillshadePrepare\"]}},fill:class extends xo{constructor(t){super(t,rc);}getProgramIds(){const t=this.paint.get(\"fill-pattern\"),e=t&&t.constantOr(1),r=[e?\"fillPattern\":\"fill\"];return this.paint.get(\"fill-antialias\")&&r.push(e&&!this.getPaintProperty(\"fill-outline-color\")?\"fillOutlinePattern\":\"fillOutline\"),r}getProgramConfiguration(t){return new uo(this,t)}recalculate(t,e){super.recalculate(t,e);const r=this.paint._values[\"fill-outline-color\"];\"constant\"===r.value.kind&&void 0===r.value.value&&(this.paint._values[\"fill-outline-color\"]=this.paint._values[\"fill-color\"]);}createBucket(t){return new tc(t)}queryRadius(){return ll(this.paint.get(\"fill-translate\"))}queryIntersectsFeature(t,e,r,n,i,s){return !t.queryGeometry.isAboveHorizon&&Wo(ul(t.tilespaceGeometry,this.paint.get(\"fill-translate\"),this.paint.get(\"fill-translate-anchor\"),s.angle,t.pixelToTileUnitsFactor),n)}isTileClipped(){return !0}},\"fill-extrusion\":class extends xo{constructor(t){super(t,Cc);}createBucket(t){return new wc(t)}queryRadius(){return ll(this.paint.get(\"fill-extrusion-translate\"))}is3D(){return !0}getProgramIds(){return [this.paint.get(\"fill-extrusion-pattern\").constantOr(1)?\"fillExtrusionPattern\":\"fillExtrusion\"]}getProgramConfiguration(t){return new uo(this,t)}queryIntersectsFeature(t,e,r,n,s,a,o,l,u){const c=cl(this.paint.get(\"fill-extrusion-translate\"),this.paint.get(\"fill-extrusion-translate-anchor\"),a.angle,t.pixelToTileUnitsFactor),h=this.paint.get(\"fill-extrusion-height\").evaluate(e,r),p=this.paint.get(\"fill-extrusion-base\").evaluate(e,r),f=[0,0],d=l&&a.elevation,y=a.elevation?a.elevation.exaggeration():1,m=t.tile.getBucket(this);if(d&&m instanceof wc){const t=m.centroidVertexArray,e=u+1;if(e<t.length){const r=t.get(e);f[0]=r.a_centroid_pos0,f[1]=r.a_centroid_pos1;}}if(0===f[0]&&1===f[1])return !1;\"globe\"===a.projection.name&&(n=Bc([n],[new i(0,0),new i(wo,wo)],t.tileID.canonical).map((t=>t.polygon)).flat());const g=function(t,e,r,n,s,a,o,l,u,c,h){return \"globe\"===t.projection.name?function(t,e,r,n,i,s,a,o,l,u,c){const h=[],p=[],f=t.projection.upVectorScale(c,t.center.lat,t.worldSize).metersToTile,d=[0,0,0,1],y=[0,0,0,1],m=(t,e,r,n)=>{t[0]=e,t[1]=r,t[2]=n,t[3]=1;},g=Tc();r>0&&(r+=g),n+=g;for(const g of e){const e=[],x=[];for(const h of g){const p=h.x+i.x,g=h.y+i.y,v=t.projection.projectTilePoint(p,g,c),b=t.projection.upVector(c,h.x,h.y);let _=r,w=n;if(a){const t=$c(p,g,r,n,a,o,l,u);_+=t.base,w+=t.top;}0!==r?m(d,v.x+b[0]*f*_,v.y+b[1]*f*_,v.z+b[2]*f*_):m(d,v.x,v.y,v.z),m(y,v.x+b[0]*f*w,v.y+b[1]*f*w,v.z+b[2]*f*w),jl(d,d,s),jl(y,y,s),e.push(jc(d)),x.push(jc(y));}h.push(e),p.push(x);}return [h,p]}(t,e,r,n,s,a,o,l,u,c,h):o?function(t,e,r,n,i,s,a,o,l){const u=[],c=[],h=[0,0,0,1];for(const p of t){const t=[],f=[];for(const u of p){const c=u.x+n.x,p=u.y+n.y,d=$c(c,p,e,r,s,a,o,l);h[0]=c,h[1]=p,h[2]=d.base,h[3]=1,Xl(h,h,i),h[3]=Math.max(h[3],1e-5);const y=jc([h[0]/h[3],h[1]/h[3],h[2]/h[3]]);h[0]=c,h[1]=p,h[2]=d.top,h[3]=1,Xl(h,h,i),h[3]=Math.max(h[3],1e-5);const m=jc([h[0]/h[3],h[1]/h[3],h[2]/h[3]]);t.push(y),f.push(m);}u.push(t),c.push(f);}return [u,c]}(e,r,n,s,a,o,l,u,c):function(t,e,r,n,s){const a=[],o=[],l=s[8]*e,u=s[9]*e,c=s[10]*e,h=s[11]*e,p=s[8]*r,f=s[9]*r,d=s[10]*r,y=s[11]*r;for(const e of t){const t=[],r=[];for(const a of e){const e=a.x+n.x,o=a.y+n.y,m=s[0]*e+s[4]*o+s[12],g=s[1]*e+s[5]*o+s[13],x=s[2]*e+s[6]*o+s[14],v=s[3]*e+s[7]*o+s[15],b=m+l,_=g+u,w=x+c,A=Math.max(v+h,1e-5),S=m+p,k=g+f,I=x+d,M=Math.max(v+y,1e-5),z=new i(b/A,_/A);z.z=w/A,t.push(z);const T=new i(S/M,k/M);T.z=I/M,r.push(T);}a.push(t),o.push(r);}return [a,o]}(e,r,n,s,a)}(a,n,p,h,c,o,d?l:null,f,y,a.center.lat,t.tileID.canonical),x=t.queryGeometry;return function(t,e,r){let n=1/0;Wo(r,e)&&(n=Uc(r,e[0]));for(let i=0;i<e.length;i++){const s=e[i],a=t[i];for(let t=0;t<s.length-1;t++){const e=s[t],i=[e,s[t+1],a[t+1],a[t],e];Ho(r,i)&&(n=Math.min(n,Uc(r,i)));}}return n!==1/0&&n}(g[0],g[1],x.isPointQuery()?x.screenBounds:x.screenGeometry)}},line:class extends xo{constructor(t){super(t,Yc),this.gradientVersion=0;}_handleSpecialPaintPropertyUpdate(t){if(\"line-gradient\"===t){const t=this._transitionablePaint._values[\"line-gradient\"].value.expression;this.stepInterpolant=t._styleExpression&&t._styleExpression.expression instanceof gr,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER;}}gradientExpression(){return this._transitionablePaint._values[\"line-gradient\"].value.expression}recalculate(t,e){super.recalculate(t,e),this.paint._values[\"line-floorwidth\"]=Wc.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,t);}createBucket(t){return new Kc(t)}getProgramIds(){return [this.paint.get(\"line-pattern\").constantOr(1)?\"linePattern\":\"line\"]}getProgramConfiguration(t){return new uo(this,t)}queryRadius(t){const e=t,r=Jc(ol(\"line-width\",this,e),ol(\"line-gap-width\",this,e)),n=ol(\"line-offset\",this,e);return r/2+Math.abs(n)+ll(this.paint.get(\"line-translate\"))}queryIntersectsFeature(t,e,r,n,s,a){if(t.queryGeometry.isAboveHorizon)return !1;const o=ul(t.tilespaceGeometry,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),a.angle,t.pixelToTileUnitsFactor),l=t.pixelToTileUnitsFactor/2*Jc(this.paint.get(\"line-width\").evaluate(e,r),this.paint.get(\"line-gap-width\").evaluate(e,r)),u=this.paint.get(\"line-offset\").evaluate(e,r);return u&&(n=function(t,e){const r=[],n=new i(0,0);for(let i=0;i<t.length;i++){const s=t[i],a=[];for(let t=0;t<s.length;t++){const r=s[t-1],i=s[t],o=s[t+1],l=0===t?n:i.sub(r)._unit()._perp(),u=t===s.length-1?n:o.sub(i)._unit()._perp(),c=l._add(u)._unit();c._mult(1/(c.x*u.x+c.y*u.y)),a.push(c._mult(e)._add(i));}r.push(a);}return r}(n,u*t.pixelToTileUnitsFactor)),function(t,e,r){for(let n=0;n<e.length;n++){const i=e[n];if(t.length>=3)for(let e=0;e<i.length;e++)if(il(t,i[e]))return !0;if(Jo(t,i,r))return !0}return !1}(o,n,l)}isTileClipped(){return !0}},symbol:nd,background:class extends xo{constructor(t){super(t,id);}getProgramIds(){return [this.paint.get(\"background-pattern\")?\"backgroundPattern\":\"background\"]}},raster:class extends xo{constructor(t){super(t,sd);}getProgramIds(){return [\"raster\"]}},sky:class extends xo{constructor(t){super(t,od),this._updateColorRamp();}_handleSpecialPaintPropertyUpdate(t){\"sky-gradient\"===t?this._updateColorRamp():\"sky-atmosphere-sun\"!==t&&\"sky-atmosphere-halo-color\"!==t&&\"sky-atmosphere-color\"!==t&&\"sky-atmosphere-sun-intensity\"!==t||(this._skyboxInvalidated=!0);}_updateColorRamp(){this.colorRamp=du({expression:this._transitionablePaint._values[\"sky-gradient\"].value.expression,evaluationKey:\"skyRadialProgress\"}),this.colorRampTexture&&(this.colorRampTexture.destroy(),this.colorRampTexture=null);}needsSkyboxCapture(t){if(this._skyboxInvalidated||!this.skyboxTexture||!this.skyboxGeometry)return !0;if(!this.paint.get(\"sky-atmosphere-sun\")){const e=t.style.light.properties.get(\"position\");return this._lightPosition.azimuthal!==e.azimuthal||this._lightPosition.polar!==e.polar}return !1}getCenter(t,e){if(\"atmosphere\"===this.paint.get(\"sky-type\")){const r=this.paint.get(\"sky-atmosphere-sun\"),n=!r,i=t.style.light,s=i.properties.get(\"position\");return n&&\"viewport\"===i.properties.get(\"anchor\")&&E(\"The sun direction is attached to a light with viewport anchor, lighting may behave unexpectedly.\"),n?ld(s.azimuthal,90-s.polar,e):ld(r[0],90-r[1],e)}const r=this.paint.get(\"sky-gradient-center\");return ld(r[0],90-r[1],e)}is3D(){return !1}isSky(){return !0}markSkyboxValid(t){this._skyboxInvalidated=!1,this._lightPosition=t.style.light.properties.get(\"position\");}hasOffscreenPass(){return !0}getProgramIds(){const t=this.paint.get(\"sky-type\");return \"atmosphere\"===t?[\"skyboxCapture\",\"skybox\"]:\"gradient\"===t?[\"skyboxGradient\"]:null}}};class cd{constructor(t,e,r,n){this.context=t,this.format=r,this.texture=t.gl.createTexture(),this.update(e,n);}update(t,r,n){const{width:i,height:s}=t,{context:a}=this,{gl:o}=a,{HTMLImageElement:l,HTMLCanvasElement:u,HTMLVideoElement:c,ImageData:h,ImageBitmap:p}=e;if(o.bindTexture(o.TEXTURE_2D,this.texture),a.pixelStoreUnpackFlipY.set(!1),a.pixelStoreUnpack.set(1),a.pixelStoreUnpackPremultiplyAlpha.set(this.format===o.RGBA&&(!r||!1!==r.premultiply)),n||this.size&&this.size[0]===i&&this.size[1]===s){const{x:e,y:r}=n||{x:0,y:0};t instanceof l||t instanceof u||t instanceof c||t instanceof h||p&&t instanceof p?o.texSubImage2D(o.TEXTURE_2D,0,e,r,o.RGBA,o.UNSIGNED_BYTE,t):o.texSubImage2D(o.TEXTURE_2D,0,e,r,i,s,o.RGBA,o.UNSIGNED_BYTE,t.data);}else this.size=[i,s],t instanceof l||t instanceof u||t instanceof c||t instanceof h||p&&t instanceof p?o.texImage2D(o.TEXTURE_2D,0,this.format,this.format,o.UNSIGNED_BYTE,t):o.texImage2D(o.TEXTURE_2D,0,this.format,i,s,0,this.format,o.UNSIGNED_BYTE,t.data);this.useMipmap=Boolean(r&&r.useMipmap&&this.isSizePowerOfTwo()),this.useMipmap&&o.generateMipmap(o.TEXTURE_2D);}bind(t,e){const{context:r}=this,{gl:n}=r;n.bindTexture(n.TEXTURE_2D,this.texture),t!==this.filter&&(n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,t),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,this.useMipmap?t===n.NEAREST?n.NEAREST_MIPMAP_NEAREST:n.LINEAR_MIPMAP_NEAREST:t),this.filter=t),e!==this.wrap&&(n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,e),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,e),this.wrap=e);}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){const{gl:t}=this.context;t.deleteTexture(this.texture),this.texture=null;}}class hd{constructor(t,e){this.width=t,this.height=e,this.nextRow=0,this.image=new hu({width:t,height:e}),this.positions={},this.uploaded=!1;}getDash(t,e){const r=this.getKey(t,e);return this.positions[r]}trim(){const t=this.width,e=this.height=A(this.nextRow);this.image.resize({width:t,height:e});}getKey(t,e){return t.join(\",\")+e}getDashRanges(t,e,r){const n=[];let i=t.length%2==1?-t[t.length-1]*r:0,s=t[0]*r,a=!0;n.push({left:i,right:s,isDash:a,zeroLength:0===t[0]});let o=t[0];for(let e=1;e<t.length;e++){a=!a;const l=t[e];i=o*r,o+=l,s=o*r,n.push({left:i,right:s,isDash:a,zeroLength:0===l});}return n}addRoundDash(t,e,r){const n=e/2;for(let e=-r;e<=r;e++){const i=this.width*(this.nextRow+r+e);let s=0,a=t[s];for(let o=0;o<this.width;o++){o/a.right>1&&(a=t[++s]);const l=Math.abs(o-a.left),u=Math.abs(o-a.right),c=Math.min(l,u);let h;const p=e/r*(n+1);if(a.isDash){const t=n-Math.abs(p);h=Math.sqrt(c*c+t*t);}else h=n-Math.sqrt(c*c+p*p);this.image.data[i+o]=Math.max(0,Math.min(255,h+128));}}}addRegularDash(t,e){for(let e=t.length-1;e>=0;--e){const r=t[e],n=t[e+1];r.zeroLength?t.splice(e,1):n&&n.isDash===r.isDash&&(n.left=r.left,t.splice(e,1));}const r=t[0],n=t[t.length-1];r.isDash===n.isDash&&(r.left=n.left-this.width,n.right=r.right+this.width);const i=this.width*this.nextRow;let s=0,a=t[s];for(let r=0;r<this.width;r++){r/a.right>1&&(a=t[++s]);const n=Math.abs(r-a.left),o=Math.abs(r-a.right),l=Math.min(n,o);this.image.data[i+r]=Math.max(0,Math.min(255,(a.isDash?l:-l)+e+128));}}addDash(t,e){const r=this.getKey(t,e);if(this.positions[r])return this.positions[r];const n=\"round\"===e,i=n?7:0,s=2*i+1;if(this.nextRow+s>this.height)return E(\"LineAtlas out of space\"),null;0===t.length&&t.push(1);let a=0;for(let e=0;e<t.length;e++)t[e]<0&&(E(\"Negative value is found in line dasharray, replacing values with 0\"),t[e]=0),a+=t[e];if(0!==a){const r=this.width/a,s=this.getDashRanges(t,this.width,r);n?this.addRoundDash(s,r,i):this.addRegularDash(s,\"square\"===e?.5*r:0);}const o=this.nextRow+i;this.nextRow+=s;const l={tl:[o,i],br:[a,0]};return this.positions[r]=l,l}}Pi(hd,\"LineAtlas\");class pd{constructor(t){this._callback=t,this._triggered=!1,\"undefined\"!=typeof MessageChannel&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._callback();});}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((()=>{this._triggered=!1,this._callback();}),0));}remove(){this._channel=void 0,this._callback=()=>{};}}class fd{constructor(){this.tasks={},this.taskQueue=[],k([\"process\"],this),this.invoker=new pd(this.process),this.nextId=0;}add(t,e){const r=this.nextId++,n=function({type:t,isSymbolTile:e,zoom:r}){return r=r||0,\"message\"===t?0:\"maybePrepare\"!==t||e?\"parseTile\"!==t||e?\"parseTile\"===t&&e?300-r:\"maybePrepare\"===t&&e?400-r:500:200-r:100-r}(e);if(0===n){D();try{t();}finally{}return {cancel:()=>{}}}return this.tasks[r]={fn:t,metadata:e,priority:n,id:r},this.taskQueue.push(r),this.invoker.trigger(),{cancel:()=>{delete this.tasks[r];}}}process(){D();try{if(this.taskQueue=this.taskQueue.filter((t=>!!this.tasks[t])),!this.taskQueue.length)return;const t=this.pick();if(null===t)return;const e=this.tasks[t];if(delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),!e)return;e.fn();}finally{}}pick(){let t=null,e=1/0;for(let r=0;r<this.taskQueue.length;r++){const n=this.tasks[this.taskQueue[r]];n.priority<e&&(e=n.priority,t=r);}if(null===t)return null;const r=this.taskQueue[t];return this.taskQueue.splice(t,1),r}remove(){this.invoker.remove();}}class dd{constructor(t){this._stringToNumber={},this._numberToString=[];for(let e=0;e<t.length;e++){const r=t[e];this._stringToNumber[r]=e,this._numberToString[e]=r;}}encode(t){return this._stringToNumber[t]}decode(t){return this._numberToString[t]}}const yd=[\"tile\",\"layer\",\"source\",\"sourceLayer\",\"state\"];class md{constructor(t,e,r,n,i){this.type=\"Feature\",this._vectorTileFeature=t,this._z=e,this._x=r,this._y=n,this.properties=t.properties,this.id=i;}get geometry(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._x,this._y,this._z).geometry),this._geometry}set geometry(t){this._geometry=t;}toJSON(){const t={type:\"Feature\",geometry:this.geometry,properties:this.properties};void 0!==this.id&&(t.id=this.id);for(const e of yd)void 0!==this[e]&&(t[e]=this[e]);return t}}const gd=32,xd=33,vd=new Uint16Array(8184);for(let t=0;t<2046;t++){let e=t+2,r=0,n=0,i=0,s=0,a=0,o=0;for(1&e?i=s=a=gd:r=n=o=gd;(e>>=1)>1;){const t=r+i>>1,l=n+s>>1;1&e?(i=r,s=n,r=a,n=o):(r=i,n=s,i=a,s=o),a=t,o=l;}const l=4*t;vd[l+0]=r,vd[l+1]=n,vd[l+2]=i,vd[l+3]=s;}const bd=new Uint16Array(2178),_d=new Uint8Array(1089),wd=new Uint16Array(1089);function Ad(t){return 0===t?-.03125:32===t?.03125:0}var Sd=Ws([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]);const kd={type:2,extent:wo,loadGeometry:()=>[[new i(0,0),new i(8193,0),new i(8193,8193),new i(0,8193),new i(0,0)]]};class Id{constructor(t,e,r,n,i){this.tileID=t,this.uid=_(),this.uses=0,this.tileSize=e,this.tileZoom=r,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.isRaster=i,this.expiredRequestCount=0,this.state=\"loading\",n&&n.transform&&(this.projection=n.transform.projection);}registerFadeDuration(t){const e=t+this.timeAdded;e<X.now()||this.fadeEndTime&&e<this.fadeEndTime||(this.fadeEndTime=e);}wasRequested(){return \"errored\"===this.state||\"loaded\"===this.state||\"reloading\"===this.state}get tileTransform(){return this._tileTransform||(this._tileTransform=Af(this.tileID.canonical,this.projection)),this._tileTransform}loadVectorData(t,e,r){if(this.unloadVectorData(),this.state=\"loaded\",t){t.featureIndex&&(this.latestFeatureIndex=t.featureIndex,t.rawTileData?(this.latestRawTileData=t.rawTileData,this.latestFeatureIndex.rawTileData=t.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=t.collisionBoxArray,this.buckets=function(t,e){const r={};if(!e)return r;for(const n of t){const t=n.layerIds.map((t=>e.getLayer(t))).filter(Boolean);if(0!==t.length){n.layers=t,n.stateDependentLayerIds&&(n.stateDependentLayers=n.stateDependentLayerIds.map((e=>t.filter((t=>t.id===e))[0])));for(const e of t)r[e.id]=n;}}return r}(t.buckets,e.style),this.hasSymbolBuckets=!1;for(const t in this.buckets){const e=this.buckets[t];if(e instanceof Qf){if(this.hasSymbolBuckets=!0,!r)break;e.justReloaded=!0;}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const t in this.buckets){const e=this.buckets[t];if(e instanceof Qf&&e.hasRTLText){this.hasRTLText=!0,Es.isLoading()||Es.isLoaded()||\"deferred\"!==Ts()||Bs();break}}this.queryPadding=0;for(const t in this.buckets){const r=this.buckets[t];this.queryPadding=Math.max(this.queryPadding,e.style.getLayer(t).queryRadius(r));}t.imageAtlas&&(this.imageAtlas=t.imageAtlas),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage),t.lineAtlas&&(this.lineAtlas=t.lineAtlas);}else this.collisionBoxArray=new Ma;}unloadVectorData(){if(this.hasData()){for(const t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlas&&(this.imageAtlas=null),this.lineAtlas&&(this.lineAtlas=null),this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.lineAtlasTexture&&this.lineAtlasTexture.destroy(),this._tileBoundsBuffer&&(this._tileBoundsBuffer.destroy(),this._tileBoundsIndexBuffer.destroy(),this._tileBoundsSegments.destroy(),this._tileBoundsBuffer=null),this._tileDebugBuffer&&(this._tileDebugBuffer.destroy(),this._tileDebugSegments.destroy(),this._tileDebugBuffer=null),this._tileDebugIndexBuffer&&(this._tileDebugIndexBuffer.destroy(),this._tileDebugIndexBuffer=null),this._globeTileDebugBorderBuffer&&(this._globeTileDebugBorderBuffer.destroy(),this._globeTileDebugBorderBuffer=null),this._tileDebugTextBuffer&&(this._tileDebugTextBuffer.destroy(),this._tileDebugTextSegments.destroy(),this._tileDebugTextIndexBuffer.destroy(),this._tileDebugTextBuffer=null),this._globeTileDebugTextBuffer&&(this._globeTileDebugTextBuffer.destroy(),this._globeTileDebugTextBuffer=null),this.latestFeatureIndex=null,this.state=\"unloaded\";}}getBucket(t){return this.buckets[t.id]}upload(t){for(const e in this.buckets){const r=this.buckets[e];r.uploadPending()&&r.upload(t);}const e=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new cd(t,this.imageAtlas.image,e.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new cd(t,this.glyphAtlasImage,e.ALPHA),this.glyphAtlasImage=null),this.lineAtlas&&!this.lineAtlas.uploaded&&(this.lineAtlasTexture=new cd(t,this.lineAtlas.image,e.ALPHA),this.lineAtlas.uploaded=!0);}prepare(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture);}queryRenderedFeatures(t,e,r,n,i,s,a,o){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({tileResult:n,pixelPosMatrix:a,transform:s,params:i,tileTransform:this.tileTransform},t,e,r):{}}querySourceFeatures(t,e){const r=this.latestFeatureIndex;if(!r||!r.rawTileData)return;const n=r.loadVTLayers(),i=e?e.sourceLayer:\"\",s=n._geojsonTileLayer||n[i];if(!s)return;const a=Jn(e&&e.filter),{z:o,x:l,y:u}=this.tileID.canonical,c={z:o,x:l,y:u};for(let e=0;e<s.length;e++){const n=s.feature(e);if(a.needGeometry){const t=Go(n,!0);if(!a.filter(new Cs(this.tileID.overscaledZ),t,this.tileID.canonical))continue}else if(!a.filter(new Cs(this.tileID.overscaledZ),n))continue;const h=r.getId(n,i),p=new md(n,o,l,u,h);p.tile=c,t.push(p);}}hasData(){return \"loaded\"===this.state||\"reloading\"===this.state||\"expired\"===this.state}patternsLoaded(){return !!this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length}setExpiryData(t){const e=this.expirationTime;if(t.cacheControl){const e=V(t.cacheControl);e[\"max-age\"]&&(this.expirationTime=Date.now()+1e3*e[\"max-age\"]);}else t.expires&&(this.expirationTime=new Date(t.expires).getTime());if(this.expirationTime){const t=Date.now();let r=!1;if(this.expirationTime>t)r=!1;else if(e)if(this.expirationTime<e)r=!0;else {const n=this.expirationTime-e;n?this.expirationTime=t+Math.max(n,3e4):r=!0;}else r=!0;r?(this.expiredRequestCount++,this.state=\"expired\"):this.expiredRequestCount=0;}}getExpiryTimeout(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)}setFeatureState(t,e){if(!this.latestFeatureIndex||!this.latestFeatureIndex.rawTileData||0===Object.keys(t).length||!e)return;const r=this.latestFeatureIndex.loadVTLayers(),n=e.style.listImages();for(const i in this.buckets){if(!e.style.hasLayer(i))continue;const s=this.buckets[i],a=s.layers[0].sourceLayer||\"_geojsonTileLayer\",o=r[a],l=t[a];if(!o||!l||0===Object.keys(l).length)continue;if(s.update(l,o,n,this.imageAtlas&&this.imageAtlas.patternPositions||{}),s instanceof Kc||s instanceof tc){const t=e.style._getSourceCache(s.layers[0].source);e._terrain&&e._terrain.enabled&&t&&s.programConfigurations.needsUpload&&e._terrain._clearRenderCacheForTile(t.id,this.tileID);}const u=e&&e.style&&e.style.getLayer(i);u&&(this.queryPadding=Math.max(this.queryPadding,u.queryRadius(s)));}}holdingForFade(){return void 0!==this.symbolFadeHoldUntil}symbolFadeFinished(){return !this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<X.now()}clearFadeHold(){this.symbolFadeHoldUntil=void 0;}setHoldDuration(t){this.symbolFadeHoldUntil=X.now()+t;}setTexture(t,e){const r=e.context,n=r.gl;this.texture=e.getTileTexture(t.width),this.texture?this.texture.update(t,{useMipmap:!0}):(this.texture=new cd(r,t,n.RGBA,{useMipmap:!0}),this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE),r.extTextureFilterAnisotropic&&n.texParameterf(n.TEXTURE_2D,r.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,r.extTextureFilterAnisotropicMax));}setDependencies(t,e){const r={};for(const t of e)r[t]=!0;this.dependencies[t]=r;}hasDependency(t,e){for(const r of t){const t=this.dependencies[r];if(t)for(const r of e)if(t[r])return !0}return !1}clearQueryDebugViz(){}_makeDebugTileBoundsBuffers(t,e){if(!e||\"mercator\"===e.name||this._tileDebugBuffer)return;const r=No(kd,this.tileID.canonical,this.tileTransform)[0],n=new Qs,i=new wa;for(let t=0;t<r.length;t++){const{x:e,y:s}=r[t];n.emplaceBack(e,s),i.emplaceBack(t);}i.emplaceBack(0),this._tileDebugIndexBuffer=t.createIndexBuffer(i),this._tileDebugBuffer=t.createVertexBuffer(n,Zp.members),this._tileDebugSegments=_o.simpleSegment(0,0,n.length,i.length);}_makeTileBoundsBuffers(t,e){if(this._tileBoundsBuffer||!e||\"mercator\"===e.name)return;const r=No(kd,this.tileID.canonical,this.tileTransform)[0];let n,i;if(this.isRaster){const t=function(t,e){const r=Af(t,e),n=Math.pow(2,t.z);for(let i=0;i<xd;i++)for(let s=0;s<xd;s++){const a=Eo((t.x+(s+Ad(s))/gd)/n),o=Co((t.y+(i+Ad(i))/gd)/n),l=e.project(a,o),u=i*xd+s;bd[2*u+0]=Math.round((l.x*r.scale-r.x)*wo),bd[2*u+1]=Math.round((l.y*r.scale-r.y)*wo);}_d.fill(0),wd.fill(0);for(let t=2045;t>=0;t--){const e=4*t,r=vd[e+0],n=vd[e+1],i=vd[e+2],s=vd[e+3],a=r+i>>1,o=n+s>>1,l=a+o-n,u=o+r-a,c=n*xd+r,h=s*xd+i,p=o*xd+a,f=Math.hypot((bd[2*c+0]+bd[2*h+0])/2-bd[2*p+0],(bd[2*c+1]+bd[2*h+1])/2-bd[2*p+1])>=16;if(_d[p]=_d[p]||(f?1:0),t<1022){const t=(n+u>>1)*xd+(r+l>>1),e=(s+u>>1)*xd+(i+l>>1);_d[p]=_d[p]||_d[t]||_d[e];}}const i=new ea,s=new ya;let a=0;function o(t,e){const r=e*xd+t;return 0===wd[r]&&(i.emplaceBack(bd[2*r+0],bd[2*r+1],t*wo/gd,e*wo/gd),wd[r]=++a),wd[r]-1}function l(t,e,r,n,i,a){const u=t+r>>1,c=e+n>>1;if(Math.abs(t-i)+Math.abs(e-a)>1&&_d[c*xd+u])l(i,a,t,e,u,c),l(r,n,i,a,u,c);else {const l=o(t,e),u=o(r,n),c=o(i,a);s.emplaceBack(l,u,c);}}return l(0,0,gd,gd,gd,0),l(gd,gd,0,0,0,gd),{vertices:i,indices:s}}(this.tileID.canonical,e);n=t.vertices,i=t.indices;}else {n=new ea,i=new ya;for(const{x:t,y:e}of r)n.emplaceBack(t,e,0,0);const t=xu(n.int16,void 0,4);for(let e=0;e<t.length;e+=3)i.emplaceBack(t[e],t[e+1],t[e+2]);}this._tileBoundsBuffer=t.createVertexBuffer(n,Sd.members),this._tileBoundsIndexBuffer=t.createIndexBuffer(i),this._tileBoundsSegments=_o.simpleSegment(0,0,n.length,i.length);}_makeGlobeTileDebugBuffers(t,e){const r=e.projection;if(!r||\"globe\"!==r.name||e.freezeTileCoverage)return;const n=this.tileID.canonical,i=df(nf(n,e)),s=gf(e.zoom);let a;s>0&&(a=gl(new Float64Array(16),e.globeMatrix));const o=(n.x+.5)/(1<<n.z)-zo(e.center.lng);let l=0;o>.5?l=-1:o<-.5&&(l=1),this._makeGlobeTileDebugBorderBuffer(t,n,e,i,a,s,l),this._makeGlobeTileDebugTextBuffer(t,n,e,i,a,s,l);}_globePoint(t,e,r,n,i,s,a,o){let l=hf(t,e,r);if(s){const i=1<<r.z,u=[((t/wo+r.x)/i+o)*n,(e/wo+r.y)/i*n,0];jl(u,u,s),l=vr(l,u,a);}return jl(l,l,i)}_makeGlobeTileDebugBorderBuffer(t,e,r,n,i,s,a){const o=new Qs,l=new wa,u=new ta,c=(t,c,h,p,f)=>{const d=(h-t)/(f-1),y=(p-c)/(f-1),m=o.length;for(let h=0;h<f;h++){const p=t+h*d,f=c+h*y;o.emplaceBack(p,f);const g=this._globePoint(p,f,e,r.worldSize,n,i,s,a);u.emplaceBack(g[0],g[1],g[2]),l.emplaceBack(m+h);}},h=wo;c(0,0,h,0,16),c(h,0,h,h,16),c(h,h,0,h,16),c(0,h,0,0,16),this._tileDebugIndexBuffer=t.createIndexBuffer(l),this._tileDebugBuffer=t.createVertexBuffer(o,Zp.members),this._globeTileDebugBorderBuffer=t.createVertexBuffer(u,Gp.members),this._tileDebugSegments=_o.simpleSegment(0,0,o.length,l.length);}_makeGlobeTileDebugTextBuffer(t,e,r,n,i,s,a){const o=new Qs,l=new ya,u=new ta,c=25;l.reserve(32),o.reserve(c),u.reserve(c);const h=(t,e)=>c*t+e;for(let t=0;t<c;t++){const l=2048*t;for(let t=0;t<c;t++){const c=2048*t;o.emplaceBack(c,l);const h=this._globePoint(c,l,e,r.worldSize,n,i,s,a);u.emplaceBack(h[0],h[1],h[2]);}}for(let t=0;t<4;t++)for(let e=0;e<4;e++){const r=h(t,e),n=h(t,e+1),i=h(t+1,e),s=h(t+1,e+1);l.emplaceBack(r,n,i),l.emplaceBack(i,n,s);}this._tileDebugTextIndexBuffer=t.createIndexBuffer(l),this._tileDebugTextBuffer=t.createVertexBuffer(o,Zp.members),this._globeTileDebugTextBuffer=t.createVertexBuffer(u,Gp.members),this._tileDebugTextSegments=_o.simpleSegment(0,0,c,32);}}class Md{constructor(){this.state={},this.stateChanges={},this.deletedStates={};}updateState(t,e,r){const n=String(e);if(this.stateChanges[t]=this.stateChanges[t]||{},this.stateChanges[t][n]=this.stateChanges[t][n]||{},v(this.stateChanges[t][n],r),null===this.deletedStates[t]){this.deletedStates[t]={};for(const e in this.state[t])e!==n&&(this.deletedStates[t][e]=null);}else if(this.deletedStates[t]&&null===this.deletedStates[t][n]){this.deletedStates[t][n]={};for(const e in this.state[t][n])r[e]||(this.deletedStates[t][n][e]=null);}else for(const e in r)this.deletedStates[t]&&this.deletedStates[t][n]&&null===this.deletedStates[t][n][e]&&delete this.deletedStates[t][n][e];}removeFeatureState(t,e,r){if(null===this.deletedStates[t])return;const n=String(e);if(this.deletedStates[t]=this.deletedStates[t]||{},r&&void 0!==e)null!==this.deletedStates[t][n]&&(this.deletedStates[t][n]=this.deletedStates[t][n]||{},this.deletedStates[t][n][r]=null);else if(void 0!==e)if(this.stateChanges[t]&&this.stateChanges[t][n])for(r in this.deletedStates[t][n]={},this.stateChanges[t][n])this.deletedStates[t][n][r]=null;else this.deletedStates[t][n]=null;else this.deletedStates[t]=null;}getState(t,e){const r=String(e),n=v({},(this.state[t]||{})[r],(this.stateChanges[t]||{})[r]);if(null===this.deletedStates[t])return {};if(this.deletedStates[t]){const r=this.deletedStates[t][e];if(null===r)return {};for(const t in r)delete n[t];}return n}initializeTileState(t,e){t.setFeatureState(this.state,e);}coalesceChanges(t,e){const r={};for(const t in this.stateChanges){this.state[t]=this.state[t]||{};const e={};for(const r in this.stateChanges[t])this.state[t][r]||(this.state[t][r]={}),v(this.state[t][r],this.stateChanges[t][r]),e[r]=this.state[t][r];r[t]=e;}for(const t in this.deletedStates){this.state[t]=this.state[t]||{};const e={};if(null===this.deletedStates[t])for(const r in this.state[t])e[r]={},this.state[t][r]={};else for(const r in this.deletedStates[t]){if(null===this.deletedStates[t][r])this.state[t][r]={};else for(const e of Object.keys(this.deletedStates[t][r]))delete this.state[t][r][e];e[r]=this.state[t][r];}r[t]=r[t]||{},v(r[t],e);}if(this.stateChanges={},this.deletedStates={},0!==Object.keys(r).length)for(const n in t)t[n].setFeatureState(r,e);}}class zd{constructor(t){this.size=t,this.minimums=[],this.maximums=[],this.leaves=[];}getElevation(t,e){const r=this.toIdx(t,e);return {min:this.minimums[r],max:this.maximums[r]}}isLeaf(t,e){return this.leaves[this.toIdx(t,e)]}toIdx(t,e){return e*this.size+t}}function Td(t,e,r,n){let i=0,s=Number.MAX_VALUE;for(let a=0;a<3;a++)if(Math.abs(n[a])<1e-15){if(r[a]<t[a]||r[a]>e[a])return null}else {const o=1/n[a];let l=(t[a]-r[a])*o,u=(e[a]-r[a])*o;if(l>u){const t=l;l=u,u=t;}if(l>i&&(i=l),u<s&&(s=u),i>s)return null}return i}function Bd(t,e,r,n,i,s,a,o,l,u,c){const h=n-t,p=i-e,f=s-r,d=a-t,y=o-e,m=l-r,g=c[1]*m-c[2]*y,x=c[2]*d-c[0]*m,v=c[0]*y-c[1]*d,b=h*g+p*x+f*v;if(Math.abs(b)<1e-15)return null;const _=1/b,w=u[0]-t,A=u[1]-e,S=u[2]-r,k=(w*g+A*x+S*v)*_;if(k<0||k>1)return null;const I=A*f-S*p,M=S*h-w*f,z=w*p-A*h,T=(c[0]*I+c[1]*M+c[2]*z)*_;return T<0||k+T>1?null:(d*I+y*M+m*z)*_}function Ed(t,e,r){return (t-e)/(r-e)}function Cd(t,e,r,n,i,s,a,o,l){const u=1<<r,c=s-n,h=a-i,p=(t+1)/u*c+n,f=(e+0)/u*h+i,d=(e+1)/u*h+i;o[0]=(t+0)/u*c+n,o[1]=f,l[0]=p,l[1]=d;}class Pd{constructor(t){if(this.maximums=[],this.minimums=[],this.leaves=[],this.childOffsets=[],this.nodeCount=0,this.dem=t,this._siblingOffset=[[0,0],[1,0],[0,1],[1,1]],!this.dem)return;const e=function(t){const e=Math.ceil(Math.log2(t.dim/8)),r=[];let n=Math.ceil(Math.pow(2,e));const i=1/n,s=(t,e,r,n,i)=>{const s=n?1:0,a=(t+1)*r-s,o=e*r,l=(e+1)*r-s;i[0]=t*r,i[1]=o,i[2]=a,i[3]=l;};let a=new zd(n);const o=[];for(let e=0;e<n*n;e++){s(e%n,Math.floor(e/n),i,!1,o);const r=Vd(o[0],o[1],t),l=Vd(o[2],o[1],t),u=Vd(o[2],o[3],t),c=Vd(o[0],o[3],t);a.minimums.push(Math.min(r,l,u,c)),a.maximums.push(Math.max(r,l,u,c)),a.leaves.push(1);}for(r.push(a),n/=2;n>=1;n/=2){const t=r[r.length-1];a=new zd(n);for(let e=0;e<n*n;e++){s(e%n,Math.floor(e/n),2,!0,o);const r=t.getElevation(o[0],o[1]),i=t.getElevation(o[2],o[1]),l=t.getElevation(o[2],o[3]),u=t.getElevation(o[0],o[3]),c=t.isLeaf(o[0],o[1]),h=t.isLeaf(o[2],o[1]),p=t.isLeaf(o[2],o[3]),f=t.isLeaf(o[0],o[3]),d=Math.min(r.min,i.min,l.min,u.min),y=Math.max(r.max,i.max,l.max,u.max),m=c&&h&&p&&f;a.maximums.push(y),a.minimums.push(d),a.leaves.push(y-d<=5&&m?1:0);}r.push(a);}return r}(this.dem),r=e.length-1,n=e[r];this._addNode(n.minimums[0],n.maximums[0],n.leaves[0]),this._construct(e,0,0,r,0);}raycastRoot(t,e,r,n,i,s,a=1){return Td([t,e,-100],[r,n,this.maximums[0]*a],i,s)}raycast(t,e,r,n,i,s,a=1){if(!this.nodeCount)return null;const o=this.raycastRoot(t,e,r,n,i,s,a);if(null==o)return null;const l=[],u=[],c=[],h=[],p=[{idx:0,t:o,nodex:0,nodey:0,depth:0}];for(;p.length>0;){const{idx:o,t:f,nodex:d,nodey:y,depth:m}=p.pop();if(this.leaves[o]){Cd(d,y,m,t,e,r,n,c,h);const o=1<<m,l=(d+0)/o,u=(d+1)/o,p=(y+0)/o,g=(y+1)/o,x=Vd(l,p,this.dem)*a,v=Vd(u,p,this.dem)*a,b=Vd(u,g,this.dem)*a,_=Vd(l,g,this.dem)*a,w=Bd(c[0],c[1],x,h[0],c[1],v,h[0],h[1],b,i,s),A=Bd(h[0],h[1],b,c[0],h[1],_,c[0],c[1],x,i,s),S=Math.min(null!==w?w:Number.MAX_VALUE,null!==A?A:Number.MAX_VALUE);if(S!==Number.MAX_VALUE)return S;{const t=Fl([],i,s,f);if(Dd(x,v,_,b,Ed(t[0],c[0],h[0]),Ed(t[1],c[1],h[1]))>=t[2])return f}continue}let g=0;for(let p=0;p<this._siblingOffset.length;p++){Cd((d<<1)+this._siblingOffset[p][0],(y<<1)+this._siblingOffset[p][1],m+1,t,e,r,n,c,h),c[2]=-100,h[2]=this.maximums[this.childOffsets[o]+p]*a;const f=Td(c,h,i,s);if(null!=f){const t=f;l[p]=t;let e=!1;for(let r=0;r<g&&!e;r++)t>=l[u[r]]&&(u.splice(r,0,p),e=!0);e||(u[g]=p),g++;}}for(let t=0;t<g;t++){const e=u[t];p.push({idx:this.childOffsets[o]+e,t:l[e],nodex:(d<<1)+this._siblingOffset[e][0],nodey:(y<<1)+this._siblingOffset[e][1],depth:m+1});}}return null}_addNode(t,e,r){return this.minimums.push(t),this.maximums.push(e),this.leaves.push(r),this.childOffsets.push(0),this.nodeCount++}_construct(t,e,r,n,i){if(1===t[n].isLeaf(e,r))return;this.childOffsets[i]||(this.childOffsets[i]=this.nodeCount);const s=n-1,a=t[s];let o=0,l=0;for(let t=0;t<this._siblingOffset.length;t++){const n=2*e+this._siblingOffset[t][0],i=2*r+this._siblingOffset[t][1],s=a.getElevation(n,i),u=a.isLeaf(n,i),c=this._addNode(s.min,s.max,u);u&&(o|=1<<t),l||(l=c);}for(let n=0;n<this._siblingOffset.length;n++)o&1<<n||this._construct(t,2*e+this._siblingOffset[n][0],2*r+this._siblingOffset[n][1],s,l+n);}}function Dd(t,e,r,n,i,s){return xr(xr(t,r,s),xr(e,n,s),i)}function Vd(t,e,r){const n=r.dim,i=d(t*n-.5,0,n-1),s=d(e*n-.5,0,n-1),a=Math.floor(i),o=Math.floor(s),l=Math.min(a+1,n-1),u=Math.min(o+1,n-1);return Dd(r.get(a,o),r.get(l,o),r.get(a,u),r.get(l,u),i-a,s-o)}const Fd={mapbox:[6553.6,25.6,.1,1e4],terrarium:[256,1,1/256,32768]};class Ld{get tree(){return this._tree||this._buildQuadTree(),this._tree}constructor(t,e,r,n=!1,i=!1){if(this.uid=t,e.height!==e.width)throw new RangeError(\"DEM tiles must be square\");if(r&&\"mapbox\"!==r&&\"terrarium\"!==r)return E(`\"${r}\" is not a valid encoding type. Valid types include \"mapbox\" and \"terrarium\".`);this.stride=e.height;const s=this.dim=e.height-2,a=new Uint32Array(e.data.buffer);if(this.pixels=new Uint8Array(e.data.buffer),this.encoding=r||\"mapbox\",this.borderReady=n,!n){for(let t=0;t<s;t++)a[this._idx(-1,t)]=a[this._idx(0,t)],a[this._idx(s,t)]=a[this._idx(s-1,t)],a[this._idx(t,-1)]=a[this._idx(t,0)],a[this._idx(t,s)]=a[this._idx(t,s-1)];a[this._idx(-1,-1)]=a[this._idx(0,0)],a[this._idx(s,-1)]=a[this._idx(s-1,0)],a[this._idx(-1,s)]=a[this._idx(0,s-1)],a[this._idx(s,s)]=a[this._idx(s-1,s-1)],i&&this._buildQuadTree();}}_buildQuadTree(){this._tree=new Pd(this);}get(t,e,r=!1){r&&(t=d(t,-1,this.dim),e=d(e,-1,this.dim));const n=4*this._idx(t,e);return (\"terrarium\"===this.encoding?this._unpackTerrarium:this._unpackMapbox)(this.pixels[n],this.pixels[n+1],this.pixels[n+2])}static getUnpackVector(t){return Fd[t]}get unpackVector(){return Fd[this.encoding]}_idx(t,e){if(t<-1||t>=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return (e+1)*this.stride+(t+1)}_unpackMapbox(t,e,r){return (256*t*256+256*e+r)/10-1e4}_unpackTerrarium(t,e,r){return 256*t+e+r/256-32768}static pack(t,e){const r=[0,0,0,0],n=Ld.getUnpackVector(e);let i=Math.floor((t+n[3])/n[2]);return r[2]=i%256,i=Math.floor(i/256),r[1]=i%256,i=Math.floor(i/256),r[0]=i,r}getPixels(){return new pu({width:this.stride,height:this.stride},this.pixels)}backfillBorder(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");let n=e*this.dim,i=e*this.dim+this.dim,s=r*this.dim,a=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1;}switch(r){case-1:s=a-1;break;case 1:a=s+1;}const o=-e*this.dim,l=-r*this.dim;for(let e=s;e<a;e++)for(let r=n;r<i;r++){const n=4*this._idx(r,e),i=4*this._idx(r+o,e+l);this.pixels[n+0]=t.pixels[i+0],this.pixels[n+1]=t.pixels[i+1],this.pixels[n+2]=t.pixels[i+2],this.pixels[n+3]=t.pixels[i+3];}}onDeserialize(){this._tree&&(this._tree.dem=this);}}Pi(Ld,\"DEMData\"),Pi(Pd,\"DemMinMaxQuadTree\",{omit:[\"dem\"]});class Rd{constructor(t,e){this.max=t,this.onRemove=e,this.reset();}reset(){for(const t in this.data)for(const e of this.data[t])e.timeout&&clearTimeout(e.timeout),this.onRemove(e.value);return this.data={},this.order=[],this}add(t,e,r){const n=t.wrapped().key;void 0===this.data[n]&&(this.data[n]=[]);const i={value:e,timeout:void 0};if(void 0!==r&&(i.timeout=setTimeout((()=>{this.remove(t,i);}),r)),this.data[n].push(i),this.order.push(n),this.order.length>this.max){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}has(t){return t.wrapped().key in this.data}getAndRemove(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null}_getAndRemoveByKey(t){const e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value}getByKey(t){const e=this.data[t];return e?e[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,e){if(!this.has(t))return this;const r=t.wrapped().key,n=void 0===e?0:this.data[r].indexOf(e),i=this.data[r][n];return this.data[r].splice(n,1),i.timeout&&clearTimeout(i.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(i.value),this.order.splice(this.order.indexOf(r),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}filter(t){const e=[];for(const r in this.data)for(const n of this.data[r])t(n.value)||e.push(n);for(const t of e)this.remove(t.value.tileID,t);}}class Ud{constructor(t,e,r){this.func=t,this.mask=e,this.range=r;}}Ud.ReadOnly=!1,Ud.ReadWrite=!0,Ud.disabled=new Ud(519,Ud.ReadOnly,[0,1]);const jd=7680;class $d{constructor(t,e,r,n,i,s){this.test=t,this.ref=e,this.mask=r,this.fail=n,this.depthFail=i,this.pass=s;}}$d.disabled=new $d({func:519,mask:0},0,0,jd,jd,jd);class Od{constructor(t,e,r){this.blendFunction=t,this.blendColor=e,this.mask=r;}}Od.Replace=[1,0],Od.disabled=new Od(Od.Replace,xe.transparent,[!1,!1,!1,!1]),Od.unblended=new Od(Od.Replace,xe.transparent,[!0,!0,!0,!0]),Od.alphaBlended=new Od([1,771],xe.transparent,[!0,!0,!0,!0]);const qd=1029,Nd=2305;class Gd{constructor(t,e,r){this.enable=t,this.mode=e,this.frontFace=r;}}Gd.disabled=new Gd(!1,qd,Nd),Gd.backCCW=new Gd(!0,qd,Nd),Gd.backCW=new Gd(!0,qd,2304),Gd.frontCW=new Gd(!0,1028,2304),Gd.frontCCW=new Gd(!0,1028,Nd);class Zd extends Nt{constructor(t,e,r){super(),this.id=t,this._onlySymbols=r,e.on(\"data\",(t=>{\"source\"===t.dataType&&\"metadata\"===t.sourceDataType&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&\"source\"===t.dataType&&\"content\"===t.sourceDataType&&(this.reload(),this.transform&&this.update(this.transform));})),e.on(\"error\",(()=>{this._sourceErrored=!0;})),this._source=e,this._tiles={},this._cache=new Rd(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._minTileCacheSize=e.minTileCacheSize,this._maxTileCacheSize=e.maxTileCacheSize,this._loadedParentTiles={},this._coveredTiles={},this._state=new Md,this._isRaster=\"raster\"===this._source.type||\"raster-dem\"===this._source.type||\"custom\"===this._source.type&&\"raster\"===this._source._dataType;}onAdd(t){this.map=t,this._minTileCacheSize=void 0===this._minTileCacheSize&&t?t._minTileCacheSize:this._minTileCacheSize,this._maxTileCacheSize=void 0===this._maxTileCacheSize&&t?t._maxTileCacheSize:this._maxTileCacheSize;}loaded(){if(this._sourceErrored)return !0;if(!this._sourceLoaded)return !1;if(!this._source.loaded())return !1;for(const t in this._tiles){const e=this._tiles[t];if(\"loaded\"!==e.state&&\"errored\"!==e.state)return !1}return !0}getSource(){return this._source}pause(){this._paused=!0;}resume(){if(!this._paused)return;const t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform);}_loadTile(t,e){return t.isSymbolTile=this._onlySymbols,this._source.loadTile(t,e)}_unloadTile(t){if(this._source.unloadTile)return this._source.unloadTile(t,(()=>{}))}_abortTile(t){if(this._source.abortTile)return this._source.abortTile(t,(()=>{}))}serialize(){return this._source.serialize()}prepare(t){if(this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null),this._source.prepareTile)for(const e in this._tiles){const r=this._tiles[e];this._source.prepareTile(r)&&this.map.painter.terrain&&this.map.painter.terrain._clearRenderCacheForTile(this.id,r.tileID),r.upload(t),r.prepare(this.map.style.imageManager);}else for(const e in this._tiles){const r=this._tiles[e];r.upload(t),r.prepare(this.map.style.imageManager);}}getIds(){return x(this._tiles).map((t=>t.tileID)).sort(Xd).map((t=>t.key))}getRenderableIds(t){const e=[];for(const r in this._tiles)this._isIdRenderable(+r,t)&&e.push(this._tiles[r]);return t?e.sort(((t,e)=>{const r=t.tileID,n=e.tileID,s=new i(r.canonical.x,r.canonical.y)._rotate(this.transform.angle),a=new i(n.canonical.x,n.canonical.y)._rotate(this.transform.angle);return r.overscaledZ-n.overscaledZ||a.y-s.y||a.x-s.x})).map((t=>t.tileID.key)):e.map((t=>t.tileID)).sort(Xd).map((t=>t.key))}hasRenderableParent(t){const e=this.findLoadedParent(t,0);return !!e&&this._isIdRenderable(e.tileID.key)}_isIdRenderable(t,e){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(e||!this._tiles[t].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else {this._cache.reset();for(const t in this._tiles)\"errored\"!==this._tiles[t].state&&this._reloadTile(+t,\"reloading\");}}_reloadTile(t,e){const r=this._tiles[t];r&&(\"loading\"!==r.state&&(r.state=e),this._loadTile(r,this._tileLoaded.bind(this,r,t,e)));}_tileLoaded(t,e,r,n){if(n)if(t.state=\"errored\",404!==n.status)this._source.fire(new qt(n,{tile:t}));else if(\"raster-dem\"===this._source.type&&this.usedForTerrain&&this.map.painter.terrain){const t=this.map.painter.terrain;this.update(this.transform,t.getScaledDemTileSize(),!0),t.resetTileLookupCache(this.id);}else this.update(this.transform);else t.timeAdded=X.now(),\"expired\"===r&&(t.refreshedUponExpiration=!0),this._setTileReloadTimer(e,t),\"raster-dem\"===this._source.type&&t.dem&&this._backfillDEM(t),this._state.initializeTileState(t,this.map?this.map.painter:null),this._source.fire(new Ot(\"data\",{dataType:\"source\",tile:t,coord:t.tileID,sourceCacheId:this.id}));}_backfillDEM(t){const e=this.getRenderableIds();for(let n=0;n<e.length;n++){const i=e[n];if(t.neighboringTiles&&t.neighboringTiles[i]){const e=this.getTileByID(i);r(t,e),r(e,t);}}function r(t,e){if(!t.dem||t.dem.borderReady)return;t.needsHillshadePrepare=!0,t.needsDEMTextureUpload=!0;let r=e.tileID.canonical.x-t.tileID.canonical.x;const n=e.tileID.canonical.y-t.tileID.canonical.y,i=Math.pow(2,t.tileID.canonical.z),s=e.tileID.key;0===r&&0===n||Math.abs(n)>1||(Math.abs(r)>1&&(1===Math.abs(r+i)?r+=i:1===Math.abs(r-i)&&(r-=i)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,n),t.neighboringTiles&&t.neighboringTiles[s]&&(t.neighboringTiles[s].backfilled=!0)));}}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._tiles[t]}_retainLoadedChildren(t,e,r,n){for(const i in this._tiles){let s=this._tiles[i];if(n[i]||!s.hasData()||s.tileID.overscaledZ<=e||s.tileID.overscaledZ>r)continue;let a=s.tileID;for(;s&&s.tileID.overscaledZ>e+1;){const t=s.tileID.scaledTo(s.tileID.overscaledZ-1);s=this._tiles[t.key],s&&s.hasData()&&(a=t);}let o=a;for(;o.overscaledZ>e;)if(o=o.scaledTo(o.overscaledZ-1),t[o.key]){n[a.key]=a;break}}}findLoadedParent(t,e){if(t.key in this._loadedParentTiles){const r=this._loadedParentTiles[t.key];return r&&r.tileID.overscaledZ>=e?r:null}for(let r=t.overscaledZ-1;r>=e;r--){const e=t.scaledTo(r),n=this._getLoadedTile(e);if(n)return n}}_getLoadedTile(t){const e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(this._source.reparseOverscaled?t.wrapped().key:t.canonical.key)}updateCacheSize(t,e){e=e||this._source.tileSize;const r=Math.ceil(t.width/e)+1,n=Math.ceil(t.height/e)+1,i=Math.floor(r*n*5),s=\"number\"==typeof this._minTileCacheSize?Math.max(this._minTileCacheSize,i):i,a=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,s):s;this._cache.setMaxSize(a);}handleWrapJump(t){const e=Math.round((t-(void 0===this._prevLng?t:this._prevLng))/360);if(this._prevLng=t,e){const t={};for(const r in this._tiles){const n=this._tiles[r];n.tileID=n.tileID.unwrapTo(n.tileID.wrap+e),t[n.tileID.key]=n;}this._tiles=t;for(const t in this._timers)clearTimeout(this._timers[t]),delete this._timers[t];for(const t in this._tiles)this._setTileReloadTimer(+t,this._tiles[t]);}}update(t,e,r){if(this.transform=t,!this._sourceLoaded||this._paused||this.transform.freezeTileCoverage)return;if(this.usedForTerrain&&!r)return;let n;this.updateCacheSize(t,e),\"globe\"!==this.transform.projection.name&&this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?n=t.getVisibleUnwrappedCoordinates(this._source.tileID).map((t=>new Fc(t.canonical.z,t.wrap,t.canonical.z,t.canonical.x,t.canonical.y))):(n=t.coveringTiles({tileSize:e||this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!r,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain}),this._source.hasTile&&(n=n.filter((t=>this._source.hasTile(t))))):n=[];const i=this._updateRetainedTiles(n);if(Kd(this._source.type)&&0!==n.length){const t={},e={},r=Object.keys(i);for(const n of r){const r=i[n],s=this._tiles[n];if(!s||s.fadeEndTime&&s.fadeEndTime<=X.now())continue;const a=this.findLoadedParent(r,Math.max(r.overscaledZ-Zd.maxOverzooming,this._source.minzoom));a&&(this._addTile(a.tileID),t[a.tileID.key]=a.tileID),e[n]=r;}const s=n[n.length-1].overscaledZ;for(const t in this._tiles){const r=this._tiles[t];if(i[t]||!r.hasData())continue;let n=r.tileID;for(;n.overscaledZ>s;){n=n.scaledTo(n.overscaledZ-1);const s=this._tiles[n.key];if(s&&s.hasData()&&e[n.key]){i[t]=r.tileID;break}}}for(const e in t)i[e]||(this._coveredTiles[e]=!0,i[e]=t[e]);}for(const t in i)this._tiles[t].clearFadeHold();const s=function(t,e){const r=[];for(const n in t)n in e||r.push(n);return r}(this._tiles,i);for(const t of s){const e=this._tiles[t];e.hasSymbolBuckets&&!e.holdingForFade()?e.setHoldDuration(this.map._fadeDuration):e.hasSymbolBuckets&&!e.symbolFadeFinished()||this._removeTile(+t);}this._updateLoadedParentTileCache(),this._onlySymbols&&this._source.afterUpdate&&this._source.afterUpdate();}releaseSymbolFadeTiles(){for(const t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(+t);}_updateRetainedTiles(t){const e={};if(0===t.length)return e;const r={},n=t.reduce(((t,e)=>Math.min(t,e.overscaledZ)),1/0),i=t[0].overscaledZ,s=Math.max(i-Zd.maxOverzooming,this._source.minzoom),a=Math.max(i+Zd.maxUnderzooming,this._source.minzoom),o={};for(const r of t){const t=this._addTile(r);e[r.key]=r,t.hasData()||n<this._source.maxzoom&&(o[r.key]=r);}this._retainLoadedChildren(o,n,a,e);for(const n of t){let t=this._tiles[n.key];if(t.hasData())continue;if(n.canonical.z>=this._source.maxzoom){const t=n.children(this._source.maxzoom)[0],r=this.getTile(t);if(r&&r.hasData()){e[t.key]=t;continue}}else {const t=n.children(this._source.maxzoom);if(e[t[0].key]&&e[t[1].key]&&e[t[2].key]&&e[t[3].key])continue}let i=t.wasRequested();for(let a=n.overscaledZ-1;a>=s;--a){const s=n.scaledTo(a);if(r[s.key])break;if(r[s.key]=!0,t=this.getTile(s),!t&&i&&(t=this._addTile(s)),t&&(e[s.key]=s,i=t.wasRequested(),t.hasData()))break}}return e}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const t in this._tiles){const e=[];let r,n=this._tiles[t].tileID;for(;n.overscaledZ>0;){if(n.key in this._loadedParentTiles){r=this._loadedParentTiles[n.key];break}e.push(n.key);const t=n.scaledTo(n.overscaledZ-1);if(r=this._getLoadedTile(t),r)break;n=t;}for(const t of e)this._loadedParentTiles[t]=r;}}_addTile(t){let e=this._tiles[t.key];if(e)return this._source.prepareTile&&this._source.prepareTile(e),e;e=this._cache.getAndRemove(t),e&&(this._setTileReloadTimer(t.key,e),e.tileID=t,this._state.initializeTileState(e,this.map?this.map.painter:null),this._cacheTimers[t.key]&&(clearTimeout(this._cacheTimers[t.key]),delete this._cacheTimers[t.key],this._setTileReloadTimer(t.key,e)));const r=Boolean(e);if(!r){const r=this.map?this.map.painter:null;e=new Id(t,this._source.tileSize*t.overscaleFactor(),this.transform.tileZoom,r,this._isRaster),this._source.prepareTile&&this._source.prepareTile(e)||this._loadTile(e,this._tileLoaded.bind(this,e,t.key,e.state));}return e?(e.uses++,this._tiles[t.key]=e,r||this._source.fire(new Ot(\"dataloading\",{tile:e,coord:e.tileID,dataType:\"source\"})),e):null}_setTileReloadTimer(t,e){t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);const r=e.getExpiryTimeout();r&&(this._timers[t]=setTimeout((()=>{this._reloadTile(t,\"expired\"),delete this._timers[t];}),r));}_removeTile(t){const e=this._tiles[t];e&&(e.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),e.uses>0||(e.hasData()&&\"reloading\"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))));}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const t in this._tiles)this._removeTile(+t);this._source._clear&&this._source._clear(),this._cache.reset(),this.map&&this.usedForTerrain&&this.map.painter.terrain&&this.map.painter.terrain.resetTileLookupCache(this.id);}tilesIn(t,e,r){const n=[],i=this.transform;if(!i)return n;const s=\"globe\"===i.projection.name,a=zo(i.center.lng);for(const o in this._tiles){const l=this._tiles[o];if(r&&l.clearQueryDebugViz(),l.holdingForFade())continue;let u;if(s){const t=l.tileID.canonical;if(0===t.z){const e=[Math.abs(d(a,...Hd(t,-1))-a),Math.abs(d(a,...Hd(t,1))-a)];u=[0,2*e.indexOf(Math.min(...e))-1];}else {const e=[Math.abs(d(a,...Hd(t,-1))-a),Math.abs(d(a,...Hd(t,0))-a),Math.abs(d(a,...Hd(t,1))-a)];u=[e.indexOf(Math.min(...e))-1];}}else u=[0];for(const r of u){const s=t.containsTile(l,i,e,r);s&&n.push(s);}}return n}getVisibleCoordinates(t){const e=this.getRenderableIds(t).map((t=>this._tiles[t].tileID));for(const t of e)t.projMatrix=this.transform.calculateProjMatrix(t.toUnwrapped());return e}hasTransition(){if(this._source.hasTransition())return !0;if(Kd(this._source.type))for(const t in this._tiles){const e=this._tiles[t];if(void 0!==e.fadeEndTime&&e.fadeEndTime>=X.now())return !0}return !1}setFeatureState(t,e,r){this._state.updateState(t=t||\"_geojsonTileLayer\",e,r);}removeFeatureState(t,e,r){this._state.removeFeatureState(t=t||\"_geojsonTileLayer\",e,r);}getFeatureState(t,e){return this._state.getState(t=t||\"_geojsonTileLayer\",e)}setDependencies(t,e,r){const n=this._tiles[t];n&&n.setDependencies(e,r);}reloadTilesForDependencies(t,e){for(const r in this._tiles)this._tiles[r].hasDependency(t,e)&&this._reloadTile(+r,\"reloading\");this._cache.filter((r=>!r.hasDependency(t,e)));}_preloadTiles(t,e){const r=new Map,n=Array.isArray(t)?t:[t],i=this.map.painter.terrain,s=this.usedForTerrain&&i?i.getScaledDemTileSize():this._source.tileSize;for(const t of n){const e=t.coveringTiles({tileSize:s,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!this.usedForTerrain,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain});for(const t of e)r.set(t.key,t);this.usedForTerrain&&t.updateElevation(!1);}g(Array.from(r.values()),((t,e)=>{const r=new Id(t,this._source.tileSize*t.overscaleFactor(),this.transform.tileZoom,this.map.painter,this._isRaster);this._loadTile(r,(t=>{\"raster-dem\"===this._source.type&&r.dem&&this._backfillDEM(r),e(t,r);}));}),e);}}function Xd(t,e){const r=Math.abs(2*t.wrap)-+(t.wrap<0),n=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||n-r||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function Kd(t){return \"raster\"===t||\"image\"===t||\"video\"===t}function Hd(t,e){const r=1<<t.z;return [t.x/r+e,(t.x+1)/r+e]}Zd.maxOverzooming=10,Zd.maxUnderzooming=3;class Yd{constructor(t,e,r){this._demTile=t,this._dem=this._demTile.dem,this._scale=e,this._offset=r;}static create(t,e,r){const n=r||t.findDEMTileFor(e);if(!n||!n.dem)return;const i=n.dem,s=n.tileID,a=1<<e.canonical.z-s.canonical.z;return new Yd(n,n.tileSize/wo/a,[(e.canonical.x/a-s.canonical.x)*i.dim,(e.canonical.y/a-s.canonical.y)*i.dim])}tileCoordToPixel(t,e){const r=e*this._scale+this._offset[1],n=Math.floor(t*this._scale+this._offset[0]),s=Math.floor(r);return new i(n,s)}getElevationAt(t,e,r,n){const i=t*this._scale+this._offset[0],s=e*this._scale+this._offset[1],a=Math.floor(i),o=Math.floor(s),l=this._dem;return n=!!n,r?xr(xr(l.get(a,o,n),l.get(a,o+1,n),s-o),xr(l.get(a+1,o,n),l.get(a+1,o+1,n),s-o),i-a):l.get(a,o,n)}getElevationAtPixel(t,e,r){return this._dem.get(t,e,!!r)}getMeterToDEM(t){return (1<<this._demTile.tileID.canonical.z)*Bo(1,t)*this._dem.stride}}class Wd{constructor(t,e){this.tileID=t,this.x=t.canonical.x,this.y=t.canonical.y,this.z=t.canonical.z,this.grid=new Bi(wo,16,0),this.featureIndexArray=new Va,this.promoteId=e;}insert(t,e,r,n,i,s=0){const a=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(r,n,i,s);const o=this.grid;for(let t=0;t<e.length;t++){const r=e[t],n=[1/0,1/0,-1/0,-1/0];for(let t=0;t<r.length;t++){const e=r[t];n[0]=Math.min(n[0],e.x),n[1]=Math.min(n[1],e.y),n[2]=Math.max(n[2],e.x),n[3]=Math.max(n[3],e.y);}n[0]<wo&&n[1]<wo&&n[2]>=0&&n[3]>=0&&o.insert(a,n[0],n[1],n[2],n[3]);}}loadVTLayers(){if(!this.vtLayers){this.vtLayers=new yc.VectorTile(new xh(this.rawTileData)).layers,this.sourceLayerCoder=new dd(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"]),this.vtFeatures={};for(const t in this.vtLayers)this.vtFeatures[t]=[];}return this.vtLayers}query(t,e,r,n){this.loadVTLayers();const i=t.params||{},s=Jn(i.filter),a=t.tileResult,o=t.transform,l=a.bufferedTilespaceBounds,u=this.grid.query(l.min.x,l.min.y,l.max.x,l.max.y,((t,e,r,n)=>sl(a.bufferedTilespaceGeometry,t,e,r,n)));u.sort(Qd);let c=null;o.elevation&&u.length>0&&(c=Yd.create(o.elevation,this.tileID));const h={};let p;for(let o=0;o<u.length;o++){const l=u[o];if(l===p)continue;p=l;const f=this.featureIndexArray.get(l);let d=null;this.loadMatchingFeature(h,f,s,i.layers,i.availableImages,e,r,n,((e,r,n,i=0)=>(d||(d=No(e,this.tileID.canonical,t.tileTransform)),r.queryIntersectsFeature(a,e,n,d,this.z,t.transform,t.pixelPosMatrix,c,i))));}return h}loadMatchingFeature(t,e,r,n,i,s,a,o,l){const{featureIndex:u,bucketIndex:c,sourceLayerIndex:h,layoutVertexArrayOffset:p}=e,f=this.bucketLayerIDs[c];if(n&&!function(t,e){for(let r=0;r<t.length;r++)if(e.indexOf(t[r])>=0)return !0;return !1}(n,f))return;const d=this.sourceLayerCoder.decode(h),y=this.vtLayers[d].feature(u);if(r.needGeometry){const t=Go(y,!0);if(!r.filter(new Cs(this.tileID.overscaledZ),t,this.tileID.canonical))return}else if(!r.filter(new Cs(this.tileID.overscaledZ),y))return;const m=this.getId(y,d);for(let e=0;e<f.length;e++){const r=f[e];if(n&&n.indexOf(r)<0)continue;const c=s[r];if(!c)continue;let h={};void 0!==m&&o&&(h=o.getState(c.sourceLayer||\"_geojsonTileLayer\",m));const d=v({},a[r]);d.paint=Jd(d.paint,c.paint,y,h,i),d.layout=Jd(d.layout,c.layout,y,h,i);const g=!l||l(y,c,h,p);if(!g)continue;const x=new md(y,this.z,this.x,this.y,m);x.layer=d;let b=t[r];void 0===b&&(b=t[r]=[]),b.push({featureIndex:u,feature:x,intersectionZ:g});}}lookupSymbolFeatures(t,e,r,n,i,s,a,o){const l={};this.loadVTLayers();const u=Jn(i);for(const i of t)this.loadMatchingFeature(l,{bucketIndex:r,sourceLayerIndex:n,featureIndex:i,layoutVertexArrayOffset:0},u,s,a,o,e);return l}loadFeature(t){const{featureIndex:e,sourceLayerIndex:r}=t;this.loadVTLayers();const n=this.sourceLayerCoder.decode(r),i=this.vtFeatures[n];if(i[e])return i[e];const s=this.vtLayers[n].feature(e);return i[e]=s,s}hasLayer(t){for(const e of this.bucketLayerIDs)for(const r of e)if(t===r)return !0;return !1}getId(t,e){let r=t.id;return this.promoteId&&(r=t.properties[\"string\"==typeof this.promoteId?this.promoteId:this.promoteId[e]],\"boolean\"==typeof r&&(r=Number(r))),r}}function Jd(t,e,r,n,i){return M(t,((t,s)=>{const a=e instanceof js?e.get(s):null;return a&&a.evaluate?a.evaluate(r,n,i):a}))}function Qd(t,e){return e-t}Pi(Wd,\"FeatureIndex\",{omit:[\"rawTileData\",\"sourceLayerCoder\"]});class ty{constructor(t){const e={},r=[];for(const n in t){const i=t[n],s=e[n]={};for(const t in i.glyphs){const e=i.glyphs[+t];if(!e||0===e.bitmap.width||0===e.bitmap.height)continue;const n=e.metrics.localGlyph?2:1,a={x:0,y:0,w:e.bitmap.width+2*n,h:e.bitmap.height+2*n};r.push(a),s[t]=a;}}const{w:n,h:i}=$h(r),s=new hu({width:n||1,height:i||1});for(const r in t){const n=t[r];for(const t in n.glyphs){const i=n.glyphs[+t];if(!i||0===i.bitmap.width||0===i.bitmap.height)continue;const a=e[r][t],o=i.metrics.localGlyph?2:1;hu.copy(i.bitmap,s,{x:0,y:0},{x:a.x+o,y:a.y+o},i.bitmap);}}this.image=s,this.positions=e;}}Pi(ty,\"GlyphAtlas\");class ey{constructor(t){this.tileID=new Fc(t.tileID.overscaledZ,t.tileID.wrap,t.tileID.canonical.z,t.tileID.canonical.x,t.tileID.canonical.y),this.tileZoom=t.tileZoom,this.uid=t.uid,this.zoom=t.zoom,this.canonical=t.tileID.canonical,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=t.showCollisionBoxes,this.collectResourceTiming=!!t.collectResourceTiming,this.returnDependencies=!!t.returnDependencies,this.promoteId=t.promoteId,this.enableTerrain=!!t.enableTerrain,this.isSymbolTile=t.isSymbolTile,this.tileTransform=Af(t.tileID.canonical,t.projection),this.projection=t.projection;}parse(t,e,r,n,i){this.status=\"parsing\",this.data=t,this.collisionBoxArray=new Ma;const s=new dd(Object.keys(t.layers).sort()),a=new Wd(this.tileID,this.promoteId);a.bucketLayerIDs=[];const o={},l=new hd(256,256),u={featureIndex:a,iconDependencies:{},patternDependencies:{},glyphDependencies:{},lineAtlas:l,availableImages:r},c=e.familiesBySource[this.source];for(const e in c){const n=t.layers[e];if(!n)continue;let i=!1,l=!1;for(const t of c[e])\"symbol\"===t[0].type?i=!0:l=!0;if(!0===this.isSymbolTile&&!i)continue;if(!1===this.isSymbolTile&&!l)continue;1===n.version&&E(`Vector tile source \"${this.source}\" layer \"${e}\" does not use vector tile spec v2 and therefore may have some rendering errors.`);const h=s.encode(e),p=[];for(let t=0;t<n.length;t++){const r=n.feature(t),i=a.getId(r,e);p.push({feature:r,id:i,index:t,sourceLayerIndex:h});}for(const t of c[e]){const e=t[0];void 0!==this.isSymbolTile&&\"symbol\"===e.type!==this.isSymbolTile||e.minzoom&&this.zoom<Math.floor(e.minzoom)||e.maxzoom&&this.zoom>=e.maxzoom||\"none\"!==e.visibility&&(ry(t,this.zoom,r),(o[e.id]=e.createBucket({index:a.bucketLayerIDs.length,layers:t,zoom:this.zoom,canonical:this.canonical,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:h,sourceID:this.source,enableTerrain:this.enableTerrain,projection:this.projection.spec,availableImages:r})).populate(p,u,this.tileID.canonical,this.tileTransform),a.bucketLayerIDs.push(t.map((t=>t.id))));}}let h,p,f,d;l.trim();const y={type:\"maybePrepare\",isSymbolTile:this.isSymbolTile,zoom:this.zoom},m=M(u.glyphDependencies,(t=>Object.keys(t).map(Number)));Object.keys(m).length?n.send(\"getGlyphs\",{uid:this.uid,stacks:m},((t,e)=>{h||(h=t,p=e,b.call(this));}),void 0,!1,y):p={};const g=Object.keys(u.iconDependencies);g.length?n.send(\"getImages\",{icons:g,source:this.source,tileID:this.tileID,type:\"icons\"},((t,e)=>{h||(h=t,f=e,b.call(this));}),void 0,!1,y):f={};const v=Object.keys(u.patternDependencies);function b(){if(h)return i(h);if(p&&f&&d){const t=new ty(p),e=new qh(f,d);for(const n in o){const i=o[n];i instanceof Qf?(ry(i.layers,this.zoom,r),Dp(i,p,t.positions,f,e.iconPositions,this.showCollisionBoxes,r,this.tileID.canonical,this.tileZoom,this.projection)):i.hasPattern&&(i instanceof Kc||i instanceof tc||i instanceof wc)&&(ry(i.layers,this.zoom,r),i.addFeatures(u,this.tileID.canonical,e.patternPositions,r,this.tileTransform));}this.status=\"done\",i(null,{buckets:x(o).filter((t=>!t.isEmpty())),featureIndex:a,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:t.image,lineAtlas:l,imageAtlas:e,glyphMap:this.returnDependencies?p:null,iconMap:this.returnDependencies?f:null,glyphPositions:this.returnDependencies?t.positions:null});}}v.length?n.send(\"getImages\",{icons:v,source:this.source,tileID:this.tileID,type:\"patterns\"},((t,e)=>{h||(h=t,d=e,b.call(this));}),void 0,!1,y):d={},b.call(this);}}function ry(t,e,r){const n=new Cs(e);for(const e of t)e.recalculate(n,r);}class ny{constructor(t){this.entries={},this.scheduler=t;}request(t,e,r,n){const i=this.entries[t]=this.entries[t]||{callbacks:[]};if(i.result){const[t,r]=i.result;return this.scheduler?this.scheduler.add((()=>{n(t,r);}),e):n(t,r),()=>{}}return i.callbacks.push(n),i.cancel||(i.cancel=r(((r,n)=>{i.result=[r,n];for(const t of i.callbacks)this.scheduler?this.scheduler.add((()=>{t(r,n);}),e):t(r,n);setTimeout((()=>delete this.entries[t]),3e3);}))),()=>{i.result||(i.callbacks=i.callbacks.filter((t=>t!==n)),i.callbacks.length||(i.cancel(),delete this.entries[t]));}}}function iy(t,e,r){const n=JSON.stringify(t.request);return t.data&&(this.deduped.entries[n]={result:[null,t.data]}),this.deduped.request(n,{type:\"parseTile\",isSymbolTile:t.isSymbolTile,zoom:t.tileZoom},(e=>{const n=Ct(t.request,((t,n,i,s)=>{t?e(t):n&&e(null,{vectorTile:r?void 0:new yc.VectorTile(new xh(n)),rawData:n,cacheControl:i,expires:s});}));return ()=>{n.cancel(),e();}}),e)}t.ARRAY_TYPE=dl,t.AUTH_ERR_MSG=nt,t.Aabb=eu,t.Actor=class{constructor(t,r,n){this.target=t,this.parent=r,this.mapId=n,this.callbacks={},this.cancelCallbacks={},k([\"receive\"],this),this.target.addEventListener(\"message\",this.receive,!1),this.globalScope=D()?t:e,this.scheduler=new fd;}send(t,e,r,n,i=!1,s){const a=Math.round(1e18*Math.random()).toString(36).substring(0,10);r&&(r.metadata=s,this.callbacks[a]=r);const o=L(this.globalScope)?void 0:[];return this.target.postMessage({id:a,type:t,hasCallback:!!r,targetMapId:n,mustQueue:i,sourceMapId:this.mapId,data:Fi(e,o)},o),{cancel:()=>{r&&delete this.callbacks[a],this.target.postMessage({id:a,type:\"<cancel>\",targetMapId:n,sourceMapId:this.mapId});}}}receive(t){const e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(\"<cancel>\"===e.type){const t=this.cancelCallbacks[r];delete this.cancelCallbacks[r],t&&t.cancel();}else if(e.mustQueue||D()){const t=this.callbacks[r];this.cancelCallbacks[r]=this.scheduler.add((()=>this.processTask(r,e)),t&&t.metadata||{type:\"message\"});}else this.processTask(r,e);}processTask(t,e){if(\"<response>\"===e.type){const r=this.callbacks[t];delete this.callbacks[t],r&&(e.error?r(Li(e.error)):r(null,Li(e.data)));}else {const r=L(this.globalScope)?void 0:[],n=e.hasCallback?(e,n)=>{delete this.cancelCallbacks[t],this.target.postMessage({id:t,type:\"<response>\",sourceMapId:this.mapId,error:e?Fi(e):null,data:Fi(n,r)},r);}:t=>{},i=Li(e.data);if(this.parent[e.type])this.parent[e.type](e.sourceMapId,i,n);else if(this.parent.getWorkerSource){const t=e.type.split(\".\");this.parent.getWorkerSource(e.sourceMapId,t[0],i.source)[t[1]](i,n);}else n(new Error(`Could not find function ${e.type}`));}}remove(){this.scheduler.remove(),this.target.removeEventListener(\"message\",this.receive,!1);}},t.CanonicalTileID=Dc,t.Color=xe,t.ColorMode=Od,t.CullFaceMode=Gd,t.DEMData=Ld,t.DataConstantProperty=$s,t.DedupedRequest=ny,t.DepthMode=Ud,t.EXTENT=wo,t.Elevation=class{isDataAvailableAtPoint(t){const e=this._source();if(!e||t.y<0||t.y>1)return !1;const r=e.getSource().maxzoom,n=1<<r,i=Math.floor(t.x),s=Math.floor((t.x-i)*n),a=Math.floor(t.y*n),o=this.findDEMTileFor(new Fc(r,i,r,s,a));return !(!o||!o.dem)}getAtPointOrZero(t,e=0){return this.getAtPoint(t,e)||0}getAtPoint(t,e,r=!0){null==e&&(e=null);const n=this._source();if(!n)return e;if(t.y<0||t.y>1)return e;const i=n.getSource().maxzoom,s=1<<i,a=Math.floor(t.x),o=t.x-a,l=new Fc(i,a,i,Math.floor(o*s),Math.floor(t.y*s)),u=this.findDEMTileFor(l);if(!u||!u.dem)return e;const c=u.dem,h=1<<u.tileID.canonical.z,p=(o*h-u.tileID.canonical.x)*c.dim,f=(t.y*h-u.tileID.canonical.y)*c.dim,d=Math.floor(p),y=Math.floor(f);return (r?this.exaggeration():1)*xr(xr(c.get(d,y),c.get(d,y+1),f-y),xr(c.get(d+1,y),c.get(d+1,y+1),f-y),p-d)}getAtTileOffset(t,e,r){const n=1<<t.canonical.z;return this.getAtPointOrZero(new Fo(t.wrap+(t.canonical.x+e/wo)/n,(t.canonical.y+r/wo)/n))}getAtTileOffsetFunc(t,e,r,n){return i=>{const s=this.getAtTileOffset(t,i.x,i.y),a=n.upVector(t.canonical,i.x,i.y);return Vl(a,a,s*n.upVectorScale(t.canonical,e,r).metersToTile),a}}getForTilePoints(t,e,r,n){const i=Yd.create(this,t,n);return !!i&&(e.forEach((t=>{t[2]=this.exaggeration()*i.getElevationAt(t[0],t[1],r);})),!0)}getMinMaxForTile(t){const e=this.findDEMTileFor(t);if(!e||!e.dem)return null;const r=e.dem.tree,n=e.tileID,i=1<<t.canonical.z-n.canonical.z;let s=t.canonical.x/i-n.canonical.x,a=t.canonical.y/i-n.canonical.y,o=0;for(let e=0;e<t.canonical.z-n.canonical.z&&!r.leaves[o];e++){s*=2,a*=2;const t=2*Math.floor(a)+Math.floor(s);o=r.childOffsets[o]+t,s%=1,a%=1;}return {min:this.exaggeration()*r.minimums[o],max:this.exaggeration()*r.maximums[o]}}getMinElevationBelowMSL(){throw new Error(\"Pure virtual method called.\")}raycast(t,e,r){throw new Error(\"Pure virtual method called.\")}pointCoordinate(t){throw new Error(\"Pure virtual method called.\")}_source(){throw new Error(\"Pure virtual method called.\")}exaggeration(){throw new Error(\"Pure virtual method called.\")}findDEMTileFor(t){throw new Error(\"Pure virtual method called.\")}get visibleDemTiles(){throw new Error(\"Getter must be implemented in subclass.\")}},t.ErrorEvent=qt,t.EvaluationParameters=Cs,t.Event=Ot,t.Evented=Nt,t.FillExtrusionBucket=wc,t.Frustum=tu,t.FrustumCorners=Ql,t.GLOBE_METERS_TO_ECEF=Kp,t.GLOBE_RADIUS=Xp,t.GLOBE_SCALE_MATCH_LATITUDE=45,t.GLOBE_ZOOM_THRESHOLD_MAX=6,t.GLOBE_ZOOM_THRESHOLD_MIN=5,t.GlobeSharedBuffers=class{constructor(t){this._createGrid(t),this._createPoles(t);}destroy(){this._poleIndexBuffer.destroy(),this._gridBuffer.destroy(),this._gridIndexBuffer.destroy(),this._poleNorthVertexBuffer.destroy(),this._poleSouthVertexBuffer.destroy();for(const t of this._poleSegments)t.destroy();for(const t of this._gridSegments)t.destroy();if(this._wireframeIndexBuffer){this._wireframeIndexBuffer.destroy();for(const t of this._wireframeSegments)t.destroy();}}_createGrid(t){const e=new Qs,r=new ya,n=65;for(let t=0;t<n;t++)for(let r=0;r<n;r++)e.emplaceBack(r,t);this._gridSegments=[];for(let t=0,e=0;t<Hp.length;t++){const i=Hp[t];for(let t=0;t<i;t++)for(let e=0;e<64;e++){const i=t*n+e;r.emplaceBack(i+1,i,i+n),r.emplaceBack(i+n,i+n+1,i+1);}const s=64*i*2;this._gridSegments.push(_o.simpleSegment(0,e,(i+1)*n,s)),e+=s;}this._gridBuffer=t.createVertexBuffer(e,Zp.members),this._gridIndexBuffer=t.createIndexBuffer(r,!0);}_createPoles(t){const e=new ya;for(let t=0;t<=64;t++)e.emplaceBack(0,t+1,t+2);this._poleIndexBuffer=t.createIndexBuffer(e,!0);const r=new va,n=new va;this._poleSegments=[];for(let t=0,e=0;t<5;t++){const i=360/(1<<t);r.emplaceBack(0,-Xp,0,.5,0),n.emplaceBack(0,-Xp,0,.5,1);for(let t=0;t<=64;t++){const e=t/64,s=xr(0,i,e),[a,o,l]=uf(bf,_f,s,Xp);r.emplaceBack(a,o,l,e,0),n.emplaceBack(a,o,l,e,1);}this._poleSegments.push(_o.simpleSegment(e,0,66,64)),e+=66;}this._poleNorthVertexBuffer=t.createVertexBuffer(r,Np,!1),this._poleSouthVertexBuffer=t.createVertexBuffer(n,Np,!1);}getGridBuffers(t){return [this._gridBuffer,this._gridIndexBuffer,this._gridSegments[t]]}getPoleBuffers(t){return [this._poleNorthVertexBuffer,this._poleSouthVertexBuffer,this._poleIndexBuffer,this._poleSegments[t]]}getWirefameBuffers(t,e){if(!this._wireframeSegments){const e=new _a,r=64,n=r+1;this._wireframeSegments=[];for(let t=0,i=0;t<Hp.length;t++){const s=Hp[t];for(let t=0;t<s;t++)for(let i=0;i<r;i++){const r=t*n+i;e.emplaceBack(r,r+1),e.emplaceBack(r,r+n),e.emplaceBack(r,r+n+1);}const a=s*r*3;this._wireframeSegments.push(_o.simpleSegment(0,i,(s+1)*n,a)),i+=a;}this._wireframeIndexBuffer=t.createIndexBuffer(e);}return [this._gridBuffer,this._wireframeIndexBuffer,this._wireframeSegments[e]]}},t.GlyphManager=vp,t.ImagePosition=Oh,t.LineAtlas=hd,t.LngLat=ko,t.LngLatBounds=Ao,t.LocalGlyphMode=xp,t.MAX_MERCATOR_LATITUDE=Do,t.MercatorCoordinate=Fo,t.ONE_EM=ah,t.OverscaledTileID=Fc,t.Properties=Zs,t.RGBAImage=pu,t.Ray=Jl,t.RequestManager=class{constructor(t,e,r){this._transformRequestFn=t,this._customAccessToken=e,this._silenceAuthErrors=!!r,this._createSkuToken();}_createSkuToken(){const t=function(){let t=\"\";for(let e=0;e<10;e++)t+=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Math.floor(62*Math.random())];return {token:[\"1\",rt,t].join(\"\"),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt;}_isSkuTokenExpired(){return Date.now()>this._skuTokenExpiresAt}transformRequest(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}}normalizeStyleURL(t,e){if(!it(t))return t;const r=ot(t);return r.path=`/styles/v1${r.path}`,this._makeAPIURL(r,this._customAccessToken||e)}normalizeGlyphsURL(t,e){if(!it(t))return t;const r=ot(t);return r.path=`/fonts/v1${r.path}`,this._makeAPIURL(r,this._customAccessToken||e)}normalizeSourceURL(t,e,r,n){if(!it(t))return t;const i=ot(t);return i.path=`/v4/${i.authority}.json`,i.params.push(\"secure\"),r&&i.params.push(`language=${r}`),n&&i.params.push(`worldview=${n}`),this._makeAPIURL(i,this._customAccessToken||e)}normalizeSpriteURL(t,e,r,n){const i=ot(t);return it(t)?(i.path=`/styles/v1${i.path}/sprite${e}${r}`,this._makeAPIURL(i,this._customAccessToken||n)):(i.path+=`${e}${r}`,lt(i))}normalizeTileURL(t,e,r){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!it(t))return t;const n=ot(t);n.path=n.path.replace(/(\\.(png|jpg)\\d*)(?=$)/,`${e||r&&\"raster\"!==n.authority&&512===r?\"@2x\":\"\"}${Y.supported?\".webp\":\"$1\"}`),\"raster\"===n.authority?n.path=`/${H.RASTER_URL_PREFIX}${n.path}`:(n.path=n.path.replace(/^.+\\/v4\\//,\"/\"),n.path=`/${H.TILE_URL_VERSION}${n.path}`);const i=this._customAccessToken||function(t){for(const e of t){const t=e.match(/^access_token=(.*)$/);if(t)return t[1]}return null}(n.params)||H.ACCESS_TOKEN;return H.REQUIRE_ACCESS_TOKEN&&i&&this._skuToken&&n.params.push(`sku=${this._skuToken}`),this._makeAPIURL(n,i)}canonicalizeTileURL(t,e){const r=ot(t);if(!r.path.match(/^(\\/v4\\/|\\/raster\\/v1\\/)/)||!r.path.match(/\\.[\\w]+$/))return t;let n=\"mapbox://\";r.path.match(/^\\/raster\\/v1\\//)?n+=`raster/${r.path.replace(`/${H.RASTER_URL_PREFIX}/`,\"\")}`:n+=`tiles/${r.path.replace(`/${H.TILE_URL_VERSION}/`,\"\")}`;let i=r.params;return e&&(i=i.filter((t=>!t.match(/^access_token=/)))),i.length&&(n+=`?${i.join(\"&\")}`),n}canonicalizeTileset(t,e){const r=!!e&&it(e),n=[];for(const e of t.tiles||[])st(e)?n.push(this.canonicalizeTileURL(e,r)):n.push(e);return n}_makeAPIURL(t,e){const r=\"See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\",n=ot(H.API_URL);if(t.protocol=n.protocol,t.authority=n.authority,\"http\"===t.protocol){const e=t.params.indexOf(\"secure\");e>=0&&t.params.splice(e,1);}if(\"/\"!==n.path&&(t.path=`${n.path}${t.path}`),!H.REQUIRE_ACCESS_TOKEN)return lt(t);if(e=e||H.ACCESS_TOKEN,!this._silenceAuthErrors){if(!e)throw new Error(`An API access token is required to use Mapbox GL. ${r}`);if(\"s\"===e[0])throw new Error(`Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). ${r}`)}return t.params=t.params.filter((t=>-1===t.indexOf(\"access_token\"))),t.params.push(`access_token=${e||\"\"}`),lt(t)}},t.ResourceType=zt,t.SegmentVector=_o,t.SourceCache=Zd,t.StencilMode=$d,t.StructArrayLayout1ui2=wa,t.StructArrayLayout2f1f2i16=pa,t.StructArrayLayout2i4=Qs,t.StructArrayLayout2ui4=_a,t.StructArrayLayout3f12=da,t.StructArrayLayout3ui6=ya,t.StructArrayLayout4i8=ea,t.StructArrayLayout5f20=va,t.Texture=cd,t.Tile=Id,t.Transitionable=Vs,t.Uniform1f=Wa,t.Uniform1i=class extends Ya{constructor(t){super(t),this.current=0;}set(t,e,r){this.fetchUniformLocation(t,e)&&this.current!==r&&(this.current=r,this.gl.uniform1i(this.location,r));}},t.Uniform2f=class extends Ya{constructor(t){super(t),this.current=[0,0];}set(t,e,r){this.fetchUniformLocation(t,e)&&(r[0]===this.current[0]&&r[1]===this.current[1]||(this.current=r,this.gl.uniform2f(this.location,r[0],r[1])));}},t.Uniform3f=class extends Ya{constructor(t){super(t),this.current=[0,0,0];}set(t,e,r){this.fetchUniformLocation(t,e)&&(r[0]===this.current[0]&&r[1]===this.current[1]&&r[2]===this.current[2]||(this.current=r,this.gl.uniform3f(this.location,r[0],r[1],r[2])));}},t.Uniform4f=Ja,t.UniformColor=Qa,t.UniformMatrix2f=class extends Ya{constructor(t){super(t),this.current=ro;}set(t,e,r){if(this.fetchUniformLocation(t,e))for(let t=0;t<4;t++)if(r[t]!==this.current[t]){this.current=r,this.gl.uniformMatrix2fv(this.location,!1,r);break}}},t.UniformMatrix3f=class extends Ya{constructor(t){super(t),this.current=eo;}set(t,e,r){if(this.fetchUniformLocation(t,e))for(let t=0;t<9;t++)if(r[t]!==this.current[t]){this.current=r,this.gl.uniformMatrix3fv(this.location,!1,r);break}}},t.UniformMatrix4f=class extends Ya{constructor(t){super(t),this.current=to;}set(t,e,r){if(this.fetchUniformLocation(t,e)){if(r[12]!==this.current[12]||r[0]!==this.current[0])return this.current=r,void this.gl.uniformMatrix4fv(this.location,!1,r);for(let t=1;t<16;t++)if(r[t]!==this.current[t]){this.current=r,this.gl.uniformMatrix4fv(this.location,!1,r);break}}}},t.UnwrappedTileID=Vc,t.ValidationError=qn,t.VectorTileWorkerSource=class extends Nt{constructor(t,e,r,n,i){super(),this.actor=t,this.layerIndex=e,this.availableImages=r,this.loadVectorData=i||iy,this.loading={},this.loaded={},this.deduped=new ny(t.scheduler),this.isSpriteLoaded=n,this.scheduler=t.scheduler;}loadTile(t,e){const r=t.uid,n=t&&t.request,i=n&&n.collectResourceTiming,s=this.loading[r]=new ey(t);s.abort=this.loadVectorData(t,((a,o)=>{const l=!this.loading[r];if(delete this.loading[r],l||a||!o)return s.status=\"done\",l||(this.loaded[r]=s),e(a);const u=o.rawData,c={};o.expires&&(c.expires=o.expires),o.cacheControl&&(c.cacheControl=o.cacheControl),s.vectorTile=o.vectorTile||new yc.VectorTile(new xh(u));const h=()=>{s.parse(s.vectorTile,this.layerIndex,this.availableImages,this.actor,((t,r)=>{if(t||!r)return e(t);const s={};if(i){const t=$(n);t.length>0&&(s.resourceTiming=JSON.parse(JSON.stringify(t)));}e(null,v({rawTileData:u.slice(0)},r,c,s));}));};this.isSpriteLoaded?h():this.once(\"isSpriteLoaded\",(()=>{this.scheduler?this.scheduler.add(h,{type:\"parseTile\",isSymbolTile:t.isSymbolTile,zoom:t.tileZoom}):h();})),this.loaded=this.loaded||{},this.loaded[r]=s;}));}reloadTile(t,e){const r=this.loaded,n=t.uid,i=this;if(r&&r[n]){const s=r[n];s.showCollisionBoxes=t.showCollisionBoxes,s.enableTerrain=!!t.enableTerrain,s.projection=t.projection,s.tileTransform=Af(t.tileID.canonical,t.projection);const a=(t,r)=>{const n=s.reloadCallback;n&&(delete s.reloadCallback,s.parse(s.vectorTile,i.layerIndex,this.availableImages,i.actor,n)),e(t,r);};\"parsing\"===s.status?s.reloadCallback=a:\"done\"===s.status&&(s.vectorTile?s.parse(s.vectorTile,this.layerIndex,this.availableImages,this.actor,a):a());}}abortTile(t,e){const r=t.uid,n=this.loading[r];n&&(n.abort&&n.abort(),delete this.loading[r]),e();}removeTile(t,e){const r=this.loaded,n=t.uid;r&&r[n]&&delete r[n],e();}},t.WritingMode=Nh,t.ZoomHistory=Ri,t.add=Bl,t.addDynamicAttributes=Hf,t.adjoint=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],l=e[6],u=e[7],c=e[8];return t[0]=a*c-o*u,t[1]=i*u-n*c,t[2]=n*o-i*a,t[3]=o*l-s*c,t[4]=r*c-i*l,t[5]=i*s-r*o,t[6]=s*u-a*l,t[7]=n*l-r*u,t[8]=r*a-n*s,t},t.asyncAll=g,t.bezier=p,t.bindAll=k,t.boundsAttributes=Sd,t.bufferConvexPolygon=function(t,e){const r=[];for(let n=0;n<t.length;n++){const i=m(n-1,-1,t.length-1),s=m(n+1,-1,t.length-1),a=t[n],o=t[s],l=t[i].sub(a).unit(),u=o.sub(a).unit(),c=u.angleWithSep(l.x,l.y),h=l.add(u).unit().mult(-1*e/Math.sin(c/2));r.push(a.add(h));}return r},t.cacheEntryPossiblyAdded=function(t){Mt++,Mt>bt&&(t.getActor().send(\"enforceCacheSizeLimit\",vt),Mt=0);},t.calculateGlobeLabelMatrix=function(t,e){const{x:r,y:n}=t.point,i=mf(r,n,t.worldSize/t._pixelsPerMercatorPixel,0,0);return xl(i,i,yf(rf(e)))},t.calculateGlobeMatrix=function(t){const{x:e,y:r}=t.point,{lng:n,lat:i}=t._center;return mf(e,r,t.worldSize,n,i)},t.calculateGlobeMercatorMatrix=function(t){const e=t.pixelsPerMeter,r=e/Bo(1,t.center.lat),n=ml(new Float64Array(16));return vl(n,n,[t.point.x,t.point.y,0]),bl(n,n,[r,r,e]),Float32Array.from(n)},t.circumferenceAtLatitude=Mo,t.clamp=d,t.clearTileCache=function(t){const e=At(),r=[];for(const t in _t)e&&r.push(e.delete(t)),delete _t[t];t&&Promise.all(r).catch(t).then((()=>t()));},t.clipLine=dp,t.clone=function(t){var e=new dl(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=T,t.collisionCircleLayout=sh,t.config=H,t.conjugate=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t},t.create=function(){var t=new dl(16);return dl!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=yl,t.createExpression=Ln,t.createLayout=Ws,t.createStyleLayer=function(t){return \"custom\"===t.type?new ad(t):new ud[t.type](t)},t.cross=Ul,t.degToRad=l,t.distance=function(t,e){return Math.hypot(e[0]-t[0],e[1]-t[1],e[2]-t[2])},t.div=function(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t},t.dot=Rl,t.ease=f,t.easeCubicInOut=h,t.emitValidationErrors=Ti,t.endsWith=I,t.enforceCacheSizeLimit=function(t){for(const e in _t)St(e),_t[e].then((e=>{e.keys().then((r=>{for(let n=0;n<r.length-t;n++)e.delete(r[n]);}));}));},t.evaluateSizeForFeature=uh,t.evaluateSizeForZoom=ch,t.evaluateVariableOffset=Pp,t.evented=zs,t.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]},t.exactEquals$1=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]},t.exported=X,t.exported$1=Y,t.extend=v,t.extend$1=Zt,t.fillExtrusionHeightLift=Tc,t.filterObject=z,t.fromMat4=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t},t.fromQuat=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=r+r,o=n+n,l=i+i,u=r*a,c=n*a,h=n*o,p=i*a,f=i*o,d=i*l,y=s*a,m=s*o,g=s*l;return t[0]=1-h-d,t[1]=c+g,t[2]=p-m,t[3]=0,t[4]=c-g,t[5]=1-u-d,t[6]=f+y,t[7]=0,t[8]=p+m,t[9]=f-y,t[10]=1-u-h,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},t.fromRotation=function(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=0,t[3]=-r,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},t.fromScaling=Al,t.furthestTileCorner=function(t){const e=Math.round((t+45+360)%360/90)%4;return c[e]},t.getAABBPointSquareDist=function(t,e,r){let n=0;for(let i=0;i<2;++i){const s=r?r[i]:0;t[i]>s&&(n+=(t[i]-s)*(t[i]-s)),e[i]<s&&(n+=(s-e[i])*(s-e[i]));}return n},t.getAnchorAlignment=rp,t.getAnchorJustification=Vp,t.getBounds=function(t){let e=1/0,r=1/0,n=-1/0,s=-1/0;for(const i of t)e=Math.min(e,i.x),r=Math.min(r,i.y),n=Math.max(n,i.x),s=Math.max(s,i.y);return {min:new i(e,r),max:new i(n,s)}},t.getColumn=U,t.getGridMatrix=function(t,e,r){const n=e.getNorth(),i=e.getSouth(),s=e.getWest(),a=.015625;return [0,(e.getEast()-s)*a,1<<t.z,(i-n)/Hp[r],0,t.y,n,s,a]},t.getImage=Ut,t.getJSON=function(t,e){return Et(v(t,{type:\"json\"}),e)},t.getLatitudinalLod=function(t){const e=80.051129;t=d(t,-80.051129,e)/e*90;const r=Math.pow(Math.abs(Math.sin(l(t))),3);return Math.round(r*(Hp.length-1))},t.getMapSessionAPI=mt,t.getPerformanceMeasurement=$,t.getProjection=Nf,t.getRTLTextPluginStatus=Ts,t.getReferrer=Bt,t.getTilePoint=function(t,{x:e,y:r},n=0){return new i(((e-n)*t.scale-t.x)*wo,(r*t.scale-t.y)*wo)},t.getTileVec3=function(t,e,r=0){return Tl(((e.x-r)*t.scale-t.x)*wo,(e.y*t.scale-t.y)*wo,Po(e.z,e.y))},t.getVideo=function(t,r){const n=e.document.createElement(\"video\");n.muted=!0,n.onloadstart=function(){r(null,n);};for(let r=0;r<t.length;r++){const i=e.document.createElement(\"source\");Vt(t[r])||(n.crossOrigin=\"Anonymous\"),i.src=t[r],n.appendChild(i);}return {cancel:()=>{}}},t.globeCenterToScreenPoint=function(t){const e=[0,0,0],r=ml(new Float64Array(16));return xl(r,t.pixelMatrix,t.globeMatrix),jl(e,e,r),new i(e[0],e[1])},t.globeDenormalizeECEF=yf,t.globeECEFOrigin=function(t,e){const r=[0,0,0];return jl(r,r,df(rf(e.canonical))),jl(r,r,t),r},t.globeNormalizeECEF=df,t.globePixelsToTileUnits=function(t,e){return wo/(512*Math.pow(2,t))*pf(rf(e))},t.globePoleMatrixForTile=function(t,e,r){const n=ml(new Float64Array(16)),i=(e/(1<<t)-.5)*Math.PI*2;return wl(n,r.globeMatrix,i),Float32Array.from(n)},t.globeTileBounds=rf,t.globeTiltAtLngLat=xf,t.globeToMercatorTransition=gf,t.globeUseCustomAntiAliasing=function(t,e,r){const n=gf(r.zoom),i=t.style.map._antialias,s=!!e.extStandardDerivatives,a=e.extStandardDerivativesForceOff||t.terrain&&t.terrain.exaggeration()>0;return 0===n&&!i&&!a&&s},t.identity=ml,t.identity$1=Hl,t.invert=gl,t.isFullscreen=function(){return !!e.document.fullscreenElement||!!e.document.webkitFullscreenElement},t.isLngLatBehindGlobe=function(t,e){return xf(t,e)>Math.PI/2*1.01},t.isMapAuthenticated=function(t){return gt.has(t)},t.isMapboxURL=it,t.isSafariWithAntialiasingBug=function(t){const e=t.navigator?t.navigator.userAgent:null;return !!L(t)&&e&&(e.match(\"Version/15.4\")||e.match(\"Version/15.5\")||e.match(/CPU (OS|iPhone OS) (15_4|15_5) like Mac OS X/))},t.latFromMercatorY=Co,t.len=Gl,t.length=zl,t.length$1=function(t){return Math.hypot(t[0],t[1],t[2],t[3])},t.loadVectorTile=iy,t.makeRequest=Et,t.mapValue=function(t,e,r,n,i){return d((t-e)/(r-e)*(i-n)+n,n,i)},t.mercatorScale=Vo,t.mercatorXfromLng=zo,t.mercatorYfromLat=To,t.mercatorZfromAltitude=Bo,t.mul=kl,t.mul$1=Nl,t.multiply=xl,t.multiply$1=function(t,e,r){var n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=r[0],f=r[1],d=r[2],y=r[3],m=r[4],g=r[5],x=r[6],v=r[7],b=r[8];return t[0]=p*n+f*a+d*u,t[1]=p*i+f*o+d*c,t[2]=p*s+f*l+d*h,t[3]=y*n+m*a+g*u,t[4]=y*i+m*o+g*c,t[5]=y*s+m*l+g*h,t[6]=x*n+v*a+b*u,t[7]=x*i+v*o+b*c,t[8]=x*s+v*l+b*h,t},t.multiply$2=Cl,t.nextPowerOfTwo=A,t.normalize=Ll,t.normalize$1=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=r*r+n*n+i*i+s*s;return a>0&&(a=1/Math.sqrt(a)),t[0]=r*a,t[1]=n*a,t[2]=i*a,t[3]=s*a,t},t.number=xr,t.ortho=function(t,e,r,n,i,s,a){var o=1/(e-r),l=1/(n-i),u=1/(s-a);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+r)*o,t[13]=(i+n)*l,t[14]=(a+s)*u,t[15]=1,t},t.pbf=xh,t.perspective=function(t,e,r,n,i){var s,a=1/Math.tan(e/2);return t[0]=a/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=i&&i!==1/0?(t[10]=(i+n)*(s=1/(n-i)),t[14]=2*i*n*s):(t[10]=-1,t[14]=-2*n),t},t.pick=function(t,e){const r={};for(let n=0;n<e.length;n++){const i=e[n];i in t&&(r[i]=t[i]);}return r},t.plugin=Es,t.pointGeometry=i,t.polygonContainsPoint=il,t.polygonIntersectsBox=sl,t.polygonIntersectsPolygon=Ho,t.polygonizeBounds=function(t,e,r=0,n=!0){const s=new i(r,r),a=t.sub(s),o=e.add(s),l=[a,new i(o.x,a.y),o,new i(a.x,o.y)];return n&&l.push(a.clone()),l},t.posAttributes=Zp,t.postMapLoadEvent=dt,t.postTurnstileEvent=pt,t.potpack=$h,t.prevPowerOfTwo=function(t){return t<=1?1:Math.pow(2,Math.floor(Math.log(t)/Math.LN2))},t.radToDeg=u,t.refProperties=[\"type\",\"source\",\"source-layer\",\"minzoom\",\"maxzoom\",\"filter\",\"layout\"],t.registerForPluginStateChange=function(t){return t({pluginStatus:Ss,pluginURL:ks}),zs.on(\"pluginStateChange\",t),t},t.removeAuthState=function(t){gt.delete(t);},t.renderColorRamp=du,t.resample=Ro,t.rotateX=_l,t.rotateX$1=Yl,t.rotateY=wl,t.rotateY$1=Wl,t.rotateZ=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),s=e[0],a=e[1],o=e[2],l=e[3],u=e[4],c=e[5],h=e[6],p=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=s*i+u*n,t[1]=a*i+c*n,t[2]=o*i+h*n,t[3]=l*i+p*n,t[4]=u*i-s*n,t[5]=c*i-a*n,t[6]=h*i-o*n,t[7]=p*i-l*n,t},t.rotateZ$1=function(t,e,r){r*=.5;var n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),l=Math.cos(r);return t[0]=n*l+i*o,t[1]=i*l-n*o,t[2]=s*l+a*o,t[3]=a*l-s*o,t},t.scale=bl,t.scale$1=Zl,t.scale$2=Vl,t.scaleAndAdd=Fl,t.setCacheLimits=function(t,e){vt=t,bt=e;},t.setColumn=function(t,e,r){t[4*e+0]=r[0],t[4*e+1]=r[1],t[4*e+2]=r[2],t[4*e+3]=r[3];},t.setRTLTextPlugin=function(t,e,r=!1){if(Ss===bs||Ss===_s||Ss===ws)throw new Error(\"setRTLTextPlugin cannot be called multiple times.\");ks=X.resolveURL(t),Ss=bs,As=e,Ms(),r||Bs();},t.smoothstep=y,t.spec=Gt,t.storeAuthState=function(t,e){e?gt.add(t):gt.delete(t);},t.sub=ql,t.subtract=El,t.symbolSize=hh,t.tileAABB=function(t,e,r,n,i,s,a,o,l){if(\"globe\"===l.name)return af(t,e,new Dc(r,n,i));const u=Af({z:r,x:n,y:i},l);return new eu([(s+u.x/u.scale)*e,e*(u.y/u.scale),a],[(s+u.x2/u.scale)*e,e*(u.y2/u.scale),o])},t.tileCornersToBounds=of,t.tileTransform=Af,t.transformMat3=function(t,e,r){var n=e[0],i=e[1],s=e[2];return t[0]=n*r[0]+i*r[3]+s*r[6],t[1]=n*r[1]+i*r[4]+s*r[7],t[2]=n*r[2]+i*r[5]+s*r[8],t},t.transformMat4=jl,t.transformMat4$1=Xl,t.transformQuat=$l,t.transitionTileAABBinECEF=nf,t.translate=vl,t.transpose=function(t,e){if(t===e){var r=e[1],n=e[2],i=e[5];t[1]=e[3],t[2]=e[6],t[3]=r,t[5]=e[7],t[6]=n,t[7]=i;}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t},t.triggerPluginCompletionEvent=Is,t.uniqueId=_,t.updateGlobeVertexNormal=function(t,e,r,n,i){const s=5*e+2;t.float32[s+0]=r,t.float32[s+1]=n,t.float32[s+2]=i;},t.validateCustomStyleLayer=function(t){const e=[],r=t.id;return void 0===r&&e.push({message:`layers.${r}: missing required property \"id\"`}),void 0===t.render&&e.push({message:`layers.${r}: missing required method \"render\"`}),t.renderingMode&&\"2d\"!==t.renderingMode&&\"3d\"!==t.renderingMode&&e.push({message:`layers.${r}: property \"renderingMode\" must be either \"2d\" or \"3d\"`}),e},t.validateFilter=t=>zi(ci(t)),t.validateFog=t=>zi(_i(t)),t.validateLayer=t=>zi(yi(t)),t.validateLight=t=>zi(vi(t)),t.validateSource=t=>zi(xi(t)),t.validateStyle=ki,t.validateTerrain=t=>zi(bi(t)),t.values=x,t.vectorTile=yc,t.version=O,t.warnOnce=E,t.window=e,t.wrap=m;}));\n\ndefine([\"./shared\"],(function(e){\"use strict\";function t(e){if(\"number\"==typeof e||\"boolean\"==typeof e||\"string\"==typeof e||null==e)return JSON.stringify(e);if(Array.isArray(e)){let r=\"[\";for(const o of e)r+=`${t(o)},`;return `${r}]`}let r=\"{\";for(const o of Object.keys(e).sort())r+=`${o}:${t(e[o])},`;return `${r}}`}function r(r){let o=\"\";for(const n of e.refProperties)o+=`/${t(r[n])}`;return o}class o{constructor(e){this.keyCache={},e&&this.replace(e);}replace(e){this._layerConfigs={},this._layers={},this.update(e,[]);}update(t,o){for(const r of t)this._layerConfigs[r.id]=r,(this._layers[r.id]=e.createStyleLayer(r)).compileFilter(),this.keyCache[r.id]&&delete this.keyCache[r.id];for(const e of o)delete this.keyCache[e],delete this._layerConfigs[e],delete this._layers[e];this.familiesBySource={};const n=function(e,t){const o={};for(let n=0;n<e.length;n++){const i=t&&t[e[n].id]||r(e[n]);t&&(t[e[n].id]=i);let s=o[i];s||(s=o[i]=[]),s.push(e[n]);}const n=[];for(const e in o)n.push(o[e]);return n}(e.values(this._layerConfigs),this.keyCache);for(const e of n){const t=e.map((e=>this._layers[e.id])),r=t[0];if(\"none\"===r.visibility)continue;const o=r.source||\"\";let n=this.familiesBySource[o];n||(n=this.familiesBySource[o]={});const i=r.sourceLayer||\"_geojsonTileLayer\";let s=n[i];s||(s=n[i]=[]),s.push(t);}}}class n{loadTile(t,r){const{uid:o,encoding:n,rawImageData:i,padding:s,buildQuadTree:a}=t,l=e.window.ImageBitmap&&i instanceof e.window.ImageBitmap?this.getImageData(i,s):i;r(null,new e.DEMData(o,l,n,s<1,a));}getImageData(e,t){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(e.width,e.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext(\"2d\")),this.offscreenCanvas.width=e.width,this.offscreenCanvas.height=e.height,this.offscreenCanvasContext.drawImage(e,0,0,e.width,e.height);const r=this.offscreenCanvasContext.getImageData(-t,-t,e.width+2*t,e.height+2*t);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),r}}var i=function e(t,r){var o,n=t&&t.type;if(\"FeatureCollection\"===n)for(o=0;o<t.features.length;o++)e(t.features[o],r);else if(\"GeometryCollection\"===n)for(o=0;o<t.geometries.length;o++)e(t.geometries[o],r);else if(\"Feature\"===n)e(t.geometry,r);else if(\"Polygon\"===n)s(t.coordinates,r);else if(\"MultiPolygon\"===n)for(o=0;o<t.coordinates.length;o++)s(t.coordinates[o],r);return t};function s(e,t){if(0!==e.length){a(e[0],t);for(var r=1;r<e.length;r++)a(e[r],!t);}}function a(e,t){for(var r=0,o=0,n=0,i=e.length,s=i-1;n<i;s=n++){var a=(e[n][0]-e[s][0])*(e[s][1]+e[n][1]),l=r+a;o+=Math.abs(r)>=Math.abs(a)?r-l+a:a-l+r,r=l;}r+o>=0!=!!t&&e.reverse();}const l=e.vectorTile.VectorTileFeature.prototype.toGeoJSON;class u{constructor(t){this._feature=t,this.extent=e.EXTENT,this.type=t.type,this.properties=t.tags,\"id\"in t&&!isNaN(t.id)&&(this.id=parseInt(t.id,10));}loadGeometry(){if(1===this._feature.type){const t=[];for(const r of this._feature.geometry)t.push([new e.pointGeometry(r[0],r[1])]);return t}{const t=[];for(const r of this._feature.geometry){const o=[];for(const t of r)o.push(new e.pointGeometry(t[0],t[1]));t.push(o);}return t}}toGeoJSON(e,t,r){return l.call(this,e,t,r)}}class h{constructor(t){this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.extent=e.EXTENT,this.length=t.length,this._features=t;}feature(e){return new u(this._features[e])}}var c=e.vectorTile.VectorTileFeature,f=p;function p(e,t){this.options=t||{},this.features=e,this.length=e.length;}function g(e,t){this.id=\"number\"==typeof e.id?e.id:void 0,this.type=e.type,this.rawGeometry=1===e.type?[e.geometry]:e.geometry,this.properties=e.tags,this.extent=t||4096;}p.prototype.feature=function(e){return new g(this.features[e],this.options.extent)},g.prototype.loadGeometry=function(){var t=this.rawGeometry;this.geometry=[];for(var r=0;r<t.length;r++){for(var o=t[r],n=[],i=0;i<o.length;i++)n.push(new e.pointGeometry(o[i][0],o[i][1]));this.geometry.push(n);}return this.geometry},g.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var e=this.geometry,t=1/0,r=-1/0,o=1/0,n=-1/0,i=0;i<e.length;i++)for(var s=e[i],a=0;a<s.length;a++){var l=s[a];t=Math.min(t,l.x),r=Math.max(r,l.x),o=Math.min(o,l.y),n=Math.max(n,l.y);}return [t,o,r,n]},g.prototype.toGeoJSON=c.prototype.toGeoJSON;var d=y,m=f;function y(t){var r=new e.pbf;return function(e,t){for(var r in e.layers)t.writeMessage(3,v,e.layers[r]);}(t,r),r.finish()}function v(e,t){var r;t.writeVarintField(15,e.version||1),t.writeStringField(1,e.name||\"\"),t.writeVarintField(5,e.extent||4096);var o={keys:[],values:[],keycache:{},valuecache:{}};for(r=0;r<e.length;r++)o.feature=e.feature(r),t.writeMessage(2,x,o);var n=o.keys;for(r=0;r<n.length;r++)t.writeStringField(3,n[r]);var i=o.values;for(r=0;r<i.length;r++)t.writeMessage(4,b,i[r]);}function x(e,t){var r=e.feature;void 0!==r.id&&t.writeVarintField(1,r.id),t.writeMessage(2,w,e),t.writeVarintField(3,r.type),t.writeMessage(4,P,r);}function w(e,t){var r=e.feature,o=e.keys,n=e.values,i=e.keycache,s=e.valuecache;for(var a in r.properties){var l=r.properties[a],u=i[a];if(null!==l){void 0===u&&(o.push(a),i[a]=u=o.length-1),t.writeVarint(u);var h=typeof l;\"string\"!==h&&\"boolean\"!==h&&\"number\"!==h&&(l=JSON.stringify(l));var c=h+\":\"+l,f=s[c];void 0===f&&(n.push(l),s[c]=f=n.length-1),t.writeVarint(f);}}}function S(e,t){return (t<<3)+(7&e)}function M(e){return e<<1^e>>31}function P(e,t){for(var r=e.loadGeometry(),o=e.type,n=0,i=0,s=r.length,a=0;a<s;a++){var l=r[a],u=1;1===o&&(u=l.length),t.writeVarint(S(1,u));for(var h=3===o?l.length-1:l.length,c=0;c<h;c++){1===c&&1!==o&&t.writeVarint(S(2,h-1));var f=l[c].x-n,p=l[c].y-i;t.writeVarint(M(f)),t.writeVarint(M(p)),n+=f,i+=p;}3===o&&t.writeVarint(S(7,1));}}function b(e,t){var r=typeof e;\"string\"===r?t.writeStringField(1,e):\"boolean\"===r?t.writeBooleanField(7,e):\"number\"===r&&(e%1!=0?t.writeDoubleField(3,e):e<0?t.writeSVarintField(6,e):t.writeVarintField(5,e));}function T(e,t,r,o,n,i){if(n-o<=r)return;const s=o+n>>1;k(e,t,s,o,n,i%2),T(e,t,r,o,s-1,i+1),T(e,t,r,s+1,n,i+1);}function k(e,t,r,o,n,i){for(;n>o;){if(n-o>600){const s=n-o+1,a=r-o+1,l=Math.log(s),u=.5*Math.exp(2*l/3),h=.5*Math.sqrt(l*u*(s-u)/s)*(a-s/2<0?-1:1);k(e,t,r,Math.max(o,Math.floor(r-a*u/s+h)),Math.min(n,Math.floor(r+(s-a)*u/s+h)),i);}const s=t[2*r+i];let a=o,l=n;for(I(e,t,o,r),t[2*n+i]>s&&I(e,t,o,n);a<l;){for(I(e,t,a,l),a++,l--;t[2*a+i]<s;)a++;for(;t[2*l+i]>s;)l--;}t[2*o+i]===s?I(e,t,o,l):(l++,I(e,t,l,n)),l<=r&&(o=l+1),r<=l&&(n=l-1);}}function I(e,t,r,o){_(e,r,o),_(t,2*r,2*o),_(t,2*r+1,2*o+1);}function _(e,t,r){const o=e[t];e[t]=e[r],e[r]=o;}function L(e,t,r,o){const n=e-r,i=t-o;return n*n+i*i}d.fromVectorTileJs=y,d.fromGeojsonVt=function(e,t){t=t||{};var r={};for(var o in e)r[o]=new f(e[o].features,t),r[o].name=o,r[o].version=t.version,r[o].extent=t.extent;return y({layers:r})},d.GeoJSONWrapper=m;const C=e=>e[0],O=e=>e[1];class z{constructor(e,t=C,r=O,o=64,n=Float64Array){this.nodeSize=o,this.points=e;const i=e.length<65536?Uint16Array:Uint32Array,s=this.ids=new i(e.length),a=this.coords=new n(2*e.length);for(let o=0;o<e.length;o++)s[o]=o,a[2*o]=t(e[o]),a[2*o+1]=r(e[o]);T(s,a,o,0,s.length-1,0);}range(e,t,r,o){return function(e,t,r,o,n,i,s){const a=[0,e.length-1,0],l=[];let u,h;for(;a.length;){const c=a.pop(),f=a.pop(),p=a.pop();if(f-p<=s){for(let s=p;s<=f;s++)u=t[2*s],h=t[2*s+1],u>=r&&u<=n&&h>=o&&h<=i&&l.push(e[s]);continue}const g=Math.floor((p+f)/2);u=t[2*g],h=t[2*g+1],u>=r&&u<=n&&h>=o&&h<=i&&l.push(e[g]);const d=(c+1)%2;(0===c?r<=u:o<=h)&&(a.push(p),a.push(g-1),a.push(d)),(0===c?n>=u:i>=h)&&(a.push(g+1),a.push(f),a.push(d));}return l}(this.ids,this.coords,e,t,r,o,this.nodeSize)}within(e,t,r){return function(e,t,r,o,n,i){const s=[0,e.length-1,0],a=[],l=n*n;for(;s.length;){const u=s.pop(),h=s.pop(),c=s.pop();if(h-c<=i){for(let n=c;n<=h;n++)L(t[2*n],t[2*n+1],r,o)<=l&&a.push(e[n]);continue}const f=Math.floor((c+h)/2),p=t[2*f],g=t[2*f+1];L(p,g,r,o)<=l&&a.push(e[f]);const d=(u+1)%2;(0===u?r-n<=p:o-n<=g)&&(s.push(c),s.push(f-1),s.push(d)),(0===u?r+n>=p:o+n>=g)&&(s.push(f+1),s.push(h),s.push(d));}return a}(this.ids,this.coords,e,t,r,this.nodeSize)}}const E={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:e=>e},F=Math.fround||(N=new Float32Array(1),e=>(N[0]=+e,N[0]));var N;class j{constructor(e){this.options=A(Object.create(E),e),this.trees=new Array(this.options.maxZoom+1);}load(e){const{log:t,minZoom:r,maxZoom:o,nodeSize:n}=this.options;t&&console.time(\"total time\");const i=`prepare ${e.length} points`;t&&console.time(i),this.points=e;let s=[];for(let t=0;t<e.length;t++)e[t].geometry&&s.push(G(e[t],t));this.trees[o+1]=new z(s,D,$,n,Float32Array),t&&console.timeEnd(i);for(let e=o;e>=r;e--){const r=+Date.now();s=this._cluster(s,e),this.trees[e]=new z(s,D,$,n,Float32Array),t&&console.log(\"z%d: %d clusters in %dms\",e,s.length,+Date.now()-r);}return t&&console.timeEnd(\"total time\"),this}getClusters(e,t){let r=((e[0]+180)%360+360)%360-180;const o=Math.max(-90,Math.min(90,e[1]));let n=180===e[2]?180:((e[2]+180)%360+360)%360-180;const i=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)r=-180,n=180;else if(r>n){const e=this.getClusters([r,o,180,i],t),s=this.getClusters([-180,o,n,i],t);return e.concat(s)}const s=this.trees[this._limitZoom(t)],a=s.range(Y(r),X(i),Y(n),X(o)),l=[];for(const e of a){const t=s.points[e];l.push(t.numPoints?J(t):this.points[t.index]);}return l}getChildren(e){const t=this._getOriginId(e),r=this._getOriginZoom(e),o=\"No cluster with the specified id.\",n=this.trees[r];if(!n)throw new Error(o);const i=n.points[t];if(!i)throw new Error(o);const s=this.options.radius/(this.options.extent*Math.pow(2,r-1)),a=n.within(i.x,i.y,s),l=[];for(const t of a){const r=n.points[t];r.parentId===e&&l.push(r.numPoints?J(r):this.points[r.index]);}if(0===l.length)throw new Error(o);return l}getLeaves(e,t,r){const o=[];return this._appendLeaves(o,e,t=t||10,r=r||0,0),o}getTile(e,t,r){const o=this.trees[this._limitZoom(e)],n=Math.pow(2,e),{extent:i,radius:s}=this.options,a=s/i,l=(r-a)/n,u=(r+1+a)/n,h={features:[]};return this._addTileFeatures(o.range((t-a)/n,l,(t+1+a)/n,u),o.points,t,r,n,h),0===t&&this._addTileFeatures(o.range(1-a/n,l,1,u),o.points,n,r,n,h),t===n-1&&this._addTileFeatures(o.range(0,l,a/n,u),o.points,-1,r,n,h),h.features.length?h:null}getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this.options.maxZoom;){const r=this.getChildren(e);if(t++,1!==r.length)break;e=r[0].properties.cluster_id;}return t}_appendLeaves(e,t,r,o,n){const i=this.getChildren(t);for(const t of i){const i=t.properties;if(i&&i.cluster?n+i.point_count<=o?n+=i.point_count:n=this._appendLeaves(e,i.cluster_id,r,o,n):n<o?n++:e.push(t),e.length===r)break}return n}_addTileFeatures(e,t,r,o,n,i){for(const s of e){const e=t[s],a=e.numPoints;let l,u,h;if(a)l=W(e),u=e.x,h=e.y;else {const t=this.points[e.index];l=t.properties,u=Y(t.geometry.coordinates[0]),h=X(t.geometry.coordinates[1]);}const c={type:1,geometry:[[Math.round(this.options.extent*(u*n-r)),Math.round(this.options.extent*(h*n-o))]],tags:l};let f;a?f=e.id:this.options.generateId?f=e.index:this.points[e.index].id&&(f=this.points[e.index].id),void 0!==f&&(c.id=f),i.features.push(c);}}_limitZoom(e){return Math.max(this.options.minZoom,Math.min(+e,this.options.maxZoom+1))}_cluster(e,t){const r=[],{radius:o,extent:n,reduce:i,minPoints:s}=this.options,a=o/(n*Math.pow(2,t));for(let o=0;o<e.length;o++){const n=e[o];if(n.zoom<=t)continue;n.zoom=t;const l=this.trees[t+1],u=l.within(n.x,n.y,a),h=n.numPoints||1;let c=h;for(const e of u){const r=l.points[e];r.zoom>t&&(c+=r.numPoints||1);}if(c>h&&c>=s){let e=n.x*h,s=n.y*h,a=i&&h>1?this._map(n,!0):null;const f=(o<<5)+(t+1)+this.points.length;for(const r of u){const o=l.points[r];if(o.zoom<=t)continue;o.zoom=t;const u=o.numPoints||1;e+=o.x*u,s+=o.y*u,o.parentId=f,i&&(a||(a=this._map(n,!0)),i(a,this._map(o)));}n.parentId=f,r.push(Z(e/c,s/c,f,c,a));}else if(r.push(n),c>1)for(const e of u){const o=l.points[e];o.zoom<=t||(o.zoom=t,r.push(o));}}return r}_getOriginId(e){return e-this.points.length>>5}_getOriginZoom(e){return (e-this.points.length)%32}_map(e,t){if(e.numPoints)return t?A({},e.properties):e.properties;const r=this.points[e.index].properties,o=this.options.map(r);return t&&o===r?A({},o):o}}function Z(e,t,r,o,n){return {x:F(e),y:F(t),zoom:1/0,id:r,parentId:-1,numPoints:o,properties:n}}function G(e,t){const[r,o]=e.geometry.coordinates;return {x:F(Y(r)),y:F(X(o)),zoom:1/0,index:t,parentId:-1}}function J(e){return {type:\"Feature\",id:e.id,properties:W(e),geometry:{type:\"Point\",coordinates:[(t=e.x,360*(t-.5)),V(e.y)]}};var t;}function W(e){const t=e.numPoints,r=t>=1e4?`${Math.round(t/1e3)}k`:t>=1e3?Math.round(t/100)/10+\"k\":t;return A(A({},e.properties),{cluster:!0,cluster_id:e.id,point_count:t,point_count_abbreviated:r})}function Y(e){return e/360+.5}function X(e){const t=Math.sin(e*Math.PI/180),r=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return r<0?0:r>1?1:r}function V(e){const t=(180-360*e)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}function A(e,t){for(const r in t)e[r]=t[r];return e}function D(e){return e.x}function $(e){return e.y}function B(e,t,r,o){for(var n,i=o,s=r-t>>1,a=r-t,l=e[t],u=e[t+1],h=e[r],c=e[r+1],f=t+3;f<r;f+=3){var p=R(e[f],e[f+1],l,u,h,c);if(p>i)n=f,i=p;else if(p===i){var g=Math.abs(f-s);g<a&&(n=f,a=g);}}i>o&&(n-t>3&&B(e,t,n,o),e[n+2]=i,r-n>3&&B(e,n,r,o));}function R(e,t,r,o,n,i){var s=n-r,a=i-o;if(0!==s||0!==a){var l=((e-r)*s+(t-o)*a)/(s*s+a*a);l>1?(r=n,o=i):l>0&&(r+=s*l,o+=a*l);}return (s=e-r)*s+(a=t-o)*a}function q(e,t,r,o){var n={id:void 0===e?null:e,type:t,geometry:r,tags:o,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(e){var t=e.geometry,r=e.type;if(\"Point\"===r||\"MultiPoint\"===r||\"LineString\"===r)U(e,t);else if(\"Polygon\"===r||\"MultiLineString\"===r)for(var o=0;o<t.length;o++)U(e,t[o]);else if(\"MultiPolygon\"===r)for(o=0;o<t.length;o++)for(var n=0;n<t[o].length;n++)U(e,t[o][n]);}(n),n}function U(e,t){for(var r=0;r<t.length;r+=3)e.minX=Math.min(e.minX,t[r]),e.minY=Math.min(e.minY,t[r+1]),e.maxX=Math.max(e.maxX,t[r]),e.maxY=Math.max(e.maxY,t[r+1]);}function Q(e,t,r,o){if(t.geometry){var n=t.geometry.coordinates,i=t.geometry.type,s=Math.pow(r.tolerance/((1<<r.maxZoom)*r.extent),2),a=[],l=t.id;if(r.promoteId?l=t.properties[r.promoteId]:r.generateId&&(l=o||0),\"Point\"===i)H(n,a);else if(\"MultiPoint\"===i)for(var u=0;u<n.length;u++)H(n[u],a);else if(\"LineString\"===i)K(n,a,s,!1);else if(\"MultiLineString\"===i){if(r.lineMetrics){for(u=0;u<n.length;u++)K(n[u],a=[],s,!1),e.push(q(l,\"LineString\",a,t.properties));return}ee(n,a,s,!1);}else if(\"Polygon\"===i)ee(n,a,s,!0);else {if(\"MultiPolygon\"!==i){if(\"GeometryCollection\"===i){for(u=0;u<t.geometry.geometries.length;u++)Q(e,{id:l,geometry:t.geometry.geometries[u],properties:t.properties},r,o);return}throw new Error(\"Input data is not a valid GeoJSON object.\")}for(u=0;u<n.length;u++){var h=[];ee(n[u],h,s,!0),a.push(h);}}e.push(q(l,i,a,t.properties));}}function H(e,t){t.push(te(e[0])),t.push(re(e[1])),t.push(0);}function K(e,t,r,o){for(var n,i,s=0,a=0;a<e.length;a++){var l=te(e[a][0]),u=re(e[a][1]);t.push(l),t.push(u),t.push(0),a>0&&(s+=o?(n*u-l*i)/2:Math.sqrt(Math.pow(l-n,2)+Math.pow(u-i,2))),n=l,i=u;}var h=t.length-3;t[2]=1,B(t,0,h,r),t[h+2]=1,t.size=Math.abs(s),t.start=0,t.end=t.size;}function ee(e,t,r,o){for(var n=0;n<e.length;n++){var i=[];K(e[n],i,r,o),t.push(i);}}function te(e){return e/360+.5}function re(e){var t=Math.sin(e*Math.PI/180),r=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return r<0?0:r>1?1:r}function oe(e,t,r,o,n,i,s,a){if(o/=t,i>=(r/=t)&&s<o)return e;if(s<r||i>=o)return null;for(var l=[],u=0;u<e.length;u++){var h=e[u],c=h.geometry,f=h.type,p=0===n?h.minX:h.minY,g=0===n?h.maxX:h.maxY;if(p>=r&&g<o)l.push(h);else if(!(g<r||p>=o)){var d=[];if(\"Point\"===f||\"MultiPoint\"===f)ne(c,d,r,o,n);else if(\"LineString\"===f)ie(c,d,r,o,n,!1,a.lineMetrics);else if(\"MultiLineString\"===f)ae(c,d,r,o,n,!1);else if(\"Polygon\"===f)ae(c,d,r,o,n,!0);else if(\"MultiPolygon\"===f)for(var m=0;m<c.length;m++){var y=[];ae(c[m],y,r,o,n,!0),y.length&&d.push(y);}if(d.length){if(a.lineMetrics&&\"LineString\"===f){for(m=0;m<d.length;m++)l.push(q(h.id,f,d[m],h.tags));continue}\"LineString\"!==f&&\"MultiLineString\"!==f||(1===d.length?(f=\"LineString\",d=d[0]):f=\"MultiLineString\"),\"Point\"!==f&&\"MultiPoint\"!==f||(f=3===d.length?\"Point\":\"MultiPoint\"),l.push(q(h.id,f,d,h.tags));}}}return l.length?l:null}function ne(e,t,r,o,n){for(var i=0;i<e.length;i+=3){var s=e[i+n];s>=r&&s<=o&&(t.push(e[i]),t.push(e[i+1]),t.push(e[i+2]));}}function ie(e,t,r,o,n,i,s){for(var a,l,u=se(e),h=0===n?ue:he,c=e.start,f=0;f<e.length-3;f+=3){var p=e[f],g=e[f+1],d=e[f+2],m=e[f+3],y=e[f+4],v=0===n?p:g,x=0===n?m:y,w=!1;s&&(a=Math.sqrt(Math.pow(p-m,2)+Math.pow(g-y,2))),v<r?x>r&&(l=h(u,p,g,m,y,r),s&&(u.start=c+a*l)):v>o?x<o&&(l=h(u,p,g,m,y,o),s&&(u.start=c+a*l)):le(u,p,g,d),x<r&&v>=r&&(l=h(u,p,g,m,y,r),w=!0),x>o&&v<=o&&(l=h(u,p,g,m,y,o),w=!0),!i&&w&&(s&&(u.end=c+a*l),t.push(u),u=se(e)),s&&(c+=a);}var S=e.length-3;p=e[S],g=e[S+1],d=e[S+2],(v=0===n?p:g)>=r&&v<=o&&le(u,p,g,d),S=u.length-3,i&&S>=3&&(u[S]!==u[0]||u[S+1]!==u[1])&&le(u,u[0],u[1],u[2]),u.length&&t.push(u);}function se(e){var t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function ae(e,t,r,o,n,i){for(var s=0;s<e.length;s++)ie(e[s],t,r,o,n,i,!1);}function le(e,t,r,o){e.push(t),e.push(r),e.push(o);}function ue(e,t,r,o,n,i){var s=(i-t)/(o-t);return e.push(i),e.push(r+(n-r)*s),e.push(1),s}function he(e,t,r,o,n,i){var s=(i-r)/(n-r);return e.push(t+(o-t)*s),e.push(i),e.push(1),s}function ce(e,t){for(var r=[],o=0;o<e.length;o++){var n,i=e[o],s=i.type;if(\"Point\"===s||\"MultiPoint\"===s||\"LineString\"===s)n=fe(i.geometry,t);else if(\"MultiLineString\"===s||\"Polygon\"===s){n=[];for(var a=0;a<i.geometry.length;a++)n.push(fe(i.geometry[a],t));}else if(\"MultiPolygon\"===s)for(n=[],a=0;a<i.geometry.length;a++){for(var l=[],u=0;u<i.geometry[a].length;u++)l.push(fe(i.geometry[a][u],t));n.push(l);}r.push(q(i.id,s,n,i.tags));}return r}function fe(e,t){var r=[];r.size=e.size,void 0!==e.start&&(r.start=e.start,r.end=e.end);for(var o=0;o<e.length;o+=3)r.push(e[o]+t,e[o+1],e[o+2]);return r}function pe(e,t){if(e.transformed)return e;var r,o,n,i=1<<e.z,s=e.x,a=e.y;for(r=0;r<e.features.length;r++){var l=e.features[r],u=l.geometry,h=l.type;if(l.geometry=[],1===h)for(o=0;o<u.length;o+=2)l.geometry.push(ge(u[o],u[o+1],t,i,s,a));else for(o=0;o<u.length;o++){var c=[];for(n=0;n<u[o].length;n+=2)c.push(ge(u[o][n],u[o][n+1],t,i,s,a));l.geometry.push(c);}}return e.transformed=!0,e}function ge(e,t,r,o,n,i){return [Math.round(r*(e*o-n)),Math.round(r*(t*o-i))]}function de(e,t,r,o,n){for(var i=t===n.maxZoom?0:n.tolerance/((1<<t)*n.extent),s={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:r,y:o,z:t,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0},a=0;a<e.length;a++){s.numFeatures++,me(s,e[a],i,n);var l=e[a].minX,u=e[a].minY,h=e[a].maxX,c=e[a].maxY;l<s.minX&&(s.minX=l),u<s.minY&&(s.minY=u),h>s.maxX&&(s.maxX=h),c>s.maxY&&(s.maxY=c);}return s}function me(e,t,r,o){var n=t.geometry,i=t.type,s=[];if(\"Point\"===i||\"MultiPoint\"===i)for(var a=0;a<n.length;a+=3)s.push(n[a]),s.push(n[a+1]),e.numPoints++,e.numSimplified++;else if(\"LineString\"===i)ye(s,n,e,r,!1,!1);else if(\"MultiLineString\"===i||\"Polygon\"===i)for(a=0;a<n.length;a++)ye(s,n[a],e,r,\"Polygon\"===i,0===a);else if(\"MultiPolygon\"===i)for(var l=0;l<n.length;l++){var u=n[l];for(a=0;a<u.length;a++)ye(s,u[a],e,r,!0,0===a);}if(s.length){var h=t.tags||null;if(\"LineString\"===i&&o.lineMetrics){for(var c in h={},t.tags)h[c]=t.tags[c];h.mapbox_clip_start=n.start/n.size,h.mapbox_clip_end=n.end/n.size;}var f={geometry:s,type:\"Polygon\"===i||\"MultiPolygon\"===i?3:\"LineString\"===i||\"MultiLineString\"===i?2:1,tags:h};null!==t.id&&(f.id=t.id),e.features.push(f);}}function ye(e,t,r,o,n,i){var s=o*o;if(o>0&&t.size<(n?s:o))r.numPoints+=t.length/3;else {for(var a=[],l=0;l<t.length;l+=3)(0===o||t[l+2]>s)&&(r.numSimplified++,a.push(t[l]),a.push(t[l+1])),r.numPoints++;n&&function(e,t){for(var r=0,o=0,n=e.length,i=n-2;o<n;i=o,o+=2)r+=(e[o]-e[i])*(e[o+1]+e[i+1]);if(r>0===t)for(o=0,n=e.length;o<n/2;o+=2){var s=e[o],a=e[o+1];e[o]=e[n-2-o],e[o+1]=e[n-1-o],e[n-2-o]=s,e[n-1-o]=a;}}(a,i),e.push(a);}}function ve(e,t){var r=(t=this.options=function(e,t){for(var r in t)e[r]=t[r];return e}(Object.create(this.options),t)).debug;if(r&&console.time(\"preprocess data\"),t.maxZoom<0||t.maxZoom>24)throw new Error(\"maxZoom should be in the 0-24 range\");if(t.promoteId&&t.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var o=function(e,t){var r=[];if(\"FeatureCollection\"===e.type)for(var o=0;o<e.features.length;o++)Q(r,e.features[o],t,o);else Q(r,\"Feature\"===e.type?e:{geometry:e},t);return r}(e,t);this.tiles={},this.tileCoords=[],r&&(console.timeEnd(\"preprocess data\"),console.log(\"index: maxZoom: %d, maxPoints: %d\",t.indexMaxZoom,t.indexMaxPoints),console.time(\"generate tiles\"),this.stats={},this.total=0),(o=function(e,t){var r=t.buffer/t.extent,o=e,n=oe(e,1,-1-r,r,0,-1,2,t),i=oe(e,1,1-r,2+r,0,-1,2,t);return (n||i)&&(o=oe(e,1,-r,1+r,0,-1,2,t)||[],n&&(o=ce(n,1).concat(o)),i&&(o=o.concat(ce(i,-1)))),o}(o,t)).length&&this.splitTile(o,0,0,0),r&&(o.length&&console.log(\"features: %d, points: %d\",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd(\"generate tiles\"),console.log(\"tiles generated:\",this.total,JSON.stringify(this.stats)));}function xe(e,t,r){return 32*((1<<e)*r+t)+e}function we(e,t){const r=e.tileID.canonical;if(!this._geoJSONIndex)return t(null,null);const o=this._geoJSONIndex.getTile(r.z,r.x,r.y);if(!o)return t(null,null);const n=new h(o.features);let i=d(n);0===i.byteOffset&&i.byteLength===i.buffer.byteLength||(i=new Uint8Array(i)),t(null,{vectorTile:n,rawData:i.buffer});}ve.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},ve.prototype.splitTile=function(e,t,r,o,n,i,s){for(var a=[e,t,r,o],l=this.options,u=l.debug;a.length;){o=a.pop(),r=a.pop(),t=a.pop(),e=a.pop();var h=1<<t,c=xe(t,r,o),f=this.tiles[c];if(!f&&(u>1&&console.time(\"creation\"),f=this.tiles[c]=de(e,t,r,o,l),this.tileCoords.push({z:t,x:r,y:o}),u)){u>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",t,r,o,f.numFeatures,f.numPoints,f.numSimplified),console.timeEnd(\"creation\"));var p=\"z\"+t;this.stats[p]=(this.stats[p]||0)+1,this.total++;}if(f.source=e,n){if(t===l.maxZoom||t===n)continue;var g=1<<n-t;if(r!==Math.floor(i/g)||o!==Math.floor(s/g))continue}else if(t===l.indexMaxZoom||f.numPoints<=l.indexMaxPoints)continue;if(f.source=null,0!==e.length){u>1&&console.time(\"clipping\");var d,m,y,v,x,w,S=.5*l.buffer/l.extent,M=.5-S,P=.5+S,b=1+S;d=m=y=v=null,x=oe(e,h,r-S,r+P,0,f.minX,f.maxX,l),w=oe(e,h,r+M,r+b,0,f.minX,f.maxX,l),e=null,x&&(d=oe(x,h,o-S,o+P,1,f.minY,f.maxY,l),m=oe(x,h,o+M,o+b,1,f.minY,f.maxY,l),x=null),w&&(y=oe(w,h,o-S,o+P,1,f.minY,f.maxY,l),v=oe(w,h,o+M,o+b,1,f.minY,f.maxY,l),w=null),u>1&&console.timeEnd(\"clipping\"),a.push(d||[],t+1,2*r,2*o),a.push(m||[],t+1,2*r,2*o+1),a.push(y||[],t+1,2*r+1,2*o),a.push(v||[],t+1,2*r+1,2*o+1);}}},ve.prototype.getTile=function(e,t,r){var o=this.options,n=o.extent,i=o.debug;if(e<0||e>24)return null;var s=1<<e,a=xe(e,t=(t%s+s)%s,r);if(this.tiles[a])return pe(this.tiles[a],n);i>1&&console.log(\"drilling down to z%d-%d-%d\",e,t,r);for(var l,u=e,h=t,c=r;!l&&u>0;)u--,h=Math.floor(h/2),c=Math.floor(c/2),l=this.tiles[xe(u,h,c)];return l&&l.source?(i>1&&console.log(\"found parent tile z%d-%d-%d\",u,h,c),i>1&&console.time(\"drilling down\"),this.splitTile(l.source,u,h,c,e,t,r),i>1&&console.timeEnd(\"drilling down\"),this.tiles[a]?pe(this.tiles[a],n):null):null};class Se extends e.VectorTileWorkerSource{constructor(e,t,r,o,n){super(e,t,r,o,we),n&&(this.loadGeoJSON=n);}loadData(t,r){const o=t&&t.request,n=o&&o.collectResourceTiming;this.loadGeoJSON(t,((s,a)=>{if(s||!a)return r(s);if(\"object\"!=typeof a)return r(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));{i(a,!0);try{if(t.filter){const r=e.createExpression(t.filter,{type:\"boolean\",\"property-type\":\"data-driven\",overridable:!1,transition:!1});if(\"error\"===r.result)throw new Error(r.value.map((e=>`${e.key}: ${e.message}`)).join(\", \"));const o=a.features.filter((e=>r.value.evaluate({zoom:0},e)));a={type:\"FeatureCollection\",features:o};}this._geoJSONIndex=t.cluster?new j(function({superclusterOptions:t,clusterProperties:r}){if(!r||!t)return t;const o={},n={},i={accumulated:null,zoom:0},s={properties:null},a=Object.keys(r);for(const t of a){const[i,s]=r[t],a=e.createExpression(s),l=e.createExpression(\"string\"==typeof i?[i,[\"accumulated\"],[\"get\",t]]:i);o[t]=a.value,n[t]=l.value;}return t.map=e=>{s.properties=e;const t={};for(const e of a)t[e]=o[e].evaluate(i,s);return t},t.reduce=(e,t)=>{s.properties=t;for(const t of a)i.accumulated=e[t],e[t]=n[t].evaluate(i,s);},t}(t)).load(a.features):function(e,t){return new ve(e,t)}(a,t.geojsonVtOptions);}catch(s){return r(s)}this.loaded={};const l={};if(n){const r=e.getPerformanceMeasurement(o);r&&(l.resourceTiming={},l.resourceTiming[t.source]=JSON.parse(JSON.stringify(r)));}r(null,l);}}));}reloadTile(e,t){const r=this.loaded;return r&&r[e.uid]?super.reloadTile(e,t):this.loadTile(e,t)}loadGeoJSON(t,r){if(t.request)e.getJSON(t.request,r);else {if(\"string\"!=typeof t.data)return r(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));try{return r(null,JSON.parse(t.data))}catch(e){return r(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`))}}}getClusterExpansionZoom(e,t){try{t(null,this._geoJSONIndex.getClusterExpansionZoom(e.clusterId));}catch(e){t(e);}}getClusterChildren(e,t){try{t(null,this._geoJSONIndex.getChildren(e.clusterId));}catch(e){t(e);}}getClusterLeaves(e,t){try{t(null,this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset));}catch(e){t(e);}}}class Me{constructor(t){this.self=t,this.actor=new e.Actor(t,this),this.layerIndexes={},this.availableImages={},this.isSpriteLoaded={},this.projections={},this.defaultProjection=e.getProjection({name:\"mercator\"}),this.workerSourceTypes={vector:e.VectorTileWorkerSource,geojson:Se},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(e,t)=>{if(this.workerSourceTypes[e])throw new Error(`Worker source with name \"${e}\" already registered.`);this.workerSourceTypes[e]=t;},this.self.registerRTLTextPlugin=t=>{if(e.plugin.isParsed())throw new Error(\"RTL text plugin already registered.\");e.plugin.applyArabicShaping=t.applyArabicShaping,e.plugin.processBidirectionalText=t.processBidirectionalText,e.plugin.processStyledBidirectionalText=t.processStyledBidirectionalText;};}clearCaches(e,t,r){delete this.layerIndexes[e],delete this.availableImages[e],delete this.workerSources[e],delete this.demWorkerSources[e],r();}checkIfReady(e,t,r){r();}setReferrer(e,t){this.referrer=t;}spriteLoaded(t,r){this.isSpriteLoaded[t]=r;for(const o in this.workerSources[t]){const n=this.workerSources[t][o];for(const t in n)n[t]instanceof e.VectorTileWorkerSource&&(n[t].isSpriteLoaded=r,n[t].fire(new e.Event(\"isSpriteLoaded\")));}}setImages(e,t,r){this.availableImages[e]=t;for(const r in this.workerSources[e]){const o=this.workerSources[e][r];for(const e in o)o[e].availableImages=t;}r();}enableTerrain(e,t,r){this.terrain=t,r();}setProjection(t,r){this.projections[t]=e.getProjection(r);}setLayers(e,t,r){this.getLayerIndex(e).replace(t),r();}updateLayers(e,t,r){this.getLayerIndex(e).update(t.layers,t.removedIds),r();}loadTile(t,r,o){const n=this.enableTerrain?e.extend({enableTerrain:this.terrain},r):r;n.projection=this.projections[t]||this.defaultProjection,this.getWorkerSource(t,r.type,r.source).loadTile(n,o);}loadDEMTile(t,r,o){const n=this.enableTerrain?e.extend({buildQuadTree:this.terrain},r):r;this.getDEMWorkerSource(t,r.source).loadTile(n,o);}reloadTile(t,r,o){const n=this.enableTerrain?e.extend({enableTerrain:this.terrain},r):r;n.projection=this.projections[t]||this.defaultProjection,this.getWorkerSource(t,r.type,r.source).reloadTile(n,o);}abortTile(e,t,r){this.getWorkerSource(e,t.type,t.source).abortTile(t,r);}removeTile(e,t,r){this.getWorkerSource(e,t.type,t.source).removeTile(t,r);}removeSource(e,t,r){if(!this.workerSources[e]||!this.workerSources[e][t.type]||!this.workerSources[e][t.type][t.source])return;const o=this.workerSources[e][t.type][t.source];delete this.workerSources[e][t.type][t.source],void 0!==o.removeSource?o.removeSource(t,r):r();}loadWorkerSource(e,t,r){try{this.self.importScripts(t.url),r();}catch(e){r(e.toString());}}syncRTLPluginState(t,r,o){try{e.plugin.setState(r);const t=e.plugin.getPluginURL();if(e.plugin.isLoaded()&&!e.plugin.isParsed()&&null!=t){this.self.importScripts(t);const r=e.plugin.isParsed();o(r?void 0:new Error(`RTL Text Plugin failed to import scripts from ${t}`),r);}}catch(e){o(e.toString());}}getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}getLayerIndex(e){let t=this.layerIndexes[e];return t||(t=this.layerIndexes[e]=new o),t}getWorkerSource(e,t,r){return this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),this.workerSources[e][t][r]||(this.workerSources[e][t][r]=new this.workerSourceTypes[t]({send:(t,r,o,n,i,s)=>{this.actor.send(t,r,o,e,i,s);},scheduler:this.actor.scheduler},this.getLayerIndex(e),this.getAvailableImages(e),this.isSpriteLoaded[e])),this.workerSources[e][t][r]}getDEMWorkerSource(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new n),this.demWorkerSources[e][t]}enforceCacheSizeLimit(t,r){e.enforceCacheSizeLimit(r);}getWorkerPerformanceMetrics(e,t,r){r(void 0,void 0);}}return \"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof self&&self instanceof WorkerGlobalScope&&(self.worker=new Me(self)),Me}));\n\ndefine([\"./shared\"],(function(e){\"use strict\";function t(e,i){if(Array.isArray(e)){if(!Array.isArray(i)||e.length!==i.length)return !1;for(let o=0;o<e.length;o++)if(!t(e[o],i[o]))return !1;return !0}if(\"object\"==typeof e&&null!==e&&null!==i){if(\"object\"!=typeof i)return !1;if(Object.keys(e).length!==Object.keys(i).length)return !1;for(const o in e)if(!t(e[o],i[o]))return !1;return !0}return e===i}var i=o;function o(e){return !function(e){return \"undefined\"==typeof window||\"undefined\"==typeof document?\"not a browser\":Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray?Function.prototype&&Function.prototype.bind?Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions?\"JSON\"in window&&\"parse\"in JSON&&\"stringify\"in JSON?function(){if(!(\"Worker\"in window&&\"Blob\"in window&&\"URL\"in window))return !1;var e,t,i=new Blob([\"\"],{type:\"text/javascript\"}),o=URL.createObjectURL(i);try{t=new Worker(o),e=!0;}catch(t){e=!1;}return t&&t.terminate(),URL.revokeObjectURL(o),e}()?\"Uint8ClampedArray\"in window?ArrayBuffer.isView?function(){var e=document.createElement(\"canvas\");e.width=e.height=1;var t=e.getContext(\"2d\");if(!t)return !1;var i=t.getImageData(0,0,1,1);return i&&i.width===e.width}()?(void 0===r[t=e&&e.failIfMajorPerformanceCaveat]&&(r[t]=function(e){var t,i=function(e){var t=document.createElement(\"canvas\"),i=Object.create(o.webGLContextAttributes);return i.failIfMajorPerformanceCaveat=e,t.getContext(\"webgl\",i)||t.getContext(\"experimental-webgl\",i)}(e);if(!i)return !1;try{t=i.createShader(i.VERTEX_SHADER);}catch(e){return !1}return !(!t||i.isContextLost())&&(i.shaderSource(t,\"void main() {}\"),i.compileShader(t),!0===i.getShaderParameter(t,i.COMPILE_STATUS))}(t)),r[t]?document.documentMode?\"insufficient ECMAScript 6 support\":void 0:\"insufficient WebGL support\"):\"insufficient Canvas/getImageData support\":\"insufficient ArrayBuffer support\":\"insufficient Uint8ClampedArray support\":\"insufficient worker support\":\"insufficient JSON support\":\"insufficient Object support\":\"insufficient Function support\":\"insufficent Array support\";var t;}(e)}var r={};function n(t,i,o){const r=e.window.document.createElement(t);return void 0!==i&&(r.className=i),o&&o.appendChild(r),r}function a(t,i,o){const r=e.window.document.createElementNS(\"http://www.w3.org/2000/svg\",t);for(const e of Object.keys(i))r.setAttributeNS(null,e,i[e]);return o&&o.appendChild(r),r}o.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0};const s=e.window.document&&e.window.document.documentElement.style,l=s&&void 0!==s.userSelect?\"userSelect\":\"WebkitUserSelect\";let c;function h(){s&&l&&(c=s[l],s[l]=\"none\");}function u(){s&&l&&(s[l]=c);}function _(t){t.preventDefault(),t.stopPropagation(),e.window.removeEventListener(\"click\",_,!0);}function d(){e.window.addEventListener(\"click\",_,!0),e.window.setTimeout((()=>{e.window.removeEventListener(\"click\",_,!0);}),0);}function p(e,t){const i=e.getBoundingClientRect();return g(e,i,t)}function m(e,t){const i=e.getBoundingClientRect(),o=[];for(let r=0;r<t.length;r++)o.push(g(e,i,t[r]));return o}function f(t){return void 0!==e.window.InstallTrigger&&2===t.button&&t.ctrlKey&&e.window.navigator.platform.toUpperCase().indexOf(\"MAC\")>=0?0:t.button}function g(t,i,o){const r=t.offsetWidth===i.width?1:t.offsetWidth/i.width;return new e.pointGeometry((o.clientX-i.left)*r,(o.clientY-i.top)*r)}function v(e,t){var i=t[0],o=t[1],r=t[2],n=t[3],a=i*n-r*o;return a?(e[0]=n*(a=1/a),e[1]=-o*a,e[2]=-r*a,e[3]=i*a,e):null}function x(e){const{userImage:t}=e;return !!(t&&t.render&&t.render())&&(e.data.replace(new Uint8Array(t.data.buffer)),!0)}class y extends e.Evented{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new e.RGBAImage({width:1,height:1}),this.dirty=!0;}isLoaded(){return this.loaded}setLoaded(e){if(this.loaded!==e&&(this.loaded=e,e)){for(const{ids:e,callback:t}of this.requestors)this._notify(e,t);this.requestors=[];}}hasImage(e){return !!this.getImage(e)}getImage(e){return this.images[e]}addImage(e,t){this._validate(e,t)&&(this.images[e]=t);}_validate(t,i){let o=!0;return this._validateStretch(i.stretchX,i.data&&i.data.width)||(this.fire(new e.ErrorEvent(new Error(`Image \"${t}\" has invalid \"stretchX\" value`))),o=!1),this._validateStretch(i.stretchY,i.data&&i.data.height)||(this.fire(new e.ErrorEvent(new Error(`Image \"${t}\" has invalid \"stretchY\" value`))),o=!1),this._validateContent(i.content,i)||(this.fire(new e.ErrorEvent(new Error(`Image \"${t}\" has invalid \"content\" value`))),o=!1),o}_validateStretch(e,t){if(!e)return !0;let i=0;for(const o of e){if(o[0]<i||o[1]<o[0]||t<o[1])return !1;i=o[1];}return !0}_validateContent(e,t){return !(e&&(4!==e.length||e[0]<0||t.data.width<e[0]||e[1]<0||t.data.height<e[1]||e[2]<0||t.data.width<e[2]||e[3]<0||t.data.height<e[3]||e[2]<e[0]||e[3]<e[1]))}updateImage(e,t){t.version=this.images[e].version+1,this.images[e]=t,this.updatedImages[e]=!0;}removeImage(e){const t=this.images[e];delete this.images[e],delete this.patterns[e],t.userImage&&t.userImage.onRemove&&t.userImage.onRemove();}listImages(){return Object.keys(this.images)}getImages(e,t){let i=!0;if(!this.isLoaded())for(const t of e)this.images[t]||(i=!1);this.isLoaded()||i?this._notify(e,t):this.requestors.push({ids:e,callback:t});}_notify(t,i){const o={};for(const i of t){this.images[i]||this.fire(new e.Event(\"styleimagemissing\",{id:i}));const t=this.images[i];t?o[i]={data:t.data.clone(),pixelRatio:t.pixelRatio,sdf:t.sdf,version:t.version,stretchX:t.stretchX,stretchY:t.stretchY,content:t.content,hasRenderCallback:Boolean(t.userImage&&t.userImage.render)}:e.warnOnce(`Image \"${i}\" could not be loaded. Please make sure you have added the image with map.addImage() or a \"sprite\" property in your style. You can provide missing images by listening for the \"styleimagemissing\" map event.`);}i(null,o);}getPixelSize(){const{width:e,height:t}=this.atlasImage;return {width:e,height:t}}getPattern(t){const i=this.patterns[t],o=this.getImage(t);if(!o)return null;if(i&&i.position.version===o.version)return i.position;if(i)i.position.version=o.version;else {const i={w:o.data.width+2,h:o.data.height+2,x:0,y:0},r=new e.ImagePosition(i,o);this.patterns[t]={bin:i,position:r};}return this._updatePatternAtlas(),this.patterns[t].position}bind(t){const i=t.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new e.Texture(t,this.atlasImage,i.RGBA),this.atlasTexture.bind(i.LINEAR,i.CLAMP_TO_EDGE);}_updatePatternAtlas(){const t=[];for(const e in this.patterns)t.push(this.patterns[e].bin);const{w:i,h:o}=e.potpack(t),r=this.atlasImage;r.resize({width:i||1,height:o||1});for(const t in this.patterns){const{bin:i}=this.patterns[t],o=i.x+1,n=i.y+1,a=this.images[t].data,s=a.width,l=a.height;e.RGBAImage.copy(a,r,{x:0,y:0},{x:o,y:n},{width:s,height:l}),e.RGBAImage.copy(a,r,{x:0,y:l-1},{x:o,y:n-1},{width:s,height:1}),e.RGBAImage.copy(a,r,{x:0,y:0},{x:o,y:n+l},{width:s,height:1}),e.RGBAImage.copy(a,r,{x:s-1,y:0},{x:o-1,y:n},{width:1,height:l}),e.RGBAImage.copy(a,r,{x:0,y:0},{x:o+s,y:n},{width:1,height:l});}this.dirty=!0;}beginFrame(){this.callbackDispatchedThisFrame={};}dispatchRenderCallbacks(e){for(const t of e){if(this.callbackDispatchedThisFrame[t])continue;this.callbackDispatchedThisFrame[t]=!0;const e=this.images[t];x(e)&&this.updateImage(t,e);}}}const b=new e.Properties({anchor:new e.DataConstantProperty(e.spec.light.anchor),position:new class{constructor(){this.specification=e.spec.light.position;}possiblyEvaluate(t,i){return function([t,i,o]){const r=e.degToRad(i+90),n=e.degToRad(o);return {x:t*Math.cos(r)*Math.sin(n),y:t*Math.sin(r)*Math.sin(n),z:t*Math.cos(n),azimuthal:i,polar:o}}(t.expression.evaluate(i))}interpolate(t,i,o){return {x:e.number(t.x,i.x,o),y:e.number(t.y,i.y,o),z:e.number(t.z,i.z,o),azimuthal:e.number(t.azimuthal,i.azimuthal,o),polar:e.number(t.polar,i.polar,o)}}},color:new e.DataConstantProperty(e.spec.light.color),intensity:new e.DataConstantProperty(e.spec.light.intensity)}),w=\"-transition\";class T extends e.Evented{constructor(t){super(),this._transitionable=new e.Transitionable(b),this.setLight(t),this._transitioning=this._transitionable.untransitioned();}getLight(){return this._transitionable.serialize()}setLight(t,i={}){if(!this._validate(e.validateLight,t,i))for(const i in t){const o=t[i];e.endsWith(i,w)?this._transitionable.setTransition(i.slice(0,-w.length),o):this._transitionable.setValue(i,o);}}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}_validate(t,i,o){return (!o||!1!==o.validate)&&e.emitValidationErrors(this,t.call(e.validateStyle,e.extend({value:i,style:{glyphs:!0,sprite:!0},styleSpec:e.spec})))}}const E=new e.Properties({source:new e.DataConstantProperty(e.spec.terrain.source),exaggeration:new e.DataConstantProperty(e.spec.terrain.exaggeration)}),C=\"-transition\";class I extends e.Evented{constructor(t,i){super(),this._transitionable=new e.Transitionable(E),this.set(t),this._transitioning=this._transitionable.untransitioned(),this.drapeRenderMode=i;}get(){return this._transitionable.serialize()}set(t){for(const i in t){const o=t[i];e.endsWith(i,C)?this._transitionable.setTransition(i.slice(0,-C.length),o):this._transitionable.setValue(i,o);}}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}}function M(t,i,o,r){const n=e.smoothstep(45,65,o),[a,s]=S(t,r),l=e.length(i);let c=1-Math.min(1,Math.exp((l-a)/(s-a)*-6));return c*=c*c,c=Math.min(1,1.00747*c),c*n*t.alpha}function S(e,t){const i=.5/Math.tan(.5*t);return [e.range[0]+i,e.range[1]+i]}const z=new e.Properties({range:new e.DataConstantProperty(e.spec.fog.range),color:new e.DataConstantProperty(e.spec.fog.color),\"high-color\":new e.DataConstantProperty(e.spec.fog[\"high-color\"]),\"space-color\":new e.DataConstantProperty(e.spec.fog[\"space-color\"]),\"horizon-blend\":new e.DataConstantProperty(e.spec.fog[\"horizon-blend\"]),\"star-intensity\":new e.DataConstantProperty(e.spec.fog[\"star-intensity\"])}),D=\"-transition\";class P extends e.Evented{constructor(t,i){super(),this._transitionable=new e.Transitionable(z),this.set(t),this._transitioning=this._transitionable.untransitioned(),this._transform=i;}get state(){const t=this._transform,i=\"globe\"===t.projection.name,o=e.globeToMercatorTransition(t.zoom),r=this.properties.get(\"range\"),n=[.5,3];return {range:i?[e.number(n[0],r[0],o),e.number(n[1],r[1],o)]:r,horizonBlend:this.properties.get(\"horizon-blend\"),alpha:this.properties.get(\"color\").a}}get(){return this._transitionable.serialize()}set(t,i={}){if(!this._validate(e.validateFog,t,i)){for(const i of Object.keys(e.spec.fog))t&&void 0===t[i]&&(t[i]=e.spec.fog[i].default);for(const i in t){const o=t[i];e.endsWith(i,D)?this._transitionable.setTransition(i.slice(0,-D.length),o):this._transitionable.setValue(i,o);}}}getOpacity(t){if(!this._transform.projection.supportsFog)return 0;const i=this.properties&&this.properties.get(\"color\")||1;return (\"globe\"===this._transform.projection.name?1:e.smoothstep(45,65,t))*i.a}getOpacityAtLatLng(t,i){return this._transform.projection.supportsFog?function(t,i,o){const r=e.MercatorCoordinate.fromLngLat(i),n=o.elevation?o.elevation.getAtPointOrZero(r):0,a=[r.x,r.y,n];return e.transformMat4(a,a,o.mercatorFogMatrix),M(t,a,o.pitch,o._fov)}(this.state,t,i):0}getFovAdjustedRange(e){return this._transform.projection.supportsFog?S(this.state,e):[0,1]}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e);}_validate(t,i,o){return (!o||!1!==o.validate)&&e.emitValidationErrors(this,t.call(e.validateStyle,e.extend({value:i,style:{glyphs:!0,sprite:!0},styleSpec:e.spec})))}}class A{constructor(t,i){this.workerPool=t,this.actors=[],this.currentActor=0,this.id=e.uniqueId();const o=this.workerPool.acquire(this.id);for(let e=0;e<o.length;e++){const t=new A.Actor(o[e],i,this.id);t.name=`Worker ${e}`,this.actors.push(t);}this.ready=!1,this.broadcast(\"checkIfReady\",null,(()=>{this.ready=!0;}));}broadcast(t,i,o){e.asyncAll(this.actors,((e,o)=>{e.send(t,i,o);}),o=o||function(){});}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(){this.actors.forEach((e=>{e.remove();})),this.actors=[],this.workerPool.release(this.id);}}function L(t,i,o){return i*(e.EXTENT/(t.tileSize*Math.pow(2,o-t.tileID.overscaledZ)))}A.Actor=e.Actor;class R{constructor(e,t,i,o){this.screenBounds=e,this.cameraPoint=t,this._screenRaycastCache={},this._cameraRaycastCache={},this.isAboveHorizon=i,this.screenGeometry=this.bufferedScreenGeometry(0),this.screenGeometryMercator=this._bufferedScreenMercator(0,o);}static createFromScreenPoints(t,i){let o,r;if(t instanceof e.pointGeometry||\"number\"==typeof t[0]){const n=e.pointGeometry.convert(t);o=[e.pointGeometry.convert(t)],r=i.isPointAboveHorizon(n);}else {const n=e.pointGeometry.convert(t[0]),a=e.pointGeometry.convert(t[1]);o=[n,a],r=e.polygonizeBounds(n,a).every((e=>i.isPointAboveHorizon(e)));}return new R(o,i.getCameraPoint(),r,i)}isPointQuery(){return 1===this.screenBounds.length}bufferedScreenGeometry(t){return e.polygonizeBounds(this.screenBounds[0],1===this.screenBounds.length?this.screenBounds[0]:this.screenBounds[1],t)}bufferedCameraGeometry(t){const i=this.screenBounds[0],o=1===this.screenBounds.length?this.screenBounds[0].add(new e.pointGeometry(1,1)):this.screenBounds[1],r=e.polygonizeBounds(i,o,0,!1);return this.cameraPoint.y>o.y&&(this.cameraPoint.x>i.x&&this.cameraPoint.x<o.x?r.splice(3,0,this.cameraPoint):this.cameraPoint.x>=o.x?r[2]=this.cameraPoint:this.cameraPoint.x<=i.x&&(r[3]=this.cameraPoint)),e.bufferConvexPolygon(r,t)}bufferedCameraGeometryGlobe(t){const i=this.screenBounds[0],o=1===this.screenBounds.length?this.screenBounds[0].add(new e.pointGeometry(1,1)):this.screenBounds[1],r=e.polygonizeBounds(i,o,t),n=this.cameraPoint.clone();switch(3*((n.y>i.y)+(n.y>o.y))+((n.x>i.x)+(n.x>o.x))){case 0:r[0]=n,r[4]=n.clone();break;case 1:r.splice(1,0,n);break;case 2:r[1]=n;break;case 3:r.splice(4,0,n);break;case 5:r.splice(2,0,n);break;case 6:r[3]=n;break;case 7:r.splice(3,0,n);break;case 8:r[2]=n;}return r}containsTile(t,i,o,r=0){const n=t.queryPadding/i._pixelsPerMercatorPixel+1,a=o?this._bufferedCameraMercator(n,i):this._bufferedScreenMercator(n,i);let s=t.tileID.wrap+(a.unwrapped?r:0);const l=a.polygon.map((i=>e.getTilePoint(t.tileTransform,i,s)));if(!e.polygonIntersectsBox(l,0,0,e.EXTENT,e.EXTENT))return;s=t.tileID.wrap+(this.screenGeometryMercator.unwrapped?r:0);const c=this.screenGeometryMercator.polygon.map((i=>e.getTileVec3(t.tileTransform,i,s))),h=c.map((t=>new e.pointGeometry(t[0],t[1]))),u=i.getFreeCameraOptions().position||new e.MercatorCoordinate(0,0,0),_=e.getTileVec3(t.tileTransform,u,s),d=c.map((t=>{const i=e.sub(t,t,_);return e.normalize(i,i),new e.Ray(_,i)})),p=L(t,1,i.zoom)*i._pixelsPerMercatorPixel;return {queryGeometry:this,tilespaceGeometry:h,tilespaceRays:d,bufferedTilespaceGeometry:l,bufferedTilespaceBounds:(m=e.getBounds(l),m.min.x=e.clamp(m.min.x,0,e.EXTENT),m.min.y=e.clamp(m.min.y,0,e.EXTENT),m.max.x=e.clamp(m.max.x,0,e.EXTENT),m.max.y=e.clamp(m.max.y,0,e.EXTENT),m),tile:t,tileID:t.tileID,pixelToTileUnitsFactor:p};var m;}_bufferedScreenMercator(e,t){const i=k(e);if(this._screenRaycastCache[i])return this._screenRaycastCache[i];{let o;return o=\"globe\"===t.projection.name?this._projectAndResample(this.bufferedScreenGeometry(e),t):{polygon:this.bufferedScreenGeometry(e).map((e=>t.pointCoordinate3D(e))),unwrapped:!0},this._screenRaycastCache[i]=o,o}}_bufferedCameraMercator(e,t){const i=k(e);if(this._cameraRaycastCache[i])return this._cameraRaycastCache[i];{let o;return o=\"globe\"===t.projection.name?this._projectAndResample(this.bufferedCameraGeometryGlobe(e),t):{polygon:this.bufferedCameraGeometry(e).map((e=>t.pointCoordinate3D(e))),unwrapped:!0},this._cameraRaycastCache[i]=o,o}}_projectAndResample(t,i){const o=function(t,i){const o=e.multiply([],i.pixelMatrix,i.globeMatrix),r=[0,-e.GLOBE_RADIUS,0,1],n=[0,e.GLOBE_RADIUS,0,1],a=[0,0,0,1];e.transformMat4$1(r,r,o),e.transformMat4$1(n,n,o),e.transformMat4$1(a,a,o);const s=new e.pointGeometry(r[0]/r[3],r[1]/r[3]),l=new e.pointGeometry(n[0]/n[3],n[1]/n[3]),c=e.polygonContainsPoint(t,s)&&r[3]<a[3],h=e.polygonContainsPoint(t,l)&&n[3]<a[3];if(!c&&!h)return null;const u=function(e,t,i){for(let o=1;o<e.length;o++){const r=B(t.pointCoordinate3D(e[o-1]).x),n=B(t.pointCoordinate3D(e[o]).x);if(i<0){if(r<n)return {idx:o,t:-r/(n-1-r)}}else if(n<r)return {idx:o,t:(1-r)/(n+1-r)}}return null}(t,i,c?-1:1);if(!u)return null;const{idx:_,t:d}=u;let p=_>1?O(t.slice(0,_),i):[],m=_<t.length?O(t.slice(_),i):[];p=p.map((t=>new e.pointGeometry(B(t.x),t.y))),m=m.map((t=>new e.pointGeometry(B(t.x),t.y)));const f=[...p];0===f.length&&f.push(m[m.length-1]);const g=e.number(f[f.length-1].y,(0===m.length?p[0]:m[0]).y,d);let v;return v=c?[new e.pointGeometry(0,g),new e.pointGeometry(0,0),new e.pointGeometry(1,0),new e.pointGeometry(1,g)]:[new e.pointGeometry(1,g),new e.pointGeometry(1,1),new e.pointGeometry(0,1),new e.pointGeometry(0,g)],f.push(...v),0===m.length?f.push(p[0]):f.push(...m),{polygon:f.map((t=>new e.MercatorCoordinate(t.x,t.y))),unwrapped:!1}}(t,i);if(o)return o;const r=function(t,i){let o=!1,r=-1/0,n=0;for(let e=0;e<t.length-1;e++)t[e].x>r&&(r=t[e].x,n=e);for(let e=0;e<t.length-1;e++){const i=(n+e)%(t.length-1),r=t[i],a=t[i+1];Math.abs(r.x-a.x)>.5&&(r.x<a.x?(r.x+=1,0===i&&(t[t.length-1].x+=1)):(a.x+=1,i+1===t.length-1&&(t[0].x+=1)),o=!0);}const a=e.mercatorXfromLng(i.center.lng);return o&&a<Math.abs(a-1)&&t.forEach((e=>{e.x-=1;})),{polygon:t,unwrapped:o}}(O(t,i).map((t=>new e.pointGeometry(B(t.x),t.y))),i);return {polygon:r.polygon.map((t=>new e.MercatorCoordinate(t.x,t.y))),unwrapped:r.unwrapped}}}function O(t,i){return e.resample(t,(e=>{const t=i.pointCoordinate3D(e);e.x=t.x,e.y=t.y;}),1/256)}function B(e){return e<0?1+e%1:e%1}function k(e){return 100*e|0}function F(t,i,o,r,n){const a=function(o,r){if(o)return n(o);if(r){const o=e.pick(e.extend(r,t),[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"mapbox_logo\",\"bounds\",\"scheme\",\"tileSize\",\"encoding\"]);r.vector_layers&&(o.vectorLayers=r.vector_layers,o.vectorLayerIds=o.vectorLayers.map((e=>e.id))),r.language_options&&(o.languageOptions=r.language_options),r.language&&r.language[r.id]&&(o.language=r.language[r.id]),r.worldview_options&&(o.worldviewOptions=r.worldview_options),r.worldview?o.worldview=r.worldview[r.id]:r.worldview_default&&(o.worldview=r.worldview_default),o.tiles=i.canonicalizeTileset(o,t.url),n(null,o);}};return t.url?e.getJSON(i.transformRequest(i.normalizeSourceURL(t.url,null,o,r),e.ResourceType.Source),a):e.exported.frame((()=>a(null,t)))}class U{constructor(t,i,o){this.bounds=e.LngLatBounds.convert(this.validateBounds(t)),this.minzoom=i||0,this.maxzoom=o||24;}validateBounds(e){return Array.isArray(e)&&4===e.length?[Math.max(-180,e[0]),Math.max(-90,e[1]),Math.min(180,e[2]),Math.min(90,e[3])]:[-180,-90,180,90]}contains(t){const i=Math.pow(2,t.z),o=Math.floor(e.mercatorXfromLng(this.bounds.getWest())*i),r=Math.floor(e.mercatorYfromLat(this.bounds.getNorth())*i),n=Math.ceil(e.mercatorXfromLng(this.bounds.getEast())*i),a=Math.ceil(e.mercatorYfromLat(this.bounds.getSouth())*i);return t.x>=o&&t.x<n&&t.y>=r&&t.y<a}}class N{constructor(e,t,i){this.context=e;const o=e.gl;this.buffer=o.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),e.bindElementBuffer.set(this.buffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?o.DYNAMIC_DRAW:o.STATIC_DRAW),this.dynamicDraw||t.destroy();}bind(){this.context.bindElementBuffer.set(this.buffer);}updateData(e){const t=this.context.gl;this.context.unbindVAO(),this.bind(),t.bufferSubData(t.ELEMENT_ARRAY_BUFFER,0,e.arrayBuffer);}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}const G={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"};class j{constructor(e,t,i,o){this.length=t.length,this.attributes=i,this.itemSize=t.bytesPerElement,this.dynamicDraw=o,this.context=e;const r=e.gl;this.buffer=r.createBuffer(),e.bindVertexBuffer.set(this.buffer),r.bufferData(r.ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?r.DYNAMIC_DRAW:r.STATIC_DRAW),this.dynamicDraw||t.destroy();}bind(){this.context.bindVertexBuffer.set(this.buffer);}updateData(e){const t=this.context.gl;this.bind(),t.bufferSubData(t.ARRAY_BUFFER,0,e.arrayBuffer);}enableAttributes(e,t){for(let i=0;i<this.attributes.length;i++){const o=t.attributes[this.attributes[i].name];void 0!==o&&e.enableVertexAttribArray(o);}}setVertexAttribPointers(e,t,i){for(let o=0;o<this.attributes.length;o++){const r=this.attributes[o],n=t.attributes[r.name];void 0!==n&&e.vertexAttribPointer(n,r.components,e[G[r.type]],!1,this.itemSize,r.offset+this.itemSize*(i||0));}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}class Z{constructor(e){this.gl=e.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1;}get(){return this.current}set(e){}getDefault(){return this.default}setDefault(){this.set(this.default);}}class V extends Z{getDefault(){return e.Color.transparent}set(e){const t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.clearColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1);}}class W extends Z{getDefault(){return 1}set(e){(e!==this.current||this.dirty)&&(this.gl.clearDepth(e),this.current=e,this.dirty=!1);}}class X extends Z{getDefault(){return 0}set(e){(e!==this.current||this.dirty)&&(this.gl.clearStencil(e),this.current=e,this.dirty=!1);}}class q extends Z{getDefault(){return [!0,!0,!0,!0]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.colorMask(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1);}}class $ extends Z{getDefault(){return !0}set(e){(e!==this.current||this.dirty)&&(this.gl.depthMask(e),this.current=e,this.dirty=!1);}}class H extends Z{getDefault(){return 255}set(e){(e!==this.current||this.dirty)&&(this.gl.stencilMask(e),this.current=e,this.dirty=!1);}}class Y extends Z{getDefault(){return {func:this.gl.ALWAYS,ref:0,mask:255}}set(e){const t=this.current;(e.func!==t.func||e.ref!==t.ref||e.mask!==t.mask||this.dirty)&&(this.gl.stencilFunc(e.func,e.ref,e.mask),this.current=e,this.dirty=!1);}}class K extends Z{getDefault(){const e=this.gl;return [e.KEEP,e.KEEP,e.KEEP]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||this.dirty)&&(this.gl.stencilOp(e[0],e[1],e[2]),this.current=e,this.dirty=!1);}}class J extends Z{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.STENCIL_TEST):t.disable(t.STENCIL_TEST),this.current=e,this.dirty=!1;}}class Q extends Z{getDefault(){return [0,1]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.depthRange(e[0],e[1]),this.current=e,this.dirty=!1);}}class ee extends Z{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.DEPTH_TEST):t.disable(t.DEPTH_TEST),this.current=e,this.dirty=!1;}}class te extends Z{getDefault(){return this.gl.LESS}set(e){(e!==this.current||this.dirty)&&(this.gl.depthFunc(e),this.current=e,this.dirty=!1);}}class ie extends Z{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.BLEND):t.disable(t.BLEND),this.current=e,this.dirty=!1;}}class oe extends Z{getDefault(){const e=this.gl;return [e.ONE,e.ZERO]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.blendFunc(e[0],e[1]),this.current=e,this.dirty=!1);}}class re extends Z{getDefault(){return e.Color.transparent}set(e){const t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.blendColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1);}}class ne extends Z{getDefault(){return this.gl.FUNC_ADD}set(e){(e!==this.current||this.dirty)&&(this.gl.blendEquation(e),this.current=e,this.dirty=!1);}}class ae extends Z{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.CULL_FACE):t.disable(t.CULL_FACE),this.current=e,this.dirty=!1;}}class se extends Z{getDefault(){return this.gl.BACK}set(e){(e!==this.current||this.dirty)&&(this.gl.cullFace(e),this.current=e,this.dirty=!1);}}class le extends Z{getDefault(){return this.gl.CCW}set(e){(e!==this.current||this.dirty)&&(this.gl.frontFace(e),this.current=e,this.dirty=!1);}}class ce extends Z{getDefault(){return null}set(e){(e!==this.current||this.dirty)&&(this.gl.useProgram(e),this.current=e,this.dirty=!1);}}class he extends Z{getDefault(){return this.gl.TEXTURE0}set(e){(e!==this.current||this.dirty)&&(this.gl.activeTexture(e),this.current=e,this.dirty=!1);}}class ue extends Z{getDefault(){const e=this.gl;return [0,0,e.drawingBufferWidth,e.drawingBufferHeight]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.viewport(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1);}}class _e extends Z{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,e),this.current=e,this.dirty=!1;}}class de extends Z{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindRenderbuffer(t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}class pe extends Z{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindTexture(t.TEXTURE_2D,e),this.current=e,this.dirty=!1;}}class me extends Z{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindBuffer(t.ARRAY_BUFFER,e),this.current=e,this.dirty=!1;}}class fe extends Z{getDefault(){return null}set(e){const t=this.gl;t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,e),this.current=e,this.dirty=!1;}}class ge extends Z{constructor(e){super(e),this.vao=e.extVertexArrayObject;}getDefault(){return null}set(e){this.vao&&(e!==this.current||this.dirty)&&(this.vao.bindVertexArrayOES(e),this.current=e,this.dirty=!1);}}class ve extends Z{getDefault(){return 4}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_ALIGNMENT,e),this.current=e,this.dirty=!1;}}class xe extends Z{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e),this.current=e,this.dirty=!1;}}class ye extends Z{getDefault(){return !1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,e),this.current=e,this.dirty=!1;}}class be extends Z{constructor(e,t){super(e),this.context=e,this.parent=t;}getDefault(){return null}}class we extends be{setDirty(){this.dirty=!0;}set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),this.current=e,this.dirty=!1;}}class Te extends be{attachment(){return this.gl.DEPTH_ATTACHMENT}set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferRenderbuffer(t.FRAMEBUFFER,this.attachment(),t.RENDERBUFFER,e),this.current=e,this.dirty=!1;}}class Ee extends Te{attachment(){return this.gl.DEPTH_STENCIL_ATTACHMENT}}class Ce{constructor(e,t,i,o){this.context=e,this.width=t,this.height=i;const r=this.framebuffer=e.gl.createFramebuffer();this.colorAttachment=new we(e,r),o&&(this.depthAttachment=new Te(e,r));}destroy(){const e=this.context.gl,t=this.colorAttachment.get();if(t&&e.deleteTexture(t),this.depthAttachment){const t=this.depthAttachment.get();t&&e.deleteRenderbuffer(t);}e.deleteFramebuffer(this.framebuffer);}}class Ie{constructor(e){this.gl=e,this.extVertexArrayObject=this.gl.getExtension(\"OES_vertex_array_object\"),this.clearColor=new V(this),this.clearDepth=new W(this),this.clearStencil=new X(this),this.colorMask=new q(this),this.depthMask=new $(this),this.stencilMask=new H(this),this.stencilFunc=new Y(this),this.stencilOp=new K(this),this.stencilTest=new J(this),this.depthRange=new Q(this),this.depthTest=new ee(this),this.depthFunc=new te(this),this.blend=new ie(this),this.blendFunc=new oe(this),this.blendColor=new re(this),this.blendEquation=new ne(this),this.cullFace=new ae(this),this.cullFaceSide=new se(this),this.frontFace=new le(this),this.program=new ce(this),this.activeTexture=new he(this),this.viewport=new ue(this),this.bindFramebuffer=new _e(this),this.bindRenderbuffer=new de(this),this.bindTexture=new pe(this),this.bindVertexBuffer=new me(this),this.bindElementBuffer=new fe(this),this.bindVertexArrayOES=this.extVertexArrayObject&&new ge(this),this.pixelStoreUnpack=new ve(this),this.pixelStoreUnpackPremultiplyAlpha=new xe(this),this.pixelStoreUnpackFlipY=new ye(this),this.extTextureFilterAnisotropic=e.getExtension(\"EXT_texture_filter_anisotropic\")||e.getExtension(\"MOZ_EXT_texture_filter_anisotropic\")||e.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=e.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.extTextureFilterAnisotropicForceOff=!1,this.extStandardDerivativesForceOff=!1,this.extTextureHalfFloat=e.getExtension(\"OES_texture_half_float\"),this.extTextureHalfFloat&&(e.getExtension(\"OES_texture_half_float_linear\"),this.extRenderToTextureHalfFloat=e.getExtension(\"EXT_color_buffer_half_float\")),this.extStandardDerivatives=e.getExtension(\"OES_standard_derivatives\"),this.extTimerQuery=e.getExtension(\"EXT_disjoint_timer_query\"),this.maxTextureSize=e.getParameter(e.MAX_TEXTURE_SIZE);}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault();}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.extVertexArrayObject&&(this.bindVertexArrayOES.dirty=!0),this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0;}createIndexBuffer(e,t){return new N(this,e,t)}createVertexBuffer(e,t,i){return new j(this,e,t,i)}createRenderbuffer(e,t,i){const o=this.gl,r=o.createRenderbuffer();return this.bindRenderbuffer.set(r),o.renderbufferStorage(o.RENDERBUFFER,e,t,i),this.bindRenderbuffer.set(null),r}createFramebuffer(e,t,i){return new Ce(this,e,t,i)}clear({color:e,depth:t,stencil:i}){const o=this.gl;let r=0;e&&(r|=o.COLOR_BUFFER_BIT,this.clearColor.set(e),this.colorMask.set([!0,!0,!0,!0])),void 0!==t&&(r|=o.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(t),this.depthMask.set(!0)),void 0!==i&&(r|=o.STENCIL_BUFFER_BIT,this.clearStencil.set(i),this.stencilMask.set(255)),o.clear(r);}setCullFace(e){!1===e.enable?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(e.mode),this.frontFace.set(e.frontFace));}setDepthMode(e){e.func!==this.gl.ALWAYS||e.mask?(this.depthTest.set(!0),this.depthFunc.set(e.func),this.depthMask.set(e.mask),this.depthRange.set(e.range)):this.depthTest.set(!1);}setStencilMode(e){e.test.func!==this.gl.ALWAYS||e.mask?(this.stencilTest.set(!0),this.stencilMask.set(e.mask),this.stencilOp.set([e.fail,e.depthFail,e.pass]),this.stencilFunc.set({func:e.test.func,ref:e.ref,mask:e.test.mask})):this.stencilTest.set(!1);}setColorMode(i){t(i.blendFunction,e.ColorMode.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(i.blendFunction),this.blendColor.set(i.blendColor)),this.colorMask.set(i.mask);}unbindVAO(){this.extVertexArrayObject&&this.bindVertexArrayOES.set(null);}}class Me extends e.Evented{constructor(t,i,o,r){super(),this.id=t,this.dispatcher=o,this.setEventedParent(r),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=e.extend({type:\"raster\"},i),e.extend(this,e.pick(i,[\"url\",\"scheme\",\"tileSize\"]));}load(){this._loaded=!1,this.fire(new e.Event(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=F(this._options,this.map._requestManager,null,null,((t,i)=>{this._tileJSONRequest=null,this._loaded=!0,t?this.fire(new e.ErrorEvent(t)):i&&(e.extend(this,i),i.bounds&&(this.tileBounds=new U(i.bounds,this.minzoom,this.maxzoom)),e.postTurnstileEvent(i.tiles),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})));}));}loaded(){return this._loaded}onAdd(e){this.map=e,this.load();}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);}serialize(){return e.extend({},this._options)}hasTile(e){return !this.tileBounds||this.tileBounds.contains(e.canonical)}loadTile(t,i){const o=e.exported.devicePixelRatio>=2,r=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme),o,this.tileSize);t.request=e.getImage(this.map._requestManager.transformRequest(r,e.ResourceType.Tile),((o,r,n,a)=>(delete t.request,t.aborted?(t.state=\"unloaded\",i(null)):o?(t.state=\"errored\",i(o)):r?(this.map._refreshExpiredTiles&&t.setExpiryData({cacheControl:n,expires:a}),t.setTexture(r,this.map.painter),t.state=\"loaded\",e.cacheEntryPossiblyAdded(this.dispatcher),void i(null)):i(null))));}static loadTileData(e,t,i){e.setTexture(t,i);}static unloadTileData(e,t){e.texture&&t.saveTileTexture(e.texture);}abortTile(e,t){e.request&&(e.request.cancel(),delete e.request),t();}unloadTile(e,t){e.texture&&this.map.painter.saveTileTexture(e.texture),t();}hasTransition(){return !1}}let Se;function ze(t,i,o,r,n,a,s,l){const c=[t,o,n,i,r,a,1,1,1],h=[s,l,1],u=e.adjoint([],c),[_,d,p]=e.transformMat3(h,h,e.transpose(u,u));return e.multiply$1(c,[_,0,0,0,d,0,0,0,p],c)}class De extends e.Evented{constructor(e,t,i,o){super(),this.id=e,this.dispatcher=i,this.coordinates=t.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(o),this.options=t;}load(t,i){this._loaded=i||!1,this.fire(new e.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,e.getImage(this.map._requestManager.transformRequest(this.url,e.ResourceType.Image),((i,o)=>{if(this._loaded=!0,i)this.fire(new e.ErrorEvent(i));else if(o){const{HTMLImageElement:i}=e.window;this.image=o instanceof i?e.exported.getImageData(o):o,this.width=this.image.width,this.height=this.image.height,t&&(this.coordinates=t),this._finishLoading();}}));}loaded(){return this._loaded}updateImage(e){return this.image&&e.url?(this.options.url=e.url,this.load(e.coordinates,this._loaded),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})));}onAdd(e){this.map=e,this.load();}onRemove(){this.texture&&this.texture.destroy();}setCoordinates(t){this.coordinates=t,this._boundsArray=void 0;const i=t.map(e.MercatorCoordinate.fromLngLat);return this.tileID=function(t){let i=1/0,o=1/0,r=-1/0,n=-1/0;for(const e of t)i=Math.min(i,e.x),o=Math.min(o,e.y),r=Math.max(r,e.x),n=Math.max(n,e.y);const a=Math.max(r-i,n-o),s=Math.max(0,Math.floor(-Math.log(a)/Math.LN2)),l=Math.pow(2,s);return new e.CanonicalTileID(s,Math.floor((i+r)/2*l),Math.floor((o+n)/2*l))}(i),this.minzoom=this.maxzoom=this.tileID.z,this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})),this}_clear(){this._boundsArray=void 0;}_prepareData(t){for(const e in this.tiles){const t=this.tiles[e];\"loaded\"!==t.state&&(t.state=\"loaded\",t.texture=this.texture);}if(this._boundsArray)return;const i=e.tileTransform(this.tileID,this.map.transform.projection),[o,r,n,a]=this.coordinates.map((t=>{const o=i.projection.project(t[0],t[1]);return e.getTilePoint(i,o)._round()}));this.perspectiveTransform=function(t,i,o,r,n,a,s,l,c,h){const u=ze(0,0,t,0,0,i,t,i),_=ze(o,r,n,a,s,l,c,h);return e.multiply$1(_,e.adjoint(u,u),_),[_[6]/_[8]*t/e.EXTENT,_[7]/_[8]*i/e.EXTENT]}(this.width,this.height,o.x,o.y,r.x,r.y,a.x,a.y,n.x,n.y);const s=this._boundsArray=new e.StructArrayLayout4i8;s.emplaceBack(o.x,o.y,0,0),s.emplaceBack(r.x,r.y,e.EXTENT,0),s.emplaceBack(a.x,a.y,0,e.EXTENT),s.emplaceBack(n.x,n.y,e.EXTENT,e.EXTENT),this.boundsBuffer&&this.boundsBuffer.destroy(),this.boundsBuffer=t.createVertexBuffer(s,e.boundsAttributes.members),this.boundsSegments=e.SegmentVector.simpleSegment(0,0,4,2);}prepare(){if(0===Object.keys(this.tiles).length||!this.image)return;const t=this.map.painter.context,i=t.gl;this.texture?this.texture.update(this.image):(this.texture=new e.Texture(t,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE)),this._prepareData(t);}loadTile(e,t){this.tileID&&this.tileID.equals(e.tileID.canonical)?(this.tiles[String(e.tileID.wrap)]=e,e.buckets={},t(null)):(e.state=\"errored\",t(null));}serialize(){return {type:\"image\",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return !1}}const Pe={vector:class extends e.Evented{constructor(t,i,o,r){if(super(),this.id=t,this.dispatcher=o,this.type=\"vector\",this.minzoom=0,this.maxzoom=22,this.scheme=\"xyz\",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,e.extend(this,e.pick(i,[\"url\",\"scheme\",\"tileSize\",\"promoteId\"])),this._options=e.extend({type:\"vector\"},i),this._collectResourceTiming=i.collectResourceTiming,512!==this.tileSize)throw new Error(\"vector tile sources must have a tileSize of 512\");this.setEventedParent(r),this._tileWorkers={},this._deduped=new e.DedupedRequest;}load(t){this._loaded=!1,this.fire(new e.Event(\"dataloading\",{dataType:\"source\"}));const i=this.language||this.map._language,o=this.worldview||this.map._worldview;this._tileJSONRequest=F(this._options,this.map._requestManager,i,o,((r,n)=>{this._tileJSONRequest=null,this._loaded=!0,r?(i&&console.warn(`Ensure that your requested language string is a valid BCP-47 code. Found: ${i}`),o&&2!==o.length&&console.warn(`Requested worldview strings must be a valid ISO alpha-2 code. Found: ${o}`),this.fire(new e.ErrorEvent(r))):n&&(e.extend(this,n),n.bounds&&(this.tileBounds=new U(n.bounds,this.minzoom,this.maxzoom)),e.postTurnstileEvent(n.tiles,this.map._requestManager._customAccessToken),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"}))),t&&t(r);}));}loaded(){return this._loaded}hasTile(e){return !this.tileBounds||this.tileBounds.contains(e.canonical)}onAdd(e){this.map=e,this.load();}setSourceProperty(e){this._tileJSONRequest&&this._tileJSONRequest.cancel(),e(),this.load((()=>{const e=this.map.style._getSourceCaches(this.id);for(const t of e)t.clearTiles();}));}setTiles(e){return this.setSourceProperty((()=>{this._options.tiles=e;})),this}setUrl(e){return this.setSourceProperty((()=>{this.url=e,this._options.url=e;})),this}_setLanguage(e){return e===this.language||this.setSourceProperty((()=>{this.language=e;})),this}_setWorldview(e){return e===this.worldview?this:this.worldviewOptions&&e&&!this.worldviewOptions[e]?(console.warn(`Vector tile source \"${this.id}\" does not support worldview \"${e}\".`),this):(this.setSourceProperty((()=>{this.worldview=e;})),this)}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);}serialize(){return e.extend({},this._options)}loadTile(t,i){const o=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme)),r={request:this.map._requestManager.transformRequest(o,e.ResourceType.Tile),data:void 0,uid:t.uid,tileID:t.tileID,tileZoom:t.tileZoom,zoom:t.tileID.overscaledZ,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:e.exported.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,isSymbolTile:t.isSymbolTile};if(r.request.collectResourceTiming=this._collectResourceTiming,t.actor&&\"expired\"!==t.state)\"loading\"===t.state?t.reloadCallback=i:t.request=t.actor.send(\"reloadTile\",r,n.bind(this));else if(t.actor=this._tileWorkers[o]=this._tileWorkers[o]||this.dispatcher.getActor(),this.dispatcher.ready)t.request=t.actor.send(\"loadTile\",r,n.bind(this),void 0,!0);else {const i=e.loadVectorTile.call({deduped:this._deduped},r,((e,i)=>{e||!i?n.call(this,e):(r.data={cacheControl:i.cacheControl,expires:i.expires,rawData:i.rawData.slice(0)},t.actor&&t.actor.send(\"loadTile\",r,n.bind(this),void 0,!0));}),!0);t.request={cancel:i};}function n(o,r){return delete t.request,t.aborted?i(null):o&&404!==o.status?i(o):(r&&r.resourceTiming&&(t.resourceTiming=r.resourceTiming),this.map._refreshExpiredTiles&&r&&t.setExpiryData(r),t.loadVectorData(r,this.map.painter),e.cacheEntryPossiblyAdded(this.dispatcher),i(null),void(t.reloadCallback&&(this.loadTile(t,t.reloadCallback),t.reloadCallback=null)))}}abortTile(e){e.request&&(e.request.cancel(),delete e.request),e.actor&&e.actor.send(\"abortTile\",{uid:e.uid,type:this.type,source:this.id});}unloadTile(e){e.unloadVectorData(),e.actor&&e.actor.send(\"removeTile\",{uid:e.uid,type:this.type,source:this.id});}hasTransition(){return !1}afterUpdate(){this._tileWorkers={};}},raster:Me,\"raster-dem\":class extends Me{constructor(t,i,o,r){super(t,i,o,r),this.type=\"raster-dem\",this.maxzoom=22,this._options=e.extend({type:\"raster-dem\"},i),this.encoding=i.encoding||\"mapbox\";}loadTile(t,i){const o=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme),!1,this.tileSize);function r(e,o){e&&(t.state=\"errored\",i(e)),o&&(t.dem=o,t.dem.onDeserialize(),t.needsHillshadePrepare=!0,t.needsDEMTextureUpload=!0,t.state=\"loaded\",i(null));}t.request=e.getImage(this.map._requestManager.transformRequest(o,e.ResourceType.Tile),function(o,n,a,s){if(delete t.request,t.aborted)t.state=\"unloaded\",i(null);else if(o)t.state=\"errored\",i(o);else if(n){this.map._refreshExpiredTiles&&t.setExpiryData({cacheControl:a,expires:s});const i=e.window.ImageBitmap&&n instanceof e.window.ImageBitmap&&(null==Se&&(Se=e.window.OffscreenCanvas&&new e.window.OffscreenCanvas(1,1).getContext(\"2d\")&&\"function\"==typeof e.window.createImageBitmap),Se),o=1-(n.width-e.prevPowerOfTwo(n.width))/2;o<1||t.neighboringTiles||(t.neighboringTiles=this._getNeighboringTiles(t.tileID));const l=i?n:e.exported.getImageData(n,o),c={uid:t.uid,coord:t.tileID,source:this.id,rawImageData:l,encoding:this.encoding,padding:o};t.actor&&\"expired\"!==t.state||(t.actor=this.dispatcher.getActor(),t.actor.send(\"loadDEMTile\",c,r.bind(this),void 0,!0));}}.bind(this));}_getNeighboringTiles(t){const i=t.canonical,o=Math.pow(2,i.z),r=(i.x-1+o)%o,n=0===i.x?t.wrap-1:t.wrap,a=(i.x+1+o)%o,s=i.x+1===o?t.wrap+1:t.wrap,l={};return l[new e.OverscaledTileID(t.overscaledZ,n,i.z,r,i.y).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,s,i.z,a,i.y).key]={backfilled:!1},i.y>0&&(l[new e.OverscaledTileID(t.overscaledZ,n,i.z,r,i.y-1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,t.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,s,i.z,a,i.y-1).key]={backfilled:!1}),i.y+1<o&&(l[new e.OverscaledTileID(t.overscaledZ,n,i.z,r,i.y+1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,t.wrap,i.z,i.x,i.y+1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,s,i.z,a,i.y+1).key]={backfilled:!1}),l}unloadTile(e){e.demTexture&&this.map.painter.saveTileTexture(e.demTexture),e.fbo&&(e.fbo.destroy(),delete e.fbo),e.dem&&delete e.dem,delete e.neighboringTiles,e.state=\"unloaded\";}},geojson:class extends e.Evented{constructor(t,i,o,r){super(),this.id=t,this.type=\"geojson\",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._loaded=!1,this.actor=o.getActor(),this.setEventedParent(r),this._data=i.data,this._options=e.extend({},i),this._collectResourceTiming=i.collectResourceTiming,void 0!==i.maxzoom&&(this.maxzoom=i.maxzoom),i.type&&(this.type=i.type),i.attribution&&(this.attribution=i.attribution),this.promoteId=i.promoteId;const n=e.EXTENT/this.tileSize;this.workerOptions=e.extend({source:this.id,cluster:i.cluster||!1,geojsonVtOptions:{buffer:(void 0!==i.buffer?i.buffer:128)*n,tolerance:(void 0!==i.tolerance?i.tolerance:.375)*n,extent:e.EXTENT,maxZoom:this.maxzoom,lineMetrics:i.lineMetrics||!1,generateId:i.generateId||!1},superclusterOptions:{maxZoom:void 0!==i.clusterMaxZoom?i.clusterMaxZoom:this.maxzoom-1,minPoints:Math.max(2,i.clusterMinPoints||2),extent:e.EXTENT,radius:(void 0!==i.clusterRadius?i.clusterRadius:50)*n,log:!1,generateId:i.generateId||!1},clusterProperties:i.clusterProperties,filter:i.filter},i.workerOptions);}onAdd(e){this.map=e,this.setData(this._data);}setData(e){return this._data=e,this._updateWorkerData(),this}getClusterExpansionZoom(e,t){return this.actor.send(\"geojson.getClusterExpansionZoom\",{clusterId:e,source:this.id},t),this}getClusterChildren(e,t){return this.actor.send(\"geojson.getClusterChildren\",{clusterId:e,source:this.id},t),this}getClusterLeaves(e,t,i,o){return this.actor.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:e,limit:t,offset:i},o),this}_updateWorkerData(){if(this._pendingLoad)return void(this._coalesce=!0);this.fire(new e.Event(\"dataloading\",{dataType:\"source\"})),this._loaded=!1;const t=e.extend({},this.workerOptions),i=this._data;\"string\"==typeof i?(t.request=this.map._requestManager.transformRequest(e.exported.resolveURL(i),e.ResourceType.Source),t.request.collectResourceTiming=this._collectResourceTiming):t.data=JSON.stringify(i),this._pendingLoad=this.actor.send(`${this.type}.loadData`,t,((t,i)=>{if(this._loaded=!0,this._pendingLoad=null,t)this.fire(new e.ErrorEvent(t));else {const t={dataType:\"source\",sourceDataType:this._metadataFired?\"content\":\"metadata\"};this._collectResourceTiming&&i&&i.resourceTiming&&i.resourceTiming[this.id]&&(t.resourceTiming=i.resourceTiming[this.id]),this.fire(new e.Event(\"data\",t)),this._metadataFired=!0;}this._coalesce&&(this._updateWorkerData(),this._coalesce=!1);}));}loaded(){return this._loaded}loadTile(t,i){const o=t.actor?\"reloadTile\":\"loadTile\";t.actor=this.actor,t.request=this.actor.send(o,{type:this.type,uid:t.uid,tileID:t.tileID,tileZoom:t.tileZoom,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:e.exported.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId},((e,r)=>(delete t.request,t.unloadVectorData(),t.aborted?i(null):e?i(e):(t.loadVectorData(r,this.map.painter,\"reloadTile\"===o),i(null)))),void 0,\"loadTile\"===o);}abortTile(e){e.request&&(e.request.cancel(),delete e.request),e.aborted=!0;}unloadTile(e){e.unloadVectorData(),this.actor.send(\"removeTile\",{uid:e.uid,type:this.type,source:this.id});}onRemove(){this._pendingLoad&&this._pendingLoad.cancel();}serialize(){return e.extend({},this._options,{type:this.type,data:this._data})}hasTransition(){return !1}},video:class extends De{constructor(e,t,i,o){super(e,t,i,o),this.roundZoom=!0,this.type=\"video\",this.options=t;}load(){this._loaded=!1;const t=this.options;this.urls=[];for(const i of t.urls)this.urls.push(this.map._requestManager.transformRequest(i,e.ResourceType.Source).url);e.getVideo(this.urls,((t,i)=>{this._loaded=!0,t?this.fire(new e.ErrorEvent(t)):i&&(this.video=i,this.video.loop=!0,this.video.setAttribute(\"playsinline\",\"\"),this.video.addEventListener(\"playing\",(()=>{this.map.triggerRepaint();})),this.map&&this.video.play(),this._finishLoading());}));}pause(){this.video&&this.video.pause();}play(){this.video&&this.video.play();}seek(t){if(this.video){const i=this.video.seekable;t<i.start(0)||t>i.end(0)?this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${this.id}`,null,`Playback for this video can be set only between the ${i.start(0)} and ${i.end(0)}-second mark.`))):this.video.currentTime=t;}}getVideo(){return this.video}onAdd(e){this.map||(this.map=e,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)));}prepare(){if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;const t=this.map.painter.context,i=t.gl;this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new e.Texture(t,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),this.width=this.video.videoWidth,this.height=this.video.videoHeight),this._prepareData(t);}serialize(){return {type:\"video\",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}},image:De,canvas:class extends De{constructor(t,i,o,r){super(t,i,o,r),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some((e=>!Array.isArray(e)||2!==e.length||e.some((e=>\"number\"!=typeof e))))||this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'missing required property \"coordinates\"'))),i.animate&&\"boolean\"!=typeof i.animate&&this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'optional \"animate\" property must be a boolean value'))),i.canvas?\"string\"==typeof i.canvas||i.canvas instanceof e.window.HTMLCanvasElement||this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'missing required property \"canvas\"'))),this.options=i,this.animate=void 0===i.animate||i.animate;}load(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof e.window.HTMLCanvasElement?this.options.canvas:e.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new e.ErrorEvent(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint();},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1);},this._finishLoading());}getCanvas(){return this.canvas}onAdd(e){this.map=e,this.load(),this.canvas&&this.animate&&this.play();}onRemove(){this.pause();}prepare(){let t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),this._hasInvalidDimensions())return;if(0===Object.keys(this.tiles).length)return;const i=this.map.painter.context;this.texture?(t||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new e.Texture(i,this.canvas,i.gl.RGBA,{premultiply:!0}),this._prepareData(i);}serialize(){return {type:\"canvas\",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const e of [this.canvas.width,this.canvas.height])if(isNaN(e)||e<=0)return !0;return !1}},custom:class extends e.Evented{constructor(t,i,o,r){super(),this.id=t,this.type=\"custom\",this._dataType=\"raster\",this._dispatcher=o,this._implementation=i,this.setEventedParent(r),this.scheme=\"xyz\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this._loaded=!1,this.roundZoom=!0,this._implementation||this.fire(new e.ErrorEvent(new Error(`Missing implementation for ${this.id} custom source`))),this._implementation.loadTile||this.fire(new e.ErrorEvent(new Error(`Missing loadTile implementation for ${this.id} custom source`))),this._implementation.bounds&&(this.tileBounds=new U(this._implementation.bounds,this.minzoom,this.maxzoom)),i.update=this._update.bind(this),i.coveringTiles=this._coveringTiles.bind(this),e.extend(this,e.pick(i,[\"dataType\",\"scheme\",\"minzoom\",\"maxzoom\",\"tileSize\",\"attribution\",\"minTileCacheSize\",\"maxTileCacheSize\"]));}serialize(){return e.pick(this,[\"type\",\"scheme\",\"minzoom\",\"maxzoom\",\"tileSize\",\"attribution\"])}load(){this._loaded=!0,this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"}));}loaded(){return this._loaded}onAdd(t){this._map=t,this._loaded=!1,this.fire(new e.Event(\"dataloading\",{dataType:\"source\"})),this._implementation.onAdd&&this._implementation.onAdd(t),this.load();}onRemove(e){this._implementation.onRemove&&this._implementation.onRemove(e);}hasTile(e){if(this._implementation.hasTile){const{x:t,y:i,z:o}=e.canonical;return this._implementation.hasTile({x:t,y:i,z:o})}return !this.tileBounds||this.tileBounds.contains(e.canonical)}loadTile(t,i){const{x:o,y:r,z:n}=t.tileID.canonical,a=new e.window.AbortController,s=this._implementation.loadTile({x:o,y:r,z:n},{signal:a.signal});if(!s)return this.loadTileData(t,{width:this.tileSize,height:this.tileSize,data:null}),t.state=\"loaded\",i(null);s.cancel=()=>a.abort(),t.request=s.then(function(o){return delete t.request,t.aborted?(t.state=\"unloaded\",i(null)):o?function(t){return t instanceof e.window.ImageData||t instanceof e.window.ImageBitmap||t instanceof e.window.HTMLCanvasElement}(o)?(this.loadTileData(t,o),t.state=\"loaded\",void i(null)):(t.state=\"errored\",i(new Error(`Can't infer data type for ${this.id}, only raster data supported at the moment`))):(this.loadTileData(t,{width:this.tileSize,height:this.tileSize,data:null}),t.state=\"loaded\",i(null))}.bind(this)).catch((e=>{20!==e.code&&(t.state=\"errored\",i(e));}));}loadTileData(e,t){Me.loadTileData(e,t,this._map.painter);}unloadTileData(e){Me.unloadTileData(e,this._map.painter);}prepareTile(e){if(!this._implementation.prepareTile)return null;const{x:t,y:i,z:o}=e.tileID.canonical,r=this._implementation.prepareTile({x:t,y:i,z:o});return r?(this.loadTileData(e,r),e.state=\"loaded\",r):null}unloadTile(e,t){if(this.unloadTileData(e),this._implementation.unloadTile){const{x:t,y:i,z:o}=e.tileID.canonical;this._implementation.unloadTile({x:t,y:i,z:o});}t();}abortTile(e,t){e.request&&e.request.cancel&&(e.request.cancel(),delete e.request),t();}hasTransition(){return !1}_coveringTiles(){return this._map.transform.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,roundZoom:this.roundZoom}).map((e=>({x:e.canonical.x,y:e.canonical.y,z:e.canonical.z})))}_update(){this.fire(new e.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"}));}}},Ae=function(t,i,o,r){const n=new Pe[i.type](t,i,o,r);if(n.id!==t)throw new Error(`Expected Source id to be ${t} instead of ${n.id}`);return e.bindAll([\"load\",\"abort\",\"unload\",\"serialize\",\"prepare\"],n),n};function Le(t,i){const o=e.identity([]);return e.scale(o,o,[.5*t.width,.5*-t.height,1]),e.translate(o,o,[1,-1,0]),e.multiply(o,o,t.calculateProjMatrix(i.toUnwrapped())),Float32Array.from(o)}function Re(e,t,i,o,r,n,a,s=!1){const l=e.tilesIn(o,a,s);l.sort(Be);const c=[];for(const o of l)c.push({wrappedTileID:o.tile.tileID.wrapped().key,queryResults:o.tile.queryRenderedFeatures(t,i,e._state,o,r,n,Le(e.transform,o.tile.tileID),s)});const h=function(e){const t={},i={};for(const o of e){const e=o.queryResults,r=o.wrappedTileID,n=i[r]=i[r]||{};for(const i in e){const o=e[i],r=n[i]=n[i]||{},a=t[i]=t[i]||[];for(const e of o)r[e.featureIndex]||(r[e.featureIndex]=!0,a.push(e));}}return t}(c);for(const t in h)h[t].forEach((t=>{const i=t.feature,o=i.layer;o&&\"background\"!==o.type&&\"sky\"!==o.type&&(i.source=o.source,o[\"source-layer\"]&&(i.sourceLayer=o[\"source-layer\"]),i.state=void 0!==i.id?e.getFeatureState(o[\"source-layer\"],i.id):{});}));return h}function Oe(e,t){const i=e.getRenderableIds().map((t=>e.getTileByID(t))),o=[],r={};for(let e=0;e<i.length;e++){const n=i[e],a=n.tileID.canonical.key;r[a]||(r[a]=!0,n.querySourceFeatures(o,t));}return o}function Be(e,t){const i=e.tileID,o=t.tileID;return i.overscaledZ-o.overscaledZ||i.canonical.y-o.canonical.y||i.wrap-o.wrap||i.canonical.x-o.canonical.x}function ke(){return null!=gn.workerClass?new gn.workerClass:new e.window.Worker(gn.workerUrl)}const Fe=\"mapboxgl_preloaded_worker_pool\";class Ue{constructor(){this.active={};}acquire(e){if(!this.workers)for(this.workers=[];this.workers.length<Ue.workerCount;)this.workers.push(new ke);return this.active[e]=!0,this.workers.slice()}release(e){delete this.active[e],0===this.numActive()&&(this.workers.forEach((e=>{e.terminate();})),this.workers=null);}isPreloaded(){return !!this.active[Fe]}numActive(){return Object.keys(this.active).length}}let Ne;function Ge(){return Ne||(Ne=new Ue),Ne}function je(t,i){const o={};for(const e in t)\"ref\"!==e&&(o[e]=t[e]);return e.refProperties.forEach((e=>{e in i&&(o[e]=i[e]);})),o}function Ze(e){e=e.slice();const t=Object.create(null);for(let i=0;i<e.length;i++)t[e[i].id]=e[i];for(let i=0;i<e.length;i++)\"ref\"in e[i]&&(e[i]=je(e[i],t[e[i].ref]));return e}Ue.workerCount=2;const Ve={setStyle:\"setStyle\",addLayer:\"addLayer\",removeLayer:\"removeLayer\",setPaintProperty:\"setPaintProperty\",setLayoutProperty:\"setLayoutProperty\",setFilter:\"setFilter\",addSource:\"addSource\",removeSource:\"removeSource\",setGeoJSONSourceData:\"setGeoJSONSourceData\",setLayerZoomRange:\"setLayerZoomRange\",setLayerProperty:\"setLayerProperty\",setCenter:\"setCenter\",setZoom:\"setZoom\",setBearing:\"setBearing\",setPitch:\"setPitch\",setSprite:\"setSprite\",setGlyphs:\"setGlyphs\",setTransition:\"setTransition\",setLight:\"setLight\",setTerrain:\"setTerrain\",setFog:\"setFog\",setProjection:\"setProjection\"};function We(e,t,i){i.push({command:Ve.addSource,args:[e,t[e]]});}function Xe(e,t,i){t.push({command:Ve.removeSource,args:[e]}),i[e]=!0;}function qe(e,t,i,o){Xe(e,i,o),We(e,t,i);}function $e(e,i,o){let r;for(r in e[o])if(e[o].hasOwnProperty(r)&&\"data\"!==r&&!t(e[o][r],i[o][r]))return !1;for(r in i[o])if(i[o].hasOwnProperty(r)&&\"data\"!==r&&!t(e[o][r],i[o][r]))return !1;return !0}function He(e,i,o,r,n,a){let s;for(s in i=i||{},e=e||{})e.hasOwnProperty(s)&&(t(e[s],i[s])||o.push({command:a,args:[r,s,i[s],n]}));for(s in i)i.hasOwnProperty(s)&&!e.hasOwnProperty(s)&&(t(e[s],i[s])||o.push({command:a,args:[r,s,i[s],n]}));}function Ye(e){return e.id}function Ke(e,t){return e[t.id]=t,e}class Je{constructor(e,t){this.reset(e,t);}reset(e,t){this.points=e||[],this._distances=[0];for(let e=1;e<this.points.length;e++)this._distances[e]=this._distances[e-1]+this.points[e].dist(this.points[e-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(t||0,.5*this.length),this.paddedLength=this.length-2*this.padding;}lerp(t){if(1===this.points.length)return this.points[0];t=e.clamp(t,0,1);let i=1,o=this._distances[i];const r=t*this.paddedLength+this.padding;for(;o<r&&i<this._distances.length;)o=this._distances[++i];const n=i-1,a=this._distances[n],s=o-a,l=s>0?(r-a)/s:0;return this.points[n].mult(1-l).add(this.points[i].mult(l))}}class Qe{constructor(e,t,i){const o=this.boxCells=[],r=this.circleCells=[];this.xCellCount=Math.ceil(e/i),this.yCellCount=Math.ceil(t/i);for(let e=0;e<this.xCellCount*this.yCellCount;e++)o.push([]),r.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=e,this.height=t,this.xScale=this.xCellCount/e,this.yScale=this.yCellCount/t,this.boxUid=0,this.circleUid=0;}keysLength(){return this.boxKeys.length+this.circleKeys.length}insert(e,t,i,o,r){this._forEachCell(t,i,o,r,this._insertBoxCell,this.boxUid++),this.boxKeys.push(e),this.bboxes.push(t),this.bboxes.push(i),this.bboxes.push(o),this.bboxes.push(r);}insertCircle(e,t,i,o){this._forEachCell(t-o,i-o,t+o,i+o,this._insertCircleCell,this.circleUid++),this.circleKeys.push(e),this.circles.push(t),this.circles.push(i),this.circles.push(o);}_insertBoxCell(e,t,i,o,r,n){this.boxCells[r].push(n);}_insertCircleCell(e,t,i,o,r,n){this.circleCells[r].push(n);}_query(e,t,i,o,r,n){if(i<0||e>this.width||o<0||t>this.height)return !r&&[];const a=[];if(e<=0&&t<=0&&this.width<=i&&this.height<=o){if(r)return !0;for(let e=0;e<this.boxKeys.length;e++)a.push({key:this.boxKeys[e],x1:this.bboxes[4*e],y1:this.bboxes[4*e+1],x2:this.bboxes[4*e+2],y2:this.bboxes[4*e+3]});for(let e=0;e<this.circleKeys.length;e++){const t=this.circles[3*e],i=this.circles[3*e+1],o=this.circles[3*e+2];a.push({key:this.circleKeys[e],x1:t-o,y1:i-o,x2:t+o,y2:i+o});}return n?a.filter(n):a}return this._forEachCell(e,t,i,o,this._queryCell,a,{hitTest:r,seenUids:{box:{},circle:{}}},n),r?a.length>0:a}_queryCircle(e,t,i,o,r){const n=e-i,a=e+i,s=t-i,l=t+i;if(a<0||n>this.width||l<0||s>this.height)return !o&&[];const c=[];return this._forEachCell(n,s,a,l,this._queryCellCircle,c,{hitTest:o,circle:{x:e,y:t,radius:i},seenUids:{box:{},circle:{}}},r),o?c.length>0:c}query(e,t,i,o,r){return this._query(e,t,i,o,!1,r)}hitTest(e,t,i,o,r){return this._query(e,t,i,o,!0,r)}hitTestCircle(e,t,i,o){return this._queryCircle(e,t,i,!0,o)}_queryCell(e,t,i,o,r,n,a,s){const l=a.seenUids,c=this.boxCells[r];if(null!==c){const r=this.bboxes;for(const h of c)if(!l.box[h]){l.box[h]=!0;const c=4*h;if(e<=r[c+2]&&t<=r[c+3]&&i>=r[c+0]&&o>=r[c+1]&&(!s||s(this.boxKeys[h]))){if(a.hitTest)return n.push(!0),!0;n.push({key:this.boxKeys[h],x1:r[c],y1:r[c+1],x2:r[c+2],y2:r[c+3]});}}}const h=this.circleCells[r];if(null!==h){const r=this.circles;for(const c of h)if(!l.circle[c]){l.circle[c]=!0;const h=3*c;if(this._circleAndRectCollide(r[h],r[h+1],r[h+2],e,t,i,o)&&(!s||s(this.circleKeys[c]))){if(a.hitTest)return n.push(!0),!0;{const e=r[h],t=r[h+1],i=r[h+2];n.push({key:this.circleKeys[c],x1:e-i,y1:t-i,x2:e+i,y2:t+i});}}}}}_queryCellCircle(e,t,i,o,r,n,a,s){const l=a.circle,c=a.seenUids,h=this.boxCells[r];if(null!==h){const e=this.bboxes;for(const t of h)if(!c.box[t]){c.box[t]=!0;const i=4*t;if(this._circleAndRectCollide(l.x,l.y,l.radius,e[i+0],e[i+1],e[i+2],e[i+3])&&(!s||s(this.boxKeys[t])))return n.push(!0),!0}}const u=this.circleCells[r];if(null!==u){const e=this.circles;for(const t of u)if(!c.circle[t]){c.circle[t]=!0;const i=3*t;if(this._circlesCollide(e[i],e[i+1],e[i+2],l.x,l.y,l.radius)&&(!s||s(this.circleKeys[t])))return n.push(!0),!0}}}_forEachCell(e,t,i,o,r,n,a,s){const l=this._convertToXCellCoord(e),c=this._convertToYCellCoord(t),h=this._convertToXCellCoord(i),u=this._convertToYCellCoord(o);for(let _=l;_<=h;_++)for(let l=c;l<=u;l++)if(r.call(this,e,t,i,o,this.xCellCount*l+_,n,a,s))return}_convertToXCellCoord(e){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(e*this.xScale)))}_convertToYCellCoord(e){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(e*this.yScale)))}_circlesCollide(e,t,i,o,r,n){const a=o-e,s=r-t,l=i+n;return l*l>a*a+s*s}_circleAndRectCollide(e,t,i,o,r,n,a){const s=(n-o)/2,l=Math.abs(e-(o+s));if(l>s+i)return !1;const c=(a-r)/2,h=Math.abs(t-(r+c));if(h>c+i)return !1;if(l<=s||h<=c)return !0;const u=l-s,_=h-c;return u*u+_*_<=i*i}}const et=Math.tan(85*Math.PI/180);function tt(t,i,o,r,n,a,s){const l=e.create();if(o)if(\"globe\"===a.name){const t=e.calculateGlobeLabelMatrix(n,i);e.multiply(l,l,t);}else {const t=v([],s);l[0]=t[0],l[1]=t[1],l[4]=t[2],l[5]=t[3],r||e.rotateZ(l,l,n.angle);}else e.multiply(l,n.labelPlaneMatrix,t);return l}function it(e,t,i,o,r,n,a){const s=tt(e,t,i,o,r,n,a);return \"globe\"===n.name&&i||(s[2]=s[6]=s[10]=s[14]=0),s}function ot(t,i,o,r,n,a,s){if(o){if(\"globe\"===a.name){const l=tt(t,i,o,r,n,a,s);return e.invert(l,l),e.multiply(l,t,l),l}{const i=e.clone(t),o=e.identity([]);return o[0]=s[0],o[1]=s[1],o[4]=s[2],o[5]=s[3],e.multiply(i,i,o),r||e.rotateZ(i,i,-n.angle),i}}return n.glCoordMatrix}function rt(t,i,o=0){const r=[t.x,t.y,o,1];o?e.transformMat4$1(r,r,i):gt(r,r,i);const n=r[3];return {point:[r[0]/n,r[1]/n,r[2]/n],signedDistanceFromCamera:n}}function nt(t,i){const o=[t[0],t[1],t[2],1];e.transformMat4$1(o,o,i);const r=o[3];return {point:[o[0]/r,o[1]/r,o[2]/r],signedDistanceFromCamera:r}}function at(e,t){return Math.min(.5+e/t*.5,1.5)}function st(e,t){const i=e[0]/e[3],o=e[1]/e[3];return i>=-t[0]&&i<=t[0]&&o>=-t[1]&&o<=t[1]}function lt(t,i,o,r,n,a,s,l,c,h){const u=o.transform,_=r?t.textSizeData:t.iconSizeData,d=e.evaluateSizeForZoom(_,o.transform.zoom),p=\"globe\"===u.projection.name,m=[256/o.width*2+1,256/o.height*2+1],f=r?t.text.dynamicLayoutVertexArray:t.icon.dynamicLayoutVertexArray;f.clear();let g=null;p&&(g=r?t.text.globeExtVertexArray:t.icon.globeExtVertexArray);const v=t.lineVertexArray,x=r?t.text.placedSymbolArray:t.icon.placedSymbolArray,y=o.transform.width/o.transform.height;let b=!1;for(let r=0;r<x.length;r++){const p=x.get(r);if(p.writingMode!==e.WritingMode.vertical||b||0!==r&&x.get(r-1).writingMode===e.WritingMode.horizontal||(b=!0),(p.hidden||p.writingMode===e.WritingMode.vertical)&&!b){ft(p.numGlyphs,f);continue}b=!1;const w=new e.pointGeometry(p.tileAnchorX,p.tileAnchorY),T=c?c(w):[0,0,0],E=u.projection.projectTilePoint(w.x,w.y,h.canonical),C=[E.x+T[0],E.y+T[1],E.z+T[2]],I=[...C,1];if(e.transformMat4$1(I,I,i),!st(I,m)){ft(p.numGlyphs,f);continue}const M=at(o.transform.cameraToCenterDistance,I[3]),S=e.evaluateSizeForFeature(_,d,p),z=s?S/M:S*M,D=rt(new e.pointGeometry(C[0],C[1]),n,C[2]);if(D.signedDistanceFromCamera<=0){ft(p.numGlyphs,f);continue}let P={};const A=s?null:c,L=ut(p,z,!1,l,i,n,a,t.glyphOffsetArray,v,f,g,D.point,w,P,y,A,u.projection,h,s);b=L.useVertical,A&&L.needsFlipping&&(P={}),(L.notEnoughRoom||b||L.needsFlipping&&ut(p,z,!0,l,i,n,a,t.glyphOffsetArray,v,f,g,D.point,w,P,y,A,u.projection,h,s).notEnoughRoom)&&ft(p.numGlyphs,f);}r?(t.text.dynamicLayoutVertexBuffer.updateData(f),g&&t.text.globeExtVertexBuffer.updateData(g)):(t.icon.dynamicLayoutVertexBuffer.updateData(f),g&&t.icon.globeExtVertexBuffer.updateData(g));}function ct(e,t,i,o,r,n,a,s,l,c,h,u,_,d,p,m){const f=s.glyphStartIndex+s.numGlyphs,g=s.lineStartIndex,v=s.lineStartIndex+s.lineLength,x=t.getoffsetX(s.glyphStartIndex),y=t.getoffsetX(f-1),b=pt(e*x,i,o,r,n,a,s.segment,g,v,l,c,h,u,_,!0,d,p,m);if(!b)return null;const w=pt(e*y,i,o,r,n,a,s.segment,g,v,l,c,h,u,_,!0,d,p,m);return w?{first:b,last:w}:null}function ht(t,i,o,r){return t.writingMode===e.WritingMode.horizontal&&Math.abs(o.y-i.y)>Math.abs(o.x-i.x)*r?{useVertical:!0}:t.writingMode===e.WritingMode.vertical?i.y<o.y?{needsFlipping:!0}:null:0!==t.flipState&&function(e,t,i){const o=(t.x-e.x)*i;return 0===o||Math.abs((t.y-e.y)/o)>et}(i,o,r)?1===t.flipState?{needsFlipping:!0}:null:i.x>o.x?{needsFlipping:!0}:null}function ut(t,i,o,r,n,a,s,l,c,h,u,_,d,p,m,f,g,v,x){const y=i/24,b=t.lineOffsetX*y,w=t.lineOffsetY*y;let T;if(t.numGlyphs>1){const i=t.glyphStartIndex+t.numGlyphs,n=t.lineStartIndex,h=t.lineStartIndex+t.lineLength,u=ct(y,l,b,w,o,_,d,t,c,a,p,f,!1,g,v,x);if(!u)return {notEnoughRoom:!0};const E=nt(u.first.point,s).point,C=nt(u.last.point,s).point,I=new e.pointGeometry(E[0],E[1]),M=new e.pointGeometry(C[0],C[1]);if(r&&!o){const e=ht(t,I,M,m);if(t.flipState=e&&e.needsFlipping?1:2,e)return e}T=[u.first];for(let e=t.glyphStartIndex+1;e<i-1;e++)T.push(pt(y*l.getoffsetX(e),b,w,o,_,d,t.segment,n,h,c,a,p,f,!1,!1,g,v,x));T.push(u.last);}else {if(r&&!o){const i=rt(d,n).point,o=t.lineStartIndex+t.segment+1,r=new e.pointGeometry(c.getx(o),c.gety(o)),a=rt(r,n),s=a.signedDistanceFromCamera>0?a.point:dt(d,r,i,1,n,void 0,g,v.canonical),l=ht(t,new e.pointGeometry(i[0],i[1]),new e.pointGeometry(s[0],s[1]),m);if(t.flipState=l&&l.needsFlipping?1:2,l)return l}const i=pt(y*l.getoffsetX(t.glyphStartIndex),b,w,o,_,d,t.segment,t.lineStartIndex,t.lineStartIndex+t.lineLength,c,a,p,f,!1,!1,g,v,x);if(!i)return {notEnoughRoom:!0};T=[i];}if(u)for(const t of T)e.updateGlobeVertexNormal(u,h.length+0,t.up[0],t.up[1],t.up[2]),e.updateGlobeVertexNormal(u,h.length+1,t.up[0],t.up[1],t.up[2]),e.updateGlobeVertexNormal(u,h.length+2,t.up[0],t.up[1],t.up[2]),e.updateGlobeVertexNormal(u,h.length+3,t.up[0],t.up[1],t.up[2]),e.addDynamicAttributes(h,t.point[0],t.point[1],t.point[2],t.angle);else for(const t of T)e.addDynamicAttributes(h,t.point[0],t.point[1],t.point[2],t.angle);return {}}function _t(t,i,o,r,n){const a=r.projectTilePoint(t.x,t.y,i);if(!n)return rt(a,o,a.z);const s=n(t);return rt(new e.pointGeometry(a.x+s[0],a.y+s[1]),o,a.z+s[2])}function dt(t,i,o,r,n,a,s,l){const c=_t(t.add(t.sub(i)._unit()),l,n,s,a).point,h=e.sub([],o,c);return e.scaleAndAdd([],o,h,r/e.length(h))}function pt(t,i,o,r,n,a,s,l,c,h,u,_,d,p,m,f,g,v){const x=r?t-i:t+i;let y=x>0?1:-1,b=0;r&&(y*=-1,b=Math.PI),y<0&&(b+=Math.PI);let w=y>0?l+s:l+s+1,T=n,E=n,C=0,I=0;const M=Math.abs(x),S=[],z=[];let D=a;const P=()=>{const t=w-y;return 0===C?a:new e.pointGeometry(h.getx(t),h.gety(t))},A=()=>dt(P(),D,E,M-C+1,u,d,f,g.canonical);for(;C+I<=M;){if(w+=y,w<l||w>=c)return null;if(E=T,S.push(T),p&&z.push(D||P()),T=_[w],void 0===T){D=new e.pointGeometry(h.getx(w),h.gety(w));const t=_t(D,g.canonical,u,f,d);T=t.signedDistanceFromCamera>0?_[w]=t.point:A();}else D=null;C+=I,I=e.distance(E,T);}D=D||new e.pointGeometry(h.getx(w),h.gety(w));const L=P();m&&d&&(_[w]=T=void 0===_[w]?T:A(),I=e.distance(E,T));const R=(M-C)/I,O=D.sub(L).mult(R)._add(L),B=e.sub([],T,E),k=e.scaleAndAdd([],E,B,R);let F=[0,0,1],U=B[0],N=B[1];if(v&&(F=f.upVector(g.canonical,O.x,O.y),0!==F[0]||0!==F[1]||1!==F[2])){const t=[1,0,0],i=[0,1,0];t[0]=F[2],t[1]=0,t[2]=-F[0],e.cross(i,F,t),e.normalize(t,t),e.normalize(i,i),U=e.dot(B,t),N=e.dot(B,i);}if(o){const t=e.cross([],F,B);e.normalize(t,t),e.scaleAndAdd(k,k,t,o*y);}const G=b+Math.atan2(N,U);return S.push(k),p&&z.push(O),{point:k,angle:G,path:S,tilePath:z,up:F}}const mt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ft(e,t){for(let i=0;i<e;i++){const e=t.length;t.resize(e+4),t.float32.set(mt,4*e);}}function gt(e,t,i){const o=t[0],r=t[1];return e[0]=i[0]*o+i[4]*r+i[12],e[1]=i[1]*o+i[5]*r+i[13],e[3]=i[3]*o+i[7]*r+i[15],e}const vt=100;class xt{constructor(e,t,i=new Qe(e.width+200,e.height+200,25),o=new Qe(e.width+200,e.height+200,25)){this.transform=e,this.grid=i,this.ignoredGrid=o,this.pitchfactor=Math.cos(e._pitch)*e.cameraToCenterDistance,this.screenRightBoundary=e.width+vt,this.screenBottomBoundary=e.height+vt,this.gridRightBoundary=e.width+200,this.gridBottomBoundary=e.height+200,this.fogState=t;}placeCollisionBox(e,t,i,o,r,n,a,s){let l=i.projectedAnchorX,c=i.projectedAnchorY,h=i.projectedAnchorZ;const u=i.elevation,_=i.tileID;if(u&&_){const t=e.getProjection().upVector(_.canonical,i.tileAnchorX,i.tileAnchorY),o=e.getProjection().upVectorScale(_.canonical,this.transform.center.lat,this.transform.worldSize).metersToTile;l+=t[0]*u*o,c+=t[1]*u*o,h+=t[2]*u*o;}const d=this.projectAndGetPerspectiveRatio(a,[l,c,h],i.tileID,\"globe\"===e.projection.name||!!u||this.transform.pitch>0,e.getProjection()),p=n*d.perspectiveRatio,m=(i.x1*t+o.x-i.padding)*p+d.point.x,f=(i.y1*t+o.y-i.padding)*p+d.point.y,g=(i.x2*t+o.x+i.padding)*p+d.point.x,v=(i.y2*t+o.y+i.padding)*p+d.point.y,x=d.perspectiveRatio<=.55||d.occluded;return !this.isInsideGrid(m,f,g,v)||!r&&this.grid.hitTest(m,f,g,v,s)||x?{box:[],offscreen:!1,occluded:d.occluded}:{box:[m,f,g,v],offscreen:this.isOffscreen(m,f,g,v),occluded:!1}}placeCollisionCircles(t,i,o,r,n,a,s,l,c,h,u,_,d,p,m){const f=[],g=this.transform.elevation,v=g?g.getAtTileOffsetFunc(m,this.transform.center.lat,this.transform.worldSize,t.getProjection()):e=>[0,0,0],x=new e.pointGeometry(o.tileAnchorX,o.tileAnchorY),y=t.getProjection().projectTilePoint(o.tileAnchorX,o.tileAnchorY,m.canonical),b=v(x),w=[y.x+b[0],y.y+b[1],y.z+b[2]],T=\"globe\"===t.projection.name,E=this.projectAndGetPerspectiveRatio(s,[w[0],w[1],w[2]],m,T||!!g||this.transform.pitch>0,t.getProjection()),{perspectiveRatio:C}=E,I=(u?a/C:a*C)/e.ONE_EM,M=rt(new e.pointGeometry(w[0],w[1]),l,w[2]).point,S=E.signedDistanceFromCamera>0?ct(I,n,o.lineOffsetX*I,o.lineOffsetY*I,!1,M,x,o,r,l,{},g&&!u?v:null,u&&!!g,t.getProjection(),m,u):null;let z=!1,D=!1,P=!0;if(S&&!E.occluded){const t=.5*d*C+p,o=new e.pointGeometry(-100,-100),r=new e.pointGeometry(this.screenRightBoundary,this.screenBottomBoundary),n=new Je,a=S.first,s=S.last;let l=[];for(let e=a.path.length-1;e>=1;e--)l.push(a.path[e]);for(let e=1;e<s.path.length;e++)l.push(s.path[e]);const u=2.5*t;if(c){const e=l.map(g&&!T?(e,t)=>{const i=v(t<a.path.length-1?a.tilePath[a.path.length-1-t]:s.tilePath[t-a.path.length+2]);return e[2]=i[2],nt(e,c)}:e=>nt(e,c));l=e.some((e=>e.signedDistanceFromCamera<=0))?[]:e.map((e=>e.point));}let m=[];if(l.length>0){const t=l.map((t=>new e.pointGeometry(t[0],t[1])));let i=1/0,n=-1/0,a=1/0,s=-1/0;for(let e=0;e<t.length;e++)i=Math.min(i,t[e].x),a=Math.min(a,t[e].y),n=Math.max(n,t[e].x),s=Math.max(s,t[e].y);m=i>=o.x&&n<=r.x&&a>=o.y&&s<=r.y?[t]:n<o.x||i>r.x||s<o.y||a>r.y?[]:e.clipLine([t],o.x,o.y,r.x,r.y);}for(const e of m){n.reset(e,.25*t);let o=0;o=n.length<=.5*t?1:Math.ceil(n.paddedLength/u)+1;for(let e=0;e<o;e++){const r=e/Math.max(o-1,1),a=n.lerp(r),s=a.x+vt,l=a.y+vt;f.push(s,l,t,0);const c=s-t,u=l-t,d=s+t,p=l+t;if(P=P&&this.isOffscreen(c,u,d,p),D=D||this.isInsideGrid(c,u,d,p),!i&&this.grid.hitTestCircle(s,l,t,_)&&(z=!0,!h))return {circles:[],offscreen:!1,collisionDetected:z,occluded:!1}}}}return {circles:!h&&z||!D?[]:f,offscreen:P,collisionDetected:z,occluded:E.occluded}}queryRenderedSymbols(t){if(0===t.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return {};const i=[];let o=1/0,r=1/0,n=-1/0,a=-1/0;for(const s of t){const t=new e.pointGeometry(s.x+vt,s.y+vt);o=Math.min(o,t.x),r=Math.min(r,t.y),n=Math.max(n,t.x),a=Math.max(a,t.y),i.push(t);}const s=this.grid.query(o,r,n,a).concat(this.ignoredGrid.query(o,r,n,a)),l={},c={};for(const t of s){const o=t.key;if(void 0===l[o.bucketInstanceId]&&(l[o.bucketInstanceId]={}),l[o.bucketInstanceId][o.featureIndex])continue;const r=[new e.pointGeometry(t.x1,t.y1),new e.pointGeometry(t.x2,t.y1),new e.pointGeometry(t.x2,t.y2),new e.pointGeometry(t.x1,t.y2)];e.polygonIntersectsPolygon(i,r)&&(l[o.bucketInstanceId][o.featureIndex]=!0,void 0===c[o.bucketInstanceId]&&(c[o.bucketInstanceId]=[]),c[o.bucketInstanceId].push(o.featureIndex));}return c}insertCollisionBox(e,t,i,o,r){(t?this.ignoredGrid:this.grid).insert({bucketInstanceId:i,featureIndex:o,collisionGroupID:r},e[0],e[1],e[2],e[3]);}insertCollisionCircles(e,t,i,o,r){const n=t?this.ignoredGrid:this.grid,a={bucketInstanceId:i,featureIndex:o,collisionGroupID:r};for(let t=0;t<e.length;t+=4)n.insertCircle(a,e[t],e[t+1],e[t+2]);}projectAndGetPerspectiveRatio(t,i,o,r,n){const a=[i[0],i[1],i[2],1];let s=!1;if(i[2]||this.transform.pitch>0){e.transformMat4$1(a,a,t);const r=\"globe\"===n.name;this.fogState&&o&&!r&&(s=function(t,i,o,r,n,a){const s=a.calculateFogTileMatrix(n),l=[i,o,r];return e.transformMat4(l,l,s),M(t,l,a.pitch,a._fov)}(this.fogState,i[0],i[1],i[2],o.toUnwrapped(),this.transform)>.9);}else gt(a,a,t);return {point:new e.pointGeometry((a[0]/a[3]+1)/2*this.transform.width+vt,(-a[1]/a[3]+1)/2*this.transform.height+vt),perspectiveRatio:Math.min(.5+this.transform.getCameraToCenterDistance(n)/a[3]*.5,1.5),signedDistanceFromCamera:a[3],occluded:r&&a[2]>a[3]||s}}isOffscreen(e,t,i,o){return i<vt||e>=this.screenRightBoundary||o<vt||t>this.screenBottomBoundary}isInsideGrid(e,t,i,o){return i>=0&&e<this.gridRightBoundary&&o>=0&&t<this.gridBottomBoundary}getViewportMatrix(){const t=e.identity([]);return e.translate(t,t,[-100,-100,0]),t}}function yt(t,i,o){const r=i.createTileMatrix(t,t.worldSize,o.toUnwrapped());return e.multiply(new Float32Array(16),t.projMatrix,r)}function bt(e,t,i){if(t.projection.name===i.projection.name)return e.projMatrix;const o=i.clone();return o.setProjection(t.projection),yt(o,t.getProjection(),e)}function wt(e,t,i){return t.name===i.projection.name?e.projMatrix:yt(i,t,e)}class Tt{constructor(e,t,i,o){this.opacity=e?Math.max(0,Math.min(1,e.opacity+(e.placed?t:-t))):o&&i?1:0,this.placed=i;}isHidden(){return 0===this.opacity&&!this.placed}}class Et{constructor(e,t,i,o,r,n=!1){this.text=new Tt(e?e.text:null,t,i,r),this.icon=new Tt(e?e.icon:null,t,o,r),this.clipped=n;}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class Ct{constructor(e,t,i,o=!1){this.text=e,this.icon=t,this.skipFade=i,this.clipped=o;}}class It{constructor(){this.invProjMatrix=e.create(),this.viewportMatrix=e.create(),this.circles=[];}}class Mt{constructor(e,t,i,o,r){this.bucketInstanceId=e,this.featureIndex=t,this.sourceLayerIndex=i,this.bucketIndex=o,this.tileID=r;}}class St{constructor(e){this.crossSourceCollisions=e,this.maxGroupID=0,this.collisionGroups={};}get(e){if(this.crossSourceCollisions)return {ID:0,predicate:null};if(!this.collisionGroups[e]){const t=++this.maxGroupID;this.collisionGroups[e]={ID:t,predicate:e=>e.collisionGroupID===t};}return this.collisionGroups[e]}}function zt(t,i,o,r,n){const{horizontalAlign:a,verticalAlign:s}=e.getAnchorAlignment(t),l=-(a-.5)*i,c=-(s-.5)*o,h=e.evaluateVariableOffset(t,r);return new e.pointGeometry(l+h[0]*n,c+h[1]*n)}function Dt(t,i,o,r,n){const a=new e.pointGeometry(t,i);return o&&a._rotate(r?n:-n),a}class Pt{constructor(e,t,i,o,r){this.transform=e.clone(),this.projection=e.projection.name,this.collisionIndex=new xt(this.transform,r),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=t,this.retainedQueryData={},this.collisionGroups=new St(i),this.collisionCircleArrays={},this.prevPlacement=o,o&&(o.prevPlacement=void 0),this.placedOrientations={};}getBucketParts(t,i,o,r){const n=o.getBucket(i),a=o.latestFeatureIndex;if(!n||!a||i.id!==n.layerIds[0])return;const s=n.layers[0].layout,l=o.collisionBoxArray,c=Math.pow(2,this.transform.zoom-o.tileID.overscaledZ),h=o.tileSize/e.EXTENT,u=o.tileID.toUnwrapped();this.transform.setProjection(n.projection);const _=(d=o.tileID,p=n.getProjection(),m=this.transform,p.name===this.projection?m.calculateProjMatrix(d.toUnwrapped()):yt(m,p,d));var d,p,m;const f=\"map\"===s.get(\"text-pitch-alignment\"),g=\"map\"===s.get(\"text-rotation-alignment\");i.compileFilter();const v=i.dynamicFilter(),x=i.dynamicFilterNeedsFeature(),y=this.transform.calculatePixelsToTileUnitsMatrix(o),b=it(_,o.tileID.canonical,f,g,this.transform,n.getProjection(),y);let w=null;if(f){const t=ot(_,o.tileID.canonical,f,g,this.transform,n.getProjection(),y);w=e.multiply([],this.transform.labelPlaneMatrix,t);}let T=null;v&&o.latestFeatureIndex&&(T={unwrappedTileID:u,dynamicFilter:v,dynamicFilterNeedsFeature:x,featureIndex:o.latestFeatureIndex}),this.retainedQueryData[n.bucketInstanceId]=new Mt(n.bucketInstanceId,a,n.sourceLayerIndex,n.index,o.tileID);const E={bucket:n,layout:s,posMatrix:_,textLabelPlaneMatrix:b,labelToScreenMatrix:w,clippingData:T,scale:c,textPixelRatio:h,holdingForFade:o.holdingForFade(),collisionBoxArray:l,partiallyEvaluatedTextSize:e.evaluateSizeForZoom(n.textSizeData,this.transform.zoom),partiallyEvaluatedIconSize:e.evaluateSizeForZoom(n.iconSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(n.sourceID)};if(r)for(const e of n.sortKeyRanges){const{sortKey:i,symbolInstanceStart:o,symbolInstanceEnd:r}=e;t.push({sortKey:i,symbolInstanceStart:o,symbolInstanceEnd:r,parameters:E});}else t.push({symbolInstanceStart:0,symbolInstanceEnd:n.symbolInstances.length,parameters:E});}attemptAnchorPlacement(e,t,i,o,r,n,a,s,l,c,h,u,_,d,p,m,f,g){const v=[u.textOffset0,u.textOffset1],x=zt(e,i,o,v,r),y=this.collisionIndex.placeCollisionBox(d,r,t,Dt(x.x,x.y,n,a,this.transform.angle),h,s,l,c.predicate);if((!m||0!==this.collisionIndex.placeCollisionBox(d,d.getSymbolInstanceIconSize(g,this.transform.zoom,_),m,Dt(x.x,x.y,n,a,this.transform.angle),h,s,l,c.predicate).box.length)&&y.box.length>0){let t;return this.prevPlacement&&this.prevPlacement.variableOffsets[u.crossTileID]&&this.prevPlacement.placements[u.crossTileID]&&this.prevPlacement.placements[u.crossTileID].text&&(t=this.prevPlacement.variableOffsets[u.crossTileID].anchor),this.variableOffsets[u.crossTileID]={textOffset:v,width:i,height:o,anchor:e,textScale:r,prevAnchor:t},this.markUsedJustification(d,e,u,p),d.allowVerticalPlacement&&(this.markUsedOrientation(d,p,u),this.placedOrientations[u.crossTileID]=p),{shift:x,placedGlyphBoxes:y}}}placeLayerBucketPart(t,i,o,r){const{bucket:n,layout:a,posMatrix:s,textLabelPlaneMatrix:l,labelToScreenMatrix:c,clippingData:h,textPixelRatio:u,holdingForFade:_,collisionBoxArray:d,partiallyEvaluatedTextSize:p,partiallyEvaluatedIconSize:m,collisionGroup:f}=t.parameters,g=a.get(\"text-optional\"),v=a.get(\"icon-optional\"),x=a.get(\"text-allow-overlap\"),y=a.get(\"icon-allow-overlap\"),b=\"map\"===a.get(\"text-rotation-alignment\"),w=\"map\"===a.get(\"text-pitch-alignment\"),T=\"none\"!==a.get(\"icon-text-fit\"),E=\"viewport-y\"===a.get(\"symbol-z-order\");this.transform.setProjection(n.projection);let C=x&&(y||!n.hasIconData()||v),I=y&&(x||!n.hasTextData()||g);!n.collisionArrays&&d&&n.deserializeCollisionBoxes(d),o&&r&&n.updateCollisionDebugBuffers(this.transform.zoom,d);const M=(t,r,d)=>{if(h){const o={zoom:this.transform.zoom,pitch:this.transform.pitch};let r=null;if(h.dynamicFilterNeedsFeature){const e=this.retainedQueryData[n.bucketInstanceId];r=h.featureIndex.loadFeature({featureIndex:t.featureIndex,bucketIndex:e.bucketIndex,sourceLayerIndex:e.sourceLayerIndex,layoutVertexArrayOffset:0});}if(!(0,h.dynamicFilter)(o,r,this.retainedQueryData[n.bucketInstanceId].tileID.canonical,new e.pointGeometry(t.tileAnchorX,t.tileAnchorY),this.transform.calculateDistanceTileData(h.unwrappedTileID)))return this.placements[t.crossTileID]=new Ct(!1,!1,!1,!0),void(i[t.crossTileID]=!0)}if(i[t.crossTileID])return;if(_)return void(this.placements[t.crossTileID]=new Ct(!1,!1,!1));let E=!1,M=!1,S=!0,z=!1,D=!1,P=null,A={box:null,offscreen:null,occluded:null},L={box:null,offscreen:null,occluded:null},R=null,O=null,B=null,k=0,F=0,U=0;d.textFeatureIndex?k=d.textFeatureIndex:t.useRuntimeCollisionCircles&&(k=t.featureIndex),d.verticalTextFeatureIndex&&(F=d.verticalTextFeatureIndex);const N=e=>{e.tileID=this.retainedQueryData[n.bucketInstanceId].tileID,(this.transform.elevation||e.elevation)&&(e.elevation=this.transform.elevation?this.transform.elevation.getAtTileOffset(this.retainedQueryData[n.bucketInstanceId].tileID,e.tileAnchorX,e.tileAnchorY):0);},G=d.textBox;if(G){N(G);const i=i=>{let o=e.WritingMode.horizontal;if(n.allowVerticalPlacement&&!i&&this.prevPlacement){const e=this.prevPlacement.placedOrientations[t.crossTileID];e&&(this.placedOrientations[t.crossTileID]=e,o=e,this.markUsedOrientation(n,o,t));}return o},o=(i,o)=>{if(n.allowVerticalPlacement&&t.numVerticalGlyphVertices>0&&d.verticalTextBox){for(const t of n.writingModes)if(t===e.WritingMode.vertical?(A=o(),L=A):A=i(),A&&A.box&&A.box.length)break}else A=i();};if(a.get(\"text-variable-anchor\")){let l=a.get(\"text-variable-anchor\");if(this.prevPlacement&&this.prevPlacement.variableOffsets[t.crossTileID]){const e=this.prevPlacement.variableOffsets[t.crossTileID];l.indexOf(e.anchor)>0&&(l=l.filter((t=>t!==e.anchor)),l.unshift(e.anchor));}const c=(e,i,o)=>{const a=n.getSymbolInstanceTextSize(p,t,this.transform.zoom,r),c=(e.x2-e.x1)*a+2*e.padding,h=(e.y2-e.y1)*a+2*e.padding,_=T&&!y?i:null;_&&N(_);let d={box:[],offscreen:!1,occluded:!1};const g=x?2*l.length:l.length;for(let i=0;i<g;++i){const g=this.attemptAnchorPlacement(l[i%l.length],e,c,h,a,b,w,u,s,f,i>=l.length,t,r,n,o,_,p,m);if(g&&(d=g.placedGlyphBoxes,d&&d.box&&d.box.length)){E=!0,P=g.shift;break}}return d};o((()=>c(G,d.iconBox,e.WritingMode.horizontal)),(()=>{const i=d.verticalTextBox;return i&&N(i),n.allowVerticalPlacement&&!(A&&A.box&&A.box.length)&&t.numVerticalGlyphVertices>0&&i?c(i,d.verticalIconBox,e.WritingMode.vertical):{box:null,offscreen:null,occluded:null}})),A&&(E=A.box,S=A.offscreen,z=A.occluded);const h=i(A&&A.box);if(!E&&this.prevPlacement){const e=this.prevPlacement.variableOffsets[t.crossTileID];e&&(this.variableOffsets[t.crossTileID]=e,this.markUsedJustification(n,e.anchor,t,h));}}else {const a=(i,o)=>{const a=n.getSymbolInstanceTextSize(p,t,this.transform.zoom,r),l=this.collisionIndex.placeCollisionBox(n,a,i,new e.pointGeometry(0,0),x,u,s,f.predicate);return l&&l.box&&l.box.length&&(this.markUsedOrientation(n,o,t),this.placedOrientations[t.crossTileID]=o),l};o((()=>a(G,e.WritingMode.horizontal)),(()=>{const i=d.verticalTextBox;return n.allowVerticalPlacement&&t.numVerticalGlyphVertices>0&&i?(N(i),a(i,e.WritingMode.vertical)):{box:null,offscreen:null,occluded:null}})),i(A&&A.box&&A.box.length);}}if(R=A,E=R&&R.box&&R.box.length>0,S=R&&R.offscreen,z=R&&R.occluded,t.useRuntimeCollisionCircles){const i=n.text.placedSymbolArray.get(t.centerJustifiedTextSymbolIndex>=0?t.centerJustifiedTextSymbolIndex:t.verticalPlacedTextSymbolIndex),r=e.evaluateSizeForFeature(n.textSizeData,p,i),h=a.get(\"text-padding\");O=this.collisionIndex.placeCollisionCircles(n,x,i,n.lineVertexArray,n.glyphOffsetArray,r,s,l,c,o,w,f.predicate,t.collisionCircleDiameter*r/e.ONE_EM,h,this.retainedQueryData[n.bucketInstanceId].tileID),E=x||O.circles.length>0&&!O.collisionDetected,S=S&&O.offscreen,z=O.occluded;}if(d.iconFeatureIndex&&(U=d.iconFeatureIndex),d.iconBox){const t=t=>{N(t);const i=T&&P?Dt(P.x,P.y,b,w,this.transform.angle):new e.pointGeometry(0,0),o=n.getSymbolInstanceIconSize(m,this.transform.zoom,r);return this.collisionIndex.placeCollisionBox(n,o,t,i,y,u,s,f.predicate)};L&&L.box&&L.box.length&&d.verticalIconBox?(B=t(d.verticalIconBox),M=B.box.length>0):(B=t(d.iconBox),M=B.box.length>0),S=S&&B.offscreen,D=B.occluded;}const j=g||0===t.numHorizontalGlyphVertices&&0===t.numVerticalGlyphVertices,Z=v||0===t.numIconVertices;if(j||Z?Z?j||(M=M&&E):E=M&&E:M=E=M&&E,E&&R&&R.box&&this.collisionIndex.insertCollisionBox(R.box,a.get(\"text-ignore-placement\"),n.bucketInstanceId,L&&L.box&&F?F:k,f.ID),M&&B&&this.collisionIndex.insertCollisionBox(B.box,a.get(\"icon-ignore-placement\"),n.bucketInstanceId,U,f.ID),O&&(E&&this.collisionIndex.insertCollisionCircles(O.circles,a.get(\"text-ignore-placement\"),n.bucketInstanceId,k,f.ID),o)){const e=n.bucketInstanceId;let t=this.collisionCircleArrays[e];void 0===t&&(t=this.collisionCircleArrays[e]=new It);for(let e=0;e<O.circles.length;e+=4)t.circles.push(O.circles[e+0]),t.circles.push(O.circles[e+1]),t.circles.push(O.circles[e+2]),t.circles.push(O.collisionDetected?1:0);}const V=\"globe\"!==n.projection.name;C=C&&(V||!z),I=I&&(V||!D),this.placements[t.crossTileID]=new Ct(E||C,M||I,S||n.justReloaded),i[t.crossTileID]=!0;};if(E){const e=n.getSortedSymbolIndexes(this.transform.angle);for(let t=e.length-1;t>=0;--t){const i=e[t];M(n.symbolInstances.get(i),i,n.collisionArrays[i]);}}else for(let e=t.symbolInstanceStart;e<t.symbolInstanceEnd;e++)M(n.symbolInstances.get(e),e,n.collisionArrays[e]);if(o&&n.bucketInstanceId in this.collisionCircleArrays){const t=this.collisionCircleArrays[n.bucketInstanceId];e.invert(t.invProjMatrix,s),t.viewportMatrix=this.collisionIndex.getViewportMatrix();}n.justReloaded=!1;}markUsedJustification(t,i,o,r){let n;n=r===e.WritingMode.vertical?o.verticalPlacedTextSymbolIndex:{left:o.leftJustifiedTextSymbolIndex,center:o.centerJustifiedTextSymbolIndex,right:o.rightJustifiedTextSymbolIndex}[e.getAnchorJustification(i)];const a=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex,o.verticalPlacedTextSymbolIndex];for(const e of a)e>=0&&(t.text.placedSymbolArray.get(e).crossTileID=n>=0&&e!==n?0:o.crossTileID);}markUsedOrientation(t,i,o){const r=i===e.WritingMode.horizontal||i===e.WritingMode.horizontalOnly?i:0,n=i===e.WritingMode.vertical?i:0,a=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex];for(const e of a)t.text.placedSymbolArray.get(e).placedOrientation=r;o.verticalPlacedTextSymbolIndex&&(t.text.placedSymbolArray.get(o.verticalPlacedTextSymbolIndex).placedOrientation=n);}commit(e){this.commitTime=e,this.zoomAtLastRecencyCheck=this.transform.zoom;const t=this.prevPlacement;let i=!1;this.prevZoomAdjustment=t?t.zoomAdjustment(this.transform.zoom):0;const o=t?t.symbolFadeChange(e):1,r=t?t.opacities:{},n=t?t.variableOffsets:{},a=t?t.placedOrientations:{};for(const e in this.placements){const t=this.placements[e],n=r[e];n?(this.opacities[e]=new Et(n,o,t.text,t.icon,null,t.clipped),i=i||t.text!==n.text.placed||t.icon!==n.icon.placed):(this.opacities[e]=new Et(null,o,t.text,t.icon,t.skipFade,t.clipped),i=i||t.text||t.icon);}for(const e in r){const t=r[e];if(!this.opacities[e]){const r=new Et(t,o,!1,!1);r.isHidden()||(this.opacities[e]=r,i=i||t.text.placed||t.icon.placed);}}for(const e in n)this.variableOffsets[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.variableOffsets[e]=n[e]);for(const e in a)this.placedOrientations[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.placedOrientations[e]=a[e]);i?this.lastPlacementChangeTime=e:\"number\"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=t?t.lastPlacementChangeTime:e);}updateLayerOpacities(e,t){const i={};for(const o of t){const t=o.getBucket(e);t&&o.latestFeatureIndex&&e.id===t.layerIds[0]&&this.updateBucketOpacities(t,i,o.collisionBoxArray);}}updateBucketOpacities(t,i,o){t.hasTextData()&&t.text.opacityVertexArray.clear(),t.hasIconData()&&t.icon.opacityVertexArray.clear(),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexArray.clear(),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexArray.clear();const r=t.layers[0].layout,n=!!t.layers[0].dynamicFilter(),a=new Et(null,0,!1,!1,!0),s=r.get(\"text-allow-overlap\"),l=r.get(\"icon-allow-overlap\"),c=r.get(\"text-variable-anchor\"),h=\"map\"===r.get(\"text-rotation-alignment\"),u=\"map\"===r.get(\"text-pitch-alignment\"),_=\"none\"!==r.get(\"icon-text-fit\"),d=new Et(null,0,s&&(l||!t.hasIconData()||r.get(\"icon-optional\")),l&&(s||!t.hasTextData()||r.get(\"text-optional\")),!0);!t.collisionArrays&&o&&(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData())&&t.deserializeCollisionBoxes(o);const p=(e,t,i)=>{for(let o=0;o<t/4;o++)e.opacityVertexArray.emplaceBack(i);};let m=0;for(let o=0;o<t.symbolInstances.length;o++){const r=t.symbolInstances.get(o),{numHorizontalGlyphVertices:s,numVerticalGlyphVertices:l,crossTileID:f}=r;let g=this.opacities[f];i[f]?g=a:g||(g=d,this.opacities[f]=g),i[f]=!0;const v=s>0||l>0,x=r.numIconVertices>0,y=this.placedOrientations[r.crossTileID],b=y===e.WritingMode.vertical,w=y===e.WritingMode.horizontal||y===e.WritingMode.horizontalOnly;if(!v&&!x||g.isHidden()||m++,v){const e=Nt(g.text);p(t.text,s,b?Gt:e),p(t.text,l,w?Gt:e);const i=g.text.isHidden();[r.rightJustifiedTextSymbolIndex,r.centerJustifiedTextSymbolIndex,r.leftJustifiedTextSymbolIndex].forEach((e=>{e>=0&&(t.text.placedSymbolArray.get(e).hidden=i||b?1:0);})),r.verticalPlacedTextSymbolIndex>=0&&(t.text.placedSymbolArray.get(r.verticalPlacedTextSymbolIndex).hidden=i||w?1:0);const o=this.variableOffsets[r.crossTileID];o&&this.markUsedJustification(t,o.anchor,r,y);const n=this.placedOrientations[r.crossTileID];n&&(this.markUsedJustification(t,\"left\",r,n),this.markUsedOrientation(t,n,r));}if(x){const e=Nt(g.icon);r.placedIconSymbolIndex>=0&&(p(t.icon,r.numIconVertices,b?Gt:e),t.icon.placedSymbolArray.get(r.placedIconSymbolIndex).hidden=g.icon.isHidden()),r.verticalPlacedIconSymbolIndex>=0&&(p(t.icon,r.numVerticalIconVertices,w?Gt:e),t.icon.placedSymbolArray.get(r.verticalPlacedIconSymbolIndex).hidden=g.icon.isHidden());}if(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData()){const i=t.collisionArrays[o];if(i){let o=new e.pointGeometry(0,0),r=!0;if(i.textBox||i.verticalTextBox){if(c){const e=this.variableOffsets[f];e?(o=zt(e.anchor,e.width,e.height,e.textOffset,e.textScale),h&&o._rotate(u?this.transform.angle:-this.transform.angle)):r=!1;}n&&(r=!g.clipped),i.textBox&&At(t.textCollisionBox.collisionVertexArray,g.text.placed,!r||b,o.x,o.y),i.verticalTextBox&&At(t.textCollisionBox.collisionVertexArray,g.text.placed,!r||w,o.x,o.y);}const a=r&&Boolean(!w&&i.verticalIconBox);i.iconBox&&At(t.iconCollisionBox.collisionVertexArray,g.icon.placed,a,_?o.x:0,_?o.y:0),i.verticalIconBox&&At(t.iconCollisionBox.collisionVertexArray,g.icon.placed,!a,_?o.x:0,_?o.y:0);}}}if(t.fullyClipped=0===m,t.sortFeatures(this.transform.angle),this.retainedQueryData[t.bucketInstanceId]&&(this.retainedQueryData[t.bucketInstanceId].featureSortOrder=t.featureSortOrder),t.hasTextData()&&t.text.opacityVertexBuffer&&t.text.opacityVertexBuffer.updateData(t.text.opacityVertexArray),t.hasIconData()&&t.icon.opacityVertexBuffer&&t.icon.opacityVertexBuffer.updateData(t.icon.opacityVertexArray),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexBuffer&&t.iconCollisionBox.collisionVertexBuffer.updateData(t.iconCollisionBox.collisionVertexArray),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexBuffer&&t.textCollisionBox.collisionVertexBuffer.updateData(t.textCollisionBox.collisionVertexArray),t.bucketInstanceId in this.collisionCircleArrays){const e=this.collisionCircleArrays[t.bucketInstanceId];t.placementInvProjMatrix=e.invProjMatrix,t.placementViewportMatrix=e.viewportMatrix,t.collisionCircleArray=e.circles,delete this.collisionCircleArrays[t.bucketInstanceId];}}symbolFadeChange(e){return 0===this.fadeDuration?1:(e-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(e){return Math.max(0,(this.transform.zoom-e)/1.5)}hasTransitions(e){return this.stale||e-this.lastPlacementChangeTime<this.fadeDuration}stillRecent(e,t){const i=this.zoomAtLastRecencyCheck===t?1-this.zoomAdjustment(t):1;return this.zoomAtLastRecencyCheck=t,this.commitTime+this.fadeDuration*i>e}setStale(){this.stale=!0;}}function At(e,t,i,o,r){e.emplaceBack(t?1:0,i?1:0,o||0,r||0),e.emplaceBack(t?1:0,i?1:0,o||0,r||0),e.emplaceBack(t?1:0,i?1:0,o||0,r||0),e.emplaceBack(t?1:0,i?1:0,o||0,r||0);}const Lt=Math.pow(2,25),Rt=Math.pow(2,24),Ot=Math.pow(2,17),Bt=Math.pow(2,16),kt=Math.pow(2,9),Ft=Math.pow(2,8),Ut=Math.pow(2,1);function Nt(e){if(0===e.opacity&&!e.placed)return 0;if(1===e.opacity&&e.placed)return 4294967295;const t=e.placed?1:0,i=Math.floor(127*e.opacity);return i*Lt+t*Rt+i*Ot+t*Bt+i*kt+t*Ft+i*Ut+t}const Gt=0;class jt{constructor(e){this._sortAcrossTiles=\"viewport-y\"!==e.layout.get(\"symbol-z-order\")&&void 0!==e.layout.get(\"symbol-sort-key\").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[];}continuePlacement(e,t,i,o,r){const n=this._bucketParts;for(;this._currentTileIndex<e.length;)if(t.getBucketParts(n,o,e[this._currentTileIndex],this._sortAcrossTiles),this._currentTileIndex++,r())return !0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,n.sort(((e,t)=>e.sortKey-t.sortKey)));this._currentPartIndex<n.length;){const e=n[this._currentPartIndex];if(t.placeLayerBucketPart(e,this._seenCrossTileIDs,i,0===e.symbolInstanceStart),this._currentPartIndex++,r())return !0}return !1}}class Zt{constructor(e,t,i,o,r,n,a,s){this.placement=new Pt(e,r,n,a,s),this._currentPlacementIndex=t.length-1,this._forceFullPlacement=i,this._showCollisionBoxes=o,this._done=!1;}isDone(){return this._done}continuePlacement(t,i,o){const r=e.exported.now(),n=()=>{const t=e.exported.now()-r;return !this._forceFullPlacement&&t>2};for(;this._currentPlacementIndex>=0;){const e=i[t[this._currentPlacementIndex]],r=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===e.type&&(!e.minzoom||e.minzoom<=r)&&(!e.maxzoom||e.maxzoom>r)){if(this._inProgressLayer||(this._inProgressLayer=new jt(e)),this._inProgressLayer.continuePlacement(o[e.source],this.placement,this._showCollisionBoxes,e,n))return;delete this._inProgressLayer;}this._currentPlacementIndex--;}this._done=!0;}commit(e){return this.placement.commit(e),this.placement}}const Vt=512/e.EXTENT/2;class Wt{constructor(e,t,i){this.tileID=e,this.indexedSymbolInstances={},this.bucketInstanceId=i;for(let i=0;i<t.length;i++){const o=t.get(i),r=o.key;this.indexedSymbolInstances[r]||(this.indexedSymbolInstances[r]=[]),this.indexedSymbolInstances[r].push({crossTileID:o.crossTileID,coord:this.getScaledCoordinates(o,e)});}}getScaledCoordinates(t,i){const o=Vt/Math.pow(2,i.canonical.z-this.tileID.canonical.z);return {x:Math.floor((i.canonical.x*e.EXTENT+t.tileAnchorX)*o),y:Math.floor((i.canonical.y*e.EXTENT+t.tileAnchorY)*o)}}findMatches(e,t,i){const o=this.tileID.canonical.z<t.canonical.z?1:Math.pow(2,this.tileID.canonical.z-t.canonical.z);for(let r=0;r<e.length;r++){const n=e.get(r);if(n.crossTileID)continue;const a=this.indexedSymbolInstances[n.key];if(!a)continue;const s=this.getScaledCoordinates(n,t);for(const e of a)if(Math.abs(e.coord.x-s.x)<=o&&Math.abs(e.coord.y-s.y)<=o&&!i[e.crossTileID]){i[e.crossTileID]=!0,n.crossTileID=e.crossTileID;break}}}}class Xt{constructor(){this.maxCrossTileID=0;}generate(){return ++this.maxCrossTileID}}class qt{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0;}handleWrapJump(e){const t=Math.round((e-this.lng)/360);if(0!==t)for(const e in this.indexes){const i=this.indexes[e],o={};for(const e in i){const r=i[e];r.tileID=r.tileID.unwrapTo(r.tileID.wrap+t),o[r.tileID.key]=r;}this.indexes[e]=o;}this.lng=e;}addBucket(e,t,i){if(this.indexes[e.overscaledZ]&&this.indexes[e.overscaledZ][e.key]){if(this.indexes[e.overscaledZ][e.key].bucketInstanceId===t.bucketInstanceId)return !1;this.removeBucketCrossTileIDs(e.overscaledZ,this.indexes[e.overscaledZ][e.key]);}for(let e=0;e<t.symbolInstances.length;e++)t.symbolInstances.get(e).crossTileID=0;this.usedCrossTileIDs[e.overscaledZ]||(this.usedCrossTileIDs[e.overscaledZ]={});const o=this.usedCrossTileIDs[e.overscaledZ];for(const i in this.indexes){const r=this.indexes[i];if(Number(i)>e.overscaledZ)for(const i in r){const n=r[i];n.tileID.isChildOf(e)&&n.findMatches(t.symbolInstances,e,o);}else {const n=r[e.scaledTo(Number(i)).key];n&&n.findMatches(t.symbolInstances,e,o);}}for(let e=0;e<t.symbolInstances.length;e++){const r=t.symbolInstances.get(e);r.crossTileID||(r.crossTileID=i.generate(),o[r.crossTileID]=!0);}return void 0===this.indexes[e.overscaledZ]&&(this.indexes[e.overscaledZ]={}),this.indexes[e.overscaledZ][e.key]=new Wt(e,t.symbolInstances,t.bucketInstanceId),!0}removeBucketCrossTileIDs(e,t){for(const i in t.indexedSymbolInstances)for(const o of t.indexedSymbolInstances[i])delete this.usedCrossTileIDs[e][o.crossTileID];}removeStaleBuckets(e){let t=!1;for(const i in this.indexes){const o=this.indexes[i];for(const r in o)e[o[r].bucketInstanceId]||(this.removeBucketCrossTileIDs(i,o[r]),delete o[r],t=!0);}return t}}class $t{constructor(){this.layerIndexes={},this.crossTileIDs=new Xt,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={};}addLayer(e,t,i,o){let r=this.layerIndexes[e.id];void 0===r&&(r=this.layerIndexes[e.id]=new qt);let n=!1;const a={};\"globe\"!==o.name&&r.handleWrapJump(i);for(const i of t){const t=i.getBucket(e);t&&e.id===t.layerIds[0]&&(t.bucketInstanceId||(t.bucketInstanceId=++this.maxBucketInstanceId),r.addBucket(i.tileID,t,this.crossTileIDs)&&(n=!0),a[t.bucketInstanceId]=!0);}return r.removeStaleBuckets(a)&&(n=!0),n}pruneUnusedLayers(e){const t={};e.forEach((e=>{t[e]=!0;}));for(const e in this.layerIndexes)t[e]||delete this.layerIndexes[e];}}const Ht=(t,i)=>e.emitValidationErrors(t,i&&i.filter((e=>\"source.canvas\"!==e.identifier))),Yt=e.pick(Ve,[\"addLayer\",\"removeLayer\",\"setPaintProperty\",\"setLayoutProperty\",\"setFilter\",\"addSource\",\"removeSource\",\"setLayerZoomRange\",\"setLight\",\"setTransition\",\"setGeoJSONSourceData\",\"setTerrain\",\"setFog\",\"setProjection\"]),Kt=e.pick(Ve,[\"setCenter\",\"setZoom\",\"setBearing\",\"setPitch\"]),Jt={version:8,layers:[],sources:{}},Qt={fill:!0,line:!0,background:!0,hillshade:!0,raster:!0};class ei extends e.Evented{constructor(t,i={}){super(),this.map=t,this.dispatcher=new A(Ge(),this),this.imageManager=new y,this.imageManager.setEventedParent(this),this.glyphManager=new e.GlyphManager(t._requestManager,i.localFontFamily?e.LocalGlyphMode.all:i.localIdeographFontFamily?e.LocalGlyphMode.ideographs:e.LocalGlyphMode.none,i.localFontFamily||i.localIdeographFontFamily),this.lineAtlas=new e.LineAtlas(256,512),this.crossTileSymbolIndex=new $t,this._layers={},this._num3DLayers=0,this._numSymbolLayers=0,this._numCircleLayers=0,this._serializedLayers={},this._sourceCaches={},this._otherSourceCaches={},this._symbolSourceCaches={},this.zoomHistory=new e.ZoomHistory,this._loaded=!1,this._availableImages=[],this._order=[],this._drapedFirstOrder=[],this._markersNeedUpdate=!1,this._resetUpdates(),this.dispatcher.broadcast(\"setReferrer\",e.getReferrer());const o=this;this._rtlTextPluginCallback=ei.registerForPluginStateChange((t=>{o.dispatcher.broadcast(\"syncRTLPluginState\",{pluginStatus:t.pluginStatus,pluginURL:t.pluginURL},((t,i)=>{if(e.triggerPluginCompletionEvent(t),i&&i.every((e=>e)))for(const e in o._sourceCaches){const t=o._sourceCaches[e],i=t.getSource().type;\"vector\"!==i&&\"geojson\"!==i||t.reload();}}));})),this.on(\"data\",(e=>{if(\"source\"!==e.dataType||\"metadata\"!==e.sourceDataType)return;const t=this.getSource(e.sourceId);if(t&&t.vectorLayerIds)for(const e in this._layers){const i=this._layers[e];i.source===t.id&&this._validateLayer(i);}}));}loadURL(t,i={}){this.fire(new e.Event(\"dataloading\",{dataType:\"style\"}));const o=\"boolean\"==typeof i.validate?i.validate:!e.isMapboxURL(t);t=this.map._requestManager.normalizeStyleURL(t,i.accessToken);const r=this.map._requestManager.transformRequest(t,e.ResourceType.Style);this._request=e.getJSON(r,((t,i)=>{this._request=null,t?this.fire(new e.ErrorEvent(t)):i&&this._load(i,o);}));}loadJSON(t,i={}){this.fire(new e.Event(\"dataloading\",{dataType:\"style\"})),this._request=e.exported.frame((()=>{this._request=null,this._load(t,!1!==i.validate);}));}loadEmpty(){this.fire(new e.Event(\"dataloading\",{dataType:\"style\"})),this._load(Jt,!1);}_updateLayerCount(e,t){const i=t?1:-1;e.is3D()&&(this._num3DLayers+=i),\"circle\"===e.type&&(this._numCircleLayers+=i),\"symbol\"===e.type&&(this._numSymbolLayers+=i);}_load(t,i){if(i&&Ht(this,e.validateStyle(t)))return;this._loaded=!0,this.stylesheet=e.clone$1(t),this._updateMapProjection();for(const e in t.sources)this.addSource(e,t.sources[e],{validate:!1});this._changed=!1,t.sprite?this._loadSprite(t.sprite):(this.imageManager.setLoaded(!0),this.dispatcher.broadcast(\"spriteLoaded\",!0)),this.glyphManager.setURL(t.glyphs);const o=Ze(this.stylesheet.layers);this._order=o.map((e=>e.id)),this._layers={},this._serializedLayers={};for(let t of o)t=e.createStyleLayer(t),t.setEventedParent(this,{layer:{id:t.id}}),this._layers[t.id]=t,this._serializedLayers[t.id]=t.serialize(),this._updateLayerCount(t,!0);this.dispatcher.broadcast(\"setLayers\",this._serializeLayers(this._order)),this.light=new T(this.stylesheet.light),this.stylesheet.terrain&&!this.terrainSetForDrapingOnly()&&this._createTerrain(this.stylesheet.terrain,1),this.stylesheet.fog&&this._createFog(this.stylesheet.fog),this._updateDrapeFirstLayers(),this.fire(new e.Event(\"data\",{dataType:\"style\"})),this.fire(new e.Event(\"style.load\"));}terrainSetForDrapingOnly(){return !!this.terrain&&0===this.terrain.drapeRenderMode}setProjection(e){e?this.stylesheet.projection=e:delete this.stylesheet.projection,this._updateMapProjection();}applyProjectionUpdate(){this._loaded&&(this.dispatcher.broadcast(\"setProjection\",this.map.transform.projectionOptions),this.map.transform.projection.requiresDraping?this.getTerrain()||this.stylesheet.terrain||this.setTerrainForDraping():this.terrainSetForDrapingOnly()&&this.setTerrain(null));}_updateMapProjection(){this.map._useExplicitProjection?this.applyProjectionUpdate():this.map._prioritizeAndUpdateProjection(null,this.stylesheet.projection);}_loadSprite(t){this._spriteRequest=function(t,i,o){let r,n,a;const s=e.exported.devicePixelRatio>1?\"@2x\":\"\";let l=e.getJSON(i.transformRequest(i.normalizeSpriteURL(t,s,\".json\"),e.ResourceType.SpriteJSON),((e,t)=>{l=null,a||(a=e,r=t,h());})),c=e.getImage(i.transformRequest(i.normalizeSpriteURL(t,s,\".png\"),e.ResourceType.SpriteImage),((e,t)=>{c=null,a||(a=e,n=t,h());}));function h(){if(a)o(a);else if(r&&n){const t=e.exported.getImageData(n),i={};for(const o in r){const{width:n,height:a,x:s,y:l,sdf:c,pixelRatio:h,stretchX:u,stretchY:_,content:d}=r[o],p=new e.RGBAImage({width:n,height:a});e.RGBAImage.copy(t,p,{x:s,y:l},{x:0,y:0},{width:n,height:a}),i[o]={data:p,pixelRatio:h,sdf:c,stretchX:u,stretchY:_,content:d};}o(null,i);}}return {cancel(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null);}}}(t,this.map._requestManager,((t,i)=>{if(this._spriteRequest=null,t)this.fire(new e.ErrorEvent(t));else if(i)for(const e in i)this.imageManager.addImage(e,i[e]);this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),this.dispatcher.broadcast(\"setImages\",this._availableImages),this.dispatcher.broadcast(\"spriteLoaded\",!0),this.fire(new e.Event(\"data\",{dataType:\"style\"}));}));}_validateLayer(t){const i=this.getSource(t.source);if(!i)return;const o=t.sourceLayer;o&&(\"geojson\"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(o))&&this.fire(new e.ErrorEvent(new Error(`Source layer \"${o}\" does not exist on source \"${i.id}\" as specified by style layer \"${t.id}\"`)));}loaded(){if(!this._loaded)return !1;if(Object.keys(this._updatedSources).length)return !1;for(const e in this._sourceCaches)if(!this._sourceCaches[e].loaded())return !1;return !!this.imageManager.isLoaded()}_serializeLayers(e){const t=[];for(const i of e){const e=this._layers[i];\"custom\"!==e.type&&t.push(e.serialize());}return t}hasTransitions(){if(this.light&&this.light.hasTransition())return !0;if(this.fog&&this.fog.hasTransition())return !0;for(const e in this._sourceCaches)if(this._sourceCaches[e].hasTransition())return !0;for(const e in this._layers)if(this._layers[e].hasTransition())return !0;return !1}get order(){return this.map._optimizeForTerrain&&this.terrain?this._drapedFirstOrder:this._order}isLayerDraped(e){return !!this.terrain&&Qt[e.type]}_checkLoaded(){if(!this._loaded)throw new Error(\"Style is not done loading\")}update(t){if(!this._loaded)return;const i=this._changed;if(this._changed){const e=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(e.length||i.length)&&this._updateWorkerLayers(e,i);for(const e in this._updatedSources){const t=this._updatedSources[e];\"reload\"===t?this._reloadSource(e):\"clear\"===t&&this._clearSource(e);}this._updateTilesForChangedImages();for(const e in this._updatedPaintProps)this._layers[e].updateTransitions(t);this.light.updateTransitions(t),this.fog&&this.fog.updateTransitions(t),this._resetUpdates();}const o={};for(const e in this._sourceCaches){const t=this._sourceCaches[e];o[e]=t.used,t.used=!1;}for(const e of this._order){const i=this._layers[e];if(i.recalculate(t,this._availableImages),!i.isHidden(t.zoom)){const e=this._getLayerSourceCache(i);e&&(e.used=!0);}const o=this.map.painter;if(o){const e=i.getProgramIds();if(!e)continue;const r=i.getProgramConfiguration(t.zoom);for(const t of e)o.useProgram(t,r);}}for(const t in o){const i=this._sourceCaches[t];o[t]!==i.used&&i.getSource().fire(new e.Event(\"data\",{sourceDataType:\"visibility\",dataType:\"source\",sourceId:i.getSource().id}));}this.light.recalculate(t),this.terrain&&this.terrain.recalculate(t),this.fog&&this.fog.recalculate(t),this.z=t.zoom,this._markersNeedUpdate&&(this._updateMarkersOpacity(),this._markersNeedUpdate=!1),i&&this.fire(new e.Event(\"data\",{dataType:\"style\"}));}_updateTilesForChangedImages(){const e=Object.keys(this._changedImages);if(e.length){for(const t in this._sourceCaches)this._sourceCaches[t].reloadTilesForDependencies([\"icons\",\"patterns\"],e);this._changedImages={};}}_updateWorkerLayers(e,t){this.dispatcher.broadcast(\"updateLayers\",{layers:this._serializeLayers(e),removedIds:t});}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={};}setState(i){if(this._checkLoaded(),Ht(this,e.validateStyle(i)))return !1;(i=e.clone$1(i)).layers=Ze(i.layers);const o=function(e,i){if(!e)return [{command:Ve.setStyle,args:[i]}];let o=[];try{if(!t(e.version,i.version))return [{command:Ve.setStyle,args:[i]}];t(e.center,i.center)||o.push({command:Ve.setCenter,args:[i.center]}),t(e.zoom,i.zoom)||o.push({command:Ve.setZoom,args:[i.zoom]}),t(e.bearing,i.bearing)||o.push({command:Ve.setBearing,args:[i.bearing]}),t(e.pitch,i.pitch)||o.push({command:Ve.setPitch,args:[i.pitch]}),t(e.sprite,i.sprite)||o.push({command:Ve.setSprite,args:[i.sprite]}),t(e.glyphs,i.glyphs)||o.push({command:Ve.setGlyphs,args:[i.glyphs]}),t(e.transition,i.transition)||o.push({command:Ve.setTransition,args:[i.transition]}),t(e.light,i.light)||o.push({command:Ve.setLight,args:[i.light]}),t(e.fog,i.fog)||o.push({command:Ve.setFog,args:[i.fog]}),t(e.projection,i.projection)||o.push({command:Ve.setProjection,args:[i.projection]});const r={},n=[];!function(e,i,o,r){let n;for(n in i=i||{},e=e||{})e.hasOwnProperty(n)&&(i.hasOwnProperty(n)||Xe(n,o,r));for(n in i)i.hasOwnProperty(n)&&(e.hasOwnProperty(n)?t(e[n],i[n])||(\"geojson\"===e[n].type&&\"geojson\"===i[n].type&&$e(e,i,n)?o.push({command:Ve.setGeoJSONSourceData,args:[n,i[n].data]}):qe(n,i,o,r)):We(n,i,o));}(e.sources,i.sources,n,r);const a=[];e.layers&&e.layers.forEach((e=>{e.source&&r[e.source]?o.push({command:Ve.removeLayer,args:[e.id]}):a.push(e);}));let s=e.terrain;s&&r[s.source]&&(o.push({command:Ve.setTerrain,args:[void 0]}),s=void 0),o=o.concat(n),t(s,i.terrain)||o.push({command:Ve.setTerrain,args:[i.terrain]}),function(e,i,o){i=i||[];const r=(e=e||[]).map(Ye),n=i.map(Ye),a=e.reduce(Ke,{}),s=i.reduce(Ke,{}),l=r.slice(),c=Object.create(null);let h,u,_,d,p,m,f;for(h=0,u=0;h<r.length;h++)_=r[h],s.hasOwnProperty(_)?u++:(o.push({command:Ve.removeLayer,args:[_]}),l.splice(l.indexOf(_,u),1));for(h=0,u=0;h<n.length;h++)_=n[n.length-1-h],l[l.length-1-h]!==_&&(a.hasOwnProperty(_)?(o.push({command:Ve.removeLayer,args:[_]}),l.splice(l.lastIndexOf(_,l.length-u),1)):u++,m=l[l.length-h],o.push({command:Ve.addLayer,args:[s[_],m]}),l.splice(l.length-h,0,_),c[_]=!0);for(h=0;h<n.length;h++)if(_=n[h],d=a[_],p=s[_],!c[_]&&!t(d,p))if(t(d.source,p.source)&&t(d[\"source-layer\"],p[\"source-layer\"])&&t(d.type,p.type)){for(f in He(d.layout,p.layout,o,_,null,Ve.setLayoutProperty),He(d.paint,p.paint,o,_,null,Ve.setPaintProperty),t(d.filter,p.filter)||o.push({command:Ve.setFilter,args:[_,p.filter]}),t(d.minzoom,p.minzoom)&&t(d.maxzoom,p.maxzoom)||o.push({command:Ve.setLayerZoomRange,args:[_,p.minzoom,p.maxzoom]}),d)d.hasOwnProperty(f)&&\"layout\"!==f&&\"paint\"!==f&&\"filter\"!==f&&\"metadata\"!==f&&\"minzoom\"!==f&&\"maxzoom\"!==f&&(0===f.indexOf(\"paint.\")?He(d[f],p[f],o,_,f.slice(6),Ve.setPaintProperty):t(d[f],p[f])||o.push({command:Ve.setLayerProperty,args:[_,f,p[f]]}));for(f in p)p.hasOwnProperty(f)&&!d.hasOwnProperty(f)&&\"layout\"!==f&&\"paint\"!==f&&\"filter\"!==f&&\"metadata\"!==f&&\"minzoom\"!==f&&\"maxzoom\"!==f&&(0===f.indexOf(\"paint.\")?He(d[f],p[f],o,_,f.slice(6),Ve.setPaintProperty):t(d[f],p[f])||o.push({command:Ve.setLayerProperty,args:[_,f,p[f]]}));}else o.push({command:Ve.removeLayer,args:[_]}),m=l[l.lastIndexOf(_)+1],o.push({command:Ve.addLayer,args:[p,m]});}(a,i.layers,o);}catch(e){console.warn(\"Unable to compute style diff:\",e),o=[{command:Ve.setStyle,args:[i]}];}return o}(this.serialize(),i).filter((e=>!(e.command in Kt)));if(0===o.length)return !1;const r=o.filter((e=>!(e.command in Yt)));if(r.length>0)throw new Error(`Unimplemented: ${r.map((e=>e.command)).join(\", \")}.`);return o.forEach((e=>{\"setTransition\"!==e.command&&\"setProjection\"!==e.command&&this[e.command].apply(this,e.args);})),this.stylesheet=i,this._updateMapProjection(),!0}addImage(t,i){return this.getImage(t)?this.fire(new e.ErrorEvent(new Error(\"An image with this name already exists.\"))):(this.imageManager.addImage(t,i),this._afterImageUpdated(t),this)}updateImage(e,t){this.imageManager.updateImage(e,t);}getImage(e){return this.imageManager.getImage(e)}removeImage(t){return this.getImage(t)?(this.imageManager.removeImage(t),this._afterImageUpdated(t),this):this.fire(new e.ErrorEvent(new Error(\"No image with this name exists.\")))}_afterImageUpdated(t){this._availableImages=this.imageManager.listImages(),this._changedImages[t]=!0,this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new e.Event(\"data\",{dataType:\"style\"}));}listImages(){return this._checkLoaded(),this._availableImages.slice()}addSource(t,i,o={}){if(this._checkLoaded(),void 0!==this.getSource(t))throw new Error(\"There is already a source with this ID\");if(!i.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(i).join(\", \")}.`);if([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(i.type)>=0&&this._validate(e.validateSource,`sources.${t}`,i,null,o))return;this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);const r=Ae(t,i,this.dispatcher,this);r.setEventedParent(this,(()=>({isSourceLoaded:this._isSourceCacheLoaded(t),source:r.serialize(),sourceId:t})));const n=i=>{const o=(i?\"symbol:\":\"other:\")+t,n=this._sourceCaches[o]=new e.SourceCache(o,r,i);(i?this._symbolSourceCaches:this._otherSourceCaches)[t]=n,n.style=this,n.onAdd(this.map);};n(!1),\"vector\"!==i.type&&\"geojson\"!==i.type||n(!0),r.onAdd&&r.onAdd(this.map),this._changed=!0;}removeSource(t){this._checkLoaded();const i=this.getSource(t);if(!i)throw new Error(\"There is no source with this ID\");for(const i in this._layers)if(this._layers[i].source===t)return this.fire(new e.ErrorEvent(new Error(`Source \"${t}\" cannot be removed while layer \"${i}\" is using it.`)));if(this.terrain&&this.terrain.get().source===t)return this.fire(new e.ErrorEvent(new Error(`Source \"${t}\" cannot be removed while terrain is using it.`)));const o=this._getSourceCaches(t);for(const t of o)delete this._sourceCaches[t.id],delete this._updatedSources[t.id],t.fire(new e.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:t.getSource().id})),t.setEventedParent(null),t.clearTiles();return delete this._otherSourceCaches[t],delete this._symbolSourceCaches[t],i.setEventedParent(null),i.onRemove&&i.onRemove(this.map),this._changed=!0,this}setGeoJSONSourceData(e,t){this._checkLoaded(),this.getSource(e).setData(t),this._changed=!0;}getSource(e){const t=this._getSourceCache(e);return t&&t.getSource()}addLayer(t,i,o={}){this._checkLoaded();const r=t.id;if(this.getLayer(r))return void this.fire(new e.ErrorEvent(new Error(`Layer with id \"${r}\" already exists on this map`)));let n;if(\"custom\"===t.type){if(Ht(this,e.validateCustomStyleLayer(t)))return;n=e.createStyleLayer(t);}else {if(\"object\"==typeof t.source&&(this.addSource(r,t.source),t=e.clone$1(t),t=e.extend(t,{source:r})),this._validate(e.validateLayer,`layers.${r}`,t,{arrayIndex:-1},o))return;n=e.createStyleLayer(t),this._validateLayer(n),n.setEventedParent(this,{layer:{id:r}}),this._serializedLayers[n.id]=n.serialize(),this._updateLayerCount(n,!0);}const a=i?this._order.indexOf(i):this._order.length;if(i&&-1===a)return void this.fire(new e.ErrorEvent(new Error(`Layer with id \"${i}\" does not exist on this map.`)));this._order.splice(a,0,r),this._layerOrderChanged=!0,this._layers[r]=n;const s=this._getLayerSourceCache(n);if(this._removedLayers[r]&&n.source&&s&&\"custom\"!==n.type){const e=this._removedLayers[r];delete this._removedLayers[r],e.type!==n.type?this._updatedSources[n.source]=\"clear\":(this._updatedSources[n.source]=\"reload\",s.pause());}this._updateLayer(n),n.onAdd&&n.onAdd(this.map),this._updateDrapeFirstLayers();}moveLayer(t,i){if(this._checkLoaded(),this._changed=!0,!this._layers[t])return void this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be moved.`)));if(t===i)return;const o=this._order.indexOf(t);this._order.splice(o,1);const r=i?this._order.indexOf(i):this._order.length;i&&-1===r?this.fire(new e.ErrorEvent(new Error(`Layer with id \"${i}\" does not exist on this map.`))):(this._order.splice(r,0,t),this._layerOrderChanged=!0,this._updateDrapeFirstLayers());}removeLayer(t){this._checkLoaded();const i=this._layers[t];if(!i)return void this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be removed.`)));i.setEventedParent(null),this._updateLayerCount(i,!1);const o=this._order.indexOf(t);this._order.splice(o,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[t]=i,delete this._layers[t],delete this._serializedLayers[t],delete this._updatedLayers[t],delete this._updatedPaintProps[t],i.onRemove&&i.onRemove(this.map),this._updateDrapeFirstLayers();}getLayer(e){return this._layers[e]}hasLayer(e){return e in this._layers}hasLayerType(e){for(const t in this._layers)if(this._layers[t].type===e)return !0;return !1}setLayerZoomRange(t,i,o){this._checkLoaded();const r=this.getLayer(t);r?r.minzoom===i&&r.maxzoom===o||(null!=i&&(r.minzoom=i),null!=o&&(r.maxzoom=o),this._updateLayer(r)):this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot have zoom extent.`)));}setFilter(i,o,r={}){this._checkLoaded();const n=this.getLayer(i);if(n){if(!t(n.filter,o))return null==o?(n.filter=void 0,void this._updateLayer(n)):void(this._validate(e.validateFilter,`layers.${n.id}.filter`,o,{layerType:n.type},r)||(n.filter=e.clone$1(o),this._updateLayer(n)))}else this.fire(new e.ErrorEvent(new Error(`The layer '${i}' does not exist in the map's style and cannot be filtered.`)));}getFilter(t){const i=this.getLayer(t);return i&&e.clone$1(i.filter)}setLayoutProperty(i,o,r,n={}){this._checkLoaded();const a=this.getLayer(i);a?t(a.getLayoutProperty(o),r)||(a.setLayoutProperty(o,r,n),this._updateLayer(a)):this.fire(new e.ErrorEvent(new Error(`The layer '${i}' does not exist in the map's style and cannot be styled.`)));}getLayoutProperty(t,i){const o=this.getLayer(t);if(o)return o.getLayoutProperty(i);this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style.`)));}setPaintProperty(i,o,r,n={}){this._checkLoaded();const a=this.getLayer(i);a?t(a.getPaintProperty(o),r)||(a.setPaintProperty(o,r,n)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[i]=!0):this.fire(new e.ErrorEvent(new Error(`The layer '${i}' does not exist in the map's style and cannot be styled.`)));}getPaintProperty(e,t){const i=this.getLayer(e);return i&&i.getPaintProperty(t)}setFeatureState(t,i){this._checkLoaded();const o=t.source,r=t.sourceLayer,n=this.getSource(o);if(!n)return void this.fire(new e.ErrorEvent(new Error(`The source '${o}' does not exist in the map's style.`)));const a=n.type;if(\"geojson\"===a&&r)return void this.fire(new e.ErrorEvent(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\")));if(\"vector\"===a&&!r)return void this.fire(new e.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));void 0===t.id&&this.fire(new e.ErrorEvent(new Error(\"The feature id parameter must be provided.\")));const s=this._getSourceCaches(o);for(const e of s)e.setFeatureState(r,t.id,i);}removeFeatureState(t,i){this._checkLoaded();const o=t.source,r=this.getSource(o);if(!r)return void this.fire(new e.ErrorEvent(new Error(`The source '${o}' does not exist in the map's style.`)));const n=r.type,a=\"vector\"===n?t.sourceLayer:void 0;if(\"vector\"===n&&!a)return void this.fire(new e.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));if(i&&\"string\"!=typeof t.id&&\"number\"!=typeof t.id)return void this.fire(new e.ErrorEvent(new Error(\"A feature id is required to remove its specific state property.\")));const s=this._getSourceCaches(o);for(const e of s)e.removeFeatureState(a,t.id,i);}getFeatureState(t){this._checkLoaded();const i=t.source,o=t.sourceLayer,r=this.getSource(i);if(r){if(\"vector\"!==r.type||o)return void 0===t.id&&this.fire(new e.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),this._getSourceCaches(i)[0].getFeatureState(o,t.id);this.fire(new e.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}else this.fire(new e.ErrorEvent(new Error(`The source '${i}' does not exist in the map's style.`)));}getTransition(){return e.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){const t={};for(const e in this._sourceCaches){const i=this._sourceCaches[e].getSource();t[i.id]||(t[i.id]=i.serialize());}return e.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,terrain:this.stylesheet.terrain,fog:this.stylesheet.fog,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,projection:this.stylesheet.projection,sources:t,layers:this._serializeLayers(this._order)},(e=>void 0!==e))}_updateLayer(e){this._updatedLayers[e.id]=!0;const t=this._getLayerSourceCache(e);e.source&&!this._updatedSources[e.source]&&t&&\"raster\"!==t.getSource().type&&(this._updatedSources[e.source]=\"reload\",t.pause()),this._changed=!0,e.invalidateCompiledFilter();}_flattenAndSortRenderedFeatures(e){const t=e=>\"fill-extrusion\"===this._layers[e].type,i={},o=[];for(let r=this._order.length-1;r>=0;r--){const n=this._order[r];if(t(n)){i[n]=r;for(const t of e){const e=t[n];if(e)for(const t of e)o.push(t);}}}o.sort(((e,t)=>t.intersectionZ-e.intersectionZ));const r=[];for(let n=this._order.length-1;n>=0;n--){const a=this._order[n];if(t(a))for(let e=o.length-1;e>=0;e--){const t=o[e].feature;if(i[t.layer.id]<n)break;r.push(t),o.pop();}else for(const t of e){const e=t[a];if(e)for(const t of e)r.push(t.feature);}}return r}queryRenderedFeatures(t,i,o){i&&i.filter&&this._validate(e.validateFilter,\"queryRenderedFeatures.filter\",i.filter,null,i);const r={};if(i&&i.layers){if(!Array.isArray(i.layers))return this.fire(new e.ErrorEvent(new Error(\"parameters.layers must be an Array.\"))),[];for(const t of i.layers){const i=this._layers[t];if(!i)return this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be queried for features.`))),[];r[i.source]=!0;}}const n=[];i.availableImages=this._availableImages;const a=i&&i.layers?i.layers.some((e=>{const t=this.getLayer(e);return t&&t.is3D()})):this.has3DLayers(),s=R.createFromScreenPoints(t,o);for(const e in this._sourceCaches){const t=this._sourceCaches[e].getSource().id;i.layers&&!r[t]||n.push(Re(this._sourceCaches[e],this._layers,this._serializedLayers,s,i,o,a,!!this.map._showQueryGeometry));}return this.placement&&n.push(function(e,t,i,o,r,n,a){const s={},l=n.queryRenderedSymbols(o),c=[];for(const e of Object.keys(l).map(Number))c.push(a[e]);c.sort(Be);for(const i of c){const o=i.featureIndex.lookupSymbolFeatures(l[i.bucketInstanceId],t,i.bucketIndex,i.sourceLayerIndex,r.filter,r.layers,r.availableImages,e);for(const e in o){const t=s[e]=s[e]||[],r=o[e];r.sort(((e,t)=>{const o=i.featureSortOrder;if(o){const i=o.indexOf(e.featureIndex);return o.indexOf(t.featureIndex)-i}return t.featureIndex-e.featureIndex}));for(const e of r)t.push(e);}}for(const t in s)s[t].forEach((o=>{const r=o.feature,n=i(e[t]).getFeatureState(r.layer[\"source-layer\"],r.id);r.source=r.layer.source,r.layer[\"source-layer\"]&&(r.sourceLayer=r.layer[\"source-layer\"]),r.state=n;}));return s}(this._layers,this._serializedLayers,this._getLayerSourceCache.bind(this),s.screenGeometry,i,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(n)}querySourceFeatures(t,i){i&&i.filter&&this._validate(e.validateFilter,\"querySourceFeatures.filter\",i.filter,null,i);const o=this._getSourceCaches(t);let r=[];for(const e of o)r=r.concat(Oe(e,i));return r}addSourceType(e,t,i){return ei.getSourceType(e)?i(new Error(`A source type called \"${e}\" already exists.`)):(ei.setSourceType(e,t),t.workerSourceURL?void this.dispatcher.broadcast(\"loadWorkerSource\",{name:e,url:t.workerSourceURL},i):i(null,null))}getLight(){return this.light.getLight()}setLight(e,i={}){this._checkLoaded();const o=this.light.getLight();let r=!1;for(const i in e)if(!t(e[i],o[i])){r=!0;break}if(!r)return;const n=this._setTransitionParameters({duration:300,delay:0});this.light.setLight(e,i),this.light.updateTransitions(n);}getTerrain(){return this.terrain&&1===this.terrain.drapeRenderMode?this.terrain.get():null}setTerrainForDraping(){this.setTerrain({source:\"\",exaggeration:0},0);}setTerrain(i,o=1){if(this._checkLoaded(),!i)return delete this.terrain,delete this.stylesheet.terrain,this.dispatcher.broadcast(\"enableTerrain\",!1),this._force3DLayerUpdate(),void(this._markersNeedUpdate=!0);if(1===o){if(\"object\"==typeof i.source){const t=\"terrain-dem-src\";this.addSource(t,i.source),i=e.clone$1(i),i=e.extend(i,{source:t});}if(this._validate(e.validateTerrain,\"terrain\",i))return}if(!this.terrain||this.terrain&&o!==this.terrain.drapeRenderMode)this._createTerrain(i,o);else {const o=this.terrain,r=o.get();for(const t of Object.keys(e.spec.terrain))!i.hasOwnProperty(t)&&e.spec.terrain[t].default&&(i[t]=e.spec.terrain[t].default);for(const e in i)if(!t(i[e],r[e])){o.set(i),this.stylesheet.terrain=i;const e=this._setTransitionParameters({duration:0});o.updateTransitions(e);break}}this._updateDrapeFirstLayers(),this._markersNeedUpdate=!0;}_createFog(e){const t=this.fog=new P(e,this.map.transform);this.stylesheet.fog=e;const i=this._setTransitionParameters({duration:0});t.updateTransitions(i);}_updateMarkersOpacity(){0!==this.map._markers.length&&this.map._requestDomTask((()=>{for(const e of this.map._markers)e._evaluateOpacity();}));}getFog(){return this.fog?this.fog.get():null}setFog(e){if(this._checkLoaded(),!e)return delete this.fog,delete this.stylesheet.fog,void(this._markersNeedUpdate=!0);if(this.fog){const i=this.fog,o=i.get();0===Object.keys(e).length&&i.set(e);for(const r in e)if(!t(e[r],o[r])){i.set(e),this.stylesheet.fog=e;const t=this._setTransitionParameters({duration:0});i.updateTransitions(t);break}}else this._createFog(e);this._markersNeedUpdate=!0;}_setTransitionParameters(t){return {now:e.exported.now(),transition:e.extend(t,this.stylesheet.transition)}}_updateDrapeFirstLayers(){if(!this.map._optimizeForTerrain||!this.terrain)return;const e=this._order.filter((e=>this.isLayerDraped(this._layers[e]))),t=this._order.filter((e=>!this.isLayerDraped(this._layers[e])));this._drapedFirstOrder=[],this._drapedFirstOrder.push(...e),this._drapedFirstOrder.push(...t);}_createTerrain(e,t){const i=this.terrain=new I(e,t);this.stylesheet.terrain=e,this.dispatcher.broadcast(\"enableTerrain\",!this.terrainSetForDrapingOnly()),this._force3DLayerUpdate();const o=this._setTransitionParameters({duration:0});i.updateTransitions(o);}_force3DLayerUpdate(){for(const e in this._layers){const t=this._layers[e];\"fill-extrusion\"===t.type&&this._updateLayer(t);}}_forceSymbolLayerUpdate(){for(const e in this._layers){const t=this._layers[e];\"symbol\"===t.type&&this._updateLayer(t);}}_validate(t,i,o,r,n={}){return (!n||!1!==n.validate)&&Ht(this,t.call(e.validateStyle,e.extend({key:i,style:this.serialize(),value:o,styleSpec:e.spec},r)))}_remove(){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),e.evented.off(\"pluginStateChange\",this._rtlTextPluginCallback);for(const e in this._layers)this._layers[e].setEventedParent(null);for(const e in this._sourceCaches)this._sourceCaches[e].clearTiles(),this._sourceCaches[e].setEventedParent(null);this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove();}_clearSource(e){const t=this._getSourceCaches(e);for(const e of t)e.clearTiles();}_reloadSource(e){const t=this._getSourceCaches(e);for(const e of t)e.resume(),e.reload();}_updateSources(e){for(const t in this._sourceCaches)this._sourceCaches[t].update(e);}_generateCollisionBoxes(){for(const e in this._sourceCaches){const t=this._sourceCaches[e];t.resume(),t.reload();}}_updatePlacement(t,i,o,r,n=!1){let a=!1,s=!1;const l={};for(const e of this._order){const i=this._layers[e];if(\"symbol\"!==i.type)continue;if(!l[i.source]){const e=this._getLayerSourceCache(i);if(!e)continue;l[i.source]=e.getRenderableIds(!0).map((t=>e.getTileByID(t))).sort(((e,t)=>t.tileID.overscaledZ-e.tileID.overscaledZ||(e.tileID.isLessThan(t.tileID)?-1:1)));}const o=this.crossTileSymbolIndex.addLayer(i,l[i.source],t.center.lng,t.projection);a=a||o;}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),n=n||this._layerOrderChanged||0===o,this._layerOrderChanged&&this.fire(new e.Event(\"neworder\")),(n||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(e.exported.now(),t.zoom))&&(this.pauseablePlacement=new Zt(t,this._order,n,i,o,r,this.placement,this.fog&&t.projection.supportsFog?this.fog.state:null),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,l),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(e.exported.now()),s=!0),a&&this.pauseablePlacement.placement.setStale()),s||a)for(const e of this._order){const t=this._layers[e];\"symbol\"===t.type&&this.placement.updateLayerOpacities(t,l[t.source]);}return !this.pauseablePlacement.isDone()||this.placement.hasTransitions(e.exported.now())}_releaseSymbolFadeTiles(){for(const e in this._sourceCaches)this._sourceCaches[e].releaseSymbolFadeTiles();}getImages(e,t,i){this.imageManager.getImages(t.icons,i),this._updateTilesForChangedImages();const o=e=>{e&&e.setDependencies(t.tileID.key,t.type,t.icons);};o(this._otherSourceCaches[t.source]),o(this._symbolSourceCaches[t.source]);}getGlyphs(e,t,i){this.glyphManager.getGlyphs(t.stacks,i);}getResource(t,i,o){return e.makeRequest(i,o)}_getSourceCache(e){return this._otherSourceCaches[e]}_getLayerSourceCache(e){return \"symbol\"===e.type?this._symbolSourceCaches[e.source]:this._otherSourceCaches[e.source]}_getSourceCaches(e){const t=[];return this._otherSourceCaches[e]&&t.push(this._otherSourceCaches[e]),this._symbolSourceCaches[e]&&t.push(this._symbolSourceCaches[e]),t}_isSourceCacheLoaded(t){const i=this._getSourceCaches(t);return 0===i.length?(this.fire(new e.ErrorEvent(new Error(`There is no source with ID '${t}'`))),!1):i.every((e=>e.loaded()))}has3DLayers(){return this._num3DLayers>0}hasSymbolLayers(){return this._numSymbolLayers>0}hasCircleLayers(){return this._numCircleLayers>0}_clearWorkerCaches(){this.dispatcher.broadcast(\"clearCaches\");}destroy(){this._clearWorkerCaches(),this.terrainSetForDrapingOnly()&&(delete this.terrain,delete this.stylesheet.terrain);}}ei.getSourceType=function(e){return Pe[e]},ei.setSourceType=function(e,t){Pe[e]=t;},ei.registerForPluginStateChange=e.registerForPluginStateChange;var ti=\"\\n#define EPSILON 0.0000001\\n#define PI 3.141592653589793\\n#define EXTENT 8192.0\\n#define HALF_PI PI/2.0\\n#define QUARTER_PI PI/4.0\\n#define RAD_TO_DEG 180.0/PI\\n#define DEG_TO_RAD PI/180.0\\n#define GLOBE_RADIUS EXTENT/PI/2.0\",ii=\"attribute highp vec3 a_pos_3f;uniform lowp mat4 u_matrix;varying highp vec3 v_uv;void main() {const mat3 half_neg_pi_around_x=mat3(1.0,0.0, 0.0,0.0,0.0,-1.0,0.0,1.0, 0.0);v_uv=half_neg_pi_around_x*a_pos_3f;vec4 pos=u_matrix*vec4(a_pos_3f,1.0);gl_Position=pos.xyww;}\",oi=\"\\n#define ELEVATION_SCALE 7.0\\n#define ELEVATION_OFFSET 450.0\\n#ifdef PROJECTION_GLOBE_VIEW\\nuniform vec3 u_tile_tl_up;uniform vec3 u_tile_tr_up;uniform vec3 u_tile_br_up;uniform vec3 u_tile_bl_up;uniform float u_tile_up_scale;vec3 elevationVector(vec2 pos) {vec2 uv=pos/EXTENT;vec3 up=normalize(mix(\\nmix(u_tile_tl_up,u_tile_tr_up,uv.xxx),mix(u_tile_bl_up,u_tile_br_up,uv.xxx),uv.yyy));return up*u_tile_up_scale;}\\n#else\\nvec3 elevationVector(vec2 pos) { return vec3(0,0,1); }\\n#endif\\n#ifdef TERRAIN\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nuniform highp sampler2D u_dem;uniform highp sampler2D u_dem_prev;\\n#else\\nuniform sampler2D u_dem;uniform sampler2D u_dem_prev;\\n#endif\\nuniform vec4 u_dem_unpack;uniform vec2 u_dem_tl;uniform vec2 u_dem_tl_prev;uniform float u_dem_scale;uniform float u_dem_scale_prev;uniform float u_dem_size;uniform float u_dem_lerp;uniform float u_exaggeration;uniform float u_meter_to_dem;uniform mat4 u_label_plane_matrix_inv;uniform sampler2D u_depth;uniform vec2 u_depth_size_inv;vec4 tileUvToDemSample(vec2 uv,float dem_size,float dem_scale,vec2 dem_tl) {vec2 pos=dem_size*(uv*dem_scale+dem_tl)+1.0;vec2 f=fract(pos);return vec4((pos-f+0.5)/(dem_size+2.0),f);}float decodeElevation(vec4 v) {return dot(vec4(v.xyz*255.0,-1.0),u_dem_unpack);}float currentElevation(vec2 apos) {\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nvec2 pos=(u_dem_size*(apos/8192.0*u_dem_scale+u_dem_tl)+1.5)/(u_dem_size+2.0);return u_exaggeration*texture2D(u_dem,pos).a;\\n#else\\nfloat dd=1.0/(u_dem_size+2.0);vec4 r=tileUvToDemSample(apos/8192.0,u_dem_size,u_dem_scale,u_dem_tl);vec2 pos=r.xy;vec2 f=r.zw;float tl=decodeElevation(texture2D(u_dem,pos));\\n#ifdef TERRAIN_DEM_NEAREST_FILTER\\nreturn u_exaggeration*tl;\\n#endif\\nfloat tr=decodeElevation(texture2D(u_dem,pos+vec2(dd,0.0)));float bl=decodeElevation(texture2D(u_dem,pos+vec2(0.0,dd)));float br=decodeElevation(texture2D(u_dem,pos+vec2(dd,dd)));return u_exaggeration*mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);\\n#endif\\n}float prevElevation(vec2 apos) {\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nvec2 pos=(u_dem_size*(apos/8192.0*u_dem_scale_prev+u_dem_tl_prev)+1.5)/(u_dem_size+2.0);return u_exaggeration*texture2D(u_dem_prev,pos).a;\\n#else\\nfloat dd=1.0/(u_dem_size+2.0);vec4 r=tileUvToDemSample(apos/8192.0,u_dem_size,u_dem_scale_prev,u_dem_tl_prev);vec2 pos=r.xy;vec2 f=r.zw;float tl=decodeElevation(texture2D(u_dem_prev,pos));float tr=decodeElevation(texture2D(u_dem_prev,pos+vec2(dd,0.0)));float bl=decodeElevation(texture2D(u_dem_prev,pos+vec2(0.0,dd)));float br=decodeElevation(texture2D(u_dem_prev,pos+vec2(dd,dd)));return u_exaggeration*mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);\\n#endif\\n}\\n#ifdef TERRAIN_VERTEX_MORPHING\\nfloat elevation(vec2 apos) {float nextElevation=currentElevation(apos);float prevElevation=prevElevation(apos);return mix(prevElevation,nextElevation,u_dem_lerp);}\\n#else\\nfloat elevation(vec2 apos) {return currentElevation(apos);}\\n#endif\\nhighp float unpack_depth(highp vec4 rgba_depth)\\n{const highp vec4 bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(rgba_depth,bit_shift)*2.0-1.0;}bool isOccluded(vec4 frag) {vec3 coord=frag.xyz/frag.w;float depth=unpack_depth(texture2D(u_depth,(coord.xy+1.0)*0.5));return coord.z > depth+0.0005;}float occlusionFade(vec4 frag) {vec3 coord=frag.xyz/frag.w;vec3 df=vec3(5.0*u_depth_size_inv,0.0);vec2 uv=0.5*coord.xy+0.5;vec4 depth=vec4(\\nunpack_depth(texture2D(u_depth,uv-df.xz)),unpack_depth(texture2D(u_depth,uv+df.xz)),unpack_depth(texture2D(u_depth,uv-df.zy)),unpack_depth(texture2D(u_depth,uv+df.zy))\\n);return dot(vec4(0.25),vec4(1.0)-clamp(300.0*(vec4(coord.z-0.001)-depth),0.0,1.0));}vec4 fourSample(vec2 pos,vec2 off) {\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nfloat tl=texture2D(u_dem,pos).a;float tr=texture2D(u_dem,pos+vec2(off.x,0.0)).a;float bl=texture2D(u_dem,pos+vec2(0.0,off.y)).a;float br=texture2D(u_dem,pos+off).a;\\n#else\\nvec4 demtl=vec4(texture2D(u_dem,pos).xyz*255.0,-1.0);float tl=dot(demtl,u_dem_unpack);vec4 demtr=vec4(texture2D(u_dem,pos+vec2(off.x,0.0)).xyz*255.0,-1.0);float tr=dot(demtr,u_dem_unpack);vec4 dembl=vec4(texture2D(u_dem,pos+vec2(0.0,off.y)).xyz*255.0,-1.0);float bl=dot(dembl,u_dem_unpack);vec4 dembr=vec4(texture2D(u_dem,pos+off).xyz*255.0,-1.0);float br=dot(dembr,u_dem_unpack);\\n#endif\\nreturn vec4(tl,tr,bl,br);}float flatElevation(vec2 pack) {vec2 apos=floor(pack/8.0);vec2 span=10.0*(pack-apos*8.0);vec2 uvTex=(apos-vec2(1.0,1.0))/8190.0;float size=u_dem_size+2.0;float dd=1.0/size;vec2 pos=u_dem_size*(uvTex*u_dem_scale+u_dem_tl)+1.0;vec2 f=fract(pos);pos=(pos-f+0.5)*dd;vec4 h=fourSample(pos,vec2(dd));float z=mix(mix(h.x,h.y,f.x),mix(h.z,h.w,f.x),f.y);vec2 w=floor(0.5*(span*u_meter_to_dem-1.0));vec2 d=dd*w;vec4 bounds=vec4(d,vec2(1.0)-d);h=fourSample(pos-d,2.0*d+vec2(dd));vec4 diff=abs(h.xzxy-h.ywzw);vec2 slope=min(vec2(0.25),u_meter_to_dem*0.5*(diff.xz+diff.yw)/(2.0*w+vec2(1.0)));vec2 fix=slope*span;float base=z+max(fix.x,fix.y);return u_exaggeration*base;}float elevationFromUint16(float word) {return u_exaggeration*(word/ELEVATION_SCALE-ELEVATION_OFFSET);}\\n#else\\nfloat elevation(vec2 pos) { return 0.0; }bool isOccluded(vec4 frag) { return false; }float occlusionFade(vec4 frag) { return 1.0; }\\n#endif\",ri=\"#ifdef FOG\\nuniform mediump vec4 u_fog_color;uniform mediump vec2 u_fog_range;uniform mediump float u_fog_horizon_blend;uniform mediump mat4 u_fog_matrix;varying vec3 v_fog_pos;float fog_range(float depth) {return (depth-u_fog_range[0])/(u_fog_range[1]-u_fog_range[0]);}float fog_horizon_blending(vec3 camera_dir) {float t=max(0.0,camera_dir.z/u_fog_horizon_blend);return u_fog_color.a*exp(-3.0*t*t);}float fog_opacity(float t) {const float decay=6.0;float falloff=1.0-min(1.0,exp(-decay*t));falloff*=falloff*falloff;return u_fog_color.a*min(1.0,1.00747*falloff);}vec3 fog_position(vec3 pos) {return (u_fog_matrix*vec4(pos,1.0)).xyz;}vec3 fog_position(vec2 pos) {return fog_position(vec3(pos,0.0));}float fog(vec3 pos) {float depth=length(pos);float opacity=fog_opacity(fog_range(depth));return opacity*fog_horizon_blending(pos/depth);}\\n#endif\",ni=\"#ifdef FOG\\nuniform mediump vec4 u_fog_color;uniform mediump vec2 u_fog_range;uniform mediump float u_fog_horizon_blend;uniform mediump float u_fog_temporal_offset;varying vec3 v_fog_pos;uniform highp vec3 u_frustum_tl;uniform highp vec3 u_frustum_tr;uniform highp vec3 u_frustum_br;uniform highp vec3 u_frustum_bl;uniform highp vec3 u_globe_pos;uniform highp float u_globe_radius;uniform highp vec2 u_viewport;uniform float u_globe_transition;uniform int u_is_globe;float fog_range(float depth) {return (depth-u_fog_range[0])/(u_fog_range[1]-u_fog_range[0]);}float fog_horizon_blending(vec3 camera_dir) {float t=max(0.0,camera_dir.z/u_fog_horizon_blend);return u_fog_color.a*exp(-3.0*t*t);}float fog_opacity(float t) {const float decay=6.0;float falloff=1.0-min(1.0,exp(-decay*t));falloff*=falloff*falloff;return u_fog_color.a*min(1.0,1.00747*falloff);}float globe_glow_progress() {highp vec2 uv=gl_FragCoord.xy/u_viewport;highp vec3 ray_dir=mix(\\nmix(u_frustum_tl,u_frustum_tr,uv.x),mix(u_frustum_bl,u_frustum_br,uv.x),1.0-uv.y);highp vec3 dir=normalize(ray_dir);highp vec3 closest_point=dot(u_globe_pos,dir)*dir;highp float sdf=length(closest_point-u_globe_pos)/u_globe_radius;return sdf+PI*0.5;}float fog_opacity(vec3 pos) {float depth=length(pos);return fog_opacity(fog_range(depth));}vec3 fog_apply(vec3 color,vec3 pos) {float depth=length(pos);float opacity;if (u_is_globe==1) {float glow_progress=globe_glow_progress();float t=mix(glow_progress,depth,u_globe_transition);opacity=fog_opacity(fog_range(t));} else {opacity=fog_opacity(fog_range(depth));opacity*=fog_horizon_blending(pos/depth);}return mix(color,u_fog_color.rgb,opacity);}vec4 fog_apply_from_vert(vec4 color,float fog_opac) {float alpha=EPSILON+color.a;color.rgb=mix(color.rgb/alpha,u_fog_color.rgb,fog_opac)*alpha;return color;}vec3 fog_apply_sky_gradient(vec3 camera_ray,vec3 sky_color) {float horizon_blend=fog_horizon_blending(normalize(camera_ray));return mix(sky_color,u_fog_color.rgb,horizon_blend);}vec4 fog_apply_premultiplied(vec4 color,vec3 pos) {float alpha=EPSILON+color.a;color.rgb=fog_apply(color.rgb/alpha,pos)*alpha;return color;}vec3 fog_dither(vec3 color) {vec2 dither_seed=gl_FragCoord.xy+u_fog_temporal_offset;return dither(color,dither_seed);}vec4 fog_dither(vec4 color) {return vec4(fog_dither(color.rgb),color.a);}\\n#endif\";let ai={},si={};const li=[];di(ti,li),di(oi,li),di(ri,li),di(ni,li),ai=pi(\"\",oi),si=pi(ni,ri);const ci=pi(\"\\nhighp vec3 hash(highp vec2 p) {highp vec3 p3=fract(p.xyx*vec3(443.8975,397.2973,491.1871));p3+=dot(p3,p3.yxz+19.19);return fract((p3.xxy+p3.yzz)*p3.zyx);}vec3 dither(vec3 color,highp vec2 seed) {vec3 rnd=hash(seed)+hash(seed+0.59374)-0.5;return color+rnd/255.0;}highp float unpack_depth(highp vec4 rgba_depth)\\n{const highp vec4 bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(rgba_depth,bit_shift)*2.0-1.0;}highp vec4 pack_depth(highp float ndc_z) {highp float depth=ndc_z*0.5+0.5;const highp vec4 bit_shift=vec4(255.0*255.0*255.0,255.0*255.0,255.0,1.0);const highp vec4 bit_mask =vec4(0.0,1.0/255.0,1.0/255.0,1.0/255.0);highp vec4 res=fract(depth*bit_shift);res-=res.xxyz*bit_mask;return res;}\",\"\\nfloat wrap(float n,float min,float max) {float d=max-min;float w=mod(mod(n-min,d)+d,d)+min;return (w==min) ? max : w;}\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 mercator_tile_position(mat4 matrix,vec2 tile_anchor,vec3 tile_id,vec2 mercator_center) {\\n#ifndef PROJECTED_POS_ON_VIEWPORT\\nfloat tiles=tile_id.z;vec2 mercator=(tile_anchor/EXTENT+tile_id.xy)/tiles;mercator-=mercator_center;mercator.x=wrap(mercator.x,-0.5,0.5);vec4 mercator_tile=vec4(mercator.xy*EXTENT,EXTENT/(2.0*PI),1.0);mercator_tile=matrix*mercator_tile;return mercator_tile.xyz;\\n#else\\nreturn vec3(0.0);\\n#endif\\n}vec3 mix_globe_mercator(vec3 globe,vec3 mercator,float t) {return mix(globe,mercator,t);}mat3 globe_mercator_surface_vectors(vec3 pos_normal,vec3 up_dir,float zoom_transition) {vec3 normal=zoom_transition==0.0 ? pos_normal : normalize(mix(pos_normal,up_dir,zoom_transition));vec3 xAxis=normalize(vec3(normal.z,0.0,-normal.x));vec3 yAxis=normalize(cross(normal,xAxis));return mat3(xAxis,yAxis,normal);}\\n#endif\\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(\\nunpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}const vec4 AWAY=vec4(-1000.0,-1000.0,-1000.0,1);//Normalized device coordinate that is not rendered.\"),hi=ti,ui=\"\\n#ifdef GL_ES\\nprecision mediump float;\\n#else\\n\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n\\n#if !defined(highp)\\n#define highp\\n#endif\\n\\n#endif\";var _i={background:pi(\"uniform vec4 u_color;uniform float u_opacity;void main() {vec4 out_color=u_color;\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),backgroundPattern:pi(\"uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 out_color=mix(color1,color2,u_mix);\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),circle:pi(\"varying vec3 v_data;varying float v_visibility;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(\\nantialiased_blur,0.0,extrude_length-radius/(radius+stroke_width)\\n);vec4 out_color=mix(color*opacity,stroke_color*stroke_opacity,color_t);\\n#ifdef FOG\\nout_color=fog_apply_premultiplied(out_color,v_fog_pos);\\n#endif\\ngl_FragColor=out_color*(v_visibility*opacity_t);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"#define NUM_VISIBILITY_RINGS 2\\n#define INV_SQRT2 0.70710678\\n#define ELEVATION_BIAS 0.0001\\n#define NUM_SAMPLES_PER_RING 16\\nuniform mat4 u_matrix;uniform mat2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;\\n#endif\\nvarying vec3 v_data;varying float v_visibility;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvec2 calc_offset(vec2 extrusion,float radius,float stroke_width, float view_scale) {return extrusion*(radius+stroke_width)*u_extrude_scale*view_scale;}float cantilevered_elevation(vec2 pos,float radius,float stroke_width,float view_scale) {vec2 c1=pos+calc_offset(vec2(-1,-1),radius,stroke_width,view_scale);vec2 c2=pos+calc_offset(vec2(1,-1),radius,stroke_width,view_scale);vec2 c3=pos+calc_offset(vec2(1,1),radius,stroke_width,view_scale);vec2 c4=pos+calc_offset(vec2(-1,1),radius,stroke_width,view_scale);float h1=elevation(c1)+ELEVATION_BIAS;float h2=elevation(c2)+ELEVATION_BIAS;float h3=elevation(c3)+ELEVATION_BIAS;float h4=elevation(c4)+ELEVATION_BIAS;return max(h4,max(h3,max(h1,h2)));}float circle_elevation(vec2 pos) {\\n#if defined(TERRAIN)\\nreturn elevation(pos)+ELEVATION_BIAS;\\n#else\\nreturn 0.0;\\n#endif\\n}vec4 project_vertex(vec2 extrusion,vec4 world_center,vec4 projected_center,float radius,float stroke_width, float view_scale,mat3 surface_vectors) {vec2 sample_offset=calc_offset(extrusion,radius,stroke_width,view_scale);\\n#ifdef PITCH_WITH_MAP\\n#ifdef PROJECTION_GLOBE_VIEW\\nreturn u_matrix*( world_center+vec4(sample_offset.x*surface_vectors[0]+sample_offset.y*surface_vectors[1],0) );\\n#else\\nreturn u_matrix*( world_center+vec4(sample_offset,0,0) );\\n#endif\\n#else\\nreturn projected_center+vec4(sample_offset,0,0);\\n#endif\\n}float get_sample_step() {\\n#ifdef PITCH_WITH_MAP\\nreturn 2.0*PI/float(NUM_SAMPLES_PER_RING);\\n#else\\nreturn PI/float(NUM_SAMPLES_PER_RING);\\n#endif\\n}void main(void) {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 pos_normal_3=a_pos_normal_3/16384.0;mat3 surface_vectors=globe_mercator_surface_vectors(pos_normal_3,u_up_dir,u_zoom_transition);vec3 surface_extrusion=extrude.x*surface_vectors[0]+extrude.y*surface_vectors[1];vec3 globe_elevation=elevationVector(circle_center)*circle_elevation(circle_center);vec3 globe_pos=a_pos_3+surface_extrusion+globe_elevation;vec3 mercator_elevation=u_up_dir*u_tile_up_scale*circle_elevation(circle_center);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,circle_center,u_tile_id,u_merc_center)+surface_extrusion+mercator_elevation;vec3 pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);vec4 world_center=vec4(pos,1);\\n#else \\nmat3 surface_vectors=mat3(1.0);float height=circle_elevation(circle_center);vec4 world_center=vec4(circle_center,height,1);\\n#endif\\nvec4 projected_center=u_matrix*world_center;float view_scale=0.0;\\n#ifdef PITCH_WITH_MAP\\n#ifdef SCALE_WITH_MAP\\nview_scale=1.0;\\n#else\\nview_scale=projected_center.w/u_camera_to_center_distance;\\n#endif\\n#else\\n#ifdef SCALE_WITH_MAP\\nview_scale=u_camera_to_center_distance;\\n#else\\nview_scale=projected_center.w;\\n#endif\\n#endif\\ngl_Position=project_vertex(extrude,world_center,projected_center,radius,stroke_width,view_scale,surface_vectors);float visibility=0.0;\\n#ifdef TERRAIN\\nfloat step=get_sample_step();\\n#ifdef PITCH_WITH_MAP\\nfloat cantilevered_height=cantilevered_elevation(circle_center,radius,stroke_width,view_scale);vec4 occlusion_world_center=vec4(circle_center,cantilevered_height,1);vec4 occlusion_projected_center=u_matrix*occlusion_world_center;\\n#else\\nvec4 occlusion_world_center=world_center;vec4 occlusion_projected_center=projected_center;\\n#endif\\nfor(int ring=0; ring < NUM_VISIBILITY_RINGS; ring++) {float scale=(float(ring)+1.0)/float(NUM_VISIBILITY_RINGS);for(int i=0; i < NUM_SAMPLES_PER_RING; i++) {vec2 extrusion=vec2(cos(step*float(i)),-sin(step*float(i)))*scale;vec4 frag_pos=project_vertex(extrusion,occlusion_world_center,occlusion_projected_center,radius,stroke_width,view_scale,surface_vectors);visibility+=float(!isOccluded(frag_pos));}}visibility/=float(NUM_VISIBILITY_RINGS)*float(NUM_SAMPLES_PER_RING);\\n#else\\nvisibility=1.0;\\n#endif\\n#ifdef PROJECTION_GLOBE_VIEW\\nvisibility=1.0;\\n#endif\\nv_visibility=visibility;lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);\\n#ifdef FOG\\nv_fog_pos=fog_position(world_center.xyz);\\n#endif\\n}\"),clippingMask:pi(\"void main() {gl_FragColor=vec4(1.0);}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),heatmap:pi(\"uniform highp float u_intensity;varying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main() {\\n#pragma mapbox: initialize highp float weight\\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\\n#ifdef FOG\\nif (u_is_globe==0) {gl_FragColor.r*=pow(1.0-fog_opacity(v_fog_pos),2.0);}\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;\\n#endif\\nvarying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#pragma mapbox: define mediump float radius\\nconst highp float ZERO=1.0/255.0/16.0;\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main(void) {\\n#pragma mapbox: initialize highp float weight\\n#pragma mapbox: initialize mediump float radius\\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec2 tilePos=floor(a_pos*0.5);\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 pos_normal_3=a_pos_normal_3/16384.0;mat3 surface_vectors=globe_mercator_surface_vectors(pos_normal_3,u_up_dir,u_zoom_transition);vec3 surface_extrusion=extrude.x*surface_vectors[0]+extrude.y*surface_vectors[1];vec3 globe_elevation=elevationVector(tilePos)*elevation(tilePos);vec3 globe_pos=a_pos_3+surface_extrusion+globe_elevation;vec3 mercator_elevation=u_up_dir*u_tile_up_scale*elevation(tilePos);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,tilePos,u_tile_id,u_merc_center)+surface_extrusion+mercator_elevation;vec3 pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\\n#else\\nvec3 pos=vec3(tilePos+extrude,elevation(tilePos));\\n#endif\\ngl_Position=u_matrix*vec4(pos,1);\\n#ifdef FOG\\nv_fog_pos=fog_position(pos);\\n#endif\\n}\"),heatmapTexture:pi(\"uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(0.0);\\n#endif\\n}\",\"attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=vec4(a_pos,0,1);v_pos=a_pos*0.5+0.5;}\"),collisionBox:pi(\"varying float v_placed;varying float v_notUsed;void main() {vec4 red =vec4(1.0,0.0,0.0,1.0);vec4 blue=vec4(0.0,0.0,1.0,0.5);gl_FragColor =mix(red,blue,step(0.5,v_placed))*0.5;gl_FragColor*=mix(1.0,0.1,step(0.5,v_notUsed));}\",\"attribute vec3 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;attribute float a_size_scale;attribute vec2 a_padding;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_pos+elevationVector(a_anchor_pos)*elevation(a_anchor_pos),1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(\\n0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,1.5);gl_Position=projectedPoint;gl_Position.xy+=(a_extrude*a_size_scale+a_shift+a_padding)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),collisionCircle:pi(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos_2f;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos_2f;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(\\nmix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(\\n0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),debug:pi(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;\\n#endif\\nvarying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {float h=elevation(a_pos);v_uv=a_pos/8192.0;\\n#ifdef PROJECTION_GLOBE_VIEW\\ngl_Position=u_matrix*vec4(a_pos_3+elevationVector(a_pos)*h,1);\\n#else\\ngl_Position=u_matrix*vec4(a_pos*u_overlay_scale,h,1);\\n#endif\\n}\"),fill:pi(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\nvec4 out_color=color;\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),fillOutline:pi(\"varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);vec4 out_color=outline_color;\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),fillOutlinePattern:pi(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);vec4 out_color=mix(color1,color2,u_fade);\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),fillPattern:pi(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 out_color=mix(color1,color2,u_fade);\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),fillExtrusion:pi(\"uniform lowp vec3 u_lightpos;varying vec4 v_color;\\n#ifdef RENDER_SHADOWS\\nvarying highp vec4 v_pos_light_view_0;varying highp vec4 v_pos_light_view_1;varying float v_depth;varying highp vec3 v_normal;\\n#endif\\n#ifdef FAUX_AO\\nuniform lowp vec2 u_ao;varying vec3 v_ao;\\n#endif\\nvoid main() {vec4 color=v_color;\\n#ifdef FAUX_AO\\nfloat intensity=u_ao[0];float h=max(0.0,v_ao.z);float h_floors=h/u_ao[1];float y_shade=1.0-0.9*intensity*min(v_ao.y,1.0);float shade=(1.0-0.08*intensity)*(y_shade+(1.0-y_shade)*(1.0-pow(1.0-min(h_floors/16.0,1.0),16.0)))+0.08*intensity*min(h_floors/160.0,1.0);float concave=v_ao.x*v_ao.x;float x_shade=mix(1.0,mix(0.6,0.75,min(h_floors/30.0,1.0)),intensity)+0.1*intensity*min(h,1.0);shade*=mix(1.0,x_shade*x_shade*x_shade,concave);color.rgb=color.rgb*shade;\\n#endif\\n#ifdef RENDER_SHADOWS\\ncolor.xyz=shadowed_color_normal(color.xyz,normalize(v_normal),v_pos_light_view_0,v_pos_light_view_1,v_depth);\\n#endif\\n#ifdef FOG\\ncolor=fog_dither(fog_apply_premultiplied(color,v_fog_pos));\\n#endif\\ngl_FragColor=color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform float u_edge_radius;attribute vec4 a_pos_normal_ed;attribute vec2 a_centroid_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;uniform float u_height_lift;\\n#endif\\nvarying vec4 v_color;\\n#ifdef RENDER_SHADOWS\\nuniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;varying highp vec4 v_pos_light_view_0;varying highp vec4 v_pos_light_view_1;varying highp vec3 v_normal;varying float v_depth;\\n#endif\\n#ifdef FAUX_AO\\nuniform lowp vec2 u_ao;varying vec3 v_ao;\\n#endif\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec4 pos_nx=floor(a_pos_normal_ed*0.5);vec4 top_up_ny_start=a_pos_normal_ed-2.0*pos_nx;vec3 top_up_ny=top_up_ny_start.xyz;float x_normal=pos_nx.z/8192.0;vec3 normal=top_up_ny.y==1.0 ? vec3(0.0,0.0,1.0) : normalize(vec3(x_normal,(2.0*top_up_ny.z-1.0)*(1.0-abs(x_normal)),0.0));base=max(0.0,base);height=max(0.0,top_up_ny.y==0.0 && top_up_ny.x==1.0 ? height-u_edge_radius : height);float t=top_up_ny.x;vec2 centroid_pos=vec2(0.0);\\n#if defined(HAS_CENTROID) || defined(TERRAIN)\\ncentroid_pos=a_centroid_pos;\\n#endif\\nfloat ele=0.0;float h=0.0;\\n#ifdef TERRAIN\\nbool flat_roof=centroid_pos.x !=0.0 && t > 0.0;ele=elevation(pos_nx.xy);float c_ele=flat_roof ? centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos) : ele;h=flat_roof ? max(c_ele+height,ele+base+2.0) : ele+(t > 0.0 ? height : base==0.0 ?-5.0 : base);vec3 pos=vec3(pos_nx.xy,h);\\n#else\\nh=t > 0.0 ? height : base;vec3 pos=vec3(pos_nx.xy,h);\\n#endif\\n#ifdef PROJECTION_GLOBE_VIEW\\nfloat lift=float((t+base) > 0.0)*u_height_lift;h+=lift;vec3 globe_normal=normalize(mix(a_pos_normal_3/16384.0,u_up_dir,u_zoom_transition));vec3 globe_pos=a_pos_3+globe_normal*(u_tile_up_scale*h);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,pos.xy,u_tile_id,u_merc_center)+u_up_dir*u_tile_up_scale*pos.z;pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\\n#endif\\nfloat hidden=float(centroid_pos.x==0.0 && centroid_pos.y==1.0);gl_Position=mix(u_matrix*vec4(pos,1),AWAY,hidden);\\n#ifdef RENDER_SHADOWS\\nv_pos_light_view_0=u_light_matrix_0*vec4(pos,1);v_pos_light_view_1=u_light_matrix_1*vec4(pos,1);v_normal=normal;v_depth=gl_Position.w;\\n#endif\\nfloat colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=(\\n(1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}\\n#ifdef FAUX_AO\\nfloat concave=pos_nx.w-floor(pos_nx.w*0.5)*2.0;float start=top_up_ny_start.w;float y_ground=1.0-clamp(t+base,0.0,1.0);float top_height=height;\\n#ifdef TERRAIN\\ntop_height=mix(max(c_ele+height,ele+base+2.0),ele+height,float(centroid_pos.x==0.0))-ele;y_ground+=y_ground*5.0/max(3.0,top_height);\\n#endif\\nv_ao=vec3(mix(concave,-concave,start),y_ground,h-ele);directional*=(1.0+0.05*(1.0-top_up_ny.y)*u_ao[0]);\\n#ifdef PROJECTION_GLOBE_VIEW\\ntop_height+=u_height_lift;\\n#endif\\ngl_Position.z-=(0.0000006*(min(top_height,500.)+2.0*min(base,500.0)+60.0*concave+3.0*start))*gl_Position.w;\\n#endif\\nv_color.rgb+=clamp(color.rgb*directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_color*=u_opacity;\\n#ifdef FOG\\nv_fog_pos=fog_position(pos);\\n#endif\\n}\"),fillExtrusionPattern:pi(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;\\n#ifdef FAUX_AO\\nuniform lowp vec2 u_ao;varying vec3 v_ao;\\n#endif\\nvarying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 out_color=mix(color1,color2,u_fade);out_color=out_color*v_lighting;\\n#ifdef FAUX_AO\\nfloat intensity=u_ao[0];float h=max(0.0,v_ao.z);float h_floors=h/u_ao[1];float y_shade=1.0-0.9*intensity*min(v_ao.y,1.0);float shade=(1.0-0.08*intensity)*(y_shade+(1.0-y_shade)*(1.0-pow(1.0-min(h_floors/16.0,1.0),16.0)))+0.08*intensity*min(h_floors/160.0,1.0);float concave=v_ao.x*v_ao.x;float x_shade=mix(1.0,mix(0.6,0.75,min(h_floors/30.0,1.0)),intensity)+0.1*intensity*min(h,1.0);shade*=mix(1.0,x_shade*x_shade*x_shade,concave);out_color.rgb=out_color.rgb*shade;\\n#endif\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=out_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec4 a_pos_normal_ed;attribute vec2 a_centroid_pos;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;uniform float u_height_lift;\\n#endif\\nvarying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#ifdef FAUX_AO\\nuniform lowp vec2 u_ao;varying vec3 v_ao;\\n#endif\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec4 pos_nx=floor(a_pos_normal_ed*0.5);mediump vec4 top_up_ny_start=a_pos_normal_ed-2.0*pos_nx;mediump vec3 top_up_ny=top_up_ny_start.xyz;float x_normal=pos_nx.z/8192.0;vec3 normal=top_up_ny.y==1.0 ? vec3(0.0,0.0,1.0) : normalize(vec3(x_normal,(2.0*top_up_ny.z-1.0)*(1.0-abs(x_normal)),0.0));float edgedistance=a_pos_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=top_up_ny.x;float z=t > 0.0 ? height : base;vec2 centroid_pos=vec2(0.0);\\n#if defined(HAS_CENTROID) || defined(TERRAIN)\\ncentroid_pos=a_centroid_pos;\\n#endif\\nfloat ele=0.0;float h=z;\\n#ifdef TERRAIN\\nbool flat_roof=centroid_pos.x !=0.0 && t > 0.0;ele=elevation(pos_nx.xy);float c_ele=flat_roof ? centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos) : ele;h=flat_roof ? max(c_ele+height,ele+base+2.0) : ele+(t > 0.0 ? height : base==0.0 ?-5.0 : base);vec3 p=vec3(pos_nx.xy,h);\\n#else\\nvec3 p=vec3(pos_nx.xy,z);\\n#endif\\n#ifdef PROJECTION_GLOBE_VIEW\\nfloat lift=float((t+base) > 0.0)*u_height_lift;h+=lift;vec3 globe_normal=normalize(mix(a_pos_normal_3/16384.0,u_up_dir,u_zoom_transition));vec3 globe_pos=a_pos_3+globe_normal*(u_tile_up_scale*(p.z+lift));vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,p.xy,u_tile_id,u_merc_center)+u_up_dir*u_tile_up_scale*p.z;p=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\\n#endif\\nfloat hidden=float(centroid_pos.x==0.0 && centroid_pos.y==1.0);gl_Position=mix(u_matrix*vec4(p,1),AWAY,hidden);vec2 pos=normal.z==1.0\\n? pos_nx.xy\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=(\\n(1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}\\n#ifdef FAUX_AO\\nfloat concave=pos_nx.w-floor(pos_nx.w*0.5)*2.0;float start=top_up_ny_start.w;float y_ground=1.0-clamp(t+base,0.0,1.0);float top_height=height;\\n#ifdef TERRAIN\\ntop_height=mix(max(c_ele+height,ele+base+2.0),ele+height,float(centroid_pos.x==0.0))-ele;y_ground+=y_ground*5.0/max(3.0,top_height);\\n#endif\\nv_ao=vec3(mix(concave,-concave,start),y_ground,h-ele);directional*=(1.0+0.05*(1.0-top_up_ny.y)*u_ao[0]);\\n#ifdef PROJECTION_GLOBE_VIEW\\ntop_height+=u_height_lift;\\n#endif\\ngl_Position.z-=(0.0000006*(min(top_height,500.)+2.0*min(base,500.0)+60.0*concave+3.0*start))*gl_Position.w;\\n#endif\\nv_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;\\n#ifdef FOG\\nv_fog_pos=fog_position(p);\\n#endif\\n}\"),hillshadePrepare:pi(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord) {\\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\\nreturn texture2D(u_image,coord).a/4.0;\\n#else\\nvec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;\\n#endif\\n}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y));float b=getElevation(v_pos+vec2(0,-epsilon.y));float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y));float d=getElevation(v_pos+vec2(-epsilon.x,0));float e=getElevation(v_pos);float f=getElevation(v_pos+vec2(epsilon.x,0));float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y));float h=getElevation(v_pos+vec2(0,epsilon.y));float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y));float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2(\\n(c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c)\\n)/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(\\nderiv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),hillshade:pi(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef FOG\\ngl_FragColor=fog_dither(fog_apply_premultiplied(gl_FragColor,v_fog_pos));\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),line:pi(\"uniform lowp float u_device_pixel_ratio;uniform float u_alpha_discard_threshold;uniform highp vec2 u_trim_offset;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec4 v_uv;\\n#ifdef RENDER_LINE_DASH\\nuniform sampler2D u_dash_image;uniform float u_mix;uniform vec3 u_scale;varying vec2 v_tex_a;varying vec2 v_tex_b;\\n#endif\\n#ifdef RENDER_LINE_GRADIENT\\nuniform sampler2D u_gradient_image;\\n#endif\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 dash_from\\n#pragma mapbox: define lowp vec4 dash_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize lowp vec4 dash_from\\n#pragma mapbox: initialize lowp vec4 dash_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);\\n#ifdef RENDER_LINE_DASH\\nfloat sdfdist_a=texture2D(u_dash_image,v_tex_a).a;float sdfdist_b=texture2D(u_dash_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfwidth=min(dash_from.z*u_scale.y,dash_to.z*u_scale.z);float sdfgamma=1.0/(2.0*u_device_pixel_ratio)/sdfwidth;alpha*=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);\\n#endif\\n#ifdef RENDER_LINE_GRADIENT\\nhighp vec4 out_color=texture2D(u_gradient_image,v_uv.xy);\\n#else\\nvec4 out_color=color;\\n#endif\\n#ifdef RENDER_LINE_TRIM_OFFSET\\nhighp float start=v_uv[2];highp float end=v_uv[3];highp float trim_start=u_trim_offset[0];highp float trim_end=u_trim_offset[1];highp float line_progress=(start+(v_uv.x)*(end-start));if (trim_end > trim_start) {if (line_progress <=trim_end && line_progress >=trim_start) {out_color=vec4(0,0,0,0);}}\\n#endif\\n#ifdef FOG\\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\\n#endif\\n#ifdef RENDER_LINE_ALPHA_DISCARD\\nif (alpha < u_alpha_discard_threshold) {discard;}\\n#endif\\ngl_FragColor=out_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define EXTRUDE_SCALE 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;\\n#if defined(RENDER_LINE_GRADIENT) || defined(RENDER_LINE_TRIM_OFFSET)\\nattribute highp vec4 a_packed;\\n#endif\\n#ifdef RENDER_LINE_DASH\\nattribute float a_linesofar;\\n#endif\\nuniform mat4 u_matrix;uniform mat2 u_pixels_to_tile_units;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec4 v_uv;\\n#ifdef RENDER_LINE_DASH\\nuniform vec2 u_texsize;uniform mediump vec3 u_scale;varying vec2 v_tex_a;varying vec2 v_tex_b;\\n#endif\\n#ifdef RENDER_LINE_GRADIENT\\nuniform float u_image_height;\\n#endif\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 dash_from\\n#pragma mapbox: define lowp vec4 dash_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize lowp vec4 dash_from\\n#pragma mapbox: initialize lowp vec4 dash_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*EXTRUDE_SCALE;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*EXTRUDE_SCALE*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist*u_pixels_to_tile_units,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,0.0,1.0)+projected_extrude;\\n#ifndef RENDER_TO_TEXTURE\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#else\\nv_gamma_scale=1.0;\\n#endif\\n#if defined(RENDER_LINE_GRADIENT) || defined(RENDER_LINE_TRIM_OFFSET)\\nfloat a_uv_x=a_packed[0];float a_split_index=a_packed[1];highp float a_clip_start=a_packed[2];highp float a_clip_end=a_packed[3];\\n#ifdef RENDER_LINE_GRADIENT\\nhighp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec4(a_uv_x,a_split_index*texel_height-half_texel_height,a_clip_start,a_clip_end);\\n#else\\nv_uv=vec4(a_uv_x,0.0,a_clip_start,a_clip_end);\\n#endif\\n#endif\\n#ifdef RENDER_LINE_DASH\\nfloat tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;float scaleA=dash_from.z==0.0 ? 0.0 : tileZoomRatio/(dash_from.z*fromScale);float scaleB=dash_to.z==0.0 ? 0.0 : tileZoomRatio/(dash_to.z*toScale);float heightA=dash_from.y;float heightB=dash_to.y;v_tex_a=vec2(a_linesofar*scaleA/floorwidth,(-normal.y*heightA+dash_from.x+0.5)/u_texsize.y);v_tex_b=vec2(a_linesofar*scaleB/floorwidth,(-normal.y*heightB+dash_to.x+0.5)/u_texsize.y);\\n#endif\\nv_width2=vec2(outset,inset);\\n#ifdef FOG\\nv_fog_pos=fog_position(pos);\\n#endif\\n}\"),linePattern:pi(\"uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);\\n#ifdef FOG\\ncolor=fog_dither(fog_apply_premultiplied(color,v_fog_pos));\\n#endif\\ngl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_linesofar;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mat2 u_pixels_to_tile_units;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist*u_pixels_to_tile_units,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,0.0,1.0)+projected_extrude;\\n#ifndef RENDER_TO_TEXTURE\\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\\n#else\\nv_gamma_scale=1.0;\\n#endif\\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;\\n#ifdef FOG\\nv_fog_pos=fog_position(pos);\\n#endif\\n}\"),raster:pi(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(\\ndot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);vec3 out_color=mix(u_high_vec,u_low_vec,rgb);\\n#ifdef FOG\\nout_color=fog_dither(fog_apply(out_color,v_fog_pos));\\n#endif\\ngl_FragColor=vec4(out_color*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform vec2 u_perspective_transform;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {float w=1.0+dot(a_texture_pos,u_perspective_transform);gl_Position=u_matrix*vec4(a_pos*w,0,w);v_pos0=a_texture_pos/8192.0;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;\\n#ifdef FOG\\nv_fog_pos=fog_position(a_pos);\\n#endif\\n}\"),symbolIcon:pi(\"uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_pixeloffset;attribute vec4 a_projected_pos;attribute float a_fade_opacity;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_globe_anchor;attribute vec3 a_globe_normal;\\n#endif\\nuniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform vec3 u_up_vector;\\n#ifdef PROJECTION_GLOBE_VIEW\\nuniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;\\n#endif\\nvarying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_min_font_scale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[3];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 tile_anchor=a_pos;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 mercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);vec3 world_pos=mix_globe_mercator(a_globe_anchor+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;float globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;\\n#else\\nvec3 world_pos=vec3(tile_anchor,0)+h;float globe_occlusion_fade=1.0;\\n#endif\\nvec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float font_scale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 displacement=vec3(a_globe_normal.z,0,-a_globe_normal.x);vec4 offsetProjected_point=u_matrix*vec4(a_globe_anchor+displacement,1);\\n#else\\nvec4 offsetProjected_point=u_matrix*vec4(tile_anchor+vec2(1,0),0,1);\\n#endif\\nvec2 a=projected_point.xy/projected_point.w;vec2 b=offsetProjected_point.xy/offsetProjected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 proj_pos=mix_globe_mercator(a_projected_pos.xyz+h,mercator_pos,u_zoom_transition);vec4 projected_pos=u_label_plane_matrix*vec4(proj_pos,1.0);\\n#else\\nvec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,h.z,1.0);\\n#endif\\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*max(a_min_font_scale,font_scale)+a_pxoffset/16.0);\\n#ifdef PITCH_WITH_MAP_TERRAIN\\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\\n#endif\\nfloat occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 xAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,u_up_vector)) : vec3(1,0,0);vec3 yAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,xAxis)) : vec3(0,1,0);gl_Position=mix(u_coord_matrix*vec4(projected_pos.xyz/projected_pos.w+xAxis*offset.x+yAxis*offset.y,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));\\n#else\\ngl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));\\n#endif\\nfloat projection_transition_fade=1.0;\\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\\n#endif\\nv_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change))*projection_transition_fade;}\"),symbolSDF:pi(\"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_pixeloffset;attribute vec4 a_projected_pos;attribute float a_fade_opacity;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_globe_anchor;attribute vec3 a_globe_normal;\\n#endif\\nuniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec3 u_up_vector;\\n#ifdef PROJECTION_GLOBE_VIEW\\nuniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;\\n#endif\\nvarying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[3];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 tile_anchor=a_pos;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 mercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);vec3 world_pos=mix_globe_mercator(a_globe_anchor+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;float globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;\\n#else\\nvec3 world_pos=vec3(tile_anchor,0)+h;float globe_occlusion_fade=1.0;\\n#endif\\nvec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 displacement=vec3(a_globe_normal.z,0,-a_globe_normal.x);vec4 offsetprojected_point=u_matrix*vec4(a_globe_anchor+displacement,1);\\n#else\\nvec4 offsetprojected_point=u_matrix*vec4(tile_anchor+vec2(1,0),0,1);\\n#endif\\nvec2 a=projected_point.xy/projected_point.w;vec2 b=offsetprojected_point.xy/offsetprojected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 proj_pos=mix_globe_mercator(a_projected_pos.xyz+h,mercator_pos,u_zoom_transition);vec4 projected_pos=u_label_plane_matrix*vec4(proj_pos,1.0);\\n#else\\nvec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,h.z,1.0);\\n#endif\\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset);\\n#ifdef PITCH_WITH_MAP_TERRAIN\\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\\n#endif\\nfloat occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 xAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,u_up_vector)) : vec3(1,0,0);vec3 yAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,xAxis)) : vec3(0,1,0);gl_Position=mix(u_coord_matrix*vec4(projected_pos.xyz/projected_pos.w+xAxis*offset.x+yAxis*offset.y,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));\\n#else\\ngl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));\\n#endif\\nfloat gamma_scale=gl_Position.w;float projection_transition_fade=1.0;\\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\\n#endif\\nvec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity*projection_transition_fade);}\"),symbolTextAndIcon:pi(\"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_projected_pos;attribute float a_fade_opacity;\\n#ifdef PROJECTION_GLOBE_VIEW\\nattribute vec3 a_globe_anchor;attribute vec3 a_globe_normal;\\n#endif\\nuniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec3 u_up_vector;uniform vec2 u_texsize_icon;\\n#ifdef PROJECTION_GLOBE_VIEW\\nuniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;\\n#endif\\nvarying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[3];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 tile_anchor=a_pos;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 mercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);vec3 world_pos=mix_globe_mercator(a_globe_anchor+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;float globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;\\n#else\\nvec3 world_pos=vec3(tile_anchor,0)+h;float globe_occlusion_fade=1.0;\\n#endif\\nvec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float font_scale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offset_projected_point=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projected_point.xy/projected_point.w;vec2 b=offset_projected_point.xy/offset_projected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 proj_pos=mix_globe_mercator(a_projected_pos.xyz+h,mercator_pos,u_zoom_transition);vec4 projected_pos=u_label_plane_matrix*vec4(proj_pos,1.0);\\n#else\\nvec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,h.z,1.0);\\n#endif\\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*font_scale);\\n#ifdef PITCH_WITH_MAP_TERRAIN\\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\\n#endif\\nfloat occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;\\n#ifdef PROJECTION_GLOBE_VIEW\\nvec3 xAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,u_up_vector)) : vec3(1,0,0);vec3 yAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,xAxis)) : vec3(0,1,0);gl_Position=mix(u_coord_matrix*vec4(projected_pos.xyz/projected_pos.w+xAxis*offset.x+yAxis*offset.y,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));\\n#else\\ngl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));\\n#endif\\nfloat gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change));float projection_transition_fade=1.0;\\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\\n#endif\\nv_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity*projection_transition_fade,is_sdf);}\"),terrainRaster:pi(\"uniform sampler2D u_image0;varying vec2 v_pos0;\\n#ifdef FOG\\nvarying float v_fog_opacity;\\n#endif\\n#ifdef RENDER_SHADOWS\\nvarying vec4 v_pos_light_view_0;varying vec4 v_pos_light_view_1;varying float v_depth;\\n#endif\\nvoid main() {vec4 color=texture2D(u_image0,v_pos0);\\n#ifdef RENDER_SHADOWS\\ncolor.xyz=shadowed_color(color.xyz,v_pos_light_view_0,v_pos_light_view_1,v_depth);\\n#endif\\n#ifdef FOG\\ncolor=fog_dither(fog_apply_from_vert(color,v_fog_opacity));\\n#endif\\ngl_FragColor=color;\\n#ifdef TERRAIN_WIREFRAME\\ngl_FragColor=vec4(1.0,0.0,0.0,0.8);\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform float u_skirt_height;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;\\n#ifdef FOG\\nvarying float v_fog_opacity;\\n#endif\\n#ifdef RENDER_SHADOWS\\nuniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;varying vec4 v_pos_light_view_0;varying vec4 v_pos_light_view_1;varying float v_depth;\\n#endif\\nconst float skirtOffset=24575.0;const float wireframeOffset=0.00015;void main() {v_pos0=a_texture_pos/8192.0;float skirt=float(a_pos.x >=skirtOffset);float elevation=elevation(a_texture_pos)-skirt*u_skirt_height;\\n#ifdef TERRAIN_WIREFRAME\\nelevation+=u_skirt_height*u_skirt_height*wireframeOffset;\\n#endif\\nvec2 decodedPos=a_pos-vec2(skirt*skirtOffset,0.0);gl_Position=u_matrix*vec4(decodedPos,elevation,1.0);\\n#ifdef FOG\\nv_fog_opacity=fog(fog_position(vec3(decodedPos,elevation)));\\n#endif\\n#ifdef RENDER_SHADOWS\\nvec3 pos=vec3(decodedPos,elevation);v_pos_light_view_0=u_light_matrix_0*vec4(pos,1.);v_pos_light_view_1=u_light_matrix_1*vec4(pos,1.);v_depth=gl_Position.w;\\n#endif\\n}\"),terrainDepth:pi(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nvarying float v_depth;void main() {gl_FragColor=pack_depth(v_depth);}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying float v_depth;void main() {float elevation=elevation(a_texture_pos);gl_Position=u_matrix*vec4(a_pos,elevation,1.0);v_depth=gl_Position.z/gl_Position.w;}\"),skybox:pi(\"\\nvarying lowp vec3 v_uv;uniform lowp samplerCube u_cubemap;uniform lowp float u_opacity;uniform highp float u_temporal_offset;uniform highp vec3 u_sun_direction;float sun_disk(highp vec3 ray_direction,highp vec3 sun_direction) {highp float cos_angle=dot(normalize(ray_direction),sun_direction);const highp float cos_sun_angular_diameter=0.99996192306;const highp float smoothstep_delta=1e-5;return smoothstep(\\ncos_sun_angular_diameter-smoothstep_delta,cos_sun_angular_diameter+smoothstep_delta,cos_angle);}float map(float value,float start,float end,float new_start,float new_end) {return ((value-start)*(new_end-new_start))/(end-start)+new_start;}void main() {vec3 uv=v_uv;const float y_bias=0.015;uv.y+=y_bias;uv.y=pow(abs(uv.y),1.0/5.0);uv.y=map(uv.y,0.0,1.0,-1.0,1.0);vec3 sky_color=textureCube(u_cubemap,uv).rgb;\\n#ifdef FOG\\nsky_color=fog_apply_sky_gradient(v_uv.xzy,sky_color);\\n#endif\\nsky_color.rgb=dither(sky_color.rgb,gl_FragCoord.xy+u_temporal_offset);sky_color+=0.1*sun_disk(v_uv,u_sun_direction);gl_FragColor=vec4(sky_color*u_opacity,u_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",ii),skyboxGradient:pi(\"varying highp vec3 v_uv;uniform lowp sampler2D u_color_ramp;uniform highp vec3 u_center_direction;uniform lowp float u_radius;uniform lowp float u_opacity;uniform highp float u_temporal_offset;void main() {float progress=acos(dot(normalize(v_uv),u_center_direction))/u_radius;vec4 color=texture2D(u_color_ramp,vec2(progress,0.5));\\n#ifdef FOG\\ncolor.rgb=fog_apply_sky_gradient(v_uv.xzy,color.rgb/color.a)*color.a;\\n#endif\\ncolor*=u_opacity;color.rgb=dither(color.rgb,gl_FragCoord.xy+u_temporal_offset);gl_FragColor=color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",ii),skyboxCapture:pi(\"\\nvarying highp vec3 v_position;uniform highp float u_sun_intensity;uniform highp float u_luminance;uniform lowp vec3 u_sun_direction;uniform highp vec4 u_color_tint_r;uniform highp vec4 u_color_tint_m;\\n#ifdef GL_ES\\nprecision highp float;\\n#endif\\n#define BETA_R vec3(5.5e-6,13.0e-6,22.4e-6)\\n#define BETA_M vec3(21e-6,21e-6,21e-6)\\n#define MIE_G 0.76\\n#define DENSITY_HEIGHT_SCALE_R 8000.0\\n#define DENSITY_HEIGHT_SCALE_M 1200.0\\n#define PLANET_RADIUS 6360e3\\n#define ATMOSPHERE_RADIUS 6420e3\\n#define SAMPLE_STEPS 10\\n#define DENSITY_STEPS 4\\nfloat ray_sphere_exit(vec3 orig,vec3 dir,float radius) {float a=dot(dir,dir);float b=2.0*dot(dir,orig);float c=dot(orig,orig)-radius*radius;float d=sqrt(b*b-4.0*a*c);return (-b+d)/(2.0*a);}vec3 extinction(vec2 density) {return exp(-vec3(BETA_R*u_color_tint_r.a*density.x+BETA_M*u_color_tint_m.a*density.y));}vec2 local_density(vec3 point) {float height=max(length(point)-PLANET_RADIUS,0.0);float exp_r=exp(-height/DENSITY_HEIGHT_SCALE_R);float exp_m=exp(-height/DENSITY_HEIGHT_SCALE_M);return vec2(exp_r,exp_m);}float phase_ray(float cos_angle) {return (3.0/(16.0*PI))*(1.0+cos_angle*cos_angle);}float phase_mie(float cos_angle) {return (3.0/(8.0*PI))*((1.0-MIE_G*MIE_G)*(1.0+cos_angle*cos_angle))/((2.0+MIE_G*MIE_G)*pow(1.0+MIE_G*MIE_G-2.0*MIE_G*cos_angle,1.5));}vec2 density_to_atmosphere(vec3 point,vec3 light_dir) {float ray_len=ray_sphere_exit(point,light_dir,ATMOSPHERE_RADIUS);float step_len=ray_len/float(DENSITY_STEPS);vec2 density_point_to_atmosphere=vec2(0.0);for (int i=0; i < DENSITY_STEPS;++i) {vec3 point_on_ray=point+light_dir*((float(i)+0.5)*step_len);density_point_to_atmosphere+=local_density(point_on_ray)*step_len;;}return density_point_to_atmosphere;}vec3 atmosphere(vec3 ray_dir,vec3 sun_direction,float sun_intensity) {vec2 density_orig_to_point=vec2(0.0);vec3 scatter_r=vec3(0.0);vec3 scatter_m=vec3(0.0);vec3 origin=vec3(0.0,PLANET_RADIUS,0.0);float ray_len=ray_sphere_exit(origin,ray_dir,ATMOSPHERE_RADIUS);float step_len=ray_len/float(SAMPLE_STEPS);for (int i=0; i < SAMPLE_STEPS;++i) {vec3 point_on_ray=origin+ray_dir*((float(i)+0.5)*step_len);vec2 density=local_density(point_on_ray)*step_len;density_orig_to_point+=density;vec2 density_point_to_atmosphere=density_to_atmosphere(point_on_ray,sun_direction);vec2 density_orig_to_atmosphere=density_orig_to_point+density_point_to_atmosphere;vec3 extinction=extinction(density_orig_to_atmosphere);scatter_r+=density.x*extinction;scatter_m+=density.y*extinction;}float cos_angle=dot(ray_dir,sun_direction);float phase_r=phase_ray(cos_angle);float phase_m=phase_mie(cos_angle);vec3 beta_r=BETA_R*u_color_tint_r.rgb*u_color_tint_r.a;vec3 beta_m=BETA_M*u_color_tint_m.rgb*u_color_tint_m.a;return (scatter_r*phase_r*beta_r+scatter_m*phase_m*beta_m)*sun_intensity;}const float A=0.15;const float B=0.50;const float C=0.10;const float D=0.20;const float E=0.02;const float F=0.30;vec3 uncharted2_tonemap(vec3 x) {return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;}void main() {vec3 ray_direction=v_position;ray_direction.y=pow(ray_direction.y,5.0);const float y_bias=0.015;ray_direction.y+=y_bias;vec3 color=atmosphere(normalize(ray_direction),u_sun_direction,u_sun_intensity);float white_scale=1.0748724675633854;color=uncharted2_tonemap((log2(2.0/pow(u_luminance,4.0)))*color)*white_scale;gl_FragColor=vec4(color,1.0);}\",\"attribute highp vec3 a_pos_3f;uniform mat3 u_matrix_3f;varying highp vec3 v_position;float map(float value,float start,float end,float new_start,float new_end) {return ((value-start)*(new_end-new_start))/(end-start)+new_start;}void main() {vec4 pos=vec4(u_matrix_3f*a_pos_3f,1.0);v_position=pos.xyz;v_position.y*=-1.0;v_position.y=map(v_position.y,-1.0,1.0,0.0,1.0);gl_Position=vec4(a_pos_3f.xy,0.0,1.0);}\"),globeRaster:pi(\"uniform sampler2D u_image0;varying vec2 v_pos0;\\n#ifndef FOG\\nuniform highp vec3 u_frustum_tl;uniform highp vec3 u_frustum_tr;uniform highp vec3 u_frustum_br;uniform highp vec3 u_frustum_bl;uniform highp vec3 u_globe_pos;uniform highp float u_globe_radius;uniform vec2 u_viewport;\\n#endif\\nvoid main() {\\n#ifdef CUSTOM_ANTIALIASING\\nvec2 uv=gl_FragCoord.xy/u_viewport;highp vec3 ray_dir=mix(\\nmix(u_frustum_tl,u_frustum_tr,uv.x),mix(u_frustum_bl,u_frustum_br,uv.x),1.0-uv.y);vec3 dir=normalize(ray_dir);vec3 closest_point=dot(u_globe_pos,dir)*dir;float norm_dist_from_center=1.0-length(closest_point-u_globe_pos)/u_globe_radius;const float antialias_pixel=2.0;float antialias_factor=antialias_pixel*fwidth(norm_dist_from_center);float antialias=smoothstep(0.0,antialias_factor,norm_dist_from_center);vec4 raster=texture2D(u_image0,v_pos0);vec4 color=vec4(raster.rgb*antialias,raster.a*antialias);\\n#else\\nvec4 color=texture2D(u_image0,v_pos0);\\n#endif\\n#ifdef FOG\\ncolor=fog_dither(fog_apply_premultiplied(color,v_fog_pos));\\n#endif\\ngl_FragColor=color;\\n#ifdef TERRAIN_WIREFRAME\\ngl_FragColor=vec4(1.0,0.0,0.0,0.8);\\n#endif\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_proj_matrix;uniform mat4 u_normalize_matrix;uniform mat4 u_globe_matrix;uniform mat4 u_merc_matrix;uniform float u_zoom_transition;uniform vec2 u_merc_center;uniform mat3 u_grid_matrix;\\n#ifdef GLOBE_POLES\\nattribute vec3 a_globe_pos;attribute vec2 a_uv;\\n#else\\nattribute vec2 a_pos;\\n#endif\\nvarying vec2 v_pos0;const float wireframeOffset=1e3;float mercatorXfromLng(float lng) {return (180.0+lng)/360.0;}float mercatorYfromLat(float lat) {return (180.0-(RAD_TO_DEG*log(tan(QUARTER_PI+lat/2.0*DEG_TO_RAD))))/360.0;}vec3 latLngToECEF(vec2 latLng) {latLng=DEG_TO_RAD*latLng;float cosLat=cos(latLng[0]);float sinLat=sin(latLng[0]);float cosLng=cos(latLng[1]);float sinLng=sin(latLng[1]);float sx=cosLat*sinLng*GLOBE_RADIUS;float sy=-sinLat*GLOBE_RADIUS;float sz=cosLat*cosLng*GLOBE_RADIUS;return vec3(sx,sy,sz);}void main() {\\n#ifdef GLOBE_POLES\\nvec3 globe_pos=a_globe_pos;vec2 uv=a_uv;\\n#else\\nfloat tiles=u_grid_matrix[0][2];float idy=u_grid_matrix[1][2];float S=u_grid_matrix[2][2];vec3 latLng=u_grid_matrix*vec3(a_pos,1.0);float mercatorY=mercatorYfromLat(latLng[0]);float uvY=mercatorY*tiles-idy;float mercatorX=mercatorXfromLng(latLng[1]);float uvX=a_pos[0]*S;vec3 globe_pos=latLngToECEF(latLng.xy);vec2 merc_pos=vec2(mercatorX,mercatorY);vec2 uv=vec2(uvX,uvY);\\n#endif\\nv_pos0=uv;vec2 tile_pos=uv*EXTENT;\\n#ifdef GLOBE_POLES\\nvec3 up_vector=normalize(globe_pos)*u_tile_up_scale;\\n#else\\nvec3 up_vector=elevationVector(tile_pos);\\n#endif\\nfloat height=elevation(tile_pos);\\n#ifdef TERRAIN_WIREFRAME\\nheight+=wireframeOffset;\\n#endif\\nglobe_pos+=up_vector*height;\\n#ifdef GLOBE_POLES\\nvec4 interpolated_pos=u_globe_matrix*vec4(globe_pos,1.0);\\n#else\\nvec4 globe_world_pos=u_globe_matrix*vec4(globe_pos,1.0);vec4 merc_world_pos=vec4(0.0);if (u_zoom_transition > 0.0) {merc_world_pos=vec4(merc_pos,height,1.0);merc_world_pos.xy-=u_merc_center;merc_world_pos.x=wrap(merc_world_pos.x,-0.5,0.5);merc_world_pos=u_merc_matrix*merc_world_pos;}vec4 interpolated_pos=vec4(mix(globe_world_pos.xyz,merc_world_pos.xyz,u_zoom_transition),1.0);\\n#endif\\ngl_Position=u_proj_matrix*interpolated_pos;\\n#ifdef FOG\\nv_fog_pos=fog_position((u_normalize_matrix*vec4(globe_pos,1.0)).xyz);\\n#endif\\n}\"),globeAtmosphere:pi(\"uniform float u_transition;uniform highp float u_fadeout_range;uniform highp float u_temporal_offset;uniform vec3 u_start_color;uniform vec4 u_color;uniform vec4 u_space_color;uniform vec4 u_high_color;uniform float u_star_intensity;uniform float u_star_size;uniform float u_star_density;uniform float u_horizon_angle;uniform mat4 u_rotation_matrix;varying highp vec3 v_ray_dir;varying highp vec3 v_horizon_dir;highp float random(highp vec3 p) {p=fract(p*vec3(23.2342,97.1231,91.2342));p+=dot(p.zxy,p.yxz+123.1234);return fract(p.x*p.y);}float stars(vec3 p,float scale,vec2 offset) {vec2 uv_scale=(u_viewport/u_star_size)*scale;vec3 position=vec3(p.xy*uv_scale+offset*u_viewport,p.z);vec3 q=fract(position)-0.5;vec3 id=floor(position);float random_visibility=step(random(id),u_star_density);float circle=smoothstep(0.5+u_star_intensity,0.5,length(q));return circle*random_visibility;}void main() {highp vec3 dir=normalize(v_ray_dir);\\n#ifdef PROJECTION_GLOBE_VIEW\\nfloat globe_pos_dot_dir=dot(u_globe_pos,dir);highp vec3 closest_point_forward=abs(globe_pos_dot_dir)*dir;float norm_dist_from_center=length(closest_point_forward-u_globe_pos)/u_globe_radius;if (norm_dist_from_center < 0.98) {discard;return;}\\n#endif\\nhighp vec3 horizon_dir=normalize(v_horizon_dir);float horizon_angle_mercator=dir.y < horizon_dir.y ?\\n0.0 : max(acos(dot(dir,horizon_dir)),0.0);\\n#ifdef PROJECTION_GLOBE_VIEW\\nhighp vec3 closest_point=globe_pos_dot_dir*dir;float closest_point_to_center=length(closest_point-u_globe_pos);float theta=asin(clamp(closest_point_to_center/length(u_globe_pos),-1.0,1.0));float horizon_angle=globe_pos_dot_dir < 0.0 ?\\nPI-theta-u_horizon_angle : theta-u_horizon_angle;float angle_t=pow(u_transition,10.0);horizon_angle=mix(horizon_angle,horizon_angle_mercator,angle_t);\\n#else\\nfloat horizon_angle=horizon_angle_mercator;\\n#endif\\nhorizon_angle/=PI;float t=exp(-horizon_angle/u_fadeout_range);float alpha_0=u_color.a;float alpha_1=u_high_color.a;float alpha_2=u_space_color.a;vec3 color_stop_0=u_color.rgb;vec3 color_stop_1=u_high_color.rgb;vec3 color_stop_2=u_space_color.rgb;vec3 c0=mix(color_stop_2,color_stop_1,alpha_1);vec3 c1=mix(c0,color_stop_0,alpha_0);vec3 c2=mix(c0,c1,t);vec3 c =mix(color_stop_2,c2,t);float a0=mix(alpha_2,1.0,alpha_1);float a1=mix(a0,1.0,alpha_0);float a2=mix(a0,a1,t);float a =mix(alpha_2,a2,t);vec2 uv=gl_FragCoord.xy/u_viewport-0.5;float aspect_ratio=u_viewport.x/u_viewport.y;vec4 uv_dir=vec4(normalize(vec3(uv.x*aspect_ratio,uv.y,1.0)),1.0);uv_dir=u_rotation_matrix*uv_dir;vec3 n=abs(uv_dir.xyz);vec2 uv_remap=(n.x > n.y && n.x > n.z) ? uv_dir.yz/uv_dir.x:\\n(n.y > n.x && n.y > n.z) ? uv_dir.zx/uv_dir.y:\\nuv_dir.xy/uv_dir.z;uv_remap.x/=aspect_ratio;vec3 D=vec3(uv_remap,1.0);highp float star_field=0.0;if (u_star_intensity > 0.0) {star_field+=stars(D,1.2,vec2(0.0,0.0));star_field+=stars(D,1.0,vec2(1.0,0.0));star_field+=stars(D,0.8,vec2(0.0,1.0));star_field+=stars(D,0.6,vec2(1.0,1.0));star_field*=(1.0-pow(t,0.25+(1.0-u_high_color.a)*0.75));c+=star_field*alpha_2;}c=dither(c,gl_FragCoord.xy+u_temporal_offset);gl_FragColor=vec4(c,a);}\",\"attribute vec3 a_pos;attribute vec2 a_uv;uniform vec3 u_frustum_tl;uniform vec3 u_frustum_tr;uniform vec3 u_frustum_br;uniform vec3 u_frustum_bl;uniform float u_horizon;varying highp vec3 v_ray_dir;varying highp vec3 v_horizon_dir;void main() {v_ray_dir=mix(\\nmix(u_frustum_tl,u_frustum_tr,a_uv.x),mix(u_frustum_bl,u_frustum_br,a_uv.x),a_uv.y);v_horizon_dir=mix(\\nmix(u_frustum_tl,u_frustum_bl,u_horizon),mix(u_frustum_tr,u_frustum_br,u_horizon),a_uv.x);gl_Position=vec4(a_pos,1.0);}\")};function di(e,t){const i=e.replace(/\\s*\\/\\/[^\\n]*\\n/g,\"\\n\").split(\"\\n\");for(let e of i)if(e=e.trim(),\"#\"===e[0]&&e.includes(\"if\")&&!e.includes(\"endif\")){e=e.replace(\"#\",\"\").replace(/ifdef|ifndef|elif|if/g,\"\").replace(/!|defined|\\(|\\)|\\|\\||&&/g,\"\").replace(/\\s+/g,\" \").trim();const i=e.split(\" \");for(const e of i)t.includes(e)||t.push(e);}}function pi(e,t){const i=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,o=t.match(/attribute (highp |mediump |lowp )?([\\w]+) ([\\w]+)/g),r={},n=[...li];return di(e,n),di(t,n),{fragmentSource:e=e.replace(i,((e,t,i,o,n)=>(r[n]=!0,\"define\"===t?`\\n#ifndef HAS_UNIFORM_u_${n}\\nvarying ${i} ${o} ${n};\\n#else\\nuniform ${i} ${o} u_${n};\\n#endif\\n`:`\\n#ifdef HAS_UNIFORM_u_${n}\\n ${i} ${o} ${n} = u_${n};\\n#endif\\n`))),vertexSource:t=t.replace(i,((e,t,i,o,n)=>{const a=\"float\"===o?\"vec2\":\"vec4\",s=n.match(/color/)?\"color\":a;return r[n]?\"define\"===t?`\\n#ifndef HAS_UNIFORM_u_${n}\\nuniform lowp float u_${n}_t;\\nattribute ${i} ${a} a_${n};\\nvarying ${i} ${o} ${n};\\n#else\\nuniform ${i} ${o} u_${n};\\n#endif\\n`:\"vec4\"===s?`\\n#ifndef HAS_UNIFORM_u_${n}\\n ${n} = a_${n};\\n#else\\n ${i} ${o} ${n} = u_${n};\\n#endif\\n`:`\\n#ifndef HAS_UNIFORM_u_${n}\\n ${n} = unpack_mix_${s}(a_${n}, u_${n}_t);\\n#else\\n ${i} ${o} ${n} = u_${n};\\n#endif\\n`:\"define\"===t?`\\n#ifndef HAS_UNIFORM_u_${n}\\nuniform lowp float u_${n}_t;\\nattribute ${i} ${a} a_${n};\\n#else\\nuniform ${i} ${o} u_${n};\\n#endif\\n`:\"vec4\"===s?`\\n#ifndef HAS_UNIFORM_u_${n}\\n ${i} ${o} ${n} = a_${n};\\n#else\\n ${i} ${o} ${n} = u_${n};\\n#endif\\n`:`\\n#ifndef HAS_UNIFORM_u_${n}\\n ${i} ${o} ${n} = unpack_mix_${s}(a_${n}, u_${n}_t);\\n#else\\n ${i} ${o} ${n} = u_${n};\\n#endif\\n`})),staticAttributes:o,usedDefines:n}}class mi{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffers=[],this.vao=null;}bind(e,t,i,o,r,n,a){this.context=e;let s=this.boundPaintVertexBuffers.length!==o.length;for(let e=0;!s&&e<o.length;e++)this.boundPaintVertexBuffers[e]!==o[e]&&(s=!0);let l=this.boundDynamicVertexBuffers.length!==a.length;for(let e=0;!l&&e<a.length;e++)this.boundDynamicVertexBuffers[e]!==a[e]&&(l=!0);if(!e.extVertexArrayObject||!this.vao||this.boundProgram!==t||this.boundLayoutVertexBuffer!==i||s||l||this.boundIndexBuffer!==r||this.boundVertexOffset!==n)this.freshBind(t,i,o,r,n,a);else {e.bindVertexArrayOES.set(this.vao);for(const e of a)e&&e.bind();r&&r.dynamicDraw&&r.bind();}}freshBind(e,t,i,o,r,n){let a;const s=e.numAttributes,l=this.context,c=l.gl;if(l.extVertexArrayObject)this.vao&&this.destroy(),this.vao=l.extVertexArrayObject.createVertexArrayOES(),l.bindVertexArrayOES.set(this.vao),a=0,this.boundProgram=e,this.boundLayoutVertexBuffer=t,this.boundPaintVertexBuffers=i,this.boundIndexBuffer=o,this.boundVertexOffset=r,this.boundDynamicVertexBuffers=n;else {a=l.currentNumAttributes||0;for(let e=s;e<a;e++)c.disableVertexAttribArray(e);}t.enableAttributes(c,e),t.bind(),t.setVertexAttribPointers(c,e,r);for(const t of i)t.enableAttributes(c,e),t.bind(),t.setVertexAttribPointers(c,e,r);for(const t of n)t&&(t.enableAttributes(c,e),t.bind(),t.setVertexAttribPointers(c,e,r));o&&o.bind(),l.currentNumAttributes=s;}destroy(){this.vao&&(this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao),this.vao=null);}}function fi(t,i){const o=Math.pow(2,i.canonical.z),r=i.canonical.y;return [new e.MercatorCoordinate(0,r/o).toLngLat().lat,new e.MercatorCoordinate(0,(r+1)/o).toLngLat().lat]}function gi(t,i,o,r,n,a,s){const l=t.context,c=l.gl,h=o.fbo;if(!h)return;t.prepareDrawTile();const u=t.useProgram(\"hillshade\");l.activeTexture.set(c.TEXTURE0),c.bindTexture(c.TEXTURE_2D,h.colorAttachment.get());const _=((e,t,i,o)=>{const r=i.paint.get(\"hillshade-shadow-color\"),n=i.paint.get(\"hillshade-highlight-color\"),a=i.paint.get(\"hillshade-accent-color\");let s=i.paint.get(\"hillshade-illumination-direction\")*(Math.PI/180);\"viewport\"===i.paint.get(\"hillshade-illumination-anchor\")&&(s-=e.transform.angle);const l=!e.options.moving;return {u_matrix:o||e.transform.calculateProjMatrix(t.tileID.toUnwrapped(),l),u_image:0,u_latrange:fi(0,t.tileID),u_light:[i.paint.get(\"hillshade-exaggeration\"),s],u_shadow:r,u_highlight:n,u_accent:a}})(t,o,r,t.terrain?i.projMatrix:null);t.prepareDrawProgram(l,u,i.toUnwrapped());const{tileBoundsBuffer:d,tileBoundsIndexBuffer:p,tileBoundsSegments:m}=t.getTileBoundsBuffers(o);u.draw(l,c.TRIANGLES,n,a,s,e.CullFaceMode.disabled,_,r.id,d,p,m);}function vi(t,i,o){if(!i.needsDEMTextureUpload)return;const r=t.context,n=r.gl;r.pixelStoreUnpackPremultiplyAlpha.set(!1),i.demTexture=i.demTexture||t.getTileTexture(o.stride);const a=o.getPixels();i.demTexture?i.demTexture.update(a,{premultiply:!1}):i.demTexture=new e.Texture(r,a,n.RGBA,{premultiply:!1}),i.needsDEMTextureUpload=!1;}function xi(t,i,o,r,n,a){const s=t.context,l=s.gl;if(!i.dem)return;const c=i.dem;if(s.activeTexture.set(l.TEXTURE1),vi(t,i,c),!i.demTexture)return;i.demTexture.bind(l.NEAREST,l.CLAMP_TO_EDGE);const h=c.dim;s.activeTexture.set(l.TEXTURE0);let u=i.fbo;if(!u){const t=new e.Texture(s,{width:h,height:h,data:null},l.RGBA);t.bind(l.LINEAR,l.CLAMP_TO_EDGE),u=i.fbo=s.createFramebuffer(h,h,!0),u.colorAttachment.set(t.texture);}s.bindFramebuffer.set(u.framebuffer),s.viewport.set([0,0,h,h]);const{tileBoundsBuffer:_,tileBoundsIndexBuffer:d,tileBoundsSegments:p}=t.getMercatorTileBoundsBuffers();t.useProgram(\"hillshadePrepare\").draw(s,l.TRIANGLES,r,n,a,e.CullFaceMode.disabled,((t,i)=>{const o=i.stride,r=e.create();return e.ortho(r,0,e.EXTENT,-e.EXTENT,0,0,1),e.translate(r,r,[0,-e.EXTENT,0]),{u_matrix:r,u_image:1,u_dimension:[o,o],u_zoom:t.overscaledZ,u_unpack:i.unpackVector}})(i.tileID,c),o.id,_,d,p),i.needsHillshadePrepare=!1;}const yi=t=>({u_matrix:new e.UniformMatrix4f(t),u_image0:new e.Uniform1i(t),u_skirt_height:new e.Uniform1f(t)}),bi=(e,t)=>({u_matrix:e,u_image0:0,u_skirt_height:t}),wi=(e,t,i,o,r,n,a,s,l,c,h,u,_,d)=>({u_proj_matrix:Float32Array.from(e),u_globe_matrix:t,u_normalize_matrix:Float32Array.from(o),u_merc_matrix:i,u_zoom_transition:r,u_merc_center:n,u_image0:0,u_frustum_tl:a,u_frustum_tr:s,u_frustum_br:l,u_frustum_bl:c,u_globe_pos:h,u_globe_radius:u,u_viewport:_,u_grid_matrix:d?Float32Array.from(d):new Float32Array(9)});function Ti(e,t){return null!=e&&null!=t&&!(!e.hasData()||!t.hasData())&&null!=e.demTexture&&null!=t.demTexture&&e.tileID.key!==t.tileID.key}const Ei=new class{constructor(){this.operations={};}newMorphing(e,t,i,o,r){if(e in this.operations){const t=this.operations[e];t.to.tileID.key!==i.tileID.key&&(t.queued=i);}else this.operations[e]={startTime:o,phase:0,duration:r,from:t,to:i,queued:null};}getMorphValuesForProxy(e){if(!(e in this.operations))return null;const t=this.operations[e];return {from:t.from,to:t.to,phase:t.phase}}update(e){for(const t in this.operations){const i=this.operations[t];for(i.phase=(e-i.startTime)/i.duration;i.phase>=1||!this._validOp(i);)if(!this._nextOp(i,e)){delete this.operations[t];break}}}_nextOp(e,t){return !!e.queued&&(e.from=e.to,e.to=e.queued,e.queued=null,e.phase=0,e.startTime=t,!0)}_validOp(e){return e.from.hasData()&&e.to.hasData()}},Ci={0:null,1:\"TERRAIN_VERTEX_MORPHING\",2:\"TERRAIN_WIREFRAME\"};function Ii(e,t){const i=1<<e.z;return !t&&(0===e.x||e.x===i-1)||0===e.y||e.y===i-1}const Mi=e=>({u_matrix:e});function Si(t,i,o,r,n){if(n>0){const a=e.exported.now(),s=(a-t.timeAdded)/n,l=i?(a-i.timeAdded)/n:-1,c=o.getSource(),h=r.coveringZoomLevel({tileSize:c.tileSize,roundZoom:c.roundZoom}),u=!i||Math.abs(i.tileID.overscaledZ-h)>Math.abs(t.tileID.overscaledZ-h),_=u&&t.refreshedUponExpiration?1:e.clamp(u?s:1-l,0,1);return t.refreshedUponExpiration&&s>=1&&(t.refreshedUponExpiration=!1),i?{opacity:1,mix:1-_}:{opacity:_,mix:0}}return {opacity:1,mix:0}}class zi extends e.SourceCache{constructor(e){const t={type:\"raster-dem\",maxzoom:e.transform.maxZoom},i=new A(Ge(),null),o=Ae(\"mock-dem\",t,i,e.style);super(\"mock-dem\",o,!1),o.setEventedParent(this),this._sourceLoaded=!0;}_loadTile(e,t){e.state=\"loaded\",t(null);}}class Di extends e.SourceCache{constructor(e){const t=Ae(\"proxy\",{type:\"geojson\",maxzoom:e.transform.maxZoom},new A(Ge(),null),e.style);super(\"proxy\",t,!1),t.setEventedParent(this),this.map=this.getSource().map=e,this.used=this._sourceLoaded=!0,this.renderCache=[],this.renderCachePool=[],this.proxyCachedFBO={};}update(t,i,o){if(t.freezeTileCoverage)return;this.transform=t;const r=t.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}).reduce(((i,o)=>{if(i[o.key]=\"\",!this._tiles[o.key]){const i=new e.Tile(o,this._source.tileSize*o.overscaleFactor(),t.tileZoom);i.state=\"loaded\",this._tiles[o.key]=i;}return i}),{});for(const e in this._tiles)e in r||(this.freeFBO(e),this._tiles[e].unloadVectorData(),delete this._tiles[e]);}freeFBO(e){const t=this.proxyCachedFBO[e];if(void 0!==t){const i=Object.values(t);this.renderCachePool.push(...i),delete this.proxyCachedFBO[e];}}deallocRenderCache(){this.renderCache.forEach((e=>e.fb.destroy())),this.renderCache=[],this.renderCachePool=[],this.proxyCachedFBO={};}}class Pi extends e.OverscaledTileID{constructor(e,t,i){super(e.overscaledZ,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y),this.proxyTileKey=t,this.projMatrix=i;}}class Ai extends e.Elevation{constructor(t,i){super(),this.painter=t,this.terrainTileForTile={},this.prevTerrainTileForTile={};const[o,r,n]=function(t){const i=new e.StructArrayLayout4i8,o=new e.StructArrayLayout3ui6,r=131;i.reserve(17161),o.reserve(33800);const n=e.EXTENT/128,a=e.EXTENT+n/2,s=a+n;for(let t=-n;t<s;t+=n)for(let o=-n;o<s;o+=n){const r=o<0||o>a||t<0||t>a?24575:0,n=e.clamp(Math.round(o),0,e.EXTENT),s=e.clamp(Math.round(t),0,e.EXTENT);i.emplaceBack(n+r,s,n,s);}const l=(e,t)=>{const i=t*r+e;o.emplaceBack(i+1,i,i+r),o.emplaceBack(i+r,i+r+1,i+1);};for(let e=1;e<129;e++)for(let t=1;t<129;t++)l(t,e);return [0,129].forEach((e=>{for(let t=0;t<130;t++)l(t,e),l(e,t);})),[i,o,32768]}(),a=t.context;this.gridBuffer=a.createVertexBuffer(o,e.boundsAttributes.members),this.gridIndexBuffer=a.createIndexBuffer(r),this.gridSegments=e.SegmentVector.simpleSegment(0,0,o.length,r.length),this.gridNoSkirtSegments=e.SegmentVector.simpleSegment(0,0,o.length,n),this.proxyCoords=[],this.proxiedCoords={},this._visibleDemTiles=[],this._drapedRenderBatches=[],this._sourceTilesOverlap={},this.proxySourceCache=new Di(i.map),this.orthoMatrix=e.create(),e.ortho(this.orthoMatrix,0,e.EXTENT,0,e.EXTENT,0,1);const s=a.gl;this._overlapStencilMode=new e.StencilMode({func:s.GEQUAL,mask:255},0,255,s.KEEP,s.KEEP,s.REPLACE),this._previousZoom=t.transform.zoom,this.pool=[],this._findCoveringTileCache={},this._tilesDirty={},this.style=i,this._useVertexMorphing=!0,this._exaggeration=1,this._mockSourceCache=new zi(i.map);}set style(e){e.on(\"data\",this._onStyleDataEvent.bind(this)),e.on(\"neworder\",this._checkRenderCacheEfficiency.bind(this)),this._style=e,this._checkRenderCacheEfficiency();}update(t,i,o){if(t&&t.terrain){this._style!==t&&(this.style=t),this.enabled=!0;const r=t.terrain.properties;this.sourceCache=0===t.terrain.drapeRenderMode?this._mockSourceCache:t._getSourceCache(r.get(\"source\")),this._exaggeration=r.get(\"exaggeration\");const n=()=>{this.sourceCache.used&&e.warnOnce(`Raster DEM source '${this.sourceCache.id}' is used both for terrain and as layer source.\\nThis leads to lower resolution of hillshade. For full hillshade resolution but higher memory consumption, define another raster DEM source.`);const t=this.getScaledDemTileSize();this.sourceCache.update(i,t,!0),this.resetTileLookupCache(this.sourceCache.id);};this.sourceCache.usedForTerrain||(this.resetTileLookupCache(this.sourceCache.id),this.sourceCache.usedForTerrain=!0,n(),this._initializing=!0),n(),i.updateElevation(!o),this.resetTileLookupCache(this.proxySourceCache.id),this.proxySourceCache.update(i),this._emptyDEMTextureDirty=!0;}else this._disable();}resetTileLookupCache(e){this._findCoveringTileCache[e]={};}getScaledDemTileSize(){return this.sourceCache.getSource().tileSize/128*this.proxySourceCache.getSource().tileSize}_checkRenderCacheEfficiency(){const t=this.renderCacheEfficiency(this._style);this._style.map._optimizeForTerrain||100!==t.efficiency&&e.warnOnce(`Terrain render cache efficiency is not optimal (${t.efficiency}%) and performance\\n may be affected negatively, consider placing all background, fill and line layers before layer\\n with id '${t.firstUndrapedLayer}' or create a map using optimizeForTerrain: true option.`);}_onStyleDataEvent(e){e.coord&&\"source\"===e.dataType?this._clearRenderCacheForTile(e.sourceCacheId,e.coord):\"style\"===e.dataType&&(this._invalidateRenderCache=!0);}_disable(){if(this.enabled&&(this.enabled=!1,this._sharedDepthStencil=void 0,this.proxySourceCache.deallocRenderCache(),this._style))for(const e in this._style._sourceCaches)this._style._sourceCaches[e].usedForTerrain=!1;}destroy(){this._disable(),this._emptyDEMTexture&&this._emptyDEMTexture.destroy(),this._emptyDepthBufferTexture&&this._emptyDepthBufferTexture.destroy(),this.pool.forEach((e=>e.fb.destroy())),this.pool=[],this._depthFBO&&(this._depthFBO.destroy(),this._depthFBO=void 0,this._depthTexture=void 0);}_source(){return this.enabled?this.sourceCache:null}exaggeration(){return this._exaggeration}get visibleDemTiles(){return this._visibleDemTiles}get drapeBufferSize(){const e=2*this.proxySourceCache.getSource().tileSize;return [e,e]}set useVertexMorphing(e){this._useVertexMorphing=e;}updateTileBinding(t){if(!this.enabled)return;this.prevTerrainTileForTile=this.terrainTileForTile;const i=this.proxySourceCache,o=this.painter.transform;this._initializing&&(this._initializing=0===o._centerAltitude&&-1===this.getAtPointOrZero(e.MercatorCoordinate.fromLngLat(o.center),-1),this._emptyDEMTextureDirty=!this._initializing);const r=this.proxyCoords=i.getIds().map((e=>{const t=i.getTileByID(e).tileID;return t.projMatrix=o.calculateProjMatrix(t.toUnwrapped()),t}));!function(t,i){const o=i.transform.pointCoordinate(i.transform.getCameraPoint()),r=new e.pointGeometry(o.x,o.y);t.sort(((t,i)=>{if(i.overscaledZ-t.overscaledZ)return i.overscaledZ-t.overscaledZ;const o=new e.pointGeometry(t.canonical.x+(1<<t.canonical.z)*t.wrap,t.canonical.y),n=new e.pointGeometry(i.canonical.x+(1<<i.canonical.z)*i.wrap,i.canonical.y),a=r.mult(1<<t.canonical.z);return a.x-=.5,a.y-=.5,a.distSqr(o)-a.distSqr(n)}));}(r,this.painter),this._previousZoom=o.zoom;const n=this.proxyToSource||{};this.proxyToSource={},r.forEach((e=>{this.proxyToSource[e.key]={};})),this.terrainTileForTile={};const a=this._style._sourceCaches;for(const e in a){const i=a[e];if(!i.used)continue;if(i!==this.sourceCache&&this.resetTileLookupCache(i.id),this._setupProxiedCoordsForOrtho(i,t[e],n),i.usedForTerrain)continue;const o=t[e];i.getSource().reparseOverscaled&&this._assignTerrainTiles(o);}this.proxiedCoords[i.id]=r.map((e=>new Pi(e,e.key,this.orthoMatrix))),this._assignTerrainTiles(r),this._prepareDEMTextures(),this._setupDrapedRenderBatches(),this._initFBOPool(),this._setupRenderCache(n),this.renderingToTexture=!1,this._updateTimestamp=e.exported.now();const s={};this._visibleDemTiles=[];for(const e of this.proxyCoords){const t=this.terrainTileForTile[e.key];if(!t)continue;const i=t.tileID.key;i in s||(this._visibleDemTiles.push(t),s[i]=i);}}_assignTerrainTiles(e){this._initializing||e.forEach((e=>{if(this.terrainTileForTile[e.key])return;const t=this._findTileCoveringTileID(e,this.sourceCache);t&&(this.terrainTileForTile[e.key]=t);}));}_prepareDEMTextures(){const e=this.painter.context,t=e.gl;for(const i in this.terrainTileForTile){const o=this.terrainTileForTile[i],r=o.dem;!r||o.demTexture&&!o.needsDEMTextureUpload||(e.activeTexture.set(t.TEXTURE1),vi(this.painter,o,r));}}_prepareDemTileUniforms(e,t,i,o){if(!t||null==t.demTexture)return !1;const r=e.tileID.canonical,n=Math.pow(2,t.tileID.canonical.z-r.z),a=o||\"\";return i[`u_dem_tl${a}`]=[r.x*n%1,r.y*n%1],i[`u_dem_scale${a}`]=n,!0}get emptyDEMTexture(){return !this._emptyDEMTextureDirty&&this._emptyDEMTexture?this._emptyDEMTexture:this._updateEmptyDEMTexture()}get emptyDepthBufferTexture(){const t=this.painter.context,i=t.gl;if(!this._emptyDepthBufferTexture){const o=new e.RGBAImage({width:1,height:1},Uint8Array.of(255,255,255,255));this._emptyDepthBufferTexture=new e.Texture(t,o,i.RGBA,{premultiply:!1});}return this._emptyDepthBufferTexture}_getLoadedAreaMinimum(){let e=0;const t=this._visibleDemTiles.reduce(((t,i)=>{if(!i.dem)return t;const o=i.dem.tree.minimums[0];return o>0&&e++,t+o}),0);return e?t/e:0}_updateEmptyDEMTexture(){const t=this.painter.context,i=t.gl;t.activeTexture.set(i.TEXTURE2);const o=this._getLoadedAreaMinimum(),r=new e.RGBAImage({width:1,height:1},new Uint8Array(e.DEMData.pack(o,this.sourceCache.getSource().encoding)));this._emptyDEMTextureDirty=!1;let n=this._emptyDEMTexture;return n?n.update(r,{premultiply:!1}):n=this._emptyDEMTexture=new e.Texture(t,r,i.RGBA,{premultiply:!1}),n}setupElevationDraw(t,i,o){const r=this.painter.context,n=r.gl,a=(s=this.sourceCache.getSource().encoding,{u_dem:2,u_dem_prev:4,u_dem_unpack:e.DEMData.getUnpackVector(s),u_dem_tl:[0,0],u_dem_tl_prev:[0,0],u_dem_scale:0,u_dem_scale_prev:0,u_dem_size:0,u_dem_lerp:1,u_depth:3,u_depth_size_inv:[0,0],u_exaggeration:0,u_tile_tl_up:[0,0,1],u_tile_tr_up:[0,0,1],u_tile_br_up:[0,0,1],u_tile_bl_up:[0,0,1],u_tile_up_scale:1});var s;a.u_dem_size=this.sourceCache.getSource().tileSize,a.u_exaggeration=this.exaggeration();const l=this.painter.transform,c=l.projection,h=t.tileID.canonical;a.u_tile_tl_up=c.upVector(h,0,0),a.u_tile_tr_up=c.upVector(h,e.EXTENT,0),a.u_tile_br_up=c.upVector(h,e.EXTENT,e.EXTENT),a.u_tile_bl_up=c.upVector(h,0,e.EXTENT),a.u_tile_up_scale=o&&o.useDenormalizedUpVectorScale?e.GLOBE_METERS_TO_ECEF:c.upVectorScale(h,l.center.lat,l.worldSize).metersToTile;let u=null,_=null,d=1;if(o&&o.morphing&&this._useVertexMorphing){const e=o.morphing.srcDemTile,i=o.morphing.dstDemTile;d=o.morphing.phase,e&&i&&(this._prepareDemTileUniforms(t,e,a,\"_prev\")&&(_=e),this._prepareDemTileUniforms(t,i,a)&&(u=i));}if(_&&u?(r.activeTexture.set(n.TEXTURE2),u.demTexture.bind(n.NEAREST,n.CLAMP_TO_EDGE,n.NEAREST),r.activeTexture.set(n.TEXTURE4),_.demTexture.bind(n.NEAREST,n.CLAMP_TO_EDGE,n.NEAREST),a.u_dem_lerp=d):(u=this.terrainTileForTile[t.tileID.key],r.activeTexture.set(n.TEXTURE2),(this._prepareDemTileUniforms(t,u,a)?u.demTexture:this.emptyDEMTexture).bind(n.NEAREST,n.CLAMP_TO_EDGE)),r.activeTexture.set(n.TEXTURE3),o&&o.useDepthForOcclusion?(this._depthTexture&&this._depthTexture.bind(n.NEAREST,n.CLAMP_TO_EDGE),this._depthFBO&&(a.u_depth_size_inv=[1/this._depthFBO.width,1/this._depthFBO.height])):(this.emptyDepthBufferTexture.bind(n.NEAREST,n.CLAMP_TO_EDGE),a.u_depth_size_inv=[1,1]),o&&o.useMeterToDem&&u){const t=(1<<u.tileID.canonical.z)*e.mercatorZfromAltitude(1,this.painter.transform.center.lat)*this.sourceCache.getSource().tileSize;a.u_meter_to_dem=t;}o&&o.labelPlaneMatrixInv&&(a.u_label_plane_matrix_inv=o.labelPlaneMatrixInv),i.setTerrainUniformValues(r,a);}renderToBackBuffer(t){const i=this.painter,o=this.painter.context;0!==t.length&&(o.bindFramebuffer.set(null),o.viewport.set([0,0,i.width,i.height]),i.gpuTimingDeferredRenderStart(),this.renderingToTexture=!1,function(t,i,o,r,n){if(\"globe\"===t.transform.projection.name)!function(t,i,o,r,n){const a=t.context,s=a.gl;let l,c;const h=t.options.showTerrainWireframe?2:0,u=t.transform,_=e.globeUseCustomAntiAliasing(t,a,u),d=(e,i)=>{if(c===e)return;const o=[Ci[e],\"PROJECTION_GLOBE_VIEW\"];_&&o.push(\"CUSTOM_ANTIALIASING\"),i&&o.push(Ci[h]),l=t.useProgram(\"globeRaster\",null,o),c=e;},p=t.colorModeForRenderPass(),m=new e.DepthMode(s.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);Ei.update(n);const f=e.calculateGlobeMercatorMatrix(u),g=[e.mercatorXfromLng(u.center.lng),e.mercatorYfromLat(u.center.lat)],v=h?[!1,!0]:[!1],x=t.globeSharedBuffers,y=[u.width*e.exported.devicePixelRatio,u.height*e.exported.devicePixelRatio],b=Float32Array.from(u.globeMatrix),w={useDenormalizedUpVectorScale:!0};if(v.forEach((h=>{c=-1;const _=h?s.LINES:s.TRIANGLES;for(const c of r){const r=o.getTile(c),v=e.StencilMode.disabled,T=i.prevTerrainTileForTile[c.key],E=i.terrainTileForTile[c.key];Ti(T,E)&&Ei.newMorphing(c.key,T,E,n,250),a.activeTexture.set(s.TEXTURE0),r.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE);const C=Ei.getMorphValuesForProxy(c.key),I=C?1:0;C&&e.extend$1(w,{morphing:{srcDemTile:C.from,dstDemTile:C.to,phase:e.easeCubicInOut(C.phase)}});const M=e.tileCornersToBounds(c.canonical),S=e.getLatitudinalLod(M.getCenter().lat),z=e.getGridMatrix(c.canonical,M,S),D=e.globeNormalizeECEF(e.globeTileBounds(c.canonical)),P=wi(u.projMatrix,b,f,D,e.globeToMercatorTransition(u.zoom),g,u.frustumCorners.TL,u.frustumCorners.TR,u.frustumCorners.BR,u.frustumCorners.BL,u.globeCenterInViewSpace,u.globeRadius,y,z);if(d(I,h),i.setupElevationDraw(r,l,w),t.prepareDrawProgram(a,l,c.toUnwrapped()),x){const[i,o,r]=h?x.getWirefameBuffers(t.context,S):x.getGridBuffers(S);l.draw(a,_,m,v,p,e.CullFaceMode.backCCW,P,\"globe_raster\",i,o,r);}}})),x){const n=[\"GLOBE_POLES\",\"PROJECTION_GLOBE_VIEW\"];_&&n.push(\"CUSTOM_ANTIALIASING\"),l=t.useProgram(\"globeRaster\",null,n);for(const n of r){const{x:r,y:c,z:h}=n.canonical,_=0===c,d=c===(1<<h)-1,[f,v,b,T]=x.getPoleBuffers(h);if(T&&(_||d)){const c=o.getTile(n);a.activeTexture.set(s.TEXTURE0),c.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE);let x=e.globePoleMatrixForTile(h,r,u);const E=e.globeNormalizeECEF(e.globeTileBounds(n.canonical)),C=(t,i)=>t.draw(a,s.TRIANGLES,m,e.StencilMode.disabled,p,e.CullFaceMode.disabled,wi(u.projMatrix,x,x,E,0,g,u.frustumCorners.TL,u.frustumCorners.TR,u.frustumCorners.BR,u.frustumCorners.BL,u.globeCenterInViewSpace,u.globeRadius,y),\"globe_pole_raster\",i,b,T);i.setupElevationDraw(c,l,w),t.prepareDrawProgram(a,l,n.toUnwrapped()),_&&C(l,f),d&&(x=e.scale(e.create(),x,[1,-1,1]),C(l,v));}}}}(t,i,o,r,n);else {const a=t.context,s=a.gl;let l,c;const h=t.options.showTerrainWireframe?2:0,u=(e,i)=>{if(c===e)return;const o=[Ci[e]];i&&o.push(Ci[h]),l=t.useProgram(\"terrainRaster\",null,o),c=e;},_=t.colorModeForRenderPass(),d=new e.DepthMode(s.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);Ei.update(n);const p=t.transform,m=6*Math.pow(1.5,22-p.zoom)*i.exaggeration();(h?[!1,!0]:[!1]).forEach((h=>{c=-1;const f=h?s.LINES:s.TRIANGLES,[g,v]=h?i.getWirefameBuffer():[i.gridIndexBuffer,i.gridSegments];for(const c of r){const r=o.getTile(c),x=e.StencilMode.disabled,y=i.prevTerrainTileForTile[c.key],b=i.terrainTileForTile[c.key];Ti(y,b)&&Ei.newMorphing(c.key,y,b,n,250),a.activeTexture.set(s.TEXTURE0),r.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE,s.LINEAR_MIPMAP_NEAREST);const w=Ei.getMorphValuesForProxy(c.key),T=w?1:0;let E;w&&(E={morphing:{srcDemTile:w.from,dstDemTile:w.to,phase:e.easeCubicInOut(w.phase)}});const C=bi(c.projMatrix,Ii(c.canonical,p.renderWorldCopies)?m/10:m);u(T,h),i.setupElevationDraw(r,l,E),t.prepareDrawProgram(a,l,c.toUnwrapped()),l.draw(a,f,d,x,_,e.CullFaceMode.backCCW,C,\"terrain_raster\",i.gridBuffer,g,v);}}));}}(i,this,this.proxySourceCache,t,this._updateTimestamp),this.renderingToTexture=!0,i.gpuTimingDeferredRenderEnd(),t.splice(0,t.length));}renderBatch(t){if(0===this._drapedRenderBatches.length)return t+1;this.renderingToTexture=!0;const i=this.painter,o=this.painter.context,r=this.proxySourceCache,n=this.proxiedCoords[r.id],a=this._drapedRenderBatches.shift(),s=[],l=i.style.order;let c=0;for(const h of n){const n=r.getTileByID(h.proxyTileKey),u=r.proxyCachedFBO[h.key]?r.proxyCachedFBO[h.key][t]:void 0,_=void 0!==u?r.renderCache[u]:this.pool[c++],d=void 0!==u;if(n.texture=_.tex,d&&!_.dirty){s.push(n.tileID);continue}let p;o.bindFramebuffer.set(_.fb.framebuffer),this.renderedToTile=!1,_.dirty&&(o.clear({color:e.Color.transparent,stencil:0}),_.dirty=!1);for(let e=a.start;e<=a.end;++e){const t=i.style._layers[l[e]];if(t.isHidden(i.transform.zoom))continue;const r=i.style._getLayerSourceCache(t),n=r?this.proxyToSource[h.key][r.id]:[h];if(!n)continue;const a=n;o.viewport.set([0,0,_.fb.width,_.fb.height]),p!==(r?r.id:null)&&(this._setupStencil(_,n,t,r),p=r?r.id:null),i.renderLayer(i,r,t,a);}this.renderedToTile?(_.dirty=!0,s.push(n.tileID)):d||--c,5===c&&(c=0,this.renderToBackBuffer(s));}return this.renderToBackBuffer(s),this.renderingToTexture=!1,o.bindFramebuffer.set(null),o.viewport.set([0,0,i.width,i.height]),a.end+1}postRender(){}renderCacheEfficiency(e){const t=e.order.length;if(0===t)return {efficiency:100};let i,o=0,r=0,n=!1;for(let a=0;a<t;++a){const t=e._layers[e.order[a]];this._style.isLayerDraped(t)?(n&&++o,++r):n||(n=!0,i=t.id);}return 0===r?{efficiency:100}:{efficiency:100*(1-o/r),firstUndrapedLayer:i}}getMinElevationBelowMSL(){let e=0;return this._visibleDemTiles.filter((e=>e.dem)).forEach((t=>{e=Math.min(e,t.dem.tree.minimums[0]);})),0===e?e:(e-30)*this._exaggeration}raycast(e,t,i){if(!this._visibleDemTiles)return null;const o=this._visibleDemTiles.filter((e=>e.dem)).map((o=>{const r=o.tileID,n=1<<r.overscaledZ,{x:a,y:s}=r.canonical,l=a/n,c=(a+1)/n,h=s/n,u=(s+1)/n;return {minx:l,miny:h,maxx:c,maxy:u,t:o.dem.tree.raycastRoot(l,h,c,u,e,t,i),tile:o}}));o.sort(((e,t)=>(null!==e.t?e.t:Number.MAX_VALUE)-(null!==t.t?t.t:Number.MAX_VALUE)));for(const r of o){if(null==r.t)return null;const o=r.tile.dem.tree.raycast(r.minx,r.miny,r.maxx,r.maxy,e,t,i);if(null!=o)return o}return null}_createFBO(){const t=this.painter.context,i=t.gl,o=this.drapeBufferSize;t.activeTexture.set(i.TEXTURE0);const r=new e.Texture(t,{width:o[0],height:o[1],data:null},i.RGBA);r.bind(i.LINEAR,i.CLAMP_TO_EDGE);const n=t.createFramebuffer(o[0],o[1],!1);return n.colorAttachment.set(r.texture),n.depthAttachment=new Ee(t,n.framebuffer),void 0===this._sharedDepthStencil?(this._sharedDepthStencil=t.createRenderbuffer(t.gl.DEPTH_STENCIL,o[0],o[1]),this._stencilRef=0,n.depthAttachment.set(this._sharedDepthStencil),t.clear({stencil:0})):n.depthAttachment.set(this._sharedDepthStencil),t.extTextureFilterAnisotropic&&!t.extTextureFilterAnisotropicForceOff&&i.texParameterf(i.TEXTURE_2D,t.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.extTextureFilterAnisotropicMax),{fb:n,tex:r,dirty:!1}}_initFBOPool(){for(;this.pool.length<Math.min(5,this.proxyCoords.length);)this.pool.push(this._createFBO());}_shouldDisableRenderCache(){if(this._style.light&&this._style.light.hasTransition())return !0;for(const e in this._style._sourceCaches)if(this._style._sourceCaches[e].hasTransition())return !0;return this._style.order.some((e=>{const t=this._style._layers[e],i=t.isHidden(this.painter.transform.zoom),o=t.getCrossfadeParameters(),r=!!o&&1!==o.t,n=t.hasTransition();return \"custom\"!==t.type&&!i&&(r||n)}))}_clearRasterFadeFromRenderCache(){let e=!1;for(const t in this._style._sourceCaches)if(this._style._sourceCaches[t]._source instanceof Me){e=!0;break}if(e)for(let e=0;e<this._style.order.length;++e){const t=this._style._layers[this._style.order[e]],i=t.isHidden(this.painter.transform.zoom),o=this._style._getLayerSourceCache(t);if(\"raster\"!==t.type||i||!o)continue;const r=t.paint.get(\"raster-fade-duration\");for(const e of this.proxyCoords){const t=this.proxyToSource[e.key][o.id];if(t)for(const e of t){const t=Si(o.getTile(e),o.findLoadedParent(e,0),o,this.painter.transform,r);(1!==t.opacity||0!==t.mix)&&this._clearRenderCacheForTile(o.id,e);}}}}_setupDrapedRenderBatches(){const e=this._style.order,t=e.length;if(0===t)return;const i=[];let o,r=0,n=this._style._layers[e[r]];for(;!this._style.isLayerDraped(n)&&n.isHidden(this.painter.transform.zoom)&&++r<t;)n=this._style._layers[e[r]];for(;r<t;++r){const t=this._style._layers[e[r]];t.isHidden(this.painter.transform.zoom)||(this._style.isLayerDraped(t)?void 0===o&&(o=r):void 0!==o&&(i.push({start:o,end:r-1}),o=void 0));}void 0!==o&&i.push({start:o,end:r-1}),this._drapedRenderBatches=i;}_setupRenderCache(e){const t=this.proxySourceCache;if(this._shouldDisableRenderCache()||this._invalidateRenderCache){if(this._invalidateRenderCache=!1,t.renderCache.length>t.renderCachePool.length){const e=Object.values(t.proxyCachedFBO);t.proxyCachedFBO={};for(let i=0;i<e.length;++i){const o=Object.values(e[i]);t.renderCachePool.push(...o);}}return}this._clearRasterFadeFromRenderCache();const i=this.proxyCoords,o=this._tilesDirty;for(let r=i.length-1;r>=0;r--){const n=i[r];if(t.getTileByID(n.key),void 0!==t.proxyCachedFBO[n.key]){const i=e[n.key],r=this.proxyToSource[n.key];let a=0;for(const e in r){const t=r[e],n=i[e];if(!n||n.length!==t.length||t.some(((t,i)=>t!==n[i]||o[e]&&o[e].hasOwnProperty(t.key)))){a=-1;break}++a;}for(const e in t.proxyCachedFBO[n.key])t.renderCache[t.proxyCachedFBO[n.key][e]].dirty=a<0||a!==Object.values(i).length;}}const r=[...this._drapedRenderBatches];r.sort(((e,t)=>t.end-t.start-(e.end-e.start)));for(const e of r)for(const o of i){if(t.proxyCachedFBO[o.key])continue;let i=t.renderCachePool.pop();void 0===i&&t.renderCache.length<50&&(i=t.renderCache.length,t.renderCache.push(this._createFBO())),void 0!==i&&(t.proxyCachedFBO[o.key]={},t.proxyCachedFBO[o.key][e.start]=i,t.renderCache[i].dirty=!0);}this._tilesDirty={};}_setupStencil(e,t,i,o){if(!o||!this._sourceTilesOverlap[o.id])return void(this._overlapStencilType&&(this._overlapStencilType=!1));const r=this.painter.context,n=r.gl;if(t.length<=1)return void(this._overlapStencilType=!1);let a;if(i.isTileClipped())a=t.length,this._overlapStencilMode.test={func:n.EQUAL,mask:255},this._overlapStencilType=\"Clip\";else {if(!(t[0].overscaledZ>t[t.length-1].overscaledZ))return void(this._overlapStencilType=!1);a=1,this._overlapStencilMode.test={func:n.GREATER,mask:255},this._overlapStencilType=\"Mask\";}this._stencilRef+a>255&&(r.clear({stencil:0}),this._stencilRef=0),this._stencilRef+=a,this._overlapStencilMode.ref=this._stencilRef,i.isTileClipped()&&this._renderTileClippingMasks(t,this._overlapStencilMode.ref);}clipOrMaskOverlapStencilType(){return \"Clip\"===this._overlapStencilType||\"Mask\"===this._overlapStencilType}stencilModeForRTTOverlap(t){return this.renderingToTexture&&this._overlapStencilType?(\"Clip\"===this._overlapStencilType&&(this._overlapStencilMode.ref=this.painter._tileClippingMaskIDs[t.key]),this._overlapStencilMode):e.StencilMode.disabled}_renderTileClippingMasks(t,i){const o=this.painter,r=this.painter.context,n=r.gl;o._tileClippingMaskIDs={},r.setColorMode(e.ColorMode.disabled),r.setDepthMode(e.DepthMode.disabled);const a=o.useProgram(\"clippingMask\");for(const s of t){const t=o._tileClippingMaskIDs[s.key]=--i;a.draw(r,n.TRIANGLES,e.DepthMode.disabled,new e.StencilMode({func:n.ALWAYS,mask:0},t,255,n.KEEP,n.KEEP,n.REPLACE),e.ColorMode.disabled,e.CullFaceMode.disabled,Mi(s.projMatrix),\"$clipping\",o.tileExtentBuffer,o.quadTriangleIndexBuffer,o.tileExtentSegments);}}pointCoordinate(t){const i=this.painter.transform;if(t.x<0||t.x>i.width||t.y<0||t.y>i.height)return null;const o=[t.x,t.y,1,1];e.transformMat4$1(o,o,i.pixelMatrixInverse),e.scale$1(o,o,1/o[3]),o[0]/=i.worldSize,o[1]/=i.worldSize;const r=i._camera.position,n=e.mercatorZfromAltitude(1,i.center.lat),a=[r[0],r[1],r[2]/n,0],s=e.subtract([],o.slice(0,3),a);e.normalize(s,s);const l=this.raycast(a,s,this._exaggeration);return null!==l&&l?(e.scaleAndAdd(a,a,s,l),a[3]=a[2],a[2]*=n,a):null}drawDepth(){const t=this.painter,i=t.context,o=this.proxySourceCache,r=Math.ceil(t.width),n=Math.ceil(t.height);if(!this._depthFBO||this._depthFBO.width===r&&this._depthFBO.height===n||(this._depthFBO.destroy(),this._depthFBO=void 0,this._depthTexture=void 0),!this._depthFBO){const t=i.gl,o=i.createFramebuffer(r,n,!0);i.activeTexture.set(t.TEXTURE0);const a=new e.Texture(i,{width:r,height:n,data:null},t.RGBA);a.bind(t.NEAREST,t.CLAMP_TO_EDGE),o.colorAttachment.set(a.texture);const s=i.createRenderbuffer(i.gl.DEPTH_COMPONENT16,r,n);o.depthAttachment.set(s),this._depthFBO=o,this._depthTexture=a;}i.bindFramebuffer.set(this._depthFBO.framebuffer),i.viewport.set([0,0,r,n]),function(t,i,o,r){if(\"globe\"===t.transform.projection.name)return;const n=t.context,a=n.gl;n.clear({depth:1});const s=t.useProgram(\"terrainDepth\"),l=new e.DepthMode(a.LESS,e.DepthMode.ReadWrite,t.depthRangeFor3D);for(const t of r){const r=o.getTile(t),c=bi(t.projMatrix,0);i.setupElevationDraw(r,s),s.draw(n,a.TRIANGLES,l,e.StencilMode.disabled,e.ColorMode.unblended,e.CullFaceMode.backCCW,c,\"terrain_depth\",i.gridBuffer,i.gridIndexBuffer,i.gridNoSkirtSegments);}}(t,this,o,this.proxyCoords);}_setupProxiedCoordsForOrtho(e,t,i){if(e.getSource()instanceof De)return this._setupProxiedCoordsForImageSource(e,t,i);this._findCoveringTileCache[e.id]=this._findCoveringTileCache[e.id]||{};const o=this.proxiedCoords[e.id]=[],r=this.proxyCoords;for(let t=0;t<r.length;t++){const n=r[t],a=this._findTileCoveringTileID(n,e);if(a){const t=this._createProxiedId(n,a,i[n.key]&&i[n.key][e.id]);o.push(t),this.proxyToSource[n.key][e.id]=[t];}}let n=!1;for(let r=0;r<t.length;r++){const a=e.getTile(t[r]);if(!a||!a.hasData())continue;const s=this._findTileCoveringTileID(a.tileID,this.proxySourceCache);if(s&&s.tileID.canonical.z!==a.tileID.canonical.z){const t=this.proxyToSource[s.tileID.key][e.id],r=this._createProxiedId(s.tileID,a,i[s.tileID.key]&&i[s.tileID.key][e.id]);t?t.splice(t.length-1,0,r):this.proxyToSource[s.tileID.key][e.id]=[r],o.push(r),n=!0;}}this._sourceTilesOverlap[e.id]=n;}_setupProxiedCoordsForImageSource(t,i,o){if(!t.getSource().loaded())return;const r=this.proxiedCoords[t.id]=[],n=this.proxyCoords,a=t.getSource(),s=new e.pointGeometry(a.tileID.x,a.tileID.y)._div(1<<a.tileID.z),l=a.coordinates.map(e.MercatorCoordinate.fromLngLat).reduce(((e,t)=>(e.min.x=Math.min(e.min.x,t.x-s.x),e.min.y=Math.min(e.min.y,t.y-s.y),e.max.x=Math.max(e.max.x,t.x-s.x),e.max.y=Math.max(e.max.y,t.y-s.y),e)),{min:new e.pointGeometry(Number.MAX_VALUE,Number.MAX_VALUE),max:new e.pointGeometry(-Number.MAX_VALUE,-Number.MAX_VALUE)}),c=(t,i)=>{const o=t.wrap+t.canonical.x/(1<<t.canonical.z),r=t.canonical.y/(1<<t.canonical.z),n=e.EXTENT/(1<<t.canonical.z),a=i.wrap+i.canonical.x/(1<<i.canonical.z),s=i.canonical.y/(1<<i.canonical.z);return o+n<a+l.min.x||o>a+l.max.x||r+n<s+l.min.y||r>s+l.max.y};for(let e=0;e<n.length;e++){const a=n[e];for(let e=0;e<i.length;e++){const n=t.getTile(i[e]);if(!n||!n.hasData())continue;if(c(a,n.tileID))continue;const s=this._createProxiedId(a,n,o[a.key]&&o[a.key][t.id]),l=this.proxyToSource[a.key][t.id];l?l.push(s):this.proxyToSource[a.key][t.id]=[s],r.push(s);}}}_createProxiedId(t,i,o){let r=this.orthoMatrix;if(o){const e=o.find((e=>e.key===i.tileID.key));if(e)return e}if(i.tileID.key!==t.key){const o=t.canonical.z-i.tileID.canonical.z;let n,a,s;r=e.create();const l=i.tileID.wrap-t.wrap<<t.overscaledZ;o>0?(n=e.EXTENT>>o,a=n*((i.tileID.canonical.x<<o)-t.canonical.x+l),s=n*((i.tileID.canonical.y<<o)-t.canonical.y)):(n=e.EXTENT<<-o,a=e.EXTENT*(i.tileID.canonical.x-(t.canonical.x+l<<-o)),s=e.EXTENT*(i.tileID.canonical.y-(t.canonical.y<<-o))),e.ortho(r,0,n,0,n,0,1),e.translate(r,r,[a,s,0]);}return new Pi(i.tileID,t.key,r)}_findTileCoveringTileID(t,i){let o=i.getTile(t);if(o&&o.hasData())return o;const r=this._findCoveringTileCache[i.id],n=r[t.key];if(o=n?i.getTileByID(n):null,o&&o.hasData()||null===n)return o;let a=o?o.tileID:t,s=a.overscaledZ;const l=i.getSource().minzoom,c=[];if(!n){const r=i.getSource().maxzoom;if(t.canonical.z>=r){const o=t.canonical.z-r;i.getSource().reparseOverscaled?(s=Math.max(t.canonical.z+2,i.transform.tileZoom),a=new e.OverscaledTileID(s,t.wrap,r,t.canonical.x>>o,t.canonical.y>>o)):0!==o&&(s=r,a=new e.OverscaledTileID(s,t.wrap,r,t.canonical.x>>o,t.canonical.y>>o));}a.key!==t.key&&(c.push(a.key),o=i.getTile(a));}const h=e=>{c.forEach((t=>{r[t]=e;})),c.length=0;};for(s-=1;s>=l&&(!o||!o.hasData());s--){o&&h(o.tileID.key);const e=a.calculateScaledKey(s);if(o=i.getTileByID(e),o&&o.hasData())break;const t=r[e];if(null===t)break;void 0===t?c.push(e):o=i.getTileByID(t);}return h(o?o.tileID.key:null),o&&o.hasData()?o:null}findDEMTileFor(e){return this.enabled?this._findTileCoveringTileID(e,this.sourceCache):null}prepareDrawTile(){this.renderedToTile=!0;}_clearRenderCacheForTile(e,t){let i=this._tilesDirty[e];i||(i=this._tilesDirty[e]={}),i[t.key]=!0;}getWirefameBuffer(){if(!this.wireframeSegments){const t=function(t){let i=0;const o=new e.StructArrayLayout2ui4,r=131;for(let e=1;e<129;e++){for(let t=1;t<129;t++)i=e*r+t,o.emplaceBack(i,i+1),o.emplaceBack(i,i+r),o.emplaceBack(i+1,i+r),128===e&&o.emplaceBack(i+r,i+r+1);o.emplaceBack(i+1,i+1+r);}return o}();this.wireframeIndexBuffer=this.painter.context.createIndexBuffer(t),this.wireframeSegments=e.SegmentVector.simpleSegment(0,0,this.gridBuffer.length,t.length);}return [this.wireframeIndexBuffer,this.wireframeSegments]}}class Li{static cacheKey(e,t,i,o){let r=`${t}${o?o.cacheKey:\"\"}`;for(const t of i)e.usedDefines.includes(t)&&(r+=`/${t}`);return r}constructor(t,i,o,r,n,a){const s=t.gl;this.program=s.createProgram();const l=function(e){const t=[];for(let i=0;i<e.length;i++){if(null===e[i])continue;const o=e[i].split(\" \");t.push(o.pop());}return t}(o.staticAttributes),c=r?r.getBinderAttributes():[],h=l.concat(c);let u=r?r.defines():[];u=u.concat(a.map((e=>`#define ${e}`)));const _=u.concat(t.extStandardDerivatives?\"#extension GL_OES_standard_derivatives : enable\\n\".concat(ui):ui,ui,hi,ci.fragmentSource,si.fragmentSource,o.fragmentSource).join(\"\\n\"),d=u.concat(\"\\n#ifdef GL_ES\\nprecision highp float;\\n#else\\n\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n\\n#if !defined(highp)\\n#define highp\\n#endif\\n\\n#endif\",hi,ci.vertexSource,si.vertexSource,ai.vertexSource,o.vertexSource).join(\"\\n\"),p=s.createShader(s.FRAGMENT_SHADER);if(s.isContextLost())return void(this.failedToCreate=!0);s.shaderSource(p,_),s.compileShader(p),s.attachShader(this.program,p);const m=s.createShader(s.VERTEX_SHADER);if(s.isContextLost())this.failedToCreate=!0;else {s.shaderSource(m,d),s.compileShader(m),s.attachShader(this.program,m),this.attributes={},this.numAttributes=h.length;for(let e=0;e<this.numAttributes;e++)h[e]&&(s.bindAttribLocation(this.program,e,h[e]),this.attributes[h[e]]=e);s.linkProgram(this.program),s.deleteShader(m),s.deleteShader(p),this.fixedUniforms=n(t),this.binderUniforms=r?r.getUniforms(t):[],-1!==a.indexOf(\"TERRAIN\")&&(this.terrainUniforms=(t=>({u_dem:new e.Uniform1i(t),u_dem_prev:new e.Uniform1i(t),u_dem_unpack:new e.Uniform4f(t),u_dem_tl:new e.Uniform2f(t),u_dem_scale:new e.Uniform1f(t),u_dem_tl_prev:new e.Uniform2f(t),u_dem_scale_prev:new e.Uniform1f(t),u_dem_size:new e.Uniform1f(t),u_dem_lerp:new e.Uniform1f(t),u_exaggeration:new e.Uniform1f(t),u_depth:new e.Uniform1i(t),u_depth_size_inv:new e.Uniform2f(t),u_meter_to_dem:new e.Uniform1f(t),u_label_plane_matrix_inv:new e.UniformMatrix4f(t),u_tile_tl_up:new e.Uniform3f(t),u_tile_tr_up:new e.Uniform3f(t),u_tile_br_up:new e.Uniform3f(t),u_tile_bl_up:new e.Uniform3f(t),u_tile_up_scale:new e.Uniform1f(t)}))(t)),-1!==a.indexOf(\"FOG\")&&(this.fogUniforms=(t=>({u_fog_matrix:new e.UniformMatrix4f(t),u_fog_range:new e.Uniform2f(t),u_fog_color:new e.Uniform4f(t),u_fog_horizon_blend:new e.Uniform1f(t),u_fog_temporal_offset:new e.Uniform1f(t),u_frustum_tl:new e.Uniform3f(t),u_frustum_tr:new e.Uniform3f(t),u_frustum_br:new e.Uniform3f(t),u_frustum_bl:new e.Uniform3f(t),u_globe_pos:new e.Uniform3f(t),u_globe_radius:new e.Uniform1f(t),u_globe_transition:new e.Uniform1f(t),u_is_globe:new e.Uniform1i(t),u_viewport:new e.Uniform2f(t)}))(t));}}setTerrainUniformValues(e,t){if(!this.terrainUniforms)return;const i=this.terrainUniforms;if(!this.failedToCreate){e.program.set(this.program);for(const e in t)i[e].set(this.program,e,t[e]);}}setFogUniformValues(e,t){if(!this.fogUniforms)return;const i=this.fogUniforms;if(!this.failedToCreate){e.program.set(this.program);for(const e in t)i[e].set(this.program,e,t[e]);}}draw(e,t,i,o,r,n,a,s,l,c,h,u,_,d,p){const m=e.gl;if(this.failedToCreate)return;e.program.set(this.program),e.setDepthMode(i),e.setStencilMode(o),e.setColorMode(r),e.setCullFace(n);for(const e of Object.keys(this.fixedUniforms))this.fixedUniforms[e].set(this.program,e,a[e]);d&&d.setUniforms(this.program,e,this.binderUniforms,u,{zoom:_});const f={[m.LINES]:2,[m.TRIANGLES]:3,[m.LINE_STRIP]:1}[t];for(const i of h.get()){const o=i.vaos||(i.vaos={});(o[s]||(o[s]=new mi)).bind(e,this,l,d?d.getPaintVertexBuffers():[],c,i.vertexOffset,p||[]),m.drawElements(t,i.primitiveLength*f,m.UNSIGNED_SHORT,i.primitiveOffset*f*2);}}}function Ri(e,t,i){const o=1/L(i,1,t.transform.tileZoom),r=Math.pow(2,i.tileID.overscaledZ),n=i.tileSize*Math.pow(2,t.transform.tileZoom)/r,a=n*(i.tileID.canonical.x+i.tileID.wrap*r),s=n*i.tileID.canonical.y;return {u_image:0,u_texsize:i.imageAtlasTexture.size,u_scale:[o,e.fromScale,e.toScale],u_fade:e.t,u_pixel_coord_upper:[a>>16,s>>16],u_pixel_coord_lower:[65535&a,65535&s]}}const Oi=e.create(),Bi=(t,i,o,r,n,a,s,l,c,h,u)=>{const _=i.style.light,d=_.properties.get(\"position\"),p=[d.x,d.y,d.z],m=e.create$1();\"viewport\"===_.properties.get(\"anchor\")&&(e.fromRotation(m,-i.transform.angle),e.transformMat3(p,p,m));const f=_.properties.get(\"color\"),g=i.transform,v={u_matrix:t,u_lightpos:p,u_lightintensity:_.properties.get(\"intensity\"),u_lightcolor:[f.r,f.g,f.b],u_vertical_gradient:+o,u_opacity:r,u_tile_id:[0,0,0],u_zoom_transition:0,u_inv_rot_matrix:Oi,u_merc_center:[0,0],u_up_dir:[0,0,0],u_height_lift:0,u_ao:n,u_edge_radius:a};return \"globe\"===g.projection.name&&(v.u_tile_id=[s.canonical.x,s.canonical.y,1<<s.canonical.z],v.u_zoom_transition=c,v.u_inv_rot_matrix=u,v.u_merc_center=h,v.u_up_dir=g.projection.upVector(new e.CanonicalTileID(0,0,0),h[0]*e.EXTENT,h[1]*e.EXTENT),v.u_height_lift=l),v},ki=(t,i,o,r,n,a,s,l,c,h,u,_,d)=>{const p=Bi(t,i,o,r,n,a,s,h,u,_,d),m={u_height_factor:-Math.pow(2,s.overscaledZ)/c.tileSize/8};return e.extend(p,Ri(l,i,c),m)},Fi=e=>({u_matrix:e}),Ui=(t,i,o,r)=>e.extend(Fi(t),Ri(o,i,r)),Ni=(e,t)=>({u_matrix:e,u_world:t}),Gi=(t,i,o,r,n)=>e.extend(Ui(t,i,o,r),{u_world:n}),ji=e.create(),Zi=(t,i,o,r,n,a)=>{const s=t.transform,l=\"globe\"===s.projection.name;let c;if(\"map\"===a.paint.get(\"circle-pitch-alignment\"))if(l){const t=e.globePixelsToTileUnits(s.zoom,i.canonical)*s._pixelsPerMercatorPixel;c=Float32Array.from([t,0,0,t]);}else c=s.calculatePixelsToTileUnitsMatrix(o);else c=new Float32Array([s.pixelsToGLUnits[0],0,0,s.pixelsToGLUnits[1]]);const h={u_camera_to_center_distance:s.cameraToCenterDistance,u_matrix:t.translatePosMatrix(i.projMatrix,o,a.paint.get(\"circle-translate\"),a.paint.get(\"circle-translate-anchor\")),u_device_pixel_ratio:e.exported.devicePixelRatio,u_extrude_scale:c,u_inv_rot_matrix:ji,u_merc_center:[0,0],u_tile_id:[0,0,0],u_zoom_transition:0,u_up_dir:[0,0,0]};if(l){h.u_inv_rot_matrix=r,h.u_merc_center=n,h.u_tile_id=[i.canonical.x,i.canonical.y,1<<i.canonical.z],h.u_zoom_transition=e.globeToMercatorTransition(s.zoom);const t=n[0]*e.EXTENT,o=n[1]*e.EXTENT;h.u_up_dir=s.projection.upVector(new e.CanonicalTileID(0,0,0),t,o);}return h},Vi=e=>{const t=[];return \"map\"===e.paint.get(\"circle-pitch-alignment\")&&t.push(\"PITCH_WITH_MAP\"),\"map\"===e.paint.get(\"circle-pitch-scale\")&&t.push(\"SCALE_WITH_MAP\"),t},Wi=(t,i,o,r)=>{const n=e.EXTENT/o.tileSize;return {u_matrix:t,u_camera_to_center_distance:i.getCameraToCenterDistance(r),u_extrude_scale:[i.pixelsToGLUnits[0]/n,i.pixelsToGLUnits[1]/n]}},Xi=(e,t,i=1)=>({u_matrix:e,u_color:t,u_overlay:0,u_overlay_scale:i}),qi=e.create(),$i=(t,i,o,r,n,a,s)=>{const l=t.transform,c=\"globe\"===l.projection.name,h=c?e.globePixelsToTileUnits(l.zoom,i.canonical)*l._pixelsPerMercatorPixel:L(o,1,a),u={u_matrix:i.projMatrix,u_extrude_scale:h,u_intensity:s,u_inv_rot_matrix:qi,u_merc_center:[0,0],u_tile_id:[0,0,0],u_zoom_transition:0,u_up_dir:[0,0,0]};if(c){u.u_inv_rot_matrix=r,u.u_merc_center=n,u.u_tile_id=[i.canonical.x,i.canonical.y,1<<i.canonical.z],u.u_zoom_transition=e.globeToMercatorTransition(l.zoom);const t=n[0]*e.EXTENT,o=n[1]*e.EXTENT;u.u_up_dir=l.projection.upVector(new e.CanonicalTileID(0,0,0),t,o);}return u},Hi=(e,t,i,o,r,n,a,s)=>{const l=e.transform,c=l.calculatePixelsToTileUnitsMatrix(t),h={u_matrix:Ji(e,t,i,r),u_pixels_to_tile_units:c,u_device_pixel_ratio:a,u_units_to_pixels:[1/l.pixelsToGLUnits[0],1/l.pixelsToGLUnits[1]],u_dash_image:0,u_gradient_image:1,u_image_height:n,u_texsize:[0,0],u_scale:[0,0,0],u_mix:0,u_alpha_discard_threshold:0,u_trim_offset:s};if(Qi(i)){const i=Ki(t,e.transform);h.u_texsize=t.lineAtlasTexture.size,h.u_scale=[i,o.fromScale,o.toScale],h.u_mix=o.t;}return h},Yi=(e,t,i,o,r,n)=>{const a=e.transform,s=Ki(t,a);return {u_matrix:Ji(e,t,i,r),u_texsize:t.imageAtlasTexture.size,u_pixels_to_tile_units:a.calculatePixelsToTileUnitsMatrix(t),u_device_pixel_ratio:n,u_image:0,u_scale:[s,o.fromScale,o.toScale],u_fade:o.t,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]],u_alpha_discard_threshold:0}};function Ki(e,t){return 1/L(e,1,t.tileZoom)}function Ji(e,t,i,o){return e.translatePosMatrix(o||t.tileID.projMatrix,t,i.paint.get(\"line-translate\"),i.paint.get(\"line-translate-anchor\"))}function Qi(e){const t=e.paint.get(\"line-dasharray\").value;return t.value||\"constant\"!==t.kind}const eo=(e,t,i,o,r,n)=>{return {u_matrix:e,u_tl_parent:t,u_scale_parent:i,u_fade_t:o.mix,u_opacity:o.opacity*r.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:r.paint.get(\"raster-brightness-min\"),u_brightness_high:r.paint.get(\"raster-brightness-max\"),u_saturation_factor:(s=r.paint.get(\"raster-saturation\"),s>0?1-1/(1.001-s):-s),u_contrast_factor:(a=r.paint.get(\"raster-contrast\"),a>0?1/(1-a):1+a),u_spin_weights:to(r.paint.get(\"raster-hue-rotate\")),u_perspective_transform:n};var a,s;};function to(e){e*=Math.PI/180;const t=Math.sin(e),i=Math.cos(e);return [(2*i+1)/3,(-Math.sqrt(3)*t-i+1)/3,(Math.sqrt(3)*t-i+1)/3]}const io=e.create(),oo=(t,i,o,r,n,a,s,l,c,h,u,_,d,p,m,f)=>{const g=n.transform,v={u_is_size_zoom_constant:+(\"constant\"===t||\"source\"===t),u_is_size_feature_constant:+(\"constant\"===t||\"camera\"===t),u_size_t:i?i.uSizeT:0,u_size:i?i.uSize:0,u_camera_to_center_distance:g.cameraToCenterDistance,u_rotate_symbol:+o,u_aspect_ratio:g.width/g.height,u_fade_change:n.options.fadeDuration?n.symbolFadeChange:1,u_matrix:a,u_label_plane_matrix:s,u_coord_matrix:l,u_is_text:+c,u_pitch_with_map:+r,u_texsize:h,u_texture:0,u_tile_id:[0,0,0],u_zoom_transition:0,u_inv_rot_matrix:io,u_merc_center:[0,0],u_camera_forward:[0,0,0],u_ecef_origin:[0,0,0],u_tile_matrix:io,u_up_vector:[0,-1,0]};return \"globe\"===f.name&&(v.u_tile_id=[u.canonical.x,u.canonical.y,1<<u.canonical.z],v.u_zoom_transition=_,v.u_inv_rot_matrix=p,v.u_merc_center=d,v.u_camera_forward=g._camera.forward(),v.u_ecef_origin=e.globeECEFOrigin(g.globeMatrix,u.toUnwrapped()),v.u_tile_matrix=Float32Array.from(g.globeMatrix),v.u_up_vector=m),v},ro=(t,i,o,r,n,a,s,l,c,h,u,_,d,p,m,f,g)=>e.extend(oo(t,i,o,r,n,a,s,l,c,h,_,d,p,m,f,g),{u_gamma_scale:r?n.transform.cameraToCenterDistance*Math.cos(n.terrain?0:n.transform._pitch):1,u_device_pixel_ratio:e.exported.devicePixelRatio,u_is_halo:+u}),no=(t,i,o,r,n,a,s,l,c,h,u,_,d,p,m,f)=>e.extend(ro(t,i,o,r,n,a,s,l,!0,c,!0,u,_,d,p,m,f),{u_texsize_icon:h,u_texture_icon:1}),ao=(e,t,i)=>({u_matrix:e,u_opacity:t,u_color:i}),so=(t,i,o,r,n,a)=>e.extend(function(e,t,i,o){const r=i.imageManager.getPattern(e.from.toString()),n=i.imageManager.getPattern(e.to.toString()),{width:a,height:s}=i.imageManager.getPixelSize(),l=Math.pow(2,o.tileID.overscaledZ),c=o.tileSize*Math.pow(2,i.transform.tileZoom)/l,h=c*(o.tileID.canonical.x+o.tileID.wrap*l),u=c*o.tileID.canonical.y;return {u_image:0,u_pattern_tl_a:r.tl,u_pattern_br_a:r.br,u_pattern_tl_b:n.tl,u_pattern_br_b:n.br,u_texsize:[a,s],u_mix:t.t,u_pattern_size_a:r.displaySize,u_pattern_size_b:n.displaySize,u_scale_a:t.fromScale,u_scale_b:t.toScale,u_tile_units_to_pixels:1/L(o,1,i.transform.tileZoom),u_pixel_coord_upper:[h>>16,u>>16],u_pixel_coord_lower:[65535&h,65535&u]}}(r,a,o,n),{u_matrix:t,u_opacity:i}),lo={fillExtrusion:t=>({u_matrix:new e.UniformMatrix4f(t),u_lightpos:new e.Uniform3f(t),u_lightintensity:new e.Uniform1f(t),u_lightcolor:new e.Uniform3f(t),u_vertical_gradient:new e.Uniform1f(t),u_opacity:new e.Uniform1f(t),u_edge_radius:new e.Uniform1f(t),u_ao:new e.Uniform2f(t),u_tile_id:new e.Uniform3f(t),u_zoom_transition:new e.Uniform1f(t),u_inv_rot_matrix:new e.UniformMatrix4f(t),u_merc_center:new e.Uniform2f(t),u_up_dir:new e.Uniform3f(t),u_height_lift:new e.Uniform1f(t)}),fillExtrusionPattern:t=>({u_matrix:new e.UniformMatrix4f(t),u_lightpos:new e.Uniform3f(t),u_lightintensity:new e.Uniform1f(t),u_lightcolor:new e.Uniform3f(t),u_vertical_gradient:new e.Uniform1f(t),u_height_factor:new e.Uniform1f(t),u_edge_radius:new e.Uniform1f(t),u_ao:new e.Uniform2f(t),u_tile_id:new e.Uniform3f(t),u_zoom_transition:new e.Uniform1f(t),u_inv_rot_matrix:new e.UniformMatrix4f(t),u_merc_center:new e.Uniform2f(t),u_up_dir:new e.Uniform3f(t),u_height_lift:new e.Uniform1f(t),u_image:new e.Uniform1i(t),u_texsize:new e.Uniform2f(t),u_pixel_coord_upper:new e.Uniform2f(t),u_pixel_coord_lower:new e.Uniform2f(t),u_scale:new e.Uniform3f(t),u_fade:new e.Uniform1f(t),u_opacity:new e.Uniform1f(t)}),fill:t=>({u_matrix:new e.UniformMatrix4f(t)}),fillPattern:t=>({u_matrix:new e.UniformMatrix4f(t),u_image:new e.Uniform1i(t),u_texsize:new e.Uniform2f(t),u_pixel_coord_upper:new e.Uniform2f(t),u_pixel_coord_lower:new e.Uniform2f(t),u_scale:new e.Uniform3f(t),u_fade:new e.Uniform1f(t)}),fillOutline:t=>({u_matrix:new e.UniformMatrix4f(t),u_world:new e.Uniform2f(t)}),fillOutlinePattern:t=>({u_matrix:new e.UniformMatrix4f(t),u_world:new e.Uniform2f(t),u_image:new e.Uniform1i(t),u_texsize:new e.Uniform2f(t),u_pixel_coord_upper:new e.Uniform2f(t),u_pixel_coord_lower:new e.Uniform2f(t),u_scale:new e.Uniform3f(t),u_fade:new e.Uniform1f(t)}),circle:t=>({u_camera_to_center_distance:new e.Uniform1f(t),u_extrude_scale:new e.UniformMatrix2f(t),u_device_pixel_ratio:new e.Uniform1f(t),u_matrix:new e.UniformMatrix4f(t),u_inv_rot_matrix:new e.UniformMatrix4f(t),u_merc_center:new e.Uniform2f(t),u_tile_id:new e.Uniform3f(t),u_zoom_transition:new e.Uniform1f(t),u_up_dir:new e.Uniform3f(t)}),collisionBox:t=>({u_matrix:new e.UniformMatrix4f(t),u_camera_to_center_distance:new e.Uniform1f(t),u_extrude_scale:new e.Uniform2f(t)}),collisionCircle:t=>({u_matrix:new e.UniformMatrix4f(t),u_inv_matrix:new e.UniformMatrix4f(t),u_camera_to_center_distance:new e.Uniform1f(t),u_viewport_size:new e.Uniform2f(t)}),debug:t=>({u_color:new e.UniformColor(t),u_matrix:new e.UniformMatrix4f(t),u_overlay:new e.Uniform1i(t),u_overlay_scale:new e.Uniform1f(t)}),clippingMask:t=>({u_matrix:new e.UniformMatrix4f(t)}),heatmap:t=>({u_extrude_scale:new e.Uniform1f(t),u_intensity:new e.Uniform1f(t),u_matrix:new e.UniformMatrix4f(t),u_inv_rot_matrix:new e.UniformMatrix4f(t),u_merc_center:new e.Uniform2f(t),u_tile_id:new e.Uniform3f(t),u_zoom_transition:new e.Uniform1f(t),u_up_dir:new e.Uniform3f(t)}),heatmapTexture:t=>({u_image:new e.Uniform1i(t),u_color_ramp:new e.Uniform1i(t),u_opacity:new e.Uniform1f(t)}),hillshade:t=>({u_matrix:new e.UniformMatrix4f(t),u_image:new e.Uniform1i(t),u_latrange:new e.Uniform2f(t),u_light:new e.Uniform2f(t),u_shadow:new e.UniformColor(t),u_highlight:new e.UniformColor(t),u_accent:new e.UniformColor(t)}),hillshadePrepare:t=>({u_matrix:new e.UniformMatrix4f(t),u_image:new e.Uniform1i(t),u_dimension:new e.Uniform2f(t),u_zoom:new e.Uniform1f(t),u_unpack:new e.Uniform4f(t)}),line:t=>({u_matrix:new e.UniformMatrix4f(t),u_pixels_to_tile_units:new e.UniformMatrix2f(t),u_device_pixel_ratio:new e.Uniform1f(t),u_units_to_pixels:new e.Uniform2f(t),u_dash_image:new e.Uniform1i(t),u_gradient_image:new e.Uniform1i(t),u_image_height:new e.Uniform1f(t),u_texsize:new e.Uniform2f(t),u_scale:new e.Uniform3f(t),u_mix:new e.Uniform1f(t),u_alpha_discard_threshold:new e.Uniform1f(t),u_trim_offset:new e.Uniform2f(t)}),linePattern:t=>({u_matrix:new e.UniformMatrix4f(t),u_texsize:new e.Uniform2f(t),u_pixels_to_tile_units:new e.UniformMatrix2f(t),u_device_pixel_ratio:new e.Uniform1f(t),u_image:new e.Uniform1i(t),u_units_to_pixels:new e.Uniform2f(t),u_scale:new e.Uniform3f(t),u_fade:new e.Uniform1f(t),u_alpha_discard_threshold:new e.Uniform1f(t)}),raster:t=>({u_matrix:new e.UniformMatrix4f(t),u_tl_parent:new e.Uniform2f(t),u_scale_parent:new e.Uniform1f(t),u_fade_t:new e.Uniform1f(t),u_opacity:new e.Uniform1f(t),u_image0:new e.Uniform1i(t),u_image1:new e.Uniform1i(t),u_brightness_low:new e.Uniform1f(t),u_brightness_high:new e.Uniform1f(t),u_saturation_factor:new e.Uniform1f(t),u_contrast_factor:new e.Uniform1f(t),u_spin_weights:new e.Uniform3f(t),u_perspective_transform:new e.Uniform2f(t)}),symbolIcon:t=>({u_is_size_zoom_constant:new e.Uniform1i(t),u_is_size_feature_constant:new e.Uniform1i(t),u_size_t:new e.Uniform1f(t),u_size:new e.Uniform1f(t),u_camera_to_center_distance:new e.Uniform1f(t),u_rotate_symbol:new e.Uniform1i(t),u_aspect_ratio:new e.Uniform1f(t),u_fade_change:new e.Uniform1f(t),u_matrix:new e.UniformMatrix4f(t),u_label_plane_matrix:new e.UniformMatrix4f(t),u_coord_matrix:new e.UniformMatrix4f(t),u_is_text:new e.Uniform1i(t),u_pitch_with_map:new e.Uniform1i(t),u_texsize:new e.Uniform2f(t),u_tile_id:new e.Uniform3f(t),u_zoom_transition:new e.Uniform1f(t),u_inv_rot_matrix:new e.UniformMatrix4f(t),u_merc_center:new e.Uniform2f(t),u_camera_forward:new e.Uniform3f(t),u_tile_matrix:new e.UniformMatrix4f(t),u_up_vector:new e.Uniform3f(t),u_ecef_origin:new e.Uniform3f(t),u_texture:new e.Uniform1i(t)}),symbolSDF:t=>({u_is_size_zoom_constant:new e.Uniform1i(t),u_is_size_feature_constant:new e.Uniform1i(t),u_size_t:new e.Uniform1f(t),u_size:new e.Uniform1f(t),u_camera_to_center_distance:new e.Uniform1f(t),u_rotate_symbol:new e.Uniform1i(t),u_aspect_ratio:new e.Uniform1f(t),u_fade_change:new e.Uniform1f(t),u_matrix:new e.UniformMatrix4f(t),u_label_plane_matrix:new e.UniformMatrix4f(t),u_coord_matrix:new e.UniformMatrix4f(t),u_is_text:new e.Uniform1i(t),u_pitch_with_map:new e.Uniform1i(t),u_texsize:new e.Uniform2f(t),u_texture:new e.Uniform1i(t),u_gamma_scale:new e.Uniform1f(t),u_device_pixel_ratio:new e.Uniform1f(t),u_tile_id:new e.Uniform3f(t),u_zoom_transition:new e.Uniform1f(t),u_inv_rot_matrix:new e.UniformMatrix4f(t),u_merc_center:new e.Uniform2f(t),u_camera_forward:new e.Uniform3f(t),u_tile_matrix:new e.UniformMatrix4f(t),u_up_vector:new e.Uniform3f(t),u_ecef_origin:new e.Uniform3f(t),u_is_halo:new e.Uniform1i(t)}),symbolTextAndIcon:t=>({u_is_size_zoom_constant:new e.Uniform1i(t),u_is_size_feature_constant:new e.Uniform1i(t),u_size_t:new e.Uniform1f(t),u_size:new e.Uniform1f(t),u_camera_to_center_distance:new e.Uniform1f(t),u_rotate_symbol:new e.Uniform1i(t),u_aspect_ratio:new e.Uniform1f(t),u_fade_change:new e.Uniform1f(t),u_matrix:new e.UniformMatrix4f(t),u_label_plane_matrix:new e.UniformMatrix4f(t),u_coord_matrix:new e.UniformMatrix4f(t),u_is_text:new e.Uniform1i(t),u_pitch_with_map:new e.Uniform1i(t),u_texsize:new e.Uniform2f(t),u_texsize_icon:new e.Uniform2f(t),u_texture:new e.Uniform1i(t),u_texture_icon:new e.Uniform1i(t),u_gamma_scale:new e.Uniform1f(t),u_device_pixel_ratio:new e.Uniform1f(t),u_is_halo:new e.Uniform1i(t)}),background:t=>({u_matrix:new e.UniformMatrix4f(t),u_opacity:new e.Uniform1f(t),u_color:new e.UniformColor(t)}),backgroundPattern:t=>({u_matrix:new e.UniformMatrix4f(t),u_opacity:new e.Uniform1f(t),u_image:new e.Uniform1i(t),u_pattern_tl_a:new e.Uniform2f(t),u_pattern_br_a:new e.Uniform2f(t),u_pattern_tl_b:new e.Uniform2f(t),u_pattern_br_b:new e.Uniform2f(t),u_texsize:new e.Uniform2f(t),u_mix:new e.Uniform1f(t),u_pattern_size_a:new e.Uniform2f(t),u_pattern_size_b:new e.Uniform2f(t),u_scale_a:new e.Uniform1f(t),u_scale_b:new e.Uniform1f(t),u_pixel_coord_upper:new e.Uniform2f(t),u_pixel_coord_lower:new e.Uniform2f(t),u_tile_units_to_pixels:new e.Uniform1f(t)}),terrainRaster:yi,terrainDepth:yi,skybox:t=>({u_matrix:new e.UniformMatrix4f(t),u_sun_direction:new e.Uniform3f(t),u_cubemap:new e.Uniform1i(t),u_opacity:new e.Uniform1f(t),u_temporal_offset:new e.Uniform1f(t)}),skyboxGradient:t=>({u_matrix:new e.UniformMatrix4f(t),u_color_ramp:new e.Uniform1i(t),u_center_direction:new e.Uniform3f(t),u_radius:new e.Uniform1f(t),u_opacity:new e.Uniform1f(t),u_temporal_offset:new e.Uniform1f(t)}),skyboxCapture:t=>({u_matrix_3f:new e.UniformMatrix3f(t),u_sun_direction:new e.Uniform3f(t),u_sun_intensity:new e.Uniform1f(t),u_color_tint_r:new e.Uniform4f(t),u_color_tint_m:new e.Uniform4f(t),u_luminance:new e.Uniform1f(t)}),globeRaster:t=>({u_proj_matrix:new e.UniformMatrix4f(t),u_globe_matrix:new e.UniformMatrix4f(t),u_normalize_matrix:new e.UniformMatrix4f(t),u_merc_matrix:new e.UniformMatrix4f(t),u_zoom_transition:new e.Uniform1f(t),u_merc_center:new e.Uniform2f(t),u_image0:new e.Uniform1i(t),u_grid_matrix:new e.UniformMatrix3f(t),u_frustum_tl:new e.Uniform3f(t),u_frustum_tr:new e.Uniform3f(t),u_frustum_br:new e.Uniform3f(t),u_frustum_bl:new e.Uniform3f(t),u_globe_pos:new e.Uniform3f(t),u_globe_radius:new e.Uniform1f(t),u_viewport:new e.Uniform2f(t)}),globeAtmosphere:t=>({u_frustum_tl:new e.Uniform3f(t),u_frustum_tr:new e.Uniform3f(t),u_frustum_br:new e.Uniform3f(t),u_frustum_bl:new e.Uniform3f(t),u_horizon:new e.Uniform1f(t),u_transition:new e.Uniform1f(t),u_fadeout_range:new e.Uniform1f(t),u_color:new e.Uniform4f(t),u_high_color:new e.Uniform4f(t),u_space_color:new e.Uniform4f(t),u_star_intensity:new e.Uniform1f(t),u_star_density:new e.Uniform1f(t),u_star_size:new e.Uniform1f(t),u_temporal_offset:new e.Uniform1f(t),u_horizon_angle:new e.Uniform1f(t),u_rotation_matrix:new e.UniformMatrix4f(t)})};let co;function ho(t,i,o,r,n,a,s){const l=t.context,c=l.gl,h=t.transform,u=t.useProgram(\"collisionBox\"),_=[];let d=0,p=0;for(let m=0;m<r.length;m++){const f=r[m],g=i.getTile(f),v=g.getBucket(o);if(!v)continue;const x=bt(f,v,h);let y=x;0===n[0]&&0===n[1]||(y=t.translatePosMatrix(x,g,n,a));const b=s?v.textCollisionBox:v.iconCollisionBox,w=v.collisionCircleArray;if(w.length>0){const t=e.create(),i=y;e.mul(t,v.placementInvProjMatrix,h.glCoordMatrix),e.mul(t,t,v.placementViewportMatrix),_.push({circleArray:w,circleOffset:p,transform:i,invTransform:t,projection:v.getProjection()}),d+=w.length/4,p=d;}b&&(t.terrain&&t.terrain.setupElevationDraw(g,u),u.draw(l,c.LINES,e.DepthMode.disabled,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.disabled,Wi(y,h,g,v.getProjection()),o.id,b.layoutVertexBuffer,b.indexBuffer,b.segments,null,h.zoom,null,[b.collisionVertexBuffer,b.collisionVertexBufferExt]));}if(!s||!_.length)return;const m=t.useProgram(\"collisionCircle\"),f=new e.StructArrayLayout2f1f2i16;f.resize(4*d),f._trim();let g=0;for(const e of _)for(let t=0;t<e.circleArray.length/4;t++){const i=4*t,o=e.circleArray[i+0],r=e.circleArray[i+1],n=e.circleArray[i+2],a=e.circleArray[i+3];f.emplace(g++,o,r,n,a,0),f.emplace(g++,o,r,n,a,1),f.emplace(g++,o,r,n,a,2),f.emplace(g++,o,r,n,a,3);}(!co||co.length<2*d)&&(co=function(t){const i=2*t,o=new e.StructArrayLayout3ui6;o.resize(i),o._trim();for(let e=0;e<i;e++){const t=6*e;o.uint16[t+0]=4*e+0,o.uint16[t+1]=4*e+1,o.uint16[t+2]=4*e+2,o.uint16[t+3]=4*e+2,o.uint16[t+4]=4*e+3,o.uint16[t+5]=4*e+0;}return o}(d));const v=l.createIndexBuffer(co,!0),x=l.createVertexBuffer(f,e.collisionCircleLayout.members,!0);for(const i of _){const r={u_matrix:i.transform,u_inv_matrix:i.invTransform,u_camera_to_center_distance:(y=h).getCameraToCenterDistance(i.projection),u_viewport_size:[y.width,y.height]};m.draw(l,c.TRIANGLES,e.DepthMode.disabled,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.disabled,r,o.id,x,v,e.SegmentVector.simpleSegment(0,2*i.circleOffset,i.circleArray.length,i.circleArray.length/2),null,h.zoom);}var y;x.destroy(),v.destroy();}const uo=e.create();function _o(t,i,o,r,n,a){const{horizontalAlign:s,verticalAlign:l}=e.getAnchorAlignment(t),c=-(s-.5)*i,h=-(l-.5)*o,u=e.evaluateVariableOffset(t,r);return new e.pointGeometry((c/n+u[0])*a,(h/n+u[1])*a)}function po(t,i,o,r,n,a,s,l,c,h,u){const _=t.text.placedSymbolArray,d=t.text.dynamicLayoutVertexArray,p=t.icon.dynamicLayoutVertexArray,m={},f=wt(l,t.getProjection(),a),g=a.elevation,v=t.getProjection().upVectorScale(l.canonical,a.center.lat,a.worldSize);d.clear();for(let p=0;p<_.length;p++){const x=_.get(p),y=t.allowVerticalPlacement&&!x.placedOrientation,b=x.hidden||!x.crossTileID||y?null:r[x.crossTileID];if(b){const r=new e.pointGeometry(x.tileAnchorX,x.tileAnchorY),_=t.getProjection().upVector(l.canonical,r.x,r.y),p=g?g.getAtTileOffset(l,r.x,r.y):0,y=nt([x.projectedAnchorX+p*_[0]*v.metersToTile,x.projectedAnchorY+p*_[1]*v.metersToTile,x.projectedAnchorZ+p*_[2]*v.metersToTile],o?f:s),w=at(a.getCameraToCenterDistance(t.getProjection()),y.signedDistanceFromCamera);let T=n.evaluateSizeForFeature(t.textSizeData,h,x)*w/e.ONE_EM;o&&(T*=t.tilePixelRatio/c);const{width:E,height:C,anchor:I,textOffset:M,textScale:S}=b,z=_o(I,E,C,M,S,T);let D;if(o){const e=r.add(z),{x:i,y:o,z:n}=t.getProjection().projectTilePoint(e.x,e.y,l.canonical);D=nt([i+p*_[0]*v.metersToTile,o+p*_[1]*v.metersToTile,n+p*_[2]*v.metersToTile],s).point;}else {const e=i?z.rotate(-a.angle):z;D=[y.point[0]+e.x,y.point[1]+e.y,0];}const P=t.allowVerticalPlacement&&x.placedOrientation===e.WritingMode.vertical?Math.PI/2:0;for(let t=0;t<x.numGlyphs;t++)e.addDynamicAttributes(d,D[0],D[1],D[2],P);u&&x.associatedIconIndex>=0&&(m[x.associatedIconIndex]={shiftedAnchor:D,angle:P});}else ft(x.numGlyphs,d);}if(u){p.clear();const i=t.icon.placedSymbolArray;for(let t=0;t<i.length;t++){const o=i.get(t);if(o.hidden)ft(o.numGlyphs,p);else {const i=m[t];if(i)for(let t=0;t<o.numGlyphs;t++)e.addDynamicAttributes(p,i.shiftedAnchor[0],i.shiftedAnchor[1],i.shiftedAnchor[2],i.angle);else ft(o.numGlyphs,p);}}t.icon.dynamicLayoutVertexBuffer.updateData(p);}t.text.dynamicLayoutVertexBuffer.updateData(d);}function mo(e,t,i){return i.iconsInText&&t?\"symbolTextAndIcon\":e?\"symbolSDF\":\"symbolIcon\"}function fo(t,i,o,r,n,a,s,l,c,h,u,_){const d=t.context,p=d.gl,m=t.transform,f=\"map\"===l,g=\"map\"===c,v=f&&\"point\"!==o.layout.get(\"symbol-placement\"),x=f&&!g&&!v,y=void 0!==o.layout.get(\"symbol-sort-key\").constantOr(1);let b=!1;const w=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),T=[e.mercatorXfromLng(m.center.lng),e.mercatorYfromLat(m.center.lat)],E=o.layout.get(\"text-variable-anchor\"),C=\"globe\"===m.projection.name,I=[],M=[0,-1,0];let S=M;!C&&!m.mercatorFromTransition||f||(S=function(t){const i=t._camera.getWorldToCamera(t.worldSize,1),o=e.multiply([],i,t.globeMatrix);e.invert(o,o);const r=[0,0,0],n=[0,1,0,0];return e.transformMat4$1(n,n,o),r[0]=n[0],r[1]=n[1],r[2]=n[2],e.normalize(r,r),r}(m));for(const l of r){const r=i.getTile(l),c=r.getBucket(o);if(!c)continue;if(\"mercator\"===c.projection.name&&C)continue;const u=n?c.text:c.icon;if(!u||c.fullyClipped||!u.segments.get().length)continue;const _=u.programConfigurations.get(o.id),d=n||c.sdfIcons,w=n?c.textSizeData:c.iconSizeData,z=g||0!==m.pitch,D=e.evaluateSizeForZoom(w,m.zoom);let P,A,L,R,O=[0,0],B=null;if(n){if(A=r.glyphAtlasTexture,L=p.LINEAR,P=r.glyphAtlasTexture.size,c.iconsInText){O=r.imageAtlasTexture.size,B=r.imageAtlasTexture;const e=\"composite\"===w.kind||\"camera\"===w.kind;R=z||t.options.rotating||t.options.zooming||e?p.LINEAR:p.NEAREST;}}else {const e=1!==o.layout.get(\"icon-size\").constantOr(0)||c.iconsNeedLinear;A=r.imageAtlasTexture,L=d||t.options.rotating||t.options.zooming||e||z?p.LINEAR:p.NEAREST,P=r.imageAtlasTexture.size;}const k=\"globe\"===c.projection.name,F=k?S:M,U=k?e.globeToMercatorTransition(m.zoom):0,N=wt(l,c.getProjection(),m),G=m.calculatePixelsToTileUnitsMatrix(r),j=tt(N,r.tileID.canonical,g,f,m,c.getProjection(),G),Z=t.terrain&&g&&v?e.invert(e.create(),j):uo,V=ot(N,r.tileID.canonical,g,f,m,c.getProjection(),G),W=E&&c.hasTextData(),X=\"none\"!==o.layout.get(\"icon-text-fit\")&&W&&c.hasIconData();if(v){const e=m.elevation,i=e?e.getAtTileOffsetFunc(l,m.center.lat,m.worldSize,c.getProjection()):e=>[0,0,0],o=it(N,r.tileID.canonical,g,f,m,c.getProjection(),G);lt(c,N,t,n,o,V,g,h,i,l);}const q=v||n&&E||X,$=t.translatePosMatrix(N,r,a,s),H=q?uo:j,Y=t.translatePosMatrix(V,r,a,s,!0),K=c.getProjection().createInversionMatrix(m,l.canonical),J=[];t.terrain&&g&&J.push(\"PITCH_WITH_MAP_TERRAIN\"),k&&J.push(\"PROJECTION_GLOBE_VIEW\"),q&&J.push(\"PROJECTED_POS_ON_VIEWPORT\");const Q=d&&0!==o.paint.get(n?\"text-halo-width\":\"icon-halo-width\").constantOr(1);let ee;ee=d?c.iconsInText?no(w.kind,D,x,g,t,$,H,Y,P,O,l,U,T,K,F,c.getProjection()):ro(w.kind,D,x,g,t,$,H,Y,n,P,!0,l,U,T,K,F,c.getProjection()):oo(w.kind,D,x,g,t,$,H,Y,n,P,l,U,T,K,F,c.getProjection());const te={program:t.useProgram(mo(d,n,c),_,J),buffers:u,uniformValues:ee,atlasTexture:A,atlasTextureIcon:B,atlasInterpolation:L,atlasInterpolationIcon:R,isSDF:d,hasHalo:Q,tile:r,labelPlaneMatrixInv:Z};if(y&&c.canOverlap){b=!0;const t=u.segments.get();for(const i of t)I.push({segments:new e.SegmentVector([i]),sortKey:i.sortKey,state:te});}else I.push({segments:u.segments,sortKey:0,state:te});}b&&I.sort(((e,t)=>e.sortKey-t.sortKey));for(const e of I){const i=e.state;if(t.terrain&&t.terrain.setupElevationDraw(i.tile,i.program,{useDepthForOcclusion:!C,labelPlaneMatrixInv:i.labelPlaneMatrixInv}),d.activeTexture.set(p.TEXTURE0),i.atlasTexture.bind(i.atlasInterpolation,p.CLAMP_TO_EDGE),i.atlasTextureIcon&&(d.activeTexture.set(p.TEXTURE1),i.atlasTextureIcon&&i.atlasTextureIcon.bind(i.atlasInterpolationIcon,p.CLAMP_TO_EDGE)),i.isSDF){const r=i.uniformValues;i.hasHalo&&(r.u_is_halo=1,go(i.buffers,e.segments,o,t,i.program,w,u,_,r)),r.u_is_halo=0;}go(i.buffers,e.segments,o,t,i.program,w,u,_,i.uniformValues);}}function go(t,i,o,r,n,a,s,l,c){const h=r.context,u=[t.dynamicLayoutVertexBuffer,t.opacityVertexBuffer,t.globeExtVertexBuffer];n.draw(h,h.gl.TRIANGLES,a,s,l,e.CullFaceMode.disabled,c,o.id,t.layoutVertexBuffer,t.indexBuffer,i,o.paint,r.transform.zoom,t.programConfigurations.get(o.id),u);}function vo(t,i,o,r,n,a,s){const l=t.context.gl,c=o.paint.get(\"fill-pattern\"),h=c&&c.constantOr(1),u=o.getCrossfadeParameters();let _,d,p,m,f;s?(d=h&&!o.getPaintProperty(\"fill-outline-color\")?\"fillOutlinePattern\":\"fillOutline\",_=l.LINES):(d=h?\"fillPattern\":\"fill\",_=l.TRIANGLES);for(const g of r){const r=i.getTile(g);if(h&&!r.patternsLoaded())continue;const v=r.getBucket(o);if(!v)continue;t.prepareDrawTile();const x=v.programConfigurations.get(o.id),y=t.useProgram(d,x);h&&(t.context.activeTexture.set(l.TEXTURE0),r.imageAtlasTexture.bind(l.LINEAR,l.CLAMP_TO_EDGE),x.updatePaintBuffers(u));const b=c.constantOr(null);if(b&&r.imageAtlas){const e=r.imageAtlas,t=e.patternPositions[b.to.toString()],i=e.patternPositions[b.from.toString()];t&&i&&x.setConstantPatternPositions(t,i);}const w=t.translatePosMatrix(g.projMatrix,r,o.paint.get(\"fill-translate\"),o.paint.get(\"fill-translate-anchor\"));if(s){m=v.indexBuffer2,f=v.segments2;const e=t.terrain&&t.terrain.renderingToTexture?t.terrain.drapeBufferSize:[l.drawingBufferWidth,l.drawingBufferHeight];p=\"fillOutlinePattern\"===d&&h?Gi(w,t,u,r,e):Ni(w,e);}else m=v.indexBuffer,f=v.segments,p=h?Ui(w,t,u,r):Fi(w);t.prepareDrawProgram(t.context,y,g.toUnwrapped()),y.draw(t.context,_,n,t.stencilModeForClipping(g),a,e.CullFaceMode.disabled,p,o.id,v.layoutVertexBuffer,m,f,o.paint,t.transform.zoom,x);}}function xo(t,i,o,r,n,a,s){const l=t.context,c=l.gl,h=t.transform,u=o.paint.get(\"fill-extrusion-pattern\"),_=u.constantOr(1),d=o.getCrossfadeParameters(),p=o.paint.get(\"fill-extrusion-opacity\"),m=[o.paint.get(\"fill-extrusion-ambient-occlusion-intensity\"),o.paint.get(\"fill-extrusion-ambient-occlusion-radius\")],f=o.layout.get(\"fill-extrusion-edge-radius\"),g=\"globe\"===h.projection.name?e.fillExtrusionHeightLift():0,v=\"globe\"===h.projection.name,x=v?e.globeToMercatorTransition(h.zoom):0,y=[e.mercatorXfromLng(h.center.lng),e.mercatorYfromLat(h.center.lat)],b=[];v&&(b.push(\"PROJECTION_GLOBE_VIEW\"),t.style.terrainSetForDrapingOnly()&&b.push(\"TERRAIN\")),m[0]>0&&b.push(\"FAUX_AO\");for(const w of r){const r=i.getTile(w),T=r.getBucket(o);if(!T||T.projection.name!==h.projection.name)continue;const E=T.programConfigurations.get(o.id),C=t.useProgram(_?\"fillExtrusionPattern\":\"fillExtrusion\",E,b);if(t.terrain){const e=t.terrain;if(t.style.terrainSetForDrapingOnly())e.setupElevationDraw(r,C,{useMeterToDem:!0});else {if(!T.enableTerrain)continue;if(e.setupElevationDraw(r,C,{useMeterToDem:!0}),yo(l,i,w,T,o,e),!T.centroidVertexBuffer){const e=C.attributes.a_centroid_pos;void 0!==e&&c.vertexAttrib2f(e,0,0);}}}_&&(t.context.activeTexture.set(c.TEXTURE0),r.imageAtlasTexture.bind(c.LINEAR,c.CLAMP_TO_EDGE),E.updatePaintBuffers(d));const I=u.constantOr(null);if(I&&r.imageAtlas){const e=r.imageAtlas,t=e.patternPositions[I.to.toString()],i=e.patternPositions[I.from.toString()];t&&i&&E.setConstantPatternPositions(t,i);}const M=t.translatePosMatrix(w.projMatrix,r,o.paint.get(\"fill-extrusion-translate\"),o.paint.get(\"fill-extrusion-translate-anchor\")),S=h.projection.createInversionMatrix(h,w.canonical),z=o.paint.get(\"fill-extrusion-vertical-gradient\"),D=_?ki(M,t,z,p,m,f,w,d,r,g,x,y,S):Bi(M,t,z,p,m,f,w,g,x,y,S);t.prepareDrawProgram(l,C,w.toUnwrapped());const P=[];t.terrain&&P.push(T.centroidVertexBuffer),v&&P.push(T.layoutVertexExtBuffer),C.draw(l,l.gl.TRIANGLES,n,a,s,e.CullFaceMode.backCCW,D,o.id,T.layoutVertexBuffer,T.indexBuffer,T.segments,o.paint,t.transform.zoom,E,P);}}function yo(t,i,o,r,n,a){const s=[t=>{let i=t.canonical.x-1,o=t.wrap;return i<0&&(i=(1<<t.canonical.z)-1,o--),new e.OverscaledTileID(t.overscaledZ,o,t.canonical.z,i,t.canonical.y)},t=>{let i=t.canonical.x+1,o=t.wrap;return i===1<<t.canonical.z&&(i=0,o++),new e.OverscaledTileID(t.overscaledZ,o,t.canonical.z,i,t.canonical.y)},t=>new e.OverscaledTileID(t.overscaledZ,t.wrap,t.canonical.z,t.canonical.x,(0===t.canonical.y?1<<t.canonical.z:t.canonical.y)-1),t=>new e.OverscaledTileID(t.overscaledZ,t.wrap,t.canonical.z,t.canonical.x,t.canonical.y===(1<<t.canonical.z)-1?0:t.canonical.y+1)],l=e=>{const t=i.getSource().minzoom,o=e=>{const t=i.getTileByID(e);if(t&&t.hasData())return t.getBucket(n)},r=[0,-1,1];for(const i of r){if(e.overscaledZ+i<t)continue;const r=o(e.calculateScaledKey(e.overscaledZ+i));if(r)return r}},c=[0,0,0],h=(t,i)=>(c[0]=Math.min(t.min.y,i.min.y),c[1]=Math.max(t.max.y,i.max.y),c[2]=e.EXTENT-i.min.x>t.max.x?i.min.x-e.EXTENT:t.max.x,c),u=(t,i)=>(c[0]=Math.min(t.min.x,i.min.x),c[1]=Math.max(t.max.x,i.max.x),c[2]=e.EXTENT-i.min.y>t.max.y?i.min.y-e.EXTENT:t.max.y,c),_=[(e,t)=>h(e,t),(e,t)=>h(t,e),(e,t)=>u(e,t),(e,t)=>u(t,e)],d=new e.pointGeometry(0,0);let p,m,f;const g=(t,i,r,n,s)=>{const l=[[n?r:t,n?t:r,0],[n?r:i,n?i:r,0]],c=s<0?e.EXTENT+s:s,h=[n?c:(t+i)/2,n?(t+i)/2:c,0];return 0===r&&s<0||0!==r&&s>0?a.getForTilePoints(f,[h],!0,m):l.push(h),a.getForTilePoints(o,l,!0,p),Math.max(l[0][2],l[1][2],h[2])/a.exaggeration()};for(let t=0;t<4;t++){const i=(t<2?1:5)-t,n=r.borders[t];if(0===n.length)continue;const c=f=s[t](o),h=l(c);if(!(h&&h instanceof e.FillExtrusionBucket&&h.enableTerrain))continue;if(r.borderDoneWithNeighborZ[t]===h.canonical.z&&h.borderDoneWithNeighborZ[i]===r.canonical.z)continue;if(m=a.findDEMTileFor(c),!m||!m.dem)continue;if(!p){const e=a.findDEMTileFor(o);if(!e||!e.dem)return;p=e;}const u=h.borders[i];let v=0;const x=h.borderDoneWithNeighborZ[i]!==r.canonical.z;if(r.canonical.z===h.canonical.z){for(let o=0;o<n.length;o++){const a=r.featuresOnBorder[n[o]],s=a.borders[t];let l;for(;v<u.length&&(l=h.featuresOnBorder[u[v]],!(l.borders[i][1]>s[0]+3));)x&&h.encodeCentroid(void 0,l,!1),v++;if(l&&v<u.length){const o=v;let n=0;for(;!(l.borders[i][0]>s[1]-3)&&(n++,++v!==u.length);)l=h.featuresOnBorder[u[v]];if(l=h.featuresOnBorder[u[o]],a.intersectsCount()>1||l.intersectsCount()>1||1!==n){1!==n&&(v=o),r.encodeCentroid(void 0,a,!1),x&&h.encodeCentroid(void 0,l,!1);continue}const c=_[t](a,l),p=t%2?e.EXTENT-1:0;d.x=g(c[0],Math.min(e.EXTENT-1,c[1]),p,t<2,c[2]),d.y=0,r.encodeCentroid(d,a,!1),x&&h.encodeCentroid(d,l,!1);}else r.encodeCentroid(void 0,a,!1);}r.borderDoneWithNeighborZ[t]=h.canonical.z,r.needsCentroidUpdate=!0,x&&(h.borderDoneWithNeighborZ[i]=r.canonical.z,h.needsCentroidUpdate=!0);}else {for(const e of n)r.encodeCentroid(void 0,r.featuresOnBorder[e],!1);if(x){for(const e of u)h.encodeCentroid(void 0,h.featuresOnBorder[e],!1);h.borderDoneWithNeighborZ[i]=r.canonical.z,h.needsCentroidUpdate=!0;}r.borderDoneWithNeighborZ[t]=h.canonical.z,r.needsCentroidUpdate=!0;}}(r.needsCentroidUpdate||!r.centroidVertexBuffer&&0!==r.centroidVertexArray.length)&&r.uploadCentroid(t);}const bo=new e.Color(1,0,0,1),wo=new e.Color(0,1,0,1),To=new e.Color(0,0,1,1),Eo=new e.Color(1,0,1,1),Co=new e.Color(0,1,1,1);function Io(t,i,o){const r=t.context,n=t.transform,a=r.gl,s=\"globe\"===n.projection.name,l=s?[\"PROJECTION_GLOBE_VIEW\"]:null;let c=o.projMatrix;if(s&&e.globeToMercatorTransition(n.zoom)>0){const t=e.transitionTileAABBinECEF(o.canonical,n),i=e.globeDenormalizeECEF(t);c=e.multiply(new Float32Array(16),n.globeMatrix,i),e.multiply(c,n.projMatrix,c);}const h=t.useProgram(\"debug\",null,l),u=i.getTileByID(o.key);t.terrain&&t.terrain.setupElevationDraw(u,h);const _=e.DepthMode.disabled,d=e.StencilMode.disabled,p=t.colorModeForRenderPass(),m=\"$debug\";r.activeTexture.set(a.TEXTURE0),t.emptyTexture.bind(a.LINEAR,a.CLAMP_TO_EDGE),s?u._makeGlobeTileDebugBuffers(t.context,n):u._makeDebugTileBoundsBuffers(t.context,n.projection);const f=u._tileDebugBuffer||t.debugBuffer,g=u._tileDebugIndexBuffer||t.debugIndexBuffer,v=u._tileDebugSegments||t.debugSegments;h.draw(r,a.LINE_STRIP,_,d,p,e.CullFaceMode.disabled,Xi(c,e.Color.red),m,f,g,v,null,null,null,[u._globeTileDebugBorderBuffer]);const x=u.latestRawTileData,y=Math.floor((x&&x.byteLength||0)/1024),b=i.getTile(o).tileSize,w=512/Math.min(b,512)*(o.overscaledZ/n.zoom)*.5;let T=o.canonical.toString();o.overscaledZ!==o.canonical.z&&(T+=` => ${o.overscaledZ}`),T+=` ${y}kb`,function(e,t){e.initDebugOverlayCanvas();const i=e.debugOverlayCanvas,o=e.context.gl,r=e.debugOverlayCanvas.getContext(\"2d\");r.clearRect(0,0,i.width,i.height),r.shadowColor=\"white\",r.shadowBlur=2,r.lineWidth=1.5,r.strokeStyle=\"white\",r.textBaseline=\"top\",r.font=\"bold 36px Open Sans, sans-serif\",r.fillText(t,5,5),r.strokeText(t,5,5),e.debugOverlayTexture.update(i),e.debugOverlayTexture.bind(o.LINEAR,o.CLAMP_TO_EDGE);}(t,T);const E=u._tileDebugTextBuffer||t.debugBuffer,C=u._tileDebugTextIndexBuffer||t.quadTriangleIndexBuffer,I=u._tileDebugTextSegments||t.debugSegments;h.draw(r,a.TRIANGLES,_,d,e.ColorMode.alphaBlended,e.CullFaceMode.disabled,Xi(c,e.Color.transparent,w),m,E,C,I,null,null,null,[u._globeTileDebugTextBuffer]);}function Mo(e,t,i,o){zo(e,0,t+i/2,e.transform.width,i,o);}function So(e,t,i,o){zo(e,t-i/2,0,i,e.transform.height,o);}function zo(t,i,o,r,n,a){const s=t.context,l=s.gl;l.enable(l.SCISSOR_TEST),l.scissor(i*e.exported.devicePixelRatio,o*e.exported.devicePixelRatio,r*e.exported.devicePixelRatio,n*e.exported.devicePixelRatio),s.clear({color:a}),l.disable(l.SCISSOR_TEST);}const Do=e.createLayout([{name:\"a_pos_3f\",components:3,type:\"Float32\"}]),{members:Po}=Do;function Ao(e,t,i,o){e.emplaceBack(t,i,o);}class Lo{constructor(t){this.vertexArray=new e.StructArrayLayout3f12,this.indices=new e.StructArrayLayout3ui6,Ao(this.vertexArray,-1,-1,1),Ao(this.vertexArray,1,-1,1),Ao(this.vertexArray,-1,1,1),Ao(this.vertexArray,1,1,1),Ao(this.vertexArray,-1,-1,-1),Ao(this.vertexArray,1,-1,-1),Ao(this.vertexArray,-1,1,-1),Ao(this.vertexArray,1,1,-1),this.indices.emplaceBack(5,1,3),this.indices.emplaceBack(3,7,5),this.indices.emplaceBack(6,2,0),this.indices.emplaceBack(0,4,6),this.indices.emplaceBack(2,6,7),this.indices.emplaceBack(7,3,2),this.indices.emplaceBack(5,4,0),this.indices.emplaceBack(0,1,5),this.indices.emplaceBack(0,2,3),this.indices.emplaceBack(3,1,0),this.indices.emplaceBack(7,6,4),this.indices.emplaceBack(4,5,7),this.vertexBuffer=t.createVertexBuffer(this.vertexArray,Po),this.indexBuffer=t.createIndexBuffer(this.indices),this.segment=e.SegmentVector.simpleSegment(0,0,36,12);}}function Ro(t,i,o,r,n,a){const s=t.gl,l=i.paint.get(\"sky-atmosphere-color\"),c=i.paint.get(\"sky-atmosphere-halo-color\"),h=i.paint.get(\"sky-atmosphere-sun-intensity\"),u=((e,t,i,o,r)=>({u_matrix_3f:e,u_sun_direction:t,u_sun_intensity:i,u_color_tint_r:[o.r,o.g,o.b,o.a],u_color_tint_m:[r.r,r.g,r.b,r.a],u_luminance:5e-5}))(e.fromMat4(e.create$1(),r),n,h,l,c);s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_CUBE_MAP_POSITIVE_X+a,i.skyboxTexture,0),o.draw(t,s.TRIANGLES,e.DepthMode.disabled,e.StencilMode.disabled,e.ColorMode.unblended,e.CullFaceMode.frontCW,u,\"skyboxCapture\",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment);}const Oo=e.createLayout([{type:\"Float32\",name:\"a_pos\",components:3},{type:\"Float32\",name:\"a_uv\",components:2}]);class Bo{constructor(t){const i=new e.StructArrayLayout5f20;i.emplaceBack(-1,1,1,0,0),i.emplaceBack(1,1,1,1,0),i.emplaceBack(1,-1,1,1,1),i.emplaceBack(-1,-1,1,0,1);const o=new e.StructArrayLayout3ui6;o.emplaceBack(0,1,2),o.emplaceBack(2,3,0),this.vertexBuffer=t.createVertexBuffer(i,Oo.members),this.indexBuffer=t.createIndexBuffer(o),this.segments=e.SegmentVector.simpleSegment(0,0,4,2);}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy();}}const ko={symbol:function(t,i,o,r,n){if(\"translucent\"!==t.renderPass)return;const a=e.StencilMode.disabled,s=t.colorModeForRenderPass();o.layout.get(\"text-variable-anchor\")&&function(t,i,o,r,n,a,s){const l=i.transform,c=\"map\"===n,h=\"map\"===a;for(const i of t){const t=r.getTile(i),n=t.getBucket(o);if(!n||!n.text||!n.text.segments.get().length)continue;const a=e.evaluateSizeForZoom(n.textSizeData,l.zoom),u=wt(i,n.getProjection(),l),_=l.calculatePixelsToTileUnitsMatrix(t),d=tt(u,t.tileID.canonical,h,c,l,n.getProjection(),_),p=\"none\"!==o.layout.get(\"icon-text-fit\")&&n.hasIconData();if(a){const o=Math.pow(2,l.zoom-t.tileID.overscaledZ);po(n,c,h,s,e.symbolSize,l,d,i,o,a,p);}}}(r,t,o,i,o.layout.get(\"text-rotation-alignment\"),o.layout.get(\"text-pitch-alignment\"),n),0!==o.paint.get(\"icon-opacity\").constantOr(1)&&fo(t,i,o,r,!1,o.paint.get(\"icon-translate\"),o.paint.get(\"icon-translate-anchor\"),o.layout.get(\"icon-rotation-alignment\"),o.layout.get(\"icon-pitch-alignment\"),o.layout.get(\"icon-keep-upright\"),a,s),0!==o.paint.get(\"text-opacity\").constantOr(1)&&fo(t,i,o,r,!0,o.paint.get(\"text-translate\"),o.paint.get(\"text-translate-anchor\"),o.layout.get(\"text-rotation-alignment\"),o.layout.get(\"text-pitch-alignment\"),o.layout.get(\"text-keep-upright\"),a,s),i.map.showCollisionBoxes&&(ho(t,i,o,r,o.paint.get(\"text-translate\"),o.paint.get(\"text-translate-anchor\"),!0),ho(t,i,o,r,o.paint.get(\"icon-translate\"),o.paint.get(\"icon-translate-anchor\"),!1));},circle:function(t,i,o,r){if(\"translucent\"!==t.renderPass)return;const n=o.paint.get(\"circle-opacity\"),a=o.paint.get(\"circle-stroke-width\"),s=o.paint.get(\"circle-stroke-opacity\"),l=void 0!==o.layout.get(\"circle-sort-key\").constantOr(1);if(0===n.constantOr(1)&&(0===a.constantOr(1)||0===s.constantOr(1)))return;const c=t.context,h=c.gl,u=t.transform,_=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),d=e.StencilMode.disabled,p=t.colorModeForRenderPass(),m=\"globe\"===u.projection.name,f=[e.mercatorXfromLng(u.center.lng),e.mercatorYfromLat(u.center.lat)],g=[];for(let n=0;n<r.length;n++){const a=r[n],s=i.getTile(a),c=s.getBucket(o);if(!c||c.projection.name!==u.projection.name)continue;const h=c.programConfigurations.get(o.id),_=Vi(o);m&&_.push(\"PROJECTION_GLOBE_VIEW\");const d=t.useProgram(\"circle\",h,_),p=c.layoutVertexBuffer,v=c.globeExtVertexBuffer,x=c.indexBuffer,y=u.projection.createInversionMatrix(u,a.canonical),b={programConfiguration:h,program:d,layoutVertexBuffer:p,globeExtVertexBuffer:v,indexBuffer:x,uniformValues:Zi(t,a,s,y,f,o),tile:s};if(l){const t=c.segments.get();for(const i of t)g.push({segments:new e.SegmentVector([i]),sortKey:i.sortKey,state:b});}else g.push({segments:c.segments,sortKey:0,state:b});}l&&g.sort(((e,t)=>e.sortKey-t.sortKey));const v={useDepthForOcclusion:!m};for(const i of g){const{programConfiguration:r,program:n,layoutVertexBuffer:a,globeExtVertexBuffer:s,indexBuffer:l,uniformValues:m,tile:f}=i.state,g=i.segments;t.terrain&&t.terrain.setupElevationDraw(f,n,v),t.prepareDrawProgram(c,n,f.tileID.toUnwrapped()),n.draw(c,h.TRIANGLES,_,d,p,e.CullFaceMode.disabled,m,o.id,a,l,g,o.paint,u.zoom,r,[s]);}},heatmap:function(t,i,o,r){if(0!==o.paint.get(\"heatmap-opacity\"))if(\"offscreen\"===t.renderPass){const n=t.context,a=n.gl,s=e.StencilMode.disabled,l=new e.ColorMode([a.ONE,a.ONE],e.Color.transparent,[!0,!0,!0,!0]);!function(e,t,i,o){const r=e.gl,n=t.width*o,a=t.height*o;e.activeTexture.set(r.TEXTURE1),e.viewport.set([0,0,n,a]);let s=i.heatmapFbo;if(!s||s&&(s.width!==n||s.height!==a)){s&&s.destroy();const t=r.createTexture();r.bindTexture(r.TEXTURE_2D,t),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),s=i.heatmapFbo=e.createFramebuffer(n,a,!1),function(e,t,i,o,r,n){const a=e.gl;a.texImage2D(a.TEXTURE_2D,0,a.RGBA,r,n,0,a.RGBA,e.extRenderToTextureHalfFloat?e.extTextureHalfFloat.HALF_FLOAT_OES:a.UNSIGNED_BYTE,null),o.colorAttachment.set(i);}(e,0,t,s,n,a);}else r.bindTexture(r.TEXTURE_2D,s.colorAttachment.get()),e.bindFramebuffer.set(s.framebuffer);}(n,t,o,\"globe\"===t.transform.projection.name?.5:.25),n.clear({color:e.Color.transparent});const c=t.transform,h=\"globe\"===c.projection.name,u=h?[\"PROJECTION_GLOBE_VIEW\"]:null,_=h?e.CullFaceMode.frontCCW:e.CullFaceMode.disabled,d=[e.mercatorXfromLng(c.center.lng),e.mercatorYfromLat(c.center.lat)];for(let p=0;p<r.length;p++){const m=r[p];if(i.hasRenderableParent(m))continue;const f=i.getTile(m),g=f.getBucket(o);if(!g||g.projection.name!==c.projection.name)continue;const v=g.programConfigurations.get(o.id),x=t.useProgram(\"heatmap\",v,u),{zoom:y}=t.transform;t.terrain&&t.terrain.setupElevationDraw(f,x),t.prepareDrawProgram(n,x,m.toUnwrapped());const b=c.projection.createInversionMatrix(c,m.canonical);x.draw(n,a.TRIANGLES,e.DepthMode.disabled,s,l,_,$i(t,m,f,b,d,y,o.paint.get(\"heatmap-intensity\")),o.id,g.layoutVertexBuffer,g.indexBuffer,g.segments,o.paint,t.transform.zoom,v,h?[g.globeExtVertexBuffer]:null);}n.viewport.set([0,0,t.width,t.height]);}else \"translucent\"===t.renderPass&&(t.context.setColorMode(t.colorModeForRenderPass()),function(t,i){const o=t.context,r=o.gl,n=i.heatmapFbo;if(!n)return;o.activeTexture.set(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,n.colorAttachment.get()),o.activeTexture.set(r.TEXTURE1);let a=i.colorRampTexture;a||(a=i.colorRampTexture=new e.Texture(o,i.colorRamp,r.RGBA)),a.bind(r.LINEAR,r.CLAMP_TO_EDGE),t.useProgram(\"heatmapTexture\").draw(o,r.TRIANGLES,e.DepthMode.disabled,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.disabled,((e,t,i,o)=>({u_image:0,u_color_ramp:1,u_opacity:t.paint.get(\"heatmap-opacity\")}))(0,i),i.id,t.viewportBuffer,t.quadTriangleIndexBuffer,t.viewportSegments,i.paint,t.transform.zoom);}(t,o));},line:function(t,i,o,r){if(\"translucent\"!==t.renderPass)return;const n=o.paint.get(\"line-opacity\"),a=o.paint.get(\"line-width\");if(0===n.constantOr(1)||0===a.constantOr(1))return;const s=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),l=t.colorModeForRenderPass(),c=t.terrain&&t.terrain.renderingToTexture?1:e.exported.devicePixelRatio,h=o.paint.get(\"line-dasharray\"),u=h.constantOr(1),_=o.layout.get(\"line-cap\"),d=o.paint.get(\"line-pattern\"),p=d.constantOr(1),m=o.paint.get(\"line-gradient\"),f=o.getCrossfadeParameters(),g=p?\"linePattern\":\"line\",v=t.context,x=v.gl,y=(e=>{const t=[];Qi(e)&&t.push(\"RENDER_LINE_DASH\"),e.paint.get(\"line-gradient\")&&t.push(\"RENDER_LINE_GRADIENT\");const i=e.paint.get(\"line-trim-offset\");0===i[0]&&0===i[1]||t.push(\"RENDER_LINE_TRIM_OFFSET\");const o=e.paint.get(\"line-pattern\").constantOr(1),r=1!==e.paint.get(\"line-opacity\").constantOr(1);return !o&&r&&t.push(\"RENDER_LINE_ALPHA_DISCARD\"),t})(o);let b=y.includes(\"RENDER_LINE_ALPHA_DISCARD\");t.terrain&&t.terrain.clipOrMaskOverlapStencilType()&&(b=!1);for(const n of r){const r=i.getTile(n);if(p&&!r.patternsLoaded())continue;const a=r.getBucket(o);if(!a)continue;t.prepareDrawTile();const w=a.programConfigurations.get(o.id),T=t.useProgram(g,w,y),E=d.constantOr(null);if(E&&r.imageAtlas){const e=r.imageAtlas,t=e.patternPositions[E.to.toString()],i=e.patternPositions[E.from.toString()];t&&i&&w.setConstantPatternPositions(t,i);}const C=h.constantOr(null),I=_.constantOr(null);if(!p&&C&&I&&r.lineAtlas){const e=r.lineAtlas,t=e.getDash(C.to,I),i=e.getDash(C.from,I);t&&i&&w.setConstantPatternPositions(t,i);}let[M,S]=o.paint.get(\"line-trim-offset\");if(\"round\"===I||\"square\"===I){const e=1;M!==S&&(0===M&&(M-=e),1===S&&(S+=e));}const z=t.terrain?n.projMatrix:null,D=p?Yi(t,r,o,f,z,c):Hi(t,r,o,f,z,a.lineClipsArray.length,c,[M,S]);if(m){const r=a.gradients[o.id];let s=r.texture;if(o.gradientVersion!==r.version){let l=256;if(o.stepInterpolant){const o=i.getSource().maxzoom,r=n.canonical.z===o?Math.ceil(1<<t.transform.maxZoom-n.canonical.z):1;l=e.clamp(e.nextPowerOfTwo(a.maxLineLength/e.EXTENT*1024*r),256,v.maxTextureSize);}r.gradient=e.renderColorRamp({expression:o.gradientExpression(),evaluationKey:\"lineProgress\",resolution:l,image:r.gradient||void 0,clips:a.lineClipsArray}),r.texture?r.texture.update(r.gradient):r.texture=new e.Texture(v,r.gradient,x.RGBA),r.version=o.gradientVersion,s=r.texture;}v.activeTexture.set(x.TEXTURE1),s.bind(o.stepInterpolant?x.NEAREST:x.LINEAR,x.CLAMP_TO_EDGE);}u&&(v.activeTexture.set(x.TEXTURE0),r.lineAtlasTexture.bind(x.LINEAR,x.REPEAT),w.updatePaintBuffers(f)),p&&(v.activeTexture.set(x.TEXTURE0),r.imageAtlasTexture.bind(x.LINEAR,x.CLAMP_TO_EDGE),w.updatePaintBuffers(f)),t.prepareDrawProgram(v,T,n.toUnwrapped());const P=i=>{T.draw(v,x.TRIANGLES,s,i,l,e.CullFaceMode.disabled,D,o.id,a.layoutVertexBuffer,a.indexBuffer,a.segments,o.paint,t.transform.zoom,w,[a.layoutVertexBuffer2]);};if(b){const i=t.stencilModeForClipping(n).ref;0===i&&t.terrain&&v.clear({stencil:0});const o={func:x.EQUAL,mask:255};D.u_alpha_discard_threshold=.8,P(new e.StencilMode(o,i,255,x.KEEP,x.KEEP,x.INVERT)),D.u_alpha_discard_threshold=0,P(new e.StencilMode(o,i,255,x.KEEP,x.KEEP,x.KEEP));}else P(t.stencilModeForClipping(n));}b&&(t.resetStencilClippingMasks(),t.terrain&&v.clear({stencil:0}));},fill:function(t,i,o,r){const n=o.paint.get(\"fill-color\"),a=o.paint.get(\"fill-opacity\");if(0===a.constantOr(1))return;const s=t.colorModeForRenderPass(),l=o.paint.get(\"fill-pattern\"),c=t.opaquePassEnabledForLayer()&&!l.constantOr(1)&&1===n.constantOr(e.Color.transparent).a&&1===a.constantOr(0)?\"opaque\":\"translucent\";if(t.renderPass===c){const n=t.depthModeForSublayer(1,\"opaque\"===t.renderPass?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly);vo(t,i,o,r,n,s,!1);}if(\"translucent\"===t.renderPass&&o.paint.get(\"fill-antialias\")){const n=t.depthModeForSublayer(o.getPaintProperty(\"fill-outline-color\")?2:0,e.DepthMode.ReadOnly);vo(t,i,o,r,n,s,!0);}},\"fill-extrusion\":function(t,i,o,r){const n=o.paint.get(\"fill-extrusion-opacity\");if(0!==n&&\"translucent\"===t.renderPass){const a=new e.DepthMode(t.context.gl.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);if(1!==n||o.paint.get(\"fill-extrusion-pattern\").constantOr(1))xo(t,i,o,r,a,e.StencilMode.disabled,e.ColorMode.disabled),xo(t,i,o,r,a,t.stencilModeFor3D(),t.colorModeForRenderPass()),t.resetStencilClippingMasks();else {const n=t.colorModeForRenderPass();xo(t,i,o,r,a,e.StencilMode.disabled,n);}}},hillshade:function(t,i,o,r){if(\"offscreen\"!==t.renderPass&&\"translucent\"!==t.renderPass)return;const n=t.context,a=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),s=t.colorModeForRenderPass(),l=t.terrain&&t.terrain.renderingToTexture,[c,h]=\"translucent\"!==t.renderPass||l?[{},r]:t.stencilConfigForOverlap(r);for(const r of h){const n=i.getTile(r);if(n.needsHillshadePrepare&&\"offscreen\"===t.renderPass)xi(t,n,o,a,e.StencilMode.disabled,s);else if(\"translucent\"===t.renderPass){const e=l&&t.terrain?t.terrain.stencilModeForRTTOverlap(r):c[r.overscaledZ];gi(t,r,n,o,a,e,s);}}n.viewport.set([0,0,t.width,t.height]),t.resetStencilClippingMasks();},raster:function(t,i,o,r,n,a){if(\"translucent\"!==t.renderPass)return;if(0===o.paint.get(\"raster-opacity\"))return;if(!r.length)return;const s=t.context,l=s.gl,c=i.getSource(),h=t.useProgram(\"raster\"),u=t.colorModeForRenderPass(),_=t.terrain&&t.terrain.renderingToTexture,[d,p]=c instanceof De||_?[{},r]:t.stencilConfigForOverlap(r),m=p[p.length-1].overscaledZ,f=!t.options.moving;for(const r of p){const n=_?e.DepthMode.disabled:t.depthModeForSublayer(r.overscaledZ-m,1===o.paint.get(\"raster-opacity\")?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly,l.LESS),p=r.toUnwrapped(),g=i.getTile(r);if(_&&(!g||!g.hasData()))continue;const v=_?r.projMatrix:t.transform.calculateProjMatrix(p,f),x=t.terrain&&_?t.terrain.stencilModeForRTTOverlap(r):d[r.overscaledZ],y=a?0:o.paint.get(\"raster-fade-duration\");g.registerFadeDuration(y);const b=i.findLoadedParent(r,0),w=Si(g,b,i,t.transform,y);let T,E;t.terrain&&t.terrain.prepareDrawTile();const C=\"nearest\"===o.paint.get(\"raster-resampling\")?l.NEAREST:l.LINEAR;s.activeTexture.set(l.TEXTURE0),g.texture.bind(C,l.CLAMP_TO_EDGE),s.activeTexture.set(l.TEXTURE1),b?(b.texture.bind(C,l.CLAMP_TO_EDGE),T=Math.pow(2,b.tileID.overscaledZ-g.tileID.overscaledZ),E=[g.tileID.canonical.x*T%1,g.tileID.canonical.y*T%1]):g.texture.bind(C,l.CLAMP_TO_EDGE);const I=eo(v,E||[0,0],T||1,w,o,c instanceof De?c.perspectiveTransform:[0,0]);if(t.prepareDrawProgram(s,h,p),c instanceof De)c.boundsBuffer&&c.boundsSegments&&h.draw(s,l.TRIANGLES,n,e.StencilMode.disabled,u,e.CullFaceMode.disabled,I,o.id,c.boundsBuffer,t.quadTriangleIndexBuffer,c.boundsSegments);else {const{tileBoundsBuffer:i,tileBoundsIndexBuffer:r,tileBoundsSegments:a}=t.getTileBoundsBuffers(g);h.draw(s,l.TRIANGLES,n,x,u,e.CullFaceMode.disabled,I,o.id,i,r,a);}}t.resetStencilClippingMasks();},background:function(t,i,o,r){const n=o.paint.get(\"background-color\"),a=o.paint.get(\"background-opacity\");if(0===a)return;const s=t.context,l=s.gl,c=t.transform,h=c.tileSize,u=o.paint.get(\"background-pattern\");if(t.isPatternMissing(u))return;const _=!u&&1===n.a&&1===a&&t.opaquePassEnabledForLayer()?\"opaque\":\"translucent\";if(t.renderPass!==_)return;const d=e.StencilMode.disabled,p=t.depthModeForSublayer(0,\"opaque\"===_?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly),m=t.colorModeForRenderPass(),f=t.useProgram(u?\"backgroundPattern\":\"background\");let g,v=r;v||(g=t.getBackgroundTiles(),v=Object.values(g).map((e=>e.tileID))),u&&(s.activeTexture.set(l.TEXTURE0),t.imageManager.bind(t.context));const x=o.getCrossfadeParameters();for(const _ of v){const v=_.toUnwrapped(),y=r?_.projMatrix:t.transform.calculateProjMatrix(v);t.prepareDrawTile();const b=i?i.getTile(_):g?g[_.key]:new e.Tile(_,h,c.zoom,t),w=u?so(y,a,t,u,{tileID:_,tileSize:h},x):ao(y,a,n);t.prepareDrawProgram(s,f,v);const{tileBoundsBuffer:T,tileBoundsIndexBuffer:E,tileBoundsSegments:C}=t.getTileBoundsBuffers(b);f.draw(s,l.TRIANGLES,p,d,m,e.CullFaceMode.disabled,w,o.id,T,E,C);}},sky:function(t,i,o){const r=t.transform,n=\"mercator\"===r.projection.name||\"globe\"===r.projection.name?1:e.smoothstep(7,8,r.zoom),a=o.paint.get(\"sky-opacity\")*n;if(0===a)return;const s=t.context,l=o.paint.get(\"sky-type\"),c=new e.DepthMode(s.gl.LEQUAL,e.DepthMode.ReadOnly,[0,1]),h=t.frameCounter/1e3%1;\"atmosphere\"===l?\"offscreen\"===t.renderPass?o.needsSkyboxCapture(t)&&(function(t,i,o,r){const n=t.context,a=n.gl;let s=i.skyboxFbo;if(!s){s=i.skyboxFbo=n.createFramebuffer(32,32,!1),i.skyboxGeometry=new Lo(n),i.skyboxTexture=n.gl.createTexture(),a.bindTexture(a.TEXTURE_CUBE_MAP,i.skyboxTexture),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_MIN_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_CUBE_MAP,a.TEXTURE_MAG_FILTER,a.LINEAR);for(let e=0;e<6;++e)a.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,a.RGBA,32,32,0,a.RGBA,a.UNSIGNED_BYTE,null);}n.bindFramebuffer.set(s.framebuffer),n.viewport.set([0,0,32,32]);const l=i.getCenter(t,!0),c=t.useProgram(\"skyboxCapture\"),h=new Float64Array(16);e.identity(h),e.rotateY(h,h,.5*-Math.PI),Ro(n,i,c,h,l,0),e.identity(h),e.rotateY(h,h,.5*Math.PI),Ro(n,i,c,h,l,1),e.identity(h),e.rotateX(h,h,.5*-Math.PI),Ro(n,i,c,h,l,2),e.identity(h),e.rotateX(h,h,.5*Math.PI),Ro(n,i,c,h,l,3),e.identity(h),Ro(n,i,c,h,l,4),e.identity(h),e.rotateY(h,h,Math.PI),Ro(n,i,c,h,l,5),n.viewport.set([0,0,t.width,t.height]);}(t,o),o.markSkyboxValid(t)):\"sky\"===t.renderPass&&function(t,i,o,r,n){const a=t.context,s=a.gl,l=t.transform,c=t.useProgram(\"skybox\");a.activeTexture.set(s.TEXTURE0),s.bindTexture(s.TEXTURE_CUBE_MAP,i.skyboxTexture);const h=((e,t,i,o,r)=>({u_matrix:e,u_sun_direction:t,u_cubemap:0,u_opacity:o,u_temporal_offset:r}))(l.skyboxMatrix,i.getCenter(t,!1),0,r,n);t.prepareDrawProgram(a,c),c.draw(a,s.TRIANGLES,o,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.backCW,h,\"skybox\",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment);}(t,o,c,a,h):\"gradient\"===l&&\"sky\"===t.renderPass&&function(t,i,o,r,n){const a=t.context,s=a.gl,l=t.transform,c=t.useProgram(\"skyboxGradient\");i.skyboxGeometry||(i.skyboxGeometry=new Lo(a)),a.activeTexture.set(s.TEXTURE0);let h=i.colorRampTexture;h||(h=i.colorRampTexture=new e.Texture(a,i.colorRamp,s.RGBA)),h.bind(s.LINEAR,s.CLAMP_TO_EDGE);const u=((t,i,o,r,n)=>({u_matrix:t,u_color_ramp:0,u_center_direction:i,u_radius:e.degToRad(o),u_opacity:r,u_temporal_offset:n}))(l.skyboxMatrix,i.getCenter(t,!1),i.paint.get(\"sky-gradient-radius\"),r,n);t.prepareDrawProgram(a,c),c.draw(a,s.TRIANGLES,o,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.backCW,u,\"skyboxGradient\",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment);}(t,o,c,a,h);},debug:function(e,t,i){for(let o=0;o<i.length;o++)Io(e,t,i[o]);},custom:function(t,i,o){const r=t.context,n=o.implementation;if(t.transform.projection.unsupportedLayers&&t.transform.projection.unsupportedLayers.includes(\"custom\"))e.warnOnce(\"Custom layers are not yet supported with non-mercator projections. Use mercator to enable custom layers.\");else if(\"offscreen\"===t.renderPass){const e=n.prerender;e&&(t.setCustomLayerDefaults(),r.setColorMode(t.colorModeForRenderPass()),e.call(n,r.gl,t.transform.customLayerMatrix()),r.setDirty(),t.setBaseState());}else if(\"translucent\"===t.renderPass){t.setCustomLayerDefaults(),r.setColorMode(t.colorModeForRenderPass()),r.setStencilMode(e.StencilMode.disabled);const i=\"3d\"===n.renderingMode?new e.DepthMode(t.context.gl.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D):t.depthModeForSublayer(0,e.DepthMode.ReadOnly);r.setDepthMode(i),n.render(r.gl,t.transform.customLayerMatrix()),r.setDirty(),t.setBaseState(),r.bindFramebuffer.set(null);}}};class Fo{constructor(t,i){this.context=new Ie(t),this.transform=i,this._tileTextures={},this.frameCopies=[],this.loadTimeStamps=[],this.setup(),this.numSublayers=e.SourceCache.maxUnderzooming+e.SourceCache.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new $t,this.deferredRenderGpuTimeQueries=[],this.gpuTimers={},this.frameCounter=0,this._backgroundTiles={};}updateTerrain(e,t){const i=!!e&&!!e.terrain&&this.transform.projection.supportsTerrain;if(!(i||this._terrain&&this._terrain.enabled))return;this._terrain||(this._terrain=new Ai(this,e));const o=this._terrain;this.transform.elevation=i?o:null,o.update(e,this.transform,t);}_updateFog(e){const t=e.fog;if(!t||\"globe\"===this.transform.projection.name||t.getOpacity(this.transform.pitch)<1||t.properties.get(\"horizon-blend\")<.03)return void(this.transform.fogCullDistSq=null);const[i,o]=t.getFovAdjustedRange(this.transform._fov);if(i>o)return void(this.transform.fogCullDistSq=null);const r=i+.78*(o-i);this.transform.fogCullDistSq=r*r;}get terrain(){return this.transform._terrainEnabled()&&this._terrain&&this._terrain.enabled?this._terrain:null}resize(t,i){if(this.width=t*e.exported.devicePixelRatio,this.height=i*e.exported.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const e of this.style.order)this.style._layers[e].resize();}setup(){const t=this.context,i=new e.StructArrayLayout2i4;i.emplaceBack(0,0),i.emplaceBack(e.EXTENT,0),i.emplaceBack(0,e.EXTENT),i.emplaceBack(e.EXTENT,e.EXTENT),this.tileExtentBuffer=t.createVertexBuffer(i,e.posAttributes.members),this.tileExtentSegments=e.SegmentVector.simpleSegment(0,0,4,2);const o=new e.StructArrayLayout2i4;o.emplaceBack(0,0),o.emplaceBack(e.EXTENT,0),o.emplaceBack(0,e.EXTENT),o.emplaceBack(e.EXTENT,e.EXTENT),this.debugBuffer=t.createVertexBuffer(o,e.posAttributes.members),this.debugSegments=e.SegmentVector.simpleSegment(0,0,4,5);const r=new e.StructArrayLayout2i4;r.emplaceBack(-1,-1),r.emplaceBack(1,-1),r.emplaceBack(-1,1),r.emplaceBack(1,1),this.viewportBuffer=t.createVertexBuffer(r,e.posAttributes.members),this.viewportSegments=e.SegmentVector.simpleSegment(0,0,4,2);const n=new e.StructArrayLayout4i8;n.emplaceBack(0,0,0,0),n.emplaceBack(e.EXTENT,0,e.EXTENT,0),n.emplaceBack(0,e.EXTENT,0,e.EXTENT),n.emplaceBack(e.EXTENT,e.EXTENT,e.EXTENT,e.EXTENT),this.mercatorBoundsBuffer=t.createVertexBuffer(n,e.boundsAttributes.members),this.mercatorBoundsSegments=e.SegmentVector.simpleSegment(0,0,4,2);const a=new e.StructArrayLayout3ui6;a.emplaceBack(0,1,2),a.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=t.createIndexBuffer(a);const s=new e.StructArrayLayout1ui2;for(const e of [0,1,3,2,0])s.emplaceBack(e);this.debugIndexBuffer=t.createIndexBuffer(s),this.emptyTexture=new e.Texture(t,new e.RGBAImage({width:1,height:1},Uint8Array.of(0,0,0,0)),t.gl.RGBA),this.identityMat=e.create();const l=this.context.gl;this.stencilClearMode=new e.StencilMode({func:l.ALWAYS,mask:0},0,255,l.ZERO,l.ZERO,l.ZERO),this.loadTimeStamps.push(e.window.performance.now()),this.atmosphereBuffer=new Bo(this.context);}getMercatorTileBoundsBuffers(){return {tileBoundsBuffer:this.mercatorBoundsBuffer,tileBoundsIndexBuffer:this.quadTriangleIndexBuffer,tileBoundsSegments:this.mercatorBoundsSegments}}getTileBoundsBuffers(e){return e._makeTileBoundsBuffers(this.context,this.transform.projection),e._tileBoundsBuffer?{tileBoundsBuffer:e._tileBoundsBuffer,tileBoundsIndexBuffer:e._tileBoundsIndexBuffer,tileBoundsSegments:e._tileBoundsSegments}:this.getMercatorTileBoundsBuffers()}clearStencil(){const t=this.context,i=t.gl;this.nextStencilID=1,this.currentStencilSource=void 0,this._tileClippingMaskIDs={},this.useProgram(\"clippingMask\").draw(t,i.TRIANGLES,e.DepthMode.disabled,this.stencilClearMode,e.ColorMode.disabled,e.CullFaceMode.disabled,Mi(this.identityMat),\"$clipping\",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments);}resetStencilClippingMasks(){this.terrain||(this.currentStencilSource=void 0,this._tileClippingMaskIDs={});}_renderTileClippingMasks(t,i,o){if(!i||this.currentStencilSource===i.id||!t.isTileClipped()||!o||0===o.length)return;if(this._tileClippingMaskIDs&&!this.terrain){let e=!1;for(const t of o)if(void 0===this._tileClippingMaskIDs[t.key]){e=!0;break}if(!e)return}this.currentStencilSource=i.id;const r=this.context,n=r.gl;this.nextStencilID+o.length>256&&this.clearStencil(),r.setColorMode(e.ColorMode.disabled),r.setDepthMode(e.DepthMode.disabled);const a=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(const t of o){const o=i.getTile(t),s=this._tileClippingMaskIDs[t.key]=this.nextStencilID++,{tileBoundsBuffer:l,tileBoundsIndexBuffer:c,tileBoundsSegments:h}=this.getTileBoundsBuffers(o);a.draw(r,n.TRIANGLES,e.DepthMode.disabled,new e.StencilMode({func:n.ALWAYS,mask:0},s,255,n.KEEP,n.KEEP,n.REPLACE),e.ColorMode.disabled,e.CullFaceMode.disabled,Mi(t.projMatrix),\"$clipping\",l,c,h);}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const t=this.nextStencilID++,i=this.context.gl;return new e.StencilMode({func:i.NOTEQUAL,mask:255},t,255,i.KEEP,i.KEEP,i.REPLACE)}stencilModeForClipping(t){if(this.terrain)return this.terrain.stencilModeForRTTOverlap(t);const i=this.context.gl;return new e.StencilMode({func:i.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,i.KEEP,i.KEEP,i.REPLACE)}stencilConfigForOverlap(t){const i=this.context.gl,o=t.sort(((e,t)=>t.overscaledZ-e.overscaledZ)),r=o[o.length-1].overscaledZ,n=o[0].overscaledZ-r+1;if(n>1){this.currentStencilSource=void 0,this.nextStencilID+n>256&&this.clearStencil();const t={};for(let o=0;o<n;o++)t[o+r]=new e.StencilMode({func:i.GEQUAL,mask:255},o+this.nextStencilID,255,i.KEEP,i.KEEP,i.REPLACE);return this.nextStencilID+=n,[t,o]}return [{[r]:e.StencilMode.disabled},o]}colorModeForRenderPass(){const t=this.context.gl;if(this._showOverdrawInspector){const i=1/8;return new e.ColorMode([t.CONSTANT_COLOR,t.ONE],new e.Color(i,i,i,0),[!0,!0,!0,!0])}return \"opaque\"===this.renderPass?e.ColorMode.unblended:e.ColorMode.alphaBlended}depthModeForSublayer(t,i,o){if(!this.opaquePassEnabledForLayer())return e.DepthMode.disabled;const r=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon;return new e.DepthMode(o||this.context.gl.LEQUAL,i,[r,r])}opaquePassEnabledForLayer(){return this.currentLayer<this.opaquePassCutoff}render(t,i){this.style=t,this.options=i,this.lineAtlas=t.lineAtlas,this.imageManager=t.imageManager,this.glyphManager=t.glyphManager,this.symbolFadeChange=t.placement.symbolFadeChange(e.exported.now()),this.imageManager.beginFrame();const o=this.style.order,r=this.style._sourceCaches;for(const e in r){const t=r[e];t.used&&t.prepare(this.context);}const n={},a={},s={};for(const e in r){const t=r[e];n[e]=t.getVisibleCoordinates(),a[e]=n[e].slice().reverse(),s[e]=t.getVisibleCoordinates(!0).reverse();}this.opaquePassCutoff=1/0;for(let e=0;e<o.length;e++)if(this.style._layers[o[e]].is3D()){this.opaquePassCutoff=e;break}if(this.terrain&&(this.terrain.updateTileBinding(s),this.opaquePassCutoff=0),\"globe\"!==this.transform.projection.name||this.globeSharedBuffers||(this.globeSharedBuffers=new e.GlobeSharedBuffers(this.context)),e.isMapAuthenticated(this.context.gl)){this.renderPass=\"offscreen\";for(const e of o){const i=this.style._layers[e],o=t._getLayerSourceCache(i);if(!i.hasOffscreenPass()||i.isHidden(this.transform.zoom))continue;const r=o?a[o.id]:void 0;(\"custom\"===i.type||i.isSky()||r&&r.length)&&this.renderLayer(this,o,i,r);}if(this.depthRangeFor3D=[0,1-(t.order.length+2)*this.numSublayers*this.depthEpsilon],this.terrain&&(this.style.hasSymbolLayers()||this.style.hasCircleLayers())&&this.terrain.drawDepth(),this.context.bindFramebuffer.set(null),this.context.viewport.set([0,0,this.width,this.height]),this.context.clear({color:i.showOverdrawInspector?e.Color.black:e.Color.transparent,depth:1}),this.clearStencil(),this._showOverdrawInspector=i.showOverdrawInspector,this.renderPass=\"opaque\",!this.terrain)for(this.currentLayer=o.length-1;this.currentLayer>=0;this.currentLayer--){const e=this.style._layers[o[this.currentLayer]],i=t._getLayerSourceCache(e);if(e.isSky())continue;const r=i?a[i.id]:void 0;this._renderTileClippingMasks(e,i,r),this.renderLayer(this,i,e,r);}if(this.style.fog&&this.transform.projection.supportsFog&&function(t,i){const o=t.context,r=o.gl,n=t.transform,a=new e.DepthMode(r.LEQUAL,e.DepthMode.ReadOnly,[0,1]),s=t.useProgram(\"globeAtmosphere\",null,\"globe\"===n.projection.name?[\"PROJECTION_GLOBE_VIEW\",\"FOG\"]:[\"FOG\"]),l=e.globeToMercatorTransition(n.zoom),c=i.properties.get(\"color\").toArray01(),h=i.properties.get(\"high-color\").toArray01(),u=i.properties.get(\"space-color\").toArray01PremultipliedAlpha(),_=e.identity$1([]);e.rotateY$1(_,_,-e.degToRad(n._center.lng)),e.rotateX$1(_,_,e.degToRad(n._center.lat)),e.rotateZ$1(_,_,n.angle),e.rotateX$1(_,_,-n._pitch);const d=e.fromQuat(new Float32Array(16),_),p=e.mapValue(i.properties.get(\"star-intensity\"),0,1,0,.25),m=5e-4,f=e.mapValue(i.properties.get(\"horizon-blend\"),0,1,m,.25),g=e.globeUseCustomAntiAliasing(t,o,n)&&f===m?n.worldSize/(2*Math.PI*1.025)-1:n.globeRadius,v=t.frameCounter/1e3%1,x=e.length(n.globeCenterInViewSpace),y=Math.sqrt(Math.pow(x,2)-Math.pow(g,2)),b=Math.acos(y/x),w=((t,i,o,r,n,a,s,l,c,h,u,_,d,p)=>({u_frustum_tl:t,u_frustum_tr:i,u_frustum_br:o,u_frustum_bl:r,u_horizon:n,u_transition:a,u_fadeout_range:s,u_color:l,u_high_color:c,u_space_color:h,u_star_intensity:u,u_star_size:5*e.exported.devicePixelRatio,u_star_density:0,u_temporal_offset:_,u_horizon_angle:d,u_rotation_matrix:p}))(n.frustumCorners.TL,n.frustumCorners.TR,n.frustumCorners.BR,n.frustumCorners.BL,n.frustumCorners.horizon,l,f,c,h,u,p,v,b,d);t.prepareDrawProgram(o,s);const T=t.atmosphereBuffer;T&&s.draw(o,r.TRIANGLES,a,e.StencilMode.disabled,e.ColorMode.alphaBlended,e.CullFaceMode.backCW,w,\"skybox\",T.vertexBuffer,T.indexBuffer,T.segments);}(this,this.style.fog),this.renderPass=\"sky\",(e.globeToMercatorTransition(this.transform.zoom)>0||\"globe\"!==this.transform.projection.name)&&this.transform.isHorizonVisible())for(this.currentLayer=0;this.currentLayer<o.length;this.currentLayer++){const e=this.style._layers[o[this.currentLayer]],i=t._getLayerSourceCache(e);e.isSky()&&this.renderLayer(this,i,e,i?a[i.id]:void 0);}for(this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayer<o.length;){const e=this.style._layers[o[this.currentLayer]],i=t._getLayerSourceCache(e);if(e.isSky()){++this.currentLayer;continue}if(this.terrain&&this.style.isLayerDraped(e)){if(e.isHidden(this.transform.zoom)){++this.currentLayer;continue}this.currentLayer=this.terrain.renderBatch(this.currentLayer);continue}const r=i?(\"symbol\"===e.type?s:a)[i.id]:void 0;this._renderTileClippingMasks(e,i,i?n[i.id]:void 0),this.renderLayer(this,i,e,r),++this.currentLayer;}if(this.terrain&&this.terrain.postRender(),this.options.showTileBoundaries||this.options.showQueryGeometry){let i=null;e.values(this.style._layers).forEach((e=>{const o=t._getLayerSourceCache(e);o&&!e.isHidden(this.transform.zoom)&&(!i||i.getSource().maxzoom<o.getSource().maxzoom)&&(i=o);})),i&&this.options.showTileBoundaries&&ko.debug(this,i,i.getVisibleCoordinates());}this.options.showPadding&&function(e){const t=e.transform.padding;Mo(e,e.transform.height-(t.top||0),3,bo),Mo(e,t.bottom||0,3,wo),So(e,t.left||0,3,To),So(e,e.transform.width-(t.right||0),3,Eo);const i=e.transform.centerPoint;!function(e,t,i,o){zo(e,t-1,i-10,2,20,o),zo(e,t-10,i-1,20,2,o);}(e,i.x,e.transform.height-i.y,Co);}(this),this.context.setDefault(),this.frameCounter=(this.frameCounter+1)%Number.MAX_SAFE_INTEGER,this.tileLoaded&&this.options.speedIndexTiming&&(this.loadTimeStamps.push(e.window.performance.now()),this.saveCanvasCopy());}}renderLayer(e,t,i,o){i.isHidden(this.transform.zoom)||(\"background\"===i.type||\"sky\"===i.type||\"custom\"===i.type||o&&o.length)&&(this.id=i.id,this.gpuTimingStart(i),e.transform.projection.unsupportedLayers&&e.transform.projection.unsupportedLayers.includes(i.type)||ko[i.type](e,t,i,o,this.style.placement.variableOffsets,this.options.isInitialLoad),this.gpuTimingEnd());}gpuTimingStart(e){if(!this.options.gpuTiming)return;const t=this.context.extTimerQuery;let i=this.gpuTimers[e.id];i||(i=this.gpuTimers[e.id]={calls:0,cpuTime:0,query:t.createQueryEXT()}),i.calls++,t.beginQueryEXT(t.TIME_ELAPSED_EXT,i.query);}gpuTimingDeferredRenderStart(){if(this.options.gpuTimingDeferredRender){const e=this.context.extTimerQuery,t=e.createQueryEXT();this.deferredRenderGpuTimeQueries.push(t),e.beginQueryEXT(e.TIME_ELAPSED_EXT,t);}}gpuTimingDeferredRenderEnd(){if(!this.options.gpuTimingDeferredRender)return;const e=this.context.extTimerQuery;e.endQueryEXT(e.TIME_ELAPSED_EXT);}gpuTimingEnd(){if(!this.options.gpuTiming)return;const e=this.context.extTimerQuery;e.endQueryEXT(e.TIME_ELAPSED_EXT);}collectGpuTimers(){const e=this.gpuTimers;return this.gpuTimers={},e}collectDeferredRenderGpuQueries(){const e=this.deferredRenderGpuTimeQueries;return this.deferredRenderGpuTimeQueries=[],e}queryGpuTimers(e){const t={};for(const i in e){const o=e[i],r=this.context.extTimerQuery,n=r.getQueryObjectEXT(o.query,r.QUERY_RESULT_EXT)/1e6;r.deleteQueryEXT(o.query),t[i]=n;}return t}queryGpuTimeDeferredRender(e){if(!this.options.gpuTimingDeferredRender)return 0;const t=this.context.extTimerQuery;let i=0;for(const o of e)i+=t.getQueryObjectEXT(o,t.QUERY_RESULT_EXT)/1e6,t.deleteQueryEXT(o);return i}translatePosMatrix(t,i,o,r,n){if(!o[0]&&!o[1])return t;const a=n?\"map\"===r?this.transform.angle:0:\"viewport\"===r?-this.transform.angle:0;if(a){const e=Math.sin(a),t=Math.cos(a);o=[o[0]*t-o[1]*e,o[0]*e+o[1]*t];}const s=[n?o[0]:L(i,o[0],this.transform.zoom),n?o[1]:L(i,o[1],this.transform.zoom),0],l=new Float32Array(16);return e.translate(l,t,s),l}saveTileTexture(e){const t=this._tileTextures[e.size[0]];t?t.push(e):this._tileTextures[e.size[0]]=[e];}getTileTexture(e){const t=this._tileTextures[e];return t&&t.length>0?t.pop():null}isPatternMissing(e){if(!e)return !1;if(!e.from||!e.to)return !0;const t=this.imageManager.getPattern(e.from.toString()),i=this.imageManager.getPattern(e.to.toString());return !t||!i}currentGlobalDefines(){const e=this.terrain&&this.terrain.renderingToTexture,t=this.style&&this.style.fog,i=[];return this.terrain&&!this.terrain.renderingToTexture&&i.push(\"TERRAIN\"),t&&!e&&0!==t.getOpacity(this.transform.pitch)&&i.push(\"FOG\"),e&&i.push(\"RENDER_TO_TEXTURE\"),this._showOverdrawInspector&&i.push(\"OVERDRAW_INSPECTOR\"),i}useProgram(e,t,i){this.cache=this.cache||{};const o=i||[],r=this.currentGlobalDefines().concat(o),n=Li.cacheKey(_i[e],e,r,t);return this.cache[n]||(this.cache[n]=new Li(this.context,e,_i[e],t,lo[e],r)),this.cache[n]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.frontFace.setDefault(),this.context.cullFaceSide.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault();}setBaseState(){const e=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(e.FUNC_ADD);}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=e.window.document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new e.Texture(this.context,this.debugOverlayCanvas,this.context.gl.RGBA));}destroy(){this._terrain&&this._terrain.destroy(),this.globeSharedBuffers&&this.globeSharedBuffers.destroy(),this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy(),this.atmosphereBuffer&&this.atmosphereBuffer.destroy();}prepareDrawTile(){this.terrain&&this.terrain.prepareDrawTile();}prepareDrawProgram(t,i,o){if(this.terrain&&this.terrain.renderingToTexture)return;const r=this.style.fog;if(r){const n=r.getOpacity(this.transform.pitch),a=((t,i,o,r,n,a,s,l,c,h,u)=>{const _=t.transform,d=i.properties.get(\"color\").toArray01();d[3]=r;const p=t.frameCounter/1e3%1;return {u_fog_matrix:o?_.calculateFogTileMatrix(o):t.identityMat,u_fog_range:i.getFovAdjustedRange(_._fov),u_fog_color:d,u_fog_horizon_blend:i.properties.get(\"horizon-blend\"),u_fog_temporal_offset:p,u_frustum_tl:n,u_frustum_tr:a,u_frustum_br:s,u_frustum_bl:l,u_globe_pos:c,u_globe_radius:h,u_viewport:u,u_globe_transition:e.globeToMercatorTransition(_.zoom),u_is_globe:+(\"globe\"===_.projection.name)}})(this,r,o,n,this.transform.frustumCorners.TL,this.transform.frustumCorners.TR,this.transform.frustumCorners.BR,this.transform.frustumCorners.BL,this.transform.globeCenterInViewSpace,this.transform.globeRadius,[this.transform.width*e.exported.devicePixelRatio,this.transform.height*e.exported.devicePixelRatio]);i.setFogUniformValues(t,a);}}setTileLoadedFlag(e){this.tileLoaded=e;}saveCanvasCopy(){this.frameCopies.push(this.canvasCopy()),this.tileLoaded=!1;}canvasCopy(){const e=this.context.gl,t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.copyTexImage2D(e.TEXTURE_2D,0,e.RGBA,0,0,e.drawingBufferWidth,e.drawingBufferHeight,0),t}getCanvasCopiesAndTimestamps(){return {canvasCopies:this.frameCopies,timeStamps:this.loadTimeStamps}}averageElevationNeedsEasing(){if(!this.transform._elevation)return !1;const e=this.style&&this.style.fog;return !!e&&0!==e.getOpacity(this.transform.pitch)}getBackgroundTiles(){const t=this._backgroundTiles,i=this._backgroundTiles={},o=this.transform.coveringTiles({tileSize:512});for(const r of o)i[r.key]=t[r.key]||new e.Tile(r,512,this.transform.tileZoom,this);return i}clearBackgroundTiles(){this._backgroundTiles={};}}class Uo{constructor(e=0,t=0,i=0,o=0){if(isNaN(e)||e<0||isNaN(t)||t<0||isNaN(i)||i<0||isNaN(o)||o<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=e,this.bottom=t,this.left=i,this.right=o;}interpolate(t,i,o){return null!=i.top&&null!=t.top&&(this.top=e.number(t.top,i.top,o)),null!=i.bottom&&null!=t.bottom&&(this.bottom=e.number(t.bottom,i.bottom,o)),null!=i.left&&null!=t.left&&(this.left=e.number(t.left,i.left,o)),null!=i.right&&null!=t.right&&(this.right=e.number(t.right,i.right,o)),this}getCenter(t,i){const o=e.clamp((this.left+t-this.right)/2,0,t),r=e.clamp((this.top+i-this.bottom)/2,0,i);return new e.pointGeometry(o,r)}equals(e){return this.top===e.top&&this.bottom===e.bottom&&this.left===e.left&&this.right===e.right}clone(){return new Uo(this.top,this.bottom,this.left,this.right)}toJSON(){return {top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}function No(t,i){const o=e.getColumn(t,3);e.fromQuat(t,i),e.setColumn(t,3,o);}function Go(t,i){const o=e.identity$1([]);return e.rotateZ$1(o,o,-i),e.rotateX$1(o,o,-t),o}function jo(t,i){const o=[t[0],t[1],0],r=[i[0],i[1],0];if(e.length(o)>=1e-15){const t=e.normalize([],o);e.scale$2(r,t,e.dot(r,t)),i[0]=r[0],i[1]=r[1];}const n=e.cross([],i,t);if(e.len(n)<1e-15)return null;const a=Math.atan2(-n[1],n[0]);return Go(Math.atan2(Math.sqrt(t[0]*t[0]+t[1]*t[1]),-t[2]),a)}class Zo{constructor(e,t){this.position=e,this.orientation=t;}get position(){return this._position}set position(t){if(t){const i=t instanceof e.MercatorCoordinate?t:new e.MercatorCoordinate(t[0],t[1],t[2]);this._renderWorldCopies&&(i.x=e.wrap(i.x,0,1)),this._position=i;}else this._position=null;}lookAtPoint(t,i){if(this.orientation=null,!this.position)return;const o=this._elevation?this._elevation.getAtPointOrZero(e.MercatorCoordinate.fromLngLat(t)):0,r=this.position,n=e.MercatorCoordinate.fromLngLat(t,o),a=[n.x-r.x,n.y-r.y,n.z-r.z];i||(i=[0,0,1]),i[2]=Math.abs(i[2]),this.orientation=jo(a,i);}setPitchBearing(t,i){this.orientation=Go(e.degToRad(t),e.degToRad(-i));}}class Vo{constructor(t,i){this._transform=e.identity([]),this.orientation=i,this.position=t;}get mercatorPosition(){const t=this.position;return new e.MercatorCoordinate(t[0],t[1],t[2])}get position(){const t=e.getColumn(this._transform,3);return [t[0],t[1],t[2]]}set position(t){var i;t&&e.setColumn(this._transform,3,[(i=t)[0],i[1],i[2],1]);}get orientation(){return this._orientation}set orientation(t){this._orientation=t||e.identity$1([]),t&&No(this._transform,this._orientation);}getPitchBearing(){const e=this.forward(),t=this.right();return {bearing:Math.atan2(-t[1],t[0]),pitch:Math.atan2(Math.sqrt(e[0]*e[0]+e[1]*e[1]),-e[2])}}setPitchBearing(e,t){this._orientation=Go(e,t),No(this._transform,this._orientation);}forward(){const t=e.getColumn(this._transform,2);return [-t[0],-t[1],-t[2]]}up(){const t=e.getColumn(this._transform,1);return [-t[0],-t[1],-t[2]]}right(){const t=e.getColumn(this._transform,0);return [t[0],t[1],t[2]]}getCameraToWorld(t,i){const o=new Float64Array(16);return e.invert(o,this.getWorldToCamera(t,i)),o}getWorldToCameraPosition(t,i,o){const r=this.position;e.scale$2(r,r,-t);const n=new Float64Array(16);return e.fromScaling(n,[o,o,o]),e.translate(n,n,r),n[10]*=i,n}getWorldToCamera(t,i){const o=new Float64Array(16),r=new Float64Array(4),n=this.position;return e.conjugate(r,this._orientation),e.scale$2(n,n,-t),e.fromQuat(o,r),e.translate(o,o,n),o[1]*=-1,o[5]*=-1,o[9]*=-1,o[13]*=-1,o[8]*=i,o[9]*=i,o[10]*=i,o[11]*=i,o}getCameraToClipPerspective(t,i,o,r){const n=new Float64Array(16);return e.perspective(n,t,i,o,r),n}getDistanceToElevation(t){const i=0===t?0:e.mercatorZfromAltitude(t,this.position[1]),o=this.forward();return (i-this.position[2])/o[2]}clone(){return new Vo([...this.position],[...this.orientation])}}function Wo(t,i){const o=qo(t.projection,t.zoom,t.width,t.height),r=function(t,i,o,r,n){const a=new e.LngLat(o.lng-180*$o,o.lat),s=new e.LngLat(o.lng+180*$o,o.lat),l=t.project(a.lng,a.lat),c=t.project(s.lng,s.lat),h=-Math.atan2(c.y-l.y,c.x-l.x),u=e.MercatorCoordinate.fromLngLat(o);u.y=e.clamp(u.y,-.999975,.999975);const _=u.toLngLat(),d=t.project(_.lng,_.lat),p=e.MercatorCoordinate.fromLngLat(_);p.x+=$o;const m=p.toLngLat(),f=t.project(m.lng,m.lat),g=Yo(f.x-d.x,f.y-d.y,h),v=e.MercatorCoordinate.fromLngLat(_);v.y+=$o;const x=v.toLngLat(),y=t.project(x.lng,x.lat),b=Yo(y.x-d.x,y.y-d.y,h),w=Math.abs(g.x)/Math.abs(b.y),T=e.identity([]);e.rotateZ(T,T,-h*(1-(n?0:r)));const E=e.identity([]);return e.scale(E,E,[1,1-(1-w)*r,1]),E[4]=-b.x/b.y*r,e.rotateZ(E,E,h),e.multiply(E,T,E),E}(t.projection,0,t.center,o,i),n=Xo(t);return e.scale(r,r,[n,n,1]),r}function Xo(t){const i=t.projection,o=qo(t.projection,t.zoom,t.width,t.height),r=Ho(i,t.center),n=Ho(i,e.LngLat.convert(i.center));return Math.pow(2,r*o+(1-o)*n)}function qo(t,i,o,r,n=1/0){const a=t.range;if(!a)return 0;const s=Math.min(n,Math.max(o,r)),l=Math.log(s/1024)/Math.LN2;return e.smoothstep(a[0]+l,a[1]+l,i)}const $o=1/4e4;function Ho(t,i){const o=e.clamp(i.lat,-e.MAX_MERCATOR_LATITUDE,e.MAX_MERCATOR_LATITUDE),r=new e.LngLat(i.lng-180*$o,o),n=new e.LngLat(i.lng+180*$o,o),a=t.project(r.lng,o),s=t.project(n.lng,o),l=e.MercatorCoordinate.fromLngLat(r),c=e.MercatorCoordinate.fromLngLat(n),h=s.x-a.x,u=s.y-a.y,_=c.x-l.x,d=c.y-l.y,p=Math.sqrt((_*_+d*d)/(h*h+u*u));return Math.log(p)/Math.LN2}function Yo(e,t,i){const o=Math.cos(i),r=Math.sin(i);return {x:e*o-t*r,y:e*r+t*o}}class Ko{constructor(t,i,o,r,n,a,s){this.tileSize=512,this._renderWorldCopies=void 0===n||n,this._minZoom=t||0,this._maxZoom=i||22,this._minPitch=null==o?0:o,this._maxPitch=null==r?60:r,this.setProjection(a),this.setMaxBounds(s),this.width=0,this.height=0,this._center=new e.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._nearZ=0,this._farZ=0,this._unmodified=!0,this._edgeInsets=new Uo,this._projMatrixCache={},this._alignedProjMatrixCache={},this._fogTileMatrixCache={},this._distanceTileDataCache={},this._camera=new Vo,this._centerAltitude=0,this._averageElevation=0,this.cameraElevationReference=\"ground\",this._pixelsPerMercatorPixel=1,this.globeRadius=0,this.globeCenterInViewSpace=[0,0,0],this._horizonShift=.1;}clone(){const e=new Ko(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies,this.getProjection());return e._elevation=this._elevation,e._centerAltitude=this._centerAltitude,e._centerAltitudeValidForExaggeration=this._centerAltitudeValidForExaggeration,e.tileSize=this.tileSize,e.width=this.width,e.height=this.height,e.cameraElevationReference=this.cameraElevationReference,e._center=this._center,e._setZoom(this.zoom),e._seaLevelZoom=this._seaLevelZoom,e.angle=this.angle,e._fov=this._fov,e._pitch=this._pitch,e._nearZ=this._nearZ,e._farZ=this._farZ,e._averageElevation=this._averageElevation,e._unmodified=this._unmodified,e._edgeInsets=this._edgeInsets.clone(),e._camera=this._camera.clone(),e._calcMatrices(),e.freezeTileCoverage=this.freezeTileCoverage,e.frustumCorners=this.frustumCorners,e}get elevation(){return this._elevation}set elevation(e){this._elevation!==e&&(this._elevation=e,this._updateCameraOnTerrain(),this._calcMatrices());}updateElevation(e){const t=this._elevation&&this._elevation.exaggeration()!==this._centerAltitudeValidForExaggeration;(null==this._seaLevelZoom||t)&&this._updateCameraOnTerrain(),(e||t)&&this._constrainCameraAltitude(),this._calcMatrices();}getProjection(){return e.pick(this.projection,[\"name\",\"center\",\"parallels\"])}setProjection(i){this.projectionOptions=i||{name:\"mercator\"};const o=this.projection?this.getProjection():void 0;this.projection=e.getProjection(this.projectionOptions);const r=!t(o,this.getProjection());return r&&this._calcMatrices(),this.mercatorFromTransition=!1,r}setMercatorFromTransition(){const t=this.projection.name;this.mercatorFromTransition=!0,this.projectionOptions={name:\"mercator\"},this.projection=e.getProjection({name:\"mercator\"});const i=t!==this.projection.name;return i&&this._calcMatrices(),i}get minZoom(){return this._minZoom}set minZoom(e){this._minZoom!==e&&(this._minZoom=e,this.zoom=Math.max(this.zoom,e));}get maxZoom(){return this._maxZoom}set maxZoom(e){this._maxZoom!==e&&(this._maxZoom=e,this.zoom=Math.min(this.zoom,e));}get minPitch(){return this._minPitch}set minPitch(e){this._minPitch!==e&&(this._minPitch=e,this.pitch=Math.max(this.pitch,e));}get maxPitch(){return this._maxPitch}set maxPitch(e){this._maxPitch!==e&&(this._maxPitch=e,this.pitch=Math.min(this.pitch,e));}get renderWorldCopies(){return this._renderWorldCopies&&!0===this.projection.supportsWorldCopies}set renderWorldCopies(e){void 0===e?e=!0:null===e&&(e=!1),this._renderWorldCopies=e;}get worldSize(){return this.tileSize*this.scale}get cameraWorldSize(){const e=Math.max(this._camera.getDistanceToElevation(this._averageElevation),Number.EPSILON);return this._worldSizeFromZoom(this._zoomFromMercatorZ(e))}get pixelsPerMeter(){return this.projection.pixelsPerMeter(this.center.lat,this.worldSize)}get cameraPixelsPerMeter(){return e.mercatorZfromAltitude(this.center.lat,this.cameraWorldSize)}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new e.pointGeometry(this.width,this.height)}get bearing(){return e.wrap(this.rotation,-180,180)}set bearing(e){this.rotation=e;}get rotation(){return -this.angle/Math.PI*180}set rotation(t){const i=-t*Math.PI/180;var o;this.angle!==i&&(this._unmodified=!1,this.angle=i,this._calcMatrices(),this.rotationMatrix=(o=new e.ARRAY_TYPE(4),e.ARRAY_TYPE!=Float32Array&&(o[1]=0,o[2]=0),o[0]=1,o[3]=1,o),function(e,t,i){var o=t[0],r=t[1],n=t[2],a=t[3],s=Math.sin(i),l=Math.cos(i);e[0]=o*l+n*s,e[1]=r*l+a*s,e[2]=o*-s+n*l,e[3]=r*-s+a*l;}(this.rotationMatrix,this.rotationMatrix,this.angle));}get pitch(){return this._pitch/Math.PI*180}set pitch(t){const i=e.clamp(t,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==i&&(this._unmodified=!1,this._pitch=i,this._calcMatrices());}get fov(){return this._fov/Math.PI*180}set fov(e){e=Math.max(.01,Math.min(60,e)),this._fov!==e&&(this._unmodified=!1,this._fov=e/180*Math.PI,this._calcMatrices());}get averageElevation(){return this._averageElevation}set averageElevation(e){this._averageElevation=e,this._calcFogMatrices(),this._distanceTileDataCache={};}get zoom(){return this._zoom}set zoom(e){const t=Math.min(Math.max(e,this.minZoom),this.maxZoom);this._zoom!==t&&(this._unmodified=!1,this._setZoom(t),this._updateSeaLevelZoom(),this._constrain(),this._calcMatrices());}_setZoom(e){this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom;}_updateCameraOnTerrain(){if(!this._elevation||!this._elevation.isDataAvailableAtPoint(this.locationCoordinate(this.center)))return this._centerAltitude=0,this._seaLevelZoom=null,void(this._centerAltitudeValidForExaggeration=void 0);const e=this._elevation;this._centerAltitude=e.getAtPointOrZero(this.locationCoordinate(this.center)),this._centerAltitudeValidForExaggeration=e.exaggeration(),this._updateSeaLevelZoom();}_updateSeaLevelZoom(){void 0!==this._centerAltitudeValidForExaggeration&&(this._seaLevelZoom=this._zoomFromMercatorZ((this.pixelsPerMeter*this._centerAltitude+this.cameraToCenterDistance)/this.worldSize));}sampleAverageElevation(){if(!this._elevation)return 0;const t=this._elevation,i=[[.5,.2],[.3,.5],[.5,.5],[.7,.5],[.5,.8]],o=this.horizonLineFromTop();let r=0,n=0;for(let a=0;a<i.length;a++){const s=new e.pointGeometry(i[a][0]*this.width,o+i[a][1]*(this.height-o)),l=t.pointCoordinate(s);if(!l)continue;const c=1/Math.hypot(l[0]-this._camera.position[0],l[1]-this._camera.position[1]);r+=l[3]*c,n+=c;}return 0===n?NaN:r/n}get center(){return this._center}set center(e){e.lat===this._center.lat&&e.lng===this._center.lng||(this._unmodified=!1,this._center=e,this._terrainEnabled()&&(\"ground\"===this.cameraElevationReference?this._updateCameraOnTerrain():this._updateZoomFromElevation()),this._constrain(),this._calcMatrices());}_updateZoomFromElevation(){if(null==this._seaLevelZoom||!this._elevation)return;const e=this._seaLevelZoom,t=this._elevation.getAtPointOrZero(this.locationCoordinate(this.center)),i=this.pixelsPerMeter/this.worldSize*t,o=this._mercatorZfromZoom(e),r=this._mercatorZfromZoom(this._maxZoom),n=Math.max(o-i,r);this._setZoom(this._zoomFromMercatorZ(n));}get padding(){return this._edgeInsets.toJSON()}set padding(e){this._edgeInsets.equals(e)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,e,1),this._calcMatrices());}computeZoomRelativeTo(t){const i=this.rayIntersectionCoordinate(this.pointRayIntersection(this.centerPoint,t.toAltitude()));let o;o=t.z<this._camera.position[2]?[i.x,i.y,i.z]:[t.x,t.y,t.z];const r=e.length(e.sub([],this._camera.position,o));return e.clamp(this._zoomFromMercatorZ(r),this._minZoom,this._maxZoom)}setFreeCameraOptions(t){if(!this.height)return;if(!t.position&&!t.orientation)return;this._updateCameraState();let i=!1;if(t.orientation&&!e.exactEquals(t.orientation,this._camera.orientation)&&(i=this._setCameraOrientation(t.orientation)),t.position){const o=[t.position.x,t.position.y,t.position.z];e.exactEquals$1(o,this._camera.position)||(this._setCameraPosition(o),i=!0);}i&&(this._updateStateFromCamera(),this.recenterOnTerrain());}getFreeCameraOptions(){this._updateCameraState();const t=this._camera.position,i=new Zo;return i.position=new e.MercatorCoordinate(t[0],t[1],t[2]),i.orientation=this._camera.orientation,i._elevation=this.elevation,i._renderWorldCopies=this.renderWorldCopies,i}_setCameraOrientation(t){if(!e.length$1(t))return !1;e.normalize$1(t,t);const i=e.transformQuat([],[0,0,-1],t),o=e.transformQuat([],[0,-1,0],t);if(o[2]<0)return !1;const r=jo(i,o);return !!r&&(this._camera.orientation=r,!0)}_setCameraPosition(t){const i=this.zoomScale(this.minZoom)*this.tileSize,o=this.zoomScale(this.maxZoom)*this.tileSize,r=this.cameraToCenterDistance;t[2]=e.clamp(t[2],r/o,r/i),this._camera.position=t;}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}get fovAboveCenter(){return this._fov*(.5+this.centerOffset.y/this.height)}isPaddingEqual(e){return this._edgeInsets.equals(e)}interpolatePadding(e,t,i){this._unmodified=!1,this._edgeInsets.interpolate(e,t,i),this._constrain(),this._calcMatrices();}coveringZoomLevel(e){const t=(e.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/e.tileSize));return Math.max(0,t)}getVisibleUnwrappedCoordinates(t){const i=[new e.UnwrappedTileID(0,t)];if(this.renderWorldCopies){const o=this.pointCoordinate(new e.pointGeometry(0,0)),r=this.pointCoordinate(new e.pointGeometry(this.width,0)),n=this.pointCoordinate(new e.pointGeometry(this.width,this.height)),a=this.pointCoordinate(new e.pointGeometry(0,this.height)),s=Math.floor(Math.min(o.x,r.x,n.x,a.x)),l=Math.floor(Math.max(o.x,r.x,n.x,a.x)),c=1;for(let o=s-c;o<=l+c;o++)0!==o&&i.push(new e.UnwrappedTileID(o,t));}return i}coveringTiles(t){let i=this.coveringZoomLevel(t);const o=i,r=this.elevation&&!t.isTerrainDEM,n=\"mercator\"===this.projection.name;if(void 0!==t.minzoom&&i<t.minzoom)return [];void 0!==t.maxzoom&&i>t.maxzoom&&(i=t.maxzoom);const a=this.locationCoordinate(this.center),s=this.center.lat,l=1<<i,c=[l*a.x,l*a.y,0],h=\"globe\"===this.projection.name,u=!h,_=e.Frustum.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,i,u),d=h?this._camera.mercatorPosition:this.pointCoordinate(this.getCameraPoint()),p=l*e.mercatorZfromAltitude(1,this.center.lat),m=this._camera.position[2]/e.mercatorZfromAltitude(1,this.center.lat),f=[l*d.x,l*d.y,m*(u?1:p)],g=this.cameraToCenterDistance/t.tileSize*(t.roundZoom?1:.502),v=this.pitch<=60&&this._edgeInsets.top<=this._edgeInsets.bottom&&!this._elevation&&!this.projection.isReprojectedInTileSpace?i:0,x=t.isTerrainDEM&&this._elevation?1e4*this._elevation.exaggeration():this._centerAltitude,y=t.isTerrainDEM?-x:this._elevation?this._elevation.getMinElevationBelowMSL():0,b=this.projection.isReprojectedInTileSpace?Xo(this):1,w=t=>{const i=1/4e4,o=new e.MercatorCoordinate(t.x+i,t.y,t.z),r=new e.MercatorCoordinate(t.x,t.y+i,t.z),n=t.toLngLat(),a=o.toLngLat(),s=r.toLngLat(),l=this.locationCoordinate(n),c=this.locationCoordinate(a),h=this.locationCoordinate(s),u=Math.hypot(c.x-l.x,c.y-l.y),_=Math.hypot(h.x-l.x,h.y-l.y);return Math.sqrt(u*_)*b/i},T=t=>{const i=x,o=y;return {aabb:e.tileAABB(this,l,0,0,0,t,o,i,this.projection),zoom:0,x:0,y:0,minZ:o,maxZ:i,wrap:t,fullyVisible:!1}},E=[];let C=[];const I=i,M=t.reparseOverscaled?o:i,S=e=>e*e,z=S((m-this._centerAltitude)*p),D=e=>{if(!this._elevation||!e.tileID||!n)return;const t=this._elevation.getMinMaxForTile(e.tileID),i=e.aabb;t?(i.min[2]=t.min,i.max[2]=t.max,i.center[2]=(i.min[2]+i.max[2])/2):(e.shouldSplit=P(e),e.shouldSplit||(i.min[2]=i.max[2]=i.center[2]=this._centerAltitude));},P=t=>{if(t.zoom<v)return !0;if(t.zoom===I)return !1;if(null!=t.shouldSplit)return t.shouldSplit;const i=t.aabb.distanceX(f),n=t.aabb.distanceY(f);let a=z,l=1;if(h){a=S(t.aabb.distanceZ(f));const i=Math.pow(2,t.zoom),o=e.latFromMercatorY((t.y+1)/i),r=e.latFromMercatorY(t.y/i),n=Math.min(Math.max(s,o),r),c=e.circumferenceAtLatitude(n)/e.circumferenceAtLatitude(s);if(l=n===s?1/Math.max(1,this._mercatorScaleRatio-.3):Math.min(1,c/this._mercatorScaleRatio),this.zoom<=e.GLOBE_ZOOM_THRESHOLD_MIN&&t.zoom===I-1&&c>=.9)return !0}else if(r&&(a=S(t.aabb.distanceZ(f)*p)),this.projection.isReprojectedInTileSpace&&o<=5){const i=Math.pow(2,t.zoom),o=w(new e.MercatorCoordinate((t.x+.5)/i,(t.y+.5)/i));l=o>.85?1:o;}const c=i*i+n*n+a;return c<S((1<<I-t.zoom)*g*l*((e,t)=>{if(t*S(.707)<e)return 1;const i=Math.sqrt(t/e);return i/(1.4144271570014144+(Math.pow(1.1,i-1.4144271570014144+1)-1)/(1.1-1)-1)})(Math.max(a,z),c))};if(this.renderWorldCopies)for(let e=1;e<=3;e++)E.push(T(-e)),E.push(T(e));for(E.push(T(0));E.length>0;){const o=E.pop(),a=o.x,s=o.y;let u=o.fullyVisible;if(!u){const e=o.aabb.intersects(_);if(0===e)continue;u=2===e;}if(o.zoom!==I&&P(o))for(let t=0;t<4;t++){const i=(a<<1)+t%2,c=(s<<1)+(t>>1),_={aabb:n?o.aabb.quadrant(t):e.tileAABB(this,l,o.zoom+1,i,c,o.wrap,o.minZ,o.maxZ,this.projection),zoom:o.zoom+1,x:i,y:c,wrap:o.wrap,fullyVisible:u,tileID:void 0,shouldSplit:void 0,minZ:o.minZ,maxZ:o.maxZ};r&&!h&&(_.tileID=new e.OverscaledTileID(o.zoom+1===I?M:o.zoom+1,o.wrap,o.zoom+1,i,c),D(_)),E.push(_);}else {const r=o.zoom===I?M:o.zoom;if(t.minzoom&&t.minzoom>r)continue;const n=c[0]-(.5+a+(o.wrap<<o.zoom))*(1<<i-o.zoom),l=c[1]-.5-s,h=o.tileID?o.tileID:new e.OverscaledTileID(r,o.wrap,o.zoom,a,s);C.push({tileID:h,distanceSq:n*n+l*l});}}if(this.fogCullDistSq){const i=this.fogCullDistSq,o=this.horizonLineFromTop();C=C.filter((r=>{const n=[0,0,0,1],a=[e.EXTENT,e.EXTENT,0,1],s=this.calculateFogTileMatrix(r.tileID.toUnwrapped());e.transformMat4$1(n,n,s),e.transformMat4$1(a,a,s);const l=e.getAABBPointSquareDist(n,a);if(0===l)return !0;let c=!1;const h=this._elevation;if(h&&l>i&&0!==o){const i=this.calculateProjMatrix(r.tileID.toUnwrapped());let n;t.isTerrainDEM||(n=h.getMinMaxForTile(r.tileID)),n||(n={min:y,max:x});const a=e.furthestTileCorner(this.rotation),s=[a[0]*e.EXTENT,a[1]*e.EXTENT,n.max];e.transformMat4(s,s,i),c=(1-s[1])*this.height*.5<o;}return l<i||c}));}return C.sort(((e,t)=>e.distanceSq-t.distanceSq)).map((e=>e.tileID))}resize(e,t){this.width=e,this.height=t,this.pixelsToGLUnits=[2/e,-2/t],this._constrain(),this._calcMatrices();}get unmodified(){return this._unmodified}zoomScale(e){return Math.pow(2,e)}scaleZoom(e){return Math.log(e)/Math.LN2}project(t){const i=e.clamp(t.lat,-e.MAX_MERCATOR_LATITUDE,e.MAX_MERCATOR_LATITUDE),o=this.projection.project(t.lng,i);return new e.pointGeometry(o.x*this.worldSize,o.y*this.worldSize)}unproject(e){return this.projection.unproject(e.x/this.worldSize,e.y/this.worldSize)}get point(){return this.project(this.center)}setLocationAtPoint(t,i){let o,r;const n=this.centerPoint;if(\"globe\"===this.projection.name){const e=this.worldSize;o=(i.x-n.x)/e,r=(i.y-n.y)/e;}else {const e=this.pointCoordinate(i),t=this.pointCoordinate(n);o=e.x-t.x,r=e.y-t.y;}const a=this.locationCoordinate(t);this.setLocation(new e.MercatorCoordinate(a.x-o,a.y-r));}setLocation(e){this.center=this.coordinateLocation(e),this.projection.wrap&&(this.center=this.center.wrap());}locationPoint(e){return this.projection.locationPoint(this,e)}locationPoint3D(e){return this.projection.locationPoint(this,e,!0)}pointLocation(e){return this.coordinateLocation(this.pointCoordinate(e))}pointLocation3D(e){return this.coordinateLocation(this.pointCoordinate3D(e))}locationCoordinate(t,i){const o=i?e.mercatorZfromAltitude(i,t.lat):void 0,r=this.projection.project(t.lng,t.lat);return new e.MercatorCoordinate(r.x,r.y,o)}coordinateLocation(e){return this.projection.unproject(e.x,e.y)}pointRayIntersection(t,i){const o=null!=i?i:this._centerAltitude,r=[t.x,t.y,0,1],n=[t.x,t.y,1,1];e.transformMat4$1(r,r,this.pixelMatrixInverse),e.transformMat4$1(n,n,this.pixelMatrixInverse);const a=n[3];e.scale$1(r,r,1/r[3]),e.scale$1(n,n,1/a);const s=r[2],l=n[2];return {p0:r,p1:n,t:s===l?0:(o-s)/(l-s)}}screenPointToMercatorRay(t){const i=[t.x,t.y,0,1],o=[t.x,t.y,1,1];return e.transformMat4$1(i,i,this.pixelMatrixInverse),e.transformMat4$1(o,o,this.pixelMatrixInverse),e.scale$1(i,i,1/i[3]),e.scale$1(o,o,1/o[3]),i[2]=e.mercatorZfromAltitude(i[2],this._center.lat)*this.worldSize,o[2]=e.mercatorZfromAltitude(o[2],this._center.lat)*this.worldSize,e.scale$1(i,i,1/this.worldSize),e.scale$1(o,o,1/this.worldSize),new e.Ray([i[0],i[1],i[2]],e.normalize([],e.sub([],o,i)))}rayIntersectionCoordinate(t){const{p0:i,p1:o,t:r}=t,n=e.mercatorZfromAltitude(i[2],this._center.lat),a=e.mercatorZfromAltitude(o[2],this._center.lat);return new e.MercatorCoordinate(e.number(i[0],o[0],r)/this.worldSize,e.number(i[1],o[1],r)/this.worldSize,e.number(n,a,r))}pointCoordinate(e,t=this._centerAltitude){return this.projection.pointCoordinate(this,e.x,e.y,t)}pointCoordinate3D(t){if(!this.elevation)return this.pointCoordinate(t);let i=this.projection.pointCoordinate3D(this,t.x,t.y);if(i)return new e.MercatorCoordinate(i[0],i[1],i[2]);let o=0,r=this.horizonLineFromTop();if(t.y>r)return this.pointCoordinate(t);const n=.02*r,a=t.clone();for(let t=0;t<10&&r-o>n;t++){a.y=e.number(o,r,.66);const t=this.projection.pointCoordinate3D(this,a.x,a.y);t?(r=a.y,i=t):o=a.y;}return i?new e.MercatorCoordinate(i[0],i[1],i[2]):this.pointCoordinate(t)}isPointAboveHorizon(e){return this.projection.isPointAboveHorizon(this,e)}_coordinatePoint(t,i){const o=i&&this.elevation?this.elevation.getAtPointOrZero(t,this._centerAltitude):this._centerAltitude,r=[t.x*this.worldSize,t.y*this.worldSize,o+t.toAltitude(),1];return e.transformMat4$1(r,r,this.pixelMatrix),r[3]>0?new e.pointGeometry(r[0]/r[3],r[1]/r[3]):new e.pointGeometry(Number.MAX_VALUE,Number.MAX_VALUE)}_getBounds(t,i){const o=new e.pointGeometry(this._edgeInsets.left,this._edgeInsets.top),r=new e.pointGeometry(this.width-this._edgeInsets.right,this._edgeInsets.top),n=new e.pointGeometry(this.width-this._edgeInsets.right,this.height-this._edgeInsets.bottom),a=new e.pointGeometry(this._edgeInsets.left,this.height-this._edgeInsets.bottom);let s=this.pointCoordinate(o,t),l=this.pointCoordinate(r,t);const c=this.pointCoordinate(n,i),h=this.pointCoordinate(a,i),u=(e,t)=>(t.y-e.y)/(t.x-e.x);return s.y>1&&l.y>=0?s=new e.MercatorCoordinate((1-h.y)/u(h,s)+h.x,1):s.y<0&&l.y<=1&&(s=new e.MercatorCoordinate(-h.y/u(h,s)+h.x,0)),l.y>1&&s.y>=0?l=new e.MercatorCoordinate((1-c.y)/u(c,l)+c.x,1):l.y<0&&s.y<=1&&(l=new e.MercatorCoordinate(-c.y/u(c,l)+c.x,0)),(new e.LngLatBounds).extend(this.coordinateLocation(s)).extend(this.coordinateLocation(l)).extend(this.coordinateLocation(h)).extend(this.coordinateLocation(c))}_getBounds3D(){const e=this.elevation;if(!e.visibleDemTiles.length)return this._getBounds(0,0);const t=e.visibleDemTiles.reduce(((e,t)=>{if(t.dem){const i=t.dem.tree;e.min=Math.min(e.min,i.minimums[0]),e.max=Math.max(e.max,i.maximums[0]);}return e}),{min:Number.MAX_VALUE,max:0});return this._getBounds(t.min*e.exaggeration(),t.max*e.exaggeration())}getBounds(){return this._terrainEnabled()?this._getBounds3D():this._getBounds(0,0)}horizonLineFromTop(e=!0){const t=this.height/2/Math.tan(this._fov/2)/Math.tan(Math.max(this._pitch,.1))+this.centerOffset.y,i=this.height/2-t*(1-this._horizonShift);return e?Math.max(0,i):i}getMaxBounds(){return this.maxBounds}setMaxBounds(t){this.maxBounds=t,this.minLat=-e.MAX_MERCATOR_LATITUDE,this.maxLat=e.MAX_MERCATOR_LATITUDE,this.minLng=-180,this.maxLng=180,t&&(this.minLat=t.getSouth(),this.maxLat=t.getNorth(),this.minLng=t.getWest(),this.maxLng=t.getEast(),this.maxLng<this.minLng&&(this.maxLng+=360)),this.worldMinX=e.mercatorXfromLng(this.minLng)*this.tileSize,this.worldMaxX=e.mercatorXfromLng(this.maxLng)*this.tileSize,this.worldMinY=e.mercatorYfromLat(this.maxLat)*this.tileSize,this.worldMaxY=e.mercatorYfromLat(this.minLat)*this.tileSize,this._constrain();}calculatePosMatrix(e,t){return this.projection.createTileMatrix(this,t,e)}calculateDistanceTileData(t){const i=t.key,o=this._distanceTileDataCache;if(o[i])return o[i];const r=t.canonical,n=1/this.height,a=this.cameraWorldSize/this.zoomScale(r.z),s=(r.x+Math.pow(2,r.z)*t.wrap)*a,l=r.y*a,c=this.point,h=this.angle,u=Math.sin(-h),_=-Math.cos(-h);return o[i]={bearing:[u,_],center:[(c.x-s)*n,(c.y-l)*n],scale:a/e.EXTENT*n},o[i]}calculateFogTileMatrix(t){const i=t.key,o=this._fogTileMatrixCache;if(o[i])return o[i];const r=this.projection.createTileMatrix(this,this.cameraWorldSize,t);return e.multiply(r,this.worldToFogMatrix,r),o[i]=new Float32Array(r),o[i]}calculateProjMatrix(t,i=!1){const o=t.key,r=i?this._alignedProjMatrixCache:this._projMatrixCache;if(r[o])return r[o];const n=this.calculatePosMatrix(t,this.worldSize);return e.multiply(n,this.projection.isReprojectedInTileSpace?this.mercatorMatrix:i?this.alignedProjMatrix:this.projMatrix,n),r[o]=new Float32Array(n),r[o]}calculatePixelsToTileUnitsMatrix(t){const i=t.tileID.key,o=this._pixelsToTileUnitsCache;if(o[i])return o[i];const r=function(t,i){const{scale:o}=t.tileTransform,r=o*e.EXTENT/(t.tileSize*Math.pow(2,i.zoom-t.tileID.overscaledZ+t.tileID.canonical.z));return n=new Float32Array(4),l=(a=i.inverseAdjustmentMatrix)[1],c=a[2],h=a[3],_=(s=[r,r])[1],n[0]=a[0]*(u=s[0]),n[1]=l*u,n[2]=c*_,n[3]=h*_,n;var n,a,s,l,c,h,u,_;}(t,this);return o[i]=r,o[i]}customLayerMatrix(){return this.mercatorMatrix.slice()}recenterOnTerrain(){if(!this._elevation||\"globe\"===this.projection.name)return;const t=this._elevation;this._updateCameraState();const i=e.mercatorZfromAltitude(1,this._center.lat)*this.worldSize,o=this._computeCameraPosition(i),r=this._camera.forward(),n=e.mercatorZfromAltitude(1,this._center.lat);o[2]/=n,r[2]/=n,e.normalize(r,r);const a=t.raycast(o,r,t.exaggeration());if(a){const t=e.scaleAndAdd([],o,r,a),i=new e.MercatorCoordinate(t[0],t[1],e.mercatorZfromAltitude(t[2],e.latFromMercatorY(t[1]))),s=(i.z+e.length([i.x-o[0],i.y-o[1],i.z-o[2]*n]))*this._pixelsPerMercatorPixel;this._seaLevelZoom=this._zoomFromMercatorZ(s),this._centerAltitude=i.toAltitude(),this._center=this.coordinateLocation(i),this._updateZoomFromElevation(),this._constrain(),this._calcMatrices();}}_constrainCameraAltitude(){if(!this._elevation)return;const t=this._elevation;this._updateCameraState();const i=e.mercatorZfromAltitude(1,this._center.lat)*this.worldSize,o=this._computeCameraPosition(i),r=t.getAtPointOrZero(new e.MercatorCoordinate(...o)),n=this._minimumHeightOverTerrain()*Math.cos(e.degToRad(this._maxPitch)),a=this._camera.position[2]-this.pixelsPerMeter/this.worldSize*r;if(a<n){const t=this.locationCoordinate(this._center,this._centerAltitude),i=[t.x-o[0],t.y-o[1],t.z-o[2]],r=e.length(i);i[2]-=(n-a)/this._pixelsPerMercatorPixel;const s=e.length(i);if(0===s)return;e.scale$2(i,i,r/s*this._pixelsPerMercatorPixel),this._camera.position=[t.x-i[0],t.y-i[1],t.z*this._pixelsPerMercatorPixel-i[2]],this._camera.orientation=jo(i,this._camera.up()),this._updateStateFromCamera();}}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;const t=\"globe\"===this.projection.name||this.mercatorFromTransition;if(this.projection.isReprojectedInTileSpace||t){const i=this.center;return i.lat=e.clamp(i.lat,this.minLat,this.maxLat),(this.maxBounds||!this.renderWorldCopies&&!t)&&(i.lng=e.clamp(i.lng,this.minLng,this.maxLng)),this.center=i,void(this._constraining=!1)}const i=this._unmodified,{x:o,y:r}=this.point;let n=0,a=o,s=r;const l=this.width/2,c=this.height/2,h=this.worldMinY*this.scale,u=this.worldMaxY*this.scale;if(r-c<h&&(s=h+c),r+c>u&&(s=u-c),u-h<this.height&&(n=Math.max(n,this.height/(u-h)),s=(u+h)/2),this.maxBounds||!this._renderWorldCopies||!this.projection.wrap){const e=this.worldMinX*this.scale,t=this.worldMaxX*this.scale,i=this.worldSize/2-(e+t)/2;a=(o+i+this.worldSize)%this.worldSize-i,a-l<e&&(a=e+l),a+l>t&&(a=t-l),t-e<this.width&&(n=Math.max(n,this.width/(t-e)),a=(t+e)/2);}a===o&&s===r||(this.center=this.unproject(new e.pointGeometry(a,s))),n&&(this.zoom+=this.scaleZoom(n)),this._constrainCameraAltitude(),this._unmodified=i,this._constraining=!1;}_minZoomForBounds(){let e=Math.max(0,this.scaleZoom(this.height/(this.worldMaxY-this.worldMinY)));return this.maxBounds&&(e=Math.max(e,this.scaleZoom(this.width/(this.worldMaxX-this.worldMinX)))),e}_maxCameraBoundsDistance(){return this._mercatorZfromZoom(this._minZoomForBounds())}_calcMatrices(){if(!this.height)return;const t=this.centerOffset,i=this.pixelsPerMeter;\"globe\"===this.projection.name&&(this._mercatorScaleRatio=e.mercatorZfromAltitude(1,this.center.lat)/e.mercatorZfromAltitude(1,e.GLOBE_SCALE_MATCH_LATITUDE));const o=qo(this.projection,this.zoom,this.width,this.height,1024);this._pixelsPerMercatorPixel=this.projection.pixelSpaceConversion(this.center.lat,this.worldSize,o),this.cameraToCenterDistance=.5/Math.tan(.5*this._fov)*this.height*this._pixelsPerMercatorPixel,this._updateCameraState(),this._farZ=this.projection.farthestPixelDistance(this),this._nearZ=this.height/50;const r=this._camera.getWorldToCamera(this.worldSize,\"meters\"===this.projection.zAxisUnit?i:1),n=this._camera.getCameraToClipPerspective(this._fov,this.width/this.height,this._nearZ,this._farZ);n[8]=2*-t.x/this.width,n[9]=2*t.y/this.height;let a=e.mul([],n,r);if(this.projection.isReprojectedInTileSpace){const t=this.locationCoordinate(this.center),i=e.identity([]);e.translate(i,i,[t.x*this.worldSize,t.y*this.worldSize,0]),e.multiply(i,i,Wo(this)),e.translate(i,i,[-t.x*this.worldSize,-t.y*this.worldSize,0]),e.multiply(a,a,i),this.inverseAdjustmentMatrix=function(e){const t=Wo(e,!0);return v([],[t[0],t[1],t[4],t[5]])}(this);}else this.inverseAdjustmentMatrix=[1,0,0,1];this.mercatorMatrix=e.scale([],a,[this.worldSize,this.worldSize,this.worldSize/i,1]),this.projMatrix=a,this.invProjMatrix=e.invert(new Float64Array(16),this.projMatrix);const s=e.invert([],n);this.frustumCorners=e.FrustumCorners.fromInvProjectionMatrix(s,this.horizonLineFromTop(),this.height);const l=new Float32Array(16);e.identity(l),e.scale(l,l,[1,-1,1]),e.rotateX(l,l,this._pitch),e.rotateZ(l,l,this.angle);const c=e.perspective(new Float32Array(16),this._fov,this.width/this.height,this._nearZ,this._farZ),h=(Math.PI/2-this._pitch)*(this.height/this._fov)*this._horizonShift;c[8]=2*-t.x/this.width,c[9]=2*(t.y+h)/this.height,this.skyboxMatrix=e.multiply(l,c,l);const u=this.point,_=u.x,d=u.y,p=this.width%2/2,m=this.height%2/2,f=Math.cos(this.angle),g=Math.sin(this.angle),x=_-Math.round(_)+f*p+g*m,y=d-Math.round(d)+f*m+g*p,b=new Float64Array(a);if(e.translate(b,b,[x>.5?x-1:x,y>.5?y-1:y,0]),this.alignedProjMatrix=b,a=e.create(),e.scale(a,a,[this.width/2,-this.height/2,1]),e.translate(a,a,[1,-1,0]),this.labelPlaneMatrix=a,a=e.create(),e.scale(a,a,[1,-1,1]),e.translate(a,a,[-1,-1,0]),e.scale(a,a,[2/this.width,2/this.height,1]),this.glCoordMatrix=a,this.pixelMatrix=e.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),this._calcFogMatrices(),this._distanceTileDataCache={},a=e.invert(new Float64Array(16),this.pixelMatrix),!a)throw new Error(\"failed to invert matrix\");if(this.pixelMatrixInverse=a,\"globe\"===this.projection.name||this.mercatorFromTransition){this.globeMatrix=e.calculateGlobeMatrix(this);const t=[this.globeMatrix[12],this.globeMatrix[13],this.globeMatrix[14]];this.globeCenterInViewSpace=e.transformMat4(t,t,r),this.globeRadius=this.worldSize/2/Math.PI-1;}else this.globeMatrix=a;this._projMatrixCache={},this._alignedProjMatrixCache={},this._pixelsToTileUnitsCache={};}_calcFogMatrices(){this._fogTileMatrixCache={};const t=this.cameraWorldSize,i=this.cameraPixelsPerMeter,o=this._camera.position,r=1/this.height/this._pixelsPerMercatorPixel,n=[t,t,i];e.scale$2(n,n,r),e.scale$2(o,o,-1),e.multiply$2(o,o,n);const a=e.create();e.translate(a,a,o),e.scale(a,a,n),this.mercatorFogMatrix=a,this.worldToFogMatrix=this._camera.getWorldToCameraPosition(t,i,r);}_computeCameraPosition(e){const t=(e=e||this.pixelsPerMeter)/this.pixelsPerMeter,i=this._camera.forward(),o=this.point,r=this._mercatorZfromZoom(this._seaLevelZoom?this._seaLevelZoom:this._zoom)*t-e/this.worldSize*this._centerAltitude;return [o.x/this.worldSize-i[0]*r,o.y/this.worldSize-i[1]*r,e/this.worldSize*this._centerAltitude-i[2]*r]}_updateCameraState(){this.height&&(this._camera.setPitchBearing(this._pitch,this.angle),this._camera.position=this._computeCameraPosition());}_translateCameraConstrained(t){const i=this._maxCameraBoundsDistance()*Math.cos(this._pitch),o=t[2];let r=1;o>0&&(r=Math.min((i-this._camera.position[2])/o,1)),this._camera.position=e.scaleAndAdd([],this._camera.position,t,r),this._updateStateFromCamera(),this.projection.wrap&&(this.center=this.center.wrap());}_updateStateFromCamera(){const t=this._camera.position,i=this._camera.forward(),{pitch:o,bearing:r}=this._camera.getPitchBearing(),n=e.mercatorZfromAltitude(this._centerAltitude,this.center.lat)*this._pixelsPerMercatorPixel,a=this._mercatorZfromZoom(this._maxZoom)*Math.cos(e.degToRad(this._maxPitch)),s=Math.max((t[2]-n)/Math.cos(o),a),l=this._zoomFromMercatorZ(s);e.scaleAndAdd(t,t,i,s),this._pitch=e.clamp(o,e.degToRad(this.minPitch),e.degToRad(this.maxPitch)),this.angle=e.wrap(r,-Math.PI,Math.PI),this._setZoom(e.clamp(l,this._minZoom,this._maxZoom)),this._updateSeaLevelZoom(),this._center=this.coordinateLocation(new e.MercatorCoordinate(t[0],t[1],t[2])),this._unmodified=!1,this._constrain(),this._calcMatrices();}_worldSizeFromZoom(e){return Math.pow(2,e)*this.tileSize}_mercatorZfromZoom(e){return this.cameraToCenterDistance/this._worldSizeFromZoom(e)}_minimumHeightOverTerrain(){const e=Math.min((null!=this._seaLevelZoom?this._seaLevelZoom:this._zoom)+2,this._maxZoom);return this._mercatorZfromZoom(e)}_zoomFromMercatorZ(e){return this.scaleZoom(this.cameraToCenterDistance/(e*this.tileSize))}_terrainEnabled(){return !(!this._elevation||!this.projection.supportsTerrain&&(e.warnOnce(\"Terrain is not yet supported with alternate projections. Use mercator or globe to enable terrain.\"),1))}anyCornerOffEdge(t,i){const o=Math.min(t.x,i.x),r=Math.max(t.x,i.x),n=Math.min(t.y,i.y),a=Math.max(t.y,i.y);if(n<this.horizonLineFromTop(!1))return !0;if(\"mercator\"!==this.projection.name)return !1;const s=[new e.pointGeometry(o,n),new e.pointGeometry(r,a),new e.pointGeometry(o,a),new e.pointGeometry(r,n)],l=this.renderWorldCopies?-3:0,c=this.renderWorldCopies?4:1;for(const e of s){const t=this.pointRayIntersection(e);if(t.t<0)return !0;const i=this.rayIntersectionCoordinate(t);if(i.x<l||i.y<0||i.x>c||i.y>1)return !0}return !1}isHorizonVisible(){return this.pitch+e.radToDeg(this.fovAboveCenter)>88||this.anyCornerOffEdge(new e.pointGeometry(0,0),new e.pointGeometry(this.width,this.height))}zoomDeltaToMovement(t,i){const o=e.length(e.sub([],this._camera.position,t)),r=this._zoomFromMercatorZ(o)+i;return o-this._mercatorZfromZoom(r)}getCameraPoint(){if(\"globe\"===this.projection.name){const t=function(t,i){const o=[t[0],t[1],t[2],1];e.transformMat4$1(o,o,i);const r=Math.max(o[3],1e-6);return [o[0]/r,o[1]/r,o[2]/r,r]}([this.globeMatrix[12],this.globeMatrix[13],this.globeMatrix[14]],this.pixelMatrix);return new e.pointGeometry(t[0],t[1])}{const t=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new e.pointGeometry(0,t))}}getCameraToCenterDistance(e){const t=qo(e,this.zoom,this.width,this.height,1024),i=e.pixelSpaceConversion(this.center.lat,this.worldSize,t);return .5/Math.tan(.5*this._fov)*this.height*i}}function Jo(e,t){let i=!1,o=null;const r=()=>{o=null,i&&(e(),o=setTimeout(r,t),i=!1);};return ()=>(i=!0,o||r(),o)}class Qo{constructor(t){this._hashName=t&&encodeURIComponent(t),e.bindAll([\"_getCurrentHash\",\"_onHashChange\",\"_updateHash\"],this),this._updateHash=Jo(this._updateHashUnthrottled.bind(this),300);}addTo(t){return this._map=t,e.window.addEventListener(\"hashchange\",this._onHashChange,!1),t.on(\"moveend\",this._updateHash),this}remove(){return this._map?(this._map.off(\"moveend\",this._updateHash),e.window.removeEventListener(\"hashchange\",this._onHashChange,!1),clearTimeout(this._updateHash()),this._map=void 0,this):this}getHashString(){const t=this._map;if(!t)return \"\";const i=er(t);if(this._hashName){const t=this._hashName;let o=!1;const r=e.window.location.hash.slice(1).split(\"&\").map((e=>{const r=e.split(\"=\")[0];return r===t?(o=!0,`${r}=${i}`):e})).filter((e=>e));return o||r.push(`${t}=${i}`),`#${r.join(\"&\")}`}return `#${i}`}_getCurrentHash(){const t=e.window.location.hash.replace(\"#\",\"\");if(this._hashName){let e;return t.split(\"&\").map((e=>e.split(\"=\"))).forEach((t=>{t[0]===this._hashName&&(e=t);})),(e&&e[1]||\"\").split(\"/\")}return t.split(\"/\")}_onHashChange(){const e=this._map;if(!e)return !1;const t=this._getCurrentHash();if(t.length>=3&&!t.some((e=>isNaN(e)))){const i=e.dragRotate.isEnabled()&&e.touchZoomRotate.isEnabled()?+(t[3]||0):e.getBearing();return e.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:i,pitch:+(t[4]||0)}),!0}return !1}_updateHashUnthrottled(){const t=e.window.location.href.replace(/(#.+)?$/,this.getHashString());e.window.history.replaceState(e.window.history.state,null,t);}}function er(e,t){const i=e.getCenter(),o=Math.round(100*e.getZoom())/100,r=Math.ceil((o*Math.LN2+Math.log(512/360/.5))/Math.LN10),n=Math.pow(10,r),a=Math.round(i.lng*n)/n,s=Math.round(i.lat*n)/n,l=e.getBearing(),c=e.getPitch();let h=t?`/${a}/${s}/${o}`:`${o}/${s}/${a}`;return (l||c)&&(h+=\"/\"+Math.round(10*l)/10),c&&(h+=`/${Math.round(c)}`),h}const tr={linearity:.3,easing:e.bezier(0,0,.3,1)},ir=e.extend({deceleration:2500,maxSpeed:1400},tr),or=e.extend({deceleration:20,maxSpeed:1400},tr),rr=e.extend({deceleration:1e3,maxSpeed:360},tr),nr=e.extend({deceleration:1e3,maxSpeed:90},tr);class ar{constructor(e){this._map=e,this.clear();}clear(){this._inertiaBuffer=[];}record(t){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:e.exported.now(),settings:t});}_drainInertiaBuffer(){const t=this._inertiaBuffer,i=e.exported.now();for(;t.length>0&&i-t[0].time>160;)t.shift();}_onMoveEnd(t){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const i={zoom:0,bearing:0,pitch:0,pan:new e.pointGeometry(0,0),pinchAround:void 0,around:void 0};for(const{settings:e}of this._inertiaBuffer)i.zoom+=e.zoomDelta||0,i.bearing+=e.bearingDelta||0,i.pitch+=e.pitchDelta||0,e.panDelta&&i.pan._add(e.panDelta),e.around&&(i.around=e.around),e.pinchAround&&(i.pinchAround=e.pinchAround);const o=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,r={};if(i.pan.mag()){const n=lr(i.pan.mag(),o,e.extend({},ir,t||{}));r.offset=i.pan.mult(n.amount/i.pan.mag()),r.center=this._map.transform.center,sr(r,n);}if(i.zoom){const e=lr(i.zoom,o,or);r.zoom=this._map.transform.zoom+e.amount,sr(r,e);}if(i.bearing){const t=lr(i.bearing,o,rr);r.bearing=this._map.transform.bearing+e.clamp(t.amount,-179,179),sr(r,t);}if(i.pitch){const e=lr(i.pitch,o,nr);r.pitch=this._map.transform.pitch+e.amount,sr(r,e);}if(r.zoom||r.bearing){const e=void 0===i.pinchAround?i.around:i.pinchAround;r.around=e?this._map.unproject(e):this._map.getCenter();}return this.clear(),r.noMoveStart=!0,r}}function sr(e,t){(!e.duration||e.duration<t.duration)&&(e.duration=t.duration,e.easing=t.easing);}function lr(t,i,o){const{maxSpeed:r,linearity:n,deceleration:a}=o,s=e.clamp(t*n/(i/1e3),-r,r),l=Math.abs(s)/(a*n);return {easing:o.easing,duration:1e3*l,amount:s*(l/2)}}class cr extends e.Event{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(t,i,o,r={}){const n=p(i.getCanvasContainer(),o),a=i.unproject(n);super(t,e.extend({point:n,lngLat:a,originalEvent:o},r)),this._defaultPrevented=!1,this.target=i;}}class hr extends e.Event{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(t,i,o){const r=\"touchend\"===t?o.changedTouches:o.touches,n=m(i.getCanvasContainer(),r),a=n.map((e=>i.unproject(e))),s=n.reduce(((e,t,i,o)=>e.add(t.div(o.length))),new e.pointGeometry(0,0));super(t,{points:n,point:s,lngLats:a,lngLat:i.unproject(s),originalEvent:o}),this._defaultPrevented=!1;}}class ur extends e.Event{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(e,t,i){super(e,{originalEvent:i}),this._defaultPrevented=!1;}}class _r{constructor(e,t){this._map=e,this._clickTolerance=t.clickTolerance;}reset(){this._mousedownPos=void 0;}wheel(e){return this._firePreventable(new ur(e.type,this._map,e))}mousedown(e,t){return this._mousedownPos=t,this._firePreventable(new cr(e.type,this._map,e))}mouseup(e){this._map.fire(new cr(e.type,this._map,e));}preclick(t){const i=e.extend({},t);i.type=\"preclick\",this._map.fire(new cr(i.type,this._map,i));}click(e,t){this._mousedownPos&&this._mousedownPos.dist(t)>=this._clickTolerance||(this.preclick(e),this._map.fire(new cr(e.type,this._map,e)));}dblclick(e){return this._firePreventable(new cr(e.type,this._map,e))}mouseover(e){this._map.fire(new cr(e.type,this._map,e));}mouseout(e){this._map.fire(new cr(e.type,this._map,e));}touchstart(e){return this._firePreventable(new hr(e.type,this._map,e))}touchmove(e){this._map.fire(new hr(e.type,this._map,e));}touchend(e){this._map.fire(new hr(e.type,this._map,e));}touchcancel(e){this._map.fire(new hr(e.type,this._map,e));}_firePreventable(e){if(this._map.fire(e),e.defaultPrevented)return {}}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class dr{constructor(e){this._map=e;}reset(){this._delayContextMenu=!1,this._contextMenuEvent=void 0;}mousemove(e){this._map.fire(new cr(e.type,this._map,e));}mousedown(){this._delayContextMenu=!0;}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new cr(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent);}contextmenu(e){this._delayContextMenu?this._contextMenuEvent=e:this._map.fire(new cr(e.type,this._map,e)),this._map.listens(\"contextmenu\")&&e.preventDefault();}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class pr{constructor(e,t){this._map=e,this._el=e.getCanvasContainer(),this._container=e.getContainer(),this._clickTolerance=t.clickTolerance||1;}isEnabled(){return !!this._enabled}isActive(){return !!this._active}enable(){this.isEnabled()||(this._enabled=!0);}disable(){this.isEnabled()&&(this._enabled=!1);}mousedown(e,t){this.isEnabled()&&e.shiftKey&&0===e.button&&(h(),this._startPos=this._lastPos=t,this._active=!0);}mousemoveWindow(e,t){if(!this._active)return;const i=t;if(this._lastPos.equals(i)||!this._box&&i.dist(this._startPos)<this._clickTolerance)return;const o=this._startPos;this._lastPos=i,this._box||(this._box=n(\"div\",\"mapboxgl-boxzoom\",this._container),this._container.classList.add(\"mapboxgl-crosshair\"),this._fireEvent(\"boxzoomstart\",e));const r=Math.min(o.x,i.x),a=Math.max(o.x,i.x),s=Math.min(o.y,i.y),l=Math.max(o.y,i.y);this._map._requestDomTask((()=>{this._box&&(this._box.style.transform=`translate(${r}px,${s}px)`,this._box.style.width=a-r+\"px\",this._box.style.height=l-s+\"px\");}));}mouseupWindow(t,i){if(!this._active)return;if(0!==t.button)return;const o=this._startPos,r=i;if(this.reset(),d(),o.x!==r.x||o.y!==r.y)return this._map.fire(new e.Event(\"boxzoomend\",{originalEvent:t})),{cameraAnimation:e=>e.fitScreenCoordinates(o,r,this._map.getBearing(),{linear:!1})};this._fireEvent(\"boxzoomcancel\",t);}keydown(e){this._active&&27===e.keyCode&&(this.reset(),this._fireEvent(\"boxzoomcancel\",e));}blur(){this.reset();}reset(){this._active=!1,this._container.classList.remove(\"mapboxgl-crosshair\"),this._box&&(this._box.remove(),this._box=null),u(),delete this._startPos,delete this._lastPos;}_fireEvent(t,i){return this._map.fire(new e.Event(t,{originalEvent:i}))}}function mr(e,t){const i={};for(let o=0;o<e.length;o++)i[e[o].identifier]=t[o];return i}class fr{constructor(e){this.reset(),this.numTouches=e.numTouches;}reset(){this.centroid=void 0,this.startTime=0,this.touches={},this.aborted=!1;}touchstart(t,i,o){(this.centroid||o.length>this.numTouches)&&(this.aborted=!0),this.aborted||(0===this.startTime&&(this.startTime=t.timeStamp),o.length===this.numTouches&&(this.centroid=function(t){const i=new e.pointGeometry(0,0);for(const e of t)i._add(e);return i.div(t.length)}(i),this.touches=mr(o,i)));}touchmove(e,t,i){if(this.aborted||!this.centroid)return;const o=mr(i,t);for(const e in this.touches){const t=this.touches[e],i=o[e];(!i||i.dist(t)>30)&&(this.aborted=!0);}}touchend(e,t,i){if((!this.centroid||e.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){const e=!this.aborted&&this.centroid;if(this.reset(),e)return e}}}class gr{constructor(e){this.singleTap=new fr(e),this.numTaps=e.numTaps,this.reset();}reset(){this.lastTime=1/0,this.lastTap=void 0,this.count=0,this.singleTap.reset();}touchstart(e,t,i){this.singleTap.touchstart(e,t,i);}touchmove(e,t,i){this.singleTap.touchmove(e,t,i);}touchend(e,t,i){const o=this.singleTap.touchend(e,t,i);if(o){const t=e.timeStamp-this.lastTime<500,i=!this.lastTap||this.lastTap.dist(o)<30;if(t&&i||this.reset(),this.count++,this.lastTime=e.timeStamp,this.lastTap=o,this.count===this.numTaps)return this.reset(),o}}}class vr{constructor(){this._zoomIn=new gr({numTouches:1,numTaps:2}),this._zoomOut=new gr({numTouches:2,numTaps:1}),this.reset();}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset();}touchstart(e,t,i){this._zoomIn.touchstart(e,t,i),this._zoomOut.touchstart(e,t,i);}touchmove(e,t,i){this._zoomIn.touchmove(e,t,i),this._zoomOut.touchmove(e,t,i);}touchend(e,t,i){const o=this._zoomIn.touchend(e,t,i),r=this._zoomOut.touchend(e,t,i);return o?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:t.getZoom()+1,around:t.unproject(o)},{originalEvent:e})}):r?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:t.getZoom()-1,around:t.unproject(r)},{originalEvent:e})}):void 0}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}const xr={0:1,2:2};class yr{constructor(e){this.reset(),this._clickTolerance=e.clickTolerance||1;}blur(){this.reset();}reset(){this._active=!1,this._moved=!1,this._lastPoint=void 0,this._eventButton=void 0;}_correctButton(e,t){return !1}_move(e,t){return {}}mousedown(e,t){if(this._lastPoint)return;const i=f(e);this._correctButton(e,i)&&(this._lastPoint=t,this._eventButton=i);}mousemoveWindow(e,t){const i=this._lastPoint;if(i)if(e.preventDefault(),null!=this._eventButton&&function(e,t){const i=xr[t];return void 0===e.buttons||(e.buttons&i)!==i}(e,this._eventButton))this.reset();else if(this._moved||!(t.dist(i)<this._clickTolerance))return this._moved=!0,this._lastPoint=t,this._move(i,t)}mouseupWindow(e){this._lastPoint&&f(e)===this._eventButton&&(this._moved&&d(),this.reset());}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class br extends yr{mousedown(e,t){super.mousedown(e,t),this._lastPoint&&(this._active=!0);}_correctButton(e,t){return 0===t&&!e.ctrlKey}_move(e,t){return {around:t,panDelta:t.sub(e)}}}class wr extends yr{_correctButton(e,t){return 0===t&&e.ctrlKey||2===t}_move(e,t){const i=.8*(t.x-e.x);if(i)return this._active=!0,{bearingDelta:i}}contextmenu(e){e.preventDefault();}}class Tr extends yr{_correctButton(e,t){return 0===t&&e.ctrlKey||2===t}_move(e,t){const i=-.5*(t.y-e.y);if(i)return this._active=!0,{pitchDelta:i}}contextmenu(e){e.preventDefault();}}class Er{constructor(t,i){this._map=t,this._el=t.getCanvasContainer(),this._minTouches=1,this._clickTolerance=i.clickTolerance||1,this.reset(),e.bindAll([\"_addTouchPanBlocker\",\"_showTouchPanBlockerAlert\"],this);}reset(){this._active=!1,this._touches={},this._sum=new e.pointGeometry(0,0);}touchstart(e,t,i){return this._calculateTransform(e,t,i)}touchmove(t,i,o){if(this._active&&!(o.length<this._minTouches)){if(this._map._cooperativeGestures&&!this._map.isMoving()){if(1===o.length&&!e.isFullscreen())return void this._showTouchPanBlockerAlert();\"hidden\"!==this._alertContainer.style.visibility&&(this._alertContainer.style.visibility=\"hidden\",clearTimeout(this._alertTimer));}return t.cancelable&&t.preventDefault(),this._calculateTransform(t,i,o)}}touchend(e,t,i){this._calculateTransform(e,t,i),this._active&&i.length<this._minTouches&&this.reset();}touchcancel(){this.reset();}_calculateTransform(t,i,o){o.length>0&&(this._active=!0);const r=mr(o,i),n=new e.pointGeometry(0,0),a=new e.pointGeometry(0,0);let s=0;for(const e in r){const t=r[e],i=this._touches[e];i&&(n._add(t),a._add(t.sub(i)),s++,r[e]=t);}if(this._touches=r,s<this._minTouches||!a.mag())return;const l=a.div(s);return this._sum._add(l),this._sum.mag()<this._clickTolerance?void 0:{around:n.div(s),panDelta:l}}enable(){this._enabled=!0,this._map._cooperativeGestures&&(this._addTouchPanBlocker(),this._el.classList.add(\"mapboxgl-touch-pan-blocker-override\",\"mapboxgl-scrollable-page\"));}disable(){this._enabled=!1,this._map._cooperativeGestures&&(clearTimeout(this._alertTimer),this._alertContainer.remove(),this._el.classList.remove(\"mapboxgl-touch-pan-blocker-override\",\"mapboxgl-scrollable-page\")),this.reset();}isEnabled(){return !!this._enabled}isActive(){return !!this._active}_addTouchPanBlocker(){this._map&&!this._alertContainer&&(this._alertContainer=n(\"div\",\"mapboxgl-touch-pan-blocker\",this._map._container),this._alertContainer.textContent=this._map._getUIString(\"TouchPanBlocker.Message\"),this._alertContainer.style.fontSize=`${Math.max(10,Math.min(24,Math.floor(.05*this._el.clientWidth)))}px`);}_showTouchPanBlockerAlert(){this._alertContainer.style.visibility=\"visible\",this._alertContainer.classList.add(\"mapboxgl-touch-pan-blocker-show\"),this._alertContainer.setAttribute(\"role\",\"alert\"),clearTimeout(this._alertTimer),this._alertTimer=setTimeout((()=>{this._alertContainer.classList.remove(\"mapboxgl-touch-pan-blocker-show\"),this._alertContainer.setAttribute(\"role\",\"null\");}),500);}}class Cr{constructor(){this.reset();}reset(){this._active=!1,this._firstTwoTouches=void 0;}_start(e){}_move(e,t,i){return {}}touchstart(e,t,i){this._firstTwoTouches||i.length<2||(this._firstTwoTouches=[i[0].identifier,i[1].identifier],this._start([t[0],t[1]]));}touchmove(e,t,i){const o=this._firstTwoTouches;if(!o)return;e.preventDefault();const[r,n]=o,a=Ir(i,t,r),s=Ir(i,t,n);if(!a||!s)return;const l=this._aroundCenter?null:a.add(s).div(2);return this._move([a,s],l,e)}touchend(e,t,i){if(!this._firstTwoTouches)return;const[o,r]=this._firstTwoTouches,n=Ir(i,t,o),a=Ir(i,t,r);n&&a||(this._active&&d(),this.reset());}touchcancel(){this.reset();}enable(e){this._enabled=!0,this._aroundCenter=!!e&&\"center\"===e.around;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}function Ir(e,t,i){for(let o=0;o<e.length;o++)if(e[o].identifier===i)return t[o]}function Mr(e,t){return Math.log(e/t)/Math.LN2}class Sr extends Cr{reset(){super.reset(),this._distance=0,this._startDistance=0;}_start(e){this._startDistance=this._distance=e[0].dist(e[1]);}_move(e,t){const i=this._distance;if(this._distance=e[0].dist(e[1]),this._active||!(Math.abs(Mr(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:Mr(this._distance,i),pinchAround:t}}}function zr(e,t){return 180*e.angleWith(t)/Math.PI}class Dr extends Cr{reset(){super.reset(),this._minDiameter=0,this._startVector=void 0,this._vector=void 0;}_start(e){this._startVector=this._vector=e[0].sub(e[1]),this._minDiameter=e[0].dist(e[1]);}_move(e,t){const i=this._vector;if(this._vector=e[0].sub(e[1]),this._active||!this._isBelowThreshold(this._vector))return this._active=!0,{bearingDelta:zr(this._vector,i),pinchAround:t}}_isBelowThreshold(e){this._minDiameter=Math.min(this._minDiameter,e.mag());const t=25/(Math.PI*this._minDiameter)*360,i=zr(e,this._startVector);return Math.abs(i)<t}}function Pr(e){return Math.abs(e.y)>Math.abs(e.x)}class Ar extends Cr{constructor(e){super(),this._map=e;}reset(){super.reset(),this._valid=void 0,this._firstMove=void 0,this._lastPoints=void 0;}_start(e){this._lastPoints=e,Pr(e[0].sub(e[1]))&&(this._valid=!1);}_move(e,t,i){const o=this._lastPoints;if(!o)return;const r=e[0].sub(o[0]),n=e[1].sub(o[1]);return this._map._cooperativeGestures&&i.touches.length<3||(this._valid=this.gestureBeginsVertically(r,n,i.timeStamp),!this._valid)?void 0:(this._lastPoints=e,this._active=!0,{pitchDelta:(r.y+n.y)/2*-.5})}gestureBeginsVertically(e,t,i){if(void 0!==this._valid)return this._valid;const o=e.mag()>=2,r=t.mag()>=2;if(!o&&!r)return;if(!o||!r)return null==this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;const n=e.y>0==t.y>0;return Pr(e)&&Pr(t)&&n}}const Lr={panStep:100,bearingStep:15,pitchStep:10};class Rr{constructor(){const e=Lr;this._panStep=e.panStep,this._bearingStep=e.bearingStep,this._pitchStep=e.pitchStep,this._rotationDisabled=!1;}blur(){this.reset();}reset(){this._active=!1;}keydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let t=0,i=0,o=0,r=0,n=0;switch(e.keyCode){case 61:case 107:case 171:case 187:t=1;break;case 189:case 109:case 173:t=-1;break;case 37:e.shiftKey?i=-1:(e.preventDefault(),r=-1);break;case 39:e.shiftKey?i=1:(e.preventDefault(),r=1);break;case 38:e.shiftKey?o=1:(e.preventDefault(),n=-1);break;case 40:e.shiftKey?o=-1:(e.preventDefault(),n=1);break;default:return}return this._rotationDisabled&&(i=0,o=0),{cameraAnimation:a=>{const s=a.getZoom();a.easeTo({duration:300,easeId:\"keyboardHandler\",easing:Or,zoom:t?Math.round(s)+t*(e.shiftKey?2:1):s,bearing:a.getBearing()+i*this._bearingStep,pitch:a.getPitch()+o*this._pitchStep,offset:[-r*this._panStep,-n*this._panStep],center:a.getCenter()},{originalEvent:e});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0;}enableRotation(){this._rotationDisabled=!1;}}function Or(e){return e*(2-e)}const Br=4.000244140625;class kr{constructor(t,i){this._map=t,this._el=t.getCanvasContainer(),this._handler=i,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222,e.bindAll([\"_onTimeout\",\"_addScrollZoomBlocker\",\"_showBlockerAlert\"],this);}setZoomRate(e){this._defaultZoomRate=e;}setWheelZoomRate(e){this._wheelZoomRate=e;}isEnabled(){return !!this._enabled}isActive(){return this._active||void 0!==this._finishTimeout}isZooming(){return !!this._zooming}enable(e){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!e&&\"center\"===e.around,this._map._cooperativeGestures&&this._addScrollZoomBlocker());}disable(){this.isEnabled()&&(this._enabled=!1,this._map._cooperativeGestures&&(clearTimeout(this._alertTimer),this._alertContainer.remove()));}wheel(t){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!(t.ctrlKey||t.metaKey||this.isZooming()||e.isFullscreen()))return void this._showBlockerAlert();\"hidden\"!==this._alertContainer.style.visibility&&(this._alertContainer.style.visibility=\"hidden\",clearTimeout(this._alertTimer));}let i=t.deltaMode===e.window.WheelEvent.DOM_DELTA_LINE?40*t.deltaY:t.deltaY;const o=e.exported.now(),r=o-(this._lastWheelEventTime||0);this._lastWheelEventTime=o,0!==i&&i%Br==0?this._type=\"wheel\":0!==i&&Math.abs(i)<4?this._type=\"trackpad\":r>400?(this._type=null,this._lastValue=i,this._timeout=setTimeout(this._onTimeout,40,t)):this._type||(this._type=Math.abs(r*i)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,i+=this._lastValue)),t.shiftKey&&i&&(i/=4),this._type&&(this._lastWheelEvent=t,this._delta-=i,this._active||this._start(t)),t.preventDefault();}_onTimeout(e){this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(e);}_start(e){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const t=p(this._el,e);this._aroundPoint=this._aroundCenter?this._map.transform.centerPoint:t,this._aroundCoord=this._map.transform.pointCoordinate3D(this._aroundPoint),this._targetZoom=void 0,this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame());}renderFrame(){if(!this._frameId)return;if(this._frameId=null,!this.isActive())return;const t=this._map.transform,i=()=>t._terrainEnabled()&&this._aroundCoord?t.computeZoomRelativeTo(this._aroundCoord):t.zoom;if(0!==this._delta){const e=\"wheel\"===this._type&&Math.abs(this._delta)>Br?this._wheelZoomRate:this._defaultZoomRate;let o=2/(1+Math.exp(-Math.abs(this._delta*e)));this._delta<0&&0!==o&&(o=1/o);const r=i(),n=Math.pow(2,r),a=\"number\"==typeof this._targetZoom?t.zoomScale(this._targetZoom):n;this._targetZoom=Math.min(t.maxZoom,Math.max(t.minZoom,t.scaleZoom(a*o))),\"wheel\"===this._type&&(this._startZoom=r,this._easing=this._smoothOutEasing(200)),this._delta=0;}const o=\"number\"==typeof this._targetZoom?this._targetZoom:i(),r=this._startZoom,n=this._easing;let a,s=!1;if(\"wheel\"===this._type&&r&&n){const t=Math.min((e.exported.now()-this._lastWheelEventTime)/200,1),i=n(t);a=e.number(r,o,i),t<1?this._frameId||(this._frameId=!0):s=!0;}else a=o,s=!0;return this._active=!0,s&&(this._active=!1,this._finishTimeout=setTimeout((()=>{this._zooming=!1,this._handler._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout;}),200)),{noInertia:!0,needsRenderFrame:!s,zoomDelta:a-i(),around:this._aroundPoint,aroundCoord:this._aroundCoord,originalEvent:this._lastWheelEvent}}_smoothOutEasing(t){let i=e.ease;if(this._prevEase){const t=this._prevEase,o=(e.exported.now()-t.start)/t.duration,r=t.easing(o+.01)-t.easing(o),n=.27/Math.sqrt(r*r+1e-4)*.01,a=Math.sqrt(.0729-n*n);i=e.bezier(n,a,.25,1);}return this._prevEase={start:e.exported.now(),duration:t,easing:i},i}blur(){this.reset();}reset(){this._active=!1;}_addScrollZoomBlocker(){this._map&&!this._alertContainer&&(this._alertContainer=n(\"div\",\"mapboxgl-scroll-zoom-blocker\",this._map._container),this._alertContainer.textContent=/(Mac|iPad)/i.test(e.window.navigator.userAgent)?this._map._getUIString(\"ScrollZoomBlocker.CmdMessage\"):this._map._getUIString(\"ScrollZoomBlocker.CtrlMessage\"),this._alertContainer.style.fontSize=`${Math.max(10,Math.min(24,Math.floor(.05*this._el.clientWidth)))}px`);}_showBlockerAlert(){this._alertContainer.style.visibility=\"visible\",this._alertContainer.classList.add(\"mapboxgl-scroll-zoom-blocker-show\"),this._alertContainer.setAttribute(\"role\",\"alert\"),clearTimeout(this._alertTimer),this._alertTimer=setTimeout((()=>{this._alertContainer.classList.remove(\"mapboxgl-scroll-zoom-blocker-show\"),this._alertContainer.setAttribute(\"role\",\"null\");}),200);}}class Fr{constructor(e,t){this._clickZoom=e,this._tapZoom=t;}enable(){this._clickZoom.enable(),this._tapZoom.enable();}disable(){this._clickZoom.disable(),this._tapZoom.disable();}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class Ur{constructor(){this.reset();}reset(){this._active=!1;}blur(){this.reset();}dblclick(e,t){return e.preventDefault(),{cameraAnimation:i=>{i.easeTo({duration:300,zoom:i.getZoom()+(e.shiftKey?-1:1),around:i.unproject(t)},{originalEvent:e});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Nr{constructor(){this._tap=new gr({numTouches:1,numTaps:1}),this.reset();}reset(){this._active=!1,this._swipePoint=void 0,this._swipeTouch=0,this._tapTime=0,this._tap.reset();}touchstart(e,t,i){this._swipePoint||(this._tapTime&&e.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?i.length>0&&(this._swipePoint=t[0],this._swipeTouch=i[0].identifier):this._tap.touchstart(e,t,i));}touchmove(e,t,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;const o=t[0],r=o.y-this._swipePoint.y;return this._swipePoint=o,e.preventDefault(),this._active=!0,{zoomDelta:r/128}}}else this._tap.touchmove(e,t,i);}touchend(e,t,i){this._tapTime?this._swipePoint&&0===i.length&&this.reset():this._tap.touchend(e,t,i)&&(this._tapTime=e.timeStamp);}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Gr{constructor(e,t,i){this._el=e,this._mousePan=t,this._touchPan=i;}enable(e){this._inertiaOptions=e||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"mapboxgl-touch-drag-pan\");}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"mapboxgl-touch-drag-pan\");}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class jr{constructor(e,t,i){this._pitchWithRotate=e.pitchWithRotate,this._mouseRotate=t,this._mousePitch=i;}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable();}disable(){this._mouseRotate.disable(),this._mousePitch.disable();}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class Zr{constructor(e,t,i,o){this._el=e,this._touchZoom=t,this._touchRotate=i,this._tapDragZoom=o,this._rotationDisabled=!1,this._enabled=!0;}enable(e){this._touchZoom.enable(e),this._rotationDisabled||this._touchRotate.enable(e),this._tapDragZoom.enable(),this._el.classList.add(\"mapboxgl-touch-zoom-rotate\");}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\");}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable();}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable();}}const Vr=e=>e.zoom||e.drag||e.pitch||e.rotate;class Wr extends e.Event{}class Xr{constructor(){this.constants=[1,1,.01],this.radius=0;}setup(t,i){const o=e.sub([],i,t);this.radius=e.length(o[2]<0?e.div([],o,this.constants):[o[0],o[1],0]);}projectRay(t){e.div(t,t,this.constants),e.normalize(t,t),e.mul$1(t,t,this.constants);const i=e.scale$2([],t,this.radius);if(i[2]>0){const t=e.scale$2([],[0,0,1],e.dot(i,[0,0,1])),o=e.scale$2([],e.normalize([],[i[0],i[1],0]),this.radius),r=e.add([],i,e.scale$2([],e.sub([],e.add([],o,t),i),2));i[0]=r[0],i[1]=r[1];}return i}}function qr(e){return e.panDelta&&e.panDelta.mag()||e.zoomDelta||e.bearingDelta||e.pitchDelta}class $r{constructor(t,i){this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new ar(t),this._bearingSnap=i.bearingSnap,this._previousActiveHandlers={},this._trackingEllipsoid=new Xr,this._dragOrigin=null,this._eventsInProgress={},this._addDefaultHandlers(i),e.bindAll([\"handleEvent\",\"handleWindowEvent\"],this);const o=this._el;this._listeners=[[o,\"touchstart\",{passive:!0}],[o,\"touchmove\",{passive:!1}],[o,\"touchend\",void 0],[o,\"touchcancel\",void 0],[o,\"mousedown\",void 0],[o,\"mousemove\",void 0],[o,\"mouseup\",void 0],[e.window.document,\"mousemove\",{capture:!0}],[e.window.document,\"mouseup\",void 0],[o,\"mouseover\",void 0],[o,\"mouseout\",void 0],[o,\"dblclick\",void 0],[o,\"click\",void 0],[o,\"keydown\",{capture:!1}],[o,\"keyup\",void 0],[o,\"wheel\",{passive:!1}],[o,\"contextmenu\",void 0],[e.window,\"blur\",void 0]];for(const[t,i,o]of this._listeners)t.addEventListener(i,t===e.window.document?this.handleWindowEvent:this.handleEvent,o);}destroy(){for(const[t,i,o]of this._listeners)t.removeEventListener(i,t===e.window.document?this.handleWindowEvent:this.handleEvent,o);}_addDefaultHandlers(e){const t=this._map,i=t.getCanvasContainer();this._add(\"mapEvent\",new _r(t,e));const o=t.boxZoom=new pr(t,e);this._add(\"boxZoom\",o);const r=new vr,n=new Ur;t.doubleClickZoom=new Fr(n,r),this._add(\"tapZoom\",r),this._add(\"clickZoom\",n);const a=new Nr;this._add(\"tapDragZoom\",a);const s=t.touchPitch=new Ar(t);this._add(\"touchPitch\",s);const l=new wr(e),c=new Tr(e);t.dragRotate=new jr(e,l,c),this._add(\"mouseRotate\",l,[\"mousePitch\"]),this._add(\"mousePitch\",c,[\"mouseRotate\"]);const h=new br(e),u=new Er(t,e);t.dragPan=new Gr(i,h,u),this._add(\"mousePan\",h),this._add(\"touchPan\",u,[\"touchZoom\",\"touchRotate\"]);const _=new Dr,d=new Sr;t.touchZoomRotate=new Zr(i,d,_,a),this._add(\"touchRotate\",_,[\"touchPan\",\"touchZoom\"]),this._add(\"touchZoom\",d,[\"touchPan\",\"touchRotate\"]),this._add(\"blockableMapEvent\",new dr(t));const p=t.scrollZoom=new kr(t,this);this._add(\"scrollZoom\",p,[\"mousePan\"]);const m=t.keyboard=new Rr;this._add(\"keyboard\",m);for(const i of [\"boxZoom\",\"doubleClickZoom\",\"tapDragZoom\",\"touchPitch\",\"dragRotate\",\"dragPan\",\"touchZoomRotate\",\"scrollZoom\",\"keyboard\"])e.interactive&&e[i]&&t[i].enable(e[i]);}_add(e,t,i){this._handlers.push({handlerName:e,handler:t,allowed:i}),this._handlersById[e]=t;}stop(e){if(!this._updatingCamera){for(const{handler:e}of this._handlers)e.reset();this._inertia.clear(),this._fireEvents({},{},e),this._changes=[];}}isActive(){for(const{handler:e}of this._handlers)if(e.isActive())return !0;return !1}isZooming(){return !!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return !!this._eventsInProgress.rotate}isMoving(){return !!Vr(this._eventsInProgress)||this.isZooming()}_blockedByActive(e,t,i){for(const o in e)if(o!==i&&(!t||t.indexOf(o)<0))return !0;return !1}handleWindowEvent(e){this.handleEvent(e,`${e.type}Window`);}_getMapTouches(e){const t=[];for(const i of e)this._el.contains(i.target)&&t.push(i);return t}handleEvent(e,t){this._updatingCamera=!0;const i=\"renderFrame\"===e.type,o=i?void 0:e,r={needsRenderFrame:!1},n={},a={},s=e.touches?this._getMapTouches(e.touches):void 0,l=s?m(this._el,s):i?void 0:p(this._el,e);for(const{handlerName:i,handler:c,allowed:h}of this._handlers){if(!c.isEnabled())continue;let u;this._blockedByActive(a,h,i)?c.reset():c[t||e.type]&&(u=c[t||e.type](e,l,s),this.mergeHandlerResult(r,n,u,i,o),u&&u.needsRenderFrame&&this._triggerRenderFrame()),(u||c.isActive())&&(a[i]=c);}const c={};for(const e in this._previousActiveHandlers)a[e]||(c[e]=o);this._previousActiveHandlers=a,(Object.keys(c).length||qr(r))&&(this._changes.push([r,n,c]),this._triggerRenderFrame()),(Object.keys(a).length||qr(r))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:h}=r;h&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],h(this._map));}mergeHandlerResult(t,i,o,r,n){if(!o)return;e.extend(t,o);const a={handlerName:r,originalEvent:o.originalEvent||n};void 0!==o.zoomDelta&&(i.zoom=a),void 0!==o.panDelta&&(i.drag=a),void 0!==o.pitchDelta&&(i.pitch=a),void 0!==o.bearingDelta&&(i.rotate=a);}_applyChanges(){const t={},i={},o={};for(const[r,n,a]of this._changes)r.panDelta&&(t.panDelta=(t.panDelta||new e.pointGeometry(0,0))._add(r.panDelta)),r.zoomDelta&&(t.zoomDelta=(t.zoomDelta||0)+r.zoomDelta),r.bearingDelta&&(t.bearingDelta=(t.bearingDelta||0)+r.bearingDelta),r.pitchDelta&&(t.pitchDelta=(t.pitchDelta||0)+r.pitchDelta),void 0!==r.around&&(t.around=r.around),void 0!==r.aroundCoord&&(t.aroundCoord=r.aroundCoord),void 0!==r.pinchAround&&(t.pinchAround=r.pinchAround),r.noInertia&&(t.noInertia=r.noInertia),e.extend(i,n),e.extend(o,a);this._updateMapTransform(t,i,o),this._changes=[];}_updateMapTransform(t,i,o){const r=this._map,n=r.transform,a=e=>[e.x,e.y,e.z];if((e=>{const t=this._eventsInProgress.drag;return t&&!this._handlersById[t.handlerName].isActive()})()&&!qr(t)){const e=n.zoom;n.cameraElevationReference=\"sea\",n.recenterOnTerrain(),n.cameraElevationReference=\"ground\",e!==n.zoom&&this._map._update(!0);}if(!qr(t))return void this._fireEvents(i,o,!0);let{panDelta:s,zoomDelta:l,bearingDelta:c,pitchDelta:h,around:u,aroundCoord:_,pinchAround:d}=t;void 0!==d&&(u=d),(e=>i.drag&&!this._eventsInProgress.drag)()&&u&&(this._dragOrigin=a(n.pointCoordinate3D(u)),this._trackingEllipsoid.setup(n._camera.position,this._dragOrigin)),n.cameraElevationReference=\"sea\",r._stop(!0),u=u||r.transform.centerPoint,c&&(n.bearing+=c),h&&(n.pitch+=h),n._updateCameraState();const p=[0,0,0];if(s)if(\"mercator\"===n.projection.name){const e=this._trackingEllipsoid.projectRay(n.screenPointToMercatorRay(u).dir),t=this._trackingEllipsoid.projectRay(n.screenPointToMercatorRay(u.sub(s)).dir);p[0]=t[0]-e[0],p[1]=t[1]-e[1];}else {const t=n.pointCoordinate(u);if(\"globe\"===n.projection.name){s=s.rotate(-n.angle);const i=n._pixelsPerMercatorPixel/n.worldSize;p[0]=-s.x*e.mercatorScale(e.latFromMercatorY(t.y))*i,p[1]=-s.y*e.mercatorScale(n.center.lat)*i;}else {const e=n.pointCoordinate(u.sub(s));t&&e&&(p[0]=e.x-t.x,p[1]=e.y-t.y);}}const m=n.zoom,f=[0,0,0];if(l){const t=a(_||n.pointCoordinate3D(u)),i={dir:e.normalize([],e.sub([],t,n._camera.position))};if(i.dir[2]<0){const o=n.zoomDeltaToMovement(t,l);e.scale$2(f,i.dir,o);}}const g=e.add(p,p,f);n._translateCameraConstrained(g),l&&Math.abs(n.zoom-m)>1e-4&&n.recenterOnTerrain(),n.cameraElevationReference=\"ground\",this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(i,o,!0);}_fireEvents(t,i,o){const r=Vr(this._eventsInProgress),n=Vr(t),a={};for(const e in t){const{originalEvent:i}=t[e];this._eventsInProgress[e]||(a[`${e}start`]=i),this._eventsInProgress[e]=t[e];}!r&&n&&this._fireEvent(\"movestart\",n.originalEvent);for(const e in a)this._fireEvent(e,a[e]);n&&this._fireEvent(\"move\",n.originalEvent);for(const e in t){const{originalEvent:i}=t[e];this._fireEvent(e,i);}const s={};let l;for(const e in this._eventsInProgress){const{handlerName:t,originalEvent:o}=this._eventsInProgress[e];this._handlersById[t].isActive()||(delete this._eventsInProgress[e],l=i[t]||o,s[`${e}end`]=l);}for(const e in s)this._fireEvent(e,s[e]);const c=Vr(this._eventsInProgress);if(o&&(r||n)&&!c){this._updatingCamera=!0;const t=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),i=e=>0!==e&&-this._bearingSnap<e&&e<this._bearingSnap;t?(i(t.bearing||this._map.getBearing())&&(t.bearing=0),this._map.easeTo(t,{originalEvent:l})):(this._map.fire(new e.Event(\"moveend\",{originalEvent:l})),i(this._map.getBearing())&&this._map.resetNorth()),this._updatingCamera=!1;}}_fireEvent(t,i){this._map.fire(new e.Event(t,i?{originalEvent:i}:{}));}_requestFrame(){return this._map.triggerRepaint(),this._map._renderTaskQueue.add((e=>{this._frameId=void 0,this.handleEvent(new Wr(\"renderFrame\",{timeStamp:e})),this._applyChanges();}))}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame());}}const Hr=\"map.setFreeCameraOptions(...) and map.getFreeCameraOptions() are not yet supported for non-mercator projections.\";class Yr extends e.Evented{constructor(t,i){super(),this._moving=!1,this._zooming=!1,this.transform=t,this._bearingSnap=i.bearingSnap,e.bindAll([\"_renderFrameCallback\"],this);}getCenter(){return new e.LngLat(this.transform.center.lng,this.transform.center.lat)}setCenter(e,t){return this.jumpTo({center:e},t)}panBy(t,i,o){return t=e.pointGeometry.convert(t).mult(-1),this.panTo(this.transform.center,e.extend({offset:t},i),o)}panTo(t,i,o){return this.easeTo(e.extend({center:t},i),o)}getZoom(){return this.transform.zoom}setZoom(e,t){return this.jumpTo({zoom:e},t),this}zoomTo(t,i,o){return this.easeTo(e.extend({zoom:t},i),o)}zoomIn(e,t){return this.zoomTo(this.getZoom()+1,e,t),this}zoomOut(e,t){return this.zoomTo(this.getZoom()-1,e,t),this}getBearing(){return this.transform.bearing}setBearing(e,t){return this.jumpTo({bearing:e},t),this}getPadding(){return this.transform.padding}setPadding(e,t){return this.jumpTo({padding:e},t),this}rotateTo(t,i,o){return this.easeTo(e.extend({bearing:t},i),o)}resetNorth(t,i){return this.rotateTo(0,e.extend({duration:1e3},t),i),this}resetNorthPitch(t,i){return this.easeTo(e.extend({bearing:0,pitch:0,duration:1e3},t),i),this}snapToNorth(e,t){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(e,t):this}getPitch(){return this.transform.pitch}setPitch(e,t){return this.jumpTo({pitch:e},t),this}cameraForBounds(t,i){\"globe\"===this.transform.projection.name&&e.warnOnce('Globe projection does not support cameraForBounds API, this API may behave unexpectedly.\"'),t=e.LngLatBounds.convert(t);const o=i&&i.bearing||0;return this._cameraForBoxAndBearing(t.getNorthWest(),t.getSouthEast(),o,i)}_extendCameraOptions(t){const i={top:0,bottom:0,right:0,left:0};if(\"number\"==typeof(t=e.extend({padding:i,offset:[0,0],maxZoom:this.transform.maxZoom},t)).padding){const e=t.padding;t.padding={top:e,bottom:e,right:e,left:e};}return t.padding=e.extend(i,t.padding),t}_cameraForBoxAndBearing(t,i,o,r){const n=this._extendCameraOptions(r),a=this.transform,s=a.padding,l=a.project(e.LngLat.convert(t)),c=a.project(e.LngLat.convert(i)),h=new e.pointGeometry(l.x,c.y),u=new e.pointGeometry(c.x,l.y),_=-e.degToRad(o),d=l.rotate(_),p=c.rotate(_),m=h.rotate(_),f=u.rotate(_),g=new e.pointGeometry(Math.max(d.x,p.x,m.x,f.x),Math.max(d.y,p.y,m.y,f.y)),v=new e.pointGeometry(Math.min(d.x,p.x,m.x,f.x),Math.min(d.y,p.y,m.y,f.y)),x=g.sub(v),y=(a.width-((s.left||0)+(s.right||0)+n.padding.left+n.padding.right))/x.x,b=(a.height-((s.top||0)+(s.bottom||0)+n.padding.top+n.padding.bottom))/x.y;if(b<0||y<0)return void e.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\");const w=Math.min(a.scaleZoom(a.scale*Math.min(y,b)),n.maxZoom),T=\"number\"==typeof n.offset.x&&\"number\"==typeof n.offset.y?new e.pointGeometry(n.offset.x,n.offset.y):e.pointGeometry.convert(n.offset),E=new e.pointGeometry((n.padding.left-n.padding.right)/2,(n.padding.top-n.padding.bottom)/2).rotate(o*Math.PI/180),C=T.add(E).mult(a.scale/a.zoomScale(w));return {center:a.unproject(l.add(c).div(2).sub(C)),zoom:w,bearing:o}}_cameraForBox(t,i,o,r,n){const a=this._extendCameraOptions(n);o=o||0,r=r||0,t=e.LngLat.convert(t),i=e.LngLat.convert(i);const s=this.transform.clone();s.padding=a.padding;const l=this.getFreeCameraOptions(),c=new e.LngLat(.5*(t.lng+i.lng),.5*(t.lat+i.lat)),h=.5*(o+r);if(s._camera.position[2]<e.mercatorZfromAltitude(h,c.lat))return void e.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\");l.lookAtPoint(c),s.setFreeCameraOptions(l);const u=e.MercatorCoordinate.fromLngLat(t),_=e.MercatorCoordinate.fromLngLat(i),d=s.pointRayIntersection(s.centerPoint,h),p=[(m=s.rayIntersectionCoordinate(d)).x,m.y,m.z];var m;const f=s.screenPointToMercatorRay(s.centerPoint),g=\"globe\"!==s.projection.name;let v,x=0;do{const t=Math.floor(s.zoom),i=1<<t,n=Math.min(i*u.x,i*_.x),a=Math.min(i*u.y,i*_.y),l=Math.max(i*u.x,i*_.x),c=Math.max(i*u.y,i*_.y),h=new e.Aabb([n,a,o],[l,c,r]),d=e.Frustum.fromInvProjectionMatrix(s.invProjMatrix,s.worldSize,t,g);if(2!==h.intersects(d)){v&&(s._camera.position=e.scaleAndAdd([],s._camera.position,f.dir,-v),s._updateStateFromCamera());break}const m=e.sub([],s._camera.position,p);v=.5*e.length(m),s._camera.position=e.scaleAndAdd([],s._camera.position,f.dir,v);try{s._updateStateFromCamera();}catch(t){return void e.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\")}}while(++x<10);return {center:s.center,zoom:s.zoom,bearing:s.bearing,pitch:s.pitch}}fitBounds(t,i,o){return \"globe\"===this.transform.projection.name&&e.warnOnce(\"Globe projection does not support fitBounds API, this API may behave unexpectedly.\"),this._fitInternal(this.cameraForBounds(t,i),i,o)}_raycastElevationBox(t,i){const o=this.transform.elevation;if(!o)return;const r=new e.pointGeometry(t.x,i.y),n=new e.pointGeometry(i.x,t.y),a=o.pointCoordinate(t);if(!a)return;const s=o.pointCoordinate(i);if(!s)return;const l=o.pointCoordinate(r);if(!l)return;const c=o.pointCoordinate(n);if(!c)return;const h=new e.MercatorCoordinate(a[0],a[1]).toLngLat(),u=new e.MercatorCoordinate(s[0],s[1]).toLngLat(),_=new e.MercatorCoordinate(l[0],l[1]).toLngLat(),d=new e.MercatorCoordinate(c[0],c[1]).toLngLat(),p=Math.min(h.lng,Math.min(u.lng,Math.min(_.lng,d.lng))),m=Math.min(h.lat,Math.min(u.lat,Math.min(_.lat,d.lat))),f=Math.max(h.lng,Math.max(u.lng,Math.max(_.lng,d.lng))),g=Math.max(h.lat,Math.max(u.lat,Math.max(_.lat,d.lat))),v=Math.min(a[3],Math.min(s[3],Math.min(l[3],c[3]))),x=Math.max(a[3],Math.max(s[3],Math.max(l[3],c[3])));return {minLngLat:new e.LngLat(p,m),maxLngLat:new e.LngLat(f,g),minAltitude:v,maxAltitude:x}}fitScreenCoordinates(t,i,o,r,n){let a,s,l,c;\"globe\"===this.transform.projection.name&&e.warnOnce(\"Globe projection does not support fitScreenCoordinates API, this API may behave unexpectedly.\");const h=e.pointGeometry.convert(t),u=e.pointGeometry.convert(i),_=this._raycastElevationBox(h,u);if(_)a=_.minLngLat,s=_.maxLngLat,l=_.minAltitude,c=_.maxAltitude;else {if(this.transform.anyCornerOffEdge(h,u))return this;a=this.transform.pointLocation(h),s=this.transform.pointLocation(u);}return this._fitInternal(0===this.transform.pitch?this._cameraForBoxAndBearing(this.transform.pointLocation(e.pointGeometry.convert(t)),this.transform.pointLocation(e.pointGeometry.convert(i)),o,r):this._cameraForBox(a,s,l,c,r),r,n)}_fitInternal(t,i,o){return t?(delete(i=e.extend(t,i)).padding,i.linear?this.easeTo(i,o):this.flyTo(i,o)):this}jumpTo(t,i){this.stop();const o=t.preloadOnly?this.transform.clone():this.transform;let r=!1,n=!1,a=!1;return \"zoom\"in t&&o.zoom!==+t.zoom&&(r=!0,o.zoom=+t.zoom),void 0!==t.center&&(o.center=e.LngLat.convert(t.center)),\"bearing\"in t&&o.bearing!==+t.bearing&&(n=!0,o.bearing=+t.bearing),\"pitch\"in t&&o.pitch!==+t.pitch&&(a=!0,o.pitch=+t.pitch),null==t.padding||o.isPaddingEqual(t.padding)||(o.padding=t.padding),t.preloadOnly?(this._preloadTiles(o),this):(this.fire(new e.Event(\"movestart\",i)).fire(new e.Event(\"move\",i)),r&&this.fire(new e.Event(\"zoomstart\",i)).fire(new e.Event(\"zoom\",i)).fire(new e.Event(\"zoomend\",i)),n&&this.fire(new e.Event(\"rotatestart\",i)).fire(new e.Event(\"rotate\",i)).fire(new e.Event(\"rotateend\",i)),a&&this.fire(new e.Event(\"pitchstart\",i)).fire(new e.Event(\"pitch\",i)).fire(new e.Event(\"pitchend\",i)),this.fire(new e.Event(\"moveend\",i)))}getFreeCameraOptions(){return this.transform.projection.supportsFreeCamera||e.warnOnce(Hr),this.transform.getFreeCameraOptions()}setFreeCameraOptions(t,i){const o=this.transform;if(!o.projection.supportsFreeCamera)return e.warnOnce(Hr),this;this.stop();const r=o.zoom,n=o.pitch,a=o.bearing;o.setFreeCameraOptions(t);const s=r!==o.zoom,l=n!==o.pitch,c=a!==o.bearing;return this.fire(new e.Event(\"movestart\",i)).fire(new e.Event(\"move\",i)),s&&this.fire(new e.Event(\"zoomstart\",i)).fire(new e.Event(\"zoom\",i)).fire(new e.Event(\"zoomend\",i)),c&&this.fire(new e.Event(\"rotatestart\",i)).fire(new e.Event(\"rotate\",i)).fire(new e.Event(\"rotateend\",i)),l&&this.fire(new e.Event(\"pitchstart\",i)).fire(new e.Event(\"pitch\",i)).fire(new e.Event(\"pitchend\",i)),this.fire(new e.Event(\"moveend\",i)),this}easeTo(t,i){this._stop(!1,t.easeId),(!1===(t=e.extend({offset:[0,0],duration:500,easing:e.ease},t)).animate||!t.essential&&e.exported.prefersReducedMotion)&&(t.duration=0);const o=this.transform,r=this.getZoom(),n=this.getBearing(),a=this.getPitch(),s=this.getPadding(),l=\"zoom\"in t?+t.zoom:r,c=\"bearing\"in t?this._normalizeBearing(t.bearing,n):n,h=\"pitch\"in t?+t.pitch:a,u=\"padding\"in t?t.padding:o.padding,_=e.pointGeometry.convert(t.offset);let d,p,m;if(\"globe\"===o.projection.name){const i=e.MercatorCoordinate.fromLngLat(o.center),r=_.rotate(-o.angle);i.x+=r.x/o.worldSize,i.y+=r.y/o.worldSize;const n=i.toLngLat(),a=e.LngLat.convert(t.center||n);this._normalizeCenter(a),d=o.centerPoint.add(r),p=new e.pointGeometry(i.x,i.y).mult(o.worldSize),m=new e.pointGeometry(e.mercatorXfromLng(a.lng),e.mercatorYfromLat(a.lat)).mult(o.worldSize).sub(p);}else {d=o.centerPoint.add(_);const i=o.pointLocation(d),r=e.LngLat.convert(t.center||i);this._normalizeCenter(r),p=o.project(i),m=o.project(r).sub(p);}const f=o.zoomScale(l-r);let g,v;t.around&&(g=e.LngLat.convert(t.around),v=o.locationPoint(g));const x=this._zooming||l!==r,y=this._rotating||n!==c,b=this._pitching||h!==a,w=!o.isPaddingEqual(u),T=o=>T=>{if(x&&(o.zoom=e.number(r,l,T)),y&&(o.bearing=e.number(n,c,T)),b&&(o.pitch=e.number(a,h,T)),w&&(o.interpolatePadding(s,u,T),d=o.centerPoint.add(_)),g)o.setLocationAtPoint(g,v);else {const e=o.zoomScale(o.zoom-r),t=l>r?Math.min(2,f):Math.max(.5,f),i=Math.pow(t,1-T),n=o.unproject(p.add(m.mult(T*i)).mult(e));o.setLocationAtPoint(o.renderWorldCopies?n.wrap():n,d);}return t.preloadOnly||this._fireMoveEvents(i),o};if(t.preloadOnly){const e=this._emulate(T,t.duration,o);return this._preloadTiles(e),this}const E={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching};return this._zooming=x,this._rotating=y,this._pitching=b,this._padding=w,this._easeId=t.easeId,this._prepareEase(i,t.noMoveStart,E),this._ease(T(o),(e=>{o.recenterOnTerrain(),this._afterEase(i,e);}),t),this}_prepareEase(t,i,o={}){this._moving=!0,this.transform.cameraElevationReference=\"sea\",i||o.moving||this.fire(new e.Event(\"movestart\",t)),this._zooming&&!o.zooming&&this.fire(new e.Event(\"zoomstart\",t)),this._rotating&&!o.rotating&&this.fire(new e.Event(\"rotatestart\",t)),this._pitching&&!o.pitching&&this.fire(new e.Event(\"pitchstart\",t));}_fireMoveEvents(t){this.fire(new e.Event(\"move\",t)),this._zooming&&this.fire(new e.Event(\"zoom\",t)),this._rotating&&this.fire(new e.Event(\"rotate\",t)),this._pitching&&this.fire(new e.Event(\"pitch\",t));}_afterEase(t,i){if(this._easeId&&i&&this._easeId===i)return;this._easeId=void 0,this.transform.cameraElevationReference=\"ground\";const o=this._zooming,r=this._rotating,n=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,o&&this.fire(new e.Event(\"zoomend\",t)),r&&this.fire(new e.Event(\"rotateend\",t)),n&&this.fire(new e.Event(\"pitchend\",t)),this.fire(new e.Event(\"moveend\",t));}flyTo(t,i){if(!t.essential&&e.exported.prefersReducedMotion){const o=e.pick(t,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(o,i)}this.stop(),t=e.extend({offset:[0,0],speed:1.2,curve:1.42,easing:e.ease},t);const o=this.transform,r=this.getZoom(),n=this.getBearing(),a=this.getPitch(),s=this.getPadding(),l=\"zoom\"in t?e.clamp(+t.zoom,o.minZoom,o.maxZoom):r,c=\"bearing\"in t?this._normalizeBearing(t.bearing,n):n,h=\"pitch\"in t?+t.pitch:a,u=\"padding\"in t?t.padding:o.padding,_=o.zoomScale(l-r),d=e.pointGeometry.convert(t.offset);let p=o.centerPoint.add(d);const m=o.pointLocation(p),f=e.LngLat.convert(t.center||m);this._normalizeCenter(f);const g=o.project(m),v=o.project(f).sub(g);let x=t.curve;const y=Math.max(o.width,o.height),b=y/_,w=v.mag();if(\"minZoom\"in t){const i=e.clamp(Math.min(t.minZoom,r,l),o.minZoom,o.maxZoom),n=y/o.zoomScale(i-r);x=Math.sqrt(n/w*2);}const T=x*x;function E(e){const t=(b*b-y*y+(e?-1:1)*T*T*w*w)/(2*(e?b:y)*T*w);return Math.log(Math.sqrt(t*t+1)-t)}function C(e){return (Math.exp(e)-Math.exp(-e))/2}function I(e){return (Math.exp(e)+Math.exp(-e))/2}const M=E(0);let S=function(e){return I(M)/I(M+x*e)},z=function(e){return y*((I(M)*(C(t=M+x*e)/I(t))-C(M))/T)/w;var t;},D=(E(1)-M)/x;if(Math.abs(w)<1e-6||!isFinite(D)){if(Math.abs(y-b)<1e-6)return this.easeTo(t,i);const e=b<y?-1:1;D=Math.abs(Math.log(b/y))/x,z=function(){return 0},S=function(t){return Math.exp(e*x*t)};}t.duration=\"duration\"in t?+t.duration:1e3*D/(\"screenSpeed\"in t?+t.screenSpeed/x:+t.speed),t.maxDuration&&t.duration>t.maxDuration&&(t.duration=0);const P=n!==c,A=h!==a,L=!o.isPaddingEqual(u),R=o=>_=>{const m=_*D,x=1/S(m);o.zoom=1===_?l:r+o.scaleZoom(x),P&&(o.bearing=e.number(n,c,_)),A&&(o.pitch=e.number(a,h,_)),L&&(o.interpolatePadding(s,u,_),p=o.centerPoint.add(d));const y=1===_?f:o.unproject(g.add(v.mult(z(m))).mult(x));return o.setLocationAtPoint(o.renderWorldCopies?y.wrap():y,p),o._updateCameraOnTerrain(),t.preloadOnly||this._fireMoveEvents(i),o};if(t.preloadOnly){const e=this._emulate(R,t.duration,o);return this._preloadTiles(e),this}return this._zooming=!0,this._rotating=P,this._pitching=A,this._padding=L,this._prepareEase(i,!1),this._ease(R(o),(()=>this._afterEase(i)),t),this}isEasing(){return !!this._easeFrameId}stop(){return this._stop()}_stop(e,t){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),this._easeFrameId=void 0,this._onEaseFrame=void 0),this._onEaseEnd){const e=this._onEaseEnd;this._onEaseEnd=void 0,e.call(this,t);}if(!e){const e=this.handlers;e&&e.stop(!1);}return this}_ease(t,i,o){!1===o.animate||0===o.duration?(t(1),i()):(this._easeStart=e.exported.now(),this._easeOptions=o,this._onEaseFrame=t,this._onEaseEnd=i,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback));}_renderFrameCallback(){const t=Math.min((e.exported.now()-this._easeStart)/this._easeOptions.duration,1),i=this._onEaseFrame;i&&i(this._easeOptions.easing(t)),t<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop();}_normalizeBearing(t,i){t=e.wrap(t,-180,180);const o=Math.abs(t-i);return Math.abs(t-360-i)<o&&(t-=360),Math.abs(t+360-i)<o&&(t+=360),t}_normalizeCenter(e){const t=this.transform;if(!t.renderWorldCopies||t.maxBounds)return;const i=e.lng-t.center.lng;e.lng+=i>180?-360:i<-180?360:0;}_emulate(e,t,i){const o=Math.ceil(15*t/1e3),r=[],n=e(i.clone());for(let e=0;e<=o;e++){const t=n(e/o);r.push(t.clone());}return r}}class Kr{constructor(t={}){this.options=t,e.bindAll([\"_toggleAttribution\",\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this);}getDefaultPosition(){return \"bottom-right\"}onAdd(e){const t=this.options&&this.options.compact;return this._map=e,this._container=n(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),this._compactButton=n(\"button\",\"mapboxgl-ctrl-attrib-button\",this._container),n(\"span\",\"mapboxgl-ctrl-icon\",this._compactButton).setAttribute(\"aria-hidden\",\"true\"),this._compactButton.type=\"button\",this._compactButton.addEventListener(\"click\",this._toggleAttribution),this._setElementTitle(this._compactButton,\"ToggleAttribution\"),this._innerContainer=n(\"div\",\"mapboxgl-ctrl-attrib-inner\",this._container),this._innerContainer.setAttribute(\"role\",\"list\"),t&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===t&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container}onRemove(){this._container.remove(),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._attribHTML=void 0;}_setElementTitle(e,t){const i=this._map._getUIString(`AttributionControl.${t}`);e.setAttribute(\"aria-label\",i),e.removeAttribute(\"title\"),e.firstElementChild&&e.firstElementChild.setAttribute(\"title\",i);}_toggleAttribution(){this._container.classList.contains(\"mapboxgl-compact-show\")?(this._container.classList.remove(\"mapboxgl-compact-show\"),this._compactButton.setAttribute(\"aria-expanded\",\"false\")):(this._container.classList.add(\"mapboxgl-compact-show\"),this._compactButton.setAttribute(\"aria-expanded\",\"true\"));}_updateEditLink(){let t=this._editLink;t||(t=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));const i=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:this._map._requestManager._customAccessToken||e.config.ACCESS_TOKEN}];if(t){const o=i.reduce(((e,t,o)=>(t.value&&(e+=`${t.key}=${t.value}${o<i.length-1?\"&\":\"\"}`),e)),\"?\");t.href=`${e.config.FEEDBACK_URL}/${o}#${er(this._map,!0)}`,t.rel=\"noopener nofollow\",this._setElementTitle(t,\"MapFeedback\");}}_updateData(e){!e||\"metadata\"!==e.sourceDataType&&\"visibility\"!==e.sourceDataType&&\"style\"!==e.dataType||(this._updateAttributions(),this._updateEditLink());}_updateAttributions(){if(!this._map.style)return;let e=[];if(this._map.style.stylesheet){const e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id;}const t=this._map.style._sourceCaches;for(const i in t){const o=t[i];if(o.used){const t=o.getSource();t.attribution&&e.indexOf(t.attribution)<0&&e.push(t.attribution);}}e.sort(((e,t)=>e.length-t.length)),e=e.filter(((t,i)=>{for(let o=i+1;o<e.length;o++)if(e[o].indexOf(t)>=0)return !1;return !0})),this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?e=[...this.options.customAttribution,...e]:e.unshift(this.options.customAttribution));const i=e.join(\" | \");i!==this._attribHTML&&(this._attribHTML=i,e.length?(this._innerContainer.innerHTML=i,this._container.classList.remove(\"mapboxgl-attrib-empty\")):this._container.classList.add(\"mapboxgl-attrib-empty\"),this._editLink=null);}_updateCompact(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\",\"mapboxgl-compact-show\");}}class Jr{constructor(){e.bindAll([\"_updateLogo\",\"_updateCompact\"],this);}onAdd(e){this._map=e,this._container=n(\"div\",\"mapboxgl-ctrl\");const t=n(\"a\",\"mapboxgl-ctrl-logo\");return t.target=\"_blank\",t.rel=\"noopener nofollow\",t.href=\"https://www.mapbox.com/\",t.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),t.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(t),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container}onRemove(){this._container.remove(),this._map.off(\"sourcedata\",this._updateLogo),this._map.off(\"resize\",this._updateCompact);}getDefaultPosition(){return \"bottom-left\"}_updateLogo(e){e&&\"metadata\"!==e.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\");}_logoRequired(){if(!this._map.style)return !0;const e=this._map.style._sourceCaches;if(0===Object.entries(e).length)return !0;for(const t in e){const i=e[t].getSource();if(i.hasOwnProperty(\"mapbox_logo\")&&!i.mapbox_logo)return !1}return !0}_updateCompact(){const e=this._container.children;if(e.length){const t=e[0];this._map.getCanvasContainer().offsetWidth<250?t.classList.add(\"mapboxgl-compact\"):t.classList.remove(\"mapboxgl-compact\");}}}class Qr{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1;}add(e){const t=++this._id;return this._queue.push({callback:e,id:t,cancelled:!1}),t}remove(e){const t=this._currentlyRunning,i=t?this._queue.concat(t):this._queue;for(const t of i)if(t.id===e)return void(t.cancelled=!0)}run(e=0){const t=this._currentlyRunning=this._queue;this._queue=[];for(const i of t)if(!i.cancelled&&(i.callback(e),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1;}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[];}}function en(t,i,o){if(t=new e.LngLat(t.lng,t.lat),i){const r=new e.LngLat(t.lng-360,t.lat),n=new e.LngLat(t.lng+360,t.lat),a=360*Math.ceil(Math.abs(t.lng-o.center.lng)/360),s=o.locationPoint(t).distSqr(i),l=i.x<0||i.y<0||i.x>o.width||i.y>o.height;o.locationPoint(r).distSqr(i)<s&&(l||Math.abs(r.lng-o.center.lng)<a)?t=r:o.locationPoint(n).distSqr(i)<s&&(l||Math.abs(n.lng-o.center.lng)<a)&&(t=n);}for(;Math.abs(t.lng-o.center.lng)>180;){const e=o.locationPoint(t);if(e.x>=0&&e.y>=0&&e.x<=o.width&&e.y<=o.height)break;t.lng>o.center.lng?t.lng-=360:t.lng+=360;}return t}const tn={center:\"translate(-50%,-50%)\",top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"};class on extends e.Evented{constructor(t,i){if(super(),(t instanceof e.window.HTMLElement||i)&&(t=e.extend({element:t},i)),e.bindAll([\"_update\",\"_onMove\",\"_onUp\",\"_addDragHandler\",\"_onMapClick\",\"_onKeyPress\",\"_clearFadeTimer\"],this),this._anchor=t&&t.anchor||\"center\",this._color=t&&t.color||\"#3FB1CE\",this._scale=t&&t.scale||1,this._draggable=t&&t.draggable||!1,this._clickTolerance=t&&t.clickTolerance||0,this._isDragging=!1,this._state=\"inactive\",this._rotation=t&&t.rotation||0,this._rotationAlignment=t&&t.rotationAlignment||\"auto\",this._pitchAlignment=t&&t.pitchAlignment&&t.pitchAlignment||\"auto\",this._updateMoving=()=>this._update(!0),t&&t.element)this._element=t.element,this._offset=e.pointGeometry.convert(t&&t.offset||[0,0]);else {this._defaultMarker=!0,this._element=n(\"div\");const i=41,o=27,r=a(\"svg\",{display:\"block\",height:i*this._scale+\"px\",width:o*this._scale+\"px\",viewBox:`0 0 ${o} ${i}`},this._element),s=a(\"radialGradient\",{id:\"shadowGradient\"},a(\"defs\",{},r));a(\"stop\",{offset:\"10%\",\"stop-opacity\":.4},s),a(\"stop\",{offset:\"100%\",\"stop-opacity\":.05},s),a(\"ellipse\",{cx:13.5,cy:34.8,rx:10.5,ry:5.25,fill:\"url(#shadowGradient)\"},r),a(\"path\",{fill:this._color,d:\"M27,13.5C27,19.07 20.25,27 14.75,34.5C14.02,35.5 12.98,35.5 12.25,34.5C6.75,27 0,19.22 0,13.5C0,6.04 6.04,0 13.5,0C20.96,0 27,6.04 27,13.5Z\"},r),a(\"path\",{opacity:.25,d:\"M13.5,0C6.04,0 0,6.04 0,13.5C0,19.22 6.75,27 12.25,34.5C13,35.52 14.02,35.5 14.75,34.5C20.25,27 27,19.07 27,13.5C27,6.04 20.96,0 13.5,0ZM13.5,1C20.42,1 26,6.58 26,13.5C26,15.9 24.5,19.18 22.22,22.74C19.95,26.3 16.71,30.14 13.94,33.91C13.74,34.18 13.61,34.32 13.5,34.44C13.39,34.32 13.26,34.18 13.06,33.91C10.28,30.13 7.41,26.31 5.02,22.77C2.62,19.23 1,15.95 1,13.5C1,6.58 6.58,1 13.5,1Z\"},r),a(\"circle\",{fill:\"white\",cx:13.5,cy:13.5,r:5.5},r),this._offset=e.pointGeometry.convert(t&&t.offset||[0,-14]);}this._element.hasAttribute(\"aria-label\")||this._element.setAttribute(\"aria-label\",\"Map marker\"),this._element.classList.add(\"mapboxgl-marker\"),this._element.addEventListener(\"dragstart\",(e=>{e.preventDefault();})),this._element.addEventListener(\"mousedown\",(e=>{e.preventDefault();}));const o=this._element.classList;for(const e in tn)o.remove(`mapboxgl-marker-anchor-${e}`);o.add(`mapboxgl-marker-anchor-${this._anchor}`),this._popup=null;}addTo(e){return e===this._map||(this.remove(),this._map=e,e.getCanvasContainer().appendChild(this._element),e.on(\"move\",this._updateMoving),e.on(\"moveend\",this._update),e.on(\"remove\",this._clearFadeTimer),e._addMarker(this),this.setDraggable(this._draggable),this._update(),e.on(\"click\",this._onMapClick)),this}remove(){const e=this._map;return e&&(e.off(\"click\",this._onMapClick),e.off(\"move\",this._updateMoving),e.off(\"moveend\",this._update),e.off(\"mousedown\",this._addDragHandler),e.off(\"touchstart\",this._addDragHandler),e.off(\"mouseup\",this._onUp),e.off(\"touchend\",this._onUp),e.off(\"mousemove\",this._onMove),e.off(\"touchmove\",this._onMove),e.off(\"remove\",this._clearFadeTimer),e._removeMarker(this),this._map=void 0),this._clearFadeTimer(),this._element.remove(),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=e.LngLat.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(!0),this}getElement(){return this._element}setPopup(e){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeAttribute(\"role\"),this._element.removeEventListener(\"keypress\",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute(\"tabindex\")),e){if(!(\"offset\"in e.options)){const t=38.1,i=13.5,o=Math.sqrt(Math.pow(i,2)/2);e.options.offset=this._defaultMarker?{top:[0,0],\"top-left\":[0,0],\"top-right\":[0,0],bottom:[0,-t],\"bottom-left\":[o,-1*(t-i+o)],\"bottom-right\":[-o,-1*(t-i+o)],left:[i,-1*(t-i)],right:[-i,-1*(t-i)]}:this._offset;}this._popup=e,e._marker=this,this._lngLat&&this._popup.setLngLat(this._lngLat),this._element.setAttribute(\"role\",\"button\"),this._originalTabIndex=this._element.getAttribute(\"tabindex\"),this._originalTabIndex||this._element.setAttribute(\"tabindex\",\"0\"),this._element.addEventListener(\"keypress\",this._onKeyPress),this._element.setAttribute(\"aria-expanded\",\"false\");}return this}_onKeyPress(e){const t=e.code,i=e.charCode||e.keyCode;\"Space\"!==t&&\"Enter\"!==t&&32!==i&&13!==i||this.togglePopup();}_onMapClick(e){const t=e.originalEvent.target,i=this._element;this._popup&&(t===i||i.contains(t))&&this.togglePopup();}getPopup(){return this._popup}togglePopup(){const e=this._popup;return e?(e.isOpen()?(e.remove(),this._element.setAttribute(\"aria-expanded\",\"false\")):this._map&&(e.addTo(this._map),this._element.setAttribute(\"aria-expanded\",\"true\")),this):this}_behindTerrain(){const e=this._map;if(!e)return !1;const t=e.unproject(this._pos),i=e.getFreeCameraOptions();if(!i.position)return !1;const o=i.position.toLngLat();return o.distanceTo(t)<.9*o.distanceTo(this._lngLat)}_evaluateOpacity(){const t=this._map;if(!t)return;const i=this._pos;if(!i||i.x<0||i.x>t.transform.width||i.y<0||i.y>t.transform.height)return void this._clearFadeTimer();const o=t.unproject(i);let r;t._showingGlobe()&&e.isLngLatBehindGlobe(t.transform,this._lngLat)?r=0:(r=1-t._queryFogOpacity(o),t.transform._terrainEnabled()&&t.getTerrain()&&this._behindTerrain()&&(r*=.2)),this._element.style.opacity=`${r}`,this._element.style.pointerEvents=r>0?\"auto\":\"none\",this._popup&&this._popup._setOpacity(r),this._fadeTimer=null;}_clearFadeTimer(){this._fadeTimer&&(clearTimeout(this._fadeTimer),this._fadeTimer=null);}_updateDOM(){const e=this._pos;if(!e||!this._map)return;const t=this._offset.mult(this._scale);this._element.style.transform=`\\n translate(${e.x}px,${e.y}px)\\n ${tn[this._anchor]}\\n ${this._calculateXYTransform()} ${this._calculateZTransform()}\\n translate(${t.x}px,${t.y}px)\\n `;}_calculateXYTransform(){const t=this._pos,i=this._map,o=this.getPitchAlignment();if(!i||!t||\"map\"!==o)return \"\";if(!i._showingGlobe()){const e=i.getPitch();return e?`rotateX(${e}deg)`:\"\"}const r=e.radToDeg(e.globeTiltAtLngLat(i.transform,this._lngLat)),n=t.sub(e.globeCenterToScreenPoint(i.transform)),a=Math.abs(n.x)+Math.abs(n.y);if(0===a)return \"\";const s=r/a;return `rotateX(${-n.y*s}deg) rotateY(${n.x*s}deg)`}_calculateZTransform(){const t=this._pos,i=this._map;if(!i||!t)return \"\";let o=0;const r=this.getRotationAlignment();if(\"map\"===r)if(i._showingGlobe()){const t=i.project(new e.LngLat(this._lngLat.lng,this._lngLat.lat+.001)),r=i.project(new e.LngLat(this._lngLat.lng,this._lngLat.lat-.001)).sub(t);o=e.radToDeg(Math.atan2(r.y,r.x))-90;}else o=-i.getBearing();else if(\"horizon\"===r){const r=e.smoothstep(4,6,i.getZoom()),n=e.globeCenterToScreenPoint(i.transform);n.y+=r*i.transform.height;const a=t.sub(n),s=e.radToDeg(Math.atan2(a.y,a.x));o=(s>90?s-270:s+90)*(1-r);}return o+=this._rotation,o?`rotateZ(${o}deg)`:\"\"}_update(t){e.window.cancelAnimationFrame(this._updateFrameId);const i=this._map;i&&(i.transform.renderWorldCopies&&(this._lngLat=en(this._lngLat,this._pos,i.transform)),this._pos=i.project(this._lngLat),!0===t?this._updateFrameId=e.window.requestAnimationFrame((()=>{this._element&&this._pos&&this._anchor&&(this._pos=this._pos.round(),this._updateDOM());})):this._pos=this._pos.round(),i._requestDomTask((()=>{this._map&&(this._element&&this._pos&&this._anchor&&this._updateDOM(),(i._showingGlobe()||i.getTerrain()||i.getFog())&&!this._fadeTimer&&(this._fadeTimer=setTimeout(this._evaluateOpacity.bind(this),60)));})));}getOffset(){return this._offset}setOffset(t){return this._offset=e.pointGeometry.convert(t),this._update(),this}_onMove(t){const i=this._map;if(i){if(!this._isDragging){const e=this._clickTolerance||i._clickTolerance;this._isDragging=t.point.dist(this._pointerdownPos)>=e;}this._isDragging&&(this._pos=t.point.sub(this._positionDelta),this._lngLat=i.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents=\"none\",\"pending\"===this._state&&(this._state=\"active\",this.fire(new e.Event(\"dragstart\"))),this.fire(new e.Event(\"drag\")));}}_onUp(){this._element.style.pointerEvents=\"auto\",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1;const t=this._map;t&&(t.off(\"mousemove\",this._onMove),t.off(\"touchmove\",this._onMove)),\"active\"===this._state&&this.fire(new e.Event(\"dragend\")),this._state=\"inactive\";}_addDragHandler(e){const t=this._map;t&&this._element.contains(e.originalEvent.target)&&(e.preventDefault(),this._positionDelta=e.point.sub(this._pos),this._pointerdownPos=e.point,this._state=\"pending\",t.on(\"mousemove\",this._onMove),t.on(\"touchmove\",this._onMove),t.once(\"mouseup\",this._onUp),t.once(\"touchend\",this._onUp));}setDraggable(e){this._draggable=!!e;const t=this._map;return t&&(e?(t.on(\"mousedown\",this._addDragHandler),t.on(\"touchstart\",this._addDragHandler)):(t.off(\"mousedown\",this._addDragHandler),t.off(\"touchstart\",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(e){return this._rotation=e||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(e){return this._rotationAlignment=e||\"auto\",this._update(),this}getRotationAlignment(){return \"auto\"===this._rotationAlignment||\"horizon\"===this._rotationAlignment&&this._map&&!this._map._showingGlobe()?\"viewport\":this._rotationAlignment}setPitchAlignment(e){return this._pitchAlignment=e||\"auto\",this._update(),this}getPitchAlignment(){return \"auto\"===this._pitchAlignment?this.getRotationAlignment():this._pitchAlignment}}class rn{constructor(e){this.jumpTo(e);}getValue(t){if(t<=this._startTime)return this._start;if(t>=this._endTime)return this._end;const i=e.easeCubicInOut((t-this._startTime)/(this._endTime-this._startTime));return this._start*(1-i)+this._end*i}isEasing(e){return e>=this._startTime&&e<=this._endTime}jumpTo(e){this._startTime=-1/0,this._endTime=-1/0,this._start=e,this._end=e;}easeTo(e,t,i){this._start=this.getValue(t),this._end=e,this._startTime=t,this._endTime=t+i;}}const nn={\"AttributionControl.ToggleAttribution\":\"Toggle attribution\",\"AttributionControl.MapFeedback\":\"Map feedback\",\"FullscreenControl.Enter\":\"Enter fullscreen\",\"FullscreenControl.Exit\":\"Exit fullscreen\",\"GeolocateControl.FindMyLocation\":\"Find my location\",\"GeolocateControl.LocationNotAvailable\":\"Location not available\",\"LogoControl.Title\":\"Mapbox logo\",\"Map.Title\":\"Map\",\"NavigationControl.ResetBearing\":\"Reset bearing to north\",\"NavigationControl.ZoomIn\":\"Zoom in\",\"NavigationControl.ZoomOut\":\"Zoom out\",\"ScrollZoomBlocker.CtrlMessage\":\"Use ctrl + scroll to zoom the map\",\"ScrollZoomBlocker.CmdMessage\":\"Use ⌘ + scroll to zoom the map\",\"TouchPanBlocker.Message\":\"Use two fingers to move the map\"},an={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:85,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:!1,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,optimizeForTerrain:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,minTileCacheSize:null,maxTileCacheSize:null,localIdeographFontFamily:\"sans-serif\",localFontFamily:null,transformRequest:null,accessToken:null,fadeDuration:300,crossSourceCollisions:!0};function sn(e){e.parentNode&&e.parentNode.removeChild(e);}const ln={showCompass:!0,showZoom:!0,visualizePitch:!1};class cn{constructor(t,i,o=!1){this._clickTolerance=10,this.element=i,this.mouseRotate=new wr({clickTolerance:t.dragRotate._mouseRotate._clickTolerance}),this.map=t,o&&(this.mousePitch=new Tr({clickTolerance:t.dragRotate._mousePitch._clickTolerance})),e.bindAll([\"mousedown\",\"mousemove\",\"mouseup\",\"touchstart\",\"touchmove\",\"touchend\",\"reset\"],this),i.addEventListener(\"mousedown\",this.mousedown),i.addEventListener(\"touchstart\",this.touchstart,{passive:!1}),i.addEventListener(\"touchmove\",this.touchmove),i.addEventListener(\"touchend\",this.touchend),i.addEventListener(\"touchcancel\",this.reset);}down(e,t){this.mouseRotate.mousedown(e,t),this.mousePitch&&this.mousePitch.mousedown(e,t),h();}move(e,t){const i=this.map,o=this.mouseRotate.mousemoveWindow(e,t),r=o&&o.bearingDelta;if(r&&i.setBearing(i.getBearing()+r),this.mousePitch){const o=this.mousePitch.mousemoveWindow(e,t),r=o&&o.pitchDelta;r&&i.setPitch(i.getPitch()+r);}}off(){const e=this.element;e.removeEventListener(\"mousedown\",this.mousedown),e.removeEventListener(\"touchstart\",this.touchstart,{passive:!1}),e.removeEventListener(\"touchmove\",this.touchmove),e.removeEventListener(\"touchend\",this.touchend),e.removeEventListener(\"touchcancel\",this.reset),this.offTemp();}offTemp(){u(),e.window.removeEventListener(\"mousemove\",this.mousemove),e.window.removeEventListener(\"mouseup\",this.mouseup);}mousedown(t){this.down(e.extend({},t,{ctrlKey:!0,preventDefault:()=>t.preventDefault()}),p(this.element,t)),e.window.addEventListener(\"mousemove\",this.mousemove),e.window.addEventListener(\"mouseup\",this.mouseup);}mousemove(e){this.move(e,p(this.element,e));}mouseup(e){this.mouseRotate.mouseupWindow(e),this.mousePitch&&this.mousePitch.mouseupWindow(e),this.offTemp();}touchstart(e){1!==e.targetTouches.length?this.reset():(this._startPos=this._lastPos=m(this.element,e.targetTouches)[0],this.down({type:\"mousedown\",button:0,ctrlKey:!0,preventDefault:()=>e.preventDefault()},this._startPos));}touchmove(e){1!==e.targetTouches.length?this.reset():(this._lastPos=m(this.element,e.targetTouches)[0],this.move({preventDefault:()=>e.preventDefault()},this._lastPos));}touchend(e){0===e.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)<this._clickTolerance&&this.element.click(),this.reset();}reset(){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp();}}const hn={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0,showUserHeading:!1},un={maxWidth:100,unit:\"metric\"};function _n(e,t,i){const o=dn(t),r=o/t,n={kilometer:\"km\",meter:\"m\",mile:\"mi\",foot:\"ft\",\"nautical-mile\":\"nm\"}[i];this._map._requestDomTask((()=>{this._container.style.width=e*r+\"px\",this._container.innerHTML=`${o} ${n}`;}));}function dn(e){const t=Math.pow(10,`${Math.floor(e)}`.length-1);let i=e/t;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:i>=1?1:function(e){const t=Math.pow(10,Math.ceil(-Math.log(e)/Math.LN10));return Math.round(e*t)/t}(i),t*i}const pn={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:\"\",maxWidth:\"240px\"},mn=[\"a[href]\",\"[tabindex]:not([tabindex='-1'])\",\"[contenteditable]:not([contenteditable='false'])\",\"button:not([disabled])\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\"].join(\", \");function fn(t=new e.pointGeometry(0,0),i=\"bottom\"){if(\"number\"==typeof t){const o=Math.round(Math.sqrt(.5*Math.pow(t,2)));switch(i){case\"top\":return new e.pointGeometry(0,t);case\"top-left\":return new e.pointGeometry(o,o);case\"top-right\":return new e.pointGeometry(-o,o);case\"bottom\":return new e.pointGeometry(0,-t);case\"bottom-left\":return new e.pointGeometry(o,-o);case\"bottom-right\":return new e.pointGeometry(-o,-o);case\"left\":return new e.pointGeometry(t,0);case\"right\":return new e.pointGeometry(-t,0)}return new e.pointGeometry(0,0)}return t instanceof e.pointGeometry||Array.isArray(t)?e.pointGeometry.convert(t):e.pointGeometry.convert(t[i]||[0,0])}const gn={version:e.version,supported:i,setRTLTextPlugin:e.setRTLTextPlugin,getRTLTextPluginStatus:e.getRTLTextPluginStatus,Map:class extends Yr{constructor(t){if(null!=(t=e.extend({},an,t)).minZoom&&null!=t.maxZoom&&t.minZoom>t.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(null!=t.minPitch&&null!=t.maxPitch&&t.minPitch>t.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(null!=t.minPitch&&t.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(null!=t.maxPitch&&t.maxPitch>85)throw new Error(\"maxPitch must be less than or equal to 85\");if(t.antialias&&e.isSafariWithAntialiasingBug(e.window)&&(t.antialias=!1,e.warnOnce(\"Antialiasing is disabled for this WebGL context to avoid browser bug: https://github.com/mapbox/mapbox-gl-js/issues/11609\")),super(new Ko(t.minZoom,t.maxZoom,t.minPitch,t.maxPitch,t.renderWorldCopies),t),this._interactive=t.interactive,this._minTileCacheSize=t.minTileCacheSize,this._maxTileCacheSize=t.maxTileCacheSize,this._failIfMajorPerformanceCaveat=t.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=t.preserveDrawingBuffer,this._antialias=t.antialias,this._trackResize=t.trackResize,this._bearingSnap=t.bearingSnap,this._refreshExpiredTiles=t.refreshExpiredTiles,this._fadeDuration=t.fadeDuration,this._isInitialLoad=!0,this._crossSourceCollisions=t.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=t.collectResourceTiming,this._optimizeForTerrain=t.optimizeForTerrain,this._language=\"auto\"===t.language?e.window.navigator.language:t.language,this._worldview=t.worldview,this._renderTaskQueue=new Qr,this._domRenderTaskQueue=new Qr,this._controls=[],this._markers=[],this._mapId=e.uniqueId(),this._locale=e.extend({},nn,t.locale),this._clickTolerance=t.clickTolerance,this._cooperativeGestures=t.cooperativeGestures,this._containerWidth=0,this._containerHeight=0,this._averageElevationLastSampledAt=-1/0,this._averageElevationExaggeration=0,this._averageElevation=new rn(0),this._useExplicitProjection=!1,this._requestManager=new e.RequestManager(t.transformRequest,t.accessToken,t.testMode),this._silenceAuthErrors=!!t.testMode,\"string\"==typeof t.container){if(this._container=e.window.document.getElementById(t.container),!this._container)throw new Error(`Container '${t.container}' not found.`)}else {if(!(t.container instanceof e.window.HTMLElement))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=t.container;}if(this._container.childNodes.length>0&&e.warnOnce(\"The map container element should be empty, otherwise the map's interactivity will be negatively impacted. If you want to display a message when WebGL is not supported, use the Mapbox GL Supported plugin instead.\"),t.maxBounds&&this.setMaxBounds(t.maxBounds),e.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_onMapScroll\",\"_contextLost\",\"_contextRestored\"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error(\"Failed to initialize WebGL.\");this.on(\"move\",(()=>this._update(!1))),this.on(\"moveend\",(()=>this._update(!1))),this.on(\"zoom\",(()=>this._update(!0))),void 0!==e.window&&(e.window.addEventListener(\"online\",this._onWindowOnline,!1),e.window.addEventListener(\"resize\",this._onWindowResize,!1),e.window.addEventListener(\"orientationchange\",this._onWindowResize,!1),e.window.addEventListener(\"webkitfullscreenchange\",this._onWindowResize,!1)),this.handlers=new $r(this,t),this._localFontFamily=t.localFontFamily,this._localIdeographFontFamily=t.localIdeographFontFamily,t.style&&this.setStyle(t.style,{localFontFamily:this._localFontFamily,localIdeographFontFamily:this._localIdeographFontFamily}),t.projection&&this.setProjection(t.projection),this._hash=t.hash&&new Qo(\"string\"==typeof t.hash&&t.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:t.center,zoom:t.zoom,bearing:t.bearing,pitch:t.pitch}),t.bounds&&(this.resize(),this.fitBounds(t.bounds,e.extend({},t.fitBoundsOptions,{duration:0})))),this.resize(),t.attributionControl&&this.addControl(new Kr({customAttribution:t.customAttribution})),this._logoControl=new Jr,this.addControl(this._logoControl,t.logoPosition),this.on(\"style.load\",(()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet);})),this.on(\"data\",(t=>{this._update(\"style\"===t.dataType),this.fire(new e.Event(`${t.dataType}data`,t));})),this.on(\"dataloading\",(t=>{this.fire(new e.Event(`${t.dataType}dataloading`,t));}));}_getMapId(){return this._mapId}addControl(t,i){if(void 0===i&&(i=t.getDefaultPosition?t.getDefaultPosition():\"top-right\"),!t||!t.onAdd)return this.fire(new e.ErrorEvent(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));const o=t.onAdd(this);this._controls.push(t);const r=this._controlPositions[i];return -1!==i.indexOf(\"bottom\")?r.insertBefore(o,r.firstChild):r.appendChild(o),this}removeControl(t){if(!t||!t.onRemove)return this.fire(new e.ErrorEvent(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));const i=this._controls.indexOf(t);return i>-1&&this._controls.splice(i,1),t.onRemove(this),this}hasControl(e){return this._controls.indexOf(e)>-1}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}resize(t){if(this._updateContainerDimensions(),this._containerWidth===this.transform.width&&this._containerHeight===this.transform.height)return this;this._resizeCanvas(this._containerWidth,this._containerHeight),this.transform.resize(this._containerWidth,this._containerHeight),this.painter.resize(Math.ceil(this._containerWidth),Math.ceil(this._containerHeight));const i=!this._moving;return i&&this.fire(new e.Event(\"movestart\",t)).fire(new e.Event(\"move\",t)),this.fire(new e.Event(\"resize\",t)),i&&this.fire(new e.Event(\"moveend\",t)),this}getBounds(){return \"globe\"===this.transform.projection.name&&e.warnOnce('Globe projection does not support getBounds API, this API may behave unexpectedly.\"'),this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()||null}setMaxBounds(t){return this.transform.setMaxBounds(e.LngLatBounds.convert(t)),this._update()}setMinZoom(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t?this.setZoom(t):this.fire(new e.Event(\"zoomstart\")).fire(new e.Event(\"zoom\")).fire(new e.Event(\"zoomend\")),this;throw new Error(\"minZoom must be between -2 and the current maxZoom, inclusive\")}getMinZoom(){return this.transform.minZoom}setMaxZoom(t){if((t=null==t?22:t)>=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t?this.setZoom(t):this.fire(new e.Event(\"zoomstart\")).fire(new e.Event(\"zoom\")).fire(new e.Event(\"zoomend\")),this;throw new Error(\"maxZoom must be greater than the current minZoom\")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(t){if((t=null==t?0:t)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()<t?this.setPitch(t):this.fire(new e.Event(\"pitchstart\")).fire(new e.Event(\"pitch\")).fire(new e.Event(\"pitchend\")),this;throw new Error(\"minPitch must be between 0 and the current maxPitch, inclusive\")}getMinPitch(){return this.transform.minPitch}setMaxPitch(t){if((t=null==t?85:t)>85)throw new Error(\"maxPitch must be less than or equal to 85\");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t?this.setPitch(t):this.fire(new e.Event(\"pitchstart\")).fire(new e.Event(\"pitch\")).fire(new e.Event(\"pitchend\")),this;throw new Error(\"maxPitch must be greater than or equal to minPitch\")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(e){return this.transform.renderWorldCopies=e,this._update()}getLanguage(){return this._language}setLanguage(t){if(this._language=\"auto\"===t?e.window.navigator.language:t,this.style)for(const e in this.style._sourceCaches){const t=this.style._sourceCaches[e]._source;t._setLanguage&&t._setLanguage(this._language);}for(const e of this._controls)e._setLanguage&&e._setLanguage(this._language);return this}getWorldview(){return this._worldview}setWorldview(e){if(this._worldview=e,this.style)for(const t in this.style._sourceCaches){const i=this.style._sourceCaches[t]._source;i._setWorldview&&i._setWorldview(e);}return this}getProjection(){return this.transform.mercatorFromTransition?{name:\"globe\",center:[0,0]}:this.transform.getProjection()}_showingGlobe(){return \"globe\"===this.transform.projection.name}setProjection(e){return this._lazyInitEmptyStyle(),e?\"string\"==typeof e&&(e={name:e}):e=null,this._useExplicitProjection=!!e,this._prioritizeAndUpdateProjection(e,this.style.stylesheet?this.style.stylesheet.projection:null)}_updateProjectionTransition(){if(\"globe\"!==this.getProjection().name)return;const t=this.transform,i=t.projection.name;let o;\"globe\"===i&&t.zoom>=e.GLOBE_ZOOM_THRESHOLD_MAX?(t.setMercatorFromTransition(),o=!0):\"mercator\"===i&&t.zoom<e.GLOBE_ZOOM_THRESHOLD_MAX&&(t.setProjection({name:\"globe\"}),o=!0),o&&(this.style.applyProjectionUpdate(),this.style._forceSymbolLayerUpdate());}_prioritizeAndUpdateProjection(e,t){return this._updateProjection(e||t||{name:\"mercator\"})}_updateProjection(t){let i;if(i=\"globe\"===t.name&&this.transform.zoom>=e.GLOBE_ZOOM_THRESHOLD_MAX?this.transform.setMercatorFromTransition():this.transform.setProjection(t),this.style.applyProjectionUpdate(),i){this.painter.clearBackgroundTiles();for(const e in this.style._sourceCaches)this.style._sourceCaches[e].clearTiles();this._update(!0);}return this}project(t){return this.transform.locationPoint3D(e.LngLat.convert(t))}unproject(t){return this.transform.pointLocation3D(e.pointGeometry.convert(t))}isMoving(){return this._moving||this.handlers&&this.handlers.isMoving()||!1}isZooming(){return this._zooming||this.handlers&&this.handlers.isZooming()||!1}isRotating(){return this._rotating||this.handlers&&this.handlers.isRotating()||!1}_createDelegatedListener(e,t,i){if(\"mouseenter\"===e||\"mouseover\"===e){let o=!1;const r=r=>{const n=t.filter((e=>this.getLayer(e))),a=n.length?this.queryRenderedFeatures(r.point,{layers:n}):[];a.length?o||(o=!0,i.call(this,new cr(e,this,r.originalEvent,{features:a}))):o=!1;},n=()=>{o=!1;};return {layers:new Set(t),listener:i,delegates:{mousemove:r,mouseout:n}}}if(\"mouseleave\"===e||\"mouseout\"===e){let o=!1;const r=r=>{const n=t.filter((e=>this.getLayer(e)));(n.length?this.queryRenderedFeatures(r.point,{layers:n}):[]).length?o=!0:o&&(o=!1,i.call(this,new cr(e,this,r.originalEvent)));},n=t=>{o&&(o=!1,i.call(this,new cr(e,this,t.originalEvent)));};return {layers:new Set(t),listener:i,delegates:{mousemove:r,mouseout:n}}}{const o=e=>{const o=t.filter((e=>this.getLayer(e))),r=o.length?this.queryRenderedFeatures(e.point,{layers:o}):[];r.length&&(e.features=r,i.call(this,e),delete e.features);};return {layers:new Set(t),listener:i,delegates:{[e]:o}}}}on(e,t,i){if(void 0===i)return super.on(e,t);Array.isArray(t)||(t=[t]);const o=this._createDelegatedListener(e,t,i);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[e]=this._delegatedListeners[e]||[],this._delegatedListeners[e].push(o);for(const e in o.delegates)this.on(e,o.delegates[e]);return this}once(e,t,i){if(void 0===i)return super.once(e,t);Array.isArray(t)||(t=[t]);const o=this._createDelegatedListener(e,t,i);for(const e in o.delegates)this.once(e,o.delegates[e]);return this}off(e,t,i){if(void 0===i)return super.off(e,t);t=new Set(Array.isArray(t)?t:[t]);const o=(e,t)=>{if(e.size!==t.size)return !1;for(const i of e)if(!t.has(i))return !1;return !0},r=this._delegatedListeners?this._delegatedListeners[e]:void 0;return r&&(e=>{for(let r=0;r<e.length;r++){const n=e[r];if(n.listener===i&&o(n.layers,t)){for(const e in n.delegates)this.off(e,n.delegates[e]);return e.splice(r,1),this}}})(r),this}queryRenderedFeatures(t,i){return this.style?(void 0!==i||void 0===t||t instanceof e.pointGeometry||Array.isArray(t)||(i=t,t=void 0),this.style.queryRenderedFeatures(t=t||[[0,0],[this.transform.width,this.transform.height]],i=i||{},this.transform)):[]}querySourceFeatures(e,t){return this.style.querySourceFeatures(e,t)}queryTerrainElevation(t,i){const o=this.transform.elevation;return o?(i=e.extend({},{exaggerated:!0},i),o.getAtPoint(e.MercatorCoordinate.fromLngLat(t),null,i.exaggerated)):null}setStyle(t,i){return !1!==(i=e.extend({},{localIdeographFontFamily:this._localIdeographFontFamily,localFontFamily:this._localFontFamily},i)).diff&&i.localIdeographFontFamily===this._localIdeographFontFamily&&i.localFontFamily===this._localFontFamily&&this.style&&t?(this._diffStyle(t,i),this):(this._localIdeographFontFamily=i.localIdeographFontFamily,this._localFontFamily=i.localFontFamily,this._updateStyle(t,i))}_getUIString(e){const t=this._locale[e];if(null==t)throw new Error(`Missing UI string '${e}'`);return t}_updateStyle(e,t){return this.style&&(this.style.setEventedParent(null),this.style._remove(),this.style=void 0),e&&(this.style=new ei(this,t||{}),this.style.setEventedParent(this,{style:this.style}),\"string\"==typeof e?this.style.loadURL(e):this.style.loadJSON(e)),this._updateTerrain(),this}_lazyInitEmptyStyle(){this.style||(this.style=new ei(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty());}_diffStyle(t,i){if(\"string\"==typeof t){const o=this._requestManager.normalizeStyleURL(t),r=this._requestManager.transformRequest(o,e.ResourceType.Style);e.getJSON(r,((t,o)=>{t?this.fire(new e.ErrorEvent(t)):o&&this._updateDiff(o,i);}));}else \"object\"==typeof t&&this._updateDiff(t,i);}_updateDiff(t,i){try{this.style.setState(t)&&this._update(!0);}catch(o){e.warnOnce(`Unable to perform style diff: ${o.message||o.error||o}. Rebuilding the style from scratch.`),this._updateStyle(t,i);}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():(e.warnOnce(\"There is no style added to the map.\"),!1)}addSource(e,t){return this._lazyInitEmptyStyle(),this.style.addSource(e,t),this._update(!0)}isSourceLoaded(e){return !!this.style&&this.style._isSourceCacheLoaded(e)}areTilesLoaded(){const e=this.style&&this.style._sourceCaches;for(const t in e){const i=e[t]._tiles;for(const e in i){const t=i[e];if(\"loaded\"!==t.state&&\"errored\"!==t.state)return !1}}return !0}addSourceType(e,t,i){this._lazyInitEmptyStyle(),this.style.addSourceType(e,t,i);}removeSource(e){return this.style.removeSource(e),this._updateTerrain(),this._update(!0)}getSource(e){return this.style.getSource(e)}addImage(t,i,{pixelRatio:o=1,sdf:r=!1,stretchX:n,stretchY:a,content:s}={}){if(this._lazyInitEmptyStyle(),i instanceof e.window.HTMLImageElement||e.window.ImageBitmap&&i instanceof e.window.ImageBitmap){const{width:l,height:c,data:h}=e.exported.getImageData(i);this.style.addImage(t,{data:new e.RGBAImage({width:l,height:c},h),pixelRatio:o,stretchX:n,stretchY:a,content:s,sdf:r,version:0});}else if(void 0===i.width||void 0===i.height)this.fire(new e.ErrorEvent(new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));else {const{width:l,height:c}=i,h=i;this.style.addImage(t,{data:new e.RGBAImage({width:l,height:c},new Uint8Array(h.data)),pixelRatio:o,stretchX:n,stretchY:a,content:s,sdf:r,version:0,userImage:h}),h.onAdd&&h.onAdd(this,t);}}updateImage(t,i){const o=this.style.getImage(t);if(!o)return void this.fire(new e.ErrorEvent(new Error(\"The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.\")));const r=i instanceof e.window.HTMLImageElement||e.window.ImageBitmap&&i instanceof e.window.ImageBitmap?e.exported.getImageData(i):i,{width:n,height:a}=r;void 0!==n&&void 0!==a?n===o.data.width&&a===o.data.height?(o.data.replace(r.data,!(i instanceof e.window.HTMLImageElement||e.window.ImageBitmap&&i instanceof e.window.ImageBitmap)),this.style.updateImage(t,o)):this.fire(new e.ErrorEvent(new Error(`The width and height of the updated image (${n}, ${a})\\n must be that same as the previous version of the image\\n (${o.data.width}, ${o.data.height})`))):this.fire(new e.ErrorEvent(new Error(\"Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));}hasImage(t){return t?!!this.style.getImage(t):(this.fire(new e.ErrorEvent(new Error(\"Missing required image id\"))),!1)}removeImage(e){this.style.removeImage(e);}loadImage(t,i){e.getImage(this._requestManager.transformRequest(t,e.ResourceType.Image),((t,o)=>{i(t,o instanceof e.window.HTMLImageElement?e.exported.getImageData(o):o);}));}listImages(){return this.style.listImages()}addLayer(e,t){return this._lazyInitEmptyStyle(),this.style.addLayer(e,t),this._update(!0)}moveLayer(e,t){return this.style.moveLayer(e,t),this._update(!0)}removeLayer(e){return this.style.removeLayer(e),this._update(!0)}getLayer(e){return this.style.getLayer(e)}setLayerZoomRange(e,t,i){return this.style.setLayerZoomRange(e,t,i),this._update(!0)}setFilter(e,t,i={}){return this.style.setFilter(e,t,i),this._update(!0)}getFilter(e){return this.style.getFilter(e)}setPaintProperty(e,t,i,o={}){return this.style.setPaintProperty(e,t,i,o),this._update(!0)}getPaintProperty(e,t){return this.style.getPaintProperty(e,t)}setLayoutProperty(e,t,i,o={}){return this.style.setLayoutProperty(e,t,i,o),this._update(!0)}getLayoutProperty(e,t){return this.style.getLayoutProperty(e,t)}setLight(e,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(e,t),this._update(!0)}getLight(){return this.style.getLight()}setTerrain(e){return this._lazyInitEmptyStyle(),!e&&this.transform.projection.requiresDraping?this.style.setTerrainForDraping():this.style.setTerrain(e),this._averageElevationLastSampledAt=-1/0,this._update(!0)}getTerrain(){return this.style?this.style.getTerrain():null}setFog(e){return this._lazyInitEmptyStyle(),this.style.setFog(e),this._update(!0)}getFog(){return this.style?this.style.getFog():null}_queryFogOpacity(t){return this.style&&this.style.fog?this.style.fog.getOpacityAtLatLng(e.LngLat.convert(t),this.transform):0}setFeatureState(e,t){return this.style.setFeatureState(e,t),this._update()}removeFeatureState(e,t){return this.style.removeFeatureState(e,t),this._update()}getFeatureState(e){return this.style.getFeatureState(e)}_updateContainerDimensions(){if(!this._container)return;const t=this._container.getBoundingClientRect().width||400,i=this._container.getBoundingClientRect().height||300;let o,r,n,a=this._container;for(;a&&(!r||!n);){const t=e.window.getComputedStyle(a).transform;t&&\"none\"!==t&&(o=t.match(/matrix.*\\((.+)\\)/)[1].split(\", \"),o[0]&&\"0\"!==o[0]&&\"1\"!==o[0]&&(r=o[0]),o[3]&&\"0\"!==o[3]&&\"1\"!==o[3]&&(n=o[3])),a=a.parentElement;}this._containerWidth=r?Math.abs(t/r):t,this._containerHeight=n?Math.abs(i/n):i;}_detectMissingCSS(){\"rgb(250, 128, 114)\"!==e.window.getComputedStyle(this._missingCSSCanary).getPropertyValue(\"background-color\")&&e.warnOnce(\"This page appears to be missing CSS declarations for Mapbox GL JS, which may cause the map to display incorrectly. Please ensure your page includes mapbox-gl.css, as described in https://www.mapbox.com/mapbox-gl-js/api/.\");}_setupContainer(){const e=this._container;e.classList.add(\"mapboxgl-map\"),(this._missingCSSCanary=n(\"div\",\"mapboxgl-canary\",e)).style.visibility=\"hidden\",this._detectMissingCSS();const t=this._canvasContainer=n(\"div\",\"mapboxgl-canvas-container\",e);this._interactive&&t.classList.add(\"mapboxgl-interactive\"),this._canvas=n(\"canvas\",\"mapboxgl-canvas\",t),this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",\"0\"),this._canvas.setAttribute(\"aria-label\",this._getUIString(\"Map.Title\")),this._canvas.setAttribute(\"role\",\"region\"),this._updateContainerDimensions(),this._resizeCanvas(this._containerWidth,this._containerHeight);const i=this._controlContainer=n(\"div\",\"mapboxgl-control-container\",e),o=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach((e=>{o[e]=n(\"div\",`mapboxgl-ctrl-${e}`,i);})),this._container.addEventListener(\"scroll\",this._onMapScroll,!1);}_resizeCanvas(t,i){const o=e.exported.devicePixelRatio||1;this._canvas.width=o*Math.ceil(t),this._canvas.height=o*Math.ceil(i),this._canvas.style.width=`${t}px`,this._canvas.style.height=`${i}px`;}_addMarker(e){this._markers.push(e);}_removeMarker(e){const t=this._markers.indexOf(e);-1!==t&&this._markers.splice(t,1);}_setupPainter(){const t=e.extend({},i.webGLContextAttributes,{failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1}),o=this._canvas.getContext(\"webgl\",t)||this._canvas.getContext(\"experimental-webgl\",t);o?(e.storeAuthState(o,!0),this.painter=new Fo(o,this.transform),this.on(\"data\",(e=>{\"source\"===e.dataType&&this.painter.setTileLoadedFlag(!0);})),e.exported$1.testSupport(o)):this.fire(new e.ErrorEvent(new Error(\"Failed to initialize WebGL\")));}_contextLost(t){t.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new e.Event(\"webglcontextlost\",{originalEvent:t}));}_contextRestored(t){this._setupPainter(),this.resize(),this._update(),this.fire(new e.Event(\"webglcontextrestored\",{originalEvent:t}));}_onMapScroll(e){if(e.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1}loaded(){return !this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(e){return this.style?(this._styleDirty=this._styleDirty||e,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(e){return this._update(),this._renderTaskQueue.add(e)}_cancelRenderFrame(e){this._renderTaskQueue.remove(e);}_requestDomTask(e){!this.loaded()||this.loaded()&&!this.isMoving()?e():this._domRenderTaskQueue.add(e);}_render(t){let i;const o=this.painter.context.extTimerQuery,r=e.exported.now();if(this.listens(\"gpu-timing-frame\")&&(i=o.createQueryEXT(),o.beginQueryEXT(o.TIME_ELAPSED_EXT,i)),this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(t),this._domRenderTaskQueue.run(t),this._removed)return;this._updateProjectionTransition();let n=!1;const a=this._isInitialLoad?0:this._fadeDuration;if(this.style&&this._styleDirty){this._styleDirty=!1;const t=this.transform.zoom,i=this.transform.pitch,o=e.exported.now();this.style.zoomHistory.update(t,o);const r=new e.EvaluationParameters(t,{now:o,fadeDuration:a,pitch:i,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),s=r.crossFadingFactor();1===s&&s===this._crossFadingFactor||(n=!0,this._crossFadingFactor=s),this.style.update(r);}this.style&&this.style.fog&&this.style.fog.hasTransition()&&(this.style._markersNeedUpdate=!0,this._sourcesDirty=!0);let s=!1;if(this.style&&this._sourcesDirty?(this._sourcesDirty=!1,this.painter._updateFog(this.style),this._updateTerrain(),s=this._updateAverageElevation(r),this.style._updateSources(this.transform),this._forceMarkerUpdate()):s=this._updateAverageElevation(r),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,a,this._crossSourceCollisions),this.style&&this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showTerrainWireframe:this.showTerrainWireframe,showOverdrawInspector:this._showOverdrawInspector,showQueryGeometry:!!this._showQueryGeometry,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:a,isInitialLoad:this._isInitialLoad,showPadding:this.showPadding,gpuTiming:!!this.listens(\"gpu-timing-layer\"),gpuTimingDeferredRender:!!this.listens(\"gpu-timing-deferred-render\"),speedIndexTiming:this.speedIndexTiming}),this.fire(new e.Event(\"render\")),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(new e.Event(\"load\"))),this.style&&(this.style.hasTransitions()||n)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles(),i){const t=e.exported.now()-r;o.endQueryEXT(o.TIME_ELAPSED_EXT,i),setTimeout((()=>{const n=o.getQueryObjectEXT(i,o.QUERY_RESULT_EXT)/1e6;o.deleteQueryEXT(i),this.fire(new e.Event(\"gpu-timing-frame\",{cpuTime:t,gpuTime:n})),e.window.performance.mark(\"frame-gpu\",{startTime:r,detail:{gpuTime:n}});}),50);}if(this.listens(\"gpu-timing-layer\")){const t=this.painter.collectGpuTimers();setTimeout((()=>{const i=this.painter.queryGpuTimers(t);this.fire(new e.Event(\"gpu-timing-layer\",{layerTimes:i}));}),50);}if(this.listens(\"gpu-timing-deferred-render\")){const t=this.painter.collectDeferredRenderGpuQueries();setTimeout((()=>{const i=this.painter.queryGpuTimeDeferredRender(t);this.fire(new e.Event(\"gpu-timing-deferred-render\",{gpuTime:i}));}),50);}const l=this._sourcesDirty||this._styleDirty||this._placementDirty||s;if(l||this._repaint)this.triggerRepaint();else {const t=!this.isMoving()&&this.loaded();if(t&&(s=this._updateAverageElevation(r,!0)),s)this.triggerRepaint();else if(this._triggerFrame(!1),t&&(this.fire(new e.Event(\"idle\")),this._isInitialLoad=!1,this.speedIndexTiming)){const t=this._calculateSpeedIndex();this.fire(new e.Event(\"speedindexcompleted\",{speedIndex:t})),this.speedIndexTiming=!1;}}!this._loaded||this._fullyLoaded||l||(this._fullyLoaded=!0,this._authenticate());}_forceMarkerUpdate(){for(const e of this._markers)e._update();}_updateAverageElevation(e,t=!1){const i=e=>(this.transform.averageElevation=e,this._update(!1),!0);if(!this.painter.averageElevationNeedsEasing())return 0!==this.transform.averageElevation&&i(0);if((t||e-this._averageElevationLastSampledAt>500)&&!this._averageElevation.isEasing(e)){const t=this.transform.averageElevation;let o=this.transform.sampleAverageElevation(),r=!1;this.transform.elevation&&(r=this.transform.elevation.exaggeration()!==this._averageElevationExaggeration,this._averageElevationExaggeration=this.transform.elevation.exaggeration()),isNaN(o)?o=0:this._averageElevationLastSampledAt=e;const n=Math.abs(t-o);if(n>1){if(this._isInitialLoad||r)return this._averageElevation.jumpTo(o),i(o);this._averageElevation.easeTo(o,e,300);}else if(n>1e-4)return this._averageElevation.jumpTo(o),i(o)}return !!this._averageElevation.isEasing(e)&&i(this._averageElevation.getValue(e))}_authenticate(){e.getMapSessionAPI(this._getMapId(),this._requestManager._skuToken,this._requestManager._customAccessToken,(t=>{if(t&&(t.message===e.AUTH_ERR_MSG||401===t.status)){const t=this.painter.context.gl;e.storeAuthState(t,!1),this._logoControl instanceof Jr&&this._logoControl._updateLogo(),t&&t.clear(t.DEPTH_BUFFER_BIT|t.COLOR_BUFFER_BIT|t.STENCIL_BUFFER_BIT),this._silenceAuthErrors||this.fire(new e.ErrorEvent(new Error(\"A valid Mapbox access token is required to use Mapbox GL JS. To create an account or a new access token, visit https://account.mapbox.com/\")));}})),e.postMapLoadEvent(this._getMapId(),this._requestManager._skuToken,this._requestManager._customAccessToken,(()=>{}));}_updateTerrain(){this.painter.updateTerrain(this.style,this.isMoving()||this.isRotating()||this.isZooming());}_calculateSpeedIndex(){const e=this.painter.canvasCopy(),t=this.painter.getCanvasCopiesAndTimestamps();t.timeStamps.push(performance.now());const i=this.painter.context.gl,o=i.createFramebuffer();function r(e){i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,e,0);const t=new Uint8Array(i.drawingBufferWidth*i.drawingBufferHeight*4);return i.readPixels(0,0,i.drawingBufferWidth,i.drawingBufferHeight,i.RGBA,i.UNSIGNED_BYTE,t),t}return i.bindFramebuffer(i.FRAMEBUFFER,o),this._canvasPixelComparison(r(e),t.canvasCopies.map(r),t.timeStamps)}_canvasPixelComparison(e,t,i){let o=i[1]-i[0];const r=e.length/4;for(let n=0;n<t.length;n++){const a=t[n];let s=0;for(let t=0;t<a.length;t+=4)a[t]===e[t]&&a[t+1]===e[t+1]&&a[t+2]===e[t+2]&&a[t+3]===e[t+3]&&(s+=1);o+=(i[n+2]-i[n+1])*(1-s/r);}return o}remove(){this._hash&&this._hash.remove();for(const e of this._controls)e.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this._domRenderTaskQueue.clear(),this.style&&this.style.destroy(),this.painter.destroy(),this.handlers&&this.handlers.destroy(),this.handlers=void 0,this.setStyle(null),void 0!==e.window&&(e.window.removeEventListener(\"resize\",this._onWindowResize,!1),e.window.removeEventListener(\"orientationchange\",this._onWindowResize,!1),e.window.removeEventListener(\"webkitfullscreenchange\",this._onWindowResize,!1),e.window.removeEventListener(\"online\",this._onWindowOnline,!1));const t=this.painter.context.gl.getExtension(\"WEBGL_lose_context\");t&&t.loseContext(),sn(this._canvasContainer),sn(this._controlContainer),sn(this._missingCSSCanary),this._container.classList.remove(\"mapboxgl-map\"),e.removeAuthState(this.painter.context.gl),this._removed=!0,this.fire(new e.Event(\"remove\"));}triggerRepaint(){this._triggerFrame(!0);}_triggerFrame(t){this._renderNextFrame=this._renderNextFrame||t,this.style&&!this._frame&&(this._frame=e.exported.frame((e=>{const t=!!this._renderNextFrame;this._frame=null,this._renderNextFrame=null,t&&this._render(e);})));}_preloadTiles(t){const i=this.style?Object.values(this.style._sourceCaches):[];return e.asyncAll(i,((e,i)=>e._preloadTiles(t,i)),(()=>{this.triggerRepaint();})),this}_onWindowOnline(){this._update();}_onWindowResize(e){this._trackResize&&this.resize({originalEvent:e})._update();}get showTileBoundaries(){return !!this._showTileBoundaries}set showTileBoundaries(e){this._showTileBoundaries!==e&&(this._showTileBoundaries=e,this._update());}get showTerrainWireframe(){return !!this._showTerrainWireframe}set showTerrainWireframe(e){this._showTerrainWireframe!==e&&(this._showTerrainWireframe=e,this._update());}get speedIndexTiming(){return !!this._speedIndexTiming}set speedIndexTiming(e){this._speedIndexTiming!==e&&(this._speedIndexTiming=e,this._update());}get showPadding(){return !!this._showPadding}set showPadding(e){this._showPadding!==e&&(this._showPadding=e,this._update());}get showCollisionBoxes(){return !!this._showCollisionBoxes}set showCollisionBoxes(e){this._showCollisionBoxes!==e&&(this._showCollisionBoxes=e,e?this.style._generateCollisionBoxes():this._update());}get showOverdrawInspector(){return !!this._showOverdrawInspector}set showOverdrawInspector(e){this._showOverdrawInspector!==e&&(this._showOverdrawInspector=e,this._update());}get repaint(){return !!this._repaint}set repaint(e){this._repaint!==e&&(this._repaint=e,this.triggerRepaint());}get vertices(){return !!this._vertices}set vertices(e){this._vertices=e,this._update();}_setCacheLimits(t,i){e.setCacheLimits(t,i);}get version(){return e.version}},NavigationControl:class{constructor(t){this.options=e.extend({},ln,t),this._container=n(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",(e=>e.preventDefault())),this.options.showZoom&&(e.bindAll([\"_setButtonTitle\",\"_updateZoomButtons\"],this),this._zoomInButton=this._createButton(\"mapboxgl-ctrl-zoom-in\",(e=>{this._map&&this._map.zoomIn({},{originalEvent:e});})),n(\"span\",\"mapboxgl-ctrl-icon\",this._zoomInButton).setAttribute(\"aria-hidden\",\"true\"),this._zoomOutButton=this._createButton(\"mapboxgl-ctrl-zoom-out\",(e=>{this._map&&this._map.zoomOut({},{originalEvent:e});})),n(\"span\",\"mapboxgl-ctrl-icon\",this._zoomOutButton).setAttribute(\"aria-hidden\",\"true\")),this.options.showCompass&&(e.bindAll([\"_rotateCompassArrow\"],this),this._compass=this._createButton(\"mapboxgl-ctrl-compass\",(e=>{const t=this._map;t&&(this.options.visualizePitch?t.resetNorthPitch({},{originalEvent:e}):t.resetNorth({},{originalEvent:e}));})),this._compassIcon=n(\"span\",\"mapboxgl-ctrl-icon\",this._compass),this._compassIcon.setAttribute(\"aria-hidden\",\"true\"));}_updateZoomButtons(){const e=this._map;if(!e)return;const t=e.getZoom(),i=t===e.getMaxZoom(),o=t===e.getMinZoom();this._zoomInButton.disabled=i,this._zoomOutButton.disabled=o,this._zoomInButton.setAttribute(\"aria-disabled\",i.toString()),this._zoomOutButton.setAttribute(\"aria-disabled\",o.toString());}_rotateCompassArrow(){const e=this._map;if(!e)return;const t=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(e.transform.pitch*(Math.PI/180)),.5)}) rotateX(${e.transform.pitch}deg) rotateZ(${e.transform.angle*(180/Math.PI)}deg)`:`rotate(${e.transform.angle*(180/Math.PI)}deg)`;e._requestDomTask((()=>{this._compassIcon&&(this._compassIcon.style.transform=t);}));}onAdd(e){return this._map=e,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,\"ZoomIn\"),this._setButtonTitle(this._zoomOutButton,\"ZoomOut\"),e.on(\"zoom\",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,\"ResetBearing\"),this.options.visualizePitch&&e.on(\"pitch\",this._rotateCompassArrow),e.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new cn(e,this._compass,this.options.visualizePitch)),this._container}onRemove(){const e=this._map;e&&(this._container.remove(),this.options.showZoom&&e.off(\"zoom\",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&e.off(\"pitch\",this._rotateCompassArrow),e.off(\"rotate\",this._rotateCompassArrow),this._handler&&this._handler.off(),this._handler=void 0),this._map=void 0);}_createButton(e,t){const i=n(\"button\",e,this._container);return i.type=\"button\",i.addEventListener(\"click\",t),i}_setButtonTitle(e,t){if(!this._map)return;const i=this._map._getUIString(`NavigationControl.${t}`);e.setAttribute(\"aria-label\",i),e.firstElementChild&&e.firstElementChild.setAttribute(\"title\",i);}},GeolocateControl:class extends e.Evented{constructor(t){super(),this.options=e.extend({geolocation:e.window.navigator.geolocation},hn,t),e.bindAll([\"_onSuccess\",\"_onError\",\"_onZoom\",\"_finish\",\"_setupUI\",\"_updateCamera\",\"_updateMarker\",\"_updateMarkerRotation\",\"_onDeviceOrientation\"],this),this._updateMarkerRotationThrottled=Jo(this._updateMarkerRotation,20),this._numberOfWatches=0;}onAdd(e){return this._map=e,this._container=n(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._checkGeolocationSupport(this._setupUI),this._container}onRemove(){void 0!==this._geolocationWatchID&&(this.options.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),this._container.remove(),this._map.off(\"zoom\",this._onZoom),this._map=void 0,this._numberOfWatches=0,this._noTimeout=!1;}_checkGeolocationSupport(t){void 0!==this._supportsGeolocation?t(this._supportsGeolocation):void 0!==e.window.navigator.permissions?e.window.navigator.permissions.query({name:\"geolocation\"}).then((e=>{this._supportsGeolocation=\"denied\"!==e.state,t(this._supportsGeolocation);})):(this._supportsGeolocation=!!this.options.geolocation,t(this._supportsGeolocation));}_isOutOfMapMaxBounds(e){const t=this._map.getMaxBounds(),i=e.coords;return !!t&&(i.longitude<t.getWest()||i.longitude>t.getEast()||i.latitude<t.getSouth()||i.latitude>t.getNorth())}_setErrorState(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\");}}_onSuccess(t){if(this._map){if(this._isOutOfMapMaxBounds(t))return this._setErrorState(),this.fire(new e.Event(\"outofmaxbounds\",t)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=t,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(t),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(t),this.options.showUserLocation&&this._dotElement.classList.remove(\"mapboxgl-user-location-dot-stale\"),this.fire(new e.Event(\"geolocate\",t)),this._finish();}}_updateCamera(t){const i=new e.LngLat(t.coords.longitude,t.coords.latitude),o=t.coords.accuracy,r=this._map.getBearing(),n=e.extend({bearing:r},this.options.fitBoundsOptions);this._map.fitBounds(i.toBounds(o),n,{geolocateSource:!0});}_updateMarker(t){if(t){const i=new e.LngLat(t.coords.longitude,t.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=t.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove();}_updateCircleRadius(){const t=this._map.transform,i=e.mercatorZfromAltitude(1,t._center.lat)*t.worldSize,o=Math.ceil(2*this._accuracy*i);this._circleElement.style.width=`${o}px`,this._circleElement.style.height=`${o}px`;}_onZoom(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();}_updateMarkerRotation(){this._userLocationDotMarker&&\"number\"==typeof this._heading?(this._userLocationDotMarker.setRotation(this._heading),this._dotElement.classList.add(\"mapboxgl-user-location-show-heading\")):(this._dotElement.classList.remove(\"mapboxgl-user-location-show-heading\"),this._userLocationDotMarker.setRotation(0));}_onError(t){if(this._map){if(this.options.trackUserLocation)if(1===t.code){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;const e=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.setAttribute(\"aria-label\",e),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute(\"title\",e),void 0!==this._geolocationWatchID&&this._clearWatch();}else {if(3===t.code&&this._noTimeout)return;this._setErrorState();}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"mapboxgl-user-location-dot-stale\"),this.fire(new e.Event(\"error\",t)),this._finish();}}_finish(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0;}_setupUI(t){if(this._container.addEventListener(\"contextmenu\",(e=>e.preventDefault())),this._geolocateButton=n(\"button\",\"mapboxgl-ctrl-geolocate\",this._container),n(\"span\",\"mapboxgl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",\"true\"),this._geolocateButton.type=\"button\",!1===t){e.warnOnce(\"Geolocation support is not available so the GeolocateControl will be disabled.\");const t=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.setAttribute(\"aria-label\",t),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute(\"title\",t);}else {const e=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.setAttribute(\"aria-label\",e),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute(\"title\",e);}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=n(\"div\",\"mapboxgl-user-location\"),this._dotElement.appendChild(n(\"div\",\"mapboxgl-user-location-dot\")),this._dotElement.appendChild(n(\"div\",\"mapboxgl-user-location-heading\")),this._userLocationDotMarker=new on({element:this._dotElement,rotationAlignment:\"map\",pitchAlignment:\"map\"}),this._circleElement=n(\"div\",\"mapboxgl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new on({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",(t=>{t.geolocateSource||\"ACTIVE_LOCK\"!==this._watchState||t.originalEvent&&\"resize\"===t.originalEvent.type||(this._watchState=\"BACKGROUND\",this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this.fire(new e.Event(\"trackuserlocationend\")));}));}_onDeviceOrientation(e){this._userLocationDotMarker&&(e.webkitCompassHeading?this._heading=e.webkitCompassHeading:!0===e.absolute&&(this._heading=-1*e.alpha),this._updateMarkerRotationThrottled());}trigger(){if(!this._setup)return e.warnOnce(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new e.Event(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":this._numberOfWatches--,this._noTimeout=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(new e.Event(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new e.Event(\"trackuserlocationstart\"));}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-active-error\");break;case\"BACKGROUND\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background\");break;case\"BACKGROUND_ERROR\":this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-background-error\");}if(\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let e;this._geolocateButton.classList.add(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),this._numberOfWatches++,this._numberOfWatches>1?(e={maximumAge:6e5,timeout:0},this._noTimeout=!0):(e=this.options.positionOptions,this._noTimeout=!1),this._geolocationWatchID=this.options.geolocation.watchPosition(this._onSuccess,this._onError,e),this.options.showUserHeading&&this._addDeviceOrientationListener();}}else this.options.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return !0}_addDeviceOrientationListener(){const t=()=>{e.window.addEventListener(\"ondeviceorientationabsolute\"in e.window?\"deviceorientationabsolute\":\"deviceorientation\",this._onDeviceOrientation);};void 0!==e.window.DeviceMotionEvent&&\"function\"==typeof e.window.DeviceMotionEvent.requestPermission?DeviceOrientationEvent.requestPermission().then((e=>{\"granted\"===e&&t();})).catch(console.error):t();}_clearWatch(){this.options.geolocation.clearWatch(this._geolocationWatchID),e.window.removeEventListener(\"deviceorientation\",this._onDeviceOrientation),e.window.removeEventListener(\"deviceorientationabsolute\",this._onDeviceOrientation),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null);}},AttributionControl:Kr,ScaleControl:class{constructor(t){this.options=e.extend({},un,t),function(){try{return new Intl.NumberFormat(\"en\",{style:\"unit\",unitDisplay:\"narrow\",unit:\"meter\"}),!0}catch(e){return !1}}()||(this._setScale=_n.bind(this)),e.bindAll([\"_update\",\"_setScale\",\"setUnit\"],this);}getDefaultPosition(){return \"bottom-left\"}_update(){const e=this.options.maxWidth||100,t=this._map,i=t._containerHeight/2,o=t._containerWidth/2-e/2,r=t.unproject([o,i]),n=t.unproject([o+e,i]),a=r.distanceTo(n);if(\"imperial\"===this.options.unit){const t=3.2808*a;t>5280?this._setScale(e,t/5280,\"mile\"):this._setScale(e,t,\"foot\");}else \"nautical\"===this.options.unit?this._setScale(e,a/1852,\"nautical-mile\"):a>=1e3?this._setScale(e,a/1e3,\"kilometer\"):this._setScale(e,a,\"meter\");}_setScale(e,t,i){const o=dn(t),r=o/t;this._map._requestDomTask((()=>{this._container.style.width=e*r+\"px\",this._container.innerHTML=\"nautical-mile\"!==i?new Intl.NumberFormat(this._language,{style:\"unit\",unitDisplay:\"narrow\",unit:i}).format(o):`${o} nm`;}));}onAdd(e){return this._map=e,this._language=e.getLanguage(),this._container=n(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",e.getContainer()),this._container.dir=\"auto\",this._map.on(\"move\",this._update),this._update(),this._container}onRemove(){this._container.remove(),this._map.off(\"move\",this._update),this._map=void 0;}_setLanguage(e){this._language=e,this._update();}setUnit(e){this.options.unit=e,this._update();}},FullscreenControl:class{constructor(t){this._fullscreen=!1,t&&t.container&&(t.container instanceof e.window.HTMLElement?this._container=t.container:e.warnOnce(\"Full screen control 'container' must be a DOM element.\")),e.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in e.window.document?this._fullscreenchange=\"fullscreenchange\":\"onwebkitfullscreenchange\"in e.window.document&&(this._fullscreenchange=\"webkitfullscreenchange\");}onAdd(t){return this._map=t,this._container||(this._container=this._map.getContainer()),this._controlContainer=n(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display=\"none\",e.warnOnce(\"This device does not support fullscreen mode.\")),this._controlContainer}onRemove(){this._controlContainer.remove(),this._map=null,e.window.document.removeEventListener(this._fullscreenchange,this._changeIcon);}_checkFullscreenSupport(){return !(!e.window.document.fullscreenEnabled&&!e.window.document.webkitFullscreenEnabled)}_setupUI(){const t=this._fullscreenButton=n(\"button\",\"mapboxgl-ctrl-fullscreen\",this._controlContainer);n(\"span\",\"mapboxgl-ctrl-icon\",t).setAttribute(\"aria-hidden\",\"true\"),t.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),e.window.document.addEventListener(this._fullscreenchange,this._changeIcon);}_updateTitle(){const e=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",e),this._fullscreenButton.firstElementChild&&this._fullscreenButton.firstElementChild.setAttribute(\"title\",e);}_getTitle(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")}_isFullscreen(){return this._fullscreen}_changeIcon(){(e.window.document.fullscreenElement||e.window.document.webkitFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-fullscreen\"),this._updateTitle());}_onClickFullscreen(){this._isFullscreen()?e.window.document.exitFullscreen?e.window.document.exitFullscreen():e.window.document.webkitCancelFullScreen&&e.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen();}},Popup:class extends e.Evented{constructor(t){super(),this.options=e.extend(Object.create(pn),t),e.bindAll([\"_update\",\"_onClose\",\"remove\",\"_onMouseEvent\"],this),this._classList=new Set(t&&t.className?t.className.trim().split(/\\s+/):[]);}addTo(t){return this._map&&this.remove(),this._map=t,this.options.closeOnClick&&t.on(\"preclick\",this._onClose),this.options.closeOnMove&&t.on(\"move\",this._onClose),t.on(\"remove\",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(t.on(\"mousemove\",this._onMouseEvent),t.on(\"mouseup\",this._onMouseEvent),t._canvasContainer.classList.add(\"mapboxgl-track-pointer\")):t.on(\"move\",this._update),this.fire(new e.Event(\"open\")),this}isOpen(){return !!this._map}remove(){this._content&&this._content.remove(),this._container&&(this._container.remove(),this._container=void 0);const t=this._map;return t&&(t.off(\"move\",this._update),t.off(\"move\",this._onClose),t.off(\"preclick\",this._onClose),t.off(\"click\",this._onClose),t.off(\"remove\",this.remove),t.off(\"mousemove\",this._onMouseEvent),t.off(\"mouseup\",this._onMouseEvent),t.off(\"drag\",this._onMouseEvent),this._map=void 0),this.fire(new e.Event(\"close\")),this}getLngLat(){return this._lngLat}setLngLat(t){this._lngLat=e.LngLat.convert(t),this._pos=null,this._trackPointer=!1,this._update();const i=this._map;return i&&(i.on(\"move\",this._update),i.off(\"mousemove\",this._onMouseEvent),i._canvasContainer.classList.remove(\"mapboxgl-track-pointer\")),this}trackPointer(){this._trackPointer=!0,this._pos=null,this._update();const e=this._map;return e&&(e.off(\"move\",this._update),e.on(\"mousemove\",this._onMouseEvent),e.on(\"drag\",this._onMouseEvent),e._canvasContainer.classList.add(\"mapboxgl-track-pointer\")),this}getElement(){return this._container}setText(t){return this.setDOMContent(e.window.document.createTextNode(t))}setHTML(t){const i=e.window.document.createDocumentFragment(),o=e.window.document.createElement(\"body\");let r;for(o.innerHTML=t;r=o.firstChild,r;)i.appendChild(r);return this.setDOMContent(i)}getMaxWidth(){return this._container&&this._container.style.maxWidth}setMaxWidth(e){return this.options.maxWidth=e,this._update(),this}setDOMContent(e){let t=this._content;if(t)for(;t.hasChildNodes();)t.firstChild&&t.removeChild(t.firstChild);else t=this._content=n(\"div\",\"mapboxgl-popup-content\",this._container||void 0);if(t.appendChild(e),this.options.closeButton){const e=this._closeButton=n(\"button\",\"mapboxgl-popup-close-button\",t);e.type=\"button\",e.setAttribute(\"aria-label\",\"Close popup\"),e.setAttribute(\"aria-hidden\",\"true\"),e.innerHTML=\"×\",e.addEventListener(\"click\",this._onClose);}return this._update(),this._focusFirstElement(),this}addClassName(e){return this._classList.add(e),this._updateClassList(),this}removeClassName(e){return this._classList.delete(e),this._updateClassList(),this}setOffset(e){return this.options.offset=e,this._update(),this}toggleClassName(e){let t;return this._classList.delete(e)?t=!1:(this._classList.add(e),t=!0),this._updateClassList(),t}_onMouseEvent(e){this._update(e.point);}_getAnchor(e){if(this.options.anchor)return this.options.anchor;const t=this._map,i=this._container,o=this._pos;if(!t||!i||!o)return \"bottom\";const r=i.offsetWidth,n=i.offsetHeight,a=o.x<r/2,s=o.x>t.transform.width-r/2;if(o.y+e<n)return a?\"top-left\":s?\"top-right\":\"top\";if(o.y>t.transform.height-n){if(a)return \"bottom-left\";if(s)return \"bottom-right\"}return a?\"left\":s?\"right\":\"bottom\"}_updateClassList(){const e=this._container;if(!e)return;const t=[...this._classList];t.push(\"mapboxgl-popup\"),this._anchor&&t.push(`mapboxgl-popup-anchor-${this._anchor}`),this._trackPointer&&t.push(\"mapboxgl-popup-track-pointer\"),e.className=t.join(\" \");}_update(t){const i=this._map,o=this._content;if(!i||!this._lngLat&&!this._trackPointer||!o)return;let r=this._container;if(r||(r=this._container=n(\"div\",\"mapboxgl-popup\",i.getContainer()),this._tip=n(\"div\",\"mapboxgl-popup-tip\",r),r.appendChild(o)),this.options.maxWidth&&r.style.maxWidth!==this.options.maxWidth&&(r.style.maxWidth=this.options.maxWidth),i.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=en(this._lngLat,this._pos,i.transform)),!this._trackPointer||t){const e=this._pos=this._trackPointer&&t?t:i.project(this._lngLat),o=fn(this.options.offset),r=this._anchor=this._getAnchor(o.y),n=fn(this.options.offset,r),a=e.add(n).round();i._requestDomTask((()=>{this._container&&r&&(this._container.style.transform=`${tn[r]} translate(${a.x}px,${a.y}px)`);}));}if(!this._marker&&i._showingGlobe()){const t=e.isLngLatBehindGlobe(i.transform,this._lngLat)?0:1;this._setOpacity(t);}this._updateClassList();}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const e=this._container.querySelector(mn);e&&e.focus();}_onClose(){this.remove();}_setOpacity(e){this._container&&(this._container.style.opacity=`${e}`),this._content&&(this._content.style.pointerEvents=e?\"auto\":\"none\");}},Marker:on,Style:ei,LngLat:e.LngLat,LngLatBounds:e.LngLatBounds,Point:e.pointGeometry,MercatorCoordinate:e.MercatorCoordinate,FreeCameraOptions:Zo,Evented:e.Evented,config:e.config,prewarm:function(){Ge().acquire(Fe);},clearPrewarmedResources:function(){const e=Ne;e&&(e.isPreloaded()&&1===e.numActive()?(e.release(Fe),Ne=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"));},get accessToken(){return e.config.ACCESS_TOKEN},set accessToken(t){e.config.ACCESS_TOKEN=t;},get baseApiUrl(){return e.config.API_URL},set baseApiUrl(t){e.config.API_URL=t;},get workerCount(){return Ue.workerCount},set workerCount(e){Ue.workerCount=e;},get maxParallelImageRequests(){return e.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(t){e.config.MAX_PARALLEL_IMAGE_REQUESTS=t;},clearStorage(t){e.clearTileCache(t);},workerUrl:\"\",workerClass:null,setNow:e.exported.setNow,restoreNow:e.exported.restoreNow};return gn}));\n\n//\n\nvar mapboxgl$1 = mapboxgl;\n\nreturn mapboxgl$1;\n\n}));\n//# sourceMappingURL=mapbox-gl.js.map\n","import React, { useMemo } from 'react';\nimport { useStores } from '../stores/useStores';\n\n\nexport function useBoundaryLayers(fillOpacity) {\n const { traplogStore } = useStores();\n\n const layers = useMemo(\n () => [\n {\n id: 'layerStyleThresholdMet',\n type: 'fill',\n paint: {\n 'fill-color': '#DC3545',\n 'fill-opacity': fillOpacity[0]\n },\n filter: [\n 'any',\n ['==', 'status', 'pre_trap_catch_threshold_met'],\n ['==', 'status', 'accumulation_threshold_met'],\n ['==', 'status', 'average_threshold_met']\n ]\n },\n {\n id: 'layerStyleNearThreshold',\n type: 'fill',\n paint: {\n 'fill-color': '#FFC107',\n 'fill-opacity': fillOpacity[0]\n },\n filter: ['==', 'status', 'near_accumulation_threshold']\n },\n {\n id: 'layerStyleGood',\n type: 'fill',\n paint: {\n 'fill-color': '#28A745',\n 'fill-opacity': fillOpacity[0]\n },\n filter: ['any', ['==', 'status', 'good'], ['==', 'status', 'sprayed']]\n },\n {\n id: 'layerStyleNoData',\n type: 'fill',\n paint: {\n 'fill-color': '#6C757D',\n 'fill-opacity': fillOpacity[1]\n },\n filter: ['==', 'status', 'no_data']\n },\n {\n id: 'layerOutlineStyleThresholdMet',\n type: 'line',\n paint: {\n 'line-color': '#DC3545',\n 'line-width': fillOpacity[2]\n },\n filter: [\n 'any',\n ['==', 'status', 'pre_trap_catch_threshold_met'],\n ['==', 'status', 'accumulation_threshold_met'],\n ['==', 'status', 'average_threshold_met']\n ]\n },\n {\n id: 'layerOutlineStyleNearThreshold',\n type: 'line',\n paint: {\n 'line-color': '#FFC107',\n 'line-width': fillOpacity[2]\n },\n filter: ['==', 'status', 'near_accumulation_threshold']\n },\n {\n id: 'layerOutlineStyleGood',\n type: 'line',\n paint: {\n 'line-color': '#28A745',\n 'line-width': fillOpacity[2]\n },\n filter: ['any', ['==', 'status', 'good'], ['==', 'status', 'sprayed']]\n },\n {\n id: 'layerOutlineStyleNoData',\n type: 'line',\n paint: {\n 'line-color': '#6C757D',\n 'line-width': fillOpacity[2]\n },\n filter: ['==', 'status', 'no_data']\n },\n {\n id: 'layerSelectedStyleThresholdMet',\n type: 'fill',\n paint: {\n 'fill-color': '#DC3545',\n 'fill-opacity': fillOpacity[3]\n },\n filter: [\n 'all',\n [\n '==',\n 'id',\n traplogStore.selectedTrappingZoneId\n ? traplogStore.selectedTrappingZoneId\n : 0\n ],\n [\n 'any',\n ['==', 'status', 'pre_trap_catch_threshold_met'],\n ['==', 'status', 'accumulation_threshold_met'],\n ['==', 'status', 'average_threshold_met']\n ]\n ]\n },\n {\n id: 'layerSelectedStyleNearThreshold',\n type: 'fill',\n paint: {\n 'fill-color': '#FFC107',\n 'fill-opacity': fillOpacity[3]\n },\n filter: [\n 'all',\n [\n '==',\n 'id',\n traplogStore.selectedTrappingZoneId\n ? traplogStore.selectedTrappingZoneId\n : 0\n ],\n ['==', 'status', 'near_accumulation_threshold']\n ]\n },\n {\n id: 'layerSelectedStyleGood',\n type: 'fill',\n paint: {\n 'fill-color': '#28A745',\n 'fill-opacity': fillOpacity[3]\n },\n filter: [\n 'all',\n [\n '==',\n 'id',\n traplogStore.selectedTrappingZoneId\n ? traplogStore.selectedTrappingZoneId\n : 0\n ],\n ['any', ['==', 'status', 'good'], ['==', 'status', 'sprayed']]\n ]\n },\n {\n id: 'layerSelectedStyleNoData',\n type: 'fill',\n paint: {\n 'fill-color': '#6C757D',\n 'fill-opacity': fillOpacity[3]\n },\n filter: [\n 'all',\n [\n '==',\n 'id',\n traplogStore.selectedTrappingZoneId\n ? traplogStore.selectedTrappingZoneId\n : 0\n ],\n ['==', 'status', 'no_data']\n ]\n }\n ],\n [traplogStore.selectedTrappingZoneId]\n );\n\n return layers;\n}","import bbox from '@turf/bbox';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useStores } from '../stores/useStores';\n\nexport function useMapState() {\n const { traplogStore } = useStores();\n const [viewport, setViewport] = useState({\n latitude: -40.9753799,\n longitude: 176.8903929,\n zoom: 4,\n height: 400,\n width: '100%'\n });\n const [initialBoundsSet, setInitialBoundsSet] = useState(false);\n const selectedInsectGroupId = traplogStore.selectedInsectGroupId;\n const mapRef = useRef();\n\n const boundaryData = useMemo(() => {\n const geojson = {\n type: 'FeatureCollection',\n features: []\n };\n traplogStore.trappingZones.forEach((trappingZone) => {\n const boundry = JSON.parse(trappingZone.boundry);\n if (boundry)\n geojson.features.push({\n type: 'Feature',\n geometry: boundry,\n properties: {\n status: traplogStore.trappingResults[trappingZone.id]\n ? traplogStore.trappingResults[trappingZone.id].overview.status\n : '',\n id: trappingZone.id,\n trappingZoneName: trappingZone.name\n }\n });\n });\n return geojson;\n }, [traplogStore.trappingZones, traplogStore.trappingResults]);\n\n const trapData = useMemo(() => {\n const traps = [];\n traplogStore.trappingZones.forEach((trappingZone) => {\n trappingZone.traps.forEach((trap) => {\n const location = trap.location;\n const isInGroup = trap.trap_lure.insects.some((insect) => {\n return insect.insect_group_id === selectedInsectGroupId;\n });\n if (location && isInGroup) {\n // Ensure lat and long are in the correct index.\n const coords = [];\n if (location.coordinates[0] >= -90 && location.coordinates[0] <= 90) {\n coords[0] = location.coordinates[0];\n coords[1] = location.coordinates[1];\n } else {\n coords[0] = location.coordinates[1];\n coords[1] = location.coordinates[0];\n }\n traps.push({\n id: trap.id,\n code: trap.code,\n name: trap.name,\n lureName: trap.trap_lure.name,\n displayColour: trap.trap_lure.display_color,\n locationDescription: trap.location_description,\n location: coords\n });\n }\n });\n });\n return traps;\n }, [traplogStore.trappingZones, traplogStore.trappingResults]);\n\n const fitBounds = (_map, { duration }) => {\n const map = _map || mapRef.current.getMap();\n const features = boundaryData.features;\n if (features && features.length > 0) {\n let minLng;\n let minLat;\n let maxLng;\n let maxLat;\n\n boundaryData.features.forEach((feature) => {\n const [newMinLng, newMinLat, newMaxLng, newMaxLat] = bbox(feature);\n if (minLng === undefined || newMinLng < minLng) minLng = newMinLng;\n if (maxLng === undefined || newMaxLng > maxLng) maxLng = newMaxLng;\n if (minLat === undefined || newMinLat < minLat) minLat = newMinLat;\n if (maxLat === undefined || newMaxLat > maxLat) maxLat = newMaxLat;\n });\n\n map.fitBounds(\n [\n [minLng, minLat],\n [maxLng, maxLat]\n ],\n { padding: 50, duration }\n );\n }\n };\n\n const mapRefWrapper = useCallback((node) => {\n if (node) {\n if (boundaryData && !initialBoundsSet) {\n fitBounds(node, { duration: 0 });\n setInitialBoundsSet(true);\n }\n }\n mapRef.current = node;\n }, []);\n\n useEffect(() => {\n if (\n !initialBoundsSet &&\n boundaryData.features.length > 0 &&\n Number.isInteger(viewport.width)\n ) {\n setInitialBoundsSet(true);\n }\n }, [viewport, boundaryData, initialBoundsSet]);\n\n return [\n boundaryData,\n trapData,\n viewport,\n setViewport,\n mapRef,\n mapRefWrapper,\n initialBoundsSet,\n fitBounds\n ];\n}\n","import React from 'react';\nimport { Button, ButtonGroup } from 'react-bootstrap';\nimport isMobile from 'ismobilejs';\n\nexport const monoStyle = 'cklubq40e06ej17ojtb4pg2o1';\nexport const satelliteStyle = 'cknpikbkn0jut17nwxfi4mbh8';\n\nconst PreviewButton = (props) => {\n const newStyle =\n props.mapStyle === satelliteStyle ? monoStyle : satelliteStyle;\n return (\n <div\n className='m-3'\n style={{\n position: 'absolute',\n bottom: 0,\n right: 0\n }}\n >\n {' '}\n <ButtonGroup>\n <Button\n onClick={() => props.setMapStyle(monoStyle)}\n variant={props.mapStyle === monoStyle ? 'secondary' : 'light'}\n >\n Map View\n </Button>\n <Button\n onClick={() => props.setMapStyle(satelliteStyle)}\n variant={props.mapStyle === satelliteStyle ? 'secondary' : 'light'}\n >\n Satellite View\n </Button>\n </ButtonGroup>\n {/* {isMobile(window.navigator).any ? (\n ) : (\n <Button\n variant='secondary'\n className='p-0'\n onClick={() => props.setMapStyle(newStyle)}\n >\n <img\n alt='satellite-style'\n src={`https://api.mapbox.com/styles/v1/hortplus/${newStyle}/static/172.7749,-41.1388,2.55,0,0/150x150?access_token=${process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}&attribution=false&logo=false`}\n />\n </Button>\n )} */}\n </div>\n );\n};\n\nexport default PreviewButton;\n","import { faTriangle } from '@fortawesome/pro-regular-svg-icons/faTriangle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { PropertiesStore } from '@hortplus/properties-react';\nimport mapboxgl from 'mapbox-gl';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport { Button, Col, Popover, Row } from 'react-bootstrap';\nimport Map, { Layer, Marker, Source } from 'react-map-gl-7';\nimport { useBoundaryLayers } from '../hooks/useBoundaryLayers';\nimport { useMapState } from '../hooks/useMapState';\nimport '../styles.module.css';\nimport PreviewButton, { monoStyle } from './PreviewButton';\n\nconst statusLabel = (status) => {\n switch (status) {\n case 'pre_trap_catch_threshold_met':\n return 'Threshold Met';\n case 'accumulation_threshold_met':\n return 'Threshold Met';\n case 'average_threshold_met':\n return 'Threshold Met';\n case 'near_accumulation_threshold':\n return 'Near Threshold';\n case 'good':\n return 'No Action Required';\n case 'sprayed':\n return 'Sprayed';\n case 'no_data':\n return 'Not Monitored';\n default:\n return 'Unknown';\n }\n};\n\nconst PropertyOverviewMap = (props) => {\n const [mapStyle, setMapStyle] = useState(monoStyle);\n const [boundaryHoverInfo, setBoundaryHoverInfo] = useState();\n const [trapHoverInfo, setTrapHoverInfo] = useState({});\n const layers = useBoundaryLayers([0.2, 0.4, 4, 0.5]);\n const [\n boundaryData,\n trapData,\n viewport,\n setViewport,\n mapRef,\n mapRefWrapper,\n ,\n fitBounds\n ] = useMapState();\n\n const toPoint = () => {\n return mapRef.current\n .getMap()\n .project(new mapboxgl.LngLat(trapHoverInfo.y, trapHoverInfo.x));\n };\n\n return boundaryData.features.length > 0 ? (\n <Map\n ref={mapRefWrapper}\n initialViewState={viewport}\n onViewportChange={(nextViewport) => setViewport(nextViewport)}\n mapStyle={`mapbox://styles/hortplus/${mapStyle}`}\n interactiveLayerIds={[\n 'layerStyleThresholdMet',\n 'layerStyleNearThreshold',\n 'layerStyleGood',\n 'layerStyleNoData'\n ]}\n onMouseMove={(e) => {\n const classList = e.originalEvent.srcElement.classList;\n // Check if element is a trap icon,a marker container or none.\n if (\n classList &&\n (classList.contains('fa-triangle') ||\n classList.contains('mapboxgl-marker') ||\n classList.length === 0)\n ) {\n setBoundaryHoverInfo(null);\n } else {\n const hoveredFeature = e.features && e.features[0];\n setBoundaryHoverInfo(\n hoveredFeature\n ? {\n feature: hoveredFeature,\n x: e.originalEvent.offsetX,\n y: e.originalEvent.offsetY\n }\n : null\n );\n }\n }}\n onClick={(e) => {\n const hoveredFeature = e.features && e.features[0];\n if (hoveredFeature && props.onClick)\n props.onClick(hoveredFeature.properties.id);\n }}\n mapboxAccessToken={process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}\n >\n <div\n className='m-3'\n style={{\n position: 'absolute',\n top: 0,\n right: 0\n }}\n >\n <Button\n variant='light'\n onClick={() => fitBounds(null, { duration: 500 })}\n className='m-3 float-right'\n >\n Reset\n </Button>\n </div>\n\n <Source id='trappingZones' type='geojson' data={boundaryData}>\n {layers.map((layer) => (\n <Layer key={layer.id} {...layer} />\n ))}\n </Source>\n {/** Trap markers */}\n {trapData.map((trap) => {\n const zoomLevel = viewport.zoom;\n return (\n // viewport.zoom is not updating so need to set condition\n // to one that will always be true to display traps.\n // Original value - 13.5.\n zoomLevel > 1 && (\n <Marker\n key={trap.id}\n latitude={trap.location[0]}\n longitude={trap.location[1]}\n offsetTop={-18}\n offsetLeft={-8}\n >\n <FontAwesomeIcon\n style={{ color: trap.displayColour }}\n onMouseEnter={() => {\n setBoundaryHoverInfo(null);\n setTrapHoverInfo({\n id: trap.id,\n code: trap.code,\n name: trap.name,\n lureName: trap.lureName,\n locationDescription: trap.locationDescription,\n x: trap.location[0],\n y: trap.location[1]\n });\n }}\n onMouseLeave={() => {\n setTrapHoverInfo({});\n }}\n icon={faTriangle}\n size='lg'\n />\n </Marker>\n )\n );\n })}\n {boundaryHoverInfo ? (\n <Popover\n id={boundaryHoverInfo.feature.properties.id}\n placement='auto'\n style={{\n left:\n viewport.width - boundaryHoverInfo.x < 200\n ? boundaryHoverInfo.x - 200\n : boundaryHoverInfo.x + 5,\n top:\n viewport.height - boundaryHoverInfo.y < 100\n ? boundaryHoverInfo.y - 90\n : boundaryHoverInfo.y,\n position: 'absolute',\n width: '200px',\n zIndex: 9,\n pointerEvents: 'none'\n }}\n >\n <Popover.Title>\n Production Site:{' '}\n <b>{boundaryHoverInfo.feature.properties.trappingZoneName}</b>\n </Popover.Title>\n <Popover.Content>\n Status:{' '}\n <b>{statusLabel(boundaryHoverInfo.feature.properties.status)}</b>\n </Popover.Content>\n </Popover>\n ) : null}\n {trapHoverInfo.id && (\n <Popover\n id={trapHoverInfo.name}\n placement='auto'\n style={{\n left: toPoint().x,\n top: toPoint().y,\n position: 'absolute',\n width: '200px',\n zIndex: 9,\n pointerEvents: 'none'\n }}\n >\n <Popover.Title>\n Name: <b>{trapHoverInfo.name}</b>\n </Popover.Title>\n <Popover.Content>\n <div>\n ID: <b>{trapHoverInfo.code}</b>\n </div>\n <div>\n Lure Name: <b>{trapHoverInfo.lureName}</b>\n </div>\n <div>\n Location: <b>{trapHoverInfo.locationDescription}</b>\n </div>\n </Popover.Content>\n </Popover>\n )}\n <PreviewButton\n setMapStyle={setMapStyle}\n mapStyle={mapStyle}\n viewport={viewport}\n />\n </Map>\n ) : (\n <Row className='pt-5'>\n <Col>\n <h4 className='text-center'>\n This property does not have any boundary data.\n </h4>\n </Col>\n </Row>\n );\n};\n\nPropertyOverviewMap.propTypes = {\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n onClick: PropTypes.func\n};\n\nexport default observer(PropertyOverviewMap);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Spinner } from 'react-bootstrap';\n\nfunction LoadingOverlay(props) {\n const style = {\n position: 'absolute',\n top: 0,\n right: 0,\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: '10'\n };\n\n if (!props.hideOpacity) {\n style.backgroundColor = props.color ? props.color : 'white';\n style.opacity = props.opacity ? props.opacity : 0.8;\n }\n\n return (\n <div style={style}>\n <Spinner animation='border' variant='primary' />\n </div>\n );\n}\n\nLoadingOverlay.propTypes = {\n hideOpacity: PropTypes.bool\n};\n\nexport default LoadingOverlay;\n","/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexport var earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: earthRadius / 111325,\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var unitsFactors = {\n centimeters: 100,\n centimetres: 100,\n degrees: 1 / 111325,\n feet: 3.28084,\n inches: 39.37,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n meters: 1,\n metres: 1,\n miles: 1 / 1609.344,\n millimeters: 1000,\n millimetres: 1000,\n nauticalmiles: 1 / 1852,\n radians: 1 / earthRadius,\n yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var areaFactors = {\n acres: 0.000247105,\n centimeters: 10000,\n centimetres: 10000,\n feet: 10.763910417,\n hectares: 0.0001,\n inches: 1550.003100006,\n kilometers: 0.000001,\n kilometres: 0.000001,\n meters: 1,\n metres: 1,\n miles: 3.86e-7,\n millimeters: 1000000,\n millimetres: 1000000,\n yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nexport function feature(geom, properties, options) {\n if (options === void 0) { options = {}; }\n var feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nexport function geometry(type, coordinates, _options) {\n if (_options === void 0) { _options = {}; }\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nexport function point(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n var geom = {\n type: \"Point\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nexport function points(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nexport function polygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n var ring = coordinates_1[_i];\n if (ring.length < 4) {\n throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n var geom = {\n type: \"Polygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nexport function polygons(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nexport function lineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n var geom = {\n type: \"LineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nexport function lineStrings(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nexport function featureCollection(features, options) {\n if (options === void 0) { options = {}; }\n var fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nexport function multiLineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiLineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nexport function multiPoint(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPoint\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nexport function multiPolygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPolygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nexport function geometryCollection(geometries, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"GeometryCollection\",\n geometries: geometries,\n };\n return feature(geom, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nexport function round(num, precision) {\n if (precision === void 0) { precision = 0; }\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nexport function radiansToLength(radians, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nexport function lengthToRadians(distance, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nexport function lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nexport function bearingToAzimuth(bearing) {\n var angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nexport function radiansToDegrees(radians) {\n var degrees = radians % (2 * Math.PI);\n return (degrees * 180) / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nexport function degreesToRadians(degrees) {\n var radians = degrees % 360;\n return (radians * Math.PI) / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nexport function convertLength(length, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nexport function convertArea(area, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"meters\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n var startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n var finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return (area / startFactor) * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nexport function isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nexport function isObject(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nexport function validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach(function (num) {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nexport function validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\n","import MapboxDraw from '@mapbox/mapbox-gl-draw';\nimport React from 'react';\nimport { useControl } from 'react-map-gl-7';\n\nfunction DrawControl(props, ref) {\n useControl(\n ({map}) => {\n const draw = new MapboxDraw(props);\n if (ref) ref.current = draw;\n map.addControl(draw)\n map.on('draw.create', props.onCreate);\n map.on('draw.update', props.onUpdate);\n map.on('draw.delete', props.onDelete);\n if (props.initialBoundry) draw.add(props.initialBoundry);\n return draw;\n },\n ({map}) => {\n map.off('draw.create', props.onCreate);\n map.off('draw.update', props.onUpdate);\n map.off('draw.delete', props.onDelete);\n },\n {\n position: props.position\n }\n );\n return null\n}\n\nDrawControl.defaultProps = {\n onCreate: () => {},\n onUpdate: () => {},\n onDelete: () => {}\n};\n\nexport default React.forwardRef(DrawControl);","import { faTriangle } from '@fortawesome/pro-regular-svg-icons/faTriangle';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport booleanPointInPolygon from '@turf/boolean-point-in-polygon';\nimport { point, polygon } from '@turf/helpers';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport Map, { Layer, Marker, Source } from 'react-map-gl-7';\nimport { useBoundaryLayers } from '../hooks/useBoundaryLayers';\nimport { useMapState } from '../hooks/useMapState';\nimport { useStores } from '../stores/useStores';\nimport DrawControl from './DrawControl';\nimport PreviewButton, { monoStyle } from './PreviewButton';\n\nfunction UpdateTrapsMap({\n updateType,\n trapCoords,\n setTrapCoords,\n trappingZoneName\n}) {\n const { traplogStore } = useStores();\n const [mapStyle, setMapStyle] = useState(monoStyle);\n const [boundaryToEdit, setBoundaryToEdit] = useState();\n const drawRef = useRef();\n const [updatedBoundary, setUpdatedBoundary] = useState();\n const layers = useBoundaryLayers([0.2, 0.4, 4, 0.5]);\n const [\n boundaryData,\n ,\n viewport,\n setViewport,\n mapRef,\n mapRefWrapper,\n initialBoundsSet\n ] = useMapState();\n\n useEffect(() => {\n if (mapRef.current && !trapCoords && initialBoundsSet) {\n const center = mapRef.current.getMap().getCenter();\n setTrapCoords(center);\n }\n }, [mapRef.current]);\n\n const onMarkerDragStart = useCallback((event) => {\n if (updateType === 'edit') {\n drawRef.current.deleteAll();\n setBoundaryToEdit(undefined);\n }\n setTrapCoords({\n lat: event.lngLat.lat,\n lng: event.lngLat.lng,\n ...trapCoords\n });\n }, []);\n\n const onMarkerDragEnd = useCallback(\n (event) => {\n setTrapCoords({\n lat: event.lngLat.lat,\n lng: event.lngLat.lng,\n valid: trapCoords.valid,\n currentZone: trapCoords.currentZone\n });\n },\n [trapCoords]\n );\n\n const onMarkerDrag = useCallback(\n (event) => {\n let isValid = false;\n for (const feature of boundaryData.features) {\n const name = feature.properties.trappingZoneName;\n if (name === trappingZoneName) {\n const coords = feature.geometry.coordinates;\n const pnt = point([event.lngLat.lng, event.lngLat.lat]);\n const poly = polygon(coords);\n if (booleanPointInPolygon(pnt, poly)) {\n isValid = true;\n break;\n }\n } else continue;\n }\n if (isValid)\n setTrapCoords({\n lat: event.lngLat.lat,\n lng: event.lngLat.lng,\n currentZone: trappingZoneName,\n valid: true\n });\n else\n setTrapCoords({\n lat: event.lngLat.lat,\n lng: event.lngLat.lng,\n currentZone: trappingZoneName,\n valid: false\n });\n },\n [trapCoords, boundaryData, trappingZoneName]\n );\n\n const onMapClick = useCallback(\n (e) => {\n // Only want to allow boundary edits in edit mode.\n if (updateType === 'edit') {\n const clickedFeature = e.features && e.features[0];\n // Boundary clicked so add polygon to map\n if (clickedFeature) {\n const boundary = boundaryData.features.find(\n (element) => element.properties.id === clickedFeature.properties.id\n );\n if (boundaryToEdit?.properties.id !== boundary.properties.id) {\n // First remove the polygon before adding.\n drawRef.current.deleteAll();\n drawRef.current.add(boundary);\n drawRef.current.changeMode('simple_select');\n setBoundaryToEdit(boundary);\n }\n // No boundary clicked so remove the polygon\n // and update if modified.\n } else {\n // Save the modified boundary.\n if (updatedBoundary) {\n const targetZone = traplogStore.trappingZones.find(\n (zone) => zone.id === updatedBoundary.properties.id\n );\n const newZones = traplogStore.trappingZones.filter(\n (zone) => zone.id !== updatedBoundary.properties.id\n );\n targetZone.boundry = JSON.stringify(updatedBoundary.geometry);\n newZones.push(targetZone);\n traplogStore.trappingZones = newZones;\n }\n }\n }\n },\n [boundaryToEdit, updatedBoundary, traplogStore.trappingZones]\n );\n\n const onEditorUpdate = useCallback((map) => {\n setUpdatedBoundary(map.features[0]);\n }, []);\n\n return boundaryData.features.length > 0 ? (\n <Map\n ref={mapRefWrapper}\n initialViewState={viewport}\n onViewportChange={(nextViewport) => setViewport(nextViewport)}\n mapStyle={`mapbox://styles/hortplus/${mapStyle}`}\n interactiveLayerIds={[\n 'layerStyleThresholdMet',\n 'layerStyleNearThreshold',\n 'layerStyleGood',\n 'layerStyleNoData'\n ]}\n onClick={onMapClick}\n doubleClickZoom={false}\n mapboxAccessToken={process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}\n >\n <DrawControl\n ref={drawRef}\n initialBoundry={boundaryToEdit}\n position='top-right'\n displayControlsDefault={false}\n defaultMode={boundaryToEdit ? 'simple_select' : 'draw_polygon'}\n onUpdate={onEditorUpdate}\n />\n <Source id='trappingZones' type='geojson' data={boundaryData}>\n {layers.map((layer) => (\n <Layer key={layer.id} {...layer} />\n ))}\n </Source>\n {trapCoords && (\n <Marker\n latitude={trapCoords.lat}\n longitude={trapCoords.lng}\n offsetTop={-18}\n offsetLeft={-8}\n onDragEnd={onMarkerDragEnd}\n onDragStart={onMarkerDragStart}\n onDrag={onMarkerDrag}\n draggable\n >\n <FontAwesomeIcon icon={faTriangle} size={'lg'} />\n </Marker>\n )}\n <PreviewButton\n setMapStyle={setMapStyle}\n mapStyle={mapStyle}\n viewport={viewport}\n />\n </Map>\n ) : (\n <p className='text-warning'>This trapping zone has no bonudary data!</p>\n );\n}\n\nUpdateTrapsMap.propTypes = {\n updateType: PropTypes.string,\n trapCoords: PropTypes.object,\n setTrapCoords: PropTypes.func,\n trappingZoneName: PropTypes.string\n};\n\nexport default observer(UpdateTrapsMap);\n","import { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Form } from 'react-bootstrap';\nimport Select from 'react-select';\nimport { useStores } from '../stores/useStores';\n\nfunction TrapForm({\n handleSubmit,\n handleChange,\n handleBlur,\n values,\n errors,\n setFieldValue,\n trapCoords,\n setTrapCoords,\n chargedInput = true,\n map\n}) {\n const { traplogStore } = useStores();\n\n const selectedInsectGroupId = traplogStore.selectedInsectGroupId;\n const trapLures = traplogStore.trapLures.filter((trapLure) => {\n // If the selected trapping zone has a mating distruption and has\n // correct insect group, then only display lures with '10' concentration.\n // Otherwise, if selected trapping zone has a mating distruption and has\n // incorrect insect group, then only display lures with '1' concentration.\n if (values.trappingZone) {\n const currentZone = traplogStore.trappingZones.find(\n (zone) => zone.id === values.trappingZone.value\n );\n const matingDistruption = currentZone.mating_disruption_tie;\n if (matingDistruption) {\n return trapLure.insects.some((insect) => {\n if (insect.insect_group_id === selectedInsectGroupId) {\n if (\n matingDistruption.insects.some(\n (insect) => insect.insect_group_id === selectedInsectGroupId\n )\n ) {\n return trapLure.concentration === '10';\n } else {\n return trapLure.concentration === '1';\n }\n }\n });\n } else {\n return trapLure.insects.some(\n (insect) =>\n insect.insect_group_id === selectedInsectGroupId &&\n trapLure.concentration !== '10'\n );\n }\n }\n return trapLure.insects.some(\n (insect) => insect.insect_group_id === selectedInsectGroupId\n );\n });\n\n return (\n <Form noValidate onSubmit={handleSubmit}>\n {/* Trapping Zone */}\n <Form.Group controlId='trapping_zone_id'>\n <Form.Label>Production Site</Form.Label>\n <Select\n options={traplogStore.trappingZones.map((trappingZone) => {\n return {\n value: trappingZone.id,\n label: trappingZone.name\n };\n })}\n defaultValue={values.trappingZone}\n onChange={(option) => {\n setFieldValue('trappingZone', option);\n if (!map) return;\n if (trapCoords.currentZone !== option.label) {\n setTrapCoords({\n ...trapCoords,\n valid: false,\n currentZone: option.label\n });\n } else {\n setTrapCoords({\n ...trapCoords,\n valid: true,\n currentZone: option.label\n });\n }\n }}\n />\n <Form.Control.Feedback\n type='invalid'\n style={{ display: errors.trappingZone ? 'inline-block' : 'none' }}\n >\n {errors.trappingZone}\n </Form.Control.Feedback>\n </Form.Group>\n\n {/* Code */}\n <Form.Group controlId='code'>\n <Form.Label>Trap Id</Form.Label>\n <Form.Control\n type='text'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.code}\n placeholder='Trap Id'\n isInvalid={errors.code}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.code}\n </Form.Control.Feedback>\n </Form.Group>\n\n {/* Name */}\n <Form.Group controlId='name'>\n <Form.Label>Name</Form.Label>\n <Form.Control\n type='text'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.name}\n placeholder='Trap Name'\n isInvalid={errors.name}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.name}\n </Form.Control.Feedback>\n </Form.Group>\n\n {/* Location Description */}\n <Form.Group controlId='location_description'>\n <Form.Label>Location Description</Form.Label>\n <Form.Control\n as='textarea'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.location_description}\n placeholder='Location'\n isInvalid={errors.location_description}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.location_description}\n </Form.Control.Feedback>\n </Form.Group>\n\n {/* Trap Lure */}\n <Form.Group controlId='trap_lure_id'>\n <Form.Label>Trap Lure</Form.Label>\n <Select\n options={trapLures.map((trapLure) => {\n return {\n value: trapLure.id,\n label: `${trapLure.name} x ${trapLure.concentration}`\n };\n })}\n isLoading={traplogStore.loadingTrapLures}\n defaultValue={values.trapLure}\n onChange={(option) => setFieldValue('trapLure', option)}\n />\n {errors.trapLure ? (\n <div className='text-danger'>{errors.trapLure}</div>\n ) : null}\n </Form.Group>\n\n {/* Comments */}\n <Form.Group controlId='comments'>\n <Form.Label>Comments</Form.Label>\n <Form.Control\n as='textarea'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.comments}\n placeholder='Comments'\n isInvalid={errors.comments}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.comments}\n </Form.Control.Feedback>\n </Form.Group>\n\n {/* Setup */}\n <Form.Group controlId='setup_at'>\n <Form.Label>Setup</Form.Label>\n <Form.Control\n type='date'\n onChange={handleChange}\n onBlur={handleBlur}\n isInvalid={errors.setup_at}\n defaultValue={values.setup_at}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.setup_at}\n </Form.Control.Feedback>\n </Form.Group>\n\n {/* Charged */}\n {chargedInput && (\n <Form.Group controlId='charged_at'>\n <Form.Label>Charged</Form.Label>\n <Form.Control\n type='date'\n onChange={handleChange}\n onBlur={handleBlur}\n isInvalid={errors.charged_at}\n defaultValue={values.charged_at}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.charged_at}\n </Form.Control.Feedback>\n </Form.Group>\n )}\n </Form>\n );\n}\n\nTrapForm.propTypes = {\n fProps: PropTypes.any,\n trapCoords: PropTypes.object,\n setTrapCoords: PropTypes.func\n};\n\nexport default observer(TrapForm);\n","import { observer } from 'mobx-react';\nimport React, { Fragment } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport LoadingOverlay from '../LoadingOverlay';\nimport UpdateTrapsMap from '../maps/UpdateTrapsMap';\nimport TrapForm from './TrapForm';\n\nfunction TrapModalContent({\n selectedDatabase,\n bearerToken,\n refreshBearerToken,\n type,\n fProps,\n trapCoords,\n setTrapCoords,\n map,\n chargedInput,\n}) {\n return (\n <Fragment>\n <TrapForm\n {...fProps}\n trapCoords={trapCoords}\n setTrapCoords={setTrapCoords}\n chargedInput={chargedInput}\n map={map}\n />\n {map && (\n <Row style={{height: '300px'}}>\n <Col>\n <UpdateTrapsMap\n selectedDatabase={selectedDatabase}\n bearerToken={bearerToken}\n refreshBearerToken={refreshBearerToken}\n updateType={type}\n trapCoords={trapCoords}\n setTrapCoords={setTrapCoords}\n trappingZoneName={fProps.values.trappingZone.label || 'All'}\n />\n </Col>\n </Row>\n )}\n {!trapCoords ? null : !trapCoords.valid ? (\n <p className='text-warning'>\n {`Warning: The trap is placed outside production site ${trapCoords.currentZone}`}\n </p>\n ) : (\n <div style={{ paddingTop: '40px' }}></div>\n )}\n <Button varient='primary' type='button' onClick={fProps.handleSubmit}>\n Submit\n </Button>\n {fProps.isSubmitting ? <LoadingOverlay /> : null}\n </Fragment>\n );\n}\n\nexport default observer(TrapModalContent);\n","import { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useState } from 'react';\nimport { Button, Modal } from 'react-bootstrap';\nimport { errorToast } from '../helpers/ToastUtils';\nimport { useStores } from '../stores/useStores';\nimport TrapModalContent from './TrapModalContent';\n\nfunction AddTrapModal(props) {\n const [show, setShow] = useState(false);\n const [trapCoords, setTrapCoords] = useState();\n const { traplogStore } = useStores();\n const hide = () => {\n setShow(false);\n };\n const traps = traplogStore.traps;\n\n // Take first trap lure from an existing trap (if one exists).\n const initialTrapLure = traps?.length > 0 && traps[0].trap_lure ? {\n value: traps[0].trap_lure.id,\n label: traps[0].trap_lure.name\n } : null;\n\n return (\n <Fragment>\n <Button type='button' variant='link' onClick={() => setShow(true)}>\n Add Trap\n </Button>\n <Modal backdrop='static' show={show} onHide={() => hide()}>\n <Modal.Header closeButton>\n <Modal.Title>Add Trap</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Formik\n initialValues={{\n // react-select values\n trappingZone: traplogStore.selectedTrappingZone\n ? {\n value: traplogStore.selectedTrappingZone.id,\n label: traplogStore.selectedTrappingZone.name\n }\n : '',\n trapLure: initialTrapLure || '',\n\n // Regular inputs\n code: '',\n name: '',\n location_description: '',\n comments: '',\n setup_at: moment().format('YYYY-MM-DD'),\n charged_at: moment().format('YYYY-MM-DD')\n }}\n validate={(values) => {\n const errors = {};\n\n if (!values.trappingZone) errors.trappingZone = 'Required';\n if (!values.code) errors.code = 'Required';\n if (!values.trapLure) errors.trapLure = 'Required';\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/traps?with[]=trapLure.insects`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n },\n body: JSON.stringify({\n trapping_zone_id: values.trappingZone.value,\n code: values.code,\n name: values.name,\n location_description: values.location_description,\n lat: trapCoords?.lat,\n lon: trapCoords?.lng,\n trap_lure_id: values.trapLure.value,\n comments: values.comments,\n setup_at: `${values.setup_at}T00:00:00`,\n charged_at: `${values.charged_at}T00:00:00`\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n traplogStore.addTrap(data);\n hide();\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n errorToast('Failed to add a new trap.');\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n }}\n >\n {(fProps) => (\n <TrapModalContent\n type='add'\n fProps={fProps}\n trapCoords={trapCoords}\n setTrapCoords={setTrapCoords}\n map={props.map}\n chargedInput={props.chargedInput}\n />\n )}\n </Formik>\n </Modal.Body>\n </Modal>\n </Fragment>\n );\n}\n\nAddTrapModal.propTypes = {\n map: PropTypes.bool,\n chargedInput: PropTypes.bool,\n selectedDatabase: PropTypes.string.isRequired,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n trap: PropTypes.object,\n setTrapId: PropTypes.func\n};\n\nexport default observer(AddTrapModal);\n","export const randomDigits = (length) => {\n return Math.floor(\n Math.pow(10, length - 1) + Math.random() * 9 * Math.pow(10, length - 1)\n );\n};\n\n// Regex for the date format that the API accepts. This format\n// also takes into acount leap years and ensures the date is correct.\nexport const dateFormatRegex =\n /^(\\d{4})-((0[1-9]|1[0-2])-(0[1-9]|1\\d|2\\d|30)|(0[13-9]|1[0-2])-(31)|02-(0[1-9]|1\\d|2\\d))$/i;\n\nexport const TRAPPING_MIN_YEAR = 2018;\n\nexport const HIGH_PRESSURE_THRESHOLDS_NUM = 5;\n\nexport const boostrapColourToHex = {\n primary: '#007bff',\n secondary: '#6c757d',\n success: '#28a745',\n danger: '#dc3545',\n warning: '#ffc107',\n info: '#17a2b8',\n light: '#f8f9fa',\n dark: '#343a40',\n white: '#ffffff'\n};\n","import React, { Fragment, useState } from 'react';\nimport { Col, Form } from 'react-bootstrap';\n\nfunction TrapMonitoringRecordsForm({\n handleSubmit,\n handleChange,\n handleBlur,\n values,\n errors,\n setFieldValue,\n isSubmitting,\n setFieldTouched\n}) {\n const [recordCapsBases, setRecordCapsBases] = useState({\n allCaps: false,\n allBases: false\n });\n\n return (\n <Form>\n <Form.Group controlId='visited_date'>\n <Form.Label>Date</Form.Label>\n <Form.Control\n type='date'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.visited_date}\n isInvalid={errors.visited_date}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.visited_date}\n </Form.Control.Feedback>\n </Form.Group>\n\n <Form.Group controlId='operator'>\n <Form.Label>Operator</Form.Label>\n <Form.Control\n type='text'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.operator}\n placeholder='Operator'\n isInvalid={errors.operator}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.operator}\n </Form.Control.Feedback>\n </Form.Group>\n {values.trapMonitoringRecords?.length > 0 && (\n <Form.Row className='text-center'>\n <Col>\n <Form.Check\n className='float-right'\n custom\n checked={recordCapsBases.allCaps}\n type='checkbox'\n id={`all-caps`}\n label='All Caps'\n onChange={() => {\n values.trapMonitoringRecords.forEach((_, i) => {\n setFieldValue(\n `trapMonitoringRecords.${i}.lure_changed`,\n !recordCapsBases.allCaps\n );\n setRecordCapsBases({\n ...recordCapsBases,\n allCaps: !recordCapsBases.allCaps\n });\n });\n }}\n />\n </Col>\n <Col>\n <Form.Check\n className='float-left'\n custom\n checked={recordCapsBases.allBases}\n type='checkbox'\n id={`all-bases`}\n label='All Bases'\n onChange={() => {\n values.trapMonitoringRecords.forEach((_, i) => {\n setFieldValue(\n `trapMonitoringRecords.${i}.base_changed`,\n !recordCapsBases.allBases\n );\n setRecordCapsBases({\n ...recordCapsBases,\n allBases: !recordCapsBases.allBases\n });\n });\n }}\n />\n </Col>\n </Form.Row>\n )}\n {values.trapMonitoringRecords.map((record, i) => (\n <Fragment key={i}>\n <hr className='my-1' />\n <Form.Row>\n <h5>\n {record.trap.name} ({record.trap.code})\n </h5>\n </Form.Row>\n <Form.Row>\n <Form.Group\n as={Col}\n xs={4}\n className='d-flex align-items-center'\n controlId='value'\n >\n <div>\n <Form.Label>Catch</Form.Label>\n <Form.Control\n type='number'\n min='0'\n step='1'\n name={`trapMonitoringRecords.${i}.amount`}\n value={record.amount}\n onChange={handleChange}\n onBlur={handleBlur}\n isInvalid={\n errors.trapMonitoringRecords &&\n errors.trapMonitoringRecords[record.trap.id]\n ? errors.trapMonitoringRecords[record.trap.id].amount\n : false\n }\n />\n <Form.Control.Feedback type='invalid'>\n {errors.trapMonitoringRecords &&\n errors.trapMonitoringRecords[record.trap.id]\n ? errors.trapMonitoringRecords[record.trap.id].amount\n : null}\n </Form.Control.Feedback>\n </div>\n </Form.Group>\n <Form.Group\n as={Col}\n xs={8}\n sm={4}\n className='d-flex flex-column justify-content-center align-items-start'\n >\n <Form.Check\n custom\n checked={record.lure_changed}\n type='checkbox'\n id={`${i}-lure-changed`}\n label='Cap changed'\n onChange={(e) => {\n const checked = e.target.checked;\n setFieldValue(\n `trapMonitoringRecords.${i}.lure_changed`,\n checked\n );\n if (!checked)\n setRecordCapsBases({ ...recordCapsBases, allCaps: false });\n }}\n />\n <Form.Check\n custom\n checked={record.base_changed}\n type='checkbox'\n id={`${i}-base-changed`}\n label='Based changed'\n onChange={(e) => {\n const checked = e.target.checked;\n setFieldValue(\n `trapMonitoringRecords.${i}.base_changed`,\n checked\n );\n if (!checked)\n setRecordCapsBases({ ...recordCapsBases, allBases: false });\n }}\n />\n </Form.Group>\n <Form.Group\n as={Col}\n xs={12}\n sm={4}\n className='d-flex flex-column justify-content-center align-items-start'\n >\n <Form.Control\n as='textarea'\n name={`trapMonitoringRecords.${i}.comments`}\n placeholder='Comments'\n value={record.comments}\n onChange={handleChange}\n onBlur={handleBlur}\n isInvalid={\n errors.trapMonitoringRecords &&\n errors.trapMonitoringRecords[record.trap.id]\n ? errors.trapMonitoringRecords[record.trap.id].comments\n : false\n }\n />\n <Form.Control.Feedback type='invalid'>\n {errors.trapMonitoringRecords &&\n errors.trapMonitoringRecords[record.trap.id]\n ? errors.trapMonitoringRecords[record.trap.id].comments\n : null}\n </Form.Control.Feedback>\n </Form.Group>\n </Form.Row>\n </Fragment>\n ))}\n </Form>\n );\n}\n\nexport default TrapMonitoringRecordsForm;\n","import { faPlus } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { PropertiesStore } from '@hortplus/properties-react';\nimport { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useState } from 'react';\nimport { Button, Modal } from 'react-bootstrap';\nimport LoadingOverlay from '../LoadingOverlay';\nimport { errorToast } from '../helpers/ToastUtils';\nimport { useStores } from '../stores/useStores';\nimport { dateFormatRegex } from '../utils';\nimport TrapMonitoringRecordsForm from './TrapMonitoringRecordsForm';\n\nfunction AddTrapMonitoringRecordsModal(props) {\n const [show, setShow] = useState(false);\n const { traplogStore } = useStores();\n\n const databaseYear = traplogStore.selectedDatabaseYear() - 1;\n\n const hide = () => {\n setShow(false);\n };\n\n // Use the selected trapping zone if one selected.\n // Otherwise, get trapping zone from props.\n const trappingZone = traplogStore.selectedTrappingZoneResults\n ? traplogStore.selectedTrappingZoneResults\n : traplogStore.trappingResults[props.trappingZone?.id];\n const trappingZoneResults = trappingZone.results\n .slice()\n .sort((a, b) => new Date(a.date) - new Date(b.date));\n\n const monitoringDates = trappingZone?.results\n .filter((result) => result.trapping_zone_sprays.length === 0)\n .map((result) => result.date)\n .sort((a, b) => new Date(a) - new Date(b));\n\n const defaultDate = () => {\n if (!monitoringDates || monitoringDates.length === 0) return '';\n const tzHasBiofix = trappingZoneResults[\n trappingZoneResults.length - 1\n ]?.trapping_zone_sprays?.some((tzs) => tzs.biofix);\n const days = tzHasBiofix ? 14 : 7;\n // Return the last monitoring date plus 'days'.\n const now = new Date(monitoringDates[monitoringDates.length - 1]);\n now.setDate(now.getDate() + days);\n const date = now.toISOString().split('T')[0];\n return date;\n };\n\n return (\n <Fragment>\n <Button\n className='mx-2'\n variant='outline-primary'\n onClick={() => setShow(true)}\n >\n <FontAwesomeIcon icon={faPlus} /> Add Monitoring\n </Button>\n <Modal backdrop='static' show={show} onHide={() => hide()}>\n <Modal.Header closeButton>\n <Modal.Title>Add Monitoring</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Formik\n initialValues={{\n visited_date: defaultDate(),\n operator: '',\n trapMonitoringRecords: props.trappingZone.traps\n .filter((trap) =>\n trap.trap_lure.insects.some(\n (insect) =>\n insect.insect_group.id ===\n traplogStore.selectedInsectGroupId\n )\n )\n .map((trap) => {\n return {\n trap: trap,\n trap_id: trap.id,\n amount: 0,\n lure_changed: false,\n base_changed: false,\n comments: '',\n visited_at: '',\n location: '',\n location_accuracy: ''\n };\n })\n }}\n validate={(values, props) => {\n const errors = {};\n const visitedYear = moment(values.visited_date).year();\n\n if (!values.visited_date) errors.visited_date = 'Required';\n else if (visitedYear < databaseYear) {\n errors.visited_date = `The year must be ${databaseYear} or later.`;\n } else if (visitedYear > databaseYear + 1) {\n errors.visited_date = `The year cannot be larger than ${\n databaseYear + 1\n }.`;\n } else if (!dateFormatRegex.test(values.visited_date)) {\n errors.visited_date =\n 'Invalid date. Please use the format \"YYYY-MM-DD\", and be careful of leap years.';\n } else {\n // Validate the 'visited_date' date range.\n const visitedDate = new Date(values.visited_date);\n const month = visitedDate.getMonth() + 1;\n if (month < 9 && month > 5) {\n errors.visited_date =\n 'Date must be between September and the following May';\n }\n }\n if (!values.operator) errors.operator = 'Required';\n\n const trapMonitoringRecords = {};\n values.trapMonitoringRecords.forEach((record) => {\n const recordErrors = {};\n\n if (record.amount !== 0 && !record.amount)\n recordErrors.amount = 'Required';\n\n if (Object.keys(recordErrors).length > 0)\n trapMonitoringRecords[record.trap.id] = recordErrors;\n });\n\n if (Object.keys(trapMonitoringRecords).length > 0)\n errors.trapMonitoringRecords = trapMonitoringRecords;\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n const body = {\n records: values.trapMonitoringRecords.map((record) => {\n return {\n ...record,\n visited_date: values.visited_date,\n operator: values.operator\n };\n })\n };\n\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trap-monitoring-records`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${traplogStore.bearerToken}`,\n SeasonalDatabase: traplogStore.selectedDatabase\n },\n body: JSON.stringify(body)\n }\n )\n .then(async (res) => {\n if (res.ok) return res.json();\n else if (res.status === 401)\n traplogStore.refreshBearerToken();\n else if (res.status === 409) {\n const date = moment(values.visited_date).format(\n 'DD/MM/YYYY'\n );\n errorToast(\n <div>A monitoring record already exists with date <b>{date}.</b></div>\n );\n } else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n traplogStore.loadTrappingZones(\n traplogStore.bearerToken,\n traplogStore.refreshBearerToken,\n traplogStore.selectedDatabase,\n props.propertiesStore.selectedPropertyId\n );\n hide();\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <Fragment>\n <TrapMonitoringRecordsForm {...props} />\n <Button\n varient='primary'\n type='button'\n onClick={props.handleSubmit}\n >\n Submit\n </Button>\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </Fragment>\n )}\n </Formik>\n </Modal.Body>\n </Modal>\n </Fragment>\n );\n}\n\nAddTrapMonitoringRecordsModal.propTypes = {\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n trappingZone: PropTypes.object.isRequired\n};\n\nexport default observer(AddTrapMonitoringRecordsModal);\n","import { observer } from 'mobx-react';\nimport React, { useCallback, useState } from 'react';\nimport Map, { Layer, Source } from 'react-map-gl-7';\nimport { useBoundaryLayers } from '../hooks/useBoundaryLayers';\nimport { useMapState } from '../hooks/useMapState';\nimport DrawControl from './DrawControl';\nimport PreviewButton, { monoStyle } from './PreviewButton';\n\nfunction AddTrappingZonesMap({ setBoundary }) {\n const [mapStyle, setMapStyle] = useState(monoStyle);\n const layers = useBoundaryLayers([0.2, 0.4, 4, 0.5]);\n const [boundaryData, , viewport, setViewport, , mapRefWrapper] =\n useMapState();\n\n const onEditorUpdate = useCallback((map) => {\n if (map.features && map.features.length > 0) {\n setBoundary(map.features[0]);\n }\n }, []);\n\n const onEditorDelete = useCallback(() => {\n setBoundary(null);\n }, []);\n\n return (\n <Map\n ref={mapRefWrapper}\n initialViewState={viewport}\n onViewportChange={(nextViewport) => setViewport(nextViewport)}\n mapStyle={`mapbox://styles/hortplus/${mapStyle}`}\n mapboxAccessToken={process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}\n doubleClickZoom={false}\n >\n <DrawControl\n position='top-right'\n displayControlsDefault={false}\n controls={{\n polygon: true\n }}\n defaultMode={'draw_polygon'}\n onCreate={onEditorUpdate}\n onUpdate={onEditorUpdate}\n onDelete={onEditorDelete}\n />\n <Source id='trappingZones' type='geojson' data={boundaryData}>\n {layers.map((layer) => (\n <Layer key={layer.id} {...layer} />\n ))}\n </Source>\n <PreviewButton\n setMapStyle={setMapStyle}\n mapStyle={mapStyle}\n viewport={viewport}\n />\n </Map>\n );\n}\n\nexport default observer(AddTrappingZonesMap);\n","import { observer } from 'mobx-react';\nimport React from 'react';\nimport { Button, Col, Form, Row } from 'react-bootstrap';\nimport Select from 'react-select';\nimport AddTrappingZonesMap from '../maps/AddTrappingZonesMap';\nimport { useStores } from '../stores/useStores';\n\nfunction AddTrappingZoneForm({\n handleSubmit,\n handleChange,\n handleBlur,\n values,\n errors,\n setFieldValue,\n setBoundary,\n map,\n customOptions\n}) {\n const { traplogStore } = useStores();\n\n const formOptions = customOptions?.form;\n const nameOptions = formOptions?.name;\n\n return (\n <Form\n noValidate\n onSubmit={(e) => {\n e.preventDefault();\n handleSubmit(e);\n }}\n >\n {/* Name */}\n <Form.Group controlId='name'>\n <Form.Label>\n {nameOptions?.label ? nameOptions?.label : 'Name'}\n </Form.Label>\n <Form.Control\n type='text'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.name}\n placeholder={\n nameOptions?.placeholder ? nameOptions?.placeholder : 'Name'\n }\n isInvalid={errors.name}\n maxLength={nameOptions?.maxLength}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.name}\n </Form.Control.Feedback>\n </Form.Group>\n\n {/* Mating Disruption Tie */}\n <Form.Group controlId='mating_disruption_tie_id'>\n <Form.Label>\n Mating Disruption Tie{' '}\n <i className='ml-1' style={{ letterSpacing: '0.5px' }}>\n (if used\n </i>\n )\n </Form.Label>\n <Select\n options={traplogStore.matingDisruptionTies.map(\n (matingDisruptionTie) => {\n return {\n value: matingDisruptionTie.id,\n label: matingDisruptionTie.name\n };\n }\n )}\n defaultValue={values.matingDisruptionTie}\n onChange={(option) => setFieldValue('matingDisruptionTie', option)}\n isClearable\n />\n {errors.matingDisruptionTie ? (\n <div className='text-danger'>{errors.matingDisruptionTie}</div>\n ) : null}\n </Form.Group>\n {/* High Risk Production Site */}\n <Form.Group controlId='high_risk'>\n <Form.Check\n custom\n disabled={!values.cmsm}\n type='checkbox'\n id='high_risk'\n label='High Risk Production Site?'\n checked={values.high_risk}\n onChange={() => {\n if (!values.cmsm) return;\n setFieldValue('high_risk', Number(!values.high_risk));\n }}\n defaultChecked={values.high_risk}\n style={{ zIndex: 0 }}\n />\n </Form.Group>\n {/* Codling Moth Sensitive Market */}\n <Form.Group controlId='cmsm'>\n <Form.Check\n custom\n type='checkbox'\n id='cmsm'\n label='Codling Moth Sensitive Market?'\n onChange={() => setFieldValue('cmsm', !values.cmsm)}\n defaultChecked={values.cmsm}\n style={{ zIndex: 0 }}\n />\n </Form.Group>\n {map && (\n <Row style={{ height: '300px' }}>\n <Col>\n <AddTrappingZonesMap setBoundary={setBoundary} />\n </Col>\n </Row>\n )}\n <Button className='mt-3' varient='primary' type='submit'>\n Submit\n </Button>\n </Form>\n );\n}\n\nexport default observer(AddTrappingZoneForm);\n","import { PropertiesStore } from '@hortplus/properties-react';\nimport { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useState } from 'react';\nimport { Button, Modal } from 'react-bootstrap';\nimport LoadingOverlay from '../LoadingOverlay';\nimport { useStores } from '../stores/useStores';\nimport AddTrappingZoneForm from './AddTrappingZoneForm';\n\nfunction AddTrappingZoneModal(props) {\n const { traplogStore } = useStores();\n const [show, setShow] = useState(false);\n const [boundary, setBoundary] = useState(null);\n\n const modalOptions = props.customOptions?.modal;\n\n const hide = () => {\n setShow(false);\n };\n\n return (\n <Fragment>\n <Button type='button' variant='link' onClick={() => setShow(true)}>\n Add Production Site\n </Button>\n <Modal show={show} backdrop='static' onHide={() => hide()}>\n <Modal.Header closeButton>\n <Modal.Title>Add Production Site</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Formik\n validateOnChange={false}\n validateOnBlur={false}\n validateOnMount={false}\n initialValues={{\n // react-select values\n matingDisruptionTie: '',\n\n // Regular inputs\n property_id: props.propertiesStore.selectedPropertyId,\n name: '',\n cmsm: false,\n high_risk: false\n }}\n validate={(values, props) => {\n const errors = {};\n\n if (values.property_id === null)\n errors.matingDisruptionTie = 'Required';\n if (!values.name) errors.name = 'Required';\n return errors;\n }}\n onSubmit={(values, actions) => {\n if (props.map) {\n if (!boundary) {\n actions.setSubmitting(false);\n return;\n }\n }\n const geometry = boundary?.geometry;\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-zones`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n },\n body: JSON.stringify({\n property_id: values.property_id,\n mating_disruption_tie_id: values.matingDisruptionTie\n ? values.matingDisruptionTie.value\n : null,\n name: values.name,\n cmsm: values.cmsm,\n high_risk: values.high_risk,\n boundry: geometry ? JSON.stringify(geometry) : null\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n traplogStore.loadTrappingZones(\n props.bearerToken,\n props.refreshBearerToken,\n props.selectedDatabase,\n props.propertiesStore.selectedPropertyId\n );\n hide();\n traplogStore.setSelectedTrappingZoneId(data.id);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n }}\n >\n {(fProps) => (\n <Fragment>\n <AddTrappingZoneForm\n {...fProps}\n setBoundary={setBoundary}\n map={props.map}\n customOptions={modalOptions}\n />\n {fProps.isSubmitting ? <LoadingOverlay /> : null}\n </Fragment>\n )}\n </Formik>\n </Modal.Body>\n </Modal>\n </Fragment>\n );\n}\n\nAddTrappingZoneModal.propTypes = {\n map: PropTypes.bool,\n selectedDatabase: PropTypes.string.isRequired,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n customOptions: PropTypes.object\n};\n\nexport default observer(AddTrappingZoneModal);\n","import { PropertiesStore } from '@hortplus/properties-react';\nimport { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useStores } from '../stores/useStores';\nimport TrapModalContent from './TrapModalContent';\n\nfunction EditTrapModal(props) {\n const { traplogStore } = useStores();\n const trappingZone = traplogStore.trappingZones.find(\n (trappingZone) => trappingZone.id === props.trap.trapping_zone_id\n );\n const [trapCoords, setTrapCoords] = useState(props.trap.location ? {\n lat: props.trap.location.coordinates[1],\n lng: props.trap.location.coordinates[0],\n valid: true, // Should always be valid initially.\n currentZone: trappingZone.name\n } : null);\n\n const hide = () => props.setTrapId(null);\n\n if (!props.trap) return null;\n else\n return (\n <Modal backdrop='static' show onHide={() => hide()}>\n <Modal.Header closeButton>\n <Modal.Title>Edit Trap</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Formik\n initialValues={{\n // react-select values\n trappingZone: {\n value: trappingZone.id,\n label: trappingZone.name\n },\n trapLure: {\n value: props.trap.trap_lure.id,\n label: props.trap.trap_lure.name\n },\n\n // Regular inputs\n code: props.trap.code,\n name: props.trap.name,\n location_description: props.trap.location_description,\n comments: props.trap.comments === null ? '' : props.trap.comments,\n setup_at: moment(props.trap.setup_at).format('YYYY-MM-DD'),\n charged_at: props.trap.charged_at ? moment(props.trap.charged_at).format('YYYY-MM-DD') : null\n }}\n validate={(values) => {\n const errors = {};\n\n if (!values.trappingZone) errors.trappingZone = 'Required';\n if (!values.code) errors.code = 'Required';\n if (!values.trapLure) errors.trapLure = 'Required';\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/traps/${props.trap.id}?with[]=trapLure.insects`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n },\n body: JSON.stringify({\n trapping_zone_id: values.trappingZone.value,\n code: values.code,\n name: values.name,\n location_description: values.location_description,\n lat: trapCoords?.lat,\n lon: trapCoords?.lng,\n trap_lure_id: values.trapLure.value,\n comments: values.comments,\n setup_at: `${values.setup_at}T00:00:00`,\n charged_at: values.charged_at ? `${values.charged_at}T00:00:00` : null\n })\n }\n )\n .then((res) => {\n if (res.ok) {\n traplogStore.updateTrappingZones(\n props.propertiesStore.selectedPropertyId\n )\n }\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n })\n .finally(() => {\n actions.setSubmitting(false);\n hide();\n });\n }}\n >\n {(fProps) => (\n <TrapModalContent \n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n type=\"edit\"\n fProps={fProps}\n trapCoords={trapCoords}\n setTrapCoords={setTrapCoords}\n map={props.map}\n chargedInput={props.chargedInput}\n />\n )}\n </Formik>\n </Modal.Body>\n </Modal>\n );\n}\n\nEditTrapModal.propTypes = {\n selectedDatabase: PropTypes.string.isRequired,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n trap: PropTypes.object.isRequired,\n setTrapId: PropTypes.func.isRequired\n};\n\nexport default observer(EditTrapModal);\n","import { observer } from 'mobx-react';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport Map, { Layer, Source } from 'react-map-gl-7';\nimport { useBoundaryLayers } from '../hooks/useBoundaryLayers';\nimport { useMapState } from '../hooks/useMapState';\nimport { useStores } from '../stores/useStores';\nimport DrawControl from './DrawControl';\nimport PreviewButton, { monoStyle } from './PreviewButton';\n\nfunction EditTrappingZoneMap({ boundary, setBoundary, id }) {\n const { traplogStore } = useStores();\n const [mapStyle, setMapStyle] = useState(monoStyle);\n const layers = useBoundaryLayers([0.2, 0.4, 4, 0.5]);\n const [boundaryData, , viewport, setViewport, , mapRefWrapper] =\n useMapState();\n\n useEffect(() => {\n const boundary = boundaryData.features.find(\n (element) => element.properties.id === id\n );\n setBoundary(boundary);\n }, []);\n\n const onEditorUpdate = useCallback((map) => {\n if (map.features && map.features.length > 0) {\n setBoundary(map.features[0]);\n }\n }, []);\n\n const onMapClick = useCallback(\n (e) => {\n const clickedFeature = e.features && e.features[0];\n if (!clickedFeature && boundary) {\n const targetZone = traplogStore.trappingZones.find(\n (zone) => zone.id === boundary.properties.id\n );\n const newZones = traplogStore.trappingZones.filter(\n (zone) => zone.id !== boundary.properties.id\n );\n targetZone.boundry = JSON.stringify(boundary.geometry);\n newZones.push(targetZone);\n traplogStore.trappingZones = newZones;\n }\n },\n [boundary, traplogStore.trappingZones]\n );\n\n return (\n <Map\n ref={mapRefWrapper}\n initialViewState={viewport}\n onViewportChange={(nextViewport) => setViewport(nextViewport)}\n mapStyle={`mapbox://styles/hortplus/${mapStyle}`}\n mapboxAccessToken={process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}\n onClick={onMapClick}\n >\n <DrawControl\n initialBoundry={boundary}\n position='top-right'\n displayControlsDefault={false}\n controls={{ polygon: true, trash: true }}\n defaultMode={boundary ? 'simple_select' : 'draw_polygon'}\n onUpdate={onEditorUpdate}\n />\n <Source id='trappingZones' type='geojson' data={boundaryData}>\n {layers.map((layer) => (\n <Layer key={layer.id} {...layer} />\n ))}\n </Source>\n <PreviewButton\n setMapStyle={setMapStyle}\n mapStyle={mapStyle}\n viewport={viewport}\n />\n </Map>\n );\n}\n\nexport default observer(EditTrappingZoneMap);\n","import { observer } from 'mobx-react';\nimport React from 'react';\nimport { Button, Col, Form, Row } from 'react-bootstrap';\nimport Select from 'react-select';\nimport EditTrappingZoneMap from '../maps/EditTrappingZoneMap';\nimport { useStores } from '../stores/useStores';\n\nfunction EditTrappingZoneForm({\n handleSubmit,\n handleChange,\n handleBlur,\n values,\n errors,\n setFieldValue,\n boundary,\n setBoundary,\n id,\n map\n}) {\n const { traplogStore } = useStores();\n\n return (\n <Form noValidate onSubmit={handleSubmit}>\n {/* Name */}\n <Form.Group controlId='name'>\n <Form.Label>Name</Form.Label>\n <Form.Control\n type='text'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.name}\n placeholder='Name'\n isInvalid={errors.name}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.name}\n </Form.Control.Feedback>\n </Form.Group>\n\n {/* Mating Disruption Tie */}\n <Form.Group controlId='mating_disruption_tie_id'>\n <Form.Label>Mating Disruption Tie</Form.Label>\n <Select\n options={traplogStore.matingDisruptionTies.map(\n (matingDisruptionTie) => {\n return {\n value: matingDisruptionTie.id,\n label: matingDisruptionTie.name\n };\n }\n )}\n defaultValue={values.matingDisruptionTie}\n onChange={(option) => setFieldValue('matingDisruptionTie', option)}\n isClearable\n />\n {errors.matingDisruptionTie ? (\n <div className='text-danger'>{errors.matingDisruptionTie}</div>\n ) : null}\n </Form.Group>\n {/* High Risk Production Site */}\n <Form.Group controlId='high_risk'>\n <Form.Check\n custom\n disabled={!values.cmsm}\n type='checkbox'\n id='high_risk'\n label='High Risk Production Site?'\n checked={values.high_risk}\n onChange={() => {\n if (!values.cmsm) return;\n setFieldValue('high_risk', Number(!values.high_risk));\n }}\n defaultChecked={values.high_risk}\n style={{ zIndex: 0 }}\n />\n </Form.Group>\n {/* Codling Moth Sensitive Market */}\n <Form.Group controlId='cmsm'>\n <Form.Check\n custom\n type='checkbox'\n id='cmsm'\n label='Codling Moth Sensitive Market?'\n checked={values.cmsm}\n onChange={() => {\n if (values.cmsm) setFieldValue('high_risk', false);\n setFieldValue('cmsm', !values.cmsm);\n }}\n defaultChecked={values.cmsm}\n style={{ zIndex: 0 }}\n />\n </Form.Group>\n {map && (\n <Row style={{ height: '300px' }}>\n <Col>\n <EditTrappingZoneMap\n boundary={boundary}\n setBoundary={setBoundary}\n id={id}\n />\n </Col>\n </Row>\n )}\n <Button varient='primary' type='submit'>\n Submit\n </Button>\n </Form>\n );\n}\n\nexport default observer(EditTrappingZoneForm);\n","import { PropertiesStore } from '@hortplus/properties-react';\nimport { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport LoadingOverlay from '../LoadingOverlay';\nimport { useStores } from '../stores/useStores';\nimport EditTrappingZoneForm from './EditTrappingZoneForm';\n\nfunction EditTrappingZoneModal(props) {\n const { traplogStore } = useStores();\n const [boundary, setBoundary] = useState();\n\n const hide = () => props.setTrappingZoneId(null);\n\n if (!props.trappingZone) return null;\n else\n return (\n <Modal backdrop='static' show onHide={() => hide()}>\n <Modal.Header closeButton>\n <Modal.Title>Edit Production Site</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Formik\n initialValues={{\n // react-select values\n matingDisruptionTie: props.trappingZone.mating_disruption_tie\n ? {\n value: props.trappingZone.mating_disruption_tie.id,\n label: props.trappingZone.mating_disruption_tie.name\n }\n : '',\n\n // Regular inputs\n property_id: props.trappingZone.property_id,\n name: props.trappingZone.name,\n cmsm: props.trappingZone.cmsm,\n high_risk: props.trappingZone.high_risk\n }}\n validate={(values, props) => {\n const errors = {};\n\n if (values.property_id === null)\n errors.matingDisruptionTie = 'Required';\n if (!values.name) errors.name = 'Required';\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n const geometry = boundary?.geometry;\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-zones/${props.trappingZone.id}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n },\n body: JSON.stringify({\n property_id: values.property_id,\n mating_disruption_tie_id: values.matingDisruptionTie\n ? values.matingDisruptionTie.value\n : null,\n name: values.name,\n cmsm: values.cmsm,\n high_risk: values.high_risk,\n boundry: geometry ? JSON.stringify(geometry) : null\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n traplogStore.loadTrappingZones(\n props.bearerToken,\n props.refreshBearerToken,\n props.selectedDatabase,\n props.propertiesStore.selectedPropertyId\n );\n hide();\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n }}\n >\n {(fProps) => (\n <Fragment>\n <EditTrappingZoneForm\n {...fProps}\n boundary={boundary}\n setBoundary={setBoundary}\n id={props.trappingZone.id}\n map={props.map}\n />\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </Fragment>\n )}\n </Formik>\n </Modal.Body>\n </Modal>\n );\n}\n\nEditTrappingZoneModal.propTypes = {\n map: PropTypes.bool,\n selectedDatabase: PropTypes.string.isRequired,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n trappingZone: PropTypes.object.isRequired,\n setTrappingZoneId: PropTypes.func.isRequired\n};\n\nexport default observer(EditTrappingZoneModal);\n","import { useEffect, useState } from 'react';\n\nconst useLocalStorageState = (key, initialValue) => {\n const [state, setInternalState] = useState(initialValue);\n\n useEffect(() => {\n const value = localStorage.getItem(key);\n\n if (!value) return;\n\n setInternalState(JSON.parse(value));\n }, [key]);\n\n const setState = (value) => {\n localStorage.setItem(key, JSON.stringify(value));\n setInternalState(value);\n };\n\n return [state, setState];\n};\n\nexport default useLocalStorageState;\n","import { useCallback } from 'react';\n\nexport const useRelevantTraps = () => {\n const getRelevantTraps = useCallback(\n (trappingZone, selectedInsectGroup) =>\n trappingZone.traps.filter((trap) =>\n trap.trap_lure.insects.some(\n (insect) => insect.insect_group.id === selectedInsectGroup.id\n )\n ),\n []\n );\n\n return getRelevantTraps;\n};\n","import { faComment } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { Fragment } from 'react';\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\nimport { useRelevantTraps } from './useRelevantTraps';\n\nexport const useTrappingZoneThresholds = () => {\n const getRelevantTraps = useRelevantTraps();\n /**\n * Calculates threshold amount, accumulation and average as well as providing\n * JSX for displaying trap catch amount and accumulation.\n *\n * @param {object} trappingResult\n * @param {object} selectedInsectGroup\n * @param {object} relevantTraps\n * @returns Object that contains threshold amount, threshold accumulation,\n * average threshold (function), average amount (function), the lures and\n * bases changed and JSX for trap catch and accumulation.\n */\n const calculateThresholds = (\n trappingZone,\n trappingResult,\n selectedInsectGroup\n ) => {\n const amounts = [];\n let amountThresholdsMet = 0;\n let accumulationThresholdsMet = 0;\n\n const averageAmount = () =>\n trappingResult.trap_averages?.amount?.toFixed(2);\n\n const averageThresholdMet = () =>\n trappingResult.trap_averages?.threshold_met;\n\n const luresChanged = trappingResult.trap_monitoring_records.filter(\n (record) => record.lure_changed\n ).length;\n\n const basesChanged = trappingResult.trap_monitoring_records.filter(\n (record) => record.base_changed\n ).length;\n\n const relevantTraps = getRelevantTraps(trappingZone, selectedInsectGroup);\n\n const trapCells = relevantTraps.map((trap) => {\n const trappingResultTrap = trappingResult.traps[trap.id];\n const monitoringRecord = trappingResult.trap_monitoring_records.find(\n (record) => record.trap.id === trap.id\n );\n const comments =\n monitoringRecord && monitoringRecord.comments\n ? monitoringRecord.comments\n : null;\n const amount = trappingResultTrap ? trappingResultTrap.amount : null;\n const accumulation = trappingResultTrap\n ? trappingResultTrap.accumulation\n : null;\n\n const amountThresholdMet = trappingResultTrap\n ? trappingResultTrap.pre_trap_catch_threshold\n : null;\n const accumulationThresholdMet = trappingResultTrap\n ? trappingResultTrap.accumulation_threshold_met\n : null;\n\n amounts.push(amount);\n\n if (amountThresholdMet) amountThresholdsMet++;\n if (accumulationThresholdMet) accumulationThresholdsMet++;\n\n return (\n <Fragment key={trap.id}>\n <td\n style={{ borderLeft: '2px solid #dee2e6' }}\n className={amountThresholdMet ? 'text-danger' : null}\n >\n {amount === null ? '-' : amount}\n {comments ? (\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>{comments}</Tooltip>}\n >\n <FontAwesomeIcon\n className='text-primary ml-2'\n icon={faComment}\n />\n </OverlayTrigger>\n ) : null}\n </td>\n <td\n className={`${accumulationThresholdMet ? 'text-danger' : null} ${\n comments ? 'pr-0' : null\n }`}\n >\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>Weekly Catch Accumulation</Tooltip>}\n >\n <i\n className={`${\n trappingResult.threshold_met && accumulationThresholdMet\n ? 'text-danger'\n : 'text-muted'\n }`}\n >\n {accumulation === null ? '-' : `(${accumulation})`}\n </i>\n </OverlayTrigger>\n </td>\n </Fragment>\n );\n });\n\n return {\n amountThresholdsMet,\n accumulationThresholdsMet,\n averageThresholdMet,\n averageAmount,\n luresChanged,\n basesChanged,\n trapCells\n };\n };\n\n return { calculateThresholds };\n};\n","import { useStores } from '../stores/useStores';\nimport { HIGH_PRESSURE_THRESHOLDS_NUM } from '../utils';\n\nexport const useUpdateTrappingZoneHighPressure = () => {\n const { traplogStore } = useStores();\n\n let highPressureThresholdMetCount = 0;\n const updateTrappingZoneHighPressure = (\n trappingZone,\n trappingResult,\n amountThresholdsMet,\n accumulationThresholdsMet,\n averageThresholdMet\n ) => {\n const highPressureThresholdMet =\n !trappingResult.sprayed &&\n (amountThresholdsMet > 0 ||\n accumulationThresholdsMet > 0 ||\n averageThresholdMet);\n const isHighPressure = trappingZone?.high_pressure;\n if (highPressureThresholdMet) {\n highPressureThresholdMetCount++;\n }\n // Only update the trapping zone high pressure when the selected insect is Codling Moth,\n // and the high pressure threshold has been reached.\n if (\n traplogStore.selectedInsectGroup.short_name === 'CM' &&\n highPressureThresholdMetCount >= HIGH_PRESSURE_THRESHOLDS_NUM &&\n !isHighPressure\n ) {\n traplogStore.updateTrappingZoneHighPressure(trappingZone.id, true);\n }\n return highPressureThresholdMetCount;\n };\n\n return { updateTrappingZoneHighPressure };\n};\n","import { PropertiesStore } from '@hortplus/properties-react';\nimport { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport React, { Fragment } from 'react';\nimport { Button, Modal } from 'react-bootstrap';\nimport LoadingOverlay from '../LoadingOverlay';\nimport { useStores } from '../stores/useStores';\nimport { dateFormatRegex } from '../utils';\nimport TrapMonitoringRecordsForm from './TrapMonitoringRecordsForm';\n\nfunction EditTrapMonitoringRecords(props) {\n const { traplogStore } = useStores();\n\n const databaseYear = traplogStore.selectedDatabaseYear() - 1;\n\n const hide = () => props.setEditingTrappingResult(null);\n\n return (\n <Modal\n backdrop='static'\n show={!!props.editingTrappingResult}\n onHide={() => hide()}\n >\n <Modal.Header closeButton>\n <Modal.Title>Edit Monitoring Records</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Formik\n initialValues={{\n visited_date: props.editingTrappingResult.date,\n\n // If there are more than one operators then concatenate unique values\n operator: props.editingTrappingResult.trap_monitoring_records\n .filter(\n (record, index, arr) =>\n arr.findIndex(\n (record2) => record2.operator === record.operator\n ) === index\n )\n .reduce(\n (acc, cur) => (acc === '' ? acc : `${acc}, `) + cur.operator,\n ''\n ),\n\n trapMonitoringRecords: props.traps.map((trap) => {\n const trapMonitoringRecord =\n props.editingTrappingResult.trap_monitoring_records.find(\n (record) => record.trap.id === trap.id\n );\n return trapMonitoringRecord\n ? {\n id: trapMonitoringRecord.id,\n amount: trapMonitoringRecord.amount,\n lure_changed: trapMonitoringRecord.lure_changed,\n base_changed: trapMonitoringRecord.base_changed,\n comments: trapMonitoringRecord.comments\n ? trapMonitoringRecord.comments\n : '',\n visited_at: trapMonitoringRecord.visited_at,\n location: trapMonitoringRecord.location\n ? {\n latitude:\n trapMonitoringRecord.location.coordinates[0],\n longitude:\n trapMonitoringRecord.location.coordinates[1]\n }\n : null,\n location_accuracy: trapMonitoringRecord.location_accuracy,\n trap: trapMonitoringRecord.trap\n }\n : {\n trap: trap,\n trap_id: trap.id,\n amount: 0,\n lure_changed: false,\n base_changed: false,\n comments: '',\n visited_at: '',\n location: '',\n location_accuracy: ''\n };\n })\n }}\n validate={(values, props) => {\n const errors = {};\n const visitedYear = moment(values.visited_date).year();\n\n if (!values.visited_date) errors.visited_date = 'Required';\n else if (visitedYear < databaseYear) {\n errors.visited_date = `The year must be ${databaseYear} or later.`;\n } else if (visitedYear > databaseYear + 1) {\n errors.visited_date = `The year cannot be larger than ${\n databaseYear + 1\n }.`;\n } else if (!dateFormatRegex.test(values.visited_date)) {\n errors.visited_date =\n 'Invalid date. Please use the format \"YYYY-MM-DD\", and be careful of leap years.';\n }\n if (!values.operator) errors.operator = 'Required';\n\n const trapMonitoringRecords = [];\n values.trapMonitoringRecords.forEach((record) => {\n const recordErrors = {};\n\n if (record.amount !== 0 && !record.amount)\n recordErrors.amount = 'Required';\n\n if (Object.keys(recordErrors).length > 0)\n trapMonitoringRecords.push(recordErrors);\n });\n\n if (Object.keys(trapMonitoringRecords).length > 0)\n errors.trapMonitoringRecords = trapMonitoringRecords;\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n const body = {\n records: values.trapMonitoringRecords.map((record) => {\n return {\n ...record,\n visited_date: values.visited_date,\n operator: values.operator\n };\n })\n };\n\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trap-monitoring-records`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${traplogStore.bearerToken}`,\n SeasonalDatabase: traplogStore.selectedDatabase\n },\n body: JSON.stringify(body)\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) traplogStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n traplogStore.loadTrappingZones(\n traplogStore.bearerToken,\n traplogStore.refreshBearerToken,\n traplogStore.selectedDatabase,\n props.propertiesStore.selectedPropertyId\n );\n hide();\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <Fragment>\n <TrapMonitoringRecordsForm {...props} />\n <Button\n varient='primary'\n type='button'\n onClick={props.handleSubmit}\n >\n Submit\n </Button>\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </Fragment>\n )}\n </Formik>\n </Modal.Body>\n </Modal>\n );\n}\n\nEditTrapMonitoringRecords.propTypes = {\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n editingTrappingResult: PropTypes.object.isRequired,\n setEditingTrappingResult: PropTypes.func.isRequired,\n traps: PropTypes.array.isRequired\n};\n\nexport default observer(EditTrapMonitoringRecords);\n","import { observer } from 'mobx-react';\nimport React, { useMemo, useRef, useState } from 'react';\nimport { Button, Col, Form, InputGroup, Row, Tooltip } from 'react-bootstrap';\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger';\nimport Select from 'react-select';\nimport { useStores } from '../stores/useStores';\n\nfunction TrappingZoneSprayForm({\n handleSubmit,\n handleChange,\n handleBlur,\n values,\n errors,\n setFieldValue,\n selectTrappingZones,\n coverageDays\n}) {\n const { traplogStore } = useStores();\n const [prevCoverageDays, setPrevCoverageDays] = useState(\n values.coverage_days\n );\n const selectedTrappingZone = traplogStore.selectedTrappingZone;\n const [selectedOptions, setSelectedOptions] = useState(\n selectedTrappingZone\n ? [\n {\n label: selectedTrappingZone.name,\n value: selectedTrappingZone.id\n }\n ]\n : []\n );\n const [allSelected, setAllSelected] = useState(false);\n const selectRef = useRef(null);\n\n const options = traplogStore.trappingZones.map((trappingZone) => {\n return {\n value: trappingZone.id,\n label: trappingZone.name\n };\n });\n const selectedInsectGroupId = traplogStore.selectedInsectGroupId;\n const biofixInsectGroupIds = [1]; // Codling-moth.\n const displayBiofix = biofixInsectGroupIds.includes(selectedInsectGroupId);\n // Filter products by the products insect group and selected insect group.\n const filteredSprayProducts = useMemo(\n () =>\n traplogStore.sprayProducts.filter((product) => {\n const hasInsect = product.insects.find(\n (insect) =>\n insect.insect_group_id === traplogStore.selectedInsectGroupId\n );\n return hasInsect;\n }),\n [traplogStore.sprayProducts]\n );\n\n const handleSelectAll = () => {\n const newOptions = !allSelected ? options : [];\n selectRef.current.selectOption(newOptions);\n setFieldValue('trapping_zones', newOptions);\n setSelectedOptions(newOptions);\n setAllSelected(!allSelected);\n };\n\n return (\n <Form noValidate onSubmit={handleSubmit}>\n {/* Select Production Sites */}\n {selectTrappingZones && (\n <Form.Group controlId='trapping-zones'>\n <Form.Label>Select Production Sites</Form.Label>\n <Row>\n <Col xs={7} sm={8} md={8}>\n <Select\n ref={selectRef}\n isMulti\n options={options}\n isLoading={traplogStore.loadingTrappingZones}\n value={selectedOptions}\n defaultValue={\n selectedTrappingZone\n ? {\n label: selectedTrappingZone.name,\n value: selectedTrappingZone.id\n }\n : null\n }\n onChange={(options) => {\n setFieldValue('trapping_zones', options);\n setSelectedOptions(options);\n }}\n onBlur={() => {\n handleBlur({ target: { name: 'trapping_zones' } });\n }}\n />\n </Col>\n <Col className='text-center' xs={5} sm={4} md={4}>\n <Button\n variant='success'\n onClick={() => {\n handleSelectAll();\n }}\n >\n {!allSelected ? 'Select All' : 'Unselect All'}\n </Button>\n </Col>\n </Row>\n {errors.trapping_zones ? (\n <div className='text-danger' style={{ fontSize: '80%' }}>\n {errors.trapping_zones}\n </div>\n ) : null}\n </Form.Group>\n )}\n {/* Spray Product */}\n <Form.Group controlId='sprayProduct'>\n <Form.Label>Spray Product</Form.Label>\n <Select\n options={filteredSprayProducts.map((sprayProduct) => {\n return {\n value: sprayProduct.id,\n label: sprayProduct.product.name\n };\n })}\n isLoading={traplogStore.loadingSprayProducts}\n defaultValue={values.sprayProduct}\n onChange={(option) => setFieldValue('sprayProduct', option)}\n onBlur={() => {\n handleBlur({ target: { name: 'sprayProduct' } });\n }}\n />\n {errors.sprayProduct ? (\n <div className='text-danger' style={{ fontSize: '80%' }}>\n {errors.sprayProduct}\n </div>\n ) : null}\n </Form.Group>\n\n {/* Applied Date */}\n <Form.Group controlId='applied_date'>\n <Form.Label>Applied Date</Form.Label>\n <Form.Control\n type='date'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.applied_date}\n isInvalid={errors.applied_date}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.applied_date}\n </Form.Control.Feedback>\n </Form.Group>\n\n {/* Spray Coverage */}\n {coverageDays && (\n <Form.Group controlId='coverage_days'>\n <Form.Label>Spray Coverage</Form.Label>\n <InputGroup>\n <Form.Control\n type='number'\n min='1'\n step='1'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.coverage_days}\n isInvalid={errors.coverage_days}\n />\n <InputGroup.Append>\n <InputGroup.Text>Days</InputGroup.Text>\n </InputGroup.Append>\n </InputGroup>\n </Form.Group>\n )}\n\n {/* Comments */}\n <Form.Group controlId='comments'>\n <Form.Label>Comments</Form.Label>\n <Form.Control\n as='textarea'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.comments}\n />\n </Form.Group>\n\n {/* Biofix */}\n {displayBiofix && (\n <Form.Group controlId='biofix'>\n <OverlayTrigger\n placement='right'\n overlay={\n <Tooltip>\n A biofix spray affects 2 weeks and appears before any\n monitoring.\n </Tooltip>\n }\n >\n <div style={{ width: '30%' }}>\n <Form.Check\n id='biofix'\n type='checkbox'\n label='Biofix Spray?'\n onChange={(event) => {\n // Set coverage days to 14 when biofix checked\n // Also, keep track of previous coverage days so it\n // can be reverted when biofix is unchecked.\n if (event.target.checked) {\n setPrevCoverageDays(values.coverage_days);\n setFieldValue('coverage_days', 14);\n } else {\n setFieldValue('coverage_days', prevCoverageDays);\n }\n setFieldValue('biofix', !values.biofix);\n }}\n onBlur={handleBlur}\n defaultChecked={values.biofix}\n style={{ zIndex: 0 }}\n custom\n />\n </div>\n </OverlayTrigger>\n </Form.Group>\n )}\n </Form>\n );\n}\n\nexport default observer(TrappingZoneSprayForm);\n","import { PropertiesStore } from '@hortplus/properties-react';\nimport { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment } from 'react';\nimport { Button, Modal } from 'react-bootstrap';\nimport LoadingOverlay from '../LoadingOverlay';\nimport { useStores } from '../stores/useStores';\nimport { dateFormatRegex } from '../utils';\nimport TrappingZoneSprayForm from './TrappingZoneSprayForm';\n\nfunction EditTrappingZoneSprayModal(props) {\n const { traplogStore } = useStores();\n\n const databaseYear = traplogStore.selectedDatabaseYear() - 1;\n\n const hide = () => props.setTrappingZoneSpray(null);\n\n if (!props.trappingZoneSpray) return null;\n else {\n const trappingZone = traplogStore.trappingZones.find(\n (trappingZone) =>\n trappingZone.id === props.trappingZoneSpray.trapping_zone_id\n );\n\n return (\n <Modal backdrop='static' show onHide={() => hide()}>\n <Modal.Header closeButton>\n <Modal.Title>Edit Spray Application {trappingZone.name}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Formik\n initialValues={{\n // react-select values\n sprayProduct: {\n value: props.trappingZoneSpray.spray_product.id,\n label: props.trappingZoneSpray.spray_product.product.name\n },\n\n // Regular inputs\n trapping_zone_id: props.trappingZoneSpray.trapping_zone_id,\n applied_date: props.trappingZoneSpray.applied_date,\n coverage_days: props.trappingZoneSpray.coverage_days,\n comments: props.trappingZoneSpray.comments,\n biofix: props.trappingZoneSpray.biofix\n }}\n validate={(values, props) => {\n const errors = {};\n const appliedYear = moment(values.applied_date).year();\n\n if (!values.sprayProduct) errors.sprayProduct = 'Required';\n if (!values.trapping_zone_id && values.trapping_zone_id !== 0)\n errors.trapping_zone_id = 'Required';\n if (!values.applied_date) errors.applied_date = 'Required';\n else if (appliedYear < databaseYear) {\n errors.applied_date = `The year must be ${databaseYear} or later.`;\n } else if (appliedYear > databaseYear + 1) {\n errors.applied_date = `The year cannot be larger than ${\n databaseYear + 1\n }.`;\n } else if (!dateFormatRegex.test(values.applied_date)) {\n errors.applied_date =\n 'Invalid date. Please use the format \"YYYY-MM-DD\", and be careful of leap years.';\n }\n if (!values.coverage_days) errors.coverage_days = 'Required';\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-zone-spray/${props.trappingZoneSpray.id}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${traplogStore.bearerToken}`,\n SeasonalDatabase: traplogStore.selectedDatabase\n },\n body: JSON.stringify({\n spray_product_id: values.sprayProduct.value,\n trapping_zone_id: values.trapping_zone_id,\n applied_date: values.applied_date,\n coverage_days: values.coverage_days,\n comments: values.comments,\n biofix: values.biofix\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401)\n traplogStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n traplogStore.loadTrappingZones(\n traplogStore.bearerToken,\n traplogStore.refreshBearerToken,\n traplogStore.selectedDatabase,\n props.propertiesStore.selectedPropertyId\n );\n hide();\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <Fragment>\n <TrappingZoneSprayForm {...props} />\n <Button\n varient='primary'\n type='button'\n onClick={props.handleSubmit}\n >\n Submit\n </Button>\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </Fragment>\n )}\n </Formik>\n </Modal.Body>\n </Modal>\n );\n }\n}\n\nEditTrappingZoneSprayModal.propTypes = {\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n trappingZoneSpray: PropTypes.object.isRequired,\n setTrappingZoneSpray: PropTypes.func.isRequired\n};\n\nexport default observer(EditTrappingZoneSprayModal);\n","import {\n faCheck,\n faEdit,\n faExclamationCircle,\n faInfoCircle,\n faSortDown,\n faSortUp,\n faTrash\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { PropertiesStore } from '@hortplus/properties-react';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useMemo, useState } from 'react';\nimport {\n Button,\n Col,\n OverlayTrigger,\n Row,\n Table,\n Tooltip\n} from 'react-bootstrap';\nimport URI from 'urijs';\nimport ConfirmationModal from '../helpers/ConfirmationModal';\nimport useLocalStorageState from '../helpers/useLocalStorageState';\nimport { useRelevantTraps } from '../hooks/useRelevantTraps';\nimport { useTrappingZoneThresholds } from '../hooks/useTrappingZoneThresholds';\nimport { useUpdateTrappingZoneHighPressure } from '../hooks/useUpdateTrappingZoneHighPressure';\nimport { useStores } from '../stores/useStores';\nimport EditTrapMonitoringRecordsModal from './EditTrapMonitoringRecordsModal';\nimport EditTrappingZoneSprayModal from './EditTrappingZoneSprayModal';\n\nconst TrappingZoneSprays = ({\n trappingResult,\n dt,\n relevantTraps,\n setEditingTrappingZoneSpray,\n deleteTrappingZoneSpray\n}) => {\n return (\n <Fragment>\n {trappingResult.trapping_zone_sprays.map((spray) => (\n <tr key={spray.id}>\n <td>{dt.format('DD/MM/YYYY')}</td>\n <td>{dt.format('w')}</td>\n <td colSpan={4 + 2 * relevantTraps.length}>\n Spray Application {<i>{spray.biofix === 1 && '(Biofix)'}</i>}:{' '}\n <b>{spray.spray_product.product.name}</b>\n {spray.comments ? (\n <>\n <br />\n <i>{spray.comments}</i>\n </>\n ) : null}\n </td>\n <td>\n <Button\n variant='link'\n size='sm'\n onClick={() => setEditingTrappingZoneSpray(spray)}\n >\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n <ConfirmationModal\n title='Confirm Delete'\n bodyText='Are you sure you want to delete this spray?'\n confirmAction={() => {\n return deleteTrappingZoneSpray(spray.id);\n }}\n showButton={{\n children: <FontAwesomeIcon icon={faTrash} />,\n props: {\n className: 'text-danger',\n variant: 'link',\n size: 'sm'\n }\n }}\n confirmButton={{\n props: { variant: 'danger' }\n }}\n />\n </td>\n </tr>\n ))}\n </Fragment>\n );\n};\n\nconst TrapMonitoringSprays = ({\n trappingResult,\n dt,\n luresChanged,\n basesChanged,\n amountThresholdsMet,\n accumulationThresholdsMet,\n trapCells,\n averageThresholdMet,\n averageAmount,\n setEditingTrappingResult,\n deleteTrappingResult\n}) => {\n return (\n <Fragment>\n {trappingResult.trap_monitoring_records.length > 0 ? (\n <tr>\n <td>{dt.format('DD/MM/YYYY')}</td>\n <td>{dt.format('w')}</td>\n <td>\n {luresChanged > 0 ? (\n luresChanged < Object.keys(trappingResult.traps).length ? (\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>Some caps changed.</Tooltip>}\n >\n <FontAwesomeIcon icon={faCheck} className='text-warning' />\n </OverlayTrigger>\n ) : (\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>All caps changed.</Tooltip>}\n >\n <FontAwesomeIcon icon={faCheck} className='text-success' />\n </OverlayTrigger>\n )\n ) : null}\n </td>\n <td>\n {basesChanged > 0 ? (\n basesChanged < Object.keys(trappingResult.traps).length ? (\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>Some bases changed.</Tooltip>}\n >\n <FontAwesomeIcon icon={faCheck} className='text-warning' />\n </OverlayTrigger>\n ) : (\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>All bases changed.</Tooltip>}\n >\n <FontAwesomeIcon icon={faCheck} className='text-success' />\n </OverlayTrigger>\n )\n ) : null}\n </td>\n <td className={trappingResult.sprayed ? 'text-info' : 'text-danger'}>\n {trappingResult.threshold_met ? (\n <OverlayTrigger\n placement='top'\n overlay={\n <Tooltip>\n {trappingResult.sprayed ? (\n <Row>\n <Col>Previous spray covers these thresholds.</Col>\n </Row>\n ) : null}\n {amountThresholdsMet > 0 ? (\n <Row>\n <Col>\n {amountThresholdsMet} x Single trap catch threshold.\n </Col>\n </Row>\n ) : null}\n {accumulationThresholdsMet > 0 ? (\n <Row>\n <Col>\n {accumulationThresholdsMet} x accumulation threshold.\n </Col>\n </Row>\n ) : null}\n {averageThresholdMet() ? (\n <Row>\n <Col>Average threshold.</Col>\n </Row>\n ) : null}\n </Tooltip>\n }\n >\n <FontAwesomeIcon icon={faExclamationCircle} />\n </OverlayTrigger>\n ) : null}\n </td>\n {trapCells}\n <td\n style={{ borderLeft: '2px solid #dee2e6' }}\n className={averageThresholdMet() ? 'text-danger' : null}\n >\n {averageAmount()}\n </td>\n <td>\n <Button\n variant='link'\n size='sm'\n onClick={() => setEditingTrappingResult(trappingResult)}\n >\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n <ConfirmationModal\n title='Confirm Delete'\n bodyText='Are you sure you want to delete this trapping result?'\n confirmAction={() => {\n return deleteTrappingResult(trappingResult);\n }}\n showButton={{\n children: <FontAwesomeIcon icon={faTrash} />,\n props: {\n className: 'text-danger',\n variant: 'link',\n size: 'sm'\n }\n }}\n confirmButton={{\n props: { variant: 'danger' }\n }}\n />\n </td>\n </tr>\n ) : null}\n </Fragment>\n );\n};\n\nconst Spray = ({\n trappingResult,\n dt,\n luresChanged,\n basesChanged,\n amountThresholdsMet,\n accumulationThresholdsMet,\n trapCells,\n averageThresholdMet,\n averageAmount,\n setEditingTrappingResult,\n deleteTrappingResult,\n relevantTraps,\n setEditingTrappingZoneSpray,\n deleteTrappingZoneSpray\n}) => {\n return (\n <>\n <TrappingZoneSprays\n trappingResult={trappingResult}\n dt={dt}\n relevantTraps={relevantTraps}\n setEditingTrappingZoneSpray={setEditingTrappingZoneSpray}\n deleteTrappingZoneSpray={deleteTrappingZoneSpray}\n />\n <TrapMonitoringSprays\n trappingResult={trappingResult}\n dt={dt}\n luresChanged={luresChanged}\n basesChanged={basesChanged}\n amountThresholdsMet={amountThresholdsMet}\n accumulationThresholdsMet={accumulationThresholdsMet}\n trapCells={trapCells}\n averageThresholdMet={averageThresholdMet}\n averageAmount={averageAmount}\n setEditingTrappingResult={setEditingTrappingResult}\n deleteTrappingResult={deleteTrappingResult}\n />\n </>\n );\n};\n\nconst BiofixSpray = ({\n trappingResult,\n dt,\n luresChanged,\n basesChanged,\n amountThresholdsMet,\n accumulationThresholdsMet,\n trapCells,\n averageThresholdMet,\n averageAmount,\n setEditingTrappingResult,\n deleteTrappingResult,\n relevantTraps,\n setEditingTrappingZoneSpray,\n deleteTrappingZoneSpray\n}) => {\n return (\n <>\n <TrapMonitoringSprays\n trappingResult={trappingResult}\n dt={dt}\n luresChanged={luresChanged}\n basesChanged={basesChanged}\n amountThresholdsMet={amountThresholdsMet}\n accumulationThresholdsMet={accumulationThresholdsMet}\n trapCells={trapCells}\n averageThresholdMet={averageThresholdMet}\n averageAmount={averageAmount}\n setEditingTrappingResult={setEditingTrappingResult}\n deleteTrappingResult={deleteTrappingResult}\n />\n <TrappingZoneSprays\n trappingResult={trappingResult}\n dt={dt}\n relevantTraps={relevantTraps}\n setEditingTrappingZoneSpray={setEditingTrappingZoneSpray}\n deleteTrappingZoneSpray={deleteTrappingZoneSpray}\n />\n </>\n );\n};\n\nfunction TrappingZoneResults(props) {\n const { traplogStore } = useStores();\n const [editingTrappingResult, setEditingTrappingResult] = useState(null);\n const [editingTrappingZoneSpray, setEditingTrappingZoneSpray] =\n useState(null);\n const [sortOrder, setSortOrder] = useLocalStorageState(\n 'trapping-zone-results-date-order',\n 'desc'\n ); // 'desc' | 'asc'.\n const { calculateThresholds } = useTrappingZoneThresholds();\n const { updateTrappingZoneHighPressure } =\n useUpdateTrappingZoneHighPressure();\n\n const getRelevantTraps = useRelevantTraps();\n const relevantTraps = getRelevantTraps(\n props.trappingZone,\n props.selectedInsectGroup\n );\n\n /**\n * props.trappingZoneResults.results ordered by date in descending order.\n */\n const resultsDescending = useMemo(\n () =>\n [...props.trappingZoneResults.results].sort(\n (a, b) => moment(b.date).valueOf() - moment(a.date).valueOf()\n ),\n [props.trappingZoneResults]\n );\n\n /**\n * props.trappingZoneResults.results ordered by date in descending order.\n */\n const resultsAscending = useMemo(\n () =>\n [...props.trappingZoneResults.results].sort(\n (a, b) => moment(a.date).valueOf() - moment(b.date).valueOf()\n ),\n [props.trappingZoneResults]\n );\n\n const deleteTrappingResult = (trappingResult) => {\n const uri = new URI(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trap-monitoring-records`\n );\n\n trappingResult.trap_monitoring_records.forEach((record) => {\n uri.addQuery('records[]', record.id);\n });\n\n return fetch(uri.toString(), {\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${traplogStore.bearerToken}`,\n SeasonalDatabase: traplogStore.selectedDatabase\n }\n }).then((res) => {\n if (res.ok)\n traplogStore.loadTrappingZones(\n traplogStore.bearerToken,\n traplogStore.refreshBearerToken,\n traplogStore.selectedDatabase,\n props.propertiesStore.selectedPropertyId\n );\n else if (res.status === 401) traplogStore.refreshBearerToken();\n else throw Error(res.statusText);\n });\n };\n\n const deleteTrappingZoneSpray = (trappingZoneSprayId) => {\n return fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-zone-spray/${trappingZoneSprayId}`,\n {\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${traplogStore.bearerToken}`,\n SeasonalDatabase: traplogStore.selectedDatabase\n }\n }\n ).then((res) => {\n if (res.ok)\n traplogStore.loadTrappingZones(\n traplogStore.bearerToken,\n traplogStore.refreshBearerToken,\n traplogStore.selectedDatabase,\n props.propertiesStore.selectedPropertyId\n );\n else if (res.status === 401) traplogStore.refreshBearerToken();\n else throw Error(res.statusText);\n });\n };\n\n return (\n <Fragment>\n {editingTrappingResult ? (\n <EditTrapMonitoringRecordsModal\n propertiesStore={props.propertiesStore}\n editingTrappingResult={editingTrappingResult}\n setEditingTrappingResult={setEditingTrappingResult}\n traps={relevantTraps}\n />\n ) : null}\n {/* Editing trapping zone modal */}\n {editingTrappingZoneSpray ? (\n <EditTrappingZoneSprayModal\n propertiesStore={props.propertiesStore}\n trappingZoneSpray={editingTrappingZoneSpray}\n setTrappingZoneSpray={setEditingTrappingZoneSpray}\n />\n ) : null}\n <Table bordered striped responsive size='sm'>\n <thead>\n <tr>\n <th>\n Date\n <span\n className='px-2'\n onClick={() => {\n if (sortOrder === 'desc') setSortOrder('asc');\n else setSortOrder('desc');\n }}\n >\n {sortOrder === 'desc' ? (\n <FontAwesomeIcon icon={faSortDown} />\n ) : (\n <FontAwesomeIcon icon={faSortUp} />\n )}\n </span>\n </th>\n <th>Week</th>\n <th>Cap</th>\n <th>Base</th>\n <th>\n TH\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>Threshold</Tooltip>}\n >\n <FontAwesomeIcon\n icon={faInfoCircle}\n className='ml-2'\n size='xs'\n />\n </OverlayTrigger>\n </th>\n {relevantTraps.map((trap) => (\n <th\n style={{ borderLeft: '2px solid #dee2e6' }}\n key={trap.id}\n colSpan={2}\n >\n {trap.code}\n </th>\n ))}\n <th style={{ borderLeft: '2px solid #dee2e6' }}>\n Avg/Week\n <OverlayTrigger\n placement='top'\n overlay={\n <Tooltip>\n The average number of insects per week across all traps.\n </Tooltip>\n }\n >\n <FontAwesomeIcon\n icon={faInfoCircle}\n className='ml-2'\n size='xs'\n />\n </OverlayTrigger>\n </th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n {(sortOrder === 'desc' ? resultsDescending : resultsAscending).map(\n (trappingResult) => {\n const dt = moment(trappingResult.date);\n const {\n amountThresholdsMet,\n accumulationThresholdsMet,\n averageThresholdMet,\n averageAmount,\n luresChanged,\n basesChanged,\n trapCells\n } = calculateThresholds(\n props.trappingZone,\n trappingResult,\n props.selectedInsectGroup\n );\n // Counts the thresholds (ignoring sprayed) and\n // sets the current trappingZone.high_pressure property\n // to true if the minimum number of thresholds is reached.\n updateTrappingZoneHighPressure(\n props.trappingZone,\n trappingResult,\n amountThresholdsMet,\n accumulationThresholdsMet,\n averageThresholdMet()\n );\n return (\n <Fragment key={trappingResult.date}>\n {trappingResult.trapping_zone_sprays.some(\n (tzs) => tzs.biofix\n ) ? (\n <BiofixSpray\n trappingResult={trappingResult}\n dt={dt}\n luresChanged={luresChanged}\n basesChanged={basesChanged}\n amountThresholdsMet={amountThresholdsMet}\n accumulationThresholdsMet={accumulationThresholdsMet}\n trapCells={trapCells}\n averageThresholdMet={averageThresholdMet}\n averageAmount={averageAmount}\n setEditingTrappingResult={setEditingTrappingResult}\n deleteTrappingResult={deleteTrappingResult}\n relevantTraps={relevantTraps}\n setEditingTrappingZoneSpray={setEditingTrappingZoneSpray}\n deleteTrappingZoneSpray={deleteTrappingZoneSpray}\n />\n ) : (\n <Spray\n trappingResult={trappingResult}\n dt={dt}\n luresChanged={luresChanged}\n basesChanged={basesChanged}\n amountThresholdsMet={amountThresholdsMet}\n accumulationThresholdsMet={accumulationThresholdsMet}\n trapCells={trapCells}\n averageThresholdMet={averageThresholdMet}\n averageAmount={averageAmount}\n setEditingTrappingResult={setEditingTrappingResult}\n deleteTrappingResult={deleteTrappingResult}\n relevantTraps={relevantTraps}\n setEditingTrappingZoneSpray={setEditingTrappingZoneSpray}\n deleteTrappingZoneSpray={deleteTrappingZoneSpray}\n />\n )}\n </Fragment>\n );\n }\n )}\n </tbody>\n </Table>\n </Fragment>\n );\n}\n\nTrappingZoneResults.propTypes = {\n trappingZone: PropTypes.object.isRequired,\n trappingZoneResults: PropTypes.object.isRequired,\n selectedInsectGroup: PropTypes.object.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired\n};\n\nexport default observer(TrappingZoneResults);\n","import {\n faSort,\n faSortDown,\n faSortUp\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useMemo } from 'react';\nimport { Table } from 'react-bootstrap';\nimport { useSortBy, useTable } from 'react-table';\nimport { useStores } from '../stores/useStores';\n\nconst TrapsTable = (props) => {\n const { traplogStore } = useStores();\n const data = useMemo(() => props.data, [props.data]);\n\n const columns = useMemo(\n () => [\n {\n Header: 'Production Site',\n accessor: (originalRow) => {\n let area = originalRow.area;\n const isHighRisk = traplogStore.isTrappingZoneHighRisk(\n originalRow.trappingZone\n );\n const isHighPressure = traplogStore.isTrappingZoneHighPressure(\n originalRow.trappingZone\n );\n return (\n <>\n <p className='float-left d-inline mr-2'>{area}</p>\n {isHighRisk ? (\n <b className='float-left' style={{ fontSize: '12px' }}>\n (High Risk)\n </b>\n ) : null}\n {isHighPressure ? (\n <b className='float-right' style={{ fontSize: '12px' }}>\n (High Pressure)\n </b>\n ) : null}\n </>\n );\n }\n },\n {\n Header: 'Trap ID',\n accessor: 'code'\n },\n {\n Header: 'Name',\n accessor: 'name'\n },\n {\n Header: 'Location',\n accessor: 'location_description'\n },\n {\n Header: 'Setup Date',\n accessor: (originalRow) =>\n moment(originalRow.setup_at).format('DD/MM/YYYY')\n },\n {\n Header: 'Comments',\n accessor: 'comments'\n },\n {\n disableSortBy: true,\n Header: '',\n accessor: 'edit'\n },\n {\n disableSortBy: true,\n Header: '',\n accessor: 'delete'\n }\n ],\n []\n );\n\n const { getTableProps, getTableBodyProps, headerGroups, prepareRow, rows } =\n useTable(\n {\n columns,\n data\n },\n useSortBy\n );\n\n return traplogStore.traps ? (\n <Fragment>\n <Table striped responsive size='sm' {...getTableProps()}>\n {/* This style prevent table header appearing above Select options. */}\n <thead style={{ position: 'sticky', zIndex: 0 }}>\n {headerGroups.map((headerGroup) => (\n <tr {...headerGroup.getHeaderGroupProps()}>\n {headerGroup.headers.map((column) => {\n return (\n <th {...column.getHeaderProps(column.getSortByToggleProps())}>\n {column.render('Header')}\n {column.canSort ? (\n <span className='px-2'>\n {column.isSorted ? (\n column.isSortedDesc ? (\n <FontAwesomeIcon icon={faSortDown} />\n ) : (\n <FontAwesomeIcon icon={faSortUp} />\n )\n ) : (\n <FontAwesomeIcon icon={faSort} />\n )}\n </span>\n ) : (\n ''\n )}\n </th>\n );\n })}\n </tr>\n ))}\n </thead>\n <tbody {...getTableBodyProps()}>\n {rows.map((row) => {\n prepareRow(row);\n return (\n <tr {...row.getRowProps()}>\n {row.cells.map((cell) => {\n return (\n <td {...cell.getCellProps()}>{cell.render('Cell')}</td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </Table>\n </Fragment>\n ) : (\n <></>\n );\n};\n\nTrapsTable.propTypes = {\n data: PropTypes.array.isRequired\n};\n\nexport default observer(TrapsTable);\n","export const initialValues = ({\n addMany,\n trappingZone,\n initialTrappingZone\n}) => {\n return !addMany\n ? {\n // react-select values\n sprayProduct: '',\n // Regular inputs\n trapping_zone_id: trappingZone.id,\n applied_date: '',\n coverage_days: 7,\n comments: '',\n biofix: false\n }\n : {\n // react-select values\n sprayProduct: '',\n // Regular inputs\n trapping_zones: initialTrappingZone\n ? [\n {\n label: initialTrappingZone.name,\n value: initialTrappingZone.id\n }\n ]\n : [],\n applied_date: '',\n coverage_days: 7,\n comments: '',\n biofix: false\n };\n};\n\nexport const submitForm = ({\n addMany,\n values,\n actions,\n traplogStore,\n propertiesStore\n}) => {\n const url = !addMany\n ? `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-zone-spray`\n : `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-zone-sprays`;\n const body = !addMany\n ? {\n spray_product_id: values.sprayProduct.value,\n trapping_zone_id: values.trapping_zone_id,\n applied_date: values.applied_date,\n coverage_days: values.coverage_days,\n comments: values.comments,\n biofix: values.biofix\n }\n : values.trapping_zones.map((tz) => ({\n trapping_zone_id: tz,\n spray_product_id: values.sprayProduct.value,\n applied_date: values.applied_date,\n coverage_days: values.coverage_days,\n comments: values.comments,\n biofix: values.biofix\n }));\n fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${traplogStore.bearerToken}`,\n SeasonalDatabase: traplogStore.selectedDatabase\n },\n body: JSON.stringify(body)\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) traplogStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then(() => {\n traplogStore.loadTrappingZones(\n traplogStore.bearerToken,\n traplogStore.refreshBearerToken,\n traplogStore.selectedDatabase,\n propertiesStore.selectedPropertyId\n );\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n};\n","import { PropertiesStore } from '@hortplus/properties-react';\nimport { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useState } from 'react';\nimport { Button, Modal } from 'react-bootstrap';\nimport LoadingOverlay from '../../LoadingOverlay';\nimport { useStores } from '../../stores/useStores';\nimport { dateFormatRegex } from '../../utils';\nimport TrappingZoneSprayForm from '../TrappingZoneSprayForm';\nimport { initialValues, submitForm } from './utils';\n\nfunction AddTrappingZoneSprayModal(props) {\n const [show, setShow] = useState(false);\n const { traplogStore } = useStores();\n\n const databaseYear = traplogStore.selectedDatabaseYear() - 1;\n\n if (!props.addMany && !props.trappingZone) {\n throw Error(\n 'When adding a single trapping zone spray, this component needs a \"trappingZone\".'\n );\n }\n\n const hide = () => {\n setShow(false);\n };\n\n return (\n <Fragment>\n <span onClick={() => setShow(true)}>{props.children}</span>\n <Modal backdrop='static' show={show} onHide={() => hide()}>\n <Modal.Header closeButton>\n <Modal.Title>\n Add Spray Application{' '}\n {!props.addMany && `(${props.trappingZone.name})`}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Formik\n initialValues={initialValues({\n ...props,\n initialTrappingZone: traplogStore.selectedTrappingZone\n })}\n validate={(values) => {\n const errors = {};\n const appliedYear = moment(values.applied_date).year();\n\n if (!values.sprayProduct) errors.sprayProduct = 'Required';\n if (\n !props.addMany &&\n !values.trapping_zone_id &&\n values.trapping_zone_id !== 0\n )\n errors.trapping_zone_id = 'Required';\n if (props.addMany && values.trapping_zones?.length === 0) {\n errors.trapping_zones = 'Please select a Production Site.';\n }\n if (!values.applied_date) {\n errors.applied_date = 'Required';\n } else if (appliedYear < databaseYear) {\n errors.applied_date = `The year must be ${databaseYear} or later.`;\n } else if (appliedYear > databaseYear + 1) {\n errors.applied_date = `The year cannot be larger than ${\n databaseYear + 1\n }.`;\n } else if (!dateFormatRegex.test(values.applied_date)) {\n errors.applied_date =\n 'Invalid date. Please use the format \"YYYY-MM-DD\", and be careful of leap years.';\n }\n if (!values.coverage_days) errors.coverage_days = 'Required';\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n const newValues = {\n ...values,\n trapping_zones: props.addMany\n ? values.trapping_zones.map((tz) => tz.value)\n : []\n };\n submitForm({\n addMany: props.addMany,\n values: newValues,\n actions,\n traplogStore,\n propertiesStore: props.propertiesStore\n });\n }}\n >\n {(fProps) => (\n <Fragment>\n <TrappingZoneSprayForm\n {...fProps}\n selectTrappingZones={props.addMany}\n coverageDays={props.coverageDays}\n />\n <Button\n varient='primary'\n type='button'\n onClick={fProps.handleSubmit}\n >\n Submit\n </Button>\n {fProps.isSubmitting ? <LoadingOverlay /> : null}\n </Fragment>\n )}\n </Formik>\n </Modal.Body>\n </Modal>\n </Fragment>\n );\n}\n\nAddTrappingZoneSprayModal.propTypes = {\n addMany: PropTypes.bool,\n coverageDays: PropTypes.bool,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n trappingZone: PropTypes.object\n};\n\nexport default observer(AddTrappingZoneSprayModal);\n","import { observer } from 'mobx-react';\nimport React, { useRef, useState } from 'react';\nimport { Button, Col, Form, Row } from 'react-bootstrap';\nimport Select from 'react-select';\nimport { useStores } from '../stores/useStores';\n\nconst SetupTrapsForm = ({\n handleSubmit,\n handleChange,\n handleBlur,\n setFieldValue,\n values,\n errors,\n chargedInput\n}) => {\n const { traplogStore } = useStores();\n const [selectedOptions, setSelectedOptions] = useState([]);\n const [allSelected, setAllSelected] = useState(false);\n const selectRef = useRef(null);\n\n const options = traplogStore.traps.map((trap) => {\n return {\n value: trap.id,\n label: `${trap.name} (${trap.code})`\n };\n });\n\n const handleSelectAll = () => {\n const newOptions = !allSelected ? options : [];\n selectRef.current.selectOption(newOptions);\n setFieldValue('traps', newOptions);\n setSelectedOptions(newOptions);\n setAllSelected(!allSelected);\n };\n\n return (\n <Form noValidate onSubmit={handleSubmit}>\n {/* Traps Select */}\n <Form.Group controlId='traps'>\n <Form.Label>Select Traps</Form.Label>\n <Row>\n <Col xs={7} sm={8} md={8}>\n <Select\n ref={selectRef}\n isMulti\n options={options}\n isLoading={traplogStore.loadingTrappingZones}\n value={selectedOptions}\n onChange={(options) => {\n setFieldValue('traps', options);\n setSelectedOptions(options);\n }}\n onBlur={() => {\n handleBlur({ target: { name: 'traps' } });\n }}\n />\n </Col>\n <Col className='text-center' xs={5} sm={4} md={4}>\n <Button\n variant='success'\n onClick={() => {\n handleSelectAll();\n }}\n >\n {!allSelected ? 'Select All' : 'Unselect All'}\n </Button>\n </Col>\n </Row>\n {errors.traps ? (\n <div className='text-danger' style={{ fontSize: '80%' }}>\n {errors.traps}\n </div>\n ) : null}\n </Form.Group>\n {/* Setup Date */}\n <Form.Group controlId='setup_date'>\n <Form.Label>Setup Date</Form.Label>\n <Form.Control\n type='date'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.setup_date}\n isInvalid={errors.setup_date}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.setup_date}\n </Form.Control.Feedback>\n </Form.Group>\n {/* Charged Date */}\n {chargedInput ? (\n <Form.Group controlId='charged_date'>\n <Form.Label>Charged Date</Form.Label>\n <Form.Control\n type='date'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.charged_date}\n isInvalid={errors.charged_date}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.charged_date}\n </Form.Control.Feedback>\n </Form.Group>\n ) : null}\n {/* Trap Lure */}\n <Form.Group controlId='trap_lure'>\n <Form.Label>Trap Lure</Form.Label>\n <Select\n options={traplogStore.trapLures.map((trapLure) => {\n return {\n value: trapLure.id,\n label: `${trapLure.name} x ${trapLure.concentration}`\n };\n })}\n isLoading={traplogStore.loadingTrapLures}\n defaultValue={values.trapLure}\n onChange={(option) => setFieldValue('trap_lure', option)}\n />\n {errors.trapLure ? (\n <div className='text-danger'>{errors.trap_lure}</div>\n ) : null}\n </Form.Group>\n </Form>\n );\n};\n\nexport default observer(SetupTrapsForm);\n","/* eslint-disable camelcase */\nexport const submitForm = (values, actions, traplogStore, propertiesStore) => {\n const { traps: trapOptions, setup_date, charged_date, trap_lure } = values;\n const trapsUpdated = trapOptions.map((trapOption) => {\n const trap = traplogStore.traps.find(\n (trap) => trap.id === trapOption.value\n );\n return {\n id: trap.id,\n trapping_zone_id: trap.trapping_zone_id,\n code: trap.code,\n name: trap.name,\n location_description: trap.location_description,\n lat: trap.location?.coordinates[1],\n lon: trap.location?.coordinates[0],\n trap_lure_id: trap_lure?.value,\n comments: trap.comments,\n setup_at: setup_date,\n charged_at: charged_date\n };\n });\n const url = `${process.env.REACT_APP_TRAPLOG_API_URL}api/traps/batch`;\n fetch(url, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${traplogStore.bearerToken}`,\n SeasonalDatabase: traplogStore.selectedDatabase\n },\n body: JSON.stringify(trapsUpdated)\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) traplogStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then(() => {\n traplogStore.loadTrappingZones(\n traplogStore.bearerToken,\n traplogStore.refreshBearerToken,\n traplogStore.selectedDatabase,\n propertiesStore.selectedPropertyId\n );\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n};\n\nexport const noUpdates = ({ setup_date, charged_date, trap_lure }) => {\n if (!setup_date && !charged_date && !trap_lure) return true;\n return false;\n};\n","import { PropertiesStore } from '@hortplus/properties-react';\nimport { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport LoadingOverlay from '../../LoadingOverlay';\nimport ConfirmationModal from '../../helpers/ConfirmationModal';\nimport { useStores } from '../../stores/useStores';\nimport SetupTrapsForm from '../SetupTrapsForm';\nimport { noUpdates, submitForm } from './utils';\n\nconst SetupTrapsModal = (props) => {\n const { traplogStore } = useStores();\n const [show, setShow] = useState(false);\n\n const hide = () => {\n setShow(false);\n };\n\n // Remove the 'charged input' section from the conrimation modal body text\n // if the charged input has been disabled.\n const confirmationModalBodyText = `This will change the setup date ${\n props.chargedInput ? 'and charged date' : ''\n } for every trap within the selected production sites for the current season.`;\n\n return (\n <Fragment>\n <span onClick={() => setShow(true)}>{props.children}</span>\n <Modal backdrop='static' show={show} onHide={() => hide()}>\n <Modal.Header closeButton>\n <Modal.Title>Seasonal Trap Setup</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Formik\n validateOnBlur={false}\n validateOnChange={false}\n initialValues={{\n traps: []\n }}\n validate={(values) => {\n const errors = {};\n if (values.traps?.length === 0) {\n errors.traps = 'At least one trap must be selected.';\n }\n if (noUpdates({ ...values }))\n errors.no_changes = 'No updates to submit.';\n return errors;\n }}\n onSubmit={(values, actions) => {\n submitForm(values, actions, traplogStore, props.propertiesStore);\n }}\n >\n {(fProps) => (\n <Fragment>\n <SetupTrapsForm {...fProps} chargedInput={props.chargedInput} />\n {fProps.isSubmitting ? <LoadingOverlay /> : null}\n <ConfirmationModal\n title='Warning'\n titleProps={{\n className: 'text-white'\n }}\n headerProps={{\n className: 'bg-secondary'\n }}\n bodyText={confirmationModalBodyText}\n confirmAction={() => {\n fProps.handleSubmit();\n }}\n showAction={() => {\n fProps.validateForm();\n }}\n showModal={!noUpdates({ ...fProps.values })}\n showButton={{\n children: 'Submit',\n props: {\n varient: 'primary',\n type: 'button'\n }\n }}\n confirmButton={{\n props: { variant: 'primary' }\n }}\n />\n <div className='text-danger' style={{ fontSize: '90%' }}>\n {fProps.errors.no_changes}\n </div>\n </Fragment>\n )}\n </Formik>\n </Modal.Body>\n </Modal>\n </Fragment>\n );\n};\n\nSetupTrapsModal.propTypes = {\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n chargedInput: PropTypes.bool.isRequired\n};\n\nexport default observer(SetupTrapsModal);\n","import {\n faBook,\n faChevronDown,\n faChevronUp,\n faEdit,\n faInfoCircle,\n faTrash\n} from '@fortawesome/free-solid-svg-icons';\nimport {\n faDiamondExclamation,\n faFireFlame\n} from '@fortawesome/pro-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n GlobalPropertiesSelect,\n PropertiesStore\n} from '@hortplus/properties-react';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useCallback, useEffect, useState } from 'react';\nimport {\n Alert,\n Button,\n Col,\n Collapse,\n OverlayTrigger,\n Row,\n Spinner,\n Tooltip\n} from 'react-bootstrap';\nimport InsectGroupSelect from '../InsectGroupSelect';\nimport TraplogLegend from '../TraplogLegend';\nimport ConfirmationModal from '../helpers/ConfirmationModal';\nimport { ToastContainer } from '../helpers/ToastUtils';\nimport { fetchTrapCSV } from '../helpers/TrappingUtils';\nimport { useCollapse } from '../hooks/useCollapse';\nimport PropertyOverviewMap from '../maps/PropertyOverviewMap';\nimport { useStores } from '../stores/useStores';\nimport AddTrapModal from './AddTrapModal';\nimport AddTrapMonitoringRecordsModal from './AddTrapMonitoringRecordsModal';\nimport AddTrappingZoneModal from './AddTrappingZoneModal';\nimport EditTrapModal from './EditTrapModal';\nimport EditTrappingZoneModal from './EditTrappingZoneModal';\nimport TrappingZoneResults from './TrappingZoneResults';\nimport TrapsTable from './TrapsTable';\nimport AddTrappingZoneSprayModal from './add_trapping_zone_spray_modal/AddTrappingZoneSprayModal';\nimport SetupTrapsModal from './setup_traps_modal/SetupTrapsModal';\n\nconst TrappingZoneTitle = (props) => {\n const { traplogStore } = useStores();\n\n return (\n <h5 className='my-auto'>\n {props.trappingZone.name}\n {props.trappingZone.cmsm ? ' (CMSM)' : ''}\n {props.trappingZone.mating_disruption_tie ? (\n <OverlayTrigger\n placement='top'\n overlay={\n <Tooltip>{props.trappingZone.mating_disruption_tie.name}</Tooltip>\n }\n >\n <FontAwesomeIcon\n className='ml-2'\n style={{ marginBottom: '1px' }}\n icon={faInfoCircle}\n size='xs'\n />\n </OverlayTrigger>\n ) : null}\n {traplogStore.isTrappingZoneHighRisk(props.trappingZone) ? (\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>High Risk Site</Tooltip>}\n >\n <FontAwesomeIcon className='ml-2' icon={faDiamondExclamation} />\n </OverlayTrigger>\n ) : null}\n {traplogStore.isTrappingZoneHighPressure(props.trappingZone) ? (\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>High Pressure Site</Tooltip>}\n >\n <FontAwesomeIcon className='ml-2' icon={faFireFlame} />\n </OverlayTrigger>\n ) : null}\n </h5>\n );\n};\n\n/*\n * Admin view, full CRUD, can view trapping results for all trapping zones at once.\n */\nfunction AdminOverview(props) {\n const { traplogStore } = useStores();\n const [messages, setMessages] = useState([]);\n const [loading, setLoading] = useState(false);\n const [editingTrappingZoneId, setEditingTrappingZoneId] = useState(null);\n const [editingTrapId, setEditingTrapId] = useState(null);\n const [trapsData, setTrapsData] = useState();\n const [mapOpen, mapsHandleCollapse] = useCollapse();\n const [trapsOpen, trapsHandleCollapse] = useCollapse(\n 'adminoverview-traps-open'\n );\n\n const deleteTrap = useCallback(\n async (trapId) => {\n const res = await fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/traps/${trapId}`,\n {\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n );\n if (res.ok)\n traplogStore.loadTrappingZones(\n props.bearerToken,\n props.refreshBearerToken,\n props.selectedDatabase,\n props.propertiesStore.selectedPropertyId\n );\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n },\n [\n props.bearerToken,\n props.selectedDatabase,\n props.refreshBearerToken,\n props.propertiesStore.selectedPropertyId\n ]\n );\n\n const trappingZone = useCallback(\n (trappingZoneId) =>\n traplogStore.trappingZones.find(\n (trappingZone) => trappingZone.id === trappingZoneId\n ),\n [traplogStore.trappingZones]\n );\n\n useEffect(() => {\n if (traplogStore.traps) {\n const newTrapsData = traplogStore.traps\n .map((trap) => {\n const currentTrappingZone = trappingZone(trap.trapping_zone_id);\n return {\n trappingZone: currentTrappingZone,\n area: currentTrappingZone.name,\n code: trap.code,\n name: trap.name,\n location_description: trap.location_description,\n setup_at: trap.setup_at,\n comments: trap.comments,\n edit: (\n <Button\n variant='link'\n type='button'\n className='text-primary'\n onClick={() => setEditingTrapId(trap.id)}\n >\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n ),\n delete: (\n <ConfirmationModal\n title='Confirm Delete'\n bodyText='Are you sure you want to delete this trap?'\n confirmAction={() => {\n return deleteTrap(trap.id);\n }}\n showButton={{\n children: <FontAwesomeIcon icon={faTrash} />,\n props: { className: 'text-danger', variant: 'link' }\n }}\n confirmButton={{ props: { variant: 'danger' } }}\n />\n )\n };\n })\n .sort((a, b) => {\n const trappingZoneA = a.trappingZone;\n const trappingZoneB = b.trappingZone;\n if (trappingZoneA?.name < trappingZoneB?.name) return -1;\n if (trappingZoneA?.name > trappingZoneB?.name) return 1;\n return 0;\n });\n setTrapsData(newTrapsData);\n }\n }, [traplogStore.traps, trappingZone, deleteTrap]);\n\n const deleteTrappingZone = async (trappingZoneId) => {\n const res = await fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-zones/${trappingZoneId}`,\n {\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n );\n if (res.ok)\n traplogStore.loadTrappingZones(\n props.bearerToken,\n props.refreshBearerToken,\n props.selectedDatabase,\n props.propertiesStore.selectedPropertyId\n );\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n };\n\n /**\n * Add a new bootstrap alert message.\n *\n * @param {string} variant\n * @param {string} message\n */\n const addMessage = (variant, message) => {\n let newMessages = [...messages];\n newMessages.push({\n variant: variant,\n message: message\n });\n setMessages(newMessages);\n };\n\n const regenerateTrappingNotifications = () => {\n setLoading(true);\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/properties/${props.propertiesStore.selectedPropertyId}/generate-trapping-notifications`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) {\n addMessage(\n 'success',\n `Successfully synced trapping notifications for ${props.propertiesStore.selectedProperty.name}`\n );\n } else {\n addMessage(\n 'danger',\n `Failed to sync trapping notifications for ${props.propertiesStore.selectedProperty.name}`\n );\n }\n })\n .catch((ex) => {\n addMessage(\n 'danger',\n `Failed to sync trapping notifications for ${props.propertiesStore.selectedProperty.name}`\n );\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n return (\n <Fragment>\n <ToastContainer />\n {messages.map((message, i) => (\n <Alert\n key={i}\n variant={message.variant}\n onClose={() => {\n let newMessages = [...messages];\n newMessages.splice(i, 1);\n setMessages(newMessages);\n }}\n dismissible\n >\n {message.message}\n </Alert>\n ))}\n {/* Options box */}\n <Row className='mb-2 justify-content-center'>\n <Col\n xs={3}\n sm={2}\n className='d-flex align-items-center justify-content-end pr-0 font-weight-bold'\n >\n Property:\n </Col>\n <Col xs={9} md={8} lg={6}>\n <GlobalPropertiesSelect\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n propertiesStore={props.propertiesStore}\n useRpin\n />\n </Col>\n <Col\n xs={0}\n sm={1}\n className='d-flex align-items-center justify-content-end pl-0 font-weight-bold'\n style={{ visibility: 'hidden' }}\n >\n Property:\n </Col>\n </Row>\n <Row className='justify-content-center'>\n <Col\n xs={3}\n sm={2}\n className='d-flex align-items-center justify-content-end pr-0 font-weight-bold'\n >\n Insect:\n </Col>\n <Col xs={9} md={8} lg={6}>\n <InsectGroupSelect\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n />\n </Col>\n <Col\n xs={0}\n sm={1}\n className='d-flex align-items-center justify-content-end pl-0 font-weight-bold'\n style={{ visibility: 'hidden' }}\n >\n Insect:\n </Col>\n </Row>\n {traplogStore.selectedInsectGroupId === null ? null : props\n .propertiesStore.loading ||\n traplogStore.loadingInsectGroups ||\n traplogStore.loadingTrappingZones ||\n traplogStore.loadingTrappingResults ||\n loading ? (\n <div className='text-center mt-3'>\n <Spinner variant='primary' animation='border' />\n </div>\n ) : (\n <Fragment>\n {/* Editing trapping zone modal */}\n {editingTrappingZoneId ? (\n <EditTrappingZoneModal\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n propertiesStore={props.propertiesStore}\n trappingZone={traplogStore.trappingZones.find(\n (t) => t.id === editingTrappingZoneId\n )}\n setTrappingZoneId={setEditingTrappingZoneId}\n map\n />\n ) : null}\n\n {/* Editing trap modal */}\n {editingTrapId ? (\n <EditTrapModal\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n propertiesStore={props.propertiesStore}\n trap={traplogStore.traps.find(\n (trap) => trap.id === editingTrapId\n )}\n setTrapId={setEditingTrapId}\n map\n />\n ) : null}\n\n {/* Trapping Zones */}\n <Row>\n <Col className='text-center'>\n <Row>\n <Col>\n <Button\n className='mx-2 mt-3'\n variant={`${\n traplogStore.selectedTrappingZoneId === null\n ? ''\n : 'outline-'\n }info`}\n onClick={() => traplogStore.setSelectedTrappingZoneId(null)}\n >\n All\n </Button>\n {traplogStore.trappingZones\n .slice()\n .sort((a, b) => a.name.localeCompare(b.name))\n .map((trappingZone) => {\n const variantColour = `${\n traplogStore.trappingResults &&\n traplogStore.trappingResults[trappingZone.id]\n ? traplogStore.trappingResults[trappingZone.id]\n .overview.status === 'good' ||\n traplogStore.trappingResults[trappingZone.id]\n .overview.status === 'sprayed'\n ? 'success'\n : traplogStore.trappingResults[trappingZone.id]\n .overview.status === 'no_data'\n ? 'secondary'\n : traplogStore.trappingResults[trappingZone.id]\n .overview.status ===\n 'pre_trap_catch_threshold_met' ||\n traplogStore.trappingResults[trappingZone.id]\n .overview.status ===\n 'accumulation_threshold_met' ||\n traplogStore.trappingResults[trappingZone.id]\n .overview.status === 'average_threshold_met'\n ? 'danger'\n : traplogStore.trappingResults[trappingZone.id]\n .overview.status ===\n 'near_accumulation_threshold'\n ? 'warning'\n : 'primary'\n : 'primary'\n }`;\n return (\n <Button\n key={trappingZone.id}\n className='mx-2 mt-3'\n variant={`${\n traplogStore.selectedTrappingZoneId ===\n trappingZone.id\n ? ''\n : 'outline-'\n }${variantColour}`}\n onClick={() =>\n traplogStore.setSelectedTrappingZoneId(\n trappingZone.id\n )\n }\n >\n {`${trappingZone.name}`}\n {traplogStore.isTrappingZoneHighRisk(trappingZone) ? (\n <FontAwesomeIcon\n className='ml-1'\n icon={faDiamondExclamation}\n />\n ) : null}\n {traplogStore.isTrappingZoneHighPressure(\n trappingZone\n ) ? (\n <FontAwesomeIcon\n className='ml-1'\n icon={faFireFlame}\n />\n ) : null}\n {`${trappingZone.cmsm ? ' (CMSM)' : ''}`}\n </Button>\n );\n })}\n </Col>\n </Row>\n <Row>\n <Col>\n <TraplogLegend className='text-center' />\n </Col>\n </Row>\n </Col>\n <Col sm={4} lg={3} className='mt-3'>\n <div className='d-flex flex-column align-items-end'>\n {/* <Button\n variant='link'\n onClick={regenerateTrappingNotifications}\n >\n <FontAwesomeIcon icon={faSync} /> Sync notifications\n </Button> */}\n <AddTrapModal\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n map\n />\n <AddTrappingZoneModal\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n propertiesStore={props.propertiesStore}\n map\n />\n <AddTrappingZoneSprayModal\n addMany\n propertiesStore={props.propertiesStore}\n coverageDays\n >\n <Button type='button' variant='link'>\n Add Spray Application\n </Button>\n </AddTrappingZoneSprayModal>\n <SetupTrapsModal\n propertiesStore={props.propertiesStore}\n chargedInput\n >\n <Button type='button' variant='link'>\n Seasonal Trap Setup\n </Button>\n </SetupTrapsModal>\n </div>\n </Col>\n </Row>\n\n {/* Map overview */}\n <Row className='my-3'>\n <Col>\n <h3\n onClick={() => mapsHandleCollapse()}\n className='text-center mb-2'\n >\n Map Overview{'\\t'}\n <FontAwesomeIcon\n icon={mapOpen ? faChevronDown : faChevronUp}\n size='xs'\n />\n </h3>\n <Collapse in={mapOpen}>\n <Row>\n <Col style={{ height: '400px' }}>\n <PropertyOverviewMap\n propertiesStore={props.propertiesStore}\n onClick={(id) => {\n traplogStore.setSelectedTrappingZoneId(id);\n }}\n />\n </Col>\n </Row>\n </Collapse>\n </Col>\n </Row>\n {/* Trapping Table */}\n <h5\n onClick={() => {\n // Disable collapse when no traps data.\n if (trapsData) {\n trapsHandleCollapse();\n }\n }}\n >\n Traps{'\\t'}\n <FontAwesomeIcon\n icon={trapsOpen ? faChevronDown : faChevronUp}\n size='xs'\n />\n </h5>\n {trapsData ? (\n <Collapse in={trapsOpen}>\n <div>\n <TrapsTable data={trapsData} />\n </div>\n </Collapse>\n ) : (\n <p>Could not get the trap data for this property.</p>\n )}\n {/* Trapping Results Table */}\n {traplogStore.selectedTrappingZoneId !== null ? (\n // This condition fixes a bug when switching property and insect group at the same time\n traplogStore.selectedTrappingZoneResults ? (\n <Row>\n <Col>\n <div className='d-flex justify-content-between align-items-centre'>\n <div className='d-flex justify-content-start align-items-centre'>\n <TrappingZoneTitle\n trappingZone={traplogStore.selectedTrappingZone}\n />\n <Button\n variant='link'\n onClick={() =>\n setEditingTrappingZoneId(\n traplogStore.selectedTrappingZoneId\n )\n }\n className='ml-4'\n >\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n <ConfirmationModal\n title='Confirm Delete'\n bodyText='Are you sure you want to delete this production site?'\n confirmAction={() => {\n return deleteTrappingZone(\n traplogStore.selectedTrappingZoneId\n );\n }}\n showButton={{\n children: <FontAwesomeIcon icon={faTrash} />,\n props: { className: 'text-danger', variant: 'link' }\n }}\n confirmButton={{\n props: { variant: 'danger' }\n }}\n />\n </div>\n <div className='my-2'>\n <AddTrapMonitoringRecordsModal\n propertiesStore={props.propertiesStore}\n trappingZone={traplogStore.selectedTrappingZone}\n />\n <AddTrappingZoneSprayModal\n propertiesStore={props.propertiesStore}\n trappingZone={traplogStore.selectedTrappingZone}\n coverageDays\n >\n <Button type='button' variant='primary'>\n <FontAwesomeIcon icon={faBook} /> Add Spray\n Application\n </Button>\n </AddTrappingZoneSprayModal>\n </div>\n </div>\n <TrappingZoneResults\n trappingZone={traplogStore.selectedTrappingZone}\n trappingZoneResults={\n traplogStore.selectedTrappingZoneResults\n }\n selectedInsectGroup={traplogStore.selectedInsectGroup}\n propertiesStore={props.propertiesStore}\n />\n </Col>\n </Row>\n ) : null\n ) : (\n traplogStore.sortedTrappingZones.map((trappingZone) => {\n // This condition fixes a bug when switching property and insect group at the same time\n if (traplogStore.trappingResults[trappingZone.id]) {\n return (\n <Row key={trappingZone.id}>\n <Col>\n <div className='d-flex justify-content-between align-items-centre'>\n <div className='d-flex justify-content-start align-items-centre'>\n <TrappingZoneTitle trappingZone={trappingZone} />\n <Button\n variant='link'\n onClick={() =>\n setEditingTrappingZoneId(trappingZone.id)\n }\n className='ml-4'\n >\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n <ConfirmationModal\n title='Confirm Delete'\n bodyText='Are you sure you want to delete this production site?'\n confirmAction={() => {\n return deleteTrappingZone(trappingZone.id);\n }}\n showButton={{\n children: <FontAwesomeIcon icon={faTrash} />,\n props: {\n className: 'text-danger',\n variant: 'link'\n }\n }}\n confirmButton={{\n props: { variant: 'danger' }\n }}\n />\n </div>\n <div className='my-2'>\n <AddTrapMonitoringRecordsModal\n propertiesStore={props.propertiesStore}\n trappingZone={trappingZone}\n />\n <AddTrappingZoneSprayModal\n propertiesStore={props.propertiesStore}\n trappingZone={trappingZone}\n coverageDays\n >\n <Button type='button' variant='primary'>\n <FontAwesomeIcon icon={faBook} /> Add Spray\n Application\n </Button>\n </AddTrappingZoneSprayModal>\n </div>\n </div>\n <TrappingZoneResults\n trappingZone={trappingZone}\n trappingZoneResults={\n traplogStore.trappingResults[trappingZone.id]\n }\n selectedInsectGroup={traplogStore.selectedInsectGroup}\n propertiesStore={props.propertiesStore}\n />\n </Col>\n </Row>\n );\n } else return null;\n })\n )}\n <Row>\n <Col className='text-center'>\n <Button\n variant='light'\n onClick={() => {\n const result = fetchTrapCSV(\n traplogStore.bearerToken,\n traplogStore.selectedDatabase,\n traplogStore.selectedInsectGroup.short_name,\n props.propertiesStore.selectedPropertyId,\n traplogStore.selectedTrappingZoneId\n );\n }}\n >\n Export Data\n </Button>\n </Col>\n </Row>\n </Fragment>\n )}\n </Fragment>\n );\n}\n\nAdminOverview.propTypes = {\n selectedDatabase: PropTypes.string.isRequired,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired\n};\n\nexport default observer(AdminOverview);\n","import { faTriangle as faTriangleRegular } from '@fortawesome/pro-regular-svg-icons/faTriangle';\nimport { faTriangle as faTriangleSolid } from '@fortawesome/pro-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { PropertiesStore } from '@hortplus/properties-react';\nimport mapboxgl from 'mapbox-gl';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { Button, Col, Popover, Row } from 'react-bootstrap';\nimport Map, { Layer, Marker, Source } from 'react-map-gl-7';\nimport { useBoundaryLayers } from '../hooks/useBoundaryLayers';\nimport { useMapState } from '../hooks/useMapState';\nimport '../styles.module.css';\nimport PreviewButton, { monoStyle } from './PreviewButton';\n\nconst statusLabel = (status) => {\n switch (status) {\n case 'pre_trap_catch_threshold_met':\n return 'Threshold Met';\n case 'accumulation_threshold_met':\n return 'Threshold Met';\n case 'average_threshold_met':\n return 'Threshold Met';\n case 'near_accumulation_threshold':\n return 'Near Threshold';\n case 'good':\n return 'No Action Required';\n case 'sprayed':\n return 'Sprayed';\n case 'no_data':\n return 'Not Monitored';\n default:\n return 'Unknown';\n }\n};\n\nconst TrapMarkerIcon = ({\n trap,\n color,\n icon,\n setBoundaryHoverInfo,\n setTrapHoverInfo\n}) => (\n <FontAwesomeIcon\n style={{ color }}\n onMouseEnter={() => {\n setBoundaryHoverInfo(null);\n setTrapHoverInfo({\n id: trap.id,\n code: trap.code,\n name: trap.name,\n lureName: trap.lureName,\n locationDescription: trap.locationDescription,\n x: trap.location[0],\n y: trap.location[1],\n isHot: trap.isHot\n });\n }}\n onMouseLeave={() => {\n setTrapHoverInfo({});\n }}\n icon={icon}\n size='lg'\n />\n);\n\nconst HotTrapMap = (props) => {\n const [mapStyle, setMapStyle] = useState(monoStyle);\n const [boundaryHoverInfo, setBoundaryHoverInfo] = useState();\n const [trapHoverInfo, setTrapHoverInfo] = useState({});\n const layers = useBoundaryLayers([0.2, 0.4, 4, 0.5]);\n const [\n boundaryData,\n trapData,\n viewport,\n setViewport,\n mapRef,\n mapRefWrapper,\n ,\n fitBounds\n ] = useMapState();\n\n const hotTrapStatuses = props.hotTrapStatuses;\n const newTrapData = useMemo(() => {\n return trapData.map((trap) => {\n trap.isHot =\n hotTrapStatuses?.find((hts) => hts.id === trap.id)?.isHot || false;\n return trap;\n });\n }, [trapData, hotTrapStatuses]);\n\n const toPoint = () => {\n return mapRef.current\n .getMap()\n .project(new mapboxgl.LngLat(trapHoverInfo.y, trapHoverInfo.x));\n };\n\n useEffect(() => {\n if (mapRef.current && hotTrapStatuses) fitBounds(null, { duration: 0 });\n }, [mapRef, hotTrapStatuses]);\n\n return boundaryData.features.length > 0 ? (\n <Map\n ref={mapRefWrapper}\n initialViewState={viewport}\n onViewportChange={(nextViewport) => setViewport(nextViewport)}\n mapStyle={`mapbox://styles/hortplus/${mapStyle}`}\n interactiveLayerIds={[\n 'layerStyleThresholdMet',\n 'layerStyleNearThreshold',\n 'layerStyleGood',\n 'layerStyleNoData'\n ]}\n onMouseMove={(e) => {\n const classList = e.originalEvent.srcElement.classList;\n // Check if element is a trap icon,a marker container or none.\n if (\n classList &&\n (classList.contains('fa-triangle') ||\n classList.contains('mapboxgl-marker') ||\n classList.length === 0)\n ) {\n setBoundaryHoverInfo(null);\n } else {\n const hoveredFeature = e.features && e.features[0];\n setBoundaryHoverInfo(\n hoveredFeature\n ? {\n feature: hoveredFeature,\n x: e.originalEvent.offsetX,\n y: e.originalEvent.offsetY\n }\n : null\n );\n }\n }}\n onClick={(e) => {\n const hoveredFeature = e.features && e.features[0];\n if (hoveredFeature && props.onClick)\n props.onClick(hoveredFeature.properties.id);\n }}\n mapboxAccessToken={process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}\n >\n <div\n className='m-3'\n style={{\n position: 'absolute',\n top: 0,\n right: 0\n }}\n >\n <Button\n variant='light'\n onClick={() => fitBounds(null, { duration: 500 })}\n className='m-3 float-right'\n >\n Reset\n </Button>\n </div>\n\n <Source id='trappingZones' type='geojson' data={boundaryData}>\n {layers.map((layer) => {\n return <Layer key={layer.id} {...layer} />;\n })}\n </Source>\n {/** Trap markers */}\n {newTrapData.map((trap) => {\n const zoomLevel = viewport.zoom;\n return (\n // viewport.zoom is not updating so need to set condition\n // to one that will always be true to display traps.\n // Original value - 13.5.\n zoomLevel > 1 && (\n <Marker\n key={trap.id}\n latitude={trap.location[0]}\n longitude={trap.location[1]}\n offsetTop={-18}\n offsetLeft={-8}\n >\n {!trap.isHot ? (\n <TrapMarkerIcon\n trap={trap}\n color={trap.displayColour}\n icon={faTriangleRegular}\n setBoundaryHoverInfo={setBoundaryHoverInfo}\n setTrapHoverInfo={setTrapHoverInfo}\n />\n ) : (\n <TrapMarkerIcon\n trap={trap}\n color={'red'}\n icon={faTriangleSolid}\n setBoundaryHoverInfo={setBoundaryHoverInfo}\n setTrapHoverInfo={setTrapHoverInfo}\n />\n )}\n </Marker>\n )\n );\n })}\n {boundaryHoverInfo ? (\n <Popover\n id={boundaryHoverInfo.feature.properties.id}\n placement='auto'\n style={{\n left:\n viewport.width - boundaryHoverInfo.x < 200\n ? boundaryHoverInfo.x - 200\n : boundaryHoverInfo.x + 5,\n top:\n viewport.height - boundaryHoverInfo.y < 100\n ? boundaryHoverInfo.y - 90\n : boundaryHoverInfo.y,\n position: 'absolute',\n width: '200px',\n zIndex: 9,\n pointerEvents: 'none'\n }}\n >\n <Popover.Title>\n Production Site:{' '}\n <b>{boundaryHoverInfo.feature.properties.trappingZoneName}</b>\n </Popover.Title>\n <Popover.Content>\n Status:{' '}\n <b>{statusLabel(boundaryHoverInfo.feature.properties.status)}</b>\n </Popover.Content>\n </Popover>\n ) : null}\n {trapHoverInfo.id && (\n <Popover\n id={trapHoverInfo.name}\n placement='auto'\n style={{\n left: toPoint().x,\n top: toPoint().y,\n position: 'absolute',\n width: '200px',\n zIndex: 9,\n pointerEvents: 'none'\n }}\n >\n <Popover.Title>\n Name: <b>{trapHoverInfo.name}</b>\n </Popover.Title>\n <Popover.Content>\n <div>\n ID: <b>{trapHoverInfo.code}</b>\n </div>\n <div>\n Lure Name: <b>{trapHoverInfo.lureName}</b>\n </div>\n <div>\n Location: <b>{trapHoverInfo.locationDescription}</b>\n </div>\n <div>\n Hot: <b>{trapHoverInfo.isHot ? 'Yes' : 'No'}</b>\n </div>\n </Popover.Content>\n </Popover>\n )}\n <PreviewButton\n setMapStyle={setMapStyle}\n mapStyle={mapStyle}\n viewport={viewport}\n />\n </Map>\n ) : (\n <Row className='pt-5'>\n <Col>\n <h4 className='text-center'>\n This property does not have any boundary data.\n </h4>\n </Col>\n </Row>\n );\n};\n\nHotTrapMap.propTypes = {\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n onClick: PropTypes.func,\n hotTrapStatuses: PropTypes.array\n};\n\nexport default observer(HotTrapMap);\n","import { PropertiesStore } from '@hortplus/properties-react';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\nimport { Alert, Button, Col, Container, Row, Spinner } from 'react-bootstrap';\nimport InsectGroupSelect from '../../InsectGroupSelect';\nimport HotTrapMap from '../../maps/HotTrapMap';\nimport { useStores } from '../../stores/useStores';\n\nconst HotTrap = (props) => {\n const { traplogStore } = useStores();\n const [hotTrapStatuses, setHotTrapStatuses] = useState();\n const [loading, setLoading] = useState(false);\n\n const propertiesStore = props.propertiesStore;\n const selectedPropertyId = propertiesStore.selectedPropertyId;\n const selectedInsectGroupId = traplogStore.selectedInsectGroupId;\n\n useEffect(() => {\n let ignore = false;\n if (selectedPropertyId && selectedInsectGroupId) {\n setLoading(true);\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/properties/${selectedPropertyId}/traps-thresholds?insect_group_id=${selectedInsectGroupId}`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n if (!ignore) setHotTrapStatuses(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n if (!ignore) setHotTrapStatuses([]);\n })\n .finally(() => {\n setLoading(false);\n });\n }\n return () => {\n ignore = true;\n };\n }, [selectedPropertyId, selectedInsectGroupId]);\n\n return (\n <Container>\n <Row className='mb-4 justify-content-center'>\n <Col\n xs={3}\n sm={2}\n className='d-flex align-items-center justify-content-end pr-0 font-weight-bold'\n >\n Insect:\n </Col>\n <Col xs={9} md={8} lg={6}>\n <InsectGroupSelect\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n customInsects={['CM', 'CM SIT', 'LBAM', 'LBAM SIT']}\n />\n </Col>\n <Col\n xs={0}\n sm={1}\n className='d-flex align-items-center justify-content-end pl-0 font-weight-bold'\n style={{ visibility: 'hidden' }}\n >\n Insect:\n </Col>\n </Row>\n {traplogStore.selectedInsectGroupId === null ? null : props\n .propertiesStore.loading ||\n traplogStore.loadingInsectGroups ||\n traplogStore.loadingTrappingZones ||\n traplogStore.loadingTrappingResults ||\n loading ? (\n <Col className='text-center mt-3 mb-3'>\n <Spinner variant='primary' animation='border' />\n </Col>\n ) : (\n <Row>\n <Col>\n <Row className='w-100 no-gutters'>\n <Col style={{ height: '400px' }}>\n <HotTrapMap\n propertiesStore={props.propertiesStore}\n onClick={(id) => {\n traplogStore.setSelectedTrappingZoneId(id);\n }}\n hotTrapStatuses={hotTrapStatuses}\n />\n </Col>\n </Row>\n <Row className='mt-4'>\n <Col className='text-center'>\n <Alert variant='light'>\n <p className='mb-0'>\n The hot trap map uses the season monitoring data to help\n identify traps that are catching more moths than the others\n on the property. These traps are marked red as hot traps.\n </p>\n </Alert>\n </Col>\n </Row>\n <Row className='mt-2'>\n <Col className='text-center '>\n <Button as='a' href='/pest-disease/trapping-overview'>\n View Monitoring\n </Button>\n </Col>\n </Row>\n <Row className='mt-2'>\n <Col className='text-center'>\n <Button\n as='a'\n href={`/pest-disease/seasonal-trapping-report?property_id=${selectedPropertyId}`}\n >\n Season Overview\n </Button>\n </Col>\n </Row>\n </Col>\n </Row>\n )}\n </Container>\n );\n};\n\nHotTrap.propTypes = {\n selectedDatabase: PropTypes.string,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired\n};\n\nexport default observer(HotTrap);\n","import { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\nimport { Spinner, Table } from 'react-bootstrap';\n\nconst MissingMonitoring = (props) => {\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState();\n\n useEffect(() => {\n setLoading(true);\n fetch(`${process.env.REACT_APP_TRAPLOG_API_URL}api/missing-monitoring`, {\n headers: {\n Authorization: `Bearer ${props.bearerToken}`,\n Accept: 'application/json',\n SeasonalDatabase: props.selectedDatabase\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n setData(data);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setData(false);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [props.bearerToken, props.selectedDatabase]);\n\n return loading ? (\n <Spinner variant='primary' animation='border' />\n ) : data ? (\n <Table>\n <thead>\n <tr>\n <th>Property Identifier</th>\n <th>Property Name</th>\n <th>Production Site</th>\n <th>Trap Type</th>\n <th>Last Visited Date</th>\n <th>Total Traps</th>\n <th>Monitored Traps</th>\n </tr>\n </thead>\n <tbody>\n {data.map((point, i) => (\n <tr key={i}>\n <td>{point.identifier}</td>\n <td>{point.property}</td>\n <td>{point.production_area}</td>\n <td>{point.insect_group_name}</td>\n <td>{point.last_visited_date}</td>\n <td>{point.traps}</td>\n <td>{point.monitored_traps}</td>\n </tr>\n ))}\n </tbody>\n </Table>\n ) : null;\n};\n\nMissingMonitoring.propTypes = {\n selectedDatabase: PropTypes.string.isRequired,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired\n};\n\nexport default observer(MissingMonitoring);\n","import { PropertiesStore } from '@hortplus/properties-react';\nimport { useFormik } from 'formik';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { Button, Col, Form, Row } from 'react-bootstrap';\nimport Select from 'react-select';\nimport * as yup from 'yup';\nimport { errorToast } from '../../helpers/ToastUtils';\nimport { useStores } from '../../stores/useStores';\n\nconst SeasonOverviewReportForm = (props) => {\n const { traplogStore } = useStores();\n const [loadingPropertyGroups, setLoadingPropertyGroups] = useState(false);\n\n const propertyGroups = props.propertyGroups;\n const setPropertyGroups = props.setPropertyGroups;\n const propertyId = props.propertyId;\n\n const customInsects = ['CM', 'CM SIT', 'LBAM', 'LBAM SIT'];\n\n const propertyRunsOptions = useMemo(\n () =>\n propertyGroups\n .filter(\n (propertyGroup) =>\n !propertyGroup.deleted_at &&\n propertyGroup.group_type === 'trapping_run'\n )\n .map((propertyGroup) => {\n return {\n value: propertyGroup.id,\n label: propertyGroup.name,\n custom: propertyGroup\n };\n }),\n [propertyGroups]\n );\n\n const propertyGroupsOptions = useMemo(\n () =>\n propertyGroups\n .filter(\n (propertyGroup) =>\n !propertyGroup.deleted_at && propertyGroup.group_type === 'manual'\n )\n .map((propertyGroup) => {\n return {\n value: propertyGroup.id,\n label: propertyGroup.name,\n custom: propertyGroup\n };\n }),\n [propertyGroups]\n );\n\n const formik = useFormik({\n initialValues: {\n propertyGroup: props.selectedPropertyGroup,\n insectGroup: props.selectedInsectGroup\n },\n validationSchema: yup.object().shape({\n insectGroup: yup.object().required()\n }),\n onSubmit: async (values) => {\n props.setLoading(true);\n props.setSelectedInsectGroup(values.insectGroup);\n props.setSelectedPropertyGroup(values.propertyGroup);\n traplogStore.selectedInsectGroupId = values.insectGroup.id;\n\n const properties = [];\n await Promise.all(\n [values.propertyGroup].map((propertyGroup) => {\n return fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/property-groups/${propertyGroup.id}?with[]=properties.trappingZones.traps.trapLure.insects&with[]=properties.trappingZones.matingDisruptionTie`,\n {\n headers: {\n Authorization: `Bearer ${props.bearerToken}`,\n Accept: 'application/json',\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) traplogStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n data.properties.map((property) => {\n if (!properties.find((p) => p.id === property.id))\n properties.push(property);\n });\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n });\n })\n );\n\n props.setSelectedProperties(properties);\n props.setLoading(false);\n }\n });\n\n /**\n * Load insect groups and property groups\n */\n useEffect(() => {\n // Fetch insect groups.\n if (traplogStore.insectGroups.length === 0) {\n traplogStore.loadInsectGroups(\n props.bearerToken,\n props.refreshBearerToken\n );\n }\n // Fetch property groups.\n if (!props.selectedDatabase) return;\n if (propertyGroups.length > 0) return;\n setLoadingPropertyGroups(true);\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups?with[]=properties`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) traplogStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setPropertyGroups(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setPropertyGroups([]);\n })\n .finally(() => {\n setLoadingPropertyGroups(false);\n });\n }, [props.selectedDatabase, props.bearerToken, propertyId]);\n\n useEffect(() => {\n if (propertyGroupsOptions.length === 0) return;\n if (formik.values.propertyGroup) return;\n let foundProperty = false;\n for (let propertyGroup of propertyGroups) {\n const properties = propertyGroup.properties;\n if (!properties) continue;\n const found = properties.find((p) => p.id === propertyId);\n if (!found) continue;\n const option = propertyGroupsOptions.find((pgo) => {\n return pgo.value === propertyGroup.id;\n });\n if (!option) continue;\n foundProperty = true;\n props.setSelectedPropertyGroup(propertyGroup);\n formik.setFieldValue('propertyGroup', propertyGroup);\n break;\n }\n if (propertyId && !foundProperty) {\n errorToast('Property not found', 'property-not-found');\n }\n }, [propertyGroups, propertyGroupsOptions]);\n\n return (\n <Form onSubmit={formik.handleSubmit}>\n <Row className='mb-2 justify-content-center'>\n <Col\n xs={3}\n sm={2}\n className='d-flex align-items-center justify-content-end pr-0 font-weight-bold'\n >\n Trapping Run:\n </Col>\n <Col xs={9} md={8} lg={6}>\n <Select\n value={\n props.selectedPropertyGroup\n ? {\n value: props.selectedPropertyGroup.id,\n label: props.selectedPropertyGroup.name,\n custom: props.selectedPropertyGroup\n }\n : null\n }\n placeholder='Select a trapping run or property group'\n options={[\n {\n label: 'Trapping Runs',\n options: propertyRunsOptions\n },\n {\n label: 'Property Groups',\n options: propertyGroupsOptions\n }\n ]}\n isLoading={loadingPropertyGroups}\n onChange={(option) => {\n props.setSelectedPropertyGroup(option.custom);\n formik.setFieldValue('propertyGroup', option.custom);\n }}\n />\n </Col>\n <Col\n xs={0}\n sm={1}\n className='d-flex align-items-center justify-content-end pl-0 font-weight-bold'\n style={{ visibility: 'hidden' }}\n >\n Trapping Run:\n </Col>\n </Row>\n <Row className='justify-content-center'>\n <Col\n xs={3}\n sm={2}\n className='d-flex align-items-center justify-content-end pr-0 font-weight-bold'\n >\n Insect:\n </Col>\n <Col xs={9} md={8} lg={6}>\n <Select\n defaultValue={\n props.selectedInsectGroup\n ? {\n value: props.selectedInsectGroup.id,\n label: props.selectedInsectGroup.name,\n custom: props.selectedInsectGroup\n }\n : undefined\n }\n placeholder='Select an insect'\n isLoading={traplogStore.loadingInsectGroups}\n options={traplogStore.insectGroups\n .filter((value) => customInsects.includes(value.short_name))\n .map((insectGroup) => {\n return {\n value: insectGroup.id,\n label: insectGroup.name,\n custom: insectGroup\n };\n })}\n onChange={(option) => {\n formik.setFieldValue('insectGroup', option.custom);\n }}\n />\n </Col>\n <Col\n xs={0}\n sm={1}\n className='d-flex align-items-center justify-content-end pl-0 font-weight-bold'\n style={{ visibility: 'hidden' }}\n >\n Insect:\n </Col>\n </Row>\n <Row className='mt-3 pb-1'>\n <Col className='text-center'>\n <Button\n variant='outline-primary'\n type='submit'\n disabled={\n formik.isSubmitting ||\n loadingPropertyGroups ||\n traplogStore.loadingInsectGroups\n }\n >\n Submit\n </Button>\n </Col>\n </Row>\n </Form>\n );\n};\n\nSeasonOverviewReportForm.propTypes = {\n selectedDatabase: PropTypes.string,\n bearerToken: PropTypes.string.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n setLoading: PropTypes.func.isRequired,\n setSelectedProperties: PropTypes.func.isRequired,\n selectedInsectGroup: PropTypes.object,\n setSelectedInsectGroup: PropTypes.func.isRequired,\n propertyId: PropTypes.number\n};\n\nexport default observer(SeasonOverviewReportForm);\n","import Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nconst SeasonOverviewReportPropertySummaryGraph = (props) => {\n if (!props.trappingZonehotTrapStatuses) return null;\n\n const totalCatch = props.trappingZonehotTrapStatuses.reduce((prev, curr) => {\n return prev + curr.trap.catch;\n }, 0);\n const averageCatch = totalCatch / props.trappingZonehotTrapStatuses.length;\n\n return (\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n type: 'column',\n height: 447\n },\n credits: {\n enabled: false\n },\n title: {\n text: 'Site Trap Totals'\n },\n xAxis: {\n categories: props.trappingZonehotTrapStatuses.map(\n (tzhts) => `${tzhts.trap.name} (${tzhts.trap.code})`\n )\n },\n yAxis: {\n title: {\n text: 'Trap Catch'\n },\n min: 0,\n minRange: 1,\n tickInterval: 1,\n plotLines: [\n {\n color: '#c2c2c2',\n value: averageCatch,\n dashStyle: 'dash',\n width: 2\n }\n ]\n },\n legend: {\n enabled: true,\n symbolRadius: 0\n },\n tooltip: {\n formatter: function () {\n const trapID = {\n code: this.key.match(/(.+) \\((.+)\\)/)[2],\n name: this.key.match(/(.+) \\((.+)\\)/)[1]\n };\n const trap = props.trappingZonehotTrapStatuses.find(\n (tzhts) =>\n tzhts.trap.code === trapID.code &&\n tzhts.trap.name === trapID.name\n )?.trap;\n return (\n '<b>' +\n this.key +\n '</b>' +\n '<br/>' +\n 'Name: ' +\n trap.name +\n '<br/>' +\n 'Location: ' +\n trap.location_description +\n '<br/>' +\n 'Total: ' +\n trap.catch +\n '<br/>' +\n 'Average: ' +\n averageCatch.toFixed(1)\n );\n }\n },\n plotOptions: {\n column: {\n pointPadding: 0.2,\n borderWidth: 0,\n centerInCategory: true\n }\n },\n series: [\n {\n name: 'Catch',\n data: props.trappingZonehotTrapStatuses.map((tzhts) => {\n return tzhts.trap.catch;\n }),\n events: {\n legendItemClick: function () {\n return false;\n }\n }\n },\n {\n type: 'line',\n name: 'Average',\n dashStyle: 'Dash',\n color: '#c2c2c2',\n marker: {\n enabled: false,\n states: {\n hover: {\n enabled: false\n }\n }\n },\n data: [],\n events: {\n legendItemClick: function () {\n return false;\n }\n }\n }\n ]\n }}\n />\n );\n};\n\nSeasonOverviewReportPropertySummaryGraph.propTypes = {\n trappingZonehotTrapStatuses: PropTypes.array\n};\n\nexport default observer(SeasonOverviewReportPropertySummaryGraph);\n","import { faTriangle as faTriangleRegular } from '@fortawesome/pro-regular-svg-icons';\nimport {\n faCircleQuestion,\n faTriangle as faTriangleSolid,\n faXmark\n} from '@fortawesome/pro-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { PropertiesStore } from '@hortplus/properties-react';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useMemo } from 'react';\nimport {\n Button,\n Col,\n OverlayTrigger,\n Popover,\n Row,\n Spinner\n} from 'react-bootstrap';\nimport { errorToast } from '../../helpers/ToastUtils';\nimport { useFetch } from '../../hooks/useFetch';\nimport HotTrapMap from '../../maps/HotTrapMap';\nimport { useStores } from '../../stores/useStores';\nimport SeasonOverviewReportPropertySummaryGraph from './SeasonOverviewReportPropertySummaryGraph';\n\nconst SeasonOverviewReportPropertySummary = (props) => {\n const { traplogStore } = useStores();\n\n const propertyId = props.viewMapData?.property.id;\n const selectedInsectGroupId = props.viewMapData?.selectedInsectGroup.id;\n\n useEffect(() => {\n traplogStore.loadTrappingZones(\n props.bearerToken,\n props.refreshBearerToken,\n props.selectedDatabase,\n propertyId\n );\n }, [propertyId]);\n\n const {\n data: hotTrapStatuses,\n isFetching,\n error\n } = useFetch({\n url: `${process.env.REACT_APP_TRAPLOG_API_URL}api/properties/${propertyId}/traps-thresholds?insect_group_id=${selectedInsectGroupId}`,\n init: {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n },\n refreshBearerToken: props.refreshBearerToken\n });\n\n const trappingZoneResults =\n traplogStore.trappingResults[traplogStore.selectedTrappingZoneId]?.results;\n const trappingZoneResultsTraps = trappingZoneResults\n ? trappingZoneResults[trappingZoneResults.length - 1]?.traps || []\n : [];\n\n // The data to be passed to the summary graph.\n // First filter out the hot trap statuses for all traps in the selected trapping zone.\n // Then, map the statuses with the status 'isHot' and 'trappingZone' properties, and\n // an added 'trap' property that holds the trap information and the 'catch' amount value\n // which is calculated using the latest trapping zone results for the given trap.\n const summaryGraphData = useMemo(\n () =>\n trappingZoneResultsTraps\n ? hotTrapStatuses\n ?.filter((hts) => {\n return hts.trapping_zone === traplogStore.selectedTrappingZoneId;\n })\n .map((hts) => {\n const trap = traplogStore.trappingZones\n .find((tz) => tz.id === hts.trapping_zone)\n ?.traps?.find((trap) => trap.id === hts.id);\n return {\n isHot: hts.isHot,\n trappingZone: hts.trapping_zone,\n trap: {\n ...trap,\n catch: trappingZoneResultsTraps[trap?.id]?.total\n }\n };\n })\n : [],\n [\n traplogStore.trappingZones,\n traplogStore.selectedTrappingZoneId,\n hotTrapStatuses,\n trappingZoneResultsTraps\n ]\n );\n\n if (\n isFetching ||\n traplogStore.loadingTrappingZones ||\n traplogStore.loadingTrappingResults\n ) {\n return (\n <Row className='mb-4 mt-4' style={{ height: '485px' }}>\n <Col className='d-flex flex-column align-items-center justify-content-center'>\n <Spinner variant='primary' animation='border' />\n </Col>\n </Row>\n );\n }\n\n if (error) {\n errorToast(\n 'Failed to load map. Could not get hot trap statuses.',\n 'map-load-failed'\n );\n props.setViewMapData(null);\n return null;\n }\n\n return (\n <Row className={`mb-4 mt-4 summary-sticky`}>\n <Col>\n <Row>\n <Col>\n <Button\n className='float-right mb-1'\n variant='lignt'\n onClick={() => props.setViewMapData(null)}\n >\n <FontAwesomeIcon icon={faXmark} color='black' size='lg' />\n </Button>\n </Col>\n </Row>\n <Row>\n <Col>\n <Row>\n <Col md={12} lg={6}>\n <Row>\n <Col style={{ height: '400px' }}>\n {traplogStore.trappingZones.length > 0 && (\n <HotTrapMap\n propertiesStore={props.propertiesStore}\n onClick={(id) => {\n traplogStore.setSelectedTrappingZoneId(id);\n }}\n hotTrapStatuses={hotTrapStatuses}\n />\n )}\n </Col>\n </Row>\n <Row className='mt-2'>\n <Col>\n <Row>\n <Col className='text-center'>\n <div className='float-right'>\n <FontAwesomeIcon\n icon={faTriangleRegular}\n color='blue'\n className='mr-1'\n />\n Trapping Sites\n </div>\n </Col>\n <Col className='text-center'>\n <div className='float-left'>\n <FontAwesomeIcon\n icon={faTriangleSolid}\n color='red'\n className='mr-1'\n />\n Hot Traps\n <OverlayTrigger\n trigger={['hover', 'focus']}\n key={'hot-trap-map-legend-info-trigger'}\n placement={'bottom'}\n overlay={\n <Popover id={`hot-trap-map-legend-info-popover`}>\n <Popover.Content>\n The hot trap map uses the season monitoring\n data to help identify traps that are catching\n more moths than the others on the property.\n These traps are marked <strong>Red</strong> as\n hot traps\n </Popover.Content>\n </Popover>\n }\n >\n <FontAwesomeIcon\n icon={faCircleQuestion}\n color='black'\n className='ml-1'\n />\n </OverlayTrigger>\n </div>\n </Col>\n </Row>\n </Col>\n </Row>\n </Col>\n <Col md={12} lg={6}>\n <SeasonOverviewReportPropertySummaryGraph\n trappingZonehotTrapStatuses={summaryGraphData}\n />\n </Col>\n </Row>\n </Col>\n </Row>\n </Col>\n </Row>\n );\n};\n\nSeasonOverviewReportPropertySummary.propTypes = {\n selectedDatabase: PropTypes.string,\n bearerToken: PropTypes.string,\n refreshBearerToken: PropTypes.func.isRequired,\n viewMapData: PropTypes.object,\n setViewMapData: PropTypes.func.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired\n};\n\nexport default observer(SeasonOverviewReportPropertySummary);\n","import { useEffect, useState } from 'react';\n\nexport const useFetch = ({ url, init, refreshBearerToken }) => {\n const [data, setData] = useState(null);\n const [isFetching, setIsFetching] = useState(false);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n let unMount = false;\n const fetchData = async () => {\n setIsFetching(true);\n try {\n const response = await fetch(url, init);\n if (response.status === 401) {\n refreshBearerToken();\n } else if (!response.ok) {\n throw new Error(response.statusText);\n }\n const json = await response.json();\n if (!unMount) {\n setIsFetching(false);\n setData(json);\n setError(null);\n }\n } catch (error) {\n if (!unMount) {\n setError(`${error} Could not Fetch Data `);\n console.error(error);\n setIsFetching(false);\n }\n }\n };\n fetchData();\n\n return () => {\n unMount = true;\n };\n }, [url]);\n\n return { data, isFetching, error };\n};\n","import {\n faExclamationCircle,\n faSort,\n faSortDown,\n faSortUp\n} from '@fortawesome/free-solid-svg-icons';\nimport { faMagnifyingGlass, faXmark } from '@fortawesome/pro-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Button,\n Col,\n FormControl,\n InputGroup,\n OverlayTrigger,\n Row,\n Table,\n Tooltip\n} from 'react-bootstrap';\nimport {\n useAsyncDebounce,\n useFilters,\n useGlobalFilter,\n useSortBy,\n useTable\n} from 'react-table';\nimport { useStores } from '../../stores/useStores';\n\nconst SeasonOverviewReportTable = ({\n data,\n selectedPropertyGroup,\n selectedInsectGroup,\n viewMapData,\n setViewMapData,\n propertyId\n}) => {\n const { traplogStore } = useStores();\n const buttonRefs = useRef([]);\n\n useEffect(() => {\n const isInSelected = selectedPropertyGroup.properties.find(\n (p) => p.id === propertyId\n );\n if (buttonRefs.current[propertyId] && isInSelected) {\n buttonRefs.current[propertyId].click();\n }\n }, []);\n\n const columns = useMemo(\n () => [\n {\n Header: 'RPIN',\n accessor: 'property.identifier',\n disableSortBy: true\n },\n {\n Header: 'Orchard',\n accessor: 'property.name',\n disableSortBy: true\n },\n {\n Header: 'Production Site',\n accessor: (row) =>\n row.trappingZone.name + (row.trappingZone.cmsm ? ' (CMSM)' : ''),\n disableSortBy: true\n },\n {\n Header: 'Mating Disruption',\n accessor: (row) =>\n row.trappingZone.mating_disruption_tie\n ? row.trappingZone.mating_disruption_tie.name\n : '',\n disableSortBy: true\n },\n {\n Header: 'Sprays',\n accessor: 'counts.sprays'\n },\n {\n id: 'actionable-thresholds',\n Header: (\n <Fragment>\n Actionable Thresholds{' '}\n <OverlayTrigger\n placement='top'\n overlay={\n <Tooltip>\n Trapping thresholds that required a spray application\n </Tooltip>\n }\n >\n <FontAwesomeIcon\n icon={faExclamationCircle}\n className='text-danger'\n />\n </OverlayTrigger>\n </Fragment>\n ),\n accessor: 'counts.thresholdMetRecords'\n },\n {\n id: 'covered-thresholds',\n Header: (\n <Fragment>\n Covered Thresholds{' '}\n <OverlayTrigger\n placement='top'\n overlay={\n <Tooltip>\n Trapping thresholds that were covered from a previous spray\n application\n </Tooltip>\n }\n >\n <FontAwesomeIcon\n icon={faExclamationCircle}\n className='text-info'\n />\n </OverlayTrigger>\n </Fragment>\n ),\n accessor: 'counts.coveredThresholdRecords'\n },\n {\n Header: 'Total Thresholds',\n accessor: (row) =>\n row.counts.thresholdMetRecords + row.counts.coveredThresholdRecords\n },\n {\n Header: 'Property Hot traps',\n accessor: (row) => (\n <Row className='m-0'>\n <Col className='p-0 text-center'>\n <Button\n ref={(el) => (buttonRefs.current[row.property.id] = el)}\n size='sm'\n variant={\n row.trappingZone.id === traplogStore.selectedTrappingZoneId &&\n viewMapData?.property.id // Ensure outline (unselected) when no map data.\n ? 'primary'\n : 'outline-primary'\n }\n disabled={\n traplogStore.loadingTrappingZones ||\n traplogStore.loadingTrappingResults\n }\n onClick={() => {\n const data = { ...row, selectedInsectGroup };\n // Select trapping zone id if not already selected.\n if (\n traplogStore.selectedTrappingZoneId !== data.trappingZone.id\n ) {\n traplogStore.setSelectedTrappingZoneId(\n data.trappingZone.id\n );\n }\n // Set map data.\n setViewMapData(data);\n // Reset trappingZones if different property selected.\n if (data?.property.id !== viewMapData?.property.id) {\n traplogStore.trappingZones = [];\n }\n }}\n >\n View Map\n </Button>\n </Col>\n </Row>\n ),\n disableSortBy: true\n }\n ],\n [\n viewMapData?.property.id,\n traplogStore.selectedTrappingZoneId,\n traplogStore.loadingTrappingZones,\n traplogStore.loadingTrappingResults\n ]\n );\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n state,\n setGlobalFilter\n } = useTable(\n {\n columns,\n data,\n autoResetGlobalFilter: false\n },\n useFilters,\n useGlobalFilter,\n useSortBy\n );\n\n const { globalFilter } = state;\n\n const stickyRef = useRef(null);\n const [isSticky, setSticky] = useState(false);\n\n useEffect(() => {\n // When no map data, disable sticky.\n if (!viewMapData?.property.id) setSticky(false);\n const handleScroll = () => {\n if (\n stickyRef.current &&\n viewMapData?.property.id &&\n window.innerWidth >= 992\n ) {\n const topValue = 520;\n setSticky(stickyRef.current.getBoundingClientRect().top <= topValue);\n }\n };\n const handleResize = () => {\n // Disable sticky when window width is less than 992 (bootstrap lg).\n const width = window.innerWidth;\n if (width < 992) {\n setSticky(false);\n }\n };\n\n window.addEventListener('scroll', handleScroll);\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n window.removeEventListener('scroll', handleResize);\n };\n }, [viewMapData?.property.id]);\n\n return (\n <Row className='bg-white'>\n <Col>\n <GlobalFilter\n filter={globalFilter}\n setFilter={setGlobalFilter}\n hasMapData={viewMapData}\n />\n <Table\n size='sm'\n bordered\n hover\n responsive={!isSticky}\n {...getTableProps()}\n >\n <thead\n ref={stickyRef}\n className={\n isSticky\n ? 'season-overview-table-sticky thead-light'\n : 'thead-light'\n }\n >\n {headerGroups.map((headerGroup) => (\n <tr {...headerGroup.getHeaderGroupProps()}>\n {headerGroup.headers.map((column) => (\n // Add the sorting props to control sorting. For this example\n // we can add them into the header props\n <th {...column.getHeaderProps(column.getSortByToggleProps())}>\n {column.render('Header')}\n {/* Add a sort direction indicator */}\n <span>\n {column.canSort ? (\n column.isSorted ? (\n column.isSortedDesc ? (\n <Fragment>\n {' '}\n <FontAwesomeIcon icon={faSortDown} />\n </Fragment>\n ) : (\n <Fragment>\n {' '}\n <FontAwesomeIcon icon={faSortUp} />\n </Fragment>\n )\n ) : (\n <Fragment>\n {' '}\n <FontAwesomeIcon icon={faSort} />\n </Fragment>\n )\n ) : null}\n </span>\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody {...getTableBodyProps()}>\n {rows.map((row) => {\n prepareRow(row);\n return (\n <tr {...row.getRowProps()}>\n {row.cells.map((cell) => {\n return (\n <td {...cell.getCellProps()}>{cell.render('Cell')}</td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </Table>\n </Col>\n </Row>\n );\n};\n\nconst GlobalFilter = React.memo((props) => {\n const [value, setValue] = useState(props.filter);\n const onChange = useAsyncDebounce((value) => {\n props.setFilter(value || undefined);\n }, 200);\n\n useEffect(() => {\n if (value && !props.filter) props.setFilter(value);\n }, [value, props.filter]);\n\n return (\n <Row\n className={props.hasMapData ? 'season-overview-table-filter-sticky' : ''}\n >\n <Col md={0} lg={6}>\n <InputGroup className='mb-1 float-left'>\n <InputGroup.Prepend>\n <InputGroup.Text>\n <FontAwesomeIcon icon={faMagnifyingGlass} />\n </InputGroup.Text>\n </InputGroup.Prepend>\n <FormControl\n placeholder='Search'\n aria-label='Search'\n value={value || ''}\n onChange={(e) => {\n setValue(e.target.value);\n onChange(e.target.value);\n }}\n />\n <InputGroup.Append>\n <Button\n variant='outline-secondary'\n onClick={() => {\n setValue('');\n onChange('');\n }}\n >\n <FontAwesomeIcon icon={faXmark} />\n </Button>\n </InputGroup.Append>\n </InputGroup>\n </Col>\n <Col md={6} lg={3} />\n <Col md={6} lg={3} />\n </Row>\n );\n});\n\nSeasonOverviewReportTable.propTypes = {\n tableData: PropTypes.array,\n selectedPropertyGroup: PropTypes.object,\n selectedInsectGroup: PropTypes.object,\n viewMapData: PropTypes.object,\n setViewMapData: PropTypes.func.isRequired,\n propertyId: PropTypes.number\n};\n\nexport default React.memo(observer(SeasonOverviewReportTable));\n","import Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\nimport { trappingZoneResultsCounts } from '../../helpers/TrappingUtils';\n\nconst SeasonalOverviewReportGraph = (props) => {\n const graphRef = React.useRef();\n const [width, setWidth] = useState({ width: null, modifier: 'initial' });\n\n useEffect(() => {\n const handleBeforePrint = () => {\n setWidth({ width: 940, modifier: 'beforeprint' });\n };\n window.addEventListener('beforeprint', handleBeforePrint);\n return () => {\n window.removeEventListener('beforeprint', handleBeforePrint);\n };\n }, []);\n\n useEffect(() => {\n const handleAfterPrint = () => {\n setWidth({\n width: graphRef.current.container.current.offsetWidth,\n modifier: 'afterprint'\n });\n };\n window.addEventListener('afterprint', handleAfterPrint);\n return () => {\n window.removeEventListener('afterprint', handleAfterPrint);\n };\n }, []);\n\n // We only want to set the graph width to null when the width\n // modified by 'afterprint'. This allows the graph to responsive after\n // the print events.\n useEffect(() => {\n if (width.modifier !== 'afterprint') return;\n setWidth({ width: null, modifier: 'postafterprint' });\n }, [width.modifier]);\n\n return (\n <HighchartsReact\n ref={graphRef}\n highcharts={Highcharts}\n options={{\n chart: {\n type: 'column',\n height: 340,\n width: width.width\n },\n credits: {\n enabled: false\n },\n title: {\n text: ''\n },\n xAxis: {\n categories: props.selectedProperties.map((property) => property.name)\n },\n yAxis: {\n title: {\n text: 'Thresholds'\n }\n },\n legend: {\n enabled: false\n },\n tooltip: {\n formatter: function () {\n return (\n '<b>' +\n this.series.userOptions.stack +\n '</b><br/>' +\n this.series.name +\n ': ' +\n this.y +\n '<br/>' +\n 'Total: ' +\n this.point.stackTotal\n );\n }\n },\n plotOptions: {\n column: {\n stacking: 'normal',\n groupPadding: 0,\n pointPadding: 0,\n centerInCategory: true\n }\n },\n series: props.selectedProperties\n .flatMap((property, propertyIndex) => {\n return property.trapping_zones.flatMap((trappingZone) => {\n const trappingZoneResults =\n props.trappingResults[trappingZone.id];\n\n if (trappingZoneResults) {\n const counts = trappingZoneResultsCounts(\n props.selectedInsectGroup,\n trappingZoneResults,\n trappingZone\n );\n\n const actionableThresholdsData = [];\n const coveredThresholdsData = [];\n for (let i = 0; i < propertyIndex; i++) {\n actionableThresholdsData.push(null);\n coveredThresholdsData.push(null);\n }\n\n actionableThresholdsData.push(counts.thresholdMetRecords);\n coveredThresholdsData.push(counts.coveredThresholdRecords);\n\n return [\n {\n name: `Actionable Thresholds`,\n data: actionableThresholdsData,\n stack: `${property.identifier} ${property.name} - ${trappingZone.name}`,\n color: '#DC3545'\n },\n {\n name: `Covered Thresholds`,\n data: coveredThresholdsData,\n stack: `${property.identifier} ${property.name} - ${trappingZone.name}`,\n color: '#17A2B8'\n }\n ];\n }\n });\n })\n .filter((x) => x !== undefined)\n }}\n />\n );\n};\n\nSeasonalOverviewReportGraph.propTypes = {\n selectedProperties: PropTypes.array.isRequired,\n selectedInsectGroup: PropTypes.object.isRequired,\n trappingResults: PropTypes.object.isRequired\n};\n\nexport default observer(SeasonalOverviewReportGraph);\n","import { PropertiesStore } from '@hortplus/properties-react';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { Col, Row, Spinner } from 'react-bootstrap';\nimport URI from 'urijs';\nimport { trappingZoneResultsCounts } from '../../helpers/TrappingUtils';\nimport { useStores } from '../../stores/useStores';\nimport SeasonOverviewReportForm from './SeasonOverviewReportForm';\nimport SeasonOverviewReportPropertySummary from './SeasonOverviewReportPropertySummary';\nimport SeasonOverviewReportTable from './SeasonOverviewReportTable';\nimport SeasonalOverviewReportGraph from './SeasonalOverviewReportGraph';\n\nconst SeasonOverviewReport = (props) => {\n const { traplogStore } = useStores();\n\n const [loading, setLoading] = useState(false);\n const [selectedProperties, setSelectedProperties] = useState([]);\n const [selectedPropertyGroup, setSelectedPropertyGroup] = useState();\n const [selectedInsectGroup, setSelectedInsectGroup] = useState();\n const [propertyGroups, setPropertyGroups] = useState([]);\n const [loadingTrappingResults, setLoadingTrappingResults] = useState(false);\n const [trappingResults, setTrappingResults] = useState({});\n const [viewMapData, setViewMapData] = useState(null);\n\n const showSpinner =\n loading || loadingTrappingResults || traplogStore.loadingInsectGroups;\n const showReport = selectedProperties.length > 0 && selectedInsectGroup;\n\n const tableData = useMemo(\n () =>\n selectedProperties\n .flatMap((property) =>\n property.trapping_zones.map((trappingZone) => {\n const trappingZoneResults = trappingResults[trappingZone.id];\n if (trappingZoneResults) {\n const counts = trappingZoneResultsCounts(\n selectedInsectGroup,\n trappingZoneResults,\n trappingZone\n );\n return {\n property,\n trappingZone,\n counts\n };\n }\n })\n )\n .filter((p) => p),\n [\n selectedProperties,\n trappingResults,\n selectedInsectGroup,\n trappingZoneResultsCounts\n ]\n );\n\n /**\n * Load trapping results\n */\n useEffect(() => {\n if (selectedInsectGroup && selectedProperties.length > 0) {\n setLoadingTrappingResults(true);\n\n const url = new URI(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-results`\n );\n\n url.addQuery('insect_group_id', selectedInsectGroup.id);\n\n selectedProperties.forEach((property) => {\n property.trapping_zones.forEach((trappingZone) => {\n url.addQuery('trapping_zones[]', trappingZone.id);\n });\n });\n\n fetch(url.toString(), {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setTrappingResults(data);\n traplogStore.trappingResults = data;\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n setLoadingTrappingResults(false);\n });\n } else {\n setTrappingResults({});\n traplogStore.trappingResults = {};\n }\n }, [\n props.selectedDatabase,\n props.bearerToken,\n selectedProperties,\n selectedInsectGroup\n ]);\n\n return (\n <Row>\n <Col>\n {!viewMapData && (\n <SeasonOverviewReportForm\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n propertiesStore={props.propertiesStore}\n setLoading={setLoading}\n setSelectedProperties={setSelectedProperties}\n propertyGroups={propertyGroups}\n setPropertyGroups={setPropertyGroups}\n selectedPropertyGroup={selectedPropertyGroup}\n setSelectedPropertyGroup={setSelectedPropertyGroup}\n selectedInsectGroup={selectedInsectGroup}\n setSelectedInsectGroup={setSelectedInsectGroup}\n propertyId={props.propertyId}\n />\n )}\n {viewMapData && !showSpinner ? (\n <SeasonOverviewReportPropertySummary\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n viewMapData={viewMapData}\n setViewMapData={setViewMapData}\n propertiesStore={props.propertiesStore}\n />\n ) : showSpinner ? (\n <Row>\n <Col className='text-center mt-4 mb-4'>\n <Spinner variant='primary' animation='border' />\n </Col>\n </Row>\n ) : showReport ? (\n <SeasonalOverviewReportGraph\n selectedProperties={selectedProperties}\n selectedInsectGroup={selectedInsectGroup}\n trappingResults={trappingResults}\n />\n ) : null}\n {!showSpinner && showReport && (\n <SeasonOverviewReportTable\n data={tableData}\n selectedPropertyGroup={selectedPropertyGroup}\n selectedInsectGroup={selectedInsectGroup}\n viewMapData={viewMapData}\n setViewMapData={setViewMapData}\n propertyId={props.propertyId}\n />\n )}\n </Col>\n </Row>\n );\n};\n\nSeasonOverviewReport.propTypes = {\n selectedDatabase: PropTypes.string,\n bearerToken: PropTypes.string.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired\n};\n\nexport default observer(SeasonOverviewReport);\n","import { PropertiesStore } from '@hortplus/properties-react';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment } from 'react';\nimport { ToastContainer } from '../../helpers/ToastUtils';\nimport SeasonOverviewReport from './SeasonOverviewReport';\n\nconst AdminSeasonOverviewReport = (props) => {\n return (\n <Fragment>\n <ToastContainer />\n <SeasonOverviewReport\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n propertiesStore={props.propertiesStore}\n propertyId={props.propertyId}\n />\n </Fragment>\n );\n};\n\nAdminSeasonOverviewReport.propTypes = {\n selectedDatabase: PropTypes.string,\n bearerToken: PropTypes.string.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n propertyId: PropTypes.number\n};\n\nexport default observer(AdminSeasonOverviewReport);\n","import {\n faExclamationCircle,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { PropertiesStore } from '@hortplus/properties-react';\nimport { useFormik } from 'formik';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useEffect, useState } from 'react';\nimport {\n Button,\n Col,\n Form,\n OverlayTrigger,\n Row,\n Spinner,\n Table,\n Tooltip\n} from 'react-bootstrap';\nimport Select from 'react-select';\nimport URI from 'urijs';\nimport * as yup from 'yup';\nimport { calcAccumulationThreshold } from '../../helpers/TrappingUtils';\nimport { useStores } from '../../stores/useStores';\n\nconst Option = (props) => {\n const [hovering, setHovering] = useState(false);\n\n return (\n <Row\n className={`border rounded p-3 m-3${\n props.selected ? ' border-primary' : ''\n }${hovering ? ' shadow' : ''}`}\n onMouseEnter={() => setHovering(true)}\n onMouseLeave={() => setHovering(false)}\n >\n {props.children}\n </Row>\n );\n};\n\nfunction TrappingMonitoringReport(props) {\n const { traplogStore } = useStores();\n\n const [propertyGroups, setPropertyGroups] = useState([]);\n const [loadingPropertyGroups, setLoadingPropertyGroups] = useState(false);\n\n const [selectedProperties, setSelectedProperties] = useState([]);\n\n // This state is used to only reload results when the form is submitted\n const [selectedInsectGroup, setSelectedInsectGroup] = useState();\n\n const [loadingTrappingResults, setLoadingTrappingResults] = useState(false);\n const [trappingResults, setTrappingResults] = useState({});\n\n /*\n * Load insect groups and property groups\n */\n useEffect(() => {\n formik.setFieldValue('propertyGroups', []);\n formik.handleSubmit();\n\n traplogStore.loadInsectGroups(props.bearerToken, props.refreshBearerToken);\n\n setLoadingPropertyGroups(true);\n fetch(`${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups`, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) traplogStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setPropertyGroups(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setPropertyGroups([]);\n })\n .finally(() => {\n setLoadingPropertyGroups(false);\n });\n }, [props.selectedDatabase, props.bearerToken]);\n\n /*\n * Load trapping results\n */\n useEffect(() => {\n if (selectedInsectGroup && selectedProperties.length > 0) {\n setLoadingTrappingResults(true);\n\n const url = new URI(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-results`\n );\n\n url.addQuery('insect_group_id', selectedInsectGroup.id);\n\n selectedProperties.forEach((property) => {\n property.trapping_zones.forEach((trappingZone) => {\n url.addQuery('trapping_zones[]', trappingZone.id);\n });\n });\n\n fetch(url.toString(), {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) traplogStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setTrappingResults(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n setLoadingTrappingResults(false);\n });\n }\n }, [\n props.selectedDatabase,\n props.bearerToken,\n selectedProperties,\n selectedInsectGroup\n ]);\n\n const formik = useFormik({\n initialValues: {\n selector: 'trapping-runs',\n propertyGroups: [],\n visitedDate: moment().format('YYYY-MM-D'),\n insectGroup: null\n },\n validationSchema: yup.object().shape({\n insectGroup: yup.object().required()\n }),\n onSubmit: async (values, actions) => {\n setSelectedProperties([]);\n setTrappingResults({});\n setSelectedInsectGroup(values.insectGroup);\n if (values.selector === 'trapping-runs') {\n const properties = [];\n await Promise.all(\n values.propertyGroups.map((propertyGroup) =>\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/property-groups/${propertyGroup.value}?with[]=properties.trappingZones.traps&with[]=properties.trappingZones.matingDisruptionTie`,\n {\n headers: {\n Authorization: `Bearer ${props.bearerToken}`,\n Accept: 'application/json',\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) traplogStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n data.properties.map((property) => {\n if (!properties.find((p) => p.id === property.id))\n properties.push(property);\n });\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n )\n );\n\n setSelectedProperties(properties);\n } else if (values.selector === 'visited-date' && values.insectGroup) {\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/properties/monitored-at?visited_date=${values.visitedDate}&insect_group_id=${values.insectGroup.id}`,\n {\n headers: {\n Authorization: `Bearer ${props.bearerToken}`,\n Accept: 'application/json',\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) traplogStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n setSelectedProperties(data);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n });\n }\n }\n });\n\n return (\n <Fragment>\n <Form onSubmit={formik.handleSubmit}>\n <Row className='justify-content-center'>\n <Col sm={10} md={8} lg={6}>\n <Option selected={formik.values.selector === 'trapping-runs'}>\n <Col>\n <Row>\n <Col>\n <Form.Check\n type='radio'\n name='selector'\n value='trapping-runs'\n id='trapping-runs'\n label='Trapping Runs'\n onChange={formik.handleChange}\n checked={formik.values.selector === 'trapping-runs'}\n custom\n />\n </Col>\n </Row>\n {formik.values.selector === 'trapping-runs' ? (\n <Row className='mt-2'>\n <Col>\n <Select\n options={[\n {\n label: 'Trapping Runs',\n options: propertyGroups\n .filter(\n (propertyGroup) =>\n !propertyGroup.deleted_at &&\n propertyGroup.group_type === 'trapping_run'\n )\n .map((propertyGroup) => {\n return {\n value: propertyGroup.id,\n label: propertyGroup.name\n };\n })\n },\n {\n label: 'Property Groups',\n options: propertyGroups\n .filter(\n (propertyGroup) =>\n !propertyGroup.deleted_at &&\n propertyGroup.group_type === 'manual'\n )\n .map((propertyGroup) => {\n return {\n value: propertyGroup.id,\n label: propertyGroup.name\n };\n })\n }\n ]}\n isLoading={loadingPropertyGroups}\n onChange={(options) => {\n formik.setFieldValue(\n 'propertyGroups',\n options ? options.map((option) => option) : []\n );\n }}\n value={formik.values.propertyGroups}\n isMulti\n />\n </Col>\n </Row>\n ) : null}\n </Col>\n </Option>\n <Option selected={formik.values.selector === 'visited-date'}>\n <Col>\n <Row>\n <Col>\n <Form.Check\n type='radio'\n name='selector'\n value='visited-date'\n id='visited-date'\n label='Visited Date'\n onChange={formik.handleChange}\n checked={formik.values.selector === 'visited-date'}\n custom\n style={{\n zIndex: 0\n }}\n />\n </Col>\n </Row>\n {formik.values.selector === 'visited-date' ? (\n <Row className='mt-2'>\n <Col>\n <Form.Control\n type='date'\n name='visitedDate'\n if='visitedDate'\n value={formik.values.visitedDate}\n onChange={formik.handleChange}\n />\n </Col>\n </Row>\n ) : null}\n </Col>\n </Option>\n <div className='mx-3'>\n <Select\n className='mt-3'\n placeholder='Select an insect'\n isLoading={traplogStore.loadingInsectGroups}\n options={traplogStore.insectGroups.map((insectGroup) => {\n return {\n value: insectGroup.id,\n label: insectGroup.name,\n custom: insectGroup\n };\n })}\n onChange={(option) => {\n formik.setFieldValue('insectGroup', option.custom);\n }}\n />\n </div>\n <Row className='mt-3'>\n <Col className='text-center'>\n <Button variant='outline-primary' type='submit'>\n Submit\n </Button>\n </Col>\n </Row>\n </Col>\n </Row>\n </Form>\n\n {!selectedInsectGroup ||\n selectedProperties.length < 1 ? null : loadingPropertyGroups ||\n loadingTrappingResults ||\n traplogStore.loadingInsectGroups ? (\n <Spinner variant='primary' animation='border' />\n ) : (\n selectedProperties.map((property) => (\n <Row key={property.id} className='my-3'>\n <Col>\n <h5>\n [{property.identifier}] {property.name}\n </h5>\n <Table size='sm' bordered hover>\n <thead>\n <tr className='thead-light'>\n <th>Production Site</th>\n <th>Last Monitored</th>\n <th>Last Threshold</th>\n <th>Last Spray</th>\n <th>Threshold Met?</th>\n </tr>\n </thead>\n <tbody>\n {property.trapping_zones.map((trappingZone) => {\n const trappingZoneResults =\n trappingResults[trappingZone.id];\n\n let lastMonitored = null;\n let latestSpray = null;\n let latestThreshold = null;\n\n // Loop starting from the latest results\n if (trappingZoneResults) {\n for (\n let i = trappingZoneResults.results.length - 1;\n i >= 0;\n i--\n ) {\n const result = trappingZoneResults.results[i];\n\n if (!lastMonitored) {\n if (result.trap_monitoring_records.length > 0)\n lastMonitored = result.date;\n }\n\n // Find the latest sprayed date\n if (!latestSpray) {\n if (result.trapping_zone_sprays.length > 0)\n latestSpray = result.date;\n }\n\n // Find the latest threshold date\n if (!latestThreshold && !result.sprayed) {\n const trapIds = Object.keys(result.traps);\n const amounts = [];\n\n for (let j = 0; j < trapIds.length; j++) {\n const trap = result.traps[trapIds[j]];\n\n if (\n trap.amount >=\n selectedInsectGroup.per_trap_catch_threshold\n ) {\n latestThreshold = result.date;\n break;\n } else if (\n trap.amount !== null &&\n trap.accumulation >=\n calcAccumulationThreshold(\n selectedInsectGroup,\n result.date\n )\n ) {\n latestThreshold = result.date;\n break;\n } else {\n amounts.push(trap.amount);\n }\n }\n\n if (!latestThreshold) {\n if (\n amounts.length > 0 &&\n amounts.reduce(\n (accumulator, currentValue) =>\n accumulator + currentValue\n ) /\n amounts.length >=\n selectedInsectGroup.average_threshold\n )\n latestThreshold = result.date;\n }\n }\n\n // Break the loop if both the latest spray and threshold have been found\n if (lastMonitored && latestSpray && latestThreshold)\n break;\n }\n }\n\n const lastMonitoredMoment = lastMonitored\n ? moment(lastMonitored)\n : null;\n const latestSprayMoment = latestSpray\n ? moment(latestSpray)\n : null;\n const latestThresholdMoment = latestThreshold\n ? moment(latestThreshold)\n : null;\n\n return (\n <tr key={trappingZone.id}>\n <td>\n {trappingZone.name}\n {trappingZone.cmsm ? ' (CMSM)' : ''}\n {trappingZone.mating_disruption_tie ? (\n <OverlayTrigger\n placement='top'\n overlay={\n <Tooltip>\n {trappingZone.mating_disruption_tie.name}\n </Tooltip>\n }\n >\n <FontAwesomeIcon\n icon={faInfoCircle}\n className='ml-2'\n size='xs'\n />\n </OverlayTrigger>\n ) : null}\n </td>\n <td>\n {lastMonitoredMoment\n ? lastMonitoredMoment.format(\n 'DD/MM/YYYY [(Week] w[)]'\n )\n : '-'}\n </td>\n <td>\n {latestThresholdMoment\n ? latestThresholdMoment.format(\n 'DD/MM/YYYY [(Week] w[)]'\n )\n : '-'}\n </td>\n <td>\n {latestSprayMoment\n ? latestSprayMoment.format(\n 'DD/MM/YYYY [(Week] w[)]'\n )\n : '-'}\n </td>\n <td>\n {trappingZoneResults &&\n (trappingZoneResults.overview.status ===\n 'pre_trap_catch_threshold_met' ||\n trappingZoneResults.overview.status ===\n 'accumulation_threshold_met' ||\n trappingZoneResults.overview.status ===\n 'average_threshold_met') ? (\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>A threshold is met</Tooltip>}\n >\n <FontAwesomeIcon\n className='text-danger'\n icon={faExclamationCircle}\n />\n </OverlayTrigger>\n ) : latestThresholdMoment ? (\n (latestSprayMoment &&\n latestSprayMoment.isBefore(\n latestThresholdMoment\n )) ||\n !latestSprayMoment ? (\n <OverlayTrigger\n placement='top'\n overlay={\n <Tooltip>\n A previous threshold was not actioned\n </Tooltip>\n }\n >\n <FontAwesomeIcon\n className='text-danger'\n icon={faExclamationCircle}\n />\n </OverlayTrigger>\n ) : null\n ) : null}\n </td>\n </tr>\n );\n })}\n </tbody>\n </Table>\n </Col>\n </Row>\n ))\n )}\n </Fragment>\n );\n}\n\nTrappingMonitoringReport.propTypes = {\n selectedDatabase: PropTypes.string.isRequired,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired\n};\n\nexport default observer(TrappingMonitoringReport);\n","import React from 'react';\nimport { Form, InputGroup } from 'react-bootstrap';\nimport Select from 'react-select';\n\nfunction TrappingRunForm({\n handleSubmit,\n handleChange,\n handleBlur,\n values,\n errors,\n setFieldValue,\n isSubmitting,\n setFieldTouched,\n propertiesSelector,\n formOptions\n}) {\n const display = propertiesSelector.display;\n const properties = propertiesSelector.properties;\n\n return (\n <Form noValidate onSubmit={handleSubmit}>\n <Form.Group controlId='name'>\n <Form.Label>\n {formOptions?.name?.label ? formOptions?.name?.label : 'Name'}\n </Form.Label>\n <Form.Control\n type='text'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.name}\n placeholder={\n formOptions?.name?.placeholder ? formOptions?.name?.placeholder : 'Name'\n }\n isInvalid={errors.name}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.name}\n </Form.Control.Feedback>\n </Form.Group>\n\n <Form.Group>\n <Form.Label>\n {formOptions?.description?.label\n ? formOptions?.description?.label\n : 'Description'}\n </Form.Label>\n <Form.Control\n id='description'\n as='textarea'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.description}\n placeholder={\n formOptions?.description?.placeholder\n ? formOptions?.description?.placeholder\n : 'Description'\n }\n />\n </Form.Group>\n\n <Form.Group controlId='passcode'>\n <Form.Label>\n {formOptions?.passcode?.label\n ? formOptions?.passcode?.label\n : 'Passcode'}\n </Form.Label>\n <Form.Control\n type='text'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.passcode}\n placeholder='Passcode'\n isInvalid={errors.passcode}\n readOnly={formOptions?.passcode?.readOnly}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.passcode}\n </Form.Control.Feedback>\n </Form.Group>\n {display && (\n <Form.Group controlId='properties'>\n <Form.Label>\n {formOptions?.selectProperties?.label\n ? formOptions?.selectProperties?.label\n : 'Select Properties'}\n </Form.Label>\n <InputGroup>\n <Select\n value={values.properties}\n onChange={(options) => {\n setFieldValue('properties', options || []);\n }}\n options={properties.map((property) => {\n return {\n value: property.id,\n label: property.name\n };\n })}\n styles={{\n container: (styles) => ({\n ...styles,\n flex: '1 1 auto'\n })\n }}\n closeMenuOnSelect={false}\n isMulti\n />\n </InputGroup>\n </Form.Group>\n )}\n </Form>\n );\n}\n\nexport default TrappingRunForm;\n","import { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment } from 'react';\nimport { Button, Modal } from 'react-bootstrap';\nimport LoadingOverlay from '../../LoadingOverlay';\nimport { useStores } from '../../stores/useStores';\nimport { randomDigits } from '../../utils';\nimport TrappingRunForm from './TrappingRunForm';\n\nfunction AddTrappingRunModal(props) {\n const { authenticationStore } = useStores();\n const { addTrappingRun, ...rest } = props;\n\n const autoGeneratePasscode = props.customOptions?.autoGeneratePasscode;\n const propertiesSelector = props.customOptions?.propertiesSelector;\n const formOptions = props.customOptions?.form;\n const header = props.customOptions?.header;\n\n const generatePasscode = () => {\n if (!autoGeneratePasscode) return '';\n const length = 9;\n return randomDigits(length).toString();\n };\n\n return (\n <Modal backdrop='static' {...rest}>\n <Modal.Header closeButton>\n <h4>{header ? header : \"Add Trapping Run\"}</h4>\n </Modal.Header>\n <Modal.Body>\n <Formik\n initialValues={{\n name: '',\n description: '',\n passcode: generatePasscode(),\n properties: []\n }}\n validate={(values, props) => {\n const errors = {};\n\n if (!values.name) errors.name = 'Required';\n if (!values.passcode) errors.passcode = 'Required';\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n fetch(`${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-runs`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${authenticationStore.bearerToken}`,\n SeasonalDatabase: authenticationStore.selectedDatabase\n },\n body: JSON.stringify({\n name: values.name,\n description: values.description,\n passcode: values.passcode\n })\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401)\n authenticationStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n addTrappingRun(data);\n // Attach properties.\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups/${data.property_group_id}/attach-properties?with[]=properties&with[]=users.propertyRole&append[]=userProperty`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${authenticationStore.bearerToken}`,\n SeasonalDatabase: authenticationStore.selectedDatabase\n },\n body: JSON.stringify({\n properties: values.properties.map(\n (property) => property.value\n )\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n })\n .finally(() => {\n rest.onHide();\n });\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <Fragment>\n <TrappingRunForm\n {...props}\n propertiesSelector={propertiesSelector}\n formOptions={formOptions}\n />\n <Button\n varient='primary'\n type='button'\n onClick={props.handleSubmit}\n >\n Submit\n </Button>\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </Fragment>\n )}\n </Formik>\n </Modal.Body>\n </Modal>\n );\n}\n\nAddTrappingRunModal.propTypes = {\n show: PropTypes.bool,\n onHide: PropTypes.func.isRequired,\n addTrappingRun: PropTypes.func.isRequired,\n customOptions: PropTypes.object,\n};\n\nexport default observer(AddTrappingRunModal);\n","import { faCheck, faEdit, faTimes } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Formik } from 'formik';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport { Button, Card, Form } from 'react-bootstrap';\nimport LoadingOverlay from '../../LoadingOverlay';\nimport { useStores } from '../../stores/useStores';\n\nfunction Passcode(props) {\n const { authenticationStore } = useStores();\n const [editing, setEditing] = useState(false);\n\n const customOptions = props?.customOptions;\n const customFormOptions = customOptions?.form;\n\n return editing ? (\n <Formik\n initialValues={{\n passcode: props.trappingRun.passcode\n }}\n validate={(values, props) => {\n const errors = {};\n\n if (!values.passcode) errors.passcode = 'Required';\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-runs/${props.trappingRun.id}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${authenticationStore.bearerToken}`,\n SeasonalDatabase: authenticationStore.selectedDatabase\n },\n body: JSON.stringify({\n passcode: values.passcode\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401)\n authenticationStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n const newTrappingRun = { ...data };\n newTrappingRun.property_group = props.trappingRun.property_group;\n props.update(newTrappingRun);\n setEditing(false);\n actions.setSubmitting(false);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n actions.setSubmitting(false);\n });\n }}\n >\n {({\n handleSubmit,\n handleChange,\n handleBlur,\n values,\n errors,\n setFieldValue,\n isSubmitting,\n setFieldTouched\n }) => (\n <Card>\n <Card.Header className='d-flex justify-content-between align-items-center'>\n Passcode\n <div>\n <Button\n variant='link'\n className='text-success'\n type='button'\n onClick={handleSubmit}\n >\n <FontAwesomeIcon icon={faCheck} />\n </Button>\n <Button\n variant='link'\n className='text-danger'\n type='button'\n onClick={() => setEditing(false)}\n >\n <FontAwesomeIcon icon={faTimes} />\n </Button>\n </div>\n </Card.Header>\n <Card.Body>\n <Form noValidate onSubmit={handleSubmit}>\n <Form.Group controlId='passcode'>\n <Form.Control\n type='text'\n onChange={handleChange}\n onBlur={handleBlur}\n value={values.passcode}\n placeholder='Passcode'\n isInvalid={errors.passcode}\n />\n <Form.Control.Feedback type='invalid'>\n {errors.passcode}\n </Form.Control.Feedback>\n </Form.Group>\n </Form>\n {isSubmitting ? <LoadingOverlay /> : null}\n </Card.Body>\n </Card>\n )}\n </Formik>\n ) : (\n <Card>\n <Card.Header className='d-flex justify-content-between align-items-center'>\n Passcode\n {!customOptions || customFormOptions?.editable ? ( // Display by default (no custom options).\n <Button variant='link' type='button' onClick={() => setEditing(true)}>\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n ): null}\n </Card.Header>\n <Card.Body>{props.trappingRun.passcode}</Card.Body>\n </Card>\n );\n}\n\nPasscode.propTypes = {\n trappingRun: PropTypes.object.isRequired,\n update: PropTypes.func.isRequired\n};\n\nexport default observer(Passcode);\n","import {\n PropertyGroupDetails,\n PropertyGroupPermissions,\n PropertyGroupProperties\n} from '@hortplus/properties-react';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useEffect, useState } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport LoadingOverlay from '../../LoadingOverlay';\nimport ConfirmationModal from '../../helpers/ConfirmationModal';\nimport { useFirstRender } from '../../hooks/FirstRenderHook';\nimport { useStores } from '../../stores/useStores';\nimport Passcode from './Passcode';\n\nfunction TrappingRun(props) {\n const { authenticationStore } = useStores();\n const [loadingSelectedPropertyGroup, setLoadingSelectedPropertyGroup] =\n useState(false);\n const firstRender = useFirstRender();\n // Custom options.\n const customOptions = props?.customOptions;\n const customDetailOptions = customOptions?.details;\n const customPasscodeOptions = customOptions?.passcode;\n const customHardDeleteOption = customOptions?.disableHardDelete;\n\n const selectedTrappingRun = props.selectedTrappingRun;\n const propertyGroup = selectedTrappingRun.property_group;\n\n useEffect(() => {\n if (!firstRender) props.history.replace('/trapping/runs');\n }, [props.selectedDatabase]);\n\n useEffect(() => {\n if (propertyGroup && (!propertyGroup.properties || !propertyGroup.users)) {\n setLoadingSelectedPropertyGroup(true);\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups/${propertyGroup.id}?append[]=userProperty&with[]=properties&with[]=users.propertyRole&withTrashed=true`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${authenticationStore.bearerToken}`,\n SeasonalDatabase: authenticationStore.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n updatePropertyGroup(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n })\n .finally(() => {\n setLoadingSelectedPropertyGroup(false);\n });\n }\n }, [props.bearerToken, props.selectedDatabase, propertyGroup]);\n\n const updatePropertyGroup = (propertyGroup, isDelete) => {\n const newTrappingRun = { ...selectedTrappingRun };\n newTrappingRun.property_group = propertyGroup;\n props.update(newTrappingRun, isDelete);\n };\n\n /**\n * Restore the deleted property using the properties API and update the property object in the\n * parent component using the update() method supplied in the props.\n */\n const restore = (trappingRun) => {\n return fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups/${trappingRun.property_group_id}/restore?with[]=properties&with[]=users.propertyRole&append[]=userProperty`,\n {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + authenticationStore.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n trappingRun.property_group = data;\n props.update(trappingRun);\n }\n });\n };\n\n const permanentlyDelete = (trappingRun) => {\n return fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-runs/${trappingRun.id}`,\n {\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + authenticationStore.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n ).then((res) => {\n if (res.ok) {\n // Remove property group from state.\n props.update(trappingRun, true);\n } else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n });\n };\n\n return loadingSelectedPropertyGroup ? (\n <LoadingOverlay />\n ) : !propertyGroup.properties || !propertyGroup.users ? null : (\n <Fragment>\n <Row>\n <Col xs={2}>\n <Button variant='outline-secondary' onClick={props.close}>\n Back\n </Button>\n </Col>\n {!customHardDeleteOption &&\n propertyGroup.userProperty.can_edit &&\n propertyGroup.deleted_at ? (\n <>\n <Col xs={10} md={4}>\n <ConfirmationModal\n title={'Confirm Delete'}\n bodyText={\n 'Are you sure you want to permanently delete this trapping run?'\n }\n showButton={{\n children: 'Permanently Delete',\n props: {\n className: 'float-right ml-1',\n variant: 'outline-danger'\n }\n }}\n confirmButton={{ props: { variant: 'danger' } }}\n confirmAction={() => {\n return permanentlyDelete(selectedTrappingRun);\n }}\n />\n <ConfirmationModal\n title={'Confirm Restore'}\n bodyText={'Are you sure you want to restore this trapping run?'}\n showButton={{\n children: 'Restore',\n props: {\n className: 'float-right',\n variant: 'outline-success'\n }\n }}\n confirmButton={{ props: { variant: 'success' } }}\n confirmAction={() => {\n return restore(selectedTrappingRun);\n }}\n />\n </Col>\n </>\n ) : (\n <></>\n )}\n <Col xs={0} md={6}></Col>\n </Row>\n <Row className='mt-2'>\n <Col>\n <Row>\n <Col>\n <PropertyGroupDetails\n bearerToken={authenticationStore.bearerToken}\n selectedDatabase={authenticationStore.selectedDatabase}\n refreshBearerToken={authenticationStore.refreshBearerToken}\n propertyGroup={propertyGroup}\n update={updatePropertyGroup}\n customOptions={customDetailOptions}\n />\n </Col>\n </Row>\n {props.permissionsCard && (\n <Row className='mt-4'>\n <Col>\n <PropertyGroupPermissions\n bearerToken={authenticationStore.bearerToken}\n selectedDatabase={authenticationStore.selectedDatabase}\n refreshBearerToken={authenticationStore.refreshBearerToken}\n propertyGroup={propertyGroup}\n update={updatePropertyGroup}\n users={props.users}\n propertyRoles={props.propertyRoles}\n />\n </Col>\n </Row>\n )}\n <Row className='mt-4'>\n <Col>\n <Passcode\n trappingRun={selectedTrappingRun}\n update={props.update}\n customOptions={customPasscodeOptions}\n />\n </Col>\n </Row>\n </Col>\n <Col>\n <PropertyGroupProperties\n bearerToken={authenticationStore.bearerToken}\n selectedDatabase={authenticationStore.selectedDatabase}\n refreshBearerToken={authenticationStore.refreshBearerToken}\n propertyGroup={propertyGroup}\n update={updatePropertyGroup}\n />\n </Col>\n </Row>\n </Fragment>\n );\n}\n\nTrappingRun.propTypes = {\n permissionsCard: PropTypes.bool,\n selectedDatabase: PropTypes.string.isRequired,\n selectedTrappingRun: PropTypes.object.isRequired,\n update: PropTypes.func.isRequired,\n close: PropTypes.func.isRequired,\n propertyRoles: PropTypes.array.isRequired,\n users: PropTypes.array.isRequired\n};\n\nexport default observer(TrappingRun);\n","import { useEffect, useRef } from 'react';\n\n/**\n * Custom hook to only update AFTER first render\n * @returns boolean\n */\nexport function useFirstRender() {\n const firstRender = useRef(true);\n\n useEffect(() => {\n firstRender.current = false;\n }, []);\n\n return firstRender.current;\n}\n","import React, { useState } from 'react';\nimport { useAsyncDebounce } from 'react-table';\nimport { Form } from 'react-bootstrap';\n\n// Define a default UI for filtering\nexport default function GlobalFilter({\n preGlobalFilteredRows,\n globalFilter,\n setGlobalFilter,\n style\n}) {\n const count = preGlobalFilteredRows.filter((row) => {\n // TODO: Filter on deleted\n return true;\n }).length;\n const [value, setValue] = useState(globalFilter);\n const onChange = useAsyncDebounce((value) => {\n setGlobalFilter(value || undefined);\n }, 200);\n\n return (\n <Form.Control\n type='text'\n value={value || ''}\n onChange={(e) => {\n setValue(e.target.value);\n onChange(e.target.value);\n }}\n placeholder={`Search ${count} records...`}\n style={style}\n />\n );\n}\n","import {\n faExternalLinkAlt,\n faEye,\n faSort,\n faSortDown,\n faSortUp,\n faTrash\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useMemo, useState } from 'react';\nimport { Button, Table } from 'react-bootstrap';\nimport { useGlobalFilter, useSortBy, useTable } from 'react-table';\nimport ConfirmationModal from '../../helpers/ConfirmationModal';\nimport GlobalTableFilter from '../../helpers/GlobalTableFilter';\n\nconst TrappingRunsTable = (props) => {\n const [showDeletedTrappingRuns, setShowDeletedTrappingRuns] = useState(false);\n\n const hideSearch = props.customOptions?.hideSearch;\n const hideShowDeleted = props.customOptions?.hideShowDeleted;\n const hideActions = props.customOptions?.hideActions;\n const headerNames = props.customOptions?.headerNames;\n\n const data = useMemo(\n () =>\n props.trappingRuns.filter(\n (trappingRun) =>\n showDeletedTrappingRuns || !trappingRun.property_group.deleted_at\n ),\n [props.trappingRuns, showDeletedTrappingRuns]\n );\n\n const columns = useMemo(\n () => [\n {\n Header: headerNames?.name ? headerNames?.name : 'Name',\n accessor: 'property_group.name'\n },\n {\n Header: headerNames?.description\n ? headerNames?.description\n : 'Description',\n accessor: 'property_group.description'\n },\n {\n Header: headerNames?.passcode ? headerNames?.passcode : 'Passcode',\n accessor: 'passcode'\n },\n {\n id: 'actions',\n sortable: false,\n filterable: false,\n Header: (tableInstance) => {\n if (hideShowDeleted) return null;\n return (\n <div className='text-right'>\n <Button\n type='button'\n variant='link'\n className={\n tableInstance.state.showDeletedTrappingRuns\n ? 'text-primary'\n : 'text-dark'\n }\n onClick={() => {\n setShowDeletedTrappingRuns(\n !tableInstance.state.showDeletedTrappingRuns\n );\n }}\n >\n <FontAwesomeIcon icon={faEye} />\n </Button>\n </div>\n );\n },\n Cell: ({ row }) => {\n return (\n <div className='text-right'>\n {/* Select property group */}\n <Button\n type='button'\n variant='link'\n className='text-primary'\n onClick={() =>\n props.changeSelectedTrappingRunId(row.original.id)\n }\n >\n <FontAwesomeIcon icon={faExternalLinkAlt} />\n </Button>\n\n {/* Delete property group */}\n {row.original.property_group.deleted_at === null &&\n row.original.property_group.userProperty.can_edit ? (\n <ConfirmationModal\n title='Confirm Delete'\n bodyText='Are you sure you want to delete this trapping run?'\n confirmAction={() => {\n return props.deleteTrappingRun(row.original);\n }}\n showButton={{\n children: <FontAwesomeIcon icon={faTrash} />,\n props: {\n className: 'text-danger',\n variant: 'link'\n }\n }}\n confirmButton={{\n props: { variant: 'danger' }\n }}\n />\n ) : null}\n </div>\n );\n }\n }\n ],\n [props.deleteTrappingRun]\n );\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n state,\n preGlobalFilteredRows,\n setGlobalFilter\n } = useTable(\n {\n columns,\n data,\n useControlledState: (state) => {\n return React.useMemo(\n () => ({\n ...state,\n showDeletedTrappingRuns: showDeletedTrappingRuns\n }),\n [state, showDeletedTrappingRuns]\n );\n }\n },\n useGlobalFilter,\n useSortBy\n );\n\n return (\n <Fragment>\n {!hideSearch && (\n <GlobalTableFilter\n preGlobalFilteredRows={preGlobalFilteredRows}\n globalFilter={state.globalFilter}\n setGlobalFilter={setGlobalFilter}\n style={{\n marginBottom: '0.5rem',\n maxWidth: 500\n }}\n />\n )}\n <Table responsive {...getTableProps()}>\n <thead>\n {headerGroups.map((headerGroup) => (\n <tr {...headerGroup.getHeaderGroupProps()}>\n {headerGroup.headers.map((column) => {\n if (hideActions && column?.id === 'actions') return null;\n return (\n <th {...column.getHeaderProps(column.getSortByToggleProps())}>\n {column.render('Header')}\n {column.canSort ? (\n <span className='px-2'>\n {column.isSorted ? (\n column.isSortedDesc ? (\n <FontAwesomeIcon icon={faSortDown} />\n ) : (\n <FontAwesomeIcon icon={faSortUp} />\n )\n ) : (\n <FontAwesomeIcon icon={faSort} />\n )}\n </span>\n ) : null}\n </th>\n );\n })}\n </tr>\n ))}\n </thead>\n <tbody {...getTableBodyProps()}>\n {rows.map((row) => {\n prepareRow(row);\n return (\n <tr {...row.getRowProps()}>\n {row.cells.map((cell) => {\n if (hideActions && cell.column?.id === 'actions') return null;\n return (\n <td {...cell.getCellProps()}>{cell.render('Cell')}</td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </Table>\n </Fragment>\n );\n};\n\nTrappingRunsTable.propTypes = {\n trappingRuns: PropTypes.array.isRequired,\n changeSelectedTrappingRunId: PropTypes.func.isRequired,\n deleteTrappingRun: PropTypes.func.isRequired\n};\n\nexport default observer(TrappingRunsTable);\n","import { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useEffect, useMemo, useState } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport LoadingOverlay from '../../LoadingOverlay';\nimport { useStores } from '../../stores/useStores';\nimport AddTrappingRunModal from './AddTrappingRunModal';\nimport TrappingRun from './TrappingRun';\nimport TrappingRunsTable from './TrappingRunsTable';\n\nfunction TrappingRuns(props) {\n const { authenticationStore } = useStores();\n\n const [showAddTrappingRunModal, setShowAddTrappingRunModal] = useState(false);\n const [trappingRuns, setTrappingRuns] = useState([]);\n const [loadingTrappingRuns, setLoadingTrappingRuns] = useState(false);\n const [loadingPropertyRoles, setLoadingPropertyRoles] = useState(false);\n const [propertyRoles, setPropertyRoles] = useState([]);\n const [loadingUsers, setLoadingUsers] = useState(false);\n const [users, setUsers] = useState([]);\n\n const customAddTrappingRunOptions = props.customOptions?.addTrappingRun;\n const customEditTrappingRunOptions = props.customOptions?.editTrappingRun;\n const customTableOptions = props.customOptions?.table;\n\n /**\n * Load the following when the bearer token is updated:\n * - property roles\n * - users (Used by propery group permissions)\n */\n useEffect(() => {\n // Update authentication store\n authenticationStore.setSelectedDatabase(props.selectedDatabase);\n authenticationStore.setBearerToken(props.bearerToken);\n authenticationStore.setRefreshBearerToken(props.refreshBearerToken);\n\n if (!props.selectedDatabase) return;\n\n // Load trapping runs\n setLoadingTrappingRuns(true);\n fetch(`${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-runs`, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${authenticationStore.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) authenticationStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setTrappingRuns(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setTrappingRuns([]);\n })\n .finally(() => {\n setLoadingTrappingRuns(false);\n });\n\n // Property roles\n setLoadingPropertyRoles(true);\n fetch(`${process.env.REACT_APP_PROPERTIES_API_URL}api/property-roles`, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + authenticationStore.bearerToken,\n SeasonalDatabase: props.selectedDatabase\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) authenticationStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setPropertyRoles(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setPropertyRoles([]);\n })\n .finally(() => {\n setLoadingPropertyRoles(false);\n });\n\n // Users\n setLoadingUsers(true);\n fetch(`${process.env.REACT_APP_AUTH_API_URL}api/users`, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + authenticationStore.bearerToken,\n service: props.authService\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) authenticationStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setUsers(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setUsers([]);\n })\n .finally(() => {\n setLoadingUsers(false);\n });\n }, [props.selectedDatabase, props.bearerToken, props.refreshBearerToken]);\n\n /**\n * Returns the selected trapping run model from the list of trapping runs.\n *\n * @returns {object|null}\n */\n const selectedTrappingRun = useMemo(\n () =>\n trappingRuns.find(\n (trappingRun) => trappingRun.id == props.selectedTrappingRunId\n ),\n [trappingRuns, props.selectedTrappingRunId]\n );\n\n /**\n * If the supplied trapping run exists in the list of trapping runs\n * (found using id) then update it.\n *\n * @param {object} trappingRun\n */\n const updateTrappingRun = (trappingRun, isDelete) => {\n const i = trappingRuns.findIndex((t) => t.id === trappingRun.id);\n if (i === -1) return;\n if (isDelete) {\n const newTrappingRuns = [...trappingRuns];\n newTrappingRuns.splice(i, 1);\n setTrappingRuns(newTrappingRuns);\n } else {\n const newTrappingRuns = [...trappingRuns];\n newTrappingRuns[i] = trappingRun;\n setTrappingRuns(newTrappingRuns);\n }\n };\n\n /**\n * If the supplied trapping run does not exists in the list of trapping\n * runs (found using id) then add it in.\n *\n * @param {object} trappingRun\n */\n const addTrappingRun = (trappingRun) => {\n const i = trappingRuns.findIndex((t) => t.id === trappingRun.id);\n if (i < 0) {\n const newTrappingRuns = [...trappingRuns];\n newTrappingRuns.push(trappingRun);\n setTrappingRuns(newTrappingRuns);\n }\n };\n\n /**\n * Sends an http request to the properties API to delete the property\n * group and removes it from the property groups state array.\n *\n * @param {object} propertyGroupId\n */\n const deleteTrappingRun = (trappingRun) => {\n return fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups/${trappingRun.property_group.id}?with[]=properties&with[]=users.propertyRole&append[]=userProperty`,\n {\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n Authorization: 'Bearer ' + authenticationStore.bearerToken,\n SeasonalDatabase: authenticationStore.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) authenticationStore.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n /*\n * Property groups use soft deletion, so update the property group\n * in the property groups state array with the new deleted_at field.\n */\n trappingRun.property_group = data;\n updateTrappingRun(trappingRun);\n }\n });\n };\n\n return loadingTrappingRuns || loadingPropertyRoles || loadingUsers ? (\n <div className='h-100'>\n <LoadingOverlay hideOpacity />\n </div>\n ) : selectedTrappingRun ? (\n <TrappingRun\n permissionsCard={props.permissionsCard}\n selectedDatabase={props.selectedDatabase}\n selectedTrappingRun={selectedTrappingRun}\n update={updateTrappingRun}\n close={() => props.changeSelectedTrappingRunId(null)}\n propertyRoles={propertyRoles}\n users={users}\n history={props.history}\n customOptions={customEditTrappingRunOptions}\n />\n ) : (\n <Fragment>\n <Row>\n <Col>\n <Button\n variant='link'\n className='float-right text-primary'\n onClick={() => setShowAddTrappingRunModal(true)}\n >\n {customAddTrappingRunOptions?.button.text\n ? customAddTrappingRunOptions?.button.text\n : 'Add Trapping Run'}\n </Button>\n <AddTrappingRunModal\n show={showAddTrappingRunModal}\n onHide={() => setShowAddTrappingRunModal(false)}\n addTrappingRun={addTrappingRun}\n customOptions={{\n autoGeneratePasscode:\n customAddTrappingRunOptions?.modal.autoGeneratePasscode,\n form: customAddTrappingRunOptions?.modal.form,\n header: customAddTrappingRunOptions?.modal.header,\n propertiesSelector: {\n display: customAddTrappingRunOptions?.modal.showPropertySelect,\n properties: customAddTrappingRunOptions?.modal.properties\n }\n }}\n />\n </Col>\n </Row>\n <Row className='mt-4'>\n <Col>\n <TrappingRunsTable\n trappingRuns={trappingRuns}\n changeSelectedTrappingRunId={props.changeSelectedTrappingRunId}\n deleteTrappingRun={deleteTrappingRun}\n customOptions={customTableOptions}\n />\n </Col>\n </Row>\n </Fragment>\n );\n}\n\nTrappingRuns.propTypes = {\n // Feature flags\n permissionsCard: PropTypes.bool,\n\n // Custom options\n customOptions: PropTypes.object,\n\n // Authentication\n selectedDatabase: PropTypes.string.isRequired,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n authService: PropTypes.string.isRequired,\n\n // Trapping Runs\n selectedTrappingRunId: PropTypes.number,\n changeSelectedTrappingRunId: PropTypes.func.isRequired\n};\n\nexport default observer(TrappingRuns);\n","import bbox from '@turf/bbox';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { Button, Popover } from 'react-bootstrap';\nimport Map, { Layer, Source } from 'react-map-gl-7';\nimport { useBoundaryLayers } from '../hooks/useBoundaryLayers';\nimport PreviewButton, { monoStyle } from './PreviewButton';\n\nconst statusLabel = (status) => {\n switch (status) {\n case 'pre_trap_catch_threshold_met':\n return 'Threshold Met';\n case 'accumulation_threshold_met':\n return 'Threshold Met';\n case 'average_threshold_met':\n return 'Threshold Met';\n case 'near_accumulation_threshold':\n return 'Near Threshold';\n case 'good':\n return 'No Action Required';\n case 'sprayed':\n return 'Sprayed';\n case 'no_data':\n return 'Not Monitored';\n default:\n return 'Unknown';\n }\n};\n\n// TODO: Refactor to use useMapState hook.\nconst SummaryMap = (props) => {\n const [viewport, setViewport] = useState({\n latitude: -40.9753799,\n longitude: 176.8903929,\n zoom: 4,\n height: 400,\n width: '100%'\n });\n const [mapStyle, setMapStyle] = useState(monoStyle);\n const [initialBoundsSet, setInitialBoundsSet] = useState(false);\n const [hoverInfo, setHoverInfo] = useState();\n const layers = useBoundaryLayers([0.2, 0.4, 4, 0.5]);\n const mapRef = useRef();\n\n const data = useMemo(() => {\n const geojson = {\n type: 'FeatureCollection',\n features: []\n };\n\n props.propertiesWithTrappingZones.forEach((property) => {\n const propertyStatus = props.propertyStatuses.find(\n (p) => p.propertyId === property.id\n );\n property.trapping_zones.forEach((trappingZone) => {\n const trappingZoneStatus = propertyStatus?.trappingZoneStatuses.find(\n (t) => t.trappingZoneId === trappingZone.id\n );\n const boundry = JSON.parse(trappingZone.boundry);\n\n if (boundry)\n geojson.features.push({\n type: 'Feature',\n geometry: boundry,\n properties: {\n status: trappingZoneStatus\n ? trappingZoneStatus.status\n : 'no_data',\n id: trappingZone.id,\n propertyId: property.id,\n propertyName: property.name,\n propertyIdentifier: property.identifier,\n trappingZoneId: trappingZone.id,\n trappingZoneName: trappingZone.name\n }\n });\n });\n });\n\n return geojson;\n }, [props.propertiesWithTrappingZones]);\n\n const fitBounds = (map) => {\n const features = data.features;\n if (features) {\n let minLng;\n let minLat;\n let maxLng;\n let maxLat;\n\n data.features.forEach((feature) => {\n const [newMinLng, newMinLat, newMaxLng, newMaxLat] = bbox(feature);\n if (minLng === undefined || newMinLng < minLng) minLng = newMinLng;\n if (maxLng === undefined || newMaxLng > maxLng) maxLng = newMaxLng;\n if (minLat === undefined || newMinLat < minLat) minLat = newMinLat;\n if (maxLat === undefined || newMaxLat > maxLat) maxLat = newMaxLat;\n });\n\n map.fitBounds(\n [\n [minLng, minLat],\n [maxLng, maxLat]\n ],\n { padding: 50, duration: 500 }\n );\n }\n };\n\n // Update the bounds of the map once the 100% width has been converted to an integer\n useEffect(() => {\n if (\n !initialBoundsSet &&\n data.features.length > 0 &&\n Number.isInteger(viewport.width)\n ) {\n fitBounds();\n setInitialBoundsSet(true);\n }\n }, [viewport, data]);\n\n const mapRefWrapper = useCallback((node) => {\n if (node) {\n if (data && !initialBoundsSet) {\n fitBounds(node);\n setInitialBoundsSet(true);\n }\n }\n mapRef.current = node;\n }, []);\n\n return data.features.length > 0 ? (\n <Map\n ref={mapRefWrapper}\n initialViewState={viewport}\n onViewportChange={(nextViewport) => setViewport(nextViewport)}\n mapStyle={`mapbox://styles/hortplus/${mapStyle}`}\n attributionControl={false}\n interactiveLayerIds={[\n 'layerStyleThresholdMet',\n 'layerStyleNearThreshold',\n 'layerStyleGood',\n 'layerStyleNoData'\n ]}\n onMouseMove={(e) => {\n const hoveredFeature = e.features && e.features[0];\n setHoverInfo(\n hoveredFeature\n ? {\n feature: hoveredFeature,\n x: e.originalEvent.offsetX,\n y: e.originalEvent.offsetY\n }\n : null\n );\n }}\n onClick={(e) => {\n const hoveredFeature = e.features && e.features[0];\n if (hoveredFeature && props.onClick)\n props.onClick(\n hoveredFeature.properties.propertyId,\n hoveredFeature.properties.trappingZoneId\n );\n }}\n mapboxAccessToken={process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}\n >\n <div\n className='m-3'\n style={{\n position: 'absolute',\n top: 0,\n right: 0\n }}\n >\n <Button\n variant='light'\n onClick={() => fitBounds(mapRef.current)}\n className='m-3 float-right'\n >\n Reset\n </Button>\n </div>\n <Source id='trappingZones' type='geojson' data={data}>\n {layers.map((layer) => (\n <Layer key={layer.id} {...layer} />\n ))}\n </Source>\n {hoverInfo ? (\n <Popover\n id={hoverInfo.feature.properties.id}\n placement='auto'\n style={{\n left:\n viewport.width - hoverInfo.x < 200\n ? hoverInfo.x - 200\n : hoverInfo.x + 5,\n top:\n viewport.height - hoverInfo.y < 100\n ? hoverInfo.y - 90\n : hoverInfo.y,\n position: 'absolute',\n width: '200px',\n zIndex: 9,\n pointerEvents: 'none'\n }}\n >\n <Popover.Title>\n <b>{hoverInfo.feature.properties.propertyIdentifier}</b>{' '}\n {hoverInfo.feature.properties.propertyName}\n </Popover.Title>\n <Popover.Content>\n Production Site:{' '}\n <b>{hoverInfo.feature.properties.trappingZoneName}</b>\n <br />\n Status: <b>{statusLabel(hoverInfo.feature.properties.status)}</b>\n </Popover.Content>\n </Popover>\n ) : null}\n\n <PreviewButton\n setMapStyle={setMapStyle}\n mapStyle={mapStyle}\n viewport={viewport}\n />\n </Map>\n ) : null;\n};\n\nSummaryMap.propTypes = {\n // Authentication\n selectedDatabase: PropTypes.string,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n\n // Data\n propertiesWithTrappingZones: PropTypes.array.isRequired,\n propertyStatuses: PropTypes.array.isRequired,\n\n // Misc\n onClick: PropTypes.func\n};\n\nexport default observer(SummaryMap);\n","import {\n faBook,\n faChevronDown,\n faChevronUp,\n faEdit,\n faInfoCircle,\n faTrash\n} from '@fortawesome/free-solid-svg-icons';\nimport {\n faDiamondExclamation,\n faFireFlame\n} from '@fortawesome/pro-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n GlobalPropertiesSelect,\n PropertiesStore\n} from '@hortplus/properties-react';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useCallback, useEffect, useState } from 'react';\nimport {\n Alert,\n Button,\n Col,\n Collapse,\n OverlayTrigger,\n Row,\n Spinner,\n Tooltip\n} from 'react-bootstrap';\nimport InsectGroupSelect from './InsectGroupSelect';\nimport TraplogLegend from './TraplogLegend';\nimport AddTrapModal from './admin/AddTrapModal';\nimport AddTrapMonitoringRecordsModal from './admin/AddTrapMonitoringRecordsModal';\nimport AddTrappingZoneModal from './admin/AddTrappingZoneModal';\nimport EditTrapModal from './admin/EditTrapModal';\nimport EditTrappingZoneModal from './admin/EditTrappingZoneModal';\nimport TrappingZoneResults from './admin/TrappingZoneResults';\nimport TrapsTable from './admin/TrapsTable';\nimport AddTrappingZoneSprayModal from './admin/add_trapping_zone_spray_modal/AddTrappingZoneSprayModal';\nimport SetupTrapsModal from './admin/setup_traps_modal/SetupTrapsModal';\nimport ConfirmationModal from './helpers/ConfirmationModal';\nimport { ToastContainer } from './helpers/ToastUtils';\nimport { fetchTrapCSV } from './helpers/TrappingUtils';\nimport { useCollapse } from './hooks/useCollapse';\nimport { useStores } from './stores/useStores';\n\nconst TrappingZoneTitle = (props) => {\n const { traplogStore } = useStores();\n\n return (\n <h5 className='my-auto'>\n {props.trappingZone.name}\n {props.trappingZone.cmsm ? ' (CMSM)' : ''}\n {props.trappingZone.mating_disruption_tie ? (\n <OverlayTrigger\n placement='top'\n overlay={\n <Tooltip>{props.trappingZone.mating_disruption_tie.name}</Tooltip>\n }\n >\n <FontAwesomeIcon\n className='ml-2'\n style={{ marginBottom: '1px' }}\n icon={faInfoCircle}\n size='xs'\n />\n </OverlayTrigger>\n ) : null}\n {traplogStore.isTrappingZoneHighRisk(props.trappingZone) ? (\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>High Risk Site</Tooltip>}\n >\n <FontAwesomeIcon className='ml-2' icon={faDiamondExclamation} />\n </OverlayTrigger>\n ) : null}\n {traplogStore.isTrappingZoneHighPressure(props.trappingZone) ? (\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>High Pressure Site</Tooltip>}\n >\n <FontAwesomeIcon className='ml-2' icon={faFireFlame} />\n </OverlayTrigger>\n ) : null}\n </h5>\n );\n};\n\nconst NZAPOverview = (props) => {\n const { traplogStore } = useStores();\n const [messages, setMessages] = useState([]);\n const [loading, setLoading] = useState(false);\n const [editingTrappingZoneId, setEditingTrappingZoneId] = useState(null);\n const [editingTrapId, setEditingTrapId] = useState(null);\n const [trapsData, setTrapsData] = useState();\n const [trapsOpen, trapsHandleCollapse] = useCollapse(\n 'nzapoverview-traps-open'\n );\n const addProductionAreaOptions = props.customOptions?.addProductionArea;\n\n const deleteTrap = useCallback(\n async (trapId) => {\n const res = await fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/traps/${trapId}`,\n {\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n );\n if (res.ok)\n traplogStore.loadTrappingZones(\n props.bearerToken,\n props.refreshBearerToken,\n props.selectedDatabase,\n props.propertiesStore.selectedPropertyId\n );\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n },\n [\n props.bearerToken,\n props.selectedDatabase,\n props.refreshBearerToken,\n props.propertiesStore.selectedPropertyId\n ]\n );\n\n const trappingZone = useCallback(\n (trappingZoneId) =>\n traplogStore.trappingZones.find(\n (trappingZone) => trappingZone.id === trappingZoneId\n ),\n [traplogStore.trappingZones]\n );\n\n useEffect(() => {\n if (traplogStore.traps) {\n const newTrapsData = traplogStore.traps\n .map((trap) => {\n const currentTrappingZone = trappingZone(trap.trapping_zone_id);\n return {\n trappingZone: currentTrappingZone,\n area: currentTrappingZone.name,\n code: trap.code,\n name: trap.name,\n location_description: trap.location_description,\n setup_at: trap.setup_at,\n comments: trap.comments,\n edit: (\n <Button\n variant='link'\n type='button'\n className='text-primary'\n onClick={() => setEditingTrapId(trap.id)}\n >\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n ),\n delete: (\n <ConfirmationModal\n title='Confirm Delete'\n bodyText='Are you sure you want to delete this trap?'\n confirmAction={() => {\n return deleteTrap(trap.id);\n }}\n showButton={{\n children: <FontAwesomeIcon icon={faTrash} />,\n props: { className: 'text-danger', variant: 'link' }\n }}\n confirmButton={{ props: { variant: 'danger' } }}\n />\n )\n };\n })\n .sort((a, b) => {\n const trappingZoneA = a.trappingZone;\n const trappingZoneB = b.trappingZone;\n if (trappingZoneA?.name < trappingZoneB?.name) return -1;\n if (trappingZoneA?.name > trappingZoneB?.name) return 1;\n return 0;\n });\n setTrapsData(newTrapsData);\n }\n }, [traplogStore.traps, trappingZone, deleteTrap]);\n\n const deleteTrappingZone = async (trappingZoneId) => {\n const res = await fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-zones/${trappingZoneId}`,\n {\n method: 'DELETE',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n );\n if (res.ok)\n traplogStore.loadTrappingZones(\n props.bearerToken,\n props.refreshBearerToken,\n props.selectedDatabase,\n props.propertiesStore.selectedPropertyId\n );\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n };\n\n /**\n * Add a new bootstrap alert message.\n *\n * @param {string} variant\n * @param {string} message\n */\n const addMessage = (variant, message) => {\n let newMessages = [...messages];\n newMessages.push({\n variant: variant,\n message: message\n });\n setMessages(newMessages);\n };\n\n const regenerateTrappingNotifications = () => {\n setLoading(true);\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/properties/${props.propertiesStore.selectedPropertyId}/generate-trapping-notifications`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) {\n addMessage(\n 'success',\n `Successfully synced trapping notifications for ${props.propertiesStore.selectedProperty.name}`\n );\n } else {\n addMessage(\n 'danger',\n `Failed to sync trapping notifications for ${props.propertiesStore.selectedProperty.name}`\n );\n }\n })\n .catch((ex) => {\n addMessage(\n 'danger',\n `Failed to sync trapping notifications for ${props.propertiesStore.selectedProperty.name}`\n );\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n return (\n <Fragment>\n <ToastContainer />\n {messages.map((message, i) => (\n <Alert\n key={i}\n variant={message.variant}\n onClose={() => {\n let newMessages = [...messages];\n newMessages.splice(i, 1);\n setMessages(newMessages);\n }}\n dismissible\n >\n {message.message}\n </Alert>\n ))}\n\n {/* New user alerts */}\n {traplogStore.selectedInsectGroupId === null ? null : !props\n .propertiesStore.loading &&\n props.propertiesStore.selectedPropertyId &&\n !traplogStore.loadingInsectGroups &&\n !traplogStore.loadingTrappingZones &&\n !traplogStore.loadingTrappingResults &&\n !loading &&\n traplogStore.trappingZones.length === 0 ? (\n <Row className='mb-2'>\n <Col sm={0} md={1}></Col>\n <Col>\n <Alert variant='warning'>\n <p className=' text-center mb-0' style={{ fontSize: '14px' }}>\n Add Production Site First\n </p>\n </Alert>\n </Col>\n <Col sm={0} md={1}></Col>\n </Row>\n ) : traplogStore.selectedTrappingZone?.traps.length === 0 ? (\n <Row className='mb-2'>\n <Col sm={0} md={1}></Col>\n <Col>\n <Alert variant='warning'>\n <p className=' text-center mb-0' style={{ fontSize: '14px' }}>\n Add Traps to Production Site\n </p>\n </Alert>\n </Col>\n <Col sm={0} md={1}></Col>\n </Row>\n ) : null}\n\n {/* Options box */}\n <Row className='mb-2 justify-content-center'>\n <Col\n xs={3}\n sm={2}\n className='d-flex align-items-center justify-content-end pr-0 font-weight-bold'\n >\n Property:\n </Col>\n <Col xs={9} md={8} lg={6}>\n <GlobalPropertiesSelect\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n propertiesStore={props.propertiesStore}\n useRpin\n />\n </Col>\n <Col\n xs={0}\n sm={1}\n className='d-flex align-items-center justify-content-end pl-0 font-weight-bold'\n style={{ visibility: 'hidden' }}\n >\n Property:\n </Col>\n </Row>\n <Row className='justify-content-center'>\n <Col\n xs={3}\n sm={2}\n className='d-flex align-items-center justify-content-end pr-0 font-weight-bold'\n >\n Insect:\n </Col>\n <Col xs={9} md={8} lg={6}>\n <InsectGroupSelect\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n customInsects={['CM', 'CM SIT', 'LBAM', 'LBAM SIT']}\n />\n </Col>\n <Col\n xs={0}\n sm={1}\n className='d-flex align-items-center justify-content-end pl-0 font-weight-bold'\n style={{ visibility: 'hidden' }}\n >\n Insect:\n </Col>\n </Row>\n\n {traplogStore.selectedInsectGroupId === null ? null : props\n .propertiesStore.loading ||\n traplogStore.loadingInsectGroups ||\n traplogStore.loadingTrappingZones ||\n traplogStore.loadingTrappingResults ||\n loading ? (\n <div className='text-center mt-3'>\n <Spinner variant='primary' animation='border' />\n </div>\n ) : (\n <Fragment>\n {/* Editing trapping zone modal */}\n {editingTrappingZoneId ? (\n <EditTrappingZoneModal\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n propertiesStore={props.propertiesStore}\n trappingZone={traplogStore.trappingZones.find(\n (t) => t.id === editingTrappingZoneId\n )}\n setTrappingZoneId={setEditingTrappingZoneId}\n />\n ) : null}\n\n {/* Editing trap modal */}\n {editingTrapId ? (\n <EditTrapModal\n chargedInput={false}\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n propertiesStore={props.propertiesStore}\n trap={traplogStore.traps.find(\n (trap) => trap.id === editingTrapId\n )}\n setTrapId={setEditingTrapId}\n />\n ) : null}\n\n {/* Trapping Zones */}\n <Row>\n <Col className='text-center'>\n <Row className='mt-1'>\n <Col>\n {traplogStore.trappingZones\n .slice()\n .sort((a, b) => a.name.localeCompare(b.name))\n .map((trappingZone, i) => {\n // Set first production site as selected.\n if (\n traplogStore.selectedTrappingZoneId === null &&\n trappingZone &&\n i === 0\n ) {\n traplogStore.setSelectedTrappingZoneId(trappingZone.id);\n }\n const variantColour = `${\n traplogStore.trappingResults &&\n traplogStore.trappingResults[trappingZone.id]\n ? traplogStore.trappingResults[trappingZone.id]\n .overview.status === 'good' ||\n traplogStore.trappingResults[trappingZone.id]\n .overview.status === 'sprayed'\n ? 'success'\n : traplogStore.trappingResults[trappingZone.id]\n .overview.status === 'no_data'\n ? 'secondary'\n : traplogStore.trappingResults[trappingZone.id]\n .overview.status ===\n 'pre_trap_catch_threshold_met' ||\n traplogStore.trappingResults[trappingZone.id]\n .overview.status ===\n 'accumulation_threshold_met' ||\n traplogStore.trappingResults[trappingZone.id]\n .overview.status === 'average_threshold_met'\n ? 'danger'\n : traplogStore.trappingResults[trappingZone.id]\n .overview.status ===\n 'near_accumulation_threshold'\n ? 'warning'\n : 'primary'\n : 'primary'\n }`;\n return (\n <Button\n key={trappingZone.id}\n className='mx-2 mt-3'\n variant={`${\n traplogStore.selectedTrappingZoneId ===\n trappingZone.id\n ? ''\n : 'outline-'\n }${variantColour}`}\n onClick={() =>\n traplogStore.setSelectedTrappingZoneId(\n trappingZone.id\n )\n }\n >\n {`${trappingZone.name}`}\n {traplogStore.isTrappingZoneHighRisk(trappingZone) ? (\n <FontAwesomeIcon\n className='ml-1'\n icon={faDiamondExclamation}\n />\n ) : null}\n {traplogStore.isTrappingZoneHighPressure(\n trappingZone\n ) ? (\n <FontAwesomeIcon\n className='ml-1'\n icon={faFireFlame}\n />\n ) : null}\n {`${trappingZone.cmsm ? ' (CMSM)' : ''}`}\n </Button>\n );\n })}\n </Col>\n </Row>\n <Row className='mt-3'>\n <Col>\n <TraplogLegend className='text-center' />\n </Col>\n </Row>\n </Col>\n <Col sm={4} lg={3} className='mt-3'>\n <div className='d-flex flex-column align-items-end'>\n {/* <Button\n variant='link'\n onClick={regenerateTrappingNotifications}\n >\n <FontAwesomeIcon icon={faSync} /> Sync notifications\n </Button> */}\n <AddTrappingZoneModal\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n propertiesStore={props.propertiesStore}\n customOptions={addProductionAreaOptions}\n />\n {traplogStore.trappingZones.length > 0 && (\n <AddTrapModal\n chargedInput={false}\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n />\n )}\n <AddTrappingZoneSprayModal\n addMany\n propertiesStore={props.propertiesStore}\n coverageDays={false}\n >\n <Button type='button' variant='link'>\n Add Spray Application\n </Button>\n </AddTrappingZoneSprayModal>\n <SetupTrapsModal\n propertiesStore={props.propertiesStore}\n chargedInput={false}\n >\n <Button type='button' variant='link'>\n Seasonal Trap Setup\n </Button>\n </SetupTrapsModal>\n </div>\n </Col>\n </Row>\n {traplogStore.trappingZones.length > 0 && (\n <Fragment>\n {/* Trapping Table */}\n <h5 onClick={() => trapsHandleCollapse()}>\n Traps{'\\t'}\n <FontAwesomeIcon\n icon={trapsOpen ? faChevronDown : faChevronUp}\n size='xs'\n />\n </h5>\n {trapsData ? (\n <Collapse in={trapsOpen}>\n <div>\n <TrapsTable data={trapsData} />\n </div>\n </Collapse>\n ) : null}\n\n {/* Trapping Results Table */}\n {traplogStore.selectedTrappingZoneId !== null ? (\n // This condition fixes a bug when switching property and insect group at the same time\n traplogStore.selectedTrappingZoneResults ? (\n <Row>\n <Col>\n <div className='d-flex justify-content-between align-items-centre'>\n <div className='d-flex justify-content-start align-items-centre'>\n <TrappingZoneTitle\n trappingZone={traplogStore.selectedTrappingZone}\n />\n <Button\n variant='link'\n onClick={() =>\n setEditingTrappingZoneId(\n traplogStore.selectedTrappingZoneId\n )\n }\n className='ml-4'\n >\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n <ConfirmationModal\n title='Confirm Delete'\n bodyText='Are you sure you want to delete this production site?'\n confirmAction={() => {\n return deleteTrappingZone(\n traplogStore.selectedTrappingZoneId\n );\n }}\n showButton={{\n children: <FontAwesomeIcon icon={faTrash} />,\n props: {\n className: 'text-danger',\n variant: 'link'\n }\n }}\n confirmButton={{\n props: { variant: 'danger' }\n }}\n />\n </div>\n {trapsData && trapsData.length === 0 ? null : (\n <div className='my-2'>\n <AddTrapMonitoringRecordsModal\n propertiesStore={props.propertiesStore}\n trappingZone={traplogStore.selectedTrappingZone}\n />\n <AddTrappingZoneSprayModal\n propertiesStore={props.propertiesStore}\n trappingZone={traplogStore.selectedTrappingZone}\n coverageDays={false}\n >\n <Button type='button' variant='primary'>\n <FontAwesomeIcon icon={faBook} /> Add Spray\n Application\n </Button>\n </AddTrappingZoneSprayModal>\n </div>\n )}\n </div>\n <TrappingZoneResults\n trappingZone={traplogStore.selectedTrappingZone}\n trappingZoneResults={\n traplogStore.selectedTrappingZoneResults\n }\n selectedInsectGroup={traplogStore.selectedInsectGroup}\n propertiesStore={props.propertiesStore}\n />\n </Col>\n </Row>\n ) : null\n ) : (\n traplogStore.sortedTrappingZones.map((trappingZone) => {\n // This condition fixes a bug when switching property and insect group at the same time\n if (traplogStore.trappingResults[trappingZone.id]) {\n return (\n <Row key={trappingZone.id}>\n <Col>\n <div className='d-flex justify-content-between align-items-centre'>\n <div className='d-flex justify-content-start align-items-centre'>\n <TrappingZoneTitle trappingZone={trappingZone} />\n <Button\n variant='link'\n onClick={() =>\n setEditingTrappingZoneId(trappingZone.id)\n }\n className='ml-4'\n >\n <FontAwesomeIcon icon={faEdit} />\n </Button>\n <ConfirmationModal\n title='Confirm Delete'\n bodyText='Are you sure you want to delete this production site?'\n confirmAction={() => {\n return deleteTrappingZone(\n traplogStore.selectedTrappingZoneId\n );\n }}\n showButton={{\n children: <FontAwesomeIcon icon={faTrash} />,\n props: {\n className: 'text-danger',\n variant: 'link'\n }\n }}\n confirmButton={{\n props: { variant: 'danger' }\n }}\n />\n </div>\n <div className='my-2'>\n <AddTrapMonitoringRecordsModal\n propertiesStore={props.propertiesStore}\n trappingZone={trappingZone}\n />\n <AddTrappingZoneSprayModal\n propertiesStore={props.propertiesStore}\n trappingZone={trappingZone}\n coverageDays={false}\n >\n <Button type='button' variant='primary'>\n <FontAwesomeIcon icon={faBook} /> Add Spray\n Application\n </Button>\n </AddTrappingZoneSprayModal>\n </div>\n </div>\n <TrappingZoneResults\n trappingZone={trappingZone}\n trappingZoneResults={\n traplogStore.trappingResults[trappingZone.id]\n }\n selectedInsectGroup={\n traplogStore.selectedInsectGroup\n }\n propertiesStore={props.propertiesStore}\n />\n </Col>\n </Row>\n );\n } else return null;\n })\n )}\n </Fragment>\n )}\n {traplogStore.trappingResults[traplogStore.selectedTrappingZoneId]\n ?.results.length > 0 ? (\n <Row>\n <Col className='text-center'>\n <Button\n variant='light'\n onClick={() => {\n const result = fetchTrapCSV(\n traplogStore.bearerToken,\n traplogStore.selectedDatabase,\n traplogStore.selectedInsectGroup.short_name,\n props.propertiesStore.selectedPropertyId,\n traplogStore.selectedTrappingZoneId\n );\n }}\n >\n Export Data\n </Button>\n </Col>\n </Row>\n ) : null}\n </Fragment>\n )}\n </Fragment>\n );\n};\n\nNZAPOverview.propTypes = {\n selectedDatabase: PropTypes.string.isRequired,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n customOptions: PropTypes.object\n};\n\nexport default observer(NZAPOverview);\n","import { faTimes } from '@fortawesome/pro-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { Fragment, useState } from 'react';\nimport { Button, Modal } from 'react-bootstrap';\nimport { boostrapColourToHex } from '../utils';\n\nconst TrappingZoneStatusModal = ({ children, title, body }) => {\n const [show, setShow] = useState(false);\n\n const hide = () => {\n setShow(false);\n };\n\n return (\n <Fragment>\n <div className='d-inline' onClick={() => setShow(true)}>\n {children}\n </div>\n <Modal show={show} onHide={() => hide()}>\n <Modal.Header\n style={{ backgroundColor: boostrapColourToHex['secondary'] }}\n >\n <Modal.Title>\n <h5 className='text-light mb-0'>{title}</h5>\n </Modal.Title>\n <Button\n type='button'\n variant='link'\n className='text-light p-0 m-0 mr-1'\n onClick={() => hide()}\n >\n <FontAwesomeIcon icon={faTimes} size='lg' />\n </Button>\n </Modal.Header>\n <Modal.Body>{body}</Modal.Body>\n </Modal>\n </Fragment>\n );\n};\n\nexport default TrappingZoneStatusModal;\n","import {\n faCheck,\n faChevronDown,\n faChevronUp,\n faComment,\n faExclamationCircle,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons';\nimport {\n faDiamondExclamation,\n faFireFlame\n} from '@fortawesome/pro-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n GlobalPropertiesSelect,\n PropertiesStore\n} from '@hortplus/properties-react';\nimport isMobile from 'ismobilejs';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useCallback, useEffect } from 'react';\nimport {\n Alert,\n Button,\n Col,\n Collapse,\n OverlayTrigger,\n Row,\n Spinner,\n Table,\n Tooltip\n} from 'react-bootstrap';\nimport InsectGroupSelect from './InsectGroupSelect';\nimport TraplogLegend from './TraplogLegend';\nimport { calcAccumulationThreshold } from './helpers/TrappingUtils';\nimport TrappingZoneStatusModal from './helpers/TrappingZoneStatusModal';\nimport useLocalStorageState from './helpers/useLocalStorageState';\nimport { useCollapse } from './hooks/useCollapse';\nimport { useTrappingZoneThresholds } from './hooks/useTrappingZoneThresholds';\nimport { useUpdateTrappingZoneHighPressure } from './hooks/useUpdateTrappingZoneHighPressure';\nimport PropertyOverviewMap from './maps/PropertyOverviewMap';\nimport { useStores } from './stores/useStores';\n\nconst HighRiskAlert = () => {\n return (\n <Alert variant='warning'>\n <div>\n <FontAwesomeIcon\n className='d-inline mr-2'\n icon={faDiamondExclamation}\n />\n <p className='d-inline'>\n One or more sites within your property have been classified as High\n Risk.{' '}\n <TrappingZoneStatusModal\n title={'High Risk Sites:'}\n body={\n <>\n <div>\n <p style={{ fontSize: '18px' }}>\n A production site becomes high-risk if:\n </p>\n </div>\n <div>\n <ol>\n <li className='mb-3'>\n CM was detected at harvest or post-harvest in the previous\n season, or\n </li>\n <li className='mb-3'>\n Production site was removed from CMSM programme in the\n previous season due to non-compliance with this programme,\n or\n </li>\n <li>\n Production site is managed by growers new to this\n programme and who does not have a documented history from\n within the last 2 seasons of CM management.\n </li>\n </ol>\n </div>\n </>\n }\n >\n <a href='javascript:;'>Click here to learn more.</a>\n </TrappingZoneStatusModal>\n </p>\n </div>\n </Alert>\n );\n};\n\nconst HighPressureAlert = () => {\n const [show, setShow] = useLocalStorageState(\n 'traplog-client-high-pressure-alert-show',\n true\n );\n\n if (!show) return <></>;\n return (\n <Alert variant='info' onClose={() => setShow(false)} dismissible>\n <div>\n <FontAwesomeIcon className='d-inline mr-2' icon={faFireFlame} />\n <p className='d-inline'>\n One or more sites within your property have been classified as High\n pressure. Notifying pack-houses and bin assessments is advised:{' '}\n <TrappingZoneStatusModal\n title={'High Risk Sites:'}\n body={\n <p>\n Your production site's CM traps exceeded the thresholds on four\n occasions and 5 or more chemical interventions for CM have been\n made so far into the season. Please let your pack-house know and\n discuss with them any additional checks they may wish done to\n ensure the fruit is still suitable for the CMSM market.\n </p>\n }\n >\n <a href='javascript:;'>More Info.</a>\n </TrappingZoneStatusModal>\n </p>\n </div>\n </Alert>\n );\n};\n\nconst TrappingZone = ({ trappingZone }) => {\n const { traplogStore } = useStores();\n const { calculateThresholds } = useTrappingZoneThresholds();\n const { updateTrappingZoneHighPressure } =\n useUpdateTrappingZoneHighPressure();\n\n const trappingZoneThresholds = useCallback(\n (trappingZone, selectedInsectGroup) => {\n const trappingZoneId = trappingZone.id;\n traplogStore.trappingResults[trappingZoneId]?.results.forEach(\n (trappingResult) => {\n const {\n amountThresholdsMet,\n accumulationThresholdsMet,\n averageThresholdMet\n } = calculateThresholds(\n trappingZone,\n trappingResult,\n selectedInsectGroup\n );\n // Counts the thresholds (ignoring sprayed) and\n // sets the current trappingZone.high_pressure property\n // to true of the minimum number of thresholds is reached.\n updateTrappingZoneHighPressure(\n trappingZone,\n trappingResult,\n amountThresholdsMet,\n accumulationThresholdsMet,\n averageThresholdMet()\n );\n }\n );\n },\n [\n traplogStore.trappingResultscalculateThresholds,\n updateTrappingZoneHighPressure\n ]\n );\n\n useEffect(() => {\n trappingZoneThresholds(trappingZone, traplogStore.selectedInsectGroup);\n }, [trappingZoneThresholds, traplogStore.selectedInsectGroup]);\n\n const variantColour =\n traplogStore.trappingResults &&\n traplogStore.trappingResults[trappingZone.id]\n ? traplogStore.trappingResults[trappingZone.id].overview.status ===\n 'good' ||\n traplogStore.trappingResults[trappingZone.id].overview.status ===\n 'sprayed'\n ? 'success'\n : traplogStore.trappingResults[trappingZone.id].overview.status ===\n 'no_data'\n ? 'secondary'\n : traplogStore.trappingResults[trappingZone.id].overview.status ===\n 'pre_trap_catch_threshold_met' ||\n traplogStore.trappingResults[trappingZone.id].overview.status ===\n 'accumulation_threshold_met' ||\n traplogStore.trappingResults[trappingZone.id].overview.status ===\n 'average_threshold_met'\n ? 'danger'\n : traplogStore.trappingResults[trappingZone.id].overview.status ===\n 'near_accumulation_threshold'\n ? 'warning'\n : 'primary'\n : 'primary';\n return (\n <Button\n key={trappingZone.id}\n className='mb-3 mx-2'\n variant={`${\n traplogStore.selectedTrappingZoneId === trappingZone.id\n ? ''\n : 'outline-'\n }${variantColour}`}\n onClick={() => traplogStore.setSelectedTrappingZoneId(trappingZone.id)}\n >\n {`${trappingZone.name}`}\n {traplogStore.isTrappingZoneHighRisk(trappingZone) ? (\n <FontAwesomeIcon className='ml-1' icon={faDiamondExclamation} />\n ) : null}\n {traplogStore.isTrappingZoneHighPressure(trappingZone) ? (\n <FontAwesomeIcon className='ml-1' icon={faFireFlame} />\n ) : null}\n {`${trappingZone.cmsm ? ' (CMSM)' : ''}`}\n </Button>\n );\n};\n\n/*\n * Client view, no CRUD, can only view trapping results for one trapping zone at a time.\n */\nfunction Traplog(props) {\n const { traplogStore } = useStores();\n const [trapsOpen, trapsHandleCollapse] = useCollapse('traplog-traps-open');\n\n const customOptions = props.customOptions;\n const customInsects = customOptions?.insects;\n\n const hasHighRisk = traplogStore.trappingZones.some((tz) => tz.high_risk);\n const hasHighPressure = traplogStore.trappingZones.some(\n (tz) => tz.high_pressure\n );\n\n return (\n <Fragment>\n <Row className='justify-content-center'>\n {isMobile(window.navigator).any ? (\n <>\n <Col\n xs={3}\n sm={2}\n className='d-flex align-items-center justify-content-end pr-0 font-weight-bold'\n >\n Property:\n </Col>\n <Col xs={9} md={8} lg={6}>\n <GlobalPropertiesSelect\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n propertiesStore={props.propertiesStore}\n />\n </Col>\n <Col\n xs={0}\n sm={1}\n className='d-flex align-items-center justify-content-end pl-0 font-weight-bold'\n style={{ visibility: 'hidden' }}\n >\n Property:\n </Col>\n </>\n ) : null}\n <>\n <Col\n xs={3}\n sm={2}\n className='d-flex align-items-center justify-content-end pr-0 font-weight-bold'\n >\n Insect:\n </Col>\n <Col xs={9} md={8} lg={6}>\n <InsectGroupSelect\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n customInsects={customInsects}\n />\n </Col>\n <Col\n xs={0}\n sm={1}\n className='d-flex align-items-center justify-content-end pl-0 font-weight-bold'\n style={{ visibility: 'hidden' }}\n >\n Insect:\n </Col>\n </>\n </Row>\n\n {traplogStore.selectedInsectGroupId === null ? null : props\n .propertiesStore.loading ||\n traplogStore.loadingInsectGroups ||\n traplogStore.loadingTrappingZones ||\n traplogStore.loadingTrappingResults ? (\n <div className='text-center mt-3'>\n <Spinner variant='primary' animation='border' />\n </div>\n ) : (\n <Fragment>\n {hasHighRisk && (\n <Row className='mt-3'>\n <Col>\n <HighRiskAlert />\n </Col>\n </Row>\n )}\n {hasHighPressure && (\n <Row>\n <Col>\n <HighPressureAlert />\n </Col>\n </Row>\n )}\n <Row className='mt-3' style={{ height: '400px' }}>\n <Col>\n <PropertyOverviewMap\n propertiesStore={props.propertiesStore}\n onClick={(id) => {\n traplogStore.setSelectedTrappingZoneId(id);\n }}\n />\n </Col>\n </Row>\n <TraplogLegend className='mt-3 text-center' />\n\n {/* Trapping Zones */}\n <Row className='mt-3'>\n <Col className='text-center'>\n {traplogStore.trappingZones.map((trappingZone) => (\n <TrappingZone\n key={trappingZone.id}\n trappingZone={trappingZone}\n />\n ))}\n </Col>\n </Row>\n\n {/* Traps Table */}\n {traplogStore.selectedTrappingZoneId &&\n traplogStore.traps !== null ? (\n <Row className='my-3'>\n <Col>\n <h3 onClick={trapsHandleCollapse} className='text-center mb-2'>\n Traps{'\\t'}\n <FontAwesomeIcon\n icon={trapsOpen ? faChevronDown : faChevronUp}\n size='xs'\n />\n </h3>\n <Collapse in={trapsOpen}>\n <div>\n <Table responsive>\n <thead>\n <tr>\n <th>Trap ID</th>\n <th>Name</th>\n <th>Location</th>\n <th>Setup Date</th>\n <th>Comments</th>\n </tr>\n </thead>\n <tbody>\n {traplogStore.traps.map((trap) => (\n <tr key={trap.id}>\n <td>{trap.code}</td>\n <td>{trap.name}</td>\n <td>{trap.location_description}</td>\n <td>\n {moment(trap.setup_at).format('DD/MM/YYYY')}\n </td>\n <td>{trap.comments}</td>\n </tr>\n ))}\n </tbody>\n </Table>\n </div>\n </Collapse>\n </Col>\n </Row>\n ) : null}\n\n {/* Trapping Results Table */}\n {props.propertiesStore.selectedProperty &&\n traplogStore.selectedTrappingZoneId !== null &&\n traplogStore.trappingResults[traplogStore.selectedTrappingZoneId] ? (\n <Row className='my-3'>\n <Col>\n <h3 className='text-center mb-2'>Trap Records</h3>\n <Table bordered striped responsive>\n <thead>\n <tr>\n <th>Date</th>\n <th>Week</th>\n <th>Cap</th>\n <th>Base</th>\n <th>TH</th>\n {traplogStore.selectedTrappingZone.traps\n .filter((trap) =>\n trap.trap_lure.insects.some(\n (insect) =>\n insect.insect_group.id ===\n traplogStore.selectedInsectGroupId\n )\n )\n .map((trap) => (\n <th key={trap.id} colSpan={2}>\n {trap.name}\n </th>\n ))}\n <th>\n Avg/Week\n <OverlayTrigger\n placement='top'\n overlay={\n <Tooltip>\n The average number of insects per week across all\n traps.\n </Tooltip>\n }\n >\n <FontAwesomeIcon\n icon={faInfoCircle}\n className='ml-2'\n size='xs'\n />\n </OverlayTrigger>\n </th>\n </tr>\n </thead>\n <tbody>\n {traplogStore.trappingResults[\n traplogStore.selectedTrappingZoneId\n ].results\n // Sorts the rows by earliest date first\n .slice()\n .sort((trappingResult1, trappingResult2) => {\n const m1 = moment(trappingResult1.date);\n const m2 = moment(trappingResult2.date);\n return m1.isSame(m2) ? 0 : m1.isAfter(m2) ? -1 : 1;\n })\n .map((trappingResult) => {\n const dt = moment(trappingResult.date);\n const amounts = [];\n let amountThresholdsMet = 0;\n let accumulationThresholdsMet = 0;\n const averageAmount = () =>\n amounts.length > 0\n ? (\n amounts.reduce(\n (accumulator, currentValue) =>\n accumulator + currentValue\n ) / amounts.length\n ).toFixed(2)\n : null;\n const averageThresholdMet = () =>\n traplogStore.selectedInsectGroup.average_threshold !==\n null &&\n averageAmount() >=\n traplogStore.selectedInsectGroup.average_threshold;\n\n const luresChanged =\n trappingResult.trap_monitoring_records.filter(\n (record) => record.lure_changed\n ).length;\n const basesChanged =\n trappingResult.trap_monitoring_records.filter(\n (record) => record.base_changed\n ).length;\n\n const trapCells = traplogStore.traps.map((trap) => {\n const monitoringRecord =\n trappingResult.trap_monitoring_records.find(\n (record) => record.trap.id === trap.id\n );\n const comments =\n monitoringRecord && monitoringRecord.comments\n ? monitoringRecord.comments\n : null;\n const amount = trappingResult.traps[trap.id]\n ? trappingResult.traps[trap.id].amount\n : null;\n const accumulation = trappingResult.traps[trap.id]\n ? trappingResult.traps[trap.id].accumulation\n : null;\n\n const amountThresholdMet = amount\n ? traplogStore.selectedInsectGroup\n .per_trap_catch_threshold !== null &&\n amount >=\n traplogStore.selectedInsectGroup\n .per_trap_catch_threshold\n : null;\n const accumulationThresholdMet = accumulation\n ? traplogStore.selectedInsectGroup\n .accumulation_threshold !== null &&\n accumulation >=\n calcAccumulationThreshold(\n traplogStore.selectedInsectGroup,\n dt\n )\n : null;\n\n amounts.push(amount);\n\n if (amountThresholdMet) amountThresholdsMet++;\n if (accumulationThresholdMet)\n accumulationThresholdsMet++;\n\n return (\n <Fragment key={trap.id}>\n <td\n className={\n amountThresholdMet ? 'text-danger' : null\n }\n >\n {amount === null ? '-' : amount}\n </td>\n <td\n className={`${\n accumulationThresholdMet\n ? 'text-danger'\n : null\n } ${comments ? 'pr-0' : null}`}\n >\n <i>\n {accumulation === null ? '-' : accumulation}\n </i>\n {comments ? (\n <OverlayTrigger\n placement='top'\n overlay={<Tooltip>{comments}</Tooltip>}\n >\n <FontAwesomeIcon\n className='text-primary ml-2'\n icon={faComment}\n />\n </OverlayTrigger>\n ) : null}\n </td>\n </Fragment>\n );\n });\n\n return (\n <Fragment key={trappingResult.date}>\n {trappingResult.trapping_zone_sprays.map(\n (spray) => (\n <tr key={spray.id}>\n <td>{dt.format('DD/MM/YYYY')}</td>\n <td>{dt.format('w')}</td>\n <td\n colSpan={4 + 2 * traplogStore.traps.length}\n >\n Spray Application{' '}\n {<i>{spray.biofix === 1 && '(Biofix)'}</i>}:{' '}\n <b>{spray.spray_product.product.name}</b>\n {spray.comments ? (\n <>\n <br />\n <i>{spray.comments}</i>\n </>\n ) : null}\n </td>\n </tr>\n )\n )}\n {trappingResult.trap_monitoring_records.length >\n 0 ? (\n <tr>\n <td>{dt.format('DD/MM/YYYY')}</td>\n <td>{dt.format('w')}</td>\n <td>\n {luresChanged > 0 ? (\n luresChanged <\n Object.keys(trappingResult.traps).length ? (\n <OverlayTrigger\n placement='top'\n overlay={\n <Tooltip>Some caps changed.</Tooltip>\n }\n >\n <FontAwesomeIcon\n icon={faCheck}\n className='text-warning'\n />\n </OverlayTrigger>\n ) : (\n <OverlayTrigger\n placement='top'\n overlay={\n <Tooltip>All caps changed.</Tooltip>\n }\n >\n <FontAwesomeIcon\n icon={faCheck}\n className='text-success'\n />\n </OverlayTrigger>\n )\n ) : null}\n </td>\n <td>\n {basesChanged > 0 ? (\n basesChanged <\n Object.keys(trappingResult.traps).length ? (\n <OverlayTrigger\n placement='top'\n overlay={\n <Tooltip>Some bases changed.</Tooltip>\n }\n >\n <FontAwesomeIcon\n icon={faCheck}\n className='text-warning'\n />\n </OverlayTrigger>\n ) : (\n <OverlayTrigger\n placement='top'\n overlay={\n <Tooltip>All bases changed.</Tooltip>\n }\n >\n <FontAwesomeIcon\n icon={faCheck}\n className='text-success'\n />\n </OverlayTrigger>\n )\n ) : null}\n </td>\n <td\n className={\n trappingResult.sprayed\n ? 'text-info'\n : 'text-danger'\n }\n >\n {amountThresholdsMet > 0 ||\n accumulationThresholdsMet > 0 ||\n averageThresholdMet() ? (\n <OverlayTrigger\n placement='top'\n overlay={\n <Tooltip>\n {trappingResult.sprayed ? (\n <Row>\n <Col>\n Previous spray covers these\n thresholds.\n </Col>\n </Row>\n ) : null}\n {amountThresholdsMet > 0 ? (\n <Row>\n <Col>\n {amountThresholdsMet} x Single\n trap catch threshold.\n </Col>\n </Row>\n ) : null}\n {accumulationThresholdsMet > 0 ? (\n <Row>\n <Col>\n {accumulationThresholdsMet} x\n accumulation threshold.\n </Col>\n </Row>\n ) : null}\n {averageThresholdMet() ? (\n <Row>\n <Col>Average threshold.</Col>\n </Row>\n ) : null}\n </Tooltip>\n }\n >\n <FontAwesomeIcon\n icon={faExclamationCircle}\n />\n </OverlayTrigger>\n ) : null}\n </td>\n {trapCells}\n <td\n className={\n averageThresholdMet() ? 'text-danger' : null\n }\n >\n {averageAmount()}\n </td>\n </tr>\n ) : null}\n </Fragment>\n );\n })}\n </tbody>\n </Table>\n </Col>\n </Row>\n ) : null}\n </Fragment>\n )}\n </Fragment>\n );\n}\n\nTraplog.propTypes = {\n selectedDatabase: PropTypes.string,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n customOptions: PropTypes.object\n};\n\nexport default observer(Traplog);\n","import { faArrowRight, faListAlt } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { PropertiesStore } from '@hortplus/properties-react';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useEffect, useState } from 'react';\nimport {\n Button,\n Card,\n Col,\n Collapse,\n Container,\n Row,\n Spinner\n} from 'react-bootstrap';\nimport TraplogLegend from './TraplogLegend';\nimport { useCollapse } from './hooks/useCollapse';\nimport SummaryMap from './maps/SummaryMap';\nimport { useStores } from './stores/useStores';\n\n/**\n * This component fetches trapping notifications from the traplog API and displays them.\n *\n * There are no actions to perform on the notifications currently.\n */\nfunction TraplogDashboard(props) {\n const [loading, setLoading] = useState(false);\n const [selectedInsectGroup, setSelectedInsectGroup] = useState();\n const [propertiesWithTrappingZones, setPropertiesWithTrappingZones] =\n useState([]);\n const [propertyStatuses, setPropertyStatuses] = useState([]);\n const { traplogStore } = useStores();\n const [resultsOpen, resultsHandleCollapse] = useCollapse(\n 'traplogdashboard-results-open'\n );\n\n useEffect(() => {\n traplogStore.loadInsectGroups(props.bearerToken, props.refreshBearerToken);\n }, [props.bearerToken]);\n\n useEffect(() => {\n const insectGroup = traplogStore.insectGroups.find(\n (i) => i.short_name === 'CM'\n );\n setSelectedInsectGroup(insectGroup);\n\n if (insectGroup) {\n setLoading(true);\n\n Promise.all([\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/trapping-statuses/${insectGroup.id}`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n // Sort data by status and by property name\n const thresoldMet = [];\n const nearThreshold = [];\n const noAction = [];\n const noData = [];\n\n data.forEach((propertyStatus) => {\n let bgColor = 'secondary';\n\n for (\n let i = 0;\n i < propertyStatus.trappingZoneStatuses.length;\n i++\n ) {\n const status = propertyStatus.trappingZoneStatuses[i].status;\n if (\n [\n 'pre_trap_catch_threshold_met',\n 'accumulation_threshold_met',\n 'average_threshold_met'\n ].includes(status)\n ) {\n bgColor = 'danger';\n break;\n } else if (\n bgColor !== 'danger' &&\n status === 'near_accumulation_threshold'\n ) {\n bgColor = 'warning';\n } else if (\n bgColor !== 'danger' &&\n bgColor !== 'warning' &&\n status === 'good'\n ) {\n bgColor = 'success';\n }\n }\n\n const obj = {\n bgColor: bgColor,\n ...propertyStatus\n };\n\n switch (bgColor) {\n case 'danger':\n thresoldMet.push(obj);\n break;\n case 'warning':\n nearThreshold.push(obj);\n break;\n case 'success':\n noAction.push(obj);\n break;\n case 'secondary':\n noData.push(obj);\n break;\n }\n });\n\n const sortMethod = (a, b) => {\n const nameA = a.propertyName.toUpperCase(); // ignore upper and lowercase\n const nameB = b.propertyName.toUpperCase(); // ignore upper and lowercase\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n\n // names must be equal\n return 0;\n };\n\n thresoldMet.sort(sortMethod);\n nearThreshold.sort(sortMethod);\n noAction.sort(sortMethod);\n noData.sort(sortMethod);\n\n setPropertyStatuses([\n ...thresoldMet,\n ...nearThreshold,\n ...noAction,\n ...noData\n ]);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setPropertyStatuses([]);\n }),\n fetch(\n `${process.env.REACT_APP_TRAPLOG_API_URL}api/properties-trapping-zones`,\n {\n headers: {\n Accept: 'application/json',\n Authorization: `Bearer ${props.bearerToken}`,\n SeasonalDatabase: props.selectedDatabase\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) props.refreshBearerToken();\n else throw Error(res.statusText);\n })\n .then((data) => {\n setPropertiesWithTrappingZones(data);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setPropertyStatuses([]);\n })\n ]).finally(() => {\n setLoading(false);\n });\n }\n }, [props.bearerToken, props.selectedDatabase, traplogStore.insectGroups]);\n\n const handleClick = (propertyId, trappingZoneId) => {\n traplogStore.resetTrapping();\n traplogStore.setSelectedInsectGroupId(\n props.bearerToken,\n props.refreshBearerToken,\n props.selectedDatabase,\n selectedInsectGroup.id\n );\n traplogStore.setSelectedTrappingZoneId(trappingZoneId);\n props.goToTrapping(propertyId);\n };\n\n return loading ? (\n <div className='d-flex justify-content-center pt-5'>\n <Spinner animation='border' variant='primary' />\n </div>\n ) : (\n <Container className='p-0'>\n <Container style={{ height: '400px' }}>\n <SummaryMap\n height={window.innerHeight < 500 ? 250 : window.innerHeight / 2}\n selectedDatabase={props.selectedDatabase}\n bearerToken={props.bearerToken}\n refreshBearerToken={props.refreshBearerToken}\n propertiesWithTrappingZones={propertiesWithTrappingZones}\n propertyStatuses={propertyStatuses}\n onClick={(propertyId, trappingZoneId) =>\n handleClick(propertyId, trappingZoneId)\n }\n />\n </Container>\n <TraplogLegend\n className='m-1 mt-2 text-center'\n propertyStatuses={propertyStatuses}\n />\n <Card className='mt-2'>\n <Card.Header onClick={resultsHandleCollapse} className='text-center'>\n {resultsOpen ? (\n <Fragment>\n {selectedInsectGroup ? `${selectedInsectGroup.name} ` : ''}\n Trapping\n <br />\n </Fragment>\n ) : null}\n <small>\n <FontAwesomeIcon icon={faListAlt} /> {resultsOpen ? 'Hide' : 'Show'}{' '}\n Results\n </small>\n </Card.Header>\n <Collapse in={resultsOpen}>\n <div>\n {propertyStatuses.length > 0\n ? propertyStatuses.map((propertyStatus) => (\n <Row\n key={[propertyStatus.propertyId]}\n className='my-2 mx-1 p-0'\n noGutters\n >\n <Col xs={12} className='bg-light'>\n <Row noGutters>\n <Col\n xs={1}\n className={`bg-${propertyStatus.bgColor}`}\n />\n <Col xs={8} className='py-2 pl-3 pr-0'>\n <Row>\n <Col>\n <b>{propertyStatus.propertyName}</b>\n </Col>\n </Row>\n {Object.keys(propertyStatus.trappingZoneStatuses).map(\n (trappingZoneId) => (\n <Row key={trappingZoneId}>\n <Col>\n {\n propertyStatus.trappingZoneStatuses[\n trappingZoneId\n ].trappingZoneName\n }\n :{' '}\n {\n propertyStatus.trappingZoneStatuses[\n trappingZoneId\n ].status_display\n }\n </Col>\n </Row>\n )\n )}\n </Col>\n <Col\n xs={3}\n className='d-flex align-items-center justify-content-end pr-3'\n >\n <Button\n variant='outline-primary'\n className='float-right'\n onClick={() => {\n handleClick(parseInt(propertyStatus.propertyId));\n }}\n >\n <FontAwesomeIcon icon={faArrowRight} />\n </Button>\n </Col>\n </Row>\n </Col>\n </Row>\n ))\n : null}\n </div>\n </Collapse>\n </Card>\n </Container>\n );\n}\n\nTraplogDashboard.propTypes = {\n // Authentication\n selectedDatabase: PropTypes.string,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired,\n\n // Links\n goToTrapping: PropTypes.func.isRequired\n};\n\nexport default observer(TraplogDashboard);\n","import { PropertiesStore } from '@hortplus/properties-react';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useEffect } from 'react';\nimport { useStores } from './stores/useStores';\n\n/*\n * The purpose of this component is to be a wrapper around components that need\n * trapping data.\n *\n * It initially loads the insect groups using the authentication props passed in\n * and implements a hook to load data based on changes to the propertiesStore.\n */\nfunction TraplogDataProvider(props) {\n const { traplogStore } = useStores();\n\n useEffect(() => {\n traplogStore.setBearerToken(props.bearerToken);\n traplogStore.setRefreshBearerToken(props.refreshBearerToken);\n traplogStore.setSelectedDatabase(props.selectedDatabase);\n traplogStore.loadInsectGroups(props.bearerToken, props.refreshBearerToken);\n traplogStore.loadTrapLures(props.bearerToken, props.refreshBearerToken);\n traplogStore.loadMatingDisruptionTies(\n props.bearerToken,\n props.refreshBearerToken\n );\n traplogStore.loadSprayProducts();\n }, [props.bearerToken, props.selectedDatabase]);\n\n useEffect(() => {\n if (props.propertiesStore.selectedProperty) {\n traplogStore.loadTrappingZones(\n props.bearerToken,\n props.refreshBearerToken,\n props.selectedDatabase,\n props.propertiesStore.selectedPropertyId\n );\n }\n }, [\n props.bearerToken,\n props.selectedDatabase,\n props.propertiesStore.selectedPropertyId\n ]);\n\n return <Fragment>{props.children}</Fragment>;\n}\n\nTraplogDataProvider.propTypes = {\n selectedDatabase: PropTypes.string,\n bearerToken: PropTypes.string.isRequired,\n refreshBearerToken: PropTypes.func.isRequired,\n propertiesStore: PropTypes.instanceOf(PropertiesStore).isRequired\n};\n\nexport default observer(TraplogDataProvider);\n","import { useCallback, useContext, useEffect, useState } from 'react';\nimport { storesContext } from '../../../stores/storesContext';\n\nconst useUserBlocks = () => {\n const userStore = useContext(storesContext);\n const blockScanningStore = userStore.blockScanningStore;\n const [blocksOffset, setBlocksOffset] = useState(\n blockScanningStore.userBlocks.length\n );\n const [hasMoreBlocks, setHasMoreBlocks] = useState(true);\n const blocksPageSize = 100;\n\n const fetchUserBlocks = useCallback(async () => {\n if (!userStore.selectedDatabase) return;\n const response = await blockScanningStore.fetchUserBlocks(\n blocksPageSize,\n blocksOffset\n );\n if (response.data.length < blocksPageSize) {\n setHasMoreBlocks(false);\n return;\n }\n setBlocksOffset(response.page.next_offset);\n }, [blockScanningStore, blocksOffset, userStore.selectedDatabase]);\n\n useEffect(() => {\n const fetchData = async () => {\n if (hasMoreBlocks) fetchUserBlocks();\n };\n fetchData();\n }, [fetchUserBlocks, hasMoreBlocks]);\n\n return blockScanningStore.userBlocks;\n};\n\nexport default useUserBlocks;\n\n","import { useCallback, useContext, useEffect, useState } from 'react';\nimport { storesContext } from '../../../stores/storesContext';\n\nconst useUserReports = () => {\n const userStore = useContext(storesContext);\n const blockScanningStore = userStore.blockScanningStore;\n const [reportsOffset, setReportsOffset] = useState(\n blockScanningStore.userReports.length\n );\n const [hasMoreReports, setHasMoreReports] = useState(true);\n const reportsPageSize = 100;\n\n const fetchUserReports = useCallback(async () => {\n if (!userStore.selectedDatabase) return;\n const response = await blockScanningStore.fetchUserReports(\n reportsPageSize,\n reportsOffset\n );\n if (response.data && response.data.length < reportsPageSize) {\n setHasMoreReports(false);\n return;\n }\n if (!response.page) return;\n setReportsOffset(response.page.next_offset);\n }, [blockScanningStore, reportsOffset, userStore.selectedDatabase]);\n\n useEffect(() => {\n const fetchData = async () => {\n if (hasMoreReports) fetchUserReports();\n };\n fetchData();\n }, [fetchUserReports, hasMoreReports]);\n\n return blockScanningStore.userReports;\n};\n\nexport default useUserReports;\n\n","import bbox from '@turf/bbox';\nimport PropTypes from 'prop-types';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Button, Popover } from 'react-bootstrap';\nimport Map, { Layer, Source } from 'react-map-gl-7';\nimport PreviewButton, { monoStyle } from '../../helpers/maps/PreviewButton';\n\nconst DashboardMap = ({ features }) => {\n const initialViewPort = {\n latitude: -41,\n longitude: 174.5,\n zoom: 4,\n height: 400,\n width: '100%'\n };\n const [viewport, setViewport] = useState(initialViewPort);\n const [initialBoundsSet, setInitialBoundsSet] = useState(false);\n const [mapStyle, setMapStyle] = useState(monoStyle);\n const [hoverInfo, setHoverInfo] = useState();\n const mapRef = useRef();\n const layers = [\n {\n id: 'layerStyleHasReportsFill',\n type: 'fill',\n paint: {\n 'fill-color': 'blue',\n 'fill-opacity': 0.3\n },\n filter: ['==', 'has_reports', true]\n },\n {\n id: 'layerStyleNoReportsFill',\n type: 'fill',\n paint: {\n 'fill-color': 'gray',\n 'fill-opacity': 0.2\n },\n filter: ['==', 'has_reports', false]\n },\n {\n id: 'layerStyleHasReportsLine',\n type: 'line',\n paint: {\n 'line-color': 'blue',\n 'line-width': 1.2\n },\n filter: ['==', 'has_reports', true]\n },\n {\n id: 'layerStyleNoReportsLine',\n type: 'line',\n paint: {\n 'line-color': 'gray',\n 'line-width': 1.2\n },\n filter: ['==', 'has_reports', false]\n }\n ];\n\n const data = useMemo(() => {\n const geojson = {\n type: 'FeatureCollection',\n features\n };\n return geojson;\n }, [features]);\n\n const fitBounds = useCallback(\n (map) => {\n const features = data.features;\n if (features && features.length > 0) {\n let minLng;\n let minLat;\n let maxLng;\n let maxLat;\n data.features.forEach((feature) => {\n const [newMinLng, newMinLat, newMaxLng, newMaxLat] = bbox(feature);\n if (minLng === undefined || newMinLng < minLng) minLng = newMinLng;\n if (maxLng === undefined || newMaxLng > maxLng) maxLng = newMaxLng;\n if (minLat === undefined || newMinLat < minLat) minLat = newMinLat;\n if (maxLat === undefined || newMaxLat > maxLat) maxLat = newMaxLat;\n });\n map.fitBounds(\n [\n [minLng, minLat],\n [maxLng, maxLat]\n ],\n { padding: 50, duration: 500 }\n );\n } else {\n const distance = viewport.zoom + 1;\n const bounds = [\n [viewport.longitude - distance, viewport.latitude - distance],\n [viewport.longitude + distance, viewport.latitude + distance]\n ];\n map.fitBounds(bounds, { padding: 50, duration: 500 });\n }\n },\n [data.features, viewport.latitude, viewport.longitude, viewport.zoom]\n );\n\n useEffect(() => {\n if (mapRef.current && data) {\n fitBounds(mapRef.current);\n setInitialBoundsSet(true);\n }\n }, [fitBounds, data, initialBoundsSet]);\n\n const mapRefWrapper = useCallback(\n (node) => {\n if (node) {\n if (data && !initialBoundsSet) {\n fitBounds(node);\n setInitialBoundsSet(true);\n }\n }\n mapRef.current = node;\n },\n [data, fitBounds, initialBoundsSet]\n );\n\n return (\n <Map\n ref={mapRefWrapper}\n reuseMaps\n mapboxAccessToken={process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}\n mapStyle={`mapbox://styles/hortplus/${mapStyle}`}\n initialViewState={viewport}\n onViewportChange={(nextViewport) => setViewport(nextViewport)}\n onMouseMove={(e) => {\n const hoveredFeature = e.features && e.features[0];\n setHoverInfo(\n hoveredFeature\n ? {\n feature: {\n ...hoveredFeature,\n properties: {\n ...hoveredFeature.properties,\n details: JSON.parse(hoveredFeature.properties.details),\n property: JSON.parse(hoveredFeature.properties.property)\n }\n },\n x: e.originalEvent.offsetX,\n y: e.originalEvent.offsetY\n }\n : null\n );\n }}\n attributionControl={false}\n interactiveLayerIds={[\n 'layerStyleHasReportsFill',\n 'layerStyleNoReportsFill',\n 'layerStyleHasReportsLine',\n 'layerStyleNoReportsLine'\n ]}\n >\n <div\n className='m-3'\n style={{\n position: 'absolute',\n top: 0,\n right: 0\n }}\n >\n <Button\n variant='light'\n onClick={() => fitBounds(mapRef.current)}\n className='float-right'\n >\n Reset\n </Button>\n </div>\n <Source id='blocks' type='geojson' data={data}>\n {layers.map((layer) => (\n <Layer key={layer.id} {...layer} />\n ))}\n </Source>\n {hoverInfo ? (\n <Popover\n id={hoverInfo.feature.properties.property.id}\n placement='auto'\n style={{\n left:\n viewport.width - hoverInfo.x < 200\n ? hoverInfo.x - 200\n : hoverInfo.x + 5,\n top:\n viewport.height - hoverInfo.y < 100\n ? hoverInfo.y - 90\n : hoverInfo.y,\n position: 'absolute',\n width: '200px',\n zIndex: 9,\n pointerEvents: 'none'\n }}\n >\n <Popover.Title>\n <b>{hoverInfo.feature.properties.property.identifier}</b>{' '}\n {hoverInfo.feature.properties.property.name}\n </Popover.Title>\n <Popover.Content>\n Block: <b>{hoverInfo.feature.properties.details.block}</b>\n </Popover.Content>\n </Popover>\n ) : null}\n <PreviewButton\n setMapStyle={setMapStyle}\n mapStyle={mapStyle}\n viewport={viewport}\n />\n </Map>\n );\n};\n\nDashboardMap.propTypes = {\n features: PropTypes.array.isRequired\n};\n\nexport default DashboardMap;\n\n","import { faArrowRight, faListAlt } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport React, {\n Fragment,\n useContext,\n useEffect,\n useMemo,\n useState\n} from 'react';\nimport { Button, Card, Col, Collapse, Row } from 'react-bootstrap';\nimport { useHistory } from 'react-router-dom';\nimport { storesContext } from '../../../stores/storesContext';\nimport { stages } from '../../crop_scanning/CropScanningUtils';\n\nconst PropertiesReports = ({ userReports, userBlocks }) => {\n const userStore = useContext(storesContext);\n const propertiesStore = userStore.propertiesStore;\n const [showResults, setShowResults] = useState(true);\n const history = useHistory();\n\n useEffect(() => {\n if (localStorage.getItem('showDashboardResults'))\n setShowResults(\n localStorage.getItem('showDashboardResults') === 'true' ? true : false\n );\n }, []);\n\n const handleClick = () => {\n localStorage.setItem('showDashboardResults', !showResults);\n setShowResults(\n localStorage.getItem('showDashboardResults') === 'true' ? true : false\n );\n };\n\n const propertiesReports = useMemo(\n () =>\n userReports\n .filter(\n (propertyReports) =>\n !(\n propertyReports.reports.length === 0 &&\n propertyReports.total_reports === 0\n )\n )\n .map((propertyReports) => {\n const propertyId = propertyReports.property_id;\n const property = propertiesStore.properties.find(\n (p) => p.id === propertyId\n );\n propertyReports.property = property;\n return propertyReports;\n })\n // Filter out property reports that don't have a property.\n .filter((propertyReports) => propertyReports.property)\n // Filter out property reports where a report block does not appear in the users blocks.\n .filter((propertyReports) => {\n const reports = propertyReports.reports;\n if (reports.length === 0) return true;\n const blockNames = reports.map((report) =>\n report.Key.split('_')[2].replace(/\\s/g, '')\n );\n const property_id = propertyReports.property_id;\n const blockClusters =\n userBlocks.find(\n (userBlock) => userBlock.property_id === property_id\n )?.block_clusters || [];\n return blockClusters.some((cluster) => {\n const primaryGaBlock = cluster.primary_ga_block;\n const feature = JSON.parse(primaryGaBlock.geojson_feature);\n const blockName = feature.properties.details.block.replace(\n /\\s/g,\n ''\n );\n return blockNames.includes(blockName);\n });\n })\n // Sort by whether the property has latest reports.\n .sort((a, b) => {\n const aHasLatestReports = a.reports.length > 0;\n const bHasLatestReports = b.reports.length > 0;\n if (aHasLatestReports && !bHasLatestReports) return -1;\n if (!aHasLatestReports && bHasLatestReports) return 1;\n return 0;\n }),\n [propertiesStore.properties, userBlocks, userReports]\n );\n\n return (\n <Card className='mt-2'>\n <Card.Header onClick={handleClick} className='text-center'>\n {showResults ? (\n <Fragment>\n Precision Hort Results\n <br />\n </Fragment>\n ) : null}\n <small>\n <FontAwesomeIcon icon={faListAlt} /> {showResults ? 'Hide' : 'Show'}{' '}\n Results\n </small>\n </Card.Header>\n <Collapse in={showResults}>\n <div>\n {propertiesReports.map((propertyReports) => {\n const property = propertyReports.property;\n const reports = propertyReports.reports;\n const hasLastestReports = reports.length > 0;\n return (\n <Row\n key={propertyReports.property_id}\n className='my-2 mx-1 p-0'\n noGutters\n >\n <Col xs={12} className='bg-light'>\n <Row noGutters style={{ minHeight: '65px' }}>\n <Col\n xs={1}\n className={\n hasLastestReports ? 'bg-primary' : 'bg-secondary'\n }\n />\n <Col xs={8} className='py-2 pl-3 pr-0'>\n <Row>\n <Col>\n <b>{property.name}</b>\n </Col>\n </Row>\n {reports.map((report) => {\n const reportKey = report.Key;\n const parts = reportKey.split('_');\n const blockName = parts[2];\n const stage = parts[4];\n const stageName = stages.find(\n (s) => s.value === stage\n )?.label;\n const date = moment(parts[7]).format('DD/MM/YYYY');\n return (\n <Row key={reportKey}>\n <Col>{`${blockName}: ${stageName} report - ${date}`}</Col>\n </Row>\n );\n })}\n </Col>\n <Col\n xs={3}\n className='d-flex align-items-center justify-content-end pr-3'\n >\n <Button\n variant='outline-primary'\n className='float-right'\n onClick={() => {\n const blockName =\n reports.length > 0\n ? reports[0].Key.split('_')[2]\n : undefined;\n const url = '/precision-hort/block-scanning-reports';\n history.push(\n blockName ? `${url}?block=${blockName}` : url\n );\n window.scroll(0, 0);\n propertiesStore.setSelectedProperty(property.id);\n }}\n >\n <FontAwesomeIcon icon={faArrowRight} />\n </Button>\n </Col>\n </Row>\n </Col>\n </Row>\n );\n })}\n </div>\n </Collapse>\n </Card>\n );\n};\n\nPropertiesReports.propTypes = {\n userReports: PropTypes.array.isRequired\n};\n\nexport default observer(PropertiesReports);\n\n","import { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport { useContext, useMemo } from 'react';\nimport { Col, Container, Row, Spinner } from 'react-bootstrap';\nimport { storesContext } from '../../../stores/storesContext';\nimport useUserBlocks from '../../helpers/hooks/useUserBlocks';\nimport useUserReports from '../../helpers/hooks/useUserReports';\nimport DashboardMap from './DashboardMap';\nimport PropertiesReports from './PropertiesReports';\n\nconst BlockScanningDashboard = (props) => {\n const userStore = useContext(storesContext);\n const propertiesStore = userStore.propertiesStore;\n const userBlocks = useUserBlocks();\n const userReports = useUserReports();\n\n const propertiesLoading = propertiesStore.loading;\n\n const blocksFeatures = useMemo(\n () =>\n userBlocks.flatMap((block) => {\n const features = [];\n const blockClusters = block.block_clusters;\n blockClusters.forEach((blockCluster) => {\n const feature = JSON.parse(\n blockCluster.primary_ga_block.geojson_feature\n );\n const reports = userReports.find(\n (report) => report.property_id === block.property_id\n );\n const property = propertiesStore.properties.find(\n (property) => property.id === block.property_id\n );\n feature.properties.has_reports = reports?.reports.length > 0;\n feature.properties.property = {\n id: property?.id || '-',\n name: property?.name || '-',\n identifier: property?.identifier || '-'\n };\n features.push(feature);\n });\n return [...features];\n }),\n [propertiesStore.properties, userBlocks, userReports]\n );\n\n return props.loading ? (\n <div className='d-flex justify-content-center pt-5'>\n <Spinner animation='border' variant='primary' />\n </div>\n ) : (\n <Container className='p-0'>\n <Row className='mt-4' style={{ height: '400px' }}>\n <Col>\n <DashboardMap features={blocksFeatures} />\n </Col>\n </Row>\n <Row>\n <Col>\n {propertiesLoading ? (\n <div className='text-center'>\n <Spinner className='my-4' animation='border' variant='primary' />\n </div>\n ) : (\n <PropertiesReports\n userReports={userReports}\n userBlocks={userBlocks}\n />\n )}\n </Col>\n </Row>\n </Container>\n );\n};\n\nBlockScanningDashboard.propTypes = {\n loading: PropTypes.bool.isRequired\n};\n\nexport default observer(BlockScanningDashboard);\n\n","import React, { useEffect, useState } from 'react';\nimport { Badge } from 'react-bootstrap';\n\nconst IrrigationLegend = ({ propertySummaries, ...otherProps }) => {\n const [success, setSuccess] = useState();\n const [warning, setWarning] = useState();\n const [danger, setDanger] = useState();\n const [secondary, setSecondary] = useState();\n const [primary, setPrimary] = useState();\n\n useEffect(() => {\n if (propertySummaries) {\n let successCount = 0;\n let warningCount = 0;\n let dangerCount = 0;\n let secondaryCount = 0;\n let primaryCount = 0;\n propertySummaries.forEach((propertySummary) => {\n switch (propertySummary.maxLevel) {\n case 1:\n successCount += 1;\n break;\n case 2:\n warningCount += 1;\n break;\n case 3:\n dangerCount += 1;\n break;\n case 4:\n primaryCount += 1;\n break;\n default:\n secondaryCount += 1;\n break;\n }\n });\n\n setSuccess(successCount);\n setWarning(warningCount);\n setDanger(dangerCount);\n setSecondary(secondaryCount);\n setPrimary(primaryCount);\n }\n }, [propertySummaries]);\n\n return (\n <div {...otherProps}>\n <Badge pill variant='success' className='mx-1'>\n Within Strategy {success ? <>({success})</> : ''}\n </Badge>\n <Badge pill variant='warning' className='mx-1'>\n Outside Strategy {warning ? <>({warning})</> : ''}\n </Badge>\n <Badge pill variant='danger' className='mx-1'>\n Attention Required {danger ? <>({danger})</> : ''}\n </Badge>\n <Badge pill variant='primary' className='mx-1'>\n Above Full Point {primary ? <>({primary})</> : ''}\n </Badge>\n <Badge pill variant='secondary' className='mx-1'>\n No Data {secondary ? <>({secondary})</> : ''}\n </Badge>\n <Badge pill variant='light' className='mx-1'>\n <img\n className='mr-1'\n src='https://fruition-metwatch-assets.s3-ap-southeast-2.amazonaws.com/sentek-logo-16.png'\n alt='sentek-logo'\n />{' '}\n IrriMAX Continuous\n </Badge>\n </div>\n );\n};\n\nexport default IrrigationLegend;\n\n","/**\n * Returns the soil moisture percentage value for a site.\n *\n * The calculation finds the percentage of summary.latest_reading_date_rz1\n * within the range of the refill point to the full point.\n *\n * @param {object} summary\n * @returns {(number|null)}\n */\nexport const CalculateSiteSoilMoisture = (summary) => {\n return summary\n ? (summary.latest_reading_date_rz1 - summary.refill_point) /\n (summary.full_point - summary.refill_point)\n : null;\n};\n\n/**\n * Returns a number between 1 and 3\n * - 1 = Green (Site summary is looking good)\n * - 2 = Orange (Site summary warning)\n * - 3 = Red (Site needs action)\n *\n * @param {object} summary\n * @returns {number}\n */\nexport const CalculateSiteSummaryLevel = (summary) => {\n let outsiteLimits = false;\n let outsiteStrategy = false;\n let aboveLimits = false;\n\n if (\n summary.latest_reading_date_rz1 > summary.full_point ||\n summary.latest_reading_date_rz1 < summary.refill_point\n ) {\n if (summary.latest_reading_date_rz1 > summary.full_point) {\n aboveLimits = true;\n }\n outsiteLimits = true;\n }\n\n if (\n summary.latest_reading_date_rz1 > summary.strategy_max ||\n summary.latest_reading_date_rz1 < summary.strategy_min\n )\n outsiteStrategy = true;\n\n return outsiteStrategy && outsiteLimits\n ? aboveLimits\n ? 4\n : 3\n : !outsiteStrategy && outsiteLimits\n ? 2\n : outsiteStrategy && !outsiteLimits\n ? 2\n : 1;\n};\n\nexport const SummaryBootstrapColorClass = (siteResults) => {\n const summaryLevel = siteResults.alert_level;\n const fullPoint = siteResults.full_point;\n const latestReading = siteResults.latest_reading.rz1;\n if (summaryLevel === 3 && latestReading > fullPoint) {\n return 'primary';\n }\n\n return summaryLevel === 3\n ? 'danger'\n : summaryLevel === 2\n ? 'warning'\n : 'success';\n};\n\nexport const SummaryBootstrapColorClassLevel = (level) => {\n return level === 4\n ? 'primary'\n : level === 3\n ? 'danger'\n : level === 2\n ? 'warning'\n : 'success';\n};\n\nexport const AlertLevelLabel = (alertLevel) =>\n alertLevel === 4\n ? 'Above Full Point'\n : alertLevel === 3\n ? 'Attention Required'\n : alertLevel === 2\n ? 'Outside Strategy'\n : 'Within Strategy';\n\nexport const formatSiteType = (type) => {\n if (type === 'irrimax') {\n return 'IrriMAX Continuous';\n } else if (type === 'terraprobe') {\n return 'Weekly';\n } else {\n return type;\n }\n};\n\nexport const openIrrimaxWindow = (url) => {\n window.open(url, '_blank', 'width=800,height=600').focus();\n};\n\nexport const openIrrimaxTab = (url) => {\n window.open(url, '_blank').focus();\n};\n\nexport const openIrrimaxCurrentTab = (url) => {\n window.open(url, '_self').focus();\n};\n\n","import { observer } from 'mobx-react';\nimport moment from 'moment';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { Alert } from 'react-bootstrap';\nimport URI from 'urijs';\nimport { storesContext } from '../../stores/storesContext';\nimport LoadingOverlay from '../LoadingOverlay';\nimport { CalculateSiteSummaryLevel } from './helpers';\n\n// This is a hack to stop an error where there is no default export.\nexport default {};\n\nconst getSelectedSeason = async (startYear) => {\n return fetch(`${process.env.REACT_APP_TERRAPROBE_API_URL}api/season`)\n .then((res) => {\n if (res.ok) return res.json();\n else throw new Error(res.statusText);\n })\n .then((data) => {\n return data.find((season) => {\n const dt = moment(season.season_date, 'DD-MM-YYYY');\n return dt.year() == startYear;\n });\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n });\n};\n\nexport const withIrrigationSummaries = (Component) =>\n observer((props) => {\n const { properties, ...passThroughProps } = props;\n\n const userStore = useContext(storesContext);\n\n const [propertySummaries, setPropertySummaries] = useState([]);\n\n // Used to compare if any meaningful changes were made to properties\n // We used to get these reloaded twice on the dashboard when initially\n // logging in. See issue #14 on fruition-portal for more info.\n const [prevProperties, setPrevProperties] = useState(null);\n\n const loadAllData = async () => {\n // Attempt to find the selected season\n const terraprobeSeason = await getSelectedSeason(\n userStore.selectedDatabaseStartYear\n );\n\n if (!terraprobeSeason) {\n setPropertySummaries([]);\n return;\n }\n\n // Check that a meaningful change was made to the proeprties\n const different = properties.find((property) => {\n const prevProperty = Array.isArray(prevProperties)\n ? prevProperties.find((p) => p.id === property.id)\n : null;\n\n if (!prevProperty) return true;\n\n // We want to compare the entire property, except the permissions\n // which are what caused the unecessary reload.\n let a = { ...prevProperty };\n let b = { ...property };\n delete a.user_permissions;\n delete a.user_properties;\n delete b.user_permissions;\n delete b.user_properties;\n\n // Simply compare using the JSON string\n if (JSON.stringify(a) !== JSON.stringify(b)) return true;\n\n return false;\n });\n\n setPrevProperties(properties);\n if (!different) return;\n\n // Clear property summaries to avoid any duplicates\n setPropertySummaries([]);\n\n // Load a summary for each property\n properties.forEach((property) => {\n if (property.irrigation_monitoring_sites.length < 1) {\n setPropertySummaries((prevPropertySummaries) => [\n ...prevPropertySummaries,\n {\n property: property,\n loading: false,\n results: null,\n maxLevel: 1\n }\n ]);\n } else {\n setPropertySummaries((prevPropertySummaries) => [\n ...prevPropertySummaries,\n {\n property: property,\n loading: true,\n results: null,\n maxLevel: 1\n }\n ]);\n\n const uri = new URI(\n `${process.env.REACT_APP_TERRAPROBE_API_URL}graphs/api/v3/fruition_summary/${terraprobeSeason.id}/sites_summary/`\n );\n uri.setQuery(\n 'sites[]',\n property.irrigation_monitoring_sites.map(\n (irrigationMonitoringSite) => irrigationMonitoringSite.site_number\n )\n );\n\n fetch(uri.toString(), {\n method: 'GET'\n })\n .then((res) => {\n if (res.ok) return res.json();\n else throw Error(res.statusText);\n })\n .then((data) => {\n setPropertySummaries((prevPropertySummaries) => {\n const newPropertySummaries = [...prevPropertySummaries];\n const i = newPropertySummaries.findIndex(\n (propertySummary) =>\n propertySummary.property.id === property.id\n );\n if (i > -1) {\n newPropertySummaries[i].loading = false;\n newPropertySummaries[i].results = data;\n\n let maxLevel = 1;\n data.sites.forEach((result) => {\n const level = CalculateSiteSummaryLevel(result);\n if (maxLevel === null) maxLevel = level;\n else if (level > maxLevel) maxLevel = level;\n });\n newPropertySummaries[i].maxLevel = maxLevel;\n }\n return newPropertySummaries;\n });\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setPropertySummaries((prevPropertySummaries) => {\n const newPropertySummaries = [...prevPropertySummaries];\n const i = newPropertySummaries.findIndex(\n (propertySummary) =>\n propertySummary.property.id === property.id\n );\n if (i > -1) {\n newPropertySummaries[i].loading = false;\n newPropertySummaries[i].results = null;\n newPropertySummaries[i].maxLevel = 1;\n }\n return newPropertySummaries;\n });\n });\n }\n });\n };\n\n useEffect(() => {\n loadAllData();\n }, [properties, userStore.bearerToken, userStore.selectedDatabase]);\n\n const orderedPropertySummaries = useMemo(() => {\n // Split into levels\n const levels = {};\n propertySummaries.forEach((propertySummary) => {\n if (\n !Object.keys(levels).some(\n (level) => parseInt(level) === propertySummary.maxLevel\n )\n ) {\n levels[propertySummary.maxLevel] = [propertySummary];\n } else {\n levels[propertySummary.maxLevel].push(propertySummary);\n }\n });\n\n // Sort levels\n const levelKeys = Object.keys(levels).map((level) => parseInt(level));\n levelKeys.sort((a, b) => {\n let _a = a;\n let _b = b;\n // If alertlevel 4, then set to lowest alert level.\n // This level is 0 as the actual lowest is 1.\n // The purpose of this is to display 'blue' last as it's the lowest alert level.\n if (a === 4) _a = 0;\n if (b === 4) _b = 0;\n return _b - _a;\n });\n\n // Return each level sorted by alphabetical order\n return levelKeys.flatMap((key) =>\n levels[key].sort((a, b) => {\n const stringA = a.property.name.toLowerCase();\n const stringB = b.property.name.toLowerCase();\n if (stringA < stringB) return -1;\n else if (stringA > stringB) return 1;\n else return 0;\n })\n );\n }, [propertySummaries]);\n\n return (\n <Component\n propertySummaries={orderedPropertySummaries}\n {...passThroughProps}\n />\n );\n });\n\n/**\n * Loads all terraprobe data for the selected property and renders the\n * supplied component with the loaded data as props.\n */\nexport const withIrrigationMonitoringSites = (Component) =>\n observer((props) => {\n const { ...passThroughProps } = props;\n const userStore = useContext(storesContext);\n\n // The error boundary is not triggered by asynchronous errors, so if an asynchronous function\n // catches an error this is set. An error will be thrown before rendering if this is not null.\n const [error, setError] = useState(null);\n\n const [loading, setLoading] = useState(true);\n const [siteSummaries, setSiteSummaries] = useState([]);\n const [siteSeasons, setSiteSeasons] = useState({});\n const [siteReadings, setSiteReadings] = useState({});\n const [siteStrategies, setSiteStrategies] = useState({});\n\n /**\n * Loads the following data for each site\n * - summary (There is no documentation for this route)\n * - seasons (https://staging.terraprobe.mahal.co.nz/docs/#graphs-api-vsw_date-read)\n * - readings (https://staging.terraprobe.mahal.co.nz/docs/#graphs-api-vsw_reading-read)\n * - strategy (https://staging.terraprobe.mahal.co.nz/docs/#graphs-api-vsw_reading-read)\n */\n const loadAllData = async () => {\n setLoading(true);\n\n // Initialize new state\n let newSiteSummaries = [];\n const newSiteSeasons = {};\n const newSiteReadings = {};\n const newSiteStrategies = {};\n\n // Attempt to find the selected season\n const terraprobeSeason = await getSelectedSeason(\n userStore.selectedDatabaseStartYear\n );\n\n // If the selected season doesn't exist in terraprobe then clear the results\n if (!terraprobeSeason) {\n setSiteSummaries(newSiteSummaries);\n setSiteSeasons(newSiteSeasons);\n setSiteReadings(newSiteReadings);\n setSiteStrategies(newSiteStrategies);\n\n setLoading(false);\n return;\n }\n\n // Site Dates\n await Promise.all([\n ...userStore.propertiesStore.selectedProperty.irrigation_monitoring_sites.map(\n (site) => {\n return fetch(\n `${process.env.REACT_APP_TERRAPROBE_API_URL}graphs/api/v2/vsw_date/${terraprobeSeason.id}/${site.site_number}/?format=json`,\n {\n method: 'GET'\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data.length > 0) newSiteSeasons[site.id] = data[0];\n })\n .catch((err) => {\n setError(err);\n });\n }\n )\n ]);\n\n // Site summaries\n const uri = new URI(\n `${process.env.REACT_APP_TERRAPROBE_API_URL}graphs/api/v3/fruition_summary/${terraprobeSeason.id}/sites_summary/`\n );\n uri.setQuery(\n 'sites[]',\n userStore.propertiesStore.selectedProperty.irrigation_monitoring_sites.map(\n (irrigationMonitoringSite) => irrigationMonitoringSite.site_number\n )\n );\n\n await fetch(uri.toString(), {\n method: 'GET'\n })\n .then((res) => {\n if (res.ok) return res.json();\n else throw Error(res.statusText);\n })\n .then((data) => {\n newSiteSummaries = data.sites;\n })\n .catch((err) => {\n setError(err);\n });\n\n // Site readings\n await Promise.all([\n ...Object.keys(newSiteSeasons)\n .map((siteId) => {\n const site =\n userStore.propertiesStore.selectedProperty.irrigation_monitoring_sites.find(\n (s) => s.id == siteId\n );\n\n if (site) {\n return fetch(\n `${process.env.REACT_APP_TERRAPROBE_API_URL}graphs/api/vsw_reading/${site.site_number}/${newSiteSeasons[siteId].period_from}/${newSiteSeasons[siteId].period_to}/True/?format=json`\n )\n .then((res) => {\n if (res.ok) return res.json();\n else throw new Error(res.statusText);\n })\n .then((data) => {\n newSiteReadings[siteId] = data;\n })\n .catch((err) => {\n setError(err);\n });\n } else {\n return null;\n }\n })\n .filter((res) => res !== null)\n ]);\n\n // Site strategies\n await Promise.all([\n ...Object.keys(newSiteSeasons)\n .map((siteId) => {\n const site =\n userStore.propertiesStore.selectedProperty.irrigation_monitoring_sites.find(\n (s) => s.id == siteId\n );\n if (site) {\n return fetch(\n `${process.env.REACT_APP_TERRAPROBE_API_URL}graphs/api/vsw_strategy/${site.site_number}/${newSiteSeasons[siteId].period_from}/${newSiteSeasons[siteId].period_to}/?format=json`\n )\n .then((res) => {\n if (res.ok) return res.json();\n else throw Error(res.statusText);\n })\n .then((data) => {\n newSiteStrategies[site.id] = data;\n })\n .catch((err) => {\n setError(err);\n });\n } else {\n return null;\n }\n })\n .filter((res) => res !== null)\n ]);\n\n // Update state\n setSiteSummaries(newSiteSummaries);\n setSiteSeasons(newSiteSeasons);\n setSiteReadings(newSiteReadings);\n setSiteStrategies(newSiteStrategies);\n\n setLoading(false);\n };\n\n useEffect(() => {\n if (\n !userStore.propertiesStore.loading &&\n userStore.propertiesStore.selectedPropertyId !== null\n ) {\n loadAllData();\n }\n }, [\n userStore.bearerToken,\n userStore.selectedDatabase,\n userStore.propertiesStore.loading,\n userStore.propertiesStore.selectedPropertyId\n ]);\n\n if (error) throw error;\n\n return userStore.propertiesStore.loading ? (\n <LoadingOverlay hideOpacity />\n ) : !userStore.propertiesStore.selectedProperty ? (\n <Alert variant='warning'>Please select a property</Alert>\n ) : loading ? (\n <LoadingOverlay hideOpacity />\n ) : !siteSummaries || !siteSeasons || !siteReadings || !siteStrategies ? (\n <Alert variant='danger'>\n Something went wrong loading the irrigation data.\n </Alert>\n ) : (\n <Component\n siteSummaries={siteSummaries}\n siteSeasons={siteSeasons}\n siteReadings={siteReadings}\n siteStrategies={siteStrategies}\n {...passThroughProps}\n />\n );\n });\n\n","/**\r\n * Common utilities\r\n * @module glMatrix\r\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\r\n * Sets the type of array used when creating new vectors and matrices\r\n *\r\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\r\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\r\n * Convert Degree To Radian\r\n *\r\n * @param {Number} a Angle in Degrees\r\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\r\n * Tests whether or not the arguments have approximately the same value, within an absolute\r\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\r\n * than or equal to 1.0, and a relative tolerance is used for larger values)\r\n *\r\n * @param {Number} a The first number to test.\r\n * @param {Number} b The second number to test.\r\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\r\n * 4 Dimensional Vector\r\n * @module vec4\r\n */\n\n/**\r\n * Creates a new, empty vec4\r\n *\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec4 initialized with values from an existing vector\r\n *\r\n * @param {ReadonlyVec4} a vector to clone\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Creates a new vec4 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\r\n * Copy the values from one vec4 to another\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the source vector\r\n * @returns {vec4} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Set the components of a vec4 to the given values\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} out\r\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\r\n * Adds two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\r\n * Multiplies two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\r\n * Divides two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to ceil\r\n * @returns {vec4} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to floor\r\n * @returns {vec4} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\r\n * Math.round the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to round\r\n * @returns {vec4} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\r\n * Scales a vec4 by a scalar number\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec4} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\r\n * Adds two vec4's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec4} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec4's\r\n *\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec4's\r\n *\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\r\n * Calculates the length of a vec4\r\n *\r\n * @param {ReadonlyVec4} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\r\n * Calculates the squared length of a vec4\r\n *\r\n * @param {ReadonlyVec4} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\r\n * Negates the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to negate\r\n * @returns {vec4} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to invert\r\n * @returns {vec4} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\r\n * Normalize a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to normalize\r\n * @returns {vec4} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec4's\r\n *\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\r\n * Returns the cross-product of three vectors in a 4-dimensional space\r\n *\r\n * @param {ReadonlyVec4} result the receiving vector\r\n * @param {ReadonlyVec4} U the first vector\r\n * @param {ReadonlyVec4} V the second vector\r\n * @param {ReadonlyVec4} W the third vector\r\n * @returns {vec4} result\r\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec4} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec4} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\r\n * Transforms the vec4 with a mat4.\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the vector to transform\r\n * @param {ReadonlyMat4} m matrix to transform with\r\n * @returns {vec4} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\r\n * Transforms the vec4 with a quat\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the vector to transform\r\n * @param {ReadonlyQuat} q quaternion to transform with\r\n * @returns {vec4} out\r\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\r\n * Set the components of a vec4 to zero\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @returns {vec4} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {ReadonlyVec4} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {ReadonlyVec4} a The first vector.\r\n * @param {ReadonlyVec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {ReadonlyVec4} a The first vector.\r\n * @param {ReadonlyVec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\r\n * Alias for {@link vec4.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec4.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec4.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec4.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec4.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec4.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec4.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec4s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","import * as vec4 from 'gl-matrix/vec4';\n\n// Helper, avoids low-precision 32 bit matrices from gl-matrix mat4.create()\nexport function createMat4() {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\n\n// Transforms a vec4 with a projection matrix\nexport function transformVector(matrix, vector) {\n const result = vec4.transformMat4([], vector, matrix);\n vec4.scale(result, result, 1 / result[3]);\n return result;\n}\n\nexport function mod(value, divisor) {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\n\nexport function lerp(start, end, step) {\n return step * end + (1 - step) * start;\n}\n\nexport function clamp(x, min, max) {\n return x < min ? min : x > max ? max : x;\n}\n\nfunction ieLog2(x) {\n return Math.log(x) * Math.LOG2E;\n}\n// Handle missing log2 in IE 11\nexport const log2 = Math.log2 || ieLog2;\n","import * as glMatrix from \"./common.js\";\n/**\r\n * 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\r\n * @module mat4\r\n */\n\n/**\r\n * Creates a new identity mat4\r\n *\r\n * @returns {mat4} a new 4x4 matrix\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a new mat4 initialized with values from an existing matrix\r\n *\r\n * @param {ReadonlyMat4} a matrix to clone\r\n * @returns {mat4} a new 4x4 matrix\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Copy the values from one mat4 to another\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Create a new mat4 with the given values\r\n *\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} A new mat4\r\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\r\n * Set the components of a mat4 to the given values\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} out\r\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\r\n * Set a mat4 to the identity matrix\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @returns {mat4} out\r\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Transpose the values of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\r\n * Inverts a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\r\n * Calculates the adjugate of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\r\n * Calculates the determinant of a mat4\r\n *\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {Number} determinant of a\r\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\r\n * Multiplies two mat4s\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the first operand\r\n * @param {ReadonlyMat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\r\n * Translate a mat4 by the given vector\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to translate\r\n * @param {ReadonlyVec3} v vector to translate by\r\n * @returns {mat4} out\r\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\r\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to scale\r\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\r\n * @returns {mat4} out\r\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Rotates a mat4 by the given angle around the given axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {ReadonlyVec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the X axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the Y axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the Z axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\r\n * Creates a matrix from a vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {ReadonlyVec3} v Translation vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a vector scaling\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.scale(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {ReadonlyVec3} v Scaling vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a given angle around a given axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotate(dest, dest, rad, axis);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {ReadonlyVec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the X axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateX(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the Y axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateY(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the Z axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateZ(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation and vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {ReadonlyVec3} v Translation vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a new mat4 from a dual quat.\r\n *\r\n * @param {mat4} out Matrix\r\n * @param {ReadonlyQuat2} a Dual Quaternion\r\n * @returns {mat4} mat4 receiving operation result\r\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\r\n * Returns the translation vector component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslation,\r\n * the returned vector will be the same as the translation vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive translation component\r\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\r\n * Returns the scaling factor component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslationScale\r\n * with a normalized Quaternion paramter, the returned vector will be\r\n * the same as the scaling vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive scaling factor component\r\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\r\n * Returns a quaternion representing the rotational component\r\n * of a transformation matrix. If a matrix is built with\r\n * fromRotationTranslation, the returned quaternion will be the\r\n * same as the quaternion originally supplied.\r\n * @param {quat} out Quaternion to receive the rotation component\r\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\r\n * @return {quat} out\r\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {ReadonlyVec3} v Translation vector\r\n * @param {ReadonlyVec3} s Scaling vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * mat4.translate(dest, origin);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n * mat4.translate(dest, negativeOrigin);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {ReadonlyVec3} v Translation vector\r\n * @param {ReadonlyVec3} s Scaling vector\r\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\r\n * Calculates a 4x4 matrix from the given quaternion\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {ReadonlyQuat} q Quaternion to create matrix from\r\n *\r\n * @returns {mat4} out\r\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a frustum matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Number} left Left bound of the frustum\r\n * @param {Number} right Right bound of the frustum\r\n * @param {Number} bottom Bottom bound of the frustum\r\n * @param {Number} top Top bound of the frustum\r\n * @param {Number} near Near bound of the frustum\r\n * @param {Number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\r\n * Generates a perspective projection matrix with the given bounds.\r\n * Passing null/undefined/no value for far will generate infinite projection matrix.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} fovy Vertical field of view in radians\r\n * @param {number} aspect Aspect ratio. typically viewport width/height\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum, can be null or Infinity\r\n * @returns {mat4} out\r\n */\n\nexport function perspective(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\r\n * Generates a perspective projection matrix with the given field of view.\r\n * This is primarily useful for generating projection matrices to be used\r\n * with the still experiemental WebVR API.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\r\n * Generates a orthogonal projection matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} left Left bound of the frustum\r\n * @param {number} right Right bound of the frustum\r\n * @param {number} bottom Bottom bound of the frustum\r\n * @param {number} top Top bound of the frustum\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function ortho(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\r\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {ReadonlyVec3} eye Position of the viewer\r\n * @param {ReadonlyVec3} center Point the viewer is looking at\r\n * @param {ReadonlyVec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a matrix that makes something look at something else.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {ReadonlyVec3} eye Position of the viewer\r\n * @param {ReadonlyVec3} center Point the viewer is looking at\r\n * @param {ReadonlyVec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\r\n * Returns a string representation of a mat4\r\n *\r\n * @param {ReadonlyMat4} a matrix to represent as a string\r\n * @returns {String} string representation of the matrix\r\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\r\n * Returns Frobenius norm of a mat4\r\n *\r\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\r\n * @returns {Number} Frobenius norm\r\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\r\n * Adds two mat4's\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the first operand\r\n * @param {ReadonlyMat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\r\n * Subtracts matrix b from matrix a\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the first operand\r\n * @param {ReadonlyMat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\r\n * Multiply each element of the matrix by a scalar.\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to scale\r\n * @param {Number} b amount to scale the matrix's elements by\r\n * @returns {mat4} out\r\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\r\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\r\n *\r\n * @param {mat4} out the receiving vector\r\n * @param {ReadonlyMat4} a the first operand\r\n * @param {ReadonlyMat4} b the second operand\r\n * @param {Number} scale the amount to scale b's elements by before adding\r\n * @returns {mat4} out\r\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\r\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {ReadonlyMat4} a The first matrix.\r\n * @param {ReadonlyMat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\r\n * Returns whether or not the matrices have approximately the same elements in the same position.\r\n *\r\n * @param {ReadonlyMat4} a The first matrix.\r\n * @param {ReadonlyMat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\r\n * Alias for {@link mat4.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link mat4.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\r\n * 2 Dimensional Vector\r\n * @module vec2\r\n */\n\n/**\r\n * Creates a new, empty vec2\r\n *\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec2 initialized with values from an existing vector\r\n *\r\n * @param {ReadonlyVec2} a vector to clone\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\r\n * Creates a new vec2 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\r\n * Copy the values from one vec2 to another\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the source vector\r\n * @returns {vec2} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\r\n * Set the components of a vec2 to the given values\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} out\r\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\r\n * Adds two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\r\n * Multiplies two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\r\n * Divides two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to ceil\r\n * @returns {vec2} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to floor\r\n * @returns {vec2} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\r\n * Math.round the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to round\r\n * @returns {vec2} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\r\n * Scales a vec2 by a scalar number\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec2} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\r\n * Adds two vec2's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec2} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec2's\r\n *\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec2's\r\n *\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\r\n * Calculates the length of a vec2\r\n *\r\n * @param {ReadonlyVec2} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\r\n * Calculates the squared length of a vec2\r\n *\r\n * @param {ReadonlyVec2} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\r\n * Negates the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to negate\r\n * @returns {vec2} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to invert\r\n * @returns {vec2} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\r\n * Normalize a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to normalize\r\n * @returns {vec2} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec2's\r\n *\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\r\n * Computes the cross product of two vec2's\r\n * Note that the cross product must by definition produce a 3D vector\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec2} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec2} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to transform\r\n * @param {ReadonlyMat2} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat2d\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to transform\r\n * @param {ReadonlyMat2d} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat3\r\n * 3rd vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to transform\r\n * @param {ReadonlyMat3} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat4\r\n * 3rd vector component is implicitly '0'\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to transform\r\n * @param {ReadonlyMat4} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\r\n * Rotate a 2D vector\r\n * @param {vec2} out The receiving vec2\r\n * @param {ReadonlyVec2} a The vec2 point to rotate\r\n * @param {ReadonlyVec2} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec2} out\r\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\r\n * Get the angle between two 2D vectors\r\n * @param {ReadonlyVec2} a The first operand\r\n * @param {ReadonlyVec2} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\r\n * Set the components of a vec2 to zero\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @returns {vec2} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {ReadonlyVec2} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\r\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\r\n *\r\n * @param {ReadonlyVec2} a The first vector.\r\n * @param {ReadonlyVec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {ReadonlyVec2} a The first vector.\r\n * @param {ReadonlyVec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\r\n * Alias for {@link vec2.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec2.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec2.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec2.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec2.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec2.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec2.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec2s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\r\n * 3 Dimensional Vector\r\n * @module vec3\r\n */\n\n/**\r\n * Creates a new, empty vec3\r\n *\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec3 initialized with values from an existing vector\r\n *\r\n * @param {ReadonlyVec3} a vector to clone\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\r\n * Calculates the length of a vec3\r\n *\r\n * @param {ReadonlyVec3} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\r\n * Creates a new vec3 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\r\n * Copy the values from one vec3 to another\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the source vector\r\n * @returns {vec3} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\r\n * Set the components of a vec3 to the given values\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} out\r\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\r\n * Adds two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\r\n * Multiplies two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\r\n * Divides two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to ceil\r\n * @returns {vec3} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to floor\r\n * @returns {vec3} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\r\n * Math.round the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to round\r\n * @returns {vec3} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\r\n * Scales a vec3 by a scalar number\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec3} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\r\n * Adds two vec3's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec3} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec3's\r\n *\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec3's\r\n *\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\r\n * Calculates the squared length of a vec3\r\n *\r\n * @param {ReadonlyVec3} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\r\n * Negates the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to negate\r\n * @returns {vec3} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to invert\r\n * @returns {vec3} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\r\n * Normalize a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to normalize\r\n * @returns {vec3} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec3's\r\n *\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\r\n * Computes the cross product of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\r\n * Performs a hermite interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @param {ReadonlyVec3} c the third operand\r\n * @param {ReadonlyVec3} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\r\n * Performs a bezier interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @param {ReadonlyVec3} c the third operand\r\n * @param {ReadonlyVec3} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec3} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\r\n * Transforms the vec3 with a mat4.\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the vector to transform\r\n * @param {ReadonlyMat4} m matrix to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\r\n * Transforms the vec3 with a mat3.\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the vector to transform\r\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\r\n * Transforms the vec3 with a quat\r\n * Can also be used for dual quaternions. (Multiply it with the real part)\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the vector to transform\r\n * @param {ReadonlyQuat} q quaternion to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\r\n * Rotate a 3D vector around the x-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {ReadonlyVec3} a The vec3 point to rotate\r\n * @param {ReadonlyVec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Rotate a 3D vector around the y-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {ReadonlyVec3} a The vec3 point to rotate\r\n * @param {ReadonlyVec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Rotate a 3D vector around the z-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {ReadonlyVec3} a The vec3 point to rotate\r\n * @param {ReadonlyVec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Get the angle between two 3D vectors\r\n * @param {ReadonlyVec3} a The first operand\r\n * @param {ReadonlyVec3} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\r\n * Set the components of a vec3 to zero\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @returns {vec3} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {ReadonlyVec3} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {ReadonlyVec3} a The first vector.\r\n * @param {ReadonlyVec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {ReadonlyVec3} a The first vector.\r\n * @param {ReadonlyVec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\r\n * Alias for {@link vec3.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec3.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec3.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec3.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec3.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec3.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec3.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec3s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n }\n}\n","// TODO - THE UTILITIES IN THIS FILE SHOULD BE IMPORTED FROM WEB-MERCATOR-VIEWPORT MODULE\n\nimport {createMat4, transformVector, log2} from './math-utils';\n\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport assert from './assert';\n\n// CONSTANTS\nconst PI = Math.PI;\nconst PI_4 = PI / 4;\nconst DEGREES_TO_RADIANS = PI / 180;\nconst RADIANS_TO_DEGREES = 180 / PI;\nconst TILE_SIZE = 512;\n// Average circumference (40075 km equatorial, 40007 km meridional)\nconst EARTH_CIRCUMFERENCE = 40.03e6;\n// Latitude that makes a square world, 2 * atan(E ** PI) - PI / 2\nexport const MAX_LATITUDE = 85.051129;\n\n// Mapbox default altitude\nexport const DEFAULT_ALTITUDE = 1.5;\n\n/** Util functions **/\nexport function zoomToScale(zoom) {\n return Math.pow(2, zoom);\n}\n\nexport function scaleToZoom(scale) {\n return log2(scale);\n}\n\n/**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n *\n * @param lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return [x,y] coordinates.\n */\nexport function lngLatToWorld([lng, lat]) {\n assert(Number.isFinite(lng));\n assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n\n const lambda2 = lng * DEGREES_TO_RADIANS;\n const phi2 = lat * DEGREES_TO_RADIANS;\n const x = (TILE_SIZE * (lambda2 + PI)) / (2 * PI);\n const y = (TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5)))) / (2 * PI);\n return [x, y];\n}\n\n// Unproject world point [x,y] on map onto {lat, lon} on sphere\nexport function worldToLngLat([x, y]) {\n const lambda2 = (x / TILE_SIZE) * (2 * PI) - PI;\n const phi2 = 2 * (Math.atan(Math.exp((y / TILE_SIZE) * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\n\n// Returns the zoom level that gives a 1 meter pixel at a certain latitude\n// 1 = C*cos(y)/2^z/TILE_SIZE = C*cos(y)/2^(z+9)\nexport function getMeterZoom({latitude}) {\n assert(Number.isFinite(latitude));\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\n\n/**\n * Calculate distance scales in meters around current lat/lon, both for\n * degrees and pixels.\n * In mercator projection mode, the distance scales vary significantly\n * with latitude.\n */\n\nexport function getDistanceScales({latitude, longitude, highPrecision = false}) {\n assert(Number.isFinite(latitude) && Number.isFinite(longitude));\n\n const result = {};\n const worldSize = TILE_SIZE;\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n\n /**\n * Number of pixels occupied by one degree longitude around current lat/lon:\n unitsPerDegreeX = d(lngLatToWorld([lng, lat])[0])/d(lng)\n = scale * TILE_SIZE * DEGREES_TO_RADIANS / (2 * PI)\n unitsPerDegreeY = d(lngLatToWorld([lng, lat])[1])/d(lat)\n = -scale * TILE_SIZE * DEGREES_TO_RADIANS / cos(lat * DEGREES_TO_RADIANS) / (2 * PI)\n */\n const unitsPerDegreeX = worldSize / 360;\n const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n\n /**\n * Number of pixels occupied by one meter around current lat/lon:\n */\n const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n\n /**\n * LngLat: longitude -> east and latitude -> north (bottom left)\n * UTM meter offset: x -> east and y -> north (bottom left)\n * World space: x -> east and y -> south (top left)\n *\n * Y needs to be flipped when converting delta degree/meter to delta pixels\n */\n result.unitsPerMeter = [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter];\n result.metersPerUnit = [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter];\n\n result.unitsPerDegree = [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter];\n result.degreesPerUnit = [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter];\n\n /**\n * Taylor series 2nd order for 1/latCosine\n f'(a) * (x - a)\n = d(1/cos(lat * DEGREES_TO_RADIANS))/d(lat) * dLat\n = DEGREES_TO_RADIANS * tan(lat * DEGREES_TO_RADIANS) / cos(lat * DEGREES_TO_RADIANS) * dLat\n */\n if (highPrecision) {\n const latCosine2 = (DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS)) / latCosine;\n const unitsPerDegreeY2 = (unitsPerDegreeX * latCosine2) / 2;\n const altUnitsPerDegree2 = (worldSize / EARTH_CIRCUMFERENCE) * latCosine2;\n const altUnitsPerMeter2 = (altUnitsPerDegree2 / unitsPerDegreeY) * altUnitsPerMeter;\n\n result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n }\n\n // Main results, used for converting meters to latlng deltas and scaling offsets\n return result;\n}\n\n/**\n * Offset a lng/lat position by meterOffset (northing, easting)\n */\nexport function addMetersToLngLat(lngLatZ, xyz) {\n const [longitude, latitude, z0] = lngLatZ;\n const [x, y, z] = xyz;\n\n const {unitsPerMeter, unitsPerMeter2} = getDistanceScales({\n longitude,\n latitude,\n highPrecision: true\n });\n\n const worldspace = lngLatToWorld(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n\n // @ts-ignore\n const newLngLat = worldToLngLat(worldspace);\n const newZ = (z0 || 0) + (z || 0);\n\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\n\n// ATTRIBUTION:\n// view and projection matrix creation is intentionally kept compatible with\n// mapbox-gl's implementation to ensure that seamless interoperation\n// with mapbox and react-map-gl. See: https://github.com/mapbox/mapbox-gl-js\n\nexport function getViewMatrix({\n // Viewport props\n height,\n pitch,\n bearing,\n altitude,\n // Pre-calculated parameters\n scale,\n center = null\n}) {\n // VIEW MATRIX: PROJECTS MERCATOR WORLD COORDINATES\n // Note that mercator world coordinates typically need to be flipped\n //\n // Note: As usual, matrix operation orders should be read in reverse\n // since vectors will be multiplied from the right during transformation\n const vm = createMat4();\n\n // Move camera to altitude (along the pitch & bearing direction)\n mat4.translate(vm, vm, [0, 0, -altitude]);\n\n // Rotate by bearing, and then by pitch (which tilts the view)\n mat4.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n mat4.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n\n scale /= height;\n mat4.scale(vm, vm, [scale, scale, scale]);\n\n if (center) {\n mat4.translate(vm, vm, vec3.negate([], center));\n }\n\n return vm;\n}\n\n// PROJECTION MATRIX PARAMETERS\n// Variable fov (in radians)\nexport function getProjectionParameters({\n width,\n height,\n fovy = altitudeToFovy(DEFAULT_ALTITUDE),\n altitude,\n pitch = 0,\n nearZMultiplier = 1,\n farZMultiplier = 1\n}) {\n // For back-compatibility allow field of view to be\n // derived from altitude\n if (altitude !== undefined) {\n fovy = altitudeToFovy(altitude);\n }\n const halfFov = 0.5 * fovy * DEGREES_TO_RADIANS;\n const focalDistance = fovyToAltitude(fovy);\n\n // Find the distance from the center point to the center top\n // in focal distance units using law of sines.\n const pitchRadians = pitch * DEGREES_TO_RADIANS;\n const topHalfSurfaceDistance =\n (Math.sin(halfFov) * focalDistance) /\n Math.sin(Math.min(Math.max(Math.PI / 2 - pitchRadians - halfFov, 0.01), Math.PI - 0.01));\n\n // Calculate z value of the farthest fragment that should be rendered.\n const farZ = Math.sin(pitchRadians) * topHalfSurfaceDistance + focalDistance;\n\n return {\n fov: 2 * halfFov,\n aspect: width / height,\n focalDistance,\n near: nearZMultiplier,\n far: farZ * farZMultiplier\n };\n}\n\n// PROJECTION MATRIX: PROJECTS FROM CAMERA (VIEW) SPACE TO CLIPSPACE\n// To match mapbox's z buffer:\n// <= 0.28 - nearZMultiplier: 0.1, farZmultiplier: 1\n// >= 0.29 - nearZMultiplier: 1 / height, farZMultiplier: 1.01\nexport function getProjectionMatrix({\n width,\n height,\n pitch,\n altitude,\n fovy,\n nearZMultiplier,\n farZMultiplier\n}) {\n const {fov, aspect, near, far} = getProjectionParameters({\n width,\n height,\n altitude,\n fovy,\n pitch,\n nearZMultiplier,\n farZMultiplier\n });\n\n const projectionMatrix = mat4.perspective(\n [],\n fov, // fov in radians\n aspect, // aspect ratio\n near, // near plane\n far // far plane\n );\n\n return projectionMatrix;\n}\n\n// Utility function to calculate the field of view such that\n// the focal distance is equal to the ground distance. This\n// is how mapbox's z fov is calculated\nexport function altitudeToFovy(altitude) {\n return 2 * Math.atan(0.5 / altitude) * RADIANS_TO_DEGREES;\n}\n\nexport function fovyToAltitude(fovy) {\n return 0.5 / Math.tan(0.5 * fovy * DEGREES_TO_RADIANS);\n}\n\n// Project flat coordinates to pixels on screen.\nexport function worldToPixels(xyz, pixelProjectionMatrix) {\n const [x, y, z = 0] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n\n return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\n\n// Unproject pixels on screen to flat coordinates.\nexport function pixelsToWorld(xyz, pixelUnprojectionMatrix, targetZ = 0) {\n const [x, y, z] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n\n if (Number.isFinite(z)) {\n // Has depth component\n const coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n\n // since we don't know the correct projected z value for the point,\n // unproject two points to get a line and then find the point on that line with z=0\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n\n const z0 = coord0[2];\n const z1 = coord1[2];\n\n const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return vec2.lerp([], coord0, coord1, t);\n}\n","import {worldToLngLat} from './web-mercator-utils';\nimport * as vec2 from 'gl-matrix/vec2';\nimport {transformVector} from './math-utils';\n\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\n/*\n * Returns the quad at the intersection of the frustum and the given z plane\n * @param {WebMercatorViewport} viewport\n * @param {Number} z - elevation in meters\n */\nexport default function getBounds(viewport, z = 0) {\n const {width, height, unproject} = viewport;\n const unprojectOps = {targetZ: z};\n const bottomLeft = unproject([0, height], unprojectOps);\n const bottomRight = unproject([width, height], unprojectOps);\n let topLeft;\n let topRight;\n\n const halfFov = viewport.fovy\n ? 0.5 * viewport.fovy * DEGREES_TO_RADIANS\n : Math.atan(0.5 / viewport.altitude);\n const angleToGround = (90 - viewport.pitch) * DEGREES_TO_RADIANS;\n // The top plane is parallel to the ground if halfFov == angleToGround\n if (halfFov > angleToGround - 0.01) {\n // intersect with the far plane\n topLeft = unprojectOnFarPlane(viewport, 0, z);\n topRight = unprojectOnFarPlane(viewport, width, z);\n } else {\n // intersect with the top plane\n topLeft = unproject([0, 0], unprojectOps);\n topRight = unproject([width, 0], unprojectOps);\n }\n\n return [bottomLeft, bottomRight, topRight, topLeft];\n}\n\n/*\n * Find a point on the far clipping plane of the viewport\n * @param {WebMercatorViewport} viewport\n * @param {Number} x - projected x in screen space\n * @param {Number} targetZ - the elevation of the point in meters\n */\nfunction unprojectOnFarPlane(viewport, x, targetZ) {\n const {pixelUnprojectionMatrix} = viewport;\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, 0, 1, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, viewport.height, 1, 1]);\n\n const z = targetZ * viewport.distanceScales.unitsPerMeter[2];\n const t = (z - coord0[2]) / (coord1[2] - coord0[2]);\n const coord = vec2.lerp([], coord0, coord1, t);\n\n const result = worldToLngLat(coord);\n result[2] = targetZ;\n return result;\n}\n","// View and Projection Matrix calculations for mapbox-js style map view properties\nimport {createMat4} from './math-utils';\n\nimport {\n zoomToScale,\n pixelsToWorld,\n lngLatToWorld,\n worldToLngLat,\n worldToPixels,\n altitudeToFovy,\n fovyToAltitude,\n DEFAULT_ALTITUDE,\n getProjectionMatrix,\n getDistanceScales,\n getViewMatrix\n} from './web-mercator-utils';\nimport fitBounds from './fit-bounds';\nimport getBounds from './get-bounds';\n\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\n\nexport default class WebMercatorViewport {\n // eslint-disable-next-line max-statements\n constructor(\n {\n // Map state\n width,\n height,\n latitude = 0,\n longitude = 0,\n zoom = 0,\n pitch = 0,\n bearing = 0,\n altitude = null,\n fovy = null,\n position = null,\n nearZMultiplier = 0.02,\n farZMultiplier = 1.01\n } = {width: 1, height: 1}\n ) {\n // Silently allow apps to send in 0,0 to facilitate isomorphic render etc\n width = width || 1;\n height = height || 1;\n\n // `fovy` & `altitude` are independent parameters, one for the\n // projection and the latter for the view matrix. In the past,\n // the `fovy` was always derived from the `altitude`\n if (fovy === null && altitude === null) {\n altitude = DEFAULT_ALTITUDE;\n fovy = altitudeToFovy(altitude);\n } else if (fovy === null) {\n fovy = altitudeToFovy(altitude);\n } else if (altitude === null) {\n altitude = fovyToAltitude(fovy);\n }\n\n const scale = zoomToScale(zoom);\n // Altitude - prevent division by 0\n // TODO - just throw an Error instead?\n altitude = Math.max(0.75, altitude);\n\n const distanceScales = getDistanceScales({longitude, latitude});\n\n const center = lngLatToWorld([longitude, latitude]);\n center[2] = 0;\n\n if (position) {\n vec3.add(center, center, vec3.mul([], position, distanceScales.unitsPerMeter));\n }\n\n this.projectionMatrix = getProjectionMatrix({\n width,\n height,\n pitch,\n fovy,\n nearZMultiplier,\n farZMultiplier\n });\n\n this.viewMatrix = getViewMatrix({\n height,\n scale,\n center,\n pitch,\n bearing,\n altitude\n });\n\n // Save parameters\n this.width = width;\n this.height = height;\n this.scale = scale;\n\n this.latitude = latitude;\n this.longitude = longitude;\n this.zoom = zoom;\n this.pitch = pitch;\n this.bearing = bearing;\n this.altitude = altitude;\n this.fovy = fovy;\n this.center = center;\n this.meterOffset = position || [0, 0, 0];\n\n this.distanceScales = distanceScales;\n\n this._initMatrices();\n\n // Bind methods for easy access\n this.equals = this.equals.bind(this);\n this.project = this.project.bind(this);\n this.unproject = this.unproject.bind(this);\n this.projectPosition = this.projectPosition.bind(this);\n this.unprojectPosition = this.unprojectPosition.bind(this);\n\n Object.freeze(this);\n }\n\n _initMatrices() {\n const {width, height, projectionMatrix, viewMatrix} = this;\n\n // Note: As usual, matrix operations should be applied in \"reverse\" order\n // since vectors will be multiplied in from the right during transformation\n const vpm = createMat4();\n mat4.multiply(vpm, vpm, projectionMatrix);\n mat4.multiply(vpm, vpm, viewMatrix);\n this.viewProjectionMatrix = vpm;\n\n // Calculate matrices and scales needed for projection\n /**\n * Builds matrices that converts preprojected lngLats to screen pixels\n * and vice versa.\n * Note: Currently returns bottom-left coordinates!\n * Note: Starts with the GL projection matrix and adds steps to the\n * scale and translate that matrix onto the window.\n * Note: WebGL controls clip space to screen projection with gl.viewport\n * and does not need this step.\n */\n const m = createMat4();\n\n // matrix for conversion from location to screen coordinates\n mat4.scale(m, m, [width / 2, -height / 2, 1]);\n mat4.translate(m, m, [1, -1, 0]);\n mat4.multiply(m, m, vpm);\n\n const mInverse = mat4.invert(createMat4(), m);\n if (!mInverse) {\n throw new Error('Pixel project matrix not invertible');\n }\n\n this.pixelProjectionMatrix = m;\n this.pixelUnprojectionMatrix = mInverse;\n }\n\n // Two viewports are equal if width and height are identical, and if\n // their view and projection matrices are (approximately) equal.\n equals(viewport) {\n if (!(viewport instanceof WebMercatorViewport)) {\n return false;\n }\n\n return (\n viewport.width === this.width &&\n viewport.height === this.height &&\n mat4.equals(viewport.projectionMatrix, this.projectionMatrix) &&\n mat4.equals(viewport.viewMatrix, this.viewMatrix)\n );\n }\n\n // Projects xyz (possibly latitude and longitude) to pixel coordinates in window\n // using viewport projection parameters\n project(xyz, {topLeft = true} = {}) {\n const worldPosition = this.projectPosition(xyz);\n const coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n\n const [x, y] = coord;\n const y2 = topLeft ? y : this.height - y;\n return xyz.length === 2 ? [x, y2] : [x, y2, coord[2]];\n }\n\n // Unproject pixel coordinates on screen onto world coordinates,\n // (possibly [lon, lat]) on map.\n unproject(xyz, {topLeft = true, targetZ = undefined} = {}) {\n const [x, y, z] = xyz;\n\n const y2 = topLeft ? y : this.height - y;\n const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];\n const coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n const [X, Y, Z] = this.unprojectPosition(coord);\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n }\n\n // NON_LINEAR PROJECTION HOOKS\n // Used for web meractor projection\n\n projectPosition(xyz) {\n const [X, Y] = lngLatToWorld(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];\n return [X, Y, Z];\n }\n\n unprojectPosition(xyz) {\n const [X, Y] = worldToLngLat(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];\n return [X, Y, Z];\n }\n\n // Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n projectFlat(lngLat) {\n return lngLatToWorld(lngLat);\n }\n\n // Unproject world point [x,y] on map onto {lat, lon} on sphere\n unprojectFlat(xy) {\n return worldToLngLat(xy);\n }\n\n // Get the map center that place a given [lng, lat] coordinate at screen point [x, y]\n getMapCenterByLngLatPosition({lngLat, pos}) {\n const fromLocation = pixelsToWorld(pos, this.pixelUnprojectionMatrix);\n const toLocation = lngLatToWorld(lngLat);\n\n const translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n const newCenter = vec2.add([], this.center, translate);\n\n return worldToLngLat(newCenter);\n }\n\n // Legacy method name\n getLocationAtPoint({lngLat, pos}) {\n return this.getMapCenterByLngLatPosition({lngLat, pos});\n }\n\n // Returns a new viewport that fit around the given rectangle.\n fitBounds(bounds, options = {}) {\n const {width, height} = this;\n const {longitude, latitude, zoom} = fitBounds(Object.assign({width, height, bounds}, options));\n return new WebMercatorViewport({width, height, longitude, latitude, zoom});\n }\n\n getBounds(options) {\n const corners = this.getBoundingRegion(options);\n\n const west = Math.min(...corners.map((p) => p[0]));\n const east = Math.max(...corners.map((p) => p[0]));\n const south = Math.min(...corners.map((p) => p[1]));\n const north = Math.max(...corners.map((p) => p[1]));\n return [\n [west, south],\n [east, north]\n ];\n }\n\n getBoundingRegion(options = {}) {\n return getBounds(this, options.z || 0);\n }\n}\n","// @ts-nocheck TODO padding\nimport assert from './assert';\nimport {log2, clamp} from './math-utils';\nimport {MAX_LATITUDE, lngLatToWorld, worldToLngLat} from './web-mercator-utils';\n\n// Returns map settings {latitude, longitude, zoom}\n// that will contain the provided corners within the provided width.\n// Only supports non-perspective mode.\n\nexport default function fitBounds({\n width,\n height,\n bounds,\n minExtent = 0, // 0.01 would be about 1000 meters (degree is ~110KM)\n maxZoom = 24, // ~x4,000,000 => About 10 meter extents\n // options\n padding = 0,\n offset = [0, 0]\n}) {\n const [[west, south], [east, north]] = bounds;\n\n if (Number.isFinite(padding)) {\n const p = padding;\n padding = {\n top: p,\n bottom: p,\n left: p,\n right: p\n };\n } else {\n // Make sure all the required properties are set\n assert(\n Number.isFinite(padding.top) &&\n Number.isFinite(padding.bottom) &&\n Number.isFinite(padding.left) &&\n Number.isFinite(padding.right)\n );\n }\n\n const nw = lngLatToWorld([west, clamp(north, -MAX_LATITUDE, MAX_LATITUDE)]);\n const se = lngLatToWorld([east, clamp(south, -MAX_LATITUDE, MAX_LATITUDE)]);\n\n // width/height on the Web Mercator plane\n const size = [\n Math.max(Math.abs(se[0] - nw[0]), minExtent),\n Math.max(Math.abs(se[1] - nw[1]), minExtent)\n ];\n\n const targetSize = [\n width - padding.left - padding.right - Math.abs(offset[0]) * 2,\n height - padding.top - padding.bottom - Math.abs(offset[1]) * 2\n ];\n\n assert(targetSize[0] > 0 && targetSize[1] > 0);\n\n // scale = screen pixels per unit on the Web Mercator plane\n const scaleX = targetSize[0] / size[0];\n const scaleY = targetSize[1] / size[1];\n\n // Find how much we need to shift the center\n const offsetX = (padding.right - padding.left) / 2 / scaleX;\n const offsetY = (padding.bottom - padding.top) / 2 / scaleY;\n\n const center = [(se[0] + nw[0]) / 2 + offsetX, (se[1] + nw[1]) / 2 + offsetY];\n\n const centerLngLat = worldToLngLat(center);\n const zoom = Math.min(maxZoom, log2(Math.abs(Math.min(scaleX, scaleY))));\n\n assert(Number.isFinite(zoom));\n\n return {\n longitude: centerLngLat[0],\n latitude: centerLngLat[1],\n zoom\n };\n}\n","import {lerp} from './math-utils';\nimport {scaleToZoom, zoomToScale, lngLatToWorld, worldToLngLat} from './web-mercator-utils';\nimport * as vec2 from 'gl-matrix/vec2';\n\nconst EPSILON = 0.01;\nconst VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom'];\nconst DEFAULT_OPTS = {\n curve: 1.414,\n speed: 1.2\n // screenSpeed and maxDuration are used only if specified\n};\n\n/**\n * mapbox-gl-js flyTo : https://www.mapbox.com/mapbox-gl-js/api/#map#flyto.\n * It implements “Smooth and efficient zooming and panning.” algorithm by\n * \"Jarke J. van Wijk and Wim A.A. Nuij\"\n */\nexport default function flyToViewport(startProps, endProps, t, opts = {}) {\n // Equations from above paper are referred where needed.\n\n const viewport = {};\n\n const {startZoom, startCenterXY, uDelta, w0, u1, S, rho, rho2, r0} = getFlyToTransitionParams(\n startProps,\n endProps,\n opts\n );\n\n // If change in center is too small, do linear interpolaiton.\n if (u1 < EPSILON) {\n for (const key of VIEWPORT_TRANSITION_PROPS) {\n const startValue = startProps[key];\n const endValue = endProps[key];\n viewport[key] = lerp(startValue, endValue, t);\n }\n return viewport;\n }\n\n const s = t * S;\n\n const w = Math.cosh(r0) / Math.cosh(r0 + rho * s);\n const u = (w0 * ((Math.cosh(r0) * Math.tanh(r0 + rho * s) - Math.sinh(r0)) / rho2)) / u1;\n\n const scaleIncrement = 1 / w; // Using w method for scaling.\n const newZoom = startZoom + scaleToZoom(scaleIncrement);\n\n const newCenterWorld = vec2.scale([], uDelta, u);\n vec2.add(newCenterWorld, newCenterWorld, startCenterXY);\n\n const newCenter = worldToLngLat(newCenterWorld);\n viewport.longitude = newCenter[0];\n viewport.latitude = newCenter[1];\n viewport.zoom = newZoom;\n return viewport;\n}\n\n// returns transition duration in milliseconds\nexport function getFlyToDuration(startProps, endProps, opts = {}) {\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n const {screenSpeed, speed, maxDuration} = opts;\n const {S, rho} = getFlyToTransitionParams(startProps, endProps, opts);\n const length = 1000 * S;\n let duration;\n if (Number.isFinite(screenSpeed)) {\n duration = length / (screenSpeed / rho);\n } else {\n duration = length / speed;\n }\n\n return Number.isFinite(maxDuration) && duration > maxDuration ? 0 : duration;\n}\n\n// Private Methods\n\n// Calculate all parameters that are static for given startProps and endProps\nfunction getFlyToTransitionParams(startProps, endProps, opts) {\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n const rho = opts.curve;\n const startZoom = startProps.zoom;\n const startCenter = [startProps.longitude, startProps.latitude];\n const startScale = zoomToScale(startZoom);\n const endZoom = endProps.zoom;\n const endCenter = [endProps.longitude, endProps.latitude];\n const scale = zoomToScale(endZoom - startZoom);\n\n const startCenterXY = lngLatToWorld(startCenter);\n const endCenterXY = lngLatToWorld(endCenter);\n const uDelta = vec2.sub([], endCenterXY, startCenterXY);\n\n const w0 = Math.max(startProps.width, startProps.height);\n const w1 = w0 / scale;\n const u1 = vec2.length(uDelta) * startScale;\n // u0 is treated as '0' in Eq (9).\n\n // If u1 is too small, will generate invalid number\n const _u1 = Math.max(u1, EPSILON);\n\n // Implement Equation (9) from above algorithm.\n const rho2 = rho * rho;\n const b0 = (w1 * w1 - w0 * w0 + rho2 * rho2 * _u1 * _u1) / (2 * w0 * rho2 * _u1);\n const b1 = (w1 * w1 - w0 * w0 - rho2 * rho2 * _u1 * _u1) / (2 * w1 * rho2 * _u1);\n const r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);\n const r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n const S = (r1 - r0) / rho;\n\n return {startZoom, startCenterXY, uDelta, w0, u1, S, rho, rho2, r0, r1};\n}\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","/* global window, global, document */\n\nconst window_ = typeof window !== 'undefined' ? window : global;\nconst global_ = typeof global !== 'undefined' ? global : window;\nconst document_ = typeof document !== 'undefined' ? document : {};\n\nexport {window_ as window, global_ as global, document_ as document};\n","const refProps = ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\n\n// Prepare a map style object for diffing\n// If immutable - convert to plain object\n// Work around some issues in the styles that would fail Mapbox's diffing\nexport function normalizeStyle(style) {\n if (!style) {\n return null;\n }\n if (typeof style === 'string') {\n return style;\n }\n if (style.toJS) {\n style = style.toJS();\n }\n const layerIndex = {};\n\n for (const layer of style.layers) {\n layerIndex[layer.id] = layer;\n }\n\n const layers = style.layers.map(layer => {\n const layerRef = layerIndex[layer.ref];\n let normalizedLayer = null;\n\n if ('interactive' in layer) {\n normalizedLayer = {...layer};\n // Breaks style diffing :(\n delete normalizedLayer.interactive;\n }\n\n // Style diffing doesn't work with refs so expand them out manually before diffing.\n if (layerRef) {\n normalizedLayer = normalizedLayer || {...layer};\n delete normalizedLayer.ref;\n // https://github.com/mapbox/mapbox-gl-js/blob/master/src/style-spec/deref.js\n for (const propName of refProps) {\n if (propName in layerRef) {\n normalizedLayer[propName] = layerRef[propName];\n }\n }\n }\n\n return normalizedLayer || layer;\n });\n\n // Do not mutate the style object provided by the user\n return {...style, layers};\n}\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* global window, process, HTMLCanvasElement */\nimport * as PropTypes from 'prop-types';\nimport {document} from '../utils/globals';\nimport {normalizeStyle} from '../utils/style-utils';\n\nfunction noop() {}\n\nfunction defaultOnError(event) {\n if (event) {\n console.error(event.error); // eslint-disable-line\n }\n}\n\nconst propTypes = {\n // Creation parameters\n container: PropTypes.object /** The container to have the map. */,\n gl: PropTypes.object /** External WebGLContext to use */,\n\n mapboxApiAccessToken: PropTypes.string /** Mapbox API access token for Mapbox tiles/styles. */,\n mapboxApiUrl: PropTypes.string,\n attributionControl: PropTypes.bool /** Show attribution control or not. */,\n preserveDrawingBuffer: PropTypes.bool /** Useful when you want to export the canvas as a PNG. */,\n reuseMaps: PropTypes.bool,\n transformRequest: PropTypes.func /** The transformRequest callback for the map */,\n mapOptions: PropTypes.object /** Extra options to pass to Mapbox constructor. See #545. **/,\n mapStyle: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object\n ]) /** The Mapbox style. A string url to a MapboxGL style */,\n preventStyleDiffing:\n PropTypes.bool /** There are known issues with style diffing. As stopgap, add option to prevent style diffing. */,\n\n visible: PropTypes.bool /** Whether the map is visible */,\n asyncRender: PropTypes.bool /** Whether mapbox should manage its own render cycle */,\n\n onLoad: PropTypes.func /** The onLoad callback for the map */,\n onError: PropTypes.func /** The onError callback for the map */,\n\n // Map view state\n width: PropTypes.number /** The width of the map. */,\n height: PropTypes.number /** The height of the map. */,\n\n viewState: PropTypes.object /** object containing lng/lat/zoom/bearing/pitch */,\n\n longitude: PropTypes.number /** The longitude of the center of the map. */,\n latitude: PropTypes.number /** The latitude of the center of the map. */,\n zoom: PropTypes.number /** The tile zoom level of the map. */,\n bearing: PropTypes.number /** Specify the bearing of the viewport */,\n pitch: PropTypes.number /** Specify the pitch of the viewport */,\n // Note: Non-public API, see https://github.com/mapbox/mapbox-gl-js/issues/1137\n altitude: PropTypes.number /** Altitude of the viewport camera. Default 1.5 \"screen heights\" */\n};\n\nconst defaultProps = {\n container: document.body,\n mapboxApiAccessToken: getAccessToken(),\n mapboxApiUrl: 'https://api.mapbox.com',\n preserveDrawingBuffer: false,\n attributionControl: true,\n reuseMaps: false,\n mapOptions: {},\n mapStyle: 'mapbox://styles/mapbox/light-v8',\n preventStyleDiffing: false,\n\n visible: true,\n asyncRender: false,\n\n onLoad: noop,\n onError: defaultOnError,\n\n width: 0,\n height: 0,\n longitude: 0,\n latitude: 0,\n zoom: 0,\n bearing: 0,\n pitch: 0,\n altitude: 1.5\n};\n\n// Try to get access token from URL, env, local storage or config\nexport function getAccessToken() {\n let accessToken = null;\n\n if (typeof window !== 'undefined' && window.location) {\n const match = window.location.search.match(/access_token=([^&\\/]*)/);\n accessToken = match && match[1];\n }\n\n if (!accessToken && typeof process !== 'undefined') {\n // Note: This depends on bundler plugins (e.g. webpack) importing environment correctly\n accessToken =\n accessToken || process.env.MapboxAccessToken || process.env.REACT_APP_MAPBOX_ACCESS_TOKEN; // eslint-disable-line\n }\n\n // Prevents mapbox from throwing\n return accessToken || 'no-token';\n}\n\n// Helper function to merge defaultProps and check prop types\nfunction checkPropTypes(props, component = 'component') {\n // TODO - check for production (unless done by prop types package?)\n if (props.debug) {\n PropTypes.checkPropTypes(propTypes, props, 'prop', component);\n }\n}\n\n// A small wrapper class for mapbox-gl\n// - Provides a prop style interface (that can be trivially used by a React wrapper)\n// - Makes sure mapbox doesn't crash under Node\n// - Handles map reuse (to work around Mapbox resource leak issues)\n// - Provides support for specifying tokens during development\n\nexport default class Mapbox {\n static initialized = false;\n static propTypes = propTypes;\n static defaultProps = defaultProps;\n static savedMap = null;\n\n constructor(props) {\n if (!props.mapboxgl) {\n throw new Error('Mapbox not available');\n }\n\n this.mapboxgl = props.mapboxgl;\n\n if (!Mapbox.initialized) {\n Mapbox.initialized = true;\n\n // Version detection using babel plugin\n // const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n // TODO - expose version for debug\n\n this._checkStyleSheet(this.mapboxgl.version);\n }\n\n this._initialize(props);\n }\n\n props = defaultProps;\n width = 0;\n height = 0;\n\n finalize() {\n this._destroy();\n return this;\n }\n\n setProps(props) {\n this._update(this.props, props);\n return this;\n }\n\n // Force redraw the map now. Typically resize() and jumpTo() is reflected in the next\n // render cycle, which is managed by Mapbox's animation loop.\n // This removes the synchronization issue caused by requestAnimationFrame.\n redraw() {\n const map = this._map;\n // map._render will throw error if style does not exist\n // https://github.com/mapbox/mapbox-gl-js/blob/fb9fc316da14e99ff4368f3e4faa3888fb43c513\n // /src/ui/map.js#L1834\n if (map.style) {\n // cancel the scheduled update\n if (map._frame) {\n map._frame.cancel();\n map._frame = null;\n }\n // the order is important - render() may schedule another update\n map._render();\n }\n }\n\n // External apps can access map this way\n getMap() {\n return this._map;\n }\n\n // PRIVATE API\n _fireLoadEvent = () => {\n // @ts-ignore\n this.props.onLoad({\n type: 'load',\n target: this._map\n });\n };\n\n _handleError = event => {\n // @ts-ignore\n this.props.onError(event);\n };\n\n _reuse(props) {\n this._map = Mapbox.savedMap;\n // When reusing the saved map, we need to reparent the map(canvas) and other child nodes\n // intoto the new container from the props.\n // Step1: reparenting child nodes from old container to new container\n const oldContainer = this._map.getContainer();\n const newContainer = props.container;\n newContainer.classList.add('mapboxgl-map');\n while (oldContainer.childNodes.length > 0) {\n newContainer.appendChild(oldContainer.childNodes[0]);\n }\n // Step2: replace the internal container with new container from the react component\n this._map._container = newContainer;\n Mapbox.savedMap = null;\n\n // Step3: update style and call onload again\n if (props.mapStyle) {\n this._map.setStyle(normalizeStyle(props.mapStyle), {\n // From the user's perspective, there's no \"diffing\" on initialization\n // We always rebuild the style from scratch when creating a new Mapbox instance\n diff: false\n });\n }\n\n // call onload event handler after style fully loaded when style needs update\n if (this._map.isStyleLoaded()) {\n this._fireLoadEvent();\n } else {\n this._map.once('styledata', this._fireLoadEvent);\n }\n }\n\n _create(props) {\n // Reuse a saved map, if available\n if (props.reuseMaps && Mapbox.savedMap) {\n this._reuse(props);\n } else {\n if (props.gl) {\n const getContext = HTMLCanvasElement.prototype.getContext;\n // Hijack canvas.getContext to return our own WebGLContext\n // This will be called inside the mapboxgl.Map constructor\n HTMLCanvasElement.prototype.getContext = () => {\n // Unhijack immediately\n HTMLCanvasElement.prototype.getContext = getContext;\n return props.gl;\n };\n }\n\n const mapOptions = {\n container: props.container,\n center: [0, 0],\n zoom: 8,\n pitch: 0,\n bearing: 0,\n maxZoom: 24,\n style: normalizeStyle(props.mapStyle),\n interactive: false,\n trackResize: false,\n attributionControl: props.attributionControl,\n preserveDrawingBuffer: props.preserveDrawingBuffer\n };\n // We don't want to pass a null or no-op transformRequest function.\n if (props.transformRequest) {\n mapOptions.transformRequest = props.transformRequest;\n }\n this._map = new this.mapboxgl.Map(Object.assign({}, mapOptions, props.mapOptions));\n\n // Attach optional onLoad function\n this._map.once('load', this._fireLoadEvent);\n this._map.on('error', this._handleError);\n }\n\n return this;\n }\n\n _destroy() {\n if (!this._map) {\n return;\n }\n\n if (this.props.reuseMaps && !Mapbox.savedMap) {\n Mapbox.savedMap = this._map;\n\n // deregister the mapbox event listeners\n this._map.off('load', this._fireLoadEvent);\n this._map.off('error', this._handleError);\n this._map.off('styledata', this._fireLoadEvent);\n } else {\n this._map.remove();\n }\n\n this._map = null;\n }\n\n _initialize(props) {\n props = Object.assign({}, defaultProps, props);\n checkPropTypes(props, 'Mapbox');\n\n // Creation only props\n this.mapboxgl.accessToken = props.mapboxApiAccessToken || defaultProps.mapboxApiAccessToken;\n this.mapboxgl.baseApiUrl = props.mapboxApiUrl;\n\n this._create(props);\n\n // Hijack dimension properties\n // This eliminates the timing issue between calling resize() and DOM update\n /* eslint-disable accessor-pairs */\n const {container} = props;\n Object.defineProperty(container, 'offsetWidth', {get: () => this.width});\n Object.defineProperty(container, 'clientWidth', {get: () => this.width});\n Object.defineProperty(container, 'offsetHeight', {\n get: () => this.height\n });\n Object.defineProperty(container, 'clientHeight', {\n get: () => this.height\n });\n\n // Disable outline style\n const canvas = this._map.getCanvas();\n if (canvas) {\n canvas.style.outline = 'none';\n }\n\n this._updateMapViewport({}, props);\n this._updateMapSize({}, props);\n\n this.props = props;\n }\n\n _update(oldProps, newProps) {\n if (!this._map) {\n return;\n }\n\n newProps = Object.assign({}, this.props, newProps);\n checkPropTypes(newProps, 'Mapbox');\n\n const viewportChanged = this._updateMapViewport(oldProps, newProps);\n const sizeChanged = this._updateMapSize(oldProps, newProps);\n this._updateMapStyle(oldProps, newProps);\n\n if (!newProps.asyncRender && (viewportChanged || sizeChanged)) {\n this.redraw();\n }\n\n this.props = newProps;\n }\n\n _updateMapStyle(oldProps, newProps) {\n const styleChanged = oldProps.mapStyle !== newProps.mapStyle;\n if (styleChanged) {\n this._map.setStyle(normalizeStyle(newProps.mapStyle), {\n diff: !newProps.preventStyleDiffing\n });\n }\n }\n\n // Note: needs to be called after render (e.g. in componentDidUpdate)\n _updateMapSize(oldProps, newProps) {\n const sizeChanged = oldProps.width !== newProps.width || oldProps.height !== newProps.height;\n if (sizeChanged) {\n this.width = newProps.width;\n this.height = newProps.height;\n this._map.resize();\n }\n return sizeChanged;\n }\n\n _updateMapViewport(oldProps, newProps) {\n const oldViewState = this._getViewState(oldProps);\n const newViewState = this._getViewState(newProps);\n\n const viewportChanged =\n newViewState.latitude !== oldViewState.latitude ||\n newViewState.longitude !== oldViewState.longitude ||\n newViewState.zoom !== oldViewState.zoom ||\n newViewState.pitch !== oldViewState.pitch ||\n newViewState.bearing !== oldViewState.bearing ||\n newViewState.altitude !== oldViewState.altitude;\n\n if (viewportChanged) {\n this._map.jumpTo(this._viewStateToMapboxProps(newViewState));\n\n // TODO - jumpTo doesn't handle altitude\n if (newViewState.altitude !== oldViewState.altitude) {\n this._map.transform.altitude = newViewState.altitude;\n }\n }\n return viewportChanged;\n }\n\n _getViewState(props) {\n const {longitude, latitude, zoom, pitch = 0, bearing = 0, altitude = 1.5} =\n props.viewState || props;\n return {longitude, latitude, zoom, pitch, bearing, altitude};\n }\n\n _checkStyleSheet(mapboxVersion = '0.47.0') {\n if (typeof document === 'undefined') {\n return;\n }\n\n // check mapbox styles\n try {\n const testElement = document.createElement('div');\n testElement.className = 'mapboxgl-map';\n testElement.style.display = 'none';\n document.body.appendChild(testElement);\n const isCssLoaded = window.getComputedStyle(testElement).position !== 'static';\n\n if (!isCssLoaded) {\n // attempt to insert mapbox stylesheet\n const link = document.createElement('link');\n link.setAttribute('rel', 'stylesheet');\n link.setAttribute('type', 'text/css');\n link.setAttribute(\n 'href',\n `https://api.tiles.mapbox.com/mapbox-gl-js/v${mapboxVersion}/mapbox-gl.css`\n );\n document.head.appendChild(link);\n }\n } catch (error) {\n // do nothing\n }\n }\n\n _viewStateToMapboxProps(viewState) {\n return {\n center: [viewState.longitude, viewState.latitude],\n zoom: viewState.zoom,\n bearing: viewState.bearing,\n pitch: viewState.pitch\n };\n }\n}\n","const EPSILON = 1e-7;\n\n// Returns true if value is either an array or a typed array\nfunction isArray(value) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n}\n\n// TODO: use math.gl\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return Math.abs(a - b) <= EPSILON;\n}\n\nexport function clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n\n// Interpolate between two numbers or two arrays\nexport function lerp(a, b, t) {\n if (isArray(a)) {\n return a.map((ai, i) => lerp(ai, b[i], t));\n }\n return t * b + (1 - t) * a;\n}\n","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'react-map-gl: assertion failed.');\n }\n}\n","import WebMercatorViewport, {normalizeViewportProps} from 'viewport-mercator-project';\nimport {clamp} from './math-utils';\nimport assert from './assert';\n\n// MAPBOX LIMITS\nexport const MAPBOX_LIMITS = {\n minZoom: 0,\n maxZoom: 24,\n minPitch: 0,\n maxPitch: 85\n};\n\nconst DEFAULT_STATE = {\n pitch: 0,\n bearing: 0,\n altitude: 1.5\n};\n\nconst PITCH_MOUSE_THRESHOLD = 5;\nconst PITCH_ACCEL = 1.2;\n\nexport default class MapState {\n constructor({\n /** Mapbox viewport properties */\n /** The width of the viewport */\n width,\n /** The height of the viewport */\n height,\n /** The latitude at the center of the viewport */\n latitude,\n /** The longitude at the center of the viewport */\n longitude,\n /** The tile zoom level of the map. */\n zoom,\n /** The bearing of the viewport in degrees */\n bearing = DEFAULT_STATE.bearing,\n /** The pitch of the viewport in degrees */\n pitch = DEFAULT_STATE.pitch,\n /**\n * Specify the altitude of the viewport camera\n * Unit: map heights, default 1.5\n * Non-public API, see https://github.com/mapbox/mapbox-gl-js/issues/1137\n */\n altitude = DEFAULT_STATE.altitude,\n\n /** Viewport constraints */\n maxZoom = MAPBOX_LIMITS.maxZoom,\n minZoom = MAPBOX_LIMITS.minZoom,\n maxPitch = MAPBOX_LIMITS.maxPitch,\n minPitch = MAPBOX_LIMITS.minPitch,\n\n /** Transition props */\n transitionDuration,\n transitionEasing,\n transitionInterpolator,\n transitionInterruption,\n\n /** Interaction states, required to calculate change during transform */\n /* The point on map being grabbed when the operation first started */\n startPanLngLat,\n /* Center of the zoom when the operation first started */\n startZoomLngLat,\n /* Cursor position when the rotate operation started */\n startRotatePos,\n /** Bearing when current perspective rotate operation started */\n startBearing,\n /** Pitch when current perspective rotate operation started */\n startPitch,\n /** Zoom when current zoom operation started */\n startZoom\n }) {\n assert(Number.isFinite(width), '`width` must be supplied');\n assert(Number.isFinite(height), '`height` must be supplied');\n assert(Number.isFinite(longitude), '`longitude` must be supplied');\n assert(Number.isFinite(latitude), '`latitude` must be supplied');\n assert(Number.isFinite(zoom), '`zoom` must be supplied');\n\n this._viewportProps = this._applyConstraints({\n width,\n height,\n latitude,\n longitude,\n zoom,\n bearing,\n pitch,\n altitude,\n maxZoom,\n minZoom,\n maxPitch,\n minPitch,\n transitionDuration,\n transitionEasing,\n transitionInterpolator,\n transitionInterruption\n });\n\n this._state = {\n startPanLngLat,\n startZoomLngLat,\n startRotatePos,\n startBearing,\n startPitch,\n startZoom\n };\n }\n\n /* Public API */\n\n getViewportProps() {\n return this._viewportProps;\n }\n\n getState() {\n return this._state;\n }\n\n /**\n * Start panning\n * @param {Object} params\n * @param {[Number, Number]} params.pos - position on screen where the pointer grabs\n */\n panStart({pos}) {\n return this._getUpdatedMapState({\n startPanLngLat: this._unproject(pos)\n });\n }\n\n /**\n * Pan\n * @param {Object} params\n * @param {[Number, Number]} params.pos - position on screen where the pointer is\n * @param {[Number, Number]} [params.startPos] - where the pointer grabbed at\n * the start of the operation. Must be supplied of `panStart()` was not called\n */\n pan({pos, startPos}) {\n const startPanLngLat = this._state.startPanLngLat || this._unproject(startPos);\n\n if (!startPanLngLat) {\n return this;\n }\n\n const [longitude, latitude] = this._calculateNewLngLat({\n startPanLngLat,\n pos\n });\n\n return this._getUpdatedMapState({\n longitude,\n latitude\n });\n }\n\n /**\n * End panning\n * Must call if `panStart()` was called\n */\n panEnd() {\n return this._getUpdatedMapState({\n startPanLngLat: null\n });\n }\n\n /**\n * Start rotating\n * @param {Object} params\n * @param {[Number, Number]} params.pos - position on screen where the center is\n */\n rotateStart({pos}) {\n return this._getUpdatedMapState({\n startRotatePos: pos,\n startBearing: this._viewportProps.bearing,\n startPitch: this._viewportProps.pitch\n });\n }\n\n /**\n * Rotate\n * @param {Object} params\n * @param {[Number, Number]} params.pos - position on screen where the center is\n * @param {Number} params.deltaAngleX - the change to bearing.\n * @param {Number} params.deltaAngleY - the change to pitch.\n */\n rotate({pos, deltaAngleX = 0, deltaAngleY = 0}) {\n const {startRotatePos, startBearing, startPitch} = this._state;\n\n if (!Number.isFinite(startBearing) || !Number.isFinite(startPitch)) {\n return this;\n }\n\n let newRotation;\n if (pos) {\n newRotation = this._calculateNewPitchAndBearing({\n ...this._getRotationParams(pos, startRotatePos),\n startBearing,\n startPitch\n });\n } else {\n newRotation = {\n bearing: startBearing + deltaAngleX,\n pitch: startPitch + deltaAngleY\n };\n }\n\n return this._getUpdatedMapState(newRotation);\n }\n\n /**\n * End rotating\n * Must call if `rotateStart()` was called\n */\n rotateEnd() {\n return this._getUpdatedMapState({\n startBearing: null,\n startPitch: null\n });\n }\n\n /**\n * Start zooming\n * @param {Object} params\n * @param {[Number, Number]} params.pos - position on screen where the center is\n */\n zoomStart({pos}) {\n return this._getUpdatedMapState({\n startZoomLngLat: this._unproject(pos),\n startZoom: this._viewportProps.zoom\n });\n }\n\n /**\n * Zoom\n * @param {Object} params\n * @param {[Number, Number]} params.pos - position on screen where the current center is\n * @param {[Number, Number]} [params.startPos] - the center position at\n * the start of the operation. Must be supplied of `zoomStart()` was not called\n * @param {Number} params.scale - a number between [0, 1] specifying the accumulated\n * relative scale.\n */\n zoom({pos, startPos, scale}) {\n assert(scale > 0, '`scale` must be a positive number');\n\n // Make sure we zoom around the current mouse position rather than map center\n let {startZoom, startZoomLngLat} = this._state;\n\n if (!Number.isFinite(startZoom)) {\n // We have two modes of zoom:\n // scroll zoom that are discrete events (transform from the current zoom level),\n // and pinch zoom that are continuous events (transform from the zoom level when\n // pinch started).\n // If startZoom state is defined, then use the startZoom state;\n // otherwise assume discrete zooming\n startZoom = this._viewportProps.zoom;\n startZoomLngLat = this._unproject(startPos) || this._unproject(pos);\n }\n\n // take the start lnglat and put it where the mouse is down.\n assert(\n startZoomLngLat,\n '`startZoomLngLat` prop is required ' +\n 'for zoom behavior to calculate where to position the map.'\n );\n\n const zoom = this._calculateNewZoom({scale, startZoom: startZoom || 0});\n\n const zoomedViewport = new WebMercatorViewport(Object.assign({}, this._viewportProps, {zoom}));\n const [longitude, latitude] = zoomedViewport.getMapCenterByLngLatPosition({\n lngLat: startZoomLngLat,\n pos\n });\n\n return this._getUpdatedMapState({\n zoom,\n longitude,\n latitude\n });\n }\n\n /**\n * End zooming\n * Must call if `zoomStart()` was called\n */\n zoomEnd() {\n return this._getUpdatedMapState({\n startZoomLngLat: null,\n startZoom: null\n });\n }\n\n /* Private methods */\n\n _getUpdatedMapState(newProps) {\n // Update _viewportProps\n return new MapState(Object.assign({}, this._viewportProps, this._state, newProps));\n }\n\n // Apply any constraints (mathematical or defined by _viewportProps) to map state\n _applyConstraints(props) {\n // Ensure zoom is within specified range\n const {maxZoom, minZoom, zoom} = props;\n props.zoom = clamp(zoom, minZoom, maxZoom);\n\n // Ensure pitch is within specified range\n const {maxPitch, minPitch, pitch} = props;\n props.pitch = clamp(pitch, minPitch, maxPitch);\n\n Object.assign(props, normalizeViewportProps(props));\n\n return props;\n }\n\n _unproject(pos) {\n const viewport = new WebMercatorViewport(this._viewportProps);\n return pos && viewport.unproject(pos);\n }\n\n // Calculate a new lnglat based on pixel dragging position\n _calculateNewLngLat({startPanLngLat, pos}) {\n const viewport = new WebMercatorViewport(this._viewportProps);\n return viewport.getMapCenterByLngLatPosition({\n lngLat: startPanLngLat,\n pos\n });\n }\n\n // Calculates new zoom\n _calculateNewZoom({scale, startZoom}) {\n const {maxZoom, minZoom} = this._viewportProps;\n const zoom = startZoom + Math.log2(scale);\n return clamp(zoom, minZoom, maxZoom);\n }\n\n // Calculates a new pitch and bearing from a position (coming from an event)\n _calculateNewPitchAndBearing({deltaScaleX, deltaScaleY, startBearing, startPitch}) {\n // clamp deltaScaleY to [-1, 1] so that rotation is constrained between minPitch and maxPitch.\n // deltaScaleX does not need to be clamped as bearing does not have constraints.\n deltaScaleY = clamp(deltaScaleY, -1, 1);\n\n const {minPitch, maxPitch} = this._viewportProps;\n\n const bearing = startBearing + 180 * deltaScaleX;\n let pitch = startPitch;\n if (deltaScaleY > 0) {\n // Gradually increase pitch\n pitch = startPitch + deltaScaleY * (maxPitch - startPitch);\n } else if (deltaScaleY < 0) {\n // Gradually decrease pitch\n pitch = startPitch - deltaScaleY * (minPitch - startPitch);\n }\n\n return {\n pitch,\n bearing\n };\n }\n\n _getRotationParams(pos, startPos) {\n const deltaX = pos[0] - startPos[0];\n const deltaY = pos[1] - startPos[1];\n const centerY = pos[1];\n const startY = startPos[1];\n const {width, height} = this._viewportProps;\n\n const deltaScaleX = deltaX / width;\n let deltaScaleY = 0;\n\n if (deltaY > 0) {\n if (Math.abs(height - startY) > PITCH_MOUSE_THRESHOLD) {\n // Move from 0 to -1 as we drag upwards\n deltaScaleY = (deltaY / (startY - height)) * PITCH_ACCEL;\n }\n } else if (deltaY < 0) {\n if (startY > PITCH_MOUSE_THRESHOLD) {\n // Move from 0 to 1 as we drag upwards\n deltaScaleY = 1 - centerY / startY;\n }\n }\n deltaScaleY = Math.min(1, Math.max(-1, deltaScaleY));\n return {deltaScaleX, deltaScaleY};\n }\n}\n","import {worldToLngLat} from './web-mercator-utils';\nimport {mod, log2} from './math-utils';\n\n// defined by mapbox-gl\nconst TILE_SIZE = 512;\n\n// Apply mathematical constraints to viewport props\n// eslint-disable-next-line complexity\nexport default function normalizeViewportProps({\n width,\n height,\n longitude,\n latitude,\n zoom,\n pitch = 0,\n bearing = 0\n}) {\n // Normalize degrees\n if (longitude < -180 || longitude > 180) {\n longitude = mod(longitude + 180, 360) - 180;\n }\n if (bearing < -180 || bearing > 180) {\n bearing = mod(bearing + 180, 360) - 180;\n }\n\n // Constrain zoom and shift center at low zoom levels\n const minZoom = log2(height / TILE_SIZE);\n if (zoom <= minZoom) {\n zoom = minZoom;\n latitude = 0;\n } else {\n // Eliminate white space above and below the map\n const halfHeightPixels = height / 2 / Math.pow(2, zoom);\n const minLatitude = worldToLngLat([0, halfHeightPixels])[1];\n if (latitude < minLatitude) {\n latitude = minLatitude;\n } else {\n const maxLatitude = worldToLngLat([0, TILE_SIZE - halfHeightPixels])[1];\n if (latitude > maxLatitude) {\n latitude = maxLatitude;\n }\n }\n }\n\n return {width, height, longitude, latitude, zoom, pitch, bearing};\n}\n","import {MAPBOX_LIMITS} from './map-state';\n\nfunction decapitalize(s) {\n return s[0].toLowerCase() + s.slice(1);\n}\n\n// Checks a visibilityConstraints object to see if the map should be displayed\n// Returns true if props are within the constraints\nexport function checkVisibilityConstraints(props, constraints = MAPBOX_LIMITS) {\n for (const constraintName in constraints) {\n // in the format of min* or max*\n const type = constraintName.slice(0, 3);\n const propName = decapitalize(constraintName.slice(3));\n\n if (type === 'min' && props[propName] < constraints[constraintName]) {\n return false;\n }\n if (type === 'max' && props[propName] > constraints[constraintName]) {\n return false;\n }\n }\n return true;\n}\n","import * as React from 'react';\nimport {createContext, useState, useContext} from 'react';\n\nconst MapContext = createContext({\n /* Map context */\n\n // Viewport\n viewport: null,\n // mapboxgl.Map instance\n map: null,\n // DOM element that contains the map\n container: null,\n\n /* Interaction callbacks */\n onViewportChange: null,\n onViewStateChange: null,\n\n // EventManager instance\n eventManager: null\n});\n\n// Save the original Provider component\nexport const MapContextProvider = MapContext.Provider;\n\n// And replace Provider with our own\nfunction WrappedProvider({value, children}) {\n const [map, setMap] = useState(null);\n const context = useContext(MapContext);\n\n value = {\n setMap,\n ...context,\n map: (context && context.map) || map,\n ...value\n };\n\n return <MapContextProvider value={value}>{children}</MapContextProvider>;\n}\n\nMapContext.Provider = WrappedProvider;\n\nexport default MapContext;\n","// From https://github.com/streamich/react-use/blob/master/src/useIsomorphicLayoutEffect.ts\n// useLayoutEffect but does not trigger warning in server-side rendering\nimport {useEffect, useLayoutEffect} from 'react';\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport default useIsomorphicLayoutEffect;\n","// Place camera over terrain\nexport function getTerrainElevation(map, {longitude, latitude}) {\n if (map && map.queryTerrainElevation) {\n return map.queryTerrainElevation([longitude, latitude]) || 0;\n }\n return 0;\n}\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport * as React from 'react';\nimport {useState, useRef, useCallback, useContext, useImperativeHandle, forwardRef} from 'react';\nimport * as PropTypes from 'prop-types';\n\nimport WebMercatorViewport from 'viewport-mercator-project';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nimport Mapbox from '../mapbox/mapbox';\nimport mapboxgl from '../utils/mapboxgl';\nimport {checkVisibilityConstraints} from '../utils/map-constraints';\nimport {MAPBOX_LIMITS} from '../utils/map-state';\nimport MapContext, {MapContextProvider} from './map-context';\nimport useIsomorphicLayoutEffect from '../utils/use-isomorphic-layout-effect';\nimport {getTerrainElevation} from '../utils/terrain';\n\n/* eslint-disable max-len */\nconst TOKEN_DOC_URL = 'https://visgl.github.io/react-map-gl/docs/get-started/mapbox-tokens';\nconst NO_TOKEN_WARNING = 'A valid API access token is required to use Mapbox data';\n/* eslint-disable max-len */\n\nfunction noop() {}\n\nexport function getViewport({map, props, width, height}) {\n const viewportProps = {\n ...props,\n ...props.viewState,\n width,\n height\n };\n viewportProps.position = [0, 0, getTerrainElevation(map, viewportProps)];\n return new WebMercatorViewport(viewportProps);\n}\n\nconst UNAUTHORIZED_ERROR_CODE = 401;\n\nconst CONTAINER_STYLE = {\n position: 'absolute',\n width: '100%',\n height: '100%',\n overflow: 'hidden'\n};\n\nconst propTypes = Object.assign({}, Mapbox.propTypes, {\n /** The dimensions of the map **/\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** Callback when map size changes **/\n onResize: PropTypes.func,\n /** Hide invalid token warning even if request fails */\n disableTokenWarning: PropTypes.bool,\n /** Whether the map is visible */\n visible: PropTypes.bool,\n /** Custom class name for the map */\n className: PropTypes.string,\n /** Custom CSS for the container */\n style: PropTypes.object,\n\n /** Advanced features */\n // Contraints for displaying the map. If not met, then the map is hidden.\n // Experimental! May be changed in minor version updates.\n visibilityConstraints: PropTypes.object\n});\n\nconst defaultProps = Object.assign({}, Mapbox.defaultProps, {\n disableTokenWarning: false,\n visible: true,\n onResize: noop,\n className: '',\n style: null,\n visibilityConstraints: MAPBOX_LIMITS\n});\n\nfunction NoTokenWarning() {\n const style = {\n position: 'absolute',\n left: 0,\n top: 0\n };\n return (\n <div\n key=\"warning\"\n id=\"no-token-warning\"\n // @ts-ignore\n style={style}\n >\n <h3 key=\"header\">{NO_TOKEN_WARNING}</h3>\n <div key=\"text\">For information on setting up your basemap, read</div>\n <a key=\"link\" href={TOKEN_DOC_URL}>\n Note on Map Tokens\n </a>\n </div>\n );\n}\n\nfunction getRefHandles(mapboxRef) {\n return {\n getMap: () => mapboxRef.current && mapboxRef.current.getMap(),\n queryRenderedFeatures: (geometry, options = {}) => {\n const map = mapboxRef.current && mapboxRef.current.getMap();\n return map && map.queryRenderedFeatures(geometry, options);\n }\n };\n}\n\nconst StaticMap = forwardRef((props, ref) => {\n const [accessTokenValid, setTokenState] = useState(true);\n const [size, setSize] = useState({width: 0, height: 0});\n const mapboxRef = useRef(null);\n const mapDivRef = useRef(null);\n const containerRef = useRef(null);\n const overlayRef = useRef(null);\n const context = useContext(MapContext);\n\n useIsomorphicLayoutEffect(() => {\n if (!StaticMap.supported()) {\n return undefined;\n }\n\n // Initialize\n const mapbox = new Mapbox({\n ...props,\n ...size,\n mapboxgl, // Handle to mapbox-gl library\n container: mapDivRef.current,\n onError: evt => {\n const statusCode = (evt.error && evt.error.status) || evt.status;\n if (statusCode === UNAUTHORIZED_ERROR_CODE && accessTokenValid) {\n // Mapbox throws unauthorized error - invalid token\n console.error(NO_TOKEN_WARNING); // eslint-disable-line\n setTokenState(false);\n }\n props.onError(evt);\n }\n });\n mapboxRef.current = mapbox;\n\n if (context && context.setMap) {\n context.setMap(mapbox.getMap());\n }\n\n const resizeObserver = new ResizeObserver(entries => {\n if (entries[0].contentRect) {\n const {width, height} = entries[0].contentRect;\n setSize({width, height});\n props.onResize({width, height});\n }\n });\n resizeObserver.observe(containerRef.current);\n\n // Clean up\n return () => {\n mapbox.finalize();\n mapboxRef.current = null;\n resizeObserver.disconnect();\n };\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n if (mapboxRef.current) {\n mapboxRef.current.setProps({...props, ...size});\n }\n });\n\n const map = mapboxRef.current && mapboxRef.current.getMap();\n\n // External apps can call methods via ref\n // Note: this is not a recommended pattern in React FC - Keeping for backward compatibility\n useImperativeHandle(ref, () => getRefHandles(mapboxRef), []);\n\n const preventScroll = useCallback(({target}) => {\n if (target === overlayRef.current) {\n target.scrollTo(0, 0);\n }\n }, []);\n\n const overlays = map && (\n <MapContextProvider\n value={{\n ...context,\n viewport: context.viewport || getViewport({map, props, ...size}),\n map,\n container: context.container || containerRef.current\n }}\n >\n <div\n key=\"map-overlays\"\n className=\"overlays\"\n ref={overlayRef}\n // @ts-ignore\n style={CONTAINER_STYLE}\n onScroll={preventScroll}\n >\n {props.children}\n </div>\n </MapContextProvider>\n );\n\n const {className, width, height, style, visibilityConstraints} = props;\n const mapContainerStyle = Object.assign({position: 'relative'}, style, {\n width,\n height\n });\n\n const visible =\n props.visible && checkVisibilityConstraints(props.viewState || props, visibilityConstraints);\n\n const mapStyle = Object.assign({}, CONTAINER_STYLE, {\n visibility: visible ? 'inherit' : 'hidden'\n });\n\n return (\n <div\n key=\"map-container\"\n ref={containerRef}\n // @ts-ignore\n style={mapContainerStyle}\n >\n <div\n key=\"map-mapbox\"\n ref={mapDivRef}\n // @ts-ignore\n style={mapStyle}\n className={className}\n />\n {overlays}\n {!accessTokenValid && !props.disableTokenWarning && <NoTokenWarning />}\n </div>\n );\n});\n\nStaticMap.supported = () => mapboxgl && mapboxgl.supported();\nStaticMap.propTypes = propTypes;\nStaticMap.defaultProps = defaultProps;\n\nexport default StaticMap;\n","import {equals} from '../math-utils';\nimport assert from '../assert';\n\nexport default class TransitionInterpolator {\n propNames = [];\n\n /**\n * Checks if two sets of props need transition in between\n * @param currentProps {object} - a list of viewport props\n * @param nextProps {object} - a list of viewport props\n * @returns {boolean} - true if two props are equivalent\n */\n arePropsEqual(currentProps, nextProps) {\n for (const key of this.propNames || []) {\n if (!equals(currentProps[key], nextProps[key])) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Called before transition starts to validate/pre-process start and end props\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @returns {Object} {start, end} - start and end props to be passed\n * to `interpolateProps`\n */\n initializeProps(startProps, endProps) {\n return {start: startProps, end: endProps};\n }\n\n /**\n * Returns viewport props in transition\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @param t {number} - a time factor between [0, 1]\n * @returns {object} - a list of interpolated viewport props\n */\n interpolateProps(startProps, endProps, t) {\n assert(false, 'interpolateProps is not implemented');\n }\n\n /**\n * Returns transition duration\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @returns {Number} - transition duration in milliseconds\n */\n getDuration(startProps, endProps) {\n return endProps.transitionDuration;\n }\n}\n","const WRAPPED_ANGULAR_PROPS = {\n longitude: 1,\n bearing: 1\n};\n\nexport function mod(value, divisor) {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\n\nexport function isValid(prop) {\n return Number.isFinite(prop) || Array.isArray(prop);\n}\n\nfunction isWrappedAngularProp(propName) {\n return propName in WRAPPED_ANGULAR_PROPS;\n}\n\nexport function getEndValueByShortestPath(propName, startValue, endValue) {\n if (isWrappedAngularProp(propName) && Math.abs(endValue - startValue) > 180) {\n endValue = endValue < 0 ? endValue + 360 : endValue - 360;\n }\n return endValue;\n}\n","import assert from '../assert';\nimport TransitionInterpolator from './transition-interpolator';\n\nimport {flyToViewport, getFlyToDuration} from 'viewport-mercator-project';\nimport {isValid, getEndValueByShortestPath} from './transition-utils';\nimport {lerp} from '../math-utils';\n\nconst VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom', 'bearing', 'pitch'];\nconst REQUIRED_PROPS = ['latitude', 'longitude', 'zoom', 'width', 'height'];\nconst LINEARLY_INTERPOLATED_PROPS = ['bearing', 'pitch'];\nconst DEFAULT_OPTS = {\n speed: 1.2,\n curve: 1.414\n // screenSpeed and maxDuration are used only if specified\n};\n\n/**\n * This class adapts mapbox-gl-js Map#flyTo animation so it can be used in\n * react/redux architecture.\n * mapbox-gl-js flyTo : https://www.mapbox.com/mapbox-gl-js/api/#map#flyto.\n * It implements “Smooth and efficient zooming and panning.” algorithm by\n * \"Jarke J. van Wijk and Wim A.A. Nuij\"\n */\nexport default class ViewportFlyToInterpolator extends TransitionInterpolator {\n propNames = VIEWPORT_TRANSITION_PROPS;\n\n /**\n * @param props {Object}\n - `props.curve` (Number, optional, default: 1.414) - The zooming \"curve\" that will occur along the flight path.\n - `props.speed` (Number, optional, default: 1.2) - The average speed of the animation defined in relation to `options.curve`, it linearly affects the duration, higher speed returns smaller durations and vice versa.\n - `props.screenSpeed` (Number, optional) - The average speed of the animation measured in screenfuls per second. Similar to `opts.speed` it linearly affects the duration, when specified `opts.speed` is ignored.\n - `props.maxDuration` (Number, optional) - Maximum duration in milliseconds, if calculated duration exceeds this value, `0` is returned.\n */\n constructor(props = {}) {\n super();\n\n this.props = Object.assign({}, DEFAULT_OPTS, props);\n }\n\n initializeProps(startProps, endProps) {\n const startViewportProps = {};\n const endViewportProps = {};\n\n // Check minimum required props\n for (const key of REQUIRED_PROPS) {\n const startValue = startProps[key];\n const endValue = endProps[key];\n assert(isValid(startValue) && isValid(endValue), `${key} must be supplied for transition`);\n startViewportProps[key] = startValue;\n endViewportProps[key] = getEndValueByShortestPath(key, startValue, endValue);\n }\n\n for (const key of LINEARLY_INTERPOLATED_PROPS) {\n const startValue = startProps[key] || 0;\n const endValue = endProps[key] || 0;\n startViewportProps[key] = startValue;\n endViewportProps[key] = getEndValueByShortestPath(key, startValue, endValue);\n }\n\n return {\n start: startViewportProps,\n end: endViewportProps\n };\n }\n\n interpolateProps(startProps, endProps, t) {\n const viewport = flyToViewport(startProps, endProps, t, this.props);\n\n // Linearly interpolate 'bearing' and 'pitch' if exist.\n for (const key of LINEARLY_INTERPOLATED_PROPS) {\n viewport[key] = lerp(startProps[key], endProps[key], t);\n }\n\n return viewport;\n }\n\n // computes the transition duration\n getDuration(startProps, endProps) {\n let {transitionDuration} = endProps;\n if (transitionDuration === 'auto') {\n // auto calculate duration based on start and end props\n transitionDuration = getFlyToDuration(startProps, endProps, this.props);\n }\n return transitionDuration;\n }\n}\n","import WebMercatorViewport from 'viewport-mercator-project';\n\nimport assert from '../assert';\nimport TransitionInterpolator from './transition-interpolator';\n\nimport {isValid, getEndValueByShortestPath} from './transition-utils';\nimport {lerp} from '../math-utils';\n\nconst VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom', 'bearing', 'pitch'];\n\n/**\n * Performs linear interpolation of two viewports.\n */\nexport default class LinearInterpolator extends TransitionInterpolator {\n /**\n * @param opts {Object}\n * - opts.transitionProps {Array}] - list of props to apply linear transition to.\n * - opts.around {Array} - a screen point to zoom/rotate around\n */\n constructor(opts = {}) {\n super();\n\n if (Array.isArray(opts)) {\n // backward compatibility\n opts = {transitionProps: opts};\n }\n\n this.propNames = opts.transitionProps || VIEWPORT_TRANSITION_PROPS;\n if (opts.around) {\n this.around = opts.around;\n }\n }\n\n initializeProps(startProps, endProps) {\n const startViewportProps = {};\n const endViewportProps = {};\n\n if (this.around) {\n // anchor point in origin screen coordinates\n startViewportProps.around = this.around;\n // anchor point in spherical coordinates\n const aroundLngLat = new WebMercatorViewport(startProps).unproject(this.around);\n Object.assign(endViewportProps, endProps, {\n // anchor point in destination screen coordinates\n around: new WebMercatorViewport(endProps).project(aroundLngLat),\n aroundLngLat\n });\n }\n\n for (const key of this.propNames) {\n const startValue = startProps[key];\n const endValue = endProps[key];\n assert(isValid(startValue) && isValid(endValue), `${key} must be supplied for transition`);\n\n startViewportProps[key] = startValue;\n endViewportProps[key] = getEndValueByShortestPath(key, startValue, endValue);\n }\n\n return {\n start: startViewportProps,\n end: endViewportProps\n };\n }\n\n interpolateProps(startProps, endProps, t) {\n const viewport = {};\n for (const key of this.propNames) {\n viewport[key] = lerp(startProps[key], endProps[key], t);\n }\n\n if (endProps.around) {\n // zoom around provided point\n const [longitude, latitude] = new WebMercatorViewport(\n Object.assign({}, endProps, viewport)\n ).getMapCenterByLngLatPosition({\n lngLat: endProps.aroundLngLat,\n // anchor point in current screen coordinates\n pos: lerp(startProps.around, endProps.around, t)\n });\n viewport.longitude = longitude;\n viewport.latitude = latitude;\n }\n\n return viewport;\n }\n}\n","/* global requestAnimationFrame, cancelAnimationFrame */\nimport assert from './assert';\nimport {LinearInterpolator} from './transition';\nimport MapState from './map-state';\n\nconst noop = () => {};\n\n// crops the old easing function from x0 to 1 where x0 is the interruption point\n// returns a new easing function with domain [0, 1] and range [0, 1]\nexport function cropEasingFunction(easing, x0) {\n const y0 = easing(x0);\n return t => (1 / (1 - y0)) * (easing(t * (1 - x0) + x0) - y0);\n}\n\nexport const TRANSITION_EVENTS = {\n BREAK: 1,\n SNAP_TO_END: 2,\n IGNORE: 3,\n UPDATE: 4\n};\n\nconst DEFAULT_PROPS = {\n transitionDuration: 0,\n transitionEasing: t => t,\n transitionInterpolator: new LinearInterpolator(),\n transitionInterruption: TRANSITION_EVENTS.BREAK,\n onTransitionStart: noop,\n onTransitionInterrupt: noop,\n onTransitionEnd: noop\n};\n\nexport default class TransitionManager {\n static defaultProps = DEFAULT_PROPS;\n\n constructor(opts = {}) {\n this.props = null;\n this.onViewportChange = opts.onViewportChange || noop;\n this.onStateChange = opts.onStateChange || noop;\n this.time = opts.getTime || Date.now;\n }\n\n _animationFrame = null;\n\n // Returns current transitioned viewport.\n getViewportInTransition() {\n return this._animationFrame ? this.state.propsInTransition : null;\n }\n\n // Process the viewport change, either ignore or trigger a new transiton.\n // Return true if a new transition is triggered, false otherwise.\n processViewportChange(nextProps) {\n const currentProps = this.props;\n // Set this.props here as '_triggerTransition' calls '_updateViewport' that uses this.props.\n this.props = nextProps;\n\n // NOTE: Be cautious re-ordering statements in this function.\n if (!currentProps || this._shouldIgnoreViewportChange(currentProps, nextProps)) {\n return false;\n }\n\n if (this._isTransitionEnabled(nextProps)) {\n const startProps = Object.assign({}, currentProps);\n const endProps = Object.assign({}, nextProps);\n\n if (this._isTransitionInProgress()) {\n currentProps.onTransitionInterrupt();\n\n if (this.state.interruption === TRANSITION_EVENTS.SNAP_TO_END) {\n Object.assign(startProps, this.state.endProps);\n } else {\n Object.assign(startProps, this.state.propsInTransition);\n }\n\n if (this.state.interruption === TRANSITION_EVENTS.UPDATE) {\n const currentTime = this.time();\n const x0 = (currentTime - this.state.startTime) / this.state.duration;\n endProps.transitionDuration = this.state.duration - (currentTime - this.state.startTime);\n endProps.transitionEasing = cropEasingFunction(this.state.easing, x0);\n endProps.transitionInterpolator = startProps.transitionInterpolator;\n }\n }\n endProps.onTransitionStart();\n\n this._triggerTransition(startProps, endProps);\n\n return true;\n }\n\n if (this._isTransitionInProgress()) {\n currentProps.onTransitionInterrupt();\n this._endTransition();\n }\n\n return false;\n }\n\n // Helper methods\n\n _isTransitionInProgress() {\n return Boolean(this._animationFrame);\n }\n\n _isTransitionEnabled(props) {\n const {transitionDuration, transitionInterpolator} = props;\n return (\n (transitionDuration > 0 || transitionDuration === 'auto') && Boolean(transitionInterpolator)\n );\n }\n\n _isUpdateDueToCurrentTransition(props) {\n if (this.state.propsInTransition) {\n return this.state.interpolator.arePropsEqual(props, this.state.propsInTransition);\n }\n return false;\n }\n\n _shouldIgnoreViewportChange(currentProps, nextProps) {\n if (!currentProps) {\n return true;\n }\n if (this._isTransitionInProgress()) {\n // Ignore update if it is requested to be ignored\n return (\n this.state.interruption === TRANSITION_EVENTS.IGNORE ||\n // Ignore update if it is due to current active transition.\n this._isUpdateDueToCurrentTransition(nextProps)\n );\n }\n if (this._isTransitionEnabled(nextProps)) {\n // Ignore if none of the viewport props changed.\n return nextProps.transitionInterpolator.arePropsEqual(currentProps, nextProps);\n }\n\n return true;\n }\n\n _triggerTransition(startProps, endProps) {\n assert(this._isTransitionEnabled(endProps));\n\n if (this._animationFrame) {\n cancelAnimationFrame(this._animationFrame);\n }\n\n // update transitionDuration for 'auto' mode\n const {transitionInterpolator} = endProps;\n const duration = transitionInterpolator.getDuration\n ? transitionInterpolator.getDuration(startProps, endProps)\n : endProps.transitionDuration;\n\n if (duration === 0) {\n return;\n }\n\n const initialProps = endProps.transitionInterpolator.initializeProps(startProps, endProps);\n\n const interactionState = {\n inTransition: true,\n isZooming: startProps.zoom !== endProps.zoom,\n isPanning:\n startProps.longitude !== endProps.longitude || startProps.latitude !== endProps.latitude,\n isRotating: startProps.bearing !== endProps.bearing || startProps.pitch !== endProps.pitch\n };\n\n this.state = {\n // Save current transition props\n duration,\n easing: endProps.transitionEasing,\n interpolator: endProps.transitionInterpolator,\n interruption: endProps.transitionInterruption,\n\n startTime: this.time(),\n startProps: initialProps.start,\n endProps: initialProps.end,\n animation: null,\n propsInTransition: {}\n };\n this._onTransitionFrame();\n this.onStateChange(interactionState);\n }\n\n _onTransitionFrame = () => {\n // _updateViewport() may cancel the animation\n this._animationFrame = requestAnimationFrame(this._onTransitionFrame);\n this._updateViewport();\n };\n\n _endTransition() {\n if (this._animationFrame) {\n cancelAnimationFrame(this._animationFrame);\n this._animationFrame = null;\n }\n this.onStateChange({\n inTransition: false,\n isZooming: false,\n isPanning: false,\n isRotating: false\n });\n }\n\n _updateViewport() {\n // NOTE: Be cautious re-ordering statements in this function.\n const currentTime = this.time();\n const {startTime, duration, easing, interpolator, startProps, endProps} = this.state;\n let shouldEnd = false;\n let t = (currentTime - startTime) / duration;\n if (t >= 1) {\n t = 1;\n shouldEnd = true;\n }\n t = easing(t);\n\n const viewport = interpolator.interpolateProps(startProps, endProps, t);\n // Normalize viewport props\n const mapState = new MapState(Object.assign({}, this.props, viewport));\n this.state.propsInTransition = mapState.getViewportProps();\n\n this.onViewportChange(this.state.propsInTransition, this.props);\n\n if (shouldEnd) {\n this._endTransition();\n this.props.onTransitionEnd();\n }\n }\n}\n","/**\n * This file contains overrides the default\n * hammer.js functions to add our own utility\n */\n\n/* Hammer.js constants */\nconst INPUT_START = 1;\nconst INPUT_MOVE = 2;\nconst INPUT_END = 4;\nconst MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\n/**\n * Helper function that returns true if any element in an array meets given criteria.\n * Because older browsers do not support `Array.prototype.some`\n * @params array {Array}\n * @params predict {Function}\n */\nfunction some(array, predict) {\n for (let i = 0; i < array.length; i++) {\n if (predict(array[i])) {\n return true;\n }\n }\n return false;\n}\n\n/* eslint-disable no-invalid-this */\nexport function enhancePointerEventInput(PointerEventInput) {\n const oldHandler = PointerEventInput.prototype.handler;\n\n // overrides PointerEventInput.handler to accept right mouse button\n PointerEventInput.prototype.handler = function handler(ev) {\n const store = this.store;\n\n // Allow non-left mouse buttons through\n if (ev.button > 0) {\n if (!some(store, e => e.pointerId === ev.pointerId)) {\n store.push(ev);\n }\n }\n\n oldHandler.call(this, ev);\n };\n}\n\n// overrides MouseInput.handler to accept right mouse button\nexport function enhanceMouseInput(MouseInput) {\n MouseInput.prototype.handler = function handler(ev) {\n let eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the mouse button down\n if (eventType & INPUT_START && ev.button >= 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which === 0) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: 'mouse',\n srcEvent: ev\n });\n };\n}\n","import hammerjs from 'hammerjs';\nimport {enhancePointerEventInput, enhanceMouseInput} from './hammer-overrides';\n\nenhancePointerEventInput(hammerjs.PointerEventInput);\nenhanceMouseInput(hammerjs.MouseInput);\n\nexport const Manager = hammerjs.Manager;\n\nexport default hammerjs;\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport Hammer from './utils/hammer';\n\n// This module contains constants that must be conditionally required\n// due to `window`/`document` references downstream.\nexport const RECOGNIZERS = Hammer\n ? [\n [Hammer.Pan, {event: 'tripan', pointers: 3, threshold: 0, enable: false}],\n [Hammer.Rotate, {enable: false}],\n [Hammer.Pinch, {enable: false}],\n [Hammer.Swipe, {enable: false}],\n [Hammer.Pan, {threshold: 0, enable: false}],\n [Hammer.Press, {enable: false}],\n [Hammer.Tap, {event: 'doubletap', taps: 2, enable: false}],\n // TODO - rename to 'tap' and 'singletap' in the next major release\n [Hammer.Tap, {event: 'anytap', enable: false}],\n [Hammer.Tap, {enable: false}]\n ]\n : null;\n\n// Recognize the following gestures even if a given recognizer succeeds\nexport const RECOGNIZER_COMPATIBLE_MAP = {\n tripan: ['rotate', 'pinch', 'pan'],\n rotate: ['pinch'],\n pinch: ['pan'],\n pan: ['press', 'doubletap', 'anytap', 'tap'],\n doubletap: ['anytap'],\n anytap: ['tap']\n};\n\n// Recognize the folling gestures only if a given recognizer fails\nexport const RECOGNIZER_FALLBACK_MAP = {\n doubletap: ['tap']\n};\n\n/**\n * Only one set of basic input events will be fired by Hammer.js:\n * either pointer, touch, or mouse, depending on system support.\n * In order to enable an application to be agnostic of system support,\n * alias basic input events into \"classes\" of events: down, move, and up.\n * See `_onBasicInput()` for usage of these aliases.\n */\nexport const BASIC_EVENT_ALIASES = {\n pointerdown: 'pointerdown',\n pointermove: 'pointermove',\n pointerup: 'pointerup',\n touchstart: 'pointerdown',\n touchmove: 'pointermove',\n touchend: 'pointerup',\n mousedown: 'pointerdown',\n mousemove: 'pointermove',\n mouseup: 'pointerup'\n};\n\nexport const INPUT_EVENT_TYPES = {\n KEY_EVENTS: ['keydown', 'keyup'],\n MOUSE_EVENTS: ['mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout', 'mouseleave'],\n WHEEL_EVENTS: [\n // Chrome, Safari\n 'wheel',\n // IE\n 'mousewheel',\n // legacy Firefox\n 'DOMMouseScroll'\n ]\n};\n\n/**\n * \"Gestural\" events are those that have semantic meaning beyond the basic input event,\n * e.g. a click or tap is a sequence of `down` and `up` events with no `move` event in between.\n * Hammer.js handles these with its Recognizer system;\n * this block maps event names to the Recognizers required to detect the events.\n */\nexport const EVENT_RECOGNIZER_MAP = {\n tap: 'tap',\n anytap: 'anytap',\n doubletap: 'doubletap',\n press: 'press',\n pinch: 'pinch',\n pinchin: 'pinch',\n pinchout: 'pinch',\n pinchstart: 'pinch',\n pinchmove: 'pinch',\n pinchend: 'pinch',\n pinchcancel: 'pinch',\n rotate: 'rotate',\n rotatestart: 'rotate',\n rotatemove: 'rotate',\n rotateend: 'rotate',\n rotatecancel: 'rotate',\n tripan: 'tripan',\n tripanstart: 'tripan',\n tripanmove: 'tripan',\n tripanup: 'tripan',\n tripandown: 'tripan',\n tripanleft: 'tripan',\n tripanright: 'tripan',\n tripanend: 'tripan',\n tripancancel: 'tripan',\n pan: 'pan',\n panstart: 'pan',\n panmove: 'pan',\n panup: 'pan',\n pandown: 'pan',\n panleft: 'pan',\n panright: 'pan',\n panend: 'pan',\n pancancel: 'pan',\n swipe: 'swipe',\n swipeleft: 'swipe',\n swiperight: 'swipe',\n swipeup: 'swipe',\n swipedown: 'swipe'\n};\n\n/**\n * Map gestural events typically provided by browsers\n * that are not reported in 'hammer.input' events\n * to corresponding Hammer.js gestures.\n */\nexport const GESTURE_EVENT_ALIASES = {\n click: 'tap',\n anyclick: 'anytap',\n dblclick: 'doubletap',\n mousedown: 'pointerdown',\n mousemove: 'pointermove',\n mouseup: 'pointerup',\n mouseover: 'pointerover',\n mouseout: 'pointerout',\n mouseleave: 'pointerleave'\n};\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global'\n\n/* global window, global, document, navigator */\nexport const userAgent =\n typeof navigator !== 'undefined' && navigator.userAgent ? navigator.userAgent.toLowerCase() : '';\n\nconst window_ = typeof window !== 'undefined' ? window : global;\nconst global_ = typeof global !== 'undefined' ? global : window;\nconst document_ = typeof document !== 'undefined' ? document : {};\n\nexport {window_ as window, global_ as global, document_ as document};\n\n/*\n * Detect whether passive option is supported by the current browser.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n #Safely_detecting_option_support\n */\nlet passiveSupported = false;\n\n/* eslint-disable accessor-pairs, no-empty */\ntry {\n const options = {\n // This function will be called when the browser\n // attempts to access the passive property.\n get passive() {\n passiveSupported = true;\n return true;\n }\n };\n\n window_.addEventListener('test', options, options);\n window_.removeEventListener('test', options, options);\n} catch (err) {}\n\nexport {passiveSupported};\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {INPUT_EVENT_TYPES} from '../constants';\nimport {window, userAgent, passiveSupported} from '../utils/globals';\n\nconst firefox = userAgent.indexOf('firefox') !== -1;\n\nconst {WHEEL_EVENTS} = INPUT_EVENT_TYPES;\nconst EVENT_TYPE = 'wheel';\n\n// Constants for normalizing input delta\nconst WHEEL_DELTA_MAGIC_SCALER = 4.000244140625;\nconst WHEEL_DELTA_PER_LINE = 40;\n// Slow down zoom if shift key is held for more precise zooming\nconst SHIFT_MULTIPLIER = 0.25;\n\nexport default class WheelInput {\n constructor(element, callback, options = {}) {\n this.element = element;\n this.callback = callback;\n\n this.options = Object.assign({enable: true}, options);\n\n this.events = WHEEL_EVENTS.concat(options.events || []);\n\n this.handleEvent = this.handleEvent.bind(this);\n this.events.forEach(event =>\n element.addEventListener(event, this.handleEvent, passiveSupported ? {passive: false} : false)\n );\n }\n\n destroy() {\n this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n }\n\n /**\n * Enable this input (begin processing events)\n * if the specified event type is among those handled by this input.\n */\n enableEventType(eventType, enabled) {\n if (eventType === EVENT_TYPE) {\n this.options.enable = enabled;\n }\n }\n\n /* eslint-disable complexity, max-statements */\n handleEvent(event) {\n if (!this.options.enable) {\n return;\n }\n\n let value = event.deltaY;\n if (window.WheelEvent) {\n // Firefox doubles the values on retina screens...\n if (firefox && event.deltaMode === window.WheelEvent.DOM_DELTA_PIXEL) {\n value /= window.devicePixelRatio;\n }\n if (event.deltaMode === window.WheelEvent.DOM_DELTA_LINE) {\n value *= WHEEL_DELTA_PER_LINE;\n }\n }\n\n const wheelPosition = {\n x: event.clientX,\n y: event.clientY\n };\n\n if (value !== 0 && value % WHEEL_DELTA_MAGIC_SCALER === 0) {\n // This one is definitely a mouse wheel event.\n // Normalize this value to match trackpad.\n value = Math.floor(value / WHEEL_DELTA_MAGIC_SCALER);\n }\n\n if (event.shiftKey && value) {\n value = value * SHIFT_MULTIPLIER;\n }\n\n this._onWheel(event, -value, wheelPosition);\n }\n\n _onWheel(srcEvent, delta, position) {\n this.callback({\n type: EVENT_TYPE,\n center: position,\n delta,\n srcEvent,\n pointerType: 'mouse',\n target: srcEvent.target\n });\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {INPUT_EVENT_TYPES} from '../constants';\n\nconst {MOUSE_EVENTS} = INPUT_EVENT_TYPES;\nconst MOVE_EVENT_TYPE = 'pointermove';\nconst OVER_EVENT_TYPE = 'pointerover';\nconst OUT_EVENT_TYPE = 'pointerout';\nconst LEAVE_EVENT_TYPE = 'pointerleave';\n\n/**\n * Hammer.js swallows 'move' events (for pointer/touch/mouse)\n * when the pointer is not down. This class sets up a handler\n * specifically for these events to work around this limitation.\n * Note that this could be extended to more intelligently handle\n * move events across input types, e.g. storing multiple simultaneous\n * pointer/touch events, calculating speed/direction, etc.\n */\nexport default class MoveInput {\n constructor(element, callback, options = {}) {\n this.element = element;\n this.callback = callback;\n this.pressed = false;\n\n this.options = Object.assign({enable: true}, options);\n this.enableMoveEvent = this.options.enable;\n this.enableLeaveEvent = this.options.enable;\n this.enableOutEvent = this.options.enable;\n this.enableOverEvent = this.options.enable;\n\n this.events = MOUSE_EVENTS.concat(options.events || []);\n\n this.handleEvent = this.handleEvent.bind(this);\n this.events.forEach(event => element.addEventListener(event, this.handleEvent));\n }\n\n destroy() {\n this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n }\n\n /**\n * Enable this input (begin processing events)\n * if the specified event type is among those handled by this input.\n */\n enableEventType(eventType, enabled) {\n if (eventType === MOVE_EVENT_TYPE) {\n this.enableMoveEvent = enabled;\n }\n if (eventType === OVER_EVENT_TYPE) {\n this.enableOverEvent = enabled;\n }\n if (eventType === OUT_EVENT_TYPE) {\n this.enableOutEvent = enabled;\n }\n if (eventType === LEAVE_EVENT_TYPE) {\n this.enableLeaveEvent = enabled;\n }\n }\n\n handleEvent(event) {\n this.handleOverEvent(event);\n this.handleOutEvent(event);\n this.handleLeaveEvent(event);\n this.handleMoveEvent(event);\n }\n\n handleOverEvent(event) {\n if (this.enableOverEvent) {\n if (event.type === 'mouseover') {\n this.callback({\n type: OVER_EVENT_TYPE,\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n }\n }\n\n handleOutEvent(event) {\n if (this.enableOutEvent) {\n if (event.type === 'mouseout') {\n this.callback({\n type: OUT_EVENT_TYPE,\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n }\n }\n\n handleLeaveEvent(event) {\n if (this.enableLeaveEvent) {\n if (event.type === 'mouseleave') {\n this.callback({\n type: LEAVE_EVENT_TYPE,\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n }\n }\n\n handleMoveEvent(event) {\n if (this.enableMoveEvent) {\n switch (event.type) {\n case 'mousedown':\n if (event.button >= 0) {\n // Button is down\n this.pressed = true;\n }\n break;\n case 'mousemove':\n // Move events use `which` to track the button being pressed\n if (event.which === 0) {\n // Button is not down\n this.pressed = false;\n }\n if (!this.pressed) {\n // Drag events are emitted by hammer already\n // we just need to emit the move event on hover\n this.callback({\n type: MOVE_EVENT_TYPE,\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n break;\n case 'mouseup':\n this.pressed = false;\n break;\n default:\n }\n }\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {INPUT_EVENT_TYPES} from '../constants';\n\nconst {KEY_EVENTS} = INPUT_EVENT_TYPES;\nconst DOWN_EVENT_TYPE = 'keydown';\nconst UP_EVENT_TYPE = 'keyup';\n\nexport default class KeyInput {\n constructor(element, callback, options = {}) {\n this.element = element;\n this.callback = callback;\n\n this.options = Object.assign({enable: true}, options);\n this.enableDownEvent = this.options.enable;\n this.enableUpEvent = this.options.enable;\n\n this.events = KEY_EVENTS.concat(options.events || []);\n\n this.handleEvent = this.handleEvent.bind(this);\n\n element.tabIndex = options.tabIndex || 0;\n element.style.outline = 'none';\n this.events.forEach(event => element.addEventListener(event, this.handleEvent));\n }\n\n destroy() {\n this.events.forEach(event => this.element.removeEventListener(event, this.handleEvent));\n }\n\n /**\n * Enable this input (begin processing events)\n * if the specified event type is among those handled by this input.\n */\n enableEventType(eventType, enabled) {\n if (eventType === DOWN_EVENT_TYPE) {\n this.enableDownEvent = enabled;\n }\n if (eventType === UP_EVENT_TYPE) {\n this.enableUpEvent = enabled;\n }\n }\n\n handleEvent(event) {\n // Ignore if focused on text input\n const targetElement = event.target || event.srcElement;\n if (\n (targetElement.tagName === 'INPUT' && targetElement.type === 'text') ||\n targetElement.tagName === 'TEXTAREA'\n ) {\n return;\n }\n\n if (this.enableDownEvent && event.type === 'keydown') {\n this.callback({\n type: DOWN_EVENT_TYPE,\n srcEvent: event,\n key: event.key,\n target: event.target\n });\n }\n\n if (this.enableUpEvent && event.type === 'keyup') {\n this.callback({\n type: UP_EVENT_TYPE,\n srcEvent: event,\n key: event.key,\n target: event.target\n });\n }\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nconst EVENT_TYPE = 'contextmenu';\n\nexport default class ContextmenuInput {\n constructor(element, callback, options = {}) {\n this.element = element;\n this.callback = callback;\n\n this.options = Object.assign({enable: true}, options);\n\n this.handleEvent = this.handleEvent.bind(this);\n element.addEventListener('contextmenu', this.handleEvent);\n }\n\n destroy() {\n this.element.removeEventListener('contextmenu', this.handleEvent);\n }\n\n /**\n * Enable this input (begin processing events)\n * if the specified event type is among those handled by this input.\n */\n enableEventType(eventType, enabled) {\n if (eventType === EVENT_TYPE) {\n this.options.enable = enabled;\n }\n }\n\n handleEvent(event) {\n if (!this.options.enable) {\n return;\n }\n\n this.callback({\n type: EVENT_TYPE,\n center: {\n x: event.clientX,\n y: event.clientY\n },\n srcEvent: event,\n pointerType: 'mouse',\n target: event.target\n });\n }\n}\n","/* Constants */\nconst DOWN_EVENT = 1;\nconst MOVE_EVENT = 2;\nconst UP_EVENT = 4;\nconst MOUSE_EVENTS = {\n pointerdown: DOWN_EVENT,\n pointermove: MOVE_EVENT,\n pointerup: UP_EVENT,\n mousedown: DOWN_EVENT,\n mousemove: MOVE_EVENT,\n mouseup: UP_EVENT\n};\n\n// MouseEvent.which https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which\nconst MOUSE_EVENT_WHICH_LEFT = 1;\nconst MOUSE_EVENT_WHICH_MIDDLE = 2;\nconst MOUSE_EVENT_WHICH_RIGHT = 3;\n// MouseEvent.button https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\nconst MOUSE_EVENT_BUTTON_LEFT = 0;\nconst MOUSE_EVENT_BUTTON_MIDDLE = 1;\nconst MOUSE_EVENT_BUTTON_RIGHT = 2;\n// MouseEvent.buttons https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\nconst MOUSE_EVENT_BUTTONS_LEFT_MASK = 1;\nconst MOUSE_EVENT_BUTTONS_RIGHT_MASK = 2;\nconst MOUSE_EVENT_BUTTONS_MIDDLE_MASK = 4;\n\n/**\n * Extract the involved mouse button\n */\nexport function whichButtons(event) {\n const eventType = MOUSE_EVENTS[event.srcEvent.type];\n if (!eventType) {\n // Not a mouse evet\n return null;\n }\n\n const {buttons, button, which} = event.srcEvent;\n let leftButton = false;\n let middleButton = false;\n let rightButton = false;\n\n if (\n // button is up, need to find out which one was pressed before\n eventType === UP_EVENT ||\n // moving but does not support `buttons` API\n (eventType === MOVE_EVENT && !Number.isFinite(buttons))\n ) {\n leftButton = which === MOUSE_EVENT_WHICH_LEFT;\n middleButton = which === MOUSE_EVENT_WHICH_MIDDLE;\n rightButton = which === MOUSE_EVENT_WHICH_RIGHT;\n } else if (eventType === MOVE_EVENT) {\n leftButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_LEFT_MASK);\n middleButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_MIDDLE_MASK);\n rightButton = Boolean(buttons & MOUSE_EVENT_BUTTONS_RIGHT_MASK);\n } else if (eventType === DOWN_EVENT) {\n leftButton = button === MOUSE_EVENT_BUTTON_LEFT;\n middleButton = button === MOUSE_EVENT_BUTTON_MIDDLE;\n rightButton = button === MOUSE_EVENT_BUTTON_RIGHT;\n }\n\n return {leftButton, middleButton, rightButton};\n}\n\n/**\n * Calculate event position relative to the root element\n */\nexport function getOffsetPosition(event, rootElement) {\n const {srcEvent} = event;\n\n // `center` is a hammer.js event property\n if (!event.center && !Number.isFinite(srcEvent.clientX)) {\n // Not a gestural event\n return null;\n }\n\n const center = event.center || {\n x: srcEvent.clientX,\n y: srcEvent.clientY\n };\n\n const rect = rootElement.getBoundingClientRect();\n\n // Fix scale for map affected by a CSS transform.\n // See https://stackoverflow.com/a/26893663/3528533\n const scaleX = rect.width / rootElement.offsetWidth;\n const scaleY = rect.height / rootElement.offsetHeight;\n\n // Calculate center relative to the root element\n const offsetCenter = {\n x: (center.x - rect.left - rootElement.clientLeft) / scaleX,\n y: (center.y - rect.top - rootElement.clientTop) / scaleY\n };\n\n return {center, offsetCenter};\n}\n","import {whichButtons, getOffsetPosition} from './event-utils';\n\nconst DEFAULT_OPTIONS = {\n srcElement: 'root',\n priority: 0\n};\n\nexport default class EventRegistrar {\n constructor(eventManager) {\n this.eventManager = eventManager;\n this.handlers = [];\n // Element -> handler map\n this.handlersByElement = new Map();\n\n this.handleEvent = this.handleEvent.bind(this);\n this._active = false;\n }\n\n // Returns true if there are no non-passive handlers\n isEmpty() {\n return !this._active;\n }\n\n add(type, handler, opts, once = false, passive = false) {\n const {handlers, handlersByElement} = this;\n\n if (opts && (typeof opts !== 'object' || opts.addEventListener)) {\n // is DOM element, backward compatibility\n opts = {srcElement: opts};\n }\n opts = opts ? Object.assign({}, DEFAULT_OPTIONS, opts) : DEFAULT_OPTIONS;\n\n let entries = handlersByElement.get(opts.srcElement);\n if (!entries) {\n entries = [];\n handlersByElement.set(opts.srcElement, entries);\n }\n const entry = {type, handler, srcElement: opts.srcElement, priority: opts.priority};\n if (once) {\n entry.once = true;\n }\n if (passive) {\n entry.passive = true;\n }\n handlers.push(entry);\n this._active = this._active || !entry.passive;\n\n // Sort handlers by descending priority\n // Handlers with the same priority are excuted in the order of registration\n let insertPosition = entries.length - 1;\n while (insertPosition >= 0) {\n if (entries[insertPosition].priority >= entry.priority) {\n break;\n }\n insertPosition--;\n }\n entries.splice(insertPosition + 1, 0, entry);\n }\n\n remove(type, handler) {\n const {handlers, handlersByElement} = this;\n\n for (let i = handlers.length - 1; i >= 0; i--) {\n const entry = handlers[i];\n\n if (entry.type === type && entry.handler === handler) {\n handlers.splice(i, 1);\n const entries = handlersByElement.get(entry.srcElement);\n entries.splice(entries.indexOf(entry), 1);\n if (entries.length === 0) {\n handlersByElement.delete(entry.srcElement);\n }\n }\n }\n this._active = handlers.some(entry => !entry.passive);\n }\n\n /**\n * Handles hammerjs event\n */\n handleEvent(event) {\n if (this.isEmpty()) {\n return;\n }\n\n const mjolnirEvent = this._normalizeEvent(event);\n let target = event.srcEvent.target;\n\n while (target && target !== mjolnirEvent.rootElement) {\n this._emit(mjolnirEvent, target);\n if (mjolnirEvent.handled) {\n return;\n }\n target = target.parentNode;\n }\n this._emit(mjolnirEvent, 'root');\n }\n\n /**\n * Invoke handlers on a particular element\n */\n _emit(event, srcElement) {\n const entries = this.handlersByElement.get(srcElement);\n\n if (entries) {\n let immediatePropagationStopped = false;\n\n // Prevents the current event from bubbling up\n const stopPropagation = () => {\n event.handled = true;\n };\n // Prevent any remaining listeners from being called\n const stopImmediatePropagation = () => {\n event.handled = true;\n immediatePropagationStopped = true;\n };\n const entriesToRemove = [];\n\n for (let i = 0; i < entries.length; i++) {\n const {type, handler, once} = entries[i];\n handler(\n Object.assign({}, event, {\n type,\n stopPropagation,\n stopImmediatePropagation\n })\n );\n if (once) {\n entriesToRemove.push(entries[i]);\n }\n if (immediatePropagationStopped) {\n break;\n }\n }\n\n for (let i = 0; i < entriesToRemove.length; i++) {\n const {type, handler} = entriesToRemove[i];\n this.remove(type, handler);\n }\n }\n }\n\n /**\n * Normalizes hammerjs and custom events to have predictable fields.\n */\n _normalizeEvent(event) {\n const rootElement = this.eventManager.element;\n\n return Object.assign({}, event, whichButtons(event), getOffsetPosition(event, rootElement), {\n handled: false,\n rootElement\n });\n }\n}\n","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {Manager} from './utils/hammer';\n\nimport WheelInput from './inputs/wheel-input';\nimport MoveInput from './inputs/move-input';\nimport KeyInput from './inputs/key-input';\nimport ContextmenuInput from './inputs/contextmenu-input';\n\nimport EventRegistrar from './utils/event-registrar';\n\nimport {\n BASIC_EVENT_ALIASES,\n EVENT_RECOGNIZER_MAP,\n GESTURE_EVENT_ALIASES,\n RECOGNIZERS,\n RECOGNIZER_COMPATIBLE_MAP,\n RECOGNIZER_FALLBACK_MAP\n} from './constants';\n\nconst DEFAULT_OPTIONS = {\n // event handlers\n events: null,\n // custom recognizers\n recognizers: null,\n recognizerOptions: {},\n // Manager class\n Manager,\n // allow browser default touch action\n // https://github.com/uber/react-map-gl/issues/506\n touchAction: 'none',\n tabIndex: 0\n};\n\n// Unified API for subscribing to events about both\n// basic input events (e.g. 'mousemove', 'touchstart', 'wheel')\n// and gestural input (e.g. 'click', 'tap', 'panstart').\n// Delegates gesture related event registration and handling to Hammer.js.\nexport default class EventManager {\n constructor(element = null, options = {}) {\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n this.events = new Map();\n\n this._onBasicInput = this._onBasicInput.bind(this);\n this._onOtherEvent = this._onOtherEvent.bind(this);\n\n this.setElement(element);\n\n // Register all passed events.\n const {events} = options;\n if (events) {\n this.on(events);\n }\n }\n\n setElement(element) {\n if (this.element) {\n // unregister all events\n this.destroy();\n }\n this.element = element;\n if (!element) {\n return;\n }\n\n const {options} = this;\n const ManagerClass = options.Manager;\n\n this.manager = new ManagerClass(element, {\n touchAction: options.touchAction,\n recognizers: options.recognizers || RECOGNIZERS\n }).on('hammer.input', this._onBasicInput);\n\n if (!options.recognizers) {\n // Set default recognize withs\n // http://hammerjs.github.io/recognize-with/\n Object.keys(RECOGNIZER_COMPATIBLE_MAP).forEach(name => {\n const recognizer = this.manager.get(name);\n if (recognizer) {\n RECOGNIZER_COMPATIBLE_MAP[name].forEach(otherName => {\n recognizer.recognizeWith(otherName);\n });\n }\n });\n }\n\n // Set recognizer options\n for (const recognizerName in options.recognizerOptions) {\n const recognizer = this.manager.get(recognizerName);\n if (recognizer) {\n const recognizerOption = options.recognizerOptions[recognizerName];\n // `enable` is managed by the event registrations\n delete recognizerOption.enable;\n recognizer.set(recognizerOption);\n }\n }\n\n // Handle events not handled by Hammer.js:\n // - mouse wheel\n // - pointer/touch/mouse move\n this.wheelInput = new WheelInput(element, this._onOtherEvent, {\n enable: false\n });\n this.moveInput = new MoveInput(element, this._onOtherEvent, {\n enable: false\n });\n this.keyInput = new KeyInput(element, this._onOtherEvent, {\n enable: false,\n tabIndex: options.tabIndex\n });\n this.contextmenuInput = new ContextmenuInput(element, this._onOtherEvent, {\n enable: false\n });\n\n // Register all existing events\n for (const [eventAlias, eventRegistrar] of this.events) {\n if (!eventRegistrar.isEmpty()) {\n // Enable recognizer for this event.\n this._toggleRecognizer(eventRegistrar.recognizerName, true);\n this.manager.on(eventAlias, eventRegistrar.handleEvent);\n }\n }\n }\n\n // Tear down internal event management implementations.\n destroy() {\n if (this.element) {\n // wheelInput etc. are created in setElement() and therefore\n // cannot exist if there is no element\n this.wheelInput.destroy();\n this.moveInput.destroy();\n this.keyInput.destroy();\n this.contextmenuInput.destroy();\n this.manager.destroy();\n\n this.wheelInput = null;\n this.moveInput = null;\n this.keyInput = null;\n this.contextmenuInput = null;\n this.manager = null;\n this.element = null;\n }\n }\n\n // Register an event handler function to be called on `event`.\n on(event, handler, opts) {\n this._addEventHandler(event, handler, opts, false);\n }\n\n // Register an event handler function to be called on `event`, then remove it\n once(event, handler, opts) {\n this._addEventHandler(event, handler, opts, true);\n }\n\n // Register an event handler function to be called on `event`\n // This handler does not ask the event to be recognized at all times.\n // Instead, it only \"intercepts\" the event if some other handler is getting it.\n watch(event, handler, opts) {\n this._addEventHandler(event, handler, opts, false, true);\n }\n\n /**\n * Deregister a previously-registered event handler.\n * @param {string|Object} event An event name (String) or map of event names to handlers\n * @param {Function} [handler] The function to be called on `event`.\n */\n off(event, handler) {\n this._removeEventHandler(event, handler);\n }\n\n /*\n * Enable/disable recognizer for the given event\n */\n _toggleRecognizer(name, enabled) {\n const {manager} = this;\n if (!manager) {\n return;\n }\n const recognizer = manager.get(name);\n if (recognizer && recognizer.options.enable !== enabled) {\n recognizer.set({enable: enabled});\n\n const fallbackRecognizers = RECOGNIZER_FALLBACK_MAP[name];\n if (fallbackRecognizers && !this.options.recognizers) {\n // Set default require failures\n // http://hammerjs.github.io/require-failure/\n fallbackRecognizers.forEach(otherName => {\n const otherRecognizer = manager.get(otherName);\n if (enabled) {\n // Wait for this recognizer to fail\n otherRecognizer.requireFailure(name);\n /**\n * This seems to be a bug in hammerjs:\n * requireFailure() adds both ways\n * dropRequireFailure() only drops one way\n * https://github.com/hammerjs/hammer.js/blob/master/src/recognizerjs/\n recognizer-constructor.js#L136\n */\n recognizer.dropRequireFailure(otherName);\n } else {\n // Do not wait for this recognizer to fail\n otherRecognizer.dropRequireFailure(name);\n }\n });\n }\n }\n this.wheelInput.enableEventType(name, enabled);\n this.moveInput.enableEventType(name, enabled);\n this.keyInput.enableEventType(name, enabled);\n this.contextmenuInput.enableEventType(name, enabled);\n }\n\n /**\n * Process the event registration for a single event + handler.\n */\n _addEventHandler(event, handler, opts, once, passive) {\n if (typeof event !== 'string') {\n opts = handler;\n // If `event` is a map, call `on()` for each entry.\n for (const eventName in event) {\n this._addEventHandler(eventName, event[eventName], opts, once, passive);\n }\n return;\n }\n\n const {manager, events} = this;\n // Alias to a recognized gesture as necessary.\n const eventAlias = GESTURE_EVENT_ALIASES[event] || event;\n\n let eventRegistrar = events.get(eventAlias);\n if (!eventRegistrar) {\n eventRegistrar = new EventRegistrar(this);\n events.set(eventAlias, eventRegistrar);\n // Enable recognizer for this event.\n eventRegistrar.recognizerName = EVENT_RECOGNIZER_MAP[eventAlias] || eventAlias;\n // Listen to the event\n if (manager) {\n manager.on(eventAlias, eventRegistrar.handleEvent);\n }\n }\n eventRegistrar.add(event, handler, opts, once, passive);\n if (!eventRegistrar.isEmpty()) {\n this._toggleRecognizer(eventRegistrar.recognizerName, true);\n }\n }\n\n /**\n * Process the event deregistration for a single event + handler.\n */\n _removeEventHandler(event, handler) {\n if (typeof event !== 'string') {\n // If `event` is a map, call `off()` for each entry.\n for (const eventName in event) {\n this._removeEventHandler(eventName, event[eventName]);\n }\n return;\n }\n\n const {events} = this;\n // Alias to a recognized gesture as necessary.\n const eventAlias = GESTURE_EVENT_ALIASES[event] || event;\n\n const eventRegistrar = events.get(eventAlias);\n\n if (!eventRegistrar) {\n return;\n }\n\n eventRegistrar.remove(event, handler);\n\n if (eventRegistrar.isEmpty()) {\n const {recognizerName} = eventRegistrar;\n // Disable recognizer if no more handlers are attached to its events\n let isRecognizerUsed = false;\n for (const eh of events.values()) {\n if (eh.recognizerName === recognizerName && !eh.isEmpty()) {\n isRecognizerUsed = true;\n break;\n }\n }\n if (!isRecognizerUsed) {\n this._toggleRecognizer(recognizerName, false);\n }\n }\n }\n\n /**\n * Handle basic events using the 'hammer.input' Hammer.js API:\n * Before running Recognizers, Hammer emits a 'hammer.input' event\n * with the basic event info. This function emits all basic events\n * aliased to the \"class\" of event received.\n * See constants.BASIC_EVENT_CLASSES basic event class definitions.\n */\n _onBasicInput(event) {\n const {srcEvent} = event;\n const alias = BASIC_EVENT_ALIASES[srcEvent.type];\n if (alias) {\n // fire all events aliased to srcEvent.type\n this.manager.emit(alias, event);\n }\n }\n\n /**\n * Handle events not supported by Hammer.js,\n * and pipe back out through same (Hammer) channel used by other events.\n */\n _onOtherEvent(event) {\n // console.log('onotherevent', event.type, event)\n this.manager.emit(event.type, event);\n }\n}\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable complexity, max-statements */\nimport MapState from './map-state';\nimport {LinearInterpolator} from './transition';\nimport TransitionManager, {TRANSITION_EVENTS} from './transition-manager';\n\nconst NO_TRANSITION_PROPS = {\n transitionDuration: 0\n};\nexport const LINEAR_TRANSITION_PROPS = {\n transitionDuration: 300,\n transitionEasing: t => t,\n transitionInterpolator: new LinearInterpolator(),\n transitionInterruption: TRANSITION_EVENTS.BREAK\n};\n\n// EVENT HANDLING PARAMETERS\nconst DEFAULT_INERTIA = 300;\nconst INERTIA_EASING = t => 1 - (1 - t) * (1 - t);\n\nconst EVENT_TYPES = {\n WHEEL: ['wheel'],\n PAN: ['panstart', 'panmove', 'panend'],\n PINCH: ['pinchstart', 'pinchmove', 'pinchend'],\n TRIPLE_PAN: ['tripanstart', 'tripanmove', 'tripanend'],\n DOUBLE_TAP: ['doubletap'],\n KEYBOARD: ['keydown']\n};\n\n/**\n * @classdesc\n * A class that handles events and updates mercator style viewport parameters\n */\nexport default class MapController {\n events = [];\n scrollZoom = true;\n dragPan = true;\n dragRotate = true;\n doubleClickZoom = true;\n touchZoom = true;\n touchRotate = false;\n keyboard = true;\n\n _interactionState = {\n isDragging: false\n };\n _events = {};\n\n constructor() {\n this.handleEvent = this.handleEvent.bind(this);\n this._transitionManager = new TransitionManager({\n onViewportChange: this._onTransition,\n onStateChange: this._setInteractionState\n });\n }\n\n /**\n * Callback for events\n * @param {object} event - a mjolnir.js Event\n */\n handleEvent(event) {\n this.mapState = this.getMapState();\n const eventStartBlocked = this._eventStartBlocked;\n\n switch (event.type) {\n case 'panstart':\n return eventStartBlocked ? false : this._onPanStart(event);\n case 'panmove':\n return this._onPan(event);\n case 'panend':\n return this._onPanEnd(event);\n case 'pinchstart':\n return eventStartBlocked ? false : this._onPinchStart(event);\n case 'pinchmove':\n return this._onPinch(event);\n case 'pinchend':\n return this._onPinchEnd(event);\n case 'tripanstart':\n return eventStartBlocked ? false : this._onTriplePanStart(event);\n case 'tripanmove':\n return this._onTriplePan(event);\n case 'tripanend':\n return this._onTriplePanEnd(event);\n case 'doubletap':\n return this._onDoubleTap(event);\n case 'wheel':\n return this._onWheel(event);\n case 'keydown':\n return this._onKeyDown(event);\n default:\n return false;\n }\n }\n\n /* Event utils */\n // Event object: http://hammerjs.github.io/api/#event-object\n getCenter(event) {\n const {\n offsetCenter: {x, y}\n } = event;\n return [x, y];\n }\n\n isFunctionKeyPressed(event) {\n const {srcEvent} = event;\n return Boolean(srcEvent.metaKey || srcEvent.altKey || srcEvent.ctrlKey || srcEvent.shiftKey);\n }\n\n // When a multi-touch event ends, e.g. pinch, not all pointers are lifted at the same time.\n // This triggers a brief `pan` event.\n // Calling this method will temporarily disable *start events to avoid conflicting transitions.\n blockEvents(timeout) {\n /* global setTimeout */\n const timer = setTimeout(() => {\n if (this._eventStartBlocked === timer) {\n this._eventStartBlocked = null;\n }\n }, timeout);\n this._eventStartBlocked = timer;\n }\n\n /* Callback util */\n // formats map state and invokes callback function\n updateViewport(newMapState, extraProps, interactionState) {\n // Always trigger callback on initial update (resize)\n const oldViewport =\n this.mapState instanceof MapState ? this.mapState.getViewportProps() : this.mapState;\n const newViewport = {...newMapState.getViewportProps(), ...extraProps};\n\n const viewStateChanged = Object.keys(newViewport).some(\n key => oldViewport[key] !== newViewport[key]\n );\n\n this._state = newMapState.getState();\n this._setInteractionState(interactionState);\n\n // viewState has changed\n if (viewStateChanged) {\n this.onViewportChange(newViewport, this._interactionState, oldViewport);\n }\n }\n\n _setInteractionState = newState => {\n Object.assign(this._interactionState, newState);\n if (this.onStateChange) {\n this.onStateChange(this._interactionState);\n }\n };\n\n _onTransition = (newViewport, oldViewport) => {\n this.onViewportChange(newViewport, this._interactionState, oldViewport);\n };\n\n getMapState(overrides) {\n return new MapState({...this.mapStateProps, ...this._state, ...overrides});\n }\n\n isDragging() {\n return this._interactionState.isDragging;\n }\n\n /**\n * Extract interactivity options\n */\n setOptions(options) {\n const {\n onViewportChange,\n onStateChange,\n eventManager = this.eventManager,\n\n isInteractive = true,\n scrollZoom = this.scrollZoom,\n dragPan = this.dragPan,\n dragRotate = this.dragRotate,\n doubleClickZoom = this.doubleClickZoom,\n touchZoom = this.touchZoom,\n touchRotate = this.touchRotate,\n keyboard = this.keyboard\n } = options;\n\n this.onViewportChange = onViewportChange;\n this.onStateChange = onStateChange;\n\n const prevOptions = this.mapStateProps || {};\n const dimensionChanged =\n prevOptions.height !== options.height || prevOptions.width !== options.width;\n\n this.mapStateProps = options;\n\n if (dimensionChanged) {\n // Dimensions changed, normalize the props and fire change event\n this.mapState = prevOptions;\n this.updateViewport(new MapState(options));\n }\n // Update transition\n this._transitionManager.processViewportChange(options);\n\n if (this.eventManager !== eventManager) {\n // EventManager has changed\n this.eventManager = eventManager;\n this._events = {};\n this.toggleEvents(this.events, true);\n }\n\n // Register/unregister events\n this.toggleEvents(EVENT_TYPES.WHEEL, isInteractive && Boolean(scrollZoom));\n this.toggleEvents(EVENT_TYPES.PAN, isInteractive && Boolean(dragPan || dragRotate));\n this.toggleEvents(EVENT_TYPES.PINCH, isInteractive && Boolean(touchZoom || touchRotate));\n this.toggleEvents(EVENT_TYPES.TRIPLE_PAN, isInteractive && Boolean(touchRotate));\n this.toggleEvents(EVENT_TYPES.DOUBLE_TAP, isInteractive && Boolean(doubleClickZoom));\n this.toggleEvents(EVENT_TYPES.KEYBOARD, isInteractive && Boolean(keyboard));\n\n // Interaction toggles\n this.scrollZoom = scrollZoom;\n this.dragPan = dragPan;\n this.dragRotate = dragRotate;\n this.doubleClickZoom = doubleClickZoom;\n this.touchZoom = touchZoom;\n this.touchRotate = touchRotate;\n this.keyboard = keyboard;\n }\n\n toggleEvents(eventNames, enabled) {\n if (this.eventManager) {\n eventNames.forEach(eventName => {\n if (this._events[eventName] !== enabled) {\n this._events[eventName] = enabled;\n if (enabled) {\n this.eventManager.on(eventName, this.handleEvent);\n } else {\n this.eventManager.off(eventName, this.handleEvent);\n }\n }\n });\n }\n }\n\n /* Event handlers */\n // Default handler for the `panstart` event.\n _onPanStart(event) {\n const pos = this.getCenter(event);\n this._panRotate = this.isFunctionKeyPressed(event) || event.rightButton;\n const newMapState = this._panRotate\n ? this.mapState.rotateStart({pos})\n : this.mapState.panStart({pos});\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {isDragging: true});\n return true;\n }\n\n // Default handler for the `panmove` event.\n _onPan(event) {\n if (!this.isDragging()) {\n return false;\n }\n return this._panRotate ? this._onPanRotate(event) : this._onPanMove(event);\n }\n\n // Default handler for the `panend` event.\n _onPanEnd(event) {\n if (!this.isDragging()) {\n return false;\n }\n return this._panRotate ? this._onPanRotateEnd(event) : this._onPanMoveEnd(event);\n }\n\n // Default handler for panning to move.\n // Called by `_onPan` when panning without function key pressed.\n _onPanMove(event) {\n if (!this.dragPan) {\n return false;\n }\n const pos = this.getCenter(event);\n const newMapState = this.mapState.pan({pos});\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {isPanning: true});\n return true;\n }\n\n _onPanMoveEnd(event) {\n if (this.dragPan) {\n const {inertia = DEFAULT_INERTIA} = this.dragPan;\n if (inertia && event.velocity) {\n const pos = this.getCenter(event);\n const endPos = [\n pos[0] + (event.velocityX * inertia) / 2,\n pos[1] + (event.velocityY * inertia) / 2\n ];\n const newControllerState = this.mapState.pan({pos: endPos}).panEnd();\n this.updateViewport(\n newControllerState,\n {\n ...LINEAR_TRANSITION_PROPS,\n transitionDuration: inertia,\n transitionEasing: INERTIA_EASING\n },\n {\n isDragging: false,\n isPanning: true\n }\n );\n return true;\n }\n }\n const newMapState = this.mapState.panEnd();\n this.updateViewport(newMapState, null, {\n isDragging: false,\n isPanning: false\n });\n return true;\n }\n\n // Default handler for panning to rotate.\n // Called by `_onPan` when panning with function key pressed.\n _onPanRotate(event) {\n if (!this.dragRotate) {\n return false;\n }\n\n const pos = this.getCenter(event);\n const newMapState = this.mapState.rotate({pos});\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {isRotating: true});\n return true;\n }\n\n _onPanRotateEnd(event) {\n if (this.dragRotate) {\n const {inertia = DEFAULT_INERTIA} = this.dragRotate;\n if (inertia && event.velocity) {\n const pos = this.getCenter(event);\n const endPos = [\n pos[0] + (event.velocityX * inertia) / 2,\n pos[1] + (event.velocityY * inertia) / 2\n ];\n const newControllerState = this.mapState.rotate({pos: endPos}).rotateEnd();\n this.updateViewport(\n newControllerState,\n {\n ...LINEAR_TRANSITION_PROPS,\n transitionDuration: inertia,\n transitionEasing: INERTIA_EASING\n },\n {\n isDragging: false,\n isRotating: true\n }\n );\n return true;\n }\n }\n const newMapState = this.mapState.panEnd();\n this.updateViewport(newMapState, null, {\n isDragging: false,\n isRotating: false\n });\n return true;\n }\n\n // Default handler for the `wheel` event.\n _onWheel(event) {\n if (!this.scrollZoom) {\n return false;\n }\n\n const {speed = 0.01, smooth = false} = this.scrollZoom;\n\n event.preventDefault();\n\n const pos = this.getCenter(event);\n const {delta} = event;\n\n // Map wheel delta to relative scale\n let scale = 2 / (1 + Math.exp(-Math.abs(delta * speed)));\n if (delta < 0 && scale !== 0) {\n scale = 1 / scale;\n }\n\n const newMapState = this.mapState.zoom({pos, scale});\n if (newMapState.getViewportProps().zoom === this.mapStateProps.zoom) {\n return false;\n }\n\n this.updateViewport(\n newMapState,\n {\n ...LINEAR_TRANSITION_PROPS,\n transitionInterpolator: new LinearInterpolator({around: pos}),\n transitionDuration: smooth ? 250 : 1\n },\n {\n isPanning: true,\n isZooming: true\n }\n );\n return true;\n }\n\n // Default handler for the `pinchstart` event.\n _onPinchStart(event) {\n const pos = this.getCenter(event);\n const newMapState = this.mapState.zoomStart({pos}).rotateStart({pos});\n // hack - hammer's `rotation` field doesn't seem to produce the correct angle\n this._startPinchRotation = event.rotation;\n this._lastPinchEvent = event;\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {isDragging: true});\n return true;\n }\n\n // Default handler for the `pinch` event.\n _onPinch(event) {\n if (!this.isDragging()) {\n return false;\n }\n if (!this.touchZoom && !this.touchRotate) {\n return false;\n }\n\n let newMapState = this.mapState;\n if (this.touchZoom) {\n const {scale} = event;\n const pos = this.getCenter(event);\n newMapState = newMapState.zoom({pos, scale});\n }\n if (this.touchRotate) {\n const {rotation} = event;\n newMapState = newMapState.rotate({\n deltaAngleX: this._startPinchRotation - rotation\n });\n }\n\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {\n isDragging: true,\n isPanning: Boolean(this.touchZoom),\n isZooming: Boolean(this.touchZoom),\n isRotating: Boolean(this.touchRotate)\n });\n this._lastPinchEvent = event;\n return true;\n }\n\n // Default handler for the `pinchend` event.\n _onPinchEnd(event) {\n if (!this.isDragging()) {\n return false;\n }\n if (this.touchZoom) {\n const {inertia = DEFAULT_INERTIA} = this.touchZoom;\n const {_lastPinchEvent} = this;\n if (inertia && _lastPinchEvent && event.scale !== _lastPinchEvent.scale) {\n const pos = this.getCenter(event);\n let newMapState = this.mapState.rotateEnd();\n const z = Math.log2(event.scale);\n const velocityZ =\n (z - Math.log2(_lastPinchEvent.scale)) / (event.deltaTime - _lastPinchEvent.deltaTime);\n const endScale = Math.pow(2, z + (velocityZ * inertia) / 2);\n newMapState = newMapState.zoom({pos, scale: endScale}).zoomEnd();\n\n this.updateViewport(\n newMapState,\n {\n ...LINEAR_TRANSITION_PROPS,\n transitionInterpolator: new LinearInterpolator({around: pos}),\n transitionDuration: inertia,\n transitionEasing: INERTIA_EASING\n },\n {\n isDragging: false,\n isPanning: Boolean(this.touchZoom),\n isZooming: Boolean(this.touchZoom),\n isRotating: false\n }\n );\n this.blockEvents(inertia);\n return true;\n }\n }\n\n const newMapState = this.mapState.zoomEnd().rotateEnd();\n this._state.startPinchRotation = 0;\n this.updateViewport(newMapState, null, {\n isDragging: false,\n isPanning: false,\n isZooming: false,\n isRotating: false\n });\n this._startPinchRotation = null;\n this._lastPinchEvent = null;\n return true;\n }\n\n _onTriplePanStart(event) {\n const pos = this.getCenter(event);\n const newMapState = this.mapState.rotateStart({pos});\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {isDragging: true});\n return true;\n }\n\n _onTriplePan(event) {\n if (!this.isDragging()) {\n return false;\n }\n if (!this.touchRotate) {\n return false;\n }\n\n const pos = this.getCenter(event);\n pos[0] -= event.deltaX;\n\n const newMapState = this.mapState.rotate({pos});\n this.updateViewport(newMapState, NO_TRANSITION_PROPS, {isRotating: true});\n return true;\n }\n\n _onTriplePanEnd(event) {\n if (!this.isDragging()) {\n return false;\n }\n if (this.touchRotate) {\n const {inertia = DEFAULT_INERTIA} = this.touchRotate;\n if (inertia && event.velocityY) {\n const pos = this.getCenter(event);\n const endPos = [pos[0], (pos[1] += (event.velocityY * inertia) / 2)];\n const newMapState = this.mapState.rotate({pos: endPos});\n this.updateViewport(\n newMapState,\n {\n ...LINEAR_TRANSITION_PROPS,\n transitionDuration: inertia,\n transitionEasing: INERTIA_EASING\n },\n {\n isDragging: false,\n isRotating: true\n }\n );\n this.blockEvents(inertia);\n return false;\n }\n }\n const newMapState = this.mapState.rotateEnd();\n this.updateViewport(newMapState, null, {\n isDragging: false,\n isRotating: false\n });\n return true;\n }\n\n // Default handler for the `doubletap` event.\n _onDoubleTap(event) {\n if (!this.doubleClickZoom) {\n return false;\n }\n const pos = this.getCenter(event);\n const isZoomOut = this.isFunctionKeyPressed(event);\n\n const newMapState = this.mapState.zoom({pos, scale: isZoomOut ? 0.5 : 2});\n this.updateViewport(\n newMapState,\n Object.assign({}, LINEAR_TRANSITION_PROPS, {\n transitionInterpolator: new LinearInterpolator({around: pos})\n }),\n {isZooming: true}\n );\n return true;\n }\n\n // Default handler for the `keydown` event\n _onKeyDown(event) {\n if (!this.keyboard) {\n return false;\n }\n const funcKey = this.isFunctionKeyPressed(event);\n const {zoomSpeed = 2, moveSpeed = 100, rotateSpeedX = 15, rotateSpeedY = 10} = this.keyboard;\n\n const {mapStateProps} = this;\n let newMapState;\n\n switch (event.srcEvent.keyCode) {\n case 189: // -\n if (funcKey) {\n newMapState = this.getMapState({zoom: mapStateProps.zoom - Math.log2(zoomSpeed) - 1});\n } else {\n newMapState = this.getMapState({zoom: mapStateProps.zoom - Math.log2(zoomSpeed)});\n }\n break;\n case 187: // +\n if (funcKey) {\n newMapState = this.getMapState({zoom: mapStateProps.zoom + Math.log2(zoomSpeed) + 1});\n } else {\n newMapState = this.getMapState({zoom: mapStateProps.zoom + Math.log2(zoomSpeed)});\n }\n break;\n case 37: // left\n if (funcKey) {\n newMapState = this.getMapState({\n bearing: mapStateProps.bearing - rotateSpeedX\n });\n } else {\n newMapState = this.mapState.pan({pos: [moveSpeed, 0], startPos: [0, 0]});\n }\n break;\n case 39: // right\n if (funcKey) {\n newMapState = this.getMapState({\n bearing: mapStateProps.bearing + rotateSpeedX\n });\n } else {\n newMapState = this.mapState.pan({pos: [-moveSpeed, 0], startPos: [0, 0]});\n }\n break;\n case 38: // up\n if (funcKey) {\n newMapState = this.getMapState({pitch: mapStateProps.pitch + rotateSpeedY});\n } else {\n newMapState = this.mapState.pan({pos: [0, moveSpeed], startPos: [0, 0]});\n }\n break;\n case 40: // down\n if (funcKey) {\n newMapState = this.getMapState({pitch: mapStateProps.pitch - rotateSpeedY});\n } else {\n newMapState = this.mapState.pan({pos: [0, -moveSpeed], startPos: [0, 0]});\n }\n break;\n default:\n return false;\n }\n return this.updateViewport(newMapState, LINEAR_TRANSITION_PROPS);\n }\n}\n","import * as React from 'react';\nimport {useContext, useRef, useMemo, useEffect, useImperativeHandle, forwardRef} from 'react';\nimport * as PropTypes from 'prop-types';\n\nimport StaticMap, {getViewport} from './static-map';\nimport {MAPBOX_LIMITS} from '../utils/map-state';\n\nimport TransitionManager from '../utils/transition-manager';\nimport MapContext, {MapContextProvider} from './map-context';\n\nimport {EventManager} from 'mjolnir.js';\nimport MapController from '../utils/map-controller';\nimport useIsomorphicLayoutEffect from '../utils/use-isomorphic-layout-effect';\nimport {getTerrainElevation} from '../utils/terrain';\n\nconst propTypes = Object.assign({}, StaticMap.propTypes, {\n // Additional props on top of StaticMap\n\n /** Viewport constraints */\n // Max zoom level\n maxZoom: PropTypes.number,\n // Min zoom level\n minZoom: PropTypes.number,\n // Max pitch in degrees\n maxPitch: PropTypes.number,\n // Min pitch in degrees\n minPitch: PropTypes.number,\n\n // Callbacks fired when the user interacted with the map. The object passed to the callbacks\n // contains viewport properties such as `longitude`, `latitude`, `zoom` etc.\n onViewStateChange: PropTypes.func,\n onViewportChange: PropTypes.func,\n onInteractionStateChange: PropTypes.func,\n\n /** Viewport transition **/\n // transition duration for viewport change\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n // TransitionInterpolator instance, can be used to perform custom transitions.\n transitionInterpolator: PropTypes.object,\n // type of interruption of current transition on update.\n transitionInterruption: PropTypes.number,\n // easing function\n transitionEasing: PropTypes.func,\n // transition status update functions\n onTransitionStart: PropTypes.func,\n onTransitionInterrupt: PropTypes.func,\n onTransitionEnd: PropTypes.func,\n\n /** Enables control event handling */\n // Scroll to zoom\n scrollZoom: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n // Drag to pan\n dragPan: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n // Drag to rotate\n dragRotate: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n // Double click to zoom\n doubleClickZoom: PropTypes.bool,\n // Multitouch zoom\n touchZoom: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n // Multitouch rotate\n touchRotate: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n // Keyboard\n keyboard: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n\n /** Event callbacks */\n onHover: PropTypes.func,\n onClick: PropTypes.func,\n onDblClick: PropTypes.func,\n onContextMenu: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseMove: PropTypes.func,\n onMouseUp: PropTypes.func,\n onTouchStart: PropTypes.func,\n onTouchMove: PropTypes.func,\n onTouchEnd: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOut: PropTypes.func,\n onWheel: PropTypes.func,\n\n /** Custom touch-action CSS for the event canvas. Defaults to 'none' */\n touchAction: PropTypes.string,\n\n /** Custom hammer.js recognizer options */\n eventRecognizerOptions: PropTypes.object,\n\n /** Radius to detect features around a clicked point. Defaults to 0. */\n clickRadius: PropTypes.number,\n\n /** List of layers that are interactive */\n interactiveLayerIds: PropTypes.array,\n\n /** Accessor that returns a cursor style to show interactive state */\n getCursor: PropTypes.func,\n\n // A map control instance to replace the default map controller\n // The object must expose a method: `setOptions(opts)`\n controller: PropTypes.instanceOf(MapController)\n});\n\nconst getDefaultCursor = ({isDragging, isHovering}) =>\n isDragging ? 'grabbing' : isHovering ? 'pointer' : 'grab';\n\nconst defaultProps = Object.assign(\n {},\n StaticMap.defaultProps,\n MAPBOX_LIMITS,\n TransitionManager.defaultProps,\n {\n onViewStateChange: null,\n onViewportChange: null,\n onClick: null,\n onNativeClick: null,\n onHover: null,\n onContextMenu: event => event.preventDefault(),\n\n scrollZoom: true,\n dragPan: true,\n dragRotate: true,\n doubleClickZoom: true,\n touchZoom: true,\n touchRotate: false,\n keyboard: true,\n\n touchAction: 'none',\n eventRecognizerOptions: {},\n clickRadius: 0,\n getCursor: getDefaultCursor\n }\n);\n\n/* Event handlers */\nfunction normalizeEvent(event) {\n if (event.lngLat || !event.offsetCenter) {\n return event;\n }\n\n const {\n offsetCenter: {x, y}\n } = event;\n // https://github.com/visgl/react-map-gl/issues/1449\n // TODO - fix in mjolnir.js\n if (!Number.isFinite(x) || !Number.isFinite(y)) {\n return event;\n }\n const pos = [x, y];\n\n event.point = pos;\n\n const {viewport} = this;\n const location = viewport.unproject(pos, {targetZ: viewport.meterOffset[2]});\n event.lngLat = [location[0], location[1]];\n\n return event;\n}\n\nfunction getFeatures(pos) {\n const {map} = this;\n\n if (!map || !pos) {\n return null;\n }\n\n const queryParams = {};\n const size = this.props.clickRadius;\n\n if (this.props.interactiveLayerIds) {\n queryParams.layers = this.props.interactiveLayerIds;\n }\n\n try {\n // This may fail if map is still loading\n return map.queryRenderedFeatures(\n size\n ? // Radius enables point features, like marker symbols, to be clicked.\n [\n [pos[0] - size, pos[1] + size],\n [pos[0] + size, pos[1] - size]\n ]\n : pos,\n queryParams\n );\n } catch {\n return null;\n }\n}\n\nfunction onEvent(callbackName, event) {\n const func = this.props[callbackName];\n if (func) {\n func(normalizeEvent.call(this, event));\n }\n}\n\nfunction onPointerDown(event) {\n onEvent.call(this, event.pointerType === 'touch' ? 'onTouchStart' : 'onMouseDown', event);\n}\n\nfunction onPointerUp(event) {\n onEvent.call(this, event.pointerType === 'touch' ? 'onTouchEnd' : 'onMouseUp', event);\n}\n\n// eslint-disable-next-line complexity\nfunction onPointerMove(event) {\n onEvent.call(this, event.pointerType === 'touch' ? 'onTouchMove' : 'onMouseMove', event);\n\n if (!this.state.isDragging) {\n const {onHover, interactiveLayerIds} = this.props;\n let features;\n event = normalizeEvent.call(this, event);\n if (interactiveLayerIds || onHover) {\n features = getFeatures.call(this, event.point);\n }\n\n const isHovering = Boolean(interactiveLayerIds && features && features.length > 0);\n const isEntering = isHovering && !this.state.isHovering;\n const isExiting = !isHovering && this.state.isHovering;\n\n if (onHover || isEntering) {\n event.features = features;\n\n // backward compatibility: v3 `onHover` interface\n if (onHover) {\n onHover(event);\n }\n }\n\n if (isEntering) {\n onEvent.call(this, 'onMouseEnter', event);\n }\n if (isExiting) {\n onEvent.call(this, 'onMouseLeave', event);\n }\n if (isEntering || isExiting) {\n this.setState({isHovering});\n }\n }\n}\n\nfunction onPointerClick(event) {\n const {onClick, onNativeClick, onDblClick, doubleClickZoom} = this.props;\n let callbacks = [];\n const isDoubleClickEnabled = onDblClick || doubleClickZoom;\n\n // `click` is only fired on single click. `anyclick` is fired twice if double clicking.\n // `click` has a delay period after pointer up that prevents it from firing when\n // double clicking. `anyclick` is always fired immediately after pointer up.\n // If double click is turned off by the user, we want to immediately fire the\n // onClick event. Otherwise, we wait to make sure it's a single click.\n switch (event.type) {\n case 'anyclick':\n callbacks.push(onNativeClick);\n if (!isDoubleClickEnabled) {\n callbacks.push(onClick);\n }\n break;\n\n case 'click':\n if (isDoubleClickEnabled) {\n callbacks.push(onClick);\n }\n break;\n\n default:\n }\n\n callbacks = callbacks.filter(Boolean);\n\n if (callbacks.length) {\n event = normalizeEvent.call(this, event);\n // backward compatibility: v3 `onClick` interface\n event.features = getFeatures.call(this, event.point);\n callbacks.forEach(cb => cb(event));\n }\n}\n/* End of event handers */\n\nfunction getRefHandles(staticMapRef) {\n return {\n getMap: staticMapRef.current && staticMapRef.current.getMap,\n queryRenderedFeatures: staticMapRef.current && staticMapRef.current.queryRenderedFeatures\n };\n}\n\n/* eslint-disable max-statements */\nconst InteractiveMap = forwardRef((props, ref) => {\n const parentContext = useContext(MapContext);\n const controller = useMemo(() => props.controller || new MapController(), []);\n const eventManager = useMemo(\n () =>\n new EventManager(null, {\n touchAction: props.touchAction,\n recognizerOptions: props.eventRecognizerOptions\n }),\n []\n );\n const eventCanvasRef = useRef(null);\n const staticMapRef = useRef(null);\n\n // Event handlers are registered once but need access to the latest props\n // This is an anti-pattern, though it maintains a persistent reference to the latest props/state of this component\n const _thisRef = useRef({\n width: 0,\n height: 0,\n state: {\n isHovering: false,\n isDragging: false\n }\n });\n const thisRef = _thisRef.current;\n thisRef.props = props;\n thisRef.map = staticMapRef.current && staticMapRef.current.getMap();\n thisRef.setState = newState => {\n thisRef.state = {...thisRef.state, ...newState};\n eventCanvasRef.current.style.cursor = props.getCursor(thisRef.state);\n };\n\n let inRender = true;\n let viewportUpdateRequested;\n let stateUpdateRequested;\n\n const handleViewportChange = (viewState, interactionState, oldViewState) => {\n if (inRender) {\n // Do not call the callbacks during render - may result in \"cannot update during an existing state transition\" error.\n // Defer the update until after render\n viewportUpdateRequested = [viewState, interactionState, oldViewState];\n return;\n }\n const {onViewStateChange, onViewportChange} = thisRef.props;\n\n /* eslint-disable accessor-pairs */\n Object.defineProperty(viewState, 'position', {\n get: () => [0, 0, getTerrainElevation(thisRef.map, viewState)]\n });\n\n if (onViewStateChange) {\n onViewStateChange({viewState, interactionState, oldViewState});\n }\n if (onViewportChange) {\n onViewportChange(viewState, interactionState, oldViewState);\n }\n };\n\n useImperativeHandle(ref, () => getRefHandles(staticMapRef), []);\n\n const context = useMemo(\n () => ({\n ...parentContext,\n eventManager,\n container: parentContext.container || eventCanvasRef.current\n }),\n [parentContext, eventCanvasRef.current]\n );\n context.onViewportChange = handleViewportChange;\n context.viewport = parentContext.viewport || getViewport(thisRef);\n thisRef.viewport = context.viewport;\n\n const handleInteractionStateChange = interactionState => {\n const {isDragging = false} = interactionState;\n if (isDragging !== thisRef.state.isDragging) {\n thisRef.setState({isDragging});\n }\n\n if (inRender) {\n // Do not call the callbacks during render - may result in \"cannot update during an existing state transition\" error.\n // Defer the update until after render\n stateUpdateRequested = interactionState;\n return;\n }\n\n const {onInteractionStateChange} = thisRef.props;\n if (onInteractionStateChange) {\n onInteractionStateChange(interactionState);\n }\n };\n\n const updateControllerOpts = () => {\n if (thisRef.width && thisRef.height) {\n controller.setOptions({\n ...thisRef.props,\n ...thisRef.props.viewState,\n isInteractive: Boolean(thisRef.props.onViewStateChange || thisRef.props.onViewportChange),\n onViewportChange: handleViewportChange,\n onStateChange: handleInteractionStateChange,\n eventManager,\n width: thisRef.width,\n height: thisRef.height\n });\n }\n };\n\n const onResize = ({width, height}) => {\n thisRef.width = width;\n thisRef.height = height;\n updateControllerOpts();\n thisRef.props.onResize({width, height});\n };\n\n useEffect(() => {\n eventManager.setElement(eventCanvasRef.current);\n // Register event handlers\n eventManager.on({\n pointerdown: onPointerDown.bind(thisRef),\n pointermove: onPointerMove.bind(thisRef),\n pointerup: onPointerUp.bind(thisRef),\n pointerleave: onEvent.bind(thisRef, 'onMouseOut'),\n click: onPointerClick.bind(thisRef),\n anyclick: onPointerClick.bind(thisRef),\n dblclick: onEvent.bind(thisRef, 'onDblClick'),\n wheel: onEvent.bind(thisRef, 'onWheel'),\n contextmenu: onEvent.bind(thisRef, 'onContextMenu')\n });\n\n // Clean up on unmount\n return () => {\n eventManager.destroy();\n };\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n if (viewportUpdateRequested) {\n // Perform deferred updates\n handleViewportChange(...viewportUpdateRequested);\n }\n if (stateUpdateRequested) {\n handleInteractionStateChange(stateUpdateRequested);\n }\n });\n\n updateControllerOpts();\n\n const {width, height, style, getCursor} = props;\n\n const eventCanvasStyle = useMemo(\n () => ({\n position: 'relative',\n ...style,\n width,\n height,\n cursor: getCursor(thisRef.state)\n }),\n [style, width, height, getCursor, thisRef.state]\n );\n\n if (!viewportUpdateRequested || !thisRef._child) {\n // Only rerender if no viewport update has been requested during render.\n // Otherwise return the last rendered child, and invoke the callback when we're done.\n thisRef._child = (\n <MapContextProvider value={context}>\n <div key=\"event-canvas\" ref={eventCanvasRef} style={eventCanvasStyle}>\n <StaticMap\n {...props}\n width=\"100%\"\n height=\"100%\"\n style={null}\n onResize={onResize}\n ref={staticMapRef}\n />\n </div>\n </MapContextProvider>\n );\n }\n\n inRender = false;\n return thisRef._child;\n});\n\nInteractiveMap.supported = StaticMap.supported;\nInteractiveMap.propTypes = propTypes;\nInteractiveMap.defaultProps = defaultProps;\n\nexport default InteractiveMap;\n","/* eslint-disable complexity */\nexport default function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n } else if (Array.isArray(b)) {\n return false;\n }\n if (typeof a === 'object' && typeof b === 'object') {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n for (const key of aKeys) {\n if (!b.hasOwnProperty(key)) {\n return false;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport * as React from 'react';\nimport {useContext, useEffect, useMemo, useState, useRef} from 'react';\nimport {cloneElement} from 'react';\nimport * as PropTypes from 'prop-types';\nimport MapContext from './map-context';\nimport assert from '../utils/assert';\nimport deepEqual from '../utils/deep-equal';\n\nconst propTypes = {\n type: PropTypes.string.isRequired,\n id: PropTypes.string\n};\n\nlet sourceCounter = 0;\n\nfunction createSource(map, id, props) {\n if (map.style && map.style._loaded) {\n const options = {...props};\n delete options.id;\n delete options.children;\n map.addSource(id, options);\n return map.getSource(id);\n }\n return null;\n}\n\n/* eslint-disable complexity */\nfunction updateSource(source, props, prevProps) {\n assert(props.id === prevProps.id, 'source id changed');\n assert(props.type === prevProps.type, 'source type changed');\n\n let changedKey = '';\n let changedKeyCount = 0;\n\n for (const key in props) {\n if (key !== 'children' && key !== 'id' && !deepEqual(prevProps[key], props[key])) {\n changedKey = key;\n changedKeyCount++;\n }\n }\n\n if (!changedKeyCount) {\n return;\n }\n\n const {type} = props;\n if (type === 'geojson') {\n source.setData(props.data);\n } else if (type === 'image') {\n source.updateImage({url: props.url, coordinates: props.coordinates});\n } else if (\n (type === 'canvas' || type === 'video') &&\n changedKeyCount === 1 &&\n changedKey === 'coordinates'\n ) {\n source.setCoordinates(props.coordinates);\n } else if (type === 'vector' && source.setUrl) {\n // Added in 1.12.0:\n // vectorTileSource.setTiles\n // vectorTileSource.setUrl\n switch (changedKey) {\n case 'url':\n source.setUrl(props.url);\n break;\n case 'tiles':\n source.setTiles(props.tiles);\n break;\n default:\n }\n } else {\n // eslint-disable-next-line\n console.warn(`Unable to update <Source> prop: ${changedKey}`);\n }\n}\n/* eslint-enable complexity */\n\nfunction Source(props) {\n const context = useContext(MapContext);\n const propsRef = useRef({id: props.id, type: props.type});\n const [, setStyleLoaded] = useState(0);\n\n const id = useMemo(() => props.id || `jsx-source-${sourceCounter++}`, []);\n const {map} = context;\n\n useEffect(() => {\n if (map) {\n const forceUpdate = () => setStyleLoaded(version => version + 1);\n map.on('styledata', forceUpdate);\n\n return () => {\n map.off('styledata', forceUpdate);\n /* global requestAnimationFrame */\n // Do not remove source immediately because the\n // dependent <Layer>s' componentWillUnmount() might not have been called\n // Removing source before dependent layers will throw error\n // TODO - find a more robust solution\n requestAnimationFrame(() => {\n if (map.style && map.style._loaded && map.getSource(id)) {\n map.removeSource(id);\n }\n });\n };\n }\n return undefined;\n }, [map, id]);\n\n let source = map && map.style && map.getSource(id);\n if (source) {\n updateSource(source, props, propsRef.current);\n } else {\n source = createSource(map, id, props);\n }\n propsRef.current = props;\n\n return (\n (source &&\n React.Children.map(\n props.children,\n child =>\n child &&\n cloneElement(child, {\n source: id\n })\n )) ||\n null\n );\n}\n\nSource.propTypes = propTypes;\nexport default Source;\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {useContext, useEffect, useMemo, useState, useRef} from 'react';\nimport * as PropTypes from 'prop-types';\nimport MapContext from './map-context';\nimport assert from '../utils/assert';\nimport deepEqual from '../utils/deep-equal';\n\nconst LAYER_TYPES = [\n 'fill',\n 'line',\n 'symbol',\n 'circle',\n 'fill-extrusion',\n 'raster',\n 'background',\n 'heatmap',\n 'hillshade',\n 'sky'\n];\n\nconst propTypes = {\n type: PropTypes.oneOf(LAYER_TYPES).isRequired,\n id: PropTypes.string,\n source: PropTypes.string,\n beforeId: PropTypes.string\n};\n\n/* eslint-disable complexity, max-statements */\nfunction diffLayerStyles(map, id, props, prevProps) {\n const {layout = {}, paint = {}, filter, minzoom, maxzoom, beforeId, ...otherProps} = props;\n\n if (beforeId !== prevProps.beforeId) {\n map.moveLayer(id, beforeId);\n }\n if (layout !== prevProps.layout) {\n const prevLayout = prevProps.layout || {};\n for (const key in layout) {\n if (!deepEqual(layout[key], prevLayout[key])) {\n map.setLayoutProperty(id, key, layout[key]);\n }\n }\n for (const key in prevLayout) {\n if (!layout.hasOwnProperty(key)) {\n map.setLayoutProperty(id, key, undefined);\n }\n }\n }\n if (paint !== prevProps.paint) {\n const prevPaint = prevProps.paint || {};\n for (const key in paint) {\n if (!deepEqual(paint[key], prevPaint[key])) {\n map.setPaintProperty(id, key, paint[key]);\n }\n }\n for (const key in prevPaint) {\n if (!paint.hasOwnProperty(key)) {\n map.setPaintProperty(id, key, undefined);\n }\n }\n }\n if (!deepEqual(filter, prevProps.filter)) {\n map.setFilter(id, filter);\n }\n if (minzoom !== prevProps.minzoom || maxzoom !== prevProps.maxzoom) {\n map.setLayerZoomRange(id, minzoom, maxzoom);\n }\n for (const key in otherProps) {\n if (!deepEqual(otherProps[key], prevProps[key])) {\n map.setLayerProperty(id, key, otherProps[key]);\n }\n }\n}\n\nfunction createLayer(map, id, props) {\n if (map.style && map.style._loaded) {\n const options = {...props, id};\n delete options.beforeId;\n\n map.addLayer(options, props.beforeId);\n }\n}\n\nfunction updateLayer(map, id, props, prevProps) {\n assert(props.id === prevProps.id, 'layer id changed');\n assert(props.type === prevProps.type, 'layer type changed');\n\n try {\n diffLayerStyles(map, id, props, prevProps);\n } catch (error) {\n console.warn(error); // eslint-disable-line\n }\n}\n/* eslint-enable complexity, max-statements */\n\nlet layerCounter = 0;\n\nfunction Layer(props) {\n const context = useContext(MapContext);\n const propsRef = useRef({id: props.id, type: props.type});\n const [, setStyleLoaded] = useState(0);\n\n const id = useMemo(() => props.id || `jsx-layer-${layerCounter++}`, []);\n const {map} = context;\n\n useEffect(() => {\n if (map) {\n const forceUpdate = () => setStyleLoaded(version => version + 1);\n map.on('styledata', forceUpdate);\n\n return () => {\n map.off('styledata', forceUpdate);\n if (map.style && map.style._loaded) {\n map.removeLayer(id);\n }\n };\n }\n return undefined;\n }, [map]);\n\n const layer = map && map.style && map.getLayer(id);\n if (layer) {\n updateLayer(map, id, props, propsRef.current);\n } else {\n createLayer(map, id, props);\n }\n\n // Store last rendered props\n propsRef.current = props;\n\n return null;\n}\n\nLayer.propTypes = propTypes;\n\nexport default Layer;\n","import {useContext, useRef, useEffect} from 'react';\nimport * as PropTypes from 'prop-types';\nimport MapContext from './map-context';\n\nexport const mapControlDefaultProps = {\n captureScroll: false,\n captureDrag: true,\n captureClick: true,\n captureDoubleClick: true,\n capturePointerMove: false\n};\n\nexport const mapControlPropTypes = {\n /** Event handling */\n captureScroll: PropTypes.bool,\n // Stop map pan & rotate\n captureDrag: PropTypes.bool,\n // Stop map click\n captureClick: PropTypes.bool,\n // Stop map double click\n captureDoubleClick: PropTypes.bool,\n // Stop map pointer move\n capturePointerMove: PropTypes.bool\n};\n\nfunction onMount(thisRef) {\n const ref = thisRef.containerRef.current;\n const {eventManager} = thisRef.context;\n if (!ref || !eventManager) {\n return undefined;\n }\n\n const events = {\n wheel: evt => {\n const {props} = thisRef;\n if (props.captureScroll) {\n evt.stopPropagation();\n }\n if (props.onScroll) {\n props.onScroll(evt, thisRef);\n }\n },\n panstart: evt => {\n const {props} = thisRef;\n if (props.captureDrag) {\n evt.stopPropagation();\n }\n if (props.onDragStart) {\n props.onDragStart(evt, thisRef);\n }\n },\n anyclick: evt => {\n const {props} = thisRef;\n if (props.captureClick) {\n evt.stopPropagation();\n }\n if (props.onNativeClick) {\n props.onNativeClick(evt, thisRef);\n }\n },\n click: evt => {\n const {props} = thisRef;\n if (props.captureClick) {\n evt.stopPropagation();\n }\n if (props.onClick) {\n props.onClick(evt, thisRef);\n }\n },\n dblclick: evt => {\n const {props} = thisRef;\n if (props.captureDoubleClick) {\n evt.stopPropagation();\n }\n if (props.onDoubleClick) {\n props.onDoubleClick(evt, thisRef);\n }\n },\n pointermove: evt => {\n const {props} = thisRef;\n if (props.capturePointerMove) {\n evt.stopPropagation();\n }\n if (props.onPointerMove) {\n props.onPointerMove(evt, thisRef);\n }\n }\n };\n eventManager.watch(events, ref);\n\n // Clean up\n return () => {\n eventManager.off(events);\n };\n}\n\nexport default function useMapControl(props = {}) {\n const context = useContext(MapContext);\n const containerRef = useRef(null);\n const _thisRef = useRef({props, state: {}, context, containerRef});\n const thisRef = _thisRef.current;\n\n thisRef.props = props;\n thisRef.context = context;\n\n useEffect(() => onMount(thisRef), [context.eventManager]);\n\n return thisRef;\n}\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport * as React from 'react';\nimport {PureComponent, createRef} from 'react';\nimport useMapControl, {mapControlDefaultProps, mapControlPropTypes} from './use-map-control';\n\nfunction Control(props) {\n const {instance} = props;\n const {context, containerRef} = useMapControl(props);\n\n instance._context = context;\n instance._containerRef = containerRef;\n\n return instance._render();\n}\n\n/*\n * This class is kept for backward compatibility\n */\nexport default class BaseControl extends PureComponent {\n static propTypes = mapControlPropTypes;\n static defaultProps = mapControlDefaultProps;\n\n _context = {};\n _containerRef = createRef();\n\n _onScroll = evt => {};\n\n _onDragStart = evt => {};\n\n _onDblClick = evt => {};\n\n _onClick = evt => {};\n\n _onPointerMove = evt => {};\n\n _render() {\n throw new Error('_render() not implemented');\n }\n\n render() {\n return (\n <Control\n instance={this}\n {...this.props}\n onScroll={this._onScroll}\n onDragStart={this._onDragStart}\n onDblClick={this._onDblClick}\n onClick={this._onClick}\n onPointerMove={this._onPointerMove}\n />\n );\n }\n}\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport * as PropTypes from 'prop-types';\nimport {useState, useEffect} from 'react';\nimport useMapControl, {mapControlDefaultProps, mapControlPropTypes} from './use-map-control';\n\nexport const draggableControlPropTypes = Object.assign({}, mapControlPropTypes, {\n draggable: PropTypes.bool,\n onDrag: PropTypes.func,\n onDragEnd: PropTypes.func,\n onDragStart: PropTypes.func,\n // Offset from the left\n offsetLeft: PropTypes.number,\n // Offset from the top\n offsetTop: PropTypes.number\n});\n\nexport const draggableControlDefaultProps = Object.assign({}, mapControlDefaultProps, {\n draggable: false,\n offsetLeft: 0,\n offsetTop: 0\n});\n\nfunction getDragEventPosition(event) {\n const {\n offsetCenter: {x, y}\n } = event;\n return [x, y];\n}\n\n/**\n * Returns offset of top-left of marker from drag start event\n * (used for positioning marker relative to next mouse coordinates)\n */\nfunction getDragEventOffset(event, container) {\n const {\n center: {x, y}\n } = event;\n if (container) {\n const rect = container.getBoundingClientRect();\n return [rect.left - x, rect.top - y];\n }\n return null;\n}\n\nfunction getDragLngLat(dragPos, dragOffset, props, context) {\n const x = dragPos[0] + dragOffset[0] - props.offsetLeft;\n const y = dragPos[1] + dragOffset[1] - props.offsetTop;\n // Unproject x/y value while respecting offset coordinates\n return context.viewport.unproject([x, y]);\n}\n\nfunction onDragStart(event, {props, callbacks, state, context, containerRef}) {\n const {draggable} = props;\n if (!draggable) {\n return;\n }\n event.stopPropagation();\n\n const dragPos = getDragEventPosition(event);\n const dragOffset = getDragEventOffset(event, containerRef.current);\n state.setDragPos(dragPos);\n state.setDragOffset(dragOffset);\n\n if (callbacks.onDragStart && dragOffset) {\n const callbackEvent = Object.assign({}, event);\n callbackEvent.lngLat = getDragLngLat(dragPos, dragOffset, props, context);\n callbacks.onDragStart(callbackEvent);\n }\n}\n\nfunction onDrag(event, {props, callbacks, state, context}) {\n event.stopPropagation();\n\n const dragPos = getDragEventPosition(event);\n state.setDragPos(dragPos);\n\n const {dragOffset} = state;\n if (callbacks.onDrag && dragOffset) {\n const callbackEvent = Object.assign({}, event);\n callbackEvent.lngLat = getDragLngLat(dragPos, dragOffset, props, context);\n callbacks.onDrag(callbackEvent);\n }\n}\n\nfunction onDragEnd(event, {props, callbacks, state, context}) {\n event.stopPropagation();\n\n const {dragPos, dragOffset} = state;\n state.setDragPos(null);\n state.setDragOffset(null);\n\n if (callbacks.onDragEnd && dragPos && dragOffset) {\n const callbackEvent = Object.assign({}, event);\n callbackEvent.lngLat = getDragLngLat(dragPos, dragOffset, props, context);\n callbacks.onDragEnd(callbackEvent);\n }\n}\n\nfunction onDragCancel(event, {state}) {\n event.stopPropagation();\n\n state.setDragPos(null);\n state.setDragOffset(null);\n}\n\nfunction registerEvents(thisRef) {\n const {eventManager} = thisRef.context;\n if (!eventManager || !thisRef.state.dragPos) {\n return undefined;\n }\n\n // panstart is already attached by parent class BaseControl,\n // here we just add listeners for subsequent drag events\n const events = {\n panmove: evt => onDrag(evt, thisRef),\n panend: evt => onDragEnd(evt, thisRef),\n pancancel: evt => onDragCancel(evt, thisRef)\n };\n eventManager.watch(events);\n\n // Clean up\n return () => {\n eventManager.off(events);\n };\n}\n\nexport default function useDraggableControl(props) {\n const [dragPos, setDragPos] = useState(null);\n const [dragOffset, setDragOffset] = useState(null);\n\n const thisRef = useMapControl({\n ...props,\n onDragStart\n });\n\n thisRef.callbacks = props;\n thisRef.state.dragPos = dragPos;\n thisRef.state.setDragPos = setDragPos;\n thisRef.state.dragOffset = dragOffset;\n thisRef.state.setDragOffset = setDragOffset;\n\n useEffect(() => registerEvents(thisRef), [thisRef.context.eventManager, Boolean(dragPos)]);\n\n return thisRef;\n}\n","/* global window */\nconst pixelRatio = (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n\nexport const crispPixel = size => Math.round(size * pixelRatio) / pixelRatio;\n\nexport const crispPercentage = (el, percentage, dimension = 'x') => {\n if (el === null) {\n return percentage;\n }\n const origSize = dimension === 'x' ? el.offsetWidth : el.offsetHeight;\n return (crispPixel((percentage / 100) * origSize) / origSize) * 100;\n};\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport * as React from 'react';\nimport {useMemo} from 'react';\nimport * as PropTypes from 'prop-types';\nimport useDraggableControl, {\n draggableControlDefaultProps,\n draggableControlPropTypes\n} from './draggable-control';\nimport {crispPixel} from '../utils/crisp-pixel';\nimport {getTerrainElevation} from '../utils/terrain';\n\nconst propTypes = Object.assign({}, draggableControlPropTypes, {\n // Custom className\n className: PropTypes.string,\n // Longitude of the anchor point\n longitude: PropTypes.number.isRequired,\n // Latitude of the anchor point\n latitude: PropTypes.number.isRequired\n});\n\nconst defaultProps = Object.assign({}, draggableControlDefaultProps, {\n className: ''\n});\n\nfunction getPosition({props, state, context}) {\n const {longitude, latitude, offsetLeft, offsetTop} = props;\n const {dragPos, dragOffset} = state;\n const {viewport, map} = context;\n\n // If dragging, just return the current drag position\n if (dragPos && dragOffset) {\n return [dragPos[0] + dragOffset[0], dragPos[1] + dragOffset[1]];\n }\n\n const altitude = getTerrainElevation(map, {longitude, latitude});\n\n // Otherwise return the projected lat/lng with offset\n let [x, y] = viewport.project([longitude, latitude, altitude]);\n x += offsetLeft;\n y += offsetTop;\n return [x, y];\n}\n\n/*\n * PureComponent doesn't update when context changes.\n * The only way is to implement our own shouldComponentUpdate here. Considering\n * the parent component (StaticMap or InteractiveMap) is pure, and map re-render\n * is almost always triggered by a viewport change, we almost definitely need to\n * recalculate the marker's position when the parent re-renders.\n */\nfunction Marker(props) {\n const thisRef = useDraggableControl(props);\n const {state, containerRef} = thisRef;\n\n const {children, className, draggable} = props;\n const {dragPos} = state;\n\n const [x, y] = getPosition(thisRef);\n const transform = `translate(${crispPixel(x)}px, ${crispPixel(y)}px)`;\n const cursor = draggable ? (dragPos ? 'grabbing' : 'grab') : 'auto';\n\n // Perf: avoid rerendering if only the viewport changed\n const control = useMemo(() => {\n const containerStyle = {\n position: 'absolute',\n left: 0,\n top: 0,\n transform,\n cursor\n };\n\n return (\n <div\n className={`mapboxgl-marker ${className}`}\n ref={thisRef.containerRef}\n // @ts-ignore\n style={containerStyle}\n >\n {children}\n </div>\n );\n }, [children, className]);\n\n const container = containerRef.current;\n if (container) {\n container.style.transform = transform;\n container.style.cursor = cursor;\n }\n\n return control;\n}\n\nMarker.defaultProps = defaultProps;\nMarker.propTypes = propTypes;\n\nexport default React.memo(Marker);\n","export const ANCHOR_POSITION = {\n top: {x: 0.5, y: 0},\n 'top-left': {x: 0, y: 0},\n 'top-right': {x: 1, y: 0},\n bottom: {x: 0.5, y: 1},\n 'bottom-left': {x: 0, y: 1},\n 'bottom-right': {x: 1, y: 1},\n left: {x: 0, y: 0.5},\n right: {x: 1, y: 0.5}\n};\n\nconst ANCHOR_TYPES = Object.keys(ANCHOR_POSITION);\n\n/**\n * Calculate the dynamic position for a popup to fit in a container.\n * @param {Object} opts\n * @param {Number} opts.x - x position of the anchor on screen\n * @param {Number} opts.y - y position of the anchor on screen\n * @param {Number} opts.width - width of the container\n * @param {Number} opts.height - height of the container\n * @param {Number} opts.padding - extra space from the edge in pixels\n * @param {Number} opts.selfWidth - width of the popup\n * @param {Number} opts.selfHeight - height of the popup\n * @param {String} opts.anchor - type of the anchor, one of 'top', 'bottom',\n 'left', 'right', 'top-left', 'top-right', 'bottom-left' , and 'bottom-right'\n * @returns {String} position - one of 'top', 'bottom',\n 'left', 'right', 'top-left', 'top-right', 'bottom-left' , and 'bottom-right'\n */\n// eslint-disable-next-line complexity,max-statements\nexport function getDynamicPosition({\n x,\n y,\n width,\n height,\n selfWidth,\n selfHeight,\n anchor,\n padding = 0\n}) {\n let {x: anchorX, y: anchorY} = ANCHOR_POSITION[anchor];\n\n // anchorY: top - 0, center - 0.5, bottom - 1\n let top = y - anchorY * selfHeight;\n let bottom = top + selfHeight;\n let cutoffY = Math.max(0, padding - top) + Math.max(0, bottom - height + padding);\n\n if (cutoffY > 0) {\n // Needs vertical adjustment\n let bestAnchorY = anchorY;\n let minCutoff = cutoffY;\n // Test anchorY at 0.5 step between [0, 1]\n for (anchorY = 0; anchorY <= 1; anchorY += 0.5) {\n top = y - anchorY * selfHeight;\n bottom = top + selfHeight;\n cutoffY = Math.max(0, padding - top) + Math.max(0, bottom - height + padding);\n if (cutoffY < minCutoff) {\n minCutoff = cutoffY;\n bestAnchorY = anchorY;\n }\n }\n anchorY = bestAnchorY;\n }\n\n // If needed, adjust anchorX at 0.5 step between [0, 1]\n let xStep = 0.5;\n if (anchorY === 0.5) {\n // If y is centered, then x cannot also be centered\n anchorX = Math.floor(anchorX);\n xStep = 1;\n }\n\n // anchorX: left - 0, center - 0.5, right - 1\n let left = x - anchorX * selfWidth;\n let right = left + selfWidth;\n let cutoffX = Math.max(0, padding - left) + Math.max(0, right - width + padding);\n\n if (cutoffX > 0) {\n // Needs horizontal adjustment\n let bestAnchorX = anchorX;\n let minCutoff = cutoffX;\n // Test anchorX at xStep between [0, 1]\n for (anchorX = 0; anchorX <= 1; anchorX += xStep) {\n left = x - anchorX * selfWidth;\n right = left + selfWidth;\n cutoffX = Math.max(0, padding - left) + Math.max(0, right - width + padding);\n if (cutoffX < minCutoff) {\n minCutoff = cutoffX;\n bestAnchorX = anchorX;\n }\n }\n anchorX = bestAnchorX;\n }\n\n // Find the name of the new anchor position\n return (\n ANCHOR_TYPES.find(positionType => {\n const anchorPosition = ANCHOR_POSITION[positionType];\n return anchorPosition.x === anchorX && anchorPosition.y === anchorY;\n }) || anchor\n );\n}\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport * as React from 'react';\nimport {useRef, useState, useEffect, useCallback} from 'react';\nimport * as PropTypes from 'prop-types';\nimport useMapControl, {mapControlDefaultProps, mapControlPropTypes} from './use-map-control';\n\nimport {getDynamicPosition, ANCHOR_POSITION} from '../utils/dynamic-position';\nimport {getTerrainElevation} from '../utils/terrain';\nimport {crispPercentage, crispPixel} from '../utils/crisp-pixel';\n\nconst propTypes = Object.assign({}, mapControlPropTypes, {\n // Custom className\n className: PropTypes.string,\n // Longitude of the anchor point\n longitude: PropTypes.number.isRequired,\n // Latitude of the anchor point\n latitude: PropTypes.number.isRequired,\n // Altitude of the anchor point\n altitude: PropTypes.number,\n // Offset from the left\n offsetLeft: PropTypes.number,\n // Offset from the top\n offsetTop: PropTypes.number,\n // Size of the tip\n tipSize: PropTypes.number,\n // Whether to show close button\n closeButton: PropTypes.bool,\n // Whether to close on click\n closeOnClick: PropTypes.bool,\n // The popup's location relative to the coordinate\n anchor: PropTypes.oneOf(Object.keys(ANCHOR_POSITION)),\n // Whether the popup anchor should be auto-adjusted to fit within the container\n dynamicPosition: PropTypes.bool,\n // Whether popups should be sorted by depth. Useful when using multiple popups with tilted map.\n sortByDepth: PropTypes.bool,\n // Callback when component is closed\n onClose: PropTypes.func\n});\n\nconst defaultProps = Object.assign({}, mapControlDefaultProps, {\n className: '',\n offsetLeft: 0,\n offsetTop: 0,\n tipSize: 10,\n anchor: 'bottom',\n dynamicPosition: true,\n sortByDepth: false,\n closeButton: true,\n closeOnClick: true,\n onClose: () => {}\n});\n\nfunction getPosition(props, viewport, el, [x, y]) {\n const {anchor, dynamicPosition, tipSize} = props;\n\n if (el) {\n return dynamicPosition\n ? getDynamicPosition({\n x,\n y,\n anchor,\n padding: tipSize,\n width: viewport.width,\n height: viewport.height,\n selfWidth: el.clientWidth,\n selfHeight: el.clientHeight\n })\n : anchor;\n }\n\n return anchor;\n}\n\nfunction getContainerStyle(props, viewport, el, [x, y, z], positionType) {\n const {offsetLeft, offsetTop, sortByDepth} = props;\n const anchorPosition = ANCHOR_POSITION[positionType];\n const left = x + offsetLeft;\n const top = y + offsetTop;\n\n const xPercentage = crispPercentage(el, -anchorPosition.x * 100);\n const yPercentage = crispPercentage(el, -anchorPosition.y * 100, 'y');\n const style = {\n position: 'absolute',\n transform: `\n translate(${xPercentage}%, ${yPercentage}%)\n translate(${crispPixel(left)}px, ${crispPixel(top)}px)\n `,\n display: undefined,\n zIndex: undefined\n };\n\n if (!sortByDepth) {\n return style;\n }\n if (z > 1 || z < -1 || x < 0 || x > viewport.width || y < 0 || y > viewport.height) {\n // clipped\n style.display = 'none';\n } else {\n // use z-index to rearrange components\n style.zIndex = Math.floor(((1 - z) / 2) * 100000);\n }\n\n return style;\n}\n\n/*\n * PureComponent doesn't update when context changes.\n * The only way is to implement our own shouldComponentUpdate here. Considering\n * the parent component (StaticMap or InteractiveMap) is pure, and map re-render\n * is almost always triggered by a viewport change, we almost definitely need to\n * recalculate the popup's position when the parent re-renders.\n */\nfunction Popup(props) {\n const contentRef = useRef(null);\n const thisRef = useMapControl(props);\n const {context, containerRef} = thisRef;\n const [, setLoaded] = useState(false);\n\n useEffect(() => {\n // Container just got a size, re-calculate position\n setLoaded(true);\n }, [contentRef.current]);\n\n useEffect(() => {\n if (context.eventManager && props.closeOnClick) {\n const clickCallback = () => thisRef.props.onClose();\n context.eventManager.on('anyclick', clickCallback);\n\n return () => {\n context.eventManager.off('anyclick', clickCallback);\n };\n }\n return undefined;\n }, [context.eventManager, props.closeOnClick]);\n\n const {viewport, map} = context;\n const {className, longitude, latitude, tipSize, closeButton, children} = props;\n\n let {altitude} = props;\n if (altitude === undefined) {\n altitude = getTerrainElevation(map, {longitude, latitude});\n }\n\n const position = viewport.project([longitude, latitude, altitude]);\n\n const positionType = getPosition(props, viewport, contentRef.current, position);\n const containerStyle = getContainerStyle(\n props,\n viewport,\n containerRef.current,\n position,\n positionType\n );\n\n const onClickCloseButton = useCallback(evt => {\n thisRef.props.onClose();\n\n const {eventManager} = thisRef.context;\n if (eventManager) {\n // Using with InteractiveMap\n // After we call `onClose` on `anyclick`, this component will be unmounted\n // at which point we unregister the event listeners and stop blocking propagation.\n // Then after a short delay a `click` event will fire\n // Attach a one-time event listener here to prevent it from triggering `onClick` of the base map\n eventManager.once('click', e => e.stopPropagation(), evt.target);\n }\n }, []);\n\n return (\n <div\n className={`mapboxgl-popup mapboxgl-popup-anchor-${positionType} ${className}`}\n // @ts-ignore\n style={containerStyle}\n ref={containerRef}\n >\n <div key=\"tip\" className=\"mapboxgl-popup-tip\" style={{borderWidth: tipSize}} />\n <div key=\"content\" ref={contentRef} className=\"mapboxgl-popup-content\">\n {closeButton && (\n <button\n key=\"close-button\"\n className=\"mapboxgl-popup-close-button\"\n type=\"button\"\n onClick={onClickCloseButton}\n >\n ×\n </button>\n )}\n {children}\n </div>\n </div>\n );\n}\n\nPopup.propTypes = propTypes;\nPopup.defaultProps = defaultProps;\n\nexport default React.memo(Popup);\n","import * as React from 'react';\nimport {useEffect, useCallback, useState, useRef, useMemo} from 'react';\nimport * as PropTypes from 'prop-types';\nimport mapboxgl from '../utils/mapboxgl';\nimport useMapControl, {mapControlDefaultProps, mapControlPropTypes} from './use-map-control';\n\nconst propTypes = Object.assign({}, mapControlPropTypes, {\n toggleLabel: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object,\n compact: PropTypes.bool,\n customAttribution: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)])\n});\n\nconst defaultProps = Object.assign({}, mapControlDefaultProps, {\n className: '',\n toggleLabel: 'Toggle Attribution'\n});\n\nfunction setupAttributioncontrol(opts, map, container, attributionContainer) {\n const control = new mapboxgl.AttributionControl(opts);\n control._map = map;\n control._container = container;\n control._innerContainer = attributionContainer;\n\n // from AttributionControl.onAdd()\n control._updateAttributions();\n control._updateEditLink();\n map.on('styledata', control._updateData);\n map.on('sourcedata', control._updateData);\n\n return control;\n}\n\nfunction removeAttributionControl(control) {\n control._map.off('styledata', control._updateData);\n control._map.off('sourcedata', control._updateData);\n}\n\nfunction AttributionControl(props) {\n const {context, containerRef} = useMapControl(props);\n const innerContainerRef = useRef(null);\n const [showCompact, setShowCompact] = useState(false);\n\n useEffect(() => {\n let control;\n if (context.map) {\n control = setupAttributioncontrol(\n {\n customAttribution: props.customAttribution\n },\n context.map,\n containerRef.current,\n innerContainerRef.current\n );\n }\n\n return () => control && removeAttributionControl(control);\n }, [context.map]);\n\n const compact = props.compact === undefined ? context.viewport.width <= 640 : props.compact;\n\n useEffect(() => {\n if (!compact && showCompact) {\n setShowCompact(false);\n }\n }, [compact]);\n\n const toggleAttribution = useCallback(() => setShowCompact(value => !value), []);\n const style = useMemo(() => ({position: 'absolute', ...props.style}), [props.style]);\n\n return (\n <div style={style} className={props.className}>\n <div\n ref={containerRef}\n aria-pressed={showCompact}\n className={`mapboxgl-ctrl mapboxgl-ctrl-attrib ${compact ? 'mapboxgl-compact' : ''} ${\n showCompact ? 'mapboxgl-compact-show' : ''\n }`}\n >\n <button\n type=\"button\"\n className=\"mapboxgl-ctrl-attrib-button\"\n title={props.toggleLabel}\n onClick={toggleAttribution}\n />\n <div ref={innerContainerRef} className=\"mapboxgl-ctrl-attrib-inner\" role=\"list\" />\n </div>\n </div>\n );\n}\n\nAttributionControl.propTypes = propTypes;\nAttributionControl.defaultProps = defaultProps;\n\nexport default React.memo(AttributionControl);\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {document} from '../utils/globals';\nimport * as PropTypes from 'prop-types';\nimport * as React from 'react';\nimport {useEffect, useState, useMemo} from 'react';\nimport mapboxgl from '../utils/mapboxgl';\n\nimport useMapControl, {mapControlDefaultProps, mapControlPropTypes} from './use-map-control';\n\nconst propTypes = Object.assign({}, mapControlPropTypes, {\n // Custom className\n className: PropTypes.string,\n style: PropTypes.object,\n /* eslint-disable max-len */\n // `container` is the [compatible DOM element](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen#Compatible_elements)\n // which should be made full screen. By default, the map container element will be made full screen.\n /* eslint-enable max-len */\n container: PropTypes.object,\n label: PropTypes.string\n});\n\nconst defaultProps = Object.assign({}, mapControlDefaultProps, {\n className: '',\n container: null,\n label: 'Toggle fullscreen'\n});\n\nfunction FullscreenControl(props) {\n const {context, containerRef} = useMapControl(props);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [showButton, setShowButton] = useState(false);\n const [mapboxFullscreenControl, createMapboxFullscreenControl] = useState(null);\n\n useEffect(() => {\n const control = new mapboxgl.FullscreenControl();\n\n createMapboxFullscreenControl(control);\n setShowButton(control._checkFullscreenSupport());\n\n const onFullscreenChange = () => {\n const nextState = !control._fullscreen;\n // this is a hack\n // Mapbox use `_fullscreen` flag to toggle fullscreen mode\n control._fullscreen = nextState;\n setIsFullscreen(nextState);\n };\n\n document.addEventListener(control._fullscreenchange, onFullscreenChange);\n\n return () => {\n document.removeEventListener(control._fullscreenchange, onFullscreenChange);\n };\n }, []);\n\n const onClickFullscreen = () => {\n if (mapboxFullscreenControl) {\n mapboxFullscreenControl._container = props.container || context.container;\n mapboxFullscreenControl._onClickFullscreen();\n }\n };\n\n const style = useMemo(() => ({position: 'absolute', ...props.style}), [props.style]);\n\n if (!showButton) {\n return null;\n }\n\n const {className, label} = props;\n const type = isFullscreen ? 'shrink' : 'fullscreen';\n\n return (\n <div style={style} className={className}>\n <div className=\"mapboxgl-ctrl mapboxgl-ctrl-group\" ref={containerRef}>\n <button\n key={type}\n className={`mapboxgl-ctrl-icon mapboxgl-ctrl-${type}`}\n type=\"button\"\n title={label}\n onClick={onClickFullscreen}\n >\n <span className=\"mapboxgl-ctrl-icon\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n );\n}\n\nFullscreenControl.propTypes = propTypes;\nFullscreenControl.defaultProps = defaultProps;\n\nexport default React.memo(FullscreenControl);\n","/* global window */\nlet supported;\n\nexport function isGeolocationSupported() {\n // not necessary to check again\n if (supported !== undefined) {\n return Promise.resolve(supported);\n }\n\n if (window.navigator.permissions !== undefined) {\n // navigator.permissions has incomplete browser support\n // http://caniuse.com/#feat=permissions-api\n // Test for the case where a browser disables Geolocation because of an\n // insecure origin\n return window.navigator.permissions.query({name: 'geolocation'}).then(p => {\n supported = p.state !== 'denied';\n return supported;\n });\n }\n\n supported = Boolean(window.navigator.geolocation);\n return Promise.resolve(supported);\n}\n","import * as React from 'react';\nimport {useRef, useEffect, useState, useCallback, useMemo} from 'react';\nimport * as PropTypes from 'prop-types';\n\nimport {document} from '../utils/globals';\nimport mapboxgl from '../utils/mapboxgl';\n\nimport MapState from '../utils/map-state';\nimport {LINEAR_TRANSITION_PROPS} from '../utils/map-controller';\nimport {isGeolocationSupported} from '../utils/geolocate-utils';\n\nimport useMapControl, {mapControlDefaultProps, mapControlPropTypes} from './use-map-control';\n\nconst noop = () => {};\n\nconst propTypes = Object.assign({}, mapControlPropTypes, {\n // Custom className\n className: PropTypes.string,\n style: PropTypes.object,\n // Custom label assigned to the control\n label: PropTypes.string,\n disabledLabel: PropTypes.string,\n // Auto trigger instead of waiting for click\n auto: PropTypes.bool,\n\n // mapbox geolocate options\n // https://docs.mapbox.com/mapbox-gl-js/api/#geolocatecontrol\n positionOptions: PropTypes.object,\n fitBoundsOptions: PropTypes.object,\n trackUserLocation: PropTypes.bool,\n showUserLocation: PropTypes.bool,\n showAccuracyCircle: PropTypes.bool,\n\n // Callbacks fired when the user interacted with the map. The object passed to the callbacks\n // contains viewport properties such as `longitude`, `latitude`, `zoom` etc.\n onViewStateChange: PropTypes.func,\n onViewportChange: PropTypes.func,\n\n onGeolocate: PropTypes.func\n});\n\nconst defaultProps = Object.assign({}, mapControlDefaultProps, {\n className: '',\n label: 'Find My Location',\n disabledLabel: 'Location Not Available',\n auto: false,\n\n // mapbox geolocate options\n positionOptions: {enableHighAccuracy: false, timeout: 6000},\n fitBoundsOptions: {maxZoom: 15},\n trackUserLocation: false,\n showUserLocation: true,\n showAccuracyCircle: true,\n\n onGeolocate: () => {}\n});\n\nfunction getBounds(position) {\n const center = new mapboxgl.LngLat(position.coords.longitude, position.coords.latitude);\n const radius = position.coords.accuracy;\n const bounds = center.toBounds(radius);\n\n return [\n [bounds._ne.lng, bounds._ne.lat],\n [bounds._sw.lng, bounds._sw.lat]\n ];\n}\n\nfunction setupMapboxGeolocateControl(context, props, geolocateButton) {\n const control = new mapboxgl.GeolocateControl(props);\n\n // Dummy placeholders so that _setupUI does not crash\n control._container = document.createElement('div');\n control._map = {\n on: () => {},\n _getUIString: () => ''\n };\n control._setupUI(true);\n control._map = context.map;\n\n // replace mapbox internal UI elements with ours\n control._geolocateButton = geolocateButton;\n\n // From _setupUI\n // when the camera is changed (and it's not as a result of the Geolocation Control) change\n // the watch mode to background watch, so that the marker is updated but not the camera.\n const {eventManager} = context;\n if (control.options.trackUserLocation && eventManager) {\n eventManager.on('panstart', () => {\n if (control._watchState === 'ACTIVE_LOCK') {\n control._watchState = 'BACKGROUND';\n geolocateButton.classList.add('mapboxgl-ctrl-geolocate-background');\n geolocateButton.classList.remove('mapboxgl-ctrl-geolocate-active');\n }\n });\n }\n\n control.on('geolocate', props.onGeolocate);\n return control;\n}\n\nfunction updateCamera(position, {context, props}) {\n const bounds = getBounds(position);\n const {longitude, latitude, zoom} = context.viewport.fitBounds(bounds, props.fitBoundsOptions);\n\n const newViewState = Object.assign({}, context.viewport, {\n longitude,\n latitude,\n zoom\n });\n const mapState = new MapState(newViewState);\n const viewState = Object.assign({}, mapState.getViewportProps(), LINEAR_TRANSITION_PROPS);\n\n const onViewportChange = props.onViewportChange || context.onViewportChange || noop;\n const onViewStateChange = props.onViewStateChange || context.onViewStateChange || noop;\n\n // Call new style callback\n onViewStateChange({viewState});\n\n // Call old style callback\n onViewportChange(viewState);\n}\n\nfunction GeolocateControl(props) {\n const thisRef = useMapControl(props);\n const {context, containerRef} = thisRef;\n const geolocateButtonRef = useRef(null);\n const [mapboxGeolocateControl, createMapboxGeolocateControl] = useState(null);\n const [supportsGeolocation, setSupportsGeolocation] = useState(false);\n\n useEffect(() => {\n let control;\n\n if (context.map) {\n isGeolocationSupported().then(result => {\n setSupportsGeolocation(result);\n\n if (geolocateButtonRef.current) {\n control = setupMapboxGeolocateControl(context, props, geolocateButtonRef.current);\n // Overwrite Mapbox's GeolocateControl internal method\n control._updateCamera = position => updateCamera(position, thisRef);\n createMapboxGeolocateControl(control);\n }\n });\n }\n\n return () => {\n if (control) {\n control._clearWatch();\n }\n };\n }, [context.map]);\n\n const triggerGeolocate = useCallback(() => {\n if (mapboxGeolocateControl) {\n mapboxGeolocateControl.options = thisRef.props;\n mapboxGeolocateControl.trigger();\n }\n }, [mapboxGeolocateControl]);\n\n useEffect(() => {\n if (props.auto) {\n triggerGeolocate();\n }\n }, [mapboxGeolocateControl, props.auto]);\n\n useEffect(() => {\n if (mapboxGeolocateControl) {\n mapboxGeolocateControl._onZoom();\n }\n }, [context.viewport.zoom]);\n\n const {className, label, disabledLabel, trackUserLocation} = props;\n\n const style = useMemo(() => ({position: 'absolute', ...props.style}), [props.style]);\n\n return (\n <div style={style} className={className}>\n <div key=\"geolocate-control\" className=\"mapboxgl-ctrl mapboxgl-ctrl-group\" ref={containerRef}>\n <button\n key=\"geolocate\"\n className={`mapboxgl-ctrl-icon mapboxgl-ctrl-geolocate`}\n ref={geolocateButtonRef}\n disabled={!supportsGeolocation}\n aria-pressed={!trackUserLocation}\n type=\"button\"\n title={supportsGeolocation ? label : disabledLabel}\n aria-label={supportsGeolocation ? label : disabledLabel}\n onClick={triggerGeolocate}\n >\n <span className=\"mapboxgl-ctrl-icon\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n );\n}\n\nGeolocateControl.propTypes = propTypes;\nGeolocateControl.defaultProps = defaultProps;\n\nexport default React.memo(GeolocateControl);\n","import * as React from 'react';\nimport {useMemo} from 'react';\nimport * as PropTypes from 'prop-types';\n\nimport MapState from '../utils/map-state';\nimport {LINEAR_TRANSITION_PROPS} from '../utils/map-controller';\n\nimport {compareVersions} from '../utils/version';\n\nimport useMapControl, {mapControlDefaultProps, mapControlPropTypes} from './use-map-control';\n\nconst noop = () => {};\n\nconst propTypes = Object.assign({}, mapControlPropTypes, {\n // Custom className\n className: PropTypes.string,\n style: PropTypes.object,\n // Callbacks fired when the user interacted with the map. The object passed to the callbacks\n // contains viewport properties such as `longitude`, `latitude`, `zoom` etc.\n onViewStateChange: PropTypes.func,\n onViewportChange: PropTypes.func,\n // Show/hide compass button\n showCompass: PropTypes.bool,\n // Show/hide zoom buttons\n showZoom: PropTypes.bool,\n // Custom labels assigned to the controls\n zoomInLabel: PropTypes.string,\n zoomOutLabel: PropTypes.string,\n compassLabel: PropTypes.string\n});\n\nconst defaultProps = Object.assign({}, mapControlDefaultProps, {\n className: '',\n showCompass: true,\n showZoom: true,\n zoomInLabel: 'Zoom In',\n zoomOutLabel: 'Zoom Out',\n compassLabel: 'Reset North'\n});\n\n// Mapbox version flags. CSS classes were changed in certain versions.\nconst VERSION_LEGACY = 1;\nconst VERSION_1_6 = 2;\n\nfunction getUIVersion(mapboxVersion) {\n return compareVersions(mapboxVersion, '1.6.0') >= 0 ? VERSION_1_6 : VERSION_LEGACY;\n}\n\nfunction updateViewport(context, props, opts) {\n const {viewport} = context;\n const mapState = new MapState(Object.assign({}, viewport, opts));\n const viewState = Object.assign({}, mapState.getViewportProps(), LINEAR_TRANSITION_PROPS);\n\n const onViewportChange = props.onViewportChange || context.onViewportChange || noop;\n const onViewStateChange = props.onViewStateChange || context.onViewStateChange || noop;\n\n // Call new style callback\n onViewStateChange({viewState});\n\n // Call old style callback\n onViewportChange(viewState);\n}\n\nfunction renderButton(type, label, callback, children) {\n return (\n <button\n key={type}\n className={`mapboxgl-ctrl-icon mapboxgl-ctrl-${type}`}\n type=\"button\"\n title={label}\n onClick={callback}\n >\n {children || <span className=\"mapboxgl-ctrl-icon\" aria-hidden=\"true\" />}\n </button>\n );\n}\n\nfunction renderCompass(context) {\n const uiVersion = useMemo(() => (context.map ? getUIVersion(context.map.version) : VERSION_1_6), [\n context.map\n ]);\n\n const {bearing} = context.viewport;\n const style = {transform: `rotate(${-bearing}deg)`};\n\n return uiVersion === VERSION_1_6 ? (\n <span className=\"mapboxgl-ctrl-icon\" aria-hidden=\"true\" style={style} />\n ) : (\n <span className=\"mapboxgl-ctrl-compass-arrow\" style={style} />\n );\n}\n\n/*\n * PureComponent doesn't update when context changes, so\n * implementing our own shouldComponentUpdate here.\n */\nfunction NavigationControl(props) {\n const {context, containerRef} = useMapControl(props);\n\n const onZoomIn = () => {\n updateViewport(context, props, {zoom: context.viewport.zoom + 1});\n };\n\n const onZoomOut = () => {\n updateViewport(context, props, {zoom: context.viewport.zoom - 1});\n };\n\n const onResetNorth = () => {\n updateViewport(context, props, {bearing: 0, pitch: 0});\n };\n\n const {className, showCompass, showZoom, zoomInLabel, zoomOutLabel, compassLabel} = props;\n const style = useMemo(() => ({position: 'absolute', ...props.style}), [props.style]);\n\n return (\n <div style={style} className={className}>\n <div className=\"mapboxgl-ctrl mapboxgl-ctrl-group\" ref={containerRef}>\n {showZoom && renderButton('zoom-in', zoomInLabel, onZoomIn)}\n {showZoom && renderButton('zoom-out', zoomOutLabel, onZoomOut)}\n {showCompass && renderButton('compass', compassLabel, onResetNorth, renderCompass(context))}\n </div>\n </div>\n );\n}\n\nNavigationControl.propTypes = propTypes;\nNavigationControl.defaultProps = defaultProps;\n\nexport default React.memo(NavigationControl);\n","// Helper function for version comparison\n// A version is a string in the format of \"{major}.{minor}.{patch}\"\n// Empty/missing version is treated as \"0.0.0\"\n// If version1 is smaller than version2, return -1\n// If version1 is larger than version2, return 1\n// If equal, return 0\nexport function compareVersions(version1, version2) {\n const v1 = (version1 || '').split('.').map(Number);\n const v2 = (version2 || '').split('.').map(Number);\n\n for (let i = 0; i < 3; i++) {\n const part1 = v1[i] || 0;\n const part2 = v2[i] || 0;\n if (part1 < part2) {\n return -1;\n }\n if (part1 > part2) {\n return 1;\n }\n }\n\n return 0;\n}\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport * as React from 'react';\nimport {useEffect, useState, useMemo} from 'react';\nimport * as PropTypes from 'prop-types';\nimport mapboxgl from '../utils/mapboxgl';\nimport useMapControl, {mapControlDefaultProps, mapControlPropTypes} from './use-map-control';\n\nconst propTypes = Object.assign({}, mapControlPropTypes, {\n className: PropTypes.string,\n style: PropTypes.object,\n maxWidth: PropTypes.number,\n unit: PropTypes.oneOf(['imperial', 'metric', 'nautical'])\n});\n\nconst defaultProps = Object.assign({}, mapControlDefaultProps, {\n className: '',\n maxWidth: 100,\n unit: 'metric'\n});\n\nfunction ScaleControl(props) {\n const {context, containerRef} = useMapControl(props);\n const [mapboxScaleControl, createMapboxScaleControl] = useState(null);\n\n useEffect(() => {\n if (context.map) {\n const control = new mapboxgl.ScaleControl();\n control._map = context.map;\n control._container = containerRef.current;\n createMapboxScaleControl(control);\n }\n }, [context.map]);\n\n if (mapboxScaleControl) {\n mapboxScaleControl.options = props;\n mapboxScaleControl._onMove();\n }\n\n const style = useMemo(() => ({position: 'absolute', ...props.style}), [props.style]);\n\n return (\n <div style={style} className={props.className}>\n <div ref={containerRef} className=\"mapboxgl-ctrl mapboxgl-ctrl-scale\" />\n </div>\n );\n}\n\nScaleControl.propTypes = propTypes;\nScaleControl.defaultProps = defaultProps;\n\nexport default React.memo(ScaleControl);\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport * as React from 'react';\nimport {useState, useEffect} from 'react';\nimport * as PropTypes from 'prop-types';\nimport useMapControl, {mapControlPropTypes} from '../components/use-map-control';\n\n/* global window */\nconst pixelRatio = (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n\nconst propTypes = Object.assign({}, mapControlPropTypes, {\n redraw: PropTypes.func.isRequired\n});\n\nconst defaultProps = {\n captureScroll: false,\n captureDrag: false,\n captureClick: false,\n captureDoubleClick: false,\n capturePointerMove: false\n};\n\nfunction CanvasOverlay(props) {\n const {context, containerRef} = useMapControl(props);\n const [ctx, setDrawingContext] = useState(null);\n\n useEffect(() => {\n setDrawingContext(containerRef.current.getContext('2d'));\n }, []);\n\n const {viewport, isDragging} = context;\n\n if (ctx) {\n ctx.save();\n ctx.scale(pixelRatio, pixelRatio);\n\n props.redraw({\n width: viewport.width,\n height: viewport.height,\n ctx,\n isDragging,\n project: viewport.project,\n unproject: viewport.unproject\n });\n\n ctx.restore();\n }\n\n return (\n <canvas\n ref={containerRef}\n width={viewport.width * pixelRatio}\n height={viewport.height * pixelRatio}\n style={{\n width: `${viewport.width}px`,\n height: `${viewport.height}px`,\n position: 'absolute',\n left: 0,\n top: 0\n }}\n />\n );\n}\n\nCanvasOverlay.propTypes = propTypes;\nCanvasOverlay.defaultProps = defaultProps;\n\nexport default CanvasOverlay;\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport useMapControl, {mapControlPropTypes} from '../components/use-map-control';\n\nconst propTypes = Object.assign({}, mapControlPropTypes, {\n redraw: PropTypes.func.isRequired,\n style: PropTypes.object\n});\n\nconst defaultProps = {\n captureScroll: false,\n captureDrag: false,\n captureClick: false,\n captureDoubleClick: false,\n capturePointerMove: false\n};\n\nfunction HTMLOverlay(props) {\n const {context, containerRef} = useMapControl(props);\n const {viewport, isDragging} = context;\n const style = {\n position: 'absolute',\n left: 0,\n top: 0,\n width: viewport.width,\n height: viewport.height,\n ...props.style\n };\n\n return (\n <div ref={containerRef} style={style}>\n {props.redraw({\n width: viewport.width,\n height: viewport.height,\n isDragging,\n project: viewport.project,\n unproject: viewport.unproject\n })}\n </div>\n );\n}\n\nHTMLOverlay.propTypes = propTypes;\nHTMLOverlay.defaultProps = defaultProps;\n\nexport default HTMLOverlay;\n","// Copyright (c) 2015 Uber Technologies, Inc.\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport useMapControl, {mapControlPropTypes} from '../components/use-map-control';\n\nconst propTypes = Object.assign({}, mapControlPropTypes, {\n redraw: PropTypes.func.isRequired,\n style: PropTypes.object\n});\n\nconst defaultProps = {\n captureScroll: false,\n captureDrag: false,\n captureClick: false,\n captureDoubleClick: false,\n capturePointerMove: false\n};\n\nfunction SVGOverlay(props) {\n const {context, containerRef} = useMapControl(props);\n const {viewport, isDragging} = context;\n const style = {\n position: 'absolute',\n left: 0,\n top: 0,\n ...props.style\n };\n\n return (\n <svg width={viewport.width} height={viewport.height} ref={containerRef} style={style}>\n {props.redraw({\n width: viewport.width,\n height: viewport.height,\n isDragging,\n project: viewport.project,\n unproject: viewport.unproject\n })}\n </svg>\n );\n}\n\nSVGOverlay.propTypes = propTypes;\nSVGOverlay.defaultProps = defaultProps;\n\nexport default SVGOverlay;\n","import mapboxgl from './mapboxgl';\n\n// mapboxgl's setRTLTextPlugin, but does not crash in SSR\nconst setRTLTextPlugin = mapboxgl ? mapboxgl.setRTLTextPlugin : () => {};\nexport default setRTLTextPlugin;\n","import { Button, ButtonGroup } from 'react-bootstrap';\n\nexport const monoStyle = 'cklubq40e06ej17ojtb4pg2o1';\nexport const satelliteStyle = 'cknpikbkn0jut17nwxfi4mbh8';\n\nconst PreviewButton = (props) => (\n <div\n className='m-3'\n style={{\n position: 'absolute',\n bottom: 0,\n right: 0\n }}\n >\n <ButtonGroup>\n <Button\n onClick={() => props.setMapStyle(monoStyle)}\n variant={props.mapStyle === monoStyle ? 'secondary' : 'light'}\n >\n Map View\n </Button>\n <Button\n onClick={() => props.setMapStyle(satelliteStyle)}\n variant={props.mapStyle === satelliteStyle ? 'secondary' : 'light'}\n >\n Satellite View\n </Button>\n </ButtonGroup>\n </div>\n);\n\nexport default PreviewButton;\n","import bbox from '@turf/bbox';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { Button, Popover } from 'react-bootstrap';\nimport ReactMapGL, {\n AttributionControl,\n Layer,\n Source,\n WebMercatorViewport\n} from 'react-map-gl';\nimport { useHistory } from 'react-router';\nimport { storesContext } from '../../../stores/storesContext';\nimport {\n AlertLevelLabel,\n formatSiteType,\n openIrrimaxCurrentTab\n} from '../helpers';\nimport PreviewButton, { monoStyle } from './PreviewButton';\n\nconst alertLevel0Filter = ['==', ['get', 'alertLevel'], 0];\nconst alertLevel1Filter = ['==', ['get', 'alertLevel'], 1];\nconst alertLevel2Filter = ['==', ['get', 'alertLevel'], 2];\nconst alertLevel3Filter = ['==', ['get', 'alertLevel'], 3];\nconst alertLevel4Filter = ['==', ['get', 'alertLevel'], 4];\n\n// This does not use the withIrrigationSummaries HOC to\n// stop duplicated requests on the dashboard.\nconst SummaryMap = (props) => {\n const userStore = useContext(storesContext);\n const history = useHistory();\n const [viewport, setViewport] = useState({\n latitude: -40.9753799,\n longitude: 176.8903929,\n zoom: 4,\n height: props.height,\n width: props.width\n });\n const mapRef = useRef(null);\n const [mapStyle, setMapStyle] = useState(monoStyle);\n const [initialBoundsSet, setInitialBoundsSet] = useState(false);\n const [hoverInfo, setHoverInfo] = useState();\n\n const [prevFeatureCount, setPrevFeatureCount] = useState();\n\n // Geojson object for the property boundry.\n const boundry = useMemo(() => {\n const geojson = {\n type: 'FeatureCollection',\n features: []\n };\n props.propertySummaries.forEach((propertySummary) => {\n if (propertySummary.property && propertySummary.property.boundry) {\n geojson.features.push({\n type: 'Feature',\n geometry: {\n ...propertySummary.property.boundry\n },\n properties: {}\n });\n }\n });\n return geojson;\n }, [props.propertySummaries]);\n\n // Geojson object for the property monitoring sites.\n const points = useMemo(() => {\n const geojson = {\n type: 'FeatureCollection',\n features: []\n };\n\n props.propertySummaries.forEach((propertySummary) => {\n if (!propertySummary.loading && propertySummary.results)\n propertySummary.property.irrigation_monitoring_sites.forEach(\n (irrigation_monitoring_site) => {\n const result = propertySummary.results.sites.find(\n (s) =>\n s.site_id === Number(irrigation_monitoring_site.site_number)\n );\n // Handle coordinates in different order. This is a Terraprobe API issue which\n // will be fixed in the future.\n const _longitude = irrigation_monitoring_site.longitude;\n const _latitude = irrigation_monitoring_site.latitude;\n // Set longitude to the original longitude value if the original latitude value is correct.\n // Otherwise set to the original latitude value.\n const longitude =\n _latitude >= -90 && _latitude <= 90 ? _longitude : _latitude;\n // If the new longitude value if different to the original longitude value then set the\n // latitude to the original longitude value. Otherwise, set to the original latitude value.\n const latitude = _longitude !== longitude ? _longitude : _latitude;\n\n if (latitude && longitude) {\n const site = propertySummary.results.sites.find(\n (site) =>\n site.site_id ===\n Number(irrigation_monitoring_site.site_number)\n );\n let alertLevel = result ? result?.alert_level : 0;\n let status = result\n ? AlertLevelLabel(result.alert_level)\n : 'No Data';\n if (\n alertLevel === 3 &&\n site?.latest_reading.rz1 > site?.full_point\n ) {\n alertLevel = 4;\n status = 'Above Full Point';\n }\n // Handle different cases for different Site providers.\n const siteType = irrigation_monitoring_site.type;\n const displaySiteType = formatSiteType(siteType);\n if (siteType === 'irrimax') {\n const graphUrls = irrigation_monitoring_site.irrimax_sites.map(\n (is) => is.graph_url\n );\n geojson.features.push({\n type: 'Feature',\n geometry: {\n type: 'Point',\n coordinates: [longitude, latitude]\n },\n properties: {\n type: 'irrimax',\n displayType: displaySiteType,\n propertyId: irrigation_monitoring_site.property_id,\n propertyName: propertySummary.property.name,\n propertyIdentifier: irrigation_monitoring_site.site_number,\n siteId: irrigation_monitoring_site.id,\n siteName: irrigation_monitoring_site.site_name,\n siteJson: irrigation_monitoring_site,\n graphUrls,\n fullPoint: '',\n latestReading: ''\n }\n });\n } else {\n if (!site) return;\n geojson.features.push({\n type: 'Feature',\n geometry: {\n type: 'Point',\n coordinates: [longitude, latitude]\n },\n properties: {\n type: 'terraprobe',\n displayType: displaySiteType,\n alertLevel,\n status,\n propertyId: propertySummary.property.id,\n propertyName: propertySummary.property.name,\n propertyIdentifier: propertySummary.property.identifier,\n siteId: irrigation_monitoring_site.id,\n siteName: irrigation_monitoring_site.site_name,\n siteJson: irrigation_monitoring_site,\n fullPoint: site.full_point,\n latestReading: site.latest_reading.rz1\n }\n });\n }\n }\n }\n );\n });\n\n return geojson;\n }, [props.propertySummaries]);\n\n useEffect(() => {\n if (mapRef.current && mapStyle) {\n const map = mapRef.current.getMap();\n // Can't load in S3 object because of a CORS error.\n map.loadImage(\n 'https://fruition-metwatch-assets.s3-ap-southeast-2.amazonaws.com/sentek-logo-32.png',\n (error, image) => {\n if (error) throw error;\n map.addImage('custom-marker', image);\n }\n );\n }\n }, [mapRef, mapStyle]);\n\n const layers = [\n {\n id: 'irrimax_site',\n type: 'symbol',\n layout: {\n 'icon-image': 'custom-marker'\n },\n filter: ['==', 'type', 'irrimax']\n },\n {\n id: 'no_data',\n type: 'circle',\n paint: {\n 'circle-radius': 10,\n 'circle-color': '#b4b8bd',\n 'circle-stroke-color': '#6c757d',\n 'circle-stroke-width': 3\n },\n filter: ['==', 'alertLevel', 0]\n },\n {\n id: 'selected_no_data',\n type: 'circle',\n paint: {\n 'circle-radius': 13,\n 'circle-color': '#6c757d'\n },\n filter: [\n 'all',\n ['==', 'alertLevel', 0],\n ['==', 'siteId', props.selectedSite ? props.selectedSite.id : 0]\n ]\n },\n {\n id: 'no_action_required',\n type: 'circle',\n paint: {\n 'circle-radius': 10,\n 'circle-color': '#9ccea5',\n 'circle-stroke-color': '#28a745',\n 'circle-stroke-width': 3\n },\n filter: props.selectedSite\n ? [\n 'all',\n ['==', 'alertLevel', 1],\n ['!=', 'siteId', props.selectedSite.id]\n ]\n : ['==', 'alertLevel', 1]\n },\n {\n id: 'selected_no_action_required',\n type: 'circle',\n paint: {\n 'circle-radius': 13,\n 'circle-color': '#28a745'\n },\n filter: [\n 'all',\n ['==', 'alertLevel', 1],\n ['==', 'siteId', props.selectedSite ? props.selectedSite.id : 0]\n ]\n },\n {\n id: 'near_threshold',\n type: 'circle',\n paint: {\n 'circle-radius': 10,\n 'circle-color': '#fcdf8e',\n 'circle-stroke-color': '#ffc107',\n 'circle-stroke-width': 3\n },\n filter: ['==', 'alertLevel', 2]\n },\n {\n id: 'selected_near_threshold',\n type: 'circle',\n paint: {\n 'circle-radius': 13,\n 'circle-color': '#ffc107'\n },\n filter: [\n 'all',\n ['==', 'alertLevel', 2],\n ['==', 'siteId', props.selectedSite ? props.selectedSite.id : 0]\n ]\n },\n {\n id: 'threshold_met',\n type: 'circle',\n paint: {\n 'circle-radius': 10,\n 'circle-color': '#e49ca2',\n 'circle-stroke-color': '#dc3545',\n 'circle-stroke-width': 3\n },\n filter: ['==', 'alertLevel', 3]\n },\n {\n id: 'threshold_met_above',\n type: 'circle',\n paint: {\n 'circle-radius': 10,\n 'circle-color': '#b5d8f7',\n 'circle-stroke-color': '#0275d8',\n 'circle-stroke-width': 3\n },\n filter: ['==', 'alertLevel', 4]\n },\n {\n id: 'selected_threshold_met',\n type: 'circle',\n paint: {\n 'circle-radius': 13,\n 'circle-color': '#dc3545'\n },\n filter: [\n 'all',\n ['==', 'alertLevel', 3],\n ['<', 'latestReading', 'fullPoint'],\n ['==', 'siteId', props.selectedSite ? props.selectedSite.id : 0]\n ]\n },\n {\n id: 'selected_threshold_met_above',\n type: 'circle',\n paint: {\n 'circle-radius': 13,\n 'circle-color': '#0275d8'\n },\n filter: [\n 'all',\n ['==', 'alertLevel', 4],\n ['==', 'siteId', props.selectedSite ? props.selectedSite.id : 0]\n ]\n },\n {\n id: 'clusters',\n type: 'circle',\n source: 'clusters',\n filter: ['has', 'point_count'],\n paint: {\n 'circle-color': '#ffffff',\n 'circle-stroke-width': 3,\n 'circle-stroke-color': [\n 'case',\n ['>', ['get', 'alertLevel3'], 0],\n '#dc3545',\n ['>', ['get', 'alertLevel2'], 0],\n '#ffc107',\n ['>', ['get', 'alertLevel1'], 0],\n '#28a745',\n ['>', ['get', 'alertLevel4'], 0],\n '#0275d8',\n ['>', ['get', 'alertLevel0'], 0],\n '#6c757d',\n '#6c757d'\n ],\n 'circle-radius': ['step', ['get', 'point_count'], 20, 100, 30, 750, 40]\n }\n },\n {\n id: 'cluster_count',\n type: 'symbol',\n source: 'clusters',\n filter: ['has', 'point_count'],\n layout: {\n 'text-field': '{point_count_abbreviated}',\n 'text-font': ['DIN Offc Pro Medium', 'Arial Unicode MS Bold'],\n 'text-size': 12\n }\n }\n ];\n\n const fitBounds = useCallback(() => {\n const featureCollection = {\n type: 'FeatureCollection',\n features: [...boundry.features, ...points.features]\n };\n if (featureCollection.features.length > 0) {\n let minLng;\n let minLat;\n let maxLng;\n let maxLat;\n\n featureCollection.features.forEach((feature) => {\n const [newMinLng, newMinLat, newMaxLng, newMaxLat] = bbox(feature);\n if (minLng === undefined || newMinLng < minLng) minLng = newMinLng;\n if (maxLng === undefined || newMaxLng > maxLng) maxLng = newMaxLng;\n if (minLat === undefined || newMinLat < minLat) minLat = newMinLat;\n if (maxLat === undefined || newMaxLat > maxLat) maxLat = newMaxLat;\n });\n // construct a viewport instance from the current state\n const vp = new WebMercatorViewport(viewport);\n let { longitude, latitude, zoom } = vp.fitBounds(\n [\n [minLng, minLat],\n [maxLng, maxLat]\n ],\n {\n padding: 20\n }\n );\n\n if (zoom > 16) zoom = 16;\n\n setViewport({\n ...viewport,\n longitude,\n latitude,\n zoom\n });\n setInitialBoundsSet(true);\n }\n }, [boundry.features, points.features, viewport]);\n\n // Update the bounds of the map once the 100% width has been converted to an integer\n // Bounds for the map is redrawn when new data features are loaded.\n useEffect(() => {\n if (\n (!initialBoundsSet ||\n (prevFeatureCount && points.features.length > prevFeatureCount)) &&\n points.features.length > 0 &&\n typeof viewport.width === 'number'\n ) {\n fitBounds();\n }\n setPrevFeatureCount(points.features.length);\n }, [viewport.width, points, prevFeatureCount, initialBoundsSet, fitBounds]);\n\n return (\n <ReactMapGL\n {...viewport}\n mapboxApiAccessToken={process.env.REACT_APP_MAPBOX_ACCESS_TOKEN}\n width={props.width}\n height={props.height}\n onViewportChange={(nextViewport) => setViewport(nextViewport)}\n ref={mapRef}\n mapStyle={`mapbox://styles/hortplus/${mapStyle}`}\n attributionControl={false}\n preserveDrawingBuffer={true}\n interactiveLayerIds={[\n 'irrimax_site',\n 'no_data',\n 'no_action_required',\n 'near_threshold',\n 'threshold_met',\n 'threshold_met_above',\n 'clusters'\n ]}\n onHover={(e) => {\n const hoveredFeature = e.features && e.features[0];\n\n if (hoveredFeature) {\n if (hoveredFeature.properties.cluster) {\n const x = e.srcEvent.offsetX;\n const y = e.srcEvent.offsetY;\n const mapboxSource = mapRef.current\n .getMap()\n .getSource('irrigationMonitoringSites');\n\n mapboxSource.getClusterLeaves(\n hoveredFeature.properties.cluster_id,\n hoveredFeature.properties.point_count,\n 0,\n (error, features) => {\n const properties = {};\n features.forEach((feature) => {\n properties[feature.properties.propertyIdentifier] = {\n name: feature.properties.propertyName,\n identifier: feature.properties.propertyIdentifier\n };\n });\n\n setHoverInfo({\n type: 'cluster',\n feature: hoveredFeature,\n x: x,\n y: y,\n properties: Object.values(properties)\n });\n }\n );\n } else {\n setHoverInfo({\n type: 'site',\n feature: hoveredFeature,\n x: e.srcEvent.offsetX,\n y: e.srcEvent.offsetY\n });\n }\n } else {\n setHoverInfo(null);\n }\n }}\n onClick={(e) => {\n const clickedFeature = e.features && e.features[0];\n if (!clickedFeature) return;\n\n if (!clickedFeature.properties.cluster) {\n if (clickedFeature.properties.type === 'irrimax') {\n JSON.parse(clickedFeature.properties.graphUrls).forEach(\n (graphUrl) => {\n openIrrimaxCurrentTab(graphUrl);\n }\n );\n return;\n }\n history.push('/soil-water/monitoring');\n userStore.propertiesStore.selectProperty(\n clickedFeature.properties.propertyId,\n userStore.selectedDatabase,\n userStore.bearerToken,\n userStore.refreshCallback\n );\n if (props.selectSite)\n props.selectSite(JSON.parse(clickedFeature.properties.siteJson));\n } else {\n const mapboxSource = mapRef.current\n .getMap()\n .getSource('irrigationMonitoringSites');\n\n mapboxSource.getClusterExpansionZoom(\n clickedFeature.properties.cluster_id,\n (err, zoom) => {\n setViewport({\n ...viewport,\n longitude: clickedFeature.geometry.coordinates[0],\n latitude: clickedFeature.geometry.coordinates[1],\n zoom,\n transitionDuration: 500\n });\n }\n );\n }\n }}\n >\n <AttributionControl compact={true} />\n <Button variant='light' onClick={fitBounds} className='m-3 float-right'>\n Reset\n </Button>\n <Source id='boundry' type='geojson' data={boundry}>\n <Layer\n id='polygon'\n type='fill'\n paint={{\n 'fill-color': '#6C757D',\n 'fill-opacity': 0.5\n }}\n />\n </Source>\n <Source\n id='irrigationMonitoringSites'\n type='geojson'\n data={points}\n cluster={true}\n clusterMaxZoom={12}\n clusterRadius={50}\n clusterProperties={{\n alertLevel0: ['+', ['case', alertLevel0Filter, 1, 0]],\n alertLevel1: ['+', ['case', alertLevel1Filter, 1, 0]],\n alertLevel2: ['+', ['case', alertLevel2Filter, 1, 0]],\n alertLevel3: ['+', ['case', alertLevel3Filter, 1, 0]],\n alertLevel4: ['+', ['case', alertLevel4Filter, 1, 0]]\n }}\n >\n {layers.map((layer) => (\n <Layer key={layer.id} {...layer} />\n ))}\n </Source>\n {hoverInfo ? (\n hoverInfo.type === 'site' ? (\n <Popover\n id={hoverInfo.feature.properties.id}\n placement='auto'\n style={{\n left:\n viewport.width - hoverInfo.x < 200\n ? hoverInfo.x - 200\n : hoverInfo.x + 5,\n top:\n viewport.height - hoverInfo.y < 100\n ? hoverInfo.y - 90\n : hoverInfo.y,\n position: 'absolute',\n width: '200px',\n zIndex: 9,\n pointerEvents: 'none'\n }}\n >\n <Popover.Title>\n <b>{hoverInfo.feature.properties.propertyIdentifier}</b>{' '}\n {hoverInfo.feature.properties.propertyName}\n </Popover.Title>\n <Popover.Content>\n Type: <b>{hoverInfo.feature.properties.displayType}</b>\n <br />\n Site: <b>{hoverInfo.feature.properties.siteName}</b>\n <br />\n {hoverInfo.feature.properties.type !== 'irrimax' && (\n <>\n Status: <b>{hoverInfo.feature.properties.status}</b>\n </>\n )}\n </Popover.Content>\n </Popover>\n ) : hoverInfo.type === 'cluster' ? (\n <Popover\n id={hoverInfo.feature.properties.id}\n placement='auto'\n style={{\n left:\n viewport.width - hoverInfo.x < 200\n ? hoverInfo.x - 200\n : hoverInfo.x + 5,\n top:\n viewport.height - hoverInfo.y < 100\n ? hoverInfo.y - 90\n : hoverInfo.y,\n position: 'absolute',\n width: '200px',\n zIndex: 9,\n pointerEvents: 'none'\n }}\n >\n <Popover.Title>\n {hoverInfo.properties.length} Properties\n </Popover.Title>\n <Popover.Content>\n {hoverInfo.properties.map((property) => (\n <div key={property.identifier}>\n <b>{property.identifier}</b>: {property.name}\n <br />\n </div>\n ))}\n </Popover.Content>\n </Popover>\n ) : null\n ) : null}\n\n <PreviewButton\n setMapStyle={setMapStyle}\n mapStyle={mapStyle}\n viewport={viewport}\n />\n </ReactMapGL>\n );\n};\n\nSummaryMap.propTypes = {\n // Misc\n height: PropTypes.any.isRequired,\n width: PropTypes.any.isRequired,\n propertySummaries: PropTypes.array.isRequired,\n selectedSite: PropTypes.any,\n selectSite: PropTypes.func\n};\n\nexport default observer(SummaryMap);\n\n","import { faArrowRight, faListAlt } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport React, {\n Fragment,\n useContext,\n useEffect,\n useMemo,\n useState\n} from 'react';\nimport {\n Button,\n Card,\n Col,\n Collapse,\n Container,\n Row,\n Spinner\n} from 'react-bootstrap';\nimport { useHistory } from 'react-router-dom';\nimport { storesContext } from '../../stores/storesContext';\nimport IrrigationLegend from './IrrigationLegend';\nimport { withIrrigationSummaries } from './IrrigationProviders';\nimport {\n CalculateSiteSummaryLevel,\n SummaryBootstrapColorClassLevel\n} from './helpers';\nimport SummaryMap from './maps/SummaryMap';\n\n// Uses the withIrrigationSummaries HOC so you don't\n// need to supply the propertySummaries\nfunction IrrigationDashboard(props) {\n /**\n * Takes a propertySummary and if there are valid results the maximum level is found\n * @param {Object} propertySummary Individual object from prop array\n * @returns {Object} Used to decide the colour of the row, the max level is used as it represents the current highest risk.\n */\n const propertySummaries = useMemo(\n () =>\n props.propertySummaries\n .filter(\n (propertySummary) =>\n propertySummary.results && propertySummary.results.sites.length > 0\n )\n .map((propertySummary) => {\n var minMonitoringDate = null;\n var maxMonitoringDate = null;\n var maxLevel = null;\n\n propertySummary.results.sites.forEach((result) => {\n const level = CalculateSiteSummaryLevel(result);\n if (maxLevel === null) maxLevel = level;\n else if (level > maxLevel) maxLevel = level;\n\n // Find the range of monitoring dates\n const latestReadingDate = moment(result.latest_reading_date);\n if (minMonitoringDate === null && maxMonitoringDate === null) {\n minMonitoringDate = latestReadingDate;\n maxMonitoringDate = latestReadingDate;\n } else if (latestReadingDate < minMonitoringDate) {\n minMonitoringDate = latestReadingDate;\n } else if (latestReadingDate > maxMonitoringDate) {\n maxMonitoringDate = latestReadingDate;\n }\n });\n\n return {\n ...propertySummary,\n minMonitoringDate: minMonitoringDate,\n maxMonitoringDate: maxMonitoringDate,\n maxLevel: maxLevel\n };\n }),\n [props.propertySummaries]\n );\n const userStore = useContext(storesContext);\n const history = useHistory();\n\n /** Set by clicking and local storage, controls whether drop down table is displayed */\n const [showResults, setShowResults] = useState(true);\n\n useEffect(() => {\n if (localStorage.getItem('showDashboardResults'))\n setShowResults(\n localStorage.getItem('showDashboardResults') === 'true' ? true : false\n );\n }, []);\n\n const handleClick = () => {\n localStorage.setItem('showDashboardResults', !showResults);\n setShowResults(\n localStorage.getItem('showDashboardResults') === 'true' ? true : false\n );\n };\n\n return props.loading ? (\n <div className='d-flex justify-content-center pt-5'>\n <Spinner animation='border' variant='primary' />\n </div>\n ) : (\n <Container className='p-0'>\n <SummaryMap\n propertySummaries={propertySummaries}\n height={window.innerHeight < 500 ? 250 : window.innerHeight / 2}\n width='100%'\n />\n <IrrigationLegend\n className='mt-2 text-center'\n propertySummaries={propertySummaries}\n />\n\n <Card className='mt-2'>\n <Card.Header onClick={handleClick} className='text-center'>\n {showResults ? (\n <Fragment>\n Irrigation Monitoring\n <br />\n </Fragment>\n ) : null}\n <small>\n <FontAwesomeIcon icon={faListAlt} /> {showResults ? 'Hide' : 'Show'}{' '}\n Results\n </small>\n </Card.Header>\n <Collapse in={showResults}>\n <div>\n {propertySummaries.map((propertySummary) => {\n return propertySummary.maxLevel &&\n propertySummary.minMonitoringDate &&\n propertySummary.maxMonitoringDate ? (\n <Row\n key={propertySummary.property.id}\n className='my-2 mx-1 p-0'\n noGutters\n >\n <Col xs={12} className='bg-light'>\n <Row noGutters>\n <Col\n xs={1}\n className={`bg-${SummaryBootstrapColorClassLevel(\n propertySummary.maxLevel\n )}`}\n />\n <Col xs={8} className='py-2 pl-3 pr-0'>\n <b>\n {propertySummary.property.identifier +\n ' ' +\n propertySummary.property.name}\n </b>\n <br />{' '}\n {propertySummary.property.irrigation_monitoring_sites.map(\n (irrigationMonitoringSite, i) =>\n irrigationMonitoringSite.site_name +\n (i <\n propertySummary.property.irrigation_monitoring_sites\n .length -\n 1\n ? ', '\n : '')\n )}\n <br /> Monitored:{' '}\n {propertySummary.minMonitoringDate.format(\n 'Do MMM YYYY'\n )}\n {!propertySummary.minMonitoringDate.isSame(\n propertySummary.maxMonitoringDate\n )\n ? ` - ${propertySummary.maxMonitoringDate.format(\n 'Do MMM YYYY'\n )}`\n : ''}\n </Col>\n <Col\n xs={3}\n className='d-flex align-items-center justify-content-end pr-3'\n >\n <Button\n variant='outline-primary'\n className='float-right'\n onClick={() => {\n history.push('/soil-water/monitoring');\n userStore.propertiesStore.selectProperty(\n propertySummary.property.id,\n userStore.selectedDatabase,\n userStore.bearerToken,\n userStore.refreshCallback\n );\n }}\n >\n <FontAwesomeIcon icon={faArrowRight} />\n </Button>\n </Col>\n </Row>\n </Col>\n </Row>\n ) : null;\n })}\n </div>\n </Collapse>\n </Card>\n </Container>\n );\n}\n\nIrrigationDashboard.propTypes = {\n propertySummaries: PropTypes.array.isRequired,\n loading: PropTypes.bool.isRequired\n};\n\nexport default withIrrigationSummaries(observer(IrrigationDashboard));\n\n","import { TraplogDashboard } from '@hortplus/traplog-react';\nimport { observer } from 'mobx-react';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { Button, Col, Container, Row } from 'react-bootstrap';\nimport { useHistory } from 'react-router-dom';\nimport { storesContext } from '../../stores/storesContext';\nimport BlockScanningDashboard from '../block_scanning/dashboard/BlockScanningDashboard';\nimport PageTitle from '../helpers/PageTitle';\nimport IrrigationDashboard from '../irrigation/IrrigationDashboard';\n\nconst ClientDashboard = () => {\n const userStore = useContext(storesContext);\n const history = useHistory();\n const [display, setDisplay] = useState('trapping');\n\n const goToTrapping = async (propertyId) => {\n await userStore.propertiesStore.selectProperty(\n propertyId,\n userStore.selectedDatabase,\n userStore.bearerToken,\n userStore.refreshCallback\n );\n history.push('/pest-disease/trapping-overview');\n };\n\n useEffect(() => {\n if (localStorage.getItem('selectedDashboardTab')) {\n setDisplay(localStorage.getItem('selectedDashboardTab'));\n }\n }, []);\n\n const dashboardDisplay = (display) => {\n switch (display) {\n case 'trapping':\n return (\n <TraplogDashboard\n selectedDatabase={userStore.selectedDatabase}\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refresh}\n propertiesStore={userStore.propertiesStore}\n goToTrapping={goToTrapping}\n />\n );\n case 'irrigation':\n return (\n <IrrigationDashboard\n properties={userStore.propertiesStore.properties}\n loading={userStore.propertiesStore.loading && userStore.loading}\n />\n );\n case 'scanning':\n return (\n <BlockScanningDashboard\n loading={userStore.propertiesStore.loading && userStore.loading}\n />\n );\n default:\n return undefined;\n }\n };\n\n return (\n <Container className='p-0'>\n <Row className='mb-4'>\n <Col>\n <PageTitle title={'Monitoring Map'} />\n </Col>\n </Row>\n <Container className='p-0 d-flex justify-content-center mb-2'>\n <Button\n variant={display === 'trapping' ? 'primary' : 'light'}\n onClick={() => {\n localStorage.setItem('selectedDashboardTab', 'trapping');\n setDisplay(localStorage.getItem('selectedDashboardTab'));\n }}\n className='mr-2'\n >\n Trapping\n </Button>\n <Button\n variant={display === 'irrigation' ? 'primary' : 'light'}\n onClick={() => {\n localStorage.setItem('selectedDashboardTab', 'irrigation');\n setDisplay(localStorage.getItem('selectedDashboardTab'));\n }}\n className='mr-2'\n >\n Irrigation\n </Button>\n <Button\n variant={display === 'scanning' ? 'primary' : 'light'}\n onClick={() => {\n localStorage.setItem('selectedDashboardTab', 'scanning');\n setDisplay(localStorage.getItem('selectedDashboardTab'));\n }}\n >\n Scanning\n </Button>\n </Container>\n {dashboardDisplay(display)}\n </Container>\n );\n};\n\nexport default observer(ClientDashboard);\n\n","import { observer } from 'mobx-react';\nimport React, { useContext } from 'react';\nimport { storesContext } from '../../stores/storesContext';\nimport AdminDashboard from './AdminDashboard';\nimport ClientDashboard from './ClientDashboard';\n\nfunction Dashboard() {\n const userStore = useContext(storesContext);\n return userStore.isAdmin ? <AdminDashboard /> : <ClientDashboard />;\n}\n\nexport default observer(Dashboard);\n","/**\n * @this {Promise}\n */\nfunction finallyConstructor(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n // @ts-ignore\n return constructor.reject(reason);\n });\n }\n );\n}\n\nexport default finallyConstructor;\n","function allSettled(arr) {\n var P = this;\n return new P(function(resolve, reject) {\n if (!(arr && typeof arr.length !== 'undefined')) {\n return reject(\n new TypeError(\n typeof arr +\n ' ' +\n arr +\n ' is not iterable(cannot read property Symbol(Symbol.iterator))'\n )\n );\n }\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n function(e) {\n args[i] = { status: 'rejected', reason: e };\n if (--remaining === 0) {\n resolve(args);\n }\n }\n );\n return;\n }\n }\n args[i] = { status: 'fulfilled', value: val };\n if (--remaining === 0) {\n resolve(args);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n}\n\nexport default allSettled;\n","/**\n * @constructor\n */\nfunction AggregateError(errors, message) {\n (this.name = 'AggregateError'), (this.errors = errors);\n this.message = message || '';\n}\nAggregateError.prototype = Error.prototype;\n\nfunction any(arr) {\n var P = this;\n return new P(function(resolve, reject) {\n if (!(arr && typeof arr.length !== 'undefined')) {\n return reject(new TypeError('Promise.any accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return reject();\n\n var rejectionReasons = [];\n for (var i = 0; i < args.length; i++) {\n try {\n P.resolve(args[i])\n .then(resolve)\n .catch(function(error) {\n rejectionReasons.push(error);\n if (rejectionReasons.length === args.length) {\n reject(\n new AggregateError(\n rejectionReasons,\n 'All promises were rejected'\n )\n );\n }\n });\n } catch (ex) {\n reject(ex);\n }\n }\n });\n}\n\nexport default any;\n","import promiseFinally from './finally';\nimport allSettled from './allSettled';\nimport any from './any';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction isArray(x) {\n return Boolean(x && typeof x.length !== 'undefined');\n}\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array<!Function>} */\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.all accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.any = any;\n\nPromise.allSettled = allSettled;\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.race accepts an array'));\n }\n\n for (var i = 0, len = arr.length; i < len; i++) {\n Promise.resolve(arr[i]).then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n // @ts-ignore\n (typeof setImmediate === 'function' &&\n function(fn) {\n // @ts-ignore\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n","import PromisePollyfill from 'promise-polyfill';\nimport { isBrowser } from './utils';\nvar local = {};\n\nif (isBrowser) {\n local = window;\n} else if (typeof self !== 'undefined') {\n local = self;\n}\n\nvar Promise = 'Promise' in local ? local.Promise : PromisePollyfill;\nexport { Promise };","import { Promise } from './polyfills';\nvar slice = [].slice;\nvar isBrowser = typeof window !== 'undefined';\nvar PERF = isBrowser && typeof performance !== 'undefined' ? performance : {};\n\nfunction isCORSSupported() {\n var xhr = new window.XMLHttpRequest();\n return 'withCredentials' in xhr;\n}\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToHex(buffer) {\n var hexOctets = [];\n\n for (var _i = 0; _i < buffer.length; _i++) {\n hexOctets.push(byteToHex[buffer[_i]]);\n }\n\n return hexOctets.join('');\n}\n\nvar destination = new Uint8Array(16);\n\nfunction rng() {\n if (typeof crypto != 'undefined' && typeof crypto.getRandomValues == 'function') {\n return crypto.getRandomValues(destination);\n } else if (typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function') {\n return msCrypto.getRandomValues(destination);\n }\n\n return destination;\n}\n\nfunction generateRandomId(length) {\n var id = bytesToHex(rng());\n return id.substr(0, length);\n}\n\nfunction getDtHeaderValue(span) {\n var dtVersion = '00';\n var dtUnSampledFlags = '00';\n var dtSampledFlags = '01';\n\n if (span && span.traceId && span.id && span.parentId) {\n var flags = span.sampled ? dtSampledFlags : dtUnSampledFlags;\n var id = span.sampled ? span.id : span.parentId;\n return dtVersion + '-' + span.traceId + '-' + id + '-' + flags;\n }\n}\n\nfunction parseDtHeaderValue(value) {\n var parsed = /^([\\da-f]{2})-([\\da-f]{32})-([\\da-f]{16})-([\\da-f]{2})$/.exec(value);\n\n if (parsed) {\n var flags = parsed[4];\n var sampled = flags !== '00';\n return {\n traceId: parsed[2],\n id: parsed[3],\n sampled: sampled\n };\n }\n}\n\nfunction isDtHeaderValid(header) {\n return /^[\\da-f]{2}-[\\da-f]{32}-[\\da-f]{16}-[\\da-f]{2}$/.test(header) && header.slice(3, 35) !== '00000000000000000000000000000000' && header.slice(36, 52) !== '0000000000000000';\n}\n\nfunction getTSHeaderValue(_ref) {\n var sampleRate = _ref.sampleRate;\n\n if (typeof sampleRate !== 'number' || String(sampleRate).length > 256) {\n return;\n }\n\n var NAMESPACE = 'es';\n var SEPARATOR = '=';\n return \"\" + NAMESPACE + SEPARATOR + \"s:\" + sampleRate;\n}\n\nfunction setRequestHeader(target, name, value) {\n if (typeof target.setRequestHeader === 'function') {\n target.setRequestHeader(name, value);\n } else if (target.headers && typeof target.headers.append === 'function') {\n target.headers.append(name, value);\n } else {\n target[name] = value;\n }\n}\n\nfunction checkSameOrigin(source, target) {\n var isSame = false;\n\n if (typeof target === 'string') {\n isSame = source === target;\n } else if (target && typeof target.test === 'function') {\n isSame = target.test(source);\n } else if (Array.isArray(target)) {\n target.forEach(function (t) {\n if (!isSame) {\n isSame = checkSameOrigin(source, t);\n }\n });\n }\n\n return isSame;\n}\n\nfunction isPlatformSupported() {\n return isBrowser && typeof Set === 'function' && typeof JSON.stringify === 'function' && PERF && typeof PERF.now === 'function' && isCORSSupported();\n}\n\nfunction setLabel(key, value, obj) {\n if (!obj || !key) return;\n var skey = removeInvalidChars(key);\n var valueType = typeof value;\n\n if (value != undefined && valueType !== 'boolean' && valueType !== 'number') {\n value = String(value);\n }\n\n obj[skey] = value;\n return obj;\n}\n\nfunction getServerTimingInfo(serverTimingEntries) {\n if (serverTimingEntries === void 0) {\n serverTimingEntries = [];\n }\n\n var serverTimingInfo = [];\n var entrySeparator = ', ';\n var valueSeparator = ';';\n\n for (var _i2 = 0; _i2 < serverTimingEntries.length; _i2++) {\n var _serverTimingEntries$ = serverTimingEntries[_i2],\n name = _serverTimingEntries$.name,\n duration = _serverTimingEntries$.duration,\n description = _serverTimingEntries$.description;\n var timingValue = name;\n\n if (description) {\n timingValue += valueSeparator + 'desc=' + description;\n }\n\n if (duration) {\n timingValue += valueSeparator + 'dur=' + duration;\n }\n\n serverTimingInfo.push(timingValue);\n }\n\n return serverTimingInfo.join(entrySeparator);\n}\n\nfunction getTimeOrigin() {\n return PERF.timing.fetchStart;\n}\n\nfunction stripQueryStringFromUrl(url) {\n return url && url.split('?')[0];\n}\n\nfunction isObject(value) {\n return value !== null && typeof value === 'object';\n}\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nfunction baseExtend(dst, objs, deep) {\n for (var i = 0, ii = objs.length; i < ii; ++i) {\n var obj = objs[i];\n if (!isObject(obj) && !isFunction(obj)) continue;\n var keys = Object.keys(obj);\n\n for (var j = 0, jj = keys.length; j < jj; j++) {\n var key = keys[j];\n var src = obj[key];\n\n if (deep && isObject(src)) {\n if (!isObject(dst[key])) dst[key] = Array.isArray(src) ? [] : {};\n baseExtend(dst[key], [src], false);\n } else {\n dst[key] = src;\n }\n }\n }\n\n return dst;\n}\n\nfunction getElasticScript() {\n if (typeof document !== 'undefined') {\n var scripts = document.getElementsByTagName('script');\n\n for (var i = 0, l = scripts.length; i < l; i++) {\n var sc = scripts[i];\n\n if (sc.src.indexOf('elastic') > 0) {\n return sc;\n }\n }\n }\n}\n\nfunction getCurrentScript() {\n if (typeof document !== 'undefined') {\n var currentScript = document.currentScript;\n\n if (!currentScript) {\n return getElasticScript();\n }\n\n return currentScript;\n }\n}\n\nfunction extend(dst) {\n return baseExtend(dst, slice.call(arguments, 1), false);\n}\n\nfunction merge(dst) {\n return baseExtend(dst, slice.call(arguments, 1), true);\n}\n\nfunction isUndefined(obj) {\n return typeof obj === 'undefined';\n}\n\nfunction noop() {}\n\nfunction find(array, predicate, thisArg) {\n if (array == null) {\n throw new TypeError('array is null or not defined');\n }\n\n var o = Object(array);\n var len = o.length >>> 0;\n\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n\n var k = 0;\n\n while (k < len) {\n var kValue = o[k];\n\n if (predicate.call(thisArg, kValue, k, o)) {\n return kValue;\n }\n\n k++;\n }\n\n return undefined;\n}\n\nfunction removeInvalidChars(key) {\n return key.replace(/[.*\"]/g, '_');\n}\n\nfunction getLatestSpan(spans, typeFilter) {\n var latestSpan = null;\n\n for (var _i3 = 0; _i3 < spans.length; _i3++) {\n var span = spans[_i3];\n\n if (typeFilter && typeFilter(span.type) && (!latestSpan || latestSpan._end < span._end)) {\n latestSpan = span;\n }\n }\n\n return latestSpan;\n}\n\nfunction getLatestNonXHRSpan(spans) {\n return getLatestSpan(spans, function (type) {\n return String(type).indexOf('external') === -1;\n });\n}\n\nfunction getLatestXHRSpan(spans) {\n return getLatestSpan(spans, function (type) {\n return String(type).indexOf('external') !== -1;\n });\n}\n\nfunction getEarliestSpan(spans) {\n var earliestSpan = spans[0];\n\n for (var _i4 = 1; _i4 < spans.length; _i4++) {\n var span = spans[_i4];\n\n if (earliestSpan._start > span._start) {\n earliestSpan = span;\n }\n }\n\n return earliestSpan;\n}\n\nfunction now() {\n return PERF.now();\n}\n\nfunction getTime(time) {\n return typeof time === 'number' && time >= 0 ? time : now();\n}\n\nfunction getDuration(start, end) {\n if (isUndefined(end) || isUndefined(start)) {\n return null;\n }\n\n return parseInt(end - start);\n}\n\nfunction scheduleMacroTask(callback) {\n setTimeout(callback, 0);\n}\n\nfunction scheduleMicroTask(callback) {\n Promise.resolve().then(callback);\n}\n\nfunction isPerfTimelineSupported() {\n return typeof PERF.getEntriesByType === 'function';\n}\n\nfunction isPerfTypeSupported(type) {\n return typeof PerformanceObserver !== 'undefined' && PerformanceObserver.supportedEntryTypes && PerformanceObserver.supportedEntryTypes.indexOf(type) >= 0;\n}\n\nfunction isBeaconInspectionEnabled() {\n var flagName = '_elastic_inspect_beacon_';\n\n if (sessionStorage.getItem(flagName) != null) {\n return true;\n }\n\n if (!window.URL || !window.URLSearchParams) {\n return false;\n }\n\n try {\n var parsedUrl = new URL(window.location.href);\n var isFlagSet = parsedUrl.searchParams.has(flagName);\n\n if (isFlagSet) {\n sessionStorage.setItem(flagName, true);\n }\n\n return isFlagSet;\n } catch (e) {}\n\n return false;\n}\n\nexport { extend, merge, isUndefined, noop, baseExtend, bytesToHex, isCORSSupported, isObject, isFunction, isPlatformSupported, isDtHeaderValid, parseDtHeaderValue, getServerTimingInfo, getDtHeaderValue, getTSHeaderValue, getCurrentScript, getElasticScript, getTimeOrigin, generateRandomId, getEarliestSpan, getLatestNonXHRSpan, getLatestXHRSpan, getDuration, getTime, now, rng, checkSameOrigin, scheduleMacroTask, scheduleMicroTask, setLabel, setRequestHeader, stripQueryStringFromUrl, find, removeInvalidChars, PERF, isPerfTimelineSupported, isBrowser, isPerfTypeSupported, isBeaconInspectionEnabled };","export var globalState = {\n fetchInProgress: false\n};\nexport function apmSymbol(name) {\n return '__apm_symbol__' + name;\n}\n\nfunction isPropertyWritable(propertyDesc) {\n if (!propertyDesc) {\n return true;\n }\n\n if (propertyDesc.writable === false) {\n return false;\n }\n\n return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined');\n}\n\nfunction attachOriginToPatched(patched, original) {\n patched[apmSymbol('OriginalDelegate')] = original;\n}\n\nexport function patchMethod(target, name, patchFn) {\n var proto = target;\n\n while (proto && !proto.hasOwnProperty(name)) {\n proto = Object.getPrototypeOf(proto);\n }\n\n if (!proto && target[name]) {\n proto = target;\n }\n\n var delegateName = apmSymbol(name);\n var delegate;\n\n if (proto && !(delegate = proto[delegateName])) {\n delegate = proto[delegateName] = proto[name];\n var desc = proto && Object.getOwnPropertyDescriptor(proto, name);\n\n if (isPropertyWritable(desc)) {\n var patchDelegate = patchFn(delegate, delegateName, name);\n\n proto[name] = function () {\n return patchDelegate(this, arguments);\n };\n\n attachOriginToPatched(proto[name], delegate);\n }\n }\n\n return delegate;\n}\nexport var XHR_IGNORE = apmSymbol('xhrIgnore');\nexport var XHR_SYNC = apmSymbol('xhrSync');\nexport var XHR_URL = apmSymbol('xhrURL');\nexport var XHR_METHOD = apmSymbol('xhrMethod');","var SCHEDULE = 'schedule';\nvar INVOKE = 'invoke';\nvar ADD_EVENT_LISTENER_STR = 'addEventListener';\nvar REMOVE_EVENT_LISTENER_STR = 'removeEventListener';\nvar RESOURCE_INITIATOR_TYPES = ['link', 'css', 'script', 'img', 'xmlhttprequest', 'fetch', 'beacon', 'iframe'];\nvar REUSABILITY_THRESHOLD = 5000;\nvar MAX_SPAN_DURATION = 5 * 60 * 1000;\nvar PAGE_LOAD_DELAY = 1000;\nvar PAGE_LOAD = 'page-load';\nvar ROUTE_CHANGE = 'route-change';\nvar TYPE_CUSTOM = 'custom';\nvar USER_INTERACTION = 'user-interaction';\nvar HTTP_REQUEST_TYPE = 'http-request';\nvar TEMPORARY_TYPE = 'temporary';\nvar NAME_UNKNOWN = 'Unknown';\nvar TRANSACTION_TYPE_ORDER = [PAGE_LOAD, ROUTE_CHANGE, USER_INTERACTION, HTTP_REQUEST_TYPE, TYPE_CUSTOM, TEMPORARY_TYPE];\nvar OUTCOME_SUCCESS = 'success';\nvar OUTCOME_FAILURE = 'failure';\nvar OUTCOME_UNKNOWN = 'unknown';\nvar USER_TIMING_THRESHOLD = 60;\nvar TRANSACTION_START = 'transaction:start';\nvar TRANSACTION_END = 'transaction:end';\nvar CONFIG_CHANGE = 'config:change';\nvar QUEUE_FLUSH = 'queue:flush';\nvar QUEUE_ADD_TRANSACTION = 'queue:add_transaction';\nvar XMLHTTPREQUEST = 'xmlhttprequest';\nvar FETCH = 'fetch';\nvar HISTORY = 'history';\nvar EVENT_TARGET = 'eventtarget';\nvar CLICK = 'click';\nvar ERROR = 'error';\nvar BEFORE_EVENT = ':before';\nvar AFTER_EVENT = ':after';\nvar LOCAL_CONFIG_KEY = 'elastic_apm_config';\nvar LONG_TASK = 'longtask';\nvar PAINT = 'paint';\nvar MEASURE = 'measure';\nvar NAVIGATION = 'navigation';\nvar RESOURCE = 'resource';\nvar FIRST_CONTENTFUL_PAINT = 'first-contentful-paint';\nvar LARGEST_CONTENTFUL_PAINT = 'largest-contentful-paint';\nvar FIRST_INPUT = 'first-input';\nvar LAYOUT_SHIFT = 'layout-shift';\nvar ERRORS = 'errors';\nvar TRANSACTIONS = 'transactions';\nvar CONFIG_SERVICE = 'ConfigService';\nvar LOGGING_SERVICE = 'LoggingService';\nvar TRANSACTION_SERVICE = 'TransactionService';\nvar APM_SERVER = 'ApmServer';\nvar PERFORMANCE_MONITORING = 'PerformanceMonitoring';\nvar ERROR_LOGGING = 'ErrorLogging';\nvar TRUNCATED_TYPE = '.truncated';\nvar KEYWORD_LIMIT = 1024;\nvar SESSION_TIMEOUT = 30 * 60000;\nvar HTTP_REQUEST_TIMEOUT = 10000;\nexport { SCHEDULE, INVOKE, ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR, RESOURCE_INITIATOR_TYPES, REUSABILITY_THRESHOLD, MAX_SPAN_DURATION, PAGE_LOAD_DELAY, PAGE_LOAD, ROUTE_CHANGE, NAME_UNKNOWN, TYPE_CUSTOM, USER_TIMING_THRESHOLD, TRANSACTION_START, TRANSACTION_END, CONFIG_CHANGE, QUEUE_FLUSH, QUEUE_ADD_TRANSACTION, XMLHTTPREQUEST, FETCH, HISTORY, EVENT_TARGET, CLICK, ERROR, BEFORE_EVENT, AFTER_EVENT, LOCAL_CONFIG_KEY, HTTP_REQUEST_TYPE, LONG_TASK, PAINT, MEASURE, NAVIGATION, RESOURCE, FIRST_CONTENTFUL_PAINT, LARGEST_CONTENTFUL_PAINT, KEYWORD_LIMIT, TEMPORARY_TYPE, USER_INTERACTION, TRANSACTION_TYPE_ORDER, ERRORS, TRANSACTIONS, CONFIG_SERVICE, LOGGING_SERVICE, TRANSACTION_SERVICE, APM_SERVER, PERFORMANCE_MONITORING, ERROR_LOGGING, TRUNCATED_TYPE, FIRST_INPUT, LAYOUT_SHIFT, OUTCOME_SUCCESS, OUTCOME_FAILURE, OUTCOME_UNKNOWN, SESSION_TIMEOUT, HTTP_REQUEST_TIMEOUT };","import { patchMethod, XHR_SYNC, XHR_URL, XHR_METHOD, XHR_IGNORE } from './patch-utils';\nimport { SCHEDULE, INVOKE, XMLHTTPREQUEST, ADD_EVENT_LISTENER_STR } from '../constants';\nexport function patchXMLHttpRequest(callback) {\n var XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n\n if (!XMLHttpRequestPrototype || !XMLHttpRequestPrototype[ADD_EVENT_LISTENER_STR]) {\n return;\n }\n\n var READY_STATE_CHANGE = 'readystatechange';\n var LOAD = 'load';\n var ERROR = 'error';\n var TIMEOUT = 'timeout';\n var ABORT = 'abort';\n\n function invokeTask(task, status) {\n if (task.state !== INVOKE) {\n task.state = INVOKE;\n task.data.status = status;\n callback(INVOKE, task);\n }\n }\n\n function scheduleTask(task) {\n if (task.state === SCHEDULE) {\n return;\n }\n\n task.state = SCHEDULE;\n callback(SCHEDULE, task);\n var target = task.data.target;\n\n function addListener(name) {\n target[ADD_EVENT_LISTENER_STR](name, function (_ref) {\n var type = _ref.type;\n\n if (type === READY_STATE_CHANGE) {\n if (target.readyState === 4 && target.status !== 0) {\n invokeTask(task, 'success');\n }\n } else {\n var status = type === LOAD ? 'success' : type;\n invokeTask(task, status);\n }\n });\n }\n\n addListener(READY_STATE_CHANGE);\n addListener(LOAD);\n addListener(TIMEOUT);\n addListener(ERROR);\n addListener(ABORT);\n }\n\n var openNative = patchMethod(XMLHttpRequestPrototype, 'open', function () {\n return function (self, args) {\n if (!self[XHR_IGNORE]) {\n self[XHR_METHOD] = args[0];\n self[XHR_URL] = args[1];\n self[XHR_SYNC] = args[2] === false;\n }\n\n return openNative.apply(self, args);\n };\n });\n var sendNative = patchMethod(XMLHttpRequestPrototype, 'send', function () {\n return function (self, args) {\n if (self[XHR_IGNORE]) {\n return sendNative.apply(self, args);\n }\n\n var task = {\n source: XMLHTTPREQUEST,\n state: '',\n type: 'macroTask',\n data: {\n target: self,\n method: self[XHR_METHOD],\n sync: self[XHR_SYNC],\n url: self[XHR_URL],\n status: ''\n }\n };\n\n try {\n scheduleTask(task);\n return sendNative.apply(self, args);\n } catch (e) {\n invokeTask(task, ERROR);\n throw e;\n }\n };\n });\n}","export function isResponseSuccessful(status) {\n if (status === 0 || status > 399 && status < 600) {\n return false;\n }\n\n return true;\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { HTTP_REQUEST_TIMEOUT } from '../constants';\nimport { isResponseSuccessful } from './response-status';\nexport var BYTE_LIMIT = 60 * 1000;\nexport function shouldUseFetchWithKeepAlive(method, payload) {\n if (!isFetchSupported()) {\n return false;\n }\n\n var isKeepAliveSupported = ('keepalive' in new Request(''));\n\n if (!isKeepAliveSupported) {\n return false;\n }\n\n var size = calculateSize(payload);\n return method === 'POST' && size < BYTE_LIMIT;\n}\nexport function sendFetchRequest(method, url, _ref) {\n var _ref$keepalive = _ref.keepalive,\n keepalive = _ref$keepalive === void 0 ? false : _ref$keepalive,\n _ref$timeout = _ref.timeout,\n timeout = _ref$timeout === void 0 ? HTTP_REQUEST_TIMEOUT : _ref$timeout,\n payload = _ref.payload,\n headers = _ref.headers,\n sendCredentials = _ref.sendCredentials;\n var timeoutConfig = {};\n\n if (typeof AbortController === 'function') {\n var controller = new AbortController();\n timeoutConfig.signal = controller.signal;\n setTimeout(function () {\n return controller.abort();\n }, timeout);\n }\n\n var fetchResponse;\n return window.fetch(url, _extends({\n body: payload,\n headers: headers,\n method: method,\n keepalive: keepalive,\n credentials: sendCredentials ? 'include' : 'omit'\n }, timeoutConfig)).then(function (response) {\n fetchResponse = response;\n return fetchResponse.text();\n }).then(function (responseText) {\n var bodyResponse = {\n url: url,\n status: fetchResponse.status,\n responseText: responseText\n };\n\n if (!isResponseSuccessful(fetchResponse.status)) {\n throw bodyResponse;\n }\n\n return bodyResponse;\n });\n}\nexport function isFetchSupported() {\n return typeof window.fetch === 'function' && typeof window.Request === 'function';\n}\n\nfunction calculateSize(payload) {\n if (!payload) {\n return 0;\n }\n\n if (payload instanceof Blob) {\n return payload.size;\n }\n\n return new Blob([payload]).size;\n}","import { Promise } from '../polyfills';\nimport { globalState } from './patch-utils';\nimport { SCHEDULE, INVOKE, FETCH } from '../constants';\nimport { scheduleMicroTask } from '../utils';\nimport { isFetchSupported } from '../http/fetch';\nexport function patchFetch(callback) {\n if (!isFetchSupported()) {\n return;\n }\n\n function scheduleTask(task) {\n task.state = SCHEDULE;\n callback(SCHEDULE, task);\n }\n\n function invokeTask(task) {\n task.state = INVOKE;\n callback(INVOKE, task);\n }\n\n function handleResponseError(task, error) {\n task.data.aborted = isAbortError(error);\n task.data.error = error;\n invokeTask(task);\n }\n\n function readStream(stream, task) {\n var reader = stream.getReader();\n\n var read = function read() {\n reader.read().then(function (_ref) {\n var done = _ref.done;\n\n if (done) {\n invokeTask(task);\n } else {\n read();\n }\n }, function (error) {\n handleResponseError(task, error);\n });\n };\n\n read();\n }\n\n var nativeFetch = window.fetch;\n\n window.fetch = function (input, init) {\n var fetchSelf = this;\n var args = arguments;\n var request, url;\n\n if (typeof input === 'string') {\n request = new Request(input, init);\n url = input;\n } else if (input) {\n request = input;\n url = request.url;\n } else {\n return nativeFetch.apply(fetchSelf, args);\n }\n\n var task = {\n source: FETCH,\n state: '',\n type: 'macroTask',\n data: {\n target: request,\n method: request.method,\n url: url,\n aborted: false\n }\n };\n return new Promise(function (resolve, reject) {\n globalState.fetchInProgress = true;\n scheduleTask(task);\n var promise;\n\n try {\n promise = nativeFetch.apply(fetchSelf, [request]);\n } catch (error) {\n reject(error);\n task.data.error = error;\n invokeTask(task);\n globalState.fetchInProgress = false;\n return;\n }\n\n promise.then(function (response) {\n var clonedResponse = response.clone ? response.clone() : {};\n resolve(response);\n scheduleMicroTask(function () {\n task.data.response = response;\n var body = clonedResponse.body;\n\n if (body) {\n readStream(body, task);\n } else {\n invokeTask(task);\n }\n });\n }, function (error) {\n reject(error);\n scheduleMicroTask(function () {\n handleResponseError(task, error);\n });\n });\n globalState.fetchInProgress = false;\n });\n };\n}\n\nfunction isAbortError(error) {\n return error && error.name === 'AbortError';\n}","import { BEFORE_EVENT, AFTER_EVENT } from './constants';\n\nvar EventHandler = function () {\n function EventHandler() {\n this.observers = {};\n }\n\n var _proto = EventHandler.prototype;\n\n _proto.observe = function observe(name, fn) {\n var _this = this;\n\n if (typeof fn === 'function') {\n if (!this.observers[name]) {\n this.observers[name] = [];\n }\n\n this.observers[name].push(fn);\n return function () {\n var index = _this.observers[name].indexOf(fn);\n\n if (index > -1) {\n _this.observers[name].splice(index, 1);\n }\n };\n }\n };\n\n _proto.sendOnly = function sendOnly(name, args) {\n var obs = this.observers[name];\n\n if (obs) {\n obs.forEach(function (fn) {\n try {\n fn.apply(undefined, args);\n } catch (error) {\n console.log(error, error.stack);\n }\n });\n }\n };\n\n _proto.send = function send(name, args) {\n this.sendOnly(name + BEFORE_EVENT, args);\n this.sendOnly(name, args);\n this.sendOnly(name + AFTER_EVENT, args);\n };\n\n return EventHandler;\n}();\n\nexport default EventHandler;","import { patchXMLHttpRequest } from './xhr-patch';\nimport { patchFetch } from './fetch-patch';\nimport { patchHistory } from './history-patch';\nimport EventHandler from '../event-handler';\nimport { HISTORY, FETCH, XMLHTTPREQUEST } from '../constants';\nvar patchEventHandler = new EventHandler();\nvar alreadyPatched = false;\n\nfunction patchAll() {\n if (!alreadyPatched) {\n alreadyPatched = true;\n patchXMLHttpRequest(function (event, task) {\n patchEventHandler.send(XMLHTTPREQUEST, [event, task]);\n });\n patchFetch(function (event, task) {\n patchEventHandler.send(FETCH, [event, task]);\n });\n patchHistory(function (event, task) {\n patchEventHandler.send(HISTORY, [event, task]);\n });\n }\n\n return patchEventHandler;\n}\n\nexport { patchAll, patchEventHandler };","import { INVOKE, HISTORY } from '../constants';\nexport function patchHistory(callback) {\n if (!window.history) {\n return;\n }\n\n var nativePushState = history.pushState;\n\n if (typeof nativePushState === 'function') {\n history.pushState = function (state, title, url) {\n var task = {\n source: HISTORY,\n data: {\n state: state,\n title: title,\n url: url\n }\n };\n callback(INVOKE, task);\n nativePushState.apply(this, arguments);\n };\n }\n}","var __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar state = {\n bootstrapTime: null,\n lastHiddenStart: Number.MIN_SAFE_INTEGER\n};\nexport { __DEV__, state };","import { isPlatformSupported, isBrowser, now } from './common/utils';\nimport { patchAll } from './common/patching';\nimport { state } from './state';\nvar enabled = false;\nexport function bootstrap() {\n if (isPlatformSupported()) {\n patchAll();\n state.bootstrapTime = now();\n enabled = true;\n } else if (isBrowser) {\n console.log('[Elastic APM] platform is not supported!');\n }\n\n return enabled;\n}","function filePathToFileName(fileUrl) {\n var origin = window.location.origin || window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port : '');\n\n if (fileUrl.indexOf(origin) > -1) {\n fileUrl = fileUrl.replace(origin + '/', '');\n }\n\n return fileUrl;\n}\n\nfunction cleanFilePath(filePath) {\n if (filePath === void 0) {\n filePath = '';\n }\n\n if (filePath === '<anonymous>') {\n filePath = '';\n }\n\n return filePath;\n}\n\nfunction isFileInline(fileUrl) {\n if (fileUrl) {\n return window.location.href.indexOf(fileUrl) === 0;\n }\n\n return false;\n}\n\nfunction normalizeStackFrames(stackFrames) {\n return stackFrames.map(function (frame) {\n if (frame.functionName) {\n frame.functionName = normalizeFunctionName(frame.functionName);\n }\n\n return frame;\n });\n}\n\nfunction normalizeFunctionName(fnName) {\n var parts = fnName.split('/');\n\n if (parts.length > 1) {\n fnName = ['Object', parts[parts.length - 1]].join('.');\n } else {\n fnName = parts[0];\n }\n\n fnName = fnName.replace(/.<$/gi, '.<anonymous>');\n fnName = fnName.replace(/^Anonymous function$/, '<anonymous>');\n parts = fnName.split('.');\n\n if (parts.length > 1) {\n fnName = parts[parts.length - 1];\n } else {\n fnName = parts[0];\n }\n\n return fnName;\n}\n\nfunction isValidStackTrace(stackTraces) {\n if (stackTraces.length === 0) {\n return false;\n }\n\n if (stackTraces.length === 1) {\n var stackTrace = stackTraces[0];\n return 'lineNumber' in stackTrace;\n }\n\n return true;\n}\n\nexport function createStackTraces(stackParser, errorEvent) {\n var error = errorEvent.error,\n filename = errorEvent.filename,\n lineno = errorEvent.lineno,\n colno = errorEvent.colno;\n var stackTraces = [];\n\n if (error) {\n try {\n stackTraces = stackParser.parse(error);\n } catch (e) {}\n }\n\n if (!isValidStackTrace(stackTraces)) {\n stackTraces = [{\n fileName: filename,\n lineNumber: lineno,\n columnNumber: colno\n }];\n }\n\n var normalizedStackTraces = normalizeStackFrames(stackTraces);\n return normalizedStackTraces.map(function (stack) {\n var fileName = stack.fileName,\n lineNumber = stack.lineNumber,\n columnNumber = stack.columnNumber,\n _stack$functionName = stack.functionName,\n functionName = _stack$functionName === void 0 ? '<anonymous>' : _stack$functionName;\n\n if (!fileName && !lineNumber) {\n return {};\n }\n\n if (!columnNumber && !lineNumber) {\n return {};\n }\n\n var filePath = cleanFilePath(fileName);\n var cleanedFileName = filePathToFileName(filePath);\n\n if (isFileInline(filePath)) {\n cleanedFileName = '(inline script)';\n }\n\n return {\n abs_path: fileName,\n filename: cleanedFileName,\n function: functionName,\n lineno: lineNumber,\n colno: columnNumber\n };\n });\n}\nexport function filterInvalidFrames(frames) {\n return frames.filter(function (_ref) {\n var filename = _ref.filename,\n lineno = _ref.lineno;\n return typeof filename !== 'undefined' && typeof lineno !== 'undefined';\n });\n}","import { isBrowser } from './utils';\n\nfunction isDefaultPort(port, protocol) {\n switch (protocol) {\n case 'http:':\n return port === '80';\n\n case 'https:':\n return port === '443';\n }\n\n return true;\n}\n\nvar RULES = [['#', 'hash'], ['?', 'query'], ['/', 'path'], ['@', 'auth', 1], [NaN, 'host', undefined, 1]];\nvar PROTOCOL_REGEX = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\S\\s]*)/i;\nexport var Url = function () {\n function Url(url) {\n var _this$extractProtocol = this.extractProtocol(url || ''),\n protocol = _this$extractProtocol.protocol,\n address = _this$extractProtocol.address,\n slashes = _this$extractProtocol.slashes;\n\n var relative = !protocol && !slashes;\n var location = this.getLocation();\n var instructions = RULES.slice();\n address = address.replace('\\\\', '/');\n\n if (!slashes) {\n instructions[2] = [NaN, 'path'];\n }\n\n var index;\n\n for (var i = 0; i < instructions.length; i++) {\n var instruction = instructions[i];\n var parse = instruction[0];\n var key = instruction[1];\n\n if (typeof parse === 'string') {\n index = address.indexOf(parse);\n\n if (~index) {\n var instLength = instruction[2];\n\n if (instLength) {\n var newIndex = address.lastIndexOf(parse);\n index = Math.max(index, newIndex);\n this[key] = address.slice(0, index);\n address = address.slice(index + instLength);\n } else {\n this[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else {\n this[key] = address;\n address = '';\n }\n\n this[key] = this[key] || (relative && instruction[3] ? location[key] || '' : '');\n if (instruction[3]) this[key] = this[key].toLowerCase();\n }\n\n if (relative && this.path.charAt(0) !== '/') {\n this.path = '/' + this.path;\n }\n\n this.relative = relative;\n this.protocol = protocol || location.protocol;\n this.hostname = this.host;\n this.port = '';\n\n if (/:\\d+$/.test(this.host)) {\n var value = this.host.split(':');\n var port = value.pop();\n var hostname = value.join(':');\n\n if (isDefaultPort(port, this.protocol)) {\n this.host = hostname;\n } else {\n this.port = port;\n }\n\n this.hostname = hostname;\n }\n\n this.origin = this.protocol && this.host && this.protocol !== 'file:' ? this.protocol + '//' + this.host : 'null';\n this.href = this.toString();\n }\n\n var _proto = Url.prototype;\n\n _proto.toString = function toString() {\n var result = this.protocol;\n result += '//';\n\n if (this.auth) {\n var REDACTED = '[REDACTED]';\n var userpass = this.auth.split(':');\n var username = userpass[0] ? REDACTED : '';\n var password = userpass[1] ? ':' + REDACTED : '';\n result += username + password + '@';\n }\n\n result += this.host;\n result += this.path;\n result += this.query;\n result += this.hash;\n return result;\n };\n\n _proto.getLocation = function getLocation() {\n var globalVar = {};\n\n if (isBrowser) {\n globalVar = window;\n }\n\n return globalVar.location;\n };\n\n _proto.extractProtocol = function extractProtocol(url) {\n var match = PROTOCOL_REGEX.exec(url);\n return {\n protocol: match[1] ? match[1].toLowerCase() : '',\n slashes: !!match[2],\n address: match[3]\n };\n };\n\n return Url;\n}();\nexport function slugifyUrl(urlStr, depth) {\n if (depth === void 0) {\n depth = 2;\n }\n\n var parsedUrl = new Url(urlStr);\n var query = parsedUrl.query,\n path = parsedUrl.path;\n var pathParts = path.substring(1).split('/');\n var redactString = ':id';\n var wildcard = '*';\n var specialCharsRegex = /\\W|_/g;\n var digitsRegex = /[0-9]/g;\n var lowerCaseRegex = /[a-z]/g;\n var upperCaseRegex = /[A-Z]/g;\n var redactedParts = [];\n var redactedBefore = false;\n\n for (var index = 0; index < pathParts.length; index++) {\n var part = pathParts[index];\n\n if (redactedBefore || index > depth - 1) {\n if (part) {\n redactedParts.push(wildcard);\n }\n\n break;\n }\n\n var numberOfSpecialChars = (part.match(specialCharsRegex) || []).length;\n\n if (numberOfSpecialChars >= 2) {\n redactedParts.push(redactString);\n redactedBefore = true;\n continue;\n }\n\n var numberOfDigits = (part.match(digitsRegex) || []).length;\n\n if (numberOfDigits > 3 || part.length > 3 && numberOfDigits / part.length >= 0.3) {\n redactedParts.push(redactString);\n redactedBefore = true;\n continue;\n }\n\n var numberofUpperCase = (part.match(upperCaseRegex) || []).length;\n var numberofLowerCase = (part.match(lowerCaseRegex) || []).length;\n var lowerCaseRate = numberofLowerCase / part.length;\n var upperCaseRate = numberofUpperCase / part.length;\n\n if (part.length > 5 && (upperCaseRate > 0.3 && upperCaseRate < 0.6 || lowerCaseRate > 0.3 && lowerCaseRate < 0.6)) {\n redactedParts.push(redactString);\n redactedBefore = true;\n continue;\n }\n\n part && redactedParts.push(part);\n }\n\n var redacted = '/' + (redactedParts.length >= 2 ? redactedParts.join('/') : redactedParts.join('')) + (query ? '?{query}' : '');\n return redacted;\n}","var _excluded = [\"tags\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { Url } from './url';\nimport { PAGE_LOAD, NAVIGATION } from './constants';\nimport { getServerTimingInfo, PERF, isPerfTimelineSupported } from './utils';\nvar LEFT_SQUARE_BRACKET = 91;\nvar RIGHT_SQUARE_BRACKET = 93;\nvar EXTERNAL = 'external';\nvar RESOURCE = 'resource';\nvar HARD_NAVIGATION = 'hard-navigation';\n\nfunction getPortNumber(port, protocol) {\n if (port === '') {\n port = protocol === 'http:' ? '80' : protocol === 'https:' ? '443' : '';\n }\n\n return port;\n}\n\nfunction getResponseContext(perfTimingEntry) {\n var transferSize = perfTimingEntry.transferSize,\n encodedBodySize = perfTimingEntry.encodedBodySize,\n decodedBodySize = perfTimingEntry.decodedBodySize,\n serverTiming = perfTimingEntry.serverTiming;\n var respContext = {\n transfer_size: transferSize,\n encoded_body_size: encodedBodySize,\n decoded_body_size: decodedBodySize\n };\n var serverTimingStr = getServerTimingInfo(serverTiming);\n\n if (serverTimingStr) {\n respContext.headers = {\n 'server-timing': serverTimingStr\n };\n }\n\n return respContext;\n}\n\nfunction getDestination(parsedUrl) {\n var port = parsedUrl.port,\n protocol = parsedUrl.protocol,\n hostname = parsedUrl.hostname;\n var portNumber = getPortNumber(port, protocol);\n var ipv6Hostname = hostname.charCodeAt(0) === LEFT_SQUARE_BRACKET && hostname.charCodeAt(hostname.length - 1) === RIGHT_SQUARE_BRACKET;\n var address = hostname;\n\n if (ipv6Hostname) {\n address = hostname.slice(1, -1);\n }\n\n return {\n service: {\n resource: hostname + ':' + portNumber,\n name: '',\n type: ''\n },\n address: address,\n port: Number(portNumber)\n };\n}\n\nfunction getResourceContext(data) {\n var entry = data.entry,\n url = data.url;\n var parsedUrl = new Url(url);\n var destination = getDestination(parsedUrl);\n return {\n http: {\n url: url,\n response: getResponseContext(entry)\n },\n destination: destination\n };\n}\n\nfunction getExternalContext(data) {\n var url = data.url,\n method = data.method,\n target = data.target,\n response = data.response;\n var parsedUrl = new Url(url);\n var destination = getDestination(parsedUrl);\n var context = {\n http: {\n method: method,\n url: parsedUrl.href\n },\n destination: destination\n };\n var statusCode;\n\n if (target && typeof target.status !== 'undefined') {\n statusCode = target.status;\n } else if (response) {\n statusCode = response.status;\n }\n\n context.http.status_code = statusCode;\n return context;\n}\n\nfunction getNavigationContext(data) {\n var url = data.url;\n var parsedUrl = new Url(url);\n var destination = getDestination(parsedUrl);\n return {\n destination: destination\n };\n}\n\nexport function getPageContext() {\n return {\n page: {\n referer: document.referrer,\n url: location.href\n }\n };\n}\nexport function addSpanContext(span, data) {\n if (!data) {\n return;\n }\n\n var type = span.type;\n var context;\n\n switch (type) {\n case EXTERNAL:\n context = getExternalContext(data);\n break;\n\n case RESOURCE:\n context = getResourceContext(data);\n break;\n\n case HARD_NAVIGATION:\n context = getNavigationContext(data);\n break;\n }\n\n span.addContext(context);\n}\nexport function addTransactionContext(transaction, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n tags = _ref.tags,\n configContext = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var pageContext = getPageContext();\n var responseContext = {};\n\n if (transaction.type === PAGE_LOAD && isPerfTimelineSupported()) {\n var entries = PERF.getEntriesByType(NAVIGATION);\n\n if (entries && entries.length > 0) {\n responseContext = {\n response: getResponseContext(entries[0])\n };\n }\n }\n\n transaction.addContext(pageContext, responseContext, configContext);\n}","import { KEYWORD_LIMIT } from './constants';\nvar METADATA_MODEL = {\n service: {\n name: [KEYWORD_LIMIT, true],\n version: true,\n agent: {\n version: [KEYWORD_LIMIT, true]\n },\n environment: true\n },\n labels: {\n '*': true\n }\n};\nvar RESPONSE_MODEL = {\n '*': true,\n headers: {\n '*': true\n }\n};\nvar DESTINATION_MODEL = {\n address: [KEYWORD_LIMIT],\n service: {\n '*': [KEYWORD_LIMIT, true]\n }\n};\nvar CONTEXT_MODEL = {\n user: {\n id: true,\n email: true,\n username: true\n },\n tags: {\n '*': true\n },\n http: {\n response: RESPONSE_MODEL\n },\n destination: DESTINATION_MODEL,\n response: RESPONSE_MODEL\n};\nvar SPAN_MODEL = {\n name: [KEYWORD_LIMIT, true],\n type: [KEYWORD_LIMIT, true],\n id: [KEYWORD_LIMIT, true],\n trace_id: [KEYWORD_LIMIT, true],\n parent_id: [KEYWORD_LIMIT, true],\n transaction_id: [KEYWORD_LIMIT, true],\n subtype: true,\n action: true,\n context: CONTEXT_MODEL\n};\nvar TRANSACTION_MODEL = {\n name: true,\n parent_id: true,\n type: [KEYWORD_LIMIT, true],\n id: [KEYWORD_LIMIT, true],\n trace_id: [KEYWORD_LIMIT, true],\n span_count: {\n started: [KEYWORD_LIMIT, true]\n },\n context: CONTEXT_MODEL\n};\nvar ERROR_MODEL = {\n id: [KEYWORD_LIMIT, true],\n trace_id: true,\n transaction_id: true,\n parent_id: true,\n culprit: true,\n exception: {\n type: true\n },\n transaction: {\n type: true\n },\n context: CONTEXT_MODEL\n};\n\nfunction truncate(value, limit, required, placeholder) {\n if (limit === void 0) {\n limit = KEYWORD_LIMIT;\n }\n\n if (required === void 0) {\n required = false;\n }\n\n if (placeholder === void 0) {\n placeholder = 'N/A';\n }\n\n if (required && isEmpty(value)) {\n value = placeholder;\n }\n\n if (typeof value === 'string') {\n return value.substring(0, limit);\n }\n\n return value;\n}\n\nfunction isEmpty(value) {\n return value == null || value === '' || typeof value === 'undefined';\n}\n\nfunction replaceValue(target, key, currModel) {\n var value = truncate(target[key], currModel[0], currModel[1]);\n\n if (isEmpty(value)) {\n delete target[key];\n return;\n }\n\n target[key] = value;\n}\n\nfunction truncateModel(model, target, childTarget) {\n if (model === void 0) {\n model = {};\n }\n\n if (childTarget === void 0) {\n childTarget = target;\n }\n\n var keys = Object.keys(model);\n var emptyArr = [];\n\n var _loop = function _loop(i) {\n var currKey = keys[i];\n var currModel = model[currKey] === true ? emptyArr : model[currKey];\n\n if (!Array.isArray(currModel)) {\n truncateModel(currModel, target, childTarget[currKey]);\n } else {\n if (currKey === '*') {\n Object.keys(childTarget).forEach(function (key) {\n return replaceValue(childTarget, key, currModel);\n });\n } else {\n replaceValue(childTarget, currKey, currModel);\n }\n }\n };\n\n for (var i = 0; i < keys.length; i++) {\n _loop(i);\n }\n\n return target;\n}\n\nexport { truncate, truncateModel, SPAN_MODEL, TRANSACTION_MODEL, ERROR_MODEL, METADATA_MODEL, RESPONSE_MODEL };","var _excluded = [\"tags\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { createStackTraces, filterInvalidFrames } from './stack-trace';\nimport { generateRandomId, merge, extend } from '../common/utils';\nimport { getPageContext } from '../common/context';\nimport { truncateModel, ERROR_MODEL } from '../common/truncate';\nimport stackParser from 'error-stack-parser';\nvar IGNORE_KEYS = ['stack', 'message'];\n\nfunction getErrorProperties(error) {\n var propertyFound = false;\n var properties = {};\n Object.keys(error).forEach(function (key) {\n if (IGNORE_KEYS.indexOf(key) >= 0) {\n return;\n }\n\n var val = error[key];\n\n if (val == null || typeof val === 'function') {\n return;\n }\n\n if (typeof val === 'object') {\n if (typeof val.toISOString !== 'function') return;\n val = val.toISOString();\n }\n\n properties[key] = val;\n propertyFound = true;\n });\n\n if (propertyFound) {\n return properties;\n }\n}\n\nvar ErrorLogging = function () {\n function ErrorLogging(apmServer, configService, transactionService) {\n this._apmServer = apmServer;\n this._configService = configService;\n this._transactionService = transactionService;\n }\n\n var _proto = ErrorLogging.prototype;\n\n _proto.createErrorDataModel = function createErrorDataModel(errorEvent) {\n var frames = createStackTraces(stackParser, errorEvent);\n var filteredFrames = filterInvalidFrames(frames);\n var culprit = '(inline script)';\n var lastFrame = filteredFrames[filteredFrames.length - 1];\n\n if (lastFrame && lastFrame.filename) {\n culprit = lastFrame.filename;\n }\n\n var message = errorEvent.message,\n error = errorEvent.error;\n var errorMessage = message;\n var errorType = '';\n var errorContext = {};\n\n if (error && typeof error === 'object') {\n errorMessage = errorMessage || error.message;\n errorType = error.name;\n var customProperties = getErrorProperties(error);\n\n if (customProperties) {\n errorContext.custom = customProperties;\n }\n }\n\n if (!errorType) {\n if (errorMessage && errorMessage.indexOf(':') > -1) {\n errorType = errorMessage.split(':')[0];\n }\n }\n\n var currentTransaction = this._transactionService.getCurrentTransaction();\n\n var transactionContext = currentTransaction ? currentTransaction.context : {};\n\n var _this$_configService$ = this._configService.get('context'),\n tags = _this$_configService$.tags,\n configContext = _objectWithoutPropertiesLoose(_this$_configService$, _excluded);\n\n var pageContext = getPageContext();\n var context = merge({}, pageContext, transactionContext, configContext, errorContext);\n var errorObject = {\n id: generateRandomId(),\n culprit: culprit,\n exception: {\n message: errorMessage,\n stacktrace: filteredFrames,\n type: errorType\n },\n context: context\n };\n\n if (currentTransaction) {\n errorObject = extend(errorObject, {\n trace_id: currentTransaction.traceId,\n parent_id: currentTransaction.id,\n transaction_id: currentTransaction.id,\n transaction: {\n type: currentTransaction.type,\n sampled: currentTransaction.sampled\n }\n });\n }\n\n return truncateModel(ERROR_MODEL, errorObject);\n };\n\n _proto.logErrorEvent = function logErrorEvent(errorEvent) {\n if (typeof errorEvent === 'undefined') {\n return;\n }\n\n var errorObject = this.createErrorDataModel(errorEvent);\n\n if (typeof errorObject.exception.message === 'undefined') {\n return;\n }\n\n this._apmServer.addError(errorObject);\n };\n\n _proto.registerListeners = function registerListeners() {\n var _this = this;\n\n window.addEventListener('error', function (errorEvent) {\n return _this.logErrorEvent(errorEvent);\n });\n window.addEventListener('unhandledrejection', function (promiseRejectionEvent) {\n return _this.logPromiseEvent(promiseRejectionEvent);\n });\n };\n\n _proto.logPromiseEvent = function logPromiseEvent(promiseRejectionEvent) {\n var prefix = 'Unhandled promise rejection: ';\n var reason = promiseRejectionEvent.reason;\n\n if (reason == null) {\n reason = '<no reason specified>';\n }\n\n var errorEvent;\n\n if (typeof reason.message === 'string') {\n var name = reason.name ? reason.name + ': ' : '';\n errorEvent = {\n error: reason,\n message: prefix + name + reason.message\n };\n } else {\n reason = typeof reason === 'object' ? '<object>' : typeof reason === 'function' ? '<function>' : reason;\n errorEvent = {\n message: prefix + reason\n };\n }\n\n this.logErrorEvent(errorEvent);\n };\n\n _proto.logError = function logError(messageOrError) {\n var errorEvent = {};\n\n if (typeof messageOrError === 'string') {\n errorEvent.message = messageOrError;\n } else {\n errorEvent.error = messageOrError;\n }\n\n return this.logErrorEvent(errorEvent);\n };\n\n return ErrorLogging;\n}();\n\nexport default ErrorLogging;","var Queue = function () {\n function Queue(onFlush, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n this.onFlush = onFlush;\n this.items = [];\n this.queueLimit = opts.queueLimit || -1;\n this.flushInterval = opts.flushInterval || 0;\n this.timeoutId = undefined;\n }\n\n var _proto = Queue.prototype;\n\n _proto._setTimer = function _setTimer() {\n var _this = this;\n\n this.timeoutId = setTimeout(function () {\n return _this.flush();\n }, this.flushInterval);\n };\n\n _proto._clear = function _clear() {\n if (typeof this.timeoutId !== 'undefined') {\n clearTimeout(this.timeoutId);\n this.timeoutId = undefined;\n }\n\n this.items = [];\n };\n\n _proto.flush = function flush() {\n this.onFlush(this.items);\n\n this._clear();\n };\n\n _proto.add = function add(item) {\n this.items.push(item);\n\n if (this.queueLimit !== -1 && this.items.length >= this.queueLimit) {\n this.flush();\n } else {\n if (typeof this.timeoutId === 'undefined') {\n this._setTimer();\n }\n }\n };\n\n return Queue;\n}();\n\nexport default Queue;","var NDJSON = function () {\n function NDJSON() {}\n\n NDJSON.stringify = function stringify(object) {\n return JSON.stringify(object) + '\\n';\n };\n\n return NDJSON;\n}();\n\nexport default NDJSON;","import { generateRandomId, setLabel, merge, getDuration, getTime } from '../common/utils';\nimport { NAME_UNKNOWN, TYPE_CUSTOM } from '../common/constants';\n\nvar SpanBase = function () {\n function SpanBase(name, type, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!name) {\n name = NAME_UNKNOWN;\n }\n\n if (!type) {\n type = TYPE_CUSTOM;\n }\n\n this.name = name;\n this.type = type;\n this.options = options;\n this.id = options.id || generateRandomId(16);\n this.traceId = options.traceId;\n this.sampled = options.sampled;\n this.sampleRate = options.sampleRate;\n this.timestamp = options.timestamp;\n this._start = getTime(options.startTime);\n this._end = undefined;\n this.ended = false;\n this.outcome = undefined;\n this.onEnd = options.onEnd;\n }\n\n var _proto = SpanBase.prototype;\n\n _proto.ensureContext = function ensureContext() {\n if (!this.context) {\n this.context = {};\n }\n };\n\n _proto.addLabels = function addLabels(tags) {\n this.ensureContext();\n var ctx = this.context;\n\n if (!ctx.tags) {\n ctx.tags = {};\n }\n\n var keys = Object.keys(tags);\n keys.forEach(function (k) {\n return setLabel(k, tags[k], ctx.tags);\n });\n };\n\n _proto.addContext = function addContext() {\n for (var _len = arguments.length, context = new Array(_len), _key = 0; _key < _len; _key++) {\n context[_key] = arguments[_key];\n }\n\n if (context.length === 0) return;\n this.ensureContext();\n merge.apply(void 0, [this.context].concat(context));\n };\n\n _proto.end = function end(endTime) {\n if (this.ended) {\n return;\n }\n\n this.ended = true;\n this._end = getTime(endTime);\n this.callOnEnd();\n };\n\n _proto.callOnEnd = function callOnEnd() {\n if (typeof this.onEnd === 'function') {\n this.onEnd(this);\n }\n };\n\n _proto.duration = function duration() {\n return getDuration(this._start, this._end);\n };\n\n return SpanBase;\n}();\n\nexport default SpanBase;","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport SpanBase from './span-base';\nimport { addSpanContext } from '../common/context';\n\nvar Span = function (_SpanBase) {\n _inheritsLoose(Span, _SpanBase);\n\n function Span(name, type, options) {\n var _this;\n\n _this = _SpanBase.call(this, name, type, options) || this;\n _this.parentId = _this.options.parentId;\n _this.subtype = undefined;\n _this.action = undefined;\n\n if (_this.type.indexOf('.') !== -1) {\n var fields = _this.type.split('.', 3);\n\n _this.type = fields[0];\n _this.subtype = fields[1];\n _this.action = fields[2];\n }\n\n _this.sync = _this.options.sync;\n return _this;\n }\n\n var _proto = Span.prototype;\n\n _proto.end = function end(endTime, data) {\n _SpanBase.prototype.end.call(this, endTime);\n\n addSpanContext(this, data);\n };\n\n return Span;\n}(SpanBase);\n\nexport default Span;","import Span from './span';\nimport { RESOURCE_INITIATOR_TYPES, MAX_SPAN_DURATION, USER_TIMING_THRESHOLD, PAGE_LOAD, RESOURCE, MEASURE } from '../common/constants';\nimport { stripQueryStringFromUrl, PERF, isPerfTimelineSupported } from '../common/utils';\nimport { state } from '../state';\nvar eventPairs = [['domainLookupStart', 'domainLookupEnd', 'Domain lookup'], ['connectStart', 'connectEnd', 'Making a connection to the server'], ['requestStart', 'responseEnd', 'Requesting and receiving the document'], ['domLoading', 'domInteractive', 'Parsing the document, executing sync. scripts'], ['domContentLoadedEventStart', 'domContentLoadedEventEnd', 'Fire \"DOMContentLoaded\" event'], ['loadEventStart', 'loadEventEnd', 'Fire \"load\" event']];\n\nfunction shouldCreateSpan(start, end, trStart, trEnd, baseTime) {\n if (baseTime === void 0) {\n baseTime = 0;\n }\n\n return typeof start === 'number' && typeof end === 'number' && start >= baseTime && end > start && start - baseTime >= trStart && end - baseTime <= trEnd && end - start < MAX_SPAN_DURATION && start - baseTime < MAX_SPAN_DURATION && end - baseTime < MAX_SPAN_DURATION;\n}\n\nfunction createNavigationTimingSpans(timings, baseTime, trStart, trEnd) {\n var spans = [];\n\n for (var i = 0; i < eventPairs.length; i++) {\n var start = timings[eventPairs[i][0]];\n var end = timings[eventPairs[i][1]];\n\n if (!shouldCreateSpan(start, end, trStart, trEnd, baseTime)) {\n continue;\n }\n\n var span = new Span(eventPairs[i][2], 'hard-navigation.browser-timing');\n var data = null;\n\n if (eventPairs[i][0] === 'requestStart') {\n span.pageResponse = true;\n data = {\n url: location.origin\n };\n }\n\n span._start = start - baseTime;\n span.end(end - baseTime, data);\n spans.push(span);\n }\n\n return spans;\n}\n\nfunction createResourceTimingSpan(resourceTimingEntry) {\n var name = resourceTimingEntry.name,\n initiatorType = resourceTimingEntry.initiatorType,\n startTime = resourceTimingEntry.startTime,\n responseEnd = resourceTimingEntry.responseEnd;\n var kind = 'resource';\n\n if (initiatorType) {\n kind += '.' + initiatorType;\n }\n\n var spanName = stripQueryStringFromUrl(name);\n var span = new Span(spanName, kind);\n span._start = startTime;\n span.end(responseEnd, {\n url: name,\n entry: resourceTimingEntry\n });\n return span;\n}\n\nfunction isCapturedByPatching(resourceStartTime, requestPatchTime) {\n return requestPatchTime != null && resourceStartTime > requestPatchTime;\n}\n\nfunction isIntakeAPIEndpoint(url) {\n return /intake\\/v\\d+\\/rum\\/events/.test(url);\n}\n\nfunction createResourceTimingSpans(entries, requestPatchTime, trStart, trEnd) {\n var spans = [];\n\n for (var i = 0; i < entries.length; i++) {\n var _entries$i = entries[i],\n initiatorType = _entries$i.initiatorType,\n name = _entries$i.name,\n startTime = _entries$i.startTime,\n responseEnd = _entries$i.responseEnd;\n\n if (RESOURCE_INITIATOR_TYPES.indexOf(initiatorType) === -1 || name == null) {\n continue;\n }\n\n if ((initiatorType === 'xmlhttprequest' || initiatorType === 'fetch') && (isIntakeAPIEndpoint(name) || isCapturedByPatching(startTime, requestPatchTime))) {\n continue;\n }\n\n if (shouldCreateSpan(startTime, responseEnd, trStart, trEnd)) {\n spans.push(createResourceTimingSpan(entries[i]));\n }\n }\n\n return spans;\n}\n\nfunction createUserTimingSpans(entries, trStart, trEnd) {\n var userTimingSpans = [];\n\n for (var i = 0; i < entries.length; i++) {\n var _entries$i2 = entries[i],\n name = _entries$i2.name,\n startTime = _entries$i2.startTime,\n duration = _entries$i2.duration;\n var end = startTime + duration;\n\n if (duration <= USER_TIMING_THRESHOLD || !shouldCreateSpan(startTime, end, trStart, trEnd)) {\n continue;\n }\n\n var kind = 'app';\n var span = new Span(name, kind);\n span._start = startTime;\n span.end(end);\n userTimingSpans.push(span);\n }\n\n return userTimingSpans;\n}\n\nvar NAVIGATION_TIMING_MARKS = ['fetchStart', 'domainLookupStart', 'domainLookupEnd', 'connectStart', 'connectEnd', 'requestStart', 'responseStart', 'responseEnd', 'domLoading', 'domInteractive', 'domContentLoadedEventStart', 'domContentLoadedEventEnd', 'domComplete', 'loadEventStart', 'loadEventEnd'];\nvar COMPRESSED_NAV_TIMING_MARKS = ['fs', 'ls', 'le', 'cs', 'ce', 'qs', 'rs', 're', 'dl', 'di', 'ds', 'de', 'dc', 'es', 'ee'];\n\nfunction getNavigationTimingMarks(timing) {\n var fetchStart = timing.fetchStart,\n navigationStart = timing.navigationStart,\n responseStart = timing.responseStart,\n responseEnd = timing.responseEnd;\n\n if (fetchStart >= navigationStart && responseStart >= fetchStart && responseEnd >= responseStart) {\n var marks = {};\n NAVIGATION_TIMING_MARKS.forEach(function (timingKey) {\n var m = timing[timingKey];\n\n if (m && m >= fetchStart) {\n marks[timingKey] = parseInt(m - fetchStart);\n }\n });\n return marks;\n }\n\n return null;\n}\n\nfunction getPageLoadMarks(timing) {\n var marks = getNavigationTimingMarks(timing);\n\n if (marks == null) {\n return null;\n }\n\n return {\n navigationTiming: marks,\n agent: {\n timeToFirstByte: marks.responseStart,\n domInteractive: marks.domInteractive,\n domComplete: marks.domComplete\n }\n };\n}\n\nfunction captureNavigation(transaction) {\n if (!transaction.captureTimings) {\n return;\n }\n\n var trEnd = transaction._end;\n\n if (transaction.type === PAGE_LOAD) {\n if (transaction.marks && transaction.marks.custom) {\n var customMarks = transaction.marks.custom;\n Object.keys(customMarks).forEach(function (key) {\n customMarks[key] += transaction._start;\n });\n }\n\n var trStart = 0;\n transaction._start = trStart;\n var timings = PERF.timing;\n createNavigationTimingSpans(timings, timings.fetchStart, trStart, trEnd).forEach(function (span) {\n span.traceId = transaction.traceId;\n span.sampled = transaction.sampled;\n\n if (span.pageResponse && transaction.options.pageLoadSpanId) {\n span.id = transaction.options.pageLoadSpanId;\n }\n\n transaction.spans.push(span);\n });\n transaction.addMarks(getPageLoadMarks(timings));\n }\n\n if (isPerfTimelineSupported()) {\n var _trStart = transaction._start;\n var resourceEntries = PERF.getEntriesByType(RESOURCE);\n createResourceTimingSpans(resourceEntries, state.bootstrapTime, _trStart, trEnd).forEach(function (span) {\n return transaction.spans.push(span);\n });\n var userEntries = PERF.getEntriesByType(MEASURE);\n createUserTimingSpans(userEntries, _trStart, trEnd).forEach(function (span) {\n return transaction.spans.push(span);\n });\n }\n}\n\nexport { getPageLoadMarks, captureNavigation, createNavigationTimingSpans, createResourceTimingSpans, createUserTimingSpans, NAVIGATION_TIMING_MARKS, COMPRESSED_NAV_TIMING_MARKS };","import { Promise } from './polyfills';\nimport { NAVIGATION_TIMING_MARKS, COMPRESSED_NAV_TIMING_MARKS } from '../performance-monitoring/capture-navigation';\nimport { isBeaconInspectionEnabled } from './utils';\n\nfunction compressStackFrames(frames) {\n return frames.map(function (frame) {\n return {\n ap: frame.abs_path,\n f: frame.filename,\n fn: frame.function,\n li: frame.lineno,\n co: frame.colno\n };\n });\n}\n\nfunction compressResponse(response) {\n return {\n ts: response.transfer_size,\n ebs: response.encoded_body_size,\n dbs: response.decoded_body_size\n };\n}\n\nfunction compressHTTP(http) {\n var compressed = {};\n var method = http.method,\n status_code = http.status_code,\n url = http.url,\n response = http.response;\n compressed.url = url;\n\n if (method) {\n compressed.mt = method;\n }\n\n if (status_code) {\n compressed.sc = status_code;\n }\n\n if (response) {\n compressed.r = compressResponse(response);\n }\n\n return compressed;\n}\n\nfunction compressContext(context) {\n if (!context) {\n return null;\n }\n\n var compressed = {};\n var page = context.page,\n http = context.http,\n response = context.response,\n destination = context.destination,\n user = context.user,\n custom = context.custom;\n\n if (page) {\n compressed.p = {\n rf: page.referer,\n url: page.url\n };\n }\n\n if (http) {\n compressed.h = compressHTTP(http);\n }\n\n if (response) {\n compressed.r = compressResponse(response);\n }\n\n if (destination) {\n var service = destination.service;\n compressed.dt = {\n se: {\n n: service.name,\n t: service.type,\n rc: service.resource\n },\n ad: destination.address,\n po: destination.port\n };\n }\n\n if (user) {\n compressed.u = {\n id: user.id,\n un: user.username,\n em: user.email\n };\n }\n\n if (custom) {\n compressed.cu = custom;\n }\n\n return compressed;\n}\n\nfunction compressMarks(marks) {\n if (!marks) {\n return null;\n }\n\n var compressedNtMarks = compressNavigationTimingMarks(marks.navigationTiming);\n var compressed = {\n nt: compressedNtMarks,\n a: compressAgentMarks(compressedNtMarks, marks.agent)\n };\n return compressed;\n}\n\nfunction compressNavigationTimingMarks(ntMarks) {\n if (!ntMarks) {\n return null;\n }\n\n var compressed = {};\n COMPRESSED_NAV_TIMING_MARKS.forEach(function (mark, index) {\n var mapping = NAVIGATION_TIMING_MARKS[index];\n compressed[mark] = ntMarks[mapping];\n });\n return compressed;\n}\n\nfunction compressAgentMarks(compressedNtMarks, agentMarks) {\n var compressed = {};\n\n if (compressedNtMarks) {\n compressed = {\n fb: compressedNtMarks.rs,\n di: compressedNtMarks.di,\n dc: compressedNtMarks.dc\n };\n }\n\n if (agentMarks) {\n var fp = agentMarks.firstContentfulPaint;\n var lp = agentMarks.largestContentfulPaint;\n\n if (fp) {\n compressed.fp = fp;\n }\n\n if (lp) {\n compressed.lp = lp;\n }\n }\n\n if (Object.keys(compressed).length === 0) {\n return null;\n }\n\n return compressed;\n}\n\nexport function compressMetadata(metadata) {\n var service = metadata.service,\n labels = metadata.labels;\n var agent = service.agent,\n language = service.language;\n return {\n se: {\n n: service.name,\n ve: service.version,\n a: {\n n: agent.name,\n ve: agent.version\n },\n la: {\n n: language.name\n },\n en: service.environment\n },\n l: labels\n };\n}\nexport function compressTransaction(transaction) {\n var spans = transaction.spans.map(function (span) {\n var spanData = {\n id: span.id,\n n: span.name,\n t: span.type,\n s: span.start,\n d: span.duration,\n c: compressContext(span.context),\n o: span.outcome,\n sr: span.sample_rate\n };\n\n if (span.parent_id !== transaction.id) {\n spanData.pid = span.parent_id;\n }\n\n if (span.sync === true) {\n spanData.sy = true;\n }\n\n if (span.subtype) {\n spanData.su = span.subtype;\n }\n\n if (span.action) {\n spanData.ac = span.action;\n }\n\n return spanData;\n });\n var tr = {\n id: transaction.id,\n tid: transaction.trace_id,\n n: transaction.name,\n t: transaction.type,\n d: transaction.duration,\n c: compressContext(transaction.context),\n k: compressMarks(transaction.marks),\n me: compressMetricsets(transaction.breakdown),\n y: spans,\n yc: {\n sd: spans.length\n },\n sm: transaction.sampled,\n sr: transaction.sample_rate,\n o: transaction.outcome\n };\n\n if (transaction.experience) {\n var _transaction$experien = transaction.experience,\n cls = _transaction$experien.cls,\n fid = _transaction$experien.fid,\n tbt = _transaction$experien.tbt,\n longtask = _transaction$experien.longtask;\n tr.exp = {\n cls: cls,\n fid: fid,\n tbt: tbt,\n lt: longtask\n };\n }\n\n if (transaction.session) {\n var _transaction$session = transaction.session,\n id = _transaction$session.id,\n sequence = _transaction$session.sequence;\n tr.ses = {\n id: id,\n seq: sequence\n };\n }\n\n return tr;\n}\nexport function compressError(error) {\n var exception = error.exception;\n var compressed = {\n id: error.id,\n cl: error.culprit,\n ex: {\n mg: exception.message,\n st: compressStackFrames(exception.stacktrace),\n t: error.type\n },\n c: compressContext(error.context)\n };\n var transaction = error.transaction;\n\n if (transaction) {\n compressed.tid = error.trace_id;\n compressed.pid = error.parent_id;\n compressed.xid = error.transaction_id;\n compressed.x = {\n t: transaction.type,\n sm: transaction.sampled\n };\n }\n\n return compressed;\n}\nexport function compressMetricsets(breakdowns) {\n return breakdowns.map(function (_ref) {\n var span = _ref.span,\n samples = _ref.samples;\n var isSpan = span != null;\n\n if (isSpan) {\n return {\n y: {\n t: span.type\n },\n sa: {\n ysc: {\n v: samples['span.self_time.count'].value\n },\n yss: {\n v: samples['span.self_time.sum.us'].value\n }\n }\n };\n }\n\n return {\n sa: {\n xdc: {\n v: samples['transaction.duration.count'].value\n },\n xds: {\n v: samples['transaction.duration.sum.us'].value\n },\n xbc: {\n v: samples['transaction.breakdown.count'].value\n }\n }\n };\n });\n}\nexport function compressPayload(params, type) {\n if (type === void 0) {\n type = 'gzip';\n }\n\n var isCompressionStreamSupported = typeof CompressionStream === 'function';\n return new Promise(function (resolve) {\n if (!isCompressionStreamSupported) {\n return resolve(params);\n }\n\n if (isBeaconInspectionEnabled()) {\n return resolve(params);\n }\n\n var payload = params.payload,\n headers = params.headers,\n beforeSend = params.beforeSend;\n var payloadStream = new Blob([payload]).stream();\n var compressedStream = payloadStream.pipeThrough(new CompressionStream(type));\n return new Response(compressedStream).blob().then(function (payload) {\n headers['Content-Encoding'] = type;\n return resolve({\n payload: payload,\n headers: headers,\n beforeSend: beforeSend\n });\n });\n });\n}","import { XHR_IGNORE } from '../patching/patch-utils';\nimport { isResponseSuccessful } from './response-status';\nimport { Promise } from '../polyfills';\nexport function sendXHR(method, url, _ref) {\n var _ref$timeout = _ref.timeout,\n timeout = _ref$timeout === void 0 ? HTTP_REQUEST_TIMEOUT : _ref$timeout,\n payload = _ref.payload,\n headers = _ref.headers,\n beforeSend = _ref.beforeSend,\n sendCredentials = _ref.sendCredentials;\n return new Promise(function (resolve, reject) {\n var xhr = new window.XMLHttpRequest();\n xhr[XHR_IGNORE] = true;\n xhr.open(method, url, true);\n xhr.timeout = timeout;\n xhr.withCredentials = sendCredentials;\n\n if (headers) {\n for (var header in headers) {\n if (headers.hasOwnProperty(header)) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n }\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n var status = xhr.status,\n responseText = xhr.responseText;\n\n if (isResponseSuccessful(status)) {\n resolve(xhr);\n } else {\n reject({\n url: url,\n status: status,\n responseText: responseText\n });\n }\n }\n };\n\n xhr.onerror = function () {\n var status = xhr.status,\n responseText = xhr.responseText;\n reject({\n url: url,\n status: status,\n responseText: responseText\n });\n };\n\n var canSend = true;\n\n if (typeof beforeSend === 'function') {\n canSend = beforeSend({\n url: url,\n method: method,\n headers: headers,\n payload: payload,\n xhr: xhr\n });\n }\n\n if (canSend) {\n xhr.send(payload);\n } else {\n reject({\n url: url,\n status: 0,\n responseText: 'Request rejected by user configuration.'\n });\n }\n });\n}","import Queue from './queue';\nimport throttle from './throttle';\nimport NDJSON from './ndjson';\nimport { truncateModel, METADATA_MODEL } from './truncate';\nimport { ERRORS, HTTP_REQUEST_TIMEOUT, QUEUE_FLUSH, TRANSACTIONS } from './constants';\nimport { noop } from './utils';\nimport { Promise } from './polyfills';\nimport { compressMetadata, compressTransaction, compressError, compressPayload } from './compress';\nimport { __DEV__ } from '../state';\nimport { sendFetchRequest, shouldUseFetchWithKeepAlive } from './http/fetch';\nimport { sendXHR } from './http/xhr';\nvar THROTTLE_INTERVAL = 60000;\n\nvar ApmServer = function () {\n function ApmServer(configService, loggingService) {\n this._configService = configService;\n this._loggingService = loggingService;\n this.queue = undefined;\n this.throttleEvents = noop;\n }\n\n var _proto = ApmServer.prototype;\n\n _proto.init = function init() {\n var _this = this;\n\n var queueLimit = this._configService.get('queueLimit');\n\n var flushInterval = this._configService.get('flushInterval');\n\n var limit = this._configService.get('eventsLimit');\n\n var onFlush = function onFlush(events) {\n var promise = _this.sendEvents(events);\n\n if (promise) {\n promise.catch(function (reason) {\n _this._loggingService.warn('Failed sending events!', _this._constructError(reason));\n });\n }\n };\n\n this.queue = new Queue(onFlush, {\n queueLimit: queueLimit,\n flushInterval: flushInterval\n });\n this.throttleEvents = throttle(this.queue.add.bind(this.queue), function () {\n return _this._loggingService.warn('Dropped events due to throttling!');\n }, {\n limit: limit,\n interval: THROTTLE_INTERVAL\n });\n\n this._configService.observeEvent(QUEUE_FLUSH, function () {\n _this.queue.flush();\n });\n };\n\n _proto._postJson = function _postJson(endPoint, payload) {\n var _this2 = this;\n\n var headers = {\n 'Content-Type': 'application/x-ndjson'\n };\n\n var apmRequest = this._configService.get('apmRequest');\n\n var params = {\n payload: payload,\n headers: headers,\n beforeSend: apmRequest\n };\n return compressPayload(params).catch(function (error) {\n if (__DEV__) {\n _this2._loggingService.debug('Compressing the payload using CompressionStream API failed', error.message);\n }\n\n return params;\n }).then(function (result) {\n return _this2._makeHttpRequest('POST', endPoint, result);\n }).then(function (_ref) {\n var responseText = _ref.responseText;\n return responseText;\n });\n };\n\n _proto._constructError = function _constructError(reason) {\n var url = reason.url,\n status = reason.status,\n responseText = reason.responseText;\n\n if (typeof status == 'undefined') {\n return reason;\n }\n\n var message = url + ' HTTP status: ' + status;\n\n if (__DEV__ && responseText) {\n try {\n var serverErrors = [];\n var response = JSON.parse(responseText);\n\n if (response.errors && response.errors.length > 0) {\n response.errors.forEach(function (err) {\n return serverErrors.push(err.message);\n });\n message += ' ' + serverErrors.join(',');\n }\n } catch (e) {\n this._loggingService.debug('Error parsing response from APM server', e);\n }\n }\n\n return new Error(message);\n };\n\n _proto._makeHttpRequest = function _makeHttpRequest(method, url, _temp) {\n var _ref2 = _temp === void 0 ? {} : _temp,\n _ref2$timeout = _ref2.timeout,\n timeout = _ref2$timeout === void 0 ? HTTP_REQUEST_TIMEOUT : _ref2$timeout,\n payload = _ref2.payload,\n headers = _ref2.headers,\n beforeSend = _ref2.beforeSend;\n\n var sendCredentials = this._configService.get('sendCredentials');\n\n if (!beforeSend && shouldUseFetchWithKeepAlive(method, payload)) {\n return sendFetchRequest(method, url, {\n keepalive: true,\n timeout: timeout,\n payload: payload,\n headers: headers,\n sendCredentials: sendCredentials\n }).catch(function (reason) {\n if (reason instanceof TypeError) {\n return sendXHR(method, url, {\n timeout: timeout,\n payload: payload,\n headers: headers,\n beforeSend: beforeSend,\n sendCredentials: sendCredentials\n });\n }\n\n throw reason;\n });\n }\n\n return sendXHR(method, url, {\n timeout: timeout,\n payload: payload,\n headers: headers,\n beforeSend: beforeSend,\n sendCredentials: sendCredentials\n });\n };\n\n _proto.fetchConfig = function fetchConfig(serviceName, environment) {\n var _this3 = this;\n\n var _this$getEndpoints = this.getEndpoints(),\n configEndpoint = _this$getEndpoints.configEndpoint;\n\n if (!serviceName) {\n return Promise.reject('serviceName is required for fetching central config.');\n }\n\n configEndpoint += \"?service.name=\" + serviceName;\n\n if (environment) {\n configEndpoint += \"&service.environment=\" + environment;\n }\n\n var localConfig = this._configService.getLocalConfig();\n\n if (localConfig) {\n configEndpoint += \"&ifnonematch=\" + localConfig.etag;\n }\n\n var apmRequest = this._configService.get('apmRequest');\n\n return this._makeHttpRequest('GET', configEndpoint, {\n timeout: 5000,\n beforeSend: apmRequest\n }).then(function (xhr) {\n var status = xhr.status,\n responseText = xhr.responseText;\n\n if (status === 304) {\n return localConfig;\n } else {\n var remoteConfig = JSON.parse(responseText);\n var etag = xhr.getResponseHeader('etag');\n\n if (etag) {\n remoteConfig.etag = etag.replace(/[\"]/g, '');\n\n _this3._configService.setLocalConfig(remoteConfig, true);\n }\n\n return remoteConfig;\n }\n }).catch(function (reason) {\n var error = _this3._constructError(reason);\n\n return Promise.reject(error);\n });\n };\n\n _proto.createMetaData = function createMetaData() {\n var cfg = this._configService;\n var metadata = {\n service: {\n name: cfg.get('serviceName'),\n version: cfg.get('serviceVersion'),\n agent: {\n name: 'rum-js',\n version: cfg.version\n },\n language: {\n name: 'javascript'\n },\n environment: cfg.get('environment')\n },\n labels: cfg.get('context.tags')\n };\n return truncateModel(METADATA_MODEL, metadata);\n };\n\n _proto.addError = function addError(error) {\n var _this$throttleEvents;\n\n this.throttleEvents((_this$throttleEvents = {}, _this$throttleEvents[ERRORS] = error, _this$throttleEvents));\n };\n\n _proto.addTransaction = function addTransaction(transaction) {\n var _this$throttleEvents2;\n\n this.throttleEvents((_this$throttleEvents2 = {}, _this$throttleEvents2[TRANSACTIONS] = transaction, _this$throttleEvents2));\n };\n\n _proto.ndjsonErrors = function ndjsonErrors(errors, compress) {\n var key = compress ? 'e' : 'error';\n return errors.map(function (error) {\n var _NDJSON$stringify;\n\n return NDJSON.stringify((_NDJSON$stringify = {}, _NDJSON$stringify[key] = compress ? compressError(error) : error, _NDJSON$stringify));\n });\n };\n\n _proto.ndjsonMetricsets = function ndjsonMetricsets(metricsets) {\n return metricsets.map(function (metricset) {\n return NDJSON.stringify({\n metricset: metricset\n });\n }).join('');\n };\n\n _proto.ndjsonTransactions = function ndjsonTransactions(transactions, compress) {\n var _this4 = this;\n\n var key = compress ? 'x' : 'transaction';\n return transactions.map(function (tr) {\n var _NDJSON$stringify2;\n\n var spans = '',\n breakdowns = '';\n\n if (!compress) {\n if (tr.spans) {\n spans = tr.spans.map(function (span) {\n return NDJSON.stringify({\n span: span\n });\n }).join('');\n delete tr.spans;\n }\n\n if (tr.breakdown) {\n breakdowns = _this4.ndjsonMetricsets(tr.breakdown);\n delete tr.breakdown;\n }\n }\n\n return NDJSON.stringify((_NDJSON$stringify2 = {}, _NDJSON$stringify2[key] = compress ? compressTransaction(tr) : tr, _NDJSON$stringify2)) + spans + breakdowns;\n });\n };\n\n _proto.sendEvents = function sendEvents(events) {\n var _payload, _NDJSON$stringify3;\n\n if (events.length === 0) {\n return;\n }\n\n var transactions = [];\n var errors = [];\n\n for (var i = 0; i < events.length; i++) {\n var event = events[i];\n\n if (event[TRANSACTIONS]) {\n transactions.push(event[TRANSACTIONS]);\n }\n\n if (event[ERRORS]) {\n errors.push(event[ERRORS]);\n }\n }\n\n if (transactions.length === 0 && errors.length === 0) {\n return;\n }\n\n var cfg = this._configService;\n var payload = (_payload = {}, _payload[TRANSACTIONS] = transactions, _payload[ERRORS] = errors, _payload);\n var filteredPayload = cfg.applyFilters(payload);\n\n if (!filteredPayload) {\n this._loggingService.warn('Dropped payload due to filtering!');\n\n return;\n }\n\n var apiVersion = cfg.get('apiVersion');\n var compress = apiVersion > 2;\n var ndjson = [];\n var metadata = this.createMetaData();\n var metadataKey = compress ? 'm' : 'metadata';\n ndjson.push(NDJSON.stringify((_NDJSON$stringify3 = {}, _NDJSON$stringify3[metadataKey] = compress ? compressMetadata(metadata) : metadata, _NDJSON$stringify3)));\n ndjson = ndjson.concat(this.ndjsonErrors(filteredPayload[ERRORS], compress), this.ndjsonTransactions(filteredPayload[TRANSACTIONS], compress));\n var ndjsonPayload = ndjson.join('');\n\n var _this$getEndpoints2 = this.getEndpoints(),\n intakeEndpoint = _this$getEndpoints2.intakeEndpoint;\n\n return this._postJson(intakeEndpoint, ndjsonPayload);\n };\n\n _proto.getEndpoints = function getEndpoints() {\n var serverUrl = this._configService.get('serverUrl');\n\n var apiVersion = this._configService.get('apiVersion');\n\n var serverUrlPrefix = this._configService.get('serverUrlPrefix') || \"/intake/v\" + apiVersion + \"/rum/events\";\n var intakeEndpoint = serverUrl + serverUrlPrefix;\n var configEndpoint = serverUrl + \"/config/v1/rum/agents\";\n return {\n intakeEndpoint: intakeEndpoint,\n configEndpoint: configEndpoint\n };\n };\n\n return ApmServer;\n}();\n\nexport default ApmServer;","export default function throttle(fn, onThrottle, opts) {\n var context = this;\n var limit = opts.limit;\n var interval = opts.interval;\n var counter = 0;\n var timeoutId;\n return function () {\n counter++;\n\n if (typeof timeoutId === 'undefined') {\n timeoutId = setTimeout(function () {\n counter = 0;\n timeoutId = undefined;\n }, interval);\n }\n\n if (counter > limit && typeof onThrottle === 'function') {\n return onThrottle.apply(context, arguments);\n } else {\n return fn.apply(context, arguments);\n }\n };\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { getCurrentScript, setLabel, merge, extend, isUndefined } from './utils';\nimport EventHandler from './event-handler';\nimport { CONFIG_CHANGE, LOCAL_CONFIG_KEY } from './constants';\n\nfunction getConfigFromScript() {\n var script = getCurrentScript();\n var config = getDataAttributesFromNode(script);\n return config;\n}\n\nfunction getDataAttributesFromNode(node) {\n if (!node) {\n return {};\n }\n\n var dataAttrs = {};\n var dataRegex = /^data-([\\w-]+)$/;\n var attrs = node.attributes;\n\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n\n if (dataRegex.test(attr.nodeName)) {\n var key = attr.nodeName.match(dataRegex)[1];\n var camelCasedkey = key.split('-').map(function (value, index) {\n return index > 0 ? value.charAt(0).toUpperCase() + value.substring(1) : value;\n }).join('');\n dataAttrs[camelCasedkey] = attr.value || attr.nodeValue;\n }\n }\n\n return dataAttrs;\n}\n\nvar Config = function () {\n function Config() {\n this.config = {\n serviceName: '',\n serviceVersion: '',\n environment: '',\n serverUrl: 'http://localhost:8200',\n serverUrlPrefix: '',\n active: true,\n instrument: true,\n disableInstrumentations: [],\n logLevel: 'warn',\n breakdownMetrics: false,\n ignoreTransactions: [],\n eventsLimit: 80,\n queueLimit: -1,\n flushInterval: 500,\n distributedTracing: true,\n distributedTracingOrigins: [],\n distributedTracingHeaderName: 'traceparent',\n pageLoadTraceId: '',\n pageLoadSpanId: '',\n pageLoadSampled: false,\n pageLoadTransactionName: '',\n propagateTracestate: false,\n transactionSampleRate: 1.0,\n centralConfig: false,\n monitorLongtasks: true,\n apiVersion: 2,\n context: {},\n session: false,\n apmRequest: null,\n sendCredentials: false\n };\n this.events = new EventHandler();\n this.filters = [];\n this.version = '';\n }\n\n var _proto = Config.prototype;\n\n _proto.init = function init() {\n var scriptData = getConfigFromScript();\n this.setConfig(scriptData);\n };\n\n _proto.setVersion = function setVersion(version) {\n this.version = version;\n };\n\n _proto.addFilter = function addFilter(cb) {\n if (typeof cb !== 'function') {\n throw new Error('Argument to must be function');\n }\n\n this.filters.push(cb);\n };\n\n _proto.applyFilters = function applyFilters(data) {\n for (var i = 0; i < this.filters.length; i++) {\n data = this.filters[i](data);\n\n if (!data) {\n return;\n }\n }\n\n return data;\n };\n\n _proto.get = function get(key) {\n return key.split('.').reduce(function (obj, objKey) {\n return obj && obj[objKey];\n }, this.config);\n };\n\n _proto.setUserContext = function setUserContext(userContext) {\n if (userContext === void 0) {\n userContext = {};\n }\n\n var context = {};\n var _userContext = userContext,\n id = _userContext.id,\n username = _userContext.username,\n email = _userContext.email;\n\n if (typeof id === 'number' || typeof id === 'string') {\n context.id = id;\n }\n\n if (typeof username === 'string') {\n context.username = username;\n }\n\n if (typeof email === 'string') {\n context.email = email;\n }\n\n this.config.context.user = extend(this.config.context.user || {}, context);\n };\n\n _proto.setCustomContext = function setCustomContext(customContext) {\n if (customContext === void 0) {\n customContext = {};\n }\n\n this.config.context.custom = extend(this.config.context.custom || {}, customContext);\n };\n\n _proto.addLabels = function addLabels(tags) {\n var _this = this;\n\n if (!this.config.context.tags) {\n this.config.context.tags = {};\n }\n\n var keys = Object.keys(tags);\n keys.forEach(function (k) {\n return setLabel(k, tags[k], _this.config.context.tags);\n });\n };\n\n _proto.setConfig = function setConfig(properties) {\n if (properties === void 0) {\n properties = {};\n }\n\n var _properties = properties,\n transactionSampleRate = _properties.transactionSampleRate,\n serverUrl = _properties.serverUrl;\n\n if (serverUrl) {\n properties.serverUrl = serverUrl.replace(/\\/+$/, '');\n }\n\n if (!isUndefined(transactionSampleRate)) {\n if (transactionSampleRate < 0.0001 && transactionSampleRate > 0) {\n transactionSampleRate = 0.0001;\n }\n\n properties.transactionSampleRate = Math.round(transactionSampleRate * 10000) / 10000;\n }\n\n merge(this.config, properties);\n this.events.send(CONFIG_CHANGE, [this.config]);\n };\n\n _proto.validate = function validate(properties) {\n if (properties === void 0) {\n properties = {};\n }\n\n var requiredKeys = ['serviceName', 'serverUrl'];\n var allKeys = Object.keys(this.config);\n var errors = {\n missing: [],\n invalid: [],\n unknown: []\n };\n Object.keys(properties).forEach(function (key) {\n if (requiredKeys.indexOf(key) !== -1 && !properties[key]) {\n errors.missing.push(key);\n }\n\n if (allKeys.indexOf(key) === -1) {\n errors.unknown.push(key);\n }\n });\n\n if (properties.serviceName && !/^[a-zA-Z0-9 _-]+$/.test(properties.serviceName)) {\n errors.invalid.push({\n key: 'serviceName',\n value: properties.serviceName,\n allowed: 'a-z, A-Z, 0-9, _, -, <space>'\n });\n }\n\n var sampleRate = properties.transactionSampleRate;\n\n if (typeof sampleRate !== 'undefined' && (typeof sampleRate !== 'number' || isNaN(sampleRate) || sampleRate < 0 || sampleRate > 1)) {\n errors.invalid.push({\n key: 'transactionSampleRate',\n value: sampleRate,\n allowed: 'Number between 0 and 1'\n });\n }\n\n return errors;\n };\n\n _proto.getLocalConfig = function getLocalConfig() {\n var storage = sessionStorage;\n\n if (this.config.session) {\n storage = localStorage;\n }\n\n var config = storage.getItem(LOCAL_CONFIG_KEY);\n\n if (config) {\n return JSON.parse(config);\n }\n };\n\n _proto.setLocalConfig = function setLocalConfig(config, merge) {\n if (config) {\n if (merge) {\n var prevConfig = this.getLocalConfig();\n config = _extends({}, prevConfig, config);\n }\n\n var storage = sessionStorage;\n\n if (this.config.session) {\n storage = localStorage;\n }\n\n storage.setItem(LOCAL_CONFIG_KEY, JSON.stringify(config));\n }\n };\n\n _proto.dispatchEvent = function dispatchEvent(name, args) {\n this.events.send(name, args);\n };\n\n _proto.observeEvent = function observeEvent(name, fn) {\n return this.events.observe(name, fn);\n };\n\n return Config;\n}();\n\nexport default Config;","var _serviceCreators;\n\nimport ApmServer from './apm-server';\nimport ConfigService from './config-service';\nimport LoggingService from './logging-service';\nimport { CONFIG_CHANGE, CONFIG_SERVICE, LOGGING_SERVICE, APM_SERVER } from './constants';\nimport { __DEV__ } from '../state';\nvar serviceCreators = (_serviceCreators = {}, _serviceCreators[CONFIG_SERVICE] = function () {\n return new ConfigService();\n}, _serviceCreators[LOGGING_SERVICE] = function () {\n return new LoggingService({\n prefix: '[Elastic APM] '\n });\n}, _serviceCreators[APM_SERVER] = function (factory) {\n var _factory$getService = factory.getService([CONFIG_SERVICE, LOGGING_SERVICE]),\n configService = _factory$getService[0],\n loggingService = _factory$getService[1];\n\n return new ApmServer(configService, loggingService);\n}, _serviceCreators);\n\nvar ServiceFactory = function () {\n function ServiceFactory() {\n this.instances = {};\n this.initialized = false;\n }\n\n var _proto = ServiceFactory.prototype;\n\n _proto.init = function init() {\n if (this.initialized) {\n return;\n }\n\n this.initialized = true;\n var configService = this.getService(CONFIG_SERVICE);\n configService.init();\n\n var _this$getService = this.getService([LOGGING_SERVICE, APM_SERVER]),\n loggingService = _this$getService[0],\n apmServer = _this$getService[1];\n\n configService.events.observe(CONFIG_CHANGE, function () {\n var logLevel = configService.get('logLevel');\n loggingService.setLevel(logLevel);\n });\n apmServer.init();\n };\n\n _proto.getService = function getService(name) {\n var _this = this;\n\n if (typeof name === 'string') {\n if (!this.instances[name]) {\n if (typeof serviceCreators[name] === 'function') {\n this.instances[name] = serviceCreators[name](this);\n } else if (__DEV__) {\n console.log('Cannot get service, No creator for: ' + name);\n }\n }\n\n return this.instances[name];\n } else if (Array.isArray(name)) {\n return name.map(function (n) {\n return _this.getService(n);\n });\n }\n };\n\n return ServiceFactory;\n}();\n\nexport { serviceCreators, ServiceFactory };","import { noop } from './utils';\n\nvar LoggingService = function () {\n function LoggingService(spec) {\n if (spec === void 0) {\n spec = {};\n }\n\n this.levels = ['trace', 'debug', 'info', 'warn', 'error'];\n this.level = spec.level || 'warn';\n this.prefix = spec.prefix || '';\n this.resetLogMethods();\n }\n\n var _proto = LoggingService.prototype;\n\n _proto.shouldLog = function shouldLog(level) {\n return this.levels.indexOf(level) >= this.levels.indexOf(this.level);\n };\n\n _proto.setLevel = function setLevel(level) {\n if (level === this.level) {\n return;\n }\n\n this.level = level;\n this.resetLogMethods();\n };\n\n _proto.resetLogMethods = function resetLogMethods() {\n var _this = this;\n\n this.levels.forEach(function (level) {\n _this[level] = _this.shouldLog(level) ? log : noop;\n\n function log() {\n var normalizedLevel = level;\n\n if (level === 'trace' || level === 'debug') {\n normalizedLevel = 'info';\n }\n\n var args = arguments;\n args[0] = this.prefix + args[0];\n\n if (console) {\n var realMethod = console[normalizedLevel] || console.log;\n\n if (typeof realMethod === 'function') {\n realMethod.apply(console, args);\n }\n }\n }\n });\n };\n\n return LoggingService;\n}();\n\nexport default LoggingService;","import { checkSameOrigin, isDtHeaderValid, parseDtHeaderValue, getDtHeaderValue, getTSHeaderValue, stripQueryStringFromUrl, setRequestHeader } from '../common/utils';\nimport { Url } from '../common/url';\nimport { patchEventHandler } from '../common/patching';\nimport { globalState } from '../common/patching/patch-utils';\nimport { SCHEDULE, INVOKE, TRANSACTION_END, AFTER_EVENT, FETCH, HISTORY, XMLHTTPREQUEST, HTTP_REQUEST_TYPE, OUTCOME_FAILURE, OUTCOME_SUCCESS, OUTCOME_UNKNOWN, QUEUE_ADD_TRANSACTION } from '../common/constants';\nimport { truncateModel, SPAN_MODEL, TRANSACTION_MODEL } from '../common/truncate';\nimport { __DEV__ } from '../state';\nvar SIMILAR_SPAN_TO_TRANSACTION_RATIO = 0.05;\nvar TRANSACTION_DURATION_THRESHOLD = 60000;\nexport function groupSmallContinuouslySimilarSpans(originalSpans, transDuration, threshold) {\n originalSpans.sort(function (spanA, spanB) {\n return spanA._start - spanB._start;\n });\n var spans = [];\n var lastCount = 1;\n originalSpans.forEach(function (span, index) {\n if (spans.length === 0) {\n spans.push(span);\n } else {\n var lastSpan = spans[spans.length - 1];\n var isContinuouslySimilar = lastSpan.type === span.type && lastSpan.subtype === span.subtype && lastSpan.action === span.action && lastSpan.name === span.name && span.duration() / transDuration < threshold && (span._start - lastSpan._end) / transDuration < threshold;\n var isLastSpan = originalSpans.length === index + 1;\n\n if (isContinuouslySimilar) {\n lastCount++;\n lastSpan._end = span._end;\n }\n\n if (lastCount > 1 && (!isContinuouslySimilar || isLastSpan)) {\n lastSpan.name = lastCount + 'x ' + lastSpan.name;\n lastCount = 1;\n }\n\n if (!isContinuouslySimilar) {\n spans.push(span);\n }\n }\n });\n return spans;\n}\nexport function adjustTransaction(transaction) {\n if (transaction.sampled) {\n var filterdSpans = transaction.spans.filter(function (span) {\n return span.duration() > 0 && span._start >= transaction._start && span._end <= transaction._end;\n });\n\n if (transaction.isManaged()) {\n var duration = transaction.duration();\n var similarSpans = groupSmallContinuouslySimilarSpans(filterdSpans, duration, SIMILAR_SPAN_TO_TRANSACTION_RATIO);\n transaction.spans = similarSpans;\n } else {\n transaction.spans = filterdSpans;\n }\n } else {\n transaction.resetFields();\n }\n\n return transaction;\n}\n\nvar PerformanceMonitoring = function () {\n function PerformanceMonitoring(apmServer, configService, loggingService, transactionService) {\n this._apmServer = apmServer;\n this._configService = configService;\n this._logginService = loggingService;\n this._transactionService = transactionService;\n }\n\n var _proto = PerformanceMonitoring.prototype;\n\n _proto.init = function init(flags) {\n var _this = this;\n\n if (flags === void 0) {\n flags = {};\n }\n\n this._configService.events.observe(TRANSACTION_END + AFTER_EVENT, function (tr) {\n var payload = _this.createTransactionPayload(tr);\n\n if (payload) {\n _this._apmServer.addTransaction(payload);\n\n _this._configService.dispatchEvent(QUEUE_ADD_TRANSACTION);\n }\n });\n\n if (flags[HISTORY]) {\n patchEventHandler.observe(HISTORY, this.getHistorySub());\n }\n\n if (flags[XMLHTTPREQUEST]) {\n patchEventHandler.observe(XMLHTTPREQUEST, this.getXHRSub());\n }\n\n if (flags[FETCH]) {\n patchEventHandler.observe(FETCH, this.getFetchSub());\n }\n };\n\n _proto.getHistorySub = function getHistorySub() {\n var transactionService = this._transactionService;\n return function (event, task) {\n if (task.source === HISTORY && event === INVOKE) {\n transactionService.startTransaction(task.data.title, 'route-change', {\n managed: true,\n canReuse: true\n });\n }\n };\n };\n\n _proto.getXHRSub = function getXHRSub() {\n var _this2 = this;\n\n return function (event, task) {\n if (task.source === XMLHTTPREQUEST && !globalState.fetchInProgress) {\n _this2.processAPICalls(event, task);\n }\n };\n };\n\n _proto.getFetchSub = function getFetchSub() {\n var _this3 = this;\n\n return function (event, task) {\n if (task.source === FETCH) {\n _this3.processAPICalls(event, task);\n }\n };\n };\n\n _proto.processAPICalls = function processAPICalls(event, task) {\n var configService = this._configService;\n var transactionService = this._transactionService;\n\n if (task.data && task.data.url) {\n var endpoints = this._apmServer.getEndpoints();\n\n var isOwnEndpoint = Object.keys(endpoints).some(function (endpoint) {\n return task.data.url.indexOf(endpoints[endpoint]) !== -1;\n });\n\n if (isOwnEndpoint) {\n return;\n }\n }\n\n if (event === SCHEDULE && task.data) {\n var data = task.data;\n var requestUrl = new Url(data.url);\n var spanName = data.method + ' ' + (requestUrl.relative ? requestUrl.path : stripQueryStringFromUrl(requestUrl.href));\n\n if (!transactionService.getCurrentTransaction()) {\n transactionService.startTransaction(spanName, HTTP_REQUEST_TYPE, {\n managed: true\n });\n }\n\n var span = transactionService.startSpan(spanName, 'external.http', {\n blocking: true\n });\n\n if (!span) {\n return;\n }\n\n var isDtEnabled = configService.get('distributedTracing');\n var dtOrigins = configService.get('distributedTracingOrigins');\n var currentUrl = new Url(window.location.href);\n var isSameOrigin = checkSameOrigin(requestUrl.origin, currentUrl.origin) || checkSameOrigin(requestUrl.origin, dtOrigins);\n var target = data.target;\n\n if (isDtEnabled && isSameOrigin && target) {\n this.injectDtHeader(span, target);\n var propagateTracestate = configService.get('propagateTracestate');\n\n if (propagateTracestate) {\n this.injectTSHeader(span, target);\n }\n } else if (__DEV__) {\n this._logginService.debug(\"Could not inject distributed tracing header to the request origin ('\" + requestUrl.origin + \"') from the current origin ('\" + currentUrl.origin + \"')\");\n }\n\n if (data.sync) {\n span.sync = data.sync;\n }\n\n data.span = span;\n } else if (event === INVOKE) {\n var _data = task.data;\n\n if (_data && _data.span) {\n var _span = _data.span,\n response = _data.response,\n _target = _data.target;\n var status;\n\n if (response) {\n status = response.status;\n } else {\n status = _target.status;\n }\n\n var outcome;\n\n if (_data.status != 'abort' && !_data.aborted) {\n if (status >= 400 || status == 0) {\n outcome = OUTCOME_FAILURE;\n } else {\n outcome = OUTCOME_SUCCESS;\n }\n } else {\n outcome = OUTCOME_UNKNOWN;\n }\n\n _span.outcome = outcome;\n var tr = transactionService.getCurrentTransaction();\n\n if (tr && tr.type === HTTP_REQUEST_TYPE) {\n tr.outcome = outcome;\n }\n\n transactionService.endSpan(_span, _data);\n }\n }\n };\n\n _proto.injectDtHeader = function injectDtHeader(span, target) {\n var headerName = this._configService.get('distributedTracingHeaderName');\n\n var headerValue = getDtHeaderValue(span);\n var isHeaderValid = isDtHeaderValid(headerValue);\n\n if (isHeaderValid && headerValue && headerName) {\n setRequestHeader(target, headerName, headerValue);\n }\n };\n\n _proto.injectTSHeader = function injectTSHeader(span, target) {\n var headerValue = getTSHeaderValue(span);\n\n if (headerValue) {\n setRequestHeader(target, 'tracestate', headerValue);\n }\n };\n\n _proto.extractDtHeader = function extractDtHeader(target) {\n var configService = this._configService;\n var headerName = configService.get('distributedTracingHeaderName');\n\n if (target) {\n return parseDtHeaderValue(target[headerName]);\n }\n };\n\n _proto.filterTransaction = function filterTransaction(tr) {\n var duration = tr.duration();\n\n if (!duration) {\n if (__DEV__) {\n var message = \"transaction(\" + tr.id + \", \" + tr.name + \") was discarded! \";\n\n if (duration === 0) {\n message += \"Transaction duration is 0\";\n } else {\n message += \"Transaction wasn't ended\";\n }\n\n this._logginService.debug(message);\n }\n\n return false;\n }\n\n if (tr.isManaged()) {\n if (duration > TRANSACTION_DURATION_THRESHOLD) {\n if (__DEV__) {\n this._logginService.debug(\"transaction(\" + tr.id + \", \" + tr.name + \") was discarded! Transaction duration (\" + duration + \") is greater than managed transaction threshold (\" + TRANSACTION_DURATION_THRESHOLD + \")\");\n }\n\n return false;\n }\n\n if (tr.sampled && tr.spans.length === 0) {\n if (__DEV__) {\n this._logginService.debug(\"transaction(\" + tr.id + \", \" + tr.name + \") was discarded! Transaction does not have any spans\");\n }\n\n return false;\n }\n }\n\n return true;\n };\n\n _proto.createTransactionDataModel = function createTransactionDataModel(transaction) {\n var transactionStart = transaction._start;\n var spans = transaction.spans.map(function (span) {\n var spanData = {\n id: span.id,\n transaction_id: transaction.id,\n parent_id: span.parentId || transaction.id,\n trace_id: transaction.traceId,\n name: span.name,\n type: span.type,\n subtype: span.subtype,\n action: span.action,\n sync: span.sync,\n start: parseInt(span._start - transactionStart),\n duration: span.duration(),\n context: span.context,\n outcome: span.outcome,\n sample_rate: span.sampleRate\n };\n return truncateModel(SPAN_MODEL, spanData);\n });\n var transactionData = {\n id: transaction.id,\n trace_id: transaction.traceId,\n session: transaction.session,\n name: transaction.name,\n type: transaction.type,\n duration: transaction.duration(),\n spans: spans,\n context: transaction.context,\n marks: transaction.marks,\n breakdown: transaction.breakdownTimings,\n span_count: {\n started: spans.length\n },\n sampled: transaction.sampled,\n sample_rate: transaction.sampleRate,\n experience: transaction.experience,\n outcome: transaction.outcome\n };\n return truncateModel(TRANSACTION_MODEL, transactionData);\n };\n\n _proto.createTransactionPayload = function createTransactionPayload(transaction) {\n var adjustedTransaction = adjustTransaction(transaction);\n var filtered = this.filterTransaction(adjustedTransaction);\n\n if (filtered) {\n return this.createTransactionDataModel(transaction);\n }\n };\n\n return PerformanceMonitoring;\n}();\n\nexport { PerformanceMonitoring as default };","import { getDuration, PERF } from '../common/utils';\nimport { PAGE_LOAD, TRUNCATED_TYPE } from '../common/constants';\nvar pageLoadBreakdowns = [['domainLookupStart', 'domainLookupEnd', 'DNS'], ['connectStart', 'connectEnd', 'TCP'], ['requestStart', 'responseStart', 'Request'], ['responseStart', 'responseEnd', 'Response'], ['domLoading', 'domComplete', 'Processing'], ['loadEventStart', 'loadEventEnd', 'Load']];\n\nfunction getValue(value) {\n return {\n value: value\n };\n}\n\nfunction calculateSelfTime(transaction) {\n var spans = transaction.spans,\n _start = transaction._start,\n _end = transaction._end;\n\n if (spans.length === 0) {\n return transaction.duration();\n }\n\n spans.sort(function (span1, span2) {\n return span1._start - span2._start;\n });\n var span = spans[0];\n var spanEnd = span._end;\n var spanStart = span._start;\n var lastContinuousEnd = spanEnd;\n var selfTime = spanStart - _start;\n\n for (var i = 1; i < spans.length; i++) {\n span = spans[i];\n spanStart = span._start;\n spanEnd = span._end;\n\n if (spanStart > lastContinuousEnd) {\n selfTime += spanStart - lastContinuousEnd;\n lastContinuousEnd = spanEnd;\n } else if (spanEnd > lastContinuousEnd) {\n lastContinuousEnd = spanEnd;\n }\n }\n\n if (lastContinuousEnd < _end) {\n selfTime += _end - lastContinuousEnd;\n }\n\n return selfTime;\n}\n\nfunction groupSpans(transaction) {\n var spanMap = {};\n var transactionSelfTime = calculateSelfTime(transaction);\n spanMap['app'] = {\n count: 1,\n duration: transactionSelfTime\n };\n var spans = transaction.spans;\n\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n var duration = span.duration();\n\n if (duration === 0 || duration == null) {\n continue;\n }\n\n var type = span.type,\n subtype = span.subtype;\n var key = type.replace(TRUNCATED_TYPE, '');\n\n if (subtype) {\n key += '.' + subtype;\n }\n\n if (!spanMap[key]) {\n spanMap[key] = {\n duration: 0,\n count: 0\n };\n }\n\n spanMap[key].count++;\n spanMap[key].duration += duration;\n }\n\n return spanMap;\n}\n\nfunction getSpanBreakdown(transactionDetails, _ref) {\n var details = _ref.details,\n _ref$count = _ref.count,\n count = _ref$count === void 0 ? 1 : _ref$count,\n duration = _ref.duration;\n return {\n transaction: transactionDetails,\n span: details,\n samples: {\n 'span.self_time.count': getValue(count),\n 'span.self_time.sum.us': getValue(duration)\n }\n };\n}\n\nexport function captureBreakdown(transaction, timings) {\n if (timings === void 0) {\n timings = PERF.timing;\n }\n\n var breakdowns = [];\n var trDuration = transaction.duration();\n var name = transaction.name,\n type = transaction.type,\n sampled = transaction.sampled;\n var transactionDetails = {\n name: name,\n type: type\n };\n breakdowns.push({\n transaction: transactionDetails,\n samples: {\n 'transaction.duration.count': getValue(1),\n 'transaction.duration.sum.us': getValue(trDuration),\n 'transaction.breakdown.count': getValue(sampled ? 1 : 0)\n }\n });\n\n if (!sampled) {\n return breakdowns;\n }\n\n if (type === PAGE_LOAD && timings) {\n for (var i = 0; i < pageLoadBreakdowns.length; i++) {\n var current = pageLoadBreakdowns[i];\n var start = timings[current[0]];\n var end = timings[current[1]];\n var duration = getDuration(start, end);\n\n if (duration === 0 || duration == null) {\n continue;\n }\n\n breakdowns.push(getSpanBreakdown(transactionDetails, {\n details: {\n type: current[2]\n },\n duration: duration\n }));\n }\n } else {\n var spanMap = groupSpans(transaction);\n Object.keys(spanMap).forEach(function (key) {\n var _key$split = key.split('.'),\n type = _key$split[0],\n subtype = _key$split[1];\n\n var _spanMap$key = spanMap[key],\n duration = _spanMap$key.duration,\n count = _spanMap$key.count;\n breakdowns.push(getSpanBreakdown(transactionDetails, {\n details: {\n type: type,\n subtype: subtype\n },\n duration: duration,\n count: count\n }));\n });\n }\n\n return breakdowns;\n}","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport Span from './span';\nimport SpanBase from './span-base';\nimport { generateRandomId, merge, now, getTime, extend, removeInvalidChars } from '../common/utils';\nimport { REUSABILITY_THRESHOLD, TRUNCATED_TYPE } from '../common/constants';\nimport { captureBreakdown as _captureBreakdown } from './breakdown';\n\nvar Transaction = function (_SpanBase) {\n _inheritsLoose(Transaction, _SpanBase);\n\n function Transaction(name, type, options) {\n var _this;\n\n _this = _SpanBase.call(this, name, type, options) || this;\n _this.traceId = generateRandomId();\n _this.marks = undefined;\n _this.spans = [];\n _this._activeSpans = {};\n _this._activeTasks = new Set();\n _this.blocked = false;\n _this.captureTimings = false;\n _this.breakdownTimings = [];\n _this.sampleRate = _this.options.transactionSampleRate;\n _this.sampled = Math.random() <= _this.sampleRate;\n return _this;\n }\n\n var _proto = Transaction.prototype;\n\n _proto.addMarks = function addMarks(obj) {\n this.marks = merge(this.marks || {}, obj);\n };\n\n _proto.mark = function mark(key) {\n var skey = removeInvalidChars(key);\n\n var markTime = now() - this._start;\n\n var custom = {};\n custom[skey] = markTime;\n this.addMarks({\n custom: custom\n });\n };\n\n _proto.canReuse = function canReuse() {\n var threshold = this.options.reuseThreshold || REUSABILITY_THRESHOLD;\n return !!this.options.canReuse && !this.ended && now() - this._start < threshold;\n };\n\n _proto.redefine = function redefine(name, type, options) {\n if (name) {\n this.name = name;\n }\n\n if (type) {\n this.type = type;\n }\n\n if (options) {\n this.options.reuseThreshold = options.reuseThreshold;\n extend(this.options, options);\n }\n };\n\n _proto.startSpan = function startSpan(name, type, options) {\n var _this2 = this;\n\n if (this.ended) {\n return;\n }\n\n var opts = extend({}, options);\n\n opts.onEnd = function (trc) {\n _this2._onSpanEnd(trc);\n };\n\n opts.traceId = this.traceId;\n opts.sampled = this.sampled;\n opts.sampleRate = this.sampleRate;\n\n if (!opts.parentId) {\n opts.parentId = this.id;\n }\n\n var span = new Span(name, type, opts);\n this._activeSpans[span.id] = span;\n\n if (opts.blocking) {\n this.addTask(span.id);\n }\n\n return span;\n };\n\n _proto.isFinished = function isFinished() {\n return !this.blocked && this._activeTasks.size === 0;\n };\n\n _proto.detectFinish = function detectFinish() {\n if (this.isFinished()) this.end();\n };\n\n _proto.end = function end(endTime) {\n if (this.ended) {\n return;\n }\n\n this.ended = true;\n this._end = getTime(endTime);\n\n for (var sid in this._activeSpans) {\n var span = this._activeSpans[sid];\n span.type = span.type + TRUNCATED_TYPE;\n span.end(endTime);\n }\n\n this.callOnEnd();\n };\n\n _proto.captureBreakdown = function captureBreakdown() {\n this.breakdownTimings = _captureBreakdown(this);\n };\n\n _proto.block = function block(flag) {\n this.blocked = flag;\n\n if (!this.blocked) {\n this.detectFinish();\n }\n };\n\n _proto.addTask = function addTask(taskId) {\n if (!taskId) {\n taskId = 'task-' + generateRandomId(16);\n }\n\n this._activeTasks.add(taskId);\n\n return taskId;\n };\n\n _proto.removeTask = function removeTask(taskId) {\n var deleted = this._activeTasks.delete(taskId);\n\n deleted && this.detectFinish();\n };\n\n _proto.resetFields = function resetFields() {\n this.spans = [];\n this.sampleRate = 0;\n };\n\n _proto._onSpanEnd = function _onSpanEnd(span) {\n this.spans.push(span);\n delete this._activeSpans[span.id];\n this.removeTask(span.id);\n };\n\n _proto.isManaged = function isManaged() {\n return !!this.options.managed;\n };\n\n return Transaction;\n}(SpanBase);\n\nexport default Transaction;","import { LONG_TASK, LARGEST_CONTENTFUL_PAINT, FIRST_CONTENTFUL_PAINT, FIRST_INPUT, LAYOUT_SHIFT } from '../common/constants';\nimport { noop, PERF } from '../common/utils';\nimport Span from './span';\nexport var metrics = {\n fid: 0,\n fcp: 0,\n tbt: {\n start: Infinity,\n duration: 0\n },\n cls: {\n score: 0,\n firstEntryTime: Number.NEGATIVE_INFINITY,\n prevEntryTime: Number.NEGATIVE_INFINITY,\n currentSessionScore: 0\n },\n longtask: {\n count: 0,\n duration: 0,\n max: 0\n }\n};\nvar LONG_TASK_THRESHOLD = 50;\nexport function createLongTaskSpans(longtasks, agg) {\n var spans = [];\n\n for (var i = 0; i < longtasks.length; i++) {\n var _longtasks$i = longtasks[i],\n name = _longtasks$i.name,\n startTime = _longtasks$i.startTime,\n duration = _longtasks$i.duration,\n attribution = _longtasks$i.attribution;\n var end = startTime + duration;\n var span = new Span(\"Longtask(\" + name + \")\", LONG_TASK, {\n startTime: startTime\n });\n agg.count++;\n agg.duration += duration;\n agg.max = Math.max(duration, agg.max);\n\n if (attribution.length > 0) {\n var _attribution$ = attribution[0],\n _name = _attribution$.name,\n containerType = _attribution$.containerType,\n containerName = _attribution$.containerName,\n containerId = _attribution$.containerId;\n var customContext = {\n attribution: _name,\n type: containerType\n };\n\n if (containerName) {\n customContext.name = containerName;\n }\n\n if (containerId) {\n customContext.id = containerId;\n }\n\n span.addContext({\n custom: customContext\n });\n }\n\n span.end(end);\n spans.push(span);\n }\n\n return spans;\n}\nexport function createFirstInputDelaySpan(fidEntries) {\n var firstInput = fidEntries[0];\n\n if (firstInput) {\n var startTime = firstInput.startTime,\n processingStart = firstInput.processingStart;\n var span = new Span('First Input Delay', FIRST_INPUT, {\n startTime: startTime\n });\n span.end(processingStart);\n return span;\n }\n}\nexport function createTotalBlockingTimeSpan(tbtObject) {\n var start = tbtObject.start,\n duration = tbtObject.duration;\n var tbtSpan = new Span('Total Blocking Time', LONG_TASK, {\n startTime: start\n });\n tbtSpan.end(start + duration);\n return tbtSpan;\n}\nexport function calculateTotalBlockingTime(longtaskEntries) {\n longtaskEntries.forEach(function (entry) {\n var name = entry.name,\n startTime = entry.startTime,\n duration = entry.duration;\n\n if (startTime < metrics.fcp) {\n return;\n }\n\n if (name !== 'self' && name.indexOf('same-origin') === -1) {\n return;\n }\n\n metrics.tbt.start = Math.min(metrics.tbt.start, startTime);\n var blockingTime = duration - LONG_TASK_THRESHOLD;\n\n if (blockingTime > 0) {\n metrics.tbt.duration += blockingTime;\n }\n });\n}\nexport function calculateCumulativeLayoutShift(clsEntries) {\n clsEntries.forEach(function (entry) {\n if (!entry.hadRecentInput && entry.value) {\n var shouldCreateNewSession = entry.startTime - metrics.cls.firstEntryTime > 5000 || entry.startTime - metrics.cls.prevEntryTime > 1000;\n\n if (shouldCreateNewSession) {\n metrics.cls.firstEntryTime = entry.startTime;\n metrics.cls.currentSessionScore = 0;\n }\n\n metrics.cls.prevEntryTime = entry.startTime;\n metrics.cls.currentSessionScore += entry.value;\n metrics.cls.score = Math.max(metrics.cls.score, metrics.cls.currentSessionScore);\n }\n });\n}\nexport function captureObserverEntries(list, _ref) {\n var isHardNavigation = _ref.isHardNavigation,\n trStart = _ref.trStart;\n var longtaskEntries = list.getEntriesByType(LONG_TASK).filter(function (entry) {\n return entry.startTime >= trStart;\n });\n var longTaskSpans = createLongTaskSpans(longtaskEntries, metrics.longtask);\n var result = {\n spans: longTaskSpans,\n marks: {}\n };\n\n if (!isHardNavigation) {\n return result;\n }\n\n var lcpEntries = list.getEntriesByType(LARGEST_CONTENTFUL_PAINT);\n var lastLcpEntry = lcpEntries[lcpEntries.length - 1];\n\n if (lastLcpEntry) {\n var lcp = parseInt(lastLcpEntry.startTime);\n metrics.lcp = lcp;\n result.marks.largestContentfulPaint = lcp;\n }\n\n var timing = PERF.timing;\n var unloadDiff = timing.fetchStart - timing.navigationStart;\n var fcpEntry = list.getEntriesByName(FIRST_CONTENTFUL_PAINT)[0];\n\n if (fcpEntry) {\n var fcp = parseInt(unloadDiff >= 0 ? fcpEntry.startTime - unloadDiff : fcpEntry.startTime);\n metrics.fcp = fcp;\n result.marks.firstContentfulPaint = fcp;\n }\n\n var fidEntries = list.getEntriesByType(FIRST_INPUT);\n var fidSpan = createFirstInputDelaySpan(fidEntries);\n\n if (fidSpan) {\n metrics.fid = fidSpan.duration();\n result.spans.push(fidSpan);\n }\n\n calculateTotalBlockingTime(longtaskEntries);\n var clsEntries = list.getEntriesByType(LAYOUT_SHIFT);\n calculateCumulativeLayoutShift(clsEntries);\n return result;\n}\nexport var PerfEntryRecorder = function () {\n function PerfEntryRecorder(callback) {\n this.po = {\n observe: noop,\n disconnect: noop\n };\n\n if (window.PerformanceObserver) {\n this.po = new PerformanceObserver(callback);\n }\n }\n\n var _proto = PerfEntryRecorder.prototype;\n\n _proto.start = function start(type) {\n try {\n this.po.observe({\n type: type,\n buffered: true\n });\n } catch (_) {}\n };\n\n _proto.stop = function stop() {\n this.po.disconnect();\n };\n\n return PerfEntryRecorder;\n}();","import { Promise } from '../common/polyfills';\nimport Transaction from './transaction';\nimport { PerfEntryRecorder, captureObserverEntries, metrics, createTotalBlockingTimeSpan } from './metrics';\nimport { extend, getEarliestSpan, getLatestNonXHRSpan, getLatestXHRSpan, isPerfTypeSupported, generateRandomId } from '../common/utils';\nimport { captureNavigation } from './capture-navigation';\nimport { PAGE_LOAD, NAME_UNKNOWN, TRANSACTION_START, TRANSACTION_END, TEMPORARY_TYPE, TRANSACTION_TYPE_ORDER, LARGEST_CONTENTFUL_PAINT, LONG_TASK, PAINT, TRUNCATED_TYPE, FIRST_INPUT, LAYOUT_SHIFT, SESSION_TIMEOUT, PAGE_LOAD_DELAY } from '../common/constants';\nimport { addTransactionContext } from '../common/context';\nimport { __DEV__, state } from '../state';\nimport { slugifyUrl } from '../common/url';\n\nvar TransactionService = function () {\n function TransactionService(logger, config) {\n var _this = this;\n\n this._config = config;\n this._logger = logger;\n this.currentTransaction = undefined;\n this.respIntervalId = undefined;\n this.recorder = new PerfEntryRecorder(function (list) {\n var tr = _this.getCurrentTransaction();\n\n if (tr && tr.captureTimings) {\n var _tr$spans;\n\n var isHardNavigation = tr.type === PAGE_LOAD;\n\n var _captureObserverEntri = captureObserverEntries(list, {\n isHardNavigation: isHardNavigation,\n trStart: isHardNavigation ? 0 : tr._start\n }),\n spans = _captureObserverEntri.spans,\n marks = _captureObserverEntri.marks;\n\n (_tr$spans = tr.spans).push.apply(_tr$spans, spans);\n\n tr.addMarks({\n agent: marks\n });\n }\n });\n }\n\n var _proto = TransactionService.prototype;\n\n _proto.createCurrentTransaction = function createCurrentTransaction(name, type, options) {\n var tr = new Transaction(name, type, options);\n this.currentTransaction = tr;\n return tr;\n };\n\n _proto.getCurrentTransaction = function getCurrentTransaction() {\n if (this.currentTransaction && !this.currentTransaction.ended) {\n return this.currentTransaction;\n }\n };\n\n _proto.createOptions = function createOptions(options) {\n var config = this._config.config;\n var presetOptions = {\n transactionSampleRate: config.transactionSampleRate\n };\n var perfOptions = extend(presetOptions, options);\n\n if (perfOptions.managed) {\n perfOptions = extend({\n pageLoadTraceId: config.pageLoadTraceId,\n pageLoadSampled: config.pageLoadSampled,\n pageLoadSpanId: config.pageLoadSpanId,\n pageLoadTransactionName: config.pageLoadTransactionName\n }, perfOptions);\n }\n\n return perfOptions;\n };\n\n _proto.startManagedTransaction = function startManagedTransaction(name, type, perfOptions) {\n var tr = this.getCurrentTransaction();\n var isRedefined = false;\n\n if (!tr) {\n tr = this.createCurrentTransaction(name, type, perfOptions);\n } else if (tr.canReuse() && perfOptions.canReuse) {\n var redefineType = tr.type;\n var currentTypeOrder = TRANSACTION_TYPE_ORDER.indexOf(tr.type);\n var redefineTypeOrder = TRANSACTION_TYPE_ORDER.indexOf(type);\n\n if (currentTypeOrder >= 0 && redefineTypeOrder < currentTypeOrder) {\n redefineType = type;\n }\n\n if (__DEV__) {\n this._logger.debug(\"redefining transaction(\" + tr.id + \", \" + tr.name + \", \" + tr.type + \")\", 'to', \"(\" + (name || tr.name) + \", \" + redefineType + \")\", tr);\n }\n\n tr.redefine(name, redefineType, perfOptions);\n isRedefined = true;\n } else {\n if (__DEV__) {\n this._logger.debug(\"ending previous transaction(\" + tr.id + \", \" + tr.name + \")\", tr);\n }\n\n tr.end();\n tr = this.createCurrentTransaction(name, type, perfOptions);\n }\n\n if (tr.type === PAGE_LOAD) {\n if (!isRedefined) {\n this.recorder.start(LARGEST_CONTENTFUL_PAINT);\n this.recorder.start(PAINT);\n this.recorder.start(FIRST_INPUT);\n this.recorder.start(LAYOUT_SHIFT);\n }\n\n if (perfOptions.pageLoadTraceId) {\n tr.traceId = perfOptions.pageLoadTraceId;\n }\n\n if (perfOptions.pageLoadSampled) {\n tr.sampled = perfOptions.pageLoadSampled;\n }\n\n if (tr.name === NAME_UNKNOWN && perfOptions.pageLoadTransactionName) {\n tr.name = perfOptions.pageLoadTransactionName;\n }\n }\n\n if (!isRedefined && this._config.get('monitorLongtasks')) {\n this.recorder.start(LONG_TASK);\n }\n\n if (tr.sampled) {\n tr.captureTimings = true;\n }\n\n return tr;\n };\n\n _proto.startTransaction = function startTransaction(name, type, options) {\n var _this2 = this;\n\n var perfOptions = this.createOptions(options);\n var tr;\n var fireOnstartHook = true;\n\n if (perfOptions.managed) {\n var current = this.currentTransaction;\n tr = this.startManagedTransaction(name, type, perfOptions);\n\n if (current === tr) {\n fireOnstartHook = false;\n }\n } else {\n tr = new Transaction(name, type, perfOptions);\n }\n\n tr.onEnd = function () {\n return _this2.handleTransactionEnd(tr);\n };\n\n if (fireOnstartHook) {\n if (__DEV__) {\n this._logger.debug(\"startTransaction(\" + tr.id + \", \" + tr.name + \", \" + tr.type + \")\");\n }\n\n this._config.events.send(TRANSACTION_START, [tr]);\n }\n\n return tr;\n };\n\n _proto.handleTransactionEnd = function handleTransactionEnd(tr) {\n var _this3 = this;\n\n this.recorder.stop();\n var currentUrl = window.location.href;\n return Promise.resolve().then(function () {\n var name = tr.name,\n type = tr.type;\n var lastHiddenStart = state.lastHiddenStart;\n\n if (lastHiddenStart >= tr._start) {\n if (__DEV__) {\n _this3._logger.debug(\"transaction(\" + tr.id + \", \" + name + \", \" + type + \") was discarded! The page was hidden during the transaction!\");\n }\n\n return;\n }\n\n if (_this3.shouldIgnoreTransaction(name) || type === TEMPORARY_TYPE) {\n if (__DEV__) {\n _this3._logger.debug(\"transaction(\" + tr.id + \", \" + name + \", \" + type + \") is ignored\");\n }\n\n return;\n }\n\n if (type === PAGE_LOAD) {\n var pageLoadTransactionName = _this3._config.get('pageLoadTransactionName');\n\n if (name === NAME_UNKNOWN && pageLoadTransactionName) {\n tr.name = pageLoadTransactionName;\n }\n\n if (tr.captureTimings) {\n var cls = metrics.cls,\n fid = metrics.fid,\n tbt = metrics.tbt,\n longtask = metrics.longtask;\n\n if (tbt.duration > 0) {\n tr.spans.push(createTotalBlockingTimeSpan(tbt));\n }\n\n tr.experience = {};\n\n if (isPerfTypeSupported(LONG_TASK)) {\n tr.experience.tbt = tbt.duration;\n }\n\n if (isPerfTypeSupported(LAYOUT_SHIFT)) {\n tr.experience.cls = cls.score;\n }\n\n if (fid > 0) {\n tr.experience.fid = fid;\n }\n\n if (longtask.count > 0) {\n tr.experience.longtask = {\n count: longtask.count,\n sum: longtask.duration,\n max: longtask.max\n };\n }\n }\n\n _this3.setSession(tr);\n }\n\n if (tr.name === NAME_UNKNOWN) {\n tr.name = slugifyUrl(currentUrl);\n }\n\n captureNavigation(tr);\n\n _this3.adjustTransactionTime(tr);\n\n var breakdownMetrics = _this3._config.get('breakdownMetrics');\n\n if (breakdownMetrics) {\n tr.captureBreakdown();\n }\n\n var configContext = _this3._config.get('context');\n\n addTransactionContext(tr, configContext);\n\n _this3._config.events.send(TRANSACTION_END, [tr]);\n\n if (__DEV__) {\n _this3._logger.debug(\"end transaction(\" + tr.id + \", \" + tr.name + \", \" + tr.type + \")\", tr);\n }\n }, function (err) {\n if (__DEV__) {\n _this3._logger.debug(\"error ending transaction(\" + tr.id + \", \" + tr.name + \")\", err);\n }\n });\n };\n\n _proto.setSession = function setSession(tr) {\n var session = this._config.get('session');\n\n if (session) {\n if (typeof session == 'boolean') {\n tr.session = {\n id: generateRandomId(16),\n sequence: 1\n };\n } else {\n if (session.timestamp && Date.now() - session.timestamp > SESSION_TIMEOUT) {\n tr.session = {\n id: generateRandomId(16),\n sequence: 1\n };\n } else {\n tr.session = {\n id: session.id,\n sequence: session.sequence ? session.sequence + 1 : 1\n };\n }\n }\n\n var sessionConfig = {\n session: {\n id: tr.session.id,\n sequence: tr.session.sequence,\n timestamp: Date.now()\n }\n };\n\n this._config.setConfig(sessionConfig);\n\n this._config.setLocalConfig(sessionConfig, true);\n }\n };\n\n _proto.adjustTransactionTime = function adjustTransactionTime(transaction) {\n var spans = transaction.spans;\n var earliestSpan = getEarliestSpan(spans);\n\n if (earliestSpan && earliestSpan._start < transaction._start) {\n transaction._start = earliestSpan._start;\n }\n\n var latestSpan = getLatestNonXHRSpan(spans) || {};\n var latestSpanEnd = latestSpan._end || 0;\n\n if (transaction.type === PAGE_LOAD) {\n var transactionEndWithoutDelay = transaction._end - PAGE_LOAD_DELAY;\n var lcp = metrics.lcp || 0;\n var latestXHRSpan = getLatestXHRSpan(spans) || {};\n var latestXHRSpanEnd = latestXHRSpan._end || 0;\n transaction._end = Math.max(latestSpanEnd, latestXHRSpanEnd, lcp, transactionEndWithoutDelay);\n } else if (latestSpanEnd > transaction._end) {\n transaction._end = latestSpanEnd;\n }\n\n this.truncateSpans(spans, transaction._end);\n };\n\n _proto.truncateSpans = function truncateSpans(spans, transactionEnd) {\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n\n if (span._end > transactionEnd) {\n span._end = transactionEnd;\n span.type += TRUNCATED_TYPE;\n }\n\n if (span._start > transactionEnd) {\n span._start = transactionEnd;\n }\n }\n };\n\n _proto.shouldIgnoreTransaction = function shouldIgnoreTransaction(transactionName) {\n var ignoreList = this._config.get('ignoreTransactions');\n\n if (ignoreList && ignoreList.length) {\n for (var i = 0; i < ignoreList.length; i++) {\n var element = ignoreList[i];\n\n if (typeof element.test === 'function') {\n if (element.test(transactionName)) {\n return true;\n }\n } else if (element === transactionName) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n _proto.startSpan = function startSpan(name, type, options) {\n var tr = this.getCurrentTransaction();\n\n if (!tr) {\n tr = this.createCurrentTransaction(undefined, TEMPORARY_TYPE, this.createOptions({\n canReuse: true,\n managed: true\n }));\n }\n\n var span = tr.startSpan(name, type, options);\n\n if (__DEV__) {\n this._logger.debug(\"startSpan(\" + name + \", \" + span.type + \")\", \"on transaction(\" + tr.id + \", \" + tr.name + \")\");\n }\n\n return span;\n };\n\n _proto.endSpan = function endSpan(span, context) {\n if (!span) {\n return;\n }\n\n if (__DEV__) {\n var tr = this.getCurrentTransaction();\n tr && this._logger.debug(\"endSpan(\" + span.name + \", \" + span.type + \")\", \"on transaction(\" + tr.id + \", \" + tr.name + \")\");\n }\n\n span.end(null, context);\n };\n\n return TransactionService;\n}();\n\nexport default TransactionService;","import { registerServices as registerErrorServices } from './error-logging';\nimport { registerServices as registerPerfServices } from './performance-monitoring';\nimport { ServiceFactory } from './common/service-factory';\nimport { isPlatformSupported, scheduleMicroTask, scheduleMacroTask, isBrowser } from './common/utils';\nimport { patchAll, patchEventHandler } from './common/patching';\nimport { observePageVisibility, observePageClicks } from './common/observers';\nimport { PAGE_LOAD_DELAY, PAGE_LOAD, ERROR, CONFIG_SERVICE, LOGGING_SERVICE, TRANSACTION_SERVICE, APM_SERVER, PERFORMANCE_MONITORING, ERROR_LOGGING, EVENT_TARGET, CLICK } from './common/constants';\nimport { getInstrumentationFlags } from './common/instrument';\nimport afterFrame from './common/after-frame';\nimport { bootstrap } from './bootstrap';\nimport { createTracer } from './opentracing';\n\nfunction createServiceFactory() {\n registerPerfServices();\n registerErrorServices();\n var serviceFactory = new ServiceFactory();\n return serviceFactory;\n}\n\nexport { createServiceFactory, ServiceFactory, patchAll, patchEventHandler, isPlatformSupported, isBrowser, getInstrumentationFlags, createTracer, scheduleMicroTask, scheduleMacroTask, afterFrame, ERROR, PAGE_LOAD_DELAY, PAGE_LOAD, CONFIG_SERVICE, LOGGING_SERVICE, TRANSACTION_SERVICE, APM_SERVER, PERFORMANCE_MONITORING, ERROR_LOGGING, EVENT_TARGET, CLICK, bootstrap, observePageVisibility, observePageClicks };","import PerformanceMonitoring from './performance-monitoring';\nimport TransactionService from './transaction-service';\nimport { APM_SERVER, CONFIG_SERVICE, LOGGING_SERVICE, TRANSACTION_SERVICE, PERFORMANCE_MONITORING } from '../common/constants';\nimport { serviceCreators } from '../common/service-factory';\n\nfunction registerServices() {\n serviceCreators[TRANSACTION_SERVICE] = function (serviceFactory) {\n var _serviceFactory$getSe = serviceFactory.getService([LOGGING_SERVICE, CONFIG_SERVICE]),\n loggingService = _serviceFactory$getSe[0],\n configService = _serviceFactory$getSe[1];\n\n return new TransactionService(loggingService, configService);\n };\n\n serviceCreators[PERFORMANCE_MONITORING] = function (serviceFactory) {\n var _serviceFactory$getSe2 = serviceFactory.getService([APM_SERVER, CONFIG_SERVICE, LOGGING_SERVICE, TRANSACTION_SERVICE]),\n apmServer = _serviceFactory$getSe2[0],\n configService = _serviceFactory$getSe2[1],\n loggingService = _serviceFactory$getSe2[2],\n transactionService = _serviceFactory$getSe2[3];\n\n return new PerformanceMonitoring(apmServer, configService, loggingService, transactionService);\n };\n}\n\nexport { registerServices };","import ErrorLogging from './error-logging';\nimport { CONFIG_SERVICE, TRANSACTION_SERVICE, ERROR_LOGGING, APM_SERVER } from '../common/constants';\nimport { serviceCreators } from '../common/service-factory';\n\nfunction registerServices() {\n serviceCreators[ERROR_LOGGING] = function (serviceFactory) {\n var _serviceFactory$getSe = serviceFactory.getService([APM_SERVER, CONFIG_SERVICE, TRANSACTION_SERVICE]),\n apmServer = _serviceFactory$getSe[0],\n configService = _serviceFactory$getSe[1],\n transactionService = _serviceFactory$getSe[2];\n\n return new ErrorLogging(apmServer, configService, transactionService);\n };\n}\n\nexport { registerServices };","import { QUEUE_ADD_TRANSACTION, QUEUE_FLUSH } from '../constants';\nimport { state } from '../../state';\nimport { now } from '../utils';\nexport function observePageVisibility(configService, transactionService) {\n if (document.visibilityState === 'hidden') {\n state.lastHiddenStart = 0;\n }\n\n var visibilityChangeHandler = function visibilityChangeHandler() {\n if (document.visibilityState === 'hidden') {\n onPageHidden(configService, transactionService);\n }\n };\n\n var pageHideHandler = function pageHideHandler() {\n return onPageHidden(configService, transactionService);\n };\n\n var useCapture = true;\n window.addEventListener('visibilitychange', visibilityChangeHandler, useCapture);\n window.addEventListener('pagehide', pageHideHandler, useCapture);\n return function () {\n window.removeEventListener('visibilitychange', visibilityChangeHandler, useCapture);\n window.removeEventListener('pagehide', pageHideHandler, useCapture);\n };\n}\n\nfunction onPageHidden(configService, transactionService) {\n var tr = transactionService.getCurrentTransaction();\n\n if (tr) {\n var unobserve = configService.observeEvent(QUEUE_ADD_TRANSACTION, function () {\n configService.dispatchEvent(QUEUE_FLUSH);\n state.lastHiddenStart = now();\n unobserve();\n });\n tr.end();\n } else {\n configService.dispatchEvent(QUEUE_FLUSH);\n state.lastHiddenStart = now();\n }\n}","import { USER_INTERACTION } from '../constants';\nexport function observePageClicks(transactionService) {\n var clickHandler = function clickHandler(event) {\n if (event.target instanceof Element) {\n createUserInteractionTransaction(transactionService, event.target);\n }\n };\n\n var eventName = 'click';\n var useCapture = true;\n window.addEventListener(eventName, clickHandler, useCapture);\n return function () {\n window.removeEventListener(eventName, clickHandler, useCapture);\n };\n}\n\nfunction createUserInteractionTransaction(transactionService, target) {\n var _getTransactionMetada = getTransactionMetadata(target),\n transactionName = _getTransactionMetada.transactionName,\n context = _getTransactionMetada.context;\n\n var tr = transactionService.startTransaction(\"Click - \" + transactionName, USER_INTERACTION, {\n managed: true,\n canReuse: true,\n reuseThreshold: 300\n });\n\n if (tr && context) {\n tr.addContext(context);\n }\n}\n\nfunction getTransactionMetadata(target) {\n var metadata = {\n transactionName: null,\n context: null\n };\n var tagName = target.tagName.toLowerCase();\n var transactionName = tagName;\n\n if (!!target.dataset.transactionName) {\n transactionName = target.dataset.transactionName;\n } else {\n var name = target.getAttribute('name');\n\n if (!!name) {\n transactionName = tagName + \"[\\\"\" + name + \"\\\"]\";\n }\n }\n\n metadata.transactionName = transactionName;\n var classes = target.getAttribute('class');\n\n if (classes) {\n metadata.context = {\n custom: {\n classes: classes\n }\n };\n }\n\n return metadata;\n}","import { getInstrumentationFlags, PAGE_LOAD_DELAY, PAGE_LOAD, ERROR, CONFIG_SERVICE, LOGGING_SERVICE, TRANSACTION_SERVICE, PERFORMANCE_MONITORING, ERROR_LOGGING, APM_SERVER, EVENT_TARGET, CLICK, observePageVisibility, observePageClicks } from '@elastic/apm-rum-core';\n\nvar ApmBase = function () {\n function ApmBase(serviceFactory, disable) {\n this._disable = disable;\n this.serviceFactory = serviceFactory;\n this._initialized = false;\n }\n\n var _proto = ApmBase.prototype;\n\n _proto.isEnabled = function isEnabled() {\n return !this._disable;\n };\n\n _proto.isActive = function isActive() {\n var configService = this.serviceFactory.getService(CONFIG_SERVICE);\n return this.isEnabled() && this._initialized && configService.get('active');\n };\n\n _proto.init = function init(config) {\n var _this = this;\n\n if (this.isEnabled() && !this._initialized) {\n this._initialized = true;\n\n var _this$serviceFactory$ = this.serviceFactory.getService([CONFIG_SERVICE, LOGGING_SERVICE, TRANSACTION_SERVICE]),\n configService = _this$serviceFactory$[0],\n loggingService = _this$serviceFactory$[1],\n transactionService = _this$serviceFactory$[2];\n\n configService.setVersion('5.12.0');\n this.config(config);\n var logLevel = configService.get('logLevel');\n loggingService.setLevel(logLevel);\n var isConfigActive = configService.get('active');\n\n if (isConfigActive) {\n this.serviceFactory.init();\n var flags = getInstrumentationFlags(configService.get('instrument'), configService.get('disableInstrumentations'));\n var performanceMonitoring = this.serviceFactory.getService(PERFORMANCE_MONITORING);\n performanceMonitoring.init(flags);\n\n if (flags[ERROR]) {\n var errorLogging = this.serviceFactory.getService(ERROR_LOGGING);\n errorLogging.registerListeners();\n }\n\n if (configService.get('session')) {\n var localConfig = configService.getLocalConfig();\n\n if (localConfig && localConfig.session) {\n configService.setConfig({\n session: localConfig.session\n });\n }\n }\n\n var sendPageLoad = function sendPageLoad() {\n return flags[PAGE_LOAD] && _this._sendPageLoadMetrics();\n };\n\n if (configService.get('centralConfig')) {\n this.fetchCentralConfig().then(sendPageLoad);\n } else {\n sendPageLoad();\n }\n\n observePageVisibility(configService, transactionService);\n\n if (flags[EVENT_TARGET] && flags[CLICK]) {\n observePageClicks(transactionService);\n }\n } else {\n this._disable = true;\n loggingService.warn('RUM agent is inactive');\n }\n }\n\n return this;\n };\n\n _proto.fetchCentralConfig = function fetchCentralConfig() {\n var _this$serviceFactory$2 = this.serviceFactory.getService([APM_SERVER, LOGGING_SERVICE, CONFIG_SERVICE]),\n apmServer = _this$serviceFactory$2[0],\n loggingService = _this$serviceFactory$2[1],\n configService = _this$serviceFactory$2[2];\n\n return apmServer.fetchConfig(configService.get('serviceName'), configService.get('environment')).then(function (config) {\n var transactionSampleRate = config['transaction_sample_rate'];\n\n if (transactionSampleRate) {\n transactionSampleRate = Number(transactionSampleRate);\n var _config2 = {\n transactionSampleRate: transactionSampleRate\n };\n\n var _configService$valida = configService.validate(_config2),\n invalid = _configService$valida.invalid;\n\n if (invalid.length === 0) {\n configService.setConfig(_config2);\n } else {\n var _invalid$ = invalid[0],\n key = _invalid$.key,\n value = _invalid$.value,\n allowed = _invalid$.allowed;\n loggingService.warn(\"invalid value \\\"\" + value + \"\\\" for \" + key + \". Allowed: \" + allowed + \".\");\n }\n }\n\n return config;\n }).catch(function (error) {\n loggingService.warn('failed fetching config:', error);\n });\n };\n\n _proto._sendPageLoadMetrics = function _sendPageLoadMetrics() {\n var tr = this.startTransaction(undefined, PAGE_LOAD, {\n managed: true,\n canReuse: true\n });\n\n if (!tr) {\n return;\n }\n\n tr.addTask(PAGE_LOAD);\n\n var sendPageLoadMetrics = function sendPageLoadMetrics() {\n setTimeout(function () {\n return tr.removeTask(PAGE_LOAD);\n }, PAGE_LOAD_DELAY);\n };\n\n if (document.readyState === 'complete') {\n sendPageLoadMetrics();\n } else {\n window.addEventListener('load', sendPageLoadMetrics);\n }\n };\n\n _proto.observe = function observe(name, fn) {\n var configService = this.serviceFactory.getService(CONFIG_SERVICE);\n configService.events.observe(name, fn);\n };\n\n _proto.config = function config(_config) {\n var _this$serviceFactory$3 = this.serviceFactory.getService([CONFIG_SERVICE, LOGGING_SERVICE]),\n configService = _this$serviceFactory$3[0],\n loggingService = _this$serviceFactory$3[1];\n\n var _configService$valida2 = configService.validate(_config),\n missing = _configService$valida2.missing,\n invalid = _configService$valida2.invalid,\n unknown = _configService$valida2.unknown;\n\n if (unknown.length > 0) {\n var message = 'Unknown config options are specified for RUM agent: ' + unknown.join(', ');\n loggingService.warn(message);\n }\n\n if (missing.length === 0 && invalid.length === 0) {\n configService.setConfig(_config);\n } else {\n var separator = ', ';\n var _message = \"RUM agent isn't correctly configured. \";\n\n if (missing.length > 0) {\n _message += missing.join(separator) + ' is missing';\n\n if (invalid.length > 0) {\n _message += separator;\n }\n }\n\n invalid.forEach(function (_ref, index) {\n var key = _ref.key,\n value = _ref.value,\n allowed = _ref.allowed;\n _message += key + \" \\\"\" + value + \"\\\" contains invalid characters! (allowed: \" + allowed + \")\" + (index !== invalid.length - 1 ? separator : '');\n });\n loggingService.error(_message);\n configService.setConfig({\n active: false\n });\n }\n };\n\n _proto.setUserContext = function setUserContext(userContext) {\n var configService = this.serviceFactory.getService(CONFIG_SERVICE);\n configService.setUserContext(userContext);\n };\n\n _proto.setCustomContext = function setCustomContext(customContext) {\n var configService = this.serviceFactory.getService(CONFIG_SERVICE);\n configService.setCustomContext(customContext);\n };\n\n _proto.addLabels = function addLabels(labels) {\n var configService = this.serviceFactory.getService(CONFIG_SERVICE);\n configService.addLabels(labels);\n };\n\n _proto.setInitialPageLoadName = function setInitialPageLoadName(name) {\n var configService = this.serviceFactory.getService(CONFIG_SERVICE);\n configService.setConfig({\n pageLoadTransactionName: name\n });\n };\n\n _proto.startTransaction = function startTransaction(name, type, options) {\n if (this.isEnabled()) {\n var transactionService = this.serviceFactory.getService(TRANSACTION_SERVICE);\n return transactionService.startTransaction(name, type, options);\n }\n };\n\n _proto.startSpan = function startSpan(name, type, options) {\n if (this.isEnabled()) {\n var transactionService = this.serviceFactory.getService(TRANSACTION_SERVICE);\n return transactionService.startSpan(name, type, options);\n }\n };\n\n _proto.getCurrentTransaction = function getCurrentTransaction() {\n if (this.isEnabled()) {\n var transactionService = this.serviceFactory.getService(TRANSACTION_SERVICE);\n return transactionService.getCurrentTransaction();\n }\n };\n\n _proto.captureError = function captureError(error) {\n if (this.isEnabled()) {\n var errorLogging = this.serviceFactory.getService(ERROR_LOGGING);\n return errorLogging.logError(error);\n }\n };\n\n _proto.addFilter = function addFilter(fn) {\n var configService = this.serviceFactory.getService(CONFIG_SERVICE);\n configService.addFilter(fn);\n };\n\n return ApmBase;\n}();\n\nexport { ApmBase as default };","import { XMLHTTPREQUEST, FETCH, HISTORY, PAGE_LOAD, ERROR, EVENT_TARGET, CLICK } from './constants';\nexport function getInstrumentationFlags(instrument, disabledInstrumentations) {\n var _flags;\n\n var flags = (_flags = {}, _flags[XMLHTTPREQUEST] = false, _flags[FETCH] = false, _flags[HISTORY] = false, _flags[PAGE_LOAD] = false, _flags[ERROR] = false, _flags[EVENT_TARGET] = false, _flags[CLICK] = false, _flags);\n\n if (!instrument) {\n return flags;\n }\n\n Object.keys(flags).forEach(function (key) {\n if (disabledInstrumentations.indexOf(key) === -1) {\n flags[key] = true;\n }\n });\n return flags;\n}","import { createServiceFactory, bootstrap, isBrowser } from '@elastic/apm-rum-core';\nimport ApmBase from './apm-base';\n\nfunction getApmBase() {\n if (isBrowser && window.elasticApm) {\n return window.elasticApm;\n }\n\n var enabled = bootstrap();\n var serviceFactory = createServiceFactory();\n var apmBase = new ApmBase(serviceFactory, !enabled);\n\n if (isBrowser) {\n window.elasticApm = apmBase;\n }\n\n return apmBase;\n}\n\nvar apmBase = getApmBase();\nvar init = apmBase.init.bind(apmBase);\nexport default init;\nexport { init, apmBase, ApmBase, apmBase as apm };","import { init as initApm } from '@elastic/apm-rum';\n\n// Initialises the APM agent as soon as this module is imported.\nvar apm = initApm({\n serviceName: process.env.REACT_APP_APM_SERVICE_NAME,\n serverUrl: process.env.REACT_APP_APM_URL,\n distributedTracingOrigins: [\n process.env.REACT_APP_AUTH_API_URL,\n process.env.REACT_APP_TRAPLOG_API_URL,\n process.env.REACT_APP_TERRAPROBE_API_URL,\n process.env.REACT_APP_PROPERTIES_API_URL\n ],\n environment: process.env.REACT_APP_ENVIRONMENT\n});\n\n/**\n * Associates the current APM session with the currently authenticated user.\n * @param apm Current APM object.\n * @param userId Current user ID.\n */\nexport function setupApmUser(apm, userId) {\n apm.setUserContext({\n id: userId\n });\n}\n\nexport default apm;\n","import React from 'react';\nimport { Button, Col, Nav, Row } from 'react-bootstrap';\nimport './footer.scss';\n\nfunction Footer() {\n return (\n <footer className='w-100'>\n <Row className='no-gutters'>\n <Col>\n <Row className='no-gutters' style={{ minHeight: '350px' }}>\n <Col\n className='footer-left ellipse-1 ellipse-2 w-100 pt-4'\n sm={true}\n >\n <div className='ellipse-1' />\n <div className='ellipse-2' />\n <Row className='mt-3 mb-5 mx-0'>\n <Col xs={1} sm={1} md={2}></Col>\n <Col className='px-0'>\n <img\n className='w-75'\n src='https://fruition-metwatch-assets.s3-ap-southeast-2.amazonaws.com/fruition-logo.png'\n alt='Fruition Portal'\n />\n </Col>\n <Col></Col>\n </Row>\n <Row className='mb-2 mx-0'>\n <Col xs={1} sm={1} md={2}></Col>\n <Col className='px-0'>\n <Nav className='footer-nav'>\n <Nav.Item>\n <Nav.Link\n className='first-link text pl-0'\n href='https://www.fruitionhort.com/'\n >\n Home\n </Nav.Link>\n </Nav.Item>\n <Nav.Item>\n <Nav.Link\n className='text'\n href='https://www.fruitionhort.com/about'\n >\n About\n </Nav.Link>\n </Nav.Item>\n <Nav.Item>\n <Nav.Link\n className='text'\n href='https://www.fruitionhort.com/contact'\n >\n Contact\n </Nav.Link>\n </Nav.Item>\n <Nav.Item>\n <Nav.Link></Nav.Link>\n </Nav.Item>\n <Nav.Item>\n <Nav.Link></Nav.Link>\n </Nav.Item>\n <Nav.Item>\n <Nav.Link></Nav.Link>\n </Nav.Item>\n <Nav.Item>\n <Nav.Link\n className='text'\n href='https://www.facebook.com/FruitionHort/'\n >\n Facebook\n </Nav.Link>\n </Nav.Item>\n <Nav.Item>\n <Nav.Link\n className='text'\n href='https://nz.linkedin.com/company/fruition-horticulture-hb-ltd'\n >\n LinkedIn\n </Nav.Link>\n </Nav.Item>\n </Nav>\n <hr className='line' />\n </Col>\n <Col md={1}></Col>\n </Row>\n <Row className='mx-0'>\n <Col xs={1} sm={1} md={2}></Col>\n <Col className='px-0 text-white'>What We Offer</Col>\n </Row>\n <Row className='mt-3 mx-0'>\n <Col xs={1} sm={1} md={2}></Col>\n <Col className='px-0'>\n <Nav className='footer-nav'>\n <Nav.Item>\n <Nav.Link\n className='first-link text pl-0'\n href='https://www.fruitionhort.com/soil-water'\n >\n Soil & Water\n </Nav.Link>\n </Nav.Item>\n <Nav.Item>\n <Nav.Link\n className='text'\n href='https://www.fruitionhort.com/pomology'\n >\n Pomology\n </Nav.Link>\n </Nav.Item>\n <Nav.Item>\n <Nav.Link\n className='text'\n href='https://www.fruitionhort.com/precision-hort'\n >\n Precision Hort\n </Nav.Link>\n </Nav.Item>\n <Nav.Item>\n <Nav.Link\n className='text'\n href='https://www.fruitionhort.com/pest-disease'\n >\n Pest & Disease\n </Nav.Link>\n </Nav.Item>\n </Nav>\n <hr className='line' />\n </Col>\n <Col md={1}></Col>\n </Row>\n <Row className='bottom mx-0'>\n <Col xs={1} sm={1} md={2}></Col>\n <Col className='p-0'>\n <p className='pl-0'>© 2022 Fruition</p>\n </Col>\n <Col className='p-0' xs={5} sm={5} md={5}>\n <p className='pr-0 float-right'>\n Website By HortPlus and One Project Studio\n </p>\n </Col>\n <Col md={1}></Col>\n </Row>\n </Col>\n <Col className='footer-right w-100' sm={true}>\n <Row className='bottom h-100 no-gutters'>\n <Col xs={1} sm={1} md={2}></Col>\n <Col>\n <Row className='h-100 no-gutters'>\n <Col className='my-auto'>\n <h5 className='text-white font-weight-normal text mb-0'>\n Talk To Our Team\n </h5>\n </Col>\n <Col className='my-auto text-center'>\n <Button\n className='button'\n href='https://www.fruition.net.nz/contact-2/'\n >\n CONTACT\n </Button>\n </Col>\n </Row>\n </Col>\n <Col xs={1} sm={1} md={2}></Col>\n </Row>\n </Col>\n </Row>\n </Col>\n </Row>\n </footer>\n );\n}\n\nexport default Footer;\n\n","const Divider = () => <hr className='my-2 w-75' />;\nexport default Divider;\n\n","import { faCog, faHome, faSignOutAlt } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { observer } from 'mobx-react';\nimport React, { Fragment, useContext, useState } from 'react';\nimport { Button, Col, Container, Row } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport { storesContext } from '../../stores/storesContext';\nimport Divider from './Divider';\nimport './header.scss';\n\nconst MobileHeader = ({ hideMobileMenu }) => {\n const userStore = useContext(storesContext);\n const [open, setOpen] = useState(false);\n\n return (\n <header\n id='js-header'\n className={`header-mobile header ${\n !userStore.loggedIn || userStore.currentSeasonIsSelected\n ? 'bg-fruition'\n : 'bg-secondary'\n }`}\n style={{ height: 60 }}\n >\n <Container fluid className='header_inner'>\n <Row className='header_logo ml-1'>\n <Col className='p-0'>\n <Link className='d-block' to='/'>\n <img\n className='w-100'\n src='https://fruition-metwatch-assets.s3-ap-southeast-2.amazonaws.com/fruition-logo.png'\n alt='Fruition Portal'\n />\n </Link>\n </Col>\n </Row>\n <Row className='m-0'>\n <Col className='p-0'>\n {!hideMobileMenu && userStore.loggedIn ? (\n <>\n <Button\n variant='link'\n className='menu-toggle js-menu-toggle'\n onClick={() => setOpen(true)}\n >\n <span className='sr-only'>Open mobile menu</span>\n <span aria-hidden='true'>\n <svg\n width='34'\n height='25'\n viewBox='0 0 34 25'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M0 1C0 0.447754 0.447754 0 1 0H33C33.5522 0 34 0.447754 34 1V4C34 4.55225 33.5522 5 33 5H1C0.447754 5 0 4.55225 0 4V1ZM0 11C0 10.4478 0.447754 10 1 10H33C33.5522 10 34 10.4478 34 11V14C34 14.5522 33.5522 15 33 15H1C0.447754 15 0 14.5522 0 14V11ZM1 20C0.447754 20 0 20.4478 0 21V24C0 24.5522 0.447754 25 1 25H33C33.5522 25 34 24.5522 34 24V21C34 20.4478 33.5522 20 33 20H1Z'\n fill='white'\n />\n </svg>\n </span>\n </Button>\n <nav\n className='mobile-menu'\n role='menuitem'\n aria-expanded={open}\n >\n <Row className='d-flex flex-column justify-content-between mx-0'>\n <Col className='p-0 m-0'>\n <div className='mobile-menu-header'>\n <Link\n className='ml-2'\n to='/'\n onClick={() => setOpen(false)}\n >\n <FontAwesomeIcon icon={faHome} /> Dashboard\n </Link>\n <Button\n variant='link'\n className='menu-close js-menu-toggle mr-2'\n onClick={() => setOpen(false)}\n >\n <span className='sr-only'>Close mobile menu</span>\n <span>\n <svg\n className='mb-2'\n width='26'\n height='26'\n viewBox='0 0 26 26'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <path\n d='M3.48746 -9.84054e-07L13.0142 9.53333L22.5125 0.0577776L26 3.49556L16.5016 13L26 22.5044L22.5125 25.9422L13.0142 16.4667L3.48746 26L2.25308e-07 22.5622L9.55507 13L1.06126e-06 3.43778L3.48746 -9.84054e-07Z'\n fill='white'\n />\n </svg>\n </span>\n </Button>\n </div>\n\n <Fragment>\n {userStore.isAdmin && (\n <ul className='mobile-menu-group'>\n <li className='menu-item-title'>Management</li>\n <li>\n <Link\n to='/management/users'\n onClick={() => setOpen(false)}\n >\n Users\n </Link>\n </li>\n <li>\n <Link\n to='/management/properties'\n onClick={() => setOpen(false)}\n >\n Properties\n </Link>\n </li>\n <li>\n <Link\n to='/management/property-groups'\n onClick={() => setOpen(false)}\n >\n Property Groups\n </Link>\n </li>\n </ul>\n )}\n\n <ul className='mobile-menu-group'>\n <li className='menu-item-title'>Soil & Water</li>\n <li>\n <a\n href='https://www.fruitionhort.com/soil-water'\n target='new'\n >\n Information\n </a>\n </li>\n <li>\n <Link\n to='/soil-water/monitoring'\n onClick={() => setOpen(false)}\n >\n Monitoring\n </Link>\n </li>\n <li>\n <Link\n to='/soil-water/seasonal-summary-report'\n onClick={() => setOpen(false)}\n >\n Seasonal Summary Report\n </Link>\n </li>\n {userStore.isAdmin && (\n <>\n <Divider />\n <li>\n <a\n href={`${process.env.REACT_APP_TERRAPROBE_API_URL}`}\n target='new'\n >\n Terraprobe\n </a>\n </li>\n </>\n )}\n </ul>\n\n <ul className='mobile-menu-group'>\n <li className='menu-item-title'>Pomology</li>\n <li>\n <a\n href='https://www.fruitionhort.com/pomology'\n target='new'\n >\n Information\n </a>\n </li>\n </ul>\n <ul className='mobile-menu-group'>\n <li className='menu-item-title'>Precision Hort</li>\n <li>\n <a\n href='https://www.fruitionhort.com/precision-hort'\n target='new'\n >\n Information\n </a>\n </li>\n <li>\n <Link\n to='/precision-hort/block-scanning-reports'\n onClick={() => setOpen(false)}\n >\n Block Scanning Reports\n </Link>\n </li>\n {userStore.isAdmin && (\n <>\n <Divider />\n <li>\n <Link\n to='/precision-hort/block-scanning/upload'\n onClick={() => setOpen(false)}\n >\n Block Scanning Upload\n </Link>\n </li>\n <li>\n <Link\n to='/precision-hort/ga-viewer-upload'\n onClick={() => setOpen(false)}\n >\n Green Atlas Bundle Upload\n </Link>\n </li>\n </>\n )}\n </ul>\n <ul className='mobile-menu-group'>\n <li className='menu-item-title'>Pest & Disease</li>\n <li>\n <a\n href='https://www.fruitionhort.com/pest-disease'\n target='new'\n >\n Information\n </a>\n </li>\n <li>\n <Link\n to='/pest-disease/trapping-overview'\n onClick={() => setOpen(false)}\n >\n Trapping Overview\n </Link>\n </li>\n <li>\n <Link\n to='/pest-disease/hot-trap-map'\n onClick={() => setOpen(false)}\n >\n Hot Trap Map\n </Link>\n </li>\n <li>\n <Link\n to='/pest-disease/seasonal-trapping-report'\n onClick={() => setOpen(false)}\n >\n Season Overview\n </Link>\n </li>\n {/* <li>\n <Link\n to='/pest-disease/field-reports'\n onClick={() => setOpen(false)}\n >\n Field Reports\n </Link>\n </li> */}\n {userStore.isAdmin && (\n <>\n <Divider />\n <li>\n <Link\n to='/pest-disease/trapping-data-entry'\n onClick={() => setOpen(false)}\n >\n Trapping Data Entry\n </Link>\n </li>\n <li>\n <Link\n to='/pest-disease/trapping-runs'\n onClick={() => setOpen(false)}\n >\n Trapping Runs\n </Link>\n </li>\n <li>\n <Link\n to='/pest-disease/weekly-trapping-report'\n onClick={() => setOpen(false)}\n >\n Weekly Trapping Report\n </Link>\n </li>\n <li>\n <Link\n to='/pest-disease/missing-trapping-report'\n onClick={() => setOpen(false)}\n >\n Missing Trapping Report\n </Link>\n </li>\n </>\n )}\n </ul>\n </Fragment>\n </Col>\n </Row>\n <Row className='d-flex flex-column justify-content-between mx-0'>\n <Col className='mobile-menu-tools p-3'>\n <Link\n className='text-center p-2'\n to='/account#mobile-menu-toggle'\n onClick={() => setOpen(false)}\n >\n <FontAwesomeIcon icon={faCog} />\n <br />\n Account\n </Link>\n <Button\n variant='link'\n className='text-center text-light'\n onClick={() => {\n userStore.logout();\n setOpen(false);\n }}\n >\n <FontAwesomeIcon icon={faSignOutAlt} />\n <br />\n Logout\n </Button>\n </Col>\n </Row>\n </nav>\n </>\n ) : null}\n </Col>\n </Row>\n </Container>\n </header>\n );\n};\n\nexport default observer(MobileHeader);\n\n","import { GlobalPropertiesSelect } from '@hortplus/properties-react';\nimport isMobile from 'ismobilejs';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useContext } from 'react';\nimport { Col, Container, Row } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport { storesContext } from '../../stores/storesContext';\nimport GlobalSeasonSelect from '../helpers/GlobalSeasonSelect';\nimport MobileHeader from './MobileHeader';\nimport './header.scss';\n\nfunction Header(props) {\n const userStore = useContext(storesContext);\n\n let title = '';\n if (userStore.user) {\n switch (userStore.user.role.name) {\n default:\n case 'Client':\n title = 'Technical Services';\n break;\n case 'Staff':\n title = 'Staff';\n break;\n }\n }\n\n const displaySeasonSelect =\n userStore.accessArray && userStore.loggedIn && userStore.isAdmin;\n\n return isMobile(window.navigator).any ? (\n <MobileHeader hideMobileMenu={props.hideMobileMenu} />\n ) : (\n <Container\n fluid\n className={`header ${\n !userStore.loggedIn || userStore.currentSeasonIsSelected\n ? 'bg-fruition'\n : 'bg-secondary'\n } `}\n >\n <Row className='header_inner'>\n <Col className='header_logo p-0' xs={3}>\n <div className='header_logo_inner'>\n <Link to='/home'>\n <img\n className='w-100'\n src='https://fruition-metwatch-assets.s3-ap-southeast-2.amazonaws.com/fruition-logo.png'\n alt='Fruition Portal'\n />\n </Link>\n </div>\n </Col>\n <Col className='text-center p-0' xs={5}>\n {window.location.pathname === '/account' ? (\n <Row className='h5 text-light my-0'>\n <Col>{title}</Col>\n </Row>\n ) : (\n <div className='h5 text-light my-0'>{title}</div>\n )}\n </Col>\n <Col className='p-0' xs={4}>\n {window.location.pathname !== '/account' ? (\n <Row className='m-0'>\n {props.usePropertiesSelecter ? (\n <Col xs={displaySeasonSelect ? 7 : 12} className='p-0 pr-1'>\n <GlobalPropertiesSelect\n selectedDatabase={userStore.selectedDatabase}\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refresh}\n propertiesStore={userStore.propertiesStore}\n useRpin\n />\n </Col>\n ) : null}\n {displaySeasonSelect ? (\n <Col\n xs={props.usePropertiesSelecter ? 5 : 12}\n className='p-0 pl-1'\n >\n <GlobalSeasonSelect />\n </Col>\n ) : null}\n </Row>\n ) : null}\n </Col>\n </Row>\n </Container>\n );\n}\n\nHeader.propTypes = {\n usePropertiesSelecter: PropTypes.bool,\n hideMobileMenu: PropTypes.bool\n};\n\nexport default observer(Header);\n\n","var matchesImpl;\n/**\n * Checks if a given element matches a selector.\n * \n * @param node the element\n * @param selector the selector\n */\n\nexport default function matches(node, selector) {\n if (!matchesImpl) {\n var body = document.body;\n var nativeMatch = body.matches || body.matchesSelector || body.webkitMatchesSelector || body.mozMatchesSelector || body.msMatchesSelector;\n\n matchesImpl = function matchesImpl(n, s) {\n return nativeMatch.call(n, s);\n };\n }\n\n return matchesImpl(node, selector);\n}","import useEventListener from './useEventListener';\nimport { useCallback } from 'react';\n\n/**\n * Attaches an event handler outside directly to the `document`,\n * bypassing the react synthetic event system.\n *\n * ```ts\n * useGlobalListener('keydown', (event) => {\n * console.log(event.key)\n * })\n * ```\n *\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useGlobalListener(event, handler, capture) {\n if (capture === void 0) {\n capture = false;\n }\n\n var documentTarget = useCallback(function () {\n return document;\n }, []);\n return useEventListener(documentTarget, event, handler, capture);\n}","import { useEffect } from 'react';\nimport useEventCallback from './useEventCallback';\n\n/**\n * Attaches an event handler outside directly to specified DOM element\n * bypassing the react synthetic event system.\n *\n * @param element The target to listen for events on\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useEventListener(eventTarget, event, listener, capture) {\n if (capture === void 0) {\n capture = false;\n }\n\n var handler = useEventCallback(listener);\n useEffect(function () {\n var target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;\n target.addEventListener(event, handler, capture);\n return function () {\n return target.removeEventListener(event, handler, capture);\n };\n }, [eventTarget]);\n}","import React from 'react';\nvar DropdownContext = /*#__PURE__*/React.createContext(null);\nexport default DropdownContext;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React, { useContext, useRef } from 'react';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport DropdownContext from './DropdownContext';\nimport usePopper from './usePopper';\nimport useRootClose from './useRootClose';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\n\nvar noop = function noop() {};\n/**\n * @memberOf Dropdown\n * @param {object} options\n * @param {boolean} options.flip Automatically adjust the menu `drop` position based on viewport edge detection\n * @param {[number, number]} options.offset Define an offset distance between the Menu and the Toggle\n * @param {boolean} options.show Display the menu manually, ignored in the context of a `Dropdown`\n * @param {boolean} options.usePopper opt in/out of using PopperJS to position menus. When disabled you must position it yourself.\n * @param {string} options.rootCloseEvent The pointer event to listen for when determining \"clicks outside\" the menu for triggering a close.\n * @param {object} options.popperConfig Options passed to the [`usePopper`](/api/usePopper) hook.\n */\n\n\nexport function useDropdownMenu(options) {\n if (options === void 0) {\n options = {};\n }\n\n var context = useContext(DropdownContext);\n\n var _useCallbackRef = useCallbackRef(),\n arrowElement = _useCallbackRef[0],\n attachArrowRef = _useCallbackRef[1];\n\n var hasShownRef = useRef(false);\n var _options = options,\n flip = _options.flip,\n offset = _options.offset,\n rootCloseEvent = _options.rootCloseEvent,\n _options$fixed = _options.fixed,\n fixed = _options$fixed === void 0 ? false : _options$fixed,\n _options$popperConfig = _options.popperConfig,\n popperConfig = _options$popperConfig === void 0 ? {} : _options$popperConfig,\n _options$usePopper = _options.usePopper,\n shouldUsePopper = _options$usePopper === void 0 ? !!context : _options$usePopper;\n var show = (context == null ? void 0 : context.show) == null ? !!options.show : context.show;\n var alignEnd = (context == null ? void 0 : context.alignEnd) == null ? options.alignEnd : context.alignEnd;\n\n if (show && !hasShownRef.current) {\n hasShownRef.current = true;\n }\n\n var handleClose = function handleClose(e) {\n context == null ? void 0 : context.toggle(false, e);\n };\n\n var _ref = context || {},\n drop = _ref.drop,\n setMenu = _ref.setMenu,\n menuElement = _ref.menuElement,\n toggleElement = _ref.toggleElement;\n\n var placement = alignEnd ? 'bottom-end' : 'bottom-start';\n if (drop === 'up') placement = alignEnd ? 'top-end' : 'top-start';else if (drop === 'right') placement = alignEnd ? 'right-end' : 'right-start';else if (drop === 'left') placement = alignEnd ? 'left-end' : 'left-start';\n var popper = usePopper(toggleElement, menuElement, mergeOptionsWithPopperConfig({\n placement: placement,\n enabled: !!(shouldUsePopper && show),\n enableEvents: show,\n offset: offset,\n flip: flip,\n fixed: fixed,\n arrowElement: arrowElement,\n popperConfig: popperConfig\n }));\n\n var menuProps = _extends({\n ref: setMenu || noop,\n 'aria-labelledby': toggleElement == null ? void 0 : toggleElement.id\n }, popper.attributes.popper, {\n style: popper.styles.popper\n });\n\n var metadata = {\n show: show,\n alignEnd: alignEnd,\n hasShown: hasShownRef.current,\n toggle: context == null ? void 0 : context.toggle,\n popper: shouldUsePopper ? popper : null,\n arrowProps: shouldUsePopper ? _extends({\n ref: attachArrowRef\n }, popper.attributes.arrow, {\n style: popper.styles.arrow\n }) : {}\n };\n useRootClose(menuElement, handleClose, {\n clickTrigger: rootCloseEvent,\n disabled: !show\n });\n return [menuProps, metadata];\n}\nvar propTypes = {\n /**\n * A render prop that returns a Menu element. The `props`\n * argument should spread through to **a component that can accept a ref**.\n *\n * @type {Function ({\n * show: boolean,\n * alignEnd: boolean,\n * close: (?SyntheticEvent) => void,\n * placement: Placement,\n * update: () => void,\n * forceUpdate: () => void,\n * props: {\n * ref: (?HTMLElement) => void,\n * style: { [string]: string | number },\n * aria-labelledby: ?string\n * },\n * arrowProps: {\n * ref: (?HTMLElement) => void,\n * style: { [string]: string | number },\n * },\n * }) => React.Element}\n */\n children: PropTypes.func.isRequired,\n\n /**\n * Controls the visible state of the menu, generally this is\n * provided by the parent `Dropdown` component,\n * but may also be specified as a prop directly.\n */\n show: PropTypes.bool,\n\n /**\n * Aligns the dropdown menu to the 'end' of it's placement position.\n * Generally this is provided by the parent `Dropdown` component,\n * but may also be specified as a prop directly.\n */\n alignEnd: PropTypes.bool,\n\n /**\n * Enables the Popper.js `flip` modifier, allowing the Dropdown to\n * automatically adjust it's placement in case of overlap with the viewport or toggle.\n * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n */\n flip: PropTypes.bool,\n usePopper: PropTypes.oneOf([true, false]),\n\n /**\n * A set of popper options and props passed directly to react-popper's Popper component.\n */\n popperConfig: PropTypes.object,\n\n /**\n * Override the default event used by RootCloseWrapper.\n */\n rootCloseEvent: PropTypes.string\n};\nvar defaultProps = {\n usePopper: true\n};\n\n/**\n * Also exported as `<Dropdown.Menu>` from `Dropdown`.\n *\n * @displayName DropdownMenu\n * @memberOf Dropdown\n */\nfunction DropdownMenu(_ref2) {\n var children = _ref2.children,\n options = _objectWithoutPropertiesLoose(_ref2, [\"children\"]);\n\n var _useDropdownMenu = useDropdownMenu(options),\n props = _useDropdownMenu[0],\n meta = _useDropdownMenu[1];\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, meta.hasShown ? children(props, meta) : null);\n}\n\nDropdownMenu.displayName = 'ReactOverlaysDropdownMenu';\nDropdownMenu.propTypes = propTypes;\nDropdownMenu.defaultProps = defaultProps;\n/** @component */\n\nexport default DropdownMenu;","import PropTypes from 'prop-types';\nimport React, { useContext, useCallback } from 'react';\nimport DropdownContext from './DropdownContext';\n\nvar noop = function noop() {};\n/**\n * Wires up Dropdown toggle functionality, returning a set a props to attach\n * to the element that functions as the dropdown toggle (generally a button).\n *\n * @memberOf Dropdown\n */\n\n\nexport function useDropdownToggle() {\n var _ref = useContext(DropdownContext) || {},\n _ref$show = _ref.show,\n show = _ref$show === void 0 ? false : _ref$show,\n _ref$toggle = _ref.toggle,\n toggle = _ref$toggle === void 0 ? noop : _ref$toggle,\n setToggle = _ref.setToggle;\n\n var handleClick = useCallback(function (e) {\n toggle(!show, e);\n }, [show, toggle]);\n return [{\n ref: setToggle || noop,\n onClick: handleClick,\n 'aria-haspopup': true,\n 'aria-expanded': !!show\n }, {\n show: show,\n toggle: toggle\n }];\n}\nvar propTypes = {\n /**\n * A render prop that returns a Toggle element. The `props`\n * argument should spread through to **a component that can accept a ref**. Use\n * the `onToggle` argument to toggle the menu open or closed\n *\n * @type {Function ({\n * show: boolean,\n * toggle: (show: boolean) => void,\n * props: {\n * ref: (?HTMLElement) => void,\n * aria-haspopup: true\n * aria-expanded: boolean\n * },\n * }) => React.Element}\n */\n children: PropTypes.func.isRequired\n};\n\n/**\n * Also exported as `<Dropdown.Toggle>` from `Dropdown`.\n *\n * @displayName DropdownToggle\n * @memberOf Dropdown\n */\nfunction DropdownToggle(_ref2) {\n var children = _ref2.children;\n\n var _useDropdownToggle = useDropdownToggle(),\n props = _useDropdownToggle[0],\n meta = _useDropdownToggle[1];\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, children(props, meta));\n}\n\nDropdownToggle.displayName = 'ReactOverlaysDropdownToggle';\nDropdownToggle.propTypes = propTypes;\n/** @component */\n\nexport default DropdownToggle;","import matches from 'dom-helpers/matches';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport React, { useCallback, useRef, useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useGlobalListener from '@restart/hooks/useGlobalListener';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nvar propTypes = {\n /**\n * A render prop that returns the root dropdown element. The `props`\n * argument should spread through to an element containing _both_ the\n * menu and toggle in order to handle keyboard events for focus management.\n *\n * @type {Function ({\n * props: {\n * onKeyDown: (SyntheticEvent) => void,\n * },\n * }) => React.Element}\n */\n children: PropTypes.node,\n\n /**\n * Determines the direction and location of the Menu in relation to it's Toggle.\n */\n drop: PropTypes.oneOf(['up', 'left', 'right', 'down']),\n\n /**\n * Controls the focus behavior for when the Dropdown is opened. Set to\n * `true` to always focus the first menu item, `keyboard` to focus only when\n * navigating via the keyboard, or `false` to disable completely\n *\n * The Default behavior is `false` **unless** the Menu has a `role=\"menu\"`\n * where it will default to `keyboard` to match the recommended [ARIA Authoring practices](https://www.w3.org/TR/wai-aria-practices-1.1/#menubutton).\n */\n focusFirstItemOnShow: PropTypes.oneOf([false, true, 'keyboard']),\n\n /**\n * A css slector string that will return __focusable__ menu items.\n * Selectors should be relative to the menu component:\n * e.g. ` > li:not('.disabled')`\n */\n itemSelector: PropTypes.string,\n\n /**\n * Align the menu to the 'end' side of the placement side of the Dropdown toggle. The default placement is `top-start` or `bottom-start`.\n */\n alignEnd: PropTypes.bool,\n\n /**\n * Whether or not the Dropdown is visible.\n *\n * @controllable onToggle\n */\n show: PropTypes.bool,\n\n /**\n * Sets the initial show position of the Dropdown.\n */\n defaultShow: PropTypes.bool,\n\n /**\n * A callback fired when the Dropdown wishes to change visibility. Called with the requested\n * `show` value, the DOM event, and the source that fired it: `'click'`,`'keydown'`,`'rootClose'`, or `'select'`.\n *\n * ```ts static\n * function(\n * isOpen: boolean,\n * event: SyntheticEvent,\n * ): void\n * ```\n *\n * @controllable show\n */\n onToggle: PropTypes.func\n};\n\nfunction useRefWithUpdate() {\n var forceUpdate = useForceUpdate();\n var ref = useRef(null);\n var attachRef = useCallback(function (element) {\n ref.current = element; // ensure that a menu set triggers an update for consumers\n\n forceUpdate();\n }, [forceUpdate]);\n return [ref, attachRef];\n}\n/**\n * @displayName Dropdown\n * @public\n */\n\n\nfunction Dropdown(_ref) {\n var drop = _ref.drop,\n alignEnd = _ref.alignEnd,\n defaultShow = _ref.defaultShow,\n rawShow = _ref.show,\n rawOnToggle = _ref.onToggle,\n _ref$itemSelector = _ref.itemSelector,\n itemSelector = _ref$itemSelector === void 0 ? '* > *' : _ref$itemSelector,\n focusFirstItemOnShow = _ref.focusFirstItemOnShow,\n children = _ref.children;\n\n var _useUncontrolledProp = useUncontrolledProp(rawShow, defaultShow, rawOnToggle),\n show = _useUncontrolledProp[0],\n onToggle = _useUncontrolledProp[1]; // We use normal refs instead of useCallbackRef in order to populate the\n // the value as quickly as possible, otherwise the effect to focus the element\n // may run before the state value is set\n\n\n var _useRefWithUpdate = useRefWithUpdate(),\n menuRef = _useRefWithUpdate[0],\n setMenu = _useRefWithUpdate[1];\n\n var menuElement = menuRef.current;\n\n var _useRefWithUpdate2 = useRefWithUpdate(),\n toggleRef = _useRefWithUpdate2[0],\n setToggle = _useRefWithUpdate2[1];\n\n var toggleElement = toggleRef.current;\n var lastShow = usePrevious(show);\n var lastSourceEvent = useRef(null);\n var focusInDropdown = useRef(false);\n var toggle = useCallback(function (nextShow, event) {\n onToggle(nextShow, event);\n }, [onToggle]);\n var context = useMemo(function () {\n return {\n toggle: toggle,\n drop: drop,\n show: show,\n alignEnd: alignEnd,\n menuElement: menuElement,\n toggleElement: toggleElement,\n setMenu: setMenu,\n setToggle: setToggle\n };\n }, [toggle, drop, show, alignEnd, menuElement, toggleElement, setMenu, setToggle]);\n\n if (menuElement && lastShow && !show) {\n focusInDropdown.current = menuElement.contains(document.activeElement);\n }\n\n var focusToggle = useEventCallback(function () {\n if (toggleElement && toggleElement.focus) {\n toggleElement.focus();\n }\n });\n var maybeFocusFirst = useEventCallback(function () {\n var type = lastSourceEvent.current;\n var focusType = focusFirstItemOnShow;\n\n if (focusType == null) {\n focusType = menuRef.current && matches(menuRef.current, '[role=menu]') ? 'keyboard' : false;\n }\n\n if (focusType === false || focusType === 'keyboard' && !/^key.+$/.test(type)) {\n return;\n }\n\n var first = qsa(menuRef.current, itemSelector)[0];\n if (first && first.focus) first.focus();\n });\n useEffect(function () {\n if (show) maybeFocusFirst();else if (focusInDropdown.current) {\n focusInDropdown.current = false;\n focusToggle();\n } // only `show` should be changing\n }, [show, focusInDropdown, focusToggle, maybeFocusFirst]);\n useEffect(function () {\n lastSourceEvent.current = null;\n });\n\n var getNextFocusedChild = function getNextFocusedChild(current, offset) {\n if (!menuRef.current) return null;\n var items = qsa(menuRef.current, itemSelector);\n var index = items.indexOf(current) + offset;\n index = Math.max(0, Math.min(index, items.length));\n return items[index];\n };\n\n useGlobalListener('keydown', function (event) {\n var _menuRef$current, _toggleRef$current;\n\n var key = event.key;\n var target = event.target;\n var fromMenu = (_menuRef$current = menuRef.current) == null ? void 0 : _menuRef$current.contains(target);\n var fromToggle = (_toggleRef$current = toggleRef.current) == null ? void 0 : _toggleRef$current.contains(target); // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\n // in inscrutability\n\n var isInput = /input|textarea/i.test(target.tagName);\n\n if (isInput && (key === ' ' || key !== 'Escape' && fromMenu)) {\n return;\n }\n\n if (!fromMenu && !fromToggle) {\n return;\n }\n\n if (!menuRef.current && key === 'Tab') {\n return;\n }\n\n lastSourceEvent.current = event.type;\n\n switch (key) {\n case 'ArrowUp':\n {\n var next = getNextFocusedChild(target, -1);\n if (next && next.focus) next.focus();\n event.preventDefault();\n return;\n }\n\n case 'ArrowDown':\n event.preventDefault();\n\n if (!show) {\n onToggle(true, event);\n } else {\n var _next = getNextFocusedChild(target, 1);\n\n if (_next && _next.focus) _next.focus();\n }\n\n return;\n\n case 'Tab':\n // on keydown the target is the element being tabbed FROM, we need that\n // to know if this event is relevant to this dropdown (e.g. in this menu).\n // On `keyup` the target is the element being tagged TO which we use to check\n // if focus has left the menu\n addEventListener(document, 'keyup', function (e) {\n var _menuRef$current2;\n\n if (e.key === 'Tab' && !e.target || !((_menuRef$current2 = menuRef.current) != null && _menuRef$current2.contains(e.target))) {\n onToggle(false, event);\n }\n }, {\n once: true\n });\n break;\n\n case 'Escape':\n event.preventDefault();\n event.stopPropagation();\n onToggle(false, event);\n break;\n\n default:\n }\n });\n return /*#__PURE__*/React.createElement(DropdownContext.Provider, {\n value: context\n }, children);\n}\n\nDropdown.displayName = 'ReactOverlaysDropdown';\nDropdown.propTypes = propTypes;\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nexport default Dropdown;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"eventKey\", \"disabled\", \"href\", \"onClick\", \"onSelect\", \"active\", \"as\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavContext from './NavContext';\nimport SafeAnchor from './SafeAnchor';\nvar defaultProps = {\n as: SafeAnchor,\n disabled: false\n};\nvar DropdownItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n eventKey = _ref.eventKey,\n disabled = _ref.disabled,\n href = _ref.href,\n onClick = _ref.onClick,\n onSelect = _ref.onSelect,\n propActive = _ref.active,\n Component = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-item');\n var onSelectCtx = useContext(SelectableContext);\n var navContext = useContext(NavContext);\n\n var _ref2 = navContext || {},\n activeKey = _ref2.activeKey;\n\n var key = makeEventKey(eventKey, href);\n var active = propActive == null && key != null ? makeEventKey(activeKey) === key : propActive;\n var handleClick = useEventCallback(function (event) {\n // SafeAnchor handles the disabled case, but we handle it here\n // for other components\n if (disabled) return;\n if (onClick) onClick(event);\n if (onSelectCtx) onSelectCtx(key, event);\n if (onSelect) onSelect(key, event);\n });\n return (\n /*#__PURE__*/\n // \"TS2604: JSX element type 'Component' does not have any construct or call signatures.\"\n // @ts-ignore\n React.createElement(Component, _extends({}, props, {\n ref: ref,\n href: href,\n disabled: disabled,\n className: classNames(className, prefix, active && 'active', disabled && 'disabled'),\n onClick: handleClick\n }), children)\n );\n});\nDropdownItem.displayName = 'DropdownItem';\nDropdownItem.defaultProps = defaultProps;\nexport default DropdownItem;","import invariant from 'invariant';\nimport { useCallback } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nexport default function useWrappedRefWithWarning(ref, componentName) {\n // @ts-ignore\n if (!(process.env.NODE_ENV !== \"production\")) return ref; // eslint-disable-next-line react-hooks/rules-of-hooks\n\n var warningRef = useCallback(function (refValue) {\n !(refValue == null || !refValue.isReactComponent) ? process.env.NODE_ENV !== \"production\" ? invariant(false, componentName + \" injected a ref to a provided `as` component that resolved to a component instance instead of a DOM element. \" + 'Use `React.forwardRef` to provide the injected ref to the class component as a prop in order to pass it directly to a DOM element') : invariant(false) : void 0;\n }, [componentName]); // eslint-disable-next-line react-hooks/rules-of-hooks\n\n return useMergedRefs(warningRef, ref);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"align\", \"alignRight\", \"rootCloseEvent\", \"flip\", \"show\", \"renderOnMount\", \"as\", \"popperConfig\"];\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { useContext } from 'react';\nimport { useDropdownMenu } from 'react-overlays/DropdownMenu';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport warning from 'warning';\nimport NavbarContext from './NavbarContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport usePopperMarginModifiers from './usePopperMarginModifiers';\nvar alignDirection = PropTypes.oneOf(['left', 'right']);\nexport var alignPropType = PropTypes.oneOfType([alignDirection, PropTypes.shape({\n sm: alignDirection\n}), PropTypes.shape({\n md: alignDirection\n}), PropTypes.shape({\n lg: alignDirection\n}), PropTypes.shape({\n xl: alignDirection\n})]);\nvar defaultProps = {\n align: 'left',\n alignRight: false,\n flip: true\n};\nvar DropdownMenu = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n align = _ref.align,\n alignRight = _ref.alignRight,\n rootCloseEvent = _ref.rootCloseEvent,\n flip = _ref.flip,\n showProps = _ref.show,\n renderOnMount = _ref.renderOnMount,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n popperConfig = _ref.popperConfig,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var isNavbar = useContext(NavbarContext);\n var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-menu');\n\n var _usePopperMarginModif = usePopperMarginModifiers(),\n popperRef = _usePopperMarginModif[0],\n marginModifiers = _usePopperMarginModif[1];\n\n var alignClasses = [];\n\n if (align) {\n if (typeof align === 'object') {\n var keys = Object.keys(align);\n process.env.NODE_ENV !== \"production\" ? warning(keys.length === 1, 'There should only be 1 breakpoint when passing an object to `align`') : void 0;\n\n if (keys.length) {\n var brkPoint = keys[0];\n var direction = align[brkPoint]; // .dropdown-menu-right is required for responsively aligning\n // left in addition to align left classes.\n // Reuse alignRight to toggle the class below.\n\n alignRight = direction === 'left';\n alignClasses.push(prefix + \"-\" + brkPoint + \"-\" + direction);\n }\n } else if (align === 'right') {\n alignRight = true;\n }\n }\n\n var _useDropdownMenu = useDropdownMenu({\n flip: flip,\n rootCloseEvent: rootCloseEvent,\n show: showProps,\n alignEnd: alignRight,\n usePopper: !isNavbar && alignClasses.length === 0,\n popperConfig: _extends({}, popperConfig, {\n modifiers: marginModifiers.concat((popperConfig == null ? void 0 : popperConfig.modifiers) || [])\n })\n }),\n menuProps = _useDropdownMenu[0],\n _useDropdownMenu$ = _useDropdownMenu[1],\n hasShown = _useDropdownMenu$.hasShown,\n popper = _useDropdownMenu$.popper,\n show = _useDropdownMenu$.show,\n alignEnd = _useDropdownMenu$.alignEnd,\n toggle = _useDropdownMenu$.toggle;\n\n menuProps.ref = useMergedRefs(popperRef, useMergedRefs(useWrappedRefWithWarning(ref, 'DropdownMenu'), menuProps.ref));\n if (!hasShown && !renderOnMount) return null; // For custom components provide additional, non-DOM, props;\n\n if (typeof Component !== 'string') {\n menuProps.show = show;\n\n menuProps.close = function () {\n return toggle == null ? void 0 : toggle(false);\n };\n\n menuProps.alignRight = alignEnd;\n }\n\n var style = props.style;\n\n if (popper != null && popper.placement) {\n // we don't need the default popper style,\n // menus are display: none when not shown.\n style = _extends({}, props.style, menuProps.style);\n props['x-placement'] = popper.placement;\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, menuProps, {\n style: style,\n className: classNames.apply(void 0, [className, prefix, show && 'show', alignEnd && prefix + \"-right\"].concat(alignClasses))\n }));\n});\nDropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu.defaultProps = defaultProps;\nexport default DropdownMenu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"split\", \"className\", \"childBsPrefix\", \"as\"];\nimport classNames from 'classnames';\nimport isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';\nimport React from 'react';\nimport { useDropdownToggle } from 'react-overlays/DropdownToggle';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport Button from './Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nvar DropdownToggle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n split = _ref.split,\n className = _ref.className,\n childBsPrefix = _ref.childBsPrefix,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? Button : _ref$as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-toggle');\n\n if (childBsPrefix !== undefined) {\n props.bsPrefix = childBsPrefix;\n }\n\n var _useDropdownToggle = useDropdownToggle(),\n toggleProps = _useDropdownToggle[0];\n\n toggleProps.ref = useMergedRefs(toggleProps.ref, useWrappedRefWithWarning(ref, 'DropdownToggle')); // This intentionally forwards size and variant (if set) to the\n // underlying component, to allow it to render size and style variants.\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(className, prefix, split && prefix + \"-split\")\n }, toggleProps, props));\n});\nDropdownToggle.displayName = 'DropdownToggle';\nexport default DropdownToggle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"drop\", \"show\", \"className\", \"alignRight\", \"onSelect\", \"onToggle\", \"focusFirstItemOnShow\", \"as\", \"navbar\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport BaseDropdown from 'react-overlays/Dropdown';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownItem from './DropdownItem';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nimport SelectableContext from './SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nvar DropdownHeader = createWithBsPrefix('dropdown-header', {\n defaultProps: {\n role: 'heading'\n }\n});\nvar DropdownDivider = createWithBsPrefix('dropdown-divider', {\n defaultProps: {\n role: 'separator'\n }\n});\nvar DropdownItemText = createWithBsPrefix('dropdown-item-text', {\n Component: 'span'\n});\nvar defaultProps = {\n navbar: false\n};\nvar Dropdown = /*#__PURE__*/React.forwardRef(function (pProps, ref) {\n var _useUncontrolled = useUncontrolled(pProps, {\n show: 'onToggle'\n }),\n bsPrefix = _useUncontrolled.bsPrefix,\n drop = _useUncontrolled.drop,\n show = _useUncontrolled.show,\n className = _useUncontrolled.className,\n alignRight = _useUncontrolled.alignRight,\n onSelect = _useUncontrolled.onSelect,\n onToggle = _useUncontrolled.onToggle,\n focusFirstItemOnShow = _useUncontrolled.focusFirstItemOnShow,\n _useUncontrolled$as = _useUncontrolled.as,\n Component = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n _4 = _useUncontrolled.navbar,\n props = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var onSelectCtx = useContext(SelectableContext);\n var prefix = useBootstrapPrefix(bsPrefix, 'dropdown');\n var handleToggle = useEventCallback(function (nextShow, event, source) {\n if (source === void 0) {\n source = event.type;\n }\n\n if (event.currentTarget === document && (source !== 'keydown' || event.key === 'Escape')) source = 'rootClose';\n\n if (onToggle) {\n onToggle(nextShow, event, {\n source: source\n });\n }\n });\n var handleSelect = useEventCallback(function (key, event) {\n if (onSelectCtx) onSelectCtx(key, event);\n if (onSelect) onSelect(key, event);\n handleToggle(false, event, 'select');\n });\n return /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n value: handleSelect\n }, /*#__PURE__*/React.createElement(BaseDropdown, {\n drop: drop,\n show: show,\n alignEnd: alignRight,\n onToggle: handleToggle,\n focusFirstItemOnShow: focusFirstItemOnShow,\n itemSelector: \".\" + prefix + \"-item:not(.disabled):not(:disabled)\"\n }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, show && 'show', (!drop || drop === 'down') && prefix, drop === 'up' && 'dropup', drop === 'right' && 'dropright', drop === 'left' && 'dropleft')\n }))));\n});\nDropdown.displayName = 'Dropdown';\nDropdown.defaultProps = defaultProps;\nDropdown.Divider = DropdownDivider;\nDropdown.Header = DropdownHeader;\nDropdown.Item = DropdownItem;\nDropdown.ItemText = DropdownItemText;\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nexport default Dropdown;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"id\", \"title\", \"children\", \"bsPrefix\", \"className\", \"rootCloseEvent\", \"menuRole\", \"disabled\", \"active\", \"renderMenuOnMount\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Dropdown from './Dropdown';\nimport NavLink from './NavLink';\nvar NavDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var id = _ref.id,\n title = _ref.title,\n children = _ref.children,\n bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n rootCloseEvent = _ref.rootCloseEvent,\n menuRole = _ref.menuRole,\n disabled = _ref.disabled,\n active = _ref.active,\n renderMenuOnMount = _ref.renderMenuOnMount,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n /* NavItem has no additional logic, it's purely presentational. Can set nav item class here to support \"as\" */\n var navItemPrefix = useBootstrapPrefix(undefined, 'nav-item');\n return /*#__PURE__*/React.createElement(Dropdown, _extends({\n ref: ref\n }, props, {\n className: classNames(className, navItemPrefix)\n }), /*#__PURE__*/React.createElement(Dropdown.Toggle, {\n id: id,\n eventKey: null,\n active: active,\n disabled: disabled,\n childBsPrefix: bsPrefix,\n as: NavLink\n }, title), /*#__PURE__*/React.createElement(Dropdown.Menu, {\n role: menuRole,\n renderOnMount: renderMenuOnMount,\n rootCloseEvent: rootCloseEvent\n }, children));\n});\nNavDropdown.displayName = 'NavDropdown';\nNavDropdown.Item = Dropdown.Item;\nNavDropdown.ItemText = Dropdown.ItemText;\nNavDropdown.Divider = Dropdown.Divider;\nNavDropdown.Header = Dropdown.Header;\nexport default NavDropdown;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"as\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar NavbarBrand = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n as = _ref.as,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-brand');\n var Component = as || (props.href ? 'a' : 'span');\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n className: classNames(className, bsPrefix)\n }));\n});\nNavbarBrand.displayName = 'NavbarBrand';\nexport default NavbarBrand;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"bsPrefix\"];\nimport React from 'react';\nimport Collapse from './Collapse';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nvar NavbarCollapse = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var children = _ref.children,\n bsPrefix = _ref.bsPrefix,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-collapse');\n return /*#__PURE__*/React.createElement(NavbarContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(Collapse, _extends({\n in: !!(context && context.expanded)\n }, props), /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n className: bsPrefix\n }, children));\n });\n});\nNavbarCollapse.displayName = 'NavbarCollapse';\nexport default NavbarCollapse;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"children\", \"label\", \"as\", \"onClick\"];\nimport classNames from 'classnames';\nimport React, { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nvar defaultProps = {\n label: 'Toggle navigation'\n};\nvar NavbarToggle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n label = _ref.label,\n _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'button' : _ref$as,\n onClick = _ref.onClick,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');\n\n var _ref2 = useContext(NavbarContext) || {},\n onToggle = _ref2.onToggle,\n expanded = _ref2.expanded;\n\n var handleClick = useEventCallback(function (e) {\n if (onClick) onClick(e);\n if (onToggle) onToggle();\n });\n\n if (Component === 'button') {\n props.type = 'button';\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n ref: ref,\n onClick: handleClick,\n \"aria-label\": label,\n className: classNames(className, bsPrefix, !expanded && 'collapsed')\n }), children || /*#__PURE__*/React.createElement(\"span\", {\n className: bsPrefix + \"-icon\"\n }));\n});\nNavbarToggle.displayName = 'NavbarToggle';\nNavbarToggle.defaultProps = defaultProps;\nexport default NavbarToggle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"expand\", \"variant\", \"bg\", \"fixed\", \"sticky\", \"className\", \"children\", \"as\", \"expanded\", \"onToggle\", \"onSelect\", \"collapseOnSelect\"];\nimport classNames from 'classnames';\nimport React, { useCallback, useMemo } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport NavbarBrand from './NavbarBrand';\nimport NavbarCollapse from './NavbarCollapse';\nimport NavbarToggle from './NavbarToggle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport SelectableContext from './SelectableContext';\nvar NavbarText = createWithBsPrefix('navbar-text', {\n Component: 'span'\n});\nvar defaultProps = {\n expand: true,\n variant: 'light',\n collapseOnSelect: false\n};\nvar Navbar = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _useUncontrolled = useUncontrolled(props, {\n expanded: 'onToggle'\n }),\n initialBsPrefix = _useUncontrolled.bsPrefix,\n expand = _useUncontrolled.expand,\n variant = _useUncontrolled.variant,\n bg = _useUncontrolled.bg,\n fixed = _useUncontrolled.fixed,\n sticky = _useUncontrolled.sticky,\n className = _useUncontrolled.className,\n children = _useUncontrolled.children,\n _useUncontrolled$as = _useUncontrolled.as,\n Component = _useUncontrolled$as === void 0 ? 'nav' : _useUncontrolled$as,\n expanded = _useUncontrolled.expanded,\n _onToggle = _useUncontrolled.onToggle,\n onSelect = _useUncontrolled.onSelect,\n collapseOnSelect = _useUncontrolled.collapseOnSelect,\n controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, _excluded);\n\n var bsPrefix = useBootstrapPrefix(initialBsPrefix, 'navbar');\n var handleCollapse = useCallback(function () {\n if (onSelect) onSelect.apply(void 0, arguments);\n\n if (collapseOnSelect && expanded) {\n if (_onToggle) {\n _onToggle(false);\n }\n }\n }, [onSelect, collapseOnSelect, expanded, _onToggle]); // will result in some false positives but that seems better\n // than false negatives. strict `undefined` check allows explicit\n // \"nulling\" of the role if the user really doesn't want one\n\n if (controlledProps.role === undefined && Component !== 'nav') {\n controlledProps.role = 'navigation';\n }\n\n var expandClass = bsPrefix + \"-expand\";\n if (typeof expand === 'string') expandClass = expandClass + \"-\" + expand;\n var navbarContext = useMemo(function () {\n return {\n onToggle: function onToggle() {\n return _onToggle && _onToggle(!expanded);\n },\n bsPrefix: bsPrefix,\n expanded: !!expanded\n };\n }, [bsPrefix, expanded, _onToggle]);\n return /*#__PURE__*/React.createElement(NavbarContext.Provider, {\n value: navbarContext\n }, /*#__PURE__*/React.createElement(SelectableContext.Provider, {\n value: handleCollapse\n }, /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, controlledProps, {\n className: classNames(className, bsPrefix, expand && expandClass, variant && bsPrefix + \"-\" + variant, bg && \"bg-\" + bg, sticky && \"sticky-\" + sticky, fixed && \"fixed-\" + fixed)\n }), children)));\n});\nNavbar.defaultProps = defaultProps;\nNavbar.displayName = 'Navbar';\nNavbar.Brand = NavbarBrand;\nNavbar.Toggle = NavbarToggle;\nNavbar.Collapse = NavbarCollapse;\nNavbar.Text = NavbarText;\nexport default Navbar;","import {\n faArrowUpRightFromSquare,\n faCog,\n faHome\n} from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useContext, useEffect, useState } from 'react';\nimport { Navbar as BootstrapNavbar, Nav, NavDropdown } from 'react-bootstrap';\nimport { Link, useLocation } from 'react-router-dom';\nimport { storesContext } from '../../stores/storesContext';\nimport './mobile-menu.css';\nimport './navbar.scss';\n\nfunction NavLink(props) {\n if (props.useRegularLinks) {\n return (\n <Nav.Link href={props.to} className={props.active ? 'active' : ''}>\n {props.children}\n </Nav.Link>\n );\n } else {\n return (\n <Nav.Link\n as={Link}\n to={props.to}\n className={props.active ? 'active' : ''}\n >\n {props.children}\n </Nav.Link>\n );\n }\n}\n\nNavLink.propTypes = {\n to: PropTypes.string.isRequired,\n useRegularLinks: PropTypes.bool,\n active: PropTypes.bool\n};\n\nfunction NavDropDownItem(props) {\n if (props.useRegularLinks) {\n return (\n <NavDropdown.Item href={props.to}>{props.children}</NavDropdown.Item>\n );\n } else {\n return (\n <NavDropdown.Item as={Link} to={props.to}>\n {props.children}\n </NavDropdown.Item>\n );\n }\n}\n\nNavDropDownItem.propTypes = {\n to: PropTypes.string.isRequired,\n useRegularLinks: PropTypes.bool\n};\n\nfunction Navbar(props) {\n const userStore = useContext(storesContext);\n const [activeMenuItem, setActiveMenuItem] = useState('');\n\n const location = useLocation();\n\n useEffect(() => {\n const items = [\n {\n name: 'management',\n regex: '/users*'\n },\n {\n name: 'management',\n regex: '/properties*'\n },\n {\n name: 'management',\n regex: '/property-groups*'\n },\n {\n name: 'soil-water',\n regex: '/monitoring'\n },\n {\n name: 'soil-water',\n regex: '/seasonal-summary-report'\n },\n {\n name: 'soil-water',\n regex: '/reports'\n },\n {\n name: 'pomology',\n regex: '/calculators'\n },\n {\n name: 'precision-hort',\n regex: '/reports'\n },\n {\n name: 'precision-hort',\n regex: '/block-scanning/upload'\n },\n {\n name: 'precision-hort',\n regex: '/block-scanning-reports'\n },\n {\n name: 'pest-disease',\n regex: '/trapping-overview'\n },\n {\n name: 'pest-disease',\n regex: '/hot-trap-map'\n },\n {\n name: 'pest-disease',\n regex: '/seasonal-trapping-report'\n },\n {\n name: 'pest-disease',\n regex: '/field-reports'\n },\n {\n name: 'pest-disease',\n regex: '/trapping-data-entry'\n },\n {\n name: 'pest-disease',\n regex: '/trapping-runs'\n },\n {\n name: 'pest-disease',\n regex: '/weekly-trapping-report'\n },\n {\n name: 'pest-disease',\n regex: '/missing-trapping-report'\n },\n {\n name: 'account',\n regex: '/account*'\n },\n {\n name: 'account',\n regex: '/change-password'\n },\n {\n name: 'dashboard',\n regex: '/*'\n }\n ];\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const regExp = new RegExp(item.regex);\n if (regExp.test(location.pathname)) {\n setActiveMenuItem(item.name);\n break;\n }\n }\n }, [location]);\n\n // Admin navbar\n return userStore.loggedIn ? (\n <BootstrapNavbar bg='light' expand='md' className='p-0'>\n <BootstrapNavbar.Toggle aria-controls='basic-navbar-nav' />\n <BootstrapNavbar.Collapse id='basic-navbar-nav'>\n <Nav className='m-auto'>\n <NavLink\n to='/'\n active={activeMenuItem === 'dashboard'}\n useRegularLinks={props.useRegularLinks}\n >\n <FontAwesomeIcon icon={faHome} /> Dashboard\n </NavLink>\n\n {/* Management Menu */}\n {userStore.isAdmin && (\n <NavDropdown\n title={<Fragment>Management</Fragment>}\n className={activeMenuItem === 'management' ? 'active' : ''}\n >\n <NavDropDownItem\n to='/management/users'\n active={activeMenuItem === 'users'}\n useRegularLinks={props.useRegularLinks}\n >\n Users\n </NavDropDownItem>\n <NavDropDownItem\n to='/management/properties'\n useRegularLinks={props.useRegularLinks}\n >\n Properties\n </NavDropDownItem>\n <NavDropDownItem\n to='/management/property-groups'\n useRegularLinks={props.useRegularLinks}\n >\n Property Groups\n </NavDropDownItem>\n </NavDropdown>\n )}\n\n {/* Soil & Water Menu */}\n <NavDropdown\n title={<Fragment>Soil & Water</Fragment>}\n className={activeMenuItem === 'soil-water' ? 'active' : ''}\n >\n <NavDropdown.Item\n href='https://www.fruitionhort.com/soil-water'\n target='new'\n active={false}\n >\n Information{' '}\n <FontAwesomeIcon icon={faArrowUpRightFromSquare} size='sm' />\n </NavDropdown.Item>\n <NavDropDownItem\n to='/soil-water/monitoring'\n useRegularLinks={props.useRegularLinks}\n >\n Monitoring\n </NavDropDownItem>\n <NavDropDownItem\n to='/soil-water/seasonal-summary-report'\n useRegularLinks={props.useRegularLinks}\n >\n Seasonal Summary Report\n </NavDropDownItem>\n {/* <NavDropDownItem\n to='/soil-water/reports'\n useRegularLinks={props.useRegularLinks}\n >\n Reports\n </NavDropDownItem> */}\n\n {userStore.isAdmin && (\n <>\n <NavDropdown.Divider />\n <NavDropdown.Item\n href={`${process.env.REACT_APP_TERRAPROBE_API_URL}`}\n target='new'\n active={false}\n >\n Terraprobe{' '}\n <FontAwesomeIcon icon={faArrowUpRightFromSquare} size='sm' />\n </NavDropdown.Item>\n </>\n )}\n </NavDropdown>\n\n {/* Pomology Menu */}\n <NavDropdown\n title={<Fragment>Pomology</Fragment>}\n className={activeMenuItem === 'pomology' ? 'active' : ''}\n >\n <NavDropdown.Item\n href='https://www.fruitionhort.com/pomology'\n target='new'\n active={false}\n >\n Information{' '}\n <FontAwesomeIcon icon={faArrowUpRightFromSquare} size='sm' />\n </NavDropdown.Item>\n {/* <NavDropDownItem\n to='/pomology/calculators'\n useRegularLinks={props.useRegularLinks}\n >\n Calculators\n </NavDropDownItem> */}\n </NavDropdown>\n\n {/* Precision Hort Menu */}\n <NavDropdown\n title={<Fragment>Precision Hort</Fragment>}\n className={activeMenuItem === 'precision-hort' ? 'active' : ''}\n >\n <NavDropdown.Item\n href='https://www.fruitionhort.com/precision-hort'\n target='new'\n active={false}\n >\n Information{' '}\n <FontAwesomeIcon icon={faArrowUpRightFromSquare} size='sm' />\n </NavDropdown.Item>\n <NavDropDownItem\n to='/precision-hort/block-scanning-reports'\n active={activeMenuItem === 'precision-hort'}\n useRegularLinks={props.useRegularLinks}\n >\n Block Scanning Reports\n </NavDropDownItem>\n {/* <NavDropDownItem\n to='/precision-hort/calculators'\n useRegularLinks={props.useRegularLinks}\n >\n Calculators\n </NavDropDownItem> */}\n {userStore.isAdmin && (\n <>\n <NavDropdown.Divider />\n <NavDropDownItem\n to='/precision-hort/block-scanning/upload'\n active={activeMenuItem === 'precision-hort'}\n useRegularLinks={props.useRegularLinks}\n >\n Block Scanning Upload\n </NavDropDownItem>\n <NavDropDownItem\n to='/precision-hort/ga-viewer-upload'\n active={activeMenuItem === 'precision-hort'}\n useRegularLinks={props.useRegularLinks}\n >\n Green Atlas Bundle Upload\n </NavDropDownItem>\n </>\n )}\n </NavDropdown>\n\n {/* Pest & Disease Menu */}\n <NavDropdown\n title={<Fragment>Pest & Disease</Fragment>}\n className={activeMenuItem === 'pest-disease' ? 'active' : ''}\n >\n <NavDropdown.Item\n href='https://www.fruitionhort.com/pest-disease'\n target='new'\n active={false}\n >\n Information{' '}\n <FontAwesomeIcon icon={faArrowUpRightFromSquare} size='sm' />\n </NavDropdown.Item>\n <NavDropDownItem\n to='/pest-disease/trapping-overview'\n useRegularLinks={props.useRegularLinks}\n >\n Trapping Overview\n </NavDropDownItem>\n <NavDropDownItem\n to='/pest-disease/hot-trap-map'\n useRegularLinks={props.useRegularLinks}\n >\n Hot Trap Map\n </NavDropDownItem>\n <NavDropDownItem\n to='/pest-disease/seasonal-trapping-report'\n useRegularLinks={props.useRegularLinks}\n >\n Season Overview\n </NavDropDownItem>\n {/* <NavDropDownItem\n to='/pest-disease/field-reports'\n useRegularLinks={props.useRegularLinks}\n >\n Field Reports\n </NavDropDownItem> */}\n {userStore.isAdmin && (\n <>\n <NavDropdown.Divider />\n <NavDropDownItem\n to='/pest-disease/trapping-data-entry'\n useRegularLinks={props.useRegularLinks}\n >\n Trapping Data Entry\n </NavDropDownItem>\n <NavDropDownItem\n to='/pest-disease/trapping-runs'\n useRegularLinks={props.useRegularLinks}\n >\n Trapping Runs\n </NavDropDownItem>\n <NavDropDownItem\n to='/pest-disease/weekly-trapping-report'\n useRegularLinks={props.useRegularLinks}\n >\n Weekly Trapping Report\n </NavDropDownItem>\n <NavDropDownItem\n to='/pest-disease/missing-trapping-report'\n useRegularLinks={props.useRegularLinks}\n >\n Missing Trapping Report\n </NavDropDownItem>\n </>\n )}\n </NavDropdown>\n\n {/* Account */}\n <NavLink\n to='/account'\n active={activeMenuItem === 'account'}\n useRegularLinks={props.useRegularLinks}\n >\n <FontAwesomeIcon icon={faCog} /> Account\n </NavLink>\n </Nav>\n </BootstrapNavbar.Collapse>\n </BootstrapNavbar>\n ) : null;\n}\n\nNavbar.propTypes = {\n useRegularLinks: PropTypes.bool\n};\n\nexport default observer(Navbar);\n\n","import React from 'react';\nimport { Col, Container, Row } from 'react-bootstrap';\nimport apm from '../../rum';\nimport Footer from '../footer/Footer';\nimport Header from '../header/Header';\nimport '../layout/layout.scss';\nimport Navbar from '../navbar/Navbar';\n\nexport default class ErrorBoundary extends React.Component {\n constructor() {\n super();\n this.state = { error: null, errorInfo: null };\n }\n\n componentDidCatch(error, errorInfo) {\n // Catch errors in any components below and re-render with error message\n this.setState({\n error: error,\n errorInfo: errorInfo\n });\n apm.captureError(error);\n // You can also log error messages to an error reporting service here\n }\n render() {\n if (this.state.errorInfo) {\n // Error path\n return (\n <>\n <Header hideMobileMenu />\n <Navbar useRegularLinks />\n <Container id='page-content' className='p-3' style={{ minHeight: '100vh' }}>\n <Row>\n <Col className='text-center'>\n <h2>Something went wrong.</h2>\n </Col>\n </Row>\n <Row>\n <Col>\n <p className='text-center'>\n If you continue to have issues please{' '}\n <a href='https://www.hortplus.com/support'>contact support</a>{' '}\n and we will get back to you as soon as possible.\n </p>\n </Col>\n </Row>\n <Row>\n <Col>\n {process.env.NODE_ENV === 'development' ? (\n <details style={{ whiteSpace: 'pre-wrap' }}>\n {this.state.error && this.state.error.toString()}\n <br />\n {this.state.errorInfo.componentStack}\n </details>\n ) : null}\n </Col>\n </Row>\n </Container>\n <Footer />\n </>\n );\n }\n // Normally, just render children\n return this.props.children;\n }\n}\n\n","import isMobile from 'ismobilejs';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Container } from 'react-bootstrap';\nimport Header from '../header/Header';\nimport Navbar from '../navbar/Navbar';\nrequire('./layout.scss');\n\nconst Layout = React.forwardRef((props, ref) => {\n return (\n <div ref={ref} style={{ minHeight: '100vh' }}>\n <Header usePropertiesSelecter={props.usePropertiesSelecter} />\n {isMobile(window.navigator).any ? null : (\n <Container fluid className='p-0'>\n <Navbar />\n </Container>\n )}\n <Container\n id='page-content'\n className='p-3 mb-4'\n style={{ minHeight: '100vh' }}\n >\n {props.children}\n </Container>\n </div>\n );\n});\n\nLayout.propTypes = {\n usePropertiesSelecter: PropTypes.bool\n};\n\nexport default Layout;\n\n","import { faArrowUpRightFromSquare } from '@fortawesome/free-solid-svg-icons/faArrowUpRightFromSquare';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Formik } from 'formik';\nimport isMobile from 'ismobilejs';\nimport { observer } from 'mobx-react';\nimport React, { useContext, useState } from 'react';\nimport { Alert, Button, Card, Col, Form, Row } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport { storesContext } from '../../stores/storesContext';\nimport LoadingOverlay from '../LoadingOverlay';\nimport PageTitle from '../helpers/PageTitle';\nimport { validateEmailAddress } from '../helpers/Validation';\n\nfunction LoginForm(props) {\n return (\n <Form noValidate onSubmit={props.handleSubmit}>\n <Form.Group controlId='email'>\n <Form.Label>Email Address</Form.Label>\n <Form.Control\n type='email'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n value={props.values.email}\n placeholder='Enter your email address'\n autoComplete='username'\n isInvalid={!!props.errors.email}\n />\n <Form.Control.Feedback type='invalid'>\n {props.errors.email}\n </Form.Control.Feedback>\n </Form.Group>\n <Form.Group controlId='password'>\n <Form.Label>Password</Form.Label>\n <Form.Control\n type='password'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n value={props.values.password}\n placeholder='Password'\n autoComplete='current-password'\n isInvalid={!!props.errors.password}\n />\n <Form.Control.Feedback type='invalid'>\n {props.errors.password}\n </Form.Control.Feedback>\n </Form.Group>\n <Form.Group controlId='remember'>\n <Form.Check\n type='checkbox'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n checked={props.values.remember}\n label='Remember me'\n />\n </Form.Group>\n\n <div className='d-flex justify-content-center'>\n <Button\n className='mr-2'\n variant='outline-secondary'\n as={Link}\n to='/forgot-password'\n >\n Forgot Password\n </Button>\n <Button variant='primary' type='submit'>\n Login\n </Button>\n </div>\n <div className='text-center mt-3'>\n <a href='https://www.fruitionhort.com/' target='new'>\n Interested in Fruition Technical Services?{' '}\n <FontAwesomeIcon icon={faArrowUpRightFromSquare} />\n </a>\n </div>\n </Form>\n );\n}\n\nfunction Login() {\n const userStore = useContext(storesContext);\n const [loginFailed, setLoginFailed] = useState(false);\n\n return (\n <div className='h-100 d-flex flex-column justify-content-between'>\n <div className='mb-3'>\n <Row>\n <Col>\n <PageTitle title={'Login'} />\n </Col>\n </Row>\n <Row className='justify-content-center mt-3'>\n <Col md={6}>\n {loginFailed ? (\n <Alert\n variant='danger'\n onClose={() => setLoginFailed(false)}\n dismissible\n >\n Failed to login, check that your email address and password is\n correct\n </Alert>\n ) : null}\n <Formik\n initialValues={{ email: '', password: '', remember: true }}\n validate={(values) => {\n const errors = {};\n\n if (!values.email) {\n errors.email = 'Required';\n } else if (!validateEmailAddress(values.email)) {\n errors.email = 'Invalid email address';\n }\n\n if (!values.password) errors.password = 'Required';\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n fetch(\n process.env.REACT_APP_AUTH_API_URL + 'api/token/jwt/generate',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n service: 'fruition'\n },\n body: JSON.stringify({\n email: values.email,\n password: values.password\n })\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n userStore.login(\n data.jwt_token,\n data.refresh_token,\n values.remember\n );\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n actions.setSubmitting(false);\n setLoginFailed(true);\n });\n }}\n >\n {(props) =>\n isMobile(window.navigator).any ? (\n <div>\n <LoginForm {...props} />\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </div>\n ) : (\n <Card>\n <Card.Body>\n <LoginForm {...props} />\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </Card.Body>\n </Card>\n )\n }\n </Formik>\n </Col>\n </Row>\n </div>\n <img\n className='w-100'\n alt='login-banner'\n src={`https://fruition-metwatch-assets.s3-ap-southeast-2.amazonaws.com/fruition-login${\n isMobile(window.navigator).any ? '-mobile' : ''\n }.jpg`}\n />\n </div>\n );\n}\n\nexport default observer(Login);\n\n","import { observer } from 'mobx-react';\nimport PropTypes from 'prop-types';\nimport React, { useContext, useRef, useState } from 'react';\nimport { Route as ReactRoute, useHistory } from 'react-router-dom';\nimport { useReactToPrint } from 'react-to-print';\nimport { storesContext } from '../../stores/storesContext';\nimport LoadingOverlay from '../LoadingOverlay';\nimport Footer from '../footer/Footer';\nimport Layout from '../layout/Layout';\nimport Login from '../login/Login';\n\nfunction Route(props) {\n const { component, requiresAuth, requiresAdmin, ...rest } = props;\n const userStore = useContext(storesContext);\n const history = useHistory();\n const [printing, setPrinting] = useState(false);\n\n const loading = userStore.loading;\n const loggedIn = userStore.loggedIn;\n const isAdmin = userStore.isAdmin;\n\n const componentRef = useRef();\n const handlePrint = useReactToPrint({\n content: () => componentRef.current,\n onBeforeGetContent: () =>\n new Promise((resolve) => {\n setPrinting(true);\n resolve();\n }),\n onAfterPrint: () => setPrinting(false)\n });\n const Component = React.cloneElement(component, {\n print: { handlePrint, printing }\n });\n\n return (\n <ReactRoute\n {...rest}\n render={() => {\n if (requiresAuth && !loggedIn) {\n if (loading)\n return (\n <Layout>\n <LoadingOverlay opacity={0.5} />\n </Layout>\n );\n else\n return (\n <>\n <Layout>\n <Login />\n </Layout>\n <Footer />\n </>\n );\n } else if (requiresAdmin && !isAdmin) {\n history.push('');\n } else {\n return (\n <>\n <Layout {...rest} ref={componentRef}>\n {userStore.loading ? <LoadingOverlay opacity={0.5} /> : null}\n {Component}\n </Layout>\n <Footer />\n </>\n );\n }\n }}\n />\n );\n}\n\nRoute.propTypes = {\n path: PropTypes.string,\n component: PropTypes.element.isRequired,\n requiresAuth: PropTypes.bool,\n requiresAdmin: PropTypes.bool,\n usePropertiesSelecter: PropTypes.bool\n};\n\nexport default observer(Route);\n\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"bsPrefix\", \"className\", \"fluid\", \"rounded\", \"roundedCircle\", \"thumbnail\"];\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { useBootstrapPrefix } from './ThemeProvider';\nexport var propTypes = {\n /**\n * @default 'img'\n */\n bsPrefix: PropTypes.string,\n\n /**\n * Sets image as fluid image.\n */\n fluid: PropTypes.bool,\n\n /**\n * Sets image shape as rounded.\n */\n rounded: PropTypes.bool,\n\n /**\n * Sets image shape as circle.\n */\n roundedCircle: PropTypes.bool,\n\n /**\n * Sets image shape as thumbnail.\n */\n thumbnail: PropTypes.bool\n};\nvar defaultProps = {\n fluid: false,\n rounded: false,\n roundedCircle: false,\n thumbnail: false\n};\nvar Image = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n fluid = _ref.fluid,\n rounded = _ref.rounded,\n roundedCircle = _ref.roundedCircle,\n thumbnail = _ref.thumbnail,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n bsPrefix = useBootstrapPrefix(bsPrefix, 'img');\n var classes = classNames(fluid && bsPrefix + \"-fluid\", rounded && \"rounded\", roundedCircle && \"rounded-circle\", thumbnail && bsPrefix + \"-thumbnail\");\n return /*#__PURE__*/React.createElement(\"img\", _extends({\n // eslint-disable-line jsx-a11y/alt-text\n ref: ref\n }, props, {\n className: classNames(className, classes)\n }));\n});\nImage.displayName = 'Image';\nImage.defaultProps = defaultProps;\nexport default Image;","import { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons/faExternalLinkAlt';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { PropTypes } from 'prop-types';\nimport { Button } from 'react-bootstrap';\nimport { errorToast } from '../../helpers/toasts/ToastUtils';\nimport { openIrrimaxWindow } from '../helpers';\n\nconst IrrimaxSiteButton = ({ site, graphUrl }) => {\n return (\n <Button\n key={site.id}\n className='mx-2 my-2'\n variant='outline-dark'\n onClick={() => {\n if (!graphUrl) {\n errorToast('No graph URL found for this site.');\n return;\n }\n openIrrimaxWindow(graphUrl);\n }}\n >\n <img\n src='https://fruition-metwatch-assets.s3-ap-southeast-2.amazonaws.com/sentek-logo-16.png'\n alt='sentek-logo'\n style={{ paddingBottom: '2px', marginRight: '2px' }}\n />{' '}\n View on IrriMAX Live{' '}\n <FontAwesomeIcon\n className='ml-1'\n icon={faExternalLinkAlt}\n size='sm'\n style={{ marginBottom: '1px', marginLeft: '2px' }}\n />\n </Button>\n );\n};\n\nIrrimaxSiteButton.propTypes = {\n site: PropTypes.object.isRequired,\n graphUrl: PropTypes.string\n};\n\nexport default IrrimaxSiteButton;\n\n","import { PropTypes } from 'prop-types';\nimport { Col, Row } from 'react-bootstrap';\n\nconst IrrimaxSiteLayout = ({ children }) => {\n return (\n <Row className='text-center mt-2 mb-4'>\n <Col>{children}</Col>\n </Row>\n );\n};\n\nIrrimaxSiteLayout.proptype = {\n children: PropTypes.element.isRequired\n};\n\nexport default IrrimaxSiteLayout;\n\n","import { observer } from 'mobx-react';\nimport { PropTypes } from 'prop-types';\nimport { useContext, useEffect, useState } from 'react';\nimport { Alert, Col, Image, Row, Spinner } from 'react-bootstrap';\nimport { storesContext } from '../../../stores/storesContext';\nimport SummaryMap from '../maps/SummaryMap';\nimport IrrimaxSiteButton from './IrrimaxSiteButton';\nimport IrrimaxSiteLayout from './IrrimaxSiteLayout';\n\nconst IrrimaxSite = ({ site, siteSummaries, selectSite }) => {\n const userStore = useContext(storesContext);\n\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n const [graphs, setGraphs] = useState([]);\n\n useEffect(() => {\n let mounted = true;\n const fetchData = async () => {\n if (mounted) setLoading(true);\n try {\n const url = `${process.env.REACT_APP_PROPERTIES_API_URL}api/irrigation-monitoring-sites/${site.id}/irrimax-sites/graphs`;\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${userStore.bearerToken}`,\n Accept: 'image/png',\n SeasonalDatabase: userStore.selectedDatabase\n }\n });\n if (!response.ok) {\n if (mounted) setError('Failed to fetch graphs.');\n } else if (response.status === 401) {\n userStore.refresh();\n }\n const images = await response.json();\n if (mounted) setGraphs(images);\n } catch (error) {\n if (mounted) setError('An error occured when fetching the graphs.');\n } finally {\n if (mounted) setLoading(false);\n }\n };\n fetchData();\n\n return () => {\n mounted = false;\n };\n }, [\n site.id,\n site.irrimax_sites,\n userStore,\n userStore.bearerToken,\n userStore.selectedDatabase\n ]);\n\n if (loading) {\n return (\n <IrrimaxSiteLayout>\n <Spinner className='mt-1' animation='border' variant='primary' />\n </IrrimaxSiteLayout>\n );\n }\n\n if (error) {\n return (\n <IrrimaxSiteLayout>\n <Row>\n <Col sm={2}></Col>\n <Col sm={8}>\n <Alert variant='danger'>{error}</Alert>\n </Col>\n <Col sm={2}></Col>\n </Row>\n </IrrimaxSiteLayout>\n );\n }\n\n if (graphs.length === 0) {\n return (\n <IrrimaxSiteLayout>\n <Row>\n <Col sm={2}></Col>\n <Col sm={8}>\n <Alert variant='danger'>No graphs found for this site.</Alert>\n </Col>\n <Col sm={2}></Col>\n </Row>\n </IrrimaxSiteLayout>\n );\n }\n\n return (\n <IrrimaxSiteLayout>\n {graphs.map((graph, index) => {\n const graphUrl = site.irrimax_sites.find(\n (is) => is.id === graph.irrimax_site_id\n )?.graph_url;\n return (\n <Row className='mb-3'>\n <Col>\n <Row className='mb-2'>\n <Col>\n <Image\n key={index}\n src={`data:image/png;base64,${graph.graph}`}\n />\n </Col>\n </Row>\n <Row>\n <Col>\n <IrrimaxSiteButton site={site} graphUrl={graphUrl} />\n </Col>\n </Row>\n </Col>\n </Row>\n );\n })}\n <SummaryMap\n propertySummaries={[\n {\n loading: false,\n property: userStore.propertiesStore.selectedProperty,\n results: {\n sites: siteSummaries\n }\n }\n ]}\n selectSite={selectSite}\n selectedSite={site}\n height={500}\n width='100%'\n />\n </IrrimaxSiteLayout>\n );\n};\n\nIrrimaxSite.propTypes = {\n site: PropTypes.object.isRequired\n};\n\nexport default observer(IrrimaxSite);\n\n","import { Button } from 'react-bootstrap';\nimport { errorToast } from '../helpers/toasts/ToastUtils';\n\nconst SiteButton = ({\n site,\n summary,\n selectedSite,\n selectSite,\n soilMoisture,\n isBlueAlert\n}) => {\n const siteName = `${site.name ?? '-'} `;\n return site.type === 'terraprobe' ? (\n <Button\n key={site.id}\n className='mx-2 my-2'\n variant={`${\n selectedSite && site.id === selectedSite.id ? '' : 'outline-'\n }${\n summary\n ? summary.alert_level === 3\n ? isBlueAlert\n ? 'primary'\n : 'danger'\n : summary.alert_level === 2\n ? 'warning'\n : summary.alert_level === 1\n ? 'success'\n : 'secondary'\n : 'secondary'\n }`}\n onClick={() => {\n if (site.application_rate === null) {\n errorToast(\n 'Missing critical site information. Please contact support.'\n );\n }\n selectSite(site);\n }}\n >\n {`${siteName}${\n soilMoisture !== null ? ` ${Math.round(soilMoisture * 100)}%` : ''\n }`}\n </Button>\n ) : site.type === 'irrimax' ? (\n <div>\n <Button\n key={site.id}\n className='mx-2 my-2'\n variant={\n selectedSite && site.id === selectedSite.id ? 'dark' : 'outline-dark'\n }\n onClick={() => {\n selectSite(site);\n }}\n >\n <img\n src='https://fruition-metwatch-assets.s3-ap-southeast-2.amazonaws.com/sentek-logo-16.png'\n alt='sentek-logo'\n style={{ paddingBottom: '2px', marginRight: '2px' }}\n />{' '}\n {siteName}\n </Button>\n </div>\n ) : null;\n};\n\nexport default SiteButton;\n\n","import React, { Component } from 'react';\nimport { Alert } from 'react-bootstrap';\nimport Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\nimport merge from 'deepmerge';\n\nexport default class Chart extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n options: {\n credits: {\n enabled: false\n },\n time: {\n timezone: 'Pacific/Auckland'\n },\n tooltip: {\n shared: true,\n positioner: this.tooltipPositioner,\n shape: 'square',\n borderColor: '#AAA',\n crosshairs: true\n },\n }\n };\n\n this.chartRef = null;\n }\n\n componentDidUpdate() {\n if (this.props.noData === false && this.props.failed === false) {\n if (this.props.loading) this.chartRef.showLoading();\n else this.chartRef.hideLoading();\n }\n }\n\n tooltipPositioner(labelWidth, labelHeight, point) {\n // Attempt to float the tooltip to the left of the crosshair\n let x = point.plotX - this.chart.plotLeft - labelWidth / 2 + 30;\n if (x > 40) return { x: x, y: this.chart.plotTop + 10 };\n\n // If the tooltip was off the chart attempt to float the tooltip to the right of the crosshair\n x = point.plotX + this.chart.plotLeft + 10;\n if (this.chart.plotWidth - x > labelWidth)\n return { x: x, y: this.chart.plotTop + 10 };\n\n // If the tooltip was off the chart float the tooltip in the middle of the chart\n return {\n x: this.chart.chartWidth / 2 - labelWidth / 2,\n y: this.chart.plotTop + 10\n };\n }\n\n storeChart(chart) {\n this.chartRef = chart;\n if(this.props.loading) this.chartRef.showLoading();\n }\n\n render() {\n if (this.props.failed) {\n return (\n <Alert variant='danger'>\n Sorry something went wrong loading {this.props.options.title.text}\n </Alert>\n );\n } else if (this.props.noData) {\n return (\n <Alert variant='warning'>\n {this.props.options.title.text} has no data\n </Alert>\n );\n } else {\n return (\n <HighchartsReact\n highcharts={Highcharts}\n options={merge(this.state.options, this.props.options)}\n callback={this.storeChart.bind(this)}\n />\n );\n }\n }\n}\n\nexport function formatlabel(label, value, color, width = 150) {\n if (value !== '')\n return (\n '<div style=\"width: ' +\n width +\n 'px;\"><div style=\"float: left;\"><span style=\"color:' +\n color +\n '\">\\u25CF</span> ' +\n label +\n ': </div><div style=\"float: right;\"><b>' +\n value +\n '</b></div></div><br>'\n );\n}\n\nexport function formatMissing(\n start_time,\n missing,\n min = -1,\n max = 1,\n axis = 0,\n threshold = 0\n) {\n return {\n name: 'Missing',\n type: 'area',\n step: 'center',\n threshold: threshold,\n boostThreshold: 0,\n showInLegend: false,\n color: 'rgb(255,0,0)',\n lineWidth: 1,\n fillColor: {\n pattern: {\n path: {\n d: 'M 0 0 L 20 20 M 19 -1 L 21 1 M -1 19 L 1 21',\n strokeWidth: 1\n },\n width: 20,\n height: 20,\n color: 'rgba(255,0,0,0.5)'\n }\n },\n data: missing.map(function (x) {\n return x === 0 ? min : max;\n }),\n yAxis: axis,\n pointStart: new Date(start_time).getTime(),\n tooltip: {\n pointFormatter: function () {\n if (this.y > 0) {\n return formatlabel(this.series.name, 'True', this.color);\n }\n }\n }\n };\n}\n\nexport function setupSynchronization(container) {\n /**\n * In order to synchronize tooltips and crosshairs, override the\n * built-in events with handlers defined on the parent element.\n */\n ['mousemove', 'touchmove', 'touchstart'].forEach(function (eventType) {\n document\n .getElementById(container)\n .addEventListener(eventType, function (e) {\n var chart, event;\n\n for (let i = 0; i < Highcharts.charts.length; i = i + 1) {\n chart = Highcharts.charts[i];\n if (!chart) continue;\n // Find coordinates within the chart\n event = chart.pointer.normalize(e);\n\n // Find all points\n let points = [];\n let max = chart.series.length;\n for (let x = 0; x < max; x++) {\n let point = chart.series[x].searchPoint(event, true);\n if (point) points.push(point);\n }\n\n // Find all different x values\n let xValues = [];\n for (let x = 0; x < points.length; x++) {\n if (xValues.indexOf(points[x].x) < 0) xValues.push(points[x].x);\n }\n\n // Find closest x value\n let xPos = chart.axes[0].toValue(event.chartX);\n let closest = xValues[0];\n for (let x = 1; x < xValues.length; x++) {\n let diff1 = Math.abs(xValues[x] - xPos);\n let diff2 = Math.abs(closest - xPos);\n if (diff1 < diff2) closest = xValues[x];\n }\n\n // Highlight closest point\n for (let x = 0; x < points.length; x++) {\n if (points[x].x === closest) {\n if (points[x].series.options.enableMouseTracking !== false)\n points[x].onMouseOver();\n break;\n }\n }\n }\n });\n });\n\n /**\n * Override the reset function, we don't need to hide the tooltips and\n * crosshairs.\n */\n Highcharts.Pointer.prototype.reset = function () {\n for (let i = 0; i < Highcharts.charts.length; i++) {\n let chart = Highcharts.charts[i];\n if (!chart) continue;\n chart.tooltip.hide();\n chart.xAxis[0].hideCrosshair();\n for (let series = 0; series < chart.series.length; series++) {\n chart.series[series].setState();\n }\n if (chart.hoverPoints) {\n for (let point = 0; point < chart.hoverPoints.length; point++) {\n let point_obj = chart.hoverPoints[point];\n if (point_obj) point_obj.setState();\n }\n }\n }\n };\n}\n","import moment from 'moment';\nimport React, { useEffect, useLayoutEffect, useState } from 'react';\nimport Chart, { setupSynchronization } from './Chart.js';\n\nconst initStrategyOptions = () => ({\n title: {\n text: ''\n },\n xAxis: {\n type: 'datetime',\n plotLines: []\n },\n yAxis: {\n title: {\n text: 'Soil Water Content (mm)'\n }\n },\n plotOptions: {\n series: {\n states: {\n inactive: {\n opacity: 1\n }\n }\n },\n column: {\n pointPadding: 0,\n groupPadding: 0\n }\n }\n});\n\nconst initRainfallOptions = () => ({\n title: {\n text: ''\n },\n xAxis: {\n type: 'datetime',\n plotLines: []\n },\n yAxis: {\n title: {\n text: 'Rain (mm)'\n },\n min: 0,\n max: 60\n },\n plotOptions: {\n series: {\n states: {\n inactive: {\n opacity: 1\n }\n }\n },\n column: {\n pointPadding: 0,\n groupPadding: 0\n }\n }\n});\n\nexport default function SeasonalStrategyChart(props) {\n const [strategyOptions, setStrategyOptions] = useState(initStrategyOptions());\n const [rainfallOptions, setRainfallOptions] = useState(initRainfallOptions());\n\n useLayoutEffect(() => {\n setupSynchronization('strategy-graph');\n }, []);\n\n useEffect(() => {\n const probeReadingData = [];\n const rainfallData = [];\n const irrigationData = [];\n const strategyRangeData = [];\n const criticalDates = {};\n\n let start;\n let stop;\n let fullPoint;\n let refill;\n let minReading;\n let maxReading;\n\n props.readingData.forEach((reading) => {\n if (reading.type === 'Probe') {\n const date = moment(reading.date, 'DD-MM-YYYY');\n\n const rz1 = Math.round(reading['rz1']);\n if (minReading === undefined || rz1 < minReading) minReading = rz1;\n if (maxReading === undefined || rz1 > maxReading) maxReading = rz1;\n // Use fullPoint and refill to help determine max and min readings.\n if (fullPoint !== undefined && fullPoint < minReading) minReading = fullPoint;\n if (fullPoint !== undefined && fullPoint > maxReading) maxReading = fullPoint;\n if (refill !== undefined && refill < minReading) minReading = refill;\n if (refill !== undefined && refill > maxReading) maxReading = refill;\n\n probeReadingData.push({\n y: rz1,\n x: date.valueOf()\n });\n\n rainfallData.push({\n y: reading.rain,\n x: date.valueOf()\n });\n\n irrigationData.push({\n y: reading.irrigation_mms,\n x: date.valueOf()\n });\n // Set the fullPoint and refill values from siteSummary.\n // It's possible for 'props.readingData' to have no 'Full Point'\n // or 'Refill' reading so this handles that case.\n if (!fullPoint) fullPoint = props.siteSummary?.full_point;\n if (!refill) refill = props.siteSummary?.refill_point;\n } else if (reading.type === 'Full Point') {\n fullPoint = Math.round(reading.rz1);\n } else if (reading.type === 'Refill') {\n refill = Math.round(reading.rz1);\n }\n });\n\n const diff = fullPoint - refill;\n props.strategyData.forEach((strategy) => {\n criticalDates[strategy.critical_date_type] = strategy.critical_date;\n\n if (strategy.critical_date_type === 'Start')\n start = strategy.critical_date;\n if (strategy.critical_date_type === 'End') stop = strategy.critical_date;\n\n const strategyDate = moment(strategy.strategy_date, 'DD-MM-YYYY');\n const upper = fullPoint - (diff - diff * strategy.percentage);\n strategyRangeData.push({\n x: strategyDate.valueOf(),\n high: upper,\n low: upper - diff * strategy.strategy_percentage\n });\n });\n\n // Order all data by the x axis\n probeReadingData.sort((a, b) => a.x - b.x);\n rainfallData.sort((a, b) => a.x - b.x);\n irrigationData.sort((a, b) => a.x - b.x);\n strategyRangeData.sort((a, b) => a.x - b.x);\n\n // Clone the current options\n let newStrategyOptions = initStrategyOptions();\n let newRainfallOptions = initRainfallOptions();\n\n // Strategy graph series\n newStrategyOptions.series = [\n {\n name: 'Strategy',\n type: 'arearange',\n data: strategyRangeData,\n yAxis: 0,\n marker: {\n enabled: false\n },\n color: '#9dc8f1',\n fillOpacity: 0.5,\n tooltip: {\n valueSuffix: ' mm',\n valueDecimals: 1\n }\n },\n {\n name: 'Readings',\n type: 'line',\n data: probeReadingData,\n yAxis: 0,\n color: 'black',\n marker: {\n enabled: true,\n symbol: 'circle',\n fillColor: 'black'\n },\n tooltip: {\n valueSuffix: ' mm',\n valueDecimals: 1\n }\n }\n ];\n\n // Rainfall graph series\n newRainfallOptions.series = [\n {\n name: 'Rainfall',\n type: 'column',\n color: 'blue',\n data: rainfallData,\n yAxis: 0,\n tooltip: {\n valueSuffix: ' mm',\n valueDecimals: 1\n }\n },\n {\n name: 'Irrigation',\n type: 'column',\n color: 'red',\n data: irrigationData,\n yAxis: 0,\n tooltip: {\n valueSuffix: ' mm',\n valueDecimals: 1\n }\n }\n ];\n\n // Fullpoint/refill plot lines\n newStrategyOptions.yAxis.plotLines = [\n {\n value: fullPoint,\n color: 'green',\n width: 2,\n label: {\n text: 'Full Point'\n }\n },\n {\n value: refill,\n color: 'red',\n width: 2,\n label: {\n text: 'Refill Point'\n }\n }\n ];\n\n // Critical dates plot lines\n newStrategyOptions.xAxis.plotLines = [];\n for (const criticalDateType in criticalDates) {\n newStrategyOptions.xAxis.plotLines.push({\n value: moment(criticalDates[criticalDateType], 'DD-MM-YYYY').valueOf(),\n label: {\n text: criticalDateType\n }\n });\n }\n\n // Y Axis min/max values with 15% buffer\n const yAxisMin = minReading < refill ? minReading : refill;\n const yAxisMax = maxReading > fullPoint ? maxReading : fullPoint;\n newStrategyOptions.yAxis.min = yAxisMin - yAxisMin * 0.1;\n newStrategyOptions.yAxis.max = yAxisMax + yAxisMax * 0.1;\n\n // X Axis min/max values\n // add 2 days of padding either side\n if (start && stop) {\n const startPadded =\n moment(start, 'DD-MM-YYYY').valueOf() - 1000 * 60 * 60 * 24 * 2;\n const stopPadded =\n moment(stop, 'DD-MM-YYYY').valueOf() + 1000 * 60 * 60 * 24 * 2;\n newStrategyOptions.xAxis.min = startPadded;\n newStrategyOptions.xAxis.max = stopPadded;\n newRainfallOptions.xAxis.min = startPadded;\n newRainfallOptions.xAxis.max = stopPadded;\n }\n\n // Update the state\n setStrategyOptions(newStrategyOptions);\n setRainfallOptions(newRainfallOptions);\n }, [props.readingData, props.strategyData]);\n\n return (\n <div id='strategy-graph'>\n <Chart options={strategyOptions} loading={false} />\n <Chart options={rainfallOptions} loading={false} />\n </div>\n );\n}\n\n","import moment from 'moment';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport Chart from './Chart.js';\n\nexport default function WeeklySoilMoistureChart(props) {\n const [options, setOptions] = useState({\n chart: {\n inverted: true\n },\n title: {\n text: ''\n },\n yAxis: {\n title: {\n text: 'Volumetric Soil Water Content (%)'\n },\n opposite: true\n },\n xAxis: {\n title: {\n text: 'Depth (cm)'\n }\n },\n tooltip: {\n headerFormat:\n '<span style=\"font-size: 10px\">Depth: {point.key}cm</span><br/>'\n }\n });\n\n /**\n * All probe readings in descending order by date.\n */\n const probeReadingsDescending = useMemo(\n () =>\n props.readingData\n .filter((reading) => reading.type === 'Probe')\n .sort(\n (a, b) =>\n moment(b.date, 'DD-MM-YYYY').valueOf() -\n moment(a.date, 'DD-MM-YYYY').valueOf()\n ),\n [props.readingData]\n );\n\n useEffect(() => {\n if (probeReadingsDescending.length > 0) {\n let currentWeek = probeReadingsDescending[0].date;\n let previousWeek =\n probeReadingsDescending.length > 1\n ? probeReadingsDescending[1].date\n : null;\n let currentWeekReading;\n let previousWeekReading;\n let series = [];\n\n props.readingData.forEach((reading) => {\n // Find the reading types that we want to display on the chart\n const name =\n reading.type === 'Probe' && reading.date === currentWeek\n ? 'Current Week'\n : reading.type === 'Probe' && reading.date === previousWeek\n ? 'Previous Week'\n : reading.type === 'Full Point'\n ? 'Full Point'\n : reading.type === 'Refill'\n ? 'Refill'\n : null;\n\n // Find the current/previous weeks reading\n if (name === 'Current Week') currentWeekReading = reading;\n else if (name === 'Previous Week') previousWeekReading = reading;\n\n // If we want to display this reading add a series\n if (name !== null) {\n let data = [];\n for (let i = 0; i < 10; i++) {\n if (\n reading[`depth${i}`] !== null &&\n reading[`depth${i}`] > 0 &&\n reading[`vsw${i}_perc`] !== null\n ) {\n data.push({\n y: reading[`vsw${i}_perc`],\n x: reading[`depth${i}`]\n });\n }\n }\n\n // Sort the data by the depth\n data.sort((a, b) => a.x - b.x);\n\n series.push({\n type: 'line',\n name: name,\n data: data,\n color:\n name === 'Current Week'\n ? 'blue'\n : name === 'Full Point'\n ? 'green'\n : name === 'Refill'\n ? 'red'\n : name === 'Previous Week'\n ? 'lightblue'\n : null,\n marker:\n name === 'Current Week'\n ? {\n enabled: true,\n symbol: 'circle',\n fillColor: 'black'\n }\n : {\n enabled: false,\n symbol: 'circle'\n },\n zIndex:\n name === 'Current Week'\n ? 50\n : name === 'Previous Week'\n ? 40\n : name === 'Full Point'\n ? 30\n : name === 'Refill'\n ? 20\n : null,\n tooltip: {\n valueSuffix: '%',\n valueDecimals: 1\n }\n });\n }\n });\n\n // If we found both the current and previous week readings then display the previous week area series\n if (currentWeekReading && previousWeekReading) {\n let data = [];\n for (let i = 0; i < 10; i++) {\n if (\n previousWeekReading[`depth${i}`] &&\n previousWeekReading[`vsw${i}_perc`] &&\n currentWeekReading[`vsw${i}_perc`]\n ) {\n data.push({\n low: previousWeekReading[`vsw${i}_perc`],\n high: currentWeekReading[`vsw${i}_perc`],\n x: previousWeekReading[`depth${i}`]\n });\n }\n }\n\n series.push({\n type: 'arearange',\n name: 'Difference',\n lineColor: 'rgb(173, 216, 230)',\n fillColor: 'rgba(173, 216, 230, 0.5)',\n zIndex: 10,\n data: data,\n tooltip: {\n pointFormat: ''\n },\n marker: {\n enabled: false,\n states: {\n hover: {\n enabled: false\n }\n }\n }\n });\n }\n\n // Merge the options and update the state\n const newOptions = { ...options };\n\n // Update the bottom of root zone plot line\n if (currentWeekReading && currentWeekReading.rz1_bottom !== null) {\n newOptions.xAxis.softMax = currentWeekReading.rz1_bottom;\n newOptions.xAxis.plotLines = [\n {\n value: currentWeekReading.rz1_bottom,\n label: {\n text: 'Bottom of the root zone'\n },\n zIndex: 2\n }\n ];\n } else {\n newOptions.xAxis.softMax = null;\n newOptions.xAxis.plotLines = null;\n }\n\n // Order the series tool tips\n const newSeries = [];\n const fullPointSeries = series.find((s) => s.name === 'Full Point');\n if (fullPointSeries) newSeries.push(fullPointSeries);\n const currentWeekSeries = series.find((s) => s.name === 'Current Week');\n if (currentWeekSeries) newSeries.push(currentWeekSeries);\n const previousWeekSeries = series.find((s) => s.name === 'Previous Week');\n if (previousWeekSeries) newSeries.push(previousWeekSeries);\n const differenceSeries = series.find((s) => s.name === 'Difference');\n if (differenceSeries) newSeries.push(differenceSeries);\n const refillSeries = series.find((s) => s.name === 'Refill');\n if (refillSeries) newSeries.push(refillSeries);\n\n // Update the series\n newOptions.series = newSeries;\n\n // Set the new state\n setOptions(newOptions);\n }\n }, [props, probeReadingsDescending]);\n\n return <Chart options={options} loading={false} />;\n}\n\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Table } from 'react-bootstrap';\n\nfunction LastWeekRain(props) {\n // Find all probe readings\n const probeReadings = props.readingData.filter(\n (reading) => reading.type === 'Probe'\n );\n\n // If there are no probe readings then we can't render a table\n if (probeReadings.length < 1) return null;\n\n const lastWeekReading = probeReadings[0];\n\n return (\n <Table bordered responsive className='mb-0'>\n <tbody>\n <tr>\n <td>Rain</td>\n <td>\n {lastWeekReading.rain !== null\n ? parseFloat(lastWeekReading.rain.toFixed(1)) + ' mm'\n : 'N/A'}\n </td>\n </tr>\n </tbody>\n </Table>\n );\n}\n\nLastWeekRain.propTypes = {\n readingData: PropTypes.array.isRequired\n};\n\nexport default LastWeekRain;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Table } from 'react-bootstrap';\n\nfunction LastWeekTable(props) {\n // Find all probe readings\n const probeReadings = props.readingData.filter(\n (reading) => reading.type === 'Probe'\n );\n\n // If there are no probe readings then we can't render a table\n if (probeReadings.length < 1) return null;\n\n const lastWeekReading = probeReadings[0];\n return (\n <Table bordered responsive>\n <tbody>\n <tr>\n <td>Applied Irrigation</td>\n <td>\n {lastWeekReading.irrigation_mms !== null\n ? parseFloat(lastWeekReading.irrigation_mms.toFixed(1)) + ' mm'\n : 'N/A'}\n </td>\n <td>{lastWeekReading.irrigation_litres} L/plant</td>\n <td>\n {props.site.application_rate && props.site.application_rate > 0\n ? parseFloat(\n lastWeekReading.irrigation_mms / props.site.application_rate\n ).toFixed(1) + ' Hours'\n : 'N/A'}\n </td>\n </tr>\n </tbody>\n </Table>\n );\n}\n\nLastWeekTable.propTypes = {\n readingData: PropTypes.array.isRequired,\n site: PropTypes.object.isRequired\n};\n\nexport default LastWeekTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { Table } from 'react-bootstrap';\n\nfunction RecommendationTable(props) {\n // Find all probe readings\n const probeReadings = props.readingData.filter(\n (reading) => reading.type === 'Probe'\n );\n\n // If there are no probe readings then we can't render a table\n if (probeReadings.length < 1) return null;\n\n // Render the recommendation table for the latest probe reading\n const latestWeekReading = probeReadings[0];\n const startDay = moment(latestWeekReading.date, 'DD-MM-YYYY').day();\n\n const days = [];\n for (let i = startDay + 1; i < 7; i++) {\n days.push(i);\n }\n for (let i = 0; i < startDay + 1; i++) {\n days.push(i);\n }\n\n /**\n * @returns string\n */\n const terraprobeDayVar = (day) => {\n switch (day) {\n default:\n return '';\n case 0:\n return 'rec_sun';\n case 1:\n return 'rec_mon';\n case 2:\n return 'rec_tue';\n case 3:\n return 'rec_wed';\n case 4:\n return 'rec_thu';\n case 5:\n return 'rec_fri';\n case 6:\n return 'rec_sat';\n }\n };\n\n return (\n <Table responsive size='sm'>\n <thead>\n <tr>\n <th></th>\n {days.map((day) => (\n <th key={day}>{moment().day(day).format('ddd')}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>mm</td>\n {days.map((day) => (\n <td key={day}>\n {Math.round(\n latestWeekReading[terraprobeDayVar(day)] *\n props.site.application_rate\n )}\n </td>\n ))}\n </tr>\n <tr>\n <td>Hours</td>\n {days.map((day) => (\n <td key={day}>{latestWeekReading[terraprobeDayVar(day)]}</td>\n ))}\n </tr>\n </tbody>\n </Table>\n );\n}\n\nRecommendationTable.propTypes = {\n readingData: PropTypes.array.isRequired,\n site: PropTypes.object.isRequired\n};\n\nexport default RecommendationTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Table } from 'react-bootstrap';\n\nfunction SeasonToDateTable(props) {\n const irrigation = props.readingData.reduce((accumulator, reading) => {\n if (reading.type === 'Probe') {\n return accumulator + reading.irrigation_mms;\n } else {\n return accumulator;\n }\n }, 0);\n\n const rain = props.readingData.reduce((accumulator, reading) => {\n if (reading.type === 'Probe') {\n return accumulator + reading.rain;\n } else {\n return accumulator;\n }\n }, 0);\n\n return (\n <Table bordered responsive className={`${props.className}`}>\n <tbody>\n <tr>\n <td>Irrigation</td>\n <td>\n {irrigation !== null\n ? parseFloat(irrigation.toFixed(1)) + ' mm'\n : 'N/A'}\n </td>\n <td>Rain</td>\n <td>{rain !== null ? parseFloat(rain.toFixed(1)) + ' mm' : 'N/A'}</td>\n </tr>\n </tbody>\n </Table>\n );\n}\n\nSeasonToDateTable.propTypes = {\n readingData: PropTypes.array.isRequired\n};\n\nexport default SeasonToDateTable;\n","import { observer } from 'mobx-react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport { Fragment, useContext, useMemo } from 'react';\nimport { Button, Card, Col, Row } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport { storesContext } from '../../stores/storesContext';\nimport SeasonalStrategyChart from '../charts/SeasonalStrategyChart';\nimport WeeklySoilMoistureChart from '../charts/WeeklySoilMoistureChart';\nimport IrrigationLegend from './IrrigationLegend';\nimport SummaryMap from './maps/SummaryMap';\nimport LastWeekRain from './tables/LastWeekRain';\nimport LastWeekTable from './tables/LastWeekTable';\nimport RecommendationTable from './tables/RecommendationTable';\nimport SeasonToDateTable from './tables/SeasonToDateTable';\n\nconst TerraprobeSite = ({\n selectedSite,\n siteSummaries,\n siteReadings,\n siteStrategies,\n isPrinting,\n selectSite\n}) => {\n const userStore = useContext(storesContext);\n\n /**\n * Returns the summary for a site.\n *\n * The summary has summary has the data we need to calculate the current\n * status of the site.\n *\n * @param {object} site\n * @returns {(object|null)}\n */\n const siteSummary = (site) =>\n siteSummaries.find(\n (siteSummary) => siteSummary.site_id === Number(site.site_number)\n );\n\n /**\n * Returns all probe readings for the selected site.\n *\n * @returns {(Array|null)}\n */\n const selectedSiteProbeReadings = useMemo(() => {\n if (selectedSite)\n return siteReadings[selectedSite.id]\n ? siteReadings[selectedSite.id].filter(\n (reading) => reading.type === 'Probe'\n )\n : null;\n else return null;\n }, [siteReadings, selectedSite]);\n\n /**\n * Returns the latest probe reading for the selected site.\n *\n * @returns {(object|null)}\n */\n const latestWeekReading = useMemo(() => {\n return selectedSiteProbeReadings && selectedSiteProbeReadings.length > 0\n ? selectedSiteProbeReadings[0]\n : null;\n }, [selectedSiteProbeReadings]);\n\n return (\n <>\n {Object.keys(siteReadings).some(\n (s) => Number(s) === Number(selectedSite.id)\n ) ? (\n <Fragment>\n <Row className='my-2'>\n <Col\n xl={6}\n lg={6}\n md={12}\n xs={isPrinting ? 6 : 12}\n className='my-2'\n >\n <Card>\n <Card.Header>\n <b>Recommendation</b>\n </Card.Header>\n <Card.Body>\n {latestWeekReading ? latestWeekReading.comment : null}\n </Card.Body>\n </Card>\n </Col>\n <Col\n xl={6}\n lg={6}\n md={12}\n xs={isPrinting ? 6 : 12}\n className='my-2'\n >\n <Card>\n <Card.Header>\n <b>Summary Since Last Reading</b>\n </Card.Header>\n <Card.Body>\n Last Reading:{' '}\n <b>\n {latestWeekReading\n ? moment(latestWeekReading['date'], 'DD-MM-YYYY').format(\n 'dddd, MMMM D, YYYY'\n )\n : 'N/A'}\n </b>\n <br />\n Crop use 7 days (Forecast):{' '}\n <b>\n {latestWeekReading && latestWeekReading.weekly_edwu !== null\n ? `${latestWeekReading.weekly_edwu}mm`\n : 'N/A'}\n </b>\n </Card.Body>\n </Card>\n </Col>\n </Row>\n\n <Row>\n <Col\n xl={6}\n lg={6}\n md={12}\n xs={isPrinting ? 6 : 12}\n className='my-2'\n >\n <Card>\n <Card.Header>\n <b>Current State</b>\n </Card.Header>\n <Card.Body>\n {selectedSiteProbeReadings &&\n selectedSiteProbeReadings.length > 0 ? (\n <Row>\n <Col>\n <WeeklySoilMoistureChart\n readingData={siteReadings[selectedSite.id]}\n />\n <small className='d-block text-center'>\n Root Zone: 0 - {latestWeekReading.rz1_bottom} cm\n </small>\n </Col>\n </Row>\n ) : (\n 'N/A'\n )}\n </Card.Body>\n </Card>\n </Col>\n <Col\n xl={6}\n lg={6}\n md={12}\n xs={isPrinting ? 6 : 12}\n className='my-2'\n >\n <Card>\n <Card.Header>\n <b>Schedule</b>\n </Card.Header>\n <Card.Body>\n <RecommendationTable\n readingData={siteReadings[selectedSite.id]}\n site={selectedSite}\n />\n <Row>\n <Col className='text-center'>\n <Button\n variant='outline-info'\n as={Link}\n to='/programming-guide'\n >\n Property Programming Guide\n </Button>\n </Col>\n </Row>\n </Card.Body>\n </Card>\n </Col>\n </Row>\n\n <Row>\n <Col className='my-2'>\n <Card>\n <Card.Header>\n <b>Last Week</b>\n </Card.Header>\n <Card.Body>\n {selectedSiteProbeReadings &&\n selectedSiteProbeReadings.length > 0 ? (\n <LastWeekTable\n readingData={siteReadings[selectedSite.id]}\n site={selectedSite}\n />\n ) : (\n 'N/A'\n )}\n <LastWeekRain readingData={siteReadings[selectedSite.id]} />\n </Card.Body>\n </Card>\n </Col>\n\n <Col className='my-2'>\n <Card>\n <Card.Header>\n <b>Season To Date</b>\n </Card.Header>\n <Card.Body>\n {selectedSiteProbeReadings &&\n selectedSiteProbeReadings.length > 0 ? (\n <SeasonToDateTable\n readingData={siteReadings[selectedSite.id]}\n className='mb-0'\n />\n ) : (\n 'N/A'\n )}\n </Card.Body>\n </Card>\n </Col>\n </Row>\n\n <Row className='my-2 page-break'>\n <Col>\n <Card>\n <Card.Header>\n <b>Seasonal Summary & Strategy</b>\n </Card.Header>\n <Card.Body>\n {selectedSiteProbeReadings &&\n selectedSiteProbeReadings.length > 0 ? (\n <SeasonalStrategyChart\n readingData={siteReadings[selectedSite.id]}\n strategyData={siteStrategies[selectedSite.id]}\n siteSummary={siteSummary(selectedSite)}\n />\n ) : (\n 'N/A'\n )}\n </Card.Body>\n </Card>\n </Col>\n </Row>\n\n <Row className='my-2'>\n <Col className='my-2'>\n <Card>\n <Card.Header>\n <b>Map</b>\n </Card.Header>\n <Card.Body>\n <IrrigationLegend className='mb-4 text-center' />\n\n <SummaryMap\n propertySummaries={[\n {\n loading: false,\n property: userStore.propertiesStore.selectedProperty,\n results: {\n sites: siteSummaries\n }\n }\n ]}\n selectSite={selectSite}\n selectedSite={selectedSite}\n height={500}\n width='100%'\n />\n </Card.Body>\n </Card>\n </Col>\n </Row>\n </Fragment>\n ) : null}\n </>\n );\n};\n\nTerraprobeSite.propTypes = {\n selectedSite: PropTypes.object,\n siteSummaries: PropTypes.array,\n siteReadings: PropTypes.object,\n siteStrategies: PropTypes.object,\n isPrinting: PropTypes.bool,\n selectSite: PropTypes.func\n};\n\nexport default observer(TerraprobeSite);\n\n","import { GlobalPropertiesSelect } from '@hortplus/properties-react';\nimport isMobile from 'ismobilejs';\nimport PropTypes from 'prop-types';\nimport React, { Fragment, useContext, useEffect, useState } from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { storesContext } from '../../stores/storesContext';\nimport { CalculateSiteSoilMoisture } from './helpers';\nimport './irrigation_print.scss';\nimport IrrigationLegend from './IrrigationLegend';\nimport { withIrrigationMonitoringSites } from './IrrigationProviders';\nimport IrrimaxSite from './irrimax_site/IrrimaxSite';\nimport SiteButton from './SiteButton';\nimport TerraprobeSite from './TerraprobeSite';\n\n/**\n * This is the main irrigation component, it displays all of the graphs and tables\n * for the supplied summary, readings, and strategy data.\n *\n * This is intended to be used as a child of the IrrigationMonitoringSites component.\n */\nfunction IrrigationGraphs(props) {\n const userStore = useContext(storesContext);\n const [selectedSite, setSelectedSite] = useState(null);\n const isPrinting = props.printing;\n\n useEffect(() => {\n const siteId = localStorage.getItem('irrigation_monitoring_site_id');\n if (siteId !== null) {\n const site =\n userStore.propertiesStore.selectedProperty.irrigation_monitoring_sites.find(\n (s) => s.id === parseInt(siteId)\n );\n if (site) setSelectedSite(site);\n }\n }, [\n userStore.propertiesStore.selectedProperty.irrigation_monitoring_sites,\n userStore.propertiesStore.selectedPropertyId\n ]);\n\n const selectSite = (site) => {\n localStorage.setItem('irrigation_monitoring_site_id', site.id);\n setSelectedSite(site);\n };\n\n /**\n * Returns the summary for a site.\n *\n * The summary has summary has the data we need to calculate the current\n * status of the site.\n *\n * @param {object} site\n * @returns {(object|null)}\n */\n const siteSummary = (site) =>\n props.siteSummaries.find(\n (siteSummary) => siteSummary.site_id === Number(site.site_number)\n );\n\n /**\n * Returns the soil moisture percentage value for a site.\n *\n * The calculation finds the percentage of summary.latest_reading_date_rz1\n * within the range of the refill point to the full point.\n *\n * @param {object} site\n * @returns {(number|null)}\n */\n const siteSoilMoisture = (site) => {\n const summary = siteSummary(site);\n return CalculateSiteSoilMoisture(summary);\n };\n\n return (\n <Fragment>\n {isMobile(window.navigator).any ? (\n <Row className='justify-content-center'>\n <Col sm={10} md={8} lg={6}>\n <GlobalPropertiesSelect\n selectedDatabase={userStore.selectedDatabase}\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refreshCallback}\n propertiesStore={userStore.propertiesStore}\n />\n </Col>\n </Row>\n ) : null}\n\n <IrrigationLegend className='mt-2 text-center' />\n\n {/* Irrigation Monitoring Sites Buttons */}\n <div className='d-flex justify-content-center flex-wrap mt-1'>\n {userStore.propertiesStore.selectedProperty.irrigation_monitoring_sites.map(\n (site) => {\n const soilMoisture = siteSoilMoisture(site);\n const summary = siteSummary(site);\n const yValue = summary?.latest_reading?.rz1;\n const fullPoint = summary?.full_point;\n const isBlueAlert =\n summary?.alert_level === 3 && yValue > fullPoint;\n // color for the buttons based on where the site is in the strategy.\n return (\n <SiteButton\n key={site.id}\n site={site}\n summary={summary}\n selectedSite={selectedSite}\n selectSite={selectSite}\n soilMoisture={soilMoisture}\n isBlueAlert={isBlueAlert}\n />\n );\n }\n )}\n </div>\n {selectedSite?.type === 'terraprobe' ? (\n <TerraprobeSite\n selectedSite={selectedSite}\n siteSummaries={props.siteSummaries}\n siteReadings={props.siteReadings}\n siteStrategies={props.siteStrategies}\n isPrinting={isPrinting}\n selectSite={selectSite}\n />\n ) : selectedSite?.type === 'irrimax' ? (\n <IrrimaxSite\n site={selectedSite}\n siteSummaries={props.siteSummaries}\n selectSite={selectSite}\n />\n ) : null}\n </Fragment>\n );\n}\n\nIrrigationGraphs.propTypes = {\n siteSummaries: PropTypes.array.isRequired,\n siteReadings: PropTypes.object.isRequired,\n siteStrategies: PropTypes.object.isRequired,\n printing: PropTypes.bool\n};\n\n// Doesn't need to be wrapped in observer because withIrrigationMonitoringSites is\nexport default withIrrigationMonitoringSites(IrrigationGraphs);\n\n","import React, { Fragment, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { storesContext } from '../../stores/storesContext';\nimport { Row, Col } from 'react-bootstrap';\nimport RecommendationTable from './tables/RecommendationTable';\nimport { withIrrigationMonitoringSites } from './IrrigationProviders';\n\nfunction ProgrammingGuide(props) {\n const userStore = useContext(storesContext);\n\n return (\n <Fragment>\n {userStore.propertiesStore.selectedProperty.irrigation_monitoring_sites.map(\n (site) => {\n if (\n props.siteReadings[site.id] &&\n props.siteReadings[site.id].filter(\n (reading) => reading.type === 'Probe'\n ).length > 0\n )\n return (\n <Row key={site.id} className='my-3'>\n <Col>\n <h4>{site.name}</h4>\n <RecommendationTable\n readingData={props.siteReadings[site.id]}\n site={site}\n />\n </Col>\n </Row>\n );\n else\n return (\n <Row key={site.id}>\n <Col>{site.name} - No Data</Col>\n </Row>\n );\n }\n )}\n </Fragment>\n );\n}\n\nProgrammingGuide.propTypes = {\n siteReadings: PropTypes.object.isRequired\n};\n\n// Doesn't need to be wrapped in observer because withIrrigationMonitoringSites is\nexport default withIrrigationMonitoringSites(ProgrammingGuide);\n","import React from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport PageTitle from '../helpers/PageTitle';\nimport './irrigation.scss';\nimport IrrigationGraphs from './IrrigationGraphs';\nimport ProgrammingGuide from './ProgrammingGuide';\n\nexport function IrrigationPage(props) {\n const { handlePrint, printing } = props.print;\n\n return (\n <div id='page-container'>\n <Row>\n <Col></Col>\n <Col sm={4} md={6}>\n <PageTitle title={'Monitoring'} />\n </Col>\n <Col className='text-center'>\n <div className='hide-on-print'>\n <Button\n className='float-right center'\n variant='info'\n onClick={() => handlePrint()}\n >\n Print to PDF\n </Button>\n </div>\n </Col>\n </Row>\n <IrrigationGraphs printing={printing} />\n </div>\n );\n}\n\nexport function ProgrammingGuidePage(props) {\n return (\n <div id='page-container'>\n <Row>\n <Col>\n <PageTitle title={'Irrigation: Property Programming Guide'} />\n </Col>\n </Row>\n <Button variant='outline-primary' as={Link} to='/irrigation'>\n Back\n </Button>\n <ProgrammingGuide />\n </div>\n );\n}\n\n","import { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { observer } from 'mobx-react';\nimport moment from 'moment';\nimport React, { Fragment, useContext, useEffect, useState } from 'react';\nimport { Button, Col, Row, Table } from 'react-bootstrap';\nimport Select from 'react-select';\nimport { storesContext } from '../../../stores/storesContext';\nimport LoadingOverlay from '../../LoadingOverlay';\nimport PageTitle from '../../helpers/PageTitle';\nimport IrrigationLegend from '../IrrigationLegend';\nimport { withIrrigationSummaries } from '../IrrigationProviders';\nimport {\n CalculateSiteSoilMoisture,\n SummaryBootstrapColorClass\n} from '../helpers';\n\nconst IrrigationSummaryTable = withIrrigationSummaries((props) => {\n const userStore = useContext(storesContext);\n\n const handleClick = (propertyId, irrigationMonitoringSiteId) => {\n userStore.propertiesStore.selectProperty(\n propertyId,\n userStore.selectedDatabase,\n userStore.bearerToken,\n userStore.refreshCallback\n );\n localStorage.setItem(\n 'irrigation_monitoring_site_id',\n irrigationMonitoringSiteId\n );\n\n const newWindow = window.open(\n '/soil-water/monitoring',\n '_blank',\n 'noopener,noreferrer'\n );\n if (newWindow) newWindow.opener = null;\n };\n\n return (\n <>\n <Row className='mb-3'>\n <Col className='text-center'>\n <IrrigationLegend />\n </Col>\n </Row>\n\n {/** Table for each property */}\n {props.propertySummaries.map((propertyName) => {\n if (!propertyName.results || propertyName.results.sites.length === 0)\n return null;\n return (\n <div style={{ overflowX: 'auto' }}>\n <Table bordered key={propertyName.property.id}>\n <thead>\n <tr>\n <th colSpan='100%'>{propertyName.property.name}</th>\n </tr>\n <tr>\n <th colSpan={1} style={{ width: '15%' }}>\n Site Name\n </th>\n <th colSpan={1} style={{ width: '10%' }}>\n Level in profile\n </th>\n <th colSpan={1} style={{ width: '15%' }}>\n Last Monitored\n </th>\n <th colSpan={1} style={{ width: '20%' }}>\n Comments\n </th>\n <th colSpan={1} style={{ width: '10%' }}>\n Irrigation Applied\n </th>\n <th colSpan={1} style={{ width: '10%' }}>\n Irrigation Efficiency\n </th>\n <th colSpan={1} style={{ width: '10%' }}>\n Rain\n </th>\n <th colSpan={1} style={{ width: '10%' }}>\n Rootzone\n </th>\n </tr>\n </thead>\n <tbody>\n {props.propertySummaries.flatMap((propertySummary) => {\n if (\n propertyName.property.name !== propertySummary.property.name\n ) {\n return null;\n }\n return propertySummary.results\n ? propertySummary.results.sites.map((siteResults) => {\n const irrigationMonitoringSite =\n propertySummary.property.irrigation_monitoring_sites.find(\n (site) =>\n Number(site.site_number) === siteResults.site_id\n );\n if (irrigationMonitoringSite) {\n return (\n <tr key={irrigationMonitoringSite.id}>\n <td\n className={`bg-${SummaryBootstrapColorClass(\n siteResults\n )} print-text-${SummaryBootstrapColorClass(\n siteResults\n )}`}\n >\n <div className='px-0 d-flex justify-content-between'>\n {irrigationMonitoringSite.site_name}\n <Button\n variant={'link'}\n onClick={() =>\n handleClick(\n propertyName.property.id,\n irrigationMonitoringSite.id\n )\n }\n className='text-dark'\n >\n <FontAwesomeIcon icon={faExternalLinkAlt} />\n </Button>\n </div>\n </td>\n <td\n className={`bg-${SummaryBootstrapColorClass(\n siteResults\n )} print-text-${SummaryBootstrapColorClass(\n siteResults\n )}`}\n >\n {Math.round(\n CalculateSiteSoilMoisture(siteResults) * 100\n )}\n %\n </td>\n <td>\n {moment(\n siteResults.latest_reading.date,\n 'DD-MM-YYYY'\n ).format('Do MMM YYYY')}\n </td>\n <td>{siteResults.latest_reading.comment}</td>\n <td>\n {siteResults.latest_reading.irrigation_mms !==\n null\n ? `${parseFloat(\n siteResults.latest_reading.irrigation_mms.toFixed(\n 1\n )\n )} mm`\n : 'N/A'}\n </td>\n <td\n className={`bg-${SummaryBootstrapColorClass(\n siteResults\n )} print-text-${SummaryBootstrapColorClass(\n siteResults\n )}`}\n >\n {siteResults.latest_reading\n .effective_irrigation !== null &&\n siteResults.latest_reading.irrigation_mms !==\n null &&\n siteResults.latest_reading.irrigation_mms > 0\n ? `${Math.round(\n ((siteResults.latest_reading\n .effective_irrigation *\n 1.0) /\n siteResults.latest_reading\n .irrigation_mms) *\n 100\n )}%`\n : 'N/A'}\n </td>\n <td>\n {siteResults.latest_reading.rain !== null\n ? `${siteResults.latest_reading.rain} mm`\n : 'N/A'}\n </td>\n <td>\n 0 - {siteResults.latest_reading.rz1_bottom} cm\n </td>\n </tr>\n );\n } else {\n return null;\n }\n })\n : null;\n })}\n </tbody>\n </Table>\n </div>\n );\n })}\n </>\n );\n});\n\nfunction IrrigationSummary() {\n const userStore = useContext(storesContext);\n const [loadingPropertyGroups, setLoadingPropertyGroups] = useState(false);\n const [propertyGroups, setPropertyGroups] = useState([]);\n const [selectedPropertyGroupId, setSelectedPropertyGroupId] = useState(null);\n const [loadingSelectedPropertyGroup, setLoadingSelectedPropertyGroup] =\n useState(null);\n const [selectedPropertyGroup, setSelectedPropertyGroup] = useState(null);\n\n // Load property groups\n useEffect(() => {\n // Clear the selected property group so the HOC doesn't try using the prev\n // seasons properties\n setSelectedPropertyGroupId(null);\n setSelectedPropertyGroup(null);\n\n // Load the new seasons property groups\n setLoadingPropertyGroups(true);\n fetch(`${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups`, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n SeasonalDatabase: userStore.selectedDatabase,\n Authorization: `Bearer ${userStore.bearerToken}`\n }\n })\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) userStore.refresh();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setPropertyGroups(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setPropertyGroups([]);\n })\n .finally(() => {\n setLoadingPropertyGroups(false);\n });\n }, [userStore, userStore.selectedDatabase]);\n\n // Load the selected property group with required relations\n useEffect(() => {\n if (selectedPropertyGroupId !== null) {\n setLoadingSelectedPropertyGroup(true);\n fetch(\n `${process.env.REACT_APP_PROPERTIES_API_URL}api/property-groups/${selectedPropertyGroupId}?with[]=properties.irrigationMonitoringSites`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n SeasonalDatabase: userStore.selectedDatabase,\n Authorization: `Bearer ${userStore.bearerToken}`\n }\n }\n )\n .then((res) => {\n if (res.ok) return res.json();\n else if (res.status === 401) userStore.refresh();\n else throw Error(res.statusText);\n })\n .then((data) => {\n if (data) {\n setSelectedPropertyGroup(data);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') console.error(err);\n setSelectedPropertyGroup(null);\n })\n .finally(() => {\n setLoadingSelectedPropertyGroup(false);\n });\n }\n }, [selectedPropertyGroupId, userStore]);\n\n return (\n <Fragment>\n <Row>\n <Col>\n <PageTitle title='Seasonal Summary Report' />\n </Col>\n </Row>\n <Row className='justify-content-center mb-3 mt-3'>\n <Col\n xs={3}\n sm={2}\n className='d-flex align-items-center justify-content-end pr-0 font-weight-bold'\n >\n Property Group:\n </Col>\n <Col xs={9} md={8} lg={6}>\n <Select\n options={propertyGroups\n .filter(\n (propertyGroup) =>\n !propertyGroup.deleted_at &&\n propertyGroup.group_type === 'manual'\n )\n .map((propertyGroup) => {\n return {\n label: propertyGroup.name,\n value: propertyGroup.id\n };\n })}\n onChange={(option) => setSelectedPropertyGroupId(option.value)}\n value={\n selectedPropertyGroup\n ? {\n value: selectedPropertyGroup.id,\n label: selectedPropertyGroup.name\n }\n : ''\n }\n isLoading={loadingPropertyGroups}\n />\n </Col>\n <Col\n xs={0}\n sm={1}\n className='d-flex align-items-center justify-content-end pl-0 font-weight-bold'\n style={{ visibility: 'hidden' }}\n >\n Property Group:\n </Col>\n </Row>\n {selectedPropertyGroup ? (\n <IrrigationSummaryTable properties={selectedPropertyGroup.properties} />\n ) : null}\n {loadingSelectedPropertyGroup ? <LoadingOverlay /> : null}\n </Fragment>\n );\n}\n\nexport default observer(IrrigationSummary);\n\n","import { Formik } from 'formik';\nimport React, { useState } from 'react';\nimport {\n Alert,\n Button,\n Card,\n Col,\n Container,\n Form,\n Row\n} from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport LoadingOverlay from '../LoadingOverlay';\nimport PageTitle from '../helpers/PageTitle';\nimport { validateEmailAddress } from '../helpers/Validation';\n\nfunction ForgotPassword() {\n const [message, setMessage] = useState(null);\n\n return (\n <Container>\n <Row>\n <Col>\n <PageTitle title={'Forgot Password'} />\n </Col>\n </Row>\n <Row className='justify-content-center mt-3'>\n <Col md={6}>\n <Formik\n initialValues={{ email: '' }}\n validate={(values) => {\n const errors = {};\n\n if (!values.email) {\n errors.email = 'Required';\n } else if (!validateEmailAddress(values.email)) {\n errors.email = 'Invalid email address';\n }\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n fetch(\n process.env.REACT_APP_AUTH_API_URL +\n 'api/forgot-password/generate',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n service: 'fruition'\n },\n body: JSON.stringify(values)\n }\n )\n .then((res) => {\n if (res.ok) {\n setMessage({\n variant: 'success',\n message:\n 'Please check your email for a password reset link'\n });\n } else if (res.status === 404) {\n setMessage({\n variant: 'warning',\n message:\n 'The supplied email address does not have an account'\n });\n } else throw Error(res.statusText);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n\n setMessage({\n variant: 'danger',\n message: 'Sorry something went wrong'\n });\n })\n .finally(() => {\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <Card>\n <Card.Body>\n {message ? (\n <Alert\n variant={message.variant}\n onClose={() => {\n setMessage(null);\n }}\n dismissible\n >\n {message.message}\n </Alert>\n ) : null}\n <Form noValidate onSubmit={props.handleSubmit}>\n <Form.Group controlId='email'>\n <Form.Label>Email Address</Form.Label>\n <Form.Control\n type='email'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n value={props.values.email}\n placeholder='Enter your email address'\n autoComplete='username'\n isInvalid={props.errors.email}\n />\n <Form.Control.Feedback type='invalid'>\n {props.errors.email}\n </Form.Control.Feedback>\n </Form.Group>\n\n <div className='d-flex justify-content-center'>\n <Button\n className='mr-2'\n variant='outline-secondary'\n as={Link}\n to=''\n >\n Cancel\n </Button>\n <Button variant='primary' type='submit'>\n Submit\n </Button>\n </div>\n </Form>\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </Card.Body>\n </Card>\n )}\n </Formik>\n </Col>\n </Row>\n </Container>\n );\n}\n\nexport default ForgotPassword;\n\n","import { Formik } from 'formik';\nimport React, { useState } from 'react';\nimport {\n Alert,\n Button,\n Card,\n Col,\n Container,\n Form,\n Row\n} from 'react-bootstrap';\nimport { Link, useHistory, useParams } from 'react-router-dom';\nimport LoadingOverlay from '../LoadingOverlay';\nimport PageTitle from '../helpers/PageTitle';\n\nfunction ResetPassword() {\n let history = useHistory();\n let { token } = useParams();\n const [message, setMessage] = useState(null);\n\n return (\n <Container>\n <Row>\n <Col>\n <PageTitle title={'Reset Password'} />\n </Col>\n </Row>\n <Row className='justify-content-center mt-3'>\n <Col md={6}>\n <Formik\n initialValues={{ password: '', cpassword: '' }}\n validate={(values) => {\n const errors = {};\n\n if (!values.password) {\n errors.password = 'Required';\n } else if (values.password !== values.cpassword) {\n errors.cpassword = 'Please confirm your new password';\n }\n\n return errors;\n }}\n onSubmit={(values, actions) => {\n fetch(\n process.env.REACT_APP_AUTH_API_URL +\n 'api/forgot-password/consume',\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n service: 'fruition'\n },\n body: JSON.stringify({\n token: token,\n password: values.password\n })\n }\n )\n .then((res) => {\n if (res.ok) history.push('');\n else if (res.status === 404) {\n setMessage({\n variant: 'warning',\n message:\n 'The supplied password reset token could not be found'\n });\n actions.setSubmitting(false);\n } else throw Error(res.statusText);\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development')\n console.error(err);\n\n setMessage({\n variant: 'danger',\n message: 'Sorry something went wrong'\n });\n actions.setSubmitting(false);\n });\n }}\n >\n {(props) => (\n <Card>\n <Card.Body>\n {message ? (\n <Alert\n variant={message.variant}\n onClose={() => {\n setMessage(null);\n }}\n dismissible\n >\n {message.message}\n </Alert>\n ) : null}\n <Form noValidate onSubmit={props.handleSubmit}>\n <Form.Group controlId='password'>\n <Form.Label>New Password</Form.Label>\n <Form.Control\n type='password'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n value={props.values.password}\n placeholder='Enter your new password'\n isInvalid={props.errors.password}\n />\n <Form.Control.Feedback type='invalid'>\n {props.errors.password}\n </Form.Control.Feedback>\n </Form.Group>\n\n <Form.Group controlId='cpassword'>\n <Form.Label>Confirm Password</Form.Label>\n <Form.Control\n type='password'\n onChange={props.handleChange}\n onBlur={props.handleBlur}\n value={props.values.cpassword}\n placeholder='Confirm your new password'\n isInvalid={props.errors.cpassword}\n />\n <Form.Control.Feedback type='invalid'>\n {props.errors.cpassword}\n </Form.Control.Feedback>\n </Form.Group>\n\n <div className='d-flex justify-content-center'>\n <Button\n className='mr-2'\n variant='outline-secondary'\n as={Link}\n to=''\n >\n Cancel\n </Button>\n <Button variant='primary' type='submit'>\n Submit\n </Button>\n </div>\n </Form>\n {props.isSubmitting ? <LoadingOverlay /> : null}\n </Card.Body>\n </Card>\n )}\n </Formik>\n </Col>\n </Row>\n </Container>\n );\n}\n\nexport default ResetPassword;\n\n","// A custom hook that builds on useLocation to parse\n\nimport { useMemo } from 'react';\nimport { useLocation } from 'react-router-dom';\n\n// the query string for you.\nconst useQuery = () => {\n const { search } = useLocation();\n\n return useMemo(() => new URLSearchParams(search), [search]);\n};\n\nexport default useQuery;\n\n","import {\n Properties,\n PropertyGroups,\n PropertyKeyContacts\n} from '@hortplus/properties-react';\nimport { observer } from 'mobx-react';\nimport React, { useContext } from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { useHistory, useParams } from 'react-router-dom';\nimport { storesContext } from '../../stores/storesContext';\nimport useQuery from '../helpers/hooks/useQuery';\nimport PageTitle from '../helpers/PageTitle';\n\nexport const PropertiesPage = observer(function PropertiesPage() {\n const history = useHistory();\n const { id } = useParams();\n const userStore = useContext(storesContext);\n const query = useQuery();\n\n const newPropertyIdentifier = query.get('identifier');\n const newPropertyName = query.get('name');\n const redirect = query.get('redirect');\n\n const linkTo = (url) => {\n history.push(url);\n };\n\n const changeSelectedProperty = (newId) => {\n if (Number.isInteger(newId)) {\n if (redirect) {\n history.push(`/management/properties/${newId}?redirect=${redirect}`);\n } else {\n history.push(`/management/properties/${newId}`);\n }\n } else {\n if (redirect) {\n history.push(redirect);\n } else {\n history.push('/management/properties');\n }\n }\n };\n\n return (\n <div id='page-container'>\n <Row>\n <Col>\n <PageTitle title={'Properties'} />\n </Col>\n </Row>\n <Properties\n selectedDatabase={userStore.selectedDatabase}\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refreshCallback}\n propertiesStore={userStore.propertiesStore}\n selectedPropertyId={parseInt(id)}\n changeSelectedProperty={changeSelectedProperty}\n history={history}\n linkTo={linkTo}\n authService={'fruition'}\n newProperty={{\n data: {\n identifier: newPropertyIdentifier,\n name: newPropertyName\n },\n redirect\n }}\n />\n </div>\n );\n});\n\nexport const PropertyGroupsPage = observer(function PropertiesPage() {\n const history = useHistory();\n const { id } = useParams();\n const userStore = useContext(storesContext);\n\n const changeSelectedPropertyGroup = (newId) => {\n if (Number.isInteger(newId))\n history.push('/management/property-groups/' + newId);\n else history.push('/management/property-groups');\n };\n\n return (\n <div id='page-container'>\n <PageTitle title={'Property Groups'} />\n <PropertyGroups\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refreshCallback}\n selectedDatabase={userStore.selectedDatabase}\n selectedPropertyGroupId={parseInt(id)}\n changeSelectedPropertyGroup={changeSelectedPropertyGroup}\n history={history}\n authService={'fruition'}\n />\n </div>\n );\n});\n\nexport const PropertyKeyContactsPage = observer(\n function PropertyKeyContactsPage() {\n const history = useHistory();\n const { id } = useParams();\n const userStore = useContext(storesContext);\n\n const changeSelectedPropertyKeyContact = (newId) => {\n if (Number.isInteger(newId))\n history.push('/property-key-contacts/' + newId);\n else history.push('/management/properties');\n };\n\n const updatePropertyKeyContact = (propertyKeyContact) => {\n userStore.propertiesStore.properties.forEach((p) => {\n if (p.property_key_contact_id === propertyKeyContact.id) {\n p.property_key_contact = propertyKeyContact;\n }\n });\n };\n\n return (\n <div id='page-container'>\n <PropertyKeyContacts\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refreshCallback}\n selectedDatabase={userStore.selectedDatabase}\n selectedPropertyKeyContactId={parseInt(id)}\n changeSelectedPropertyKeyContact={changeSelectedPropertyKeyContact}\n updatePropertyKeyContact={updatePropertyKeyContact}\n />\n </div>\n );\n }\n);\n\n","import {\n AdminOverview,\n AdminSeasonOverviewReport,\n HotTrap,\n MissingMonitoring,\n Traplog,\n TraplogDataProvider,\n TrappingMonitoringReport,\n TrappingRuns\n} from '@hortplus/traplog-react';\nimport { observer } from 'mobx-react';\nimport React, { useContext } from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { useHistory, useParams } from 'react-router-dom';\nimport { storesContext } from '../../stores/storesContext';\nimport useQuery from '../helpers/hooks/useQuery';\nimport PageTitle from '../helpers/PageTitle';\nimport './traplog-styles.scss';\n\nexport const TraplogPage = observer(function () {\n const userStore = useContext(storesContext);\n\n return (\n <div id='page-container'>\n <Row className='mb-4'>\n <Col>\n <PageTitle title={'Trapping Overview'} />\n </Col>\n </Row>\n <TraplogDataProvider\n selectedDatabase={userStore.selectedDatabase}\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refreshCallback}\n propertiesStore={userStore.propertiesStore}\n >\n <Traplog\n selectedDatabase={userStore.selectedDatabase}\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refresh}\n propertiesStore={userStore.propertiesStore}\n customOptions={{\n insects: ['CM', 'LBAM', 'OFM']\n }}\n />\n </TraplogDataProvider>\n </div>\n );\n});\n\nexport const AdminOverviewPage = observer(function () {\n const userStore = useContext(storesContext);\n\n return (\n <div id='page-container'>\n <Row className='mb-4'>\n <Col>\n <PageTitle title={'Trapping Data Entry'} />\n </Col>\n </Row>\n <TraplogDataProvider\n selectedDatabase={userStore.selectedDatabase}\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refreshCallback}\n propertiesStore={userStore.propertiesStore}\n >\n <AdminOverview\n selectedDatabase={userStore.selectedDatabase}\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refresh}\n propertiesStore={userStore.propertiesStore}\n />\n </TraplogDataProvider>\n </div>\n );\n});\n\nexport const HotTrapMapPage = observer(function () {\n const userStore = useContext(storesContext);\n\n return (\n <div id='page-container'>\n <Row className='mb-3'>\n <Col>\n <PageTitle title={'Hot Trap Map'} />\n </Col>\n </Row>\n <TraplogDataProvider\n selectedDatabase={userStore.selectedDatabase}\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refreshCallback}\n propertiesStore={userStore.propertiesStore}\n >\n <HotTrap\n selectedDatabase={userStore.selectedDatabase}\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refresh}\n propertiesStore={userStore.propertiesStore}\n />\n </TraplogDataProvider>\n </div>\n );\n});\n\nexport const TrappingRunsPage = observer(function () {\n const history = useHistory();\n const { id } = useParams();\n const userStore = useContext(storesContext);\n\n const changeSelectedTrappingRunId = (newId) => {\n if (Number.isInteger(newId))\n history.push('/pest-disease/trapping-runs/' + newId);\n else history.push('/pest-disease/trapping-runs');\n };\n\n return (\n <div id='page-container'>\n <Row>\n <Col>\n <PageTitle title={'Trapping Runs'} />\n </Col>\n </Row>\n <TrappingRuns\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refreshCallback}\n selectedDatabase={userStore.selectedDatabase}\n selectedTrappingRunId={parseInt(id)}\n changeSelectedTrappingRunId={changeSelectedTrappingRunId}\n history={history}\n permissionsCard={true}\n authService={'fruition'}\n />\n </div>\n );\n});\n\nexport const TrappingMonitoringReportPage = observer(function () {\n const userStore = useContext(storesContext);\n\n return (\n <div id='page-container'>\n <Row>\n <Col>\n <PageTitle title={'Weekly Trapping Report'} />\n </Col>\n </Row>\n <TrappingMonitoringReport\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refreshCallback}\n selectedDatabase={userStore.selectedDatabase}\n propertiesStore={userStore.propertiesStore}\n />\n </div>\n );\n});\n\nexport const MissingMonitoringPage = observer(function () {\n const userStore = useContext(storesContext);\n\n return (\n <div id='page-container'>\n <Row className='mb-4'>\n <Col>\n <PageTitle title={'Missing Trapping Report'} />\n </Col>\n </Row>\n <MissingMonitoring\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refreshCallback}\n selectedDatabase={userStore.selectedDatabase}\n />\n </div>\n );\n});\n\nexport const SeasonOverviewReportPage = observer(function () {\n const userStore = useContext(storesContext);\n const query = useQuery();\n const propertyId = query.get('property_id');\n\n return (\n <div id='page-container'>\n <Row className='mb-4'>\n <Col>\n <PageTitle title={'Season Overview'} />\n </Col>\n </Row>\n <AdminSeasonOverviewReport\n bearerToken={userStore.bearerToken}\n refreshBearerToken={userStore.refreshCallback}\n selectedDatabase={userStore.selectedDatabase}\n propertiesStore={userStore.propertiesStore}\n propertyId={propertyId !== null ? parseInt(propertyId) : null}\n />\n </div>\n );\n});\n\n","import { observer } from 'mobx-react';\nimport React, { useContext, useEffect } from 'react';\nimport { Switch } from 'react-router-dom';\nimport { gtagWrapper } from './analytics';\nimport Account from './components/account/Account';\nimport ChangePassword from './components/account/ChangePassword';\nimport UserManager from './components/admin/UserManager';\nimport BlockScanningReportsPage from './components/block_scanning/BlockScanningReportsPage';\nimport BlockScanningUploadPage from './components/block_scanning/upload/BlockScanningUploadPage';\nimport CropScanningReports from './components/crop_scanning/CropScanningReports';\nimport { GreenAtlasUploadPage } from './components/crop_scanning/upload/GreenAtlasUploadPage';\nimport Dashboard from './components/dashboard/Dashboard';\nimport ErrorBoundary from './components/helpers/ErrorBoundary';\nimport Route from './components/helpers/Route';\nimport { ToastContainer } from './components/helpers/toasts/ToastUtils';\nimport { IrrigationPage } from './components/irrigation/index';\nimport IrrigationSummary from './components/irrigation/reports/IrrigationSummary';\nimport ForgotPassword from './components/login/ForgotPassword';\nimport ResetPassword from './components/login/ResetPassword';\nimport {\n PropertiesPage,\n PropertyGroupsPage,\n PropertyKeyContactsPage\n} from './components/properties/index';\nimport {\n HotTrapMapPage,\n MissingMonitoringPage,\n SeasonOverviewReportPage,\n AdminOverviewPage as TraplogAdminOverviewPage,\n TraplogPage,\n TrappingMonitoringReportPage,\n TrappingRunsPage\n} from './components/traplog/index';\nimport apm, { setupApmUser } from './rum';\nimport { storesContext } from './stores/storesContext';\n\nfunction App() {\n const userStore = useContext(storesContext);\n // Associate user ID with logs.\n useEffect(\n () => setupApmUser(apm, userStore.user ? userStore.user.id : undefined),\n [userStore.user]\n );\n\n useEffect(() => {\n if (userStore.loggedIn && userStore.selectedDatabase) {\n userStore.propertiesStore.setRequestWith([\n 'irrigationMonitoringSites.irrimaxSites'\n ]);\n userStore.propertiesStore.loadProperties(\n userStore.selectedDatabase,\n userStore.bearerToken,\n userStore.refreshCallback\n );\n }\n }, [\n userStore.selectedDatabase,\n userStore.bearerToken,\n userStore.loggedIn,\n userStore.propertiesStore,\n userStore.refreshCallback\n ]);\n\n useEffect(() => {\n gtagWrapper('UA-112489177-15');\n }, []);\n\n return (\n <ErrorBoundary>\n <ToastContainer />\n <Switch>\n <Route path='/forgot-password/:token+' component={<ResetPassword />} />\n <Route path='/forgot-password' component={<ForgotPassword />} />\n\n {/* Management Routes */}\n <Route\n path='/management/users/:id'\n component={<UserManager />}\n requiresAuth\n requresAdmin\n />\n <Route\n path='/management/users'\n component={<UserManager />}\n requiresAuth\n requiresAdmin\n />\n <Route\n path='/properties/property-key-contacts/:id'\n component={<PropertyKeyContactsPage />}\n requiresAuth\n requiresAdmin\n />\n <Route\n path='/management/properties/:id'\n component={<PropertiesPage />}\n requiresAuth\n />\n <Route\n path='/management/properties'\n component={<PropertiesPage />}\n requiresAuth\n />\n <Route\n path='/management/property-groups/:id'\n component={<PropertyGroupsPage />}\n requiresAuth\n />\n <Route\n path='/management/property-groups'\n component={<PropertyGroupsPage />}\n requiresAuth\n />\n\n {/* Soil & Water Routes */}\n <Route\n path='/soil-water/monitoring'\n component={<IrrigationPage />}\n requiresAuth\n usePropertiesSelecter\n />\n <Route\n path='/soil-water/seasonal-summary-report'\n component={<IrrigationSummary />}\n requiresAuth\n />\n {/* <Route\n path='/soil-water/reports'\n component={<></>}\n requiresAuth\n /> */}\n\n {/* Pomology Routes */}\n {/* <Route\n path='/pomology/calculators'\n component={<></>}\n requiresAuth\n /> */}\n\n {/* Precision Hort Routes */}\n {/* <Route\n path='/precision-hort/calculators'\n component={<></>}\n requiresAuth\n /> */}\n <Route\n path='/precision-hort/reports'\n component={<CropScanningReports />}\n requiresAuth\n usePropertiesSelecter\n />\n <Route\n path='/precision-hort/block-scanning/upload'\n component={<BlockScanningUploadPage />}\n requiresAuth\n requiresAdmin\n />\n <Route\n path='/precision-hort/block-scanning-reports'\n component={<BlockScanningReportsPage />}\n requiresAuth\n usePropertiesSelecter\n />\n <Route\n path='/precision-hort/ga-viewer-upload'\n component={<GreenAtlasUploadPage />}\n requiresAuth\n requiresAdmin\n usePropertiesSelecter\n />\n\n {/* Trapping Routes */}\n <Route\n path='/pest-disease/trapping-overview'\n component={<TraplogPage />}\n requiresAuth\n usePropertiesSelecter\n />\n <Route\n path='/pest-disease/hot-trap-map'\n component={<HotTrapMapPage />}\n requiresAuth\n usePropertiesSelecter\n />\n <Route\n path='/pest-disease/seasonal-trapping-report'\n component={<SeasonOverviewReportPage />}\n requiresAuth\n />\n {/* <Route\n path='/pest-disease/field-reports'\n component={<></>}\n requiresAuth\n /> */}\n <Route\n path='/pest-disease/trapping-data-entry'\n component={<TraplogAdminOverviewPage />}\n requiresAuth\n requiresAdmin\n />\n <Route\n path='/pest-disease/trapping-runs/:id'\n component={<TrappingRunsPage />}\n requiresAuth\n requiresAdmin\n />\n <Route\n path='/pest-disease/trapping-runs'\n component={<TrappingRunsPage />}\n requiresAuth\n requiresAdmin\n />\n\n <Route\n path='/pest-disease/weekly-trapping-report'\n component={<TrappingMonitoringReportPage />}\n requiresAuth\n requiresAdmin\n />\n <Route\n path='/pest-disease/missing-trapping-report'\n component={<MissingMonitoringPage />}\n requiresAuth\n requiresAdmin\n />\n\n {/* Account Routes */}\n <Route\n path='/account'\n component={<Account />}\n requiresAuth\n usePropertiesSelecter\n />\n <Route\n path='/change-password'\n component={<ChangePassword />}\n requiresAuth\n />\n\n {/* Dashboard */}\n <Route component={<Dashboard />} requiresAuth />\n </Switch>\n </ErrorBoundary>\n );\n}\n\nexport default observer(App);\n\n","/**\n * Wrapper function around Google Analytics 4 gtag() function.\n *\n * This is used for setting the gtag on a per tenant basis, for individual\n * tracking. This should be called twice - once with the individual tenant's\n * gtag and once with the aggregate tag.\n *\n * @param tag GA4 gtag string.\n */\nexport function gtagWrapper(tag) {\n if (\n process.env.NODE_ENV === 'development' ||\n process.env.REACT_APP_ENVIRONMENT === 'development'\n )\n return; // Don't send analytics in dev environment.\n window.gtag('config', tag);\n}\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import mapboxgl from 'mapbox-gl';\nimport 'mapbox-gl/dist/mapbox-gl.css';\nimport 'mobx-react/batchingForReactDom'; // https://github.com/mobxjs/mobx-react-lite/#observer-batching\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport App from './App';\nimport './custom-bootstrap.scss';\nimport './global-map-styles.scss';\nimport * as serviceWorker from './serviceWorker';\n\n// Momentjs\nimport * as moment from \"moment\";\nimport * as mTZ from \"moment-timezone\";\n\n// Highcharts\nimport Highcharts from \"highcharts\";\nrequire(\"highcharts/highcharts-more\")(Highcharts);\nrequire(\"highcharts/modules/pattern-fill\")(Highcharts);\n\n// Highcharts timezone fix\n// https://github.com/highcharts/highcharts/issues/8661\nwindow.moment = moment;\nmTZ();\n\n// Fixes mapbox issue in production build https://github.com/mapbox/mapbox-gl-js/issues/10173\n// eslint-disable-next-line import/no-webpack-loader-syntax\nmapboxgl.workerClass = require('worker-loader!mapbox-gl/dist/mapbox-gl-csp-worker').default;\n\nReactDOM.render(\n <BrowserRouter>\n <App />\n </BrowserRouter>,\n document.getElementById('root')\n);\n// ReactDOM.render(\n// <React.StrictMode>\n// <BrowserRouter>\n// <App />\n// </BrowserRouter>\n// </React.StrictMode>,\n// document.getElementById('root')\n// );\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"names":["iconName","aliases","unicode","svgPathData","exports","prefix","icon","source","require","width","height","Object","defineProperty","value","definition","faUpRightFromSquare","ligatures","Z","M","window","this","v","a","z","F","hasOwnProperty","apply","SVG_NS","product","version","win","doc","document","svg","createElementNS","createSVGRect","userAgent","navigator","isChrome","indexOf","isFirefox","isMS","test","opera","isSafari","isTouchDevice","isWebKit","deg2rad","Math","PI","hasBidiBug","parseInt","split","hasTouch","TouchEvent","marginNames","noop","supportsPassiveEvents","u","get","addEventListener","removeEventListener","charts","dateFormats","seriesTypes","symbolSizes","chartCount","m","b","d","g","D","x","n","c","toString","r","B","encodeURI","J","chart","code","message","params","Error","l","console","messages","warn","push","y","G","prototype","call","H","A","nodeType","q","constructor","name","isNaN","Infinity","k","e","setAttribute","getAttribute","removeAttribute","h","arguments","length","f","opacity","filter","style","w","parseFloat","toPrecision","t","L","removeEventListenerPolyfill","nodeName","fn","hcEvents","createEvent","dispatchEvent","fireEvent","initEvent","target","preventDefault","defaultPrevented","type","unshift","getPrototypeOf","sort","order","forEach","C","easeInOutSine","cos","Array","find","map","each","grep","reduce","some","slice","random","substring","jQuery","highcharts","shift","addEvent","Point","series","runTrackerClick","addEventListenerPolyfill","passive","capture","arrayMax","arrayMin","attr","clamp","cleanRecursively","keys","clearTimeout","_clearTimeout","_x","correctFloat","createElement","padding","border","margin","appendChild","css","defined","destroyObjectProperties","destroy","discardElement","parentElement","removeChild","erase","splice","error","extend","extendClass","getMagnitude","pow","floor","log","LN10","getNestedProperty","getStyle","p","min","offsetWidth","scrollWidth","getBoundingClientRect","max","offsetHeight","scrollHeight","getComputedStyle","getPropertyValue","inArray","isArray","isClass","isDOMElement","isFunction","isNumber","isObject","isString","merge","normalizeTickInterval","round","objectEach","offset","documentElement","top","parentNode","left","pageYOffset","scrollTop","clientTop","pageXOffset","scrollLeft","clientLeft","pad","String","replace","join","pick","pInt","relativeLength","removeEvent","splat","stableSort","safeI","syncTimeout","setTimeout","timeUnits","millisecond","second","minute","hour","day","week","month","year","uniqueKey","useSerialIds","wrap","proceed","panning","enabled","styledMode","borderRadius","colorCount","defaultSeriesType","ignoreHiddenSeries","spacing","resetZoomButton","theme","zIndex","position","align","zoomBySingleTouch","borderColor","backgroundColor","plotBorderColor","rgba","NaN","input","Color","init","parse","None","stops","names","toLowerCase","charAt","substr","parsers","regex","exec","brighten","setOpacity","tweenTo","white","black","colors","Intl","DateTimeFormat","formatRange","options","variableTimezone","useUTC","Date","getTimezoneOffset","timezoneOffsetFunction","update","timezoneOffset","getTime","setTime","set","timezone","makeTime","UTC","moment","tz","utcOffset","valueOf","dateFormat","defaultOptions","lang","invalidDate","weekdays","shortWeekdays","shortMonths","months","o","Y","I","P","S","getSeconds","toUpperCase","resolveDTLFormat","main","from","to","getTimeTicks","unitRange","count","info","higherRanks","totalRange","getDateFormat","symbols","loading","decimalPoint","numericSymbols","resetZoom","resetZoomTitle","thousandsSep","global","time","title","text","widthAdjust","subtitle","caption","verticalAlign","plotOptions","labels","color","legend","alignColumns","className","layout","labelFormatter","navigation","activeColor","inactiveColor","itemStyle","cursor","fontSize","fontWeight","textOverflow","itemHoverStyle","itemHiddenStyle","shadow","itemCheckboxStyle","squareSymbol","symbolPadding","labelStyle","textAlign","tooltip","animation","dateTimeLabelFormats","footerFormat","headerShape","hideDelay","shape","shared","snap","headerFormat","pointFormat","borderWidth","stickOnContact","whiteSpace","useHTML","credits","href","defaultTime","getOptions","setOptions","pos","elem","prop","dSetter","paths","now","toD","step","element","unit","run","stopped","requestAnimationFrame","startTime","start","end","timers","curAnim","complete","duration","easing","initPath","pop","startX","endX","isArea","fillSetter","strokeSetter","defer","animate","pathArray","match","animObject","getDeferredAnimation","renderer","forExport","setAnimation","globalAnimation","stop","trustedTypes","createPolicy","createHTML","DOMParser","parseFromString","nodes","parseMarkup","filterUserAttributes","allowedAttributes","allowedReferences","setElementHTML","innerHTML","emptyHTML","addToDOM","tagName","textContent","createTextNode","allowedTags","namespaceURI","attributes","children","trim","body","childNodes","toExponential","toFixed","abs","format","numberFormatter","numberFormat","distribute","reducedLen","rank","size","targets","concat","onEvents","symbolCustomAttribs","_defaultGetter","_defaultSetter","add","parentGroup","parentInverted","inverted","textStr","buildText","added","handleZ","zIndexSetter","box","onAdd","addClass","afterSetters","doTransform","updateTransform","E","alignedObjects","alignOptions","alignByTranslate","alignTo","plotBox","placed","alignAttr","alignSetter","center","right","alignValue","hidden","msHidden","webkitHidden","applyTextOutline","getContrast","fill","fakeTS","ySetter","xSetter","Number","removeTextOutline","stroke","cloneNode","insertBefore","firstChild","K","symbolName","symbolAttr","rotation","shadows","updateShadows","clip","url","id","crisp","strokeWidth","complexColor","args","radialGradient","linearGradient","gradients","radialReference","x1","y1","x2","y2","gradientUnits","getRadialAttr","defs","radAttr","gradient","styles","textWidth","textOutline","dashstyleSetter","ownerSVGElement","isSVG","onclick","onmouseout","onmouseover","onmousemove","point","clipPath","querySelectorAll","safeRemoveChild","destroyShadows","div","destroyTextPath","getElementsByTagName","textPathWrapper","pathToSegments","fadeOut","hide","getBBox","cache","cacheKeys","querySelector","display","X","htmlGetBBox","sin","hasClass","visibility","invert","on","opacitySetter","removeClass","RegExp","setRadialReference","setTextPath","textAnchor","dy","startOffset","dx","Node","TEXT_NODE","setAttributeNS","oldShadowOptions","offsetX","offsetY","transform","cutHeight","show","hasStroke","textSetter","textPxLength","titleSetter","toFront","translate","translateX","translateY","scaleX","scaleY","matrix","rotationOriginX","rotationOriginY","visibilitySetter","xGetter","yGetter","matrixSetter","rotationOriginXSetter","rotationOriginYSetter","rotationSetter","scaleXSetter","scaleYSetter","translateXSetter","translateYSetter","verticalAlignSetter","rendererTypes","getRendererType","registerRendererType","Renderer","__extends","setPrototypeOf","__proto__","create","paddingLeftSetter","paddingSetter","paddingRightSetter","anchorX","anchorY","baseline","symbolKey","bBox","emptyBBox","baselineOffset","needsBox","deferredAttr","alignFactor","xSetting","anchorXSetter","boxAttr","getCrispAdjust","anchorYSetter","ySetting","textProps","updateTextPadding","updateBoxSize","paddingLeft","heightSetter","heightSetting","rSetter","widthSetting","getPaddedWidth","fontMetrics","firstLineMetrics","symbol","rect","hasBoxWidthChanged","widthSetter","paddingRight","innerR","open","longArc","clockwise","arc","callout","circle","diamond","roundedRect","square","triangle","svgElement","textLineHeight","lineHeight","ellipsis","noWrap","buildSVG","textCache","actualWidth","modifyTree","modifyDOM","unescapeEntities","nextSibling","previousSibling","getLineHeight","truncate","baseVal","getSubStringLength","getSpanWidth","ceil","escapes","O","U","imgCount","chartIndex","boxWrapper","getReferenceURL","allowHTML","setSize","unSubPixelFix","elementFromPoint","location","fontFamily","setStyle","isHidden","Element","cx","cy","button","label","N","setState","state","stopPropagation","crispLine","path","rx","ry","rGetter","viewBox","alignElements","image","preserveAspectRatio","Image","src","imgwidth","imgheight","backgroundSize","isImg","onload","hasLoaded","clipRect","html","rotCorr","Q","T","V","draw","compose","composedClasses","getSpanCorrection","htmlCss","htmlUpdateTransform","setSpanRotation","xCorr","yCorr","overflow","offsetLeft","offsetTop","marginLeft","marginTop","invertChild","oldTextWidth","innerText","cTT","oldRotation","oldAlign","alignOnAdd","transformOrigin","addedSetters","reverse","pointerEvents","classSetter","defaultXAxisOptions","alignTicks","allowDecimals","panningEnabled","zoomEnabled","range","endOnTick","gridLineDashStyle","gridZIndex","autoRotation","autoRotationLimit","distance","indentation","reserveSpace","staggerLines","maxPadding","minorGridLineDashStyle","minorTickLength","minorTickPosition","minPadding","opposite","reversed","reversedStacks","showEmpty","showFirstLabel","showLastLabel","startOfWeek","startOnTick","tickLength","tickPixelInterval","tickmarkPlacement","tickPosition","uniqueNames","visible","minorGridLineColor","minorGridLineWidth","minorTickColor","lineColor","lineWidth","gridLineColor","gridLineWidth","tickColor","defaultYAxisOptions","stackLabels","allowOverlap","crop","formatter","axis","total","defaultLeftAxisOptions","defaultRightAxisOptions","defaultBottomAxisOptions","defaultTopAxisOptions","registerEventOptions","eventOptions","events","isNewLabel","isNew","parameters","tickmarkOffset","addLabel","categories","logarithmic","tickPositions","tickInterval","category","lin2log","dateTime","grid","unitName","getXDateFormat","isFirst","isLast","dateTimeLabelFormat","tick","tickPositionInfo","defaultLabelFormatter","list","shortenLabel","getSlotWidth","_addedPlotLB","moveLabel","movedLabel","createLabel","labelGroup","getPosition","oldChartHeight","chartHeight","transB","oldChartWidth","chartWidth","bottom","getLabelPosition","transA","isLinked","linkedParent","tickRotCorr","reserveSpaceDefault","labelOffset","labelAlign","side","index","getLabelSize","horiz","getMarkPath","handleOverflow","labelLeft","labelRight","isRadial","len","ticks","labelPos","xy","render","newOpacity","isActive","renderGridLine","renderMark","renderLabel","gridLine","dashstyle","gridGroup","getPlotLinePath","force","old","tickSize","isXAxis","mark","axisGroup","replaceMovedLabel","isDirty","userOptions","translationSlope","tickAmount","positiveValuesOnly","pointRangePadding","pointRange","plotLinesAndBandsGroups","plotLinesAndBands","paddedTicks","overlap","minPixelPadding","minorTicks","minorTickInterval","maxLabelLength","labelEdge","hasVisibleSeries","hasNames","coll","closestPointRange","alternateBands","isX","isZAxis","linkedTo","minRange","userMinRange","maxZoom","crosshair","crosshairs","axes","xAxis","labelRotation","numericSymbolMagnitude","getSeriesExtremes","dataMin","dataMax","threshold","softThreshold","stacking","buildStacks","xData","validatePositiveValue","getXExtremes","applyExtremes","isOrdinal","brokenAxis","hasBreaks","lin2val","sector","val2lin","toPixels","toValue","translatedValue","acrossPanes","getLinearTickPositions","single","getMinorTickInterval","getMinorTickPositions","getLogTickPositions","normalizeTimeTickInterval","trimTicks","adjustForMinRange","ceiling","xIncrement","log2lin","getClosest","noSharedTooltip","nameToX","requireSorting","autoIncrement","updateNames","points","isDirtyData","processData","generatePoints","data","setAxisTranslation","axisPointRange","minPointOffset","pointPlacement","is","ordinal","slope","staticScale","minFromRange","setTickInterval","getTickAmount","userMin","userMax","getExtremes","beforePadding","usePercentage","softMin","softMax","polar","forceCrop","forceCropping","hasExtemesChanged","minTickInterval","unsquish","setTickPositions","hasVerticalPanning","tickPositioner","positions","units","adjustTickAmount","alignToOthers","pane","finalTickAmt","hasData","setScale","setAxisSize","forceRedraw","resetStacks","cleanStacks","panningState","setExtremes","kdTree","eventArgs","redraw","zoom","newMin","newMax","allowZoomOutside","displayBtn","trigger","zoomed","offsets","plotWidth","plotHeight","plotTop","plotLeft","getThreshold","autoLabelAlign","labelMetrics","MAX_VALUE","slotWidth","renderUnsquish","specificTextOverflow","addTitle","axisTitle","low","middle","high","generateTick","getOffset","axisParent","axisOffset","clipOffset","ja","ca","showAxis","titleOffset","renderLine","axisTitleMargin","getMaxLabelDimensions","maxLabelDimensions","axisLine","getLinePath","getTitlePosition","titlePosition","renderMinorTick","renderTick","isColumn","alternateGridColor","hasRendered","PlotLineOrBand","plotLines","plotBands","addPlotBandOrLine","isPlaced","renderStackTotals","getKeepProps","keepProps","keepEvents","drawCrosshair","cross","crosshairPos","plotX","plotY","chartX","chartY","stackY","isCrosshair","hideCrosshair","dashStyle","isDirtyBox","remove","setTitle","setCategories","Additions","minorAutoInterval","getPlotBandPath","isFlat","addPlotBand","addPlotLine","removePlotBandOrLine","removePlotBand","removePlotLine","svgElem","eventsAdded","getLabelText","xBounds","yBounds","allowShared","container","isSticky","outside","applyFilter","stdDeviation","bodyFormatter","tooltipOptions","formatPrefix","tooltipFormatter","cleanSplit","tt","defaultFormatter","tooltipFooterHeaderFormatter","hideTimer","tooltipTimeout","getAnchor","pointer","followPointer","normalize","tooltipPos","yAxis","plotLow","plotHigh","getLabel","inContact","hoverSeries","shouldStickOnContact","inClass","relatedTarget","onMouseOut","clientWidth","clientHeight","getChartPosition","negative","ttBelow","scrollablePixelsX","scrollablePixelsY","isStickyOnContact","move","drawTracker","refresh","applyInactiveState","getLabelConfig","renderSplit","isDirectTouch","shouldShowTooltip","spacingBox","colorIndex","updatePosition","R","scrollingContainer","positioner","W","aa","isHeader","ignoreX","boxWidth","ba","tracker","hoverPoints","hoverPoint","styledModeFormat","isFooter","labelConfig","xDateFormat","key","tooltipDateKeys","isNull","percentage","selected","animateBeforeDestroy","startXPos","getGraphicalProps","singular","startYPos","plural","applyOptions","pointValKey","optionsToObject","group","dataLabels","isValid","relativeXValue","graphic","dataLabel","destroyElements","dataSorting","legendItem","destroyItem","pointCount","firePointEvent","importEvents","allowPointSelect","select","ctrlKey","metaKey","shiftKey","getClassName","zone","stackTotal","getZone","zones","zoneAxis","nonZonedColor","hasNewShapeType","shapeType","resolveColor","pointArrayMap","setNestedProperty","_hasPointLabels","marker","_hasPointMarkers","colorByPoint","colorCounter","valueDecimals","valuePrefix","valueSuffix","hasDummyGraphic","connector","updateParallelArrays","fixedBox","hasCartesianSeries","legendType","isDirtyLegend","removePoint","selectedStaging","accumulate","getSelectedPoints","inactiveOtherPoints","onMouseOver","getChartCoordinatesFromPoint","runPointActions","hasImportedEvents","states","markerAttribs","halo","stateMarkerGraphic","pointAttribs","currentSymbol","markerGroup","isInside","isCluster","haloPath","lastValidTouch","pinchDown","runChartClick","eventsToUnbind","hasDragged","linkedSeries","navigatorSeries","setAllPointsToState","unbindDocumentMouseUp","unbindDocumentTouchEnd","clearInterval","drag","zoomHor","zoomVert","mouseDownX","mouseDownY","panKey","selectionMarker","touch","sqrt","isInsidePlot","visiblePlotOnly","mapView","zoomX","zoomY","selectionMarkerFill","pan","dragStart","mouseIsDown","cancelClick","drop","hasPinched","originalEvent","scaleGroups","_cursor","findNearestKDPoint","findNearestPointBy","searchPoint","distX","dist","shapeArgs","clientX","isNode","chartPosition","getCoordinates","getHoverData","stickyTracking","directTouch","enableMouseTracking","isBoosting","getPoint","getPointFromEvent","onTrackerMouseOut","toElement","click","followTouchMove","setDOMEvents","touches","item","changedTouches","pageX","pageY","onContainerClick","onContainerMouseDown","buttons","onContainerMouseMove","zoomOption","onContainerMouseLeave","hoverChartIndex","reset","onContainerMouseEnter","setHoverChartIndex","returnValue","touchSelect","openMenu","onDocumentTouchEnd","onContainerTouchMove","onContainerTouchStart","onDocumentMouseMove","onDocumentMouseUp","pinch","hasZoom","initiated","cancelable","bounds","res","pinchTranslate","pinchTranslateDirection","isCartesian","unDocMouseMove","hoverX","ownerDocument","getPlotBox","dataLabelsGroup","clipBox","onmousedown","bind","renderTo","zoomType","pinchType","pointerType","MSPOINTER_TYPE_TOUCH","currentTarget","PointerEvent","isRequired","MSPointerEvent","batchMSEvents","onContainerPointerDown","onContainerPointerMove","onDocumentPointerUp","pointerId","allItems","contentGroup","maxLegendWidth","maxItemWidth","legendWidth","legendHeight","lastLineHeight","lastItemY","itemY","itemX","itemMarginTop","itemMarginBottom","itemHeight","initialItemY","pages","proximate","scrollGroup","widthOption","totalItemWidth","titleHeight","symbolWidth","symbolHeight","positionCheckboxes","unchartrender","proximatePositions","positionItems","colorizeItem","legendGroup","legendLine","legendSymbol","isMarker","positionItem","isResizing","rtl","_legendItemPos","checkbox","getAllItems","clipHeight","scrollOffset","checkboxOffset","renderTitle","setText","labelFormat","renderItem","itemDistance","drawLegendSymbol","createCheckboxForItem","showCheckbox","setItemEvents","itemWidth","legendItemWidth","legendItemHeight","layoutItem","showInLegend","legendItems","getAlignment","floating","adjustMargins","legendIndex","maxHeight","arrowSize","nav","currentPage","fullHeight","pageIx","up","scroll","pager","down","upTracker","downTracker","setVisible","browserEvent","checked","defaultChecked","bubbleLegend","pointClass","getSeries","missingModuleFor","registerSeriesType","seriesType","da","ea","fa","ia","ha","ka","labelCollectors","sharedClips","symbolCounter","getArgs","callback","showAxes","firstRender","initSeries","setSeriesData","getSeriesOrderByLinks","enabledDataSorting","setData","orderSeries","getName","scrollablePlotBox","paneCoordinates","ignoreY","colorAxis","setResponsive","temporaryDisplay","layOutTitles","centerInCategory","updateTotals","getStacks","getMargins","extKey","drawChartBox","getAxes","getPointsCollection","getSelectedSeries","applyDescription","isStock","getChartSize","containerWidth","containerHeight","hcOrigStyle","hcOrigDetached","contains","hcOricDetached","setProperty","setClassName","getContainer","getElementById","skipClone","userSelect","outline","exporting","resetMargins","marginBottom","getAxisMargins","setChartSize","reflow","isPrinting","reflowTimeout","setReflow","unbindReflow","marginRight","plotSizeX","plotSizeY","plotBorderWidth","skipAxes","plotBGImage","plotBackgroundColor","plotBackgroundImage","chartBackground","plotBackground","plotBorder","plotShadow","propFromSeries","linkSeries","setDataSortingOptions","renderSeries","renderLabels","items","seriesGroup","addCredits","mapCredits","scroller","isReadyToRender","callbacks","addSeries","addAxis","createAxis","addColorAxis","showLoading","loadingDiv","loadingSpan","loadingShown","showDuration","hideLoading","hideDuration","isResponsiveOptions","propsRequireUpdateSeries","propsRequireDirtyBox","propsRequireReflow","collectionsWithUpdate","isInternal","touched","collectionsWithInit","setSubtitle","setCaption","showResetZoom","zoomOut","relativeTo","hover","resetSelection","mapNavigation","getProcessedData","yData","startMin","startMax","drawLineMarker","radius","drawRectangle","symbolRadius","enabledThreshold","normal","radiusPlus","lineWidthPlus","fillColor","cropThreshold","inactive","turboThreshold","processedYData","processedXData","_i","bindAxes","getColor","getSymbol","parallelArrays","insert","axisTypes","optionalAxis","toYData","pointIntervalUnit","pointStart","pointInterval","sorted","allowDG","negativeColor","negativeFillColor","getCyclic","hasGroupedData","findPointIndex","matchByName","cropped","cropStart","updateData","hasDerivedData","addPoint","sortData","isSeriesBoosting","getFirstValidPoint","sortKey","getExtremesFromAll","cropData","basePointRange","cropShoulder","dataGrouping","groupAll","dataGroup","groupMap","stackedYData","activeYData","dataExtremes","pointPlacementToXValue","startFromThreshold","stacks","negStacks","stackKey","getStackIndicator","base","irregularWidths","setOffset","pointXOffset","barW","yBottom","dataModify","modifyValue","isPointInside","closestPointRangePx","getValidPoints","getClipBox","getSharedClipKey","sharedClipKey","setClip","afterAnimate","finishedAnimating","drawPoints","specialGroup","hasImage","removeEvents","clips","animationTimeout","survive","applyZones","graph","area","showLine","isVML","resetZones","invertGroups","isRadialSeries","plotGroup","invertible","drawGraph","drawDataLabels","redrawPoints","searchKDTree","buildKDTree","kdAxisArray","buildingKdTree","kdNow","trackByArea","areaPath","graphPath","initialType","hasOptionChanged","setName","mouseOver","mouseOut","labelBySeries","scrollablePlotArea","minWidth","minHeight","setUpScrolling","applyFixed","fixedDiv","WebkitOverflowScrolling","overflowX","overflowY","scrollingParent","innerContainer","moveFixedElements","fixedRenderer","scrollableMask","scrollableDirty","scrollPositionX","scrollPositionY","redrawTrigger","stackTotalGroup","oldStacks","stacksTouched","setStackedPoints","setGroupedPoints","modifyStacks","cumulative","isNegative","hasValidPoints","stack","rightCliff","leftCliff","labelrank","getStackBox","justifyDataLabel","singleStacks","percentStacker","StackItem","gappedPath","getGraphPath","getZonesGraphs","preventGraphAnimation","xMap","fillGraph","linecap","connectNulls","getPointSpline","line","fillOpacity","shiftUnit","isCliff","doCurve","getStackPoints","leftNull","rightNull","rectPlotX","rightContX","rightContY","getColumnMetrics","grouping","columnIndex","groupPadding","maxPointWidth","pointWidth","pointPadding","columnMetrics","paddedWidth","columnCount","crispCol","adjustForMissingColumns","dense","translatedThreshold","minPointLength","barX","pointAttrToOptions","brightness","animationLimit","allowShadow","_hasTracking","trackerGroups","dlBox","centerX","setDataLabelStartPos","forceDL","inside","dlOptions","dataLabelOnNull","operator","property","connectors","labelDistance","contrastColor","textPath","getDataLabelPath","dataLabelPath","alignDataLabel","below","applyJitter","jitter","isLog","takeOrdinalPosition","getCenter","slicedOffset","innerSize","angular","getStartAndEndRadians","getConnectorPath","labelPosition","connectorShapes","connectorShape","final","alignment","connectorPosition","getTranslate","sliced","slicedTranslation","ignoreHiddenPoint","shadowGroup","fixedOffset","breakAt","touchingSliceAt","softConnector","straight","crookedLine","crookDistance","maxLabelDistance","startAngleRad","startR","drawEmpty","endAngleRad","delayedRendering","getX","radii","asin","sortByAngle","angle","startAngle","endAngle","half","natural","connectorPadding","dataLabelPositioners","shortened","_pos","distributeBox","radialDistributionY","positionIndex","justify","alignToConnectors","alignToPlotEdges","radialDistributionX","_attr","sideOverflow","verifyDataLabelOverflow","placeDataLabels","connectorWidth","connectorColor","moved","minSize","oldOpacity","isOld","hideOverlappingLabels","absoluteBox","currentOptions","matchResponsiveRule","condition","maxWidth","_id","responsive","currentResponsive","rules","chartOptions","ruleIds","undoOptions","mergedOptions","AST","Axis","Chart","Fx","Legend","Pointer","Series","SVGElement","SVGRenderer","Tick","Time","Tooltip","_modules","module","define","mousemove","mousedown","mouseup","mouseout","keydown","keyup","touchstart","touchmove","touchend","tap","selector","store","featureChanged","i","s","ui","updateMapClasses","trash","combineFeatures","uncombineFeatures","__esModule","default","Function","getOwnPropertyDescriptor","enumerable","RADIUS","FLATTENING","POLAR_RADIUS","geometry","coordinates","geometries","ring","CONTROL_BASE","CONTROL_PREFIX","CONTROL_BUTTON","CONTROL_BUTTON_LINE","CONTROL_BUTTON_POLYGON","CONTROL_BUTTON_POINT","CONTROL_BUTTON_TRASH","CONTROL_BUTTON_COMBINE_FEATURES","CONTROL_BUTTON_UNCOMBINE_FEATURES","CONTROL_GROUP","ATTRIBUTION","ACTIVE_BUTTON","BOX_SELECT","HOT","COLD","ADD","MOVE","DRAG","POINTER","NONE","POLYGON","LINE","POINT","FEATURE","LINE_STRING","FEATURE_COLLECTION","MULTI_PREFIX","MULTI_POINT","MULTI_LINE_STRING","MULTI_POLYGON","DRAW_LINE_STRING","DRAW_POLYGON","DRAW_POINT","SIMPLE_SELECT","DIRECT_SELECT","STATIC","CREATE","DELETE","UPDATE","SELECTION_CHANGE","MODE_CHANGE","ACTIONABLE","RENDER","COMBINE_FEATURES","UNCOMBINE_FEATURES","CHANGE_COORDINATES","MIDPOINT","VERTEX","ACTIVE","INACTIVE","_","freeze","classes","sources","cursors","types","geojsonTypes","modes","updateActions","meta","activeStates","interactions","LAT_MIN","LAT_RENDERED_MIN","LAT_MAX","LAT_RENDERED_MAX","LNG_MIN","LNG_MAX","LineString","MultiLineString","Polygon","_items","_nums","_length","has","delete","values","JSON","clear","clickBuffer","touchBuffer","layers","queryRenderedFeatures","properties","mouse","active","feature","currentModeName","queueMapClasses","fineTolerance","grossTolerance","interval","tolerance","rack","hats","bits","ctx","changed","incomingCoords","setCoordinates","stringify","toGeoJSON","internal","mode","userProperties","updateCoordinate","getCoordinate","addCoordinate","removeCoordinate","every","j","MultiPoint","MultiPolygon","model","TypeError","features","_coordinatesToFeatures","drawConfig","_ctx","getFeatures","setSelected","setSelectedCoordinates","feature_id","getSelected","getSelectedIds","isSelected","getFeature","deselect","deleteFeature","addFeature","clearSelectedFeatures","clearSelected","clearSelectedCoordinates","setActionableState","actionable","changeMode","updateUIClasses","activateUIButton","setActiveButton","featuresAt","newFeature","isInstanceOf","doRender","onSetup","onDrag","onClick","onMouseMove","onMouseDown","onMouseUp","onKeyUp","onKeyDown","onTouchStart","onTouchMove","onTouchEnd","onTap","onStop","onTrash","onCombineFeature","onUncombineFeature","toDisplayFeatures","onCombineFeatures","onUncombineFeatures","$","getSource","getAllIds","getChangedIds","hot","cold","parent","currentModeRender","_emitSelectionChange","fire","getSelectedCoordinates","_deletedFeaturesToEmit","clearChangedIds","_features","_featureIds","_selectedFeatureIds","_selectedCoordinates","_changedFeatureIds","_mapInitialConfig","silent","createRenderBatch","setDirty","getAll","coord_path","setFeatureProperty","storeMapConfig","isEnabled","restoreMapConfig","enable","disable","getInitialConfigValue","onRemove","off","connect","removeLayers","removeButtons","removeEventListeners","clearMapClasses","addLayers","addEventListeners","mousedrag","touchdrag","which","featureTarget","touchEnabled","srcElement","classList","keyCode","controls","line_string","polygon","zoomend","changeZoom","dataType","setup","getLayer","defaultMode","actions","keybindings","getMode","onDeactivate","onActivate","addButtons","combine_features","uncombine_features","boxSelect","boxZoom","dragPan","loaded","setInterval","addSource","addLayer","removeLayer","removeSource","paint","et","nt","ot","rt","it","at","st","ut","ct","lt","dt","isOfMetaType","isShiftMousedown","isActiveFeature","isInactiveFeature","noTarget","isFeature","isVertex","isShiftDown","isEscapeKey","isEnterKey","isTrue","pt","ft","ht","clientY","gt","yt","lng","lat","vt","midpoints","selectedPaths","clone","_add","sub","_sub","multByPoint","_multByPoint","divByPoint","_divByPoint","mult","_mult","_div","rotate","_rotate","rotateAround","_rotateAround","matMult","_matMult","_unit","perp","_perp","_round","mag","equals","distSqr","atan2","angleTo","angleWith","angleWithSep","convert","mt","doubleClickZoom","_t","bt","Et","Tt","GeometryCollection","Feature","FeatureCollection","Ct","Ot","St","It","xt","Mt","Lt","Nt","At","node","node_","parents","isRoot","level","circular","wt","before","after","pre","post","block","Pt","isLeaf","notLeaf","notRoot","Rt","Dt","Ft","Boolean","kt","Ut","_bbox","_valid","include","bbox","union","_fastContains","intersect","jt","Vt","Bt","Gt","Jt","zt","bboxify","Yt","$t","qt","Ht","dragMoveLocation","boxSelectStartLocation","boxSelectElement","boxSelecting","canBoxSelect","dragMoving","canDragMove","initiallySelectedFeatureIds","featureIds","fireActionable","fireUpdate","action","getUniqueIds","stopExtendedInteractions","clickAnywhere","clickOnVertex","clickOnFeature","featureId","coordPath","startPos","lngLat","startOnActiveFeature","startBoxSelect","dragMove","whileBoxSelect","WebkitTransform","includes","createdFeatures","deletedFeatures","Xt","Wt","Zt","selectedCoordPaths","startDragging","stopDragging","onVertex","pathsToCoordinates","onMidpoint","onFeature","dragFeature","dragVertex","clickNoTarget","clickInactive","clickActiveFeature","localeCompare","numeric","Kt","Qt","stopDrawingAndRemove","te","currentVertexPosition","ee","direction","ne","simple_select","direct_select","draw_point","draw_polygon","draw_line_string","oe","displayControlsDefault","re","ie","ae","se","self","process","binding","isTypedArray","IE_PROTO","Buffer","Symbol","Uint8Array","propertyIsEnumerable","toStringTag","getOwnPropertySymbols","isBuffer","__data__","byteLength","byteOffset","buffer","hash","string","ArrayBuffer","resolve","ue","ce","le","de","CommonSelectors","constrainFeatureMovement","createMidPoint","createSupplementaryPoints","createVertex","euclideanDistance","getFeatureAtAndSetCursors","isClick","isEventAtCoordinates","isTap","mapEventToBoundingBox","ModeHandler","moveFeatures","sortFeatures","stringSetsAreEqual","StringSet","toDenseArray","pe","getFeatureIdsAt","deleteAll","api","fe","constants","lib","getFirstMatch","getSecondMatch","matchAndReturnConst","getWindowsVersionName","getMacOSVersionName","getAndroidVersionName","getVersionPrecision","compareVersions","assign","getBrowserAlias","BROWSER_ALIASES_MAP","getBrowserTypeByAlias","BROWSER_MAP","ENGINE_MAP","OS_MAP","PLATFORMS_MAP","Bada","BlackBerry","Chrome","Chromium","Electron","Epiphany","Firefox","Focus","Generic","Googlebot","Maxthon","Opera","PhantomJS","Puffin","QupZilla","QQ","QQLite","Safari","Sailfish","SeaMonkey","Sleipnir","Swing","Tizen","Vivaldi","WeChat","Roku","amazon_silk","android","bada","blackberry","chrome","chromium","electron","epiphany","firefox","focus","generic","googlebot","google_search","k_meleon","maxthon","edge","mz","naver","opera_coast","phantomjs","puffin","qupzilla","qq","qqlite","safari","sailfish","samsung_internet","seamonkey","sleipnir","swing","tizen","uc","vivaldi","webos","wechat","yandex","tablet","mobile","desktop","tv","WindowsPhone","Windows","MacOS","iOS","Android","WebOS","Linux","ChromeOS","PlayStation4","EdgeHTML","Blink","Trident","Presto","Gecko","WebKit","configurable","writable","getParser","getResult","_ua","parsedResult","getUA","parseBrowser","browser","describe","getBrowser","getBrowserName","getBrowserVersion","getOS","os","parseOS","getOSName","getOSVersion","getPlatform","platform","parsePlatform","getPlatformType","getEngine","engine","parseEngine","getEngineName","satisfies","isOS","isPlatform","isBrowser","compareVersion","isEngine","search","versionName","vendor","hasOwn","classNames","arg","argType","inner","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","deepmerge","val","emptyTarget","defaultArrayMerge","getKeys","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","mergeObject","destination","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","all","array","prev","next","deepmerge_1","root","factory","StackFrame","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","_map","thisArg","output","_filter","_indexOf","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","parts","undefined","tokens","locationParts","functionName","fileName","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","result","argsRaw","functionCall","validator","XMLParser","XMLBuilder","XMLValidator","nameStartChar","nameRegexp","regexName","isExist","isEmptyObject","obj","arrayMode","getValue","isName","getAllMatches","matches","allmatches","startIndex","lastIndex","util","allowBooleanAttributes","unpairedTags","isWhiteSpace","char","readPI","xmlData","tagname","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","validate","tags","tagFound","reachedRoot","err","tagStartPos","closingTag","readAttributeStr","attrStr","attrStrStart","validateAttributeString","msg","tagClosed","otg","openPos","col","afterAmp","validateAmpersand","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","validateNumberAmpersand","lineNumber","_defineProperty","buildFromOrderedJs","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","cdataPropName","indentBy","suppressEmptyNode","suppressUnpairedNode","suppressBooleanAttributes","tagValueProcessor","attributeValueProcessor","preserveOrder","commentPropName","entities","processEntities","stopNodes","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","j2x","buildTextValNode","buildObjectNode","repeat","startsWith","build","jObj","arrayNodeName","buildAttrPairStr","newval","replaceEntitiesValue","arrLen","listTagVal","Ks","closeTag","tagEndExp","piClosingChar","textValue","entity","arrToStr","arr","jPath","xmlStr","isPreviousElementTag","tagObj","propName","newJPath","newIdentation","attStr","attr_to_str","tagStart","tagValue","endsWith","tempInd","piTextNodeName","tagText","isStopNode","attrMap","attrVal","lastIndexOf","jArray","readEntityExp","entityName","isComment","isEntity","isElement","isAttlist","isNotation","validateEntityName","hasBody","comment","_readEntityExp","_readEntityExp2","_slicedToArray","regx","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","numberParseOptions","hex","leadingZeros","eNotation","alwaysCreateTextNode","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","attrs","buildOptions","_createClass","_classCallCheck","xmlNode","readDocType","toNumber","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","readStopNodeData","saveTextToParentTag","addChild","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","parseValue","attrsRegx","oldVal","aName","newVal","attrCollection","xmlObj","textData","closeIndex","findClosingIndex","colonIndex","lastTagName","propIndex","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","lastTag","tagContent","child","currentTagName","allNodesExp","stopNodePath","stopNodeExp","str","errMsg","closingIndex","attrBoundary","closingChar","ch","tagExpWithClosingIndex","separatorIndex","openTagCount","shouldParse","prettify","validationOption","orderedObjParser","orderedResult","compress","compressedObj","newJpath","isLeafTag","assignAttributes","jpath","atrrName","propCount","XmlNode","_this$child$push2","autoBom","Blob","XMLHttpRequest","responseType","response","onerror","send","status","MouseEvent","initMouseEvent","saveAs","HTMLAnchorElement","URL","webkitURL","download","rel","origin","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","HTMLElement","FileReader","onloadend","readAsDataURL","exportName","VENDOR_PREFIXES","TEST_ELEMENT","TYPE_FUNCTION","setTimeoutContext","timeout","context","bindFn","invokeArrayArg","iterator","deprecate","method","deprecationMessage","nextKey","dest","inherit","childP","baseP","_super","boolOrFn","ifUndefined","val1","val2","handler","splitStr","hasParent","inStr","findByKey","toArray","uniqueArray","results","prefixed","camelProp","_uniqueId","getWindowForElement","defaultView","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","COMPUTE_INTERVAL","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","Input","manager","inputTarget","domHandler","ev","inputHandler","eventType","pointersLen","pointers","changedPointersLen","changedPointers","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","timeStamp","deltaTime","getAngle","getDistance","offsetDelta","prevDelta","prevInput","deltaX","deltaY","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","scale","getRotation","maxPointers","velocity","velocityX","velocityY","last","lastInterval","computeIntervalInputData","srcEvent","computeInputData","emit","recognize","p1","p2","props","evEl","evTarget","evWin","MOUSE_INPUT_MAP","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pressed","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","removePointer","eventTypeNormalized","isTouch","storeIndex","SINGLE_TOUCH_INPUT_MAP","touchcancel","SingleTouchInput","started","normalizeSingleTouches","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","TouchInput","targetIds","getTouches","allTouches","identifier","targetTouches","changedTargetTouches","DEDUP_TIMEOUT","TouchMouseInput","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","compute","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","preventSrc","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","Recognizer","defaults","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","event","additionalEvent","tryEmit","canEmit","inputDataClone","attrTest","optionPointers","isRecognized","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","inputClass","cssProps","touchCallout","contentZooming","userDrag","tapHighlightColor","handlers","oldCssProps","toggleCssProps","curRecognizer","existing","gestureEvent","gesture","triggerDomEvent","Tap","Pan","Swipe","Pinch","Rotate","Press","useLayoutEffect","useEffect","memo","forwardRef","useRef","constructorType","Highcharts","current","allowChartUpdate","immutable","updateArgs","containerProps","useImperativeHandle","ref","CustomEvent","detail","background","defaultBackgroundOptions","innerRadius","outerRadius","updateCenter","renderBackground","getHoverPane","normalizedStartAngleRad","normalizedEndAngleRad","hoverPane","Pane","lowerStateMarkerGraphic","upperStateMarkerGraphic","graphics","plotHighX","plotLowX","isTopInside","column","xLow","xHigh","yLow","yHigh","highToXY","postTranslate","connectEnds","polarPlotY","_plotY","dataLabelUpper","origProps","deferTranslatePolar","spline","highPlot","doQuartiles","whiskerLength","q1Plot","lowPlot","q3Plot","stem","whiskers","medianShape","stemColor","stemWidth","stemDashStyle","whiskerColor","whiskerWidth","whiskerDashStyle","boxDashStyle","medianColor","medianWidth","medianDashStyle","medianPlot","q1","median","q3","connectorClassName","connectorDistance","maxSize","ranges","sizeBy","sizeByAbsoluteValue","zThreshold","movementX","maxLabel","addToLegend","getMaxLabelSize","labelWidth","labelHeight","autoRanges","seriesIndex","getRangeRadius","bubbleAttribs","connectorAttribs","labelAttribs","getRadius","bubbleItems","renderRange","formatLabel","getRanges","isBubble","ignoreSeries","zData","zMin","displayNegative","zMax","predictBubbleSizes","getPxExtremes","minPxSize","maxPxSize","updateRanges","correctSizes","scatter","bubblePadding","onPoint","getRadii","bubbleZExtremes","getZExtremes","translateBubble","arearange","rectPlotY","translate3dPoints","translate3dShapes","dial","baseLength","rearLength","baseWidth","topWidth","overshoot","pivot","hasDraggableNodes","draggable","fixedPosition","inDragMode","graphLayoutsLookup","redrawHalo","restartSimulation","enableSimulation","fixedDraggable","updateSimulation","maxIterations","isFinite","temperature","isStable","beforeStep","integrations","layouts","degree","mass","removeElementFromCollection","isParentNode","getSelectedParentNodes","bubble","useSimulation","parentNodeFormatter","parentNodeTextPath","transition","layoutAlgorithm","initialPositions","initialPositionRadius","parentNodeLimit","seriesInteraction","dragBetweenSeries","parentNodeOptions","gravitationalConstant","maxSpeed","integration","splitSeries","friction","attractive","getMass","diffTemperature","fromNode","toNode","attractiveForceFunction","barycenter","xFactor","yFactor","getK","integrate","dispX","prevX","dispY","prevY","vectorLength","repulsive","repulsiveForceFunction","getDegree","isEmpty","boxSize","divideBox","getBoxPosition","updateMassAndCenter","maxDepth","calculateMassAndCenter","visitNodeRecursive","insertNodes","attractiveForce","currentStep","initialRendering","links","repulsiveForce","quadTree","simulation","euler","verlet","setInitialRendering","approximation","forces","initPositions","setK","resetSimulation","createQuadTree","applyLimits","coolDown","startTemperature","prevSystemTemperature","systemTemperature","getSystemTemperature","cancelAnimationFrame","setArea","linkLength","addElementsToCollection","forcedStop","setMaxIterations","setTemperature","setDiffTemperature","setCircularPositions","setRandomPositions","linksTo","linksFrom","barycenterForces","getBarycenter","barnesHutApproximation","getDistXY","theta","repulsiveForces","attractiveForces","applyLimitBox","getDistR","absX","absY","allDataPoints","packedbubble","calculateParentRadius","neighbours","parentNodeRadius","parentNodeMass","accumulateAllPoints","addLayout","graphLayoutsStorage","collisionNmb","addSeriesLayout","parentNodeLayout","createParentNodes","seriesBox","calculateZExtremes","checkOverlap","deferLayout","parentNodesGroup","getPointRadius","minRadius","maxRadius","removed","placeBubbles","positionBubble","stages","rawPositions","resizeRadius","acos","POSITIVE_INFINITY","NEGATIVE_INFINITY","diffY","diffX","indexateNodes","waterfall","alreadyChanged","dummyStackItem","Composition","isSum","isIntermediateSum","stackedYNeg","stackedYPos","stackState","stateIndex","absolutePos","absoluteNeg","posTotal","negTotal","connectorThreshold","minPointLengthOffset","upColor","getCrispPath","autoConnect","isCircular","angleRad","thickness","gridLineInterpolation","getCrosshairPosition","beforeSetTickPositions","createLabelCollector","labelCollector","defaultPolarOptions","minorTickWidth","tickWidth","leftContX","leftContY","prevPointCont","isRadialBar","kdByAngle","preventPostTranslate","toXY","hasParallelCoordinates","MIN_VALUE","hasClipCircleSetter","clipCircle","pie","__spreadArray","polarPlotX","areasplinerange","alignThresholds","allowMutatingData","zooming","singleTouch","resetButton","parseStyle","bypassHTMLFiltering","undo","fontStyle","disabled","hasExtremesChanged","thresholdAlignment","getThresholdAlignment","shouldDraw","hasMockGraphic","getSelectionMarkerAttrs","getSelectionBox","boosted","boost","zoomKey","warnIfA11yModuleNotLoaded","accessibility","role","processedData","keepEventsForUpdate","joinBy","mapData","registerType","xOffset","boxBottom","boxTop","defaultX","adjustStackPosition","labelBox","charCodeAt","patterns","patternTransform","calculatePatternDimensions","_width","_height","getSVGTransform","_inverted","aspectRatio","aspectWidth","aspectHeight","_y","addPattern","idCounter","defIds","patternUnits","patternContentUnits","patternElements","pattern","patternIndex","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","getOwnPropertyNames","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","argIndex","framesToPop","DataView","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","entry","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","Promise","Set","setCacheAdd","setCacheHas","SetCache","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","WeakMap","predicate","resIndex","baseTimes","isArguments","isIndex","inherited","isArr","isArg","isBuff","isType","skipIndexes","iteratee","accumulator","initAccum","reAsciiWord","eq","baseFor","createBaseFor","castPath","toKey","arrayPush","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","other","bitmask","customizer","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","matchData","noCustomizer","objValue","srcValue","COMPARE_PARTIAL_FLAG","isMasked","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","isLength","typedArrayTags","baseMatches","baseMatchesProperty","identity","isPrototype","nativeKeys","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","baseGet","arrayMap","isSymbol","symbolProto","symbolToString","baseToString","func","stringToPath","baseSlice","coreJsData","fromRight","iterable","castSlice","hasUnicode","stringToArray","methodName","strSymbols","chr","trailing","arrayReduce","deburr","words","reApos","deburrLetter","basePropertyOf","arraySome","cacheHas","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","symbolValueOf","tag","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","freeGlobal","baseGetAllKeys","getSymbols","isKeyable","baseIsNative","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","nativeGetSymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","Ctor","ctorString","hasFunc","reHasUnicode","reHasUnicodeWord","nativeCreate","reIsUint","reIsDeepProp","reIsPlainProp","maskSrcKey","uid","assocIndexOf","getMapData","memoize","overArg","freeExports","freeModule","freeProcess","nodeUtil","freeSelf","pairs","LARGE_ARRAY_SIZE","asciiToArray","unicodeToArray","memoizeCapped","rePropName","reEscapeChar","number","quote","subString","rsAstralRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","rsDingbatRange","rsLowerRange","rsUpperRange","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsModifier","rsEmoji","reUnicodeWord","capitalize","camelCase","createCompounder","word","upperFirst","reLatin","reComboMark","defaultValue","baseHas","hasPath","baseHasIn","baseIsArguments","stubFalse","baseIsTypedArray","baseUnary","nodeIsTypedArray","arrayLikeKeys","baseKeys","isArrayLike","baseAssignValue","baseForOwn","baseIteratee","resolver","memoized","Cache","baseProperty","basePropertyDeep","snakeCase","createCaseFirst","asciiWords","hasUnicodeWord","unicodeWords","guard","window$1","unitbezier","UnitBezier","p1x","p1y","p2x","p2y","bx","ax","by","ay","sampleCurveX","sampleCurveY","sampleCurveDerivativeX","solveCurveX","epsilon","t0","t1","t2","d2","solve","pointGeometry","DEG_TO_RAD","RAD_TO_DEG","degToRad","radToDeg","TILE_CORNERS","easeCubicInOut","t3","bezier","ease","smoothstep","e0","e1","asyncAll","remaining","uniqueId","uuid","nextPowerOfTwo","LN2","validateUuid","bindAll","fns","suffix","mapObject","filterObject","warnOnceHistory","warnOnce","isCounterClockwise","calculateSignedArea","sum","isWorker","WorkerGlobalScope","parseCacheControl","cacheControl","header","$0","$1","$2","$3","maxAge","_isSafari","scope","storageAvailable","storage","setItem","removeItem","getColumn","performance","getPerformanceMeasurement","request","getEntriesByName","linkEl","reducedMotionQuery","stubTime","canvas","exported","setNow","restoreNow","frame","cancel","getImageData","img","getContext","clearRect","drawImage","resolveURL","devicePixelRatio","prefersReducedMotion","matchMedia","mapboxHTTPURLRegex","config","API_URL","API_URL_REGEX","prodMapboxHTTPURLRegex","SESSION_PATH","FEEDBACK_URL","TILE_URL_VERSION","RASTER_URL_PREFIX","REQUIRE_ACCESS_TOKEN","ACCESS_TOKEN","MAX_PARALLEL_IMAGE_REQUESTS","supported","testSupport","gl","webpCheckComplete","webpImgTest","webpImgTestOnloadComplete","testWebpTextureUpload","glForTesting","texture","createTexture","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","isContextLost","deleteTexture","SKU_ID","AUTH_ERR_MSG","isMapboxURL","isMapboxHTTPURL","urlRe","parseUrl","protocol","authority","formatUrl","parseAccessToken","accessToken","decodeURIComponent","atob","TelemetryEvent","anonId","queue","pendingRequest","getStorageKey","domain","tokenData","btoa","encodeURIComponent","fromCharCode","fetchEventData","isLocalStorageAvailable","storageKey","uuidKey","localStorage","getItem","saveEventData","processRequests","postEvent","timestamp","additionalPayload","customAccessToken","EVENTS_URL","eventsUrlObject","payload","created","toISOString","sdkIdentifier","sdkVersion","skuId","userId","finalPayload","headers","Content-Type","postData","queueRequest","turnstileEvent_","super","_customAccessToken","postTurnstileEvent","tileUrls","lastSuccess","tokenU","dueForEvent","nextUpdate","lastUpdate","nextDate","daysElapsed","getDate","enabled.telemetry","mapLoadEvent_","success","skuToken","postMapLoadEvent","mapId","errorCb","mapSessionAPI_","getSession","token","authUrlObject","getData","getSessionAPI","getMapSessionAPI","authenticatedMaps","responseConstructorSupportsReadableStream","cacheLimit","cacheCheckThreshold","sharedCaches","getCacheName","queryParams","getQueryParameters","language","worldview","param","cacheName","cacheOpen","caches","paramStart","stripQueryParameters","filteredParams","globalEntryCounter","ResourceType","Unknown","Style","Source","Tile","Glyphs","SpriteImage","SpriteJSON","AJAXError","getReferrer","worker","referrer","makeRequest","requestParameters","fetch","Request","AbortController","controller","credentials","signal","aborted","cacheIgnoringSearch","validateOrFetch","cachedResponse","responseIsFresh","finishRequest","requestTime","then","ok","cacheableResponse","statusText","catch","arrayBuffer","json","Headers","toUTCString","expires","Response","ReadableStream","blob","prepareBody","clonedResponse","put","strippedURL","fresh","abort","actor","xhr","setRequestHeader","withCredentials","getResponseHeader","getArrayBuffer","sameOrigin","host","transparentPngUrl","imageQueue","numImageRequests","getImage","webpSupported","accept","queued","cancelled","advanced","advanceImageRequestQueue","createImageBitmap","imgBitmap","arrayBufferToImage","_addEventListener","listener","listenerList","_removeEventListener","Event","ErrorEvent","Evented","_listeners","_oneTimeListeners","once","listens","listeners","oneTimeListeners","_eventedParent","_eventedParentData","setEventedParent","inputs","unbundle","deepUnbundle","unbundledValue","ParsingError","ParsingError$1","Scope","bindings","expression","Scope$1","NullType","kind","NumberType","StringType","BooleanType","ColorType","ObjectType","ValueType","CollatorType","FormattedType","ResolvedImageType","itemType","valueMemberTypes","checkSubtype","expected","memberType","isValidType","provided","allowedTypes","isValidNativeType","kCSSColorTable","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellow","yellowgreen","clamp_css_byte","parse_css_int","parse_css_float","css_hue_to_rgb","m1","m2","css_str","iv","op","ep","fname","alpha","[object Object]","parseCSSColor","toArray01","toArray01PremultipliedAlpha","Color$1","Collator","caseSensitive","diacriticSensitive","locale","sensitivity","collator","usage","lhs","rhs","resolvedLocale","resolvedOptions","FormattedSection","fontStack","textColor","Formatted","sections","unformatted","section","fromString","serialize","serialized","ResolvedImage","available","validateRGBA","isValue","mixed","typeOf","Literal","expectedType","evaluate","eachChild","outputDefined","Literal$1","RuntimeError$1","toJSON","boolean","Assertion","parsed","RuntimeError","Assertion$1","FormatExpression","firstArg","nextTokenMayBeObject","font","lastExpression","content","evaluatedContent","ImageExpression","evaluatedImageName","availableImages","to-boolean","to-color","to-number","to-string","Coercion","parseColor","num","valueToString","Coercion$1","geometryTypes","EvaluationContext$1","globals","featureState","formattedSection","_parseColorCache","canonical","featureTileCoord","featureDistanceData","geometryType","canonicalID","distanceFromCenter","bearing","cached","CompoundExpression","_evaluate","definitions","availableOverloads","overloads","signature","signatureContext","ParsingContext","registry","parsedArgs","argParseFailed","errors","signatures","stringifySignature","actualTypes","CompoundExpression$1","CollatorExpression","EXTENT","updateBBox","coord","boxWithinBox","bbox1","bbox2","getTileCoordinates","tilesAtZoom","onBoundary","pointWithinPolygon","rings","len2","pointWithinPolygons","polygons","twoSided","q2","x3","y3","det1","det2","lineIntersectPolygon","v1","v2","lineStringWithinPolygon","lineStringWithinPolygons","getTilePolygon","getTilePolygons","updatePoint","polyBBox","worldSize","halfWorldSize","getTilePoints","pointBBox","shifts","tilePoints","getTileLines","lineBBox","tileLines","tileLine","Within","geojson","polygonGeometry","tilePolygon","tilePolygons","Within$1","isFeatureConstant","isStateConstant","isGlobalPropertyConstant","Var","boundExpression","Var$1","part","expr","_parse","annotate","typeAnnotation","Expr","actual","isConstant","ec","EvaluationContext","ParsingContext$1","isTypeAnnotation","childrenConstant","findStopLessThanOrEqualTo","currentValue","nextValue","lowerIndex","upperIndex","currentIndex","Step","outputs","outputType","labelKey","valueKey","stopCount","out","Step$1","Xn","Zn","rad2deg","xyz2lab","lab2xyz","xyz2rgb","rgb2xyz","rgbToLab","rgbColor","labToRgb","labColor","interpolateHue","lab","forward","interpolate","interpolateNumber","hcl","hclColor","Interpolate","interpolation","lower","upper","exponentialInterpolation","controlPoints","rest","interpolationFactor","outputLower","outputUpper","lowerValue","upperValue","difference","progress","Interpolate$1","Coalesce","needsAnnotation","firstImage","argCount","Coalesce$1","Let","Let$1","At$1","In","needle","haystack","In$1","IndexOf","fromIndex","IndexOf$1","Match","inputType","cases","otherwise","labelContext","MAX_SAFE_INTEGER","sortedLabels","groupedByOutput","outputLookup","outputIndex","coerceLabel","Match$1","Case","branches","Case$1","Slice","beginIndex","Slice$1","isComparableType","eqCollate","makeComparison","compareBasic","compareWithCollator","isOrderComparison","Comparison","hasUntypedArgument","Equals","NotEquals","LessThan","GreaterThan","LessThanOrEqual","GreaterThanOrEqual","NumberFormat","currency","minFractionDigits","maxFractionDigits","minimumFractionDigits","maximumFractionDigits","Length","expressions","==","!=",">","<",">=","<=","case","coalesce","in","index-of","interpolate-hcl","interpolate-lab","let","literal","number-format","var","within","varargs","register","typeof","typeToString","to-rgba","rgb","feature-state","geometry-type","pitch","distance-from-center","heatmap-density","heatmapDensity","line-progress","lineProgress","sky-radial-progress","skyRadialProgress","accumulated","+","*","-","/","%","ln2","pi","^","log10","ln","log2","atan","filter-==","filter-id-==","filter-type-==","filter-<","filter-id-<","filter->","filter-id->","filter-<=","filter-id-<=","filter->=","filter-id->=","filter-has","filter-has-id","filter-type-in","filter-id-in","filter-in-small","filter-in-large","binarySearch","any","!","is-supported-script","isSupportedScript","upcase","downcase","resolved-locale","expressions$1","supportsPropertyExpression","spec","supportsZoomExpression","supportsInterpolation","interpolated","getType","identityFunction","createFunction","propertySpec","isColor","zoomAndFeatureDependent","zoomDependent","colorSpace","colorSpaces","innerFun","hashedStops","categoricalKeyType","evaluateExponentialFunction","evaluateIntervalFunction","evaluateCategoricalFunction","evaluateIdentityFunction","featureFunctions","zoomStops","featureFunctionStops","interpolationType","keyType","interp","colorspace","evaluatedLower","evaluatedUpper","StyleExpression","_warningHistory","_evaluator","_defaultValue","_enumValues","evaluateWithoutErrorHandling","isExpression","createExpression","parser","enum","formatted","resolvedImage","ZoomConstantExpression","_styleExpression","isStateDependent","ZoomDependentExpression","createPropertyExpression","isZoomConstant","zoomCurve","findZoomCurve","StylePropertyFunction","specification","_parameters","_specification","childResult","ValidationError","__line__","validateObject","elementSpecs","valueSpec","elementValidators","objectElementValidators","styleSpec","objectKey","elementSpecKey","elementSpec","validateElement","validateSpec","required","validateArray","arraySpec","validateArrayElement","arrayElementValidator","arrayElementSpec","minimum","maximum","function","$version","arrayIndex","validateNumber","specMin","specMax","validateFunction","functionValueSpec","functionType","stopKeyType","previousStopDomainValue","previousStopDomainZoom","stopDomainValues","isZoomFunction","isPropertyFunction","isZoomAndPropertyFunction","validateFunctionStop","nextStopDomainZoom","validateStopDomainValue","reportValue","validateExpression","expressionContext","expressionObj","propertyKey","propertyType","disallowedFilterParameters","disallowedParameters","validateEnum","isExpressionFilter","createFilter","layerType","needGeometry","needFeature","convertFilter","filterExp","staticFilter","isDynamicFilter","unionDynamicBranches","collapseDynamicBooleanExpressions","extractStaticFilter","filterSpec","latest","compiledStaticFilter","filterFunc","globalProperties","dynamicFilterFunc","compiledDynamicFilter","dynamicFilter","geometryNeeded","collapsed","dynamicConditionExpressions","subExpression","isBranchingDynamically","convertComparisonOp","convertNegation","filters","convertInOp","convertHasOp","validateFilter","validateNonExpressionFilter","filter_operator","geometry_type","validateProperty","layerSpec","transitionMatch","tokenMatch","glyphs","validatePaintProperty","validateLayoutProperty","validateLayer","layer","layerId","otherLayer","sourceType","lineMetrics","validateString","promoteId","validateSource","source_geojson","cluster","clusterProperties","mapExpr","reduceExpr","source_video","source_image","validateLight","light","lightSpec","rootType","validateTerrain","terrain","terrainSpec","validateFog","fog","fogSpec","VALIDATORS","projection","projectionSpec","validateGlyphsURL","validateStyle","latestStyleSpec","sortErrors","$root","opts","_validatePaintProperty","_validateLayoutProperty","emitValidationErrors","emitter","hasErrors","gridIndex","GridIndex","extent","cells","Int32Array","subarray","bboxesOffset","bboxes","_insertReadonly","_forEachCell","_insertCell","cellIndex","query","intersectionTest","_queryCell","seenUids","cell","arg1","arg2","cx1","_convertToCellCoord","cy1","cx2","cy2","_convertFromCellCoord","toArrayBuffer","metadataLength","totalCellLength","klass","writeable","omit","Grid","transferables","deserialize","_classRegistryKey","isArrayBuffer","isImageBitmap","ImageBitmap","isView","view","ImageData","$name","ZoomHistory","first","floorZ","lastIntegerZoom","lastIntegerZoomTime","lastZoom","lastFloorZoom","unicodeBlockLookup","allowsVerticalWritingMode","chars","charHasUprightVerticalOrientation","allowsLetterSpacing","charAllowsLetterSpacing","isChar","charHasRotatedVerticalOrientation","charHasNeutralVerticalOrientation","charInRTLScript","charInSupportedScript","canRenderRTL","stringContainsRTLText","_completionCallback","pluginStatus","pluginURL","triggerPluginCompletionEvent","sendPluginStateToWorker","evented","getRTLTextPluginStatus","downloadRTLTextPlugin","plugin","applyArabicShaping","processBidirectionalText","processStyledBidirectionalText","isLoaded","isLoading","isParsed","getPluginURL","EvaluationParameters","fadeDuration","zoomHistory","rtlTextPlugin","crossFadingFactor","getCrossfadeParameters","fraction","fromScale","toScale","PropertyValue","constant","normalizePropertyExpression","isDataDriven","possiblyEvaluate","TransitionablePropertyValue","transitioned","prior","TransitioningPropertyValue","untransitioned","Transitionable","_properties","_values","defaultTransitionablePropertyValues","setValue","getTransition","setTransition","Transitioning","delay","begin","finalValue","defaultTransitioningPropertyValues","PossiblyEvaluated","hasTransition","Layout","defaultPropertyValues","PossiblyEvaluatedPropertyValue","constantOr","defaultPossiblyEvaluatedValues","DataConstantProperty","DataDrivenProperty","overrides","CrossFadedDataDrivenProperty","evaluatedValue","constantValue","_calculate","cameraVal","mid","CrossFadedProperty","ColorRampProperty","Properties","overridableProperties","defaultParameters","overridable","defaultPropertyValue","defaultTransitionablePropertyValue","packUint8ToFloat","viewTypes","Int8","Int8Array","Uint8","Int16","Int16Array","Uint16","Uint16Array","Int32","Uint32","Uint32Array","Float32","Float32Array","Struct","structArray","_structArray","_pos1","_pos2","_pos4","_pos8","StructArray","isTransferred","capacity","resize","_trim","bytesPerElement","_refreshViews","reserve","oldUint8Array","uint8","int8","int16","uint16","int32","uint32","float32","createLayout","members","member","typeSize","BYTES_PER_ELEMENT","memberOffset","components","StructArrayLayout2i4","emplaceBack","v0","emplace","o2","StructArrayLayout3i6","StructArrayLayout4i8","v3","StructArrayLayout2i4ub1f12","v4","v5","v6","o1","o4","StructArrayLayout4f16","StructArrayLayout10ui20","v7","v8","v9","StructArrayLayout8ui16","StructArrayLayout6i12","StructArrayLayout4i4ui4i24","v10","v11","StructArrayLayout3i3f20","StructArrayLayout1ul4","StructArrayLayout5i4f1i1ul2ui40","v12","StructArrayLayout3i2i2i16","StructArrayLayout2f1f2i16","StructArrayLayout2ub2f12","StructArrayLayout3f12","StructArrayLayout3ui6","StructArrayLayout3i2f2ui3ul3ui2f3ub1ul1i1ub60","v13","v14","v15","v16","v17","v18","v19","v20","StructArrayLayout3i2f6i15ui1ul3f76","v21","v22","v23","v24","v25","v26","v27","v28","v29","StructArrayLayout1f4","StructArrayLayout7f28","StructArrayLayout5f20","StructArrayLayout1ul3ui12","StructArrayLayout2ui4","StructArrayLayout1ui2","StructArrayLayout2f8","FillExtrusionExtStruct","a_pos_30","a_pos_31","a_pos_32","a_pos_normal_32","FillExtrusionExtArray","CollisionBoxStruct","projectedAnchorZ","tileAnchorX","tileAnchorY","featureIndex","sourceLayerIndex","bucketIndex","CollisionBoxArray","PlacedSymbolStruct","glyphStartIndex","numGlyphs","vertexStartIndex","segment","lowerSize","upperSize","lineOffsetX","lineOffsetY","writingMode","crossTileID","associatedIconIndex","PlacedSymbolArray","SymbolInstanceStruct","projectedAnchorX","centerJustifiedTextSymbolIndex","leftJustifiedTextSymbolIndex","verticalPlacedTextSymbolIndex","textBoxStartIndex","textBoxEndIndex","verticalTextBoxEndIndex","iconBoxStartIndex","verticalIconBoxEndIndex","numHorizontalGlyphVertices","numVerticalIconVertices","collisionCircleDiameter","SymbolInstanceArray","GlyphOffsetArray","getoffsetX","SymbolLineVertexArray","getx","gety","gettileUnitDistanceFromAnchor","FeatureIndexStruct","FeatureIndexArray","FillExtrusionCentroidStruct","a_centroid_pos0","FillExtrusionCentroidArray","CircleGlobeExtStruct","a_pos_normal_30","a_pos_normal_31","CircleGlobeExtArray","patternAttributes","dashAttributes","seed","remainder","bytes","h1","h1b","c1","c2","k1","murmurhashJs","murmur3","murmur2","FeaturePositionMap","ids","indexed","getNumericId","getPositions","intId","Float64Array","numValue","MIN_SAFE_INTEGER","swap","tmp","Uniform","Uniform1f","uniform1f","Uniform4f","uniform4f","UniformColor","emptyMat4","emptyMat3","emptyMat2","packColor","ConstantBinder","uniformNames","setUniform","uniform","getBinding","CrossFadedConstantBinder","patternFrom","patternTo","pixelRatioFrom","pixelRatioTo","setConstantPatternPositions","posTo","posFrom","pixelRatio","tl","br","uniformName","SourceExpressionBinder","PaintVertexArray","maxValue","paintVertexAttributes","paintVertexArray","populatePaintArray","newLength","imagePositions","_setPaintValue","updatePaintArray","upload","paintVertexBuffer","createVertexBuffer","CompositeExpressionBinder","useIntegerZoom","minColor","maxColor","currentZoom","factor","CrossFadedCompositeBinder","zoomInPaintVertexArray","zoomOutPaintVertexArray","_setPaintValues","imageMin","imageMid","imageMax","posA","posB","zoomInPaintVertexBuffer","zoomOutPaintVertexBuffer","ProgramConfiguration","filterProperties","binders","_buffers","paintAttributeNames","propType","isCrossFaded","sourceException","StructArrayLayout","layoutType","cacheKey","getMaxValue","binder","populatePaintArrays","updatePaintArrays","featureStates","featureMap","vtLayer","dirty","defines","getBinderAttributes","getBinderUniforms","uniforms","getPaintVertexBuffers","getUniforms","locations","setUniforms","binderUniforms","updatePaintBuffers","crossfade","patternVertexBuffer","ProgramConfigurationSet","programConfigurations","needsUpload","_featureMap","_bufferOffset","attributeNameExceptions","text-opacity","icon-opacity","text-color","icon-color","text-halo-color","icon-halo-color","text-halo-blur","icon-halo-blur","text-halo-width","icon-halo-width","line-gap-width","line-pattern","fill-pattern","fill-extrusion-pattern","line-dasharray","propertyExceptions","PatternLayoutArray","composite","DashLayoutArray","defaultLayouts","binderType","layoutException","TRANSITION_SUFFIX","StyleLayer","_featureFilter","_filterCompiled","metadata","minzoom","maxzoom","sourceLayer","_unevaluatedLayout","_transitionablePaint","setPaintProperty","setLayoutProperty","_transitioningPaint","_crossfadeParameters","getLayoutProperty","_validate","getPaintProperty","transitionable","isCrossFadedProperty","wasDataDriven","oldValue","_handleSpecialPaintPropertyUpdate","newValue","_handleOverridablePaintPropertyUpdate","getProgramIds","getProgramConfiguration","updateTransitions","recalculate","source-layer","sprite","is3D","isSky","isTileClipped","hasOffscreenPass","compileFilter","featureFilter","invalidateCompiledFilter","dynamicFilterNeedsFeature","circleAttributes","circleGlobeAttributesExt","SegmentVector","segments","prepareSegment","numVertices","layoutVertexArray","indexArray","MAX_VERTEX_ARRAY_LENGTH","vertexLength","vertexOffset","primitiveOffset","primitiveLength","vaos","LngLatBounds","sw","setSouthWest","setNorthEast","_ne","LngLat","_sw","sw2","ne2","getSouthWest","getNorthEast","getNorthWest","getWest","getNorth","getSouthEast","getEast","getSouth","lnglat","containsLongitude","earthRadius","distanceTo","rad","lat1","lat2","toBounds","latAccuracy","lngAccuracy","lon","earthCircumference","circumferenceAtLatitude","latitude","mercatorXfromLng","mercatorYfromLat","mercatorZfromAltitude","altitude","lngFromMercatorX","latFromMercatorY","exp","altitudeFromMercatorZ","MAX_MERCATOR_LATITUDE","MercatorCoordinate","lngLatLike","toLngLat","toAltitude","meterInMercatorCoordinateUnits","addResampled","resampled","mx0","my0","mx2","my2","reproject","mx1","my1","px","py","hypot","resample","addResampledPred","pred","resamplePred","MAX","BITS","MIN","preparePoint","loadGeometry","tileTransform","extentScale","isReprojectedInTileSpace","z2","project","toEvaluationFeature","addCircleVertex","extrudeX","extrudeY","addGlobeExtVertex","vertexArray","encode","CircleBucket","overscaling","layerIds","hasPattern","CircleLayoutArray","TriangleIndexArray","stateDependentLayerIds","populate","styleLayer","bucketFeatures","circleSortKey","evaluationFeature","bucketFeature","globeProjection","globeExtVertexArray","stateDependentLayers","uploadPending","uploaded","layoutVertexBuffer","indexBuffer","createIndexBuffer","globeExtVertexBuffer","projectedPoint","projectTilePoint","upVector","polygonIntersectsPolygon","polygonA","polygonB","polygonContainsPoint","lineIntersectsLine","polygonIntersectsBufferedPoint","pointIntersectsBufferedLine","polygonIntersectsMultiPolygon","multiPolygon","multiPolygonContainsPoint","lineIntersectsBufferedLine","lineA","lineB","a0","a1","lineSegmentIntersectsLineSegment","b0","b1","radiusSquared","distToSegmentSquared","l2","polygonIntersectsBox","boxX1","boxY1","boxX2","boxY2","corners","corner","edgeIntersectsBox","e2","dir","getMaximumPaintValue","bucket","translateDistance","queryGeometry","translateAnchor","pixelsToTileUnits","translated","tilespaceTranslate","circle-sort-key","properties$9","circle-radius","circle-color","circle-blur","circle-opacity","circle-translate","circle-translate-anchor","circle-pitch-scale","circle-pitch-alignment","circle-stroke-width","circle-stroke-color","circle-stroke-opacity","EPSILON","ARRAY_TYPE","glMatrix","multiply","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","b2","b3","rotateX","rotateY","fromRotation","perspective","mul","fromValues","subtract","scaleAndAdd","dot","az","bz","transformMat4","transformQuat","qx","qy","qz","uvx","uvy","uvz","uuvx","uuvy","uuvz","w2","aw","bw","vec3","mat3","Ray","pos_","dir_","intersectsPlane","closestPointOnSphere","a2","dz","pz","gx","gy","gz","glen","plen","FrustumCorners","TL_","TR_","BR_","BL_","horizon_","TL","TR","BR","BL","horizon","invProj","horizonFromTop","viewportHeight","TLClip","TRClip","BRClip","BLClip","Frustum","points_","planes_","planes","zInMeters","frustumCoords","vec4","frustumPlanes","Aabb","min_","max_","quadrant","qMin","qMax","distanceX","distanceY","distanceZ","getCorners","mn","mx","intersects","frustum","aabbPoints","fullyInside","plane","pointsInside","projMin","projMax","queryIntersectsCircle","pixelPosMatrix","elevationHelper","alignWithMap","scaleWithMap","translation","isAboveHorizon","pixelToTileUnitsFactor","tileId","tileID","elevationScale","upVectorScale","metersToTile","translatedPoint","elevation","exaggeration","getElevationAt","reproj","transformedPoint","projectPoint","transformedPolygon","tilespaceRays","intersectAtHeight","screenGeometry","projectedCenter","cameraToCenterDistance","pixelsPerMeter","intersectionPt","HeatmapBucket","createImage","channels","Uint8ClampedArray","RangeError","resizeImage","newImage","copyImage","srcImg","dstImg","srcPt","dstPt","srcData","dstData","srcOffset","dstOffset","AlphaImage","RGBAImage","copy","properties$8","heatmap-radius","heatmap-weight","heatmap-intensity","heatmap-color","heatmap-opacity","renderColorRamp","evaluationGlobals","resolution","renderPixel","stride","evaluationKey","pxColor","properties$7","hillshade-illumination-direction","hillshade-illumination-anchor","hillshade-exaggeration","hillshade-shadow-color","hillshade-highlight-color","hillshade-accent-color","earcut_1","earcut","_default","holeIndices","dim","minX","minY","maxX","maxY","invSize","hasHoles","outerLen","outerNode","linkedList","triangles","steiner","getLeftmost","compareX","filterPoints","eliminateHole","earcutLinked","signedArea","insertNode","removeNode","again","ear","pass","zOrder","prevZ","nextZ","tail","numMerges","pSize","qSize","inSize","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","maxTX","maxTY","minZ","maxZ","locallyInside","isValidDiagonal","splitPolygon","hole","bridge","hx","hy","my","tanMin","sectorContainsSector","bridgeReverse","filteredBridge","leftmost","intersectsPolygon","sign","o3","onSegment","an","bp","quickselect","quickselectStep","defaultCompare","sd","classifyRings","maxRings","ccw","compareAreas","patternDependencies","patternProperty","constantPattern","addPatternDependencies","patternFeature","patternPropertyValue","deviation","polygonArea","trianglesArea","flatten","vertices","holes","dimensions","holeIndex","FillBucket","patternFeatures","FillLayoutArray","indexArray2","LineIndexArray","segments2","fillSortKey","addFeatures","layoutAttributes","indexBuffer2","triangleSegment","triangleIndex","flattened","lineSegment","lineIndex","indices","fill-sort-key","properties$6","fill-antialias","fill-opacity","fill-color","fill-outline-color","fill-translate","fill-translate-anchor","fillExtrusionAttributes","centroidAttributes","fillExtrusionAttributesExt","vectortilefeature","VectorTileFeature","pbf","_pbf","_geometry","_keys","readFields","readFeature","readVarint","cmd","cmdLen","readSVarint","x0","y0","coords","vectortilelayer","VectorTileLayer","readLayer","readString","readFloat","readDouble","readVarint64","readBoolean","readTile","clipPolygon","clipAxis1","clipAxis2","polygonsClipped","polygonClipped","clipped","vectorTileFeatureTypes","mvt","FACTOR","addVertex","nxRatio","nySign","normalUp","PartMetadata","acc","polyCount","startRing","currentPolyCount","edges","append","processBorderOverlap","addBorderIntersection","borders","centroid","span","intersectsCount","FillExtrusionBucket","FillExtrusionLayoutArray","centroidVertexArray","enableTerrain","featuresOnBorder","borderDoneWithNeighborZ","tileToMeter","circumferenceAtEquator","vertexArrayOffset","sortBorders","layoutVertexExtArray","layoutVertexExtBuffer","uploadCentroid","centroidVertexBuffer","needsCentroidUpdate","tileBounds","isGlobe","clippedPolygons","resampleFillExtrusionPolygonsForGlobe","clippedPolygon","edgeDistance","isBoundaryEdge","bottomRight","projectedP1","projectedP2","n1","n2","encodeCentroid","polyInfo","fillExtrusionHeightLift","tanAngle","tiles","leftLng","rightLng","topLat","bottomLat","gridSizeX","gridSizeY","splitFn","outPolygons","addResult","hSplits","vSplits","initialSplits","splits","depth","bboxMin","bboxMax","splitMin","splitMax","splitMid","lclip","rclip","lclipBounds","rclipBounds","maxLat","properties$5","fill-extrusion-opacity","fill-extrusion-color","fill-extrusion-translate","fill-extrusion-translate-anchor","fill-extrusion-height","fill-extrusion-base","fill-extrusion-vertical-gradient","getMercCoords","CanonicalTileID","calculateKey","urls","scheme","getTileBBox","quadkey","mask","UnwrappedTileID","OverscaledTileID","overscaledZ","scaledTo","targetZ","zDifference","calculateScaledKey","withWrap","isChildOf","sourceMaxZoom","isLessThan","wrapped","unwrapTo","overscaleFactor","toUnwrapped","bitsAvailable","getIntersectionDistance","projectedQueryGeometry","projectedFace","ab","ac","ap","dotABAB","dotABAC","dotACAC","dotAPAB","dotAPAC","denom","closestDistance","toPoint","getTerrainHeightOffset","zBase","zTop","demSampler","ele","flatRoof","centroidElevation","posX","posY","spanX","spanY","meterToDEM","getMeterToDEM","wX","wY","posPx","tileCoordToPixel","getElevationAtPixel","diffSumY","slopeX","slopeY","lineLayoutAttributes","lineLayoutAttributesExt","COS_HALF_SHARP_CORNER","LineBucket","lineClipsArray","LineLayoutArray","layoutVertexArray2","LineExtLayoutArray","maxLineLength","lineSortKey","lineAtlas","hasFeatureDashes","addConstantDashes","addFeatureDashes","patternBucketFeature","dashPropertyValue","capPropertyValue","constCap","constDash","addDash","minDashArray","midDashArray","maxDashArray","minCap","midCap","maxCap","getKey","layoutVertexBuffer2","layoutAttributesExt","lineFeatureClips","cap","miterLimit","roundLimit","lineClips","addLine","scaledDistance","totalDistance","lineSoFar","updateScaledDistance","isPolygon","sharpCornerOffset","SHARP_CORNER_OFFSET","currentVertex","prevVertex","nextVertex","prevNormal","nextNormal","joinNormal","cosAngle","cosHalfAngle","miterLength","approxAngle","isSharpCorner","lineTurnsLeft","prevSegmentLength","newPrevVertex","updateDistance","addCurrentVertex","middleVertex","currentJoin","bevelLength","offsetA","offsetB","extrude","addHalfVertex","nextSegmentLength","newCurrentVertex","endLeft","endRight","rightX","rightY","totalFeatureLength","line-cap","line-join","line-miter-limit","line-round-limit","line-sort-key","properties$4","line-opacity","line-color","line-translate","line-translate-anchor","line-width","line-offset","line-blur","line-gradient","line-trim-offset","lineFloorwidthProperty","getLineWidth","lineGapWidth","symbolLayoutAttributes","symbolGlobeExtAttributes","dynamicLayoutAttributes","collisionVertexAttributes","collisionVertexAttributesExt","collisionBoxLayout","collisionCircleLayout","ONE_EM","SIZE_PACK_FACTOR","getSizeData","tileZoom","layoutSize","minZoom","evaluateSizeForFeature","sizeData","uSize","uSizeT","evaluateSizeForZoom","transformText$1","toLocaleUpperCase","toLocaleLowerCase","verticalizedCharacterMap","#","&","(",")",",",".",":",";","=","?","@","[","\\","]","`","{","|","}","~","¢","£","¥","¦","¬","¯","–","—","‘","’","“","”","…","‧","₩","、","。","〈","〉","《","》","「","」","『","』","【","】","〔","〕","〖","〗","!","(",")",",","-",".",":",";","<",">","?","[","]","_","{","|","}","⦅","⦆","。","「","」","isVerticalClosePunctuation","isVerticalOpenPunctuation","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","Pbf","buf","Varint","Fixed64","Bytes","Fixed32","SHIFT_LEFT_32","SHIFT_RIGHT_32","utf8TextDecoder","TextDecoder","readPackedEnd","toNum","isSigned","makeRoomForExtraLength","extraLen","realloc","writePackedVarint","writeVarint","writePackedSVarint","writeSVarint","writePackedFloat","writeFloat","writePackedDouble","writeDouble","writePackedBoolean","writeBoolean","writePackedFixed32","writeFixed32","writePackedSFixed32","writeSFixed32","writePackedFixed64","writeFixed64","writePackedSFixed64","writeSFixed64","readUInt32","writeInt32","readInt32","readFontstacks","glyphData","readMessage","readFontstack","bitmap","advance","readGlyph","metrics","ascender","descender","glyph","readBytes","potpack","boxes","spaces","space","readField","skip","readFixed32","readSFixed32","readFixed64","readSFixed64","ieee754","decode","bytesPerSequence","readPackedVarint","readPackedSVarint","readPackedBoolean","readPackedFloat","readPackedDouble","readPackedFixed32","readPackedSFixed32","readPackedFixed64","readPackedSFixed64","writeTag","finish","writeBigVarintLow","lsb","writeBigVarintHigh","writeString","lead","writeUtf8","writeBytes","writeRawMessage","writeMessage","writeBytesField","writeFixed32Field","writeSFixed32Field","writeFixed64Field","writeSFixed64Field","writeVarintField","writeSVarintField","writeStringField","writeFloatField","writeDoubleField","writeBooleanField","ImagePosition","paddedRect","stretchX","stretchY","IMAGE_PADDING","ImageAtlas","icons","iconPositions","patternPositions","haveRenderCallbacks","bins","addImages","bin","images","hasRenderCallback","patchUpdatedImages","imageManager","dispatchRenderCallbacks","updatedImages","patchUpdatedImage","WritingMode","horizontal","vertical","horizontalOnly","SectionOptions","imageName","textOptions","imageOptions","TaggedString","sectionIndex","imageSectionID","defaultFontStack","addImageSection","addTextSection","getSection","getSections","getSectionIndex","getCharCode","verticalizePunctuation","skipContextChecking","nextCharCode","prevCharCode","beginningWhitespace","whitespace","trailingWhitespace","getMaxScale","forText","nextImageSectionCharCode","getNextImageSectionCharCode","forImage","shapeText","glyphMap","glyphPositions","textJustify","allowVerticalPlacement","symbolPlacement","layoutTextSize","layoutTextSizeThisZoom","logicalInput","fromFeature","untaggedLines","determineLineBreaks","taggedLine","processedLines","lineBreakPoints","lineBreak","breakLines","positionedLines","shaping","iconsInText","verticalizable","hasBaseline","lineMaxScale","maxLineOffset","positionedLine","positionedGlyphs","lineOffset","biggestHeight","codePoint","sectionScale","verticalAdvance","glyphOffset","imagePosition","displaySize","localGlyph","glyphPositionData","justifyLine","currentLineHeight","horizontalAlign","getAnchorAlignment","blockHeight","shiftX","shiftY","positionedGlyph","shapeLines","9","10","11","12","13","32","breakable","38","40","41","43","45","47","173","183","8203","8208","8211","8231","getGlyphAdvance","calculateBadness","targetWidth","penalty","isLastBreak","raggedness","calculatePenalty","nextCodePoint","penalizableIdeographicBreak","evaluateBreak","breakIndex","breakX","potentialBreaks","bestPriorBreak","bestBreakBadness","potentialBreak","breakBadness","badness","priorBreak","leastBadBreaks","lastLineBreak","potentialLineBreaks","totalWidth","hasServerSuggestedBreakpoints","currentX","ideographicBreak","anchor","halfLineHeight","lastGlyph","lineIndent","shapeIcon","iconOffset","iconAnchor","fitIconToText","shapedIcon","shapedText","textFit","fontScale","collisionPadding","textLeft","textRight","textTop","textBottom","Anchor","checkMaxAngle","labelLength","windowSize","maxAngle","anchorDistance","recentCorners","recentAngleDelta","angleDelta","getLineLength","lineLength","getAngleWindowSize","glyphSize","boxScale","getShapedLabelLength","getCenterAnchor","angleWindowSize","prevDistance","centerDistance","segmentDistance","getAnchors","tileExtent","shapedLabelLength","isLineContinued","placeAtMiddle","halfLabelLength","markedDistance","anchors","segmentDist","clipLine","clippedLines","clippedLine","p0","INF","edt","gridSize","edt1d","qr","LocalGlyphMode","none","ideographs","GlyphManager","requestManager","localGlyphMode","localFontFamily","localGlyphs","200","400","500","900","setURL","getGlyphs","fnCallback","requests","_tinySDF","loadGlyphRange","_doesCharSupportLocalGlyph","cb","tinySDF","TinySDF","glyphWidth","glyphHeight","glyphLeft","glyphTop","glyphAdvance","getIconQuads","iconRotate","isSDFIcon","hasIconTextFit","quads","imageWidth","imageHeight","iconWidth","iconHeight","reduceRanges","stretchWidth","stretchHeight","fixedWidth","fixedHeight","stretchOffsetX","stretchContentWidth","stretchOffsetY","stretchContentHeight","fixedOffsetX","fixedContentWidth","fixedOffsetY","fixedContentHeight","sumWithinRange","makeBox","leftEm","getEmOffset","stretch","leftPx","getPxOffset","fixed","topEm","topPx","rightEm","rightPx","bottomEm","bottomPx","tr","bl","pixelOffsetTL","pixelOffsetBR","tex","minFontScaleX","minFontScaleY","isSDF","xCuts","stretchZonesToCuts","yCuts","xi","yi","stretchZones","fixedSize","stretchSize","cuts","stretchOffset","iconSize","getMidlineOffset","previousOffset","fontstack","urlTemplate","transformRequest","normalizeGlyphsURL","Protobuf","cutoff","_createCanvas","willReadFrequently","textBaseline","fillStyle","gridOuter","gridInner","actualBoundingBoxAscent","actualBoundingBoxDescent","actualBoundingBoxLeft","actualBoundingBoxRight","measureText","fillText","imgData","TinyQueue","_down","_up","peek","halfLength","best","findPoleOfInaccessibility","polygonRings","precision","debug","outerRing","cellSize","cellQueue","Queue","compareMax","Cell","bestCell","numProbes","minDistSq","pointToPolygonDist","SQRT2","INVALID_TEXT_OFFSET","sqrt2","evaluateVariableOffset","fromTextOffset","radialOffset","hypotenuse","performSymbolLayout","imageMap","showCollisionBoxes","createArrays","tilePixelRatio","compareText","iconsNeedLinear","unevaluatedLayoutValues","sizes","textSizeData","compositeTextSizes","iconSizeData","compositeIconSizes","layoutIconSize","textMaxSize","textAlongLine","textSize","shapedTextOrientations","textOffset","unformattedText","spacingIfAllowed","variableTextAnchor","isPointPlacement","addVerticalShapingIfNeeded","justifications","getAnchorJustification","singleLine","justification","sdf","sdfIcons","getDefaultHorizontalShaping","generateCollisionDebugBuffers","collisionBoxArray","defaultShaping","textMaxBoxScale","symbolMinDistance","textPadding","iconPadding","textMaxAngle","iconAlongLine","textRepeatDistance","iconTextFit","verticallyShapedIcon","addSymbolAtAnchor","canonicalId","globe","iconBoxScale","lineArray","addToLineVertexArray","textBoxIndex","iconBoxIndex","verticalTextBoxIndex","verticalIconBoxIndex","textCircle","verticalTextCircle","verticalIconCircle","numIconVertices","numVerticalGlyphVertices","placedIconSymbolIndex","verticalPlacedIconSymbolIndex","placedTextSymbolIndices","collisionFeatureAnchor","textOffset0","textOffset1","verticalShaping","evaluateCircleCollisionFeature","verticalTextRotation","evaluateBoxCollisionFeature","iconQuads","verticalIconQuads","MAX_PACKED_SIZE","addSymbols","lineStartIndex","placedSymbolArray","addTextVertices","getCollisionCircleHeight","diameter","prevHeight","useRuntimeCollisionCircles","glyphOffsetArray","SymbolBucket","MAX_GLYPHS","addToSortKeyRanges","symbolInstances","addSymbol","anchorIsTooClose","poi","MAX_GLYPH_ICON_SIZE","tileAnchor","placementTypes","placedIconIndex","glyphQuads","alongLine","textRotate","rotateOffset","getRotateOffset","shapingHeight","lineCounts","currentOffset","textureRect","rectBuffer","GLYPH_PBF_BORDER","rotateVerticalGlyph","halfAdvance","builtInOffset","verticalizedLabelOffset","useRotateOffset","paddedHeight","yShift","verticalRotation","verticalOffsetCorrection","placementType","horizontalShaping","projectedAnchor","shaped","rotateRadians","rotateCenter","repeatDistance","otherAnchors","posAttributesGlobeExt","posAttributes","GLOBE_ZOOM_THRESHOLD_MIN","GLOBE_RADIUS","GLOBE_METERS_TO_ECEF","GLOBE_LATITUDINAL_GRID_LOD_TABLE","GLOBE_VERTEX_GRID_SIZE","GLOBE_MIN","GLOBE_MAX","GLOBE_LOW_ZOOM_TILE_AABBS","globePointCoordinate","clampToHorizon","point0","_camera","point1","pixelMatrixInverse","globeMatrix","globeCenter","p0toCenter","p0toCenterDist","centerDir","origoTangentAngle","clampedP1","origoToP1","pointOnGlobe","xa","ya","za","xp","yp","zp","diff","Arc","bn","localExtremum","sina","globeTileBounds","globeTileLatLngCorners","latLngToECEF","bMin","bMax","aabbForTileOnGlobe","numTiles","cornerMax","cornerMin","mat4","nw","centerLng","centerLat","tileCenterLng","tileCenterLat","tileCenter","arcCenter","closestArcIdx","arcA","arcB","closestArc","arcBounds","tileScale","csLatLngToECEF","cosLat","sinLat","tileCoordToECEF","globeECEFNormalizationScale","globeNormalizeECEF","globeDenormalizeECEF","calculateGlobePosMatrix","localRadius","globeToMercatorTransition","globeTiltAtLngLat","centerToPoint","centerToPivot","_center","_pitch","pivotToCamera","cameraPositionInECEF","cosine","POLE_RAD","POLE_COS","POLE_SIN","farthestPixelDistanceOnPlane","fovAboveCenter","minElevationInPixels","getMinElevationBelowMSL","cameraToSeaLevelDistance","topHalfSurfaceDistance","furthestDistance","_horizonShift","lng1","lng2","p3","maxErr","processSegment","pa","pb","pm","Projection","requiresDraping","supportsWorldCopies","supportsTerrain","supportsFog","supportsFreeCamera","zAxisUnit","unsupportedLayers","unproject","locationPoint","_coordinatePoint","locationCoordinate","pixelSpaceConversion","interpolationT","farthestPixelDistance","pointCoordinate","horizonOffset","horizonLineFromTop","clamped","rayIntersectionCoordinate","pointRayIntersection","pointCoordinate3D","mc","isPointAboveHorizon","createInversionMatrix","createTileMatrix","scaledX","scaledY","posMatrix","cs","zoomScale","Albers","lat0","parallels","sy0","r0","lambda","phi","r0y","a3","a4","EqualEarth","theta2","theta6","delta","fy","fpy","Equirectangular","halfPi","tany","LambertConformalConic","cy0","signFy","Mercator","maxPhi","NaturalEarth","phi2","phi4","WinkelTripel","twoOverPi","sinAlphaOverAlpha","dlambda","dphi","cosphi","sinphi","sinphi2","sin2phi","cos2phi","coslambda2","sinlambda2","sinlambda","sin2lambda2","fx","dxdlambda","dxdphi","dydlambda","dydphi","denominator","CylindricalEqualArea","cosPhi","y_","Globe","getAtPointOrZero","_centerAltitude","pixelMatrix","combinedScale","_projectionScaler","globePixelDistance","cameraDistance","centerPixelAltitude","camera","cameraPosition","globeRadius","tanFovAboveCenter","pixelDistance","globeCenterToCamera","cameraToGlobe","cameraHeight","farthestPixelDistanceOnSphere","mercatorPixelDistance","pixelRadius","approxTileArcHalfAngle","mercX","getProjection","isDegenerateConic","shaderOpacityAttributes","ox","oy","tx","ty","sizeVertex","pixelOffsetX","pixelOffsetY","aSizeX","aSizeY","addGlobeVertex","projAnchorX","projAnchorY","projAnchorZ","normX","normY","normZ","addDynamicAttributes","dynamicLayoutVertexArray","containsRTLText","formattedText","SymbolBuffers","SymbolLayoutArray","SymbolDynamicLayoutArray","opacityVertexArray","SymbolOpacityArray","SymbolGlobeExtArray","dynamicIndexBuffer","dynamicLayoutVertexBuffer","opacityVertexBuffer","itemSize","CollisionBuffers","LayoutArray","IndexArray","collisionVertexArray","CollisionVertexArray","collisionVertexArrayExt","CollisionVertexExtArray","collisionVertexBuffer","collisionVertexBufferExt","hasRTLText","fullyClipped","sortKeyRanges","collisionCircleArray","placementInvProjMatrix","placementViewportMatrix","canOverlap","sortFeaturesByKey","sortFeaturesByY","writingModes","wm","sourceID","lineVertexArray","calculateGlyphDependencies","doesAllowVerticalWritingMode","verticalChar","textFont","textField","iconImage","hasText","hasIcon","symbolSortKey","iconDependencies","glyphDependencies","geom","cosAngleThreshold","resolvedTokens","getValueAndResolveTokens","globalRTLTextPlugin","transformText","sectionFont","sectionStack","leftIndex","rightIndex","mergedFeatures","mergedIndex","mergeFromRight","leftKey","rightKey","mergeFromLeft","onRight","mergeLines","hasDebugData","textCollisionBox","iconCollisionBox","destroyDebugData","projectionInstance","sumForwardLength","sumBackwardLength","tileUnitDistanceFromAnchor","vertex","arrays","glyphOffsetArrayStart","globeAnchor","_commitLayoutVertex","boxTileAnchorX","boxTileAnchorY","boxTileAnchorZ","_addCollisionDebugVertices","symbolInstance","symbolTileAnchorX","symbolTileAnchorY","_addTextDebugCollisionBoxes","instance","getSymbolInstanceTextSize","projectedAnchorY","_addIconDebugCollisionBoxes","getSymbolInstanceIconSize","CollisionBoxLayoutArray","symbolSize","verticalTextBoxStartIndex","iconBoxEndIndex","verticalIconBoxStartIndex","boxIndex","rightJustifiedTextSymbolIndex","featureSize","_commitDebugCollisionVertexUpdate","_updateTextDebugCollisionBoxes","_updateIconDebugCollisionBoxes","updateCollisionDebugBuffers","hasTextCollisionBoxData","hasIconCollisionBoxData","_deserializeCollisionBoxesForSymbol","textStartIndex","textEndIndex","verticalTextStartIndex","verticalTextEndIndex","iconStartIndex","iconEndIndex","verticalIconStartIndex","verticalIconEndIndex","collisionArrays","textBox","textFeatureIndex","verticalTextBox","verticalTextFeatureIndex","iconBox","iconFeatureIndex","verticalIconBox","verticalIconFeatureIndex","deserializeCollisionBoxes","hasTextData","hasIconData","addIndicesForPlacedSymbol","iconOrText","placedSymbolIndex","placedSymbol","vertexIndex","getSortedSymbolIndexes","sortedAngle","symbolInstanceIndexes","rotatedYs","featureIndexes","aIndex","bIndex","symbolInstanceIndex","symbolInstanceEnd","symbolInstanceStart","featureSortOrder","symbol-placement","symbol-spacing","symbol-avoid-edges","symbol-sort-key","symbol-z-order","icon-allow-overlap","icon-ignore-placement","icon-optional","icon-rotation-alignment","icon-size","icon-text-fit","icon-text-fit-padding","icon-image","icon-rotate","icon-padding","icon-keep-upright","icon-offset","icon-anchor","icon-pitch-alignment","text-pitch-alignment","text-rotation-alignment","text-field","text-font","text-size","text-max-width","text-line-height","text-letter-spacing","text-justify","text-radial-offset","text-variable-anchor","text-anchor","text-max-angle","text-writing-mode","text-rotate","text-padding","text-keep-upright","text-transform","text-offset","text-allow-overlap","text-ignore-placement","text-optional","properties$3","icon-translate","icon-translate-anchor","runtimeType","getOverride","hasOverride","text-translate","text-translate-anchor","FormatSectionOverride","SymbolStyleLayer","deduped","_setPaintOverrides","unevaluated","createBucket","queryRadius","queryIntersectsFeature","hasPaintOverride","overriden","override","styleExpression","_interpolationType","propertyName","hasOverrides","checkSections","checkExpression","properties$2","background-color","background-pattern","background-opacity","properties$1","raster-opacity","raster-hue-rotate","raster-brightness-min","raster-brightness-max","raster-saturation","raster-contrast","raster-resampling","raster-fade-duration","CustomStyleLayer","implementation","renderingMode","prerender","painter","sky-type","sky-atmosphere-sun","sky-atmosphere-sun-intensity","sky-gradient-center","sky-gradient-radius","sky-gradient","sky-atmosphere-halo-color","sky-atmosphere-color","sky-opacity","getCelestialDirection","azimuth","leftHanded","quat","subclasses","circleBucket","heatmap","_updateColorRamp","colorRamp","colorRampTexture","heatmapFbo","hillshade","outlineColor","tilespaceGeometry","fill-extrusion","layoutVertexArrayOffset","terrainVisible","tile","getBucket","centroidOffset","centroidVertexObject","a_centroid_pos1","flat","projected","projectedBase","projectedTop","basePoint","topPoint","setPoint","lift","ringBase","ringTop","zBasePoint","zTopPoint","heightOffset","baseXZ","baseYZ","baseZZ","baseWZ","topXZ","topYZ","topZZ","topWZ","sX","sY","sZ","sW","baseX","baseY","baseZ","baseW","topX","topY","topZ","topW","projectExtrusion","screenQuery","topA","face","isPointQuery","screenBounds","gradientVersion","stepInterpolant","gradientExpression","lineBucket","translatedPolygon","halfWidth","newRings","zero","newRing","aToB","bToC","offsetLine","multiLine","polygonIntersectsBufferedMultiLine","raster","sky","_skyboxInvalidated","needsSkyboxCapture","skyboxTexture","skyboxGeometry","lightPosition","_lightPosition","azimuthal","sunPosition","useLightPosition","markSkyboxValid","Texture","HTMLImageElement","HTMLCanvasElement","HTMLVideoElement","pixelStoreUnpackFlipY","pixelStoreUnpack","pixelStoreUnpackPremultiplyAlpha","premultiply","texSubImage2D","useMipmap","isSizePowerOfTwo","generateMipmap","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","NEAREST","NEAREST_MIPMAP_NEAREST","LINEAR_MIPMAP_NEAREST","TEXTURE_WRAP_S","TEXTURE_WRAP_T","LineAtlas","nextRow","getDash","dasharray","lineCap","getDashRanges","lineAtlasWidth","isDash","zeroLength","currentDashLength","dashLength","addRoundDash","halfStretch","currIndex","distLeft","distRight","minDist","signedDistance","distMiddle","distEdge","addRegularDash","capLength","ThrottledInvoker","_callback","_triggered","MessageChannel","_channel","port2","onmessage","port1","postMessage","Scheduler","tasks","taskQueue","invoker","nextId","priority","isSymbolTile","task","minIndex","minPriority","DictionaryCoder","strings","_stringToNumber","_numberToString","customProps","vectorTileFeature","_vectorTileFeature","_z","meshSize","numTriangles","reprojectedCoords","used","indexMap","seamPadding","boundsAttributes","BOUNDS_FEATURE","isRaster","uses","tileSize","buckets","expirationTime","queryPadding","hasSymbolBuckets","dependencies","expiredRequestCount","registerFadeDuration","fadeEndTime","timeAdded","wasRequested","_tileTransform","loadVectorData","justReloaded","unloadVectorData","latestFeatureIndex","rawTileData","latestRawTileData","lId","deserializeBucket","imageAtlas","glyphAtlasImage","imageAtlasTexture","glyphAtlasTexture","lineAtlasTexture","_tileBoundsBuffer","_tileBoundsIndexBuffer","_tileBoundsSegments","_tileDebugBuffer","_tileDebugIndexBuffer","_tileDebugSegments","_globeTileDebugBorderBuffer","_tileDebugTextBuffer","_tileDebugTextSegments","_tileDebugTextIndexBuffer","_globeTileDebugTextBuffer","ALPHA","prepare","serializedLayers","sourceFeatureState","tileResult","visualizeQueryGeometry","querySourceFeatures","vtLayers","loadVTLayers","_geojsonTileLayer","getId","geojsonFeature","GeoJSONFeature","patternsLoaded","setExpiryData","parsedCC","isExpired","getExpiryTimeout","setFeatureState","listImages","hasLayer","sourceLayerId","sourceLayerStates","sourceCache","_getSourceCache","_terrain","_clearRenderCacheForTile","holdingForFade","symbolFadeHoldUntil","symbolFadeFinished","clearFadeHold","setHoldDuration","setTexture","getTileTexture","LINEAR","CLAMP_TO_EDGE","extTextureFilterAnisotropic","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","extTextureFilterAnisotropicMax","setDependencies","namespace","dep","hasDependency","namespaces","clearQueryDebugViz","_makeDebugTileBoundsBuffers","boundsLine","debugVertices","PosArray","debugIndices","LineStripIndexArray","simpleSegment","_makeTileBoundsBuffers","boundsVertices","boundsIndices","mesh","mIndex","isUsed","leftChildIndex","rightChildIndex","TileBoundsArray","addTriangles","ai","bi","ci","getTileMesh","_makeGlobeTileDebugBuffers","normalizationMatrix","_makeGlobeTileDebugBorderBuffer","_makeGlobeTileDebugTextBuffer","extraGlobe","PosGlobeExtArray","sx","sy","ex","ey","stepX","stepY","vOffset","ecef","gp","totalVertices","SEGMENTS","toIndex","SourceFeatureState","stateChanges","deletedStates","updateState","newState","removeFeatureState","getState","reconciledState","featureDeletions","initializeTileState","coalesceChanges","featuresChanged","layerStates","MipLevel","size_","minimums","maximums","leaves","getElevation","idx","toIdx","aabbRayIntersect","tMin","tMax","ood","temp","triangleRayIntersect","cz","abX","abY","abZ","acX","acY","acZ","pvecX","pvecY","pvecZ","det","invDet","tvecX","tvecY","tvecZ","qvecX","qvecY","qvecZ","frac","lo","hi","decodeBounds","boundsMinx","boundsMiny","boundsMaxx","boundsMaxy","outMin","outMax","rangex","rangey","DemMinMaxQuadTree","dem_","childOffsets","nodeCount","dem","_siblingOffset","mips","levelCount","blockCount","blockSize","blockSamples","exclusive","outBounds","maxx","miny","maxy","mip","blockBounds","sampleElevation","e3","prevMip","l0","l1","l3","minElevation","maxElevation","canConcatenate","maxLvl","rootMip","_addNode","_construct","raycastRoot","minx","raycast","rootMinx","rootMiny","rootMaxx","rootMaxy","tHits","sortedHits","boundsMin","boundsMax","nodex","nodey","minxUv","maxxUv","minyUv","maxyUv","hitPos","bilinearLerp","hitCount","tHit","hitIdx","leaf","lvl","parentIdx","childLvl","childMip","leafMask","firstNodeIdx","childX","childY","nodeIdx","p00","p10","p01","p11","demSize","ixMin","iyMin","ixMax","iyMax","unpackVectors","mapbox","terrarium","DEMData","tree","_tree","_buildQuadTree","encoding","borderReady","buildQuadTree","pixels","_idx","clampToEdge","_unpackTerrarium","_unpackMapbox","vector","getUnpackVector","getPixels","backfillBorder","borderTile","xMin","xMax","yMin","yMax","onDeserialize","TileCache","removedData","expiryTimeout","dataWrapper","_getAndRemoveByKey","getAndRemove","getByKey","dataIndex","setMaxSize","filterFn","DepthMode","depthFunc","depthMask","depthRange","ReadOnly","ReadWrite","KEEP","StencilMode","fail","depthFail","ColorMode","blendFunction","blendColor","Replace","unblended","alphaBlended","BACK","CCW","CullFaceMode","frontFace","backCCW","backCW","frontCW","frontCCW","SourceCache","onlySymbols","_onlySymbols","sourceDataType","_sourceLoaded","_paused","reload","_sourceErrored","_source","_tiles","_cache","_unloadTile","_timers","_cacheTimers","_minTileCacheSize","minTileCacheSize","_maxTileCacheSize","maxTileCacheSize","_loadedParentTiles","_coveredTiles","_state","_isRaster","_dataType","pause","resume","shouldReload","_shouldReloadOnResume","_loadTile","loadTile","unloadTile","_abortTile","abortTile","prepareTile","getIds","compareTileId","getRenderableIds","symbolLayer","renderables","_isIdRenderable","a_","b_","rotatedA","rotatedB","hasRenderableParent","parentTile","findLoadedParent","_reloadTile","_tileLoaded","previousState","usedForTerrain","getScaledDemTileSize","resetTileLookupCache","refreshedUponExpiration","_setTileReloadTimer","_backfillDEM","sourceCacheId","borderId","neighboringTiles","getTileByID","fillBorder","needsHillshadePrepare","needsDEMTextureUpload","backfilled","getTile","_retainLoadedChildren","idealTiles","maxCoveringZoom","retain","topmostLoadedID","parentID","minCoveringZoom","parentTileID","_getLoadedTile","reparseOverscaled","updateCacheSize","widthInTiles","heightInTiles","viewDependentMaxSize","handleWrapJump","wrapDelta","_prevLng","updateForTerrain","freezeTileCoverage","idealTileIDs","getVisibleUnwrappedCoordinates","unwrapped","coveringTiles","roundZoom","isTerrainDEM","hasTile","_updateRetainedTiles","isRasterType","parentsForFading","fadingTiles","maxOverzooming","_addTile","childTile","retainedId","keysDifference","_fadeDuration","_removeTile","_updateLoadedParentTileCache","afterUpdate","releaseSymbolFadeTiles","maxUnderzooming","missingTiles","childCoord","parentWasRequested","parentId","tileKey","currentId","clearTiles","_clear","tilesIn","use3DQuery","tileResults","tilesToCheck","distances","tileBoundsX","containsTile","getVisibleCoordinates","projMatrix","calculateProjMatrix","getFeatureState","reloadTilesForDependencies","_preloadTiles","coveringTilesIDs","transforms","tileIDs","updateElevation","done","aWrap","bWrap","DEMSampler","demTile","_demTile","_dem","_scale","_offset","useDemTile","findDEMTileFor","demTileID","FeatureIndex","featureIndexArray","VectorTile","sourceLayerCoder","vtFeatures","styleLayers","bufferedTilespaceBounds","matching","bx1","by1","bx2","by2","bufferedTilespaceGeometry","topDownFeatureComparator","previousIndex","featureGeometry","loadMatchingFeature","featureIndexData","filterLayerIDs","layerIDs","bucketLayerIDs","arraysIntersect","sourceLayerName","layerID","serializedLayer","evaluateProperties","intersectionZ","layerResult","lookupSymbolFeatures","symbolFeatureIndexes","symbolFeatureIndex","loadFeature","featureCache","serializedProperties","styleLayerProperties","GlyphAtlas","glyphPositionMap","glyphPadding","WorkerTile","collectResourceTiming","returnDependencies","layerIndex","layerFamilies","familiesBySource","anySymbolLayers","anyOtherLayers","family","recalculateLayers","iconMap","patternMap","taskMetadata","maybePrepare","glyphAtlas","DedupedRequest","scheduler","loadVectorTile","skipParse","vectorTile","rawData","cancelCallbacks","receive","globalScope","targetMapId","mustQueue","callbackMetadata","buffers","hasCallback","sourceMapId","processTask","getWorkerSource","isDataAvailableAtPoint","defaultIfNotLoaded","getAtPoint","exaggerated","tilesAtTileZoom","getAtTileOffset","getAtTileOffsetFunc","getForTilePoints","helper","getMinMaxForTile","yOffset","childOffset","screenPoint","visibleDemTiles","_createGrid","_createPoles","_poleIndexBuffer","_gridBuffer","_gridIndexBuffer","_poleNorthVertexBuffer","_poleSouthVertexBuffer","_poleSegments","_gridSegments","_wireframeIndexBuffer","_wireframeSegments","gridVertices","gridIndices","vertexExt","quadExt","latitudinalLod","numPrimitives","poleIndices","northVertices","GlobeVertexArray","southVertices","uvX","globeLayoutAttributes","getGridBuffers","getPoleBuffers","getWirefameBuffers","lod","wireframeIndices","transformRequestFn","silenceAuthErrors","_transformRequestFn","_silenceAuthErrors","_createSkuToken","sessionRandomizer","tokenExpiresAt","createSkuToken","_skuToken","_skuTokenExpiresAt","_isSkuTokenExpired","normalizeStyleURL","urlObject","_makeAPIURL","normalizeSourceURL","normalizeSpriteURL","extension","normalizeTileURL","tileURL","use2x","rasterTileSize","canonicalizeTileURL","removeAccessToken","canonicalizeTileset","tileJSON","sourceURL","help","apiUrlObject","uniform1i","uniform2f","uniform3f","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","isSpriteLoaded","requestParam","perf","workerTile","parseTile","resourceTiming","resourceTimingData","reloadTile","vtSource","reloadCallback","removeTile","currIdx","prevIdx","nextIdx","curr","interiorAngle","dispatcher","getActor","mercatorZ","zScale","ws","promises","limit","sharedCache","xx","yx","yy","zx","zy","zz","wx","wy","wz","cornerIdx","sqDist","UPPER_LATITUDE","video","muted","onloadstart","crossOrigin","tileMatrix","poleMatrix","xOffsetAngle","transitionT","useContextAA","_antialias","hasStandardDerivatives","extStandardDerivatives","extStandardDerivativesForceOff","b00","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","b11","b12","b20","b21","b22","near","far","lr","nf","fovy","aspect","close","minBuf","maxBuf","checkThreshold","deferred","vertexIdx","layerObject","_validateFilter","_validateFog","_validateLayer","_validateLight","_validateSource","_validateTerrain","refProperties","StyleLayerIndex","layerConfigs","keyCache","_layerConfigs","_layers","removedIds","layerConfig","createStyleLayer","groups","cachedKeys","groupByLayout","sourceId","sourceGroup","sourceLayerFamilies","RasterDEMTileWorkerSource","rawImageData","imagePixels","offscreenCanvas","offscreenCanvasContext","OffscreenCanvas","geojsonRewind","rewind","gj","outer","rewindRings","rewindRing","FeatureWrapper","_feature","GeoJSONWrapper","geojson_wrapper","rawGeometry","vtPbf","fromVectorTileJs","GeoJSONWrapper_1","writeLayer","keycache","valuecache","writeFeature","writeValue","writeProperties","writeGeometry","keyIndex","valueIndex","command","zigzag","lineCount","sortKD","nodeSize","inc","swapItem","defaultGetX","defaultGetY","KDBush","getY","ArrayType","IndexArrayType","nextAxis","r2","minPoints","generateId","fround","Supercluster","trees","load","timerId","clusters","createPointCluster","timeEnd","_cluster","getClusters","minLng","minLat","maxLng","easternHem","westernHem","_limitZoom","lngX","latY","numPoints","getClusterJSON","getChildren","clusterId","originId","_getOriginId","originZoom","_getOriginZoom","errorMsg","getLeaves","_appendLeaves","_addTileFeatures","getClusterExpansionZoom","expansionZoom","cluster_id","skipped","point_count","getClusterProperties","neighborIds","numPointsOrigin","neighborId","numPoints2","createCluster","original","yLat","abbrev","point_count_abbreviated","simplify","sqTolerance","maxSqDist","minPosToMid","getSqSegDist","posToMid","createFeature","calcLineBBox","calcBBox","convertFeature","convertPoint","convertLine","convertLines","projectX","projectY","k2","minAll","maxAll","newGeometry","clipPoints","clipLines","newGeom","trackMetrics","segLen","newSlice","intersectX","intersectY","exited","shiftFeatureCoords","newFeatures","shiftCoords","newPolygon","newPoints","transformTile","transformed","transformPoint","createTile","numSimplified","numFeatures","simplified","tileFeature","isOuter","GeoJSONVT","tileCoords","indexMaxZoom","indexMaxPoints","stats","merged","splitTile","toID","loadGeoJSONTile","_geoJSONIndex","geoJSONTile","geojsonWrapper","vtpbf","k3","k4","z0","GeoJSONWorkerSource","VectorTileWorkerSource","loadGeoJSON","loadData","compiled","property-type","superclusterOptions","mapExpressions","reduceExpressions","propertyNames","mapExpression","mapExpressionParsed","reduceExpressionParsed","pointProperties","getSuperclusterOptions","geojsonvt","geojsonVtOptions","getJSON","getClusterChildren","getClusterLeaves","Worker","Actor","layerIndexes","projections","defaultProjection","workerSourceTypes","workerSources","demWorkerSources","registerWorkerSource","WorkerSource","registerRTLTextPlugin","clearCaches","unused","checkIfReady","mapID","setReferrer","spriteLoaded","bool","workerSource","setImages","setProjection","setLayers","getLayerIndex","updateLayers","loadDEMTile","getDEMWorkerSource","loadWorkerSource","importScripts","syncRTLPluginState","getAvailableImages","enforceCacheSizeLimit","getWorkerPerformanceMetrics","deepEqual","isSupported","reduceRight","isSealed","isFrozen","isExtensible","defineProperties","seal","preventExtensions","workerURL","terminate","imageData","isCanvasGetImageDataSupported","isWebGLSupportedCache","failIfMajorPerformanceCaveat","shader","webGLContextAttributes","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","documentMode","el","createSVG","antialias","stencil","docStyle","selectProp","disableDrag","enableDrag","suppressClickListener","suppressClick","mousePos","getScaledPoint","touchPos","mouseButton","InstallTrigger","scaling","renderStyleImage","userImage","ImageManager","callbackDispatchedThisFrame","requestors","atlasImage","setLoaded","_notify","addImage","valid","_validateStretch","_validateContent","updateImage","removeImage","getImages","hasAllDependencies","getPixelSize","getPattern","_updatePatternAtlas","atlasTexture","dst","beginFrame","sphericalToCartesian","intensity","Light","lightOptions","_transitionable","setLight","_transitioning","getLight","Terrain","terrainOptions","drapeRenderMode","getFogOpacity","fov","fogPitchOpacity","getFovAdjustedFogRange","falloff","fogProperties","high-color","space-color","horizon-blend","star-intensity","Fog","fogOptions","_transform","globeFixedFogRange","horizonBlend","getOpacity","fogColor","getOpacityAtLatLng","meters","fromLngLat","mercatorFogMatrix","_fov","getFovAdjustedRange","Dispatcher","workerPool","actors","currentActor","workers","acquire","ready","broadcast","release","pixelValue","QueryGeometry","cameraPoint","aboveHorizon","_screenRaycastCache","_cameraRaycastCache","bufferedScreenGeometry","screenGeometryMercator","_bufferedScreenMercator","polygonizeBounds","getCameraPoint","bufferedCameraGeometry","cameraPolygon","bufferConvexPolygon","bufferedCameraGeometryGlobe","camPos","use3D","cameraWrap","cachedQuery","_bufferedCameraMercator","geometryForTileCheck","getTilePoint","tilespaceVec3s","getTileVec3","cameraMercator","getFreeCameraOptions","tilespaceCameraPosition","tileVec","getBounds","poly","_projectAndResample","polePolygon","northPole","southPole","screenNp","screenSp","containsNp","containsSp","partA","resamplePolygon","partB","intersectionY","projectPolygonCoveringPoles","startEdge","cameraX","unwrapQueryPolygon","mercatorX","loadTileJSON","vector_layers","vectorLayers","vectorLayerIds","language_options","languageOptions","worldview_options","worldviewOptions","worldview_default","TileBounds","validateBounds","IndexBuffer","dynamicDraw","createBuffer","unbindVAO","bindElementBuffer","bufferData","ELEMENT_ARRAY_BUFFER","DYNAMIC_DRAW","STATIC_DRAW","bufferSubData","deleteBuffer","AttributeType","VertexBuffer","bindVertexBuffer","ARRAY_BUFFER","enableAttributes","program","attribIndex","enableVertexAttribArray","setVertexAttribPointers","vertexAttribPointer","BaseValue","getDefault","setDefault","ClearColor","clearColor","ClearDepth","clearDepth","ClearStencil","clearStencil","ColorMask","colorMask","DepthMask","StencilMask","stencilMask","StencilFunc","ALWAYS","stencilFunc","StencilOp","stencilOp","StencilTest","STENCIL_TEST","DepthRange","DepthTest","DEPTH_TEST","DepthFunc","LESS","Blend","BLEND","BlendFunc","ONE","ZERO","blendFunc","BlendColor","BlendEquation","FUNC_ADD","blendEquation","CullFace","CULL_FACE","CullFaceSide","cullFace","FrontFace","Program","useProgram","ActiveTextureUnit","TEXTURE0","activeTexture","Viewport","drawingBufferWidth","drawingBufferHeight","viewport","BindFramebuffer","bindFramebuffer","FRAMEBUFFER","BindRenderbuffer","bindRenderbuffer","RENDERBUFFER","BindTexture","BindVertexBuffer","bindBuffer","BindElementBuffer","BindVertexArrayOES","vao","extVertexArrayObject","bindVertexArrayOES","PixelStoreUnpack","pixelStorei","UNPACK_ALIGNMENT","PixelStoreUnpackPremultiplyAlpha","UNPACK_PREMULTIPLY_ALPHA_WEBGL","PixelStoreUnpackFlipY","UNPACK_FLIP_Y_WEBGL","FramebufferAttachment","ColorAttachment","framebufferTexture2D","COLOR_ATTACHMENT0","DepthAttachment","attachment","DEPTH_ATTACHMENT","framebufferRenderbuffer","DepthStencilAttachment","DEPTH_STENCIL_ATTACHMENT","Framebuffer","hasDepth","fbo","framebuffer","createFramebuffer","colorAttachment","depthAttachment","renderbuffer","deleteRenderbuffer","deleteFramebuffer","Context","getExtension","stencilTest","depthTest","blend","cullFaceSide","getParameter","MAX_TEXTURE_MAX_ANISOTROPY_EXT","extTextureFilterAnisotropicForceOff","extTextureHalfFloat","extRenderToTextureHalfFloat","extTimerQuery","maxTextureSize","MAX_TEXTURE_SIZE","createRenderbuffer","storageFormat","rbo","renderbufferStorage","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","STENCIL_BUFFER_BIT","setCullFace","cullFaceMode","setDepthMode","depthMode","setStencilMode","stencilMode","setColorMode","colorMode","RasterTileSource","eventedParent","_loaded","_options","_tileJSONRequest","_requestManager","_refreshExpiredTiles","cacheEntryPossiblyAdded","saveTileTexture","supportsOffscreenCanvas","basisToPoints","x4","y4","ma","sz","transformMat3","transpose","ImageSource","newCoordinates","_finishLoading","_boundsArray","cornerCoords","dMax","_prepareData","tileTr","projectedCoord","perspectiveTransform","multiply$1","adjoint","getPerspectiveTransform","boundsArray","RasterBoundsArray","boundsBuffer","boundsSegments","sourceTypes","_collectResourceTiming","_tileWorkers","_deduped","_language","_worldview","setSourceProperty","sourceCaches","_getSourceCaches","setTiles","setUrl","_setLanguage","_setWorldview","raster-dem","transfer","prevPowerOfTwo","_getNeighboringTiles","pxw","nx","nxw","demTexture","_data","attribution","workerOptions","clusterMaxZoom","clusterMinPoints","clusterRadius","_updateWorkerData","_pendingLoad","_coalesce","_metadataFired","getVideo","loop","triggerRepaint","play","seek","seconds","seekableRange","seekable","currentTime","readyState","paused","videoWidth","videoHeight","_hasInvalidDimensions","_playing","getCanvas","custom","_dispatcher","_implementation","_update","_coveringTiles","loadTileData","unloadTileData","getPixelPosMatrix","sortTilesIn","renderedFeatureLayers","wrappedTileID","queryResults","wrappedIDLayerMap","wrappedID","wrappedIDLayers","tileFeatures","wrappedIDFeatures","resultFeatures","featureWrapper","dataTiles","dataID","idA","idB","WebWorker","mapboxgl","workerClass","workerUrl","PRELOAD_POOL_ID","WorkerPool","workerCount","numActive","isPreloaded","globalWorkerPool","getGlobalWorkerPool","deref","derefLayers","operations","setFilter","setGeoJSONSourceData","setLayerZoomRange","setLayerProperty","setCenter","setZoom","setBearing","setPitch","setSprite","setGlyphs","setTerrain","setFog","commands","sourcesRemoved","updateSource","canUpdateGeoJSON","isEqual","diffLayerPropertyChanges","pluckId","indexById","PathInterpolator","padding_","_distances","paddedLength","lerp","distOfCurrentIdx","distToTarget","idxOfPrevPoint","distOfPrevIdx","segmentLength","segmentT","boxCells","circleCells","xCellCount","yCellCount","circleKeys","boxKeys","circles","xScale","yScale","boxUid","circleUid","keysLength","_insertBoxCell","insertCircle","_insertCircleCell","_query","hitTest","_queryCircle","_queryCellCircle","hitTestCircle","queryArgs","boxCell","circleCell","_circleAndRectCollide","_circlesCollide","_convertToXCellCoord","_convertToYCellCoord","r1","bothRadii","circleX","circleY","halfRectWidth","halfRectHeight","distY","maxTangent","getLabelPlaneMatrixForRendering","pitchWithMap","rotateWithMap","lm","calculateGlobeLabelMatrix","mat2","labelPlaneMatrix","getLabelPlaneMatrixForPlacement","getGlCoordMatrix","glCoordMatrix","xyTransformMat4","signedDistanceFromCamera","projectVector","getPerspectiveRatio","isVisible","anchorPos","clippingBuffer","updateLineLabels","isText","keepUpright","partiallyEvaluatedSize","placedSymbols","useVertical","hideGlyphs","tileAnchorPoint","elevatedAnchor","perspectiveRatio","pitchScaledFontSize","labelPlaneAnchorPoint","projectionCache","getElevationForPlacement","placeUnflipped","placeGlyphsAlongLine","needsFlipping","notEnoughRoom","placeFirstAndLastGlyph","flip","anchorPoint","returnPathInTileCoords","glyphEndIndex","lineEndIndex","firstGlyphOffset","lastGlyphOffset","firstPlacedGlyph","placeGlyphAlongLine","lastPlacedGlyph","requiresOrientationChange","firstPoint","lastPoint","flipState","isInFlipRetainRange","placedGlyphs","firstAndLastGlyph","firstVec","lastVec","orientationChange","glyphIndex","tileVertexIndex","tileSegmentEnd","projectedVertex","projectTruncatedLineSegment","singleGlyph","updateGlobeVertexNormal","elevatePointAndProject","previousTilePoint","currentTilePoint","previousProjectedPoint","minimumLength","projectionMatrix","projectedUnitVertex","projectedUnitSegment","anchorSegment","endGlyph","reprojection","combinedOffsetX","distanceToPrev","currentSegmentDistance","absOffsetX","pathVertices","tilePath","previousLineVertexIndex","getTruncatedLineSegment","segmentInterpolationT","tilePoint","prevToCurrent","labelPlanePoint","axisZ","axisX","axisY","offsetDir","segmentAngle","hiddenGlyphAttributes","viewportPadding","CollisionIndex","fogState","ignoredGrid","pitchfactor","screenRightBoundary","screenBottomBoundary","gridRightBoundary","gridBottomBoundary","placeCollisionBox","collisionBox","textPixelRatio","collisionGroupPredicate","anchorZ","upScale","projectAndGetPerspectiveRatio","tileToViewport","tlX","tlY","brX","brY","isClipped","occluded","isInsideGrid","offscreen","isOffscreen","placeCollisionCircles","labelToScreenMatrix","showCollisionCircles","circlePixelDiameter","textPixelPadding","placedCollisionCircles","tileUnitAnchorPoint","anchorElevation","screenAnchorPoint","labelPlaneFontScale","collisionDetected","inGrid","entirelyOffscreen","screenPlaneMin","screenPlaneMax","interpolator","projectedPath","circleDist","screenSpacePath","seg","numCircles","circlePosition","centerY","queryRenderedSymbols","viewportQueryGeometry","gridPoint","seenFeatures","featureKey","bucketInstanceId","intersectionTests","insertCollisionBox","ignorePlacement","collisionGroupID","insertCollisionCircles","collisionCircles","checkOcclusion","bucketProjection","behindFog","mat","calculateFogTileMatrix","getCameraToCenterDistance","getViewportMatrix","reconstructTileMatrix","getCollisionDebugTileProjectionMatrix","getSymbolTileProjectionMatrix","OpacityState","prevState","increment","skipFade","JointOpacityState","placedText","placedIcon","JointPlacement","CollisionCircleArray","invProjMatrix","viewportMatrix","RetainedQueryData","CollisionGroups","crossSourceCollisions","maxGroupID","collisionGroups","ID","nextGroupID","calculateVariableLayoutShift","textScale","offsetShift","Placement","prevPlacement","collisionIndex","placements","opacities","variableOffsets","stale","commitTime","retainedQueryData","collisionCircleArrays","placedOrientations","getBucketParts","sortAcrossTiles","symbolBucket","bucketFeatureIndex","unwrappedTileID","pixelsToTiles","calculatePixelsToTileUnitsMatrix","textLabelPlaneMatrix","clippingData","partiallyEvaluatedTextSize","partiallyEvaluatedIconSize","collisionGroup","attemptAnchorPlacement","textAllowOverlap","symbolIndex","orientation","placedGlyphBoxes","prevAnchor","markUsedJustification","markUsedOrientation","placeLayerBucketPart","bucketPart","seenCrossTileIDs","updateCollisionBoxIfNecessary","textOptional","iconOptional","iconAllowOverlap","zOrderByViewportY","alwaysShowText","alwaysShowIcon","placeSymbol","calculateDistanceTileData","placeText","placeIcon","textOccluded","iconOccluded","placedVerticalText","placedGlyphCircles","placedIconBoxes","updateBoxData","updatePreviousOrientationIfNotPlaced","previousOrientation","prevPlacedOrientation","placeTextForPlacementModes","placeHorizontalFn","placeVerticalFn","placementMode","prevOffsets","placeBoxForVariableAnchors","collisionTextBox","collisionIconBox","variableIconBox","placedBox","placementAttempts","prevOrientation","prevOffset","placeBox","placedFeature","placeIconFeature","shiftPoint","iconScale","iconWithoutText","textWithoutIcon","circleArray","notGlobe","symbolIndexes","placedAnchor","autoIndex","indexes","horizontalIndexes","placedOrientation","commit","zoomAtLastRecencyCheck","placementChanged","prevZoomAdjustment","zoomAdjustment","symbolFadeChange","prevOpacities","prevOrientations","jointPlacement","prevOpacity","jointOpacity","lastPlacementChangeTime","updateLayerOpacities","updateBucketOpacities","hasClipping","duplicateOpacityState","variablePlacement","defaultOpacityState","addOpacities","visibleInstanceCount","opacityState","horizontalHidden","verticalHidden","packedOpacity","packOpacity","PACKED_HIDDEN_OPACITY","symbolHidden","variableOffset","updateCollisionVertices","verticalIconUsed","hasTransitions","stillRecent","durationAdjustment","setStale","notUsed","shift25","shift24","shift17","shift16","shift9","shift8","shift1","targetBit","opacityBits","LayerPlacement","_sortAcrossTiles","_currentTileIndex","_currentPartIndex","_seenCrossTileIDs","_bucketParts","continuePlacement","placement","shouldPausePlacement","bucketParts","PauseablePlacement","forceFullPlacement","_currentPlacementIndex","_forceFullPlacement","_showCollisionBoxes","_done","isDone","layerTiles","elapsedTime","placementZoom","_inProgressLayer","roundingFactor","TileLayerIndex","indexedSymbolInstances","getScaledCoordinates","childTileID","findMatches","newTileID","zoomCrossTileIDs","indexedInstances","scaledSymbolCoord","thisTileSymbol","CrossTileIDs","maxCrossTileID","generate","CrossTileSymbolLayerIndex","usedCrossTileIDs","zoomIndexes","newZoomIndex","addBucket","crossTileIDs","removeBucketCrossTileIDs","childIndex","parentIndex","removedBucket","removeStaleBuckets","currentIDs","tilesChanged","CrossTileSymbolIndex","maxBucketInstanceId","bucketsInCurrentPlacement","symbolBucketsChanged","currentBucketIDs","pruneUnusedLayers","usedLayers","usedLayerMap","usedLayer","_emitValidationErrors","supportedDiffOperations","diffOperations","ignoredDiffOperations","empty","drapedLayers","getWorkerPool","glyphManager","localIdeographFontFamily","crossTileSymbolIndex","_num3DLayers","_numSymbolLayers","_numCircleLayers","_serializedLayers","_sourceCaches","_otherSourceCaches","_symbolSourceCaches","_availableImages","_order","_drapedFirstOrder","_markersNeedUpdate","_resetUpdates","_rtlTextPluginCallback","registerForPluginStateChange","sourceCacheType","loadURL","_request","_load","loadJSON","loadEmpty","_updateLayerCount","stylesheet","_updateMapProjection","_changed","_loadSprite","_serializeLayers","terrainSetForDrapingOnly","_createTerrain","_createFog","_updateDrapeFirstLayers","_explicitProjection","_updateProjection","applyProjectionUpdate","projectionOptions","getTerrain","setTerrainForDraping","_spriteRequest","baseURL","jsonRequest","maybeComplete","imageRequest","_updatedSources","_optimizeForTerrain","isLayerDraped","_checkLoaded","updatedIds","_updatedLayers","_removedLayers","_updateWorkerLayers","_reloadSource","_clearSource","_updateTilesForChangedImages","_updatedPaintProps","sourcesUsedBefore","_getLayerSourceCache","programIds","programConfiguration","programId","_updateMarkersOpacity","changedImages","_changedImages","nextState","changes","removeOrAddSourceCommands","beforeLayers","beforeTerrain","beforeOrder","afterOrder","beforeIndex","afterIndex","clean","beforeLayer","afterLayer","insertBeforeLayerId","diffStyles","unimplementedOps","_afterImageUpdated","sourceInstance","createSource","isSourceLoaded","_isSourceCacheLoaded","addSourceCache","validateCustomStyleLayer","_layerOrderChanged","_updateLayer","moveLayer","newIndex","hasLayerType","getFilter","cacheId","_flattenAndSortRenderedFeatures","sourceResults","isLayer3D","features3D","sourceResult","layerFeatures","topmost3D","includedSources","has3DLayer","has3DLayers","queryGeometryStruct","createFromScreenPoints","_showQueryGeometry","getLayerSourceCache","renderedSymbols","bucketQueryData","queryData","bucketSymbols","layerSymbols","sortedA","symbolFeature","layerName","addSourceType","SourceType","getSourceType","setSourceType","workerSourceURL","_setTransitionParameters","_force3DLayerUpdate","currSpec","_markers","_requestDomTask","_evaluateOpacity","getFog","transitionOptions","draped","nonDraped","_forceSymbolLayerUpdate","_remove","rtlTextPluginEvented","_updateSources","_generateCollisionBoxes","_updatePlacement","placementCommitted","layerBucketsChanged","pauseablePlacement","_releaseSymbolFadeTiles","getResource","sc","hasSymbolLayers","hasCircleLayers","_clearWorkerCaches","preludeTerrain","preludeFog","compile","prelude","preludeCommonSource","preludeCommon","preludeFragPrecisionQualifiers","shaders","backgroundPattern","clippingMask","heatmapTexture","collisionCircle","fillOutline","fillOutlinePattern","fillPattern","fillExtrusion","fillExtrusionPattern","hillshadePrepare","linePattern","symbolIcon","symbolSDF","symbolTextAndIcon","terrainRaster","terrainDepth","skybox","skyboxVert","skyboxGradient","skyboxCapture","globeRaster","globeAtmosphere","fragmentSource","vertexSource","isGlobalPrelude","pragmaRegex","uniformRegex","staticAttributes","fragmentUniforms","vertexUniforms","commonUniforms","staticUniforms","fragmentPragmas","operation","attrType","unpackType","VertexArrayObject","boundProgram","boundLayoutVertexBuffer","boundPaintVertexBuffers","boundIndexBuffer","boundVertexOffset","boundDynamicVertexBuffer","paintVertexBuffers","dynamicVertexBuffer","dynamicVertexBuffer2","dynamicVertexBuffer3","paintBuffersDiffer","boundDynamicVertexBuffer2","boundDynamicVertexBuffer3","freshBind","numPrevAttributes","numNextAttributes","numAttributes","createVertexArrayOES","currentNumAttributes","disableVertexAttribArray","vertexBuffer","deleteVertexArrayOES","getTileLatRange","renderHillshade","prepareDrawTile","uniformValues","highlight","accent","moving","u_matrix","u_image","u_latrange","u_light","u_shadow","u_highlight","u_accent","hillshadeUniformValues","prepareDrawProgram","tileBoundsBuffer","tileBoundsIndexBuffer","tileBoundsSegments","getTileBoundsBuffers","TRIANGLES","prepareDEMTexture","pixelData","prepareHillshade","TEXTURE1","renderTexture","getMercatorTileBoundsBuffers","u_dimension","u_zoom","u_unpack","unpackVector","hillshadeUniformPrepareValues","terrainRasterUniforms","UniformMatrix4f","u_image0","Uniform1i","u_skirt_height","terrainRasterUniformValues","skirtHeight","globeRasterUniformValues","globeMercatorMatrix","normalizeMatrix","zoomTransition","mercCenter","frustumDirTl","frustumDirTr","frustumDirBr","frustumDirBl","globePosition","gridMatrix","u_proj_matrix","u_globe_matrix","u_normalize_matrix","u_merc_matrix","u_zoom_transition","u_merc_center","u_frustum_tl","u_frustum_tr","u_frustum_br","u_frustum_bl","u_globe_pos","u_globe_radius","u_viewport","u_grid_matrix","demTileChanged","vertexMorphing","newMorphing","phase","getMorphValuesForProxy","_validOp","_nextOp","shaderDefines","0","1","2","isEdgeTile","cid","renderWorldCopies","clippingMaskUniformValues","rasterFade","sinceTile","sinceParent","idealZ","coveringZoomLevel","fadeIn","childOpacity","mix","MockSourceCache","sourceSpec","sourceDispatcher","ProxySourceCache","renderCache","renderCachePool","proxyCachedFBO","incoming","freeFBO","fbos","fboIds","deallocRenderCache","fb","ProxiedTileID","proxyTileKey","Elevation","terrainTileForTile","prevTerrainTileForTile","triangleGridArray","triangleGridIndices","skirtIndicesOffset","gridBound","bound","quad","createGrid","gridBuffer","gridIndexBuffer","gridSegments","gridNoSkirtSegments","proxyCoords","proxiedCoords","_visibleDemTiles","_drapedRenderBatches","_sourceTilesOverlap","proxySourceCache","orthoMatrix","_overlapStencilMode","GEQUAL","REPLACE","_previousZoom","pool","_findCoveringTileCache","_tilesDirty","_useVertexMorphing","_exaggeration","_mockSourceCache","_onStyleDataEvent","_checkRenderCacheEfficiency","_style","cameraChanging","terrainProps","updateSourceCache","scaledDemTileSize","_initializing","_emptyDEMTextureDirty","_disable","sourceCacheID","renderCacheInfo","renderCacheEfficiency","efficiency","firstUndrapedLayer","_invalidateRenderCache","_sharedDepthStencil","_emptyDEMTexture","_emptyDepthBufferTexture","_depthFBO","_depthTexture","drapeBufferSize","useVertexMorphing","updateTileBinding","sourcesCoords","psc","cameraCoordinate","aPoint","bPoint","cameraScaled","previousProxyToSource","proxyToSource","_setupProxiedCoordsForOrtho","_assignTerrainTiles","_prepareDEMTextures","_setupDrapedRenderBatches","_initFBOPool","_setupRenderCache","renderingToTexture","_updateTimestamp","visibleKeys","_findTileCoveringTileID","_prepareDemTileUniforms","proxyTile","uniformSuffix","proxyId","demScaleBy","emptyDEMTexture","_updateEmptyDEMTexture","of","_getLoadedAreaMinimum","nonzero","TEXTURE2","pack","setupElevationDraw","u_dem","u_dem_prev","u_dem_unpack","u_dem_tl","u_dem_tl_prev","u_dem_scale","u_dem_scale_prev","u_dem_size","u_dem_lerp","u_depth","u_depth_size_inv","u_exaggeration","u_tile_tl_up","u_tile_tr_up","u_tile_br_up","u_tile_bl_up","u_tile_up_scale","useDenormalizedUpVectorScale","prevDemTile","morphingPhase","morphing","srcTile","srcDemTile","dstTile","dstDemTile","TEXTURE4","TEXTURE3","useDepthForOcclusion","emptyDepthBufferTexture","useMeterToDem","labelPlaneMatrixInv","setTerrainUniformValues","renderToBackBuffer","accumulatedDrapes","gpuTimingDeferredRenderStart","programMode","showWireframe","showTerrainWireframe","useCustomAntialiasing","globeUseCustomAntiAliasing","setShaderMode","isWireframe","colorModeForRenderPass","LEQUAL","depthRangeFor3D","calculateGlobeMercatorMatrix","mercatorCenter","sharedBuffers","globeSharedBuffers","primitive","LINES","nextDemTile","morph","shaderMode","elevationOptions","tileCornersLatLng","getLatitudinalLod","getGridMatrix","frustumCorners","globeCenterInViewSpace","topCap","bottomCap","northPoleBuffer","southPoleBuffer","globePoleMatrixForTile","drawPole","skirt","getWirefameBuffer","drawTerrainRaster","gpuTimingDeferredRenderEnd","renderBatch","startLayerIndex","proxies","drapedLayerBatch","poolIndex","proxy","renderCacheIndex","useRenderCache","currentStencilSource","renderedToTile","_setupStencil","renderLayer","postRender","layerCount","uncacheableLayerCount","drapedLayerCount","reachedUndrapedLayer","preparedTiles","_createFBO","bufferSize","DEPTH_STENCIL","_stencilRef","_shouldDisableRenderCache","crossFade","isFading","isTransitioning","_clearRasterFadeFromRenderCache","hasRasterSource","fade","batches","batchStart","currentLayer","equal","prevTiles","proxyFBO","sortedRenderBatches","batchA","batchB","batch","_overlapStencilType","stencilRange","EQUAL","GREATER","_renderTileClippingMasks","clipOrMaskOverlapStencilType","stencilModeForRTTOverlap","_tileClippingMaskIDs","tileExtentBuffer","quadTriangleIndexBuffer","tileExtentSegments","scale$1","mercatorZScale","distanceAlongRay","drawDepth","DEPTH_COMPONENT16","sourceCoords","_setupProxiedCoordsForImageSource","proxys","proxyTileID","proxied","_createProxiedId","hasOverlap","imageSource","aabb","tileOutsideImage","imageTileID","ix","iy","recycle","recycled","lookup","sourceTileID","downscale","pathToLookup","sourceTiles","wireframeSegments","wireframeGridIndices","GRID_DIM","wireframeIndexBuffer","getTokenizedAttributesAndUniforms","configuration","fixedUniforms","fixedDefines","createProgram","staticAttrInfo","dynamicAttrInfo","allAttrInfo","staticUniformsInfo","dynamicUniformsInfo","uniformList","allUniformsInfo","fragmentShader","FRAGMENT_SHADER","failedToCreate","attachShader","vertexShader","uniformLocations","bindAttribLocation","linkProgram","deleteShader","uniformLocation","getUniformLocation","terrainUniforms","Uniform2f","u_meter_to_dem","u_label_plane_matrix_inv","Uniform3f","fogUniforms","u_fog_matrix","u_fog_range","u_fog_color","u_fog_horizon_blend","u_fog_temporal_offset","u_globe_transition","u_is_globe","terrainUniformValues","setFogUniformValues","fogUniformsValues","drawMode","currentProperties","dynamicLayoutBuffer","dynamicLayoutBuffer2","dynamicLayoutBuffer3","primitiveSize","LINE_STRIP","drawElements","UNSIGNED_SHORT","patternUniformValues","tileRatio","tileSizeAtNearestZoom","pixelX","pixelY","u_texsize","u_scale","u_fade","u_pixel_coord_upper","u_pixel_coord_lower","identityMatrix","fillExtrusionUniformValues","shouldUseVerticalGradient","heightLift","invMatrix","_lp","lightPos","lightMat","lightColor","u_lightpos","u_lightintensity","u_lightcolor","u_vertical_gradient","u_opacity","u_tile_id","u_inv_rot_matrix","u_up_dir","u_height_lift","fillExtrusionPatternUniformValues","heightFactorUniform","u_height_factor","fillUniformValues","fillPatternUniformValues","fillOutlineUniformValues","drawingBufferSize","u_world","fillOutlinePatternUniformValues","circleUniformValues","extrudeScale","globePixelsToTileUnits","pixelsToGLUnits","u_camera_to_center_distance","translatePosMatrix","u_device_pixel_ratio","u_extrude_scale","circleDefinesValues","collisionUniformValues","debugUniformValues","scaleRatio","u_color","u_overlay","u_overlay_scale","heatmapUniformValues","u_intensity","lineUniformValues","trimOffset","calculateMatrix","u_pixels_to_tile_units","u_units_to_pixels","u_dash_image","u_gradient_image","u_image_height","u_mix","u_alpha_discard_threshold","u_trim_offset","hasDash","tileZoomRatio","calculateTileRatio","linePatternUniformValues","rasterUniformValues","parentTL","parentScaleBy","u_tl_parent","u_scale_parent","u_fade_t","u_image1","u_brightness_low","u_brightness_high","u_saturation_factor","saturation","u_contrast_factor","contrast","u_spin_weights","spinWeights","u_perspective_transform","symbolIconUniformValues","rotateInShader","texSize","u_is_size_zoom_constant","u_is_size_feature_constant","u_size_t","u_size","u_rotate_symbol","u_aspect_ratio","u_fade_change","u_label_plane_matrix","u_coord_matrix","u_is_text","u_pitch_with_map","u_texture","u_camera_forward","u_ecef_origin","u_tile_matrix","u_up_vector","globeECEFOrigin","symbolSDFUniformValues","isHalo","u_gamma_scale","u_is_halo","symbolTextAndIconUniformValues","texSizeSDF","texSizeIcon","u_texsize_icon","u_texture_icon","backgroundUniformValues","backgroundPatternUniformValues","imagePosA","imagePosB","u_pattern_tl_a","u_pattern_br_a","u_pattern_tl_b","u_pattern_br_b","u_pattern_size_a","u_pattern_size_b","u_scale_a","u_scale_b","u_tile_units_to_pixels","bgPatternUniformValues","programUniforms","UniformMatrix2f","u_inv_matrix","u_viewport_size","u_color_ramp","u_sun_direction","u_cubemap","u_temporal_offset","u_center_direction","u_radius","u_matrix_3f","UniformMatrix3f","u_sun_intensity","u_color_tint_r","u_color_tint_m","u_luminance","u_horizon","u_transition","u_fadeout_range","u_high_color","u_space_color","u_star_intensity","u_star_density","u_star_size","u_horizon_angle","u_rotation_matrix","quadTriangles","drawCollisionDebug","tileBatches","circleCount","circleOffset","invTransform","circleProgram","vertexData","CollisionCircleLayoutArray","circleIdx","collision","quadCount","triCount","QuadTriangleArray","identityMat4","calculateVariableRenderShift","renderTextSize","updateVariableAnchorsForBucket","updateTextFitIcon","dynamicTextLayoutVertexArray","dynamicIconLayoutVertexArray","placedTextShifts","skipOrientation","upDir","symbolProjection","shiftedAnchor","shiftedTileAnchor","rotatedShift","placedIcons","getSymbolProgramName","drawLayerSymbols","rotationAlignment","pitchAlignment","hasSortKey","depthModeForSublayer","isGlobeProjection","tileRenderState","mercatorCameraUp","globeCameraUp","mercatorFromTransition","viewMatrix","getWorldToCamera","viewToEcef","cameraUpVector","computeGlobeCameraUp","atlasInterpolation","atlasInterpolationIcon","atlasTextureIcon","zoomDependentSize","rotating","iconScaled","bucketIsGlobeProjection","globeToMercator","labelPlaneMatrixRendering","hasVariableAnchors","labelPlaneMatrixPlacement","projectedPosOnLabelSpace","uLabelPlaneMatrix","uglCoordMatrix","baseDefines","hasHalo","oldSegments","segmentState","drawSymbolElements","drawFillTiles","isOutline","programName","atlas","stencilModeForClipping","drawExtrusionTiles","flatRoofsUpdate","attrIndex","vertexAttrib2f","neighborCoord","getLoadedBucket","nid","zoomLevels","projectedToBorder","xjoin","yjoin","projectCombinedSpanToBorder","neighborDEMTile","neighborTileID","flatBase","verticalEdge","maxOffsetFromBorder","coord3","thirdPoint","nBucket","ib","updateNeighbor","parta","partABorderRange","partb","saveIb","topColor","btmColor","leftColor","rightColor","centerColor","drawHorizontalLine","drawDebugSSRect","drawVerticalLine","SCISSOR_TEST","scissor","drawDebugTile","emptyTexture","debugBuffer","debugIndexBuffer","debugSegments","tileRawData","tileSizeKb","tileIdText","initDebugOverlayCanvas","debugOverlayCanvas","ctx2d","shadowColor","shadowBlur","strokeStyle","strokeText","debugOverlayTexture","drawTextToOverlay","debugTextBuffer","debugTextIndexBuffer","debugTextSegments","skyboxAttributes","SkyboxGeometry","SkyboxVertexArray","drawSkyboxFace","faceRotate","sunDirection","atmosphereColor","atmosphereHaloColor","sunIntensity","fromMat4","TEXTURE_CUBE_MAP_POSITIVE_X","atmosphereLayout","AtmosphereBuffer","AtmosphereVertexArray","renderPass","strokeOpacity","segmentsRenderStates","definesValues","segmentsState","HALF_FLOAT_OES","bindTextureToFramebuffer","cullMode","textureUnit","colorRampUnit","viewportBuffer","viewportSegments","dasharrayProperty","capProperty","hasOpacity","useStencilMaskRenderPass","constantDash","constantCap","trimStart","trimEnd","fakeOffsetShift","layerGradient","gradientTexture","textureResolution","potentialOverzoom","REPEAT","stencilId","INVERT","resetStencilClippingMasks","opaquePassEnabledForLayer","stencilModeFor3D","stencilModes","stencilConfigForOverlap","isInitialLoad","minTileZ","rasterFadeDuration","textureFilter","isPatternMissing","backgroundTiles","getBackgroundTiles","transitionOpacity","temporalOffset","frameCounter","skyboxFbo","TEXTURE_CUBE_MAP","captureSkybox","cubemap","skyboxMatrix","centerDirection","drawSkyboxGradient","setCustomLayerDefaults","customLayerMatrix","setBaseState","Painter","_tileTextures","frameCopies","loadTimeStamps","numSublayers","depthEpsilon","deferredRenderGpuTimeQueries","gpuTimers","_backgroundTiles","updateTerrain","_updateFog","fogCullDistSq","fogCullDist","_terrainEnabled","tileExtentArray","debugArray","viewportArray","tileBoundsArray","mercatorBoundsBuffer","mercatorBoundsSegments","quadTriangleIndices","tileLineStripIndices","identityMat","stencilClearMode","atmosphereBuffer","nextStencilID","dirtyStencilClippingMasks","NOTEQUAL","stencilValues","zToStencilMode","_showOverdrawInspector","CONSTANT_COLOR","opaquePassCutoff","coordsAscending","coordsDescending","coordsDescendingSymbol","GlobeSharedBuffers","isMapAuthenticated","showOverdrawInspector","highColor","spaceColor","rotateX$1","rotationMatrix","starIntensity","mapValue","minHorizonBlend","globeCenterDistance","distanceToHorizon","horizonAngle","fadeoutRange","isHorizonVisible","showTileBoundaries","showQueryGeometry","selectedSource","showPadding","centerPoint","drawDebugPadding","tileLoaded","speedIndexTiming","saveCanvasCopy","gpuTimingStart","gpuTimingEnd","gpuTiming","ext","layerTimer","calls","cpuTime","createQueryEXT","beginQueryEXT","TIME_ELAPSED_EXT","gpuTimingDeferredRender","endQueryEXT","collectGpuTimers","currentLayerTimers","collectDeferredRenderGpuQueries","currentQueries","queryGpuTimers","gpuTimer","gpuTime","getQueryObjectEXT","QUERY_RESULT_EXT","deleteQueryEXT","queryGpuTimeDeferredRender","gpuQueries","inViewportPixelUnitsUnits","sinA","cosA","translatedMatrix","textures","currentGlobalDefines","rtt","allDefines","fogOpacity","fogUniformValues","setTileLoadedFlag","flag","canvasCopy","copyTexImage2D","getCanvasCopiesAndTimestamps","canvasCopies","timeStamps","averageElevationNeedsEasing","_elevation","oldTiles","newTiles","clearBackgroundTiles","EdgeInsets","updateTransformOrientation","setColumn","orientationFromPitchBearing","orientationFromFrame","xyForward","xyUp","xyDir","scale$2","FreeCameraOptions","_position","mercatorCoordinate","_renderWorldCopies","lookAtPoint","setPitchBearing","FreeCamera","_orientation","identity$1","getPitchBearing","getCameraToWorld","cameraToWorld","getWorldToCameraPosition","uniformScale","invPosition","invOrientation","getCameraToClipPerspective","nearZ","farZ","getDistanceToElevation","elevationMeters","getProjectionAdjustments","withoutRotation","interpT","getProjectionInterpolationT","loc","locw","loce","pw","angleAdjust","mc2","loc2","mc3","loc3","delta3","mc4","loc4","p4","delta4","unrotate","shear","scaleAdjustment","getScaleAdjustment","getZoomAdjustment","zoomAdjustmentOrigin","rangeAdjustment","loc1","pdx","pdy","mdx","mdy","Transform","minPitch","maxPitch","_minZoom","_maxZoom","_minPitch","_maxPitch","setMaxBounds","_nearZ","_farZ","_unmodified","_edgeInsets","_projMatrixCache","_alignedProjMatrixCache","_fogTileMatrixCache","_distanceTileDataCache","_averageElevation","cameraElevationReference","_centerAltitudeValidForExaggeration","_setZoom","_seaLevelZoom","_calcMatrices","_updateCameraOnTerrain","constrainCameraOverTerrain","centerAltitudeChanged","_constrainCameraAltitude","oldProjection","projectionHasChanged","_worldSizeFromZoom","_zoomFromMercatorZ","cameraPixelsPerMeter","cameraWorldSize","centerOffset","averageElevation","_calcFogMatrices","_zoom","_updateSeaLevelZoom","_constrain","zoomFraction","sampleAverageElevation","elevationSamplePoints","elevationSum","weightSum","hit","weight","_updateZoomFromElevation","seaLevelZoom","elevationAtCenter","mercatorElevation","_mercatorZfromZoom","computeZoomRelativeTo","centerOnTargetAltitude","targetPosition","setFreeCameraOptions","_updateCameraState","_setCameraOrientation","newPosition","exactEquals$1","_setCameraPosition","_updateStateFromCamera","recenterOnTerrain","length$1","updatedOrientation","minWorldSize","maxWorldSize","distToCenter","isPaddingEqual","interpolatePadding","scaleZoom","utl","utr","ubl","ubr","w0","w1","extraWorldCopy","actualZ","useElevationData","isMercator","centerCoord","centerLatitude","cameraFrustum","fromInvProjectionMatrix","cameraCoord","mercatorPosition","meterToTile","cameraAltitude","zoomSplitDistance","maxRange","relativeScaleAtMercatorCoord","mcEast","mcSouth","ll","llEast","llSouth","pEast","pSouth","newRootTile","tileAABB","fullyVisible","cameraHeightSqr","getAABBFromElevation","minmax","shouldSplit","dzSqr","tileScaleAdjustment","closestLat","relativeTileScale","_mercatorScaleRatio","relativeScale","distanceSqr","dSqr","distToSplitScale","intersectResult","distanceSq","fogTileMatrix","getAABBPointSquareDist","overHorizonLine","cornerFar","furthestTileCorner","worldFar","projectedLngLat","setLocationAtPoint","setLocation","coordinateLocation","locationPoint3D","pointLocation","pointLocation3D","z1","screenPointToMercatorRay","rayIntersection","rCast","sampleTerrainIn3D","_getBounds","topLeft","topRight","bottomLeft","_getBounds3D","clampToTop","getMaxBounds","maxBounds","worldMinX","worldMaxX","worldMinY","worldMaxY","calculatePosMatrix","distanceDataKey","windowScaleFactor","tX","tY","bX","bY","fogTileMatrixKey","worldToFogMatrix","aligned","projMatrixKey","mercatorMatrix","alignedProjMatrix","_pixelsToTileUnitsCache","inverseAdjustmentMatrix","getPixelsToTileUnitsMatrix","mercPixelsPerMeter","_computeCameraPosition","metersToMerc","newCenter","maxAltitude","elevationAtCamera","_minimumHeightOverTerrain","cameraToCenter","prevDistToCamera","newDistToCamera","_constraining","unmodified","h2","_minZoomForBounds","_maxCameraBoundsDistance","centerScale","refScale","GLOBE_SCALE_MATCH_LATITUDE","projectionT","worldToCamera","cameraToClip","adjustments","clipToCamera","skyboxHorizonShift","xShift","angleCos","angleSin","alignedM","calculateGlobeMatrix","cameraPos","metersToPixel","targetPixelsPerMeter","_translateCameraConstrained","deltaZ","centerAltitude","anyCornerOffEdge","minWX","maxWX","coordinate","zoomDeltaToMovement","zoomDelta","relativeZoom","projectClamped","projectionScaler","throttle","pending","later","hashName","_hashName","_updateHash","_updateHashUnthrottled","addTo","_onHashChange","getHashString","mapFeedback","getZoom","getBearing","getPitch","found","_getCurrentHash","keyval","dragRotate","touchZoomRotate","jumpTo","history","replaceState","defaultInertiaOptions","linearity","defaultPanInertiaOptions","deceleration","defaultZoomInertiaOptions","defaultBearingInertiaOptions","defaultPitchInertiaOptions","HandlerInertia","_inertiaBuffer","record","settings","_drainInertiaBuffer","inertia","_onMoveEnd","panInertiaOptions","deltas","pinchAround","around","bearingDelta","pitchDelta","panDelta","easeOptions","calculateEasing","amount","extendDuration","noMoveStart","inertiaDuration","inertiaOptions","speed","MapMouseEvent","_defaultPrevented","DOM","getCanvasContainer","MapTouchEvent","lngLats","MapWheelEvent","MapEventHandler","_clickTolerance","clickTolerance","_mousedownPos","wheel","_firePreventable","preclick","synth","dblclick","mouseover","mapEvent","BlockableMapEventHandler","_delayContextMenu","_contextMenuEvent","contextmenu","BoxZoomHandler","_el","_container","_enabled","_active","_startPos","_lastPos","mousemoveWindow","_box","_fireEvent","mouseupWindow","cameraAnimation","fitScreenCoordinates","linear","blur","indexTouches","SingleTapRecognizer","numTouches","mapTouches","newTouches","prevPos","singleTap","numTaps","lastTime","lastTap","soonEnough","closeEnough","TapZoomHandler","_zoomIn","_zoomOut","zoomInPoint","zoomOutPoint","easeTo","BUTTONS_FLAGS","MouseHandler","_moved","_lastPoint","_eventButton","_correctButton","_move","eventButton","MousePanHandler","MouseRotateHandler","MousePitchHandler","TouchPanHandler","_minTouches","_touches","_sum","_calculateTransform","_cooperativeGestures","isMoving","_showTouchPanBlockerAlert","_alertContainer","_alertTimer","touchPointSum","touchDeltaSum","touchDeltaCount","prevPoint","_addTouchPanBlocker","_getUIString","TwoTouchHandler","_firstTwoTouches","_start","firstTouches","getTouchById","_aroundCenter","getZoomDelta","lastDistance","TouchZoomHandler","_distance","_startDistance","getBearingDelta","TouchRotateHandler","_minDiameter","_startVector","_vector","lastVector","_isBelowThreshold","bearingDeltaSinceStart","isVertical","TouchPitchHandler","_firstMove","_lastPoints","lastPoints","vectorA","vectorB","gestureBeginsVertically","movedA","movedB","isSameDirection","panStep","bearingStep","pitchStep","KeyboardHandler","stepOptions","_panStep","_bearingStep","_pitchStep","_rotationDisabled","altKey","zoomDir","bearingDir","pitchDir","xDir","yDir","easeId","easeOut","disableRotation","enableRotation","wheelZoomDelta","ScrollZoomHandler","_handler","_delta","_defaultZoomRate","_wheelZoomRate","setZoomRate","zoomRate","setWheelZoomRate","wheelZoomRate","_finishTimeout","isZooming","_zooming","_addScrollZoomBlocker","_isFullscreen","_showBlockerAlert","deltaMode","WheelEvent","DOM_DELTA_LINE","timeDelta","_lastWheelEventTime","_type","_lastValue","_timeout","_onTimeout","_lastWheelEvent","initialEvent","_frameId","_aroundPoint","_aroundCoord","_targetZoom","_triggerRenderFrame","renderFrame","startingZoom","startZoom","startScale","_startZoom","_easing","_smoothOutEasing","targetZoom","finished","noInertia","needsRenderFrame","aroundCoord","_ease","_prevEase","fullscreenElement","webkitFullscreenElement","DoubleClickZoomHandler","clickZoom","TapZoom","_clickZoom","_tapZoom","ClickZoomHandler","TapDragZoomHandler","_tap","_swipePoint","_swipeTouch","_tapTime","newSwipePoint","DragPanHandler","mousePan","touchPan","_mousePan","_touchPan","_inertiaOptions","DragRotateHandler","mouseRotate","mousePitch","_pitchWithRotate","pitchWithRotate","_mouseRotate","_mousePitch","TouchZoomRotateHandler","touchZoom","touchRotate","tapDragZoom","_touchZoom","_touchRotate","_tapDragZoom","RenderFrameEvent","TrackingEllipsoid","pointOnSurface","centerToSurface","projectRay","intersection","hasChange","HandlerManager","_handlers","_handlersById","_changes","_inertia","_bearingSnap","bearingSnap","_previousActiveHandlers","_trackingEllipsoid","_dragOrigin","_eventsInProgress","_addDefaultHandlers","listenerOptions","handleWindowEvent","handleEvent","tapZoom","touchPitch","scrollZoom","keyboard","interactive","handlerName","allowed","allowEndAnimation","_updatingCamera","_fireEvents","isRotating","_blockedByActive","activeHandlers","myName","_getMapTouches","eventName","isRenderFrame","mergedHandlerResult","eventsInProgress","mergeHandlerResult","deactivatedHandlers","_stop","handlerResult","_applyChanges","combined","combinedEventsInProgress","combinedDeactivatedHandlers","change","_updateMapTransform","combinedResult","toVec3","preZoom","panVec","startPoint","startLat","endPoint","originalZoom","zoomVec","pickedPosition","aroundRay","movement","newEventsInProgress","wasMoving","nowMoving","startEvents","endEvents","originalEndEvent","stillMoving","inertialEase","shouldSnapToNorth","resetNorth","_requestFrame","_renderTaskQueue","freeCameraNotSupportedWarning","Camera","_moving","panBy","panTo","zoomTo","zoomIn","getPadding","setPadding","rotateTo","resetNorthPitch","snapToNorth","cameraForBounds","_cameraForBoxAndBearing","_extendCameraOptions","defaultPadding","eOptions","edgePadding","p0world","p1world","p2world","p3world","angleRadians","p0rotated","p1rotated","p2rotated","p3rotated","upperRight","lowerLeft","rotatedPaddingOffset","offsetAtFinalZoom","_cameraForBox","minAltitude","focusAltitude","coord0","coord1","centerIntersectionPoint","centerIntersectionCoord","centerMercatorRay","halfDistanceToGround","steps","cameraPositionToGround","fitBounds","_fitInternal","_raycastElevationBox","point2","point3","r3","m0","m3","minLngLat","maxLngLat","lngLat0","lngLat1","calculatedOptions","flyTo","preloadOnly","zoomChanged","bearingChanged","pitchChanged","prevZoom","prevPitch","prevBearing","defaultEasing","essential","startBearing","startPitch","startPadding","_normalizeBearing","offsetAsPoint","pointAtOffset","rotatedOffset","locationAtOffset","_normalizeCenter","finalScale","aroundPoint","_rotating","_pitching","paddingChanged","speedup","_fireMoveEvents","predictedTransforms","_emulate","currently","pitching","_padding","_easeId","_prepareEase","interruptingEaseId","_afterEase","wasZooming","wasRotating","wasPitching","coercedOptions","curve","rho","u1","wMax","rho2","sinh","cosh","screenSpeed","maxDuration","isEasing","_easeFrameId","allowGestures","_cancelRenderFrame","_onEaseFrame","_onEaseEnd","onEaseEnd","_easeStart","_easeOptions","_requestRenderFrame","_renderFrameCallback","currentBearing","initialTransform","numFrames","emulateFrame","AttributionControl","getDefaultPosition","compact","_compactButton","_toggleAttribution","_setElementTitle","_innerContainer","_updateAttributions","_updateEditLink","_updateData","_updateCompact","_attribHTML","firstElementChild","editLink","_editLink","styleOwner","styleId","paramString","_hash","attributions","owner","attrib","customAttribution","attribHTML","LogoControl","_updateLogo","_logoRequired","mapbox_logo","containerChildren","TaskQueue","_queue","_cleared","_currentlyRunning","running","smartWrap","priorPos","withinWrap","anchorTranslate","top-left","top-right","bottom-left","bottom-right","Marker","legacyOptions","_anchor","_color","_draggable","_isDragging","_rotation","_rotationAlignment","_pitchAlignment","_updateMoving","_element","_defaultMarker","defaultHeight","defaultWidth","stop-opacity","hasAttribute","_popup","_clearFadeTimer","_addMarker","setDraggable","_onMapClick","_addDragHandler","_onUp","_onMove","_removeMarker","getLngLat","_lngLat","setLngLat","getElement","setPopup","popup","_onKeyPress","_originalTabIndex","markerHeight","markerRadius","linearOffset","_marker","legacyCode","charCode","togglePopup","targetElement","getPopup","isOpen","_behindTerrain","unprojected","cameraLngLat","mapLocation","_usingGlobe","isLngLatBehindGlobe","_queryFogOpacity","_setOpacity","_fadeTimer","_updateDOM","_calculateXYTransform","_calculateZTransform","getPitchAlignment","tilt","posFromCenter","globeCenterToScreenPoint","tiltOverDist","yTilt","xTilt","spin","_calculateRotation","north","delaySnap","_updateFrameId","_pointerdownPos","_positionDelta","shouldBeDraggable","isDraggable","setRotation","setRotationAlignment","getRotationAlignment","setPitchAlignment","EasedVariable","initialValue","_startTime","_endTime","_end","defaultLocale","AttributionControl.ToggleAttribution","AttributionControl.MapFeedback","FullscreenControl.Enter","FullscreenControl.Exit","GeolocateControl.FindMyLocation","GeolocateControl.LocationNotAvailable","LogoControl.Title","Map.Title","NavigationControl.ResetBearing","NavigationControl.ZoomIn","NavigationControl.ZoomOut","ScrollZoomBlocker.CtrlMessage","ScrollZoomBlocker.CmdMessage","TouchPanBlocker.Message","cooperativeGestures","attributionControl","preserveDrawingBuffer","trackResize","optimizeForTerrain","refreshExpiredTiles","showCompass","showZoom","visualizePitch","MouseRotateWrapper","offTemp","positionOptions","enableHighAccuracy","maximumAge","fitBoundsOptions","trackUserLocation","showAccuracyCircle","showUserLocation","showUserHeading","legacySetScale","maxDistance","getRoundNum","ratio","unitAbbr","kilometer","meter","mile","foot","nautical-mile","pow10","multiplier","closeButton","closeOnClick","focusAfterOpen","focusQuerySelector","normalizeOffset","cornerOffset","setRTLTextPlugin","isSafariWithAntialiasingBug","_interactive","_failIfMajorPerformanceCaveat","_preserveDrawingBuffer","_trackResize","_isInitialLoad","_crossSourceCollisions","_crossFadingFactor","_domRenderTaskQueue","_controls","_mapId","_locale","_containerWidth","_containerHeight","_averageElevationLastSampledAt","_averageElevationExaggeration","RequestManager","testMode","_setupContainer","_setupPainter","_onWindowOnline","_onWindowResize","_localFontFamily","_localIdeographFontFamily","addControl","_logoControl","logoPosition","_getMapId","control","controlElement","positionContainer","_controlPositions","removeControl","hasControl","_canvasContainer","_canvas","_updateContainerDimensions","_resizeCanvas","fireMoving","setMinZoom","getMinZoom","setMaxZoom","getMaxZoom","setMinPitch","getMinPitch","setMaxPitch","getMaxPitch","getRenderWorldCopies","setRenderWorldCopies","getLanguage","setLanguage","getWorldview","setWorldview","_lazyInitEmptyStyle","explicitProjection","prevProjection","GLOBE_ZOOM_THRESHOLD_MAX","_createDelegatedListener","mousein","filteredLayers","delegates","delegate","delegatedListener","_delegatedListeners","areLayerArraysEqual","hash1","hash2","delegatedListeners","removeDelegatedListeners","queryTerrainElevation","_diffStyle","_updateStyle","_updateTerrain","_updateDiff","isStyleLoaded","areTilesLoaded","existingImage","loadImage","beforeId","transformValues","transformScaleWidth","transformScaleHeight","transformMatrix","_detectMissingCSS","_missingCSSCanary","canvasContainer","_contextLost","_contextRestored","controlContainer","_controlContainer","positionName","_onMapScroll","storeAuthState","_frame","_styleDirty","_sourcesDirty","updateStyle","_render","paintStartTimeStamp","frameStartTime","_removed","crossFading","averageElevationChanged","_updateAverageElevation","_forceMarkerUpdate","_placementDirty","renderCPUTime","renderGPUTime","frameLayerQueries","renderedLayerTimes","layerTimes","deferredRenderQueries","somethingDirty","_repaint","willIdle","_triggerFrame","speedIndexNumber","_calculateSpeedIndex","speedIndex","_fullyLoaded","_authenticate","ignoreTimeout","applyUpdate","currentElevation","newElevation","exaggerationChanged","elevationChange","finalFrame","canvasCopyInstances","read","readPixels","_canvasPixelComparison","allFrames","finalScore","numPixels","cnt","visualCompletness","loseContext","removeAuthState","_renderNextFrame","_showTileBoundaries","_showTerrainWireframe","_speedIndexTiming","_showPadding","_vertices","_setCacheLimits","setCacheLimits","NavigationControl","_zoomInButton","_createButton","_zoomOutButton","_compass","_compassIcon","_updateZoomButtons","isMax","isMin","_rotateCompassArrow","_setButtonTitle","GeolocateControl","geolocation","_updateMarkerRotationThrottled","_updateMarkerRotation","_numberOfWatches","_checkGeolocationSupport","_setupUI","_geolocationWatchID","clearWatch","_userLocationDotMarker","_accuracyCircleMarker","_onZoom","_noTimeout","_supportsGeolocation","permissions","_isOutOfMapMaxBounds","longitude","_setErrorState","_watchState","_geolocateButton","_onSuccess","_updateMarker","_finish","_lastKnownPosition","_updateCamera","_dotElement","accuracy","geolocateSource","_accuracy","_updateCircleRadius","circleDiameter","_circleElement","_heading","_onError","_clearWatch","_timeoutId","_setup","_onDeviceOrientation","deviceOrientationEvent","webkitCompassHeading","absolute","watchPosition","_addDeviceOrientationListener","getCurrentPosition","addListener","DeviceMotionEvent","requestPermission","DeviceOrientationEvent","ScaleControl","unitDisplay","_setScale","maxMeters","maxFeet","setUnit","FullscreenControl","_fullscreen","_fullscreenchange","_checkFullscreenSupport","_changeIcon","fullscreenEnabled","webkitFullscreenEnabled","_fullscreenButton","_updateTitle","_onClickFullscreen","_getTitle","toggle","exitFullscreen","webkitCancelFullScreen","requestFullscreen","webkitRequestFullscreen","Popup","_classList","_onClose","closeOnMove","_focusFirstElement","_trackPointer","_onMouseEvent","_content","trackPointer","setDOMContent","setHTML","frag","createDocumentFragment","getMaxWidth","setMaxWidth","htmlNode","hasChildNodes","_closeButton","addClassName","_updateClassList","removeClassName","toggleClassName","finalState","_getAnchor","bottomY","isLeft","isRight","_tip","offsetBottom","offsetedPos","firstFocusable","prewarm","clearPrewarmedResources","baseApiUrl","maxParallelImageRequests","numRequests","clearStorage","clearTileCache","cachedGuess","countries","guesses","logError","momentVersion","major","minor","charCodeToInt","unpackBase60","whole","fractional","arrayToInt","mapIndices","unpack","untils","intToUntil","abbrs","population","Zone","packedString","_set","Country","country_name","zone_names","OffsetAt","timeString","toTimeString","abbr","ZoneScore","offsetScore","abbrScore","findChange","sortZoneScores","addToGuesses","guessesForUserOffsets","guessesOffset","offsetsLength","filteredGuesses","rebuildGuess","intlName","timeZone","normalizeName","zoneScore","startYear","getFullYear","userOffsets","zoneScores","scoreOffsetAt","addZone","packed","normalized","link","addLink","alias","normal0","normal1","needsOffset","isUnixTimestamp","_f","_a","_tzm","utc","isMoment","unpacked","_index","zone_name","country_code","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","mom","offsetAt","dataVersion","_zones","_links","_names","_countries","country_zones","addCountries","zoneExists","didShowError","guess","ignoreCache","zonesForCountry","country","with_offset","abbrWrap","resetZoneWrap","defaultZone","updateOffset","keepTime","_isUTC","_d","zoneName","zoneAbbr","local","momentProperties","hookCallback","hooks","setHookCallback","hasOwnProp","isObjectEmpty","isUndefined","isDate","createUTC","strict","createLocalOrUTC","defaultParsingFlags","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","flags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","createInvalid","fun","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_l","Moment","suppressDeprecationWarnings","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","longDateFormat","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","hh","dd","ww","MM","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","addUnitAlias","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","getPrioritizedUnits","unitsObj","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","set$1","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","ms","setFullYear","createUTCDate","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","isPM","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","defineLocale","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","weekdayOverflow","curWeek","GG","createLocal","gg","ISO_8601","RFC_2822","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","offsetFromString","chunkOffset","matcher","cloneWithOffset","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","period","isAdding","invalid","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","keepOffset","toDate","inspect","datetime","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","dates","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","_len","validators","_key","_createChainableTypeChecker2","_len2","_key2","_createChainableTypeChecker","componentName","propFullName","componentNameSafe","propFullNameSafe","checkType","chainedCheckType","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","secret","getShim","ReactPropTypes","bigint","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","exact","checkPropTypes","PropTypes","_maxSize","_size","SPLIT_REGEX","DIGIT_REGEX","LEAD_DIGIT_REGEX","SPEC_CHAR_REGEX","CLEAN_QUOTES_REGEX","pathCache","setCache","getCache","normalizePath","isQuoted","shouldBeQuoted","hasLeadingNumber","hasSpecialChars","safe","iter","isBracket","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","oa","qa","na","la","xlinkHref","ra","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","sa","ta","ua","wa","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","Reflect","construct","Qa","Ra","_context","_payload","_init","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","Xa","activeElement","Ya","_wrapperState","initialChecked","Za","controlled","$a","bb","eb","Children","db","defaultSelected","gb","dangerouslySetInnerHTML","hb","jb","kb","mathml","lb","mb","nb","ob","MSApp","execUnsafeLocalFunction","lastChild","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","tabSize","widows","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","rb","sb","tb","ub","menuitem","embed","hr","keygen","track","wbr","vb","wb","xb","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","cc","sibling","bc","dc","fc","gc","hc","ic","jc","kc","lc","nc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","tc","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","hd","jd","kd","ld","md","nd","od","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","eventPhase","bubbles","isTrusted","td","ud","vd","Ad","screenX","screenY","getModifierState","zd","fromElement","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","Vd","Xd","Yd","wheelDeltaX","wheelDeltaY","wheelDelta","Zd","$d","be","ge","he","email","password","tel","me","qe","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","Me","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","$e","af","bf","cf","df","Nb","ef","ff","gf","hf","je","ke","jf","kf","lf","mf","autoFocus","__html","pf","qf","rf","sf","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","Component","refs","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","updater","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","mutableReadLanes","Nh","useState","getSnapshot","subscribe","setSnapshot","Oh","Ph","Qh","Rh","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","di","readContext","useCallback","useContext","useMemo","useReducer","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","ReactCurrentOwner","fi","gi","ji","ki","li","mi","baseLanes","ni","oi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","ri","pendingContext","Bi","Ci","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","unstable_expectedLoadTime","vi","wi","zi","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","multiple","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","aj","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","hj","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","createRange","setStart","removeAllRanges","addRange","setEnd","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","sk","uk","kk","hk","_calculateChangedBits","unstable_observedBits","unmount","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","keyList","hasProp","hasElementType","arrA","arrB","dateA","dateB","regexpA","regexpB","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","isarray","pathToRegexp","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","escaped","modifier","asterisk","partial","optional","escapeGroup","escapeString","encodeURIComponentPretty","pretty","attachKeys","sensitive","route","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","userProps","findIndex","pluginName","description","accessor","Header","Footer","originalWidth","originalId","placeholderOf","manualExpandedKey","expanded","expandSubRows","isExpanded","canExpand","subRows","colSpan","totalVisibleHeaderCount","row","useOptions","stateReducers","useControlledState","columnsDeps","allColumns","allColumnsDeps","accessValue","materializedColumns","materializedColumnsDeps","useInstanceAfterData","visibleColumns","visibleColumnsDeps","headerGroups","headerGroupsDeps","useInstanceBeforeDimensions","useInstance","prepareRow","getTableProps","getTableBodyProps","getHeaderGroupProps","getFooterGroupProps","getHeaderProps","getFooterProps","getRowProps","getCellProps","useFinalInstance","resetHiddenColumns","toggleHideColumn","setHiddenColumns","toggleHideAllColumns","getToggleHiddenProps","getToggleHideAllColumnsProps","hiddenColumns","onChange","toggleHidden","allColumnsHidden","indeterminate","initialState","columnId","flatHeaders","getHooks","autoResetHiddenColumns","defaultColumn","getSubRows","getRowId","stateReducer","totalLeft","totalMinWidth","totalMaxWidth","totalFlexWidth","canResize","rows","flatRows","rowsById","accessValueHooks","getInstance","originalSubRows","resetExpanded","toggleRowExpanded","toggleAllRowsExpanded","getToggleAllRowsExpandedProps","getToggleRowExpandedProps","paginateExpandedRows","autoResetExpanded","plugins","preExpandedRows","expandedRows","expandedDepth","isAllRowsExpanded","autoRemove","exactText","exactTextCase","includesAll","includesSome","includesValue","between","resetFilters","setAllFilters","filterValue","filterTypes","manualFilters","defaultCanFilter","disableFilters","autoResetFilters","canFilter","preFilteredRows","filteredRows","preFilteredFlatRows","preFilteredRowsById","filteredFlatRows","filteredRowsById","resetGlobalFilter","setGlobalFilter","Ge","globalFilter","userFilterTypes","manualGlobalFilter","autoResetGlobalFilter","disableGlobalFilter","preGlobalFilteredRows","preGlobalFilteredFlatRows","preGlobalFilteredRowsById","globalFilteredRows","globalFilteredFlatRows","globalFilteredRowsById","minMax","average","unique","uniqueCount","resetGroupBy","setGroupBy","toggleGroupBy","getGroupByToggleProps","groupBy","canGroupBy","isGrouped","groupedIndex","groupByFn","manualGroupBy","aggregations","autoResetGroupBy","disableGroupBy","defaultCanGroupBy","defaultGroupBy","Aggregated","aggregate","aggregateValue","groupByID","groupByVal","leafRows","preGroupedRows","preGroupedFlatRow","preGroupedRowsById","groupedRows","groupedFlatRows","groupedRowsById","onlyGroupedFlatRows","onlyGroupedRowsById","nonGroupedFlatRows","nonGroupedRowsById","allCells","isPlaceholder","isAggregated","_e","alphanumeric","basic","resetSortBy","setSortBy","toggleSortBy","clearSortBy","sortType","sortDescFirst","getSortByToggleProps","isMultiSortEvent","canSort","disableMultiSort","sortBy","desc","multi","disableSortRemove","disableMultiRemove","maxMultiSortColCount","orderByFn","sortTypes","manualSortBy","defaultCanSort","disableSortBy","autoResetSortBy","isSorted","sortedIndex","isSortedDesc","sortInverted","preSortedRows","preSortedFlatRows","sortedRows","sortedFlatRows","resetPage","gotoPage","setPageSize","pageSize","pageIndex","pageCount","page","autoResetPage","manualPagination","pageOptions","canPreviousPage","canNextPage","previousPage","nextPage","resetPivot","togglePivot","getPivotToggleProps","canPivot","pivotColumns","isPivotSource","uniqueValues","PivotHeader","isPivotGroup","pivotValue","isPivoted","autoResetPivot","manaulPivot","disablePivot","defaultCanPivot","defaultPivot","resetSelectedRows","toggleAllRowsSelected","toggleRowSelected","toggleAllPageRowsSelected","getToggleRowSelectedProps","getToggleAllRowsSelectedProps","getToggleAllPageRowsSelectedProps","manualRowSelectedKey","isSomeSelected","isAllRowsSelected","selectedRowIds","isAllPageRowsSelected","selectSubRows","autoResetSelectedRows","selectedFlatRows","setRowState","setCellState","resetRowState","initialRowStateAccessor","initialCellStateAccessor","rowState","rowId","cellState","autoResetRowState","resetColumnOrder","setColumnOrder","columnOrder","columnStartResizing","columnResizing","columnDoneResizing","resetResize","getResizerProps","moveEvent","moveHandler","upEvent","upHandler","columnWidth","headerIdWidths","columnWidths","isResizingColumn","disableResizing","autoResetResize","resetResizing","totalColumnsWidth","boxSizing","totalColumnsMinWidth","gridTemplateColumns","gridLayout","startWidths","en","minWidths","maxWidths","headerIdGridWidths","_UNSTABLE_usePivotColumns","defaultGroupByFn","defaultOrderByFn","defaultRenderer","emptyRenderer","ensurePluginOrder","flexRender","functionalUpdate","loopHooks","makePropGetter","makeRenderer","reduceHooks","safeUseLayoutEffect","useAbsoluteLayout","useAsyncDebounce","_regeneratorRuntime","promise","reject","sent","abrupt","useBlockLayout","useColumnOrder","useExpanded","useFilters","useFlexLayout","useGetLatest","useGlobalFilter","useGridLayout","useGroupBy","useMountedLayoutEffect","usePagination","useResizeColumns","useRowSelect","useRowState","useSortBy","useTable","initialRows","totalColumnsMaxWidth","headerGroup","footerGroups","__assign","__asyncDelegator","__asyncGenerator","__asyncValues","__await","__awaiter","__classPrivateFieldGet","__classPrivateFieldIn","__classPrivateFieldSet","__createBinding","__decorate","__exportStar","__generator","__importDefault","__importStar","__makeTemplateObject","__metadata","__param","__read","__rest","__spread","__spreadArrays","__values","decorate","throw","trys","ops","asyncIterator","raw","useReactToPrint","PrintContextConsumer","createContext","Consumer","copyStyles","pageStyle","removeAfterPrint","suppressErrors","startPrint","onAfterPrint","onPrintError","print","documentTitle","handleRemoveIframe","logMessages","contentDocument","triggerPrint","onBeforePrint","handleClick","onBeforeGetContent","handlePrint","bodyClass","fonts","nonce","srcdoc","Text","numResourcesToLoad","resourcesLoaded","resourcesErrored","FontFace","head","preload","onloadeddata","onstalled","sheet","cssRules","cssText","cloneElement","Provider","__self","__source","jsx","jsxs","forceUpdate","escape","_status","_result","IsSomeRendererActing","only","PureComponent","_currentValue2","_threadCount","createFactory","createRef","isValidElement","lazy","unstable_forceFrameRate","sortIndex","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","_isNumber","columnNumber","setFunctionName","setArgs","setFileName","setLineNumber","setColumnNumber","setSource","getFunctionName","getFileName","getLineNumber","getColumnNumber","hexRegex","numRegex","consider","trimmedStr","skipLike","numTrimmedByZeros","numStr","trimZeros","toposort","visited","outgoingEdges","makeOutgoingEdges","nodesHash","makeNodesHash","visit","predecessors","nodeRep","outgoing","uniqueNodes","_IPv6","IPv6","address","_segments","_best","_current","inzeroes","noConflict","_SecondLevelDomains","SecondLevelDomains","SLD","tldOffset","sldOffset","sldList","punycode","_URI","URI","_urlSupplied","absoluteTo","escapeRegEx","filterArrayValues","arrayContains","arraysEqual","one","two","trimSlashes","escapeForDumbFirefox36","strictEncodeURIComponent","_parts","username","hostname","urn","port","fragment","preventInvalidHostname","duplicateQueryParameters","escapeQuerySpace","protocol_expression","idn_expression","punycode_expression","ip4_expression","ip6_expression","find_uri_expression","findUri","parens","leading_whitespace_expression","ascii_tab_whitespace","defaultPorts","http","https","ftp","gopher","wss","hostProtocols","invalid_hostname_characters","domAttributes","getDomAttribute","iso8859","unescape","characters","pathname","reserved","urnpath","encodeQuery","decodeQuery","_part","generateAccessor","_group","generateSegmentedPathFunction","_sep","_codingFuncName","_innerCodingFuncName","actualCodingFunc","generateSimpleAccessor","generatePrefixAccessor","decodePath","decodeUrnPath","recodePath","recodeUrnPath","encodeReserved","parseAuthority","parseHost","bracketPos","firstColon","firstSlash","nextColon","ensureValidHostname","ensureValidPort","parseUserinfo","_string","parseQuery","requireAbsolutePath","buildAuthority","buildHost","buildUserinfo","buildQuery","buildQueryParameter","addQuery","setQuery","removeQuery","hasQuery","withinArray","joinPaths","nonEmptySegments","uri","commonPath","withinString","_parens","_attributeOpen","ignoreHtml","attributeOpen","parensEnd","parensMatch","parensMatchEnd","ignore","hasHostname","rejectEmptyHostname","toASCII","removeAll","unconflicted","URITemplate","deferBuild","_deferred_build","_object","what","ip","ip4","ip6","sld","idn","relative","_protocol","_port","_hostname","userinfo","resource","subdomain","tld","ReferenceError","directory","filename","decodePathSegment","mutatedDirectory","segmentCoded","setSearch","addSearch","removeSearch","hasSearch","normalizeProtocol","normalizeQuery","normalizeFragment","normalizeHostname","normalizePort","_was_relative","_path","_parent","_leadingParents","normalizePathname","normalizeSearch","normalizeHash","readable","toUnicode","qp","kv","basedir","resolved","relativeParts","baseParts","common","relativePath","basePath","one_map","two_map","one_query","two_query","maxInt","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","baseMinusTMin","stringFromCharCode","mapDomain","ucs2decode","extra","counter","ucs2encode","digitToBasic","digit","adapt","oldi","baseMinusT","inputLength","bias","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","warning","Worker_fn","Constructor","toPropertyKey","_defineProperties","protoProps","staticProps","_s","_r","_arr","_n","_typeof","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","previousPromise","callInvokeWithMethodAndArg","doneResult","delegateResult","maybeInvokeDelegate","_sent","dispatchException","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","ctor","awrap","async","skipTempReset","rootRecord","rval","exception","handle","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","hint","prim","toPrimitive","arrayLikeToArray","minLen","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","leafPrototypes","ns","def","globalThis","nmd","_setPrototypeOf","subClass","superClass","isAbsolute","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","_extends","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","invariant","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","allKeys","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","goBack","goForward","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","locationsAreEqual$$1","allPaths","baseTag","pushHashPath","nextPaths","lowerBound","upperBound","MAX_SIGNED_31_BIT_INT","commonjsGlobal","React","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","_this","changedBits","createEventEmitter","_inheritsLoose","_proto","nextProps","objectIs","_Component2","_this2","onUpdate","_proto2","excluded","sourceKeys","createNamedContext","historyContext","createNamedContext$1","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","cache$1","cacheLimit$1","cacheCount$1","matchPath","_options$exact","_options$strict","_options$sensitive","regexp","compilePath$1","_compilePath","Route","context$1","computedMatch","_this$props","createURL","staticHandler","Switch","useHistory","useLocation","useParams","BrowserRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","_onClick","_objectWithoutPropertiesLoose","isModifiedEvent","Link","_ref2","_ref2$component","__RouterContext","forwardRefShim$1","forwardRef$1","ariaCurrent","_ref$ariaCurrent","activeClassName","_ref$activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","die","mockGlobal","getGlobal","getDescriptor","EMPTY_ARRAY","EMPTY_OBJECT","hasProxy","Proxy","plainObjectString","assertProxies","invoked","isStringish","isPlainObject","protoConstructor","isGenerator","addHiddenProp","addHiddenFinalProp","createInstanceofPredicate","theClass","isES6Map","thing","isES6Set","hasGetOwnPropertySymbols","ownKeys","getOwnPropertyDescriptors","storedAnnotationsSymbol","createDecoratorAnnotation","annotation","storeAnnotation","annotationType_","OVERRIDE","isOverride","$mobx","Atom","name_","isPendingUnobservation_","isBeingObserved_","observers_","diffValue_","lastAccessedBy_","lowestObserverState_","IDerivationState_","NOT_TRACKING_","onBOL","onBUOL","onBO","onBUO","reportObserved","reportChanged","startBatch","propagateChanged","globalState","stateVersion","endBatch","isAtom","createAtom","onBecomeObservedHandler","onBecomeUnobservedHandler","arg3","atom","interceptHook","ON_BECOME_OBSERVED","onBecomeUnobserved","comparer","structural","shallow","deepEnhancer","isObservable","observable","isAction","isFlow","flow","autoAction","referenceEnhancer","createActionAnnotation","options_","make_","make_$1","extend_","extend_$1","adm","_this$options_","target_","actionDescriptor","createActionDescriptor","proxyTrap","defineProperty_","safeDescriptors","assertActionDescriptor","_adm$proxy_","_annotation$options_","proxy_","createAction","_annotation$options_$","_annotation$options_2","_annotation$options_$2","_annotation$options_3","_annotation$options_4","_adm$proxy_2","isPlainObject_","createFlowAnnotation","make_$2","extend_$2","flowDescriptor","createFlowDescriptor","_this$options_2","assertFlowDescriptor","isMobXFlow","createComputedAnnotation","make_$3","extend_$3","assertComputedDescriptor","defineComputedProperty_","createObservableAnnotation","make_$4","extend_$4","assertObservableDescriptor","defineObservableProperty_","_this$options_$enhanc","enhancer","AUTO","autoAnnotation","createAutoAnnotation","make_$5","extend_$5","computed","autoBind","observableAnnotation","_this$options_3","deep","_this$options_4","_this$options_5","_this$options_6","defaultCreateObservableOptions","defaultDecorator","asCreateObservableOptions","observableRefAnnotation","observableShallowAnnotation","isObservableObject","isObservableArray","isObservableMap","isObservableSet","observableStructAnnotation","observableDecoratorAnnotation","getEnhancerFromOptions","getEnhancerFromAnnotation","createObservable","observableFactories","ObservableValue","initialValues","useProxies","createLegacyArray","createObservableArray","ObservableMap","ObservableSet","decorators","extendObservable","asObservableObject","_target$$mobx$proxy_","_target$$mobx","objectProxyTraps","asDynamicObservableObject","struct","COMPUTED","computedAnnotation","computedStructAnnotation","ComputedValue","currentActionId","nextActionId","isFunctionNameConfigurable","_getDescriptor$config","_getDescriptor","tmpNameDescriptor","actionName","executeAction","isMobxAction","canRunAsDerivation","runInfo","notifySpy_","startTime_","prevDerivation_","trackingDerivation","runAsAction","prevAllowStateChanges_","allowStateChanges","untrackedStart","allowStateChangesStart","prevAllowStateReads_","allowStateReadsStart","runAsAction_","actionId_","parentActionId_","_startAction","error_","suppressReactionErrors","allowStateChangesEnd","allowStateReadsEnd","untrackedEnd","_endAction","_Symbol$toPrimitive","_Atom","notifySpy","hasUnreportedChange_","interceptors_","changeListeners_","value_","dehancer","dehanceValue","prepareNewValue_","UNCHANGED","setNewValue_","checkIfStateModificationsAreAllowed","hasInterceptors","interceptChange","hasListeners","intercept_","registerInterceptor","observe_","fireImmediately","observableKind","debugObjectName","registerListener","_Symbol$toPrimitive$1","TraceMode","dependenciesState_","observing_","newObserving_","runId_","UP_TO_DATE_","unboundDepsCount_","CaughtException","triggeredBy_","isComputing_","isRunningSetter_","derivation","setter_","isTracing_","scope_","equals_","requiresReaction_","keepAlive_","compareStructural","requiresReaction","keepAlive","onBecomeStale_","POSSIBLY_STALE_","propagateMaybeChanged","inBatch","shouldCompute","prevTrackingContext","trackingContext","trackAndCompute","STALE_","propagateChangeConfirmed","warnAboutUntrackedRead_","computeValue_","isCaughtException","cause","wasSuspended","trackDerivedFunction","disableErrorBoundaries","suspend_","clearObserving","prevValue","autorun","prevU","isComputedValue","prevAllowStateReads","prevUntracked","obs","changeDependenciesStateTo0","runId","prevTracking","prevObserving","observing","lowestNewObservingDerivationState","i0","_dep","removeObserver","_dep2","addObserver","bindDependencies","untracked","allowStateReads","MobXGlobals","mobxGuid","pendingUnobservations","pendingReactions","isRunningReactions","enforceActions","spyListeners","globalReactionErrorHandlers","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","verifyProxies","canMergeGlobalState","isolateCalled","__mobxInstanceCount","__mobxGlobals","queueForUnobservation","runReactions","Reaction","onInvalidate_","errorHandler_","requiresObservable_","isDisposed_","isScheduled_","isTrackPending_","isRunning_","schedule_","isScheduled","runReaction_","reportExceptionInDerivation_","prevReaction","dispose","getDisposer_","trace","enterBreakPoint","getAtom","getAtomFromArgs","BREAK","LOG","MAX_REACTION_ITERATIONS","reactionScheduler","runReactionsHelper","allReactions","iterations","remainingReactions","isReaction","ACTION","AUTOACTION","DEFAULT_ACTION_NAME","actionAnnotation","actionBoundAnnotation","autoActionAnnotation","autoActionBoundAnnotation","createActionFactory","runInAction","reaction","_opts$name","_opts","reactionRunner","requiresObservable","createSchedulerFromOptions","ON_BECOME_UNOBSERVED","hook","listenersKey","hookListeners","NEVER","OBSERVED","configure","isolateGlobalState","baseScheduler","setReactionScheduler","annotations","descriptors","getDependencyTree","nodeToDependencyTree","generatorId","FlowCancellationError","flowAnnotation","flowBoundAnnotation","rejector","gen","pendingPromise","stepId","onFulfilled","onRejected","cancelPromise","_res","yieldedPromise","_isObservable","values_","transaction","getAdm","has_","get_","_getAdm$set_","set_","deleteProperty","_getAdm$delete_","delete_","_getAdm$definePropert","ownKeys_","interceptable","interceptors","listenable","makeObservable","collectStoredAnnotations","keysSymbol","SPLICE","arrayTraps","getArrayLength_","arrayExtensions","setArrayLength_","ObservableArrayAdministration","owned_","legacyMode_","atom_","enhancer_","lastKnownLength_","newV","oldV","dehanceValue_","dehanceValues_","addedCount","removedCount","currentLength","newItems","spliceWithArray_","updateArrayLength_","oldLength","reserveArrayBuffer","deleteCount","lengthDelta","spliceItemsIntoValues_","notifyArraySplice_","_this$values_","oldItems","notifyArrayChildUpdate_","notify","owned","spliceWithArray","_len3","_key3","addArrayExtension","funcName","funcFactory","simpleFunc","dehancedValues","mapLikeFunc","reduceLikeFunc","_this3","isObservableArrayAdministration","ObservableMapMarker","_Symbol$iterator","_Symbol$toStringTag","initialData","data_","hasMap_","keysAtom_","newEntry","hasKey","updateValue_","addValue_","_change","_this3$hasMap_$get","_this4","_this4$hasMap_$get","makeIterable","_keys$next","_keys$next2","_step","_iterator","_createForOfIteratorHelperLoose","_step$value","getPlainObjectKeys","_this5","_step2","_iterator2","_this6","_step3","replacementMap","dataStructure","convertToMap","orderedData","keysReportChangedCalled","_iterator3","_this7","_step4","_iterator4","_step4$value","_value","keyExisted","_value2","iter1","iter2","next1","next2","ObservableSetMarker","_Symbol$iterator$1","_Symbol$toStringTag$1","callbackFn","_change2","nextIndex","observableValues","descriptorCache","REMOVE","ObservableObjectAdministration","defaultAnnotation_","appliedAnnotations_","pendingKeys_","getObservablePropValue_","setObservablePropValue_","assertAnnotable","_this$target_$storedA","outcome","recordAnnotationApplied","deleteOutcome","notifyPropertyAddition_","cachedDescriptor","getCachedObservablePropDescriptor","_this$pendingKeys_","_this$pendingKeys_$ge","_this$pendingKeys_2","_this$pendingKeys_2$g","keys_","_options$name","_options$defaultDecor","getAnnotationFromOptions","isObservableObjectAdministration","_adm$target_$storedAn","ENTRY_0","createArrayEntryDescriptor","OBSERVABLE_ARRAY_BUFFER_SIZE","StubArray","LegacyObservableArray","_StubArray","_assertThisInitialized","createArrayBufferItem","getDebugName","_observable","getAdministration","named","aStack","bStack","unwrap","areArrays","aCtor","bCtor","getSelf","__MOBX_DEVTOOLS_GLOBAL_HOOK__","injectMobx","spy","extras","defaultNoopBatch","printDebugValue","TimerBasedFinalizationRegistry","finalize","sweepTimeout","registrations","registration","registeredAt","scheduleSweep","sweep","observerFinalizationRegistry","FinalizationRegistry","globalIsUsingStaticRendering","isUsingStaticRendering","observerComponentNameFor","baseComponentName","ObjectToBeRetainedByReact","objectToBeRetainedByReactFactory","useObserver","objectRetainedByReact","admRef","mounted","changedBeforeMount","unregister","hasSymbol","ReactForwardRefSymbol","ReactMemoSymbol","observer","baseComponent","useForwardRef","observerComponent","hoistBlackList","observerBatching","symbolId","createdSymbols","newSymbol","createSymbol","shallowEqual","objA","objB","keysA","keysB","setHiddenProp","mobxMixins","mobxPatchedDefinition","wrapper","realMethod","locks","retVal","methods","wrapFunction","patch","mixinMethod","methodMixins","getMixins","oldDefinition","originalMethod","newDefinition","createDefinition","wrappedFunc","mobxAdminProperty","mobxObserverProperty","mobxIsUnmounted","skipRenderKey","isForcingUpdateKey","makeClassComponentObserver","componentClass","getDisplayName","componentWillReact","observerSCU","makeObservableProp","originalRender","_displayName","createReactiveRender","_displayName2","comp","initialName","boundOriginalRender","isRenderingPending","reactiveRender","_reactiveRender$mobxA","hasError","createReaction","_allowStateChanges","valueHolderKey","atomHolderKey","prevReadState","_allowStateReadsStart","_allowStateReadsEnd","isPrototypeOf","observer$1","ThemeContext","useBootstrapPrefix","defaultPrefix","prefixes","_excluded","DEVICE_SIZES","Row","bsPrefix","noGutters","_ref$as","decoratedBsPrefix","sizePrefix","brkPoint","cols","propValue","infix","Col","spans","_propValue$span","funcs","isTrivialHref","SafeAnchor","tabIndex","createChainedFunction","Button","variant","rHyphen","pascalCase","camelize","createWithBsPrefix","_temp","_ref$displayName","BsComponent","_ref2$as","Tag","resolvedPrefix","CardImg","DivStyledAsH5","divWithClassName","DivStyledAsH6","CardBody","CardTitle","CardSubtitle","CardLink","CardText","CardHeader","CardFooter","CardImgOverlay","Card","cardContext","cardHeaderBsPrefix","CardContext","Img","Title","Subtitle","Body","ImgOverlay","enumerableOnly","sym","StyleSheet","_insertTag","insertionPoint","prepend","isSpeedy","speedy","ctr","rule","createStyleElement","styleSheets","ownerNode","sheetForTag","insertRule","flush","replacement","indexof","charat","strlen","sizeof","character","caret","alloc","dealloc","delimit","escaping","commenter","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","KEYFRAMES","rulesets","pseudo","declarations","atrule","previous","variable","scanning","ampersand","reference","declaration","ruleset","identifierWithPointTracking","getRules","toRules","fixedElements","compat","isImplicitRule","parentRules","removeLabel","defaultStylisPlugins","combine","ssrStyles","stylisPlugins","_insert","inserted","nodesToHydrate","currentSheet","finalizingPlugins","serializer","collection","middleware","shouldCache","stylis","registered","registerStyles","isStringTag","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","unitless","handleInterpolation","mergedProps","__emotion_styles","anim","createStringFromObject","previousCursor","labelPattern","serializeStyles","stringMode","identifierName","hashString","useInsertionEffect","useInsertionEffectAlwaysWithSyncFallback","EmotionCacheContext","createCache","withEmotionCache","typePropName","Insertion","insertStyles","Emotion","cssProp","WrappedComponent","registeredStyles","rawClassName","getRegisteredStyles","newProps","argsLength","createElementArgArray","createEmotionProps","_arrayWithHoles","_nonIterableRest","sourceSymbolKeys","asyncGeneratorStep","_next","_throw","_iterableToArray","_objectSpread","userAgentData","brands","brand","ShadowRoot","_o","contextElement","visualViewport","frameElement","paddingTop","assignedSlot","insertable","_o4","_o4$ancestorScroll","ancestorScroll","_o4$ancestorResize","ancestorResize","_o4$elementResize","elementResize","_o4$animationFrame","animationFrame","_toConsumableArray","ResizeObserver","observe","disconnect","_isNativeReflectConstruct","sham","_possibleConstructorReturn","Derived","hasNativeReflectConstruct","Super","NewTarget","safeIsNaN","areInputsEqual","newInputs","lastInputs","resultFn","newArgs","lastThis","lastArgs","lastResult","StateManagedSelect","baseSelectProps","_ref$defaultInputValu","defaultInputValue","_ref$defaultMenuIsOpe","defaultMenuIsOpen","_ref$defaultValue","propsInputValue","inputValue","propsMenuIsOpen","menuIsOpen","propsOnChange","propsOnInputChange","onInputChange","propsOnMenuClose","onMenuClose","propsOnMenuOpen","onMenuOpen","propsValue","restSelectProps","_objectWithoutProperties","_useState2","stateInputValue","setStateInputValue","_useState4","stateMenuIsOpen","setStateMenuIsOpen","_useState6","stateValue","setStateValue","actionMeta","useStateManager","Select","Spinner","bsSpinnerPrefix","Feedback","_ref$type","_ref$tooltip","controlId","FormCheckInput","bsCustomPrefix","_ref$isValid","_ref$isInvalid","isInvalid","isStatic","_useContext","FormContext","FormCheckLabel","htmlFor","FormCheck","_ref$inline","inline","_ref$disabled","_ref$feedbackTooltip","feedbackTooltip","feedback","_ref$title","propCustom","innerFormContext","hasLabel","Label","FormFileInput","FormFileLabel","FormFile","dataBrowse","_ref$inputAs","inputAs","FormControl","_classes","htmlSize","plaintext","readOnly","_classes2","_classes3","_classes4","_classes5","FormGroup","FormLabel","srOnly","columnClass","FormText","FormRow","FormImpl","validated","Group","Check","File","defaultKey","_toPropertyKey","_toPrimitive","useUncontrolledProp","wasPropRef","_useState","isProp","wasProp","useUncontrolled","fieldName","_extends2","Utils","_useUncontrolledProp","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","__suppressDeprecationWarning","qsa","useForceUpdate","_useReducer","toFnRef","refA","refB","mergeRefs","NavContext","makeEventKey","eventKey","AbstractNav","getControlledId","getControllerId","onSelect","activeKey","needsRefocusRef","parentOnSelect","SelectableContext","tabContext","TabContext","listNode","getNextActiveChild","currentListNode","activeChild","handleSelect","mergedRef","useMergedRefs","nextActiveChild","dataset","rbEventKey","NavItem","useEventCallback","useCommittedRef","AbstractNavItem","navKey","navContext","contextControllerId","contextControlledId","handleOnclick","NavLink","Nav","uncontrolledProps","_classNames","navbarBsPrefix","_useUncontrolled","_useUncontrolled$as","initialBsPrefix","navbar","navbarScroll","isNavbar","navbarContext","NavbarContext","Item","generateCustomChildId","generateChildId","mountOnEnter","unmountOnExit","TabContent","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","initialStatus","appear","isMounting","enter","appearStatus","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","nodeRef","ReactDOM","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","onExited","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","_ref3","maybeNextCallback","childProps","TransitionGroupContext","psuedoElement","ownerWindow","rUpper","msPattern","hyphenateStyleName","hyphenate","supportedTransforms","isTransform","removeProperty","optionsSupported","onceSupported","wrappedHandler","__once","onceHandler","emulateTransitionEnd","called","triggerEvent","transitionEnd","parseDuration","removeEmulate","transitionEndListener","triggerBrowserReflow","_fadeStyles","fadeStyles","Fade","handleEnter","innerProps","_excluded2","TabPane","_useTabContext","shouldTransition","useTabContext","_useTabContext$as","getDefaultActiveKey","defaultActiveKey","renderTab","_child$props","tabClassName","Tabs","_useUncontrolled$acti","controlledProps","TabContainer","Tab","Container","Content","InputGroupAppend","InputGroupPrepend","InputGroupText","InputGroup","hasValidation","Radio","Checkbox","Append","Prepend","Table","striped","bordered","borderless","table","responsiveClass","ButtonGroup","baseClass","useMounted","useWillUnmount","onUnmount","valueRef","useUpdatedRef","MAX_DELAY_MS","setChainedTimeout","handleRef","timeoutAtMs","delayMs","useTimeout","safeFindDOMNode","componentOrElement","useCallbackRef","auto","basePlacements","clippingParents","popper","variationPlacements","modifierPhases","getBasePlacement","getWindow","isHTMLElement","isShadowRoot","getUAString","uaData","isLayoutViewport","includeScale","isFixedStrategy","clientRect","addVisualOffsets","getLayoutRect","rootNode","getRootNode","isSameNode","getNodeName","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","offsetParent","getOffsetParent","contain","willChange","getContainingBlock","getMainAxisFromPlacement","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","_state$modifiersData$","arrowElement","elements","arrow","popperOffsets","modifiersData","basePlacement","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","axisProp","effect","_options$element","requires","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","roundOffsetsByDPR","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","strategy","_options$scroll","_options$resize","scrollParents","scrollParent","getOppositePlacement","getOppositeVariationPlacement","getWindowScroll","getWindowScrollBarX","isScrollParent","_getComputedStyle","getScrollParent","listScrollParents","_element$ownerDocumen","isBody","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","_loop","fittingPlacement","getSideOffsets","preventedOffsets","isAnySideFullyClipped","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","getNodeScroll","modifiers","depModifier","debounce","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","orderedModifiers","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","orderModifiers","mergeByName","_ref3$options","cleanupFn","noopFn","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","createPopper","computeStyles","eventListeners","initialPopperStyles","disabledApplyStylesModifier","ariaDescribedByModifier","_popper$getAttribute","_state$elements2","EMPTY_MODIFIERS","referenceElement","popperElement","_ref3$enabled","_ref3$placement","_ref3$strategy","_ref3$modifiers","popperInstanceRef","_popperInstanceRef$cu","_popperInstanceRef$cu2","_useSafeState","useSafeState","popperState","updateModifier","getRefTarget","onRootClose","_ref$clickTrigger","clickTrigger","preventMouseRootCloseRef","onClose","handleMouseCapture","_e$composedPath$","isLeftClickEvent","composedPath","handleMouse","handleKeyUp","currentEvent","removeMouseCaptureListener","removeMouseListener","removeKeyupListener","mobileSafariHackListeners","resolveContainerRef","useWaitForDOMRef","onResolved","resolvedRef","setRef","earlyRef","nextRef","toModifierArray","mergeOptionsWithPopperConfig","_modifiers$preventOve","_modifiers$preventOve2","_modifiers$offset","_modifiers$arrow","enableEvents","containerPadding","_ref$popperConfig","popperConfig","toModifierMap","Overlay","outerRef","_props$containerPaddi","_props$popperConfig","_useCallbackRef","rootElement","attachRef","_useCallbackRef2","attachArrowRef","setExited","_usePopper","usePopper","mountOverlay","useRootClose","onHide","rootClose","rootCloseDisabled","rootCloseEvent","arrowProps","_PropTypes$func","usePopperMarginModifiers","overlayRef","margins","arrowMargins","popoverClass","dropdownMenuClass","overlay","_margins$current","_arrowMargins$current","popoverArrowMargins","_getMargins","outerProps","popperRef","_usePopperMarginModif","marginModifiers","actualTransition","BaseOverlay","overlayProps","aRef","__wrapped","wrapRefs","outOfBoundaries","RefHolder","handleMouseOverOut","relatedNative","related","OverlayTrigger","propsShow","_ref$defaultShow","defaultShow","onToggle","propsDelay","_ref$flip","triggerNodeRef","hoverStateRef","setShow","normalizeDelay","onFocus","onBlur","getTarget","handleShow","handleHide","handleFocus","handleBlur","handleMouseOver","handleMouseOut","_len4","_key4","triggers","triggerProps","PopoverTitle","PopoverContent","Popover","primaryPlacement","scrollbarSize","recalc","scrollDiv","usePrevious","replaceClassName","origClass","classToRemove","isWindow","DOCUMENT_NODE","isOverflowing","innerWidth","bodyIsOverflowing","BLACKLIST","siblings","exclude","isHidable","ariaHidden","ModalManager","_ref$hideSiblingNodes","hideSiblingNodes","_ref$handleContainerO","handleContainerOverflow","modals","containers","getScrollbarSize","isContainerOverflowing","modal","containerIndexFromModal","overflowing","findIndexOf","setContainerStyle","containerState","removeContainerStyle","modalIdx","containerIdx","dialog","backdrop","hideSiblings","showSiblings","_data$modals","isTopModal","useModalManager","modalManager","setDialogRef","setBackdropRef","Modal","_ref$show","_ref$role","_ref$backdrop","_ref$keyboard","onBackdropClick","onEscapeKeyDown","backdropTransition","_ref$autoFocus","_ref$enforceFocus","enforceFocus","_ref$restoreFocus","restoreFocus","restoreFocusOptions","renderDialog","_ref$renderBackdrop","renderBackdrop","providedManager","containerRef","containerClassName","onShow","_ref$onHide","prevShow","lastFocusRef","removeKeydownListenerRef","handleDocumentKeyDown","removeFocusListenerRef","handleEnforceFocus","currentActiveElement","_lastFocusRef$current","handleBackdropClick","dialogProps","backdropElement","BackdropTransition","preventScroll","Selector","BootstrapModalManager","_ModalManager","adjustAndStore","adjust","_css","restore","_css2","ModalDialog","contentClassName","centered","scrollable","dialogClass","CloseButton","ModalHeader","closeLabel","ModalContext","dialogAs","DialogTransition","dialogClassName","Dialog","ariaLabelledby","ariaDescribedby","ariaLabel","backdropClassName","propsManager","modalStyle","animateStaticModal","setAnimateStaticModal","waitingForMouseUpRef","ignoreBackdropClickRef","removeStaticModalAnimationRef","setModalRef","_modal","modalContext","getModalManager","updateDialogStyle","containerIsOverflowing","modalIsOverflowing","handleWindowResize","handleDialogMouseDown","handleMouseUp","handleStaticModalAnimation","handleStaticBackdropClick","backdropProps","baseModalStyle","BaseModal","isAppearing","ModalBody","ModalTitle","ModalFooter","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","objectCtorString","getPrototype","assignValue","copyObject","nativeKeysIn","isProto","baseKeysIn","keysIn","allocUnsafe","isDeep","getSymbolsIn","dataView","cloneArrayBuffer","reFlags","typedArray","cloneDataView","cloneTypedArray","cloneRegExp","cloneSymbol","objectCreate","baseCreate","nodeIsMap","baseIsMap","nodeIsSet","baseIsSet","funcTag","cloneableTags","baseClone","isFull","initCloneArray","copyArray","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","baseAssignIn","copySymbols","baseAssign","initCloneByTag","isSet","subValue","isMap","getAllKeysIn","arrayEach","CLONE_DEEP_FLAG","isEmptyArray","isInteger","isEmptyChildren","isPromise","getIn","toPath","setIn","resVal","currentPath","currentObj","nextPath","setNestedObjectValues","_Object$keys","FormikContext","FormikProvider","useFormikContext","formik","formikReducer","isSubmitting","isValidating","submitCount","emptyErrors","emptyTouched","useFormik","validateOnChange","_ref$validateOnChange","validateOnBlur","_ref$validateOnBlur","validateOnMount","_ref$validateOnMount","isInitialValid","enableReinitialize","_ref$enableReinitiali","onSubmit","initialErrors","initialTouched","fieldRegistry","_React$useReducer","runValidateHandler","maybePromisedErrors","actualException","runValidationSchema","validationSchema","schema","validateAt","sync","validateData","prepareDataForValidation","abortEarly","validateYupSchema","yupError","_isArray","yupToFormErrors","runSingleFieldLevelValidation","runFieldLevelValidations","fieldKeysWithValidation","fieldValidations","fieldErrorsList","runAllValidations","fieldErrors","schemaErrors","validateErrors","validateFormWithHighPriority","combinedErrors","resetForm","dispatchFn","onReset","maybePromisedOnReset","imperativeMethods","validateField","maybePromise","registerField","unregisterField","setTouched","shouldValidate","setErrors","setValues","resolvedValues","setFieldError","setFieldValue","executeChange","eventOrTextValue","maybePath","outerHTML","valueProp","currentArrayOfValues","isValueInArray","getValueForCheckbox","getSelectedValues","handleChange","eventOrPath","setFieldTouched","executeBlur","_e$target","eventOrString","setFormikState","stateOrCb","setStatus","setSubmitting","submitForm","isInstanceOfError","promiseOrUndefined","executeSubmit","_errors","handleSubmit","reason","validateForm","handleReset","getFieldMeta","initialError","getFieldHelpers","setError","getFieldProps","nameOrOptions","isAnObject","valueState","Formik","formikbag","shouldClone","useIsomorphicLayoutEffect","Form","_action","_useFormikContext","arrayLike","copyArrayLike","maxIndex","FieldArrayInner","updateArrayField","alterTouched","alterErrors","updateErrors","updateTouched","fieldError","fieldTouched","cloneDeep","handlePush","indexA","indexB","handleSwap","handleMove","handleInsert","handleReplace","handleUnshift","handleRemove","arrayHelpers","_this$props2","faAngleDoubleLeft","faAngleDoubleRight","faAngleLeft","faAngleRight","faCheck","faEdit","faExternalLinkAlt","faEye","faInfoCircle","faPlus","faSort","faSortDown","faSortUp","faTimes","faTrash","_iterableToArrayLimit","_WINDOW","_DOCUMENT","_PERFORMANCE","measure","MutationObserver","_ref$userAgent","WINDOW","DOCUMENT","PERFORMANCE","IS_DOM","NAMESPACE_IDENTIFIER","DEFAULT_FAMILY_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","oneToTen","oneToTwenty","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","initial","FontAwesomeConfig","coerce","getAttrConfig","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","shims","functions","doScroll","asyncTimer","PENDING","SETTLED","FULFILLED","REJECTED","NOOP","asyncSetTimer","setImmediate","asyncQueue","asyncFlush","asyncCall","invokeCallback","subscriber","settled","handleThenable","fulfill","publishFulfillment","publishRejection","publish","_then","_handled","notifyRejectionHandled","rejectPromise","invokeResolver","onFulfillment","onRejection","fulfilled","rejected","race","meaninglessTransform","flipX","flipY","insertCss","headChildren","beforeChild","idPool","nextUniqueId","htmlEscape","joinStyles","transformIsMeaningful","transformForSvg","innerTranslate","innerScale","innerRotate","ALL_SPACE","fillBlack","abstract","makeInlineSvgAbstract","_params$icons","maskId","titleId","_params$watchable","watchable","isUploadedIcon","widthClass","attrClass","uploadedIconWidthStyle","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","trans","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","makeIconMasking","styleString","makeIconStandard","asSymbol","asIcon","noop$1","subject","thisContext","bindInternal4","defineIcons","_params$skipHooks","skipHooks","addPack","reducer","ligature","hasRegular","oldName","iconFromMapping","mapping","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","joinAttributes","parseTransformString","transformString","MissingIcon","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","RING","OPACITY_ANIMATE","asFoundIcon","vectorData","class","baseStyles","dfp","drc","fp","dPatt","customPropPatt","rPatt","Library","additions","_pullDefinitions","_normalized$key","ensureCss","_cssInserted","apiObject","abstractCreator","findIconDefinition","iconLookup","_iconLookup$prefix","library","maybeIconDefinition","iconDefinition","resolveIcons","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","_objectSpread2","_arrayLikeToArray","_arrayWithoutHoles","_unsupportedIterableToArray","_nonIterableSpread","_excluded$1","PRODUCTION","normalizeIconArgs","objectWithKey","FontAwesomeIcon","iconArgs","maskArgs","beat","beatFade","bounce","shake","flash","spinPulse","spinReverse","pulse","inverse","listItem","pull","swapOpacity","renderedIcon","_console","extraProps","convertCurry","pair","styleToObject","_extraProps$style","existingStyle","MountedMapsContext","transformToViewState","applyViewStateToTransform","viewState","allowArrayLike","normalCompletion","didErr","_e2","refProps","normalizeStyle","toJS","_createForOfIteratorHelper","layerRef","normalizedLayer","aKeys","bKeys","_aKeys","mouseenter","mouseleave","cameraEvents","movestart","moveend","dragstart","dragend","zoomstart","rotatestart","rotateend","pitchstart","pitchend","otherEvents","boxzoomstart","boxzoomend","boxzoomcancel","idle","styledata","sourcedata","settingNames","handlerNames","Mapbox","MapClass","_internalUpdate","_inRender","_hoveredFeatures","_deferredEvents","_onEvent","_onPointerEvent","_updateHover","interactiveLayerIds","_queryRenderedFeatures","_onCameraEvent","_MapClass","_initialize","_renderTransform","oldProps","settingsChanged","_updateSettings","_createShadowTransform","sizeChanged","_updateSize","viewStateChanged","_updateViewState","_updateStyleComponents","_updateHandlers","mapOptions","initialViewState","mapboxAccessToken","getAccessTokenFromEnv","mapStyle","renderMap","runRenderTaskQueue","_onBeforeRepaint","_onAfterRepaint","savedMaps","renderTransform","newTransform","cloneTransform","triggerEvents","deferredEvents","currProps","_settingNames","styleDiffing","_i2","_handlerNames","_this$props$interacti","onMouseEnter","onMouseLeave","wasHovering","isHovering","baseFire","oldContainer","setProps","MapboxAccessToken","_b","skipMethods","mapInstance","mapLib","getMap","getMethodNames","globalSettings","MapContext","RTLTextPlugin","mountedMapsContext","setMapInstance","contextValue","setGlobals","reuseMaps","reuse","onMapMount","onMapUnmount","unitlessNumber","applyReactStyle","thisRef","hasChildren","evt","onDragStart","onDragEnd","arePointsEqual","getClassList","pp","onOpen","prevClassList","nextClassList","onCreate","ctrl","useControl","containerId","setupUI","onGeolocate","onOutOfMaxBounds","onTrackUserLocationStart","onTrackUserLocationEnd","assert","sourceCounter","propsRef","setStyleLoaded","allLayers","changedKey","changedKeyCount","layerCounter","_props$layout","_props$paint","prevLayout","prevPaint","updateLayer","createLayer","coordEach","excludeWrapCoord","stopG","geometryMaybeCollection","isGeometryCollection","wrapShrink","coordIndex","isFeatureCollection","geomIndex","multiFeatureIndex","geometryIndex","geomType","PropertiesStore","userStore","requestWith","requestAppend","loadedPermissions","selectedPropertyId","loadProperties","loadPropertyPermissions","addProperty","updateProperty","selectProperty","clearSelectedProperty","setRequestWith","setRequestAppend","selectedProperty","clearStore","selectedDatabase","bearerToken","withPermissions","currentUserId","user","Accept","Authorization","SeasonalDatabase","selectedPropertyIdentifier","toast","propertyId","propertyIndex","user_properties","user_permissions","newProperties","setSelectedProperty","CustomControl","GlobalPropertiesSelect","refreshBearerToken","propertiesStore","useRpin","deleted_at","controlTitle","option","filterOption","inputValueLowerCase","menu","GlobalPropertiesSelect$1","LoadingOverlay","justifyContent","alignItems","hideOpacity","PropertyForm","placeholder","region","regions","region_id","add_key_contact","add_key_contact_tab","users","new_property_key_contact","phone_number","property_key_contact","propertyKeyContacts","propertyKeyContact","add_staff","PropertyFormValidater","addNewPropertyKeyContactError","user_type","AddProperty","_props$newProperty","_props$newProperty$da","_props$newProperty2","_props$newProperty2$d","newPropertyIdentifier","newProperty","newPropertyName","boundry","hectares","postValues","property_key_contact_id","user_id","service","varient","AddProperty$1","GlobalFilter","_onChange","TablePagination","PropertiesTable","showDeletedProperties","setShowDeletedProperties","filterable","_row$original$propert","_row$original$propert2","_row$original$propert3","_row$original$propert4","linkTo","sortable","tableInstance","changeSelectedProperty","_useTable","_useTable$state","setCurrentPage","PropertiesTable$1","useFirstRender","useMapState","initialBoundsSet","setInitialBoundsSet","viewportState","mapRef","mapRefWrapper","monoStyle","satelliteStyle","PreviewButton","setMapStyle","PropertyMap$1","_useMapState","_useMapState$","setViewport","onViewportChange","Layer","DrawControl","MapboxDraw","onDelete","initialBoundry","PropertyMapEditable$1","formValues","onEditorUpdate","PropertyGroups","propertyGroups","propertyGroup","PropertyGroupUsers$1","propertyGroupsUsers","propertyGroupsUser","foundUser","AddAllStaffModal","handleAddAllStaffConfirmation","showAddAllStaffModal","setShowAddAllStaffModal","setLoading","_catch","recover","_finallyRethrows","finalizer","DeletePropertyUserModal","userProperty","confirmationHandler","showDeletePropertyUserModell","setShowDeletePropertyUserModel","userPropertyUserId","currentLoading","_temp2","PropertyPermissions","propertyUserProperties","handleDeleteUserPropertyConfirmation","userPropertyId","userPropertyDeleteRes","newUserProperties","propertyRoles","propertyRole","hasPropertyRole","property_roles","userPropertyRole","property_id","Property","restoring","setRestoring","editing","setEditing","_usePropertyGroupProp","setPropertyGroups","usePropertyGroupProperty","flatMap","canWrite","canDelete","canWritePermissions","propertyPermission","_values$boundry","_values$boundry2","_values$boundry3","_values$boundry3$feat","Property$1","loadingUsers","setLoadingUsers","_useState3","setUsers","loadingRegions","setLoadingRegions","_useState5","setRegions","loadingPropertyKeyContacts","setLoadingPropertyKeyContacts","_useState7","setPropertyKeyContacts","_useState8","loadingPropertyRoles","setLoadingPropertyRoles","_useState9","setPropertyRoles","addPropertyButtonRef","_useState10","identifer","redirect","_useState11","showAddPropertyModal","setShowAddPropertyModal","authService","updatePropertyKeyContact","newPropertyKeyContacts","Properties$1","UserProperties","loadingProperties","setLoadingProperties","setProperties","UserPropertyGroup","_wasThrown","fetchPropertyGroups","PropertyGroupForm","customOptions","addAllStaff","PropertyGroupFormValidator","Details","editingDetails","setEditingDetails","customFormOptions","can_edit","group_type","UserPropertyGroupForm","Permissions","loadingPermissions","setLoadingPermissions","showAddUserModal","setShowAddUserModal","selectedUserPropertyGroup","setSelectedUserPropertyGroup","findUser","userType","userPropertyGroup","property_role","newPropertyGroup","alert","removeUserPropertyGroup","property_group_id","userPropertyGroups","_newPropertyGroup$use","addUserPropertyGroups","property_role_id","updateUserPropertyGroup","addUserPropertyGroup","PropertySelect","adminProperties","loadingAdminProperties","adminProperty","closeMenuOnSelect","isMulti","Properties$2","setLoadingAdminProperties","setAdminProperties","propertyGroupProperties","selectAdminProperties","PropertyGroup","loadingPropertyGroup","setLoadingPropertyGroup","PropertyGroupsTable","changeSelectedPropertyGroup","deletePropertyGroup","showDeletedPropertyGroups","setShowDeletedPropertyGroups","PropertyGroups$1","loadingPropertyGroups","setLoadingPropertyGroups","showAddPropertyGroupModal","setShowAddPropertyGroupModal","updatePropertyGroup","newPropertyGroups","selectedPropertyGroup","selectedPropertyGroupId","addPropertyGroup","propertyGroupId","PropertyKeyContact","phoneNumberValid","PropertyKeyContacts","selectedPropertyKeyContact","selectedPropertyKeyContactId","changeSelectedPropertyKeyContact","converter","defaultAttributes","stringifiedAttributes","cookie","write","cookies","jar","withAttributes","withConverter","_e$appendPosition","appendPosition","_e$collapse","collapse","_e$collapseDuration","collapseDuration","preventExitTransition","isIn","_t$classList2","_t$classList","toastId","emitQueue","cancelEmit","_arguments","spinner","_i4","_i6","removalDistance","canCloseOnClick","canDrag","boundingRect","didMove","autoClose","pauseOnHover","closeToast","draggableDirection","draggablePercent","_u$boundingRect","pauseOnFocusLoss","hasFocus","playToast","pauseToast","isRunning","toastRef","eventHandlers","_e$ariaLabel","fillRule","_e$type","controlledProgress","animationDuration","animationPlayState","defaultClassName","hideProgressBar","bodyClassName","bodyStyle","progressClassName","progressStyle","updateId","deleteToast","iconOut","_C","toastKey","displayedToast","isToastActive","getToast","_C$queue$shift","toastContent","toastProps","staleId","enableMultiContainer","toastStyle","fromEntries","toastClassName","getToastToRender","newestOnTop","dismiss","dark","clearWaitingQueue","POSITION","TOP_LEFT","TOP_RIGHT","TOP_CENTER","BOTTOM_LEFT","BOTTOM_RIGHT","BOTTOM_CENTER","TYPE","INFO","SUCCESS","WARNING","ERROR","DEFAULT","successToast","warningToast","errorToast","ToastContainer","_jsx","Toastify","Slide","BlockScanningStore","propertyBlocks","propertyReports","userBlocks","userReports","makeAutoObservable","_fetchUserBlocks","_asyncToGenerator","_callee","responseData","_x2","_fetchUserReports","_callee2","season","_context2","_x3","_x4","UserStore","accessArray","selectedDatabaseLabel","refreshToken","blockScanningStore","setSelectedDatabase","login","logout","updateUser","loggedIn","isAdmin","refreshCallback","currentSeasonIsSelected","selectedDatabaseStartYear","selectedDatabaseStopYear","cookieRefreshToken","Cookies","cookieRemember","databases","selectedSeason","remember","jwtPayload","jwt_decode","access","initialiseSeason","refresh_token","jwt_token","newUser","tempAwsCredentials","storesContext","_userStore$selectedDa","showConfirm","DivStyledAsH4","AlertHeading","AlertLink","Alert","dismissible","handleClose","Heading","faRightFromBracket","faSignOutAlt","faPenToSquare","faAnglesRight","faCircleCheck","faCheckCircle","faArrowUpRightFromSquare","faArrowRight","faRectangleList","faListAlt","faGear","faCog","faDownload","faHouse","faHome","faFile","faXmark","faAnglesLeft","faCircleXmark","faTimesCircle","validateEmailAddress","emailAddress","UserDetailsFormValidator","canEditEmail","_jsxs","send_reports","finally","UserDetailsForm","PageTitle","UserDetails","GlobalSeasonSelect","setMessage","xl","newpassword","newpassword_confirmation","noValidate","onSubmitSuccess","fProps","_props$user","setOpen","ChangeUserPasswordForm","_Fragment","loadingDetails","setLoadingDetails","CardDeck","ChangeUserPassword","last_login","login_count","roles","roleId","role_id","UserPropertyGroups","showDeletedUsers","setShowDeletedUsers","deleteUser","changeSelectedUser","GlobalTableFilter","loadingRoles","setLoadingRoles","setRoles","_useState12","_useState14","newUsers","newId","selectedUser","User","authApiUrl","UsersTable","appleIphone","appleIpod","appleTablet","appleUniversal","androidPhone","androidTablet","amazonPhone","amazonTablet","windowsPhone","windowsTablet","otherBlackBerry","otherBlackBerry10","otherOpera","otherChrome","otherFirefox","isAppleTabletOnIos13","maxTouchPoints","MSStream","isMobile","createMatch","apple","phone","ipod","universal","device","amazon","windows","blackberry10","useGreenAtlasUrls","loadingGaUrls","setLoadingGaUrls","gaUrls","setGaUrls","fetchGreenAtlasUrls","GreenAtlasUrlButtons","selectedBlock","_bbox2","newMinLng","newMinLat","newMaxLng","newMaxLat","nextViewport","hoveredFeature","hasUrls","xs","sm","scanTypes","reportTypes","pdfTypes","reports","downloading","setDownloading","downloadReport","propertyIdentifier","report","seasonalDatabase","blockCode","scanType","stage","reportType","pdfType","useDownloadScanningReport","blocks","reportsState","reportTypeReports","selectedBlockReports","seasonStart","setReports","loadingReports","setLoadingReports","fetchReports","sortedReports","Objects","_scanType$label","_stage$label","_reportType$label","_pdfType$label","selectedBlockHistoricReports","partBlocks","isPartBlock","unmatchedReports","isBlock","isSelectedBlockReport","sbr","sbrBlockCode","ReportTable","defaultReportTypeOption","extendedStages","_propertiesStore$sele","setReportType","setBlocks","URLSearchParams","setSelectedBlock","loadingClusters","setLoadingClusters","_useGreenAtlasUrls","blockParam","blocksPartBlocksNames","_blockFeature$propert","primaryBlockid","primary_block_id","blockFeature","primary_ga_block","geojson_feature","ga_blocks","partBlock","_partBlockFeature$pro","partBlockId","partBlockFeature","details","sortedObject","blockNames","handleSetSelectedBlock","searchParams","handleRemoveSelectedBlock","fetchBlockClusters","seasonStop","reportTypeOption","blockName","blockFeatures","_feature$properties$d","block_name","has_reports","GAPageTitle","ReportTypeSelect","BlocksMap","_feature$properties","ReportTables","files","isProcessing","handleFileRemove","formatBytes","file","PolygonMap","unmatchedPolygons","_metadataA$details","_metadataB$details","metadataA","identifierA","client","metadataB","identifierB","propertiesToAdd","_prevMetadata$details","_currMetadata$details","prevMetadata","currMetadata","_metadata$details","_metadata$details2","orchard","polygonGeojson","ViewPolygonModal","getStatusText","pollStatus","transactionId","startPolling","_callee3","newStatus","errorCount","_context3","_newStatus","resetStatus","receiver","HttpAuthLocation","HttpApiKeyAuthLocation","EndpointURLScheme","AlgorithmId","FieldPosition","IniSectionType","RequestHandlerProtocol","SMITHY_CONTEXT_KEY","HttpRequest","cloned","carry","paramName","req","HttpResponse","statusCode","resp","addExpectContinueMiddlewareOptions","getAddExpectContinuePlugin","applyToStack","clientStack","_options$requestHandl","_options$requestHandl2","runtime","requestHandler","Expect","addExpectContinueMiddleware","hostHeaderMiddlewareOptions","getHostHeaderPlugin","_ref2$handlerProtocol","handlerProtocol","hostHeaderMiddleware","loggerMiddlewareOptions","getLoggerPlugin","_logger$info","clientName","commandName","logger","_context$dynamoDbDocu","dynamoDbDocumentClientOptions","overrideInputFilterSensitiveLog","overrideOutputFilterSensitiveLog","inputFilterSensitiveLog","outputFilterSensitiveLog","_response$output","$metadata","outputWithoutMetadata","_logger$error","_clientName","_commandName","_logger","_context$dynamoDbDocu2","_overrideInputFilterSensitiveLog","_inputFilterSensitiveLog","TRACE_ID_HEADER_NAME","addRecursionDetectionMiddlewareOptions","getRecursionDetectionPlugin","traceId","nonEmptyString","recursionDetectionMiddleware","NoOpLogger","getAllAliases","_aliases","getMiddlewareNameWithAliases","constructStack","absoluteEntries","relativeEntries","identifyOnResolve","entriesNameSet","cloneTo","toStack","_toStack$identifyOnRe","addRelativeTo","expandRelativeMiddlewareList","expandedMiddlewareList","getMiddlewareList","normalizedAbsoluteEntries","normalizedRelativeEntries","normalizedEntriesNameMap","normalizedEntry","_step5","_iterator5","toMiddleware","relation","mainChain","stepWeights","priorityWeights","wholeList","_step6","_iterator6","toOverrideIndex","_entry$aliases","toOverride","_step7","_iterator7","_step8","_iterator8","_loop2","_entry$aliases2","_step9","_iterator9","use","toRemove","isRemoved","filterCb","removeByName","removeByReference","removeByTag","_step10","_iterator10","_from$identifyOnResol","_from$identifyOnResol2","identify","mw","_mw$step","_step11","_iterator11","initialize","finalizeRequest","Client","middlewareStack","optionsOrCb","resolveMiddleware","Parent","Class","_wrapNativeSuper","Wrapper","alphabetByEncoding","alphabetByValue","bitsPerLetter","bitsPerByte","maxLetterValue","fromBase64","totalByteLength","bitLength","setUint8","fromUtf8","TextEncoder","toBase64","isUint8Array","bitClusterCount","toUtf8","transformFromString","Uint8ArrayBlobAdapter","mutate","_Uint8Array","_inherits","_createSuper","transformToString","getAwsChunkedEncodingStream","readableStream","base64Encoder","bodyLengthChecker","checksumAlgorithmFn","checksumLocationName","streamHasher","checksumRequired","digest","reader","getReader","_yield$reader$read","checksum","enqueue","escapeUri","hexEncode","buildQueryString","iLen","qsEntry","requestTimeout","timeoutInMs","timeoutError","keepAliveSupport","FetchHttpHandler","configProvider","_handle","abortSignal","requestTimeoutInMs","abortError","queryString","auth","_request$username","_request$password","requestOptions","removeSignalEventListener","fetchRequest","raceOfPromises","_args","duplex","keepalive","fetchHeaders","transformedHeaders","onAbort","onabort","_this$config","instanceOrOptions","streamCollector","stream","_collectBlob","collectBlob","_collectStream","collectStream","base64","readToBase64","chunks","collected","_chunks","chunk","_reader$result","commaIndex","dataOffset","SHORT_TO_HEX","HEX_TO_SHORT","encodedByte","fromHex","encoded","toHex","ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED","sdkStreamMixin","isBlobInstance","isReadableStreamInstance","_stream$__proto__","_stream$__proto__$con","transformToByteArray","_transformToString","transformToWebStream","blobToWebStream","collectBody","streamBody","fromContext","Command","middlewareFn","smithyContext","additionalContext","CommandCtor","handlerExecutionContext","ClassBuilder","_ep","_middlewareFn","_additionalContext","_smithyContext","_outputFilterSensitiveLog","_serializer","_deserializer","endpointParameterInstructions","middlewareSupplier","inputFilter","outputFilter","deserializer","CommandRef","closure","_Command","resolveMiddlewareWithContext","SENSITIVE_STRING","parseBoolean","expectNumber","stackTraceWarning","MAX_FLOAT","expectFloat32","expectLong","expectShort","expectSizedInt","expectByte","castInt","expectNonNull","expectObject","receivedType","expectString","NUMBER_REGEX","parseNumber","DAYS","MONTHS","dateToUtcString","dayOfWeek","dayOfMonthInt","hoursInt","getUTCHours","minutesInt","secondsInt","getUTCSeconds","dayOfMonthString","hoursString","minutesString","secondsString","RFC3339_WITH_OFFSET","parseRfc3339DateTimeWithOffset","_match2","fractionalMilliseconds","offsetStr","strictParseShort","stripLeadingZeroes","parseDateValue","buildDate","parseOffsetToMilliseconds","adjustedMonth","validateDayOfMonth","parseMilliseconds","DAYS_IN_MONTH","maxDays","dateVal","strictParseByte","strictParseFloat32","ServiceException","_Error","$fault","decorateServiceException","Message","deserializeMetadata","_output$headers$xAmz","httpStatusCode","requestId","extendedRequestId","cfId","loadConfigsForDefaultMode","retryMode","connectionTimeout","getDefaultExtensionConfiguration","runtimeConfig","checksumAlgorithms","algorithmId","checksumConstructor","_checksumAlgorithms","addChecksumAlgorithm","algo","getChecksumConfiguration","_retryStrategy","retryStrategy","setRetryStrategy","getRetryConfiguration","getValueFromTextNode","StringWrapper","arg0","instructions","mapWithFilter","applyInstruction","_instructions","targetKey","_instructions$targetK","defaultFilterPassed","customFilterPassed","instruction","_instruction2","_instruction2$","nonNullish","_instruction2$2","valueFn","_instruction2$3","sourceKey","extendedEncodeURIComponent","serializeDateTime","checkContentLengthHeaderMiddlewareOptions","getCheckContentLengthHeaderPlugin","_context$logger","regionRedirectEndpointMiddlewareOptions","regionRedirectMiddlewareOptions","getRegionRedirectMiddlewarePlugin","clientConfig","_err$$metadata","actualRegion","followRegionRedirects","$response","t4","__s3RegionRedirect","t5","regionRedirectMiddleware","originalRegion","regionProviderRef","regionRedirectEndpointMiddleware","S3ExpressIdentityCache","lastPurgeTime","_purgeExpired","credential","EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS","isRefreshing","expiration","S3ExpressIdentityCacheEntry","_identity","accessed","S3ExpressIdentityProviderImpl","createSessionFn","_getS3ExpressIdentity","awsIdentity","identityProperties","Bucket","_identity$expiration$","_identity$expiration","_identity$expiration$2","_identity$expiration2","getIdentity","REFRESH_WINDOW_MS","_getIdentity","_session$Credentials","_session$Credentials2","purgeExpired","Credentials","AccessKeyId","SecretAccessKey","accessKeyId","secretAccessKey","sessionToken","SessionToken","Expiration","HEADER_VALUE_TYPE","getSmithyContext","normalizeProvider","promisified","toUint8Array","AMZ_DATE_QUERY_PARAM","SIGNATURE_QUERY_PARAM","TOKEN_QUERY_PARAM","AUTH_HEADER","AMZ_DATE_HEADER","GENERATED_HEADERS","SIGNATURE_HEADER","SHA256_HEADER","TOKEN_HEADER","ALWAYS_UNSIGNABLE_HEADERS","authorization","connection","expect","pragma","referer","trailer","upgrade","PROXY_HEADER_PATTERN","SEC_HEADER_PATTERN","ALGORITHM_IDENTIFIER","EVENT_ALGORITHM_IDENTIFIER","KEY_TYPE_IDENTIFIER","signingKeyCache","cacheQueue","createScope","shortDate","getSigningKey","sha256Constructor","credsHash","signable","hmac","_x5","getCanonicalHeaders","unsignableHeaders","signableHeaders","headerName","canonicalHeaderName","getPayloadHash","hashConstructor","hashCtor","HeaderFormatter","formatHeaderValue","shortView","setInt16","intView","setInt32","longBytes","binView","setUint16","binBytes","utf8Bytes","strView","strBytes","tsBytes","Int64","fromNumber","UUID_PATTERN","uuidBytes","negate","SelectorType","hasHeader","soughtHeader","cloneRequest","cloneQuery","moveHeadersToQuery","_ref$query","_options$unhoistableH","lname","unhoistableHeaders","prepareRequest","SignatureV4","applyChecksum","sha256","_ref$uriEscapePath","uriEscapePath","headerFormatter","regionProvider","credentialProvider","_presign","originalRequest","_options$signingDate","signingDate","_options$expiresIn","expiresIn","signingRegion","signingService","_formatDate","longDate","canonicalHeaders","validateResolvedCredentials","formatDate","getCanonicalHeaderList","t6","t7","t8","t9","createCanonicalRequest","getSignature","_sign","toSign","signString","signEvent","signMessage","signRequest","_signEvent","_ref3$signingDate","priorSignature","_formatDate2","hashedPayload","hashedHeaders","stringToSign","_signMessage","_callee4","signableMessage","_ref4$signingDate","_context4","_x6","_x7","_signString","_callee5","_ref5$signingDate","_formatDate3","_args5","_context5","_x8","_signRequest","_callee6","requestToSign","_ref6","_ref6$signingDate","_formatDate4","payloadHash","_args6","_context6","_x9","sortedHeaders","getCanonicalPath","getCanonicalQuery","_createStringToSign","_callee7","credentialScope","canonicalRequest","hashedRequest","_context7","_x10","_x11","_x12","_ref7","normalizedPathSegments","pathSegment","normalizedPath","_getSignature","_callee8","keyPromise","_context8","createStringToSign","_x13","_x14","_x15","_x16","SESSION_TOKEN_QUERY_PARAM","SESSION_TOKEN_HEADER","SignatureV4S3Express","_SignatureV","_signWithCredentials","credentialsWithoutSessionToken","privateAccess","getCredentialsWithoutSessionToken","setSingleOverride","_presignWithCredentials","_requestToSign$query","presign","currentCredentialProvider","s3ExpressMiddlewareOptions","getS3ExpressPlugin","_endpoint$properties","_endpoint$properties$","_endpoint$properties$2","_endpoint$properties2","_endpoint$properties3","endpoint","isS3ExpressAuth","requestBucket","s3ExpressIdentity","endpointV2","authSchemes","backend","bucketType","isS3ExpressBucket","s3ExpressIdentityProvider","getS3ExpressIdentity","s3ExpressMiddleware","bucketEndpointMiddlewareOptions","validateBucketNameMiddlewareOptions","getValidateBucketNamePlugin","bucketEndpoint","validateArn","validateBucketNameMiddleware","bucketEndpointUrl","_context$logger$const","_context$logger2","_context$logger2$warn","bucketEndpointMiddleware","provider","requiresRefresh","hasResult","coalesceProvider","normalizeCredentialProvider","getSkewCorrectedDate","systemClockOffset","getUpdatedSystemClockOffset","clockTime","currentSystemClockOffset","clockTimeInMs","isClockSkewed","getDateHeader","_response$headers$dat","_response$headers","_response$headers2","awsAuthMiddlewareOptions","getAwsAuthPlugin","_context$endpointV","_context$endpointV$pr","_context$endpointV$pr2","_context$endpointV2","_context$endpointV2$p","_context$endpointV2$p2","_authScheme","_authScheme2","_authScheme2$signingR","authScheme","signer","firstAuthScheme","secondAuthScheme","uncheckedSigner","signedRequest","multiRegionOverride","signingOptions","sigV4MultiRegion","dateHeader","getSigv4aSigner","_uncheckedSigner$sign","signerOptions","signingRegionSet","signWithCredentials","_error$ServerTime","serverTime","ServerTime","awsAuthMiddleware","IP_V4_REGEX","isIpAddress","VALID_HOST_LABEL_REGEX","isValidHostLabel","customEndpointFunctions","debugId","toDebugString","argv","EndpointError","getAttr","pathList","squareBracketIndex","getAttrPathList","DEFAULT_PORTS","_DEFAULT_PORTS","HTTP","HTTPS","endpointFunctions","booleanEquals","value1","value2","not","parseURL","whatwgURL","_value$protocol","_value$path","_value$query","urlString","isIp","inputContainsDefaultPort","stringEquals","uriEncode","evaluateTemplate","template","evaluatedTemplateArr","templateContext","endpointParams","referenceRecord","openingBraceIndex","closingBraceIndex","parameterName","_parameterName$split2","refName","evaluateExpression","keyName","callFunction","getReferenceValue","_customEndpointFuncti","evaluatedArgs","fnSegments","evaluateCondition","_options$logger","_options$logger$debug","fnArgs","toAssign","evaluateConditions","conditionsReferenceRecord","_options$logger2","_evaluateCondition","getEndpointHeaders","headerKey","headerVal","headerValEntry","processedExpr","getEndpointProperty","propertyEntry","getEndpointProperties","propertyVal","getEndpointUrl","endpointUrl","evaluateEndpointRule","endpointRule","conditions","_evaluateConditions","endpointRuleOptions","evaluateErrorRule","errorRule","evaluateTreeRule","treeRule","evaluateRules","endpointOrUndefined","selectedPartitionsInfo","selectedUserAgentPrefix","awsEndpointFunctions","isVirtualHostableS3Bucket","parseArn","_toArray","arn","partition","accountId","resourceId","partitions","_Object$entries","_Object$entries$_i","regionData","regionRegex","DEFAULT_PARTITION","aws","USER_AGENT","X_AMZ_USER_AGENT","UA_NAME_ESCAPE_REGEX","UA_VALUE_ESCAPE_REGEX","escapeUserAgent","userAgentPair","_userAgentPair$","prefixSeparatorIndex","uaName","getUserAgentMiddlewareOptions","getUserAgentPlugin","_context$userAgent","_options$customUserAg","defaultUserAgent","customUserAgent","sdkUserAgentValue","normalUAValue","defaultUserAgentProvider","userAgentMiddleware","isFipsRegion","getRealRegion","CONTENT_LENGTH_HEADER","contentLengthMiddlewareOptions","getContentLengthPlugin","resolveParamsForS3","isArnBucketName","ForcePathStyle","isDnsCompatibleBucketName","Endpoint","DisableMultiRegionAccessPoints","disableMultiRegionAccessPoints","DisableMRAP","DOMAIN_PATTERN","IP_ADDRESS_PATTERN","DOTS_PATTERN","bucketName","_bucketName$split2","isArn","isValidArn","createConfigValueProvider","configKey","canonicalEndpointParamKey","_config$configKey","configValue","_credentials$credenti","CredentialScope","getEndpointFromConfig","serviceId","querystring","_pair$split2","_pair$split2$","parseQueryString","toEndpointV1","getEndpointFromInstructions","commandInput","instructionsSupplier","endpointFromConfig","resolveParams","endpointProvider","_instructionsSupplier","getEndpointParameterInstructions","deserializerMiddlewareOption","serializerMiddlewareOption","getSerdePlugin","commandStack","_yield$next","$responseBodyText","deserializerMiddleware","urlParser","serializerMiddleware","RETRY_MODES","endpointMiddlewareOptions","getEndpointPlugin","_context$authSchemes","_smithyContext$select","httpAuthOption","signingName","selectedHttpAuthScheme","signingProperties","signing_region","signing_service","endpointMiddleware","getRandomValues","DEFAULT_RETRY_MODE","STANDARD","THROTTLING_ERROR_CODES","TRANSIENT_ERROR_CODES","TRANSIENT_ERROR_STATUS_CODES","NODEJS_TIMEOUT_ERROR_CODES","isThrottlingError","_error$$metadata2","_error$$retryable","$retryable","throttling","isTransientError","_error$$metadata3","_error$$metadata","clockSkewCorrected","isClockSkewCorrectedError","DefaultRateLimiter","_options$beta","_options$minCapacity","_options$minFillRate","_options$scaleConstan","_options$smooth","currentCapacity","lastMaxRate","measuredTxRate","requestCount","lastTimestamp","timeWindow","beta","minCapacity","minFillRate","scaleConstant","smooth","currentTimeInSeconds","getCurrentTimeInSeconds","lastThrottleTime","lastTxRateBucket","fillRate","maxCapacity","_getSendToken","acquireTokenBucket","_acquireTokenBucket","refillTokenBucket","fillAmount","calculatedRate","updateMeasuredRate","rateToUse","calculateTimeWindow","cubicThrottle","enableTokenBucket","cubicSuccess","newRate","updateTokenBucketRate","getPrecise","timeBucket","currentRate","createDefaultRetryToken","retryDelay","retryCount","retryCost","getRetryCount","getRetryDelay","getRetryCost","StandardRetryStrategy","maxAttempts","retryBackoffStrategy","delayBase","computeNextBackoffDelay","attempts","setDelayBase","getDefaultRetryBackoffStrategy","maxAttemptsProvider","_acquireInitialRetryToken","retryTokenScope","_refreshRetryTokenForRetry","errorInfo","errorType","delayFromErrorType","capacityCost","getMaxAttempts","shouldRetry","retryAfterHint","getCapacityCost","_token$getRetryCost","_getMaxAttempts","tokenToRenew","isRetryableError","AdaptiveRetryStrategy","rateLimiter","standardRetryStrategy","getSendToken","acquireInitialRetryToken","updateClientSendingRate","refreshRetryTokenForRetry","recordSuccess","randomUUID","crypto","rnds8","rng","byteToHex","unsafeStringify","AnalyticsFilter","native","rnds","isStreamingPayload","isRetryStrategyV2","getRetryErrorInfo","getRetryErrorType","getRetryAfterHint","_error$$metadata4","isServerError","retryMiddlewareOptions","getRetryPlugin","retryToken","lastError","totalRetryDelay","isRequest","retryErrorInfo","retry","retryMiddleware","retryAfterHeaderName","retryAfter","retryAfterSeconds","commonParams","UseArnRegion","Accelerate","DisableS3ExpressSessionAuth","UseGlobalEndpoint","UseFIPS","Region","UseDualStack","S3ServiceException","_ServiceException","__ServiceException","NoSuchUpload","_BaseException","__BaseException","ObjectNotInActiveTierError","_BaseException2","_super2","BucketAlreadyExists","_BaseException3","_super3","BucketAlreadyOwnedByYou","_BaseException4","_super4","NoSuchBucket","_BaseException5","_super5","visitor","Prefix","And","$unknown","LifecycleRuleFilter","ObjectSizeGreaterThan","ObjectSizeLessThan","MetricsFilter","AccessPointArn","ReplicationRuleFilter","InvalidObjectState","_BaseException6","_super6","StorageClass","AccessTier","NoSuchKey","_BaseException7","_super7","NotFound","_BaseException8","_super8","_this8","SessionCredentialsFilterSensitiveLog","parseXmlBody","utf8Encoder","collectBodyString","parsedObj","addEntity","parsedObjToReturn","parseXmlErrorBody","errorBody","_value$Error$message","loadRestXmlErrorCode","_data$Error","Code","expirationMs","doesIdentityRequireRefresh","requestBuilder","RequestBuilder","resolvePathStack","_build","_yield$this$context$e","_yield$this$context$e2","resolvePath","uriLabel","memberName","labelValueProvider","isGreedyLabel","resolvedPath","labelValue","_OverloadYield","AsyncGenerator","front","back","overloaded","settle","SelectObjectContentEventStream","ObjectAlreadyInActiveTierError","Records","Stats","Progress","Cont","End","ExceptionCtor","se_CreateSessionCommand","isSerializableHeaderValue","_xacsm","_SM","se_PutObjectCommand","_ref84","_callee84","_objectSpread4","contents","_context84","_ct","_CT","_xaa","_ACL","_cc","_CC","_cd","_CD","_ce","_CE","_cl","_CL","_cl_","_CLo","_cm","_CMD","_xasca","_CA","_xacc","_CCRC","_xacc_","_CCRCC","_xacs","_CSHA","_xacs_","_CSHAh","_E","__dateToUtcString","_xagfc","_GFC","_xagr","_GR","_xagra","_GRACP","_xagwa","_GWACP","_xasse","_SSE","_xasc","_SC","_xawrl","_WRL","_xasseca","_SSECA","_xasseck","_SSECK","_xasseckm","_SSECKMD","_xasseakki","_SSEKMSKI","_xassec","_SSEKMSEC","_xassebke","_BKE","_xarp","_RP","_xat","_T","_xaolm","_OLM","_xaolrud","_OLRUD","__serializeDateTime","_xaollh","_OLLHS","_xaebo","_EBO","Metadata","Key","_xi","_x168","_x169","de_CreateSessionCommand","_ref101","_callee101","_context101","de_CommandError","__expectNonNull","__expectObject","parseBody","de_SessionCredentials","_x202","_x203","de_PutObjectCommand","_ref179","_callee179","_map198","_context179","_Exp","_xae","_ETa","_eta","_VI","_xavi","__parseBoolean","_RC","_xarc","_x358","_x359","_ref191","_callee191","parsedOutput","errorCode","parsedBody","_context191","parseErrorBody","de_NoSuchUploadRes","de_ObjectNotInActiveTierErrorRes","de_BucketAlreadyExistsRes","de_BucketAlreadyOwnedByYouRes","de_NoSuchBucketRes","de_InvalidObjectStateRes","de_NoSuchKeyRes","de_NotFoundRes","de_ObjectAlreadyInActiveTierErrorRes","throwDefaultError","_x382","_x383","exceptionCtor","_ref192","_callee192","_context192","__decorateServiceException","_x384","_x385","_ref193","_callee193","_context193","_x386","_x387","_ref194","_callee194","_context194","_AT","__expectString","_x388","_x389","_ref195","_callee195","_context195","_x390","_x391","_ref196","_callee196","_context196","_x392","_x393","_ref197","_callee197","_context197","_x394","_x395","_ref198","_callee198","_context198","_x396","_x397","_ref199","_callee199","_context199","_x398","_x399","_ref200","_callee200","_context200","_x400","_x401","_AKI","_SAK","_ST","__parseRfc3339DateTimeWithOffset","_ref207","CreateSessionCommand","_$Command$classBuilde","$Command","ser","isEmptyData","SHA_1_HASH","SHA_1_HMAC_ALGO","EMPTY_DATA_SHA_1","fallbackWindow","locateWindow","Sha1","toHash","subtle","importKey","convertToBuffer","subtleCryptoMethods","supportsWebCrypto","supportsSecureRandom","supportsSubtleCrypto","numToUint8","uint32ArrayFrom","a_lookUpTable","return_array","a_index","WebCryptoSha1","SHA_256_HASH","SHA_256_HMAC_ALGO","EMPTY_DATA_SHA_256","Sha256","verb","SuppressedError","BLOCK_SIZE","KEY","INIT","MAX_HASHABLE_LENGTH","RawSha256","bufferLength","bytesHashed","hashBuffer","bitsHashed","bufferView","undecoratedLength","setUint32","state0","state1","state2","state3","state4","state5","state6","state7","t1_1","t2_1","digestSync","bufferHash","bufferFromSecret","WebCryptoSha256","JsSha256","clientVersion","_window","_window$navigator","_parsedUA$os","_parsedUA$os2","_parsedUA$browser$nam","_parsedUA$browser","_parsedUA$browser$ver","_parsedUA$browser2","parsedUA","bowser","AwsCrc32","crc32","Crc32","data_1","data_1_1","byte","lookupTable","HeaderMarshaller","nameLength","getUint8","BOOLEAN_TAG","BYTE_TAG","getInt8","SHORT_TAG","getInt16","INT_TAG","getInt32","LONG_TAG","binaryLength","getUint16","BINARY_TAG","STRING_TAG","TIMESTAMP_TAG","UUID_TAG","EventStreamCodec","headerMarshaller","messageBuffer","isEndOfStream","getMessage","getMessages","rawHeaders","_splitMessage","PRELUDE_LENGTH","messageLength","getUint32","headerLength","expectedPreludeChecksum","PRELUDE_MEMBER_LENGTH","expectedMessageChecksum","checksummer","splitMessage","AsyncFromSyncIterator","AsyncFromSyncIteratorContinuation","thr","MessageDecoderStream","_Symbol$asyncIterator","_wrapAsyncGenerator","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","decoded","_asyncIterator","inputStream","_awaitAsyncGenerator","decoder","MessageEncoderStream","messageStream","encoder","includeEndFrame","SmithyMessageDecoderStream","deserialized","SmithyMessageEncoderStream","payloadBuf","getMessageUnmarshaller","messageType","unmodeledError","deserializedException","EventStreamMarshaller","utf8Decoder","eventStreamCodec","utfEncoder","currentMessageTotalLength","currentMessagePendingLength","currentMessage","messageLengthBuffer","allocateMessage","sourceIterator","_yield$_awaitAsyncGen","chunkLength","bytesRemaining","numBytesForTotal","numBytesToWrite","getChunkedStream","universalMarshaller","UniversalEventStreamMarshaller","bodyIterable","isReadableStream","releaseLock","serialziedIterable","asyncIterable","_yield$iterator$next","iterableToReadableStream","eventStreamSerdeProvider","blobReader","onChunk","chunkSize","fileReader","totalBytesRead","readAsArrayBuffer","blobHasher","_blobHasher","Md5","sourceData","_digest","cmn","TEXT_ENCODER","calculateBodyLength","signatureV4CrtContainer","SignatureV4MultiRegion","sigv4Signer","_args2","_args3","_args4","presignWithCredentials","sigv4aSigner","CrtSignerV4","signingAlgorithm","cl","cm","cn","co","cp","cq","cr","_S","_U","_V","_W","_X","_Y","_Z","_aa","_ab","ad","_ad","_ae","_ref11","_ag","_ah","_ref12","_aj","_ak","al","_al","_ref13","am","_am","_an","ao","_ao","_ap","aq","_aq","ar","_as","_ref16","_ref17","au","_au","av","_aw","_ax","_ref21","_az","aA","_aA","aB","_aB","_ref23","aC","_ref24","aD","_aD","aE","_aE","aF","_aF","aG","_aG","aH","_aH","aI","_aI","aJ","_aJ","_ref28","aK","_aK","aL","_aL","aM","_aM","aN","_aN","aO","_aO","aP","_aP","aQ","aR","aS","_aS","aT","aU","_aU","aV","_aV","aW","_aW","_ref30","_ref32","aX","_aX","_ref34","_ref36","_ref39","_ref38","_ref37","aY","_aY","aZ","_aZ","_ref41","_bb","_bc","_bd","_be","_bf","_bg","_ref42","_ref43","_ref44","_bj","_bk","_bl","bm","_bm","_bn","bo","_bo","bq","_ref45","_br","bs","_bs","_bt","bu","_bu","bv","_bv","bA","bB","bC","_ref49","_ref51","bD","bE","bF","bG","bH","_ref52","_ref53","_ref55","bI","_ref56","_ref57","_n2","bJ","_ref58","_ref59","_ref61","bK","_ref62","_n3","_ref63","_n4","bL","bM","_ref65","bN","_ref67","bP","bQ","_ref69","bR","_ref71","bS","_ref72","bT","_ref73","_ref75","_ref74","bU","bV","_ref78","_ref77","_ref76","bW","_ref81","_ref80","_ref79","_ref83","_ref82","bZ","_ref86","_ref85","_ref88","_ref87","_ref89","_ref90","_ref92","ruleSet","UseObjectLambdaEndpoint","CopySource","DisableAccessPoints","UseS3ExpressControlEndpoint","_ref367","_ref93","_ref94","_ref95","_ref96","_ref97","_ref98","_ref126","_ref99","_ref102","_ref103","_ref115","_ref109","_ref106","_ref105","_endpoint","_ref108","_endpoint2","_ref112","_ref111","_endpoint3","_ref114","_endpoint4","_ref119","_ref118","_ref116","_endpoint5","_endpoint6","_ref125","_ref122","_ref120","_ref121","_ref123","_ref124","_ref130","_ref127","_endpoint7","_ref128","_endpoint8","_endpoint9","_ref151","_ref131","_ref132","_ref133","_ref134","_ref135","_ref137","_ref149","_ref142","_ref138","_ref140","_ref139","_endpoint10","_endpoint11","_ref147","_ref143","_ref145","_ref144","_endpoint12","_endpoint13","_ref333","_ref155","_ref154","_ref153","_ref152","_ref156","_ref157","_endpoint14","_ref159","_ref160","_ref161","_endpoint15","_ref163","_ref164","_ref165","_endpoint16","_ref167","_ref168","_ref169","_endpoint17","_ref171","_ref172","_ref173","_endpoint18","_ref174","_endpoint19","_ref177","_ref175","_ref178","_ref180","_ref181","_ref182","_endpoint20","_ref185","_ref183","_ref186","_ref187","_endpoint21","_ref190","_ref188","_endpoint22","_ref298","_ref201","_ref296","_ref202","_ref204","_ref203","_ref223","_ref205","_ref221","_ref220","_ref218","_ref217","_ref216","_ref215","_ref214","_ref213","_ref206","_ref212","_ref211","_ref208","_endpoint23","_ref209","_endpoint24","_endpoint25","_ref264","_ref263","_ref243","_ref242","_ref241","_ref240","_ref239","_ref238","_ref237","_ref224","_ref236","_ref234","_ref225","_ref233","_ref232","_ref226","_ref227","_endpoint26","_ref228","_endpoint27","_ref229","_endpoint28","_ref230","_endpoint29","_ref231","_endpoint30","_ref261","_ref244","_ref245","_ref246","_ref247","_ref250","_ref249","_ref260","_ref251","_ref258","_ref255","_ref253","_ref254","_endpoint31","_ref256","_ref294","_ref265","_ref266","_ref267","_ref268","_ref271","_ref270","_ref269","_ref292","_ref272","_ref290","_ref289","_ref288","_ref287","_ref286","_ref285","_ref283","_ref273","_ref281","_ref274","_ref279","_ref276","_ref277","_endpoint32","_endpoint33","_ref304","_ref299","_ref301","_ref303","_ref302","_ref306","_ref305","_ref332","_ref331","_ref329","_ref307","_endpoint34","_ref309","_ref310","_ref311","_endpoint35","_ref313","_ref314","_ref315","_endpoint36","_ref317","_ref318","_ref319","_endpoint37","_ref322","_ref320","_ref323","_ref324","_endpoint38","_ref327","_ref325","_endpoint39","_ref328","_ref341","_ref334","_ref335","_ref340","_ref339","_ref336","_endpoint40","_ref337","_endpoint41","_endpoint42","_ref366","_ref365","_ref364","_ref342","_endpoint43","_ref344","_ref345","_ref346","_endpoint44","_ref348","_ref349","_ref350","_endpoint45","_ref352","_ref353","_ref354","_endpoint46","_ref357","_ref355","_ref358","_ref359","_endpoint47","_ref362","_ref360","_endpoint48","_ref363","defaultEndpointResolver","ruleSetObject","_options$endpointPara","_options$logger2$debu","paramsWithDefault","_endpointParams$param","paramKey","paramDefaultValue","requiredParams","requiredParam","givenEndpoint","resolveEndpoint","ChecksumAlgorithm","ChecksumLocation","DEFAULTS_MODE_OPTIONS","isMobileBrowser","_parsedUA$platform","getRuntimeConfig","_config$bodyLengthChe","_config$credentialDef","_config$defaultUserAg","_config$eventStreamSe","_config$maxAttempts","_config$md","_config$region","_config$requestHandle","_config$retryMode","_config$sha","_config$sha2","_config$streamCollect","_config$streamHasher","_config$useDualstackE","_config$useFipsEndpoi","defaultsMode","resolveDefaultsModeConfig","defaultConfigProvider","clientSharedValues","_config$base64Decoder","_config$base64Encoder","_config$disableHostPr","_config$endpointProvi","_config$extensions","_config$getAwsChunked","_config$logger","_config$sdkStreamMixi","_config$serviceId","_config$signerConstru","_config$signingEscape","_config$urlParser","_config$useArnRegion","_config$utf8Decoder","_config$utf8Encoder","apiVersion","base64Decoder","disableHostPrefix","extensions","signerConstructor","signingEscapePath","useArnRegion","getSharedRuntimeConfig","credentialDefaultProvider","packageInfo","md5","RequestHandler","sha1","useDualstackEndpoint","useFipsEndpoint","resolveRuntimeExtensions","extensionConfiguration","runtimeConfigRegion","setRegion","getAwsRegionExtensionConfiguration","httpHandler","setHttpHandler","updateHttpClientConfig","httpHandlerConfigs","getHttpHandlerExtensionConfiguration","checksumAlgorithm","resolveChecksumRuntimeConfig","retryStrategyConfiguration","resolveRetryRuntimeConfig","resolveDefaultRuntimeConfig","S3Client","_Client","_config_1","_options$useFipsEndpo","_options$useDualstack","_options$forcePathSty","_options$useAccelerat","_options$useGlobalEnd","_options$disableMulti","forcePathStyle","useAccelerateEndpoint","useGlobalEndpoint","disableMultiregionAccessPoints","defaultSigningName","resolveClientEndpointParameters","__getRuntimeConfig","_config_2","_region2","providedRegion","_useFipsEndpoint2","resolveRegionConfig","_config_3","_input$tls","_input$useDualstackEn","_input$useFipsEndpoin","tls","customEndpointProvider","isCustomEndpoint","resolveEndpointConfig","_config_4","_input$maxAttempts","_retryStrategy2","resolveRetryConfig","_config_6","normalizedCreds","parentClientConfig","_input$signingEscapeP","_input$systemClockOff","regionInfoProvider","regionInfo","isSigv4a","regionForSigner","SignerCtor","resolveAwsAuthConfig","_config_7","_input$forcePathStyle","_input$useAccelerateE","_input$disableMultire","_input$followRegionRe","_input$s3ExpressIdent","_input$bucketEndpoint","_session","s3ClientProvider","CreateSessionCommandCtor","SessionMode","resolveS3Config","_config_9","eventStreamMarshaller","resolveEventStreamSerdeConfig","_config_10","_get","_getPrototypeOf","__Client","DEFAULT_CHECKSUM_ALGORITHM","MD5","S3_EXPRESS_DEFAULT_CHECKSUM_ALGORITHM","CRC32","CLIENT_SUPPORTED_ALGORITHMS","PRIORITY_ORDER_ALGORITHMS","getChecksumAlgorithmForRequest","isS3Express","requestChecksumRequired","requestAlgorithmMember","defaultAlgorithm","getChecksumLocationName","algorithm","isStreaming","AwsCrc32c","crc32c","Crc32c","selectChecksumAlgorithmFunction","_ChecksumAlgorithm$MD","stringHasher","flexibleChecksumsMiddlewareOptions","getChecksumAlgorithmListForResponse","responseAlgorithms","validChecksumAlgorithms","isChecksumWithPartNumber","lastHyphenIndex","numberPart","createReadStreamOnBuffer","getChecksum","validateChecksumFromResponse","responseBody","responseHeaders","responseHeader","checksumFromResponse","flexibleChecksumsResponseMiddlewareOptions","getFlexibleChecksumsPlugin","middlewareConfig","requestBody","updatedBody","updatedHeaders","rawChecksum","flexibleChecksumsMiddleware","collectedStream","requestValidationModeMember","isStreamingBody","flexibleChecksumsResponseMiddleware","ssecMiddlewareOptions","getSsecPlugin","valueForHash","isValidBase64EncodedSSECustomerKey","ssecMiddleware","_unused","PutObjectCommand","SSECustomerKey","SSEKMSKeyId","SSEKMSEncryptionContext","createBlockUploadTransaction","updateBlockUploadTransaction","status_id","getUnmatchedBlockClusters","uploadToS3","s3Client","ContentType","transaction_id","run_type","fileInputRef","setFiles","uploading","setUploading","unmatchedClusters","setUnmatchedClusters","loadingUnmatched","setLoadingUnmatched","_useTransactionPollin","useTransactionPolling","isFinished","noFiles","updateInputFiles","DataTransfer","newFile","validateFiles","newFiles","haveFile","currentFiles","fileText","jsonData","handleFileChange","allFiles","handleFileUpload","processFiles","featureCollection","unmatched","fetchUnmatched","Files","getAsFile","UploadStatus","UnmatchedPolygons","FileUpload","loadingBlocks","hasFilter","isClearable","block_code","scan_type","report_type","pdf_type","AdvancedFilterModal","_userStore$properties","loadReports","setLoadingBlocks","showAdvertisement","setShowAdvertisement","newBlocks","GreenAtlasAdvertisement","ReportsTable","alt","GreenAtlasUploadPage","property_identifier","onDragOver","onDrop","droppedFiles","downloadFile","fetchTrapCSV","faBook","faChevronDown","faChevronUp","faComment","faExclamationCircle","faTriangle","faDiamondExclamation","faCircleQuestion","faFireFlame","faMagnifyingGlass","Badge","pill","_collapseStyles","MARGINS","getDefaultDimensionValue","dimension","collapseStyles","getDimensionValue","Collapse","_ref$dimension","_ref$getDimensionValu","computedDimension","handleEntering","handleEntered","handleExit","handleExiting","fluid","booleanPointInPolygon","getCoord","polys","inBBox","insidePoly","inRing","ignoreBoundary","inHole","circulars","clones","errorToString","regExpToString","SYMBOL_REGEXP","printSimpleValue","quoteStrings","printNumber","printValue","notOneOf","notType","originalValue","isCast","uppercase","lessThan","moreThan","positive","integer","noUnknown","__isYupSchema__","Condition","branch","isSchema","strReg","errorOrErrors","_this$errors","isError","captureStackTrace","runTests","endEarly","tests","fired","nestedErrors","Reference","isContext","isSibling","__isYupRef","createValidation","_ref$path","Ref","createError","nextParams","mapValues","formatError","validOrError","OPTIONS","lastPart","lastPartDebug","innerType","fields","parentPath","ReferenceSet","isRef","removeItems","BaseSchema","_mutate","_typeError","_whitelist","_blacklist","exclusiveTests","withMutation","typeError","strip","recursive","nullable","presence","_whitelistError","_blacklistError","mergedSpec","_typeCheck","resolvedSchema","_cast","formattedValue","formattedResult","rawValue","_options$from","_options$originalValu","_options$abortEarly","initialTests","finalTests","maybeCb","validateSync","_getDefault","_isPresent","isNullable","isExclusive","enums","valids","resolveAll","invalids","_next$spec","_getIn","_arr2","_i3","_arr3","notRequired","Mixed","BooleanSchema","_BaseSchema","isAbsent","rEmail","rUrl","rUUID","isTrimmed","objStringTag","StringSchema","strValue","excludeEmptyString","_options$excludeEmpty","NumberSchema","less","more","_method","avail","isoReg","DateSchema","numericKeys","minutesOffset","isoParse","cast","prepareParam","INVALID_DATE","_err$path","sortByKeyOrder","defaultSort","ObjectSchema","_sortErrors","_nodes","_excludedEdges","_options$stripUnknown","stripUnknown","intermediateValue","innerOptions","__validating","isChanged","exists","fieldValue","fieldSpec","_opts$from","_opts$originalValue","_opts$abortEarly","_opts$recursive","nextFields","schemaOrRef","dft","getDefaultFromShape","excludes","excludedEdges","addNode","depPath","sortFields","picked","fromGetter","newObj","noAllow","unknownKeys","known","unknown","allow","mapKeys","transformKeys","ArraySchema","castArray","castElement","_options$recursive","AuthenticationStore","setBearerToken","setRefreshBearerToken","TraplogStore","loadingInsectGroups","insectGroups","loadingTrapLures","trapLures","loadingMatingDisruptionTies","matingDisruptionTies","loadingSprayProducts","sprayProducts","loadingTrappingZones","trappingZones","loadingTrappingResults","trappingResults","selectedInsectGroupId","selectedTrappingZoneId","loadInsectGroups","loadTrapLures","loadMatingDisruptionTies","loadSprayProducts","loadTrappingZones","loadTrappingResults","addTrap","setSelectedInsectGroupId","setSelectedTrappingZoneId","selectedInsectGroup","selectedTrappingZone","selectedTrappingZoneResults","traps","trappingZone","high_pressure","selectedDatabaseYear","trap","trappingZoneIndex","trapping_zone_id","newTrappingZones","updateTrappingZones","updateTrappingZone","insectGroupId","updateTrappingZoneHighPressure","trappingZoneId","highPressure","resetAllTrappingZoneHighPressure","_this9","resetTrappingZones","resetTrapping","isTrappingZoneHighRisk","cmsm","high_risk","isTrappingZoneHighPressure","_this10","insectGroup","_this11","_this12","trap_lure","insects","insect","insect_group","authenticationStore","traplogStore","useStores","InsectGroupSelect","customInsects","short_name","InsectGroupSelect$1","TraplogLegend","propertyStatuses","otherProps","setSuccess","setWarning","danger","setDanger","secondary","setSecondary","successCount","warningCount","dangerCount","secondaryCount","propertyStatus","bgColor","ConfirmationModal$1","titleProps","headerProps","bodyText","showButton","showAction","_ref$showModal","showModal","confirmButton","confirmAction","ToastContainer$1","calcAccumulationThreshold","moment$1","accumulation_threshold","trappingZoneResultsCounts","trappingZoneResults","sprays","trapping_zone_sprays","amountThresholdsMet","accumulationThresholdsMet","averageThresholdsMet","coveredThresholds","thresholdMetRecords","coveredThresholdRecords","amounts","thresholdMet","coveredThreshold","trapResult","trap_monitoring_records","per_trap_catch_threshold","sprayed","accumulation","average_threshold","insectType","productionArea","useCollapse","workerBundleString","sharedChunk","_createClass2","_this13","_class","_this14","_this15","_ct2","_class2","_this16","_this17","_this$queue$shift","_ct3","_class3","_this18","_this19","_this20","_this$queue$shift2","_this21","_Ot","_this22","_i8","_e12","_Error2","_this23","_i9","_he","_this$toArray2","_this$featureTileCoor","_e$errors","_step12","_iterator12","_step12$value","fr","_step13","_iterator13","er","rr","nr","_step14","_iterator14","_step15","_iterator15","ir","_step16","_iterator16","_step19","_iterator19","_step17","_iterator17","_step18","_iterator18","sr","_step20","_iterator20","_step21","_iterator21","_step22","_iterator22","_step23","_iterator23","or","ur","pr","dr","yr","mr","_step24","_iterator24","_step24$value","_step25","_iterator25","gr","xr","vr","wr","Ar","Sr","kr","Ir","Mr","zr","Tr","Br","Er","Cr","Pr","Dr","Vr","Fr","_Cr","Lr","Rr","_step26","_iterator26","_step26$value","_step27","_iterator27","Ur","_t28","jr","$r","_step28","_iterator28","_step29","_iterator29","Or","_step30","_iterator30","_step31","_iterator31","_step31$value","Nr","Gr","Zr","Xr","Kr","Hr","Yr","Wr","_step32","_this24","_iterator32","_i22","_r42","_r42$_i","_step33","_iterator33","Jr","Qr","_step34","_iterator34","_step34$value","_step35","_iterator35","_step35$value","_ref9","_ref10","tn","rn","nn","sn","un","hn","pn","dn","yn","gn","xn","vn","_ref15","_ref19","_ref22","_ref25","_ref26","_ref27","_step36","_iterator36","_step37","_iterator37","_ref29","_ref31","_ref33","_ref35","_ref47","_ref68","_ref91","_ref100","_step38","_iterator38","_step39","_iterator39","_ref107","wn","An","Sn","kn","Mn","zn","Tn","Pn","Cn","En","_step40","_iterator40","Dn","_i29","_n29","_ref113","Bn","Vn","Fn","Ln","Rn","Un","jn","On","$n","_step41","_iterator41","qn","Nn","Gn","Kn","Hn","_step42","_iterator42","Yn","Wn","_step43","_iterator43","Jn","Qn","_a19","_a20","_e$clusterProperties$","_step44","_iterator44","_step45","_iterator45","_i35","ts","es","rs","ls","us","hs","ps","_step46","_iterator46","ys","fs","_step47","_iterator47","ds","gs","vs","_step48","_iterator48","As","Ss","ks","Is","Ms","zs","Ts","Bs","Es","Cs","_step49","_iterator49","Ps","Ds","Fs","Vs","_i36","_Object$keys2","Ls","_i37","_Object$keys3","_i38","_Object$keys4","js","_i39","_Object$keys5","_i41","_Object$keys6","Rs","_i42","_Object$keys7","_i43","_Object$keys8","Us","$s","Os","qs","_Os","Ns","Gs","Zs","Xs","Hs","Ys","Ws","Js","Qs","_Ys","_Ys2","_super9","_Ys3","_super10","_Ys4","_super11","_Ys5","_super12","_Ys6","_super13","_Ys7","_super14","_Ys8","_super15","_Ys9","_super16","_Ys10","_super17","_Ys11","_super18","_Ys12","_super19","_Ys13","_super20","_Ys14","_super21","_Ys15","_super22","_Ys16","_super23","_Ys17","_super24","_Ys18","_super25","ga","_Ys19","_super26","_Ys20","_super27","_Ys21","_super28","_Ys22","_super29","_Ys23","_super30","_Ys24","_super31","_Ys25","_super32","_Hs","_super33","_super34","_Hs2","_super35","_ca","_super36","_Hs3","_super37","_ma","_super38","_Hs4","_super39","_ga","_super40","_xa","_super41","_ta","_super42","_Hs5","_super43","_ba","_super44","_Hs6","_super45","_a26","_super46","_Hs7","_super47","_aa2","_super48","initialized","_Ya","_super49","_this25","fetchUniformLocation","_Ya2","_super50","_this26","_Ya3","_super51","_this27","eo","ro","no","io","so","oo","uo","po","mo","_step50","_iterator50","_step51","_iterator51","_step52","_iterator52","_step53","_iterator53","_step53$value","_step54","_iterator54","_step55","_iterator55","ho","fo","yo","xo","_Nt","_super52","_this28","vo","_step56","_iterator56","wo","Ao","ko","_ko$convert","So","Io","Mo","zo","To","Bo","Eo","Co","Po","Do","Vo","Fo","Lo","Ro","Uo","jo","$o","Oo","qo","No","_step57","_iterator57","_step58","_iterator58","_step59","_iterator59","Go","Zo","Xo","Ko","_step60","_iterator60","_step60$value","_i54","_s33","_step61","_iterator61","_step62","_iterator62","Ho","il","Qo","Yo","Wo","nl","Jo","rl","sl","_step63","_iterator63","_step64","_iterator64","ol","ul","hl","layout_circle","pl","paint_circle","fl","dl","yl","ml","vl","wl","Al","Sl","kl","Il","Ml","zl","Tl","Bl","El","Cl","Pl","Dl","Vl","Fl","Ll","Rl","Ul","jl","$l","Ol","ql","Nl","Gl","Zl","Xl","Kl","Hl","Yl","Wl","Jl","_this$dir","Ql","tu","eu","_step65","_iterator65","ru","_step66","_iterator66","_step67","_iterator67","nu","_ret2","iu","su","ou","_Ko","_super53","lu","uu","cu","hu","pu","fu","paint_heatmap","du","_t$clips$_e","yu","paint_hillshade","gu","xu","vu","_u","Cu","zu","Tu","Au","Gu","Ou","Fu","qu","wu","Vu","Eu","ku","Su","Iu","Mu","Pu","Lu","ju","Du","$u","Bu","Uu","Ru","Nu","Zu","Xu","Hu","Ku","Yu","Wu","Ju","_step68","_iterator68","Qu","_step69","_iterator69","_step70","_iterator70","_step70$value","_i63","_s40","_step71","_iterator71","_step72","_iterator72","_step73","_iterator73","_step74","_iterator74","layout_fill","paint_fill","_step75","_iterator75","_step76","_iterator76","_c","edgeRadius","_step77","_iterator77","_step77$value","_step78","_iterator78","_step79","_iterator79","_step80","_iterator80","_step81","_step80$value","_iterator81","_step82","_iterator82","_step83","_iterator83","_this29","_loop3","_step84","_iterator84","_step85","_iterator85","_step86","_iterator86","_this30","_step87","_iterator87","_step87$value","_i75","_s50","_step88","_iterator88","_step89","_iterator89","_step90","_iterator90","mapbox_clip_start","mapbox_clip_end","_step91","_iterator91","_ref117","layout_line","paint_line","_Os2","_class4","_super54","_h","_r$readMessage","_step92","_iterator92","_step93","_iterator93","_$h","_t$tl","_this31","_step94","_iterator94","_step95","_iterator95","_step96","_iterator96","_step97","_iterator97","_step101","_iterator101","_step98","_iterator98","np","_rp","rp","_step99","_iterator99","_step100","_iterator100","_step102","_iterator102","_step103","_iterator103","tp","_rp2","sp","_i88","_super55","_this32","lp","hp","dp","mp","vp","_this33","_step104","_iterator104","_step105","_iterator105","_step106","_iterator106","_step106$value","_i$draw","_p","Ap","Sp","wp","_step107","_iterator107","_step108","_iterator108","_step108$value","kp","_step109","_iterator109","_class5","_ref122$fontSize","_ref122$buffer","_ref122$radius","_ref122$cutoff","_ref122$fontFamily","_ref122$fontWeight","_ref122$fontStyle","_this$ctx$measureText","Ip","Mp","Tp","Bp","Ep","Cp","Pp","Dp","_t$textSizeData","_t$iconSizeData","_step110","_iterator110","_loop4","Vp","Fp","_f$projectTilePoint","_l$layout$get$evaluat","_l$layout$get$evaluat2","$p","jp","Lp","Rp","_step111","_iterator111","_step112","_iterator112","_step113","_iterator113","_step114","_iterator114","_step115","_iterator115","_step116","_iterator116","_step117","_iterator117","_step118","_iterator118","_step119","_iterator119","_step120","_iterator120","Np","Zp","Xp","Kp","Hp","Yp","Wp","Jp","Qp","fromPoints","_step121","_iterator121","_kf","_super56","_this34","_this34$parallels2","_kf2","_super57","_kf3","_super58","_this35","_kf4","_super59","_this36","_this36$parallels2","_kf5","_super60","_this37","_kf6","_super61","_kf7","_super62","_kf8","_super63","_this38","_Lf","_super64","_this39","_pixelsPerMercatorPixel","_step122","_iterator122","_step123","_iterator123","_step123$value","_step124","_iterator124","_e$_n","_this40","_step125","_iterator125","layout_symbol","paint_symbol","_xo","_super65","_step126","_iterator126","_step127","_iterator127","_step128","_iterator128","paint_background","paint_raster","_xo2","_super66","_this41","paint_sky","_xo3","_super67","_xo4","_super68","_this42","_xo5","_super69","_xo6","_super70","_xo7","_super71","_step129","_iterator129","_step130","_iterator130","_step131","_iterator131","_step132","_iterator132","_step133","_iterator133","_step134","_iterator134","_xo8","_super72","_this43","_xo9","_super73","_xo10","_super74","_xo11","_super75","_this44","_this45","_this46","_this47","_this48","_i119","_yd","Sd","_step135","_iterator135","_loop5","_step136","_iterator136","_this$tileID$canonica","_step137","_iterator137","_step138","_iterator138","_step139","_iterator139","_r$_t","_step140","_iterator140","_step140$value","_this49","_globePoint","_i126","_Object$keys9","Ed","Cd","_p$pop","_step141","_iterator141","_this50","_step142","_iterator142","_i130","_e228","Ud","Gd","_Nt2","_super76","_this51","_this52","_this53","Kd","_i133","_r186","_step143","_iterator143","_step144","_iterator144","_step145","_iterator145","_i135","_e238","_this54","_step146","_iterator146","_step147","_this55","_iterator147","_step148","_this56","_iterator148","_step149","_iterator149","Wd","_this57","_loop6","_step150","_iterator150","_step151","_iterator151","_step152","_iterator152","_$h2","_this58","_step153","_iterator153","_step154","_iterator154","_step155","_iterator155","ny","_this59","_i$result","_step156","_iterator156","_loop7","_class6","_this60","_this61","_this62","_class7","_this63","_this64","_class8","_step157","_iterator157","_step158","_iterator158","_step159","_iterator159","_uf2","_class9","_step160","_iterator160","_step161","_iterator161","_Ya4","_class10","_super77","_this65","_Ya5","_class11","_super78","_this66","_Ya6","_class12","_super79","_this67","_Ya7","_class13","_super80","_this68","_Ya8","_class14","_super81","_this69","_Ya9","_class15","_super82","_this70","_Nt3","_class16","_super83","_this71","_this72","_this73","_t$point","_t$point2","_t$_center","conjugate","create$1","exactEquals","exported$1","extend$1","fromQuat","fromScaling","_step162","_iterator162","isFullscreen","mercatorScale","mul$1","multiply$2","normalize$1","ortho","rotateY$1","rotateZ","rotateZ$1","tileCornersToBounds","transformMat4$1","transitionTileAABBinECEF","_step163","_iterator163","_step164","_iterator164","_step165","_iterator165","_step166","_this74","_iterator166","_step167","_iterator167","_step168","_iterator168","_step169","_iterator169","_step170","_iterator170","_step171","_iterator171","fromGeojsonVt","_this$options","_step172","_iterator172","_step173","_iterator173","_this$options2","_step174","_iterator174","_step175","_iterator175","_this$options3","_step176","_iterator176","_step177","_iterator177","_step178","_iterator178","_e$geometry$coordinat","_e$VectorTileWorkerSo","_super84","_this75","_this76","_i156","_a95","_r$_t2","_i158","_a97","_i159","_a98","_this77","_this78","_i160","_Object$keys10","_e$Evented","_super85","_this79","_step179","_iterator179","_step179$value","_step180","_iterator180","_step181","_iterator181","_step182","_iterator182","_this$atlasImage","_e$potpack","_step183","_iterator183","_class17","_ref129","_e$Evented2","_super86","_this80","_e$Evented3","_super87","_this81","_S12","_e$Evented4","_super88","_this82","_i166","_Object$keys11","_this83","_super89","_Z2","_super90","_Z3","_super91","_Z4","_super92","_Z5","_super93","_Z6","_super94","_Z7","_super95","_Z8","_super96","_Z9","_super97","_Z10","_super98","_Z11","_super99","_Z12","_super100","_Z13","_super101","_Z14","_super102","_Z15","_super103","_Z16","_super104","_Z17","_super105","_Z18","_super106","_Z19","_super107","_Z20","_super108","_Z21","_super109","_Z22","_super110","_Z23","_super111","_Z24","_super112","_Z25","_super113","_Z26","_super114","_Z27","_super115","_Z28","_super116","_this84","_Z29","_super117","_Z30","_super118","_Z31","_super119","_Z32","_super120","_this85","_super121","_be2","_super122","_Te","_super123","_e$Evented5","_super124","_this86","_this87","_this88","_e$transformMat2","_e$Evented6","_super125","_this89","_this90","_step184","_iterator184","_this$coordinates$map","_this$coordinates$map2","_e$Evented7","_super126","_this91","_this92","_this93","_step185","_iterator185","_this94","_this95","_this96","_this97","_this98","_Me","rasterDem","_super127","_this99","_e$Evented8","_super128","_this100","_this101","_this102","_De","_super129","_this103","_this104","_step186","_iterator186","_De2","_super130","_this105","_i176","_e$Evented9","_super131","_this106","_e$canonical","_t$tileID$canonical","_e$tileID$canonical","_e$tileID$canonical2","_step187","_iterator187","_step188","_iterator188","_step189","_iterator189","_step190","_iterator190","_step191","_iterator191","_step192","_iterator192","_step193","_iterator193","_step194","_iterator194","_step195","_iterator195","_step196","_iterator196","_step197","_iterator197","_step198","_iterator198","_e$getAnchorAlignment","_step199","_iterator199","_this107","_t$parameters","_step200","_iterator200","_i198","_a109","_i199","_a110","_step201","_iterator201","_this108","_loop8","_this109","_step202","_iterator202","_step203","_iterator203","_step204","_iterator204","_e$Evented10","_super132","_this110","_this111","_this112","_step205","_iterator205","_useExplicitProjection","_prioritizeAndUpdateProjection","_this113","_r$_o","_step206","_iterator206","_step207","_iterator207","_step208","_iterator208","_this114","_this115","_step209","_iterator209","_step210","_iterator210","_step211","_iterator211","_this116","_step212","_iterator212","_step213","_iterator213","_step214","_iterator214","_step215","_iterator215","_this117","_step216","_iterator216","_step217","_iterator217","_loop9","_c44","_i219","_step218","_iterator218","_loop10","_step219","_iterator219","_i222","_Object$keys12","_this118","_step220","_iterator220","_this$_drapedFirstOrd","_this$_drapedFirstOrd2","_this119","_step221","_iterator221","_step222","_iterator222","_step223","_this120","_iterator223","_ret4","_step224","_iterator224","_step225","_iterator225","_step226","_iterator226","usedDefines","boundDynamicVertexBuffers","_step227","_iterator227","_step228","_iterator228","_step229","_iterator229","_t$getTileBoundsBuffe","_t$getMercatorTileBou","_class18","_e$SourceCache","_super133","_this121","_e$SourceCache2","_super134","_this122","_this123","_this$renderCachePool","_e$OverscaledTileID","_super135","_this124","_e$Elevation","_super136","_this125","_this126","_this127","_step230","_iterator230","_this128","_step231","_iterator231","_step232","_iterator232","_loop11","_n$canonical","_x$getPoleBuffers2","_step233","_iterator233","_step234","_iterator234","_r$canonical","_step235","_iterator235","_this129","_step236","_iterator236","_step237","_iterator237","_t$renderCachePool","_loop12","_step238","_iterator238","_step239","_iterator239","_step240","_iterator240","_step241","_iterator241","_m$LINES$m$TRIANGLES$","_i239","_Object$keys13","_step242","_iterator242","_step243","_iterator243","u_ao","u_edge_radius","_i$imageManager$getPi","_i243","_i245","_e$getAnchorAlignment2","_t$getProjection$proj","_step244","_iterator244","_step245","_iterator245","_i250","_I10","_step246","_iterator246","_step247","_iterator247","a_centroid_pos","_i256","_r278","_step248","_iterator248","_step249","_iterator249","_step250","_iterator250","_step251","_iterator251","_i262","_g21","_i263$state","_step252","_iterator252","_loop13","_o$paint$get2","_step253","_iterator253","_step254","_ref141","_iterator254","_t$getTileBoundsBuffe2","_step255","_iterator255","_t$getTileBoundsBuffe3","_t$getFovAdjustedRang2","_step256","_iterator256","_i269","_arr4","_step257","_iterator257","_step258","_iterator258","_this$getTileBoundsBu","_this130","_step259","_iterator259","_step260","_iterator260","_step261","_iterator261","_this131","_this$point","_this$_camera$getPitc","_i289","_s148","_this132","_step262","_iterator262","_e$Event","_super137","_this133","_e$Event2","_super138","_this134","_e$Event3","_super139","_this135","_this136","_this137","_step263","_iterator263","_this138","_yr","_super140","_yr2","_super141","_yr3","_super142","_this139","_o155","_this$_firstTwoTouche","_Cr2","_super143","_Cr3","_super144","_Cr4","_super145","_this140","_this141","_this142","_this143","_e$Event4","_super146","_step264","_iterator264","_step264$value","_step265","_iterator265","_step265$value","_i298","_arr5","_step266","_iterator266","_step267","_iterator267","_step268","_iterator268","_step269","_iterator269","_step269$value","_step270","_iterator270","_step270$value","_this144","_this145","_this$_eventsInProgre","_this146","_e$Evented11","_super147","_this147","_this148","_this149","_step271","_iterator271","_step272","_iterator272","_e$Evented12","_super148","_this150","_showingGlobe","_this151","_this152","_Yr","_super149","_this153","_step273","_iterator273","setMercatorFromTransition","_this154","_this155","_step274","_iterator274","_this156","_ref143$pixelRatio","_ref143$sdf","_e$exported$getImageD","_this157","_this158","_updateProjectionTransition","_step275","_iterator275","_this159","_this160","_step276","_iterator276","_this161","_this162","_this163","_this164","_e$Evented13","_super150","_this165","_this166","_this167","_this168","_this169","_e$Evented14","_super151","_this170","_this171","useBoundaryLayers","boundaryData","overview","trappingZoneName","trapData","isInGroup","insect_group_id","lureName","displayColour","display_color","locationDescription","location_description","PropertyOverviewMap","boundaryHoverInfo","setBoundaryHoverInfo","trapHoverInfo","setTrapHoverInfo","mapboxGl","Map$1","statusLabel","PropertyOverviewMap$1","feat","coordinates_1","DrawControl$1","UpdateTrapsMap","updateType","trapCoords","setTrapCoords","boundaryToEdit","setBoundaryToEdit","drawRef","updatedBoundary","setUpdatedBoundary","onMarkerDragStart","onMarkerDragEnd","currentZone","onMarkerDrag","onMapClick","clickedFeature","targetZone","newZones","UpdateTrapsMap$1","TrapForm","_ref$chargedInput","chargedInput","trapLure","matingDistruption","mating_disruption_tie","concentration","comments","setup_at","charged_at","TrapForm$1","TrapModalContent$1","AddTrapModal","initialTrapLure","trap_lure_id","setTrapId","AddTrapModal$1","dateFormatRegex","boostrapColourToHex","TrapMonitoringRecordsForm","_values$trapMonitorin","allCaps","allBases","recordCapsBases","setRecordCapsBases","visited_date","trapMonitoringRecords","lure_changed","base_changed","AddTrapMonitoringRecordsModal","_props$trappingZone","databaseYear","monitoringDates","_trappingZoneResults","_trappingZoneResults$","tzs","biofix","setDate","defaultDate","trap_id","visited_at","location_accuracy","visitedYear","recordErrors","records","AddTrapMonitoringRecordsModal$1","AddTrappingZonesMap$1","setBoundary","onEditorDelete","AddTrappingZoneForm$1","formOptions","nameOptions","maxLength","letterSpacing","matingDisruptionTie","AddTrappingZoneModal","_props$customOptions","modalOptions","mating_disruption_tie_id","AddTrappingZoneModal$1","EditTrapModal","EditTrapModal$1","EditTrappingZoneMap$1","EditTrappingZoneForm$1","EditTrappingZoneModal","setTrappingZoneId","EditTrappingZoneModal$1","useLocalStorageState","setInternalState","useRelevantTraps","useTrappingZoneThresholds","getRelevantTraps","calculateThresholds","trappingResult","luresChanged","basesChanged","trapCells","trappingResultTrap","monitoringRecord","amountThresholdMet","pre_trap_catch_threshold","accumulationThresholdMet","accumulation_threshold_met","borderLeft","threshold_met","averageThresholdMet","_trappingResult$trap_3","trap_averages","averageAmount","_trappingResult$trap_","_trappingResult$trap_2","useUpdateTrappingZoneHighPressure","highPressureThresholdMetCount","highPressureThresholdMet","isHighPressure","EditTrapMonitoringRecords","setEditingTrappingResult","editingTrappingResult","record2","cur","trapMonitoringRecord","EditTrapMonitoringRecordsModal","TrappingZoneSprayForm$1","selectTrappingZones","coverageDays","coverage_days","prevCoverageDays","setPrevCoverageDays","selectedOptions","setSelectedOptions","allSelected","setAllSelected","selectRef","displayBiofix","filteredSprayProducts","newOptions","selectOption","handleSelectAll","trapping_zones","sprayProduct","applied_date","OverlayTrigger$1","EditTrappingZoneSprayModal","setTrappingZoneSpray","trappingZoneSpray","spray_product","appliedYear","spray_product_id","EditTrappingZoneSprayModal$1","TrappingZoneSprays","relevantTraps","setEditingTrappingZoneSpray","deleteTrappingZoneSpray","spray","TrapMonitoringSprays","deleteTrappingResult","Spray","BiofixSpray","TrappingZoneResults","editingTrappingZoneSpray","_useLocalStorageState","sortOrder","setSortOrder","resultsDescending","resultsAscending","trappingZoneSprayId","_calculateThresholds","TrappingZoneResults$1","TrapsTable","originalRow","isHighRisk","TrapsTable$1","addMany","initialTrappingZone","AddTrappingZoneSprayModal","_values$trapping_zone","newValues","AddTrappingZoneSprayModal$1","SetupTrapsForm$1","setup_date","charged_date","noUpdates","SetupTrapsModal","confirmationModalBodyText","_values$traps","no_changes","trapOptions","trapsUpdated","trapOption","_trap$location","_trap$location2","submitForm$1","SetupTrapsModal$1","TrappingZoneTitle","AdminOverview","setMessages","editingTrappingZoneId","setEditingTrappingZoneId","editingTrapId","setEditingTrapId","trapsData","setTrapsData","_useCollapse","mapOpen","mapsHandleCollapse","_useCollapse2","trapsOpen","trapsHandleCollapse","deleteTrap","trapId","newTrapsData","currentTrappingZone","edit","trappingZoneA","trappingZoneB","deleteTrappingZone","newMessages","variantColour","sortedTrappingZones","AdminOverview$1","TrapMarkerIcon","isHot","HotTrapMap","hotTrapStatuses","newTrapData","_hotTrapStatuses$find","hts","faTriangle$1","statusLabel$1","HotTrapMap$1","HotTrap","setHotTrapStatuses","HotTrap$1","MissingMonitoring","production_area","insect_group_name","last_visited_date","monitored_traps","MissingMonitoring$1","SeasonOverviewReportForm","propertyRunsOptions","propertyGroupsOptions","setSelectedInsectGroup","setSelectedPropertyGroup","setSelectedProperties","foundProperty","pgo","_ret","SeasonOverviewReportForm$1","SeasonOverviewReportPropertySummaryGraph","trappingZonehotTrapStatuses","totalCatch","averageCatch","HighchartsReact","tzhts","_props$trappingZoneho","trapID","legendItemClick","SeasonOverviewReportPropertySummaryGraph$1","SeasonOverviewReportPropertySummary","_props$viewMapData","_props$viewMapData2","_traplogStore$trappin","viewMapData","_useFetch","isFetching","setIsFetching","unMount","fetchData","useFetch","trappingZoneResultsTraps","summaryGraphData","trapping_zone","_traplogStore$trappin2","_traplogStore$trappin3","_trappingZoneResultsT","setViewMapData","faTriangle$2","SeasonOverviewReportPropertySummary$1","SeasonOverviewReportTable","buttonRefs","isInSelected","counts","stickyRef","setSticky","handleScroll","handleResize","hasMapData","tableData","SeasonOverviewReportTable$1","SeasonalOverviewReportGraph","graphRef","setWidth","handleBeforePrint","handleAfterPrint","selectedProperties","actionableThresholdsData","coveredThresholdsData","SeasonalOverviewReportGraph$1","SeasonOverviewReport","setLoadingTrappingResults","setTrappingResults","showSpinner","showReport","SeasonOverviewReport$1","AdminSeasonOverviewReport","AdminSeasonOverviewReport$1","Option","hovering","setHovering","TrappingMonitoringReport","visitedDate","if","lastMonitored","latestSpray","latestThreshold","trapIds","lastMonitoredMoment","latestSprayMoment","latestThresholdMoment","TrappingMonitoringReport$1","TrappingRunForm","_formOptions$name","_formOptions$name2","_formOptions$name3","_formOptions$name4","_formOptions$descript","_formOptions$descript2","_formOptions$descript3","_formOptions$descript4","_formOptions$passcode","_formOptions$passcode2","_formOptions$passcode3","_formOptions$selectPr","_formOptions$selectPr2","propertiesSelector","passcode","selectProperties","AddTrappingRunModal","_props$customOptions2","_props$customOptions3","_props$customOptions4","addTrappingRun","autoGeneratePasscode","randomDigits","generatePasscode","AddTrappingRunModal$1","Passcode","trappingRun","newTrappingRun","property_group","editable","Passcode$1","TrappingRun","loadingSelectedPropertyGroup","setLoadingSelectedPropertyGroup","customDetailOptions","customPasscodeOptions","customHardDeleteOption","disableHardDelete","selectedTrappingRun","isDelete","PropertyGroupDetails","permissionsCard","PropertyGroupPermissions","PropertyGroupProperties","TrappingRun$1","GlobalFilter$1","TrappingRunsTable","showDeletedTrappingRuns","setShowDeletedTrappingRuns","hideSearch","hideShowDeleted","hideActions","headerNames","trappingRuns","changeSelectedTrappingRunId","deleteTrappingRun","_cell$column","TrappingRunsTable$1","TrappingRuns","showAddTrappingRunModal","setShowAddTrappingRunModal","setTrappingRuns","loadingTrappingRuns","setLoadingTrappingRuns","customAddTrappingRunOptions","customEditTrappingRunOptions","editTrappingRun","customTableOptions","selectedTrappingRunId","updateTrappingRun","newTrappingRuns","_newTrappingRuns","showPropertySelect","TrappingRuns$1","SummaryMap","hoverInfo","setHoverInfo","propertiesWithTrappingZones","trappingZoneStatus","trappingZoneStatuses","statusLabel$2","SummaryMap$1","TrappingZoneTitle$1","NZAPOverview","_traplogStore$selecte","addProductionAreaOptions","addProductionArea","TrappingZoneStatusModal","faTimes$1","HighRiskAlert","HighPressureAlert","TrappingZone","trappingZoneThresholds","trappingResultscalculateThresholds","Traplog","hasHighRisk","hasHighPressure","trappingResult1","trappingResult2","Traplog$1","TraplogDashboard","setPropertiesWithTrappingZones","setPropertyStatuses","resultsOpen","resultsHandleCollapse","thresoldMet","nearThreshold","noAction","noData","sortMethod","nameA","nameB","goToTrapping","innerHeight","status_display","TraplogDashboard$1","TraplogDataProvider","TraplogDataProvider$1","blocksOffset","setBlocksOffset","hasMoreBlocks","setHasMoreBlocks","fetchUserBlocks","next_offset","reportsOffset","setReportsOffset","hasMoreReports","setHasMoreReports","fetchUserReports","showResults","setShowResults","propertiesReports","total_reports","_userBlocks$find","userBlock","block_clusters","primaryGaBlock","aHasLatestReports","bHasLatestReports","hasLastestReports","_stages$find","reportKey","stageName","useUserBlocks","useUserReports","propertiesLoading","blocksFeatures","blockCluster","DashboardMap","PropertiesReports","propertySummaries","primary","setPrimary","primaryCount","propertySummary","maxLevel","CalculateSiteSoilMoisture","summary","latest_reading_date_rz1","refill_point","full_point","CalculateSiteSummaryLevel","outsiteLimits","outsiteStrategy","aboveLimits","strategy_max","strategy_min","SummaryBootstrapColorClass","siteResults","summaryLevel","alert_level","fullPoint","latestReading","latest_reading","rz1","getSelectedSeason","season_date","withIrrigationSummaries","passThroughProps","setPropertySummaries","prevProperties","setPrevProperties","loadAllData","terraprobeSeason","different","prevProperty","irrigation_monitoring_sites","prevPropertySummaries","irrigationMonitoringSite","site_number","newPropertySummaries","sites","orderedPropertySummaries","levels","levelKeys","stringA","stringB","withIrrigationMonitoringSites","siteSummaries","setSiteSummaries","siteSeasons","setSiteSeasons","siteReadings","setSiteReadings","_useState16","siteStrategies","setSiteStrategies","newSiteSummaries","newSiteSeasons","newSiteReadings","newSiteStrategies","site","siteId","period_from","period_to","vec","transformVector","modulus","LOG2E","a5","a6","a7","a8","a9","a14","a15","b4","b5","b6","b7","b8","b9","b13","b14","b15","PI_4","DEGREES_TO_RADIANS","RADIANS_TO_DEGREES","TILE_SIZE","EARTH_CIRCUMFERENCE","MAX_LATITUDE","DEFAULT_ALTITUDE","zoomToScale","scaleToZoom","lngLatToWorld","worldToLngLat","lambda2","getDistanceScales","_ref6$highPrecision","highPrecision","latCosine","unitsPerDegreeX","unitsPerDegreeY","altUnitsPerMeter","unitsPerMeter","metersPerUnit","unitsPerDegree","degreesPerUnit","latCosine2","unitsPerDegreeY2","altUnitsPerDegree2","altUnitsPerMeter2","unitsPerDegree2","unitsPerMeter2","getViewMatrix","_ref7$center","vm","getProjectionMatrix","_getProjectionParamet","_ref8","_ref8$fovy","altitudeToFovy","_ref8$pitch","_ref8$nearZMultiplier","nearZMultiplier","_ref8$farZMultiplier","farZMultiplier","halfFov","focalDistance","fovyToAltitude","pitchRadians","getProjectionParameters","pixelsToWorld","xyz","pixelUnprojectionMatrix","_xyz3","vec2","unprojectOnFarPlane","distanceScales","WebMercatorViewport","_ref$latitude","_ref$longitude","_ref$zoom","_ref$pitch","_ref$bearing","_ref$altitude","_ref$fovy","_ref$position","_ref$nearZMultiplier","_ref$farZMultiplier","meterOffset","_initMatrices","projectPosition","unprojectPosition","vpm","viewProjectionMatrix","mInverse","pixelProjectionMatrix","_ref2$topLeft","_xyz2","_xyz2$","worldToPixels","_coord","_ref3$topLeft","_ref3$targetZ","_xyz","targetZWorld","_this$unprojectPositi2","_lngLatToWorld2","_worldToLngLat2","getMapCenterByLngLatPosition","_fitBounds2","_ref$minExtent","minExtent","_ref$maxZoom","_ref$padding","_ref$offset","_bounds","_bounds$","west","south","_bounds$2","east","targetSize","centerLngLat","getBoundingRegion","unprojectOps","VIEWPORT_TRANSITION_PROPS","DEFAULT_OPTS","getFlyToTransitionParams","startProps","endProps","startCenter","endZoom","endCenter","startCenterXY","endCenterXY","uDelta","_u1","MapShim","getIndex","class_1","__entries__","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","onTransitionEnd_","leadingCall","trailingCall","lastCallTime","resolvePending","timeoutCallback","connect_","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","characterData","subtree","isReflowProperty","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","getContentRect","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","document_","mapboxApiAccessToken","mapboxApiUrl","preventStyleDiffing","asyncRender","onLoad","getAccessToken","_checkStyleSheet","_destroy","savedMap","newContainer","_fireLoadEvent","_reuse","_handleError","_create","_updateMapViewport","_updateMapSize","viewportChanged","_updateMapStyle","oldViewState","_getViewState","newViewState","_viewStateToMapboxProps","mapboxVersion","testElement","MAPBOX_LIMITS","DEFAULT_STATE","MapState","_ref$minZoom","_ref$maxPitch","_ref$minPitch","transitionDuration","transitionEasing","transitionInterpolator","transitionInterruption","startPanLngLat","startZoomLngLat","startRotatePos","_viewportProps","_applyConstraints","_getUpdatedMapState","_unproject","_this$_calculateNewLn2","_calculateNewLngLat","newRotation","_ref5$deltaAngleX","deltaAngleX","_ref5$deltaAngleY","deltaAngleY","_this$_state","_calculateNewPitchAndBearing","_getRotationParams","_this$_state2","_calculateNewZoom","_zoomedViewport$getMa2","halfHeightPixels","minLatitude","maxLatitude","normalizeViewportProps","_this$_viewportProps","deltaScaleX","deltaScaleY","_this$_viewportProps2","startY","_this$_viewportProps3","decapitalize","onViewStateChange","eventManager","MapContextProvider","setMap","getTerrainElevation","NO_TOKEN_WARNING","getViewport","viewportProps","CONTAINER_STYLE","onResize","disableTokenWarning","visibilityConstraints","NoTokenWarning","StaticMap","accessTokenValid","setTokenState","mapboxRef","mapDivRef","resizeObserver","_entries$0$contentRec","getRefHandles","scrollTo","overlays","onScroll","mapContainerStyle","constraints","constraintName","checkVisibilityConstraints","TransitionInterpolator","currentProps","propNames","WRAPPED_ANGULAR_PROPS","getEndValueByShortestPath","startValue","endValue","isWrappedAngularProp","REQUIRED_PROPS","LINEARLY_INTERPOLATED_PROPS","ViewportFlyToInterpolator","startViewportProps","endViewportProps","_startValue","_endValue","_getFlyToTransitionPa","tanh","newZoom","newCenterWorld","flyToViewport","_getFlyToTransitionPa2","getFlyToDuration","LinearInterpolator","transitionProps","aroundLngLat","_WebMercatorViewport$2","TRANSITION_EVENTS","DEFAULT_PROPS","onTransitionStart","onTransitionInterrupt","TransitionManager","_animationFrame","_onTransitionFrame","_updateViewport","onStateChange","propsInTransition","_shouldIgnoreViewportChange","_isTransitionEnabled","_isTransitionInProgress","interruption","cropEasingFunction","_triggerTransition","_endTransition","arePropsEqual","_isUpdateDueToCurrentTransition","getDuration","initialProps","initializeProps","interactionState","inTransition","isPanning","_this$state","shouldEnd","interpolateProps","mapState","getViewportProps","oldHandler","predict","enhancePointerEventInput","hammerjs","RECOGNIZERS","RECOGNIZER_COMPATIBLE_MAP","tripan","doubletap","anytap","RECOGNIZER_FALLBACK_MAP","BASIC_EVENT_ALIASES","INPUT_EVENT_TYPES","EVENT_RECOGNIZER_MAP","press","pinchin","pinchout","pinchstart","pinchmove","pinchend","pinchcancel","rotatemove","rotatecancel","tripanstart","tripanmove","tripanup","tripandown","tripanleft","tripanright","tripanend","tripancancel","panstart","panmove","panup","pandown","panleft","panright","panend","pancancel","swipe","swipeleft","swiperight","swipeup","swipedown","GESTURE_EVENT_ALIASES","anyclick","window_","passiveSupported","WHEEL_EVENTS","EVENT_TYPE","WHEEL_DELTA_MAGIC_SCALER","WheelInput","wheelPosition","_onWheel","MOUSE_EVENTS","MOVE_EVENT_TYPE","OVER_EVENT_TYPE","OUT_EVENT_TYPE","LEAVE_EVENT_TYPE","MoveInput","enableMoveEvent","enableLeaveEvent","enableOutEvent","enableOverEvent","handleOverEvent","handleOutEvent","handleLeaveEvent","handleMoveEvent","KEY_EVENTS","DOWN_EVENT_TYPE","UP_EVENT_TYPE","KeyInput","enableDownEvent","enableUpEvent","ContextmenuInput","EventRegistrar","handlersByElement","insertPosition","mjolnirEvent","_normalizeEvent","_emit","handled","immediatePropagationStopped","stopImmediatePropagation","entriesToRemove","_entries$i","_entriesToRemove$_i","_event$srcEvent","leftButton","middleButton","rightButton","whichButtons","getOffsetPosition","recognizerOptions","EventManager","_onBasicInput","_onOtherEvent","setElement","ManagerClass","recognizerName","otherName","recognizerOption","wheelInput","moveInput","keyInput","contextmenuInput","eventAlias","eventRegistrar","_toggleRecognizer","_addEventHandler","_removeEventHandler","fallbackRecognizers","enableEventType","isRecognizerUsed","NO_TRANSITION_PROPS","LINEAR_TRANSITION_PROPS","DEFAULT_INERTIA","INERTIA_EASING","EVENT_TYPES","MapController","isDragging","_interactionState","newViewport","oldViewport","_transitionManager","_onTransition","_setInteractionState","getMapState","eventStartBlocked","_eventStartBlocked","_onPanStart","_onPan","_onPanEnd","_onPinchStart","_onPinch","_onPinchEnd","_onTriplePanStart","_onTriplePan","_onTriplePanEnd","_onDoubleTap","_onKeyDown","_event$offsetCenter","timer","newMapState","mapStateProps","_options$eventManager","_options$isInteractiv","isInteractive","_options$scrollZoom","_options$dragPan","_options$dragRotate","_options$doubleClickZ","_options$touchZoom","_options$touchRotate","_options$keyboard","prevOptions","dimensionChanged","updateViewport","processViewportChange","_events","toggleEvents","eventNames","_panRotate","isFunctionKeyPressed","rotateStart","panStart","_onPanRotate","_onPanMove","_onPanRotateEnd","_onPanMoveEnd","_this$dragPan$inertia","endPos","newControllerState","panEnd","_this$dragRotate$iner","rotateEnd","_this$scrollZoom","_this$scrollZoom$spee","_this$scrollZoom$smoo","zoomStart","_startPinchRotation","_lastPinchEvent","_this$touchZoom$inert","_newMapState","velocityZ","endScale","zoomEnd","blockEvents","startPinchRotation","_this$touchRotate$ine","_newMapState2","isZoomOut","funcKey","_this$keyboard","_this$keyboard$zoomSp","zoomSpeed","_this$keyboard$moveSp","moveSpeed","_this$keyboard$rotate","rotateSpeedX","_this$keyboard$rotate2","rotateSpeedY","onInteractionStateChange","onHover","onDblClick","onContextMenu","onWheel","eventRecognizerOptions","clickRadius","getCursor","onNativeClick","normalizeEvent","onEvent","callbackName","onPointerDown","onPointerUp","onPointerMove","isEntering","isExiting","onPointerClick","isDoubleClickEnabled","InteractiveMap","parentContext","eventCanvasRef","staticMapRef","viewportUpdateRequested","stateUpdateRequested","inRender","handleViewportChange","_thisRef$props","handleInteractionStateChange","_interactionState$isD","updateControllerOpts","pointerleave","eventCanvasStyle","_child","diffLayerStyles","mapControlDefaultProps","captureScroll","captureDrag","captureClick","captureDoubleClick","capturePointerMove","mapControlPropTypes","useMapControl","onDoubleClick","watch","onMount","_useMapControl","_containerRef","BaseControl","_onScroll","_onDragStart","_onDblClick","_onPointerMove","draggableControlPropTypes","draggableControlDefaultProps","getDragEventPosition","getDragLngLat","dragPos","dragOffset","_event$center","getDragEventOffset","setDragPos","setDragOffset","callbackEvent","registerEvents","onDragCancel","crispPixel","crispPercentage","origSize","useDraggableControl","_getPosition","_viewport$project2","_getPosition2","containerStyle","ANCHOR_POSITION","ANCHOR_TYPES","tipSize","dynamicPosition","sortByDepth","selfWidth","selfHeight","_ANCHOR_POSITION$anch","cutoffY","bestAnchorY","minCutoff","xStep","cutoffX","bestAnchorX","_minCutoff","positionType","anchorPosition","getDynamicPosition","contentRef","clickCallback","xPercentage","yPercentage","getContainerStyle","onClickCloseButton","toggleLabel","innerContainerRef","showCompact","setShowCompact","attributionContainer","setupAttributioncontrol","removeAttributionControl","toggleAttribution","setIsFullscreen","setShowButton","mapboxFullscreenControl","createMapboxFullscreenControl","onFullscreenChange","disabledLabel","updateCamera","_context$viewport$fit","geolocateButtonRef","mapboxGeolocateControl","createMapboxGeolocateControl","supportsGeolocation","setSupportsGeolocation","geolocateButton","setupMapboxGeolocateControl","triggerGeolocate","zoomInLabel","zoomOutLabel","compassLabel","VERSION_LEGACY","VERSION_1_6","getUIVersion","version1","version2","part1","part2","renderButton","uiVersion","renderCompass","mapboxScaleControl","createMapboxScaleControl","CanvasOverlay","setDrawingContext","save","HTMLOverlay","SVGOverlay","alertLevel0Filter","alertLevel1Filter","alertLevel2Filter","alertLevel3Filter","alertLevel4Filter","prevFeatureCount","setPrevFeatureCount","irrigation_monitoring_site","site_id","_longitude","_latitude","alertLevel","AlertLevelLabel","siteType","displaySiteType","graphUrls","irrimax_sites","graph_url","displayType","siteName","site_name","siteJson","selectedSite","_vp$fitBounds","ReactMapGL","graphUrl","selectSite","alertLevel0","alertLevel1","alertLevel2","alertLevel3","alertLevel4","minMonitoringDate","maxMonitoringDate","latestReadingDate","latest_reading_date","IrrigationLegend","setDisplay","IrrigationDashboard","BlockScanningDashboard","dashboardDisplay","AdminDashboard","ClientDashboard","AggregateError","rejectionReasons","setTimeoutFunc","_deferreds","doResolve","_immediateFn","finale","_unhandledRejectionFn","Handler","prom","promiseFinally","allSettled","PromisePollyfill","PERF","generateRandomId","hexOctets","bytesToHex","msCrypto","checkSameOrigin","isPlatformSupported","setLabel","skey","removeInvalidChars","valueType","stripQueryStringFromUrl","baseExtend","objs","getCurrentScript","currentScript","scripts","getElasticScript","getLatestSpan","typeFilter","latestSpan","scheduleMicroTask","isPerfTimelineSupported","getEntriesByType","isPerfTypeSupported","PerformanceObserver","supportedEntryTypes","fetchInProgress","apmSymbol","patchMethod","patchFn","patched","propertyDesc","delegateName","patchDelegate","XHR_IGNORE","XHR_SYNC","XHR_URL","XHR_METHOD","SCHEDULE","INVOKE","ADD_EVENT_LISTENER_STR","RESOURCE_INITIATOR_TYPES","MAX_SPAN_DURATION","PAGE_LOAD","TYPE_CUSTOM","USER_INTERACTION","HTTP_REQUEST_TYPE","TEMPORARY_TYPE","NAME_UNKNOWN","TRANSACTION_TYPE_ORDER","USER_TIMING_THRESHOLD","TRANSACTION_END","CONFIG_CHANGE","QUEUE_FLUSH","QUEUE_ADD_TRANSACTION","XMLHTTPREQUEST","FETCH","HISTORY","EVENT_TARGET","CLICK","AFTER_EVENT","LOCAL_CONFIG_KEY","LONG_TASK","LARGEST_CONTENTFUL_PAINT","FIRST_INPUT","LAYOUT_SHIFT","ERRORS","TRANSACTIONS","CONFIG_SERVICE","LOGGING_SERVICE","TRANSACTION_SERVICE","APM_SERVER","PERFORMANCE_MONITORING","ERROR_LOGGING","TRUNCATED_TYPE","KEYWORD_LIMIT","patchXMLHttpRequest","XMLHttpRequestPrototype","READY_STATE_CHANGE","LOAD","openNative","sendNative","invokeTask","scheduleTask","isResponseSuccessful","shouldUseFetchWithKeepAlive","isFetchSupported","calculateSize","patchFetch","nativeFetch","fetchSelf","handleResponseError","readStream","isAbortError","EventHandler","sendOnly","patchEventHandler","alreadyPatched","patchAll","nativePushState","patchHistory","__DEV__","bootstrapTime","lastHiddenStart","bootstrap","createStackTraces","stackParser","errorEvent","lineno","colno","stackTraces","isValidStackTrace","fnName","normalizeFunctionName","_stack$functionName","fileUrl","filePath","cleanFilePath","cleanedFileName","filePathToFileName","abs_path","RULES","PROTOCOL_REGEX","Url","_this$extractProtocol","extractProtocol","slashes","getLocation","instLength","isDefaultPort","REDACTED","userpass","globalVar","LEFT_SQUARE_BRACKET","RIGHT_SQUARE_BRACKET","getResponseContext","perfTimingEntry","respContext","transfer_size","transferSize","encoded_body_size","encodedBodySize","decoded_body_size","decodedBodySize","serverTimingStr","serverTimingEntries","serverTimingInfo","_serverTimingEntries$","timingValue","valueSeparator","getServerTimingInfo","serverTiming","getDestination","parsedUrl","portNumber","getPortNumber","ipv6Hostname","getPageContext","addSpanContext","status_code","getExternalContext","getResourceContext","getNavigationContext","addContext","addTransactionContext","configContext","pageContext","responseContext","METADATA_MODEL","agent","environment","RESPONSE_MODEL","CONTEXT_MODEL","SPAN_MODEL","trace_id","parent_id","subtype","TRANSACTION_MODEL","span_count","ERROR_MODEL","culprit","replaceValue","currModel","truncateModel","childTarget","emptyArr","currKey","IGNORE_KEYS","ErrorLogging","apmServer","configService","transactionService","_apmServer","_configService","_transactionService","createErrorDataModel","filteredFrames","frames","filterInvalidFrames","lastFrame","errorMessage","errorContext","customProperties","propertyFound","getErrorProperties","currentTransaction","getCurrentTransaction","transactionContext","_this$_configService$","errorObject","sampled","logErrorEvent","addError","registerListeners","promiseRejectionEvent","logPromiseEvent","messageOrError","onFlush","queueLimit","flushInterval","timeoutId","_setTimer","NDJSON","SpanBase","sampleRate","ended","onEnd","ensureContext","addLabels","endTime","callOnEnd","Span","_SpanBase","eventPairs","shouldCreateSpan","trStart","trEnd","baseTime","createResourceTimingSpan","resourceTimingEntry","initiatorType","responseEnd","spanName","isCapturedByPatching","resourceStartTime","requestPatchTime","NAVIGATION_TIMING_MARKS","COMPRESSED_NAV_TIMING_MARKS","getPageLoadMarks","timing","marks","fetchStart","navigationStart","responseStart","timingKey","getNavigationTimingMarks","navigationTiming","timeToFirstByte","domInteractive","domComplete","captureNavigation","captureTimings","customMarks","timings","pageResponse","createNavigationTimingSpans","pageLoadSpanId","addMarks","_trStart","createResourceTimingSpans","userTimingSpans","_entries$i2","createUserTimingSpans","compressResponse","ebs","dbs","compressContext","compressed","compressHTTP","em","compressMarks","compressedNtMarks","ntMarks","compressNavigationTimingMarks","compressAgentMarks","agentMarks","firstContentfulPaint","largestContentfulPaint","compressPayload","isCompressionStreamSupported","CompressionStream","flagName","sessionStorage","isFlagSet","isBeaconInspectionEnabled","beforeSend","compressedStream","pipeThrough","sendXHR","_ref$timeout","HTTP_REQUEST_TIMEOUT","sendCredentials","onreadystatechange","responseText","canSend","ApmServer","loggingService","_loggingService","throttleEvents","sendEvents","_constructError","onThrottle","observeEvent","_postJson","_makeHttpRequest","_ref2$timeout","fetchResponse","_ref$keepalive","timeoutConfig","bodyResponse","sendFetchRequest","fetchConfig","serviceName","configEndpoint","getEndpoints","localConfig","getLocalConfig","etag","apmRequest","remoteConfig","setLocalConfig","createMetaData","cfg","_this$throttleEvents","addTransaction","_this$throttleEvents2","ndjsonErrors","_NDJSON$stringify","tid","pid","xid","compressError","ndjsonMetricsets","metricsets","metricset","ndjsonTransactions","transactions","_NDJSON$stringify2","breakdowns","breakdown","spanData","sample_rate","samples","ysc","yss","xdc","xds","xbc","experience","_transaction$experien","cls","fid","tbt","longtask","_transaction$session","sequence","ses","seq","compressTransaction","_NDJSON$stringify3","filteredPayload","applyFilters","ndjson","metadataKey","compressMetadata","ndjsonPayload","intakeEndpoint","serverUrl","_serviceCreators","Config","serviceVersion","serverUrlPrefix","instrument","disableInstrumentations","logLevel","breakdownMetrics","ignoreTransactions","eventsLimit","distributedTracing","distributedTracingOrigins","distributedTracingHeaderName","pageLoadTraceId","pageLoadSampled","pageLoadTransactionName","propagateTracestate","transactionSampleRate","centralConfig","monitorLongtasks","scriptData","dataAttrs","dataRegex","camelCasedkey","getDataAttributesFromNode","getConfigFromScript","setConfig","setVersion","addFilter","objKey","setUserContext","userContext","_userContext","setCustomContext","customContext","requiredKeys","missing","LoggingService","resetLogMethods","shouldLog","setLevel","normalizedLevel","serviceCreators","ConfigService","_factory$getService","getService","ServiceFactory","instances","_this$getService","PerformanceMonitoring","_logginService","createTransactionPayload","getHistorySub","getXHRSub","getFetchSub","startTransaction","managed","canReuse","processAPICalls","endpoints","requestUrl","startSpan","blocking","isDtEnabled","dtOrigins","currentUrl","isSameOrigin","injectDtHeader","injectTSHeader","_span","_target","endSpan","headerValue","dtVersion","getDtHeaderValue","isHeaderValid","isDtHeaderValid","getTSHeaderValue","extractDtHeader","parseDtHeaderValue","filterTransaction","isManaged","createTransactionDataModel","transactionStart","transactionData","breakdownTimings","adjustedTransaction","filterdSpans","similarSpans","originalSpans","transDuration","spanA","spanB","lastCount","lastSpan","isContinuouslySimilar","isLastSpan","groupSmallContinuouslySimilarSpans","resetFields","adjustTransaction","pageLoadBreakdowns","getSpanBreakdown","transactionDetails","_ref$count","captureBreakdown","trDuration","spanMap","transactionSelfTime","span1","span2","spanEnd","spanStart","lastContinuousEnd","selfTime","calculateSelfTime","groupSpans","_key$split","_spanMap$key","Transaction","_activeSpans","_activeTasks","blocked","markTime","reuseThreshold","redefine","trc","_onSpanEnd","addTask","detectFinish","sid","_captureBreakdown","taskId","removeTask","fcp","firstEntryTime","prevEntryTime","currentSessionScore","LONG_TASK_THRESHOLD","captureObserverEntries","isHardNavigation","longtaskEntries","longTaskSpans","longtasks","agg","_longtasks$i","_attribution$","_name","containerType","containerName","createLongTaskSpans","lcpEntries","lastLcpEntry","lcp","unloadDiff","fcpEntry","fidSpan","fidEntries","processingStart","createFirstInputDelaySpan","blockingTime","calculateTotalBlockingTime","clsEntries","hadRecentInput","calculateCumulativeLayoutShift","PerfEntryRecorder","buffered","TransactionService","respIntervalId","recorder","_tr$spans","_captureObserverEntri","createCurrentTransaction","createOptions","perfOptions","startManagedTransaction","isRedefined","redefineType","currentTypeOrder","redefineTypeOrder","fireOnstartHook","handleTransactionEnd","shouldIgnoreTransaction","tbtObject","tbtSpan","createTotalBlockingTimeSpan","setSession","urlStr","pathParts","redactString","specialCharsRegex","digitsRegex","lowerCaseRegex","upperCaseRegex","redactedParts","redactedBefore","numberOfDigits","numberofUpperCase","lowerCaseRate","upperCaseRate","slugifyUrl","adjustTransactionTime","sessionConfig","earliestSpan","getEarliestSpan","getLatestNonXHRSpan","latestSpanEnd","transactionEndWithoutDelay","latestXHRSpan","getLatestXHRSpan","latestXHRSpanEnd","truncateSpans","transactionEnd","transactionName","ignoreList","createServiceFactory","serviceFactory","_serviceFactory$getSe","_serviceFactory$getSe2","onPageHidden","observePageClicks","clickHandler","_getTransactionMetada","getTransactionMetadata","createUserInteractionTransaction","ApmBase","_initialized","_this$serviceFactory$","disabledInstrumentations","_flags","getInstrumentationFlags","sendPageLoad","_sendPageLoadMetrics","fetchCentralConfig","visibilityState","visibilityChangeHandler","pageHideHandler","useCapture","observePageVisibility","_this$serviceFactory$2","_config2","_invalid$","sendPageLoadMetrics","_this$serviceFactory$3","_configService$valida2","_message","setInitialPageLoadName","captureError","apmBase","elasticApm","getApmBase","initApm","hideMobileMenu","xmlns","clipRule","Divider","matchesImpl","displaySeasonSelect","MobileHeader","usePropertiesSelecter","useGlobalListener","eventTarget","useEventListener","useDropdownMenu","DropdownContext","hasShownRef","_options$fixed","_options$popperConfig","_options$usePopper","shouldUsePopper","alignEnd","setMenu","menuElement","toggleElement","menuProps","hasShown","DropdownMenu","_useDropdownMenu","useDropdownToggle","_ref$toggle","setToggle","DropdownToggle","_useDropdownToggle","focusFirstItemOnShow","itemSelector","useRefWithUpdate","Dropdown","rawShow","rawOnToggle","_ref$itemSelector","_useRefWithUpdate","menuRef","_useRefWithUpdate2","toggleRef","lastShow","lastSourceEvent","focusInDropdown","nextShow","focusToggle","maybeFocusFirst","focusType","nativeMatch","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","getNextFocusedChild","_menuRef$current","_toggleRef$current","fromMenu","fromToggle","_menuRef$current2","Toggle","DropdownItem","propActive","onSelectCtx","useWrappedRefWithWarning","alignDirection","alignRight","showProps","renderOnMount","alignClasses","_useDropdownMenu$","childBsPrefix","toggleProps","DropdownHeader","DropdownDivider","DropdownItemText","pProps","handleToggle","BaseDropdown","ItemText","NavDropdown","menuRole","renderMenuOnMount","navItemPrefix","NavbarBrand","NavbarCollapse","NavbarToggle","NavbarText","Navbar","expand","sticky","_onToggle","collapseOnSelect","handleCollapse","expandClass","Brand","useRegularLinks","NavDropDownItem","activeMenuItem","setActiveMenuItem","BootstrapNavbar","ErrorBoundary","apm","LoginForm","autoComplete","loginFailed","setLoginFailed","requiresAuth","requiresAdmin","printing","setPrinting","componentRef","ReactRoute","Login","rounded","roundedCircle","thumbnail","paddingBottom","IrrimaxSiteLayout","proptype","graphs","setGraphs","_site$irrimax_sites$f","irrimax_site_id","IrrimaxSiteButton","_site$name","soilMoisture","isBlueAlert","application_rate","tooltipPositioner","chartRef","failed","storeChart","SeasonalStrategyChart","strategyOptions","setStrategyOptions","rainfallOptions","setRainfallOptions","xValues","xPos","closest","point_obj","refill","minReading","maxReading","probeReadingData","rainfallData","irrigationData","strategyRangeData","criticalDates","readingData","reading","_props$siteSummary","_props$siteSummary2","rain","irrigation_mms","siteSummary","strategyData","critical_date_type","critical_date","strategyDate","strategy_date","strategy_percentage","newStrategyOptions","newRainfallOptions","criticalDateType","yAxisMin","yAxisMax","startPadded","stopPadded","WeeklySoilMoistureChart","probeReadingsDescending","currentWeekReading","previousWeekReading","currentWeek","previousWeek","rz1_bottom","newSeries","fullPointSeries","currentWeekSeries","previousWeekSeries","differenceSeries","refillSeries","probeReadings","lastWeekReading","irrigation_litres","latestWeekReading","startDay","terraprobeDayVar","irrigation","selectedSiteProbeReadings","weekly_edwu","RecommendationTable","LastWeekTable","LastWeekRain","SeasonToDateTable","setSelectedSite","_summary$latest_readi","siteSoilMoisture","yValue","SiteButton","TerraprobeSite","IrrimaxSite","IrrigationPage","_props$print","IrrigationGraphs","IrrigationSummaryTable","irrigationMonitoringSiteId","newWindow","opener","effective_irrigation","setSelectedPropertyGroupId","cpassword","PropertiesPage","useQuery","PropertyGroupsPage","PropertyKeyContactsPage","TraplogPage","AdminOverviewPage","HotTrapMapPage","TrappingRunsPage","TrappingMonitoringReportPage","MissingMonitoringPage","SeasonOverviewReportPage","setupApmUser","gtag","ResetPassword","ForgotPassword","UserManager","requresAdmin","IrrigationSummary","CropScanningReports","BlockScanningUploadPage","BlockScanningReportsPage","TraplogAdminOverviewPage","Account","ChangePassword","Dashboard","mTZ","App","serviceWorker"],"sourceRoot":""}